ZGlmZiAtLWdpdCBhLy5ienJpZ25vcmUgYi8uYnpyaWdub3JlCmluZGV4IDg5NzA4NGQuLjU4NDcxMTAgMTAwNjQ0Ci0tLSBhLy5ienJpZ25vcmUKKysrIGIvLmJ6cmlnbm9yZQpAQCAtMSw0ICsxLDQgQEAKLcK0LnB1cmlmeQorLnB1cmlmeQogYXV0b200dGUuY2FjaGUKIGNvbmZpZy5sb2cKIGNvbmZpZy5jYWNoZQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggODgwOTQzNS4uYzJiNGZjNyAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC0xMSwxMyArMTEsMTQgQEAKICoucmVqCiAqLnN3cAogKn4KKyouZ2M/PworKi5wcm9mY2xhbmc/CisqLnByb2ZyYXcKKyouZHluCiAuZ2RiX2hpc3RvcnkKIERvYy9idWlsZC8KLURvYy90b29scy9kb2N1dGlscy8KLURvYy90b29scy9qaW5qYS8KLURvYy90b29scy9qaW5qYTIvCi1Eb2MvdG9vbHMvcHlnbWVudHMvCi1Eb2MvdG9vbHMvc3BoaW54LworRG9jL3ZlbnYvCitMaWIvZGlzdHV0aWxzL2NvbW1hbmQvKi5wZGIKIExpYi9saWIydG8zLyoucGlja2xlCiBMaWIvdGVzdC9kYXRhLyoKIExpYi9fc3lzY29uZmlnZGF0YS5weQpAQCAtMzEsMTggKzMyLDMxIEBACiBNb2R1bGVzL1NldHVwLmxvY2FsCiBNb2R1bGVzL2NvbmZpZy5jCiBNb2R1bGVzL2xkX3NvX2FpeAotTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYgotTW9kdWxlcy9fdGVzdGVtYmVkCi1QQ2J1aWxkLyouYnNjCi1QQ2J1aWxkLyouZGxsCi1QQ2J1aWxkLyouZXhlCi1QQ2J1aWxkLyouZXhwCi1QQ2J1aWxkLyoubGliCi1QQ2J1aWxkLyoubmNiCi1QQ2J1aWxkLyoubwotUENidWlsZC8qLnBkYgotUENidWlsZC9XaW4zMi10ZW1wLSoKK1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliCitQcm9ncmFtcy9fdGVzdGVtYmVkCitQQy9weXRob25fbnQqLmgKK1BDL3B5dGhvbm50X3JjKi5oCitQQy8qLyouZXhlCitQQy8qLyouZXhwCitQQy8qLyoubGliCitQQy8qLyouYnNjCitQQy8qLyouZGxsCitQQy8qLyoucGRiCitQQy8qLyoudXNlcgorUEMvKi8qLm5jYgorUEMvKi8qLnN1bworUEMvKi9XaW4zMi10ZW1wLSoKK1BDLyoveDY0LXRlbXAtKgorUEMvKi9hbWQ2NAorUENidWlsZC8qLnVzZXIKK1BDYnVpbGQvKi5zdW8KK1BDYnVpbGQvKi4qc2RmCitQQ2J1aWxkLyotcGdpCitQQ2J1aWxkLyotcGdvCitQQ2J1aWxkLy52cy8KIFBDYnVpbGQvYW1kNjQvCitQQ2J1aWxkL29iai8KK1BDQnVpbGQvd2luMzIvCiAucHVyaWZ5CiBQYXJzZXIvcGdlbgogX19weWNhY2hlX18KQEAgLTY0LDYgKzc4LDcgQEAKIHB5Y29uZmlnLmgKIHB5dGhvbi1jb25maWcKIHB5dGhvbi1jb25maWcucHkKK3B5dGhvbi5iYXQKIHB5dGhvbi5leGUKIHB5dGhvbi1nZGIucHkKIHB5dGhvbi5leGUtZ2RiLnB5CkBAIC03NSwzICs5MCw2IEBACiBjb3ZlcmFnZS8KIGV4dGVybmFscy8KIGh0bWxjb3YvCitUb29scy9tc2kvb2JqCitUb29scy9zc2wvYW1kNjQKK1Rvb2xzL3NzbC93aW4zMgpkaWZmIC0tZ2l0IGEvLmhnaWdub3JlIGIvLmhnaWdub3JlCmluZGV4IDllNWE1ODMuLjU4YzczZmMgMTAwNjQ0Ci0tLSBhLy5oZ2lnbm9yZQorKysgYi8uaGdpZ25vcmUKQEAgLTksNiArOSw3IEBACiBhdXRvbTR0ZS5jYWNoZSQKIF5idWlsZC8KIF5Eb2MvYnVpbGQvCiteRG9jL3ZlbnYvCiBidWlsZG5vJAogY29uZmlnLmNhY2hlCiBjb25maWcubG9nCkBAIC0xOCw2ICsxOSw3IEBACiBwbGF0Zm9ybSQKIHB5Y29uZmlnLmgkCiBweXRob24kCitweXRob24uYmF0JAogcHl0aG9uLmV4ZSQKIHB5dGhvbi1jb25maWckCiBweXRob24tY29uZmlnLnB5JApAQCAtNDgsMTMgKzUwLDE2IEBACiAqLnB5ZAogKi5jb3ZlcgogKn4KKyouZ2M/PworKi5wcm9mY2xhbmc/CisqLnByb2ZyYXcKKyouZHluCitMaWIvZGlzdHV0aWxzL2NvbW1hbmQvKi5wZGIKIExpYi9saWIydG8zLyoucGlja2xlCiBMaWIvdGVzdC9kYXRhLyoKIE1pc2MvKi53cHUKIFBDL3B5dGhvbl9udCouaAogUEMvcHl0aG9ubnRfcmMqLmgKLVBDLyoub2JqCi1QQy8qLmV4ZQogUEMvKi8qLmV4ZQogUEMvKi8qLmV4cAogUEMvKi8qLmxpYgpAQCAtNjcsMjkgKzcyLDIxIEBACiBQQy8qL1dpbjMyLXRlbXAtKgogUEMvKi94NjQtdGVtcC0qCiBQQy8qL2FtZDY0Ci1QQ2J1aWxkLyouZXhlCi1QQ2J1aWxkLyouZGxsCi1QQ2J1aWxkLyoucGRiCi1QQ2J1aWxkLyoubGliCi1QQ2J1aWxkLyouZXhwCi1QQ2J1aWxkLyoubwotUENidWlsZC8qLm5jYgotUENidWlsZC8qLmJzYwogUENidWlsZC8qLnVzZXIKIFBDYnVpbGQvKi5zdW8KIFBDYnVpbGQvKi4qc2RmCi1QQ2J1aWxkL1dpbjMyLXRlbXAtKgotUENidWlsZC94NjQtdGVtcC0qCiBQQ2J1aWxkLyotcGdpCiBQQ2J1aWxkLyotcGdvCitQQ2J1aWxkLy52cwogUENidWlsZC9hbWQ2NAotUENidWlsZC9pcGNoCitQQ2J1aWxkL29iagorUENidWlsZC93aW4zMgogVG9vbHMvdW5pY29kZS9idWlsZC8KIFRvb2xzL3VuaWNvZGUvTUFQUElOR1MvCiBCdWlsZExvZy5odG0KIF9fcHljYWNoZV9fCi1Nb2R1bGVzL19mcmVlemVfaW1wb3J0bGliCi1Nb2R1bGVzL190ZXN0ZW1iZWQKK1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliCitQcm9ncmFtcy9fdGVzdGVtYmVkCiAuY292ZXJhZ2UKIGNvdmVyYWdlLwogZXh0ZXJuYWxzLwpAQCAtOTgsMyArOTUsNiBAQAogKi5nY25vCiAqLmdjb3YKIGNvdmVyYWdlLmluZm8KK1Rvb2xzL21zaS9vYmoKK1Rvb2xzL3NzbC9hbWQ2NAorVG9vbHMvc3NsL3dpbjMyCmRpZmYgLS1naXQgYS8uaGd0YWdzIGIvLmhndGFncwppbmRleCA0YzcxNDc5Li5iMTIwNzFkIDEwMDY0NAotLS0gYS8uaGd0YWdzCisrKyBiLy5oZ3RhZ3MKQEAgLTE0NiwzICsxNDYsMTggQEAKIGI0Y2JlY2JjMDc4MWU4OWEzMDlkMDNiNjBhMWY3NWY4NDk5MjUwZTYgdjMuNC4zCiAwNGYzZjcyNTg5NmM2OTYxMjEyYzNhMTJlOGFjMjViZTY5NThmNGZhIHYzLjQuNHJjMQogNzM3ZWZjYWRmNWE2NzhiMTg0ZTBmYTQzMWFhZTExMjc2YmYwNjY0OCB2My40LjQKKzVkNGI2YTU3ZDVmZDc1NjRiZjczZjNkYjBlNDZmZTVlZWIwMGJjZDggdjMuNS4wYTEKKzAzMzdiZDdlYmNiNjU1OWQ2OTY3OWJjNzAyNTA1OWFkMWNlNGY0MzIgdjMuNS4wYTIKKzgyNjU2ZTI4YjVlNWM0YWU0OGQ4ZGQ4YjVmMGQ3OTY4OTA4YTgyYjYgdjMuNS4wYTMKKzQxM2UwZTAwMDRmNGY5NTQzMzFjYjgxMjJhYTU1ZmUyMDg5ODQ5NTUgdjMuNS4wYTQKKzA3MWZlZmJiNWUzZGI3NzBjNmMxOWZiYTk5OTQ2OTlmMTIxYjFjZWEgdjMuNS4wYjEKKzdhMDg4YWY1NjE1YmYwNDAyNGU5OTEyMDY4ZjRiZDhmNDNlZDM5MTcgdjMuNS4wYjIKKzAwMzVmY2Q5YjkyNDNhZTUyYzJlODMwMjA0ZmQ5YzFmN2Q1Mjg1MzQgdjMuNS4wYjMKK2MwZDY0MTA1NDYzNTgxZjg1ZDBlMzY4ZThkNmU1OWI3ZmQ4ZjEyYjEgdjMuNS4wYjQKKzFhNThiMTIyNzUwMWUwNDZlZWUxM2Q5MGYxMTM0MTdiNjA4NDMzMDEgdjMuNS4wcmMxCitjYzE1ZDczNmQ4NjAzMDNiOWRhOTBkNDNjZDMyZGIzOWJhYjA0OGRmIHYzLjUuMHJjMgorNjZlZDUyMzc1ZGY4MDJmOWQwYTM0NDgwZGFhYThjZTc5ZmM0MTMxMyB2My41LjByYzMKKzJkMDMzZmVkZmE3ZjFlMzI1ZmQxNGNjZGFhOWNiNDIxNTVkYTIwNmYgdjMuNS4wcmM0CiszNzRmNTAxZjQ1NjdiNzU5NWYyYWQ3Nzk4YWEwOWFmYTI0NTZiYjI4IHYzLjUuMAorOTQ4ZWYxNmE2OTUxM2JhMWZmMTVjOWQ3ZDBiMDEyYjk0OWRmNGM4MCB2My41LjFyYzEKKzM3YTA3Y2VlNTk2OWU2ZDM2NzI1ODMxODdhNzNjZjYzNmZmMjhlMWIgdjMuNS4xCmRpZmYgLS1naXQgYS8uaGd0b3VjaCBiLy5oZ3RvdWNoCmluZGV4IDdlM2E1ZTcuLmI5YmUwZjEgMTAwNjQ0Ci0tLSBhLy5oZ3RvdWNoCisrKyBiLy5oZ3RvdWNoCkBAIC0yLDcgKzIsOSBAQAogIyBEZWZpbmUgZGVwZW5kZW5jaWVzIG9mIGdlbmVyYXRlZCBmaWxlcyB0aGF0IGFyZSBjaGVja2VkIGludG8gaGcuCiAjIFRoZSBzeW50YXggb2YgdGhpcyBmaWxlIHVzZXMgbWFrZSBydWxlIGRlcGVuZGVuY2llcywgd2l0aG91dCBhY3Rpb25zCiAKLVB5dGhvbi9pbXBvcnRsaWIuaDogTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYworUHl0aG9uL2ltcG9ydGxpYi5oOiBMaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYworCitJbmNsdWRlL29wY29kZS5oOiAgTGliL29wY29kZS5weSBUb29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5CiAKIEluY2x1ZGUvUHl0aG9uLWFzdC5oOiBQYXJzZXIvUHl0aG9uLmFzZGwgUGFyc2VyL2FzZGwucHkgUGFyc2VyL2FzZGxfYy5weQogUHl0aG9uL1B5dGhvbi1hc3QuYzogSW5jbHVkZS9QeXRob24tYXN0LmgKZGlmZiAtLWdpdCBhL0RvYy9NYWtlZmlsZSBiL0RvYy9NYWtlZmlsZQppbmRleCBlYTMwMjMxLi5hNDJlOThiIDEwMDY0NAotLS0gYS9Eb2MvTWFrZWZpbGUKKysrIGIvRG9jL01ha2VmaWxlCkBAIC0xNSwxMSArMTUsMTIgQEAKIAogLlBIT05ZOiBoZWxwIGJ1aWxkIGh0bWwgaHRtbGhlbHAgbGF0ZXggdGV4dCBjaGFuZ2VzIGxpbmtjaGVjayBcCiAJc3VzcGljaW91cyBjb3ZlcmFnZSBkb2N0ZXN0IHB5ZG9jLXRvcGljcyBodG1sdmlldyBjbGVhbiBkaXN0IGNoZWNrIHNlcnZlIFwKLQlhdXRvYnVpbGQtZGV2IGF1dG9idWlsZC1zdGFibGUKKwlhdXRvYnVpbGQtZGV2IGF1dG9idWlsZC1zdGFibGUgdmVudgogCiBoZWxwOgogCUBlY2hvICJQbGVhc2UgdXNlIFxgbWFrZSA8dGFyZ2V0Picgd2hlcmUgPHRhcmdldD4gaXMgb25lIG9mIgogCUBlY2hvICIgIGNsZWFuICAgICAgdG8gcmVtb3ZlIGJ1aWxkIGZpbGVzIgorCUBlY2hvICIgIHZlbnYgICAgICAgdG8gY3JlYXRlIGEgdmVudiB3aXRoIG5lY2Vzc2FyeSB0b29scyIKIAlAZWNobyAiICBodG1sICAgICAgIHRvIG1ha2Ugc3RhbmRhbG9uZSBIVE1MIGZpbGVzIgogCUBlY2hvICIgIGh0bWx2aWV3ICAgdG8gb3BlbiB0aGUgaW5kZXggcGFnZSBidWlsdCBieSB0aGUgaHRtbCB0YXJnZXQgaW4geW91ciBicm93c2VyIgogCUBlY2hvICIgIGh0bWxoZWxwICAgdG8gbWFrZSBIVE1MIGZpbGVzIGFuZCBhIEhUTUwgaGVscCBwcm9qZWN0IgpAQCAtOTUsMTQgKzk2LDE4IEBACiAKIHB5ZG9jLXRvcGljczogQlVJTERFUiA9IHB5ZG9jLXRvcGljcwogcHlkb2MtdG9waWNzOiBidWlsZAotCUBlY2hvICJCdWlsZGluZyBmaW5pc2hlZDsgbm93IGNvcHkgYnVpbGQvcHlkb2MtdG9waWNzL3RvcGljcy5weSIgXAotCSAgICAgICJ0byAuLi9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkiCisJQGVjaG8gIkJ1aWxkaW5nIGZpbmlzaGVkOyBub3cgcnVuIHRoaXM6IiBcCisJICAgICAgImNwIGJ1aWxkL3B5ZG9jLXRvcGljcy90b3BpY3MucHkgLi4vTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5IgogCiBodG1sdmlldzogaHRtbAogCSAkKFBZVEhPTikgLWMgImltcG9ydCB3ZWJicm93c2VyOyB3ZWJicm93c2VyLm9wZW4oJ2J1aWxkL2h0bWwvaW5kZXguaHRtbCcpIgogCiBjbGVhbjoKLQktcm0gLXJmIGJ1aWxkLyoKKwktcm0gLXJmIGJ1aWxkLyogdmVudi8qCisKK3ZlbnY6CisJJChQWVRIT04pIC1tIHZlbnYgdmVudgorCS4vdmVudi9iaW4vcHl0aG9uMyAtbSBwaXAgaW5zdGFsbCAtVSBTcGhpbngKIAogZGlzdDoKIAlybSAtcmYgZGlzdApAQCAtMTcyLDQgKzE3NywzIEBACiAJCWV4aXQgMTs7IFwKIAllc2FjCiAJQG1ha2UgYXV0b2J1aWxkLWRldgotCmRpZmYgLS1naXQgYS9Eb2MvUkVBRE1FLnR4dCBiL0RvYy9SRUFETUUudHh0CmluZGV4IGY5ODVlNmUuLjRmOGU5ZjggMTAwNjQ0Ci0tLSBhL0RvYy9SRUFETUUudHh0CisrKyBiL0RvYy9SRUFETUUudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBUaGlzIGRpcmVjdG9yeSBjb250YWlucyB0aGUgcmVTdHJ1Y3R1cmVkVGV4dCAocmVTVCkgc291cmNlcyB0byB0aGUgUHl0aG9uCiBkb2N1bWVudGF0aW9uLiAgWW91IGRvbid0IG5lZWQgdG8gYnVpbGQgdGhlbSB5b3Vyc2VsZiwgcHJlYnVpbHQgdmVyc2lvbnMgYXJlCi1hdmFpbGFibGUgYXQgPGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNC9kb3dubG9hZC5odG1sPi4KK2F2YWlsYWJsZSBhdCA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2L2Rvd25sb2FkLmh0bWw+LgogCiBEb2N1bWVudGF0aW9uIG9uIGF1dGhvcmluZyBQeXRob24gZG9jdW1lbnRhdGlvbiwgaW5jbHVkaW5nIGluZm9ybWF0aW9uIGFib3V0CiBib3RoIHN0eWxlIGFuZCBtYXJrdXAsIGlzIGF2YWlsYWJsZSBpbiB0aGUgIkRvY3VtZW50aW5nIFB5dGhvbiIgY2hhcHRlciBvZiB0aGUKZGlmZiAtLWdpdCBhL0RvYy9idWdzLnJzdCBiL0RvYy9idWdzLnJzdAppbmRleCBmMDFhZTBlLi4yNWNlM2NhIDEwMDY0NAotLS0gYS9Eb2MvYnVncy5yc3QKKysrIGIvRG9jL2J1Z3MucnN0CkBAIC0xNiw3ICsxNiw4IEBACiBwbGVhc2Ugc3VibWl0IGEgYnVnIHJlcG9ydCBvbiB0aGUgOnJlZjpgdHJhY2tlciA8dXNpbmctdGhlLXRyYWNrZXI+YC4gIElmIHlvdQogaGF2ZSBhIHN1Z2dlc3Rpb24gaG93IHRvIGZpeCBpdCwgaW5jbHVkZSB0aGF0IGFzIHdlbGwuCiAKLUlmIHlvdSdyZSBzaG9ydCBvbiB0aW1lLCB5b3UgY2FuIGFsc28gZW1haWwgeW91ciBidWcgcmVwb3J0IHRvIGRvY3NAcHl0aG9uLm9yZy4KK0lmIHlvdSdyZSBzaG9ydCBvbiB0aW1lLCB5b3UgY2FuIGFsc28gZW1haWwgZG9jdW1lbnRhdGlvbiBidWcgcmVwb3J0cyB0bworZG9jc0BweXRob24ub3JnIChiZWhhdmlvcmFsIGJ1Z3MgY2FuIGJlIHNlbnQgdG8gcHl0aG9uLWxpc3RAcHl0aG9uLm9yZykuCiAnZG9jc0AnIGlzIGEgbWFpbGluZyBsaXN0IHJ1biBieSB2b2x1bnRlZXJzOyB5b3VyIHJlcXVlc3Qgd2lsbCBiZSBub3RpY2VkLAogdGhvdWdoIGl0IG1heSB0YWtlIGEgd2hpbGUgdG8gYmUgcHJvY2Vzc2VkLgogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvYXJnLnJzdCBiL0RvYy9jLWFwaS9hcmcucnN0CmluZGV4IDg0MjdiYzQuLmNhY2ViNDAgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9hcmcucnN0CisrKyBiL0RvYy9jLWFwaS9hcmcucnN0CkBAIC0xNTIsNyArMTUyLDcgQEAKICAgIGFueSBjb252ZXJzaW9uLiAgUmFpc2VzIDpleGM6YFR5cGVFcnJvcmAgaWYgdGhlIG9iamVjdCBpcyBub3QgYSBVbmljb2RlCiAgICBvYmplY3QuICBUaGUgQyB2YXJpYWJsZSBtYXkgYWxzbyBiZSBkZWNsYXJlZCBhcyA6Yzp0eXBlOmBQeU9iamVjdFwqYC4KIAotYGB3KmBgICg6Y2xhc3M6YGJ5dGVhcnJheWAgb3IgcmVhZC13cml0ZSBieXRlLW9yaWVudGVkIGJ1ZmZlcikgW1B5X2J1ZmZlcl0KK2BgdypgYCAocmVhZC13cml0ZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgKSBbUHlfYnVmZmVyXQogICAgVGhpcyBmb3JtYXQgYWNjZXB0cyBhbnkgb2JqZWN0IHdoaWNoIGltcGxlbWVudHMgdGhlIHJlYWQtd3JpdGUgYnVmZmVyCiAgICBpbnRlcmZhY2UuIEl0IGZpbGxzIGEgOmM6dHlwZTpgUHlfYnVmZmVyYCBzdHJ1Y3R1cmUgcHJvdmlkZWQgYnkgdGhlIGNhbGxlci4KICAgIFRoZSBidWZmZXIgbWF5IGNvbnRhaW4gZW1iZWRkZWQgbnVsbCBieXRlcy4gVGhlIGNhbGxlciBoYXZlIHRvIGNhbGwKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9idWZmZXIucnN0IGIvRG9jL2MtYXBpL2J1ZmZlci5yc3QKaW5kZXggNzM2MTA5OS4uNDVjOTQ4OCAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2J1ZmZlci5yc3QKKysrIGIvRG9jL2MtYXBpL2J1ZmZlci5yc3QKQEAgLTk2LDggKzk2LDggQEAKICAgICAgIGJsb2NrIG9mIHRoZSBleHBvcnRlci4gRm9yIGV4YW1wbGUsIHdpdGggbmVnYXRpdmUgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnN0cmlkZXNgCiAgICAgICB0aGUgdmFsdWUgbWF5IHBvaW50IHRvIHRoZSBlbmQgb2YgdGhlIG1lbW9yeSBibG9jay4KIAotICAgICAgRm9yIGNvbnRpZ3VvdXMgYXJyYXlzLCB0aGUgdmFsdWUgcG9pbnRzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG1lbW9yeQotICAgICAgYmxvY2suCisgICAgICBGb3IgOnRlcm06YGNvbnRpZ3VvdXNgIGFycmF5cywgdGhlIHZhbHVlIHBvaW50cyB0byB0aGUgYmVnaW5uaW5nIG9mCisgICAgICB0aGUgbWVtb3J5IGJsb2NrLgogCiAgICAuLiBjOm1lbWJlcjo6IHZvaWQgXCpvYmoKIApAQCAtMjgxLDExICsyODEsMTQgQEAKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCiAKIAorLi4gaW5kZXg6OiBjb250aWd1b3VzLCBDLWNvbnRpZ3VvdXMsIEZvcnRyYW4gY29udGlndW91cworCiBjb250aWd1aXR5IHJlcXVlc3RzCiB+fn5+fn5+fn5+fn5+fn5+fn5+CiAKLUMgb3IgRm9ydHJhbiBjb250aWd1aXR5IGNhbiBiZSBleHBsaWNpdGx5IHJlcXVlc3RlZCwgd2l0aCBhbmQgd2l0aG91dCBzdHJpZGUKLWluZm9ybWF0aW9uLiBXaXRob3V0IHN0cmlkZSBpbmZvcm1hdGlvbiwgdGhlIGJ1ZmZlciBtdXN0IGJlIEMtY29udGlndW91cy4KK0Mgb3IgRm9ydHJhbiA6dGVybTpgY29udGlndWl0eSA8Y29udGlndW91cz5gIGNhbiBiZSBleHBsaWNpdGx5IHJlcXVlc3RlZCwKK3dpdGggYW5kIHdpdGhvdXQgc3RyaWRlIGluZm9ybWF0aW9uLiBXaXRob3V0IHN0cmlkZSBpbmZvcm1hdGlvbiwgdGhlIGJ1ZmZlcgorbXVzdCBiZSBDLWNvbnRpZ3VvdXMuCiAKIC4uIHRhYnVsYXJjb2x1bW5zOjogfHB7MC4zNVxsaW5ld2lkdGh9fGx8bHxsfGx8CiAKQEAgLTQ2NiwxMyArNDY5LDEzIEBACiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5QnVmZmVyX0lzQ29udGlndW91cyhQeV9idWZmZXIgKnZpZXcsIGNoYXIgb3JkZXIpCiAKICAgIFJldHVybiAxIGlmIHRoZSBtZW1vcnkgZGVmaW5lZCBieSB0aGUgKnZpZXcqIGlzIEMtc3R5bGUgKCpvcmRlciogaXMKLSAgIGBgJ0MnYGApIG9yIEZvcnRyYW4tc3R5bGUgKCpvcmRlciogaXMgYGAnRidgYCkgY29udGlndW91cyBvciBlaXRoZXIgb25lCisgICBgYCdDJ2BgKSBvciBGb3J0cmFuLXN0eWxlICgqb3JkZXIqIGlzIGBgJ0YnYGApIDp0ZXJtOmBjb250aWd1b3VzYCBvciBlaXRoZXIgb25lCiAgICAoKm9yZGVyKiBpcyBgYCdBJ2BgKS4gIFJldHVybiAwIG90aGVyd2lzZS4KIAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUJ1ZmZlcl9GaWxsQ29udGlndW91c1N0cmlkZXMoaW50IG5kaW0sIFB5X3NzaXplX3QgKnNoYXBlLCBQeV9zc2l6ZV90ICpzdHJpZGVzLCBQeV9zc2l6ZV90IGl0ZW1zaXplLCBjaGFyIG9yZGVyKQogCi0gICBGaWxsIHRoZSAqc3RyaWRlcyogYXJyYXkgd2l0aCBieXRlLXN0cmlkZXMgb2YgYSBjb250aWd1b3VzIChDLXN0eWxlIGlmCisgICBGaWxsIHRoZSAqc3RyaWRlcyogYXJyYXkgd2l0aCBieXRlLXN0cmlkZXMgb2YgYSA6dGVybTpgY29udGlndW91c2AgKEMtc3R5bGUgaWYKICAgICpvcmRlciogaXMgYGAnQydgYCBvciBGb3J0cmFuLXN0eWxlIGlmICpvcmRlciogaXMgYGAnRidgYCkgYXJyYXkgb2YgdGhlCiAgICBnaXZlbiBzaGFwZSB3aXRoIHRoZSBnaXZlbiBudW1iZXIgb2YgYnl0ZXMgcGVyIGVsZW1lbnQuCiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9jb2RlYy5yc3QgYi9Eb2MvYy1hcGkvY29kZWMucnN0CmluZGV4IDgzMjUyYWYuLmRmZTNkNDMgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9jb2RlYy5yc3QKKysrIGIvRG9jL2MtYXBpL2NvZGVjLnJzdApAQCAtMTE2LDMgKzExNiw4IEBACiAgICBSZXBsYWNlIHRoZSB1bmljb2RlIGVuY29kZSBlcnJvciB3aXRoIGJhY2tzbGFzaCBlc2NhcGVzIChgYFx4YGAsIGBgXHVgYCBhbmQKICAgIGBgXFVgYCkuCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlDb2RlY19OYW1lUmVwbGFjZUVycm9ycyhQeU9iamVjdCAqZXhjKQorCisgICBSZXBsYWNlIHRoZSB1bmljb2RlIGVuY29kZSBlcnJvciB3aXRoIGBgXE57Li4ufWBgIGVzY2FwZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2NvbmNyZXRlLnJzdCBiL0RvYy9jLWFwaS9jb25jcmV0ZS5yc3QKaW5kZXggMmQ1NjM4Ni4uNDdkYWI4MSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2NvbmNyZXRlLnJzdAorKysgYi9Eb2MvYy1hcGkvY29uY3JldGUucnN0CkBAIC0xMTIsNSArMTEyLDYgQEAKICAgIHdlYWtyZWYucnN0CiAgICBjYXBzdWxlLnJzdAogICAgZ2VuLnJzdAorICAgY29yby5yc3QKICAgIGRhdGV0aW1lLnJzdAogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvY29yby5yc3QgYi9Eb2MvYy1hcGkvY29yby5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZlNTBiNQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9jLWFwaS9jb3JvLnJzdApAQCAtMCwwICsxLDM0IEBACisuLiBoaWdobGlnaHRsYW5nOjogYworCisuLiBfY29yby1vYmplY3RzOgorCitDb3JvdXRpbmUgT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy41CisKK0Nvcm91dGluZSBvYmplY3RzIGFyZSB3aGF0IGZ1bmN0aW9ucyBkZWNsYXJlZCB3aXRoIGFuIGBgYXN5bmNgYCBrZXl3b3JkCityZXR1cm4uCisKKworLi4gYzp0eXBlOjogUHlDb3JvT2JqZWN0CisKKyAgIFRoZSBDIHN0cnVjdHVyZSB1c2VkIGZvciBjb3JvdXRpbmUgb2JqZWN0cy4KKworCisuLiBjOnZhcjo6IFB5VHlwZU9iamVjdCBQeUNvcm9fVHlwZQorCisgICBUaGUgdHlwZSBvYmplY3QgY29ycmVzcG9uZGluZyB0byBjb3JvdXRpbmUgb2JqZWN0cy4KKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5Q29yb19DaGVja0V4YWN0KFB5T2JqZWN0ICpvYikKKworICAgUmV0dXJuIHRydWUgaWYgKm9iKidzIHR5cGUgaXMgKlB5Q29yb19UeXBlKjsgKm9iKiBtdXN0IG5vdCBiZSAqTlVMTCouCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUNvcm9fTmV3KFB5RnJhbWVPYmplY3QgKmZyYW1lLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKQorCisgICBDcmVhdGUgYW5kIHJldHVybiBhIG5ldyBjb3JvdXRpbmUgb2JqZWN0IGJhc2VkIG9uIHRoZSAqZnJhbWUqIG9iamVjdCwKKyAgIHdpdGggYGBfX25hbWVfX2BgIGFuZCBgYF9fcXVhbG5hbWVfX2BgIHNldCB0byAqbmFtZSogYW5kICpxdWFsbmFtZSouCisgICBBIHJlZmVyZW5jZSB0byAqZnJhbWUqIGlzIHN0b2xlbiBieSB0aGlzIGZ1bmN0aW9uLiAgVGhlICpmcmFtZSogYXJndW1lbnQKKyAgIG11c3Qgbm90IGJlICpOVUxMKi4KZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdCBiL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdAppbmRleCBjMmRmNzY3Li4zZmQ2OWJhIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QKKysrIGIvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0CkBAIC05LDEzICs5LDE5IEBACiAKIFRoZSBmdW5jdGlvbnMgZGVzY3JpYmVkIGluIHRoaXMgY2hhcHRlciB3aWxsIGxldCB5b3UgaGFuZGxlIGFuZCByYWlzZSBQeXRob24KIGV4Y2VwdGlvbnMuICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCBzb21lIG9mIHRoZSBiYXNpY3Mgb2YgUHl0aG9uCi1leGNlcHRpb24gaGFuZGxpbmcuICBJdCB3b3JrcyBzb21ld2hhdCBsaWtlIHRoZSBVbml4IDpjOmRhdGE6YGVycm5vYCB2YXJpYWJsZToKK2V4Y2VwdGlvbiBoYW5kbGluZy4gIEl0IHdvcmtzIHNvbWV3aGF0IGxpa2UgdGhlIFBPU0lYIDpjOmRhdGE6YGVycm5vYCB2YXJpYWJsZToKIHRoZXJlIGlzIGEgZ2xvYmFsIGluZGljYXRvciAocGVyIHRocmVhZCkgb2YgdGhlIGxhc3QgZXJyb3IgdGhhdCBvY2N1cnJlZC4gIE1vc3QKLWZ1bmN0aW9ucyBkb24ndCBjbGVhciB0aGlzIG9uIHN1Y2Nlc3MsIGJ1dCB3aWxsIHNldCBpdCB0byBpbmRpY2F0ZSB0aGUgY2F1c2Ugb2YKLXRoZSBlcnJvciBvbiBmYWlsdXJlLiAgTW9zdCBmdW5jdGlvbnMgYWxzbyByZXR1cm4gYW4gZXJyb3IgaW5kaWNhdG9yLCB1c3VhbGx5Ci0qTlVMTCogaWYgdGhleSBhcmUgc3VwcG9zZWQgdG8gcmV0dXJuIGEgcG9pbnRlciwgb3IgYGAtMWBgIGlmIHRoZXkgcmV0dXJuIGFuCi1pbnRlZ2VyIChleGNlcHRpb246IHRoZSA6YzpmdW5jOmBQeUFyZ19cKmAgZnVuY3Rpb25zIHJldHVybiBgYDFgYCBmb3Igc3VjY2VzcyBhbmQKLWBgMGBgIGZvciBmYWlsdXJlKS4KK0MgQVBJIGZ1bmN0aW9ucyBkb24ndCBjbGVhciB0aGlzIG9uIHN1Y2Nlc3MsIGJ1dCB3aWxsIHNldCBpdCB0byBpbmRpY2F0ZSB0aGUKK2NhdXNlIG9mIHRoZSBlcnJvciBvbiBmYWlsdXJlLiAgTW9zdCBDIEFQSSBmdW5jdGlvbnMgYWxzbyByZXR1cm4gYW4gZXJyb3IKK2luZGljYXRvciwgdXN1YWxseSAqTlVMTCogaWYgdGhleSBhcmUgc3VwcG9zZWQgdG8gcmV0dXJuIGEgcG9pbnRlciwgb3IgYGAtMWBgCitpZiB0aGV5IHJldHVybiBhbiBpbnRlZ2VyIChleGNlcHRpb246IHRoZSA6YzpmdW5jOmBQeUFyZ19cKmAgZnVuY3Rpb25zCityZXR1cm4gYGAxYGAgZm9yIHN1Y2Nlc3MgYW5kIGBgMGBgIGZvciBmYWlsdXJlKS4KKworQ29uY3JldGVseSwgdGhlIGVycm9yIGluZGljYXRvciBjb25zaXN0cyBvZiB0aHJlZSBvYmplY3QgcG9pbnRlcnM6IHRoZQorZXhjZXB0aW9uJ3MgdHlwZSwgdGhlIGV4Y2VwdGlvbidzIHZhbHVlLCBhbmQgdGhlIHRyYWNlYmFjayBvYmplY3QuICBBbnkKK29mIHRob3NlIHBvaW50ZXJzIGNhbiBiZSBOVUxMIGlmIG5vbi1zZXQgKGFsdGhvdWdoIHNvbWUgY29tYmluYXRpb25zIGFyZQorZm9yYmlkZGVuLCBmb3IgZXhhbXBsZSB5b3UgY2FuJ3QgaGF2ZSBhIG5vbi1OVUxMIHRyYWNlYmFjayBpZiB0aGUgZXhjZXB0aW9uCit0eXBlIGlzIE5VTEwpLgogCiBXaGVuIGEgZnVuY3Rpb24gbXVzdCBmYWlsIGJlY2F1c2Ugc29tZSBmdW5jdGlvbiBpdCBjYWxsZWQgZmFpbGVkLCBpdCBnZW5lcmFsbHkKIGRvZXNuJ3Qgc2V0IHRoZSBlcnJvciBpbmRpY2F0b3I7IHRoZSBmdW5jdGlvbiBpdCBjYWxsZWQgYWxyZWFkeSBzZXQgaXQuICBJdCBpcwpAQCAtMjcsMTIgKzMzLDIxIEBACiBwcm9wYWdhdGVkLCBhZGRpdGlvbmFsIGNhbGxzIGludG8gdGhlIFB5dGhvbi9DIEFQSSBtYXkgbm90IGJlaGF2ZSBhcyBpbnRlbmRlZAogYW5kIG1heSBmYWlsIGluIG15c3RlcmlvdXMgd2F5cy4KIAotVGhlIGVycm9yIGluZGljYXRvciBjb25zaXN0cyBvZiB0aHJlZSBQeXRob24gb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSByZXN1bHQKLW9mIGBgc3lzLmV4Y19pbmZvKClgYC4gIEFQSSBmdW5jdGlvbnMgZXhpc3QgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgZXJyb3IgaW5kaWNhdG9yCi1pbiB2YXJpb3VzIHdheXMuICBUaGVyZSBpcyBhIHNlcGFyYXRlIGVycm9yIGluZGljYXRvciBmb3IgZWFjaCB0aHJlYWQuCisuLiBub3RlOjoKKyAgIFRoZSBlcnJvciBpbmRpY2F0b3IgaXMgKipub3QqKiB0aGUgcmVzdWx0IG9mIDpmdW5jOmBzeXMuZXhjX2luZm8oKWAuCisgICBUaGUgZm9ybWVyIGNvcnJlc3BvbmRzIHRvIGFuIGV4Y2VwdGlvbiB0aGF0IGlzIG5vdCB5ZXQgY2F1Z2h0IChhbmQgaXMKKyAgIHRoZXJlZm9yZSBzdGlsbCBwcm9wYWdhdGluZyksIHdoaWxlIHRoZSBsYXR0ZXIgcmV0dXJucyBhbiBleGNlcHRpb24gYWZ0ZXIKKyAgIGl0IGlzIGNhdWdodCAoYW5kIGhhcyB0aGVyZWZvcmUgc3RvcHBlZCBwcm9wYWdhdGluZykuCiAKLS4uIFhYWCBPcmRlciBvZiB0aGVzZSBzaG91bGQgYmUgbW9yZSB0aG91Z2h0ZnVsLgotICAgRWl0aGVyIGFscGhhYmV0aWNhbCBvciBzb21lIGtpbmQgb2Ygc3RydWN0dXJlLgorCitQcmludGluZyBhbmQgY2xlYXJpbmcKKz09PT09PT09PT09PT09PT09PT09PQorCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX0NsZWFyKCkKKworICAgQ2xlYXIgdGhlIGVycm9yIGluZGljYXRvci4gIElmIHRoZSBlcnJvciBpbmRpY2F0b3IgaXMgbm90IHNldCwgdGhlcmUgaXMgbm8KKyAgIGVmZmVjdC4KIAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9QcmludEV4KGludCBzZXRfc3lzX2xhc3RfdmFycykKQEAgLTUxLDEyNyArNjYsMjQgQEAKICAgIEFsaWFzIGZvciBgYFB5RXJyX1ByaW50RXgoMSlgYC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RXJyX09jY3VycmVkKCkKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShQeU9iamVjdCAqb2JqKQogCi0gICBUZXN0IHdoZXRoZXIgdGhlIGVycm9yIGluZGljYXRvciBpcyBzZXQuICBJZiBzZXQsIHJldHVybiB0aGUgZXhjZXB0aW9uICp0eXBlKgotICAgKHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgbGFzdCBjYWxsIHRvIG9uZSBvZiB0aGUgOmM6ZnVuYzpgUHlFcnJfU2V0XCpgCi0gICBmdW5jdGlvbnMgb3IgdG8gOmM6ZnVuYzpgUHlFcnJfUmVzdG9yZWApLiAgSWYgbm90IHNldCwgcmV0dXJuICpOVUxMKi4gIFlvdSBkbyBub3QKLSAgIG93biBhIHJlZmVyZW5jZSB0byB0aGUgcmV0dXJuIHZhbHVlLCBzbyB5b3UgZG8gbm90IG5lZWQgdG8gOmM6ZnVuYzpgUHlfREVDUkVGYAotICAgaXQuCisgICBUaGlzIHV0aWxpdHkgZnVuY3Rpb24gcHJpbnRzIGEgd2FybmluZyBtZXNzYWdlIHRvIGBgc3lzLnN0ZGVycmBgIHdoZW4gYW4KKyAgIGV4Y2VwdGlvbiBoYXMgYmVlbiBzZXQgYnV0IGl0IGlzIGltcG9zc2libGUgZm9yIHRoZSBpbnRlcnByZXRlciB0byBhY3R1YWxseQorICAgcmFpc2UgdGhlIGV4Y2VwdGlvbi4gIEl0IGlzIHVzZWQsIGZvciBleGFtcGxlLCB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gYW4KKyAgIDptZXRoOmBfX2RlbF9fYCBtZXRob2QuCiAKLSAgIC4uIG5vdGU6OgotCi0gICAgICBEbyBub3QgY29tcGFyZSB0aGUgcmV0dXJuIHZhbHVlIHRvIGEgc3BlY2lmaWMgZXhjZXB0aW9uOyB1c2UKLSAgICAgIDpjOmZ1bmM6YFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXNgIGluc3RlYWQsIHNob3duIGJlbG93LiAgKFRoZSBjb21wYXJpc29uIGNvdWxkCi0gICAgICBlYXNpbHkgZmFpbCBzaW5jZSB0aGUgZXhjZXB0aW9uIG1heSBiZSBhbiBpbnN0YW5jZSBpbnN0ZWFkIG9mIGEgY2xhc3MsIGluIHRoZQotICAgICAgY2FzZSBvZiBhIGNsYXNzIGV4Y2VwdGlvbiwgb3IgaXQgbWF5IGJlIGEgc3ViY2xhc3Mgb2YgdGhlIGV4cGVjdGVkIGV4Y2VwdGlvbi4pCisgICBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggYSBzaW5nbGUgYXJndW1lbnQgKm9iaiogdGhhdCBpZGVudGlmaWVzIHRoZSBjb250ZXh0CisgICBpbiB3aGljaCB0aGUgdW5yYWlzYWJsZSBleGNlcHRpb24gb2NjdXJyZWQuIFRoZSByZXByIG9mICpvYmoqIHdpbGwgYmUgcHJpbnRlZCBpbgorICAgdGhlIHdhcm5pbmcgbWVzc2FnZS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlPYmplY3QgKmV4YykKK1JhaXNpbmcgZXhjZXB0aW9ucworPT09PT09PT09PT09PT09PT09CiAKLSAgIEVxdWl2YWxlbnQgdG8gYGBQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMoUHlFcnJfT2NjdXJyZWQoKSwgZXhjKWBgLiAgVGhpcwotICAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gYW4gZXhjZXB0aW9uIGlzIGFjdHVhbGx5IHNldDsgYSBtZW1vcnkgYWNjZXNzCi0gICB2aW9sYXRpb24gd2lsbCBvY2N1ciBpZiBubyBleGNlcHRpb24gaGFzIGJlZW4gcmFpc2VkLgotCi0KLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKFB5T2JqZWN0ICpnaXZlbiwgUHlPYmplY3QgKmV4YykKLQotICAgUmV0dXJuIHRydWUgaWYgdGhlICpnaXZlbiogZXhjZXB0aW9uIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpbiAqZXhjKi4gIElmCi0gICAqZXhjKiBpcyBhIGNsYXNzIG9iamVjdCwgdGhpcyBhbHNvIHJldHVybnMgdHJ1ZSB3aGVuICpnaXZlbiogaXMgYW4gaW5zdGFuY2UKLSAgIG9mIGEgc3ViY2xhc3MuICBJZiAqZXhjKiBpcyBhIHR1cGxlLCBhbGwgZXhjZXB0aW9ucyBpbiB0aGUgdHVwbGUgKGFuZAotICAgcmVjdXJzaXZlbHkgaW4gc3VidHVwbGVzKSBhcmUgc2VhcmNoZWQgZm9yIGEgbWF0Y2guCi0KLQotLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKFB5T2JqZWN0KipleGMsIFB5T2JqZWN0Kip2YWwsIFB5T2JqZWN0Kip0YikKLQotICAgVW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCB0aGUgdmFsdWVzIHJldHVybmVkIGJ5IDpjOmZ1bmM6YFB5RXJyX0ZldGNoYCBiZWxvdwotICAgY2FuIGJlICJ1bm5vcm1hbGl6ZWQiLCBtZWFuaW5nIHRoYXQgYGAqZXhjYGAgaXMgYSBjbGFzcyBvYmplY3QgYnV0IGBgKnZhbGBgIGlzCi0gICBub3QgYW4gaW5zdGFuY2Ugb2YgdGhlICBzYW1lIGNsYXNzLiAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBpbnN0YW50aWF0ZQotICAgdGhlIGNsYXNzIGluIHRoYXQgY2FzZS4gIElmIHRoZSB2YWx1ZXMgYXJlIGFscmVhZHkgbm9ybWFsaXplZCwgbm90aGluZyBoYXBwZW5zLgotICAgVGhlIGRlbGF5ZWQgbm9ybWFsaXphdGlvbiBpcyBpbXBsZW1lbnRlZCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLgotCi0gICAuLiBub3RlOjoKLQotICAgICAgVGhpcyBmdW5jdGlvbiAqZG9lcyBub3QqIGltcGxpY2l0bHkgc2V0IHRoZSBgYF9fdHJhY2ViYWNrX19gYAotICAgICAgYXR0cmlidXRlIG9uIHRoZSBleGNlcHRpb24gdmFsdWUuIElmIHNldHRpbmcgdGhlIHRyYWNlYmFjawotICAgICAgYXBwcm9wcmlhdGVseSBpcyBkZXNpcmVkLCB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgc25pcHBldCBpcyBuZWVkZWQ6OgotCi0gICAgICAgICBpZiAodGIgIT0gTlVMTCkgewotICAgICAgICAgICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sodmFsLCB0Yik7Ci0gICAgICAgICB9Ci0KLQotLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfQ2xlYXIoKQotCi0gICBDbGVhciB0aGUgZXJyb3IgaW5kaWNhdG9yLiAgSWYgdGhlIGVycm9yIGluZGljYXRvciBpcyBub3Qgc2V0LCB0aGVyZSBpcyBubwotICAgZWZmZWN0LgotCi0KLS4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX0ZldGNoKFB5T2JqZWN0ICoqcHR5cGUsIFB5T2JqZWN0ICoqcHZhbHVlLCBQeU9iamVjdCAqKnB0cmFjZWJhY2spCi0KLSAgIFJldHJpZXZlIHRoZSBlcnJvciBpbmRpY2F0b3IgaW50byB0aHJlZSB2YXJpYWJsZXMgd2hvc2UgYWRkcmVzc2VzIGFyZSBwYXNzZWQuCi0gICBJZiB0aGUgZXJyb3IgaW5kaWNhdG9yIGlzIG5vdCBzZXQsIHNldCBhbGwgdGhyZWUgdmFyaWFibGVzIHRvICpOVUxMKi4gIElmIGl0IGlzCi0gICBzZXQsIGl0IHdpbGwgYmUgY2xlYXJlZCBhbmQgeW91IG93biBhIHJlZmVyZW5jZSB0byBlYWNoIG9iamVjdCByZXRyaWV2ZWQuICBUaGUKLSAgIHZhbHVlIGFuZCB0cmFjZWJhY2sgb2JqZWN0IG1heSBiZSAqTlVMTCogZXZlbiB3aGVuIHRoZSB0eXBlIG9iamVjdCBpcyBub3QuCi0KLSAgIC4uIG5vdGU6OgotCi0gICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vcm1hbGx5IG9ubHkgdXNlZCBieSBjb2RlIHRoYXQgbmVlZHMgdG8gaGFuZGxlIGV4Y2VwdGlvbnMgb3IKLSAgICAgIGJ5IGNvZGUgdGhhdCBuZWVkcyB0byBzYXZlIGFuZCByZXN0b3JlIHRoZSBlcnJvciBpbmRpY2F0b3IgdGVtcG9yYXJpbHkuCi0KLQotLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfUmVzdG9yZShQeU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnZhbHVlLCBQeU9iamVjdCAqdHJhY2ViYWNrKQotCi0gICBTZXQgIHRoZSBlcnJvciBpbmRpY2F0b3IgZnJvbSB0aGUgdGhyZWUgb2JqZWN0cy4gIElmIHRoZSBlcnJvciBpbmRpY2F0b3IgaXMKLSAgIGFscmVhZHkgc2V0LCBpdCBpcyBjbGVhcmVkIGZpcnN0LiAgSWYgdGhlIG9iamVjdHMgYXJlICpOVUxMKiwgdGhlIGVycm9yCi0gICBpbmRpY2F0b3IgaXMgY2xlYXJlZC4gIERvIG5vdCBwYXNzIGEgKk5VTEwqIHR5cGUgYW5kIG5vbi0qTlVMTCogdmFsdWUgb3IKLSAgIHRyYWNlYmFjay4gIFRoZSBleGNlcHRpb24gdHlwZSBzaG91bGQgYmUgYSBjbGFzcy4gIERvIG5vdCBwYXNzIGFuIGludmFsaWQKLSAgIGV4Y2VwdGlvbiB0eXBlIG9yIHZhbHVlLiAoVmlvbGF0aW5nIHRoZXNlIHJ1bGVzIHdpbGwgY2F1c2Ugc3VidGxlIHByb2JsZW1zCi0gICBsYXRlci4pICBUaGlzIGNhbGwgdGFrZXMgYXdheSBhIHJlZmVyZW5jZSB0byBlYWNoIG9iamVjdDogeW91IG11c3Qgb3duIGEKLSAgIHJlZmVyZW5jZSB0byBlYWNoIG9iamVjdCBiZWZvcmUgdGhlIGNhbGwgYW5kIGFmdGVyIHRoZSBjYWxsIHlvdSBubyBsb25nZXIgb3duCi0gICB0aGVzZSByZWZlcmVuY2VzLiAgKElmIHlvdSBkb24ndCB1bmRlcnN0YW5kIHRoaXMsIGRvbid0IHVzZSB0aGlzIGZ1bmN0aW9uLiAgSQotICAgd2FybmVkIHlvdS4pCi0KLSAgIC4uIG5vdGU6OgotCi0gICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vcm1hbGx5IG9ubHkgdXNlZCBieSBjb2RlIHRoYXQgbmVlZHMgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUKLSAgICAgIGVycm9yIGluZGljYXRvciB0ZW1wb3JhcmlseTsgdXNlIDpjOmZ1bmM6YFB5RXJyX0ZldGNoYCB0byBzYXZlIHRoZSBjdXJyZW50Ci0gICAgICBleGNlcHRpb24gc3RhdGUuCi0KLQotLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfR2V0RXhjSW5mbyhQeU9iamVjdCAqKnB0eXBlLCBQeU9iamVjdCAqKnB2YWx1ZSwgUHlPYmplY3QgKipwdHJhY2ViYWNrKQotCi0gICBSZXRyaWV2ZSB0aGUgZXhjZXB0aW9uIGluZm8sIGFzIGtub3duIGZyb20gYGBzeXMuZXhjX2luZm8oKWBgLiAgVGhpcyByZWZlcnMKLSAgIHRvIGFuIGV4Y2VwdGlvbiB0aGF0IHdhcyBhbHJlYWR5IGNhdWdodCwgbm90IHRvIGFuIGV4Y2VwdGlvbiB0aGF0IHdhcwotICAgZnJlc2hseSByYWlzZWQuICBSZXR1cm5zIG5ldyByZWZlcmVuY2VzIGZvciB0aGUgdGhyZWUgb2JqZWN0cywgYW55IG9mIHdoaWNoCi0gICBtYXkgYmUgKk5VTEwqLiAgRG9lcyBub3QgbW9kaWZ5IHRoZSBleGNlcHRpb24gaW5mbyBzdGF0ZS4KLQotICAgLi4gbm90ZTo6Ci0KLSAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IG5vcm1hbGx5IHVzZWQgYnkgY29kZSB0aGF0IHdhbnRzIHRvIGhhbmRsZSBleGNlcHRpb25zLgotICAgICAgUmF0aGVyLCBpdCBjYW4gYmUgdXNlZCB3aGVuIGNvZGUgbmVlZHMgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgZXhjZXB0aW9uCi0gICAgICBzdGF0ZSB0ZW1wb3JhcmlseS4gIFVzZSA6YzpmdW5jOmBQeUVycl9TZXRFeGNJbmZvYCB0byByZXN0b3JlIG9yIGNsZWFyIHRoZQotICAgICAgZXhjZXB0aW9uIHN0YXRlLgotCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKLQotCi0uLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9TZXRFeGNJbmZvKFB5T2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUsIFB5T2JqZWN0ICp0cmFjZWJhY2spCi0KLSAgIFNldCB0aGUgZXhjZXB0aW9uIGluZm8sIGFzIGtub3duIGZyb20gYGBzeXMuZXhjX2luZm8oKWBgLiAgVGhpcyByZWZlcnMKLSAgIHRvIGFuIGV4Y2VwdGlvbiB0aGF0IHdhcyBhbHJlYWR5IGNhdWdodCwgbm90IHRvIGFuIGV4Y2VwdGlvbiB0aGF0IHdhcwotICAgZnJlc2hseSByYWlzZWQuICBUaGlzIGZ1bmN0aW9uIHN0ZWFscyB0aGUgcmVmZXJlbmNlcyBvZiB0aGUgYXJndW1lbnRzLgotICAgVG8gY2xlYXIgdGhlIGV4Y2VwdGlvbiBzdGF0ZSwgcGFzcyAqTlVMTCogZm9yIGFsbCB0aHJlZSBhcmd1bWVudHMuCi0gICBGb3IgZ2VuZXJhbCBydWxlcyBhYm91dCB0aGUgdGhyZWUgYXJndW1lbnRzLCBzZWUgOmM6ZnVuYzpgUHlFcnJfUmVzdG9yZWAuCi0KLSAgIC4uIG5vdGU6OgotCi0gICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBub3JtYWxseSB1c2VkIGJ5IGNvZGUgdGhhdCB3YW50cyB0byBoYW5kbGUgZXhjZXB0aW9ucy4KLSAgICAgIFJhdGhlciwgaXQgY2FuIGJlIHVzZWQgd2hlbiBjb2RlIG5lZWRzIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlIGV4Y2VwdGlvbgotICAgICAgc3RhdGUgdGVtcG9yYXJpbHkuICBVc2UgOmM6ZnVuYzpgUHlFcnJfR2V0RXhjSW5mb2AgdG8gcmVhZCB0aGUgZXhjZXB0aW9uCi0gICAgICBzdGF0ZS4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCitUaGVzZSBmdW5jdGlvbnMgaGVscCB5b3Ugc2V0IHRoZSBjdXJyZW50IHRocmVhZCdzIGVycm9yIGluZGljYXRvci4KK0ZvciBjb252ZW5pZW5jZSwgc29tZSBvZiB0aGVzZSBmdW5jdGlvbnMgd2lsbCBhbHdheXMgcmV0dXJuIGEKK05VTEwgcG9pbnRlciBmb3IgdXNlIGluIGEgYGByZXR1cm5gYCBzdGF0ZW1lbnQuCiAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfU2V0U3RyaW5nKFB5T2JqZWN0ICp0eXBlLCBjb25zdCBjaGFyICptZXNzYWdlKQpAQCAtMTk3LDYgKzEwOSwxNCBAQAogICAgc3RyaW5nLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlFcnJfRm9ybWF0VihQeU9iamVjdCAqZXhjZXB0aW9uLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmFyZ3MpCisKKyAgIFNhbWUgYXMgOmM6ZnVuYzpgUHlFcnJfRm9ybWF0YCwgYnV0IHRha2luZyBhIDpjOnR5cGU6YHZhX2xpc3RgIGFyZ3VtZW50IHJhdGhlcgorICAgdGhhbiBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX1NldE5vbmUoUHlPYmplY3QgKnR5cGUpCiAKICAgIFRoaXMgaXMgYSBzaG9ydGhhbmQgZm9yIGBgUHlFcnJfU2V0T2JqZWN0KHR5cGUsIFB5X05vbmUpYGAuCkBAIC0zNDYsNiArMjY2LDIyIEBACiAgICB1c2UuCiAKIAorSXNzdWluZyB3YXJuaW5ncworPT09PT09PT09PT09PT09PQorCitVc2UgdGhlc2UgZnVuY3Rpb25zIHRvIGlzc3VlIHdhcm5pbmdzIGZyb20gQyBjb2RlLiAgVGhleSBtaXJyb3Igc2ltaWxhcgorZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoZSBQeXRob24gOm1vZDpgd2FybmluZ3NgIG1vZHVsZS4gIFRoZXkgbm9ybWFsbHkKK3ByaW50IGEgd2FybmluZyBtZXNzYWdlIHRvICpzeXMuc3RkZXJyKjsgaG93ZXZlciwgaXQgaXMKK2Fsc28gcG9zc2libGUgdGhhdCB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIHRoYXQgd2FybmluZ3MgYXJlIHRvIGJlIHR1cm5lZCBpbnRvCitlcnJvcnMsIGFuZCBpbiB0aGF0IGNhc2UgdGhleSB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbi4gIEl0IGlzIGFsc28gcG9zc2libGUgdGhhdAordGhlIGZ1bmN0aW9ucyByYWlzZSBhbiBleGNlcHRpb24gYmVjYXVzZSBvZiBhIHByb2JsZW0gd2l0aCB0aGUgd2FybmluZyBtYWNoaW5lcnkuCitUaGUgcmV0dXJuIHZhbHVlIGlzIGBgMGBgIGlmIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQsIG9yIGBgLTFgYCBpZiBhbiBleGNlcHRpb24KK2lzIHJhaXNlZC4gIChJdCBpcyBub3QgcG9zc2libGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSB3YXJuaW5nIG1lc3NhZ2UgaXMKK2FjdHVhbGx5IHByaW50ZWQsIG5vciB3aGF0IHRoZSByZWFzb24gaXMgZm9yIHRoZSBleGNlcHRpb247IHRoaXMgaXMKK2ludGVudGlvbmFsLikgIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHRoZSBjYWxsZXIgc2hvdWxkIGRvIGl0cyBub3JtYWwKK2V4Y2VwdGlvbiBoYW5kbGluZyAoZm9yIGV4YW1wbGUsIDpjOmZ1bmM6YFB5X0RFQ1JFRmAgb3duZWQgcmVmZXJlbmNlcyBhbmQgcmV0dXJuCithbiBlcnJvciB2YWx1ZSkuCisKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlFcnJfV2FybkV4KFB5T2JqZWN0ICpjYXRlZ29yeSwgY29uc3QgY2hhciAqbWVzc2FnZSwgUHlfc3NpemVfdCBzdGFja19sZXZlbCkKIAogICAgSXNzdWUgYSB3YXJuaW5nIG1lc3NhZ2UuICBUaGUgKmNhdGVnb3J5KiBhcmd1bWVudCBpcyBhIHdhcm5pbmcgY2F0ZWdvcnkgKHNlZQpAQCAtMzU1LDE4ICsyOTEsNiBAQAogICAgaXMgdGhlIGZ1bmN0aW9uIGNhbGxpbmcgOmM6ZnVuYzpgUHlFcnJfV2FybkV4YCwgMiBpcyAgdGhlIGZ1bmN0aW9uIGFib3ZlIHRoYXQsCiAgICBhbmQgc28gZm9ydGguCiAKLSAgIFRoaXMgZnVuY3Rpb24gbm9ybWFsbHkgcHJpbnRzIGEgd2FybmluZyBtZXNzYWdlIHRvICpzeXMuc3RkZXJyKjsgaG93ZXZlciwgaXQgaXMKLSAgIGFsc28gcG9zc2libGUgdGhhdCB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIHRoYXQgd2FybmluZ3MgYXJlIHRvIGJlIHR1cm5lZCBpbnRvCi0gICBlcnJvcnMsIGFuZCBpbiB0aGF0IGNhc2UgdGhpcyB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbi4gIEl0IGlzIGFsc28gcG9zc2libGUgdGhhdAotICAgdGhlIGZ1bmN0aW9uIHJhaXNlcyBhbiBleGNlcHRpb24gYmVjYXVzZSBvZiBhIHByb2JsZW0gd2l0aCB0aGUgd2FybmluZyBtYWNoaW5lcnkKLSAgICh0aGUgaW1wbGVtZW50YXRpb24gaW1wb3J0cyB0aGUgOm1vZDpgd2FybmluZ3NgIG1vZHVsZSB0byBkbyB0aGUgaGVhdnkgbGlmdGluZykuCi0gICBUaGUgcmV0dXJuIHZhbHVlIGlzIGBgMGBgIGlmIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQsIG9yIGBgLTFgYCBpZiBhbiBleGNlcHRpb24KLSAgIGlzIHJhaXNlZC4gIChJdCBpcyBub3QgcG9zc2libGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSB3YXJuaW5nIG1lc3NhZ2UgaXMKLSAgIGFjdHVhbGx5IHByaW50ZWQsIG5vciB3aGF0IHRoZSByZWFzb24gaXMgZm9yIHRoZSBleGNlcHRpb247IHRoaXMgaXMKLSAgIGludGVudGlvbmFsLikgIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHRoZSBjYWxsZXIgc2hvdWxkIGRvIGl0cyBub3JtYWwKLSAgIGV4Y2VwdGlvbiBoYW5kbGluZyAoZm9yIGV4YW1wbGUsIDpjOmZ1bmM6YFB5X0RFQ1JFRmAgb3duZWQgcmVmZXJlbmNlcyBhbmQgcmV0dXJuCi0gICBhbiBlcnJvciB2YWx1ZSkuCi0KICAgIFdhcm5pbmcgY2F0ZWdvcmllcyBtdXN0IGJlIHN1YmNsYXNzZXMgb2YgOmM6ZGF0YTpgV2FybmluZ2A7IHRoZSBkZWZhdWx0IHdhcm5pbmcKICAgIGNhdGVnb3J5IGlzIDpjOmRhdGE6YFJ1bnRpbWVXYXJuaW5nYC4gIFRoZSBzdGFuZGFyZCBQeXRob24gd2FybmluZyBjYXRlZ29yaWVzIGFyZQogICAgYXZhaWxhYmxlIGFzIGdsb2JhbCB2YXJpYWJsZXMgd2hvc2UgbmFtZXMgYXJlIGBgUHlFeGNfYGAgZm9sbG93ZWQgYnkgdGhlIFB5dGhvbgpAQCAtNDEwLDYgKzMzNCwxMzkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKK1F1ZXJ5aW5nIHRoZSBlcnJvciBpbmRpY2F0b3IKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUVycl9PY2N1cnJlZCgpCisKKyAgIFRlc3Qgd2hldGhlciB0aGUgZXJyb3IgaW5kaWNhdG9yIGlzIHNldC4gIElmIHNldCwgcmV0dXJuIHRoZSBleGNlcHRpb24gKnR5cGUqCisgICAodGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBsYXN0IGNhbGwgdG8gb25lIG9mIHRoZSA6YzpmdW5jOmBQeUVycl9TZXRcKmAKKyAgIGZ1bmN0aW9ucyBvciB0byA6YzpmdW5jOmBQeUVycl9SZXN0b3JlYCkuICBJZiBub3Qgc2V0LCByZXR1cm4gKk5VTEwqLiAgWW91IGRvIG5vdAorICAgb3duIGEgcmVmZXJlbmNlIHRvIHRoZSByZXR1cm4gdmFsdWUsIHNvIHlvdSBkbyBub3QgbmVlZCB0byA6YzpmdW5jOmBQeV9ERUNSRUZgCisgICBpdC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIERvIG5vdCBjb21wYXJlIHRoZSByZXR1cm4gdmFsdWUgdG8gYSBzcGVjaWZpYyBleGNlcHRpb247IHVzZQorICAgICAgOmM6ZnVuYzpgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlc2AgaW5zdGVhZCwgc2hvd24gYmVsb3cuICAoVGhlIGNvbXBhcmlzb24gY291bGQKKyAgICAgIGVhc2lseSBmYWlsIHNpbmNlIHRoZSBleGNlcHRpb24gbWF5IGJlIGFuIGluc3RhbmNlIGluc3RlYWQgb2YgYSBjbGFzcywgaW4gdGhlCisgICAgICBjYXNlIG9mIGEgY2xhc3MgZXhjZXB0aW9uLCBvciBpdCBtYXkgYmUgYSBzdWJjbGFzcyBvZiB0aGUgZXhwZWN0ZWQgZXhjZXB0aW9uLikKKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlPYmplY3QgKmV4YykKKworICAgRXF1aXZhbGVudCB0byBgYFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyhQeUVycl9PY2N1cnJlZCgpLCBleGMpYGAuICBUaGlzCisgICBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiBhbiBleGNlcHRpb24gaXMgYWN0dWFsbHkgc2V0OyBhIG1lbW9yeSBhY2Nlc3MKKyAgIHZpb2xhdGlvbiB3aWxsIG9jY3VyIGlmIG5vIGV4Y2VwdGlvbiBoYXMgYmVlbiByYWlzZWQuCisKKworLi4gYzpmdW5jdGlvbjo6IGludCBQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMoUHlPYmplY3QgKmdpdmVuLCBQeU9iamVjdCAqZXhjKQorCisgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgKmdpdmVuKiBleGNlcHRpb24gbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIHR5cGUgaW4gKmV4YyouICBJZgorICAgKmV4YyogaXMgYSBjbGFzcyBvYmplY3QsIHRoaXMgYWxzbyByZXR1cm5zIHRydWUgd2hlbiAqZ2l2ZW4qIGlzIGFuIGluc3RhbmNlCisgICBvZiBhIHN1YmNsYXNzLiAgSWYgKmV4YyogaXMgYSB0dXBsZSwgYWxsIGV4Y2VwdGlvbiB0eXBlcyBpbiB0aGUgdHVwbGUgKGFuZAorICAgcmVjdXJzaXZlbHkgaW4gc3VidHVwbGVzKSBhcmUgc2VhcmNoZWQgZm9yIGEgbWF0Y2guCisKKworLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfRmV0Y2goUHlPYmplY3QgKipwdHlwZSwgUHlPYmplY3QgKipwdmFsdWUsIFB5T2JqZWN0ICoqcHRyYWNlYmFjaykKKworICAgUmV0cmlldmUgdGhlIGVycm9yIGluZGljYXRvciBpbnRvIHRocmVlIHZhcmlhYmxlcyB3aG9zZSBhZGRyZXNzZXMgYXJlIHBhc3NlZC4KKyAgIElmIHRoZSBlcnJvciBpbmRpY2F0b3IgaXMgbm90IHNldCwgc2V0IGFsbCB0aHJlZSB2YXJpYWJsZXMgdG8gKk5VTEwqLiAgSWYgaXQgaXMKKyAgIHNldCwgaXQgd2lsbCBiZSBjbGVhcmVkIGFuZCB5b3Ugb3duIGEgcmVmZXJlbmNlIHRvIGVhY2ggb2JqZWN0IHJldHJpZXZlZC4gIFRoZQorICAgdmFsdWUgYW5kIHRyYWNlYmFjayBvYmplY3QgbWF5IGJlICpOVUxMKiBldmVuIHdoZW4gdGhlIHR5cGUgb2JqZWN0IGlzIG5vdC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm9ybWFsbHkgb25seSB1c2VkIGJ5IGNvZGUgdGhhdCBuZWVkcyB0byBjYXRjaCBleGNlcHRpb25zIG9yCisgICAgICBieSBjb2RlIHRoYXQgbmVlZHMgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgZXJyb3IgaW5kaWNhdG9yIHRlbXBvcmFyaWx5LCBlLmcuOjoKKworICAgICAgICAgeworICAgICAgICAgICAgUHlPYmplY3QgKip0eXBlLCAqKnZhbHVlLCAqKnRyYWNlYmFjazsKKyAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZ0eXBlLCAmdmFsdWUsICZ0cmFjZWJhY2spOworCisgICAgICAgICAgICAvKiAuLi4gY29kZSB0aGF0IG1pZ2h0IHByb2R1Y2Ugb3RoZXIgZXJyb3JzIC4uLiAqLworCisgICAgICAgICAgICBQeUVycl9SZXN0b3JlKHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spOworICAgICAgICAgfQorCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX1Jlc3RvcmUoUHlPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgUHlPYmplY3QgKnRyYWNlYmFjaykKKworICAgU2V0ICB0aGUgZXJyb3IgaW5kaWNhdG9yIGZyb20gdGhlIHRocmVlIG9iamVjdHMuICBJZiB0aGUgZXJyb3IgaW5kaWNhdG9yIGlzCisgICBhbHJlYWR5IHNldCwgaXQgaXMgY2xlYXJlZCBmaXJzdC4gIElmIHRoZSBvYmplY3RzIGFyZSAqTlVMTCosIHRoZSBlcnJvcgorICAgaW5kaWNhdG9yIGlzIGNsZWFyZWQuICBEbyBub3QgcGFzcyBhICpOVUxMKiB0eXBlIGFuZCBub24tKk5VTEwqIHZhbHVlIG9yCisgICB0cmFjZWJhY2suICBUaGUgZXhjZXB0aW9uIHR5cGUgc2hvdWxkIGJlIGEgY2xhc3MuICBEbyBub3QgcGFzcyBhbiBpbnZhbGlkCisgICBleGNlcHRpb24gdHlwZSBvciB2YWx1ZS4gKFZpb2xhdGluZyB0aGVzZSBydWxlcyB3aWxsIGNhdXNlIHN1YnRsZSBwcm9ibGVtcworICAgbGF0ZXIuKSAgVGhpcyBjYWxsIHRha2VzIGF3YXkgYSByZWZlcmVuY2UgdG8gZWFjaCBvYmplY3Q6IHlvdSBtdXN0IG93biBhCisgICByZWZlcmVuY2UgdG8gZWFjaCBvYmplY3QgYmVmb3JlIHRoZSBjYWxsIGFuZCBhZnRlciB0aGUgY2FsbCB5b3Ugbm8gbG9uZ2VyIG93bgorICAgdGhlc2UgcmVmZXJlbmNlcy4gIChJZiB5b3UgZG9uJ3QgdW5kZXJzdGFuZCB0aGlzLCBkb24ndCB1c2UgdGhpcyBmdW5jdGlvbi4gIEkKKyAgIHdhcm5lZCB5b3UuKQorCisgICAuLiBub3RlOjoKKworICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3JtYWxseSBvbmx5IHVzZWQgYnkgY29kZSB0aGF0IG5lZWRzIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlCisgICAgICBlcnJvciBpbmRpY2F0b3IgdGVtcG9yYXJpbHkuICBVc2UgOmM6ZnVuYzpgUHlFcnJfRmV0Y2hgIHRvIHNhdmUgdGhlIGN1cnJlbnQKKyAgICAgIGVycm9yIGluZGljYXRvci4KKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oUHlPYmplY3QqKmV4YywgUHlPYmplY3QqKnZhbCwgUHlPYmplY3QqKnRiKQorCisgICBVbmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIHRoZSB2YWx1ZXMgcmV0dXJuZWQgYnkgOmM6ZnVuYzpgUHlFcnJfRmV0Y2hgIGJlbG93CisgICBjYW4gYmUgInVubm9ybWFsaXplZCIsIG1lYW5pbmcgdGhhdCBgYCpleGNgYCBpcyBhIGNsYXNzIG9iamVjdCBidXQgYGAqdmFsYGAgaXMKKyAgIG5vdCBhbiBpbnN0YW5jZSBvZiB0aGUgIHNhbWUgY2xhc3MuICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGluc3RhbnRpYXRlCisgICB0aGUgY2xhc3MgaW4gdGhhdCBjYXNlLiAgSWYgdGhlIHZhbHVlcyBhcmUgYWxyZWFkeSBub3JtYWxpemVkLCBub3RoaW5nIGhhcHBlbnMuCisgICBUaGUgZGVsYXllZCBub3JtYWxpemF0aW9uIGlzIGltcGxlbWVudGVkIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBUaGlzIGZ1bmN0aW9uICpkb2VzIG5vdCogaW1wbGljaXRseSBzZXQgdGhlIGBgX190cmFjZWJhY2tfX2BgCisgICAgICBhdHRyaWJ1dGUgb24gdGhlIGV4Y2VwdGlvbiB2YWx1ZS4gSWYgc2V0dGluZyB0aGUgdHJhY2ViYWNrCisgICAgICBhcHByb3ByaWF0ZWx5IGlzIGRlc2lyZWQsIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBzbmlwcGV0IGlzIG5lZWRlZDo6CisKKyAgICAgICAgIGlmICh0YiAhPSBOVUxMKSB7CisgICAgICAgICAgIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjayh2YWwsIHRiKTsKKyAgICAgICAgIH0KKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9HZXRFeGNJbmZvKFB5T2JqZWN0ICoqcHR5cGUsIFB5T2JqZWN0ICoqcHZhbHVlLCBQeU9iamVjdCAqKnB0cmFjZWJhY2spCisKKyAgIFJldHJpZXZlIHRoZSBleGNlcHRpb24gaW5mbywgYXMga25vd24gZnJvbSBgYHN5cy5leGNfaW5mbygpYGAuICBUaGlzIHJlZmVycworICAgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzICphbHJlYWR5IGNhdWdodCosIG5vdCB0byBhbiBleGNlcHRpb24gdGhhdCB3YXMKKyAgIGZyZXNobHkgcmFpc2VkLiAgUmV0dXJucyBuZXcgcmVmZXJlbmNlcyBmb3IgdGhlIHRocmVlIG9iamVjdHMsIGFueSBvZiB3aGljaAorICAgbWF5IGJlICpOVUxMKi4gIERvZXMgbm90IG1vZGlmeSB0aGUgZXhjZXB0aW9uIGluZm8gc3RhdGUuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBub3JtYWxseSB1c2VkIGJ5IGNvZGUgdGhhdCB3YW50cyB0byBoYW5kbGUgZXhjZXB0aW9ucy4KKyAgICAgIFJhdGhlciwgaXQgY2FuIGJlIHVzZWQgd2hlbiBjb2RlIG5lZWRzIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlIGV4Y2VwdGlvbgorICAgICAgc3RhdGUgdGVtcG9yYXJpbHkuICBVc2UgOmM6ZnVuYzpgUHlFcnJfU2V0RXhjSW5mb2AgdG8gcmVzdG9yZSBvciBjbGVhciB0aGUKKyAgICAgIGV4Y2VwdGlvbiBzdGF0ZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfU2V0RXhjSW5mbyhQeU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnZhbHVlLCBQeU9iamVjdCAqdHJhY2ViYWNrKQorCisgICBTZXQgdGhlIGV4Y2VwdGlvbiBpbmZvLCBhcyBrbm93biBmcm9tIGBgc3lzLmV4Y19pbmZvKClgYC4gIFRoaXMgcmVmZXJzCisgICB0byBhbiBleGNlcHRpb24gdGhhdCB3YXMgKmFscmVhZHkgY2F1Z2h0Kiwgbm90IHRvIGFuIGV4Y2VwdGlvbiB0aGF0IHdhcworICAgZnJlc2hseSByYWlzZWQuICBUaGlzIGZ1bmN0aW9uIHN0ZWFscyB0aGUgcmVmZXJlbmNlcyBvZiB0aGUgYXJndW1lbnRzLgorICAgVG8gY2xlYXIgdGhlIGV4Y2VwdGlvbiBzdGF0ZSwgcGFzcyAqTlVMTCogZm9yIGFsbCB0aHJlZSBhcmd1bWVudHMuCisgICBGb3IgZ2VuZXJhbCBydWxlcyBhYm91dCB0aGUgdGhyZWUgYXJndW1lbnRzLCBzZWUgOmM6ZnVuYzpgUHlFcnJfUmVzdG9yZWAuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBub3JtYWxseSB1c2VkIGJ5IGNvZGUgdGhhdCB3YW50cyB0byBoYW5kbGUgZXhjZXB0aW9ucy4KKyAgICAgIFJhdGhlciwgaXQgY2FuIGJlIHVzZWQgd2hlbiBjb2RlIG5lZWRzIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlIGV4Y2VwdGlvbgorICAgICAgc3RhdGUgdGVtcG9yYXJpbHkuICBVc2UgOmM6ZnVuYzpgUHlFcnJfR2V0RXhjSW5mb2AgdG8gcmVhZCB0aGUgZXhjZXB0aW9uCisgICAgICBzdGF0ZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworU2lnbmFsIEhhbmRsaW5nCis9PT09PT09PT09PT09PT0KKworCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5RXJyX0NoZWNrU2lnbmFscygpCiAKICAgIC4uIGluZGV4OjoKQEAgLTQ0MywxMyArNTAwLDIxIEBACiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlTaWduYWxfU2V0V2FrZXVwRmQoaW50IGZkKQogCi0gICBUaGlzIHV0aWxpdHkgZnVuY3Rpb24gc3BlY2lmaWVzIGEgZmlsZSBkZXNjcmlwdG9yIHRvIHdoaWNoIGEgYGAnXDAnYGAgYnl0ZSB3aWxsCi0gICBiZSB3cml0dGVuIHdoZW5ldmVyIGEgc2lnbmFsIGlzIHJlY2VpdmVkLiAgSXQgcmV0dXJucyB0aGUgcHJldmlvdXMgc3VjaCBmaWxlCi0gICBkZXNjcmlwdG9yLiAgVGhlIHZhbHVlIGBgLTFgYCBkaXNhYmxlcyB0aGUgZmVhdHVyZTsgdGhpcyBpcyB0aGUgaW5pdGlhbCBzdGF0ZS4KKyAgIFRoaXMgdXRpbGl0eSBmdW5jdGlvbiBzcGVjaWZpZXMgYSBmaWxlIGRlc2NyaXB0b3IgdG8gd2hpY2ggdGhlIHNpZ25hbCBudW1iZXIKKyAgIGlzIHdyaXR0ZW4gYXMgYSBzaW5nbGUgYnl0ZSB3aGVuZXZlciBhIHNpZ25hbCBpcyByZWNlaXZlZC4gKmZkKiBtdXN0IGJlCisgICBub24tYmxvY2tpbmcuIEl0IHJldHVybnMgdGhlIHByZXZpb3VzIHN1Y2ggZmlsZSBkZXNjcmlwdG9yLgorCisgICBUaGUgdmFsdWUgYGAtMWBgIGRpc2FibGVzIHRoZSBmZWF0dXJlOyB0aGlzIGlzIHRoZSBpbml0aWFsIHN0YXRlLgogICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIDpmdW5jOmBzaWduYWwuc2V0X3dha2V1cF9mZGAgaW4gUHl0aG9uLCBidXQgd2l0aG91dCBhbnkKICAgIGVycm9yIGNoZWNraW5nLiAgKmZkKiBzaG91bGQgYmUgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IuICBUaGUgZnVuY3Rpb24gc2hvdWxkCiAgICBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIE9uIFdpbmRvd3MsIHRoZSBmdW5jdGlvbiBub3cgYWxzbyBzdXBwb3J0cyBzb2NrZXQgaGFuZGxlcy4KKworCitFeGNlcHRpb24gQ2xhc3NlcworPT09PT09PT09PT09PT09PT0KIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUVycl9OZXdFeGNlcHRpb24oY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKmJhc2UsIFB5T2JqZWN0ICpkaWN0KQogCkBAIC00NzUsMTggKzU0MCw2IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCi0uLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9Xcml0ZVVucmFpc2FibGUoUHlPYmplY3QgKm9iaikKLQotICAgVGhpcyB1dGlsaXR5IGZ1bmN0aW9uIHByaW50cyBhIHdhcm5pbmcgbWVzc2FnZSB0byBgYHN5cy5zdGRlcnJgYCB3aGVuIGFuCi0gICBleGNlcHRpb24gaGFzIGJlZW4gc2V0IGJ1dCBpdCBpcyBpbXBvc3NpYmxlIGZvciB0aGUgaW50ZXJwcmV0ZXIgdG8gYWN0dWFsbHkKLSAgIHJhaXNlIHRoZSBleGNlcHRpb24uICBJdCBpcyB1c2VkLCBmb3IgZXhhbXBsZSwgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIGFuCi0gICA6bWV0aDpgX19kZWxfX2AgbWV0aG9kLgotCi0gICBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggYSBzaW5nbGUgYXJndW1lbnQgKm9iaiogdGhhdCBpZGVudGlmaWVzIHRoZSBjb250ZXh0Ci0gICBpbiB3aGljaCB0aGUgdW5yYWlzYWJsZSBleGNlcHRpb24gb2NjdXJyZWQuIFRoZSByZXByIG9mICpvYmoqIHdpbGwgYmUgcHJpbnRlZCBpbgotICAgdGhlIHdhcm5pbmcgbWVzc2FnZS4KLQotCiBFeGNlcHRpb24gT2JqZWN0cwogPT09PT09PT09PT09PT09PT0KIApAQCAtNjMwLDEyICs2ODMsMTIgQEAKICAgIHNldHMgYSA6ZXhjOmBNZW1vcnlFcnJvcmAgYW5kIHJldHVybnMgYSBub256ZXJvIHZhbHVlLgogCiAgICBUaGUgZnVuY3Rpb24gdGhlbiBjaGVja3MgaWYgdGhlIHJlY3Vyc2lvbiBsaW1pdCBpcyByZWFjaGVkLiAgSWYgdGhpcyBpcyB0aGUKLSAgIGNhc2UsIGEgOmV4YzpgUnVudGltZUVycm9yYCBpcyBzZXQgYW5kIGEgbm9uemVybyB2YWx1ZSBpcyByZXR1cm5lZC4KKyAgIGNhc2UsIGEgOmV4YzpgUmVjdXJzaW9uRXJyb3JgIGlzIHNldCBhbmQgYSBub256ZXJvIHZhbHVlIGlzIHJldHVybmVkLgogICAgT3RoZXJ3aXNlLCB6ZXJvIGlzIHJldHVybmVkLgogCiAgICAqd2hlcmUqIHNob3VsZCBiZSBhIHN0cmluZyBzdWNoIGFzIGBgIiBpbiBpbnN0YW5jZSBjaGVjayJgYCB0byBiZQotICAgY29uY2F0ZW5hdGVkIHRvIHRoZSA6ZXhjOmBSdW50aW1lRXJyb3JgIG1lc3NhZ2UgY2F1c2VkIGJ5IHRoZSByZWN1cnNpb24gZGVwdGgKLSAgIGxpbWl0LgorICAgY29uY2F0ZW5hdGVkIHRvIHRoZSA6ZXhjOmBSZWN1cnNpb25FcnJvcmAgbWVzc2FnZSBjYXVzZWQgYnkgdGhlIHJlY3Vyc2lvbgorICAgZGVwdGggbGltaXQuCiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5X0xlYXZlUmVjdXJzaXZlQ2FsbCgpCiAKQEAgLTc0Nyw2ICs4MDAsOCBAQAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwogfCA6YzpkYXRhOmBQeUV4Y19Qcm9jZXNzTG9va3VwRXJyb3JgICAgICAgfCA6ZXhjOmBQcm9jZXNzTG9va3VwRXJyb3JgICAgICAgIHwgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19SZWN1cnNpb25FcnJvcmAgICAgICAgICAgfCA6ZXhjOmBSZWN1cnNpb25FcnJvcmAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwogfCA6YzpkYXRhOmBQeUV4Y19SZWZlcmVuY2VFcnJvcmAgICAgICAgICAgfCA6ZXhjOmBSZWZlcmVuY2VFcnJvcmAgICAgICAgICAgIHwgXCgyKSAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwogfCA6YzpkYXRhOmBQeUV4Y19SdW50aW1lRXJyb3JgICAgICAgICAgICAgfCA6ZXhjOmBSdW50aW1lRXJyb3JgICAgICAgICAgICAgIHwgICAgICAgICAgfApAQCAtNzc2LDYgKzgzMSw5IEBACiAgICA6YzpkYXRhOmBQeUV4Y19QZXJtaXNzaW9uRXJyb3JgLCA6YzpkYXRhOmBQeUV4Y19Qcm9jZXNzTG9va3VwRXJyb3JgCiAgICBhbmQgOmM6ZGF0YTpgUHlFeGNfVGltZW91dEVycm9yYCB3ZXJlIGludHJvZHVjZWQgZm9sbG93aW5nIDpwZXA6YDMxNTFgLgogCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgIDpjOmRhdGE6YFB5RXhjX1JlY3Vyc2lvbkVycm9yYC4KKwogCiBUaGVzZSBhcmUgY29tcGF0aWJpbGl0eSBhbGlhc2VzIHRvIDpjOmRhdGE6YFB5RXhjX09TRXJyb3JgOgogCkBAIC04MjQsNiArODgyLDcgQEAKICAgIHNpbmdsZTogUHlFeGNfT3ZlcmZsb3dFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19QZXJtaXNzaW9uRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfUHJvY2Vzc0xvb2t1cEVycm9yCisgICBzaW5nbGU6IFB5RXhjX1JlY3Vyc2lvbkVycm9yCiAgICBzaW5nbGU6IFB5RXhjX1JlZmVyZW5jZUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX1J1bnRpbWVFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19TeW50YXhFcnJvcgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2dlbi5yc3QgYi9Eb2MvYy1hcGkvZ2VuLnJzdAppbmRleCAwYzg1MWE3Li4xZWZiYWU0IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvZ2VuLnJzdAorKysgYi9Eb2MvYy1hcGkvZ2VuLnJzdApAQCAtNyw3ICs3LDcgQEAKIAogR2VuZXJhdG9yIG9iamVjdHMgYXJlIHdoYXQgUHl0aG9uIHVzZXMgdG8gaW1wbGVtZW50IGdlbmVyYXRvciBpdGVyYXRvcnMuIFRoZXkKIGFyZSBub3JtYWxseSBjcmVhdGVkIGJ5IGl0ZXJhdGluZyBvdmVyIGEgZnVuY3Rpb24gdGhhdCB5aWVsZHMgdmFsdWVzLCByYXRoZXIKLXRoYW4gZXhwbGljaXRseSBjYWxsaW5nIDpjOmZ1bmM6YFB5R2VuX05ld2AuCit0aGFuIGV4cGxpY2l0bHkgY2FsbGluZyA6YzpmdW5jOmBQeUdlbl9OZXdgIG9yIDpjOmZ1bmM6YFB5R2VuX05ld1dpdGhRdWFsTmFtZWAuCiAKIAogLi4gYzp0eXBlOjogUHlHZW5PYmplY3QKQEAgLTIwLDE5ICsyMCwyNSBAQAogICAgVGhlIHR5cGUgb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gZ2VuZXJhdG9yIG9iamVjdHMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeUdlbl9DaGVjayhvYikKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlHZW5fQ2hlY2soUHlPYmplY3QgKm9iKQogCiAgICBSZXR1cm4gdHJ1ZSBpZiAqb2IqIGlzIGEgZ2VuZXJhdG9yIG9iamVjdDsgKm9iKiBtdXN0IG5vdCBiZSAqTlVMTCouCiAKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeUdlbl9DaGVja0V4YWN0KG9iKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeUdlbl9DaGVja0V4YWN0KFB5T2JqZWN0ICpvYikKIAotICAgUmV0dXJuIHRydWUgaWYgKm9iKidzIHR5cGUgaXMgKlB5R2VuX1R5cGUqIGlzIGEgZ2VuZXJhdG9yIG9iamVjdDsgKm9iKiBtdXN0IG5vdAotICAgYmUgKk5VTEwqLgorICAgUmV0dXJuIHRydWUgaWYgKm9iKidzIHR5cGUgaXMgKlB5R2VuX1R5cGUqOyAqb2IqIG11c3Qgbm90IGJlICpOVUxMKi4KIAogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5R2VuX05ldyhQeUZyYW1lT2JqZWN0ICpmcmFtZSkKIAotICAgQ3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgZ2VuZXJhdG9yIG9iamVjdCBiYXNlZCBvbiB0aGUgKmZyYW1lKiBvYmplY3QuIEEKLSAgIHJlZmVyZW5jZSB0byAqZnJhbWUqIGlzIHN0b2xlbiBieSB0aGlzIGZ1bmN0aW9uLiBUaGUgcGFyYW1ldGVyIG11c3Qgbm90IGJlCisgICBDcmVhdGUgYW5kIHJldHVybiBhIG5ldyBnZW5lcmF0b3Igb2JqZWN0IGJhc2VkIG9uIHRoZSAqZnJhbWUqIG9iamVjdC4KKyAgIEEgcmVmZXJlbmNlIHRvICpmcmFtZSogaXMgc3RvbGVuIGJ5IHRoaXMgZnVuY3Rpb24uIFRoZSBhcmd1bWVudCBtdXN0IG5vdCBiZQogICAgKk5VTEwqLgorCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5R2VuX05ld1dpdGhRdWFsTmFtZShQeUZyYW1lT2JqZWN0ICpmcmFtZSwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpxdWFsbmFtZSkKKworICAgQ3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgZ2VuZXJhdG9yIG9iamVjdCBiYXNlZCBvbiB0aGUgKmZyYW1lKiBvYmplY3QsCisgICB3aXRoIGBgX19uYW1lX19gYCBhbmQgYGBfX3F1YWxuYW1lX19gYCBzZXQgdG8gKm5hbWUqIGFuZCAqcXVhbG5hbWUqLgorICAgQSByZWZlcmVuY2UgdG8gKmZyYW1lKiBpcyBzdG9sZW4gYnkgdGhpcyBmdW5jdGlvbi4gIFRoZSAqZnJhbWUqIGFyZ3VtZW50CisgICBtdXN0IG5vdCBiZSAqTlVMTCouCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvaW1wb3J0LnJzdCBiL0RvYy9jLWFwaS9pbXBvcnQucnN0CmluZGV4IDYwODY1ZjQuLjE1YTllMjUgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9pbXBvcnQucnN0CisrKyBiL0RvYy9jLWFwaS9pbXBvcnQucnN0CkBAIC0xODMsOSArMTgzLDkgQEAKIAogLi4gYzpmdW5jdGlvbjo6IGxvbmcgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIoKQogCi0gICBSZXR1cm4gdGhlIG1hZ2ljIG51bWJlciBmb3IgUHl0aG9uIGJ5dGVjb2RlIGZpbGVzIChhLmsuYS4gOmZpbGU6YC5weWNgIGFuZAotICAgOmZpbGU6YC5weW9gIGZpbGVzKS4gIFRoZSBtYWdpYyBudW1iZXIgc2hvdWxkIGJlIHByZXNlbnQgaW4gdGhlIGZpcnN0IGZvdXIgYnl0ZXMKLSAgIG9mIHRoZSBieXRlY29kZSBmaWxlLCBpbiBsaXR0bGUtZW5kaWFuIGJ5dGUgb3JkZXIuIFJldHVybnMgLTEgb24gZXJyb3IuCisgICBSZXR1cm4gdGhlIG1hZ2ljIG51bWJlciBmb3IgUHl0aG9uIGJ5dGVjb2RlIGZpbGVzIChhLmsuYS4gOmZpbGU6YC5weWNgIGZpbGUpLgorICAgVGhlIG1hZ2ljIG51bWJlciBzaG91bGQgYmUgcHJlc2VudCBpbiB0aGUgZmlyc3QgZm91ciBieXRlcyBvZiB0aGUgYnl0ZWNvZGUKKyAgIGZpbGUsIGluIGxpdHRsZS1lbmRpYW4gYnl0ZSBvcmRlci4gUmV0dXJucyAtMSBvbiBlcnJvci4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIFJldHVybiB2YWx1ZSBvZiAtMSB1cG9uIGZhaWx1cmUuCkBAIC0yMzYsMTEgKzIzNiw2IEBACiAgICBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBfUHlJbXBvcnRfRml4dXBFeHRlbnNpb24oY2hhciAqLCBjaGFyICopCi0KLSAgIEZvciBpbnRlcm5hbCB1c2Ugb25seS4KLQotCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZU9iamVjdChQeU9iamVjdCAqbmFtZSkKIAogICAgTG9hZCBhIGZyb3plbiBtb2R1bGUgbmFtZWQgKm5hbWUqLiAgUmV0dXJuIGBgMWBgIGZvciBzdWNjZXNzLCBgYDBgYCBpZiB0aGUKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbml0LnJzdCBiL0RvYy9jLWFwaS9pbml0LnJzdAppbmRleCA0YmI1MDY0Li44MTgyM2JmIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvaW5pdC5yc3QKKysrIGIvRG9jL2MtYXBpL2luaXQucnN0CkBAIC0xMzQsNiArMTM0LDkgQEAKICAgIGNoYW5nZSBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBwcm9ncmFtJ3MgZXhlY3V0aW9uLiAgTm8gY29kZSBpbiB0aGUgUHl0aG9uCiAgICBpbnRlcnByZXRlciB3aWxsIGNoYW5nZSB0aGUgY29udGVudHMgb2YgdGhpcyBzdG9yYWdlLgogCisgICBVc2UgOmM6ZnVuYzpgUHlfRGVjb2RlTG9jYWxlYCB0byBkZWNvZGUgYSBieXRlcyBzdHJpbmcgdG8gZ2V0IGEKKyAgIDpjOnR5cGU6YHdjaGFyXypgIHN0cmluZy4KKwogCiAuLiBjOmZ1bmN0aW9uOjogd2NoYXIqIFB5X0dldFByb2dyYW1OYW1lKCkKIApAQCAtMjQ1LDYgKzI0OCw5IEBACiAgICA6ZGF0YTpgc3lzLmV4ZWNfcHJlZml4YCB0byBiZSBlbXB0eS4gIEl0IGlzIHVwIHRvIHRoZSBjYWxsZXIgdG8gbW9kaWZ5IHRoZXNlCiAgICBpZiByZXF1aXJlZCBhZnRlciBjYWxsaW5nIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgLgogCisgICBVc2UgOmM6ZnVuYzpgUHlfRGVjb2RlTG9jYWxlYCB0byBkZWNvZGUgYSBieXRlcyBzdHJpbmcgdG8gZ2V0IGEKKyAgIDpjOnR5cGU6YHdjaGFyXypgIHN0cmluZy4KKwogICAgVGhlIHBhdGggYXJndW1lbnQgaXMgY29waWVkIGludGVybmFsbHksIHNvIHRoZSBjYWxsZXIgbWF5IGZyZWUgaXQgYWZ0ZXIgdGhlCiAgICBjYWxsIGNvbXBsZXRlcy4KIApAQCAtMzQ0LDYgKzM1MCw5IEBACiAgICAgIDpkYXRhOmBzeXMucGF0aGAsIHdoaWNoIGlzIHRoZSBzYW1lIGFzIHByZXBlbmRpbmcgdGhlIGN1cnJlbnQgd29ya2luZwogICAgICBkaXJlY3RvcnkgKGBgIi4iYGApLgogCisgICBVc2UgOmM6ZnVuYzpgUHlfRGVjb2RlTG9jYWxlYCB0byBkZWNvZGUgYSBieXRlcyBzdHJpbmcgdG8gZ2V0IGEKKyAgIDpjOnR5cGU6YHdjaGFyXypgIHN0cmluZy4KKwogICAgLi4gbm90ZTo6CiAgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IGFwcGxpY2F0aW9ucyBlbWJlZGRpbmcgdGhlIFB5dGhvbiBpbnRlcnByZXRlcgogICAgICAgZm9yIHB1cnBvc2VzIG90aGVyIHRoYW4gZXhlY3V0aW5nIGEgc2luZ2xlIHNjcmlwdCBwYXNzIDAgYXMgKnVwZGF0ZXBhdGgqLApAQCAtMzY4LDYgKzM3Nyw5IEBACiAgICB0byAxIHVubGVzcyB0aGUgOnByb2dyYW06YHB5dGhvbmAgaW50ZXJwcmV0ZXIgd2FzIHN0YXJ0ZWQgd2l0aCB0aGUKICAgIDpvcHRpb246YC1JYC4KIAorICAgVXNlIDpjOmZ1bmM6YFB5X0RlY29kZUxvY2FsZWAgdG8gZGVjb2RlIGEgYnl0ZXMgc3RyaW5nIHRvIGdldCBhCisgICA6Yzp0eXBlOmB3Y2hhcl8qYCBzdHJpbmcuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40IFRoZSAqdXBkYXRlcGF0aCogdmFsdWUgZGVwZW5kcyBvbiA6b3B0aW9uOmAtSWAuCiAKIApAQCAtMzgyLDYgKzM5NCw5IEBACiAgICBleGVjdXRpb24uICBObyBjb2RlIGluIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgd2lsbCBjaGFuZ2UgdGhlIGNvbnRlbnRzIG9mCiAgICB0aGlzIHN0b3JhZ2UuCiAKKyAgIFVzZSA6YzpmdW5jOmBQeV9EZWNvZGVMb2NhbGVgIHRvIGRlY29kZSBhIGJ5dGVzIHN0cmluZyB0byBnZXQgYQorICAgOmM6dHlwZTpgd2NoYXJfKmAgc3RyaW5nLgorCiAKIC4uIGM6ZnVuY3Rpb246OiB3X2NoYXIqIFB5X0dldFB5dGhvbkhvbWUoKQogCkBAIC04NTgsNiArODczLDggQEAKICAgICAgIGluc3RlYWQuCiAKIAorLi4gX3N1Yi1pbnRlcnByZXRlci1zdXBwb3J0OgorCiBTdWItaW50ZXJwcmV0ZXIgc3VwcG9ydAogPT09PT09PT09PT09PT09PT09PT09PT0KIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL21lbW9yeS5yc3QgYi9Eb2MvYy1hcGkvbWVtb3J5LnJzdAppbmRleCA3OTA4NjIyLi43MzM5MDA2IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbWVtb3J5LnJzdAorKysgYi9Eb2MvYy1hcGkvbWVtb3J5LnJzdApAQCAtOTIsOCArOTIsOCBAQAogbmVlZCB0byBiZSBoZWxkLgogCiBUaGUgZGVmYXVsdCByYXcgbWVtb3J5IGJsb2NrIGFsbG9jYXRvciB1c2VzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgotOmM6ZnVuYzpgbWFsbG9jYCwgOmM6ZnVuYzpgcmVhbGxvY2AgYW5kIDpjOmZ1bmM6YGZyZWVgOyBjYWxsIGBgbWFsbG9jKDEpYGAgd2hlbgotcmVxdWVzdGluZyB6ZXJvIGJ5dGVzLgorOmM6ZnVuYzpgbWFsbG9jYCwgOmM6ZnVuYzpgY2FsbG9jYCwgOmM6ZnVuYzpgcmVhbGxvY2AgYW5kIDpjOmZ1bmM6YGZyZWVgOyBjYWxsCitgYG1hbGxvYygxKWBgIChvciBgYGNhbGxvYygxLCAxKWBgKSB3aGVuIHJlcXVlc3RpbmcgemVybyBieXRlcy4KIAogLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKQEAgLTEwNiw2ICsxMDYsMTcgQEAKICAgIGJlZW4gaW5pdGlhbGl6ZWQgaW4gYW55IHdheS4KIAogCisuLiBjOmZ1bmN0aW9uOjogdm9pZCogUHlNZW1fUmF3Q2FsbG9jKHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKKworICAgQWxsb2NhdGVzICpuZWxlbSogZWxlbWVudHMgZWFjaCB3aG9zZSBzaXplIGluIGJ5dGVzIGlzICplbHNpemUqIGFuZCByZXR1cm5zCisgICBhIHBvaW50ZXIgb2YgdHlwZSA6Yzp0eXBlOmB2b2lkXCpgIHRvIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LCBvciAqTlVMTCogaWYgdGhlCisgICByZXF1ZXN0IGZhaWxzLiBUaGUgbWVtb3J5IGlzIGluaXRpYWxpemVkIHRvIHplcm9zLiBSZXF1ZXN0aW5nIHplcm8gZWxlbWVudHMKKyAgIG9yIGVsZW1lbnRzIG9mIHNpemUgemVybyBieXRlcyByZXR1cm5zIGEgZGlzdGluY3Qgbm9uLSpOVUxMKiBwb2ludGVyIGlmCisgICBwb3NzaWJsZSwgYXMgaWYgYGBQeU1lbV9SYXdDYWxsb2MoMSwgMSlgYCBoYWQgYmVlbiBjYWxsZWQgaW5zdGVhZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gYzpmdW5jdGlvbjo6IHZvaWQqIFB5TWVtX1Jhd1JlYWxsb2Modm9pZCAqcCwgc2l6ZV90IG4pCiAKICAgIFJlc2l6ZXMgdGhlIG1lbW9yeSBibG9jayBwb2ludGVkIHRvIGJ5ICpwKiB0byAqbiogYnl0ZXMuIFRoZSBjb250ZW50cyB3aWxsCkBAIC0xMzYsOCArMTQ3LDggQEAKIG1lbW9yeSBmcm9tIHRoZSBQeXRob24gaGVhcC4KIAogVGhlIGRlZmF1bHQgbWVtb3J5IGJsb2NrIGFsbG9jYXRvciB1c2VzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgotOmM6ZnVuYzpgbWFsbG9jYCwgOmM6ZnVuYzpgcmVhbGxvY2AgYW5kIDpjOmZ1bmM6YGZyZWVgOyBjYWxsIGBgbWFsbG9jKDEpYGAgd2hlbgotcmVxdWVzdGluZyB6ZXJvIGJ5dGVzLgorOmM6ZnVuYzpgbWFsbG9jYCwgOmM6ZnVuYzpgY2FsbG9jYCwgOmM6ZnVuYzpgcmVhbGxvY2AgYW5kIDpjOmZ1bmM6YGZyZWVgOyBjYWxsCitgYG1hbGxvYygxKWBgIChvciBgYGNhbGxvYygxLCAxKWBgKSB3aGVuIHJlcXVlc3RpbmcgemVybyBieXRlcy4KIAogLi4gd2FybmluZzo6CiAKQEAgLTE1Miw2ICsxNjMsMTcgQEAKICAgIGJlZW4gY2FsbGVkIGluc3RlYWQuIFRoZSBtZW1vcnkgd2lsbCBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIGluIGFueSB3YXkuCiAKIAorLi4gYzpmdW5jdGlvbjo6IHZvaWQqIFB5TWVtX0NhbGxvYyhzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCisKKyAgIEFsbG9jYXRlcyAqbmVsZW0qIGVsZW1lbnRzIGVhY2ggd2hvc2Ugc2l6ZSBpbiBieXRlcyBpcyAqZWxzaXplKiBhbmQgcmV0dXJucworICAgYSBwb2ludGVyIG9mIHR5cGUgOmM6dHlwZTpgdm9pZFwqYCB0byB0aGUgYWxsb2NhdGVkIG1lbW9yeSwgb3IgKk5VTEwqIGlmIHRoZQorICAgcmVxdWVzdCBmYWlscy4gVGhlIG1lbW9yeSBpcyBpbml0aWFsaXplZCB0byB6ZXJvcy4gUmVxdWVzdGluZyB6ZXJvIGVsZW1lbnRzCisgICBvciBlbGVtZW50cyBvZiBzaXplIHplcm8gYnl0ZXMgcmV0dXJucyBhIGRpc3RpbmN0IG5vbi0qTlVMTCogcG9pbnRlciBpZgorICAgcG9zc2libGUsIGFzIGlmIGBgUHlNZW1fQ2FsbG9jKDEsIDEpYGAgaGFkIGJlZW4gY2FsbGVkIGluc3RlYWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGM6ZnVuY3Rpb246OiB2b2lkKiBQeU1lbV9SZWFsbG9jKHZvaWQgKnAsIHNpemVfdCBuKQogCiAgICBSZXNpemVzIHRoZSBtZW1vcnkgYmxvY2sgcG9pbnRlZCB0byBieSAqcCogdG8gKm4qIGJ5dGVzLiBUaGUgY29udGVudHMgd2lsbCBiZQpAQCAtMjEwLDcgKzIzMiw3IEBACiAKIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCi0uLiBjOnR5cGU6OiBQeU1lbUFsbG9jYXRvcgorLi4gYzp0eXBlOjogUHlNZW1BbGxvY2F0b3JFeAogCiAgICBTdHJ1Y3R1cmUgdXNlZCB0byBkZXNjcmliZSBhIG1lbW9yeSBibG9jayBhbGxvY2F0b3IuIFRoZSBzdHJ1Y3R1cmUgaGFzCiAgICBmb3VyIGZpZWxkczoKQEAgLTIyMiwxMSArMjQ0LDE5IEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGBgdm9pZCogbWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpYGAgICAgICAgICAgICAgICAgIHwgYWxsb2NhdGUgYSBtZW1vcnkgYmxvY2sgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgdm9pZCogY2FsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKWBgIHwgYWxsb2NhdGUgYSBtZW1vcnkgYmxvY2sgaW5pdGlhbGl6ZWQgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2l0aCB6ZXJvcyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGBgdm9pZCogcmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKWBgIHwgYWxsb2NhdGUgb3IgcmVzaXplIGEgbWVtb3J5IGJsb2NrICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGBgdm9pZCBmcmVlKHZvaWQgKmN0eCwgdm9pZCAqcHRyKWBgICAgICAgICAgICAgICAgICAgICAgIHwgZnJlZSBhIG1lbW9yeSBibG9jayAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgOmM6dHlwZTpgUHlNZW1BbGxvY2F0b3JgIHN0cnVjdHVyZSB3YXMgcmVuYW1lZCB0bworICAgICAgOmM6dHlwZTpgUHlNZW1BbGxvY2F0b3JFeGAgYW5kIGEgbmV3IGBgY2FsbG9jYGAgZmllbGQgd2FzIGFkZGVkLgorCisKIC4uIGM6dHlwZTo6IFB5TWVtQWxsb2NhdG9yRG9tYWluCiAKICAgIEVudW0gdXNlZCB0byBpZGVudGlmeSBhbiBhbGxvY2F0b3IgZG9tYWluLiBEb21haW5zOgpAQCAtMjM5LDEyICsyNjksMTIgQEAKICAgICAgOmM6ZnVuYzpgUHlPYmplY3RfUmVhbGxvY2AgYW5kIDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgCiAKIAotLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlNZW1fR2V0QWxsb2NhdG9yKFB5TWVtQWxsb2NhdG9yRG9tYWluIGRvbWFpbiwgUHlNZW1BbGxvY2F0b3IgKmFsbG9jYXRvcikKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5TWVtX0dldEFsbG9jYXRvcihQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4sIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jYXRvcikKIAogICAgR2V0IHRoZSBtZW1vcnkgYmxvY2sgYWxsb2NhdG9yIG9mIHRoZSBzcGVjaWZpZWQgZG9tYWluLgogCiAKLS4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5TWVtX1NldEFsbG9jYXRvcihQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4sIFB5TWVtQWxsb2NhdG9yICphbGxvY2F0b3IpCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeU1lbV9TZXRBbGxvY2F0b3IoUHlNZW1BbGxvY2F0b3JEb21haW4gZG9tYWluLCBQeU1lbUFsbG9jYXRvckV4ICphbGxvY2F0b3IpCiAKICAgIFNldCB0aGUgbWVtb3J5IGJsb2NrIGFsbG9jYXRvciBvZiB0aGUgc3BlY2lmaWVkIGRvbWFpbi4KIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL21lbW9yeXZpZXcucnN0IGIvRG9jL2MtYXBpL21lbW9yeXZpZXcucnN0CmluZGV4IDVlNTA5NzcuLjlmNmJmZDcgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9tZW1vcnl2aWV3LnJzdAorKysgYi9Eb2MvYy1hcGkvbWVtb3J5dmlldy5yc3QKQEAgLTM1LDcgKzM1LDcgQEAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0ICpQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cyhQeU9iamVjdCAqb2JqLCBpbnQgYnVmZmVydHlwZSwgY2hhciBvcmRlcikKIAotICAgQ3JlYXRlIGEgbWVtb3J5dmlldyBvYmplY3QgdG8gYSBjb250aWd1b3VzIGNodW5rIG9mIG1lbW9yeSAoaW4gZWl0aGVyCisgICBDcmVhdGUgYSBtZW1vcnl2aWV3IG9iamVjdCB0byBhIDp0ZXJtOmBjb250aWd1b3VzYCBjaHVuayBvZiBtZW1vcnkgKGluIGVpdGhlcgogICAgJ0MnIG9yICdGJ29ydHJhbiAqb3JkZXIqKSBmcm9tIGFuIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlIGJ1ZmZlcgogICAgaW50ZXJmYWNlLiBJZiBtZW1vcnkgaXMgY29udGlndW91cywgdGhlIG1lbW9yeXZpZXcgb2JqZWN0IHBvaW50cyB0byB0aGUKICAgIG9yaWdpbmFsIG1lbW9yeS4gT3RoZXJ3aXNlLCBhIGNvcHkgaXMgbWFkZSBhbmQgdGhlIG1lbW9yeXZpZXcgcG9pbnRzIHRvIGEKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9tb2R1bGUucnN0IGIvRG9jL2MtYXBpL21vZHVsZS5yc3QKaW5kZXggOTg1YTM0Ny4uZWY3NzhjYyAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL21vZHVsZS5yc3QKKysrIGIvRG9jL2MtYXBpL21vZHVsZS5yc3QKQEAgLTcsOCArNyw2IEBACiAKIC4uIGluZGV4Ojogb2JqZWN0OiBtb2R1bGUKIAotVGhlcmUgYXJlIG9ubHkgYSBmZXcgZnVuY3Rpb25zIHNwZWNpYWwgdG8gbW9kdWxlIG9iamVjdHMuCi0KIAogLi4gYzp2YXI6OiBQeVR5cGVPYmplY3QgUHlNb2R1bGVfVHlwZQogCkBAIC04NCw2ICs4MiwxOCBAQAogICAgU2ltaWxhciB0byA6YzpmdW5jOmBQeU1vZHVsZV9HZXROYW1lT2JqZWN0YCBidXQgcmV0dXJuIHRoZSBuYW1lIGVuY29kZWQgdG8KICAgIGBgJ3V0Zi04J2BgLgogCisuLiBjOmZ1bmN0aW9uOjogdm9pZCogUHlNb2R1bGVfR2V0U3RhdGUoUHlPYmplY3QgKm1vZHVsZSkKKworICAgUmV0dXJuIHRoZSAic3RhdGUiIG9mIHRoZSBtb2R1bGUsIHRoYXQgaXMsIGEgcG9pbnRlciB0byB0aGUgYmxvY2sgb2YgbWVtb3J5CisgICBhbGxvY2F0ZWQgYXQgbW9kdWxlIGNyZWF0aW9uIHRpbWUsIG9yICpOVUxMKi4gIFNlZQorICAgOmM6bWVtYmVyOmBQeU1vZHVsZURlZi5tX3NpemVgLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeU1vZHVsZURlZiogUHlNb2R1bGVfR2V0RGVmKFB5T2JqZWN0ICptb2R1bGUpCisKKyAgIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIDpjOnR5cGU6YFB5TW9kdWxlRGVmYCBzdHJ1Y3QgZnJvbSB3aGljaCB0aGUgbW9kdWxlIHdhcworICAgY3JlYXRlZCwgb3IgKk5VTEwqIGlmIHRoZSBtb2R1bGUgd2Fzbid0IGNyZWF0ZWQgZnJvbSBhIGRlZmluaXRpb24uCisKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdChQeU9iamVjdCAqbW9kdWxlKQogCkBAIC0xMDksNzAgKzExOSwyNSBAQAogICAgICAgdW5lbmNvZGFibGUgZmlsZW5hbWVzLCB1c2UgOmM6ZnVuYzpgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3RgIGluc3RlYWQuCiAKIAotLi4gYzpmdW5jdGlvbjo6IHZvaWQqIFB5TW9kdWxlX0dldFN0YXRlKFB5T2JqZWN0ICptb2R1bGUpCi0KLSAgIFJldHVybiB0aGUgInN0YXRlIiBvZiB0aGUgbW9kdWxlLCB0aGF0IGlzLCBhIHBvaW50ZXIgdG8gdGhlIGJsb2NrIG9mIG1lbW9yeQotICAgYWxsb2NhdGVkIGF0IG1vZHVsZSBjcmVhdGlvbiB0aW1lLCBvciAqTlVMTCouICBTZWUKLSAgIDpjOm1lbWJlcjpgUHlNb2R1bGVEZWYubV9zaXplYC4KLQotCi0uLiBjOmZ1bmN0aW9uOjogUHlNb2R1bGVEZWYqIFB5TW9kdWxlX0dldERlZihQeU9iamVjdCAqbW9kdWxlKQotCi0gICBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSA6Yzp0eXBlOmBQeU1vZHVsZURlZmAgc3RydWN0IGZyb20gd2hpY2ggdGhlIG1vZHVsZSB3YXMKLSAgIGNyZWF0ZWQsIG9yICpOVUxMKiBpZiB0aGUgbW9kdWxlIHdhc24ndCBjcmVhdGVkIHdpdGgKLSAgIDpjOmZ1bmM6YFB5TW9kdWxlX0NyZWF0ZWAuCi0KLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlTdGF0ZV9GaW5kTW9kdWxlKFB5TW9kdWxlRGVmICpkZWYpCi0KLSAgIFJldHVybnMgdGhlIG1vZHVsZSBvYmplY3QgdGhhdCB3YXMgY3JlYXRlZCBmcm9tICpkZWYqIGZvciB0aGUgY3VycmVudCBpbnRlcnByZXRlci4KLSAgIFRoaXMgbWV0aG9kIHJlcXVpcmVzIHRoYXQgdGhlIG1vZHVsZSBvYmplY3QgaGFzIGJlZW4gYXR0YWNoZWQgdG8gdGhlIGludGVycHJldGVyIHN0YXRlIHdpdGgKLSAgIDpjOmZ1bmM6YFB5U3RhdGVfQWRkTW9kdWxlYCBiZWZvcmVoYW5kLiBJbiBjYXNlIHRoZSBjb3JyZXNwb25kaW5nIG1vZHVsZSBvYmplY3QgaXMgbm90Ci0gICBmb3VuZCBvciBoYXMgbm90IGJlZW4gYXR0YWNoZWQgdG8gdGhlIGludGVycHJldGVyIHN0YXRlIHlldCwgaXQgcmV0dXJucyBOVUxMLgotCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5U3RhdGVfQWRkTW9kdWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5TW9kdWxlRGVmICpkZWYpCi0KLSAgIEF0dGFjaGVzIHRoZSBtb2R1bGUgb2JqZWN0IHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gdG8gdGhlIGludGVycHJldGVyIHN0YXRlLiBUaGlzIGFsbG93cwotICAgdGhlIG1vZHVsZSBvYmplY3QgdG8gYmUgYWNjZXNzaWJsZSB2aWEKLSAgIDpjOmZ1bmM6YFB5U3RhdGVfRmluZE1vZHVsZWAuCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwotCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5U3RhdGVfUmVtb3ZlTW9kdWxlKFB5TW9kdWxlRGVmICpkZWYpCi0KLSAgIFJlbW92ZXMgdGhlIG1vZHVsZSBvYmplY3QgY3JlYXRlZCBmcm9tICpkZWYqIGZyb20gdGhlIGludGVycHJldGVyIHN0YXRlLgotCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKy4uIF9pbml0aWFsaXppbmctbW9kdWxlczoKIAogSW5pdGlhbGl6aW5nIEMgbW9kdWxlcwogXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCi1UaGVzZSBmdW5jdGlvbnMgYXJlIHVzdWFsbHkgdXNlZCBpbiB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLgorTW9kdWxlcyBvYmplY3RzIGFyZSB1c3VhbGx5IGNyZWF0ZWQgZnJvbSBleHRlbnNpb24gbW9kdWxlcyAoc2hhcmVkIGxpYnJhcmllcword2hpY2ggZXhwb3J0IGFuIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uKSwgb3IgY29tcGlsZWQtaW4gbW9kdWxlcworKHdoZXJlIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBpcyBhZGRlZCB1c2luZyA6YzpmdW5jOmBQeUltcG9ydF9BcHBlbmRJbml0dGFiYCkuCitTZWUgOnJlZjpgYnVpbGRpbmdgIG9yIDpyZWY6YGV4dGVuZGluZy13aXRoLWVtYmVkZGluZ2AgZm9yIGRldGFpbHMuCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlNb2R1bGVfQ3JlYXRlKFB5TW9kdWxlRGVmICptb2R1bGUpCi0KLSAgIENyZWF0ZSBhIG5ldyBtb2R1bGUgb2JqZWN0LCBnaXZlbiB0aGUgZGVmaW5pdGlvbiBpbiAqbW9kdWxlKi4gIFRoaXMgYmVoYXZlcwotICAgbGlrZSA6YzpmdW5jOmBQeU1vZHVsZV9DcmVhdGUyYCB3aXRoICptb2R1bGVfYXBpX3ZlcnNpb24qIHNldCB0bwotICAgOmNvbnN0OmBQWVRIT05fQVBJX1ZFUlNJT05gLgotCi0KLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlNb2R1bGVfQ3JlYXRlMihQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbW9kdWxlX2FwaV92ZXJzaW9uKQotCi0gICBDcmVhdGUgYSBuZXcgbW9kdWxlIG9iamVjdCwgZ2l2ZW4gdGhlIGRlZmluaXRpb24gaW4gKm1vZHVsZSosIGFzc3VtaW5nIHRoZQotICAgQVBJIHZlcnNpb24gKm1vZHVsZV9hcGlfdmVyc2lvbiouICBJZiB0aGF0IHZlcnNpb24gZG9lcyBub3QgbWF0Y2ggdGhlIHZlcnNpb24KLSAgIG9mIHRoZSBydW5uaW5nIGludGVycHJldGVyLCBhIDpleGM6YFJ1bnRpbWVXYXJuaW5nYCBpcyBlbWl0dGVkLgotCi0gICAuLiBub3RlOjoKLQotICAgICAgTW9zdCB1c2VzIG9mIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzaW5nIDpjOmZ1bmM6YFB5TW9kdWxlX0NyZWF0ZWAKLSAgICAgIGluc3RlYWQ7IG9ubHkgdXNlIHRoaXMgaWYgeW91IGFyZSBzdXJlIHlvdSBuZWVkIGl0LgotCitUaGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gY2FuIGVpdGhlciBwYXNzIHBhc3MgYSBtb2R1bGUgZGVmaW5pdGlvbiBpbnN0YW5jZQordG8gOmM6ZnVuYzpgUHlNb2R1bGVfQ3JlYXRlYCwgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIG1vZHVsZSBvYmplY3QsCitvciByZXF1ZXN0ICJtdWx0aS1waGFzZSBpbml0aWFsaXphdGlvbiIgYnkgcmV0dXJuaW5nIHRoZSBkZWZpbml0aW9uIHN0cnVjdCBpdHNlbGYuCiAKIC4uIGM6dHlwZTo6IFB5TW9kdWxlRGVmCiAKLSAgIFRoaXMgc3RydWN0IGhvbGRzIGFsbCBpbmZvcm1hdGlvbiB0aGF0IGlzIG5lZWRlZCB0byBjcmVhdGUgYSBtb2R1bGUgb2JqZWN0LgotICAgVGhlcmUgaXMgdXN1YWxseSBvbmx5IG9uZSBzdGF0aWMgdmFyaWFibGUgb2YgdGhhdCB0eXBlIGZvciBlYWNoIG1vZHVsZSwgd2hpY2gKLSAgIGlzIHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgYW5kIHRoZW4gcGFzc2VkIHRvIDpjOmZ1bmM6YFB5TW9kdWxlX0NyZWF0ZWAgaW4gdGhlCi0gICBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uCisgICBUaGUgbW9kdWxlIGRlZmluaXRpb24gc3RydWN0LCB3aGljaCBob2xkcyBhbGwgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGNyZWF0ZQorICAgYSBtb2R1bGUgb2JqZWN0LiBUaGVyZSBpcyB1c3VhbGx5IG9ubHkgb25lIHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgdmFyaWFibGUKKyAgIG9mIHRoaXMgdHlwZSBmb3IgZWFjaCBtb2R1bGUuCiAKICAgIC4uIGM6bWVtYmVyOjogUHlNb2R1bGVEZWZfQmFzZSBtX2Jhc2UKIApAQCAtMTg5LDE5ICsxNTQsMjEgQEAKIAogICAgLi4gYzptZW1iZXI6OiBQeV9zc2l6ZV90IG1fc2l6ZQogCi0gICAgICBTb21lIG1vZHVsZXMgYWxsb3cgcmUtaW5pdGlhbGl6YXRpb24gKGNhbGxpbmcgdGhlaXIgYGBQeUluaXRfKmBgIGZ1bmN0aW9uCi0gICAgICBtb3JlIHRoYW4gb25jZSkuIFRoZXNlIG1vZHVsZXMgc2hvdWxkIGtlZXAgdGhlaXIgc3RhdGUgaW4gYSBwZXItbW9kdWxlCi0gICAgICBtZW1vcnkgYXJlYSB0aGF0IGNhbiBiZSByZXRyaWV2ZWQgd2l0aCA6YzpmdW5jOmBQeU1vZHVsZV9HZXRTdGF0ZWAuCisgICAgICBNb2R1bGUgc3RhdGUgbWF5IGJlIGtlcHQgaW4gYSBwZXItbW9kdWxlIG1lbW9yeSBhcmVhIHRoYXQgY2FuIGJlCisgICAgICByZXRyaWV2ZWQgd2l0aCA6YzpmdW5jOmBQeU1vZHVsZV9HZXRTdGF0ZWAsIHJhdGhlciB0aGFuIGluIHN0YXRpYyBnbG9iYWxzLgorICAgICAgVGhpcyBtYWtlcyBtb2R1bGVzIHNhZmUgZm9yIHVzZSBpbiBtdWx0aXBsZSBzdWItaW50ZXJwcmV0ZXJzLgogCi0gICAgICBUaGlzIG1lbW9yeSBzaG91bGQgYmUgdXNlZCwgcmF0aGVyIHRoYW4gc3RhdGljIGdsb2JhbHMsIHRvIGhvbGQgcGVyLW1vZHVsZQotICAgICAgc3RhdGUsIHNpbmNlIGl0IGlzIHRoZW4gc2FmZSBmb3IgdXNlIGluIG11bHRpcGxlIHN1Yi1pbnRlcnByZXRlcnMuICBJdCBpcwotICAgICAgZnJlZWQgd2hlbiB0aGUgbW9kdWxlIG9iamVjdCBpcyBkZWFsbG9jYXRlZCwgYWZ0ZXIgdGhlIDpjOm1lbWJlcjpgbV9mcmVlYAotICAgICAgZnVuY3Rpb24gaGFzIGJlZW4gY2FsbGVkLCBpZiBwcmVzZW50LgorICAgICAgVGhpcyBtZW1vcnkgYXJlYSBpcyBhbGxvY2F0ZWQgYmFzZWQgb24gKm1fc2l6ZSogb24gbW9kdWxlIGNyZWF0aW9uLAorICAgICAgYW5kIGZyZWVkIHdoZW4gdGhlIG1vZHVsZSBvYmplY3QgaXMgZGVhbGxvY2F0ZWQsIGFmdGVyIHRoZQorICAgICAgOmM6bWVtYmVyOmBtX2ZyZWVgIGZ1bmN0aW9uIGhhcyBiZWVuIGNhbGxlZCwgaWYgcHJlc2VudC4KIAotICAgICAgU2V0dGluZyBgYG1fc2l6ZWBgIHRvIGBgLTFgYCBtZWFucyB0aGF0IHRoZSBtb2R1bGUgY2FuIG5vdCBiZQotICAgICAgcmUtaW5pdGlhbGl6ZWQgYmVjYXVzZSBpdCBoYXMgZ2xvYmFsIHN0YXRlLiBTZXR0aW5nIGl0IHRvIGEgbm9uLW5lZ2F0aXZlCi0gICAgICB2YWx1ZSBtZWFucyB0aGF0IHRoZSBtb2R1bGUgY2FuIGJlIHJlLWluaXRpYWxpemVkIGFuZCBzcGVjaWZpZXMgdGhlCi0gICAgICBhZGRpdGlvbmFsIGFtb3VudCBvZiBtZW1vcnkgaXQgcmVxdWlyZXMgZm9yIGl0cyBzdGF0ZS4KKyAgICAgIFNldHRpbmcgYGBtX3NpemVgYCB0byBgYC0xYGAgbWVhbnMgdGhhdCB0aGUgbW9kdWxlIGRvZXMgbm90IHN1cHBvcnQKKyAgICAgIHN1Yi1pbnRlcnByZXRlcnMsIGJlY2F1c2UgaXQgaGFzIGdsb2JhbCBzdGF0ZS4KKworICAgICAgU2V0dGluZyBpdCB0byBhIG5vbi1uZWdhdGl2ZSB2YWx1ZSBtZWFucyB0aGF0IHRoZSBtb2R1bGUgY2FuIGJlCisgICAgICByZS1pbml0aWFsaXplZCBhbmQgc3BlY2lmaWVzIHRoZSBhZGRpdGlvbmFsIGFtb3VudCBvZiBtZW1vcnkgaXQgcmVxdWlyZXMKKyAgICAgIGZvciBpdHMgc3RhdGUuIE5vbi1uZWdhdGl2ZSBgYG1fc2l6ZWBgIGlzIHJlcXVpcmVkIGZvciBtdWx0aS1waGFzZQorICAgICAgaW5pdGlhbGl6YXRpb24uCiAKICAgICAgIFNlZSA6UEVQOmAzMTIxYCBmb3IgbW9yZSBkZXRhaWxzLgogCkBAIC0yMTAsOSArMTc3LDE4IEBACiAgICAgICBBIHBvaW50ZXIgdG8gYSB0YWJsZSBvZiBtb2R1bGUtbGV2ZWwgZnVuY3Rpb25zLCBkZXNjcmliZWQgYnkKICAgICAgIDpjOnR5cGU6YFB5TWV0aG9kRGVmYCB2YWx1ZXMuICBDYW4gYmUgKk5VTEwqIGlmIG5vIGZ1bmN0aW9ucyBhcmUgcHJlc2VudC4KIAotICAgLi4gYzptZW1iZXI6OiBpbnF1aXJ5IG1fcmVsb2FkCisgICAuLiBjOm1lbWJlcjo6IFB5TW9kdWxlRGVmX1Nsb3QqIG1fc2xvdHMKIAotICAgICAgQ3VycmVudGx5IHVudXNlZCwgc2hvdWxkIGJlICpOVUxMKi4KKyAgICAgIEFuIGFycmF5IG9mIHNsb3QgZGVmaW5pdGlvbnMgZm9yIG11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uLCB0ZXJtaW5hdGVkIGJ5CisgICAgICBhIGBgezAsIE5VTEx9YGAgZW50cnkuCisgICAgICBXaGVuIHVzaW5nIHNpbmdsZS1waGFzZSBpbml0aWFsaXphdGlvbiwgKm1fc2xvdHMqIG11c3QgYmUgKk5VTEwqLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorCisgICAgICAgICBQcmlvciB0byB2ZXJzaW9uIDMuNSwgdGhpcyBtZW1iZXIgd2FzIGFsd2F5cyBzZXQgdG8gKk5VTEwqLAorICAgICAgICAgYW5kIHdhcyBkZWZpbmVkIGFzOgorCisgICAgICAgICAgIC4uIGM6bWVtYmVyOjogaW5xdWlyeSBtX3JlbG9hZAogCiAgICAuLiBjOm1lbWJlcjo6IHRyYXZlcnNlcHJvYyBtX3RyYXZlcnNlCiAKQEAgLTIyOSw2ICsyMDUsMjA0IEBACiAgICAgICBBIGZ1bmN0aW9uIHRvIGNhbGwgZHVyaW5nIGRlYWxsb2NhdGlvbiBvZiB0aGUgbW9kdWxlIG9iamVjdCwgb3IgKk5VTEwqIGlmCiAgICAgICBub3QgbmVlZGVkLgogCitTaW5nbGUtcGhhc2UgaW5pdGlhbGl6YXRpb24KKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorCitUaGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIG1heSBjcmVhdGUgYW5kIHJldHVybiB0aGUgbW9kdWxlIG9iamVjdAorZGlyZWN0bHkuIFRoaXMgaXMgcmVmZXJyZWQgdG8gYXMgInNpbmdsZS1waGFzZSBpbml0aWFsaXphdGlvbiIsIGFuZCB1c2VzIG9uZQorb2YgdGhlIGZvbGxvd2luZyB0d28gbW9kdWxlIGNyZWF0aW9uIGZ1bmN0aW9uczoKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9DcmVhdGUoUHlNb2R1bGVEZWYgKmRlZikKKworICAgQ3JlYXRlIGEgbmV3IG1vZHVsZSBvYmplY3QsIGdpdmVuIHRoZSBkZWZpbml0aW9uIGluICpkZWYqLiAgVGhpcyBiZWhhdmVzCisgICBsaWtlIDpjOmZ1bmM6YFB5TW9kdWxlX0NyZWF0ZTJgIHdpdGggKm1vZHVsZV9hcGlfdmVyc2lvbiogc2V0IHRvCisgICA6Y29uc3Q6YFBZVEhPTl9BUElfVkVSU0lPTmAuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9DcmVhdGUyKFB5TW9kdWxlRGVmICpkZWYsIGludCBtb2R1bGVfYXBpX3ZlcnNpb24pCisKKyAgIENyZWF0ZSBhIG5ldyBtb2R1bGUgb2JqZWN0LCBnaXZlbiB0aGUgZGVmaW5pdGlvbiBpbiAqZGVmKiwgYXNzdW1pbmcgdGhlCisgICBBUEkgdmVyc2lvbiAqbW9kdWxlX2FwaV92ZXJzaW9uKi4gIElmIHRoYXQgdmVyc2lvbiBkb2VzIG5vdCBtYXRjaCB0aGUgdmVyc2lvbgorICAgb2YgdGhlIHJ1bm5pbmcgaW50ZXJwcmV0ZXIsIGEgOmV4YzpgUnVudGltZVdhcm5pbmdgIGlzIGVtaXR0ZWQuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBNb3N0IHVzZXMgb2YgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNpbmcgOmM6ZnVuYzpgUHlNb2R1bGVfQ3JlYXRlYAorICAgICAgaW5zdGVhZDsgb25seSB1c2UgdGhpcyBpZiB5b3UgYXJlIHN1cmUgeW91IG5lZWQgaXQuCisKK0JlZm9yZSBpdCBpcyByZXR1cm5lZCBmcm9tIGluIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiwgdGhlIHJlc3VsdGluZyBtb2R1bGUKK29iamVjdCBpcyB0eXBpY2FsbHkgcG9wdWxhdGVkIHVzaW5nIGZ1bmN0aW9ucyBsaWtlIDpjOmZ1bmM6YFB5TW9kdWxlX0FkZE9iamVjdGAuCisKKy4uIF9tdWx0aS1waGFzZS1pbml0aWFsaXphdGlvbjoKKworTXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24KKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisKK0FuIGFsdGVybmF0ZSB3YXkgdG8gc3BlY2lmeSBleHRlbnNpb25zIGlzIHRvIHJlcXVlc3QgIm11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uIi4KK0V4dGVuc2lvbiBtb2R1bGVzIGNyZWF0ZWQgdGhpcyB3YXkgYmVoYXZlIG1vcmUgbGlrZSBQeXRob24gbW9kdWxlczogdGhlCitpbml0aWFsaXphdGlvbiBpcyBzcGxpdCBiZXR3ZWVuIHRoZSAqY3JlYXRpb24gcGhhc2UqLCB3aGVuIHRoZSBtb2R1bGUgb2JqZWN0CitpcyBjcmVhdGVkLCBhbmQgdGhlICpleGVjdXRpb24gcGhhc2UqLCB3aGVuIGl0IGlzIHBvcHVsYXRlZC4KK1RoZSBkaXN0aW5jdGlvbiBpcyBzaW1pbGFyIHRvIHRoZSA6cHk6bWV0aDpgX19uZXdfX2AgYW5kIDpweTptZXRoOmBfX2luaXRfX2AgbWV0aG9kcworb2YgY2xhc3Nlcy4KKworVW5saWtlIG1vZHVsZXMgY3JlYXRlZCB1c2luZyBzaW5nbGUtcGhhc2UgaW5pdGlhbGl6YXRpb24sIHRoZXNlIG1vZHVsZXMgYXJlIG5vdAorc2luZ2xldG9uczogaWYgdGhlICpzeXMubW9kdWxlcyogZW50cnkgaXMgcmVtb3ZlZCBhbmQgdGhlIG1vZHVsZSBpcyByZS1pbXBvcnRlZCwKK2EgbmV3IG1vZHVsZSBvYmplY3QgaXMgY3JlYXRlZCwgYW5kIHRoZSBvbGQgbW9kdWxlIGlzIHN1YmplY3QgdG8gbm9ybWFsIGdhcmJhZ2UKK2NvbGxlY3Rpb24gLS0gYXMgd2l0aCBQeXRob24gbW9kdWxlcy4KK0J5IGRlZmF1bHQsIG11bHRpcGxlIG1vZHVsZXMgY3JlYXRlZCBmcm9tIHRoZSBzYW1lIGRlZmluaXRpb24gc2hvdWxkIGJlCitpbmRlcGVuZGVudDogY2hhbmdlcyB0byBvbmUgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIG90aGVycy4KK1RoaXMgbWVhbnMgdGhhdCBhbGwgc3RhdGUgc2hvdWxkIGJlIHNwZWNpZmljIHRvIHRoZSBtb2R1bGUgb2JqZWN0ICh1c2luZyBlLmcuCit1c2luZyA6YzpmdW5jOmBQeU1vZHVsZV9HZXRTdGF0ZWApLCBvciBpdHMgY29udGVudHMgKHN1Y2ggYXMgdGhlIG1vZHVsZSdzCis6YXR0cjpgX19kaWN0X19gIG9yIGluZGl2aWR1YWwgY2xhc3NlcyBjcmVhdGVkIHdpdGggOmM6ZnVuYzpgUHlUeXBlX0Zyb21TcGVjYCkuCisKK0FsbCBtb2R1bGVzIGNyZWF0ZWQgdXNpbmcgbXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24gYXJlIGV4cGVjdGVkIHRvIHN1cHBvcnQKKzpyZWY6YHN1Yi1pbnRlcnByZXRlcnMgPHN1Yi1pbnRlcnByZXRlci1zdXBwb3J0PmAuIE1ha2luZyBzdXJlIG11bHRpcGxlIG1vZHVsZXMKK2FyZSBpbmRlcGVuZGVudCBpcyB0eXBpY2FsbHkgZW5vdWdoIHRvIGFjaGlldmUgdGhpcy4KKworVG8gcmVxdWVzdCBtdWx0aS1waGFzZSBpbml0aWFsaXphdGlvbiwgdGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uCisoUHlJbml0X21vZHVsZW5hbWUpIHJldHVybnMgYSA6Yzp0eXBlOmBQeU1vZHVsZURlZmAgaW5zdGFuY2Ugd2l0aCBub24tZW1wdHkKKzpjOm1lbWJlcjpgflB5TW9kdWxlRGVmLm1fc2xvdHNgLiBCZWZvcmUgaXQgaXMgcmV0dXJuZWQsIHRoZSBgYFB5TW9kdWxlRGVmYGAKK2luc3RhbmNlIG11c3QgYmUgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uOgorCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TW9kdWxlRGVmX0luaXQoUHlNb2R1bGVEZWYgKmRlZikKKworICAgRW5zdXJlcyBhIG1vZHVsZSBkZWZpbml0aW9uIGlzIGEgcHJvcGVybHkgaW5pdGlhbGl6ZWQgUHl0aG9uIG9iamVjdCB0aGF0CisgICBjb3JyZWN0bHkgcmVwb3J0cyBpdHMgdHlwZSBhbmQgcmVmZXJlbmNlIGNvdW50LgorCisgICBSZXR1cm5zICpkZWYqIGNhc3QgdG8gYGBQeU9iamVjdCpgYCwgb3IgKk5VTEwqIGlmIGFuIGVycm9yIG9jY3VycmVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworVGhlICptX3Nsb3RzKiBtZW1iZXIgb2YgdGhlIG1vZHVsZSBkZWZpbml0aW9uIG11c3QgcG9pbnQgdG8gYW4gYXJyYXkgb2YKK2BgUHlNb2R1bGVEZWZfU2xvdGBgIHN0cnVjdHVyZXM6CisKKy4uIGM6dHlwZTo6IFB5TW9kdWxlRGVmX1Nsb3QKKworICAgLi4gYzptZW1iZXI6OiBpbnQgc2xvdAorCisgICAgICBBIHNsb3QgSUQsIGNob3NlbiBmcm9tIHRoZSBhdmFpbGFibGUgdmFsdWVzIGV4cGxhaW5lZCBiZWxvdy4KKworICAgLi4gYzptZW1iZXI6OiB2b2lkKiB2YWx1ZQorCisgICAgICBWYWx1ZSBvZiB0aGUgc2xvdCwgd2hvc2UgbWVhbmluZyBkZXBlbmRzIG9uIHRoZSBzbG90IElELgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworVGhlICptX3Nsb3RzKiBhcnJheSBtdXN0IGJlIHRlcm1pbmF0ZWQgYnkgYSBzbG90IHdpdGggaWQgMC4KKworVGhlIGF2YWlsYWJsZSBzbG90IHR5cGVzIGFyZToKKworLi4gYzp2YXI6OiBQeV9tb2RfY3JlYXRlCisKKyAgIFNwZWNpZmllcyBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHRvIGNyZWF0ZSB0aGUgbW9kdWxlIG9iamVjdCBpdHNlbGYuCisgICBUaGUgKnZhbHVlKiBwb2ludGVyIG9mIHRoaXMgc2xvdCBtdXN0IHBvaW50IHRvIGEgZnVuY3Rpb24gb2YgdGhlIHNpZ25hdHVyZToKKworICAgLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBjcmVhdGVfbW9kdWxlKFB5T2JqZWN0ICpzcGVjLCBQeU1vZHVsZURlZiAqZGVmKQorCisgICBUaGUgZnVuY3Rpb24gcmVjZWl2ZXMgYSA6cHk6Y2xhc3M6YH5pbXBvcnRsaWIubWFjaGluZXJ5Lk1vZHVsZVNwZWNgCisgICBpbnN0YW5jZSwgYXMgZGVmaW5lZCBpbiA6UEVQOmA0NTFgLCBhbmQgdGhlIG1vZHVsZSBkZWZpbml0aW9uLgorICAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBtb2R1bGUgb2JqZWN0LCBvciBzZXQgYW4gZXJyb3IKKyAgIGFuZCByZXR1cm4gKk5VTEwqLgorCisgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBrZXB0IG1pbmltYWwuIEluIHBhcnRpY3VsYXIsIGl0IHNob3VsZCBub3QKKyAgIGNhbGwgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlLCBhcyB0cnlpbmcgdG8gaW1wb3J0IHRoZSBzYW1lIG1vZHVsZSBhZ2FpbiBtYXkKKyAgIHJlc3VsdCBpbiBhbiBpbmZpbml0ZSBsb29wLgorCisgICBNdWx0aXBsZSBgYFB5X21vZF9jcmVhdGVgYCBzbG90cyBtYXkgbm90IGJlIHNwZWNpZmllZCBpbiBvbmUgbW9kdWxlCisgICBkZWZpbml0aW9uLgorCisgICBJZiBgYFB5X21vZF9jcmVhdGVgYCBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgaW1wb3J0IG1hY2hpbmVyeSB3aWxsIGNyZWF0ZQorICAgYSBub3JtYWwgbW9kdWxlIG9iamVjdCB1c2luZyA6YzpmdW5jOmBQeU1vZHVsZV9OZXdgLiBUaGUgbmFtZSBpcyB0YWtlbiBmcm9tCisgICAqc3BlYyosIG5vdCB0aGUgZGVmaW5pdGlvbiwgdG8gYWxsb3cgZXh0ZW5zaW9uIG1vZHVsZXMgdG8gZHluYW1pY2FsbHkgYWRqdXN0CisgICB0byB0aGVpciBwbGFjZSBpbiB0aGUgbW9kdWxlIGhpZXJhcmNoeSBhbmQgYmUgaW1wb3J0ZWQgdW5kZXIgZGlmZmVyZW50CisgICBuYW1lcyB0aHJvdWdoIHN5bWxpbmtzLCBhbGwgd2hpbGUgc2hhcmluZyBhIHNpbmdsZSBtb2R1bGUgZGVmaW5pdGlvbi4KKworICAgVGhlcmUgaXMgbm8gcmVxdWlyZW1lbnQgZm9yIHRoZSByZXR1cm5lZCBvYmplY3QgdG8gYmUgYW4gaW5zdGFuY2Ugb2YKKyAgIDpjOnR5cGU6YFB5TW9kdWxlX1R5cGVgLiBBbnkgdHlwZSBjYW4gYmUgdXNlZCwgYXMgbG9uZyBhcyBpdCBzdXBwb3J0cworICAgc2V0dGluZyBhbmQgZ2V0dGluZyBpbXBvcnQtcmVsYXRlZCBhdHRyaWJ1dGVzLgorICAgSG93ZXZlciwgb25seSBgYFB5TW9kdWxlX1R5cGVgYCBpbnN0YW5jZXMgbWF5IGJlIHJldHVybmVkIGlmIHRoZQorICAgYGBQeU1vZHVsZURlZmBgIGhhcyBub24tKk5VTEwqIGBgbV9tZXRob2RzYGAsIGBgbV90cmF2ZXJzZWBgLCBgYG1fY2xlYXJgYCwKKyAgIGBgbV9mcmVlYGA7IG5vbi16ZXJvIGBgbV9zaXplYGA7IG9yIHNsb3RzIG90aGVyIHRoYW4gYGBQeV9tb2RfY3JlYXRlYGAuCisKKy4uIGM6dmFyOjogUHlfbW9kX2V4ZWMKKworICAgU3BlY2lmaWVzIGEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgdG8gKmV4ZWN1dGUqIHRoZSBtb2R1bGUuCisgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gZXhlY3V0aW5nIHRoZSBjb2RlIG9mIGEgUHl0aG9uIG1vZHVsZTogdHlwaWNhbGx5LAorICAgdGhpcyBmdW5jdGlvbiBhZGRzIGNsYXNzZXMgYW5kIGNvbnN0YW50cyB0byB0aGUgbW9kdWxlLgorICAgVGhlIHNpZ25hdHVyZSBvZiB0aGUgZnVuY3Rpb24gaXM6CisKKyAgIC4uIGM6ZnVuY3Rpb246OiBpbnQgZXhlY19tb2R1bGUoUHlPYmplY3QqIG1vZHVsZSkKKworICAgSWYgbXVsdGlwbGUgYGBQeV9tb2RfZXhlY2BgIHNsb3RzIGFyZSBzcGVjaWZpZWQsIHRoZXkgYXJlIHByb2Nlc3NlZCBpbiB0aGUKKyAgIG9yZGVyIHRoZXkgYXBwZWFyIGluIHRoZSAqbV9zbG90cyogYXJyYXkuCisKK1NlZSA6UEVQOmA0ODlgIGZvciBtb3JlIGRldGFpbHMgb24gbXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24uCisKK0xvdy1sZXZlbCBtb2R1bGUgY3JlYXRpb24gZnVuY3Rpb25zCisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorCitUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIHVuZGVyIHRoZSBob29kIHdoZW4gdXNpbmcgbXVsdGktcGhhc2UKK2luaXRpYWxpemF0aW9uLiBUaGV5IGNhbiBiZSB1c2VkIGRpcmVjdGx5LCBmb3IgZXhhbXBsZSB3aGVuIGNyZWF0aW5nIG1vZHVsZQorb2JqZWN0cyBkeW5hbWljYWxseS4gTm90ZSB0aGF0IGJvdGggYGBQeU1vZHVsZV9Gcm9tRGVmQW5kU3BlY2BgIGFuZAorYGBQeU1vZHVsZV9FeGVjRGVmYGAgbXVzdCBiZSBjYWxsZWQgdG8gZnVsbHkgaW5pdGlhbGl6ZSBhIG1vZHVsZS4KKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0ICogUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMoUHlNb2R1bGVEZWYgKmRlZiwgUHlPYmplY3QgKnNwZWMpCisKKyAgIENyZWF0ZSBhIG5ldyBtb2R1bGUgb2JqZWN0LCBnaXZlbiB0aGUgZGVmaW5pdGlvbiBpbiAqbW9kdWxlKiBhbmQgdGhlCisgICBNb2R1bGVTcGVjICpzcGVjKi4gIFRoaXMgYmVoYXZlcyBsaWtlIDpjOmZ1bmM6YFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjMmAKKyAgIHdpdGggKm1vZHVsZV9hcGlfdmVyc2lvbiogc2V0IHRvIDpjb25zdDpgUFlUSE9OX0FQSV9WRVJTSU9OYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCAqIFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjMihQeU1vZHVsZURlZiAqZGVmLCBQeU9iamVjdCAqc3BlYywgaW50IG1vZHVsZV9hcGlfdmVyc2lvbikKKworICAgQ3JlYXRlIGEgbmV3IG1vZHVsZSBvYmplY3QsIGdpdmVuIHRoZSBkZWZpbml0aW9uIGluICptb2R1bGUqIGFuZCB0aGUKKyAgIE1vZHVsZVNwZWMgKnNwZWMqLCBhc3N1bWluZyB0aGUgQVBJIHZlcnNpb24gKm1vZHVsZV9hcGlfdmVyc2lvbiouCisgICBJZiB0aGF0IHZlcnNpb24gZG9lcyBub3QgbWF0Y2ggdGhlIHZlcnNpb24gb2YgdGhlIHJ1bm5pbmcgaW50ZXJwcmV0ZXIsCisgICBhIDpleGM6YFJ1bnRpbWVXYXJuaW5nYCBpcyBlbWl0dGVkLgorCisgICAuLiBub3RlOjoKKworICAgICAgTW9zdCB1c2VzIG9mIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzaW5nIDpjOmZ1bmM6YFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjYAorICAgICAgaW5zdGVhZDsgb25seSB1c2UgdGhpcyBpZiB5b3UgYXJlIHN1cmUgeW91IG5lZWQgaXQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5TW9kdWxlX0V4ZWNEZWYoUHlPYmplY3QgKm1vZHVsZSwgUHlNb2R1bGVEZWYgKmRlZikKKworICAgUHJvY2VzcyBhbnkgZXhlY3V0aW9uIHNsb3RzICg6YzpkYXRhOmBQeV9tb2RfZXhlY2ApIGdpdmVuIGluICpkZWYqLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gYzpmdW5jdGlvbjo6IGludCBQeU1vZHVsZV9TZXREb2NTdHJpbmcoUHlPYmplY3QgKm1vZHVsZSwgY29uc3QgY2hhciAqZG9jc3RyaW5nKQorCisgICBTZXQgdGhlIGRvY3N0cmluZyBmb3IgKm1vZHVsZSogdG8gKmRvY3N0cmluZyouCisgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gY3JlYXRpbmcgYSBtb2R1bGUgZnJvbQorICAgYGBQeU1vZHVsZURlZmBgLCB1c2luZyBlaXRoZXIgYGBQeU1vZHVsZV9DcmVhdGVgYCBvcgorICAgYGBQeU1vZHVsZV9Gcm9tRGVmQW5kU3BlY2BgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gYzpmdW5jdGlvbjo6IGludCBQeU1vZHVsZV9BZGRGdW5jdGlvbnMoUHlPYmplY3QgKm1vZHVsZSwgUHlNZXRob2REZWYgKmZ1bmN0aW9ucykKKworICAgQWRkIHRoZSBmdW5jdGlvbnMgZnJvbSB0aGUgKk5VTEwqIHRlcm1pbmF0ZWQgKmZ1bmN0aW9ucyogYXJyYXkgdG8gKm1vZHVsZSouCisgICBSZWZlciB0byB0aGUgOmM6dHlwZTpgUHlNZXRob2REZWZgIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMgb24gaW5kaXZpZHVhbAorICAgZW50cmllcyAoZHVlIHRvIHRoZSBsYWNrIG9mIGEgc2hhcmVkIG1vZHVsZSBuYW1lc3BhY2UsIG1vZHVsZSBsZXZlbAorICAgImZ1bmN0aW9ucyIgaW1wbGVtZW50ZWQgaW4gQyB0eXBpY2FsbHkgcmVjZWl2ZSB0aGUgbW9kdWxlIGFzIHRoZWlyIGZpcnN0CisgICBwYXJhbWV0ZXIsIG1ha2luZyB0aGVtIHNpbWlsYXIgdG8gaW5zdGFuY2UgbWV0aG9kcyBvbiBQeXRob24gY2xhc3NlcykuCisgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gY3JlYXRpbmcgYSBtb2R1bGUgZnJvbQorICAgYGBQeU1vZHVsZURlZmBgLCB1c2luZyBlaXRoZXIgYGBQeU1vZHVsZV9DcmVhdGVgYCBvcgorICAgYGBQeU1vZHVsZV9Gcm9tRGVmQW5kU3BlY2BgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworU3VwcG9ydCBmdW5jdGlvbnMKKy4uLi4uLi4uLi4uLi4uLi4uCisKK1RoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gKGlmIHVzaW5nIHNpbmdsZSBwaGFzZSBpbml0aWFsaXphdGlvbikgb3IKK2EgZnVuY3Rpb24gY2FsbGVkIGZyb20gYSBtb2R1bGUgZXhlY3V0aW9uIHNsb3QgKGlmIHVzaW5nIG11bHRpLXBoYXNlCitpbml0aWFsaXphdGlvbiksIGNhbiB1c2UgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgdG8gaGVscCBpbml0aWFsaXplIHRoZSBtb2R1bGUKK3N0YXRlOgogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5TW9kdWxlX0FkZE9iamVjdChQeU9iamVjdCAqbW9kdWxlLCBjb25zdCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdmFsdWUpCiAKQEAgLTIzNiw3ICs0MTAsNiBAQAogICAgYmUgdXNlZCBmcm9tIHRoZSBtb2R1bGUncyBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gIFRoaXMgc3RlYWxzIGEgcmVmZXJlbmNlIHRvCiAgICAqdmFsdWUqLiAgUmV0dXJuIGBgLTFgYCBvbiBlcnJvciwgYGAwYGAgb24gc3VjY2Vzcy4KIAotCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5TW9kdWxlX0FkZEludENvbnN0YW50KFB5T2JqZWN0ICptb2R1bGUsIGNvbnN0IGNoYXIgKm5hbWUsIGxvbmcgdmFsdWUpCiAKICAgIEFkZCBhbiBpbnRlZ2VyIGNvbnN0YW50IHRvICptb2R1bGUqIGFzICpuYW1lKi4gIFRoaXMgY29udmVuaWVuY2UgZnVuY3Rpb24gY2FuIGJlCkBAIC0yNDgsNyArNDIxLDcgQEAKIAogICAgQWRkIGEgc3RyaW5nIGNvbnN0YW50IHRvICptb2R1bGUqIGFzICpuYW1lKi4gIFRoaXMgY29udmVuaWVuY2UgZnVuY3Rpb24gY2FuIGJlCiAgICB1c2VkIGZyb20gdGhlIG1vZHVsZSdzIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiAgVGhlIHN0cmluZyAqdmFsdWUqIG11c3QgYmUKLSAgIG51bGwtdGVybWluYXRlZC4gIFJldHVybiBgYC0xYGAgb24gZXJyb3IsIGBgMGBgIG9uIHN1Y2Nlc3MuCisgICAqTlVMTCotdGVybWluYXRlZC4gIFJldHVybiBgYC0xYGAgb24gZXJyb3IsIGBgMGBgIG9uIHN1Y2Nlc3MuCiAKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeU1vZHVsZV9BZGRJbnRNYWNybyhQeU9iamVjdCAqbW9kdWxlLCBtYWNybykKQEAgLTI2MiwzICs0MzUsMzYgQEAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlNb2R1bGVfQWRkU3RyaW5nTWFjcm8oUHlPYmplY3QgKm1vZHVsZSwgbWFjcm8pCiAKICAgIEFkZCBhIHN0cmluZyBjb25zdGFudCB0byAqbW9kdWxlKi4KKworCitNb2R1bGUgbG9va3VwCiteXl5eXl5eXl5eXl5eCisKK1NpbmdsZS1waGFzZSBpbml0aWFsaXphdGlvbiBjcmVhdGVzIHNpbmdsZXRvbiBtb2R1bGVzIHRoYXQgY2FuIGJlIGxvb2tlZCB1cAoraW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgaW50ZXJwcmV0ZXIuIFRoaXMgYWxsb3dzIHRoZSBtb2R1bGUgb2JqZWN0IHRvIGJlCityZXRyaWV2ZWQgbGF0ZXIgd2l0aCBvbmx5IGEgcmVmZXJlbmNlIHRvIHRoZSBtb2R1bGUgZGVmaW5pdGlvbi4KKworVGhlc2UgZnVuY3Rpb25zIHdpbGwgbm90IHdvcmsgb24gbW9kdWxlcyBjcmVhdGVkIHVzaW5nIG11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uLAorc2luY2UgbXVsdGlwbGUgc3VjaCBtb2R1bGVzIGNhbiBiZSBjcmVhdGVkIGZyb20gYSBzaW5nbGUgZGVmaW5pdGlvbi4KKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVN0YXRlX0ZpbmRNb2R1bGUoUHlNb2R1bGVEZWYgKmRlZikKKworICAgUmV0dXJucyB0aGUgbW9kdWxlIG9iamVjdCB0aGF0IHdhcyBjcmVhdGVkIGZyb20gKmRlZiogZm9yIHRoZSBjdXJyZW50IGludGVycHJldGVyLgorICAgVGhpcyBtZXRob2QgcmVxdWlyZXMgdGhhdCB0aGUgbW9kdWxlIG9iamVjdCBoYXMgYmVlbiBhdHRhY2hlZCB0byB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUgd2l0aAorICAgOmM6ZnVuYzpgUHlTdGF0ZV9BZGRNb2R1bGVgIGJlZm9yZWhhbmQuIEluIGNhc2UgdGhlIGNvcnJlc3BvbmRpbmcgbW9kdWxlIG9iamVjdCBpcyBub3QKKyAgIGZvdW5kIG9yIGhhcyBub3QgYmVlbiBhdHRhY2hlZCB0byB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUgeWV0LCBpdCByZXR1cm5zICpOVUxMKi4KKworLi4gYzpmdW5jdGlvbjo6IGludCBQeVN0YXRlX0FkZE1vZHVsZShQeU9iamVjdCAqbW9kdWxlLCBQeU1vZHVsZURlZiAqZGVmKQorCisgICBBdHRhY2hlcyB0aGUgbW9kdWxlIG9iamVjdCBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIHRvIHRoZSBpbnRlcnByZXRlciBzdGF0ZS4gVGhpcyBhbGxvd3MKKyAgIHRoZSBtb2R1bGUgb2JqZWN0IHRvIGJlIGFjY2Vzc2libGUgdmlhIDpjOmZ1bmM6YFB5U3RhdGVfRmluZE1vZHVsZWAuCisKKyAgIE9ubHkgZWZmZWN0aXZlIG9uIG1vZHVsZXMgY3JlYXRlZCB1c2luZyBzaW5nbGUtcGhhc2UgaW5pdGlhbGl6YXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5U3RhdGVfUmVtb3ZlTW9kdWxlKFB5TW9kdWxlRGVmICpkZWYpCisKKyAgIFJlbW92ZXMgdGhlIG1vZHVsZSBvYmplY3QgY3JlYXRlZCBmcm9tICpkZWYqIGZyb20gdGhlIGludGVycHJldGVyIHN0YXRlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9udW1iZXIucnN0IGIvRG9jL2MtYXBpL251bWJlci5yc3QKaW5kZXggMjE5NTFjMy4uOWJjYjY0OSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL251bWJlci5yc3QKKysrIGIvRG9jL2MtYXBpL251bWJlci5yc3QKQEAgLTMwLDYgKzMwLDE0IEBACiAgICB0aGUgZXF1aXZhbGVudCBvZiB0aGUgUHl0aG9uIGV4cHJlc3Npb24gYGBvMSAqIG8yYGAuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU51bWJlcl9NYXRyaXhNdWx0aXBseShQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMikKKworICAgUmV0dXJucyB0aGUgcmVzdWx0IG9mIG1hdHJpeCBtdWx0aXBsaWNhdGlvbiBvbiAqbzEqIGFuZCAqbzIqLCBvciAqTlVMTCogb24KKyAgIGZhaWx1cmUuICBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBQeXRob24gZXhwcmVzc2lvbiBgYG8xIEAgbzJgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU51bWJlcl9GbG9vckRpdmlkZShQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMikKIAogICAgUmV0dXJuIHRoZSBmbG9vciBvZiAqbzEqIGRpdmlkZWQgYnkgKm8yKiwgb3IgKk5VTEwqIG9uIGZhaWx1cmUuICBUaGlzIGlzCkBAIC0xNDYsNiArMTU0LDE1IEBACiAgICB0aGUgUHl0aG9uIHN0YXRlbWVudCBgYG8xICo9IG8yYGAuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU51bWJlcl9JblBsYWNlTWF0cml4TXVsdGlwbHkoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIpCisKKyAgIFJldHVybnMgdGhlIHJlc3VsdCBvZiBtYXRyaXggbXVsdGlwbGljYXRpb24gb24gKm8xKiBhbmQgKm8yKiwgb3IgKk5VTEwqIG9uCisgICBmYWlsdXJlLiAgVGhlIG9wZXJhdGlvbiBpcyBkb25lICppbi1wbGFjZSogd2hlbiAqbzEqIHN1cHBvcnRzIGl0LiAgVGhpcyBpcworICAgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIFB5dGhvbiBzdGF0ZW1lbnQgYGBvMSBAPSBvMmBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZShQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMikKIAogICAgUmV0dXJucyB0aGUgbWF0aGVtYXRpY2FsIGZsb29yIG9mIGRpdmlkaW5nICpvMSogYnkgKm8yKiwgb3IgKk5VTEwqIG9uIGZhaWx1cmUuCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvb2JqZWN0LnJzdCBiL0RvYy9jLWFwaS9vYmplY3QucnN0CmluZGV4IDk3YjQ1YjEuLmI3NjFjODAgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9vYmplY3QucnN0CisrKyBiL0RvYy9jLWFwaS9vYmplY3QucnN0CkBAIC02OCwyNSArNjgsMzUgQEAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlPYmplY3RfU2V0QXR0cihQeU9iamVjdCAqbywgUHlPYmplY3QgKmF0dHJfbmFtZSwgUHlPYmplY3QgKnYpCiAKICAgIFNldCB0aGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBuYW1lZCAqYXR0cl9uYW1lKiwgZm9yIG9iamVjdCAqbyosIHRvIHRoZSB2YWx1ZQotICAgKnYqLiBSZXR1cm5zIGBgLTFgYCBvbiBmYWlsdXJlLiAgVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiB0aGUgUHl0aG9uIHN0YXRlbWVudAorICAgKnYqLiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBgYC0xYGAgb24gZmFpbHVyZTsKKyAgIHJldHVybiBgYDBgYCBvbiBzdWNjZXNzLiAgVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiB0aGUgUHl0aG9uIHN0YXRlbWVudAogICAgYGBvLmF0dHJfbmFtZSA9IHZgYC4KIAorICAgSWYgKnYqIGlzICpOVUxMKiwgdGhlIGF0dHJpYnV0ZSBpcyBkZWxldGVkLCBob3dldmVyIHRoaXMgZmVhdHVyZSBpcworICAgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgdXNpbmcgOmM6ZnVuYzpgUHlPYmplY3RfRGVsQXR0cmAuCisKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeU9iamVjdF9TZXRBdHRyU3RyaW5nKFB5T2JqZWN0ICpvLCBjb25zdCBjaGFyICphdHRyX25hbWUsIFB5T2JqZWN0ICp2KQogCiAgICBTZXQgdGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgbmFtZWQgKmF0dHJfbmFtZSosIGZvciBvYmplY3QgKm8qLCB0byB0aGUgdmFsdWUKLSAgICp2Ki4gUmV0dXJucyBgYC0xYGAgb24gZmFpbHVyZS4gIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIFB5dGhvbiBzdGF0ZW1lbnQKKyAgICp2Ki4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gYGAtMWBgIG9uIGZhaWx1cmU7CisgICByZXR1cm4gYGAwYGAgb24gc3VjY2Vzcy4gIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIFB5dGhvbiBzdGF0ZW1lbnQKICAgIGBgby5hdHRyX25hbWUgPSB2YGAuCiAKKyAgIElmICp2KiBpcyAqTlVMTCosIHRoZSBhdHRyaWJ1dGUgaXMgZGVsZXRlZCwgaG93ZXZlciB0aGlzIGZlYXR1cmUgaXMKKyAgIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIHVzaW5nIDpjOmZ1bmM6YFB5T2JqZWN0X0RlbEF0dHJTdHJpbmdgLgorCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlPYmplY3RfR2VuZXJpY1NldEF0dHIoUHlPYmplY3QgKm8sIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqdmFsdWUpCiAKLSAgIEdlbmVyaWMgYXR0cmlidXRlIHNldHRlciBmdW5jdGlvbiB0aGF0IGlzIG1lYW50IHRvIGJlIHB1dCBpbnRvIGEgdHlwZQotICAgb2JqZWN0J3MgYGB0cF9zZXRhdHRyb2BgIHNsb3QuICBJdCBsb29rcyBmb3IgYSBkYXRhIGRlc2NyaXB0b3IgaW4gdGhlCisgICBHZW5lcmljIGF0dHJpYnV0ZSBzZXR0ZXIgYW5kIGRlbGV0ZXIgZnVuY3Rpb24gdGhhdCBpcyBtZWFudAorICAgdG8gYmUgcHV0IGludG8gYSB0eXBlIG9iamVjdCdzIDpjOm1lbWJlcjpgflB5VHlwZU9iamVjdC50cF9zZXRhdHRyb2AKKyAgIHNsb3QuICBJdCBsb29rcyBmb3IgYSBkYXRhIGRlc2NyaXB0b3IgaW4gdGhlCiAgICBkaWN0aW9uYXJ5IG9mIGNsYXNzZXMgaW4gdGhlIG9iamVjdCdzIE1STywgYW5kIGlmIGZvdW5kIGl0IHRha2VzIHByZWZlcmVuY2UKLSAgIG92ZXIgc2V0dGluZyB0aGUgYXR0cmlidXRlIGluIHRoZSBpbnN0YW5jZSBkaWN0aW9uYXJ5LiBPdGhlcndpc2UsIHRoZQotICAgYXR0cmlidXRlIGlzIHNldCBpbiB0aGUgb2JqZWN0J3MgOmF0dHI6YH5vYmplY3QuX19kaWN0X19gIChpZiBwcmVzZW50KS4KLSAgIE90aGVyd2lzZSwgYW4gOmV4YzpgQXR0cmlidXRlRXJyb3JgIGlzIHJhaXNlZCBhbmQgYGAtMWBgIGlzIHJldHVybmVkLgorICAgb3ZlciBzZXR0aW5nIG9yIGRlbGV0aW5nIHRoZSBhdHRyaWJ1dGUgaW4gdGhlIGluc3RhbmNlIGRpY3Rpb25hcnkuIE90aGVyd2lzZSwgdGhlCisgICBhdHRyaWJ1dGUgaXMgc2V0IG9yIGRlbGV0ZWQgaW4gdGhlIG9iamVjdCdzIDphdHRyOmB+b2JqZWN0Ll9fZGljdF9fYCAoaWYgcHJlc2VudCkuCisgICBPbiBzdWNjZXNzLCBgYDBgYCBpcyByZXR1cm5lZCwgb3RoZXJ3aXNlIGFuIDpleGM6YEF0dHJpYnV0ZUVycm9yYAorICAgaXMgcmFpc2VkIGFuZCBgYC0xYGAgaXMgcmV0dXJuZWQuCiAKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeU9iamVjdF9EZWxBdHRyKFB5T2JqZWN0ICpvLCBQeU9iamVjdCAqYXR0cl9uYW1lKQpAQCAtMzc4LDcgKzM4OCw4IEBACiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlPYmplY3RfU2V0SXRlbShQeU9iamVjdCAqbywgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnYpCiAKLSAgIE1hcCB0aGUgb2JqZWN0ICprZXkqIHRvIHRoZSB2YWx1ZSAqdiouICBSZXR1cm5zIGBgLTFgYCBvbiBmYWlsdXJlLiAgVGhpcyBpcyB0aGUKKyAgIE1hcCB0aGUgb2JqZWN0ICprZXkqIHRvIHRoZSB2YWx1ZSAqdiouICBSYWlzZSBhbiBleGNlcHRpb24gYW5kCisgICByZXR1cm4gYGAtMWBgIG9uIGZhaWx1cmU7IHJldHVybiBgYDBgYCBvbiBzdWNjZXNzLiAgVGhpcyBpcyB0aGUKICAgIGVxdWl2YWxlbnQgb2YgdGhlIFB5dGhvbiBzdGF0ZW1lbnQgYGBvW2tleV0gPSB2YGAuCiAKIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3NlcXVlbmNlLnJzdCBiL0RvYy9jLWFwaS9zZXF1ZW5jZS5yc3QKaW5kZXggNTk2MGRiOS4uZjE4MjVmMCAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3NlcXVlbmNlLnJzdAorKysgYi9Eb2MvYy1hcGkvc2VxdWVuY2UucnN0CkBAIC02MiwxMCArNjIsMTQgQEAKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeVNlcXVlbmNlX1NldEl0ZW0oUHlPYmplY3QgKm8sIFB5X3NzaXplX3QgaSwgUHlPYmplY3QgKnYpCiAKLSAgIEFzc2lnbiBvYmplY3QgKnYqIHRvIHRoZSAqaSpcIHRoIGVsZW1lbnQgb2YgKm8qLiAgUmV0dXJucyBgYC0xYGAgb24gZmFpbHVyZS4gIFRoaXMKKyAgIEFzc2lnbiBvYmplY3QgKnYqIHRvIHRoZSAqaSpcIHRoIGVsZW1lbnQgb2YgKm8qLiAgUmFpc2UgYW4gZXhjZXB0aW9uCisgICBhbmQgcmV0dXJuIGBgLTFgYCBvbiBmYWlsdXJlOyByZXR1cm4gYGAwYGAgb24gc3VjY2Vzcy4gIFRoaXMKICAgIGlzIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBQeXRob24gc3RhdGVtZW50IGBgb1tpXSA9IHZgYC4gIFRoaXMgZnVuY3Rpb24gKmRvZXMKICAgIG5vdCogc3RlYWwgYSByZWZlcmVuY2UgdG8gKnYqLgogCisgICBJZiAqdiogaXMgKk5VTEwqLCB0aGUgZWxlbWVudCBpcyBkZWxldGVkLCBob3dldmVyIHRoaXMgZmVhdHVyZSBpcworICAgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgdXNpbmcgOmM6ZnVuYzpgUHlTZXF1ZW5jZV9EZWxJdGVtYC4KKwogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5U2VxdWVuY2VfRGVsSXRlbShQeU9iamVjdCAqbywgUHlfc3NpemVfdCBpKQogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvc3lzLnJzdCBiL0RvYy9jLWFwaS9zeXMucnN0CmluZGV4IDdjZWFkMDcuLjNkODNiMjcgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9zeXMucnN0CisrKyBiL0RvYy9jLWFwaS9zeXMucnN0CkBAIC00Nyw2ICs0Nyw2MCBAQAogICAgbm90IGNhbGwgdGhvc2UgZnVuY3Rpb25zIGRpcmVjdGx5ISAgOmM6dHlwZTpgUHlPU19zaWdoYW5kbGVyX3RgIGlzIGEgdHlwZWRlZgogICAgYWxpYXMgZm9yIDpjOnR5cGU6YHZvaWQgKFwqKShpbnQpYC4KIAorLi4gYzpmdW5jdGlvbjo6IHdjaGFyX3QqIFB5X0RlY29kZUxvY2FsZShjb25zdCBjaGFyKiBhcmcsIHNpemVfdCAqc2l6ZSkKKworICAgRGVjb2RlIGEgYnl0ZSBzdHJpbmcgZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nIHdpdGggdGhlIDpyZWY6YHN1cnJvZ2F0ZWVzY2FwZQorICAgZXJyb3IgaGFuZGxlciA8c3Vycm9nYXRlZXNjYXBlPmA6IHVuZGVjb2RhYmxlIGJ5dGVzIGFyZSBkZWNvZGVkIGFzCisgICBjaGFyYWN0ZXJzIGluIHJhbmdlIFUrREM4MC4uVStEQ0ZGLiBJZiBhIGJ5dGUgc2VxdWVuY2UgY2FuIGJlIGRlY29kZWQgYXMgYQorICAgc3Vycm9nYXRlIGNoYXJhY3RlciwgZXNjYXBlIHRoZSBieXRlcyB1c2luZyB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yCisgICBoYW5kbGVyIGluc3RlYWQgb2YgZGVjb2RpbmcgdGhlbS4KKworICAgUmV0dXJuIGEgcG9pbnRlciB0byBhIG5ld2x5IGFsbG9jYXRlZCB3aWRlIGNoYXJhY3RlciBzdHJpbmcsIHVzZQorICAgOmM6ZnVuYzpgUHlNZW1fUmF3RnJlZWAgdG8gZnJlZSB0aGUgbWVtb3J5LiBJZiBzaXplIGlzIG5vdCBgYE5VTExgYCwgd3JpdGUKKyAgIHRoZSBudW1iZXIgb2Ygd2lkZSBjaGFyYWN0ZXJzIGV4Y2x1ZGluZyB0aGUgbnVsbCBjaGFyYWN0ZXIgaW50byBgYCpzaXplYGAKKworICAgUmV0dXJuIGBgTlVMTGBgIG9uIGRlY29kaW5nIGVycm9yIG9yIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yLiBJZiAqc2l6ZSogaXMKKyAgIG5vdCBgYE5VTExgYCwgYGAqc2l6ZWBgIGlzIHNldCB0byBgYChzaXplX3QpLTFgYCBvbiBtZW1vcnkgZXJyb3Igb3Igc2V0IHRvCisgICBgYChzaXplX3QpLTJgYCBvbiBkZWNvZGluZyBlcnJvci4KKworICAgRGVjb2RpbmcgZXJyb3JzIHNob3VsZCBuZXZlciBoYXBwZW4sIHVubGVzcyB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGUgQworICAgbGlicmFyeS4KKworICAgVXNlIHRoZSA6YzpmdW5jOmBQeV9FbmNvZGVMb2NhbGVgIGZ1bmN0aW9uIHRvIGVuY29kZSB0aGUgY2hhcmFjdGVyIHN0cmluZworICAgYmFjayB0byBhIGJ5dGUgc3RyaW5nLgorCisgICAuLiBzZWVhbHNvOjoKKworICAgICAgVGhlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYCBhbmQKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplYCBmdW5jdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKKy4uIGM6ZnVuY3Rpb246OiBjaGFyKiBQeV9FbmNvZGVMb2NhbGUoY29uc3Qgd2NoYXJfdCAqdGV4dCwgc2l6ZV90ICplcnJvcl9wb3MpCisKKyAgIEVuY29kZSBhIHdpZGUgY2hhcmFjdGVyIHN0cmluZyB0byB0aGUgbG9jYWxlIGVuY29kaW5nIHdpdGggdGhlCisgICA6cmVmOmBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlciA8c3Vycm9nYXRlZXNjYXBlPmA6IHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzCisgICBpbiB0aGUgcmFuZ2UgVStEQzgwLi5VK0RDRkYgYXJlIGNvbnZlcnRlZCB0byBieXRlcyAweDgwLi4weEZGLgorCisgICBSZXR1cm4gYSBwb2ludGVyIHRvIGEgbmV3bHkgYWxsb2NhdGVkIGJ5dGUgc3RyaW5nLCB1c2UgOmM6ZnVuYzpgUHlNZW1fRnJlZWAKKyAgIHRvIGZyZWUgdGhlIG1lbW9yeS4gUmV0dXJuIGBgTlVMTGBgIG9uIGVuY29kaW5nIGVycm9yIG9yIG1lbW9yeSBhbGxvY2F0aW9uCisgICBlcnJvcgorCisgICBJZiBlcnJvcl9wb3MgaXMgbm90IGBgTlVMTGBgLCBgYCplcnJvcl9wb3NgYCBpcyBzZXQgdG8gdGhlIGluZGV4IG9mIHRoZQorICAgaW52YWxpZCBjaGFyYWN0ZXIgb24gZW5jb2RpbmcgZXJyb3IsIG9yIHNldCB0byBgYChzaXplX3QpLTFgYCBvdGhlcndpc2UuCisKKyAgIFVzZSB0aGUgOmM6ZnVuYzpgUHlfRGVjb2RlTG9jYWxlYCBmdW5jdGlvbiB0byBkZWNvZGUgdGhlIGJ5dGVzIHN0cmluZyBiYWNrCisgICB0byBhIHdpZGUgY2hhcmFjdGVyIHN0cmluZy4KKworICAgLi4gc2VlYWxzbzo6CisKKyAgICAgIFRoZSA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0YCBhbmQKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVMb2NhbGVgIGZ1bmN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gX3N5c3RlbWZ1bmN0aW9uczoKIAogU3lzdGVtIEZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3R5cGVvYmoucnN0IGIvRG9jL2MtYXBpL3R5cGVvYmoucnN0CmluZGV4IDVkZThiZTAuLmFjNTg5YjggMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS90eXBlb2JqLnJzdAorKysgYi9Eb2MvYy1hcGkvdHlwZW9iai5yc3QKQEAgLTIwOCwyMSArMjA4LDI3IEBACiAKIC4uIGM6bWVtYmVyOjogc2V0YXR0cmZ1bmMgUHlUeXBlT2JqZWN0LnRwX3NldGF0dHIKIAotICAgQW4gb3B0aW9uYWwgcG9pbnRlciB0byB0aGUgc2V0LWF0dHJpYnV0ZS1zdHJpbmcgZnVuY3Rpb24uCisgICBBbiBvcHRpb25hbCBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiBmb3Igc2V0dGluZyBhbmQgZGVsZXRpbmcgYXR0cmlidXRlcy4KIAogICAgVGhpcyBmaWVsZCBpcyBkZXByZWNhdGVkLiAgV2hlbiBpdCBpcyBkZWZpbmVkLCBpdCBzaG91bGQgcG9pbnQgdG8gYSBmdW5jdGlvbgogICAgdGhhdCBhY3RzIHRoZSBzYW1lIGFzIHRoZSA6YzptZW1iZXI6YH5QeVR5cGVPYmplY3QudHBfc2V0YXR0cm9gIGZ1bmN0aW9uLCBidXQgdGFraW5nIGEgQyBzdHJpbmcKICAgIGluc3RlYWQgb2YgYSBQeXRob24gc3RyaW5nIG9iamVjdCB0byBnaXZlIHRoZSBhdHRyaWJ1dGUgbmFtZS4gIFRoZSBzaWduYXR1cmUgaXMKLSAgIHRoZSBzYW1lIGFzIGZvciA6YzpmdW5jOmBQeU9iamVjdF9TZXRBdHRyU3RyaW5nYC4KKyAgIHRoZSBzYW1lIGFzIGZvciA6YzpmdW5jOmBQeU9iamVjdF9TZXRBdHRyU3RyaW5nYCwgYnV0IHNldHRpbmcKKyAgICp2KiB0byAqTlVMTCogdG8gZGVsZXRlIGFuIGF0dHJpYnV0ZSBtdXN0IGJlIHN1cHBvcnRlZC4KIAogICAgVGhpcyBmaWVsZCBpcyBpbmhlcml0ZWQgYnkgc3VidHlwZXMgdG9nZXRoZXIgd2l0aCA6YzptZW1iZXI6YH5QeVR5cGVPYmplY3QudHBfc2V0YXR0cm9gOiBhIHN1YnR5cGUKICAgIGluaGVyaXRzIGJvdGggOmM6bWVtYmVyOmB+UHlUeXBlT2JqZWN0LnRwX3NldGF0dHJgIGFuZCA6YzptZW1iZXI6YH5QeVR5cGVPYmplY3QudHBfc2V0YXR0cm9gIGZyb20gaXRzIGJhc2UgdHlwZSB3aGVuCiAgICB0aGUgc3VidHlwZSdzIDpjOm1lbWJlcjpgflB5VHlwZU9iamVjdC50cF9zZXRhdHRyYCBhbmQgOmM6bWVtYmVyOmB+UHlUeXBlT2JqZWN0LnRwX3NldGF0dHJvYCBhcmUgYm90aCAqTlVMTCouCiAKIAotLi4gYzptZW1iZXI6OiB2b2lkKiBQeVR5cGVPYmplY3QudHBfcmVzZXJ2ZWQKKy4uIGM6bWVtYmVyOjogUHlBc3luY01ldGhvZHMqIHRwX2FzX2FzeW5jCiAKLSAgIFJlc2VydmVkIHNsb3QsIGZvcm1lcmx5IGtub3duIGFzIHRwX2NvbXBhcmUuCisgICBQb2ludGVyIHRvIGFuIGFkZGl0aW9uYWwgc3RydWN0dXJlIHRoYXQgY29udGFpbnMgZmllbGRzIHJlbGV2YW50IG9ubHkgdG8KKyAgIG9iamVjdHMgd2hpY2ggaW1wbGVtZW50IDp0ZXJtOmBhd2FpdGFibGVgIGFuZCA6dGVybTpgYXN5bmNocm9ub3VzIGl0ZXJhdG9yYAorICAgcHJvdG9jb2xzIGF0IHRoZSBDLWxldmVsLiAgU2VlIDpyZWY6YGFzeW5jLXN0cnVjdHNgIGZvciBkZXRhaWxzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIEZvcm1lcmx5IGtub3duIGFzIGBgdHBfY29tcGFyZWBgIGFuZCBgYHRwX3Jlc2VydmVkYGAuCiAKIAogLi4gYzptZW1iZXI6OiByZXByZnVuYyBQeVR5cGVPYmplY3QudHBfcmVwcgpAQCAtMzQ2LDkgKzM1MiwxMCBAQAogCiAuLiBjOm1lbWJlcjo6IHNldGF0dHJvZnVuYyBQeVR5cGVPYmplY3QudHBfc2V0YXR0cm8KIAotICAgQW4gb3B0aW9uYWwgcG9pbnRlciB0byB0aGUgc2V0LWF0dHJpYnV0ZSBmdW5jdGlvbi4KKyAgIEFuIG9wdGlvbmFsIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIGZvciBzZXR0aW5nIGFuZCBkZWxldGluZyBhdHRyaWJ1dGVzLgogCi0gICBUaGUgc2lnbmF0dXJlIGlzIHRoZSBzYW1lIGFzIGZvciA6YzpmdW5jOmBQeU9iamVjdF9TZXRBdHRyYC4gIEl0IGlzIHVzdWFsbHkKKyAgIFRoZSBzaWduYXR1cmUgaXMgdGhlIHNhbWUgYXMgZm9yIDpjOmZ1bmM6YFB5T2JqZWN0X1NldEF0dHJgLCBidXQgc2V0dGluZworICAgKnYqIHRvICpOVUxMKiB0byBkZWxldGUgYW4gYXR0cmlidXRlIG11c3QgYmUgc3VwcG9ydGVkLiAgSXQgaXMgdXN1YWxseQogICAgY29udmVuaWVudCB0byBzZXQgdGhpcyBmaWVsZCB0byA6YzpmdW5jOmBQeU9iamVjdF9HZW5lcmljU2V0QXR0cmAsIHdoaWNoCiAgICBpbXBsZW1lbnRzIHRoZSBub3JtYWwgd2F5IG9mIHNldHRpbmcgb2JqZWN0IGF0dHJpYnV0ZXMuCiAKQEAgLTcxOSw3ICs3MjYsNyBAQAogICAgICAgdHlwZWRlZiBzdHJ1Y3QgUHlHZXRTZXREZWYgewogICAgICAgICAgIGNoYXIgKm5hbWU7ICAgIC8qIGF0dHJpYnV0ZSBuYW1lICovCiAgICAgICAgICAgZ2V0dGVyIGdldDsgICAgLyogQyBmdW5jdGlvbiB0byBnZXQgdGhlIGF0dHJpYnV0ZSAqLwotICAgICAgICAgIHNldHRlciBzZXQ7ICAgIC8qIEMgZnVuY3Rpb24gdG8gc2V0IHRoZSBhdHRyaWJ1dGUgKi8KKyAgICAgICAgICBzZXR0ZXIgc2V0OyAgICAvKiBDIGZ1bmN0aW9uIHRvIHNldCBvciBkZWxldGUgdGhlIGF0dHJpYnV0ZSAqLwogICAgICAgICAgIGNoYXIgKmRvYzsgICAgIC8qIG9wdGlvbmFsIGRvYyBzdHJpbmcgKi8KICAgICAgICAgICB2b2lkICpjbG9zdXJlOyAvKiBvcHRpb25hbCBhZGRpdGlvbmFsIGRhdGEgZm9yIGdldHRlciBhbmQgc2V0dGVyICovCiAgICAgICB9IFB5R2V0U2V0RGVmOwpAQCAtNzcwLDEyICs3NzcsMTQgQEAKIAogLi4gYzptZW1iZXI6OiBkZXNjcnNldGZ1bmMgUHlUeXBlT2JqZWN0LnRwX2Rlc2NyX3NldAogCi0gICBBbiBvcHRpb25hbCBwb2ludGVyIHRvIGEgImRlc2NyaXB0b3Igc2V0IiBmdW5jdGlvbi4KKyAgIEFuIG9wdGlvbmFsIHBvaW50ZXIgdG8gYSBmdW5jdGlvbiBmb3Igc2V0dGluZyBhbmQgZGVsZXRpbmcKKyAgIGEgZGVzY3JpcHRvcidzIHZhbHVlLgogCiAgICBUaGUgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIDo6CiAKICAgICAgIGludCB0cF9kZXNjcl9zZXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICp2YWx1ZSk7CiAKKyAgIFRoZSAqdmFsdWUqIGFyZ3VtZW50IGlzIHNldCB0byAqTlVMTCogdG8gZGVsZXRlIHRoZSB2YWx1ZS4KICAgIFRoaXMgZmllbGQgaXMgaW5oZXJpdGVkIGJ5IHN1YnR5cGVzLgogCiAgICAuLiBYWFggZXhwbGFpbi4KQEAgLTExMTgsNiArMTEyNyw5IEBACiAgICAgICAgICAgICBiaW5hcnlmdW5jIG5iX2lucGxhY2VfdHJ1ZV9kaXZpZGU7CiAKICAgICAgICAgICAgIHVuYXJ5ZnVuYyBuYl9pbmRleDsKKworICAgICAgICAgICAgYmluYXJ5ZnVuYyBuYl9tYXRyaXhfbXVsdGlwbHk7CisgICAgICAgICAgICBiaW5hcnlmdW5jIG5iX2lucGxhY2VfbWF0cml4X211bHRpcGx5OwogICAgICAgIH0gUHlOdW1iZXJNZXRob2RzOwogCiAgICAuLiBub3RlOjoKQEAgLTExNjMsOSArMTE3NSwxMSBAQAogCiAuLiBjOm1lbWJlcjo6IG9iam9iamFyZ3Byb2MgUHlNYXBwaW5nTWV0aG9kcy5tcF9hc3Nfc3Vic2NyaXB0CiAKLSAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBieSA6YzpmdW5jOmBQeU9iamVjdF9TZXRJdGVtYCBhbmQgaGFzIHRoZSBzYW1lCi0gICBzaWduYXR1cmUuICBJZiB0aGlzIHNsb3QgaXMgKk5VTEwqLCB0aGUgb2JqZWN0IGRvZXMgbm90IHN1cHBvcnQgaXRlbQotICAgYXNzaWdubWVudC4KKyAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBieSA6YzpmdW5jOmBQeU9iamVjdF9TZXRJdGVtYCBhbmQKKyAgIDpjOmZ1bmM6YFB5T2JqZWN0X0RlbEl0ZW1gLiAgSXQgaGFzIHRoZSBzYW1lIHNpZ25hdHVyZSBhcworICAgOmM6ZnVuYzpgUHlPYmplY3RfU2V0SXRlbWAsIGJ1dCAqdiogY2FuIGFsc28gYmUgc2V0IHRvICpOVUxMKiB0byBkZWxldGUKKyAgIGFuIGl0ZW0uICBJZiB0aGlzIHNsb3QgaXMgKk5VTEwqLCB0aGUgb2JqZWN0IGRvZXMgbm90IHN1cHBvcnQgaXRlbQorICAgYXNzaWdubWVudCBhbmQgZGVsZXRpb24uCiAKIAogLi4gX3NlcXVlbmNlLXN0cnVjdHM6CkBAIC0xMjE0LDcgKzEyMjgsNyBAQAogCiAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkgOmM6ZnVuYzpgUHlTZXF1ZW5jZV9TZXRJdGVtYCBhbmQgaGFzIHRoZSBzYW1lCiAgICBzaWduYXR1cmUuICBUaGlzIHNsb3QgbWF5IGJlIGxlZnQgdG8gKk5VTEwqIGlmIHRoZSBvYmplY3QgZG9lcyBub3Qgc3VwcG9ydAotICAgaXRlbSBhc3NpZ25tZW50LgorICAgaXRlbSBhc3NpZ25tZW50IGFuZCBkZWxldGlvbi4KIAogLi4gYzptZW1iZXI6OiBvYmpvYmpwcm9jIFB5U2VxdWVuY2VNZXRob2RzLnNxX2NvbnRhaW5zCiAKQEAgLTEzMjksMyArMTM0Myw1OCBAQAogCiAgICA6YzpmdW5jOmBQeUJ1ZmZlcl9SZWxlYXNlYCBpcyB0aGUgaW50ZXJmYWNlIGZvciB0aGUgY29uc3VtZXIgdGhhdAogICAgd3JhcHMgdGhpcyBmdW5jdGlvbi4KKworCisuLiBfYXN5bmMtc3RydWN0czoKKworCitBc3luYyBPYmplY3QgU3RydWN0dXJlcworPT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gc2VjdGlvbmF1dGhvcjo6IFl1cnkgU2VsaXZhbm92IDx5c2VsaXZhbm92QHNwcnltaXguY29tPgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gYzp0eXBlOjogUHlBc3luY01ldGhvZHMKKworICAgVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgcG9pbnRlcnMgdG8gdGhlIGZ1bmN0aW9ucyByZXF1aXJlZCB0byBpbXBsZW1lbnQKKyAgIDp0ZXJtOmBhd2FpdGFibGVgIGFuZCA6dGVybTpgYXN5bmNocm9ub3VzIGl0ZXJhdG9yYCBvYmplY3RzLgorCisgICBIZXJlIGlzIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbjo6CisKKyAgICAgICAgdHlwZWRlZiBzdHJ1Y3QgeworICAgICAgICAgICAgdW5hcnlmdW5jIGFtX2F3YWl0OworICAgICAgICAgICAgdW5hcnlmdW5jIGFtX2FpdGVyOworICAgICAgICAgICAgdW5hcnlmdW5jIGFtX2FuZXh0OworICAgICAgICB9IFB5QXN5bmNNZXRob2RzOworCisuLiBjOm1lbWJlcjo6IHVuYXJ5ZnVuYyBQeUFzeW5jTWV0aG9kcy5hbV9hd2FpdAorCisgICBUaGUgc2lnbmF0dXJlIG9mIHRoaXMgZnVuY3Rpb24gaXM6OgorCisgICAgICBQeU9iamVjdCAqYW1fYXdhaXQoUHlPYmplY3QgKnNlbGYpCisKKyAgIFRoZSByZXR1cm5lZCBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYXRvciwgaS5lLiA6YzpmdW5jOmBQeUl0ZXJfQ2hlY2tgIG11c3QKKyAgIHJldHVybiBgYDFgYCBmb3IgaXQuCisKKyAgIFRoaXMgc2xvdCBtYXkgYmUgc2V0IHRvICpOVUxMKiBpZiBhbiBvYmplY3QgaXMgbm90IGFuIDp0ZXJtOmBhd2FpdGFibGVgLgorCisuLiBjOm1lbWJlcjo6IHVuYXJ5ZnVuYyBQeUFzeW5jTWV0aG9kcy5hbV9haXRlcgorCisgICBUaGUgc2lnbmF0dXJlIG9mIHRoaXMgZnVuY3Rpb24gaXM6OgorCisgICAgICBQeU9iamVjdCAqYW1fYWl0ZXIoUHlPYmplY3QgKnNlbGYpCisKKyAgIE11c3QgcmV0dXJuIGFuIDp0ZXJtOmBhd2FpdGFibGVgIG9iamVjdC4gIFNlZSA6bWV0aDpgX19hbmV4dF9fYCBmb3IgZGV0YWlscy4KKworICAgVGhpcyBzbG90IG1heSBiZSBzZXQgdG8gKk5VTEwqIGlmIGFuIG9iamVjdCBkb2VzIG5vdCBpbXBsZW1lbnQKKyAgIGFzeW5jaHJvbm91cyBpdGVyYXRpb24gcHJvdG9jb2wuCisKKy4uIGM6bWVtYmVyOjogdW5hcnlmdW5jIFB5QXN5bmNNZXRob2RzLmFtX2FuZXh0CisKKyAgIFRoZSBzaWduYXR1cmUgb2YgdGhpcyBmdW5jdGlvbiBpczo6CisKKyAgICAgIFB5T2JqZWN0ICphbV9hbmV4dChQeU9iamVjdCAqc2VsZikKKworICAgTXVzdCByZXR1cm4gYW4gOnRlcm06YGF3YWl0YWJsZWAgb2JqZWN0LiAgU2VlIDptZXRoOmBfX2FuZXh0X19gIGZvciBkZXRhaWxzLgorICAgVGhpcyBzbG90IG1heSBiZSBzZXQgdG8gKk5VTEwqLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3VuaWNvZGUucnN0IGIvRG9jL2MtYXBpL3VuaWNvZGUucnN0CmluZGV4IGY3ZTk5ZDYuLjJlZWFkYjUgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS91bmljb2RlLnJzdAorKysgYi9Eb2MvYy1hcGkvdW5pY29kZS5yc3QKQEAgLTc2NSwxMSArNzY1LDEzIEBACiAgICAqZXJyb3JzKiBpcyBgYE5VTExgYC4gICpzdHIqIG11c3QgZW5kIHdpdGggYSBudWxsIGNoYXJhY3RlciBidXQKICAgIGNhbm5vdCBjb250YWluIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycy4KIAorICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYCB0byBkZWNvZGUgYSBzdHJpbmcgZnJvbQorICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAorICAgUHl0aG9uIHN0YXJ0dXApLgorCiAgICAuLiBzZWVhbHNvOjoKIAotICAgICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYCB0byBkZWNvZGUgYSBzdHJpbmcgZnJvbQotICAgICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAotICAgICAgUHl0aG9uIHN0YXJ0dXApLgorICAgICAgVGhlIDpjOmZ1bmM6YFB5X0RlY29kZUxvY2FsZWAgZnVuY3Rpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCkBAIC03OTAsMTEgKzc5MiwxMyBAQAogICAgKmVycm9ycyogaXMgYGBOVUxMYGAuIFJldHVybiBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4gKnN0ciogY2Fubm90CiAgICBjb250YWluIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycy4KIAorICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHRgIHRvIGVuY29kZSBhIHN0cmluZyB0bworICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAorICAgUHl0aG9uIHN0YXJ0dXApLgorCiAgICAuLiBzZWVhbHNvOjoKIAotICAgICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHRgIHRvIGVuY29kZSBhIHN0cmluZyB0bwotICAgICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAotICAgICAgUHl0aG9uIHN0YXJ0dXApLgorICAgICAgVGhlIDpjOmZ1bmM6YFB5X0VuY29kZUxvY2FsZWAgZnVuY3Rpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCkBAIC04MzksMTIgKzg0MywxNCBAQAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgogCisgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBpbml0aWFsaXplZCBhdCBzdGFydHVwIGZyb20gdGhlCisgICBsb2NhbGUgZW5jb2RpbmcgYW5kIGNhbm5vdCBiZSBtb2RpZmllZCBsYXRlci4gSWYgeW91IG5lZWQgdG8gZGVjb2RlIGEgc3RyaW5nCisgICBmcm9tIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZywgdXNlCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZWAuCisKICAgIC4uIHNlZWFsc286OgogCi0gICAgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBpbml0aWFsaXplZCBhdCBzdGFydHVwIGZyb20gdGhlCi0gICAgICBsb2NhbGUgZW5jb2RpbmcgYW5kIGNhbm5vdCBiZSBtb2RpZmllZCBsYXRlci4gSWYgeW91IG5lZWQgdG8gZGVjb2RlIGEKLSAgICAgIHN0cmluZyBmcm9tIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZywgdXNlCi0gICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZWAuCisgICAgICBUaGUgOmM6ZnVuYzpgUHlfRGVjb2RlTG9jYWxlYCBmdW5jdGlvbi4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFVzZSBgYCJzdHJpY3QiYGAgZXJyb3IgaGFuZGxlciBvbiBXaW5kb3dzLgpAQCAtODc0LDEyICs4ODAsMTMgQEAKICAgIElmIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgIGlzIG5vdCBzZXQsIGZhbGwgYmFjayB0byB0aGUKICAgIGxvY2FsZSBlbmNvZGluZy4KIAorICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgaW5pdGlhbGl6ZWQgYXQgc3RhcnR1cCBmcm9tIHRoZQorICAgbG9jYWxlIGVuY29kaW5nIGFuZCBjYW5ub3QgYmUgbW9kaWZpZWQgbGF0ZXIuIElmIHlvdSBuZWVkIHRvIGVuY29kZSBhIHN0cmluZworICAgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLCB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUxvY2FsZWAuCisKICAgIC4uIHNlZWFsc286OgogCi0gICAgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBpbml0aWFsaXplZCBhdCBzdGFydHVwIGZyb20gdGhlCi0gICAgICBsb2NhbGUgZW5jb2RpbmcgYW5kIGNhbm5vdCBiZSBtb2RpZmllZCBsYXRlci4gSWYgeW91IG5lZWQgdG8gZW5jb2RlIGEKLSAgICAgIHN0cmluZyB0byB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcsIHVzZQotICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUxvY2FsZWAuCisgICAgICBUaGUgOmM6ZnVuYzpgUHlfRW5jb2RlTG9jYWxlYCBmdW5jdGlvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKZGlmZiAtLWdpdCBhL0RvYy9jb25mLnB5IGIvRG9jL2NvbmYucHkKaW5kZXggZjgwM2RlMi4uM2U2NTZlYSAxMDA2NDQKLS0tIGEvRG9jL2NvbmYucHkKKysrIGIvRG9jL2NvbmYucHkKQEAgLTM2LDYgKzM2LDkgQEAKICMgUmVxdWlyZSBTcGhpbnggMS4yIGZvciBidWlsZC4KIG5lZWRzX3NwaGlueCA9ICcxLjInCiAKKyMgSWdub3JlIGFueSAucnN0IGZpbGVzIGluIHRoZSB2ZW52LyBkaXJlY3RvcnkuCitleGNsdWRlX3BhdHRlcm5zID0gWyd2ZW52LyonXQorCiAKICMgT3B0aW9ucyBmb3IgSFRNTCBvdXRwdXQKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEzNSw2ICsxMzgsMTEgQEAKICMgR2V0IExhVGVYIHRvIGhhbmRsZSBVbmljb2RlIGNvcnJlY3RseQogbGF0ZXhfZWxlbWVudHMgPSB7J2lucHV0ZW5jJzogcidcdXNlcGFja2FnZVt1dGY4eF17aW5wdXRlbmN9JywgJ3V0ZjhleHRyYSc6ICcnfQogCisjIE9wdGlvbnMgZm9yIEVwdWIgb3V0cHV0CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2VwdWJfYXV0aG9yID0gJ1B5dGhvbiBEb2N1bWVudGF0aW9uIEF1dGhvcnMnCitlcHViX3B1Ymxpc2hlciA9ICdQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbicKIAogIyBPcHRpb25zIGZvciB0aGUgY292ZXJhZ2UgY2hlY2tlcgogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jL2RhdGEvcmVmY291bnRzLmRhdCBiL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQKaW5kZXggNjAyNTYxNy4uZTM4ODE5NSAxMDA2NDQKLS0tIGEvRG9jL2RhdGEvcmVmY291bnRzLmRhdAorKysgYi9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0CkBAIC0zNDksNiArMzQ5LDExIEBACiBQeUVycl9Gb3JtYXQ6Y29uc3QgY2hhcio6Zm9ybWF0OjoKIFB5RXJyX0Zvcm1hdDo6Li4uOjoKIAorUHlFcnJfRm9ybWF0VjpQeU9iamVjdCo6Om51bGw6CitQeUVycl9Gb3JtYXRWOlB5T2JqZWN0KjpleGNlcHRpb246KzE6CitQeUVycl9Gb3JtYXRWOmNvbnN0IGNoYXIqOmZvcm1hdDo6CitQeUVycl9Gb3JtYXRWOnZhX2xpc3Q6dmFyZ3M6OgorCiBQeUVycl9XYXJuRXg6aW50Ojo6CiBQeUVycl9XYXJuRXg6UHlPYmplY3QqOmNhdGVnb3J5OjA6CiBQeUVycl9XYXJuRXg6Y29uc3QgY2hhcio6bWVzc2FnZTo6CkBAIC00ODYsNiArNDkxLDEyIEBACiBQeUdlbl9OZXc6UHlPYmplY3QqOjorMToKIFB5R2VuX05ldzpQeUZyYW1lT2JqZWN0KjpmcmFtZTowOgogCitQeUdlbl9OZXdXaXRoUXVhbE5hbWU6UHlPYmplY3QqOjorMToKK1B5R2VuX05ld1dpdGhRdWFsTmFtZTpQeUZyYW1lT2JqZWN0KjpmcmFtZTowOgorCitQeUNvcm9fTmV3OlB5T2JqZWN0Kjo6KzE6CitQeUNvcm9fTmV3OlB5RnJhbWVPYmplY3QqOmZyYW1lOjA6CisKIFB5X0luaXRNb2R1bGU6UHlPYmplY3QqOjowOgogUHlfSW5pdE1vZHVsZTpjb25zdCBjaGFyKjpuYW1lOjoKIFB5X0luaXRNb2R1bGU6UHlNZXRob2REZWZbXTptZXRob2RzOjoKZGlmZiAtLWdpdCBhL0RvYy9kaXN0dXRpbHMvYXBpcmVmLnJzdCBiL0RvYy9kaXN0dXRpbHMvYXBpcmVmLnJzdAppbmRleCBmNjdmYzVhLi41NTRkMmM4IDEwMDY0NAotLS0gYS9Eb2MvZGlzdHV0aWxzL2FwaXJlZi5yc3QKKysrIGIvRG9jL2Rpc3R1dGlscy9hcGlyZWYucnN0CkBAIC04NjgsMjMgKzg2OCwzMSBAQAogCiAgICBDcmVhdGUgYW4gYXJjaGl2ZSBmaWxlIChlZy4gYGB6aXBgYCBvciBgYHRhcmBgKS4gICpiYXNlX25hbWUqICBpcyB0aGUgbmFtZSBvZgogICAgdGhlIGZpbGUgdG8gY3JlYXRlLCBtaW51cyBhbnkgZm9ybWF0LXNwZWNpZmljIGV4dGVuc2lvbjsgICpmb3JtYXQqIGlzIHRoZQotICAgYXJjaGl2ZSBmb3JtYXQ6IG9uZSBvZiBgYHppcGBgLCBgYHRhcmBgLCAgYGB6dGFyYGAsIG9yIGBgZ3p0YXJgYC4gKnJvb3RfZGlyKiBpcwotICAgYSBkaXJlY3RvcnkgdGhhdCB3aWxsIGJlIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgYXJjaGl2ZTsgaWUuIHdlIHR5cGljYWxseQotICAgYGBjaGRpcmBgIGludG8gKnJvb3RfZGlyKiBiZWZvcmUgIGNyZWF0aW5nIHRoZSBhcmNoaXZlLiAgKmJhc2VfZGlyKiBpcyB0aGUKLSAgIGRpcmVjdG9yeSB3aGVyZSB3ZSBzdGFydCAgYXJjaGl2aW5nIGZyb207IGllLiAqYmFzZV9kaXIqIHdpbGwgYmUgdGhlIGNvbW1vbgotICAgcHJlZml4IG9mIGFsbCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgaW4gdGhlIGFyY2hpdmUuICAqcm9vdF9kaXIqIGFuZCAqYmFzZV9kaXIqCi0gICBib3RoIGRlZmF1bHQgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgYXJjaGl2ZSBmaWxlLgorICAgYXJjaGl2ZSBmb3JtYXQ6IG9uZSBvZiBgYHppcGBgLCBgYHRhcmBgLCBgYGd6dGFyYGAsIGBgYnp0YXJgYCwgYGB4enRhcmBgLCBvcgorICAgYGB6dGFyYGAuICpyb290X2RpciogaXMgYSBkaXJlY3RvcnkgdGhhdCB3aWxsIGJlIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUKKyAgIGFyY2hpdmU7IGllLiB3ZSB0eXBpY2FsbHkgYGBjaGRpcmBgIGludG8gKnJvb3RfZGlyKiBiZWZvcmUgIGNyZWF0aW5nIHRoZQorICAgYXJjaGl2ZS4gICpiYXNlX2RpciogaXMgdGhlIGRpcmVjdG9yeSB3aGVyZSB3ZSBzdGFydCAgYXJjaGl2aW5nIGZyb207IGllLgorICAgKmJhc2VfZGlyKiB3aWxsIGJlIHRoZSBjb21tb24gcHJlZml4IG9mIGFsbCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgaW4gdGhlCisgICBhcmNoaXZlLiAgKnJvb3RfZGlyKiBhbmQgKmJhc2VfZGlyKiBib3RoIGRlZmF1bHQgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorICAgUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgYXJjaGl2ZSBmaWxlLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGB4enRhcmBgIGZvcm1hdC4KIAogCiAuLiBmdW5jdGlvbjo6IG1ha2VfdGFyYmFsbChiYXNlX25hbWUsIGJhc2VfZGlyWywgY29tcHJlc3M9J2d6aXAnLCB2ZXJib3NlPTAsIGRyeV9ydW49MF0pCiAKICAgICdDcmVhdGUgYW4gKG9wdGlvbmFsIGNvbXByZXNzZWQpIGFyY2hpdmUgYXMgYSB0YXIgZmlsZSBmcm9tIGFsbCBmaWxlcyBpbiBhbmQKLSAgIHVuZGVyICpiYXNlX2RpciouICpjb21wcmVzcyogbXVzdCBiZSBgYCdnemlwJ2BgICh0aGUgZGVmYXVsdCksICBgYCdjb21wcmVzcydgYCwKLSAgIGBgJ2J6aXAyJ2BgLCBvciBgYE5vbmVgYC4gIEJvdGggOnByb2dyYW06YHRhcmAgYW5kIHRoZSBjb21wcmVzc2lvbiB1dGlsaXR5IG5hbWVkCi0gICBieSAqY29tcHJlc3MqIG11c3QgYmUgb24gdGhlICBkZWZhdWx0IHByb2dyYW0gc2VhcmNoIHBhdGgsIHNvIHRoaXMgaXMgcHJvYmFibHkKLSAgIFVuaXgtc3BlY2lmaWMuICBUaGUgIG91dHB1dCB0YXIgZmlsZSB3aWxsIGJlIG5hbWVkIDpmaWxlOmBiYXNlX2Rpci50YXJgLAotICAgcG9zc2libHkgcGx1cyB0aGUgYXBwcm9wcmlhdGUgY29tcHJlc3Npb24gZXh0ZW5zaW9uICg6ZmlsZTpgLmd6YCwgOmZpbGU6YC5iejJgCi0gICBvciA6ZmlsZTpgLlpgKS4gIFJldHVybiB0aGUgb3V0cHV0IGZpbGVuYW1lLgorICAgdW5kZXIgKmJhc2VfZGlyKi4gKmNvbXByZXNzKiBtdXN0IGJlIGBgJ2d6aXAnYGAgKHRoZSBkZWZhdWx0KSwKKyAgIGBgJ2J6aXAyJ2BgLCBgYCd4eidgYCwgYGAnY29tcHJlc3MnYGAsIG9yIGBgTm9uZWBgLiAgRm9yIHRoZSBgYCdjb21wcmVzcydgYAorICAgbWV0aG9kIHRoZSBjb21wcmVzc2lvbiB1dGlsaXR5IG5hbWVkIGJ5IDpwcm9ncmFtOmBjb21wcmVzc2AgbXVzdCBiZSBvbiB0aGUKKyAgIGRlZmF1bHQgcHJvZ3JhbSBzZWFyY2ggcGF0aCwgc28gdGhpcyBpcyBwcm9iYWJseSBVbml4LXNwZWNpZmljLiAgVGhlIG91dHB1dAorICAgdGFyIGZpbGUgd2lsbCBiZSBuYW1lZCA6ZmlsZTpgYmFzZV9kaXIudGFyYCwgcG9zc2libHkgcGx1cyB0aGUgYXBwcm9wcmlhdGUKKyAgIGNvbXByZXNzaW9uIGV4dGVuc2lvbiAoYGAuZ3pgYCwgYGAuYnoyYGAsIGBgLnh6YGAgb3IgYGAuWmBgKS4gIFJldHVybiB0aGUKKyAgIG91dHB1dCBmaWxlbmFtZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgeHpgYCBjb21wcmVzc2lvbi4KIAogCiAuLiBmdW5jdGlvbjo6IG1ha2VfemlwZmlsZShiYXNlX25hbWUsIGJhc2VfZGlyWywgdmVyYm9zZT0wLCBkcnlfcnVuPTBdKQpAQCAtMTE5MywxMiArMTIwMSwxMiBAQAogCiAuLiBmdW5jdGlvbjo6IGJ5dGVfY29tcGlsZShweV9maWxlc1ssIG9wdGltaXplPTAsIGZvcmNlPTAsIHByZWZpeD1Ob25lLCBiYXNlX2Rpcj1Ob25lLCB2ZXJib3NlPTEsIGRyeV9ydW49MCwgZGlyZWN0PU5vbmVdKQogCi0gICBCeXRlLWNvbXBpbGUgYSBjb2xsZWN0aW9uIG9mIFB5dGhvbiBzb3VyY2UgZmlsZXMgdG8gZWl0aGVyIDpmaWxlOmAucHljYCBvcgotICAgOmZpbGU6YC5weW9gIGZpbGVzIGluIGEgOmZpbGU6YF9fcHljYWNoZV9fYCBzdWJkaXJlY3RvcnkgKHNlZSA6cGVwOmAzMTQ3YCkuCisgICBCeXRlLWNvbXBpbGUgYSBjb2xsZWN0aW9uIG9mIFB5dGhvbiBzb3VyY2UgZmlsZXMgdG8gOmZpbGU6YC5weWNgIGZpbGVzIGluIGEKKyAgIDpmaWxlOmBfX3B5Y2FjaGVfX2Agc3ViZGlyZWN0b3J5IChzZWUgOnBlcDpgMzE0N2AgYW5kIDpwZXA6YDQ4OGApLgogICAgKnB5X2ZpbGVzKiBpcyBhIGxpc3Qgb2YgZmlsZXMgdG8gY29tcGlsZTsgYW55IGZpbGVzIHRoYXQgZG9uJ3QgZW5kIGluCiAgICA6ZmlsZTpgLnB5YCBhcmUgc2lsZW50bHkgc2tpcHBlZC4gICpvcHRpbWl6ZSogbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKIAotICAgKiBgYDBgYCAtIGRvbid0IG9wdGltaXplIChnZW5lcmF0ZSA6ZmlsZTpgLnB5Y2ApCisgICAqIGBgMGBgIC0gZG9uJ3Qgb3B0aW1pemUKICAgICogYGAxYGAgLSBub3JtYWwgb3B0aW1pemF0aW9uIChsaWtlIGBgcHl0aG9uIC1PYGApCiAgICAqIGBgMmBgIC0gZXh0cmEgb3B0aW1pemF0aW9uIChsaWtlIGBgcHl0aG9uIC1PT2BgKQogCkBAIC0xMjIyLDEwICsxMjMwLDEzIEBACiAgICBkb2luZywgbGVhdmUgaXQgc2V0IHRvIGBgTm9uZWBgLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMi4zCi0gICAgICBDcmVhdGUgYGAucHljYGAgb3IgYGAucHlvYGAgZmlsZXMgd2l0aCBhbiA6ZnVuYzpgaW1wb3J0IG1hZ2ljIHRhZworICAgICAgQ3JlYXRlIGBgLnB5Y2BgIGZpbGVzIHdpdGggYW4gOmZ1bmM6YGltcG9ydCBtYWdpYyB0YWcKICAgICAgIDxpbXAuZ2V0X3RhZz5gIGluIHRoZWlyIG5hbWUsIGluIGEgOmZpbGU6YF9fcHljYWNoZV9fYCBzdWJkaXJlY3RvcnkKICAgICAgIGluc3RlYWQgb2YgZmlsZXMgd2l0aG91dCB0YWcgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDogMy41CisgICAgICBDcmVhdGUgYGAucHljYGAgZmlsZXMgYWNjb3JkaW5nIHRvIDpwZXA6YDQ4OGAuCisKIAogLi4gZnVuY3Rpb246OiByZmM4MjJfZXNjYXBlKGhlYWRlcikKIApkaWZmIC0tZ2l0IGEvRG9jL2Rpc3R1dGlscy9idWlsdGRpc3QucnN0IGIvRG9jL2Rpc3R1dGlscy9idWlsdGRpc3QucnN0CmluZGV4IGM1ODI3YjYuLjUyM2QxZTAgMTAwNjQ0Ci0tLSBhL0RvYy9kaXN0dXRpbHMvYnVpbHRkaXN0LnJzdAorKysgYi9Eb2MvZGlzdHV0aWxzL2J1aWx0ZGlzdC5yc3QKQEAgLTcyLDEzICs3MiwxOSBAQAogKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSsKIHwgRm9ybWF0ICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICB8CiArPT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09KwotfCBgYGd6dGFyYGAgICB8IGd6aXBwZWQgdGFyIGZpbGUgICAgICAgICAgICAgfCAoMSksKDMpIHwKK3wgYGBnenRhcmBgICAgfCBnemlwcGVkIHRhciBmaWxlICAgICAgICAgICAgIHwgXCgxKSAgICB8CiB8ICAgICAgICAgICAgIHwgKDpmaWxlOmAudGFyLmd6YCkgICAgICAgICAgICB8ICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSsKK3wgYGBienRhcmBgICAgfCBiemlwcGVkIHRhciBmaWxlICAgICAgICAgICAgIHwgICAgICAgICB8Cit8ICAgICAgICAgICAgIHwgKDpmaWxlOmAudGFyLmJ6MmApICAgICAgICAgICB8ICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSsKK3wgYGB4enRhcmBgICAgfCB4emlwcGVkIHRhciBmaWxlICAgICAgICAgICAgIHwgICAgICAgICB8Cit8ICAgICAgICAgICAgIHwgKDpmaWxlOmAudGFyLnh6YCkgICAgICAgICAgICB8ICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSsKIHwgYGB6dGFyYGAgICAgfCBjb21wcmVzc2VkIHRhciBmaWxlICAgICAgICAgIHwgXCgzKSAgICB8CiB8ICAgICAgICAgICAgIHwgKDpmaWxlOmAudGFyLlpgKSAgICAgICAgICAgICB8ICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSsKLXwgYGB0YXJgYCAgICAgfCB0YXIgZmlsZSAoOmZpbGU6YC50YXJgKSAgICAgIHwgXCgzKSAgICB8Cit8IGBgdGFyYGAgICAgIHwgdGFyIGZpbGUgKDpmaWxlOmAudGFyYCkgICAgICB8ICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSsKIHwgYGB6aXBgYCAgICAgfCB6aXAgZmlsZSAoOmZpbGU6YC56aXBgKSAgICAgIHwgKDIpLCg0KSB8CiArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKwpAQCAtOTQsNiArMTAwLDkgQEAKIHwgYGBtc2lgYCAgICAgfCBNaWNyb3NvZnQgSW5zdGFsbGVyLiAgICAgICAgIHwgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKwogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgeHp0YXJgYCBmb3JtYXQuCisKIAogTm90ZXM6CiAKQEAgLTEwNCw4ICsxMTMsNyBAQAogICAgZGVmYXVsdCBvbiBXaW5kb3dzCiAKICgzKQotICAgcmVxdWlyZXMgZXh0ZXJuYWwgdXRpbGl0aWVzOiA6cHJvZ3JhbTpgdGFyYCBhbmQgcG9zc2libHkgb25lIG9mIDpwcm9ncmFtOmBnemlwYCwKLSAgIDpwcm9ncmFtOmBiemlwMmAsIG9yIDpwcm9ncmFtOmBjb21wcmVzc2AKKyAgIHJlcXVpcmVzIGV4dGVybmFsIDpwcm9ncmFtOmBjb21wcmVzc2AgdXRpbGl0eS4KIAogKDQpCiAgICByZXF1aXJlcyBlaXRoZXIgZXh0ZXJuYWwgOnByb2dyYW06YHppcGAgdXRpbGl0eSBvciA6bW9kOmB6aXBmaWxlYCBtb2R1bGUgKHBhcnQKQEAgLTExOSwyMSArMTI3LDIyIEBACiBvcHRpb247IHlvdSBjYW4gYWxzbyB1c2UgdGhlIGNvbW1hbmQgdGhhdCBkaXJlY3RseSBpbXBsZW1lbnRzIHRoZSBmb3JtYXQgeW91J3JlCiBpbnRlcmVzdGVkIGluLiAgU29tZSBvZiB0aGVzZSA6Y29tbWFuZDpgYmRpc3RgICJzdWItY29tbWFuZHMiIGFjdHVhbGx5IGdlbmVyYXRlCiBzZXZlcmFsIHNpbWlsYXIgZm9ybWF0czsgZm9yIGluc3RhbmNlLCB0aGUgOmNvbW1hbmQ6YGJkaXN0X2R1bWJgIGNvbW1hbmQKLWdlbmVyYXRlcyBhbGwgdGhlICJkdW1iIiBhcmNoaXZlIGZvcm1hdHMgKGBgdGFyYGAsIGBgenRhcmBgLCBgYGd6dGFyYGAsIGFuZAotYGB6aXBgYCksIGFuZCA6Y29tbWFuZDpgYmRpc3RfcnBtYCBnZW5lcmF0ZXMgYm90aCBiaW5hcnkgYW5kIHNvdXJjZSBSUE1zLiAgVGhlCi06Y29tbWFuZDpgYmRpc3RgIHN1Yi1jb21tYW5kcywgYW5kIHRoZSBmb3JtYXRzIGdlbmVyYXRlZCBieSBlYWNoLCBhcmU6CitnZW5lcmF0ZXMgYWxsIHRoZSAiZHVtYiIgYXJjaGl2ZSBmb3JtYXRzIChgYHRhcmBgLCBgYGd6dGFyYGAsIGBgYnp0YXJgYCwKK2BgeHp0YXJgYCwgYGB6dGFyYGAsIGFuZCBgYHppcGBgKSwgYW5kIDpjb21tYW5kOmBiZGlzdF9ycG1gIGdlbmVyYXRlcyBib3RoCitiaW5hcnkgYW5kIHNvdXJjZSBSUE1zLiAgVGhlIDpjb21tYW5kOmBiZGlzdGAgc3ViLWNvbW1hbmRzLCBhbmQgdGhlIGZvcm1hdHMKK2dlbmVyYXRlZCBieSBlYWNoLCBhcmU6CiAKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgQ29tbWFuZCAgICAgICAgICAgICAgICAgIHwgRm9ybWF0cyAgICAgICAgICAgICAgIHwKLSs9PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PSsKLXwgOmNvbW1hbmQ6YGJkaXN0X2R1bWJgICAgIHwgdGFyLCB6dGFyLCBnenRhciwgemlwIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbW1hbmQ6YGJkaXN0X3JwbWAgICAgIHwgcnBtLCBzcnBtICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbW1hbmQ6YGJkaXN0X3dpbmluc3RgIHwgd2luaW5zdCAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbW1hbmQ6YGJkaXN0X21zaWAgICAgIHwgbXNpICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBDb21tYW5kICAgICAgICAgICAgICAgICAgfCBGb3JtYXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrPT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKK3wgOmNvbW1hbmQ6YGJkaXN0X2R1bWJgICAgIHwgdGFyLCBnenRhciwgYnp0YXIsIHh6dGFyLCB6dGFyLCB6aXAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IDpjb21tYW5kOmBiZGlzdF9ycG1gICAgICB8IHJwbSwgc3JwbSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCA6Y29tbWFuZDpgYmRpc3Rfd2luaW5zdGAgfCB3aW5pbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgOmNvbW1hbmQ6YGJkaXN0X21zaWAgICAgIHwgbXNpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKIFRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZ2l2ZSBkZXRhaWxzIG9uIHRoZSBpbmRpdmlkdWFsIDpjb21tYW5kOmBiZGlzdF9cKmAKIGNvbW1hbmRzLgpkaWZmIC0tZ2l0IGEvRG9jL2Rpc3R1dGlscy9pbnRyb2R1Y3Rpb24ucnN0IGIvRG9jL2Rpc3R1dGlscy9pbnRyb2R1Y3Rpb24ucnN0CmluZGV4IDBlY2U2NDYuLjhmNDZiZDcgMTAwNjQ0Ci0tLSBhL0RvYy9kaXN0dXRpbHMvaW50cm9kdWN0aW9uLnJzdAorKysgYi9Eb2MvZGlzdHV0aWxzL2ludHJvZHVjdGlvbi5yc3QKQEAgLTE1Niw4ICsxNTYsOCBAQAogCiBwdXJlIFB5dGhvbiBtb2R1bGUKICAgIGEgbW9kdWxlIHdyaXR0ZW4gaW4gUHl0aG9uIGFuZCBjb250YWluZWQgaW4gYSBzaW5nbGUgOmZpbGU6YC5weWAgZmlsZSAoYW5kCi0gICBwb3NzaWJseSBhc3NvY2lhdGVkIDpmaWxlOmAucHljYCBhbmQvb3IgOmZpbGU6YC5weW9gIGZpbGVzKS4gIFNvbWV0aW1lcyByZWZlcnJlZAotICAgdG8gYXMgYSAicHVyZSBtb2R1bGUuIgorICAgcG9zc2libHkgYXNzb2NpYXRlZCA6ZmlsZTpgLnB5Y2AgZmlsZXMpLiAgU29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIGEKKyAgICJwdXJlIG1vZHVsZS4iCiAKIGV4dGVuc2lvbiBtb2R1bGUKICAgIGEgbW9kdWxlIHdyaXR0ZW4gaW4gdGhlIGxvdy1sZXZlbCBsYW5ndWFnZSBvZiB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uOiBDL0MrKwpAQCAtMjEwLDUgKzIxMCwzIEBACiAgICB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBvZiB5b3VyIHNvdXJjZSB0cmVlIChvciAgc291cmNlIGRpc3RyaWJ1dGlvbik7IHRoZQogICAgZGlyZWN0b3J5IHdoZXJlIDpmaWxlOmBzZXR1cC5weWAgZXhpc3RzLiAgR2VuZXJhbGx5ICA6ZmlsZTpgc2V0dXAucHlgIHdpbGwgYmUKICAgIHJ1biBmcm9tIHRoaXMgZGlyZWN0b3J5LgotCi0KZGlmZiAtLWdpdCBhL0RvYy9kaXN0dXRpbHMvc291cmNlZGlzdC5yc3QgYi9Eb2MvZGlzdHV0aWxzL3NvdXJjZWRpc3QucnN0CmluZGV4IGI5ZjBjYzguLmZiNzA1MTQgMTAwNjQ0Ci0tLSBhL0RvYy9kaXN0dXRpbHMvc291cmNlZGlzdC5yc3QKKysrIGIvRG9jL2Rpc3R1dGlscy9zb3VyY2VkaXN0LnJzdApAQCAtMzIsMTIgKzMyLDE4IEBACiB8IGBgYnp0YXJgYCB8IGJ6aXAyJ2VkIHRhciBmaWxlICAgICAgIHwgICAgICAgICB8CiB8ICAgICAgICAgICB8ICg6ZmlsZTpgLnRhci5iejJgKSAgICAgIHwgICAgICAgICB8CiArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rCit8IGBgeHp0YXJgYCB8IHh6J2VkIHRhciBmaWxlICAgICAgICAgIHwgICAgICAgICB8Cit8ICAgICAgICAgICB8ICg6ZmlsZTpgLnRhci54emApICAgICAgIHwgICAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rCiB8IGBgenRhcmBgICB8IGNvbXByZXNzZWQgdGFyIGZpbGUgICAgIHwgXCg0KSAgICB8CiB8ICAgICAgICAgICB8ICg6ZmlsZTpgLnRhci5aYCkgICAgICAgIHwgICAgICAgICB8CiArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rCiB8IGBgdGFyYGAgICB8IHRhciBmaWxlICg6ZmlsZTpgLnRhcmApIHwgICAgICAgICB8CiArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGB4enRhcmBgIGZvcm1hdC4KKwogTm90ZXM6CiAKICgxKQpAQCAtNTQsNyArNjAsNyBAQAogICAgcmVxdWlyZXMgdGhlIDpwcm9ncmFtOmBjb21wcmVzc2AgcHJvZ3JhbS4gTm90aWNlIHRoYXQgdGhpcyBmb3JtYXQgaXMgbm93CiAgICBwZW5kaW5nIGZvciBkZXByZWNhdGlvbiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUgdmVyc2lvbnMgb2YgUHl0aG9uLgogCi1XaGVuIHVzaW5nIGFueSBgYHRhcmBgIGZvcm1hdCAoYGBnenRhcmBgLCBgYGJ6dGFyYGAsIGBgenRhcmBgIG9yCitXaGVuIHVzaW5nIGFueSBgYHRhcmBgIGZvcm1hdCAoYGBnenRhcmBgLCBgYGJ6dGFyYGAsIGBgeHp0YXJgYCwgYGB6dGFyYGAgb3IKIGBgdGFyYGApLCB1bmRlciBVbml4IHlvdSBjYW4gc3BlY2lmeSB0aGUgYGBvd25lcmBgIGFuZCBgYGdyb3VwYGAgbmFtZXMKIHRoYXQgd2lsbCBiZSBzZXQgZm9yIGVhY2ggbWVtYmVyIG9mIHRoZSBhcmNoaXZlLgogCmRpZmYgLS1naXQgYS9Eb2MvZXh0ZW5kaW5nL2J1aWxkaW5nLnJzdCBiL0RvYy9leHRlbmRpbmcvYnVpbGRpbmcucnN0CmluZGV4IDY1NmFmODguLjRhMzAxODEgMTAwNjQ0Ci0tLSBhL0RvYy9leHRlbmRpbmcvYnVpbGRpbmcucnN0CisrKyBiL0RvYy9leHRlbmRpbmcvYnVpbGRpbmcucnN0CkBAIC0xLDI3ICsxLDU4IEBACiAuLiBoaWdobGlnaHRsYW5nOjogYwogCi0KIC4uIF9idWlsZGluZzoKIAotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitCdWlsZGluZyBDIGFuZCBDKysgRXh0ZW5zaW9ucworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworQSBDIGV4dGVuc2lvbiBmb3IgQ1B5dGhvbiBpcyBhIHNoYXJlZCBsaWJyYXJ5IChlLmcuIGEgYGAuc29gYCBmaWxlIG9uIExpbnV4LAorYGAucHlkYGAgb24gV2luZG93cyksIHdoaWNoIGV4cG9ydHMgYW4gKmluaXRpYWxpemF0aW9uIGZ1bmN0aW9uKi4KKworVG8gYmUgaW1wb3J0YWJsZSwgdGhlIHNoYXJlZCBsaWJyYXJ5IG11c3QgYmUgYXZhaWxhYmxlIG9uIDplbnZ2YXI6YFBZVEhPTlBBVEhgLAorYW5kIG11c3QgYmUgbmFtZWQgYWZ0ZXIgdGhlIG1vZHVsZSBuYW1lLCB3aXRoIGFuIGFwcHJvcHJpYXRlIGV4dGVuc2lvbi4KK1doZW4gdXNpbmcgZGlzdHV0aWxzLCB0aGUgY29ycmVjdCBmaWxlbmFtZSBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS4KKworVGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGhhcyB0aGUgc2lnbmF0dXJlOgorCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW5pdF9tb2R1bGVuYW1lKHZvaWQpCisKK0l0IHJldHVybnMgZWl0aGVyIGEgZnVsbHktaW5pdGlhbGl6ZWQgbW9kdWxlLCBvciBhIDpjOnR5cGU6YFB5TW9kdWxlRGVmYAoraW5zdGFuY2UuIFNlZSA6cmVmOmBpbml0aWFsaXppbmctbW9kdWxlc2AgZm9yIGRldGFpbHMuCisKKy4uIGhpZ2hsaWdodGxhbmc6OiBweXRob24KKworRm9yIG1vZHVsZXMgd2l0aCBBU0NJSS1vbmx5IG5hbWVzLCB0aGUgZnVuY3Rpb24gbXVzdCBiZSBuYW1lZAorYGBQeUluaXRfPG1vZHVsZW5hbWU+YGAsIHdpdGggYGA8bW9kdWxlbmFtZT5gYCByZXBsYWNlZCBieSB0aGUgbmFtZSBvZiB0aGUKK21vZHVsZS4gV2hlbiB1c2luZyA6cmVmOmBtdWx0aS1waGFzZS1pbml0aWFsaXphdGlvbmAsIG5vbi1BU0NJSSBtb2R1bGUgbmFtZXMKK2FyZSBhbGxvd2VkLiBJbiB0aGlzIGNhc2UsIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBuYW1lIGlzCitgYFB5SW5pdFVfPG1vZHVsZW5hbWU+YGAsIHdpdGggYGA8bW9kdWxlbmFtZT5gYCBlbmNvZGVkIHVzaW5nIFB5dGhvbidzCisqcHVueWNvZGUqIGVuY29kaW5nIHdpdGggaHlwaGVucyByZXBsYWNlZCBieSB1bmRlcnNjb3Jlcy4gSW4gUHl0aG9uOjoKKworICAgIGRlZiBpbml0ZnVuY19uYW1lKG5hbWUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzdWZmaXggPSBiJ18nICsgbmFtZS5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHN1ZmZpeCA9IGInVV8nICsgbmFtZS5lbmNvZGUoJ3B1bnljb2RlJykucmVwbGFjZShiJy0nLCBiJ18nKQorICAgICAgICByZXR1cm4gYidQeUluaXQnICsgc3VmZml4CisKK0l0IGlzIHBvc3NpYmxlIHRvIGV4cG9ydCBtdWx0aXBsZSBtb2R1bGVzIGZyb20gYSBzaW5nbGUgc2hhcmVkIGxpYnJhcnkgYnkKK2RlZmluaW5nIG11bHRpcGxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucy4gSG93ZXZlciwgaW1wb3J0aW5nIHRoZW0gcmVxdWlyZXMKK3VzaW5nIHN5bWJvbGljIGxpbmtzIG9yIGEgY3VzdG9tIGltcG9ydGVyLCBiZWNhdXNlIGJ5IGRlZmF1bHQgb25seSB0aGUKK2Z1bmN0aW9uIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZpbGVuYW1lIGlzIGZvdW5kLgorU2VlIDpQRVA6YDQ4OSNtdWx0aXBsZS1tb2R1bGVzLWluLW9uZS1saWJyYXJ5YCBmb3IgZGV0YWlscy4KKworCisuLiBoaWdobGlnaHRsYW5nOjogYworCiBCdWlsZGluZyBDIGFuZCBDKysgRXh0ZW5zaW9ucyB3aXRoIGRpc3R1dGlscwotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIC4uIHNlY3Rpb25hdXRob3I6OiBNYXJ0aW4gdi4gTMO2d2lzIDxtYXJ0aW5Adi5sb2V3aXMuZGU+CiAKLQotU3RhcnRpbmcgaW4gUHl0aG9uIDEuNCwgUHl0aG9uIHByb3ZpZGVzLCBvbiBVbml4LCBhIHNwZWNpYWwgbWFrZSBmaWxlIGZvcgotYnVpbGRpbmcgbWFrZSBmaWxlcyBmb3IgYnVpbGRpbmcgZHluYW1pY2FsbHktbGlua2VkIGV4dGVuc2lvbnMgYW5kIGN1c3RvbQotaW50ZXJwcmV0ZXJzLiAgU3RhcnRpbmcgd2l0aCBQeXRob24gMi4wLCB0aGlzIG1lY2hhbmlzbSAoa25vd24gYXMgcmVsYXRlZCB0bwotTWFrZWZpbGUucHJlLmluLCBhbmQgU2V0dXAgZmlsZXMpIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIEJ1aWxkaW5nIGN1c3RvbQotaW50ZXJwcmV0ZXJzIHdhcyByYXJlbHkgdXNlZCwgYW5kIGV4dGVuc2lvbiBtb2R1bGVzIGNhbiBiZSBidWlsdCB1c2luZwotZGlzdHV0aWxzLgotCi1CdWlsZGluZyBhbiBleHRlbnNpb24gbW9kdWxlIHVzaW5nIGRpc3R1dGlscyByZXF1aXJlcyB0aGF0IGRpc3R1dGlscyBpcwotaW5zdGFsbGVkIG9uIHRoZSBidWlsZCBtYWNoaW5lLCB3aGljaCBpcyBpbmNsdWRlZCBpbiBQeXRob24gMi54IGFuZCBhdmFpbGFibGUKLXNlcGFyYXRlbHkgZm9yIFB5dGhvbiAxLjUuIFNpbmNlIGRpc3R1dGlscyBhbHNvIHN1cHBvcnRzIGNyZWF0aW9uIG9mIGJpbmFyeQotcGFja2FnZXMsIHVzZXJzIGRvbid0IG5lY2Vzc2FyaWx5IG5lZWQgYSBjb21waWxlciBhbmQgZGlzdHV0aWxzIHRvIGluc3RhbGwgdGhlCi1leHRlbnNpb24uCitFeHRlbnNpb24gbW9kdWxlcyBjYW4gYmUgYnVpbHQgdXNpbmcgZGlzdHV0aWxzLCAgd2hpY2ggaXMgaW5jbHVkZWQgaW4gUHl0aG9uLgorU2luY2UgZGlzdHV0aWxzIGFsc28gc3VwcG9ydHMgY3JlYXRpb24gb2YgYmluYXJ5IHBhY2thZ2VzLCB1c2VycyBkb24ndAorbmVjZXNzYXJpbHkgbmVlZCBhIGNvbXBpbGVyIGFuZCBkaXN0dXRpbHMgdG8gaW5zdGFsbCB0aGUgZXh0ZW5zaW9uLgogCiBBIGRpc3R1dGlscyBwYWNrYWdlIGNvbnRhaW5zIGEgZHJpdmVyIHNjcmlwdCwgOmZpbGU6YHNldHVwLnB5YC4gVGhpcyBpcyBhIHBsYWluCiBQeXRob24gZmlsZSwgd2hpY2gsIGluIHRoZSBtb3N0IHNpbXBsZSBjYXNlLCBjb3VsZCBsb29rIGxpa2UgdGhpczo6CkBAIC01MCw3ICs4MSw3IEBACiBmdW5jdGlvbi4gVGhpcyB0YWtlcyBhIHZhcmlhYmxlIG51bWJlciBvZiBrZXl3b3JkIGFyZ3VtZW50cywgb2Ygd2hpY2ggdGhlCiBleGFtcGxlIGFib3ZlIHVzZXMgb25seSBhIHN1YnNldC4gU3BlY2lmaWNhbGx5LCB0aGUgZXhhbXBsZSBzcGVjaWZpZXMKIG1ldGEtaW5mb3JtYXRpb24gdG8gYnVpbGQgcGFja2FnZXMsIGFuZCBpdCBzcGVjaWZpZXMgdGhlIGNvbnRlbnRzIG9mIHRoZQotcGFja2FnZS4gIE5vcm1hbGx5LCBhIHBhY2thZ2Ugd2lsbCBjb250YWluIG9mIGFkZGl0aW9uIG1vZHVsZXMsIGxpa2UgUHl0aG9uCitwYWNrYWdlLiAgTm9ybWFsbHksIGEgcGFja2FnZSB3aWxsIGNvbnRhaW4gYWRkaXRpb25hbCBtb2R1bGVzLCBsaWtlIFB5dGhvbgogc291cmNlIG1vZHVsZXMsIGRvY3VtZW50YXRpb24sIHN1YnBhY2thZ2VzLCBldGMuIFBsZWFzZSByZWZlciB0byB0aGUgZGlzdHV0aWxzCiBkb2N1bWVudGF0aW9uIGluIDpyZWY6YGRpc3R1dGlscy1pbmRleGAgdG8gbGVhcm4gbW9yZSBhYm91dCB0aGUgZmVhdHVyZXMgb2YKIGRpc3R1dGlsczsgdGhpcyBzZWN0aW9uIGV4cGxhaW5zIGJ1aWxkaW5nIGV4dGVuc2lvbiBtb2R1bGVzIG9ubHkuCmRpZmYgLS1naXQgYS9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QgYi9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QKaW5kZXggNmNiNjg2YS4uYWNkNjBhZSAxMDA2NDQKLS0tIGEvRG9jL2V4dGVuZGluZy9lbWJlZGRpbmcucnN0CisrKyBiL0RvYy9leHRlbmRpbmcvZW1iZWRkaW5nLnJzdApAQCAtNTgsMTIgKzU4LDE4IEBACiAgICBpbnQKICAgIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgIHsKLSAgICAgUHlfU2V0UHJvZ3JhbU5hbWUoYXJndlswXSk7ICAvKiBvcHRpb25hbCBidXQgcmVjb21tZW5kZWQgKi8KLSAgICAgUHlfSW5pdGlhbGl6ZSgpOwotICAgICBQeVJ1bl9TaW1wbGVTdHJpbmcoImZyb20gdGltZSBpbXBvcnQgdGltZSxjdGltZVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgInByaW50KCdUb2RheSBpcycsIGN0aW1lKHRpbWUoKSkpXG4iKTsKLSAgICAgUHlfRmluYWxpemUoKTsKLSAgICAgcmV0dXJuIDA7CisgICAgICAgd2NoYXJfdCAqcHJvZ3JhbSA9IFB5X0RlY29kZUxvY2FsZShhcmd2WzBdLCBOVUxMKTsKKyAgICAgICBpZiAocHJvZ3JhbSA9PSBOVUxMKSB7CisgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmF0YWwgZXJyb3I6IGNhbm5vdCBkZWNvZGUgYXJndlswXVxuIik7CisgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgfQorICAgICAgIFB5X1NldFByb2dyYW1OYW1lKHByb2dyYW0pOyAgLyogb3B0aW9uYWwgYnV0IHJlY29tbWVuZGVkICovCisgICAgICAgUHlfSW5pdGlhbGl6ZSgpOworICAgICAgIFB5UnVuX1NpbXBsZVN0cmluZygiZnJvbSB0aW1lIGltcG9ydCB0aW1lLGN0aW1lXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmludCgnVG9kYXkgaXMnLCBjdGltZSh0aW1lKCkpKVxuIik7CisgICAgICAgUHlfRmluYWxpemUoKTsKKyAgICAgICBQeU1lbV9SYXdGcmVlKHByb2dyYW0pOworICAgICAgIHJldHVybiAwOwogICAgfQogCiBUaGUgOmM6ZnVuYzpgUHlfU2V0UHJvZ3JhbU5hbWVgIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlCkBAIC0xNjAsNyArMTY2LDcgQEAKIGludGVyZXN0aW5nIHBhcnQgd2l0aCByZXNwZWN0IHRvIGVtYmVkZGluZyBQeXRob24gc3RhcnRzIHdpdGggOjoKIAogICAgUHlfSW5pdGlhbGl6ZSgpOwotICAgcE5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhhcmd2WzFdKTsKKyAgIHBOYW1lID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChhcmd2WzFdKTsKICAgIC8qIEVycm9yIGNoZWNraW5nIG9mIHBOYW1lIGxlZnQgb3V0ICovCiAgICBwTW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0KHBOYW1lKTsKIApkaWZmIC0tZ2l0IGEvRG9jL2V4dGVuZGluZy9leHRlbmRpbmcucnN0IGIvRG9jL2V4dGVuZGluZy9leHRlbmRpbmcucnN0CmluZGV4IGJhNmJmYTcuLjhjYzQxODQgMTAwNjQ0Ci0tLSBhL0RvYy9leHRlbmRpbmcvZXh0ZW5kaW5nLnJzdAorKysgYi9Eb2MvZXh0ZW5kaW5nL2V4dGVuZGluZy5yc3QKQEAgLTM3NSwxMSArMzc1LDE3IEBACiAgICBpbnQKICAgIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgIHsKKyAgICAgICB3Y2hhcl90ICpwcm9ncmFtID0gUHlfRGVjb2RlTG9jYWxlKGFyZ3ZbMF0sIE5VTEwpOworICAgICAgIGlmIChwcm9ncmFtID09IE5VTEwpIHsKKyAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYXRhbCBlcnJvcjogY2Fubm90IGRlY29kZSBhcmd2WzBdXG4iKTsKKyAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICB9CisKICAgICAgICAvKiBBZGQgYSBidWlsdC1pbiBtb2R1bGUsIGJlZm9yZSBQeV9Jbml0aWFsaXplICovCiAgICAgICAgUHlJbXBvcnRfQXBwZW5kSW5pdHRhYigic3BhbSIsIFB5SW5pdF9zcGFtKTsKIAogICAgICAgIC8qIFBhc3MgYXJndlswXSB0byB0aGUgUHl0aG9uIGludGVycHJldGVyICovCi0gICAgICAgUHlfU2V0UHJvZ3JhbU5hbWUoYXJndlswXSk7CisgICAgICAgUHlfU2V0UHJvZ3JhbU5hbWUocHJvZ3JhbSk7CiAKICAgICAgICAvKiBJbml0aWFsaXplIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIuICBSZXF1aXJlZC4gKi8KICAgICAgICBQeV9Jbml0aWFsaXplKCk7CkBAIC0zOTEsNiArMzk3LDEwIEBACiAKICAgICAgICAuLi4KIAorICAgICAgIFB5TWVtX1Jhd0ZyZWUocHJvZ3JhbSk7CisgICAgICAgcmV0dXJuIDA7CisgICB9CisKIC4uIG5vdGU6OgogCiAgICBSZW1vdmluZyBlbnRyaWVzIGZyb20gYGBzeXMubW9kdWxlc2BgIG9yIGltcG9ydGluZyBjb21waWxlZCBtb2R1bGVzIGludG8KQEAgLTQwMyw2ICs0MTMsMTMgQEAKIGFzIDpmaWxlOmBNb2R1bGVzL3h4bW9kdWxlLmNgLiAgVGhpcyBmaWxlIG1heSBiZSB1c2VkIGFzIGEgIHRlbXBsYXRlIG9yIHNpbXBseQogcmVhZCBhcyBhbiBleGFtcGxlLgogCisuLiBub3RlOjoKKworICAgVW5saWtlIG91ciBgYHNwYW1gYCBleGFtcGxlLCBgYHh4bW9kdWxlYGAgdXNlcyAqbXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24qCisgICAobmV3IGluIFB5dGhvbiAzLjUpLCB3aGVyZSBhIFB5TW9kdWxlRGVmIHN0cnVjdHVyZSBpcyByZXR1cm5lZCBmcm9tCisgICBgYFB5SW5pdF9zcGFtYGAsIGFuZCBjcmVhdGlvbiBvZiB0aGUgbW9kdWxlIGlzIGxlZnQgdG8gdGhlIGltcG9ydCBtYWNoaW5lcnkuCisgICBGb3IgZGV0YWlscyBvbiBtdWx0aS1waGFzZSBpbml0aWFsaXphdGlvbiwgc2VlIDpQRVA6YDQ4OWAuCisKIAogLi4gX2NvbXBpbGF0aW9uOgogCmRpZmYgLS1naXQgYS9Eb2MvZXh0ZW5kaW5nL25ld3R5cGVzLnJzdCBiL0RvYy9leHRlbmRpbmcvbmV3dHlwZXMucnN0CmluZGV4IDA4ODQ0MzAuLmY2MGUyMDggMTAwNjQ0Ci0tLSBhL0RvYy9leHRlbmRpbmcvbmV3dHlwZXMucnN0CisrKyBiL0RvYy9leHRlbmRpbmcvbmV3dHlwZXMucnN0CkBAIC04MCw3ICs4MCw3IEBACiAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwotICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYXN5bmMgKi8KICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCiAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KZGlmZiAtLWdpdCBhL0RvYy9mYXEvZXh0ZW5kaW5nLnJzdCBiL0RvYy9mYXEvZXh0ZW5kaW5nLnJzdAppbmRleCA3YmI0ZGMyLi5jOTMyZDM4IDEwMDY0NAotLS0gYS9Eb2MvZmFxL2V4dGVuZGluZy5yc3QKKysrIGIvRG9jL2ZhcS9leHRlbmRpbmcucnN0CkBAIC0yNDcsMjAgKzI0Nyw2IEBACiBGb3IgRGViaWFuLCBydW4gYGBhcHQtZ2V0IGluc3RhbGwgcHl0aG9uLWRldmBgLgogCiAKLVdoYXQgZG9lcyAiU3lzdGVtRXJyb3I6IF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbjogbW9kdWxlIHlvdXJtb2R1bGUgbm90IGxvYWRlZCIgbWVhbj8KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotVGhpcyBtZWFucyB0aGF0IHlvdSBoYXZlIGNyZWF0ZWQgYW4gZXh0ZW5zaW9uIG1vZHVsZSBuYW1lZCAieW91cm1vZHVsZSIsIGJ1dAoteW91ciBtb2R1bGUgaW5pdCBmdW5jdGlvbiBkb2VzIG5vdCBpbml0aWFsaXplIHdpdGggdGhhdCBuYW1lLgotCi1FdmVyeSBtb2R1bGUgaW5pdCBmdW5jdGlvbiB3aWxsIGhhdmUgYSBsaW5lIHNpbWlsYXIgdG86OgotCi0gICBtb2R1bGUgPSBQeV9Jbml0TW9kdWxlKCJ5b3VybW9kdWxlIiwgeW91cm1vZHVsZV9mdW5jdGlvbnMpOwotCi1JZiB0aGUgc3RyaW5nIHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB0aGUgc2FtZSBuYW1lIGFzIHlvdXIgZXh0ZW5zaW9uCi1tb2R1bGUsIHRoZSA6ZXhjOmBTeXN0ZW1FcnJvcmAgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLgotCi0KIEhvdyBkbyBJIHRlbGwgImluY29tcGxldGUgaW5wdXQiIGZyb20gImludmFsaWQgaW5wdXQiPwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL0RvYy9nbG9zc2FyeS5yc3QgYi9Eb2MvZ2xvc3NhcnkucnN0CmluZGV4IDM2ODMyYTMuLmFkNzFjMzcgMTAwNjQ0Ci0tLSBhL0RvYy9nbG9zc2FyeS5yc3QKKysrIGIvRG9jL2dsb3NzYXJ5LnJzdApAQCAtNjksMTEgKzY5LDM0IEBACiAgICAgICA6cmVmOmB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGFyZ3VtZW50cyBhbmQgcGFyYW1ldGVycwogICAgICAgPGZhcS1hcmd1bWVudC12cy1wYXJhbWV0ZXI+YCwgYW5kIDpwZXA6YDM2MmAuCiAKKyAgIGFzeW5jaHJvbm91cyBjb250ZXh0IG1hbmFnZXIKKyAgICAgIEFuIG9iamVjdCB3aGljaCBjb250cm9scyB0aGUgZW52aXJvbm1lbnQgc2VlbiBpbiBhbgorICAgICAgOmtleXdvcmQ6YGFzeW5jIHdpdGhgIHN0YXRlbWVudCBieSBkZWZpbmluZyA6bWV0aDpgX19hZW50ZXJfX2AgYW5kCisgICAgICA6bWV0aDpgX19hZXhpdF9fYCBtZXRob2RzLiAgSW50cm9kdWNlZCBieSA6cGVwOmA0OTJgLgorCisgICBhc3luY2hyb25vdXMgaXRlcmFibGUKKyAgICAgIEFuIG9iamVjdCwgdGhhdCBjYW4gYmUgdXNlZCBpbiBhbiA6a2V5d29yZDpgYXN5bmMgZm9yYCBzdGF0ZW1lbnQuCisgICAgICBNdXN0IHJldHVybiBhbiA6dGVybTpgYXdhaXRhYmxlYCBmcm9tIGl0cyA6bWV0aDpgX19haXRlcl9fYCBtZXRob2QsCisgICAgICB3aGljaCBzaG91bGQgaW4gdHVybiBiZSByZXNvbHZlZCBpbiBhbiA6dGVybTpgYXN5bmNocm9ub3VzIGl0ZXJhdG9yYAorICAgICAgb2JqZWN0LiAgSW50cm9kdWNlZCBieSA6cGVwOmA0OTJgLgorCisgICBhc3luY2hyb25vdXMgaXRlcmF0b3IKKyAgICAgIEFuIG9iamVjdCB0aGF0IGltcGxlbWVudHMgOm1ldGg6YF9fYWl0ZXJfX2AgYW5kIDptZXRoOmBfX2FuZXh0X19gCisgICAgICBtZXRob2RzLCB0aGF0IG11c3QgcmV0dXJuIDp0ZXJtOmBhd2FpdGFibGVgIG9iamVjdHMuCisgICAgICA6a2V5d29yZDpgYXN5bmMgZm9yYCByZXNvbHZlcyBhd2FpdGFibGUgcmV0dXJuZWQgZnJvbSBhc3luY2hyb25vdXMKKyAgICAgIGl0ZXJhdG9yJ3MgOm1ldGg6YF9fYW5leHRfX2AgbWV0aG9kIHVudGlsIGl0IHJhaXNlcworICAgICAgOmV4YzpgU3RvcEFzeW5jSXRlcmF0aW9uYCBleGNlcHRpb24uICBJbnRyb2R1Y2VkIGJ5IDpwZXA6YDQ5MmAuCisKICAgIGF0dHJpYnV0ZQogICAgICAgQSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYW4gb2JqZWN0IHdoaWNoIGlzIHJlZmVyZW5jZWQgYnkgbmFtZSB1c2luZwogICAgICAgZG90dGVkIGV4cHJlc3Npb25zLiAgRm9yIGV4YW1wbGUsIGlmIGFuIG9iamVjdCAqbyogaGFzIGFuIGF0dHJpYnV0ZQogICAgICAgKmEqIGl0IHdvdWxkIGJlIHJlZmVyZW5jZWQgYXMgKm8uYSouCiAKKyAgIGF3YWl0YWJsZQorICAgICAgQW4gb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgaW4gYW4gOmtleXdvcmQ6YGF3YWl0YCBleHByZXNzaW9uLiAgQ2FuIGJlCisgICAgICBhIDp0ZXJtOmBjb3JvdXRpbmVgIG9yIGFuIG9iamVjdCB3aXRoIGFuIDptZXRoOmBfX2F3YWl0X19gIG1ldGhvZC4KKyAgICAgIFNlZSBhbHNvIDpwZXA6YDQ5MmAuCisKICAgIEJERkwKICAgICAgIEJlbmV2b2xlbnQgRGljdGF0b3IgRm9yIExpZmUsIGEuay5hLiBgR3VpZG8gdmFuIFJvc3N1bQogICAgICAgPGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvfmd1aWRvLz5gXywgUHl0aG9uJ3MgY3JlYXRvci4KQEAgLTg2LDEyICsxMDksMjEgQEAKICAgICAgICAgIEEgOnRlcm06YHRleHQgZmlsZWAgcmVhZHMgYW5kIHdyaXRlcyA6Y2xhc3M6YHN0cmAgb2JqZWN0cy4KIAogICAgYnl0ZXMtbGlrZSBvYmplY3QKLSAgICAgIEFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIHRoZSA6cmVmOmBidWZmZXJvYmplY3RzYCwgbGlrZSA6Y2xhc3M6YGJ5dGVzYCwKLSAgICAgIDpjbGFzczpgYnl0ZWFycmF5YCBvciA6Y2xhc3M6YG1lbW9yeXZpZXdgLiAgQnl0ZXMtbGlrZSBvYmplY3RzIGNhbgotICAgICAgYmUgdXNlZCBmb3IgdmFyaW91cyBvcGVyYXRpb25zIHRoYXQgZXhwZWN0IGJpbmFyeSBkYXRhLCBzdWNoIGFzCi0gICAgICBjb21wcmVzc2lvbiwgc2F2aW5nIHRvIGEgYmluYXJ5IGZpbGUgb3Igc2VuZGluZyBvdmVyIGEgc29ja2V0LgotICAgICAgU29tZSBvcGVyYXRpb25zIG5lZWQgdGhlIGJpbmFyeSBkYXRhIHRvIGJlIG11dGFibGUsIGluIHdoaWNoIGNhc2UKLSAgICAgIG5vdCBhbGwgYnl0ZXMtbGlrZSBvYmplY3RzIGNhbiBhcHBseS4KKyAgICAgIEFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIHRoZSA6cmVmOmBidWZmZXJvYmplY3RzYCBhbmQgY2FuCisgICAgICBleHBvcnQgYSBDLTp0ZXJtOmBjb250aWd1b3VzYCBidWZmZXIuIFRoaXMgaW5jbHVkZXMgYWxsIDpjbGFzczpgYnl0ZXNgLAorICAgICAgOmNsYXNzOmBieXRlYXJyYXlgLCBhbmQgOmNsYXNzOmBhcnJheS5hcnJheWAgb2JqZWN0cywgYXMgd2VsbCBhcyBtYW55CisgICAgICBjb21tb24gOmNsYXNzOmBtZW1vcnl2aWV3YCBvYmplY3RzLiAgQnl0ZXMtbGlrZSBvYmplY3RzIGNhbgorICAgICAgYmUgdXNlZCBmb3IgdmFyaW91cyBvcGVyYXRpb25zIHRoYXQgd29yayB3aXRoIGJpbmFyeSBkYXRhOyB0aGVzZSBpbmNsdWRlCisgICAgICBjb21wcmVzc2lvbiwgc2F2aW5nIHRvIGEgYmluYXJ5IGZpbGUsIGFuZCBzZW5kaW5nIG92ZXIgYSBzb2NrZXQuCisKKyAgICAgIFNvbWUgb3BlcmF0aW9ucyBuZWVkIHRoZSBiaW5hcnkgZGF0YSB0byBiZSBtdXRhYmxlLiAgVGhlIGRvY3VtZW50YXRpb24KKyAgICAgIG9mdGVuIHJlZmVycyB0byB0aGVzZSBhcyAicmVhZC13cml0ZSBieXRlcy1saWtlIG9iamVjdHMiLiAgRXhhbXBsZQorICAgICAgbXV0YWJsZSBidWZmZXIgb2JqZWN0cyBpbmNsdWRlIDpjbGFzczpgYnl0ZWFycmF5YCBhbmQgYQorICAgICAgOmNsYXNzOmBtZW1vcnl2aWV3YCBvZiBhIDpjbGFzczpgYnl0ZWFycmF5YC4KKyAgICAgIE90aGVyIG9wZXJhdGlvbnMgcmVxdWlyZSB0aGUgYmluYXJ5IGRhdGEgdG8gYmUgc3RvcmVkIGluCisgICAgICBpbW11dGFibGUgb2JqZWN0cyAoInJlYWQtb25seSBieXRlcy1saWtlIG9iamVjdHMiKTsgZXhhbXBsZXMKKyAgICAgIG9mIHRoZXNlIGluY2x1ZGUgOmNsYXNzOmBieXRlc2AgYW5kIGEgOmNsYXNzOmBtZW1vcnl2aWV3YAorICAgICAgb2YgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QuCiAKICAgIGJ5dGVjb2RlCiAgICAgICBQeXRob24gc291cmNlIGNvZGUgaXMgY29tcGlsZWQgaW50byBieXRlY29kZSwgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uCkBAIC0xMzksNiArMTcxLDMyIEBACiAgICAgICBzdGF0ZW1lbnQgYnkgZGVmaW5pbmcgOm1ldGg6YF9fZW50ZXJfX2AgYW5kIDptZXRoOmBfX2V4aXRfX2AgbWV0aG9kcy4KICAgICAgIFNlZSA6cGVwOmAzNDNgLgogCisgICBjb250aWd1b3VzCisgICAgICAuLiBpbmRleDo6IEMtY29udGlndW91cywgRm9ydHJhbiBjb250aWd1b3VzCisKKyAgICAgIEEgYnVmZmVyIGlzIGNvbnNpZGVyZWQgY29udGlndW91cyBleGFjdGx5IGlmIGl0IGlzIGVpdGhlcgorICAgICAgKkMtY29udGlndW91cyogb3IgKkZvcnRyYW4gY29udGlndW91cyouICBaZXJvLWRpbWVuc2lvbmFsIGJ1ZmZlcnMgYXJlCisgICAgICBDIGFuZCBGb3J0cmFuIGNvbnRpZ3VvdXMuICBJbiBvbmUtZGltZW5zaW9uYWwgYXJyYXlzLCB0aGUgaXRlbXMKKyAgICAgIG11c3QgYmUgbGF5ZWQgb3V0IGluIG1lbW9yeSBuZXh0IHRvIGVhY2ggb3RoZXIsIGluIG9yZGVyIG9mCisgICAgICBpbmNyZWFzaW5nIGluZGV4ZXMgc3RhcnRpbmcgZnJvbSB6ZXJvLiAgSW4gbXVsdGlkaW1lbnNpb25hbAorICAgICAgQy1jb250aWd1b3VzIGFycmF5cywgdGhlIGxhc3QgaW5kZXggdmFyaWVzIHRoZSBmYXN0ZXN0IHdoZW4KKyAgICAgIHZpc2l0aW5nIGl0ZW1zIGluIG9yZGVyIG9mIG1lbW9yeSBhZGRyZXNzLiAgSG93ZXZlciwgaW4KKyAgICAgIEZvcnRyYW4gY29udGlndW91cyBhcnJheXMsIHRoZSBmaXJzdCBpbmRleCB2YXJpZXMgdGhlIGZhc3Rlc3QuCisKKyAgIGNvcm91dGluZQorICAgICAgQ29yb3V0aW5lcyBpcyBhIG1vcmUgZ2VuZXJhbGl6ZWQgZm9ybSBvZiBzdWJyb3V0aW5lcy4gU3Vicm91dGluZXMgYXJlCisgICAgICBlbnRlcmVkIGF0IG9uZSBwb2ludCBhbmQgZXhpdGVkIGF0IGFub3RoZXIgcG9pbnQuICBDb3JvdXRpbmVzIGNhbiBiZQorICAgICAgZW50ZXJlZCwgZXhpdGVkLCBhbmQgcmVzdW1lZCBhdCBtYW55IGRpZmZlcmVudCBwb2ludHMuICBUaGV5IGNhbiBiZQorICAgICAgaW1wbGVtZW50ZWQgd2l0aCB0aGUgOmtleXdvcmQ6YGFzeW5jIGRlZmAgc3RhdGVtZW50LiAgU2VlIGFsc28KKyAgICAgIDpwZXA6YDQ5MmAuCisKKyAgIGNvcm91dGluZSBmdW5jdGlvbgorICAgICAgQSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGEgOnRlcm06YGNvcm91dGluZWAgb2JqZWN0LiAgQSBjb3JvdXRpbmUKKyAgICAgIGZ1bmN0aW9uIG1heSBiZSBkZWZpbmVkIHdpdGggdGhlIDprZXl3b3JkOmBhc3luYyBkZWZgIHN0YXRlbWVudCwKKyAgICAgIGFuZCBtYXkgY29udGFpbiA6a2V5d29yZDpgYXdhaXRgLCA6a2V5d29yZDpgYXN5bmMgZm9yYCwgYW5kCisgICAgICA6a2V5d29yZDpgYXN5bmMgd2l0aGAga2V5d29yZHMuICBUaGVzZSB3ZXJlIGludHJvZHVjZWQKKyAgICAgIGJ5IDpwZXA6YDQ5MmAuCisKICAgIENQeXRob24KICAgICAgIFRoZSBjYW5vbmljYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFB5dGhvbiBwcm9ncmFtbWluZyBsYW5ndWFnZSwgYXMKICAgICAgIGRpc3RyaWJ1dGVkIG9uIGBweXRob24ub3JnIDxodHRwczovL3d3dy5weXRob24ub3JnPmBfLiAgVGhlIHRlcm0gIkNQeXRob24iCkBAIC0yNTAsMTAgKzMwOCwxNCBAQAogICAgICAgQSBzeW5vbnltIGZvciA6dGVybTpgZmlsZSBvYmplY3RgLgogCiAgICBmaW5kZXIKLSAgICAgIEFuIG9iamVjdCB0aGF0IHRyaWVzIHRvIGZpbmQgdGhlIDp0ZXJtOmBsb2FkZXJgIGZvciBhIG1vZHVsZS4gSXQgbXVzdAotICAgICAgaW1wbGVtZW50IGVpdGhlciBhIG1ldGhvZCBuYW1lZCA6bWV0aDpgZmluZF9sb2FkZXJgIG9yIGEgbWV0aG9kIG5hbWVkCi0gICAgICA6bWV0aDpgZmluZF9tb2R1bGVgLiBTZWUgOnBlcDpgMzAyYCBhbmQgOnBlcDpgNDIwYCBmb3IgZGV0YWlscyBhbmQKLSAgICAgIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaW5kZXJgIGZvciBhbiA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AuCisgICAgICBBbiBvYmplY3QgdGhhdCB0cmllcyB0byBmaW5kIHRoZSA6dGVybTpgbG9hZGVyYCBmb3IgYSBtb2R1bGUgdGhhdCBpcworICAgICAgYmVpbmcgaW1wb3J0ZWQuCisKKyAgICAgIFNpbmNlIFB5dGhvbiAzLjMsIHRoZXJlIGFyZSB0d28gdHlwZXMgb2YgZmluZGVyOiA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcnMKKyAgICAgIDxtZXRhIHBhdGggZmluZGVyPmAgZm9yIHVzZSB3aXRoIDpkYXRhOmBzeXMubWV0YV9wYXRoYCwgYW5kIDp0ZXJtOmBwYXRoCisgICAgICBlbnRyeSBmaW5kZXJzIDxwYXRoIGVudHJ5IGZpbmRlcj5gIGZvciB1c2Ugd2l0aCA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgLgorCisgICAgICBTZWUgOnBlcDpgMzAyYCwgOnBlcDpgNDIwYCBhbmQgOnBlcDpgNDUxYCBmb3IgbXVjaCBtb3JlIGRldGFpbC4KIAogICAgZmxvb3IgZGl2aXNpb24KICAgICAgIE1hdGhlbWF0aWNhbCBkaXZpc2lvbiB0aGF0IHJvdW5kcyBkb3duIHRvIG5lYXJlc3QgaW50ZWdlci4gIFRoZSBmbG9vcgpAQCAtMjk4LDE0ICszNjAsMjMgQEAKICAgICAgIC4uIGluZGV4Ojogc2luZ2xlOiBnZW5lcmF0b3IKIAogICAgZ2VuZXJhdG9yCi0gICAgICBBIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gaXRlcmF0b3IuICBJdCBsb29rcyBsaWtlIGEgbm9ybWFsIGZ1bmN0aW9uCi0gICAgICBleGNlcHQgdGhhdCBpdCBjb250YWlucyA6a2V5d29yZDpgeWllbGRgIHN0YXRlbWVudHMgZm9yIHByb2R1Y2luZyBhIHNlcmllcwotICAgICAgb2YgdmFsdWVzIHVzYWJsZSBpbiBhIGZvci1sb29wIG9yIHRoYXQgY2FuIGJlIHJldHJpZXZlZCBvbmUgYXQgYSB0aW1lIHdpdGgKLSAgICAgIHRoZSA6ZnVuYzpgbmV4dGAgZnVuY3Rpb24uIEVhY2ggOmtleXdvcmQ6YHlpZWxkYCB0ZW1wb3JhcmlseSBzdXNwZW5kcwotICAgICAgcHJvY2Vzc2luZywgcmVtZW1iZXJpbmcgdGhlIGxvY2F0aW9uIGV4ZWN1dGlvbiBzdGF0ZSAoaW5jbHVkaW5nIGxvY2FsCi0gICAgICB2YXJpYWJsZXMgYW5kIHBlbmRpbmcgdHJ5LXN0YXRlbWVudHMpLiAgV2hlbiB0aGUgZ2VuZXJhdG9yIHJlc3VtZXMsIGl0Ci0gICAgICBwaWNrcy11cCB3aGVyZSBpdCBsZWZ0LW9mZiAoaW4gY29udHJhc3QgdG8gZnVuY3Rpb25zIHdoaWNoIHN0YXJ0IGZyZXNoIG9uCi0gICAgICBldmVyeSBpbnZvY2F0aW9uKS4KKyAgICAgIEEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhIDp0ZXJtOmBnZW5lcmF0b3IgaXRlcmF0b3JgLiAgSXQgbG9va3MgbGlrZSBhCisgICAgICBub3JtYWwgZnVuY3Rpb24gZXhjZXB0IHRoYXQgaXQgY29udGFpbnMgOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9ucworICAgICAgZm9yIHByb2R1Y2luZyBhIHNlcmllcyBvZiB2YWx1ZXMgdXNhYmxlIGluIGEgZm9yLWxvb3Agb3IgdGhhdCBjYW4gYmUKKyAgICAgIHJldHJpZXZlZCBvbmUgYXQgYSB0aW1lIHdpdGggdGhlIDpmdW5jOmBuZXh0YCBmdW5jdGlvbi4KKworICAgICAgVXN1YWxseSByZWZlcnMgdG8gYSBnZW5lcmF0b3IgZnVuY3Rpb24sIGJ1dCBtYXkgcmVmZXIgdG8gYQorICAgICAgKmdlbmVyYXRvciBpdGVyYXRvciogaW4gc29tZSBjb250ZXh0cy4gIEluIGNhc2VzIHdoZXJlIHRoZSBpbnRlbmRlZAorICAgICAgbWVhbmluZyBpc24ndCBjbGVhciwgdXNpbmcgdGhlIGZ1bGwgdGVybXMgYXZvaWRzIGFtYmlndWl0eS4KKworICAgZ2VuZXJhdG9yIGl0ZXJhdG9yCisgICAgICBBbiBvYmplY3QgY3JlYXRlZCBieSBhIDp0ZXJtOmBnZW5lcmF0b3JgIGZ1bmN0aW9uLgorCisgICAgICBFYWNoIDprZXl3b3JkOmB5aWVsZGAgdGVtcG9yYXJpbHkgc3VzcGVuZHMgcHJvY2Vzc2luZywgcmVtZW1iZXJpbmcgdGhlCisgICAgICBsb2NhdGlvbiBleGVjdXRpb24gc3RhdGUgKGluY2x1ZGluZyBsb2NhbCB2YXJpYWJsZXMgYW5kIHBlbmRpbmcKKyAgICAgIHRyeS1zdGF0ZW1lbnRzKS4gIFdoZW4gdGhlICpnZW5lcmF0b3IgaXRlcmF0b3IqIHJlc3VtZXMsIGl0IHBpY2tzLXVwIHdoZXJlCisgICAgICBpdCBsZWZ0LW9mZiAoaW4gY29udHJhc3QgdG8gZnVuY3Rpb25zIHdoaWNoIHN0YXJ0IGZyZXNoIG9uIGV2ZXJ5CisgICAgICBpbnZvY2F0aW9uKS4KIAogICAgICAgLi4gaW5kZXg6OiBzaW5nbGU6IGdlbmVyYXRvciBleHByZXNzaW9uCiAKQEAgLTQxMCw2ICs0ODEsMTkgQEAKICAgICAgIHRoYW4gY29tcGlsZWQgb25lcywgdGhvdWdoIHRoZWlyIHByb2dyYW1zIGdlbmVyYWxseSBhbHNvIHJ1biBtb3JlCiAgICAgICBzbG93bHkuICBTZWUgYWxzbyA6dGVybTpgaW50ZXJhY3RpdmVgLgogCisgICBpbnRlcnByZXRlciBzaHV0ZG93bgorICAgICAgV2hlbiBhc2tlZCB0byBzaHV0IGRvd24sIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgZW50ZXJzIGEgc3BlY2lhbCBwaGFzZQorICAgICAgd2hlcmUgaXQgZ3JhZHVhbGx5IHJlbGVhc2VzIGFsbCBhbGxvY2F0ZWQgcmVzb3VyY2VzLCBzdWNoIGFzIG1vZHVsZXMKKyAgICAgIGFuZCB2YXJpb3VzIGNyaXRpY2FsIGludGVybmFsIHN0cnVjdHVyZXMuICBJdCBhbHNvIG1ha2VzIHNldmVyYWwgY2FsbHMKKyAgICAgIHRvIHRoZSA6dGVybTpgZ2FyYmFnZSBjb2xsZWN0b3IgPGdhcmJhZ2UgY29sbGVjdGlvbj5gLiBUaGlzIGNhbiB0cmlnZ2VyCisgICAgICB0aGUgZXhlY3V0aW9uIG9mIGNvZGUgaW4gdXNlci1kZWZpbmVkIGRlc3RydWN0b3JzIG9yIHdlYWtyZWYgY2FsbGJhY2tzLgorICAgICAgQ29kZSBleGVjdXRlZCBkdXJpbmcgdGhlIHNodXRkb3duIHBoYXNlIGNhbiBlbmNvdW50ZXIgdmFyaW91cworICAgICAgZXhjZXB0aW9ucyBhcyB0aGUgcmVzb3VyY2VzIGl0IHJlbGllcyBvbiBtYXkgbm90IGZ1bmN0aW9uIGFueW1vcmUKKyAgICAgIChjb21tb24gZXhhbXBsZXMgYXJlIGxpYnJhcnkgbW9kdWxlcyBvciB0aGUgd2FybmluZ3MgbWFjaGluZXJ5KS4KKworICAgICAgVGhlIG1haW4gcmVhc29uIGZvciBpbnRlcnByZXRlciBzaHV0ZG93biBpcyB0aGF0IHRoZSBgYF9fbWFpbl9fYGAgbW9kdWxlCisgICAgICBvciB0aGUgc2NyaXB0IGJlaW5nIHJ1biBoYXMgZmluaXNoZWQgZXhlY3V0aW5nLgorCiAgICBpdGVyYWJsZQogICAgICAgQW4gb2JqZWN0IGNhcGFibGUgb2YgcmV0dXJuaW5nIGl0cyBtZW1iZXJzIG9uZSBhdCBhIHRpbWUuIEV4YW1wbGVzIG9mCiAgICAgICBpdGVyYWJsZXMgaW5jbHVkZSBhbGwgc2VxdWVuY2UgdHlwZXMgKHN1Y2ggYXMgOmNsYXNzOmBsaXN0YCwgOmNsYXNzOmBzdHJgLApAQCAtNDUyLDEyICs1MzYsMTMgQEAKIAogICAgICAgQSBudW1iZXIgb2YgdG9vbHMgaW4gUHl0aG9uIGFjY2VwdCBrZXkgZnVuY3Rpb25zIHRvIGNvbnRyb2wgaG93IGVsZW1lbnRzCiAgICAgICBhcmUgb3JkZXJlZCBvciBncm91cGVkLiAgVGhleSBpbmNsdWRlIDpmdW5jOmBtaW5gLCA6ZnVuYzpgbWF4YCwKLSAgICAgIDpmdW5jOmBzb3J0ZWRgLCA6bWV0aDpgbGlzdC5zb3J0YCwgOmZ1bmM6YGhlYXBxLm5zbWFsbGVzdGAsCi0gICAgICA6ZnVuYzpgaGVhcHEubmxhcmdlc3RgLCBhbmQgOmZ1bmM6YGl0ZXJ0b29scy5ncm91cGJ5YC4KKyAgICAgIDpmdW5jOmBzb3J0ZWRgLCA6bWV0aDpgbGlzdC5zb3J0YCwgOmZ1bmM6YGhlYXBxLm1lcmdlYCwKKyAgICAgIDpmdW5jOmBoZWFwcS5uc21hbGxlc3RgLCA6ZnVuYzpgaGVhcHEubmxhcmdlc3RgLCBhbmQKKyAgICAgIDpmdW5jOmBpdGVydG9vbHMuZ3JvdXBieWAuCiAKICAgICAgIFRoZXJlIGFyZSBzZXZlcmFsIHdheXMgdG8gY3JlYXRlIGEga2V5IGZ1bmN0aW9uLiAgRm9yIGV4YW1wbGUuIHRoZQogICAgICAgOm1ldGg6YHN0ci5sb3dlcmAgbWV0aG9kIGNhbiBzZXJ2ZSBhcyBhIGtleSBmdW5jdGlvbiBmb3IgY2FzZSBpbnNlbnNpdGl2ZQotICAgICAgc29ydHMuICBBbHRlcm5hdGl2ZWx5LCBhbiBhZC1ob2Mga2V5IGZ1bmN0aW9uIGNhbiBiZSBidWlsdCBmcm9tIGEKKyAgICAgIHNvcnRzLiAgQWx0ZXJuYXRpdmVseSwgYSBrZXkgZnVuY3Rpb24gY2FuIGJlIGJ1aWx0IGZyb20gYQogICAgICAgOmtleXdvcmQ6YGxhbWJkYWAgZXhwcmVzc2lvbiBzdWNoIGFzIGBgbGFtYmRhIHI6IChyWzBdLCByWzJdKWBgLiAgQWxzbywKICAgICAgIHRoZSA6bW9kOmBvcGVyYXRvcmAgbW9kdWxlIHByb3ZpZGVzIHRocmVlIGtleSBmdW5jdGlvbiBjb25zdHJ1Y3RvcnM6CiAgICAgICA6ZnVuYzpgfm9wZXJhdG9yLmF0dHJnZXR0ZXJgLCA6ZnVuYzpgfm9wZXJhdG9yLml0ZW1nZXR0ZXJgLCBhbmQKQEAgLTUxMiwxMCArNTk3LDEzIEBACiAgICAgICA6Y2xhc3M6YGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YCBhbmQgOmNsYXNzOmBjb2xsZWN0aW9ucy5Db3VudGVyYC4KIAogICAgbWV0YSBwYXRoIGZpbmRlcgotICAgICAgQSBmaW5kZXIgcmV0dXJuZWQgYnkgYSBzZWFyY2ggb2YgOmRhdGE6YHN5cy5tZXRhX3BhdGhgLiAgTWV0YSBwYXRoCisgICAgICBBIDp0ZXJtOmBmaW5kZXJgIHJldHVybmVkIGJ5IGEgc2VhcmNoIG9mIDpkYXRhOmBzeXMubWV0YV9wYXRoYC4gIE1ldGEgcGF0aAogICAgICAgZmluZGVycyBhcmUgcmVsYXRlZCB0bywgYnV0IGRpZmZlcmVudCBmcm9tIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcnMKICAgICAgIDxwYXRoIGVudHJ5IGZpbmRlcj5gLgogCisgICAgICBTZWUgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLk1ldGFQYXRoRmluZGVyYCBmb3IgdGhlIG1ldGhvZHMgdGhhdCBtZXRhIHBhdGgKKyAgICAgIGZpbmRlcnMgaW1wbGVtZW50LgorCiAgICBtZXRhY2xhc3MKICAgICAgIFRoZSBjbGFzcyBvZiBhIGNsYXNzLiAgQ2xhc3MgZGVmaW5pdGlvbnMgY3JlYXRlIGEgY2xhc3MgbmFtZSwgYSBjbGFzcwogICAgICAgZGljdGlvbmFyeSwgYW5kIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMuICBUaGUgbWV0YWNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvcgpAQCAtNTM4LDcgKzYyNiw4IEBACiAgICBtZXRob2QgcmVzb2x1dGlvbiBvcmRlcgogICAgICAgTWV0aG9kIFJlc29sdXRpb24gT3JkZXIgaXMgdGhlIG9yZGVyIGluIHdoaWNoIGJhc2UgY2xhc3NlcyBhcmUgc2VhcmNoZWQKICAgICAgIGZvciBhIG1lbWJlciBkdXJpbmcgbG9va3VwLiBTZWUgYFRoZSBQeXRob24gMi4zIE1ldGhvZCBSZXNvbHV0aW9uIE9yZGVyCi0gICAgICA8aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9yZWxlYXNlcy8yLjMvbXJvLz5gXy4KKyAgICAgIDxodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLzIuMy9tcm8vPmBfIGZvciBkZXRhaWxzIG9mIHRoZQorICAgICAgYWxnb3JpdGhtIHVzZWQgYnkgdGhlIFB5dGhvbiBpbnRlcnByZXRlciBzaW5jZSB0aGUgMi4zIHJlbGVhc2UuCiAKICAgIG1vZHVsZQogICAgICAgQW4gb2JqZWN0IHRoYXQgc2VydmVzIGFzIGFuIG9yZ2FuaXphdGlvbmFsIHVuaXQgb2YgUHl0aG9uIGNvZGUuICBNb2R1bGVzCkBAIC01NDksNyArNjM4LDcgQEAKIAogICAgbW9kdWxlIHNwZWMKICAgICAgIEEgbmFtZXNwYWNlIGNvbnRhaW5pbmcgdGhlIGltcG9ydC1yZWxhdGVkIGluZm9ybWF0aW9uIHVzZWQgdG8gbG9hZCBhCi0gICAgICBtb2R1bGUuCisgICAgICBtb2R1bGUuIEFuIGluc3RhbmNlIG9mIDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5Nb2R1bGVTcGVjYC4KIAogICAgTVJPCiAgICAgICBTZWUgOnRlcm06YG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyYC4KQEAgLTY3Niw2ICs3NjUsOSBAQAogICAgICAgKGkuZS4gYSA6dGVybTpgcGF0aCBlbnRyeSBob29rYCkgd2hpY2gga25vd3MgaG93IHRvIGxvY2F0ZSBtb2R1bGVzIGdpdmVuCiAgICAgICBhIDp0ZXJtOmBwYXRoIGVudHJ5YC4KIAorICAgICAgU2VlIDpjbGFzczpgaW1wb3J0bGliLmFiYy5QYXRoRW50cnlGaW5kZXJgIGZvciB0aGUgbWV0aG9kcyB0aGF0IHBhdGggZW50cnkKKyAgICAgIGZpbmRlcnMgaW1wbGVtZW50LgorCiAgICBwYXRoIGVudHJ5IGhvb2sKICAgICAgIEEgY2FsbGFibGUgb24gdGhlIDpkYXRhOmBzeXMucGF0aF9ob29rYCBsaXN0IHdoaWNoIHJldHVybnMgYSA6dGVybTpgcGF0aAogICAgICAgZW50cnkgZmluZGVyYCBpZiBpdCBrbm93cyBob3cgdG8gZmluZCBtb2R1bGVzIG9uIGEgc3BlY2lmaWMgOnRlcm06YHBhdGgKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9jbGluaWMucnN0IGIvRG9jL2hvd3RvL2NsaW5pYy5yc3QKaW5kZXggZTM2MjYzMS4uYjA0ZWRlYSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2NsaW5pYy5yc3QKKysrIGIvRG9jL2hvd3RvL2NsaW5pYy5yc3QKQEAgLTc1OCw2ICs3NTgsMTQgQEAKIEluIGFkZGl0aW9uLCBzb21lIGNvbnZlcnRlcnMgYWNjZXB0IGFkZGl0aW9uYWwgYXJndW1lbnRzLiAgSGVyZSBpcyBhIGxpc3QKIG9mIHRoZXNlIGFyZ3VtZW50cywgYWxvbmcgd2l0aCB0aGVpciBtZWFuaW5nczoKIAorICBgYGFjY2VwdGBgCisgICAgQSBzZXQgb2YgUHl0aG9uIHR5cGVzIChhbmQgcG9zc2libHkgcHNldWRvLXR5cGVzKTsKKyAgICB0aGlzIHJlc3RyaWN0cyB0aGUgYWxsb3dhYmxlIFB5dGhvbiBhcmd1bWVudCB0byB2YWx1ZXMgb2YgdGhlc2UgdHlwZXMuCisgICAgKFRoaXMgaXMgbm90IGEgZ2VuZXJhbC1wdXJwb3NlIGZhY2lsaXR5OyBhcyBhIHJ1bGUgaXQgb25seSBzdXBwb3J0cworICAgIHNwZWNpZmljIGxpc3RzIG9mIHR5cGVzIGFzIHNob3duIGluIHRoZSBsZWdhY3kgY29udmVydGVyIHRhYmxlLikKKworICAgIFRvIGFjY2VwdCBgYE5vbmVgYCwgYWRkIGBgTm9uZVR5cGVgYCB0byB0aGlzIHNldC4KKwogICBgYGJpdHdpc2VgYAogICAgIE9ubHkgc3VwcG9ydGVkIGZvciB1bnNpZ25lZCBpbnRlZ2Vycy4gIFRoZSBuYXRpdmUgaW50ZWdlciB2YWx1ZSBvZiB0aGlzCiAgICAgUHl0aG9uIGFyZ3VtZW50IHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgcGFyYW1ldGVyIHdpdGhvdXQgYW55IHJhbmdlIGNoZWNraW5nLApAQCAtNzcyLDM5ICs3ODAsMjcgQEAKICAgICBPbmx5IHN1cHBvcnRlZCBmb3Igc3RyaW5ncy4gIFNwZWNpZmllcyB0aGUgZW5jb2RpbmcgdG8gdXNlIHdoZW4gY29udmVydGluZwogICAgIHRoaXMgc3RyaW5nIGZyb20gYSBQeXRob24gc3RyIChVbmljb2RlKSB2YWx1ZSBpbnRvIGEgQyBgYGNoYXIgKmBgIHZhbHVlLgogCi0gIGBgbGVuZ3RoYGAKLSAgICBPbmx5IHN1cHBvcnRlZCBmb3Igc3RyaW5ncy4gIElmIHRydWUsIHJlcXVlc3RzIHRoYXQgdGhlIGxlbmd0aCBvZiB0aGUKLSAgICBzdHJpbmcgYmUgcGFzc2VkIGluIHRvIHRoZSBpbXBsIGZ1bmN0aW9uLCBqdXN0IGFmdGVyIHRoZSBzdHJpbmcgcGFyYW1ldGVyLAotICAgIGluIGEgcGFyYW1ldGVyIG5hbWVkIGBgPHBhcmFtZXRlcl9uYW1lPl9sZW5ndGhgYC4KLQotICBgYG51bGxhYmxlYGAKLSAgICBPbmx5IHN1cHBvcnRlZCBmb3Igc3RyaW5ncy4gIElmIHRydWUsIHRoaXMgcGFyYW1ldGVyIG1heSBhbHNvIGJlIHNldCB0bwotICAgIGBgTm9uZWBgLCBpbiB3aGljaCBjYXNlIHRoZSBDIHBhcmFtZXRlciB3aWxsIGJlIHNldCB0byBgYE5VTExgYC4KIAogICBgYHN1YmNsYXNzX29mYGAKICAgICBPbmx5IHN1cHBvcnRlZCBmb3IgdGhlIGBgb2JqZWN0YGAgY29udmVydGVyLiAgUmVxdWlyZXMgdGhhdCB0aGUgUHl0aG9uCiAgICAgdmFsdWUgYmUgYSBzdWJjbGFzcyBvZiBhIFB5dGhvbiB0eXBlLCBhcyBleHByZXNzZWQgaW4gQy4KIAotICBgYHR5cGVzYGAKLSAgICBPbmx5IHN1cHBvcnRlZCBmb3IgdGhlIGBgb2JqZWN0YGAgKGFuZCBgYHNlbGZgYCkgY29udmVydGVyLiAgU3BlY2lmaWVzCisgIGBgdHlwZWBgCisgICAgT25seSBzdXBwb3J0ZWQgZm9yIHRoZSBgYG9iamVjdGBgIGFuZCBgYHNlbGZgYCBjb252ZXJ0ZXJzLiAgU3BlY2lmaWVzCiAgICAgdGhlIEMgdHlwZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBkZWNsYXJlIHRoZSB2YXJpYWJsZS4gIERlZmF1bHQgdmFsdWUgaXMKICAgICBgYCJQeU9iamVjdCAqImBgLgogCi0gIGBgdHlwZXNgYAotICAgIEEgc3RyaW5nIGNvbnRhaW5pbmcgYSBsaXN0IG9mIFB5dGhvbiB0eXBlcyAoYW5kIHBvc3NpYmx5IHBzZXVkby10eXBlcyk7Ci0gICAgdGhpcyByZXN0cmljdHMgdGhlIGFsbG93YWJsZSBQeXRob24gYXJndW1lbnQgdG8gdmFsdWVzIG9mIHRoZXNlIHR5cGVzLgotICAgIChUaGlzIGlzIG5vdCBhIGdlbmVyYWwtcHVycG9zZSBmYWNpbGl0eTsgYXMgYSBydWxlIGl0IG9ubHkgc3VwcG9ydHMKLSAgICBzcGVjaWZpYyBsaXN0cyBvZiB0eXBlcyBhcyBzaG93biBpbiB0aGUgbGVnYWN5IGNvbnZlcnRlciB0YWJsZS4pCi0KICAgYGB6ZXJvZXNgYAogICAgIE9ubHkgc3VwcG9ydGVkIGZvciBzdHJpbmdzLiAgSWYgdHJ1ZSwgZW1iZWRkZWQgTlVMIGJ5dGVzIChgYCdcXDAnYGApIGFyZQotICAgIHBlcm1pdHRlZCBpbnNpZGUgdGhlIHZhbHVlLgorICAgIHBlcm1pdHRlZCBpbnNpZGUgdGhlIHZhbHVlLiAgVGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIHdpbGwgYmUgcGFzc2VkIGluCisgICAgdG8gdGhlIGltcGwgZnVuY3Rpb24sIGp1c3QgYWZ0ZXIgdGhlIHN0cmluZyBwYXJhbWV0ZXIsIGFzIGEgcGFyYW1ldGVyIG5hbWVkCisgICAgYGA8cGFyYW1ldGVyX25hbWU+X2xlbmd0aGBgLgogCiBQbGVhc2Ugbm90ZSwgbm90IGV2ZXJ5IHBvc3NpYmxlIGNvbWJpbmF0aW9uIG9mIGFyZ3VtZW50cyB3aWxsIHdvcmsuCi1PZnRlbiB0aGVzZSBhcmd1bWVudHMgYXJlIGltcGxlbWVudGVkIGludGVybmFsbHkgYnkgc3BlY2lmaWMgYGBQeUFyZ19QYXJzZVR1cGxlYGAKK1VzdWFsbHkgdGhlc2UgYXJndW1lbnRzIGFyZSBpbXBsZW1lbnRlZCBieSBzcGVjaWZpYyBgYFB5QXJnX1BhcnNlVHVwbGVgYAogKmZvcm1hdCB1bml0cyosIHdpdGggc3BlY2lmaWMgYmVoYXZpb3IuICBGb3IgZXhhbXBsZSwgY3VycmVudGx5IHlvdSBjYW5ub3QKLWNhbGwgYGBzdHJgYCBhbmQgcGFzcyBpbiBgYHplcm9lcz1UcnVlYGAgd2l0aG91dCBhbHNvIHNwZWNpZnlpbmcgYW4gYGBlbmNvZGluZ2BgOwotYWx0aG91Z2ggaXQncyBwZXJmZWN0bHkgcmVhc29uYWJsZSB0byB0aGluayB0aGlzIHdvdWxkIHdvcmssIHRoZXNlIHNlbWFudGljcyBkb24ndAorY2FsbCBgYHVuc2lnbmVkX3Nob3J0YGAgd2l0aG91dCBhbHNvIHNwZWNpZnlpbmcgYGBiaXR3aXNlPVRydWVgYC4KK0FsdGhvdWdoIGl0J3MgcGVyZmVjdGx5IHJlYXNvbmFibGUgdG8gdGhpbmsgdGhpcyB3b3VsZCB3b3JrLCB0aGVzZSBzZW1hbnRpY3MgZG9uJ3QKIG1hcCB0byBhbnkgZXhpc3RpbmcgZm9ybWF0IHVuaXQuICBTbyBBcmd1bWVudCBDbGluaWMgZG9lc24ndCBzdXBwb3J0IGl0LiAgKE9yLCBhdAogbGVhc3QsIG5vdCB5ZXQuKQogCkBAIC04MTYsMTMgKzgxMiwxMyBAQAogYGAnQidgYCAgICAgYGB1bnNpZ25lZF9jaGFyKGJpdHdpc2U9VHJ1ZSlgYAogYGAnYidgYCAgICAgYGB1bnNpZ25lZF9jaGFyYGAKIGBgJ2MnYGAgICAgIGBgY2hhcmBgCi1gYCdDJ2BgICAgICBgYGludCh0eXBlcz0nc3RyJylgYAorYGAnQydgYCAgICAgYGBpbnQoYWNjZXB0PXtzdHJ9KWBgCiBgYCdkJ2BgICAgICBgYGRvdWJsZWBgCiBgYCdEJ2BgICAgICBgYFB5X2NvbXBsZXhgYAotYGAnZXMjJ2BgICAgYGBzdHIoZW5jb2Rpbmc9J25hbWVfb2ZfZW5jb2RpbmcnLCBsZW5ndGg9VHJ1ZSwgemVyb2VzPVRydWUpYGAKIGBgJ2VzJ2BgICAgIGBgc3RyKGVuY29kaW5nPSduYW1lX29mX2VuY29kaW5nJylgYAotYGAnZXQjJ2BgICAgYGBzdHIoZW5jb2Rpbmc9J25hbWVfb2ZfZW5jb2RpbmcnLCB0eXBlcz0nYnl0ZXMgYnl0ZWFycmF5IHN0cicsIGxlbmd0aD1UcnVlKWBgCi1gYCdldCdgYCAgICBgYHN0cihlbmNvZGluZz0nbmFtZV9vZl9lbmNvZGluZycsIHR5cGVzPSdieXRlcyBieXRlYXJyYXkgc3RyJylgYAorYGAnZXMjJ2BgICAgYGBzdHIoZW5jb2Rpbmc9J25hbWVfb2ZfZW5jb2RpbmcnLCB6ZXJvZXM9VHJ1ZSlgYAorYGAnZXQnYGAgICAgYGBzdHIoZW5jb2Rpbmc9J25hbWVfb2ZfZW5jb2RpbmcnLCBhY2NlcHQ9e2J5dGVzLCBieXRlYXJyYXksIHN0cn0pYGAKK2BgJ2V0IydgYCAgIGBgc3RyKGVuY29kaW5nPSduYW1lX29mX2VuY29kaW5nJywgYWNjZXB0PXtieXRlcywgYnl0ZWFycmF5LCBzdHJ9LCB6ZXJvZXM9VHJ1ZSlgYAogYGAnZidgYCAgICAgYGBmbG9hdGBgCiBgYCdoJ2BgICAgICBgYHNob3J0YGAKIGBgJ0gnYGAgICAgIGBgdW5zaWduZWRfc2hvcnQoYml0d2lzZT1UcnVlKWBgCkBAIC04MzAsMjkgKzgyNiwzMCBAQAogYGAnSSdgYCAgICAgYGB1bnNpZ25lZF9pbnQoYml0d2lzZT1UcnVlKWBgCiBgYCdrJ2BgICAgICBgYHVuc2lnbmVkX2xvbmcoYml0d2lzZT1UcnVlKWBgCiBgYCdLJ2BgICAgICBgYHVuc2lnbmVkX1BZX0xPTkdfTE9ORyhiaXR3aXNlPVRydWUpYGAKK2BgJ2wnYGAgICAgIGBgbG9uZ2BgCiBgYCdMJ2BgICAgICBgYFBZX0xPTkdfTE9OR2BgCiBgYCduJ2BgICAgICBgYFB5X3NzaXplX3RgYAorYGAnTydgYCAgICAgYGBvYmplY3RgYAogYGAnTyEnYGAgICAgYGBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeVNvbWV0aGluZ19UeXBlJylgYAogYGAnTyYnYGAgICAgYGBvYmplY3QoY29udmVydGVyPSduYW1lX29mX2NfZnVuY3Rpb24nKWBgCi1gYCdPJ2BgICAgICBgYG9iamVjdGBgCiBgYCdwJ2BgICAgICBgYGJvb2xgYAotYGAncyMnYGAgICAgYGBzdHIobGVuZ3RoPVRydWUpYGAKIGBgJ1MnYGAgICAgIGBgUHlCeXRlc09iamVjdGBgCiBgYCdzJ2BgICAgICBgYHN0cmBgCi1gYCdzKidgYCAgICBgYFB5X2J1ZmZlcih0eXBlcz0nc3RyIGJ5dGVzIGJ5dGVhcnJheSBidWZmZXInKWBgCi1gYCd1IydgYCAgICBgYFB5X1VOSUNPREUobGVuZ3RoPVRydWUpYGAKLWBgJ3UnYGAgICAgIGBgUHlfVU5JQ09ERWBgCitgYCdzIydgYCAgICBgYHN0cih6ZXJvZXM9VHJ1ZSlgYAorYGAncyonYGAgICAgYGBQeV9idWZmZXIoYWNjZXB0PXtidWZmZXIsIHN0cn0pYGAKIGBgJ1UnYGAgICAgIGBgdW5pY29kZWBgCi1gYCd3KidgYCAgICBgYFB5X2J1ZmZlcih0eXBlcz0nYnl0ZWFycmF5IHJ3YnVmZmVyJylgYAotYGAneSMnYGAgICAgYGBzdHIodHlwZXM9J2J5dGVzJywgbGVuZ3RoPVRydWUpYGAKK2BgJ3UnYGAgICAgIGBgUHlfVU5JQ09ERWBgCitgYCd1IydgYCAgICBgYFB5X1VOSUNPREUoemVyb2VzPVRydWUpYGAKK2BgJ3cqJ2BgICAgIGBgUHlfYnVmZmVyKGFjY2VwdD17cndidWZmZXJ9KWBgCiBgYCdZJ2BgICAgICBgYFB5Qnl0ZUFycmF5T2JqZWN0YGAKLWBgJ3knYGAgICAgIGBgc3RyKHR5cGVzPSdieXRlcycpYGAKK2BgJ3knYGAgICAgIGBgc3RyKGFjY2VwdD17Ynl0ZXN9KWBgCitgYCd5IydgYCAgICBgYHN0cihhY2NlcHQ9e3JvYnVmZmVyfSwgemVyb2VzPVRydWUpYGAKIGBgJ3kqJ2BgICAgIGBgUHlfYnVmZmVyYGAKLWBgJ1ojJ2BgICAgIGBgUHlfVU5JQ09ERShudWxsYWJsZT1UcnVlLCBsZW5ndGg9VHJ1ZSlgYAotYGAneiMnYGAgICAgYGBzdHIobnVsbGFibGU9VHJ1ZSwgbGVuZ3RoPVRydWUpYGAKLWBgJ1onYGAgICAgIGBgUHlfVU5JQ09ERShudWxsYWJsZT1UcnVlKWBgCi1gYCd6J2BgICAgICBgYHN0cihudWxsYWJsZT1UcnVlKWBgCi1gYCd6KidgYCAgICBgYFB5X2J1ZmZlcih0eXBlcz0nc3RyIGJ5dGVzIGJ5dGVhcnJheSBidWZmZXInLCBudWxsYWJsZT1UcnVlKWBgCitgYCdaJ2BgICAgICBgYFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSlgYAorYGAnWiMnYGAgICAgYGBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0sIHplcm9lcz1UcnVlKWBgCitgYCd6J2BgICAgICBgYHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KWBgCitgYCd6IydgYCAgICBgYHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9LCB6ZXJvZXM9VHJ1ZSlgYAorYGAneionYGAgICAgYGBQeV9idWZmZXIoYWNjZXB0PXtidWZmZXIsIHN0ciwgTm9uZVR5cGV9KWBgCiA9PT09PT09PT0gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogQXMgYW4gZXhhbXBsZSwgaGVyZSdzIG91ciBzYW1wbGUgYGBwaWNrbGUuUGlja2xlci5kdW1wYGAgdXNpbmcgdGhlIHByb3BlcgpAQCAtMTI1MiwxOCArMTI0OSwxOCBAQAogCiAgICAgLypbcHl0aG9uIGlucHV0XQogCi0gICAgY2xhc3MgdWludF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgY2xhc3MgY2FwcGVkX3VpbnRfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgICAgICB0eXBlID0gJ3Vuc2lnbmVkIGludCcKLSAgICAgICAgY29udmVydGVyID0gJ3VpbnRfY29udmVydGVyJworICAgICAgICBjb252ZXJ0ZXIgPSAnY2FwcGVkX3VpbnRfY29udmVydGVyJwogCiAgICAgW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotICAgIC8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IGNoZWNrc3VtPWRhMzlhM2VlNWU2YjRiMGQzMjU1YmZlZjk1NjAxODkwYWZkODA3MDldKi8KKyAgICAvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0zNTUyMWU0ZTczMzgyM2M3XSovCiAKLVRoaXMgYmxvY2sgYWRkcyBhIGNvbnZlcnRlciB0byBBcmd1bWVudCBDbGluaWMgbmFtZWQgYGB1aW50YGAuICBQYXJhbWV0ZXJzCi1kZWNsYXJlZCBhcyBgYHVpbnRgYCB3aWxsIGJlIGRlY2xhcmVkIGFzIHR5cGUgYGB1bnNpZ25lZCBpbnRgYCwgYW5kIHdpbGwKLWJlIHBhcnNlZCBieSB0aGUgYGAnTyYnYGAgZm9ybWF0IHVuaXQsIHdoaWNoIHdpbGwgY2FsbCB0aGUgYGB1aW50X2NvbnZlcnRlcmBgCi1jb252ZXJ0ZXIgZnVuY3Rpb24uCi1gYHVpbnRgYCB2YXJpYWJsZXMgYXV0b21hdGljYWxseSBzdXBwb3J0IGRlZmF1bHQgdmFsdWVzLgorVGhpcyBibG9jayBhZGRzIGEgY29udmVydGVyIHRvIEFyZ3VtZW50IENsaW5pYyBuYW1lZCBgYGNhcHBlZF91aW50YGAuICBQYXJhbWV0ZXJzCitkZWNsYXJlZCBhcyBgYGNhcHBlZF91aW50YGAgd2lsbCBiZSBkZWNsYXJlZCBhcyB0eXBlIGBgdW5zaWduZWQgaW50YGAsIGFuZCB3aWxsCitiZSBwYXJzZWQgYnkgdGhlIGBgJ08mJ2BgIGZvcm1hdCB1bml0LCB3aGljaCB3aWxsIGNhbGwgdGhlCitgYGNhcHBlZF91aW50X2NvbnZlcnRlcmBgIGNvbnZlcnRlciBmdW5jdGlvbi4gIGBgY2FwcGVkX3VpbnRgYCB2YXJpYWJsZXMKK2F1dG9tYXRpY2FsbHkgc3VwcG9ydCBkZWZhdWx0IHZhbHVlcy4KIAogTW9yZSBzb3BoaXN0aWNhdGVkIGN1c3RvbSBjb252ZXJ0ZXJzIGNhbiBpbnNlcnQgY3VzdG9tIEMgY29kZSB0bwogaGFuZGxlIGluaXRpYWxpemF0aW9uIGFuZCBjbGVhbnVwLgpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2Z1bmN0aW9uYWwucnN0IGIvRG9jL2hvd3RvL2Z1bmN0aW9uYWwucnN0CmluZGV4IDE5NjliMzIuLjk0NWEyNDAgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9mdW5jdGlvbmFsLnJzdAorKysgYi9Eb2MvaG93dG8vZnVuY3Rpb25hbC5yc3QKQEAgLTQ4MSwxMCArNDgxLDEwIEBACiBZb3UgY291bGQgZXF1YWxseSB3cml0ZSBgYGZvciBpIGluIGdlbmVyYXRlX2ludHMoNSlgYCwgb3IgYGBhLGIsYyA9CiBnZW5lcmF0ZV9pbnRzKDMpYGAuCiAKLUluc2lkZSBhIGdlbmVyYXRvciBmdW5jdGlvbiwgYGByZXR1cm4gdmFsdWVgYCBpcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bwotYGByYWlzZSBTdG9wSXRlcmF0aW9uKHZhbHVlKWBgLiAgSWYgbm8gdmFsdWUgaXMgcmV0dXJuZWQgb3IgdGhlIGJvdHRvbSBvZiB0aGUKLWZ1bmN0aW9uIGlzIHJlYWNoZWQsIHRoZSBwcm9jZXNzaW9uIG9mIHZhbHVlcyBlbmRzIGFuZCB0aGUgZ2VuZXJhdG9yIGNhbm5vdAotcmV0dXJuIGFueSBmdXJ0aGVyIHZhbHVlcy4KK0luc2lkZSBhIGdlbmVyYXRvciBmdW5jdGlvbiwgYGByZXR1cm4gdmFsdWVgYCBjYXVzZXMgYGBTdG9wSXRlcmF0aW9uKHZhbHVlKWBgCit0byBiZSByYWlzZWQgZnJvbSB0aGUgOm1ldGg6YH5nZW5lcmF0b3IuX19uZXh0X19gIG1ldGhvZC4gIE9uY2UgdGhpcyBoYXBwZW5zLCBvcgordGhlIGJvdHRvbSBvZiB0aGUgZnVuY3Rpb24gaXMgcmVhY2hlZCwgdGhlIHByb2Nlc3Npb24gb2YgdmFsdWVzIGVuZHMgYW5kIHRoZQorZ2VuZXJhdG9yIGNhbm5vdCB5aWVsZCBhbnkgZnVydGhlciB2YWx1ZXMuCiAKIFlvdSBjb3VsZCBhY2hpZXZlIHRoZSBlZmZlY3Qgb2YgZ2VuZXJhdG9ycyBtYW51YWxseSBieSB3cml0aW5nIHlvdXIgb3duIGNsYXNzCiBhbmQgc3RvcmluZyBhbGwgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZ2VuZXJhdG9yIGFzIGluc3RhbmNlIHZhcmlhYmxlcy4gIEZvcgpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2xvZ2dpbmctY29va2Jvb2sucnN0IGIvRG9jL2hvd3RvL2xvZ2dpbmctY29va2Jvb2sucnN0CmluZGV4IGFmODg4YzIuLmI5NzlhYTcgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9sb2dnaW5nLWNvb2tib29rLnJzdAorKysgYi9Eb2MvaG93dG8vbG9nZ2luZy1jb29rYm9vay5yc3QKQEAgLTMyNSw2ICszMjUsMTUgQEAKIAogICAgIE1haW5UaHJlYWQ6IExvb2sgb3V0IQogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgUHJpb3IgdG8gUHl0aG9uIDMuNSwgdGhlIDpjbGFzczpgUXVldWVMaXN0ZW5lcmAgYWx3YXlzIHBhc3NlZCBldmVyeSBtZXNzYWdlCisgICByZWNlaXZlZCBmcm9tIHRoZSBxdWV1ZSB0byBldmVyeSBoYW5kbGVyIGl0IHdhcyBpbml0aWFsaXplZCB3aXRoLiAoVGhpcyB3YXMKKyAgIGJlY2F1c2UgaXQgd2FzIGFzc3VtZWQgdGhhdCBsZXZlbCBmaWx0ZXJpbmcgd2FzIGFsbCBkb25lIG9uIHRoZSBvdGhlciBzaWRlLAorICAgd2hlcmUgdGhlIHF1ZXVlIGlzIGZpbGxlZC4pIEZyb20gMy41IG9ud2FyZHMsIHRoaXMgYmVoYXZpb3VyIGNhbiBiZSBjaGFuZ2VkCisgICBieSBwYXNzaW5nIGEga2V5d29yZCBhcmd1bWVudCBgYHJlc3BlY3RfaGFuZGxlcl9sZXZlbD1UcnVlYGAgdG8gdGhlCisgICBsaXN0ZW5lcidzIGNvbnN0cnVjdG9yLiBXaGVuIHRoaXMgaXMgZG9uZSwgdGhlIGxpc3RlbmVyIGNvbXBhcmVzIHRoZSBsZXZlbAorICAgb2YgZWFjaCBtZXNzYWdlIHdpdGggdGhlIGhhbmRsZXIncyBsZXZlbCwgYW5kIG9ubHkgcGFzc2VzIGEgbWVzc2FnZSB0byBhCisgICBoYW5kbGVyIGlmIGl0J3MgYXBwcm9wcmlhdGUgdG8gZG8gc28uCiAKIC4uIF9uZXR3b3JrLWxvZ2dpbmc6CiAKQEAgLTE2ODAsNyArMTY4OSw3IEBACiAKICAgICBkZWYgbWFpbigpOgogICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuSU5GTywgZm9ybWF0PSclKG1lc3NhZ2UpcycpCi0gICAgICAgIGxvZ2dpbmcuaW5mbyhfKCdtZXNzYWdlIDEnLCBzZXRfdmFsdWU9c2V0KFsxLCAyLCAzXSksIHNub3dtYW49J1x1MjYwMycpKQorICAgICAgICBsb2dnaW5nLmluZm8oXygnbWVzc2FnZSAxJywgc2V0X3ZhbHVlPXsxLCAyLCAzfSwgc25vd21hbj0nXHUyNjAzJykpCiAKICAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICAgICBtYWluKCkKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9weXBvcnRpbmcucnN0IGIvRG9jL2hvd3RvL3B5cG9ydGluZy5yc3QKaW5kZXggNWU4NzVjZC4uYTJhYWYzNiAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL3B5cG9ydGluZy5yc3QKKysrIGIvRG9jL2hvd3RvL3B5cG9ydGluZy5yc3QKQEAgLTIwNywxMyArMjA3LDEyIEBACiB0YWJsZSBsaXN0cyB0aGUgKip1bmlxdWUqKiBtZXRob2RzIG9mIGVhY2ggZGF0YSB0eXBlIGFjcm9zcyBQeXRob24gMiAmIDMKIChlLmcuLCB0aGUgYGBkZWNvZGUoKWBgIG1ldGhvZCBpcyB1c2FibGUgb24gdGhlIGVxdWl2YWxlbnQgYmluYXJ5IGRhdGEgdHlwZSBpbgogZWl0aGVyIFB5dGhvbiAyIG9yIDMsIGJ1dCBpdCBjYW4ndCBiZSB1c2VkIGJ5IHRoZSB0ZXh0IGRhdGEgdHlwZSBjb25zaXN0ZW50bHkKLWJldHdlZW4gUHl0aG9uIDIgYW5kIDMgYmVjYXVzZSBgYHN0cmBgIGluIFB5dGhvbiAzIGRvZXNuJ3QgaGF2ZSB0aGUgbWV0aG9kKS4KK2JldHdlZW4gUHl0aG9uIDIgYW5kIDMgYmVjYXVzZSBgYHN0cmBgIGluIFB5dGhvbiAzIGRvZXNuJ3QgaGF2ZSB0aGUgbWV0aG9kKS4gRG8KK25vdGUgdGhhdCBhcyBvZiBQeXRob24gMy41IHRoZSBgYF9fbW9kX19gYCBtZXRob2Qgd2FzIGFkZGVkIHRvIHRoZSBieXRlcyB0eXBlLgogCiA9PT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09CiAqKlRleHQgZGF0YSoqICAgICAgICAgICAgKipCaW5hcnkgZGF0YSoqCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1fX21vZF9fIChgYCVgYCBvcGVyYXRvcikKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFwgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGVuY29kZQpAQCAtMzQ4LDEwICszNDcsMTIgQEAKIFB5dGhvbiAyIG9yIDMgc3VwcG9ydC4KIAogWW91IG1heSBhbHNvIHdhbnQgdG8gdXNlIHVzZSB0aGUgYGAtYmJgYCBmbGFnIHdpdGggdGhlIFB5dGhvbiAzIGludGVycHJldGVyIHRvCi10cmlnZ2VyIGFuIGV4Y2VwdGlvbiB3aGVuIHlvdSBhcmUgY29tcGFyaW5nIGJ5dGVzIHRvIHN0cmluZ3MuIFVzdWFsbHkgaXQncwotc2ltcGx5IGBgRmFsc2VgYCwgYnV0IGlmIHlvdSBtYWRlIGEgbWlzdGFrZSBpbiB5b3VyIHNlcGFyYXRpb24gb2YgdGV4dC9iaW5hcnkKLWRhdGEgaGFuZGxpbmcgeW91IG1heSBiZSBhY2NpZGVudGFsbHkgY29tcGFyaW5nIHRleHQgYW5kIGJpbmFyeSBkYXRhLiBUaGlzIGZsYWcKLXdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhhdCBvY2N1cnMgdG8gaGVscCB0cmFjayBkb3duIHN1Y2ggY2FzZXMuCit0cmlnZ2VyIGFuIGV4Y2VwdGlvbiB3aGVuIHlvdSBhcmUgY29tcGFyaW5nIGJ5dGVzIHRvIHN0cmluZ3Mgb3IgYnl0ZXMgdG8gYW4gaW50CisodGhlIGxhdHRlciBpcyBhdmFpbGFibGUgc3RhcnRpbmcgaW4gUHl0aG9uIDMuNSkuIEJ5IGRlZmF1bHQgdHlwZS1kaWZmZXJpbmcKK2NvbXBhcmlzb25zIHNpbXBseSByZXR1cm4gYGBGYWxzZWBgLCBidXQgaWYgeW91IG1hZGUgYSBtaXN0YWtlIGluIHlvdXIKK3NlcGFyYXRpb24gb2YgdGV4dC9iaW5hcnkgZGF0YSBoYW5kbGluZyBvciBpbmRleGluZyBvbiBieXRlcyB5b3Ugd291bGRuJ3QgZWFzaWx5CitmaW5kIHRoZSBtaXN0YWtlLiBUaGlzIGZsYWcgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGVzZSBraW5kcyBvZgorY29tcGFyaXNvbnMgb2NjdXIsIG1ha2luZyB0aGUgbWlzdGFrZSBtdWNoIGVhc2llciB0byB0cmFjayBkb3duLgogCiBBbmQgdGhhdCdzIG1vc3RseSBpdCEgQXQgdGhpcyBwb2ludCB5b3VyIGNvZGUgYmFzZSBpcyBjb21wYXRpYmxlIHdpdGggYm90aAogUHl0aG9uIDIgYW5kIDMgc2ltdWx0YW5lb3VzbHkuIFlvdXIgdGVzdGluZyB3aWxsIGFsc28gYmUgc2V0IHVwIHNvIHRoYXQgeW91CmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vcmVnZXgucnN0IGIvRG9jL2hvd3RvL3JlZ2V4LnJzdAppbmRleCA5YWUwNGQ3Li43MDcyMWE5IDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vcmVnZXgucnN0CisrKyBiL0RvYy9ob3d0by9yZWdleC5yc3QKQEAgLTEwMDQsMTcgKzEwMDQsMTggQEAKIAogQSBuZWdhdGl2ZSBsb29rYWhlYWQgY3V0cyB0aHJvdWdoIGFsbCB0aGlzIGNvbmZ1c2lvbjoKIAotYGAuKlsuXSg/IWJhdCQpLiokYGAgIFRoZSBuZWdhdGl2ZSBsb29rYWhlYWQgbWVhbnM6IGlmIHRoZSBleHByZXNzaW9uIGBgYmF0YGAKK2BgLipbLl0oPyFiYXQkKVteLl0qJGBgICBUaGUgbmVnYXRpdmUgbG9va2FoZWFkIG1lYW5zOiBpZiB0aGUgZXhwcmVzc2lvbiBgYGJhdGBgCiBkb2Vzbid0IG1hdGNoIGF0IHRoaXMgcG9pbnQsIHRyeSB0aGUgcmVzdCBvZiB0aGUgcGF0dGVybjsgaWYgYGBiYXQkYGAgZG9lcwogbWF0Y2gsIHRoZSB3aG9sZSBwYXR0ZXJuIHdpbGwgZmFpbC4gIFRoZSB0cmFpbGluZyBgYCRgYCBpcyByZXF1aXJlZCB0byBlbnN1cmUKIHRoYXQgc29tZXRoaW5nIGxpa2UgYGBzYW1wbGUuYmF0Y2hgYCwgd2hlcmUgdGhlIGV4dGVuc2lvbiBvbmx5IHN0YXJ0cyB3aXRoCi1gYGJhdGBgLCB3aWxsIGJlIGFsbG93ZWQuCitgYGJhdGBgLCB3aWxsIGJlIGFsbG93ZWQuICBUaGUgYGBbXi5dKmBgIG1ha2VzIHN1cmUgdGhhdCB0aGUgcGF0dGVybiB3b3Jrcword2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgZG90cyBpbiB0aGUgZmlsZW5hbWUuCiAKIEV4Y2x1ZGluZyBhbm90aGVyIGZpbGVuYW1lIGV4dGVuc2lvbiBpcyBub3cgZWFzeTsgc2ltcGx5IGFkZCBpdCBhcyBhbgogYWx0ZXJuYXRpdmUgaW5zaWRlIHRoZSBhc3NlcnRpb24uICBUaGUgZm9sbG93aW5nIHBhdHRlcm4gZXhjbHVkZXMgZmlsZW5hbWVzIHRoYXQKIGVuZCBpbiBlaXRoZXIgYGBiYXRgYCBvciBgYGV4ZWBgOgogCi1gYC4qWy5dKD8hYmF0JHxleGUkKS4qJGBgCitgYC4qWy5dKD8hYmF0JHxleGUkKVteLl0qJGBgCiAKIAogTW9kaWZ5aW5nIFN0cmluZ3MKQEAgLTExMzgsNyArMTEzOSw3IEBACiAKIElmICpyZXBsYWNlbWVudCogaXMgYSBzdHJpbmcsIGFueSBiYWNrc2xhc2ggZXNjYXBlcyBpbiBpdCBhcmUgcHJvY2Vzc2VkLiAgVGhhdAogaXMsIGBgXG5gYCBpcyBjb252ZXJ0ZWQgdG8gYSBzaW5nbGUgbmV3bGluZSBjaGFyYWN0ZXIsIGBgXHJgYCBpcyBjb252ZXJ0ZWQgdG8gYQotY2FycmlhZ2UgcmV0dXJuLCBhbmQgc28gZm9ydGguIFVua25vd24gZXNjYXBlcyBzdWNoIGFzIGBgXGpgYCBhcmUgbGVmdCBhbG9uZS4KK2NhcnJpYWdlIHJldHVybiwgYW5kIHNvIGZvcnRoLiBVbmtub3duIGVzY2FwZXMgc3VjaCBhcyBgYFwmYGAgYXJlIGxlZnQgYWxvbmUuCiBCYWNrcmVmZXJlbmNlcywgc3VjaCBhcyBgYFw2YGAsIGFyZSByZXBsYWNlZCB3aXRoIHRoZSBzdWJzdHJpbmcgbWF0Y2hlZCBieSB0aGUKIGNvcnJlc3BvbmRpbmcgZ3JvdXAgaW4gdGhlIFJFLiAgVGhpcyBsZXRzIHlvdSBpbmNvcnBvcmF0ZSBwb3J0aW9ucyBvZiB0aGUKIG9yaWdpbmFsIHRleHQgaW4gdGhlIHJlc3VsdGluZyByZXBsYWNlbWVudCBzdHJpbmcuCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vdW5pY29kZS5yc3QgYi9Eb2MvaG93dG8vdW5pY29kZS5yc3QKaW5kZXggYjQ5YWMzOS4uZWUzMWE5YyAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL3VuaWNvZGUucnN0CisrKyBiL0RvYy9ob3d0by91bmljb2RlLnJzdApAQCAtMjgwLDggKzI4MCw5IEBACiBUaGUgKmVycm9ycyogYXJndW1lbnQgc3BlY2lmaWVzIHRoZSByZXNwb25zZSB3aGVuIHRoZSBpbnB1dCBzdHJpbmcgY2FuJ3QgYmUKIGNvbnZlcnRlZCBhY2NvcmRpbmcgdG8gdGhlIGVuY29kaW5nJ3MgcnVsZXMuICBMZWdhbCB2YWx1ZXMgZm9yIHRoaXMgYXJndW1lbnQgYXJlCiBgYCdzdHJpY3QnYGAgKHJhaXNlIGEgOmV4YzpgVW5pY29kZURlY29kZUVycm9yYCBleGNlcHRpb24pLCBgYCdyZXBsYWNlJ2BgICh1c2UKLWBgVStGRkZEYGAsIGBgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSYGApLCBvciBgYCdpZ25vcmUnYGAgKGp1c3QgbGVhdmUgdGhlCi1jaGFyYWN0ZXIgb3V0IG9mIHRoZSBVbmljb2RlIHJlc3VsdCkuCitgYFUrRkZGRGBgLCBgYFJFUExBQ0VNRU5UIENIQVJBQ1RFUmBgKSwgYGAnaWdub3JlJ2BgIChqdXN0IGxlYXZlIHRoZQorY2hhcmFjdGVyIG91dCBvZiB0aGUgVW5pY29kZSByZXN1bHQpLCBvciBgYCdiYWNrc2xhc2hyZXBsYWNlJ2BgIChpbnNlcnRzIGEKK2BgXHhOTmBgIGVzY2FwZSBzZXF1ZW5jZSkuCiBUaGUgZm9sbG93aW5nIGV4YW1wbGVzIHNob3cgdGhlIGRpZmZlcmVuY2VzOjoKIAogICAgID4+PiBiJ1x4ODBhYmMnLmRlY29kZSgidXRmLTgiLCAic3RyaWN0IikgICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKQEAgLTI5MSw2ICsyOTIsOCBAQAogICAgICAgaW52YWxpZCBzdGFydCBieXRlCiAgICAgPj4+IGInXHg4MGFiYycuZGVjb2RlKCJ1dGYtOCIsICJyZXBsYWNlIikKICAgICAnXHVmZmZkYWJjJworICAgID4+PiBiJ1x4ODBhYmMnLmRlY29kZSgidXRmLTgiLCAiYmFja3NsYXNocmVwbGFjZSIpCisgICAgJ1xceDgwYWJjJwogICAgID4+PiBiJ1x4ODBhYmMnLmRlY29kZSgidXRmLTgiLCAiaWdub3JlIikKICAgICAnYWJjJwogCkBAIC0zMjUsOCArMzI4LDkgQEAKIDptZXRoOmB+Ynl0ZXMuZGVjb2RlYCBtZXRob2QgYnV0IHN1cHBvcnRzIGEgZmV3IG1vcmUgcG9zc2libGUgaGFuZGxlcnMuIEFzIHdlbGwgYXMKIGBgJ3N0cmljdCdgYCwgYGAnaWdub3JlJ2BgLCBhbmQgYGAncmVwbGFjZSdgYCAod2hpY2ggaW4gdGhpcyBjYXNlCiBpbnNlcnRzIGEgcXVlc3Rpb24gbWFyayBpbnN0ZWFkIG9mIHRoZSB1bmVuY29kYWJsZSBjaGFyYWN0ZXIpLCB0aGVyZSBpcwotYWxzbyBgYCd4bWxjaGFycmVmcmVwbGFjZSdgYCAoaW5zZXJ0cyBhbiBYTUwgY2hhcmFjdGVyIHJlZmVyZW5jZSkgYW5kCi1gYGJhY2tzbGFzaHJlcGxhY2VgYCAoaW5zZXJ0cyBhIGBgXHVOTk5OYGAgZXNjYXBlIHNlcXVlbmNlKS4KK2Fsc28gYGAneG1sY2hhcnJlZnJlcGxhY2UnYGAgKGluc2VydHMgYW4gWE1MIGNoYXJhY3RlciByZWZlcmVuY2UpLAorYGBiYWNrc2xhc2hyZXBsYWNlYGAgKGluc2VydHMgYSBgYFx1Tk5OTmBgIGVzY2FwZSBzZXF1ZW5jZSkgYW5kCitgYG5hbWVyZXBsYWNlYGAgKGluc2VydHMgYSBgYFxOey4uLn1gYCBlc2NhcGUgc2VxdWVuY2UpLgogCiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgdGhlIGRpZmZlcmVudCByZXN1bHRzOjoKIApAQCAtMzQ2LDYgKzM1MCw4IEBACiAgICAgYicmIzQwOTYwO2FiY2QmIzE5NzI7JwogICAgID4+PiB1LmVuY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpCiAgICAgYidcXHVhMDAwYWJjZFxcdTA3YjQnCisgICAgPj4+IHUuZW5jb2RlKCdhc2NpaScsICduYW1lcmVwbGFjZScpCisgICAgYidcXE57WUkgU1lMTEFCTEUgSVR9YWJjZFxcdTA3YjQnCiAKIFRoZSBsb3ctbGV2ZWwgcm91dGluZXMgZm9yIHJlZ2lzdGVyaW5nIGFuZCBhY2Nlc3NpbmcgdGhlIGF2YWlsYWJsZQogZW5jb2RpbmdzIGFyZSBmb3VuZCBpbiB0aGUgOm1vZDpgY29kZWNzYCBtb2R1bGUuICBJbXBsZW1lbnRpbmcgbmV3CmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvbm9kZHkuYyBiL0RvYy9pbmNsdWRlcy9ub2RkeS5jCmluZGV4IDhmNzlmY2YuLjE5YTI3YTggMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9ub2RkeS5jCisrKyBiL0RvYy9pbmNsdWRlcy9ub2RkeS5jCkBAIC0zOCw3ICszOCw3IEBACiB9OwogCiBQeU1PRElOSVRfRlVOQwotUHlJbml0X25vZGR5KHZvaWQpIAorUHlJbml0X25vZGR5KHZvaWQpCiB7CiAgICAgUHlPYmplY3QqIG07CiAKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9ydW4tZnVuYy5jIGIvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKaW5kZXggMWM5ODYwZC4uOTg2ZDY3MCAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKKysrIGIvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKQEAgLTEzLDcgKzEzLDcgQEAKICAgICB9CiAKICAgICBQeV9Jbml0aWFsaXplKCk7Ci0gICAgcE5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhhcmd2WzFdKTsKKyAgICBwTmFtZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoYXJndlsxXSk7CiAgICAgLyogRXJyb3IgY2hlY2tpbmcgb2YgcE5hbWUgbGVmdCBvdXQgKi8KIAogICAgIHBNb2R1bGUgPSBQeUltcG9ydF9JbXBvcnQocE5hbWUpOwpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL3R5cGVzdHJ1Y3QuaCBiL0RvYy9pbmNsdWRlcy90eXBlc3RydWN0LmgKaW5kZXggNzI2NTAwOS4uOWY0Nzg5OSAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL3R5cGVzdHJ1Y3QuaAorKysgYi9Eb2MvaW5jbHVkZXMvdHlwZXN0cnVjdC5oCkBAIC05LDcgKzksOCBAQAogICAgIHByaW50ZnVuYyB0cF9wcmludDsKICAgICBnZXRhdHRyZnVuYyB0cF9nZXRhdHRyOwogICAgIHNldGF0dHJmdW5jIHRwX3NldGF0dHI7Ci0gICAgdm9pZCAqdHBfcmVzZXJ2ZWQ7IC8qIGZvcm1lcmx5IGtub3duIGFzIHRwX2NvbXBhcmUgKi8KKyAgICBQeUFzeW5jTWV0aG9kcyAqdHBfYXNfYXN5bmM7IC8qIGZvcm1lcmx5IGtub3duIGFzIHRwX2NvbXBhcmUgKFB5dGhvbiAyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgdHBfcmVzZXJ2ZWQgKFB5dGhvbiAzKSAqLwogICAgIHJlcHJmdW5jIHRwX3JlcHI7CiAKICAgICAvKiBNZXRob2Qgc3VpdGVzIGZvciBzdGFuZGFyZCBjbGFzc2VzICovCmRpZmYgLS1naXQgYS9Eb2MvaW5zdGFsbC9pbmRleC5yc3QgYi9Eb2MvaW5zdGFsbC9pbmRleC5yc3QKaW5kZXggZTYzYjZjZC4uZmViZGI3YyAxMDA2NDQKLS0tIGEvRG9jL2luc3RhbGwvaW5kZXgucnN0CisrKyBiL0RvYy9pbnN0YWxsL2luZGV4LnJzdApAQCAtMzYxLDcgKzM2MSw3IEBACiBUeXBlIG9mIGZpbGUgICAgSW5zdGFsbGF0aW9uIGRpcmVjdG9yeQogPT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBtb2R1bGVzICAgICAgICAgOmZpbGU6YHt1c2VyYmFzZX1cXFB5dGhvbntYWX1cXHNpdGUtcGFja2FnZXNgCi1zY3JpcHRzICAgICAgICAgOmZpbGU6YHt1c2VyYmFzZX1cXFNjcmlwdHNgCitzY3JpcHRzICAgICAgICAgOmZpbGU6YHt1c2VyYmFzZX1cXFB5dGhvbntYWX1cXFNjcmlwdHNgCiBkYXRhICAgICAgICAgICAgOmZpbGU6YHt1c2VyYmFzZX1gCiBDIGhlYWRlcnMgICAgICAgOmZpbGU6YHt1c2VyYmFzZX1cXFB5dGhvbntYWX1cXEluY2x1ZGVcXHtkaXN0bmFtZX1gCiA9PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L19fZnV0dXJlX18ucnN0IGIvRG9jL2xpYnJhcnkvX19mdXR1cmVfXy5yc3QKaW5kZXggNzJmMjk2My4uNzNkOGI2YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvX19mdXR1cmVfXy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvX19mdXR1cmVfXy5yc3QKQEAgLTg3LDYgKzg3LDkgQEAKIHwgdW5pY29kZV9saXRlcmFscyB8IDIuNi4wYTIgICAgIHwgMy4wICAgICAgICAgIHwgOnBlcDpgMzExMmA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICpCeXRlcyBsaXRlcmFscyBpbiBQeXRob24gMzAwMCogICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgZ2VuZXJhdG9yX3N0b3AgICB8IDMuNS4wYjEgICAgIHwgMy43ICAgICAgICAgIHwgOnBlcDpgNDc5YDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICpTdG9wSXRlcmF0aW9uIGhhbmRsaW5nIGluc2lkZSBnZW5lcmF0b3JzKiAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogCiAuLiBzZWVhbHNvOjoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FyZ3BhcnNlLnJzdCBiL0RvYy9saWJyYXJ5L2FyZ3BhcnNlLnJzdAppbmRleCBkOTA3MjAzLi4yODc3NDM3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hcmdwYXJzZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXJncGFyc2UucnN0CkBAIC0xMzUsNyArMTM1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyX2NsYXNzPWFyZ3BhcnNlLkhlbHBGb3JtYXR0ZXIsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4X2NoYXJzPSctJywgZnJvbWZpbGVfcHJlZml4X2NoYXJzPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRfZGVmYXVsdD1Ob25lLCBjb25mbGljdF9oYW5kbGVyPSdlcnJvcicsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2hlbHA9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2hlbHA9VHJ1ZSwgYWxsb3dfYWJicmV2PVRydWUpCiAKICAgIENyZWF0ZSBhIG5ldyA6Y2xhc3M6YEFyZ3VtZW50UGFyc2VyYCBvYmplY3QuIEFsbCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBwYXNzZWQKICAgIGFzIGtleXdvcmQgYXJndW1lbnRzLiBFYWNoIHBhcmFtZXRlciBoYXMgaXRzIG93biBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uCkBAIC0xNjksNiArMTY5LDEyIEBACiAKICAgICogYWRkX2hlbHBfIC0gQWRkIGEgLWgvLS1oZWxwIG9wdGlvbiB0byB0aGUgcGFyc2VyIChkZWZhdWx0OiBgYFRydWVgYCkKIAorICAgKiBhbGxvd19hYmJyZXZfIC0gQWxsb3dzIGxvbmcgb3B0aW9ucyB0byBiZSBhYmJyZXZpYXRlZCBpZiB0aGUKKyAgICAgYWJicmV2aWF0aW9uIGlzIHVuYW1iaWd1b3VzLiAoZGVmYXVsdDogYGBUcnVlYGApCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAqYWxsb3dfYWJicmV2KiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorCiBUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGRlc2NyaWJlIGhvdyBlYWNoIG9mIHRoZXNlIGFyZSB1c2VkLgogCiAKQEAgLTUxOCw2ICs1MjQsMjYgQEAKICAgID4+PiBwYXJzZXIucGFyc2VfYXJncyhbXSkKICAgIE5hbWVzcGFjZSgpCiAKKy4uIF9hbGxvd19hYmJyZXY6CisKK2FsbG93X2FiYnJldgorXl5eXl5eXl5eXl5eCisKK05vcm1hbGx5LCB3aGVuIHlvdSBwYXNzIGFuIGFyZ3VtZW50IGxpc3QgdG8gdGhlCis6bWV0aDpgfkFyZ3VtZW50UGFyc2VyLnBhcnNlX2FyZ3NgIG1ldGhvZCBvZiBhbiA6Y2xhc3M6YEFyZ3VtZW50UGFyc2VyYCwKK2l0IDpyZWY6YHJlY29nbml6ZXMgYWJicmV2aWF0aW9ucyA8cHJlZml4LW1hdGNoaW5nPmAgb2YgbG9uZyBvcHRpb25zLgorCitUaGlzIGZlYXR1cmUgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgYGBhbGxvd19hYmJyZXZgYCB0byBgYEZhbHNlYGA6OgorCisgICA+Pj4gcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIocHJvZz0nUFJPRycsIGFsbG93X2FiYnJldj1GYWxzZSkKKyAgID4+PiBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWZvb2JhcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisgICA+Pj4gcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1mb29ubGV5JywgYWN0aW9uPSdzdG9yZV9mYWxzZScpCisgICA+Pj4gcGFyc2VyLnBhcnNlX2FyZ3MoWyctLWZvb24nXSkKKyAgIHVzYWdlOiBQUk9HIFstaF0gWy0tZm9vYmFyXSBbLS1mb29ubGV5XQorICAgUFJPRzogZXJyb3I6IHVucmVjb2duaXplZCBhcmd1bWVudHM6IC0tZm9vbgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogCiBjb25mbGljdF9oYW5kbGVyCiBeXl5eXl5eXl5eXl5eXl5eCkBAIC0xNDEwLDkgKzE0MzYsOSBAQAogQXJndW1lbnQgYWJicmV2aWF0aW9ucyAocHJlZml4IG1hdGNoaW5nKQogXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCi1UaGUgOm1ldGg6YH5Bcmd1bWVudFBhcnNlci5wYXJzZV9hcmdzYCBtZXRob2QgYWxsb3dzIGxvbmcgb3B0aW9ucyB0byBiZQotYWJicmV2aWF0ZWQgdG8gYSBwcmVmaXgsIGlmIHRoZSBhYmJyZXZpYXRpb24gaXMgdW5hbWJpZ3VvdXMgKHRoZSBwcmVmaXggbWF0Y2hlcwotYSB1bmlxdWUgb3B0aW9uKTo6CitUaGUgOm1ldGg6YH5Bcmd1bWVudFBhcnNlci5wYXJzZV9hcmdzYCBtZXRob2QgOnJlZjpgYnkgZGVmYXVsdCA8YWxsb3dfYWJicmV2PmAKK2FsbG93cyBsb25nIG9wdGlvbnMgdG8gYmUgYWJicmV2aWF0ZWQgdG8gYSBwcmVmaXgsIGlmIHRoZSBhYmJyZXZpYXRpb24gaXMKK3VuYW1iaWd1b3VzICh0aGUgcHJlZml4IG1hdGNoZXMgYSB1bmlxdWUgb3B0aW9uKTo6CiAKICAgID4+PiBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihwcm9nPSdQUk9HJykKICAgID4+PiBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYmFjb24nKQpAQCAtMTQyNiw2ICsxNDUyLDcgQEAKICAgIFBST0c6IGVycm9yOiBhbWJpZ3VvdXMgb3B0aW9uOiAtYmEgY291bGQgbWF0Y2ggLWJhZGdlciwgLWJhY29uCiAKIEFuIGVycm9yIGlzIHByb2R1Y2VkIGZvciBhcmd1bWVudHMgdGhhdCBjb3VsZCBwcm9kdWNlIG1vcmUgdGhhbiBvbmUgb3B0aW9ucy4KK1RoaXMgZmVhdHVyZSBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyA6cmVmOmBhbGxvd19hYmJyZXZgIHRvIGBgRmFsc2VgYC4KIAogCiBCZXlvbmQgYGBzeXMuYXJndmBgCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QgYi9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QKaW5kZXggYzZmYTA2MS4uNzk0ZGE4YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdApAQCAtMTQ3LDQwICsxNDcsNiBAQAogICAgYnkgdGhlIGNoYW5uZWwgYWZ0ZXIgOm1ldGg6YGZvdW5kX3Rlcm1pbmF0b3JgIGlzIGNhbGxlZC4KIAogCi1hc3luY2hhdCAtIEF1eGlsaWFyeSBDbGFzc2VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLi4gY2xhc3M6OiBmaWZvKGxpc3Q9Tm9uZSkKLQotICAgQSA6Y2xhc3M6YGZpZm9gIGhvbGRpbmcgZGF0YSB3aGljaCBoYXMgYmVlbiBwdXNoZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGJ1dAotICAgbm90IHlldCBwb3BwZWQgZm9yIHdyaXRpbmcgdG8gdGhlIGNoYW5uZWwuICBBIDpjbGFzczpgZmlmb2AgaXMgYSBsaXN0IHVzZWQKLSAgIHRvIGhvbGQgZGF0YSBhbmQvb3IgcHJvZHVjZXJzIHVudGlsIHRoZXkgYXJlIHJlcXVpcmVkLiAgSWYgdGhlICpsaXN0KgotICAgYXJndW1lbnQgaXMgcHJvdmlkZWQgdGhlbiBpdCBzaG91bGQgY29udGFpbiBwcm9kdWNlcnMgb3IgZGF0YSBpdGVtcyB0byBiZQotICAgd3JpdHRlbiB0byB0aGUgY2hhbm5lbC4KLQotCi0gICAuLiBtZXRob2Q6OiBpc19lbXB0eSgpCi0KLSAgICAgIFJldHVybnMgYGBUcnVlYGAgaWYgYW5kIG9ubHkgaWYgdGhlIGZpZm8gaXMgZW1wdHkuCi0KLQotICAgLi4gbWV0aG9kOjogZmlyc3QoKQotCi0gICAgICBSZXR1cm5zIHRoZSBsZWFzdC1yZWNlbnRseSA6bWV0aDpgcHVzaGBcIGVkIGl0ZW0gZnJvbSB0aGUgZmlmby4KLQotCi0gICAuLiBtZXRob2Q6OiBwdXNoKGRhdGEpCi0KLSAgICAgIEFkZHMgdGhlIGdpdmVuIGRhdGEgKHdoaWNoIG1heSBiZSBhIHN0cmluZyBvciBhIHByb2R1Y2VyIG9iamVjdCkgdG8gdGhlCi0gICAgICBwcm9kdWNlciBmaWZvLgotCi0KLSAgIC4uIG1ldGhvZDo6IHBvcCgpCi0KLSAgICAgIElmIHRoZSBmaWZvIGlzIG5vdCBlbXB0eSwgcmV0dXJucyBgYFRydWUsIGZpcnN0KClgYCwgZGVsZXRpbmcgdGhlIHBvcHBlZAotICAgICAgaXRlbS4gIFJldHVybnMgYGBGYWxzZSwgTm9uZWBgIGZvciBhbiBlbXB0eSBmaWZvLgotCi0KIC4uIF9hc3luY2hhdC1leGFtcGxlOgogCiBhc3luY2hhdCBFeGFtcGxlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY2lvLWRldi5yc3QgYi9Eb2MvbGlicmFyeS9hc3luY2lvLWRldi5yc3QKaW5kZXggMWQxZjc5NS4uMTU2YzVjMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNpby1kZXYucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tZGV2LnJzdApAQCAtMTA2LDYgKzEwNiw5IEBACiAKICAgICBsb29wLmNhbGxfc29vbl90aHJlYWRzYWZlKGZ1dC5jYW5jZWwpCiAKK1RvIGhhbmRsZSBzaWduYWxzIGFuZCB0byBleGVjdXRlIHN1YnByb2Nlc3NlcywgdGhlIGV2ZW50IGxvb3AgbXVzdCBiZSBydW4gaW4KK3RoZSBtYWluIHRocmVhZC4KKwogVG8gc2NoZWR1bGUgYSBjb3JvdXRpbmUgb2JqZWN0IGZyb20gYSBkaWZmZXJlbnQgdGhyZWFkLCB0aGUKIDpmdW5jOmBydW5fY29yb3V0aW5lX3RocmVhZHNhZmVgIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkLiBJdCByZXR1cm5zIGEKIDpjbGFzczpgY29uY3VycmVudC5mdXR1cmVzLkZ1dHVyZWAgdG8gYWNjZXNzIHRoZSByZXN1bHQ6OgpAQCAtMTEzLDkgKzExNiw2IEBACiAgICAgIGZ1dHVyZSA9IGFzeW5jaW8ucnVuX2Nvcm91dGluZV90aHJlYWRzYWZlKGNvcm9fZnVuYygpLCBsb29wKQogICAgICByZXN1bHQgPSBmdXR1cmUucmVzdWx0KHRpbWVvdXQpICAjIFdhaXQgZm9yIHRoZSByZXN1bHQgd2l0aCBhIHRpbWVvdXQKIAotVG8gaGFuZGxlIHNpZ25hbHMgYW5kIHRvIGV4ZWN1dGUgc3VicHJvY2Vzc2VzLCB0aGUgZXZlbnQgbG9vcCBtdXN0IGJlIHJ1biBpbgotdGhlIG1haW4gdGhyZWFkLgotCiBUaGUgOm1ldGg6YEJhc2VFdmVudExvb3AucnVuX2luX2V4ZWN1dG9yYCBtZXRob2QgY2FuIGJlIHVzZWQgd2l0aCBhIHRocmVhZCBwb29sCiBleGVjdXRvciB0byBleGVjdXRlIGEgY2FsbGJhY2sgaW4gZGlmZmVyZW50IHRocmVhZCB0byBub3QgYmxvY2sgdGhlIHRocmVhZCBvZgogdGhlIGV2ZW50IGxvb3AuCkBAIC0xNjgsMTAgKzE2OCwxMCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXaGVuIGEgY29yb3V0aW5lIGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgaXRzIHJlc3VsdCBpcyBub3QgcGFzc2VkIHRvCi06ZnVuYzpgYXN5bmNgIG9yIHRvIHRoZSA6bWV0aDpgQmFzZUV2ZW50TG9vcC5jcmVhdGVfdGFza2AgbWV0aG9kLCB0aGUgZXhlY3V0aW9uCi1vZiB0aGUgY29yb3V0aW5lIG9iamVjdCB3aWxsIG5ldmVyIGJlIHNjaGVkdWxlZCB3aGljaCBpcyBwcm9iYWJseSBhIGJ1Zy4KLTpyZWY6YEVuYWJsZSB0aGUgZGVidWcgbW9kZSBvZiBhc3luY2lvIDxhc3luY2lvLWRlYnVnLW1vZGU+YCB0byA6cmVmOmBsb2cgYQotd2FybmluZyA8YXN5bmNpby1sb2dnZXI+YCB0byBkZXRlY3QgaXQuCis6ZnVuYzpgZW5zdXJlX2Z1dHVyZWAgb3IgdG8gdGhlIDptZXRoOmBCYXNlRXZlbnRMb29wLmNyZWF0ZV90YXNrYCBtZXRob2QsCit0aGUgZXhlY3V0aW9uIG9mIHRoZSBjb3JvdXRpbmUgb2JqZWN0IHdpbGwgbmV2ZXIgYmUgc2NoZWR1bGVkIHdoaWNoIGlzCitwcm9iYWJseSBhIGJ1Zy4gIDpyZWY6YEVuYWJsZSB0aGUgZGVidWcgbW9kZSBvZiBhc3luY2lvIDxhc3luY2lvLWRlYnVnLW1vZGU+YAordG8gOnJlZjpgbG9nIGEgd2FybmluZyA8YXN5bmNpby1sb2dnZXI+YCB0byBkZXRlY3QgaXQuCiAKIEV4YW1wbGUgd2l0aCB0aGUgYnVnOjoKIApAQCAtMTkwLDcgKzE5MCw3IEBACiAgICAgICBGaWxlICJ0ZXN0LnB5IiwgbGluZSA3LCBpbiA8bW9kdWxlPgogICAgICAgICB0ZXN0KCkKIAotVGhlIGZpeCBpcyB0byBjYWxsIHRoZSA6ZnVuYzpgYXN5bmNgIGZ1bmN0aW9uIG9yIHRoZQorVGhlIGZpeCBpcyB0byBjYWxsIHRoZSA6ZnVuYzpgZW5zdXJlX2Z1dHVyZWAgZnVuY3Rpb24gb3IgdGhlCiA6bWV0aDpgQmFzZUV2ZW50TG9vcC5jcmVhdGVfdGFza2AgbWV0aG9kIHdpdGggdGhlIGNvcm91dGluZSBvYmplY3QuCiAKIC4uIHNlZWFsc286OgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYXN5bmNpby1ldmVudGxvb3AucnN0IGIvRG9jL2xpYnJhcnkvYXN5bmNpby1ldmVudGxvb3AucnN0CmluZGV4IDk2NDY4YWUuLmRiZTM1MWQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wLnJzdAorKysgYi9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcC5yc3QKQEAgLTM4LDE0ICszOCwxNCBAQAogICAgdGhhdCBjYWxsYmFja3Mgc2NoZWR1bGVkIGJ5IGNhbGxiYWNrcyB3aWxsIG5vdCBydW4gaW4gdGhhdCBjYXNlOwogICAgdGhleSB3aWxsIHJ1biB0aGUgbmV4dCB0aW1lIDptZXRoOmBydW5fZm9yZXZlcmAgaXMgY2FsbGVkLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNC40CisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNS4xCiAKIC4uIG1ldGhvZDo6IEJhc2VFdmVudExvb3AucnVuX3VudGlsX2NvbXBsZXRlKGZ1dHVyZSkKIAogICAgUnVuIHVudGlsIHRoZSA6Y2xhc3M6YEZ1dHVyZWAgaXMgZG9uZS4KIAogICAgSWYgdGhlIGFyZ3VtZW50IGlzIGEgOnJlZjpgY29yb3V0aW5lIG9iamVjdCA8Y29yb3V0aW5lPmAsIGl0IGlzIHdyYXBwZWQgYnkKLSAgIDpmdW5jOmBhc3luY2AuCisgICA6ZnVuYzpgZW5zdXJlX2Z1dHVyZWAuCiAKICAgIFJldHVybiB0aGUgRnV0dXJlJ3MgcmVzdWx0LCBvciByYWlzZSBpdHMgZXhjZXB0aW9uLgogCkBAIC02MCw3ICs2MCw3IEBACiAgICBUaGlzIGNhdXNlcyA6bWV0aDpgcnVuX2ZvcmV2ZXJgIHRvIGV4aXQgYXQgdGhlIG5leHQgc3VpdGFibGUKICAgIG9wcG9ydHVuaXR5IChzZWUgdGhlcmUgZm9yIG1vcmUgZGV0YWlscykuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjQKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41LjEKIAogLi4gbWV0aG9kOjogQmFzZUV2ZW50TG9vcC5pc19jbG9zZWQoKQogCkBAIC0yODUsNyArMjg1LDkgQEAKICAgICAgdG8gYmluZCB0aGUgc29ja2V0IHRvIGxvY2FsbHkuICBUaGUgKmxvY2FsX2hvc3QqIGFuZCAqbG9jYWxfcG9ydCoKICAgICAgYXJlIGxvb2tlZCB1cCB1c2luZyBnZXRhZGRyaW5mbygpLCBzaW1pbGFybHkgdG8gKmhvc3QqIGFuZCAqcG9ydCouCiAKLSAgIE9uIFdpbmRvd3Mgd2l0aCA6Y2xhc3M6YFByb2FjdG9yRXZlbnRMb29wYCwgU1NML1RMUyBpcyBub3Qgc3VwcG9ydGVkLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKworICAgICAgT24gV2luZG93cyB3aXRoIDpjbGFzczpgUHJvYWN0b3JFdmVudExvb3BgLCBTU0wvVExTIGlzIG5vdyBzdXBwb3J0ZWQuCiAKICAgIC4uIHNlZWFsc286OgogCkBAIC00MDksMTQgKzQxMSwxNiBAQAogCiAgICBUaGlzIG1ldGhvZCBpcyBhIDpyZWY6YGNvcm91dGluZSA8Y29yb3V0aW5lPmAuCiAKLSAgIE9uIFdpbmRvd3Mgd2l0aCA6Y2xhc3M6YFByb2FjdG9yRXZlbnRMb29wYCwgU1NML1RMUyBpcyBub3Qgc3VwcG9ydGVkLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKworICAgICAgT24gV2luZG93cyB3aXRoIDpjbGFzczpgUHJvYWN0b3JFdmVudExvb3BgLCBTU0wvVExTIGlzIG5vdyBzdXBwb3J0ZWQuCiAKICAgIC4uIHNlZWFsc286OgogCiAgICAgICBUaGUgZnVuY3Rpb24gOmZ1bmM6YHN0YXJ0X3NlcnZlcmAgY3JlYXRlcyBhICg6Y2xhc3M6YFN0cmVhbVJlYWRlcmAsCiAgICAgICA6Y2xhc3M6YFN0cmVhbVdyaXRlcmApIHBhaXIgYW5kIGNhbGxzIGJhY2sgYSBmdW5jdGlvbiB3aXRoIHRoaXMgcGFpci4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQuNAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUuMQogCiAgICAgICBUaGUgKmhvc3QqIHBhcmFtZXRlciBjYW4gbm93IGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncy4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYXN5bmNpby1ldmVudGxvb3BzLnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wcy5yc3QKaW5kZXggZjQyZjY1YS4uZmM1ODk5MiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNpby1ldmVudGxvb3BzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcHMucnN0CkBAIC0xMDAsOCArMTAwLDYgQEAKIAogOmNsYXNzOmBQcm9hY3RvckV2ZW50TG9vcGAgc3BlY2lmaWMgbGltaXRzOgogCi0tIFNTTCBpcyBub3Qgc3VwcG9ydGVkOiA6bWV0aDpgfkJhc2VFdmVudExvb3AuY3JlYXRlX2Nvbm5lY3Rpb25gIGFuZAotICA6bWV0aDpgfkJhc2VFdmVudExvb3AuY3JlYXRlX3NlcnZlcmAgY2Fubm90IGJlIHVzZWQgd2l0aCBTU0wgZm9yIGV4YW1wbGUKIC0gOm1ldGg6YH5CYXNlRXZlbnRMb29wLmNyZWF0ZV9kYXRhZ3JhbV9lbmRwb2ludGAgKFVEUCkgaXMgbm90IHN1cHBvcnRlZAogLSA6bWV0aDpgfkJhc2VFdmVudExvb3AuYWRkX3JlYWRlcmAgYW5kIDptZXRoOmB+QmFzZUV2ZW50TG9vcC5hZGRfd3JpdGVyYCBhcmUKICAgbm90IHN1cHBvcnRlZApAQCAtMTEyLDYgKzExMCwxMCBAQAogPGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGlnaF9QcmVjaXNpb25fRXZlbnRfVGltZXI+YF8pIGFuZCBvbiB0aGUgV2luZG93cwogY29uZmlndXJhdGlvbi4gU2VlIDpyZWY6YGFzeW5jaW8gZGVsYXllZCBjYWxscyA8YXN5bmNpby1kZWxheWVkLWNhbGxzPmAuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisKKyAgIDpjbGFzczpgUHJvYWN0b3JFdmVudExvb3BgIG5vdyBzdXBwb3J0cyBTU0wuCisKIAogTWFjIE9TIFgKIF5eXl5eXl5eCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY2lvLXByb3RvY29sLnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tcHJvdG9jb2wucnN0CmluZGV4IGY5Mjk4YjIuLjIzZDM0ZDAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FzeW5jaW8tcHJvdG9jb2wucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tcHJvdG9jb2wucnN0CkBAIC00NSw3ICs0NSw3IEBACiAKICAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgdHJhbnNwb3J0IGlzIGNsb3Npbmcgb3IgaXMgY2xvc2VkLgogCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQuNAorICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41LjEKIAogICAgLi4gbWV0aG9kOjogZ2V0X2V4dHJhX2luZm8obmFtZSwgZGVmYXVsdD1Ob25lKQogCkBAIC04Nyw3ICs4Nyw3IEBACiAKICAgICAgICAgLSBgYCdzdWJwcm9jZXNzJ2BgOiA6Y2xhc3M6YHN1YnByb2Nlc3MuUG9wZW5gIGluc3RhbmNlCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjQKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41LjEKICAgICAgIGBgJ3NzbF9vYmplY3QnYGAgaW5mbyB3YXMgYWRkZWQgdG8gU1NMIHNvY2tldHMuCiAKIApAQCAtNDU4LDkgKzQ1OCw5IEBACiBDb3JvdXRpbmVzIGFuZCBwcm90b2NvbHMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1Db3JvdXRpbmVzIGNhbiBiZSBzY2hlZHVsZWQgaW4gYSBwcm90b2NvbCBtZXRob2QgdXNpbmcgOmZ1bmM6YGFzeW5jYCwgYnV0IHRoZXJlCi1pcyBubyBndWFyYW50ZWUgbWFkZSBhYm91dCB0aGUgZXhlY3V0aW9uIG9yZGVyLiAgUHJvdG9jb2xzIGFyZSBub3QgYXdhcmUgb2YKLWNvcm91dGluZXMgY3JlYXRlZCBpbiBwcm90b2NvbCBtZXRob2RzIGFuZCBzbyB3aWxsIG5vdCB3YWl0IGZvciB0aGVtLgorQ29yb3V0aW5lcyBjYW4gYmUgc2NoZWR1bGVkIGluIGEgcHJvdG9jb2wgbWV0aG9kIHVzaW5nIDpmdW5jOmBlbnN1cmVfZnV0dXJlYCwKK2J1dCB0aGVyZSBpcyBubyBndWFyYW50ZWUgbWFkZSBhYm91dCB0aGUgZXhlY3V0aW9uIG9yZGVyLiAgUHJvdG9jb2xzIGFyZSBub3QKK2F3YXJlIG9mIGNvcm91dGluZXMgY3JlYXRlZCBpbiBwcm90b2NvbCBtZXRob2RzIGFuZCBzbyB3aWxsIG5vdCB3YWl0IGZvciB0aGVtLgogCiBUbyBoYXZlIGEgcmVsaWFibGUgZXhlY3V0aW9uIG9yZGVyLCB1c2UgOnJlZjpgc3RyZWFtIG9iamVjdHMgPGFzeW5jaW8tc3RyZWFtcz5gIGluIGEKIGNvcm91dGluZSB3aXRoIGBgeWllbGQgZnJvbWBgLiBGb3IgZXhhbXBsZSwgdGhlIDptZXRoOmBTdHJlYW1Xcml0ZXIuZHJhaW5gCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY2lvLXF1ZXVlLnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tcXVldWUucnN0CmluZGV4IDMzNzA2NzIuLmYxMWMwOWEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FzeW5jaW8tcXVldWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tcXVldWUucnN0CkBAIC04LDcgKzgsNiBAQAogKiA6Y2xhc3M6YFF1ZXVlYAogKiA6Y2xhc3M6YFByaW9yaXR5UXVldWVgCiAqIDpjbGFzczpgTGlmb1F1ZXVlYAotKiA6Y2xhc3M6YEpvaW5hYmxlUXVldWVgCiAKIGFzeW5jaW8gcXVldWUgQVBJIHdhcyBkZXNpZ25lZCB0byBiZSBjbG9zZSB0byBjbGFzc2VzIG9mIHRoZSA6bW9kOmBxdWV1ZWAKIG1vZHVsZSAoOmNsYXNzOmB+cXVldWUuUXVldWVgLCA6Y2xhc3M6YH5xdWV1ZS5Qcmlvcml0eVF1ZXVlYCwKQEAgLTE0NCwxNiArMTQzLDYgQEAKICAgICBmaXJzdC4KIAogCi1Kb2luYWJsZVF1ZXVlCi1eXl5eXl5eXl5eXl5eCi0KLS4uIGNsYXNzOjogSm9pbmFibGVRdWV1ZQotCi0gICBEZXByZWNhdGVkIGFsaWFzIGZvciA6Y2xhc3M6YFF1ZXVlYC4KLQotICAgLi4gZGVwcmVjYXRlZDo6IDMuNC40Ci0KLQogRXhjZXB0aW9ucwogXl5eXl5eXl5eXgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY2lvLXRhc2sucnN0IGIvRG9jL2xpYnJhcnkvYXN5bmNpby10YXNrLnJzdAppbmRleCA3NmYwODRhLi5mZWJiNzM0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2lvLXRhc2sucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tdGFzay5yc3QKQEAgLTgsMTcgKzgsMjMgQEAKIENvcm91dGluZXMKIC0tLS0tLS0tLS0KIAotQSBjb3JvdXRpbmUgaXMgYSBnZW5lcmF0b3IgdGhhdCBmb2xsb3dzIGNlcnRhaW4gY29udmVudGlvbnMuICBGb3IKLWRvY3VtZW50YXRpb24gcHVycG9zZXMsIGFsbCBjb3JvdXRpbmVzIHNob3VsZCBiZSBkZWNvcmF0ZWQgd2l0aAotYGBAYXN5bmNpby5jb3JvdXRpbmVgYCwgYnV0IHRoaXMgY2Fubm90IGJlIHN0cmljdGx5IGVuZm9yY2VkLgorQ29yb3V0aW5lcyB1c2VkIHdpdGggOm1vZDpgYXN5bmNpb2AgbWF5IGJlIGltcGxlbWVudGVkIHVzaW5nIHRoZQorOmtleXdvcmQ6YGFzeW5jIGRlZmAgc3RhdGVtZW50LCBvciBieSB1c2luZyA6dGVybTpgZ2VuZXJhdG9ycyA8Z2VuZXJhdG9yPmAuCitUaGUgOmtleXdvcmQ6YGFzeW5jIGRlZmAgdHlwZSBvZiBjb3JvdXRpbmUgd2FzIGFkZGVkIGluIFB5dGhvbiAzLjUsIGFuZAoraXMgcmVjb21tZW5kZWQgaWYgdGhlcmUgaXMgbm8gbmVlZCB0byBzdXBwb3J0IG9sZGVyIFB5dGhvbiB2ZXJzaW9ucy4KIAotQ29yb3V0aW5lcyB1c2UgdGhlIGBgeWllbGQgZnJvbWBgIHN5bnRheCBpbnRyb2R1Y2VkIGluIDpwZXA6YDM4MGAsCitHZW5lcmF0b3ItYmFzZWQgY29yb3V0aW5lcyBzaG91bGQgYmUgZGVjb3JhdGVkIHdpdGggOmZ1bmM6YEBhc3luY2lvLmNvcm91dGluZQorPGFzeW5jaW8uY29yb3V0aW5lPmAsIGFsdGhvdWdoIHRoaXMgaXMgbm90IHN0cmljdGx5IGVuZm9yY2VkLgorVGhlIGRlY29yYXRvciBlbmFibGVzIGNvbXBhdGliaWxpdHkgd2l0aCA6a2V5d29yZDpgYXN5bmMgZGVmYCBjb3JvdXRpbmVzLAorYW5kIGFsc28gc2VydmVzIGFzIGRvY3VtZW50YXRpb24uICBHZW5lcmF0b3ItYmFzZWQKK2Nvcm91dGluZXMgdXNlIHRoZSBgYHlpZWxkIGZyb21gYCBzeW50YXggaW50cm9kdWNlZCBpbiA6cGVwOmAzODBgLAogaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgYGB5aWVsZGBgIHN5bnRheC4KIAogVGhlIHdvcmQgImNvcm91dGluZSIsIGxpa2UgdGhlIHdvcmQgImdlbmVyYXRvciIsIGlzIHVzZWQgZm9yIHR3bwogZGlmZmVyZW50ICh0aG91Z2ggcmVsYXRlZCkgY29uY2VwdHM6CiAKLS0gVGhlIGZ1bmN0aW9uIHRoYXQgZGVmaW5lcyBhIGNvcm91dGluZSAoYSBmdW5jdGlvbiBkZWZpbml0aW9uCistIFRoZSBmdW5jdGlvbiB0aGF0IGRlZmluZXMgYSBjb3JvdXRpbmUKKyAgKGEgZnVuY3Rpb24gZGVmaW5pdGlvbiB1c2luZyA6a2V5d29yZDpgYXN5bmMgZGVmYCBvcgogICBkZWNvcmF0ZWQgd2l0aCBgYEBhc3luY2lvLmNvcm91dGluZWBgKS4gIElmIGRpc2FtYmlndWF0aW9uIGlzIG5lZWRlZAogICB3ZSB3aWxsIGNhbGwgdGhpcyBhICpjb3JvdXRpbmUgZnVuY3Rpb24qICg6ZnVuYzpgaXNjb3JvdXRpbmVmdW5jdGlvbmAKICAgcmV0dXJucyBgYFRydWVgYCkuCkBAIC0zMCwyOSArMzYsMzAgQEAKIAogVGhpbmdzIGEgY29yb3V0aW5lIGNhbiBkbzoKIAotLSBgYHJlc3VsdCA9IHlpZWxkIGZyb20gZnV0dXJlYGAgLS0gc3VzcGVuZHMgdGhlIGNvcm91dGluZSB1bnRpbCB0aGUKKy0gYGByZXN1bHQgPSBhd2FpdCBmdXR1cmVgYCBvciBgYHJlc3VsdCA9IHlpZWxkIGZyb20gZnV0dXJlYGAgLS0KKyAgc3VzcGVuZHMgdGhlIGNvcm91dGluZSB1bnRpbCB0aGUKICAgZnV0dXJlIGlzIGRvbmUsIHRoZW4gcmV0dXJucyB0aGUgZnV0dXJlJ3MgcmVzdWx0LCBvciByYWlzZXMgYW4KICAgZXhjZXB0aW9uLCB3aGljaCB3aWxsIGJlIHByb3BhZ2F0ZWQuICAoSWYgdGhlIGZ1dHVyZSBpcyBjYW5jZWxsZWQsCiAgIGl0IHdpbGwgcmFpc2UgYSBgYENhbmNlbGxlZEVycm9yYGAgZXhjZXB0aW9uLikgIE5vdGUgdGhhdCB0YXNrcyBhcmUKICAgZnV0dXJlcywgYW5kIGV2ZXJ5dGhpbmcgc2FpZCBhYm91dCBmdXR1cmVzIGFsc28gYXBwbGllcyB0byB0YXNrcy4KIAotLSBgYHJlc3VsdCA9IHlpZWxkIGZyb20gY29yb3V0aW5lYGAgLS0gd2FpdCBmb3IgYW5vdGhlciBjb3JvdXRpbmUgdG8KKy0gYGByZXN1bHQgPSBhd2FpdCBjb3JvdXRpbmVgYCBvciBgYHJlc3VsdCA9IHlpZWxkIGZyb20gY29yb3V0aW5lYGAgLS0KKyAgd2FpdCBmb3IgYW5vdGhlciBjb3JvdXRpbmUgdG8KICAgcHJvZHVjZSBhIHJlc3VsdCAob3IgcmFpc2UgYW4gZXhjZXB0aW9uLCB3aGljaCB3aWxsIGJlIHByb3BhZ2F0ZWQpLgogICBUaGUgYGBjb3JvdXRpbmVgYCBleHByZXNzaW9uIG11c3QgYmUgYSAqY2FsbCogdG8gYW5vdGhlciBjb3JvdXRpbmUuCiAKIC0gYGByZXR1cm4gZXhwcmVzc2lvbmBgIC0tIHByb2R1Y2UgYSByZXN1bHQgdG8gdGhlIGNvcm91dGluZSB0aGF0IGlzCi0gIHdhaXRpbmcgZm9yIHRoaXMgb25lIHVzaW5nIGBgeWllbGQgZnJvbWBgLgorICB3YWl0aW5nIGZvciB0aGlzIG9uZSB1c2luZyA6a2V5d29yZDpgYXdhaXRgIG9yIGBgeWllbGQgZnJvbWBgLgogCiAtIGBgcmFpc2UgZXhjZXB0aW9uYGAgLS0gcmFpc2UgYW4gZXhjZXB0aW9uIGluIHRoZSBjb3JvdXRpbmUgdGhhdCBpcwotICB3YWl0aW5nIGZvciB0aGlzIG9uZSB1c2luZyBgYHlpZWxkIGZyb21gYC4KKyAgd2FpdGluZyBmb3IgdGhpcyBvbmUgdXNpbmcgOmtleXdvcmQ6YGF3YWl0YCBvciBgYHlpZWxkIGZyb21gYC4KIAotQ2FsbGluZyBhIGNvcm91dGluZSBkb2VzIG5vdCBzdGFydCBpdHMgY29kZSBydW5uaW5nIC0tIGl0IGlzIGp1c3QgYQotZ2VuZXJhdG9yLCBhbmQgdGhlIGNvcm91dGluZSBvYmplY3QgcmV0dXJuZWQgYnkgdGhlIGNhbGwgaXMgcmVhbGx5IGEKLWdlbmVyYXRvciBvYmplY3QsIHdoaWNoIGRvZXNuJ3QgZG8gYW55dGhpbmcgdW50aWwgeW91IGl0ZXJhdGUgb3ZlciBpdC4KLUluIHRoZSBjYXNlIG9mIGEgY29yb3V0aW5lIG9iamVjdCwgdGhlcmUgYXJlIHR3byBiYXNpYyB3YXlzIHRvIHN0YXJ0Ci1pdCBydW5uaW5nOiBjYWxsIGBgeWllbGQgZnJvbSBjb3JvdXRpbmVgYCBmcm9tIGFub3RoZXIgY29yb3V0aW5lCitDYWxsaW5nIGEgY29yb3V0aW5lIGRvZXMgbm90IHN0YXJ0IGl0cyBjb2RlIHJ1bm5pbmcgLS0KK3RoZSBjb3JvdXRpbmUgb2JqZWN0IHJldHVybmVkIGJ5IHRoZSBjYWxsIGRvZXNuJ3QgZG8gYW55dGhpbmcgdW50aWwgeW91CitzY2hlZHVsZSBpdHMgZXhlY3V0aW9uLiAgVGhlcmUgYXJlIHR3byBiYXNpYyB3YXlzIHRvIHN0YXJ0IGl0IHJ1bm5pbmc6CitjYWxsIGBgYXdhaXQgY29yb3V0aW5lYGAgb3IgYGB5aWVsZCBmcm9tIGNvcm91dGluZWBgIGZyb20gYW5vdGhlciBjb3JvdXRpbmUKIChhc3N1bWluZyB0aGUgb3RoZXIgY29yb3V0aW5lIGlzIGFscmVhZHkgcnVubmluZyEpLCBvciBzY2hlZHVsZSBpdHMgZXhlY3V0aW9uCi11c2luZyB0aGUgOmZ1bmM6YGFzeW5jYCBmdW5jdGlvbiBvciB0aGUgOm1ldGg6YEJhc2VFdmVudExvb3AuY3JlYXRlX3Rhc2tgCit1c2luZyB0aGUgOmZ1bmM6YGVuc3VyZV9mdXR1cmVgIGZ1bmN0aW9uIG9yIHRoZSA6bWV0aDpgQmFzZUV2ZW50TG9vcC5jcmVhdGVfdGFza2AKIG1ldGhvZC4KIAogCkBAIC02MCw5ICs2NywxNSBAQAogCiAuLiBkZWNvcmF0b3I6OiBjb3JvdXRpbmUKIAotICAgIERlY29yYXRvciB0byBtYXJrIGNvcm91dGluZXMuCisgICAgRGVjb3JhdG9yIHRvIG1hcmsgZ2VuZXJhdG9yLWJhc2VkIGNvcm91dGluZXMuICBUaGlzIGVuYWJsZXMKKyAgICB0aGUgZ2VuZXJhdG9yIHVzZSA6a2V5d29yZDpgIXlpZWxkIGZyb21gIHRvIGNhbGwgOmtleXdvcmQ6YGFzeW5jCisgICAgZGVmYCBjb3JvdXRpbmVzLCBhbmQgYWxzbyBlbmFibGVzIHRoZSBnZW5lcmF0b3IgdG8gYmUgY2FsbGVkIGJ5CisgICAgOmtleXdvcmQ6YGFzeW5jIGRlZmAgY29yb3V0aW5lcywgZm9yIGluc3RhbmNlIHVzaW5nIGFuCisgICAgOmtleXdvcmQ6YGF3YWl0YCBleHByZXNzaW9uLgogCi0gICAgSWYgdGhlIGNvcm91dGluZSBpcyBub3QgeWllbGRlZCBmcm9tIGJlZm9yZSBpdCBpcyBkZXN0cm95ZWQsIGFuIGVycm9yCisgICAgVGhlcmUgaXMgbm8gbmVlZCB0byBkZWNvcmF0ZSA6a2V5d29yZDpgYXN5bmMgZGVmYCBjb3JvdXRpbmVzIHRoZW1zZWx2ZXMuCisKKyAgICBJZiB0aGUgZ2VuZXJhdG9yIGlzIG5vdCB5aWVsZGVkIGZyb20gYmVmb3JlIGl0IGlzIGRlc3Ryb3llZCwgYW4gZXJyb3IKICAgICBtZXNzYWdlIGlzIGxvZ2dlZC4gU2VlIDpyZWY6YERldGVjdCBjb3JvdXRpbmVzIG5ldmVyIHNjaGVkdWxlZAogICAgIDxhc3luY2lvLWNvcm91dGluZS1ub3Qtc2NoZWR1bGVkPmAuCiAKQEAgLTcyLDcgKzg1LDcgQEAKICAgICBldmVuIGlmIHRoZXkgYXJlIHBsYWluIFB5dGhvbiBmdW5jdGlvbnMgcmV0dXJuaW5nIGEgOmNsYXNzOmBGdXR1cmVgLgogICAgIFRoaXMgaXMgaW50ZW50aW9uYWwgdG8gaGF2ZSBhIGZyZWVkb20gb2YgdHdlYWtpbmcgdGhlIGltcGxlbWVudGF0aW9uCiAgICAgb2YgdGhlc2UgZnVuY3Rpb25zIGluIHRoZSBmdXR1cmUuIElmIHN1Y2ggYSBmdW5jdGlvbiBpcyBuZWVkZWQgdG8gYmUKLSAgICB1c2VkIGluIGEgY2FsbGJhY2stc3R5bGUgY29kZSwgd3JhcCBpdHMgcmVzdWx0IHdpdGggOmZ1bmM6YGFzeW5jYC4KKyAgICB1c2VkIGluIGEgY2FsbGJhY2stc3R5bGUgY29kZSwgd3JhcCBpdHMgcmVzdWx0IHdpdGggOmZ1bmM6YGVuc3VyZV9mdXR1cmVgLgogCiAKIC4uIF9hc3luY2lvLWhlbGxvLXdvcmxkLWNvcm91dGluZToKQEAgLTg0LDggKzk3LDcgQEAKIAogICAgIGltcG9ydCBhc3luY2lvCiAKLSAgICBAYXN5bmNpby5jb3JvdXRpbmUKLSAgICBkZWYgaGVsbG9fd29ybGQoKToKKyAgICBhc3luYyBkZWYgaGVsbG9fd29ybGQoKToKICAgICAgICAgcHJpbnQoIkhlbGxvIFdvcmxkISIpCiAKICAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCkBAIC0xMTEsNiArMTIzLDIxIEBACiAgICAgaW1wb3J0IGFzeW5jaW8KICAgICBpbXBvcnQgZGF0ZXRpbWUKIAorICAgIGFzeW5jIGRlZiBkaXNwbGF5X2RhdGUobG9vcCk6CisgICAgICAgIGVuZF90aW1lID0gbG9vcC50aW1lKCkgKyA1LjAKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHByaW50KGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpKQorICAgICAgICAgICAgaWYgKGxvb3AudGltZSgpICsgMS4wKSA+PSBlbmRfdGltZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgxKQorCisgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQorICAgICMgQmxvY2tpbmcgY2FsbCB3aGljaCByZXR1cm5zIHdoZW4gdGhlIGRpc3BsYXlfZGF0ZSgpIGNvcm91dGluZSBpcyBkb25lCisgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoZGlzcGxheV9kYXRlKGxvb3ApKQorICAgIGxvb3AuY2xvc2UoKQorCitUaGUgc2FtZSBjb3JvdXRpbmUgaW1wbGVtZW50ZWQgdXNpbmcgYSBnZW5lcmF0b3I6OgorCiAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgZGVmIGRpc3BsYXlfZGF0ZShsb29wKToKICAgICAgICAgZW5kX3RpbWUgPSBsb29wLnRpbWUoKSArIDUuMApAQCAtMTIwLDExICsxNDcsNiBAQAogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICB5aWVsZCBmcm9tIGFzeW5jaW8uc2xlZXAoMSkKIAotICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKLSAgICAjIEJsb2NraW5nIGNhbGwgd2hpY2ggcmV0dXJucyB3aGVuIHRoZSBkaXNwbGF5X2RhdGUoKSBjb3JvdXRpbmUgaXMgZG9uZQotICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGRpc3BsYXlfZGF0ZShsb29wKSkKLSAgICBsb29wLmNsb3NlKCkKLQogLi4gc2VlYWxzbzo6CiAKICAgIFRoZSA6cmVmOmBkaXNwbGF5IHRoZSBjdXJyZW50IGRhdGUgd2l0aCBjYWxsX2xhdGVyKCkKQEAgLTEzOSwxNSArMTYxLDEzIEBACiAKICAgICBpbXBvcnQgYXN5bmNpbwogCi0gICAgQGFzeW5jaW8uY29yb3V0aW5lCi0gICAgZGVmIGNvbXB1dGUoeCwgeSk6CisgICAgYXN5bmMgZGVmIGNvbXB1dGUoeCwgeSk6CiAgICAgICAgIHByaW50KCJDb21wdXRlICVzICsgJXMgLi4uIiAlICh4LCB5KSkKLSAgICAgICAgeWllbGQgZnJvbSBhc3luY2lvLnNsZWVwKDEuMCkKKyAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgxLjApCiAgICAgICAgIHJldHVybiB4ICsgeQogCi0gICAgQGFzeW5jaW8uY29yb3V0aW5lCi0gICAgZGVmIHByaW50X3N1bSh4LCB5KToKLSAgICAgICAgcmVzdWx0ID0geWllbGQgZnJvbSBjb21wdXRlKHgsIHkpCisgICAgYXN5bmMgZGVmIHByaW50X3N1bSh4LCB5KToKKyAgICAgICAgcmVzdWx0ID0gYXdhaXQgY29tcHV0ZSh4LCB5KQogICAgICAgICBwcmludCgiJXMgKyAlcyA9ICVzIiAlICh4LCB5LCByZXN1bHQpKQogCiAgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQpAQCAtMzc1LDcgKzM5NSw3IEBACiAgICA8Y29yb3V0aW5lPmAgZGlkIG5vdCBjb21wbGV0ZS4gSXQgaXMgcHJvYmFibHkgYSBidWcgYW5kIGEgd2FybmluZyBpcwogICAgbG9nZ2VkOiBzZWUgOnJlZjpgUGVuZGluZyB0YXNrIGRlc3Ryb3llZCA8YXN5bmNpby1wZW5kaW5nLXRhc2stZGVzdHJveWVkPmAuCiAKLSAgIERvbid0IGRpcmVjdGx5IGNyZWF0ZSA6Y2xhc3M6YFRhc2tgIGluc3RhbmNlczogdXNlIHRoZSA6ZnVuYzpgYXN5bmNgCisgICBEb24ndCBkaXJlY3RseSBjcmVhdGUgOmNsYXNzOmBUYXNrYCBpbnN0YW5jZXM6IHVzZSB0aGUgOmZ1bmM6YGVuc3VyZV9mdXR1cmVgCiAgICBmdW5jdGlvbiBvciB0aGUgOm1ldGg6YEJhc2VFdmVudExvb3AuY3JlYXRlX3Rhc2tgIG1ldGhvZC4KIAogICAgVGhpcyBjbGFzcyBpcyA6cmVmOmBub3QgdGhyZWFkIHNhZmUgPGFzeW5jaW8tbXVsdGl0aHJlYWRpbmc+YC4KQEAgLTUyMSw2ICs1NDEsOSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQuNAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNS4xCisgICAgICBUaGUgZnVuY3Rpb24gYWNjZXB0cyBhbnkgOnRlcm06YGF3YWl0YWJsZWAgb2JqZWN0LgorCiAgICAuLiBzZWVhbHNvOjoKIAogICAgICAgVGhlIDptZXRoOmBCYXNlRXZlbnRMb29wLmNyZWF0ZV90YXNrYCBtZXRob2QuCkBAIC01NTIsMTIgKzU3NSwxNCBAQAogCiAuLiBmdW5jdGlvbjo6IGlzY29yb3V0aW5lKG9iaikKIAotICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpvYmoqIGlzIGEgOnJlZjpgY29yb3V0aW5lIG9iamVjdCA8Y29yb3V0aW5lPmAuCisgICBSZXR1cm4gYGBUcnVlYGAgaWYgKm9iaiogaXMgYSA6cmVmOmBjb3JvdXRpbmUgb2JqZWN0IDxjb3JvdXRpbmU+YCwKKyAgIHdoaWNoIG1heSBiZSBiYXNlZCBvbiBhIGdlbmVyYXRvciBvciBhbiA6a2V5d29yZDpgYXN5bmMgZGVmYCBjb3JvdXRpbmUuCiAKLS4uIGZ1bmN0aW9uOjogaXNjb3JvdXRpbmVmdW5jdGlvbihvYmopCisuLiBmdW5jdGlvbjo6IGlzY29yb3V0aW5lZnVuY3Rpb24oZnVuYykKIAotICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpmdW5jKiBpcyBhIGRlY29yYXRlZCA6cmVmOmBjb3JvdXRpbmUgZnVuY3Rpb24KLSAgIDxjb3JvdXRpbmU+YC4KKyAgIFJldHVybiBgYFRydWVgYCBpZiAqZnVuYyogaXMgZGV0ZXJtaW5lZCB0byBiZSBhIDpyZWY6YGNvcm91dGluZSBmdW5jdGlvbgorICAgPGNvcm91dGluZT5gLCB3aGljaCBtYXkgYmUgYSBkZWNvcmF0ZWQgZ2VuZXJhdG9yIGZ1bmN0aW9uIG9yIGFuCisgICA6a2V5d29yZDpgYXN5bmMgZGVmYCBmdW5jdGlvbi4KIAogLi4gZnVuY3Rpb246OiBydW5fY29yb3V0aW5lX3RocmVhZHNhZmUoY29ybywgbG9vcCkKIApAQCAtNTkzLDEwICs2MTgsMTEgQEAKIAogICAgLi4gbm90ZTo6CiAKLSAgICAgIFVubGlrZSB0aGUgZnVuY3Rpb25zIGFib3ZlLCA6ZnVuYzpgcnVuX2Nvcm91dGluZV90aHJlYWRzYWZlYCByZXF1aXJlcyB0aGUKLSAgICAgICpsb29wKiBhcmd1bWVudCB0byBiZSBwYXNzZWQgZXhwbGljaXRlbHkuCisgICAgICBVbmxpa2Ugb3RoZXIgZnVuY3Rpb25zIGZyb20gdGhlIG1vZHVsZSwKKyAgICAgIDpmdW5jOmBydW5fY29yb3V0aW5lX3RocmVhZHNhZmVgIHJlcXVpcmVzIHRoZSAqbG9vcCogYXJndW1lbnQgdG8KKyAgICAgIGJlIHBhc3NlZCBleHBsaWNpdGVseS4KIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy40LjQsIDMuNS4xCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUuMQogCiAuLiBjb3JvdXRpbmVmdW5jdGlvbjo6IHNsZWVwKGRlbGF5LCByZXN1bHQ9Tm9uZSwgXCosIGxvb3A9Tm9uZSkKIApAQCAtNzE1LDUgKzc0MSwzIEBACiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjMKICAgICAgIElmIHRoZSB3YWl0IGlzIGNhbmNlbGxlZCwgdGhlIGZ1dHVyZSAqZnV0KiBpcyBub3cgYWxzbyBjYW5jZWxsZWQuCi0KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYmFzZTY0LnJzdCBiL0RvYy9saWJyYXJ5L2Jhc2U2NC5yc3QKaW5kZXggZWJhNGIzNi4uM2YwMTYxZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYmFzZTY0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9iYXNlNjQucnN0CkBAIC0yMSwxMyArMjEsMTkgQEAKIFBPU1QgcmVxdWVzdC4gIFRoZSBlbmNvZGluZyBhbGdvcml0aG0gaXMgbm90IHRoZSBzYW1lIGFzIHRoZQogOnByb2dyYW06YHV1ZW5jb2RlYCBwcm9ncmFtLgogCi1UaGVyZSBhcmUgdHdvIDpyZmM6YDM1NDhgIGludGVyZmFjZXMgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUuICBUaGUgbW9kZXJuCi1pbnRlcmZhY2Ugc3VwcG9ydHMgZW5jb2RpbmcgYW5kIGRlY29kaW5nIEFTQ0lJIGJ5dGUgc3RyaW5nIG9iamVjdHMgdXNpbmcgYWxsCi10aHJlZSA6cmZjOmAzNTQ4YCBkZWZpbmVkIGFscGhhYmV0cyAobm9ybWFsLCBVUkwtc2FmZSwgYW5kIGZpbGVzeXN0ZW0tc2FmZSkuCi1BZGRpdGlvbmFsbHksIHRoZSBkZWNvZGluZyBmdW5jdGlvbnMgb2YgdGhlIG1vZGVybiBpbnRlcmZhY2UgYWxzbyBhY2NlcHQKLVVuaWNvZGUgc3RyaW5ncyBjb250YWluaW5nIG9ubHkgQVNDSUkgY2hhcmFjdGVycy4gVGhlIGxlZ2FjeSBpbnRlcmZhY2UgcHJvdmlkZXMKLWZvciBlbmNvZGluZyBhbmQgZGVjb2RpbmcgdG8gYW5kIGZyb20gZmlsZS1saWtlIG9iamVjdHMgYXMgd2VsbCBhcyBieXRlCi1zdHJpbmdzLCBidXQgb25seSB1c2luZyB0aGUgQmFzZTY0IHN0YW5kYXJkIGFscGhhYmV0LgorVGhlcmUgYXJlIHR3byBpbnRlcmZhY2VzIHByb3ZpZGVkIGJ5IHRoaXMgbW9kdWxlLiAgVGhlIG1vZGVybiBpbnRlcmZhY2UKK3N1cHBvcnRzIGVuY29kaW5nIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdHMgPGJ5dGVzLWxpa2Ugb2JqZWN0PmAgdG8gQVNDSUkKKzpjbGFzczpgYnl0ZXNgLCBhbmQgZGVjb2RpbmcgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0cyA8Ynl0ZXMtbGlrZSBvYmplY3Q+YCBvcgorc3RyaW5ncyBjb250YWluaW5nIEFTQ0lJIHRvIDpjbGFzczpgYnl0ZXNgLiAgQWxsIHRocmVlIDpyZmM6YDM1NDhgIGRlZmluZWQKK2FscGhhYmV0cyAobm9ybWFsLCBVUkwtc2FmZSwgYW5kIGZpbGVzeXN0ZW0tc2FmZSkgYXJlIHN1cHBvcnRlZC4KKworVGhlIGxlZ2FjeSBpbnRlcmZhY2UgZG9lcyBub3Qgc3VwcG9ydCBkZWNvZGluZyBmcm9tIHN0cmluZ3MsIGJ1dCBpdCBkb2VzCitwcm92aWRlIGZ1bmN0aW9ucyBmb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHRvIGFuZCBmcm9tIDp0ZXJtOmBmaWxlIG9iamVjdHMKKzxmaWxlIG9iamVjdD5gLiAgSXQgb25seSBzdXBwb3J0cyB0aGUgQmFzZTY0IHN0YW5kYXJkIGFscGhhYmV0LCBhbmQgaXQgYWRkcworbmV3bGluZXMgZXZlcnkgNzYgY2hhcmFjdGVycyBhcyBwZXIgOnJmYzpgMjA0NWAuICBOb3RlIHRoYXQgaWYgeW91IGFyZSBsb29raW5nCitmb3IgOnJmYzpgMjA0NWAgc3VwcG9ydCB5b3UgcHJvYmFibHkgd2FudCB0byBiZSBsb29raW5nIGF0IHRoZSA6bW9kOmBlbWFpbGAKK3BhY2thZ2UgaW5zdGVhZC4KKwogCiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgQVNDSUktb25seSBVbmljb2RlIHN0cmluZ3MgYXJlIG5vdyBhY2NlcHRlZCBieSB0aGUgZGVjb2RpbmcgZnVuY3Rpb25zIG9mCkBAIC00MSwyNiArNDcsMjYgQEAKIAogLi4gZnVuY3Rpb246OiBiNjRlbmNvZGUocywgYWx0Y2hhcnM9Tm9uZSkKIAotICAgRW5jb2RlIGEgYnl0ZSBzdHJpbmcgdXNpbmcgQmFzZTY0LgorICAgRW5jb2RlIHRoZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgICpzKiB1c2luZyBCYXNlNjQgYW5kIHJldHVybiB0aGUgZW5jb2RlZAorICAgOmNsYXNzOmBieXRlc2AuCiAKLSAgICpzKiBpcyB0aGUgc3RyaW5nIHRvIGVuY29kZS4gIE9wdGlvbmFsICphbHRjaGFycyogbXVzdCBiZSBhIHN0cmluZyBvZiBhdCBsZWFzdAorICAgT3B0aW9uYWwgKmFsdGNoYXJzKiBtdXN0IGJlIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBvZiBhdCBsZWFzdAogICAgbGVuZ3RoIDIgKGFkZGl0aW9uYWwgY2hhcmFjdGVycyBhcmUgaWdub3JlZCkgd2hpY2ggc3BlY2lmaWVzIGFuIGFsdGVybmF0aXZlCiAgICBhbHBoYWJldCBmb3IgdGhlIGBgK2BgIGFuZCBgYC9gYCBjaGFyYWN0ZXJzLiAgVGhpcyBhbGxvd3MgYW4gYXBwbGljYXRpb24gdG8gZS5nLgogICAgZ2VuZXJhdGUgVVJMIG9yIGZpbGVzeXN0ZW0gc2FmZSBCYXNlNjQgc3RyaW5ncy4gIFRoZSBkZWZhdWx0IGlzIGBgTm9uZWBgLCBmb3IKICAgIHdoaWNoIHRoZSBzdGFuZGFyZCBCYXNlNjQgYWxwaGFiZXQgaXMgdXNlZC4KIAotICAgVGhlIGVuY29kZWQgYnl0ZSBzdHJpbmcgaXMgcmV0dXJuZWQuCi0KIAogLi4gZnVuY3Rpb246OiBiNjRkZWNvZGUocywgYWx0Y2hhcnM9Tm9uZSwgdmFsaWRhdGU9RmFsc2UpCiAKLSAgIERlY29kZSBhIEJhc2U2NCBlbmNvZGVkIGJ5dGUgc3RyaW5nLgorICAgRGVjb2RlIHRoZSBCYXNlNjQgZW5jb2RlZCA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIG9yIEFTQ0lJIHN0cmluZworICAgKnMqIGFuZCByZXR1cm4gdGhlIGRlY29kZWQgOmNsYXNzOmBieXRlc2AuCiAKLSAgICpzKiBpcyB0aGUgYnl0ZSBzdHJpbmcgdG8gZGVjb2RlLiAgT3B0aW9uYWwgKmFsdGNoYXJzKiBtdXN0IGJlIGEgc3RyaW5nIG9mCisgICBPcHRpb25hbCAqYWx0Y2hhcnMqIG11c3QgYmUgYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIG9yIEFTQ0lJIHN0cmluZyBvZgogICAgYXQgbGVhc3QgbGVuZ3RoIDIgKGFkZGl0aW9uYWwgY2hhcmFjdGVycyBhcmUgaWdub3JlZCkgd2hpY2ggc3BlY2lmaWVzIHRoZQogICAgYWx0ZXJuYXRpdmUgYWxwaGFiZXQgdXNlZCBpbnN0ZWFkIG9mIHRoZSBgYCtgYCBhbmQgYGAvYGAgY2hhcmFjdGVycy4KIAotICAgVGhlIGRlY29kZWQgc3RyaW5nIGlzIHJldHVybmVkLiAgQSA6ZXhjOmBiaW5hc2NpaS5FcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZAorICAgQSA6ZXhjOmBiaW5hc2NpaS5FcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZAogICAgaWYgKnMqIGlzIGluY29ycmVjdGx5IHBhZGRlZC4KIAogICAgSWYgKnZhbGlkYXRlKiBpcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0KSwgbm9uLWJhc2U2NC1hbHBoYWJldCBjaGFyYWN0ZXJzIGFyZQpAQCAtNzEsMzggKzc3LDQ0IEBACiAKIC4uIGZ1bmN0aW9uOjogc3RhbmRhcmRfYjY0ZW5jb2RlKHMpCiAKLSAgIEVuY29kZSBieXRlIHN0cmluZyAqcyogdXNpbmcgdGhlIHN0YW5kYXJkIEJhc2U2NCBhbHBoYWJldC4KKyAgIEVuY29kZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgICpzKiB1c2luZyB0aGUgc3RhbmRhcmQgQmFzZTY0IGFscGhhYmV0CisgICBhbmQgcmV0dXJuIHRoZSBlbmNvZGVkIDpjbGFzczpgYnl0ZXNgLgogCiAKIC4uIGZ1bmN0aW9uOjogc3RhbmRhcmRfYjY0ZGVjb2RlKHMpCiAKLSAgIERlY29kZSBieXRlIHN0cmluZyAqcyogdXNpbmcgdGhlIHN0YW5kYXJkIEJhc2U2NCBhbHBoYWJldC4KKyAgIERlY29kZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIG9yIEFTQ0lJIHN0cmluZyAqcyogdXNpbmcgdGhlIHN0YW5kYXJkCisgICBCYXNlNjQgYWxwaGFiZXQgYW5kIHJldHVybiB0aGUgZGVjb2RlZCA6Y2xhc3M6YGJ5dGVzYC4KIAogCiAuLiBmdW5jdGlvbjo6IHVybHNhZmVfYjY0ZW5jb2RlKHMpCiAKLSAgIEVuY29kZSBieXRlIHN0cmluZyAqcyogdXNpbmcgYSBVUkwtc2FmZSBhbHBoYWJldCwgd2hpY2ggc3Vic3RpdHV0ZXMgYGAtYGAgaW5zdGVhZCBvZgotICAgYGArYGAgYW5kIGBgX2BgIGluc3RlYWQgb2YgYGAvYGAgaW4gdGhlIHN0YW5kYXJkIEJhc2U2NCBhbHBoYWJldC4gIFRoZSByZXN1bHQKKyAgIEVuY29kZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgICpzKiB1c2luZyBhIFVSTC1zYWZlIGFscGhhYmV0LCB3aGljaAorICAgc3Vic3RpdHV0ZXMgYGAtYGAgaW5zdGVhZCBvZiBgYCtgYCBhbmQgYGBfYGAgaW5zdGVhZCBvZiBgYC9gYCBpbiB0aGUKKyAgIHN0YW5kYXJkIEJhc2U2NCBhbHBoYWJldCwgYW5kIHJldHVybiB0aGUgZW5jb2RlZCA6Y2xhc3M6YGJ5dGVzYC4gIFRoZSByZXN1bHQKICAgIGNhbiBzdGlsbCBjb250YWluIGBgPWBgLgogCiAKIC4uIGZ1bmN0aW9uOjogdXJsc2FmZV9iNjRkZWNvZGUocykKIAotICAgRGVjb2RlIGJ5dGUgc3RyaW5nICpzKiB1c2luZyBhIFVSTC1zYWZlIGFscGhhYmV0LCB3aGljaCBzdWJzdGl0dXRlcyBgYC1gYCBpbnN0ZWFkIG9mCi0gICBgYCtgYCBhbmQgYGBfYGAgaW5zdGVhZCBvZiBgYC9gYCBpbiB0aGUgc3RhbmRhcmQgQmFzZTY0IGFscGhhYmV0LgorICAgRGVjb2RlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgb3IgQVNDSUkgc3RyaW5nICpzKiB1c2luZyBhIFVSTC1zYWZlCisgICBhbHBoYWJldCwgd2hpY2ggc3Vic3RpdHV0ZXMgYGAtYGAgaW5zdGVhZCBvZiBgYCtgYCBhbmQgYGBfYGAgaW5zdGVhZCBvZgorICAgYGAvYGAgaW4gdGhlIHN0YW5kYXJkIEJhc2U2NCBhbHBoYWJldCwgYW5kIHJldHVybiB0aGUgZGVjb2RlZAorICAgOmNsYXNzOmBieXRlc2AuCiAKIAogLi4gZnVuY3Rpb246OiBiMzJlbmNvZGUocykKIAotICAgRW5jb2RlIGEgYnl0ZSBzdHJpbmcgdXNpbmcgQmFzZTMyLiAgKnMqIGlzIHRoZSBzdHJpbmcgdG8gZW5jb2RlLiAgVGhlIGVuY29kZWQgc3RyaW5nCi0gICBpcyByZXR1cm5lZC4KKyAgIEVuY29kZSB0aGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCAqcyogdXNpbmcgQmFzZTMyIGFuZCByZXR1cm4gdGhlCisgICBlbmNvZGVkIDpjbGFzczpgYnl0ZXNgLgogCiAKIC4uIGZ1bmN0aW9uOjogYjMyZGVjb2RlKHMsIGNhc2Vmb2xkPUZhbHNlLCBtYXAwMT1Ob25lKQogCi0gICBEZWNvZGUgYSBCYXNlMzIgZW5jb2RlZCBieXRlIHN0cmluZy4KKyAgIERlY29kZSB0aGUgQmFzZTMyIGVuY29kZWQgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBvciBBU0NJSSBzdHJpbmcgKnMqIGFuZAorICAgcmV0dXJuIHRoZSBkZWNvZGVkIDpjbGFzczpgYnl0ZXNgLgogCi0gICAqcyogaXMgdGhlIGJ5dGUgc3RyaW5nIHRvIGRlY29kZS4gIE9wdGlvbmFsICpjYXNlZm9sZCogaXMgYSBmbGFnIHNwZWNpZnlpbmcKKyAgIE9wdGlvbmFsICpjYXNlZm9sZCogaXMgYSBmbGFnIHNwZWNpZnlpbmcKICAgIHdoZXRoZXIgYSBsb3dlcmNhc2UgYWxwaGFiZXQgaXMgYWNjZXB0YWJsZSBhcyBpbnB1dC4gIEZvciBzZWN1cml0eSBwdXJwb3NlcywKICAgIHRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4KIApAQCAtMTEzLDQ2ICsxMjUsNDUgQEAKICAgIGRpZ2l0IDAgaXMgYWx3YXlzIG1hcHBlZCB0byB0aGUgbGV0dGVyIE8pLiAgRm9yIHNlY3VyaXR5IHB1cnBvc2VzIHRoZSBkZWZhdWx0IGlzCiAgICBgYE5vbmVgYCwgc28gdGhhdCAwIGFuZCAxIGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgaW5wdXQuCiAKLSAgIFRoZSBkZWNvZGVkIGJ5dGUgc3RyaW5nIGlzIHJldHVybmVkLiAgQSA6ZXhjOmBiaW5hc2NpaS5FcnJvcmAgaXMgcmFpc2VkIGlmICpzKiBpcworICAgQSA6ZXhjOmBiaW5hc2NpaS5FcnJvcmAgaXMgcmFpc2VkIGlmICpzKiBpcwogICAgaW5jb3JyZWN0bHkgcGFkZGVkIG9yIGlmIHRoZXJlIGFyZSBub24tYWxwaGFiZXQgY2hhcmFjdGVycyBwcmVzZW50IGluIHRoZQotICAgc3RyaW5nLgorICAgaW5wdXQuCiAKIAogLi4gZnVuY3Rpb246OiBiMTZlbmNvZGUocykKIAotICAgRW5jb2RlIGEgYnl0ZSBzdHJpbmcgdXNpbmcgQmFzZTE2LgotCi0gICAqcyogaXMgdGhlIHN0cmluZyB0byBlbmNvZGUuICBUaGUgZW5jb2RlZCBieXRlIHN0cmluZyBpcyByZXR1cm5lZC4KKyAgIEVuY29kZSB0aGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCAqcyogdXNpbmcgQmFzZTE2IGFuZCByZXR1cm4gdGhlCisgICBlbmNvZGVkIDpjbGFzczpgYnl0ZXNgLgogCiAKIC4uIGZ1bmN0aW9uOjogYjE2ZGVjb2RlKHMsIGNhc2Vmb2xkPUZhbHNlKQogCi0gICBEZWNvZGUgYSBCYXNlMTYgZW5jb2RlZCBieXRlIHN0cmluZy4KKyAgIERlY29kZSB0aGUgQmFzZTE2IGVuY29kZWQgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBvciBBU0NJSSBzdHJpbmcgKnMqIGFuZAorICAgcmV0dXJuIHRoZSBkZWNvZGVkIDpjbGFzczpgYnl0ZXNgLgogCi0gICAqcyogaXMgdGhlIHN0cmluZyB0byBkZWNvZGUuICBPcHRpb25hbCAqY2FzZWZvbGQqIGlzIGEgZmxhZyBzcGVjaWZ5aW5nIHdoZXRoZXIgYQorICAgT3B0aW9uYWwgKmNhc2Vmb2xkKiBpcyBhIGZsYWcgc3BlY2lmeWluZyB3aGV0aGVyIGEKICAgIGxvd2VyY2FzZSBhbHBoYWJldCBpcyBhY2NlcHRhYmxlIGFzIGlucHV0LiAgRm9yIHNlY3VyaXR5IHB1cnBvc2VzLCB0aGUgZGVmYXVsdAogICAgaXMgYGBGYWxzZWBgLgogCi0gICBUaGUgZGVjb2RlZCBieXRlIHN0cmluZyBpcyByZXR1cm5lZC4gIEEgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQgaWYgKnMqIHdlcmUKKyAgIEEgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQgaWYgKnMqIGlzCiAgICBpbmNvcnJlY3RseSBwYWRkZWQgb3IgaWYgdGhlcmUgYXJlIG5vbi1hbHBoYWJldCBjaGFyYWN0ZXJzIHByZXNlbnQgaW4gdGhlCi0gICBzdHJpbmcuCisgICBpbnB1dC4KIAogCiAuLiBmdW5jdGlvbjo6IGE4NWVuY29kZShzLCAqLCBmb2xkc3BhY2VzPUZhbHNlLCB3cmFwY29sPTAsIHBhZD1GYWxzZSwgYWRvYmU9RmFsc2UpCiAKLSAgIEVuY29kZSBhIGJ5dGUgc3RyaW5nIHVzaW5nIEFzY2lpODUuCi0KLSAgICpzKiBpcyB0aGUgc3RyaW5nIHRvIGVuY29kZS4gVGhlIGVuY29kZWQgYnl0ZSBzdHJpbmcgaXMgcmV0dXJuZWQuCisgICBFbmNvZGUgdGhlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgKnMqIHVzaW5nIEFzY2lpODUgYW5kIHJldHVybiB0aGUKKyAgIGVuY29kZWQgOmNsYXNzOmBieXRlc2AuCiAKICAgICpmb2xkc3BhY2VzKiBpcyBhbiBvcHRpb25hbCBmbGFnIHRoYXQgdXNlcyB0aGUgc3BlY2lhbCBzaG9ydCBzZXF1ZW5jZSAneScKICAgIGluc3RlYWQgb2YgNCBjb25zZWN1dGl2ZSBzcGFjZXMgKEFTQ0lJIDB4MjApIGFzIHN1cHBvcnRlZCBieSAnYnRvYScuIFRoaXMKICAgIGZlYXR1cmUgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgInN0YW5kYXJkIiBBc2NpaTg1IGVuY29kaW5nLgogCi0gICAqd3JhcGNvbCogY29udHJvbHMgd2hldGhlciB0aGUgb3V0cHV0IHNob3VsZCBoYXZlIG5ld2xpbmUgKGBgJ1xuJ2BgKQorICAgKndyYXBjb2wqIGNvbnRyb2xzIHdoZXRoZXIgdGhlIG91dHB1dCBzaG91bGQgaGF2ZSBuZXdsaW5lIChgYGInXG4nYGApCiAgICBjaGFyYWN0ZXJzIGFkZGVkIHRvIGl0LiBJZiB0aGlzIGlzIG5vbi16ZXJvLCBlYWNoIG91dHB1dCBsaW5lIHdpbGwgYmUKICAgIGF0IG1vc3QgdGhpcyBtYW55IGNoYXJhY3RlcnMgbG9uZy4KIAotICAgKnBhZCogY29udHJvbHMgd2hldGhlciB0aGUgaW5wdXQgc3RyaW5nIGlzIHBhZGRlZCB0byBhIG11bHRpcGxlIG9mIDQKKyAgICpwYWQqIGNvbnRyb2xzIHdoZXRoZXIgdGhlIGlucHV0IGlzIHBhZGRlZCB0byBhIG11bHRpcGxlIG9mIDQKICAgIGJlZm9yZSBlbmNvZGluZy4gTm90ZSB0aGF0IHRoZSBgYGJ0b2FgYCBpbXBsZW1lbnRhdGlvbiBhbHdheXMgcGFkcy4KIAogICAgKmFkb2JlKiBjb250cm9scyB3aGV0aGVyIHRoZSBlbmNvZGVkIGJ5dGUgc2VxdWVuY2UgaXMgZnJhbWVkIHdpdGggYGA8fmBgCkBAIC0xNjMsOSArMTc0LDggQEAKIAogLi4gZnVuY3Rpb246OiBhODVkZWNvZGUocywgKiwgZm9sZHNwYWNlcz1GYWxzZSwgYWRvYmU9RmFsc2UsIGlnbm9yZWNoYXJzPWInIFxcdFxcblxcclxcdicpCiAKLSAgIERlY29kZSBhbiBBc2NpaTg1IGVuY29kZWQgYnl0ZSBzdHJpbmcuCi0KLSAgICpzKiBpcyB0aGUgYnl0ZSBzdHJpbmcgdG8gZGVjb2RlLgorICAgRGVjb2RlIHRoZSBBc2NpaTg1IGVuY29kZWQgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBvciBBU0NJSSBzdHJpbmcgKnMqIGFuZAorICAgcmV0dXJuIHRoZSBkZWNvZGVkIDpjbGFzczpgYnl0ZXNgLgogCiAgICAqZm9sZHNwYWNlcyogaXMgYSBmbGFnIHRoYXQgc3BlY2lmaWVzIHdoZXRoZXIgdGhlICd5JyBzaG9ydCBzZXF1ZW5jZQogICAgc2hvdWxkIGJlIGFjY2VwdGVkIGFzIHNob3J0aGFuZCBmb3IgNCBjb25zZWN1dGl2ZSBzcGFjZXMgKEFTQ0lJIDB4MjApLgpAQCAtMTc0LDcgKzE4NCw4IEBACiAgICAqYWRvYmUqIGNvbnRyb2xzIHdoZXRoZXIgdGhlIGlucHV0IHNlcXVlbmNlIGlzIGluIEFkb2JlIEFzY2lpODUgZm9ybWF0CiAgICAoaS5lLiBpcyBmcmFtZWQgd2l0aCA8fiBhbmQgfj4pLgogCi0gICAqaWdub3JlY2hhcnMqIHNob3VsZCBiZSBhIGJ5dGUgc3RyaW5nIGNvbnRhaW5pbmcgY2hhcmFjdGVycyB0byBpZ25vcmUKKyAgICppZ25vcmVjaGFycyogc2hvdWxkIGJlIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBvciBBU0NJSSBzdHJpbmcKKyAgIGNvbnRhaW5pbmcgY2hhcmFjdGVycyB0byBpZ25vcmUKICAgIGZyb20gdGhlIGlucHV0LiBUaGlzIHNob3VsZCBvbmx5IGNvbnRhaW4gd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLCBhbmQgYnkKICAgIGRlZmF1bHQgY29udGFpbnMgYWxsIHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiBBU0NJSS4KIApAQCAtMTgzLDE4ICsxOTQsMTkgQEAKIAogLi4gZnVuY3Rpb246OiBiODVlbmNvZGUocywgcGFkPUZhbHNlKQogCi0gICBFbmNvZGUgYSBieXRlIHN0cmluZyB1c2luZyBiYXNlODUsIGFzIHVzZWQgaW4gZS5nLiBnaXQtc3R5bGUgYmluYXJ5Ci0gICBkaWZmcy4KKyAgIEVuY29kZSB0aGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCAqcyogdXNpbmcgYmFzZTg1IChhcyB1c2VkIGluIGUuZy4KKyAgIGdpdC1zdHlsZSBiaW5hcnkgZGlmZnMpIGFuZCByZXR1cm4gdGhlIGVuY29kZWQgOmNsYXNzOmBieXRlc2AuCiAKLSAgIElmICpwYWQqIGlzIHRydWUsIHRoZSBpbnB1dCBpcyBwYWRkZWQgd2l0aCAiXFwwIiBzbyBpdHMgbGVuZ3RoIGlzIGEKLSAgIG11bHRpcGxlIG9mIDQgY2hhcmFjdGVycyBiZWZvcmUgZW5jb2RpbmcuCisgICBJZiAqcGFkKiBpcyB0cnVlLCB0aGUgaW5wdXQgaXMgcGFkZGVkIHdpdGggYGBiJ1wwJ2BgIHNvIGl0cyBsZW5ndGggaXMgYQorICAgbXVsdGlwbGUgb2YgNCBieXRlcyBiZWZvcmUgZW5jb2RpbmcuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCiAKIC4uIGZ1bmN0aW9uOjogYjg1ZGVjb2RlKGIpCiAKLSAgIERlY29kZSBiYXNlODUtZW5jb2RlZCBieXRlIHN0cmluZy4gIFBhZGRpbmcgaXMgaW1wbGljaXRseSByZW1vdmVkLCBpZgorICAgRGVjb2RlIHRoZSBiYXNlODUtZW5jb2RlZCA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIG9yIEFTQ0lJIHN0cmluZyAqYiogYW5kCisgICByZXR1cm4gdGhlIGRlY29kZWQgOmNsYXNzOmBieXRlc2AuICBQYWRkaW5nIGlzIGltcGxpY2l0bHkgcmVtb3ZlZCwgaWYKICAgIG5lY2Vzc2FyeS4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CkBAIC0yMTQsMTUgKzIyNiwxNSBAQAogCiAgICBEZWNvZGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBiaW5hcnkgKmlucHV0KiBmaWxlIGFuZCB3cml0ZSB0aGUgcmVzdWx0aW5nIGJpbmFyeQogICAgZGF0YSB0byB0aGUgKm91dHB1dCogZmlsZS4gKmlucHV0KiBhbmQgKm91dHB1dCogbXVzdCBiZSA6dGVybTpgZmlsZSBvYmplY3RzCi0gICA8ZmlsZSBvYmplY3Q+YC4gKmlucHV0KiB3aWxsIGJlIHJlYWQgdW50aWwgYGBpbnB1dC5yZWFkKClgYCByZXR1cm5zIGFuIGVtcHR5Ci0gICBieXRlcyBvYmplY3QuCisgICA8ZmlsZSBvYmplY3Q+YC4gKmlucHV0KiB3aWxsIGJlIHJlYWQgdW50aWwgYGBpbnB1dC5yZWFkbGluZSgpYGAgcmV0dXJucyBhbgorICAgZW1wdHkgYnl0ZXMgb2JqZWN0LgogCiAKIC4uIGZ1bmN0aW9uOjogZGVjb2RlYnl0ZXMocykKICAgICAgICAgICAgICAgZGVjb2Rlc3RyaW5nKHMpCiAKLSAgIERlY29kZSB0aGUgYnl0ZSBzdHJpbmcgKnMqLCB3aGljaCBtdXN0IGNvbnRhaW4gb25lIG9yIG1vcmUgbGluZXMgb2YgYmFzZTY0Ci0gICBlbmNvZGVkIGRhdGEsIGFuZCByZXR1cm4gYSBieXRlIHN0cmluZyBjb250YWluaW5nIHRoZSByZXN1bHRpbmcgYmluYXJ5IGRhdGEuCisgICBEZWNvZGUgdGhlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgKnMqLCB3aGljaCBtdXN0IGNvbnRhaW4gb25lIG9yIG1vcmUKKyAgIGxpbmVzIG9mIGJhc2U2NCBlbmNvZGVkIGRhdGEsIGFuZCByZXR1cm4gdGhlIGRlY29kZWQgOmNsYXNzOmBieXRlc2AuCiAgICBgYGRlY29kZXN0cmluZ2BgIGlzIGEgZGVwcmVjYXRlZCBhbGlhcy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCkBAIC0yMzMsMTcgKzI0NSwxOSBAQAogICAgRW5jb2RlIHRoZSBjb250ZW50cyBvZiB0aGUgYmluYXJ5ICppbnB1dCogZmlsZSBhbmQgd3JpdGUgdGhlIHJlc3VsdGluZyBiYXNlNjQKICAgIGVuY29kZWQgZGF0YSB0byB0aGUgKm91dHB1dCogZmlsZS4gKmlucHV0KiBhbmQgKm91dHB1dCogbXVzdCBiZSA6dGVybTpgZmlsZQogICAgb2JqZWN0cyA8ZmlsZSBvYmplY3Q+YC4gKmlucHV0KiB3aWxsIGJlIHJlYWQgdW50aWwgYGBpbnB1dC5yZWFkKClgYCByZXR1cm5zCi0gICBhbiBlbXB0eSBieXRlcyBvYmplY3QuIDpmdW5jOmBlbmNvZGVgIHJldHVybnMgdGhlIGVuY29kZWQgZGF0YSBwbHVzIGEgdHJhaWxpbmcKLSAgIG5ld2xpbmUgY2hhcmFjdGVyIChgYGInXG4nYGApLgorICAgYW4gZW1wdHkgYnl0ZXMgb2JqZWN0LiA6ZnVuYzpgZW5jb2RlYCBpbnNlcnRzIGEgbmV3bGluZSBjaGFyYWN0ZXIgKGBgYidcbidgYCkKKyAgIGFmdGVyIGV2ZXJ5IDc2IGJ5dGVzIG9mIHRoZSBvdXRwdXQsIGFzIHdlbGwgYXMgZW5zdXJpbmcgdGhhdCB0aGUgb3V0cHV0CisgICBhbHdheXMgZW5kcyB3aXRoIGEgbmV3bGluZSwgYXMgcGVyIDpyZmM6YDIwNDVgIChNSU1FKS4KIAogCiAuLiBmdW5jdGlvbjo6IGVuY29kZWJ5dGVzKHMpCiAgICAgICAgICAgICAgIGVuY29kZXN0cmluZyhzKQogCi0gICBFbmNvZGUgdGhlIGJ5dGUgc3RyaW5nICpzKiwgd2hpY2ggY2FuIGNvbnRhaW4gYXJiaXRyYXJ5IGJpbmFyeSBkYXRhLCBhbmQKLSAgIHJldHVybiBhIGJ5dGUgc3RyaW5nIGNvbnRhaW5pbmcgb25lIG9yIG1vcmUgbGluZXMgb2YgYmFzZTY0LWVuY29kZWQgZGF0YS4KLSAgIDpmdW5jOmBlbmNvZGVieXRlc2AgcmV0dXJucyBhIHN0cmluZyBjb250YWluaW5nIG9uZSBvciBtb3JlIGxpbmVzIG9mCi0gICBiYXNlNjQtZW5jb2RlZCBkYXRhIGFsd2F5cyBpbmNsdWRpbmcgYW4gZXh0cmEgdHJhaWxpbmcgbmV3bGluZSAoYGBiJ1xuJ2BgKS4KKyAgIEVuY29kZSB0aGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCAqcyosIHdoaWNoIGNhbiBjb250YWluIGFyYml0cmFyeSBiaW5hcnkKKyAgIGRhdGEsIGFuZCByZXR1cm4gOmNsYXNzOmBieXRlc2AgY29udGFpbmluZyB0aGUgYmFzZTY0LWVuY29kZWQgZGF0YSwgd2l0aCBuZXdsaW5lcworICAgKGBgYidcbidgYCkgaW5zZXJ0ZWQgYWZ0ZXIgZXZlcnkgNzYgYnl0ZXMgb2Ygb3V0cHV0LCBhbmQgZW5zdXJpbmcgdGhhdAorICAgdGhlcmUgaXMgYSB0cmFpbGluZyBuZXdsaW5lLCBhcyBwZXIgOnJmYzpgMjA0NWAgKE1JTUUpLgorCiAgICBgYGVuY29kZXN0cmluZ2BgIGlzIGEgZGVwcmVjYXRlZCBhbGlhcy4KIAogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QgYi9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QKaW5kZXggZGJlNTM1ZC4uZmYyYmRkYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYmluYXNjaWkucnN0CisrKyBiL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdApAQCAtMTEyLDE1ICsxMTIsMTYgQEAKICAgIHBvc3NpYmx5IHRoZSBsYXN0IGZyYWdtZW50KS4KIAogCi0uLiBmdW5jdGlvbjo6IGNyY19ocXgoZGF0YSwgY3JjKQorLi4gZnVuY3Rpb246OiBjcmNfaHF4KGRhdGEsIHZhbHVlKQogCi0gICBDb21wdXRlIHRoZSBiaW5oZXg0IGNyYyB2YWx1ZSBvZiAqZGF0YSosIHN0YXJ0aW5nIHdpdGggYW4gaW5pdGlhbCAqY3JjKiBhbmQKLSAgIHJldHVybmluZyB0aGUgcmVzdWx0LgorICAgQ29tcHV0ZSB0aGUgYmluaGV4NCBjcmMgdmFsdWUgb2YgKmRhdGEqLCBzdGFydGluZyB3aXRoICp2YWx1ZSogYXMgdGhlCisgICBpbml0aWFsIGNyYywgYW5kIHJldHVybiB0aGUgcmVzdWx0LgogCiAKLS4uIGZ1bmN0aW9uOjogY3JjMzIoZGF0YVssIGNyY10pCisuLiBmdW5jdGlvbjo6IGNyYzMyKGRhdGFbLCB2YWx1ZV0pCiAKLSAgIENvbXB1dGUgQ1JDLTMyLCB0aGUgMzItYml0IGNoZWNrc3VtIG9mIGRhdGEsIHN0YXJ0aW5nIHdpdGggYW4gaW5pdGlhbCBjcmMuICBUaGlzCisgICBDb21wdXRlIENSQy0zMiwgdGhlIDMyLWJpdCBjaGVja3N1bSBvZiAqZGF0YSosIHN0YXJ0aW5nIHdpdGggYW4KKyAgIGluaXRpYWwgQ1JDIG9mICp2YWx1ZSouICBUaGUgZGVmYXVsdCBpbml0aWFsIENSQyBpcyB6ZXJvLiAgVGhlIGFsZ29yaXRobQogICAgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBaSVAgZmlsZSBjaGVja3N1bS4gIFNpbmNlIHRoZSBhbGdvcml0aG0gaXMgZGVzaWduZWQgZm9yCiAgICB1c2UgYXMgYSBjaGVja3N1bSBhbGdvcml0aG0sIGl0IGlzIG5vdCBzdWl0YWJsZSBmb3IgdXNlIGFzIGEgZ2VuZXJhbCBoYXNoCiAgICBhbGdvcml0aG0uICBVc2UgYXMgZm9sbG93czo6CkBAIC0xMjgsMTUgKzEyOSwxMyBAQAogICAgICAgcHJpbnQoYmluYXNjaWkuY3JjMzIoYiJoZWxsbyB3b3JsZCIpKQogICAgICAgIyBPciwgaW4gdHdvIHBpZWNlczoKICAgICAgIGNyYyA9IGJpbmFzY2lpLmNyYzMyKGIiaGVsbG8iKQotICAgICAgY3JjID0gYmluYXNjaWkuY3JjMzIoYiIgd29ybGQiLCBjcmMpICYgMHhmZmZmZmZmZgorICAgICAgY3JjID0gYmluYXNjaWkuY3JjMzIoYiIgd29ybGQiLCBjcmMpCiAgICAgICBwcmludCgnY3JjMzIgPSB7OiMwMTB4fScuZm9ybWF0KGNyYykpCiAKLS4uIG5vdGU6OgotICAgVG8gZ2VuZXJhdGUgdGhlIHNhbWUgbnVtZXJpYyB2YWx1ZSBhY3Jvc3MgYWxsIFB5dGhvbiB2ZXJzaW9ucyBhbmQKLSAgIHBsYXRmb3JtcyB1c2UgY3JjMzIoZGF0YSkgJiAweGZmZmZmZmZmLiAgSWYgeW91IGFyZSBvbmx5IHVzaW5nCi0gICB0aGUgY2hlY2tzdW0gaW4gcGFja2VkIGJpbmFyeSBmb3JtYXQgdGhpcyBpcyBub3QgbmVjZXNzYXJ5IGFzIHRoZQotICAgcmV0dXJuIHZhbHVlIGlzIHRoZSBjb3JyZWN0IDMyYml0IGJpbmFyeSByZXByZXNlbnRhdGlvbgotICAgcmVnYXJkbGVzcyBvZiBzaWduLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjAKKyAgICAgIFRoZSByZXN1bHQgaXMgYWx3YXlzIHVuc2lnbmVkLgorICAgICAgVG8gZ2VuZXJhdGUgdGhlIHNhbWUgbnVtZXJpYyB2YWx1ZSBhY3Jvc3MgYWxsIFB5dGhvbiB2ZXJzaW9ucyBhbmQKKyAgICAgIHBsYXRmb3JtcywgdXNlIGBgY3JjMzIoZGF0YSkgJiAweGZmZmZmZmZmYGAuCiAKIAogLi4gZnVuY3Rpb246OiBiMmFfaGV4KGRhdGEpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iejIucnN0IGIvRG9jL2xpYnJhcnkvYnoyLnJzdAppbmRleCA0ODhjZGE1Li4xYjhkOWNmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9iejIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2J6Mi5yc3QKQEAgLTEyMCw2ICsxMjAsMTAgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUaGUgYGAneCdgYCAoZXhjbHVzaXZlIGNyZWF0aW9uKSBtb2RlIHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRgIG1ldGhvZCBub3cgYWNjZXB0cyBhbiBhcmd1bWVudCBvZgorICAgICAgYGBOb25lYGAuCisKIAogSW5jcmVtZW50YWwgKGRlKWNvbXByZXNzaW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE2MiwxNSArMTY2LDMyIEBACiAgICAgICB5b3UgbmVlZCB0byBkZWNvbXByZXNzIGEgbXVsdGktc3RyZWFtIGlucHV0IHdpdGggOmNsYXNzOmBCWjJEZWNvbXByZXNzb3JgLAogICAgICAgeW91IG11c3QgdXNlIGEgbmV3IGRlY29tcHJlc3NvciBmb3IgZWFjaCBzdHJlYW0uCiAKLSAgIC4uIG1ldGhvZDo6IGRlY29tcHJlc3MoZGF0YSkKKyAgIC4uIG1ldGhvZDo6IGRlY29tcHJlc3MoZGF0YSwgbWF4X2xlbmd0aD0tMSkKIAotICAgICAgUHJvdmlkZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LiBSZXR1cm5zIGEgY2h1bmsgb2YgZGVjb21wcmVzc2VkCi0gICAgICBkYXRhIGlmIHBvc3NpYmxlLCBvciBhbiBlbXB0eSBieXRlIHN0cmluZyBvdGhlcndpc2UuCisgICAgICBEZWNvbXByZXNzICpkYXRhKiAoYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgKSwgcmV0dXJuaW5nCisgICAgICB1bmNvbXByZXNzZWQgZGF0YSBhcyBieXRlcy4gU29tZSBvZiAqZGF0YSogbWF5IGJlIGJ1ZmZlcmVkCisgICAgICBpbnRlcm5hbGx5LCBmb3IgdXNlIGluIGxhdGVyIGNhbGxzIHRvIDptZXRoOmBkZWNvbXByZXNzYC4gVGhlCisgICAgICByZXR1cm5lZCBkYXRhIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgb3V0cHV0IG9mIGFueQorICAgICAgcHJldmlvdXMgY2FsbHMgdG8gOm1ldGg6YGRlY29tcHJlc3NgLgogCi0gICAgICBBdHRlbXB0aW5nIHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlciB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHN0cmVhbSBpcwotICAgICAgcmVhY2hlZCByYWlzZXMgYW4gOmV4YzpgRU9GRXJyb3JgLiBJZiBhbnkgZGF0YSBpcyBmb3VuZCBhZnRlciB0aGUgZW5kIG9mCi0gICAgICB0aGUgc3RyZWFtLCBpdCBpcyBpZ25vcmVkIGFuZCBzYXZlZCBpbiB0aGUgOmF0dHI6YHVudXNlZF9kYXRhYCBhdHRyaWJ1dGUuCisgICAgICBJZiAqbWF4X2xlbmd0aCogaXMgbm9ubmVnYXRpdmUsIHJldHVybnMgYXQgbW9zdCAqbWF4X2xlbmd0aCoKKyAgICAgIGJ5dGVzIG9mIGRlY29tcHJlc3NlZCBkYXRhLiBJZiB0aGlzIGxpbWl0IGlzIHJlYWNoZWQgYW5kIGZ1cnRoZXIKKyAgICAgIG91dHB1dCBjYW4gYmUgcHJvZHVjZWQsIHRoZSA6YXR0cjpgfi5uZWVkc19pbnB1dGAgYXR0cmlidXRlIHdpbGwKKyAgICAgIGJlIHNldCB0byBgYEZhbHNlYGAuIEluIHRoaXMgY2FzZSwgdGhlIG5leHQgY2FsbCB0bworICAgICAgOm1ldGg6YH4uZGVjb21wcmVzc2AgbWF5IHByb3ZpZGUgKmRhdGEqIGFzIGBgYicnYGAgdG8gb2J0YWluCisgICAgICBtb3JlIG9mIHRoZSBvdXRwdXQuCiAKKyAgICAgIElmIGFsbCBvZiB0aGUgaW5wdXQgZGF0YSB3YXMgZGVjb21wcmVzc2VkIGFuZCByZXR1cm5lZCAoZWl0aGVyCisgICAgICBiZWNhdXNlIHRoaXMgd2FzIGxlc3MgdGhhbiAqbWF4X2xlbmd0aCogYnl0ZXMsIG9yIGJlY2F1c2UKKyAgICAgICptYXhfbGVuZ3RoKiB3YXMgbmVnYXRpdmUpLCB0aGUgOmF0dHI6YH4ubmVlZHNfaW5wdXRgIGF0dHJpYnV0ZQorICAgICAgd2lsbCBiZSBzZXQgdG8gYGBUcnVlYGAuCisKKyAgICAgIEF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIHJlYWNoZWQKKyAgICAgIHJhaXNlcyBhbiBgRU9GRXJyb3JgLiAgQW55IGRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUKKyAgICAgIHN0cmVhbSBpcyBpZ25vcmVkIGFuZCBzYXZlZCBpbiB0aGUgOmF0dHI6YH4udW51c2VkX2RhdGFgIGF0dHJpYnV0ZS4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICAgIEFkZGVkIHRoZSAqbWF4X2xlbmd0aCogcGFyYW1ldGVyLgogCiAgICAuLiBhdHRyaWJ1dGU6OiBlb2YKIApAQCAtMTg2LDYgKzIwNywxMyBAQAogICAgICAgSWYgdGhpcyBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSBoYXMgYmVlbgogICAgICAgcmVhY2hlZCwgaXRzIHZhbHVlIHdpbGwgYmUgYGBiJydgYC4KIAorICAgLi4gYXR0cmlidXRlOjogbmVlZHNfaW5wdXQKKworICAgICAgYGBGYWxzZWBgIGlmIHRoZSA6bWV0aDpgLmRlY29tcHJlc3NgIG1ldGhvZCBjYW4gcHJvdmlkZSBtb3JlCisgICAgICBkZWNvbXByZXNzZWQgZGF0YSBiZWZvcmUgcmVxdWlyaW5nIG5ldyB1bmNvbXByZXNzZWQgaW5wdXQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAKIE9uZS1zaG90IChkZSljb21wcmVzc2lvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jZ2kucnN0IGIvRG9jL2xpYnJhcnkvY2dpLnJzdAppbmRleCA3NGFiZWQ1Li43ZTQ5NmNhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jZ2kucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NnaS5yc3QKQEAgLTE1Nyw2ICsxNTcsOSBAQAogICAgICAgICAgICBpZiBub3QgbGluZTogYnJlYWsKICAgICAgICAgICAgbGluZWNvdW50ID0gbGluZWNvdW50ICsgMQogCis6Y2xhc3M6YEZpZWxkU3RvcmFnZWAgb2JqZWN0cyBhbHNvIHN1cHBvcnQgYmVpbmcgdXNlZCBpbiBhIDprZXl3b3JkOmB3aXRoYAorc3RhdGVtZW50LCB3aGljaCB3aWxsIGF1dG9tYXRpY2FsbHkgY2xvc2UgdGhlbSB3aGVuIGRvbmUuCisKIElmIGFuIGVycm9yIGlzIGVuY291bnRlcmVkIHdoZW4gb2J0YWluaW5nIHRoZSBjb250ZW50cyBvZiBhbiB1cGxvYWRlZCBmaWxlCiAoZm9yIGV4YW1wbGUsIHdoZW4gdGhlIHVzZXIgaW50ZXJydXB0cyB0aGUgZm9ybSBzdWJtaXNzaW9uIGJ5IGNsaWNraW5nIG9uCiBhIEJhY2sgb3IgQ2FuY2VsIGJ1dHRvbikgdGhlIDphdHRyOmB+RmllbGRTdG9yYWdlLmRvbmVgIGF0dHJpYnV0ZSBvZiB0aGUKQEAgLTE4Miw2ICsxODUsMTAgQEAKICAgIFRoZSA6YXR0cjpgfkZpZWxkU3RvcmFnZS5maWxlYCBhdHRyaWJ1dGUgaXMgYXV0b21hdGljYWxseSBjbG9zZWQgdXBvbiB0aGUKICAgIGdhcmJhZ2UgY29sbGVjdGlvbiBvZiB0aGUgY3JlYXRpbmcgOmNsYXNzOmBGaWVsZFN0b3JhZ2VgIGluc3RhbmNlLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbCB0byB0aGUKKyAgIDpjbGFzczpgRmllbGRTdG9yYWdlYCBjbGFzcy4KKwogCiBIaWdoZXIgTGV2ZWwgSW50ZXJmYWNlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jbWF0aC5yc3QgYi9Eb2MvbGlicmFyeS9jbWF0aC5yc3QKaW5kZXggYTk4MWQ5NC4uYWI2MTlhMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY21hdGgucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NtYXRoLnJzdApAQCAtMjA3LDYgKzIwNywzOCBAQAogICAgYW5kIGBgRmFsc2VgYCBvdGhlcndpc2UuCiAKIAorLi4gZnVuY3Rpb246OiBpc2Nsb3NlKGEsIGIsICosIHJlbF90b2w9MWUtMDksIGFic190b2w9MC4wKQorCisgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIHZhbHVlcyAqYSogYW5kICpiKiBhcmUgY2xvc2UgdG8gZWFjaCBvdGhlciBhbmQKKyAgIGBgRmFsc2VgYCBvdGhlcndpc2UuCisKKyAgIFdoZXRoZXIgb3Igbm90IHR3byB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgY2xvc2UgaXMgZGV0ZXJtaW5lZCBhY2NvcmRpbmcgdG8KKyAgIGdpdmVuIGFic29sdXRlIGFuZCByZWxhdGl2ZSB0b2xlcmFuY2VzLgorCisgICAqcmVsX3RvbCogaXMgdGhlIHJlbGF0aXZlIHRvbGVyYW5jZSAtLSBpdCBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGRpZmZlcmVuY2UKKyAgIGJldHdlZW4gKmEqIGFuZCAqYiosIHJlbGF0aXZlIHRvIHRoZSBsYXJnZXIgYWJzb2x1dGUgdmFsdWUgb2YgKmEqIG9yICpiKi4KKyAgIEZvciBleGFtcGxlLCB0byBzZXQgYSB0b2xlcmFuY2Ugb2YgNSUsIHBhc3MgYGByZWxfdG9sPTAuMDVgYC4gIFRoZSBkZWZhdWx0CisgICB0b2xlcmFuY2UgaXMgYGAxZS0wOWBgLCB3aGljaCBhc3N1cmVzIHRoYXQgdGhlIHR3byB2YWx1ZXMgYXJlIHRoZSBzYW1lCisgICB3aXRoaW4gYWJvdXQgOSBkZWNpbWFsIGRpZ2l0cy4gICpyZWxfdG9sKiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgorCisgICAqYWJzX3RvbCogaXMgdGhlIG1pbmltdW0gYWJzb2x1dGUgdG9sZXJhbmNlIC0tIHVzZWZ1bCBmb3IgY29tcGFyaXNvbnMgbmVhcgorICAgemVyby4gKmFic190b2wqIG11c3QgYmUgYXQgbGVhc3QgemVyby4KKworICAgSWYgbm8gZXJyb3JzIG9jY3VyLCB0aGUgcmVzdWx0IHdpbGwgYmU6CisgICBgYGFicyhhLWIpIDw9IG1heChyZWxfdG9sICogbWF4KGFicyhhKSwgYWJzKGIpKSwgYWJzX3RvbClgYC4KKworICAgVGhlIElFRUUgNzU0IHNwZWNpYWwgdmFsdWVzIG9mIGBgTmFOYGAsIGBgaW5mYGAsIGFuZCBgYC1pbmZgYCB3aWxsIGJlCisgICBoYW5kbGVkIGFjY29yZGluZyB0byBJRUVFIHJ1bGVzLiAgU3BlY2lmaWNhbGx5LCBgYE5hTmBgIGlzIG5vdCBjb25zaWRlcmVkCisgICBjbG9zZSB0byBhbnkgb3RoZXIgdmFsdWUsIGluY2x1ZGluZyBgYE5hTmBgLiAgYGBpbmZgYCBhbmQgYGAtaW5mYGAgYXJlIG9ubHkKKyAgIGNvbnNpZGVyZWQgY2xvc2UgdG8gdGhlbXNlbHZlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKyAgIC4uIHNlZWFsc286OgorCisgICAgICA6cGVwOmA0ODVgIC0tIEEgZnVuY3Rpb24gZm9yIHRlc3RpbmcgYXBwcm94aW1hdGUgZXF1YWxpdHkKKworCiBDb25zdGFudHMKIC0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2RlLnJzdCBiL0RvYy9saWJyYXJ5L2NvZGUucnN0CmluZGV4IDViNWQ3Y2MuLjI3NTIwMWMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvZGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvZGUucnN0CkBAIC00LDYgKzQsNyBAQAogLi4gbW9kdWxlOjogY29kZQogICAgOnN5bm9wc2lzOiBGYWNpbGl0aWVzIHRvIGltcGxlbWVudCByZWFkLWV2YWwtcHJpbnQgbG9vcHMuCiAKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2NvZGUucHlgCiAKIFRoZSBgYGNvZGVgYCBtb2R1bGUgcHJvdmlkZXMgZmFjaWxpdGllcyB0byBpbXBsZW1lbnQgcmVhZC1ldmFsLXByaW50IGxvb3BzIGluCiBQeXRob24uICBUd28gY2xhc3NlcyBhbmQgY29udmVuaWVuY2UgZnVuY3Rpb25zIGFyZSBpbmNsdWRlZCB3aGljaCBjYW4gYmUgdXNlZCB0bwpAQCAtMTEzLDYgKzExNCw5IEBACiAgICBiZWNhdXNlIGl0IGlzIHdpdGhpbiB0aGUgaW50ZXJwcmV0ZXIgb2JqZWN0IGltcGxlbWVudGF0aW9uLiBUaGUgb3V0cHV0IGlzCiAgICB3cml0dGVuIGJ5IHRoZSA6bWV0aDpgd3JpdGVgIG1ldGhvZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUgVGhlIGZ1bGwgY2hhaW5lZCB0cmFjZWJhY2sgaXMgZGlzcGxheWVkIGluc3RlYWQKKyAgICAgIG9mIGp1c3QgdGhlIHByaW1hcnkgdHJhY2ViYWNrLgorCiAKIC4uIG1ldGhvZDo6IEludGVyYWN0aXZlSW50ZXJwcmV0ZXIud3JpdGUoZGF0YSkKIApAQCAtMTY1LDQgKzE2OSwzIEBACiAgICBuZXdsaW5lLiAgV2hlbiB0aGUgdXNlciBlbnRlcnMgdGhlIEVPRiBrZXkgc2VxdWVuY2UsIDpleGM6YEVPRkVycm9yYCBpcyByYWlzZWQuCiAgICBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiByZWFkcyBmcm9tIGBgc3lzLnN0ZGluYGA7IGEgc3ViY2xhc3MgbWF5IHJlcGxhY2UgdGhpcwogICAgd2l0aCBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbi4KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29kZWNzLnJzdCBiL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QKaW5kZXggNjI4OTY5Yy4uNDZkNzJiNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29kZWNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2RlY3MucnN0CkBAIC03LDYgKzcsNyBAQAogLi4gc2VjdGlvbmF1dGhvcjo6IE1hcmMtQW5kcsOpIExlbWJ1cmcgPG1hbEBsZW1idXJnLmNvbT4KIC4uIHNlY3Rpb25hdXRob3I6OiBNYXJ0aW4gdi4gTMO2d2lzIDxtYXJ0aW5Adi5sb2V3aXMuZGU+CiAKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2NvZGVjcy5weWAKIAogLi4gaW5kZXg6OgogICAgc2luZ2xlOiBVbmljb2RlCkBAIC0yOSwxMCArMzAsOSBAQAogVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGZvciBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgd2l0aAogYW55IGNvZGVjOgogCi0uLiBmdW5jdGlvbjo6IGVuY29kZShvYmosIFtlbmNvZGluZ1ssIGVycm9yc11dKQorLi4gZnVuY3Rpb246OiBlbmNvZGUob2JqLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpCiAKLSAgIEVuY29kZXMgKm9iaiogdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yICplbmNvZGluZyouIFRoZSBkZWZhdWx0Ci0gICBlbmNvZGluZyBpcyBgYHV0Zi04YGAuCisgICBFbmNvZGVzICpvYmoqIHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciAqZW5jb2RpbmcqLgogCiAgICAqRXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IHRoZSBkZXNpcmVkIGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gVGhlCiAgICBkZWZhdWx0IGVycm9yIGhhbmRsZXIgaXMgYGAnc3RyaWN0J2BgIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UKQEAgLTQwLDEwICs0MCw5IEBACiAgICA6ZXhjOmBVbmljb2RlRW5jb2RlRXJyb3JgKS4gUmVmZXIgdG8gOnJlZjpgY29kZWMtYmFzZS1jbGFzc2VzYCBmb3IgbW9yZQogICAgaW5mb3JtYXRpb24gb24gY29kZWMgZXJyb3IgaGFuZGxpbmcuCiAKLS4uIGZ1bmN0aW9uOjogZGVjb2RlKG9iaiwgW2VuY29kaW5nWywgZXJyb3JzXV0pCisuLiBmdW5jdGlvbjo6IGRlY29kZShvYmosIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0JykKIAotICAgRGVjb2RlcyAqb2JqKiB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgKmVuY29kaW5nKi4gVGhlIGRlZmF1bHQKLSAgIGVuY29kaW5nIGlzIGBgdXRmLThgYC4KKyAgIERlY29kZXMgKm9iaiogdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yICplbmNvZGluZyouCiAKICAgICpFcnJvcnMqIG1heSBiZSBnaXZlbiB0byBzZXQgdGhlIGRlc2lyZWQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBUaGUKICAgIGRlZmF1bHQgZXJyb3IgaGFuZGxlciBpcyBgYCdzdHJpY3QnYGAgbWVhbmluZyB0aGF0IGRlY29kaW5nIGVycm9ycyByYWlzZQpAQCAtMTA0LDcgKzEwMyw2IEBACiBUbyBzaW1wbGlmeSBhY2Nlc3MgdG8gdGhlIHZhcmlvdXMgY29kZWMgY29tcG9uZW50cywgdGhlIG1vZHVsZSBwcm92aWRlcwogdGhlc2UgYWRkaXRpb25hbCBmdW5jdGlvbnMgd2hpY2ggdXNlIDpmdW5jOmBsb29rdXBgIGZvciB0aGUgY29kZWMgbG9va3VwOgogCi0KIC4uIGZ1bmN0aW9uOjogZ2V0ZW5jb2RlcihlbmNvZGluZykKIAogICAgTG9vayB1cCB0aGUgY29kZWMgZm9yIHRoZSBnaXZlbiBlbmNvZGluZyBhbmQgcmV0dXJuIGl0cyBlbmNvZGVyIGZ1bmN0aW9uLgpAQCAtMjc0LDYgKzI3Miw3IEBACiBjb2RlYyB3aWxsIGhhbmRsZSBlbmNvZGluZyBhbmQgZGVjb2RpbmcgZXJyb3JzLgogCiAKKy4uIF9zdXJyb2dhdGVlc2NhcGU6CiAuLiBfZXJyb3ItaGFuZGxlcnM6CiAKIEVycm9yIEhhbmRsZXJzCkBAIC0zMTUsMTAgKzMxNCwxNCBAQAogfCAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlZmVyZW5jZSAob25seSBmb3IgZW5jb2RpbmcpLiAgSW1wbGVtZW50ZWQgICB8CiB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW4gOmZ1bmM6YHhtbGNoYXJyZWZyZXBsYWNlX2Vycm9yc2AuICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdiYWNrc2xhc2hyZXBsYWNlJ2BgICB8IFJlcGxhY2Ugd2l0aCBiYWNrc2xhc2hlZCBlc2NhcGUgc2VxdWVuY2VzICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgIHwgKG9ubHkgZm9yIGVuY29kaW5nKS4gIEltcGxlbWVudGVkIGluICAgICAgICAgIHwKK3wgYGAnYmFja3NsYXNocmVwbGFjZSdgYCAgfCBSZXBsYWNlIHdpdGggYmFja3NsYXNoZWQgZXNjYXBlIHNlcXVlbmNlcy4gICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICB8IEltcGxlbWVudGVkIGluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgOmZ1bmM6YGJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzYC4gICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYCduYW1lcmVwbGFjZSdgYCAgICAgICB8IFJlcGxhY2Ugd2l0aCBgYFxOey4uLn1gYCBlc2NhcGUgc2VxdWVuY2VzICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgKG9ubHkgZm9yIGVuY29kaW5nKS4gIEltcGxlbWVudGVkIGluICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgfCA6ZnVuYzpgbmFtZXJlcGxhY2VfZXJyb3JzYC4gICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCAgIHwgT24gZGVjb2RpbmcsIHJlcGxhY2UgYnl0ZSB3aXRoIGluZGl2aWR1YWwgICAgIHwKIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdXJyb2dhdGUgY29kZSByYW5naW5nIGZyb20gYGBVK0RDODBgYCB0byAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgVStEQ0ZGYGAuICBUaGlzIGNvZGUgd2lsbCB0aGVuIGJlIHR1cm5lZCAgICB8CkBAIC0zNDQsNiArMzQ3LDEzIEBACiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgVGhlIGBgJ3N1cnJvZ2F0ZXBhc3MnYGAgZXJyb3IgaGFuZGxlcnMgbm93IHdvcmtzIHdpdGggdXRmLTE2XCogYW5kIHV0Zi0zMlwqIGNvZGVjcy4KIAorLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICBUaGUgYGAnbmFtZXJlcGxhY2UnYGAgZXJyb3IgaGFuZGxlci4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIFRoZSBgYCdiYWNrc2xhc2hyZXBsYWNlJ2BgIGVycm9yIGhhbmRsZXJzIG5vdyB3b3JrcyB3aXRoIGRlY29kaW5nIGFuZAorICAgdHJhbnNsYXRpbmcuCisKIFRoZSBzZXQgb2YgYWxsb3dlZCB2YWx1ZXMgY2FuIGJlIGV4dGVuZGVkIGJ5IHJlZ2lzdGVyaW5nIGEgbmV3IG5hbWVkIGVycm9yCiBoYW5kbGVyOgogCkBAIC00MTEsOSArNDIxLDE3IEBACiAKIC4uIGZ1bmN0aW9uOjogYmFja3NsYXNocmVwbGFjZV9lcnJvcnMoZXhjZXB0aW9uKQogCi0gICBJbXBsZW1lbnRzIHRoZSBgYCdiYWNrc2xhc2hyZXBsYWNlJ2BgIGVycm9yIGhhbmRsaW5nIChmb3IgZW5jb2Rpbmcgd2l0aAorICAgSW1wbGVtZW50cyB0aGUgYGAnYmFja3NsYXNocmVwbGFjZSdgYCBlcnJvciBoYW5kbGluZyAoZm9yCisgICA6dGVybTpgdGV4dCBlbmNvZGluZ3MgPHRleHQgZW5jb2Rpbmc+YCBvbmx5KTogbWFsZm9ybWVkIGRhdGEgaXMKKyAgIHJlcGxhY2VkIGJ5IGEgYmFja3NsYXNoZWQgZXNjYXBlIHNlcXVlbmNlLgorCisuLiBmdW5jdGlvbjo6IG5hbWVyZXBsYWNlX2Vycm9ycyhleGNlcHRpb24pCisKKyAgIEltcGxlbWVudHMgdGhlIGBgJ25hbWVyZXBsYWNlJ2BgIGVycm9yIGhhbmRsaW5nIChmb3IgZW5jb2Rpbmcgd2l0aAogICAgOnRlcm06YHRleHQgZW5jb2RpbmdzIDx0ZXh0IGVuY29kaW5nPmAgb25seSk6IHRoZQotICAgdW5lbmNvZGFibGUgY2hhcmFjdGVyIGlzIHJlcGxhY2VkIGJ5IGEgYmFja3NsYXNoZWQgZXNjYXBlIHNlcXVlbmNlLgorICAgdW5lbmNvZGFibGUgY2hhcmFjdGVyIGlzIHJlcGxhY2VkIGJ5IGEgYGBcTnsuLi59YGAgZXNjYXBlIHNlcXVlbmNlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogCiAuLiBfY29kZWMtb2JqZWN0czoKQEAgLTExNDQsOCArMTE2MiwxNiBAQAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBrb2k4X3IgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSdXNzaWFuICAgICAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBrb2k4X3QgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUYWppayAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBrb2k4X3UgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBVa3JhaW5pYW4gICAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBrejEwNDggICAgICAgICAgfCBrel8xMDQ4LCBzdHJrMTA0OF8yMDAyLCByazEwNDggfCBLYXpha2ggICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBtYWNfY3lyaWxsaWMgICAgfCBtYWNjeXJpbGxpYyAgICAgICAgICAgICAgICAgICAgfCBCdWxnYXJpYW4sIEJ5ZWxvcnVzc2lhbiwgICAgICAgfAogfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNYWNlZG9uaWFuLCBSdXNzaWFuLCBTZXJiaWFuICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpAQCAtMTQ0Niw0ICsxNDcyLDMgQEAKIEJPTSB3aWxsIGJlIHByZXBlbmRlZCB0byB0aGUgVVRGLTggZW5jb2RlZCBieXRlcy4gRm9yIHRoZSBzdGF0ZWZ1bCBlbmNvZGVyIHRoaXMKIGlzIG9ubHkgZG9uZSBvbmNlIChvbiB0aGUgZmlyc3Qgd3JpdGUgdG8gdGhlIGJ5dGUgc3RyZWFtKS4gIEZvciBkZWNvZGluZyBhbgogb3B0aW9uYWwgVVRGLTggZW5jb2RlZCBCT00gYXQgdGhlIHN0YXJ0IG9mIHRoZSBkYXRhIHdpbGwgYmUgc2tpcHBlZC4KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdCBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKaW5kZXggZDczZjA1YS4uZDliOTNhZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0CkBAIC0zMywxMyArMzMsMTQgQEAKIAogLi4gdGFidWxhcmNvbHVtbnM6OiB8bHxMfEx8THwKIAotPT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis9PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIEFCQyAgICAgICAgICAgICAgICAgICAgICAgIEluaGVyaXRzIGZyb20gICAgICAgICAgQWJzdHJhY3QgTWV0aG9kcyAgICAgICAgTWl4aW4gTWV0aG9kcwotPT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis9PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDpjbGFzczpgQ29udGFpbmVyYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYAogOmNsYXNzOmBIYXNoYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faGFzaF9fYGAKIDpjbGFzczpgSXRlcmFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCiA6Y2xhc3M6YEl0ZXJhdG9yYCAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCAgICAgIGBgX19uZXh0X19gYCAgICAgICAgICAgIGBgX19pdGVyX19gYAorOmNsYXNzOmBHZW5lcmF0b3JgICAgICAgICAgOmNsYXNzOmBJdGVyYXRvcmAgICAgICBgYHNlbmRgYCwgYGB0aHJvd2BgICAgICBgYGNsb3NlYGAsIGBgX19pdGVyX19gYCwgYGBfX25leHRfX2BgCiA6Y2xhc3M6YFNpemVkYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZW5fX2BgCiA6Y2xhc3M6YENhbGxhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jYWxsX19gYAogCkBAIC04MCw3ICs4MSwxMSBAQAogOmNsYXNzOmBLZXlzVmlld2AgICAgICAgICAgOmNsYXNzOmBNYXBwaW5nVmlld2AsICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKIDpjbGFzczpgVmFsdWVzVmlld2AgICAgICAgIDpjbGFzczpgTWFwcGluZ1ZpZXdgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBfX2l0ZXJfX2BgCi09PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzpjbGFzczpgQXdhaXRhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2F3YWl0X19gYAorOmNsYXNzOmBDb3JvdXRpbmVgICAgICAgICAgOmNsYXNzOmBBd2FpdGFibGVgICAgICBgYHNlbmRgYCwgYGB0aHJvd2BgICAgICBgYGNsb3NlYGAKKzpjbGFzczpgQXN5bmNJdGVyYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2FpdGVyX19gYAorOmNsYXNzOmBBc3luY0l0ZXJhdG9yYCAgICAgOmNsYXNzOmBBc3luY0l0ZXJhYmxlYCBgYF9fYW5leHRfX2BgICAgICAgICAgICBgYF9fYWl0ZXJfX2BgCis9PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogCiAuLiBjbGFzczo6IENvbnRhaW5lcgpAQCAtMTAyLDExICsxMDcsMzQgQEAKICAgIDptZXRoOmB+aXRlcmF0b3IuX19uZXh0X19gIG1ldGhvZHMuICBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZgogICAgOnRlcm06YGl0ZXJhdG9yYC4KIAorLi4gY2xhc3M6OiBHZW5lcmF0b3IKKworICAgQUJDIGZvciBnZW5lcmF0b3IgY2xhc3NlcyB0aGF0IGltcGxlbWVudCB0aGUgcHJvdG9jb2wgZGVmaW5lZCBpbgorICAgOnBlcDpgMzQyYCB0aGF0IGV4dGVuZHMgaXRlcmF0b3JzIHdpdGggdGhlIDptZXRoOmB+Z2VuZXJhdG9yLnNlbmRgLAorICAgOm1ldGg6YH5nZW5lcmF0b3IudGhyb3dgIGFuZCA6bWV0aDpgfmdlbmVyYXRvci5jbG9zZWAgbWV0aG9kcy4KKyAgIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mIDp0ZXJtOmBnZW5lcmF0b3JgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gY2xhc3M6OiBTZXF1ZW5jZQogICAgICAgICAgICBNdXRhYmxlU2VxdWVuY2UKIAogICAgQUJDcyBmb3IgcmVhZC1vbmx5IGFuZCBtdXRhYmxlIDp0ZXJtOmBzZXF1ZW5jZXMgPHNlcXVlbmNlPmAuCiAKKyAgIEltcGxlbWVudGF0aW9uIG5vdGU6IFNvbWUgb2YgdGhlIG1peGluIG1ldGhvZHMsIHN1Y2ggYXMKKyAgIDptZXRoOmBfX2l0ZXJfX2AsIDptZXRoOmBfX3JldmVyc2VkX19gIGFuZCA6bWV0aDpgaW5kZXhgLCBtYWtlCisgICByZXBlYXRlZCBjYWxscyB0byB0aGUgdW5kZXJseWluZyA6bWV0aDpgX19nZXRpdGVtX19gIG1ldGhvZC4KKyAgIENvbnNlcXVlbnRseSwgaWYgOm1ldGg6YF9fZ2V0aXRlbV9fYCBpcyBpbXBsZW1lbnRlZCB3aXRoIGNvbnN0YW50CisgICBhY2Nlc3Mgc3BlZWQsIHRoZSBtaXhpbiBtZXRob2RzIHdpbGwgaGF2ZSBsaW5lYXIgcGVyZm9ybWFuY2U7CisgICBob3dldmVyLCBpZiB0aGUgdW5kZXJseWluZyBtZXRob2QgaXMgbGluZWFyIChhcyBpdCB3b3VsZCBiZSB3aXRoIGEKKyAgIGxpbmtlZCBsaXN0KSwgdGhlIG1peGlucyB3aWxsIGhhdmUgcXVhZHJhdGljIHBlcmZvcm1hbmNlIGFuZCB3aWxsCisgICBsaWtlbHkgbmVlZCB0byBiZSBvdmVycmlkZGVuLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGluZGV4KCkgbWV0aG9kIGFkZGVkIHN1cHBvcnQgZm9yICpzdG9wKiBhbmQgKnN0YXJ0KgorICAgICAgYXJndW1lbnRzLgorCisKIC4uIGNsYXNzOjogU2V0CiAgICAgICAgICAgIE11dGFibGVTZXQKIApAQCAtMTI0LDYgKzE1Miw1NiBAQAogCiAgICBBQkNzIGZvciBtYXBwaW5nLCBpdGVtcywga2V5cywgYW5kIHZhbHVlcyA6dGVybTpgdmlld3MgPGRpY3Rpb25hcnkgdmlldz5gLgogCisuLiBjbGFzczo6IEF3YWl0YWJsZQorCisgICBBQkMgZm9yIDp0ZXJtOmBhd2FpdGFibGVgIG9iamVjdHMsIHdoaWNoIGNhbiBiZSB1c2VkIGluIDprZXl3b3JkOmBhd2FpdGAKKyAgIGV4cHJlc3Npb25zLiAgQ3VzdG9tIGltcGxlbWVudGF0aW9ucyBtdXN0IHByb3ZpZGUgdGhlIDptZXRoOmBfX2F3YWl0X19gCisgICBtZXRob2QuCisKKyAgIDp0ZXJtOmBDb3JvdXRpbmVgIG9iamVjdHMgYW5kIGluc3RhbmNlcyBvZiB0aGUKKyAgIDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5Db3JvdXRpbmVgIEFCQyBhcmUgYWxsIGluc3RhbmNlcyBvZiB0aGlzIEFCQy4KKworICAgLi4gbm90ZTo6CisgICAgICBJbiBDUHl0aG9uLCBnZW5lcmF0b3ItYmFzZWQgY29yb3V0aW5lcyAoZ2VuZXJhdG9ycyBkZWNvcmF0ZWQgd2l0aAorICAgICAgOmZ1bmM6YHR5cGVzLmNvcm91dGluZWAgb3IgOmZ1bmM6YGFzeW5jaW8uY29yb3V0aW5lYCkgYXJlCisgICAgICAqYXdhaXRhYmxlcyosIGV2ZW4gdGhvdWdoIHRoZXkgZG8gbm90IGhhdmUgYW4gOm1ldGg6YF9fYXdhaXRfX2AgbWV0aG9kLgorICAgICAgVXNpbmcgYGBpc2luc3RhbmNlKGdlbmNvcm8sIEF3YWl0YWJsZSlgYCBmb3IgdGhlbSB3aWxsIHJldHVybiBgYEZhbHNlYGAuCisgICAgICBVc2UgOmZ1bmM6YGluc3BlY3QuaXNhd2FpdGFibGVgIHRvIGRldGVjdCB0aGVtLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gY2xhc3M6OiBDb3JvdXRpbmUKKworICAgQUJDIGZvciBjb3JvdXRpbmUgY29tcGF0aWJsZSBjbGFzc2VzLiAgVGhlc2UgaW1wbGVtZW50IHRoZQorICAgZm9sbG93aW5nIG1ldGhvZHMsIGRlZmluZWQgaW4gOnJlZjpgY29yb3V0aW5lLW9iamVjdHNgOgorICAgOm1ldGg6YH5jb3JvdXRpbmUuc2VuZGAsIDptZXRoOmB+Y29yb3V0aW5lLnRocm93YCwgYW5kCisgICA6bWV0aDpgfmNvcm91dGluZS5jbG9zZWAuICBDdXN0b20gaW1wbGVtZW50YXRpb25zIG11c3QgYWxzbyBpbXBsZW1lbnQKKyAgIDptZXRoOmBfX2F3YWl0X19gLiAgQWxsIDpjbGFzczpgQ29yb3V0aW5lYCBpbnN0YW5jZXMgYXJlIGFsc28gaW5zdGFuY2VzIG9mCisgICA6Y2xhc3M6YEF3YWl0YWJsZWAuICBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZiA6dGVybTpgY29yb3V0aW5lYC4KKworICAgLi4gbm90ZTo6CisgICAgICBJbiBDUHl0aG9uLCBnZW5lcmF0b3ItYmFzZWQgY29yb3V0aW5lcyAoZ2VuZXJhdG9ycyBkZWNvcmF0ZWQgd2l0aAorICAgICAgOmZ1bmM6YHR5cGVzLmNvcm91dGluZWAgb3IgOmZ1bmM6YGFzeW5jaW8uY29yb3V0aW5lYCkgYXJlCisgICAgICAqYXdhaXRhYmxlcyosIGV2ZW4gdGhvdWdoIHRoZXkgZG8gbm90IGhhdmUgYW4gOm1ldGg6YF9fYXdhaXRfX2AgbWV0aG9kLgorICAgICAgVXNpbmcgYGBpc2luc3RhbmNlKGdlbmNvcm8sIENvcm91dGluZSlgYCBmb3IgdGhlbSB3aWxsIHJldHVybiBgYEZhbHNlYGAuCisgICAgICBVc2UgOmZ1bmM6YGluc3BlY3QuaXNhd2FpdGFibGVgIHRvIGRldGVjdCB0aGVtLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gY2xhc3M6OiBBc3luY0l0ZXJhYmxlCisKKyAgIEFCQyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgYGBfX2FpdGVyX19gYCBtZXRob2QuICBTZWUgYWxzbyB0aGUKKyAgIGRlZmluaXRpb24gb2YgOnRlcm06YGFzeW5jaHJvbm91cyBpdGVyYWJsZWAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisuLiBjbGFzczo6IEFzeW5jSXRlcmF0b3IKKworICAgQUJDIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSBgYF9fYWl0ZXJfX2BgIGFuZCBgYF9fYW5leHRfX2BgCisgICBtZXRob2RzLiAgU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YgOnRlcm06YGFzeW5jaHJvbm91cyBpdGVyYXRvcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAKIFRoZXNlIEFCQ3MgYWxsb3cgdXMgdG8gYXNrIGNsYXNzZXMgb3IgaW5zdGFuY2VzIGlmIHRoZXkgcHJvdmlkZQogcGFydGljdWxhciBmdW5jdGlvbmFsaXR5LCBmb3IgZXhhbXBsZTo6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKaW5kZXggMDk3MTgyNS4uMDBkMjkxNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdApAQCAtMzg3LDcgKzM4Nyw3IEBACiAgICAgICBTZWN0aW9uIDQuNi4zLCBFeGVyY2lzZSAxOSouCiAKICAgICAqIFRvIGVudW1lcmF0ZSBhbGwgZGlzdGluY3QgbXVsdGlzZXRzIG9mIGEgZ2l2ZW4gc2l6ZSBvdmVyIGEgZ2l2ZW4gc2V0IG9mCi0gICAgICBlbGVtZW50cywgc2VlIDpmdW5jOmBpdGVydG9vbHMuY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnRgLgorICAgICAgZWxlbWVudHMsIHNlZSA6ZnVuYzpgaXRlcnRvb2xzLmNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50YDoKIAogICAgICAgICAgICAgbWFwKENvdW50ZXIsIGNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50KCdBQkMnLCAyKSkgLS0+IEFBIEFCIEFDIEJCIEJDIENDCiAKQEAgLTQzNyw2ICs0MzcsMTMgQEAKICAgICAgICAgUmVtb3ZlIGFsbCBlbGVtZW50cyBmcm9tIHRoZSBkZXF1ZSBsZWF2aW5nIGl0IHdpdGggbGVuZ3RoIDAuCiAKIAorICAgIC4uIG1ldGhvZDo6IGNvcHkoKQorCisgICAgICAgIENyZWF0ZSBhIHNoYWxsb3cgY29weSBvZiB0aGUgZGVxdWUuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogICAgIC4uIG1ldGhvZDo6IGNvdW50KHgpCiAKICAgICAgICAgQ291bnQgdGhlIG51bWJlciBvZiBkZXF1ZSBlbGVtZW50cyBlcXVhbCB0byAqeCouCkBAIC00NTcsNiArNDY0LDIyIEBACiAgICAgICAgIGVsZW1lbnRzIGluIHRoZSBpdGVyYWJsZSBhcmd1bWVudC4KIAogCisgICAgLi4gbWV0aG9kOjogaW5kZXgoeFssIHN0YXJ0Wywgc3RvcF1dKQorCisgICAgICAgIFJldHVybiB0aGUgcG9zaXRpb24gb2YgKngqIGluIHRoZSBkZXF1ZSAoYXQgb3IgYWZ0ZXIgaW5kZXggKnN0YXJ0KgorICAgICAgICBhbmQgYmVmb3JlIGluZGV4ICpzdG9wKikuICBSZXR1cm5zIHRoZSBmaXJzdCBtYXRjaCBvciByYWlzZXMKKyAgICAgICAgOmV4YzpgVmFsdWVFcnJvcmAgaWYgbm90IGZvdW5kLgorCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKKyAgICAuLiBtZXRob2Q6OiBpbnNlcnQoaSwgeCkKKworICAgICAgICBJbnNlcnQgKngqIGludG8gdGhlIGRlcXVlIGF0IHBvc2l0aW9uICppKi4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAgICAgLi4gbWV0aG9kOjogcG9wKCkKIAogICAgICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBlbGVtZW50IGZyb20gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGRlcXVlLiBJZiBubwpAQCAtNDcxLDcgKzQ5NCw3IEBACiAKICAgICAuLiBtZXRob2Q6OiByZW1vdmUodmFsdWUpCiAKLSAgICAgICAgUmVtb3ZlZCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqdmFsdWUqLiAgSWYgbm90IGZvdW5kLCByYWlzZXMgYQorICAgICAgICBSZW1vdmUgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnZhbHVlKi4gIElmIG5vdCBmb3VuZCwgcmFpc2VzIGEKICAgICAgICAgOmV4YzpgVmFsdWVFcnJvcmAuCiAKIApAQCAtNTA0LDYgKzUyNyw5IEBACiBhY2Nlc3MgaXMgTygxKSBhdCBib3RoIGVuZHMgYnV0IHNsb3dzIHRvIE8obikgaW4gdGhlIG1pZGRsZS4gIEZvciBmYXN0IHJhbmRvbQogYWNjZXNzLCB1c2UgbGlzdHMgaW5zdGVhZC4KIAorU3RhcnRpbmcgaW4gdmVyc2lvbiAzLjUsIGRlcXVlcyBzdXBwb3J0IGBgX19hZGRfXygpYGAsIGBgX19tdWxfXygpYGAsCithbmQgYGBfX2ltdWxfXygpYGAuCisKIEV4YW1wbGU6CiAKIC4uIGRvY3Rlc3Q6OgpAQCAtODc5LDE1ICs5MDUsMTUgQEAKIGEgZml4ZWQtd2lkdGggcHJpbnQgZm9ybWF0OgogCiAgICAgPj4+IGNsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpKToKLSAgICAgICAgX19zbG90c19fID0gKCkKLSAgICAgICAgQHByb3BlcnR5Ci0gICAgICAgIGRlZiBoeXBvdChzZWxmKToKLSAgICAgICAgICAgIHJldHVybiAoc2VsZi54ICoqIDIgKyBzZWxmLnkgKiogMikgKiogMC41Ci0gICAgICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuICdQb2ludDogeD0lNi4zZiAgeT0lNi4zZiAgaHlwb3Q9JTYuM2YnICUgKHNlbGYueCwgc2VsZi55LCBzZWxmLmh5cG90KQorICAgICAgICAgICAgX19zbG90c19fID0gKCkKKyAgICAgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICAgICAgZGVmIGh5cG90KHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAoc2VsZi54ICoqIDIgKyBzZWxmLnkgKiogMikgKiogMC41CisgICAgICAgICAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ1BvaW50OiB4PSU2LjNmICB5PSU2LjNmICBoeXBvdD0lNi4zZicgJSAoc2VsZi54LCBzZWxmLnksIHNlbGYuaHlwb3QpCiAKICAgICA+Pj4gZm9yIHAgaW4gUG9pbnQoMywgNCksIFBvaW50KDE0LCA1LzcpOgotICAgICAgICBwcmludChwKQorICAgICAgICAgICAgcHJpbnQocCkKICAgICBQb2ludDogeD0gMy4wMDAgIHk9IDQuMDAwICBoeXBvdD0gNS4wMDAKICAgICBQb2ludDogeD0xNC4wMDAgIHk9IDAuNzE0ICBoeXBvdD0xNC4wMTgKIApAQCAtODk5LDYgKzkyNSwxOCBAQAogCiAgICAgPj4+IFBvaW50M0QgPSBuYW1lZHR1cGxlKCdQb2ludDNEJywgUG9pbnQuX2ZpZWxkcyArICgneicsKSkKIAorRG9jc3RyaW5ncyBjYW4gYmUgY3VzdG9taXplZCBieSBtYWtpbmcgZGlyZWN0IGFzc2lnbm1lbnRzIHRvIHRoZSBgYF9fZG9jX19gYAorZmllbGRzOgorCisgICA+Pj4gQm9vayA9IG5hbWVkdHVwbGUoJ0Jvb2snLCBbJ2lkJywgJ3RpdGxlJywgJ2F1dGhvcnMnXSkKKyAgID4+PiBCb29rLl9fZG9jX18gKz0gJzogSGFyZGNvdmVyIGJvb2sgaW4gYWN0aXZlIGNvbGxlY3Rpb24nCisgICA+Pj4gQm9vay5pZC5fX2RvY19fID0gJzEzLWRpZ2l0IElTQk4nCisgICA+Pj4gQm9vay50aXRsZS5fX2RvY19fID0gJ1RpdGxlIG9mIGZpcnN0IHByaW50aW5nJworICAgPj4+IEJvb2suYXV0aG9ycy5fX2RvY19fID0gJ0xpc3Qgb2YgYXV0aG9ycyBzb3J0ZWQgYnkgbGFzdCBuYW1lJworCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgUHJvcGVydHkgZG9jc3RyaW5ncyBiZWNhbWUgd3JpdGVhYmxlLgorCiBEZWZhdWx0IHZhbHVlcyBjYW4gYmUgaW1wbGVtZW50ZWQgYnkgdXNpbmcgOm1ldGg6YF9yZXBsYWNlYCB0bwogY3VzdG9taXplIGEgcHJvdG90eXBlIGluc3RhbmNlOgogCkBAIC05MDcsMTYgKzk0NSw2IEBACiAgICAgPj4+IGpvaG5zX2FjY291bnQgPSBkZWZhdWx0X2FjY291bnQuX3JlcGxhY2Uob3duZXI9J0pvaG4nKQogICAgID4+PiBqYW5lc19hY2NvdW50ID0gZGVmYXVsdF9hY2NvdW50Ll9yZXBsYWNlKG93bmVyPSdKYW5lJykKIAotRW51bWVyYXRlZCBjb25zdGFudHMgY2FuIGJlIGltcGxlbWVudGVkIHdpdGggbmFtZWQgdHVwbGVzLCBidXQgaXQgaXMgc2ltcGxlcgotYW5kIG1vcmUgZWZmaWNpZW50IHRvIHVzZSBhIHNpbXBsZSA6Y2xhc3M6YH5lbnVtLkVudW1gOgotCi0gICAgPj4+IFN0YXR1cyA9IG5hbWVkdHVwbGUoJ1N0YXR1cycsICdvcGVuIHBlbmRpbmcgY2xvc2VkJykuX21ha2UocmFuZ2UoMykpCi0gICAgPj4+IFN0YXR1cy5vcGVuLCBTdGF0dXMucGVuZGluZywgU3RhdHVzLmNsb3NlZAotICAgICgwLCAxLCAyKQotICAgID4+PiBmcm9tIGVudW0gaW1wb3J0IEVudW0KLSAgICA+Pj4gY2xhc3MgU3RhdHVzKEVudW0pOgotICAgIC4uLiAgICAgb3BlbiwgcGVuZGluZywgY2xvc2VkID0gcmFuZ2UoMykKLQogCiAuLiBzZWVhbHNvOjoKIApAQCAtOTgyLDYgKzEwMTAsOSBAQAoga2V5d29yZCBhcmd1bWVudHMsIGJ1dCB0aGVpciBvcmRlciBpcyBsb3N0IGJlY2F1c2UgUHl0aG9uJ3MgZnVuY3Rpb24gY2FsbAogc2VtYW50aWNzIHBhc3MgaW4ga2V5d29yZCBhcmd1bWVudHMgdXNpbmcgYSByZWd1bGFyIHVub3JkZXJlZCBkaWN0aW9uYXJ5LgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgVGhlIGl0ZW1zLCBrZXlzLCBhbmQgdmFsdWVzIDp0ZXJtOmB2aWV3cyA8ZGljdGlvbmFyeSB2aWV3PmAKKyAgIG9mIDpjbGFzczpgT3JkZXJlZERpY3RgIG5vdyBzdXBwb3J0IHJldmVyc2UgaXRlcmF0aW9uIHVzaW5nIDpmdW5jOmByZXZlcnNlZGAuCiAKIDpjbGFzczpgT3JkZXJlZERpY3RgIEV4YW1wbGVzIGFuZCBSZWNpcGVzCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgpAQCAtMTExOSwzICsxMTUwLDcgQEAKICAgICBiZSBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YGJ5dGVzYCwgOmNsYXNzOmBzdHJgLCA6Y2xhc3M6YFVzZXJTdHJpbmdgIChvciBhCiAgICAgc3ViY2xhc3MpIG9yIGFuIGFyYml0cmFyeSBzZXF1ZW5jZSB3aGljaCBjYW4gYmUgY29udmVydGVkIGludG8gYSBzdHJpbmcgdXNpbmcKICAgICB0aGUgYnVpbHQtaW4gOmZ1bmM6YHN0cmAgZnVuY3Rpb24uCisKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgIE5ldyBtZXRob2RzIGBgX19nZXRuZXdhcmdzX19gYCwgYGBfX3Jtb2RfX2BgLCBgYGNhc2Vmb2xkYGAsCisgICAgICAgYGBmb3JtYXRfbWFwYGAsIGBgaXNwcmludGFibGVgYCwgYW5kIGBgbWFrZXRyYW5zYGAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb21waWxlYWxsLnJzdCBiL0RvYy9saWJyYXJ5L2NvbXBpbGVhbGwucnN0CmluZGV4IDk3MTJkZTIuLmM1NzM2ZjIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbXBpbGVhbGwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbXBpbGVhbGwucnN0CkBAIC00Miw3ICs0Miw4IEBACiAKIC4uIGNtZG9wdGlvbjo6IC1xCiAKLSAgIERvIG5vdCBwcmludCB0aGUgbGlzdCBvZiBmaWxlcyBjb21waWxlZCwgcHJpbnQgb25seSBlcnJvciBtZXNzYWdlcy4KKyAgIERvIG5vdCBwcmludCB0aGUgbGlzdCBvZiBmaWxlcyBjb21waWxlZC4gSWYgcGFzc2VkIG9uY2UsIGVycm9yIG1lc3NhZ2VzIHdpbGwKKyAgIHN0aWxsIGJlIHByaW50ZWQuIElmIHBhc3NlZCB0d2ljZSAoYGAtcXFgYCksIGFsbCBvdXRwdXQgaXMgc3VwcHJlc3NlZC4KIAogLi4gY21kb3B0aW9uOjogLWQgZGVzdGRpcgogCkBAIC03MCw5ICs3MSwyOCBAQAogICAgaXMgdG8gd3JpdGUgZmlsZXMgdG8gdGhlaXIgOnBlcDpgMzE0N2AgbG9jYXRpb25zIGFuZCBuYW1lcywgd2hpY2ggYWxsb3dzCiAgICBieXRlLWNvZGUgZmlsZXMgZnJvbSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24gdG8gY29leGlzdC4KIAorLi4gY21kb3B0aW9uOjogLXIKKworICAgQ29udHJvbCB0aGUgbWF4aW11bSByZWN1cnNpb24gbGV2ZWwgZm9yIHN1YmRpcmVjdG9yaWVzLgorICAgSWYgdGhpcyBpcyBnaXZlbiwgdGhlbiBgYC1sYGAgb3B0aW9uIHdpbGwgbm90IGJlIHRha2VuIGludG8gYWNjb3VudC4KKyAgIDpwcm9ncmFtOmBweXRob24gLW0gY29tcGlsZWFsbCA8ZGlyZWN0b3J5PiAtciAwYCBpcyBlcXVpdmFsZW50IHRvCisgICA6cHJvZ3JhbTpgcHl0aG9uIC1tIGNvbXBpbGVhbGwgPGRpcmVjdG9yeT4gLWxgLgorCisuLiBjbWRvcHRpb246OiAtaiBOCisKKyAgIFVzZSAqTiogd29ya2VycyB0byBjb21waWxlIHRoZSBmaWxlcyB3aXRoaW4gdGhlIGdpdmVuIGRpcmVjdG9yeS4KKyAgIElmIGBgMGBgIGlzIHVzZWQsIHRoZW4gdGhlIHJlc3VsdCBvZiA6ZnVuYzpgb3MuY3B1X2NvdW50KClgCisgICB3aWxsIGJlIHVzZWQuCisKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICBBZGRlZCB0aGUgYGAtaWBgLCBgYC1iYGAgYW5kIGBgLWhgYCBvcHRpb25zLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgQWRkZWQgdGhlICBgYC1qYGAsIGBgLXJgYCwgYW5kIGBgLXFxYGAgb3B0aW9ucy4gIGBgLXFgYCBvcHRpb24KKyAgIHdhcyBjaGFuZ2VkIHRvIGEgbXVsdGlsZXZlbCB2YWx1ZS4gIGBgLWJgYCB3aWxsIGFsd2F5cyBwcm9kdWNlIGEKKyAgIGJ5dGUtY29kZSBmaWxlIGVuZGluZyBpbiBgYC5weWNgYCwgbmV2ZXIgYGAucHlvYGAuCisKKwogVGhlcmUgaXMgbm8gY29tbWFuZC1saW5lIG9wdGlvbiB0byBjb250cm9sIHRoZSBvcHRpbWl6YXRpb24gbGV2ZWwgdXNlZCBieSB0aGUKIDpmdW5jOmBjb21waWxlYCBmdW5jdGlvbiwgYmVjYXVzZSB0aGUgUHl0aG9uIGludGVycHJldGVyIGl0c2VsZiBhbHJlYWR5CiBwcm92aWRlcyB0aGUgb3B0aW9uOiA6cHJvZ3JhbTpgcHl0aG9uIC1PIC1tIGNvbXBpbGVhbGxgLgpAQCAtODAsNyArMTAwLDcgQEAKIFB1YmxpYyBmdW5jdGlvbnMKIC0tLS0tLS0tLS0tLS0tLS0KIAotLi4gZnVuY3Rpb246OiBjb21waWxlX2RpcihkaXIsIG1heGxldmVscz0xMCwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwgcXVpZXQ9RmFsc2UsIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEpCisuLiBmdW5jdGlvbjo6IGNvbXBpbGVfZGlyKGRpciwgbWF4bGV2ZWxzPTEwLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD0wLCBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xLCB3b3JrZXJzPTEpCiAKICAgIFJlY3Vyc2l2ZWx5IGRlc2NlbmQgdGhlIGRpcmVjdG9yeSB0cmVlIG5hbWVkIGJ5ICpkaXIqLCBjb21waWxpbmcgYWxsIDpmaWxlOmAucHlgCiAgICBmaWxlcyBhbG9uZyB0aGUgd2F5LgpAQCAtMTAxLDggKzEyMSw5IEBACiAgICBmaWxlIGNvbnNpZGVyZWQgZm9yIGNvbXBpbGF0aW9uLCBhbmQgaWYgaXQgcmV0dXJucyBhIHRydWUgdmFsdWUsIHRoZSBmaWxlCiAgICBpcyBza2lwcGVkLgogCi0gICBJZiAqcXVpZXQqIGlzIHRydWUsIG5vdGhpbmcgaXMgcHJpbnRlZCB0byB0aGUgc3RhbmRhcmQgb3V0cHV0IHVubGVzcyBlcnJvcnMKLSAgIG9jY3VyLgorICAgSWYgKnF1aWV0KiBpcyBgYEZhbHNlYGAgb3IgYGAwYGAgKHRoZSBkZWZhdWx0KSwgdGhlIGZpbGVuYW1lcyBhbmQgb3RoZXIKKyAgIGluZm9ybWF0aW9uIGFyZSBwcmludGVkIHRvIHN0YW5kYXJkIG91dC4gU2V0IHRvIGBgMWBgLCBvbmx5IGVycm9ycyBhcmUKKyAgIHByaW50ZWQuIFNldCB0byBgYDJgYCwgYWxsIG91dHB1dCBpcyBzdXBwcmVzc2VkLgogCiAgICBJZiAqbGVnYWN5KiBpcyB0cnVlLCBieXRlLWNvZGUgZmlsZXMgYXJlIHdyaXR0ZW4gdG8gdGhlaXIgbGVnYWN5IGxvY2F0aW9ucwogICAgYW5kIG5hbWVzLCB3aGljaCBtYXkgb3ZlcndyaXRlIGJ5dGUtY29kZSBmaWxlcyBjcmVhdGVkIGJ5IGFub3RoZXIgdmVyc2lvbiBvZgpAQCAtMTEzLDExICsxMzQsMjYgQEAKICAgICpvcHRpbWl6ZSogc3BlY2lmaWVzIHRoZSBvcHRpbWl6YXRpb24gbGV2ZWwgZm9yIHRoZSBjb21waWxlci4gIEl0IGlzIHBhc3NlZCB0bwogICAgdGhlIGJ1aWx0LWluIDpmdW5jOmBjb21waWxlYCBmdW5jdGlvbi4KIAorICAgVGhlIGFyZ3VtZW50ICp3b3JrZXJzKiBzcGVjaWZpZXMgaG93IG1hbnkgd29ya2VycyBhcmUgdXNlZCB0bworICAgY29tcGlsZSBmaWxlcyBpbiBwYXJhbGxlbC4gVGhlIGRlZmF1bHQgaXMgdG8gbm90IHVzZSBtdWx0aXBsZSB3b3JrZXJzLgorICAgSWYgdGhlIHBsYXRmb3JtIGNhbid0IHVzZSBtdWx0aXBsZSB3b3JrZXJzIGFuZCAqd29ya2VycyogYXJndW1lbnQgaXMgZ2l2ZW4sCisgICB0aGVuIHNlcXVlbnRpYWwgY29tcGlsYXRpb24gd2lsbCBiZSB1c2VkIGFzIGEgZmFsbGJhY2suICBJZiAqd29ya2VycyogaXMKKyAgIGxvd2VyIHRoYW4gYGAwYGAsIGEgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCB0aGUgKmxlZ2FjeSogYW5kICpvcHRpbWl6ZSogcGFyYW1ldGVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgdGhlICp3b3JrZXJzKiBwYXJhbWV0ZXIuCiAKLS4uIGZ1bmN0aW9uOjogY29tcGlsZV9maWxlKGZ1bGxuYW1lLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD1GYWxzZSwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSkKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAqcXVpZXQqIHBhcmFtZXRlciB3YXMgY2hhbmdlZCB0byBhIG11bHRpbGV2ZWwgdmFsdWUuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgKmxlZ2FjeSogcGFyYW1ldGVyIG9ubHkgd3JpdGVzIG91dCBgYC5weWNgYCBmaWxlcywgbm90IGBgLnB5b2BgIGZpbGVzCisgICAgICBubyBtYXR0ZXIgd2hhdCB0aGUgdmFsdWUgb2YgKm9wdGltaXplKiBpcy4KKworLi4gZnVuY3Rpb246OiBjb21waWxlX2ZpbGUoZnVsbG5hbWUsIGRkaXI9Tm9uZSwgZm9yY2U9RmFsc2UsIHJ4PU5vbmUsIHF1aWV0PTAsIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEpCiAKICAgIENvbXBpbGUgdGhlIGZpbGUgd2l0aCBwYXRoICpmdWxsbmFtZSouCiAKQEAgLTEzMSw4ICsxNjcsOSBAQAogICAgZmlsZSBiZWluZyBjb21waWxlZCwgYW5kIGlmIGl0IHJldHVybnMgYSB0cnVlIHZhbHVlLCB0aGUgZmlsZSBpcyBub3QKICAgIGNvbXBpbGVkIGFuZCBgYFRydWVgYCBpcyByZXR1cm5lZC4KIAotICAgSWYgKnF1aWV0KiBpcyB0cnVlLCBub3RoaW5nIGlzIHByaW50ZWQgdG8gdGhlIHN0YW5kYXJkIG91dHB1dCB1bmxlc3MgZXJyb3JzCi0gICBvY2N1ci4KKyAgIElmICpxdWlldCogaXMgYGBGYWxzZWBgIG9yIGBgMGBgICh0aGUgZGVmYXVsdCksIHRoZSBmaWxlbmFtZXMgYW5kIG90aGVyCisgICBpbmZvcm1hdGlvbiBhcmUgcHJpbnRlZCB0byBzdGFuZGFyZCBvdXQuIFNldCB0byBgYDFgYCwgb25seSBlcnJvcnMgYXJlCisgICBwcmludGVkLiBTZXQgdG8gYGAyYGAsIGFsbCBvdXRwdXQgaXMgc3VwcHJlc3NlZC4KIAogICAgSWYgKmxlZ2FjeSogaXMgdHJ1ZSwgYnl0ZS1jb2RlIGZpbGVzIGFyZSB3cml0dGVuIHRvIHRoZWlyIGxlZ2FjeSBsb2NhdGlvbnMKICAgIGFuZCBuYW1lcywgd2hpY2ggbWF5IG92ZXJ3cml0ZSBieXRlLWNvZGUgZmlsZXMgY3JlYXRlZCBieSBhbm90aGVyIHZlcnNpb24gb2YKQEAgLTE0NSw4ICsxODIsMTQgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAqcXVpZXQqIHBhcmFtZXRlciB3YXMgY2hhbmdlZCB0byBhIG11bHRpbGV2ZWwgdmFsdWUuCiAKLS4uIGZ1bmN0aW9uOjogY29tcGlsZV9wYXRoKHNraXBfY3VyZGlyPVRydWUsIG1heGxldmVscz0wLCBmb3JjZT1GYWxzZSwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSkKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgKmxlZ2FjeSogcGFyYW1ldGVyIG9ubHkgd3JpdGVzIG91dCBgYC5weWNgYCBmaWxlcywgbm90IGBgLnB5b2BgIGZpbGVzCisgICAgICBubyBtYXR0ZXIgd2hhdCB0aGUgdmFsdWUgb2YgKm9wdGltaXplKiBpcy4KKworLi4gZnVuY3Rpb246OiBjb21waWxlX3BhdGgoc2tpcF9jdXJkaXI9VHJ1ZSwgbWF4bGV2ZWxzPTAsIGZvcmNlPUZhbHNlLCBxdWlldD0wLCBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xKQogCiAgICBCeXRlLWNvbXBpbGUgYWxsIHRoZSA6ZmlsZTpgLnB5YCBmaWxlcyBmb3VuZCBhbG9uZyBgYHN5cy5wYXRoYGAuIElmCiAgICAqc2tpcF9jdXJkaXIqIGlzIHRydWUgKHRoZSBkZWZhdWx0KSwgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzIG5vdCBpbmNsdWRlZApAQCAtMTU3LDYgKzIwMCwxMiBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIHRoZSAqbGVnYWN5KiBhbmQgKm9wdGltaXplKiBwYXJhbWV0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAqcXVpZXQqIHBhcmFtZXRlciB3YXMgY2hhbmdlZCB0byBhIG11bHRpbGV2ZWwgdmFsdWUuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgKmxlZ2FjeSogcGFyYW1ldGVyIG9ubHkgd3JpdGVzIG91dCBgYC5weWNgYCBmaWxlcywgbm90IGBgLnB5b2BgIGZpbGVzCisgICAgICBubyBtYXR0ZXIgd2hhdCB0aGUgdmFsdWUgb2YgKm9wdGltaXplKiBpcy4KIAogVG8gZm9yY2UgYSByZWNvbXBpbGUgb2YgYWxsIHRoZSA6ZmlsZTpgLnB5YCBmaWxlcyBpbiB0aGUgOmZpbGU6YExpYi9gCiBzdWJkaXJlY3RvcnkgYW5kIGFsbCBpdHMgc3ViZGlyZWN0b3JpZXM6OgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdCBiL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QKaW5kZXggZTYzZTc0MS4uOGJiNzBhNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0CkBAIC0zOCw3ICszOCw3IEBACiAgICAgICAgICAgICAgIGZ1dHVyZSA9IGV4ZWN1dG9yLnN1Ym1pdChwb3csIDMyMywgMTIzNSkKICAgICAgICAgICAgICAgcHJpbnQoZnV0dXJlLnJlc3VsdCgpKQogCi0gICAgLi4gbWV0aG9kOjogbWFwKGZ1bmMsICppdGVyYWJsZXMsIHRpbWVvdXQ9Tm9uZSkKKyAgICAuLiBtZXRob2Q6OiBtYXAoZnVuYywgKml0ZXJhYmxlcywgdGltZW91dD1Ob25lLCBjaHVua3NpemU9MSkKIAogICAgICAgIEVxdWl2YWxlbnQgdG8gOmZ1bmM6YG1hcChmdW5jLCAqaXRlcmFibGVzKSA8bWFwPmAgZXhjZXB0ICpmdW5jKiBpcyBleGVjdXRlZAogICAgICAgIGFzeW5jaHJvbm91c2x5IGFuZCBzZXZlcmFsIGNhbGxzIHRvICpmdW5jKiBtYXkgYmUgbWFkZSBjb25jdXJyZW50bHkuICBUaGUKQEAgLTQ4LDcgKzQ4LDE2IEBACiAgICAgICAgKnRpbWVvdXQqIGNhbiBiZSBhbiBpbnQgb3IgYSBmbG9hdC4gIElmICp0aW1lb3V0KiBpcyBub3Qgc3BlY2lmaWVkIG9yCiAgICAgICAgYGBOb25lYGAsIHRoZXJlIGlzIG5vIGxpbWl0IHRvIHRoZSB3YWl0IHRpbWUuICBJZiBhIGNhbGwgcmFpc2VzIGFuCiAgICAgICAgZXhjZXB0aW9uLCB0aGVuIHRoYXQgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gaXRzIHZhbHVlIGlzCi0gICAgICAgcmV0cmlldmVkIGZyb20gdGhlIGl0ZXJhdG9yLgorICAgICAgIHJldHJpZXZlZCBmcm9tIHRoZSBpdGVyYXRvci4gV2hlbiB1c2luZyA6Y2xhc3M6YFByb2Nlc3NQb29sRXhlY3V0b3JgLCB0aGlzCisgICAgICAgbWV0aG9kIGNob3BzICppdGVyYWJsZXMqIGludG8gYSBudW1iZXIgb2YgY2h1bmtzIHdoaWNoIGl0IHN1Ym1pdHMgdG8gdGhlCisgICAgICAgcG9vbCBhcyBzZXBhcmF0ZSB0YXNrcy4gVGhlIChhcHByb3hpbWF0ZSkgc2l6ZSBvZiB0aGVzZSBjaHVua3MgY2FuIGJlCisgICAgICAgc3BlY2lmaWVkIGJ5IHNldHRpbmcgKmNodW5rc2l6ZSogdG8gYSBwb3NpdGl2ZSBpbnRlZ2VyLiBGb3IgdmVyeSBsb25nCisgICAgICAgaXRlcmFibGVzLCB1c2luZyBhIGxhcmdlIHZhbHVlIGZvciAqY2h1bmtzaXplKiBjYW4gc2lnbmlmaWNhbnRseSBpbXByb3ZlCisgICAgICAgcGVyZm9ybWFuY2UgY29tcGFyZWQgdG8gdGhlIGRlZmF1bHQgc2l6ZSBvZiAxLiBXaXRoIDpjbGFzczpgVGhyZWFkUG9vbEV4ZWN1dG9yYCwKKyAgICAgICAqY2h1bmtzaXplKiBoYXMgbm8gZWZmZWN0LgorCisgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICAgICBBZGRlZCB0aGUgKmNodW5rc2l6ZSogYXJndW1lbnQuCiAKICAgICAuLiBtZXRob2Q6OiBzaHV0ZG93bih3YWl0PVRydWUpCiAKQEAgLTExNSwxMSArMTI0LDE5IEBACiAgICBleGVjdXRvci5zdWJtaXQod2FpdF9vbl9mdXR1cmUpCiAKIAotLi4gY2xhc3M6OiBUaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnMpCisuLiBjbGFzczo6IFRocmVhZFBvb2xFeGVjdXRvcihtYXhfd29ya2Vycz1Ob25lKQogCiAgICBBbiA6Y2xhc3M6YEV4ZWN1dG9yYCBzdWJjbGFzcyB0aGF0IHVzZXMgYSBwb29sIG9mIGF0IG1vc3QgKm1heF93b3JrZXJzKgogICAgdGhyZWFkcyB0byBleGVjdXRlIGNhbGxzIGFzeW5jaHJvbm91c2x5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgKm1heF93b3JrZXJzKiBpcyBgYE5vbmVgYCBvcgorICAgICAgbm90IGdpdmVuLCBpdCB3aWxsIGRlZmF1bHQgdG8gdGhlIG51bWJlciBvZiBwcm9jZXNzb3JzIG9uIHRoZSBtYWNoaW5lLAorICAgICAgbXVsdGlwbGllZCBieSBgYDVgYCwgYXNzdW1pbmcgdGhhdCA6Y2xhc3M6YFRocmVhZFBvb2xFeGVjdXRvcmAgaXMgb2Z0ZW4KKyAgICAgIHVzZWQgdG8gb3ZlcmxhcCBJL08gaW5zdGVhZCBvZiBDUFUgd29yayBhbmQgdGhlIG51bWJlciBvZiB3b3JrZXJzCisgICAgICBzaG91bGQgYmUgaGlnaGVyIHRoYW4gdGhlIG51bWJlciBvZiB3b3JrZXJzCisgICAgICBmb3IgOmNsYXNzOmBQcm9jZXNzUG9vbEV4ZWN1dG9yYC4KKwogCiAuLiBfdGhyZWFkcG9vbGV4ZWN1dG9yLWV4YW1wbGU6CiAKQEAgLTE3NSw2ICsxOTIsOCBAQAogICAgQW4gOmNsYXNzOmBFeGVjdXRvcmAgc3ViY2xhc3MgdGhhdCBleGVjdXRlcyBjYWxscyBhc3luY2hyb25vdXNseSB1c2luZyBhIHBvb2wKICAgIG9mIGF0IG1vc3QgKm1heF93b3JrZXJzKiBwcm9jZXNzZXMuICBJZiAqbWF4X3dvcmtlcnMqIGlzIGBgTm9uZWBgIG9yIG5vdAogICAgZ2l2ZW4sIGl0IHdpbGwgZGVmYXVsdCB0byB0aGUgbnVtYmVyIG9mIHByb2Nlc3NvcnMgb24gdGhlIG1hY2hpbmUuCisgICBJZiAqbWF4X3dvcmtlcnMqIGlzIGxvd2VyIG9yIGVxdWFsIHRvIGBgMGBgLCB0aGVuIGEgOmV4YzpgVmFsdWVFcnJvcmAKKyAgIHdpbGwgYmUgcmFpc2VkLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgV2hlbiBvbmUgb2YgdGhlIHdvcmtlciBwcm9jZXNzZXMgdGVybWluYXRlcyBhYnJ1cHRseSwgYQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29uZmlncGFyc2VyLnJzdCBiL0RvYy9saWJyYXJ5L2NvbmZpZ3BhcnNlci5yc3QKaW5kZXggOTI1NTFiYy4uYzkxODdhMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29uZmlncGFyc2VyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb25maWdwYXJzZXIucnN0CkBAIC0xMSw2ICsxMSw4IEBACiAuLiBzZWN0aW9uYXV0aG9yOjogQ2hyaXN0b3BoZXIgRy4gUGV0cmlsbGkgPHBldHJpbGxpQGFtYmVyLm9yZz4KIC4uIHNlY3Rpb25hdXRob3I6OiDFgXVrYXN6IExhbmdhIDxsdWthc3pAbGFuZ2EucGw+CiAKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2NvbmZpZ3BhcnNlci5weWAKKwogLi4gaW5kZXg6OgogICAgcGFpcjogLmluaTsgZmlsZQogICAgcGFpcjogY29uZmlndXJhdGlvbjsgZmlsZQpAQCAtMTQyLDEyICsxNDQsMTMgQEAKICAgID4+PiBmbG9hdCh0b3BzZWNyZXRbJ0NvbXByZXNzaW9uTGV2ZWwnXSkKICAgIDkuMAogCi1FeHRyYWN0aW5nIEJvb2xlYW4gdmFsdWVzIGlzIG5vdCB0aGF0IHNpbXBsZSwgdGhvdWdoLiAgUGFzc2luZyB0aGUgdmFsdWUKLXRvIGBgYm9vbCgpYGAgd291bGQgZG8gbm8gZ29vZCBzaW5jZSBgYGJvb2woJ0ZhbHNlJylgYCBpcyBzdGlsbAotYGBUcnVlYGAuICBUaGlzIGlzIHdoeSBjb25maWcgcGFyc2VycyBhbHNvIHByb3ZpZGUgOm1ldGg6YGdldGJvb2xlYW5gLgotVGhpcyBtZXRob2QgaXMgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgcmVjb2duaXplcyBCb29sZWFuIHZhbHVlcyBmcm9tCi1gYCd5ZXMnYGAvYGAnbm8nYGAsIGBgJ29uJ2BgL2BgJ29mZidgYCBhbmQgYGAnMSdgYC9gYCcwJ2BgIFsxXV8uCi1Gb3IgZXhhbXBsZToKK1NpbmNlIHRoaXMgdGFzayBpcyBzbyBjb21tb24sIGNvbmZpZyBwYXJzZXJzIHByb3ZpZGUgYSByYW5nZSBvZiBoYW5keSBnZXR0ZXIKK21ldGhvZHMgdG8gaGFuZGxlIGludGVnZXJzLCBmbG9hdHMgYW5kIGJvb2xlYW5zLiAgVGhlIGxhc3Qgb25lIGlzIHRoZSBtb3N0CitpbnRlcmVzdGluZyBiZWNhdXNlIHNpbXBseSBwYXNzaW5nIHRoZSB2YWx1ZSB0byBgYGJvb2woKWBgIHdvdWxkIGRvIG5vIGdvb2QKK3NpbmNlIGBgYm9vbCgnRmFsc2UnKWBgIGlzIHN0aWxsIGBgVHJ1ZWBgLiAgVGhpcyBpcyB3aHkgY29uZmlnIHBhcnNlcnMgYWxzbworcHJvdmlkZSA6bWV0aDpgZ2V0Ym9vbGVhbmAuICBUaGlzIG1ldGhvZCBpcyBjYXNlLWluc2Vuc2l0aXZlIGFuZCByZWNvZ25pemVzCitCb29sZWFuIHZhbHVlcyBmcm9tIGBgJ3llcydgYC9gYCdubydgYCwgYGAnb24nYGAvYGAnb2ZmJ2BgLAorYGAndHJ1ZSdgYC9gYCdmYWxzZSdgYCBhbmQgYGAnMSdgYC9gYCcwJ2BgIFsxXV8uICBGb3IgZXhhbXBsZToKIAogLi4gZG9jdGVzdDo6CiAKQEAgLTE1OSwxMCArMTYyLDggQEAKICAgIFRydWUKIAogQXBhcnQgZnJvbSA6bWV0aDpgZ2V0Ym9vbGVhbmAsIGNvbmZpZyBwYXJzZXJzIGFsc28gcHJvdmlkZSBlcXVpdmFsZW50Ci06bWV0aDpgZ2V0aW50YCBhbmQgOm1ldGg6YGdldGZsb2F0YCBtZXRob2RzLCBidXQgdGhlc2UgYXJlIGZhciBsZXNzCi11c2VmdWwgc2luY2UgY29udmVyc2lvbiB1c2luZyA6ZnVuYzpgaW50YCBhbmQgOmZ1bmM6YGZsb2F0YCBpcwotc3VmZmljaWVudCBmb3IgdGhlc2UgdHlwZXMuCi0KKzptZXRoOmBnZXRpbnRgIGFuZCA6bWV0aDpgZ2V0ZmxvYXRgIG1ldGhvZHMuICBZb3UgY2FuIHJlZ2lzdGVyIHlvdXIgb3duCitjb252ZXJ0ZXJzIGFuZCBjdXN0b21pemUgdGhlIHByb3ZpZGVkIG9uZXMuIFsxXV8KIAogRmFsbGJhY2sgVmFsdWVzCiAtLS0tLS0tLS0tLS0tLS0KQEAgLTMxNywxMSArMzE4LDExIEBACiAuLiBjbGFzczo6IEV4dGVuZGVkSW50ZXJwb2xhdGlvbigpCiAKICAgIEFuIGFsdGVybmF0aXZlIGhhbmRsZXIgZm9yIGludGVycG9sYXRpb24gd2hpY2ggaW1wbGVtZW50cyBhIG1vcmUgYWR2YW5jZWQKLSAgIHN5bnRheCwgdXNlZCBmb3IgaW5zdGFuY2UgaW4gYGB6Yy5idWlsZG91dGBgLiBFeHRlbmRlZCBpbnRlcnBvbGF0aW9uIGlzCisgICBzeW50YXgsIHVzZWQgZm9yIGluc3RhbmNlIGluIGBgemMuYnVpbGRvdXRgYC4gIEV4dGVuZGVkIGludGVycG9sYXRpb24gaXMKICAgIHVzaW5nIGBgJHtzZWN0aW9uOm9wdGlvbn1gYCB0byBkZW5vdGUgYSB2YWx1ZSBmcm9tIGEgZm9yZWlnbiBzZWN0aW9uLgotICAgSW50ZXJwb2xhdGlvbiBjYW4gc3BhbiBtdWx0aXBsZSBsZXZlbHMuIEZvciBjb252ZW5pZW5jZSwgaWYgdGhlIGBgc2VjdGlvbjpgYAotICAgcGFydCBpcyBvbWl0dGVkLCBpbnRlcnBvbGF0aW9uIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHNlY3Rpb24gKGFuZCBwb3NzaWJseQotICAgdGhlIGRlZmF1bHQgdmFsdWVzIGZyb20gdGhlIHNwZWNpYWwgc2VjdGlvbikuCisgICBJbnRlcnBvbGF0aW9uIGNhbiBzcGFuIG11bHRpcGxlIGxldmVscy4gIEZvciBjb252ZW5pZW5jZSwgaWYgdGhlCisgICBgYHNlY3Rpb246YGAgcGFydCBpcyBvbWl0dGVkLCBpbnRlcnBvbGF0aW9uIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHNlY3Rpb24KKyAgIChhbmQgcG9zc2libHkgdGhlIGRlZmF1bHQgdmFsdWVzIGZyb20gdGhlIHNwZWNpYWwgc2VjdGlvbikuCiAKICAgIEZvciBleGFtcGxlLCB0aGUgY29uZmlndXJhdGlvbiBzcGVjaWZpZWQgYWJvdmUgd2l0aCBiYXNpYyBpbnRlcnBvbGF0aW9uLAogICAgd291bGQgbG9vayBsaWtlIHRoaXMgd2l0aCBleHRlbmRlZCBpbnRlcnBvbGF0aW9uOgpAQCAtMzk5LDEzICs0MDAsMTMgQEAKICAgKiBgYHBhcnNlci5wb3BpdGVtKClgYCBuZXZlciByZXR1cm5zIGl0LgogCiAqIGBgcGFyc2VyLmdldChzZWN0aW9uLCBvcHRpb24sICoqa3dhcmdzKWBgIC0gdGhlIHNlY29uZCBhcmd1bWVudCBpcyAqKm5vdCoqCi0gIGEgZmFsbGJhY2sgdmFsdWUuIE5vdGUgaG93ZXZlciB0aGF0IHRoZSBzZWN0aW9uLWxldmVsIGBgZ2V0KClgYCBtZXRob2RzIGFyZQorICBhIGZhbGxiYWNrIHZhbHVlLiAgTm90ZSBob3dldmVyIHRoYXQgdGhlIHNlY3Rpb24tbGV2ZWwgYGBnZXQoKWBgIG1ldGhvZHMgYXJlCiAgIGNvbXBhdGlibGUgYm90aCB3aXRoIHRoZSBtYXBwaW5nIHByb3RvY29sIGFuZCB0aGUgY2xhc3NpYyBjb25maWdwYXJzZXIgQVBJLgogCiAqIGBgcGFyc2VyLml0ZW1zKClgYCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIG1hcHBpbmcgcHJvdG9jb2wgKHJldHVybnMgYSBsaXN0IG9mCiAgICpzZWN0aW9uX25hbWUqLCAqc2VjdGlvbl9wcm94eSogcGFpcnMgaW5jbHVkaW5nIHRoZSBERUZBVUxUU0VDVCkuICBIb3dldmVyLAogICB0aGlzIG1ldGhvZCBjYW4gYWxzbyBiZSBpbnZva2VkIHdpdGggYXJndW1lbnRzOiBgYHBhcnNlci5pdGVtcyhzZWN0aW9uLCByYXcsCi0gIHZhcnMpYGAuIFRoZSBsYXR0ZXIgY2FsbCByZXR1cm5zIGEgbGlzdCBvZiAqb3B0aW9uKiwgKnZhbHVlKiBwYWlycyBmb3IKKyAgdmFycylgYC4gIFRoZSBsYXR0ZXIgY2FsbCByZXR1cm5zIGEgbGlzdCBvZiAqb3B0aW9uKiwgKnZhbHVlKiBwYWlycyBmb3IKICAgYSBzcGVjaWZpZWQgYGBzZWN0aW9uYGAsIHdpdGggYWxsIGludGVycG9sYXRpb25zIGV4cGFuZGVkICh1bmxlc3MKICAgYGByYXc9VHJ1ZWBgIGlzIHByb3ZpZGVkKS4KIApAQCAtNTM5LDkgKzU0MCw5IEBACiAKICogKmRlbGltaXRlcnMqLCBkZWZhdWx0IHZhbHVlOiBgYCgnPScsICc6JylgYAogCi0gIERlbGltaXRlcnMgYXJlIHN1YnN0cmluZ3MgdGhhdCBkZWxpbWl0IGtleXMgZnJvbSB2YWx1ZXMgd2l0aGluIGEgc2VjdGlvbi4gVGhlCi0gIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSBkZWxpbWl0aW5nIHN1YnN0cmluZyBvbiBhIGxpbmUgaXMgY29uc2lkZXJlZCBhIGRlbGltaXRlci4KLSAgVGhpcyBtZWFucyB2YWx1ZXMgKGJ1dCBub3Qga2V5cykgY2FuIGNvbnRhaW4gdGhlIGRlbGltaXRlcnMuCisgIERlbGltaXRlcnMgYXJlIHN1YnN0cmluZ3MgdGhhdCBkZWxpbWl0IGtleXMgZnJvbSB2YWx1ZXMgd2l0aGluIGEgc2VjdGlvbi4KKyAgVGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSBkZWxpbWl0aW5nIHN1YnN0cmluZyBvbiBhIGxpbmUgaXMgY29uc2lkZXJlZAorICBhIGRlbGltaXRlci4gIFRoaXMgbWVhbnMgdmFsdWVzIChidXQgbm90IGtleXMpIGNhbiBjb250YWluIHRoZSBkZWxpbWl0ZXJzLgogCiAgIFNlZSBhbHNvIHRoZSAqc3BhY2VfYXJvdW5kX2RlbGltaXRlcnMqIGFyZ3VtZW50IHRvCiAgIDptZXRoOmBDb25maWdQYXJzZXIud3JpdGVgLgpAQCAtNTUzLDcgKzU1NCw3IEBACiAgIENvbW1lbnQgcHJlZml4ZXMgYXJlIHN0cmluZ3MgdGhhdCBpbmRpY2F0ZSB0aGUgc3RhcnQgb2YgYSB2YWxpZCBjb21tZW50IHdpdGhpbgogICBhIGNvbmZpZyBmaWxlLiAqY29tbWVudF9wcmVmaXhlcyogYXJlIHVzZWQgb25seSBvbiBvdGhlcndpc2UgZW1wdHkgbGluZXMKICAgKG9wdGlvbmFsbHkgaW5kZW50ZWQpIHdoZXJlYXMgKmlubGluZV9jb21tZW50X3ByZWZpeGVzKiBjYW4gYmUgdXNlZCBhZnRlcgotICBldmVyeSB2YWxpZCB2YWx1ZSAoZS5nLiAgc2VjdGlvbiBuYW1lcywgb3B0aW9ucyBhbmQgZW1wdHkgbGluZXMgYXMgd2VsbCkuIEJ5CisgIGV2ZXJ5IHZhbGlkIHZhbHVlIChlLmcuIHNlY3Rpb24gbmFtZXMsIG9wdGlvbnMgYW5kIGVtcHR5IGxpbmVzIGFzIHdlbGwpLiAgQnkKICAgZGVmYXVsdCBpbmxpbmUgY29tbWVudHMgYXJlIGRpc2FibGVkIGFuZCBgYCcjJ2BgIGFuZCBgYCc7J2BgIGFyZSB1c2VkIGFzCiAgIHByZWZpeGVzIGZvciB3aG9sZSBsaW5lIGNvbW1lbnRzLgogCkBAIC01NjMsMTAgKzU2NCwxMCBAQAogCiAgIFBsZWFzZSBub3RlIHRoYXQgY29uZmlnIHBhcnNlcnMgZG9uJ3Qgc3VwcG9ydCBlc2NhcGluZyBvZiBjb21tZW50IHByZWZpeGVzIHNvCiAgIHVzaW5nICppbmxpbmVfY29tbWVudF9wcmVmaXhlcyogbWF5IHByZXZlbnQgdXNlcnMgZnJvbSBzcGVjaWZ5aW5nIG9wdGlvbgotICB2YWx1ZXMgd2l0aCBjaGFyYWN0ZXJzIHVzZWQgYXMgY29tbWVudCBwcmVmaXhlcy4gV2hlbiBpbiBkb3VidCwgYXZvaWQgc2V0dGluZwotICAqaW5saW5lX2NvbW1lbnRfcHJlZml4ZXMqLiBJbiBhbnkgY2lyY3Vtc3RhbmNlcywgdGhlIG9ubHkgd2F5IG9mIHN0b3JpbmcKLSAgY29tbWVudCBwcmVmaXggY2hhcmFjdGVycyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBpbiBtdWx0aWxpbmUgdmFsdWVzIGlzIHRvCi0gIGludGVycG9sYXRlIHRoZSBwcmVmaXgsIGZvciBleGFtcGxlOjoKKyAgdmFsdWVzIHdpdGggY2hhcmFjdGVycyB1c2VkIGFzIGNvbW1lbnQgcHJlZml4ZXMuICBXaGVuIGluIGRvdWJ0LCBhdm9pZAorICBzZXR0aW5nICppbmxpbmVfY29tbWVudF9wcmVmaXhlcyouICBJbiBhbnkgY2lyY3Vtc3RhbmNlcywgdGhlIG9ubHkgd2F5IG9mCisgIHN0b3JpbmcgY29tbWVudCBwcmVmaXggY2hhcmFjdGVycyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBpbiBtdWx0aWxpbmUKKyAgdmFsdWVzIGlzIHRvIGludGVycG9sYXRlIHRoZSBwcmVmaXgsIGZvciBleGFtcGxlOjoKIAogICAgID4+PiBmcm9tIGNvbmZpZ3BhcnNlciBpbXBvcnQgQ29uZmlnUGFyc2VyLCBFeHRlbmRlZEludGVycG9sYXRpb24KICAgICA+Pj4gcGFyc2VyID0gQ29uZmlnUGFyc2VyKGludGVycG9sYXRpb249RXh0ZW5kZWRJbnRlcnBvbGF0aW9uKCkpCkBAIC02MTEsNyArNjEyLDcgQEAKIAogICBXaGVuIHNldCB0byBgYFRydWVgYCwgdGhlIHBhcnNlciB3aWxsIG5vdCBhbGxvdyBmb3IgYW55IHNlY3Rpb24gb3Igb3B0aW9uCiAgIGR1cGxpY2F0ZXMgd2hpbGUgcmVhZGluZyBmcm9tIGEgc2luZ2xlIHNvdXJjZSAodXNpbmcgOm1ldGg6YHJlYWRfZmlsZWAsCi0gIDptZXRoOmByZWFkX3N0cmluZ2Agb3IgOm1ldGg6YHJlYWRfZGljdGApLiBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2Ugc3RyaWN0CisgIDptZXRoOmByZWFkX3N0cmluZ2Agb3IgOm1ldGg6YHJlYWRfZGljdGApLiAgSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHN0cmljdAogICBwYXJzZXJzIGluIG5ldyBhcHBsaWNhdGlvbnMuCiAKICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKQEAgLTY0NiwxMiArNjQ3LDEyIEBACiAKICAgVGhlIGNvbnZlbnRpb24gb2YgYWxsb3dpbmcgYSBzcGVjaWFsIHNlY3Rpb24gb2YgZGVmYXVsdCB2YWx1ZXMgZm9yIG90aGVyCiAgIHNlY3Rpb25zIG9yIGludGVycG9sYXRpb24gcHVycG9zZXMgaXMgYSBwb3dlcmZ1bCBjb25jZXB0IG9mIHRoaXMgbGlicmFyeSwKLSAgbGV0dGluZyB1c2VycyBjcmVhdGUgY29tcGxleCBkZWNsYXJhdGl2ZSBjb25maWd1cmF0aW9ucy4gVGhpcyBzZWN0aW9uIGlzCisgIGxldHRpbmcgdXNlcnMgY3JlYXRlIGNvbXBsZXggZGVjbGFyYXRpdmUgY29uZmlndXJhdGlvbnMuICBUaGlzIHNlY3Rpb24gaXMKICAgbm9ybWFsbHkgY2FsbGVkIGBgIkRFRkFVTFQiYGAgYnV0IHRoaXMgY2FuIGJlIGN1c3RvbWl6ZWQgdG8gcG9pbnQgdG8gYW55Ci0gIG90aGVyIHZhbGlkIHNlY3Rpb24gbmFtZS4gU29tZSB0eXBpY2FsIHZhbHVlcyBpbmNsdWRlOiBgYCJnZW5lcmFsImBgIG9yCi0gIGBgImNvbW1vbiJgYC4gVGhlIG5hbWUgcHJvdmlkZWQgaXMgdXNlZCBmb3IgcmVjb2duaXppbmcgZGVmYXVsdCBzZWN0aW9ucyB3aGVuCi0gIHJlYWRpbmcgZnJvbSBhbnkgc291cmNlIGFuZCBpcyB1c2VkIHdoZW4gd3JpdGluZyBjb25maWd1cmF0aW9uIGJhY2sgdG8KLSAgYSBmaWxlLiBJdHMgY3VycmVudCB2YWx1ZSBjYW4gYmUgcmV0cmlldmVkIHVzaW5nIHRoZQorICBvdGhlciB2YWxpZCBzZWN0aW9uIG5hbWUuICBTb21lIHR5cGljYWwgdmFsdWVzIGluY2x1ZGU6IGBgImdlbmVyYWwiYGAgb3IKKyAgYGAiY29tbW9uImBgLiAgVGhlIG5hbWUgcHJvdmlkZWQgaXMgdXNlZCBmb3IgcmVjb2duaXppbmcgZGVmYXVsdCBzZWN0aW9ucworICB3aGVuIHJlYWRpbmcgZnJvbSBhbnkgc291cmNlIGFuZCBpcyB1c2VkIHdoZW4gd3JpdGluZyBjb25maWd1cmF0aW9uIGJhY2sgdG8KKyAgYSBmaWxlLiAgSXRzIGN1cnJlbnQgdmFsdWUgY2FuIGJlIHJldHJpZXZlZCB1c2luZyB0aGUKICAgYGBwYXJzZXJfaW5zdGFuY2UuZGVmYXVsdF9zZWN0aW9uYGAgYXR0cmlidXRlIGFuZCBtYXkgYmUgbW9kaWZpZWQgYXQgcnVudGltZQogICAoaS5lLiB0byBjb252ZXJ0IGZpbGVzIGZyb20gb25lIGZvcm1hdCB0byBhbm90aGVyKS4KIApAQCAtNjYwLDE0ICs2NjEsMzAgQEAKICAgSW50ZXJwb2xhdGlvbiBiZWhhdmlvdXIgbWF5IGJlIGN1c3RvbWl6ZWQgYnkgcHJvdmlkaW5nIGEgY3VzdG9tIGhhbmRsZXIKICAgdGhyb3VnaCB0aGUgKmludGVycG9sYXRpb24qIGFyZ3VtZW50LiBgYE5vbmVgYCBjYW4gYmUgdXNlZCB0byB0dXJuIG9mZgogICBpbnRlcnBvbGF0aW9uIGNvbXBsZXRlbHksIGBgRXh0ZW5kZWRJbnRlcnBvbGF0aW9uKClgYCBwcm92aWRlcyBhIG1vcmUKLSAgYWR2YW5jZWQgdmFyaWFudCBpbnNwaXJlZCBieSBgYHpjLmJ1aWxkb3V0YGAuIE1vcmUgb24gdGhlIHN1YmplY3QgaW4gdGhlCisgIGFkdmFuY2VkIHZhcmlhbnQgaW5zcGlyZWQgYnkgYGB6Yy5idWlsZG91dGBgLiAgTW9yZSBvbiB0aGUgc3ViamVjdCBpbiB0aGUKICAgYGRlZGljYXRlZCBkb2N1bWVudGF0aW9uIHNlY3Rpb24gPCNpbnRlcnBvbGF0aW9uLW9mLXZhbHVlcz5gXy4KICAgOmNsYXNzOmBSYXdDb25maWdQYXJzZXJgIGhhcyBhIGRlZmF1bHQgdmFsdWUgb2YgYGBOb25lYGAuCiAKKyogKmNvbnZlcnRlcnMqLCBkZWZhdWx0IHZhbHVlOiBub3Qgc2V0CisKKyAgQ29uZmlnIHBhcnNlcnMgcHJvdmlkZSBvcHRpb24gdmFsdWUgZ2V0dGVycyB0aGF0IHBlcmZvcm0gdHlwZSBjb252ZXJzaW9uLiAgQnkKKyAgZGVmYXVsdCA6bWV0aDpgZ2V0aW50YCwgOm1ldGg6YGdldGZsb2F0YCwgYW5kIDptZXRoOmBnZXRib29sZWFuYCBhcmUKKyAgaW1wbGVtZW50ZWQuICBTaG91bGQgb3RoZXIgZ2V0dGVycyBiZSBkZXNpcmFibGUsIHVzZXJzIG1heSBkZWZpbmUgdGhlbSBpbgorICBhIHN1YmNsYXNzIG9yIHBhc3MgYSBkaWN0aW9uYXJ5IHdoZXJlIGVhY2gga2V5IGlzIGEgbmFtZSBvZiB0aGUgY29udmVydGVyIGFuZAorICBlYWNoIHZhbHVlIGlzIGEgY2FsbGFibGUgaW1wbGVtZW50aW5nIHNhaWQgY29udmVyc2lvbi4gIEZvciBpbnN0YW5jZSwgcGFzc2luZworICBgYHsnZGVjaW1hbCc6IGRlY2ltYWwuRGVjaW1hbH1gYCB3b3VsZCBhZGQgOm1ldGg6YGdldGRlY2ltYWxgIG9uIGJvdGggdGhlCisgIHBhcnNlciBvYmplY3QgYW5kIGFsbCBzZWN0aW9uIHByb3hpZXMuICBJbiBvdGhlciB3b3JkcywgaXQgd2lsbCBiZSBwb3NzaWJsZQorICB0byB3cml0ZSBib3RoIGBgcGFyc2VyX2luc3RhbmNlLmdldGRlY2ltYWwoJ3NlY3Rpb24nLCAna2V5JywgZmFsbGJhY2s9MClgYAorICBhbmQgYGBwYXJzZXJfaW5zdGFuY2VbJ3NlY3Rpb24nXS5nZXRkZWNpbWFsKCdrZXknLCAwKWBgLgorCisgIElmIHRoZSBjb252ZXJ0ZXIgbmVlZHMgdG8gYWNjZXNzIHRoZSBzdGF0ZSBvZiB0aGUgcGFyc2VyLCBpdCBjYW4gYmUKKyAgaW1wbGVtZW50ZWQgYXMgYSBtZXRob2Qgb24gYSBjb25maWcgcGFyc2VyIHN1YmNsYXNzLiAgSWYgdGhlIG5hbWUgb2YgdGhpcworICBtZXRob2Qgc3RhcnRzIHdpdGggYGBnZXRgYCwgaXQgd2lsbCBiZSBhdmFpbGFibGUgb24gYWxsIHNlY3Rpb24gcHJveGllcywgaW4KKyAgdGhlIGRpY3QtY29tcGF0aWJsZSBmb3JtIChzZWUgdGhlIGBgZ2V0ZGVjaW1hbCgpYGAgZXhhbXBsZSBhYm92ZSkuCiAKIE1vcmUgYWR2YW5jZWQgY3VzdG9taXphdGlvbiBtYXkgYmUgYWNoaWV2ZWQgYnkgb3ZlcnJpZGluZyBkZWZhdWx0IHZhbHVlcyBvZgotdGhlc2UgcGFyc2VyIGF0dHJpYnV0ZXMuICBUaGUgZGVmYXVsdHMgYXJlIGRlZmluZWQgb24gdGhlIGNsYXNzZXMsIHNvIHRoZXkKLW1heSBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgb3IgYnkgYXR0cmlidXRlIGFzc2lnbm1lbnQuCit0aGVzZSBwYXJzZXIgYXR0cmlidXRlcy4gIFRoZSBkZWZhdWx0cyBhcmUgZGVmaW5lZCBvbiB0aGUgY2xhc3Nlcywgc28gdGhleSBtYXkKK2JlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyBvciBieSBhdHRyaWJ1dGUgYXNzaWdubWVudC4KIAogLi4gYXR0cmlidXRlOjogQk9PTEVBTl9TVEFURVMKIApAQCAtNzI1LDEwICs3NDIsMTEgQEAKIAogLi4gYXR0cmlidXRlOjogU0VDVENSRQogCi0gIEEgY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uIHVzZWQgdG8gcGFyc2Ugc2VjdGlvbiBoZWFkZXJzLiBUaGUgZGVmYXVsdAotICBtYXRjaGVzIGBgW3NlY3Rpb25dYGAgdG8gdGhlIG5hbWUgYGAic2VjdGlvbiJgYC4gV2hpdGVzcGFjZSBpcyBjb25zaWRlcmVkIHBhcnQKLSAgb2YgdGhlIHNlY3Rpb24gbmFtZSwgdGh1cyBgYFsgIGxhcmNoICBdYGAgd2lsbCBiZSByZWFkIGFzIGEgc2VjdGlvbiBvZiBuYW1lCi0gIGBgIiAgbGFyY2ggICJgYC4gT3ZlcnJpZGUgdGhpcyBhdHRyaWJ1dGUgaWYgdGhhdCdzIHVuc3VpdGFibGUuICBGb3IgZXhhbXBsZToKKyAgQSBjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb24gdXNlZCB0byBwYXJzZSBzZWN0aW9uIGhlYWRlcnMuICBUaGUgZGVmYXVsdAorICBtYXRjaGVzIGBgW3NlY3Rpb25dYGAgdG8gdGhlIG5hbWUgYGAic2VjdGlvbiJgYC4gIFdoaXRlc3BhY2UgaXMgY29uc2lkZXJlZAorICBwYXJ0IG9mIHRoZSBzZWN0aW9uIG5hbWUsIHRodXMgYGBbICBsYXJjaCAgXWBgIHdpbGwgYmUgcmVhZCBhcyBhIHNlY3Rpb24gb2YKKyAgbmFtZSBgYCIgIGxhcmNoICAiYGAuICBPdmVycmlkZSB0aGlzIGF0dHJpYnV0ZSBpZiB0aGF0J3MgdW5zdWl0YWJsZS4gIEZvcgorICBleGFtcGxlOgogCiAgIC4uIGRvY3Rlc3Q6OgogCkBAIC04NTksNyArODc3LDcgQEAKIENvbmZpZ1BhcnNlciBPYmplY3RzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiBjbGFzczo6IENvbmZpZ1BhcnNlcihkZWZhdWx0cz1Ob25lLCBkaWN0X3R5cGU9Y29sbGVjdGlvbnMuT3JkZXJlZERpY3QsIGFsbG93X25vX3ZhbHVlPUZhbHNlLCBkZWxpbWl0ZXJzPSgnPScsICc6JyksIGNvbW1lbnRfcHJlZml4ZXM9KCcjJywgJzsnKSwgaW5saW5lX2NvbW1lbnRfcHJlZml4ZXM9Tm9uZSwgc3RyaWN0PVRydWUsIGVtcHR5X2xpbmVzX2luX3ZhbHVlcz1UcnVlLCBkZWZhdWx0X3NlY3Rpb249Y29uZmlncGFyc2VyLkRFRkFVTFRTRUNULCBpbnRlcnBvbGF0aW9uPUJhc2ljSW50ZXJwb2xhdGlvbigpKQorLi4gY2xhc3M6OiBDb25maWdQYXJzZXIoZGVmYXVsdHM9Tm9uZSwgZGljdF90eXBlPWNvbGxlY3Rpb25zLk9yZGVyZWREaWN0LCBhbGxvd19ub192YWx1ZT1GYWxzZSwgZGVsaW1pdGVycz0oJz0nLCAnOicpLCBjb21tZW50X3ByZWZpeGVzPSgnIycsICc7JyksIGlubGluZV9jb21tZW50X3ByZWZpeGVzPU5vbmUsIHN0cmljdD1UcnVlLCBlbXB0eV9saW5lc19pbl92YWx1ZXM9VHJ1ZSwgZGVmYXVsdF9zZWN0aW9uPWNvbmZpZ3BhcnNlci5ERUZBVUxUU0VDVCwgaW50ZXJwb2xhdGlvbj1CYXNpY0ludGVycG9sYXRpb24oKSwgY29udmVydGVycz17fSkKIAogICAgVGhlIG1haW4gY29uZmlndXJhdGlvbiBwYXJzZXIuICBXaGVuICpkZWZhdWx0cyogaXMgZ2l2ZW4sIGl0IGlzIGluaXRpYWxpemVkCiAgICBpbnRvIHRoZSBkaWN0aW9uYXJ5IG9mIGludHJpbnNpYyBkZWZhdWx0cy4gIFdoZW4gKmRpY3RfdHlwZSogaXMgZ2l2ZW4sIGl0CkBAIC04NjksOCArODg3LDggQEAKICAgIFdoZW4gKmRlbGltaXRlcnMqIGlzIGdpdmVuLCBpdCBpcyB1c2VkIGFzIHRoZSBzZXQgb2Ygc3Vic3RyaW5ncyB0aGF0CiAgICBkaXZpZGUga2V5cyBmcm9tIHZhbHVlcy4gIFdoZW4gKmNvbW1lbnRfcHJlZml4ZXMqIGlzIGdpdmVuLCBpdCB3aWxsIGJlIHVzZWQKICAgIGFzIHRoZSBzZXQgb2Ygc3Vic3RyaW5ncyB0aGF0IHByZWZpeCBjb21tZW50cyBpbiBvdGhlcndpc2UgZW1wdHkgbGluZXMuCi0gICBDb21tZW50cyBjYW4gYmUgaW5kZW50ZWQuIFdoZW4gKmlubGluZV9jb21tZW50X3ByZWZpeGVzKiBpcyBnaXZlbiwgaXQgd2lsbCBiZQotICAgdXNlZCBhcyB0aGUgc2V0IG9mIHN1YnN0cmluZ3MgdGhhdCBwcmVmaXggY29tbWVudHMgaW4gbm9uLWVtcHR5IGxpbmVzLgorICAgQ29tbWVudHMgY2FuIGJlIGluZGVudGVkLiAgV2hlbiAqaW5saW5lX2NvbW1lbnRfcHJlZml4ZXMqIGlzIGdpdmVuLCBpdCB3aWxsCisgICBiZSB1c2VkIGFzIHRoZSBzZXQgb2Ygc3Vic3RyaW5ncyB0aGF0IHByZWZpeCBjb21tZW50cyBpbiBub24tZW1wdHkgbGluZXMuCiAKICAgIFdoZW4gKnN0cmljdCogaXMgYGBUcnVlYGAgKHRoZSBkZWZhdWx0KSwgdGhlIHBhcnNlciB3b24ndCBhbGxvdyBmb3IKICAgIGFueSBzZWN0aW9uIG9yIG9wdGlvbiBkdXBsaWNhdGVzIHdoaWxlIHJlYWRpbmcgZnJvbSBhIHNpbmdsZSBzb3VyY2UgKGZpbGUsCkBAIC04ODQsMTMgKzkwMiwxMyBAQAogCiAgICBXaGVuICpkZWZhdWx0X3NlY3Rpb24qIGlzIGdpdmVuLCBpdCBzcGVjaWZpZXMgdGhlIG5hbWUgZm9yIHRoZSBzcGVjaWFsCiAgICBzZWN0aW9uIGhvbGRpbmcgZGVmYXVsdCB2YWx1ZXMgZm9yIG90aGVyIHNlY3Rpb25zIGFuZCBpbnRlcnBvbGF0aW9uIHB1cnBvc2VzCi0gICAobm9ybWFsbHkgbmFtZWQgYGAiREVGQVVMVCJgYCkuIFRoaXMgdmFsdWUgY2FuIGJlIHJldHJpZXZlZCBhbmQgY2hhbmdlZCBvbgorICAgKG5vcm1hbGx5IG5hbWVkIGBgIkRFRkFVTFQiYGApLiAgVGhpcyB2YWx1ZSBjYW4gYmUgcmV0cmlldmVkIGFuZCBjaGFuZ2VkIG9uCiAgICBydW50aW1lIHVzaW5nIHRoZSBgYGRlZmF1bHRfc2VjdGlvbmBgIGluc3RhbmNlIGF0dHJpYnV0ZS4KIAogICAgSW50ZXJwb2xhdGlvbiBiZWhhdmlvdXIgbWF5IGJlIGN1c3RvbWl6ZWQgYnkgcHJvdmlkaW5nIGEgY3VzdG9tIGhhbmRsZXIKICAgIHRocm91Z2ggdGhlICppbnRlcnBvbGF0aW9uKiBhcmd1bWVudC4gYGBOb25lYGAgY2FuIGJlIHVzZWQgdG8gdHVybiBvZmYKICAgIGludGVycG9sYXRpb24gY29tcGxldGVseSwgYGBFeHRlbmRlZEludGVycG9sYXRpb24oKWBgIHByb3ZpZGVzIGEgbW9yZQotICAgYWR2YW5jZWQgdmFyaWFudCBpbnNwaXJlZCBieSBgYHpjLmJ1aWxkb3V0YGAuIE1vcmUgb24gdGhlIHN1YmplY3QgaW4gdGhlCisgICBhZHZhbmNlZCB2YXJpYW50IGluc3BpcmVkIGJ5IGBgemMuYnVpbGRvdXRgYC4gIE1vcmUgb24gdGhlIHN1YmplY3QgaW4gdGhlCiAgICBgZGVkaWNhdGVkIGRvY3VtZW50YXRpb24gc2VjdGlvbiA8I2ludGVycG9sYXRpb24tb2YtdmFsdWVzPmBfLgogCiAgICBBbGwgb3B0aW9uIG5hbWVzIHVzZWQgaW4gaW50ZXJwb2xhdGlvbiB3aWxsIGJlIHBhc3NlZCB0aHJvdWdoIHRoZQpAQCAtODk5LDYgKzkxNywxMiBAQAogICAgY29udmVydHMgb3B0aW9uIG5hbWVzIHRvIGxvd2VyIGNhc2UpLCB0aGUgdmFsdWVzIGBgZm9vICUoYmFyKXNgYCBhbmQgYGBmb28KICAgICUoQkFSKXNgYCBhcmUgZXF1aXZhbGVudC4KIAorICAgV2hlbiAqY29udmVydGVycyogaXMgZ2l2ZW4sIGl0IHNob3VsZCBiZSBhIGRpY3Rpb25hcnkgd2hlcmUgZWFjaCBrZXkKKyAgIHJlcHJlc2VudHMgdGhlIG5hbWUgb2YgYSB0eXBlIGNvbnZlcnRlciBhbmQgZWFjaCB2YWx1ZSBpcyBhIGNhbGxhYmxlCisgICBpbXBsZW1lbnRpbmcgdGhlIGNvbnZlcnNpb24gZnJvbSBzdHJpbmcgdG8gdGhlIGRlc2lyZWQgZGF0YXR5cGUuICBFdmVyeQorICAgY29udmVydGVyIGdldHMgaXRzIG93biBjb3JyZXNwb25kaW5nIDptZXRoOmBnZXQqKClgIG1ldGhvZCBvbiB0aGUgcGFyc2VyCisgICBvYmplY3QgYW5kIHNlY3Rpb24gcHJveGllcy4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIFRoZSBkZWZhdWx0ICpkaWN0X3R5cGUqIGlzIDpjbGFzczpgY29sbGVjdGlvbnMuT3JkZXJlZERpY3RgLgogCkBAIC05MDcsNiArOTMxLDkgQEAKICAgICAgICplbXB0eV9saW5lc19pbl92YWx1ZXMqLCAqZGVmYXVsdF9zZWN0aW9uKiBhbmQgKmludGVycG9sYXRpb24qIHdlcmUKICAgICAgIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlICpjb252ZXJ0ZXJzKiBhcmd1bWVudCB3YXMgYWRkZWQuCisKIAogICAgLi4gbWV0aG9kOjogZGVmYXVsdHMoKQogCkBAIC05NDQsNyArOTcxLDcgQEAKICAgIC4uIG1ldGhvZDo6IGhhc19vcHRpb24oc2VjdGlvbiwgb3B0aW9uKQogCiAgICAgICBJZiB0aGUgZ2l2ZW4gKnNlY3Rpb24qIGV4aXN0cywgYW5kIGNvbnRhaW5zIHRoZSBnaXZlbiAqb3B0aW9uKiwgcmV0dXJuCi0gICAgICA6Y29uc3Q6YFRydWVgOyBvdGhlcndpc2UgcmV0dXJuIDpjb25zdDpgRmFsc2VgLiBJZiB0aGUgc3BlY2lmaWVkCisgICAgICA6Y29uc3Q6YFRydWVgOyBvdGhlcndpc2UgcmV0dXJuIDpjb25zdDpgRmFsc2VgLiAgSWYgdGhlIHNwZWNpZmllZAogICAgICAgKnNlY3Rpb24qIGlzIDpjb25zdDpgTm9uZWAgb3IgYW4gZW1wdHkgc3RyaW5nLCBERUZBVUxUIGlzIGFzc3VtZWQuCiAKIApAQCAtMTA2OSw3ICsxMDk2LDcgQEAKICAgICAgIDptZXRoOmBnZXRgIG1ldGhvZC4KIAogICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgICAgIEl0ZW1zIHByZXNlbnQgaW4gKnZhcnMqIG5vIGxvbmdlciBhcHBlYXIgaW4gdGhlIHJlc3VsdC4gVGhlIHByZXZpb3VzCisgICAgICAgICBJdGVtcyBwcmVzZW50IGluICp2YXJzKiBubyBsb25nZXIgYXBwZWFyIGluIHRoZSByZXN1bHQuICBUaGUgcHJldmlvdXMKICAgICAgICAgIGJlaGF2aW91ciBtaXhlZCBhY3R1YWwgcGFyc2VyIG9wdGlvbnMgd2l0aCB2YXJpYWJsZXMgcHJvdmlkZWQgZm9yCiAgICAgICAgICBpbnRlcnBvbGF0aW9uLgogCkBAIC0xMTcwLDcgKzExOTcsNyBAQAogCiAgICAuLiBub3RlOjoKICAgICAgIENvbnNpZGVyIHVzaW5nIDpjbGFzczpgQ29uZmlnUGFyc2VyYCBpbnN0ZWFkIHdoaWNoIGNoZWNrcyB0eXBlcyBvZgotICAgICAgdGhlIHZhbHVlcyB0byBiZSBzdG9yZWQgaW50ZXJuYWxseS4gSWYgeW91IGRvbid0IHdhbnQgaW50ZXJwb2xhdGlvbiwgeW91CisgICAgICB0aGUgdmFsdWVzIHRvIGJlIHN0b3JlZCBpbnRlcm5hbGx5LiAgSWYgeW91IGRvbid0IHdhbnQgaW50ZXJwb2xhdGlvbiwgeW91CiAgICAgICBjYW4gdXNlIGBgQ29uZmlnUGFyc2VyKGludGVycG9sYXRpb249Tm9uZSlgYC4KIAogCkBAIC0xMTgxLDcgKzEyMDgsNyBAQAogICAgICAgKmRlZmF1bHQgc2VjdGlvbiogbmFtZSBpcyBwYXNzZWQsIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KIAogICAgICAgVHlwZSBvZiAqc2VjdGlvbiogaXMgbm90IGNoZWNrZWQgd2hpY2ggbGV0cyB1c2VycyBjcmVhdGUgbm9uLXN0cmluZyBuYW1lZAotICAgICAgc2VjdGlvbnMuIFRoaXMgYmVoYXZpb3VyIGlzIHVuc3VwcG9ydGVkIGFuZCBtYXkgY2F1c2UgaW50ZXJuYWwgZXJyb3JzLgorICAgICAgc2VjdGlvbnMuICBUaGlzIGJlaGF2aW91ciBpcyB1bnN1cHBvcnRlZCBhbmQgbWF5IGNhdXNlIGludGVybmFsIGVycm9ycy4KIAogCiAgICAuLiBtZXRob2Q6OiBzZXQoc2VjdGlvbiwgb3B0aW9uLCB2YWx1ZSkKQEAgLTEyODIsMyArMTMwOSw0IEBACiAuLiBbMV0gQ29uZmlnIHBhcnNlcnMgYWxsb3cgZm9yIGhlYXZ5IGN1c3RvbWl6YXRpb24uICBJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4KICAgICAgICBjaGFuZ2luZyB0aGUgYmVoYXZpb3VyIG91dGxpbmVkIGJ5IHRoZSBmb290bm90ZSByZWZlcmVuY2UsIGNvbnN1bHQgdGhlCiAgICAgICAgYEN1c3RvbWl6aW5nIFBhcnNlciBCZWhhdmlvdXJgXyBzZWN0aW9uLgorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb25zdGFudHMucnN0IGIvRG9jL2xpYnJhcnkvY29uc3RhbnRzLnJzdAppbmRleCA0MmI1YWYyLi5kNWEwZjA5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb25zdGFudHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QKQEAgLTQ1LDcgKzQ1LDYgQEAKICAgIGZvciBtb3JlIGRldGFpbHMuCiAKIAotCiAuLiBkYXRhOjogRWxsaXBzaXMKIAogICAgVGhlIHNhbWUgYXMgYGAuLi5gYC4gIFNwZWNpYWwgdmFsdWUgdXNlZCBtb3N0bHkgaW4gY29uanVuY3Rpb24gd2l0aCBleHRlbmRlZApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdAppbmRleCAyYjJjZWNlLi45ZTg0NjNkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdApAQCAtMTcyLDYgKzE3MiwxNiBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKIAorLi4gZnVuY3Rpb246OiByZWRpcmVjdF9zdGRlcnIobmV3X3RhcmdldCkKKworICAgU2ltaWxhciB0byA6ZnVuYzpgfmNvbnRleHRsaWIucmVkaXJlY3Rfc3Rkb3V0YCBidXQgcmVkaXJlY3RpbmcKKyAgIDpkYXRhOmBzeXMuc3RkZXJyYCB0byBhbm90aGVyIGZpbGUgb3IgZmlsZS1saWtlIG9iamVjdC4KKworICAgVGhpcyBjb250ZXh0IG1hbmFnZXIgaXMgOnJlZjpgcmVlbnRyYW50IDxyZWVudHJhbnQtY21zPmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGNsYXNzOjogQ29udGV4dERlY29yYXRvcigpCiAKICAgIEEgYmFzZSBjbGFzcyB0aGF0IGVuYWJsZXMgYSBjb250ZXh0IG1hbmFnZXIgdG8gYWxzbyBiZSB1c2VkIGFzIGEgZGVjb3JhdG9yLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3N2LnJzdCBiL0RvYy9saWJyYXJ5L2Nzdi5yc3QKaW5kZXggZTlhOWNiNS4uNGZjZmFlZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3N2LnJzdAorKysgYi9Eb2MvbGlicmFyeS9jc3YucnN0CkBAIC01LDYgKzUsNyBAQAogICAgOnN5bm9wc2lzOiBXcml0ZSBhbmQgcmVhZCB0YWJ1bGFyIGRhdGEgdG8gYW5kIGZyb20gZGVsaW1pdGVkIGZpbGVzLgogLi4gc2VjdGlvbmF1dGhvcjo6IFNraXAgTW9udGFuYXJvIDxza2lwQHBvYm94LmNvbT4KIAorKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvY3N2LnB5YAogCiAuLiBpbmRleDo6CiAgICBzaW5nbGU6IGNzdgpAQCAtNDE4LDcgKzQxOSw3IEBACiAKIDpjbGFzczpgV3JpdGVyYCBvYmplY3RzICg6Y2xhc3M6YERpY3RXcml0ZXJgIGluc3RhbmNlcyBhbmQgb2JqZWN0cyByZXR1cm5lZCBieQogdGhlIDpmdW5jOmB3cml0ZXJgIGZ1bmN0aW9uKSBoYXZlIHRoZSBmb2xsb3dpbmcgcHVibGljIG1ldGhvZHMuICBBICpyb3cqIG11c3QgYmUKLWEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBvciBudW1iZXJzIGZvciA6Y2xhc3M6YFdyaXRlcmAgb2JqZWN0cyBhbmQgYSBkaWN0aW9uYXJ5CithbiBpdGVyYWJsZSBvZiBzdHJpbmdzIG9yIG51bWJlcnMgZm9yIDpjbGFzczpgV3JpdGVyYCBvYmplY3RzIGFuZCBhIGRpY3Rpb25hcnkKIG1hcHBpbmcgZmllbGRuYW1lcyB0byBzdHJpbmdzIG9yIG51bWJlcnMgKGJ5IHBhc3NpbmcgdGhlbSB0aHJvdWdoIDpmdW5jOmBzdHJgCiBmaXJzdCkgZm9yIDpjbGFzczpgRGljdFdyaXRlcmAgb2JqZWN0cy4gIE5vdGUgdGhhdCBjb21wbGV4IG51bWJlcnMgYXJlIHdyaXR0ZW4KIG91dCBzdXJyb3VuZGVkIGJ5IHBhcmVucy4gVGhpcyBtYXkgY2F1c2Ugc29tZSBwcm9ibGVtcyBmb3Igb3RoZXIgcHJvZ3JhbXMgd2hpY2gKQEAgLTQzMCw2ICs0MzEsOCBAQAogICAgV3JpdGUgdGhlICpyb3cqIHBhcmFtZXRlciB0byB0aGUgd3JpdGVyJ3MgZmlsZSBvYmplY3QsIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8KICAgIHRoZSBjdXJyZW50IGRpYWxlY3QuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IG9mIGFyYml0cmFyeSBpdGVyYWJsZXMuCiAKIC4uIG1ldGhvZDo6IGNzdndyaXRlci53cml0ZXJvd3Mocm93cykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdCBiL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QKaW5kZXggNjMwZDI3OS4uYjcyYmRiNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jdHlwZXMucnN0CkBAIC0xMjkxLDcgKzEyOTEsNyBAQAogTG9hZGluZyBzaGFyZWQgbGlicmFyaWVzCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAotVGhlcmUgYXJlIHNldmVyYWwgd2F5cyB0byBsb2FkZWQgc2hhcmVkIGxpYnJhcmllcyBpbnRvIHRoZSBQeXRob24gcHJvY2Vzcy4gIE9uZQorVGhlcmUgYXJlIHNldmVyYWwgd2F5cyB0byBsb2FkIHNoYXJlZCBsaWJyYXJpZXMgaW50byB0aGUgUHl0aG9uIHByb2Nlc3MuICBPbmUKIHdheSBpcyB0byBpbnN0YW50aWF0ZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzOgogCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2N1cnNlcy5yc3QgYi9Eb2MvbGlicmFyeS9jdXJzZXMucnN0CmluZGV4IGYzZTYwYjQuLmU4ZGZkODMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2N1cnNlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY3Vyc2VzLnJzdApAQCAtNTk5LDYgKzU5OSwxMyBAQAogICAgICAgT25seSBvbmUgKmNoKiBjYW4gYmUgcHVzaGVkIGJlZm9yZSA6bWV0aDpgZ2V0Y2hgIGlzIGNhbGxlZC4KIAogCisuLiBmdW5jdGlvbjo6IHVwZGF0ZV9saW5lc19jb2xzKCkKKworICAgVXBkYXRlIDplbnZ2YXI6YExJTkVTYCBhbmQgOmVudnZhcjpgQ09MU2AuIFVzZWZ1bCBmb3IgZGV0ZWN0aW5nIG1hbnVhbCBzY3JlZW4gcmVzaXplLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBmdW5jdGlvbjo6IHVuZ2V0X3djaChjaCkKIAogICAgUHVzaCAqY2gqIHNvIHRoZSBuZXh0IDptZXRoOmBnZXRfd2NoYCB3aWxsIHJldHVybiBpdC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdCBiL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdAppbmRleCA4OGYzZjZlLi45NzZjZDQ5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CkBAIC03LDYgKzcsOCBAQAogLi4gc2VjdGlvbmF1dGhvcjo6IFRpbSBQZXRlcnMgPHRpbUB6b3BlLmNvbT4KIC4uIHNlY3Rpb25hdXRob3I6OiBBLk0uIEt1Y2hsaW5nIDxhbWtAYW1rLmNhPgogCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9kYXRldGltZS5weWAKKwogLi4gWFhYIHdoYXQgb3JkZXIgc2hvdWxkIHRoZSB0eXBlcyBiZSBkaXNjdXNzZWQgaW4/CiAKIFRoZSA6bW9kOmBkYXRldGltZWAgbW9kdWxlIHN1cHBsaWVzIGNsYXNzZXMgZm9yIG1hbmlwdWxhdGluZyBkYXRlcyBhbmQgdGltZXMgaW4KQEAgLTc1NywxMyArNzU5LDE5IEBACiAgICA6YXR0cjpgdHppbmZvYCBgYE5vbmVgYC4gVGhpcyBtYXkgcmFpc2UgOmV4YzpgT3ZlcmZsb3dFcnJvcmAsIGlmIHRoZSB0aW1lc3RhbXAgaXMKICAgIG91dCBvZiB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0gQyA6YzpmdW5jOmBnbXRpbWVgIGZ1bmN0aW9uLAogICAgYW5kIDpleGM6YE9TRXJyb3JgIG9uIDpjOmZ1bmM6YGdtdGltZWAgZmFpbHVyZS4KLSAgIEl0J3MgY29tbW9uIGZvciB0aGlzIHRvIGJlIHJlc3RyaWN0ZWQgdG8geWVhcnMgaW4gMTk3MCB0aHJvdWdoIDIwMzguIFNlZSBhbHNvCi0gICA6bWV0aDpgZnJvbXRpbWVzdGFtcGAuCisgICBJdCdzIGNvbW1vbiBmb3IgdGhpcyB0byBiZSByZXN0cmljdGVkIHRvIHllYXJzIGluIDE5NzAgdGhyb3VnaCAyMDM4LgogCi0gICBPbiB0aGUgUE9TSVggY29tcGxpYW50IHBsYXRmb3JtcywgYGB1dGNmcm9tdGltZXN0YW1wKHRpbWVzdGFtcClgYAotICAgaXMgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb246OgorICAgVG8gZ2V0IGFuIGF3YXJlIDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3QsIGNhbGwgOm1ldGg6YGZyb210aW1lc3RhbXBgOjoKIAotICAgICBkYXRldGltZSgxOTcwLCAxLCAxKSArIHRpbWVkZWx0YShzZWNvbmRzPXRpbWVzdGFtcCkKKyAgICAgZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCh0aW1lc3RhbXAsIHRpbWV6b25lLnV0YykKKworICAgT24gdGhlIFBPU0lYIGNvbXBsaWFudCBwbGF0Zm9ybXMsIGl0IGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZvbGxvd2luZworICAgZXhwcmVzc2lvbjo6CisKKyAgICAgZGF0ZXRpbWUoMTk3MCwgMSwgMSwgdHppbmZvPXRpbWV6b25lLnV0YykgKyB0aW1lZGVsdGEoc2Vjb25kcz10aW1lc3RhbXApCisKKyAgIGV4Y2VwdCB0aGUgbGF0dGVyIGZvcm11bGEgYWx3YXlzIHN1cHBvcnRzIHRoZSBmdWxsIHllYXJzIHJhbmdlOiBiZXR3ZWVuCisgICA6Y29uc3Q6YE1JTllFQVJgIGFuZCA6Y29uc3Q6YE1BWFlFQVJgIGluY2x1c2l2ZS4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIFJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgIGluc3RlYWQgb2YgOmV4YzpgVmFsdWVFcnJvcmAgaWYgdGhlIHRpbWVzdGFtcApAQCAtMTM3NiwxMCArMTM4NCwxMyBAQAogCiAqIGVmZmljaWVudCBwaWNrbGluZwogCi0qIGluIEJvb2xlYW4gY29udGV4dHMsIGEgOmNsYXNzOmAudGltZWAgb2JqZWN0IGlzIGNvbnNpZGVyZWQgdG8gYmUgdHJ1ZSBpZiBhbmQKLSAgb25seSBpZiwgYWZ0ZXIgY29udmVydGluZyBpdCB0byBtaW51dGVzIGFuZCBzdWJ0cmFjdGluZyA6bWV0aDpgdXRjb2Zmc2V0YCAob3IKLSAgYGAwYGAgaWYgdGhhdCdzIGBgTm9uZWBgKSwgdGhlIHJlc3VsdCBpcyBub24temVyby4KK0luIGJvb2xlYW4gY29udGV4dHMsIGEgOmNsYXNzOmAudGltZWAgb2JqZWN0IGlzIGFsd2F5cyBjb25zaWRlcmVkIHRvIGJlIHRydWUuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBCZWZvcmUgUHl0aG9uIDMuNSwgYSA6Y2xhc3M6YC50aW1lYCBvYmplY3Qgd2FzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaWYgaXQKKyAgIHJlcHJlc2VudGVkIG1pZG5pZ2h0IGluIFVUQy4gIFRoaXMgYmVoYXZpb3Igd2FzIGNvbnNpZGVyZWQgb2JzY3VyZSBhbmQKKyAgIGVycm9yLXByb25lIGFuZCBoYXMgYmVlbiByZW1vdmVkIGluIFB5dGhvbiAzLjUuICBTZWUgOmlzc3VlOmAxMzkzNmAgZm9yIGZ1bGwKKyAgIGRldGFpbHMuCiAKIEluc3RhbmNlIG1ldGhvZHM6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RibS5yc3QgYi9Eb2MvbGlicmFyeS9kYm0ucnN0CmluZGV4IGU2YTgyZDYuLjNmM2M0M2QgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RibS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGJtLnJzdApAQCAtMzI1LDEzICszMjUsMTggQEAKICAgIGR1bWJkYm0gZGF0YWJhc2UgaXMgY3JlYXRlZCwgZmlsZXMgd2l0aCA6ZmlsZTpgLmRhdGAgYW5kIDpmaWxlOmAuZGlyYCBleHRlbnNpb25zCiAgICBhcmUgY3JlYXRlZC4KIAotICAgVGhlIG9wdGlvbmFsICpmbGFnKiBhcmd1bWVudCBpcyBjdXJyZW50bHkgaWdub3JlZDsgdGhlIGRhdGFiYXNlIGlzIGFsd2F5cyBvcGVuZWQKLSAgIGZvciB1cGRhdGUsIGFuZCB3aWxsIGJlIGNyZWF0ZWQgaWYgaXQgZG9lcyBub3QgZXhpc3QuCisgICBUaGUgb3B0aW9uYWwgKmZsYWcqIGFyZ3VtZW50IHN1cHBvcnRzIG9ubHkgdGhlIHNlbWFudGljcyBvZiBgYCdjJ2BgCisgICBhbmQgYGAnbidgYCB2YWx1ZXMuICBPdGhlciB2YWx1ZXMgd2lsbCBkZWZhdWx0IHRvIGRhdGFiYXNlIGJlaW5nIGFsd2F5cworICAgb3BlbmVkIGZvciB1cGRhdGUsIGFuZCB3aWxsIGJlIGNyZWF0ZWQgaWYgaXQgZG9lcyBub3QgZXhpc3QuCiAKICAgIFRoZSBvcHRpb25hbCAqbW9kZSogYXJndW1lbnQgaXMgdGhlIFVuaXggbW9kZSBvZiB0aGUgZmlsZSwgdXNlZCBvbmx5IHdoZW4gdGhlCiAgICBkYXRhYmFzZSBoYXMgdG8gYmUgY3JlYXRlZC4gIEl0IGRlZmF1bHRzIHRvIG9jdGFsIGBgMG82NjZgYCAoYW5kIHdpbGwgYmUgbW9kaWZpZWQKICAgIGJ5IHRoZSBwcmV2YWlsaW5nIHVtYXNrKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIDpmdW5jOmAub3BlbmAgYWx3YXlzIGNyZWF0ZXMgYSBuZXcgZGF0YWJhc2Ugd2hlbiB0aGUgZmxhZyBoYXMgdGhlIHZhbHVlCisgICAgICBgYCduJ2BgLgorCiAgICBJbiBhZGRpdGlvbiB0byB0aGUgbWV0aG9kcyBwcm92aWRlZCBieSB0aGUKICAgIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLk11dGFibGVNYXBwaW5nYCBjbGFzcywgOmNsYXNzOmBkdW1iZGJtYCBvYmplY3RzCiAgICBwcm92aWRlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0IGIvRG9jL2xpYnJhcnkvZGVjaW1hbC5yc3QKaW5kZXggY2E0MWMzYS4uMmRlMGVhMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGVjaW1hbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGVjaW1hbC5yc3QKQEAgLTEyLDYgKzEyLDggQEAKIC4uIG1vZHVsZWF1dGhvcjo6IFN0ZWZhbiBLcmFoIDxza3JhaCBhdCBieXRlcmVlZi5vcmc+CiAuLiBzZWN0aW9uYXV0aG9yOjogUmF5bW9uZCBELiBIZXR0aW5nZXIgPHB5dGhvbiBhdCByY24uY29tPgogCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9kZWNpbWFsLnB5YAorCiAuLiBpbXBvcnQgbW9kdWxlcyBmb3IgdGVzdGluZyBpbmxpbmUgZG9jdGVzdHMgd2l0aCB0aGUgU3BoaW54IGRvY3Rlc3QgYnVpbGRlcgogLi4gdGVzdHNldHVwOjogKgogCkBAIC03NDIsNyArNzQ0LDcgQEAKICAgICAgICogYGAiTmFOImBgLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gKE5vdCBhIE51bWJlcikuCiAgICAgICAqIGBgInNOYU4iYGAsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBhIHNpZ25hbGluZyBOYU4uCiAKLSAgIC4uIG1ldGhvZDo6IHF1YW50aXplKGV4cCwgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lLCB3YXRjaGV4cD1UcnVlKQorICAgLi4gbWV0aG9kOjogcXVhbnRpemUoZXhwLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpCiAKICAgICAgIFJldHVybiBhIHZhbHVlIGVxdWFsIHRvIHRoZSBmaXJzdCBvcGVyYW5kIGFmdGVyIHJvdW5kaW5nIGFuZCBoYXZpbmcgdGhlCiAgICAgICBleHBvbmVudCBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuCkBAIC03NjUsMTQgKzc2Nyw4IEBACiAgICAgICBgYGNvbnRleHRgYCBhcmd1bWVudDsgaWYgbmVpdGhlciBhcmd1bWVudCBpcyBnaXZlbiB0aGUgcm91bmRpbmcgbW9kZSBvZgogICAgICAgdGhlIGN1cnJlbnQgdGhyZWFkJ3MgY29udGV4dCBpcyB1c2VkLgogCi0gICAgICBJZiAqd2F0Y2hleHAqIGlzIHNldCAoZGVmYXVsdCksIHRoZW4gYW4gZXJyb3IgaXMgcmV0dXJuZWQgd2hlbmV2ZXIgdGhlCi0gICAgICByZXN1bHRpbmcgZXhwb25lbnQgaXMgZ3JlYXRlciB0aGFuIDphdHRyOmBFbWF4YCBvciBsZXNzIHRoYW4KLSAgICAgIDphdHRyOmBFdGlueWAuCi0KLSAgICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKLSAgICAgICAgICp3YXRjaGV4cCogaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIGZyb20gdGhlIHB1cmUgUHl0aG9uIHZlcnNpb24KLSAgICAgICAgIGFuZCBpcyBub3QgcHJlc2VudCBpbiB0aGUgQyB2ZXJzaW9uLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdmVyc2lvbgotICAgICAgICAgMy40LCB3aGVyZSBpdCBkZWZhdWx0cyB0byBgYFRydWVgYC4KKyAgICAgIEFuIGVycm9yIGlzIHJldHVybmVkIHdoZW5ldmVyIHRoZSByZXN1bHRpbmcgZXhwb25lbnQgaXMgZ3JlYXRlciB0aGFuCisgICAgICA6YXR0cjpgRW1heGAgb3IgbGVzcyB0aGFuIDphdHRyOmBFdGlueWAuCiAKICAgIC4uIG1ldGhvZDo6IHJhZGl4KCkKIApAQCAtMjA5Miw0ICsyMDg4LDMgQEAKIAogICAgPj4+IENvbnRleHQocHJlYz01LCByb3VuZGluZz1ST1VORF9ET1dOKS5jcmVhdGVfZGVjaW1hbCgnMS4yMzQ1Njc4JykKICAgIERlY2ltYWwoJzEuMjM0NScpCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RldmVsb3BtZW50LnJzdCBiL0RvYy9saWJyYXJ5L2RldmVsb3BtZW50LnJzdAppbmRleCAwNmU3MDQ4Li5kMmI1ZmEyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kZXZlbG9wbWVudC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGV2ZWxvcG1lbnQucnN0CkBAIC0xNiw2ICsxNiw3IEBACiAKIC4uIHRvY3RyZWU6OgogCisgICB0eXBpbmcucnN0CiAgICBweWRvYy5yc3QKICAgIGRvY3Rlc3QucnN0CiAgICB1bml0dGVzdC5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RpZmZsaWIucnN0IGIvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QKaW5kZXggY2VhZDgxOC4uZTdlNWRmNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QKQEAgLTcsNiArNyw4IEBACiAuLiBzZWN0aW9uYXV0aG9yOjogVGltIFBldGVycyA8dGltX29uZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiAuLiBNYXJrdXAgYnkgRnJlZCBMLiBEcmFrZSwgSnIuIDxmZHJha2VAYWNtLm9yZz4KIAorKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvZGlmZmxpYi5weWAKKwogLi4gdGVzdHNldHVwOjoKIAogICAgaW1wb3J0IHN5cwpAQCAtMjUsNyArMjcsOSBAQAogICAgbGl0dGxlIGZhbmNpZXIgdGhhbiwgYW4gYWxnb3JpdGhtIHB1Ymxpc2hlZCBpbiB0aGUgbGF0ZSAxOTgwJ3MgYnkgUmF0Y2xpZmYgYW5kCiAgICBPYmVyc2hlbHAgdW5kZXIgdGhlIGh5cGVyYm9saWMgbmFtZSAiZ2VzdGFsdCBwYXR0ZXJuIG1hdGNoaW5nLiIgIFRoZSBpZGVhIGlzIHRvCiAgICBmaW5kIHRoZSBsb25nZXN0IGNvbnRpZ3VvdXMgbWF0Y2hpbmcgc3Vic2VxdWVuY2UgdGhhdCBjb250YWlucyBubyAianVuayIKLSAgIGVsZW1lbnRzICh0aGUgUmF0Y2xpZmYgYW5kIE9iZXJzaGVscCBhbGdvcml0aG0gZG9lc24ndCBhZGRyZXNzIGp1bmspLiAgVGhlIHNhbWUKKyAgIGVsZW1lbnRzOyB0aGVzZSAianVuayIgZWxlbWVudHMgYXJlIG9uZXMgdGhhdCBhcmUgdW5pbnRlcmVzdGluZyBpbiBzb21lCisgICBzZW5zZSwgc3VjaCBhcyBibGFuayBsaW5lcyBvciB3aGl0ZXNwYWNlLiAgKEhhbmRsaW5nIGp1bmsgaXMgYW4KKyAgIGV4dGVuc2lvbiB0byB0aGUgUmF0Y2xpZmYgYW5kIE9iZXJzaGVscCBhbGdvcml0aG0uKSBUaGUgc2FtZQogICAgaWRlYSBpcyB0aGVuIGFwcGxpZWQgcmVjdXJzaXZlbHkgdG8gdGhlIHBpZWNlcyBvZiB0aGUgc2VxdWVuY2VzIHRvIHRoZSBsZWZ0IGFuZAogICAgdG8gdGhlIHJpZ2h0IG9mIHRoZSBtYXRjaGluZyBzdWJzZXF1ZW5jZS4gIFRoaXMgZG9lcyBub3QgeWllbGQgbWluaW1hbCBlZGl0CiAgICBzZXF1ZW5jZXMsIGJ1dCBkb2VzIHRlbmQgdG8geWllbGQgbWF0Y2hlcyB0aGF0ICJsb29rIHJpZ2h0IiB0byBwZW9wbGUuCkBAIC0xMDAsNyArMTA0LDggQEAKIAogICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSBwdWJsaWM6CiAKLSAgIC4uIG1ldGhvZDo6IG1ha2VfZmlsZShmcm9tbGluZXMsIHRvbGluZXMsIGZyb21kZXNjPScnLCB0b2Rlc2M9JycsIGNvbnRleHQ9RmFsc2UsIG51bWxpbmVzPTUpCisgICAuLiBtZXRob2Q6OiBtYWtlX2ZpbGUoZnJvbWxpbmVzLCB0b2xpbmVzLCBmcm9tZGVzYz0nJywgdG9kZXNjPScnLCBjb250ZXh0PUZhbHNlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgbnVtbGluZXM9NSwgKiwgY2hhcnNldD0ndXRmLTgnKQogCiAgICAgICBDb21wYXJlcyAqZnJvbWxpbmVzKiBhbmQgKnRvbGluZXMqIChsaXN0cyBvZiBzdHJpbmdzKSBhbmQgcmV0dXJucyBhIHN0cmluZyB3aGljaAogICAgICAgaXMgYSBjb21wbGV0ZSBIVE1MIGZpbGUgY29udGFpbmluZyBhIHRhYmxlIHNob3dpbmcgbGluZSBieSBsaW5lIGRpZmZlcmVuY2VzIHdpdGgKQEAgLTExOSw2ICsxMjQsMTAgQEAKICAgICAgIHRoZSBuZXh0IGRpZmZlcmVuY2UgaGlnaGxpZ2h0IGF0IHRoZSB0b3Agb2YgdGhlIGJyb3dzZXIgd2l0aG91dCBhbnkgbGVhZGluZwogICAgICAgY29udGV4dCkuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICAqY2hhcnNldCoga2V5d29yZC1vbmx5IGFyZ3VtZW50IHdhcyBhZGRlZC4gIFRoZSBkZWZhdWx0IGNoYXJzZXQgb2YKKyAgICAgICAgIEhUTUwgZG9jdW1lbnQgY2hhbmdlZCBmcm9tIGBgJ0lTTy04ODU5LTEnYGAgdG8gYGAndXRmLTgnYGAuCisKICAgIC4uIG1ldGhvZDo6IG1ha2VfdGFibGUoZnJvbWxpbmVzLCB0b2xpbmVzLCBmcm9tZGVzYz0nJywgdG9kZXNjPScnLCBjb250ZXh0PUZhbHNlLCBudW1saW5lcz01KQogCiAgICAgICBDb21wYXJlcyAqZnJvbWxpbmVzKiBhbmQgKnRvbGluZXMqIChsaXN0cyBvZiBzdHJpbmdzKSBhbmQgcmV0dXJucyBhIHN0cmluZyB3aGljaApAQCAtMjA4LDcgKzIxNyw3IEBACiAgICBDb21wYXJlICphKiBhbmQgKmIqIChsaXN0cyBvZiBzdHJpbmdzKTsgcmV0dXJuIGEgOmNsYXNzOmBEaWZmZXJgXCAtc3R5bGUKICAgIGRlbHRhIChhIDp0ZXJtOmBnZW5lcmF0b3JgIGdlbmVyYXRpbmcgdGhlIGRlbHRhIGxpbmVzKS4KIAotICAgT3B0aW9uYWwga2V5d29yZCBwYXJhbWV0ZXJzICpsaW5lanVuayogYW5kICpjaGFyanVuayogYXJlIGZvciBmaWx0ZXIgZnVuY3Rpb25zCisgICBPcHRpb25hbCBrZXl3b3JkIHBhcmFtZXRlcnMgKmxpbmVqdW5rKiBhbmQgKmNoYXJqdW5rKiBhcmUgZmlsdGVyaW5nIGZ1bmN0aW9ucwogICAgKG9yIGBgTm9uZWBgKToKIAogICAgKmxpbmVqdW5rKjogQSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgYSBzaW5nbGUgc3RyaW5nIGFyZ3VtZW50LCBhbmQgcmV0dXJucwpAQCAtMjIyLDcgKzIzMSw3IEBACiAgICAqY2hhcmp1bmsqOiBBIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhIGNoYXJhY3RlciAoYSBzdHJpbmcgb2YgbGVuZ3RoIDEpLCBhbmQKICAgIHJldHVybnMgaWYgdGhlIGNoYXJhY3RlciBpcyBqdW5rLCBvciBmYWxzZSBpZiBub3QuIFRoZSBkZWZhdWx0IGlzIG1vZHVsZS1sZXZlbAogICAgZnVuY3Rpb24gOmZ1bmM6YElTX0NIQVJBQ1RFUl9KVU5LYCwgd2hpY2ggZmlsdGVycyBvdXQgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIChhCi0gICBibGFuayBvciB0YWI7IG5vdGU6IGJhZCBpZGVhIHRvIGluY2x1ZGUgbmV3bGluZSBpbiB0aGlzISkuCisgICBibGFuayBvciB0YWI7IGl0J3MgYSBiYWQgaWRlYSB0byBpbmNsdWRlIG5ld2xpbmUgaW4gdGhpcyEpLgogCiAgICA6ZmlsZTpgVG9vbHMvc2NyaXB0cy9uZGlmZi5weWAgaXMgYSBjb21tYW5kLWxpbmUgZnJvbnQtZW5kIHRvIHRoaXMgZnVuY3Rpb24uCiAKQEAgLTMwNiw2ICszMTUsMjEgQEAKIAogICAgU2VlIDpyZWY6YGRpZmZsaWItaW50ZXJmYWNlYCBmb3IgYSBtb3JlIGRldGFpbGVkIGV4YW1wbGUuCiAKKy4uIGZ1bmN0aW9uOjogZGlmZl9ieXRlcyhkZnVuYywgYSwgYiwgZnJvbWZpbGU9YicnLCB0b2ZpbGU9YicnLCBmcm9tZmlsZWRhdGU9YicnLCB0b2ZpbGVkYXRlPWInJywgbj0zLCBsaW5ldGVybT1iJ1xcbicpCisKKyAgIENvbXBhcmUgKmEqIGFuZCAqYiogKGxpc3RzIG9mIGJ5dGVzIG9iamVjdHMpIHVzaW5nICpkZnVuYyo7IHlpZWxkIGEKKyAgIHNlcXVlbmNlIG9mIGRlbHRhIGxpbmVzIChhbHNvIGJ5dGVzKSBpbiB0aGUgZm9ybWF0IHJldHVybmVkIGJ5ICpkZnVuYyouCisgICAqZGZ1bmMqIG11c3QgYmUgYSBjYWxsYWJsZSwgdHlwaWNhbGx5IGVpdGhlciA6ZnVuYzpgdW5pZmllZF9kaWZmYCBvcgorICAgOmZ1bmM6YGNvbnRleHRfZGlmZmAuCisKKyAgIEFsbG93cyB5b3UgdG8gY29tcGFyZSBkYXRhIHdpdGggdW5rbm93biBvciBpbmNvbnNpc3RlbnQgZW5jb2RpbmcuIEFsbAorICAgaW5wdXRzIGV4Y2VwdCAqbiogbXVzdCBiZSBieXRlcyBvYmplY3RzLCBub3Qgc3RyLiBXb3JrcyBieSBsb3NzbGVzc2x5CisgICBjb252ZXJ0aW5nIGFsbCBpbnB1dHMgKGV4Y2VwdCAqbiopIHRvIHN0ciwgYW5kIGNhbGxpbmcgYGBkZnVuYyhhLCBiLAorICAgZnJvbWZpbGUsIHRvZmlsZSwgZnJvbWZpbGVkYXRlLCB0b2ZpbGVkYXRlLCBuLCBsaW5ldGVybSlgYC4gVGhlIG91dHB1dCBvZgorICAgKmRmdW5jKiBpcyB0aGVuIGNvbnZlcnRlZCBiYWNrIHRvIGJ5dGVzLCBzbyB0aGUgZGVsdGEgbGluZXMgdGhhdCB5b3UKKyAgIHJlY2VpdmUgaGF2ZSB0aGUgc2FtZSB1bmtub3duL2luY29uc2lzdGVudCBlbmNvZGluZ3MgYXMgKmEqIGFuZCAqYiouCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAuLiBmdW5jdGlvbjo6IElTX0xJTkVfSlVOSyhsaW5lKQogCkBAIC02MjIsNiArNjQ2LDEyIEBACiAgICBsZW5ndGggMSksIGFuZCByZXR1cm5zIHRydWUgaWYgdGhlIGNoYXJhY3RlciBpcyBqdW5rLiBUaGUgZGVmYXVsdCBpcyBgYE5vbmVgYCwKICAgIG1lYW5pbmcgdGhhdCBubyBjaGFyYWN0ZXIgaXMgY29uc2lkZXJlZCBqdW5rLgogCisgICBUaGVzZSBqdW5rLWZpbHRlcmluZyBmdW5jdGlvbnMgc3BlZWQgdXAgbWF0Y2hpbmcgdG8gZmluZAorICAgZGlmZmVyZW5jZXMgYW5kIGRvIG5vdCBjYXVzZSBhbnkgZGlmZmVyaW5nIGxpbmVzIG9yIGNoYXJhY3RlcnMgdG8KKyAgIGJlIGlnbm9yZWQuICBSZWFkIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUKKyAgIDptZXRoOmB+U2VxdWVuY2VNYXRjaGVyLmZpbmRfbG9uZ2VzdF9tYXRjaGAgbWV0aG9kJ3MgKmlzanVuayoKKyAgIHBhcmFtZXRlciBmb3IgYW4gZXhwbGFuYXRpb24uCisKICAgIDpjbGFzczpgRGlmZmVyYCBvYmplY3RzIGFyZSB1c2VkIChkZWx0YXMgZ2VuZXJhdGVkKSB2aWEgYSBzaW5nbGUgbWV0aG9kOgogCiAKQEAgLTcxMyw2NSArNzQzLDQgQEAKIEl0IGlzIGFsc28gY29udGFpbmVkIGluIHRoZSBQeXRob24gc291cmNlIGRpc3RyaWJ1dGlvbiwgYXMKIDpmaWxlOmBUb29scy9zY3JpcHRzL2RpZmYucHlgLgogCi0uLiB0ZXN0Y29kZTo6Ci0KLSAgICIiIiBDb21tYW5kIGxpbmUgaW50ZXJmYWNlIHRvIGRpZmZsaWIucHkgcHJvdmlkaW5nIGRpZmZzIGluIGZvdXIgZm9ybWF0czoKLQotICAgKiBuZGlmZjogICAgbGlzdHMgZXZlcnkgbGluZSBhbmQgaGlnaGxpZ2h0cyBpbnRlcmxpbmUgY2hhbmdlcy4KLSAgICogY29udGV4dDogIGhpZ2hsaWdodHMgY2x1c3RlcnMgb2YgY2hhbmdlcyBpbiBhIGJlZm9yZS9hZnRlciBmb3JtYXQuCi0gICAqIHVuaWZpZWQ6ICBoaWdobGlnaHRzIGNsdXN0ZXJzIG9mIGNoYW5nZXMgaW4gYW4gaW5saW5lIGZvcm1hdC4KLSAgICogaHRtbDogICAgIGdlbmVyYXRlcyBzaWRlIGJ5IHNpZGUgY29tcGFyaXNvbiB3aXRoIGNoYW5nZSBoaWdobGlnaHRzLgotCi0gICAiIiIKLQotICAgaW1wb3J0IHN5cywgb3MsIHRpbWUsIGRpZmZsaWIsIG9wdHBhcnNlCi0KLSAgIGRlZiBtYWluKCk6Ci0gICAgICAgICMgQ29uZmlndXJlIHRoZSBvcHRpb24gcGFyc2VyCi0gICAgICAgdXNhZ2UgPSAidXNhZ2U6ICVwcm9nIFtvcHRpb25zXSBmcm9tZmlsZSB0b2ZpbGUiCi0gICAgICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlKQotICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItYyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUHJvZHVjZSBhIGNvbnRleHQgZm9ybWF0IGRpZmYgKGRlZmF1bHQpJykKLSAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLXUiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1Byb2R1Y2UgYSB1bmlmaWVkIGZvcm1hdCBkaWZmJykKLSAgICAgICBobHAgPSAnUHJvZHVjZSBIVE1MIHNpZGUgYnkgc2lkZSBkaWZmIChjYW4gdXNlIC1jIGFuZCAtbCBpbiBjb25qdW5jdGlvbiknCi0gICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi1tIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwgaGVscD1obHApCi0gICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi1uIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdQcm9kdWNlIGEgbmRpZmYgZm9ybWF0IGRpZmYnKQotICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItbCIsICItLWxpbmVzIiwgdHlwZT0iaW50IiwgZGVmYXVsdD0zLAotICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1NldCBudW1iZXIgb2YgY29udGV4dCBsaW5lcyAoZGVmYXVsdCAzKScpCi0gICAgICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgICAgaWYgbGVuKGFyZ3MpID09IDA6Ci0gICAgICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICBpZiBsZW4oYXJncykgIT0gMjoKLSAgICAgICAgICAgcGFyc2VyLmVycm9yKCJuZWVkIHRvIHNwZWNpZnkgYm90aCBhIGZyb21maWxlIGFuZCB0b2ZpbGUiKQotCi0gICAgICAgbiA9IG9wdGlvbnMubGluZXMKLSAgICAgICBmcm9tZmlsZSwgdG9maWxlID0gYXJncyAjIGFzIHNwZWNpZmllZCBpbiB0aGUgdXNhZ2Ugc3RyaW5nCi0KLSAgICAgICAjIHdlJ3JlIHBhc3NpbmcgdGhlc2UgYXMgYXJndW1lbnRzIHRvIHRoZSBkaWZmIGZ1bmN0aW9uCi0gICAgICAgZnJvbWRhdGUgPSB0aW1lLmN0aW1lKG9zLnN0YXQoZnJvbWZpbGUpLnN0X210aW1lKQotICAgICAgIHRvZGF0ZSA9IHRpbWUuY3RpbWUob3Muc3RhdCh0b2ZpbGUpLnN0X210aW1lKQotICAgICAgIHdpdGggb3Blbihmcm9tZmlsZSkgYXMgZnJvbWYsIG9wZW4odG9maWxlKSBhcyB0b2Y6Ci0gICAgICAgICAgIGZyb21saW5lcywgdG9saW5lcyA9IGxpc3QoZnJvbWYpLCBsaXN0KHRvZikKLQotICAgICAgIGlmIG9wdGlvbnMudToKLSAgICAgICAgICAgZGlmZiA9IGRpZmZsaWIudW5pZmllZF9kaWZmKGZyb21saW5lcywgdG9saW5lcywgZnJvbWZpbGUsIHRvZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21kYXRlLCB0b2RhdGUsIG49bikKLSAgICAgICBlbGlmIG9wdGlvbnMubjoKLSAgICAgICAgICAgZGlmZiA9IGRpZmZsaWIubmRpZmYoZnJvbWxpbmVzLCB0b2xpbmVzKQotICAgICAgIGVsaWYgb3B0aW9ucy5tOgotICAgICAgICAgICBkaWZmID0gZGlmZmxpYi5IdG1sRGlmZigpLm1ha2VfZmlsZShmcm9tbGluZXMsIHRvbGluZXMsIGZyb21maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2ZpbGUsIGNvbnRleHQ9b3B0aW9ucy5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1saW5lcz1uKQotICAgICAgIGVsc2U6Ci0gICAgICAgICAgIGRpZmYgPSBkaWZmbGliLmNvbnRleHRfZGlmZihmcm9tbGluZXMsIHRvbGluZXMsIGZyb21maWxlLCB0b2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tZGF0ZSwgdG9kYXRlLCBuPW4pCi0KLSAgICAgICAjIHdlJ3JlIHVzaW5nIHdyaXRlbGluZXMgYmVjYXVzZSBkaWZmIGlzIGEgZ2VuZXJhdG9yCi0gICAgICAgc3lzLnN0ZG91dC53cml0ZWxpbmVzKGRpZmYpCi0KLSAgIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgICAgbWFpbigpCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uLy4uL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGlzLnJzdCBiL0RvYy9saWJyYXJ5L2Rpcy5yc3QKaW5kZXggMjczZmIyMC4uMWJjYjNhNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGlzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kaXMucnN0CkBAIC00OCw4ICs0OCw5IEBACiAKIC4uIGNsYXNzOjogQnl0ZWNvZGUoeCwgKiwgZmlyc3RfbGluZT1Ob25lLCBjdXJyZW50X29mZnNldD1Ob25lKQogCi0gICBBbmFseXNlIHRoZSBieXRlY29kZSBjb3JyZXNwb25kaW5nIHRvIGEgZnVuY3Rpb24sIG1ldGhvZCwgc3RyaW5nIG9mIHNvdXJjZQotICAgY29kZSwgb3IgYSBjb2RlIG9iamVjdCAoYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YGNvbXBpbGVgKS4KKworICAgQW5hbHlzZSB0aGUgYnl0ZWNvZGUgY29ycmVzcG9uZGluZyB0byBhIGZ1bmN0aW9uLCBnZW5lcmF0b3IsIG1ldGhvZCwgc3RyaW5nCisgICBvZiBzb3VyY2UgY29kZSwgb3IgYSBjb2RlIG9iamVjdCAoYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YGNvbXBpbGVgKS4KIAogICAgVGhpcyBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIG1hbnkgb2YgdGhlIGZ1bmN0aW9ucyBsaXN0ZWQgYmVsb3csIG1vc3QKICAgIG5vdGFibHkgOmZ1bmM6YGdldF9pbnN0cnVjdGlvbnNgLCBhcyBpdGVyYXRpbmcgb3ZlciBhIDpjbGFzczpgQnl0ZWNvZGVgCkBAIC0xMDksNyArMTEwLDcgQEAKIC4uIGZ1bmN0aW9uOjogY29kZV9pbmZvKHgpCiAKICAgIFJldHVybiBhIGZvcm1hdHRlZCBtdWx0aS1saW5lIHN0cmluZyB3aXRoIGRldGFpbGVkIGNvZGUgb2JqZWN0IGluZm9ybWF0aW9uCi0gICBmb3IgdGhlIHN1cHBsaWVkIGZ1bmN0aW9uLCBtZXRob2QsIHNvdXJjZSBjb2RlIHN0cmluZyBvciBjb2RlIG9iamVjdC4KKyAgIGZvciB0aGUgc3VwcGxpZWQgZnVuY3Rpb24sIGdlbmVyYXRvciwgbWV0aG9kLCBzb3VyY2UgY29kZSBzdHJpbmcgb3IgY29kZSBvYmplY3QuCiAKICAgIE5vdGUgdGhhdCB0aGUgZXhhY3QgY29udGVudHMgb2YgY29kZSBpbmZvIHN0cmluZ3MgYXJlIGhpZ2hseSBpbXBsZW1lbnRhdGlvbgogICAgZGVwZW5kZW50IGFuZCB0aGV5IG1heSBjaGFuZ2UgYXJiaXRyYXJpbHkgYWNyb3NzIFB5dGhvbiBWTXMgb3IgUHl0aG9uCkBAIC0xMzYsMTEgKzEzNywxMSBAQAogLi4gZnVuY3Rpb246OiBkaXMoeD1Ob25lLCAqLCBmaWxlPU5vbmUpCiAKICAgIERpc2Fzc2VtYmxlIHRoZSAqeCogb2JqZWN0LiAgKngqIGNhbiBkZW5vdGUgZWl0aGVyIGEgbW9kdWxlLCBhIGNsYXNzLCBhCi0gICBtZXRob2QsIGEgZnVuY3Rpb24sIGEgY29kZSBvYmplY3QsIGEgc3RyaW5nIG9mIHNvdXJjZSBjb2RlIG9yIGEgYnl0ZSBzZXF1ZW5jZQotICAgb2YgcmF3IGJ5dGVjb2RlLiAgRm9yIGEgbW9kdWxlLCBpdCBkaXNhc3NlbWJsZXMgYWxsIGZ1bmN0aW9ucy4gIEZvciBhIGNsYXNzLAotICAgaXQgZGlzYXNzZW1ibGVzIGFsbCBtZXRob2RzLiAgRm9yIGEgY29kZSBvYmplY3Qgb3Igc2VxdWVuY2Ugb2YgcmF3IGJ5dGVjb2RlLAotICAgaXQgcHJpbnRzIG9uZSBsaW5lIHBlciBieXRlY29kZSBpbnN0cnVjdGlvbi4gIFN0cmluZ3MgYXJlIGZpcnN0IGNvbXBpbGVkIHRvCi0gICBjb2RlIG9iamVjdHMgd2l0aCB0aGUgOmZ1bmM6YGNvbXBpbGVgIGJ1aWx0LWluIGZ1bmN0aW9uIGJlZm9yZSBiZWluZworICAgbWV0aG9kLCBhIGZ1bmN0aW9uLCBhIGdlbmVyYXRvciwgYSBjb2RlIG9iamVjdCwgYSBzdHJpbmcgb2Ygc291cmNlIGNvZGUgb3IKKyAgIGEgYnl0ZSBzZXF1ZW5jZSBvZiByYXcgYnl0ZWNvZGUuICBGb3IgYSBtb2R1bGUsIGl0IGRpc2Fzc2VtYmxlcyBhbGwgZnVuY3Rpb25zLgorICAgRm9yIGEgY2xhc3MsIGl0IGRpc2Fzc2VtYmxlcyBhbGwgbWV0aG9kcy4gIEZvciBhIGNvZGUgb2JqZWN0IG9yIHNlcXVlbmNlIG9mCisgICByYXcgYnl0ZWNvZGUsIGl0IHByaW50cyBvbmUgbGluZSBwZXIgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb24uICBTdHJpbmdzIGFyZSBmaXJzdAorICAgY29tcGlsZWQgdG8gY29kZSBvYmplY3RzIHdpdGggdGhlIDpmdW5jOmBjb21waWxlYCBidWlsdC1pbiBmdW5jdGlvbiBiZWZvcmUgYmVpbmcKICAgIGRpc2Fzc2VtYmxlZC4gIElmIG5vIG9iamVjdCBpcyBwcm92aWRlZCwgdGhpcyBmdW5jdGlvbiBkaXNhc3NlbWJsZXMgdGhlIGxhc3QKICAgIHRyYWNlYmFjay4KIApAQCAtMzQ1LDYgKzM0NiwxNCBAQAogICAgSW1wbGVtZW50cyBgYFRPUyA9IGl0ZXIoVE9TKWBgLgogCiAKKy4uIG9wY29kZTo6IEdFVF9ZSUVMRF9GUk9NX0lURVIKKworICAgSWYgYGBUT1NgYCBpcyBhIDp0ZXJtOmBnZW5lcmF0b3IgaXRlcmF0b3JgIG9yIDp0ZXJtOmBjb3JvdXRpbmVgIG9iamVjdAorICAgaXQgaXMgbGVmdCBhcyBpcy4gIE90aGVyd2lzZSwgaW1wbGVtZW50cyBgYFRPUyA9IGl0ZXIoVE9TKWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAqKkJpbmFyeSBvcGVyYXRpb25zKioKIAogQmluYXJ5IG9wZXJhdGlvbnMgcmVtb3ZlIHRoZSB0b3Agb2YgdGhlIHN0YWNrIChUT1MpIGFuZCB0aGUgc2Vjb25kIHRvcC1tb3N0CkBAIC0zNjEsNiArMzcwLDEzIEBACiAgICBJbXBsZW1lbnRzIGBgVE9TID0gVE9TMSAqIFRPU2BgLgogCiAKKy4uIG9wY29kZTo6IEJJTkFSWV9NQVRSSVhfTVVMVElQTFkKKworICAgSW1wbGVtZW50cyBgYFRPUyA9IFRPUzEgQCBUT1NgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gb3Bjb2RlOjogQklOQVJZX0ZMT09SX0RJVklERQogCiAgICBJbXBsZW1lbnRzIGBgVE9TID0gVE9TMSAvLyBUT1NgYC4KQEAgLTQzMyw2ICs0NDksMTMgQEAKICAgIEltcGxlbWVudHMgaW4tcGxhY2UgYGBUT1MgPSBUT1MxICogVE9TYGAuCiAKIAorLi4gb3Bjb2RlOjogSU5QTEFDRV9NQVRSSVhfTVVMVElQTFkKKworICAgSW1wbGVtZW50cyBpbi1wbGFjZSBgYFRPUyA9IFRPUzEgQCBUT1NgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gb3Bjb2RlOjogSU5QTEFDRV9GTE9PUl9ESVZJREUKIAogICAgSW1wbGVtZW50cyBpbi1wbGFjZSBgYFRPUyA9IFRPUzEgLy8gVE9TYGAuCkBAIC00OTMsNiArNTE2LDQwIEBACiAgICBJbXBsZW1lbnRzIGBgZGVsIFRPUzFbVE9TXWBgLgogCiAKKyoqQ29yb3V0aW5lIG9wY29kZXMqKgorCisuLiBvcGNvZGU6OiBHRVRfQVdBSVRBQkxFCisKKyAgIEltcGxlbWVudHMgYGBUT1MgPSBnZXRfYXdhaXRhYmxlKFRPUylgYCwgd2hlcmUgYGBnZXRfYXdhaXRhYmxlKG8pYGAKKyAgIHJldHVybnMgYGBvYGAgaWYgYGBvYGAgaXMgYSBjb3JvdXRpbmUgb2JqZWN0IG9yIGEgZ2VuZXJhdG9yIG9iamVjdCB3aXRoCisgICB0aGUgQ09fSVRFUkFCTEVfQ09ST1VUSU5FIGZsYWcsIG9yIHJlc29sdmVzCisgICBgYG8uX19hd2FpdF9fYGAuCisKKworLi4gb3Bjb2RlOjogR0VUX0FJVEVSCisKKyAgIEltcGxlbWVudHMgYGBUT1MgPSBnZXRfYXdhaXRhYmxlKFRPUy5fX2FpdGVyX18oKSlgYC4gIFNlZSBgYEdFVF9BV0FJVEFCTEVgYAorICAgZm9yIGRldGFpbHMgYWJvdXQgYGBnZXRfYXdhaXRhYmxlYGAKKworCisuLiBvcGNvZGU6OiBHRVRfQU5FWFQKKworICAgSW1wbGVtZW50cyBgYFBVU0goZ2V0X2F3YWl0YWJsZShUT1MuX19hbmV4dF9fKCkpKWBgLiAgU2VlIGBgR0VUX0FXQUlUQUJMRWBgCisgICBmb3IgZGV0YWlscyBhYm91dCBgYGdldF9hd2FpdGFibGVgYAorCisKKy4uIG9wY29kZTo6IEJFRk9SRV9BU1lOQ19XSVRICisKKyAgIFJlc29sdmVzIGBgX19hZW50ZXJfX2BgIGFuZCBgYF9fYWV4aXRfX2BgIGZyb20gdGhlIG9iamVjdCBvbiB0b3Agb2YgdGhlCisgICBzdGFjay4gIFB1c2hlcyBgYF9fYWV4aXRfX2BgIGFuZCByZXN1bHQgb2YgYGBfX2FlbnRlcl9fKClgYCB0byB0aGUgc3RhY2suCisKKworLi4gb3Bjb2RlOjogU0VUVVBfQVNZTkNfV0lUSAorCisgICBDcmVhdGVzIGEgbmV3IGZyYW1lIG9iamVjdC4KKworCisKICoqTWlzY2VsbGFuZW91cyBvcGNvZGVzKioKIAogLi4gb3Bjb2RlOjogUFJJTlRfRVhQUgpAQCAtNTk3LDcgKzY1NCw3IEBACiAgICA6b3Bjb2RlOmBVTlBBQ0tfU0VRVUVOQ0VgKS4KIAogCi0uLiBvcGNvZGU6OiBXSVRIX0NMRUFOVVAKKy4uIG9wY29kZTo6IFdJVEhfQ0xFQU5VUF9TVEFSVAogCiAgICBDbGVhbnMgdXAgdGhlIHN0YWNrIHdoZW4gYSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IGJsb2NrIGV4aXRzLiAgVE9TIGlzIHRoZQogICAgY29udGV4dCBtYW5hZ2VyJ3MgOm1ldGg6YF9fZXhpdF9fYCBib3VuZCBtZXRob2QuIEJlbG93IFRPUyBhcmUgMS0tMyB2YWx1ZXMKQEAgLTYwOSw3ICs2NjYsMTMgQEAKICAgICogKFNFQ09ORCwgVEhJUkQsIEZPVVJUSCkgPSBleGNfaW5mbygpCiAKICAgIEluIHRoZSBsYXN0IGNhc2UsIGBgVE9TKFNFQ09ORCwgVEhJUkQsIEZPVVJUSClgYCBpcyBjYWxsZWQsIG90aGVyd2lzZQotICAgYGBUT1MoTm9uZSwgTm9uZSwgTm9uZSlgYC4gIEluIGFkZGl0aW9uLCBUT1MgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGFjay4KKyAgIGBgVE9TKE5vbmUsIE5vbmUsIE5vbmUpYGAuICBQdXNoZXMgU0VDT05EIGFuZCByZXN1bHQgb2YgdGhlIGNhbGwKKyAgIHRvIHRoZSBzdGFjay4KKworCisuLiBvcGNvZGU6OiBXSVRIX0NMRUFOVVBfRklOSVNICisKKyAgIFBvcHMgZXhjZXB0aW9uIHR5cGUgYW5kIHJlc3VsdCBvZiAnZXhpdCcgZnVuY3Rpb24gY2FsbCBmcm9tIHRoZSBzdGFjay4KIAogICAgSWYgdGhlIHN0YWNrIHJlcHJlc2VudHMgYW4gZXhjZXB0aW9uLCAqYW5kKiB0aGUgZnVuY3Rpb24gY2FsbCByZXR1cm5zIGEKICAgICd0cnVlJyB2YWx1ZSwgdGhpcyBpbmZvcm1hdGlvbiBpcyAiemFwcGVkIiBhbmQgcmVwbGFjZWQgd2l0aCBhIHNpbmdsZQpAQCAtNzk1LDEwICs4NTgsNiBAQAogICAgUHVzaGVzIGEgdHJ5IGJsb2NrIGZyb20gYSB0cnktZXhjZXB0IGNsYXVzZSBvbnRvIHRoZSBibG9jayBzdGFjay4gKmRlbHRhKgogICAgcG9pbnRzIHRvIHRoZSBmaW5hbGx5IGJsb2NrLgogCi0uLiBvcGNvZGU6OiBTVE9SRV9NQVAKLQotICAgU3RvcmUgYSBrZXkgYW5kIHZhbHVlIHBhaXIgaW4gYSBkaWN0aW9uYXJ5LiAgUG9wcyB0aGUga2V5IGFuZCB2YWx1ZSB3aGlsZQotICAgbGVhdmluZyB0aGUgZGljdGlvbmFyeSBvbiB0aGUgc3RhY2suCiAKIC4uIG9wY29kZTo6IExPQURfRkFTVCAodmFyX251bSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGlzdHJpYnV0aW9uLnJzdCBiL0RvYy9saWJyYXJ5L2Rpc3RyaWJ1dGlvbi5yc3QKaW5kZXggYzQ5NTRkMS4uM2U2ZTg0YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGlzdHJpYnV0aW9uLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kaXN0cmlidXRpb24ucnN0CkBAIC0xMiwzICsxMiw0IEBACiAgICBkaXN0dXRpbHMucnN0CiAgICBlbnN1cmVwaXAucnN0CiAgICB2ZW52LnJzdAorICAgemlwYXBwLnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZG9jdGVzdC5yc3QgYi9Eb2MvbGlicmFyeS9kb2N0ZXN0LnJzdAppbmRleCBlYTZlMWI1Li45ZjdkMTJjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kb2N0ZXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9kb2N0ZXN0LnJzdApAQCAtMTA1MywxNSArMTA1Myw5IEBACiAKICAgIFRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgc2FtZSBzZWFyY2ggdGVjaG5pcXVlIGFzIDpmdW5jOmB0ZXN0bW9kYC4KIAotICAgLi4gbm90ZTo6Ci0gICAgICBVbmxpa2UgOmZ1bmM6YHRlc3Rtb2RgIGFuZCA6Y2xhc3M6YERvY1Rlc3RGaW5kZXJgLCB0aGlzIGZ1bmN0aW9uIHJhaXNlcwotICAgICAgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpZiAqbW9kdWxlKiBjb250YWlucyBubyBkb2NzdHJpbmdzLiAgWW91IGNhbiBwcmV2ZW50Ci0gICAgICB0aGlzIGVycm9yIGJ5IHBhc3NpbmcgYSA6Y2xhc3M6YERvY1Rlc3RGaW5kZXJgIGluc3RhbmNlIGFzIHRoZQotICAgICAgKnRlc3RfZmluZGVyKiBhcmd1bWVudCB3aXRoIGl0cyAqZXhjbHVkZV9lbXB0eSoga2V5d29yZCBhcmd1bWVudCBzZXQKLSAgICAgIHRvIGBgRmFsc2VgYDo6Ci0KLSAgICAgICAgID4+PiBmaW5kZXIgPSBkb2N0ZXN0LkRvY1Rlc3RGaW5kZXIoZXhjbHVkZV9lbXB0eT1GYWxzZSkKLSAgICAgICAgID4+PiBzdWl0ZSA9IGRvY3Rlc3QuRG9jVGVzdFN1aXRlKHRlc3RfZmluZGVyPWZpbmRlcikKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICA6ZnVuYzpgRG9jVGVzdFN1aXRlYCByZXR1cm5zIGFuIGVtcHR5IDpjbGFzczpgdW5pdHRlc3QuVGVzdFN1aXRlYCBpZiAqbW9kdWxlKgorICAgICAgY29udGFpbnMgbm8gZG9jc3RyaW5ncyBpbnN0ZWFkIG9mIHJhaXNpbmcgOmV4YzpgVmFsdWVFcnJvcmAuCiAKIAogVW5kZXIgdGhlIGNvdmVycywgOmZ1bmM6YERvY1Rlc3RTdWl0ZWAgY3JlYXRlcyBhIDpjbGFzczpgdW5pdHRlc3QuVGVzdFN1aXRlYCBvdXQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKaW5kZXggYWVlYTk0Mi4uYjkxZjI2ZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKQEAgLTU3OCw2ICs1NzgsMTUgQEAKICAgICAgIHdpbGwgYmUgKmZhaWxvYmoqLgogCiAKKyAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X2Rpc3Bvc2l0aW9uKCkKKworICAgICAgUmV0dXJuIHRoZSBsb3dlcmNhc2VkIHZhbHVlICh3aXRob3V0IHBhcmFtZXRlcnMpIG9mIHRoZSBtZXNzYWdlJ3MKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIgaWYgaXQgaGFzIG9uZSwgb3IgYGBOb25lYGAuICBUaGUKKyAgICAgIHBvc3NpYmxlIHZhbHVlcyBmb3IgdGhpcyBtZXRob2QgYXJlICppbmxpbmUqLCAqYXR0YWNobWVudCogb3IgYGBOb25lYGAKKyAgICAgIGlmIHRoZSBtZXNzYWdlIGZvbGxvd3MgOnJmYzpgMjE4M2AuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAgICAuLiBtZXRob2Q6OiB3YWxrKCkKIAogICAgICAgVGhlIDptZXRoOmB3YWxrYCBtZXRob2QgaXMgYW4gYWxsLXB1cnBvc2UgZ2VuZXJhdG9yIHdoaWNoIGNhbiBiZSB1c2VkIHRvCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0CmluZGV4IDFkNzAyMjUuLjY3ZDBhNjcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0CkBAIC0xOTUsNyArMTk1LDggQEAKICAgIHNldCBvZiB0aGUgdGV4dCBhbmQgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50IHRvIHRoZQogICAgOmNsYXNzOmB+ZW1haWwubWltZS5ub25tdWx0aXBhcnQuTUlNRU5vbk11bHRpcGFydGAgY29uc3RydWN0b3I7IGl0IGRlZmF1bHRzCiAgICB0byBgYHVzLWFzY2lpYGAgaWYgdGhlIHN0cmluZyBjb250YWlucyBvbmx5IGBgYXNjaWlgYCBjb2RlIHBvaW50cywgYW5kCi0gICBgYHV0Zi04YGAgb3RoZXJ3aXNlLgorICAgYGB1dGYtOGBgIG90aGVyd2lzZS4gIFRoZSAqX2NoYXJzZXQqIHBhcmFtZXRlciBhY2NlcHRzIGVpdGhlciBhIHN0cmluZyBvciBhCisgICA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlLgogCiAgICBVbmxlc3MgdGhlICpfY2hhcnNldCogYXJndW1lbnQgaXMgZXhwbGljaXRseSBzZXQgdG8gYGBOb25lYGAsIHRoZQogICAgTUlNRVRleHQgb2JqZWN0IGNyZWF0ZWQgd2lsbCBoYXZlIGJvdGggYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIKQEAgLTIwNiwzICsyMDcsNiBAQAogICAgYGBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYGAgaGVhZGVyLCBhZnRlciB3aGljaCBhIGBgc2V0X3BheWxvYWRgYCBjYWxsCiAgICB3aWxsIGF1dG9tYXRpY2FsbHkgZW5jb2RlIHRoZSBuZXcgcGF5bG9hZCAoYW5kIGFkZCBhIG5ldwogICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlcikuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAqX2NoYXJzZXQqIGFsc28gYWNjZXB0cyA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlcy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0CmluZGV4IGQ0ZTNmYzEuLjA0NWIxMTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwucG9saWN5LnJzdApAQCAtMTg3LDYgKzE4NywxOCBAQAogICAgICAgOmNvbnN0OmBGYWxzZWAgKHRoZSBkZWZhdWx0KSwgZGVmZWN0cyB3aWxsIGJlIHBhc3NlZCB0byB0aGUKICAgICAgIDptZXRoOmByZWdpc3Rlcl9kZWZlY3RgIG1ldGhvZC4KIAorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG1hbmdsZV9mcm9tXF8KKworICAgICAgSWYgOmNvbnN0OmBUcnVlYCwgbGluZXMgc3RhcnRpbmcgd2l0aCAqIkZyb20gIiogaW4gdGhlIGJvZHkgYXJlCisgICAgICBlc2NhcGVkIGJ5IHB1dHRpbmcgYSBgYD5gYCBpbiBmcm9udCBvZiB0aGVtLiBUaGlzIHBhcmFtZXRlciBpcyB1c2VkIHdoZW4KKyAgICAgIHRoZSBtZXNzYWdlIGlzIGJlaW5nIHNlcmlhbGl6ZWQgYnkgYSBnZW5lcmF0b3IuCisgICAgICBEZWZhdWx0OiA6Y29uc3Q6YEZhbHNlYC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAgICAgICBUaGUgKm1hbmdsZV9mcm9tXyogcGFyYW1ldGVyLgorCiAgICBUaGUgZm9sbG93aW5nIDpjbGFzczpgUG9saWN5YCBtZXRob2QgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGJ5IGNvZGUgdXNpbmcKICAgIHRoZSBlbWFpbCBsaWJyYXJ5IHRvIGNyZWF0ZSBwb2xpY3kgaW5zdGFuY2VzIHdpdGggY3VzdG9tIHNldHRpbmdzOgogCkBAIC0zMTksNiArMzMxLDEzIEBACiAgICA6Y29uc3Q6YGNvbXBhdDMyYCwgdGhhdCBpcyB1c2VkIGFzIHRoZSBkZWZhdWx0IHBvbGljeS4gIFRodXMgdGhlIGRlZmF1bHQKICAgIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGlzIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMy4yLgogCisgICBUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgaGF2ZSB2YWx1ZXMgdGhhdCBhcmUgZGlmZmVyZW50IGZyb20gdGhlCisgICA6Y2xhc3M6YFBvbGljeWAgZGVmYXVsdDoKKworICAgLi4gYXR0cmlidXRlOjogbWFuZ2xlX2Zyb21fCisKKyAgICAgIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgLgorCiAgICBUaGUgY2xhc3MgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlCiAgICBhYnN0cmFjdCBtZXRob2RzIG9mIDpjbGFzczpgUG9saWN5YDoKIApAQCAtMzU2LDYgKzM3NSwxNCBAQAogICAgICAgbGluZSBicmVha3MgYW5kIGFueSAoUkZDIGludmFsaWQpIGJpbmFyeSBkYXRhIGl0IG1heSBjb250YWluLgogCiAKK0FuIGluc3RhbmNlIG9mIDpjbGFzczpgQ29tcGF0MzJgIGlzIHByb3ZpZGVkIGFzIGEgbW9kdWxlIGNvbnN0YW50OgorCisuLiBkYXRhOjogY29tcGF0MzIKKworICAgQW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBDb21wYXQzMmAsIHByb3ZpZGluZyAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIHRoZQorICAgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgaW4gUHl0aG9uIDMuMi4KKworCiAuLiBub3RlOjoKIAogICAgVGhlIGRvY3VtZW50YXRpb24gYmVsb3cgZGVzY3JpYmVzIG5ldyBwb2xpY2llcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUKQEAgLTM3OCw2ICs0MDUsMTQgQEAKICAgIEluIGFkZGl0aW9uIHRvIHRoZSBzZXR0YWJsZSBhdHRyaWJ1dGVzIGxpc3RlZCBhYm92ZSB0aGF0IGFwcGx5IHRvIGFsbAogICAgcG9saWNpZXMsIHRoaXMgcG9saWN5IGFkZHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIGF0dHJpYnV0ZXM6CiAKKyAgIC4uIGF0dHJpYnV0ZTo6IHV0ZjgKKworICAgICAgSWYgYGBGYWxzZWBgLCBmb2xsb3cgOnJmYzpgNTMyMmAsIHN1cHBvcnRpbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4KKyAgICAgIGhlYWRlcnMgYnkgZW5jb2RpbmcgdGhlbSBhcyAiZW5jb2RlZCB3b3JkcyIuICBJZiBgYFRydWVgYCwgZm9sbG93CisgICAgICA6cmZjOmA2NTMyYCBhbmQgdXNlIGBgdXRmLThgYCBlbmNvZGluZyBmb3IgaGVhZGVycy4gIE1lc3NhZ2VzCisgICAgICBmb3JtYXR0ZWQgaW4gdGhpcyB3YXkgbWF5IGJlIHBhc3NlZCB0byBTTVRQIHNlcnZlcnMgdGhhdCBzdXBwb3J0CisgICAgICB0aGUgYGBTTVRQVVRGOGBgIGV4dGVuc2lvbiAoOnJmYzpgNjUzMWApLgorCiAgICAuLiBhdHRyaWJ1dGU6OiByZWZvbGRfc291cmNlCiAKICAgICAgIElmIHRoZSB2YWx1ZSBmb3IgYSBoZWFkZXIgaW4gdGhlIGBgTWVzc2FnZWBgIG9iamVjdCBvcmlnaW5hdGVkIGZyb20gYQpAQCAtNDk5LDYgKzUzNCwxNCBAQAogICAgTGlrZSBgYGRlZmF1bHRgYCwgYnV0IHdpdGggYGBsaW5lc2VwYGAgc2V0IHRvIGBgXHJcbmBgLCB3aGljaCBpcyBSRkMKICAgIGNvbXBsaWFudC4KIAorLi4gZGF0YTo6IFNNVFBVVEY4CisKKyAgIFRoZSBzYW1lIGFzIGBgU01UUGBgIGV4Y2VwdCB0aGF0IDphdHRyOmB+RW1haWxQb2xpY3kudXRmOGAgaXMgYGBUcnVlYGAuCisgICBVc2VmdWwgZm9yIHNlcmlhbGl6aW5nIG1lc3NhZ2VzIHRvIGEgbWVzc2FnZSBzdG9yZSB3aXRob3V0IHVzaW5nIGVuY29kZWQKKyAgIHdvcmRzIGluIHRoZSBoZWFkZXJzLiAgU2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgU01UUCB0cmFzbWlzc2lvbiBpZiB0aGUKKyAgIHNlbmRlciBvciByZWNpcGllbnQgYWRkcmVzc2VzIGhhdmUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgKHRoZQorICAgOm1ldGg6YHNtdHBsaWIuU01UUC5zZW5kX21lc3NhZ2VgIG1ldGhvZCBoYW5kbGVzIHRoaXMgYXV0b21hdGljYWxseSkuCisKIC4uIGRhdGE6OiBIVFRQCiAKICAgIFN1aXRhYmxlIGZvciBzZXJpYWxpemluZyBoZWFkZXJzIHdpdGggZm9yIHVzZSBpbiBIVFRQIHRyYWZmaWMuICBMaWtlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbnVtLnJzdCBiL0RvYy9saWJyYXJ5L2VudW0ucnN0CmluZGV4IDFjNzZlODcuLjgxZjk3YjMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VudW0ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VudW0ucnN0CkBAIC0zMTQsMTEgKzMxNCwxMSBAQAogICAgID4+PiBzdHIoTW9vZC5mdW5reSkKICAgICAnbXkgY3VzdG9tIHN0ciEgMScKIAotVGhlIHJ1bGVzIGZvciB3aGF0IGlzIGFsbG93ZWQgYXJlIGFzIGZvbGxvd3M6IF9zdW5kZXJfIG5hbWVzIChzdGFydGluZyBhbmQKLWVuZGluZyB3aXRoIGEgc2luZ2xlIHVuZGVyc2NvcmUpIGFyZSByZXNlcnZlZCBieSBlbnVtIGFuZCBjYW5ub3QgYmUgdXNlZDsKLWFsbCBvdGhlciBhdHRyaWJ1dGVzIGRlZmluZWQgd2l0aGluIGFuIGVudW1lcmF0aW9uIHdpbGwgYmVjb21lIG1lbWJlcnMgb2YgdGhpcwotZW51bWVyYXRpb24sIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiAqX19kdW5kZXJfXyogbmFtZXMgYW5kIGRlc2NyaXB0b3JzIChtZXRob2RzCi1hcmUgYWxzbyBkZXNjcmlwdG9ycykuCitUaGUgcnVsZXMgZm9yIHdoYXQgaXMgYWxsb3dlZCBhcmUgYXMgZm9sbG93czogbmFtZXMgdGhhdCBzdGFydCBhbmQgZW5kIHdpdGggYQord2l0aCBhIHNpbmdsZSB1bmRlcnNjb3JlIGFyZSByZXNlcnZlZCBieSBlbnVtIGFuZCBjYW5ub3QgYmUgdXNlZDsgYWxsIG90aGVyCithdHRyaWJ1dGVzIGRlZmluZWQgd2l0aGluIGFuIGVudW1lcmF0aW9uIHdpbGwgYmVjb21lIG1lbWJlcnMgb2YgdGhpcworZW51bWVyYXRpb24sIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBzcGVjaWFsIG1ldGhvZHMgKDptZXRoOmBfX3N0cl9fYCwKKzptZXRoOmBfX2FkZF9fYCwgZXRjLikgYW5kIGRlc2NyaXB0b3JzIChtZXRob2RzIGFyZSBhbHNvIGRlc2NyaXB0b3JzKS4KIAogTm90ZTogIGlmIHlvdXIgZW51bWVyYXRpb24gZGVmaW5lcyA6bWV0aDpgX19uZXdfX2AgYW5kL29yIDptZXRoOmBfX2luaXRfX2AgdGhlbgogd2hhdGV2ZXIgdmFsdWUocykgd2VyZSBnaXZlbiB0byB0aGUgZW51bSBtZW1iZXIgd2lsbCBiZSBwYXNzZWQgaW50byB0aG9zZQpAQCAtNDAwLDcgKzQwMCw4IEBACiB3aGl0ZXNwYWNlLXNlcGFyYXRlZCBzdHJpbmcgb2YgbmFtZXMsIGEgc2VxdWVuY2Ugb2YgbmFtZXMsIGEgc2VxdWVuY2Ugb2YKIDItdHVwbGVzIHdpdGgga2V5L3ZhbHVlIHBhaXJzLCBvciBhIG1hcHBpbmcgKGUuZy4gZGljdGlvbmFyeSkgb2YgbmFtZXMgdG8KIHZhbHVlcy4gIFRoZSBsYXN0IHR3byBvcHRpb25zIGVuYWJsZSBhc3NpZ25pbmcgYXJiaXRyYXJ5IHZhbHVlcyB0bwotZW51bWVyYXRpb25zOyB0aGUgb3RoZXJzIGF1dG8tYXNzaWduIGluY3JlYXNpbmcgaW50ZWdlcnMgc3RhcnRpbmcgd2l0aCAxLiAgQQorZW51bWVyYXRpb25zOyB0aGUgb3RoZXJzIGF1dG8tYXNzaWduIGluY3JlYXNpbmcgaW50ZWdlcnMgc3RhcnRpbmcgd2l0aCAxICh1c2UKK3RoZSBgYHN0YXJ0YGAgcGFyYW1ldGVyIHRvIHNwZWNpZnkgYSBkaWZmZXJlbnQgc3RhcnRpbmcgdmFsdWUpLiAgQQogbmV3IGNsYXNzIGRlcml2ZWQgZnJvbSA6Y2xhc3M6YEVudW1gIGlzIHJldHVybmVkLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBhYm92ZQogYXNzaWdubWVudCB0byA6Y2xhc3M6YEFuaW1hbGAgaXMgZXF1aXZhbGVudCB0bzo6CiAKQEAgLTQzOCwxMiArNDM5LDEyIEBACiAKIFRoZSBjb21wbGV0ZSBzaWduYXR1cmUgaXM6OgogCi0gICAgRW51bSh2YWx1ZT0nTmV3RW51bU5hbWUnLCBuYW1lcz08Li4uPiwgKiwgbW9kdWxlPScuLi4nLCBxdWFsbmFtZT0nLi4uJywgdHlwZT08bWl4ZWQtaW4gY2xhc3M+KQorICAgIEVudW0odmFsdWU9J05ld0VudW1OYW1lJywgbmFtZXM9PC4uLj4sICosIG1vZHVsZT0nLi4uJywgcXVhbG5hbWU9Jy4uLicsIHR5cGU9PG1peGVkLWluIGNsYXNzPiwgc3RhcnQ9MSkKIAogOnZhbHVlOiBXaGF0IHRoZSBuZXcgRW51bSBjbGFzcyB3aWxsIHJlY29yZCBhcyBpdHMgbmFtZS4KIAogOm5hbWVzOiBUaGUgRW51bSBtZW1iZXJzLiAgVGhpcyBjYW4gYmUgYSB3aGl0ZXNwYWNlIG9yIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmcKLSAgKHZhbHVlcyB3aWxsIHN0YXJ0IGF0IDEpOjoKKyAgKHZhbHVlcyB3aWxsIHN0YXJ0IGF0IDEgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQpOjoKIAogICAgICdyZWQgZ3JlZW4gYmx1ZScgfCAncmVkLGdyZWVuLGJsdWUnIHwgJ3JlZCwgZ3JlZW4sIGJsdWUnCiAKQEAgLTQ2NSw2ICs0NjYsMTEgQEAKIAogOnR5cGU6IHR5cGUgdG8gbWl4IGluIHRvIG5ldyBFbnVtIGNsYXNzLgogCis6c3RhcnQ6IG51bWJlciB0byBzdGFydCBjb3VudGluZyBhdCBpZiBvbmx5IG5hbWVzIGFyZSBwYXNzZWQgaW4uCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBUaGUgKnN0YXJ0KiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorCiAKIERlcml2ZWQgRW51bWVyYXRpb25zCiAtLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzI0LDE4ICs3MzAsMjQgQEAKIEZpbmVyIFBvaW50cwogXl5eXl5eXl5eXl5eCiAKLUVudW0gbWVtYmVycyBhcmUgaW5zdGFuY2VzIG9mIGFuIEVudW0gY2xhc3MsIGFuZCBldmVuIHRob3VnaCB0aGV5IGFyZQotYWNjZXNzaWJsZSBhcyBgRW51bUNsYXNzLm1lbWJlcmAsIHRoZXkgYXJlIG5vdCBhY2Nlc3NpYmxlIGRpcmVjdGx5IGZyb20KLXRoZSBtZW1iZXI6OgorOmNsYXNzOmBFbnVtYCBtZW1iZXJzIGFyZSBpbnN0YW5jZXMgb2YgYW4gOmNsYXNzOmBFbnVtYCBjbGFzcywgYW5kIGV2ZW4KK3Rob3VnaCB0aGV5IGFyZSBhY2Nlc3NpYmxlIGFzIGBFbnVtQ2xhc3MubWVtYmVyYCwgdGhleSBzaG91bGQgbm90IGJlIGFjY2Vzc2VkCitkaXJlY3RseSBmcm9tIHRoZSBtZW1iZXIgYXMgdGhhdCBsb29rdXAgbWF5IGZhaWwgb3IsIHdvcnNlLCByZXR1cm4gc29tZXRoaW5nCitiZXNpZGVzIHRoZSA6Y2xhc3M6YEVudW1gIG1lbWJlciB5b3UgbG9va2luZyBmb3I6OgogCi0gICAgPj4+IENvbG9yLnJlZAotICAgIDxDb2xvci5yZWQ6IDE+Ci0gICAgPj4+IENvbG9yLnJlZC5ibHVlCi0gICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgID4+PiBjbGFzcyBGaWVsZFR5cGVzKEVudW0pOgorICAgIC4uLiAgICAgbmFtZSA9IDAKKyAgICAuLi4gICAgIHZhbHVlID0gMQorICAgIC4uLiAgICAgc2l6ZSA9IDIKICAgICAuLi4KLSAgICBBdHRyaWJ1dGVFcnJvcjogJ0NvbG9yJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnYmx1ZScKKyAgICA+Pj4gRmllbGRUeXBlcy52YWx1ZS5zaXplCisgICAgPEZpZWxkVHlwZXMuc2l6ZTogMj4KKyAgICA+Pj4gRmllbGRUeXBlcy5zaXplLnZhbHVlCisgICAgMgogCi1MaWtld2lzZSwgdGhlIDphdHRyOmBfX21lbWJlcnNfX2AgaXMgb25seSBhdmFpbGFibGUgb24gdGhlIGNsYXNzLgorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKworVGhlIDphdHRyOmBfX21lbWJlcnNfX2AgYXR0cmlidXRlIGlzIG9ubHkgYXZhaWxhYmxlIG9uIHRoZSBjbGFzcy4KIAogSWYgeW91IGdpdmUgeW91ciA6Y2xhc3M6YEVudW1gIHN1YmNsYXNzIGV4dHJhIG1ldGhvZHMsIGxpa2UgdGhlIGBQbGFuZXRgXwogY2xhc3MgYWJvdmUsIHRob3NlIG1ldGhvZHMgd2lsbCBzaG93IHVwIGluIGEgOmZ1bmM6YGRpcmAgb2YgdGhlIG1lbWJlciwKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Vycm5vLnJzdCBiL0RvYy9saWJyYXJ5L2Vycm5vLnJzdAppbmRleCBkMjE2M2I2Li4yMmE1Y2JjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lcnJuby5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZXJybm8ucnN0CkBAIC00MSw3ICs0MSwxMCBAQAogCiAuLiBkYXRhOjogRUlOVFIKIAotICAgSW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwKKyAgIEludGVycnVwdGVkIHN5c3RlbSBjYWxsLgorCisgICAuLiBzZWVhbHNvOjoKKyAgICAgIFRoaXMgZXJyb3IgaXMgbWFwcGVkIHRvIHRoZSBleGNlcHRpb24gOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCiAKIAogLi4gZGF0YTo6IEVJTwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAppbmRleCBlZjM5ZTZjLi5iYTYxMjJlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdApAQCAtMTYyLDcgKzE2Miw4IEBACiAKIC4uIGV4Y2VwdGlvbjo6IEdlbmVyYXRvckV4aXQKIAotICAgUmFpc2VkIHdoZW4gYSA6dGVybTpgZ2VuZXJhdG9yYFwncyA6bWV0aDpgY2xvc2VgIG1ldGhvZCBpcyBjYWxsZWQuICBJdAorICAgUmFpc2VkIHdoZW4gYSA6dGVybTpgZ2VuZXJhdG9yYCBvciA6dGVybTpgY29yb3V0aW5lYCBpcyBjbG9zZWQ7CisgICBzZWUgOm1ldGg6YGdlbmVyYXRvci5jbG9zZWAgYW5kIDptZXRoOmBjb3JvdXRpbmUuY2xvc2VgLiAgSXQKICAgIGRpcmVjdGx5IGluaGVyaXRzIGZyb20gOmV4YzpgQmFzZUV4Y2VwdGlvbmAgaW5zdGVhZCBvZiA6ZXhjOmBFeGNlcHRpb25gIHNpbmNlCiAgICBpdCBpcyB0ZWNobmljYWxseSBub3QgYW4gZXJyb3IuCiAKQEAgLTMwOCw2ICszMDksMTYgQEAKICAgIGhhbmRsaW5nIGluIEMsIG1vc3QgZmxvYXRpbmcgcG9pbnQgb3BlcmF0aW9ucyBhcmUgbm90IGNoZWNrZWQuCiAKIAorLi4gZXhjZXB0aW9uOjogUmVjdXJzaW9uRXJyb3IKKworICAgVGhpcyBleGNlcHRpb24gaXMgZGVyaXZlZCBmcm9tIDpleGM6YFJ1bnRpbWVFcnJvcmAuICBJdCBpcyByYWlzZWQgd2hlbiB0aGUKKyAgIGludGVycHJldGVyIGRldGVjdHMgdGhhdCB0aGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGggKHNlZQorICAgOmZ1bmM6YHN5cy5nZXRyZWN1cnNpb25saW1pdGApIGlzIGV4Y2VlZGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIFByZXZpb3VzbHksIGEgcGxhaW4gOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkLgorCisKIC4uIGV4Y2VwdGlvbjo6IFJlZmVyZW5jZUVycm9yCiAKICAgIFRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIGEgd2VhayByZWZlcmVuY2UgcHJveHksIGNyZWF0ZWQgYnkgdGhlCkBAIC0zMzMsMTQgKzM0NCwzMCBAQAogICAgZ2l2ZW4gYXMgYW4gYXJndW1lbnQgd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIGV4Y2VwdGlvbiwgYW5kIGRlZmF1bHRzCiAgICB0byA6Y29uc3Q6YE5vbmVgLgogCi0gICBXaGVuIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIHJldHVybnMsIGEgbmV3IDpleGM6YFN0b3BJdGVyYXRpb25gIGluc3RhbmNlIGlzCisgICBXaGVuIGEgOnRlcm06YGdlbmVyYXRvcmAgb3IgOnRlcm06YGNvcm91dGluZWAgZnVuY3Rpb24KKyAgIHJldHVybnMsIGEgbmV3IDpleGM6YFN0b3BJdGVyYXRpb25gIGluc3RhbmNlIGlzCiAgICByYWlzZWQsIGFuZCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlCiAgICA6YXR0cjpgdmFsdWVgIHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3Igb2YgdGhlIGV4Y2VwdGlvbi4KIAorICAgSWYgYSBnZW5lcmF0b3IgZnVuY3Rpb24gZGVmaW5lZCBpbiB0aGUgcHJlc2VuY2Ugb2YgYSBgYGZyb20gX19mdXR1cmVfXworICAgaW1wb3J0IGdlbmVyYXRvcl9zdG9wYGAgZGlyZWN0aXZlIHJhaXNlcyA6ZXhjOmBTdG9wSXRlcmF0aW9uYCwgaXQgd2lsbCBiZQorICAgY29udmVydGVkIGludG8gYSA6ZXhjOmBSdW50aW1lRXJyb3JgIChyZXRhaW5pbmcgdGhlIDpleGM6YFN0b3BJdGVyYXRpb25gCisgICBhcyB0aGUgbmV3IGV4Y2VwdGlvbidzIGNhdXNlKS4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIEFkZGVkIGBgdmFsdWVgYCBhdHRyaWJ1dGUgYW5kIHRoZSBhYmlsaXR5IGZvciBnZW5lcmF0b3IgZnVuY3Rpb25zIHRvCiAgICAgICB1c2UgaXQgdG8gcmV0dXJuIGEgdmFsdWUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJbnRyb2R1Y2VkIHRoZSBSdW50aW1lRXJyb3IgdHJhbnNmb3JtYXRpb24uCisKKy4uIGV4Y2VwdGlvbjo6IFN0b3BBc3luY0l0ZXJhdGlvbgorCisgICBNdXN0IGJlIHJhaXNlZCBieSA6bWV0aDpgX19hbmV4dF9fYCBtZXRob2Qgb2YgYW4KKyAgIDp0ZXJtOmBhc3luY2hyb25vdXMgaXRlcmF0b3JgIG9iamVjdCB0byBzdG9wIHRoZSBpdGVyYXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAuLiBleGNlcHRpb246OiBTeW50YXhFcnJvcgogCiAgICBSYWlzZWQgd2hlbiB0aGUgcGFyc2VyIGVuY291bnRlcnMgYSBzeW50YXggZXJyb3IuICBUaGlzIG1heSBvY2N1ciBpbiBhbgpAQCAtNTYzLDcgKzU5MCwxMiBAQAogLi4gZXhjZXB0aW9uOjogSW50ZXJydXB0ZWRFcnJvcgogCiAgICBSYWlzZWQgd2hlbiBhIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGJ5IGFuIGluY29taW5nIHNpZ25hbC4KLSAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVJTlRSYGAuCisgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgOnB5OmRhdGE6YH5lcnJuby5FSU5UUmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBQeXRob24gbm93IHJldHJpZXMgc3lzdGVtIGNhbGxzIHdoZW4gYSBzeXNjYWxsIGlzIGludGVycnVwdGVkIGJ5IGEKKyAgICAgIHNpZ25hbCwgZXhjZXB0IGlmIHRoZSBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4gZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YAorICAgICAgZm9yIHRoZSByYXRpb25hbGUpLCBpbnN0ZWFkIG9mIHJhaXNpbmcgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCiAKIC4uIGV4Y2VwdGlvbjo6IElzQURpcmVjdG9yeUVycm9yCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QgYi9Eb2MvbGlicmFyeS9mYXVsdGhhbmRsZXIucnN0CmluZGV4IGViMjAxNmEuLjNhNWJhZGQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdApAQCAtNDcsNiArNDcsOSBAQAogICAgRHVtcCB0aGUgdHJhY2ViYWNrcyBvZiBhbGwgdGhyZWFkcyBpbnRvICpmaWxlKi4gSWYgKmFsbF90aHJlYWRzKiBpcwogICAgYGBGYWxzZWBgLCBkdW1wIG9ubHkgdGhlIGN1cnJlbnQgdGhyZWFkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcGFzc2luZyBmaWxlIGRlc2NyaXB0b3IgdG8gdGhpcyBmdW5jdGlvbi4KKwogCiBGYXVsdCBoYW5kbGVyIHN0YXRlCiAtLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01OSw2ICs2MiwxMiBAQAogICAgcHJvZHVjZSB0cmFjZWJhY2tzIGZvciBldmVyeSBydW5uaW5nIHRocmVhZC4gT3RoZXJ3aXNlLCBkdW1wIG9ubHkgdGhlIGN1cnJlbnQKICAgIHRocmVhZC4KIAorICAgVGhlICpmaWxlKiBtdXN0IGJlIGtlcHQgb3BlbiB1bnRpbCB0aGUgZmF1bHQgaGFuZGxlciBpcyBkaXNhYmxlZDogc2VlCisgICA6cmVmOmBpc3N1ZSB3aXRoIGZpbGUgZGVzY3JpcHRvcnMgPGZhdWx0aGFuZGxlci1mZD5gLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcGFzc2luZyBmaWxlIGRlc2NyaXB0b3IgdG8gdGhpcyBmdW5jdGlvbi4KKwogLi4gZnVuY3Rpb246OiBkaXNhYmxlKCkKIAogICAgRGlzYWJsZSB0aGUgZmF1bHQgaGFuZGxlcjogdW5pbnN0YWxsIHRoZSBzaWduYWwgaGFuZGxlcnMgaW5zdGFsbGVkIGJ5CkBAIC04Miw5ICs5MSwxNiBAQAogICAgY2FsbCByZXBsYWNlcyBwcmV2aW91cyBwYXJhbWV0ZXJzIGFuZCByZXNldHMgdGhlIHRpbWVvdXQuIFRoZSB0aW1lciBoYXMgYQogICAgc3ViLXNlY29uZCByZXNvbHV0aW9uLgogCisgICBUaGUgKmZpbGUqIG11c3QgYmUga2VwdCBvcGVuIHVudGlsIHRoZSB0cmFjZWJhY2sgaXMgZHVtcGVkIG9yCisgICA6ZnVuYzpgY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyYCBpcyBjYWxsZWQ6IHNlZSA6cmVmOmBpc3N1ZSB3aXRoIGZpbGUKKyAgIGRlc2NyaXB0b3JzIDxmYXVsdGhhbmRsZXItZmQ+YC4KKwogICAgVGhpcyBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCB1c2luZyBhIHdhdGNoZG9nIHRocmVhZCBhbmQgdGhlcmVmb3JlIGlzIG5vdAogICAgYXZhaWxhYmxlIGlmIFB5dGhvbiBpcyBjb21waWxlZCB3aXRoIHRocmVhZHMgZGlzYWJsZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5nIGZpbGUgZGVzY3JpcHRvciB0byB0aGlzIGZ1bmN0aW9uLgorCiAuLiBmdW5jdGlvbjo6IGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpCiAKICAgIENhbmNlbCB0aGUgbGFzdCBjYWxsIHRvIDpmdW5jOmBkdW1wX3RyYWNlYmFja19sYXRlcmAuCkBAIC05OSw4ICsxMTUsMTQgQEAKICAgIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMsIG9yIG9mIHRoZSBjdXJyZW50IHRocmVhZCBpZiAqYWxsX3RocmVhZHMqIGlzCiAgICBgYEZhbHNlYGAsIGludG8gKmZpbGUqLiBDYWxsIHRoZSBwcmV2aW91cyBoYW5kbGVyIGlmIGNoYWluIGlzIGBgVHJ1ZWBgLgogCisgICBUaGUgKmZpbGUqIG11c3QgYmUga2VwdCBvcGVuIHVudGlsIHRoZSBzaWduYWwgaXMgdW5yZWdpc3RlcmVkIGJ5CisgICA6ZnVuYzpgdW5yZWdpc3RlcmA6IHNlZSA6cmVmOmBpc3N1ZSB3aXRoIGZpbGUgZGVzY3JpcHRvcnMgPGZhdWx0aGFuZGxlci1mZD5gLgorCiAgICBOb3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5nIGZpbGUgZGVzY3JpcHRvciB0byB0aGlzIGZ1bmN0aW9uLgorCiAuLiBmdW5jdGlvbjo6IHVucmVnaXN0ZXIoc2lnbnVtKQogCiAgICBVbnJlZ2lzdGVyIGEgdXNlciBzaWduYWw6IHVuaW5zdGFsbCB0aGUgaGFuZGxlciBvZiB0aGUgKnNpZ251bSogc2lnbmFsCkBAIC0xMTAsNiArMTMyLDggQEAKICAgIE5vdCBhdmFpbGFibGUgb24gV2luZG93cy4KIAogCisuLiBfZmF1bHRoYW5kbGVyLWZkOgorCiBJc3N1ZSB3aXRoIGZpbGUgZGVzY3JpcHRvcnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mY250bC5yc3QgYi9Eb2MvbGlicmFyeS9mY250bC5yc3QKaW5kZXggYjc5OGYyMi4uZjhiYjgzNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZmNudGwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZjbnRsLnJzdApAQCAtMjgsNDEgKzI4LDQxIEBACiBUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CiAKIAotLi4gZnVuY3Rpb246OiBmY250bChmZCwgb3BbLCBhcmddKQorLi4gZnVuY3Rpb246OiBmY250bChmZCwgY21kLCBhcmc9MCkKIAotICAgUGVyZm9ybSB0aGUgb3BlcmF0aW9uICpvcCogb24gZmlsZSBkZXNjcmlwdG9yICpmZCogKGZpbGUgb2JqZWN0cyBwcm92aWRpbmcKKyAgIFBlcmZvcm0gdGhlIG9wZXJhdGlvbiAqY21kKiBvbiBmaWxlIGRlc2NyaXB0b3IgKmZkKiAoZmlsZSBvYmplY3RzIHByb3ZpZGluZwogICAgYSA6bWV0aDpgfmlvLklPQmFzZS5maWxlbm9gIG1ldGhvZCBhcmUgYWNjZXB0ZWQgYXMgd2VsbCkuICBUaGUgdmFsdWVzIHVzZWQKLSAgIGZvciAqb3AqIGFyZSBvcGVyYXRpbmcgc3lzdGVtIGRlcGVuZGVudCwgYW5kIGFyZSBhdmFpbGFibGUgYXMgY29uc3RhbnRzCisgICBmb3IgKmNtZCogYXJlIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50LCBhbmQgYXJlIGF2YWlsYWJsZSBhcyBjb25zdGFudHMKICAgIGluIHRoZSA6bW9kOmBmY250bGAgbW9kdWxlLCB1c2luZyB0aGUgc2FtZSBuYW1lcyBhcyB1c2VkIGluIHRoZSByZWxldmFudCBDCi0gICBoZWFkZXIgZmlsZXMuICBUaGUgYXJndW1lbnQgKmFyZyogaXMgb3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byB0aGUgaW50ZWdlcgotICAgdmFsdWUgYGAwYGAuICBXaGVuIHByZXNlbnQsIGl0IGNhbiBlaXRoZXIgYmUgYW4gaW50ZWdlciB2YWx1ZSwgb3IgYSBzdHJpbmcuCi0gICBXaXRoIHRoZSBhcmd1bWVudCBtaXNzaW5nIG9yIGFuIGludGVnZXIgdmFsdWUsIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcyBmdW5jdGlvbgotICAgaXMgdGhlIGludGVnZXIgcmV0dXJuIHZhbHVlIG9mIHRoZSBDIDpjOmZ1bmM6YGZjbnRsYCBjYWxsLiAgV2hlbiB0aGUgYXJndW1lbnQgaXMKLSAgIGEgc3RyaW5nIGl0IHJlcHJlc2VudHMgYSBiaW5hcnkgc3RydWN0dXJlLCBlLmcuIGNyZWF0ZWQgYnkgOmZ1bmM6YHN0cnVjdC5wYWNrYC4KLSAgIFRoZSBiaW5hcnkgZGF0YSBpcyBjb3BpZWQgdG8gYSBidWZmZXIgd2hvc2UgYWRkcmVzcyBpcyBwYXNzZWQgdG8gdGhlIEMKLSAgIDpjOmZ1bmM6YGZjbnRsYCBjYWxsLiAgVGhlIHJldHVybiB2YWx1ZSBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCBpcyB0aGUgY29udGVudHMKLSAgIG9mIHRoZSBidWZmZXIsIGNvbnZlcnRlZCB0byBhIHN0cmluZyBvYmplY3QuICBUaGUgbGVuZ3RoIG9mIHRoZSByZXR1cm5lZCBzdHJpbmcKLSAgIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlIGxlbmd0aCBvZiB0aGUgKmFyZyogYXJndW1lbnQuICBUaGlzIGlzIGxpbWl0ZWQgdG8gMTAyNAotICAgYnl0ZXMuICBJZiB0aGUgaW5mb3JtYXRpb24gcmV0dXJuZWQgaW4gdGhlIGJ1ZmZlciBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpcwotICAgbGFyZ2VyIHRoYW4gMTAyNCBieXRlcywgdGhpcyBpcyBtb3N0IGxpa2VseSB0byByZXN1bHQgaW4gYSBzZWdtZW50YXRpb24KLSAgIHZpb2xhdGlvbiBvciBhIG1vcmUgc3VidGxlIGRhdGEgY29ycnVwdGlvbi4KKyAgIGhlYWRlciBmaWxlcy4gVGhlIGFyZ3VtZW50ICphcmcqIGNhbiBlaXRoZXIgYmUgYW4gaW50ZWdlciB2YWx1ZSwgb3IgYQorICAgOmNsYXNzOmBieXRlc2Agb2JqZWN0LiBXaXRoIGFuIGludGVnZXIgdmFsdWUsIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcworICAgZnVuY3Rpb24gaXMgdGhlIGludGVnZXIgcmV0dXJuIHZhbHVlIG9mIHRoZSBDIDpjOmZ1bmM6YGZjbnRsYCBjYWxsLiAgV2hlbgorICAgdGhlIGFyZ3VtZW50IGlzIGJ5dGVzIGl0IHJlcHJlc2VudHMgYSBiaW5hcnkgc3RydWN0dXJlLCBlLmcuIGNyZWF0ZWQgYnkKKyAgIDpmdW5jOmBzdHJ1Y3QucGFja2AuIFRoZSBiaW5hcnkgZGF0YSBpcyBjb3BpZWQgdG8gYSBidWZmZXIgd2hvc2UgYWRkcmVzcyBpcworICAgcGFzc2VkIHRvIHRoZSBDIDpjOmZ1bmM6YGZjbnRsYCBjYWxsLiAgVGhlIHJldHVybiB2YWx1ZSBhZnRlciBhIHN1Y2Nlc3NmdWwKKyAgIGNhbGwgaXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBidWZmZXIsIGNvbnZlcnRlZCB0byBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4KKyAgIFRoZSBsZW5ndGggb2YgdGhlIHJldHVybmVkIG9iamVjdCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBsZW5ndGggb2YgdGhlCisgICAqYXJnKiBhcmd1bWVudC4gVGhpcyBpcyBsaW1pdGVkIHRvIDEwMjQgYnl0ZXMuIElmIHRoZSBpbmZvcm1hdGlvbiByZXR1cm5lZAorICAgaW4gdGhlIGJ1ZmZlciBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpcyBsYXJnZXIgdGhhbiAxMDI0IGJ5dGVzLCB0aGlzIGlzCisgICBtb3N0IGxpa2VseSB0byByZXN1bHQgaW4gYSBzZWdtZW50YXRpb24gdmlvbGF0aW9uIG9yIGEgbW9yZSBzdWJ0bGUgZGF0YQorICAgY29ycnVwdGlvbi4KIAogICAgSWYgdGhlIDpjOmZ1bmM6YGZjbnRsYCBmYWlscywgYW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkLgogCiAKLS4uIGZ1bmN0aW9uOjogaW9jdGwoZmQsIG9wWywgYXJnWywgbXV0YXRlX2ZsYWddXSkKKy4uIGZ1bmN0aW9uOjogaW9jdGwoZmQsIHJlcXVlc3QsIGFyZz0wLCBtdXRhdGVfZmxhZz1UcnVlKQogCiAgICBUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0byB0aGUgOmZ1bmM6YH5mY250bC5mY250bGAgZnVuY3Rpb24sIGV4Y2VwdAogICAgdGhhdCB0aGUgYXJndW1lbnQgaGFuZGxpbmcgaXMgZXZlbiBtb3JlIGNvbXBsaWNhdGVkLgogCi0gICBUaGUgb3AgcGFyYW1ldGVyIGlzIGxpbWl0ZWQgdG8gdmFsdWVzIHRoYXQgY2FuIGZpdCBpbiAzMi1iaXRzLgotICAgQWRkaXRpb25hbCBjb25zdGFudHMgb2YgaW50ZXJlc3QgZm9yIHVzZSBhcyB0aGUgKm9wKiBhcmd1bWVudCBjYW4gYmUKKyAgIFRoZSAqcmVxdWVzdCogcGFyYW1ldGVyIGlzIGxpbWl0ZWQgdG8gdmFsdWVzIHRoYXQgY2FuIGZpdCBpbiAzMi1iaXRzLgorICAgQWRkaXRpb25hbCBjb25zdGFudHMgb2YgaW50ZXJlc3QgZm9yIHVzZSBhcyB0aGUgKnJlcXVlc3QqIGFyZ3VtZW50IGNhbiBiZQogICAgZm91bmQgaW4gdGhlIDptb2Q6YHRlcm1pb3NgIG1vZHVsZSwgdW5kZXIgdGhlIHNhbWUgbmFtZXMgYXMgdXNlZCBpbgogICAgdGhlIHJlbGV2YW50IEMgaGVhZGVyIGZpbGVzLgogCi0gICBUaGUgcGFyYW1ldGVyICphcmcqIGNhbiBiZSBvbmUgb2YgYW4gaW50ZWdlciwgYWJzZW50ICh0cmVhdGVkIGlkZW50aWNhbGx5IHRvIHRoZQotICAgaW50ZWdlciBgYDBgYCksIGFuIG9iamVjdCBzdXBwb3J0aW5nIHRoZSByZWFkLW9ubHkgYnVmZmVyIGludGVyZmFjZSAobW9zdCBsaWtlbHkKLSAgIGEgcGxhaW4gUHl0aG9uIHN0cmluZykgb3IgYW4gb2JqZWN0IHN1cHBvcnRpbmcgdGhlIHJlYWQtd3JpdGUgYnVmZmVyIGludGVyZmFjZS4KKyAgIFRoZSBwYXJhbWV0ZXIgKmFyZyogY2FuIGJlIG9uZSBvZiBhbiBpbnRlZ2VyLCBhbiBvYmplY3Qgc3VwcG9ydGluZyB0aGUKKyAgIHJlYWQtb25seSBidWZmZXIgaW50ZXJmYWNlIChsaWtlIDpjbGFzczpgYnl0ZXNgKSBvciBhbiBvYmplY3Qgc3VwcG9ydGluZworICAgdGhlIHJlYWQtd3JpdGUgYnVmZmVyIGludGVyZmFjZSAobGlrZSA6Y2xhc3M6YGJ5dGVhcnJheWApLgogCiAgICBJbiBhbGwgYnV0IHRoZSBsYXN0IGNhc2UsIGJlaGF2aW91ciBpcyBhcyBmb3IgdGhlIDpmdW5jOmB+ZmNudGwuZmNudGxgCiAgICBmdW5jdGlvbi4KQEAgLTcyLDcgKzcyLDcgQEAKIAogICAgSWYgaXQgaXMgZmFsc2UsIHRoZSBidWZmZXIncyBtdXRhYmlsaXR5IGlzIGlnbm9yZWQgYW5kIGJlaGF2aW91ciBpcyBhcyBmb3IgYQogICAgcmVhZC1vbmx5IGJ1ZmZlciwgZXhjZXB0IHRoYXQgdGhlIDEwMjQgYnl0ZSBsaW1pdCBtZW50aW9uZWQgYWJvdmUgaXMgYXZvaWRlZCAtLQotICAgc28gbG9uZyBhcyB0aGUgYnVmZmVyIHlvdSBwYXNzIGlzIGFzIGxlYXN0IGFzIGxvbmcgYXMgd2hhdCB0aGUgb3BlcmF0aW5nIHN5c3RlbQorICAgc28gbG9uZyBhcyB0aGUgYnVmZmVyIHlvdSBwYXNzIGlzIGF0IGxlYXN0IGFzIGxvbmcgYXMgd2hhdCB0aGUgb3BlcmF0aW5nIHN5c3RlbQogICAgd2FudHMgdG8gcHV0IHRoZXJlLCB0aGluZ3Mgc2hvdWxkIHdvcmsuCiAKICAgIElmICptdXRhdGVfZmxhZyogaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLCB0aGVuIHRoZSBidWZmZXIgaXMgKGluIGVmZmVjdCkgcGFzc2VkCkBAIC05OSw5ICs5OSw5IEBACiAgICAgICBhcnJheSgnaCcsIFsxMzM0MV0pCiAKIAotLi4gZnVuY3Rpb246OiBmbG9jayhmZCwgb3ApCisuLiBmdW5jdGlvbjo6IGZsb2NrKGZkLCBvcGVyYXRpb24pCiAKLSAgIFBlcmZvcm0gdGhlIGxvY2sgb3BlcmF0aW9uICpvcCogb24gZmlsZSBkZXNjcmlwdG9yICpmZCogKGZpbGUgb2JqZWN0cyBwcm92aWRpbmcKKyAgIFBlcmZvcm0gdGhlIGxvY2sgb3BlcmF0aW9uICpvcGVyYXRpb24qIG9uIGZpbGUgZGVzY3JpcHRvciAqZmQqIChmaWxlIG9iamVjdHMgcHJvdmlkaW5nCiAgICBhIDptZXRoOmB+aW8uSU9CYXNlLmZpbGVub2AgbWV0aG9kIGFyZSBhY2NlcHRlZCBhcyB3ZWxsKS4gU2VlIHRoZSBVbml4IG1hbnVhbAogICAgOm1hbnBhZ2U6YGZsb2NrKDIpYCBmb3IgZGV0YWlscy4gIChPbiBzb21lIHN5c3RlbXMsIHRoaXMgZnVuY3Rpb24gaXMgZW11bGF0ZWQKICAgIHVzaW5nIDpjOmZ1bmM6YGZjbnRsYC4pCkBAIC0xMDksMTcgKzEwOSwxNyBAQAogICAgSWYgdGhlIDpjOmZ1bmM6YGZsb2NrYCBmYWlscywgYW4gOmV4YzpgSU9FcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KIAogCi0uLiBmdW5jdGlvbjo6IGxvY2tmKGZkLCBvcGVyYXRpb24sIFtsZW5ndGgsIFtzdGFydCwgW3doZW5jZV1dXSkKKy4uIGZ1bmN0aW9uOjogbG9ja2YoZmQsIGNtZCwgbGVuPTAsIHN0YXJ0PTAsIHdoZW5jZT0wKQogCiAgICBUaGlzIGlzIGVzc2VudGlhbGx5IGEgd3JhcHBlciBhcm91bmQgdGhlIDpmdW5jOmB+ZmNudGwuZmNudGxgIGxvY2tpbmcgY2FsbHMuCi0gICAqZmQqIGlzIHRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIGZpbGUgdG8gbG9jayBvciB1bmxvY2ssIGFuZCAqb3BlcmF0aW9uKgorICAgKmZkKiBpcyB0aGUgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGxvY2sgb3IgdW5sb2NrLCBhbmQgKmNtZCoKICAgIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKIAogICAgKiA6Y29uc3Q6YExPQ0tfVU5gIC0tIHVubG9jawogICAgKiA6Y29uc3Q6YExPQ0tfU0hgIC0tIGFjcXVpcmUgYSBzaGFyZWQgbG9jawogICAgKiA6Y29uc3Q6YExPQ0tfRVhgIC0tIGFjcXVpcmUgYW4gZXhjbHVzaXZlIGxvY2sKIAotICAgV2hlbiAqb3BlcmF0aW9uKiBpcyA6Y29uc3Q6YExPQ0tfU0hgIG9yIDpjb25zdDpgTE9DS19FWGAsIGl0IGNhbiBhbHNvIGJlCisgICBXaGVuICpjbWQqIGlzIDpjb25zdDpgTE9DS19TSGAgb3IgOmNvbnN0OmBMT0NLX0VYYCwgaXQgY2FuIGFsc28gYmUKICAgIGJpdHdpc2UgT1JlZCB3aXRoIDpjb25zdDpgTE9DS19OQmAgdG8gYXZvaWQgYmxvY2tpbmcgb24gbG9jayBhY3F1aXNpdGlvbi4KICAgIElmIDpjb25zdDpgTE9DS19OQmAgaXMgdXNlZCBhbmQgdGhlIGxvY2sgY2Fubm90IGJlIGFjcXVpcmVkLCBhbgogICAgOmV4YzpgT1NFcnJvcmAgd2lsbCBiZSByYWlzZWQgYW5kIHRoZSBleGNlcHRpb24gd2lsbCBoYXZlIGFuICplcnJubyoKQEAgLTEyOCw3ICsxMjgsNyBAQAogICAgc3lzdGVtcywgOmNvbnN0OmBMT0NLX0VYYCBjYW4gb25seSBiZSB1c2VkIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJzIHRvIGEKICAgIGZpbGUgb3BlbmVkIGZvciB3cml0aW5nLgogCi0gICAqbGVuZ3RoKiBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGxvY2ssICpzdGFydCogaXMgdGhlIGJ5dGUgb2Zmc2V0IGF0CisgICAqbGVuKiBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGxvY2ssICpzdGFydCogaXMgdGhlIGJ5dGUgb2Zmc2V0IGF0CiAgICB3aGljaCB0aGUgbG9jayBzdGFydHMsIHJlbGF0aXZlIHRvICp3aGVuY2UqLCBhbmQgKndoZW5jZSogaXMgYXMgd2l0aAogICAgOmZ1bmM6YGlvLklPQmFzZS5zZWVrYCwgc3BlY2lmaWNhbGx5OgogCkBAIC0xMzcsNyArMTM3LDcgQEAKICAgICogOmNvbnN0OmAyYCAtLSByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZSBmaWxlICg6ZGF0YTpgb3MuU0VFS19FTkRgKQogCiAgICBUaGUgZGVmYXVsdCBmb3IgKnN0YXJ0KiBpcyAwLCB3aGljaCBtZWFucyB0byBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLgotICAgVGhlIGRlZmF1bHQgZm9yICpsZW5ndGgqIGlzIDAgd2hpY2ggbWVhbnMgdG8gbG9jayB0byB0aGUgZW5kIG9mIHRoZSBmaWxlLiAgVGhlCisgICBUaGUgZGVmYXVsdCBmb3IgKmxlbiogaXMgMCB3aGljaCBtZWFucyB0byBsb2NrIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUuICBUaGUKICAgIGRlZmF1bHQgZm9yICp3aGVuY2UqIGlzIGFsc28gMC4KIAogRXhhbXBsZXMgKGFsbCBvbiBhIFNWUjQgY29tcGxpYW50IHN5c3RlbSk6OgpAQCAtMTUxLDkgKzE1MSw5IEBACiAgICBydiA9IGZjbnRsLmZjbnRsKGYsIGZjbnRsLkZfU0VUTEtXLCBsb2NrZGF0YSkKIAogTm90ZSB0aGF0IGluIHRoZSBmaXJzdCBleGFtcGxlIHRoZSByZXR1cm4gdmFsdWUgdmFyaWFibGUgKnJ2KiB3aWxsIGhvbGQgYW4KLWludGVnZXIgdmFsdWU7IGluIHRoZSBzZWNvbmQgZXhhbXBsZSBpdCB3aWxsIGhvbGQgYSBzdHJpbmcgdmFsdWUuICBUaGUgc3RydWN0dXJlCi1sYXktb3V0IGZvciB0aGUgKmxvY2tkYXRhKiB2YXJpYWJsZSBpcyBzeXN0ZW0gZGVwZW5kZW50IC0tLSB0aGVyZWZvcmUgdXNpbmcgdGhlCi06ZnVuYzpgZmxvY2tgIGNhbGwgbWF5IGJlIGJldHRlci4KK2ludGVnZXIgdmFsdWU7IGluIHRoZSBzZWNvbmQgZXhhbXBsZSBpdCB3aWxsIGhvbGQgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QuICBUaGUKK3N0cnVjdHVyZSBsYXktb3V0IGZvciB0aGUgKmxvY2tkYXRhKiB2YXJpYWJsZSBpcyBzeXN0ZW0gZGVwZW5kZW50IC0tLSB0aGVyZWZvcmUKK3VzaW5nIHRoZSA6ZnVuYzpgZmxvY2tgIGNhbGwgbWF5IGJlIGJldHRlci4KIAogCiAuLiBzZWVhbHNvOjoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Zvcm1hdHRlci5yc3QgYi9Eb2MvbGlicmFyeS9mb3JtYXR0ZXIucnN0CmluZGV4IDE4NDdhODAuLjhlOGUyMDEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Zvcm1hdHRlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZm9ybWF0dGVyLnJzdApAQCAtNiw4ICs2LDcgQEAKICAgIDpkZXByZWNhdGVkOgogCiAuLiBkZXByZWNhdGVkOjogMy40Ci0gICBEdWUgdG8gbGFjayBvZiB1c2FnZSwgdGhlIGZvcm1hdHRlciBtb2R1bGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBhbmQgaXMgc2xhdGVkCi0gICBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy42LgorICAgRHVlIHRvIGxhY2sgb2YgdXNhZ2UsIHRoZSBmb3JtYXR0ZXIgbW9kdWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQuCiAKIAogVGhpcyBtb2R1bGUgc3VwcG9ydHMgdHdvIGludGVyZmFjZSBkZWZpbml0aW9ucywgZWFjaCB3aXRoIG11bHRpcGxlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mcmFjdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvZnJhY3Rpb25zLnJzdAppbmRleCAzZDI1MjlkLi5kMjRmODBhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mcmFjdGlvbnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZyYWN0aW9ucy5yc3QKQEAgLTE3Miw2ICsxNzIsOSBAQAogICAgc2lnbiBhcyAqYiogaWYgKmIqIGlzIG5vbnplcm87IG90aGVyd2lzZSBpdCB0YWtlcyB0aGUgc2lnbiBvZiAqYSouICBgYGdjZCgwLAogICAgMClgYCByZXR1cm5zIGBgMGBgLgogCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBVc2UgOmZ1bmM6YG1hdGguZ2NkYCBpbnN0ZWFkLgorCiAKIC4uIHNlZWFsc286OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mdHBsaWIucnN0IGIvRG9jL2xpYnJhcnkvZnRwbGliLnJzdAppbmRleCBmMDZlNjc4Li42N2E2MDNiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mdHBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Z0cGxpYi5yc3QKQEAgLTMxNCw3ICszMTQsNyBAQAogCiAuLiBtZXRob2Q6OiBGVFAubWxzZChwYXRoPSIiLCBmYWN0cz1bXSkKIAotICAgTGlzdCBhIGRpcmVjdG9yeSBpbiBhIHN0YW5kYXJkaXplZCBmb3JtYXQgYnkgdXNpbmcgTUxTRCBjb21tYW5kCisgICBMaXN0IGEgZGlyZWN0b3J5IGluIGEgc3RhbmRhcmRpemVkIGZvcm1hdCBieSB1c2luZyBgYE1MU0RgYCBjb21tYW5kCiAgICAoOnJmYzpgMzY1OWApLiAgSWYgKnBhdGgqIGlzIG9taXR0ZWQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzIGFzc3VtZWQuCiAgICAqZmFjdHMqIGlzIGEgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgdHlwZSBvZiBpbmZvcm1hdGlvbiBkZXNpcmVkCiAgICAoZS5nLiBgYFsidHlwZSIsICJzaXplIiwgInBlcm0iXWBgKS4gIFJldHVybiBhIGdlbmVyYXRvciBvYmplY3QgeWllbGRpbmcgYQpAQCAtMzMzLDcgKzMzMyw3IEBACiAgICBkaXJlY3RvcnkpLiAgTXVsdGlwbGUgYXJndW1lbnRzIGNhbiBiZSB1c2VkIHRvIHBhc3Mgbm9uLXN0YW5kYXJkIG9wdGlvbnMgdG8KICAgIHRoZSBgYE5MU1RgYCBjb21tYW5kLgogCi0gICAuLiBkZXByZWNhdGVkOjogMy4zIHVzZSA6bWV0aDpgbWxzZGAgaW5zdGVhZC4KKyAgIC4uIG5vdGU6OiBJZiB5b3VyIHNlcnZlciBzdXBwb3J0cyB0aGUgY29tbWFuZCwgOm1ldGg6YG1sc2RgIG9mZmVycyBhIGJldHRlciBBUEkuCiAKIAogLi4gbWV0aG9kOjogRlRQLmRpcihhcmd1bWVudFssIC4uLl0pCkBAIC0zNDUsNyArMzQ1LDcgQEAKICAgIGFzIGEgKmNhbGxiYWNrKiBmdW5jdGlvbiBhcyBmb3IgOm1ldGg6YHJldHJsaW5lc2A7IHRoZSBkZWZhdWx0IHByaW50cyB0bwogICAgYGBzeXMuc3Rkb3V0YGAuICBUaGlzIG1ldGhvZCByZXR1cm5zIGBgTm9uZWBgLgogCi0gICAuLiBkZXByZWNhdGVkOjogMy4zIHVzZSA6bWV0aDpgbWxzZGAgaW5zdGVhZC4KKyAgIC4uIG5vdGU6OiBJZiB5b3VyIHNlcnZlciBzdXBwb3J0cyB0aGUgY29tbWFuZCwgOm1ldGg6YG1sc2RgIG9mZmVycyBhIGJldHRlciBBUEkuCiAKIAogLi4gbWV0aG9kOjogRlRQLnJlbmFtZShmcm9tbmFtZSwgdG9uYW1lKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QKaW5kZXggMjFhZWFmOS4uNmU5OGNmYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0CkBAIC0xNTYsMTEgKzE1NiwxMiBAQAogCiAuLiBmdW5jdGlvbjo6IGNocihpKQogCi0gICBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRpbmcgYSBjaGFyYWN0ZXIgd2hvc2UgVW5pY29kZSBjb2RlIHBvaW50IGlzIHRoZSBpbnRlZ2VyCi0gICAqaSouICBGb3IgZXhhbXBsZSwgYGBjaHIoOTcpYGAgcmV0dXJucyB0aGUgc3RyaW5nIGBgJ2EnYGAuIFRoaXMgaXMgdGhlCi0gICBpbnZlcnNlIG9mIDpmdW5jOmBvcmRgLiAgVGhlIHZhbGlkIHJhbmdlIGZvciB0aGUgYXJndW1lbnQgaXMgZnJvbSAwIHRocm91Z2gKLSAgIDEsMTE0LDExMSAoMHgxMEZGRkYgaW4gYmFzZSAxNikuICA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBpZiAqaSogaXMKLSAgIG91dHNpZGUgdGhhdCByYW5nZS4KKyAgIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGluZyBhIGNoYXJhY3RlciB3aG9zZSBVbmljb2RlIGNvZGUgcG9pbnQgaXMgdGhlCisgICBpbnRlZ2VyICppKi4gIEZvciBleGFtcGxlLCBgYGNocig5NylgYCByZXR1cm5zIHRoZSBzdHJpbmcgYGAnYSdgYCwgd2hpbGUKKyAgIGBgY2hyKDk1NylgYCByZXR1cm5zIHRoZSBzdHJpbmcgYGAnzr0nYGAuIFRoaXMgaXMgdGhlIGludmVyc2Ugb2YgOmZ1bmM6YG9yZGAuCisKKyAgIFRoZSB2YWxpZCByYW5nZSBmb3IgdGhlIGFyZ3VtZW50IGlzIGZyb20gMCB0aHJvdWdoIDEsMTE0LDExMSAoMHgxMEZGRkYgaW4KKyAgIGJhc2UgMTYpLiAgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYgKmkqIGlzIG91dHNpZGUgdGhhdCByYW5nZS4KIAogCiAuLiBmdW5jdGlvbjo6IGNsYXNzbWV0aG9kKGZ1bmN0aW9uKQpAQCAtOTcyLDkgKzk3MywxMSBAQAogICAgICBDaGFyYWN0ZXJzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGVuY29kaW5nIGFyZSByZXBsYWNlZCB3aXRoIHRoZQogICAgICBhcHByb3ByaWF0ZSBYTUwgY2hhcmFjdGVyIHJlZmVyZW5jZSBgYCYjbm5uO2BgLgogCi0gICAqIGBgJ2JhY2tzbGFzaHJlcGxhY2UnYGAgKGFsc28gb25seSBzdXBwb3J0ZWQgd2hlbiB3cml0aW5nKQotICAgICByZXBsYWNlcyB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzIHdpdGggUHl0aG9uJ3MgYmFja3NsYXNoZWQgZXNjYXBlCi0gICAgIHNlcXVlbmNlcy4KKyAgICogYGAnYmFja3NsYXNocmVwbGFjZSdgYCByZXBsYWNlcyBtYWxmb3JtZWQgZGF0YSBieSBQeXRob24ncyBiYWNrc2xhc2hlZAorICAgICBlc2NhcGUgc2VxdWVuY2VzLgorCisgICAqIGBgJ25hbWVyZXBsYWNlJ2BgIChhbHNvIG9ubHkgc3VwcG9ydGVkIHdoZW4gd3JpdGluZykKKyAgICAgcmVwbGFjZXMgdW5zdXBwb3J0ZWQgY2hhcmFjdGVycyB3aXRoIGBgXE57Li4ufWBgIGVzY2FwZSBzZXF1ZW5jZXMuCiAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogdW5pdmVyc2FsIG5ld2xpbmVzOyBvcGVuKCkgYnVpbHQtaW4gZnVuY3Rpb24KQEAgLTk5OSw4ICsxMDAyLDggQEAKIAogICAgSWYgKmNsb3NlZmQqIGlzIGBgRmFsc2VgYCBhbmQgYSBmaWxlIGRlc2NyaXB0b3IgcmF0aGVyIHRoYW4gYSBmaWxlbmFtZSB3YXMKICAgIGdpdmVuLCB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3Igd2lsbCBiZSBrZXB0IG9wZW4gd2hlbiB0aGUgZmlsZSBpcwotICAgY2xvc2VkLiAgSWYgYSBmaWxlbmFtZSBpcyBnaXZlbiAqY2xvc2VmZCogaGFzIG5vIGVmZmVjdCBhbmQgbXVzdCBiZSBgYFRydWVgYAotICAgKHRoZSBkZWZhdWx0KS4KKyAgIGNsb3NlZC4gIElmIGEgZmlsZW5hbWUgaXMgZ2l2ZW4gKmNsb3NlZmQqIG11c3QgYmUgYGBUcnVlYGAgKHRoZSBkZWZhdWx0KQorICAgb3RoZXJ3aXNlIGFuIGVycm9yIHdpbGwgYmUgcmFpc2VkLgogCiAgICBBIGN1c3RvbSBvcGVuZXIgY2FuIGJlIHVzZWQgYnkgcGFzc2luZyBhIGNhbGxhYmxlIGFzICpvcGVuZXIqLiBUaGUgdW5kZXJseWluZwogICAgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlsZSBvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieSBjYWxsaW5nICpvcGVuZXIqIHdpdGgKQEAgLTEwNjIsMTQgKzEwNjUsMTggQEAKIAogICAgICAgVGhlIGBgJ1UnYGAgbW9kZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuCisgICAgICBleGNlcHRpb24sIHRoZSBmdW5jdGlvbiBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nIGFuCisgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KIAotLi4gWFhYIHdvcmtzIGZvciBieXRlcyB0b28sIGJ1dCBzaG91bGQgaXQ/CisKIC4uIGZ1bmN0aW9uOjogb3JkKGMpCiAKICAgIEdpdmVuIGEgc3RyaW5nIHJlcHJlc2VudGluZyBvbmUgVW5pY29kZSBjaGFyYWN0ZXIsIHJldHVybiBhbiBpbnRlZ2VyCi0gICByZXByZXNlbnRpbmcgdGhlIFVuaWNvZGUgY29kZQotICAgcG9pbnQgb2YgdGhhdCBjaGFyYWN0ZXIuICBGb3IgZXhhbXBsZSwgYGBvcmQoJ2EnKWBgIHJldHVybnMgdGhlIGludGVnZXIgYGA5N2BgCi0gICBhbmQgYGBvcmQoJ1x1MjAyMCcpYGAgcmV0dXJucyBgYDgyMjRgYC4gIFRoaXMgaXMgdGhlIGludmVyc2Ugb2YgOmZ1bmM6YGNocmAuCisgICByZXByZXNlbnRpbmcgdGhlIFVuaWNvZGUgY29kZSBwb2ludCBvZiB0aGF0IGNoYXJhY3Rlci4gIEZvciBleGFtcGxlLAorICAgYGBvcmQoJ2EnKWBgIHJldHVybnMgdGhlIGludGVnZXIgYGA5N2BgIGFuZCBgYG9yZCgnzr0nKWBgIHJldHVybnMgYGA5NTdgYC4KKyAgIFRoaXMgaXMgdGhlIGludmVyc2Ugb2YgOmZ1bmM6YGNocmAuCiAKIAogLi4gZnVuY3Rpb246OiBwb3coeCwgeVssIHpdKQpAQCAtMTE4Niw2ICsxMTkzLDkgQEAKICAgIFRoZSByZXR1cm5lZCBwcm9wZXJ0eSBvYmplY3QgYWxzbyBoYXMgdGhlIGF0dHJpYnV0ZXMgYGBmZ2V0YGAsIGBgZnNldGBgLCBhbmQKICAgIGBgZmRlbGBgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBkb2NzdHJpbmdzIG9mIHByb3BlcnR5IG9iamVjdHMgYXJlIG5vdyB3cml0ZWFibGUuCisKIAogLi4gX2Z1bmMtcmFuZ2U6CiAuLiBmdW5jdGlvbjo6IHJhbmdlKHN0b3ApCkBAIC0xMjE4LDggKzEyMjgsOCBAQAogLi4gZnVuY3Rpb246OiByb3VuZChudW1iZXJbLCBuZGlnaXRzXSkKIAogICAgUmV0dXJuIHRoZSBmbG9hdGluZyBwb2ludCB2YWx1ZSAqbnVtYmVyKiByb3VuZGVkIHRvICpuZGlnaXRzKiBkaWdpdHMgYWZ0ZXIKLSAgIHRoZSBkZWNpbWFsIHBvaW50LiAgSWYgKm5kaWdpdHMqIGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIHplcm8uIERlbGVnYXRlcwotICAgdG8gYGBudW1iZXIuX19yb3VuZF9fKG5kaWdpdHMpYGAuCisgICB0aGUgZGVjaW1hbCBwb2ludC4gIElmICpuZGlnaXRzKiBpcyBvbWl0dGVkLCBpdCByZXR1cm5zIHRoZSBuZWFyZXN0IGludGVnZXIKKyAgIHRvIGl0cyBpbnB1dC4gIERlbGVnYXRlcyB0byBgYG51bWJlci5fX3JvdW5kX18obmRpZ2l0cylgYC4KIAogICAgRm9yIHRoZSBidWlsdC1pbiB0eXBlcyBzdXBwb3J0aW5nIDpmdW5jOmByb3VuZGAsIHZhbHVlcyBhcmUgcm91bmRlZCB0byB0aGUKICAgIGNsb3Nlc3QgbXVsdGlwbGUgb2YgMTAgdG8gdGhlIHBvd2VyIG1pbnVzICpuZGlnaXRzKjsgaWYgdHdvIG11bHRpcGxlcyBhcmUKQEAgLTE0ODQsNyArMTQ5NCw5IEBACiAKICAgIFRoZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgb2YgdGhlIGl0ZXJhYmxlcyBpcyBndWFyYW50ZWVkLiBUaGlzCiAgICBtYWtlcyBwb3NzaWJsZSBhbiBpZGlvbSBmb3IgY2x1c3RlcmluZyBhIGRhdGEgc2VyaWVzIGludG8gbi1sZW5ndGggZ3JvdXBzCi0gICB1c2luZyBgYHppcCgqW2l0ZXIocyldKm4pYGAuCisgICB1c2luZyBgYHppcCgqW2l0ZXIocyldKm4pYGAuICBUaGlzIHJlcGVhdHMgdGhlICpzYW1lKiBpdGVyYXRvciBgYG5gYCB0aW1lcworICAgc28gdGhhdCBlYWNoIG91dHB1dCB0dXBsZSBoYXMgdGhlIHJlc3VsdCBvZiBgYG5gYCBjYWxscyB0byB0aGUgaXRlcmF0b3IuCisgICBUaGlzIGhhcyB0aGUgZWZmZWN0IG9mIGRpdmlkaW5nIHRoZSBpbnB1dCBpbnRvIG4tbGVuZ3RoIGNodW5rcy4KIAogICAgOmZ1bmM6YHppcGAgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIHVuZXF1YWwgbGVuZ3RoIGlucHV0cyB3aGVuIHlvdSBkb24ndAogICAgY2FyZSBhYm91dCB0cmFpbGluZywgdW5tYXRjaGVkIHZhbHVlcyBmcm9tIHRoZSBsb25nZXIgaXRlcmFibGVzLiAgSWYgdGhvc2UKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2djLnJzdCBiL0RvYy9saWJyYXJ5L2djLnJzdAppbmRleCA4MTM1NTQyLi5kMTFjMmUxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9nYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZ2MucnN0CkBAIC0xODYsNyArMTg2LDcgQEAKICAgIGFkZGVkIHRvIHRoaXMgbGlzdCByYXRoZXIgdGhhbiBmcmVlZC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgIElmIHRoaXMgbGlzdCBpcyBub24tZW1wdHkgYXQgaW50ZXJwcmV0ZXIgc2h1dGRvd24sIGEKKyAgICAgIElmIHRoaXMgbGlzdCBpcyBub24tZW1wdHkgYXQgOnRlcm06YGludGVycHJldGVyIHNodXRkb3duYCwgYQogICAgICAgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCBpcyBlbWl0dGVkLCB3aGljaCBpcyBzaWxlbnQgYnkgZGVmYXVsdC4gIElmCiAgICAgICA6Y29uc3Q6YERFQlVHX1VOQ09MTEVDVEFCTEVgIGlzIHNldCwgaW4gYWRkaXRpb24gYWxsIHVuY29sbGVjdGFibGUgb2JqZWN0cwogICAgICAgYXJlIHByaW50ZWQuCkBAIC0yNTIsOCArMjUyLDggQEAKICAgIHRvIHRoZSBgYGdhcmJhZ2VgYCBsaXN0LgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgQWxzbyBwcmludCB0aGUgY29udGVudHMgb2YgdGhlIDpkYXRhOmBnYXJiYWdlYCBsaXN0IGF0IGludGVycHJldGVyCi0gICAgICBzaHV0ZG93biwgaWYgaXQgaXNuJ3QgZW1wdHkuCisgICAgICBBbHNvIHByaW50IHRoZSBjb250ZW50cyBvZiB0aGUgOmRhdGE6YGdhcmJhZ2VgIGxpc3QgYXQKKyAgICAgIDp0ZXJtOmBpbnRlcnByZXRlciBzaHV0ZG93bmAsIGlmIGl0IGlzbid0IGVtcHR5LgogCiAuLiBkYXRhOjogREVCVUdfU0FWRUFMTAogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9nZXR0ZXh0LnJzdCBiL0RvYy9saWJyYXJ5L2dldHRleHQucnN0CmluZGV4IGZmMjNiNTkuLjUxNGNjNWEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2dldHRleHQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2dldHRleHQucnN0CkBAIC0zNDQsOSArMzQ0LDkgQEAKIFRoZSBlbnRpcmUgc2V0IG9mIGtleS92YWx1ZSBwYWlycyBhcmUgcGxhY2VkIGludG8gYSBkaWN0aW9uYXJ5IGFuZCBzZXQgYXMgdGhlCiAicHJvdGVjdGVkIiA6YXR0cjpgX2luZm9gIGluc3RhbmNlIHZhcmlhYmxlLgogCi1JZiB0aGUgOmZpbGU6YC5tb2AgZmlsZSdzIG1hZ2ljIG51bWJlciBpcyBpbnZhbGlkLCBvciBpZiBvdGhlciBwcm9ibGVtcyBvY2N1cgotd2hpbGUgcmVhZGluZyB0aGUgZmlsZSwgaW5zdGFudGlhdGluZyBhIDpjbGFzczpgR05VVHJhbnNsYXRpb25zYCBjbGFzcyBjYW4gcmFpc2UKLTpleGM6YE9TRXJyb3JgLgorSWYgdGhlIDpmaWxlOmAubW9gIGZpbGUncyBtYWdpYyBudW1iZXIgaXMgaW52YWxpZCwgdGhlIG1ham9yIHZlcnNpb24gbnVtYmVyIGlzCit1bmV4cGVjdGVkLCBvciBpZiBvdGhlciBwcm9ibGVtcyBvY2N1ciB3aGlsZSByZWFkaW5nIHRoZSBmaWxlLCBpbnN0YW50aWF0aW5nIGEKKzpjbGFzczpgR05VVHJhbnNsYXRpb25zYCBjbGFzcyBjYW4gcmFpc2UgOmV4YzpgT1NFcnJvcmAuCiAKIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgb3ZlcnJpZGRlbiBmcm9tIHRoZSBiYXNlIGNsYXNzIGltcGxlbWVudGF0aW9uOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9nbG9iLnJzdCBiL0RvYy9saWJyYXJ5L2dsb2IucnN0CmluZGV4IDhlOWFmMzcuLjRjMDFiZjYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2dsb2IucnN0CisrKyBiL0RvYy9saWJyYXJ5L2dsb2IucnN0CkBAIC0yOSw3ICsyOSw3IEBACiAgICBUaGUgOm1vZDpgcGF0aGxpYmAgbW9kdWxlIG9mZmVycyBoaWdoLWxldmVsIHBhdGggb2JqZWN0cy4KIAogCi0uLiBmdW5jdGlvbjo6IGdsb2IocGF0aG5hbWUpCisuLiBmdW5jdGlvbjo6IGdsb2IocGF0aG5hbWUsICosIHJlY3Vyc2l2ZT1GYWxzZSkKIAogICAgUmV0dXJuIGEgcG9zc2libHktZW1wdHkgbGlzdCBvZiBwYXRoIG5hbWVzIHRoYXQgbWF0Y2ggKnBhdGhuYW1lKiwgd2hpY2ggbXVzdCBiZQogICAgYSBzdHJpbmcgY29udGFpbmluZyBhIHBhdGggc3BlY2lmaWNhdGlvbi4gKnBhdGhuYW1lKiBjYW4gYmUgZWl0aGVyIGFic29sdXRlCkBAIC0zNyw4ICszNywxOSBAQAogICAgOmZpbGU6YC4uLy4uL1Rvb2xzL1wqL1wqLmdpZmApLCBhbmQgY2FuIGNvbnRhaW4gc2hlbGwtc3R5bGUgd2lsZGNhcmRzLiBCcm9rZW4KICAgIHN5bWxpbmtzIGFyZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0cyAoYXMgaW4gdGhlIHNoZWxsKS4KIAorICAgSWYgKnJlY3Vyc2l2ZSogaXMgdHJ1ZSwgdGhlIHBhdHRlcm4gImBgKipgYCIgd2lsbCBtYXRjaCBhbnkgZmlsZXMgYW5kIHplcm8gb3IKKyAgIG1vcmUgZGlyZWN0b3JpZXMgYW5kIHN1YmRpcmVjdG9yaWVzLiAgSWYgdGhlIHBhdHRlcm4gaXMgZm9sbG93ZWQgYnkgYW4KKyAgIGBgb3Muc2VwYGAsIG9ubHkgZGlyZWN0b3JpZXMgYW5kIHN1YmRpcmVjdG9yaWVzIG1hdGNoLgogCi0uLiBmdW5jdGlvbjo6IGlnbG9iKHBhdGhuYW1lKQorICAgLi4gbm90ZTo6CisgICAgICBVc2luZyB0aGUgImBgKipgYCIgcGF0dGVybiBpbiBsYXJnZSBkaXJlY3RvcnkgdHJlZXMgbWF5IGNvbnN1bWUKKyAgICAgIGFuIGlub3JkaW5hdGUgYW1vdW50IG9mIHRpbWUuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBTdXBwb3J0IGZvciByZWN1cnNpdmUgZ2xvYnMgdXNpbmcgImBgKipgYCIuCisKKworLi4gZnVuY3Rpb246OiBpZ2xvYihwYXRobmFtZSwgcmVjdXJzaXZlPUZhbHNlKQogCiAgICBSZXR1cm4gYW4gOnRlcm06YGl0ZXJhdG9yYCB3aGljaCB5aWVsZHMgdGhlIHNhbWUgdmFsdWVzIGFzIDpmdW5jOmBnbG9iYAogICAgd2l0aG91dCBhY3R1YWxseSBzdG9yaW5nIHRoZW0gYWxsIHNpbXVsdGFuZW91c2x5LgpAQCAtNTUsOCArNjYsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKIAotRm9yIGV4YW1wbGUsIGNvbnNpZGVyIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgb25seSB0aGUgZm9sbG93aW5nIGZpbGVzOgotOmZpbGU6YDEuZ2lmYCwgOmZpbGU6YDIudHh0YCwgYW5kIDpmaWxlOmBjYXJkLmdpZmAuICA6ZnVuYzpgZ2xvYmAgd2lsbCBwcm9kdWNlCitGb3IgZXhhbXBsZSwgY29uc2lkZXIgYSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIGZpbGVzOgorOmZpbGU6YDEuZ2lmYCwgOmZpbGU6YDIudHh0YCwgOmZpbGU6YGNhcmQuZ2lmYCBhbmQgYSBzdWJkaXJlY3RvcnkgOmZpbGU6YHN1YmAKK3doaWNoIGNvbnRhaW5zIG9ubHkgdGhlIGZpbGUgOmZpbGU6YDMudHh0YC4gIDpmdW5jOmBnbG9iYCB3aWxsIHByb2R1Y2UKIHRoZSBmb2xsb3dpbmcgcmVzdWx0cy4gIE5vdGljZSBob3cgYW55IGxlYWRpbmcgY29tcG9uZW50cyBvZiB0aGUgcGF0aCBhcmUKIHByZXNlcnZlZC4gOjoKIApAQCAtNjcsNiArNzksMTAgQEAKICAgIFsnMS5naWYnLCAnY2FyZC5naWYnXQogICAgPj4+IGdsb2IuZ2xvYignPy5naWYnKQogICAgWycxLmdpZiddCisgICA+Pj4gZ2xvYi5nbG9iKCcqKi8qLnR4dCcsIHJlY3Vyc2l2ZT1UcnVlKQorICAgWycyLnR4dCcsICdzdWIvMy50eHQnXQorICAgPj4+IGdsb2IuZ2xvYignLi8qKi8nLCByZWN1cnNpdmU9VHJ1ZSkKKyAgIFsnLi8nLCAnLi9zdWIvJ10KIAogSWYgdGhlIGRpcmVjdG9yeSBjb250YWlucyBmaWxlcyBzdGFydGluZyB3aXRoIGBgLmBgIHRoZXkgd29uJ3QgYmUgbWF0Y2hlZCBieQogZGVmYXVsdC4gRm9yIGV4YW1wbGUsIGNvbnNpZGVyIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgOmZpbGU6YGNhcmQuZ2lmYCBhbmQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2d6aXAucnN0IGIvRG9jL2xpYnJhcnkvZ3ppcC5yc3QKaW5kZXggMzU1Y2Y5Yy4uNzkyZDU3YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZ3ppcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZ3ppcC5yc3QKQEAgLTkwLDEzICs5MCw5IEBACiAgICBpcyBubyBjb21wcmVzc2lvbi4gVGhlIGRlZmF1bHQgaXMgYGA5YGAuCiAKICAgIFRoZSAqbXRpbWUqIGFyZ3VtZW50IGlzIGFuIG9wdGlvbmFsIG51bWVyaWMgdGltZXN0YW1wIHRvIGJlIHdyaXR0ZW4gdG8KLSAgIHRoZSBzdHJlYW0gd2hlbiBjb21wcmVzc2luZy4gIEFsbCA6cHJvZ3JhbTpgZ3ppcGAgY29tcHJlc3NlZCBzdHJlYW1zIGFyZQotICAgcmVxdWlyZWQgdG8gY29udGFpbiBhIHRpbWVzdGFtcC4gIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZSBjdXJyZW50Ci0gICB0aW1lIGlzIHVzZWQuICBUaGlzIG1vZHVsZSBpZ25vcmVzIHRoZSB0aW1lc3RhbXAgd2hlbiBkZWNvbXByZXNzaW5nOwotICAgaG93ZXZlciwgc29tZSBwcm9ncmFtcywgc3VjaCBhcyA6cHJvZ3JhbTpgZ3VuemlwYFwgLCBtYWtlIHVzZSBvZiBpdC4KLSAgIFRoZSBmb3JtYXQgb2YgdGhlIHRpbWVzdGFtcCBpcyB0aGUgc2FtZSBhcyB0aGF0IG9mIHRoZSByZXR1cm4gdmFsdWUgb2YKLSAgIGBgdGltZS50aW1lKClgYCBhbmQgb2YgdGhlIGBgc3RfbXRpbWVgYCBhdHRyaWJ1dGUgb2YgdGhlIG9iamVjdCByZXR1cm5lZAotICAgYnkgYGBvcy5zdGF0KClgYC4KKyAgIHRoZSBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lIGZpZWxkIGluIHRoZSBzdHJlYW0gd2hlbiBjb21wcmVzc2luZy4gIEl0CisgICBzaG91bGQgb25seSBiZSBwcm92aWRlZCBpbiBjb21wcmVzc2lvbiBtb2RlLiAgSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlCisgICBjdXJyZW50IHRpbWUgaXMgdXNlZC4gIFNlZSB0aGUgOmF0dHI6YG10aW1lYCBhdHRyaWJ1dGUgZm9yIG1vcmUgZGV0YWlscy4KIAogICAgQ2FsbGluZyBhIDpjbGFzczpgR3ppcEZpbGVgIG9iamVjdCdzIDptZXRoOmBjbG9zZWAgbWV0aG9kIGRvZXMgbm90IGNsb3NlCiAgICAqZmlsZW9iaiosIHNpbmNlIHlvdSBtaWdodCB3aXNoIHRvIGFwcGVuZCBtb3JlIG1hdGVyaWFsIGFmdGVyIHRoZSBjb21wcmVzc2VkCkBAIC0xMDgsOSArMTA0LDkgQEAKICAgIGluY2x1ZGluZyBpdGVyYXRpb24gYW5kIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiAgT25seSB0aGUKICAgIDptZXRoOmB0cnVuY2F0ZWAgbWV0aG9kIGlzbid0IGltcGxlbWVudGVkLgogCi0gICA6Y2xhc3M6YEd6aXBGaWxlYCBhbHNvIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgbWV0aG9kOgorICAgOmNsYXNzOmBHemlwRmlsZWAgYWxzbyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZCBhbmQgYXR0cmlidXRlOgogCi0gICAuLiBtZXRob2Q6OiBwZWVrKFtuXSkKKyAgIC4uIG1ldGhvZDo6IHBlZWsobikKIAogICAgICAgUmVhZCAqbiogdW5jb21wcmVzc2VkIGJ5dGVzIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBmaWxlIHBvc2l0aW9uLgogICAgICAgQXQgbW9zdCBvbmUgc2luZ2xlIHJlYWQgb24gdGhlIGNvbXByZXNzZWQgc3RyZWFtIGlzIGRvbmUgdG8gc2F0aXNmeQpAQCAtMTI0LDkgKzEyMCwyMSBAQAogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gYXR0cmlidXRlOjogbXRpbWUKKworICAgICAgV2hlbiBkZWNvbXByZXNzaW5nLCB0aGUgdmFsdWUgb2YgdGhlIGxhc3QgbW9kaWZpY2F0aW9uIHRpbWUgZmllbGQgaW4KKyAgICAgIHRoZSBtb3N0IHJlY2VudGx5IHJlYWQgaGVhZGVyIG1heSBiZSByZWFkIGZyb20gdGhpcyBhdHRyaWJ1dGUsIGFzIGFuCisgICAgICBpbnRlZ2VyLiAgVGhlIGluaXRpYWwgdmFsdWUgYmVmb3JlIHJlYWRpbmcgYW55IGhlYWRlcnMgaXMgYGBOb25lYGAuCisKKyAgICAgIEFsbCA6cHJvZ3JhbTpgZ3ppcGAgY29tcHJlc3NlZCBzdHJlYW1zIGFyZSByZXF1aXJlZCB0byBjb250YWluIHRoaXMKKyAgICAgIHRpbWVzdGFtcCBmaWVsZC4gIFNvbWUgcHJvZ3JhbXMsIHN1Y2ggYXMgOnByb2dyYW06YGd1bnppcGBcICwgbWFrZSB1c2UKKyAgICAgIG9mIHRoZSB0aW1lc3RhbXAuICBUaGUgZm9ybWF0IGlzIHRoZSBzYW1lIGFzIHRoZSByZXR1cm4gdmFsdWUgb2YKKyAgICAgIDpmdW5jOmB0aW1lLnRpbWVgIGFuZCB0aGUgOmF0dHI6YH5vcy5zdGF0X3Jlc3VsdC5zdF9tdGltZWAgYXR0cmlidXRlIG9mCisgICAgICB0aGUgb2JqZWN0IHJldHVybmVkIGJ5IDpmdW5jOmBvcy5zdGF0YC4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIFN1cHBvcnQgZm9yIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHdhcyBhZGRlZCwgYWxvbmcgd2l0aCB0aGUKLSAgICAgICptdGltZSogYXJndW1lbnQuCisgICAgICAqbXRpbWUqIGNvbnN0cnVjdG9yIGFyZ3VtZW50IGFuZCA6YXR0cjpgbXRpbWVgIGF0dHJpYnV0ZS4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFN1cHBvcnQgZm9yIHplcm8tcGFkZGVkIGFuZCB1bnNlZWthYmxlIGZpbGVzIHdhcyBhZGRlZC4KQEAgLTEzNyw2ICsxNDUsMTIgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGAneCdgYCBhbmQgYGAneGInYGAgbW9kZXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciB3cml0aW5nIGFyYml0cmFyeQorICAgICAgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0cyA8Ynl0ZXMtbGlrZSBvYmplY3Q+YC4KKyAgICAgIFRoZSA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRgIG1ldGhvZCBub3cgYWNjZXB0cyBhbiBhcmd1bWVudCBvZgorICAgICAgYGBOb25lYGAuCisKIAogLi4gZnVuY3Rpb246OiBjb21wcmVzcyhkYXRhLCBjb21wcmVzc2xldmVsPTkpCiAKQEAgLTE3NSw5ICsxODksMTAgQEAKIEV4YW1wbGUgb2YgaG93IHRvIEdaSVAgY29tcHJlc3MgYW4gZXhpc3RpbmcgZmlsZTo6CiAKICAgIGltcG9ydCBnemlwCisgICBpbXBvcnQgc2h1dGlsCiAgICB3aXRoIG9wZW4oJy9ob21lL2pvZS9maWxlLnR4dCcsICdyYicpIGFzIGZfaW46CiAgICAgICAgd2l0aCBnemlwLm9wZW4oJy9ob21lL2pvZS9maWxlLnR4dC5neicsICd3YicpIGFzIGZfb3V0OgotICAgICAgICAgICBmX291dC53cml0ZWxpbmVzKGZfaW4pCisgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZW9iaihmX2luLCBmX291dCkKIAogRXhhbXBsZSBvZiBob3cgdG8gR1pJUCBjb21wcmVzcyBhIGJpbmFyeSBzdHJpbmc6OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9oZWFwcS5yc3QgYi9Eb2MvbGlicmFyeS9oZWFwcS5yc3QKaW5kZXggZjg5NzBiZS4uOWZiYmNjNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaGVhcHEucnN0CisrKyBiL0RvYy9saWJyYXJ5L2hlYXBxLnJzdApAQCAtODIsNyArODIsNyBAQAogVGhlIG1vZHVsZSBhbHNvIG9mZmVycyB0aHJlZSBnZW5lcmFsIHB1cnBvc2UgZnVuY3Rpb25zIGJhc2VkIG9uIGhlYXBzLgogCiAKLS4uIGZ1bmN0aW9uOjogbWVyZ2UoKml0ZXJhYmxlcykKKy4uIGZ1bmN0aW9uOjogbWVyZ2UoKml0ZXJhYmxlcywga2V5PU5vbmUsIHJldmVyc2U9RmFsc2UpCiAKICAgIE1lcmdlIG11bHRpcGxlIHNvcnRlZCBpbnB1dHMgaW50byBhIHNpbmdsZSBzb3J0ZWQgb3V0cHV0IChmb3IgZXhhbXBsZSwgbWVyZ2UKICAgIHRpbWVzdGFtcGVkIGVudHJpZXMgZnJvbSBtdWx0aXBsZSBsb2cgZmlsZXMpLiAgUmV0dXJucyBhbiA6dGVybTpgaXRlcmF0b3JgCkBAIC05Miw2ICs5MiwxOCBAQAogICAgbm90IHB1bGwgdGhlIGRhdGEgaW50byBtZW1vcnkgYWxsIGF0IG9uY2UsIGFuZCBhc3N1bWVzIHRoYXQgZWFjaCBvZiB0aGUgaW5wdXQKICAgIHN0cmVhbXMgaXMgYWxyZWFkeSBzb3J0ZWQgKHNtYWxsZXN0IHRvIGxhcmdlc3QpLgogCisgICBIYXMgdHdvIG9wdGlvbmFsIGFyZ3VtZW50cyB3aGljaCBtdXN0IGJlIHNwZWNpZmllZCBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KKworICAgKmtleSogc3BlY2lmaWVzIGEgOnRlcm06YGtleSBmdW5jdGlvbmAgb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0bworICAgZXh0cmFjdCBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBpbnB1dCBlbGVtZW50LiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMKKyAgIGBgTm9uZWBgIChjb21wYXJlIHRoZSBlbGVtZW50cyBkaXJlY3RseSkuCisKKyAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gdGhlIGlucHV0IGVsZW1lbnRzCisgICBhcmUgbWVyZ2VkIGFzIGlmIGVhY2ggY29tcGFyaXNvbiB3ZXJlIHJldmVyc2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgdGhlIG9wdGlvbmFsICprZXkqIGFuZCAqcmV2ZXJzZSogcGFyYW1ldGVycy4KKwogCiAuLiBmdW5jdGlvbjo6IG5sYXJnZXN0KG4sIGl0ZXJhYmxlLCBrZXk9Tm9uZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHRtbC5wYXJzZXIucnN0IGIvRG9jL2xpYnJhcnkvaHRtbC5wYXJzZXIucnN0CmluZGV4IGZlZjljMzguLjgyNDk5NWUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0bWwucGFyc2VyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odG1sLnBhcnNlci5yc3QKQEAgLTE2LDIxICsxNiwxMyBAQAogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGNsYXNzIDpjbGFzczpgSFRNTFBhcnNlcmAgd2hpY2ggc2VydmVzIGFzIHRoZSBiYXNpcyBmb3IKIHBhcnNpbmcgdGV4dCBmaWxlcyBmb3JtYXR0ZWQgaW4gSFRNTCAoSHlwZXJUZXh0IE1hcmstdXAgTGFuZ3VhZ2UpIGFuZCBYSFRNTC4KIAotLi4gY2xhc3M6OiBIVE1MUGFyc2VyKHN0cmljdD1GYWxzZSwgKiwgY29udmVydF9jaGFycmVmcz1GYWxzZSkKKy4uIGNsYXNzOjogSFRNTFBhcnNlcigqLCBjb252ZXJ0X2NoYXJyZWZzPVRydWUpCiAKLSAgIENyZWF0ZSBhIHBhcnNlciBpbnN0YW5jZS4KKyAgIENyZWF0ZSBhIHBhcnNlciBpbnN0YW5jZSBhYmxlIHRvIHBhcnNlIGludmFsaWQgbWFya3VwLgogCi0gICBJZiAqY29udmVydF9jaGFycmVmcyogaXMgYGBUcnVlYGAgKGRlZmF1bHQ6IGBgRmFsc2VgYCksIGFsbCBjaGFyYWN0ZXIKKyAgIElmICpjb252ZXJ0X2NoYXJyZWZzKiBpcyBgYFRydWVgYCAodGhlIGRlZmF1bHQpLCBhbGwgY2hhcmFjdGVyCiAgICByZWZlcmVuY2VzIChleGNlcHQgdGhlIG9uZXMgaW4gYGBzY3JpcHRgYC9gYHN0eWxlYGAgZWxlbWVudHMpIGFyZQogICAgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgVW5pY29kZSBjaGFyYWN0ZXJzLgotICAgVGhlIHVzZSBvZiBgYGNvbnZlcnRfY2hhcnJlZnM9VHJ1ZWBgIGlzIGVuY291cmFnZWQgYW5kIHdpbGwgYmVjb21lCi0gICB0aGUgZGVmYXVsdCBpbiBQeXRob24gMy41LgotCi0gICBJZiAqc3RyaWN0KiBpcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0KSwgdGhlIHBhcnNlciB3aWxsIGFjY2VwdCBhbmQgcGFyc2UKLSAgIGludmFsaWQgbWFya3VwLiAgSWYgKnN0cmljdCogaXMgYGBUcnVlYGAgdGhlIHBhcnNlciB3aWxsIHJhaXNlIGFuCi0gICA6ZXhjOmB+aHRtbC5wYXJzZXIuSFRNTFBhcnNlRXJyb3JgIGV4Y2VwdGlvbiBpbnN0ZWFkIFsjXV8gd2hlbiBpdCdzIG5vdAotICAgYWJsZSB0byBwYXJzZSB0aGUgbWFya3VwLiAgVGhlIHVzZSBvZiBgYHN0cmljdD1UcnVlYGAgaXMgZGlzY291cmFnZWQgYW5kCi0gICB0aGUgKnN0cmljdCogYXJndW1lbnQgaXMgZGVwcmVjYXRlZC4KIAogICAgQW4gOmNsYXNzOmAuSFRNTFBhcnNlcmAgaW5zdGFuY2UgaXMgZmVkIEhUTUwgZGF0YSBhbmQgY2FsbHMgaGFuZGxlciBtZXRob2RzCiAgICB3aGVuIHN0YXJ0IHRhZ3MsIGVuZCB0YWdzLCB0ZXh0LCBjb21tZW50cywgYW5kIG90aGVyIG1hcmt1cCBlbGVtZW50cyBhcmUKQEAgLTQwLDMxICszMiwxMSBAQAogICAgVGhpcyBwYXJzZXIgZG9lcyBub3QgY2hlY2sgdGhhdCBlbmQgdGFncyBtYXRjaCBzdGFydCB0YWdzIG9yIGNhbGwgdGhlIGVuZC10YWcKICAgIGhhbmRsZXIgZm9yIGVsZW1lbnRzIHdoaWNoIGFyZSBjbG9zZWQgaW1wbGljaXRseSBieSBjbG9zaW5nIGFuIG91dGVyIGVsZW1lbnQuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICAqc3RyaWN0KiBhcmd1bWVudCBhZGRlZC4KLQotICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDMuNQotICAgICAgVGhlICpzdHJpY3QqIGFyZ3VtZW50IGFuZCB0aGUgc3RyaWN0IG1vZGUgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQuCi0gICAgICBUaGUgcGFyc2VyIGlzIG5vdyBhYmxlIHRvIGFjY2VwdCBhbmQgcGFyc2UgaW52YWxpZCBtYXJrdXAgdG9vLgotCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgKmNvbnZlcnRfY2hhcnJlZnMqIGtleXdvcmQgYXJndW1lbnQgYWRkZWQuCiAKLUFuIGV4Y2VwdGlvbiBpcyBkZWZpbmVkIGFzIHdlbGw6Ci0KLQotLi4gZXhjZXB0aW9uOjogSFRNTFBhcnNlRXJyb3IKLQotICAgRXhjZXB0aW9uIHJhaXNlZCBieSB0aGUgOmNsYXNzOmBIVE1MUGFyc2VyYCBjbGFzcyB3aGVuIGl0IGVuY291bnRlcnMgYW4gZXJyb3IKLSAgIHdoaWxlIHBhcnNpbmcgYW5kICpzdHJpY3QqIGlzIGBgVHJ1ZWBgLiAgVGhpcyBleGNlcHRpb24gcHJvdmlkZXMgdGhyZWUKLSAgIGF0dHJpYnV0ZXM6IDphdHRyOmBtc2dgIGlzIGEgYnJpZWYgbWVzc2FnZSBleHBsYWluaW5nIHRoZSBlcnJvciwKLSAgIDphdHRyOmBsaW5lbm9gIGlzIHRoZSBudW1iZXIgb2YgdGhlIGxpbmUgb24gd2hpY2ggdGhlIGJyb2tlbiBjb25zdHJ1Y3Qgd2FzCi0gICBkZXRlY3RlZCwgYW5kIDphdHRyOmBvZmZzZXRgIGlzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbnRvIHRoZSBsaW5lIGF0Ci0gICB3aGljaCB0aGUgY29uc3RydWN0IHN0YXJ0cy4KLQotICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDMuNQotICAgICAgVGhpcyBleGNlcHRpb24gaGFzIGJlZW4gZGVwcmVjYXRlZCBiZWNhdXNlIGl0J3MgbmV2ZXIgcmFpc2VkIGJ5IHRoZSBwYXJzZXIKLSAgICAgICh3aGVuIHRoZSBkZWZhdWx0IG5vbi1zdHJpY3QgbW9kZSBpcyB1c2VkKS4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgYXJndW1lbnQgKmNvbnZlcnRfY2hhcnJlZnMqIGlzIG5vdyBgYFRydWVgYC4KIAogCiBFeGFtcGxlIEhUTUwgUGFyc2VyIEFwcGxpY2F0aW9uCkBAIC0yNDYsOCArMjE4LDcgQEAKIAogICAgVGhlICpkYXRhKiBwYXJhbWV0ZXIgd2lsbCBiZSB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBkZWNsYXJhdGlvbiBpbnNpZGUKICAgIHRoZSBgYDwhWy4uLl0+YGAgbWFya3VwLiAgSXQgaXMgc29tZXRpbWVzIHVzZWZ1bCB0byBiZSBvdmVycmlkZGVuIGJ5IGEKLSAgIGRlcml2ZWQgY2xhc3MuICBUaGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbiByYWlzZXMgYW4gOmV4YzpgSFRNTFBhcnNlRXJyb3JgCi0gICB3aGVuICpzdHJpY3QqIGlzIGBgVHJ1ZWBgLgorICAgZGVyaXZlZCBjbGFzcy4gIFRoZSBiYXNlIGNsYXNzIGltcGxlbWVudGF0aW9uIGRvZXMgbm90aGluZy4KIAogCiAuLiBfaHRtbHBhcnNlci1leGFtcGxlczoKQEAgLTM1OCw5ICszMjksMyBAQAogICAgRGF0YSAgICAgOiB0YWcgc291cAogICAgRW5kIHRhZyAgOiBwCiAgICBFbmQgdGFnICA6IGEKLQotLi4gcnVicmljOjogRm9vdG5vdGVzCi0KLS4uIFsjXSBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zICpzdHJpY3QqIG1vZGUgZG9lcyBub3QgcmFpc2UKLSAgICAgICBleGNlcHRpb25zIGZvciBhbGwgbm9uLWNvbXBsaWFudCBIVE1MLiAgVGhhdCBpcywgc29tZSBpbnZhbGlkIEhUTUwKLSAgICAgICBpcyB0b2xlcmF0ZWQgZXZlbiBpbiAqc3RyaWN0KiBtb2RlLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0CmluZGV4IDgwN2Y2ODUuLmQ1NzY0OWMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QKQEAgLTE4MCw2ICsxODAsMTcgQEAKICAgIGlzIHJlY2VpdmVkIGluIHRoZSBIVFRQIHByb3RvY29sIGZyb20gdGhlIHNlcnZlci4KIAogCisuLiBleGNlcHRpb246OiBSZW1vdGVEaXNjb25uZWN0ZWQKKworICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBDb25uZWN0aW9uUmVzZXRFcnJvcmAgYW5kIDpleGM6YEJhZFN0YXR1c0xpbmVgLiAgUmFpc2VkCisgICBieSA6bWV0aDpgSFRUUENvbm5lY3Rpb24uZ2V0cmVzcG9uc2VgIHdoZW4gdGhlIGF0dGVtcHQgdG8gcmVhZCB0aGUgcmVzcG9uc2UKKyAgIHJlc3VsdHMgaW4gbm8gZGF0YSByZWFkIGZyb20gdGhlIGNvbm5lY3Rpb24sIGluZGljYXRpbmcgdGhhdCB0aGUgcmVtb3RlIGVuZAorICAgaGFzIGNsb3NlZCB0aGUgY29ubmVjdGlvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAgICBQcmV2aW91c2x5LCA6ZXhjOmBCYWRTdGF0dXNMaW5lYFwgYGAoJycpYGAgd2FzIHJhaXNlZC4KKworCiBUaGUgY29uc3RhbnRzIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUgYXJlOgogCiAuLiBkYXRhOjogSFRUUF9QT1JUCkBAIC0xOTEsMjIxICsyMDIsMTUgQEAKIAogICAgVGhlIGRlZmF1bHQgcG9ydCBmb3IgdGhlIEhUVFBTIHByb3RvY29sIChhbHdheXMgYGA0NDNgYCkuCiAKLWFuZCBhbHNvIHRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIGZvciBpbnRlZ2VyIHN0YXR1cyBjb2RlczoKLQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IENvbnN0YW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWYWx1ZSAgIHwgRGVmaW5pdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KwotfCA6Y29uc3Q6YENPTlRJTlVFYCAgICAgICAgICAgICAgICAgICAgICAgIHwgYGAxMDBgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMS4xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjEuMT5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgU1dJVENISU5HX1BST1RPQ09MU2AgICAgICAgICAgICAgfCBgYDEwMWBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4xLjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMS4yPmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBQUk9DRVNTSU5HYCAgICAgICAgICAgICAgICAgICAgICB8IGBgMTAyYGAgfCBXRUJEQVYsIGBSRkMgMjUxOCwgU2VjdGlvbiAxMC4xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LndlYmRhdi5vcmcvc3BlY3MvcmZjMjUxOC5odG1sI1NUQVRVU18xMDI+YF8gICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBPS2AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgMjAwYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjIuMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4yLjE+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YENSRUFURURgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGAyMDFgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMi4yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjIuMj5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgQUNDRVBURURgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYDIwMmBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4yLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMi4zPmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTmAgICB8IGBgMjAzYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjIuNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4yLjQ+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YE5PX0NPTlRFTlRgICAgICAgICAgICAgICAgICAgICAgIHwgYGAyMDRgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMi41ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjIuNT5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgUkVTRVRfQ09OVEVOVGAgICAgICAgICAgICAgICAgICAgfCBgYDIwNWBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4yLjYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMi42PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBQQVJUSUFMX0NPTlRFTlRgICAgICAgICAgICAgICAgICB8IGBgMjA2YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjIuNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4yLjc+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YE1VTFRJX1NUQVRVU2AgICAgICAgICAgICAgICAgICAgIHwgYGAyMDdgYCB8IFdFQkRBViBgUkZDIDI1MTgsIFNlY3Rpb24gMTAuMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cud2ViZGF2Lm9yZy9zcGVjcy9yZmMyNTE4Lmh0bWwjU1RBVFVTXzIwNz5gXyAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YElNX1VTRURgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGAyMjZgYCB8IERlbHRhIGVuY29kaW5nIGluIEhUVFAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgMzIyOWAsIFNlY3Rpb24gMTAuNC4xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YE1VTFRJUExFX0NIT0lDRVNgICAgICAgICAgICAgICAgIHwgYGAzMDBgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMy4xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjMuMT5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTU9WRURfUEVSTUFORU5UTFlgICAgICAgICAgICAgICAgfCBgYDMwMWBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4zLjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMy4yPmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBGT1VORGAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgMzAyYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjMuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4zLjM+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFNFRV9PVEhFUmAgICAgICAgICAgICAgICAgICAgICAgIHwgYGAzMDNgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMy40ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjMuND5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTk9UX01PRElGSUVEYCAgICAgICAgICAgICAgICAgICAgfCBgYDMwNGBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4zLjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMy41PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBVU0VfUFJPWFlgICAgICAgICAgICAgICAgICAgICAgICB8IGBgMzA1YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjMuNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4zLjY+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFRFTVBPUkFSWV9SRURJUkVDVGAgICAgICAgICAgICAgIHwgYGAzMDdgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMy44ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjMuOD5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgQkFEX1JFUVVFU1RgICAgICAgICAgICAgICAgICAgICAgfCBgYDQwMGBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC4xPmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBVTkFVVEhPUklaRURgICAgICAgICAgICAgICAgICAgICB8IGBgNDAxYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjI+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFBBWU1FTlRfUkVRVUlSRURgICAgICAgICAgICAgICAgIHwgYGA0MDJgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuMz5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgRk9SQklEREVOYCAgICAgICAgICAgICAgICAgICAgICAgfCBgYDQwM2BgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC40PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBOT1RfRk9VTkRgICAgICAgICAgICAgICAgICAgICAgICB8IGBgNDA0YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjU+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YE1FVEhPRF9OT1RfQUxMT1dFRGAgICAgICAgICAgICAgIHwgYGA0MDVgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC42ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuNj5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTk9UX0FDQ0VQVEFCTEVgICAgICAgICAgICAgICAgICAgfCBgYDQwNmBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC43PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRGAgICB8IGBgNDA3YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40Ljg+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFJFUVVFU1RfVElNRU9VVGAgICAgICAgICAgICAgICAgIHwgYGA0MDhgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC45ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuOT5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgQ09ORkxJQ1RgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYDQwOWBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC4xMD5gXyB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBHT05FYCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgNDEwYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjExPmBfIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YExFTkdUSF9SRVFVSVJFRGAgICAgICAgICAgICAgICAgIHwgYGA0MTFgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC4xMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuMTI+YF8gfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgUFJFQ09ORElUSU9OX0ZBSUxFRGAgICAgICAgICAgICAgfCBgYDQxMmBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjEzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC4xMz5gXyB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBSRVFVRVNUX0VOVElUWV9UT09fTEFSR0VgICAgICAgICB8IGBgNDEzYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuMTQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjE0PmBfIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFJFUVVFU1RfVVJJX1RPT19MT05HYCAgICAgICAgICAgIHwgYGA0MTRgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC4xNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuMTU+YF8gfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgVU5TVVBQT1JURURfTUVESUFfVFlQRWAgICAgICAgICAgfCBgYDQxNWBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC4xNj5gXyB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBSRVFVRVNURURfUkFOR0VfTk9UX1NBVElTRklBQkxFYCB8IGBgNDE2YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuMTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjE3PmBfIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YEVYUEVDVEFUSU9OX0ZBSUxFRGAgICAgICAgICAgICAgIHwgYGA0MTdgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC4xOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuMTg+YF8gfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgVU5QUk9DRVNTQUJMRV9FTlRJVFlgICAgICAgICAgICAgfCBgYDQyMmBgIHwgV0VCREFWLCBgUkZDIDI1MTgsIFNlY3Rpb24gMTAuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53ZWJkYXYub3JnL3NwZWNzL3JmYzI1MTguaHRtbCNTVEFUVVNfNDIyPmBfICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTE9DS0VEYCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYDQyM2BgIHwgV0VCREFWIGBSRkMgMjUxOCwgU2VjdGlvbiAxMC40ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53ZWJkYXYub3JnL3NwZWNzL3JmYzI1MTguaHRtbCNTVEFUVVNfNDIzPmBfICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgRkFJTEVEX0RFUEVOREVOQ1lgICAgICAgICAgICAgICAgfCBgYDQyNGBgIHwgV0VCREFWLCBgUkZDIDI1MTgsIFNlY3Rpb24gMTAuNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53ZWJkYXYub3JnL3NwZWNzL3JmYzI1MTguaHRtbCNTVEFUVVNfNDI0PmBfICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgVVBHUkFERV9SRVFVSVJFRGAgICAgICAgICAgICAgICAgfCBgYDQyNmBgIHwgSFRUUCBVcGdyYWRlIHRvIFRMUywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA6cmZjOmAyODE3YCwgU2VjdGlvbiA2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgUFJFQ09ORElUSU9OX1JFUVVJUkVEYCAgICAgICAgICAgfCBgYDQyOGBgIHwgQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA6cmZjOmA2NTg1YCwgU2VjdGlvbiAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgVE9PX01BTllfUkVRVUVTVFNgICAgICAgICAgICAgICAgfCBgYDQyOWBgIHwgQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA6cmZjOmA2NTg1YCwgU2VjdGlvbiA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRWAgfCBgYDQzMWBgIHwgQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA6cmZjOmA2NTg1YCwgU2VjdGlvbiA1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgSU5URVJOQUxfU0VSVkVSX0VSUk9SYCAgICAgICAgICAgfCBgYDUwMGBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC41LjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNS4xPmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBOT1RfSU1QTEVNRU5URURgICAgICAgICAgICAgICAgICB8IGBgNTAxYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjUuMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC41LjI+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YEJBRF9HQVRFV0FZYCAgICAgICAgICAgICAgICAgICAgIHwgYGA1MDJgYCB8IEhUVFAvMS4xIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjUuMz5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgU0VSVklDRV9VTkFWQUlMQUJMRWAgICAgICAgICAgICAgfCBgYDUwM2BgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC41LjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNS40PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBHQVRFV0FZX1RJTUVPVVRgICAgICAgICAgICAgICAgICB8IGBgNTA0YGAgfCBIVFRQLzEuMSBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjUuNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC41LjU+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEYCAgICAgIHwgYGA1MDVgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNS42ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjUuNj5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgSU5TVUZGSUNJRU5UX1NUT1JBR0VgICAgICAgICAgICAgfCBgYDUwN2BgIHwgV0VCREFWLCBgUkZDIDI1MTgsIFNlY3Rpb24gMTAuNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53ZWJkYXYub3JnL3NwZWNzL3JmYzI1MTguaHRtbCNTVEFUVVNfNTA3PmBfICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTk9UX0VYVEVOREVEYCAgICAgICAgICAgICAgICAgICAgfCBgYDUxMGBgIHwgQW4gSFRUUCBFeHRlbnNpb24gRnJhbWV3b3JrLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA6cmZjOmAyNzc0YCwgU2VjdGlvbiA3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRGAgfCBgYDUxMWBgIHwgQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA6cmZjOmA2NTg1YCwgU2VjdGlvbiA2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLS4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICBBZGRlZCBjb2RlcyBgYDQyOGBgLCBgYDQyOWBgLCBgYDQzMWBgIGFuZCBgYDUxMWBgIGZyb20gOnJmYzpgNjU4NWAuCi0KLQogLi4gZGF0YTo6IHJlc3BvbnNlcwogCiAgICBUaGlzIGRpY3Rpb25hcnkgbWFwcyB0aGUgSFRUUCAxLjEgc3RhdHVzIGNvZGVzIHRvIHRoZSBXM0MgbmFtZXMuCiAKICAgIEV4YW1wbGU6IGBgaHR0cC5jbGllbnQucmVzcG9uc2VzW2h0dHAuY2xpZW50Lk5PVF9GT1VORF1gYCBpcyBgYCdOb3QgRm91bmQnYGAuCiAKK1NlZSA6cmVmOmBodHRwLXN0YXR1cy1jb2Rlc2AgZm9yIGEgbGlzdCBvZiBIVFRQIHN0YXR1cyBjb2RlcyB0aGF0IGFyZQorYXZhaWxhYmxlIGluIHRoaXMgbW9kdWxlIGFzIGNvbnN0YW50cy4KKwogCiAuLiBfaHR0cGNvbm5lY3Rpb24tb2JqZWN0czoKIApAQCAtNDU4LDYgKzI2MywxMSBAQAogICAgICAgTm90ZSB0aGF0IHlvdSBtdXN0IGhhdmUgcmVhZCB0aGUgd2hvbGUgcmVzcG9uc2UgYmVmb3JlIHlvdSBjYW4gc2VuZCBhIG5ldwogICAgICAgcmVxdWVzdCB0byB0aGUgc2VydmVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgYSA6ZXhjOmBDb25uZWN0aW9uRXJyb3JgIG9yIHN1YmNsYXNzIGlzIHJhaXNlZCwgdGhlCisgICAgICA6Y2xhc3M6YEhUVFBDb25uZWN0aW9uYCBvYmplY3Qgd2lsbCBiZSByZWFkeSB0byByZWNvbm5lY3Qgd2hlbgorICAgICAgYSBuZXcgcmVxdWVzdCBpcyBzZW50LgorCiAKIC4uIG1ldGhvZDo6IEhUVFBDb25uZWN0aW9uLnNldF9kZWJ1Z2xldmVsKGxldmVsKQogCkBAIC00OTYsNyArMzA2LDkgQEAKIAogLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24uY29ubmVjdCgpCiAKLSAgIENvbm5lY3QgdG8gdGhlIHNlcnZlciBzcGVjaWZpZWQgd2hlbiB0aGUgb2JqZWN0IHdhcyBjcmVhdGVkLgorICAgQ29ubmVjdCB0byB0aGUgc2VydmVyIHNwZWNpZmllZCB3aGVuIHRoZSBvYmplY3Qgd2FzIGNyZWF0ZWQuICBCeSBkZWZhdWx0LAorICAgdGhpcyBpcyBjYWxsZWQgYXV0b21hdGljYWxseSB3aGVuIG1ha2luZyBhIHJlcXVlc3QgaWYgdGhlIGNsaWVudCBkb2VzIG5vdAorICAgYWxyZWFkeSBoYXZlIGEgY29ubmVjdGlvbi4KIAogCiAuLiBtZXRob2Q6OiBIVFRQQ29ubmVjdGlvbi5jbG9zZSgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZXMucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVzLnJzdAppbmRleCBkMGMxZTU0Li5jMmJiODBkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAuY29va2llcy5yc3QKQEAgLTE0MywyNiArMTQzLDQzIEBACiAKICAgIFRoZSBrZXlzIGFyZSBjYXNlLWluc2Vuc2l0aXZlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgOm1ldGg6YH5Nb3JzZWwuX19lcV9fYCBub3cgdGFrZXMgOmF0dHI6YH5Nb3JzZWwua2V5YCBhbmQgOmF0dHI6YH5Nb3JzZWwudmFsdWVgCisgICAgICBpbnRvIGFjY291bnQuCisKIAogLi4gYXR0cmlidXRlOjogTW9yc2VsLnZhbHVlCiAKICAgIFRoZSB2YWx1ZSBvZiB0aGUgY29va2llLgogCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBhc3NpZ25pbmcgdG8gYGB2YWx1ZWBgOyB1c2UgOm1ldGg6YH5Nb3JzZWwuc2V0YCBpbnN0ZWFkLgorCiAKIC4uIGF0dHJpYnV0ZTo6IE1vcnNlbC5jb2RlZF92YWx1ZQogCiAgICBUaGUgZW5jb2RlZCB2YWx1ZSBvZiB0aGUgY29va2llIC0tLSB0aGlzIGlzIHdoYXQgc2hvdWxkIGJlIHNlbnQuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUKKyAgICAgIGFzc2lnbmluZyB0byBgYGNvZGVkX3ZhbHVlYGA7IHVzZSA6bWV0aDpgfk1vcnNlbC5zZXRgIGluc3RlYWQuCisKIAogLi4gYXR0cmlidXRlOjogTW9yc2VsLmtleQogCiAgICBUaGUgbmFtZSBvZiB0aGUgY29va2llLgogCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBhc3NpZ25pbmcgdG8gYGBrZXlgYDsgdXNlIDptZXRoOmB+TW9yc2VsLnNldGAgaW5zdGVhZC4KKwogCiAuLiBtZXRob2Q6OiBNb3JzZWwuc2V0KGtleSwgdmFsdWUsIGNvZGVkX3ZhbHVlKQogCiAgICBTZXQgdGhlICprZXkqLCAqdmFsdWUqIGFuZCAqY29kZWRfdmFsdWUqIGF0dHJpYnV0ZXMuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUKKyAgICAgIFRoZSB1bmRvY3VtZW50ZWQgKkxlZ2FsQ2hhcnMqIHBhcmFtZXRlciBpcyBpZ25vcmVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4KKyAgICAgIGEgZnV0dXJlIHZlcnNpb24uCisKIAogLi4gbWV0aG9kOjogTW9yc2VsLmlzUmVzZXJ2ZWRLZXkoSykKIApAQCAtMTkzLDYgKzIxMCwzMCBAQAogICAgVGhlIG1lYW5pbmcgZm9yICphdHRycyogaXMgdGhlIHNhbWUgYXMgaW4gOm1ldGg6YG91dHB1dGAuCiAKIAorLi4gbWV0aG9kOjogTW9yc2VsLnVwZGF0ZSh2YWx1ZXMpCisKKyAgIFVwZGF0ZSB0aGUgdmFsdWVzIGluIHRoZSBNb3JzZWwgZGljdGlvbmFyeSB3aXRoIHRoZSB2YWx1ZXMgaW4gdGhlIGRpY3Rpb25hcnkKKyAgICp2YWx1ZXMqLiAgUmFpc2UgYW4gZXJyb3IgaWYgYW55IG9mIHRoZSBrZXlzIGluIHRoZSAqdmFsdWVzKiBkaWN0IGlzIG5vdCBhCisgICB2YWxpZCA6cmZjOmAyMTA5YCBhdHRyaWJ1dGUuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBhbiBlcnJvciBpcyByYWlzZWQgZm9yIGludmFsaWQga2V5cy4KKworCisuLiBtZXRob2Q6OiBNb3JzZWwuY29weSh2YWx1ZSkKKworICAgUmV0dXJuIGEgc2hhbGxvdyBjb3B5IG9mIHRoZSBNb3JzZWwgb2JqZWN0LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgcmV0dXJuIGEgTW9yc2VsIG9iamVjdCBpbnN0ZWFkIG9mIGEgZGljdC4KKworCisuLiBtZXRob2Q6OiBNb3JzZWwuc2V0ZGVmYXVsdChrZXksIHZhbHVlPU5vbmUpCisKKyAgIFJhaXNlIGFuIGVycm9yIGlmIGtleSBpcyBub3QgYSB2YWxpZCA6cmZjOmAyMTA5YCBhdHRyaWJ1dGUsIG90aGVyd2lzZQorICAgYmVoYXZlIHRoZSBzYW1lIGFzIDptZXRoOmBkaWN0LnNldGRlZmF1bHRgLgorCisKIC4uIF9jb29raWUtZXhhbXBsZToKIAogRXhhbXBsZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5yc3QgYi9Eb2MvbGlicmFyeS9odHRwLnJzdAppbmRleCBhMzg3YTM3Li5iNmYyYzU4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odHRwLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLnJzdApAQCAtMSw3ICsxLDE2IEBACiA6bW9kOmBodHRwYCAtLS0gSFRUUCBtb2R1bGVzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLWBgaHR0cGBgIGlzIGEgcGFja2FnZSB0aGF0IGNvbGxlY3RzIHNldmVyYWwgbW9kdWxlcyBmb3Igd29ya2luZyB3aXRoIHRoZQorLi4gbW9kdWxlOjogaHR0cAorICAgOnN5bm9wc2lzOiBIVFRQIHN0YXR1cyBjb2RlcyBhbmQgbWVzc2FnZXMKKworLi4gaW5kZXg6OgorICAgcGFpcjogSFRUUDsgcHJvdG9jb2wKKyAgIHNpbmdsZTogSFRUUDsgaHR0cCAoc3RhbmRhcmQgbW9kdWxlKQorCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9odHRwL19faW5pdF9fLnB5YAorCis6bW9kOmBodHRwYCBpcyBhIHBhY2thZ2UgdGhhdCBjb2xsZWN0cyBzZXZlcmFsIG1vZHVsZXMgZm9yIHdvcmtpbmcgd2l0aCB0aGUKIEh5cGVyVGV4dCBUcmFuc2ZlciBQcm90b2NvbDoKIAogKiA6bW9kOmBodHRwLmNsaWVudGAgaXMgYSBsb3ctbGV2ZWwgSFRUUCBwcm90b2NvbCBjbGllbnQ7IGZvciBoaWdoLWxldmVsIFVSTApAQCAtOSwzICsxOCwxMDUgQEAKICogOm1vZDpgaHR0cC5zZXJ2ZXJgIGNvbnRhaW5zIGJhc2ljIEhUVFAgc2VydmVyIGNsYXNzZXMgYmFzZWQgb24gOm1vZDpgc29ja2V0c2VydmVyYAogKiA6bW9kOmBodHRwLmNvb2tpZXNgIGhhcyB1dGlsaXRpZXMgZm9yIGltcGxlbWVudGluZyBzdGF0ZSBtYW5hZ2VtZW50IHdpdGggY29va2llcwogKiA6bW9kOmBodHRwLmNvb2tpZWphcmAgcHJvdmlkZXMgcGVyc2lzdGVuY2Ugb2YgY29va2llcworCis6bW9kOmBodHRwYCBpcyBhbHNvIGEgbW9kdWxlIHRoYXQgZGVmaW5lcyBhIG51bWJlciBvZiBIVFRQIHN0YXR1cyBjb2RlcyBhbmQKK2Fzc29jaWF0ZWQgbWVzc2FnZXMgdGhyb3VnaCB0aGUgOmNsYXNzOmBodHRwLkhUVFBTdGF0dXNgIGVudW06CisKKy4uIGNsYXNzOjogSFRUUFN0YXR1cworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworICAgQSBzdWJjbGFzcyBvZiA6Y2xhc3M6YGVudW0uSW50RW51bWAgdGhhdCBkZWZpbmVzIGEgc2V0IG9mIEhUVFAgc3RhdHVzIGNvZGVzLAorICAgcmVhc29uIHBocmFzZXMgYW5kIGxvbmcgZGVzY3JpcHRpb25zIHdyaXR0ZW4gaW4gRW5nbGlzaC4KKworICAgVXNhZ2U6OgorCisgICAgICA+Pj4gZnJvbSBodHRwIGltcG9ydCBIVFRQU3RhdHVzCisgICAgICA+Pj4gSFRUUFN0YXR1cy5PSworICAgICAgPEhUVFBTdGF0dXMuT0s6IDIwMD4KKyAgICAgID4+PiBIVFRQU3RhdHVzLk9LID09IDIwMAorICAgICAgVHJ1ZQorICAgICAgPj4+IGh0dHAuSFRUUFN0YXR1cy5PSy52YWx1ZQorICAgICAgMjAwCisgICAgICA+Pj4gSFRUUFN0YXR1cy5PSy5waHJhc2UKKyAgICAgICdPSycKKyAgICAgID4+PiBIVFRQU3RhdHVzLk9LLmRlc2NyaXB0aW9uCisgICAgICAnUmVxdWVzdCBmdWxmaWxsZWQsIGRvY3VtZW50IGZvbGxvd3MnCisgICAgICA+Pj4gbGlzdChIVFRQU3RhdHVzKQorICAgICAgWzxIVFRQU3RhdHVzLkNPTlRJTlVFOiAxMDA+LCA8SFRUUFN0YXR1cy5TV0lUQ0hJTkdfUFJPVE9DT0xTOiAxMDE+LCAuLi5dCisKKy4uIF9odHRwLXN0YXR1cy1jb2RlczoKKworSFRUUCBzdGF0dXMgY29kZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1N1cHBvcnRlZCwKK2BJQU5BLXJlZ2lzdGVyZWQgPGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvaHR0cC1zdGF0dXMtY29kZXMvaHR0cC1zdGF0dXMtY29kZXMueGh0bWw+YF8KK3N0YXR1cyBjb2RlcyBhdmFpbGFibGUgaW4gOmNsYXNzOmBodHRwLkhUVFBTdGF0dXNgIGFyZToKKworPT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NvZGUgICAgRW51bSBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV0YWlscworPT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2BgMTAwYGAgYGBDT05USU5VRWBgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi4yLjEKK2BgMTAxYGAgYGBTV0lUQ0hJTkdfUFJPVE9DT0xTYGAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi4yLjIKK2BgMTAyYGAgYGBQUk9DRVNTSU5HYGAgICAgICAgICAgICAgICAgICAgICAgV2ViREFWIDpyZmM6YDI1MThgLCBTZWN0aW9uIDEwLjEKK2BgMjAwYGAgYGBPS2BgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi4zLjEKK2BgMjAxYGAgYGBDUkVBVEVEYGAgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi4zLjIKK2BgMjAyYGAgYGBBQ0NFUFRFRGBgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi4zLjMKK2BgMjAzYGAgYGBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTmBgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi4zLjQKK2BgMjA0YGAgYGBOT19DT05URU5UYGAgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi4zLjUKK2BgMjA1YGAgYGBSRVNFVF9DT05URU5UYGAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi4zLjYKK2BgMjA2YGAgYGBQQVJUSUFMX0NPTlRFTlRgYCAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzM2AsIFNlY3Rpb24gNC4xCitgYDIwN2BgIGBgTVVMVElfU1RBVFVTYGAgICAgICAgICAgICAgICAgICAgIFdlYkRBViA6cmZjOmA0OTE4YCwgU2VjdGlvbiAxMS4xCitgYDIwOGBgIGBgQUxSRUFEWV9SRVBPUlRFRGBgICAgICAgICAgICAgICAgIFdlYkRBViBCaW5kaW5nIEV4dGVuc2lvbnMgOnJmYzpgNTg0MmAsIFNlY3Rpb24gNy4xIChFeHBlcmltZW50YWwpCitgYDIyNmBgIGBgSU1fVVNFRGBgICAgICAgICAgICAgICAgICAgICAgICAgIERlbHRhIEVuY29kaW5nIGluIEhUVFAgOnJmYzpgMzIyOWAsIFNlY3Rpb24gMTAuNC4xCitgYDMwMGBgIGBgTVVMVElQTEVfQ0hPSUNFU2BgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNC4xCitgYDMwMWBgIGBgTU9WRURfUEVSTUFORU5UTFlgYCAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNC4yCitgYDMwMmBgIGBgRk9VTkRgYCAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNC4zCitgYDMwM2BgIGBgU0VFX09USEVSYGAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNC40CitgYDMwNGBgIGBgTk9UX01PRElGSUVEYGAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzJgLCBTZWN0aW9uIDQuMQorYGAzMDVgYCBgYFVTRV9QUk9YWWBgICAgICAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjQuNQorYGAzMDdgYCBgYFRFTVBPUkFSWV9SRURJUkVDVGBgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjQuNworYGAzMDhgYCBgYFBFUk1BTkVOVF9SRURJUkVDVGBgICAgICAgICAgICAgICBQZXJtYW5lbnQgUmVkaXJlY3QgOnJmYzpgNzIzOGAsIFNlY3Rpb24gMyAoRXhwZXJpbWVudGFsKQorYGA0MDBgYCBgYEJBRF9SRVFVRVNUYGAgICAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjUuMQorYGA0MDFgYCBgYFVOQVVUSE9SSVpFRGBgICAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSBBdXRoZW50aWNhdGlvbiA6cmZjOmA3MjM1YCwgU2VjdGlvbiAzLjEKK2BgNDAyYGAgYGBQQVlNRU5UX1JFUVVJUkVEYGAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjIKK2BgNDAzYGAgYGBGT1JCSURERU5gYCAgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjMKK2BgNDA0YGAgYGBOT1RfRk9VTkRgYCAgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjQKK2BgNDA1YGAgYGBNRVRIT0RfTk9UX0FMTE9XRURgYCAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjUKK2BgNDA2YGAgYGBOT1RfQUNDRVBUQUJMRWBgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjYKK2BgNDA3YGAgYGBQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRGBgICAgSFRUUC8xLjEgQXV0aGVudGljYXRpb24gOnJmYzpgNzIzNWAsIFNlY3Rpb24gMy4yCitgYDQwOGBgIGBgUkVRVUVTVF9USU1FT1VUYGAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS43CitgYDQwOWBgIGBgQ09ORkxJQ1RgYCAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS44CitgYDQxMGBgIGBgR09ORWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS45CitgYDQxMWBgIGBgTEVOR1RIX1JFUVVJUkVEYGAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS4xMAorYGA0MTJgYCBgYFBSRUNPTkRJVElPTl9GQUlMRURgYCAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMyYCwgU2VjdGlvbiA0LjIKK2BgNDEzYGAgYGBSRVFVRVNUX0VOVElUWV9UT09fTEFSR0VgYCAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjExCitgYDQxNGBgIGBgUkVRVUVTVF9VUklfVE9PX0xPTkdgYCAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS4xMgorYGA0MTVgYCBgYFVOU1VQUE9SVEVEX01FRElBX1RZUEVgYCAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjUuMTMKK2BgNDE2YGAgYGBSRVFVRVNUX1JBTkdFX05PVF9TQVRJU0ZJQUJMRWBgICAgSFRUUC8xLjEgUmFuZ2UgUmVxdWVzdHMgOnJmYzpgNzIzM2AsIFNlY3Rpb24gNC40CitgYDQxN2BgIGBgRVhQRUNUQVRJT05fRkFJTEVEYGAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS4xNAorYGA0MjJgYCBgYFVOUFJPQ0VTU0FCTEVfRU5USVRZYGAgICAgICAgICAgICBXZWJEQVYgOnJmYzpgNDkxOGAsIFNlY3Rpb24gMTEuMgorYGA0MjNgYCBgYExPQ0tFRGBgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJEQVYgOnJmYzpgNDkxOGAsIFNlY3Rpb24gMTEuMworYGA0MjRgYCBgYEZBSUxFRF9ERVBFTkRFTkNZYGAgICAgICAgICAgICAgICBXZWJEQVYgOnJmYzpgNDkxOGAsIFNlY3Rpb24gMTEuNAorYGA0MjZgYCBgYFVQR1JBREVfUkVRVUlSRURgYCAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjUuMTUKK2BgNDI4YGAgYGBQUkVDT05ESVRJT05fUkVRVUlSRURgYCAgICAgICAgICAgQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcyA6cmZjOmA2NTg1YAorYGA0MjlgYCBgYFRPT19NQU5ZX1JFUVVFU1RTYGAgICAgICAgICAgICAgICBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzIDpyZmM6YDY1ODVgCitgYDQzMWBgIGBgUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRWBgIEFkZGl0aW9uYWwgSFRUUCBTdGF0dXMgQ29kZXMgOnJmYzpgNjU4NWAKK2BgNTAwYGAgYGBJTlRFUk5BTF9TRVJWRVJfRVJST1JgYCAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi42LjEKK2BgNTAxYGAgYGBOT1RfSU1QTEVNRU5URURgYCAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi42LjIKK2BgNTAyYGAgYGBCQURfR0FURVdBWWBgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi42LjMKK2BgNTAzYGAgYGBTRVJWSUNFX1VOQVZBSUxBQkxFYGAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi42LjQKK2BgNTA0YGAgYGBHQVRFV0FZX1RJTUVPVVRgYCAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi42LjUKK2BgNTA1YGAgYGBIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRGBgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi42LjYKK2BgNTA2YGAgYGBWQVJJQU5UX0FMU09fTkVHT1RJQVRFU2BgICAgICAgICAgVHJhbnNwYXJlbnQgQ29udGVudCBOZWdvdGlhdGlvbiBpbiBIVFRQIDpyZmM6YDIyOTVgLCBTZWN0aW9uIDguMSAoRXhwZXJpbWVudGFsKQorYGA1MDdgYCBgYElOU1VGRklDSUVOVF9TVE9SQUdFYGAgICAgICAgICAgICBXZWJEQVYgOnJmYzpgNDkxOGAsIFNlY3Rpb24gMTEuNQorYGA1MDhgYCBgYExPT1BfREVURUNURURgYCAgICAgICAgICAgICAgICAgICBXZWJEQVYgQmluZGluZyBFeHRlbnNpb25zIDpyZmM6YDU4NDJgLCBTZWN0aW9uIDcuMiAoRXhwZXJpbWVudGFsKQorYGA1MTBgYCBgYE5PVF9FWFRFTkRFRGBgICAgICAgICAgICAgICAgICAgICBBbiBIVFRQIEV4dGVuc2lvbiBGcmFtZXdvcmsgOnJmYzpgMjc3NGAsIFNlY3Rpb24gNyAoRXhwZXJpbWVudGFsKQorYGA1MTFgYCBgYE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRURgYCBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzIDpyZmM6YDY1ODVgLCBTZWN0aW9uIDYKKz09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0luIG9yZGVyIHRvIHByZXNlcnZlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBlbnVtIHZhbHVlcyBhcmUgYWxzbyBwcmVzZW50CitpbiB0aGUgOm1vZDpgaHR0cC5jbGllbnRgIG1vZHVsZSBpbiB0aGUgZm9ybSBvZiBjb25zdGFudHMuIFRoZSBlbnVtIG5hbWUgaXMKK2VxdWFsIHRvIHRoZSBjb25zdGFudCBuYW1lIChpLmUuIGBgaHR0cC5IVFRQU3RhdHVzLk9LYGAgaXMgYWxzbyBhdmFpbGFibGUgYXMKK2BgaHR0cC5jbGllbnQuT0tgYCkuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdCBiL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CmluZGV4IGZhNzM2ZmUuLjE1YjA5MzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CkBAIC0zNyw2ICszNywxOSBAQAogICAgaW5pdGlhbGl6ZWQuIElmICpob3N0KiBpcyBub3Qgc3BlY2lmaWVkLCBgYCcnYGAgKHRoZSBsb2NhbCBob3N0KSBpcyB1c2VkLiBJZgogICAgKnBvcnQqIGlzIG9taXR0ZWQsIHRoZSBzdGFuZGFyZCBJTUFQNCBwb3J0ICgxNDMpIGlzIHVzZWQuCiAKKyAgIFRoZSA6Y2xhc3M6YElNQVA0YCBjbGFzcyBzdXBwb3J0cyB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gIFdoZW4gdXNlZAorICAgbGlrZSB0aGlzLCB0aGUgSU1BUDQgYGBMT0dPVVRgYCBjb21tYW5kIGlzIGlzc3VlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlCisgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IGV4aXRzLiAgRS5nLjo6CisKKyAgICA+Pj4gZnJvbSBpbWFwbGliIGltcG9ydCBJTUFQNAorICAgID4+PiB3aXRoIElNQVA0KCJkb21haW4ub3JnIikgYXMgTToKKyAgICAuLi4gICAgIE0ubm9vcCgpCisgICAgLi4uCisgICAgKCdPSycsIFtiJ05vdGhpbmcgQWNjb21wbGlzaGVkLiBkMjVpZjY1aHk5MDN3ZW8uODcnXSkKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFN1cHBvcnQgZm9yIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHdhcyBhZGRlZC4KKwogVGhyZWUgZXhjZXB0aW9ucyBhcmUgZGVmaW5lZCBhcyBhdHRyaWJ1dGVzIG9mIHRoZSA6Y2xhc3M6YElNQVA0YCBjbGFzczoKIAogCkBAIC02NCw3ICs3Nyw4IEBACiBUaGVyZSdzIGFsc28gYSBzdWJjbGFzcyBmb3Igc2VjdXJlIGNvbm5lY3Rpb25zOgogCiAKLS4uIGNsYXNzOjogSU1BUDRfU1NMKGhvc3Q9JycsIHBvcnQ9SU1BUDRfU1NMX1BPUlQsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSwgc3NsX2NvbnRleHQ9Tm9uZSkKKy4uIGNsYXNzOjogSU1BUDRfU1NMKGhvc3Q9JycsIHBvcnQ9SU1BUDRfU1NMX1BPUlQsIGtleWZpbGU9Tm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Tm9uZSwgc3NsX2NvbnRleHQ9Tm9uZSkKIAogICAgVGhpcyBpcyBhIHN1YmNsYXNzIGRlcml2ZWQgZnJvbSA6Y2xhc3M6YElNQVA0YCB0aGF0IGNvbm5lY3RzIG92ZXIgYW4gU1NMCiAgICBlbmNyeXB0ZWQgc29ja2V0ICh0byB1c2UgdGhpcyBjbGFzcyB5b3UgbmVlZCBhIHNvY2tldCBtb2R1bGUgdGhhdCB3YXMgY29tcGlsZWQKQEAgLTE5OCw2ICsyMTIsMTAgQEAKICAgIHRoYXQgd2lsbCBiZSBiYXNlNjQgZW5jb2RlZCBhbmQgc2VudCB0byB0aGUgc2VydmVyLiAgSXQgc2hvdWxkIHJldHVybgogICAgYGBOb25lYGAgaWYgdGhlIGNsaWVudCBhYm9ydCByZXNwb25zZSBgYCpgYCBzaG91bGQgYmUgc2VudCBpbnN0ZWFkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgc3RyaW5nIHVzZXJuYW1lcyBhbmQgcGFzc3dvcmRzIGFyZSBub3cgZW5jb2RlZCB0byBgYHV0Zi04YGAgaW5zdGVhZCBvZgorICAgICAgYmVpbmcgbGltaXRlZCB0byBBU0NJSS4KKwogCiAuLiBtZXRob2Q6OiBJTUFQNC5jaGVjaygpCiAKQEAgLTIzMCw2ICsyNDgsMTYgQEAKICAgIERlbGV0ZSB0aGUgQUNMcyAocmVtb3ZlIGFueSByaWdodHMpIHNldCBmb3Igd2hvIG9uIG1haWxib3guCiAKIAorLi4gbWV0aG9kOjogSU1BUDQuZW5hYmxlKGNhcGFiaWxpdHkpCisKKyAgIEVuYWJsZSAqY2FwYWJpbGl0eSogKHNlZSA6cmZjOmA1MTYxYCkuICBNb3N0IGNhcGFiaWxpdGllcyBkbyBub3QgbmVlZCB0byBiZQorICAgZW5hYmxlZC4gIEN1cnJlbnRseSBvbmx5IHRoZSBgYFVURjg9QUNDRVBUYGAgY2FwYWJpbGl0eSBpcyBzdXBwb3J0ZWQKKyAgIChzZWUgOlJGQzpgNjg1NWApLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIFRoZSA6bWV0aDpgZW5hYmxlYCBtZXRob2QgaXRzZWxmLCBhbmQgOlJGQzpgNjg1NWAgc3VwcG9ydC4KKworCiAuLiBtZXRob2Q6OiBJTUFQNC5leHB1bmdlKCkKIAogICAgUGVybWFuZW50bHkgcmVtb3ZlIGRlbGV0ZWQgaXRlbXMgZnJvbSBzZWxlY3RlZCBtYWlsYm94LiBHZW5lcmF0ZXMgYW4gYGBFWFBVTkdFYGAKQEAgLTM2Nyw3ICszOTUsOSBAQAogICAgU2VhcmNoIG1haWxib3ggZm9yIG1hdGNoaW5nIG1lc3NhZ2VzLiAgKmNoYXJzZXQqIG1heSBiZSBgYE5vbmVgYCwgaW4gd2hpY2ggY2FzZQogICAgbm8gYGBDSEFSU0VUYGAgd2lsbCBiZSBzcGVjaWZpZWQgaW4gdGhlIHJlcXVlc3QgdG8gdGhlIHNlcnZlci4gIFRoZSBJTUFQCiAgICBwcm90b2NvbCByZXF1aXJlcyB0aGF0IGF0IGxlYXN0IG9uZSBjcml0ZXJpb24gYmUgc3BlY2lmaWVkOyBhbiBleGNlcHRpb24gd2lsbCBiZQotICAgcmFpc2VkIHdoZW4gdGhlIHNlcnZlciByZXR1cm5zIGFuIGVycm9yLgorICAgcmFpc2VkIHdoZW4gdGhlIHNlcnZlciByZXR1cm5zIGFuIGVycm9yLiAgKmNoYXJzZXQqIG11c3QgYmUgYGBOb25lYGAgaWYKKyAgIHRoZSBgYFVURjg9QUNDRVBUYGAgY2FwYWJpbGl0eSB3YXMgZW5hYmxlZCB1c2luZyB0aGUgOm1ldGg6YGVuYWJsZWAKKyAgIGNvbW1hbmQuCiAKICAgIEV4YW1wbGU6OgogCkBAIC01MjksNiArNTU5LDE1IEBACiAgICB0aGUgbW9kdWxlIHZhcmlhYmxlIGBgRGVidWdgYC4gIFZhbHVlcyBncmVhdGVyIHRoYW4gdGhyZWUgdHJhY2UgZWFjaCBjb21tYW5kLgogCiAKKy4uIGF0dHJpYnV0ZTo6IElNQVA0LnV0ZjhfZW5hYmxlZAorCisgICBCb29sZWFuIHZhbHVlIHRoYXQgaXMgbm9ybWFsbHkgYGBGYWxzZWBgLCBidXQgaXMgc2V0IHRvIGBgVHJ1ZWBgIGlmIGFuCisgICA6bWV0aDpgZW5hYmxlYCBjb21tYW5kIGlzIHN1Y2Nlc3NmdWxseSBpc3N1ZWQgZm9yIHRoZSBgYFVURjg9QUNDRVBUYGAKKyAgIGNhcGFiaWxpdHkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIF9pbWFwNC1leGFtcGxlOgogCiBJTUFQNCBFeGFtcGxlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbWdoZHIucnN0IGIvRG9jL2xpYnJhcnkvaW1naGRyLnJzdAppbmRleCA5ZTg5NTIzLi5mMTFmNmRjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbWdoZHIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltZ2hkci5yc3QKQEAgLTQ4LDYgKzQ4LDE0IEBACiArLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBgYCdwbmcnYGAgIHwgUG9ydGFibGUgTmV0d29yayBHcmFwaGljcyAgICAgICAgIHwKICstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgJ3dlYnAnYGAgfCBXZWJQIGZpbGVzICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGAnZXhyJ2BgICB8IE9wZW5FWFIgRmlsZXMgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgIFRoZSAqZXhyKiBhbmQgKndlYnAqIGZvcm1hdHMgd2VyZSBhZGRlZC4KKwogCiBZb3UgY2FuIGV4dGVuZCB0aGUgbGlzdCBvZiBmaWxlIHR5cGVzIDptb2Q6YGltZ2hkcmAgY2FuIHJlY29nbml6ZSBieSBhcHBlbmRpbmcKIHRvIHRoaXMgdmFyaWFibGU6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbXAucnN0IGIvRG9jL2xpYnJhcnkvaW1wLnJzdAppbmRleCA4M2E1MmU0Li42OGE2YjY4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbXAucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltcC5yc3QKQEAgLTE5NywxMSArMTk3LDkgQEAKICAgIHZhbHVlIHdvdWxkIGJlIGBgL2Zvby9iYXIvX19weWNhY2hlX18vYmF6LmNweXRob24tMzIucHljYGAgZm9yIFB5dGhvbiAzLjIuCiAgICBUaGUgYGBjcHl0aG9uLTMyYGAgc3RyaW5nIGNvbWVzIGZyb20gdGhlIGN1cnJlbnQgbWFnaWMgdGFnIChzZWUKICAgIDpmdW5jOmBnZXRfdGFnYDsgaWYgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIG5vdCBkZWZpbmVkIHRoZW4KLSAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdpbGwgYmUgcmFpc2VkKS4gIFRoZSByZXR1cm5lZCBwYXRoIHdpbGwgZW5kIGluCi0gICBgYC5weWNgYCB3aGVuIGBgX19kZWJ1Z19fYGAgaXMgYGBUcnVlYGAgb3IgYGAucHlvYGAgZm9yIGFuIG9wdGltaXplZCBQeXRob24KLSAgIChpLmUuIGBgX19kZWJ1Z19fYGAgaXMgYGBGYWxzZWBgKS4gIEJ5IHBhc3NpbmcgaW4gYGBUcnVlYGAgb3IgYGBGYWxzZWBgIGZvcgotICAgKmRlYnVnX292ZXJyaWRlKiB5b3UgY2FuIG92ZXJyaWRlIHRoZSBzeXN0ZW0ncyB2YWx1ZSBmb3IgYGBfX2RlYnVnX19gYCBmb3IKLSAgIGV4dGVuc2lvbiBzZWxlY3Rpb24uCisgICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB3aWxsIGJlIHJhaXNlZCkuIEJ5IHBhc3NpbmcgaW4gYGBUcnVlYGAgb3IKKyAgIGBgRmFsc2VgYCBmb3IgKmRlYnVnX292ZXJyaWRlKiB5b3UgY2FuIG92ZXJyaWRlIHRoZSBzeXN0ZW0ncyB2YWx1ZSBmb3IKKyAgIGBgX19kZWJ1Z19fYGAsIGxlYWRpbmcgdG8gb3B0aW1pemVkIGJ5dGVjb2RlLgogCiAgICAqcGF0aCogbmVlZCBub3QgZXhpc3QuCiAKQEAgLTIxMiw2ICsyMTAsOSBAQAogICAgLi4gZGVwcmVjYXRlZDo6IDMuNAogICAgICAgVXNlIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZWAgaW5zdGVhZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSAqZGVidWdfb3ZlcnJpZGUqIHBhcmFtZXRlciBubyBsb25nZXIgY3JlYXRlcyBhIGBgLnB5b2BgIGZpbGUuCisKIAogLi4gZnVuY3Rpb246OiBzb3VyY2VfZnJvbV9jYWNoZShwYXRoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0IGIvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdAppbmRleCA0MjgxMmY2Li4wMmIwYTExIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKQEAgLTU1LDYgKzU1LDEyIEBACiAgICAgOnBlcDpgNDUxYAogICAgICAgICBBIE1vZHVsZVNwZWMgVHlwZSBmb3IgdGhlIEltcG9ydCBTeXN0ZW0KIAorICAgIDpwZXA6YDQ4OGAKKyAgICAgICAgRWxpbWluYXRpb24gb2YgUFlPIGZpbGVzCisKKyAgICA6cGVwOmA0ODlgCisgICAgICAgIE11bHRpLXBoYXNlIGV4dGVuc2lvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24KKwogICAgIDpwZXA6YDMxMjBgCiAgICAgICAgIFVzaW5nIFVURi04IGFzIHRoZSBEZWZhdWx0IFNvdXJjZSBFbmNvZGluZwogCkBAIC02OSw2ICs3NSwxMCBAQAogCiAgICAgQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluIDpmdW5jOmBfX2ltcG9ydF9fYCBmdW5jdGlvbi4KIAorICAgIC4uIG5vdGU6OgorICAgICAgIFByb2dyYW1tYXRpYyBpbXBvcnRpbmcgb2YgbW9kdWxlcyBzaG91bGQgdXNlIDpmdW5jOmBpbXBvcnRfbW9kdWxlYAorICAgICAgIGluc3RlYWQgb2YgdGhpcyBmdW5jdGlvbi4KKwogLi4gZnVuY3Rpb246OiBpbXBvcnRfbW9kdWxlKG5hbWUsIHBhY2thZ2U9Tm9uZSkKIAogICAgIEltcG9ydCBhIG1vZHVsZS4gVGhlICpuYW1lKiBhcmd1bWVudCBzcGVjaWZpZXMgd2hhdCBtb2R1bGUgdG8KQEAgLTgxLDEyICs5MSwxNSBAQAogCiAgICAgVGhlIDpmdW5jOmBpbXBvcnRfbW9kdWxlYCBmdW5jdGlvbiBhY3RzIGFzIGEgc2ltcGxpZnlpbmcgd3JhcHBlciBhcm91bmQKICAgICA6ZnVuYzpgaW1wb3J0bGliLl9faW1wb3J0X19gLiBUaGlzIG1lYW5zIGFsbCBzZW1hbnRpY3Mgb2YgdGhlIGZ1bmN0aW9uIGFyZQotICAgIGRlcml2ZWQgZnJvbSA6ZnVuYzpgaW1wb3J0bGliLl9faW1wb3J0X19gLCBpbmNsdWRpbmcgcmVxdWlyaW5nIHRoZSBwYWNrYWdlCi0gICAgZnJvbSB3aGljaCBhbiBpbXBvcnQgaXMgb2NjdXJyaW5nIHRvIGhhdmUgYmVlbiBwcmV2aW91c2x5IGltcG9ydGVkCi0gICAgKGkuZS4sICpwYWNrYWdlKiBtdXN0IGFscmVhZHkgYmUgaW1wb3J0ZWQpLiBUaGUgbW9zdCBpbXBvcnRhbnQgZGlmZmVyZW5jZQotICAgIGlzIHRoYXQgOmZ1bmM6YGltcG9ydF9tb2R1bGVgIHJldHVybnMgdGhlIHNwZWNpZmllZCBwYWNrYWdlIG9yIG1vZHVsZQotICAgIChlLmcuIGBgcGtnLm1vZGBgKSwgd2hpbGUgOmZ1bmM6YF9faW1wb3J0X19gIHJldHVybnMgdGhlCi0gICAgdG9wLWxldmVsIHBhY2thZ2Ugb3IgbW9kdWxlIChlLmcuIGBgcGtnYGApLgorICAgIGRlcml2ZWQgZnJvbSA6ZnVuYzpgaW1wb3J0bGliLl9faW1wb3J0X19gLiBUaGUgbW9zdCBpbXBvcnRhbnQgZGlmZmVyZW5jZQorICAgIGJldHdlZW4gdGhlc2UgdHdvIGZ1bmN0aW9ucyBpcyB0aGF0IDpmdW5jOmBpbXBvcnRfbW9kdWxlYCByZXR1cm5zIHRoZQorICAgIHNwZWNpZmllZCBwYWNrYWdlIG9yIG1vZHVsZSAoZS5nLiBgYHBrZy5tb2RgYCksIHdoaWxlIDpmdW5jOmBfX2ltcG9ydF9fYAorICAgIHJldHVybnMgdGhlIHRvcC1sZXZlbCBwYWNrYWdlIG9yIG1vZHVsZSAoZS5nLiBgYHBrZ2BgKS4KKworICAgIElmIHlvdSBhcmUgZHluYW1pY2FsbHkgaW1wb3J0aW5nIGEgbW9kdWxlIHRoYXQgd2FzIGNyZWF0ZWQgc2luY2UgdGhlCisgICAgaW50ZXJwcmV0ZXIgYmVnYW4gZXhlY3V0aW9uIChlLmcuLCBjcmVhdGVkIGEgUHl0aG9uIHNvdXJjZSBmaWxlKSwgeW91IG1heQorICAgIG5lZWQgdG8gY2FsbCA6ZnVuYzpgaW52YWxpZGF0ZV9jYWNoZXNgIGluIG9yZGVyIGZvciB0aGUgbmV3IG1vZHVsZSB0byBiZQorICAgIG5vdGljZWQgYnkgdGhlIGltcG9ydCBzeXN0ZW0uCiAKICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgIFBhcmVudCBwYWNrYWdlcyBhcmUgYXV0b21hdGljYWxseSBpbXBvcnRlZC4KQEAgLTIxNyw3ICsyMzAsNyBAQAogICAgLi4gZGVwcmVjYXRlZDo6IDMuMwogICAgICAgVXNlIDpjbGFzczpgTWV0YVBhdGhGaW5kZXJgIG9yIDpjbGFzczpgUGF0aEVudHJ5RmluZGVyYCBpbnN0ZWFkLgogCi0gICAuLiBtZXRob2Q6OiBmaW5kX21vZHVsZShmdWxsbmFtZSwgcGF0aD1Ob25lKQorICAgLi4gYWJzdHJhY3RtZXRob2Q6OiBmaW5kX21vZHVsZShmdWxsbmFtZSwgcGF0aD1Ob25lKQogCiAgICAgICBBbiBhYnN0YWN0IG1ldGhvZCBmb3IgZmluZGluZyBhIDp0ZXJtOmBsb2FkZXJgIGZvciB0aGUgc3BlY2lmaWVkCiAgICAgICBtb2R1bGUuICBPcmlnaW5hbGx5IHNwZWNpZmllZCBpbiA6cGVwOmAzMDJgLCB0aGlzIG1ldGhvZCB3YXMgbWVhbnQKQEAgLTM0MSwxMyArMzU0LDE2IEBACiAKICAgICAuLiBtZXRob2Q6OiBjcmVhdGVfbW9kdWxlKHNwZWMpCiAKLSAgICAgICBBbiBvcHRpb25hbCBtZXRob2QgdGhhdCByZXR1cm5zIHRoZSBtb2R1bGUgb2JqZWN0IHRvIHVzZSB3aGVuCi0gICAgICAgaW1wb3J0aW5nIGEgbW9kdWxlLiAgY3JlYXRlX21vZHVsZSgpIG1heSBhbHNvIHJldHVybiBgYE5vbmVgYCwKLSAgICAgICBpbmRpY2F0aW5nIHRoYXQgdGhlIGRlZmF1bHQgbW9kdWxlIGNyZWF0aW9uIHNob3VsZCB0YWtlIHBsYWNlCi0gICAgICAgaW5zdGVhZC4KKyAgICAgICBBIG1ldGhvZCB0aGF0IHJldHVybnMgdGhlIG1vZHVsZSBvYmplY3QgdG8gdXNlIHdoZW4KKyAgICAgICBpbXBvcnRpbmcgYSBtb2R1bGUuICBUaGlzIG1ldGhvZCBtYXkgcmV0dXJuIGBgTm9uZWBgLAorICAgICAgIGluZGljYXRpbmcgdGhhdCBkZWZhdWx0IG1vZHVsZSBjcmVhdGlvbiBzZW1hbnRpY3Mgc2hvdWxkIHRha2UgcGxhY2UuCiAKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICAgU3RhcnRpbmcgaW4gUHl0aG9uIDMuNiwgdGhpcyBtZXRob2Qgd2lsbCBub3QgYmUgb3B0aW9uYWwgd2hlbgorICAgICAgICAgIDptZXRoOmBleGVjX21vZHVsZWAgaXMgZGVmaW5lZC4KKwogICAgIC4uIG1ldGhvZDo6IGV4ZWNfbW9kdWxlKG1vZHVsZSkKIAogICAgICAgIEFuIGFic3RyYWN0IG1ldGhvZCB0aGF0IGV4ZWN1dGVzIHRoZSBtb2R1bGUgaW4gaXRzIG93biBuYW1lc3BhY2UKQEAgLTQxMSw3ICs0MjcsNyBAQAogCiAgICAgICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjQKICAgICAgICAgICAgVGhlIHJlY29tbWVuZGVkIEFQSSBmb3IgbG9hZGluZyBhIG1vZHVsZSBpcyA6bWV0aDpgZXhlY19tb2R1bGVgCi0gICAgICAgICAgIChhbmQgb3B0aW9uYWxseSA6bWV0aDpgY3JlYXRlX21vZHVsZWApLiAgTG9hZGVycyBzaG91bGQgaW1wbGVtZW50CisgICAgICAgICAgIChhbmQgOm1ldGg6YGNyZWF0ZV9tb2R1bGVgKS4gIExvYWRlcnMgc2hvdWxkIGltcGxlbWVudAogICAgICAgICAgICBpdCBpbnN0ZWFkIG9mIGxvYWRfbW9kdWxlKCkuICBUaGUgaW1wb3J0IG1hY2hpbmVyeSB0YWtlcyBjYXJlIG9mCiAgICAgICAgICAgIGFsbCB0aGUgb3RoZXIgcmVzcG9uc2liaWxpdGllcyBvZiBsb2FkX21vZHVsZSgpIHdoZW4gZXhlY19tb2R1bGUoKQogICAgICAgICAgICBpcyBpbXBsZW1lbnRlZC4KQEAgLTQzNyw3ICs0NTMsNyBAQAogICAgIDpwZXA6YDMwMmAgcHJvdG9jb2wgZm9yIGxvYWRpbmcgYXJiaXRyYXJ5IHJlc291cmNlcyBmcm9tIHRoZSBzdG9yYWdlCiAgICAgYmFjay1lbmQuCiAKLSAgICAuLiBtZXRob2Q6OiBnZXRfZGF0YShwYXRoKQorICAgIC4uIGFic3RyYWN0bWV0aG9kOjogZ2V0X2RhdGEocGF0aCkKIAogICAgICAgICBBbiBhYnN0cmFjdCBtZXRob2QgdG8gcmV0dXJuIHRoZSBieXRlcyBmb3IgdGhlIGRhdGEgbG9jYXRlZCBhdCAqcGF0aCouCiAgICAgICAgIExvYWRlcnMgdGhhdCBoYXZlIGEgZmlsZS1saWtlIHN0b3JhZ2UgYmFjay1lbmQKQEAgLTQ3Myw3ICs0ODksNyBAQAogICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgICAgICBObyBsb25nZXIgYWJzdHJhY3QgYW5kIGEgY29uY3JldGUgaW1wbGVtZW50YXRpb24gaXMgcHJvdmlkZWQuCiAKLSAgICAuLiBtZXRob2Q6OiBnZXRfc291cmNlKGZ1bGxuYW1lKQorICAgIC4uIGFic3RyYWN0bWV0aG9kOjogZ2V0X3NvdXJjZShmdWxsbmFtZSkKIAogICAgICAgICBBbiBhYnN0cmFjdCBtZXRob2QgdG8gcmV0dXJuIHRoZSBzb3VyY2Ugb2YgYSBtb2R1bGUuIEl0IGlzIHJldHVybmVkIGFzCiAgICAgICAgIGEgdGV4dCBzdHJpbmcgdXNpbmcgOnRlcm06YHVuaXZlcnNhbCBuZXdsaW5lc2AsIHRyYW5zbGF0aW5nIGFsbApAQCAtNDkzLDcgKzUwOSw3IEBACiAgICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICAgICAgIFJhaXNlcyA6ZXhjOmBJbXBvcnRFcnJvcmAgaW5zdGVhZCBvZiA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KIAotICAgIC4uIG1ldGhvZDo6IHNvdXJjZV90b19jb2RlKGRhdGEsIHBhdGg9JzxzdHJpbmc+JykKKyAgICAuLiBzdGF0aWNtZXRob2Q6OiBzb3VyY2VfdG9fY29kZShkYXRhLCBwYXRoPSc8c3RyaW5nPicpCiAKICAgICAgICAgQ3JlYXRlIGEgY29kZSBvYmplY3QgZnJvbSBQeXRob24gc291cmNlLgogCkBAIC01MDIsOCArNTE4LDE0IEBACiAgICAgICAgIHRoZSAicGF0aCIgdG8gd2hlcmUgdGhlIHNvdXJjZSBjb2RlIG9yaWdpbmF0ZWQgZnJvbSwgd2hpY2ggY2FuIGJlIGFuCiAgICAgICAgIGFic3RyYWN0IGNvbmNlcHQgKGUuZy4gbG9jYXRpb24gaW4gYSB6aXAgZmlsZSkuCiAKKyAgICAgICAgV2l0aCB0aGUgc3Vic2VxdWVudCBjb2RlIG9iamVjdCBvbmUgY2FuIGV4ZWN1dGUgaXQgaW4gYSBtb2R1bGUgYnkKKyAgICAgICAgcnVubmluZyBgYGV4ZWMoY29kZSwgbW9kdWxlLl9fZGljdF9fKWBgLgorCiAgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisgICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICAgIE1hZGUgdGhlIG1ldGhvZCBzdGF0aWMuCisKICAgICAuLiBtZXRob2Q6OiBleGVjX21vZHVsZShtb2R1bGUpCiAKICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiA6bWV0aDpgTG9hZGVyLmV4ZWNfbW9kdWxlYC4KQEAgLTUyNCw3ICs1NDYsNyBAQAogICAgIHdoZW4gaW1wbGVtZW50ZWQsIGhlbHBzIGEgbW9kdWxlIHRvIGJlIGV4ZWN1dGVkIGFzIGEgc2NyaXB0LiBUaGUgQUJDCiAgICAgcmVwcmVzZW50cyBhbiBvcHRpb25hbCA6cGVwOmAzMDJgIHByb3RvY29sLgogCi0gICAgLi4gbWV0aG9kOjogZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQorICAgIC4uIGFic3RyYWN0bWV0aG9kOjogZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQogCiAgICAgICAgIEFuIGFic3RyYWN0IG1ldGhvZCB0aGF0IGlzIHRvIHJldHVybiB0aGUgdmFsdWUgb2YgOmF0dHI6YF9fZmlsZV9fYCBmb3IKICAgICAgICAgdGhlIHNwZWNpZmllZCBtb2R1bGUuIElmIG5vIHBhdGggaXMgYXZhaWxhYmxlLCA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMKQEAgLTU2NCwxMSArNTg2LDExIEBACiAgICAgICAuLiBkZXByZWNhdGVkOjogMy40CiAgICAgICAgICBVc2UgOm1ldGg6YExvYWRlci5leGVjX21vZHVsZWAgaW5zdGVhZC4KIAotICAgLi4gbWV0aG9kOjogZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQorICAgLi4gYWJzdHJhY3RtZXRob2Q6OiBnZXRfZmlsZW5hbWUoZnVsbG5hbWUpCiAKICAgICAgIFJldHVybnMgOmF0dHI6YHBhdGhgLgogCi0gICAuLiBtZXRob2Q6OiBnZXRfZGF0YShwYXRoKQorICAgLi4gYWJzdHJhY3RtZXRob2Q6OiBnZXRfZGF0YShwYXRoKQogCiAgICAgICBSZWFkcyAqcGF0aCogYXMgYSBiaW5hcnkgZmlsZSBhbmQgcmV0dXJucyB0aGUgYnl0ZXMgZnJvbSBpdC4KIApAQCAtNjg5LDYgKzcxMSw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBVc2UgOmF0dHI6YEJZVEVDT0RFX1NVRkZJWEVTYCBpbnN0ZWFkLgorCiAuLiBhdHRyaWJ1dGU6OiBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMKIAogICAgQSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSBmaWxlIHN1ZmZpeGVzIGZvciBvcHRpbWl6ZWQgYnl0ZWNvZGUKQEAgLTY5NiwxNCArNzIxLDE5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBVc2UgOmF0dHI6YEJZVEVDT0RFX1NVRkZJWEVTYCBpbnN0ZWFkLgorCiAuLiBhdHRyaWJ1dGU6OiBCWVRFQ09ERV9TVUZGSVhFUwogCiAgICBBIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIHJlY29nbml6ZWQgZmlsZSBzdWZmaXhlcyBmb3IgYnl0ZWNvZGUKLSAgIG1vZHVsZXMuIFNldCB0byBlaXRoZXIgOmF0dHI6YERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTYCBvcgotICAgOmF0dHI6YE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFU2AgYmFzZWQgb24gd2hldGhlciBgYF9fZGVidWdfX2BgIGlzIHRydWUuCisgICBtb2R1bGVzIChpbmNsdWRpbmcgdGhlIGxlYWRpbmcgZG90KS4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgdmFsdWUgaXMgbm8gbG9uZ2VyIGRlcGVuZGVudCBvbiBgYF9fZGVidWdfX2BgLgorCiAuLiBhdHRyaWJ1dGU6OiBFWFRFTlNJT05fU1VGRklYRVMKIAogICAgQSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSByZWNvZ25pemVkIGZpbGUgc3VmZml4ZXMgZm9yCkBAIC03MzIsOSArNzYyLDkgQEAKICAgICBPbmx5IGNsYXNzIG1ldGhvZHMgYXJlIGRlZmluZWQgYnkgdGhpcyBjbGFzcyB0byBhbGxldmlhdGUgdGhlIG5lZWQgZm9yCiAgICAgaW5zdGFudGlhdGlvbi4KIAotICAgIC4uIG5vdGU6OgotICAgICAgIER1ZSB0byBsaW1pdGF0aW9ucyBpbiB0aGUgZXh0ZW5zaW9uIG1vZHVsZSBDLUFQSSwgZm9yIG5vdwotICAgICAgIEJ1aWx0aW5JbXBvcnRlciBkb2VzIG5vdCBpbXBsZW1lbnQgOm1ldGg6YExvYWRlci5leGVjX21vZHVsZWAuCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICBBcyBwYXJ0IG9mIDpwZXA6YDQ4OWAsIHRoZSBidWlsdGluIGltcG9ydGVyIG5vdyBpbXBsZW1lbnRzCisgICAgICAgOm1ldGg6YExvYWRlci5jcmVhdGVfbW9kdWxlYCBhbmQgOm1ldGg6YExvYWRlci5leGVjX21vZHVsZWAKIAogCiAuLiBjbGFzczo6IEZyb3plbkltcG9ydGVyCkBAIC03ODIsNiArODEyLDExIEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgSWYgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgLS0gcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkgc3RyaW5nIC0tCisgICAgICAgICBpcyBubyBsb25nZXIgdmFsaWQgdGhlbiBgYE5vbmVgYCBpcyByZXR1cm5lZCBidXQgbm8gdmFsdWUgaXMgY2FjaGVkCisgICAgICAgICBpbiA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLgorCiAgICAuLiBjbGFzc21ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoPU5vbmUpCiAKICAgICAgIEEgbGVnYWN5IHdyYXBwZXIgYXJvdW5kIDptZXRoOmBmaW5kX3NwZWNgLgpAQCAtOTQ0LDE0ICs5NzksMTggQEAKIAogICAgICAgUGF0aCB0byB0aGUgZXh0ZW5zaW9uIG1vZHVsZS4KIAotICAgLi4gbWV0aG9kOjogbG9hZF9tb2R1bGUobmFtZT1Ob25lKQorICAgLi4gbWV0aG9kOjogY3JlYXRlX21vZHVsZShzcGVjKQogCi0gICAgICBMb2FkcyB0aGUgZXh0ZW5zaW9uIG1vZHVsZSBpZiBhbmQgb25seSBpZiAqZnVsbG5hbWUqIGlzIHRoZSBzYW1lIGFzCi0gICAgICA6YXR0cjpgbmFtZWAgb3IgaXMgYGBOb25lYGAuCisgICAgICBDcmVhdGVzIHRoZSBtb2R1bGUgb2JqZWN0IGZyb20gdGhlIGdpdmVuIHNwZWNpZmljYXRpb24gaW4gYWNjb3JkYW5jZQorICAgICAgd2l0aCA6cGVwOmA0ODlgLgogCi0gICAgICAuLiBub3RlOjoKLSAgICAgICAgIER1ZSB0byBsaW1pdGF0aW9ucyBpbiB0aGUgZXh0ZW5zaW9uIG1vZHVsZSBDLUFQSSwgZm9yIG5vdwotICAgICAgICAgRXh0ZW5zaW9uRmlsZUxvYWRlciBkb2VzIG5vdCBpbXBsZW1lbnQgOm1ldGg6YExvYWRlci5leGVjX21vZHVsZWAuCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworICAgLi4gbWV0aG9kOjogZXhlY19tb2R1bGUobW9kdWxlKQorCisgICAgICBJbml0aWFsaXplcyB0aGUgZ2l2ZW4gbW9kdWxlIG9iamVjdCBpbiBhY2NvcmRhbmNlIHdpdGggOnBlcDpgNDg5YC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKICAgIC4uIG1ldGhvZDo6IGlzX3BhY2thZ2UoZnVsbG5hbWUpCiAKQEAgLTEwNDcsMjMgKzEwODYsMzcgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKLS4uIGZ1bmN0aW9uOjogY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgZGVidWdfb3ZlcnJpZGU9Tm9uZSkKKy4uIGZ1bmN0aW9uOjogY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgZGVidWdfb3ZlcnJpZGU9Tm9uZSwgKiwgb3B0aW1pemF0aW9uPU5vbmUpCiAKLSAgIFJldHVybiB0aGUgOnBlcDpgMzE0N2AgcGF0aCB0byB0aGUgYnl0ZS1jb21waWxlZCBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUKLSAgIHNvdXJjZSAqcGF0aCouICBGb3IgZXhhbXBsZSwgaWYgKnBhdGgqIGlzIGBgL2Zvby9iYXIvYmF6LnB5YGAgdGhlIHJldHVybgorICAgUmV0dXJuIHRoZSA6cGVwOmAzMTQ3YC86cGVwOmA0ODhgIHBhdGggdG8gdGhlIGJ5dGUtY29tcGlsZWQgZmlsZSBhc3NvY2lhdGVkCisgICB3aXRoIHRoZSBzb3VyY2UgKnBhdGgqLiAgRm9yIGV4YW1wbGUsIGlmICpwYXRoKiBpcyBgYC9mb28vYmFyL2Jhei5weWBgIHRoZSByZXR1cm4KICAgIHZhbHVlIHdvdWxkIGJlIGBgL2Zvby9iYXIvX19weWNhY2hlX18vYmF6LmNweXRob24tMzIucHljYGAgZm9yIFB5dGhvbiAzLjIuCiAgICBUaGUgYGBjcHl0aG9uLTMyYGAgc3RyaW5nIGNvbWVzIGZyb20gdGhlIGN1cnJlbnQgbWFnaWMgdGFnIChzZWUKICAgIDpmdW5jOmBnZXRfdGFnYDsgaWYgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIG5vdCBkZWZpbmVkIHRoZW4KLSAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdpbGwgYmUgcmFpc2VkKS4gIFRoZSByZXR1cm5lZCBwYXRoIHdpbGwgZW5kIGluCi0gICBgYC5weWNgYCB3aGVuIGBgX19kZWJ1Z19fYGAgaXMgYGBUcnVlYGAgb3IgYGAucHlvYGAgZm9yIGFuIG9wdGltaXplZCBQeXRob24KLSAgIChpLmUuIGBgX19kZWJ1Z19fYGAgaXMgYGBGYWxzZWBgKS4gIEJ5IHBhc3NpbmcgaW4gYGBUcnVlYGAgb3IgYGBGYWxzZWBgIGZvcgotICAgKmRlYnVnX292ZXJyaWRlKiB5b3UgY2FuIG92ZXJyaWRlIHRoZSBzeXN0ZW0ncyB2YWx1ZSBmb3IgYGBfX2RlYnVnX19gYCBmb3IKLSAgIGV4dGVuc2lvbiBzZWxlY3Rpb24uCisgICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB3aWxsIGJlIHJhaXNlZCkuCiAKLSAgICpwYXRoKiBuZWVkIG5vdCBleGlzdC4KKyAgIFRoZSAqb3B0aW1pemF0aW9uKiBwYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBvcHRpbWl6YXRpb24gbGV2ZWwgb2YgdGhlCisgICBieXRlY29kZSBmaWxlLiBBbiBlbXB0eSBzdHJpbmcgcmVwcmVzZW50cyBubyBvcHRpbWl6YXRpb24sIHNvCisgICBgYC9mb28vYmFyL2Jhei5weWBgIHdpdGggYW4gKm9wdGltaXphdGlvbiogb2YgYGAnJ2BgIHdpbGwgcmVzdWx0IGluIGEKKyAgIGJ5dGVjb2RlIHBhdGggb2YgYGAvZm9vL2Jhci9fX3B5Y2FjaGVfXy9iYXouY3B5dGhvbi0zMi5weWNgYC4gYGBOb25lYGAgY2F1c2VzCisgICB0aGUgaW50ZXJwdGVyJ3Mgb3B0aW1pemF0aW9uIGxldmVsIHRvIGJlIHVzZWQuIEFueSBvdGhlciB2YWx1ZSdzIHN0cmluZworICAgcmVwcmVzZW50YXRpb24gYmVpbmcgdXNlZCwgc28gYGAvZm9vL2Jhci9iYXoucHlgYCB3aXRoIGFuICpvcHRpbWl6YXRpb24qIG9mCisgICBgYDJgYCB3aWxsIGxlYWQgdG8gdGhlIGJ5dGVjb2RlIHBhdGggb2YKKyAgIGBgL2Zvby9iYXIvX19weWNhY2hlX18vYmF6LmNweXRob24tMzIub3B0LTIucHljYGAuIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24KKyAgIG9mICpvcHRpbWl6YXRpb24qIGNhbiBvbmx5IGJlIGFscGhhbnVtZXJpYywgZWxzZSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCisKKyAgIFRoZSAqZGVidWdfb3ZlcnJpZGUqIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkIGFuZCBjYW4gYmUgdXNlZCB0byBvdmVycmlkZQorICAgdGhlIHN5c3RlbSdzIHZhbHVlIGZvciBgYF9fZGVidWdfX2BgLiBBIGBgVHJ1ZWBgIHZhbHVlIGlzIHRoZSBlcXVpdmFsZW50IG9mCisgICBzZXR0aW5nICpvcHRpbWl6YXRpb24qIHRvIHRoZSBlbXB0eSBzdHJpbmcuIEEgYGBGYWxzZWBgIHZhbHVlIGlzIHRoZSBzYW1lIGFzCisgICBzZXR0aW5nICpvcHRpbWl6YXRpb24qIHRvIGBgMWBgLiBJZiBib3RoICpkZWJ1Z19vdmVycmlkZSogYW4gKm9wdGltaXphdGlvbioKKyAgIGFyZSBub3QgYGBOb25lYGAgdGhlbiA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkIDo6My41CisgICAgICBUaGUgKm9wdGltaXphdGlvbiogcGFyYW1ldGVyIHdhcyBhZGRlZCBhbmQgdGhlICpkZWJ1Z19vdmVycmlkZSogcGFyYW1ldGVyCisgICAgICB3YXMgZGVwcmVjYXRlZC4KKwogCiAuLiBmdW5jdGlvbjo6IHNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpCiAKQEAgLTEwNzEsNyArMTEyNCw3IEBACiAgICBmaWxlIHBhdGguICBGb3IgZXhhbXBsZSwgaWYgKnBhdGgqIGlzCiAgICBgYC9mb28vYmFyL19fcHljYWNoZV9fL2Jhei5jcHl0aG9uLTMyLnB5Y2BgIHRoZSByZXR1cm5lZCBwYXRoIHdvdWxkIGJlCiAgICBgYC9mb28vYmFyL2Jhei5weWBgLiAgKnBhdGgqIG5lZWQgbm90IGV4aXN0LCBob3dldmVyIGlmIGl0IGRvZXMgbm90IGNvbmZvcm0KLSAgIHRvIDpwZXA6YDMxNDdgIGZvcm1hdCwgYSBgYFZhbHVlRXJyb3JgYCBpcyByYWlzZWQuIElmCisgICB0byA6cGVwOmAzMTQ3YCBvciA6cGVwOmA0ODhgIGZvcm1hdCwgYSBgYFZhbHVlRXJyb3JgYCBpcyByYWlzZWQuIElmCiAgICA6YXR0cjpgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ2AgaXMgbm90IGRlZmluZWQsCiAgICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBpcyByYWlzZWQuCiAKQEAgLTExMTcsNiArMTE3MCwyMSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorLi4gZnVuY3Rpb246OiBtb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisKKyAgIENyZWF0ZSBhIG5ldyBtb2R1bGUgYmFzZWQgb24gKipzcGVjKiogYW5kIGBgc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZSgpYGAuCisKKyAgIElmIGBgc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZSgpYGAgZG9lcyBub3QgcmV0dXJuIGBgTm9uZWBgLCB0aGVuIGFueQorICAgcHJlLWV4aXN0aW5nIGF0dHJpYnV0ZXMgd2lsbCBub3QgYmUgcmVzZXQuIEFsc28sIG5vIDpleGM6YEF0dHJpYnV0ZUVycm9yYAorICAgd2lsbCBiZSByYWlzZWQgaWYgdHJpZ2dlcmVkIHdoaWxlIGFjY2Vzc2luZyAqKnNwZWMqKiBvciBzZXR0aW5nIGFuIGF0dHJpYnV0ZQorICAgb24gdGhlIG1vZHVsZS4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBwcmVmZXJyZWQgb3ZlciB1c2luZyA6Y2xhc3M6YHR5cGVzLk1vZHVsZVR5cGVgIHRvIGNyZWF0ZSBhCisgICBuZXcgbW9kdWxlIGFzICoqc3BlYyoqIGlzIHVzZWQgdG8gc2V0IGFzIG1hbnkgaW1wb3J0LWNvbnRyb2xsZWQgYXR0cmlidXRlcyBvbgorICAgdGhlIG1vZHVsZSBhcyBwb3NzaWJsZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKIC4uIGRlY29yYXRvcjo6IG1vZHVsZV9mb3JfbG9hZGVyCiAKICAgICBBIDp0ZXJtOmBkZWNvcmF0b3JgIGZvciA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGVgCkBAIC0xMTk1LDMgKzEyNjMsMzkgQEAKICAgIG1vZHVsZSB3aWxsIGJlIGZpbGUtYmFzZWQuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCisuLiBjbGFzczo6IExhenlMb2FkZXIobG9hZGVyKQorCisgICBBIGNsYXNzIHdoaWNoIHBvc3Rwb25lcyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBsb2FkZXIgb2YgYSBtb2R1bGUgdW50aWwgdGhlCisgICBtb2R1bGUgaGFzIGFuIGF0dHJpYnV0ZSBhY2Nlc3NlZC4KKworICAgVGhpcyBjbGFzcyAqKm9ubHkqKiB3b3JrcyB3aXRoIGxvYWRlcnMgdGhhdCBkZWZpbmUKKyAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuZXhlY19tb2R1bGVgIGFzIGNvbnRyb2wgb3ZlciB3aGF0IG1vZHVsZSB0eXBlCisgICBpcyB1c2VkIGZvciB0aGUgbW9kdWxlIGlzIHJlcXVpcmVkLiBGb3IgdGhvc2Ugc2FtZSByZWFzb25zLCB0aGUgbG9hZGVyJ3MKKyAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbWV0aG9kIHdpbGwgYmUgaWdub3JlZCAoaS5lLiwgdGhlCisgICBsb2FkZXIncyBtZXRob2Qgc2hvdWxkIG9ubHkgcmV0dXJuIGBgTm9uZWBgKS4gRmluYWxseSwKKyAgIG1vZHVsZXMgd2hpY2ggc3Vic3RpdHV0ZSB0aGUgb2JqZWN0IHBsYWNlZCBpbnRvIDphdHRyOmBzeXMubW9kdWxlc2Agd2lsbAorICAgbm90IHdvcmsgYXMgdGhlcmUgaXMgbm8gd2F5IHRvIHByb3Blcmx5IHJlcGxhY2UgdGhlIG1vZHVsZSByZWZlcmVuY2VzCisgICB0aHJvdWdob3V0IHRoZSBpbnRlcnByZXRlciBzYWZlbHk7IDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiBzdWNoIGEKKyAgIHN1YnN0aXR1dGlvbiBpcyBkZXRlY3RlZC4KKworICAgLi4gbm90ZTo6CisgICAgICBGb3IgcHJvamVjdHMgd2hlcmUgc3RhcnR1cCB0aW1lIGlzIGNyaXRpY2FsLCB0aGlzIGNsYXNzIGFsbG93cyBmb3IKKyAgICAgIHBvdGVudGlhbGx5IG1pbmltaXppbmcgdGhlIGNvc3Qgb2YgbG9hZGluZyBhIG1vZHVsZSBpZiBpdCBpcyBuZXZlciB1c2VkLgorICAgICAgRm9yIHByb2plY3RzIHdoZXJlIHN0YXJ0dXAgdGltZSBpcyBub3QgZXNzZW50aWFsIHRoZW4gdXNlIG9mIHRoaXMgY2xhc3MgaXMKKyAgICAgICoqaGVhdmlseSoqIGRpc2NvdXJhZ2VkIGR1ZSB0byBlcnJvciBtZXNzYWdlcyBjcmVhdGVkIGR1cmluZyBsb2FkaW5nIGJlaW5nCisgICAgICBwb3N0cG9uZWQgYW5kIHRodXMgb2NjdXJyaW5nIG91dCBvZiBjb250ZXh0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworICAgLi4gY2xhc3NtZXRob2Q6OiBmYWN0b3J5KGxvYWRlcikKKworICAgICAgQSBzdGF0aWMgbWV0aG9kIHdoaWNoIHJldHVybnMgYSBjYWxsYWJsZSB0aGF0IGNyZWF0ZXMgYSBsYXp5IGxvYWRlci4gVGhpcworICAgICAgaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBzaXR1YXRpb25zIHdoZXJlIHRoZSBsb2FkZXIgaXMgcGFzc2VkIGJ5IGNsYXNzCisgICAgICBpbnN0ZWFkIG9mIGJ5IGluc3RhbmNlLgorICAgICAgOjoKKworICAgICAgICBzdWZmaXhlcyA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTCisgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcgorICAgICAgICBsYXp5X2xvYWRlciA9IGltcG9ydGxpYi51dGlsLkxhenlMb2FkZXIuZmFjdG9yeShsb2FkZXIpCisgICAgICAgIGZpbmRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcihwYXRoLCBbKGxhenlfbG9hZGVyLCBzdWZmaXhlcyldKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QgYi9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdAppbmRleCA1N2ViNGZmLi44ZDI1YjFlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdApAQCAtMjgsNyArMjgsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0KIAogVGhlIDpmdW5jOmBnZXRtZW1iZXJzYCBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIG1lbWJlcnMgb2YgYW4gb2JqZWN0IHN1Y2ggYXMgYQotY2xhc3Mgb3IgbW9kdWxlLiBUaGUgc2l4dGVlbiBmdW5jdGlvbnMgd2hvc2UgbmFtZXMgYmVnaW4gd2l0aCAiaXMiIGFyZSBtYWlubHkKK2NsYXNzIG9yIG1vZHVsZS4gVGhlIGZ1bmN0aW9ucyB3aG9zZSBuYW1lcyBiZWdpbiB3aXRoICJpcyIgYXJlIG1haW5seQogcHJvdmlkZWQgYXMgY29udmVuaWVudCBjaG9pY2VzIGZvciB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIDpmdW5jOmBnZXRtZW1iZXJzYC4KIFRoZXkgYWxzbyBoZWxwIHlvdSBkZXRlcm1pbmUgd2hlbiB5b3UgY2FuIGV4cGVjdCB0byBmaW5kIHRoZSBmb2xsb3dpbmcgc3BlY2lhbAogYXR0cmlidXRlczoKQEAgLTg4LDYgKzg4LDEyIEBACiB8ICAgICAgICAgICB8IF9fZ2xvYmFsc19fICAgICB8IGdsb2JhbCBuYW1lc3BhY2UgaW4gd2hpY2ggfAogfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCB0aGlzIGZ1bmN0aW9uIHdhcyBkZWZpbmVkIHwKICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAgICAgICAgICB8IF9fYW5ub3RhdGlvbnNfXyB8IG1hcHBpbmcgb2YgcGFyYW1ldGVycyAgICAgfAorfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCBuYW1lcyB0byBhbm5vdGF0aW9uczsgICAgIHwKK3wgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgYGAicmV0dXJuImBgIGtleSBpcyAgICAgICB8Cit8ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8IHJlc2VydmVkIGZvciByZXR1cm4gICAgICAgfAorfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCBhbm5vdGF0aW9ucy4gICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IHRyYWNlYmFjayB8IHRiX2ZyYW1lICAgICAgICB8IGZyYW1lIG9iamVjdCBhdCB0aGlzICAgICAgfAogfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCBsZXZlbCAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCkBAIC0xNjgsNiArMTc0LDMzIEBACiB8ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50cyBhbmQgbG9jYWwgICAgICAgfAogfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCB2YXJpYWJsZXMgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGdlbmVyYXRvciB8IF9fbmFtZV9fICAgICAgICB8IG5hbWUgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgICAgICAgICAgIHwgX19xdWFsbmFtZV9fICAgIHwgcXVhbGlmaWVkIG5hbWUgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgICAgICAgICAgfCBnaV9mcmFtZSAgICAgICAgfCBmcmFtZSAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAgICAgICAgICB8IGdpX3J1bm5pbmcgICAgICB8IGlzIHRoZSBnZW5lcmF0b3IgcnVubmluZz8gfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgICAgICAgICAgIHwgZ2lfY29kZSAgICAgICAgIHwgY29kZSAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgICAgICAgICAgfCBnaV95aWVsZGZyb20gICAgfCBvYmplY3QgYmVpbmcgaXRlcmF0ZWQgYnkgIHwKK3wgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgYGB5aWVsZCBmcm9tYGAsIG9yICAgICAgICB8Cit8ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8IGBgTm9uZWBgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgY29yb3V0aW5lIHwgX19uYW1lX18gICAgICAgIHwgbmFtZSAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgICAgICAgICAgfCBfX3F1YWxuYW1lX18gICAgfCBxdWFsaWZpZWQgbmFtZSAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAgICAgICAgICB8IGNyX2F3YWl0ICAgICAgICB8IG9iamVjdCBiZWluZyBhd2FpdGVkIG9uLCAgfAorfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCBvciBgYE5vbmVgYCAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAgICAgICAgICB8IGNyX2ZyYW1lICAgICAgICB8IGZyYW1lICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgICAgICAgICAgIHwgY3JfcnVubmluZyAgICAgIHwgaXMgdGhlIGNvcm91dGluZSBydW5uaW5nPyB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgICAgICAgICAgfCBjcl9jb2RlICAgICAgICAgfCBjb2RlICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IGJ1aWx0aW4gICB8IF9fZG9jX18gICAgICAgICB8IGRvY3VtZW50YXRpb24gc3RyaW5nICAgICAgfAogKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgICAgICAgICAgIHwgX19uYW1lX18gICAgICAgIHwgb3JpZ2luYWwgbmFtZSBvZiB0aGlzICAgICB8CkBAIC0xODAsNiArMjEzLDEzIEBACiB8ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8IGBgTm9uZWBgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKworICAgQWRkIGBgX19xdWFsbmFtZV9fYGAgYW5kIGBgZ2lfeWllbGRmcm9tYGAgYXR0cmlidXRlcyB0byBnZW5lcmF0b3JzLgorCisgICBUaGUgYGBfX25hbWVfX2BgIGF0dHJpYnV0ZSBvZiBnZW5lcmF0b3JzIGlzIG5vdyBzZXQgZnJvbSB0aGUgZnVuY3Rpb24KKyAgIG5hbWUsIGluc3RlYWQgb2YgdGhlIGNvZGUgbmFtZSwgYW5kIGl0IGNhbiBub3cgYmUgbW9kaWZpZWQuCisKIAogLi4gZnVuY3Rpb246OiBnZXRtZW1iZXJzKG9iamVjdFssIHByZWRpY2F0ZV0pCiAKQEAgLTI2MSw2ICszMDEsNDEgQEAKICAgIFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBnZW5lcmF0b3IuCiAKIAorLi4gZnVuY3Rpb246OiBpc2Nvcm91dGluZWZ1bmN0aW9uKG9iamVjdCkKKworICAgUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIDp0ZXJtOmBjb3JvdXRpbmUgZnVuY3Rpb25gCisgICAoYSBmdW5jdGlvbiBkZWZpbmVkIHdpdGggYW4gOmtleXdvcmQ6YGFzeW5jIGRlZmAgc3ludGF4KS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKworLi4gZnVuY3Rpb246OiBpc2Nvcm91dGluZShvYmplY3QpCisKKyAgIFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSA6dGVybTpgY29yb3V0aW5lYCBjcmVhdGVkIGJ5IGFuCisgICA6a2V5d29yZDpgYXN5bmMgZGVmYCBmdW5jdGlvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKworLi4gZnVuY3Rpb246OiBpc2F3YWl0YWJsZShvYmplY3QpCisKKyAgIFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgY2FuIGJlIHVzZWQgaW4gOmtleXdvcmQ6YGF3YWl0YCBleHByZXNzaW9uLgorCisgICBDYW4gYWxzbyBiZSB1c2VkIHRvIGRpc3Rpbmd1aXNoIGdlbmVyYXRvci1iYXNlZCBjb3JvdXRpbmVzIGZyb20gcmVndWxhcgorICAgZ2VuZXJhdG9yczo6CisKKyAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICB5aWVsZAorICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgZGVmIGdlbl9jb3JvKCk6CisgICAgICAgICAgeWllbGQKKworICAgICAgYXNzZXJ0IG5vdCBpc2F3YWl0YWJsZShnZW4oKSkKKyAgICAgIGFzc2VydCBpc2F3YWl0YWJsZShnZW5fY29ybygpKQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBmdW5jdGlvbjo6IGlzdHJhY2ViYWNrKG9iamVjdCkKIAogICAgUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIHRyYWNlYmFjay4KQEAgLTM1MSw2ICs0MjYsMTIgQEAKIC4uIGZ1bmN0aW9uOjogZ2V0ZG9jKG9iamVjdCkKIAogICAgR2V0IHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBmb3IgYW4gb2JqZWN0LCBjbGVhbmVkIHVwIHdpdGggOmZ1bmM6YGNsZWFuZG9jYC4KKyAgIElmIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBmb3IgYW4gb2JqZWN0IGlzIG5vdCBwcm92aWRlZCBhbmQgdGhlIG9iamVjdCBpcworICAgYSBjbGFzcywgYSBtZXRob2QsIGEgcHJvcGVydHkgb3IgYSBkZXNjcmlwdG9yLCByZXRyaWV2ZSB0aGUgZG9jdW1lbnRhdGlvbgorICAgc3RyaW5nIGZyb20gdGhlIGluaGVyaXRhbmNlIGhpZXJhcmNoeS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIERvY3VtZW50YXRpb24gc3RyaW5ncyBhcmUgbm93IGluaGVyaXRlZCBpZiBub3Qgb3ZlcnJpZGRlbi4KIAogCiAuLiBmdW5jdGlvbjo6IGdldGNvbW1lbnRzKG9iamVjdCkKQEAgLTQyMyw3ICs1MDQsNyBAQAogcmV0dXJuIGFubm90YXRpb24uICBUbyByZXRyaWV2ZSBhIFNpZ25hdHVyZSBvYmplY3QsIHVzZSB0aGUgOmZ1bmM6YHNpZ25hdHVyZWAKIGZ1bmN0aW9uLgogCi0uLiBmdW5jdGlvbjo6IHNpZ25hdHVyZShjYWxsYWJsZSkKKy4uIGZ1bmN0aW9uOjogc2lnbmF0dXJlKGNhbGxhYmxlLCBcKiwgZm9sbG93X3dyYXBwZWQ9VHJ1ZSkKIAogICAgUmV0dXJuIGEgOmNsYXNzOmBTaWduYXR1cmVgIG9iamVjdCBmb3IgdGhlIGdpdmVuIGBgY2FsbGFibGVgYDo6CiAKQEAgLTQ0OCw2ICs1MjksMTEgQEAKICAgIFJhaXNlcyA6ZXhjOmBWYWx1ZUVycm9yYCBpZiBubyBzaWduYXR1cmUgY2FuIGJlIHByb3ZpZGVkLCBhbmQKICAgIDpleGM6YFR5cGVFcnJvcmAgaWYgdGhhdCB0eXBlIG9mIG9iamVjdCBpcyBub3Qgc3VwcG9ydGVkLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIGBgZm9sbG93X3dyYXBwZWRgYCBwYXJhbWV0ZXIuIFBhc3MgYGBGYWxzZWBgIHRvIGdldCBhIHNpZ25hdHVyZSBvZgorICAgICAgYGBjYWxsYWJsZWBgIHNwZWNpZmljYWxseSAoYGBjYWxsYWJsZS5fX3dyYXBwZWRfX2BgIHdpbGwgbm90IGJlIHVzZWQgdG8KKyAgICAgIHVud3JhcCBkZWNvcmF0ZWQgY2FsbGFibGVzLikKKwogICAgLi4gbm90ZTo6CiAKICAgICAgIFNvbWUgY2FsbGFibGVzIG1heSBub3QgYmUgaW50cm9zcGVjdGFibGUgaW4gY2VydGFpbiBpbXBsZW1lbnRhdGlvbnMgb2YKQEAgLTQ3Myw2ICs1NTksOSBAQAogICAgU2lnbmF0dXJlIG9iamVjdHMgYXJlICppbW11dGFibGUqLiAgVXNlIDptZXRoOmBTaWduYXR1cmUucmVwbGFjZWAgdG8gbWFrZSBhCiAgICBtb2RpZmllZCBjb3B5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgU2lnbmF0dXJlIG9iamVjdHMgYXJlIHBpY2tsYWJsZSBhbmQgaGFzaGFibGUuCisKICAgIC4uIGF0dHJpYnV0ZTo6IFNpZ25hdHVyZS5lbXB0eQogCiAgICAgICBBIHNwZWNpYWwgY2xhc3MtbGV2ZWwgbWFya2VyIHRvIHNwZWNpZnkgYWJzZW5jZSBvZiBhIHJldHVybiBhbm5vdGF0aW9uLgpAQCAtNTE3LDEyICs2MDYsMzAgQEAKICAgICAgICAgID4+PiBzdHIobmV3X3NpZykKICAgICAgICAgICIoYSwgYikgLT4gJ25ldyByZXR1cm4gYW5ubyciCiAKKyAgIC4uIGNsYXNzbWV0aG9kOjogU2lnbmF0dXJlLmZyb21fY2FsbGFibGUob2JqLCBcKiwgZm9sbG93X3dyYXBwZWQ9VHJ1ZSkKKworICAgICAgIFJldHVybiBhIDpjbGFzczpgU2lnbmF0dXJlYCAob3IgaXRzIHN1YmNsYXNzKSBvYmplY3QgZm9yIGEgZ2l2ZW4gY2FsbGFibGUKKyAgICAgICBgYG9iamBgLiAgUGFzcyBgYGZvbGxvd193cmFwcGVkPUZhbHNlYGAgdG8gZ2V0IGEgc2lnbmF0dXJlIG9mIGBgb2JqYGAKKyAgICAgICB3aXRob3V0IHVud3JhcHBpbmcgaXRzIGBgX193cmFwcGVkX19gYCBjaGFpbi4KKworICAgICAgIFRoaXMgbWV0aG9kIHNpbXBsaWZpZXMgc3ViY2xhc3Npbmcgb2YgOmNsYXNzOmBTaWduYXR1cmVgOjoKKworICAgICAgICAgY2xhc3MgTXlTaWduYXR1cmUoU2lnbmF0dXJlKToKKyAgICAgICAgICAgICBwYXNzCisgICAgICAgICBzaWcgPSBNeVNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlKG1pbikKKyAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNpZywgTXlTaWduYXR1cmUpCisKKyAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogCiAuLiBjbGFzczo6IFBhcmFtZXRlcihuYW1lLCBraW5kLCBcKiwgZGVmYXVsdD1QYXJhbWV0ZXIuZW1wdHksIGFubm90YXRpb249UGFyYW1ldGVyLmVtcHR5KQogCiAgICBQYXJhbWV0ZXIgb2JqZWN0cyBhcmUgKmltbXV0YWJsZSouICBJbnN0ZWFkIG9mIG1vZGlmeWluZyBhIFBhcmFtZXRlciBvYmplY3QsCiAgICB5b3UgY2FuIHVzZSA6bWV0aDpgUGFyYW1ldGVyLnJlcGxhY2VgIHRvIGNyZWF0ZSBhIG1vZGlmaWVkIGNvcHkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBQYXJhbWV0ZXIgb2JqZWN0cyBhcmUgcGlja2xhYmxlIGFuZCBoYXNoYWJsZS4KKwogICAgLi4gYXR0cmlidXRlOjogUGFyYW1ldGVyLmVtcHR5CiAKICAgICAgIEEgc3BlY2lhbCBjbGFzcy1sZXZlbCBtYXJrZXIgdG8gc3BlY2lmeSBhYnNlbmNlIG9mIGRlZmF1bHQgdmFsdWVzIGFuZApAQCAtNjM5LDI3ICs3NDYsOCBAQAogCiAgICAgICAgICBBcmd1bWVudHMgZm9yIHdoaWNoIDptZXRoOmBTaWduYXR1cmUuYmluZGAgb3IKICAgICAgICAgIDptZXRoOmBTaWduYXR1cmUuYmluZF9wYXJ0aWFsYCByZWxpZWQgb24gYSBkZWZhdWx0IHZhbHVlIGFyZSBza2lwcGVkLgotICAgICAgICAgSG93ZXZlciwgaWYgbmVlZGVkLCBpdCBpcyBlYXN5IHRvIGluY2x1ZGUgdGhlbS4KLQotICAgICAgOjoKLQotICAgICAgICA+Pj4gZGVmIGZvbyhhLCBiPTEwKToKLSAgICAgICAgLi4uICAgICBwYXNzCi0KLSAgICAgICAgPj4+IHNpZyA9IHNpZ25hdHVyZShmb28pCi0gICAgICAgID4+PiBiYSA9IHNpZy5iaW5kKDUpCi0KLSAgICAgICAgPj4+IGJhLmFyZ3MsIGJhLmt3YXJncwotICAgICAgICAoKDUsKSwge30pCi0KLSAgICAgICAgPj4+IGZvciBwYXJhbSBpbiBzaWcucGFyYW1ldGVycy52YWx1ZXMoKToKLSAgICAgICAgLi4uICAgICBpZiAocGFyYW0ubmFtZSBub3QgaW4gYmEuYXJndW1lbnRzCi0gICAgICAgIC4uLiAgICAgICAgICAgICBhbmQgcGFyYW0uZGVmYXVsdCBpcyBub3QgcGFyYW0uZW1wdHkpOgotICAgICAgICAuLi4gICAgICAgICBiYS5hcmd1bWVudHNbcGFyYW0ubmFtZV0gPSBwYXJhbS5kZWZhdWx0Ci0KLSAgICAgICAgPj4+IGJhLmFyZ3MsIGJhLmt3YXJncwotICAgICAgICAoKDUsIDEwKSwge30pCi0KKyAgICAgICAgIEhvd2V2ZXIsIGlmIG5lZWRlZCwgdXNlIDptZXRoOmBCb3VuZEFyZ3VtZW50cy5hcHBseV9kZWZhdWx0c2AgdG8gYWRkCisgICAgICAgICB0aGVtLgogCiAgICAuLiBhdHRyaWJ1dGU6OiBCb3VuZEFyZ3VtZW50cy5hcmdzCiAKQEAgLTY3NSw2ICs3NjMsMjYgQEAKIAogICAgICAgQSByZWZlcmVuY2UgdG8gdGhlIHBhcmVudCA6Y2xhc3M6YFNpZ25hdHVyZWAgb2JqZWN0LgogCisgICAuLiBtZXRob2Q6OiBCb3VuZEFyZ3VtZW50cy5hcHBseV9kZWZhdWx0cygpCisKKyAgICAgIFNldCBkZWZhdWx0IHZhbHVlcyBmb3IgbWlzc2luZyBhcmd1bWVudHMuCisKKyAgICAgIEZvciB2YXJpYWJsZS1wb3NpdGlvbmFsIGFyZ3VtZW50cyAoYGAqYXJnc2BgKSB0aGUgZGVmYXVsdCBpcyBhbgorICAgICAgZW1wdHkgdHVwbGUuCisKKyAgICAgIEZvciB2YXJpYWJsZS1rZXl3b3JkIGFyZ3VtZW50cyAoYGAqKmt3YXJnc2BgKSB0aGUgZGVmYXVsdCBpcyBhbgorICAgICAgZW1wdHkgZGljdC4KKworICAgICAgOjoKKworICAgICAgICA+Pj4gZGVmIGZvbyhhLCBiPSdoYW0nLCAqYXJncyk6IHBhc3MKKyAgICAgICAgPj4+IGJhID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKS5iaW5kKCdzcGFtJykKKyAgICAgICAgPj4+IGJhLmFwcGx5X2RlZmF1bHRzKCkKKyAgICAgICAgPj4+IGJhLmFyZ3VtZW50cworICAgICAgICBPcmRlcmVkRGljdChbKCdhJywgJ3NwYW0nKSwgKCdiJywgJ2hhbScpLCAoJ2FyZ3MnLCAoKSldKQorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogICAgVGhlIDphdHRyOmBhcmdzYCBhbmQgOmF0dHI6YGt3YXJnc2AgcHJvcGVydGllcyBjYW4gYmUgdXNlZCB0byBpbnZva2UKICAgIGZ1bmN0aW9uczo6CiAKQEAgLTcxOSw4ICs4MjcsOSBAQAogICAgKm4qIGVsZW1lbnRzIGxpc3RlZCBpbiAqYXJncyouCiAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjAKLSAgICAgIFVzZSA6ZnVuYzpgZ2V0ZnVsbGFyZ3NwZWNgIGluc3RlYWQsIHdoaWNoIHByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0Ci0gICAgICBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIGFuZCBhbm5vdGF0aW9ucy4KKyAgICAgIFVzZSA6ZnVuYzpgc2lnbmF0dXJlYCBhbmQKKyAgICAgIDpyZWY6YFNpZ25hdHVyZSBPYmplY3QgPGluc3BlY3Qtc2lnbmF0dXJlLW9iamVjdD5gLCB3aGljaCBwcm92aWRlIGEKKyAgICAgIGJldHRlciBpbnRyb3NwZWN0aW5nIEFQSSBmb3IgY2FsbGFibGVzLgogCiAKIC4uIGZ1bmN0aW9uOjogZ2V0ZnVsbGFyZ3NwZWMoZnVuYykKQEAgLTc0MSwxNSArODUwLDE2IEBACiAKICAgIFRoZSBmaXJzdCBmb3VyIGl0ZW1zIGluIHRoZSB0dXBsZSBjb3JyZXNwb25kIHRvIDpmdW5jOmBnZXRhcmdzcGVjYC4KIAotICAgLi4gbm90ZTo6Ci0gICAgICBDb25zaWRlciB1c2luZyB0aGUgbmV3IDpyZWY6YFNpZ25hdHVyZSBPYmplY3QgPGluc3BlY3Qtc2lnbmF0dXJlLW9iamVjdD5gCi0gICAgICBpbnRlcmZhY2UsIHdoaWNoIHByb3ZpZGVzIGEgYmV0dGVyIHdheSBvZiBpbnRyb3NwZWN0aW5nIGZ1bmN0aW9ucy4KLQogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm93IGJhc2VkIG9uIDpmdW5jOmBzaWduYXR1cmVgLCBidXQgc3RpbGwgaWdub3JlcwogICAgICAgYGBfX3dyYXBwZWRfX2BgIGF0dHJpYnV0ZXMgYW5kIGluY2x1ZGVzIHRoZSBhbHJlYWR5IGJvdW5kIGZpcnN0CiAgICAgICBwYXJhbWV0ZXIgaW4gdGhlIHNpZ25hdHVyZSBvdXRwdXQgZm9yIGJvdW5kIG1ldGhvZHMuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUKKyAgICAgIFVzZSA6ZnVuYzpgc2lnbmF0dXJlYCBhbmQKKyAgICAgIDpyZWY6YFNpZ25hdHVyZSBPYmplY3QgPGluc3BlY3Qtc2lnbmF0dXJlLW9iamVjdD5gLCB3aGljaCBwcm92aWRlIGEKKyAgICAgIGJldHRlciBpbnRyb3NwZWN0aW5nIEFQSSBmb3IgY2FsbGFibGVzLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0YXJndmFsdWVzKGZyYW1lKQogCkBAIC03NTksNiArODY5LDExIEBACiAgICBhcmUgdGhlIG5hbWVzIG9mIHRoZSBgYCpgYCBhbmQgYGAqKmBgIGFyZ3VtZW50cyBvciBgYE5vbmVgYC4gICpsb2NhbHMqIGlzIHRoZQogICAgbG9jYWxzIGRpY3Rpb25hcnkgb2YgdGhlIGdpdmVuIGZyYW1lLgogCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBVc2UgOmZ1bmM6YHNpZ25hdHVyZWAgYW5kCisgICAgICA6cmVmOmBTaWduYXR1cmUgT2JqZWN0IDxpbnNwZWN0LXNpZ25hdHVyZS1vYmplY3Q+YCwgd2hpY2ggcHJvdmlkZSBhCisgICAgICBiZXR0ZXIgaW50cm9zcGVjdGluZyBBUEkgZm9yIGNhbGxhYmxlcy4KKwogCiAuLiBmdW5jdGlvbjo6IGZvcm1hdGFyZ3NwZWMoYXJnc1ssIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cywga3dvbmx5YXJncywga3dvbmx5ZGVmYXVsdHMsIGFubm90YXRpb25zWywgZm9ybWF0YXJnLCBmb3JtYXR2YXJhcmdzLCBmb3JtYXR2YXJrdywgZm9ybWF0dmFsdWUsIGZvcm1hdHJldHVybnMsIGZvcm1hdGFubm90YXRpb25zXV0pCiAKQEAgLTc4MSw2ICs4OTYsMTEgQEAKICAgID4+PiBmb3JtYXRhcmdzcGVjKCpnZXRmdWxsYXJnc3BlYyhmKSkKICAgICcoYTogaW50LCBiOiBmbG9hdCknCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUKKyAgICAgIFVzZSA6ZnVuYzpgc2lnbmF0dXJlYCBhbmQKKyAgICAgIDpyZWY6YFNpZ25hdHVyZSBPYmplY3QgPGluc3BlY3Qtc2lnbmF0dXJlLW9iamVjdD5gLCB3aGljaCBwcm92aWRlIGEKKyAgICAgIGJldHRlciBpbnRyb3NwZWN0aW5nIEFQSSBmb3IgY2FsbGFibGVzLgorCiAKIC4uIGZ1bmN0aW9uOjogZm9ybWF0YXJndmFsdWVzKGFyZ3NbLCB2YXJhcmdzLCB2YXJrdywgbG9jYWxzLCBmb3JtYXRhcmcsIGZvcm1hdHZhcmFyZ3MsIGZvcm1hdHZhcmt3LCBmb3JtYXR2YWx1ZV0pCiAKQEAgLTc4OCw2ICs5MDgsMTEgQEAKICAgIDpmdW5jOmBnZXRhcmd2YWx1ZXNgLiAgVGhlIGZvcm1hdFwqIGFyZ3VtZW50cyBhcmUgdGhlIGNvcnJlc3BvbmRpbmcgb3B0aW9uYWwKICAgIGZvcm1hdHRpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIGNhbGxlZCB0byB0dXJuIG5hbWVzIGFuZCB2YWx1ZXMgaW50byBzdHJpbmdzLgogCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBVc2UgOmZ1bmM6YHNpZ25hdHVyZWAgYW5kCisgICAgICA6cmVmOmBTaWduYXR1cmUgT2JqZWN0IDxpbnNwZWN0LXNpZ25hdHVyZS1vYmplY3Q+YCwgd2hpY2ggcHJvdmlkZSBhCisgICAgICBiZXR0ZXIgaW50cm9zcGVjdGluZyBBUEkgZm9yIGNhbGxhYmxlcy4KKwogCiAuLiBmdW5jdGlvbjo6IGdldG1ybyhjbHMpCiAKQEAgLTgyMiw4ICs5NDcsOCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAotICAgLi4gbm90ZTo6Ci0gICAgICBDb25zaWRlciB1c2luZyB0aGUgbmV3IDptZXRoOmBTaWduYXR1cmUuYmluZGAgaW5zdGVhZC4KKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUKKyAgICAgIFVzZSA6bWV0aDpgU2lnbmF0dXJlLmJpbmRgIGFuZCA6bWV0aDpgU2lnbmF0dXJlLmJpbmRfcGFydGlhbGAgaW5zdGVhZC4KIAogCiAuLiBmdW5jdGlvbjo6IGdldGNsb3N1cmV2YXJzKGZ1bmMpCkBAIC04NjQsMTEgKzk4OSwxNyBAQAogVGhlIGludGVycHJldGVyIHN0YWNrCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2hlbiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyByZXR1cm4gImZyYW1lIHJlY29yZHMsIiBlYWNoIHJlY29yZCBpcyBhIHR1cGxlIG9mCi1zaXggaXRlbXM6IHRoZSBmcmFtZSBvYmplY3QsIHRoZSBmaWxlbmFtZSwgdGhlIGxpbmUgbnVtYmVyIG9mIHRoZSBjdXJyZW50IGxpbmUsCitXaGVuIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHJldHVybiAiZnJhbWUgcmVjb3JkcywiIGVhY2ggcmVjb3JkIGlzIGEKKzp0ZXJtOmBuYW1lZCB0dXBsZWAKK2BgRnJhbWVJbmZvKGZyYW1lLCBmaWxlbmFtZSwgbGluZW5vLCBmdW5jdGlvbiwgY29kZV9jb250ZXh0LCBpbmRleClgYC4KK1RoZSB0dXBsZSBjb250YWlucyB0aGUgZnJhbWUgb2JqZWN0LCB0aGUgZmlsZW5hbWUsIHRoZSBsaW5lIG51bWJlciBvZiB0aGUKK2N1cnJlbnQgbGluZSwKIHRoZSBmdW5jdGlvbiBuYW1lLCBhIGxpc3Qgb2YgbGluZXMgb2YgY29udGV4dCBmcm9tIHRoZSBzb3VyY2UgY29kZSwgYW5kIHRoZQogaW5kZXggb2YgdGhlIGN1cnJlbnQgbGluZSB3aXRoaW4gdGhhdCBsaXN0LgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgUmV0dXJuIGEgbmFtZWQgdHVwbGUgaW5zdGVhZCBvZiBhIHR1cGxlLgorCiAuLiBub3RlOjoKIAogICAgS2VlcGluZyByZWZlcmVuY2VzIHRvIGZyYW1lIG9iamVjdHMsIGFzIGZvdW5kIGluIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBmcmFtZQpAQCAtOTEzLDYgKzEwNDQsMTEgQEAKICAgIHJldHVybmVkIGxpc3QgcmVwcmVzZW50cyAqZnJhbWUqOyB0aGUgbGFzdCBlbnRyeSByZXByZXNlbnRzIHRoZSBvdXRlcm1vc3QgY2FsbAogICAgb24gKmZyYW1lKidzIHN0YWNrLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQSBsaXN0IG9mIDp0ZXJtOmBuYW1lZCB0dXBsZXMgPG5hbWVkIHR1cGxlPmAKKyAgICAgIGBgRnJhbWVJbmZvKGZyYW1lLCBmaWxlbmFtZSwgbGluZW5vLCBmdW5jdGlvbiwgY29kZV9jb250ZXh0LCBpbmRleClgYAorICAgICAgaXMgcmV0dXJuZWQuCisKIAogLi4gZnVuY3Rpb246OiBnZXRpbm5lcmZyYW1lcyh0cmFjZWJhY2ssIGNvbnRleHQ9MSkKIApAQCAtOTIxLDYgKzEwNTcsMTEgQEAKICAgIGxpc3QgcmVwcmVzZW50cyAqdHJhY2ViYWNrKjsgdGhlIGxhc3QgZW50cnkgcmVwcmVzZW50cyB3aGVyZSB0aGUgZXhjZXB0aW9uIHdhcwogICAgcmFpc2VkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQSBsaXN0IG9mIDp0ZXJtOmBuYW1lZCB0dXBsZXMgPG5hbWVkIHR1cGxlPmAKKyAgICAgIGBgRnJhbWVJbmZvKGZyYW1lLCBmaWxlbmFtZSwgbGluZW5vLCBmdW5jdGlvbiwgY29kZV9jb250ZXh0LCBpbmRleClgYAorICAgICAgaXMgcmV0dXJuZWQuCisKIAogLi4gZnVuY3Rpb246OiBjdXJyZW50ZnJhbWUoKQogCkBAIC05NDAsNiArMTA4MSwxMSBAQAogICAgcmV0dXJuZWQgbGlzdCByZXByZXNlbnRzIHRoZSBjYWxsZXI7IHRoZSBsYXN0IGVudHJ5IHJlcHJlc2VudHMgdGhlIG91dGVybW9zdAogICAgY2FsbCBvbiB0aGUgc3RhY2suCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBIGxpc3Qgb2YgOnRlcm06YG5hbWVkIHR1cGxlcyA8bmFtZWQgdHVwbGU+YAorICAgICAgYGBGcmFtZUluZm8oZnJhbWUsIGZpbGVuYW1lLCBsaW5lbm8sIGZ1bmN0aW9uLCBjb2RlX2NvbnRleHQsIGluZGV4KWBgCisgICAgICBpcyByZXR1cm5lZC4KKwogCiAuLiBmdW5jdGlvbjo6IHRyYWNlKGNvbnRleHQ9MSkKIApAQCAtOTQ4LDYgKzEwOTQsMTEgQEAKICAgIGVudHJ5IGluIHRoZSBsaXN0IHJlcHJlc2VudHMgdGhlIGNhbGxlcjsgdGhlIGxhc3QgZW50cnkgcmVwcmVzZW50cyB3aGVyZSB0aGUKICAgIGV4Y2VwdGlvbiB3YXMgcmFpc2VkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQSBsaXN0IG9mIDp0ZXJtOmBuYW1lZCB0dXBsZXMgPG5hbWVkIHR1cGxlPmAKKyAgICAgIGBgRnJhbWVJbmZvKGZyYW1lLCBmaWxlbmFtZSwgbGluZW5vLCBmdW5jdGlvbiwgY29kZV9jb250ZXh0LCBpbmRleClgYAorICAgICAgaXMgcmV0dXJuZWQuCisKIAogRmV0Y2hpbmcgYXR0cmlidXRlcyBzdGF0aWNhbGx5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEwMDcsOCArMTE1OCw4IEBACiAgICAgICAgICAgIHBhc3MKIAogCi1DdXJyZW50IFN0YXRlIG9mIGEgR2VuZXJhdG9yCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDdXJyZW50IFN0YXRlIG9mIEdlbmVyYXRvcnMgYW5kIENvcm91dGluZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXaGVuIGltcGxlbWVudGluZyBjb3JvdXRpbmUgc2NoZWR1bGVycyBhbmQgZm9yIG90aGVyIGFkdmFuY2VkIHVzZXMgb2YKIGdlbmVyYXRvcnMsIGl0IGlzIHVzZWZ1bCB0byBkZXRlcm1pbmUgd2hldGhlciBhIGdlbmVyYXRvciBpcyBjdXJyZW50bHkKQEAgLTEwMjgsNiArMTE3OSwyMSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorLi4gZnVuY3Rpb246OiBnZXRjb3JvdXRpbmVzdGF0ZShjb3JvdXRpbmUpCisKKyAgIEdldCBjdXJyZW50IHN0YXRlIG9mIGEgY29yb3V0aW5lIG9iamVjdC4gIFRoZSBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBiZQorICAgdXNlZCB3aXRoIGNvcm91dGluZSBvYmplY3RzIGNyZWF0ZWQgYnkgOmtleXdvcmQ6YGFzeW5jIGRlZmAgZnVuY3Rpb25zLCBidXQKKyAgIHdpbGwgYWNjZXB0IGFueSBjb3JvdXRpbmUtbGlrZSBvYmplY3QgdGhhdCBoYXMgYGBjcl9ydW5uaW5nYGAgYW5kCisgICBgYGNyX2ZyYW1lYGAgYXR0cmlidXRlcy4KKworICAgUG9zc2libGUgc3RhdGVzIGFyZToKKyAgICAqIENPUk9fQ1JFQVRFRDogV2FpdGluZyB0byBzdGFydCBleGVjdXRpb24uCisgICAgKiBDT1JPX1JVTk5JTkc6IEN1cnJlbnRseSBiZWluZyBleGVjdXRlZCBieSB0aGUgaW50ZXJwcmV0ZXIuCisgICAgKiBDT1JPX1NVU1BFTkRFRDogQ3VycmVudGx5IHN1c3BlbmRlZCBhdCBhbiBhd2FpdCBleHByZXNzaW9uLgorICAgICogQ09ST19DTE9TRUQ6IEV4ZWN1dGlvbiBoYXMgY29tcGxldGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogVGhlIGN1cnJlbnQgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGdlbmVyYXRvciBjYW4gYWxzbyBiZSBxdWVyaWVkLiBUaGlzIGlzCiBtb3N0bHkgdXNlZnVsIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB0byBlbnN1cmUgdGhhdCBpbnRlcm5hbCBzdGF0ZSBpcyBiZWluZwogdXBkYXRlZCBhcyBleHBlY3RlZDoKQEAgLTEwNTIsNiArMTIxOCwxMyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorLi4gZnVuY3Rpb246OiBnZXRjb3JvdXRpbmVsb2NhbHMoY29yb3V0aW5lKQorCisgICBUaGlzIGZ1bmN0aW9uIGlzIGFuYWxvZ291cyB0byA6ZnVuYzpgfmluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzYCwgYnV0CisgICB3b3JrcyBmb3IgY29yb3V0aW5lIG9iamVjdHMgY3JlYXRlZCBieSA6a2V5d29yZDpgYXN5bmMgZGVmYCBmdW5jdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAKIC4uIF9pbnNwZWN0LW1vZHVsZS1jbGk6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2lvLnJzdCBiL0RvYy9saWJyYXJ5L2lvLnJzdAppbmRleCA1OTJiYzQ4Li5jYjNlOWVkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pby5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW8ucnN0CkBAIC0zMzksOCArMzM5LDExIEBACiAgICAgICBpZiAqc2l6ZSogaXMgbm90IHNwZWNpZmllZCkuICBUaGUgY3VycmVudCBzdHJlYW0gcG9zaXRpb24gaXNuJ3QgY2hhbmdlZC4KICAgICAgIFRoaXMgcmVzaXppbmcgY2FuIGV4dGVuZCBvciByZWR1Y2UgdGhlIGN1cnJlbnQgZmlsZSBzaXplLiAgSW4gY2FzZSBvZgogICAgICAgZXh0ZW5zaW9uLCB0aGUgY29udGVudHMgb2YgdGhlIG5ldyBmaWxlIGFyZWEgZGVwZW5kIG9uIHRoZSBwbGF0Zm9ybQotICAgICAgKG9uIG1vc3Qgc3lzdGVtcywgYWRkaXRpb25hbCBieXRlcyBhcmUgemVyby1maWxsZWQsIG9uIFdpbmRvd3MgdGhleSdyZQotICAgICAgdW5kZXRlcm1pbmVkKS4gIFRoZSBuZXcgZmlsZSBzaXplIGlzIHJldHVybmVkLgorICAgICAgKG9uIG1vc3Qgc3lzdGVtcywgYWRkaXRpb25hbCBieXRlcyBhcmUgemVyby1maWxsZWQpLiAgVGhlIG5ldyBmaWxlIHNpemUKKyAgICAgIGlzIHJldHVybmVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgV2luZG93cyB3aWxsIG5vdyB6ZXJvLWZpbGwgZmlsZXMgd2hlbiBleHRlbmRpbmcuCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRhYmxlKCkKIApAQCAtMzkxLDggKzM5NCw4IEBACiAgICAuLiBtZXRob2Q6OiByZWFkaW50byhiKQogCiAgICAgICBSZWFkIHVwIHRvIGBgbGVuKGIpYGAgYnl0ZXMgaW50byA6Y2xhc3M6YGJ5dGVhcnJheWAgKmIqIGFuZCByZXR1cm4gdGhlCi0gICAgICBudW1iZXIgb2YgYnl0ZXMgcmVhZC4gIElmIHRoZSBvYmplY3QgaXMgaW4gbm9uLWJsb2NraW5nIG1vZGUgYW5kIG5vCi0gICAgICBieXRlcyBhcmUgYXZhaWxhYmxlLCBgYE5vbmVgYCBpcyByZXR1cm5lZC4KKyAgICAgIG51bWJlciBvZiBieXRlcyByZWFkLiAgSWYgdGhlIG9iamVjdCBpcyBpbiBub24tYmxvY2tpbmcgbW9kZSBhbmQgbm8gYnl0ZXMKKyAgICAgIGFyZSBhdmFpbGFibGUsIGBgTm9uZWBgIGlzIHJldHVybmVkLgogCiAgICAuLiBtZXRob2Q6OiB3cml0ZShiKQogCkBAIC00NjUsOSArNDY4LDEwIEBACiAKICAgIC4uIG1ldGhvZDo6IHJlYWQxKHNpemU9LTEpCiAKLSAgICAgIFJlYWQgYW5kIHJldHVybiB1cCB0byAqc2l6ZSogYnl0ZXMsIHdpdGggYXQgbW9zdCBvbmUgY2FsbCB0byB0aGUgdW5kZXJseWluZwotICAgICAgcmF3IHN0cmVhbSdzIDptZXRoOmB+UmF3SU9CYXNlLnJlYWRgIG1ldGhvZC4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB5b3UKLSAgICAgIGFyZSBpbXBsZW1lbnRpbmcgeW91ciBvd24gYnVmZmVyaW5nIG9uIHRvcCBvZiBhIDpjbGFzczpgQnVmZmVyZWRJT0Jhc2VgCisgICAgICBSZWFkIGFuZCByZXR1cm4gdXAgdG8gKnNpemUqIGJ5dGVzLCB3aXRoIGF0IG1vc3Qgb25lIGNhbGwgdG8gdGhlCisgICAgICB1bmRlcmx5aW5nIHJhdyBzdHJlYW0ncyA6bWV0aDpgflJhd0lPQmFzZS5yZWFkYCAob3IKKyAgICAgIDptZXRoOmB+UmF3SU9CYXNlLnJlYWRpbnRvYCkgbWV0aG9kLiAgVGhpcyBjYW4gYmUgdXNlZnVsIGlmIHlvdSBhcmUKKyAgICAgIGltcGxlbWVudGluZyB5b3VyIG93biBidWZmZXJpbmcgb24gdG9wIG9mIGEgOmNsYXNzOmBCdWZmZXJlZElPQmFzZWAKICAgICAgIG9iamVjdC4KIAogICAgLi4gbWV0aG9kOjogcmVhZGludG8oYikKQEAgLTQ3OCw4ICs0ODIsMTkgQEAKICAgICAgIExpa2UgOm1ldGg6YHJlYWRgLCBtdWx0aXBsZSByZWFkcyBtYXkgYmUgaXNzdWVkIHRvIHRoZSB1bmRlcmx5aW5nIHJhdwogICAgICAgc3RyZWFtLCB1bmxlc3MgdGhlIGxhdHRlciBpcyBpbnRlcmFjdGl2ZS4KIAotICAgICAgQSA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGlzIGluCi0gICAgICBub24gYmxvY2tpbmctbW9kZSwgYW5kIGhhcyBubyBkYXRhIGF2YWlsYWJsZSBhdCB0aGUgbW9tZW50LgorICAgICAgQSA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGlzIGluIG5vbgorICAgICAgYmxvY2tpbmctbW9kZSwgYW5kIGhhcyBubyBkYXRhIGF2YWlsYWJsZSBhdCB0aGUgbW9tZW50LgorCisgICAuLiBtZXRob2Q6OiByZWFkaW50bzEoYikKKworICAgICAgUmVhZCB1cCB0byBgYGxlbihiKWBgIGJ5dGVzIGludG8gYnl0ZWFycmF5ICpiKiwgdXNpbmcgYXQgbW9zdCBvbmUgY2FsbCB0bworICAgICAgdGhlIHVuZGVybHlpbmcgcmF3IHN0cmVhbSdzIDptZXRoOmB+UmF3SU9CYXNlLnJlYWRgIChvcgorICAgICAgOm1ldGg6YH5SYXdJT0Jhc2UucmVhZGludG9gKSBtZXRob2QuIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuCisKKyAgICAgIEEgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYCBpcyByYWlzZWQgaWYgdGhlIHVuZGVybHlpbmcgcmF3IHN0cmVhbSBpcyBpbiBub24KKyAgICAgIGJsb2NraW5nLW1vZGUsIGFuZCBoYXMgbm8gZGF0YSBhdmFpbGFibGUgYXQgdGhlIG1vbWVudC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlKGIpCiAKQEAgLTUwNyw5ICs1MjIsMTIgQEAKICAgIFRoZSAqbmFtZSogY2FuIGJlIG9uZSBvZiB0d28gdGhpbmdzOgogCiAgICAqIGEgY2hhcmFjdGVyIHN0cmluZyBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIHRoZQotICAgICBmaWxlIHdoaWNoIHdpbGwgYmUgb3BlbmVkOworICAgICBmaWxlIHdoaWNoIHdpbGwgYmUgb3BlbmVkLiBJbiB0aGlzIGNhc2UgY2xvc2VmZCBtdXN0IGJlIFRydWUgKHRoZSBkZWZhdWx0KQorICAgICBvdGhlcndpc2UgYW4gZXJyb3Igd2lsbCBiZSByYWlzZWQuCiAgICAqIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2YgYW4gZXhpc3RpbmcgT1MtbGV2ZWwgZmlsZSBkZXNjcmlwdG9yCi0gICAgIHRvIHdoaWNoIHRoZSByZXN1bHRpbmcgOmNsYXNzOmBGaWxlSU9gIG9iamVjdCB3aWxsIGdpdmUgYWNjZXNzLgorICAgICB0byB3aGljaCB0aGUgcmVzdWx0aW5nIDpjbGFzczpgRmlsZUlPYCBvYmplY3Qgd2lsbCBnaXZlIGFjY2Vzcy4gV2hlbiB0aGUKKyAgICAgRmlsZUlPIG9iamVjdCBpcyBjbG9zZWQgdGhpcyBmZCB3aWxsIGJlIGNsb3NlZCBhcyB3ZWxsLCB1bmxlc3MgKmNsb3NlZmQqCisgICAgIGlzIHNldCB0byBgYEZhbHNlYGAuCiAKICAgIFRoZSAqbW9kZSogY2FuIGJlIGBgJ3InYGAsIGBgJ3cnYGAsIGBgJ3gnYGAgb3IgYGAnYSdgYCBmb3IgcmVhZGluZwogICAgKGRlZmF1bHQpLCB3cml0aW5nLCBleGNsdXNpdmUgY3JlYXRpb24gb3IgYXBwZW5kaW5nLiBUaGUgZmlsZSB3aWxsIGJlCkBAIC01OTgsNiArNjE2LDExIEBACiAKICAgICAgIEluIDpjbGFzczpgQnl0ZXNJT2AsIHRoaXMgaXMgdGhlIHNhbWUgYXMgOm1ldGg6YHJlYWRgLgogCisgICAuLiBtZXRob2Q6OiByZWFkaW50bzEoKQorCisgICAgICBJbiA6Y2xhc3M6YEJ5dGVzSU9gLCB0aGlzIGlzIHRoZSBzYW1lIGFzIDptZXRoOmByZWFkaW50b2AuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAuLiBjbGFzczo6IEJ1ZmZlcmVkUmVhZGVyKHJhdywgYnVmZmVyX3NpemU9REVGQVVMVF9CVUZGRVJfU0laRSkKIApAQCAtODA4LDExICs4MzEsMTMgQEAKICAgIGV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhbiBlbmNvZGluZyBlcnJvciAodGhlIGRlZmF1bHQgb2YgYGBOb25lYGAgaGFzIHRoZSBzYW1lCiAgICBlZmZlY3QpLCBvciBwYXNzIGBgJ2lnbm9yZSdgYCB0byBpZ25vcmUgZXJyb3JzLiAgKE5vdGUgdGhhdCBpZ25vcmluZyBlbmNvZGluZwogICAgZXJyb3JzIGNhbiBsZWFkIHRvIGRhdGEgbG9zcy4pICBgYCdyZXBsYWNlJ2BgIGNhdXNlcyBhIHJlcGxhY2VtZW50IG1hcmtlcgotICAgKHN1Y2ggYXMgYGAnPydgYCkgdG8gYmUgaW5zZXJ0ZWQgd2hlcmUgdGhlcmUgaXMgbWFsZm9ybWVkIGRhdGEuICBXaGVuCi0gICB3cml0aW5nLCBgYCd4bWxjaGFycmVmcmVwbGFjZSdgYCAocmVwbGFjZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBYTUwgY2hhcmFjdGVyCi0gICByZWZlcmVuY2UpIG9yIGBgJ2JhY2tzbGFzaHJlcGxhY2UnYGAgKHJlcGxhY2Ugd2l0aCBiYWNrc2xhc2hlZCBlc2NhcGUKLSAgIHNlcXVlbmNlcykgY2FuIGJlIHVzZWQuICBBbnkgb3RoZXIgZXJyb3IgaGFuZGxpbmcgbmFtZSB0aGF0IGhhcyBiZWVuCi0gICByZWdpc3RlcmVkIHdpdGggOmZ1bmM6YGNvZGVjcy5yZWdpc3Rlcl9lcnJvcmAgaXMgYWxzbyB2YWxpZC4KKyAgIChzdWNoIGFzIGBgJz8nYGApIHRvIGJlIGluc2VydGVkIHdoZXJlIHRoZXJlIGlzIG1hbGZvcm1lZCBkYXRhLgorICAgYGAnYmFja3NsYXNocmVwbGFjZSdgYCBjYXVzZXMgbWFsZm9ybWVkIGRhdGEgdG8gYmUgcmVwbGFjZWQgYnkgYQorICAgYmFja3NsYXNoZWQgZXNjYXBlIHNlcXVlbmNlLiAgV2hlbiB3cml0aW5nLCBgYCd4bWxjaGFycmVmcmVwbGFjZSdgYAorICAgKHJlcGxhY2Ugd2l0aCB0aGUgYXBwcm9wcmlhdGUgWE1MIGNoYXJhY3RlciByZWZlcmVuY2UpICBvciBgYCduYW1lcmVwbGFjZSdgYAorICAgKHJlcGxhY2Ugd2l0aCBgYFxOey4uLn1gYCBlc2NhcGUgc2VxdWVuY2VzKSBjYW4gYmUgdXNlZC4gIEFueSBvdGhlciBlcnJvcgorICAgaGFuZGxpbmcgbmFtZSB0aGF0IGhhcyBiZWVuIHJlZ2lzdGVyZWQgd2l0aAorICAgOmZ1bmM6YGNvZGVjcy5yZWdpc3Rlcl9lcnJvcmAgaXMgYWxzbyB2YWxpZC4KIAogICAgLi4gaW5kZXg6OgogICAgICAgc2luZ2xlOiB1bml2ZXJzYWwgbmV3bGluZXM7IGlvLlRleHRJT1dyYXBwZXIgY2xhc3MKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2lwYWRkcmVzcy5yc3QgYi9Eb2MvbGlicmFyeS9pcGFkZHJlc3MucnN0CmluZGV4IDMwMTA0OGUuLjkwZmNjNzQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2lwYWRkcmVzcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaXBhZGRyZXNzLnJzdApAQCAtMTQ2LDYgKzE0NiwyMCBAQAogICAgICAgdGhlIGFwcHJvcHJpYXRlIGxlbmd0aCAobW9zdCBzaWduaWZpY2FudCBvY3RldCBmaXJzdCkuIFRoaXMgaXMgNCBieXRlcwogICAgICAgZm9yIElQdjQgYW5kIDE2IGJ5dGVzIGZvciBJUHY2LgogCisgICAuLiBhdHRyaWJ1dGU6OiByZXZlcnNlX3BvaW50ZXIKKworICAgICAgVGhlIG5hbWUgb2YgdGhlIHJldmVyc2UgRE5TIFBUUiByZWNvcmQgZm9yIHRoZSBJUCBhZGRyZXNzLCBlLmcuOjoKKworICAgICAgICAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygiMTI3LjAuMC4xIikucmV2ZXJzZV9wb2ludGVyCisgICAgICAgICAgJzEuMC4wLjEyNy5pbi1hZGRyLmFycGEnCisgICAgICAgICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCIyMDAxOmRiODo6MSIpLnJldmVyc2VfcG9pbnRlcgorICAgICAgICAgICcxLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC44LmIuZC4wLjEuMC4wLjIuaXA2LmFycGEnCisKKyAgICAgIFRoaXMgaXMgdGhlIG5hbWUgdGhhdCBjb3VsZCBiZSB1c2VkIGZvciBwZXJmb3JtaW5nIGEgUFRSIGxvb2t1cCwgbm90IHRoZQorICAgICAgcmVzb2x2ZWQgaG9zdG5hbWUgaXRzZWxmLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogICAgLi4gYXR0cmlidXRlOjogaXNfbXVsdGljYXN0CiAKICAgICAgIGBgVHJ1ZWBgIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBtdWx0aWNhc3QgdXNlLiAgU2VlCkBAIC0yMjYsNiArMjQwLDcgQEAKICAgIDpjbGFzczpgSVB2NEFkZHJlc3NgIGNsYXNzOgogCiAgICAuLiBhdHRyaWJ1dGU6OiBwYWNrZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IHJldmVyc2VfcG9pbnRlcgogICAgLi4gYXR0cmlidXRlOjogdmVyc2lvbgogICAgLi4gYXR0cmlidXRlOjogbWF4X3ByZWZpeGxlbgogICAgLi4gYXR0cmlidXRlOjogaXNfbXVsdGljYXN0CkBAIC0zNzcsNiArMzkyLDEyIEBACiAgICAzLiBBbiBpbnRlZ2VyIHBhY2tlZCBpbnRvIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0IG9mIGxlbmd0aCA0LCBiaWctZW5kaWFuLgogICAgICAgVGhlIGludGVycHJldGF0aW9uIGlzIHNpbWlsYXIgdG8gYW4gaW50ZWdlciAqYWRkcmVzcyouCiAKKyAgIDQuIEEgdHdvLXR1cGxlIG9mIGFuIGFkZHJlc3MgZGVzY3JpcHRpb24gYW5kIGEgbmV0bWFzaywgd2hlcmUgdGhlIGFkZHJlc3MKKyAgICAgIGRlc2NyaXB0aW9uIGlzIGVpdGhlciBhIHN0cmluZywgYSAzMi1iaXRzIGludGVnZXIsIGEgNC1ieXRlcyBwYWNrZWQKKyAgICAgIGludGVnZXIsIG9yIGFuIGV4aXN0aW5nIElQdjRBZGRyZXNzIG9iamVjdDsgYW5kIHRoZSBuZXRtYXNrIGlzIGVpdGhlcgorICAgICAgYW4gaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIHByZWZpeCBsZW5ndGggKGUuZy4gYGAyNGBgKSBvciBhIHN0cmluZworICAgICAgcmVwcmVzZW50aW5nIHRoZSBwcmVmaXggbWFzayAoZS5nLiBgYDI1NS4yNTUuMjU1LjBgYCkuCisKICAgIEFuIDpleGM6YEFkZHJlc3NWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgKmFkZHJlc3MqIGlzIG5vdCBhIHZhbGlkIElQdjQKICAgIGFkZHJlc3MuICBBIDpleGM6YE5ldG1hc2tWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgdGhlIG1hc2sgaXMgbm90IHZhbGlkIGZvcgogICAgYW4gSVB2NCBhZGRyZXNzLgpAQCAtMzg5LDYgKzQxMCwxMCBAQAogICAgb2JqZWN0cyB3aWxsIHJhaXNlIDpleGM6YFR5cGVFcnJvcmAgaWYgdGhlIGFyZ3VtZW50J3MgSVAgdmVyc2lvbiBpcwogICAgaW5jb21wYXRpYmxlIHRvIGBgc2VsZmBgCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisKKyAgICAgIEFkZGVkIHRoZSB0d28tdHVwbGUgZm9ybSBmb3IgdGhlICphZGRyZXNzKiBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIuCisKICAgIC4uIGF0dHJpYnV0ZTo6IHZlcnNpb24KICAgIC4uIGF0dHJpYnV0ZTo6IG1heF9wcmVmaXhsZW4KIApAQCAtNTUzLDYgKzU3OCwxMSBAQAogICAgMy4gQW4gaW50ZWdlciBwYWNrZWQgaW50byBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZiBsZW5ndGggMTYsIGJpZy1lbmRpYW4uCiAgICAgICBUaGUgaW50ZXJwcmV0YXRpb24gaXMgc2ltaWxhciB0byBhbiBpbnRlZ2VyICphZGRyZXNzKi4KIAorICAgNC4gQSB0d28tdHVwbGUgb2YgYW4gYWRkcmVzcyBkZXNjcmlwdGlvbiBhbmQgYSBuZXRtYXNrLCB3aGVyZSB0aGUgYWRkcmVzcworICAgICAgZGVzY3JpcHRpb24gaXMgZWl0aGVyIGEgc3RyaW5nLCBhIDEyOC1iaXRzIGludGVnZXIsIGEgMTYtYnl0ZXMgcGFja2VkCisgICAgICBpbnRlZ2VyLCBvciBhbiBleGlzdGluZyBJUHY0QWRkcmVzcyBvYmplY3Q7IGFuZCB0aGUgbmV0bWFzayBpcyBhbgorICAgICAgaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIHByZWZpeCBsZW5ndGguCisKICAgIEFuIDpleGM6YEFkZHJlc3NWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgKmFkZHJlc3MqIGlzIG5vdCBhIHZhbGlkIElQdjYKICAgIGFkZHJlc3MuICBBIDpleGM6YE5ldG1hc2tWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgdGhlIG1hc2sgaXMgbm90IHZhbGlkIGZvcgogICAgYW4gSVB2NiBhZGRyZXNzLgpAQCAtNTYxLDYgKzU5MSwxMCBAQAogICAgdGhlbiA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuICBPdGhlcndpc2UsIHRoZSBob3N0IGJpdHMgYXJlIG1hc2tlZCBvdXQKICAgIHRvIGRldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgbmV0d29yayBhZGRyZXNzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorCisgICAgICBBZGRlZCB0aGUgdHdvLXR1cGxlIGZvcm0gZm9yIHRoZSAqYWRkcmVzcyogY29uc3RydWN0b3IgcGFyYW1ldGVyLgorCiAgICAuLiBhdHRyaWJ1dGU6OiB2ZXJzaW9uCiAgICAuLiBhdHRyaWJ1dGU6OiBtYXhfcHJlZml4bGVuCiAgICAuLiBhdHRyaWJ1dGU6OiBpc19tdWx0aWNhc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QgYi9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0CmluZGV4IGY0ODk1MzUuLjhjNzU5MmQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdApAQCAtODcsMTAgKzg3LDE1IEBACiAKIC4uIGZ1bmN0aW9uOjogYWNjdW11bGF0ZShpdGVyYWJsZVssIGZ1bmNdKQogCi0gICAgTWFrZSBhbiBpdGVyYXRvciB0aGF0IHJldHVybnMgYWNjdW11bGF0ZWQgc3Vtcy4gRWxlbWVudHMgbWF5IGJlIGFueSBhZGRhYmxlCi0gICAgdHlwZSBpbmNsdWRpbmcgOmNsYXNzOmB+ZGVjaW1hbC5EZWNpbWFsYCBvciA6Y2xhc3M6YH5mcmFjdGlvbnMuRnJhY3Rpb25gLgotICAgIElmIHRoZSBvcHRpb25hbCAqZnVuYyogYXJndW1lbnQgaXMgc3VwcGxpZWQsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uIG9mIHR3bwotICAgIGFyZ3VtZW50cyBhbmQgaXQgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgYWRkaXRpb24uCisgICAgTWFrZSBhbiBpdGVyYXRvciB0aGF0IHJldHVybnMgYWNjdW11bGF0ZWQgc3Vtcywgb3IgYWNjdW11bGF0ZWQKKyAgICByZXN1bHRzIG9mIG90aGVyIGJpbmFyeSBmdW5jdGlvbnMgKHNwZWNpZmllZCB2aWEgdGhlIG9wdGlvbmFsCisgICAgKmZ1bmMqIGFyZ3VtZW50KS4gIElmICpmdW5jKiBpcyBzdXBwbGllZCwgaXQgc2hvdWxkIGJlIGEgZnVuY3Rpb24KKyAgICBvZiB0d28gYXJndW1lbnRzLiBFbGVtZW50cyBvZiB0aGUgaW5wdXQgKml0ZXJhYmxlKiBtYXkgYmUgYW55IHR5cGUKKyAgICB0aGF0IGNhbiBiZSBhY2NlcHRlZCBhcyBhcmd1bWVudHMgdG8gKmZ1bmMqLiAoRm9yIGV4YW1wbGUsIHdpdGgKKyAgICB0aGUgZGVmYXVsdCBvcGVyYXRpb24gb2YgYWRkaXRpb24sIGVsZW1lbnRzIG1heSBiZSBhbnkgYWRkYWJsZQorICAgIHR5cGUgaW5jbHVkaW5nIDpjbGFzczpgfmRlY2ltYWwuRGVjaW1hbGAgb3IKKyAgICA6Y2xhc3M6YH5mcmFjdGlvbnMuRnJhY3Rpb25gLikgSWYgdGhlIGlucHV0IGl0ZXJhYmxlIGlzIGVtcHR5LCB0aGUKKyAgICBvdXRwdXQgaXRlcmFibGUgd2lsbCBhbHNvIGJlIGVtcHR5LgogCiAgICAgRXF1aXZhbGVudCB0bzo6CiAKQEAgLTk5LDcgKzEwNCwxMCBAQAogICAgICAgICAgICAgIyBhY2N1bXVsYXRlKFsxLDIsMyw0LDVdKSAtLT4gMSAzIDYgMTAgMTUKICAgICAgICAgICAgICMgYWNjdW11bGF0ZShbMSwyLDMsNCw1XSwgb3BlcmF0b3IubXVsKSAtLT4gMSAyIDYgMjQgMTIwCiAgICAgICAgICAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCi0gICAgICAgICAgICB0b3RhbCA9IG5leHQoaXQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdG90YWwgPSBuZXh0KGl0KQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICB5aWVsZCB0b3RhbAogICAgICAgICAgICAgZm9yIGVsZW1lbnQgaW4gaXQ6CiAgICAgICAgICAgICAgICAgdG90YWwgPSBmdW5jKHRvdGFsLCBlbGVtZW50KQpAQCAtNDAwLDcgKzQwOCwxMCBAQAogICAgICAgICAgIGRlZiBfZ3JvdXBlcihzZWxmLCB0Z3RrZXkpOgogICAgICAgICAgICAgICB3aGlsZSBzZWxmLmN1cnJrZXkgPT0gdGd0a2V5OgogICAgICAgICAgICAgICAgICAgeWllbGQgc2VsZi5jdXJydmFsdWUKLSAgICAgICAgICAgICAgICAgIHNlbGYuY3VycnZhbHVlID0gbmV4dChzZWxmLml0KSAgICAjIEV4aXQgb24gU3RvcEl0ZXJhdGlvbgorICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycnZhbHVlID0gbmV4dChzZWxmLml0KQorICAgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgICBzZWxmLmN1cnJrZXkgPSBzZWxmLmtleWZ1bmMoc2VsZi5jdXJydmFsdWUpCiAKIApAQCAtNDI0LDcgKzQzNSwxMCBAQAogICAgICAgICAgICMgaXNsaWNlKCdBQkNERUZHJywgMCwgTm9uZSwgMikgLS0+IEEgQyBFIEcKICAgICAgICAgICBzID0gc2xpY2UoKmFyZ3MpCiAgICAgICAgICAgaXQgPSBpdGVyKHJhbmdlKHMuc3RhcnQgb3IgMCwgcy5zdG9wIG9yIHN5cy5tYXhzaXplLCBzLnN0ZXAgb3IgMSkpCi0gICAgICAgICAgbmV4dGkgPSBuZXh0KGl0KQorICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgbmV4dGkgPSBuZXh0KGl0KQorICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICBmb3IgaSwgZWxlbWVudCBpbiBlbnVtZXJhdGUoaXRlcmFibGUpOgogICAgICAgICAgICAgICBpZiBpID09IG5leHRpOgogICAgICAgICAgICAgICAgICAgeWllbGQgZWxlbWVudApAQCAtNTgyLDcgKzU5NiwxMCBAQAogICAgICAgICAgICAgZGVmIGdlbihteWRlcXVlKToKICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgICAgICBpZiBub3QgbXlkZXF1ZTogICAgICAgICAgICAgIyB3aGVuIHRoZSBsb2NhbCBkZXF1ZSBpcyBlbXB0eQotICAgICAgICAgICAgICAgICAgICAgICAgbmV3dmFsID0gbmV4dChpdCkgICAgICAgIyBmZXRjaCBhIG5ldyB2YWx1ZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXd2YWwgPSBuZXh0KGl0KSAgICMgZmV0Y2ggYSBuZXcgdmFsdWUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkIGluIGRlcXVlczogICAgICAgICMgbG9hZCBpdCB0byBhbGwgdGhlIGRlcXVlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuYXBwZW5kKG5ld3ZhbCkKICAgICAgICAgICAgICAgICAgICAgeWllbGQgbXlkZXF1ZS5wb3BsZWZ0KCkKQEAgLTY1Nyw2ICs2NzQsMTEgQEAKICAgICAgICAiUmV0dXJuIGZ1bmN0aW9uKDApLCBmdW5jdGlvbigxKSwgLi4uIgogICAgICAgIHJldHVybiBtYXAoZnVuY3Rpb24sIGNvdW50KHN0YXJ0KSkKIAorICAgZGVmIHRhaWwobiwgaXRlcmFibGUpOgorICAgICAgICJSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUgbGFzdCBuIGl0ZW1zIgorICAgICAgICMgdGFpbCgzLCAnQUJDREVGRycpIC0tPiBFIEYgRworICAgICAgIHJldHVybiBpdGVyKGNvbGxlY3Rpb25zLmRlcXVlKGl0ZXJhYmxlLCBtYXhsZW49bikpCisKICAgIGRlZiBjb25zdW1lKGl0ZXJhdG9yLCBuKToKICAgICAgICAiQWR2YW5jZSB0aGUgaXRlcmF0b3Igbi1zdGVwcyBhaGVhZC4gSWYgbiBpcyBub25lLCBjb25zdW1lIGVudGlyZWx5LiIKICAgICAgICAjIFVzZSBmdW5jdGlvbnMgdGhhdCBjb25zdW1lIGl0ZXJhdG9ycyBhdCBDIHNwZWVkLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvanNvbi5yc3QgYi9Eb2MvbGlicmFyeS9qc29uLnJzdAppbmRleCBhMDFlNjM2Li5kNjJmMTRiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9qc29uLnJzdAorKysgYi9Eb2MvbGlicmFyeS9qc29uLnJzdApAQCAtMTA2LDYgKzEwNiw4IEBACiAgICAgJCBlY2hvICd7MS4yOjMuNH0nIHwgcHl0aG9uIC1tIGpzb24udG9vbAogICAgIEV4cGVjdGluZyBwcm9wZXJ0eSBuYW1lIGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXM6IGxpbmUgMSBjb2x1bW4gMiAoY2hhciAxKQogCitTZWUgOnJlZjpganNvbi1jb21tYW5kbGluZWAgZm9yIGRldGFpbGVkIGRvY3VtZW50YXRpb24uCisKIC4uIGhpZ2hsaWdodDo6IHB5dGhvbjMKIAogLi4gbm90ZTo6CkBAIC0yNDgsNyArMjUwLDcgQEAKICAgIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgY2xhc3MuCiAKICAgIElmIHRoZSBkYXRhIGJlaW5nIGRlc2VyaWFsaXplZCBpcyBub3QgYSB2YWxpZCBKU09OIGRvY3VtZW50LCBhCi0gICA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KKyAgIDpleGM6YEpTT05EZWNvZGVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCiAKIC4uIGZ1bmN0aW9uOjogbG9hZHMocywgZW5jb2Rpbmc9Tm9uZSwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lLCAqKmt3KQogCkBAIC0yNTksNyArMjYxLDcgQEAKICAgICplbmNvZGluZyogd2hpY2ggaXMgaWdub3JlZCBhbmQgZGVwcmVjYXRlZC4KIAogICAgSWYgdGhlIGRhdGEgYmVpbmcgZGVzZXJpYWxpemVkIGlzIG5vdCBhIHZhbGlkIEpTT04gZG9jdW1lbnQsIGEKLSAgIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgorICAgOmV4YzpgSlNPTkRlY29kZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KIAogRW5jb2RlcnMgYW5kIERlY29kZXJzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMzMiwxMyArMzM0LDE2IEBACiAgICBgYCdcbidgYCwgYGAnXHInYGAgYW5kIGBgJ1wwJ2BgLgogCiAgICBJZiB0aGUgZGF0YSBiZWluZyBkZXNlcmlhbGl6ZWQgaXMgbm90IGEgdmFsaWQgSlNPTiBkb2N1bWVudCwgYQotICAgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCisgICA6ZXhjOmBKU09ORGVjb2RlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgogCiAgICAuLiBtZXRob2Q6OiBkZWNvZGUocykKIAogICAgICAgUmV0dXJuIHRoZSBQeXRob24gcmVwcmVzZW50YXRpb24gb2YgKnMqIChhIDpjbGFzczpgc3RyYCBpbnN0YW5jZQogICAgICAgY29udGFpbmluZyBhIEpTT04gZG9jdW1lbnQpLgogCisgICAgICA6ZXhjOmBKU09ORGVjb2RlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGlmIHRoZSBnaXZlbiBKU09OIGRvY3VtZW50IGlzIG5vdAorICAgICAgdmFsaWQuCisKICAgIC4uIG1ldGhvZDo6IHJhd19kZWNvZGUocykKIAogICAgICAgRGVjb2RlIGEgSlNPTiBkb2N1bWVudCBmcm9tICpzKiAoYSA6Y2xhc3M6YHN0cmAgYmVnaW5uaW5nIHdpdGggYQpAQCAtNDY3LDYgKzQ3MiwzNiBAQAogICAgICAgICAgICAgICAgIG15c29ja2V0LndyaXRlKGNodW5rKQogCiAKK0V4Y2VwdGlvbnMKKy0tLS0tLS0tLS0KKworLi4gZXhjZXB0aW9uOjogSlNPTkRlY29kZUVycm9yKG1zZywgZG9jLCBwb3MsIGVuZD1Ob25lKQorCisgICAgU3ViY2xhc3Mgb2YgOmV4YzpgVmFsdWVFcnJvcmAgd2l0aCB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgYXR0cmlidXRlczoKKworICAgIC4uIGF0dHJpYnV0ZTo6IG1zZworCisgICAgICAgIFRoZSB1bmZvcm1hdHRlZCBlcnJvciBtZXNzYWdlLgorCisgICAgLi4gYXR0cmlidXRlOjogZG9jCisKKyAgICAgICAgVGhlIEpTT04gZG9jdW1lbnQgYmVpbmcgcGFyc2VkLgorCisgICAgLi4gYXR0cmlidXRlOjogcG9zCisKKyAgICAgICAgVGhlIHN0YXJ0IGluZGV4IG9mICpkb2MqIHdoZXJlIHBhcnNpbmcgZmFpbGVkLgorCisgICAgLi4gYXR0cmlidXRlOjogbGluZW5vCisKKyAgICAgICAgVGhlIGxpbmUgY29ycmVzcG9uZGluZyB0byAqcG9zKi4KKworICAgIC4uIGF0dHJpYnV0ZTo6IGNvbG5vCisKKyAgICAgICAgVGhlIGNvbHVtbiBjb3JyZXNwb25kaW5nIHRvICpwb3MqLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiBTdGFuZGFyZCBDb21wbGlhbmNlIGFuZCBJbnRlcm9wZXJhYmlsaXR5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTU4OCw2ICs2MjMsNjggQEAKIHdoZW4gc2VyaWFsaXppbmcgaW5zdGFuY2VzIG9mICJleG90aWMiIG51bWVyaWNhbCB0eXBlcyBzdWNoIGFzCiA6Y2xhc3M6YGRlY2ltYWwuRGVjaW1hbGAuCiAKKy4uIGhpZ2hsaWdodDo6IGJhc2gKKy4uIG1vZHVsZTo6IGpzb24udG9vbAorCisuLiBfanNvbi1jb21tYW5kbGluZToKKworQ29tbWFuZCBMaW5lIEludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpganNvbi50b29sYCBtb2R1bGUgcHJvdmlkZXMgYSBzaW1wbGUgY29tbWFuZCBsaW5lIGludGVyZmFjZSB0byB2YWxpZGF0ZQorYW5kIHByZXR0eS1wcmludCBKU09OIG9iamVjdHMuCisKK0lmIHRoZSBvcHRpb25hbCBgYGluZmlsZWBgIGFuZCBgYG91dGZpbGVgYCBhcmd1bWVudHMgYXJlIG5vdAorc3BlY2lmaWVkLCA6YXR0cjpgc3lzLnN0ZGluYCBhbmQgOmF0dHI6YHN5cy5zdGRvdXRgIHdpbGwgYmUgdXNlZCByZXNwZWN0aXZlbHk6OgorCisgICAgJCBlY2hvICd7Impzb24iOiAib2JqIn0nIHwgcHl0aG9uIC1tIGpzb24udG9vbAorICAgIHsKKyAgICAgICAgImpzb24iOiAib2JqIgorICAgIH0KKyAgICAkIGVjaG8gJ3sxLjI6My40fScgfCBweXRob24gLW0ganNvbi50b29sCisgICAgRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlczogbGluZSAxIGNvbHVtbiAyIChjaGFyIDEpCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBUaGUgb3V0cHV0IGlzIG5vdyBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgaW5wdXQuIFVzZSB0aGUKKyAgIDpvcHRpb246YC0tc29ydC1rZXlzYCBvcHRpb24gdG8gc29ydCB0aGUgb3V0cHV0IG9mIGRpY3Rpb25hcmllcworICAgYWxwaGFiZXRpY2FsbHkgYnkga2V5LgorCitDb21tYW5kIGxpbmUgb3B0aW9ucworXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworLi4gY21kb3B0aW9uOjogaW5maWxlCisKKyAgIFRoZSBKU09OIGZpbGUgdG8gYmUgdmFsaWRhdGVkIG9yIHByZXR0eS1wcmludGVkOjoKKworICAgICAgJCBweXRob24gLW0ganNvbi50b29sIG1wX2ZpbG1zLmpzb24KKyAgICAgIFsKKyAgICAgICAgICB7CisgICAgICAgICAgICAgICJ0aXRsZSI6ICJBbmQgTm93IGZvciBTb21ldGhpbmcgQ29tcGxldGVseSBEaWZmZXJlbnQiLAorICAgICAgICAgICAgICAieWVhciI6IDE5NzEKKyAgICAgICAgICB9LAorICAgICAgICAgIHsKKyAgICAgICAgICAgICAgInRpdGxlIjogIk1vbnR5IFB5dGhvbiBhbmQgdGhlIEhvbHkgR3JhaWwiLAorICAgICAgICAgICAgICAieWVhciI6IDE5NzUKKyAgICAgICAgICB9CisgICAgICBdCisKKyAgIElmICppbmZpbGUqIGlzIG5vdCBzcGVjaWZpZWQsIHJlYWQgZnJvbSA6YXR0cjpgc3lzLnN0ZGluYC4KKworLi4gY21kb3B0aW9uOjogb3V0ZmlsZQorCisgICBXcml0ZSB0aGUgb3V0cHV0IG9mIHRoZSAqaW5maWxlKiB0byB0aGUgZ2l2ZW4gKm91dGZpbGUqLiBPdGhlcndpc2UsIHdyaXRlIGl0CisgICB0byA6YXR0cjpgc3lzLnN0ZG91dGAuCisKKy4uIGNtZG9wdGlvbjo6IC0tc29ydC1rZXlzCisKKyAgIFNvcnQgdGhlIG91dHB1dCBvZiBkaWN0aW9uYXJpZXMgYWxwaGFiZXRpY2FsbHkgYnkga2V5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gY21kb3B0aW9uOjogLWgsIC0taGVscAorCisgICBTaG93IHRoZSBoZWxwIG1lc3NhZ2UuCisKIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2xpbmVjYWNoZS5yc3QgYi9Eb2MvbGlicmFyeS9saW5lY2FjaGUucnN0CmluZGV4IGYxOGIxY2QuLjNmMTQ4ODUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2xpbmVjYWNoZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbGluZWNhY2hlLnJzdApAQCAtNDcsNiArNDcsMTQgQEAKICAgIGNoYW5nZWQgb24gZGlzaywgYW5kIHlvdSByZXF1aXJlIHRoZSB1cGRhdGVkIHZlcnNpb24uICBJZiAqZmlsZW5hbWUqIGlzIG9taXR0ZWQsCiAgICBpdCB3aWxsIGNoZWNrIGFsbCB0aGUgZW50cmllcyBpbiB0aGUgY2FjaGUuCiAKKy4uIGZ1bmN0aW9uOjogbGF6eWNhY2hlKGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscykKKworICAgQ2FwdHVyZSBlbm91Z2ggZGV0YWlsIGFib3V0IGEgbm9uLWZpbGUtYmFzZWQgbW9kdWxlIHRvIHBlcm1pdCBnZXR0aW5nIGl0cworICAgbGluZXMgbGF0ZXIgdmlhIDpmdW5jOmBnZXRsaW5lYCBldmVuIGlmICptb2R1bGVfZ2xvYmFscyogaXMgTm9uZSBpbiB0aGUgbGF0ZXIKKyAgIGNhbGwuIFRoaXMgYXZvaWRzIGRvaW5nIEkvTyB1bnRpbCBhIGxpbmUgaXMgYWN0dWFsbHkgbmVlZGVkLCB3aXRob3V0IGhhdmluZworICAgdG8gY2FycnkgdGhlIG1vZHVsZSBnbG9iYWxzIGFyb3VuZCBpbmRlZmluaXRlbHkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiBFeGFtcGxlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbG9jYWxlLnJzdCBiL0RvYy9saWJyYXJ5L2xvY2FsZS5yc3QKaW5kZXggYjE0YzU1MWIuLjYxYjc5ZmEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2xvY2FsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbG9jYWxlLnJzdApAQCAtMzg3LDYgKzM4NywxNCBAQAogICAgYGBzdHIoZmxvYXQpYGAsIGJ1dCB0YWtlcyB0aGUgZGVjaW1hbCBwb2ludCBpbnRvIGFjY291bnQuCiAKIAorLi4gZnVuY3Rpb246OiBkZWxvY2FsaXplKHN0cmluZykKKworICAgIENvbnZlcnRzIGEgc3RyaW5nIGludG8gYSBub3JtYWxpemVkIG51bWJlciBzdHJpbmcsIGZvbGxvd2luZyB0aGUKKyAgICA6Y29uc3Q6YExDX05VTUVSSUNgIHNldHRpbmdzLgorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gZnVuY3Rpb246OiBhdG9mKHN0cmluZykKIAogICAgQ29udmVydHMgYSBzdHJpbmcgdG8gYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIGZvbGxvd2luZyB0aGUgOmNvbnN0OmBMQ19OVU1FUklDYApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QgYi9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdAppbmRleCA5ZTU1OGU1Li4wZWRjOTQyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdApAQCAtODUzLDcgKzg1Myw3IEBACiAgICBjcmVkZW50aWFscywgeW91IHNob3VsZCBhbHNvIHNwZWNpZnkgc2VjdXJlPVRydWUgc28gdGhhdCB5b3VyIHVzZXJpZCBhbmQKICAgIHBhc3N3b3JkIGFyZSBub3QgcGFzc2VkIGluIGNsZWFydGV4dCBhY3Jvc3MgdGhlIHdpcmUuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjMKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBUaGUgKmNvbnRleHQqIHBhcmFtZXRlciB3YXMgYWRkZWQuCiAKICAgIC4uIG1ldGhvZDo6IG1hcExvZ1JlY29yZChyZWNvcmQpCkBAIC05NTMsMTMgKzk1MywyMCBAQAogcG9zc2libGUsIHdoaWxlIGFueSBwb3RlbnRpYWxseSBzbG93IG9wZXJhdGlvbnMgKHN1Y2ggYXMgc2VuZGluZyBhbiBlbWFpbCB2aWEKIDpjbGFzczpgU01UUEhhbmRsZXJgKSBhcmUgZG9uZSBvbiBhIHNlcGFyYXRlIHRocmVhZC4KIAotLi4gY2xhc3M6OiBRdWV1ZUxpc3RlbmVyKHF1ZXVlLCAqaGFuZGxlcnMpCisuLiBjbGFzczo6IFF1ZXVlTGlzdGVuZXIocXVldWUsICpoYW5kbGVycywgcmVzcGVjdF9oYW5kbGVyX2xldmVsPUZhbHNlKQogCiAgICBSZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YFF1ZXVlTGlzdGVuZXJgIGNsYXNzLiBUaGUgaW5zdGFuY2UgaXMKICAgIGluaXRpYWxpemVkIHdpdGggdGhlIHF1ZXVlIHRvIHNlbmQgbWVzc2FnZXMgdG8gYW5kIGEgbGlzdCBvZiBoYW5kbGVycyB3aGljaAogICAgd2lsbCBoYW5kbGUgZW50cmllcyBwbGFjZWQgb24gdGhlIHF1ZXVlLiBUaGUgcXVldWUgY2FuIGJlIGFueSBxdWV1ZS0KICAgIGxpa2Ugb2JqZWN0OyBpdCdzIHBhc3NlZCBhcy1pcyB0byB0aGUgOm1ldGg6YGRlcXVldWVgIG1ldGhvZCwgd2hpY2ggbmVlZHMKLSAgIHRvIGtub3cgaG93IHRvIGdldCBtZXNzYWdlcyBmcm9tIGl0LgorICAgdG8ga25vdyBob3cgdG8gZ2V0IG1lc3NhZ2VzIGZyb20gaXQuIElmIGBgcmVzcGVjdF9oYW5kbGVyX2xldmVsYGAgaXMgYGBUcnVlYGAsCisgICBhIGhhbmRsZXIncyBsZXZlbCBpcyByZXNwZWN0ZWQgKGNvbXBhcmVkIHdpdGggdGhlIGxldmVsIGZvciB0aGUgbWVzc2FnZSkgd2hlbgorICAgZGVjaWRpbmcgd2hldGhlciB0byBwYXNzIG1lc3NhZ2VzIHRvIHRoYXQgaGFuZGxlcjsgb3RoZXJ3aXNlLCB0aGUgYmVoYXZpb3VyCisgICBpcyBhcyBpbiBwcmV2aW91cyBQeXRob24gdmVyc2lvbnMgLSB0byBhbHdheXMgcGFzcyBlYWNoIG1lc3NhZ2UgdG8gZWFjaAorICAgaGFuZGxlci4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBgYHJlc3BlY3RfaGFuZGxlcl9sZXZlbHNgYCBhcmd1bWVudCB3YXMgYWRkZWQuCiAKICAgIC4uIG1ldGhvZDo6IGRlcXVldWUoYmxvY2spCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcucnN0IGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5yc3QKaW5kZXggOGZkN2U0MC4uNWJjNzJmNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbG9nZ2luZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5yc3QKQEAgLTE1OSwxMSArMTU5LDEzIEBACiAgICAqbXNnKiB1c2luZyB0aGUgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0b3IuIChOb3RlIHRoYXQgdGhpcyBtZWFucyB0aGF0IHlvdSBjYW4KICAgIHVzZSBrZXl3b3JkcyBpbiB0aGUgZm9ybWF0IHN0cmluZywgdG9nZXRoZXIgd2l0aCBhIHNpbmdsZSBkaWN0aW9uYXJ5IGFyZ3VtZW50LikKIAotICAgVGhlcmUgYXJlIHRocmVlIGtleXdvcmQgYXJndW1lbnRzIGluICprd2FyZ3MqIHdoaWNoIGFyZSBpbnNwZWN0ZWQ6ICpleGNfaW5mbyoKLSAgIHdoaWNoLCBpZiBpdCBkb2VzIG5vdCBldmFsdWF0ZSBhcyBmYWxzZSwgY2F1c2VzIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiB0byBiZQorICAgVGhlcmUgYXJlIHRocmVlIGtleXdvcmQgYXJndW1lbnRzIGluICprd2FyZ3MqIHdoaWNoIGFyZSBpbnNwZWN0ZWQ6CisgICAqZXhjX2luZm8qLCAqc3RhY2tfaW5mbyosIGFuZCAqZXh0cmEqLgorCisgICBJZiAqZXhjX2luZm8qIGRvZXMgbm90IGV2YWx1YXRlIGFzIGZhbHNlLCBpdCBjYXVzZXMgZXhjZXB0aW9uIGluZm9ybWF0aW9uIHRvIGJlCiAgICBhZGRlZCB0byB0aGUgbG9nZ2luZyBtZXNzYWdlLiBJZiBhbiBleGNlcHRpb24gdHVwbGUgKGluIHRoZSBmb3JtYXQgcmV0dXJuZWQgYnkKLSAgIDpmdW5jOmBzeXMuZXhjX2luZm9gKSBpcyBwcm92aWRlZCwgaXQgaXMgdXNlZDsgb3RoZXJ3aXNlLCA6ZnVuYzpgc3lzLmV4Y19pbmZvYAotICAgaXMgY2FsbGVkIHRvIGdldCB0aGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uLgorICAgOmZ1bmM6YHN5cy5leGNfaW5mb2ApIG9yIGFuIGV4Y2VwdGlvbiBpbnN0YW5jZSBpcyBwcm92aWRlZCwgaXQgaXMgdXNlZDsKKyAgIG90aGVyd2lzZSwgOmZ1bmM6YHN5cy5leGNfaW5mb2AgaXMgY2FsbGVkIHRvIGdldCB0aGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uLgogCiAgICBUaGUgc2Vjb25kIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnQgaXMgKnN0YWNrX2luZm8qLCB3aGljaCBkZWZhdWx0cyB0bwogICAgYGBGYWxzZWBgLiBJZiB0cnVlLCBzdGFjayBpbmZvcm1hdGlvbiBpcyBhZGRlZCB0byB0aGUgbG9nZ2luZwpAQCAtMjIwLDYgKzIyMiw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKICAgICAgIFRoZSAqc3RhY2tfaW5mbyogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSAqZXhjX2luZm8qIHBhcmFtZXRlciBjYW4gbm93IGFjY2VwdCBleGNlcHRpb24gaW5zdGFuY2VzLgorCiAKIC4uIG1ldGhvZDo6IExvZ2dlci5pbmZvKG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9sem1hLnJzdCBiL0RvYy9saWJyYXJ5L2x6bWEucnN0CmluZGV4IGI3MTA1MWQuLjA1NDYwMDUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2x6bWEucnN0CisrKyBiL0RvYy9saWJyYXJ5L2x6bWEucnN0CkBAIC0xMTAsNiArMTEwLDEwIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgIngiYGAgYW5kIGBgInhiImBgIG1vZGVzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIDptZXRoOmB+aW8uQnVmZmVyZWRJT0Jhc2UucmVhZGAgbWV0aG9kIG5vdyBhY2NlcHRzIGFuIGFyZ3VtZW50IG9mCisgICAgICBgYE5vbmVgYC4KKwogCiBDb21wcmVzc2luZyBhbmQgZGVjb21wcmVzc2luZyBkYXRhIGluIG1lbW9yeQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIyMSwxMyArMjI1LDMyIEBACiAgICAgICBkZWNvbXByZXNzIGEgbXVsdGktc3RyZWFtIGlucHV0IHdpdGggOmNsYXNzOmBMWk1BRGVjb21wcmVzc29yYCwgeW91IG11c3QKICAgICAgIGNyZWF0ZSBhIG5ldyBkZWNvbXByZXNzb3IgZm9yIGVhY2ggc3RyZWFtLgogCi0gICAuLiBtZXRob2Q6OiBkZWNvbXByZXNzKGRhdGEpCisgICAuLiBtZXRob2Q6OiBkZWNvbXByZXNzKGRhdGEsIG1heF9sZW5ndGg9LTEpCiAKLSAgICAgIERlY29tcHJlc3MgKmRhdGEqIChhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCksIHJldHVybmluZyBhIDpjbGFzczpgYnl0ZXNgCi0gICAgICBvYmplY3QgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkIGRhdGEgZm9yIGF0IGxlYXN0IHBhcnQgb2YgdGhlIGlucHV0LgotICAgICAgU29tZSBvZiAqZGF0YSogbWF5IGJlIGJ1ZmZlcmVkIGludGVybmFsbHksIGZvciB1c2UgaW4gbGF0ZXIgY2FsbHMgdG8KLSAgICAgIDptZXRoOmBkZWNvbXByZXNzYC4gVGhlIHJldHVybmVkIGRhdGEgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB3aXRoIHRoZQotICAgICAgb3V0cHV0IG9mIGFueSBwcmV2aW91cyBjYWxscyB0byA6bWV0aDpgZGVjb21wcmVzc2AuCisgICAgICBEZWNvbXByZXNzICpkYXRhKiAoYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgKSwgcmV0dXJuaW5nCisgICAgICB1bmNvbXByZXNzZWQgZGF0YSBhcyBieXRlcy4gU29tZSBvZiAqZGF0YSogbWF5IGJlIGJ1ZmZlcmVkCisgICAgICBpbnRlcm5hbGx5LCBmb3IgdXNlIGluIGxhdGVyIGNhbGxzIHRvIDptZXRoOmBkZWNvbXByZXNzYC4gVGhlCisgICAgICByZXR1cm5lZCBkYXRhIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgb3V0cHV0IG9mIGFueQorICAgICAgcHJldmlvdXMgY2FsbHMgdG8gOm1ldGg6YGRlY29tcHJlc3NgLgorCisgICAgICBJZiAqbWF4X2xlbmd0aCogaXMgbm9ubmVnYXRpdmUsIHJldHVybnMgYXQgbW9zdCAqbWF4X2xlbmd0aCoKKyAgICAgIGJ5dGVzIG9mIGRlY29tcHJlc3NlZCBkYXRhLiBJZiB0aGlzIGxpbWl0IGlzIHJlYWNoZWQgYW5kIGZ1cnRoZXIKKyAgICAgIG91dHB1dCBjYW4gYmUgcHJvZHVjZWQsIHRoZSA6YXR0cjpgfi5uZWVkc19pbnB1dGAgYXR0cmlidXRlIHdpbGwKKyAgICAgIGJlIHNldCB0byBgYEZhbHNlYGAuIEluIHRoaXMgY2FzZSwgdGhlIG5leHQgY2FsbCB0bworICAgICAgOm1ldGg6YH4uZGVjb21wcmVzc2AgbWF5IHByb3ZpZGUgKmRhdGEqIGFzIGBgYicnYGAgdG8gb2J0YWluCisgICAgICBtb3JlIG9mIHRoZSBvdXRwdXQuCisKKyAgICAgIElmIGFsbCBvZiB0aGUgaW5wdXQgZGF0YSB3YXMgZGVjb21wcmVzc2VkIGFuZCByZXR1cm5lZCAoZWl0aGVyCisgICAgICBiZWNhdXNlIHRoaXMgd2FzIGxlc3MgdGhhbiAqbWF4X2xlbmd0aCogYnl0ZXMsIG9yIGJlY2F1c2UKKyAgICAgICptYXhfbGVuZ3RoKiB3YXMgbmVnYXRpdmUpLCB0aGUgOmF0dHI6YH4ubmVlZHNfaW5wdXRgIGF0dHJpYnV0ZQorICAgICAgd2lsbCBiZSBzZXQgdG8gYGBUcnVlYGAuCisKKyAgICAgIEF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIHJlYWNoZWQKKyAgICAgIHJhaXNlcyBhbiBgRU9GRXJyb3JgLiAgQW55IGRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUKKyAgICAgIHN0cmVhbSBpcyBpZ25vcmVkIGFuZCBzYXZlZCBpbiB0aGUgOmF0dHI6YH4udW51c2VkX2RhdGFgIGF0dHJpYnV0ZS4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICAgIEFkZGVkIHRoZSAqbWF4X2xlbmd0aCogcGFyYW1ldGVyLgogCiAgICAuLiBhdHRyaWJ1dGU6OiBjaGVjawogCkBAIC0yNDUsNiArMjY4LDEyIEBACiAKICAgICAgIEJlZm9yZSB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gaXMgcmVhY2hlZCwgdGhpcyB3aWxsIGJlIGBgYiIiYGAuCiAKKyAgIC4uIGF0dHJpYnV0ZTo6IG5lZWRzX2lucHV0CisKKyAgICAgIGBgRmFsc2VgYCBpZiB0aGUgOm1ldGg6YC5kZWNvbXByZXNzYCBtZXRob2QgY2FuIHByb3ZpZGUgbW9yZQorICAgICAgZGVjb21wcmVzc2VkIGRhdGEgYmVmb3JlIHJlcXVpcmluZyBuZXcgdW5jb21wcmVzc2VkIGlucHV0LgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogLi4gZnVuY3Rpb246OiBjb21wcmVzcyhkYXRhLCBmb3JtYXQ9Rk9STUFUX1haLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbWF0aC5yc3QgYi9Eb2MvbGlicmFyeS9tYXRoLnJzdAppbmRleCAwZmM3YzdjLi4yNDQ2NjNlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tYXRoLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tYXRoLnJzdApAQCAtMTAwLDYgKzEwMCw0OCBAQAogICAgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzM5MzA5MC8+YF9cLgogCiAKKy4uIGZ1bmN0aW9uOjogZ2NkKGEsIGIpCisKKyAgIFJldHVybiB0aGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3Igb2YgdGhlIGludGVnZXJzICphKiBhbmQgKmIqLiAgSWYgZWl0aGVyCisgICAqYSogb3IgKmIqIGlzIG5vbnplcm8sIHRoZW4gdGhlIHZhbHVlIG9mIGBgZ2NkKGEsIGIpYGAgaXMgdGhlIGxhcmdlc3QKKyAgIHBvc2l0aXZlIGludGVnZXIgdGhhdCBkaXZpZGVzIGJvdGggKmEqIGFuZCAqYiouICBgYGdjZCgwLCAwKWBgIHJldHVybnMKKyAgIGBgMGBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCisuLiBmdW5jdGlvbjo6IGlzY2xvc2UoYSwgYiwgKiwgcmVsX3RvbD0xZS0wOSwgYWJzX3RvbD0wLjApCisKKyAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgdmFsdWVzICphKiBhbmQgKmIqIGFyZSBjbG9zZSB0byBlYWNoIG90aGVyIGFuZAorICAgYGBGYWxzZWBgIG90aGVyd2lzZS4KKworICAgV2hldGhlciBvciBub3QgdHdvIHZhbHVlcyBhcmUgY29uc2lkZXJlZCBjbG9zZSBpcyBkZXRlcm1pbmVkIGFjY29yZGluZyB0bworICAgZ2l2ZW4gYWJzb2x1dGUgYW5kIHJlbGF0aXZlIHRvbGVyYW5jZXMuCisKKyAgICpyZWxfdG9sKiBpcyB0aGUgcmVsYXRpdmUgdG9sZXJhbmNlIC0tIGl0IGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQgZGlmZmVyZW5jZQorICAgYmV0d2VlbiAqYSogYW5kICpiKiwgcmVsYXRpdmUgdG8gdGhlIGxhcmdlciBhYnNvbHV0ZSB2YWx1ZSBvZiAqYSogb3IgKmIqLgorICAgRm9yIGV4YW1wbGUsIHRvIHNldCBhIHRvbGVyYW5jZSBvZiA1JSwgcGFzcyBgYHJlbF90b2w9MC4wNWBgLiAgVGhlIGRlZmF1bHQKKyAgIHRvbGVyYW5jZSBpcyBgYDFlLTA5YGAsIHdoaWNoIGFzc3VyZXMgdGhhdCB0aGUgdHdvIHZhbHVlcyBhcmUgdGhlIHNhbWUKKyAgIHdpdGhpbiBhYm91dCA5IGRlY2ltYWwgZGlnaXRzLiAgKnJlbF90b2wqIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uCisKKyAgICphYnNfdG9sKiBpcyB0aGUgbWluaW11bSBhYnNvbHV0ZSB0b2xlcmFuY2UgLS0gdXNlZnVsIGZvciBjb21wYXJpc29ucyBuZWFyCisgICB6ZXJvLiAqYWJzX3RvbCogbXVzdCBiZSBhdCBsZWFzdCB6ZXJvLgorCisgICBJZiBubyBlcnJvcnMgb2NjdXIsIHRoZSByZXN1bHQgd2lsbCBiZToKKyAgIGBgYWJzKGEtYikgPD0gbWF4KHJlbF90b2wgKiBtYXgoYWJzKGEpLCBhYnMoYikpLCBhYnNfdG9sKWBgLgorCisgICBUaGUgSUVFRSA3NTQgc3BlY2lhbCB2YWx1ZXMgb2YgYGBOYU5gYCwgYGBpbmZgYCwgYW5kIGBgLWluZmBgIHdpbGwgYmUKKyAgIGhhbmRsZWQgYWNjb3JkaW5nIHRvIElFRUUgcnVsZXMuICBTcGVjaWZpY2FsbHksIGBgTmFOYGAgaXMgbm90IGNvbnNpZGVyZWQKKyAgIGNsb3NlIHRvIGFueSBvdGhlciB2YWx1ZSwgaW5jbHVkaW5nIGBgTmFOYGAuICBgYGluZmBgIGFuZCBgYC1pbmZgYCBhcmUgb25seQorICAgY29uc2lkZXJlZCBjbG9zZSB0byB0aGVtc2VsdmVzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworICAgLi4gc2VlYWxzbzo6CisKKyAgICAgIDpwZXA6YDQ4NWAgLS0gQSBmdW5jdGlvbiBmb3IgdGVzdGluZyBhcHByb3hpbWF0ZSBlcXVhbGl0eQorCisKIC4uIGZ1bmN0aW9uOjogaXNmaW5pdGUoeCkKIAogICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICp4KiBpcyBuZWl0aGVyIGFuIGluZmluaXR5IG5vciBhIE5hTiwgYW5kCkBAIC0zODMsNiArNDI1LDIyIEBACiAgICBUaGUgbWF0aGVtYXRpY2FsIGNvbnN0YW50IGUgPSAyLjcxODI4MS4uLiwgdG8gYXZhaWxhYmxlIHByZWNpc2lvbi4KIAogCisuLiBkYXRhOjogaW5mCisKKyAgIEEgZmxvYXRpbmctcG9pbnQgcG9zaXRpdmUgaW5maW5pdHkuICAoRm9yIG5lZ2F0aXZlIGluZmluaXR5LCB1c2UKKyAgIGBgLW1hdGguaW5mYGAuKSAgRXF1aXZhbGVudCB0byB0aGUgb3V0cHV0IG9mIGBgZmxvYXQoJ2luZicpYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKKy4uIGRhdGE6OiBuYW4KKworICAgQSBmbG9hdGluZy1wb2ludCAibm90IGEgbnVtYmVyIiAoTmFOKSB2YWx1ZS4gIEVxdWl2YWxlbnQgdG8gdGhlIG91dHB1dCBvZgorICAgYGBmbG9hdCgnbmFuJylgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gaW1wbC1kZXRhaWw6OgogCiAgICBUaGUgOm1vZDpgbWF0aGAgbW9kdWxlIGNvbnNpc3RzIG1vc3RseSBvZiB0aGluIHdyYXBwZXJzIGFyb3VuZCB0aGUgcGxhdGZvcm0gQwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbW1hcC5yc3QgYi9Eb2MvbGlicmFyeS9tbWFwLnJzdAppbmRleCAxOGUwNWUzLi5iNzRhODIzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tbWFwLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tbWFwLnJzdApAQCAtMTc0LDYgKzE3NCw5IEBACiAgICAgICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLgogICAgICAgUmV0dXJucyBgYC0xYGAgb24gZmFpbHVyZS4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCisKIAogICAgLi4gbWV0aG9kOjogZmx1c2goW29mZnNldFssIHNpemVdXSkKIApAQCAtMjM0LDYgKzIzNyw5IEBACiAgICAgICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLgogICAgICAgUmV0dXJucyBgYC0xYGAgb24gZmFpbHVyZS4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCisKIAogICAgLi4gbWV0aG9kOjogc2Vlayhwb3NbLCB3aGVuY2VdKQogCkBAIC0yNjEsNiArMjY3LDkgQEAKICAgICAgIHdlcmUgd3JpdHRlbi4gSWYgdGhlIG1tYXAgd2FzIGNyZWF0ZWQgd2l0aCA6Y29uc3Q6YEFDQ0VTU19SRUFEYCwgdGhlbgogICAgICAgd3JpdGluZyB0byBpdCB3aWxsIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYCBleGNlcHRpb24uCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOiAzLjUKKyAgICAgICAgIFdyaXRhYmxlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgbm93IGFjY2VwdGVkLgorCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlX2J5dGUoYnl0ZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdCBiL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKaW5kZXggZjdkYzExYi4uZTM2OWUyYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CkBAIC05MDEsOCArOTAxLDEwIEBACiAgICBJZiB0aGUgYGBmcmVlemVfc3VwcG9ydCgpYGAgbGluZSBpcyBvbWl0dGVkIHRoZW4gdHJ5aW5nIHRvIHJ1biB0aGUgZnJvemVuCiAgICBleGVjdXRhYmxlIHdpbGwgcmFpc2UgOmV4YzpgUnVudGltZUVycm9yYC4KIAotICAgSWYgdGhlIG1vZHVsZSBpcyBiZWluZyBydW4gbm9ybWFsbHkgYnkgdGhlIFB5dGhvbiBpbnRlcnByZXRlciB0aGVuCi0gICA6ZnVuYzpgZnJlZXplX3N1cHBvcnRgIGhhcyBubyBlZmZlY3QuCisgICBDYWxsaW5nIGBgZnJlZXplX3N1cHBvcnQoKWBgIGhhcyBubyBlZmZlY3Qgd2hlbiBpbnZva2VkIG9uIGFueSBvcGVyYXRpbmcKKyAgIHN5c3RlbSBvdGhlciB0aGFuIFdpbmRvd3MuICBJbiBhZGRpdGlvbiwgaWYgdGhlIG1vZHVsZSBpcyBiZWluZyBydW4KKyAgIG5vcm1hbGx5IGJ5IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgb24gV2luZG93cyAodGhlIHByb2dyYW0gaGFzIG5vdCBiZWVuCisgICBmcm96ZW4pLCB0aGVuIGBgZnJlZXplX3N1cHBvcnQoKWBgIGhhcyBubyBlZmZlY3QuCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X2FsbF9zdGFydF9tZXRob2RzKCkKIApAQCAtMTQ1OCw2ICsxNDYwLDkgQEAKICAgIE5vdGUgdGhhdCBhY2Nlc3NpbmcgdGhlIGN0eXBlcyBvYmplY3QgdGhyb3VnaCB0aGUgd3JhcHBlciBjYW4gYmUgYSBsb3Qgc2xvd2VyCiAgICB0aGFuIGFjY2Vzc2luZyB0aGUgcmF3IGN0eXBlcyBvYmplY3QuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBTeW5jaHJvbml6ZWQgb2JqZWN0cyBzdXBwb3J0IHRoZSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCBwcm90b2NvbC4KKwogCiBUaGUgdGFibGUgYmVsb3cgY29tcGFyZXMgdGhlIHN5bnRheCBmb3IgY3JlYXRpbmcgc2hhcmVkIGN0eXBlcyBvYmplY3RzIGZyb20KIHNoYXJlZCBtZW1vcnkgd2l0aCB0aGUgbm9ybWFsIGN0eXBlcyBzeW50YXguICAoSW4gdGhlIHRhYmxlIGBgTXlTdHJ1Y3RgYCBpcyBzb21lCkBAIC0xOTQ1LDkgKzE5NTAsOSBAQAogICAgICAgICAgPj4+IGwgPSBtYW5hZ2VyLmxpc3QocmFuZ2UoMTApKQogICAgICAgICAgPj4+IGwuX2NhbGxtZXRob2QoJ19fbGVuX18nKQogICAgICAgICAgMTAKLSAgICAgICAgID4+PiBsLl9jYWxsbWV0aG9kKCdfX2dldGl0ZW1fXycsIChzbGljZSgyLCA3KSwpKSAgIyBlcXVpdiB0byBgbFsyOjddYAorICAgICAgICAgPj4+IGwuX2NhbGxtZXRob2QoJ19fZ2V0aXRlbV9fJywgKHNsaWNlKDIsIDcpLCkpICMgZXF1aXZhbGVudCB0byBsWzI6N10KICAgICAgICAgIFsyLCAzLCA0LCA1LCA2XQotICAgICAgICAgPj4+IGwuX2NhbGxtZXRob2QoJ19fZ2V0aXRlbV9fJywgKDIwLCkpICAgICAjIGVxdWl2IHRvIGBsWzIwXWAKKyAgICAgICAgID4+PiBsLl9jYWxsbWV0aG9kKCdfX2dldGl0ZW1fXycsICgyMCwpKSAgICAgICAgICAjIGVxdWl2YWxlbnQgdG8gbFsyMF0KICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgICAgIC4uLgogICAgICAgICAgSW5kZXhFcnJvcjogbGlzdCBpbmRleCBvdXQgb2YgcmFuZ2UKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L251bWJlcnMucnN0IGIvRG9jL2xpYnJhcnkvbnVtYmVycy5yc3QKaW5kZXggOGFiMDdkMC4uNzE4YTUwZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbnVtYmVycy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbnVtYmVycy5yc3QKQEAgLTM1LDcgKzM1LDcgQEAKIAogICAgICAgQWJzdHJhY3QuIFJldHJpZXZlcyB0aGUgaW1hZ2luYXJ5IGNvbXBvbmVudCBvZiB0aGlzIG51bWJlci4KIAotICAgLi4gbWV0aG9kOjogY29uanVnYXRlKCkKKyAgIC4uIGFic3RyYWN0bWV0aG9kOjogY29uanVnYXRlKCkKIAogICAgICAgQWJzdHJhY3QuIFJldHVybnMgdGhlIGNvbXBsZXggY29uanVnYXRlLiBGb3IgZXhhbXBsZSwgYGAoMSszaikuY29uanVnYXRlKCkKICAgICAgID09ICgxLTNqKWBgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvb3BlcmF0b3IucnN0IGIvRG9jL2xpYnJhcnkvb3BlcmF0b3IucnN0CmluZGV4IGY5ZTJhM2QuLmMwMWU2M2IgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L29wZXJhdG9yLnJzdAorKysgYi9Eb2MvbGlicmFyeS9vcGVyYXRvci5yc3QKQEAgLTEzOCw2ICsxMzgsMTQgQEAKICAgIFJldHVybiBgYGEgKiBiYGAsIGZvciAqYSogYW5kICpiKiBudW1iZXJzLgogCiAKKy4uIGZ1bmN0aW9uOjogbWF0bXVsKGEsIGIpCisgICAgICAgICAgICAgIF9fbWF0bXVsX18oYSwgYikKKworICAgUmV0dXJuIGBgYSBAIGJgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gZnVuY3Rpb246OiBuZWcob2JqKQogICAgICAgICAgICAgICBfX25lZ19fKG9iaikKIApAQCAtMzkxLDYgKzM5OSw4IEBACiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IE11bHRpcGxpY2F0aW9uICAgICAgICB8IGBgYSAqIGJgYCAgICAgICAgICAgICAgIHwgYGBtdWwoYSwgYilgYCAgICAgICAgICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IE1hdHJpeCBNdWx0aXBsaWNhdGlvbiB8IGBgYSBAIGJgYCAgICAgICAgICAgICAgIHwgYGBtYXRtdWwoYSwgYilgYCAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IE5lZ2F0aW9uIChBcml0aG1ldGljKSB8IGBgLSBhYGAgICAgICAgICAgICAgICAgIHwgYGBuZWcoYSlgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IE5lZ2F0aW9uIChMb2dpY2FsKSAgICB8IGBgbm90IGFgYCAgICAgICAgICAgICAgIHwgYGBub3RfKGEpYGAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CkBAIC00OTksNiArNTA5LDE0IEBACiAgICBgYGEgPSBpbXVsKGEsIGIpYGAgaXMgZXF1aXZhbGVudCB0byBgYGEgKj0gYmBgLgogCiAKKy4uIGZ1bmN0aW9uOjogaW1hdG11bChhLCBiKQorICAgICAgICAgICAgICBfX2ltYXRtdWxfXyhhLCBiKQorCisgICBgYGEgPSBpbWF0bXVsKGEsIGIpYGAgaXMgZXF1aXZhbGVudCB0byBgYGEgQD0gYmBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBmdW5jdGlvbjo6IGlvcihhLCBiKQogICAgICAgICAgICAgICBfX2lvcl9fKGEsIGIpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0IGIvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKaW5kZXggMzNlZjU2NC4uNGI0ZTBiNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKQEAgLTY2LDExICs2NiwzNyBAQAogICAgZW1wdHkgc3RyaW5nIChgYCcnYGApLgogCiAKKy4uIGZ1bmN0aW9uOjogY29tbW9ucGF0aChwYXRocykKKworICAgUmV0dXJuIHRoZSBsb25nZXN0IGNvbW1vbiBzdWItcGF0aCBvZiBlYWNoIHBhdGhuYW1lIGluIHRoZSBzZXF1ZW5jZQorICAgKnBhdGhzKi4gIFJhaXNlIFZhbHVlRXJyb3IgaWYgKnBhdGhzKiBjb250YWlucyBib3RoIGFic29sdXRlIGFuZCByZWxhdGl2ZQorICAgcGF0aG5hbWVzLCBvciBpZiAqcGF0aHMqIGlzIGVtcHR5LiAgVW5saWtlIDpmdW5jOmBjb21tb25wcmVmaXhgLCB0aGlzCisgICByZXR1cm5zIGEgdmFsaWQgcGF0aC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGZ1bmN0aW9uOjogY29tbW9ucHJlZml4KGxpc3QpCiAKLSAgIFJldHVybiB0aGUgbG9uZ2VzdCBwYXRoIHByZWZpeCAodGFrZW4gY2hhcmFjdGVyLWJ5LWNoYXJhY3RlcikgdGhhdCBpcyBhIHByZWZpeAotICAgb2YgYWxsIHBhdGhzIGluICAqbGlzdCouICBJZiAqbGlzdCogaXMgZW1wdHksIHJldHVybiB0aGUgZW1wdHkgc3RyaW5nIChgYCcnYGApLgotICAgTm90ZSB0aGF0IHRoaXMgbWF5IHJldHVybiBpbnZhbGlkIHBhdGhzIGJlY2F1c2UgaXQgd29ya3MgYSBjaGFyYWN0ZXIgYXQgYSB0aW1lLgorICAgUmV0dXJuIHRoZSBsb25nZXN0IHBhdGggcHJlZml4ICh0YWtlbiBjaGFyYWN0ZXItYnktY2hhcmFjdGVyKSB0aGF0IGlzIGEKKyAgIHByZWZpeCBvZiBhbGwgcGF0aHMgaW4gICpsaXN0Ki4gIElmICpsaXN0KiBpcyBlbXB0eSwgcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcKKyAgIChgYCcnYGApLgorCisgICAuLiBub3RlOjoKKworICAgICAgVGhpcyBmdW5jdGlvbiBtYXkgcmV0dXJuIGludmFsaWQgcGF0aHMgYmVjYXVzZSBpdCB3b3JrcyBhCisgICAgICBjaGFyYWN0ZXIgYXQgYSB0aW1lLiAgVG8gb2J0YWluIGEgdmFsaWQgcGF0aCwgc2VlCisgICAgICA6ZnVuYzpgY29tbW9ucGF0aGAuCisKKyAgICAgIDo6CisKKyAgICAgICAgPj4+IG9zLnBhdGguY29tbW9ucHJlZml4KFsnL3Vzci9saWInLCAnL3Vzci9sb2NhbC9saWInXSkKKyAgICAgICAgJy91c3IvbCcKKworICAgICAgICA+Pj4gb3MucGF0aC5jb21tb25wYXRoKFsnL3Vzci9saWInLCAnL3Vzci9sb2NhbC9saWInXSkKKyAgICAgICAgJy91c3InCiAKIAogLi4gZnVuY3Rpb246OiBkaXJuYW1lKHBhdGgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vcy5yc3QgYi9Eb2MvbGlicmFyeS9vcy5yc3QKaW5kZXggN2JjNTk4OS4uZGNkYzRlYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L29zLnJzdApAQCAtNzgsOSArNzgsMTAgQEAKIAogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgIE9uIHNvbWUgc3lzdGVtcywgY29udmVyc2lvbiB1c2luZyB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgbWF5IGZhaWwuIEluIHRoaXMKLSAgIGNhc2UsIFB5dGhvbiB1c2VzIHRoZSBgYHN1cnJvZ2F0ZWVzY2FwZWBgIGVuY29kaW5nIGVycm9yIGhhbmRsZXIsIHdoaWNoIG1lYW5zCi0gICB0aGF0IHVuZGVjb2RhYmxlIGJ5dGVzIGFyZSByZXBsYWNlZCBieSBhIFVuaWNvZGUgY2hhcmFjdGVyIFUrREN4eCBvbgotICAgZGVjb2RpbmcsIGFuZCB0aGVzZSBhcmUgYWdhaW4gdHJhbnNsYXRlZCB0byB0aGUgb3JpZ2luYWwgYnl0ZSBvbiBlbmNvZGluZy4KKyAgIGNhc2UsIFB5dGhvbiB1c2VzIHRoZSA6cmVmOmBzdXJyb2dhdGVlc2NhcGUgZW5jb2RpbmcgZXJyb3IgaGFuZGxlcgorICAgPHN1cnJvZ2F0ZWVzY2FwZT5gLCB3aGljaCBtZWFucyB0aGF0IHVuZGVjb2RhYmxlIGJ5dGVzIGFyZSByZXBsYWNlZCBieSBhCisgICBVbmljb2RlIGNoYXJhY3RlciBVK0RDeHggb24gZGVjb2RpbmcsIGFuZCB0aGVzZSBhcmUgYWdhaW4gdHJhbnNsYXRlZCB0byB0aGUKKyAgIG9yaWdpbmFsIGJ5dGUgb24gZW5jb2RpbmcuCiAKIAogVGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIG11c3QgZ3VhcmFudGVlIHRvIHN1Y2Nlc3NmdWxseSBkZWNvZGUgYWxsIGJ5dGVzCkBAIC0zMTEsOCArMzEyLDYgQEAKIAogICAgUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MgaWQuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogCiAuLiBmdW5jdGlvbjo6IGdldHBwaWQoKQogCkBAIC01NDksOCArNTQ4LDYgQEAKICAgIE9uIHBsYXRmb3JtcyB3aGVyZSA6YzpmdW5jOmBzdHJlcnJvcmAgcmV0dXJucyBgYE5VTExgYCB3aGVuIGdpdmVuIGFuIHVua25vd24KICAgIGVycm9yIG51bWJlciwgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KIAogLi4gZGF0YTo6IHN1cHBvcnRzX2J5dGVzX2Vudmlyb24KIApAQCAtNTY0LDggKzU2MSw2IEBACiAKICAgIFNldCB0aGUgY3VycmVudCBudW1lcmljIHVtYXNrIGFuZCByZXR1cm4gdGhlIHByZXZpb3VzIHVtYXNrLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KIAogLi4gZnVuY3Rpb246OiB1bmFtZSgpCiAKQEAgLTY1Niw4ICs2NTEsNiBAQAogCiAgICBDbG9zZSBmaWxlIGRlc2NyaXB0b3IgKmZkKi4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiBub3RlOjoKIAogICAgICAgVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgbG93LWxldmVsIEkvTyBhbmQgbXVzdCBiZSBhcHBsaWVkIHRvIGEgZmlsZQpAQCAtNjc3LDggKzY3MCw2IEBACiAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgIHBhc3MKIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAKIC4uIGZ1bmN0aW9uOjogZGV2aWNlX2VuY29kaW5nKGZkKQogCkBAIC02OTUsOCArNjg2LDYgQEAKICAgIDI6IHN0ZGVyciksIHRoZSBuZXcgZmlsZSBkZXNjcmlwdG9yIGlzIDpyZWY6YGluaGVyaXRhYmxlCiAgICA8ZmRfaW5oZXJpdGFuY2U+YC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVGhlIG5ldyBmaWxlIGRlc2NyaXB0b3IgaXMgbm93IG5vbi1pbmhlcml0YWJsZS4KIApAQCAtNzA3LDggKzY5Niw2IEBACiAgICBUaGUgZmlsZSBkZXNjcmlwdG9yICpmZDIqIGlzIDpyZWY6YGluaGVyaXRhYmxlIDxmZF9pbmhlcml0YW5jZT5gIGJ5IGRlZmF1bHQsCiAgICBvciBub24taW5oZXJpdGFibGUgaWYgKmluaGVyaXRhYmxlKiBpcyBgYEZhbHNlYGAuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIEFkZCB0aGUgb3B0aW9uYWwgKmluaGVyaXRhYmxlKiBwYXJhbWV0ZXIuCiAKQEAgLTc3NCw4ICs3NjEsNiBAQAogCiAgICAgICBUaGUgOmZ1bmM6YC5zdGF0YCBmdW5jdGlvbi4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAKIC4uIGZ1bmN0aW9uOjogZnN0YXR2ZnMoZmQpCiAKQEAgLTgwNCw4ICs3ODksMjEgQEAKICAgIG1vc3QgKmxlbmd0aCogYnl0ZXMgaW4gc2l6ZS4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudCB0bwogICAgYGBvcy50cnVuY2F0ZShmZCwgbGVuZ3RoKWBgLgogCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBXaW5kb3dzCisKKy4uIGZ1bmN0aW9uOjogZ2V0X2Jsb2NraW5nKGZkKQorCisgICBHZXQgdGhlIGJsb2NraW5nIG1vZGUgb2YgdGhlIGZpbGUgZGVzY3JpcHRvcjogYGBGYWxzZWBgIGlmIHRoZQorICAgOmRhdGE6YE9fTk9OQkxPQ0tgIGZsYWcgaXMgc2V0LCBgYFRydWVgYCBpZiB0aGUgZmxhZyBpcyBjbGVhcmVkLgorCisgICBTZWUgYWxzbyA6ZnVuYzpgc2V0X2Jsb2NraW5nYCBhbmQgOm1ldGg6YHNvY2tldC5zb2NrZXQuc2V0YmxvY2tpbmdgLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAuLiBmdW5jdGlvbjo6IGlzYXR0eShmZCkKIApAQCAtODQ2LDggKzg0NCw2IEBACiAgICBjdXJyZW50IHBvc2l0aW9uOyA6Y29uc3Q6YFNFRUtfRU5EYCBvciBgYDJgYCB0byBzZXQgaXQgcmVsYXRpdmUgdG8gdGhlIGVuZCBvZgogICAgdGhlIGZpbGUuIFJldHVybiB0aGUgbmV3IGN1cnNvciBwb3NpdGlvbiBpbiBieXRlcywgc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5uaW5nLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KIAogLi4gZGF0YTo6IFNFRUtfU0VUCiAgICAgICAgICAgU0VFS19DVVIKQEAgLTg1Niw4ICs4NTIsNiBAQAogICAgUGFyYW1ldGVycyB0byB0aGUgOmZ1bmM6YGxzZWVrYCBmdW5jdGlvbi4gVGhlaXIgdmFsdWVzIGFyZSAwLCAxLCBhbmQgMiwKICAgIHJlc3BlY3RpdmVseS4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgY291bGQgc3VwcG9ydCBhZGRpdGlvbmFsIHZhbHVlcywgbGlrZQogICAgICAgOmRhdGE6YG9zLlNFRUtfSE9MRWAgb3IgOmRhdGE6YG9zLlNFRUtfREFUQWAuCkBAIC04NzgsOCArODcyLDYgQEAKICAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCiAgICA8ZGlyX2ZkPmAgd2l0aCB0aGUgKmRpcl9mZCogcGFyYW1ldGVyLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUaGUgbmV3IGZpbGUgZGVzY3JpcHRvciBpcyBub3cgbm9uLWluaGVyaXRhYmxlLgogCkBAIC04OTMsNiArODg1LDExIEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuCisgICAgICBleGNlcHRpb24sIHRoZSBmdW5jdGlvbiBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nIGFuCisgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogVGhlIGZvbGxvd2luZyBjb25zdGFudHMgYXJlIG9wdGlvbnMgZm9yIHRoZSAqZmxhZ3MqIHBhcmFtZXRlciB0byB0aGUKIDpmdW5jOmB+b3Mub3BlbmAgZnVuY3Rpb24uICBUaGV5IGNhbiBiZSBjb21iaW5lZCB1c2luZyB0aGUgYml0d2lzZSBPUiBvcGVyYXRvcgogYGB8YGAuICBTb21lIG9mIHRoZW0gYXJlIG5vdCBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4gIEZvciBkZXNjcmlwdGlvbnMgb2YKQEAgLTEwNjAsOCArMTA1Nyw2IEBACiAgICBieXRlcyByZWFkLiAgSWYgdGhlIGVuZCBvZiB0aGUgZmlsZSByZWZlcnJlZCB0byBieSAqZmQqIGhhcyBiZWVuIHJlYWNoZWQsIGFuCiAgICBlbXB0eSBieXRlcyBvYmplY3QgaXMgcmV0dXJuZWQuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gbm90ZTo6CiAKICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIGxvdy1sZXZlbCBJL08gYW5kIG11c3QgYmUgYXBwbGllZCB0byBhIGZpbGUKQEAgLTEwNzAsNiArMTA2NSwxMSBAQAogICAgICAgOmZ1bmM6YHBvcGVuYCBvciA6ZnVuYzpgZmRvcGVuYCwgb3IgOmRhdGE6YHN5cy5zdGRpbmAsIHVzZSBpdHMKICAgICAgIDptZXRoOmB+ZmlsZS5yZWFkYCBvciA6bWV0aDpgfmZpbGUucmVhZGxpbmVgIG1ldGhvZHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZSBhbgorICAgICAgZXhjZXB0aW9uLCB0aGUgZnVuY3Rpb24gbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZyBhbgorICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gZnVuY3Rpb246OiBzZW5kZmlsZShvdXQsIGluLCBvZmZzZXQsIGNvdW50KQogICAgICAgICAgICAgICBzZW5kZmlsZShvdXQsIGluLCBvZmZzZXQsIGNvdW50LCBbaGVhZGVyc10sIFt0cmFpbGVyc10sIGZsYWdzPTApCkBAIC0xMDk5LDkgKzEwOTksMjYgQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCisgICAuLiBub3RlOjoKKworICAgICAgRm9yIGEgaGlnaGVyLWxldmVsIHdyYXBwZXIgb2YgOmZ1bmM6YHNlbmRmaWxlYCwgc2VlCisgICAgICA6bWV0aDpgc29ja2V0LnNvY2tldC5zZW5kZmlsZWAuCisKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKKy4uIGZ1bmN0aW9uOjogc2V0X2Jsb2NraW5nKGZkLCBibG9ja2luZykKKworICAgU2V0IHRoZSBibG9ja2luZyBtb2RlIG9mIHRoZSBzcGVjaWZpZWQgZmlsZSBkZXNjcmlwdG9yLiBTZXQgdGhlCisgICA6ZGF0YTpgT19OT05CTE9DS2AgZmxhZyBpZiBibG9ja2luZyBpcyBgYEZhbHNlYGAsIGNsZWFyIHRoZSBmbGFnIG90aGVyd2lzZS4KKworICAgU2VlIGFsc28gOmZ1bmM6YGdldF9ibG9ja2luZ2AgYW5kIDptZXRoOmBzb2NrZXQuc29ja2V0LnNldGJsb2NraW5nYC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBkYXRhOjogU0ZfTk9ESVNLSU8KICAgICAgICAgICBTRl9NTk9XQUlUCiAgICAgICAgICAgU0ZfU1lOQwpAQCAtMTE1OCw4ICsxMTc1LDYgQEAKICAgIFdyaXRlIHRoZSBieXRlc3RyaW5nIGluICpzdHIqIHRvIGZpbGUgZGVzY3JpcHRvciAqZmQqLiBSZXR1cm4gdGhlIG51bWJlciBvZgogICAgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbi4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiBub3RlOjoKIAogICAgICAgVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgbG93LWxldmVsIEkvTyBhbmQgbXVzdCBiZSBhcHBsaWVkIHRvIGEgZmlsZQpAQCAtMTE2OCw2ICsxMTgzLDExIEBACiAgICAgICA6ZnVuYzpgZmRvcGVuYCwgb3IgOmRhdGE6YHN5cy5zdGRvdXRgIG9yIDpkYXRhOmBzeXMuc3RkZXJyYCwgdXNlIGl0cwogICAgICAgOm1ldGg6YH5maWxlLndyaXRlYCBtZXRob2QuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZSBhbgorICAgICAgZXhjZXB0aW9uLCB0aGUgZnVuY3Rpb24gbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZyBhbgorICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gZnVuY3Rpb246OiB3cml0ZXYoZmQsIGJ1ZmZlcnMpCiAKQEAgLTEzMzAsOCArMTM1MCw2IEBACiAgICBvciBub3QgaXQgaXMgYXZhaWxhYmxlIHVzaW5nIDpkYXRhOmBvcy5zdXBwb3J0c19lZmZlY3RpdmVfaWRzYC4gIElmIGl0IGlzCiAgICB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIG5vdGU6OgogCiAgICAgICBVc2luZyA6ZnVuYzpgYWNjZXNzYCB0byBjaGVjayBpZiBhIHVzZXIgaXMgYXV0aG9yaXplZCB0byBlLmcuIG9wZW4gYSBmaWxlCkBAIC0xMzg0LDggKzE0MDIsNiBAQAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAuICBUaGUKICAgIGRlc2NyaXB0b3IgbXVzdCByZWZlciB0byBhbiBvcGVuZWQgZGlyZWN0b3J5LCBub3QgYW4gb3BlbiBmaWxlLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyAqcGF0aCogYXMgYSBmaWxlIGRlc2NyaXB0b3IKICAgICAgIG9uIHNvbWUgcGxhdGZvcm1zLgpAQCAtMTQ0Nyw4ICsxNDYzLDYgQEAKICAgIDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmAgYW5kIDpyZWY6YG5vdAogICAgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiBub3RlOjoKIAogICAgICAgQWx0aG91Z2ggV2luZG93cyBzdXBwb3J0cyA6ZnVuYzpgY2htb2RgLCB5b3UgY2FuIG9ubHkgc2V0IHRoZSBmaWxlJ3MKQEAgLTE0OTksMTUgKzE1MTMsMTEgQEAKIAogICAgUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAKIC4uIGZ1bmN0aW9uOjogZ2V0Y3dkYigpCiAKICAgIFJldHVybiBhIGJ5dGVzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KIAogLi4gZnVuY3Rpb246OiBsY2hmbGFncyhwYXRoLCBmbGFncykKIApAQCAtMTU3MCw3ICsxNTgwLDExIEBACiAgICAuLiBub3RlOjoKICAgICAgIFRvIGVuY29kZSBgYHN0cmBgIGZpbGVuYW1lcyB0byBgYGJ5dGVzYGAsIHVzZSA6ZnVuYzpgfm9zLmZzZW5jb2RlYC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorICAgLi4gc2VlYWxzbzo6CisKKyAgICAgIFRoZSA6ZnVuYzpgc2NhbmRpcmAgZnVuY3Rpb24gcmV0dXJucyBkaXJlY3RvcnkgZW50cmllcyBhbG9uZyB3aXRoCisgICAgICBmaWxlIGF0dHJpYnV0ZSBpbmZvcm1hdGlvbiwgZ2l2aW5nIGJldHRlciBwZXJmb3JtYW5jZSBmb3IgbWFueQorICAgICAgY29tbW9uIHVzZSBjYXNlcy4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFRoZSAqcGF0aCogcGFyYW1ldGVyIGJlY2FtZSBvcHRpb25hbC4KQEAgLTE2MTksOCArMTYzMyw2IEBACiAgICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZGlyZWN0b3JpZXM7IHNlZSB0aGUKICAgIDptb2Q6YHRlbXBmaWxlYCBtb2R1bGUncyA6ZnVuYzpgdGVtcGZpbGUubWtkdGVtcGAgZnVuY3Rpb24uCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKQEAgLTE3NzcsOSArMTc4OSw3IEBACiAgICBiZSByYWlzZWQ7IG9uIFVuaXgsIHRoZSBkaXJlY3RvcnkgZW50cnkgaXMgcmVtb3ZlZCBidXQgdGhlIHN0b3JhZ2UgYWxsb2NhdGVkCiAgICB0byB0aGUgZmlsZSBpcyBub3QgbWFkZSBhdmFpbGFibGUgdW50aWwgdGhlIG9yaWdpbmFsIGZpbGUgaXMgbm8gbG9uZ2VyIGluIHVzZS4KIAotICAgVGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8gOmZ1bmM6YHVubGlua2AuCi0KLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2VtYW50aWNhbGx5IGlkZW50aWNhbCB0byA6ZnVuYzpgdW5saW5rYC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCkBAIC0xODE0LDggKzE4MjQsNiBAQAogCiAgICBJZiB5b3Ugd2FudCBjcm9zcy1wbGF0Zm9ybSBvdmVyd3JpdGluZyBvZiB0aGUgZGVzdGluYXRpb24sIHVzZSA6ZnVuYzpgcmVwbGFjZWAuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKnNyY19kaXJfZmQqIGFuZCAqZHN0X2Rpcl9mZCogYXJndW1lbnRzLgogCkBAIC0xODQ0LDggKzE4NTIsNiBAQAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCBzcGVjaWZ5aW5nICpzcmNfZGlyX2ZkKiBhbmQvb3IgKmRzdF9kaXJfZmQqIHRvCiAgICBzdXBwbHkgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzIDxkaXJfZmQ+YC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCkBAIC0xODU4LDEyICsxODY0LDE4NiBAQAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKICAgIDxkaXJfZmQ+YC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKIAorLi4gZnVuY3Rpb246OiBzY2FuZGlyKHBhdGg9Jy4nKQorCisgICBSZXR1cm4gYW4gaXRlcmF0b3Igb2YgOmNsYXNzOmBEaXJFbnRyeWAgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBlbnRyaWVzCisgICBpbiB0aGUgZGlyZWN0b3J5IGdpdmVuIGJ5ICpwYXRoKi4gVGhlIGVudHJpZXMgYXJlIHlpZWxkZWQgaW4gYXJiaXRyYXJ5CisgICBvcmRlciwgYW5kIHRoZSBzcGVjaWFsIGVudHJpZXMgYGAnLidgYCBhbmQgYGAnLi4nYGAgYXJlIG5vdCBpbmNsdWRlZC4KKworICAgVXNpbmcgOmZ1bmM6YHNjYW5kaXJgIGluc3RlYWQgb2YgOmZ1bmM6YGxpc3RkaXJgIGNhbiBzaWduaWZpY2FudGx5CisgICBpbmNyZWFzZSB0aGUgcGVyZm9ybWFuY2Ugb2YgY29kZSB0aGF0IGFsc28gbmVlZHMgZmlsZSB0eXBlIG9yIGZpbGUKKyAgIGF0dHJpYnV0ZSBpbmZvcm1hdGlvbiwgYmVjYXVzZSA6Y2xhc3M6YERpckVudHJ5YCBvYmplY3RzIGV4cG9zZSB0aGlzCisgICBpbmZvcm1hdGlvbiBpZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBwcm92aWRlcyBpdCB3aGVuIHNjYW5uaW5nIGEgZGlyZWN0b3J5LgorICAgQWxsIDpjbGFzczpgRGlyRW50cnlgIG1ldGhvZHMgbWF5IHBlcmZvcm0gYSBzeXN0ZW0gY2FsbCwgYnV0CisgICA6ZnVuYzpgfkRpckVudHJ5LmlzX2RpcmAgYW5kIDpmdW5jOmB+RGlyRW50cnkuaXNfZmlsZWAgdXN1YWxseSBvbmx5CisgICByZXF1aXJlIGEgc3lzdGVtIGNhbGwgZm9yIHN5bWJvbGljIGxpbmtzOyA6ZnVuYzpgRGlyRW50cnkuc3RhdGAKKyAgIGFsd2F5cyByZXF1aXJlcyBhIHN5c3RlbSBjYWxsIG9uIFVuaXggYnV0IG9ubHkgcmVxdWlyZXMgb25lIGZvcgorICAgc3ltYm9saWMgbGlua3Mgb24gV2luZG93cy4KKworICAgT24gVW5peCwgKnBhdGgqIGNhbiBiZSBvZiB0eXBlIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCAodXNlCisgICA6ZnVuYzpgfm9zLmZzZW5jb2RlYCBhbmQgOmZ1bmM6YH5vcy5mc2RlY29kZWAgdG8gZW5jb2RlIGFuZCBkZWNvZGUKKyAgIDpjbGFzczpgYnl0ZXNgIHBhdGhzKS4gT24gV2luZG93cywgKnBhdGgqIG11c3QgYmUgb2YgdHlwZSA6Y2xhc3M6YHN0cmAuCisgICBPbiBib3RoIHN5dGVtcywgdGhlIHR5cGUgb2YgdGhlIDphdHRyOmB+RGlyRW50cnkubmFtZWAgYW5kCisgICA6YXR0cjpgfkRpckVudHJ5LnBhdGhgIGF0dHJpYnV0ZXMgb2YgZWFjaCA6Y2xhc3M6YERpckVudHJ5YCB3aWxsIGJlIG9mCisgICB0aGUgc2FtZSB0eXBlIGFzICpwYXRoKi4KKworICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGEgc2ltcGxlIHVzZSBvZiA6ZnVuYzpgc2NhbmRpcmAgdG8gZGlzcGxheSBhbGwKKyAgIHRoZSBmaWxlcyAoZXhjbHVkaW5nIGRpcmVjdG9yaWVzKSBpbiB0aGUgZ2l2ZW4gKnBhdGgqIHRoYXQgZG9uJ3Qgc3RhcnQgd2l0aAorICAgYGAnLidgYC4gVGhlIGBgZW50cnkuaXNfZmlsZSgpYGAgY2FsbCB3aWxsIGdlbmVyYWxseSBub3QgbWFrZSBhbiBhZGRpdGlvbmFsCisgICBzeXN0ZW0gY2FsbDo6CisKKyAgICAgIGZvciBlbnRyeSBpbiBvcy5zY2FuZGlyKHBhdGgpOgorICAgICAgICAgaWYgbm90IGVudHJ5Lm5hbWUuc3RhcnRzd2l0aCgnLicpIGFuZCBlbnRyeS5pc19maWxlKCk6CisgICAgICAgICAgICAgcHJpbnQoZW50cnkubmFtZSkKKworICAgLi4gbm90ZTo6CisKKyAgICAgIE9uIFVuaXgtYmFzZWQgc3lzdGVtcywgOmZ1bmM6YHNjYW5kaXJgIHVzZXMgdGhlIHN5c3RlbSdzCisgICAgICBgb3BlbmRpcigpIDxodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Z1bmN0aW9ucy9vcGVuZGlyLmh0bWw+YF8KKyAgICAgIGFuZAorICAgICAgYHJlYWRkaXIoKSA8aHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9mdW5jdGlvbnMvcmVhZGRpcl9yLmh0bWw+YF8KKyAgICAgIGZ1bmN0aW9ucy4gT24gV2luZG93cywgaXQgdXNlcyB0aGUgV2luMzIKKyAgICAgIGBGaW5kRmlyc3RGaWxlVyA8aHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9hYTM2NDQxOCh2PXZzLjg1KS5hc3B4PmBfCisgICAgICBhbmQKKyAgICAgIGBGaW5kTmV4dEZpbGVXIDxodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzY0NDI4KHY9dnMuODUpLmFzcHg+YF8KKyAgICAgIGZ1bmN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKworLi4gY2xhc3M6OiBEaXJFbnRyeQorCisgICBPYmplY3QgeWllbGRlZCBieSA6ZnVuYzpgc2NhbmRpcmAgdG8gZXhwb3NlIHRoZSBmaWxlIHBhdGggYW5kIG90aGVyIGZpbGUKKyAgIGF0dHJpYnV0ZXMgb2YgYSBkaXJlY3RvcnkgZW50cnkuCisKKyAgIDpmdW5jOmBzY2FuZGlyYCB3aWxsIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGlzIGluZm9ybWF0aW9uIGFzIHBvc3NpYmxlIHdpdGhvdXQKKyAgIG1ha2luZyBhZGRpdGlvbmFsIHN5c3RlbSBjYWxscy4gV2hlbiBhIGBgc3RhdCgpYGAgb3IgYGBsc3RhdCgpYGAgc3lzdGVtIGNhbGwKKyAgIGlzIG1hZGUsIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0IHdpbGwgY2FjaGUgdGhlIHJlc3VsdC4KKworICAgYGBEaXJFbnRyeWBgIGluc3RhbmNlcyBhcmUgbm90IGludGVuZGVkIHRvIGJlIHN0b3JlZCBpbiBsb25nLWxpdmVkIGRhdGEKKyAgIHN0cnVjdHVyZXM7IGlmIHlvdSBrbm93IHRoZSBmaWxlIG1ldGFkYXRhIGhhcyBjaGFuZ2VkIG9yIGlmIGEgbG9uZyB0aW1lIGhhcworICAgZWxhcHNlZCBzaW5jZSBjYWxsaW5nIDpmdW5jOmBzY2FuZGlyYCwgY2FsbCBgYG9zLnN0YXQoZW50cnkucGF0aClgYCB0byBmZXRjaAorICAgdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KKworICAgQmVjYXVzZSB0aGUgYGBEaXJFbnRyeWBgIG1ldGhvZHMgY2FuIG1ha2Ugb3BlcmF0aW5nIHN5c3RlbSBjYWxscywgdGhleSBtYXkKKyAgIGFsc28gcmFpc2UgOmV4YzpgT1NFcnJvcmAuIElmIHlvdSBuZWVkIHZlcnkgZmluZS1ncmFpbmVkCisgICBjb250cm9sIG92ZXIgZXJyb3JzLCB5b3UgY2FuIGNhdGNoIDpleGM6YE9TRXJyb3JgIHdoZW4gY2FsbGluZyBvbmUgb2YgdGhlCisgICBgYERpckVudHJ5YGAgbWV0aG9kcyBhbmQgaGFuZGxlIGFzIGFwcHJvcHJpYXRlLgorCisgICBBdHRyaWJ1dGVzIGFuZCBtZXRob2RzIG9uIGEgYGBEaXJFbnRyeWBgIGluc3RhbmNlIGFyZSBhcyBmb2xsb3dzOgorCisgICAuLiBhdHRyaWJ1dGU6OiBuYW1lCisKKyAgICAgIFRoZSBlbnRyeSdzIGJhc2UgZmlsZW5hbWUsIHJlbGF0aXZlIHRvIHRoZSA6ZnVuYzpgc2NhbmRpcmAgKnBhdGgqCisgICAgICBhcmd1bWVudC4KKworICAgICAgVGhlIDphdHRyOmBuYW1lYCBhdHRyaWJ1dGUgd2lsbCBiZSBvZiB0aGUgc2FtZSB0eXBlIChgYHN0cmBgIG9yCisgICAgICBgYGJ5dGVzYGApIGFzIHRoZSA6ZnVuYzpgc2NhbmRpcmAgKnBhdGgqIGFyZ3VtZW50LiBVc2UKKyAgICAgIDpmdW5jOmB+b3MuZnNkZWNvZGVgIHRvIGRlY29kZSBieXRlIGZpbGVuYW1lcy4KKworICAgLi4gYXR0cmlidXRlOjogcGF0aAorCisgICAgICBUaGUgZW50cnkncyBmdWxsIHBhdGggbmFtZTogZXF1aXZhbGVudCB0byBgYG9zLnBhdGguam9pbihzY2FuZGlyX3BhdGgsCisgICAgICBlbnRyeS5uYW1lKWBgIHdoZXJlICpzY2FuZGlyX3BhdGgqIGlzIHRoZSA6ZnVuYzpgc2NhbmRpcmAgKnBhdGgqCisgICAgICBhcmd1bWVudC4gIFRoZSBwYXRoIGlzIG9ubHkgYWJzb2x1dGUgaWYgdGhlIDpmdW5jOmBzY2FuZGlyYCAqcGF0aCoKKyAgICAgIGFyZ3VtZW50IHdhcyBhYnNvbHV0ZS4KKworICAgICAgVGhlIDphdHRyOmBwYXRoYCBhdHRyaWJ1dGUgd2lsbCBiZSBvZiB0aGUgc2FtZSB0eXBlIChgYHN0cmBgIG9yCisgICAgICBgYGJ5dGVzYGApIGFzIHRoZSA6ZnVuYzpgc2NhbmRpcmAgKnBhdGgqIGFyZ3VtZW50LiBVc2UKKyAgICAgIDpmdW5jOmB+b3MuZnNkZWNvZGVgIHRvIGRlY29kZSBieXRlIGZpbGVuYW1lcy4KKworICAgLi4gbWV0aG9kOjogaW5vZGUoKQorCisgICAgICBSZXR1cm4gdGhlIGlub2RlIG51bWJlciBvZiB0aGUgZW50cnkuCisKKyAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LCB1c2UgYGBvcy5zdGF0KGVudHJ5LnBhdGgsCisgICAgICBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLnN0X2lub2BgIHRvIGZldGNoIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCisKKyAgICAgIE9uIFVuaXgsIG5vIHN5c3RlbSBjYWxsIGlzIHJlcXVpcmVkLgorCisgICAuLiBtZXRob2Q6OiBpc19kaXIoXCosIGZvbGxvd19zeW1saW5rcz1UcnVlKQorCisgICAgICBJZiAqZm9sbG93X3N5bWxpbmtzKiBpcyBgYFRydWVgYCAodGhlIGRlZmF1bHQpLCByZXR1cm4gYGBUcnVlYGAgaWYgdGhlCisgICAgICBlbnRyeSBpcyBhIGRpcmVjdG9yeSBvciBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdG8gYSBkaXJlY3Rvcnk7CisgICAgICByZXR1cm4gYGBGYWxzZWBgIGlmIGl0IGlzIG9yIHBvaW50cyB0byBhbnkgb3RoZXIga2luZCBvZiBmaWxlLCBvciBpZiBpdAorICAgICAgZG9lc24ndCBleGlzdCBhbnltb3JlLgorCisgICAgICBJZiAqZm9sbG93X3N5bWxpbmtzKiBpcyBgYEZhbHNlYGAsIHJldHVybiBgYFRydWVgYCBvbmx5IGlmIHRoaXMgZW50cnkKKyAgICAgIGlzIGEgZGlyZWN0b3J5OyByZXR1cm4gYGBGYWxzZWBgIGlmIGl0IGlzIGFueSBvdGhlciBraW5kIG9mIGZpbGUKKyAgICAgIG9yIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYW55bW9yZS4KKworICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgRGlyRW50cnlgYCBvYmplY3QuIENhbGwgOmZ1bmM6YG9zLnN0YXRgCisgICAgICBhbG9uZyB3aXRoIDpmdW5jOmBzdGF0LlNfSVNESVJgIHRvIGZldGNoIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCisKKyAgICAgIFRoaXMgbWV0aG9kIGNhbiByYWlzZSA6ZXhjOmBPU0Vycm9yYCwgc3VjaCBhcyA6ZXhjOmBQZXJtaXNzaW9uRXJyb3JgLAorICAgICAgYnV0IDpleGM6YEZpbGVOb3RGb3VuZEVycm9yYCBpcyBjYXVnaHQgYW5kIG5vdCByYWlzZWQuCisKKyAgICAgIEluIG1vc3QgY2FzZXMsIG5vIHN5c3RlbSBjYWxsIGlzIHJlcXVpcmVkLgorCisgICAuLiBtZXRob2Q6OiBpc19maWxlKFwqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKworICAgICAgSWYgKmZvbGxvd19zeW1saW5rcyogaXMgYGBUcnVlYGAgKHRoZSBkZWZhdWx0KSwgcmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZQorICAgICAgZW50cnkgaXMgYSBmaWxlIG9yIGEgc3ltYm9saWMgbGluayBwb2ludGluZyB0byBhIGZpbGU7IHJldHVybiBgYEZhbHNlYGAKKyAgICAgIGlmIGl0IGlzIG9yIHBvaW50cyB0byBhIGRpcmVjdG9yeSBvciBvdGhlciBub24tZmlsZSBlbnRyeSwgb3IgaWYgaXQKKyAgICAgIGRvZXNuJ3QgZXhpc3QgYW55bW9yZS4KKworICAgICAgSWYgKmZvbGxvd19zeW1saW5rcyogaXMgYGBGYWxzZWBgLCByZXR1cm4gYGBUcnVlYGAgb25seSBpZiB0aGlzIGVudHJ5CisgICAgICBpcyBhIGZpbGU7IHJldHVybiBgYEZhbHNlYGAgaWYgaXQgaXMgYSBkaXJlY3Rvcnkgb3Igb3RoZXIgbm9uLWZpbGUgZW50cnksCisgICAgICBvciBpZiBpdCBkb2Vzbid0IGV4aXN0IGFueW1vcmUuCisKKyAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LiBDYWxsIDpmdW5jOmBvcy5zdGF0YAorICAgICAgYWxvbmcgd2l0aCA6ZnVuYzpgc3RhdC5TX0lTUkVHYCB0byBmZXRjaCB1cC10by1kYXRlIGluZm9ybWF0aW9uLgorCisgICAgICBUaGlzIG1ldGhvZCBjYW4gcmFpc2UgOmV4YzpgT1NFcnJvcmAsIHN1Y2ggYXMgOmV4YzpgUGVybWlzc2lvbkVycm9yYCwKKyAgICAgIGJ1dCA6ZXhjOmBGaWxlTm90Rm91bmRFcnJvcmAgaXMgY2F1Z2h0IGFuZCBub3QgcmFpc2VkLgorCisgICAgICBJbiBtb3N0IGNhc2VzLCBubyBzeXN0ZW0gY2FsbCBpcyByZXF1aXJlZC4KKworICAgLi4gbWV0aG9kOjogaXNfc3ltbGluaygpCisKKyAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGlzIGVudHJ5IGlzIGEgc3ltYm9saWMgbGluayAoZXZlbiBpZiBicm9rZW4pOworICAgICAgcmV0dXJuIGBgRmFsc2VgYCBpZiBpdCBwb2ludHMgdG8gYSBkaXJlY3Rvcnkgb3IgYW55IGtpbmQgb2YgZmlsZSwKKyAgICAgIG9yIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYW55bW9yZS4KKworICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgRGlyRW50cnlgYCBvYmplY3QuIENhbGwKKyAgICAgIDpmdW5jOmBvcy5wYXRoLmlzbGlua2AgdG8gZmV0Y2ggdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KKworICAgICAgVGhlIG1ldGhvZCBjYW4gcmFpc2UgOmV4YzpgT1NFcnJvcmAsIHN1Y2ggYXMgOmV4YzpgUGVybWlzc2lvbkVycm9yYCwKKyAgICAgIGJ1dCA6ZXhjOmBGaWxlTm90Rm91bmRFcnJvcmAgaXMgY2F1Z2h0IGFuZCBub3QgcmFpc2VkLgorCisgICAgICBJbiBtb3N0IGNhc2VzLCBubyBzeXN0ZW0gY2FsbCBpcyByZXF1aXJlZC4KKworICAgLi4gbWV0aG9kOjogc3RhdChcKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisKKyAgICAgIFJldHVybiBhIDpjbGFzczpgc3RhdF9yZXN1bHRgIG9iamVjdCBmb3IgdGhpcyBlbnRyeS4gVGhpcyBtZXRob2QKKyAgICAgIGZvbGxvd3Mgc3ltYm9saWMgbGlua3MgYnkgZGVmYXVsdDsgdG8gc3RhdCBhIHN5bWJvbGljIGxpbmsgYWRkIHRoZQorICAgICAgYGBmb2xsb3dfc3ltbGlua3M9RmFsc2VgYCBhcmd1bWVudC4KKworICAgICAgT24gVW5peCwgdGhpcyBtZXRob2QgYWx3YXlzIHJlcXVpcmVzIGEgc3lzdGVtIGNhbGwuIE9uIFdpbmRvd3MsCisgICAgICBgYERpckVudHJ5LnN0YXQoKWBgIHJlcXVpcmVzIGEgc3lzdGVtIGNhbGwgb25seSBpZiB0aGUKKyAgICAgIGVudHJ5IGlzIGEgc3ltYm9saWMgbGluaywgYW5kIGBgRGlyRW50cnkuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpYGAKKyAgICAgIG5ldmVyIHJlcXVpcmVzIGEgc3lzdGVtIGNhbGwuCisKKyAgICAgIE9uIFdpbmRvd3MsIHRoZSBgYHN0X2lub2BgLCBgYHN0X2RldmBgIGFuZCBgYHN0X25saW5rYGAgYXR0cmlidXRlcyBvZiB0aGUKKyAgICAgIDpjbGFzczpgc3RhdF9yZXN1bHRgIGFyZSBhbHdheXMgc2V0IHRvIHplcm8uIENhbGwgOmZ1bmM6YG9zLnN0YXRgIHRvCisgICAgICBnZXQgdGhlc2UgYXR0cmlidXRlcy4KKworICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgRGlyRW50cnlgYCBvYmplY3QuIENhbGwgOmZ1bmM6YG9zLnN0YXRgCisgICAgICB0byBmZXRjaCB1cC10by1kYXRlIGluZm9ybWF0aW9uLgorCisgICBOb3RlIHRoYXQgdGhlcmUgaXMgYSBuaWNlIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gc2V2ZXJhbCBhdHRyaWJ1dGVzCisgICBhbmQgbWV0aG9kcyBvZiBgYERpckVudHJ5YGAgYW5kIG9mIDpjbGFzczpgcGF0aGxpYi5QYXRoYC4gIEluCisgICBwYXJ0aWN1bGFyLCB0aGUgYGBuYW1lYGAgYW5kIGBgcGF0aGBgIGF0dHJpYnV0ZXMgaGF2ZSB0aGUgc2FtZQorICAgbWVhbmluZywgYXMgZG8gdGhlIGBgaXNfZGlyKClgYCwgYGBpc19maWxlKClgYCwgYGBpc19zeW1saW5rKClgYAorICAgYW5kIGBgc3RhdCgpYGAgbWV0aG9kcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gZnVuY3Rpb246OiBzdGF0KHBhdGgsIFwqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIEdldCB0aGUgc3RhdHVzIG9mIGEgZmlsZSBvciBhIGZpbGUgZGVzY3JpcHRvci4gUGVyZm9ybSB0aGUgZXF1aXZhbGVudCBvZiBhCkBAIC0xODkwLDggKzIwNzAsNiBAQAogICAgICAgPj4+IHN0YXRpbmZvLnN0X3NpemUKICAgICAgIDI2NAogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIHNlZWFsc286OgogCiAgICAgICA6ZnVuYzpgZnN0YXRgIGFuZCA6ZnVuYzpgbHN0YXRgIGZ1bmN0aW9ucy4KQEAgLTIwMzksNiArMjIxNywxNSBAQAogCiAgICAgICBGaWxlIHR5cGUuCiAKKyAgIE9uIFdpbmRvd3Mgc3lzdGVtcywgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGUgaXMgYWxzbyBhdmFpbGFibGU6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IHN0X2ZpbGVfYXR0cmlidXRlcworCisgICAgICBXaW5kb3dzIGZpbGUgYXR0cmlidXRlczogYGBkd0ZpbGVBdHRyaWJ1dGVzYGAgbWVtYmVyIG9mIHRoZQorICAgICAgYGBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTmBgIHN0cnVjdHVyZSByZXR1cm5lZCBieQorICAgICAgOmM6ZnVuYzpgR2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGVgLiBTZWUgdGhlIGBgRklMRV9BVFRSSUJVVEVfKmBgCisgICAgICBjb25zdGFudHMgaW4gdGhlIDptb2Q6YHN0YXRgIG1vZHVsZS4KKwogICAgVGhlIHN0YW5kYXJkIG1vZHVsZSA6bW9kOmBzdGF0YCBkZWZpbmVzIGZ1bmN0aW9ucyBhbmQgY29uc3RhbnRzIHRoYXQgYXJlCiAgICB1c2VmdWwgZm9yIGV4dHJhY3RpbmcgaW5mb3JtYXRpb24gZnJvbSBhIDpjOnR5cGU6YHN0YXRgIHN0cnVjdHVyZS4gKE9uCiAgICBXaW5kb3dzLCBzb21lIGl0ZW1zIGFyZSBmaWxsZWQgd2l0aCBkdW1teSB2YWx1ZXMuKQpAQCAtMjA1Niw2ICsyMjQzLDkgQEAKICAgICAgIEFkZGVkIHRoZSA6YXR0cjpgc3RfYXRpbWVfbnNgLCA6YXR0cjpgc3RfbXRpbWVfbnNgLCBhbmQKICAgICAgIDphdHRyOmBzdF9jdGltZV9uc2AgbWVtYmVycy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAgICBBZGRlZCB0aGUgOmF0dHI6YHN0X2ZpbGVfYXR0cmlidXRlc2AgbWVtYmVyIG9uIFdpbmRvd3MuCisKIAogLi4gZnVuY3Rpb246OiBzdGF0X2Zsb2F0X3RpbWVzKFtuZXd2YWx1ZV0pCiAKQEAgLTIyNTksMTkgKzI0NDksMTkgQEAKIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peC4KKyAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBXaW5kb3dzCiAKIC4uIGZ1bmN0aW9uOjogdW5saW5rKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCi0gICBSZW1vdmUgKGRlbGV0ZSkgdGhlIGZpbGUgKnBhdGgqLiAgVGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8KLSAgIDpmdW5jOmByZW1vdmVgOyB0aGUgYGB1bmxpbmtgYCBuYW1lIGlzIGl0cyB0cmFkaXRpb25hbCBVbml4Ci0gICBuYW1lLiAgUGxlYXNlIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgOmZ1bmM6YHJlbW92ZWAgZm9yCi0gICBmdXJ0aGVyIGluZm9ybWF0aW9uLgotCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisgICBSZW1vdmUgKGRlbGV0ZSkgdGhlIGZpbGUgKnBhdGgqLiAgVGhpcyBmdW5jdGlvbiBpcyBzZW1hbnRpY2FsbHkKKyAgIGlkZW50aWNhbCB0byA6ZnVuYzpgcmVtb3ZlYDsgdGhlIGBgdW5saW5rYGAgbmFtZSBpcyBpdHMKKyAgIHRyYWRpdGlvbmFsIFVuaXggbmFtZS4gIFBsZWFzZSBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yCisgICA6ZnVuYzpgcmVtb3ZlYCBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogcGFyYW1ldGVyLgpAQCAtMjMwOSw4ICsyNDk5LDYgQEAKICAgIDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmAgYW5kIDpyZWY6YG5vdAogICAgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKiwKICAgICAgIGFuZCB0aGUgKmRpcl9mZCosICpmb2xsb3dfc3ltbGlua3MqLCBhbmQgKm5zKiBwYXJhbWV0ZXJzLgpAQCAtMjQwMSw2ICsyNTg5LDEwIEBACiAgICAgICAgICAgZm9yIG5hbWUgaW4gZGlyczoKICAgICAgICAgICAgICAgb3Mucm1kaXIob3MucGF0aC5qb2luKHJvb3QsIG5hbWUpKQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhpcyBmdW5jdGlvbiBub3cgY2FsbHMgOmZ1bmM6YG9zLnNjYW5kaXJgIGluc3RlYWQgb2YgOmZ1bmM6YG9zLmxpc3RkaXJgLAorICAgICAgbWFraW5nIGl0IGZhc3RlciBieSByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIDpmdW5jOmBvcy5zdGF0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGZ3YWxrKHRvcD0nLicsIHRvcGRvd249VHJ1ZSwgb25lcnJvcj1Ob25lLCAqLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UsIGRpcl9mZD1Ob25lKQogCkBAIC0yNTU3LDggKzI3NDksNiBAQAogICAgUHl0aG9uIHNpZ25hbCBoYW5kbGVyIHJlZ2lzdGVyZWQgZm9yIDpjb25zdDpgU0lHQUJSVGAgd2l0aAogICAgOmZ1bmM6YHNpZ25hbC5zaWduYWxgLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KIAogLi4gZnVuY3Rpb246OiBleGVjbChwYXRoLCBhcmcwLCBhcmcxLCAuLi4pCiAgICAgICAgICAgICAgIGV4ZWNsZShwYXRoLCBhcmcwLCBhcmcxLCAuLi4sIGVudikKQEAgLTI2MjIsOCArMjgxMiw2IEBACiAgICBFeGl0IHRoZSBwcm9jZXNzIHdpdGggc3RhdHVzICpuKiwgd2l0aG91dCBjYWxsaW5nIGNsZWFudXAgaGFuZGxlcnMsIGZsdXNoaW5nCiAgICBzdGRpbyBidWZmZXJzLCBldGMuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gbm90ZTo6CiAKICAgICAgIFRoZSBzdGFuZGFyZCB3YXkgdG8gZXhpdCBpcyBgYHN5cy5leGl0KG4pYGAuICA6ZnVuYzpgX2V4aXRgIHNob3VsZApAQCAtMjk4Niw2ICszMTc0LDEwIEBACiAgICBkb2Vzbid0IHdvcmsgaWYgaXQgaXMuICBVc2UgdGhlIDpmdW5jOmBvcy5wYXRoLm5vcm1wYXRoYCBmdW5jdGlvbiB0byBlbnN1cmUgdGhhdAogICAgdGhlIHBhdGggaXMgcHJvcGVybHkgZW5jb2RlZCBmb3IgV2luMzIuCiAKKyAgIFRvIHJlZHVjZSBpbnRlcnByZXRlciBzdGFydHVwIG92ZXJoZWFkLCB0aGUgV2luMzIgOmM6ZnVuYzpgU2hlbGxFeGVjdXRlYAorICAgZnVuY3Rpb24gaXMgbm90IHJlc29sdmVkIHVudGlsIHRoaXMgZnVuY3Rpb24gaXMgZmlyc3QgY2FsbGVkLiAgSWYgdGhlIGZ1bmN0aW9uCisgICBjYW5ub3QgYmUgcmVzb2x2ZWQsIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgorCiAgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MuCiAKIApAQCAtMzEzMyw2ICszMzI1LDExIEBACiAgICBpZCBpcyBrbm93biwgbm90IG5lY2Vzc2FyaWx5IGEgY2hpbGQgcHJvY2Vzcy4gVGhlIDpmdW5jOmBzcGF3blwqIDxzcGF3bmw+YAogICAgZnVuY3Rpb25zIGNhbGxlZCB3aXRoIDpjb25zdDpgUF9OT1dBSVRgIHJldHVybiBzdWl0YWJsZSBwcm9jZXNzIGhhbmRsZXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZSBhbgorICAgICAgZXhjZXB0aW9uLCB0aGUgZnVuY3Rpb24gbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZyBhbgorICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gZnVuY3Rpb246OiB3YWl0MyhvcHRpb25zKQogCkBAIC0zNTQwLDMgKzM3MzcsOSBAQAogCiAgICBGb3IgYW4gZWFzeS10by11c2UgaW50ZXJmYWNlIHRvIHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvcgogICAgcHJvdmlkZWQgYnkgeW91ciBwbGF0Zm9ybSwgcGxlYXNlIHNlZSA6Y2xhc3M6YHJhbmRvbS5TeXN0ZW1SYW5kb21gLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgT24gTGludXggMy4xNyBhbmQgbmV3ZXIsIHRoZSBgYGdldHJhbmRvbSgpYGAgc3lzY2FsbCBpcyBub3cgdXNlZAorICAgICAgd2hlbiBhdmFpbGFibGUuICBPbiBPcGVuQlNEIDUuNiBhbmQgbmV3ZXIsIHRoZSBDIGBgZ2V0ZW50cm9weSgpYGAKKyAgICAgIGZ1bmN0aW9uIGlzIG5vdyB1c2VkLiBUaGVzZSBmdW5jdGlvbnMgYXZvaWQgdGhlIHVzYWdlIG9mIGFuIGludGVybmFsIGZpbGUKKyAgICAgIGRlc2NyaXB0b3IuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vc3NhdWRpb2Rldi5yc3QgYi9Eb2MvbGlicmFyeS9vc3NhdWRpb2Rldi5yc3QKaW5kZXggYmI1MDgxYS4uYzYwZDU5NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3NzYXVkaW9kZXYucnN0CisrKyBiL0RvYy9saWJyYXJ5L29zc2F1ZGlvZGV2LnJzdApAQCAtMTQ4LDIxICsxNDgsMzAgQEAKIAogLi4gbWV0aG9kOjogb3NzX2F1ZGlvX2RldmljZS53cml0ZShkYXRhKQogCi0gICBXcml0ZSB0aGUgUHl0aG9uIHN0cmluZyAqZGF0YSogdG8gdGhlIGF1ZGlvIGRldmljZSBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YKLSAgIGJ5dGVzIHdyaXR0ZW4uICBJZiB0aGUgYXVkaW8gZGV2aWNlIGlzIGluIGJsb2NraW5nIG1vZGUgKHRoZSBkZWZhdWx0KSwgdGhlCi0gICBlbnRpcmUgc3RyaW5nIGlzIGFsd2F5cyB3cml0dGVuIChhZ2FpbiwgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB1c3VhbCBVbml4IGRldmljZQotICAgc2VtYW50aWNzKS4gIElmIHRoZSBkZXZpY2UgaXMgaW4gbm9uLWJsb2NraW5nIG1vZGUsIHNvbWUgZGF0YSBtYXkgbm90IGJlIHdyaXR0ZW4KKyAgIFdyaXRlIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCAqZGF0YSogdG8gdGhlIGF1ZGlvIGRldmljZSBhbmQgcmV0dXJuIHRoZQorICAgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uICBJZiB0aGUgYXVkaW8gZGV2aWNlIGlzIGluIGJsb2NraW5nIG1vZGUgKHRoZQorICAgZGVmYXVsdCksIHRoZSBlbnRpcmUgZGF0YSBpcyBhbHdheXMgd3JpdHRlbiAoYWdhaW4sIHRoaXMgaXMgZGlmZmVyZW50IGZyb20KKyAgIHVzdWFsIFVuaXggZGV2aWNlIHNlbWFudGljcykuICBJZiB0aGUgZGV2aWNlIGlzIGluIG5vbi1ibG9ja2luZyBtb2RlLCBzb21lCisgICBkYXRhIG1heSBub3QgYmUgd3JpdHRlbgogICAgLS0tc2VlIDptZXRoOmB3cml0ZWFsbGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOiAzLjUKKyAgICAgIFdyaXRhYmxlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgbm93IGFjY2VwdGVkLgorCiAKIC4uIG1ldGhvZDo6IG9zc19hdWRpb19kZXZpY2Uud3JpdGVhbGwoZGF0YSkKIAotICAgV3JpdGUgdGhlIGVudGlyZSBQeXRob24gc3RyaW5nICpkYXRhKiB0byB0aGUgYXVkaW8gZGV2aWNlOiB3YWl0cyB1bnRpbCB0aGUgYXVkaW8KLSAgIGRldmljZSBpcyBhYmxlIHRvIGFjY2VwdCBkYXRhLCB3cml0ZXMgYXMgbXVjaCBkYXRhIGFzIGl0IHdpbGwgYWNjZXB0LCBhbmQKLSAgIHJlcGVhdHMgdW50aWwgKmRhdGEqIGhhcyBiZWVuIGNvbXBsZXRlbHkgd3JpdHRlbi4gSWYgdGhlIGRldmljZSBpcyBpbiBibG9ja2luZwotICAgbW9kZSAodGhlIGRlZmF1bHQpLCB0aGlzIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgOm1ldGg6YHdyaXRlYDsgOm1ldGg6YHdyaXRlYWxsYAotICAgaXMgb25seSB1c2VmdWwgaW4gbm9uLWJsb2NraW5nIG1vZGUuICBIYXMgbm8gcmV0dXJuIHZhbHVlLCBzaW5jZSB0aGUgYW1vdW50IG9mCi0gICBkYXRhIHdyaXR0ZW4gaXMgYWx3YXlzIGVxdWFsIHRvIHRoZSBhbW91bnQgb2YgZGF0YSBzdXBwbGllZC4KKyAgIFdyaXRlIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCAqZGF0YSogdG8gdGhlIGF1ZGlvIGRldmljZTogd2FpdHMgdW50aWwKKyAgIHRoZSBhdWRpbyBkZXZpY2UgaXMgYWJsZSB0byBhY2NlcHQgZGF0YSwgd3JpdGVzIGFzIG11Y2ggZGF0YSBhcyBpdCB3aWxsCisgICBhY2NlcHQsIGFuZCByZXBlYXRzIHVudGlsICpkYXRhKiBoYXMgYmVlbiBjb21wbGV0ZWx5IHdyaXR0ZW4uIElmIHRoZSBkZXZpY2UKKyAgIGlzIGluIGJsb2NraW5nIG1vZGUgKHRoZSBkZWZhdWx0KSwgdGhpcyBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzCisgICA6bWV0aDpgd3JpdGVgOyA6bWV0aDpgd3JpdGVhbGxgIGlzIG9ubHkgdXNlZnVsIGluIG5vbi1ibG9ja2luZyBtb2RlLiAgSGFzCisgICBubyByZXR1cm4gdmFsdWUsIHNpbmNlIHRoZSBhbW91bnQgb2YgZGF0YSB3cml0dGVuIGlzIGFsd2F5cyBlcXVhbCB0byB0aGUKKyAgIGFtb3VudCBvZiBkYXRhIHN1cHBsaWVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDogMy41CisgICAgICBXcml0YWJsZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIG5vdyBhY2NlcHRlZC4KKwogCiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgQXVkaW8gZGV2aWNlIG9iamVjdHMgYWxzbyBzdXBwb3J0IHRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wsIGkuZS4gdGhleSBjYW4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BhdGhsaWIucnN0IGIvRG9jL2xpYnJhcnkvcGF0aGxpYi5yc3QKaW5kZXggY2IwNjZiZC4uYTdjZTE4ZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGF0aGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGF0aGxpYi5yc3QKQEAgLTM4MSw3ICszODEsMTEgQEAKICAgIGBgYXJnID0gc3RyKGFyZylgYCwgdGhpcyB3aWxsIHN0aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiBhbiBvYmplY3QKICAgIG9mIHNvbWUgb3RoZXIgdHlwZSBpcyBnaXZlbiBieSBhY2NpZGVudC4KIAorICAgQSBuaWNlIGFkdmFudGFnZSBpcyB0aGF0IHRoaXMgcHJvdG9jb2wgaXMgYWxzbyBzdXBwb3J0ZWQgYnkKKyAgIDpjbGFzczpgb3MuRGlyRW50cnlgIG9iamVjdHMgcmV0dXJuZWQgYnkgOmZ1bmM6YG9zLnNjYW5kaXJgLgorCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQuNQorICAgLi4gdmVyc2lvbmFkZGVkOjogMy41LjIKIAogLi4gZGF0YTo6IFB1cmVQYXRoLnN1ZmZpeAogCkBAIC02NDYsNiArNjUwLDE3IEBACiAgICAgICBQb3NpeFBhdGgoJy9ob21lL2FudG9pbmUvcGF0aGxpYicpCiAKIAorLi4gY2xhc3NtZXRob2Q6OiBQYXRoLmhvbWUoKQorCisgICBSZXR1cm4gYSBuZXcgcGF0aCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkgKGFzCisgICByZXR1cm5lZCBieSA6ZnVuYzpgb3MucGF0aC5leHBhbmR1c2VyYCB3aXRoIGBgfmBgIGNvbnN0cnVjdCk6OgorCisgICAgICA+Pj4gUGF0aC5ob21lKCkKKyAgICAgIFBvc2l4UGF0aCgnL2hvbWUvYW50b2luZScpCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIG1ldGhvZDo6IFBhdGguc3RhdCgpCiAKICAgIFJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIHBhdGggKHNpbWlsYXJseSB0byA6ZnVuYzpgb3Muc3RhdGApLgpAQCAtNjg4LDYgKzcwMywxOCBAQAogICAgICAgc3ltbGluayAqcG9pbnRzIHRvKiBhbiBleGlzdGluZyBmaWxlIG9yIGRpcmVjdG9yeS4KIAogCisuLiBtZXRob2Q6OiBQYXRoLmV4cGFuZHVzZXIoKQorCisgICBSZXR1cm4gYSBuZXcgcGF0aCB3aXRoIGV4cGFuZGVkIGBgfmBgIGFuZCBgYH51c2VyYGAgY29uc3RydWN0cywKKyAgIGFzIHJldHVybmVkIGJ5IDptZXRoOmBvcy5wYXRoLmV4cGFuZHVzZXJgOjoKKworICAgICAgPj4+IHAgPSBQb3NpeFBhdGgoJ34vZmlsbXMvTW9udHkgUHl0aG9uJykKKyAgICAgID4+PiBwLmV4cGFuZHVzZXIoKQorICAgICAgUG9zaXhQYXRoKCcvaG9tZS9lcmljL2ZpbG1zL01vbnR5IFB5dGhvbicpCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIG1ldGhvZDo6IFBhdGguZ2xvYihwYXR0ZXJuKQogCiAgICBHbG9iIHRoZSBnaXZlbiAqcGF0dGVybiogaW4gdGhlIGRpcmVjdG9yeSByZXByZXNlbnRlZCBieSB0aGlzIHBhdGgsCkBAIC04MDksNyArODM2LDcgQEAKICAgIHRoZSBzeW1ib2xpYyBsaW5rJ3MgaW5mb3JtYXRpb24gcmF0aGVyIHRoYW4gaXRzIHRhcmdldCdzLgogCiAKLS4uIG1ldGhvZDo6IFBhdGgubWtkaXIobW9kZT0wbzc3NywgcGFyZW50cz1GYWxzZSkKKy4uIG1ldGhvZDo6IFBhdGgubWtkaXIobW9kZT0wbzc3NywgcGFyZW50cz1GYWxzZSwgZXhpc3Rfb2s9RmFsc2UpCiAKICAgIENyZWF0ZSBhIG5ldyBkaXJlY3RvcnkgYXQgdGhpcyBnaXZlbiBwYXRoLiAgSWYgKm1vZGUqIGlzIGdpdmVuLCBpdCBpcwogICAgY29tYmluZWQgd2l0aCB0aGUgcHJvY2VzcycgYGB1bWFza2BgIHZhbHVlIHRvIGRldGVybWluZSB0aGUgZmlsZSBtb2RlCkBAIC04MjMsNiArODUwLDE2IEBACiAgICBJZiAqcGFyZW50cyogaXMgZmFsc2UgKHRoZSBkZWZhdWx0KSwgYSBtaXNzaW5nIHBhcmVudCByYWlzZXMKICAgIDpleGM6YEZpbGVOb3RGb3VuZEVycm9yYC4KIAorICAgSWYgKmV4aXN0X29rKiBpcyBmYWxzZSAodGhlIGRlZmF1bHQpLCBhbiA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgIGlzCisgICByYWlzZWQgaWYgdGhlIHRhcmdldCBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMuCisKKyAgIElmICpleGlzdF9vayogaXMgdHJ1ZSwgOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCBleGNlcHRpb25zIHdpbGwgYmUKKyAgIGlnbm9yZWQgKHNhbWUgYmVoYXZpb3IgYXMgdGhlIFBPU0lYIGBgbWtkaXIgLXBgYCBjb21tYW5kKSwgYnV0IG9ubHkgaWYgdGhlCisgICBsYXN0IHBhdGggY29tcG9uZW50IGlzIG5vdCBhbiBleGlzdGluZyBub24tZGlyZWN0b3J5IGZpbGUuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgKmV4aXN0X29rKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorCiAKIC4uIG1ldGhvZDo6IFBhdGgub3Blbihtb2RlPSdyJywgYnVmZmVyaW5nPS0xLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKQogCkBAIC04NDIsNiArODc5LDM0IEBACiAgICBpZiB0aGUgZmlsZSdzIHVpZCBpc24ndCBmb3VuZCBpbiB0aGUgc3lzdGVtIGRhdGFiYXNlLgogCiAKKy4uIG1ldGhvZDo6IFBhdGgucmVhZF9ieXRlcygpCisKKyAgIFJldHVybiB0aGUgYmluYXJ5IGNvbnRlbnRzIG9mIHRoZSBwb2ludGVkLXRvIGZpbGUgYXMgYSBieXRlcyBvYmplY3Q6OgorCisgICAgICA+Pj4gcCA9IFBhdGgoJ215X2JpbmFyeV9maWxlJykKKyAgICAgID4+PiBwLndyaXRlX2J5dGVzKGInQmluYXJ5IGZpbGUgY29udGVudHMnKQorICAgICAgMjAKKyAgICAgID4+PiBwLnJlYWRfYnl0ZXMoKQorICAgICAgYidCaW5hcnkgZmlsZSBjb250ZW50cycKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKworLi4gbWV0aG9kOjogUGF0aC5yZWFkX3RleHQoZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpCisKKyAgIFJldHVybiB0aGUgZGVjb2RlZCBjb250ZW50cyBvZiB0aGUgcG9pbnRlZC10byBmaWxlIGFzIGEgc3RyaW5nOjoKKworICAgICAgPj4+IHAgPSBQYXRoKCdteV90ZXh0X2ZpbGUnKQorICAgICAgPj4+IHAud3JpdGVfdGV4dCgnVGV4dCBmaWxlIGNvbnRlbnRzJykKKyAgICAgIDE4CisgICAgICA+Pj4gcC5yZWFkX3RleHQoKQorICAgICAgJ1RleHQgZmlsZSBjb250ZW50cycKKworICAgVGhlIG9wdGlvbmFsIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGluIDpmdW5jOmBvcGVuYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gbWV0aG9kOjogUGF0aC5yZW5hbWUodGFyZ2V0KQogCiAgICBSZW5hbWUgdGhpcyBmaWxlIG9yIGRpcmVjdG9yeSB0byB0aGUgZ2l2ZW4gKnRhcmdldCouICAqdGFyZ2V0KiBjYW4gYmUKQEAgLTkwMiw2ICs5NjcsMjUgQEAKICAgIFJlbW92ZSB0aGlzIGRpcmVjdG9yeS4gIFRoZSBkaXJlY3RvcnkgbXVzdCBiZSBlbXB0eS4KIAogCisuLiBtZXRob2Q6OiBQYXRoLnNhbWVmaWxlKG90aGVyX3BhdGgpCisKKyAgIFJldHVybiB3aGV0aGVyIHRoaXMgcGF0aCBwb2ludHMgdG8gdGhlIHNhbWUgZmlsZSBhcyAqb3RoZXJfcGF0aCosIHdoaWNoCisgICBjYW4gYmUgZWl0aGVyIGEgUGF0aCBvYmplY3QsIG9yIGEgc3RyaW5nLiAgVGhlIHNlbWFudGljcyBhcmUgc2ltaWxhcgorICAgdG8gOmZ1bmM6YG9zLnBhdGguc2FtZWZpbGVgIGFuZCA6ZnVuYzpgb3MucGF0aC5zYW1lc3RhdGAuCisKKyAgIEFuIDpleGM6YE9TRXJyb3JgIGNhbiBiZSByYWlzZWQgaWYgZWl0aGVyIGZpbGUgY2Fubm90IGJlIGFjY2Vzc2VkIGZvciBzb21lCisgICByZWFzb24uCisKKyAgICAgID4+PiBwID0gUGF0aCgnc3BhbScpCisgICAgICA+Pj4gcSA9IFBhdGgoJ2VnZ3MnKQorICAgICAgPj4+IHAuc2FtZWZpbGUocSkKKyAgICAgIEZhbHNlCisgICAgICA+Pj4gcC5zYW1lZmlsZSgnc3BhbScpCisgICAgICBUcnVlCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIG1ldGhvZDo6IFBhdGguc3ltbGlua190byh0YXJnZXQsIHRhcmdldF9pc19kaXJlY3Rvcnk9RmFsc2UpCiAKICAgIE1ha2UgdGhpcyBwYXRoIGEgc3ltYm9saWMgbGluayB0byAqdGFyZ2V0Ki4gIFVuZGVyIFdpbmRvd3MsCkBAIC05MzUsMyArMTAxOSwzMyBAQAogCiAgICBSZW1vdmUgdGhpcyBmaWxlIG9yIHN5bWJvbGljIGxpbmsuICBJZiB0aGUgcGF0aCBwb2ludHMgdG8gYSBkaXJlY3RvcnksCiAgICB1c2UgOmZ1bmM6YFBhdGgucm1kaXJgIGluc3RlYWQuCisKKworLi4gbWV0aG9kOjogUGF0aC53cml0ZV9ieXRlcyhkYXRhKQorCisgICBPcGVuIHRoZSBmaWxlIHBvaW50ZWQgdG8gaW4gYnl0ZXMgbW9kZSwgd3JpdGUgKmRhdGEqIHRvIGl0LCBhbmQgY2xvc2UgdGhlCisgICBmaWxlOjoKKworICAgICAgPj4+IHAgPSBQYXRoKCdteV9iaW5hcnlfZmlsZScpCisgICAgICA+Pj4gcC53cml0ZV9ieXRlcyhiJ0JpbmFyeSBmaWxlIGNvbnRlbnRzJykKKyAgICAgIDIwCisgICAgICA+Pj4gcC5yZWFkX2J5dGVzKCkKKyAgICAgIGInQmluYXJ5IGZpbGUgY29udGVudHMnCisKKyAgIEFuIGV4aXN0aW5nIGZpbGUgb2YgdGhlIHNhbWUgbmFtZSBpcyBvdmVyd3JpdHRlbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKworLi4gbWV0aG9kOjogUGF0aC53cml0ZV90ZXh0KGRhdGEsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKQorCisgICBPcGVuIHRoZSBmaWxlIHBvaW50ZWQgdG8gaW4gdGV4dCBtb2RlLCB3cml0ZSAqZGF0YSogdG8gaXQsIGFuZCBjbG9zZSB0aGUKKyAgIGZpbGU6OgorCisgICAgICA+Pj4gcCA9IFBhdGgoJ215X3RleHRfZmlsZScpCisgICAgICA+Pj4gcC53cml0ZV90ZXh0KCdUZXh0IGZpbGUgY29udGVudHMnKQorICAgICAgMTgKKyAgICAgID4+PiBwLnJlYWRfdGV4dCgpCisgICAgICAnVGV4dCBmaWxlIGNvbnRlbnRzJworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QgYi9Eb2MvbGlicmFyeS9waWNrbGUucnN0CmluZGV4IDMzMDUxOTUuLjdlMDliMDMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGlja2xlLnJzdApAQCAtNDI1LDcgKzQyNSw3IEBACiBBdHRlbXB0cyB0byBwaWNrbGUgdW5waWNrbGFibGUgb2JqZWN0cyB3aWxsIHJhaXNlIHRoZSA6ZXhjOmBQaWNrbGluZ0Vycm9yYAogZXhjZXB0aW9uOyB3aGVuIHRoaXMgaGFwcGVucywgYW4gdW5zcGVjaWZpZWQgbnVtYmVyIG9mIGJ5dGVzIG1heSBoYXZlIGFscmVhZHkKIGJlZW4gd3JpdHRlbiB0byB0aGUgdW5kZXJseWluZyBmaWxlLiAgVHJ5aW5nIHRvIHBpY2tsZSBhIGhpZ2hseSByZWN1cnNpdmUgZGF0YQotc3RydWN0dXJlIG1heSBleGNlZWQgdGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoLCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2lsbCBiZQorc3RydWN0dXJlIG1heSBleGNlZWQgdGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoLCBhIDpleGM6YFJlY3Vyc2lvbkVycm9yYCB3aWxsIGJlCiByYWlzZWQgaW4gdGhpcyBjYXNlLiAgWW91IGNhbiBjYXJlZnVsbHkgcmFpc2UgdGhpcyBsaW1pdCB3aXRoCiA6ZnVuYzpgc3lzLnNldHJlY3Vyc2lvbmxpbWl0YC4KIApAQCAtODU5LDcgKzg1OSw3IEBACiAgICBkYXRhID0gewogICAgICAgICdhJzogWzEsIDIuMCwgMywgNCs2al0sCiAgICAgICAgJ2InOiAoImNoYXJhY3RlciBzdHJpbmciLCBiImJ5dGUgc3RyaW5nIiksCi0gICAgICAgJ2MnOiBzZXQoW05vbmUsIFRydWUsIEZhbHNlXSkKKyAgICAgICAnYyc6IHtOb25lLCBUcnVlLCBGYWxzZX0KICAgIH0KIAogICAgd2l0aCBvcGVuKCdkYXRhLnBpY2tsZScsICd3YicpIGFzIGY6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdCBiL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0CmluZGV4IDEzZWE3YjkuLjVkMzI5NWQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0CkBAIC01OCw3ICs1OCw3IEBACiAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKICAgICAgIFRoaXMgZW11bGF0aW9uIGlzIG5vIGxvbmdlciBuZWVkZWQsIGFzIHRoZSBzdGFuZGFyZCBpbXBvcnQgbWVjaGFuaXNtCi0gICAgICBpcyBub3cgZnVsbHkgUEVQIDMwMiBjb21wbGlhbnQgYW5kIGF2YWlsYWJsZSBpbiA6bW9kOmBpbXBvcnRsaWJgCisgICAgICBpcyBub3cgZnVsbHkgUEVQIDMwMiBjb21wbGlhbnQgYW5kIGF2YWlsYWJsZSBpbiA6bW9kOmBpbXBvcnRsaWJgLgogCiAKIC4uIGNsYXNzOjogSW1wTG9hZGVyKGZ1bGxuYW1lLCBmaWxlLCBmaWxlbmFtZSwgZXRjKQpAQCAtNjcsNyArNjcsNyBAQAogCiAgICAuLiBkZXByZWNhdGVkOjogMy4zCiAgICAgICBUaGlzIGVtdWxhdGlvbiBpcyBubyBsb25nZXIgbmVlZGVkLCBhcyB0aGUgc3RhbmRhcmQgaW1wb3J0IG1lY2hhbmlzbQotICAgICAgaXMgbm93IGZ1bGx5IFBFUCAzMDIgY29tcGxpYW50IGFuZCBhdmFpbGFibGUgaW4gOm1vZDpgaW1wb3J0bGliYAorICAgICAgaXMgbm93IGZ1bGx5IFBFUCAzMDIgY29tcGxpYW50IGFuZCBhdmFpbGFibGUgaW4gOm1vZDpgaW1wb3J0bGliYC4KIAogCiAuLiBmdW5jdGlvbjo6IGZpbmRfbG9hZGVyKGZ1bGxuYW1lKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGxhdGZvcm0ucnN0IGIvRG9jL2xpYnJhcnkvcGxhdGZvcm0ucnN0CmluZGV4IDY2YjY4OTIuLmU2NzkzMTcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BsYXRmb3JtLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wbGF0Zm9ybS5yc3QKQEAgLTI0Nyw2ICsyNDcsOCBAQAogCiAgICBUaGlzIGlzIGFub3RoZXIgbmFtZSBmb3IgOmZ1bmM6YGxpbnV4X2Rpc3RyaWJ1dGlvbmAuCiAKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjcKKwogLi4gZnVuY3Rpb246OiBsaW51eF9kaXN0cmlidXRpb24oZGlzdG5hbWU9JycsIHZlcnNpb249JycsIGlkPScnLCBzdXBwb3J0ZWRfZGlzdHM9KCdTdVNFJywnZGViaWFuJywncmVkaGF0JywnbWFuZHJha2UnLC4uLiksIGZ1bGxfZGlzdHJpYnV0aW9uX25hbWU9MSkKIAogICAgVHJpZXMgdG8gZGV0ZXJtaW5lIHRoZSBuYW1lIG9mIHRoZSBMaW51eCBPUyBkaXN0cmlidXRpb24gbmFtZS4KQEAgLTI2Myw2ICsyNjUsOCBAQAogICAgcGFyYW1ldGVycy4gIGBgaWRgYCBpcyB0aGUgaXRlbSBpbiBwYXJlbnRoZXNlcyBhZnRlciB0aGUgdmVyc2lvbiBudW1iZXIuICBJdAogICAgaXMgdXN1YWxseSB0aGUgdmVyc2lvbiBjb2RlbmFtZS4KIAorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy41IDMuNworCiAuLiBmdW5jdGlvbjo6IGxpYmNfdmVyKGV4ZWN1dGFibGU9c3lzLmV4ZWN1dGFibGUsIGxpYj0nJywgdmVyc2lvbj0nJywgY2h1bmtzaXplPTIwNDgpCiAKICAgIFRyaWVzIHRvIGRldGVybWluZSB0aGUgbGliYyB2ZXJzaW9uIGFnYWluc3Qgd2hpY2ggdGhlIGZpbGUgZXhlY3V0YWJsZSAoZGVmYXVsdHMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BvcGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9wb3BsaWIucnN0CmluZGV4IDQ1YmFhZDkuLjg0NjhmNGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BvcGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcG9wbGliLnJzdApAQCAtMTk0LDYgKzE5NCwxNSBAQAogICAgdGhlIHVuaXF1ZSBpZCBmb3IgdGhhdCBtZXNzYWdlIGluIHRoZSBmb3JtIGBgJ3Jlc3BvbnNlIG1lc2dudW0gdWlkYGAsIG90aGVyd2lzZQogICAgcmVzdWx0IGlzIGxpc3QgYGAocmVzcG9uc2UsIFsnbWVzZ251bSB1aWQnLCAuLi5dLCBvY3RldHMpYGAuCiAKKworLi4gbWV0aG9kOjogUE9QMy51dGY4KCkKKworICAgVHJ5IHRvIHN3aXRjaCB0byBVVEYtOCBtb2RlLiBSZXR1cm5zIHRoZSBzZXJ2ZXIgcmVzcG9uc2UgaWYgc3VjY2Vzc2Z1bCwKKyAgIHJhaXNlcyA6Y2xhc3M6YGVycm9yX3Byb3RvYCBpZiBub3QuIFNwZWNpZmllZCBpbiA6UkZDOmA2ODU2YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gbWV0aG9kOjogUE9QMy5zdGxzKGNvbnRleHQ9Tm9uZSkKIAogICAgU3RhcnQgYSBUTFMgc2Vzc2lvbiBvbiB0aGUgYWN0aXZlIGNvbm5lY3Rpb24gYXMgc3BlY2lmaWVkIGluIDpyZmM6YDI1OTVgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcHByaW50LnJzdCBiL0RvYy9saWJyYXJ5L3BwcmludC5yc3QKaW5kZXggYzA1ODlhMy4uMGI0NGRjOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcHByaW50LnJzdAorKysgYi9Eb2MvbGlicmFyeS9wcHJpbnQucnN0CkBAIC0yMzUsMTAgKzIzNSwxMCBAQAogICAgICAgICAgICAgICdjbGFzc2lmaWVycyc6IFsnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIuNicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi43JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyIDo6IE9ubHknXSwKLSAgICAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnQW4gZXh0ZW5zaWJsZSBmcmFtZXdvcmsgZm9yIFB5dGhvbiBwcm9ncmFtbWluZywgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aXRoIHNwZWNpYWwgZm9jdXNcclxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvbiBldmVudC1iYXNlZCBuZXR3b3JrIHByb2dyYW1taW5nIGFuZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ211bHRpcHJvdG9jb2wgaW50ZWdyYXRpb24uJywKKyAgICAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnQW4gZXh0ZW5zaWJsZSBmcmFtZXdvcmsgZm9yIFB5dGhvbiBwcm9ncmFtbWluZywgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWNpYWwgZm9jdXNcclxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvbiBldmVudC1iYXNlZCBuZXR3b3JrIHByb2dyYW1taW5nIGFuZCBtdWx0aXByb3RvY29sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZWdyYXRpb24uJywKICAgICAgICAgICAgICAnZG9jc191cmwnOiAnJywKICAgICAgICAgICAgICAnZG93bmxvYWRfdXJsJzogJ1VOS05PV04nLAogICAgICAgICAgICAgICdob21lX3BhZ2UnOiAnaHR0cDovL3R3aXN0ZWRtYXRyaXguY29tLycsCkBAIC0yODgsMTAgKzI4OCwxMCBAQAogICAgICAgICAgICAgICdjaGVlc2VjYWtlX2RvY3VtZW50YXRpb25faWQnOiBOb25lLAogICAgICAgICAgICAgICdjaGVlc2VjYWtlX2luc3RhbGxhYmlsaXR5X2lkJzogTm9uZSwKICAgICAgICAgICAgICAnY2xhc3NpZmllcnMnOiBbLi4uXSwKLSAgICAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnQW4gZXh0ZW5zaWJsZSBmcmFtZXdvcmsgZm9yIFB5dGhvbiBwcm9ncmFtbWluZywgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aXRoIHNwZWNpYWwgZm9jdXNcclxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvbiBldmVudC1iYXNlZCBuZXR3b3JrIHByb2dyYW1taW5nIGFuZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ211bHRpcHJvdG9jb2wgaW50ZWdyYXRpb24uJywKKyAgICAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnQW4gZXh0ZW5zaWJsZSBmcmFtZXdvcmsgZm9yIFB5dGhvbiBwcm9ncmFtbWluZywgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWNpYWwgZm9jdXNcclxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvbiBldmVudC1iYXNlZCBuZXR3b3JrIHByb2dyYW1taW5nIGFuZCBtdWx0aXByb3RvY29sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZWdyYXRpb24uJywKICAgICAgICAgICAgICAnZG9jc191cmwnOiAnJywKICAgICAgICAgICAgICAnZG93bmxvYWRfdXJsJzogJ1VOS05PV04nLAogICAgICAgICAgICAgICdob21lX3BhZ2UnOiAnaHR0cDovL3R3aXN0ZWRtYXRyaXguY29tLycsCkBAIC0zMjMsMTMgKzMyMywxMiBAQAogICAgICAgICAgICAgICdjaGVlc2VjYWtlX2luc3RhbGxhYmlsaXR5X2lkJzogTm9uZSwKICAgICAgICAgICAgICAnY2xhc3NpZmllcnMnOiBbLi4uXSwKICAgICAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnQW4gZXh0ZW5zaWJsZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZyYW1ld29yayBmb3IgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQeXRob24gcHJvZ3JhbW1pbmcsICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2l0aCBzcGVjaWFsICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9jdXNcclxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvbiBldmVudC1iYXNlZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25ldHdvcmsgcHJvZ3JhbW1pbmcgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmQgbXVsdGlwcm90b2NvbCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZyYW1ld29yayBmb3IgUHl0aG9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvZ3JhbW1pbmcsIHdpdGggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVjaWFsIGZvY3VzXHJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb24gZXZlbnQtYmFzZWQgbmV0d29yayAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2dyYW1taW5nIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ211bHRpcHJvdG9jb2wgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JhdGlvbi4nLAogICAgICAgICAgICAgICdkb2NzX3VybCc6ICcnLAogICAgICAgICAgICAgICdkb3dubG9hZF91cmwnOiAnVU5LTk9XTicsCkBAIC0zNDQsOCArMzQzLDggQEAKICAgICAgICAgICAgICAncmVsZWFzZV91cmwnOiAnaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL1R3aXN0ZWQvMTIuMy4wJywKICAgICAgICAgICAgICAncmVxdWlyZXNfcHl0aG9uJzogTm9uZSwKICAgICAgICAgICAgICAnc3RhYmxlX3ZlcnNpb24nOiBOb25lLAotICAgICAgICAgICAgICdzdW1tYXJ5JzogJ0FuIGFzeW5jaHJvbm91cyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAnbmV0d29ya2luZyBmcmFtZXdvcmsgJwotICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXR0ZW4gaW4gUHl0aG9uJywKKyAgICAgICAgICAgICAnc3VtbWFyeSc6ICdBbiBhc3luY2hyb25vdXMgbmV0d29ya2luZyAnCisgICAgICAgICAgICAgICAgICAgICAgICAnZnJhbWV3b3JrIHdyaXR0ZW4gaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgJ1B5dGhvbicsCiAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnMTIuMy4wJ30sCiAgICAgJ3VybHMnOiBbey4uLn0sIHsuLi59XX0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3Byb2ZpbGUucnN0IGIvRG9jL2xpYnJhcnkvcHJvZmlsZS5yc3QKaW5kZXggMjkyODgyMS4uOTU5ZDliOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcHJvZmlsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcHJvZmlsZS5yc3QKQEAgLTMzLDcgKzMzLDcgQEAKIDIuIDptb2Q6YHByb2ZpbGVgLCBhIHB1cmUgUHl0aG9uIG1vZHVsZSB3aG9zZSBpbnRlcmZhY2UgaXMgaW1pdGF0ZWQgYnkKICAgIDptb2Q6YGNQcm9maWxlYCwgYnV0IHdoaWNoIGFkZHMgc2lnbmlmaWNhbnQgb3ZlcmhlYWQgdG8gcHJvZmlsZWQgcHJvZ3JhbXMuCiAgICBJZiB5b3UncmUgdHJ5aW5nIHRvIGV4dGVuZCB0aGUgcHJvZmlsZXIgaW4gc29tZSB3YXksIHRoZSB0YXNrIG1pZ2h0IGJlIGVhc2llcgotICAgd2l0aCB0aGlzIG1vZHVsZS4KKyAgIHdpdGggdGhpcyBtb2R1bGUuICBPcmlnaW5hbGx5IGRlc2lnbmVkIGFuZCB3cml0dGVuIGJ5IEppbSBSb3NraW5kLgogCiAuLiBub3RlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcHlfY29tcGlsZS5yc3QgYi9Eb2MvbGlicmFyeS9weV9jb21waWxlLnJzdAppbmRleCBiYWU4NDUwLi45N2YyYjIwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9weV9jb21waWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9weV9jb21waWxlLnJzdApAQCAtMjksOSArMjksOSBAQAogLi4gZnVuY3Rpb246OiBjb21waWxlKGZpbGUsIGNmaWxlPU5vbmUsIGRmaWxlPU5vbmUsIGRvcmFpc2U9RmFsc2UsIG9wdGltaXplPS0xKQogCiAgICBDb21waWxlIGEgc291cmNlIGZpbGUgdG8gYnl0ZS1jb2RlIGFuZCB3cml0ZSBvdXQgdGhlIGJ5dGUtY29kZSBjYWNoZSBmaWxlLgotICAgVGhlIHNvdXJjZSBjb2RlIGlzIGxvYWRlZCBmcm9tIHRoZSBmaWxlIG5hbWUgKmZpbGUqLiAgVGhlICBieXRlLWNvZGUgaXMKLSAgIHdyaXR0ZW4gdG8gKmNmaWxlKiwgd2hpY2ggZGVmYXVsdHMgdG8gdGhlIDpQRVA6YDMxNDdgIHBhdGgsIGVuZGluZyBpbgotICAgYGAucHljYGAgKGBgLnB5b2BgIGlmIG9wdGltaXphdGlvbiBpcyBlbmFibGVkIGluIHRoZSBjdXJyZW50IGludGVycHJldGVyKS4KKyAgIFRoZSBzb3VyY2UgY29kZSBpcyBsb2FkZWQgZnJvbSB0aGUgZmlsZSBuYW1lICpmaWxlKi4gIFRoZSBieXRlLWNvZGUgaXMKKyAgIHdyaXR0ZW4gdG8gKmNmaWxlKiwgd2hpY2ggZGVmYXVsdHMgdG8gdGhlIDpwZXA6YDMxNDdgLzpwZXA6YDQ4OGAgcGF0aCwgZW5kaW5nCisgICBpbiBgYC5weWNgYC4KICAgIEZvciBleGFtcGxlLCBpZiAqZmlsZSogaXMgYGAvZm9vL2Jhci9iYXoucHlgYCAqY2ZpbGUqIHdpbGwgZGVmYXVsdCB0bwogICAgYGAvZm9vL2Jhci9fX3B5Y2FjaGVfXy9iYXouY3B5dGhvbi0zMi5weWNgYCBmb3IgUHl0aG9uIDMuMi4gIElmICpkZmlsZSogaXMKICAgIHNwZWNpZmllZCwgaXQgaXMgdXNlZCBhcyB0aGUgbmFtZSBvZiB0aGUgc291cmNlIGZpbGUgaW4gZXJyb3IgbWVzc2FnZXMgd2hlbgpAQCAtNjgsNyArNjgsNyBAQAogLi4gZnVuY3Rpb246OiBtYWluKGFyZ3M9Tm9uZSkKIAogICAgQ29tcGlsZSBzZXZlcmFsIHNvdXJjZSBmaWxlcy4gIFRoZSBmaWxlcyBuYW1lZCBpbiAqYXJncyogKG9yIG9uIHRoZSBjb21tYW5kCi0gICBsaW5lLCBpZiAqYXJncyogaXMgYGBOb25lYGApIGFyZSBjb21waWxlZCBhbmQgdGhlIHJlc3VsdGluZyBieXRlY29kZSBpcworICAgbGluZSwgaWYgKmFyZ3MqIGlzIGBgTm9uZWBgKSBhcmUgY29tcGlsZWQgYW5kIHRoZSByZXN1bHRpbmcgYnl0ZS1jb2RlIGlzCiAgICBjYWNoZWQgaW4gdGhlIG5vcm1hbCBtYW5uZXIuICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHNlYXJjaCBhIGRpcmVjdG9yeQogICAgc3RydWN0dXJlIHRvIGxvY2F0ZSBzb3VyY2UgZmlsZXM7IGl0IG9ubHkgY29tcGlsZXMgZmlsZXMgbmFtZWQgZXhwbGljaXRseS4KICAgIElmIGBgJy0nYGAgaXMgdGhlIG9ubHkgcGFyYW1ldGVyIGluIGFyZ3MsIHRoZSBsaXN0IG9mIGZpbGVzIGlzIHRha2VuIGZyb20KQEAgLTg2LDQgKzg2LDMgQEAKIAogICAgTW9kdWxlIDptb2Q6YGNvbXBpbGVhbGxgCiAgICAgICBVdGlsaXRpZXMgdG8gY29tcGlsZSBhbGwgUHl0aG9uIHNvdXJjZSBmaWxlcyBpbiBhIGRpcmVjdG9yeSB0cmVlLgotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9xdWV1ZS5yc3QgYi9Eb2MvbGlicmFyeS9xdWV1ZS5yc3QKaW5kZXggNjgwZDY5MC4uMWNiMDkzNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcXVldWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3F1ZXVlLnJzdApAQCAtMTU4LDIyICsxNTgsMzIgQEAKIAogRXhhbXBsZSBvZiBob3cgdG8gd2FpdCBmb3IgZW5xdWV1ZWQgdGFza3MgdG8gYmUgY29tcGxldGVkOjoKIAotICAgZGVmIHdvcmtlcigpOgotICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgIGl0ZW0gPSBxLmdldCgpCi0gICAgICAgICAgIGRvX3dvcmsoaXRlbSkKLSAgICAgICAgICAgcS50YXNrX2RvbmUoKQorICAgIGRlZiB3b3JrZXIoKToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGl0ZW0gPSBxLmdldCgpCisgICAgICAgICAgICBpZiBpdGVtIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGRvX3dvcmsoaXRlbSkKKyAgICAgICAgICAgIHEudGFza19kb25lKCkKIAotICAgcSA9IFF1ZXVlKCkKLSAgIGZvciBpIGluIHJhbmdlKG51bV93b3JrZXJfdGhyZWFkcyk6Ci0gICAgICAgIHQgPSBUaHJlYWQodGFyZ2V0PXdvcmtlcikKLSAgICAgICAgdC5kYWVtb24gPSBUcnVlCisgICAgcSA9IHF1ZXVlLlF1ZXVlKCkKKyAgICB0aHJlYWRzID0gW10KKyAgICBmb3IgaSBpbiByYW5nZShudW1fd29ya2VyX3RocmVhZHMpOgorICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9d29ya2VyKQogICAgICAgICB0LnN0YXJ0KCkKKyAgICAgICAgdGhyZWFkcy5hcHBlbmQodCkKIAotICAgZm9yIGl0ZW0gaW4gc291cmNlKCk6Ci0gICAgICAgcS5wdXQoaXRlbSkKKyAgICBmb3IgaXRlbSBpbiBzb3VyY2UoKToKKyAgICAgICAgcS5wdXQoaXRlbSkKIAotICAgcS5qb2luKCkgICAgICAgIyBibG9jayB1bnRpbCBhbGwgdGFza3MgYXJlIGRvbmUKKyAgICAjIGJsb2NrIHVudGlsIGFsbCB0YXNrcyBhcmUgZG9uZQorICAgIHEuam9pbigpCisKKyAgICAjIHN0b3Agd29ya2VycworICAgIGZvciBpIGluIHJhbmdlKG51bV93b3JrZXJfdGhyZWFkcyk6CisgICAgICAgIHEucHV0KE5vbmUpCisgICAgZm9yIHQgaW4gdGhyZWFkczoKKyAgICAgICAgdC5qb2luKCkKIAogCiAuLiBzZWVhbHNvOjoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QgYi9Eb2MvbGlicmFyeS9yYW5kb20ucnN0CmluZGV4IDExZGQzNjcuLmY4Yjc3MjcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdApAQCAtNDYsOCArNDYsNyBAQAogLi4gd2FybmluZzo6CiAKICAgIFRoZSBwc2V1ZG8tcmFuZG9tIGdlbmVyYXRvcnMgb2YgdGhpcyBtb2R1bGUgc2hvdWxkIG5vdCBiZSB1c2VkIGZvcgotICAgc2VjdXJpdHkgcHVycG9zZXMuICBVc2UgOmZ1bmM6YG9zLnVyYW5kb21gIG9yIDpjbGFzczpgU3lzdGVtUmFuZG9tYCBpZgotICAgeW91IHJlcXVpcmUgYSBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgcHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLgorICAgc2VjdXJpdHkgcHVycG9zZXMuCiAKIAogQm9va2tlZXBpbmcgZnVuY3Rpb25zOgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcmUucnN0IGIvRG9jL2xpYnJhcnkvcmUucnN0CmluZGV4IGNhZTY4NzQuLmE5ZjgxNjEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3JlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9yZS5yc3QKQEAgLTI4MSw5ICsyODEsNyBAQAogICAgYXNzZXJ0aW9uYC4gYGAoPzw9YWJjKWRlZmBgIHdpbGwgZmluZCBhIG1hdGNoIGluIGBgYWJjZGVmYGAsIHNpbmNlIHRoZQogICAgbG9va2JlaGluZCB3aWxsIGJhY2sgdXAgMyBjaGFyYWN0ZXJzIGFuZCBjaGVjayBpZiB0aGUgY29udGFpbmVkIHBhdHRlcm4gbWF0Y2hlcy4KICAgIFRoZSBjb250YWluZWQgcGF0dGVybiBtdXN0IG9ubHkgbWF0Y2ggc3RyaW5ncyBvZiBzb21lIGZpeGVkIGxlbmd0aCwgbWVhbmluZyB0aGF0Ci0gICBgYGFiY2BgIG9yIGBgYXxiYGAgYXJlIGFsbG93ZWQsIGJ1dCBgYGEqYGAgYW5kIGBgYXszLDR9YGAgYXJlIG5vdC4gIEdyb3VwCi0gICByZWZlcmVuY2VzIGFyZSBub3Qgc3VwcG9ydGVkIGV2ZW4gaWYgdGhleSBtYXRjaCBzdHJpbmdzIG9mIHNvbWUgZml4ZWQgbGVuZ3RoLgotICAgTm90ZSB0aGF0CisgICBgYGFiY2BgIG9yIGBgYXxiYGAgYXJlIGFsbG93ZWQsIGJ1dCBgYGEqYGAgYW5kIGBgYXszLDR9YGAgYXJlIG5vdC4gIE5vdGUgdGhhdAogICAgcGF0dGVybnMgd2hpY2ggc3RhcnQgd2l0aCBwb3NpdGl2ZSBsb29rYmVoaW5kIGFzc2VydGlvbnMgd2lsbCBub3QgbWF0Y2ggYXQgdGhlCiAgICBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBiZWluZyBzZWFyY2hlZDsgeW91IHdpbGwgbW9zdCBsaWtlbHkgd2FudCB0byB1c2UgdGhlCiAgICA6ZnVuYzpgc2VhcmNoYCBmdW5jdGlvbiByYXRoZXIgdGhhbiB0aGUgOmZ1bmM6YG1hdGNoYCBmdW5jdGlvbjoKQEAgLTI5OSwxMiArMjk3LDE0IEBACiAgICAgICA+Pj4gbS5ncm91cCgwKQogICAgICAgJ2VnZycKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgZ3JvdXAgcmVmZXJlbmNlcyBvZiBmaXhlZCBsZW5ndGguCisKIGBgKD88IS4uLilgYAogICAgTWF0Y2hlcyBpZiB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgc3RyaW5nIGlzIG5vdCBwcmVjZWRlZCBieSBhIG1hdGNoIGZvcgogICAgYGAuLi5gYC4gIFRoaXMgaXMgY2FsbGVkIGEgOmRmbjpgbmVnYXRpdmUgbG9va2JlaGluZCBhc3NlcnRpb25gLiAgU2ltaWxhciB0bwogICAgcG9zaXRpdmUgbG9va2JlaGluZCBhc3NlcnRpb25zLCB0aGUgY29udGFpbmVkIHBhdHRlcm4gbXVzdCBvbmx5IG1hdGNoIHN0cmluZ3Mgb2YKLSAgIHNvbWUgZml4ZWQgbGVuZ3RoIGFuZCBzaG91bGRuJ3QgY29udGFpbiBncm91cCByZWZlcmVuY2VzLgotICAgUGF0dGVybnMgd2hpY2ggc3RhcnQgd2l0aCBuZWdhdGl2ZSBsb29rYmVoaW5kIGFzc2VydGlvbnMgbWF5CisgICBzb21lIGZpeGVkIGxlbmd0aC4gIFBhdHRlcm5zIHdoaWNoIHN0YXJ0IHdpdGggbmVnYXRpdmUgbG9va2JlaGluZCBhc3NlcnRpb25zIG1heQogICAgbWF0Y2ggYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIGJlaW5nIHNlYXJjaGVkLgogCiBgYCg/KGlkL25hbWUpeWVzLXBhdHRlcm58bm8tcGF0dGVybilgYApAQCAtNDM4LDYgKzQzOCwxMCBAQAogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgIFRoZSBgYCdcdSdgYCBhbmQgYGAnXFUnYGAgZXNjYXBlIHNlcXVlbmNlcyBoYXZlIGJlZW4gYWRkZWQuCiAKKy4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjYKKyAgIFVua25vd24gZXNjYXBlcyBjb25zaXN0IG9mIGBgJ1wnYGAgYW5kIEFTQ0lJIGxldHRlciBub3cgcmFpc2UgYQorICAgZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4gaW4gUHl0aG9uIDMuNi4KKwogCiAuLiBzZWVhbHNvOjoKIApAQCAtNTI0LDcgKzUyOCwxMSBAQAogICAgY3VycmVudCBsb2NhbGUuIFRoZSB1c2Ugb2YgdGhpcyBmbGFnIGlzIGRpc2NvdXJhZ2VkIGFzIHRoZSBsb2NhbGUgbWVjaGFuaXNtCiAgICBpcyB2ZXJ5IHVucmVsaWFibGUsIGFuZCBpdCBvbmx5IGhhbmRsZXMgb25lICJjdWx0dXJlIiBhdCBhIHRpbWUgYW55d2F5OwogICAgeW91IHNob3VsZCB1c2UgVW5pY29kZSBtYXRjaGluZyBpbnN0ZWFkLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBpbiBQeXRob24gMwotICAgZm9yIFVuaWNvZGUgKHN0cikgcGF0dGVybnMuCisgICBmb3IgVW5pY29kZSAoc3RyKSBwYXR0ZXJucy4gVGhpcyBmbGFnIG1ha2VzIHNlbnNlIG9ubHkgd2l0aCBieXRlcyBwYXR0ZXJucy4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy41IDMuNgorICAgICAgRGVwcmVjYXRlZCB0aGUgdXNlIG9mICA6Y29uc3Q6YHJlLkxPQ0FMRWAgd2l0aCBzdHJpbmcgcGF0dGVybnMgb3IKKyAgICAgIDpjb25zdDpgcmUuQVNDSUlgLgogCiAKIC4uIGRhdGE6OiBNCkBAIC02MjcsMTcgKzYzNSwzNyBAQAogICAgVGhhdCB3YXksIHNlcGFyYXRvciBjb21wb25lbnRzIGFyZSBhbHdheXMgZm91bmQgYXQgdGhlIHNhbWUgcmVsYXRpdmUKICAgIGluZGljZXMgd2l0aGluIHRoZSByZXN1bHQgbGlzdC4KIAotICAgTm90ZSB0aGF0ICpzcGxpdCogd2lsbCBuZXZlciBzcGxpdCBhIHN0cmluZyBvbiBhbiBlbXB0eSBwYXR0ZXJuIG1hdGNoLgotICAgRm9yIGV4YW1wbGU6CisgICAuLiBub3RlOjoKIAotICAgICAgPj4+IHJlLnNwbGl0KCd4KicsICdmb28nKQotICAgICAgWydmb28nXQotICAgICAgPj4+IHJlLnNwbGl0KCIoP20pXiQiLCAiZm9vXG5cbmJhclxuIikKLSAgICAgIFsnZm9vXG5cbmJhclxuJ10KKyAgICAgIDpmdW5jOmBzcGxpdGAgZG9lc24ndCBjdXJyZW50bHkgc3BsaXQgYSBzdHJpbmcgb24gYW4gZW1wdHkgcGF0dGVybiBtYXRjaC4KKyAgICAgIEZvciBleGFtcGxlOgorCisgICAgICAgICA+Pj4gcmUuc3BsaXQoJ3gqJywgJ2F4YmMnKQorICAgICAgICAgWydhJywgJ2JjJ10KKworICAgICAgRXZlbiB0aG91Z2ggYGAneConYGAgYWxzbyBtYXRjaGVzIDAgJ3gnIGJlZm9yZSAnYScsIGJldHdlZW4gJ2InIGFuZCAnYycsCisgICAgICBhbmQgYWZ0ZXIgJ2MnLCBjdXJyZW50bHkgdGhlc2UgbWF0Y2hlcyBhcmUgaWdub3JlZC4gIFRoZSBjb3JyZWN0IGJlaGF2aW9yCisgICAgICAoaS5lLiBzcGxpdHRpbmcgb24gZW1wdHkgbWF0Y2hlcyB0b28gYW5kIHJldHVybmluZyBgYFsnJywgJ2EnLCAnYicsICdjJywKKyAgICAgICcnXWBgKSB3aWxsIGJlIGltcGxlbWVudGVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQeXRob24sIGJ1dCBzaW5jZSB0aGlzCisgICAgICBpcyBhIGJhY2t3YXJkIGluY29tcGF0aWJsZSBjaGFuZ2UsIGEgOmV4YzpgRnV0dXJlV2FybmluZ2Agd2lsbCBiZSByYWlzZWQKKyAgICAgIGluIHRoZSBtZWFud2hpbGUuCisKKyAgICAgIFBhdHRlcm5zIHRoYXQgY2FuIG9ubHkgbWF0Y2ggZW1wdHkgc3RyaW5ncyBjdXJyZW50bHkgbmV2ZXIgc3BsaXQgdGhlCisgICAgICBzdHJpbmcuICBTaW5jZSB0aGlzIGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGJlaGF2aW9yLCBhCisgICAgICA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBzdGFydGluZyBmcm9tIFB5dGhvbiAzLjU6OgorCisgICAgICAgICA+Pj4gcmUuc3BsaXQoIl4kIiwgImZvb1xuXG5iYXJcbiIsIGZsYWdzPXJlLk0pCisgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgICAgICAgIC4uLgorICAgICAgICAgVmFsdWVFcnJvcjogc3BsaXQoKSByZXF1aXJlcyBhIG5vbi1lbXB0eSBwYXR0ZXJuIG1hdGNoLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQogICAgICAgQWRkZWQgdGhlIG9wdGlvbmFsIGZsYWdzIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgU3BsaXR0aW5nIG9uIGEgcGF0dGVybiB0aGF0IGNvdWxkIG1hdGNoIGFuIGVtcHR5IHN0cmluZyBub3cgcmFpc2VzCisgICAgICBhIHdhcm5pbmcuICBQYXR0ZXJucyB0aGF0IGNhbiBvbmx5IG1hdGNoIGVtcHR5IHN0cmluZ3MgYXJlIG5vdyByZWplY3RlZC4KIAogLi4gZnVuY3Rpb246OiBmaW5kYWxsKHBhdHRlcm4sIHN0cmluZywgZmxhZ3M9MCkKIApAQCAtNjY1LDcgKzY5Myw3IEBACiAgICAqc3RyaW5nKiBpcyByZXR1cm5lZCB1bmNoYW5nZWQuICAqcmVwbCogY2FuIGJlIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb247IGlmIGl0IGlzCiAgICBhIHN0cmluZywgYW55IGJhY2tzbGFzaCBlc2NhcGVzIGluIGl0IGFyZSBwcm9jZXNzZWQuICBUaGF0IGlzLCBgYFxuYGAgaXMKICAgIGNvbnZlcnRlZCB0byBhIHNpbmdsZSBuZXdsaW5lIGNoYXJhY3RlciwgYGBccmBgIGlzIGNvbnZlcnRlZCB0byBhIGNhcnJpYWdlIHJldHVybiwgYW5kCi0gICBzbyBmb3J0aC4gIFVua25vd24gZXNjYXBlcyBzdWNoIGFzIGBgXGpgYCBhcmUgbGVmdCBhbG9uZS4gIEJhY2tyZWZlcmVuY2VzLCBzdWNoCisgICBzbyBmb3J0aC4gIFVua25vd24gZXNjYXBlcyBzdWNoIGFzIGBgXCZgYCBhcmUgbGVmdCBhbG9uZS4gIEJhY2tyZWZlcmVuY2VzLCBzdWNoCiAgICBhcyBgYFw2YGAsIGFyZSByZXBsYWNlZCB3aXRoIHRoZSBzdWJzdHJpbmcgbWF0Y2hlZCBieSBncm91cCA2IGluIHRoZSBwYXR0ZXJuLgogICAgRm9yIGV4YW1wbGU6CiAKQEAgLTcwNyw2ICs3MzUsMTMgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICAgICBBZGRlZCB0aGUgb3B0aW9uYWwgZmxhZ3MgYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBVbm1hdGNoZWQgZ3JvdXBzIGFyZSByZXBsYWNlZCB3aXRoIGFuIGVtcHR5IHN0cmluZy4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy41IDMuNgorICAgICAgVW5rbm93biBlc2NhcGVzIGNvbnNpc3Qgb2YgYGAnXCdgYCBhbmQgQVNDSUkgbGV0dGVyIG5vdyByYWlzZSBhCisgICAgICBkZXByZWNhdGlvbiB3YXJuaW5nIGFuZCB3aWxsIGJlIGZvcmJpZGRlbiBpbiBQeXRob24gMy42LgorCiAKIC4uIGZ1bmN0aW9uOjogc3VibihwYXR0ZXJuLCByZXBsLCBzdHJpbmcsIGNvdW50PTAsIGZsYWdzPTApCiAKQEAgLTcxNiw2ICs3NTEsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIEFkZGVkIHRoZSBvcHRpb25hbCBmbGFncyBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFVubWF0Y2hlZCBncm91cHMgYXJlIHJlcGxhY2VkIHdpdGggYW4gZW1wdHkgc3RyaW5nLgorCiAKIC4uIGZ1bmN0aW9uOjogZXNjYXBlKHN0cmluZykKIApAQCAtNzMyLDEzICs3NzAsMzYgQEAKICAgIENsZWFyIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gY2FjaGUuCiAKIAotLi4gZXhjZXB0aW9uOjogZXJyb3IKKy4uIGV4Y2VwdGlvbjo6IGVycm9yKG1zZywgcGF0dGVybj1Ob25lLCBwb3M9Tm9uZSkKIAogICAgRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGEgc3RyaW5nIHBhc3NlZCB0byBvbmUgb2YgdGhlIGZ1bmN0aW9ucyBoZXJlIGlzIG5vdCBhCiAgICB2YWxpZCByZWd1bGFyIGV4cHJlc3Npb24gKGZvciBleGFtcGxlLCBpdCBtaWdodCBjb250YWluIHVubWF0Y2hlZCBwYXJlbnRoZXNlcykKICAgIG9yIHdoZW4gc29tZSBvdGhlciBlcnJvciBvY2N1cnMgZHVyaW5nIGNvbXBpbGF0aW9uIG9yIG1hdGNoaW5nLiAgSXQgaXMgbmV2ZXIgYW4KLSAgIGVycm9yIGlmIGEgc3RyaW5nIGNvbnRhaW5zIG5vIG1hdGNoIGZvciBhIHBhdHRlcm4uCisgICBlcnJvciBpZiBhIHN0cmluZyBjb250YWlucyBubyBtYXRjaCBmb3IgYSBwYXR0ZXJuLiAgVGhlIGVycm9yIGluc3RhbmNlIGhhcworICAgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIGF0dHJpYnV0ZXM6CiAKKyAgIC4uIGF0dHJpYnV0ZTo6IG1zZworCisgICAgICBUaGUgdW5mb3JtYXR0ZWQgZXJyb3IgbWVzc2FnZS4KKworICAgLi4gYXR0cmlidXRlOjogcGF0dGVybgorCisgICAgICBUaGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4uCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBvcworCisgICAgICBUaGUgaW5kZXggb2YgKnBhdHRlcm4qIHdoZXJlIGNvbXBpbGF0aW9uIGZhaWxlZC4KKworICAgLi4gYXR0cmlidXRlOjogbGluZW5vCisKKyAgICAgIFRoZSBsaW5lIGNvcnJlc3BvbmRpbmcgdG8gKnBvcyouCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNvbG5vCisKKyAgICAgIFRoZSBjb2x1bW4gY29ycmVzcG9uZGluZyB0byAqcG9zKi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIGFkZGl0aW9uYWwgYXR0cmlidXRlcy4KIAogLi4gX3JlLW9iamVjdHM6CiAKQEAgLTg5MSw2ICs5NTIsOCBAQAogICAgKGBgXGc8MT5gYCwgYGBcZzxuYW1lPmBgKSBhcmUgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZQogICAgY29ycmVzcG9uZGluZyBncm91cC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFVubWF0Y2hlZCBncm91cHMgYXJlIHJlcGxhY2VkIHdpdGggYW4gZW1wdHkgc3RyaW5nLgogCiAuLiBtZXRob2Q6OiBtYXRjaC5ncm91cChbZ3JvdXAxLCAuLi5dKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QgYi9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QKaW5kZXggNjkyMzEwYi4uNTQzMzQwNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdApAQCAtNTksNiArNTksMTQgQEAKICAgIFNhdmUgYSByZWFkbGluZSBoaXN0b3J5IGZpbGUuIFRoZSBkZWZhdWx0IGZpbGVuYW1lIGlzIDpmaWxlOmB+Ly5oaXN0b3J5YC4KIAogCisuLiBmdW5jdGlvbjo6IGFwcGVuZF9oaXN0b3J5X2ZpbGUobmVsZW1lbnRzWywgZmlsZW5hbWVdKQorCisgICBBcHBlbmQgdGhlIGxhc3QgKm5lbGVtZW50cyogb2YgaGlzdG9yeSB0byBhIGZpbGUuICBUaGUgZGVmYXVsdCBmaWxlbmFtZSBpcworICAgOmZpbGU6YH4vLmhpc3RvcnlgLiAgVGhlIGZpbGUgbXVzdCBhbHJlYWR5IGV4aXN0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBmdW5jdGlvbjo6IGNsZWFyX2hpc3RvcnkoKQogCiAgICBDbGVhciB0aGUgY3VycmVudCBoaXN0b3J5LiAgKE5vdGU6IHRoaXMgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZSBpZiB0aGUKQEAgLTIwMSw2ICsyMDksOCBAQAogICAgaGlzdGZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5leHBhbmR1c2VyKCJ+IiksICIucHl0aG9uX2hpc3RvcnkiKQogICAgdHJ5OgogICAgICAgIHJlYWRsaW5lLnJlYWRfaGlzdG9yeV9maWxlKGhpc3RmaWxlKQorICAgICAgICMgZGVmYXVsdCBoaXN0b3J5IGxlbiBpcyAtMSAoaW5maW5pdGUpLCB3aGljaCBtYXkgZ3JvdyB1bnJ1bHkKKyAgICAgICByZWFkbGluZS5zZXRfaGlzdG9yeV9sZW5ndGgoMTAwMCkKICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKICAgICAgICBwYXNzCiAKQEAgLTIwOSw2ICsyMTksMjcgQEAKIFRoaXMgY29kZSBpcyBhY3R1YWxseSBhdXRvbWF0aWNhbGx5IHJ1biB3aGVuIFB5dGhvbiBpcyBydW4gaW4KIDpyZWY6YGludGVyYWN0aXZlIG1vZGUgPHR1dC1pbnRlcmFjdGl2ZT5gIChzZWUgOnJlZjpgcmxjb21wbGV0ZXItY29uZmlnYCkuCiAKK1RoZSBmb2xsb3dpbmcgZXhhbXBsZSBhY2hpZXZlcyB0aGUgc2FtZSBnb2FsIGJ1dCBzdXBwb3J0cyBjb25jdXJyZW50IGludGVyYWN0aXZlCitzZXNzaW9ucywgYnkgb25seSBhcHBlbmRpbmcgdGhlIG5ldyBoaXN0b3J5LiA6OgorCisgICBpbXBvcnQgYXRleGl0CisgICBpbXBvcnQgb3MKKyAgIGltcG9ydCByZWFkbGluZQorICAgaGlzdGZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5leHBhbmR1c2VyKCJ+IiksICIucHl0aG9uX2hpc3RvcnkiKQorCisgICB0cnk6CisgICAgICAgcmVhZGxpbmUucmVhZF9oaXN0b3J5X2ZpbGUoaGlzdGZpbGUpCisgICAgICAgaF9sZW4gPSByZWFkbGluZS5nZXRfaGlzdG9yeV9sZW5ndGgoKQorICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgIG9wZW4oaGlzdGZpbGUsICd3YicpLmNsb3NlKCkKKyAgICAgICBoX2xlbiA9IDAKKworICAgZGVmIHNhdmUocHJldl9oX2xlbiwgaGlzdGZpbGUpOgorICAgICAgIG5ld19oX2xlbiA9IHJlYWRsaW5lLmdldF9oaXN0b3J5X2xlbmd0aCgpCisgICAgICAgcmVhZGxpbmUuc2V0X2hpc3RvcnlfbGVuZ3RoKDEwMDApCisgICAgICAgcmVhZGxpbmUuYXBwZW5kX2hpc3RvcnlfZmlsZShuZXdfaF9sZW4gLSBwcmV2X2hfbGVuLCBoaXN0ZmlsZSkKKyAgIGF0ZXhpdC5yZWdpc3RlcihzYXZlLCBoX2xlbiwgaGlzdGZpbGUpCisKIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBleHRlbmRzIHRoZSA6Y2xhc3M6YGNvZGUuSW50ZXJhY3RpdmVDb25zb2xlYCBjbGFzcyB0bwogc3VwcG9ydCBoaXN0b3J5IHNhdmUvcmVzdG9yZS4gOjoKIApAQCAtMjMzLDUgKzI2NCw1IEBACiAgICAgICAgICAgICAgICBhdGV4aXQucmVnaXN0ZXIoc2VsZi5zYXZlX2hpc3RvcnksIGhpc3RmaWxlKQogCiAgICAgICAgZGVmIHNhdmVfaGlzdG9yeShzZWxmLCBoaXN0ZmlsZSk6CisgICAgICAgICAgIHJlYWRsaW5lLnNldF9oaXN0b3J5X2xlbmd0aCgxMDAwKQogICAgICAgICAgICByZWFkbGluZS53cml0ZV9oaXN0b3J5X2ZpbGUoaGlzdGZpbGUpCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3J1bnB5LnJzdCBiL0RvYy9saWJyYXJ5L3J1bnB5LnJzdAppbmRleCA3MjkzZjE1Li43OGQwMTQzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9ydW5weS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcnVucHkucnN0CkBAIC0zNiw3ICszNiw4IEBACiAgICBpbXBvcnQgbWVjaGFuaXNtIChyZWZlciB0byA6cGVwOmAzMDJgIGZvciBkZXRhaWxzKSBhbmQgdGhlbiBleGVjdXRlZCBpbiBhCiAgICBmcmVzaCBtb2R1bGUgbmFtZXNwYWNlLgogCi0gICBJZiB0aGUgc3VwcGxpZWQgbW9kdWxlIG5hbWUgcmVmZXJzIHRvIGEgcGFja2FnZSByYXRoZXIgdGhhbiBhIG5vcm1hbAorICAgVGhlICptb2RfbmFtZSogYXJndW1lbnQgc2hvdWxkIGJlIGFuIGFic29sdXRlIG1vZHVsZSBuYW1lLgorICAgSWYgdGhlIG1vZHVsZSBuYW1lIHJlZmVycyB0byBhIHBhY2thZ2UgcmF0aGVyIHRoYW4gYSBub3JtYWwKICAgIG1vZHVsZSwgdGhlbiB0aGF0IHBhY2thZ2UgaXMgaW1wb3J0ZWQgYW5kIHRoZSBgYF9fbWFpbl9fYGAgc3VibW9kdWxlIHdpdGhpbgogICAgdGhhdCBwYWNrYWdlIGlzIHRoZW4gZXhlY3V0ZWQgYW5kIHRoZSByZXN1bHRpbmcgbW9kdWxlIGdsb2JhbHMgZGljdGlvbmFyeQogICAgcmV0dXJuZWQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zZWxlY3QucnN0IGIvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdAppbmRleCA1MzM0YWY4Li5hNjJkYzg0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zZWxlY3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QKQEAgLTE0NSw2ICsxNDUsMTMgQEAKICAgICAgIGxpYnJhcnksIGFuZCBkb2VzIG5vdCBoYW5kbGUgZmlsZSBkZXNjcmlwdG9ycyB0aGF0IGRvbid0IG9yaWdpbmF0ZSBmcm9tCiAgICAgICBXaW5Tb2NrLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGZ1bmN0aW9uIGlzIG5vdyByZXRyaWVkIHdpdGggYSByZWNvbXB1dGVkIHRpbWVvdXQgd2hlbiBpbnRlcnJ1cHRlZCBieQorICAgICAgYSBzaWduYWwsIGV4Y2VwdCBpZiB0aGUgc2lnbmFsIGhhbmRsZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiAoc2VlCisgICAgICA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKSwgaW5zdGVhZCBvZiByYWlzaW5nCisgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYC4KKworCiAuLiBhdHRyaWJ1dGU6OiBQSVBFX0JVRgogCiAgICBUaGUgbWluaW11bSBudW1iZXIgb2YgYnl0ZXMgd2hpY2ggY2FuIGJlIHdyaXR0ZW4gd2l0aG91dCBibG9ja2luZyB0byBhIHBpcGUKQEAgLTI0Miw2ICsyNDksMTIgQEAKICAgIHJldHVybmluZy4gSWYgKnRpbWVvdXQqIGlzIG9taXR0ZWQsIC0xLCBvciA6Y29uc3Q6YE5vbmVgLCB0aGUgY2FsbCB3aWxsCiAgICBibG9jayB1bnRpbCB0aGVyZSBpcyBhbiBldmVudCBmb3IgdGhpcyBwb2xsIG9iamVjdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBmdW5jdGlvbiBpcyBub3cgcmV0cmllZCB3aXRoIGEgcmVjb21wdXRlZCB0aW1lb3V0IHdoZW4gaW50ZXJydXB0ZWQgYnkKKyAgICAgIGEgc2lnbmFsLCBleGNlcHQgaWYgdGhlIHNpZ25hbCBoYW5kbGVyIHJhaXNlcyBhbiBleGNlcHRpb24gKHNlZQorICAgICAgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSksIGluc3RlYWQgb2YgcmFpc2luZworICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCisKIAogLi4gX2Vwb2xsLW9iamVjdHM6CiAKQEAgLTMyMiw2ICszMzUsMTIgQEAKIAogICAgV2FpdCBmb3IgZXZlbnRzLiB0aW1lb3V0IGluIHNlY29uZHMgKGZsb2F0KQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGZ1bmN0aW9uIGlzIG5vdyByZXRyaWVkIHdpdGggYSByZWNvbXB1dGVkIHRpbWVvdXQgd2hlbiBpbnRlcnJ1cHRlZCBieQorICAgICAgYSBzaWduYWwsIGV4Y2VwdCBpZiB0aGUgc2lnbmFsIGhhbmRsZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiAoc2VlCisgICAgICA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKSwgaW5zdGVhZCBvZiByYWlzaW5nCisgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYC4KKwogCiAuLiBfcG9sbC1vYmplY3RzOgogCkBAIC00MDEsNiArNDIwLDEyIEBACiAgICByZXR1cm5pbmcuIElmICp0aW1lb3V0KiBpcyBvbWl0dGVkLCBuZWdhdGl2ZSwgb3IgOmNvbnN0OmBOb25lYCwgdGhlIGNhbGwgd2lsbAogICAgYmxvY2sgdW50aWwgdGhlcmUgaXMgYW4gZXZlbnQgZm9yIHRoaXMgcG9sbCBvYmplY3QuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZnVuY3Rpb24gaXMgbm93IHJldHJpZWQgd2l0aCBhIHJlY29tcHV0ZWQgdGltZW91dCB3aGVuIGludGVycnVwdGVkIGJ5CisgICAgICBhIHNpZ25hbCwgZXhjZXB0IGlmIHRoZSBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4gZXhjZXB0aW9uIChzZWUKKyAgICAgIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgLgorCiAKIC4uIF9rcXVldWUtb2JqZWN0czoKIApAQCAtNDM1LDYgKzQ2MCwxMiBAQAogICAgLSBtYXhfZXZlbnRzIG11c3QgYmUgMCBvciBhIHBvc2l0aXZlIGludGVnZXIKICAgIC0gdGltZW91dCBpbiBzZWNvbmRzIChmbG9hdHMgcG9zc2libGUpCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZnVuY3Rpb24gaXMgbm93IHJldHJpZWQgd2l0aCBhIHJlY29tcHV0ZWQgdGltZW91dCB3aGVuIGludGVycnVwdGVkIGJ5CisgICAgICBhIHNpZ25hbCwgZXhjZXB0IGlmIHRoZSBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4gZXhjZXB0aW9uIChzZWUKKyAgICAgIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgLgorCiAKIC4uIF9rZXZlbnQtb2JqZWN0czoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2VsZWN0b3JzLnJzdCBiL0RvYy9saWJyYXJ5L3NlbGVjdG9ycy5yc3QKaW5kZXggOTgzNzdjOC4uMzg0N2JiZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2VsZWN0b3JzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zZWxlY3RvcnMucnN0CkBAIC00NSwxMiArNDUsMTMgQEAKICAgICstLSBTZWxlY3RTZWxlY3RvcgogICAgKy0tIFBvbGxTZWxlY3RvcgogICAgKy0tIEVwb2xsU2VsZWN0b3IKKyAgICstLSBEZXZwb2xsU2VsZWN0b3IKICAgICstLSBLcXVldWVTZWxlY3RvcgogCiAKIEluIHRoZSBmb2xsb3dpbmcsICpldmVudHMqIGlzIGEgYml0d2lzZSBtYXNrIGluZGljYXRpbmcgd2hpY2ggSS9PIGV2ZW50cyBzaG91bGQKLWJlIHdhaXRlZCBmb3Igb24gYSBnaXZlbiBmaWxlIG9iamVjdC4gSXQgY2FuIGJlIGEgY29tYmluYXRpb24gb2YgdGhlIGNvbnN0YW50cwotYmVsb3c6CitiZSB3YWl0ZWQgZm9yIG9uIGEgZ2l2ZW4gZmlsZSBvYmplY3QuIEl0IGNhbiBiZSBhIGNvbWJpbmF0aW9uIG9mIHRoZSBtb2R1bGVzCitjb25zdGFudHMgYmVsb3c6CiAKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgQ29uc3RhbnQgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKQEAgLTk4LDcgKzk5LDcgQEAKICAgIDpjbGFzczpgQmFzZVNlbGVjdG9yYCBhbmQgaXRzIGNvbmNyZXRlIGltcGxlbWVudGF0aW9ucyBzdXBwb3J0IHRoZQogICAgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAgcHJvdG9jb2wuCiAKLSAgIC4uIG1ldGhvZDo6IHJlZ2lzdGVyKGZpbGVvYmosIGV2ZW50cywgZGF0YT1Ob25lKQorICAgLi4gYWJzdHJhY3RtZXRob2Q6OiByZWdpc3RlcihmaWxlb2JqLCBldmVudHMsIGRhdGE9Tm9uZSkKIAogICAgICAgUmVnaXN0ZXIgYSBmaWxlIG9iamVjdCBmb3Igc2VsZWN0aW9uLCBtb25pdG9yaW5nIGl0IGZvciBJL08gZXZlbnRzLgogCkBAIC0xMTEsNyArMTEyLDcgQEAKICAgICAgIDpleGM6YFZhbHVlRXJyb3JgIGluIGNhc2Ugb2YgaW52YWxpZCBldmVudCBtYXNrIG9yIGZpbGUgZGVzY3JpcHRvciwgb3IKICAgICAgIDpleGM6YEtleUVycm9yYCBpZiB0aGUgZmlsZSBvYmplY3QgaXMgYWxyZWFkeSByZWdpc3RlcmVkLgogCi0gICAuLiBtZXRob2Q6OiB1bnJlZ2lzdGVyKGZpbGVvYmopCisgICAuLiBhYnN0cmFjdG1ldGhvZDo6IHVucmVnaXN0ZXIoZmlsZW9iaikKIAogICAgICAgVW5yZWdpc3RlciBhIGZpbGUgb2JqZWN0IGZyb20gc2VsZWN0aW9uLCByZW1vdmluZyBpdCBmcm9tIG1vbml0b3JpbmcuIEEKICAgICAgIGZpbGUgb2JqZWN0IHNoYWxsIGJlIHVucmVnaXN0ZXJlZCBwcmlvciB0byBiZWluZyBjbG9zZWQuCkBAIC0xMzUsNyArMTM2LDcgQEAKICAgICAgIDpleGM6YFZhbHVlRXJyb3JgIGluIGNhc2Ugb2YgaW52YWxpZCBldmVudCBtYXNrIG9yIGZpbGUgZGVzY3JpcHRvciwgb3IKICAgICAgIDpleGM6YEtleUVycm9yYCBpZiB0aGUgZmlsZSBvYmplY3QgaXMgbm90IHJlZ2lzdGVyZWQuCiAKLSAgIC4uIG1ldGhvZDo6IHNlbGVjdCh0aW1lb3V0PU5vbmUpCisgICAuLiBhYnN0cmFjdG1ldGhvZDo6IHNlbGVjdCh0aW1lb3V0PU5vbmUpCiAKICAgICAgIFdhaXQgdW50aWwgc29tZSByZWdpc3RlcmVkIGZpbGUgb2JqZWN0cyBiZWNvbWUgcmVhZHksIG9yIHRoZSB0aW1lb3V0CiAgICAgICBleHBpcmVzLgpAQCAtMTU4LDYgKzE1OSwxMiBAQAogICAgICAgICAgIHRpbWVvdXQgaGFzIGVsYXBzZWQgaWYgdGhlIGN1cnJlbnQgcHJvY2VzcyByZWNlaXZlcyBhIHNpZ25hbDogaW4gdGhpcwogICAgICAgICAgIGNhc2UsIGFuIGVtcHR5IGxpc3Qgd2lsbCBiZSByZXR1cm5lZC4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICAgIFRoZSBzZWxlY3RvciBpcyBub3cgcmV0cmllZCB3aXRoIGEgcmVjb21wdXRlZCB0aW1lb3V0IHdoZW4gaW50ZXJydXB0ZWQKKyAgICAgICAgIGJ5IGEgc2lnbmFsIGlmIHRoZSBzaWduYWwgaGFuZGxlciBkaWQgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbiAoc2VlCisgICAgICAgICA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKSwgaW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZW1wdHkgbGlzdAorICAgICAgICAgb2YgZXZlbnRzIGJlZm9yZSB0aGUgdGltZW91dC4KKwogICAgLi4gbWV0aG9kOjogY2xvc2UoKQogCiAgICAgICBDbG9zZSB0aGUgc2VsZWN0b3IuCkBAIC0xNzIsNyArMTc5LDcgQEAKICAgICAgIFRoaXMgcmV0dXJucyB0aGUgOmNsYXNzOmBTZWxlY3RvcktleWAgaW5zdGFuY2UgYXNzb2NpYXRlZCB0byB0aGlzIGZpbGUKICAgICAgIG9iamVjdCwgb3IgcmFpc2VzIDpleGM6YEtleUVycm9yYCBpZiB0aGUgZmlsZSBvYmplY3QgaXMgbm90IHJlZ2lzdGVyZWQuCiAKLSAgIC4uIG1ldGhvZDo6IGdldF9tYXAoKQorICAgLi4gYWJzdHJhY3RtZXRob2Q6OiBnZXRfbWFwKCkKIAogICAgICAgUmV0dXJuIGEgbWFwcGluZyBvZiBmaWxlIG9iamVjdHMgdG8gc2VsZWN0b3Iga2V5cy4KIApAQCAtMjA3LDYgKzIxNCwxNiBAQAogICAgICAgVGhpcyByZXR1cm5zIHRoZSBmaWxlIGRlc2NyaXB0b3IgdXNlZCBieSB0aGUgdW5kZXJseWluZwogICAgICAgOmZ1bmM6YHNlbGVjdC5lcG9sbGAgb2JqZWN0LgogCisuLiBjbGFzczo6IERldnBvbGxTZWxlY3RvcigpCisKKyAgIDpmdW5jOmBzZWxlY3QuZGV2cG9sbGAtYmFzZWQgc2VsZWN0b3IuCisKKyAgIC4uIG1ldGhvZDo6IGZpbGVubygpCisKKyAgICAgIFRoaXMgcmV0dXJucyB0aGUgZmlsZSBkZXNjcmlwdG9yIHVzZWQgYnkgdGhlIHVuZGVybHlpbmcKKyAgICAgIDpmdW5jOmBzZWxlY3QuZGV2cG9sbGAgb2JqZWN0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogLi4gY2xhc3M6OiBLcXVldWVTZWxlY3RvcigpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9zaHV0aWwucnN0CmluZGV4IDc1NjY1MjEuLjkwNDYyN2YgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdApAQCAtMTkxLDcgKzE5MSw4IEBACiAgICBtYXRjaCBvbmUgb2YgdGhlIGdsb2Itc3R5bGUgKnBhdHRlcm5zKiBwcm92aWRlZC4gIFNlZSB0aGUgZXhhbXBsZSBiZWxvdy4KIAogCi0uLiBmdW5jdGlvbjo6IGNvcHl0cmVlKHNyYywgZHN0LCBzeW1saW5rcz1GYWxzZSwgaWdub3JlPU5vbmUsIGNvcHlfZnVuY3Rpb249Y29weTIsIGlnbm9yZV9kYW5nbGluZ19zeW1saW5rcz1GYWxzZSkKKy4uIGZ1bmN0aW9uOjogY29weXRyZWUoc3JjLCBkc3QsIHN5bWxpbmtzPUZhbHNlLCBpZ25vcmU9Tm9uZSwgXAorICAgICAgICAgICAgICBjb3B5X2Z1bmN0aW9uPWNvcHkyLCBpZ25vcmVfZGFuZ2xpbmdfc3ltbGlua3M9RmFsc2UpCiAKICAgIFJlY3Vyc2l2ZWx5IGNvcHkgYW4gZW50aXJlIGRpcmVjdG9yeSB0cmVlIHJvb3RlZCBhdCAqc3JjKiwgcmV0dXJuaW5nIHRoZQogICAgZGVzdGluYXRpb24gZGlyZWN0b3J5LiAgVGhlIGRlc3RpbmF0aW9uCkBAIC0yODIsNyArMjgzLDcgQEAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIGZ1bmN0aW9uOjogbW92ZShzcmMsIGRzdCkKKy4uIGZ1bmN0aW9uOjogbW92ZShzcmMsIGRzdCwgY29weV9mdW5jdGlvbj1jb3B5MikKIAogICAgUmVjdXJzaXZlbHkgbW92ZSBhIGZpbGUgb3IgZGlyZWN0b3J5ICgqc3JjKikgdG8gYW5vdGhlciBsb2NhdGlvbiAoKmRzdCopCiAgICBhbmQgcmV0dXJuIHRoZSBkZXN0aW5hdGlvbi4KQEAgLTI5MiwxNSArMjkzLDI2IEBACiAgICBiZSBvdmVyd3JpdHRlbiBkZXBlbmRpbmcgb24gOmZ1bmM6YG9zLnJlbmFtZWAgc2VtYW50aWNzLgogCiAgICBJZiB0aGUgZGVzdGluYXRpb24gaXMgb24gdGhlIGN1cnJlbnQgZmlsZXN5c3RlbSwgdGhlbiA6ZnVuYzpgb3MucmVuYW1lYCBpcwotICAgdXNlZC4gIE90aGVyd2lzZSwgKnNyYyogaXMgY29waWVkICh1c2luZyA6ZnVuYzpgc2h1dGlsLmNvcHkyYCkgdG8gKmRzdCogYW5kCi0gICB0aGVuIHJlbW92ZWQuIEluIGNhc2Ugb2Ygc3ltbGlua3MsIGEgbmV3IHN5bWxpbmsgcG9pbnRpbmcgdG8gdGhlIHRhcmdldCBvZgotICAgKnNyYyogd2lsbCBiZSBjcmVhdGVkIGluIG9yIGFzICpkc3QqIGFuZCAqc3JjKiB3aWxsIGJlIHJlbW92ZWQuCisgICB1c2VkLiBPdGhlcndpc2UsICpzcmMqIGlzIGNvcGllZCB0byAqZHN0KiB1c2luZyAqY29weV9mdW5jdGlvbiogYW5kIHRoZW4KKyAgIHJlbW92ZWQuICBJbiBjYXNlIG9mIHN5bWxpbmtzLCBhIG5ldyBzeW1saW5rIHBvaW50aW5nIHRvIHRoZSB0YXJnZXQgb2YgKnNyYyoKKyAgIHdpbGwgYmUgY3JlYXRlZCBpbiBvciBhcyAqZHN0KiBhbmQgKnNyYyogd2lsbCBiZSByZW1vdmVkLgorCisgICBJZiAqY29weV9mdW5jdGlvbiogaXMgZ2l2ZW4sIGl0IG11c3QgYmUgYSBjYWxsYWJsZSB0aGF0IHRha2VzIHR3byBhcmd1bWVudHMKKyAgICpzcmMqIGFuZCAqZHN0KiwgYW5kIHdpbGwgYmUgdXNlZCB0byBjb3B5ICpzcmMqIHRvICpkZXN0KiBpZgorICAgOmZ1bmM6YG9zLnJlbmFtZWAgY2Fubm90IGJlIHVzZWQuICBJZiB0aGUgc291cmNlIGlzIGEgZGlyZWN0b3J5LAorICAgOmZ1bmM6YGNvcHl0cmVlYCBpcyBjYWxsZWQsIHBhc3NpbmcgaXQgdGhlIDpmdW5jOmBjb3B5X2Z1bmN0aW9uYC4gVGhlCisgICBkZWZhdWx0ICpjb3B5X2Z1bmN0aW9uKiBpcyA6ZnVuYzpgY29weTJgLiAgVXNpbmcgOmZ1bmM6YGNvcHlgIGFzIHRoZQorICAgKmNvcHlfZnVuY3Rpb24qIGFsbG93cyB0aGUgbW92ZSB0byBzdWNjZWVkIHdoZW4gaXQgaXMgbm90IHBvc3NpYmxlIHRvIGFsc28KKyAgIGNvcHkgdGhlIG1ldGFkYXRhLCBhdCB0aGUgZXhwZW5zZSBvZiBub3QgY29weWluZyBhbnkgb2YgdGhlIG1ldGFkYXRhLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgQWRkZWQgZXhwbGljaXQgc3ltbGluayBoYW5kbGluZyBmb3IgZm9yZWlnbiBmaWxlc3lzdGVtcywgdGh1cyBhZGFwdGluZwogICAgICAgaXQgdG8gdGhlIGJlaGF2aW9yIG9mIEdOVSdzIDpwcm9ncmFtOmBtdmAuCiAgICAgICBOb3cgcmV0dXJucyAqZHN0Ki4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHRoZSAqY29weV9mdW5jdGlvbioga2V5d29yZCBhcmd1bWVudC4KKwogLi4gZnVuY3Rpb246OiBkaXNrX3VzYWdlKHBhdGgpCiAKICAgIFJldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGggYXMgYSA6dGVybTpgbmFtZWQgdHVwbGVgCkBAIC00MTgsNiArNDMwLDI2IEBACiAgICBjb3B5dHJlZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBpZ25vcmU9X2xvZ3BhdGgpCiAKIAorLi4gX3NodXRpbC1ybXRyZWUtZXhhbXBsZToKKworcm10cmVlIGV4YW1wbGUKK35+fn5+fn5+fn5+fn5+CisKK1RoaXMgZXhhbXBsZSBzaG93cyBob3cgdG8gcmVtb3ZlIGEgZGlyZWN0b3J5IHRyZWUgb24gV2luZG93cyB3aGVyZSBzb21lCitvZiB0aGUgZmlsZXMgaGF2ZSB0aGVpciByZWFkLW9ubHkgYml0IHNldC4gSXQgdXNlcyB0aGUgb25lcnJvciBjYWxsYmFjawordG8gY2xlYXIgdGhlIHJlYWRvbmx5IGJpdCBhbmQgcmVhdHRlbXB0IHRoZSByZW1vdmUuIEFueSBzdWJzZXF1ZW50IGZhaWx1cmUKK3dpbGwgcHJvcGFnYXRlLiA6OgorCisgICAgaW1wb3J0IG9zLCBzdGF0CisgICAgaW1wb3J0IHNodXRpbAorCisgICAgZGVmIHJlbW92ZV9yZWFkb25seShmdW5jLCBwYXRoLCBfKToKKyAgICAgICAgIkNsZWFyIHRoZSByZWFkb25seSBiaXQgYW5kIHJlYXR0ZW1wdCB0aGUgcmVtb3ZhbCIKKyAgICAgICAgb3MuY2htb2QocGF0aCwgc3RhdC5TX0lXUklURSkKKyAgICAgICAgZnVuYyhwYXRoKQorCisgICAgc2h1dGlsLnJtdHJlZShkaXJlY3RvcnksIG9uZXJyb3I9cmVtb3ZlX3JlYWRvbmx5KQorCiAuLiBfYXJjaGl2aW5nLW9wZXJhdGlvbnM6CiAKIEFyY2hpdmluZyBvcGVyYXRpb25zCkBAIC00MzQsNyArNDY2LDggQEAKIAogICAgKmJhc2VfbmFtZSogaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gY3JlYXRlLCBpbmNsdWRpbmcgdGhlIHBhdGgsIG1pbnVzCiAgICBhbnkgZm9ybWF0LXNwZWNpZmljIGV4dGVuc2lvbi4gKmZvcm1hdCogaXMgdGhlIGFyY2hpdmUgZm9ybWF0OiBvbmUgb2YKLSAgICJ6aXAiLCAidGFyIiwgImJ6dGFyIiAoaWYgdGhlIDptb2Q6YGJ6MmAgbW9kdWxlIGlzIGF2YWlsYWJsZSkgb3IgImd6dGFyIi4KKyAgICJ6aXAiLCAidGFyIiwgImJ6dGFyIiAoaWYgdGhlIDptb2Q6YGJ6MmAgbW9kdWxlIGlzIGF2YWlsYWJsZSksICJ4enRhciIKKyAgIChpZiB0aGUgOm1vZDpgbHptYWAgbW9kdWxlIGlzIGF2YWlsYWJsZSkgb3IgImd6dGFyIi4KIAogICAgKnJvb3RfZGlyKiBpcyBhIGRpcmVjdG9yeSB0aGF0IHdpbGwgYmUgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZQogICAgYXJjaGl2ZTsgZm9yIGV4YW1wbGUsIHdlIHR5cGljYWxseSBjaGRpciBpbnRvICpyb290X2RpciogYmVmb3JlIGNyZWF0aW5nIHRoZQpAQCAtNDU3LDYgKzQ5MCw5IEBACiAKICAgIFRoZSAqdmVyYm9zZSogYXJndW1lbnQgaXMgdW51c2VkIGFuZCBkZXByZWNhdGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlICp4enRhciogZm9ybWF0LgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X2FyY2hpdmVfZm9ybWF0cygpCiAKQEAgLTQ2Nyw2ICs1MDMsNyBAQAogCiAgICAtICpnenRhcio6IGd6aXAnZWQgdGFyLWZpbGUKICAgIC0gKmJ6dGFyKjogYnppcDInZWQgdGFyLWZpbGUgKGlmIHRoZSA6bW9kOmBiejJgIG1vZHVsZSBpcyBhdmFpbGFibGUuKQorICAgLSAqeHp0YXIqOiB4eidlZCB0YXItZmlsZSAoaWYgdGhlIDptb2Q6YGx6bWFgIG1vZHVsZSBpcyBhdmFpbGFibGUuKQogICAgLSAqdGFyKjogdW5jb21wcmVzc2VkIHRhciBmaWxlCiAgICAtICp6aXAqOiBaSVAgZmlsZQogCkBAIC01NDIsNiArNTc5LDcgQEAKIAogICAgLSAqZ3p0YXIqOiBnemlwJ2VkIHRhci1maWxlCiAgICAtICpienRhcio6IGJ6aXAyJ2VkIHRhci1maWxlIChpZiB0aGUgOm1vZDpgYnoyYCBtb2R1bGUgaXMgYXZhaWxhYmxlLikKKyAgIC0gKnh6dGFyKjogeHonZWQgdGFyLWZpbGUgKGlmIHRoZSA6bW9kOmBsem1hYCBtb2R1bGUgaXMgYXZhaWxhYmxlLikKICAgIC0gKnRhcio6IHVuY29tcHJlc3NlZCB0YXIgZmlsZQogICAgLSAqemlwKjogWklQIGZpbGUKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2lnbmFsLnJzdCBiL0RvYy9saWJyYXJ5L3NpZ25hbC5yc3QKaW5kZXggOGI5MDk5NC4uOGY4MTRkZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2lnbmFsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zaWduYWwucnN0CkBAIC02NSw2ICs2NSwxNiBAQAogTW9kdWxlIGNvbnRlbnRzCiAtLS0tLS0tLS0tLS0tLS0KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIHNpZ25hbCAoU0lHKiksIGhhbmRsZXIgKDpjb25zdDpgU0lHX0RGTGAsIDpjb25zdDpgU0lHX0lHTmApIGFuZCBzaWdtYXNrCisgICAoOmNvbnN0OmBTSUdfQkxPQ0tgLCA6Y29uc3Q6YFNJR19VTkJMT0NLYCwgOmNvbnN0OmBTSUdfU0VUTUFTS2ApCisgICByZWxhdGVkIGNvbnN0YW50cyBsaXN0ZWQgYmVsb3cgd2VyZSB0dXJuZWQgaW50bworICAgOmNsYXNzOmBlbnVtcyA8ZW51bS5JbnRFbnVtPmAuCisgICA6ZnVuYzpgZ2V0c2lnbmFsYCwgOmZ1bmM6YHB0aHJlYWRfc2lnbWFza2AsIDpmdW5jOmBzaWdwZW5kaW5nYCBhbmQKKyAgIDpmdW5jOmBzaWd3YWl0YCBmdW5jdGlvbnMgcmV0dXJuIGh1bWFuLXJlYWRhYmxlCisgICA6Y2xhc3M6YGVudW1zIDxlbnVtLkludEVudW0+YC4KKworCiBUaGUgdmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIDptb2Q6YHNpZ25hbGAgbW9kdWxlIGFyZToKIAogCkBAIC0yMDksMjEgKzIxOSwyMSBAQAogICAgOmZ1bmM6YHNpZ3BlbmRpbmdgLgogCiAKLS4uIGZ1bmN0aW9uOjogcHRocmVhZF9raWxsKHRocmVhZF9pZCwgc2lnbnVtKQorLi4gZnVuY3Rpb246OiBwdGhyZWFkX2tpbGwodGhyZWFkX2lkLCBzaWduYWxudW0pCiAKLSAgIFNlbmQgdGhlIHNpZ25hbCAqc2lnbnVtKiB0byB0aGUgdGhyZWFkICp0aHJlYWRfaWQqLCBhbm90aGVyIHRocmVhZCBpbiB0aGUKKyAgIFNlbmQgdGhlIHNpZ25hbCAqc2lnbmFsbnVtKiB0byB0aGUgdGhyZWFkICp0aHJlYWRfaWQqLCBhbm90aGVyIHRocmVhZCBpbiB0aGUKICAgIHNhbWUgcHJvY2VzcyBhcyB0aGUgY2FsbGVyLiAgVGhlIHRhcmdldCB0aHJlYWQgY2FuIGJlIGV4ZWN1dGluZyBhbnkgY29kZQogICAgKFB5dGhvbiBvciBub3QpLiAgSG93ZXZlciwgaWYgdGhlIHRhcmdldCB0aHJlYWQgaXMgZXhlY3V0aW5nIHRoZSBQeXRob24KICAgIGludGVycHJldGVyLCB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVycyB3aWxsIGJlIDpyZWY6YGV4ZWN1dGVkIGJ5IHRoZSBtYWluCi0gICB0aHJlYWQgPHNpZ25hbHMtYW5kLXRocmVhZHM+YC4gIFRoZXJlZm9yZSwgdGhlIG9ubHkgcG9pbnQgb2Ygc2VuZGluZyBhIHNpZ25hbCB0byBhIHBhcnRpY3VsYXIKLSAgIFB5dGhvbiB0aHJlYWQgd291bGQgYmUgdG8gZm9yY2UgYSBydW5uaW5nIHN5c3RlbSBjYWxsIHRvIGZhaWwgd2l0aAotICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCisgICB0aHJlYWQgPHNpZ25hbHMtYW5kLXRocmVhZHM+YC4gIFRoZXJlZm9yZSwgdGhlIG9ubHkgcG9pbnQgb2Ygc2VuZGluZyBhCisgICBzaWduYWwgdG8gYSBwYXJ0aWN1bGFyIFB5dGhvbiB0aHJlYWQgd291bGQgYmUgdG8gZm9yY2UgYSBydW5uaW5nIHN5c3RlbSBjYWxsCisgICB0byBmYWlsIHdpdGggOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCiAKICAgIFVzZSA6ZnVuYzpgdGhyZWFkaW5nLmdldF9pZGVudCgpYCBvciB0aGUgOmF0dHI6YH50aHJlYWRpbmcuVGhyZWFkLmlkZW50YAogICAgYXR0cmlidXRlIG9mIDpjbGFzczpgdGhyZWFkaW5nLlRocmVhZGAgb2JqZWN0cyB0byBnZXQgYSBzdWl0YWJsZSB2YWx1ZQogICAgZm9yICp0aHJlYWRfaWQqLgogCi0gICBJZiAqc2lnbnVtKiBpcyAwLCB0aGVuIG5vIHNpZ25hbCBpcyBzZW50LCBidXQgZXJyb3IgY2hlY2tpbmcgaXMgc3RpbGwKKyAgIElmICpzaWduYWxudW0qIGlzIDAsIHRoZW4gbm8gc2lnbmFsIGlzIHNlbnQsIGJ1dCBlcnJvciBjaGVja2luZyBpcyBzdGlsbAogICAgcGVyZm9ybWVkOyB0aGlzIGNhbiBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSB0YXJnZXQgdGhyZWFkIGlzIHN0aWxsIHJ1bm5pbmcuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCAoc2VlIHRoZSBtYW4gcGFnZSA6bWFucGFnZTpgcHRocmVhZF9raWxsKDMpYCBmb3IgZnVydGhlcgpAQCAtMzA4LDYgKzMxOCw5IEBACiAgICBhdHRlbXB0aW5nIHRvIGNhbGwgaXQgZnJvbSBvdGhlciB0aHJlYWRzIHdpbGwgY2F1c2UgYSA6ZXhjOmBWYWx1ZUVycm9yYAogICAgZXhjZXB0aW9uIHRvIGJlIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIE9uIFdpbmRvd3MsIHRoZSBmdW5jdGlvbiBub3cgYWxzbyBzdXBwb3J0cyBzb2NrZXQgaGFuZGxlcy4KKwogCiAuLiBmdW5jdGlvbjo6IHNpZ2ludGVycnVwdChzaWduYWxudW0sIGZsYWcpCiAKQEAgLTM5NSw2ICs0MDgsMTEgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZnVuY3Rpb24gaXMgbm93IHJldHJpZWQgaWYgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgbm90IGluICpzaWdzZXQqCisgICAgICBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yCisgICAgICB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBmdW5jdGlvbjo6IHNpZ3RpbWVkd2FpdChzaWdzZXQsIHRpbWVvdXQpCiAKQEAgLTQwOSw2ICs0MjcsMTEgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZnVuY3Rpb24gaXMgbm93IHJldHJpZWQgd2l0aCB0aGUgcmVjb21wdXRlZCAqdGltZW91dCogaWYgaW50ZXJydXB0ZWQKKyAgICAgIGJ5IGEgc2lnbmFsIG5vdCBpbiAqc2lnc2V0KiBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuCisgICAgICBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBfc2lnbmFsLWV4YW1wbGU6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NpdGUucnN0IGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKaW5kZXggNTFlNWRhOC4uNDNkYWY3OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKQEAgLTI2LDI0ICsyNiwyMyBAQAogICAgOm9wdGlvbjpgLVNgLgogCiAuLiBpbmRleDo6Ci0gICBwYWlyOiBzaXRlLXB5dGhvbjsgZGlyZWN0b3J5CiAgICBwYWlyOiBzaXRlLXBhY2thZ2VzOyBkaXJlY3RvcnkKIAogSXQgc3RhcnRzIGJ5IGNvbnN0cnVjdGluZyB1cCB0byBmb3VyIGRpcmVjdG9yaWVzIGZyb20gYSBoZWFkIGFuZCBhIHRhaWwgcGFydC4KIEZvciB0aGUgaGVhZCBwYXJ0LCBpdCB1c2VzIGBgc3lzLnByZWZpeGBgIGFuZCBgYHN5cy5leGVjX3ByZWZpeGBgOyBlbXB0eSBoZWFkcwogYXJlIHNraXBwZWQuICBGb3IgdGhlIHRhaWwgcGFydCwgaXQgdXNlcyB0aGUgZW1wdHkgc3RyaW5nIGFuZCB0aGVuCiA6ZmlsZTpgbGliL3NpdGUtcGFja2FnZXNgIChvbiBXaW5kb3dzKSBvcgotOmZpbGU6YGxpYi9weXRob257WC5ZfS9zaXRlLXBhY2thZ2VzYCBhbmQgdGhlbiA6ZmlsZTpgbGliL3NpdGUtcHl0aG9uYCAob24KLVVuaXggYW5kIE1hY2ludG9zaCkuICBGb3IgZWFjaCBvZiB0aGUgZGlzdGluY3QgaGVhZC10YWlsIGNvbWJpbmF0aW9ucywgaXQgc2VlcwotaWYgaXQgcmVmZXJzIHRvIGFuIGV4aXN0aW5nIGRpcmVjdG9yeSwgYW5kIGlmIHNvLCBhZGRzIGl0IHRvIGBgc3lzLnBhdGhgYCBhbmQKLWFsc28gaW5zcGVjdHMgdGhlIG5ld2x5IGFkZGVkIHBhdGggZm9yIGNvbmZpZ3VyYXRpb24gZmlsZXMuCis6ZmlsZTpgbGliL3B5dGhvbntYLll9L3NpdGUtcGFja2FnZXNgIChvbiBVbml4IGFuZCBNYWNpbnRvc2gpLiAgRm9yIGVhY2gKK29mIHRoZSBkaXN0aW5jdCBoZWFkLXRhaWwgY29tYmluYXRpb25zLCBpdCBzZWVzIGlmIGl0IHJlZmVycyB0byBhbiBleGlzdGluZworZGlyZWN0b3J5LCBhbmQgaWYgc28sIGFkZHMgaXQgdG8gYGBzeXMucGF0aGBgIGFuZCBhbHNvIGluc3BlY3RzIHRoZSBuZXdseQorYWRkZWQgcGF0aCBmb3IgY29uZmlndXJhdGlvbiBmaWxlcy4KIAotLi4gZGVwcmVjYXRlZDo6IDMuNAotICAgU3VwcG9ydCBmb3IgdGhlICJzaXRlLXB5dGhvbiIgZGlyZWN0b3J5IHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjUuCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgU3VwcG9ydCBmb3IgdGhlICJzaXRlLXB5dGhvbiIgZGlyZWN0b3J5IGhhcyBiZWVuIHJlbW92ZWQuCiAKIElmIGEgZmlsZSBuYW1lZCAicHl2ZW52LmNmZyIgZXhpc3RzIG9uZSBkaXJlY3RvcnkgYWJvdmUgc3lzLmV4ZWN1dGFibGUsCiBzeXMucHJlZml4IGFuZCBzeXMuZXhlY19wcmVmaXggYXJlIHNldCB0byB0aGF0IGRpcmVjdG9yeSBhbmQKLWl0IGlzIGFsc28gY2hlY2tlZCBmb3Igc2l0ZS1wYWNrYWdlcyBhbmQgc2l0ZS1weXRob24gKHN5cy5iYXNlX3ByZWZpeCBhbmQKK2l0IGlzIGFsc28gY2hlY2tlZCBmb3Igc2l0ZS1wYWNrYWdlcyAoc3lzLmJhc2VfcHJlZml4IGFuZAogc3lzLmJhc2VfZXhlY19wcmVmaXggd2lsbCBhbHdheXMgYmUgdGhlICJyZWFsIiBwcmVmaXhlcyBvZiB0aGUgUHl0aG9uCiBpbnN0YWxsYXRpb24pLiBJZiAicHl2ZW52LmNmZyIgKGEgYm9vdHN0cmFwIGNvbmZpZ3VyYXRpb24gZmlsZSkgY29udGFpbnMKIHRoZSBrZXkgImluY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMiIHNldCB0byBhbnl0aGluZyBvdGhlciB0aGFuICJmYWxzZSIKQEAgLTE5NSw4ICsxOTQsNyBAQAogCiAuLiBmdW5jdGlvbjo6IGdldHNpdGVwYWNrYWdlcygpCiAKLSAgIFJldHVybiBhIGxpc3QgY29udGFpbmluZyBhbGwgZ2xvYmFsIHNpdGUtcGFja2FnZXMgZGlyZWN0b3JpZXMgKGFuZCBwb3NzaWJseQotICAgc2l0ZS1weXRob24pLgorICAgUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIGFsbCBnbG9iYWwgc2l0ZS1wYWNrYWdlcyBkaXJlY3Rvcmllcy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NtdHBkLnJzdCBiL0RvYy9saWJyYXJ5L3NtdHBkLnJzdAppbmRleCAzZWJlZDA2Li45NzdmOWE4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zbXRwZC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc210cGQucnN0CkBAIC0yMCw3ICsyMCw4IEBACiBBZGRpdGlvbmFsbHkgdGhlIFNNVFBDaGFubmVsIG1heSBiZSBleHRlbmRlZCB0byBpbXBsZW1lbnQgdmVyeSBzcGVjaWZpYwogaW50ZXJhY3Rpb24gYmVoYXZpb3VyIHdpdGggU01UUCBjbGllbnRzLgogCi1UaGUgY29kZSBzdXBwb3J0cyA6UkZDOmA1MzIxYCwgcGx1cyB0aGUgOnJmYzpgMTg3MGAgU0laRSBleHRlbnNpb24uCitUaGUgY29kZSBzdXBwb3J0cyA6UkZDOmA1MzIxYCwgcGx1cyB0aGUgOnJmYzpgMTg3MGAgU0laRSBhbmQgOnJmYzpgNjUzMWAKK1NNVFBVVEY4IGV4dGVuc2lvbnMuCiAKIAogU01UUFNlcnZlciBPYmplY3RzCkBAIC0yOCw3ICsyOSw3IEBACiAKIAogLi4gY2xhc3M6OiBTTVRQU2VydmVyKGxvY2FsYWRkciwgcmVtb3RlYWRkciwgZGF0YV9zaXplX2xpbWl0PTMzNTU0NDMyLFwKLSAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSkKKyAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1UcnVlKQogCiAgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBTTVRQU2VydmVyYCBvYmplY3QsIHdoaWNoIGJpbmRzIHRvIGxvY2FsIGFkZHJlc3MKICAgICpsb2NhbGFkZHIqLiAgSXQgd2lsbCB0cmVhdCAqcmVtb3RlYWRkciogYXMgYW4gdXBzdHJlYW0gU01UUCByZWxheWVyLiAgSXQKQEAgLTM5LDI1ICs0MCw3NyBAQAogICAgYWNjZXB0ZWQgaW4gYSBgYERBVEFgYCBjb21tYW5kLiAgQSB2YWx1ZSBvZiBgYE5vbmVgYCBvciBgYDBgYCBtZWFucyBubwogICAgbGltaXQuCiAKLSAgIEEgZGljdGlvbmFyeSBjYW4gYmUgc3BlY2lmaWVkIGluICptYXAqIHRvIGF2b2lkIHVzaW5nIGEgZ2xvYmFsIHNvY2tldCBtYXAuCisgICAqbWFwKiBpcyB0aGUgc29ja2V0IG1hcCB0byB1c2UgZm9yIGNvbm5lY3Rpb25zIChhbiBpbml0aWFsbHkgZW1wdHkKKyAgIGRpY3Rpb25hcnkgaXMgYSBzdWl0YWJsZSB2YWx1ZSkuICBJZiBub3Qgc3BlY2lmaWVkIHRoZSA6bW9kOmBhc3luY29yZWAKKyAgIGdsb2JhbCBzb2NrZXQgbWFwIGlzIHVzZWQuCiAKLSAgIC4uIG1ldGhvZDo6IHByb2Nlc3NfbWVzc2FnZShwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSkKKyAgICplbmFibGVfU01UUFVURjgqIGRldGVybWlucyB3aGV0aGVyIHRoZSBgYFNNVFBVVEY4YGAgZXh0ZW5zaW9uIChhcyBkZWZpbmVkCisgICBpbiA6UkZDOmA2NTMxYCkgc2hvdWxkIGJlIGVuYWJsZWQuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuICBJZiBzZXQgdG8KKyAgIGBgVHJ1ZWBgLCAqZGVjb2RlX2RhdGEqIG11c3QgYmUgYGBGYWxzZWBgIChvdGhlcndpc2UgYW4gZXJyb3IgaXMgcmFpc2VkKS4KKyAgIFdoZW4gYGBUcnVlYGAsIGBgU01UUFVURjhgYCBpcyBhY2NlcHRlZCBhcyBhIHBhcmFtZXRlciB0byB0aGUgYGBNQUlMYGAKKyAgIGNvbW1hbmQgYW5kIHdoZW4gcHJlc2VudCBpcyBwYXNzZWQgdG8gOm1ldGg6YHByb2Nlc3NfbWVzc2FnZWAgaW4gdGhlCisgICBgYGt3YXJnc1snbWFpbF9vcHRpb25zJ11gYCBsaXN0LgogCi0gICAgICBSYWlzZSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBleGNlcHRpb24uIE92ZXJyaWRlIHRoaXMgaW4gc3ViY2xhc3NlcyB0bworICAgKmRlY29kZV9kYXRhKiBzcGVjaWZpZXMgd2hldGhlciB0aGUgZGF0YSBwb3J0aW9uIG9mIHRoZSBTTVRQIHRyYW5zYWN0aW9uCisgICBzaG91bGQgYmUgZGVjb2RlZCB1c2luZyBVVEYtOC4gIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgIGZvciBiYWNrd2FyZAorICAgY29tcGF0aWJpbGl0eSByZWFzb25zLCBidXQgd2lsbCBjaGFuZ2UgdG8gYGBGYWxzZWBgIGluIFB5dGhvbiAzLjY7IHNwZWNpZnkKKyAgIHRoZSBrZXl3b3JkIHZhbHVlIGV4cGxpY2l0bHkgdG8gYXZvaWQgdGhlIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2AuICBXaGVuCisgICAqZGVjb2RlX2RhdGEqIGlzIHNldCB0byBgYEZhbHNlYGAgdGhlIHNlcnZlciBhZHZlcnRpc2VzIHRoZSBgYDhCSVRNSU1FYGAKKyAgIGV4dGVuc2lvbiAoOnJmYzpgNjE1MmApLCBhY2NlcHRzIHRoZSBgYEJPRFk9OEJJVE1JTUVgYCBwYXJhbWV0ZXIgdG8KKyAgIHRoZSBgYE1BSUxgYCBjb21tYW5kLCBhbmQgd2hlbiBwcmVzZW50IHBhc3NlcyBpdCB0byA6bWV0aDpgcHJvY2Vzc19tZXNzYWdlYAorICAgaW4gdGhlIGBga3dhcmdzWydtYWlsX29wdGlvbnMnXWBgIGxpc3QuCisKKyAgIC4uIG1ldGhvZDo6IHByb2Nlc3NfbWVzc2FnZShwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSwgKiprd2FyZ3MpCisKKyAgICAgIFJhaXNlIGEgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgZXhjZXB0aW9uLiBPdmVycmlkZSB0aGlzIGluIHN1YmNsYXNzZXMgdG8KICAgICAgIGRvIHNvbWV0aGluZyB1c2VmdWwgd2l0aCB0aGlzIG1lc3NhZ2UuIFdoYXRldmVyIHdhcyBwYXNzZWQgaW4gdGhlCiAgICAgICBjb25zdHJ1Y3RvciBhcyAqcmVtb3RlYWRkciogd2lsbCBiZSBhdmFpbGFibGUgYXMgdGhlIDphdHRyOmBfcmVtb3RlYWRkcmAKICAgICAgIGF0dHJpYnV0ZS4gKnBlZXIqIGlzIHRoZSByZW1vdGUgaG9zdCdzIGFkZHJlc3MsICptYWlsZnJvbSogaXMgdGhlIGVudmVsb3BlCiAgICAgICBvcmlnaW5hdG9yLCAqcmNwdHRvcyogYXJlIHRoZSBlbnZlbG9wZSByZWNpcGllbnRzIGFuZCAqZGF0YSogaXMgYSBzdHJpbmcKLSAgICAgIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBlLW1haWwgKHdoaWNoIHNob3VsZCBiZSBpbiA6cmZjOmAyODIyYAorICAgICAgY29udGFpbmluZyB0aGUgY29udGVudHMgb2YgdGhlIGUtbWFpbCAod2hpY2ggc2hvdWxkIGJlIGluIDpyZmM6YDUzMjFgCiAgICAgICBmb3JtYXQpLgogCisgICAgICBJZiB0aGUgKmRlY29kZV9kYXRhKiBjb25zdHJ1Y3RvciBrZXl3b3JkIGlzIHNldCB0byBgYFRydWVgYCwgdGhlICpkYXRhKgorICAgICAgYXJndW1lbnQgd2lsbCBiZSBhIHVuaWNvZGUgc3RyaW5nLiAgSWYgaXQgaXMgc2V0IHRvIGBgRmFsc2VgYCwgaXQKKyAgICAgIHdpbGwgYmUgYSBieXRlcyBvYmplY3QuCisKKyAgICAgICprd2FyZ3MqIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uIEl0IGlzIGVtcHR5CisgICAgICB1bmxlc3MgYXQgbGVhc3Qgb25lIG9mIGBgZGVjb2RlX2RhdGE9RmFsc2VgYCBvciBgYGVuYWJsZV9TTVRQVVRGOD1UcnVlYGAKKyAgICAgIHdhcyBnaXZlbiBhcyBhbiBpbml0IHBhcmFtZXRlciwgaW4gd2hpY2ggY2FzZSBpdCBjb250YWlucyB0aGUgZm9sbG93aW5nCisgICAgICBrZXlzOgorCisgICAgICAgICAgKm1haWxfb3B0aW9ucyo6CisgICAgICAgICAgICAgYSBsaXN0IG9mIGFsbCByZWNlaXZlZCBwYXJhbWV0ZXJzIHRvIHRoZSBgYE1BSUxgYAorICAgICAgICAgICAgIGNvbW1hbmQgKHRoZSBlbGVtZW50cyBhcmUgdXBwZXJjYXNlIHN0cmluZ3M7IGV4YW1wbGU6CisgICAgICAgICAgICAgYGBbJ0JPRFk9OEJJVE1JTUUnLCAnU01UUFVURjgnXWBgKS4KKworICAgICAgICAgICpyY3B0X29wdGlvbnMqOgorICAgICAgICAgICAgIHNhbWUgYXMgKm1haWxfb3B0aW9ucyogYnV0IGZvciB0aGUgYGBSQ1BUYGAgY29tbWFuZC4KKyAgICAgICAgICAgICBDdXJyZW50bHkgbm8gYGBSQ1BUIFRPYGAgb3B0aW9ucyBhcmUgc3VwcG9ydGVkLCBzbyBmb3Igbm93CisgICAgICAgICAgICAgdGhpcyB3aWxsIGFsd2F5cyBiZSBhbiBlbXB0eSBsaXN0LgorCisgICAgICBJbXBsZW1lbnRhdGlvbnMgb2YgYGBwcm9jZXNzX21lc3NhZ2VgYCBzaG91bGQgdXNlIHRoZSBgYCoqa3dhcmdzYGAKKyAgICAgIHNpZ25hdHVyZSB0byBhY2NlcHQgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzLCBzaW5jZSBmdXR1cmUgZmVhdHVyZQorICAgICAgZW5oYW5jZW1lbnRzIG1heSBhZGQga2V5cyB0byB0aGUga3dhcmdzIGRpY3Rpb25hcnkuCisKKyAgICAgIFJldHVybiBgYE5vbmVgYCB0byByZXF1ZXN0IGEgbm9ybWFsIGBgMjUwIE9rYGAgcmVzcG9uc2U7IG90aGVyd2lzZQorICAgICAgcmV0dXJuIHRoZSBkZXNpcmVkIHJlc3BvbnNlIHN0cmluZyBpbiA6UkZDOmA1MzIxYCBmb3JtYXQuCisKICAgIC4uIGF0dHJpYnV0ZTo6IGNoYW5uZWxfY2xhc3MKIAogICAgICAgT3ZlcnJpZGUgdGhpcyBpbiBzdWJjbGFzc2VzIHRvIHVzZSBhIGN1c3RvbSA6Y2xhc3M6YFNNVFBDaGFubmVsYCBmb3IKICAgICAgIG1hbmFnaW5nIFNNVFAgY2xpZW50cy4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKLSAgICAgIFRoZSAqbWFwKiBhcmd1bWVudCB3YXMgYWRkZWQuCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKyAgICAgIFRoZSAqbWFwKiBjb25zdHJ1Y3RvciBhcmd1bWVudC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICpsb2NhbGFkZHIqIGFuZCAqcmVtb3RlYWRkciogbWF5IG5vdyBjb250YWluIElQdjYgYWRkcmVzc2VzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIHRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBjb25zdHJ1Y3RvciBhcmd1bWVudHMsIGFuZCB0aGUKKyAgICAgICprd2FyZ3MqIGFyZ3VtZW50IHRvIDptZXRoOmBwcm9jZXNzX21lc3NhZ2VgIHdoZW4gb25lIG9yIG1vcmUgb2YgdGhlc2UgaXMKKyAgICAgIHNwZWNpZmllZC4KIAogCiBEZWJ1Z2dpbmdTZXJ2ZXIgT2JqZWN0cwpAQCAtOTcsNyArMTUwLDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLi4gY2xhc3M6OiBTTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRhdGFfc2l6ZV9saW1pdD0zMzU1NDQzMixcCi0gICAgICAgICAgICAgICAgICAgICAgIG1hcD1Ob25lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9VHJ1ZSkKIAogICAgQ3JlYXRlIGEgbmV3IDpjbGFzczpgU01UUENoYW5uZWxgIG9iamVjdCB3aGljaCBtYW5hZ2VzIHRoZSBjb21tdW5pY2F0aW9uCiAgICBiZXR3ZWVuIHRoZSBzZXJ2ZXIgYW5kIGEgc2luZ2xlIFNNVFAgY2xpZW50LgpAQCAtMTA4LDExICsxNjEsMjQgQEAKICAgIGFjY2VwdGVkIGluIGEgYGBEQVRBYGAgY29tbWFuZC4gIEEgdmFsdWUgb2YgYGBOb25lYGAgb3IgYGAwYGAgbWVhbnMgbm8KICAgIGxpbWl0LgogCisgICAqZW5hYmxlX1NNVFBVVEY4KiBkZXRlcm1pbnMgd2hldGhlciB0aGUgYGBTTVRQVVRGOGBgIGV4dGVuc2lvbiAoYXMgZGVmaW5lZAorICAgaW4gOlJGQzpgNjUzMWApIHNob3VsZCBiZSBlbmFibGVkLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLiAgQQorICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIGJvdGggKmVuYWJsZV9TTVRQVVRGOCogYW5kICpkZWNvZGVfZGF0YSogYXJlCisgICBzZXQgdG8gYGBUcnVlYGAgYXQgdGhlIHNhbWUgdGltZS4KKwogICAgQSBkaWN0aW9uYXJ5IGNhbiBiZSBzcGVjaWZpZWQgaW4gKm1hcCogdG8gYXZvaWQgdXNpbmcgYSBnbG9iYWwgc29ja2V0IG1hcC4KIAorICAgKmRlY29kZV9kYXRhKiBzcGVjaWZpZXMgd2hldGhlciB0aGUgZGF0YSBwb3J0aW9uIG9mIHRoZSBTTVRQIHRyYW5zYWN0aW9uCisgICBzaG91bGQgYmUgZGVjb2RlZCB1c2luZyBVVEYtOC4gIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgIGZvciBiYWNrd2FyZAorICAgY29tcGF0aWJpbGl0eSByZWFzb25zLCBidXQgd2lsbCBjaGFuZ2UgdG8gYGBGYWxzZWBgIGluIFB5dGhvbiAzLjYuICBTcGVjaWZ5CisgICB0aGUga2V5d29yZCB2YWx1ZSBleHBsaWNpdGx5IHRvIGF2b2lkIHRoZSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgLgorCiAgICBUbyB1c2UgYSBjdXN0b20gU01UUENoYW5uZWwgaW1wbGVtZW50YXRpb24geW91IG5lZWQgdG8gb3ZlcnJpZGUgdGhlCiAgICA6YXR0cjpgU01UUFNlcnZlci5jaGFubmVsX2NsYXNzYCBvZiB5b3VyIDpjbGFzczpgU01UUFNlcnZlcmAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICB0aGUgKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCogYXJndW1lbnRzIHdlcmUgYWRkZWQuCisKICAgIFRoZSA6Y2xhc3M6YFNNVFBDaGFubmVsYCBoYXMgdGhlIGZvbGxvd2luZyBpbnN0YW5jZSB2YXJpYWJsZXM6CiAKICAgIC4uIGF0dHJpYnV0ZTo6IHNtdHBfc2VydmVyCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdCBiL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CmluZGV4IGI4N2FkNWYuLjhjYmQyMGQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CkBAIC02MSw2ICs2MSwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIHNvdXJjZV9hZGRyZXNzIGFyZ3VtZW50IHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAgICBUaGUgU01UUFVURjggZXh0ZW5zaW9uICg6cmZjOmA2NTMxYCkgaXMgbm93IHN1cHBvcnRlZC4KKworCiAuLiBjbGFzczo6IFNNVFBfU1NMKGhvc3Q9JycsIHBvcnQ9MCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSwga2V5ZmlsZT1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPU5vbmUgWywgdGltZW91dF0sIGNvbnRleHQ9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lKQpAQCAtMTYxLDYgKzE2NSwxMyBAQAogICAgVGhlIHNlcnZlciByZWZ1c2VkIG91ciBgYEhFTE9gYCBtZXNzYWdlLgogCiAKKy4uIGV4Y2VwdGlvbjo6IFNNVFBOb3RTdXBwb3J0ZWRFcnJvcgorCisgICAgVGhlIGNvbW1hbmQgb3Igb3B0aW9uIGF0dGVtcHRlZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBleGNlcHRpb246OiBTTVRQQXV0aGVudGljYXRpb25FcnJvcgogCiAgICBTTVRQIGF1dGhlbnRpY2F0aW9uIHdlbnQgd3JvbmcuICBNb3N0IHByb2JhYmx5IHRoZSBzZXJ2ZXIgZGlkbid0IGFjY2VwdCB0aGUKQEAgLTE4OSw4ICsyMDAsMTIgQEAKIAogLi4gbWV0aG9kOjogU01UUC5zZXRfZGVidWdsZXZlbChsZXZlbCkKIAotICAgU2V0IHRoZSBkZWJ1ZyBvdXRwdXQgbGV2ZWwuICBBIHRydWUgdmFsdWUgZm9yICpsZXZlbCogcmVzdWx0cyBpbiBkZWJ1ZyBtZXNzYWdlcwotICAgZm9yIGNvbm5lY3Rpb24gYW5kIGZvciBhbGwgbWVzc2FnZXMgc2VudCB0byBhbmQgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyLgorICAgU2V0IHRoZSBkZWJ1ZyBvdXRwdXQgbGV2ZWwuICBBIHZhbHVlIG9mIDEgb3IgYGBUcnVlYGAgZm9yICpsZXZlbCogcmVzdWx0cyBpbgorICAgZGVidWcgbWVzc2FnZXMgZm9yIGNvbm5lY3Rpb24gYW5kIGZvciBhbGwgbWVzc2FnZXMgc2VudCB0byBhbmQgcmVjZWl2ZWQgZnJvbQorICAgdGhlIHNlcnZlci4gIEEgdmFsdWUgb2YgMiBmb3IgKmxldmVsKiByZXN1bHRzIGluIHRoZXNlIG1lc3NhZ2VzIGJlaW5nCisgICB0aW1lc3RhbXBlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUgQWRkZWQgZGVidWdsZXZlbCAyLgogCiAKIC4uIG1ldGhvZDo6IFNNVFAuZG9jbWQoY21kLCBhcmdzPScnKQpAQCAtMjQwLDggKzI1NSw3IEBACiAgICB0aGUgc2VydmVyIGlzIHN0b3JlZCBhcyB0aGUgOmF0dHI6YGVobG9fcmVzcGAgYXR0cmlidXRlLCA6YXR0cjpgZG9lc19lc210cGAKICAgIGlzIHNldCB0byB0cnVlIG9yIGZhbHNlIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBzZXJ2ZXIgc3VwcG9ydHMgRVNNVFAsIGFuZAogICAgOmF0dHI6YGVzbXRwX2ZlYXR1cmVzYCB3aWxsIGJlIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUKLSAgIFNNVFAgc2VydmljZSBleHRlbnNpb25zIHRoaXMgc2VydmVyIHN1cHBvcnRzLCBhbmQgdGhlaXIKLSAgIHBhcmFtZXRlcnMgKGlmIGFueSkuCisgICBTTVRQIHNlcnZpY2UgZXh0ZW5zaW9ucyB0aGlzIHNlcnZlciBzdXBwb3J0cywgYW5kIHRoZWlyIHBhcmFtZXRlcnMgKGlmIGFueSkuCiAKICAgIFVubGVzcyB5b3Ugd2lzaCB0byB1c2UgOm1ldGg6YGhhc19leHRuYCBiZWZvcmUgc2VuZGluZyBtYWlsLCBpdCBzaG91bGQgbm90IGJlCiAgICBuZWNlc3NhcnkgdG8gY2FsbCB0aGlzIG1ldGhvZCBleHBsaWNpdGx5LiAgSXQgd2lsbCBiZSBpbXBsaWNpdGx5IGNhbGxlZCBieQpAQCAtMjc0LDcgKzI4OCw3IEBACiAgICAgICBNYW55IHNpdGVzIGRpc2FibGUgU01UUCBgYFZSRllgYCBpbiBvcmRlciB0byBmb2lsIHNwYW1tZXJzLgogCiAKLS4uIG1ldGhvZDo6IFNNVFAubG9naW4odXNlciwgcGFzc3dvcmQpCisuLiBtZXRob2Q6OiBTTVRQLmxvZ2luKHVzZXIsIHBhc3N3b3JkLCAqLCBpbml0aWFsX3Jlc3BvbnNlX29rPVRydWUpCiAKICAgIExvZyBpbiBvbiBhbiBTTVRQIHNlcnZlciB0aGF0IHJlcXVpcmVzIGF1dGhlbnRpY2F0aW9uLiBUaGUgYXJndW1lbnRzIGFyZSB0aGUKICAgIHVzZXJuYW1lIGFuZCB0aGUgcGFzc3dvcmQgdG8gYXV0aGVudGljYXRlIHdpdGguIElmIHRoZXJlIGhhcyBiZWVuIG5vIHByZXZpb3VzCkBAIC0yODgsOSArMzAyLDY4IEBACiAgICA6ZXhjOmBTTVRQQXV0aGVudGljYXRpb25FcnJvcmAKICAgICAgIFRoZSBzZXJ2ZXIgZGlkbid0IGFjY2VwdCB0aGUgdXNlcm5hbWUvcGFzc3dvcmQgY29tYmluYXRpb24uCiAKKyAgIDpleGM6YFNNVFBOb3RTdXBwb3J0ZWRFcnJvcmAKKyAgICAgIFRoZSBgYEFVVEhgYCBjb21tYW5kIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZlci4KKwogICAgOmV4YzpgU01UUEV4Y2VwdGlvbmAKICAgICAgIE5vIHN1aXRhYmxlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB3YXMgZm91bmQuCiAKKyAgIEVhY2ggb2YgdGhlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgc3VwcG9ydGVkIGJ5IDptb2Q6YHNtdHBsaWJgIGFyZSB0cmllZCBpbgorICAgdHVybiBpZiB0aGV5IGFyZSBhZHZlcnRpc2VkIGFzIHN1cHBvcnRlZCBieSB0aGUgc2VydmVyLiAgU2VlIDptZXRoOmBhdXRoYAorICAgZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgYXV0aGVudGljYXRpb24gbWV0aG9kcy4gICppbml0aWFsX3Jlc3BvbnNlX29rKiBpcworICAgcGFzc2VkIHRocm91Z2ggdG8gOm1ldGg6YGF1dGhgLgorCisgICBPcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50ICppbml0aWFsX3Jlc3BvbnNlX29rKiBzcGVjaWZpZXMgd2hldGhlciwgZm9yCisgICBhdXRoZW50aWNhdGlvbiBtZXRob2RzIHRoYXQgc3VwcG9ydCBpdCwgYW4gImluaXRpYWwgcmVzcG9uc2UiIGFzIHNwZWNpZmllZAorICAgaW4gOnJmYzpgNDk1NGAgY2FuIGJlIHNlbnQgYWxvbmcgd2l0aCB0aGUgYGBBVVRIYGAgY29tbWFuZCwgcmF0aGVyIHRoYW4KKyAgIHJlcXVpcmluZyBhIGNoYWxsZW5nZS9yZXNwb25zZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIDpleGM6YFNNVFBOb3RTdXBwb3J0ZWRFcnJvcmAgbWF5IGJlIHJhaXNlZCwgYW5kIHRoZQorICAgICAgKmluaXRpYWxfcmVzcG9uc2Vfb2sqIHBhcmFtZXRlciB3YXMgYWRkZWQuCisKKworLi4gbWV0aG9kOjogU01UUC5hdXRoKG1lY2hhbmlzbSwgYXV0aG9iamVjdCwgKiwgaW5pdGlhbF9yZXNwb25zZV9vaz1UcnVlKQorCisgICBJc3N1ZSBhbiBgYFNNVFBgYCBgYEFVVEhgYCBjb21tYW5kIGZvciB0aGUgc3BlY2lmaWVkIGF1dGhlbnRpY2F0aW9uCisgICAqbWVjaGFuaXNtKiwgYW5kIGhhbmRsZSB0aGUgY2hhbGxlbmdlIHJlc3BvbnNlIHZpYSAqYXV0aG9iamVjdCouCisKKyAgICptZWNoYW5pc20qIHNwZWNpZmllcyB3aGljaCBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20gaXMgdG8KKyAgIGJlIHVzZWQgYXMgYXJndW1lbnQgdG8gdGhlIGBgQVVUSGBgIGNvbW1hbmQ7IHRoZSB2YWxpZCB2YWx1ZXMgYXJlCisgICB0aG9zZSBsaXN0ZWQgaW4gdGhlIGBgYXV0aGBgIGVsZW1lbnQgb2YgOmF0dHI6YGVzbXRwX2ZlYXR1cmVzYC4KKworICAgKmF1dGhvYmplY3QqIG11c3QgYmUgYSBjYWxsYWJsZSBvYmplY3QgdGFraW5nIGFuIG9wdGlvbmFsIHNpbmdsZSBhcmd1bWVudDoKKworICAgICBkYXRhID0gYXV0aG9iamVjdChjaGFsbGVuZ2U9Tm9uZSkKKworICAgSWYgb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudCAqaW5pdGlhbF9yZXNwb25zZV9vayogaXMgdHJ1ZSwKKyAgIGBgYXV0aG9iamVjdCgpYGAgd2lsbCBiZSBjYWxsZWQgZmlyc3Qgd2l0aCBubyBhcmd1bWVudC4gIEl0IGNhbiByZXR1cm4gdGhlCisgICA6cmZjOmA0OTU0YCAiaW5pdGlhbCByZXNwb25zZSIgYnl0ZXMgd2hpY2ggd2lsbCBiZSBlbmNvZGVkIGFuZCBzZW50IHdpdGgKKyAgIHRoZSBgYEFVVEhgYCBjb21tYW5kIGFzIGJlbG93LiAgSWYgdGhlIGBgYXV0aG9iamVjdCgpYGAgZG9lcyBub3Qgc3VwcG9ydCBhbgorICAgaW5pdGlhbCByZXNwb25zZSAoZS5nLiBiZWNhdXNlIGl0IHJlcXVpcmVzIGEgY2hhbGxlbmdlKSwgaXQgc2hvdWxkIHJldHVybgorICAgTm9uZSB3aGVuIGNhbGxlZCB3aXRoIGBgY2hhbGxlbmdlPU5vbmVgYC4gIElmICppbml0aWFsX3Jlc3BvbnNlX29rKiBpcworICAgZmFsc2UsIHRoZW4gYGBhdXRob2JqZWN0KClgYCB3aWxsIG5vdCBiZSBjYWxsZWQgZmlyc3Qgd2l0aCBOb25lLgorCisgICBJZiB0aGUgaW5pdGlhbCByZXNwb25zZSBjaGVjayByZXR1cm5zIE5vbmUsIG9yIGlmICppbml0aWFsX3Jlc3BvbnNlX29rKiBpcworICAgZmFsc2UsIGBgYXV0aG9iamVjdCgpYGAgd2lsbCBiZSBjYWxsZWQgdG8gcHJvY2VzcyB0aGUgc2VydmVyJ3MgY2hhbGxlbmdlCisgICByZXNwb25zZTsgdGhlICpjaGFsbGVuZ2UqIGFyZ3VtZW50IGl0IGlzIHBhc3NlZCB3aWxsIGJlIGEgYGBieXRlc2BgLiAgSXQKKyAgIHNob3VsZCByZXR1cm4gYGBieXRlc2BgICpkYXRhKiB0aGF0IHdpbGwgYmUgYmFzZTY0IGVuY29kZWQgYW5kIHNlbnQgdG8gdGhlCisgICBzZXJ2ZXIuCisKKyAgIFRoZSBgYFNNVFBgYCBjbGFzcyBwcm92aWRlcyBgYGF1dGhvYmplY3RzYGAgZm9yIHRoZSBgYENSQU0tTUQ1YGAsIGBgUExBSU5gYCwKKyAgIGFuZCBgYExPR0lOYGAgbWVjaGFuaXNtczsgdGhleSBhcmUgbmFtZWQgYGBTTVRQLmF1dGhfY3JhbV9tZDVgYCwKKyAgIGBgU01UUC5hdXRoX3BsYWluYGAsIGFuZCBgYFNNVFAuYXV0aF9sb2dpbmBgIHJlc3BlY3RpdmVseS4gIFRoZXkgYWxsIHJlcXVpcmUKKyAgIHRoYXQgdGhlIGBgdXNlcmBgIGFuZCBgYHBhc3N3b3JkYGAgcHJvcGVydGllcyBvZiB0aGUgYGBTTVRQYGAgaW5zdGFuY2UgYXJlCisgICBzZXQgdG8gYXBwcm9wcmlhdGUgdmFsdWVzLgorCisgICBVc2VyIGNvZGUgZG9lcyBub3Qgbm9ybWFsbHkgbmVlZCB0byBjYWxsIGBgYXV0aGBgIGRpcmVjdGx5LCBidXQgY2FuIGluc3RlYWQKKyAgIGNhbGwgdGhlIDptZXRoOmBsb2dpbmAgbWV0aG9kLCB3aGljaCB3aWxsIHRyeSBlYWNoIG9mIHRoZSBhYm92ZSBtZWNoYW5pc21zCisgICBpbiB0dXJuLCBpbiB0aGUgb3JkZXIgbGlzdGVkLiAgYGBhdXRoYGAgaXMgZXhwb3NlZCB0byBmYWNpbGl0YXRlIHRoZQorICAgaW1wbGVtZW50YXRpb24gb2YgYXV0aGVudGljYXRpb24gbWV0aG9kcyBub3QgKG9yIG5vdCB5ZXQpIHN1cHBvcnRlZAorICAgZGlyZWN0bHkgYnkgOm1vZDpgc210cGxpYmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAKIC4uIG1ldGhvZDo6IFNNVFAuc3RhcnR0bHMoa2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLCBjb250ZXh0PU5vbmUpCiAKQEAgLTMxMCw3ICszODMsNyBAQAogICAgOmV4YzpgU01UUEhlbG9FcnJvcmAKICAgICAgIFRoZSBzZXJ2ZXIgZGlkbid0IHJlcGx5IHByb3Blcmx5IHRvIHRoZSBgYEhFTE9gYCBncmVldGluZy4KIAotICAgOmV4YzpgU01UUEV4Y2VwdGlvbmAKKyAgIDpleGM6YFNNVFBOb3RTdXBwb3J0ZWRFcnJvcmAKICAgICAgVGhlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBTVEFSVFRMUyBleHRlbnNpb24uCiAKICAgIDpleGM6YFJ1bnRpbWVFcnJvcmAKQEAgLTMyNCw2ICszOTcsMTEgQEAKICAgICAgIDphdHRyOmBTU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhbmQgKlNlcnZlciBOYW1lIEluZGljYXRvciogKHNlZQogICAgICAgOmRhdGE6YH5zc2wuSEFTX1NOSWApLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGVycm9yIHJhaXNlZCBmb3IgbGFjayBvZiBTVEFSVFRMUyBzdXBwb3J0IGlzIG5vdyB0aGUKKyAgICAgIDpleGM6YFNNVFBOb3RTdXBwb3J0ZWRFcnJvcmAgc3ViY2xhc3MgaW5zdGVhZCBvZiB0aGUgYmFzZQorICAgICAgOmV4YzpgU01UUEV4Y2VwdGlvbmAuCisKIAogLi4gbWV0aG9kOjogU01UUC5zZW5kbWFpbChmcm9tX2FkZHIsIHRvX2FkZHJzLCBtc2csIG1haWxfb3B0aW9ucz1bXSwgcmNwdF9vcHRpb25zPVtdKQogCkBAIC0zNjAsNiArNDM4LDkgQEAKICAgIHJlY2lwaWVudCB0aGF0IHdhcyByZWZ1c2VkLiAgRWFjaCBlbnRyeSBjb250YWlucyBhIHR1cGxlIG9mIHRoZSBTTVRQIGVycm9yIGNvZGUKICAgIGFuZCB0aGUgYWNjb21wYW55aW5nIGVycm9yIG1lc3NhZ2Ugc2VudCBieSB0aGUgc2VydmVyLgogCisgICBJZiBgYFNNVFBVVEY4YGAgaXMgaW5jbHVkZWQgaW4gKm1haWxfb3B0aW9ucyosIGFuZCB0aGUgc2VydmVyIHN1cHBvcnRzIGl0LAorICAgKmZyb21fYWRkciogYW5kICp0b19hZGRyKiBtYXkgY29udGFpbiBub24tQVNDSUkgY2hhcmFjdGVycy4KKwogICAgVGhpcyBtZXRob2QgbWF5IHJhaXNlIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uczoKIAogICAgOmV4YzpgU01UUFJlY2lwaWVudHNSZWZ1c2VkYApAQCAtMzc4LDEyICs0NTksMjAgQEAKICAgICAgIFRoZSBzZXJ2ZXIgcmVwbGllZCB3aXRoIGFuIHVuZXhwZWN0ZWQgZXJyb3IgY29kZSAob3RoZXIgdGhhbiBhIHJlZnVzYWwgb2YgYQogICAgICAgcmVjaXBpZW50KS4KIAorICAgOmV4YzpgU01UUE5vdFN1cHBvcnRlZEVycm9yYAorICAgICAgYGBTTVRQVVRGOGBgIHdhcyBnaXZlbiBpbiB0aGUgKm1haWxfb3B0aW9ucyogYnV0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlCisgICAgICBzZXJ2ZXIuCisKICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRoZSBjb25uZWN0aW9uIHdpbGwgYmUgb3BlbiBldmVuIGFmdGVyIGFuIGV4Y2VwdGlvbiBpcwogICAgcmFpc2VkLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgKm1zZyogbWF5IGJlIGEgYnl0ZSBzdHJpbmcuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBgYFNNVFBVVEY4YGAgc3VwcG9ydCBhZGRlZCwgYW5kIDpleGM6YFNNVFBOb3RTdXBwb3J0ZWRFcnJvcmAgbWF5IGJlCisgICAgICByYWlzZWQgaWYgYGBTTVRQVVRGOGBgIGlzIHNwZWNpZmllZCBidXQgdGhlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IGl0LgorCiAKIC4uIG1ldGhvZDo6IFNNVFAuc2VuZF9tZXNzYWdlKG1zZywgZnJvbV9hZGRyPU5vbmUsIHRvX2FkZHJzPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxfb3B0aW9ucz1bXSwgcmNwdF9vcHRpb25zPVtdKQpAQCAtMzk1LDcgKzQ4NCw3IEBACiAKICAgIElmICpmcm9tX2FkZHIqIGlzIGBgTm9uZWBgIG9yICp0b19hZGRycyogaXMgYGBOb25lYGAsIGBgc2VuZF9tZXNzYWdlYGAgZmlsbHMKICAgIHRob3NlIGFyZ3VtZW50cyB3aXRoIGFkZHJlc3NlcyBleHRyYWN0ZWQgZnJvbSB0aGUgaGVhZGVycyBvZiAqbXNnKiBhcwotICAgc3BlY2lmaWVkIGluIDpyZmM6YDI4MjJgXDogKmZyb21fYWRkciogaXMgc2V0IHRvIHRoZSA6bWFpbGhlYWRlcjpgU2VuZGVyYAorICAgc3BlY2lmaWVkIGluIDpyZmM6YDUzMjJgXDogKmZyb21fYWRkciogaXMgc2V0IHRvIHRoZSA6bWFpbGhlYWRlcjpgU2VuZGVyYAogICAgZmllbGQgaWYgaXQgaXMgcHJlc2VudCwgYW5kIG90aGVyd2lzZSB0byB0aGUgOm1haWxoZWFkZXI6YEZyb21gIGZpZWxkLgogICAgKnRvX2FkcmVzc2VzKiBjb21iaW5lcyB0aGUgdmFsdWVzIChpZiBhbnkpIG9mIHRoZSA6bWFpbGhlYWRlcjpgVG9gLAogICAgOm1haWxoZWFkZXI6YENjYCwgYW5kIDptYWlsaGVhZGVyOmBCY2NgIGZpZWxkcyBmcm9tICptc2cqLiAgSWYgZXhhY3RseSBvbmUKQEAgLTQxMCwxMCArNDk5LDE4IEBACiAgICBjYWxscyA6bWV0aDpgc2VuZG1haWxgIHRvIHRyYW5zbWl0IHRoZSByZXN1bHRpbmcgbWVzc2FnZS4gIFJlZ2FyZGxlc3Mgb2YgdGhlCiAgICB2YWx1ZXMgb2YgKmZyb21fYWRkciogYW5kICp0b19hZGRycyosIGBgc2VuZF9tZXNzYWdlYGAgZG9lcyBub3QgdHJhbnNtaXQgYW55CiAgICA6bWFpbGhlYWRlcjpgQmNjYCBvciA6bWFpbGhlYWRlcjpgUmVzZW50LUJjY2AgaGVhZGVycyB0aGF0IG1heSBhcHBlYXIKLSAgIGluICptc2cqLgorICAgaW4gKm1zZyouICBJZiBhbnkgb2YgdGhlIGFkZHJlc3NlcyBpbiAqZnJvbV9hZGRyKiBhbmQgKnRvX2FkZHJzKiBjb250YWluCisgICBub24tQVNDSUkgY2hhcmFjdGVycyBhbmQgdGhlIHNlcnZlciBkb2VzIG5vdCBhZHZlcnRpc2UgYGBTTVRQVVRGOGBgIHN1cHBvcnQsCisgICBhbiA6ZXhjOmBTTVRQTm90U3VwcG9ydGVkYCBlcnJvciBpcyByYWlzZWQuICBPdGhlcndpc2UgdGhlIGBgTWVzc2FnZWBgIGlzCisgICBzZXJpYWxpemVkIHdpdGggYSBjbG9uZSBvZiBpdHMgOm1vZDpgfmVtYWlsLnBvbGljeWAgd2l0aCB0aGUKKyAgIDphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5LnV0ZjhgIGF0dHJpYnV0ZSBzZXQgdG8gYGBUcnVlYGAsIGFuZAorICAgYGBTTVRQVVRGOGBgIGFuZCBgYEJPRFk9OEJJVE1JTUVgYCBhcmUgYWRkZWQgdG8gKm1haWxfb3B0aW9ucyouCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIFN1cHBvcnQgZm9yIGludGVybmF0aW9uYWxpemVkIGFkZHJlc3NlcyAoYGBTTVRQVVRGOGBgKS4KKwogCiAuLiBtZXRob2Q6OiBTTVRQLnF1aXQoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zbmRoZHIucnN0IGIvRG9jL2xpYnJhcnkvc25kaGRyLnJzdAppbmRleCBmMzZkZjY4Li5mOGI1ZDhiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zbmRoZHIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NuZGhkci5yc3QKQEAgLTE2LDggKzE2LDkgQEAKIAogVGhlIDptb2Q6YHNuZGhkcmAgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgd2hpY2ggYXR0ZW1wdCB0byBkZXRlcm1pbmUgdGhlIHR5cGUKIG9mIHNvdW5kIGRhdGEgd2hpY2ggaXMgaW4gYSBmaWxlLiAgV2hlbiB0aGVzZSBmdW5jdGlvbnMgYXJlIGFibGUgdG8gZGV0ZXJtaW5lCi13aGF0IHR5cGUgb2Ygc291bmQgZGF0YSBpcyBzdG9yZWQgaW4gYSBmaWxlLCB0aGV5IHJldHVybiBhIHR1cGxlIGBgKHR5cGUsCi1zYW1wbGluZ19yYXRlLCBjaGFubmVscywgZnJhbWVzLCBiaXRzX3Blcl9zYW1wbGUpYGAuICBUaGUgdmFsdWUgZm9yICp0eXBlKgord2hhdCB0eXBlIG9mIHNvdW5kIGRhdGEgaXMgc3RvcmVkIGluIGEgZmlsZSwgdGhleSByZXR1cm4gYQorOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYCwgY29udGFpbmluZyBmaXZlIGF0dHJpYnV0ZXM6IChgYGZpbGV0eXBlYGAsCitgYGZyYW1lcmF0ZWBgLCBgYG5jaGFubmVsc2BgLCBgYG5mcmFtZXNgYCwgYGBzYW1wd2lkdGhgYCkuIFRoZSB2YWx1ZSBmb3IgKnR5cGUqCiBpbmRpY2F0ZXMgdGhlIGRhdGEgdHlwZSBhbmQgd2lsbCBiZSBvbmUgb2YgdGhlIHN0cmluZ3MgYGAnYWlmYydgYCwgYGAnYWlmZidgYCwKIGBgJ2F1J2BgLCBgYCdoY29tJ2BgLCBgYCdzbmRyJ2BgLCBgYCdzbmR0J2BgLCBgYCd2b2MnYGAsIGBgJ3dhdidgYCwgYGAnOHN2eCdgYCwKIGBgJ3NiJ2BgLCBgYCd1YidgYCwgb3IgYGAndWwnYGAuICBUaGUgKnNhbXBsaW5nX3JhdGUqIHdpbGwgYmUgZWl0aGVyIHRoZSBhY3R1YWwKQEAgLTMxLDEzICszMiwxOSBAQAogLi4gZnVuY3Rpb246OiB3aGF0KGZpbGVuYW1lKQogCiAgICBEZXRlcm1pbmVzIHRoZSB0eXBlIG9mIHNvdW5kIGRhdGEgc3RvcmVkIGluIHRoZSBmaWxlICpmaWxlbmFtZSogdXNpbmcKLSAgIDpmdW5jOmB3aGF0aGRyYC4gIElmIGl0IHN1Y2NlZWRzLCByZXR1cm5zIGEgdHVwbGUgYXMgZGVzY3JpYmVkIGFib3ZlLCBvdGhlcndpc2UKKyAgIDpmdW5jOmB3aGF0aGRyYC4gIElmIGl0IHN1Y2NlZWRzLCByZXR1cm5zIGEgbmFtZWR0dXBsZSBhcyBkZXNjcmliZWQgYWJvdmUsIG90aGVyd2lzZQogICAgYGBOb25lYGAgaXMgcmV0dXJuZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBSZXN1bHQgY2hhbmdlZCBmcm9tIGEgdHVwbGUgdG8gYSBuYW1lZHR1cGxlLgorCiAKIC4uIGZ1bmN0aW9uOjogd2hhdGhkcihmaWxlbmFtZSkKIAogICAgRGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiBzb3VuZCBkYXRhIHN0b3JlZCBpbiBhIGZpbGUgYmFzZWQgb24gdGhlIGZpbGUgIGhlYWRlci4KLSAgIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGlzIGdpdmVuIGJ5ICpmaWxlbmFtZSouICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSB0dXBsZSBhcworICAgVGhlIG5hbWUgb2YgdGhlIGZpbGUgaXMgZ2l2ZW4gYnkgKmZpbGVuYW1lKi4gIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIG5hbWVkdHVwbGUgYXMKICAgIGRlc2NyaWJlZCBhYm92ZSBvbiBzdWNjZXNzLCBvciBgYE5vbmVgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFJlc3VsdCBjaGFuZ2VkIGZyb20gYSB0dXBsZSB0byBhIG5hbWVkdHVwbGUuCisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QgYi9Eb2MvbGlicmFyeS9zb2NrZXQucnN0CmluZGV4IDg1NzdjM2MuLmEwODE3NTYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc29ja2V0LnJzdApAQCAtNDYsMTcgKzQ2LDIwIEBACiAtIFRoZSBhZGRyZXNzIG9mIGFuIDpjb25zdDpgQUZfVU5JWGAgc29ja2V0IGJvdW5kIHRvIGEgZmlsZSBzeXN0ZW0gbm9kZQogICBpcyByZXByZXNlbnRlZCBhcyBhIHN0cmluZywgdXNpbmcgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIGFuZCB0aGUKICAgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIgKHNlZSA6cGVwOmAzODNgKS4gIEFuIGFkZHJlc3MgaW4KLSAgTGludXgncyBhYnN0cmFjdCBuYW1lc3BhY2UgaXMgcmV0dXJuZWQgYXMgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3Qgd2l0aAorICBMaW51eCdzIGFic3RyYWN0IG5hbWVzcGFjZSBpcyByZXR1cm5lZCBhcyBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgd2l0aAogICBhbiBpbml0aWFsIG51bGwgYnl0ZTsgbm90ZSB0aGF0IHNvY2tldHMgaW4gdGhpcyBuYW1lc3BhY2UgY2FuCiAgIGNvbW11bmljYXRlIHdpdGggbm9ybWFsIGZpbGUgc3lzdGVtIHNvY2tldHMsIHNvIHByb2dyYW1zIGludGVuZGVkIHRvCiAgIHJ1biBvbiBMaW51eCBtYXkgbmVlZCB0byBkZWFsIHdpdGggYm90aCB0eXBlcyBvZiBhZGRyZXNzLiAgQSBzdHJpbmcgb3IKLSAgOmNsYXNzOmBieXRlc2Agb2JqZWN0IGNhbiBiZSB1c2VkIGZvciBlaXRoZXIgdHlwZSBvZiBhZGRyZXNzIHdoZW4KKyAgYnl0ZXMtbGlrZSBvYmplY3QgY2FuIGJlIHVzZWQgZm9yIGVpdGhlciB0eXBlIG9mIGFkZHJlc3Mgd2hlbgogICBwYXNzaW5nIGl0IGFzIGFuIGFyZ3VtZW50LgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgUHJldmlvdXNseSwgOmNvbnN0OmBBRl9VTklYYCBzb2NrZXQgcGF0aHMgd2VyZSBhc3N1bWVkIHRvIHVzZSBVVEYtOAogICAgICAgZW5jb2RpbmcuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOiAzLjUKKyAgICAgIFdyaXRhYmxlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgbm93IGFjY2VwdGVkLgorCiAtIEEgcGFpciBgYChob3N0LCBwb3J0KWBgIGlzIHVzZWQgZm9yIHRoZSA6Y29uc3Q6YEFGX0lORVRgIGFkZHJlc3MgZmFtaWx5LAogICB3aGVyZSAqaG9zdCogaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGVpdGhlciBhIGhvc3RuYW1lIGluIEludGVybmV0IGRvbWFpbgogICBub3RhdGlvbiBsaWtlIGBgJ2RhcmluZy5jd2kubmwnYGAgb3IgYW4gSVB2NCBhZGRyZXNzIGxpa2UgYGAnMTAwLjUwLjIwMC41J2BgLApAQCAtMjk4LDYgKzMwMSwxOCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorLi4gZGF0YTo6IENBTl9SQVdfRkRfRlJBTUVTCisKKyAgIEVuYWJsZXMgQ0FOIEZEIHN1cHBvcnQgaW4gYSBDQU5fUkFXIHNvY2tldC4gVGhpcyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgorICAgVGhpcyBhbGxvd3MgeW91ciBhcHBsaWNhdGlvbiB0byBzZW5kIGJvdGggQ0FOIGFuZCBDQU4gRkQgZnJhbWVzOyBob3dldmVyLAorICAgeW91IG9uZSBtdXN0IGFjY2VwdCBib3RoIENBTiBhbmQgQ0FOIEZEIGZyYW1lcyB3aGVuIHJlYWRpbmcgZnJvbSB0aGUgc29ja2V0LgorCisgICBUaGlzIGNvbnN0YW50IGlzIGRvY3VtZW50ZWQgaW4gdGhlIExpbnV4IGRvY3VtZW50YXRpb24uCisKKyAgIEF2YWlsYWJpbGl0eTogTGludXggPj0gMy42LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gZGF0YTo6IEFGX1JEUwogICAgICAgICAgIFBGX1JEUwogICAgICAgICAgIFNPTF9SRFMKQEAgLTM5NCw3ICs0MDksNiBAQAogICAgdHlwZSwgYW5kIHByb3RvY29sIG51bWJlci4gIEFkZHJlc3MgZmFtaWx5LCBzb2NrZXQgdHlwZSwgYW5kIHByb3RvY29sIG51bWJlciBhcmUKICAgIGFzIGZvciB0aGUgOmZ1bmM6YC5zb2NrZXRgIGZ1bmN0aW9uIGFib3ZlLiBUaGUgZGVmYXVsdCBmYW1pbHkgaXMgOmNvbnN0OmBBRl9VTklYYAogICAgaWYgZGVmaW5lZCBvbiB0aGUgcGxhdGZvcm07IG90aGVyd2lzZSwgdGhlIGRlZmF1bHQgaXMgOmNvbnN0OmBBRl9JTkVUYC4KLSAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogICAgVGhlIG5ld2x5IGNyZWF0ZWQgc29ja2V0cyBhcmUgOnJlZjpgbm9uLWluaGVyaXRhYmxlIDxmZF9pbmhlcml0YW5jZT5gLgogCkBAIC00MDUsNiArNDE5LDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUaGUgcmV0dXJuZWQgc29ja2V0cyBhcmUgbm93IG5vbi1pbmhlcml0YWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFdpbmRvd3Mgc3VwcG9ydCBhZGRlZC4KKwogCiAuLiBmdW5jdGlvbjo6IGNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3NbLCB0aW1lb3V0Wywgc291cmNlX2FkZHJlc3NdXSkKIApAQCAtNjUxLDggKzY2OCw4IEBACiAKIC4uIGZ1bmN0aW9uOjogaW5ldF9udG9hKHBhY2tlZF9pcCkKIAotICAgQ29udmVydCBhIDMyLWJpdCBwYWNrZWQgSVB2NCBhZGRyZXNzIChhIGJ5dGVzIG9iamVjdCBmb3VyIGNoYXJhY3RlcnMgaW4KLSAgIGxlbmd0aCkgdG8gaXRzIHN0YW5kYXJkIGRvdHRlZC1xdWFkIHN0cmluZyByZXByZXNlbnRhdGlvbiAoZm9yIGV4YW1wbGUsCisgICBDb252ZXJ0IGEgMzItYml0IHBhY2tlZCBJUHY0IGFkZHJlc3MgKGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBmb3VyCisgICBieXRlcyBpbiBsZW5ndGgpIHRvIGl0cyBzdGFuZGFyZCBkb3R0ZWQtcXVhZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gKGZvciBleGFtcGxlLAogICAgJzEyMy40NS42Ny44OScpLiAgVGhpcyBpcyB1c2VmdWwgd2hlbiBjb252ZXJzaW5nIHdpdGggYSBwcm9ncmFtIHRoYXQgdXNlcyB0aGUKICAgIHN0YW5kYXJkIEMgbGlicmFyeSBhbmQgbmVlZHMgb2JqZWN0cyBvZiB0eXBlIDpjOnR5cGU6YHN0cnVjdCBpbl9hZGRyYCwgd2hpY2gKICAgIGlzIHRoZSBDIHR5cGUgZm9yIHRoZSAzMi1iaXQgcGFja2VkIGJpbmFyeSBkYXRhIHRoaXMgZnVuY3Rpb24gdGFrZXMgYXMgYW4KQEAgLTY2Myw2ICs2ODAsOSBAQAogICAgc3VwcG9ydCBJUHY2LCBhbmQgOmZ1bmM6YGluZXRfbnRvcGAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBmb3IgSVB2NC92NiBkdWFsCiAgICBzdGFjayBzdXBwb3J0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDogMy41CisgICAgICBXcml0YWJsZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIG5vdyBhY2NlcHRlZC4KKwogCiAuLiBmdW5jdGlvbjo6IGluZXRfcHRvbihhZGRyZXNzX2ZhbWlseSwgaXBfc3RyaW5nKQogCkBAIC02ODUsMTUgKzcwNSwxNiBAQAogCiAuLiBmdW5jdGlvbjo6IGluZXRfbnRvcChhZGRyZXNzX2ZhbWlseSwgcGFja2VkX2lwKQogCi0gICBDb252ZXJ0IGEgcGFja2VkIElQIGFkZHJlc3MgKGEgYnl0ZXMgb2JqZWN0IG9mIHNvbWUgbnVtYmVyIG9mIGNoYXJhY3RlcnMpIHRvIGl0cwotICAgc3RhbmRhcmQsIGZhbWlseS1zcGVjaWZpYyBzdHJpbmcgcmVwcmVzZW50YXRpb24gKGZvciBleGFtcGxlLCBgYCc3LjEwLjAuNSdgYCBvcgotICAgYGAnNWFlZjoyYjo6OCdgYCkuIDpmdW5jOmBpbmV0X250b3BgIGlzIHVzZWZ1bCB3aGVuIGEgbGlicmFyeSBvciBuZXR3b3JrIHByb3RvY29sCi0gICByZXR1cm5zIGFuIG9iamVjdCBvZiB0eXBlIDpjOnR5cGU6YHN0cnVjdCBpbl9hZGRyYCAoc2ltaWxhciB0byA6ZnVuYzpgaW5ldF9udG9hYCkKLSAgIG9yIDpjOnR5cGU6YHN0cnVjdCBpbjZfYWRkcmAuCisgICBDb252ZXJ0IGEgcGFja2VkIElQIGFkZHJlc3MgKGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBvZiBzb21lIG51bWJlciBvZgorICAgYnl0ZXMpIHRvIGl0cyBzdGFuZGFyZCwgZmFtaWx5LXNwZWNpZmljIHN0cmluZyByZXByZXNlbnRhdGlvbiAoZm9yCisgICBleGFtcGxlLCBgYCc3LjEwLjAuNSdgYCBvciBgYCc1YWVmOjJiOjo4J2BgKS4KKyAgIDpmdW5jOmBpbmV0X250b3BgIGlzIHVzZWZ1bCB3aGVuIGEgbGlicmFyeSBvciBuZXR3b3JrIHByb3RvY29sIHJldHVybnMgYW4KKyAgIG9iamVjdCBvZiB0eXBlIDpjOnR5cGU6YHN0cnVjdCBpbl9hZGRyYCAoc2ltaWxhciB0byA6ZnVuYzpgaW5ldF9udG9hYCkgb3IKKyAgIDpjOnR5cGU6YHN0cnVjdCBpbjZfYWRkcmAuCiAKICAgIFN1cHBvcnRlZCB2YWx1ZXMgZm9yICphZGRyZXNzX2ZhbWlseSogYXJlIGN1cnJlbnRseSA6Y29uc3Q6YEFGX0lORVRgIGFuZAotICAgOmNvbnN0OmBBRl9JTkVUNmAuIElmIHRoZSBzdHJpbmcgKnBhY2tlZF9pcCogaXMgbm90IHRoZSBjb3JyZWN0IGxlbmd0aCBmb3IgdGhlCi0gICBzcGVjaWZpZWQgYWRkcmVzcyBmYW1pbHksIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgorICAgOmNvbnN0OmBBRl9JTkVUNmAuIElmIHRoZSBieXRlcyBvYmplY3QgKnBhY2tlZF9pcCogaXMgbm90IHRoZSBjb3JyZWN0CisgICBsZW5ndGggZm9yIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyBmYW1pbHksIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgogICAgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGZvciBlcnJvcnMgZnJvbSB0aGUgY2FsbCB0byA6ZnVuYzpgaW5ldF9udG9wYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4IChtYXliZSBub3QgYWxsIHBsYXRmb3JtcyksIFdpbmRvd3MuCkBAIC03MDEsNiArNzIyLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBXaW5kb3dzIHN1cHBvcnQgYWRkZWQKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCisKIAogLi4KICAgIFhYWDogQXJlIHNlbmRtc2coKSwgcmVjdm1zZygpIGFuZCBDTVNHXyooKSBhdmFpbGFibGUgb24gYW55CkBAIC04MjUsNiArODQ5LDExIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVGhlIHNvY2tldCBpcyBub3cgbm9uLWluaGVyaXRhYmxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UKKyAgICAgIGFuIGV4Y2VwdGlvbiwgdGhlIG1ldGhvZCBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nCisgICAgICBhbiA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBtZXRob2Q6OiBzb2NrZXQuYmluZChhZGRyZXNzKQogCkBAIC04NTcsNiArODg2LDE5IEBACiAgICBDb25uZWN0IHRvIGEgcmVtb3RlIHNvY2tldCBhdCAqYWRkcmVzcyouIChUaGUgZm9ybWF0IG9mICphZGRyZXNzKiBkZXBlbmRzIG9uIHRoZQogICAgYWRkcmVzcyBmYW1pbHkgLS0tIHNlZSBhYm92ZS4pCiAKKyAgIElmIHRoZSBjb25uZWN0aW9uIGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLCB0aGUgbWV0aG9kIHdhaXRzIHVudGlsIHRoZQorICAgY29ubmVjdGlvbiBjb21wbGV0ZXMsIG9yIHJhaXNlIGEgOmV4Yzpgc29ja2V0LnRpbWVvdXRgIG9uIHRpbWVvdXQsIGlmIHRoZQorICAgc2lnbmFsIGhhbmRsZXIgZG9lc24ndCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHRoZSBzb2NrZXQgaXMgYmxvY2tpbmcgb3IgaGFzCisgICBhIHRpbWVvdXQuIEZvciBub24tYmxvY2tpbmcgc29ja2V0cywgdGhlIG1ldGhvZCByYWlzZXMgYW4KKyAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiBpZiB0aGUgY29ubmVjdGlvbiBpcyBpbnRlcnJ1cHRlZCBieSBhCisgICBzaWduYWwgKG9yIHRoZSBleGNlcHRpb24gcmFpc2VkIGJ5IHRoZSBzaWduYWwgaGFuZGxlcikuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgbWV0aG9kIG5vdyB3YWl0cyB1bnRpbCB0aGUgY29ubmVjdGlvbiBjb21wbGV0ZXMgaW5zdGVhZCBvZiByYWlzaW5nIGFuCisgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gaWYgdGhlIGNvbm5lY3Rpb24gaXMgaW50ZXJydXB0ZWQgYnkgYQorICAgICAgc2lnbmFsLCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lc24ndCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHRoZSBzb2NrZXQgaXMKKyAgICAgIGJsb2NraW5nIG9yIGhhcyBhIHRpbWVvdXQgKHNlZSB0aGUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LmNvbm5lY3RfZXgoYWRkcmVzcykKIApAQCAtOTUyLDEyICs5OTQsMTUgQEAKICAgIE9uIG90aGVyIHBsYXRmb3JtcywgdGhlIGdlbmVyaWMgOmZ1bmM6YGZjbnRsLmZjbnRsYCBhbmQgOmZ1bmM6YGZjbnRsLmlvY3RsYAogICAgZnVuY3Rpb25zIG1heSBiZSB1c2VkOyB0aGV5IGFjY2VwdCBhIHNvY2tldCBvYmplY3QgYXMgdGhlaXIgZmlyc3QgYXJndW1lbnQuCiAKLS4uIG1ldGhvZDo6IHNvY2tldC5saXN0ZW4oYmFja2xvZykKKy4uIG1ldGhvZDo6IHNvY2tldC5saXN0ZW4oW2JhY2tsb2ddKQogCi0gICBMaXN0ZW4gZm9yIGNvbm5lY3Rpb25zIG1hZGUgdG8gdGhlIHNvY2tldC4gIFRoZSAqYmFja2xvZyogYXJndW1lbnQgc3BlY2lmaWVzIHRoZQotICAgbWF4aW11bSBudW1iZXIgb2YgcXVldWVkIGNvbm5lY3Rpb25zIGFuZCBzaG91bGQgYmUgYXQgbGVhc3QgMDsgdGhlIG1heGltdW0gdmFsdWUKLSAgIGlzIHN5c3RlbS1kZXBlbmRlbnQgKHVzdWFsbHkgNSksIHRoZSBtaW5pbXVtIHZhbHVlIGlzIGZvcmNlZCB0byAwLgorICAgRW5hYmxlIGEgc2VydmVyIHRvIGFjY2VwdCBjb25uZWN0aW9ucy4gIElmICpiYWNrbG9nKiBpcyBzcGVjaWZpZWQsIGl0IG11c3QKKyAgIGJlIGF0IGxlYXN0IDAgKGlmIGl0IGlzIGxvd2VyLCBpdCBpcyBzZXQgdG8gMCk7IGl0IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mCisgICB1bmFjY2VwdGVkIGNvbm5lY3Rpb25zIHRoYXQgdGhlIHN5c3RlbSB3aWxsIGFsbG93IGJlZm9yZSByZWZ1c2luZyBuZXcKKyAgIGNvbm5lY3Rpb25zLiBJZiBub3Qgc3BlY2lmaWVkLCBhIGRlZmF1bHQgcmVhc29uYWJsZSB2YWx1ZSBpcyBjaG9zZW4uCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgKmJhY2tsb2cqIHBhcmFtZXRlciBpcyBub3cgb3B0aW9uYWwuCiAKIC4uIG1ldGhvZDo6IHNvY2tldC5tYWtlZmlsZShtb2RlPSdyJywgYnVmZmVyaW5nPU5vbmUsICosIGVuY29kaW5nPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKQpAQCAtOTk1LDYgKzEwNDAsMTEgQEAKICAgICAgIEZvciBiZXN0IG1hdGNoIHdpdGggaGFyZHdhcmUgYW5kIG5ldHdvcmsgcmVhbGl0aWVzLCB0aGUgdmFsdWUgb2YgICpidWZzaXplKgogICAgICAgc2hvdWxkIGJlIGEgcmVsYXRpdmVseSBzbWFsbCBwb3dlciBvZiAyLCBmb3IgZXhhbXBsZSwgNDA5Ni4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlCisgICAgICBhbiBleGNlcHRpb24sIHRoZSBtZXRob2Qgbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZworICAgICAgYW4gOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LnJlY3Zmcm9tKGJ1ZnNpemVbLCBmbGFnc10pCiAKQEAgLTEwMDQsNiArMTA1NCwxMSBAQAogICAgOm1hbnBhZ2U6YHJlY3YoMilgIGZvciB0aGUgbWVhbmluZyBvZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmZsYWdzKjsgaXQgZGVmYXVsdHMKICAgIHRvIHplcm8uIChUaGUgZm9ybWF0IG9mICphZGRyZXNzKiBkZXBlbmRzIG9uIHRoZSBhZGRyZXNzIGZhbWlseSAtLS0gc2VlIGFib3ZlLikKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlCisgICAgICBhbiBleGNlcHRpb24sIHRoZSBtZXRob2Qgbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZworICAgICAgYW4gOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LnJlY3Ztc2coYnVmc2l6ZVssIGFuY2J1ZnNpemVbLCBmbGFnc11dKQogCkBAIC0xMDcwLDYgKzExMjUsMTEgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZQorICAgICAgYW4gZXhjZXB0aW9uLCB0aGUgbWV0aG9kIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgIGFuIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorCiAKIC4uIG1ldGhvZDo6IHNvY2tldC5yZWN2bXNnX2ludG8oYnVmZmVyc1ssIGFuY2J1ZnNpemVbLCBmbGFnc11dKQogCkBAIC0xMTM2LDYgKzExOTYsMTEgQEAKICAgIGFwcGxpY2F0aW9uIG5lZWRzIHRvIGF0dGVtcHQgZGVsaXZlcnkgb2YgdGhlIHJlbWFpbmluZyBkYXRhLiBGb3IgZnVydGhlcgogICAgaW5mb3JtYXRpb24gb24gdGhpcyB0b3BpYywgY29uc3VsdCB0aGUgOnJlZjpgc29ja2V0LWhvd3RvYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlCisgICAgICBhbiBleGNlcHRpb24sIHRoZSBtZXRob2Qgbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZworICAgICAgYW4gOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LnNlbmRhbGwoYnl0ZXNbLCBmbGFnc10pCiAKQEAgLTExNDYsNiArMTIxMSwxNSBAQAogICAgc3VjY2Vzcy4gIE9uIGVycm9yLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLCBhbmQgdGhlcmUgaXMgbm8gd2F5IHRvIGRldGVybWluZSBob3cKICAgIG11Y2ggZGF0YSwgaWYgYW55LCB3YXMgc3VjY2Vzc2Z1bGx5IHNlbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgc29ja2V0IHRpbWVvdXQgaXMgbm8gbW9yZSByZXNldCBlYWNoIHRpbWUgZGF0YSBpcyBzZW50IHN1Y2Nlc3NmdWx5LgorICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0aGUgbWF4aW11bSB0b3RhbCBkdXJhdGlvbiB0byBzZW5kIGFsbCBkYXRhLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UKKyAgICAgIGFuIGV4Y2VwdGlvbiwgdGhlIG1ldGhvZCBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nCisgICAgICBhbiA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBtZXRob2Q6OiBzb2NrZXQuc2VuZHRvKGJ5dGVzLCBhZGRyZXNzKQogICAgICAgICAgICAgc29ja2V0LnNlbmR0byhieXRlcywgZmxhZ3MsIGFkZHJlc3MpCkBAIC0xMTU2LDYgKzEyMzAsMTEgQEAKICAgIGJ5dGVzIHNlbnQuIChUaGUgZm9ybWF0IG9mICphZGRyZXNzKiBkZXBlbmRzIG9uIHRoZSBhZGRyZXNzIGZhbWlseSAtLS0gc2VlCiAgICBhYm92ZS4pCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZQorICAgICAgYW4gZXhjZXB0aW9uLCB0aGUgbWV0aG9kIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgIGFuIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorCiAKIC4uIG1ldGhvZDo6IHNvY2tldC5zZW5kbXNnKGJ1ZmZlcnNbLCBhbmNkYXRhWywgZmxhZ3NbLCBhZGRyZXNzXV1dKQogCkBAIC0xMTkyLDYgKzEyNzEsMjYgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZQorICAgICAgYW4gZXhjZXB0aW9uLCB0aGUgbWV0aG9kIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgIGFuIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorCisuLiBtZXRob2Q6OiBzb2NrZXQuc2VuZGZpbGUoZmlsZSwgb2Zmc2V0PTAsIGNvdW50PU5vbmUpCisKKyAgIFNlbmQgYSBmaWxlIHVudGlsIEVPRiBpcyByZWFjaGVkIGJ5IHVzaW5nIGhpZ2gtcGVyZm9ybWFuY2UKKyAgIDptb2Q6YG9zLnNlbmRmaWxlYCBhbmQgcmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgd2hpY2ggd2VyZSBzZW50LgorICAgKmZpbGUqIG11c3QgYmUgYSByZWd1bGFyIGZpbGUgb2JqZWN0IG9wZW5lZCBpbiBiaW5hcnkgbW9kZS4gSWYKKyAgIDptb2Q6YG9zLnNlbmRmaWxlYCBpcyBub3QgYXZhaWxhYmxlIChlLmcuIFdpbmRvd3MpIG9yICpmaWxlKiBpcyBub3QgYQorICAgcmVndWxhciBmaWxlIDptZXRoOmBzZW5kYCB3aWxsIGJlIHVzZWQgaW5zdGVhZC4gKm9mZnNldCogdGVsbHMgZnJvbSB3aGVyZSB0bworICAgc3RhcnQgcmVhZGluZyB0aGUgZmlsZS4gSWYgc3BlY2lmaWVkLCAqY291bnQqIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMKKyAgIHRvIHRyYW5zbWl0IGFzIG9wcG9zZWQgdG8gc2VuZGluZyB0aGUgZmlsZSB1bnRpbCBFT0YgaXMgcmVhY2hlZC4gRmlsZQorICAgcG9zaXRpb24gaXMgdXBkYXRlZCBvbiByZXR1cm4gb3IgYWxzbyBpbiBjYXNlIG9mIGVycm9yIGluIHdoaWNoIGNhc2UKKyAgIDptZXRoOmBmaWxlLnRlbGwoKSA8aW8uSU9CYXNlLnRlbGw+YCBjYW4gYmUgdXNlZCB0byBmaWd1cmUgb3V0IHRoZSBudW1iZXIgb2YKKyAgIGJ5dGVzIHdoaWNoIHdlcmUgc2VudC4gVGhlIHNvY2tldCBtdXN0IGJlIG9mIDpjb25zdDpgU09DS19TVFJFQU1gIHR5cGUuIE5vbi0KKyAgIGJsb2NraW5nIHNvY2tldHMgYXJlIG5vdCBzdXBwb3J0ZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAuLiBtZXRob2Q6OiBzb2NrZXQuc2V0X2luaGVyaXRhYmxlKGluaGVyaXRhYmxlKQogCkBAIC0xMjMxLDExICsxMzMwLDE1IEBACiAKICAgIFNldCB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIHNvY2tldCBvcHRpb24gKHNlZSB0aGUgVW5peCBtYW51YWwgcGFnZQogICAgOm1hbnBhZ2U6YHNldHNvY2tvcHQoMilgKS4gIFRoZSBuZWVkZWQgc3ltYm9saWMgY29uc3RhbnRzIGFyZSBkZWZpbmVkIGluIHRoZQotICAgOm1vZDpgc29ja2V0YCBtb2R1bGUgKDpjb25zdDpgU09fXCpgIGV0Yy4pLiAgVGhlIHZhbHVlIGNhbiBiZSBhbiBpbnRlZ2VyIG9yIGEKLSAgIGJ5dGVzIG9iamVjdCByZXByZXNlbnRpbmcgYSBidWZmZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UgaXQgaXMgdXAgdG8gdGhlIGNhbGxlciB0bworICAgOm1vZDpgc29ja2V0YCBtb2R1bGUgKDpjb25zdDpgU09fXCpgIGV0Yy4pLiAgVGhlIHZhbHVlIGNhbiBiZSBhbiBpbnRlZ2VyIG9yCisgICBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgcmVwcmVzZW50aW5nIGEgYnVmZmVyLiAgSW4gdGhlIGxhdHRlciBjYXNlIGl0IGlzCisgICB1cCB0byB0aGUgY2FsbGVyIHRvCiAgICBlbnN1cmUgdGhhdCB0aGUgYnl0ZXN0cmluZyBjb250YWlucyB0aGUgcHJvcGVyIGJpdHMgKHNlZSB0aGUgb3B0aW9uYWwgYnVpbHQtaW4KICAgIG1vZHVsZSA6bW9kOmBzdHJ1Y3RgIGZvciBhIHdheSB0byBlbmNvZGUgQyBzdHJ1Y3R1cmVzIGFzIGJ5dGVzdHJpbmdzKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LnNodXRkb3duKGhvdykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdCBiL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKaW5kZXggM2U0OWFmNi4uMThiZTkzNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CkBAIC0xMTQsNyArMTE0LDcgQEAKIEFub3RoZXIgYXBwcm9hY2ggdG8gaGFuZGxpbmcgbXVsdGlwbGUgc2ltdWx0YW5lb3VzIHJlcXVlc3RzIGluIGFuIGVudmlyb25tZW50CiB0aGF0IHN1cHBvcnRzIG5laXRoZXIgdGhyZWFkcyBub3IgOmZ1bmM6YH5vcy5mb3JrYCAob3Igd2hlcmUgdGhlc2UgYXJlIHRvbwogZXhwZW5zaXZlIG9yIGluYXBwcm9wcmlhdGUgZm9yIHRoZSBzZXJ2aWNlKSBpcyB0byBtYWludGFpbiBhbiBleHBsaWNpdCB0YWJsZSBvZgotcGFydGlhbGx5IGZpbmlzaGVkIHJlcXVlc3RzIGFuZCB0byB1c2UgOmZ1bmM6YH5zZWxlY3Quc2VsZWN0YCB0byBkZWNpZGUgd2hpY2gKK3BhcnRpYWxseSBmaW5pc2hlZCByZXF1ZXN0cyBhbmQgdG8gdXNlIDptb2Q6YHNlbGVjdG9yc2AgdG8gZGVjaWRlIHdoaWNoCiByZXF1ZXN0IHRvIHdvcmsgb24gbmV4dCAob3Igd2hldGhlciB0byBoYW5kbGUgYSBuZXcgaW5jb21pbmcgcmVxdWVzdCkuICBUaGlzIGlzCiBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IGZvciBzdHJlYW0gc2VydmljZXMgd2hlcmUgZWFjaCBjbGllbnQgY2FuIHBvdGVudGlhbGx5IGJlCiBjb25uZWN0ZWQgZm9yIGEgbG9uZyB0aW1lIChpZiB0aHJlYWRzIG9yIHN1YnByb2Nlc3NlcyBjYW5ub3QgYmUgdXNlZCkuICBTZWUKQEAgLTEzNyw3ICsxMzcsNyBAQAogLi4gbWV0aG9kOjogQmFzZVNlcnZlci5maWxlbm8oKQogCiAgICBSZXR1cm4gYW4gaW50ZWdlciBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBzb2NrZXQgb24gd2hpY2ggdGhlIHNlcnZlciBpcwotICAgbGlzdGVuaW5nLiAgVGhpcyBmdW5jdGlvbiBpcyBtb3N0IGNvbW1vbmx5IHBhc3NlZCB0byA6ZnVuYzpgc2VsZWN0LnNlbGVjdGAsIHRvCisgICBsaXN0ZW5pbmcuICBUaGlzIGZ1bmN0aW9uIGlzIG1vc3QgY29tbW9ubHkgcGFzc2VkIHRvIDptb2Q6YHNlbGVjdG9yc2AsIHRvCiAgICBhbGxvdyBtb25pdG9yaW5nIG11bHRpcGxlIHNlcnZlcnMgaW4gdGhlIHNhbWUgcHJvY2Vzcy4KIAogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdCBiL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CmluZGV4IDcxNTMyMWEuLmIxNGVhNzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CkBAIC02NDksNiArNjQ5LDkgQEAKICAgICAgIFRoaXMgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIGNvbHVtbiBuYW1lcy4gSW1tZWRpYXRlbHkgYWZ0ZXIgYSBxdWVyeSwKICAgICAgIGl0IGlzIHRoZSBmaXJzdCBtZW1iZXIgb2YgZWFjaCB0dXBsZSBpbiA6YXR0cjpgQ3Vyc29yLmRlc2NyaXB0aW9uYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgb2Ygc2xpY2luZy4KKwogTGV0J3MgYXNzdW1lIHdlIGluaXRpYWxpemUgYSB0YWJsZSBhcyBpbiB0aGUgZXhhbXBsZSBnaXZlbiBhYm92ZTo6CiAKICAgIGNvbm4gPSBzcWxpdGUzLmNvbm5lY3QoIjptZW1vcnk6IikKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NzbC5yc3QgYi9Eb2MvbGlicmFyeS9zc2wucnN0CmluZGV4IGIwY2Y0ZWIuLmZiYjliMjggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NzbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3NsLnJzdApAQCAtMzM1LDYgKzMzNSw4IEBACiAgICBTZWUgaHR0cDovL2VnZC5zb3VyY2Vmb3JnZS5uZXQvIG9yIGh0dHA6Ly9wcm5nZC5zb3VyY2Vmb3JnZS5uZXQvIGZvciBzb3VyY2VzCiAgICBvZiBlbnRyb3B5LWdhdGhlcmluZyBkYWVtb25zLgogCisgICBBdmFpbGFiaWxpdHk6IG5vdCBhdmFpbGFibGUgd2l0aCBMaWJyZVNTTC4KKwogLi4gZnVuY3Rpb246OiBSQU5EX2FkZChieXRlcywgZW50cm9weSkKIAogICAgTWl4IHRoZSBnaXZlbiAqYnl0ZXMqIGludG8gdGhlIFNTTCBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuICBUaGUKQEAgLTM0Miw2ICszNDQsOSBAQAogICAgc3RyaW5nIChzbyB5b3UgY2FuIGFsd2F5cyB1c2UgOmNvbnN0OmAwLjBgKS4gIFNlZSA6cmZjOmAxNzUwYCBmb3IgbW9yZQogICAgaW5mb3JtYXRpb24gb24gc291cmNlcyBvZiBlbnRyb3B5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDogMy41CisgICAgICBXcml0YWJsZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIG5vdyBhY2NlcHRlZC4KKwogQ2VydGlmaWNhdGUgaGFuZGxpbmcKIF5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKQEAgLTM1MCwxMCArMzU1LDkgQEAKICAgIFZlcmlmeSB0aGF0ICpjZXJ0KiAoaW4gZGVjb2RlZCBmb3JtYXQgYXMgcmV0dXJuZWQgYnkKICAgIDptZXRoOmBTU0xTb2NrZXQuZ2V0cGVlcmNlcnRgKSBtYXRjaGVzIHRoZSBnaXZlbiAqaG9zdG5hbWUqLiAgVGhlIHJ1bGVzCiAgICBhcHBsaWVkIGFyZSB0aG9zZSBmb3IgY2hlY2tpbmcgdGhlIGlkZW50aXR5IG9mIEhUVFBTIHNlcnZlcnMgYXMgb3V0bGluZWQKLSAgIGluIDpyZmM6YDI4MThgIGFuZCA6cmZjOmA2MTI1YCwgZXhjZXB0IHRoYXQgSVAgYWRkcmVzc2VzIGFyZSBub3QgY3VycmVudGx5Ci0gICBzdXBwb3J0ZWQuIEluIGFkZGl0aW9uIHRvIEhUVFBTLCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBzdWl0YWJsZSBmb3IKLSAgIGNoZWNraW5nIHRoZSBpZGVudGl0eSBvZiBzZXJ2ZXJzIGluIHZhcmlvdXMgU1NMLWJhc2VkIHByb3RvY29scyBzdWNoIGFzCi0gICBGVFBTLCBJTUFQUywgUE9QUyBhbmQgb3RoZXJzLgorICAgaW4gOnJmYzpgMjgxOGAgYW5kIDpyZmM6YDYxMjVgLiAgSW4gYWRkaXRpb24gdG8gSFRUUFMsIHRoaXMgZnVuY3Rpb24KKyAgIHNob3VsZCBiZSBzdWl0YWJsZSBmb3IgY2hlY2tpbmcgdGhlIGlkZW50aXR5IG9mIHNlcnZlcnMgaW4gdmFyaW91cworICAgU1NMLWJhc2VkIHByb3RvY29scyBzdWNoIGFzIEZUUFMsIElNQVBTLCBQT1BTIGFuZCBvdGhlcnMuCiAKICAgIDpleGM6YENlcnRpZmljYXRlRXJyb3JgIGlzIHJhaXNlZCBvbiBmYWlsdXJlLiBPbiBzdWNjZXNzLCB0aGUgZnVuY3Rpb24KICAgIHJldHVybnMgbm90aGluZzo6CkBAIC0zNzUsMjIgKzM3OSwzOCBAQAogICAgICAgSUROIEEtbGFiZWxzIHN1Y2ggYXMgYGB3d3cqLnhuLS1wdGhvbi1rdmEub3JnYGAgYXJlIHN0aWxsIHN1cHBvcnRlZCwKICAgICAgIGJ1dCBgYHgqLnB5dGhvbi5vcmdgYCBubyBsb25nZXIgbWF0Y2hlcyBgYHhuLS10ZGEucHl0aG9uLm9yZ2BgLgogCi0uLiBmdW5jdGlvbjo6IGNlcnRfdGltZV90b19zZWNvbmRzKHRpbWVzdHJpbmcpCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgTWF0Y2hpbmcgb2YgSVAgYWRkcmVzc2VzLCB3aGVuIHByZXNlbnQgaW4gdGhlIHN1YmplY3RBbHROYW1lIGZpZWxkCisgICAgICBvZiB0aGUgY2VydGlmaWNhdGUsIGlzIG5vdyBzdXBwb3J0ZWQuCiAKLSAgIFJldHVybnMgYSBmbG9hdGluZy1wb2ludCB2YWx1ZSBjb250YWluaW5nIGEgbm9ybWFsIHNlY29uZHMtYWZ0ZXItdGhlLWVwb2NoCi0gICB0aW1lIHZhbHVlLCBnaXZlbiB0aGUgdGltZS1zdHJpbmcgcmVwcmVzZW50aW5nIHRoZSAibm90QmVmb3JlIiBvciAibm90QWZ0ZXIiCi0gICBkYXRlIGZyb20gYSBjZXJ0aWZpY2F0ZS4KKy4uIGZ1bmN0aW9uOjogY2VydF90aW1lX3RvX3NlY29uZHMoY2VydF90aW1lKQogCi0gICBIZXJlJ3MgYW4gZXhhbXBsZTo6CisgICBSZXR1cm4gdGhlIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSB0aGUgRXBvY2gsIGdpdmVuIHRoZSBgYGNlcnRfdGltZWBgCisgICBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSAibm90QmVmb3JlIiBvciAibm90QWZ0ZXIiIGRhdGUgZnJvbSBhCisgICBjZXJ0aWZpY2F0ZSBpbiBgYCIlYiAlZCAlSDolTTolUyAlWSAlWiJgYCBzdHJwdGltZSBmb3JtYXQgKEMKKyAgIGxvY2FsZSkuCiAKLSAgICAgPj4+IGltcG9ydCBzc2wKLSAgICAgPj4+IHNzbC5jZXJ0X3RpbWVfdG9fc2Vjb25kcygiTWF5ICA5IDAwOjAwOjAwIDIwMDcgR01UIikKLSAgICAgMTE3ODY5NDAwMC4wCi0gICAgID4+PiBpbXBvcnQgdGltZQotICAgICA+Pj4gdGltZS5jdGltZShzc2wuY2VydF90aW1lX3RvX3NlY29uZHMoIk1heSAgOSAwMDowMDowMCAyMDA3IEdNVCIpKQotICAgICAnV2VkIE1heSAgOSAwMDowMDowMCAyMDA3JworICAgSGVyZSdzIGFuIGV4YW1wbGU6CiAKLS4uIGZ1bmN0aW9uOjogZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShhZGRyLCBzc2xfdmVyc2lvbj1QUk9UT0NPTF9TU0x2MywgY2FfY2VydHM9Tm9uZSkKKyAgIC4uIGRvY3Rlc3Q6OiBuZXdjb250ZXh0CisKKyAgICAgID4+PiBpbXBvcnQgc3NsCisgICAgICA+Pj4gdGltZXN0YW1wID0gc3NsLmNlcnRfdGltZV90b19zZWNvbmRzKCJKYW4gIDUgMDk6MzQ6NDMgMjAxOCBHTVQiKQorICAgICAgPj4+IHRpbWVzdGFtcAorICAgICAgMTUxNTE0NDg4MworICAgICAgPj4+IGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCisgICAgICA+Pj4gcHJpbnQoZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0aW1lc3RhbXApKQorICAgICAgMjAxOC0wMS0wNSAwOTozNDo0MworCisgICAibm90QmVmb3JlIiBvciAibm90QWZ0ZXIiIGRhdGVzIG11c3QgdXNlIEdNVCAoOnJmYzpgNTI4MGApLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSW50ZXJwcmV0IHRoZSBpbnB1dCB0aW1lIGFzIGEgdGltZSBpbiBVVEMgYXMgc3BlY2lmaWVkIGJ5ICdHTVQnCisgICAgICB0aW1lem9uZSBpbiB0aGUgaW5wdXQgc3RyaW5nLiBMb2NhbCB0aW1lem9uZSB3YXMgdXNlZAorICAgICAgcHJldmlvdXNseS4gUmV0dXJuIGFuIGludGVnZXIgKG5vIGZyYWN0aW9ucyBvZiBhIHNlY29uZCBpbiB0aGUKKyAgICAgIGlucHV0IGZvcm1hdCkKKworLi4gZnVuY3Rpb246OiBnZXRfc2VydmVyX2NlcnRpZmljYXRlKGFkZHIsIHNzbF92ZXJzaW9uPVBST1RPQ09MX1NTTHYyMywgY2FfY2VydHM9Tm9uZSkKIAogICAgR2l2ZW4gdGhlIGFkZHJlc3MgYGBhZGRyYGAgb2YgYW4gU1NMLXByb3RlY3RlZCBzZXJ2ZXIsIGFzIGEgKCpob3N0bmFtZSosCiAgICAqcG9ydC1udW1iZXIqKSBwYWlyLCBmZXRjaGVzIHRoZSBzZXJ2ZXIncyBjZXJ0aWZpY2F0ZSwgYW5kIHJldHVybnMgaXQgYXMgYQpAQCAtNDA0LDYgKzQyNCwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm93IElQdjYtY29tcGF0aWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBkZWZhdWx0ICpzc2xfdmVyc2lvbiogaXMgY2hhbmdlZCBmcm9tIDpkYXRhOmBQUk9UT0NPTF9TU0x2M2AgdG8KKyAgICAgIDpkYXRhOmBQUk9UT0NPTF9TU0x2MjNgIGZvciBtYXhpbXVtIGNvbXBhdGliaWxpdHkgd2l0aCBtb2Rlcm4gc2VydmVycy4KKwogLi4gZnVuY3Rpb246OiBERVJfY2VydF90b19QRU1fY2VydChERVJfY2VydF9ieXRlcykKIAogICAgR2l2ZW4gYSBjZXJ0aWZpY2F0ZSBhcyBhIERFUi1lbmNvZGVkIGJsb2Igb2YgYnl0ZXMsIHJldHVybnMgYSBQRU0tZW5jb2RlZApAQCAtNjcxLDYgKzY5NSwxMyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorLi4gZGF0YTo6IEhBU19BTFBOCisKKyAgIFdoZXRoZXIgdGhlIE9wZW5TU0wgbGlicmFyeSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgdGhlICpBcHBsaWNhdGlvbi1MYXllcgorICAgUHJvdG9jb2wgTmVnb3RpYXRpb24qIFRMUyBleHRlbnNpb24gYXMgZGVzY3JpYmVkIGluIDpyZmM6YDczMDFgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gZGF0YTo6IEhBU19FQ0RICiAKICAgIFdoZXRoZXIgdGhlIE9wZW5TU0wgbGlicmFyeSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgRWxsaXB0aWMgQ3VydmUtYmFzZWQKQEAgLTc4OCw2ICs4MTksOCBAQAogICAgICAoYnV0IHBhc3NpbmcgYSBub24temVybyBgYGZsYWdzYGAgYXJndW1lbnQgaXMgbm90IGFsbG93ZWQpCiAgICAtIDptZXRoOmB+c29ja2V0LnNvY2tldC5zZW5kKClgLCA6bWV0aDpgfnNvY2tldC5zb2NrZXQuc2VuZGFsbCgpYCAod2l0aAogICAgICB0aGUgc2FtZSBsaW1pdGF0aW9uKQorICAgLSA6bWV0aDpgfnNvY2tldC5zb2NrZXQuc2VuZGZpbGUoKWAgKGJ1dCA6bW9kOmBvcy5zZW5kZmlsZWAgd2lsbCBiZSB1c2VkCisgICAgIGZvciBwbGFpbi10ZXh0IHNvY2tldHMgb25seSwgZWxzZSA6bWV0aDpgfnNvY2tldC5zb2NrZXQuc2VuZCgpYCB3aWxsIGJlIHVzZWQpCiAgICAtIDptZXRoOmB+c29ja2V0LnNvY2tldC5zaHV0ZG93bigpYAogCiAgICBIb3dldmVyLCBzaW5jZSB0aGUgU1NMIChhbmQgVExTKSBwcm90b2NvbCBoYXMgaXRzIG93biBmcmFtaW5nIGF0b3AKQEAgLTc5OCw2ICs4MzEsMTUgQEAKICAgIFVzdWFsbHksIDpjbGFzczpgU1NMU29ja2V0YCBhcmUgbm90IGNyZWF0ZWQgZGlyZWN0bHksIGJ1dCB1c2luZyB0aGUKICAgIDpmdW5jOmB3cmFwX3NvY2tldGAgZnVuY3Rpb24gb3IgdGhlIDptZXRoOmBTU0xDb250ZXh0LndyYXBfc29ja2V0YCBtZXRob2QuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgOm1ldGg6YHNlbmRmaWxlYCBtZXRob2Qgd2FzIGFkZGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIDptZXRoOmBzaHV0ZG93bmAgZG9lcyBub3QgcmVzZXQgdGhlIHNvY2tldCB0aW1lb3V0IGVhY2ggdGltZSBieXRlcworICAgICAgYXJlIHJlY2VpdmVkIG9yIHNlbnQuIFRoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdG8gbWF4aW11bSB0b3RhbCBkdXJhdGlvbgorICAgICAgb2YgdGhlIHNodXRkb3duLgorCisKIFNTTCBzb2NrZXRzIGFsc28gaGF2ZSB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKIAogLi4gbWV0aG9kOjogU1NMU29ja2V0LnJlYWQobGVuPTAsIGJ1ZmZlcj1Ob25lKQpAQCAtODEyLDYgKzg1NCwxMSBAQAogICAgQXMgYXQgYW55IHRpbWUgYSByZS1uZWdvdGlhdGlvbiBpcyBwb3NzaWJsZSwgYSBjYWxsIHRvIDptZXRoOmByZWFkYCBjYW4gYWxzbwogICAgY2F1c2Ugd3JpdGUgb3BlcmF0aW9ucy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBubyBtb3JlIHJlc2V0IGVhY2ggdGltZSBieXRlcyBhcmUgcmVjZWl2ZWQgb3Igc2VudC4KKyAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdG8gbWF4aW11bSB0b3RhbCBkdXJhdGlvbiB0byByZWFkIHVwIHRvICpsZW4qCisgICAgICBieXRlcy4KKwogLi4gbWV0aG9kOjogU1NMU29ja2V0LndyaXRlKGJ1ZikKIAogICAgV3JpdGUgKmJ1ZiogdG8gdGhlIFNTTCBzb2NrZXQgYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uIFRoZQpAQCAtODIzLDYgKzg3MCwxMCBAQAogICAgQXMgYXQgYW55IHRpbWUgYSByZS1uZWdvdGlhdGlvbiBpcyBwb3NzaWJsZSwgYSBjYWxsIHRvIDptZXRoOmB3cml0ZWAgY2FuCiAgICBhbHNvIGNhdXNlIHJlYWQgb3BlcmF0aW9ucy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBubyBtb3JlIHJlc2V0IGVhY2ggdGltZSBieXRlcyBhcmUgcmVjZWl2ZWQgb3Igc2VudC4KKyAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdG8gbWF4aW11bSB0b3RhbCBkdXJhdGlvbiB0byB3cml0ZSAqYnVmKi4KKwogLi4gbm90ZTo6CiAKICAgIFRoZSA6bWV0aDpgflNTTFNvY2tldC5yZWFkYCBhbmQgOm1ldGg6YH5TU0xTb2NrZXQud3JpdGVgIG1ldGhvZHMgYXJlIHRoZQpAQCAtODQ0LDYgKzg5NSwxMCBAQAogICAgICAgOmF0dHI6YH5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhdHRyaWJ1dGUgb2YgdGhlIHNvY2tldCdzCiAgICAgICA6YXR0cjpgflNTTFNvY2tldC5jb250ZXh0YCBpcyB0cnVlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vIG1vcmUgcmVzZXQgZWFjaCB0aW1lIGJ5dGVzIGFyZSByZWNlaXZlZCBvciBzZW50LgorICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0byBtYXhpbXVtIHRvdGFsIGR1cmF0aW9uIG9mIHRoZSBoYW5kc2hha2UuCisKIC4uIG1ldGhvZDo6IFNTTFNvY2tldC5nZXRwZWVyY2VydChiaW5hcnlfZm9ybT1GYWxzZSkKIAogICAgSWYgdGhlcmUgaXMgbm8gY2VydGlmaWNhdGUgZm9yIHRoZSBwZWVyIG9uIHRoZSBvdGhlciBlbmQgb2YgdGhlIGNvbm5lY3Rpb24sCkBAIC05MTcsNiArOTcyLDE3IEBACiAgICB2ZXJzaW9uIG9mIHRoZSBTU0wgcHJvdG9jb2wgdGhhdCBkZWZpbmVzIGl0cyB1c2UsIGFuZCB0aGUgbnVtYmVyIG9mIHNlY3JldAogICAgYml0cyBiZWluZyB1c2VkLiAgSWYgbm8gY29ubmVjdGlvbiBoYXMgYmVlbiBlc3RhYmxpc2hlZCwgcmV0dXJucyBgYE5vbmVgYC4KIAorLi4gbWV0aG9kOjogU1NMU29ja2V0LnNoYXJlZF9jaXBoZXJzKCkKKworICAgUmV0dXJuIHRoZSBsaXN0IG9mIGNpcGhlcnMgc2hhcmVkIGJ5IHRoZSBjbGllbnQgZHVyaW5nIHRoZSBoYW5kc2hha2UuICBFYWNoCisgICBlbnRyeSBvZiB0aGUgcmV0dXJuZWQgbGlzdCBpcyBhIHRocmVlLXZhbHVlIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlCisgICBjaXBoZXIsIHRoZSB2ZXJzaW9uIG9mIHRoZSBTU0wgcHJvdG9jb2wgdGhhdCBkZWZpbmVzIGl0cyB1c2UsIGFuZCB0aGUgbnVtYmVyCisgICBvZiBzZWNyZXQgYml0cyB0aGUgY2lwaGVyIHVzZXMuICA6bWV0aDpgflNTTFNvY2tldC5zaGFyZWRfY2lwaGVyc2AgcmV0dXJucworICAgYGBOb25lYGAgaWYgbm8gY29ubmVjdGlvbiBoYXMgYmVlbiBlc3RhYmxpc2hlZCBvciB0aGUgc29ja2V0IGlzIGEgY2xpZW50CisgICBzb2NrZXQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAuLiBtZXRob2Q6OiBTU0xTb2NrZXQuY29tcHJlc3Npb24oKQogCiAgICBSZXR1cm4gdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobSBiZWluZyB1c2VkIGFzIGEgc3RyaW5nLCBvciBgYE5vbmVgYApAQCAtOTQwLDEyICsxMDA2LDIyIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisuLiBtZXRob2Q6OiBTU0xTb2NrZXQuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbCgpCisKKyAgIFJldHVybiB0aGUgcHJvdG9jb2wgdGhhdCB3YXMgc2VsZWN0ZWQgZHVyaW5nIHRoZSBUTFMgaGFuZHNoYWtlLiAgSWYKKyAgIDptZXRoOmBTU0xDb250ZXh0LnNldF9hbHBuX3Byb3RvY29sc2Agd2FzIG5vdCBjYWxsZWQsIGlmIHRoZSBvdGhlciBwYXJ0eSBkb2VzCisgICBub3Qgc3VwcG9ydCBBTFBOLCBpZiB0aGlzIHNvY2tldCBkb2VzIG5vdCBzdXBwb3J0IGFueSBvZiB0aGUgY2xpZW50J3MKKyAgIHByb3Bvc2VkIHByb3RvY29scywgb3IgaWYgdGhlIGhhbmRzaGFrZSBoYXMgbm90IGhhcHBlbmVkIHlldCwgYGBOb25lYGAgaXMKKyAgIHJldHVybmVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gbWV0aG9kOjogU1NMU29ja2V0LnNlbGVjdGVkX25wbl9wcm90b2NvbCgpCiAKLSAgIFJldHVybnMgdGhlIHByb3RvY29sIHRoYXQgd2FzIHNlbGVjdGVkIGR1cmluZyB0aGUgVExTL1NTTCBoYW5kc2hha2UuIElmCi0gICA6bWV0aDpgU1NMQ29udGV4dC5zZXRfbnBuX3Byb3RvY29sc2Agd2FzIG5vdCBjYWxsZWQsIG9yIGlmIHRoZSBvdGhlciBwYXJ0eQotICAgZG9lcyBub3Qgc3VwcG9ydCBOUE4sIG9yIGlmIHRoZSBoYW5kc2hha2UgaGFzIG5vdCB5ZXQgaGFwcGVuZWQsIHRoaXMgd2lsbAotICAgcmV0dXJuIGBgTm9uZWBgLgorICAgUmV0dXJuIHRoZSBoaWdoZXItbGV2ZWwgcHJvdG9jb2wgdGhhdCB3YXMgc2VsZWN0ZWQgZHVyaW5nIHRoZSBUTFMvU1NMCisgICBoYW5kc2hha2UuIElmIDptZXRoOmBTU0xDb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzYCB3YXMgbm90IGNhbGxlZCwgb3IKKyAgIGlmIHRoZSBvdGhlciBwYXJ0eSBkb2VzIG5vdCBzdXBwb3J0IE5QTiwgb3IgaWYgdGhlIGhhbmRzaGFrZSBoYXMgbm90IHlldAorICAgaGFwcGVuZWQsIHRoaXMgd2lsbCByZXR1cm4gYGBOb25lYGAuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCkBAIC05NTcsNiArMTAzMywxNiBAQAogICAgcmV0dXJuZWQgc29ja2V0IHNob3VsZCBhbHdheXMgYmUgdXNlZCBmb3IgZnVydGhlciBjb21tdW5pY2F0aW9uIHdpdGggdGhlCiAgICBvdGhlciBzaWRlIG9mIHRoZSBjb25uZWN0aW9uLCByYXRoZXIgdGhhbiB0aGUgb3JpZ2luYWwgc29ja2V0LgogCisuLiBtZXRob2Q6OiBTU0xTb2NrZXQudmVyc2lvbigpCisKKyAgIFJldHVybiB0aGUgYWN0dWFsIFNTTCBwcm90b2NvbCB2ZXJzaW9uIG5lZ290aWF0ZWQgYnkgdGhlIGNvbm5lY3Rpb24KKyAgIGFzIGEgc3RyaW5nLCBvciBgYE5vbmVgYCBpcyBubyBzZWN1cmUgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4KKyAgIEFzIG9mIHRoaXMgd3JpdGluZywgcG9zc2libGUgcmV0dXJuIHZhbHVlcyBpbmNsdWRlIGBgIlNTTHYyImBgLAorICAgYGAiU1NMdjMiYGAsIGBgIlRMU3YxImBgLCBgYCJUTFN2MS4xImBgIGFuZCBgYCJUTFN2MS4yImBgLgorICAgUmVjZW50IE9wZW5TU0wgdmVyc2lvbnMgbWF5IGRlZmluZSBtb3JlIHJldHVybiB2YWx1ZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAuLiBtZXRob2Q6OiBTU0xTb2NrZXQucGVuZGluZygpCiAKICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBhbHJlYWR5IGRlY3J5cHRlZCBieXRlcyBhdmFpbGFibGUgZm9yIHJlYWQsIHBlbmRpbmcgb24KQEAgLTExMzUsNiArMTIyMSwyMCBAQAogICAgICAgd2hlbiBjb25uZWN0ZWQsIHRoZSA6bWV0aDpgU1NMU29ja2V0LmNpcGhlcmAgbWV0aG9kIG9mIFNTTCBzb2NrZXRzIHdpbGwKICAgICAgIGdpdmUgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBjaXBoZXIuCiAKKy4uIG1ldGhvZDo6IFNTTENvbnRleHQuc2V0X2FscG5fcHJvdG9jb2xzKHByb3RvY29scykKKworICAgU3BlY2lmeSB3aGljaCBwcm90b2NvbHMgdGhlIHNvY2tldCBzaG91bGQgYWR2ZXJ0aXNlIGR1cmluZyB0aGUgU1NML1RMUworICAgaGFuZHNoYWtlLiBJdCBzaG91bGQgYmUgYSBsaXN0IG9mIEFTQ0lJIHN0cmluZ3MsIGxpa2UgYGBbJ2h0dHAvMS4xJywKKyAgICdzcGR5LzInXWBgLCBvcmRlcmVkIGJ5IHByZWZlcmVuY2UuIFRoZSBzZWxlY3Rpb24gb2YgYSBwcm90b2NvbCB3aWxsIGhhcHBlbgorICAgZHVyaW5nIHRoZSBoYW5kc2hha2UsIGFuZCB3aWxsIHBsYXkgb3V0IGFjY29yZGluZyB0byA6cmZjOmA3MzAxYC4gQWZ0ZXIgYQorICAgc3VjY2Vzc2Z1bCBoYW5kc2hha2UsIHRoZSA6bWV0aDpgU1NMU29ja2V0LnNlbGVjdGVkX2FscG5fcHJvdG9jb2xgIG1ldGhvZCB3aWxsCisgICByZXR1cm4gdGhlIGFncmVlZC11cG9uIHByb3RvY29sLgorCisgICBUaGlzIG1ldGhvZCB3aWxsIHJhaXNlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGlmIDpkYXRhOmBIQVNfQUxQTmAgaXMKKyAgIEZhbHNlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXRfbnBuX3Byb3RvY29scyhwcm90b2NvbHMpCiAKICAgIFNwZWNpZnkgd2hpY2ggcHJvdG9jb2xzIHRoZSBzb2NrZXQgc2hvdWxkIGFkdmVydGlzZSBkdXJpbmcgdGhlIFNTTC9UTFMKQEAgLTExNzUsNyArMTI3NSw3IEBACiAKICAgIER1ZSB0byB0aGUgZWFybHkgbmVnb3RpYXRpb24gcGhhc2Ugb2YgdGhlIFRMUyBjb25uZWN0aW9uLCBvbmx5IGxpbWl0ZWQKICAgIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXMgYXJlIHVzYWJsZSBsaWtlCi0gICA6bWV0aDpgU1NMU29ja2V0LnNlbGVjdGVkX25wbl9wcm90b2NvbGAgYW5kIDphdHRyOmBTU0xTb2NrZXQuY29udGV4dGAuCisgICA6bWV0aDpgU1NMU29ja2V0LnNlbGVjdGVkX2FscG5fcHJvdG9jb2xgIGFuZCA6YXR0cjpgU1NMU29ja2V0LmNvbnRleHRgLgogICAgOm1ldGg6YFNTTFNvY2tldC5nZXRwZWVyY2VydGAsIDptZXRoOmBTU0xTb2NrZXQuZ2V0cGVlcmNlcnRgLAogICAgOm1ldGg6YFNTTFNvY2tldC5jaXBoZXJgIGFuZCA6bWV0aDpgU1NMU29ja2V0LmNvbXByZXNzYCBtZXRob2RzIHJlcXVpcmUgdGhhdAogICAgdGhlIFRMUyBjb25uZWN0aW9uIGhhcyBwcm9ncmVzc2VkIGJleW9uZCB0aGUgVExTIENsaWVudCBIZWxsbyBhbmQgdGhlcmVmb3JlCkBAIC0xMjUxLDEwICsxMzUxLDIwIEBACiAgICBxdWl0ZSBzaW1pbGFybHkgdG8gSFRUUCB2aXJ0dWFsIGhvc3RzLiBTcGVjaWZ5aW5nICpzZXJ2ZXJfaG9zdG5hbWUqIHdpbGwKICAgIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgaWYgKnNlcnZlcl9zaWRlKiBpcyB0cnVlLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNC4zCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgQWx3YXlzIGFsbG93IGEgc2VydmVyX2hvc3RuYW1lIHRvIGJlIHBhc3NlZCwgZXZlbiBpZiBPcGVuU1NMIGRvZXMgbm90CiAgICAgICBoYXZlIFNOSS4KIAorLi4gbWV0aG9kOjogU1NMQ29udGV4dC53cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIHNlcnZlcl9zaWRlPUZhbHNlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lKQorCisgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBTU0xPYmplY3RgIGluc3RhbmNlIGJ5IHdyYXBwaW5nIHRoZSBCSU8gb2JqZWN0cworICAgKmluY29taW5nKiBhbmQgKm91dGdvaW5nKi4gVGhlIFNTTCByb3V0aW5lcyB3aWxsIHJlYWQgaW5wdXQgZGF0YSBmcm9tIHRoZQorICAgaW5jb21pbmcgQklPIGFuZCB3cml0ZSBkYXRhIHRvIHRoZSBvdXRnb2luZyBCSU8uCisKKyAgIFRoZSAqc2VydmVyX3NpZGUqIGFuZCAqc2VydmVyX2hvc3RuYW1lKiBwYXJhbWV0ZXJzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcworICAgaW4gOm1ldGg6YFNTTENvbnRleHQud3JhcF9zb2NrZXRgLgorCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LnNlc3Npb25fc3RhdHMoKQogCiAgICBHZXQgc3RhdGlzdGljcyBhYm91dCB0aGUgU1NMIHNlc3Npb25zIGNyZWF0ZWQgb3IgbWFuYWdlZCBieSB0aGlzIGNvbnRleHQuCkBAIC0xNjI3LDcgKzE3MzcsNyBAQAogCiBBbmQgZ28gYmFjayB0byBsaXN0ZW5pbmcgZm9yIG5ldyBjbGllbnQgY29ubmVjdGlvbnMgKG9mIGNvdXJzZSwgYSByZWFsIHNlcnZlcgogd291bGQgcHJvYmFibHkgaGFuZGxlIGVhY2ggY2xpZW50IGNvbm5lY3Rpb24gaW4gYSBzZXBhcmF0ZSB0aHJlYWQsIG9yIHB1dAotdGhlIHNvY2tldHMgaW4gbm9uLWJsb2NraW5nIG1vZGUgYW5kIHVzZSBhbiBldmVudCBsb29wKS4KK3RoZSBzb2NrZXRzIGluIDpyZWY6YG5vbi1ibG9ja2luZyBtb2RlIDxzc2wtbm9uYmxvY2tpbmc+YCBhbmQgdXNlIGFuIGV2ZW50IGxvb3ApLgogCiAKIC4uIF9zc2wtbm9uYmxvY2tpbmc6CkBAIC0xNjQ5LDYgKzE3NTksMTIgQEAKICAgc29ja2V0IGZpcnN0LCBhbmQgYXR0ZW1wdHMgdG8gKnJlYWQqIGZyb20gdGhlIFNTTCBzb2NrZXQgbWF5IHJlcXVpcmUKICAgYSBwcmlvciAqd3JpdGUqIHRvIHRoZSB1bmRlcmx5aW5nIHNvY2tldC4KIAorICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorCisgICAgIEluIGVhcmxpZXIgUHl0aG9uIHZlcnNpb25zLCB0aGUgOm1ldGg6YCFTU0xTb2NrZXQuc2VuZGAgbWV0aG9kCisgICAgIHJldHVybmVkIHplcm8gaW5zdGVhZCBvZiByYWlzaW5nIDpleGM6YFNTTFdhbnRXcml0ZUVycm9yYCBvcgorICAgICA6ZXhjOmBTU0xXYW50UmVhZEVycm9yYC4KKwogLSBDYWxsaW5nIDpmdW5jOmB+c2VsZWN0LnNlbGVjdGAgdGVsbHMgeW91IHRoYXQgdGhlIE9TLWxldmVsIHNvY2tldCBjYW4gYmUKICAgcmVhZCBmcm9tIChvciB3cml0dGVuIHRvKSwgYnV0IGl0IGRvZXMgbm90IGltcGx5IHRoYXQgdGhlcmUgaXMgc3VmZmljaWVudAogICBkYXRhIGF0IHRoZSB1cHBlciBTU0wgbGF5ZXIuICBGb3IgZXhhbXBsZSwgb25seSBwYXJ0IG9mIGFuIFNTTCBmcmFtZSBtaWdodApAQCAtMTY4MSwxMyArMTc5NywxNDMgQEAKIAogLi4gc2VlYWxzbzo6CiAKLSAgIFRoZSA6bW9kOmBhc3luY2lvYCBtb2R1bGUgc3VwcG9ydHMgbm9uLWJsb2NraW5nIFNTTCBzb2NrZXRzIGFuZCBwcm92aWRlcyBhCisgICBUaGUgOm1vZDpgYXN5bmNpb2AgbW9kdWxlIHN1cHBvcnRzIDpyZWY6YG5vbi1ibG9ja2luZyBTU0wgc29ja2V0cworICAgPHNzbC1ub25ibG9ja2luZz5gIGFuZCBwcm92aWRlcyBhCiAgICBoaWdoZXIgbGV2ZWwgQVBJLiBJdCBwb2xscyBmb3IgZXZlbnRzIHVzaW5nIHRoZSA6bW9kOmBzZWxlY3RvcnNgIG1vZHVsZSBhbmQKICAgIGhhbmRsZXMgOmV4YzpgU1NMV2FudFdyaXRlRXJyb3JgLCA6ZXhjOmBTU0xXYW50UmVhZEVycm9yYCBhbmQKICAgIDpleGM6YEJsb2NraW5nSU9FcnJvcmAgZXhjZXB0aW9ucy4gSXQgcnVucyB0aGUgU1NMIGhhbmRzaGFrZSBhc3luY2hyb25vdXNseQogICAgYXMgd2VsbC4KIAogCitNZW1vcnkgQklPIFN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworRXZlciBzaW5jZSB0aGUgU1NMIG1vZHVsZSB3YXMgaW50cm9kdWNlZCBpbiBQeXRob24gMi42LCB0aGUgOmNsYXNzOmBTU0xTb2NrZXRgCitjbGFzcyBoYXMgcHJvdmlkZWQgdHdvIHJlbGF0ZWQgYnV0IGRpc3RpbmN0IGFyZWFzIG9mIGZ1bmN0aW9uYWxpdHk6CisKKy0gU1NMIHByb3RvY29sIGhhbmRsaW5nCistIE5ldHdvcmsgSU8KKworVGhlIG5ldHdvcmsgSU8gQVBJIGlzIGlkZW50aWNhbCB0byB0aGF0IHByb3ZpZGVkIGJ5IDpjbGFzczpgc29ja2V0LnNvY2tldGAsCitmcm9tIHdoaWNoIDpjbGFzczpgU1NMU29ja2V0YCBhbHNvIGluaGVyaXRzLiBUaGlzIGFsbG93cyBhbiBTU0wgc29ja2V0IHRvIGJlCit1c2VkIGFzIGEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgYSByZWd1bGFyIHNvY2tldCwgbWFraW5nIGl0IHZlcnkgZWFzeSB0byBhZGQKK1NTTCBzdXBwb3J0IHRvIGFuIGV4aXN0aW5nIGFwcGxpY2F0aW9uLgorCitDb21iaW5pbmcgU1NMIHByb3RvY29sIGhhbmRsaW5nIGFuZCBuZXR3b3JrIElPIHVzdWFsbHkgd29ya3Mgd2VsbCwgYnV0IHRoZXJlCithcmUgc29tZSBjYXNlcyB3aGVyZSBpdCBkb2Vzbid0LiBBbiBleGFtcGxlIGlzIGFzeW5jIElPIGZyYW1ld29ya3MgdGhhdCB3YW50IHRvCit1c2UgYSBkaWZmZXJlbnQgSU8gbXVsdGlwbGV4aW5nIG1vZGVsIHRoYW4gdGhlICJzZWxlY3QvcG9sbCBvbiBhIGZpbGUKK2Rlc2NyaXB0b3IiIChyZWFkaW5lc3MgYmFzZWQpIG1vZGVsIHRoYXQgaXMgYXNzdW1lZCBieSA6Y2xhc3M6YHNvY2tldC5zb2NrZXRgCithbmQgYnkgdGhlIGludGVybmFsIE9wZW5TU0wgc29ja2V0IElPIHJvdXRpbmVzLiBUaGlzIGlzIG1vc3RseSByZWxldmFudCBmb3IKK3BsYXRmb3JtcyBsaWtlIFdpbmRvd3Mgd2hlcmUgdGhpcyBtb2RlbCBpcyBub3QgZWZmaWNpZW50LiBGb3IgdGhpcyBwdXJwb3NlLCBhCityZWR1Y2VkIHNjb3BlIHZhcmlhbnQgb2YgOmNsYXNzOmBTU0xTb2NrZXRgIGNhbGxlZCA6Y2xhc3M6YFNTTE9iamVjdGAgaXMKK3Byb3ZpZGVkLgorCisuLiBjbGFzczo6IFNTTE9iamVjdAorCisgICBBIHJlZHVjZWQtc2NvcGUgdmFyaWFudCBvZiA6Y2xhc3M6YFNTTFNvY2tldGAgcmVwcmVzZW50aW5nIGFuIFNTTCBwcm90b2NvbAorICAgaW5zdGFuY2UgdGhhdCBkb2VzIG5vdCBjb250YWluIGFueSBuZXR3b3JrIElPIG1ldGhvZHMuIFRoaXMgY2xhc3MgaXMKKyAgIHR5cGljYWxseSB1c2VkIGJ5IGZyYW1ld29yayBhdXRob3JzIHRoYXQgd2FudCB0byBpbXBsZW1lbnQgYXN5bmNocm9ub3VzIElPCisgICBmb3IgU1NMIHRocm91Z2ggbWVtb3J5IGJ1ZmZlcnMuCisKKyAgIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhbiBpbnRlcmZhY2Ugb24gdG9wIG9mIGEgbG93LWxldmVsIFNTTCBvYmplY3QgYXMKKyAgIGltcGxlbWVudGVkIGJ5IE9wZW5TU0wuIFRoaXMgb2JqZWN0IGNhcHR1cmVzIHRoZSBzdGF0ZSBvZiBhbiBTU0wgY29ubmVjdGlvbgorICAgYnV0IGRvZXMgbm90IHByb3ZpZGUgYW55IG5ldHdvcmsgSU8gaXRzZWxmLiBJTyBuZWVkcyB0byBiZSBwZXJmb3JtZWQgdGhyb3VnaAorICAgc2VwYXJhdGUgIkJJTyIgb2JqZWN0cyB3aGljaCBhcmUgT3BlblNTTCdzIElPIGFic3RyYWN0aW9uIGxheWVyLgorCisgICBBbiA6Y2xhc3M6YFNTTE9iamVjdGAgaW5zdGFuY2UgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgdGhlCisgICA6bWV0aDpgflNTTENvbnRleHQud3JhcF9iaW9gIG1ldGhvZC4gVGhpcyBtZXRob2Qgd2lsbCBjcmVhdGUgdGhlCisgICA6Y2xhc3M6YFNTTE9iamVjdGAgaW5zdGFuY2UgYW5kIGJpbmQgaXQgdG8gYSBwYWlyIG9mIEJJT3MuIFRoZSAqaW5jb21pbmcqCisgICBCSU8gaXMgdXNlZCB0byBwYXNzIGRhdGEgZnJvbSBQeXRob24gdG8gdGhlIFNTTCBwcm90b2NvbCBpbnN0YW5jZSwgd2hpbGUgdGhlCisgICAqb3V0Z29pbmcqIEJJTyBpcyB1c2VkIHRvIHBhc3MgZGF0YSB0aGUgb3RoZXIgd2F5IGFyb3VuZC4KKworICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSBhdmFpbGFibGU6CisKKyAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuY29udGV4dGAKKyAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuc2VydmVyX3NpZGVgCisgICAtIDphdHRyOmB+U1NMU29ja2V0LnNlcnZlcl9ob3N0bmFtZWAKKyAgIC0gOm1ldGg6YH5TU0xTb2NrZXQucmVhZGAKKyAgIC0gOm1ldGg6YH5TU0xTb2NrZXQud3JpdGVgCisgICAtIDptZXRoOmB+U1NMU29ja2V0LmdldHBlZXJjZXJ0YAorICAgLSA6bWV0aDpgflNTTFNvY2tldC5zZWxlY3RlZF9ucG5fcHJvdG9jb2xgCisgICAtIDptZXRoOmB+U1NMU29ja2V0LmNpcGhlcmAKKyAgIC0gOm1ldGg6YH5TU0xTb2NrZXQuc2hhcmVkX2NpcGhlcnNgCisgICAtIDptZXRoOmB+U1NMU29ja2V0LmNvbXByZXNzaW9uYAorICAgLSA6bWV0aDpgflNTTFNvY2tldC5wZW5kaW5nYAorICAgLSA6bWV0aDpgflNTTFNvY2tldC5kb19oYW5kc2hha2VgCisgICAtIDptZXRoOmB+U1NMU29ja2V0LnVud3JhcGAKKyAgIC0gOm1ldGg6YH5TU0xTb2NrZXQuZ2V0X2NoYW5uZWxfYmluZGluZ2AKKworICAgV2hlbiBjb21wYXJlZCB0byA6Y2xhc3M6YFNTTFNvY2tldGAsIHRoaXMgb2JqZWN0IGxhY2tzIHRoZSBmb2xsb3dpbmcKKyAgIGZlYXR1cmVzOgorCisgICAtIEFueSBmb3JtIG9mIG5ldHdvcmsgSU8gaW5jbHVnaW5nIG1ldGhvZHMgc3VjaCBhcyBgYHJlY3YoKWBgIGFuZAorICAgICBgYHNlbmQoKWBgLgorCisgICAtIFRoZXJlIGlzIG5vICpkb19oYW5kc2hha2Vfb25fY29ubmVjdCogbWFjaGluZXJ5LiBZb3UgbXVzdCBhbHdheXMgbWFudWFsbHkKKyAgICAgY2FsbCA6bWV0aDpgflNTTFNvY2tldC5kb19oYW5kc2hha2VgIHRvIHN0YXJ0IHRoZSBoYW5kc2hha2UuCisKKyAgIC0gVGhlcmUgaXMgbm8gaGFuZGxpbmcgb2YgKnN1cHByZXNzX3JhZ2dlZF9lb2ZzKi4gQWxsIGVuZC1vZi1maWxlIGNvbmRpdGlvbnMKKyAgICAgdGhhdCBhcmUgaW4gdmlvbGF0aW9uIG9mIHRoZSBwcm90b2NvbCBhcmUgcmVwb3J0ZWQgdmlhIHRoZQorICAgICA6ZXhjOmBTU0xFT0ZFcnJvcmAgZXhjZXB0aW9uLgorCisgICAtIFRoZSBtZXRob2QgOm1ldGg6YH5TU0xTb2NrZXQudW53cmFwYCBjYWxsIGRvZXMgbm90IHJldHVybiBhbnl0aGluZywKKyAgICAgdW5saWtlIGZvciBhbiBTU0wgc29ja2V0IHdoZXJlIGl0IHJldHVybnMgdGhlIHVuZGVybHlpbmcgc29ja2V0LgorCisgICAtIFRoZSAqc2VydmVyX25hbWVfY2FsbGJhY2sqIGNhbGxiYWNrIHBhc3NlZCB0bworICAgICA6bWV0aDpgU1NMQ29udGV4dC5zZXRfc2VydmVybmFtZV9jYWxsYmFja2Agd2lsbCBnZXQgYW4gOmNsYXNzOmBTU0xPYmplY3RgCisgICAgIGluc3RhbmNlIGluc3RlYWQgb2YgYSA6Y2xhc3M6YFNTTFNvY2tldGAgaW5zdGFuY2UgYXMgaXRzIGZpcnN0IHBhcmFtZXRlci4KKworICAgU29tZSBub3RlcyByZWxhdGVkIHRvIHRoZSB1c2Ugb2YgOmNsYXNzOmBTU0xPYmplY3RgOgorCisgICAtIEFsbCBJTyBvbiBhbiA6Y2xhc3M6YFNTTE9iamVjdGAgaXMgOnJlZjpgbm9uLWJsb2NraW5nIDxzc2wtbm9uYmxvY2tpbmc+YC4KKyAgICAgVGhpcyBtZWFucyB0aGF0IGZvciBleGFtcGxlIDptZXRoOmB+U1NMU29ja2V0LnJlYWRgIHdpbGwgcmFpc2UgYW4KKyAgICAgOmV4YzpgU1NMV2FudFJlYWRFcnJvcmAgaWYgaXQgbmVlZHMgbW9yZSBkYXRhIHRoYW4gdGhlIGluY29taW5nIEJJTyBoYXMKKyAgICAgYXZhaWxhYmxlLgorCisgICAtIFRoZXJlIGlzIG5vIG1vZHVsZS1sZXZlbCBgYHdyYXBfYmlvKClgYCBjYWxsIGxpa2UgdGhlcmUgaXMgZm9yCisgICAgIDptZXRoOmB+U1NMQ29udGV4dC53cmFwX3NvY2tldGAuIEFuIDpjbGFzczpgU1NMT2JqZWN0YCBpcyBhbHdheXMgY3JlYXRlZAorICAgICB2aWEgYW4gOmNsYXNzOmBTU0xDb250ZXh0YC4KKworQW4gU1NMT2JqZWN0IGNvbW11bmljYXRlcyB3aXRoIHRoZSBvdXRzaWRlIHdvcmxkIHVzaW5nIG1lbW9yeSBidWZmZXJzLiBUaGUKK2NsYXNzIDpjbGFzczpgTWVtb3J5QklPYCBwcm92aWRlcyBhIG1lbW9yeSBidWZmZXIgdGhhdCBjYW4gYmUgdXNlZCBmb3IgdGhpcworcHVycG9zZS4gIEl0IHdyYXBzIGFuIE9wZW5TU0wgbWVtb3J5IEJJTyAoQmFzaWMgSU8pIG9iamVjdDoKKworLi4gY2xhc3M6OiBNZW1vcnlCSU8KKworICAgQSBtZW1vcnkgYnVmZmVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFzcyBkYXRhIGJldHdlZW4gUHl0aG9uIGFuZCBhbiBTU0wKKyAgIHByb3RvY29sIGluc3RhbmNlLgorCisgICAuLiBhdHRyaWJ1dGU6OiBNZW1vcnlCSU8ucGVuZGluZworCisgICAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBjdXJyZW50bHkgaW4gdGhlIG1lbW9yeSBidWZmZXIuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IE1lbW9yeUJJTy5lb2YKKworICAgICAgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IEJJTyBpcyBjdXJyZW50IGF0IHRoZSBlbmQtb2YtZmlsZQorICAgICAgcG9zaXRpb24uCisKKyAgIC4uIG1ldGhvZDo6IE1lbW9yeUJJTy5yZWFkKG49LTEpCisKKyAgICAgIFJlYWQgdXAgdG8gKm4qIGJ5dGVzIGZyb20gdGhlIG1lbW9yeSBidWZmZXIuIElmICpuKiBpcyBub3Qgc3BlY2lmaWVkIG9yCisgICAgICBuZWdhdGl2ZSwgYWxsIGJ5dGVzIGFyZSByZXR1cm5lZC4KKworICAgLi4gbWV0aG9kOjogTWVtb3J5QklPLndyaXRlKGJ1ZikKKworICAgICAgV3JpdGUgdGhlIGJ5dGVzIGZyb20gKmJ1ZiogdG8gdGhlIG1lbW9yeSBCSU8uIFRoZSAqYnVmKiBhcmd1bWVudCBtdXN0IGJlIGFuCisgICAgICBvYmplY3Qgc3VwcG9ydGluZyB0aGUgYnVmZmVyIHByb3RvY29sLgorCisgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiwgd2hpY2ggaXMgYWx3YXlzIGVxdWFsIHRvCisgICAgICB0aGUgbGVuZ3RoIG9mICpidWYqLgorCisgICAuLiBtZXRob2Q6OiBNZW1vcnlCSU8ud3JpdGVfZW9mKCkKKworICAgICAgV3JpdGUgYW4gRU9GIG1hcmtlciB0byB0aGUgbWVtb3J5IEJJTy4gQWZ0ZXIgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLCBpdAorICAgICAgaXMgaWxsZWdhbCB0byBjYWxsIDptZXRoOmB+TWVtb3J5QklPLndyaXRlYC4gVGhlIGF0dHJpYnV0ZSA6YXR0cjpgZW9mYCB3aWxsCisgICAgICBiZWNvbWUgdHJ1ZSBhZnRlciBhbGwgZGF0YSBjdXJyZW50bHkgaW4gdGhlIGJ1ZmZlciBoYXMgYmVlbiByZWFkLgorCisKIC4uIF9zc2wtc2VjdXJpdHk6CiAKIFNlY3VyaXR5IGNvbnNpZGVyYXRpb25zCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdGF0LnJzdCBiL0RvYy9saWJyYXJ5L3N0YXQucnN0CmluZGV4IDI0NzY5ZjYuLjg0NWIyZWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0YXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N0YXQucnN0CkBAIC0xMjYsNyArMTI2LDcgQEAKICAgIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgICAgd2Fsa3RyZWUoc3lzLmFyZ3ZbMV0sIHZpc2l0ZmlsZSkKIAotQW4gYWRkaXRpb25hbCB1dGlsaXR5IGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRvIGNvdmVydCBhIGZpbGUncyBtb2RlIGluIGEgaHVtYW4KK0FuIGFkZGl0aW9uYWwgdXRpbGl0eSBmdW5jdGlvbiBpcyBwcm92aWRlZCB0byBjb252ZXJ0IGEgZmlsZSdzIG1vZGUgaW4gYSBodW1hbgogcmVhZGFibGUgc3RyaW5nOgogCiAuLiBmdW5jdGlvbjo6IGZpbGVtb2RlKG1vZGUpCkBAIC0zOTksMyArMzk5LDI5IEBACiAgICBUaGUgZmlsZSBpcyBhIHNuYXBzaG90IGZpbGUuCiAKIFNlZSB0aGUgXCpCU0Qgb3IgTWFjIE9TIHN5c3RlbXMgbWFuIHBhZ2UgOm1hbnBhZ2U6YGNoZmxhZ3MoMilgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCitPbiBXaW5kb3dzLCB0aGUgZm9sbG93aW5nIGZpbGUgYXR0cmlidXRlIGNvbnN0YW50cyBhcmUgYXZhaWxhYmxlIGZvciB1c2Ugd2hlbgordGVzdGluZyBiaXRzIGluIHRoZSBgYHN0X2ZpbGVfYXR0cmlidXRlc2BgIG1lbWJlciByZXR1cm5lZCBieSA6ZnVuYzpgb3Muc3RhdGAuCitTZWUgdGhlIGBXaW5kb3dzIEFQSSBkb2N1bWVudGF0aW9uCis8aHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9nZzI1ODExNy5hc3B4PmBfCitmb3IgbW9yZSBkZXRhaWwgb24gdGhlIG1lYW5pbmcgb2YgdGhlc2UgY29uc3RhbnRzLgorCisuLiBkYXRhOjogRklMRV9BVFRSSUJVVEVfQVJDSElWRQorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX0NPTVBSRVNTRUQKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9ERVZJQ0UKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9FTkNSWVBURUQKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9ISURERU4KKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9JTlRFR1JJVFlfU1RSRUFNCisgICAgICAgICAgRklMRV9BVFRSSUJVVEVfTk9STUFMCisgICAgICAgICAgRklMRV9BVFRSSUJVVEVfTk9UX0NPTlRFTlRfSU5ERVhFRAorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX05PX1NDUlVCX0RBVEEKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9PRkZMSU5FCisgICAgICAgICAgRklMRV9BVFRSSUJVVEVfUkVBRE9OTFkKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5UCisgICAgICAgICAgRklMRV9BVFRSSUJVVEVfU1BBUlNFX0ZJTEUKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9TWVNURU0KKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9URU1QT1JBUlkKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9WSVJUVUFMCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0CmluZGV4IDg4MTVkMzguLjhiY2M0YTAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QKQEAgLTM1NCw3ICszNTQsNyBAQAogICAgVGhlIG51bWVyaWMgbGl0ZXJhbHMgYWNjZXB0ZWQgaW5jbHVkZSB0aGUgZGlnaXRzIGBgMGBgIHRvIGBgOWBgIG9yIGFueQogICAgVW5pY29kZSBlcXVpdmFsZW50IChjb2RlIHBvaW50cyB3aXRoIHRoZSBgYE5kYGAgcHJvcGVydHkpLgogCi0gICBTZWUgaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4zLjAvdWNkL2V4dHJhY3RlZC9EZXJpdmVkTnVtZXJpY1R5cGUudHh0CisgICBTZWUgaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOC4wLjAvdWNkL2V4dHJhY3RlZC9EZXJpdmVkTnVtZXJpY1R5cGUudHh0CiAgICBmb3IgYSBjb21wbGV0ZSBsaXN0IG9mIGNvZGUgcG9pbnRzIHdpdGggdGhlIGBgTmRgYCBwcm9wZXJ0eS4KIAogCkBAIC0xOTQ5LDYgKzE5NDksMTYgQEAKICAgICAgID4+PiAnd3d3LmV4YW1wbGUuY29tJy5zdHJpcCgnY21vd3ouJykKICAgICAgICdleGFtcGxlJwogCisgICBUaGUgb3V0ZXJtb3N0IGxlYWRpbmcgYW5kIHRyYWlsaW5nICpjaGFycyogYXJndW1lbnQgdmFsdWVzIGFyZSBzdHJpcHBlZAorICAgZnJvbSB0aGUgc3RyaW5nLiBDaGFyYWN0ZXJzIGFyZSByZW1vdmVkIGZyb20gdGhlIGxlYWRpbmcgZW5kIHVudGlsCisgICByZWFjaGluZyBhIHN0cmluZyBjaGFyYWN0ZXIgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIHRoZSBzZXQgb2YKKyAgIGNoYXJhY3RlcnMgaW4gKmNoYXJzKi4gQSBzaW1pbGFyIGFjdGlvbiB0YWtlcyBwbGFjZSBvbiB0aGUgdHJhaWxpbmcgZW5kLgorICAgRm9yIGV4YW1wbGU6OgorCisgICAgICA+Pj4gY29tbWVudF9zdHJpbmcgPSAnIy4uLi4uLi4gU2VjdGlvbiAzLjIuMSBJc3N1ZSAjMzIgLi4uLi4uLicKKyAgICAgID4+PiBjb21tZW50X3N0cmluZy5zdHJpcCgnLiMhICcpCisgICAgICAnU2VjdGlvbiAzLjIuMSBJc3N1ZSAjMzInCisKIAogLi4gbWV0aG9kOjogc3RyLnN3YXBjYXNlKCkKIApAQCAtMjMwMiw2ICsyMzEyLDE5IEBACiAgICA+Pj4gYnl0ZXMuZnJvbWhleCgnMkVmMCBGMWYyICAnKQogICAgYicuXHhmMFx4ZjFceGYyJwogCitBIHJldmVyc2UgY29udmVyc2lvbiBmdW5jdGlvbiBleGlzdHMgdG8gdHJhbnNmb3JtIGEgYnl0ZXMgb2JqZWN0IGludG8gaXRzCitoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbi4KKworLi4gbWV0aG9kOjogYnl0ZXMuaGV4KCkKKworICAgUmV0dXJuIGEgc3RyaW5nIG9iamVjdCBjb250YWluaW5nIHR3byBoZXhhZGVjaW1hbCBkaWdpdHMgZm9yIGVhY2gKKyAgIGJ5dGUgaW4gdGhlIGluc3RhbmNlLgorCisgICA+Pj4gYidceGYwXHhmMVx4ZjInLmhleCgpCisgICAnZjBmMWYyJworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogU2luY2UgYnl0ZXMgb2JqZWN0cyBhcmUgc2VxdWVuY2VzIG9mIGludGVnZXJzIChha2luIHRvIGEgdHVwbGUpLCBmb3IgYSBieXRlcwogb2JqZWN0ICpiKiwgYGBiWzBdYGAgd2lsbCBiZSBhbiBpbnRlZ2VyLCB3aGlsZSBgYGJbMDoxXWBgIHdpbGwgYmUgYSBieXRlcwogb2JqZWN0IG9mIGxlbmd0aCAxLiAgKFRoaXMgY29udHJhc3RzIHdpdGggdGV4dCBzdHJpbmdzLCB3aGVyZSBib3RoIGluZGV4aW5nCkBAIC0yMzU3LDYgKzIzODAsMTkgQEAKICAgID4+PiBieXRlYXJyYXkuZnJvbWhleCgnMkVmMCBGMWYyICAnKQogICAgYnl0ZWFycmF5KGInLlx4ZjBceGYxXHhmMicpCiAKK0EgcmV2ZXJzZSBjb252ZXJzaW9uIGZ1bmN0aW9uIGV4aXN0cyB0byB0cmFuc2Zvcm0gYSBieXRlYXJyYXkgb2JqZWN0IGludG8gaXRzCitoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbi4KKworLi4gbWV0aG9kOjogYnl0ZWFycmF5LmhleCgpCisKKyAgIFJldHVybiBhIHN0cmluZyBvYmplY3QgY29udGFpbmluZyB0d28gaGV4YWRlY2ltYWwgZGlnaXRzIGZvciBlYWNoCisgICBieXRlIGluIHRoZSBpbnN0YW5jZS4KKworICAgPj4+IGJ5dGVhcnJheShiJ1x4ZjBceGYxXHhmMicpLmhleCgpCisgICAnZjBmMWYyJworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogU2luY2UgYnl0ZWFycmF5IG9iamVjdHMgYXJlIHNlcXVlbmNlcyBvZiBpbnRlZ2VycyAoYWtpbiB0byBhIGxpc3QpLCBmb3IgYQogYnl0ZWFycmF5IG9iamVjdCAqYiosIGBgYlswXWBgIHdpbGwgYmUgYW4gaW50ZWdlciwgd2hpbGUgYGBiWzA6MV1gYCB3aWxsIGJlCiBhIGJ5dGVhcnJheSBvYmplY3Qgb2YgbGVuZ3RoIDEuICAoVGhpcyBjb250cmFzdHMgd2l0aCB0ZXh0IHN0cmluZ3MsIHdoZXJlCkBAIC0zMTAyLDYgKzMxMzgsMjAzIEBACiAgICAgICBhbHdheXMgcHJvZHVjZXMgYSBuZXcgb2JqZWN0LCBldmVuIGlmIG5vIGNoYW5nZXMgd2VyZSBtYWRlLgogCiAKKy4uIF9ieXRlcy1mb3JtYXR0aW5nOgorCitgYHByaW50ZmBgLXN0eWxlIEJ5dGVzIEZvcm1hdHRpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgc2luZ2xlOiBmb3JtYXR0aW5nLCBieXRlcyAoJSkKKyAgIHNpbmdsZTogZm9ybWF0dGluZywgYnl0ZWFycmF5ICglKQorICAgc2luZ2xlOiBpbnRlcnBvbGF0aW9uLCBieXRlcyAoJSkKKyAgIHNpbmdsZTogaW50ZXJwb2xhdGlvbiwgYnl0ZWFycmF5ICglKQorICAgc2luZ2xlOiBieXRlczsgZm9ybWF0dGluZworICAgc2luZ2xlOiBieXRlYXJyYXk7IGZvcm1hdHRpbmcKKyAgIHNpbmdsZTogYnl0ZXM7IGludGVycG9sYXRpb24KKyAgIHNpbmdsZTogYnl0ZWFycmF5OyBpbnRlcnBvbGF0aW9uCisgICBzaW5nbGU6IHByaW50Zi1zdHlsZSBmb3JtYXR0aW5nCisgICBzaW5nbGU6IHNwcmludGYtc3R5bGUgZm9ybWF0dGluZworICAgc2luZ2xlOiAlIGZvcm1hdHRpbmcKKyAgIHNpbmdsZTogJSBpbnRlcnBvbGF0aW9uCisKKy4uIG5vdGU6OgorCisgICBUaGUgZm9ybWF0dGluZyBvcGVyYXRpb25zIGRlc2NyaWJlZCBoZXJlIGV4aGliaXQgYSB2YXJpZXR5IG9mIHF1aXJrcyB0aGF0CisgICBsZWFkIHRvIGEgbnVtYmVyIG9mIGNvbW1vbiBlcnJvcnMgKHN1Y2ggYXMgZmFpbGluZyB0byBkaXNwbGF5IHR1cGxlcyBhbmQKKyAgIGRpY3Rpb25hcmllcyBjb3JyZWN0bHkpLiAgSWYgdGhlIHZhbHVlIGJlaW5nIHByaW50ZWQgbWF5IGJlIGEgdHVwbGUgb3IKKyAgIGRpY3Rpb25hcnksIHdyYXAgaXQgaW4gYSB0dXBsZS4KKworQnl0ZXMgb2JqZWN0cyAoYGBieXRlc2BgL2BgYnl0ZWFycmF5YGApIGhhdmUgb25lIHVuaXF1ZSBidWlsdC1pbiBvcGVyYXRpb246Cit0aGUgYGAlYGAgb3BlcmF0b3IgKG1vZHVsbykuCitUaGlzIGlzIGFsc28ga25vd24gYXMgdGhlIGJ5dGVzICpmb3JtYXR0aW5nKiBvciAqaW50ZXJwb2xhdGlvbiogb3BlcmF0b3IuCitHaXZlbiBgYGZvcm1hdCAlIHZhbHVlc2BgICh3aGVyZSAqZm9ybWF0KiBpcyBhIGJ5dGVzIG9iamVjdCksIGBgJWBgIGNvbnZlcnNpb24KK3NwZWNpZmljYXRpb25zIGluICpmb3JtYXQqIGFyZSByZXBsYWNlZCB3aXRoIHplcm8gb3IgbW9yZSBlbGVtZW50cyBvZiAqdmFsdWVzKi4KK1RoZSBlZmZlY3QgaXMgc2ltaWxhciB0byB1c2luZyB0aGUgOmM6ZnVuYzpgc3ByaW50ZmAgaW4gdGhlIEMgbGFuZ3VhZ2UuCisKK0lmICpmb3JtYXQqIHJlcXVpcmVzIGEgc2luZ2xlIGFyZ3VtZW50LCAqdmFsdWVzKiBtYXkgYmUgYSBzaW5nbGUgbm9uLXR1cGxlCitvYmplY3QuIFs1XV8gIE90aGVyd2lzZSwgKnZhbHVlcyogbXVzdCBiZSBhIHR1cGxlIHdpdGggZXhhY3RseSB0aGUgbnVtYmVyIG9mCitpdGVtcyBzcGVjaWZpZWQgYnkgdGhlIGZvcm1hdCBieXRlcyBvYmplY3QsIG9yIGEgc2luZ2xlIG1hcHBpbmcgb2JqZWN0IChmb3IKK2V4YW1wbGUsIGEgZGljdGlvbmFyeSkuCisKK0EgY29udmVyc2lvbiBzcGVjaWZpZXIgY29udGFpbnMgdHdvIG9yIG1vcmUgY2hhcmFjdGVycyBhbmQgaGFzIHRoZSBmb2xsb3dpbmcKK2NvbXBvbmVudHMsIHdoaWNoIG11c3Qgb2NjdXIgaW4gdGhpcyBvcmRlcjoKKworIy4gVGhlIGBgJyUnYGAgY2hhcmFjdGVyLCB3aGljaCBtYXJrcyB0aGUgc3RhcnQgb2YgdGhlIHNwZWNpZmllci4KKworIy4gTWFwcGluZyBrZXkgKG9wdGlvbmFsKSwgY29uc2lzdGluZyBvZiBhIHBhcmVudGhlc2lzZWQgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycworICAgKGZvciBleGFtcGxlLCBgYChzb21lbmFtZSlgYCkuCisKKyMuIENvbnZlcnNpb24gZmxhZ3MgKG9wdGlvbmFsKSwgd2hpY2ggYWZmZWN0IHRoZSByZXN1bHQgb2Ygc29tZSBjb252ZXJzaW9uCisgICB0eXBlcy4KKworIy4gTWluaW11bSBmaWVsZCB3aWR0aCAob3B0aW9uYWwpLiAgSWYgc3BlY2lmaWVkIGFzIGFuIGBgJyonYGAgKGFzdGVyaXNrKSwgdGhlCisgICBhY3R1YWwgd2lkdGggaXMgcmVhZCBmcm9tIHRoZSBuZXh0IGVsZW1lbnQgb2YgdGhlIHR1cGxlIGluICp2YWx1ZXMqLCBhbmQgdGhlCisgICBvYmplY3QgdG8gY29udmVydCBjb21lcyBhZnRlciB0aGUgbWluaW11bSBmaWVsZCB3aWR0aCBhbmQgb3B0aW9uYWwgcHJlY2lzaW9uLgorCisjLiBQcmVjaXNpb24gKG9wdGlvbmFsKSwgZ2l2ZW4gYXMgYSBgYCcuJ2BgIChkb3QpIGZvbGxvd2VkIGJ5IHRoZSBwcmVjaXNpb24uICBJZgorICAgc3BlY2lmaWVkIGFzIGBgJyonYGAgKGFuIGFzdGVyaXNrKSwgdGhlIGFjdHVhbCBwcmVjaXNpb24gaXMgcmVhZCBmcm9tIHRoZSBuZXh0CisgICBlbGVtZW50IG9mIHRoZSB0dXBsZSBpbiAqdmFsdWVzKiwgYW5kIHRoZSB2YWx1ZSB0byBjb252ZXJ0IGNvbWVzIGFmdGVyIHRoZQorICAgcHJlY2lzaW9uLgorCisjLiBMZW5ndGggbW9kaWZpZXIgKG9wdGlvbmFsKS4KKworIy4gQ29udmVyc2lvbiB0eXBlLgorCitXaGVuIHRoZSByaWdodCBhcmd1bWVudCBpcyBhIGRpY3Rpb25hcnkgKG9yIG90aGVyIG1hcHBpbmcgdHlwZSksIHRoZW4gdGhlCitmb3JtYXRzIGluIHRoZSBieXRlcyBvYmplY3QgKm11c3QqIGluY2x1ZGUgYSBwYXJlbnRoZXNpc2VkIG1hcHBpbmcga2V5IGludG8gdGhhdAorZGljdGlvbmFyeSBpbnNlcnRlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgYGAnJSdgYCBjaGFyYWN0ZXIuIFRoZSBtYXBwaW5nIGtleQorc2VsZWN0cyB0aGUgdmFsdWUgdG8gYmUgZm9ybWF0dGVkIGZyb20gdGhlIG1hcHBpbmcuICBGb3IgZXhhbXBsZToKKworICAgPj4+IHByaW50KGInJShsYW5ndWFnZSlzIGhhcyAlKG51bWJlcikwM2QgcXVvdGUgdHlwZXMuJyAlCisgICAuLi4gICAgICAge2InbGFuZ3VhZ2UnOiBiIlB5dGhvbiIsIGIibnVtYmVyIjogMn0pCisgICBiJ1B5dGhvbiBoYXMgMDAyIHF1b3RlIHR5cGVzLicKKworSW4gdGhpcyBjYXNlIG5vIGBgKmBgIHNwZWNpZmllcnMgbWF5IG9jY3VyIGluIGEgZm9ybWF0IChzaW5jZSB0aGV5IHJlcXVpcmUgYQorc2VxdWVudGlhbCBwYXJhbWV0ZXIgbGlzdCkuCisKK1RoZSBjb252ZXJzaW9uIGZsYWcgY2hhcmFjdGVycyBhcmU6CisKKystLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBGbGFnICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrPT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKK3wgYGAnIydgYCB8IFRoZSB2YWx1ZSBjb252ZXJzaW9uIHdpbGwgdXNlIHRoZSAiYWx0ZXJuYXRlIGZvcm0iICh3aGVyZSBkZWZpbmVkICAgfAorfCAgICAgICAgIHwgYmVsb3cpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGAnMCdgYCB8IFRoZSBjb252ZXJzaW9uIHdpbGwgYmUgemVybyBwYWRkZWQgZm9yIG51bWVyaWMgdmFsdWVzLiAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgJy0nYGAgfCBUaGUgY29udmVydGVkIHZhbHVlIGlzIGxlZnQgYWRqdXN0ZWQgKG92ZXJyaWRlcyB0aGUgYGAnMCdgYCAgICAgICAgIHwKK3wgICAgICAgICB8IGNvbnZlcnNpb24gaWYgYm90aCBhcmUgZ2l2ZW4pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgJyAnYGAgfCAoYSBzcGFjZSkgQSBibGFuayBzaG91bGQgYmUgbGVmdCBiZWZvcmUgYSBwb3NpdGl2ZSBudW1iZXIgKG9yIGVtcHR5IHwKK3wgICAgICAgICB8IHN0cmluZykgcHJvZHVjZWQgYnkgYSBzaWduZWQgY29udmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgJysnYGAgfCBBIHNpZ24gY2hhcmFjdGVyIChgYCcrJ2BgIG9yIGBgJy0nYGApIHdpbGwgcHJlY2VkZSB0aGUgY29udmVyc2lvbiAgIHwKK3wgICAgICAgICB8IChvdmVycmlkZXMgYSAic3BhY2UiIGZsYWcpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKK0EgbGVuZ3RoIG1vZGlmaWVyIChgYGhgYCwgYGBsYGAsIG9yIGBgTGBgKSBtYXkgYmUgcHJlc2VudCwgYnV0IGlzIGlnbm9yZWQgYXMgaXQKK2lzIG5vdCBuZWNlc3NhcnkgZm9yIFB5dGhvbiAtLSBzbyBlLmcuIGBgJWxkYGAgaXMgaWRlbnRpY2FsIHRvIGBgJWRgYC4KKworVGhlIGNvbnZlcnNpb24gdHlwZXMgYXJlOgorCisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IENvbnZlcnNpb24gfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyB8CisrPT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rCit8IGBgJ2QnYGAgICAgfCBTaWduZWQgaW50ZWdlciBkZWNpbWFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2knYGAgICAgfCBTaWduZWQgaW50ZWdlciBkZWNpbWFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ28nYGAgICAgfCBTaWduZWQgb2N0YWwgdmFsdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcKDEpICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3UnYGAgICAgfCBPYnNvbGV0ZSB0eXBlIC0tIGl0IGlzIGlkZW50aWNhbCB0byBgYCdkJ2BgLiAgICAgICAgfCBcKDgpICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3gnYGAgICAgfCBTaWduZWQgaGV4YWRlY2ltYWwgKGxvd2VyY2FzZSkuICAgICAgICAgICAgICAgICAgICAgfCBcKDIpICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ1gnYGAgICAgfCBTaWduZWQgaGV4YWRlY2ltYWwgKHVwcGVyY2FzZSkuICAgICAgICAgICAgICAgICAgICAgfCBcKDIpICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2UnYGAgICAgfCBGbG9hdGluZyBwb2ludCBleHBvbmVudGlhbCBmb3JtYXQgKGxvd2VyY2FzZSkuICAgICAgfCBcKDMpICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ0UnYGAgICAgfCBGbG9hdGluZyBwb2ludCBleHBvbmVudGlhbCBmb3JtYXQgKHVwcGVyY2FzZSkuICAgICAgfCBcKDMpICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2YnYGAgICAgfCBGbG9hdGluZyBwb2ludCBkZWNpbWFsIGZvcm1hdC4gICAgICAgICAgICAgICAgICAgICAgfCBcKDMpICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ0YnYGAgICAgfCBGbG9hdGluZyBwb2ludCBkZWNpbWFsIGZvcm1hdC4gICAgICAgICAgICAgICAgICAgICAgfCBcKDMpICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2cnYGAgICAgfCBGbG9hdGluZyBwb2ludCBmb3JtYXQuIFVzZXMgbG93ZXJjYXNlIGV4cG9uZW50aWFsICAgfCBcKDQpICB8Cit8ICAgICAgICAgICAgfCBmb3JtYXQgaWYgZXhwb25lbnQgaXMgbGVzcyB0aGFuIC00IG9yIG5vdCBsZXNzIHRoYW4gfCAgICAgICB8Cit8ICAgICAgICAgICAgfCBwcmVjaXNpb24sIGRlY2ltYWwgZm9ybWF0IG90aGVyd2lzZS4gICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ0cnYGAgICAgfCBGbG9hdGluZyBwb2ludCBmb3JtYXQuIFVzZXMgdXBwZXJjYXNlIGV4cG9uZW50aWFsICAgfCBcKDQpICB8Cit8ICAgICAgICAgICAgfCBmb3JtYXQgaWYgZXhwb25lbnQgaXMgbGVzcyB0aGFuIC00IG9yIG5vdCBsZXNzIHRoYW4gfCAgICAgICB8Cit8ICAgICAgICAgICAgfCBwcmVjaXNpb24sIGRlY2ltYWwgZm9ybWF0IG90aGVyd2lzZS4gICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2MnYGAgICAgfCBTaW5nbGUgYnl0ZSAoYWNjZXB0cyBpbnRlZ2VyIG9yIHNpbmdsZSAgICAgICAgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICAgfCBieXRlIG9iamVjdHMpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2InYGAgICAgfCBCeXRlcyAoYW55IG9iamVjdCB0aGF0IGZvbGxvd3MgdGhlICAgICAgICAgICAgICAgICAgfCBcKDUpICB8Cit8ICAgICAgICAgICAgfCA6cmVmOmBidWZmZXIgcHJvdG9jb2wgPGJ1ZmZlcm9iamVjdHM+YCBvciBoYXMgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICAgfCA6bWV0aDpgX19ieXRlc19fYCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3MnYGAgICAgfCBgYCdzJ2BgIGlzIGFuIGFsaWFzIGZvciBgYCdiJ2BgIGFuZCBzaG91bGQgb25seSAgICAgfCBcKDYpICB8Cit8ICAgICAgICAgICAgfCBiZSB1c2VkIGZvciBQeXRob24yLzMgY29kZSBiYXNlcy4gICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2EnYGAgICAgfCBCeXRlcyAoY29udmVydHMgYW55IFB5dGhvbiBvYmplY3QgdXNpbmcgICAgICAgICAgICAgfCBcKDUpICB8Cit8ICAgICAgICAgICAgfCBgYHJlcHIob2JqKS5lbmNvZGUoJ2FzY2lpJywnYmFja3NsYXNocmVwbGFjZSlgYCkuICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3InYGAgICAgfCBgYCdyJ2BgIGlzIGFuIGFsaWFzIGZvciBgYCdhJ2BgIGFuZCBzaG91bGQgb25seSAgICAgfCBcKDcpICB8Cit8ICAgICAgICAgICAgfCBiZSB1c2VkIGZvciBQeXRob24yLzMgY29kZSBiYXNlcy4gICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJyUnYGAgICAgfCBObyBhcmd1bWVudCBpcyBjb252ZXJ0ZWQsIHJlc3VsdHMgaW4gYSBgYCclJ2BgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICAgfCBjaGFyYWN0ZXIgaW4gdGhlIHJlc3VsdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCisKK05vdGVzOgorCisoMSkKKyAgIFRoZSBhbHRlcm5hdGUgZm9ybSBjYXVzZXMgYSBsZWFkaW5nIHplcm8gKGBgJzAnYGApIHRvIGJlIGluc2VydGVkIGJldHdlZW4KKyAgIGxlZnQtaGFuZCBwYWRkaW5nIGFuZCB0aGUgZm9ybWF0dGluZyBvZiB0aGUgbnVtYmVyIGlmIHRoZSBsZWFkaW5nIGNoYXJhY3RlcgorICAgb2YgdGhlIHJlc3VsdCBpcyBub3QgYWxyZWFkeSBhIHplcm8uCisKKygyKQorICAgVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyBhIGxlYWRpbmcgYGAnMHgnYGAgb3IgYGAnMFgnYGAgKGRlcGVuZGluZyBvbiB3aGV0aGVyCisgICB0aGUgYGAneCdgYCBvciBgYCdYJ2BgIGZvcm1hdCB3YXMgdXNlZCkgdG8gYmUgaW5zZXJ0ZWQgYmV0d2VlbiBsZWZ0LWhhbmQgcGFkZGluZworICAgYW5kIHRoZSBmb3JtYXR0aW5nIG9mIHRoZSBudW1iZXIgaWYgdGhlIGxlYWRpbmcgY2hhcmFjdGVyIG9mIHRoZSByZXN1bHQgaXMgbm90CisgICBhbHJlYWR5IGEgemVyby4KKworKDMpCisgICBUaGUgYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIHRoZSByZXN1bHQgdG8gYWx3YXlzIGNvbnRhaW4gYSBkZWNpbWFsIHBvaW50LCBldmVuIGlmCisgICBubyBkaWdpdHMgZm9sbG93IGl0LgorCisgICBUaGUgcHJlY2lzaW9uIGRldGVybWluZXMgdGhlIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQgYW5kCisgICBkZWZhdWx0cyB0byA2LgorCisoNCkKKyAgIFRoZSBhbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCB0byBhbHdheXMgY29udGFpbiBhIGRlY2ltYWwgcG9pbnQsIGFuZAorICAgdHJhaWxpbmcgemVyb2VzIGFyZSBub3QgcmVtb3ZlZCBhcyB0aGV5IHdvdWxkIG90aGVyd2lzZSBiZS4KKworICAgVGhlIHByZWNpc2lvbiBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlCisgICBkZWNpbWFsIHBvaW50IGFuZCBkZWZhdWx0cyB0byA2LgorCisoNSkKKyAgIElmIHByZWNpc2lvbiBpcyBgYE5gYCwgdGhlIG91dHB1dCBpcyB0cnVuY2F0ZWQgdG8gYGBOYGAgY2hhcmFjdGVycy4KKworKDYpCisgICBgYGInJXMnYGAgaXMgZGVwcmVjYXRlZCwgYnV0IHdpbGwgbm90IGJlIHJlbW92ZWQgZHVyaW5nIHRoZSAzLnggc2VyaWVzLgorCisoNykKKyAgIGBgYiclcidgYCBpcyBkZXByZWNhdGVkLCBidXQgd2lsbCBub3QgYmUgcmVtb3ZlZCBkdXJpbmcgdGhlIDMueCBzZXJpZXMuCisKKyg4KQorICAgU2VlIDpwZXA6YDIzN2AuCisKKy4uIG5vdGU6OgorCisgICBUaGUgYnl0ZWFycmF5IHZlcnNpb24gb2YgdGhpcyBtZXRob2QgZG9lcyAqbm90KiBvcGVyYXRlIGluIHBsYWNlIC0gaXQKKyAgIGFsd2F5cyBwcm9kdWNlcyBhIG5ldyBvYmplY3QsIGV2ZW4gaWYgbm8gY2hhbmdlcyB3ZXJlIG1hZGUuCisKKy4uIHNlZWFsc286OiA6cGVwOmA0NjFgLgorLi4gdmVyc2lvbmFkZGVkOjogMy41CisKIC4uIF90eXBlbWVtb3J5dmlldzoKIAogTWVtb3J5IFZpZXdzCkBAIC0zMTMwLDEwICszMzYzLDggQEAKICAgIHRoZSB2aWV3LiBUaGUgOmNsYXNzOmB+bWVtb3J5dmlldy5pdGVtc2l6ZWAgYXR0cmlidXRlIHdpbGwgZ2l2ZSB5b3UgdGhlCiAgICBudW1iZXIgb2YgYnl0ZXMgaW4gYSBzaW5nbGUgZWxlbWVudC4KIAotICAgQSA6Y2xhc3M6YG1lbW9yeXZpZXdgIHN1cHBvcnRzIHNsaWNpbmcgdG8gZXhwb3NlIGl0cyBkYXRhLiBJZgotICAgOmNsYXNzOmB+bWVtb3J5dmlldy5mb3JtYXRgIGlzIG9uZSBvZiB0aGUgbmF0aXZlIGZvcm1hdCBzcGVjaWZpZXJzCi0gICBmcm9tIHRoZSA6bW9kOmBzdHJ1Y3RgIG1vZHVsZSwgaW5kZXhpbmcgd2lsbCByZXR1cm4gYSBzaW5nbGUgZWxlbWVudAotICAgd2l0aCB0aGUgY29ycmVjdCB0eXBlLiBGdWxsIHNsaWNpbmcgd2lsbCByZXN1bHQgaW4gYSBzdWJ2aWV3OjoKKyAgIEEgOmNsYXNzOmBtZW1vcnl2aWV3YCBzdXBwb3J0cyBzbGljaW5nIGFuZCBpbmRleGluZyB0byBleHBvc2UgaXRzIGRhdGEuCisgICBPbmUtZGltZW5zaW9uYWwgc2xpY2luZyB3aWxsIHJlc3VsdCBpbiBhIHN1YnZpZXc6OgogCiAgICAgPj4+IHYgPSBtZW1vcnl2aWV3KGInYWJjZWZnJykKICAgICA+Pj4gdlsxXQpAQCAtMzE0NSwyNSArMzM3NiwyOSBAQAogICAgID4+PiBieXRlcyh2WzE6NF0pCiAgICAgYidiY2UnCiAKLSAgIE90aGVyIG5hdGl2ZSBmb3JtYXRzOjoKKyAgIElmIDpjbGFzczpgfm1lbW9yeXZpZXcuZm9ybWF0YCBpcyBvbmUgb2YgdGhlIG5hdGl2ZSBmb3JtYXQgc3BlY2lmaWVycworICAgZnJvbSB0aGUgOm1vZDpgc3RydWN0YCBtb2R1bGUsIGluZGV4aW5nIHdpdGggYW4gaW50ZWdlciBvciBhIHR1cGxlIG9mCisgICBpbnRlZ2VycyBpcyBhbHNvIHN1cHBvcnRlZCBhbmQgcmV0dXJucyBhIHNpbmdsZSAqZWxlbWVudCogd2l0aAorICAgdGhlIGNvcnJlY3QgdHlwZS4gIE9uZS1kaW1lbnNpb25hbCBtZW1vcnl2aWV3cyBjYW4gYmUgaW5kZXhlZAorICAgd2l0aCBhbiBpbnRlZ2VyIG9yIGEgb25lLWludGVnZXIgdHVwbGUuICBNdWx0aS1kaW1lbnNpb25hbCBtZW1vcnl2aWV3cworICAgY2FuIGJlIGluZGV4ZWQgd2l0aCB0dXBsZXMgb2YgZXhhY3RseSAqbmRpbSogaW50ZWdlcnMgd2hlcmUgKm5kaW0qIGlzCisgICB0aGUgbnVtYmVyIG9mIGRpbWVuc2lvbnMuICBaZXJvLWRpbWVuc2lvbmFsIG1lbW9yeXZpZXdzIGNhbiBiZSBpbmRleGVkCisgICB3aXRoIHRoZSBlbXB0eSB0dXBsZS4KKworICAgSGVyZSBpcyBhbiBleGFtcGxlIHdpdGggYSBub24tYnl0ZSBmb3JtYXQ6OgogCiAgICAgICA+Pj4gaW1wb3J0IGFycmF5CiAgICAgICA+Pj4gYSA9IGFycmF5LmFycmF5KCdsJywgWy0xMTExMTExMSwgMjIyMjIyMjIsIC0zMzMzMzMzMywgNDQ0NDQ0NDRdKQotICAgICAgPj4+IGFbMF0KKyAgICAgID4+PiBtID0gbWVtb3J5dmlldyhhKQorICAgICAgPj4+IG1bMF0KICAgICAgIC0xMTExMTExMQotICAgICAgPj4+IGFbLTFdCisgICAgICA+Pj4gbVstMV0KICAgICAgIDQ0NDQ0NDQ0Ci0gICAgICA+Pj4gYVsyOjNdLnRvbGlzdCgpCi0gICAgICBbLTMzMzMzMzMzXQotICAgICAgPj4+IGFbOjoyXS50b2xpc3QoKQorICAgICAgPj4+IG1bOjoyXS50b2xpc3QoKQogICAgICAgWy0xMTExMTExMSwgLTMzMzMzMzMzXQotICAgICAgPj4+IGFbOjotMV0udG9saXN0KCkKLSAgICAgIFs0NDQ0NDQ0NCwgLTMzMzMzMzMzLCAyMjIyMjIyMiwgLTExMTExMTExXQogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKLQotICAgSWYgdGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIHdyaXRhYmxlLCB0aGUgbWVtb3J5dmlldyBzdXBwb3J0cyBzbGljZQotICAgYXNzaWdubWVudC4gUmVzaXppbmcgaXMgbm90IGFsbG93ZWQ6OgorICAgSWYgdGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIHdyaXRhYmxlLCB0aGUgbWVtb3J5dmlldyBzdXBwb3J0cworICAgb25lLWRpbWVuc2lvbmFsIHNsaWNlIGFzc2lnbm1lbnQuIFJlc2l6aW5nIGlzIG5vdCBhbGxvd2VkOjoKIAogICAgICAgPj4+IGRhdGEgPSBieXRlYXJyYXkoYidhYmNlZmcnKQogICAgICAgPj4+IHYgPSBtZW1vcnl2aWV3KGRhdGEpCkBAIC0zMTk2LDEyICszNDMxLDE2IEBACiAgICAgICBUcnVlCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBPbmUtZGltZW5zaW9uYWwgbWVtb3J5dmlld3MgY2FuIG5vdyBiZSBzbGljZWQuCiAgICAgICBPbmUtZGltZW5zaW9uYWwgbWVtb3J5dmlld3Mgd2l0aCBmb3JtYXRzICdCJywgJ2InIG9yICdjJyBhcmUgbm93IGhhc2hhYmxlLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgbWVtb3J5dmlldyBpcyBub3cgcmVnaXN0ZXJlZCBhdXRvbWF0aWNhbGx5IHdpdGgKICAgICAgIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlYAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgbWVtb3J5dmlld3MgY2FuIG5vdyBiZSBpbmRleGVkIHdpdGggdHVwbGUgb2YgaW50ZWdlcnMuCisKICAgIDpjbGFzczpgbWVtb3J5dmlld2AgaGFzIHNldmVyYWwgbWV0aG9kczoKIAogICAgLi4gbWV0aG9kOjogX19lcV9fKGV4cG9ydGVyKQpAQCAtMzI2OCw2ICszNTA3LDE3IEBACiAgICAgICBzdXBwb3J0cyBhbGwgZm9ybWF0IHN0cmluZ3MsIGluY2x1ZGluZyB0aG9zZSB0aGF0IGFyZSBub3QgaW4KICAgICAgIDptb2Q6YHN0cnVjdGAgbW9kdWxlIHN5bnRheC4KIAorICAgLi4gbWV0aG9kOjogaGV4KCkKKworICAgICAgUmV0dXJuIGEgc3RyaW5nIG9iamVjdCBjb250YWluaW5nIHR3byBoZXhhZGVjaW1hbCBkaWdpdHMgZm9yIGVhY2gKKyAgICAgIGJ5dGUgaW4gdGhlIGJ1ZmZlci4gOjoKKworICAgICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGIiYWJjIikKKyAgICAgICAgID4+PiBtLmhleCgpCisgICAgICAgICAnNjE2MjYzJworCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogICAgLi4gbWV0aG9kOjogdG9saXN0KCkKIAogICAgICAgUmV0dXJuIHRoZSBkYXRhIGluIHRoZSBidWZmZXIgYXMgYSBsaXN0IG9mIGVsZW1lbnRzLiA6OgpAQCAtMzMyMywxMCArMzU3MywxMCBAQAogICAgICAgQ2FzdCBhIG1lbW9yeXZpZXcgdG8gYSBuZXcgZm9ybWF0IG9yIHNoYXBlLiAqc2hhcGUqIGRlZmF1bHRzIHRvCiAgICAgICBgYFtieXRlX2xlbmd0aC8vbmV3X2l0ZW1zaXplXWBgLCB3aGljaCBtZWFucyB0aGF0IHRoZSByZXN1bHQgdmlldwogICAgICAgd2lsbCBiZSBvbmUtZGltZW5zaW9uYWwuIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBuZXcgbWVtb3J5dmlldywgYnV0Ci0gICAgICB0aGUgYnVmZmVyIGl0c2VsZiBpcyBub3QgY29waWVkLiBTdXBwb3J0ZWQgY2FzdHMgYXJlIDFEIC0+IEMtY29udGlndW91cworICAgICAgdGhlIGJ1ZmZlciBpdHNlbGYgaXMgbm90IGNvcGllZC4gU3VwcG9ydGVkIGNhc3RzIGFyZSAxRCAtPiBDLTp0ZXJtOmBjb250aWd1b3VzYAogICAgICAgYW5kIEMtY29udGlndW91cyAtPiAxRC4KIAotICAgICAgQm90aCBmb3JtYXRzIGFyZSByZXN0cmljdGVkIHRvIHNpbmdsZSBlbGVtZW50IG5hdGl2ZSBmb3JtYXRzIGluCisgICAgICBUaGUgZGVzdGluYXRpb24gZm9ybWF0IGlzIHJlc3RyaWN0ZWQgdG8gYSBzaW5nbGUgZWxlbWVudCBuYXRpdmUgZm9ybWF0IGluCiAgICAgICA6bW9kOmBzdHJ1Y3RgIHN5bnRheC4gT25lIG9mIHRoZSBmb3JtYXRzIG11c3QgYmUgYSBieXRlIGZvcm1hdAogICAgICAgKCdCJywgJ2InIG9yICdjJykuIFRoZSBieXRlIGxlbmd0aCBvZiB0aGUgcmVzdWx0IG11c3QgYmUgdGhlIHNhbWUKICAgICAgIGFzIHRoZSBvcmlnaW5hbCBsZW5ndGguCkBAIC0zNDA3LDYgKzM2NTcsOSBAQAogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICAgIFRoZSBzb3VyY2UgZm9ybWF0IGlzIG5vIGxvbmdlciByZXN0cmljdGVkIHdoZW4gY2FzdGluZyB0byBhIGJ5dGUgdmlldy4KKwogICAgVGhlcmUgYXJlIGFsc28gc2V2ZXJhbCByZWFkb25seSBhdHRyaWJ1dGVzIGF2YWlsYWJsZToKIAogICAgLi4gYXR0cmlidXRlOjogb2JqCkBAIC0zNTExLDE5ICszNzY0LDE5IEBACiAKICAgIC4uIGF0dHJpYnV0ZTo6IGNfY29udGlndW91cwogCi0gICAgICBBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgQy1jb250aWd1b3VzLgorICAgICAgQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIEMtOnRlcm06YGNvbnRpZ3VvdXNgLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogICAgLi4gYXR0cmlidXRlOjogZl9jb250aWd1b3VzCiAKLSAgICAgIEEgYm9vbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG1lbW9yeSBpcyBGb3J0cmFuIGNvbnRpZ3VvdXMuCisgICAgICBBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgRm9ydHJhbiA6dGVybTpgY29udGlndW91c2AuCiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAgICAuLiBhdHRyaWJ1dGU6OiBjb250aWd1b3VzCiAKLSAgICAgIEEgYm9vbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG1lbW9yeSBpcyBjb250aWd1b3VzLgorICAgICAgQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIDp0ZXJtOmBjb250aWd1b3VzYC4KIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QgYi9Eb2MvbGlicmFyeS9zdHJpbmcucnN0CmluZGV4IDE5YmRiMjEuLjJiZDhkZmQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdApAQCAtOTUsNiArOTUsMTAgQEAKICAgICAgIGFuIGFyYml0cmFyeSBzZXQgb2YgcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmd1bWVudHMuCiAgICAgICA6bWV0aDpgZm9ybWF0YCBpcyBqdXN0IGEgd3JhcHBlciB0aGF0IGNhbGxzIDptZXRoOmB2Zm9ybWF0YC4KIAorICAgICAgLi4gZGVwcmVjYXRlZDo6IDMuNQorICAgICAgICAgUGFzc2luZyBhIGZvcm1hdCBzdHJpbmcgYXMga2V5d29yZCBhcmd1bWVudCAqZm9ybWF0X3N0cmluZyogaGFzIGJlZW4KKyAgICAgICAgIGRlcHJlY2F0ZWQuCisKICAgIC4uIG1ldGhvZDo6IHZmb3JtYXQoZm9ybWF0X3N0cmluZywgYXJncywga3dhcmdzKQogCiAgICAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIGFjdHVhbCB3b3JrIG9mIGZvcm1hdHRpbmcuICBJdCBpcyBleHBvc2VkIGFzIGEKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N1YnByb2Nlc3MucnN0IGIvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QKaW5kZXggOWFjODg4Mi4uYWRmOTllYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QKQEAgLTI1LDEwNCArMjUsMzIgQEAKIFVzaW5nIHRoZSA6bW9kOmBzdWJwcm9jZXNzYCBNb2R1bGUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVGhlIHJlY29tbWVuZGVkIGFwcHJvYWNoIHRvIGludm9raW5nIHN1YnByb2Nlc3NlcyBpcyB0byB1c2UgdGhlIGZvbGxvd2luZwotY29udmVuaWVuY2UgZnVuY3Rpb25zIGZvciBhbGwgdXNlIGNhc2VzIHRoZXkgY2FuIGhhbmRsZS4gRm9yIG1vcmUgYWR2YW5jZWQKLXVzZSBjYXNlcywgdGhlIHVuZGVybHlpbmcgOmNsYXNzOmBQb3BlbmAgaW50ZXJmYWNlIGNhbiBiZSB1c2VkIGRpcmVjdGx5LgorVGhlIHJlY29tbWVuZGVkIGFwcHJvYWNoIHRvIGludm9raW5nIHN1YnByb2Nlc3NlcyBpcyB0byB1c2UgdGhlIDpmdW5jOmBydW5gCitmdW5jdGlvbiBmb3IgYWxsIHVzZSBjYXNlcyBpdCBjYW4gaGFuZGxlLiBGb3IgbW9yZSBhZHZhbmNlZCB1c2UgY2FzZXMsIHRoZQordW5kZXJseWluZyA6Y2xhc3M6YFBvcGVuYCBpbnRlcmZhY2UgY2FuIGJlIHVzZWQgZGlyZWN0bHkuCisKK1RoZSA6ZnVuYzpgcnVuYCBmdW5jdGlvbiB3YXMgYWRkZWQgaW4gUHl0aG9uIDMuNTsgaWYgeW91IG5lZWQgdG8gcmV0YWluCitjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgdmVyc2lvbnMsIHNlZSB0aGUgOnJlZjpgY2FsbC1mdW5jdGlvbi10cmlvYCBzZWN0aW9uLgogCiAKLS4uIGZ1bmN0aW9uOjogY2FsbChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlLCB0aW1lb3V0PU5vbmUpCisuLiBmdW5jdGlvbjo6IHJ1bihhcmdzLCAqLCBzdGRpbj1Ob25lLCBpbnB1dD1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsXAorICAgICAgICAgICAgICAgICAgc2hlbGw9RmFsc2UsIHRpbWVvdXQ9Tm9uZSwgY2hlY2s9RmFsc2UpCiAKICAgIFJ1biB0aGUgY29tbWFuZCBkZXNjcmliZWQgYnkgKmFyZ3MqLiAgV2FpdCBmb3IgY29tbWFuZCB0byBjb21wbGV0ZSwgdGhlbgotICAgcmV0dXJuIHRoZSA6YXR0cjpgcmV0dXJuY29kZWAgYXR0cmlidXRlLgorICAgcmV0dXJuIGEgOmNsYXNzOmBDb21wbGV0ZWRQcm9jZXNzYCBpbnN0YW5jZS4KIAogICAgVGhlIGFyZ3VtZW50cyBzaG93biBhYm92ZSBhcmUgbWVyZWx5IHRoZSBtb3N0IGNvbW1vbiBvbmVzLCBkZXNjcmliZWQgYmVsb3cKICAgIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgIChoZW5jZSB0aGUgdXNlIG9mIGtleXdvcmQtb25seSBub3RhdGlvbgogICAgaW4gdGhlIGFiYnJldmlhdGVkIHNpZ25hdHVyZSkuIFRoZSBmdWxsIGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBsYXJnZWx5IHRoZQotICAgc2FtZSBhcyB0aGF0IG9mIHRoZSA6Y2xhc3M6YFBvcGVuYCBjb25zdHJ1Y3RvciAtIHRoaXMgZnVuY3Rpb24gcGFzc2VzIGFsbAotICAgc3VwcGxpZWQgYXJndW1lbnRzIG90aGVyIHRoYW4gKnRpbWVvdXQqIGRpcmVjdGx5IHRocm91Z2ggdG8gdGhhdCBpbnRlcmZhY2UuCisgICBzYW1lIGFzIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yIC0gYXBhcnQgZnJvbSAqdGltZW91dCosCisgICAqaW5wdXQqIGFuZCAqY2hlY2sqLCBhbGwgdGhlIGFyZ3VtZW50cyB0byB0aGlzIGZ1bmN0aW9uIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworICAgdGhhdCBpbnRlcmZhY2UuCiAKLSAgIFRoZSAqdGltZW91dCogYXJndW1lbnQgaXMgcGFzc2VkIHRvIDptZXRoOmBQb3Blbi53YWl0YC4gSWYgdGhlIHRpbWVvdXQKLSAgIGV4cGlyZXMsIHRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmUga2lsbGVkIGFuZCB0aGVuIHdhaXRlZCBmb3IgYWdhaW4uICBUaGUKLSAgIDpleGM6YFRpbWVvdXRFeHBpcmVkYCBleGNlcHRpb24gd2lsbCBiZSByZS1yYWlzZWQgYWZ0ZXIgdGhlIGNoaWxkIHByb2Nlc3MKLSAgIGhhcyB0ZXJtaW5hdGVkLgorICAgVGhpcyBkb2VzIG5vdCBjYXB0dXJlIHN0ZG91dCBvciBzdGRlcnIgYnkgZGVmYXVsdC4gVG8gZG8gc28sIHBhc3MKKyAgIDpkYXRhOmBQSVBFYCBmb3IgdGhlICpzdGRvdXQqIGFuZC9vciAqc3RkZXJyKiBhcmd1bWVudHMuCiAKLSAgIEV4YW1wbGVzOjoKLQotICAgICAgPj4+IHN1YnByb2Nlc3MuY2FsbChbImxzIiwgIi1sIl0pCi0gICAgICAwCi0KLSAgICAgID4+PiBzdWJwcm9jZXNzLmNhbGwoImV4aXQgMSIsIHNoZWxsPVRydWUpCi0gICAgICAxCi0KLSAgIC4uIG5vdGU6OgotCi0gICAgICBEbyBub3QgdXNlIGBgc3Rkb3V0PVBJUEVgYCBvciBgYHN0ZGVycj1QSVBFYGAgd2l0aCB0aGlzCi0gICAgICBmdW5jdGlvbi4gIFRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmxvY2sgaWYgaXQgZ2VuZXJhdGVzIGVub3VnaAotICAgICAgb3V0cHV0IHRvIGEgcGlwZSB0byBmaWxsIHVwIHRoZSBPUyBwaXBlIGJ1ZmZlciBhcyB0aGUgcGlwZXMgYXJlCi0gICAgICBub3QgYmVpbmcgcmVhZCBmcm9tLgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KLQotCi0uLiBmdW5jdGlvbjo6IGNoZWNrX2NhbGwoYXJncywgKiwgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdGltZW91dD1Ob25lKQotCi0gICBSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cy4gIFdhaXQgZm9yIGNvbW1hbmQgdG8gY29tcGxldGUuIElmIHRoZSByZXR1cm4KLSAgIGNvZGUgd2FzIHplcm8gdGhlbiByZXR1cm4sIG90aGVyd2lzZSByYWlzZSA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgLiBUaGUKLSAgIDpleGM6YENhbGxlZFByb2Nlc3NFcnJvcmAgb2JqZWN0IHdpbGwgaGF2ZSB0aGUgcmV0dXJuIGNvZGUgaW4gdGhlCi0gICA6YXR0cjpgfkNhbGxlZFByb2Nlc3NFcnJvci5yZXR1cm5jb2RlYCBhdHRyaWJ1dGUuCi0KLSAgIFRoZSBhcmd1bWVudHMgc2hvd24gYWJvdmUgYXJlIG1lcmVseSB0aGUgbW9zdCBjb21tb24gb25lcywgZGVzY3JpYmVkIGJlbG93Ci0gICBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCAoaGVuY2UgdGhlIHVzZSBvZiBrZXl3b3JkLW9ubHkgbm90YXRpb24KLSAgIGluIHRoZSBhYmJyZXZpYXRlZCBzaWduYXR1cmUpLiBUaGUgZnVsbCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgbGFyZ2VseSB0aGUKLSAgIHNhbWUgYXMgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSB0aGlzIGZ1bmN0aW9uIHBhc3NlcyBhbGwKLSAgIHN1cHBsaWVkIGFyZ3VtZW50cyBvdGhlciB0aGFuICp0aW1lb3V0KiBkaXJlY3RseSB0aHJvdWdoIHRvIHRoYXQgaW50ZXJmYWNlLgotCi0gICBUaGUgKnRpbWVvdXQqIGFyZ3VtZW50IGlzIHBhc3NlZCB0byA6bWV0aDpgUG9wZW4ud2FpdGAuIElmIHRoZSB0aW1lb3V0Ci0gICBleHBpcmVzLCB0aGUgY2hpbGQgcHJvY2VzcyB3aWxsIGJlIGtpbGxlZCBhbmQgdGhlbiB3YWl0ZWQgZm9yIGFnYWluLiAgVGhlCi0gICA6ZXhjOmBUaW1lb3V0RXhwaXJlZGAgZXhjZXB0aW9uIHdpbGwgYmUgcmUtcmFpc2VkIGFmdGVyIHRoZSBjaGlsZCBwcm9jZXNzCi0gICBoYXMgdGVybWluYXRlZC4KLQotICAgRXhhbXBsZXM6OgotCi0gICAgICA+Pj4gc3VicHJvY2Vzcy5jaGVja19jYWxsKFsibHMiLCAiLWwiXSkKLSAgICAgIDAKLQotICAgICAgPj4+IHN1YnByb2Nlc3MuY2hlY2tfY2FsbCgiZXhpdCAxIiwgc2hlbGw9VHJ1ZSkKLSAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgICAgIC4uLgotICAgICAgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6IENvbW1hbmQgJ2V4aXQgMScgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBzdGF0dXMgMQotCi0gICAuLiBub3RlOjoKLQotICAgICAgRG8gbm90IHVzZSBgYHN0ZG91dD1QSVBFYGAgb3IgYGBzdGRlcnI9UElQRWBgIHdpdGggdGhpcwotICAgICAgZnVuY3Rpb24uICBUaGUgY2hpbGQgcHJvY2VzcyB3aWxsIGJsb2NrIGlmIGl0IGdlbmVyYXRlcyBlbm91Z2gKLSAgICAgIG91dHB1dCB0byBhIHBpcGUgdG8gZmlsbCB1cCB0aGUgT1MgcGlwZSBidWZmZXIgYXMgdGhlIHBpcGVzIGFyZQotICAgICAgbm90IGJlaW5nIHJlYWQgZnJvbS4KLQotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKLSAgICAgICp0aW1lb3V0KiB3YXMgYWRkZWQuCi0KLQotLi4gZnVuY3Rpb246OiBjaGVja19vdXRwdXQoYXJncywgKiwgaW5wdXQ9Tm9uZSwgc3RkaW49Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsIHRpbWVvdXQ9Tm9uZSkKLQotICAgUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMgYW5kIHJldHVybiBpdHMgb3V0cHV0LgotCi0gICBJZiB0aGUgcmV0dXJuIGNvZGUgd2FzIG5vbi16ZXJvIGl0IHJhaXNlcyBhIDpleGM6YENhbGxlZFByb2Nlc3NFcnJvcmAuIFRoZQotICAgOmV4YzpgQ2FsbGVkUHJvY2Vzc0Vycm9yYCBvYmplY3Qgd2lsbCBoYXZlIHRoZSByZXR1cm4gY29kZSBpbiB0aGUKLSAgIDphdHRyOmB+Q2FsbGVkUHJvY2Vzc0Vycm9yLnJldHVybmNvZGVgIGF0dHJpYnV0ZSBhbmQgYW55IG91dHB1dCBpbiB0aGUKLSAgIDphdHRyOmB+Q2FsbGVkUHJvY2Vzc0Vycm9yLm91dHB1dGAgYXR0cmlidXRlLgotCi0gICBUaGUgYXJndW1lbnRzIHNob3duIGFib3ZlIGFyZSBtZXJlbHkgdGhlIG1vc3QgY29tbW9uIG9uZXMsIGRlc2NyaWJlZCBiZWxvdwotICAgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgKGhlbmNlIHRoZSB1c2Ugb2Yga2V5d29yZC1vbmx5IG5vdGF0aW9uCi0gICBpbiB0aGUgYWJicmV2aWF0ZWQgc2lnbmF0dXJlKS4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGxhcmdlbHkgdGhlCi0gICBzYW1lIGFzIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yIC0gdGhpcyBmdW5jdGlvbnMgcGFzc2VzIGFsbAotICAgc3VwcGxpZWQgYXJndW1lbnRzIG90aGVyIHRoYW4gKmlucHV0KiBhbmQgKnRpbWVvdXQqIGRpcmVjdGx5IHRocm91Z2ggdG8KLSAgIHRoYXQgaW50ZXJmYWNlLiAgSW4gYWRkaXRpb24sICpzdGRvdXQqIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gYXJndW1lbnQsIGFzCi0gICBpdCBpcyB1c2VkIGludGVybmFsbHkgdG8gY29sbGVjdCB0aGUgb3V0cHV0IGZyb20gdGhlIHN1YnByb2Nlc3MuCi0KLSAgIFRoZSAqdGltZW91dCogYXJndW1lbnQgaXMgcGFzc2VkIHRvIDptZXRoOmBQb3Blbi53YWl0YC4gSWYgdGhlIHRpbWVvdXQKLSAgIGV4cGlyZXMsIHRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmUga2lsbGVkIGFuZCB0aGVuIHdhaXRlZCBmb3IgYWdhaW4uICBUaGUKKyAgIFRoZSAqdGltZW91dCogYXJndW1lbnQgaXMgcGFzc2VkIHRvIDptZXRoOmBQb3Blbi5jb21tdW5pY2F0ZWAuIElmIHRoZSB0aW1lb3V0CisgICBleHBpcmVzLCB0aGUgY2hpbGQgcHJvY2VzcyB3aWxsIGJlIGtpbGxlZCBhbmQgd2FpdGVkIGZvci4gIFRoZQogICAgOmV4YzpgVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbiB3aWxsIGJlIHJlLXJhaXNlZCBhZnRlciB0aGUgY2hpbGQgcHJvY2VzcwogICAgaGFzIHRlcm1pbmF0ZWQuCiAKQEAgLTEzMiw1MyArNjAsNjQgQEAKICAgIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB3aXRoIGBgc3RkaW49UElQRWBgLCBhbmQgdGhlICpzdGRpbiogYXJndW1lbnQgbWF5CiAgICBub3QgYmUgdXNlZCBhcyB3ZWxsLgogCisgICBJZiAqY2hlY2sqIGlzIFRydWUsIGFuZCB0aGUgcHJvY2VzcyBleGl0cyB3aXRoIGEgbm9uLXplcm8gZXhpdCBjb2RlLCBhCisgICA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC4gQXR0cmlidXRlcyBvZiB0aGF0CisgICBleGNlcHRpb24gaG9sZCB0aGUgYXJndW1lbnRzLCB0aGUgZXhpdCBjb2RlLCBhbmQgc3Rkb3V0IGFuZCBzdGRlcnIgaWYgdGhleQorICAgd2VyZSBjYXB0dXJlZC4KKwogICAgRXhhbXBsZXM6OgogCi0gICAgICA+Pj4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyJlY2hvIiwgIkhlbGxvIFdvcmxkISJdKQotICAgICAgYidIZWxsbyBXb3JsZCFcbicKKyAgICAgID4+PiBzdWJwcm9jZXNzLnJ1bihbImxzIiwgIi1sIl0pICAjIGRvZXNuJ3QgY2FwdHVyZSBvdXRwdXQKKyAgICAgIENvbXBsZXRlZFByb2Nlc3MoYXJncz1bJ2xzJywgJy1sJ10sIHJldHVybmNvZGU9MCkKIAotICAgICAgPj4+IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsiZWNobyIsICJIZWxsbyBXb3JsZCEiXSwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCi0gICAgICAnSGVsbG8gV29ybGQhXG4nCi0KLSAgICAgID4+PiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbInNlZCIsICItZSIsICJzL2Zvby9iYXIvIl0sCi0gICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ9YiJ3aGVuIGluIHRoZSBjb3Vyc2Ugb2YgZm9vbWFuIGV2ZW50c1xuIikKLSAgICAgIGInd2hlbiBpbiB0aGUgY291cnNlIG9mIGJhcm1hbiBldmVudHNcbicKLQotICAgICAgPj4+IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJleGl0IDEiLCBzaGVsbD1UcnVlKQorICAgICAgPj4+IHN1YnByb2Nlc3MucnVuKCJleGl0IDEiLCBzaGVsbD1UcnVlLCBjaGVjaz1UcnVlKQogICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAgICAgLi4uCisgICAgICAgIC4uLgogICAgICAgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6IENvbW1hbmQgJ2V4aXQgMScgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBzdGF0dXMgMQogCi0gICBCeSBkZWZhdWx0LCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSBkYXRhIGFzIGVuY29kZWQgYnl0ZXMuIFRoZSBhY3R1YWwKLSAgIGVuY29kaW5nIG9mIHRoZSBvdXRwdXQgZGF0YSBtYXkgZGVwZW5kIG9uIHRoZSBjb21tYW5kIGJlaW5nIGludm9rZWQsIHNvIHRoZQotICAgZGVjb2RpbmcgdG8gdGV4dCB3aWxsIG9mdGVuIG5lZWQgdG8gYmUgaGFuZGxlZCBhdCB0aGUgYXBwbGljYXRpb24gbGV2ZWwuCisgICAgICA+Pj4gc3VicHJvY2Vzcy5ydW4oWyJscyIsICItbCIsICIvZGV2L251bGwiXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICAgIENvbXBsZXRlZFByb2Nlc3MoYXJncz1bJ2xzJywgJy1sJywgJy9kZXYvbnVsbCddLCByZXR1cm5jb2RlPTAsCisgICAgICBzdGRvdXQ9YidjcnctcnctcnctIDEgcm9vdCByb290IDEsIDMgSmFuIDIzIDE2OjIzIC9kZXYvbnVsbFxuJykKIAotICAgVGhpcyBiZWhhdmlvdXIgbWF5IGJlIG92ZXJyaWRkZW4gYnkgc2V0dGluZyAqdW5pdmVyc2FsX25ld2xpbmVzKiB0bwotICAgYGBUcnVlYGAgYXMgZGVzY3JpYmVkIGJlbG93IGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgLgorICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKLSAgIFRvIGFsc28gY2FwdHVyZSBzdGFuZGFyZCBlcnJvciBpbiB0aGUgcmVzdWx0LCB1c2UKLSAgIGBgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUYGA6OgorLi4gY2xhc3M6OiBDb21wbGV0ZWRQcm9jZXNzCiAKLSAgICAgID4+PiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgKLSAgICAgIC4uLiAgICAgImxzIG5vbl9leGlzdGVudF9maWxlOyBleGl0IDAiLAotICAgICAgLi4uICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsCi0gICAgICAuLi4gICAgIHNoZWxsPVRydWUpCi0gICAgICAnbHM6IG5vbl9leGlzdGVudF9maWxlOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XG4nCisgICBUaGUgcmV0dXJuIHZhbHVlIGZyb20gOmZ1bmM6YHJ1bmAsIHJlcHJlc2VudGluZyBhIHByb2Nlc3MgdGhhdCBoYXMgZmluaXNoZWQuCiAKLSAgIC4uIG5vdGU6OgorICAgLi4gYXR0cmlidXRlOjogYXJncwogCi0gICAgICBEbyBub3QgdXNlIGBgc3Rkb3V0PVBJUEVgYCBvciBgYHN0ZGVycj1QSVBFYGAgd2l0aCB0aGlzCi0gICAgICBmdW5jdGlvbi4gIFRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmxvY2sgaWYgaXQgZ2VuZXJhdGVzIGVub3VnaAotICAgICAgb3V0cHV0IHRvIGEgcGlwZSB0byBmaWxsIHVwIHRoZSBPUyBwaXBlIGJ1ZmZlciBhcyB0aGUgcGlwZXMgYXJlCi0gICAgICBub3QgYmVpbmcgcmVhZCBmcm9tLgorICAgICAgVGhlIGFyZ3VtZW50cyB1c2VkIHRvIGxhdW5jaCB0aGUgcHJvY2Vzcy4gVGhpcyBtYXkgYmUgYSBsaXN0IG9yIGEgc3RyaW5nLgogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKKyAgIC4uIGF0dHJpYnV0ZTo6IHJldHVybmNvZGUKIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKLSAgICAgICp0aW1lb3V0KiB3YXMgYWRkZWQuCisgICAgICBFeGl0IHN0YXR1cyBvZiB0aGUgY2hpbGQgcHJvY2Vzcy4gVHlwaWNhbGx5LCBhbiBleGl0IHN0YXR1cyBvZiAwIGluZGljYXRlcworICAgICAgdGhhdCBpdCByYW4gc3VjY2Vzc2Z1bGx5LgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAotICAgICAgKmlucHV0KiB3YXMgYWRkZWQuCisgICAgICBBIG5lZ2F0aXZlIHZhbHVlIGBgLU5gYCBpbmRpY2F0ZXMgdGhhdCB0aGUgY2hpbGQgd2FzIHRlcm1pbmF0ZWQgYnkgc2lnbmFsCisgICAgICBgYE5gYCAoUE9TSVggb25seSkuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHN0ZG91dAorCisgICAgICBDYXB0dXJlZCBzdGRvdXQgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gQSBieXRlcyBzZXF1ZW5jZSwgb3IgYSBzdHJpbmcgaWYKKyAgICAgIDpmdW5jOmBydW5gIHdhcyBjYWxsZWQgd2l0aCBgYHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlYGAuIE5vbmUgaWYgc3Rkb3V0CisgICAgICB3YXMgbm90IGNhcHR1cmVkLgorCisgICAgICBJZiB5b3UgcmFuIHRoZSBwcm9jZXNzIHdpdGggYGBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVRgYCwgc3Rkb3V0IGFuZAorICAgICAgc3RkZXJyIHdpbGwgYmUgY29tYmluZWQgaW4gdGhpcyBhdHRyaWJ1dGUsIGFuZCA6YXR0cjpgc3RkZXJyYCB3aWxsIGJlCisgICAgICBOb25lLgorCisgICAuLiBhdHRyaWJ1dGU6OiBzdGRlcnIKKworICAgICAgQ2FwdHVyZWQgc3RkZXJyIGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuIEEgYnl0ZXMgc2VxdWVuY2UsIG9yIGEgc3RyaW5nIGlmCisgICAgICA6ZnVuYzpgcnVuYCB3YXMgY2FsbGVkIHdpdGggYGB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZWBgLiBOb25lIGlmIHN0ZGVycgorICAgICAgd2FzIG5vdCBjYXB0dXJlZC4KKworICAgLi4gbWV0aG9kOjogY2hlY2tfcmV0dXJuY29kZSgpCisKKyAgICAgIElmIDphdHRyOmByZXR1cm5jb2RlYCBpcyBub24temVybywgcmFpc2UgYSA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogLi4gZGF0YTo6IERFVk5VTEwKIApAQCAtMjI1LDExICsxNjQsMjIgQEAKIAogICAgIC4uIGF0dHJpYnV0ZTo6IG91dHB1dAogCi0gICAgICAgIE91dHB1dCBvZiB0aGUgY2hpbGQgcHJvY2VzcyBpZiB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgYnkKKyAgICAgICAgT3V0cHV0IG9mIHRoZSBjaGlsZCBwcm9jZXNzIGlmIGl0IHdhcyBjYXB0dXJlZCBieSA6ZnVuYzpgcnVuYCBvcgogICAgICAgICA6ZnVuYzpgY2hlY2tfb3V0cHV0YC4gIE90aGVyd2lzZSwgYGBOb25lYGAuCiAKKyAgICAuLiBhdHRyaWJ1dGU6OiBzdGRvdXQKKworICAgICAgICBBbGlhcyBmb3Igb3V0cHV0LCBmb3Igc3ltbWV0cnkgd2l0aCA6YXR0cjpgc3RkZXJyYC4KKworICAgIC4uIGF0dHJpYnV0ZTo6IHN0ZGVycgorCisgICAgICAgIFN0ZGVyciBvdXRwdXQgb2YgdGhlIGNoaWxkIHByb2Nlc3MgaWYgaXQgd2FzIGNhcHR1cmVkIGJ5IDpmdW5jOmBydW5gLgorICAgICAgICBPdGhlcndpc2UsIGBgTm9uZWBgLgorCiAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAqc3Rkb3V0KiBhbmQgKnN0ZGVyciogYXR0cmlidXRlcyBhZGRlZAogCiAuLiBleGNlcHRpb246OiBDYWxsZWRQcm9jZXNzRXJyb3IKIApAQCAtMjQ2LDkgKzE5NiwyMCBAQAogCiAgICAgLi4gYXR0cmlidXRlOjogb3V0cHV0CiAKLSAgICAgICAgT3V0cHV0IG9mIHRoZSBjaGlsZCBwcm9jZXNzIGlmIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBieQorICAgICAgICBPdXRwdXQgb2YgdGhlIGNoaWxkIHByb2Nlc3MgaWYgaXQgd2FzIGNhcHR1cmVkIGJ5IDpmdW5jOmBydW5gIG9yCiAgICAgICAgIDpmdW5jOmBjaGVja19vdXRwdXRgLiAgT3RoZXJ3aXNlLCBgYE5vbmVgYC4KIAorICAgIC4uIGF0dHJpYnV0ZTo6IHN0ZG91dAorCisgICAgICAgIEFsaWFzIGZvciBvdXRwdXQsIGZvciBzeW1tZXRyeSB3aXRoIDphdHRyOmBzdGRlcnJgLgorCisgICAgLi4gYXR0cmlidXRlOjogc3RkZXJyCisKKyAgICAgICAgU3RkZXJyIG91dHB1dCBvZiB0aGUgY2hpbGQgcHJvY2VzcyBpZiBpdCB3YXMgY2FwdHVyZWQgYnkgOmZ1bmM6YHJ1bmAuCisgICAgICAgIE90aGVyd2lzZSwgYGBOb25lYGAuCisKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAqc3Rkb3V0KiBhbmQgKnN0ZGVyciogYXR0cmlidXRlcyBhZGRlZAogCiAKIC4uIF9mcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzOgpAQCAtNjM1LDYgKzU5Niw3IEBACiAgICBtdXN0IGJlIGJ5dGVzIG9yLCBpZiAqdW5pdmVyc2FsX25ld2xpbmVzKiB3YXMgYGBUcnVlYGAsIGEgc3RyaW5nLgogCiAgICA6bWV0aDpgY29tbXVuaWNhdGVgIHJldHVybnMgYSB0dXBsZSBgYChzdGRvdXRfZGF0YSwgc3RkZXJyX2RhdGEpYGAuCisgICBUaGUgZGF0YSB3aWxsIGJlIGJ5dGVzIG9yLCBpZiAqdW5pdmVyc2FsX25ld2xpbmVzKiB3YXMgYGBUcnVlYGAsIHN0cmluZ3MuCiAKICAgIE5vdGUgdGhhdCBpZiB5b3Ugd2FudCB0byBzZW5kIGRhdGEgdG8gdGhlIHByb2Nlc3MncyBzdGRpbiwgeW91IG5lZWQgdG8gY3JlYXRlCiAgICB0aGUgUG9wZW4gb2JqZWN0IHdpdGggYGBzdGRpbj1QSVBFYGAuICBTaW1pbGFybHksIHRvIGdldCBhbnl0aGluZyBvdGhlciB0aGFuCkBAIC04NTEsNiArODEzLDExMiBAQAogCiAgICBUaGlzIGZsYWcgaXMgaWdub3JlZCBpZiA6ZGF0YTpgQ1JFQVRFX05FV19DT05TT0xFYCBpcyBzcGVjaWZpZWQuCiAKKy4uIF9jYWxsLWZ1bmN0aW9uLXRyaW86CisKK09sZGVyIGhpZ2gtbGV2ZWwgQVBJCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQcmlvciB0byBQeXRob24gMy41LCB0aGVzZSB0aHJlZSBmdW5jdGlvbnMgY29tcHJpc2VkIHRoZSBoaWdoIGxldmVsIEFQSSB0bworc3VicHJvY2Vzcy4gWW91IGNhbiBub3cgdXNlIDpmdW5jOmBydW5gIGluIG1hbnkgY2FzZXMsIGJ1dCBsb3RzIG9mIGV4aXN0aW5nIGNvZGUKK2NhbGxzIHRoZXNlIGZ1bmN0aW9ucy4KKworLi4gZnVuY3Rpb246OiBjYWxsKGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHRpbWVvdXQ9Tm9uZSkKKworICAgUnVuIHRoZSBjb21tYW5kIGRlc2NyaWJlZCBieSAqYXJncyouICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlLCB0aGVuCisgICByZXR1cm4gdGhlIDphdHRyOmB+UG9wZW4ucmV0dXJuY29kZWAgYXR0cmlidXRlLgorCisgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG86OgorCisgICAgICAgcnVuKC4uLikucmV0dXJuY29kZQorCisgICAoZXhjZXB0IHRoYXQgdGhlICppbnB1dCogYW5kICpjaGVjayogcGFyYW1ldGVycyBhcmUgbm90IHN1cHBvcnRlZCkKKworICAgVGhlIGFyZ3VtZW50cyBzaG93biBhYm92ZSBhcmUgbWVyZWx5IHRoZSBtb3N0CisgICBjb21tb24gb25lcy4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGxhcmdlbHkgdGhlCisgICBzYW1lIGFzIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yIC0gdGhpcyBmdW5jdGlvbiBwYXNzZXMgYWxsCisgICBzdXBwbGllZCBhcmd1bWVudHMgb3RoZXIgdGhhbiAqdGltZW91dCogZGlyZWN0bHkgdGhyb3VnaCB0byB0aGF0IGludGVyZmFjZS4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIERvIG5vdCB1c2UgYGBzdGRvdXQ9UElQRWBgIG9yIGBgc3RkZXJyPVBJUEVgYCB3aXRoIHRoaXMKKyAgICAgIGZ1bmN0aW9uLiAgVGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBibG9jayBpZiBpdCBnZW5lcmF0ZXMgZW5vdWdoCisgICAgICBvdXRwdXQgdG8gYSBwaXBlIHRvIGZpbGwgdXAgdGhlIE9TIHBpcGUgYnVmZmVyIGFzIHRoZSBwaXBlcyBhcmUKKyAgICAgIG5vdCBiZWluZyByZWFkIGZyb20uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgorCisuLiBmdW5jdGlvbjo6IGNoZWNrX2NhbGwoYXJncywgKiwgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdGltZW91dD1Ob25lKQorCisgICBSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cy4gIFdhaXQgZm9yIGNvbW1hbmQgdG8gY29tcGxldGUuIElmIHRoZSByZXR1cm4KKyAgIGNvZGUgd2FzIHplcm8gdGhlbiByZXR1cm4sIG90aGVyd2lzZSByYWlzZSA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgLiBUaGUKKyAgIDpleGM6YENhbGxlZFByb2Nlc3NFcnJvcmAgb2JqZWN0IHdpbGwgaGF2ZSB0aGUgcmV0dXJuIGNvZGUgaW4gdGhlCisgICA6YXR0cjpgfkNhbGxlZFByb2Nlc3NFcnJvci5yZXR1cm5jb2RlYCBhdHRyaWJ1dGUuCisKKyAgIFRoaXMgaXMgZXF1aXZhbGVudCB0bzo6CisKKyAgICAgICBydW4oLi4uLCBjaGVjaz1UcnVlKQorCisgICAoZXhjZXB0IHRoYXQgdGhlICppbnB1dCogcGFyYW1ldGVyIGlzIG5vdCBzdXBwb3J0ZWQpCisKKyAgIFRoZSBhcmd1bWVudHMgc2hvd24gYWJvdmUgYXJlIG1lcmVseSB0aGUgbW9zdAorICAgY29tbW9uIG9uZXMuIFRoZSBmdWxsIGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBsYXJnZWx5IHRoZQorICAgc2FtZSBhcyB0aGF0IG9mIHRoZSA6Y2xhc3M6YFBvcGVuYCBjb25zdHJ1Y3RvciAtIHRoaXMgZnVuY3Rpb24gcGFzc2VzIGFsbAorICAgc3VwcGxpZWQgYXJndW1lbnRzIG90aGVyIHRoYW4gKnRpbWVvdXQqIGRpcmVjdGx5IHRocm91Z2ggdG8gdGhhdCBpbnRlcmZhY2UuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBEbyBub3QgdXNlIGBgc3Rkb3V0PVBJUEVgYCBvciBgYHN0ZGVycj1QSVBFYGAgd2l0aCB0aGlzCisgICAgICBmdW5jdGlvbi4gIFRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmxvY2sgaWYgaXQgZ2VuZXJhdGVzIGVub3VnaAorICAgICAgb3V0cHV0IHRvIGEgcGlwZSB0byBmaWxsIHVwIHRoZSBPUyBwaXBlIGJ1ZmZlciBhcyB0aGUgcGlwZXMgYXJlCisgICAgICBub3QgYmVpbmcgcmVhZCBmcm9tLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KKworCisuLiBmdW5jdGlvbjo6IGNoZWNrX291dHB1dChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdGltZW91dD1Ob25lKQorCisgICBSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cyBhbmQgcmV0dXJuIGl0cyBvdXRwdXQuCisKKyAgIElmIHRoZSByZXR1cm4gY29kZSB3YXMgbm9uLXplcm8gaXQgcmFpc2VzIGEgOmV4YzpgQ2FsbGVkUHJvY2Vzc0Vycm9yYC4gVGhlCisgICA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgIG9iamVjdCB3aWxsIGhhdmUgdGhlIHJldHVybiBjb2RlIGluIHRoZQorICAgOmF0dHI6YH5DYWxsZWRQcm9jZXNzRXJyb3IucmV0dXJuY29kZWAgYXR0cmlidXRlIGFuZCBhbnkgb3V0cHV0IGluIHRoZQorICAgOmF0dHI6YH5DYWxsZWRQcm9jZXNzRXJyb3Iub3V0cHV0YCBhdHRyaWJ1dGUuCisKKyAgIFRoaXMgaXMgZXF1aXZhbGVudCB0bzo6CisKKyAgICAgICBydW4oLi4uLCBjaGVjaz1UcnVlLCBzdGRvdXQ9UElQRSkuc3Rkb3V0CisKKyAgIFRoZSBhcmd1bWVudHMgc2hvd24gYWJvdmUgYXJlIG1lcmVseSB0aGUgbW9zdCBjb21tb24gb25lcy4KKyAgIFRoZSBmdWxsIGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBsYXJnZWx5IHRoZSBzYW1lIGFzIHRoYXQgb2YgOmZ1bmM6YHJ1bmAgLQorICAgbW9zdCBhcmd1bWVudHMgYXJlIHBhc3NlZCBkaXJlY3RseSB0aHJvdWdoIHRvIHRoYXQgaW50ZXJmYWNlLgorICAgSG93ZXZlciwgZXhwbGljaXRseSBwYXNzaW5nIGBgaW5wdXQ9Tm9uZWBgIHRvIGluaGVyaXQgdGhlIHBhcmVudCdzCisgICBzdGFuZGFyZCBpbnB1dCBmaWxlIGhhbmRsZSBpcyBub3Qgc3VwcG9ydGVkLgorCisgICBCeSBkZWZhdWx0LCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSBkYXRhIGFzIGVuY29kZWQgYnl0ZXMuIFRoZSBhY3R1YWwKKyAgIGVuY29kaW5nIG9mIHRoZSBvdXRwdXQgZGF0YSBtYXkgZGVwZW5kIG9uIHRoZSBjb21tYW5kIGJlaW5nIGludm9rZWQsIHNvIHRoZQorICAgZGVjb2RpbmcgdG8gdGV4dCB3aWxsIG9mdGVuIG5lZWQgdG8gYmUgaGFuZGxlZCBhdCB0aGUgYXBwbGljYXRpb24gbGV2ZWwuCisKKyAgIFRoaXMgYmVoYXZpb3VyIG1heSBiZSBvdmVycmlkZGVuIGJ5IHNldHRpbmcgKnVuaXZlcnNhbF9uZXdsaW5lcyogdG8KKyAgIGBgVHJ1ZWBgIGFzIGRlc2NyaWJlZCBhYm92ZSBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYC4KKworICAgVG8gYWxzbyBjYXB0dXJlIHN0YW5kYXJkIGVycm9yIGluIHRoZSByZXN1bHQsIHVzZQorICAgYGBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVRgYDo6CisKKyAgICAgID4+PiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgKKyAgICAgIC4uLiAgICAgImxzIG5vbl9leGlzdGVudF9maWxlOyBleGl0IDAiLAorICAgICAgLi4uICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsCisgICAgICAuLi4gICAgIHNoZWxsPVRydWUpCisgICAgICAnbHM6IG5vbl9leGlzdGVudF9maWxlOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XG4nCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgIFN1cHBvcnQgZm9yIHRoZSAqaW5wdXQqIGtleXdvcmQgYXJndW1lbnQgd2FzIGFkZGVkLgogCiAuLiBfc3VicHJvY2Vzcy1yZXBsYWNlbWVudHM6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N5bXRhYmxlLnJzdCBiL0RvYy9saWJyYXJ5L3N5bXRhYmxlLnJzdAppbmRleCAyNTAzZDMzLi5iYTJjYWZmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zeW10YWJsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3ltdGFibGUucnN0CkBAIC03MSwxMCArNzEsNiBAQAogCiAgICAgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIGJsb2NrIHVzZXMgYGBleGVjYGAuCiAKLSAgIC4uIG1ldGhvZDo6IGhhc19pbXBvcnRfc3RhcigpCi0KLSAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgYmxvY2sgdXNlcyBhIHN0YXJyZWQgZnJvbS1pbXBvcnQuCi0KICAgIC4uIG1ldGhvZDo6IGdldF9pZGVudGlmaWVycygpCiAKICAgICAgIFJldHVybiBhIGxpc3Qgb2YgbmFtZXMgb2Ygc3ltYm9scyBpbiB0aGlzIHRhYmxlLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3lzLnJzdCBiL0RvYy9saWJyYXJ5L3N5cy5yc3QKaW5kZXggYzAzNzhlMC4uMzZlOGVlNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3lzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zeXMucnN0CkBAIC0xNjcsNyArMTY3LDcgQEAKIAogLi4gZGF0YTo6IGRvbnRfd3JpdGVfYnl0ZWNvZGUKIAotICAgSWYgdGhpcyBpcyB0cnVlLCBQeXRob24gd29uJ3QgdHJ5IHRvIHdyaXRlIGBgLnB5Y2BgIG9yIGBgLnB5b2BgIGZpbGVzIG9uIHRoZQorICAgSWYgdGhpcyBpcyB0cnVlLCBQeXRob24gd29uJ3QgdHJ5IHRvIHdyaXRlIGBgLnB5Y2BgIGZpbGVzIG9uIHRoZQogICAgaW1wb3J0IG9mIHNvdXJjZSBtb2R1bGVzLiAgVGhpcyB2YWx1ZSBpcyBpbml0aWFsbHkgc2V0IHRvIGBgVHJ1ZWBgIG9yCiAgICBgYEZhbHNlYGAgZGVwZW5kaW5nIG9uIHRoZSA6b3B0aW9uOmAtQmAgY29tbWFuZCBsaW5lIG9wdGlvbiBhbmQgdGhlCiAgICA6ZW52dmFyOmBQWVRIT05ET05UV1JJVEVCWVRFQ09ERWAgZW52aXJvbm1lbnQgdmFyaWFibGUsIGJ1dCB5b3UgY2FuIHNldCBpdApAQCAtNTc2LDYgKzU3NiwxOCBAQAogICAgICAgKnNlcnZpY2VfcGFja19tYWpvciosICpzdWl0ZV9tYXNrKiwgYW5kICpwcm9kdWN0X3R5cGUqLgogCiAKKy4uIGZ1bmN0aW9uOjogZ2V0X2Nvcm91dGluZV93cmFwcGVyKCkKKworICAgUmV0dXJucyBgYE5vbmVgYCwgb3IgYSB3cmFwcGVyIHNldCBieSA6ZnVuYzpgc2V0X2Nvcm91dGluZV93cmFwcGVyYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAgICBTZWUgOnBlcDpgNDkyYCBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAuLiBub3RlOjoKKyAgICAgIFRoaXMgZnVuY3Rpb24gaGFzIGJlZW4gYWRkZWQgb24gYSBwcm92aXNpb25hbCBiYXNpcyAoc2VlIDpwZXA6YDQxMWAKKyAgICAgIGZvciBkZXRhaWxzLikgIFVzZSBpdCBvbmx5IGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuCisKKwogLi4gZGF0YTo6IGhhc2hfaW5mbwogCiAgICBBIDp0ZXJtOmBzdHJ1Y3Qgc2VxdWVuY2VgIGdpdmluZyBwYXJhbWV0ZXJzIG9mIHRoZSBudW1lcmljIGhhc2gKQEAgLTcxOCw2ICs3MzAsMTQgQEAKICAgIHZhbHVlIG9mIDpmdW5jOmBpbnRlcm5gIGFyb3VuZCB0byBiZW5lZml0IGZyb20gaXQuCiAKIAorLi4gZnVuY3Rpb246OiBpc19maW5hbGl6aW5nKCkKKworICAgUmV0dXJuIDpjb25zdDpgVHJ1ZWAgaWYgdGhlIFB5dGhvbiBpbnRlcnByZXRlciBpcworICAgOnRlcm06YHNodXR0aW5nIGRvd24gPGludGVycHJldGVyIHNodXRkb3duPmAsIDpjb25zdDpgRmFsc2VgIG90aGVyd2lzZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gZGF0YTo6IGxhc3RfdHlwZQogICAgICAgICAgIGxhc3RfdmFsdWUKICAgICAgICAgICBsYXN0X3RyYWNlYmFjawpAQCAtNzU0LDE5ICs3NzQsMzIgQEAKIAogLi4gZGF0YTo6IG1ldGFfcGF0aAogCi0gICAgQSBsaXN0IG9mIDp0ZXJtOmBmaW5kZXJgIG9iamVjdHMgdGhhdCBoYXZlIHRoZWlyIDptZXRoOmBmaW5kX21vZHVsZWAKLSAgICBtZXRob2RzIGNhbGxlZCB0byBzZWUgaWYgb25lIG9mIHRoZSBvYmplY3RzIGNhbiBmaW5kIHRoZSBtb2R1bGUgdG8gYmUKLSAgICBpbXBvcnRlZC4gVGhlIDptZXRoOmBmaW5kX21vZHVsZWAgbWV0aG9kIGlzIGNhbGxlZCBhdCBsZWFzdCB3aXRoIHRoZQotICAgIGFic29sdXRlIG5hbWUgb2YgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZC4gSWYgdGhlIG1vZHVsZSB0byBiZSBpbXBvcnRlZCBpcwotICAgIGNvbnRhaW5lZCBpbiBwYWNrYWdlIHRoZW4gdGhlIHBhcmVudCBwYWNrYWdlJ3MgOmF0dHI6YF9fcGF0aF9fYCBhdHRyaWJ1dGUKLSAgICBpcyBwYXNzZWQgaW4gYXMgYSBzZWNvbmQgYXJndW1lbnQuIFRoZSBtZXRob2QgcmV0dXJucyBgYE5vbmVgYCBpZgotICAgIHRoZSBtb2R1bGUgY2Fubm90IGJlIGZvdW5kLCBlbHNlIHJldHVybnMgYSA6dGVybTpgbG9hZGVyYC4KKyAgICBBIGxpc3Qgb2YgOnRlcm06YG1ldGEgcGF0aCBmaW5kZXJgIG9iamVjdHMgdGhhdCBoYXZlIHRoZWlyCisgICAgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLk1ldGFQYXRoRmluZGVyLmZpbmRfc3BlY2AgbWV0aG9kcyBjYWxsZWQgdG8gc2VlIGlmIG9uZQorICAgIG9mIHRoZSBvYmplY3RzIGNhbiBmaW5kIHRoZSBtb2R1bGUgdG8gYmUgaW1wb3J0ZWQuIFRoZQorICAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5NZXRhUGF0aEZpbmRlci5maW5kX3NwZWNgIG1ldGhvZCBpcyBjYWxsZWQgd2l0aCBhdAorICAgIGxlYXN0IHRoZSBhYnNvbHV0ZSBuYW1lIG9mIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQuIElmIHRoZSBtb2R1bGUgdG8gYmUKKyAgICBpbXBvcnRlZCBpcyBjb250YWluZWQgaW4gYSBwYWNrYWdlLCB0aGVuIHRoZSBwYXJlbnQgcGFja2FnZSdzIDphdHRyOmBfX3BhdGhfX2AKKyAgICBhdHRyaWJ1dGUgaXMgcGFzc2VkIGluIGFzIGEgc2Vjb25kIGFyZ3VtZW50LiBUaGUgbWV0aG9kIHJldHVybnMgYQorICAgIDp0ZXJtOmBtb2R1bGUgc3BlY2AsIG9yIGBgTm9uZWBgIGlmIHRoZSBtb2R1bGUgY2Fubm90IGJlIGZvdW5kLgogCi0gICAgOmRhdGE6YHN5cy5tZXRhX3BhdGhgIGlzIHNlYXJjaGVkIGJlZm9yZSBhbnkgaW1wbGljaXQgZGVmYXVsdCBmaW5kZXJzIG9yCi0gICAgOmRhdGE6YHN5cy5wYXRoYC4KKyAgICAuLiBzZWVhbHNvOjoKIAotICAgIFNlZSA6cGVwOmAzMDJgIGZvciB0aGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbi4KKyAgICAgICAgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLk1ldGFQYXRoRmluZGVyYAorICAgICAgICAgIFRoZSBhYnN0cmFjdCBiYXNlIGNsYXNzIGRlZmluaW5nIHRoZSBpbnRlcmZhY2Ugb2YgZmluZGVyIG9iamVjdHMgb24KKyAgICAgICAgICA6ZGF0YTpgbWV0YV9wYXRoYC4KKyAgICAgICAgOmNsYXNzOmBpbXBvcnRsaWIubWFjaGluZXJ5Lk1vZHVsZVNwZWNgCisgICAgICAgICAgVGhlIGNvbmNyZXRlIGNsYXNzIHdoaWNoCisgICAgICAgICAgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLk1ldGFQYXRoRmluZGVyLmZpbmRfc3BlY2Agc2hvdWxkIHJldHVybgorICAgICAgICAgIGluc3RhbmNlcyBvZi4KIAorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisKKyAgICAgICAgOnRlcm06YE1vZHVsZSBzcGVjcyA8bW9kdWxlIHNwZWM+YCB3ZXJlIGludHJvZHVjZWQgaW4gUHl0aG9uIDMuNCwgYnkKKyAgICAgICAgOnBlcDpgNDUxYC4gRWFybGllciB2ZXJzaW9ucyBvZiBQeXRob24gbG9va2VkIGZvciBhIG1ldGhvZCBjYWxsZWQKKyAgICAgICAgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLk1ldGFQYXRoRmluZGVyLmZpbmRfbW9kdWxlYC4KKyAgICAgICAgVGhpcyBpcyBzdGlsbCBjYWxsZWQgYXMgYSBmYWxsYmFjayBpZiBhIDpkYXRhOmBtZXRhX3BhdGhgIGVudHJ5IGRvZXNuJ3QKKyAgICAgICAgaGF2ZSBhIDptZXRoOmB+aW1wb3J0bGliLmFiYy5NZXRhUGF0aEZpbmRlci5maW5kX3NwZWNgIG1ldGhvZC4KIAogLi4gZGF0YTo6IG1vZHVsZXMKIApAQCAtOTU1LDYgKzk4OCwxMyBAQAogICAgdGhhdCBzdXBwb3J0cyBhIGhpZ2hlciBsaW1pdC4gIFRoaXMgc2hvdWxkIGJlIGRvbmUgd2l0aCBjYXJlLCBiZWNhdXNlIGEgdG9vLWhpZ2gKICAgIGxpbWl0IGNhbiBsZWFkIHRvIGEgY3Jhc2guCiAKKyAgIElmIHRoZSBuZXcgbGltaXQgaXMgdG9vIGxvdyBhdCB0aGUgY3VycmVudCByZWN1cnNpb24gZGVwdGgsIGEKKyAgIDpleGM6YFJlY3Vyc2lvbkVycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNS4xCisgICAgICBBIDpleGM6YFJlY3Vyc2lvbkVycm9yYCBleGNlcHRpb24gaXMgbm93IHJhaXNlZCBpZiB0aGUgbmV3IGxpbWl0IGlzIHRvbworICAgICAgbG93IGF0IHRoZSBjdXJyZW50IHJlY3Vyc2lvbiBkZXB0aC4KKwogCiAuLiBmdW5jdGlvbjo6IHNldHN3aXRjaGludGVydmFsKGludGVydmFsKQogCkBAIC0xMDUzLDYgKzEwOTMsNDYgQEAKICAgICAgIHRodXMgbm90IGxpa2VseSB0byBiZSBpbXBsZW1lbnRlZCBlbHNld2hlcmUuCiAKIAorLi4gZnVuY3Rpb246OiBzZXRfY29yb3V0aW5lX3dyYXBwZXIod3JhcHBlcikKKworICAgQWxsb3dzIGludGVyY2VwdGluZyBjcmVhdGlvbiBvZiA6dGVybTpgY29yb3V0aW5lYCBvYmplY3RzIChvbmx5IG9uZXMgdGhhdAorICAgYXJlIGNyZWF0ZWQgYnkgYW4gOmtleXdvcmQ6YGFzeW5jIGRlZmAgZnVuY3Rpb247IGdlbmVyYXRvcnMgZGVjb3JhdGVkIHdpdGgKKyAgIDpmdW5jOmB0eXBlcy5jb3JvdXRpbmVgIG9yIDpmdW5jOmBhc3luY2lvLmNvcm91dGluZWAgd2lsbCBub3QgYmUKKyAgIGludGVyY2VwdGVkKS4KKworICAgVGhlICp3cmFwcGVyKiBhcmd1bWVudCBtdXN0IGJlIGVpdGhlcjoKKworICAgKiBhIGNhbGxhYmxlIHRoYXQgYWNjZXB0cyBvbmUgYXJndW1lbnQgKGEgY29yb3V0aW5lIG9iamVjdCk7CisgICAqIGBgTm9uZWBgLCB0byByZXNldCB0aGUgd3JhcHBlci4KKworICAgSWYgY2FsbGVkIHR3aWNlLCB0aGUgbmV3IHdyYXBwZXIgcmVwbGFjZXMgdGhlIHByZXZpb3VzIG9uZS4gIFRoZSBmdW5jdGlvbgorICAgaXMgdGhyZWFkLXNwZWNpZmljLgorCisgICBUaGUgKndyYXBwZXIqIGNhbGxhYmxlIGNhbm5vdCBkZWZpbmUgbmV3IGNvcm91dGluZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseTo6CisKKyAgICAgICAgZGVmIHdyYXBwZXIoY29ybyk6CisgICAgICAgICAgICBhc3luYyBkZWYgd3JhcChjb3JvKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgY29ybworICAgICAgICAgICAgcmV0dXJuIHdyYXAoY29ybykKKyAgICAgICAgc3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlcih3cmFwcGVyKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICAjIFRoZSBmb2xsb3dpbmcgbGluZSB3aWxsIGZhaWwgd2l0aCBhIFJ1bnRpbWVFcnJvciwgYmVjYXVzZQorICAgICAgICAjIGBgd3JhcHBlcmBgIGNyZWF0ZXMgYSBgYHdyYXAoY29ybylgYCBjb3JvdXRpbmU6CisgICAgICAgIGZvbygpCisKKyAgIFNlZSBhbHNvIDpmdW5jOmBnZXRfY29yb3V0aW5lX3dyYXBwZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIFNlZSA6cGVwOmA0OTJgIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIC4uIG5vdGU6OgorICAgICAgVGhpcyBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZCBvbiBhIHByb3Zpc2lvbmFsIGJhc2lzIChzZWUgOnBlcDpgNDExYAorICAgICAgZm9yIGRldGFpbHMuKSAgVXNlIGl0IG9ubHkgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KKworCiAuLiBkYXRhOjogc3RkaW4KICAgICAgICAgICBzdGRvdXQKICAgICAgICAgICBzdGRlcnIKQEAgLTEyMjMsNCArMTMwMywzIEBACiAuLiBydWJyaWM6OiBDaXRhdGlvbnMKIAogLi4gW0M5OV0gSVNPL0lFQyA5ODk5OjE5OTkuICAiUHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIC0tIEMuIiAgQSBwdWJsaWMgZHJhZnQgb2YgdGhpcyBzdGFuZGFyZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvanRjMS9zYzIyL3dnMTQvd3d3L2RvY3MvbjEyNTYucGRmXCAuCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RhcmZpbGUucnN0IGIvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QKaW5kZXggMDVmMjlhZC4uYWRhY2IwYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QKQEAgLTYyLDYgKzYyLDIzIEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGAncjp4eidgYCAgICAgICB8IE9wZW4gZm9yIHJlYWRpbmcgd2l0aCBsem1hIGNvbXByZXNzaW9uLiAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ3gnYGAgb3IgICAgICAgfCBDcmVhdGUgYSB0YXJmaWxlIGV4Y2x1c2l2ZWx5IHdpdGhvdXQgICAgICAgIHwKKyAgIHwgYGAneDonYGAgICAgICAgICB8IGNvbXByZXNzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgUmFpc2UgYW4gOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCBleGNlcHRpb24gICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCBpZiBpdCBpcyBhbHJlYWR5IGV4aXN0cy4gICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCd4Omd6J2BgICAgICAgIHwgQ3JlYXRlIGEgdGFyZmlsZSB3aXRoIGd6aXAgY29tcHJlc3Npb24uICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCBSYWlzZSBhbiA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgIGV4Y2VwdGlvbiAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8IGlmIGl0IGlzIGFscmVhZHkgZXhpc3RzLiAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ3g6YnoyJ2BgICAgICAgfCBDcmVhdGUgYSB0YXJmaWxlIHdpdGggYnppcDIgY29tcHJlc3Npb24uICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8IFJhaXNlIGFuIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgZXhjZXB0aW9uICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgaWYgaXQgaXMgYWxyZWFkeSBleGlzdHMuICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAneDp4eidgYCAgICAgICB8IENyZWF0ZSBhIHRhcmZpbGUgd2l0aCBsem1hIGNvbXByZXNzaW9uLiAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgUmFpc2UgYW4gOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCBleGNlcHRpb24gICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCBpZiBpdCBpcyBhbHJlYWR5IGV4aXN0cy4gICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBgYCdhJyBvciAnYTonYGAgIHwgT3BlbiBmb3IgYXBwZW5kaW5nIHdpdGggbm8gY29tcHJlc3Npb24uIFRoZSB8CiAgICB8ICAgICAgICAgICAgICAgICAgfCBmaWxlIGlzIGNyZWF0ZWQgaWYgaXQgZG9lcyBub3QgZXhpc3QuICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpAQCAtODIsOSArOTksOSBAQAogICAgSWYgKmZpbGVvYmoqIGlzIHNwZWNpZmllZCwgaXQgaXMgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSB0byBhIDp0ZXJtOmBmaWxlIG9iamVjdGAKICAgIG9wZW5lZCBpbiBiaW5hcnkgbW9kZSBmb3IgKm5hbWUqLiBJdCBpcyBzdXBwb3NlZCB0byBiZSBhdCBwb3NpdGlvbiAwLgogCi0gICBGb3IgbW9kZXMgYGAndzpneidgYCwgYGAncjpneidgYCwgYGAndzpiejInYGAsIGBgJ3I6YnoyJ2BgLCA6ZnVuYzpgdGFyZmlsZS5vcGVuYAotICAgYWNjZXB0cyB0aGUga2V5d29yZCBhcmd1bWVudCAqY29tcHJlc3NsZXZlbCogdG8gc3BlY2lmeSB0aGUgY29tcHJlc3Npb24gbGV2ZWwgb2YKLSAgIHRoZSBmaWxlLgorICAgRm9yIG1vZGVzIGBgJ3c6Z3onYGAsIGBgJ3I6Z3onYGAsIGBgJ3c6YnoyJ2BgLCBgYCdyOmJ6MidgYCwgYGAneDpneidgYCwKKyAgIGBgJ3g6YnoyJ2BgLCA6ZnVuYzpgdGFyZmlsZS5vcGVuYCBhY2NlcHRzIHRoZSBrZXl3b3JkIGFyZ3VtZW50CisgICAqY29tcHJlc3NsZXZlbCogdG8gc3BlY2lmeSB0aGUgY29tcHJlc3Npb24gbGV2ZWwgb2YgdGhlIGZpbGUuCiAKICAgIEZvciBzcGVjaWFsIHB1cnBvc2VzLCB0aGVyZSBpcyBhIHNlY29uZCBmb3JtYXQgZm9yICptb2RlKjoKICAgIGBgJ2ZpbGVtb2RlfFtjb21wcmVzc2lvbl0nYGAuICA6ZnVuYzpgdGFyZmlsZS5vcGVuYCB3aWxsIHJldHVybiBhIDpjbGFzczpgVGFyRmlsZWAKQEAgLTEyNyw2ICsxNDQsOCBAQAogICAgfCAgICAgICAgICAgICB8IHdyaXRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBgYCd4J2BgIChleGNsdXNpdmUgY3JlYXRpb24pIG1vZGUgd2FzIGFkZGVkLgogCiAuLiBjbGFzczo6IFRhckZpbGUKIApAQCAtMjUyLDggKzI3MSw4IEBACiAgICBJbiB0aGlzIGNhc2UsIHRoZSBmaWxlIG9iamVjdCdzIDphdHRyOmBuYW1lYCBhdHRyaWJ1dGUgaXMgdXNlZCBpZiBpdCBleGlzdHMuCiAKICAgICptb2RlKiBpcyBlaXRoZXIgYGAncidgYCB0byByZWFkIGZyb20gYW4gZXhpc3RpbmcgYXJjaGl2ZSwgYGAnYSdgYCB0byBhcHBlbmQKLSAgIGRhdGEgdG8gYW4gZXhpc3RpbmcgZmlsZSBvciBgYCd3J2BgIHRvIGNyZWF0ZSBhIG5ldyBmaWxlIG92ZXJ3cml0aW5nIGFuIGV4aXN0aW5nCi0gICBvbmUuCisgICBkYXRhIHRvIGFuIGV4aXN0aW5nIGZpbGUsIGBgJ3cnYGAgdG8gY3JlYXRlIGEgbmV3IGZpbGUgb3ZlcndyaXRpbmcgYW4gZXhpc3RpbmcKKyAgIG9uZSBvciBgYCd4J2BgIHRvIGNyZWF0ZSBhIG5ldyBmaWxlIG9ubHkgaWYgaXQncyBub3QgZXhpc3RzLgogCiAgICBJZiAqZmlsZW9iaiogaXMgZ2l2ZW4sIGl0IGlzIHVzZWQgZm9yIHJlYWRpbmcgb3Igd3JpdGluZyBkYXRhLiBJZiBpdCBjYW4gYmUKICAgIGRldGVybWluZWQsICptb2RlKiBpcyBvdmVycmlkZGVuIGJ5ICpmaWxlb2JqKidzIG1vZGUuICpmaWxlb2JqKiB3aWxsIGJlIHVzZWQKQEAgLTI5MiwxMiArMzExLDE0IEBACiAgICB0byBiZSBoYW5kbGVkLiBUaGUgZGVmYXVsdCBzZXR0aW5ncyB3aWxsIHdvcmsgZm9yIG1vc3QgdXNlcnMuCiAgICBTZWUgc2VjdGlvbiA6cmVmOmB0YXItdW5pY29kZWAgZm9yIGluLWRlcHRoIGluZm9ybWF0aW9uLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgVXNlIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBhcyB0aGUgZGVmYXVsdCBmb3IgdGhlICplcnJvcnMqIGFyZ3VtZW50LgotCiAgICBUaGUgKnBheF9oZWFkZXJzKiBhcmd1bWVudCBpcyBhbiBvcHRpb25hbCBkaWN0aW9uYXJ5IG9mIHN0cmluZ3Mgd2hpY2gKICAgIHdpbGwgYmUgYWRkZWQgYXMgYSBwYXggZ2xvYmFsIGhlYWRlciBpZiAqZm9ybWF0KiBpcyA6Y29uc3Q6YFBBWF9GT1JNQVRgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgVXNlIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBhcyB0aGUgZGVmYXVsdCBmb3IgdGhlICplcnJvcnMqIGFyZ3VtZW50LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGBgJ3gnYGAgKGV4Y2x1c2l2ZSBjcmVhdGlvbikgbW9kZSB3YXMgYWRkZWQuCiAKIC4uIGNsYXNzbWV0aG9kOjogVGFyRmlsZS5vcGVuKC4uLikKIApAQCAtMzI4LDExICszNDksMTUgQEAKICAgIHJldHVybmVkIGJ5IDptZXRoOmBnZXRtZW1iZXJzYC4KIAogCi0uLiBtZXRob2Q6OiBUYXJGaWxlLmxpc3QodmVyYm9zZT1UcnVlKQorLi4gbWV0aG9kOjogVGFyRmlsZS5saXN0KHZlcmJvc2U9VHJ1ZSwgKiwgbWVtYmVycz1Ob25lKQogCiAgICBQcmludCBhIHRhYmxlIG9mIGNvbnRlbnRzIHRvIGBgc3lzLnN0ZG91dGBgLiBJZiAqdmVyYm9zZSogaXMgOmNvbnN0OmBGYWxzZWAsCiAgICBvbmx5IHRoZSBuYW1lcyBvZiB0aGUgbWVtYmVycyBhcmUgcHJpbnRlZC4gSWYgaXQgaXMgOmNvbnN0OmBUcnVlYCwgb3V0cHV0Ci0gICBzaW1pbGFyIHRvIHRoYXQgb2YgOnByb2dyYW06YGxzIC1sYCBpcyBwcm9kdWNlZC4KKyAgIHNpbWlsYXIgdG8gdGhhdCBvZiA6cHJvZ3JhbTpgbHMgLWxgIGlzIHByb2R1Y2VkLiBJZiBvcHRpb25hbCAqbWVtYmVycyogaXMKKyAgIGdpdmVuLCBpdCBtdXN0IGJlIGEgc3Vic2V0IG9mIHRoZSBsaXN0IHJldHVybmVkIGJ5IDptZXRoOmBnZXRtZW1iZXJzYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHRoZSAqbWVtYmVycyogcGFyYW1ldGVyLgogCiAKIC4uIG1ldGhvZDo6IFRhckZpbGUubmV4dCgpCkBAIC0zNDIsNyArMzY3LDcgQEAKICAgIGF2YWlsYWJsZS4KIAogCi0uLiBtZXRob2Q6OiBUYXJGaWxlLmV4dHJhY3RhbGwocGF0aD0iLiIsIG1lbWJlcnM9Tm9uZSkKKy4uIG1ldGhvZDo6IFRhckZpbGUuZXh0cmFjdGFsbChwYXRoPSIuIiwgbWVtYmVycz1Ob25lLCAqLCBudW1lcmljX293bmVyPUZhbHNlKQogCiAgICBFeHRyYWN0IGFsbCBtZW1iZXJzIGZyb20gdGhlIGFyY2hpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb3IKICAgIGRpcmVjdG9yeSAqcGF0aCouIElmIG9wdGlvbmFsICptZW1iZXJzKiBpcyBnaXZlbiwgaXQgbXVzdCBiZSBhIHN1YnNldCBvZiB0aGUKQEAgLTM1Miw2ICszNzcsMTAgQEAKICAgIHJlc2V0IGVhY2ggdGltZSBhIGZpbGUgaXMgY3JlYXRlZCBpbiBpdC4gQW5kLCBpZiBhIGRpcmVjdG9yeSdzIHBlcm1pc3Npb25zIGRvCiAgICBub3QgYWxsb3cgd3JpdGluZywgZXh0cmFjdGluZyBmaWxlcyB0byBpdCB3aWxsIGZhaWwuCiAKKyAgIElmICpudW1lcmljX293bmVyKiBpcyA6Y29uc3Q6YFRydWVgLCB0aGUgdWlkIGFuZCBnaWQgbnVtYmVycyBmcm9tIHRoZSB0YXJmaWxlCisgICBhcmUgdXNlZCB0byBzZXQgdGhlIG93bmVyL2dyb3VwIGZvciB0aGUgZXh0cmFjdGVkIGZpbGVzLiBPdGhlcndpc2UsIHRoZSBuYW1lZAorICAgdmFsdWVzIGZyb20gdGhlIHRhcmZpbGUgYXJlIHVzZWQuCisKICAgIC4uIHdhcm5pbmc6OgogCiAgICAgICBOZXZlciBleHRyYWN0IGFyY2hpdmVzIGZyb20gdW50cnVzdGVkIHNvdXJjZXMgd2l0aG91dCBwcmlvciBpbnNwZWN0aW9uLgpAQCAtMzU5LDggKzM4OCwxMSBAQAogICAgICAgdGhhdCBoYXZlIGFic29sdXRlIGZpbGVuYW1lcyBzdGFydGluZyB3aXRoIGBgIi8iYGAgb3IgZmlsZW5hbWVzIHdpdGggdHdvCiAgICAgICBkb3RzIGBgIi4uImBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgdGhlICpudW1lcmljX29ubHkqIHBhcmFtZXRlci4KIAotLi4gbWV0aG9kOjogVGFyRmlsZS5leHRyYWN0KG1lbWJlciwgcGF0aD0iIiwgc2V0X2F0dHJzPVRydWUpCisKKy4uIG1ldGhvZDo6IFRhckZpbGUuZXh0cmFjdChtZW1iZXIsIHBhdGg9IiIsIHNldF9hdHRycz1UcnVlLCAqLCBudW1lcmljX293bmVyPUZhbHNlKQogCiAgICBFeHRyYWN0IGEgbWVtYmVyIGZyb20gdGhlIGFyY2hpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksIHVzaW5nIGl0cwogICAgZnVsbCBuYW1lLiBJdHMgZmlsZSBpbmZvcm1hdGlvbiBpcyBleHRyYWN0ZWQgYXMgYWNjdXJhdGVseSBhcyBwb3NzaWJsZS4gKm1lbWJlcioKQEAgLTM2OCw2ICs0MDAsMTAgQEAKICAgIGRpcmVjdG9yeSB1c2luZyAqcGF0aCouIEZpbGUgYXR0cmlidXRlcyAob3duZXIsIG10aW1lLCBtb2RlKSBhcmUgc2V0IHVubGVzcwogICAgKnNldF9hdHRycyogaXMgZmFsc2UuCiAKKyAgIElmICpudW1lcmljX293bmVyKiBpcyA6Y29uc3Q6YFRydWVgLCB0aGUgdWlkIGFuZCBnaWQgbnVtYmVycyBmcm9tIHRoZSB0YXJmaWxlCisgICBhcmUgdXNlZCB0byBzZXQgdGhlIG93bmVyL2dyb3VwIGZvciB0aGUgZXh0cmFjdGVkIGZpbGVzLiBPdGhlcndpc2UsIHRoZSBuYW1lZAorICAgdmFsdWVzIGZyb20gdGhlIHRhcmZpbGUgYXJlIHVzZWQuCisKICAgIC4uIG5vdGU6OgogCiAgICAgICBUaGUgOm1ldGg6YGV4dHJhY3RgIG1ldGhvZCBkb2VzIG5vdCB0YWtlIGNhcmUgb2Ygc2V2ZXJhbCBleHRyYWN0aW9uIGlzc3Vlcy4KQEAgLTM4MCw2ICs0MTYsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIHRoZSAqc2V0X2F0dHJzKiBwYXJhbWV0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCB0aGUgKm51bWVyaWNfb25seSogcGFyYW1ldGVyLgorCiAuLiBtZXRob2Q6OiBUYXJGaWxlLmV4dHJhY3RmaWxlKG1lbWJlcikKIAogICAgRXh0cmFjdCBhIG1lbWJlciBmcm9tIHRoZSBhcmNoaXZlIGFzIGEgZmlsZSBvYmplY3QuICptZW1iZXIqIG1heSBiZSBhIGZpbGVuYW1lCkBAIC04MDIsNCArODQxLDMgQEAKIGJlY2F1c2UgYWxsIHRoZSBtZXRhZGF0YSBpcyBzdG9yZWQgdXNpbmcgKlVURi04Ki4gKmVuY29kaW5nKiBpcyBvbmx5IHVzZWQgaW4KIHRoZSByYXJlIGNhc2VzIHdoZW4gYmluYXJ5IHBheCBoZWFkZXJzIGFyZSBkZWNvZGVkIG9yIHdoZW4gc3RyaW5ncyB3aXRoCiBzdXJyb2dhdGUgY2hhcmFjdGVycyBhcmUgc3RvcmVkLgotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZW1wZmlsZS5yc3QgYi9Eb2MvbGlicmFyeS90ZW1wZmlsZS5yc3QKaW5kZXggMWVmYjVlNi4uMTllMWU3ZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGVtcGZpbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RlbXBmaWxlLnJzdApAQCAtMTYsNDYgKzE2LDYwIEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgbW9kdWxlIGdlbmVyYXRlcyB0ZW1wb3JhcnkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLiAgSXQgd29ya3Mgb24gYWxsCi1zdXBwb3J0ZWQgcGxhdGZvcm1zLiAgSXQgcHJvdmlkZXMgdGhyZWUgbmV3IGZ1bmN0aW9ucywKLTpmdW5jOmBOYW1lZFRlbXBvcmFyeUZpbGVgLCA6ZnVuYzpgbWtzdGVtcGAsIGFuZCA6ZnVuYzpgbWtkdGVtcGAsIHdoaWNoIHNob3VsZAotZWxpbWluYXRlIGFsbCByZW1haW5pbmcgbmVlZCB0byB1c2UgdGhlIGluc2VjdXJlIDpmdW5jOmBta3RlbXBgIGZ1bmN0aW9uLgotVGVtcG9yYXJ5IGZpbGUgbmFtZXMgY3JlYXRlZCBieSB0aGlzIG1vZHVsZSBubyBsb25nZXIgY29udGFpbiB0aGUgcHJvY2VzcyBJRDsKLWluc3RlYWQgYSBzdHJpbmcgb2Ygc2l4IHJhbmRvbSBjaGFyYWN0ZXJzIGlzIHVzZWQuCitUaGlzIG1vZHVsZSBjcmVhdGVzIHRlbXBvcmFyeSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuICBJdCB3b3JrcyBvbiBhbGwKK3N1cHBvcnRlZCBwbGF0Zm9ybXMuIDpjbGFzczpgVGVtcG9yYXJ5RmlsZWAsIDpjbGFzczpgTmFtZWRUZW1wb3JhcnlGaWxlYCwKKzpjbGFzczpgVGVtcG9yYXJ5RGlyZWN0b3J5YCwgYW5kIDpjbGFzczpgU3Bvb2xlZFRlbXBvcmFyeUZpbGVgIGFyZSBoaWdoLWxldmVsCitpbnRlcmZhY2VzIHdoaWNoIHByb3ZpZGUgYXV0b21hdGljIGNsZWFudXAgYW5kIGNhbiBiZSB1c2VkIGFzCitjb250ZXh0IG1hbmFnZXJzLiA6ZnVuYzpgbWtzdGVtcGAgYW5kCis6ZnVuYzpgbWtkdGVtcGAgYXJlIGxvd2VyLWxldmVsIGZ1bmN0aW9ucyB3aGljaCByZXF1aXJlIG1hbnVhbCBjbGVhbnVwLgogCi1BbHNvLCBhbGwgdGhlIHVzZXItY2FsbGFibGUgZnVuY3Rpb25zIG5vdyB0YWtlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHdoaWNoCi1hbGxvdyBkaXJlY3QgY29udHJvbCBvdmVyIHRoZSBsb2NhdGlvbiBhbmQgbmFtZSBvZiB0ZW1wb3JhcnkgZmlsZXMuICBJdCBpcwotbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byB1c2UgdGhlIGdsb2JhbCAqdGVtcGRpciogdmFyaWFibGUuCitBbGwgdGhlIHVzZXItY2FsbGFibGUgZnVuY3Rpb25zIGFuZCBjb25zdHJ1Y3RvcnMgdGFrZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB3aGljaAorYWxsb3cgZGlyZWN0IGNvbnRyb2wgb3ZlciB0aGUgbG9jYXRpb24gYW5kIG5hbWUgb2YgdGVtcG9yYXJ5IGZpbGVzIGFuZAorZGlyZWN0b3JpZXMuIEZpbGVzIG5hbWVzIHVzZWQgYnkgdGhpcyBtb2R1bGUgaW5jbHVkZSBhIHN0cmluZyBvZgorcmFuZG9tIGNoYXJhY3RlcnMgd2hpY2ggYWxsb3dzIHRob3NlIGZpbGVzIHRvIGJlIHNlY3VyZWx5IGNyZWF0ZWQgaW4KK3NoYXJlZCB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMuCiBUbyBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgYXJndW1lbnQgb3JkZXIgaXMgc29tZXdoYXQgb2RkOyBpdAogaXMgcmVjb21tZW5kZWQgdG8gdXNlIGtleXdvcmQgYXJndW1lbnRzIGZvciBjbGFyaXR5LgogCiBUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyB1c2VyLWNhbGxhYmxlIGl0ZW1zOgogCi0uLiBmdW5jdGlvbjo6IFRlbXBvcmFyeUZpbGUobW9kZT0ndytiJywgYnVmZmVyaW5nPU5vbmUsIGVuY29kaW5nPU5vbmUsIG5ld2xpbmU9Tm9uZSwgc3VmZml4PScnLCBwcmVmaXg9J3RtcCcsIGRpcj1Ob25lKQorLi4gZnVuY3Rpb246OiBUZW1wb3JhcnlGaWxlKG1vZGU9J3crYicsIGJ1ZmZlcmluZz1Ob25lLCBlbmNvZGluZz1Ob25lLCBuZXdsaW5lPU5vbmUsIHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwgZGlyPU5vbmUpCiAKICAgIFJldHVybiBhIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YCB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgdGVtcG9yYXJ5IHN0b3JhZ2UgYXJlYS4KLSAgIFRoZSBmaWxlIGlzIGNyZWF0ZWQgdXNpbmcgOmZ1bmM6YG1rc3RlbXBgLiBJdCB3aWxsIGJlIGRlc3Ryb3llZCBhcyBzb29uCisgICBUaGUgZmlsZSBpcyBjcmVhdGVkIHNlY3VyZWx5LCB1c2luZyB0aGUgc2FtZSBydWxlcyBhcyA6ZnVuYzpgbWtzdGVtcGAuIEl0IHdpbGwgYmUgZGVzdHJveWVkIGFzIHNvb24KICAgIGFzIGl0IGlzIGNsb3NlZCAoaW5jbHVkaW5nIGFuIGltcGxpY2l0IGNsb3NlIHdoZW4gdGhlIG9iamVjdCBpcyBnYXJiYWdlCi0gICBjb2xsZWN0ZWQpLiAgVW5kZXIgVW5peCwgdGhlIGRpcmVjdG9yeSBlbnRyeSBmb3IgdGhlIGZpbGUgaXMgcmVtb3ZlZAorICAgY29sbGVjdGVkKS4gIFVuZGVyIFVuaXgsIHRoZSBkaXJlY3RvcnkgZW50cnkgZm9yIHRoZSBmaWxlIGlzIGVpdGhlciBub3QgY3JlYXRlZCBhdCBhbGwgb3IgaXMgcmVtb3ZlZAogICAgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGZpbGUgaXMgY3JlYXRlZC4gIE90aGVyIHBsYXRmb3JtcyBkbyBub3Qgc3VwcG9ydAogICAgdGhpczsgeW91ciBjb2RlIHNob3VsZCBub3QgcmVseSBvbiBhIHRlbXBvcmFyeSBmaWxlIGNyZWF0ZWQgdXNpbmcgdGhpcwogICAgZnVuY3Rpb24gaGF2aW5nIG9yIG5vdCBoYXZpbmcgYSB2aXNpYmxlIG5hbWUgaW4gdGhlIGZpbGUgc3lzdGVtLgogCisgICBUaGUgcmVzdWx0aW5nIG9iamVjdCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciAoc2VlCisgICA6cmVmOmB0ZW1wZmlsZS1leGFtcGxlc2ApLiAgT24gY29tcGxldGlvbiBvZiB0aGUgY29udGV4dCBvcgorICAgZGVzdHJ1Y3Rpb24gb2YgdGhlIGZpbGUgb2JqZWN0IHRoZSB0ZW1wb3JhcnkgZmlsZSB3aWxsIGJlIHJlbW92ZWQKKyAgIGZyb20gdGhlIGZpbGVzeXN0ZW0uCisKICAgIFRoZSAqbW9kZSogcGFyYW1ldGVyIGRlZmF1bHRzIHRvIGBgJ3crYidgYCBzbyB0aGF0IHRoZSBmaWxlIGNyZWF0ZWQgY2FuCiAgICBiZSByZWFkIGFuZCB3cml0dGVuIHdpdGhvdXQgYmVpbmcgY2xvc2VkLiAgQmluYXJ5IG1vZGUgaXMgdXNlZCBzbyB0aGF0IGl0CiAgICBiZWhhdmVzIGNvbnNpc3RlbnRseSBvbiBhbGwgcGxhdGZvcm1zIHdpdGhvdXQgcmVnYXJkIGZvciB0aGUgZGF0YSB0aGF0IGlzCiAgICBzdG9yZWQuICAqYnVmZmVyaW5nKiwgKmVuY29kaW5nKiBhbmQgKm5ld2xpbmUqIGFyZSBpbnRlcnByZXRlZCBhcyBmb3IKICAgIDpmdW5jOmBvcGVuYC4KIAotICAgVGhlICpkaXIqLCAqcHJlZml4KiBhbmQgKnN1ZmZpeCogcGFyYW1ldGVycyBhcmUgcGFzc2VkIHRvIDpmdW5jOmBta3N0ZW1wYC4KKyAgIFRoZSAqZGlyKiwgKnByZWZpeCogYW5kICpzdWZmaXgqIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFuZAorICAgZGVmYXVsdHMgYXMgd2l0aCA6ZnVuYzpgbWtzdGVtcGAuCiAKICAgIFRoZSByZXR1cm5lZCBvYmplY3QgaXMgYSB0cnVlIGZpbGUgb2JqZWN0IG9uIFBPU0lYIHBsYXRmb3Jtcy4gIE9uIG90aGVyCiAgICBwbGF0Zm9ybXMsIGl0IGlzIGEgZmlsZS1saWtlIG9iamVjdCB3aG9zZSA6YXR0cjpgIWZpbGVgIGF0dHJpYnV0ZSBpcyB0aGUKLSAgIHVuZGVybHlpbmcgdHJ1ZSBmaWxlIG9iamVjdC4gVGhpcyBmaWxlLWxpa2Ugb2JqZWN0IGNhbiBiZSB1c2VkIGluIGEKLSAgIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQsIGp1c3QgbGlrZSBhIG5vcm1hbCBmaWxlLgorICAgdW5kZXJseWluZyB0cnVlIGZpbGUgb2JqZWN0LgorCisgICBUaGUgOnB5OmRhdGE6YG9zLk9fVE1QRklMRWAgZmxhZyBpcyB1c2VkIGlmIGl0IGlzIGF2YWlsYWJsZSBhbmQgd29ya3MKKyAgIChMaW51eC1zcGVjaWZpYywgcmVxdWlyZXMgTGludXgga2VybmVsIDMuMTEgb3IgbGF0ZXIpLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorCisgICAgICBUaGUgOnB5OmRhdGE6YG9zLk9fVE1QRklMRWAgZmxhZyBpcyBub3cgdXNlZCBpZiBhdmFpbGFibGUuCiAKIAotLi4gZnVuY3Rpb246OiBOYW1lZFRlbXBvcmFyeUZpbGUobW9kZT0ndytiJywgYnVmZmVyaW5nPU5vbmUsIGVuY29kaW5nPU5vbmUsIG5ld2xpbmU9Tm9uZSwgc3VmZml4PScnLCBwcmVmaXg9J3RtcCcsIGRpcj1Ob25lLCBkZWxldGU9VHJ1ZSkKKy4uIGZ1bmN0aW9uOjogTmFtZWRUZW1wb3JhcnlGaWxlKG1vZGU9J3crYicsIGJ1ZmZlcmluZz1Ob25lLCBlbmNvZGluZz1Ob25lLCBuZXdsaW5lPU5vbmUsIHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwgZGlyPU5vbmUsIGRlbGV0ZT1UcnVlKQogCiAgICBUaGlzIGZ1bmN0aW9uIG9wZXJhdGVzIGV4YWN0bHkgYXMgOmZ1bmM6YFRlbXBvcmFyeUZpbGVgIGRvZXMsIGV4Y2VwdCB0aGF0CiAgICB0aGUgZmlsZSBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYSB2aXNpYmxlIG5hbWUgaW4gdGhlIGZpbGUgc3lzdGVtIChvbgpAQCAtNzAsNyArODQsNyBAQAogICAgYmUgdXNlZCBpbiBhIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQsIGp1c3QgbGlrZSBhIG5vcm1hbCBmaWxlLgogCiAKLS4uIGZ1bmN0aW9uOjogU3Bvb2xlZFRlbXBvcmFyeUZpbGUobWF4X3NpemU9MCwgbW9kZT0ndytiJywgYnVmZmVyaW5nPU5vbmUsIGVuY29kaW5nPU5vbmUsIG5ld2xpbmU9Tm9uZSwgc3VmZml4PScnLCBwcmVmaXg9J3RtcCcsIGRpcj1Ob25lKQorLi4gZnVuY3Rpb246OiBTcG9vbGVkVGVtcG9yYXJ5RmlsZShtYXhfc2l6ZT0wLCBtb2RlPSd3K2InLCBidWZmZXJpbmc9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwgbmV3bGluZT1Ob25lLCBzdWZmaXg9Tm9uZSwgcHJlZml4PU5vbmUsIGRpcj1Ob25lKQogCiAgICBUaGlzIGZ1bmN0aW9uIG9wZXJhdGVzIGV4YWN0bHkgYXMgOmZ1bmM6YFRlbXBvcmFyeUZpbGVgIGRvZXMsIGV4Y2VwdCB0aGF0CiAgICBkYXRhIGlzIHNwb29sZWQgaW4gbWVtb3J5IHVudGlsIHRoZSBmaWxlIHNpemUgZXhjZWVkcyAqbWF4X3NpemUqLCBvcgpAQCAtOTIsMTIgKzEwNiwxMSBAQAogICAgICAgdGhlIHRydW5jYXRlIG1ldGhvZCBub3cgYWNjZXB0cyBhIGBgc2l6ZWBgIGFyZ3VtZW50LgogCiAKLS4uIGZ1bmN0aW9uOjogVGVtcG9yYXJ5RGlyZWN0b3J5KHN1ZmZpeD0nJywgcHJlZml4PSd0bXAnLCBkaXI9Tm9uZSkKKy4uIGZ1bmN0aW9uOjogVGVtcG9yYXJ5RGlyZWN0b3J5KHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwgZGlyPU5vbmUpCiAKLSAgIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdXNpbmcgOmZ1bmM6YG1rZHRlbXBgCi0gICAodGhlIHN1cHBsaWVkIGFyZ3VtZW50cyBhcmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uKS4KKyAgIFRoaXMgZnVuY3Rpb24gc2VjdXJlbHkgY3JlYXRlcyBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdXNpbmcgdGhlIHNhbWUgcnVsZXMgYXMgOmZ1bmM6YG1rZHRlbXBgLgogICAgVGhlIHJlc3VsdGluZyBvYmplY3QgY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIgKHNlZQotICAgOnJlZjpgY29udGV4dC1tYW5hZ2Vyc2ApLiAgT24gY29tcGxldGlvbiBvZiB0aGUgY29udGV4dCBvciBkZXN0cnVjdGlvbgorICAgOnJlZjpgdGVtcGZpbGUtZXhhbXBsZXNgKS4gIE9uIGNvbXBsZXRpb24gb2YgdGhlIGNvbnRleHQgb3IgZGVzdHJ1Y3Rpb24KICAgIG9mIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IG9iamVjdCB0aGUgbmV3bHkgY3JlYXRlZCB0ZW1wb3JhcnkgZGlyZWN0b3J5CiAgICBhbmQgYWxsIGl0cyBjb250ZW50cyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBmaWxlc3lzdGVtLgogCkBAIC0xMTIsNyArMTI1LDcgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKLS4uIGZ1bmN0aW9uOjogbWtzdGVtcChzdWZmaXg9JycsIHByZWZpeD0ndG1wJywgZGlyPU5vbmUsIHRleHQ9RmFsc2UpCisuLiBmdW5jdGlvbjo6IG1rc3RlbXAoc3VmZml4PU5vbmUsIHByZWZpeD1Ob25lLCBkaXI9Tm9uZSwgdGV4dD1GYWxzZSkKIAogICAgQ3JlYXRlcyBhIHRlbXBvcmFyeSBmaWxlIGluIHRoZSBtb3N0IHNlY3VyZSBtYW5uZXIgcG9zc2libGUuICBUaGVyZSBhcmUKICAgIG5vIHJhY2UgY29uZGl0aW9ucyBpbiB0aGUgZmlsZSdzIGNyZWF0aW9uLCBhc3N1bWluZyB0aGF0IHRoZSBwbGF0Zm9ybQpAQCAtMTI1LDE1ICsxMzgsMTYgQEAKICAgIFVubGlrZSA6ZnVuYzpgVGVtcG9yYXJ5RmlsZWAsIHRoZSB1c2VyIG9mIDpmdW5jOmBta3N0ZW1wYCBpcyByZXNwb25zaWJsZQogICAgZm9yIGRlbGV0aW5nIHRoZSB0ZW1wb3JhcnkgZmlsZSB3aGVuIGRvbmUgd2l0aCBpdC4KIAotICAgSWYgKnN1ZmZpeCogaXMgc3BlY2lmaWVkLCB0aGUgZmlsZSBuYW1lIHdpbGwgZW5kIHdpdGggdGhhdCBzdWZmaXgsCisgICBJZiAqc3VmZml4KiBpcyBub3QgYGBOb25lYGAsIHRoZSBmaWxlIG5hbWUgd2lsbCBlbmQgd2l0aCB0aGF0IHN1ZmZpeCwKICAgIG90aGVyd2lzZSB0aGVyZSB3aWxsIGJlIG5vIHN1ZmZpeC4gIDpmdW5jOmBta3N0ZW1wYCBkb2VzIG5vdCBwdXQgYSBkb3QKICAgIGJldHdlZW4gdGhlIGZpbGUgbmFtZSBhbmQgdGhlIHN1ZmZpeDsgaWYgeW91IG5lZWQgb25lLCBwdXQgaXQgYXQgdGhlCiAgICBiZWdpbm5pbmcgb2YgKnN1ZmZpeCouCiAKLSAgIElmICpwcmVmaXgqIGlzIHNwZWNpZmllZCwgdGhlIGZpbGUgbmFtZSB3aWxsIGJlZ2luIHdpdGggdGhhdCBwcmVmaXg7Ci0gICBvdGhlcndpc2UsIGEgZGVmYXVsdCBwcmVmaXggaXMgdXNlZC4KKyAgIElmICpwcmVmaXgqIGlzIG5vdCBgYE5vbmVgYCwgdGhlIGZpbGUgbmFtZSB3aWxsIGJlZ2luIHdpdGggdGhhdCBwcmVmaXg7CisgICBvdGhlcndpc2UsIGEgZGVmYXVsdCBwcmVmaXggaXMgdXNlZC4gIFRoZSBkZWZhdWx0IGlzIHRoZSByZXR1cm4gdmFsdWUgb2YKKyAgIDpmdW5jOmBnZXR0ZW1wcHJlZml4YCBvciA6ZnVuYzpgZ2V0dGVtcHByZWZpeGJgLCBhcyBhcHByb3ByaWF0ZS4KIAotICAgSWYgKmRpciogaXMgc3BlY2lmaWVkLCB0aGUgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhhdCBkaXJlY3Rvcnk7CisgICBJZiAqZGlyKiBpcyBub3QgYGBOb25lYGAsIHRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpbiB0aGF0IGRpcmVjdG9yeTsKICAgIG90aGVyd2lzZSwgYSBkZWZhdWx0IGRpcmVjdG9yeSBpcyB1c2VkLiAgVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGlzIGNob3NlbgogICAgZnJvbSBhIHBsYXRmb3JtLWRlcGVuZGVudCBsaXN0LCBidXQgdGhlIHVzZXIgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbgogICAgY29udHJvbCB0aGUgZGlyZWN0b3J5IGxvY2F0aW9uIGJ5IHNldHRpbmcgdGhlICpUTVBESVIqLCAqVEVNUCogb3IgKlRNUCoKQEAgLTE0MSw2ICsxNTUsMTIgQEAKICAgIGZpbGVuYW1lIHdpbGwgaGF2ZSBhbnkgbmljZSBwcm9wZXJ0aWVzLCBzdWNoIGFzIG5vdCByZXF1aXJpbmcgcXVvdGluZwogICAgd2hlbiBwYXNzZWQgdG8gZXh0ZXJuYWwgY29tbWFuZHMgdmlhIGBgb3MucG9wZW4oKWBgLgogCisgICBJZiBhbnkgb2YgKnN1ZmZpeCosICpwcmVmaXgqLCBhbmQgKmRpciogYXJlIG5vdAorICAgYGBOb25lYGAsIHRoZXkgbXVzdCBiZSB0aGUgc2FtZSB0eXBlLgorICAgSWYgdGhleSBhcmUgYnl0ZXMsIHRoZSByZXR1cm5lZCBuYW1lIHdpbGwgYmUgYnl0ZXMgaW5zdGVhZCBvZiBzdHIuCisgICBJZiB5b3Ugd2FudCB0byBmb3JjZSBhIGJ5dGVzIHJldHVybiB2YWx1ZSB3aXRoIG90aGVyd2lzZSBkZWZhdWx0IGJlaGF2aW9yLAorICAgcGFzcyBgYHN1ZmZpeD1iJydgYC4KKwogICAgSWYgKnRleHQqIGlzIHNwZWNpZmllZCwgaXQgaW5kaWNhdGVzIHdoZXRoZXIgdG8gb3BlbiB0aGUgZmlsZSBpbiBiaW5hcnkKICAgIG1vZGUgKHRoZSBkZWZhdWx0KSBvciB0ZXh0IG1vZGUuICBPbiBzb21lIHBsYXRmb3JtcywgdGhpcyBtYWtlcyBubwogICAgZGlmZmVyZW5jZS4KQEAgLTE0OSw4ICsxNjksMTQgQEAKICAgIGZpbGUgKGFzIHdvdWxkIGJlIHJldHVybmVkIGJ5IDpmdW5jOmBvcy5vcGVuYCkgYW5kIHRoZSBhYnNvbHV0ZSBwYXRobmFtZQogICAgb2YgdGhhdCBmaWxlLCBpbiB0aGF0IG9yZGVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgKnN1ZmZpeCosICpwcmVmaXgqLCBhbmQgKmRpciogbWF5IG5vdyBiZSBzdXBwbGllZCBpbiBieXRlcyBpbiBvcmRlciB0bworICAgICAgb2J0YWluIGEgYnl0ZXMgcmV0dXJuIHZhbHVlLiAgUHJpb3IgdG8gdGhpcywgb25seSBzdHIgd2FzIGFsbG93ZWQuCisgICAgICAqc3VmZml4KiBhbmQgKnByZWZpeCogbm93IGFjY2VwdCBhbmQgZGVmYXVsdCB0byBgYE5vbmVgYCB0byBjYXVzZQorICAgICAgYW4gYXBwcm9wcmlhdGUgZGVmYXVsdCB2YWx1ZSB0byBiZSB1c2VkLgogCi0uLiBmdW5jdGlvbjo6IG1rZHRlbXAoc3VmZml4PScnLCBwcmVmaXg9J3RtcCcsIGRpcj1Ob25lKQorCisuLiBmdW5jdGlvbjo6IG1rZHRlbXAoc3VmZml4PU5vbmUsIHByZWZpeD1Ob25lLCBkaXI9Tm9uZSkKIAogICAgQ3JlYXRlcyBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gdGhlIG1vc3Qgc2VjdXJlIG1hbm5lciBwb3NzaWJsZS4gVGhlcmUKICAgIGFyZSBubyByYWNlIGNvbmRpdGlvbnMgaW4gdGhlIGRpcmVjdG9yeSdzIGNyZWF0aW9uLiAgVGhlIGRpcmVjdG9yeSBpcwpAQCAtMTY0LDUwICsxOTAsMjEgQEAKIAogICAgOmZ1bmM6YG1rZHRlbXBgIHJldHVybnMgdGhlIGFic29sdXRlIHBhdGhuYW1lIG9mIHRoZSBuZXcgZGlyZWN0b3J5LgogCi0KLS4uIGZ1bmN0aW9uOjogbWt0ZW1wKHN1ZmZpeD0nJywgcHJlZml4PSd0bXAnLCBkaXI9Tm9uZSkKLQotICAgLi4gZGVwcmVjYXRlZDo6IDIuMwotICAgICAgVXNlIDpmdW5jOmBta3N0ZW1wYCBpbnN0ZWFkLgotCi0gICBSZXR1cm4gYW4gYWJzb2x1dGUgcGF0aG5hbWUgb2YgYSBmaWxlIHRoYXQgZGlkIG5vdCBleGlzdCBhdCB0aGUgdGltZSB0aGUKLSAgIGNhbGwgaXMgbWFkZS4gIFRoZSAqcHJlZml4KiwgKnN1ZmZpeCosIGFuZCAqZGlyKiBhcmd1bWVudHMgYXJlIHRoZSBzYW1lCi0gICBhcyBmb3IgOmZ1bmM6YG1rc3RlbXBgLgotCi0gICAuLiB3YXJuaW5nOjoKLQotICAgICAgVXNlIG9mIHRoaXMgZnVuY3Rpb24gbWF5IGludHJvZHVjZSBhIHNlY3VyaXR5IGhvbGUgaW4geW91ciBwcm9ncmFtLiAgQnkKLSAgICAgIHRoZSB0aW1lIHlvdSBnZXQgYXJvdW5kIHRvIGRvaW5nIGFueXRoaW5nIHdpdGggdGhlIGZpbGUgbmFtZSBpdCByZXR1cm5zLAotICAgICAgc29tZW9uZSBlbHNlIG1heSBoYXZlIGJlYXRlbiB5b3UgdG8gdGhlIHB1bmNoLiAgOmZ1bmM6YG1rdGVtcGAgdXNhZ2UgY2FuCi0gICAgICBiZSByZXBsYWNlZCBlYXNpbHkgd2l0aCA6ZnVuYzpgTmFtZWRUZW1wb3JhcnlGaWxlYCwgcGFzc2luZyBpdCB0aGUKLSAgICAgIGBgZGVsZXRlPUZhbHNlYGAgcGFyYW1ldGVyOjoKLQotICAgICAgICAgPj4+IGYgPSBOYW1lZFRlbXBvcmFyeUZpbGUoZGVsZXRlPUZhbHNlKQotICAgICAgICAgPj4+IGYubmFtZQotICAgICAgICAgJy90bXAvdG1wdGp1amp0JwotICAgICAgICAgPj4+IGYud3JpdGUoYiJIZWxsbyBXb3JsZCFcbiIpCi0gICAgICAgICAxMwotICAgICAgICAgPj4+IGYuY2xvc2UoKQotICAgICAgICAgPj4+IG9zLnVubGluayhmLm5hbWUpCi0gICAgICAgICA+Pj4gb3MucGF0aC5leGlzdHMoZi5uYW1lKQotICAgICAgICAgRmFsc2UKLQotVGhlIG1vZHVsZSB1c2VzIGEgZ2xvYmFsIHZhcmlhYmxlIHRoYXQgdGVsbCBpdCBob3cgdG8gY29uc3RydWN0IGEKLXRlbXBvcmFyeSBuYW1lLiAgVGhleSBhcmUgaW5pdGlhbGl6ZWQgYXQgdGhlIGZpcnN0IGNhbGwgdG8gYW55IG9mIHRoZQotZnVuY3Rpb25zIGFib3ZlLiAgVGhlIGNhbGxlciBtYXkgY2hhbmdlIHRoZW0sIGJ1dCB0aGlzIGlzIGRpc2NvdXJhZ2VkOyB1c2UKLXRoZSBhcHByb3ByaWF0ZSBmdW5jdGlvbiBhcmd1bWVudHMsIGluc3RlYWQuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgKnN1ZmZpeCosICpwcmVmaXgqLCBhbmQgKmRpciogbWF5IG5vdyBiZSBzdXBwbGllZCBpbiBieXRlcyBpbiBvcmRlciB0bworICAgICAgb2J0YWluIGEgYnl0ZXMgcmV0dXJuIHZhbHVlLiAgUHJpb3IgdG8gdGhpcywgb25seSBzdHIgd2FzIGFsbG93ZWQuCisgICAgICAqc3VmZml4KiBhbmQgKnByZWZpeCogbm93IGFjY2VwdCBhbmQgZGVmYXVsdCB0byBgYE5vbmVgYCB0byBjYXVzZQorICAgICAgYW4gYXBwcm9wcmlhdGUgZGVmYXVsdCB2YWx1ZSB0byBiZSB1c2VkLgogCiAKLS4uIGRhdGE6OiB0ZW1wZGlyCisuLiBmdW5jdGlvbjo6IGdldHRlbXBkaXIoKQogCi0gICBXaGVuIHNldCB0byBhIHZhbHVlIG90aGVyIHRoYW4gYGBOb25lYGAsIHRoaXMgdmFyaWFibGUgZGVmaW5lcyB0aGUKLSAgIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSAqZGlyKiBhcmd1bWVudCB0byBhbGwgdGhlIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoaXMKLSAgIG1vZHVsZS4KKyAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHVzZWQgZm9yIHRlbXBvcmFyeSBmaWxlcy4gVGhpcworICAgZGVmaW5lcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlICpkaXIqIGFyZ3VtZW50IHRvIGFsbCBmdW5jdGlvbnMKKyAgIGluIHRoaXMgbW9kdWxlLgogCi0gICBJZiBgYHRlbXBkaXJgYCBpcyB1bnNldCBvciBgYE5vbmVgYCBhdCBhbnkgY2FsbCB0byBhbnkgb2YgdGhlIGFib3ZlCi0gICBmdW5jdGlvbnMsIFB5dGhvbiBzZWFyY2hlcyBhIHN0YW5kYXJkIGxpc3Qgb2YgZGlyZWN0b3JpZXMgYW5kIHNldHMKLSAgICp0ZW1wZGlyKiB0byB0aGUgZmlyc3Qgb25lIHdoaWNoIHRoZSBjYWxsaW5nIHVzZXIgY2FuIGNyZWF0ZSBmaWxlcyBpbi4KLSAgIFRoZSBsaXN0IGlzOgorICAgUHl0aG9uIHNlYXJjaGVzIGEgc3RhbmRhcmQgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBmaW5kIG9uZSB3aGljaAorICAgdGhlIGNhbGxpbmcgdXNlciBjYW4gY3JlYXRlIGZpbGVzIGluLiAgVGhlIGxpc3QgaXM6CiAKICAgICMuIFRoZSBkaXJlY3RvcnkgbmFtZWQgYnkgdGhlIDplbnZ2YXI6YFRNUERJUmAgZW52aXJvbm1lbnQgdmFyaWFibGUuCiAKQEAgLTIyNSwxOSArMjIyLDQzIEBACiAKICAgICMuIEFzIGEgbGFzdCByZXNvcnQsIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgogCisgICBUaGUgcmVzdWx0IG9mIHRoaXMgc2VhcmNoIGlzIGNhY2hlZCwgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZgorICAgOmRhdGE6YHRlbXBkaXJgIGJlbG93LgogCi0uLiBmdW5jdGlvbjo6IGdldHRlbXBkaXIoKQorLi4gZnVuY3Rpb246OiBnZXR0ZW1wZGlyYigpCiAKLSAgIFJldHVybiB0aGUgZGlyZWN0b3J5IGN1cnJlbnRseSBzZWxlY3RlZCB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbGVzIGluLiBJZgotICAgOmRhdGE6YHRlbXBkaXJgIGlzIG5vdCBgYE5vbmVgYCwgdGhpcyBzaW1wbHkgcmV0dXJucyBpdHMgY29udGVudHM7IG90aGVyd2lzZSwKLSAgIHRoZSBzZWFyY2ggZGVzY3JpYmVkIGFib3ZlIGlzIHBlcmZvcm1lZCwgYW5kIHRoZSByZXN1bHQgcmV0dXJuZWQuCisgICBTYW1lIGFzIDpmdW5jOmBnZXR0ZW1wZGlyYCBidXQgdGhlIHJldHVybiB2YWx1ZSBpcyBpbiBieXRlcy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKIC4uIGZ1bmN0aW9uOjogZ2V0dGVtcHByZWZpeCgpCiAKICAgIFJldHVybiB0aGUgZmlsZW5hbWUgcHJlZml4IHVzZWQgdG8gY3JlYXRlIHRlbXBvcmFyeSBmaWxlcy4gIFRoaXMgZG9lcyBub3QKICAgIGNvbnRhaW4gdGhlIGRpcmVjdG9yeSBjb21wb25lbnQuCiAKKy4uIGZ1bmN0aW9uOjogZ2V0dGVtcHByZWZpeGIoKQorCisgICBTYW1lIGFzIDpmdW5jOmBnZXR0ZW1wcHJlZml4YCBidXQgdGhlIHJldHVybiB2YWx1ZSBpcyBpbiBieXRlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKK1RoZSBtb2R1bGUgdXNlcyBhIGdsb2JhbCB2YXJpYWJsZSB0byBzdG9yZSB0aGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5Cit1c2VkIGZvciB0ZW1wb3JhcnkgZmlsZXMgcmV0dXJuZWQgYnkgOmZ1bmM6YGdldHRlbXBkaXJgLiAgSXQgY2FuIGJlCitzZXQgZGlyZWN0bHkgdG8gb3ZlcnJpZGUgdGhlIHNlbGVjdGlvbiBwcm9jZXNzLCBidXQgdGhpcyBpcyBkaXNjb3VyYWdlZC4KK0FsbCBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUgdGFrZSBhICpkaXIqIGFyZ3VtZW50IHdoaWNoIGNhbiBiZSB1c2VkCit0byBzcGVjaWZ5IHRoZSBkaXJlY3RvcnkgYW5kIHRoaXMgaXMgdGhlIHJlY29tbWVuZCBhcHByb2FjaC4KKworLi4gZGF0YTo6IHRlbXBkaXIKKworICAgV2hlbiBzZXQgdG8gYSB2YWx1ZSBvdGhlciB0aGFuIGBgTm9uZWBgLCB0aGlzIHZhcmlhYmxlIGRlZmluZXMgdGhlCisgICBkZWZhdWx0IHZhbHVlIGZvciB0aGUgKmRpciogYXJndW1lbnQgdG8gYWxsIHRoZSBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGlzCisgICBtb2R1bGUuCisKKyAgIElmIGBgdGVtcGRpcmBgIGlzIHVuc2V0IG9yIGBgTm9uZWBgIGF0IGFueSBjYWxsIHRvIGFueSBvZiB0aGUgYWJvdmUKKyAgIGZ1bmN0aW9ucyBleGNlcHQgOmZ1bmM6YGdldHRlbXBwcmVmaXhgIGl0IGlzIGluaXRhbGl6ZWQgZm9sbG93aW5nIHRoZQorICAgYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiA6ZnVuYzpgZ2V0dGVtcGRpcmAuCisKKy4uIF90ZW1wZmlsZS1leGFtcGxlczoKIAogRXhhbXBsZXMKIC0tLS0tLS0tCkBAIC0yNzEsMyArMjkyLDQzIEBACiAgICAgPj4+CiAgICAgIyBkaXJlY3RvcnkgYW5kIGNvbnRlbnRzIGhhdmUgYmVlbiByZW1vdmVkCiAKKworRGVwcmVjYXRlZCBmdW5jdGlvbnMgYW5kIHZhcmlhYmxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIGhpc3RvcmljYWwgd2F5IHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZXMgd2FzIHRvIGZpcnN0IGdlbmVyYXRlIGEKK2ZpbGUgbmFtZSB3aXRoIHRoZSA6ZnVuYzpgbWt0ZW1wYCBmdW5jdGlvbiBhbmQgdGhlbiBjcmVhdGUgYSBmaWxlCit1c2luZyB0aGlzIG5hbWUuIFVuZm9ydHVuYXRlbHkgdGhpcyBpcyBub3Qgc2VjdXJlLCBiZWNhdXNlIGEgZGlmZmVyZW50Citwcm9jZXNzIG1heSBjcmVhdGUgYSBmaWxlIHdpdGggdGhpcyBuYW1lIGluIHRoZSB0aW1lIGJldHdlZW4gdGhlIGNhbGwKK3RvIDpmdW5jOmBta3RlbXBgIGFuZCB0aGUgc3Vic2VxdWVudCBhdHRlbXB0IHRvIGNyZWF0ZSB0aGUgZmlsZSBieSB0aGUKK2ZpcnN0IHByb2Nlc3MuIFRoZSBzb2x1dGlvbiBpcyB0byBjb21iaW5lIHRoZSB0d28gc3RlcHMgYW5kIGNyZWF0ZSB0aGUKK2ZpbGUgaW1tZWRpYXRlbHkuIFRoaXMgYXBwcm9hY2ggaXMgdXNlZCBieSA6ZnVuYzpgbWtzdGVtcGAgYW5kIHRoZQorb3RoZXIgZnVuY3Rpb25zIGRlc2NyaWJlZCBhYm92ZS4KKworLi4gZnVuY3Rpb246OiBta3RlbXAoc3VmZml4PScnLCBwcmVmaXg9J3RtcCcsIGRpcj1Ob25lKQorCisgICAuLiBkZXByZWNhdGVkOjogMi4zCisgICAgICBVc2UgOmZ1bmM6YG1rc3RlbXBgIGluc3RlYWQuCisKKyAgIFJldHVybiBhbiBhYnNvbHV0ZSBwYXRobmFtZSBvZiBhIGZpbGUgdGhhdCBkaWQgbm90IGV4aXN0IGF0IHRoZSB0aW1lIHRoZQorICAgY2FsbCBpcyBtYWRlLiAgVGhlICpwcmVmaXgqLCAqc3VmZml4KiwgYW5kICpkaXIqIGFyZ3VtZW50cyBhcmUgc2ltaWxhcgorICAgdG8gdGhvc2Ugb2YgOmZ1bmM6YG1rc3RlbXBgLCBleGNlcHQgdGhhdCBieXRlcyBmaWxlIG5hbWVzLCBgYHN1ZmZpeD1Ob25lYGAKKyAgIGFuZCBgYHByZWZpeD1Ob25lYGAgYXJlIG5vdCBzdXBwb3J0ZWQuCisKKyAgIC4uIHdhcm5pbmc6OgorCisgICAgICBVc2Ugb2YgdGhpcyBmdW5jdGlvbiBtYXkgaW50cm9kdWNlIGEgc2VjdXJpdHkgaG9sZSBpbiB5b3VyIHByb2dyYW0uICBCeQorICAgICAgdGhlIHRpbWUgeW91IGdldCBhcm91bmQgdG8gZG9pbmcgYW55dGhpbmcgd2l0aCB0aGUgZmlsZSBuYW1lIGl0IHJldHVybnMsCisgICAgICBzb21lb25lIGVsc2UgbWF5IGhhdmUgYmVhdGVuIHlvdSB0byB0aGUgcHVuY2guICA6ZnVuYzpgbWt0ZW1wYCB1c2FnZSBjYW4KKyAgICAgIGJlIHJlcGxhY2VkIGVhc2lseSB3aXRoIDpmdW5jOmBOYW1lZFRlbXBvcmFyeUZpbGVgLCBwYXNzaW5nIGl0IHRoZQorICAgICAgYGBkZWxldGU9RmFsc2VgYCBwYXJhbWV0ZXI6OgorCisgICAgICAgICA+Pj4gZiA9IE5hbWVkVGVtcG9yYXJ5RmlsZShkZWxldGU9RmFsc2UpCisgICAgICAgICA+Pj4gZi5uYW1lCisgICAgICAgICAnL3RtcC90bXB0anVqanQnCisgICAgICAgICA+Pj4gZi53cml0ZShiIkhlbGxvIFdvcmxkIVxuIikKKyAgICAgICAgIDEzCisgICAgICAgICA+Pj4gZi5jbG9zZSgpCisgICAgICAgICA+Pj4gb3MudW5saW5rKGYubmFtZSkKKyAgICAgICAgID4+PiBvcy5wYXRoLmV4aXN0cyhmLm5hbWUpCisgICAgICAgICBGYWxzZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGVzdC5yc3QgYi9Eb2MvbGlicmFyeS90ZXN0LnJzdAppbmRleCAyZmRhZjhjLi44NWNhYjNiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90ZXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS90ZXN0LnJzdApAQCAtNTY4LDYgKzU2OCwxNyBAQAogICAgICAgZGVmIGxvYWRfdGVzdHMoKmFyZ3MpOgogICAgICAgICAgIHJldHVybiBsb2FkX3BhY2thZ2VfdGVzdHMob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgKmFyZ3MpCiAKKy4uIGZ1bmN0aW9uOjogZGV0ZWN0X2FwaV9taXNtYXRjaChyZWZfYXBpLCBvdGhlcl9hcGksICosIGlnbm9yZT0oKSk6CisKKyAgIFJldHVybnMgdGhlIHNldCBvZiBhdHRyaWJ1dGVzLCBmdW5jdGlvbnMgb3IgbWV0aG9kcyBvZiAqcmVmX2FwaSogbm90CisgICBmb3VuZCBvbiAqb3RoZXJfYXBpKiwgZXhjZXB0IGZvciBhIGRlZmluZWQgbGlzdCBvZiBpdGVtcyB0byBiZQorICAgaWdub3JlZCBpbiB0aGlzIGNoZWNrIHNwZWNpZmllZCBpbiAqaWdub3JlKi4KKworICAgQnkgZGVmYXVsdCB0aGlzIHNraXBzIHByaXZhdGUgYXR0cmlidXRlcyBiZWdpbm5pbmcgd2l0aCAnXycgYnV0CisgICBpbmNsdWRlcyBhbGwgbWFnaWMgbWV0aG9kcywgaS5lLiB0aG9zZSBzdGFydGluZyBhbmQgZW5kaW5nIGluICdfXycuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAKIFRoZSA6bW9kOmB0ZXN0LnN1cHBvcnRgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgY2xhc3NlczoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGltZS5yc3QgYi9Eb2MvbGlicmFyeS90aW1lLnJzdAppbmRleCAwYTNkOTc3Li44YjUzYmJiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90aW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS90aW1lLnJzdApAQCAtMzE0LDkgKzMxNCw5IEBACiAgICBwcm9jZXNzZXMgcnVubmluZyBmb3IgbW9yZSB0aGFuIDQ5IGRheXMuIE9uIG1vcmUgcmVjZW50IHZlcnNpb25zIG9mIFdpbmRvd3MKICAgIGFuZCBvbiBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcywgOmZ1bmM6YG1vbm90b25pY2AgaXMgc3lzdGVtLXdpZGUuCiAKLSAgIEF2YWlsYWJpbGl0eTogV2luZG93cywgTWFjIE9TIFgsIExpbnV4LCBGcmVlQlNELCBPcGVuQlNELCBTb2xhcmlzLgotCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZnVuY3Rpb24gaXMgbm93IGFsd2F5cyBhdmFpbGFibGUuCiAKIAogLi4gZnVuY3Rpb246OiBwZXJmX2NvdW50ZXIoKQpAQCAtMzUwLDYgKzM1MCwxMSBAQAogICAgcmVxdWVzdGVkIGJ5IGFuIGFyYml0cmFyeSBhbW91bnQgYmVjYXVzZSBvZiB0aGUgc2NoZWR1bGluZyBvZiBvdGhlciBhY3Rpdml0eQogICAgaW4gdGhlIHN5c3RlbS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBmdW5jdGlvbiBub3cgc2xlZXBzIGF0IGxlYXN0ICpzZWNzKiBldmVuIGlmIHRoZSBzbGVlcCBpcyBpbnRlcnJ1cHRlZAorICAgICAgYnkgYSBzaWduYWwsIGV4Y2VwdCBpZiB0aGUgc2lnbmFsIGhhbmRsZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiAoc2VlCisgICAgICA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBmdW5jdGlvbjo6IHN0cmZ0aW1lKGZvcm1hdFssIHRdKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90aW1laXQucnN0IGIvRG9jL2xpYnJhcnkvdGltZWl0LnJzdAppbmRleCA3MGRmNDA5Li5kMTA1MWY2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90aW1laXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QKQEAgLTU5LDE4ICs1OSwyNiBAQAogVGhlIG1vZHVsZSBkZWZpbmVzIHRocmVlIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBhbmQgYSBwdWJsaWMgY2xhc3M6CiAKIAotLi4gZnVuY3Rpb246OiB0aW1laXQoc3RtdD0ncGFzcycsIHNldHVwPSdwYXNzJywgdGltZXI9PGRlZmF1bHQgdGltZXI+LCBudW1iZXI9MTAwMDAwMCkKKy4uIGZ1bmN0aW9uOjogdGltZWl0KHN0bXQ9J3Bhc3MnLCBzZXR1cD0ncGFzcycsIHRpbWVyPTxkZWZhdWx0IHRpbWVyPiwgbnVtYmVyPTEwMDAwMDAsIGdsb2JhbHM9Tm9uZSkKIAogICAgQ3JlYXRlIGEgOmNsYXNzOmBUaW1lcmAgaW5zdGFuY2Ugd2l0aCB0aGUgZ2l2ZW4gc3RhdGVtZW50LCAqc2V0dXAqIGNvZGUgYW5kCiAgICAqdGltZXIqIGZ1bmN0aW9uIGFuZCBydW4gaXRzIDptZXRoOmAudGltZWl0YCBtZXRob2Qgd2l0aCAqbnVtYmVyKiBleGVjdXRpb25zLgorICAgVGhlIG9wdGlvbmFsICpnbG9iYWxzKiBhcmd1bWVudCBzcGVjaWZpZXMgYSBuYW1lc3BhY2UgaW4gd2hpY2ggdG8gZXhlY3V0ZSB0aGUKKyAgIGNvZGUuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgb3B0aW9uYWwgKmdsb2JhbHMqIHBhcmFtZXRlciB3YXMgYWRkZWQuCiAKIAotLi4gZnVuY3Rpb246OiByZXBlYXQoc3RtdD0ncGFzcycsIHNldHVwPSdwYXNzJywgdGltZXI9PGRlZmF1bHQgdGltZXI+LCByZXBlYXQ9MywgbnVtYmVyPTEwMDAwMDApCisuLiBmdW5jdGlvbjo6IHJlcGVhdChzdG10PSdwYXNzJywgc2V0dXA9J3Bhc3MnLCB0aW1lcj08ZGVmYXVsdCB0aW1lcj4sIHJlcGVhdD0zLCBudW1iZXI9MTAwMDAwMCwgZ2xvYmFscz1Ob25lKQogCiAgICBDcmVhdGUgYSA6Y2xhc3M6YFRpbWVyYCBpbnN0YW5jZSB3aXRoIHRoZSBnaXZlbiBzdGF0ZW1lbnQsICpzZXR1cCogY29kZSBhbmQKICAgICp0aW1lciogZnVuY3Rpb24gYW5kIHJ1biBpdHMgOm1ldGg6YC5yZXBlYXRgIG1ldGhvZCB3aXRoIHRoZSBnaXZlbiAqcmVwZWF0KgotICAgY291bnQgYW5kICpudW1iZXIqIGV4ZWN1dGlvbnMuCisgICBjb3VudCBhbmQgKm51bWJlciogZXhlY3V0aW9ucy4gIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogYXJndW1lbnQgc3BlY2lmaWVzIGEKKyAgIG5hbWVzcGFjZSBpbiB3aGljaCB0byBleGVjdXRlIHRoZSBjb2RlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIG9wdGlvbmFsICpnbG9iYWxzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCiAuLiBmdW5jdGlvbjo6IGRlZmF1bHRfdGltZXIoKQogCkBAIC04MCw3ICs4OCw3IEBACiAgICAgICA6ZnVuYzpgdGltZS5wZXJmX2NvdW50ZXJgIGlzIG5vdyB0aGUgZGVmYXVsdCB0aW1lci4KIAogCi0uLiBjbGFzczo6IFRpbWVyKHN0bXQ9J3Bhc3MnLCBzZXR1cD0ncGFzcycsIHRpbWVyPTx0aW1lciBmdW5jdGlvbj4pCisuLiBjbGFzczo6IFRpbWVyKHN0bXQ9J3Bhc3MnLCBzZXR1cD0ncGFzcycsIHRpbWVyPTx0aW1lciBmdW5jdGlvbj4sIGdsb2JhbHM9Tm9uZSkKIAogICAgQ2xhc3MgZm9yIHRpbWluZyBleGVjdXRpb24gc3BlZWQgb2Ygc21hbGwgY29kZSBzbmlwcGV0cy4KIApAQCAtODgsNyArOTYsOSBAQAogICAgZm9yIHNldHVwLCBhbmQgYSB0aW1lciBmdW5jdGlvbi4gIEJvdGggc3RhdGVtZW50cyBkZWZhdWx0IHRvIGBgJ3Bhc3MnYGA7CiAgICB0aGUgdGltZXIgZnVuY3Rpb24gaXMgcGxhdGZvcm0tZGVwZW5kZW50IChzZWUgdGhlIG1vZHVsZSBkb2Mgc3RyaW5nKS4KICAgICpzdG10KiBhbmQgKnNldHVwKiBtYXkgYWxzbyBjb250YWluIG11bHRpcGxlIHN0YXRlbWVudHMgc2VwYXJhdGVkIGJ5IGBgO2BgCi0gICBvciBuZXdsaW5lcywgYXMgbG9uZyBhcyB0aGV5IGRvbid0IGNvbnRhaW4gbXVsdGktbGluZSBzdHJpbmcgbGl0ZXJhbHMuCisgICBvciBuZXdsaW5lcywgYXMgbG9uZyBhcyB0aGV5IGRvbid0IGNvbnRhaW4gbXVsdGktbGluZSBzdHJpbmcgbGl0ZXJhbHMuICBUaGUKKyAgIHN0YXRlbWVudCB3aWxsIGJ5IGRlZmF1bHQgYmUgZXhlY3V0ZWQgd2l0aGluIHRpbWVpdCdzIG5hbWVzcGFjZTsgdGhpcyBiZWhhdmlvcgorICAgY2FuIGJlIGNvbnRyb2xsZWQgYnkgcGFzc2luZyBhIG5hbWVzcGFjZSB0byAqZ2xvYmFscyouCiAKICAgIFRvIG1lYXN1cmUgdGhlIGV4ZWN1dGlvbiB0aW1lIG9mIHRoZSBmaXJzdCBzdGF0ZW1lbnQsIHVzZSB0aGUgOm1ldGg6YC50aW1laXRgCiAgICBtZXRob2QuICBUaGUgOm1ldGg6YC5yZXBlYXRgIG1ldGhvZCBpcyBhIGNvbnZlbmllbmNlIHRvIGNhbGwgOm1ldGg6YC50aW1laXRgCkBAIC0xMDEsNiArMTExLDggQEAKICAgIHdpbGwgdGhlbiBiZSBleGVjdXRlZCBieSA6bWV0aDpgLnRpbWVpdGAuICBOb3RlIHRoYXQgdGhlIHRpbWluZyBvdmVyaGVhZCBpcyBhCiAgICBsaXR0bGUgbGFyZ2VyIGluIHRoaXMgY2FzZSBiZWNhdXNlIG9mIHRoZSBleHRyYSBmdW5jdGlvbiBjYWxscy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAogICAgLi4gbWV0aG9kOjogVGltZXIudGltZWl0KG51bWJlcj0xMDAwMDAwKQogCkBAIC0xNjksNyArMTgxLDcgQEAKIAogV2hlbiBjYWxsZWQgYXMgYSBwcm9ncmFtIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgdGhlIGZvbGxvd2luZyBmb3JtIGlzIHVzZWQ6OgogCi0gICBweXRob24gLW0gdGltZWl0IFstbiBOXSBbLXIgTl0gWy1zIFNdIFstdF0gWy1jXSBbLWhdIFtzdGF0ZW1lbnQgLi4uXQorICAgcHl0aG9uIC1tIHRpbWVpdCBbLW4gTl0gWy1yIE5dIFstdSBVXSBbLXMgU10gWy10XSBbLWNdIFstaF0gW3N0YXRlbWVudCAuLi5dCiAKIFdoZXJlIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgdW5kZXJzdG9vZDoKIApAQCAtMTk4LDYgKzIxMCwxMiBAQAogCiAgICB1c2UgOmZ1bmM6YHRpbWUudGltZWAgKGRlcHJlY2F0ZWQpCiAKKy4uIGNtZG9wdGlvbjo6IC11LCAtLXVuaXQ9VQorCisgICAgc3BlY2lmeSBhIHRpbWUgdW5pdCBmb3IgdGltZXIgb3V0cHV0OyBjYW4gc2VsZWN0IHVzZWMsIG1zZWMsIG9yIHNlYworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gY21kb3B0aW9uOjogLWMsIC0tY2xvY2sKIAogICAgdXNlIDpmdW5jOmB0aW1lLmNsb2NrYCAoZGVwcmVjYXRlZCkKQEAgLTMyMCwzICszMzgsMTcgQEAKICAgIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgICAgaW1wb3J0IHRpbWVpdAogICAgICAgIHByaW50KHRpbWVpdC50aW1laXQoInRlc3QoKSIsIHNldHVwPSJmcm9tIF9fbWFpbl9fIGltcG9ydCB0ZXN0IikpCisKK0Fub3RoZXIgb3B0aW9uIGlzIHRvIHBhc3MgOmZ1bmM6YGdsb2JhbHNgIHRvIHRoZSAgKmdsb2JhbHMqIHBhcmFtZXRlciwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgY29kZQordG8gYmUgZXhlY3V0ZWQgd2l0aGluIHlvdXIgY3VycmVudCBnbG9iYWwgbmFtZXNwYWNlLiAgVGhpcyBjYW4gYmUgbW9yZSBjb252ZW5pZW50Cit0aGFuIGluZGl2aWR1YWxseSBzcGVjaWZ5aW5nIGltcG9ydHM6OgorCisgICBkZWYgZih4KToKKyAgICAgICByZXR1cm4geCoqMgorICAgZGVmIGcoeCk6CisgICAgICAgcmV0dXJuIHgqKjQKKyAgIGRlZiBoKHgpOgorICAgICAgIHJldHVybiB4Kio4CisKKyAgIGltcG9ydCB0aW1laXQKKyAgIHByaW50KHRpbWVpdC50aW1laXQoJ1tmdW5jKDQyKSBmb3IgZnVuYyBpbiAoZixnLGgpXScsIGdsb2JhbHM9Z2xvYmFscygpKSkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3Rva2VuLnJzdCBiL0RvYy9saWJyYXJ5L3Rva2VuLnJzdAppbmRleCA0Y2Q3MDk4Li5jNmJmYTM1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90b2tlbi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdG9rZW4ucnN0CkBAIC05MywxMyArOTMsMjAgQEAKICAgICAgICAgICBET1VCTEVTTEFTSAogICAgICAgICAgIERPVUJMRVNMQVNIRVFVQUwKICAgICAgICAgICBBVAorICAgICAgICAgIEFURVFVQUwKICAgICAgICAgICBSQVJST1cKICAgICAgICAgICBFTExJUFNJUwogICAgICAgICAgIE9QCisgICAgICAgICAgQVdBSVQKKyAgICAgICAgICBBU1lOQwogICAgICAgICAgIEVSUk9SVE9LRU4KICAgICAgICAgICBOX1RPS0VOUwogICAgICAgICAgIE5UX09GRlNFVAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgOmRhdGE6YEFXQUlUYCBhbmQgOmRhdGE6YEFTWU5DYCB0b2tlbnMuIFN0YXJ0aW5nIHdpdGgKKyAgICAgIFB5dGhvbiAzLjcsICJhc3luYyIgYW5kICJhd2FpdCIgd2lsbCBiZSB0b2tlbml6ZWQgYXMgOmRhdGE6YE5BTUVgCisgICAgICB0b2tlbnMsIGFuZCA6ZGF0YTpgQVdBSVRgIGFuZCA6ZGF0YTpgQVNZTkNgIHdpbGwgYmUgcmVtb3ZlZC4KIAogLi4gc2VlYWxzbzo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QgYi9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0CmluZGV4IDE1ZmJlZGMuLjhkMjE2ZDAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHJhY2ViYWNrLnJzdApAQCAtMjIsMTUgKzIyLDIwIEBACiAKIC4uIGZ1bmN0aW9uOjogcHJpbnRfdGIodHJhY2ViYWNrLCBsaW1pdD1Ob25lLCBmaWxlPU5vbmUpCiAKLSAgIFByaW50IHVwIHRvICpsaW1pdCogc3RhY2sgdHJhY2UgZW50cmllcyBmcm9tICp0cmFjZWJhY2sqLiAgSWYgKmxpbWl0KiBpcyBvbWl0dGVkCi0gICBvciBgYE5vbmVgYCwgYWxsIGVudHJpZXMgYXJlIHByaW50ZWQuIElmICpmaWxlKiBpcyBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUKLSAgIG91dHB1dCBnb2VzIHRvIGBgc3lzLnN0ZGVycmBgOyBvdGhlcndpc2UgaXQgc2hvdWxkIGJlIGFuIG9wZW4gZmlsZSBvciBmaWxlLWxpa2UKLSAgIG9iamVjdCB0byByZWNlaXZlIHRoZSBvdXRwdXQuCisgICBQcmludCB1cCB0byAqbGltaXQqIHN0YWNrIHRyYWNlIGVudHJpZXMgZnJvbSAqdHJhY2ViYWNrKiAoc3RhcnRpbmcgZnJvbQorICAgdGhlIGNhbGxlcidzIGZyYW1lKSBpZiAqbGltaXQqIGlzIHBvc2l0aXZlLiAgT3RoZXJ3aXNlLCBwcmludCB0aGUgbGFzdAorICAgYGBhYnMobGltaXQpYGAgZW50cmllcy4gIElmICpsaW1pdCogaXMgb21pdHRlZCBvciBgYE5vbmVgYCwgYWxsIGVudHJpZXMKKyAgIGFyZSBwcmludGVkLiAgSWYgKmZpbGUqIGlzIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZSBvdXRwdXQgZ29lcyB0bworICAgYGBzeXMuc3RkZXJyYGA7IG90aGVyd2lzZSBpdCBzaG91bGQgYmUgYW4gb3BlbiBmaWxlIG9yIGZpbGUtbGlrZSBvYmplY3QKKyAgIHRvIHJlY2VpdmUgdGhlIG91dHB1dC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICBBZGRlZCBuZWdhdGl2ZSAqbGltaXQqIHN1cHBvcnQuCiAKIAogLi4gZnVuY3Rpb246OiBwcmludF9leGNlcHRpb24odHlwZSwgdmFsdWUsIHRyYWNlYmFjaywgbGltaXQ9Tm9uZSwgZmlsZT1Ob25lLCBjaGFpbj1UcnVlKQogCi0gICBQcmludCBleGNlcHRpb24gaW5mb3JtYXRpb24gYW5kIHVwIHRvICpsaW1pdCogc3RhY2sgdHJhY2UgZW50cmllcyBmcm9tCisgICBQcmludCBleGNlcHRpb24gaW5mb3JtYXRpb24gYW5kIHN0YWNrIHRyYWNlIGVudHJpZXMgZnJvbQogICAgKnRyYWNlYmFjayogdG8gKmZpbGUqLiBUaGlzIGRpZmZlcnMgZnJvbSA6ZnVuYzpgcHJpbnRfdGJgIGluIHRoZSBmb2xsb3dpbmcKICAgIHdheXM6CiAKQEAgLTQxLDYgKzQ2LDcgQEAKICAgICAgcHJpbnRzIHRoZSBsaW5lIHdoZXJlIHRoZSBzeW50YXggZXJyb3Igb2NjdXJyZWQgd2l0aCBhIGNhcmV0IGluZGljYXRpbmcgdGhlCiAgICAgIGFwcHJveGltYXRlIHBvc2l0aW9uIG9mIHRoZSBlcnJvci4KIAorICAgVGhlIG9wdGlvbmFsICpsaW1pdCogYXJndW1lbnQgaGFzIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yIDpmdW5jOmBwcmludF90YmAuCiAgICBJZiAqY2hhaW4qIGlzIHRydWUgKHRoZSBkZWZhdWx0KSwgdGhlbiBjaGFpbmVkIGV4Y2VwdGlvbnMgKHRoZQogICAgOmF0dHI6YF9fY2F1c2VfX2Agb3IgOmF0dHI6YF9fY29udGV4dF9fYCBhdHRyaWJ1dGVzIG9mIHRoZSBleGNlcHRpb24pIHdpbGwgYmUKICAgIHByaW50ZWQgYXMgd2VsbCwgbGlrZSB0aGUgaW50ZXJwcmV0ZXIgaXRzZWxmIGRvZXMgd2hlbiBwcmludGluZyBhbiB1bmhhbmRsZWQKQEAgLTQ5LDMzICs1NSw0MSBAQAogCiAuLiBmdW5jdGlvbjo6IHByaW50X2V4YyhsaW1pdD1Ob25lLCBmaWxlPU5vbmUsIGNoYWluPVRydWUpCiAKLSAgIFRoaXMgaXMgYSBzaG9ydGhhbmQgZm9yIGBgcHJpbnRfZXhjZXB0aW9uKCpzeXMuZXhjX2luZm8oKSlgYC4KKyAgIFRoaXMgaXMgYSBzaG9ydGhhbmQgZm9yIGBgcHJpbnRfZXhjZXB0aW9uKCpzeXMuZXhjX2luZm8oKSwgbGltaXQsIGZpbGUsCisgICBjaGFpbilgYC4KIAogCiAuLiBmdW5jdGlvbjo6IHByaW50X2xhc3QobGltaXQ9Tm9uZSwgZmlsZT1Ob25lLCBjaGFpbj1UcnVlKQogCiAgICBUaGlzIGlzIGEgc2hvcnRoYW5kIGZvciBgYHByaW50X2V4Y2VwdGlvbihzeXMubGFzdF90eXBlLCBzeXMubGFzdF92YWx1ZSwKLSAgIHN5cy5sYXN0X3RyYWNlYmFjaywgbGltaXQsIGZpbGUpYGAuICBJbiBnZW5lcmFsIGl0IHdpbGwgd29yayBvbmx5IGFmdGVyCi0gICBhbiBleGNlcHRpb24gaGFzIHJlYWNoZWQgYW4gaW50ZXJhY3RpdmUgcHJvbXB0IChzZWUgOmRhdGE6YHN5cy5sYXN0X3R5cGVgKS4KKyAgIHN5cy5sYXN0X3RyYWNlYmFjaywgbGltaXQsIGZpbGUsIGNoYWluKWBgLiAgSW4gZ2VuZXJhbCBpdCB3aWxsIHdvcmsgb25seQorICAgYWZ0ZXIgYW4gZXhjZXB0aW9uIGhhcyByZWFjaGVkIGFuIGludGVyYWN0aXZlIHByb21wdCAoc2VlCisgICA6ZGF0YTpgc3lzLmxhc3RfdHlwZWApLgogCiAKIC4uIGZ1bmN0aW9uOjogcHJpbnRfc3RhY2soZj1Ob25lLCBsaW1pdD1Ob25lLCBmaWxlPU5vbmUpCiAKLSAgIFRoaXMgZnVuY3Rpb24gcHJpbnRzIGEgc3RhY2sgdHJhY2UgZnJvbSBpdHMgaW52b2NhdGlvbiBwb2ludC4gIFRoZSBvcHRpb25hbCAqZioKLSAgIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYW4gYWx0ZXJuYXRlIHN0YWNrIGZyYW1lIHRvIHN0YXJ0LiAgVGhlIG9wdGlvbmFsCi0gICAqbGltaXQqIGFuZCAqZmlsZSogYXJndW1lbnRzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IKLSAgIDpmdW5jOmBwcmludF9leGNlcHRpb25gLgorICAgUHJpbnQgdXAgdG8gKmxpbWl0KiBzdGFjayB0cmFjZSBlbnRyaWVzIChzdGFydGluZyBmcm9tIHRoZSBpbnZvY2F0aW9uCisgICBwb2ludCkgaWYgKmxpbWl0KiBpcyBwb3NpdGl2ZS4gIE90aGVyd2lzZSwgcHJpbnQgdGhlIGxhc3QgYGBhYnMobGltaXQpYGAKKyAgIGVudHJpZXMuICBJZiAqbGltaXQqIGlzIG9taXR0ZWQgb3IgYGBOb25lYGAsIGFsbCBlbnRyaWVzIGFyZSBwcmludGVkLgorICAgVGhlIG9wdGlvbmFsICpmKiBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGFuIGFsdGVybmF0ZSBzdGFjayBmcmFtZQorICAgdG8gc3RhcnQuICBUaGUgb3B0aW9uYWwgKmZpbGUqIGFyZ3VtZW50IGhhcyB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvcgorICAgOmZ1bmM6YHByaW50X3RiYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICAgICBBZGRlZCBuZWdhdGl2ZSAqbGltaXQqIHN1cHBvcnQuCiAKIAogLi4gZnVuY3Rpb246OiBleHRyYWN0X3RiKHRyYWNlYmFjaywgbGltaXQ9Tm9uZSkKIAotICAgUmV0dXJuIGEgbGlzdCBvZiB1cCB0byAqbGltaXQqICJwcmUtcHJvY2Vzc2VkIiBzdGFjayB0cmFjZSBlbnRyaWVzIGV4dHJhY3RlZAotICAgZnJvbSB0aGUgdHJhY2ViYWNrIG9iamVjdCAqdHJhY2ViYWNrKi4gIEl0IGlzIHVzZWZ1bCBmb3IgYWx0ZXJuYXRlIGZvcm1hdHRpbmcgb2YKLSAgIHN0YWNrIHRyYWNlcy4gIElmICpsaW1pdCogaXMgb21pdHRlZCBvciBgYE5vbmVgYCwgYWxsIGVudHJpZXMgYXJlIGV4dHJhY3RlZC4gIEEKLSAgICJwcmUtcHJvY2Vzc2VkIiBzdGFjayB0cmFjZSBlbnRyeSBpcyBhIDQtdHVwbGUgKCpmaWxlbmFtZSosICpsaW5lIG51bWJlciosCi0gICAqZnVuY3Rpb24gbmFtZSosICp0ZXh0KikgcmVwcmVzZW50aW5nIHRoZSBpbmZvcm1hdGlvbiB0aGF0IGlzIHVzdWFsbHkgcHJpbnRlZAotICAgZm9yIGEgc3RhY2sgdHJhY2UuICBUaGUgKnRleHQqIGlzIGEgc3RyaW5nIHdpdGggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZQotICAgc3RyaXBwZWQ7IGlmIHRoZSBzb3VyY2UgaXMgbm90IGF2YWlsYWJsZSBpdCBpcyBgYE5vbmVgYC4KKyAgIFJldHVybiBhIGxpc3Qgb2YgInByZS1wcm9jZXNzZWQiIHN0YWNrIHRyYWNlIGVudHJpZXMgZXh0cmFjdGVkIGZyb20gdGhlCisgICB0cmFjZWJhY2sgb2JqZWN0ICp0cmFjZWJhY2sqLiAgSXQgaXMgdXNlZnVsIGZvciBhbHRlcm5hdGUgZm9ybWF0dGluZyBvZgorICAgc3RhY2sgdHJhY2VzLiAgVGhlIG9wdGlvbmFsICpsaW1pdCogYXJndW1lbnQgaGFzIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yCisgICA6ZnVuYzpgcHJpbnRfdGJgLiAgQSAicHJlLXByb2Nlc3NlZCIgc3RhY2sgdHJhY2UgZW50cnkgaXMgYSA0LXR1cGxlCisgICAoKmZpbGVuYW1lKiwgKmxpbmUgbnVtYmVyKiwgKmZ1bmN0aW9uIG5hbWUqLCAqdGV4dCopIHJlcHJlc2VudGluZyB0aGUKKyAgIGluZm9ybWF0aW9uIHRoYXQgaXMgdXN1YWxseSBwcmludGVkIGZvciBhIHN0YWNrIHRyYWNlLiAgVGhlICp0ZXh0KiBpcyBhCisgICBzdHJpbmcgd2l0aCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIHN0cmlwcGVkOyBpZiB0aGUgc291cmNlIGlzCisgICBub3QgYXZhaWxhYmxlIGl0IGlzIGBgTm9uZWBgLgogCiAKIC4uIGZ1bmN0aW9uOjogZXh0cmFjdF9zdGFjayhmPU5vbmUsIGxpbWl0PU5vbmUpCkBAIC0xMzYsNiArMTUwLDE2MiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorLi4gZnVuY3Rpb246OiB3YWxrX3N0YWNrKGYpCisKKyAgIFdhbGsgYSBzdGFjayBmb2xsb3dpbmcgYGBmLmZfYmFja2BgIGZyb20gdGhlIGdpdmVuIGZyYW1lLCB5aWVsZGluZyB0aGUgZnJhbWUKKyAgIGFuZCBsaW5lIG51bWJlciBmb3IgZWFjaCBmcmFtZS4gSWYgKmYqIGlzIGBgTm9uZWBgLCB0aGUgY3VycmVudCBzdGFjayBpcworICAgdXNlZC4gVGhpcyBoZWxwZXIgaXMgdXNlZCB3aXRoIDptZXRoOmBTdGFja1N1bW1hcnkuZXh0cmFjdGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisuLiBmdW5jdGlvbjo6IHdhbGtfdGIodGIpCisKKyAgIFdhbGsgYSB0cmFjZWJhY2sgZm9sbG93aW5nIGBgdGJfbmV4dGBgIHlpZWxkaW5nIHRoZSBmcmFtZSBhbmQgbGluZSBudW1iZXIKKyAgIGZvciBlYWNoIGZyYW1lLiBUaGlzIGhlbHBlciBpcyB1c2VkIHdpdGggOm1ldGg6YFN0YWNrU3VtbWFyeS5leHRyYWN0YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKK1RoZSBtb2R1bGUgYWxzbyBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgY2xhc3NlczoKKworOmNsYXNzOmBUcmFjZWJhY2tFeGNlcHRpb25gIE9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorCis6Y2xhc3M6YFRyYWNlYmFja0V4Y2VwdGlvbmAgb2JqZWN0cyBhcmUgY3JlYXRlZCBmcm9tIGFjdHVhbCBleGNlcHRpb25zIHRvCitjYXB0dXJlIGRhdGEgZm9yIGxhdGVyIHByaW50aW5nIGluIGEgbGlnaHR3ZWlnaHQgZmFzaGlvbi4KKworLi4gY2xhc3M6OiBUcmFjZWJhY2tFeGNlcHRpb24oZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RyYWNlYmFjaywgKiwgbGltaXQ9Tm9uZSwgbG9va3VwX2xpbmVzPVRydWUsIGNhcHR1cmVfbG9jYWxzPUZhbHNlKQorCisgICBDYXB0dXJlIGFuIGV4Y2VwdGlvbiBmb3IgbGF0ZXIgcmVuZGVyaW5nLiAqbGltaXQqLCAqbG9va3VwX2xpbmVzKiBhbmQKKyAgICpjYXB0dXJlX2xvY2FscyogYXJlIGFzIGZvciB0aGUgOmNsYXNzOmBTdGFja1N1bW1hcnlgIGNsYXNzLgorCisgICBOb3RlIHRoYXQgd2hlbiBsb2NhbHMgYXJlIGNhcHR1cmVkLCB0aGV5IGFyZSBhbHNvIHNob3duIGluIHRoZSB0cmFjZWJhY2suCisKKyAgIC4uIGF0dHJpYnV0ZTo6IF9fY2F1c2VfXworCisgICAgICBBIDpjbGFzczpgVHJhY2ViYWNrRXhjZXB0aW9uYCBvZiB0aGUgb3JpZ2luYWwgYGBfX2NhdXNlX19gYC4KKworICAgLi4gYXR0cmlidXRlOjogX19jb250ZXh0X18KKworICAgICAgQSA6Y2xhc3M6YFRyYWNlYmFja0V4Y2VwdGlvbmAgb2YgdGhlIG9yaWdpbmFsIGBgX19jb250ZXh0X19gYC4KKworICAgLi4gYXR0cmlidXRlOjogX19zdXBwcmVzc19jb250ZXh0X18KKworICAgICAgVGhlIGBgX19zdXBwcmVzc19jb250ZXh0X19gYCB2YWx1ZSBmcm9tIHRoZSBvcmlnaW5hbCBleGNlcHRpb24uCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHN0YWNrCisKKyAgICAgIEEgOmNsYXNzOmBTdGFja1N1bW1hcnlgIHJlcHJlc2VudGluZyB0aGUgdHJhY2ViYWNrLgorCisgICAuLiBhdHRyaWJ1dGU6OiBleGNfdHlwZQorCisgICAgICBUaGUgY2xhc3Mgb2YgdGhlIG9yaWdpbmFsIHRyYWNlYmFjay4KKworICAgLi4gYXR0cmlidXRlOjogZmlsZW5hbWUKKworICAgICAgRm9yIHN5bnRheCBlcnJvcnMgLSB0aGUgZmlsZSBuYW1lIHdoZXJlIHRoZSBlcnJvciBvY2N1cnJlZC4KKworICAgLi4gYXR0cmlidXRlOjogbGluZW5vCisKKyAgICAgIEZvciBzeW50YXggZXJyb3JzIC0gdGhlIGxpbmUgbnVtYmVyIHdoZXJlIHRoZSBlcnJvciBvY2N1cnJlZC4KKworICAgLi4gYXR0cmlidXRlOjogdGV4dAorCisgICAgICBGb3Igc3ludGF4IGVycm9ycyAtIHRoZSB0ZXh0IHdoZXJlIHRoZSBlcnJvciBvY2N1cnJlZC4KKworICAgLi4gYXR0cmlidXRlOjogb2Zmc2V0CisKKyAgICAgIEZvciBzeW50YXggZXJyb3JzIC0gdGhlIG9mZnNldCBpbnRvIHRoZSB0ZXh0IHdoZXJlIHRoZSBlcnJvciBvY2N1cnJlZC4KKworICAgLi4gYXR0cmlidXRlOjogbXNnCisKKyAgICAgIEZvciBzeW50YXggZXJyb3JzIC0gdGhlIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2UuCisKKyAgIC4uIGNsYXNzbWV0aG9kOjogZnJvbV9leGNlcHRpb24oZXhjLCAqLCBsaW1pdD1Ob25lLCBsb29rdXBfbGluZXM9VHJ1ZSwgY2FwdHVyZV9sb2NhbHM9RmFsc2UpCisKKyAgICAgIENhcHR1cmUgYW4gZXhjZXB0aW9uIGZvciBsYXRlciByZW5kZXJpbmcuICpsaW1pdCosICpsb29rdXBfbGluZXMqIGFuZAorICAgICAgKmNhcHR1cmVfbG9jYWxzKiBhcmUgYXMgZm9yIHRoZSA6Y2xhc3M6YFN0YWNrU3VtbWFyeWAgY2xhc3MuCisKKyAgICAgIE5vdGUgdGhhdCB3aGVuIGxvY2FscyBhcmUgY2FwdHVyZWQsIHRoZXkgYXJlIGFsc28gc2hvd24gaW4gdGhlIHRyYWNlYmFjay4KKworICAgLi4gbWV0aG9kOjogZm9ybWF0KCosIGNoYWluPVRydWUpCisKKyAgICAgIEZvcm1hdCB0aGUgZXhjZXB0aW9uLgorCisgICAgICBJZiAqY2hhaW4qIGlzIG5vdCBgYFRydWVgYCwgYGBfX2NhdXNlX19gYCBhbmQgYGBfX2NvbnRleHRfX2BgIHdpbGwgbm90CisgICAgICBiZSBmb3JtYXR0ZWQuCisKKyAgICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBnZW5lcmF0b3Igb2Ygc3RyaW5ncywgZWFjaCBlbmRpbmcgaW4gYSBuZXdsaW5lIGFuZAorICAgICAgc29tZSBjb250YWluaW5nIGludGVybmFsIG5ld2xpbmVzLiA6ZnVuYzpgfnRyYWNlYmFjay5wcmludF9leGNlcHRpb25gCisgICAgICBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoaXMgbWV0aG9kIHdoaWNoIGp1c3QgcHJpbnRzIHRoZSBsaW5lcyB0byBhIGZpbGUuCisKKyAgICAgIFRoZSBtZXNzYWdlIGluZGljYXRpbmcgd2hpY2ggZXhjZXB0aW9uIG9jY3VycmVkIGlzIGFsd2F5cyB0aGUgbGFzdAorICAgICAgc3RyaW5nIGluIHRoZSBvdXRwdXQuCisKKyAgIC4uIG1ldGhvZDo6ICBmb3JtYXRfZXhjZXB0aW9uX29ubHkoKQorCisgICAgICBGb3JtYXQgdGhlIGV4Y2VwdGlvbiBwYXJ0IG9mIHRoZSB0cmFjZWJhY2suCisKKyAgICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBnZW5lcmF0b3Igb2Ygc3RyaW5ncywgZWFjaCBlbmRpbmcgaW4gYSBuZXdsaW5lLgorCisgICAgICBOb3JtYWxseSwgdGhlIGdlbmVyYXRvciBlbWl0cyBhIHNpbmdsZSBzdHJpbmc7IGhvd2V2ZXIsIGZvcgorICAgICAgOmV4YzpgU3ludGF4RXJyb3JgIGV4Y2VwdGlvbnMsIGl0IGVtaXRzIHNldmVyYWwgbGluZXMgdGhhdCAod2hlbgorICAgICAgcHJpbnRlZCkgZGlzcGxheSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSB0aGUgc3ludGF4CisgICAgICBlcnJvciBvY2N1cnJlZC4KKworICAgICAgVGhlIG1lc3NhZ2UgaW5kaWNhdGluZyB3aGljaCBleGNlcHRpb24gb2NjdXJyZWQgaXMgYWx3YXlzIHRoZSBsYXN0CisgICAgICBzdHJpbmcgaW4gdGhlIG91dHB1dC4KKworCis6Y2xhc3M6YFN0YWNrU3VtbWFyeWAgT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKzpjbGFzczpgU3RhY2tTdW1tYXJ5YCBvYmplY3RzIHJlcHJlc2VudCBhIGNhbGwgc3RhY2sgcmVhZHkgZm9yIGZvcm1hdHRpbmcuCisKKy4uIGNsYXNzOjogU3RhY2tTdW1tYXJ5CisKKyAgIC4uIGNsYXNzbWV0aG9kOjogZXh0cmFjdChmcmFtZV9nZW4sICosIGxpbWl0PU5vbmUsIGxvb2t1cF9saW5lcz1UcnVlLCBjYXB0dXJlX2xvY2Fscz1GYWxzZSkKKworICAgICAgQ29uc3RydWN0IGEgOmNsYXNzOmBTdGFja1N1bW1hcnlgIG9iamVjdCBmcm9tIGEgZnJhbWUgZ2VuZXJhdG9yIChzdWNoIGFzCisgICAgICBpcyByZXR1cm5lZCBieSA6ZnVuYzpgfnRyYWNlYmFjay53YWxrX3N0YWNrYCBvcgorICAgICAgOmZ1bmM6YH50cmFjZWJhY2sud2Fsa190YmApLgorCisgICAgICBJZiAqbGltaXQqIGlzIHN1cHBsaWVkLCBvbmx5IHRoaXMgbWFueSBmcmFtZXMgYXJlIHRha2VuIGZyb20gKmZyYW1lX2dlbiouCisgICAgICBJZiAqbG9va3VwX2xpbmVzKiBpcyBgYEZhbHNlYGAsIHRoZSByZXR1cm5lZCA6Y2xhc3M6YEZyYW1lU3VtbWFyeWAKKyAgICAgIG9iamVjdHMgd2lsbCBub3QgaGF2ZSByZWFkIHRoZWlyIGxpbmVzIGluIHlldCwgbWFraW5nIHRoZSBjb3N0IG9mCisgICAgICBjcmVhdGluZyB0aGUgOmNsYXNzOmBTdGFja1N1bW1hcnlgIGNoZWFwZXIgKHdoaWNoIG1heSBiZSB2YWx1YWJsZSBpZiBpdAorICAgICAgbWF5IG5vdCBhY3R1YWxseSBnZXQgZm9ybWF0dGVkKS4gSWYgKmNhcHR1cmVfbG9jYWxzKiBpcyBgYFRydWVgYCB0aGUKKyAgICAgIGxvY2FsIHZhcmlhYmxlcyBpbiBlYWNoIDpjbGFzczpgRnJhbWVTdW1tYXJ5YCBhcmUgY2FwdHVyZWQgYXMgb2JqZWN0CisgICAgICByZXByZXNlbnRhdGlvbnMuCisKKyAgIC4uIGNsYXNzbWV0aG9kOjogZnJvbV9saXN0KGFfbGlzdCkKKworICAgICAgQ29uc3RydWN0IGEgOmNsYXNzOmBTdGFja1N1bW1hcnlgIG9iamVjdCBmcm9tIGEgc3VwcGxpZWQgb2xkLXN0eWxlIGxpc3QKKyAgICAgIG9mIHR1cGxlcy4gRWFjaCB0dXBsZSBzaG91bGQgYmUgYSA0LXR1cGxlIHdpdGggZmlsZW5hbWUsIGxpbmVubywgbmFtZSwKKyAgICAgIGxpbmUgYXMgdGhlIGVsZW1lbnRzLgorCisKKzpjbGFzczpgRnJhbWVTdW1tYXJ5YCBPYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworOmNsYXNzOmBGcmFtZVN1bW1hcnlgIG9iamVjdHMgcmVwcmVzZW50IGEgc2luZ2xlIGZyYW1lIGluIGEgdHJhY2ViYWNrLgorCisuLiBjbGFzczo6IEZyYW1lU3VtbWFyeShmaWxlbmFtZSwgbGluZW5vLCBuYW1lLCBsb29rdXBfbGluZT1UcnVlLCBsb2NhbHM9Tm9uZSwgbGluZT1Ob25lKQorCisgICBSZXByZXNlbnQgYSBzaW5nbGUgZnJhbWUgaW4gdGhlIHRyYWNlYmFjayBvciBzdGFjayB0aGF0IGlzIGJlaW5nIGZvcm1hdHRlZAorICAgb3IgcHJpbnRlZC4gSXQgbWF5IG9wdGlvbmFsbHkgaGF2ZSBhIHN0cmluZ2lmaWVkIHZlcnNpb24gb2YgdGhlIGZyYW1lcworICAgbG9jYWxzIGluY2x1ZGVkIGluIGl0LiBJZiAqbG9va3VwX2xpbmUqIGlzIGBgRmFsc2VgYCwgdGhlIHNvdXJjZSBjb2RlIGlzIG5vdAorICAgbG9va2VkIHVwIHVudGlsIHRoZSA6Y2xhc3M6YEZyYW1lU3VtbWFyeWAgaGFzIHRoZSA6YXR0cjpgfkZyYW1lU3VtbWFyeS5saW5lYAorICAgYXR0cmlidXRlIGFjY2Vzc2VkICh3aGljaCBhbHNvIGhhcHBlbnMgd2hlbiBjYXN0aW5nIGl0IHRvIGEgdHVwbGUpLgorICAgOmF0dHI6YH5GcmFtZVN1bW1hcnkubGluZWAgbWF5IGJlIGRpcmVjdGx5IHByb3ZpZGVkLCBhbmQgd2lsbCBwcmV2ZW50IGxpbmUKKyAgIGxvb2t1cHMgaGFwcGVuaW5nIGF0IGFsbC4gKmxvY2FscyogaXMgYW4gb3B0aW9uYWwgbG9jYWwgdmFyaWFibGUKKyAgIGRpY3Rpb25hcnksIGFuZCBpZiBzdXBwbGllZCB0aGUgdmFyaWFibGUgcmVwcmVzZW50YXRpb25zIGFyZSBzdG9yZWQgaW4gdGhlCisgICBzdW1tYXJ5IGZvciBsYXRlciBkaXNwbGF5LgogCiAuLiBfdHJhY2ViYWNrLWV4YW1wbGU6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RyYWNlbWFsbG9jLnJzdCBiL0RvYy9saWJyYXJ5L3RyYWNlbWFsbG9jLnJzdAppbmRleCBjZDYyZTU1Li44NjFiZTM3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90cmFjZW1hbGxvYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHJhY2VtYWxsb2MucnN0CkBAIC0zNjMsNyArMzYzLDcgQEAKICAgIEZpbHRlciBvbiB0cmFjZXMgb2YgbWVtb3J5IGJsb2Nrcy4KIAogICAgU2VlIHRoZSA6ZnVuYzpgZm5tYXRjaC5mbm1hdGNoYCBmdW5jdGlvbiBmb3IgdGhlIHN5bnRheCBvZgotICAgKmZpbGVuYW1lX3BhdHRlcm4qLiBUaGUgYGAnLnB5YydgYCBhbmQgYGAnLnB5bydgYCBmaWxlIGV4dGVuc2lvbnMgYXJlCisgICAqZmlsZW5hbWVfcGF0dGVybiouIFRoZSBgYCcucHljJ2BgIGZpbGUgZXh0ZW5zaW9uIGlzCiAgICByZXBsYWNlZCB3aXRoIGBgJy5weSdgYC4KIAogICAgRXhhbXBsZXM6CkBAIC0zNzQsNiArMzc0LDEwIEBACiAgICAgIDptb2Q6YHRyYWNlbWFsbG9jYCBtb2R1bGUKICAgICogYGBGaWx0ZXIoRmFsc2UsICI8dW5rbm93bj4iKWBgIGV4Y2x1ZGVzIGVtcHR5IHRyYWNlYmFja3MKIAorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGBgJy5weW8nYGAgZmlsZSBleHRlbnNpb24gaXMgbm8gbG9uZ2VyIHJlcGxhY2VkIHdpdGggYGAnLnB5J2BgLgorCiAgICAuLiBhdHRyaWJ1dGU6OiBpbmNsdXNpdmUKIAogICAgICAgSWYgKmluY2x1c2l2ZSogaXMgYGBUcnVlYGAgKGluY2x1ZGUpLCBvbmx5IHRyYWNlIG1lbW9yeSBibG9ja3MgYWxsb2NhdGVkCkBAIC02MzEsNCArNjM1LDMgQEAKICAgICAgICAgICAgICAgb2JqID0gT2JqZWN0KCkKICAgICAgICAgICAgIEZpbGUgInRlc3QucHkiLCBsaW5lIDEyCiAgICAgICAgICAgICAgIHRiID0gdHJhY2VtYWxsb2MuZ2V0X29iamVjdF90cmFjZWJhY2soZigpKQotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90dWxpcF9jb3JvLmRpYSBiL0RvYy9saWJyYXJ5L3R1bGlwX2Nvcm8uZGlhCmluZGV4IGVjY2Y0ZmEuLjcwYTMzZTMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3R1bGlwX2Nvcm8uZGlhCisrKyBiL0RvYy9saWJyYXJ5L3R1bGlwX2Nvcm8uZGlhCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3R1bGlwX2Nvcm8ucG5nIGIvRG9jL2xpYnJhcnkvdHVsaXBfY29yby5wbmcKaW5kZXggNjViNjk1MS4uMzZjZWQ4ZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdHVsaXBfY29yby5wbmcKKysrIGIvRG9jL2xpYnJhcnkvdHVsaXBfY29yby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHVydGxlLnJzdCBiL0RvYy9saWJyYXJ5L3R1cnRsZS5yc3QKaW5kZXggZWZlNWM1NC4uMzBkZDZlZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdHVydGxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS90dXJ0bGUucnN0CkBAIC0xODc5LDcgKzE4NzksNyBAQAogCiAgICAgICA+Pj4gY3YgPSBzY3JlZW4uZ2V0Y2FudmFzKCkKICAgICAgID4+PiBjdgotICAgICAgPHR1cnRsZS5TY3JvbGxlZENhbnZhcyBvYmplY3QgYXQgLi4uPgorICAgICAgPHR1cnRsZS5TY3JvbGxlZENhbnZhcyBvYmplY3QgLi4uPgogCiAKIC4uIGZ1bmN0aW9uOjogZ2V0c2hhcGVzKCkKQEAgLTIzNTEsNiArMjM1MSw5IEBACiB8ICAgICAgICAgICAgICAgIHwgcGFpcndpc2UgaW4gb3Bwb3NpdGUgICAgICAgICB8IHNoYXBlc2l6ZSwgdGlsdCwgICAgICB8CiB8ICAgICAgICAgICAgICAgIHwgZGlyZWN0aW9uICAgICAgICAgICAgICAgICAgICB8IGdldF9zaGFwZXBvbHksIHVwZGF0ZSB8CiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IHNvcnRpbmdfYW5pbWF0ZXwgdmlzdWFsIGRlbW9uc3RyYXRpb24gb2YgICAgICB8IHNpbXBsZSBhbGlnbm1lbnQsICAgICB8Cit8ICAgICAgICAgICAgICAgIHwgZGlmZmVyZW50IHNvcnRpbmcgbWV0aG9kcyAgICB8IHJhbmRvbWl6YXRpb24gICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IHRyZWUgICAgICAgICAgIHwgYSAoZ3JhcGhpY2FsKSBicmVhZHRoICAgICAgICB8IDpmdW5jOmBjbG9uZWAgICAgICAgICB8CiB8ICAgICAgICAgICAgICAgIHwgZmlyc3QgdHJlZSAodXNpbmcgZ2VuZXJhdG9ycyl8ICAgICAgICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90eXBlcy5yc3QgYi9Eb2MvbGlicmFyeS90eXBlcy5yc3QKaW5kZXggYWJkYjkzOS4uZWIyNzg0NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdHlwZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3R5cGVzLnJzdApAQCAtODYsOCArODYsMTYgQEAKIAogLi4gZGF0YTo6IEdlbmVyYXRvclR5cGUKIAotICAgVGhlIHR5cGUgb2YgOnRlcm06YGdlbmVyYXRvcmAtaXRlcmF0b3Igb2JqZWN0cywgcHJvZHVjZWQgYnkgY2FsbGluZyBhCi0gICBnZW5lcmF0b3IgZnVuY3Rpb24uCisgICBUaGUgdHlwZSBvZiA6dGVybTpgZ2VuZXJhdG9yYC1pdGVyYXRvciBvYmplY3RzLCBjcmVhdGVkIGJ5CisgICBnZW5lcmF0b3IgZnVuY3Rpb25zLgorCisKKy4uIGRhdGE6OiBDb3JvdXRpbmVUeXBlCisKKyAgIFRoZSB0eXBlIG9mIDp0ZXJtOmBjb3JvdXRpbmVgIG9iamVjdHMsIGNyZWF0ZWQgYnkKKyAgIDprZXl3b3JkOmBhc3luYyBkZWZgIGZ1bmN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKIAogLi4gZGF0YTo6IENvZGVUeXBlCkBAIC0xMTUsNiArMTIzLDEwIEBACiAgICBUaGUgdHlwZSBvZiA6dGVybTpgbW9kdWxlcyA8bW9kdWxlPmAuIENvbnN0cnVjdG9yIHRha2VzIHRoZSBuYW1lIG9mIHRoZQogICAgbW9kdWxlIHRvIGJlIGNyZWF0ZWQgYW5kIG9wdGlvbmFsbHkgaXRzIDp0ZXJtOmBkb2NzdHJpbmdgLgogCisgICAuLiBub3RlOjoKKyAgICAgIFVzZSA6ZnVuYzpgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlY2AgdG8gY3JlYXRlIGEgbmV3IG1vZHVsZSBpZiB5b3UKKyAgICAgIHdpc2ggdG8gc2V0IHRoZSB2YXJpb3VzIGltcG9ydC1jb250cm9sbGVkIGF0dHJpYnV0ZXMuCisKICAgIC4uIGF0dHJpYnV0ZTo6IF9fZG9jX18KIAogICAgICAgVGhlIDp0ZXJtOmBkb2NzdHJpbmdgIG9mIHRoZSBtb2R1bGUuIERlZmF1bHRzIHRvIGBgTm9uZWBgLgpAQCAtMjY3LDMgKzI3OSwyNSBAQAogICAgYXR0cmlidXRlcyBvbiB0aGUgY2xhc3Mgd2l0aCB0aGUgc2FtZSBuYW1lIChzZWUgRW51bSBmb3IgYW4gZXhhbXBsZSkuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCisKK0Nvcm91dGluZSBVdGlsaXR5IEZ1bmN0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogY29yb3V0aW5lKGdlbl9mdW5jKQorCisgICBUaGlzIGZ1bmN0aW9uIHRyYW5zZm9ybXMgYSA6dGVybTpgZ2VuZXJhdG9yYCBmdW5jdGlvbiBpbnRvIGEKKyAgIDp0ZXJtOmBjb3JvdXRpbmUgZnVuY3Rpb25gIHdoaWNoIHJldHVybnMgYSBnZW5lcmF0b3ItYmFzZWQgY29yb3V0aW5lLgorICAgVGhlIGdlbmVyYXRvci1iYXNlZCBjb3JvdXRpbmUgaXMgc3RpbGwgYSA6dGVybTpgZ2VuZXJhdG9yIGl0ZXJhdG9yYCwKKyAgIGJ1dCBpcyBhbHNvIGNvbnNpZGVyZWQgdG8gYmUgYSA6dGVybTpgY29yb3V0aW5lYCBvYmplY3QgYW5kIGlzCisgICA6dGVybTpgYXdhaXRhYmxlYC4gIEhvd2V2ZXIsIGl0IG1heSBub3QgbmVjZXNzYXJpbHkgaW1wbGVtZW50CisgICB0aGUgOm1ldGg6YF9fYXdhaXRfX2AgbWV0aG9kLgorCisgICBJZiAqZ2VuX2Z1bmMqIGlzIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBpdCB3aWxsIGJlIG1vZGlmaWVkIGluLXBsYWNlLgorCisgICBJZiAqZ2VuX2Z1bmMqIGlzIG5vdCBhIGdlbmVyYXRvciBmdW5jdGlvbiwgaXQgd2lsbCBiZSB3cmFwcGVkLiBJZiBpdAorICAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5HZW5lcmF0b3JgLCB0aGUgaW5zdGFuY2UKKyAgIHdpbGwgYmUgd3JhcHBlZCBpbiBhbiAqYXdhaXRhYmxlKiBwcm94eSBvYmplY3QuICBBbGwgb3RoZXIgdHlwZXMKKyAgIG9mIG9iamVjdHMgd2lsbCBiZSByZXR1cm5lZCBhcyBpcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90eXBpbmcucnN0IGIvRG9jL2xpYnJhcnkvdHlwaW5nLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmUxMTY3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvdHlwaW5nLnJzdApAQCAtMCwwICsxLDUyNCBAQAorOm1vZDpgdHlwaW5nYCAtLS0gU3VwcG9ydCBmb3IgdHlwZSBoaW50cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBtb2R1bGU6OiB0eXBpbmcKKyAgIDpzeW5vcHNpczogU3VwcG9ydCBmb3IgdHlwZSBoaW50cyAoc2VlIFBFUCA0ODQpLgorCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi90eXBpbmcucHlgCisKKy0tLS0tLS0tLS0tLS0tCisKK1RoaXMgbW9kdWxlIHN1cHBvcnRzIHR5cGUgaGludHMgYXMgc3BlY2lmaWVkIGJ5IDpwZXA6YDQ4NGAuICBUaGUgbW9zdAorZnVuZGFtZW50YWwgc3VwcG9ydCBjb25zaXN0cyBvZiB0aGUgdHlwZSA6Y2xhc3M6YEFueWAsIDpjbGFzczpgVW5pb25gLAorOmNsYXNzOmBUdXBsZWAsIDpjbGFzczpgQ2FsbGFibGVgLCA6Y2xhc3M6YFR5cGVWYXJgLCBhbmQKKzpjbGFzczpgR2VuZXJpY2AuICBGb3IgZnVsbCBzcGVjaWZpY2F0aW9uIHBsZWFzZSBzZWUgOnBlcDpgNDg0YC4gIEZvcgorYSBzaW1wbGlmaWVkIGludHJvZHVjdGlvbiB0byB0eXBlIGhpbnRzIHNlZSA6cGVwOmA0ODNgLgorCisKK1RoZSBmdW5jdGlvbiBiZWxvdyB0YWtlcyBhbmQgcmV0dXJucyBhIHN0cmluZyBhbmQgaXMgYW5ub3RhdGVkIGFzIGZvbGxvd3M6OgorCisgICBkZWYgZ3JlZXRpbmcobmFtZTogc3RyKSAtPiBzdHI6CisgICAgICAgcmV0dXJuICdIZWxsbyAnICsgbmFtZQorCitJbiB0aGUgZnVuY3Rpb24gYGBncmVldGluZ2BgLCB0aGUgYXJndW1lbnQgYGBuYW1lYGAgaXMgZXhwZWN0ZWQgdG8gYnkgb2YgdHlwZQorOmNsYXNzOmBzdHJgIGFuZCB0aGUgcmV0dXJuIHR5cGUgOmNsYXNzOmBzdHJgLiBTdWJ0eXBlcyBhcmUgYWNjZXB0ZWQgYXMKK2FyZ3VtZW50cy4KKworVHlwZSBhbGlhc2VzCistLS0tLS0tLS0tLS0KKworQSB0eXBlIGFsaWFzIGlzIGRlZmluZWQgYnkgYXNzaWduaW5nIHRoZSB0eXBlIHRvIHRoZSBhbGlhczo6CisKKyAgIFZlY3RvciA9IExpc3RbZmxvYXRdCisKK0NhbGxhYmxlCistLS0tLS0tLQorCitGcmFtZXdvcmtzIGV4cGVjdGluZyBjYWxsYmFjayBmdW5jdGlvbnMgb2Ygc3BlY2lmaWMgc2lnbmF0dXJlcyBtaWdodCBiZQordHlwZSBoaW50ZWQgdXNpbmcgYGBDYWxsYWJsZVtbQXJnMVR5cGUsIEFyZzJUeXBlXSwgUmV0dXJuVHlwZV1gYC4KKworRm9yIGV4YW1wbGU6OgorCisgICBmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKKworICAgZGVmIGZlZWRlcihnZXRfbmV4dF9pdGVtOiBDYWxsYWJsZVtbXSwgc3RyXSkgLT4gTm9uZToKKyAgICAgICAjIEJvZHkKKworICAgZGVmIGFzeW5jX3F1ZXJ5KG9uX3N1Y2Nlc3M6IENhbGxhYmxlW1tpbnRdLCBOb25lXSwKKyAgICAgICAgICAgICAgICAgICBvbl9lcnJvcjogQ2FsbGFibGVbW2ludCwgRXhjZXB0aW9uXSwgTm9uZV0pIC0+IE5vbmU6CisgICAgICAgIyBCb2R5CisKK0l0IGlzIHBvc3NpYmxlIHRvIGRlY2xhcmUgdGhlIHJldHVybiB0eXBlIG9mIGEgY2FsbGFibGUgd2l0aG91dCBzcGVjaWZ5aW5nCit0aGUgY2FsbCBzaWduYXR1cmUgYnkgc3Vic3RpdHV0aW5nIGEgbGl0ZXJhbCBlbGxpcHNpcworZm9yIHRoZSBsaXN0IG9mIGFyZ3VtZW50cyBpbiB0aGUgdHlwZSBoaW50OiBgYENhbGxhYmxlWy4uLiwgUmV0dXJuVHlwZV1gYC4KK2BgTm9uZWBgIGFzIGEgdHlwZSBoaW50IGlzIGEgc3BlY2lhbCBjYXNlIGFuZCBpcyByZXBsYWNlZCBieSBgYHR5cGUoTm9uZSlgYC4KKworR2VuZXJpY3MKKy0tLS0tLS0tCisKK1NpbmNlIHR5cGUgaW5mb3JtYXRpb24gYWJvdXQgb2JqZWN0cyBrZXB0IGluIGNvbnRhaW5lcnMgY2Fubm90IGJlIHN0YXRpY2FsbHkKK2luZmVycmVkIGluIGEgZ2VuZXJpYyB3YXksIGFic3RyYWN0IGJhc2UgY2xhc3NlcyBoYXZlIGJlZW4gZXh0ZW5kZWQgdG8gc3VwcG9ydAorc3Vic2NyaXB0aW9uIHRvIGRlbm90ZSBleHBlY3RlZCB0eXBlcyBmb3IgY29udGFpbmVyIGVsZW1lbnRzLgorCis6OgorCisgICBmcm9tIHR5cGluZyBpbXBvcnQgTWFwcGluZywgU2VxdWVuY2UKKworICAgZGVmIG5vdGlmeV9ieV9lbWFpbChlbXBsb3llZXM6IFNlcXVlbmNlW0VtcGxveWVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVzOiBNYXBwaW5nW3N0ciwgc3RyXSkgLT4gTm9uZTogLi4uCisKK0dlbmVyaWNzIGNhbiBiZSBwYXJhbWV0cml6ZWQgYnkgdXNpbmcgYSBuZXcgZmFjdG9yeSBhdmFpbGFibGUgaW4gdHlwaW5nCitjYWxsZWQgOmNsYXNzOmBUeXBlVmFyYC4KKworOjoKKworICAgZnJvbSB0eXBpbmcgaW1wb3J0IFNlcXVlbmNlLCBUeXBlVmFyCisKKyAgIFQgPSBUeXBlVmFyKCdUJykgICAgICAjIERlY2xhcmUgdHlwZSB2YXJpYWJsZQorCisgICBkZWYgZmlyc3QobDogU2VxdWVuY2VbVF0pIC0+IFQ6ICAgIyBHZW5lcmljIGZ1bmN0aW9uCisgICAgICAgcmV0dXJuIGxbMF0KKworCitVc2VyLWRlZmluZWQgZ2VuZXJpYyB0eXBlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSB1c2VyLWRlZmluZWQgY2xhc3MgY2FuIGJlIGRlZmluZWQgYXMgYSBnZW5lcmljIGNsYXNzLgorCis6OgorCisgICBmcm9tIHR5cGluZyBpbXBvcnQgVHlwZVZhciwgR2VuZXJpYworICAgZnJvbSBsb2dnaW5nIGltcG9ydCBMb2dnZXIKKworICAgVCA9IFR5cGVWYXIoJ1QnKQorCisgICBjbGFzcyBMb2dnZWRWYXIoR2VuZXJpY1tUXSk6CisgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlOiBULCBuYW1lOiBzdHIsIGxvZ2dlcjogTG9nZ2VyKSAtPiBOb25lOgorICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQorCisgICAgICAgZGVmIHNldChzZWxmLCBuZXc6IFQpIC0+IE5vbmU6CisgICAgICAgICAgIHNlbGYubG9nKCdTZXQgJyArIHJlcHIoc2VsZi52YWx1ZSkpCisgICAgICAgICAgIHNlbGYudmFsdWUgPSBuZXcKKworICAgICAgIGRlZiBnZXQoc2VsZikgLT4gVDoKKyAgICAgICAgICAgc2VsZi5sb2coJ0dldCAnICsgcmVwcihzZWxmLnZhbHVlKSkKKyAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKKworICAgICAgIGRlZiBsb2coc2VsZiwgbWVzc2FnZTogc3RyKSAtPiBOb25lOgorICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCd7fToge30nLmZvcm1hdChzZWxmLm5hbWUsIG1lc3NhZ2UpKQorCitgYEdlbmVyaWNbVF1gYCBhcyBhIGJhc2UgY2xhc3MgZGVmaW5lcyB0aGF0IHRoZSBjbGFzcyBgYExvZ2dlZFZhcmBgIHRha2VzIGEKK3NpbmdsZSB0eXBlIHBhcmFtZXRlciBgYFRgYCAuIFRoaXMgYWxzbyBtYWtlcyBgYFRgYCB2YWxpZCBhcyBhIHR5cGUgd2l0aGluIHRoZQorY2xhc3MgYm9keS4KKworVGhlIDpjbGFzczpgR2VuZXJpY2AgYmFzZSBjbGFzcyB1c2VzIGEgbWV0YWNsYXNzIHRoYXQgZGVmaW5lcworOm1ldGg6YF9fZ2V0aXRlbV9fYCBzbyB0aGF0IGBgTG9nZ2VkVmFyW3RdYGAgaXMgdmFsaWQgYXMgYSB0eXBlOjoKKworICAgZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhYmxlCisKKyAgIGRlZiB6ZXJvX2FsbF92YXJzKHZhcnM6IEl0ZXJhYmxlW0xvZ2dlZFZhcltpbnRdXSkgLT4gTm9uZToKKyAgICAgICBmb3IgdmFyIGluIHZhcnM6CisgICAgICAgICAgIHZhci5zZXQoMCkKKworQSBnZW5lcmljIHR5cGUgY2FuIGhhdmUgYW55IG51bWJlciBvZiB0eXBlIHZhcmlhYmxlcywgYW5kIHR5cGUgdmFyaWFibGVzIG1heQorYmUgY29uc3RyYWluZWQ6OgorCisgICBmcm9tIHR5cGluZyBpbXBvcnQgVHlwZVZhciwgR2VuZXJpYworICAgLi4uCisKKyAgIFQgPSBUeXBlVmFyKCdUJykKKyAgIFMgPSBUeXBlVmFyKCdTJywgaW50LCBzdHIpCisKKyAgIGNsYXNzIFN0cmFuZ2VQYWlyKEdlbmVyaWNbVCwgU10pOgorICAgICAgIC4uLgorCitFYWNoIHR5cGUgdmFyaWFibGUgYXJndW1lbnQgdG8gOmNsYXNzOmBHZW5lcmljYCBtdXN0IGJlIGRpc3RpbmN0LgorVGhpcyBpcyB0aHVzIGludmFsaWQ6OgorCisgICBmcm9tIHR5cGluZyBpbXBvcnQgVHlwZVZhciwgR2VuZXJpYworICAgLi4uCisKKyAgIFQgPSBUeXBlVmFyKCdUJykKKworICAgY2xhc3MgUGFpcihHZW5lcmljW1QsIFRdKTogICAjIElOVkFMSUQKKyAgICAgICAuLi4KKworWW91IGNhbiB1c2UgbXVsdGlwbGUgaW5oZXJpdGFuY2Ugd2l0aCA6Y2xhc3M6YEdlbmVyaWNgOjoKKworICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGVWYXIsIEdlbmVyaWMsIFNpemVkCisKKyAgIFQgPSBUeXBlVmFyKCdUJykKKworICAgY2xhc3MgTGlua2VkTGlzdChTaXplZCwgR2VuZXJpY1tUXSk6CisgICAgICAgLi4uCisKK1doZW4gaW5oZXJpdGluZyBmcm9tIGdlbmVyaWMgY2xhc3Nlcywgc29tZSB0eXBlIHZhcmlhYmxlcyBjb3VsZCBmaXhlZDo6CisKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgVHlwZVZhciwgTWFwcGluZworCisgICAgVCA9IFR5cGVWYXIoJ1QnKQorCisgICAgY2xhc3MgTXlEaWN0KE1hcHBpbmdbc3RyLCBUXSk6CisgICAgICAgIC4uLgorCitJbiB0aGlzIGNhc2UgYGBNeURpY3RgYCBoYXMgYSBzaW5nbGUgcGFyYW1ldGVyLCBgYFRgYC4KKworU3ViY2xhc3NpbmcgYSBnZW5lcmljIGNsYXNzIHdpdGhvdXQgc3BlY2lmeWluZyB0eXBlIHBhcmFtZXRlcnMgYXNzdW1lcworOmNsYXNzOmBBbnlgIGZvciBlYWNoIHBvc2l0aW9uLiBJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGBgTXlJdGVyYWJsZWBgIGlzCitub3QgZ2VuZXJpYyBidXQgaW1wbGljaXRseSBpbmhlcml0cyBmcm9tIGBgSXRlcmFibGVbQW55XWBgOjoKKworICAgZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhYmxlCisKKyAgIGNsYXNzIE15SXRlcmFibGUoSXRlcmFibGUpOiAjIFNhbWUgYXMgSXRlcmFibGVbQW55XQorCitUaGUgbWV0YWNsYXNzIHVzZWQgYnkgOmNsYXNzOmBHZW5lcmljYCBpcyBhIHN1YmNsYXNzIG9mIDpjbGFzczpgYWJjLkFCQ01ldGFgLgorQSBnZW5lcmljIGNsYXNzIGNhbiBiZSBhbiBBQkMgYnkgaW5jbHVkaW5nIGFic3RyYWN0IG1ldGhvZHMgb3IgcHJvcGVydGllcywKK2FuZCBnZW5lcmljIGNsYXNzZXMgY2FuIGFsc28gaGF2ZSBBQkNzIGFzIGJhc2UgY2xhc3NlcyB3aXRob3V0IGEgbWV0YWNsYXNzCitjb25mbGljdC4gIEdlbmVyaWMgbWV0YWNsYXNzZXMgYXJlIG5vdCBzdXBwb3J0ZWQuCisKKworVGhlIDpjbGFzczpgQW55YCB0eXBlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSBzcGVjaWFsIGtpbmQgb2YgdHlwZSBpcyA6Y2xhc3M6YEFueWAuIEV2ZXJ5IHR5cGUgaXMgYSBzdWJ0eXBlIG9mCis6Y2xhc3M6YEFueWAuIFRoaXMgaXMgYWxzbyB0cnVlIGZvciB0aGUgYnVpbHRpbiB0eXBlIG9iamVjdC4gSG93ZXZlciwgdG8gdGhlCitzdGF0aWMgdHlwZSBjaGVja2VyIHRoZXNlIGFyZSBjb21wbGV0ZWx5IGRpZmZlcmVudC4KKworV2hlbiB0aGUgdHlwZSBvZiBhIHZhbHVlIGlzIDpjbGFzczpgb2JqZWN0YCwgdGhlIHR5cGUgY2hlY2tlciB3aWxsIHJlamVjdAorYWxtb3N0IGFsbCBvcGVyYXRpb25zIG9uIGl0LCBhbmQgYXNzaWduaW5nIGl0IHRvIGEgdmFyaWFibGUgKG9yIHVzaW5nIGl0IGFzIGEKK3JldHVybiB2YWx1ZSkgb2YgYSBtb3JlIHNwZWNpYWxpemVkIHR5cGUgaXMgYSB0eXBlIGVycm9yLiBPbiB0aGUgb3RoZXIgaGFuZCwKK3doZW4gYSB2YWx1ZSBoYXMgdHlwZSA6Y2xhc3M6YEFueWAsIHRoZSB0eXBlIGNoZWNrZXIgd2lsbCBhbGxvdyBhbGwgb3BlcmF0aW9ucworb24gaXQsIGFuZCBhIHZhbHVlIG9mIHR5cGUgOmNsYXNzOmBBbnlgIGNhbiBiZSBhc3NpZ25lZCB0byBhIHZhcmlhYmxlIChvciB1c2VkCithcyBhIHJldHVybiB2YWx1ZSkgb2YgYSBtb3JlIGNvbnN0cmFpbmVkIHR5cGUuCisKKworQ2xhc3NlcywgZnVuY3Rpb25zLCBhbmQgZGVjb3JhdG9ycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBjbGFzc2VzLCBmdW5jdGlvbnMgYW5kIGRlY29yYXRvcnM6CisKKy4uIGNsYXNzOjogQW55CisKKyAgIFNwZWNpYWwgdHlwZSBpbmRpY2F0aW5nIGFuIHVuY29uc3RyYWluZWQgdHlwZS4KKworICAgKiBBbnkgb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgQW55YC4KKyAgICogQW55IGNsYXNzIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBBbnlgLgorICAgKiBBcyBhIHNwZWNpYWwgY2FzZSwgOmNsYXNzOmBBbnlgIGFuZCA6Y2xhc3M6YG9iamVjdGAgYXJlIHN1YmNsYXNzZXMgb2YKKyAgICAgZWFjaCBvdGhlci4KKworLi4gY2xhc3M6OiBUeXBlVmFyCisKKyAgICBUeXBlIHZhcmlhYmxlLgorCisgICAgVXNhZ2U6OgorCisgICAgICBUID0gVHlwZVZhcignVCcpICAjIENhbiBiZSBhbnl0aGluZworICAgICAgQSA9IFR5cGVWYXIoJ0EnLCBzdHIsIGJ5dGVzKSAgIyBNdXN0IGJlIHN0ciBvciBieXRlcworCisgICAgVHlwZSB2YXJpYWJsZXMgZXhpc3QgcHJpbWFyaWx5IGZvciB0aGUgYmVuZWZpdCBvZiBzdGF0aWMgdHlwZQorICAgIGNoZWNrZXJzLiAgVGhleSBzZXJ2ZSBhcyB0aGUgcGFyYW1ldGVycyBmb3IgZ2VuZXJpYyB0eXBlcyBhcyB3ZWxsCisgICAgYXMgZm9yIGdlbmVyaWMgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBTZWUgY2xhc3MgR2VuZXJpYyBmb3IgbW9yZQorICAgIGluZm9ybWF0aW9uIG9uIGdlbmVyaWMgdHlwZXMuICBHZW5lcmljIGZ1bmN0aW9ucyB3b3JrIGFzIGZvbGxvd3M6OgorCisgICAgICAgZGVmIHJlcGVhdCh4OiBULCBuOiBpbnQpIC0+IFNlcXVlbmNlW1RdOgorICAgICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IGNvbnRhaW5pbmcgbiByZWZlcmVuY2VzIHRvIHguIiIiCisgICAgICAgICAgIHJldHVybiBbeF0qbgorCisgICAgICAgZGVmIGxvbmdlc3QoeDogQSwgeTogQSkgLT4gQToKKyAgICAgICAgICAgIiIiUmV0dXJuIHRoZSBsb25nZXN0IG9mIHR3byBzdHJpbmdzLiIiIgorICAgICAgICAgICByZXR1cm4geCBpZiBsZW4oeCkgPj0gbGVuKHkpIGVsc2UgeQorCisgICAgVGhlIGxhdHRlciBleGFtcGxlJ3Mgc2lnbmF0dXJlIGlzIGVzc2VudGlhbGx5IHRoZSBvdmVybG9hZGluZworICAgIG9mIGBgKHN0ciwgc3RyKSAtPiBzdHJgYCBhbmQgYGAoYnl0ZXMsIGJ5dGVzKSAtPiBieXRlc2BgLiAgQWxzbyBub3RlCisgICAgdGhhdCBpZiB0aGUgYXJndW1lbnRzIGFyZSBpbnN0YW5jZXMgb2Ygc29tZSBzdWJjbGFzcyBvZiA6Y2xhc3M6YHN0cmAsCisgICAgdGhlIHJldHVybiB0eXBlIGlzIHN0aWxsIHBsYWluIDpjbGFzczpgc3RyYC4KKworICAgIEF0IHJ1bnRpbWUsIGBgaXNpbnN0YW5jZSh4LCBUKWBgIHdpbGwgcmFpc2UgOmV4YzpgVHlwZUVycm9yYC4gIEluIGdlbmVyYWwsCisgICAgOmZ1bmM6YGlzaW5zdGFuY2VgIGFuZCA6ZnVuYzpgaXNzdWJjbGFzc2Agc2hvdWxkIG5vdCBiZSB1c2VkIHdpdGggdHlwZXMuCisKKyAgICBUeXBlIHZhcmlhYmxlcyBtYXkgYmUgbWFya2VkIGNvdmFyaWFudCBvciBjb250cmF2YXJpYW50IGJ5IHBhc3NpbmcKKyAgICBgYGNvdmFyaWFudD1UcnVlYGAgb3IgYGBjb250cmF2YXJpYW50PVRydWVgYC4gIFNlZSA6cGVwOmA0ODRgIGZvciBtb3JlCisgICAgZGV0YWlscy4gIEJ5IGRlZmF1bHQgdHlwZSB2YXJpYWJsZXMgYXJlIGludmFyaWFudC4gIEFsdGVybmF0aXZlbHksCisgICAgYSB0eXBlIHZhcmlhYmxlIG1heSBzcGVjaWZ5IGFuIHVwcGVyIGJvdW5kIHVzaW5nIGBgYm91bmQ9PHR5cGU+YGAuCisgICAgVGhpcyBtZWFucyB0aGF0IGFuIGFjdHVhbCB0eXBlIHN1YnN0aXR1dGVkIChleHBsaWNpdGx5IG9yIGltcGxpY2l0bHkpCisgICAgZm9yIHRoZSB0eXBlIHZhcmlhYmxlIG11c3QgYmUgYSBzdWJjbGFzcyBvZiB0aGUgYm91bmRhcnkgdHlwZSwKKyAgICBzZWUgOnBlcDpgNDg0YC4KKworLi4gY2xhc3M6OiBVbmlvbgorCisgICBVbmlvbiB0eXBlOyBgYFVuaW9uW1gsIFldYGAgbWVhbnMgZWl0aGVyIFggb3IgWS4KKworICAgVG8gZGVmaW5lIGEgdW5pb24sIHVzZSBlLmcuIGBgVW5pb25baW50LCBzdHJdYGAuICBEZXRhaWxzOgorCisgICAqIFRoZSBhcmd1bWVudHMgbXVzdCBiZSB0eXBlcyBhbmQgdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUuCisKKyAgICogVW5pb25zIG9mIHVuaW9ucyBhcmUgZmxhdHRlbmVkLCBlLmcuOjoKKworICAgICAgIFVuaW9uW1VuaW9uW2ludCwgc3RyXSwgZmxvYXRdID09IFVuaW9uW2ludCwgc3RyLCBmbG9hdF0KKworICAgKiBVbmlvbnMgb2YgYSBzaW5nbGUgYXJndW1lbnQgdmFuaXNoLCBlLmcuOjoKKworICAgICAgIFVuaW9uW2ludF0gPT0gaW50ICAjIFRoZSBjb25zdHJ1Y3RvciBhY3R1YWxseSByZXR1cm5zIGludAorCisgICAqIFJlZHVuZGFudCBhcmd1bWVudHMgYXJlIHNraXBwZWQsIGUuZy46OgorCisgICAgICAgVW5pb25baW50LCBzdHIsIGludF0gPT0gVW5pb25baW50LCBzdHJdCisKKyAgICogV2hlbiBjb21wYXJpbmcgdW5pb25zLCB0aGUgYXJndW1lbnQgb3JkZXIgaXMgaWdub3JlZCwgZS5nLjo6CisKKyAgICAgICBVbmlvbltpbnQsIHN0cl0gPT0gVW5pb25bc3RyLCBpbnRdCisKKyAgICogSWYgOmNsYXNzOmBBbnlgIGlzIHByZXNlbnQgaXQgaXMgdGhlIHNvbGUgc3Vydml2b3IsIGUuZy46OgorCisgICAgICAgVW5pb25baW50LCBBbnldID09IEFueQorCisgICAqIFlvdSBjYW5ub3Qgc3ViY2xhc3Mgb3IgaW5zdGFudGlhdGUgYSB1bmlvbi4KKworICAgKiBZb3UgY2Fubm90IHdyaXRlIGBgVW5pb25bWF1bWV1gYC4KKworICAgKiBZb3UgY2FuIHVzZSBgYE9wdGlvbmFsW1hdYGAgYXMgYSBzaG9ydGhhbmQgZm9yIGBgVW5pb25bWCwgTm9uZV1gYC4KKworLi4gY2xhc3M6OiBPcHRpb25hbAorCisgICBPcHRpb25hbCB0eXBlLgorCisgICBgYE9wdGlvbmFsW1hdYGAgaXMgZXF1aXZhbGVudCB0byBgYFVuaW9uW1gsIHR5cGUoTm9uZSldYGAuCisKKy4uIGNsYXNzOjogVHVwbGUKKworICBUdXBsZSB0eXBlOyBgYFR1cGxlW1gsIFldYGAgaXMgdGhlIGlzIHRoZSB0eXBlIG9mIGEgdHVwbGUgb2YgdHdvIGl0ZW1zCisgIHdpdGggdGhlIGZpcnN0IGl0ZW0gb2YgdHlwZSBYIGFuZCB0aGUgc2Vjb25kIG9mIHR5cGUgWS4KKworICBFeGFtcGxlOiBgYFR1cGxlW1QxLCBUMl1gYCBpcyBhIHR1cGxlIG9mIHR3byBlbGVtZW50cyBjb3JyZXNwb25kaW5nCisgIHRvIHR5cGUgdmFyaWFibGVzIFQxIGFuZCBUMi4gIGBgVHVwbGVbaW50LCBmbG9hdCwgc3RyXWBgIGlzIGEgdHVwbGUKKyAgb2YgYW4gaW50LCBhIGZsb2F0IGFuZCBhIHN0cmluZy4KKworICBUbyBzcGVjaWZ5IGEgdmFyaWFibGUtbGVuZ3RoIHR1cGxlIG9mIGhvbW9nZW5lb3VzIHR5cGUsCisgIHVzZSBsaXRlcmFsIGVsbGlwc2lzLCBlLmcuIGBgVHVwbGVbaW50LCAuLi5dYGAuCisKKy4uIGNsYXNzOjogQ2FsbGFibGUKKworICAgQ2FsbGFibGUgdHlwZTsgYGBDYWxsYWJsZVtbaW50XSwgc3RyXWBgIGlzIGEgZnVuY3Rpb24gb2YgKGludCkgLT4gc3RyLgorCisgICBUaGUgc3Vic2NyaXB0aW9uIHN5bnRheCBtdXN0IGFsd2F5cyBiZSB1c2VkIHdpdGggZXhhY3RseSB0d28KKyAgIHZhbHVlczogdGhlIGFyZ3VtZW50IGxpc3QgYW5kIHRoZSByZXR1cm4gdHlwZS4gIFRoZSBhcmd1bWVudCBsaXN0CisgICBtdXN0IGJlIGEgbGlzdCBvZiB0eXBlczsgdGhlIHJldHVybiB0eXBlIG11c3QgYmUgYSBzaW5nbGUgdHlwZS4KKworICAgVGhlcmUgaXMgbm8gc3ludGF4IHRvIGluZGljYXRlIG9wdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzLAorICAgc3VjaCBmdW5jdGlvbiB0eXBlcyBhcmUgcmFyZWx5IHVzZWQgYXMgY2FsbGJhY2sgdHlwZXMuCisgICBgYENhbGxhYmxlWy4uLiwgUmV0dXJuVHlwZV1gYCBjb3VsZCBiZSB1c2VkIHRvIHR5cGUgaGludCBhIGNhbGxhYmxlCisgICB0YWtpbmcgYW55IG51bWJlciBvZiBhcmd1bWVudHMgYW5kIHJldHVybmluZyBgYFJldHVyblR5cGVgYC4KKyAgIEEgcGxhaW4gOmNsYXNzOmBDYWxsYWJsZWAgaXMgZXF1aXZhbGVudCB0byBgYENhbGxhYmxlWy4uLiwgQW55XWBgLgorCisuLiBjbGFzczo6IEdlbmVyaWMKKworICAgQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgZ2VuZXJpYyB0eXBlcy4KKworICAgQSBnZW5lcmljIHR5cGUgaXMgdHlwaWNhbGx5IGRlY2xhcmVkIGJ5IGluaGVyaXRpbmcgZnJvbSBhbgorICAgaW5zdGFudGlhdGlvbiBvZiB0aGlzIGNsYXNzIHdpdGggb25lIG9yIG1vcmUgdHlwZSB2YXJpYWJsZXMuCisgICBGb3IgZXhhbXBsZSwgYSBnZW5lcmljIG1hcHBpbmcgdHlwZSBtaWdodCBiZSBkZWZpbmVkIGFzOjoKKworICAgICAgY2xhc3MgTWFwcGluZyhHZW5lcmljW0tULCBWVF0pOgorICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXk6IEtUKSAtPiBWVDoKKyAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICMgRXRjLgorCisgICBUaGlzIGNsYXNzIGNhbiB0aGVuIGJlIHVzZWQgYXMgZm9sbG93czo6CisKKyAgICAgIFggPSBUeXBlVmFyKCdYJykKKyAgICAgIFkgPSBUeXBlVmFyKCdZJykKKworICAgICAgZGVmIGxvb2t1cF9uYW1lKG1hcHBpbmc6IE1hcHBpbmdbWCwgWV0sIGtleTogWCwgZGVmYXVsdDogWSkgLT4gWToKKyAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgIHJldHVybiBtYXBwaW5nW2tleV0KKyAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0CisKKy4uIGNsYXNzOjogSXRlcmFibGUoR2VuZXJpY1tUX2NvXSkKKworICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIHRoZSA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5JdGVyYWJsZWAuCisKKy4uIGNsYXNzOjogSXRlcmF0b3IoSXRlcmFibGVbVF9jb10pCisKKyAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiB0aGUgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuSXRlcmF0b3JgLgorCisuLiBjbGFzczo6IFN1cHBvcnRzSW50CisKKyAgICBBbiBBQkMgd2l0aCBvbmUgYWJzdHJhY3QgbWV0aG9kIGBgX19pbnRfX2BgLgorCisuLiBjbGFzczo6IFN1cHBvcnRzRmxvYXQKKworICAgIEFuIEFCQyB3aXRoIG9uZSBhYnN0cmFjdCBtZXRob2QgYGBfX2Zsb2F0X19gYC4KKworLi4gY2xhc3M6OiBTdXBwb3J0c0FicworCisgICAgQW4gQUJDIHdpdGggb25lIGFic3RyYWN0IG1ldGhvZCBgYF9fYWJzX19gYCB0aGF0IGlzIGNvdmFyaWFudAorICAgIGluIGl0cyByZXR1cm4gdHlwZS4KKworLi4gY2xhc3M6OiBTdXBwb3J0c1JvdW5kCisKKyAgICBBbiBBQkMgd2l0aCBvbmUgYWJzdHJhY3QgbWV0aG9kIGBgX19yb3VuZF9fYGAKKyAgICB0aGF0IGlzIGNvdmFyaWFudCBpbiBpdHMgcmV0dXJuIHR5cGUuCisKKy4uIGNsYXNzOjogUmV2ZXJzaWJsZQorCisgICAgQW4gQUJDIHdpdGggb25lIGFic3RyYWN0IG1ldGhvZCBgYF9fcmV2ZXJzZWRfX2BgIHJldHVybmluZworICAgIGFuIGBgSXRlcmF0b3JbVF9jb11gYC4KKworLi4gY2xhc3M6OiBDb250YWluZXIoR2VuZXJpY1tUX2NvXSkKKworICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLkNvbnRhaW5lcmAuCisKKy4uIGNsYXNzOjogQWJzdHJhY3RTZXQoU2l6ZWQsIEl0ZXJhYmxlW1RfY29dLCBDb250YWluZXJbVF9jb10pCisKKyAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5TZXRgLgorCisuLiBjbGFzczo6IE11dGFibGVTZXQoQWJzdHJhY3RTZXRbVF0pCisKKyAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2V0YC4KKworLi4gY2xhc3M6OiBNYXBwaW5nKFNpemVkLCBJdGVyYWJsZVtLVF0sIENvbnRhaW5lcltLVF0sIEdlbmVyaWNbVlRfY29dKQorCisgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTWFwcGluZ2AuCisKKy4uIGNsYXNzOjogTXV0YWJsZU1hcHBpbmcoTWFwcGluZ1tLVCwgVlRdKQorCisgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZU1hcHBpbmdgLgorCisuLiBjbGFzczo6IFNlcXVlbmNlKFNpemVkLCBJdGVyYWJsZVtUX2NvXSwgQ29udGFpbmVyW1RfY29dKQorCisgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2VgLgorCisuLiBjbGFzczo6IE11dGFibGVTZXF1ZW5jZShTZXF1ZW5jZVtUXSkKKworICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlYC4KKworLi4gY2xhc3M6OiBCeXRlU3RyaW5nKFNlcXVlbmNlW2ludF0pCisKKyAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLkJ5dGVTdHJpbmdgLgorCisgICBUaGlzIHR5cGUgcmVwcmVzZW50cyB0aGUgdHlwZXMgOmNsYXNzOmBieXRlc2AsIDpjbGFzczpgYnl0ZWFycmF5YCwKKyAgIGFuZCA6Y2xhc3M6YG1lbW9yeXZpZXdgLgorCisgICBBcyBhIHNob3J0aGFuZCBmb3IgdGhpcyB0eXBlLCA6Y2xhc3M6YGJ5dGVzYCBjYW4gYmUgdXNlZCB0bworICAgYW5ub3RhdGUgYXJndW1lbnRzIG9mIGFueSBvZiB0aGUgdHlwZXMgbWVudGlvbmVkIGFib3ZlLgorCisuLiBjbGFzczo6IExpc3QobGlzdCwgTXV0YWJsZVNlcXVlbmNlW1RdKQorCisgICBHZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBsaXN0YC4KKyAgIFVzZWZ1bCBmb3IgYW5ub3RhdGluZyByZXR1cm4gdHlwZXMuIFRvIGFubm90YXRlIGFyZ3VtZW50cyBpdCBpcyBwcmVmZXJyZWQKKyAgIHRvIHVzZSBhYnN0cmFjdCBjb2xsZWN0aW9uIHR5cGVzIHN1Y2ggYXMgOmNsYXNzOmBNYXBwaW5nYCwgOmNsYXNzOmBTZXF1ZW5jZWAsCisgICBvciA6Y2xhc3M6YEFic3RyYWN0U2V0YC4KKworICAgVGhpcyB0eXBlIG1heSBiZSB1c2VkIGFzIGZvbGxvd3M6OgorCisgICAgICBUID0gVHlwZVZhcignVCcsIGludCwgZmxvYXQpCisKKyAgICAgIGRlZiB2ZWMyKHg6IFQsIHk6IFQpIC0+IExpc3RbVF06CisgICAgICAgICAgcmV0dXJuIFt4LCB5XQorCisgICAgICBkZWYgc2xpY2VfX3RvXzQodmVjdG9yOiBTZXF1ZW5jZVtUXSkgLT4gTGlzdFtUXToKKyAgICAgICAgICByZXR1cm4gdmVjdG9yWzA6NF0KKworLi4gY2xhc3M6OiBBYnN0cmFjdFNldChzZXQsIE11dGFibGVTZXRbVF0pCisKKyAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLlNldGAuCisKKy4uIGNsYXNzOjogTWFwcGluZ1ZpZXcoU2l6ZWQsIEl0ZXJhYmxlW1RfY29dKQorCisgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5NYXBwaW5nVmlld2AuCisKKy4uIGNsYXNzOjogS2V5c1ZpZXcoTWFwcGluZ1ZpZXdbS1RfY29dLCBBYnN0cmFjdFNldFtLVF9jb10pCisKKyAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLktleXNWaWV3YC4KKworLi4gY2xhc3M6OiBJdGVtc1ZpZXcoTWFwcGluZ1ZpZXcsIEdlbmVyaWNbS1RfY28sIFZUX2NvXSkKKworICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuSXRlbXNWaWV3YC4KKworLi4gY2xhc3M6OiBWYWx1ZXNWaWV3KE1hcHBpbmdWaWV3W1ZUX2NvXSkKKworICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuVmFsdWVzVmlld2AuCisKKy4uIGNsYXNzOjogRGljdChkaWN0LCBNdXRhYmxlTWFwcGluZ1tLVCwgVlRdKQorCisgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGRpY3RgLgorICAgVGhlIHVzYWdlIG9mIHRoaXMgdHlwZSBpcyBhcyBmb2xsb3dzOjoKKworICAgICAgZGVmIGdldF9wb3NpdGlvbl9pbl9pbmRleCh3b3JkX2xpc3Q6IERpY3Rbc3RyLCBpbnRdLCB3b3JkOiBzdHIpIC0+IGludDoKKyAgICAgICAgICByZXR1cm4gd29yZF9saXN0W3dvcmRdCisKKy4uIGNsYXNzOjogR2VuZXJhdG9yKEl0ZXJhdG9yW1RfY29dLCBHZW5lcmljW1RfY28sIFRfY29udHJhLCBWX2NvXSkKKworLi4gY2xhc3M6OiBpbworCisgICBXcmFwcGVyIG5hbWVzcGFjZSBmb3IgSS9PIHN0cmVhbSB0eXBlcy4KKworICAgVGhpcyBkZWZpbmVzIHRoZSBnZW5lcmljIHR5cGUgYGBJT1tBbnlTdHJdYGAgYW5kIGFsaWFzZXMgYGBUZXh0SU9gYAorICAgYW5kIGBgQmluYXJ5SU9gYCBmb3IgcmVzcGVjdGl2ZWx5IGBgSU9bc3RyXWBgIGFuZCBgYElPW2J5dGVzXWBgLgorICAgVGhlc2UgcmVwcmVzZW50aW5nIHRoZSB0eXBlcyBvZiBJL08gc3RyZWFtcyBzdWNoIGFzIHJldHVybmVkIGJ5CisgICA6ZnVuYzpgb3BlbmAuCisKKy4uIGNsYXNzOjogcmUKKworICAgV3JhcHBlciBuYW1lc3BhY2UgZm9yIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGluZyB0eXBlcy4KKworICAgVGhpcyBkZWZpbmVzIHRoZSB0eXBlIGFsaWFzZXMgYGBQYXR0ZXJuYGAgYW5kIGBgTWF0Y2hgYCB3aGljaAorICAgY29ycmVzcG9uZCB0byB0aGUgcmV0dXJuIHR5cGVzIGZyb20gOmZ1bmM6YHJlLmNvbXBpbGVgIGFuZAorICAgOmZ1bmM6YHJlLm1hdGNoYC4gIFRoZXNlIHR5cGVzIChhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25zKQorICAgYXJlIGdlbmVyaWMgaW4gYGBBbnlTdHJgYCBhbmQgY2FuIGJlIG1hZGUgc3BlY2lmaWMgYnkgd3JpdGluZworICAgYGBQYXR0ZXJuW3N0cl1gYCwgYGBQYXR0ZXJuW2J5dGVzXWBgLCBgYE1hdGNoW3N0cl1gYCwgb3IKKyAgIGBgTWF0Y2hbYnl0ZXNdYGAuCisKKy4uIGZ1bmN0aW9uOjogTmFtZWRUdXBsZSh0eXBlbmFtZSwgZmllbGRzKQorCisgICBUeXBlZCB2ZXJzaW9uIG9mIG5hbWVkdHVwbGUuCisKKyAgIFVzYWdlOjoKKworICAgICAgIEVtcGxveWVlID0gdHlwaW5nLk5hbWVkVHVwbGUoJ0VtcGxveWVlJywgWygnbmFtZScsIHN0ciksICgnaWQnLCBpbnQpXSkKKworICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvOjoKKworICAgICAgIEVtcGxveWVlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgnRW1wbG95ZWUnLCBbJ25hbWUnLCAnaWQnXSkKKworICAgVGhlIHJlc3VsdGluZyBjbGFzcyBoYXMgb25lIGV4dHJhIGF0dHJpYnV0ZTogX2ZpZWxkX3R5cGVzLAorICAgZ2l2aW5nIGEgZGljdCBtYXBwaW5nIGZpZWxkIG5hbWVzIHRvIHR5cGVzLiAgKFRoZSBmaWVsZCBuYW1lcworICAgYXJlIGluIHRoZSBfZmllbGRzIGF0dHJpYnV0ZSwgd2hpY2ggaXMgcGFydCBvZiB0aGUgbmFtZWR0dXBsZQorICAgQVBJLikKKworLi4gZnVuY3Rpb246OiBjYXN0KHR5cCwgdmFsKQorCisgICBDYXN0IGEgdmFsdWUgdG8gYSB0eXBlLgorCisgICBUaGlzIHJldHVybnMgdGhlIHZhbHVlIHVuY2hhbmdlZC4gIFRvIHRoZSB0eXBlIGNoZWNrZXIgdGhpcworICAgc2lnbmFscyB0aGF0IHRoZSByZXR1cm4gdmFsdWUgaGFzIHRoZSBkZXNpZ25hdGVkIHR5cGUsIGJ1dCBhdAorICAgcnVudGltZSB3ZSBpbnRlbnRpb25hbGx5IGRvbid0IGNoZWNrIGFueXRoaW5nICh3ZSB3YW50IHRoaXMKKyAgIHRvIGJlIGFzIGZhc3QgYXMgcG9zc2libGUpLgorCisuLiBmdW5jdGlvbjo6IGdldF90eXBlX2hpbnRzKG9iaikKKworICAgUmV0dXJuIHR5cGUgaGludHMgZm9yIGEgZnVuY3Rpb24gb3IgbWV0aG9kIG9iamVjdC4KKworICAgVGhpcyBpcyBvZnRlbiB0aGUgc2FtZSBhcyBgYG9iai5fX2Fubm90YXRpb25zX19gYCwgYnV0IGl0IGhhbmRsZXMKKyAgIGZvcndhcmQgcmVmZXJlbmNlcyBlbmNvZGVkIGFzIHN0cmluZyBsaXRlcmFscywgYW5kIGlmIG5lY2Vzc2FyeQorICAgYWRkcyBgYE9wdGlvbmFsW3RdYGAgaWYgYSBkZWZhdWx0IHZhbHVlIGVxdWFsIHRvIE5vbmUgaXMgc2V0LgorCisuLiBkZWNvcmF0b3I6OiBub190eXBlX2NoZWNrKGFyZykKKworICAgRGVjb3JhdG9yIHRvIGluZGljYXRlIHRoYXQgYW5ub3RhdGlvbnMgYXJlIG5vdCB0eXBlIGhpbnRzLgorCisgICBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIGNsYXNzIG9yIGZ1bmN0aW9uOyBpZiBpdCBpcyBhIGNsYXNzLCBpdAorICAgYXBwbGllcyByZWN1cnNpdmVseSB0byBhbGwgbWV0aG9kcyBkZWZpbmVkIGluIHRoYXQgY2xhc3MgKGJ1dCBub3QKKyAgIHRvIG1ldGhvZHMgZGVmaW5lZCBpbiBpdHMgc3VwZXJjbGFzc2VzIG9yIHN1YmNsYXNzZXMpLgorCisgICBUaGlzIG11dGF0ZXMgdGhlIGZ1bmN0aW9uKHMpIGluIHBsYWNlLgorCisuLiBkZWNvcmF0b3I6OiBub190eXBlX2NoZWNrX2RlY29yYXRvcihkZWNvcmF0b3IpCisKKyAgIERlY29yYXRvciB0byBnaXZlIGFub3RoZXIgZGVjb3JhdG9yIHRoZSA6ZnVuYzpgbm9fdHlwZV9jaGVja2AgZWZmZWN0LgorCisgICBUaGlzIHdyYXBzIHRoZSBkZWNvcmF0b3Igd2l0aCBzb21ldGhpbmcgdGhhdCB3cmFwcyB0aGUgZGVjb3JhdGVkCisgICBmdW5jdGlvbiBpbiA6ZnVuYzpgbm9fdHlwZV9jaGVja2AuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QgYi9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKaW5kZXggM2IzZDNhMC4uMTQzMGQ5YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdApAQCAtMTUsOCArMTUsOCBAQAogCiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIChVQ0QpIHdoaWNoCiBkZWZpbmVzIGNoYXJhY3RlciBwcm9wZXJ0aWVzIGZvciBhbGwgVW5pY29kZSBjaGFyYWN0ZXJzLiBUaGUgZGF0YSBjb250YWluZWQgaW4KLXRoaXMgZGF0YWJhc2UgaXMgY29tcGlsZWQgZnJvbSB0aGUgYFVDRCB2ZXJzaW9uIDYuMy4wCi08aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4zLjAvdWNkPmBfLgordGhpcyBkYXRhYmFzZSBpcyBjb21waWxlZCBmcm9tIHRoZSBgVUNEIHZlcnNpb24gOC4wLjAKKzxodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy84LjAuMC91Y2Q+YF8uCiAKIFRoZSBtb2R1bGUgdXNlcyB0aGUgc2FtZSBuYW1lcyBhbmQgc3ltYm9scyBhcyBkZWZpbmVkIGJ5IFVuaWNvZGUKIFN0YW5kYXJkIEFubmV4ICM0NCwgYCJVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSIKQEAgLTE2Niw2ICsxNjYsNiBAQAogCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIAotLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzYuMy4wL3VjZC9OYW1lQWxpYXNlcy50eHQKKy4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy84LjAuMC91Y2QvTmFtZUFsaWFzZXMudHh0CiAKLS4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy82LjMuMC91Y2QvTmFtZWRTZXF1ZW5jZXMudHh0CisuLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOC4wLjAvdWNkL05hbWVkU2VxdWVuY2VzLnR4dApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdAppbmRleCBkN2Q3MzVjLi45YTUxMTk0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdAorKysgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdApAQCAtMTk4LDcgKzE5OCw3IEBACiB0aGUgKm5ld19jYWxsYWJsZSogYXJndW1lbnQgdG8gOmZ1bmM6YHBhdGNoYC4KIAogCi0uLiBjbGFzczo6IE1vY2soc3BlYz1Ob25lLCBzaWRlX2VmZmVjdD1Ob25lLCByZXR1cm5fdmFsdWU9REVGQVVMVCwgd3JhcHM9Tm9uZSwgbmFtZT1Ob25lLCBzcGVjX3NldD1Ob25lLCAqKmt3YXJncykKKy4uIGNsYXNzOjogTW9jayhzcGVjPU5vbmUsIHNpZGVfZWZmZWN0PU5vbmUsIHJldHVybl92YWx1ZT1ERUZBVUxULCB3cmFwcz1Ob25lLCBuYW1lPU5vbmUsIHNwZWNfc2V0PU5vbmUsIHVuc2FmZT1GYWxzZSwgKiprd2FyZ3MpCiAKICAgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBNb2NrYCBvYmplY3QuIDpjbGFzczpgTW9ja2AgdGFrZXMgc2V2ZXJhbCBvcHRpb25hbCBhcmd1bWVudHMKICAgICB0aGF0IHNwZWNpZnkgdGhlIGJlaGF2aW91ciBvZiB0aGUgTW9jayBvYmplY3Q6CkBAIC0yMzUsNiArMjM1LDEyIEBACiAgICAgICB0aGlzIGlzIGEgbmV3IE1vY2sgKGNyZWF0ZWQgb24gZmlyc3QgYWNjZXNzKS4gU2VlIHRoZQogICAgICAgOmF0dHI6YHJldHVybl92YWx1ZWAgYXR0cmlidXRlLgogCisgICAgKiAqdW5zYWZlKjogQnkgZGVmYXVsdCBpZiBhbnkgYXR0cmlidXRlIHN0YXJ0cyB3aXRoICphc3NlcnQqIG9yCisgICAgICAqYXNzcmV0KiB3aWxsIHJhaXNlIGFuIDpleGM6YEF0dHJpYnV0ZUVycm9yYC4gUGFzc2luZyBgYHVuc2FmZT1UcnVlYGAKKyAgICAgIHdpbGwgYWxsb3cgYWNjZXNzIHRvIHRoZXNlIGF0dHJpYnV0ZXMuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAgICAgKiAqd3JhcHMqOiBJdGVtIGZvciB0aGUgbW9jayBvYmplY3QgdG8gd3JhcC4gSWYgKndyYXBzKiBpcyBub3QgTm9uZSB0aGVuCiAgICAgICBjYWxsaW5nIHRoZSBNb2NrIHdpbGwgcGFzcyB0aGUgY2FsbCB0aHJvdWdoIHRvIHRoZSB3cmFwcGVkIG9iamVjdAogICAgICAgKHJldHVybmluZyB0aGUgcmVhbCByZXN1bHQpLiBBdHRyaWJ1dGUgYWNjZXNzIG9uIHRoZSBtb2NrIHdpbGwgcmV0dXJuIGEKQEAgLTMxNSw2ICszMjEsMjAgQEAKICAgICAgICAgICAgID4+PiBjYWxscyA9IFtjYWxsKDQpLCBjYWxsKDIpLCBjYWxsKDMpXQogICAgICAgICAgICAgPj4+IG1vY2suYXNzZXJ0X2hhc19jYWxscyhjYWxscywgYW55X29yZGVyPVRydWUpCiAKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfbm90X2NhbGxlZCgqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgQXNzZXJ0IHRoZSBtb2NrIHdhcyBuZXZlciBjYWxsZWQuCisKKyAgICAgICAgICAgID4+PiBtID0gTW9jaygpCisgICAgICAgICAgICA+Pj4gbS5oZWxsby5hc3NlcnRfbm90X2NhbGxlZCgpCisgICAgICAgICAgICA+Pj4gb2JqID0gbS5oZWxsbygpCisgICAgICAgICAgICA+Pj4gbS5oZWxsby5hc3NlcnRfbm90X2NhbGxlZCgpCisgICAgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkICdoZWxsbycgdG8gbm90IGhhdmUgYmVlbiBjYWxsZWQuIENhbGxlZCAxIHRpbWVzLgorCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAKICAgICAuLiBtZXRob2Q6OiByZXNldF9tb2NrKCkKIApAQCAtMTAzMiw2ICsxMDUyLDEyIEBACiAgICAgZGVmYXVsdCBiZWNhdXNlIGl0IGNhbiBiZSBkYW5nZXJvdXMuIFdpdGggaXQgc3dpdGNoZWQgb24geW91IGNhbiB3cml0ZQogICAgIHBhc3NpbmcgdGVzdHMgYWdhaW5zdCBBUElzIHRoYXQgZG9uJ3QgYWN0dWFsbHkgZXhpc3QhCiAKKyAgICAuLiBub3RlOjoKKworICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgICBJZiB5b3UgYXJlIHBhdGNoaW5nIGJ1aWx0aW5zIGluIGEgbW9kdWxlIHRoZW4geW91IGRvbid0CisgICAgICAgICAgIG5lZWQgdG8gcGFzcyBgYGNyZWF0ZT1UcnVlYGAsIGl0IHdpbGwgYmUgYWRkZWQgYnkgZGVmYXVsdC4KKwogICAgIFBhdGNoIGNhbiBiZSB1c2VkIGFzIGEgOmNsYXNzOmBUZXN0Q2FzZWAgY2xhc3MgZGVjb3JhdG9yLiBJdCB3b3JrcyBieQogICAgIGRlY29yYXRpbmcgZWFjaCB0ZXN0IG1ldGhvZCBpbiB0aGUgY2xhc3MuIFRoaXMgcmVkdWNlcyB0aGUgYm9pbGVycGxhdGUKICAgICBjb2RlIHdoZW4geW91ciB0ZXN0IG1ldGhvZHMgc2hhcmUgYSBjb21tb24gcGF0Y2hpbmdzIHNldC4gOmZ1bmM6YHBhdGNoYCBmaW5kcwpAQCAtMTQwMyw2ICsxNDI5LDIyIEBACiAgICAgU3RvcCBhbGwgYWN0aXZlIHBhdGNoZXMuIE9ubHkgc3RvcHMgcGF0Y2hlcyBzdGFydGVkIHdpdGggYGBzdGFydGBgLgogCiAKKy4uIF9wYXRjaC1idWlsdGluczoKKworcGF0Y2ggYnVpbHRpbnMKK35+fn5+fn5+fn5+fn5+CitZb3UgY2FuIHBhdGNoIGFueSBidWlsdGlucyB3aXRoaW4gYSBtb2R1bGUuIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBwYXRjaGVzCitidWlsdGluIDpmdW5jOmBvcmRgOgorCisgICAgPj4+IEBwYXRjaCgnX19tYWluX18ub3JkJykKKyAgICAuLi4gZGVmIHRlc3QobW9ja19vcmQpOgorICAgIC4uLiAgICAgbW9ja19vcmQucmV0dXJuX3ZhbHVlID0gMTAxCisgICAgLi4uICAgICBwcmludChvcmQoJ2MnKSkKKyAgICAuLi4KKyAgICA+Pj4gdGVzdCgpCisgICAgMTAxCisKKwogVEVTVF9QUkVGSVgKIH5+fn5+fn5+fn5+CiAKQEAgLTE1ODcsNyArMTYyOSw3IEBACiAqIENvbnRleHQgbWFuYWdlcjogYGBfX2VudGVyX19gYCBhbmQgYGBfX2V4aXRfX2BgCiAqIFVuYXJ5IG51bWVyaWMgbWV0aG9kczogYGBfX25lZ19fYGAsIGBgX19wb3NfX2BgIGFuZCBgYF9faW52ZXJ0X19gYAogKiBUaGUgbnVtZXJpYyBtZXRob2RzIChpbmNsdWRpbmcgcmlnaHQgaGFuZCBhbmQgaW4tcGxhY2UgdmFyaWFudHMpOgotICBgYF9fYWRkX19gYCwgYGBfX3N1Yl9fYGAsIGBgX19tdWxfX2BgLCBgYF9fZGl2X19gYCwgYGBfX3RydWVkaXZfX2BgLAorICBgYF9fYWRkX19gYCwgYGBfX3N1Yl9fYGAsIGBgX19tdWxfX2BgLCBgYF9fbWF0bXVsX19gYCwgYGBfX2Rpdl9fYGAsIGBgX190cnVlZGl2X19gYCwKICAgYGBfX2Zsb29yZGl2X19gYCwgYGBfX21vZF9fYGAsIGBgX19kaXZtb2RfX2BgLCBgYF9fbHNoaWZ0X19gYCwKICAgYGBfX3JzaGlmdF9fYGAsIGBgX19hbmRfX2BgLCBgYF9feG9yX19gYCwgYGBfX29yX19gYCwgYW5kIGBgX19wb3dfX2BgCiAqIE51bWVyaWMgY29udmVyc2lvbiBtZXRob2RzOiBgYF9fY29tcGxleF9fYGAsIGBgX19pbnRfX2BgLCBgYF9fZmxvYXRfX2BgCkBAIC0yMDA2LDcgKzIwNDgsNyBAQAogICAgICAgVGhlIG1vY2sgb2YgOm1ldGg6YH5pby5JT0Jhc2UucmVhZGAgY2hhbmdlZCB0byBjb25zdW1lICpyZWFkX2RhdGEqIHJhdGhlcgogICAgICAgdGhhbiByZXR1cm5pbmcgaXQgb24gZWFjaCBjYWxsLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNC40CisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgKnJlYWRfZGF0YSogaXMgbm93IHJlc2V0IG9uIGVhY2ggY2FsbCB0byB0aGUgKm1vY2sqLgogCiBVc2luZyA6ZnVuYzpgb3BlbmAgYXMgYSBjb250ZXh0IG1hbmFnZXIgaXMgYSBncmVhdCB3YXkgdG8gZW5zdXJlIHlvdXIgZmlsZSBoYW5kbGVzCkBAIC0yMDIzLDcgKzIwNjUsNyBAQAogZW5vdWdoIHRoYXQgYSBoZWxwZXIgZnVuY3Rpb24gaXMgdXNlZnVsLgogCiAgICAgPj4+IG0gPSBtb2NrX29wZW4oKQotICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbSwgY3JlYXRlPVRydWUpOgorICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbSk6CiAgICAgLi4uICAgICB3aXRoIG9wZW4oJ2ZvbycsICd3JykgYXMgaDoKICAgICAuLi4gICAgICAgICBoLndyaXRlKCdzb21lIHN0dWZmJykKICAgICAuLi4KQEAgLTIwMzgsNyArMjA4MCw3IEBACiAKIEFuZCBmb3IgcmVhZGluZyBmaWxlczoKIAotICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbW9ja19vcGVuKHJlYWRfZGF0YT0nYmliYmxlJyksIGNyZWF0ZT1UcnVlKSBhcyBtOgorICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbW9ja19vcGVuKHJlYWRfZGF0YT0nYmliYmxlJykpIGFzIG06CiAgICAgLi4uICAgICB3aXRoIG9wZW4oJ2ZvbycpIGFzIGg6CiAgICAgLi4uICAgICAgICAgcmVzdWx0ID0gaC5yZWFkKCkKICAgICAuLi4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdAppbmRleCBhODk2ZmMxLi45NjQ3YjRiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CkBAIC0yMTQsOSArMjE0LDE2IEBACiAKICAgIFN0b3AgdGhlIHRlc3QgcnVuIG9uIHRoZSBmaXJzdCBlcnJvciBvciBmYWlsdXJlLgogCisuLiBjbWRvcHRpb246OiAtLWxvY2FscworCisgICBTaG93IGxvY2FsIHZhcmlhYmxlcyBpbiB0cmFjZWJhY2tzLgorCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKICAgIFRoZSBjb21tYW5kLWxpbmUgb3B0aW9ucyBgYC1iYGAsIGBgLWNgYCBhbmQgYGAtZmBgIHdlcmUgYWRkZWQuCiAKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorICAgVGhlIGNvbW1hbmQtbGluZSBvcHRpb24gYGAtLWxvY2Fsc2BgLgorCiBUaGUgY29tbWFuZCBsaW5lIGNhbiBhbHNvIGJlIHVzZWQgZm9yIHRlc3QgZGlzY292ZXJ5LCBmb3IgcnVubmluZyBhbGwgb2YgdGhlCiB0ZXN0cyBpbiBhIHByb2plY3Qgb3IganVzdCBhIHN1YnNldC4KIApAQCAtNzU1LDggKzc2Miw5IEBACiAKICAgIC4uIF9hc3NlcnQtbWV0aG9kczoKIAotICAgVGhlIDpjbGFzczpgVGVzdENhc2VgIGNsYXNzIHByb3ZpZGVzIGEgbnVtYmVyIG9mIG1ldGhvZHMgdG8gY2hlY2sgZm9yIGFuZAotICAgcmVwb3J0IGZhaWx1cmVzLCBzdWNoIGFzOgorICAgVGhlIDpjbGFzczpgVGVzdENhc2VgIGNsYXNzIHByb3ZpZGVzIHNldmVyYWwgYXNzZXJ0IG1ldGhvZHMgdG8gY2hlY2sgZm9yIGFuZAorICAgcmVwb3J0IGZhaWx1cmVzLiAgVGhlIGZvbGxvd2luZyB0YWJsZSBsaXN0cyB0aGUgbW9zdCBjb21tb25seSB1c2VkIG1ldGhvZHMKKyAgIChzZWUgdGhlIHRhYmxlcyBiZWxvdyBmb3IgbW9yZSBhc3NlcnQgbWV0aG9kcyk6CiAKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rCiAgICB8IE1ldGhvZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENoZWNrcyB0aGF0ICAgICAgICAgICAgICAgICB8IE5ldyBpbiAgICAgICAgfApAQCAtODc3LDcgKzg4NSw3IEBACiAKIAogCi0gICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNoZWNrIHRoZSBwcm9kdWN0aW9uIG9mIGV4Y2VwdGlvbnMsIHdhcm5pbmdzIGFuZAorICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjaGVjayB0aGUgcHJvZHVjdGlvbiBvZiBleGNlcHRpb25zLCB3YXJuaW5ncywgYW5kCiAgICBsb2cgbWVzc2FnZXMgdXNpbmcgdGhlIGZvbGxvd2luZyBtZXRob2RzOgogCiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKQEAgLTE1NDEsNiArMTU0OSwyMCBAQAogICAgOmRhdGE6YHVuaXR0ZXN0LmRlZmF1bHRUZXN0TG9hZGVyYC4gIFVzaW5nIGEgc3ViY2xhc3Mgb3IgaW5zdGFuY2UsIGhvd2V2ZXIsCiAgICBhbGxvd3MgY3VzdG9taXphdGlvbiBvZiBzb21lIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0aWVzLgogCisgICA6Y2xhc3M6YFRlc3RMb2FkZXJgIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CisKKworICAgLi4gYXR0cmlidXRlOjogZXJyb3JzCisKKyAgICAgIEEgbGlzdCBvZiB0aGUgbm9uLWZhdGFsIGVycm9ycyBlbmNvdW50ZXJlZCB3aGlsZSBsb2FkaW5nIHRlc3RzLiBOb3QgcmVzZXQKKyAgICAgIGJ5IHRoZSBsb2FkZXIgYXQgYW55IHBvaW50LiBGYXRhbCBlcnJvcnMgYXJlIHNpZ25hbGxlZCBieSB0aGUgcmVsZXZhbnQKKyAgICAgIGEgbWV0aG9kIHJhaXNpbmcgYW4gZXhjZXB0aW9uIHRvIHRoZSBjYWxsZXIuIE5vbi1mYXRhbCBlcnJvcnMgYXJlIGFsc28KKyAgICAgIGluZGljYXRlZCBieSBhIHN5bnRoZXRpYyB0ZXN0IHRoYXQgd2lsbCByYWlzZSB0aGUgb3JpZ2luYWwgZXJyb3Igd2hlbgorICAgICAgcnVuLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAgICA6Y2xhc3M6YFRlc3RMb2FkZXJgIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CiAKIApAQCAtMTU1Niw3ICsxNTc4LDcgQEAKICAgICAgIGNhc2UgaXMgY3JlYXRlZCBmb3IgdGhhdCBtZXRob2QgaW5zdGVhZC4KIAogCi0gICAuLiBtZXRob2Q6OiBsb2FkVGVzdHNGcm9tTW9kdWxlKG1vZHVsZSkKKyAgIC4uIG1ldGhvZDo6IGxvYWRUZXN0c0Zyb21Nb2R1bGUobW9kdWxlLCBwYXR0ZXJuPU5vbmUpCiAKICAgICAgIFJldHVybiBhIHN1aXRlIG9mIGFsbCB0ZXN0cyBjYXNlcyBjb250YWluZWQgaW4gdGhlIGdpdmVuIG1vZHVsZS4gVGhpcwogICAgICAgbWV0aG9kIHNlYXJjaGVzICptb2R1bGUqIGZvciBjbGFzc2VzIGRlcml2ZWQgZnJvbSA6Y2xhc3M6YFRlc3RDYXNlYCBhbmQKQEAgLTE1NzMsMTEgKzE1OTUsMTggQEAKIAogICAgICAgSWYgYSBtb2R1bGUgcHJvdmlkZXMgYSBgYGxvYWRfdGVzdHNgYCBmdW5jdGlvbiBpdCB3aWxsIGJlIGNhbGxlZCB0bwogICAgICAgbG9hZCB0aGUgdGVzdHMuIFRoaXMgYWxsb3dzIG1vZHVsZXMgdG8gY3VzdG9taXplIHRlc3QgbG9hZGluZy4KLSAgICAgIFRoaXMgaXMgdGhlIGBsb2FkX3Rlc3RzIHByb3RvY29sYF8uCisgICAgICBUaGlzIGlzIHRoZSBgbG9hZF90ZXN0cyBwcm90b2NvbGBfLiAgVGhlICpwYXR0ZXJuKiBhcmd1bWVudCBpcyBwYXNzZWQgYXMKKyAgICAgIHRoZSB0aGlyZCBhcmd1bWVudCB0byBgYGxvYWRfdGVzdHNgYC4KIAogICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgICAgIFN1cHBvcnQgZm9yIGBgbG9hZF90ZXN0c2BgIGFkZGVkLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgVGhlIHVuZG9jdW1lbnRlZCBhbmQgdW5vZmZpY2lhbCAqdXNlX2xvYWRfdGVzdHMqIGRlZmF1bHQgYXJndW1lbnQgaXMKKyAgICAgICAgIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQsIGFsdGhvdWdoIGl0IGlzIHN0aWxsIGFjY2VwdGVkIGZvciBiYWNrd2FyZAorICAgICAgICAgY29tcGF0aWJpbGl0eS4gIFRoZSBtZXRob2QgYWxzbyBub3cgYWNjZXB0cyBhIGtleXdvcmQtb25seSBhcmd1bWVudAorICAgICAgICAgKnBhdHRlcm4qIHdoaWNoIGlzIHBhc3NlZCB0byBgYGxvYWRfdGVzdHNgYCBhcyB0aGUgdGhpcmQgYXJndW1lbnQuCisKIAogICAgLi4gbWV0aG9kOjogbG9hZFRlc3RzRnJvbU5hbWUobmFtZSwgbW9kdWxlPU5vbmUpCiAKQEAgLTE2MDMsNiArMTYzMiwxMiBAQAogCiAgICAgICBUaGUgbWV0aG9kIG9wdGlvbmFsbHkgcmVzb2x2ZXMgKm5hbWUqIHJlbGF0aXZlIHRvIHRoZSBnaXZlbiAqbW9kdWxlKi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIGFuIDpleGM6YEltcG9ydEVycm9yYCBvciA6ZXhjOmBBdHRyaWJ1dGVFcnJvcmAgb2NjdXJzIHdoaWxlIHRyYXZlcnNpbmcKKyAgICAgICpuYW1lKiB0aGVuIGEgc3ludGhldGljIHRlc3QgdGhhdCByYWlzZXMgdGhhdCBlcnJvciB3aGVuIHJ1biB3aWxsIGJlCisgICAgICByZXR1cm5lZC4gVGhlc2UgZXJyb3JzIGFyZSBpbmNsdWRlZCBpbiB0aGUgZXJyb3JzIGFjY3VtdWxhdGVkIGJ5CisgICAgICBzZWxmLmVycm9ycy4KKwogCiAgICAuLiBtZXRob2Q6OiBsb2FkVGVzdHNGcm9tTmFtZXMobmFtZXMsIG1vZHVsZT1Ob25lKQogCkBAIC0xNjI5LDE4ICsxNjY0LDIyIEBACiAgICAgICB0aGUgc3RhcnQgZGlyZWN0b3J5IGlzIG5vdCB0aGUgdG9wIGxldmVsIGRpcmVjdG9yeSB0aGVuIHRoZSB0b3AgbGV2ZWwKICAgICAgIGRpcmVjdG9yeSBtdXN0IGJlIHNwZWNpZmllZCBzZXBhcmF0ZWx5LgogCi0gICAgICBJZiBpbXBvcnRpbmcgYSBtb2R1bGUgZmFpbHMsIGZvciBleGFtcGxlIGR1ZSB0byBhIHN5bnRheCBlcnJvciwgdGhlbiB0aGlzCi0gICAgICB3aWxsIGJlIHJlY29yZGVkIGFzIGEgc2luZ2xlIGVycm9yIGFuZCBkaXNjb3Zlcnkgd2lsbCBjb250aW51ZS4gIElmIHRoZQotICAgICAgaW1wb3J0IGZhaWx1cmUgaXMgZHVlIHRvIDpleGM6YFNraXBUZXN0YCBiZWluZyByYWlzZWQsIGl0IHdpbGwgYmUgcmVjb3JkZWQKLSAgICAgIGFzIGEgc2tpcCBpbnN0ZWFkIG9mIGFuIGVycm9yLgorICAgICAgSWYgaW1wb3J0aW5nIGEgbW9kdWxlIGZhaWxzLCBmb3IgZXhhbXBsZSBkdWUgdG8gYSBzeW50YXggZXJyb3IsIHRoZW4KKyAgICAgIHRoaXMgd2lsbCBiZSByZWNvcmRlZCBhcyBhIHNpbmdsZSBlcnJvciBhbmQgZGlzY292ZXJ5IHdpbGwgY29udGludWUuICBJZgorICAgICAgdGhlIGltcG9ydCBmYWlsdXJlIGlzIGR1ZSB0byA6ZXhjOmBTa2lwVGVzdGAgYmVpbmcgcmFpc2VkLCBpdCB3aWxsIGJlCisgICAgICByZWNvcmRlZCBhcyBhIHNraXAgaW5zdGVhZCBvZiBhbiBlcnJvci4KIAotICAgICAgSWYgYSB0ZXN0IHBhY2thZ2UgbmFtZSAoZGlyZWN0b3J5IHdpdGggOmZpbGU6YF9faW5pdF9fLnB5YCkgbWF0Y2hlcyB0aGUKLSAgICAgIHBhdHRlcm4gdGhlbiB0aGUgcGFja2FnZSB3aWxsIGJlIGNoZWNrZWQgZm9yIGEgYGBsb2FkX3Rlc3RzYGAKLSAgICAgIGZ1bmN0aW9uLiBJZiB0aGlzIGV4aXN0cyB0aGVuIGl0IHdpbGwgYmUgY2FsbGVkIHdpdGggKmxvYWRlciosICp0ZXN0cyosCi0gICAgICAqcGF0dGVybiouCisgICAgICBJZiBhIHBhY2thZ2UgKGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYSBmaWxlIG5hbWVkIDpmaWxlOmBfX2luaXRfXy5weWApIGlzCisgICAgICBmb3VuZCwgdGhlIHBhY2thZ2Ugd2lsbCBiZSBjaGVja2VkIGZvciBhIGBgbG9hZF90ZXN0c2BgIGZ1bmN0aW9uLiBJZiB0aGlzCisgICAgICBleGlzdHMgdGhlbiBpdCB3aWxsIGJlIGNhbGxlZAorICAgICAgYGBwYWNrYWdlLmxvYWRfdGVzdHMobG9hZGVyLCB0ZXN0cywgcGF0dGVybilgYC4gVGVzdCBkaXNjb3ZlcnkgdGFrZXMgY2FyZQorICAgICAgdG8gZW5zdXJlIHRoYXQgYSBwYWNrYWdlIGlzIG9ubHkgY2hlY2tlZCBmb3IgdGVzdHMgb25jZSBkdXJpbmcgYW4KKyAgICAgIGludm9jYXRpb24sIGV2ZW4gaWYgdGhlIGxvYWRfdGVzdHMgZnVuY3Rpb24gaXRzZWxmIGNhbGxzCisgICAgICBgYGxvYWRlci5kaXNjb3ZlcmBgLgogCi0gICAgICBJZiBgYGxvYWRfdGVzdHNgYCBleGlzdHMgdGhlbiBkaXNjb3ZlcnkgZG9lcyAqbm90KiByZWN1cnNlIGludG8gdGhlIHBhY2thZ2UsCi0gICAgICBgYGxvYWRfdGVzdHNgYCBpcyByZXNwb25zaWJsZSBmb3IgbG9hZGluZyBhbGwgdGVzdHMgaW4gdGhlIHBhY2thZ2UuCisgICAgICBJZiBgYGxvYWRfdGVzdHNgYCBleGlzdHMgdGhlbiBkaXNjb3ZlcnkgZG9lcyAqbm90KiByZWN1cnNlIGludG8gdGhlCisgICAgICBwYWNrYWdlLCBgYGxvYWRfdGVzdHNgYCBpcyByZXNwb25zaWJsZSBmb3IgbG9hZGluZyBhbGwgdGVzdHMgaW4gdGhlCisgICAgICBwYWNrYWdlLgogCiAgICAgICBUaGUgcGF0dGVybiBpcyBkZWxpYmVyYXRlbHkgbm90IHN0b3JlZCBhcyBhIGxvYWRlciBhdHRyaWJ1dGUgc28gdGhhdAogICAgICAgcGFja2FnZXMgY2FuIGNvbnRpbnVlIGRpc2NvdmVyeSB0aGVtc2VsdmVzLiAqdG9wX2xldmVsX2RpciogaXMgc3RvcmVkIHNvCkBAIC0xNjU5LDYgKzE2OTgsMTEgQEAKICAgICAgICAgICAgdGhlIHNhbWUgZXZlbiBpZiB0aGUgdW5kZXJseWluZyBmaWxlIHN5c3RlbSdzIG9yZGVyaW5nIGlzIG5vdAogICAgICAgICAgICBkZXBlbmRlbnQgb24gZmlsZSBuYW1lLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgRm91bmQgcGFja2FnZXMgYXJlIG5vdyBjaGVja2VkIGZvciBgYGxvYWRfdGVzdHNgYCByZWdhcmRsZXNzIG9mCisgICAgICAgICB3aGV0aGVyIHRoZWlyIHBhdGggbWF0Y2hlcyAqcGF0dGVybiosIGJlY2F1c2UgaXQgaXMgaW1wb3NzaWJsZSBmb3IKKyAgICAgICAgIGEgcGFja2FnZSBuYW1lIHRvIG1hdGNoIHRoZSBkZWZhdWx0IHBhdHRlcm4uCisKIAogICAgVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIG9mIGEgOmNsYXNzOmBUZXN0TG9hZGVyYCBjYW4gYmUgY29uZmlndXJlZCBlaXRoZXIgYnkKICAgIHN1YmNsYXNzaW5nIG9yIGFzc2lnbm1lbnQgb24gYW4gaW5zdGFuY2U6CkBAIC0xNzQxLDEyICsxNzg1LDEwIEBACiAKICAgICAgIFNldCB0byBgYFRydWVgYCB3aGVuIHRoZSBleGVjdXRpb24gb2YgdGVzdHMgc2hvdWxkIHN0b3AgYnkgOm1ldGg6YHN0b3BgLgogCi0KICAgIC4uIGF0dHJpYnV0ZTo6IHRlc3RzUnVuCiAKICAgICAgIFRoZSB0b3RhbCBudW1iZXIgb2YgdGVzdHMgcnVuIHNvIGZhci4KIAotCiAgICAuLiBhdHRyaWJ1dGU6OiBidWZmZXIKIAogICAgICAgSWYgc2V0IHRvIHRydWUsIGBgc3lzLnN0ZG91dGBgIGFuZCBgYHN5cy5zdGRlcnJgYCB3aWxsIGJlIGJ1ZmZlcmVkIGluIGJldHdlZW4KQEAgLTE3NTYsNyArMTc5OCw2IEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCi0KICAgIC4uIGF0dHJpYnV0ZTo6IGZhaWxmYXN0CiAKICAgICAgIElmIHNldCB0byB0cnVlIDptZXRoOmBzdG9wYCB3aWxsIGJlIGNhbGxlZCBvbiB0aGUgZmlyc3QgZmFpbHVyZSBvciBlcnJvciwKQEAgLTE3NjQsNiArMTgwNSwxMSBAQAogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gYXR0cmlidXRlOjogdGJfbG9jYWxzCisKKyAgICAgIElmIHNldCB0byB0cnVlIHRoZW4gbG9jYWwgdmFyaWFibGVzIHdpbGwgYmUgc2hvd24gaW4gdHJhY2ViYWNrcy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKICAgIC4uIG1ldGhvZDo6IHdhc1N1Y2Nlc3NmdWwoKQogCkBAIC0xNzc0LDcgKzE4MjAsNiBAQAogICAgICAgICAgUmV0dXJucyBgYEZhbHNlYGAgaWYgdGhlcmUgd2VyZSBhbnkgOmF0dHI6YHVuZXhwZWN0ZWRTdWNjZXNzZXNgCiAgICAgICAgICBmcm9tIHRlc3RzIG1hcmtlZCB3aXRoIHRoZSA6ZnVuYzpgZXhwZWN0ZWRGYWlsdXJlYCBkZWNvcmF0b3IuCiAKLQogICAgLi4gbWV0aG9kOjogc3RvcCgpCiAKICAgICAgIFRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgdG8gc2lnbmFsIHRoYXQgdGhlIHNldCBvZiB0ZXN0cyBiZWluZyBydW4gc2hvdWxkCkBAIC0xOTA2LDEyICsxOTUxLDE0IEBACiAKIAogLi4gY2xhc3M6OiBUZXh0VGVzdFJ1bm5lcihzdHJlYW09Tm9uZSwgZGVzY3JpcHRpb25zPVRydWUsIHZlcmJvc2l0eT0xLCBmYWlsZmFzdD1GYWxzZSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXI9RmFsc2UsIHJlc3VsdGNsYXNzPU5vbmUsIHdhcm5pbmdzPU5vbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcj1GYWxzZSwgcmVzdWx0Y2xhc3M9Tm9uZSwgd2FybmluZ3M9Tm9uZSwgKiwgdGJfbG9jYWxzPUZhbHNlKQogCiAgICBBIGJhc2ljIHRlc3QgcnVubmVyIGltcGxlbWVudGF0aW9uIHRoYXQgb3V0cHV0cyByZXN1bHRzIHRvIGEgc3RyZWFtLiBJZiAqc3RyZWFtKgogICAgaXMgYGBOb25lYGAsIHRoZSBkZWZhdWx0LCA6ZGF0YTpgc3lzLnN0ZGVycmAgaXMgdXNlZCBhcyB0aGUgb3V0cHV0IHN0cmVhbS4gVGhpcyBjbGFzcwogICAgaGFzIGEgZmV3IGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzLCBidXQgaXMgZXNzZW50aWFsbHkgdmVyeSBzaW1wbGUuICBHcmFwaGljYWwKLSAgIGFwcGxpY2F0aW9ucyB3aGljaCBydW4gdGVzdCBzdWl0ZXMgc2hvdWxkIHByb3ZpZGUgYWx0ZXJuYXRlIGltcGxlbWVudGF0aW9ucy4KKyAgIGFwcGxpY2F0aW9ucyB3aGljaCBydW4gdGVzdCBzdWl0ZXMgc2hvdWxkIHByb3ZpZGUgYWx0ZXJuYXRlIGltcGxlbWVudGF0aW9ucy4gU3VjaAorICAgaW1wbGVtZW50YXRpb25zIHNob3VsZCBhY2NlcHQgYGAqKmt3YXJnc2BgIGFzIHRoZSBpbnRlcmZhY2UgdG8gY29uc3RydWN0IHJ1bm5lcnMKKyAgIGNoYW5nZXMgd2hlbiBmZWF0dXJlcyBhcmUgYWRkZWQgdG8gdW5pdHRlc3QuCiAKICAgIEJ5IGRlZmF1bHQgdGhpcyBydW5uZXIgc2hvd3MgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYCwKICAgIDpleGM6YFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmdgLCA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIGFuZApAQCAtMTkzMCw2ICsxOTc3LDkgQEAKICAgICAgIFRoZSBkZWZhdWx0IHN0cmVhbSBpcyBzZXQgdG8gOmRhdGE6YHN5cy5zdGRlcnJgIGF0IGluc3RhbnRpYXRpb24gdGltZSByYXRoZXIKICAgICAgIHRoYW4gaW1wb3J0IHRpbWUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCB0aGUgdGJfbG9jYWxzIHBhcmFtZXRlci4KKwogICAgLi4gbWV0aG9kOjogX21ha2VSZXN1bHQoKQogCiAgICAgICBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBpbnN0YW5jZSBvZiBgYFRlc3RSZXN1bHRgYCB1c2VkIGJ5IDptZXRoOmBydW5gLgpAQCAtMjAyNyw3ICsyMDc3LDEwIEBACiBJZiBhIHRlc3QgbW9kdWxlIGRlZmluZXMgYGBsb2FkX3Rlc3RzYGAgaXQgd2lsbCBiZSBjYWxsZWQgYnkKIDptZXRoOmBUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGVgIHdpdGggdGhlIGZvbGxvd2luZyBhcmd1bWVudHM6OgogCi0gICAgbG9hZF90ZXN0cyhsb2FkZXIsIHN0YW5kYXJkX3Rlc3RzLCBOb25lKQorICAgIGxvYWRfdGVzdHMobG9hZGVyLCBzdGFuZGFyZF90ZXN0cywgcGF0dGVybikKKword2hlcmUgKnBhdHRlcm4qIGlzIHBhc3NlZCBzdHJhaWdodCB0aHJvdWdoIGZyb20gYGBsb2FkVGVzdHNGcm9tTW9kdWxlYGAuICBJdAorZGVmYXVsdHMgdG8gYGBOb25lYGAuCiAKIEl0IHNob3VsZCByZXR1cm4gYSA6Y2xhc3M6YFRlc3RTdWl0ZWAuCiAKQEAgLTIwNDksMjEgKzIxMDIsMTIgQEAKICAgICAgICAgICAgIHN1aXRlLmFkZFRlc3RzKHRlc3RzKQogICAgICAgICByZXR1cm4gc3VpdGUKIAotSWYgZGlzY292ZXJ5IGlzIHN0YXJ0ZWQsIGVpdGhlciBmcm9tIHRoZSBjb21tYW5kIGxpbmUgb3IgYnkgY2FsbGluZwotOm1ldGg6YFRlc3RMb2FkZXIuZGlzY292ZXJgLCB3aXRoIGEgcGF0dGVybiB0aGF0IG1hdGNoZXMgYSBwYWNrYWdlCi1uYW1lIHRoZW4gdGhlIHBhY2thZ2UgOmZpbGU6YF9faW5pdF9fLnB5YCB3aWxsIGJlIGNoZWNrZWQgZm9yIGBgbG9hZF90ZXN0c2BgLgotCi0uLiBub3RlOjoKLQotICAgVGhlIGRlZmF1bHQgcGF0dGVybiBpcyBgYCd0ZXN0Ki5weSdgYC4gVGhpcyBtYXRjaGVzIGFsbCBQeXRob24gZmlsZXMKLSAgIHRoYXQgc3RhcnQgd2l0aCBgYCd0ZXN0J2BgIGJ1dCAqd29uJ3QqIG1hdGNoIGFueSB0ZXN0IGRpcmVjdG9yaWVzLgotCi0gICBBIHBhdHRlcm4gbGlrZSBgYCd0ZXN0KidgYCB3aWxsIG1hdGNoIHRlc3QgcGFja2FnZXMgYXMgd2VsbCBhcwotICAgbW9kdWxlcy4KLQotSWYgdGhlIHBhY2thZ2UgOmZpbGU6YF9faW5pdF9fLnB5YCBkZWZpbmVzIGBgbG9hZF90ZXN0c2BgIHRoZW4gaXQgd2lsbCBiZQotY2FsbGVkIGFuZCBkaXNjb3Zlcnkgbm90IGNvbnRpbnVlZCBpbnRvIHRoZSBwYWNrYWdlLiBgYGxvYWRfdGVzdHNgYAotaXMgY2FsbGVkIHdpdGggdGhlIGZvbGxvd2luZyBhcmd1bWVudHM6OgorSWYgZGlzY292ZXJ5IGlzIHN0YXJ0ZWQgaW4gYSBkaXJlY3RvcnkgY29udGFpbmluZyBhIHBhY2thZ2UsIGVpdGhlciBmcm9tIHRoZQorY29tbWFuZCBsaW5lIG9yIGJ5IGNhbGxpbmcgOm1ldGg6YFRlc3RMb2FkZXIuZGlzY292ZXJgLCB0aGVuIHRoZSBwYWNrYWdlCis6ZmlsZTpgX19pbml0X18ucHlgIHdpbGwgYmUgY2hlY2tlZCBmb3IgYGBsb2FkX3Rlc3RzYGAuICBJZiB0aGF0IGZ1bmN0aW9uIGRvZXMKK25vdCBleGlzdCwgZGlzY292ZXJ5IHdpbGwgcmVjdXJzZSBpbnRvIHRoZSBwYWNrYWdlIGFzIHRob3VnaCBpdCB3ZXJlIGp1c3QKK2Fub3RoZXIgZGlyZWN0b3J5LiAgT3RoZXJ3aXNlLCBkaXNjb3Zlcnkgb2YgdGhlIHBhY2thZ2UncyB0ZXN0cyB3aWxsIGJlIGxlZnQgdXAKK3RvIGBgbG9hZF90ZXN0c2BgIHdoaWNoIGlzIGNhbGxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgYXJndW1lbnRzOjoKIAogICAgIGxvYWRfdGVzdHMobG9hZGVyLCBzdGFuZGFyZF90ZXN0cywgcGF0dGVybikKIApAQCAtMjA4Miw2ICsyMTI2LDExIEBACiAgICAgICAgIHN0YW5kYXJkX3Rlc3RzLmFkZFRlc3RzKHBhY2thZ2VfdGVzdHMpCiAgICAgICAgIHJldHVybiBzdGFuZGFyZF90ZXN0cwogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgRGlzY292ZXJ5IG5vIGxvbmdlciBjaGVja3MgcGFja2FnZSBuYW1lcyBmb3IgbWF0Y2hpbmcgKnBhdHRlcm4qIGR1ZSB0byB0aGUKKyAgIGltcG9zc2liaWxpdHkgb2YgcGFja2FnZSBuYW1lcyBtYXRjaGluZyB0aGUgZGVmYXVsdCBwYXR0ZXJuLgorCisKIAogQ2xhc3MgYW5kIE1vZHVsZSBGaXh0dXJlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QKaW5kZXggYWMwNGY5OS4uMjFjODJmNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdAorKysgYi9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0CkBAIC0yNzAsNiArMjcwLDExIEBACiAgICA6ZnVuYzpgdXJsdW5zcGxpdGAsIHJlbW92aW5nIHBvc3NpYmxlICpzY2hlbWUqIGFuZCAqbmV0bG9jKiBwYXJ0cy4KIAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorCisgICAgICBCZWhhdmlvdXIgdXBkYXRlZCB0byBtYXRjaCB0aGUgc2VtYW50aWNzIGRlZmluZWQgaW4gOnJmYzpgMzk4NmAuCisKKwogLi4gZnVuY3Rpb246OiB1cmxkZWZyYWcodXJsKQogCiAgICBJZiAqdXJsKiBjb250YWlucyBhIGZyYWdtZW50IGlkZW50aWZpZXIsIHJldHVybiBhIG1vZGlmaWVkIHZlcnNpb24gb2YgKnVybCoKQEAgLTUxNiw3ICs1MjEsOCBAQAogICAgRXhhbXBsZTogYGB1bnF1b3RlX3RvX2J5dGVzKCdhJTI2JUVGJylgYCB5aWVsZHMgYGBiJ2EmXHhlZidgYC4KIAogCi0uLiBmdW5jdGlvbjo6IHVybGVuY29kZShxdWVyeSwgZG9zZXE9RmFsc2UsIHNhZmU9JycsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKQorLi4gZnVuY3Rpb246OiB1cmxlbmNvZGUocXVlcnksIGRvc2VxPUZhbHNlLCBzYWZlPScnLCBlbmNvZGluZz1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9Tm9uZSwgcXVvdGVfdmlhPXF1b3RlX3BsdXMpCiAKICAgIENvbnZlcnQgYSBtYXBwaW5nIG9iamVjdCBvciBhIHNlcXVlbmNlIG9mIHR3by1lbGVtZW50IHR1cGxlcywgd2hpY2ggbWF5CiAgICBjb250YWluIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzLCB0byBhIHBlcmNlbnQtZW5jb2RlZCBBU0NJSQpAQCAtNTI2LDggKzUzMiwxNiBAQAogICAgOmV4YzpgVHlwZUVycm9yYC4KIAogICAgVGhlIHJlc3VsdGluZyBzdHJpbmcgaXMgYSBzZXJpZXMgb2YgYGBrZXk9dmFsdWVgYCBwYWlycyBzZXBhcmF0ZWQgYnkgYGAnJidgYAotICAgY2hhcmFjdGVycywgd2hlcmUgYm90aCAqa2V5KiBhbmQgKnZhbHVlKiBhcmUgcXVvdGVkIHVzaW5nIDpmdW5jOmBxdW90ZV9wbHVzYAotICAgYWJvdmUuIFdoZW4gYSBzZXF1ZW5jZSBvZiB0d28tZWxlbWVudCB0dXBsZXMgaXMgdXNlZCBhcyB0aGUgKnF1ZXJ5KgorICAgY2hhcmFjdGVycywgd2hlcmUgYm90aCAqa2V5KiBhbmQgKnZhbHVlKiBhcmUgcXVvdGVkIHVzaW5nIHRoZSAqcXVvdGVfdmlhKgorICAgZnVuY3Rpb24uICBCeSBkZWZhdWx0LCA6ZnVuYzpgcXVvdGVfcGx1c2AgaXMgdXNlZCB0byBxdW90ZSB0aGUgdmFsdWVzLCB3aGljaAorICAgbWVhbnMgc3BhY2VzIGFyZSBxdW90ZWQgYXMgYSBgYCcrJ2BgIGNoYXJhY3RlciBhbmQgJy8nIGNoYXJhY3RlcnMgYXJlCisgICBlbmNvZGVkIGFzIGBgJTJGYGAsIHdoaWNoIGZvbGxvd3MgdGhlIHN0YW5kYXJkIGZvciBHRVQgcmVxdWVzdHMKKyAgIChgYGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGBgKS4gIEFuIGFsdGVybmF0ZSBmdW5jdGlvbiB0aGF0IGNhbiBiZQorICAgcGFzc2VkIGFzICpxdW90ZV92aWEqIGlzIDpmdW5jOmBxdW90ZWAsIHdoaWNoIHdpbGwgZW5jb2RlIHNwYWNlcyBhcyBgYCUyMGBgCisgICBhbmQgbm90IGVuY29kZSAnLycgY2hhcmFjdGVycy4gIEZvciBtYXhpbXVtIGNvbnRyb2wgb2Ygd2hhdCBpcyBxdW90ZWQsIHVzZQorICAgYGBxdW90ZWBgIGFuZCBzcGVjaWZ5IGEgdmFsdWUgZm9yICpzYWZlKi4KKworICAgV2hlbiBhIHNlcXVlbmNlIG9mIHR3by1lbGVtZW50IHR1cGxlcyBpcyB1c2VkIGFzIHRoZSAqcXVlcnkqCiAgICBhcmd1bWVudCwgdGhlIGZpcnN0IGVsZW1lbnQgb2YgZWFjaCB0dXBsZSBpcyBhIGtleSBhbmQgdGhlIHNlY29uZCBpcyBhCiAgICB2YWx1ZS4gVGhlIHZhbHVlIGVsZW1lbnQgaW4gaXRzZWxmIGNhbiBiZSBhIHNlcXVlbmNlIGFuZCBpbiB0aGF0IGNhc2UsIGlmCiAgICB0aGUgb3B0aW9uYWwgcGFyYW1ldGVyICpkb3NlcSogaXMgZXZhbHVhdGVzIHRvICpUcnVlKiwgaW5kaXZpZHVhbApAQCAtNTM2LDcgKzU1MCw3IEBACiAgICBzdHJpbmcgd2lsbCBtYXRjaCB0aGUgb3JkZXIgb2YgcGFyYW1ldGVyIHR1cGxlcyBpbiB0aGUgc2VxdWVuY2UuCiAKICAgIFRoZSAqc2FmZSosICplbmNvZGluZyosIGFuZCAqZXJyb3JzKiBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgZG93biB0bwotICAgOmZ1bmM6YHF1b3RlX3BsdXNgICh0aGUgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogcGFyYW1ldGVycyBhcmUgb25seSBwYXNzZWQKKyAgICpxdW90ZV92aWEqICh0aGUgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogcGFyYW1ldGVycyBhcmUgb25seSBwYXNzZWQKICAgIHdoZW4gYSBxdWVyeSBlbGVtZW50IGlzIGEgOmNsYXNzOmBzdHJgKS4KIAogICAgVG8gcmV2ZXJzZSB0aGlzIGVuY29kaW5nIHByb2Nlc3MsIDpmdW5jOmBwYXJzZV9xc2AgYW5kIDpmdW5jOmBwYXJzZV9xc2xgIGFyZQpAQCAtNTQ4LDYgKzU2Miw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgUXVlcnkgcGFyYW1ldGVyIHN1cHBvcnRzIGJ5dGVzIGFuZCBzdHJpbmcgb2JqZWN0cy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAgICAqcXVvdGVfdmlhKiBwYXJhbWV0ZXIuCisKIAogLi4gc2VlYWxzbzo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAppbmRleCA0ZTU5NWRlLi42ZmRlMDM4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CkBAIC0xMTYsNiArMTE2LDcgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjMKICAgICAgICpjb250ZXh0KiB3YXMgYWRkZWQuCiAKKwogLi4gZnVuY3Rpb246OiBpbnN0YWxsX29wZW5lcihvcGVuZXIpCiAKICAgIEluc3RhbGwgYW4gOmNsYXNzOmBPcGVuZXJEaXJlY3RvcmAgaW5zdGFuY2UgYXMgdGhlIGRlZmF1bHQgZ2xvYmFsIG9wZW5lci4KQEAgLTI4MSwxMyArMjgyLDM3IEBACiAgICBmaXRzLgogCiAKKy4uIGNsYXNzOjogSFRUUFBhc3N3b3JkTWdyV2l0aFByaW9yQXV0aCgpCisKKyAgIEEgdmFyaWFudCBvZiA6Y2xhc3M6YEhUVFBQYXNzd29yZE1ncldpdGhEZWZhdWx0UmVhbG1gIHRoYXQgYWxzbyBoYXMgYQorICAgZGF0YWJhc2Ugb2YgYGB1cmkgLT4gaXNfYXV0aGVudGljYXRlZGBgIG1hcHBpbmdzLiAgQ2FuIGJlIHVzZWQgYnkgYQorICAgQmFzaWNBdXRoIGhhbmRsZXIgdG8gZGV0ZXJtaW5lIHdoZW4gdG8gc2VuZCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscworICAgaW1tZWRpYXRlbHkgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBhIGBgNDAxYGAgcmVzcG9uc2UgZmlyc3QuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGNsYXNzOjogQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyKHBhc3N3b3JkX21ncj1Ob25lKQogCiAgICBUaGlzIGlzIGEgbWl4aW4gY2xhc3MgdGhhdCBoZWxwcyB3aXRoIEhUVFAgYXV0aGVudGljYXRpb24sIGJvdGggdG8gdGhlIHJlbW90ZQogICAgaG9zdCBhbmQgdG8gYSBwcm94eS4gKnBhc3N3b3JkX21nciosIGlmIGdpdmVuLCBzaG91bGQgYmUgc29tZXRoaW5nIHRoYXQgaXMKICAgIGNvbXBhdGlibGUgd2l0aCA6Y2xhc3M6YEhUVFBQYXNzd29yZE1ncmA7IHJlZmVyIHRvIHNlY3Rpb24KICAgIDpyZWY6YGh0dHAtcGFzc3dvcmQtbWdyYCBmb3IgaW5mb3JtYXRpb24gb24gdGhlIGludGVyZmFjZSB0aGF0IG11c3QgYmUKLSAgIHN1cHBvcnRlZC4KKyAgIHN1cHBvcnRlZC4gIElmICpwYXNzd2RfbWdyKiBhbHNvIHByb3ZpZGVzIGBgaXNfYXV0aGVudGljYXRlZGBgIGFuZAorICAgYGB1cGRhdGVfYXV0aGVudGljYXRlZGBgIG1ldGhvZHMgKHNlZQorICAgOnJlZjpgaHR0cC1wYXNzd29yZC1tZ3Itd2l0aC1wcmlvci1hdXRoYCksIHRoZW4gdGhlIGhhbmRsZXIgd2lsbCB1c2UgdGhlCisgICBgYGlzX2F1dGhlbnRpY2F0ZWRgYCByZXN1bHQgZm9yIGEgZ2l2ZW4gVVJJIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0bworICAgc2VuZCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyB3aXRoIHRoZSByZXF1ZXN0LiAgSWYgYGBpc19hdXRoZW50aWNhdGVkYGAKKyAgIHJldHVybnMgYGBUcnVlYGAgZm9yIHRoZSBVUkksIGNyZWRlbnRpYWxzIGFyZSBzZW50LiAgSWYgYGBpc19hdXRoZW50aWNhdGVkYGAKKyAgIGlzIGBgRmFsc2VgYCwgY3JlZGVudGlhbHMgYXJlIG5vdCBzZW50LCBhbmQgdGhlbiBpZiBhIGBgNDAxYGAgcmVzcG9uc2UgaXMKKyAgIHJlY2VpdmVkIHRoZSByZXF1ZXN0IGlzIHJlLXNlbnQgd2l0aCB0aGUgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuICBJZgorICAgYXV0aGVudGljYXRpb24gc3VjY2VlZHMsIGBgdXBkYXRlX2F1dGhlbnRpY2F0ZWRgYCBpcyBjYWxsZWQgdG8gc2V0CisgICBgYGlzX2F1dGhlbnRpY2F0ZWRgYCBgYFRydWVgYCBmb3IgdGhlIFVSSSwgc28gdGhhdCBzdWJzZXF1ZW50IHJlcXVlc3RzIHRvCisgICB0aGUgVVJJIG9yIGFueSBvZiBpdHMgc3VwZXItVVJJcyB3aWxsIGF1dG9tYXRpY2FsbHkgaW5jbHVkZSB0aGUKKyAgIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIEFkZGVkIGBgaXNfYXV0aGVudGljYXRlZGBgIHN1cHBvcnQuCiAKIAogLi4gY2xhc3M6OiBIVFRQQmFzaWNBdXRoSGFuZGxlcihwYXNzd29yZF9tZ3I9Tm9uZSkKQEAgLTgzOSw2ICs4NjQsNDIgQEAKICAgIHNlYXJjaGVkIGlmIHRoZSBnaXZlbiAqcmVhbG0qIGhhcyBubyBtYXRjaGluZyB1c2VyL3Bhc3N3b3JkLgogCiAKKy4uIF9odHRwLXBhc3N3b3JkLW1nci13aXRoLXByaW9yLWF1dGg6CisKK0hUVFBQYXNzd29yZE1ncldpdGhQcmlvckF1dGggT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgcGFzc3dvcmQgbWFuYWdlciBleHRlbmRzIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyV2l0aERlZmF1bHRSZWFsbWAgdG8gc3VwcG9ydAordHJhY2tpbmcgVVJJcyBmb3Igd2hpY2ggYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMgc2hvdWxkIGFsd2F5cyBiZSBzZW50LgorCisKKy4uIG1ldGhvZDo6IEhUVFBQYXNzd29yZE1ncldpdGhQcmlvckF1dGguYWRkX3Bhc3N3b3JkKHJlYWxtLCB1cmksIHVzZXIsIFwKKyAgICAgICAgICAgIHBhc3N3ZCwgaXNfYXV0aGVudGljYXRlZD1GYWxzZSkKKworICAgKnJlYWxtKiwgKnVyaSosICp1c2VyKiwgKnBhc3N3ZCogYXJlIGFzIGZvcgorICAgOm1ldGg6YEhUVFBQYXNzd29yZE1nci5hZGRfcGFzc3dvcmRgLiAgKmlzX2F1dGhlbnRpY2F0ZWQqIHNldHMgdGhlIGluaXRpYWwKKyAgIHZhbHVlIG9mIHRoZSBgYGlzX2F1dGhlbnRpY2F0ZWRgYCBmbGFnIGZvciB0aGUgZ2l2ZW4gVVJJIG9yIGxpc3Qgb2YgVVJJcy4KKyAgIElmICppc19hdXRoZW50aWNhdGVkKiBpcyBzcGVjaWZpZWQgYXMgYGBUcnVlYGAsICpyZWFsbSogaXMgaWdub3JlZC4KKworCisuLiBtZXRob2Q6OiBIVFRQUGFzc3dvcmRNZ3IuZmluZF91c2VyX3Bhc3N3b3JkKHJlYWxtLCBhdXRodXJpKQorCisgICBTYW1lIGFzIGZvciA6Y2xhc3M6YEhUVFBQYXNzd29yZE1ncldpdGhEZWZhdWx0UmVhbG1gIG9iamVjdHMKKworCisuLiBtZXRob2Q6OiBIVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoLnVwZGF0ZV9hdXRoZW50aWNhdGVkKHNlbGYsIHVyaSwgXAorICAgICAgICAgICAgaXNfYXV0aGVudGljYXRlZD1GYWxzZSkKKworICAgVXBkYXRlIHRoZSBgYGlzX2F1dGhlbnRpY2F0ZWRgYCBmbGFnIGZvciB0aGUgZ2l2ZW4gKnVyaSogb3IgbGlzdAorICAgb2YgVVJJcy4KKworCisuLiBtZXRob2Q6OiBIVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoLmlzX2F1dGhlbnRpY2F0ZWQoc2VsZiwgYXV0aHVyaSkKKworICAgUmV0dXJucyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYGBpc19hdXRoZW50aWNhdGVkYGAgZmxhZyBmb3IKKyAgIHRoZSBnaXZlbiBVUkkuCisKKwogLi4gX2Fic3RyYWN0LWJhc2ljLWF1dGgtaGFuZGxlcjoKIAogQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyIE9iamVjdHMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dlYWtyZWYucnN0IGIvRG9jL2xpYnJhcnkvd2Vha3JlZi5yc3QKaW5kZXggY2M4ODNiMS4uMmUxNjA3NyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd2Vha3JlZi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd2Vha3JlZi5yc3QKQEAgLTI1OCw3ICsyNTgsNyBAQAogICAgYXJlIGNhbGxlZCBpbiByZXZlcnNlIG9yZGVyIG9mIGNyZWF0aW9uLgogCiAgICBBIGZpbmFsaXplciB3aWxsIG5ldmVyIGludm9rZSBpdHMgY2FsbGJhY2sgZHVyaW5nIHRoZSBsYXRlciBwYXJ0IG9mCi0gICB0aGUgaW50ZXJwcmV0ZXIgc2h1dGRvd24gd2hlbiBtb2R1bGUgZ2xvYmFscyBhcmUgbGlhYmxlIHRvIGhhdmUKKyAgIHRoZSA6dGVybTpgaW50ZXJwcmV0ZXIgc2h1dGRvd25gIHdoZW4gbW9kdWxlIGdsb2JhbHMgYXJlIGxpYWJsZSB0byBoYXZlCiAgICBiZWVuIHJlcGxhY2VkIGJ5IDpjb25zdDpgTm9uZWAuCiAKICAgIC4uIG1ldGhvZDo6IF9fY2FsbF9fKCkKQEAgLTUyNyw4ICs1MjcsOCBAQAogCiBTdGFydGluZyB3aXRoIFB5dGhvbiAzLjQsIDptZXRoOmBfX2RlbF9fYCBtZXRob2RzIG5vIGxvbmdlciBwcmV2ZW50CiByZWZlcmVuY2UgY3ljbGVzIGZyb20gYmVpbmcgZ2FyYmFnZSBjb2xsZWN0ZWQsIGFuZCBtb2R1bGUgZ2xvYmFscyBhcmUKLW5vIGxvbmdlciBmb3JjZWQgdG8gOmNvbnN0OmBOb25lYCBkdXJpbmcgaW50ZXJwcmV0ZXIgc2h1dGRvd24uIFNvIHRoaXMKLWNvZGUgc2hvdWxkIHdvcmsgd2l0aG91dCBhbnkgaXNzdWVzIG9uIENQeXRob24uCitubyBsb25nZXIgZm9yY2VkIHRvIDpjb25zdDpgTm9uZWAgZHVyaW5nIDp0ZXJtOmBpbnRlcnByZXRlciBzaHV0ZG93bmAuCitTbyB0aGlzIGNvZGUgc2hvdWxkIHdvcmsgd2l0aG91dCBhbnkgaXNzdWVzIG9uIENQeXRob24uCiAKIEhvd2V2ZXIsIGhhbmRsaW5nIG9mIDptZXRoOmBfX2RlbF9fYCBtZXRob2RzIGlzIG5vdG9yaW91c2x5IGltcGxlbWVudGF0aW9uCiBzcGVjaWZpYywgc2luY2UgaXQgZGVwZW5kcyBvbiBpbnRlcm5hbCBkZXRhaWxzIG9mIHRoZSBpbnRlcnByZXRlcidzIGdhcmJhZ2UKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dzZ2lyZWYucnN0IGIvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QKaW5kZXggNGVkOTQ1NC4uOGMwOTFmNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QKQEAgLTE4NCwxMCArMTg0LDExIEBACiBtYW5pcHVsYXRpb24gb2YgV1NHSSByZXNwb25zZSBoZWFkZXJzIHVzaW5nIGEgbWFwcGluZy1saWtlIGludGVyZmFjZS4KIAogCi0uLiBjbGFzczo6IEhlYWRlcnMoaGVhZGVycykKKy4uIGNsYXNzOjogSGVhZGVycyhbaGVhZGVyc10pCiAKICAgIENyZWF0ZSBhIG1hcHBpbmctbGlrZSBvYmplY3Qgd3JhcHBpbmcgKmhlYWRlcnMqLCB3aGljaCBtdXN0IGJlIGEgbGlzdCBvZiBoZWFkZXIKLSAgIG5hbWUvdmFsdWUgdHVwbGVzIGFzIGRlc2NyaWJlZCBpbiA6cGVwOmAzMzMzYC4KKyAgIG5hbWUvdmFsdWUgdHVwbGVzIGFzIGRlc2NyaWJlZCBpbiA6cGVwOmAzMzMzYC4gVGhlIGRlZmF1bHQgdmFsdWUgb2YgKmhlYWRlcnMqIGlzCisgICBhbiBlbXB0eSBsaXN0LgogCiAgICA6Y2xhc3M6YEhlYWRlcnNgIG9iamVjdHMgc3VwcG9ydCB0eXBpY2FsIG1hcHBpbmcgb3BlcmF0aW9ucyBpbmNsdWRpbmcKICAgIDptZXRoOmBfX2dldGl0ZW1fX2AsIDptZXRoOmBnZXRgLCA6bWV0aDpgX19zZXRpdGVtX19gLCA6bWV0aDpgc2V0ZGVmYXVsdGAsCkBAIC0yNTEsNiArMjUyLDEwIEBACiAgICAgICAgICBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iYnVkLmdpZiIKIAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgKmhlYWRlcnMqIHBhcmFtZXRlciBpcyBvcHRpb25hbC4KKworCiA6bW9kOmB3c2dpcmVmLnNpbXBsZV9zZXJ2ZXJgIC0tIGEgc2ltcGxlIFdTR0kgSFRUUCBzZXJ2ZXIKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWwuc2F4LnJlYWRlci5yc3QgYi9Eb2MvbGlicmFyeS94bWwuc2F4LnJlYWRlci5yc3QKaW5kZXggM2FiNjA2My4uMzFjYTI2MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1sLnNheC5yZWFkZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbC5zYXgucmVhZGVyLnJzdApAQCAtMTAwLDggKzEwMCwxMCBAQAogICAgc3lzdGVtIGlkZW50aWZpZXIgKGEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBpbnB1dCBzb3VyY2UgLS0gdHlwaWNhbGx5IGEgZmlsZQogICAgbmFtZSBvciBhbiBVUkwpLCBhIGZpbGUtbGlrZSBvYmplY3QsIG9yIGFuIDpjbGFzczpgSW5wdXRTb3VyY2VgIG9iamVjdC4gV2hlbgogICAgOm1ldGg6YHBhcnNlYCByZXR1cm5zLCB0aGUgaW5wdXQgaXMgY29tcGxldGVseSBwcm9jZXNzZWQsIGFuZCB0aGUgcGFyc2VyIG9iamVjdAotICAgY2FuIGJlIGRpc2NhcmRlZCBvciByZXNldC4gQXMgYSBsaW1pdGF0aW9uLCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5Ci0gICBhY2NlcHRzIGJ5dGUgc3RyZWFtczsgcHJvY2Vzc2luZyBvZiBjaGFyYWN0ZXIgc3RyZWFtcyBpcyBmb3IgZnVydGhlciBzdHVkeS4KKyAgIGNhbiBiZSBkaXNjYXJkZWQgb3IgcmVzZXQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IG9mIGNoYXJhY3RlciBzdHJlYW1zLgogCiAKIC4uIG1ldGhvZDo6IFhNTFJlYWRlci5nZXRDb250ZW50SGFuZGxlcigpCkBAIC0yODgsOCArMjkwLDcgQEAKIAogLi4gbWV0aG9kOjogSW5wdXRTb3VyY2Uuc2V0Qnl0ZVN0cmVhbShieXRlZmlsZSkKIAotICAgU2V0IHRoZSBieXRlIHN0cmVhbSAoYSBQeXRob24gZmlsZS1saWtlIG9iamVjdCB3aGljaCBkb2VzIG5vdCBwZXJmb3JtCi0gICBieXRlLXRvLWNoYXJhY3RlciBjb252ZXJzaW9uKSBmb3IgdGhpcyBpbnB1dCBzb3VyY2UuCisgICBTZXQgdGhlIGJ5dGUgc3RyZWFtIChhIDp0ZXJtOmBiaW5hcnkgZmlsZWApIGZvciB0aGlzIGlucHV0IHNvdXJjZS4KIAogICAgVGhlIFNBWCBwYXJzZXIgd2lsbCBpZ25vcmUgdGhpcyBpZiB0aGVyZSBpcyBhbHNvIGEgY2hhcmFjdGVyIHN0cmVhbSBzcGVjaWZpZWQsCiAgICBidXQgaXQgd2lsbCB1c2UgYSBieXRlIHN0cmVhbSBpbiBwcmVmZXJlbmNlIHRvIG9wZW5pbmcgYSBVUkkgY29ubmVjdGlvbiBpdHNlbGYuCkBAIC0zMDgsOCArMzA5LDcgQEAKIAogLi4gbWV0aG9kOjogSW5wdXRTb3VyY2Uuc2V0Q2hhcmFjdGVyU3RyZWFtKGNoYXJmaWxlKQogCi0gICBTZXQgdGhlIGNoYXJhY3RlciBzdHJlYW0gZm9yIHRoaXMgaW5wdXQgc291cmNlLiAoVGhlIHN0cmVhbSBtdXN0IGJlIGEgUHl0aG9uIDEuNgotICAgVW5pY29kZS13cmFwcGVkIGZpbGUtbGlrZSB0aGF0IHBlcmZvcm1zIGNvbnZlcnNpb24gdG8gc3RyaW5ncy4pCisgICBTZXQgdGhlIGNoYXJhY3RlciBzdHJlYW0gKGEgOnRlcm06YHRleHQgZmlsZWApIGZvciB0aGlzIGlucHV0IHNvdXJjZS4KIAogICAgSWYgdGhlcmUgaXMgYSBjaGFyYWN0ZXIgc3RyZWFtIHNwZWNpZmllZCwgdGhlIFNBWCBwYXJzZXIgd2lsbCBpZ25vcmUgYW55IGJ5dGUKICAgIHN0cmVhbSBhbmQgd2lsbCBub3QgYXR0ZW1wdCB0byBvcGVuIGEgVVJJIGNvbm5lY3Rpb24gdG8gdGhlIHN5c3RlbSBpZGVudGlmaWVyLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1sLnNheC5yc3QgYi9Eb2MvbGlicmFyeS94bWwuc2F4LnJzdAppbmRleCBlOTVkNmIwLi41NWY5Nzk5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWwuc2F4LnJzdAorKysgYi9Eb2MvbGlicmFyeS94bWwuc2F4LnJzdApAQCAtNDcsNyArNDcsMTEgQEAKIC4uIGZ1bmN0aW9uOjogcGFyc2VTdHJpbmcoc3RyaW5nLCBoYW5kbGVyLCBlcnJvcl9oYW5kbGVyPWhhbmRsZXIuRXJyb3JIYW5kbGVyKCkpCiAKICAgIFNpbWlsYXIgdG8gOmZ1bmM6YHBhcnNlYCwgYnV0IHBhcnNlcyBmcm9tIGEgYnVmZmVyICpzdHJpbmcqIHJlY2VpdmVkIGFzIGEKLSAgIHBhcmFtZXRlci4KKyAgIHBhcmFtZXRlci4gICpzdHJpbmcqIG11c3QgYmUgYSA6Y2xhc3M6YHN0cmAgaW5zdGFuY2Ugb3IgYQorICAgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgb2YgOmNsYXNzOmBzdHJgIGluc3RhbmNlcy4KIAogQSB0eXBpY2FsIFNBWCBhcHBsaWNhdGlvbiB1c2VzIHRocmVlIGtpbmRzIG9mIG9iamVjdHM6IHJlYWRlcnMsIGhhbmRsZXJzIGFuZAogaW5wdXQgc291cmNlcy4gICJSZWFkZXIiIGluIHRoaXMgY29udGV4dCBpcyBhbm90aGVyIHRlcm0gZm9yIHBhcnNlciwgaS5lLiBzb21lCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdCBiL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CmluZGV4IGNjNWU4M2EuLmUxOTk5MzEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CkBAIC0yNyw3ICsyNyw3IEBACiAgICBjb25zdHJ1Y3RlZCBkYXRhLiAgSWYgeW91IG5lZWQgdG8gcGFyc2UgdW50cnVzdGVkIG9yIHVuYXV0aGVudGljYXRlZCBkYXRhIHNlZQogICAgOnJlZjpgeG1sLXZ1bG5lcmFiaWxpdGllc2AuCiAKLS4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjMKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAKICAgIEZvciBodHRwcyBVUklzLCA6bW9kOmB4bWxycGMuY2xpZW50YCBub3cgcGVyZm9ybXMgYWxsIHRoZSBuZWNlc3NhcnkKICAgIGNlcnRpZmljYXRlIGFuZCBob3N0bmFtZSBjaGVja3MgYnkgZGVmYXVsdApAQCAtMTI5LDcgKzEyOSw3IEBACiAgICA6Y2xhc3M6YFNlcnZlcmAgaXMgcmV0YWluZWQgYXMgYW4gYWxpYXMgZm9yIDpjbGFzczpgU2VydmVyUHJveHlgIGZvciBiYWNrd2FyZHMKICAgIGNvbXBhdGliaWxpdHkuICBOZXcgY29kZSBzaG91bGQgdXNlIDpjbGFzczpgU2VydmVyUHJveHlgLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNC4zCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgQWRkZWQgdGhlICpjb250ZXh0KiBhcmd1bWVudC4KIAogCkBAIC0yMDAsNiArMjAwLDExIEBACiAgICBubyBzdWNoIHN0cmluZyBpcyBhdmFpbGFibGUsIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC4gVGhlIGRvY3VtZW50YXRpb24KICAgIHN0cmluZyBtYXkgY29udGFpbiBIVE1MIG1hcmt1cC4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKworICAgSW5zdGFuY2VzIG9mIDpjbGFzczpgU2VydmVyUHJveHlgIHN1cHBvcnQgdGhlIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgIHByb3RvY29sCisgICBmb3IgY2xvc2luZyB0aGUgdW5kZXJseWluZyB0cmFuc3BvcnQuCisKIAogQSB3b3JraW5nIGV4YW1wbGUgZm9sbG93cy4gVGhlIHNlcnZlciBjb2RlOjoKIApAQCAtMjE3LDkgKzIyMiw5IEBACiAKICAgIGltcG9ydCB4bWxycGMuY2xpZW50CiAKLSAgIHByb3h5ID0geG1scnBjLmNsaWVudC5TZXJ2ZXJQcm94eSgiaHR0cDovL2xvY2FsaG9zdDo4MDAwLyIpCi0gICBwcmludCgiMyBpcyBldmVuOiAlcyIgJSBzdHIocHJveHkuaXNfZXZlbigzKSkpCi0gICBwcmludCgiMTAwIGlzIGV2ZW46ICVzIiAlIHN0cihwcm94eS5pc19ldmVuKDEwMCkpKQorICAgd2l0aCB4bWxycGMuY2xpZW50LlNlcnZlclByb3h5KCJodHRwOi8vbG9jYWxob3N0OjgwMDAvIikgYXMgcHJveHk6CisgICAgICAgcHJpbnQoIjMgaXMgZXZlbjogJXMiICUgc3RyKHByb3h5LmlzX2V2ZW4oMykpKQorICAgICAgIHByaW50KCIxMDAgaXMgZXZlbjogJXMiICUgc3RyKHByb3h5LmlzX2V2ZW4oMTAwKSkpCiAKIC4uIF9kYXRldGltZS1vYmplY3RzOgogCkBAIC01MjcsMTQgKzUzMiwxNCBAQAogICAgZnJvbSB4bWxycGMuY2xpZW50IGltcG9ydCBTZXJ2ZXJQcm94eSwgRXJyb3IKIAogICAgIyBzZXJ2ZXIgPSBTZXJ2ZXJQcm94eSgiaHR0cDovL2xvY2FsaG9zdDo4MDAwIikgIyBsb2NhbCBzZXJ2ZXIKLSAgIHNlcnZlciA9IFNlcnZlclByb3h5KCJodHRwOi8vYmV0dHkudXNlcmxhbmQuY29tIikKKyAgIHdpdGggU2VydmVyUHJveHkoImh0dHA6Ly9iZXR0eS51c2VybGFuZC5jb20iKSBhcyBwcm94eToKIAotICAgcHJpbnQoc2VydmVyKQorICAgICAgIHByaW50KHByb3h5KQogCi0gICB0cnk6Ci0gICAgICAgcHJpbnQoc2VydmVyLmV4YW1wbGVzLmdldFN0YXRlTmFtZSg0MSkpCi0gICBleGNlcHQgRXJyb3IgYXMgdjoKLSAgICAgICBwcmludCgiRVJST1IiLCB2KQorICAgICAgIHRyeToKKyAgICAgICAgICAgcHJpbnQocHJveHkuZXhhbXBsZXMuZ2V0U3RhdGVOYW1lKDQxKSkKKyAgICAgICBleGNlcHQgRXJyb3IgYXMgdjoKKyAgICAgICAgICAgcHJpbnQoIkVSUk9SIiwgdikKIAogVG8gYWNjZXNzIGFuIFhNTC1SUEMgc2VydmVyIHRocm91Z2ggYSBwcm94eSwgeW91IG5lZWQgdG8gZGVmaW5lICBhIGN1c3RvbQogdHJhbnNwb3J0LiAgVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGhvdzoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3ppcGFwcC5yc3QgYi9Eb2MvbGlicmFyeS96aXBhcHAucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NDg0YzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS96aXBhcHAucnN0CkBAIC0wLDAgKzEsMjU5IEBACis6bW9kOmB6aXBhcHBgIC0tLSBNYW5hZ2UgZXhlY3V0YWJsZSBweXRob24gemlwIGFyY2hpdmVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IHppcGFwcAorICAgOnN5bm9wc2lzOiBNYW5hZ2UgZXhlY3V0YWJsZSBweXRob24gemlwIGFyY2hpdmVzCisKKworLi4gaW5kZXg6OgorICAgc2luZ2xlOiBFeGVjdXRhYmxlIFppcCBGaWxlcworCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvemlwYXBwLnB5YAorCistLS0tLS0tLS0tLS0tLQorCitUaGlzIG1vZHVsZSBwcm92aWRlcyB0b29scyB0byBtYW5hZ2UgdGhlIGNyZWF0aW9uIG9mIHppcCBmaWxlcyBjb250YWluaW5nCitQeXRob24gY29kZSwgd2hpY2ggY2FuIGJlICA6cmVmOmBleGVjdXRlZCBkaXJlY3RseSBieSB0aGUgUHl0aG9uIGludGVycHJldGVyCis8dXNpbmctb24taW50ZXJmYWNlLW9wdGlvbnM+YC4gIFRoZSBtb2R1bGUgcHJvdmlkZXMgYm90aCBhCis6cmVmOmB6aXBhcHAtY29tbWFuZC1saW5lLWludGVyZmFjZWAgYW5kIGEgOnJlZjpgemlwYXBwLXB5dGhvbi1hcGlgLgorCisKK0Jhc2ljIEV4YW1wbGUKKy0tLS0tLS0tLS0tLS0KKworVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGhvdyB0aGUgOnJlZjpgY29tbWFuZC1saW5lLWludGVyZmFjZWAKK2NhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhbiBleGVjdXRhYmxlIGFyY2hpdmUgZnJvbSBhIGRpcmVjdG9yeSBjb250YWluaW5nCitQeXRob24gY29kZS4gIFdoZW4gcnVuLCB0aGUgYXJjaGl2ZSB3aWxsIGV4ZWN1dGUgdGhlIGBgbWFpbmBgIGZ1bmN0aW9uIGZyb20KK3RoZSBtb2R1bGUgYGBteWFwcGBgIGluIHRoZSBhcmNoaXZlLgorCisuLiBjb2RlLWJsb2NrOjogc2gKKworICAgJCBweXRob24gLW0gemlwYXBwIG15YXBwIC1tICJteWFwcDptYWluIgorICAgJCBweXRob24gbXlhcHAucHl6CisgICA8b3V0cHV0IGZyb20gbXlhcHA+CisKKworLi4gX3ppcGFwcC1jb21tYW5kLWxpbmUtaW50ZXJmYWNlOgorCitDb21tYW5kLUxpbmUgSW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doZW4gY2FsbGVkIGFzIGEgcHJvZ3JhbSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIHRoZSBmb2xsb3dpbmcgZm9ybSBpcyB1c2VkOgorCisuLiBjb2RlLWJsb2NrOjogc2gKKworICAgJCBweXRob24gLW0gemlwYXBwIHNvdXJjZSBbb3B0aW9uc10KKworSWYgKnNvdXJjZSogaXMgYSBkaXJlY3RvcnksIHRoaXMgd2lsbCBjcmVhdGUgYW4gYXJjaGl2ZSBmcm9tIHRoZSBjb250ZW50cyBvZgorKnNvdXJjZSouICBJZiAqc291cmNlKiBpcyBhIGZpbGUsIGl0IHNob3VsZCBiZSBhbiBhcmNoaXZlLCBhbmQgaXQgd2lsbCBiZQorY29waWVkIHRvIHRoZSB0YXJnZXQgYXJjaGl2ZSAob3IgdGhlIGNvbnRlbnRzIG9mIGl0cyBzaGViYW5nIGxpbmUgd2lsbCBiZQorZGlzcGxheWVkIGlmIHRoZSAtLWluZm8gb3B0aW9uIGlzIHNwZWNpZmllZCkuCisKK1RoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgdW5kZXJzdG9vZDoKKworLi4gcHJvZ3JhbTo6IHppcGFwcAorCisuLiBjbWRvcHRpb246OiAtbyA8b3V0cHV0PiwgLS1vdXRwdXQ9PG91dHB1dD4KKworICAgV3JpdGUgdGhlIG91dHB1dCB0byBhIGZpbGUgbmFtZWQgKm91dHB1dCouICBJZiB0aGlzIG9wdGlvbiBpcyBub3Qgc3BlY2lmaWVkLAorICAgdGhlIG91dHB1dCBmaWxlbmFtZSB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBpbnB1dCAqc291cmNlKiwgd2l0aCB0aGUKKyAgIGV4dGVuc2lvbiBgYC5weXpgYCBhZGRlZC4gIElmIGFuIGV4cGxpY2l0IGZpbGVuYW1lIGlzIGdpdmVuLCBpdCBpcyB1c2VkIGFzCisgICBpcyAoc28gYSBgYC5weXpgYCBleHRlbnNpb24gc2hvdWxkIGJlIGluY2x1ZGVkIGlmIHJlcXVpcmVkKS4KKworICAgQW4gb3V0cHV0IGZpbGVuYW1lIG11c3QgYmUgc3BlY2lmaWVkIGlmIHRoZSAqc291cmNlKiBpcyBhbiBhcmNoaXZlIChhbmQgaW4KKyAgIHRoYXQgY2FzZSwgKm91dHB1dCogbXVzdCBub3QgYmUgdGhlIHNhbWUgYXMgKnNvdXJjZSopLgorCisuLiBjbWRvcHRpb246OiAtcCA8aW50ZXJwcmV0ZXI+LCAtLXB5dGhvbj08aW50ZXJwcmV0ZXI+CisKKyAgIEFkZCBhIGBgIyFgYCBsaW5lIHRvIHRoZSBhcmNoaXZlIHNwZWNpZnlpbmcgKmludGVycHJldGVyKiBhcyB0aGUgY29tbWFuZAorICAgdG8gcnVuLiAgQWxzbywgb24gUE9TSVgsIG1ha2UgdGhlIGFyY2hpdmUgZXhlY3V0YWJsZS4gIFRoZSBkZWZhdWx0IGlzIHRvCisgICB3cml0ZSBubyBgYCMhYGAgbGluZSwgYW5kIG5vdCBtYWtlIHRoZSBmaWxlIGV4ZWN1dGFibGUuCisKKy4uIGNtZG9wdGlvbjo6IC1tIDxtYWluZm4+LCAtLW1haW49PG1haW5mbj4KKworICAgV3JpdGUgYSBgYF9fbWFpbl9fLnB5YGAgZmlsZSB0byB0aGUgYXJjaGl2ZSB0aGF0IGV4ZWN1dGVzICptYWluZm4qLiAgVGhlCisgICAqbWFpbmZuKiBhcmd1bWVudCBzaG91bGQgaGF2ZSB0aGUgZm9ybSAicGtnLm1vZDpmbiIsIHdoZXJlICJwa2cubW9kIiBpcyBhCisgICBwYWNrYWdlL21vZHVsZSBpbiB0aGUgYXJjaGl2ZSwgYW5kICJmbiIgaXMgYSBjYWxsYWJsZSBpbiB0aGUgZ2l2ZW4gbW9kdWxlLgorICAgVGhlIGBgX19tYWluX18ucHlgYCBmaWxlIHdpbGwgZXhlY3V0ZSB0aGF0IGNhbGxhYmxlLgorCisgICA6b3B0aW9uOmAtLW1haW5gIGNhbm5vdCBiZSBzcGVjaWZpZWQgd2hlbiBjb3B5aW5nIGFuIGFyY2hpdmUuCisKKy4uIGNtZG9wdGlvbjo6IC0taW5mbworCisgICBEaXNwbGF5IHRoZSBpbnRlcnByZXRlciBlbWJlZGRlZCBpbiB0aGUgYXJjaGl2ZSwgZm9yIGRpYWdub3N0aWMgcHVycG9zZXMuICBJbgorICAgdGhpcyBjYXNlLCBhbnkgb3RoZXIgb3B0aW9ucyBhcmUgaWdub3JlZCBhbmQgU09VUkNFIG11c3QgYmUgYW4gYXJjaGl2ZSwgbm90IGEKKyAgIGRpcmVjdG9yeS4KKworLi4gY21kb3B0aW9uOjogLWgsIC0taGVscAorCisgICBQcmludCBhIHNob3J0IHVzYWdlIG1lc3NhZ2UgYW5kIGV4aXQuCisKKworLi4gX3ppcGFwcC1weXRob24tYXBpOgorCitQeXRob24gQVBJCistLS0tLS0tLS0tCisKK1RoZSBtb2R1bGUgZGVmaW5lcyB0d28gY29udmVuaWVuY2UgZnVuY3Rpb25zOgorCisKKy4uIGZ1bmN0aW9uOjogY3JlYXRlX2FyY2hpdmUoc291cmNlLCB0YXJnZXQ9Tm9uZSwgaW50ZXJwcmV0ZXI9Tm9uZSwgbWFpbj1Ob25lKQorCisgICBDcmVhdGUgYW4gYXBwbGljYXRpb24gYXJjaGl2ZSBmcm9tICpzb3VyY2UqLiAgVGhlIHNvdXJjZSBjYW4gYmUgYW55CisgICBvZiB0aGUgZm9sbG93aW5nOgorCisgICAqIFRoZSBuYW1lIG9mIGEgZGlyZWN0b3J5LCBvciBhIDpjbGFzczpgcGF0aGxpYi5QYXRoYCBvYmplY3QgcmVmZXJyaW5nCisgICAgIHRvIGEgZGlyZWN0b3J5LCBpbiB3aGljaCBjYXNlIGEgbmV3IGFwcGxpY2F0aW9uIGFyY2hpdmUgd2lsbCBiZQorICAgICBjcmVhdGVkIGZyb20gdGhlIGNvbnRlbnQgb2YgdGhhdCBkaXJlY3RvcnkuCisgICAqIFRoZSBuYW1lIG9mIGFuIGV4aXN0aW5nIGFwcGxpY2F0aW9uIGFyY2hpdmUgZmlsZSwgb3IgYSA6Y2xhc3M6YHBhdGhsaWIuUGF0aGAKKyAgICAgb2JqZWN0IHJlZmVycmluZyB0byBzdWNoIGEgZmlsZSwgaW4gd2hpY2ggY2FzZSB0aGUgZmlsZSBpcyBjb3BpZWQgdG8KKyAgICAgdGhlIHRhcmdldCAobW9kaWZ5aW5nIGl0IHRvIHJlZmxlY3QgdGhlIHZhbHVlIGdpdmVuIGZvciB0aGUgKmludGVycHJldGVyKgorICAgICBhcmd1bWVudCkuICBUaGUgZmlsZSBuYW1lIHNob3VsZCBpbmNsdWRlIHRoZSBgYC5weXpgYCBleHRlbnNpb24sIGlmIHJlcXVpcmVkLgorICAgKiBBIGZpbGUgb2JqZWN0IG9wZW4gZm9yIHJlYWRpbmcgaW4gYnl0ZXMgbW9kZS4gIFRoZSBjb250ZW50IG9mIHRoZQorICAgICBmaWxlIHNob3VsZCBiZSBhbiBhcHBsaWNhdGlvbiBhcmNoaXZlLCBhbmQgdGhlIGZpbGUgb2JqZWN0IGlzCisgICAgIGFzc3VtZWQgdG8gYmUgcG9zaXRpb25lZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGFyY2hpdmUuCisKKyAgIFRoZSAqdGFyZ2V0KiBhcmd1bWVudCBkZXRlcm1pbmVzIHdoZXJlIHRoZSByZXN1bHRpbmcgYXJjaGl2ZSB3aWxsIGJlCisgICB3cml0dGVuOgorCisgICAqIElmIGl0IGlzIHRoZSBuYW1lIG9mIGEgZmlsZSwgb3IgYSA6Y2xhc3M6YHBhdGhsYi5QYXRoYCBvYmplY3QsCisgICAgIHRoZSBhcmNoaXZlIHdpbGwgYmUgd3JpdHRlbiB0byB0aGF0IGZpbGUuCisgICAqIElmIGl0IGlzIGFuIG9wZW4gZmlsZSBvYmplY3QsIHRoZSBhcmNoaXZlIHdpbGwgYmUgd3JpdHRlbiB0byB0aGF0CisgICAgIGZpbGUgb2JqZWN0LCB3aGljaCBtdXN0IGJlIG9wZW4gZm9yIHdyaXRpbmcgaW4gYnl0ZXMgbW9kZS4KKyAgICogSWYgdGhlIHRhcmdldCBpcyBvbWl0dGVkIChvciBOb25lKSwgdGhlIHNvdXJjZSBtdXN0IGJlIGEgZGlyZWN0b3J5CisgICAgIGFuZCB0aGUgdGFyZ2V0IHdpbGwgYmUgYSBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgc291cmNlLCB3aXRoCisgICAgIGEgYGAucHl6YGAgZXh0ZW5zaW9uIGFkZGVkLgorCisgICBUaGUgKmludGVycHJldGVyKiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIFB5dGhvbgorICAgaW50ZXJwcmV0ZXIgd2l0aCB3aGljaCB0aGUgYXJjaGl2ZSB3aWxsIGJlIGV4ZWN1dGVkLiAgSXQgaXMgd3JpdHRlbiBhcworICAgYSAic2hlYmFuZyIgbGluZSBhdCB0aGUgc3RhcnQgb2YgdGhlIGFyY2hpdmUuICBPbiBQT1NJWCwgdGhpcyB3aWxsIGJlCisgICBpbnRlcnByZXRlZCBieSB0aGUgT1MsIGFuZCBvbiBXaW5kb3dzIGl0IHdpbGwgYmUgaGFuZGxlZCBieSB0aGUgUHl0aG9uCisgICBsYXVuY2hlci4gIE9taXR0aW5nIHRoZSAqaW50ZXJwcmV0ZXIqIHJlc3VsdHMgaW4gbm8gc2hlYmFuZyBsaW5lIGJlaW5nCisgICB3cml0dGVuLiAgSWYgYW4gaW50ZXJwcmV0ZXIgaXMgc3BlY2lmaWVkLCBhbmQgdGhlIHRhcmdldCBpcyBhCisgICBmaWxlbmFtZSwgdGhlIGV4ZWN1dGFibGUgYml0IG9mIHRoZSB0YXJnZXQgZmlsZSB3aWxsIGJlIHNldC4KKworICAgVGhlICptYWluKiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIG5hbWUgb2YgYSBjYWxsYWJsZSB3aGljaCB3aWxsIGJlCisgICB1c2VkIGFzIHRoZSBtYWluIHByb2dyYW0gZm9yIHRoZSBhcmNoaXZlLiAgSXQgY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGlmCisgICB0aGUgc291cmNlIGlzIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHNvdXJjZSBkb2VzIG5vdCBhbHJlYWR5IGNvbnRhaW4gYQorICAgYGBfX21haW5fXy5weWBgIGZpbGUuICBUaGUgKm1haW4qIGFyZ3VtZW50IHNob3VsZCB0YWtlIHRoZSBmb3JtCisgICAicGtnLm1vZHVsZTpjYWxsYWJsZSIgYW5kIHRoZSBhcmNoaXZlIHdpbGwgYmUgcnVuIGJ5IGltcG9ydGluZworICAgInBrZy5tb2R1bGUiIGFuZCBleGVjdXRpbmcgdGhlIGdpdmVuIGNhbGxhYmxlIHdpdGggbm8gYXJndW1lbnRzLiAgSXQKKyAgIGlzIGFuIGVycm9yIHRvIG9taXQgKm1haW4qIGlmIHRoZSBzb3VyY2UgaXMgYSBkaXJlY3RvcnkgYW5kIGRvZXMgbm90CisgICBjb250YWluIGEgYGBfX21haW5fXy5weWBgIGZpbGUsIGFzIG90aGVyd2lzZSB0aGUgcmVzdWx0aW5nIGFyY2hpdmUKKyAgIHdvdWxkIG5vdCBiZSBleGVjdXRhYmxlLgorCisgICBJZiBhIGZpbGUgb2JqZWN0IGlzIHNwZWNpZmllZCBmb3IgKnNvdXJjZSogb3IgKnRhcmdldCosIGl0IGlzIHRoZQorICAgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gY2xvc2UgaXQgYWZ0ZXIgY2FsbGluZyBjcmVhdGVfYXJjaGl2ZS4KKworICAgV2hlbiBjb3B5aW5nIGFuIGV4aXN0aW5nIGFyY2hpdmUsIGZpbGUgb2JqZWN0cyBzdXBwbGllZCBvbmx5IG5lZWQKKyAgIGBgcmVhZGBgIGFuZCBgYHJlYWRsaW5lYGAsIG9yIGBgd3JpdGVgYCBtZXRob2RzLiAgV2hlbiBjcmVhdGluZyBhbgorICAgYXJjaGl2ZSBmcm9tIGEgZGlyZWN0b3J5LCBpZiB0aGUgdGFyZ2V0IGlzIGEgZmlsZSBvYmplY3QgaXQgd2lsbCBiZQorICAgcGFzc2VkIHRvIHRoZSBgYHppcGZpbGUuWmlwRmlsZWBgIGNsYXNzLCBhbmQgbXVzdCBzdXBwbHkgdGhlIG1ldGhvZHMKKyAgIG5lZWRlZCBieSB0aGF0IGNsYXNzLgorCisuLiBmdW5jdGlvbjo6IGdldF9pbnRlcnByZXRlcihhcmNoaXZlKQorCisgICBSZXR1cm4gdGhlIGludGVycHJldGVyIHNwZWNpZmllZCBpbiB0aGUgYGAjIWBgIGxpbmUgYXQgdGhlIHN0YXJ0IG9mIHRoZQorICAgYXJjaGl2ZS4gIElmIHRoZXJlIGlzIG5vIGBgIyFgYCBsaW5lLCByZXR1cm4gOmNvbnN0OmBOb25lYC4KKyAgIFRoZSAqYXJjaGl2ZSogYXJndW1lbnQgY2FuIGJlIGEgZmlsZW5hbWUgb3IgYSBmaWxlLWxpa2Ugb2JqZWN0IG9wZW4KKyAgIGZvciByZWFkaW5nIGluIGJ5dGVzIG1vZGUuICBJdCBpcyBhc3N1bWVkIHRvIGJlIGF0IHRoZSBzdGFydCBvZiB0aGUgYXJjaGl2ZS4KKworCisuLiBfemlwYXBwLWV4YW1wbGVzOgorCitFeGFtcGxlcworLS0tLS0tLS0KKworUGFjayB1cCBhIGRpcmVjdG9yeSBpbnRvIGFuIGFyY2hpdmUsIGFuZCBydW4gaXQuCisKKy4uIGNvZGUtYmxvY2s6OiBzaAorCisgICAkIHB5dGhvbiAtbSB6aXBhcHAgbXlhcHAKKyAgICQgcHl0aG9uIG15YXBwLnB5egorICAgPG91dHB1dCBmcm9tIG15YXBwPgorCitUaGUgc2FtZSBjYW4gYmUgZG9uZSB1c2luZyB0aGUgOmZ1bmM6YGNyZWF0ZV9hcmNoaXZlYCBmdW5jdG9uOjoKKworICAgPj4+IGltcG9ydCB6aXBhcHAKKyAgID4+PiB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoJ215YXBwLnB5eicsICdteWFwcCcpCisKK1RvIG1ha2UgdGhlIGFwcGxpY2F0aW9uIGRpcmVjdGx5IGV4ZWN1dGFibGUgb24gUE9TSVgsIHNwZWNpZnkgYW4gaW50ZXJwcmV0ZXIKK3RvIHVzZS4KKworLi4gY29kZS1ibG9jazo6IHNoCisKKyAgICQgcHl0aG9uIC1tIHppcGFwcCBteWFwcCAtcCAiL3Vzci9iaW4vZW52IHB5dGhvbiIKKyAgICQgLi9teWFwcC5weXoKKyAgIDxvdXRwdXQgZnJvbSBteWFwcD4KKworVG8gcmVwbGFjZSB0aGUgc2hlYmFuZyBsaW5lIG9uIGFuIGV4aXN0aW5nIGFyY2hpdmUsIGNyZWF0ZSBhIG1vZGlmaWVkIGFyY2hpdmUKK3VzaW5nIHRoZSA6ZnVuYzpgY3JlYXRlX2FyY2hpdmVgIGZ1bmN0aW9uOjoKKworICAgPj4+IGltcG9ydCB6aXBhcHAKKyAgID4+PiB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoJ29sZF9hcmNoaXZlLnB5eicsICduZXdfYXJjaGl2ZS5weXonLCAnL3Vzci9iaW4vcHl0aG9uMycpCisKK1RvIHVwZGF0ZSB0aGUgZmlsZSBpbiBwbGFjZSwgZG8gdGhlIHJlcGxhY2VtZW50IGluIG1lbW9yeSB1c2luZyBhIDpjbGFzczpgQnl0ZXNJT2AKK29iamVjdCwgYW5kIHRoZW4gb3ZlcndyaXRlIHRoZSBzb3VyY2UgYWZ0ZXJ3YXJkcy4gIE5vdGUgdGhhdCB0aGVyZSBpcyBhIHJpc2sKK3doZW4gb3ZlcndyaXRpbmcgYSBmaWxlIGluIHBsYWNlIHRoYXQgYW4gZXJyb3Igd2lsbCByZXN1bHQgaW4gdGhlIGxvc3Mgb2YKK3RoZSBvcmlnaW5hbCBmaWxlLiAgVGhpcyBjb2RlIGRvZXMgbm90IHByb3RlY3QgYWdhaW5zdCBzdWNoIGVycm9ycywgYnV0Citwcm9kdWN0aW9uIGNvZGUgc2hvdWxkIGRvIHNvLiAgQWxzbywgdGhpcyBtZXRob2Qgd2lsbCBvbmx5IHdvcmsgaWYgdGhlIGFyY2hpdmUKK2ZpdHMgaW4gbWVtb3J5OjoKKworICAgPj4+IGltcG9ydCB6aXBhcHAKKyAgID4+PiBpbXBvcnQgaW8KKyAgID4+PiB0ZW1wID0gaW8uQnl0ZXNJTygpCisgICA+Pj4gemlwYXBwLmNyZWF0ZV9hcmNoaXZlKCdteWFwcC5weXonLCB0ZW1wLCAnL3Vzci9iaW4vcHl0aG9uMicpCisgICA+Pj4gd2l0aCBvcGVuKCdteWFwcC5weXonLCAnd2InKSBhcyBmOgorICAgPj4+ICAgICBmLndyaXRlKHRlbXAuZ2V0dmFsdWUoKSkKKworTm90ZSB0aGF0IGlmIHlvdSBzcGVjaWZ5IGFuIGludGVycHJldGVyIGFuZCB0aGVuIGRpc3RyaWJ1dGUgeW91ciBhcHBsaWNhdGlvbgorYXJjaGl2ZSwgeW91IG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGludGVycHJldGVyIHVzZWQgaXMgcG9ydGFibGUuICBUaGUgUHl0aG9uCitsYXVuY2hlciBmb3IgV2luZG93cyBzdXBwb3J0cyBtb3N0IGNvbW1vbiBmb3JtcyBvZiBQT1NJWCBgYCMhYGAgbGluZSwgYnV0IHRoZXJlCithcmUgb3RoZXIgaXNzdWVzIHRvIGNvbnNpZGVyOgorCisqIElmIHlvdSB1c2UgIi91c3IvYmluL2VudiBweXRob24iIChvciBvdGhlciBmb3JtcyBvZiB0aGUgInB5dGhvbiIgY29tbWFuZCwKKyAgc3VjaCBhcyAiL3Vzci9iaW4vcHl0aG9uIiksIHlvdSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQgeW91ciB1c2VycyBtYXkgaGF2ZQorICBlaXRoZXIgUHl0aG9uIDIgb3IgUHl0aG9uIDMgYXMgdGhlaXIgZGVmYXVsdCwgYW5kIHdyaXRlIHlvdXIgY29kZSB0byB3b3JrCisgIHVuZGVyIGJvdGggdmVyc2lvbnMuCisqIElmIHlvdSB1c2UgYW4gZXhwbGljaXQgdmVyc2lvbiwgZm9yIGV4YW1wbGUgIi91c3IvYmluL2VudiBweXRob24zIiB5b3VyCisgIGFwcGxpY2F0aW9uIHdpbGwgbm90IHdvcmsgZm9yIHVzZXJzIHdobyBkbyBub3QgaGF2ZSB0aGF0IHZlcnNpb24uICAoVGhpcworICBtYXkgYmUgd2hhdCB5b3Ugd2FudCBpZiB5b3UgaGF2ZSBub3QgbWFkZSB5b3VyIGNvZGUgUHl0aG9uIDIgY29tcGF0aWJsZSkuCisqIFRoZXJlIGlzIG5vIHdheSB0byBzYXkgInB5dGhvbiBYLlkgb3IgbGF0ZXIiLCBzbyBiZSBjYXJlZnVsIG9mIHVzaW5nIGFuCisgIGV4YWN0IHZlcnNpb24gbGlrZSAiL3Vzci9iaW4vZW52IHB5dGhvbjMuNCIgYXMgeW91IHdpbGwgbmVlZCB0byBjaGFuZ2UgeW91cgorICBzaGViYW5nIGxpbmUgZm9yIHVzZXJzIG9mIFB5dGhvbiAzLjUsIGZvciBleGFtcGxlLgorCitUaGUgUHl0aG9uIFppcCBBcHBsaWNhdGlvbiBBcmNoaXZlIEZvcm1hdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUHl0aG9uIGhhcyBiZWVuIGFibGUgdG8gZXhlY3V0ZSB6aXAgZmlsZXMgd2hpY2ggY29udGFpbiBhIGBgX19tYWluX18ucHlgYCBmaWxlCitzaW5jZSB2ZXJzaW9uIDIuNi4gIEluIG9yZGVyIHRvIGJlIGV4ZWN1dGVkIGJ5IFB5dGhvbiwgYW4gYXBwbGljYXRpb24gYXJjaGl2ZQorc2ltcGx5IGhhcyB0byBiZSBhIHN0YW5kYXJkIHppcCBmaWxlIGNvbnRhaW5pbmcgYSBgYF9fbWFpbl9fLnB5YGAgZmlsZSB3aGljaAord2lsbCBiZSBydW4gYXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgYXBwbGljYXRpb24uICBBcyB1c3VhbCBmb3IgYW55IFB5dGhvbgorc2NyaXB0LCB0aGUgcGFyZW50IG9mIHRoZSBzY3JpcHQgKGluIHRoaXMgY2FzZSB0aGUgemlwIGZpbGUpIHdpbGwgYmUgcGxhY2VkIG9uCis6ZGF0YTpgc3lzLnBhdGhgIGFuZCB0aHVzIGZ1cnRoZXIgbW9kdWxlcyBjYW4gYmUgaW1wb3J0ZWQgZnJvbSB0aGUgemlwIGZpbGUuCisKK1RoZSB6aXAgZmlsZSBmb3JtYXQgYWxsb3dzIGFyYml0cmFyeSBkYXRhIHRvIGJlIHByZXBlbmRlZCB0byBhIHppcCBmaWxlLiAgVGhlCit6aXAgYXBwbGljYXRpb24gZm9ybWF0IHVzZXMgdGhpcyBhYmlsaXR5IHRvIHByZXBlbmQgYSBzdGFuZGFyZCBQT1NJWCAic2hlYmFuZyIKK2xpbmUgdG8gdGhlIGZpbGUgKGBgIyEvcGF0aC90by9pbnRlcnByZXRlcmBgKS4KKworRm9ybWFsbHksIHRoZSBQeXRob24gemlwIGFwcGxpY2F0aW9uIGZvcm1hdCBpcyB0aGVyZWZvcmU6CisKKzEuIEFuIG9wdGlvbmFsIHNoZWJhbmcgbGluZSwgY29udGFpbmluZyB0aGUgY2hhcmFjdGVycyBgYGInIyEnYGAgZm9sbG93ZWQgYnkgYW4KKyAgIGludGVycHJldGVyIG5hbWUsIGFuZCB0aGVuIGEgbmV3bGluZSAoYGBiJ1xuJ2BgKSBjaGFyYWN0ZXIuICBUaGUgaW50ZXJwcmV0ZXIKKyAgIG5hbWUgY2FuIGJlIGFueXRoaW5nIGFjY2VwdGFibGUgdG8gdGhlIE9TICJzaGViYW5nIiBwcm9jZXNzaW5nLCBvciB0aGUgUHl0aG9uCisgICBsYXVuY2hlciBvbiBXaW5kb3dzLiAgVGhlIGludGVycHJldGVyIHNob3VsZCBiZSBlbmNvZGVkIGluIFVURi04IG9uIFdpbmRvd3MsCisgICBhbmQgaW4gOmZ1bmM6YHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKWAgb24gUE9TSVguCisyLiBTdGFuZGFyZCB6aXBmaWxlIGRhdGEsIGFzIGdlbmVyYXRlZCBieSB0aGUgOm1vZDpgemlwZmlsZWAgbW9kdWxlLiAgVGhlCisgICB6aXBmaWxlIGNvbnRlbnQgKm11c3QqIGluY2x1ZGUgYSBmaWxlIGNhbGxlZCBgYF9fbWFpbl9fLnB5YGAgKHdoaWNoIG11c3QgYmUKKyAgIGluIHRoZSAicm9vdCIgb2YgdGhlIHppcGZpbGUgLSBpLmUuLCBpdCBjYW5ub3QgYmUgaW4gYSBzdWJkaXJlY3RvcnkpLiAgVGhlCisgICB6aXBmaWxlIGRhdGEgY2FuIGJlIGNvbXByZXNzZWQgb3IgdW5jb21wcmVzc2VkLgorCitJZiBhbiBhcHBsaWNhdGlvbiBhcmNoaXZlIGhhcyBhIHNoZWJhbmcgbGluZSwgaXQgbWF5IGhhdmUgdGhlIGV4ZWN1dGFibGUgYml0IHNldAorb24gUE9TSVggc3lzdGVtcywgdG8gYWxsb3cgaXQgdG8gYmUgZXhlY3V0ZWQgZGlyZWN0bHkuCisKK1RoZXJlIGlzIG5vIHJlcXVpcmVtZW50IHRoYXQgdGhlIHRvb2xzIGluIHRoaXMgbW9kdWxlIGFyZSB1c2VkIHRvIGNyZWF0ZQorYXBwbGljYXRpb24gYXJjaGl2ZXMgLSB0aGUgbW9kdWxlIGlzIGEgY29udmVuaWVuY2UsIGJ1dCBhcmNoaXZlcyBpbiB0aGUgYWJvdmUKK2Zvcm1hdCBjcmVhdGVkIGJ5IGFueSBtZWFucyBhcmUgYWNjZXB0YWJsZSB0byBQeXRob24uCisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0IGIvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKaW5kZXggMTBhMDk0Zi4uZDQwMzE1ZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKQEAgLTEzNCwxMiArMTM0LDE2IEBACiAKICAgIE9wZW4gYSBaSVAgZmlsZSwgd2hlcmUgKmZpbGUqIGNhbiBiZSBlaXRoZXIgYSBwYXRoIHRvIGEgZmlsZSAoYSBzdHJpbmcpIG9yIGEKICAgIGZpbGUtbGlrZSBvYmplY3QuICBUaGUgKm1vZGUqIHBhcmFtZXRlciBzaG91bGQgYmUgYGAncidgYCB0byByZWFkIGFuIGV4aXN0aW5nCi0gICBmaWxlLCBgYCd3J2BgIHRvIHRydW5jYXRlIGFuZCB3cml0ZSBhIG5ldyBmaWxlLCBvciBgYCdhJ2BgIHRvIGFwcGVuZCB0byBhbgotICAgZXhpc3RpbmcgZmlsZS4gIElmICptb2RlKiBpcyBgYCdhJ2BgIGFuZCAqZmlsZSogcmVmZXJzIHRvIGFuIGV4aXN0aW5nIFpJUAorICAgZmlsZSwgYGAndydgYCB0byB0cnVuY2F0ZSBhbmQgd3JpdGUgYSBuZXcgZmlsZSwgYGAneCdgYCB0byBleGNsdXNpdmUgY3JlYXRlCisgICBhbmQgd3JpdGUgYSBuZXcgZmlsZSwgb3IgYGAnYSdgYCB0byBhcHBlbmQgdG8gYW4gZXhpc3RpbmcgZmlsZS4KKyAgIElmICptb2RlKiBpcyBgYCd4J2BgIGFuZCAqZmlsZSogcmVmZXJzIHRvIGFuIGV4aXN0aW5nIGZpbGUsCisgICBhIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgd2lsbCBiZSByYWlzZWQuCisgICBJZiAqbW9kZSogaXMgYGAnYSdgYCBhbmQgKmZpbGUqIHJlZmVycyB0byBhbiBleGlzdGluZyBaSVAKICAgIGZpbGUsIHRoZW4gYWRkaXRpb25hbCBmaWxlcyBhcmUgYWRkZWQgdG8gaXQuICBJZiAqZmlsZSogZG9lcyBub3QgcmVmZXIgdG8gYQogICAgWklQIGZpbGUsIHRoZW4gYSBuZXcgWklQIGFyY2hpdmUgaXMgYXBwZW5kZWQgdG8gdGhlIGZpbGUuICBUaGlzIGlzIG1lYW50IGZvcgogICAgYWRkaW5nIGEgWklQIGFyY2hpdmUgdG8gYW5vdGhlciBmaWxlIChzdWNoIGFzIDpmaWxlOmBweXRob24uZXhlYCkuICBJZgogICAgKm1vZGUqIGlzIGBgYWBgIGFuZCB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCBhdCBhbGwsIGl0IGlzIGNyZWF0ZWQuCisgICBJZiAqbW9kZSogaXMgYGByYGAgb3IgYGBhYGAsIHRoZSBmaWxlIHNob3VsZCBiZSBzZWVrYWJsZS4KICAgICpjb21wcmVzc2lvbiogaXMgdGhlIFpJUCBjb21wcmVzc2lvbiBtZXRob2QgdG8gdXNlIHdoZW4gd3JpdGluZyB0aGUgYXJjaGl2ZSwKICAgIGFuZCBzaG91bGQgYmUgOmNvbnN0OmBaSVBfU1RPUkVEYCwgOmNvbnN0OmBaSVBfREVGTEFURURgLAogICAgOmNvbnN0OmBaSVBfQlpJUDJgIG9yIDpjb25zdDpgWklQX0xaTUFgOyB1bnJlY29nbml6ZWQKQEAgLTE1MSw3ICsxNTUsNyBAQAogICAgZXh0ZW5zaW9ucyB3aGVuIHRoZSB6aXBmaWxlIGlzIGxhcmdlciB0aGFuIDIgR2lCLiBJZiBpdCBpcyAgZmFsc2UgOm1vZDpgemlwZmlsZWAKICAgIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhlIFpJUCBmaWxlIHdvdWxkIHJlcXVpcmUgWklQNjQgZXh0ZW5zaW9ucy4KIAotICAgSWYgdGhlIGZpbGUgaXMgY3JlYXRlZCB3aXRoIG1vZGUgYGAnYSdgYCBvciBgYCd3J2BgIGFuZCB0aGVuCisgICBJZiB0aGUgZmlsZSBpcyBjcmVhdGVkIHdpdGggbW9kZSBgYCd3J2BgLCBgYCd4J2BgIG9yIGBgJ2EnYGAgYW5kIHRoZW4KICAgIDptZXRoOmBjbG9zZWQgPGNsb3NlPmAgd2l0aG91dCBhZGRpbmcgYW55IGZpbGVzIHRvIHRoZSBhcmNoaXZlLCB0aGUgYXBwcm9wcmlhdGUKICAgIFpJUCBzdHJ1Y3R1cmVzIGZvciBhbiBlbXB0eSBhcmNoaXZlIHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgZmlsZS4KIApAQCAtMTcxLDYgKzE3NSwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFpJUDY0IGV4dGVuc2lvbnMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHdyaXRpbmcgdG8gdW5zZWVrYWJsZSBzdHJlYW1zLgorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgJ3gnYGAgbW9kZS4KKwogCiAuLiBtZXRob2Q6OiBaaXBGaWxlLmNsb3NlKCkKIApAQCAtMjI2LDE0ICsyMzQsOCBAQAogCiAgICAuLiBub3RlOjoKIAotICAgICAgSWYgdGhlIFppcEZpbGUgd2FzIGNyZWF0ZWQgYnkgcGFzc2luZyBpbiBhIGZpbGUtbGlrZSBvYmplY3QgYXMgdGhlICBmaXJzdAotICAgICAgYXJndW1lbnQgdG8gdGhlIGNvbnN0cnVjdG9yLCB0aGVuIHRoZSBvYmplY3QgcmV0dXJuZWQgYnkgOm1ldGg6YC5vcGVuYCBzaGFyZXMgdGhlCi0gICAgICBaaXBGaWxlJ3MgZmlsZSBwb2ludGVyLiAgVW5kZXIgdGhlc2UgIGNpcmN1bXN0YW5jZXMsIHRoZSBvYmplY3QgcmV0dXJuZWQgYnkKLSAgICAgIDptZXRoOmAub3BlbmAgc2hvdWxkIG5vdCAgYmUgdXNlZCBhZnRlciBhbnkgYWRkaXRpb25hbCBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQKLSAgICAgIG9uIHRoZSAgWmlwRmlsZSBvYmplY3QuICBJZiB0aGUgWmlwRmlsZSB3YXMgY3JlYXRlZCBieSBwYXNzaW5nIGluIGEgc3RyaW5nICh0aGUKLSAgICAgIGZpbGVuYW1lKSBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGNvbnN0cnVjdG9yLCB0aGVuICA6bWV0aDpgLm9wZW5gIHdpbGwKLSAgICAgIGNyZWF0ZSBhIG5ldyBmaWxlIG9iamVjdCB0aGF0IHdpbGwgYmUgaGVsZCBieSB0aGUgWmlwRXh0RmlsZSwgYWxsb3dpbmcgaXQgdG8KLSAgICAgIG9wZXJhdGUgaW5kZXBlbmRlbnRseSBvZiB0aGUgIFppcEZpbGUuCisgICAgICBPYmplY3RzIHJldHVybmVkIGJ5IDptZXRoOmAub3BlbmAgY2FuIG9wZXJhdGUgaW5kZXBlbmRlbnRseSBvZiB0aGUKKyAgICAgIFppcEZpbGUuCiAKICAgIC4uIG5vdGU6OgogCkBAIC0zMTgsNyArMzIwLDggQEAKICAgICphcmNuYW1lKiAoYnkgZGVmYXVsdCwgdGhpcyB3aWxsIGJlIHRoZSBzYW1lIGFzICpmaWxlbmFtZSosIGJ1dCB3aXRob3V0IGEgZHJpdmUKICAgIGxldHRlciBhbmQgd2l0aCBsZWFkaW5nIHBhdGggc2VwYXJhdG9ycyByZW1vdmVkKS4gIElmIGdpdmVuLCAqY29tcHJlc3NfdHlwZSoKICAgIG92ZXJyaWRlcyB0aGUgdmFsdWUgZ2l2ZW4gZm9yIHRoZSAqY29tcHJlc3Npb24qIHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3IgZm9yCi0gICB0aGUgbmV3IGVudHJ5LiAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuIHdpdGggbW9kZSBgYCd3J2BgIG9yIGBgJ2EnYGAgLS0gY2FsbGluZworICAgdGhlIG5ldyBlbnRyeS4KKyAgIFRoZSBhcmNoaXZlIG11c3QgYmUgb3BlbiB3aXRoIG1vZGUgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgIC0tIGNhbGxpbmcKICAgIDptZXRoOmB3cml0ZWAgb24gYSBaaXBGaWxlIGNyZWF0ZWQgd2l0aCBtb2RlIGBgJ3InYGAgd2lsbCByYWlzZSBhCiAgICA6ZXhjOmBSdW50aW1lRXJyb3JgLiAgQ2FsbGluZyAgOm1ldGg6YHdyaXRlYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYQogICAgOmV4YzpgUnVudGltZUVycm9yYC4KQEAgLTM0MCwxNiArMzQzLDE2IEBACiAgICAgICBJZiBgYGFyY25hbWVgYCAob3IgYGBmaWxlbmFtZWBgLCBpZiBgYGFyY25hbWVgYCBpcyAgbm90IGdpdmVuKSBjb250YWlucyBhIG51bGwKICAgICAgIGJ5dGUsIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGluIHRoZSBhcmNoaXZlIHdpbGwgYmUgdHJ1bmNhdGVkIGF0IHRoZSBudWxsIGJ5dGUuCiAKLQogLi4gbWV0aG9kOjogWmlwRmlsZS53cml0ZXN0cih6aW5mb19vcl9hcmNuYW1lLCBieXRlc1ssIGNvbXByZXNzX3R5cGVdKQogCiAgICBXcml0ZSB0aGUgc3RyaW5nICpieXRlcyogdG8gdGhlIGFyY2hpdmU7ICp6aW5mb19vcl9hcmNuYW1lKiBpcyBlaXRoZXIgdGhlIGZpbGUKICAgIG5hbWUgaXQgd2lsbCBiZSBnaXZlbiBpbiB0aGUgYXJjaGl2ZSwgb3IgYSA6Y2xhc3M6YFppcEluZm9gIGluc3RhbmNlLiAgSWYgaXQncwogICAgYW4gaW5zdGFuY2UsIGF0IGxlYXN0IHRoZSBmaWxlbmFtZSwgZGF0ZSwgYW5kIHRpbWUgbXVzdCBiZSBnaXZlbi4gIElmIGl0J3MgYQotICAgbmFtZSwgdGhlIGRhdGUgYW5kIHRpbWUgaXMgc2V0IHRvIHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUuIFRoZSBhcmNoaXZlIG11c3QgYmUKLSAgIG9wZW5lZCB3aXRoIG1vZGUgYGAndydgYCBvciBgYCdhJ2BgIC0tIGNhbGxpbmcgIDptZXRoOmB3cml0ZXN0cmAgb24gYSBaaXBGaWxlCi0gICBjcmVhdGVkIHdpdGggbW9kZSBgYCdyJ2BgICB3aWxsIHJhaXNlIGEgOmV4YzpgUnVudGltZUVycm9yYC4gIENhbGxpbmcKLSAgIDptZXRoOmB3cml0ZXN0cmAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEgOmV4YzpgUnVudGltZUVycm9yYC4KKyAgIG5hbWUsIHRoZSBkYXRlIGFuZCB0aW1lIGlzIHNldCB0byB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lLgorICAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuZWQgd2l0aCBtb2RlIGBgJ3cnYGAsIGBgJ3gnYGAgb3IgYGAnYSdgYCAtLSBjYWxsaW5nCisgICA6bWV0aDpgd3JpdGVzdHJgIG9uIGEgWmlwRmlsZSBjcmVhdGVkIHdpdGggbW9kZSBgYCdyJ2BgIHdpbGwgcmFpc2UgYQorICAgOmV4YzpgUnVudGltZUVycm9yYC4gIENhbGxpbmcgOm1ldGg6YHdyaXRlc3RyYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwKKyAgIHJhaXNlIGEgOmV4YzpgUnVudGltZUVycm9yYC4KIAogICAgSWYgZ2l2ZW4sICpjb21wcmVzc190eXBlKiBvdmVycmlkZXMgdGhlIHZhbHVlIGdpdmVuIGZvciB0aGUgKmNvbXByZXNzaW9uKgogICAgcGFyYW1ldGVyIHRvIHRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIG5ldyBlbnRyeSwgb3IgaW4gdGhlICp6aW5mb19vcl9hcmNuYW1lKgpAQCAtMzc3LDcgKzM4MCw4IEBACiAuLiBhdHRyaWJ1dGU6OiBaaXBGaWxlLmNvbW1lbnQKIAogICAgVGhlIGNvbW1lbnQgdGV4dCBhc3NvY2lhdGVkIHdpdGggdGhlIFpJUCBmaWxlLiAgSWYgYXNzaWduaW5nIGEgY29tbWVudCB0byBhCi0gICA6Y2xhc3M6YFppcEZpbGVgIGluc3RhbmNlIGNyZWF0ZWQgd2l0aCBtb2RlICdhJyBvciAndycsIHRoaXMgc2hvdWxkIGJlIGEKKyAgIDpjbGFzczpgWmlwRmlsZWAgaW5zdGFuY2UgY3JlYXRlZCB3aXRoIG1vZGUgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgLAorICAgdGhpcyBzaG91bGQgYmUgYQogICAgc3RyaW5nIG5vIGxvbmdlciB0aGFuIDY1NTM1IGJ5dGVzLiAgQ29tbWVudHMgbG9uZ2VyIHRoYW4gdGhpcyB3aWxsIGJlCiAgICB0cnVuY2F0ZWQgaW4gdGhlIHdyaXR0ZW4gYXJjaGl2ZSB3aGVuIDptZXRoOmBjbG9zZWAgaXMgY2FsbGVkLgogCkBAIC00MDcsOCArNDExLDcgQEAKICAgICAgIGFyY2hpdmUuCiAKICAgICAgIElmIHRoZSAqb3B0aW1pemUqIHBhcmFtZXRlciB0byA6Y2xhc3M6YFB5WmlwRmlsZWAgd2FzIG5vdCBnaXZlbiBvciBgYC0xYGAsCi0gICAgICB0aGUgY29ycmVzcG9uZGluZyBmaWxlIGlzIGEgOmZpbGU6YFwqLnB5b2AgZmlsZSBpZiBhdmFpbGFibGUsIGVsc2UgYQotICAgICAgOmZpbGU6YFwqLnB5Y2AgZmlsZSwgY29tcGlsaW5nIGlmIG5lY2Vzc2FyeS4KKyAgICAgIHRoZSBjb3JyZXNwb25kaW5nIGZpbGUgaXMgYSA6ZmlsZTpgXCoucHljYCBmaWxlLCBjb21waWxpbmcgaWYgbmVjZXNzYXJ5LgogCiAgICAgICBJZiB0aGUgKm9wdGltaXplKiBwYXJhbWV0ZXIgdG8gOmNsYXNzOmBQeVppcEZpbGVgIHdhcyBgYDBgYCwgYGAxYGAgb3IKICAgICAgIGBgMmBgLCBvbmx5IGZpbGVzIHdpdGggdGhhdCBvcHRpbWl6YXRpb24gbGV2ZWwgKHNlZSA6ZnVuYzpgY29tcGlsZWApIGFyZQpAQCAtNTcxLDQgKzU3NCwzIEBACiAuLiBhdHRyaWJ1dGU6OiBaaXBJbmZvLmZpbGVfc2l6ZQogCiAgICBTaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgZmlsZS4KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvemlwaW1wb3J0LnJzdCBiL0RvYy9saWJyYXJ5L3ppcGltcG9ydC5yc3QKaW5kZXggMmNmNTA4Yi4uOGE1ZDVkMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvemlwaW1wb3J0LnJzdAorKysgYi9Eb2MvbGlicmFyeS96aXBpbXBvcnQucnN0CkBAIC0yMCwxMCArMjAsMTAgQEAKIGltcG9ydCBmcm9tIHRoZSA6ZmlsZTpgbGliL2Agc3ViZGlyZWN0b3J5IHdpdGhpbiB0aGUgYXJjaGl2ZS4KIAogQW55IGZpbGVzIG1heSBiZSBwcmVzZW50IGluIHRoZSBaSVAgYXJjaGl2ZSwgYnV0IG9ubHkgZmlsZXMgOmZpbGU6YC5weWAgYW5kCi06ZmlsZTpgLnB5W2NvXWAgYXJlIGF2YWlsYWJsZSBmb3IgaW1wb3J0LiAgWklQIGltcG9ydCBvZiBkeW5hbWljIG1vZHVsZXMKKzpmaWxlOmAucHljYCBhcmUgYXZhaWxhYmxlIGZvciBpbXBvcnQuICBaSVAgaW1wb3J0IG9mIGR5bmFtaWMgbW9kdWxlcwogKDpmaWxlOmAucHlkYCwgOmZpbGU6YC5zb2ApIGlzIGRpc2FsbG93ZWQuIE5vdGUgdGhhdCBpZiBhbiBhcmNoaXZlIG9ubHkgY29udGFpbnMKIDpmaWxlOmAucHlgIGZpbGVzLCBQeXRob24gd2lsbCBub3QgYXR0ZW1wdCB0byBtb2RpZnkgdGhlIGFyY2hpdmUgYnkgYWRkaW5nIHRoZQotY29ycmVzcG9uZGluZyA6ZmlsZTpgLnB5Y2Agb3IgOmZpbGU6YC5weW9gIGZpbGUsIG1lYW5pbmcgdGhhdCBpZiBhIFpJUCBhcmNoaXZlCitjb3JyZXNwb25kaW5nIDpmaWxlOmAucHljYCBmaWxlLCBtZWFuaW5nIHRoYXQgaWYgYSBaSVAgYXJjaGl2ZQogZG9lc24ndCBjb250YWluIDpmaWxlOmAucHljYCBmaWxlcywgaW1wb3J0aW5nIG1heSBiZSByYXRoZXIgc2xvdy4KIAogWklQIGFyY2hpdmVzIHdpdGggYW4gYXJjaGl2ZSBjb21tZW50IGFyZSBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC4KQEAgLTE2MSw0ICsxNjEsMyBAQAogICAgPj4+IGltcG9ydCBqd3p0aHJlYWRpbmcKICAgID4+PiBqd3p0aHJlYWRpbmcuX19maWxlX18KICAgICdleGFtcGxlLnppcC9qd3p0aHJlYWRpbmcucHknCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3psaWIucnN0IGIvRG9jL2xpYnJhcnkvemxpYi5yc3QKaW5kZXggNThmYzMxYjAuLmE4MTVkMWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3psaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3psaWIucnN0CkBAIC0zMSwyMiArMzEsMTkgQEAKIC4uIGZ1bmN0aW9uOjogYWRsZXIzMihkYXRhWywgdmFsdWVdKQogCiAgICBDb21wdXRlcyBhbiBBZGxlci0zMiBjaGVja3N1bSBvZiAqZGF0YSouICAoQW4gQWRsZXItMzIgY2hlY2tzdW0gaXMgYWxtb3N0IGFzCi0gICByZWxpYWJsZSBhcyBhIENSQzMyIGJ1dCBjYW4gYmUgY29tcHV0ZWQgbXVjaCBtb3JlIHF1aWNrbHkuKSAgSWYgKnZhbHVlKiBpcwotICAgcHJlc2VudCwgaXQgaXMgdXNlZCBhcyB0aGUgc3RhcnRpbmcgdmFsdWUgb2YgdGhlIGNoZWNrc3VtOyBvdGhlcndpc2UsIGEgZml4ZWQKLSAgIGRlZmF1bHQgdmFsdWUgaXMgdXNlZC4gIFRoaXMgYWxsb3dzIGNvbXB1dGluZyBhIHJ1bm5pbmcgY2hlY2tzdW0gb3ZlciB0aGUKKyAgIHJlbGlhYmxlIGFzIGEgQ1JDMzIgYnV0IGNhbiBiZSBjb21wdXRlZCBtdWNoIG1vcmUgcXVpY2tseS4pICBUaGUgcmVzdWx0CisgICBpcyBhbiB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlci4gIElmICp2YWx1ZSogaXMgcHJlc2VudCwgaXQgaXMgdXNlZCBhcworICAgdGhlIHN0YXJ0aW5nIHZhbHVlIG9mIHRoZSBjaGVja3N1bTsgb3RoZXJ3aXNlLCBhIGRlZmF1bHQgdmFsdWUgb2YgMQorICAgaXMgdXNlZC4gIFBhc3NpbmcgaW4gKnZhbHVlKiBhbGxvd3MgY29tcHV0aW5nIGEgcnVubmluZyBjaGVja3N1bSBvdmVyIHRoZQogICAgY29uY2F0ZW5hdGlvbiBvZiBzZXZlcmFsIGlucHV0cy4gIFRoZSBhbGdvcml0aG0gaXMgbm90IGNyeXB0b2dyYXBoaWNhbGx5CiAgICBzdHJvbmcsIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgZm9yIGF1dGhlbnRpY2F0aW9uIG9yIGRpZ2l0YWwgc2lnbmF0dXJlcy4gIFNpbmNlCiAgICB0aGUgYWxnb3JpdGhtIGlzIGRlc2lnbmVkIGZvciB1c2UgYXMgYSBjaGVja3N1bSBhbGdvcml0aG0sIGl0IGlzIG5vdCBzdWl0YWJsZQogICAgZm9yIHVzZSBhcyBhIGdlbmVyYWwgaGFzaCBhbGdvcml0aG0uCiAKLSAgIEFsd2F5cyByZXR1cm5zIGFuIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyLgotCi0uLiBub3RlOjoKLSAgIFRvIGdlbmVyYXRlIHRoZSBzYW1lIG51bWVyaWMgdmFsdWUgYWNyb3NzIGFsbCBQeXRob24gdmVyc2lvbnMgYW5kCi0gICBwbGF0Zm9ybXMgdXNlIGFkbGVyMzIoZGF0YSkgJiAweGZmZmZmZmZmLiAgSWYgeW91IGFyZSBvbmx5IHVzaW5nCi0gICB0aGUgY2hlY2tzdW0gaW4gcGFja2VkIGJpbmFyeSBmb3JtYXQgdGhpcyBpcyBub3QgbmVjZXNzYXJ5IGFzIHRoZQotICAgcmV0dXJuIHZhbHVlIGlzIHRoZSBjb3JyZWN0IDMyYml0IGJpbmFyeSByZXByZXNlbnRhdGlvbgotICAgcmVnYXJkbGVzcyBvZiBzaWduLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjAKKyAgICAgIEFsd2F5cyByZXR1cm5zIGFuIHVuc2lnbmVkIHZhbHVlLgorICAgICAgVG8gZ2VuZXJhdGUgdGhlIHNhbWUgbnVtZXJpYyB2YWx1ZSBhY3Jvc3MgYWxsIFB5dGhvbiB2ZXJzaW9ucyBhbmQKKyAgICAgIHBsYXRmb3JtcywgdXNlIGBgYWRsZXIzMihkYXRhKSAmIDB4ZmZmZmZmZmZgYC4KIAogCiAuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGFbLCBsZXZlbF0pCkBAIC05NywyMyArOTQsMTkgQEAKICAgICAgIHNpbmdsZTogQ3ljbGljIFJlZHVuZGFuY3kgQ2hlY2sKICAgICAgIHNpbmdsZTogY2hlY2tzdW07IEN5Y2xpYyBSZWR1bmRhbmN5IENoZWNrCiAKLSAgIENvbXB1dGVzIGEgQ1JDIChDeWNsaWMgUmVkdW5kYW5jeSBDaGVjaykgIGNoZWNrc3VtIG9mICpkYXRhKi4gSWYgKnZhbHVlKiBpcwotICAgcHJlc2VudCwgaXQgaXMgdXNlZCBhcyB0aGUgc3RhcnRpbmcgdmFsdWUgb2YgdGhlIGNoZWNrc3VtOyBvdGhlcndpc2UsIGEgZml4ZWQKLSAgIGRlZmF1bHQgdmFsdWUgaXMgdXNlZC4gIFRoaXMgYWxsb3dzIGNvbXB1dGluZyBhIHJ1bm5pbmcgY2hlY2tzdW0gb3ZlciB0aGUKKyAgIENvbXB1dGVzIGEgQ1JDIChDeWNsaWMgUmVkdW5kYW5jeSBDaGVjaykgY2hlY2tzdW0gb2YgKmRhdGEqLiBUaGUKKyAgIHJlc3VsdCBpcyBhbiB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlci4gSWYgKnZhbHVlKiBpcyBwcmVzZW50LCBpdCBpcyB1c2VkCisgICBhcyB0aGUgc3RhcnRpbmcgdmFsdWUgb2YgdGhlIGNoZWNrc3VtOyBvdGhlcndpc2UsIGEgZGVmYXVsdCB2YWx1ZSBvZiAwCisgICBpcyB1c2VkLiAgUGFzc2luZyBpbiAqdmFsdWUqIGFsbG93cyBjb21wdXRpbmcgYSBydW5uaW5nIGNoZWNrc3VtIG92ZXIgdGhlCiAgICBjb25jYXRlbmF0aW9uIG9mIHNldmVyYWwgaW5wdXRzLiAgVGhlIGFsZ29yaXRobSBpcyBub3QgY3J5cHRvZ3JhcGhpY2FsbHkKICAgIHN0cm9uZywgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBmb3IgYXV0aGVudGljYXRpb24gb3IgZGlnaXRhbCBzaWduYXR1cmVzLiAgU2luY2UKICAgIHRoZSBhbGdvcml0aG0gaXMgZGVzaWduZWQgZm9yIHVzZSBhcyBhIGNoZWNrc3VtIGFsZ29yaXRobSwgaXQgaXMgbm90IHN1aXRhYmxlCiAgICBmb3IgdXNlIGFzIGEgZ2VuZXJhbCBoYXNoIGFsZ29yaXRobS4KIAotICAgQWx3YXlzIHJldHVybnMgYW4gdW5zaWduZWQgMzItYml0IGludGVnZXIuCi0KLSAgIC4uIG5vdGU6OgotCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMAorICAgICAgQWx3YXlzIHJldHVybnMgYW4gdW5zaWduZWQgdmFsdWUuCiAgICAgICBUbyBnZW5lcmF0ZSB0aGUgc2FtZSBudW1lcmljIHZhbHVlIGFjcm9zcyBhbGwgUHl0aG9uIHZlcnNpb25zIGFuZAotICAgICAgcGxhdGZvcm1zLCB1c2UgYGBjcmMzMihkYXRhKSAmIDB4ZmZmZmZmZmZgYC4gIElmIHlvdSBhcmUgb25seSB1c2luZwotICAgICAgdGhlIGNoZWNrc3VtIGluIHBhY2tlZCBiaW5hcnkgZm9ybWF0IHRoaXMgaXMgbm90IG5lY2Vzc2FyeSBhcyB0aGUKLSAgICAgIHJldHVybiB2YWx1ZSBpcyB0aGUgY29ycmVjdCAzMi1iaXQgYmluYXJ5IHJlcHJlc2VudGF0aW9uCi0gICAgICByZWdhcmRsZXNzIG9mIHNpZ24uCisgICAgICBwbGF0Zm9ybXMsIHVzZSBgYGNyYzMyKGRhdGEpICYgMHhmZmZmZmZmZmBgLgogCiAKIC4uIGZ1bmN0aW9uOjogZGVjb21wcmVzcyhkYXRhWywgd2JpdHNbLCBidWZzaXplXV0pCmRpZmYgLS1naXQgYS9Eb2MvbWFrZS5iYXQgYi9Eb2MvbWFrZS5iYXQKaW5kZXggMjUxZjgyMi4uNWFiODA4NSAxMDA2NDQKLS0tIGEvRG9jL21ha2UuYmF0CisrKyBiL0RvYy9tYWtlLmJhdApAQCAtOCw5ICs4LDIzIEBACiBpZiAiJVNQSElOWEJVSUxEJSIgRVFVICIiIHNldCBTUEhJTlhCVUlMRD1zcGhpbngtYnVpbGQNCiBpZiAiJVBZVEhPTiUiIEVRVSAiIiBzZXQgUFlUSE9OPXB5DQogDQotaWYgREVGSU5FRCBQcm9ncmFtRmlsZXMoeDg2KSBzZXQgX1BSR01GTFM9JVByb2dyYW1GaWxlcyh4ODYpJQ0KLWlmIE5PVCBERUZJTkVEIFByb2dyYW1GaWxlcyh4ODYpIHNldCBfUFJHTUZMUz0lUHJvZ3JhbUZpbGVzJQ0KLWlmICIlSFRNTEhFTFAlIiBFUVUgIiIgc2V0IEhUTUxIRUxQPSVfUFJHTUZMUyVcSFRNTCBIZWxwIFdvcmtzaG9wXGhoYy5leGUNCitpZiAiJTEiIE5FUSAiaHRtbGhlbHAiIGdvdG8gOnNraXBoaGNzZWFyY2gNCitpZiBleGlzdCAiJUhUTUxIRUxQJSIgZ290byA6c2tpcGhoY3NlYXJjaA0KKw0KK3JlbSBTZWFyY2ggZm9yIEhIQyBpbiBsaWtlbHkgcGxhY2VzDQorc2V0IEhUTUxIRUxQPQ0KK3doZXJlIGhoYyAvcSAmJiBzZXQgSFRNTEhFTFA9aGhjICYmIGdvdG8gOnNraXBoaGNzZWFyY2gNCit3aGVyZSAvUiAuLlxleHRlcm5hbHMgaGhjID4gIiVURU1QJVxoaGMubG9jIiAyPiBudWwgJiYgc2V0IC9QIEhUTUxIRUxQPSA8ICIlVEVNUCVcaGhjLmxvYyIgJiBkZWwgIiVURU1QJVxoaGMubG9jIg0KK2lmIG5vdCBleGlzdCAiJUhUTUxIRUxQJSIgd2hlcmUgL1IgIiVQcm9ncmFtRmlsZXMoeDg2KSUiIGhoYyA+ICIlVEVNUCVcaGhjLmxvYyIgMj4gbnVsICYmIHNldCAvUCBIVE1MSEVMUD0gPCAiJVRFTVAlXGhoYy5sb2MiICYgZGVsICIlVEVNUCVcaGhjLmxvYyINCitpZiBub3QgZXhpc3QgIiVIVE1MSEVMUCUiIHdoZXJlIC9SICIlUHJvZ3JhbUZpbGVzJSIgaGhjID4gIiVURU1QJVxoaGMubG9jIiAyPiBudWwgJiYgc2V0IC9QIEhUTUxIRUxQPSA8ICIlVEVNUCVcaGhjLmxvYyIgJiBkZWwgIiVURU1QJVxoaGMubG9jIg0KK2lmIG5vdCBleGlzdCAiJUhUTUxIRUxQJSIgKA0KKyAgICBlY2hvLg0KKyAgICBlY2hvLlRoZSBIVE1MIEhlbHAgV29ya3Nob3Agd2FzIG5vdCBmb3VuZC4gIFNldCB0aGUgSFRNTEhFTFAgdmFyaWFibGUNCisgICAgZWNoby50byB0aGUgcGF0aCB0byBoaGMuZXhlIG9yIGRvd25sb2FkIGFuZCBpbnN0YWxsIGl0IGZyb20NCisgICAgZWNoby5odHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM2Njk5ODUNCisgICAgZXhpdCAvQiAxDQorKQ0KKzpza2lwaGhjc2VhcmNoDQogDQogaWYgIiVESVNUVkVSU0lPTiUiIEVRVSAiIiBmb3IgL2YgInVzZWJhY2txIiAlJXYgaW4gKGAlUFlUSE9OJSB0b29scy9leHRlbnNpb25zL3BhdGNobGV2ZWwucHlgKSBkbyBzZXQgRElTVFZFUlNJT049JSV2DQogDQpAQCAtMzYsNyArNTAsOCBAQAogICAgIGVjaG8uDQogICAgIGVjaG8uSWYgeW91IGRvbid0IGhhdmUgU3BoaW54IGluc3RhbGxlZCwgZ3JhYiBpdCBmcm9tDQogICAgIGVjaG8uaHR0cDovL3NwaGlueC1kb2Mub3JnLw0KLSAgICBnb3RvIGVuZA0KKyAgICBwb3BkDQorICAgIGV4aXQgL0IgMQ0KICkNCiANCiByZW0gVGFyZ2V0cyB0aGF0IGRvIHJlcXVpcmUgc3BoaW54LWJ1aWxkIGFuZCBoYXZlIHRoZWlyIG93biBsYWJlbA0KQEAgLTc2LDE1ICs5MSw2IEBACiBjbWQgL0MgJVNQSElOWEJVSUxEJSAlU1BISU5YT1BUUyUgLWIlMSAtZGJ1aWxkXGRvY3RyZWVzIC4gJUJVSUxERElSJVwlKg0KIA0KIGlmICIlMSIgRVFVICJodG1saGVscCIgKA0KLSAgICBpZiAgbm90IGV4aXN0ICIlSFRNTEhFTFAlIiAoDQotICAgICAgICBlY2hvLg0KLSAgICAgICAgZWNoby5UaGUgSFRNTCBIZWxwIFdvcmtzaG9wIHdhcyBub3QgZm91bmQuICBTZXQgdGhlIEhUTUxIRUxQIHZhcmlhYmxlDQotICAgICAgICBlY2hvLnRvIHRoZSBwYXRoIHRvIGhoYy5leGUgb3IgZG93bmxvYWQgYW5kIGluc3RhbGwgaXQgZnJvbQ0KLSAgICAgICAgZWNoby5odHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM2Njk5ODUNCi0gICAgICAgIHJlbSBTZXQgZXJyb3JsZXZlbCB0byAxIGFuZCBleGl0DQotICAgICAgICBjbWQgL0MgZXhpdCAvYiAxDQotICAgICAgICBnb3RvIGVuZA0KLSAgICApDQogICAgIGNtZCAvQyAiJUhUTUxIRUxQJSIgYnVpbGRcaHRtbGhlbHBccHl0aG9uJURJU1RWRVJTSU9OOi49JS5oaHANCiAgICAgcmVtIGhoYy5leGUgc2VlbXMgdG8gYWx3YXlzIGV4aXQgd2l0aCBjb2RlIDEsIHJlc2V0IHRvIDAgZm9yIGxlc3MgdGhhbiAyDQogICAgIGlmIG5vdCBlcnJvcmxldmVsIDIgY21kIC9DIGV4aXQgL2IgMA0KZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0IGIvRG9jL3JlZmVyZW5jZS9jb21wb3VuZF9zdG10cy5yc3QKaW5kZXggNWRkMTdlYi4uMDFjZmQ2ZCAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9jb21wb3VuZF9zdG10cy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9jb21wb3VuZF9zdG10cy5yc3QKQEAgLTUxLDYgKzUxLDkgQEAKICAgICAgICAgICAgICAgICA6IHwgYHdpdGhfc3RtdGAKICAgICAgICAgICAgICAgICA6IHwgYGZ1bmNkZWZgCiAgICAgICAgICAgICAgICAgOiB8IGBjbGFzc2RlZmAKKyAgICAgICAgICAgICAgICA6IHwgYGFzeW5jX3dpdGhfc3RtdGAKKyAgICAgICAgICAgICAgICA6IHwgYGFzeW5jX2Zvcl9zdG10YAorICAgICAgICAgICAgICAgIDogfCBgYXN5bmNfZnVuY2RlZmAKICAgIHN1aXRlOiBgc3RtdF9saXN0YCBORVdMSU5FIHwgTkVXTElORSBJTkRFTlQgYHN0YXRlbWVudGArIERFREVOVAogICAgc3RhdGVtZW50OiBgc3RtdF9saXN0YCBORVdMSU5FIHwgYGNvbXBvdW5kX3N0bXRgCiAgICBzdG10X2xpc3Q6IGBzaW1wbGVfc3RtdGAgKCI7IiBgc2ltcGxlX3N0bXRgKSogWyI7Il0KQEAgLTY2MCw2ICs2NjMsMTMwIEBACiAgICA6cGVwOmAzMTI5YCAtIENsYXNzIERlY29yYXRvcnMKIAogCitDb3JvdXRpbmVzCis9PT09PT09PT09CisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisuLiBpbmRleDo6IHN0YXRlbWVudDogYXN5bmMgZGVmCisuLiBfYGFzeW5jIGRlZmA6CisKK0Nvcm91dGluZSBmdW5jdGlvbiBkZWZpbml0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBwcm9kdWN0aW9ubGlzdDo6CisgICBhc3luY19mdW5jZGVmOiBbYGRlY29yYXRvcnNgXSAiYXN5bmMiICJkZWYiIGBmdW5jbmFtZWAgIigiIFtgcGFyYW1ldGVyX2xpc3RgXSAiKSIgWyItPiIgYGV4cHJlc3Npb25gXSAiOiIgYHN1aXRlYAorCisuLiBpbmRleDo6CisgICBrZXl3b3JkOiBhc3luYworICAga2V5d29yZDogYXdhaXQKKworRXhlY3V0aW9uIG9mIFB5dGhvbiBjb3JvdXRpbmVzIGNhbiBiZSBzdXNwZW5kZWQgYW5kIHJlc3VtZWQgYXQgbWFueSBwb2ludHMKKyhzZWUgOnRlcm06YGNvcm91dGluZWApLiAgSW4gdGhlIGJvZHkgb2YgYSBjb3JvdXRpbmUsIGFueSBgYGF3YWl0YGAgYW5kCitgYGFzeW5jYGAgaWRlbnRpZmllcnMgYmVjb21lIHJlc2VydmVkIGtleXdvcmRzOyA6a2V5d29yZDpgYXdhaXRgIGV4cHJlc3Npb25zLAorOmtleXdvcmQ6YGFzeW5jIGZvcmAgYW5kIDprZXl3b3JkOmBhc3luYyB3aXRoYCBjYW4gb25seSBiZSB1c2VkIGluCitjb3JvdXRpbmUgYm9kaWVzLgorCitGdW5jdGlvbnMgZGVmaW5lZCB3aXRoIGBgYXN5bmMgZGVmYGAgc3ludGF4IGFyZSBhbHdheXMgY29yb3V0aW5lIGZ1bmN0aW9ucywKK2V2ZW4gaWYgdGhleSBkbyBub3QgY29udGFpbiBgYGF3YWl0YGAgb3IgYGBhc3luY2BgIGtleXdvcmRzLgorCitJdCBpcyBhIDpleGM6YFN5bnRheEVycm9yYCB0byB1c2UgOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9ucyBpbgorYGBhc3luYyBkZWZgYCBjb3JvdXRpbmVzLgorCitBbiBleGFtcGxlIG9mIGEgY29yb3V0aW5lIGZ1bmN0aW9uOjoKKworICAgIGFzeW5jIGRlZiBmdW5jKHBhcmFtMSwgcGFyYW0yKToKKyAgICAgICAgZG9fc3R1ZmYoKQorICAgICAgICBhd2FpdCBzb21lX2Nvcm91dGluZSgpCisKKworLi4gaW5kZXg6OiBzdGF0ZW1lbnQ6IGFzeW5jIGZvcgorLi4gX2Bhc3luYyBmb3JgOgorCitUaGUgOmtleXdvcmQ6YGFzeW5jIGZvcmAgc3RhdGVtZW50CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHByb2R1Y3Rpb25saXN0OjoKKyAgIGFzeW5jX2Zvcl9zdG10OiAiYXN5bmMiIGBmb3Jfc3RtdGAKKworQW4gOnRlcm06YGFzeW5jaHJvbm91cyBpdGVyYWJsZWAgaXMgYWJsZSB0byBjYWxsIGFzeW5jaHJvbm91cyBjb2RlIGluIGl0cworKml0ZXIqIGltcGxlbWVudGF0aW9uLCBhbmQgOnRlcm06YGFzeW5jaHJvbm91cyBpdGVyYXRvcmAgY2FuIGNhbGwgYXN5bmNocm9ub3VzCitjb2RlIGluIGl0cyAqbmV4dCogbWV0aG9kLgorCitUaGUgYGBhc3luYyBmb3JgYCBzdGF0ZW1lbnQgYWxsb3dzIGNvbnZlbmllbnQgaXRlcmF0aW9uIG92ZXIgYXN5bmNocm9ub3VzCitpdGVyYXRvcnMuCisKK1RoZSBmb2xsb3dpbmcgY29kZTo6CisKKyAgICBhc3luYyBmb3IgVEFSR0VUIGluIElURVI6CisgICAgICAgIEJMT0NLCisgICAgZWxzZToKKyAgICAgICAgQkxPQ0syCisKK0lzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvOjoKKworICAgIGl0ZXIgPSAoSVRFUikKKyAgICBpdGVyID0gYXdhaXQgdHlwZShpdGVyKS5fX2FpdGVyX18oaXRlcikKKyAgICBydW5uaW5nID0gVHJ1ZQorICAgIHdoaWxlIHJ1bm5pbmc6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIFRBUkdFVCA9IGF3YWl0IHR5cGUoaXRlcikuX19hbmV4dF9fKGl0ZXIpCisgICAgICAgIGV4Y2VwdCBTdG9wQXN5bmNJdGVyYXRpb246CisgICAgICAgICAgICBydW5uaW5nID0gRmFsc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIEJMT0NLCisgICAgZWxzZToKKyAgICAgICAgQkxPQ0syCisKK1NlZSBhbHNvIDptZXRoOmBfX2FpdGVyX19gIGFuZCA6bWV0aDpgX19hbmV4dF9fYCBmb3IgZGV0YWlscy4KKworSXQgaXMgYSA6ZXhjOmBTeW50YXhFcnJvcmAgdG8gdXNlIGBgYXN5bmMgZm9yYGAgc3RhdGVtZW50IG91dHNpZGUgb2YgYW4KKzprZXl3b3JkOmBhc3luYyBkZWZgIGZ1bmN0aW9uLgorCisKKy4uIGluZGV4Ojogc3RhdGVtZW50OiBhc3luYyB3aXRoCisuLiBfYGFzeW5jIHdpdGhgOgorCitUaGUgOmtleXdvcmQ6YGFzeW5jIHdpdGhgIHN0YXRlbWVudAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gcHJvZHVjdGlvbmxpc3Q6OgorICAgYXN5bmNfd2l0aF9zdG10OiAiYXN5bmMiIGB3aXRoX3N0bXRgCisKK0FuIDp0ZXJtOmBhc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyYCBpcyBhIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgIHRoYXQgaXMKK2FibGUgdG8gc3VzcGVuZCBleGVjdXRpb24gaW4gaXRzICplbnRlciogYW5kICpleGl0KiBtZXRob2RzLgorCitUaGUgZm9sbG93aW5nIGNvZGU6OgorCisgICAgYXN5bmMgd2l0aCBFWFBSIGFzIFZBUjoKKyAgICAgICAgQkxPQ0sKKworSXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG86OgorCisgICAgbWdyID0gKEVYUFIpCisgICAgYWV4aXQgPSB0eXBlKG1ncikuX19hZXhpdF9fCisgICAgYWVudGVyID0gdHlwZShtZ3IpLl9fYWVudGVyX18obWdyKQorICAgIGV4YyA9IFRydWUKKworICAgIFZBUiA9IGF3YWl0IGFlbnRlcgorICAgIHRyeToKKyAgICAgICAgQkxPQ0sKKyAgICBleGNlcHQ6CisgICAgICAgIGlmIG5vdCBhd2FpdCBhZXhpdChtZ3IsICpzeXMuZXhjX2luZm8oKSk6CisgICAgICAgICAgICByYWlzZQorICAgIGVsc2U6CisgICAgICAgIGF3YWl0IGFleGl0KG1nciwgTm9uZSwgTm9uZSwgTm9uZSkKKworU2VlIGFsc28gOm1ldGg6YF9fYWVudGVyX19gIGFuZCA6bWV0aDpgX19hZXhpdF9fYCBmb3IgZGV0YWlscy4KKworSXQgaXMgYSA6ZXhjOmBTeW50YXhFcnJvcmAgdG8gdXNlIGBgYXN5bmMgd2l0aGBgIHN0YXRlbWVudCBvdXRzaWRlIG9mIGFuCis6a2V5d29yZDpgYXN5bmMgZGVmYCBmdW5jdGlvbi4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQ5MmAgLSBDb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0IHN5bnRheAorCisKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCiAuLiBbI10gVGhlIGV4Y2VwdGlvbiBpcyBwcm9wYWdhdGVkIHRvIHRoZSBpbnZvY2F0aW9uIHN0YWNrIHVubGVzcwpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0IGIvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CmluZGV4IDE1NjBhZDAuLjc2NGM0OTEgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKQEAgLTYxNiw2ICs2MTYsMTYgQEAKICAgICAgIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZSBpdGVyYXRvciB3aWxsIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzZXQgb2YKICAgICAgIHZhbHVlcyB0byBiZSByZXR1cm5lZC4KIAorICAgQ29yb3V0aW5lIGZ1bmN0aW9ucworICAgICAgLi4gaW5kZXg6OgorICAgICAgICAgc2luZ2xlOiBjb3JvdXRpbmU7IGZ1bmN0aW9uCisKKyAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIGlzIGRlZmluZWQgdXNpbmcgOmtleXdvcmQ6YGFzeW5jIGRlZmAgaXMgY2FsbGVkCisgICAgICBhIDpkZm46YGNvcm91dGluZSBmdW5jdGlvbmAuICBTdWNoIGEgZnVuY3Rpb24sIHdoZW4gY2FsbGVkLCByZXR1cm5zIGEKKyAgICAgIDp0ZXJtOmBjb3JvdXRpbmVgIG9iamVjdC4gIEl0IG1heSBjb250YWluIDprZXl3b3JkOmBhd2FpdGAgZXhwcmVzc2lvbnMsCisgICAgICBhcyB3ZWxsIGFzIDprZXl3b3JkOmBhc3luYyB3aXRoYCBhbmQgOmtleXdvcmQ6YGFzeW5jIGZvcmAgc3RhdGVtZW50cy4gU2VlCisgICAgICBhbHNvIHRoZSA6cmVmOmBjb3JvdXRpbmUtb2JqZWN0c2Agc2VjdGlvbi4KKwogICAgQnVpbHQtaW4gZnVuY3Rpb25zCiAgICAgICAuLiBpbmRleDo6CiAgICAgICAgICBvYmplY3Q6IGJ1aWx0LWluIGZ1bmN0aW9uCkBAIC0xOTkwLDYgKzIwMDAsNyBAQAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fYWRkX18oc2VsZiwgb3RoZXIpCiAgICAgICAgICAgICBvYmplY3QuX19zdWJfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX211bF9fKHNlbGYsIG90aGVyKQorICAgICAgICAgICAgb2JqZWN0Ll9fbWF0bXVsX18oc2VsZiwgb3RoZXIpCiAgICAgICAgICAgICBvYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpCiAgICAgICAgICAgICBvYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpCkBAIC0yMDA2LDE1ICsyMDE3LDE2IEBACiAgICAgICBidWlsdGluOiBwb3cKICAgICAgIGJ1aWx0aW46IHBvdwogCi0gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIChgYCtgYCwKLSAgIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsIDpmdW5jOmBkaXZtb2RgLCA6ZnVuYzpgcG93YCwgYGAqKmBgLCBgYDw8YGAsCi0gICBgYD4+YGAsIGBgJmBgLCBgYF5gYCwgYGB8YGApLiAgRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbgotICAgYGB4ICsgeWBgLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiA6bWV0aDpgX19hZGRfX2AKLSAgIG1ldGhvZCwgYGB4Ll9fYWRkX18oeSlgYCBpcyBjYWxsZWQuICBUaGUgOm1ldGg6YF9fZGl2bW9kX19gIG1ldGhvZCBzaG91bGQgYmUgdGhlCi0gICBlcXVpdmFsZW50IHRvIHVzaW5nIDptZXRoOmBfX2Zsb29yZGl2X19gIGFuZCA6bWV0aDpgX19tb2RfX2A7IGl0IHNob3VsZCBub3QgYmUKLSAgIHJlbGF0ZWQgdG8gOm1ldGg6YF9fdHJ1ZWRpdl9fYC4gIE5vdGUgdGhhdCA6bWV0aDpgX19wb3dfX2Agc2hvdWxkIGJlIGRlZmluZWQKLSAgIHRvIGFjY2VwdCBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpZiB0aGUgdGVybmFyeSB2ZXJzaW9uIG9mIHRoZSBidWlsdC1pbgotICAgOmZ1bmM6YHBvd2AgZnVuY3Rpb24gaXMgdG8gYmUgc3VwcG9ydGVkLgorICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucworICAgKGBgK2BgLCBgYC1gYCwgYGAqYGAsIGBgQGBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCwgOmZ1bmM6YGRpdm1vZGAsCisgICA6ZnVuYzpgcG93YCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLCBgYHxgYCkuICBGb3IgaW5zdGFuY2UsIHRvCisgICBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBgYHggKyB5YGAsIHdoZXJlICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQKKyAgIGhhcyBhbiA6bWV0aDpgX19hZGRfX2AgbWV0aG9kLCBgYHguX19hZGRfXyh5KWBgIGlzIGNhbGxlZC4gIFRoZQorICAgOm1ldGg6YF9fZGl2bW9kX19gIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmcKKyAgIDptZXRoOmBfX2Zsb29yZGl2X19gIGFuZCA6bWV0aDpgX19tb2RfX2A7IGl0IHNob3VsZCBub3QgYmUgcmVsYXRlZCB0bworICAgOm1ldGg6YF9fdHJ1ZWRpdl9fYC4gIE5vdGUgdGhhdCA6bWV0aDpgX19wb3dfX2Agc2hvdWxkIGJlIGRlZmluZWQgdG8gYWNjZXB0CisgICBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpZiB0aGUgdGVybmFyeSB2ZXJzaW9uIG9mIHRoZSBidWlsdC1pbiA6ZnVuYzpgcG93YAorICAgZnVuY3Rpb24gaXMgdG8gYmUgc3VwcG9ydGVkLgogCiAgICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGUgc3VwcGxpZWQKICAgIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiBgYE5vdEltcGxlbWVudGVkYGAuCkBAIC0yMDIzLDYgKzIwMzUsNyBAQAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKQorICAgICAgICAgICAgb2JqZWN0Ll9fcm1hdG11bF9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKQpAQCAtMjAzOCwxNCArMjA1MSwxNCBAQAogICAgICAgYnVpbHRpbjogZGl2bW9kCiAgICAgICBidWlsdGluOiBwb3cKIAotICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoYGArYGAsCi0gICBgYC1gYCwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLCA6ZnVuYzpgZGl2bW9kYCwgOmZ1bmM6YHBvd2AsIGBgKipgYCwKLSAgIGBgPDxgYCwgYGA+PmBgLCBgYCZgYCwgYGBeYGAsIGBgfGBgKSB3aXRoIHJlZmxlY3RlZCAoc3dhcHBlZCkgb3BlcmFuZHMuCi0gICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0IG9wZXJhbmQgZG9lcyBub3Qgc3VwcG9ydCB0aGUKLSAgIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIGFuZCB0aGUgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudCB0eXBlcy4gWyNdXyAgRm9yCi0gICBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4IC0geWBgLCB3aGVyZSAqeSogaXMgYW4gaW5zdGFuY2Ugb2YKLSAgIGEgY2xhc3MgdGhhdCBoYXMgYW4gOm1ldGg6YF9fcnN1Yl9fYCBtZXRob2QsIGBgeS5fX3JzdWJfXyh4KWBgIGlzIGNhbGxlZCBpZgotICAgYGB4Ll9fc3ViX18oeSlgYCByZXR1cm5zICpOb3RJbXBsZW1lbnRlZCouCisgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zCisgICAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGBAYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLCA6ZnVuYzpgZGl2bW9kYCwKKyAgIDpmdW5jOmBwb3dgLCBgYCoqYGAsIGBgPDxgYCwgYGA+PmBgLCBgYCZgYCwgYGBeYGAsIGBgfGBgKSB3aXRoIHJlZmxlY3RlZAorICAgKHN3YXBwZWQpIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXMKKyAgIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQKKyAgIHR5cGVzLiBbI11fIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4IC0geWBgLCB3aGVyZSAqeSogaXMKKyAgIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gOm1ldGg6YF9fcnN1Yl9fYCBtZXRob2QsIGBgeS5fX3JzdWJfXyh4KWBgCisgICBpcyBjYWxsZWQgaWYgYGB4Ll9fc3ViX18oeSlgYCByZXR1cm5zICpOb3RJbXBsZW1lbnRlZCouCiAKICAgIC4uIGluZGV4OjogYnVpbHRpbjogcG93CiAKQEAgLTIwNjMsNiArMjA3Niw3IEBACiAuLiBtZXRob2Q6OiBvYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpCiAgICAgICAgICAgICBvYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpCiAgICAgICAgICAgICBvYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpCisgICAgICAgICAgICBvYmplY3QuX19pbWF0bXVsX18oc2VsZiwgb3RoZXIpCiAgICAgICAgICAgICBvYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpCiAgICAgICAgICAgICBvYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpCkBAIC0yMDc0LDE3ICsyMDg4LDE3IEBACiAgICAgICAgICAgICBvYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcikKIAogICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkIGFyaXRobWV0aWMgYXNzaWdubWVudHMKLSAgIChgYCs9YGAsIGBgLT1gYCwgYGAqPWBgLCBgYC89YGAsIGBgLy89YGAsIGBgJT1gYCwgYGAqKj1gYCwgYGA8PD1gYCwgYGA+Pj1gYCwKLSAgIGBgJj1gYCwgYGBePWBgLCBgYHw9YGApLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGUgb3BlcmF0aW9uCi0gICBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMKLSAgIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWQKLSAgIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIGlmICp4KiBpcyBhbgotICAgaW5zdGFuY2Ugb2YgYSBjbGFzcyB3aXRoIGFuIDptZXRoOmBfX2lhZGRfX2AgbWV0aG9kLCBgYHggKz0geWBgIGlzIGVxdWl2YWxlbnQKLSAgIHRvIGBgeCA9IHguX19pYWRkX18oeSlgYCAuIE90aGVyd2lzZSwgYGB4Ll9fYWRkX18oeSlgYCBhbmQgYGB5Ll9fcmFkZF9fKHgpYGAKLSAgIGFyZSBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mIGBgeCArIHlgYC4gSW4gY2VydGFpbiBzaXR1YXRpb25zLAotICAgYXVnbWVudGVkIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGVycm9ycyAoc2VlCi0gICA6cmVmOmBmYXEtYXVnbWVudGVkLWFzc2lnbm1lbnQtdHVwbGUtZXJyb3JgKSwgYnV0IHRoaXMgYmVoYXZpb3IgaXMgaW4KLSAgIGZhY3QgcGFydCBvZiB0aGUgZGF0YSBtb2RlbC4KKyAgIChgYCs9YGAsIGBgLT1gYCwgYGAqPWBgLCBgYEA9YGAsIGBgLz1gYCwgYGAvLz1gYCwgYGAlPWBgLCBgYCoqPWBgLCBgYDw8PWBgLAorICAgYGA+Pj1gYCwgYGAmPWBgLCBgYF49YGAsIGBgfD1gYCkuICBUaGVzZSBtZXRob2RzIHNob3VsZCBhdHRlbXB0IHRvIGRvIHRoZQorICAgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgKHdoaWNoIGNvdWxkIGJlLAorICAgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsICpzZWxmKikuICBJZiBhIHNwZWNpZmljIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlCisgICBhdWdtZW50ZWQgYXNzaWdubWVudCBmYWxscyBiYWNrIHRvIHRoZSBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgaWYgKngqCisgICBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHdpdGggYW4gOm1ldGg6YF9faWFkZF9fYCBtZXRob2QsIGBgeCArPSB5YGAgaXMKKyAgIGVxdWl2YWxlbnQgdG8gYGB4ID0geC5fX2lhZGRfXyh5KWBgIC4gT3RoZXJ3aXNlLCBgYHguX19hZGRfXyh5KWBgIGFuZAorICAgYGB5Ll9fcmFkZF9fKHgpYGAgYXJlIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgYGB4ICsgeWBgLiBJbgorICAgY2VydGFpbiBzaXR1YXRpb25zLCBhdWdtZW50ZWQgYXNzaWdubWVudCBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgZXJyb3JzIChzZWUKKyAgIDpyZWY6YGZhcS1hdWdtZW50ZWQtYXNzaWdubWVudC10dXBsZS1lcnJvcmApLCBidXQgdGhpcyBiZWhhdmlvciBpcyBpbiBmYWN0CisgICBwYXJ0IG9mIHRoZSBkYXRhIG1vZGVsLgogCiAKIC4uIG1ldGhvZDo6IG9iamVjdC5fX25lZ19fKHNlbGYpCkBAIC0yMjU0LDYgKzIyNjgsMTU1IEBACiBvYmplY3QgaXRzZWxmIGluIG9yZGVyIHRvIGJlIGNvbnNpc3RlbnRseSBpbnZva2VkIGJ5IHRoZSBpbnRlcnByZXRlcikuCiAKIAorLi4gaW5kZXg6OgorICAgc2luZ2xlOiBjb3JvdXRpbmUKKworQ29yb3V0aW5lcworPT09PT09PT09PQorCisKK0F3YWl0YWJsZSBPYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLQorCitBbiA6dGVybTpgYXdhaXRhYmxlYCBvYmplY3QgZ2VuZXJhbGx5IGltcGxlbWVudHMgYW4gOm1ldGg6YF9fYXdhaXRfX2AgbWV0aG9kLgorOnRlcm06YENvcm91dGluZWAgb2JqZWN0cyByZXR1cm5lZCBmcm9tIDprZXl3b3JkOmBhc3luYyBkZWZgIGZ1bmN0aW9ucworYXJlIGF3YWl0YWJsZS4KKworLi4gbm90ZTo6CisKKyAgIFRoZSA6dGVybTpgZ2VuZXJhdG9yIGl0ZXJhdG9yYCBvYmplY3RzIHJldHVybmVkIGZyb20gZ2VuZXJhdG9ycworICAgZGVjb3JhdGVkIHdpdGggOmZ1bmM6YHR5cGVzLmNvcm91dGluZWAgb3IgOmZ1bmM6YGFzeW5jaW8uY29yb3V0aW5lYAorICAgYXJlIGFsc28gYXdhaXRhYmxlLCBidXQgdGhleSBkbyBub3QgaW1wbGVtZW50IDptZXRoOmBfX2F3YWl0X19gLgorCisuLiBtZXRob2Q6OiBvYmplY3QuX19hd2FpdF9fKHNlbGYpCisKKyAgIE11c3QgcmV0dXJuIGFuIDp0ZXJtOmBpdGVyYXRvcmAuICBTaG91bGQgYmUgdXNlZCB0byBpbXBsZW1lbnQKKyAgIDp0ZXJtOmBhd2FpdGFibGVgIG9iamVjdHMuICBGb3IgaW5zdGFuY2UsIDpjbGFzczpgYXN5bmNpby5GdXR1cmVgIGltcGxlbWVudHMKKyAgIHRoaXMgbWV0aG9kIHRvIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgOmtleXdvcmQ6YGF3YWl0YCBleHByZXNzaW9uLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gc2VlYWxzbzo6IDpwZXA6YDQ5MmAgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgYXdhaXRhYmxlIG9iamVjdHMuCisKKworLi4gX2Nvcm91dGluZS1vYmplY3RzOgorCitDb3JvdXRpbmUgT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0KKworOnRlcm06YENvcm91dGluZWAgb2JqZWN0cyBhcmUgOnRlcm06YGF3YWl0YWJsZWAgb2JqZWN0cy4KK0EgY29yb3V0aW5lJ3MgZXhlY3V0aW9uIGNhbiBiZSBjb250cm9sbGVkIGJ5IGNhbGxpbmcgOm1ldGg6YF9fYXdhaXRfX2AgYW5kCitpdGVyYXRpbmcgb3ZlciB0aGUgcmVzdWx0LiAgV2hlbiB0aGUgY29yb3V0aW5lIGhhcyBmaW5pc2hlZCBleGVjdXRpbmcgYW5kCityZXR1cm5zLCB0aGUgaXRlcmF0b3IgcmFpc2VzIDpleGM6YFN0b3BJdGVyYXRpb25gLCBhbmQgdGhlIGV4Y2VwdGlvbidzCis6YXR0cjpgflN0b3BJdGVyYXRpb24udmFsdWVgIGF0dHJpYnV0ZSBob2xkcyB0aGUgcmV0dXJuIHZhbHVlLiAgSWYgdGhlCitjb3JvdXRpbmUgcmFpc2VzIGFuIGV4Y2VwdGlvbiwgaXQgaXMgcHJvcGFnYXRlZCBieSB0aGUgaXRlcmF0b3IuICBDb3JvdXRpbmVzCitzaG91bGQgbm90IGRpcmVjdGx5IHJhaXNlIHVuaGFuZGxlZCA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBleGNlcHRpb25zLgorCitDb3JvdXRpbmVzIGFsc28gaGF2ZSB0aGUgbWV0aG9kcyBsaXN0ZWQgYmVsb3csIHdoaWNoIGFyZSBhbmFsb2dvdXMgdG8KK3Rob3NlIG9mIGdlbmVyYXRvcnMgKHNlZSA6cmVmOmBnZW5lcmF0b3ItbWV0aG9kc2ApLiAgSG93ZXZlciwgdW5saWtlCitnZW5lcmF0b3JzLCBjb3JvdXRpbmVzIGRvIG5vdCBkaXJlY3RseSBzdXBwb3J0IGl0ZXJhdGlvbi4KKworLi4gbWV0aG9kOjogY29yb3V0aW5lLnNlbmQodmFsdWUpCisKKyAgIFN0YXJ0cyBvciByZXN1bWVzIGV4ZWN1dGlvbiBvZiB0aGUgY29yb3V0aW5lLiAgSWYgKnZhbHVlKiBpcyBgYE5vbmVgYCwKKyAgIHRoaXMgaXMgZXF1aXZhbGVudCB0byBhZHZhbmNpbmcgdGhlIGl0ZXJhdG9yIHJldHVybmVkIGJ5CisgICA6bWV0aDpgX19hd2FpdF9fYC4gIElmICp2YWx1ZSogaXMgbm90IGBgTm9uZWBgLCB0aGlzIG1ldGhvZCBkZWxlZ2F0ZXMKKyAgIHRvIHRoZSA6bWV0aDpgfmdlbmVyYXRvci5zZW5kYCBtZXRob2Qgb2YgdGhlIGl0ZXJhdG9yIHRoYXQgY2F1c2VkCisgICB0aGUgY29yb3V0aW5lIHRvIHN1c3BlbmQuICBUaGUgcmVzdWx0IChyZXR1cm4gdmFsdWUsCisgICA6ZXhjOmBTdG9wSXRlcmF0aW9uYCwgb3Igb3RoZXIgZXhjZXB0aW9uKSBpcyB0aGUgc2FtZSBhcyB3aGVuCisgICBpdGVyYXRpbmcgb3ZlciB0aGUgOm1ldGg6YF9fYXdhaXRfX2AgcmV0dXJuIHZhbHVlLCBkZXNjcmliZWQgYWJvdmUuCisKKy4uIG1ldGhvZDo6IGNvcm91dGluZS50aHJvdyh0eXBlWywgdmFsdWVbLCB0cmFjZWJhY2tdXSkKKworICAgUmFpc2VzIHRoZSBzcGVjaWZpZWQgZXhjZXB0aW9uIGluIHRoZSBjb3JvdXRpbmUuICBUaGlzIG1ldGhvZCBkZWxlZ2F0ZXMKKyAgIHRvIHRoZSA6bWV0aDpgfmdlbmVyYXRvci50aHJvd2AgbWV0aG9kIG9mIHRoZSBpdGVyYXRvciB0aGF0IGNhdXNlZAorICAgdGhlIGNvcm91dGluZSB0byBzdXNwZW5kLCBpZiBpdCBoYXMgc3VjaCBhIG1ldGhvZC4gIE90aGVyd2lzZSwKKyAgIHRoZSBleGNlcHRpb24gaXMgcmFpc2VkIGF0IHRoZSBzdXNwZW5zaW9uIHBvaW50LiAgVGhlIHJlc3VsdAorICAgKHJldHVybiB2YWx1ZSwgOmV4YzpgU3RvcEl0ZXJhdGlvbmAsIG9yIG90aGVyIGV4Y2VwdGlvbikgaXMgdGhlIHNhbWUgYXMKKyAgIHdoZW4gaXRlcmF0aW5nIG92ZXIgdGhlIDptZXRoOmBfX2F3YWl0X19gIHJldHVybiB2YWx1ZSwgZGVzY3JpYmVkCisgICBhYm92ZS4gIElmIHRoZSBleGNlcHRpb24gaXMgbm90IGNhdWdodCBpbiB0aGUgY29yb3V0aW5lLCBpdCBwcm9wYWdhdGVzCisgICBiYWNrIHRvIHRoZSBjYWxsZXIuCisKKy4uIG1ldGhvZDo6IGNvcm91dGluZS5jbG9zZSgpCisKKyAgIENhdXNlcyB0aGUgY29yb3V0aW5lIHRvIGNsZWFuIGl0c2VsZiB1cCBhbmQgZXhpdC4gIElmIHRoZSBjb3JvdXRpbmUKKyAgIGlzIHN1c3BlbmRlZCwgdGhpcyBtZXRob2QgZmlyc3QgZGVsZWdhdGVzIHRvIHRoZSA6bWV0aDpgfmdlbmVyYXRvci5jbG9zZWAKKyAgIG1ldGhvZCBvZiB0aGUgaXRlcmF0b3IgdGhhdCBjYXVzZWQgdGhlIGNvcm91dGluZSB0byBzdXNwZW5kLCBpZiBpdAorICAgaGFzIHN1Y2ggYSBtZXRob2QuICBUaGVuIGl0IHJhaXNlcyA6ZXhjOmBHZW5lcmF0b3JFeGl0YCBhdCB0aGUKKyAgIHN1c3BlbnNpb24gcG9pbnQsIGNhdXNpbmcgdGhlIGNvcm91dGluZSB0byBpbW1lZGlhdGVseSBjbGVhbiBpdHNlbGYgdXAuCisgICBGaW5hbGx5LCB0aGUgY29yb3V0aW5lIGlzIG1hcmtlZCBhcyBoYXZpbmcgZmluaXNoZWQgZXhlY3V0aW5nLCBldmVuIGlmCisgICBpdCB3YXMgbmV2ZXIgc3RhcnRlZC4KKworICAgQ29yb3V0aW5lIG9iamVjdHMgYXJlIGF1dG9tYXRpY2FsbHkgY2xvc2VkIHVzaW5nIHRoZSBhYm92ZSBwcm9jZXNzIHdoZW4KKyAgIHRoZXkgYXJlIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4KKworCitBc3luY2hyb25vdXMgSXRlcmF0b3JzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FuICphc3luY2hyb25vdXMgaXRlcmFibGUqIGlzIGFibGUgdG8gY2FsbCBhc3luY2hyb25vdXMgY29kZSBpbiBpdHMKK2BgX19haXRlcl9fYGAgaW1wbGVtZW50YXRpb24sIGFuZCBhbiAqYXN5bmNocm9ub3VzIGl0ZXJhdG9yKiBjYW4gY2FsbAorYXN5bmNocm9ub3VzIGNvZGUgaW4gaXRzIGBgX19hbmV4dF9fYGAgbWV0aG9kLgorCitBc3luY2hyb25vdXMgaXRlcmF0b3JzIGNhbiBiZSB1c2VkIGluIGFuIDprZXl3b3JkOmBhc3luYyBmb3JgIHN0YXRlbWVudC4KKworLi4gbWV0aG9kOjogb2JqZWN0Ll9fYWl0ZXJfXyhzZWxmKQorCisgICBNdXN0IHJldHVybiBhbiAqYXdhaXRhYmxlKiByZXN1bHRpbmcgaW4gYW4gKmFzeW5jaHJvbm91cyBpdGVyYXRvciogb2JqZWN0LgorCisuLiBtZXRob2Q6OiBvYmplY3QuX19hbmV4dF9fKHNlbGYpCisKKyAgIE11c3QgcmV0dXJuIGFuICphd2FpdGFibGUqIHJlc3VsdGluZyBpbiBhIG5leHQgdmFsdWUgb2YgdGhlIGl0ZXJhdG9yLiAgU2hvdWxkCisgICByYWlzZSBhIDpleGM6YFN0b3BBc3luY0l0ZXJhdGlvbmAgZXJyb3Igd2hlbiB0aGUgaXRlcmF0aW9uIGlzIG92ZXIuCisKK0FuIGV4YW1wbGUgb2YgYW4gYXN5bmNocm9ub3VzIGl0ZXJhYmxlIG9iamVjdDo6CisKKyAgICBjbGFzcyBSZWFkZXI6CisgICAgICAgIGFzeW5jIGRlZiByZWFkbGluZShzZWxmKToKKyAgICAgICAgICAgIC4uLgorCisgICAgICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIGFzeW5jIGRlZiBfX2FuZXh0X18oc2VsZik6CisgICAgICAgICAgICB2YWwgPSBhd2FpdCBzZWxmLnJlYWRsaW5lKCkKKyAgICAgICAgICAgIGlmIHZhbCA9PSBiJyc6CisgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uCisgICAgICAgICAgICByZXR1cm4gdmFsCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKK0FzeW5jaHJvbm91cyBDb250ZXh0IE1hbmFnZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbiAqYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlciogaXMgYSAqY29udGV4dCBtYW5hZ2VyKiB0aGF0IGlzIGFibGUgdG8KK3N1c3BlbmQgZXhlY3V0aW9uIGluIGl0cyBgYF9fYWVudGVyX19gYCBhbmQgYGBfX2FleGl0X19gYCBtZXRob2RzLgorCitBc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VycyBjYW4gYmUgdXNlZCBpbiBhbiA6a2V5d29yZDpgYXN5bmMgd2l0aGAgc3RhdGVtZW50LgorCisuLiBtZXRob2Q6OiBvYmplY3QuX19hZW50ZXJfXyhzZWxmKQorCisgICBUaGlzIG1ldGhvZCBpcyBzZW1hbnRpY2FsbHkgc2ltaWxhciB0byB0aGUgOm1ldGg6YF9fZW50ZXJfX2AsIHdpdGggb25seQorICAgZGlmZmVyZW5jZSB0aGF0IGl0IG11c3QgcmV0dXJuIGFuICphd2FpdGFibGUqLgorCisuLiBtZXRob2Q6OiBvYmplY3QuX19hZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaykKKworICAgVGhpcyBtZXRob2QgaXMgc2VtYW50aWNhbGx5IHNpbWlsYXIgdG8gdGhlIDptZXRoOmBfX2V4aXRfX2AsIHdpdGggb25seQorICAgZGlmZmVyZW5jZSB0aGF0IGl0IG11c3QgcmV0dXJuIGFuICphd2FpdGFibGUqLgorCitBbiBleGFtcGxlIG9mIGFuIGFzeW5jaHJvbm91cyBjb250ZXh0IG1hbmFnZXIgY2xhc3M6OgorCisgICAgY2xhc3MgQXN5bmNDb250ZXh0TWFuYWdlcjoKKyAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICBhd2FpdCBsb2coJ2VudGVyaW5nIGNvbnRleHQnKQorCisgICAgICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4YywgdGIpOgorICAgICAgICAgICAgYXdhaXQgbG9nKCdleGl0aW5nIGNvbnRleHQnKQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIAogLi4gWyNdIEl0ICppcyogcG9zc2libGUgaW4gc29tZSBjYXNlcyB0byBjaGFuZ2UgYW4gb2JqZWN0J3MgdHlwZSwgdW5kZXIgY2VydGFpbgpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9leHByZXNzaW9ucy5yc3QgYi9Eb2MvcmVmZXJlbmNlL2V4cHJlc3Npb25zLnJzdAppbmRleCBiNmIyYjAwLi45OWZhMDM3IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2V4cHJlc3Npb25zLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2V4cHJlc3Npb25zLnJzdApAQCAtMzkwLDYgKzM5MCw3IEBACiAgICAgICB0byBzdWItZ2VuZXJhdG9ycyBlYXN5LgogCiAuLiBpbmRleDo6IG9iamVjdDogZ2VuZXJhdG9yCisuLiBfZ2VuZXJhdG9yLW1ldGhvZHM6CiAKIEdlbmVyYXRvci1pdGVyYXRvciBtZXRob2RzCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgpAQCAtNDQzLDEyICs0NDQsMTIgQEAKIC4uIG1ldGhvZDo6IGdlbmVyYXRvci5jbG9zZSgpCiAKICAgIFJhaXNlcyBhIDpleGM6YEdlbmVyYXRvckV4aXRgIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIHdhcwotICAgcGF1c2VkLiAgSWYgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiB0aGVuIHJhaXNlcyA6ZXhjOmBTdG9wSXRlcmF0aW9uYCAoYnkKLSAgIGV4aXRpbmcgbm9ybWFsbHksIG9yIGR1ZSB0byBhbHJlYWR5IGJlaW5nIGNsb3NlZCkgb3IgOmV4YzpgR2VuZXJhdG9yRXhpdGAgKGJ5Ci0gICBub3QgY2F0Y2hpbmcgdGhlIGV4Y2VwdGlvbiksIGNsb3NlIHJldHVybnMgdG8gaXRzIGNhbGxlci4gIElmIHRoZSBnZW5lcmF0b3IKLSAgIHlpZWxkcyBhIHZhbHVlLCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIGdlbmVyYXRvciByYWlzZXMgYW55Ci0gICBvdGhlciBleGNlcHRpb24sIGl0IGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGNhbGxlci4gIDptZXRoOmBjbG9zZWAgZG9lcyBub3RoaW5nCi0gICBpZiB0aGUgZ2VuZXJhdG9yIGhhcyBhbHJlYWR5IGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uIG9yIG5vcm1hbCBleGl0LgorICAgcGF1c2VkLiAgSWYgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiB0aGVuIGV4aXRzIGdyYWNlZnVsbHksIGlzIGFscmVhZHkgY2xvc2VkLAorICAgb3IgcmFpc2VzIDpleGM6YEdlbmVyYXRvckV4aXRgIChieSBub3QgY2F0Y2hpbmcgdGhlIGV4Y2VwdGlvbiksIGNsb3NlCisgICByZXR1cm5zIHRvIGl0cyBjYWxsZXIuICBJZiB0aGUgZ2VuZXJhdG9yIHlpZWxkcyBhIHZhbHVlLCBhCisgICA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZC4gIElmIHRoZSBnZW5lcmF0b3IgcmFpc2VzIGFueSBvdGhlciBleGNlcHRpb24sCisgICBpdCBpcyBwcm9wYWdhdGVkIHRvIHRoZSBjYWxsZXIuICA6bWV0aDpgY2xvc2VgIGRvZXMgbm90aGluZyBpZiB0aGUgZ2VuZXJhdG9yCisgICBoYXMgYWxyZWFkeSBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiBvciBub3JtYWwgZXhpdC4KIAogLi4gaW5kZXg6OiBzaW5nbGU6IHlpZWxkOyBleGFtcGxlcwogCkBAIC04MTEsNiArODEyLDIwIEBACiAgICBpZiB0aGF0IG1ldGhvZCB3YXMgY2FsbGVkLgogCiAKKy4uIF9hd2FpdDoKKworQXdhaXQgZXhwcmVzc2lvbgorPT09PT09PT09PT09PT09PQorCitTdXNwZW5kIHRoZSBleGVjdXRpb24gb2YgOnRlcm06YGNvcm91dGluZWAgb24gYW4gOnRlcm06YGF3YWl0YWJsZWAgb2JqZWN0LgorQ2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUgYSA6dGVybTpgY29yb3V0aW5lIGZ1bmN0aW9uYC4KKworLi4gcHJvZHVjdGlvbmxpc3Q6OgorICAgYXdhaXQ6IFsiYXdhaXQiXSBgcHJpbWFyeWAKKworLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gX3Bvd2VyOgogCiBUaGUgcG93ZXIgb3BlcmF0b3IKQEAgLTgyMCw3ICs4MzUsNyBAQAogbGVzcyB0aWdodGx5IHRoYW4gdW5hcnkgb3BlcmF0b3JzIG9uIGl0cyByaWdodC4gIFRoZSBzeW50YXggaXM6CiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKLSAgIHBvd2VyOiBgcHJpbWFyeWAgWyIqKiIgYHVfZXhwcmBdCisgICBwb3dlcjogYGF3YWl0YCBbIioqIiBgdV9leHByYF0KIAogVGh1cywgaW4gYW4gdW5wYXJlbnRoZXNpemVkIHNlcXVlbmNlIG9mIHBvd2VyIGFuZCB1bmFyeSBvcGVyYXRvcnMsIHRoZSBvcGVyYXRvcnMKIGFyZSBldmFsdWF0ZWQgZnJvbSByaWdodCB0byBsZWZ0ICh0aGlzIGRvZXMgbm90IGNvbnN0cmFpbiB0aGUgZXZhbHVhdGlvbiBvcmRlcgpAQCAtODkxLDggKzkwNiw5IEBACiBvcGVyYXRvcnMgYW5kIG9uZSBmb3IgYWRkaXRpdmUgb3BlcmF0b3JzOgogCiAuLiBwcm9kdWN0aW9ubGlzdDo6Ci0gICBtX2V4cHI6IGB1X2V4cHJgIHwgYG1fZXhwcmAgIioiIGB1X2V4cHJgIHwgYG1fZXhwcmAgIi8vIiBgdV9leHByYCB8IGBtX2V4cHJgICIvIiBgdV9leHByYAotICAgICAgICAgOiB8IGBtX2V4cHJgICIlIiBgdV9leHByYAorICAgbV9leHByOiBgdV9leHByYCB8IGBtX2V4cHJgICIqIiBgdV9leHByYCB8IGBtX2V4cHJgICJAIiBgbV9leHByYCB8CisgICAgICAgICA6IGBtX2V4cHJgICIvLyIgYHVfZXhwcmB8IGBtX2V4cHJgICIvIiBgdV9leHByYCB8CisgICAgICAgICA6IGBtX2V4cHJgICIlIiBgdV9leHByYAogICAgYV9leHByOiBgbV9leHByYCB8IGBhX2V4cHJgICIrIiBgbV9leHByYCB8IGBhX2V4cHJgICItIiBgbV9leHByYAogCiAuLiBpbmRleDo6IHNpbmdsZTogbXVsdGlwbGljYXRpb24KQEAgLTkwMyw2ICs5MTksMTMgQEAKIGNvbW1vbiB0eXBlIGFuZCB0aGVuIG11bHRpcGxpZWQgdG9nZXRoZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHNlcXVlbmNlCiByZXBldGl0aW9uIGlzIHBlcmZvcm1lZDsgYSBuZWdhdGl2ZSByZXBldGl0aW9uIGZhY3RvciB5aWVsZHMgYW4gZW1wdHkgc2VxdWVuY2UuCiAKKy4uIGluZGV4Ojogc2luZ2xlOiBtYXRyaXggbXVsdGlwbGljYXRpb24KKworVGhlIGBgQGBgIChhdCkgb3BlcmF0b3IgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgbWF0cml4IG11bHRpcGxpY2F0aW9uLiAgTm8KK2J1aWx0aW4gUHl0aG9uIHR5cGVzIGltcGxlbWVudCB0aGlzIG9wZXJhdG9yLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gaW5kZXg6OgogICAgZXhjZXB0aW9uOiBaZXJvRGl2aXNpb25FcnJvcgogICAgc2luZ2xlOiBkaXZpc2lvbgpAQCAtMTQ2NiwxMyArMTQ4OSwxNiBAQAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IGBgK2BgLCBgYC1gYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbiAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAgICAgICAgICAgICAgICAgICAgfCBNdWx0aXBsaWNhdGlvbiwgZGl2aXNpb24sIHJlbWFpbmRlciB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFsjXV8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYGAqYGAsIGBgQGBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCAgICAgICAgICAgIHwgTXVsdGlwbGljYXRpb24sIG1hdHJpeCAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtdWx0aXBsaWNhdGlvbiBkaXZpc2lvbiwgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlbWFpbmRlciBbI11fICAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBgYCt4YGAsIGBgLXhgYCwgYGB+eGBgICAgICAgICAgICAgICAgICAgICAgICAgfCBQb3NpdGl2ZSwgbmVnYXRpdmUsIGJpdHdpc2UgTk9UICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgYGAqKmBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRXhwb25lbnRpYXRpb24gWyNdXyAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgYXdhaXRgYCBgYHhgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEF3YWl0IGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBgYHhbaW5kZXhdYGAsIGBgeFtpbmRleDppbmRleF1gYCwgICAgICAgICAgICAgfCBTdWJzY3JpcHRpb24sIHNsaWNpbmcsICAgICAgICAgICAgICB8CiB8IGBgeChhcmd1bWVudHMuLi4pYGAsIGBgeC5hdHRyaWJ1dGVgYCAgICAgICAgICB8IGNhbGwsIGF0dHJpYnV0ZSByZWZlcmVuY2UgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0IGIvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0CmluZGV4IDE2ZDI4ZDguLjIxNDRjMWYgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QKQEAgLTI5LDExICsyOSwxMCBAQAogYSBuYW1lIGJpbmRpbmcgb3BlcmF0aW9uLgogCiBXaGVuIGNhbGxpbmcgOmZ1bmM6YF9faW1wb3J0X19gIGFzIHBhcnQgb2YgYW4gaW1wb3J0IHN0YXRlbWVudCwgdGhlCi1pbXBvcnQgc3lzdGVtIGZpcnN0IGNoZWNrcyB0aGUgbW9kdWxlIGdsb2JhbCBuYW1lc3BhY2UgZm9yIGEgZnVuY3Rpb24gYnkKLXRoYXQgbmFtZS4gSWYgaXQgaXMgbm90IGZvdW5kLCB0aGVuIHRoZSBzdGFuZGFyZCBidWlsdGluIDpmdW5jOmBfX2ltcG9ydF9fYAotaXMgY2FsbGVkLiBPdGhlciBtZWNoYW5pc21zIGZvciBpbnZva2luZyB0aGUgaW1wb3J0IHN5c3RlbSAoc3VjaCBhcwotOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCkgZG8gbm90IHBlcmZvcm0gdGhpcyBjaGVjayBhbmQgd2lsbCBhbHdheXMKLXVzZSB0aGUgc3RhbmRhcmQgaW1wb3J0IHN5c3RlbS4KK3N0YW5kYXJkIGJ1aWx0aW4gOmZ1bmM6YF9faW1wb3J0X19gIGlzIGNhbGxlZC4gT3RoZXIgbWVjaGFuaXNtcyBmb3IKK2ludm9raW5nIHRoZSBpbXBvcnQgc3lzdGVtIChzdWNoIGFzIDpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWApIG1heQorY2hvb3NlIHRvIHN1YnZlcnQgOmZ1bmM6YF9faW1wb3J0X19gIGFuZCB1c2UgaXRzIG93biBzb2x1dGlvbiB0bworaW1wbGVtZW50IGltcG9ydCBzZW1hbnRpY3MuCiAKIFdoZW4gYSBtb2R1bGUgaXMgZmlyc3QgaW1wb3J0ZWQsIFB5dGhvbiBzZWFyY2hlcyBmb3IgdGhlIG1vZHVsZSBhbmQgaWYgZm91bmQsCiBpdCBjcmVhdGVzIGEgbW9kdWxlIG9iamVjdCBbI2ZubW9dXywgaW5pdGlhbGl6aW5nIGl0LiAgSWYgdGhlIG5hbWVkIG1vZHVsZQpAQCAtMzM5LDYgKzMzOCw3IEBACiAKICAgICBtb2R1bGUgPSBOb25lCiAgICAgaWYgc3BlYy5sb2FkZXIgaXMgbm90IE5vbmUgYW5kIGhhc2F0dHIoc3BlYy5sb2FkZXIsICdjcmVhdGVfbW9kdWxlJyk6CisgICAgICAgICMgSXQgaXMgYXNzdW1lZCAnZXhlY19tb2R1bGUnIHdpbGwgYWxzbyBiZSBkZWZpbmVkIG9uIHRoZSBsb2FkZXIuCiAgICAgICAgIG1vZHVsZSA9IHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoc3BlYykKICAgICBpZiBtb2R1bGUgaXMgTm9uZToKICAgICAgICAgbW9kdWxlID0gTW9kdWxlVHlwZShzcGVjLm5hbWUpCkBAIC00MjcsNyArNDI3LDcgQEAKIGJ5IGltcGxlbWVudGluZyBhIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbWV0aG9kLgogSXQgdGFrZXMgb25lIGFyZ3VtZW50LCB0aGUgbW9kdWxlIHNwZWMsIGFuZCByZXR1cm5zIHRoZSBuZXcgbW9kdWxlIG9iamVjdAogdG8gdXNlIGR1cmluZyBsb2FkaW5nLiAgYGBjcmVhdGVfbW9kdWxlKClgYCBkb2VzIG5vdCBuZWVkIHRvIHNldCBhbnkgYXR0cmlidXRlcwotb24gdGhlIG1vZHVsZSBvYmplY3QuICBJZiB0aGUgbG9hZGVyIGRvZXMgbm90IGRlZmluZSBgYGNyZWF0ZV9tb2R1bGUoKWBgLCB0aGUKK29uIHRoZSBtb2R1bGUgb2JqZWN0LiAgSWYgdGhlIG1ldGhvZCByZXR1cm5zIGBgTm9uZWBgLCB0aGUKIGltcG9ydCBtYWNoaW5lcnkgd2lsbCBjcmVhdGUgdGhlIG5ldyBtb2R1bGUgaXRzZWxmLgogCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKQEAgLTQ1OSw3ICs0NTksMTMgQEAKIAogICAgICogSWYgbG9hZGluZyBmYWlscywgdGhlIGxvYWRlciBtdXN0IHJlbW92ZSBhbnkgbW9kdWxlcyBpdCBoYXMgaW5zZXJ0ZWQKICAgICAgIGludG8gOmRhdGE6YHN5cy5tb2R1bGVzYCwgYnV0IGl0IG11c3QgcmVtb3ZlICoqb25seSoqIHRoZSBmYWlsaW5nCi0gICAgICBtb2R1bGUsIGFuZCBvbmx5IGlmIHRoZSBsb2FkZXIgaXRzZWxmIGhhcyBsb2FkZWQgaXQgZXhwbGljaXRseS4KKyAgICAgIG1vZHVsZShzKSwgYW5kIG9ubHkgaWYgdGhlIGxvYWRlciBpdHNlbGYgaGFzIGxvYWRlZCB0aGUgbW9kdWxlKHMpCisgICAgICBleHBsaWNpdGx5LgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgQSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgIGlzIHJhaXNlZCB3aGVuIGBgZXhlY19tb2R1bGUoKWBgIGlzIGRlZmluZWQgYnV0CisgICBgYGNyZWF0ZV9tb2R1bGUoKWBgIGlzIG5vdC4gU3RhcnRpbmcgaW4gUHl0aG9uIDMuNiBpdCB3aWxsIGJlIGFuIGVycm9yIHRvIG5vdAorICAgZGVmaW5lIGBgY3JlYXRlX21vZHVsZSgpYGAgb24gYSBsb2FkZXIgYXR0YWNoZWQgdG8gYSBNb2R1bGVTcGVjLgogCiBTdWJtb2R1bGVzCiAtLS0tLS0tLS0tCkBAIC02NzQsNyArNjgwLDcgQEAKIAogVGhlIGRlZmF1bHQgc2V0IG9mIHBhdGggZW50cnkgZmluZGVycyBpbXBsZW1lbnQgYWxsIHRoZSBzZW1hbnRpY3MgZm9yIGZpbmRpbmcKIG1vZHVsZXMgb24gdGhlIGZpbGUgc3lzdGVtLCBoYW5kbGluZyBzcGVjaWFsIGZpbGUgdHlwZXMgc3VjaCBhcyBQeXRob24gc291cmNlCi1jb2RlIChgYC5weWBgIGZpbGVzKSwgUHl0aG9uIGJ5dGUgY29kZSAoYGAucHljYGAgYW5kIGBgLnB5b2BgIGZpbGVzKSBhbmQKK2NvZGUgKGBgLnB5YGAgZmlsZXMpLCBQeXRob24gYnl0ZSBjb2RlIChgYC5weWNgYCBmaWxlcykgYW5kCiBzaGFyZWQgbGlicmFyaWVzIChlLmcuIGBgLnNvYGAgZmlsZXMpLiBXaGVuIHN1cHBvcnRlZCBieSB0aGUgOm1vZDpgemlwaW1wb3J0YAogbW9kdWxlIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCB0aGUgZGVmYXVsdCBwYXRoIGVudHJ5IGZpbmRlcnMgYWxzbyBoYW5kbGUKIGxvYWRpbmcgYWxsIG9mIHRoZXNlIGZpbGUgdHlwZXMgKG90aGVyIHRoYW4gc2hhcmVkIGxpYnJhcmllcykgZnJvbSB6aXBmaWxlcy4KQEAgLTc4OCw2ICs3OTQsMTUgQEAKIHRvIGFzayB0aGUgZmluZGVyIGZvciBhIG1vZHVsZSBzcGVjLCB3aGljaCBpcyB0aGVuIHVzZWQgd2hlbiBsb2FkaW5nIHRoZQogbW9kdWxlLgogCitUaGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSAtLSBkZW5vdGVkIGJ5IGFuIGVtcHR5IHN0cmluZyAtLSBpcyBoYW5kbGVkCitzbGlnaHRseSBkaWZmZXJlbnRseSBmcm9tIG90aGVyIGVudHJpZXMgb24gOmRhdGE6YHN5cy5wYXRoYC4gRmlyc3QsIGlmIHRoZQorY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBpcyBmb3VuZCB0byBub3QgZXhpc3QsIG5vIHZhbHVlIGlzIHN0b3JlZCBpbgorOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYC4gU2Vjb25kLCB0aGUgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHdvcmtpbmcKK2RpcmVjdG9yeSBpcyBsb29rZWQgdXAgZnJlc2ggZm9yIGVhY2ggbW9kdWxlIGxvb2t1cC4gVGhpcmQsIHRoZSBwYXRoIHVzZWQgZm9yCis6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIGFuZCByZXR1cm5lZCBieQorOm1ldGg6YGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWNgIHdpbGwgYmUgdGhlIGFjdHVhbCBjdXJyZW50Cit3b3JraW5nIGRpcmVjdG9yeSBhbmQgbm90IHRoZSBlbXB0eSBzdHJpbmcuCisKIFBhdGggZW50cnkgZmluZGVyIHByb3RvY29sCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0IGIvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdAppbmRleCBhMTI2NWNmLi44YWQ5NzVmIDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QKQEAgLTMxMyw3ICszMTMsNyBAQAogKiAqTmQqIC0gZGVjaW1hbCBudW1iZXJzCiAqICpQYyogLSBjb25uZWN0b3IgcHVuY3R1YXRpb25zCiAqICpPdGhlcl9JRF9TdGFydCogLSBleHBsaWNpdCBsaXN0IG9mIGNoYXJhY3RlcnMgaW4gYFByb3BMaXN0LnR4dAotICA8aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4zLjAvdWNkL1Byb3BMaXN0LnR4dD5gXyB0byBzdXBwb3J0IGJhY2t3YXJkcworICA8aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOC4wLjAvdWNkL1Byb3BMaXN0LnR4dD5gXyB0byBzdXBwb3J0IGJhY2t3YXJkcwogICBjb21wYXRpYmlsaXR5CiAqICpPdGhlcl9JRF9Db250aW51ZSogLSBsaWtld2lzZQogCkBAIC02OTIsNyArNjkyLDcgQEAKIAogVGhlIGZvbGxvd2luZyB0b2tlbnMgYXJlIG9wZXJhdG9yczo6CiAKLSAgICsgICAgICAgLSAgICAgICAqICAgICAgICoqICAgICAgLyAgICAgICAvLyAgICAgICUKKyAgICsgICAgICAgLSAgICAgICAqICAgICAgICoqICAgICAgLyAgICAgICAvLyAgICAgICUgICAgICBACiAgICA8PCAgICAgID4+ICAgICAgJiAgICAgICB8ICAgICAgIF4gICAgICAgfgogICAgPCAgICAgICA+ICAgICAgIDw9ICAgICAgPj0gICAgICA9PSAgICAgICE9CiAKQEAgLTcwOCw3ICs3MDgsNyBAQAogCiAgICAoICAgICAgICkgICAgICAgWyAgICAgICBdICAgICAgIHsgICAgICAgfQogICAgLCAgICAgICA6ICAgICAgIC4gICAgICAgOyAgICAgICBAICAgICAgID0gICAgICAgLT4KLSAgICs9ICAgICAgLT0gICAgICAqPSAgICAgIC89ICAgICAgLy89ICAgICAlPQorICAgKz0gICAgICAtPSAgICAgICo9ICAgICAgLz0gICAgICAvLz0gICAgICU9ICAgICAgQD0KICAgICY9ICAgICAgfD0gICAgICBePSAgICAgID4+PSAgICAgPDw9ICAgICAqKj0KIAogVGhlIHBlcmlvZCBjYW4gYWxzbyBvY2N1ciBpbiBmbG9hdGluZy1wb2ludCBhbmQgaW1hZ2luYXJ5IGxpdGVyYWxzLiAgQSBzZXF1ZW5jZQpAQCAtNzI5LDQgKzcyOSw0IEBACiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCi0uLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4zLjAvdWNkL05hbWVBbGlhc2VzLnR4dAorLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzguMC4wL3VjZC9OYW1lQWxpYXNlcy50eHQKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdCBiL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdAppbmRleCA4OTQ2YjRmLi41ZjYwNTQwIDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0CkBAIC0yODEsNyArMjgxLDcgQEAKIC4uIHByb2R1Y3Rpb25saXN0OjoKICAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQ6IGBhdWd0YXJnZXRgIGBhdWdvcGAgKGBleHByZXNzaW9uX2xpc3RgIHwgYHlpZWxkX2V4cHJlc3Npb25gKQogICAgYXVndGFyZ2V0OiBgaWRlbnRpZmllcmAgfCBgYXR0cmlidXRlcmVmYCB8IGBzdWJzY3JpcHRpb25gIHwgYHNsaWNpbmdgCi0gICBhdWdvcDogIis9IiB8ICItPSIgfCAiKj0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iCisgICBhdWdvcDogIis9IiB8ICItPSIgfCAiKj0iIHwgIkA9IiB8ICIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IgogICAgICAgICA6IHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IgogCiAoU2VlIHNlY3Rpb24gOnJlZjpgcHJpbWFyaWVzYCBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBvZiB0aGUgbGFzdCB0aHJlZQpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL2V4dGVuc2lvbnMvcHlzcGVjaWZpYy5weSBiL0RvYy90b29scy9leHRlbnNpb25zL3B5c3BlY2lmaWMucHkKaW5kZXggNjRhNTY2NS4uNjMxMTI4MyAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL2V4dGVuc2lvbnMvcHlzcGVjaWZpYy5weQorKysgYi9Eb2MvdG9vbHMvZXh0ZW5zaW9ucy9weXNwZWNpZmljLnB5CkBAIC0zNCw3ICszNCw3IEBACiAKIAogSVNTVUVfVVJJID0gJ2h0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlJXMnCi1TT1VSQ0VfVVJJID0gJ2h0dHBzOi8vaGcucHl0aG9uLm9yZy9jcHl0aG9uL2ZpbGUvMy40LyVzJworU09VUkNFX1VSSSA9ICdodHRwczovL2hnLnB5dGhvbi5vcmcvY3B5dGhvbi9maWxlLzMuNS8lcycKIAogIyBtb25rZXktcGF0Y2ggcmVTVCBwYXJzZXIgdG8gZGlzYWJsZSBhbHBoYWJldGljIGFuZCByb21hbiBlbnVtZXJhdGVkIGxpc3RzCiBmcm9tIGRvY3V0aWxzLnBhcnNlcnMucnN0LnN0YXRlcyBpbXBvcnQgQm9keQpAQCAtMTY0LDYgKzE2NCwxOSBAQAogICAgICAgICByZXR1cm4gUHlDbGFzc21lbWJlci5ydW4oc2VsZikKIAogCitjbGFzcyBQeUFic3RyYWN0TWV0aG9kKFB5Q2xhc3NtZW1iZXIpOgorCisgICAgZGVmIGhhbmRsZV9zaWduYXR1cmUoc2VsZiwgc2lnLCBzaWdub2RlKToKKyAgICAgICAgcmV0ID0gc3VwZXIoUHlBYnN0cmFjdE1ldGhvZCwgc2VsZikuaGFuZGxlX3NpZ25hdHVyZShzaWcsIHNpZ25vZGUpCisgICAgICAgIHNpZ25vZGUuaW5zZXJ0KDAsIGFkZG5vZGVzLmRlc2NfYW5ub3RhdGlvbignYWJzdHJhY3RtZXRob2QgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhYnN0cmFjdG1ldGhvZCAnKSkKKyAgICAgICAgcmV0dXJuIHJldAorCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgc2VsZi5uYW1lID0gJ3B5Om1ldGhvZCcKKyAgICAgICAgcmV0dXJuIFB5Q2xhc3NtZW1iZXIucnVuKHNlbGYpCisKKwogIyBTdXBwb3J0IGZvciBkb2N1bWVudGluZyB2ZXJzaW9uIG9mIHJlbW92YWwgaW4gZGVwcmVjYXRpb25zCiAKIGNsYXNzIERlcHJlY2F0ZWRSZW1vdmVkKERpcmVjdGl2ZSk6CkBAIC0zNjgsNSArMzgxLDYgQEAKICAgICBhcHAuYWRkX2RpcmVjdGl2ZV90b19kb21haW4oJ3B5JywgJ2RlY29yYXRvcm1ldGhvZCcsIFB5RGVjb3JhdG9yTWV0aG9kKQogICAgIGFwcC5hZGRfZGlyZWN0aXZlX3RvX2RvbWFpbigncHknLCAnY29yb3V0aW5lZnVuY3Rpb24nLCBQeUNvcm91dGluZUZ1bmN0aW9uKQogICAgIGFwcC5hZGRfZGlyZWN0aXZlX3RvX2RvbWFpbigncHknLCAnY29yb3V0aW5lbWV0aG9kJywgUHlDb3JvdXRpbmVNZXRob2QpCisgICAgYXBwLmFkZF9kaXJlY3RpdmVfdG9fZG9tYWluKCdweScsICdhYnN0cmFjdG1ldGhvZCcsIFB5QWJzdHJhY3RNZXRob2QpCiAgICAgYXBwLmFkZF9kaXJlY3RpdmUoJ21pc2NuZXdzJywgTWlzY05ld3MpCiAgICAgcmV0dXJuIHsndmVyc2lvbic6ICcxLjAnLCAncGFyYWxsZWxfcmVhZF9zYWZlJzogVHJ1ZX0KZGlmZiAtLWdpdCBhL0RvYy90b29scy9zdXNwLWlnbm9yZWQuY3N2IGIvRG9jL3Rvb2xzL3N1c3AtaWdub3JlZC5jc3YKaW5kZXggMDMyNTMxZC4uMmE5NWZjYSAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL3N1c3AtaWdub3JlZC5jc3YKKysrIGIvRG9jL3Rvb2xzL3N1c3AtaWdub3JlZC5jc3YKQEAgLTEyMSw2ICsxMjEsOCBAQAogbGlicmFyeS9pcGFkZHJlc3MsLDo6LD4+PiBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxMDAwJykKIGxpYnJhcnkvaXBhZGRyZXNzLCw6ZGI4LElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MTAwMCcpCiBsaWJyYXJ5L2lwYWRkcmVzcywsOjosSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxMDAwJykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZGI4LCI+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoIiIyMDAxOmRiODo6MSIiKS5yZXZlcnNlX3BvaW50ZXIiCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosIj4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygiIjIwMDE6ZGI4OjoxIiIpLnJldmVyc2VfcG9pbnRlciIKIGxpYnJhcnkvaXBhZGRyZXNzLCw6OiwiIiI6OmFiYzo3OmRlZiIiIgogbGlicmFyeS9pcGFkZHJlc3MsLDpkZWYsIiIiOjphYmM6NzpkZWYiIiIKIGxpYnJhcnkvaXBhZGRyZXNzLCw6Oiw6OkZGRkYvOTYKQEAgLTEzOCw4ICsxNDAsNiBAQAogbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLCw6cG9ydCxob3N0OnBvcnQKIGxpYnJhcnkvbW1hcCwsOmkyLG9ialtpMTppMl0KIGxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgQWRkIG1vcmUgdGFza3MgdXNpbmcgYHB1dCgpYAotbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIj4+PiBsLl9jYWxsbWV0aG9kKCdfX2dldGl0ZW1fXycsICgyMCwpKSAgICAgIyBlcXVpdiB0byBgbFsyMF1gIgotbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIj4+PiBsLl9jYWxsbWV0aG9kKCdfX2dldGl0ZW1fXycsIChzbGljZSgyLCA3KSwpKSAgIyBlcXVpdiB0byBgbFsyOjddYCIKIGxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCw6cXVldWUsIj4+PiBRdWV1ZU1hbmFnZXIucmVnaXN0ZXIoJ2dldF9xdWV1ZScsIGNhbGxhYmxlPWxhbWJkYTpxdWV1ZSkiCiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIHJlZ2lzdGVyIHRoZSBGb28gY2xhc3M7IG1ha2UgYGYoKWAgYW5kIGBnKClgIGFjY2Vzc2libGUgdmlhIHByb3h5CiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIHJlZ2lzdGVyIHRoZSBGb28gY2xhc3M7IG1ha2UgYGcoKWAgYW5kIGBfaCgpYCBhY2Nlc3NpYmxlIHZpYSBwcm94eQpAQCAtMTc2LDggKzE3Niw2IEBACiBsaWJyYXJ5L3NzbCwsOm9wcyxFbWFpbCBBZGRyZXNzIFtdOm9wc0BteXNlcnZlci5teWdyb3VwLm15b3JnYW5pemF0aW9uLmNvbQogbGlicmFyeS9zc2wsLDpTb21lLCJMb2NhbGl0eSBOYW1lIChlZywgY2l0eSkgW106U29tZSBDaXR5IgogbGlicmFyeS9zc2wsLDpVUyxDb3VudHJ5IE5hbWUgKDIgbGV0dGVyIGNvZGUpIFtBVV06VVMKLWxpYnJhcnkvc3RkdHlwZXMsLDo6LD4+PiBhWzo6LTFdLnRvbGlzdCgpCi1saWJyYXJ5L3N0ZHR5cGVzLCw6Oiw+Pj4gYVs6OjJdLnRvbGlzdCgpCiBsaWJyYXJ5L3N0ZHR5cGVzLCw6ZW5kLHNbc3RhcnQ6ZW5kXQogbGlicmFyeS9zdGR0eXBlcywsOjosPj4+IGhhc2godls6Oi0yXSkgPT0gaGFzaChiJ2FiY2VmZydbOjotMl0pCiBsaWJyYXJ5L3N0ZHR5cGVzLCw6bGVuLHNbbGVuKHMpOmxlbihzKV0KQEAgLTIwNywxNiArMjA1LDYgQEAKIGxpYnJhcnkvdmVudiwsOnBhcmFtLCI6cGFyYW0gcHJvZ3Jlc3M6IElmIHNldHVwdG9vbHMgb3IgcGlwIGFyZSBpbnN0YWxsZWQsIHRoZSBwcm9ncmVzcyBvZiB0aGUiCiBsaWJyYXJ5L3ZlbnYsLDpwYXJhbSwiOnBhcmFtIG5vcGlwOiBJZiBUcnVlLCBwaXAgaXMgbm90IGluc3RhbGxlZCBpbnRvIHRoZSBjcmVhdGVkIgogbGlicmFyeS92ZW52LCw6cGFyYW0sOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKLWxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6c29tZXRhZyxwcmVmaXg6c29tZXRhZwotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpmaWN0aW9uYWwsIjxhY3RvcnMgeG1sbnM6ZmljdGlvbmFsPSIiaHR0cDovL2NoYXJhY3RlcnMuZXhhbXBsZS5jb20iIiIKLWxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkxhbmNlbG90PC9maWN0aW9uYWw6Y2hhcmFjdGVyPgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+QXJjaGllIExlYWNoPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+U2lyIFJvYmluPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+R3VudGhlcjwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KLWxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkNvbW1hbmRlciBDbGVtZW50PC9maWN0aW9uYWw6Y2hhcmFjdGVyPgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDphY3RvciwiZm9yIGFjdG9yIGluIHJvb3QuZmluZGFsbCgncmVhbF9wZXJzb246YWN0b3InLCBucyk6IgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpuYW1lLCJuYW1lID0gYWN0b3IuZmluZCgncmVhbF9wZXJzb246bmFtZScsIG5zKSIKLWxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLCJmb3IgY2hhciBpbiBhY3Rvci5maW5kYWxsKCdyb2xlOmNoYXJhY3RlcicsIG5zKToiCiBsaWJyYXJ5L3htbHJwYy5jbGllbnQsLDpwYXNzLGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKIGxpYnJhcnkveG1scnBjLmNsaWVudCwsOnBhc3MsdXNlcjpwYXNzCiBsaWJyYXJ5L3htbHJwYy5jbGllbnQsLDpwb3J0LGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKQEAgLTI0Myw3ICsyMzEsNiBAQAogdHV0b3JpYWwvc3RkbGliMiwsOnN0YXJ0LCJmaWVsZHMgPSBzdHJ1Y3QudW5wYWNrKCc8SUlJSEgnLCBkYXRhW3N0YXJ0OnN0YXJ0KzE2XSkiCiB0dXRvcmlhbC9zdGRsaWIyLCw6c3RhcnQsZmlsZW5hbWUgPSBkYXRhW3N0YXJ0OnN0YXJ0K2ZpbGVuYW1lc2l6ZV0KIHR1dG9yaWFsL3N0ZGxpYjIsLDpXYXJuaW5nLFdBUk5JTkc6cm9vdDpXYXJuaW5nOmNvbmZpZyBmaWxlIHNlcnZlci5jb25mIG5vdCBmb3VuZAotdHV0b3JpYWwvdmVudiwsOmM3Yjk2NDVhNmYzNSwiUHl0aG9uIDMuNC4zKyAoMy40OmM3Yjk2NDVhNmYzNSssIE1heSAyMiAyMDE1LCAwOTozMToyNSkiCiB1c2luZy9jbWRsaW5lLCw6Y2F0ZWdvcnksYWN0aW9uOm1lc3NhZ2U6Y2F0ZWdvcnk6bW9kdWxlOmxpbmUKIHVzaW5nL2NtZGxpbmUsLDplcnJvcmhhbmRsZXIsOmVycm9yaGFuZGxlcgogdXNpbmcvY21kbGluZSwsOmxpbmUsYWN0aW9uOm1lc3NhZ2U6Y2F0ZWdvcnk6bW9kdWxlOmxpbmUKQEAgLTI2NCw2ICsyNTEsMTEgQEAKIHdoYXRzbmV3LzIuNSwsOm1lbW9yeSw6bWVtb3J5Ogogd2hhdHNuZXcvMi41LCw6c3RlcCxbc3RhcnQ6c3RvcDpzdGVwXQogd2hhdHNuZXcvMi41LCw6c3RvcCxbc3RhcnQ6c3RvcDpzdGVwXQord2hhdHNuZXcvMi43LCw6OiwiUGFyc2VSZXN1bHQoc2NoZW1lPSdodHRwJywgbmV0bG9jPSdbMTA4MDo6ODo4MDA6MjAwQzo0MTdBXScsIgord2hhdHNuZXcvMi43LCw6Oiw+Pj4gdXJscGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bMTA4MDo6ODo4MDA6MjAwQzo0MTdBXS9mb28nKQord2hhdHNuZXcvMi43LCw6U3VuZGF5LCcyMDA5OjQ6U3VuZGF5Jword2hhdHNuZXcvMi43LCw6Q29va2llLCJleHBvcnQgUFlUSE9OV0FSTklOR1M9YWxsLGVycm9yOjo6Q29va2llOjAiCit3aGF0c25ldy8yLjcsLDo6LCJleHBvcnQgUFlUSE9OV0FSTklOR1M9YWxsLGVycm9yOjo6Q29va2llOjAiCiB3aGF0c25ldy8zLjIsLDphZmZlLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCiB3aGF0c25ldy8zLjIsLDphZmZlLD4+PiB1cmxsaWIucGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXS9mb28vJykKIHdoYXRzbmV3LzMuMiwsOmJlZWYsIm5ldGxvYz0nW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0nLCIKQEAgLTI3OSwxNCArMjcxLDI3IEBACiB3aGF0c25ldy8zLjIsLDpneiwiPj4+IHdpdGggdGFyZmlsZS5vcGVuKG5hbWU9J215YXJjaGl2ZS50YXIuZ3onLCBtb2RlPSd3Omd6JykgYXMgdGY6Igogd2hhdHNuZXcvMy4yLCw6bG9jYXRpb24sem9wZTktbG9jYXRpb24gPSAke3pvcGU5OmxvY2F0aW9ufQogd2hhdHNuZXcvMy4yLCw6cHJlZml4LHpvcGUtY29uZiA9ICR7Y3VzdG9tOnByZWZpeH0vZXRjL3pvcGUuY29uZgotd2hhdHNuZXcvY2hhbmdlbG9nLCw6cGxhdGZvcm0sOnBsYXRmb3JtOgogd2hhdHNuZXcvY2hhbmdlbG9nLCw6Z3osIjogVGFyRmlsZSBvcGVuZWQgd2l0aCBleHRlcm5hbCBmaWxlb2JqIGFuZCAiInc6Z3oiIiBtb2RlIGRpZG4ndCIKLXdoYXRzbmV3L2NoYW5nZWxvZywsOlB5dGhvbkNtZCwiV2l0aCBUayA8IDguNSBfdGtpbnRlci5jOlB5dGhvbkNtZCgpIHJhaXNlZCBVbmljb2RlRGVjb2RlRXJyb3IsIGNhdXNlZCIKLXdoYXRzbmV3L2NoYW5nZWxvZywsOjosIjogRml4IEZUUCB0ZXN0cyBmb3IgSVB2NiwgYmluZCB0byAiIjo6MSIiIGluc3RlYWQgb2YgIiJsb2NhbGhvc3QiIi4iCiB3aGF0c25ldy9jaGFuZ2Vsb2csLDo6LCI6IFVzZSAiIjEyNy4wLjAuMSIiIG9yICIiOjoxIiIgaW5zdGVhZCBvZiAiImxvY2FsaG9zdCIiIGFzIG11Y2ggYXMiCi13aGF0c25ldy9jaGFuZ2Vsb2csLDpwYXNzd29yZCx1c2VyOnBhc3N3b3JkCi13aGF0c25ldy8yLjcsNzgwLDpTdW5kYXksJzIwMDk6NDpTdW5kYXknCi13aGF0c25ldy8yLjcsOTA3LDo6LCJleHBvcnQgUFlUSE9OV0FSTklOR1M9YWxsLGVycm9yOjo6Q29va2llOjAiCi13aGF0c25ldy8yLjcsOTA3LDpDb29raWUsImV4cG9ydCBQWVRIT05XQVJOSU5HUz1hbGwsZXJyb3I6OjpDb29raWU6MCIKLXdoYXRzbmV3LzIuNywxNjU3LDo6LD4+PiB1cmxwYXJzZS51cmxwYXJzZSgnaHR0cDovL1sxMDgwOjo4OjgwMDoyMDBDOjQxN0FdL2ZvbycpCi13aGF0c25ldy8yLjcsMTY1Nyw6OiwiUGFyc2VSZXN1bHQoc2NoZW1lPSdodHRwJywgbmV0bG9jPSdbMTA4MDo6ODo4MDA6MjAwQzo0MTdBXScsIgorbGlicmFyeS90YXJmaWxlLDE0OSw6eHosJ3g6eHonCitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwyOTAsOnNvbWV0YWcscHJlZml4OnNvbWV0YWcKK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMwMSw6ZmljdGlvbmFsLCI8YWN0b3JzIHhtbG5zOmZpY3Rpb25hbD0iImh0dHA6Ly9jaGFyYWN0ZXJzLmV4YW1wbGUuY29tIiIiCitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5MYW5jZWxvdDwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMwMSw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkFyY2hpZSBMZWFjaDwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMwMSw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPlNpciBSb2JpbjwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMwMSw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkd1bnRoZXI8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+CitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5Db21tYW5kZXIgQ2xlbWVudDwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMzMiw6YWN0b3IsImZvciBhY3RvciBpbiByb290LmZpbmRhbGwoJ3JlYWxfcGVyc29uOmFjdG9yJywgbnMpOiIKK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMzMiw6bmFtZSwibmFtZSA9IGFjdG9yLmZpbmQoJ3JlYWxfcGVyc29uOm5hbWUnLCBucykiCitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMzIsOmNoYXJhY3RlciwiZm9yIGNoYXIgaW4gYWN0b3IuZmluZGFsbCgncm9sZTpjaGFyYWN0ZXInLCBucyk6IgorbGlicmFyeS96aXBhcHAsMzEsOm1haW4sIiQgcHl0aG9uIC1tIHppcGFwcCBteWFwcCAtbSAiIm15YXBwOm1haW4iIiIKK2xpYnJhcnkvemlwYXBwLDgyLDpmbiwiYXJndW1lbnQgc2hvdWxkIGhhdmUgdGhlIGZvcm0gIiJwa2cubW9kOmZuIiIsIHdoZXJlICIicGtnLm1vZCIiIGlzIGEiCitsaWJyYXJ5L3ppcGFwcCwxNTUsOmNhbGxhYmxlLCIiInBrZy5tb2R1bGU6Y2FsbGFibGUiIiBhbmQgdGhlIGFyY2hpdmUgd2lsbCBiZSBydW4gYnkgaW1wb3J0aW5nIgorbGlicmFyeS9zdGR0eXBlcywsOjosPj4+IG1bOjoyXS50b2xpc3QoKQorbGlicmFyeS9zeXMsLGAsIyBgYHdyYXBwZXJgYCBjcmVhdGVzIGEgYGB3cmFwKGNvcm8pYGAgY29yb3V0aW5lOgordHV0b3JpYWwvdmVudiw3Nyw6YzdiOTY0NWE2ZjM1LCJQeXRob24gMy40LjMrICgzLjQ6YzdiOTY0NWE2ZjM1KywgTWF5IDIyIDIwMTUsIDA5OjMxOjI1KSIKK3doYXRzbmV3LzMuNSwsOnJvb3QsJ1dBUk5JTkc6cm9vdDp3YXJuaW5nXG4nCit3aGF0c25ldy8zLjUsLDp3YXJuaW5nLCdXQVJOSU5HOnJvb3Q6d2FybmluZ1xuJword2hhdHNuZXcvMy41LCw6Oiw+Pj4gYWRkcjYgPSBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6MScpCit3aGF0c25ldy8zLjUsLDpyb290LEVSUk9SOnJvb3Q6ZXhjZXB0aW9uCit3aGF0c25ldy8zLjUsLDpleGNlcHRpb24sRVJST1I6cm9vdDpleGNlcHRpb24KZGlmZiAtLWdpdCBhL0RvYy90b29scy90ZW1wbGF0ZXMvaW5kZXhzaWRlYmFyLmh0bWwgYi9Eb2MvdG9vbHMvdGVtcGxhdGVzL2luZGV4c2lkZWJhci5odG1sCmluZGV4IGFiZGYwNzAuLjc4ZTljNGYgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy90ZW1wbGF0ZXMvaW5kZXhzaWRlYmFyLmh0bWwKKysrIGIvRG9jL3Rvb2xzL3RlbXBsYXRlcy9pbmRleHNpZGViYXIuaHRtbApAQCAtMyw4ICszLDcgQEAKIDxoMz5Eb2NzIGZvciBvdGhlciB2ZXJzaW9uczwvaDM+CiA8dWw+CiAgIDxsaT48YSBocmVmPSJodHRwczovL2RvY3MucHl0aG9uLm9yZy8yLjcvIj5QeXRob24gMi43IChzdGFibGUpPC9hPjwvbGk+Ci0gIDxsaT48YSBocmVmPSJodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjMvIj5QeXRob24gMy4zIChzdGFibGUpPC9hPjwvbGk+Ci0gIDxsaT48YSBocmVmPSJodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjUvIj5QeXRob24gMy41IChpbiBkZXZlbG9wbWVudCk8L2E+PC9saT4KKyAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNC8iPlB5dGhvbiAzLjQgKHN0YWJsZSk8L2E+PC9saT4KICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG9jL3ZlcnNpb25zLyI+T2xkIHZlcnNpb25zPC9hPjwvbGk+CiA8L3VsPgogCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvYXBwZW5kaXgucnN0IGIvRG9jL3R1dG9yaWFsL2FwcGVuZGl4LnJzdAppbmRleCBjZTUwYzFlLi5lMDQ0NTliIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvYXBwZW5kaXgucnN0CisrKyBiL0RvYy90dXRvcmlhbC9hcHBlbmRpeC5yc3QKQEAgLTQwLDcgKzQwLDcgQEAKIE9uIEJTRCdpc2ggVW5peCBzeXN0ZW1zLCBQeXRob24gc2NyaXB0cyBjYW4gYmUgbWFkZSBkaXJlY3RseSBleGVjdXRhYmxlLCBsaWtlCiBzaGVsbCBzY3JpcHRzLCBieSBwdXR0aW5nIHRoZSBsaW5lIDo6CiAKLSAgICMhL3Vzci9iaW4vZW52IHB5dGhvbjMuNAorICAgIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMy41CiAKIChhc3N1bWluZyB0aGF0IHRoZSBpbnRlcnByZXRlciBpcyBvbiB0aGUgdXNlcidzIDplbnZ2YXI6YFBBVEhgKSBhdCB0aGUgYmVnaW5uaW5nCiBvZiB0aGUgc2NyaXB0IGFuZCBnaXZpbmcgdGhlIGZpbGUgYW4gZXhlY3V0YWJsZSBtb2RlLiAgVGhlIGBgIyFgYCBtdXN0IGJlIHRoZQpAQCAtMTA3LDcgKzEwNyw3IEBACiAKICAgID4+PiBpbXBvcnQgc2l0ZQogICAgPj4+IHNpdGUuZ2V0dXNlcnNpdGVwYWNrYWdlcygpCi0gICAnL2hvbWUvdXNlci8ubG9jYWwvbGliL3B5dGhvbjMuNC9zaXRlLXBhY2thZ2VzJworICAgJy9ob21lL3VzZXIvLmxvY2FsL2xpYi9weXRob24zLjUvc2l0ZS1wYWNrYWdlcycKIAogTm93IHlvdSBjYW4gY3JlYXRlIGEgZmlsZSBuYW1lZCA6ZmlsZTpgdXNlcmN1c3RvbWl6ZS5weWAgaW4gdGhhdCBkaXJlY3RvcnkgYW5kCiBwdXQgYW55dGhpbmcgeW91IHdhbnQgaW4gaXQuICBJdCB3aWxsIGFmZmVjdCBldmVyeSBpbnZvY2F0aW9uIG9mIFB5dGhvbiwgdW5sZXNzCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMucnN0IGIvRG9jL3R1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLnJzdAppbmRleCAxZWEyOTlmLi4wZDUxNDgwIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMucnN0CisrKyBiL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QKQEAgLTczLDEwICs3MywxMSBAQAogICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgdGltZXMgKngqIGFwcGVhcnMgaW4gdGhlIGxpc3QuCiAKIAotLi4gbWV0aG9kOjogbGlzdC5zb3J0KCkKKy4uIG1ldGhvZDo6IGxpc3Quc29ydChrZXk9Tm9uZSwgcmV2ZXJzZT1GYWxzZSkKICAgIDpub2luZGV4OgogCi0gICBTb3J0IHRoZSBpdGVtcyBvZiB0aGUgbGlzdCBpbiBwbGFjZS4KKyAgIFNvcnQgdGhlIGl0ZW1zIG9mIHRoZSBsaXN0IGluIHBsYWNlICh0aGUgYXJndW1lbnRzIGNhbiBiZSB1c2VkIGZvciBzb3J0CisgICBjdXN0b21pemF0aW9uLCBzZWUgOmZ1bmM6YHNvcnRlZGAgZm9yIHRoZWlyIGV4cGxhbmF0aW9uKS4KIAogCiAuLiBtZXRob2Q6OiBsaXN0LnJldmVyc2UoKQpAQCAtNjExLDE4ICs2MTIsMTggQEAKICAgIG9yYW5nZQogICAgcGVhcgogCi1UbyBjaGFuZ2UgYSBzZXF1ZW5jZSB5b3UgYXJlIGl0ZXJhdGluZyBvdmVyIHdoaWxlIGluc2lkZSB0aGUgbG9vcCAoZm9yCi1leGFtcGxlIHRvIGR1cGxpY2F0ZSBjZXJ0YWluIGl0ZW1zKSwgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgZmlyc3QgbWFrZQotYSBjb3B5LiAgTG9vcGluZyBvdmVyIGEgc2VxdWVuY2UgZG9lcyBub3QgaW1wbGljaXRseSBtYWtlIGEgY29weS4gIFRoZSBzbGljZQotbm90YXRpb24gbWFrZXMgdGhpcyBlc3BlY2lhbGx5IGNvbnZlbmllbnQ6OgorSXQgaXMgc29tZXRpbWVzIHRlbXB0aW5nIHRvIGNoYW5nZSBhIGxpc3Qgd2hpbGUgeW91IGFyZSBsb29waW5nIG92ZXIgaXQ7Citob3dldmVyLCBpdCBpcyBvZnRlbiBzaW1wbGVyIGFuZCBzYWZlciB0byBjcmVhdGUgYSBuZXcgbGlzdCBpbnN0ZWFkLiA6OgogCi0gICA+Pj4gd29yZHMgPSBbJ2NhdCcsICd3aW5kb3cnLCAnZGVmZW5lc3RyYXRlJ10KLSAgID4+PiBmb3IgdyBpbiB3b3Jkc1s6XTogICMgTG9vcCBvdmVyIGEgc2xpY2UgY29weSBvZiB0aGUgZW50aXJlIGxpc3QuCi0gICAuLi4gICAgIGlmIGxlbih3KSA+IDY6Ci0gICAuLi4gICAgICAgICB3b3Jkcy5pbnNlcnQoMCwgdykKKyAgID4+PiBpbXBvcnQgbWF0aAorICAgPj4+IHJhd19kYXRhID0gWzU2LjIsIGZsb2F0KCdOYU4nKSwgNTEuNywgNTUuMywgNTIuNSwgZmxvYXQoJ05hTicpLCA0Ny44XQorICAgPj4+IGZpbHRlcmVkX2RhdGEgPSBbXQorICAgPj4+IGZvciB2YWx1ZSBpbiByYXdfZGF0YToKKyAgIC4uLiAgICAgaWYgbm90IG1hdGguaXNuYW4odmFsdWUpOgorICAgLi4uICAgICAgICAgZmlsdGVyZWRfZGF0YS5hcHBlbmQodmFsdWUpCiAgICAuLi4KLSAgID4+PiB3b3JkcwotICAgWydkZWZlbmVzdHJhdGUnLCAnY2F0JywgJ3dpbmRvdycsICdkZWZlbmVzdHJhdGUnXQorICAgPj4+IGZpbHRlcmVkX2RhdGEKKyAgIFs1Ni4yLCA1MS43LCA1NS4zLCA1Mi41LCA0Ny44XQogCiAKIC4uIF90dXQtY29uZGl0aW9uczoKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9pbnB1dG91dHB1dC5yc3QgYi9Eb2MvdHV0b3JpYWwvaW5wdXRvdXRwdXQucnN0CmluZGV4IGMxNTdmMjIuLjUzMTRmZWQgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9pbnB1dG91dHB1dC5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2lucHV0b3V0cHV0LnJzdApAQCAtMjcxLDEwICsyNzEsMTEgQEAKIGBgZmBgIGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZC4KIAogVG8gcmVhZCBhIGZpbGUncyBjb250ZW50cywgY2FsbCBgYGYucmVhZChzaXplKWBgLCB3aGljaCByZWFkcyBzb21lIHF1YW50aXR5IG9mCi1kYXRhIGFuZCByZXR1cm5zIGl0IGFzIGEgc3RyaW5nIG9yIGJ5dGVzIG9iamVjdC4gICpzaXplKiBpcyBhbiBvcHRpb25hbCBudW1lcmljCi1hcmd1bWVudC4gIFdoZW4gKnNpemUqIGlzIG9taXR0ZWQgb3IgbmVnYXRpdmUsIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGZpbGUKLXdpbGwgYmUgcmVhZCBhbmQgcmV0dXJuZWQ7IGl0J3MgeW91ciBwcm9ibGVtIGlmIHRoZSBmaWxlIGlzIHR3aWNlIGFzIGxhcmdlIGFzCi15b3VyIG1hY2hpbmUncyBtZW1vcnkuIE90aGVyd2lzZSwgYXQgbW9zdCAqc2l6ZSogYnl0ZXMgYXJlIHJlYWQgYW5kIHJldHVybmVkLgorZGF0YSBhbmQgcmV0dXJucyBpdCBhcyBhIHN0cmluZyAoaW4gdGV4dCBtb2RlKSBvciBieXRlcyBvYmplY3QgKGluIGJpbmFyeSBtb2RlKS4KKypzaXplKiBpcyBhbiBvcHRpb25hbCBudW1lcmljIGFyZ3VtZW50LiAgV2hlbiAqc2l6ZSogaXMgb21pdHRlZCBvciBuZWdhdGl2ZSwgdGhlCitlbnRpcmUgY29udGVudHMgb2YgdGhlIGZpbGUgd2lsbCBiZSByZWFkIGFuZCByZXR1cm5lZDsgaXQncyB5b3VyIHByb2JsZW0gaWYgdGhlCitmaWxlIGlzIHR3aWNlIGFzIGxhcmdlIGFzIHlvdXIgbWFjaGluZSdzIG1lbW9yeS4gT3RoZXJ3aXNlLCBhdCBtb3N0ICpzaXplKiBieXRlcworYXJlIHJlYWQgYW5kIHJldHVybmVkLgogSWYgdGhlIGVuZCBvZiB0aGUgZmlsZSBoYXMgYmVlbiByZWFjaGVkLCBgYGYucmVhZCgpYGAgd2lsbCByZXR1cm4gYW4gZW1wdHkKIHN0cmluZyAoYGAnJ2BgKS4gIDo6CiAKQEAgLTMxNSwxMSArMzE2LDExIEBACiAgICA+Pj4gZi53cml0ZSgnVGhpcyBpcyBhIHRlc3RcbicpCiAgICAxNQogCi1UbyB3cml0ZSBzb21ldGhpbmcgb3RoZXIgdGhhbiBhIHN0cmluZywgaXQgbmVlZHMgdG8gYmUgY29udmVydGVkIHRvIGEgc3RyaW5nCi1maXJzdDo6CitPdGhlciB0eXBlcyBvZiBvYmplY3RzIG5lZWQgdG8gYmUgY29udmVydGVkIC0tIGVpdGhlciB0byBhIHN0cmluZyAoaW4gdGV4dCBtb2RlKQorb3IgYSBieXRlcyBvYmplY3QgKGluIGJpbmFyeSBtb2RlKSAtLSBiZWZvcmUgd3JpdGluZyB0aGVtOjoKIAogICAgPj4+IHZhbHVlID0gKCd0aGUgYW5zd2VyJywgNDIpCi0gICA+Pj4gcyA9IHN0cih2YWx1ZSkKKyAgID4+PiBzID0gc3RyKHZhbHVlKSAgIyBjb252ZXJ0IHRoZSB0dXBsZSB0byBzdHJpbmcKICAgID4+PiBmLndyaXRlKHMpCiAgICAxOAogCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0IGIvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdAppbmRleCBkZDZiMWE5Li5lOTY2MDg1IDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0CisrKyBiL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QKQEAgLTEwLDEzICsxMCwxMyBAQAogSW52b2tpbmcgdGhlIEludGVycHJldGVyCiA9PT09PT09PT09PT09PT09PT09PT09PT0KIAotVGhlIFB5dGhvbiBpbnRlcnByZXRlciBpcyB1c3VhbGx5IGluc3RhbGxlZCBhcyA6ZmlsZTpgL3Vzci9sb2NhbC9iaW4vcHl0aG9uMy40YAorVGhlIFB5dGhvbiBpbnRlcnByZXRlciBpcyB1c3VhbGx5IGluc3RhbGxlZCBhcyA6ZmlsZTpgL3Vzci9sb2NhbC9iaW4vcHl0aG9uMy41YAogb24gdGhvc2UgbWFjaGluZXMgd2hlcmUgaXQgaXMgYXZhaWxhYmxlOyBwdXR0aW5nIDpmaWxlOmAvdXNyL2xvY2FsL2JpbmAgaW4geW91cgogVW5peCBzaGVsbCdzIHNlYXJjaCBwYXRoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHN0YXJ0IGl0IGJ5IHR5cGluZyB0aGUgY29tbWFuZDoKIAogLi4gY29kZS1ibG9jazo6IHRleHQKIAotICAgcHl0aG9uMy40CisgICBweXRob24zLjUKIAogdG8gdGhlIHNoZWxsLiBbI11fIFNpbmNlIHRoZSBjaG9pY2Ugb2YgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgaW50ZXJwcmV0ZXIgbGl2ZXMKIGlzIGFuIGluc3RhbGxhdGlvbiBvcHRpb24sIG90aGVyIHBsYWNlcyBhcmUgcG9zc2libGU7IGNoZWNrIHdpdGggeW91ciBsb2NhbApAQCAtMjQsMTEgKzI0LDExIEBACiBwb3B1bGFyIGFsdGVybmF0aXZlIGxvY2F0aW9uLikKIAogT24gV2luZG93cyBtYWNoaW5lcywgdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24gaXMgdXN1YWxseSBwbGFjZWQgaW4KLTpmaWxlOmBDOlxcUHl0aG9uMzRgLCB0aG91Z2ggeW91IGNhbiBjaGFuZ2UgdGhpcyB3aGVuIHlvdSdyZSBydW5uaW5nIHRoZQorOmZpbGU6YEM6XFxQeXRob24zNWAsIHRob3VnaCB5b3UgY2FuIGNoYW5nZSB0aGlzIHdoZW4geW91J3JlIHJ1bm5pbmcgdGhlCiBpbnN0YWxsZXIuICBUbyBhZGQgdGhpcyBkaXJlY3RvcnkgdG8geW91ciBwYXRoLCAgeW91IGNhbiB0eXBlIHRoZSBmb2xsb3dpbmcKIGNvbW1hbmQgaW50byB0aGUgY29tbWFuZCBwcm9tcHQgaW4gYSBET1MgYm94OjoKIAotICAgc2V0IHBhdGg9JXBhdGglO0M6XHB5dGhvbjM0CisgICBzZXQgcGF0aD0lcGF0aCU7QzpccHl0aG9uMzUKIAogVHlwaW5nIGFuIGVuZC1vZi1maWxlIGNoYXJhY3RlciAoOmtiZDpgQ29udHJvbC1EYCBvbiBVbml4LCA6a2JkOmBDb250cm9sLVpgIG9uCiBXaW5kb3dzKSBhdCB0aGUgcHJpbWFyeSBwcm9tcHQgY2F1c2VzIHRoZSBpbnRlcnByZXRlciB0byBleGl0IHdpdGggYSB6ZXJvIGV4aXQKQEAgLTk2LDggKzk2LDggQEAKIHByaW50cyBhIHdlbGNvbWUgbWVzc2FnZSBzdGF0aW5nIGl0cyB2ZXJzaW9uIG51bWJlciBhbmQgYSBjb3B5cmlnaHQgbm90aWNlCiBiZWZvcmUgcHJpbnRpbmcgdGhlIGZpcnN0IHByb21wdDo6CiAKLSAgICQgcHl0aG9uMy40Ci0gICBQeXRob24gMy40IChkZWZhdWx0LCBNYXIgMTYgMjAxNCwgMDk6MjU6MDQpCisgICAkIHB5dGhvbjMuNQorICAgUHl0aG9uIDMuNSAoZGVmYXVsdCwgU2VwIDE2IDIwMTUsIDA5OjI1OjA0KQogICAgW0dDQyA0LjguMl0gb24gbGludXgKICAgIFR5cGUgImhlbHAiLCAiY29weXJpZ2h0IiwgImNyZWRpdHMiIG9yICJsaWNlbnNlIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgID4+PgpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL21vZHVsZXMucnN0IGIvRG9jL3R1dG9yaWFsL21vZHVsZXMucnN0CmluZGV4IGZkMzYxYWUuLjlhZTY0YjAgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9tb2R1bGVzLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvbW9kdWxlcy5yc3QKQEAgLTIxNiwxNSArMjE2LDE1IEBACiAgIHN0YXRlbWVudHMsIHRoZSBgYC1PT2BgIHN3aXRjaCByZW1vdmVzIGJvdGggYXNzZXJ0IHN0YXRlbWVudHMgYW5kIF9fZG9jX18KICAgc3RyaW5ncy4gIFNpbmNlIHNvbWUgcHJvZ3JhbXMgbWF5IHJlbHkgb24gaGF2aW5nIHRoZXNlIGF2YWlsYWJsZSwgeW91IHNob3VsZAogICBvbmx5IHVzZSB0aGlzIG9wdGlvbiBpZiB5b3Uga25vdyB3aGF0IHlvdSdyZSBkb2luZy4gICJPcHRpbWl6ZWQiIG1vZHVsZXMgaGF2ZQotICBhIC5weW8gcmF0aGVyIHRoYW4gYSAucHljIHN1ZmZpeCBhbmQgYXJlIHVzdWFsbHkgc21hbGxlci4gIEZ1dHVyZSByZWxlYXNlcyBtYXkKKyAgYW4gYGBvcHQtYGAgdGFnIGFuZCBhcmUgdXN1YWxseSBzbWFsbGVyLiAgRnV0dXJlIHJlbGVhc2VzIG1heQogICBjaGFuZ2UgdGhlIGVmZmVjdHMgb2Ygb3B0aW1pemF0aW9uLgogCi0qIEEgcHJvZ3JhbSBkb2Vzbid0IHJ1biBhbnkgZmFzdGVyIHdoZW4gaXQgaXMgcmVhZCBmcm9tIGEgYGAucHljYGAgb3IgYGAucHlvYGAKKyogQSBwcm9ncmFtIGRvZXNuJ3QgcnVuIGFueSBmYXN0ZXIgd2hlbiBpdCBpcyByZWFkIGZyb20gYSBgYC5weWNgYAogICBmaWxlIHRoYW4gd2hlbiBpdCBpcyByZWFkIGZyb20gYSBgYC5weWBgIGZpbGU7IHRoZSBvbmx5IHRoaW5nIHRoYXQncyBmYXN0ZXIKLSAgYWJvdXQgYGAucHljYGAgb3IgYGAucHlvYGAgZmlsZXMgaXMgdGhlIHNwZWVkIHdpdGggd2hpY2ggdGhleSBhcmUgbG9hZGVkLgorICBhYm91dCBgYC5weWNgYCBmaWxlcyBpcyB0aGUgc3BlZWQgd2l0aCB3aGljaCB0aGV5IGFyZSBsb2FkZWQuCiAKLSogVGhlIG1vZHVsZSA6bW9kOmBjb21waWxlYWxsYCBjYW4gY3JlYXRlIC5weWMgZmlsZXMgKG9yIC5weW8gZmlsZXMgd2hlbgotICA6b3B0aW9uOmAtT2AgaXMgdXNlZCkgZm9yIGFsbCBtb2R1bGVzIGluIGEgZGlyZWN0b3J5LgorKiBUaGUgbW9kdWxlIDptb2Q6YGNvbXBpbGVhbGxgIGNhbiBjcmVhdGUgLnB5YyBmaWxlcyBmb3IgYWxsIG1vZHVsZXMgaW4gYQorICBkaXJlY3RvcnkuCiAKICogVGhlcmUgaXMgbW9yZSBkZXRhaWwgb24gdGhpcyBwcm9jZXNzLCBpbmNsdWRpbmcgYSBmbG93IGNoYXJ0IG9mIHRoZQogICBkZWNpc2lvbnMsIGluIFBFUCAzMTQ3LgpAQCAtNTQ4LDQgKzU0OCwzIEBACiAuLiBbI10gSW4gZmFjdCBmdW5jdGlvbiBkZWZpbml0aW9ucyBhcmUgYWxzbyAnc3RhdGVtZW50cycgdGhhdCBhcmUgJ2V4ZWN1dGVkJzsgdGhlCiAgICBleGVjdXRpb24gb2YgYSBtb2R1bGUtbGV2ZWwgZnVuY3Rpb24gZGVmaW5pdGlvbiBlbnRlcnMgdGhlIGZ1bmN0aW9uIG5hbWUgaW4KICAgIHRoZSBtb2R1bGUncyBnbG9iYWwgc3ltYm9sIHRhYmxlLgotCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdCBiL0RvYy90dXRvcmlhbC9zdGRsaWIucnN0CmluZGV4IDcyZDUxZGUuLjA5NTRlYmEgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9zdGRsaWIucnN0CisrKyBiL0RvYy90dXRvcmlhbC9zdGRsaWIucnN0CkBAIC0xNSw3ICsxNSw3IEBACiAKICAgID4+PiBpbXBvcnQgb3MKICAgID4+PiBvcy5nZXRjd2QoKSAgICAgICMgUmV0dXJuIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5Ci0gICAnQzpcXFB5dGhvbjM0JworICAgJ0M6XFxQeXRob24zNScKICAgID4+PiBvcy5jaGRpcignL3NlcnZlci9hY2Nlc3Nsb2dzJykgICAjIENoYW5nZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5CiAgICA+Pj4gb3Muc3lzdGVtKCdta2RpciB0b2RheScpICAgIyBSdW4gdGhlIGNvbW1hbmQgbWtkaXIgaW4gdGhlIHN5c3RlbSBzaGVsbAogICAgMApkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0IGIvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0CmluZGV4IGMwMTk3ZWEuLmY3ZDJhMGEgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QKQEAgLTE4LDcgKzE4LDcgQEAKIAogICAgPj4+IGltcG9ydCByZXBybGliCiAgICA+Pj4gcmVwcmxpYi5yZXByKHNldCgnc3VwZXJjYWxpZnJhZ2lsaXN0aWNleHBpYWxpZG9jaW91cycpKQotICAgInNldChbJ2EnLCAnYycsICdkJywgJ2UnLCAnZicsICdnJywgLi4uXSkiCisgICAieydhJywgJ2MnLCAnZCcsICdlJywgJ2YnLCAnZycsIC4uLn0iCiAKIFRoZSA6bW9kOmBwcHJpbnRgIG1vZHVsZSBvZmZlcnMgbW9yZSBzb3BoaXN0aWNhdGVkIGNvbnRyb2wgb3ZlciBwcmludGluZyBib3RoCiBidWlsdC1pbiBhbmQgdXNlciBkZWZpbmVkIG9iamVjdHMgaW4gYSB3YXkgdGhhdCBpcyByZWFkYWJsZSBieSB0aGUgaW50ZXJwcmV0ZXIuCkBAIC0yNzcsNyArMjc3LDcgQEAKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KICAgICAgICBkWydwcmltYXJ5J10gICAgICAgICAgICAgICAgIyBlbnRyeSB3YXMgYXV0b21hdGljYWxseSByZW1vdmVkCi0gICAgIEZpbGUgIkM6L3B5dGhvbjM0L2xpYi93ZWFrcmVmLnB5IiwgbGluZSA0NiwgaW4gX19nZXRpdGVtX18KKyAgICAgRmlsZSAiQzovcHl0aG9uMzUvbGliL3dlYWtyZWYucHkiLCBsaW5lIDQ2LCBpbiBfX2dldGl0ZW1fXwogICAgICAgIG8gPSBzZWxmLmRhdGFba2V5XSgpCiAgICBLZXlFcnJvcjogJ3ByaW1hcnknCiAKZGlmZiAtLWdpdCBhL0RvYy91c2luZy9jbWRsaW5lLnJzdCBiL0RvYy91c2luZy9jbWRsaW5lLnJzdAppbmRleCBhNDYzNDliLi5hZjg2MDU1IDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvY21kbGluZS5yc3QKKysrIGIvRG9jL3VzaW5nL2NtZGxpbmUucnN0CkBAIC03Nyw3ICs3Nyw3IEBACiAgICB0aGUgOm1vZDpgX19tYWluX19gIG1vZHVsZS4KIAogICAgU2luY2UgdGhlIGFyZ3VtZW50IGlzIGEgKm1vZHVsZSogbmFtZSwgeW91IG11c3Qgbm90IGdpdmUgYSBmaWxlIGV4dGVuc2lvbgotICAgKGBgLnB5YGApLiAgVGhlIGBgbW9kdWxlLW5hbWVgYCBzaG91bGQgYmUgYSB2YWxpZCBQeXRob24gbW9kdWxlIG5hbWUsIGJ1dAorICAgKGBgLnB5YGApLiAgVGhlIG1vZHVsZSBuYW1lIHNob3VsZCBiZSBhIHZhbGlkIGFic29sdXRlIFB5dGhvbiBtb2R1bGUgbmFtZSwgYnV0CiAgICB0aGUgaW1wbGVtZW50YXRpb24gbWF5IG5vdCBhbHdheXMgZW5mb3JjZSB0aGlzIChlLmcuIGl0IG1heSBhbGxvdyB5b3UgdG8KICAgIHVzZSBhIG5hbWUgdGhhdCBpbmNsdWRlcyBhIGh5cGhlbikuCiAKQEAgLTE5MCwxMyArMTkwLDE2IEBACiAKIC4uIGNtZG9wdGlvbjo6IC1iCiAKLSAgIElzc3VlIGEgd2FybmluZyB3aGVuIGNvbXBhcmluZyBzdHIgYW5kIGJ5dGVzLiBJc3N1ZSBhbiBlcnJvciB3aGVuIHRoZQorICAgSXNzdWUgYSB3YXJuaW5nIHdoZW4gY29tcGFyaW5nIDpjbGFzczpgYnl0ZXNgIG9yIDpjbGFzczpgYnl0ZWFycmF5YCB3aXRoCisgICA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agd2l0aCA6Y2xhc3M6YGludGAuICBJc3N1ZSBhbiBlcnJvciB3aGVuIHRoZQogICAgb3B0aW9uIGlzIGdpdmVuIHR3aWNlICg6b3B0aW9uOmAtYmJgKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgQWZmZWN0cyBjb21wYXJpc29ucyBvZiA6Y2xhc3M6YGJ5dGVzYCB3aXRoIDpjbGFzczpgaW50YC4KIAogLi4gY21kb3B0aW9uOjogLUIKIAotICAgSWYgZ2l2ZW4sIFB5dGhvbiB3b24ndCB0cnkgdG8gd3JpdGUgYGAucHljYGAgb3IgYGAucHlvYGAgZmlsZXMgb24gdGhlCisgICBJZiBnaXZlbiwgUHl0aG9uIHdvbid0IHRyeSB0byB3cml0ZSBgYC5weWNgYCBmaWxlcyBvbiB0aGUKICAgIGltcG9ydCBvZiBzb3VyY2UgbW9kdWxlcy4gIFNlZSBhbHNvIDplbnZ2YXI6YFBZVEhPTkRPTlRXUklURUJZVEVDT0RFYC4KIAogCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jIGIvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYwppbmRleCA0NWJkZDVhLi4wMmJjYmVlIDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jCisrKyBiL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMKQEAgLTIxLDExICsyMSwxMSBAQAogT24gV2luZG93cywgeW91IG1heSBoYXZlIHRvIGludm9rZSB0aGUgYGBweXZlbnZgYCBzY3JpcHQgYXMgZm9sbG93cywgaWYgeW91CiBkb24ndCBoYXZlIHRoZSByZWxldmFudCBQQVRIIGFuZCBQQVRIRVhUIHNldHRpbmdzOjoKIAotICAgIGM6XFRlbXA+YzpcUHl0aG9uMzRccHl0aG9uIGM6XFB5dGhvbjM0XFRvb2xzXFNjcmlwdHNccHl2ZW52LnB5IG15ZW52CisgICAgYzpcVGVtcD5jOlxQeXRob24zNVxweXRob24gYzpcUHl0aG9uMzVcVG9vbHNcU2NyaXB0c1xweXZlbnYucHkgbXllbnYKIAogb3IgZXF1aXZhbGVudGx5OjoKIAotICAgIGM6XFRlbXA+YzpcUHl0aG9uMzRccHl0aG9uIC1tIHZlbnYgbXllbnYKKyAgICBjOlxUZW1wPmM6XFB5dGhvbjM1XHB5dGhvbiAtbSB2ZW52IG15ZW52CiAKIFRoZSBjb21tYW5kLCBpZiBydW4gd2l0aCBgYC1oYGAsIHdpbGwgc2hvdyB0aGUgYXZhaWxhYmxlIG9wdGlvbnM6OgogCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvd2luX2luc3RhbGxlci5wbmcgYi9Eb2MvdXNpbmcvd2luX2luc3RhbGxlci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBjODhhOAotLS0gL2Rldi9udWxsCisrKyBiL0RvYy91c2luZy93aW5faW5zdGFsbGVyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvd2luZG93cy5yc3QgYi9Eb2MvdXNpbmcvd2luZG93cy5yc3QKaW5kZXggYzA1ZjcyYS4uNjNkZTY5ZiAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL3dpbmRvd3MucnN0CisrKyBiL0RvYy91c2luZy93aW5kb3dzLnJzdApAQCAtNywyMiArNywyMjEgQEAKICoqKioqKioqKioqKioqKioqKioqKioqKioKIAogLi4gc2VjdGlvbmF1dGhvcjo6IFJvYmVydCBMZWhtYW5uIDxsZWhtYW5ucm9AZ21haWwuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IFN0ZXZlIERvd2VyIDxzdGV2ZS5kb3dlckBtaWNyb3NvZnQuY29tPgogCiBUaGlzIGRvY3VtZW50IGFpbXMgdG8gZ2l2ZSBhbiBvdmVydmlldyBvZiBXaW5kb3dzLXNwZWNpZmljIGJlaGF2aW91ciB5b3Ugc2hvdWxkCiBrbm93IGFib3V0IHdoZW4gdXNpbmcgUHl0aG9uIG9uIE1pY3Jvc29mdCBXaW5kb3dzLgogCi0uLiBYWFggKG5jb2dobGFuKQotCi0gICBUaGlzIGxvb2tzIHJhdGhlciBzdGFsZSB0byBtZS4uLgotCi0KIEluc3RhbGxpbmcgUHl0aG9uCiA9PT09PT09PT09PT09PT09PQogCi1Vbmxpa2UgbW9zdCBVbml4IHN5c3RlbXMgYW5kIHNlcnZpY2VzLCBXaW5kb3dzIGRvZXMgbm90IHJlcXVpcmUgUHl0aG9uIG5hdGl2ZWx5Ci1hbmQgdGh1cyBkb2VzIG5vdCBwcmUtaW5zdGFsbCBhIHZlcnNpb24gb2YgUHl0aG9uLiAgSG93ZXZlciwgdGhlIENQeXRob24gdGVhbQorVW5saWtlIG1vc3QgVW5peCBzeXN0ZW1zIGFuZCBzZXJ2aWNlcywgV2luZG93cyBkb2VzIG5vdCBpbmNsdWRlIGEgc3lzdGVtCitzdXBwb3J0ZWQgaW5zdGFsbGF0aW9uIG9mIFB5dGhvbi4gVG8gbWFrZSBQeXRob24gYXZhaWxhYmxlLCB0aGUgQ1B5dGhvbiB0ZWFtCiBoYXMgY29tcGlsZWQgV2luZG93cyBpbnN0YWxsZXJzIChNU0kgcGFja2FnZXMpIHdpdGggZXZlcnkgYHJlbGVhc2UKLTxodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLz5gXyBmb3IgbWFueSB5ZWFycy4KKzxodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLz5gXyBmb3IgbWFueSB5ZWFycy4gVGhlc2UgaW5zdGFsbGVycworYXJlIHByaW1hcmlseSBpbnRlbmRlZCB0byBhZGQgYSBwZXItdXNlciBpbnN0YWxsYXRpb24gb2YgUHl0aG9uLCB3aXRoIHRoZQorY29yZSBpbnRlcnByZXRlciBhbmQgbGlicmFyeSBiZWluZyB1c2VkIGJ5IGEgc2luZ2xlIHVzZXIuIFRoZSBpbnN0YWxsZXIgaXMgYWxzbworYWJsZSB0byBpbnN0YWxsIGZvciBhbGwgdXNlcnMgb2YgYSBzaW5nbGUgbWFjaGluZSwgYW5kIGEgc2VwYXJhdGUgWklQIGZpbGUgaXMKK2F2YWlsYWJsZSBmb3IgYXBwbGljYXRpb24tbG9jYWwgZGlzdHJpYnV0aW9ucy4KKworU3VwcG9ydGVkIFZlcnNpb25zCistLS0tLS0tLS0tLS0tLS0tLS0KKworQXMgc3BlY2lmaWVkIGluIDpwZXA6YDExYCwgYSBQeXRob24gcmVsZWFzZSBvbmx5IHN1cHBvcnRzIGEgV2luZG93cyBwbGF0Zm9ybQord2hpbGUgTWljcm9zb2Z0IGNvbnNpZGVycyB0aGUgcGxhdGZvcm0gdW5kZXIgZXh0ZW5kZWQgc3VwcG9ydC4gVGhpcyBtZWFucyB0aGF0CitQeXRob24gMy41IHN1cHBvcnRzIFdpbmRvd3MgVmlzdGEgYW5kIG5ld2VyLiBJZiB5b3UgcmVxdWlyZSBXaW5kb3dzIFhQIHN1cHBvcnQKK3RoZW4gcGxlYXNlIGluc3RhbGwgUHl0aG9uIDMuNC4KKworSW5zdGFsbGF0aW9uIFN0ZXBzCistLS0tLS0tLS0tLS0tLS0tLS0KKworRm91ciBQeXRob24gMy41IGluc3RhbGxlcnMgYXJlIGF2YWlsYWJsZSBmb3IgZG93bmxvYWQgLSB0d28gZWFjaCBmb3IgdGhlIDMyLWJpdAorYW5kIDY0LWJpdCB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuIFRoZSAqd2ViIGluc3RhbGxlciogaXMgYSBzbWFsbCBpbml0aWFsCitkb3dubG9hZCwgYW5kIGl0IHdpbGwgYXV0b21hdGljYWxseSBkb3dubG9hZCB0aGUgcmVxdWlyZWQgY29tcG9uZW50cyBhcworbmVjZXNzYXJ5LiBUaGUgKm9mZmxpbmUgaW5zdGFsbGVyKiBpbmNsdWRlcyB0aGUgY29tcG9uZW50cyBuZWNlc3NhcnkgZm9yIGEKK2RlZmF1bHQgaW5zdGFsbGF0aW9uIGFuZCBvbmx5IHJlcXVpcmVzIGFuIGludGVybmV0IGNvbm5lY3Rpb24gZm9yIG9wdGlvbmFsCitmZWF0dXJlcy4gU2VlIDpyZWY6YGluc3RhbGwtbGF5b3V0LW9wdGlvbmAgZm9yIG90aGVyIHdheXMgdG8gYXZvaWQgZG93bmxvYWRpbmcKK2R1cmluZyBpbnN0YWxsYXRpb24uCisKK0FmdGVyIHN0YXJ0aW5nIHRoZSBpbnN0YWxsZXIsIG9uZSBvZiB0d28gb3B0aW9ucyBtYXkgYmUgc2VsZWN0ZWQ6CisKKy4uIGltYWdlOjogd2luX2luc3RhbGxlci5wbmcKKworSWYgeW91IHNlbGVjdCAiSW5zdGFsbCBOb3ciOgorCisqIFlvdSB3aWxsICpub3QqIG5lZWQgdG8gYmUgYW4gYWRtaW5pc3RyYXRvciAodW5sZXNzIGEgc3lzdGVtIHVwZGF0ZSBmb3IgdGhlCisgIEMgUnVudGltZSBMaWJyYXJ5IGlzIHJlcXVpcmVkIG9yIHlvdSBpbnN0YWxsIHRoZSA6cmVmOmBsYXVuY2hlcmAgZm9yIGFsbAorICB1c2VycykKKyogUHl0aG9uIHdpbGwgYmUgaW5zdGFsbGVkIGludG8geW91ciB1c2VyIGRpcmVjdG9yeQorKiBUaGUgOnJlZjpgbGF1bmNoZXJgIHdpbGwgYmUgaW5zdGFsbGVkIGFjY29yZGluZyB0byB0aGUgb3B0aW9uIGF0IHRoZSBib3R0b20KKyAgb2YgdGhlIGZpcnN0IHBhY2UKKyogVGhlIHN0YW5kYXJkIGxpYnJhcnksIHRlc3Qgc3VpdGUsIGxhdW5jaGVyIGFuZCBwaXAgd2lsbCBiZSBpbnN0YWxsZWQKKyogSWYgc2VsZWN0ZWQsIHRoZSBpbnN0YWxsIGRpcmVjdG9yeSB3aWxsIGJlIGFkZGVkIHRvIHlvdXIgOmVudnZhcjpgUEFUSGAKKyogU2hvcnRjdXRzIHdpbGwgb25seSBiZSB2aXNpYmxlIGZvciB0aGUgY3VycmVudCB1c2VyCisKK1NlbGVjdGluZyAiQ3VzdG9taXplIGluc3RhbGxhdGlvbiIgd2lsbCBhbGxvdyB5b3UgdG8gc2VsZWN0IHRoZSBmZWF0dXJlcyB0bworaW5zdGFsbCwgdGhlIGluc3RhbGxhdGlvbiBsb2NhdGlvbiBhbmQgb3RoZXIgb3B0aW9ucyBvciBwb3N0LWluc3RhbGwgYWN0aW9ucy4KK1RvIGluc3RhbGwgZGVidWdnaW5nIHN5bWJvbHMgb3IgYmluYXJpZXMsIHlvdSB3aWxsIG5lZWQgdG8gdXNlIHRoaXMgb3B0aW9uLgorCitUbyBwZXJmb3JtIGFuIGFsbC11c2VycyBpbnN0YWxsYXRpb24sIHlvdSBzaG91bGQgc2VsZWN0ICJDdXN0b21pemUKK2luc3RhbGxhdGlvbiIuIEluIHRoaXMgY2FzZToKKworKiBZb3UgbWF5IGJlIHJlcXVpcmVkIHRvIHByb3ZpZGUgYWRtaW5pc3RyYXRpdmUgY3JlZGVudGlhbHMgb3IgYXBwcm92YWwKKyogUHl0aG9uIHdpbGwgYmUgaW5zdGFsbGVkIGludG8gdGhlIFByb2dyYW0gRmlsZXMgZGlyZWN0b3J5CisqIFRoZSA6cmVmOmBsYXVuY2hlcmAgd2lsbCBiZSBpbnN0YWxsZWQgaW50byB0aGUgV2luZG93cyBkaXJlY3RvcnkKKyogT3B0aW9uYWwgZmVhdHVyZXMgbWF5IGJlIHNlbGVjdGVkIGR1cmluZyBpbnN0YWxsYXRpb24KKyogVGhlIHN0YW5kYXJkIGxpYnJhcnkgY2FuIGJlIHByZS1jb21waWxlZCB0byBieXRlY29kZQorKiBJZiBzZWxlY3RlZCwgdGhlIGluc3RhbGwgZGlyZWN0b3J5IHdpbGwgYmUgYWRkZWQgdG8gdGhlIHN5c3RlbSA6ZW52dmFyOmBQQVRIYAorKiBTaG9ydGN1dHMgYXJlIGF2YWlsYWJsZSBmb3IgYWxsIHVzZXJzCisKKy4uIF9pbnN0YWxsLXF1aWV0LW9wdGlvbjoKKworSW5zdGFsbGluZyBXaXRob3V0IFVJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWxsIG9mIHRoZSBvcHRpb25zIGF2YWlsYWJsZSBpbiB0aGUgaW5zdGFsbGVyIFVJIGNhbiBhbHNvIGJlIHNwZWNpZmllZCBmcm9tIHRoZQorY29tbWFuZCBsaW5lLCBhbGxvd2luZyBzY3JpcHRlZCBpbnN0YWxsZXJzIHRvIHJlcGxpY2F0ZSBhbiBpbnN0YWxsYXRpb24gb24gbWFueQorbWFjaGluZXMgd2l0aG91dCB1c2VyIGludGVyYWN0aW9uLiAgVGhlc2Ugb3B0aW9ucyBtYXkgYWxzbyBiZSBzZXQgd2l0aG91dAorc3VwcHJlc3NpbmcgdGhlIFVJIGluIG9yZGVyIHRvIGNoYW5nZSBzb21lIG9mIHRoZSBkZWZhdWx0cy4KKworVG8gY29tcGxldGVseSBoaWRlIHRoZSBpbnN0YWxsZXIgVUkgYW5kIGluc3RhbGwgUHl0aG9uIHNpbGVudGx5LCBwYXNzIHRoZQorYGAvcXVpZXRgYCBvcHRpb24uIFRvIHNraXAgcGFzdCB0aGUgdXNlciBpbnRlcmFjdGlvbiBidXQgc3RpbGwgZGlzcGxheQorcHJvZ3Jlc3MgYW5kIGVycm9ycywgcGFzcyB0aGUgYGAvcGFzc2l2ZWBgIG9wdGlvbi4gVGhlIGBgL3VuaW5zdGFsbGBgCitvcHRpb24gbWF5IGJlIHBhc3NlZCB0byBpbW1lZGlhdGVseSBiZWdpbiByZW1vdmluZyBQeXRob24gLSBubyBwcm9tcHQgd2lsbCBiZQorZGlzcGxheWVkLgorCitBbGwgb3RoZXIgb3B0aW9ucyBhcmUgcGFzc2VkIGFzIGBgbmFtZT12YWx1ZWBgLCB3aGVyZSB0aGUgdmFsdWUgaXMgdXN1YWxseQorYGAwYGAgdG8gZGlzYWJsZSBhIGZlYXR1cmUsIGBgMWBgIHRvIGVuYWJsZSBhIGZlYXR1cmUsIG9yIGEgcGF0aC4gVGhlIGZ1bGwgbGlzdAorb2YgYXZhaWxhYmxlIG9wdGlvbnMgaXMgc2hvd24gYmVsb3cuCisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IE5hbWUgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZWZhdWx0ICAgICAgICAgICAgICAgICAgfAorKz09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PSsKK3wgSW5zdGFsbEFsbFVzZXJzICAgICAgICAgICB8IFBlcmZvcm0gYSBzeXN0ZW0td2lkZSBpbnN0YWxsYXRpb24uICB8IDAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBUYXJnZXREaXIgICAgICAgICAgICAgICAgIHwgVGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgICAgICAgICAgIHwgU2VsZWN0ZWQgYmFzZWQgb24gICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEluc3RhbGxBbGxVc2VycyAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBEZWZhdWx0QWxsVXNlcnNUYXJnZXREaXIgIHwgVGhlIGRlZmF1bHQgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSAgIHwgOmZpbGU6YCVQcm9ncmFtRmlsZXMlXFxcIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZvciBhbGwtdXNlciBpbnN0YWxscyAgICAgICAgICAgICAgICB8IFB5dGhvbiBYLllgIG9yIDpmaWxlOmBcICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAlUHJvZ3JhbUZpbGVzKHg4NiklXFxcICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIFguWWAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IERlZmF1bHRKdXN0Rm9yTWVUYXJnZXREaXIgfCBUaGUgZGVmYXVsdCBpbnN0YWxsIGRpcmVjdG9yeSBmb3IgICAgfCA6ZmlsZTpgJUxvY2FsQXBwRGF0YSVcXFwgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwganVzdC1mb3ItbWUgaW5zdGFsbHMgICAgICAgICAgICAgICAgIHwgUHJvZ3JhbXNcXFB5dGhvblhZYCBvciAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDpmaWxlOmAlTG9jYWxBcHBEYXRhJVxcXCB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcm9ncmFtc1xcUHl0aG9uWFktMzJgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgRGVmYXVsdEN1c3RvbVRhcmdldERpciAgICB8IFRoZSBkZWZhdWx0IGN1c3RvbSBpbnN0YWxsIGRpcmVjdG9yeSB8IChlbXB0eSkgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaXNwbGF5ZWQgaW4gdGhlIFVJICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgQXNzb2NpYXRlRmlsZXMgICAgICAgICAgICB8IENyZWF0ZSBmaWxlIGFzc29jaWF0aW9ucyBpZiB0aGUgICAgICB8IDEgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBsYXVuY2hlciBpcyBhbHNvIGluc3RhbGxlZC4gICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgQ29tcGlsZUFsbCAgICAgICAgICAgICAgICB8IENvbXBpbGUgYWxsIGBgLnB5YGAgZmlsZXMgdG8gICAgICAgICB8IDAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYC5weWNgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgUHJlcGVuZFBhdGggICAgICAgICAgICAgICB8IEFkZCBpbnN0YWxsIGFuZCBTY3JpcHRzIGRpcmVjdG9yaWVzICB8IDAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aG8gOmVudnZhcjpgUEFUSGAgYW5kIGBgLlBZYGAgdG8gICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOmVudnZhcjpgUEFUSEVYVGAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IFNob3J0Y3V0cyAgICAgICAgICAgICAgICAgfCBDcmVhdGUgc2hvcnRjdXRzIGZvciB0aGUgaW50ZXJwcmV0ZXIsfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZG9jdW1lbnRhdGlvbiBhbmQgSURMRSBpZiBpbnN0YWxsZWQuIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEluY2x1ZGVfZG9jICAgICAgICAgICAgICAgfCBJbnN0YWxsIFB5dGhvbiBtYW51YWwgICAgICAgICAgICAgICAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgSW5jbHVkZV9kZWJ1ZyAgICAgICAgICAgICB8IEluc3RhbGwgZGVidWcgYmluYXJpZXMgICAgICAgICAgICAgICB8IDAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBJbmNsdWRlX2RldiAgICAgICAgICAgICAgIHwgSW5zdGFsbCBkZXZlbG9wZXIgaGVhZGVycyBhbmQgICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGxpYnJhcmllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBJbmNsdWRlX2V4ZSAgICAgICAgICAgICAgIHwgSW5zdGFsbCA6ZmlsZTpgcHl0aG9uLmV4ZWAgYW5kICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlbGF0ZWQgZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBJbmNsdWRlX2xhdW5jaGVyICAgICAgICAgIHwgSW5zdGFsbCA6cmVmOmBsYXVuY2hlcmAuICAgICAgICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEluc3RhbGxMYXVuY2hlckFsbFVzZXJzICAgfCBJbnN0YWxscyA6cmVmOmBsYXVuY2hlcmAgZm9yIGFsbCAgICAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdXNlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEluY2x1ZGVfbGliICAgICAgICAgICAgICAgfCBJbnN0YWxsIHN0YW5kYXJkIGxpYnJhcnkgYW5kICAgICAgICAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXh0ZW5zaW9uIG1vZHVsZXMgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEluY2x1ZGVfcGlwICAgICAgICAgICAgICAgfCBJbnN0YWxsIGJ1bmRsZWQgcGlwIGFuZCBzZXR1cHRvb2xzICAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgSW5jbHVkZV9zeW1ib2xzICAgICAgICAgICB8IEluc3RhbGwgZGVidWdnaW5nIHN5bWJvbHMgKGAqYC5wZGIpICB8IDAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBJbmNsdWRlX3RjbHRrICAgICAgICAgICAgIHwgSW5zdGFsbCBUY2wvVGsgc3VwcG9ydCBhbmQgSURMRSAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEluY2x1ZGVfdGVzdCAgICAgICAgICAgICAgfCBJbnN0YWxsIHN0YW5kYXJkIGxpYnJhcnkgdGVzdCBzdWl0ZSAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgSW5jbHVkZV90b29scyAgICAgICAgICAgICB8IEluc3RhbGwgdXRpbGl0eSBzY3JpcHRzICAgICAgICAgICAgICB8IDEgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBMYXVuY2hlck9ubHkgICAgICAgICAgICAgIHwgT25seSBpbnN0YWxscyB0aGUgbGF1bmNoZXIuIFRoaXMgICAgIHwgMCAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdpbGwgb3ZlcnJpZGUgbW9zdCBvdGhlciBvcHRpb25zLiAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBTaW1wbGVJbnN0YWxsICAgICAgICAgICAgIHwgRGlzYWJsZSBtb3N0IGluc3RhbGwgVUkgICAgICAgICAgICAgIHwgMCAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IFNpbXBsZUluc3RhbGxEZXNjcmlwdGlvbiAgfCBBIGN1c3RvbSBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiB0aGUgfCAoZW1wdHkpICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2ltcGxpZmllZCBpbnN0YWxsIFVJIGlzIHVzZWQuICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKK0ZvciBleGFtcGxlLCB0byBzaWxlbnRseSBpbnN0YWxsIGEgZGVmYXVsdCwgc3lzdGVtLXdpZGUgUHl0aG9uIGluc3RhbGxhdGlvbiwKK3lvdSBjb3VsZCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIChmcm9tIGFuIGVsZXZhdGVkIGNvbW1hbmQgcHJvbXB0KTo6CisKKyAgICBweXRob24tMy41LjAuZXhlIC9xdWlldCBJbnN0YWxsQWxsVXNlcnM9MSBQcmVwZW5kUGF0aD0xIEluY2x1ZGVfdGVzdD0wCisKK1RvIGFsbG93IHVzZXJzIHRvIGVhc2lseSBpbnN0YWxsIGEgcGVyc29uYWwgY29weSBvZiBQeXRob24gd2l0aG91dCB0aGUgdGVzdAorc3VpdGUsIHlvdSBjb3VsZCBwcm92aWRlIGEgc2hvcnRjdXQgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQuIFRoaXMgd2lsbAorZGlzcGxheSBhIHNpbXBsaWZpZWQgaW5pdGlhbCBwYWdlIGFuZCBkaXNhbGxvdyBjdXN0b21pemF0aW9uOjoKKworICAgIHB5dGhvbi0zLjUuMC5leGUgSW5zdGFsbEFsbFVzZXJzPTAgSW5jbHVkZV9sYXVuY2hlcj0wIEluY2x1ZGVfdGVzdD0wCisgICAgICAgIFNpbXBsZUluc3RhbGw9MSBTaW1wbGVJbnN0YWxsRGVzY3JpcHRpb249Ikp1c3QgZm9yIG1lLCBubyB0ZXN0IHN1aXRlLiIKKworKE5vdGUgdGhhdCBvbWl0dGluZyB0aGUgbGF1bmNoZXIgYWxzbyBvbWl0cyBmaWxlIGFzc29jaWF0aW9ucywgYW5kIGlzIG9ubHkKK3JlY29tbWVuZGVkIGZvciBwZXItdXNlciBpbnN0YWxscyB3aGVuIHRoZXJlIGlzIGFsc28gYSBzeXN0ZW0td2lkZSBpbnN0YWxsYXRpb24KK3RoYXQgaW5jbHVkZWQgdGhlIGxhdW5jaGVyLikKKworVGhlIG9wdGlvbnMgbGlzdGVkIGFib3ZlIGNhbiBhbHNvIGJlIHByb3ZpZGVkIGluIGEgZmlsZSBuYW1lZCBgYHVuYXR0ZW5kLnhtbGBgCithbG9uZ3NpZGUgdGhlIGV4ZWN1dGFibGUuIFRoaXMgZmlsZSBzcGVjaWZpZXMgYSBsaXN0IG9mIG9wdGlvbnMgYW5kIHZhbHVlcy4KK1doZW4gYSB2YWx1ZSBpcyBwcm92aWRlZCBhcyBhbiBhdHRyaWJ1dGUsIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgbnVtYmVyIGlmCitwb3NzaWJsZS4gVmFsdWVzIHByb3ZpZGVkIGFzIGVsZW1lbnQgdGV4dCBhcmUgYWx3YXlzIGxlZnQgYXMgc3RyaW5ncy4gVGhpcworZXhhbXBsZSBmaWxlIHNldHMgdGhlIHNhbWUgb3B0aW9ucyBhbmQgdGhlIHByZXZpb3VzIGV4YW1wbGU6OgorCisgICAgPE9wdGlvbnM+CisgICAgICAgIDxPcHRpb24gTmFtZT0iSW5zdGFsbEFsbFVzZXJzIiBWYWx1ZT0ibm8iIC8+CisgICAgICAgIDxPcHRpb24gTmFtZT0iSW5jbHVkZV9sYXVuY2hlciIgVmFsdWU9IjAiIC8+CisgICAgICAgIDxPcHRpb24gTmFtZT0iSW5jbHVkZV90ZXN0IiBWYWx1ZT0ibm8iIC8+CisgICAgICAgIDxPcHRpb24gTmFtZT0iU2ltcGxlSW5zdGFsbCIgVmFsdWU9InllcyIgLz4KKyAgICAgICAgPE9wdGlvbiBOYW1lPSJTaW1wbGVJbnN0YWxsRGVzY3JpcHRpb24iPkp1c3QgZm9yIG1lLCBubyB0ZXN0IHN1aXRlPC9PcHRpb24+CisgICAgPC9PcHRpb25zPgorCisuLiBfaW5zdGFsbC1sYXlvdXQtb3B0aW9uOgorCitJbnN0YWxsaW5nIFdpdGhvdXQgRG93bmxvYWRpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBcyBzb21lIGZlYXR1cmVzIG9mIFB5dGhvbiBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBpbml0aWFsIGluc3RhbGxlciBkb3dubG9hZCwKK3NlbGVjdGluZyB0aG9zZSBmZWF0dXJlcyBtYXkgcmVxdWlyZSBhbiBpbnRlcm5ldCBjb25uZWN0aW9uLiAgVG8gYXZvaWQgdGhpcworbmVlZCwgYWxsIHBvc3NpYmxlIGNvbXBvbmVudHMgbWF5IGJlIGRvd25sb2FkZWQgb24tZGVtYW5kIHRvIGNyZWF0ZSBhIGNvbXBsZXRlCisqbGF5b3V0KiB0aGF0IHdpbGwgbm8gbG9uZ2VyIHJlcXVpcmUgYW4gaW50ZXJuZXQgY29ubmVjdGlvbiByZWdhcmRsZXNzIG9mIHRoZQorc2VsZWN0ZWQgZmVhdHVyZXMuIE5vdGUgdGhhdCB0aGlzIGRvd25sb2FkIG1heSBiZSBiaWdnZXIgdGhhbiByZXF1aXJlZCwgYnV0Cit3aGVyZSBhIGxhcmdlIG51bWJlciBvZiBpbnN0YWxsYXRpb25zIGFyZSBnb2luZyB0byBiZSBwZXJmb3JtZWQgaXQgaXMgdmVyeQordXNlZnVsIHRvIGhhdmUgYSBsb2NhbGx5IGNhY2hlZCBjb3B5LgorCitFeGVjdXRlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmcm9tIENvbW1hbmQgUHJvbXB0IHRvIGRvd25sb2FkIGFsbCBwb3NzaWJsZQorcmVxdWlyZWQgZmlsZXMuICBSZW1lbWJlciB0byBzdWJzdGl0dXRlIGBgcHl0aG9uLTMuNS4wLmV4ZWBgIGZvciB0aGUgYWN0dWFsCituYW1lIG9mIHlvdXIgaW5zdGFsbGVyLCBhbmQgdG8gY3JlYXRlIGxheW91dHMgaW4gdGhlaXIgb3duIGRpcmVjdG9yaWVzIHRvCithdm9pZCBjb2xsaXNpb25zIGJldHdlZW4gZmlsZXMgd2l0aCB0aGUgc2FtZSBuYW1lLgorCis6OgorCisgICAgcHl0aG9uLTMuNS4wLmV4ZSAvbGF5b3V0IFtvcHRpb25hbCB0YXJnZXQgZGlyZWN0b3J5XQorCitZb3UgbWF5IGFsc28gc3BlY2lmeSB0aGUgYGAvcXVpZXRgYCBvcHRpb24gdG8gaGlkZSB0aGUgcHJvZ3Jlc3MgZGlzcGxheS4KKworCitPdGhlciBQbGF0Zm9ybXMKKy0tLS0tLS0tLS0tLS0tLQogCiBXaXRoIG9uZ29pbmcgZGV2ZWxvcG1lbnQgb2YgUHl0aG9uLCBzb21lIHBsYXRmb3JtcyB0aGF0IHVzZWQgdG8gYmUgc3VwcG9ydGVkCiBlYXJsaWVyIGFyZSBubyBsb25nZXIgc3VwcG9ydGVkIChkdWUgdG8gdGhlIGxhY2sgb2YgdXNlcnMgb3IgZGV2ZWxvcGVycykuCkBAIC02NiwxOSArMjY1LDMxIEBACiBgQWN0aXZlUHl0aG9uIDxodHRwOi8vd3d3LmFjdGl2ZXN0YXRlLmNvbS9hY3RpdmVweXRob24vPmBfCiAgICAgSW5zdGFsbGVyIHdpdGggbXVsdGktcGxhdGZvcm0gY29tcGF0aWJpbGl0eSwgZG9jdW1lbnRhdGlvbiwgUHlXaW4zMgogCi1gRW50aG91Z2h0IFB5dGhvbiBEaXN0cmlidXRpb24gPGh0dHBzOi8vd3d3LmVudGhvdWdodC5jb20vcHJvZHVjdHMvZXBkLz5gXwotICAgIFBvcHVsYXIgbW9kdWxlcyAoc3VjaCBhcyBQeVdpbjMyKSB3aXRoIHRoZWlyIHJlc3BlY3RpdmUgZG9jdW1lbnRhdGlvbiwgdG9vbAotICAgIHN1aXRlIGZvciBidWlsZGluZyBleHRlbnNpYmxlIFB5dGhvbiBhcHBsaWNhdGlvbnMKK2BBbmFjb25kYSA8aHR0cDovL3d3dy5jb250aW51dW0uaW8vZG93bmxvYWRzLz5gXworICAgIFBvcHVsYXIgc2NpZW50aWZpYyBtb2R1bGVzIChzdWNoIGFzIG51bXB5LCBzY2lweSBhbmQgcGFuZGFzKSBhbmQgdGhlCisgICAgYGBjb25kYWBgIHBhY2thZ2UgbWFuYWdlci4KIAotTm90aWNlIHRoYXQgdGhlc2UgcGFja2FnZXMgYXJlIGxpa2VseSB0byBpbnN0YWxsICpvbGRlciogdmVyc2lvbnMgb2YgUHl0aG9uLgorYENhbm9weSA8aHR0cHM6Ly93d3cuZW50aG91Z2h0LmNvbS9wcm9kdWN0cy9jYW5vcHkvPmBfCisgICAgQSAiY29tcHJlaGVuc2l2ZSBQeXRob24gYW5hbHlzaXMgZW52aXJvbm1lbnQiIHdpdGggZWRpdG9ycyBhbmQgb3RoZXIKKyAgICBkZXZlbG9wbWVudCB0b29scy4KKworYFdpblB5dGhvbiA8aHR0cHM6Ly93aW5weXRob24uZ2l0aHViLmlvLz5gXworICAgIFdpbmRvd3Mtc3BlY2lmaWMgZGlzdHJpYnV0aW9uIHdpdGggcHJlYnVpbHQgc2NpZW50aWZpYyBwYWNrYWdlcyBhbmQKKyAgICB0b29scyBmb3IgYnVpbGRpbmcgcGFja2FnZXMuCisKK05vdGUgdGhhdCB0aGVzZSBwYWNrYWdlcyBtYXkgbm90IGluY2x1ZGUgdGhlIGxhdGVzdCB2ZXJzaW9ucyBvZiBQeXRob24gb3IKK290aGVyIGxpYnJhcmllcywgYW5kIGFyZSBub3QgbWFpbnRhaW5lZCBvciBzdXBwb3J0ZWQgYnkgdGhlIGNvcmUgUHl0aG9uIHRlYW0uCiAKIAogCiBDb25maWd1cmluZyBQeXRob24KID09PT09PT09PT09PT09PT09PQogCi1JbiBvcmRlciB0byBydW4gUHl0aG9uIGZsYXdsZXNzbHksIHlvdSBtaWdodCBoYXZlIHRvIGNoYW5nZSBjZXJ0YWluIGVudmlyb25tZW50Ci1zZXR0aW5ncyBpbiBXaW5kb3dzLgorVG8gcnVuIFB5dGhvbiBjb252ZW5pZW50bHkgZnJvbSBhIGNvbW1hbmQgcHJvbXB0LCB5b3UgbWlnaHQgY29uc2lkZXIgY2hhbmdpbmcKK3NvbWUgZGVmYXVsdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW4gV2luZG93cy4gIFdoaWxlIHRoZSBpbnN0YWxsZXIgcHJvdmlkZXMgYW4KK29wdGlvbiB0byBjb25maWd1cmUgdGhlIFBBVEggYW5kIFBBVEhFWFQgdmFyaWFibGVzIGZvciB5b3UsIHRoaXMgaXMgb25seQorcmVsaWFibGUgZm9yIGEgc2luZ2xlLCBzeXN0ZW0td2lkZSBpbnN0YWxsYXRpb24uICBJZiB5b3UgcmVndWxhcmx5IHVzZSBtdWx0aXBsZQordmVyc2lvbnMgb2YgUHl0aG9uLCBjb25zaWRlciB1c2luZyB0aGUgOnJlZjpgbGF1bmNoZXJgLgogCiAKIC4uIF9zZXR0aW5nLWVudnZhcnM6CkBAIC04NiwxNjMgKzI5Nyw4NiBAQAogRXhjdXJzdXM6IFNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2luZG93cyBoYXMgYSBidWlsdC1pbiBkaWFsb2cgZm9yIGNoYW5naW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZm9sbG93aW5nCi1ndWlkZSBhcHBsaWVzIHRvIFhQIGNsYXNzaWNhbCB2aWV3KTogUmlnaHQtY2xpY2sgdGhlIGljb24gZm9yIHlvdXIgbWFjaGluZQotKHVzdWFsbHkgbG9jYXRlZCBvbiB5b3VyIERlc2t0b3AgYW5kIGNhbGxlZCAiTXkgQ29tcHV0ZXIiKSBhbmQgY2hvb3NlCi06bWVudXNlbGVjdGlvbjpgUHJvcGVydGllc2AgdGhlcmUuICBUaGVuLCBvcGVuIHRoZSA6Z3VpbGFiZWw6YEFkdmFuY2VkYCB0YWIKLWFuZCBjbGljayB0aGUgOmd1aWxhYmVsOmBFbnZpcm9ubWVudCBWYXJpYWJsZXNgIGJ1dHRvbi4KK1dpbmRvd3MgYWxsb3dzIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBiZSBjb25maWd1cmVkIHBlcm1hbmVudGx5IGF0IGJvdGggdGhlCitVc2VyIGxldmVsIGFuZCB0aGUgU3lzdGVtIGxldmVsLCBvciB0ZW1wb3JhcmlseSBpbiBhIGNvbW1hbmQgcHJvbXB0LgogCi1JbiBzaG9ydCwgeW91ciBwYXRoIGlzOgorVG8gdGVtcG9yYXJpbHkgc2V0IGVudmlyb25tZW50IHZhcmlhYmxlcywgb3BlbiBDb21tYW5kIFByb21wdCBhbmQgdXNlIHRoZQorOmNvbW1hbmQ6YHNldGAgY29tbWFuZDo6CiAKLSAgICA6bWVudXNlbGVjdGlvbjpgTXkgQ29tcHV0ZXIKLSAgICAtLT4gUHJvcGVydGllcwotICAgIC0tPiBBZHZhbmNlZAotICAgIC0tPiBFbnZpcm9ubWVudCBWYXJpYWJsZXNgCisgICAgQzpcPnNldCBQQVRIPUM6XFByb2dyYW0gRmlsZXNcUHl0aG9uIDMuNTslUEFUSCUKKyAgICBDOlw+c2V0IFBZVEhPTlBBVEg9JVBZVEhPTlBBVEglO0M6XE15X3B5dGhvbl9saWIKKyAgICBDOlw+cHl0aG9uCiAKK1RoZXNlIGNoYW5nZXMgd2lsbCBhcHBseSB0byBhbnkgZnVydGhlciBjb21tYW5kcyBleGVjdXRlZCBpbiB0aGF0IGNvbnNvbGUsIGFuZAord2lsbCBiZSBpbmhlcml0ZWQgYnkgYW55IGFwcGxpY2F0aW9ucyBzdGFydGVkIGZyb20gdGhlIGNvbnNvbGUuCisKK0luY2x1ZGluZyB0aGUgdmFyaWFibGUgbmFtZSB3aXRoaW4gcGVyY2VudCBzaWducyB3aWxsIGV4cGFuZCB0byB0aGUgZXhpc3RpbmcKK3ZhbHVlLCBhbGxvd2luZyB5b3UgdG8gYWRkIHlvdXIgbmV3IHZhbHVlIGF0IGVpdGhlciB0aGUgc3RhcnQgb3IgdGhlIGVuZC4KK01vZGlmeWluZyA6ZW52dmFyOmBQQVRIYCBieSBhZGRpbmcgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nCis6cHJvZ3JhbTpgcHl0aG9uLmV4ZWAgdG8gdGhlIHN0YXJ0IGlzIGEgY29tbW9uIHdheSB0byBlbnN1cmUgdGhlIGNvcnJlY3QgdmVyc2lvbgorb2YgUHl0aG9uIGlzIGxhdW5jaGVkLgorCitUbyBwZXJtYW5lbnRseSBtb2RpZnkgdGhlIGRlZmF1bHQgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBjbGljayBTdGFydCBhbmQgc2VhcmNoCitmb3IgJ2VkaXQgZW52aXJvbm1lbnQgdmFyaWFibGVzJywgb3Igb3BlbiBTeXN0ZW0gcHJvcGVydGllcywgOmd1aWxhYmVsOmBBZHZhbmNlZAorc3lzdGVtIHNldHRpbmdzYCBhbmQgY2xpY2sgdGhlIDpndWlsYWJlbDpgRW52aXJvbm1lbnQgVmFyaWFibGVzYCBidXR0b24uCiBJbiB0aGlzIGRpYWxvZywgeW91IGNhbiBhZGQgb3IgbW9kaWZ5IFVzZXIgYW5kIFN5c3RlbSB2YXJpYWJsZXMuIFRvIGNoYW5nZQogU3lzdGVtIHZhcmlhYmxlcywgeW91IG5lZWQgbm9uLXJlc3RyaWN0ZWQgYWNjZXNzIHRvIHlvdXIgbWFjaGluZQogKGkuZS4gQWRtaW5pc3RyYXRvciByaWdodHMpLgogCi1Bbm90aGVyIHdheSBvZiBhZGRpbmcgdmFyaWFibGVzIHRvIHlvdXIgZW52aXJvbm1lbnQgaXMgdXNpbmcgdGhlIDpjb21tYW5kOmBzZXRgCi1jb21tYW5kOjoKKy4uIG5vdGU6OgogCi0gICAgc2V0IFBZVEhPTlBBVEg9JVBZVEhPTlBBVEglO0M6XE15X3B5dGhvbl9saWIKKyAgICBXaW5kb3dzIHdpbGwgY29uY2F0ZW5hdGUgVXNlciB2YXJpYWJsZXMgKmFmdGVyKiBTeXN0ZW0gdmFyaWFibGVzLCB3aGljaCBtYXkKKyAgICBjYXVzZSB1bmV4cGVjdGVkIHJlc3VsdHMgd2hlbiBtb2RpZnlpbmcgOmVudnZhcjpgUEFUSGAuCiAKLVRvIG1ha2UgdGhpcyBzZXR0aW5nIHBlcm1hbmVudCwgeW91IGNvdWxkIGFkZCB0aGUgY29ycmVzcG9uZGluZyBjb21tYW5kIGxpbmUgdG8KLXlvdXIgOmZpbGU6YGF1dG9leGVjLmJhdGAuIDpwcm9ncmFtOmBtc2NvbmZpZ2AgaXMgYSBncmFwaGljYWwgaW50ZXJmYWNlIHRvIHRoaXMKLWZpbGUuCi0KLVZpZXdpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIGNhbiBhbHNvIGJlIGRvbmUgbW9yZSBzdHJhaWdodC1mb3J3YXJkOiBUaGUKLWNvbW1hbmQgcHJvbXB0IHdpbGwgZXhwYW5kIHN0cmluZ3Mgd3JhcHBlZCBpbnRvIHBlcmNlbnQgc2lnbnMgYXV0b21hdGljYWxseTo6Ci0KLSAgICBlY2hvICVQQVRIJQotCi1Db25zdWx0IDpjb21tYW5kOmBzZXQgLz9gIGZvciBkZXRhaWxzIG9uIHRoaXMgYmVoYXZpb3VyLgorICAgIFRoZSA6ZW52dmFyOmBQWVRIT05QQVRIYCB2YXJpYWJsZSBpcyB1c2VkIGJ5IGFsbCB2ZXJzaW9ucyBvZiBQeXRob24gMiBhbmQKKyAgICBQeXRob24gMywgc28geW91IHNob3VsZCBub3QgcGVybWFuZW50bHkgY29uZmlndXJlIHRoaXMgdmFyaWFibGUgdW5sZXNzIGl0CisgICAgb25seSBpbmNsdWRlcyBjb2RlIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIGFsbCBvZiB5b3VyIGluc3RhbGxlZCBQeXRob24KKyAgICB2ZXJzaW9ucy4KIAogLi4gc2VlYWxzbzo6CiAKLSAgIGh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20va2IvMTAwODQzCisgICAgaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi8xMDA4NDMKICAgICAgIEVudmlyb25tZW50IHZhcmlhYmxlcyBpbiBXaW5kb3dzIE5UCiAKLSAgIGh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20va2IvMzEwNTE5CisgICAgaHR0cDovL3RlY2huZXQubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2NjNzU0MjUwLmFzcHgKKyAgICAgIFRoZSBTRVQgY29tbWFuZCwgZm9yIHRlbXBvcmFyaWx5IG1vZGlmeWluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKworICAgIGh0dHA6Ly90ZWNobmV0Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9jYzc1NTEwNC5hc3B4CisgICAgICBUaGUgU0VUWCBjb21tYW5kLCBmb3IgcGVybWFuZW50bHkgbW9kaWZ5aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcworCisgICAgaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi8zMTA1MTkKICAgICAgIEhvdyBUbyBNYW5hZ2UgRW52aXJvbm1lbnQgVmFyaWFibGVzIGluIFdpbmRvd3MgWFAKIAotICAgaHR0cDovL3d3dy5jaGVtLmdsYS5hYy51ay9+bG91aXMvc29mdHdhcmUvZmFxL3ExLmh0bWwKKyAgICBodHRwOi8vd3d3LmNoZW0uZ2xhLmFjLnVrL35sb3Vpcy9zb2Z0d2FyZS9mYXEvcTEuaHRtbAogICAgICAgU2V0dGluZyBFbnZpcm9ubWVudCB2YXJpYWJsZXMsIExvdWlzIEouIEZhcnJ1Z2lhCiAKLQogLi4gX3dpbmRvd3MtcGF0aC1tb2Q6CiAKIEZpbmRpbmcgdGhlIFB5dGhvbiBleGVjdXRhYmxlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKIAogQmVzaWRlcyB1c2luZyB0aGUgYXV0b21hdGljYWxseSBjcmVhdGVkIHN0YXJ0IG1lbnUgZW50cnkgZm9yIHRoZSBQeXRob24KLWludGVycHJldGVyLCB5b3UgbWlnaHQgd2FudCB0byBzdGFydCBQeXRob24gaW4gdGhlIGNvbW1hbmQgcHJvbXB0LiBBcyBvZgotUHl0aG9uIDMuMywgdGhlIGluc3RhbGxlciBoYXMgYW4gb3B0aW9uIHRvIHNldCB0aGF0IHVwIGZvciB5b3UuCitpbnRlcnByZXRlciwgeW91IG1pZ2h0IHdhbnQgdG8gc3RhcnQgUHl0aG9uIGluIHRoZSBjb21tYW5kIHByb21wdC4gVGhlCitpbnN0YWxsZXIgZm9yIFB5dGhvbiAzLjUgYW5kIGxhdGVyIGhhcyBhbiBvcHRpb24gdG8gc2V0IHRoYXQgdXAgZm9yIHlvdS4KIAotQXQgdGhlICJDdXN0b21pemUgUHl0aG9uIDMuMyIgc2NyZWVuLCBhbiBvcHRpb24gY2FsbGVkCi0iQWRkIHB5dGhvbi5leGUgdG8gc2VhcmNoIHBhdGgiIGNhbiBiZSBlbmFibGVkIHRvIGhhdmUgdGhlIGluc3RhbGxlciBwbGFjZQoteW91ciBpbnN0YWxsYXRpb24gaW50byB0aGUgOmVudnZhcjpgJVBBVEglYC4gVGhpcyBhbGxvd3MgeW91IHRvIHR5cGUKLTpjb21tYW5kOmBweXRob25gIHRvIHJ1biB0aGUgaW50ZXJwcmV0ZXIuIFRodXMsIHlvdSBjYW4gYWxzbyBleGVjdXRlIHlvdXIKK09uIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBpbnN0YWxsZXIsIGFuIG9wdGlvbiBsYWJlbGxlZCAiQWRkIFB5dGhvbiAzLjUgdG8KK1BBVEgiIGNhbiBiZSBzZWxlY3RlZCB0byBoYXZlIHRoZSBpbnN0YWxsZXIgYWRkIHRoZSBpbnN0YWxsIGxvY2F0aW9uIGludG8gdGhlCis6ZW52dmFyOmBQQVRIYC4gIFRoZSBsb2NhdGlvbiBvZiB0aGUgOmZpbGU6YFNjcmlwdHNcXGAgZm9sZGVyIGlzIGFsc28gYWRkZWQuCitUaGlzIGFsbG93cyB5b3UgdG8gdHlwZSA6Y29tbWFuZDpgcHl0aG9uYCB0byBydW4gdGhlIGludGVycHJldGVyLCBhbmQKKzpjb21tYW5kOmBwaXBgIG9yIC4gVGh1cywgeW91IGNhbiBhbHNvIGV4ZWN1dGUgeW91cgogc2NyaXB0cyB3aXRoIGNvbW1hbmQgbGluZSBvcHRpb25zLCBzZWUgOnJlZjpgdXNpbmctb24tY21kbGluZWAgZG9jdW1lbnRhdGlvbi4KIAogSWYgeW91IGRvbid0IGVuYWJsZSB0aGlzIG9wdGlvbiBhdCBpbnN0YWxsIHRpbWUsIHlvdSBjYW4gYWx3YXlzIHJlLXJ1biB0aGUKLWluc3RhbGxlciB0byBjaG9vc2UgaXQuCitpbnN0YWxsZXIsIHNlbGVjdCBNb2RpZnksIGFuZCBlbmFibGUgaXQuICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIG1hbnVhbGx5Cittb2RpZnkgdGhlIDplbnZ2YXI6YFBBVEhgIHVzaW5nIHRoZSBkaXJlY3Rpb25zIGluIDpyZWY6YHNldHRpbmctZW52dmFyc2AuICBZb3UKK25lZWQgdG8gc2V0IHlvdXIgOmVudnZhcjpgUEFUSGAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUgZGlyZWN0b3J5CitvZiB5b3VyIFB5dGhvbiBpbnN0YWxsYXRpb24sIGRlbGltaXRlZCBieSBhIHNlbWljb2xvbiBmcm9tIG90aGVyIGVudHJpZXMuICBBbgorZXhhbXBsZSB2YXJpYWJsZSBjb3VsZCBsb29rIGxpa2UgdGhpcyAoYXNzdW1pbmcgdGhlIGZpcnN0IHR3byBlbnRyaWVzIGFscmVhZHkKK2V4aXN0ZWQpOjoKIAotVGhlIGFsdGVybmF0aXZlIGlzIG1hbnVhbGx5IG1vZGlmeWluZyB0aGUgOmVudnZhcjpgJVBBVEglYCB1c2luZyB0aGUKLWRpcmVjdGlvbnMgaW4gOnJlZjpgc2V0dGluZy1lbnZ2YXJzYC4gWW91IG5lZWQgdG8gc2V0IHlvdXIgOmVudnZhcjpgJVBBVEglYAotZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUgZGlyZWN0b3J5IG9mIHlvdXIgUHl0aG9uIGRpc3RyaWJ1dGlvbiwKLWRlbGltaXRlZCBieSBhIHNlbWljb2xvbiBmcm9tIG90aGVyIGVudHJpZXMuIEFuIGV4YW1wbGUgdmFyaWFibGUgY291bGQgbG9vawotbGlrZSB0aGlzIChhc3N1bWluZyB0aGUgZmlyc3QgdHdvIGVudHJpZXMgYXJlIFdpbmRvd3MnIGRlZmF1bHQpOjoKLQotICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI7QzpcV0lORE9XUztDOlxQeXRob24zMwotCi0KLUZpbmRpbmcgbW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tCi0KLVB5dGhvbiB1c3VhbGx5IHN0b3JlcyBpdHMgbGlicmFyeSAoYW5kIHRoZXJlYnkgeW91ciBzaXRlLXBhY2thZ2VzIGZvbGRlcikgaW4gdGhlCi1pbnN0YWxsYXRpb24gZGlyZWN0b3J5LiAgU28sIGlmIHlvdSBoYWQgaW5zdGFsbGVkIFB5dGhvbiB0bwotOmZpbGU6YEM6XFxQeXRob25cXGAsIHRoZSBkZWZhdWx0IGxpYnJhcnkgd291bGQgcmVzaWRlIGluCi06ZmlsZTpgQzpcXFB5dGhvblxcTGliXFxgIGFuZCB0aGlyZC1wYXJ0eSBtb2R1bGVzIHNob3VsZCBiZSBzdG9yZWQgaW4KLTpmaWxlOmBDOlxcUHl0aG9uXFxMaWJcXHNpdGUtcGFja2FnZXNcXGAuCi0KLVRoaXMgaXMgaG93IDpkYXRhOmBzeXMucGF0aGAgaXMgcG9wdWxhdGVkIG9uIFdpbmRvd3M6Ci0KLSogQW4gZW1wdHkgZW50cnkgaXMgYWRkZWQgYXQgdGhlIHN0YXJ0LCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgY3VycmVudAotICBkaXJlY3RvcnkuCi0KLSogSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDplbnZ2YXI6YFBZVEhPTlBBVEhgIGV4aXN0cywgYXMgZGVzY3JpYmVkIGluCi0gIDpyZWY6YHVzaW5nLW9uLWVudnZhcnNgLCBpdHMgZW50cmllcyBhcmUgYWRkZWQgbmV4dC4gIE5vdGUgdGhhdCBvbiBXaW5kb3dzLAotICBwYXRocyBpbiB0aGlzIHZhcmlhYmxlIG11c3QgYmUgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnMsIHRvIGRpc3Rpbmd1aXNoIHRoZW0KLSAgZnJvbSB0aGUgY29sb24gdXNlZCBpbiBkcml2ZSBpZGVudGlmaWVycyAoYGBDOlxgYCBldGMuKS4KLQotKiBBZGRpdGlvbmFsICJhcHBsaWNhdGlvbiBwYXRocyIgY2FuIGJlIGFkZGVkIGluIHRoZSByZWdpc3RyeSBhcyBzdWJrZXlzIG9mCi0gIDpzYW1wOmBcXFNPRlRXQVJFXFxQeXRob25cXFB5dGhvbkNvcmVcXHt2ZXJzaW9ufVxcUHl0aG9uUGF0aGAgdW5kZXIgYm90aCB0aGUKLSAgYGBIS0VZX0NVUlJFTlRfVVNFUmBgIGFuZCBgYEhLRVlfTE9DQUxfTUFDSElORWBgIGhpdmVzLiAgU3Via2V5cyB3aGljaCBoYXZlCi0gIHNlbWljb2xvbi1kZWxpbWl0ZWQgcGF0aCBzdHJpbmdzIGFzIHRoZWlyIGRlZmF1bHQgdmFsdWUgd2lsbCBjYXVzZSBlYWNoIHBhdGgKLSAgdG8gYmUgYWRkZWQgdG8gOmRhdGE6YHN5cy5wYXRoYC4gIChOb3RlIHRoYXQgYWxsIGtub3duIGluc3RhbGxlcnMgb25seSB1c2UKLSAgSEtMTSwgc28gSEtDVSBpcyB0eXBpY2FsbHkgZW1wdHkuKQotCi0qIElmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSA6ZW52dmFyOmBQWVRIT05IT01FYCBpcyBzZXQsIGl0IGlzIGFzc3VtZWQgYXMKLSAgIlB5dGhvbiBIb21lIi4gIE90aGVyd2lzZSwgdGhlIHBhdGggb2YgdGhlIG1haW4gUHl0aG9uIGV4ZWN1dGFibGUgaXMgdXNlZCB0bwotICBsb2NhdGUgYSAibGFuZG1hcmsgZmlsZSIgKGBgTGliXG9zLnB5YGApIHRvIGRlZHVjZSB0aGUgIlB5dGhvbiBIb21lIi4gIElmIGEKLSAgUHl0aG9uIGhvbWUgaXMgZm91bmQsIHRoZSByZWxldmFudCBzdWItZGlyZWN0b3JpZXMgYWRkZWQgdG8gOmRhdGE6YHN5cy5wYXRoYAotICAoYGBMaWJgYCwgYGBwbGF0LXdpbmBgLCBldGMpIGFyZSBiYXNlZCBvbiB0aGF0IGZvbGRlci4gIE90aGVyd2lzZSwgdGhlIGNvcmUKLSAgUHl0aG9uIHBhdGggaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgUHl0aG9uUGF0aCBzdG9yZWQgaW4gdGhlIHJlZ2lzdHJ5LgotCi0qIElmIHRoZSBQeXRob24gSG9tZSBjYW5ub3QgYmUgbG9jYXRlZCwgbm8gOmVudnZhcjpgUFlUSE9OUEFUSGAgaXMgc3BlY2lmaWVkIGluCi0gIHRoZSBlbnZpcm9ubWVudCwgYW5kIG5vIHJlZ2lzdHJ5IGVudHJpZXMgY2FuIGJlIGZvdW5kLCBhIGRlZmF1bHQgcGF0aCB3aXRoCi0gIHJlbGF0aXZlIGVudHJpZXMgaXMgdXNlZCAoZS5nLiBgYC5cTGliOy5ccGxhdC13aW5gYCwgZXRjKS4KLQotVGhlIGVuZCByZXN1bHQgb2YgYWxsIHRoaXMgaXM6Ci0KLSogV2hlbiBydW5uaW5nIDpmaWxlOmBweXRob24uZXhlYCwgb3IgYW55IG90aGVyIC5leGUgaW4gdGhlIG1haW4gUHl0aG9uCi0gIGRpcmVjdG9yeSAoZWl0aGVyIGFuIGluc3RhbGxlZCB2ZXJzaW9uLCBvciBkaXJlY3RseSBmcm9tIHRoZSBQQ2J1aWxkCi0gIGRpcmVjdG9yeSksIHRoZSBjb3JlIHBhdGggaXMgZGVkdWNlZCwgYW5kIHRoZSBjb3JlIHBhdGhzIGluIHRoZSByZWdpc3RyeSBhcmUKLSAgaWdub3JlZC4gIE90aGVyICJhcHBsaWNhdGlvbiBwYXRocyIgaW4gdGhlIHJlZ2lzdHJ5IGFyZSBhbHdheXMgcmVhZC4KLQotKiBXaGVuIFB5dGhvbiBpcyBob3N0ZWQgaW4gYW5vdGhlciAuZXhlIChkaWZmZXJlbnQgZGlyZWN0b3J5LCBlbWJlZGRlZCB2aWEgQ09NLAotICBldGMpLCB0aGUgIlB5dGhvbiBIb21lIiB3aWxsIG5vdCBiZSBkZWR1Y2VkLCBzbyB0aGUgY29yZSBwYXRoIGZyb20gdGhlCi0gIHJlZ2lzdHJ5IGlzIHVzZWQuICBPdGhlciAiYXBwbGljYXRpb24gcGF0aHMiIGluIHRoZSByZWdpc3RyeSBhcmUgYWx3YXlzIHJlYWQuCi0KLSogSWYgUHl0aG9uIGNhbid0IGZpbmQgaXRzIGhvbWUgYW5kIHRoZXJlIGlzIG5vIHJlZ2lzdHJ5IChlZywgZnJvemVuIC5leGUsIHNvbWUKLSAgdmVyeSBzdHJhbmdlIGluc3RhbGxhdGlvbiBzZXR1cCkgeW91IGdldCBhIHBhdGggd2l0aCBzb21lIGRlZmF1bHQsIGJ1dAotICByZWxhdGl2ZSwgcGF0aHMuCi0KLQotRXhlY3V0aW5nIHNjcmlwdHMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUFzIG9mIFB5dGhvbiAzLjMsIFB5dGhvbiBpbmNsdWRlcyBhIGxhdW5jaGVyIHdoaWNoIGZhY2lsaXRhdGVzIHJ1bm5pbmcgUHl0aG9uCi1zY3JpcHRzLiBTZWUgOnJlZjpgbGF1bmNoZXJgIGZvciBtb3JlIGluZm9ybWF0aW9uLgotCi1FeGVjdXRpbmcgc2NyaXB0cyB3aXRob3V0IHRoZSBQeXRob24gbGF1bmNoZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1XaXRob3V0IHRoZSBQeXRob24gbGF1bmNoZXIgaW5zdGFsbGVkLCBQeXRob24gc2NyaXB0cyAoZmlsZXMgd2l0aCB0aGUgZXh0ZW5zaW9uCi1gYC5weWBgKSB3aWxsIGJlIGV4ZWN1dGVkIGJ5IDpwcm9ncmFtOmBweXRob24uZXhlYCBieSBkZWZhdWx0LiAgVGhpcyBleGVjdXRhYmxlCi1vcGVucyBhIHRlcm1pbmFsLCB3aGljaCBzdGF5cyBvcGVuIGV2ZW4gaWYgdGhlIHByb2dyYW0gdXNlcyBhIEdVSS4gIElmIHlvdSBkbwotbm90IHdhbnQgdGhpcyB0byBoYXBwZW4sIHVzZSB0aGUgZXh0ZW5zaW9uIGBgLnB5d2BgIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNjcmlwdAotdG8gYmUgZXhlY3V0ZWQgYnkgOnByb2dyYW06YHB5dGhvbncuZXhlYCBieSBkZWZhdWx0IChib3RoIGV4ZWN1dGFibGVzIGFyZQotbG9jYXRlZCBpbiB0aGUgdG9wLWxldmVsIG9mIHlvdXIgUHl0aG9uIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkpLiAgVGhpcwotc3VwcHJlc3NlcyB0aGUgdGVybWluYWwgd2luZG93IG9uIHN0YXJ0dXAuCi0KLVlvdSBjYW4gYWxzbyBtYWtlIGFsbCBgYC5weWBgIHNjcmlwdHMgZXhlY3V0ZSB3aXRoIDpwcm9ncmFtOmBweXRob253LmV4ZWAsCi1zZXR0aW5nIHRoaXMgdGhyb3VnaCB0aGUgdXN1YWwgZmFjaWxpdGllcywgZm9yIGV4YW1wbGUgKG1pZ2h0IHJlcXVpcmUKLWFkbWluaXN0cmF0aXZlIHJpZ2h0cyk6Ci0KLSMuIExhdW5jaCBhIGNvbW1hbmQgcHJvbXB0LgotIy4gQXNzb2NpYXRlIHRoZSBjb3JyZWN0IGZpbGUgZ3JvdXAgd2l0aCBgYC5weWBgIHNjcmlwdHM6OgotCi0gICAgICBhc3NvYyAucHk9UHl0aG9uLkZpbGUKLQotIy4gUmVkaXJlY3QgYWxsIFB5dGhvbiBmaWxlcyB0byB0aGUgbmV3IGV4ZWN1dGFibGU6OgotCi0gICAgICBmdHlwZSBQeXRob24uRmlsZT1DOlxQYXRoXHRvXHB5dGhvbncuZXhlICIlMSIgJSoKLQorICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI7QzpcV0lORE9XUztDOlxQcm9ncmFtIEZpbGVzXFB5dGhvbiAzLjUKIAogLi4gX2xhdW5jaGVyOgogCkBAIC0yNTEsMjEgKzM4NSwyNiBAQAogCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAotVGhlIFB5dGhvbiBsYXVuY2hlciBmb3IgV2luZG93cyBpcyBhIHV0aWxpdHkgd2hpY2ggYWlkcyBpbiB0aGUgbG9jYXRpb24gYW5kCi1leGVjdXRpb24gb2YgZGlmZmVyZW50IFB5dGhvbiB2ZXJzaW9ucy4gIEl0IGFsbG93cyBzY3JpcHRzIChvciB0aGUKK1RoZSBQeXRob24gbGF1bmNoZXIgZm9yIFdpbmRvd3MgaXMgYSB1dGlsaXR5IHdoaWNoIGFpZHMgaW4gbG9jYXRpbmcgYW5kCitleGVjdXRpbmcgb2YgZGlmZmVyZW50IFB5dGhvbiB2ZXJzaW9ucy4gIEl0IGFsbG93cyBzY3JpcHRzIChvciB0aGUKIGNvbW1hbmQtbGluZSkgdG8gaW5kaWNhdGUgYSBwcmVmZXJlbmNlIGZvciBhIHNwZWNpZmljIFB5dGhvbiB2ZXJzaW9uLCBhbmQKIHdpbGwgbG9jYXRlIGFuZCBleGVjdXRlIHRoYXQgdmVyc2lvbi4KIAorVW5saWtlIHRoZSA6ZW52dmFyOmBQQVRIYCB2YXJpYWJsZSwgdGhlIGxhdW5jaGVyIHdpbGwgY29ycmVjdGx5IHNlbGVjdCB0aGUgbW9zdAorYXBwcm9wcmlhdGUgdmVyc2lvbiBvZiBQeXRob24uIEl0IHdpbGwgcHJlZmVyIHBlci11c2VyIGluc3RhbGxhdGlvbnMgb3Zlcgorc3lzdGVtLXdpZGUgb25lcywgYW5kIG9yZGVycyBieSBsYW5ndWFnZSB2ZXJzaW9uIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBtb3N0CityZWNlbnRseSBpbnN0YWxsZWQgdmVyc2lvbi4KKwogR2V0dGluZyBzdGFydGVkCiAtLS0tLS0tLS0tLS0tLS0KIAogRnJvbSB0aGUgY29tbWFuZC1saW5lCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAotWW91IHNob3VsZCBlbnN1cmUgdGhlIGxhdW5jaGVyIGlzIG9uIHlvdXIgUEFUSCAtIGRlcGVuZGluZyBvbiBob3cgaXQgd2FzCi1pbnN0YWxsZWQgaXQgbWF5IGFscmVhZHkgYmUgdGhlcmUsIGJ1dCBjaGVjayBqdXN0IGluIGNhc2UgaXQgaXMgbm90LgotCi1Gcm9tIGEgY29tbWFuZC1wcm9tcHQsIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorU3lzdGVtLXdpZGUgaW5zdGFsbGF0aW9ucyBvZiBQeXRob24gMy4zIGFuZCBsYXRlciB3aWxsIHB1dCB0aGUgbGF1bmNoZXIgb24geW91cgorOmVudnZhcjpgUEFUSGAuIFRoZSBsYXVuY2hlciBpcyBjb21wYXRpYmxlIHdpdGggYWxsIGF2YWlsYWJsZSB2ZXJzaW9ucyBvZgorUHl0aG9uLCBzbyBpdCBkb2VzIG5vdCBtYXR0ZXIgd2hpY2ggdmVyc2lvbiBpcyBpbnN0YWxsZWQuIFRvIGNoZWNrIHRoYXQgdGhlCitsYXVuY2hlciBpcyBhdmFpbGFibGUsIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kIGluIENvbW1hbmQgUHJvbXB0OgogCiA6OgogCkBAIC0yOTEsNiArNDMwLDI4IEBACiAKIFlvdSBzaG91bGQgZmluZCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIDMueCBzdGFydHMuCiAKK0lmIHlvdSBzZWUgdGhlIGZvbGxvd2luZyBlcnJvciwgeW91IGRvIG5vdCBoYXZlIHRoZSBsYXVuY2hlciBpbnN0YWxsZWQ6CisKKzo6CisKKyAgJ3B5JyBpcyBub3QgcmVjb2duaXplZCBhcyBhbiBpbnRlcm5hbCBvciBleHRlcm5hbCBjb21tYW5kLAorICBvcGVyYWJsZSBwcm9ncmFtIG9yIGJhdGNoIGZpbGUuCisKK1Blci11c2VyIGluc3RhbGxhdGlvbnMgb2YgUHl0aG9uIGRvIG5vdCBhZGQgdGhlIGxhdW5jaGVyIHRvIDplbnZ2YXI6YFBBVEhgCit1bmxlc3MgdGhlIG9wdGlvbiB3YXMgc2VsZWN0ZWQgb24gaW5zdGFsbGF0aW9uLgorCitWaXJ0dWFsIGVudmlyb25tZW50cworXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworLi4gdmVyc2lvbmFkZGVkOjogMy41CisKK0lmIHRoZSBsYXVuY2hlciBpcyBydW4gd2l0aCBubyBleHBsaWNpdCBQeXRob24gdmVyc2lvbiBzcGVjaWZpY2F0aW9uLCBhbmQgYQordmlydHVhbCBlbnZpcm9ubWVudCAoY3JlYXRlZCB3aXRoIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IDptb2Q6YHZlbnZgIG1vZHVsZSBvcgordGhlIGV4dGVybmFsIGBgdmlydHVhbGVudmBgIHRvb2wpIGFjdGl2ZSwgdGhlIGxhdW5jaGVyIHdpbGwgcnVuIHRoZSB2aXJ0dWFsCitlbnZpcm9ubWVudCdzIGludGVycHJldGVyIHJhdGhlciB0aGFuIHRoZSBnbG9iYWwgb25lLiAgVG8gcnVuIHRoZSBnbG9iYWwKK2ludGVycHJldGVyLCBlaXRoZXIgZGVhY3RpdmF0ZSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCwgb3IgZXhwbGljaXRseSBzcGVjaWZ5Cit0aGUgZ2xvYmFsIFB5dGhvbiB2ZXJzaW9uLgorCiBGcm9tIGEgc2NyaXB0CiBeXl5eXl5eXl5eXl5eCiAKQEAgLTMyNiw3ICs0ODcsNyBAQAogXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCiBUaGUgbGF1bmNoZXIgc2hvdWxkIGhhdmUgYmVlbiBhc3NvY2lhdGVkIHdpdGggUHl0aG9uIGZpbGVzIChpLmUuIGBgLnB5YGAsCi1gYC5weXdgYCwgYGAucHljYGAsIGBgLnB5b2BgIGZpbGVzKSB3aGVuIGl0IHdhcyBpbnN0YWxsZWQuICBUaGlzIG1lYW5zIHRoYXQKK2BgLnB5d2BgLCBgYC5weWNgYCBmaWxlcykgd2hlbiBpdCB3YXMgaW5zdGFsbGVkLiAgVGhpcyBtZWFucyB0aGF0CiB3aGVuIHlvdSBkb3VibGUtY2xpY2sgb24gb25lIG9mIHRoZXNlIGZpbGVzIGZyb20gV2luZG93cyBleHBsb3JlciB0aGUgbGF1bmNoZXIKIHdpbGwgYmUgdXNlZCwgYW5kIHRoZXJlZm9yZSB5b3UgY2FuIHVzZSB0aGUgc2FtZSBmYWNpbGl0aWVzIGRlc2NyaWJlZCBhYm92ZSB0bwogaGF2ZSB0aGUgc2NyaXB0IHNwZWNpZnkgdGhlIHZlcnNpb24gd2hpY2ggc2hvdWxkIGJlIHVzZWQuCkBAIC0zNjUsNiArNTI2LDE2IEBACiBvbiBXaW5kb3dzIHdoaWNoIHlvdSBob3BlIHdpbGwgYmUgdXNlZnVsIG9uIFVuaXgsIHlvdSBzaG91bGQgdXNlIG9uZSBvZiB0aGUKIHNoZWJhbmcgbGluZXMgc3RhcnRpbmcgd2l0aCBgYC91c3JgYC4KIAorQW55IG9mIHRoZSBhYm92ZSB2aXJ0dWFsIGNvbW1hbmRzIGNhbiBiZSBzdWZmaXhlZCB3aXRoIGFuIGV4cGxpY2l0IHZlcnNpb24KKyhlaXRoZXIganVzdCB0aGUgbWFqb3IgdmVyc2lvbiwgb3IgdGhlIG1ham9yIGFuZCBtaW5vciB2ZXJzaW9uKSAtIGZvciBleGFtcGxlCitgYC91c3IvYmluL3B5dGhvbjIuN2BgIC0gd2hpY2ggd2lsbCBjYXVzZSB0aGF0IHNwZWNpZmljIHZlcnNpb24gdG8gYmUgbG9jYXRlZAorYW5kIHVzZWQuCisKK1RoZSBgYC91c3IvYmluL2VudmBgIGZvcm0gb2Ygc2hlYmFuZyBsaW5lIGhhcyBvbmUgZnVydGhlciBzcGVjaWFsIHByb3BlcnR5LgorQmVmb3JlIGxvb2tpbmcgZm9yIGluc3RhbGxlZCBQeXRob24gaW50ZXJwcmV0ZXJzLCB0aGlzIGZvcm0gd2lsbCBzZWFyY2ggdGhlCitleGVjdXRhYmxlIDplbnZ2YXI6YFBBVEhgIGZvciBhIFB5dGhvbiBleGVjdXRhYmxlLiBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZQorYmVoYXZpb3VyIG9mIHRoZSBVbml4IGBgZW52YGAgcHJvZ3JhbSwgd2hpY2ggcGVyZm9ybXMgYSA6ZW52dmFyOmBQQVRIYCBzZWFyY2guCisKIEFyZ3VtZW50cyBpbiBzaGViYW5nIGxpbmVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0zODMsMTcgKzU1NCwxNiBAQAogQ3VzdG9taXphdGlvbiB2aWEgSU5JIGZpbGVzCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAotICAgIFR3byAuaW5pIGZpbGVzIHdpbGwgYmUgc2VhcmNoZWQgYnkgdGhlIGxhdW5jaGVyIC0gYGBweS5pbmlgYCBpbiB0aGUKLSAgICBjdXJyZW50IHVzZXIncyAiYXBwbGljYXRpb24gZGF0YSIgZGlyZWN0b3J5IChpLmUuIHRoZSBkaXJlY3RvcnkgcmV0dXJuZWQKLSAgICBieSBjYWxsaW5nIHRoZSBXaW5kb3dzIGZ1bmN0aW9uIFNIR2V0Rm9sZGVyUGF0aCB3aXRoIENTSURMX0xPQ0FMX0FQUERBVEEpCi0gICAgYW5kIGBgcHkuaW5pYGAgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBsYXVuY2hlci4gIFRoZSBzYW1lIC5pbmkKLSAgICBmaWxlcyBhcmUgdXNlZCBmb3IgYm90aCB0aGUgJ2NvbnNvbGUnIHZlcnNpb24gb2YgdGhlIGxhdW5jaGVyIChpLmUuCi0gICAgcHkuZXhlKSBhbmQgZm9yIHRoZSAnd2luZG93cycgdmVyc2lvbiAoaS5lLiBweXcuZXhlKQorVHdvIC5pbmkgZmlsZXMgd2lsbCBiZSBzZWFyY2hlZCBieSB0aGUgbGF1bmNoZXIgLSBgYHB5LmluaWBgIGluIHRoZSBjdXJyZW50Cit1c2VyJ3MgImFwcGxpY2F0aW9uIGRhdGEiIGRpcmVjdG9yeSAoaS5lLiB0aGUgZGlyZWN0b3J5IHJldHVybmVkIGJ5IGNhbGxpbmcgdGhlCitXaW5kb3dzIGZ1bmN0aW9uIFNIR2V0Rm9sZGVyUGF0aCB3aXRoIENTSURMX0xPQ0FMX0FQUERBVEEpIGFuZCBgYHB5LmluaWBgIGluIHRoZQorc2FtZSBkaXJlY3RvcnkgYXMgdGhlIGxhdW5jaGVyLiBUaGUgc2FtZSAuaW5pIGZpbGVzIGFyZSB1c2VkIGZvciBib3RoIHRoZQorJ2NvbnNvbGUnIHZlcnNpb24gb2YgdGhlIGxhdW5jaGVyIChpLmUuIHB5LmV4ZSkgYW5kIGZvciB0aGUgJ3dpbmRvd3MnIHZlcnNpb24KKyhpLmUuIHB5dy5leGUpCiAKLSAgICBDdXN0b21pemF0aW9uIHNwZWNpZmllZCBpbiB0aGUgImFwcGxpY2F0aW9uIGRpcmVjdG9yeSIgd2lsbCBoYXZlCi0gICAgcHJlY2VkZW5jZSBvdmVyIHRoZSBvbmUgbmV4dCB0byB0aGUgZXhlY3V0YWJsZSwgc28gYSB1c2VyLCB3aG8gbWF5IG5vdAotICAgIGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoZSAuaW5pIGZpbGUgbmV4dCB0byB0aGUgbGF1bmNoZXIsIGNhbiBvdmVycmlkZQotICAgIGNvbW1hbmRzIGluIHRoYXQgZ2xvYmFsIC5pbmkgZmlsZSkKK0N1c3RvbWl6YXRpb24gc3BlY2lmaWVkIGluIHRoZSAiYXBwbGljYXRpb24gZGlyZWN0b3J5IiB3aWxsIGhhdmUgcHJlY2VkZW5jZSBvdmVyCit0aGUgb25lIG5leHQgdG8gdGhlIGV4ZWN1dGFibGUsIHNvIGEgdXNlciwgd2hvIG1heSBub3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhlCisuaW5pIGZpbGUgbmV4dCB0byB0aGUgbGF1bmNoZXIsIGNhbiBvdmVycmlkZSBjb21tYW5kcyBpbiB0aGF0IGdsb2JhbCAuaW5pIGZpbGUpCiAKIEN1c3RvbWl6aW5nIGRlZmF1bHQgUHl0aG9uIHZlcnNpb25zCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgpAQCAtNDg4LDYgKzY1OCw5OSBAQAogdGFyZ2V0IFB5dGhvbi4KIAogCisKKy4uIGZpbmRpbmdfbW9kdWxlczoKKworRmluZGluZyBtb2R1bGVzCis9PT09PT09PT09PT09PT0KKworUHl0aG9uIHVzdWFsbHkgc3RvcmVzIGl0cyBsaWJyYXJ5IChhbmQgdGhlcmVieSB5b3VyIHNpdGUtcGFja2FnZXMgZm9sZGVyKSBpbiB0aGUKK2luc3RhbGxhdGlvbiBkaXJlY3RvcnkuICBTbywgaWYgeW91IGhhZCBpbnN0YWxsZWQgUHl0aG9uIHRvCis6ZmlsZTpgQzpcXFB5dGhvblxcYCwgdGhlIGRlZmF1bHQgbGlicmFyeSB3b3VsZCByZXNpZGUgaW4KKzpmaWxlOmBDOlxcUHl0aG9uXFxMaWJcXGAgYW5kIHRoaXJkLXBhcnR5IG1vZHVsZXMgc2hvdWxkIGJlIHN0b3JlZCBpbgorOmZpbGU6YEM6XFxQeXRob25cXExpYlxcc2l0ZS1wYWNrYWdlc1xcYC4KKworVGhpcyBpcyBob3cgOmRhdGE6YHN5cy5wYXRoYCBpcyBwb3B1bGF0ZWQgb24gV2luZG93czoKKworKiBBbiBlbXB0eSBlbnRyeSBpcyBhZGRlZCBhdCB0aGUgc3RhcnQsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50CisgIGRpcmVjdG9yeS4KKworKiBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgOmVudnZhcjpgUFlUSE9OUEFUSGAgZXhpc3RzLCBhcyBkZXNjcmliZWQgaW4KKyAgOnJlZjpgdXNpbmctb24tZW52dmFyc2AsIGl0cyBlbnRyaWVzIGFyZSBhZGRlZCBuZXh0LiAgTm90ZSB0aGF0IG9uIFdpbmRvd3MsCisgIHBhdGhzIGluIHRoaXMgdmFyaWFibGUgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9ucywgdG8gZGlzdGluZ3Vpc2ggdGhlbQorICBmcm9tIHRoZSBjb2xvbiB1c2VkIGluIGRyaXZlIGlkZW50aWZpZXJzIChgYEM6XGBgIGV0Yy4pLgorCisqIEFkZGl0aW9uYWwgImFwcGxpY2F0aW9uIHBhdGhzIiBjYW4gYmUgYWRkZWQgaW4gdGhlIHJlZ2lzdHJ5IGFzIHN1YmtleXMgb2YKKyAgOnNhbXA6YFxcU09GVFdBUkVcXFB5dGhvblxcUHl0aG9uQ29yZVxce3ZlcnNpb259XFxQeXRob25QYXRoYCB1bmRlciBib3RoIHRoZQorICBgYEhLRVlfQ1VSUkVOVF9VU0VSYGAgYW5kIGBgSEtFWV9MT0NBTF9NQUNISU5FYGAgaGl2ZXMuICBTdWJrZXlzIHdoaWNoIGhhdmUKKyAgc2VtaWNvbG9uLWRlbGltaXRlZCBwYXRoIHN0cmluZ3MgYXMgdGhlaXIgZGVmYXVsdCB2YWx1ZSB3aWxsIGNhdXNlIGVhY2ggcGF0aAorICB0byBiZSBhZGRlZCB0byA6ZGF0YTpgc3lzLnBhdGhgLiAgKE5vdGUgdGhhdCBhbGwga25vd24gaW5zdGFsbGVycyBvbmx5IHVzZQorICBIS0xNLCBzbyBIS0NVIGlzIHR5cGljYWxseSBlbXB0eS4pCisKKyogSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDplbnZ2YXI6YFBZVEhPTkhPTUVgIGlzIHNldCwgaXQgaXMgYXNzdW1lZCBhcworICAiUHl0aG9uIEhvbWUiLiAgT3RoZXJ3aXNlLCB0aGUgcGF0aCBvZiB0aGUgbWFpbiBQeXRob24gZXhlY3V0YWJsZSBpcyB1c2VkIHRvCisgIGxvY2F0ZSBhICJsYW5kbWFyayBmaWxlIiAoYGBMaWJcb3MucHlgYCkgdG8gZGVkdWNlIHRoZSAiUHl0aG9uIEhvbWUiLiAgSWYgYQorICBQeXRob24gaG9tZSBpcyBmb3VuZCwgdGhlIHJlbGV2YW50IHN1Yi1kaXJlY3RvcmllcyBhZGRlZCB0byA6ZGF0YTpgc3lzLnBhdGhgCisgIChgYExpYmBgLCBgYHBsYXQtd2luYGAsIGV0YykgYXJlIGJhc2VkIG9uIHRoYXQgZm9sZGVyLiAgT3RoZXJ3aXNlLCB0aGUgY29yZQorICBQeXRob24gcGF0aCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBQeXRob25QYXRoIHN0b3JlZCBpbiB0aGUgcmVnaXN0cnkuCisKKyogSWYgdGhlIFB5dGhvbiBIb21lIGNhbm5vdCBiZSBsb2NhdGVkLCBubyA6ZW52dmFyOmBQWVRIT05QQVRIYCBpcyBzcGVjaWZpZWQgaW4KKyAgdGhlIGVudmlyb25tZW50LCBhbmQgbm8gcmVnaXN0cnkgZW50cmllcyBjYW4gYmUgZm91bmQsIGEgZGVmYXVsdCBwYXRoIHdpdGgKKyAgcmVsYXRpdmUgZW50cmllcyBpcyB1c2VkIChlLmcuIGBgLlxMaWI7LlxwbGF0LXdpbmBgLCBldGMpLgorCitJZiBhIGBgcHl2ZW52LmNmZ2BgIGZpbGUgaXMgZm91bmQgYWxvbmdzaWRlIHRoZSBtYWluIGV4ZWN1dGFibGUgb3IgaW4gdGhlCitkaXJlY3Rvcnkgb25lIGxldmVsIGFib3ZlIHRoZSBleGVjdXRhYmxlLCB0aGUgZm9sbG93aW5nIHZhcmlhdGlvbnMgYXBwbHk6CisKKyogSWYgYGBob21lYGAgaXMgYW4gYWJzb2x1dGUgcGF0aCBhbmQgOmVudnZhcjpgUFlUSE9OSE9NRWAgaXMgbm90IHNldCwgdGhpcworICBwYXRoIGlzIHVzZWQgaW5zdGVhZCBvZiB0aGUgcGF0aCB0byB0aGUgbWFpbiBleGVjdXRhYmxlIHdoZW4gZGVkdWNpbmcgdGhlCisgIGhvbWUgbG9jYXRpb24uCisKKyogSWYgYGBhcHBsb2NhbGBgIGlzIHNldCB0byB0cnVlLCB0aGUgYGBob21lYGAgcHJvcGVydHkgb3IgdGhlIG1haW4gZXhlY3V0YWJsZQorICBpcyBhbHdheXMgdXNlZCBhcyB0aGUgaG9tZSBwYXRoLCBhbmQgYWxsIGVudmlyb25tZW50IHZhcmlhYmxlcyBvciByZWdpc3RyeQorICB2YWx1ZXMgYWZmZWN0aW5nIHRoZSBwYXRoIGFyZSBpZ25vcmVkLiBUaGUgbGFuZG1hcmsgZmlsZSBpcyBub3QgY2hlY2tlZC4KKworVGhlIGVuZCByZXN1bHQgb2YgYWxsIHRoaXMgaXM6CisKKyogV2hlbiBydW5uaW5nIDpmaWxlOmBweXRob24uZXhlYCwgb3IgYW55IG90aGVyIC5leGUgaW4gdGhlIG1haW4gUHl0aG9uCisgIGRpcmVjdG9yeSAoZWl0aGVyIGFuIGluc3RhbGxlZCB2ZXJzaW9uLCBvciBkaXJlY3RseSBmcm9tIHRoZSBQQ2J1aWxkCisgIGRpcmVjdG9yeSksIHRoZSBjb3JlIHBhdGggaXMgZGVkdWNlZCwgYW5kIHRoZSBjb3JlIHBhdGhzIGluIHRoZSByZWdpc3RyeSBhcmUKKyAgaWdub3JlZC4gIE90aGVyICJhcHBsaWNhdGlvbiBwYXRocyIgaW4gdGhlIHJlZ2lzdHJ5IGFyZSBhbHdheXMgcmVhZC4KKworKiBXaGVuIFB5dGhvbiBpcyBob3N0ZWQgaW4gYW5vdGhlciAuZXhlIChkaWZmZXJlbnQgZGlyZWN0b3J5LCBlbWJlZGRlZCB2aWEgQ09NLAorICBldGMpLCB0aGUgIlB5dGhvbiBIb21lIiB3aWxsIG5vdCBiZSBkZWR1Y2VkLCBzbyB0aGUgY29yZSBwYXRoIGZyb20gdGhlCisgIHJlZ2lzdHJ5IGlzIHVzZWQuICBPdGhlciAiYXBwbGljYXRpb24gcGF0aHMiIGluIHRoZSByZWdpc3RyeSBhcmUgYWx3YXlzIHJlYWQuCisKKyogSWYgUHl0aG9uIGNhbid0IGZpbmQgaXRzIGhvbWUgYW5kIHRoZXJlIGFyZSBubyByZWdpc3RyeSB2YWx1ZSAoZnJvemVuIC5leGUsCisgIHNvbWUgdmVyeSBzdHJhbmdlIGluc3RhbGxhdGlvbiBzZXR1cCkgeW91IGdldCBhIHBhdGggd2l0aCBzb21lIGRlZmF1bHQsIGJ1dAorICByZWxhdGl2ZSwgcGF0aHMuCisKK0ZvciB0aG9zZSB3aG8gd2FudCB0byBidW5kbGUgUHl0aG9uIGludG8gdGhlaXIgYXBwbGljYXRpb24gb3IgZGlzdHJpYnV0aW9uLCB0aGUKK2ZvbGxvd2luZyBhZHZpY2Ugd2lsbCBwcmV2ZW50IGNvbmZsaWN0cyB3aXRoIG90aGVyIGluc3RhbGxhdGlvbnM6CisKKyogSW5jbHVkZSBhIGBgcHl2ZW52LmNmZ2BgIGZpbGUgYWxvbmdzaWRlIHlvdXIgZXhlY3V0YWJsZSBjb250YWluaW5nCisgIGBgYXBwbG9jYWwgPSB0cnVlYGAuIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCB5b3VyIG93biBkaXJlY3Rvcnkgd2lsbCBiZSB1c2VkIHRvCisgIHJlc29sdmUgcGF0aHMgZXZlbiBpZiB5b3UgaGF2ZSBpbmNsdWRlZCB0aGUgc3RhbmRhcmQgbGlicmFyeSBpbiBhIFpJUCBmaWxlLgorICBJdCB3aWxsIGFsc28gaWdub3JlIHVzZXIgc2l0ZS1wYWNrYWdlcyBhbmQgb3RoZXIgcGF0aHMgbGlzdGVkIGluIHRoZQorICByZWdpc3RyeS4KKworKiBJZiB5b3UgYXJlIGxvYWRpbmcgOmZpbGU6YHB5dGhvbjMuZGxsYCBvciA6ZmlsZTpgcHl0aG9uMzUuZGxsYCBpbiB5b3VyIG93bgorICBleGVjdXRhYmxlLCBleHBsaWNpdGx5IGNhbGwgOmM6ZnVuYzpgUHlfU2V0UGF0aGAgb3IgKGF0IGxlYXN0KQorICA6YzpmdW5jOmBQeV9TZXRQcm9ncmFtTmFtZWAgYmVmb3JlIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgLgorCisqIENsZWFyIGFuZC9vciBvdmVyd3JpdGUgOmVudnZhcjpgUFlUSE9OUEFUSGAgYW5kIHNldCA6ZW52dmFyOmBQWVRIT05IT01FYAorICBiZWZvcmUgbGF1bmNoaW5nIDpmaWxlOmBweXRob24uZXhlYCBmcm9tIHlvdXIgYXBwbGljYXRpb24uCisKKyogSWYgeW91IGNhbm5vdCB1c2UgdGhlIHByZXZpb3VzIHN1Z2dlc3Rpb25zIChmb3IgZXhhbXBsZSwgeW91IGFyZSBhCisgIGRpc3RyaWJ1dGlvbiB0aGF0IGFsbG93cyBwZW9wbGUgdG8gcnVuIDpmaWxlOmBweXRob24uZXhlYCBkaXJlY3RseSksIGVuc3VyZQorICB0aGF0IHRoZSBsYW5kbWFyayBmaWxlICg6ZmlsZTpgTGliXFxvcy5weWApIGV4aXN0cyBpbiB5b3VyIGluc3RhbGwgZGlyZWN0b3J5LgorICAoTm90ZSB0aGF0IGl0IHdpbGwgbm90IGJlIGRldGVjdGVkIGluc2lkZSBhIFpJUCBmaWxlLikKKworVGhlc2Ugd2lsbCBlbnN1cmUgdGhhdCB0aGUgZmlsZXMgaW4gYSBzeXN0ZW0td2lkZSBpbnN0YWxsYXRpb24gd2lsbCBub3QgdGFrZQorcHJlY2VkZW5jZSBvdmVyIHRoZSBjb3B5IG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGJ1bmRsZWQgd2l0aCB5b3VyIGFwcGxpY2F0aW9uLgorT3RoZXJ3aXNlLCB5b3VyIHVzZXJzIG1heSBleHBlcmllbmNlIHByb2JsZW1zIHVzaW5nIHlvdXIgYXBwbGljYXRpb24uIE5vdGUgdGhhdAordGhlIGZpcnN0IHN1Z2dlc3Rpb24gaXMgdGhlIGJlc3QsIGFzIHRoZSBvdGhlciBtYXkgc3RpbGwgYmUgc3VzY2VwdGlibGUgdG8KK25vbi1zdGFuZGFyZCBwYXRocyBpbiB0aGUgcmVnaXN0cnkgYW5kIHVzZXIgc2l0ZS1wYWNrYWdlcy4KKwogQWRkaXRpb25hbCBtb2R1bGVzCiA9PT09PT09PT09PT09PT09PT0KIApAQCAtNDk4LDcgKzc2MSw2IEBACiBUaGUgV2luZG93cy1zcGVjaWZpYyBzdGFuZGFyZCBtb2R1bGVzIGFyZSBkb2N1bWVudGVkIGluCiA6cmVmOmBtc3dpbi1zcGVjaWZpYy1zZXJ2aWNlc2AuCiAKLQogUHlXaW4zMgogLS0tLS0tLQogCkBAIC01NTcsMjAgKzgxOSw4IEBACiA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2Z3VpZGUvc2V0dXAuaHRtbCNnZXR0aW5nLXRoZS1zb3VyY2UtY29kZT5gXy4KIAogVGhlIHNvdXJjZSB0cmVlIGNvbnRhaW5zIGEgYnVpbGQgc29sdXRpb24gYW5kIHByb2plY3QgZmlsZXMgZm9yIE1pY3Jvc29mdAotVmlzdWFsIEMrKywgd2hpY2ggaXMgdGhlIGNvbXBpbGVyIHVzZWQgdG8gYnVpbGQgdGhlIG9mZmljaWFsIFB5dGhvbiByZWxlYXNlcy4KLVZpZXcgdGhlIDpmaWxlOmByZWFkbWUudHh0YCBpbiB0aGVpciByZXNwZWN0aXZlIGRpcmVjdG9yaWVzOgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IERpcmVjdG9yeSAgICAgICAgICB8IE1TVkMgdmVyc2lvbiB8IFZpc3VhbCBTdHVkaW8gdmVyc2lvbiB8Ci0rPT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rCi18IDpmaWxlOmBQQy9WUzkuMC9gICB8IDkuMCAgICAgICAgICB8IDIwMDggICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpmaWxlOmBQQ2J1aWxkL2AgICB8IDEwLjAgICAgICAgICB8IDIwMTAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLU5vdGUgdGhhdCBhbnkgYnVpbGQgZGlyZWN0b3JpZXMgd2l0aGluIHRoZSA6ZmlsZTpgUENgIGRpcmVjdG9yeSBhcmUgbm90Ci1uZWNlc3NhcmlseSBmdWxseSBzdXBwb3J0ZWQuICBUaGUgOmZpbGU6YFBDYnVpbGRgIGRpcmVjdG9yeSBjb250YWlucyB0aGUgZmlsZXMKLWZvciB0aGUgY29tcGlsZXIgdXNlZCB0byBidWlsZCB0aGUgb2ZmaWNpYWwgcmVsZWFzZS4KK1Zpc3VhbCBTdHVkaW8gMjAxNSwgd2hpY2ggaXMgdGhlIGNvbXBpbGVyIHVzZWQgdG8gYnVpbGQgdGhlIG9mZmljaWFsIFB5dGhvbgorcmVsZWFzZXMuIFRoZXNlIGZpbGVzIGFyZSBpbiB0aGUgOmZpbGU6YFBDYnVpbGRgIGRpcmVjdG9yeS4KIAogQ2hlY2sgOmZpbGU6YFBDYnVpbGQvcmVhZG1lLnR4dGAgZm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gdGhlIGJ1aWxkIHByb2Nlc3MuCiAKQEAgLTU4OCw2ICs4MzgsODMgQEAKICAgICAgIGJ5IFRyZW50IEFwdGVkIGV0IGFsLCAyMDA3CiAKIAorRW1iZWRkZWQgRGlzdHJpYnV0aW9uCis9PT09PT09PT09PT09PT09PT09PT0KKworLi4gdmVyc2lvbmFkZGVkOjogMy41CisKK1RoZSBlbWJlZGRlZCBkaXN0cmlidXRpb24gaXMgYSBaSVAgZmlsZSBjb250YWluaW5nIGEgbWluaW1hbCBQeXRob24gZW52aXJvbm1lbnQuCitJdCBpcyBpbnRlbmRlZCBmb3IgYWN0aW5nIGFzIHBhcnQgb2YgYW5vdGhlciBhcHBsaWNhdGlvbiwgcmF0aGVyIHRoYW4gYmVpbmcKK2RpcmVjdGx5IGFjY2Vzc2VkIGJ5IGVuZC11c2Vycy4KKworV2hlbiBleHRyYWN0ZWQsIHRoZSBlbWJlZGRlZCBkaXN0cmlidXRpb24gaXMgKGFsbW9zdCkgZnVsbHkgaXNvbGF0ZWQgZnJvbSB0aGUKK3VzZXIncyBzeXN0ZW0sIGluY2x1ZGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIHN5c3RlbSByZWdpc3RyeSBzZXR0aW5ncywgYW5kCitpbnN0YWxsZWQgcGFja2FnZXMuIFRoZSBzdGFuZGFyZCBsaWJyYXJ5IGlzIGluY2x1ZGVkIGFzIHByZS1jb21waWxlZCBhbmQKK29wdGltaXplZCBgYC5weWNgYCBmaWxlcyBpbiBhIFpJUCwgYW5kIGBgcHl0aG9uMy5kbGxgYCwgYGBweXRob24zNS5kbGxgYCwKK2BgcHl0aG9uLmV4ZWBgIGFuZCBgYHB5dGhvbncuZXhlYGAgYXJlIGFsbCBwcm92aWRlZC4gVGNsL3RrIChpbmNsdWRpbmcgYWxsCitkZXBlbmRhbnRzLCBzdWNoIGFzIElkbGUpLCBwaXAgYW5kIHRoZSBQeXRob24gZG9jdW1lbnRhdGlvbiBhcmUgbm90IGluY2x1ZGVkLgorCisuLiBub3RlOjoKKworICAgIFRoZSBlbWJlZGRlZCBkaXN0cmlidXRpb24gZG9lcyBub3QgaW5jbHVkZSB0aGUgYE1pY3Jvc29mdCBDIFJ1bnRpbWUKKyAgICA8aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2VuLXVzL2Rvd25sb2FkL2RldGFpbHMuYXNweD9pZD00ODE0NT5gXyBhbmQgaXQgaXMKKyAgICB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGFwcGxpY2F0aW9uIGluc3RhbGxlciB0byBwcm92aWRlIHRoaXMuIFRoZQorICAgIHJ1bnRpbWUgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIGluc3RhbGxlZCBvbiBhIHVzZXIncyBzeXN0ZW0gcHJldmlvdXNseSBvcgorICAgIGF1dG9tYXRpY2FsbHkgdmlhIFdpbmRvd3MgVXBkYXRlLCBhbmQgY2FuIGJlIGRldGVjdGVkIGJ5IGZpbmRpbmcKKyAgICBgYHVjcnRiYXNlLmRsbGBgIGluIHRoZSBzeXN0ZW0gZGlyZWN0b3J5LgorCitUaGlyZC1wYXJ0eSBwYWNrYWdlcyBzaG91bGQgYmUgaW5zdGFsbGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBpbnN0YWxsZXIgYWxvbmdzaWRlCit0aGUgZW1iZWRkZWQgZGlzdHJpYnV0aW9uLiBVc2luZyBwaXAgdG8gbWFuYWdlIGRlcGVuZGVuY2llcyBhcyBmb3IgYSByZWd1bGFyCitQeXRob24gaW5zdGFsbGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCB0aGlzIGRpc3RyaWJ1dGlvbiwgdGhvdWdoIHdpdGggc29tZQorY2FyZSBpdCBtYXkgYmUgcG9zc2libGUgdG8gaW5jbHVkZSBhbmQgdXNlIHBpcCBmb3IgYXV0b21hdGljIHVwZGF0ZXMuIEluCitnZW5lcmFsLCB0aGlyZC1wYXJ0eSBwYWNrYWdlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyBwYXJ0IG9mIHRoZSBhcHBsaWNhdGlvbgorKCJ2ZW5kb3JpbmciKSBzbyB0aGF0IHRoZSBkZXZlbG9wZXIgY2FuIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdpdGggbmV3ZXIKK3ZlcnNpb25zIGJlZm9yZSBwcm92aWRpbmcgdXBkYXRlcyB0byB1c2Vycy4KKworVGhlIHR3byByZWNvbW1lbmRlZCB1c2UgY2FzZXMgZm9yIHRoaXMgZGlzdHJpYnV0aW9uIGFyZSBkZXNjcmliZWQgYmVsb3cuCisKK1B5dGhvbiBBcHBsaWNhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FuIGFwcGxpY2F0aW9uIHdyaXR0ZW4gaW4gUHl0aG9uIGRvZXMgbm90IG5lY2Vzc2FyaWx5IHJlcXVpcmUgdXNlcnMgdG8gYmUgYXdhcmUKK29mIHRoYXQgZmFjdC4gVGhlIGVtYmVkZGVkIGRpc3RyaWJ1dGlvbiBtYXkgYmUgdXNlZCBpbiB0aGlzIGNhc2UgdG8gaW5jbHVkZSBhCitwcml2YXRlIHZlcnNpb24gb2YgUHl0aG9uIGluIGFuIGluc3RhbGwgcGFja2FnZS4gRGVwZW5kaW5nIG9uIGhvdyB0cmFuc3BhcmVudCBpdAorc2hvdWxkIGJlIChvciBjb252ZXJzZWx5LCBob3cgcHJvZmVzc2lvbmFsIGl0IHNob3VsZCBhcHBlYXIpLCB0aGVyZSBhcmUgdHdvCitvcHRpb25zLgorCitVc2luZyBhIHNwZWNpYWxpemVkIGV4ZWN1dGFibGUgYXMgYSBsYXVuY2hlciByZXF1aXJlcyBzb21lIGNvZGluZywgYnV0IHByb3ZpZGVzCit0aGUgbW9zdCB0cmFuc3BhcmVudCBleHBlcmllbmNlIGZvciB1c2Vycy4gV2l0aCBhIGN1c3RvbWl6ZWQgbGF1bmNoZXIsIHRoZXJlIGFyZQorbm8gb2J2aW91cyBpbmRpY2F0aW9ucyB0aGF0IHRoZSBwcm9ncmFtIGlzIHJ1bm5pbmcgb24gUHl0aG9uOiBpY29ucyBjYW4gYmUKK2N1c3RvbWl6ZWQsIGNvbXBhbnkgYW5kIHZlcnNpb24gaW5mb3JtYXRpb24gY2FuIGJlIHNwZWNpZmllZCwgYW5kIGZpbGUKK2Fzc29jaWF0aW9ucyBiZWhhdmUgcHJvcGVybHkuIEluIG1vc3QgY2FzZXMsIGEgY3VzdG9tIGxhdW5jaGVyIHNob3VsZCBzaW1wbHkgYmUKK2FibGUgdG8gY2FsbCBgYFB5X01haW5gYCB3aXRoIGEgaGFyZC1jb2RlZCBjb21tYW5kIGxpbmUuCisKK1RoZSBzaW1wbGVyIGFwcHJvYWNoIGlzIHRvIHByb3ZpZGUgYSBiYXRjaCBmaWxlIG9yIGdlbmVyYXRlZCBzaG9ydGN1dCB0aGF0CitkaXJlY3RseSBjYWxscyB0aGUgYGBweXRob24uZXhlYGAgb3IgYGBweXRob253LmV4ZWBgIHdpdGggdGhlIHJlcXVpcmVkCitjb21tYW5kLWxpbmUgYXJndW1lbnRzLiBJbiB0aGlzIGNhc2UsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGFwcGVhciB0byBiZSBQeXRob24KK2FuZCBub3QgaXRzIGFjdHVhbCBuYW1lLCBhbmQgdXNlcnMgbWF5IGhhdmUgdHJvdWJsZSBkaXN0aW5ndWlzaGluZyBpdCBmcm9tIG90aGVyCitydW5uaW5nIFB5dGhvbiBwcm9jZXNzZXMgb3IgZmlsZSBhc3NvY2lhdGlvbnMuCisKK1dpdGggdGhlIGxhdHRlciBhcHByb2FjaCwgcGFja2FnZXMgc2hvdWxkIGJlIGluc3RhbGxlZCBhcyBkaXJlY3RvcmllcyBhbG9uZ3NpZGUKK3RoZSBQeXRob24gZXhlY3V0YWJsZSB0byBlbnN1cmUgdGhleSBhcmUgYXZhaWxhYmxlIG9uIHRoZSBwYXRoLiBXaXRoIHRoZQorc3BlY2lhbGl6ZWQgbGF1bmNoZXIsIHBhY2thZ2VzIGNhbiBiZSBsb2NhdGVkIGluIG90aGVyIGxvY2F0aW9ucyBhcyB0aGVyZSBpcyBhbgorb3Bwb3J0dW5pdHkgdG8gc3BlY2lmeSB0aGUgc2VhcmNoIHBhdGggYmVmb3JlIGxhdW5jaGluZyB0aGUgYXBwbGljYXRpb24uCisKK0VtYmVkZGluZyBQeXRob24KKy0tLS0tLS0tLS0tLS0tLS0KKworQXBwbGljYXRpb25zIHdyaXR0ZW4gaW4gbmF0aXZlIGNvZGUgb2Z0ZW4gcmVxdWlyZSBzb21lIGZvcm0gb2Ygc2NyaXB0aW5nCitsYW5ndWFnZSwgYW5kIHRoZSBlbWJlZGRlZCBQeXRob24gZGlzdHJpYnV0aW9uIGNhbiBiZSB1c2VkIGZvciB0aGlzIHB1cnBvc2UuIEluCitnZW5lcmFsLCB0aGUgbWFqb3JpdHkgb2YgdGhlIGFwcGxpY2F0aW9uIGlzIGluIG5hdGl2ZSBjb2RlLCBhbmQgc29tZSBwYXJ0IHdpbGwKK2VpdGhlciBpbnZva2UgYGBweXRob24uZXhlYGAgb3IgZGlyZWN0bHkgdXNlIGBgcHl0aG9uMy5kbGxgYC4gRm9yIGVpdGhlciBjYXNlLAorZXh0cmFjdGluZyB0aGUgZW1iZWRkZWQgZGlzdHJpYnV0aW9uIHRvIGEgc3ViZGlyZWN0b3J5IG9mIHRoZSBhcHBsaWNhdGlvbgoraW5zdGFsbGF0aW9uIGlzIHN1ZmZpY2llbnQgdG8gcHJvdmlkZSBhIGxvYWRhYmxlIFB5dGhvbiBpbnRlcnByZXRlci4KKworQXMgd2l0aCB0aGUgYXBwbGljYXRpb24gdXNlLCBwYWNrYWdlcyBjYW4gYmUgaW5zdGFsbGVkIHRvIGFueSBsb2NhdGlvbiBhcyB0aGVyZQoraXMgYW4gb3Bwb3J0dW5pdHkgdG8gc3BlY2lmeSBzZWFyY2ggcGF0aHMgYmVmb3JlIGluaXRpYWxpemluZyB0aGUgaW50ZXJwcmV0ZXIuCitPdGhlcndpc2UsIHRoZXJlIGlzIG5vIGZ1bmRhbWVudGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdXNpbmcgdGhlIGVtYmVkZGVkCitkaXN0cmlidXRpb24gYW5kIGEgcmVndWxhciBpbnN0YWxsYXRpb24uCisKIE90aGVyIHJlc291cmNlcwogPT09PT09PT09PT09PT09CiAKQEAgLTYwMyw1ICs5MzAsMyBAQAogCiAgICA6cGVwOmAzOTdgIC0gUHl0aG9uIGxhdW5jaGVyIGZvciBXaW5kb3dzCiAgICAgICBUaGUgcHJvcG9zYWwgZm9yIHRoZSBsYXVuY2hlciB0byBiZSBpbmNsdWRlZCBpbiB0aGUgUHl0aG9uIGRpc3RyaWJ1dGlvbi4KLQotCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy41LnJzdCBiL0RvYy93aGF0c25ldy8zLjUucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzY2Q2MDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2Mvd2hhdHNuZXcvMy41LnJzdApAQCAtMCwwICsxLDI0OTUgQEAKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgV2hhdCdzIE5ldyBJbiBQeXRob24gMy41CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKzpFZGl0b3JzOiBFbHZpcyBQcmFuc2tldmljaHVzIDxlbHZpc0BtYWdpYy5pbz4sIFl1cnkgU2VsaXZhbm92IDx5dXJ5QG1hZ2ljLmlvPgorCisuLiBSdWxlcyBmb3IgbWFpbnRlbmFuY2U6CisKKyAgICogQW55b25lIGNhbiBhZGQgdGV4dCB0byB0aGlzIGRvY3VtZW50LiAgRG8gbm90IHNwZW5kIHZlcnkgbXVjaCB0aW1lCisgICBvbiB0aGUgd29yZGluZyBvZiB5b3VyIGNoYW5nZXMsIGJlY2F1c2UgeW91ciB0ZXh0IHdpbGwgcHJvYmFibHkKKyAgIGdldCByZXdyaXR0ZW4gdG8gc29tZSBkZWdyZWUuCisKKyAgICogVGhlIG1haW50YWluZXIgd2lsbCBnbyB0aHJvdWdoIE1pc2MvTkVXUyBwZXJpb2RpY2FsbHkgYW5kIGFkZAorICAgY2hhbmdlczsgaXQncyB0aGVyZWZvcmUgbW9yZSBpbXBvcnRhbnQgdG8gYWRkIHlvdXIgY2hhbmdlcyB0bworICAgTWlzYy9ORVdTIHRoYW4gdG8gdGhpcyBmaWxlLgorCisgICAqIFRoaXMgaXMgbm90IGEgY29tcGxldGUgbGlzdCBvZiBldmVyeSBzaW5nbGUgY2hhbmdlOyBjb21wbGV0ZW5lc3MKKyAgIGlzIHRoZSBwdXJwb3NlIG9mIE1pc2MvTkVXUy4gIFNvbWUgY2hhbmdlcyBJIGNvbnNpZGVyIHRvbyBzbWFsbAorICAgb3IgZXNvdGVyaWMgdG8gaW5jbHVkZS4gIElmIHN1Y2ggYSBjaGFuZ2UgaXMgYWRkZWQgdG8gdGhlIHRleHQsCisgICBJJ2xsIGp1c3QgcmVtb3ZlIGl0LiAgKFRoaXMgaXMgYW5vdGhlciByZWFzb24geW91IHNob3VsZG4ndCBzcGVuZAorICAgdG9vIG11Y2ggdGltZSBvbiB3cml0aW5nIHlvdXIgYWRkaXRpb24uKQorCisgICAqIElmIHlvdSB3YW50IHRvIGRyYXcgeW91ciBuZXcgdGV4dCB0byB0aGUgYXR0ZW50aW9uIG9mIHRoZQorICAgbWFpbnRhaW5lciwgYWRkICdYWFgnIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhcmFncmFwaCBvcgorICAgc2VjdGlvbi4KKworICAgKiBJdCdzIE9LIHRvIGp1c3QgYWRkIGEgZnJhZ21lbnRhcnkgbm90ZSBhYm91dCBhIGNoYW5nZS4gIEZvcgorICAgZXhhbXBsZTogIlhYWCBEZXNjcmliZSB0aGUgdHJhbnNtb2dyaWZ5KCkgZnVuY3Rpb24gYWRkZWQgdG8gdGhlCisgICBzb2NrZXQgbW9kdWxlLiIgIFRoZSBtYWludGFpbmVyIHdpbGwgcmVzZWFyY2ggdGhlIGNoYW5nZSBhbmQKKyAgIHdyaXRlIHRoZSBuZWNlc3NhcnkgdGV4dC4KKworICAgKiBZb3UgY2FuIGNvbW1lbnQgb3V0IHlvdXIgYWRkaXRpb25zIGlmIHlvdSBsaWtlLCBidXQgaXQncyBub3QKKyAgIG5lY2Vzc2FyeSAoZXNwZWNpYWxseSB3aGVuIGEgZmluYWwgcmVsZWFzZSBpcyBzb21lIG1vbnRocyBhd2F5KS4KKworICAgKiBDcmVkaXQgdGhlIGF1dGhvciBvZiBhIHBhdGNoIG9yIGJ1Z2ZpeC4gICBKdXN0IHRoZSBuYW1lIGlzCisgICBzdWZmaWNpZW50OyB0aGUgZS1tYWlsIGFkZHJlc3MgaXNuJ3QgbmVjZXNzYXJ5LgorCisgICAqIEl0J3MgaGVscGZ1bCB0byBhZGQgdGhlIGJ1Zy9wYXRjaCBudW1iZXIgYXMgYSBjb21tZW50OgorCisgICBYWFggRGVzY3JpYmUgdGhlIHRyYW5zbW9ncmlmeSgpIGZ1bmN0aW9uIGFkZGVkIHRvIHRoZSBzb2NrZXQKKyAgIG1vZHVsZS4KKyAgIChDb250cmlidXRlZCBieSBQLlkuIERldmVsb3BlciBpbiA6aXNzdWU6YDEyMzQ1YC4pCisKKyAgIFRoaXMgc2F2ZXMgdGhlIG1haW50YWluZXIgdGhlIGVmZm9ydCBvZiBnb2luZyB0aHJvdWdoIHRoZSBNZXJjdXJpYWwgbG9nCisgICB3aGVuIHJlc2VhcmNoaW5nIGEgY2hhbmdlLgorCitUaGlzIGFydGljbGUgZXhwbGFpbnMgdGhlIG5ldyBmZWF0dXJlcyBpbiBQeXRob24gMy41LCBjb21wYXJlZCB0byAzLjQuCitQeXRob24gMy41IHdhcyByZWxlYXNlZCBvbiBTZXB0ZW1iZXIgMTMsIDIwMTUuIMKgU2VlIHRoZQorYGNoYW5nZWxvZyA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy41L3doYXRzbmV3L2NoYW5nZWxvZy5odG1sPmBfIGZvciBhIGZ1bGwKK2xpc3Qgb2YgY2hhbmdlcy4KKworLi4gc2VlYWxzbzo6CisKKyAgICA6cGVwOmA0NzhgIC0gUHl0aG9uIDMuNSBSZWxlYXNlIFNjaGVkdWxlCisKKworU3VtbWFyeSAtLSBSZWxlYXNlIGhpZ2hsaWdodHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK05ldyBzeW50YXggZmVhdHVyZXM6CisKKyogOnJlZjpgUEVQIDQ5MiA8d2hhdHNuZXctcGVwLTQ5Mj5gLCBjb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0IHN5bnRheC4KKyogOnJlZjpgUEVQIDQ2NSA8d2hhdHNuZXctcGVwLTQ2NT5gLCBhIG5ldyBtYXRyaXggbXVsdGlwbGljYXRpb24gb3BlcmF0b3I6IGBgYSBAIGJgYC4KKyogOnJlZjpgUEVQIDQ0OCA8d2hhdHNuZXctcGVwLTQ0OD5gLCBhZGRpdGlvbmFsIHVucGFja2luZyBnZW5lcmFsaXphdGlvbnMuCisKKworTmV3IGxpYnJhcnkgbW9kdWxlczoKKworKiA6bW9kOmB0eXBpbmdgOiA6cmVmOmBQRVAgNDg0IC0tIFR5cGUgSGludHMgPHdoYXRzbmV3LXBlcC00ODQ+YC4KKyogOm1vZDpgemlwYXBwYDogOnJlZjpgUEVQIDQ0MSBJbXByb3ZpbmcgUHl0aG9uIFpJUCBBcHBsaWNhdGlvbiBTdXBwb3J0CisgIDx3aGF0c25ldy16aXBhcHA+YC4KKworCitOZXcgYnVpbHQtaW4gZmVhdHVyZXM6CisKKyogYGBieXRlcyAlIGFyZ3NgYCwgYGBieXRlYXJyYXkgJSBhcmdzYGA6IDpyZWY6YFBFUCA0NjEgPHdoYXRzbmV3LXBlcC00NjE+YCAtLQorICBBZGRpbmcgYGAlYGAgZm9ybWF0dGluZyB0byBieXRlcyBhbmQgYnl0ZWFycmF5LgorCisqIE5ldyA6bWV0aDpgYnl0ZXMuaGV4YCwgOm1ldGg6YGJ5dGVhcnJheS5oZXhgIGFuZCA6bWV0aDpgbWVtb3J5dmlldy5oZXhgCisgIG1ldGhvZHMuIChDb250cmlidXRlZCBieSBBcm5vbiBZYWFyaSBpbiA6aXNzdWU6YDk5NTFgLikKKworKiA6Y2xhc3M6YG1lbW9yeXZpZXdgIG5vdyBzdXBwb3J0cyB0dXBsZSBpbmRleGluZyAoaW5jbHVkaW5nIG11bHRpLWRpbWVuc2lvbmFsKS4KKyAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMjM2MzJgLikKKworKiBHZW5lcmF0b3JzIGhhdmUgYSBuZXcgYGBnaV95aWVsZGZyb21gYCBhdHRyaWJ1dGUsIHdoaWNoIHJldHVybnMgdGhlCisgIG9iamVjdCBiZWluZyBpdGVyYXRlZCBieSBgYHlpZWxkIGZyb21gYCBleHByZXNzaW9ucy4gKENvbnRyaWJ1dGVkCisgIGJ5IEJlbm5vIExlc2xpZSBhbmQgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyNDQ1MGAuKQorCisqIEEgbmV3IDpleGM6YFJlY3Vyc2lvbkVycm9yYCBleGNlcHRpb24gaXMgbm93IHJhaXNlZCB3aGVuIG1heGltdW0KKyAgcmVjdXJzaW9uIGRlcHRoIGlzIHJlYWNoZWQuICAoQ29udHJpYnV0ZWQgYnkgR2VvcmcgQnJhbmRsCisgIGluIDppc3N1ZTpgMTkyMzVgLikKKworCitDUHl0aG9uIGltcGxlbWVudGF0aW9uIGltcHJvdmVtZW50czoKKworKiBXaGVuIHRoZSBgYExDX1RZUEVgYCBsb2NhbGUgaXMgdGhlIFBPU0lYIGxvY2FsZSAoYGBDYGAgbG9jYWxlKSwKKyAgOnB5OmRhdGE6YHN5cy5zdGRpbmAgYW5kIDpweTpkYXRhOmBzeXMuc3Rkb3V0YCBub3cgdXNlIHRoZQorICBgYHN1cnJvZ2F0ZWVzY2FwZWBgIGVycm9yIGhhbmRsZXIsIGluc3RlYWQgb2YgdGhlIGBgc3RyaWN0YGAgZXJyb3IgaGFuZGxlci4KKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMTk5NzdgLikKKworKiBgYC5weW9gYCBmaWxlcyBhcmUgbm8gbG9uZ2VyIHVzZWQgYW5kIGhhdmUgYmVlbiByZXBsYWNlZCBieSBhIG1vcmUgZmxleGlibGUKKyAgc2NoZW1lIHRoYXQgaW5jbHVkZXMgdGhlIG9wdGltaXphdGlvbiBsZXZlbCBleHBsaWNpdGx5IGluIGBgLnB5Y2BgIG5hbWUuCisgIChTZWUgOnJlZjpgUEVQIDQ4OCBvdmVydmlldyA8d2hhdHNuZXctcGVwLTQ4OD5gLikKKworKiBCdWlsdGluIGFuZCBleHRlbnNpb24gbW9kdWxlcyBhcmUgbm93IGluaXRpYWxpemVkIGluIGEgbXVsdGktcGhhc2UgcHJvY2VzcywKKyAgd2hpY2ggaXMgc2ltaWxhciB0byBob3cgUHl0aG9uIG1vZHVsZXMgYXJlIGxvYWRlZC4KKyAgKFNlZSA6cmVmOmBQRVAgNDg5IG92ZXJ2aWV3IDx3aGF0c25ldy1wZXAtNDg5PmAuKQorCisKK1NpZ25pZmljYW50IGltcHJvdmVtZW50cyBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeToKKworKiA6Y2xhc3M6YGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YCBpcyBub3cKKyAgOnJlZjpgaW1wbGVtZW50ZWQgaW4gQyA8d2hhdHNuZXctb3JkZXJlZGRpY3Q+YCwgd2hpY2ggbWFrZXMgaXQKKyAgNCB0byAxMDAgdGltZXMgZmFzdGVyLgorCisqIFRoZSA6bW9kOmBzc2xgIG1vZHVsZSBnYWluZWQKKyAgOnJlZjpgc3VwcG9ydCBmb3IgTWVtb3J5IEJJTyA8d2hhdHNuZXctc3NsbWVtb3J5YmlvPmAsIHdoaWNoIGRlY291cGxlcyBTU0wKKyAgcHJvdG9jb2wgaGFuZGxpbmcgZnJvbSBuZXR3b3JrIElPLgorCisqIFRoZSBuZXcgOmZ1bmM6YG9zLnNjYW5kaXJgIGZ1bmN0aW9uIHByb3ZpZGVzIGEKKyAgOnJlZjpgYmV0dGVyIGFuZCBzaWduaWZpY2FudGx5IGZhc3RlciB3YXkgPHdoYXRzbmV3LXBlcC00NzE+YAorICBvZiBkaXJlY3RvcnkgdHJhdmVyc2FsLgorCisqIDpmdW5jOmBmdW5jdG9vbHMubHJ1X2NhY2hlYCBoYXMgYmVlbiBtb3N0bHkKKyAgOnJlZjpgcmVpbXBsZW1lbnRlZCBpbiBDIDx3aGF0c25ldy1scnVjYWNoZT5gLCB5aWVsZGluZyBtdWNoIGJldHRlcgorICBwZXJmb3JtYW5jZS4KKworKiBUaGUgbmV3IDpmdW5jOmBzdWJwcm9jZXNzLnJ1bmAgZnVuY3Rpb24gcHJvdmlkZXMgYQorICA6cmVmOmBzdHJlYW1saW5lZCB3YXkgdG8gcnVuIHN1YnByb2Nlc3NlcyA8d2hhdHNuZXctc3VicHJvY2Vzcz5gLgorCisqIFRoZSA6bW9kOmB0cmFjZWJhY2tgIG1vZHVsZSBoYXMgYmVlbiBzaWduaWZpY2FudGx5CisgIDpyZWY6YGVuaGFuY2VkIDx3aGF0c25ldy10cmFjZWJhY2s+YCBmb3IgaW1wcm92ZWQKKyAgcGVyZm9ybWFuY2UgYW5kIGRldmVsb3BlciBjb252ZW5pZW5jZS4KKworCitTZWN1cml0eSBpbXByb3ZlbWVudHM6CisKKyogU1NMdjMgaXMgbm93IGRpc2FibGVkIHRocm91Z2hvdXQgdGhlIHN0YW5kYXJkIGxpYnJhcnkuCisgIEl0IGNhbiBzdGlsbCBiZSBlbmFibGVkIGJ5IGluc3RhbnRpYXRpbmcgYSA6Y2xhc3M6YHNzbC5TU0xDb250ZXh0YAorICBtYW51YWxseS4gIChTZWUgOmlzc3VlOmAyMjYzOGAgZm9yIG1vcmUgZGV0YWlsczsgdGhpcyBjaGFuZ2Ugd2FzCisgIGJhY2twb3J0ZWQgdG8gQ1B5dGhvbiAzLjQgYW5kIDIuNy4pCisKKyogSFRUUCBjb29raWUgcGFyc2luZyBpcyBub3cgc3RyaWN0ZXIsIGluIG9yZGVyIHRvIHByb3RlY3QKKyAgYWdhaW5zdCBwb3RlbnRpYWwgaW5qZWN0aW9uIGF0dGFja3MuIChDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdQorICBpbiA6aXNzdWU6YDIyNzk2YC4pCisKKworV2luZG93cyBpbXByb3ZlbWVudHM6CisKKyogQSBuZXcgaW5zdGFsbGVyIGZvciBXaW5kb3dzIGhhcyByZXBsYWNlZCB0aGUgb2xkIE1TSS4KKyAgU2VlIDpyZWY6YHVzaW5nLW9uLXdpbmRvd3NgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisqIFdpbmRvd3MgYnVpbGRzIG5vdyB1c2UgTWljcm9zb2Z0IFZpc3VhbCBDKysgMTQuMCwgYW5kIGV4dGVuc2lvbiBtb2R1bGVzCisgIHNob3VsZCB1c2UgdGhlIHNhbWUuCisKKworUGxlYXNlIHJlYWQgb24gZm9yIGEgY29tcHJlaGVuc2l2ZSBsaXN0IG9mIHVzZXItZmFjaW5nIGNoYW5nZXMsIGluY2x1ZGluZyBtYW55CitvdGhlciBzbWFsbGVyIGltcHJvdmVtZW50cywgQ1B5dGhvbiBvcHRpbWl6YXRpb25zLCBkZXByZWNhdGlvbnMsIGFuZCBwb3RlbnRpYWwKK3BvcnRpbmcgaXNzdWVzLgorCisKK05ldyBGZWF0dXJlcworPT09PT09PT09PT09CisKKy4uIF93aGF0c25ldy1wZXAtNDkyOgorCitQRVAgNDkyIC0gQ29yb3V0aW5lcyB3aXRoIGFzeW5jIGFuZCBhd2FpdCBzeW50YXgKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA0OTJgIGdyZWF0bHkgaW1wcm92ZXMgc3VwcG9ydCBmb3IgYXN5bmNocm9ub3VzIHByb2dyYW1taW5nIGluIFB5dGhvbgorYnkgYWRkaW5nIDp0ZXJtOmBhd2FpdGFibGUgb2JqZWN0cyA8YXdhaXRhYmxlPmAsCis6dGVybTpgY29yb3V0aW5lIGZ1bmN0aW9ucyA8Y29yb3V0aW5lIGZ1bmN0aW9uPmAsCis6dGVybTpgYXN5bmNocm9ub3VzIGl0ZXJhdGlvbiA8YXN5bmNocm9ub3VzIGl0ZXJhYmxlPmAsCithbmQgOnRlcm06YGFzeW5jaHJvbm91cyBjb250ZXh0IG1hbmFnZXJzIDxhc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyPmAuCisKK0Nvcm91dGluZSBmdW5jdGlvbnMgYXJlIGRlY2xhcmVkIHVzaW5nIHRoZSBuZXcgOmtleXdvcmQ6YGFzeW5jIGRlZmAgc3ludGF4OjoKKworICAgID4+PiBhc3luYyBkZWYgY29ybygpOgorICAgIC4uLiAgICAgcmV0dXJuICdzcGFtJworCitJbnNpZGUgYSBjb3JvdXRpbmUgZnVuY3Rpb24sIHRoZSBuZXcgOmtleXdvcmQ6YGF3YWl0YCBleHByZXNzaW9uIGNhbiBiZSB1c2VkCit0byBzdXNwZW5kIGNvcm91dGluZSBleGVjdXRpb24gdW50aWwgdGhlIHJlc3VsdCBpcyBhdmFpbGFibGUuICBBbnkgb2JqZWN0CitjYW4gYmUgKmF3YWl0ZWQqLCBhcyBsb25nIGFzIGl0IGltcGxlbWVudHMgdGhlIDp0ZXJtOmBhd2FpdGFibGVgIHByb3RvY29sIGJ5CitkZWZpbmluZyB0aGUgOm1ldGg6YF9fYXdhaXRfX2AgbWV0aG9kLgorCitQRVAgNDkyIGFsc28gYWRkcyA6a2V5d29yZDpgYXN5bmMgZm9yYCBzdGF0ZW1lbnQgZm9yIGNvbnZlbmllbnQgaXRlcmF0aW9uCitvdmVyIGFzeW5jaHJvbm91cyBpdGVyYWJsZXMuCisKK0FuIGV4YW1wbGUgb2YgYSBydWRpbWVudGFyeSBIVFRQIGNsaWVudCB3cml0dGVuIHVzaW5nIHRoZSBuZXcgc3ludGF4OjoKKworICAgIGltcG9ydCBhc3luY2lvCisKKyAgICBhc3luYyBkZWYgaHR0cF9nZXQoZG9tYWluKToKKyAgICAgICAgcmVhZGVyLCB3cml0ZXIgPSBhd2FpdCBhc3luY2lvLm9wZW5fY29ubmVjdGlvbihkb21haW4sIDgwKQorCisgICAgICAgIHdyaXRlci53cml0ZShiJ1xyXG4nLmpvaW4oWworICAgICAgICAgICAgYidHRVQgLyBIVFRQLzEuMScsCisgICAgICAgICAgICBiJ0hvc3Q6ICViJyAlIGRvbWFpbi5lbmNvZGUoJ2xhdGluLTEnKSwKKyAgICAgICAgICAgIGInQ29ubmVjdGlvbjogY2xvc2UnLAorICAgICAgICAgICAgYicnLCBiJycKKyAgICAgICAgXSkpCisKKyAgICAgICAgYXN5bmMgZm9yIGxpbmUgaW4gcmVhZGVyOgorICAgICAgICAgICAgcHJpbnQoJz4+PicsIGxpbmUpCisKKyAgICAgICAgd3JpdGVyLmNsb3NlKCkKKworICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKKyAgICB0cnk6CisgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGh0dHBfZ2V0KCdleGFtcGxlLmNvbScpKQorICAgIGZpbmFsbHk6CisgICAgICAgIGxvb3AuY2xvc2UoKQorCisKK1NpbWlsYXJseSB0byBhc3luY2hyb25vdXMgaXRlcmF0aW9uLCB0aGVyZSBpcyBhIG5ldyBzeW50YXggZm9yIGFzeW5jaHJvbm91cworY29udGV4dCBtYW5hZ2Vycy4gIFRoZSBmb2xsb3dpbmcgc2NyaXB0OjoKKworICAgIGltcG9ydCBhc3luY2lvCisKKyAgICBhc3luYyBkZWYgY29ybyhuYW1lLCBsb2NrKToKKyAgICAgICAgcHJpbnQoJ2Nvcm8ge306IHdhaXRpbmcgZm9yIGxvY2snLmZvcm1hdChuYW1lKSkKKyAgICAgICAgYXN5bmMgd2l0aCBsb2NrOgorICAgICAgICAgICAgcHJpbnQoJ2Nvcm8ge306IGhvbGRpbmcgdGhlIGxvY2snLmZvcm1hdChuYW1lKSkKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMSkKKyAgICAgICAgICAgIHByaW50KCdjb3JvIHt9OiByZWxlYXNpbmcgdGhlIGxvY2snLmZvcm1hdChuYW1lKSkKKworICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKKyAgICBsb2NrID0gYXN5bmNpby5Mb2NrKCkKKyAgICBjb3JvcyA9IGFzeW5jaW8uZ2F0aGVyKGNvcm8oMSwgbG9jayksIGNvcm8oMiwgbG9jaykpCisgICAgdHJ5OgorICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShjb3JvcykKKyAgICBmaW5hbGx5OgorICAgICAgICBsb29wLmNsb3NlKCkKKword2lsbCBvdXRwdXQ6OgorCisgICAgY29ybyAyOiB3YWl0aW5nIGZvciBsb2NrCisgICAgY29ybyAyOiBob2xkaW5nIHRoZSBsb2NrCisgICAgY29ybyAxOiB3YWl0aW5nIGZvciBsb2NrCisgICAgY29ybyAyOiByZWxlYXNpbmcgdGhlIGxvY2sKKyAgICBjb3JvIDE6IGhvbGRpbmcgdGhlIGxvY2sKKyAgICBjb3JvIDE6IHJlbGVhc2luZyB0aGUgbG9jaworCitOb3RlIHRoYXQgYm90aCA6a2V5d29yZDpgYXN5bmMgZm9yYCBhbmQgOmtleXdvcmQ6YGFzeW5jIHdpdGhgIGNhbiBvbmx5CitiZSB1c2VkIGluc2lkZSBhIGNvcm91dGluZSBmdW5jdGlvbiBkZWNsYXJlZCB3aXRoIDprZXl3b3JkOmBhc3luYyBkZWZgLgorCitDb3JvdXRpbmUgZnVuY3Rpb25zIGFyZSBpbnRlbmRlZCB0byBiZSBydW4gaW5zaWRlIGEgY29tcGF0aWJsZSBldmVudCBsb29wLAorc3VjaCBhcyB0aGUgOnJlZjpgYXN5bmNpbyBsb29wIDxhc3luY2lvLWV2ZW50LWxvb3A+YC4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQ5MmAgLS0gQ29yb3V0aW5lcyB3aXRoIGFzeW5jIGFuZCBhd2FpdCBzeW50YXgKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBZdXJ5IFNlbGl2YW5vdi4KKworCisuLiBfd2hhdHNuZXctcGVwLTQ2NToKKworUEVQIDQ2NSAtIEEgZGVkaWNhdGVkIGluZml4IG9wZXJhdG9yIGZvciBtYXRyaXggbXVsdGlwbGljYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpwZXA6YDQ2NWAgYWRkcyB0aGUgYGBAYGAgaW5maXggb3BlcmF0b3IgZm9yIG1hdHJpeCBtdWx0aXBsaWNhdGlvbi4KK0N1cnJlbnRseSwgbm8gYnVpbHRpbiBQeXRob24gdHlwZXMgaW1wbGVtZW50IHRoZSBuZXcgb3BlcmF0b3IsIGhvd2V2ZXIsIGl0CitjYW4gYmUgaW1wbGVtZW50ZWQgYnkgZGVmaW5pbmcgOm1ldGg6YF9fbWF0bXVsX19gLCA6bWV0aDpgX19ybWF0bXVsX19gLAorYW5kIDptZXRoOmBfX2ltYXRtdWxfX2AgZm9yIHJlZ3VsYXIsIHJlZmxlY3RlZCwgYW5kIGluLXBsYWNlIG1hdHJpeAorbXVsdGlwbGljYXRpb24uICBUaGUgc2VtYW50aWNzIG9mIHRoZXNlIG1ldGhvZHMgaXMgc2ltaWxhciB0byB0aGF0IG9mCittZXRob2RzIGRlZmluaW5nIG90aGVyIGluZml4IGFyaXRobWV0aWMgb3BlcmF0b3JzLgorCitNYXRyaXggbXVsdGlwbGljYXRpb24gaXMgYSBub3RhYmx5IGNvbW1vbiBvcGVyYXRpb24gaW4gbWFueSBmaWVsZHMgb2YKK21hdGhlbWF0aWNzLCBzY2llbmNlLCBlbmdpbmVlcmluZywgYW5kIHRoZSBhZGRpdGlvbiBvZiBgYEBgYCBhbGxvd3Mgd3JpdGluZworY2xlYW5lciBjb2RlOjoKKworICAgIFMgPSAoSCBAIGJldGEgLSByKS5UIEAgaW52KEggQCBWIEAgSC5UKSBAIChIIEAgYmV0YSAtIHIpCisKK2luc3RlYWQgb2Y6OgorCisgICAgUyA9IGRvdCgoZG90KEgsIGJldGEpIC0gcikuVCwKKyAgICAgICAgICAgIGRvdChpbnYoZG90KGRvdChILCBWKSwgSC5UKSksIGRvdChILCBiZXRhKSAtIHIpKQorCitOdW1QeSAxLjEwIGhhcyBzdXBwb3J0IGZvciB0aGUgbmV3IG9wZXJhdG9yOjoKKworICAgID4+PiBpbXBvcnQgbnVtcHkKKworICAgID4+PiB4ID0gbnVtcHkub25lcygzKQorICAgID4+PiB4CisgICAgYXJyYXkoWyAxLiwgMS4sIDEuXSkKKworICAgID4+PiBtID0gbnVtcHkuZXllKDMpCisgICAgPj4+IG0KKyAgICBhcnJheShbWyAxLiwgMC4sIDAuXSwKKyAgICAgICAgICAgWyAwLiwgMS4sIDAuXSwKKyAgICAgICAgICAgWyAwLiwgMC4sIDEuXV0pCisKKyAgICA+Pj4geCBAIG0KKyAgICBhcnJheShbIDEuLCAxLiwgMS5dKQorCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0NjVgIC0tIEEgZGVkaWNhdGVkIGluZml4IG9wZXJhdG9yIGZvciBtYXRyaXggbXVsdGlwbGljYXRpb24KKyAgICAgIFBFUCB3cml0dGVuIGJ5IE5hdGhhbmllbCBKLiBTbWl0aDsgaW1wbGVtZW50ZWQgYnkgQmVuamFtaW4gUGV0ZXJzb24uCisKKworLi4gX3doYXRzbmV3LXBlcC00NDg6CisKK1BFUCA0NDggLSBBZGRpdGlvbmFsIFVucGFja2luZyBHZW5lcmFsaXphdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOnBlcDpgNDQ4YCBleHRlbmRzIHRoZSBhbGxvd2VkIHVzZXMgb2YgdGhlIGBgKmBgIGl0ZXJhYmxlIHVucGFja2luZworb3BlcmF0b3IgYW5kIGBgKipgYCBkaWN0aW9uYXJ5IHVucGFja2luZyBvcGVyYXRvci4gIEl0IGlzIG5vdyBwb3NzaWJsZQordG8gdXNlIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgdW5wYWNraW5ncyBpbiBmdW5jdGlvbiBjYWxsczo6CisKKyAgICA+Pj4gcHJpbnQoKlsxXSwgKlsyXSwgMywgKls0LCA1XSkKKyAgICAxIDIgMyA0IDUKKworICAgID4+PiBkZWYgZm4oYSwgYiwgYywgZCk6CisgICAgLi4uICAgICBwcmludChhLCBiLCBjLCBkKQorICAgIC4uLgorCisgICAgPj4+IGZuKCoqeydhJzogMSwgJ2MnOiAzfSwgKip7J2InOiAyLCAnZCc6IDR9KQorICAgIDEgMiAzIDQKKworU2ltaWxhcmx5LCB0dXBsZSwgbGlzdCwgc2V0LCBhbmQgZGljdGlvbmFyeSBkaXNwbGF5cyBhbGxvdyBtdWx0aXBsZQordW5wYWNraW5nczo6CisKKyAgICA+Pj4gKnJhbmdlKDQpLCA0CisgICAgKDAsIDEsIDIsIDMsIDQpCisKKyAgICA+Pj4gWypyYW5nZSg0KSwgNF0KKyAgICBbMCwgMSwgMiwgMywgNF0KKworICAgID4+PiB7KnJhbmdlKDQpLCA0LCAqKDUsIDYsIDcpfQorICAgIHswLCAxLCAyLCAzLCA0LCA1LCA2LCA3fQorCisgICAgPj4+IHsneCc6IDEsICoqeyd5JzogMn19CisgICAgeyd4JzogMSwgJ3knOiAyfQorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDQ4YCAtLSBBZGRpdGlvbmFsIFVucGFja2luZyBHZW5lcmFsaXphdGlvbnMKKyAgICAgIFBFUCB3cml0dGVuIGJ5IEpvc2h1YSBMYW5kYXU7IGltcGxlbWVudGVkIGJ5IE5laWwgR2lyZGhhciwKKyAgICAgIFRob21hcyBXb3V0ZXJzLCBhbmQgSm9zaHVhIExhbmRhdS4KKworCisuLiBfd2hhdHNuZXctcGVwLTQ2MToKKworUEVQIDQ2MSAtICUgZm9ybWF0dGluZyBzdXBwb3J0IGZvciBieXRlcyBhbmQgYnl0ZWFycmF5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOnBlcDpgNDYxYCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBgYCVgYAorOnJlZjpgaW50ZXJwb2xhdGlvbiBvcGVyYXRvciA8Ynl0ZXMtZm9ybWF0dGluZz5gIHRvIDpjbGFzczpgYnl0ZXNgCithbmQgOmNsYXNzOmBieXRlYXJyYXlgLgorCitXaGlsZSBpbnRlcnBvbGF0aW9uIGlzIHVzdWFsbHkgdGhvdWdodCBvZiBhcyBhIHN0cmluZyBvcGVyYXRpb24sIHRoZXJlIGFyZQorY2FzZXMgd2hlcmUgaW50ZXJwb2xhdGlvbiBvbiBgYGJ5dGVzYGAgb3IgYGBieXRlYXJyYXlzYGAgbWFrZXMgc2Vuc2UsIGFuZCB0aGUKK3dvcmsgbmVlZGVkIHRvIG1ha2UgdXAgZm9yIHRoaXMgbWlzc2luZyBmdW5jdGlvbmFsaXR5IGRldHJhY3RzIGZyb20gdGhlCitvdmVyYWxsIHJlYWRhYmlsaXR5IG9mIHRoZSBjb2RlLiAgVGhpcyBpc3N1ZSBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IHdoZW4KK2RlYWxpbmcgd2l0aCB3aXJlIGZvcm1hdCBwcm90b2NvbHMsIHdoaWNoIGFyZSBvZnRlbiBhIG1peHR1cmUgb2YgYmluYXJ5CithbmQgQVNDSUkgY29tcGF0aWJsZSB0ZXh0LgorCitFeGFtcGxlczo6CisKKyAgICA+Pj4gYidIZWxsbyAlYiEnICUgYidXb3JsZCcKKyAgICBiJ0hlbGxvIFdvcmxkIScKKworICAgID4+PiBiJ3g9JWkgeT0lZicgJSAoMSwgMi41KQorICAgIGIneD0xIHk9Mi41MDAwMDAnCisKK1VuaWNvZGUgaXMgbm90IGFsbG93ZWQgZm9yIGBgJWJgYCwgYnV0IGl0IGlzIGFjY2VwdGVkIGJ5IGBgJWFgYCAoZXF1aXZhbGVudCBvZgorYGByZXByKG9iaikuZW5jb2RlKCdhc2NpaScsICdiYWNrc2xhc2hyZXBsYWNlJylgYCk6OgorCisgICAgPj4+IGInSGVsbG8gJWIhJyAlICdXb3JsZCcKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgIFR5cGVFcnJvcjogJWIgcmVxdWlyZXMgYnl0ZXMsIG9yIGFuIG9iamVjdCB0aGF0IGltcGxlbWVudHMgX19ieXRlc19fLCBub3QgJ3N0cicKKworICAgID4+PiBiJ3ByaWNlOiAlYScgJSAnMTDigqwnCisgICAgYiJwcmljZTogJzEwXFx1MjBhYyciCisKK05vdGUgdGhhdCBgYCVzYGAgYW5kIGBgJXJgYCBjb252ZXJzaW9uIHR5cGVzLCBhbHRob3VnaCBzdXBwb3J0ZWQsIHNob3VsZAorb25seSBiZSB1c2VkIGluIGNvZGViYXNlcyB0aGF0IG5lZWQgY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAyLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDYxYCAtLSBBZGRpbmcgJSBmb3JtYXR0aW5nIHRvIGJ5dGVzIGFuZCBieXRlYXJyYXkKKyAgICAgIFBFUCB3cml0dGVuIGJ5IEV0aGFuIEZ1cm1hbjsgaW1wbGVtZW50ZWQgYnkgTmVpbCBTY2hlbWVuYXVlciBhbmQKKyAgICAgIEV0aGFuIEZ1cm1hbi4KKworCisuLiBfd2hhdHNuZXctcGVwLTQ4NDoKKworUEVQIDQ4NCAtIFR5cGUgSGludHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Z1bmN0aW9uIGFubm90YXRpb24gc3ludGF4IGhhcyBiZWVuIGEgUHl0aG9uIGZlYXR1cmUgc2luY2UgdmVyc2lvbiAzLjAKKyg6cGVwOmAzMTA3YCksIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBhbm5vdGF0aW9ucyBoYXMgYmVlbiBsZWZ0IHVuZGVmaW5lZC4KKworRXhwZXJpZW5jZSBoYXMgc2hvd24gdGhhdCB0aGUgbWFqb3JpdHkgb2YgZnVuY3Rpb24gYW5ub3RhdGlvbgordXNlcyB3ZXJlIHRvIHByb3ZpZGUgdHlwZSBoaW50cyB0byBmdW5jdGlvbiBwYXJhbWV0ZXJzIGFuZCByZXR1cm4gdmFsdWVzLiAgSXQKK2JlY2FtZSBldmlkZW50IHRoYXQgaXQgd291bGQgYmUgYmVuZWZpY2lhbCBmb3IgUHl0aG9uIHVzZXJzLCBpZiB0aGUKK3N0YW5kYXJkIGxpYnJhcnkgaW5jbHVkZWQgdGhlIGJhc2UgZGVmaW5pdGlvbnMgYW5kIHRvb2xzIGZvciB0eXBlIGFubm90YXRpb25zLgorCis6cGVwOmA0ODRgIGludHJvZHVjZXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbCBhcGk+YCB0bworcHJvdmlkZSB0aGVzZSBzdGFuZGFyZCBkZWZpbml0aW9ucyBhbmQgdG9vbHMsIGFsb25nIHdpdGggc29tZSBjb252ZW50aW9ucworZm9yIHNpdHVhdGlvbnMgd2hlcmUgYW5ub3RhdGlvbnMgYXJlIG5vdCBhdmFpbGFibGUuCisKK0ZvciBleGFtcGxlLCBoZXJlIGlzIGEgc2ltcGxlIGZ1bmN0aW9uIHdob3NlIGFyZ3VtZW50IGFuZCByZXR1cm4gdHlwZQorYXJlIGRlY2xhcmVkIGluIHRoZSBhbm5vdGF0aW9uczo6CisKKyAgICBkZWYgZ3JlZXRpbmcobmFtZTogc3RyKSAtPiBzdHI6CisgICAgICAgIHJldHVybiAnSGVsbG8gJyArIG5hbWUKKworV2hpbGUgdGhlc2UgYW5ub3RhdGlvbnMgYXJlIGF2YWlsYWJsZSBhdCBydW50aW1lIHRocm91Z2ggdGhlIHVzdWFsCis6YXR0cjpgX19hbm5vdGF0aW9uc19fYCBhdHRyaWJ1dGUsICpubyBhdXRvbWF0aWMgdHlwZSBjaGVja2luZyBoYXBwZW5zIGF0CitydW50aW1lKi4gIEluc3RlYWQsIGl0IGlzIGFzc3VtZWQgdGhhdCBhIHNlcGFyYXRlIG9mZi1saW5lIHR5cGUgY2hlY2tlcgorKGUuZy4gYG15cHkgPGh0dHA6Ly9teXB5LWxhbmcub3JnPmBfKSB3aWxsIGJlIHVzZWQgZm9yIG9uLWRlbWFuZAorc291cmNlIGNvZGUgYW5hbHlzaXMuCisKK1RoZSB0eXBlIHN5c3RlbSBzdXBwb3J0cyB1bmlvbnMsIGdlbmVyaWMgdHlwZXMsIGFuZCBhIHNwZWNpYWwgdHlwZQorbmFtZWQgOmNsYXNzOmB+dHlwaW5nLkFueWAgd2hpY2ggaXMgY29uc2lzdGVudCB3aXRoIChpLmUuIGFzc2lnbmFibGUgdG8KK2FuZCBmcm9tKSBhbGwgdHlwZXMuCisKKy4uIHNlZWFsc286OgorCisgICAqIDptb2Q6YHR5cGluZ2AgbW9kdWxlIGRvY3VtZW50YXRpb24KKyAgICogOnBlcDpgNDg0YCAtLSBUeXBlIEhpbnRzCisgICAgICAgIFBFUCB3cml0dGVuIGJ5IEd1aWRvIHZhbiBSb3NzdW0sIEp1a2thIExlaHRvc2FsbywgYW5kIMWBdWthc3ogTGFuZ2E7CisgICAgICAgIGltcGxlbWVudGVkIGJ5IEd1aWRvIHZhbiBSb3NzdW0uCisgICAqIDpwZXA6YDQ4M2AgLS0gVGhlIFRoZW9yeSBvZiBUeXBlIEhpbnRzCisgICAgICAgIFBFUCB3cml0dGVuIGJ5IEd1aWRvIHZhbiBSb3NzdW0KKworCisuLiBfd2hhdHNuZXctcGVwLTQ3MToKKworUEVQIDQ3MSAtIG9zLnNjYW5kaXIoKSBmdW5jdGlvbiAtLSBhIGJldHRlciBhbmQgZmFzdGVyIGRpcmVjdG9yeSBpdGVyYXRvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA0NzFgIGFkZHMgYSBuZXcgZGlyZWN0b3J5IGl0ZXJhdGlvbiBmdW5jdGlvbiwgOmZ1bmM6YG9zLnNjYW5kaXJgLAordG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkuICBBZGRpdGlvbmFsbHksIDpmdW5jOmBvcy53YWxrYCBpcyBub3cKK2ltcGxlbWVudGVkIHVzaW5nIGBgc2NhbmRpcmBgLCB3aGljaCBtYWtlcyBpdCAzIHRvIDUgdGltZXMgZmFzdGVyCitvbiBQT1NJWCBzeXN0ZW1zIGFuZCA3IHRvIDIwIHRpbWVzIGZhc3RlciBvbiBXaW5kb3dzIHN5c3RlbXMuICBUaGlzIGlzCitsYXJnZWx5IGFjaGlldmVkIGJ5IGdyZWF0bHkgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBjYWxscyB0byA6ZnVuYzpgb3Muc3RhdGAKK3JlcXVpcmVkIHRvIHdhbGsgYSBkaXJlY3RvcnkgdHJlZS4KKworQWRkaXRpb25hbGx5LCBgYHNjYW5kaXJgYCByZXR1cm5zIGFuIGl0ZXJhdG9yLCBhcyBvcHBvc2VkIHRvIHJldHVybmluZworYSBsaXN0IG9mIGZpbGUgbmFtZXMsIHdoaWNoIGltcHJvdmVzIG1lbW9yeSBlZmZpY2llbmN5IHdoZW4gaXRlcmF0aW5nCitvdmVyIHZlcnkgbGFyZ2UgZGlyZWN0b3JpZXMuCisKK1RoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBhIHNpbXBsZSB1c2Ugb2YgOmZ1bmM6YG9zLnNjYW5kaXJgIHRvIGRpc3BsYXkgYWxsCit0aGUgZmlsZXMgKGV4Y2x1ZGluZyBkaXJlY3RvcmllcykgaW4gdGhlIGdpdmVuICpwYXRoKiB0aGF0IGRvbid0IHN0YXJ0IHdpdGgKK2BgJy4nYGAuIFRoZSA6bWV0aDpgZW50cnkuaXNfZmlsZSgpIDxvcy5EaXJFbnRyeS5pc19maWxlPmAgY2FsbCB3aWxsIGdlbmVyYWxseQorbm90IG1ha2UgYW4gYWRkaXRpb25hbCBzeXN0ZW0gY2FsbDo6CisKKyAgICBmb3IgZW50cnkgaW4gb3Muc2NhbmRpcihwYXRoKToKKyAgICAgICAgaWYgbm90IGVudHJ5Lm5hbWUuc3RhcnRzd2l0aCgnLicpIGFuZCBlbnRyeS5pc19maWxlKCk6CisgICAgICAgICAgICBwcmludChlbnRyeS5uYW1lKQorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDcxYCAtLSBvcy5zY2FuZGlyKCkgZnVuY3Rpb24gLS0gYSBiZXR0ZXIgYW5kIGZhc3RlciBkaXJlY3RvcnkgaXRlcmF0b3IKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBCZW4gSG95dCB3aXRoIHRoZSBoZWxwIG9mIFZpY3RvciBTdGlubmVyLgorCisKKy4uIF93aGF0c25ldy1wZXAtNDc1OgorCitQRVAgNDc1OiBSZXRyeSBzeXN0ZW0gY2FsbHMgZmFpbGluZyB3aXRoIEVJTlRSCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FuIDpweTpkYXRhOmBlcnJuby5FSU5UUmAgZXJyb3IgY29kZSBpcyByZXR1cm5lZCB3aGVuZXZlciBhIHN5c3RlbSBjYWxsLCB0aGF0CitpcyB3YWl0aW5nIGZvciBJL08sIGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLiAgUHJldmlvdXNseSwgUHl0aG9uIHdvdWxkCityYWlzZSA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBpbiBzdWNoIGNhc2VzLiAgVGhpcyBtZWFudCB0aGF0LCB3aGVuIHdyaXRpbmcgYQorUHl0aG9uIGFwcGxpY2F0aW9uLCB0aGUgZGV2ZWxvcGVyIGhhZCB0d28gY2hvaWNlczoKKworIy4gSWdub3JlIHRoZSBgYEludGVycnVwdGVkRXJyb3JgYC4KKyMuIEhhbmRsZSB0aGUgYGBJbnRlcnJ1cHRlZEVycm9yYGAgYW5kIGF0dGVtcHQgdG8gcmVzdGFydCB0aGUgaW50ZXJydXB0ZWQKKyAgIHN5c3RlbSBjYWxsIGF0IGV2ZXJ5IGNhbGwgc2l0ZS4KKworVGhlIGZpcnN0IG9wdGlvbiBtYWtlcyBhbiBhcHBsaWNhdGlvbiBmYWlsIGludGVybWl0dGVudGx5LgorVGhlIHNlY29uZCBvcHRpb24gYWRkcyBhIGxhcmdlIGFtb3VudCBvZiBib2lsZXJwbGF0ZSB0aGF0IG1ha2VzIHRoZQorY29kZSBuZWFybHkgdW5yZWFkYWJsZS4gIENvbXBhcmU6OgorCisgICAgcHJpbnQoIkhlbGxvIFdvcmxkIikKKworYW5kOjoKKworICAgIHdoaWxlIFRydWU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHByaW50KCJIZWxsbyBXb3JsZCIpCisgICAgICAgICAgICBicmVhaworICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKzpwZXA6YDQ3NWAgaW1wbGVtZW50cyBhdXRvbWF0aWMgcmV0cnkgb2Ygc3lzdGVtIGNhbGxzIG9uCitgYEVJTlRSYGAuICBUaGlzIHJlbW92ZXMgdGhlIGJ1cmRlbiBvZiBkZWFsaW5nIHdpdGggYGBFSU5UUmBgCitvciA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBpbiB1c2VyIGNvZGUgaW4gbW9zdCBzaXR1YXRpb25zIGFuZCBtYWtlcworUHl0aG9uIHByb2dyYW1zLCBpbmNsdWRpbmcgdGhlIHN0YW5kYXJkIGxpYnJhcnksIG1vcmUgcm9idXN0LiAgTm90ZSB0aGF0Cit0aGUgc3lzdGVtIGNhbGwgaXMgb25seSByZXRyaWVkIGlmIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZSBhbgorZXhjZXB0aW9uLgorCitCZWxvdyBpcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHdoaWNoIGFyZSBub3cgcmV0cmllZCB3aGVuIGludGVycnVwdGVkCitieSBhIHNpZ25hbDoKKworKiA6ZnVuYzpgb3BlbmAgYW5kIDpmdW5jOmBpby5vcGVuYDsKKworKiBmdW5jdGlvbnMgb2YgdGhlIDptb2Q6YGZhdWx0aGFuZGxlcmAgbW9kdWxlOworCisqIDptb2Q6YG9zYCBmdW5jdGlvbnM6IDpmdW5jOmB+b3MuZmNoZGlyYCwgOmZ1bmM6YH5vcy5mY2htb2RgLAorICA6ZnVuYzpgfm9zLmZjaG93bmAsIDpmdW5jOmB+b3MuZmRhdGFzeW5jYCwgOmZ1bmM6YH5vcy5mc3RhdGAsCisgIDpmdW5jOmB+b3MuZnN0YXR2ZnNgLCA6ZnVuYzpgfm9zLmZzeW5jYCwgOmZ1bmM6YH5vcy5mdHJ1bmNhdGVgLAorICA6ZnVuYzpgfm9zLm1rZmlmb2AsIDpmdW5jOmB+b3MubWtub2RgLCA6ZnVuYzpgfm9zLm9wZW5gLAorICA6ZnVuYzpgfm9zLnBvc2l4X2ZhZHZpc2VgLCA6ZnVuYzpgfm9zLnBvc2l4X2ZhbGxvY2F0ZWAsIDpmdW5jOmB+b3MucHJlYWRgLAorICA6ZnVuYzpgfm9zLnB3cml0ZWAsIDpmdW5jOmB+b3MucmVhZGAsIDpmdW5jOmB+b3MucmVhZHZgLCA6ZnVuYzpgfm9zLnNlbmRmaWxlYCwKKyAgOmZ1bmM6YH5vcy53YWl0M2AsIDpmdW5jOmB+b3Mud2FpdDRgLCA6ZnVuYzpgfm9zLndhaXRgLAorICA6ZnVuYzpgfm9zLndhaXRpZGAsIDpmdW5jOmB+b3Mud2FpdHBpZGAsIDpmdW5jOmB+b3Mud3JpdGVgLAorICA6ZnVuYzpgfm9zLndyaXRldmA7CisKKyogc3BlY2lhbCBjYXNlczogOmZ1bmM6YG9zLmNsb3NlYCBhbmQgOmZ1bmM6YG9zLmR1cDJgIG5vdyBpZ25vcmUKKyAgOnB5OmRhdGE6YH5lcnJuby5FSU5UUmAgZXJyb3JzOyB0aGUgc3lzY2FsbCBpcyBub3QgcmV0cmllZCAoc2VlIHRoZSBQRVAKKyAgZm9yIHRoZSByYXRpb25hbGUpOworCisqIDptb2Q6YHNlbGVjdGAgZnVuY3Rpb25zOiA6ZnVuYzpgZGV2cG9sbC5wb2xsKCkgPHNlbGVjdC5kZXZwb2xsLnBvbGw+YCwKKyAgOmZ1bmM6YGVwb2xsLnBvbGwoKSA8c2VsZWN0LmVwb2xsLnBvbGw+YCwKKyAgOmZ1bmM6YGtxdWV1ZS5jb250cm9sKCkgPHNlbGVjdC5rcXVldWUuY29udHJvbD5gLAorICA6ZnVuYzpgcG9sbC5wb2xsKCkgPHNlbGVjdC5wb2xsLnBvbGw+YCwgOmZ1bmM6YH5zZWxlY3Quc2VsZWN0YDsKKworKiBtZXRob2RzIG9mIHRoZSA6Y2xhc3M6YH5zb2NrZXQuc29ja2V0YCBjbGFzczogOm1ldGg6YH5zb2NrZXQuc29ja2V0LmFjY2VwdGAsCisgIDptZXRoOmB+c29ja2V0LnNvY2tldC5jb25uZWN0YCAoZXhjZXB0IGZvciBub24tYmxvY2tpbmcgc29ja2V0cyksCisgIDptZXRoOmB+c29ja2V0LnNvY2tldC5yZWN2YCwgOm1ldGg6YH5zb2NrZXQuc29ja2V0LnJlY3Zmcm9tYCwKKyAgOm1ldGg6YH5zb2NrZXQuc29ja2V0LnJlY3Ztc2dgLCA6bWV0aDpgfnNvY2tldC5zb2NrZXQuc2VuZGAsCisgIDptZXRoOmB+c29ja2V0LnNvY2tldC5zZW5kYWxsYCwgOm1ldGg6YH5zb2NrZXQuc29ja2V0LnNlbmRtc2dgLAorICA6bWV0aDpgfnNvY2tldC5zb2NrZXQuc2VuZHRvYDsKKworKiA6ZnVuYzpgc2lnbmFsLnNpZ3RpbWVkd2FpdGAgYW5kIDpmdW5jOmBzaWduYWwuc2lnd2FpdGluZm9gOworCisqIDpmdW5jOmB0aW1lLnNsZWVwYC4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQ3NWAgLS0gUmV0cnkgc3lzdGVtIGNhbGxzIGZhaWxpbmcgd2l0aCBFSU5UUgorICAgICAgUEVQIGFuZCBpbXBsZW1lbnRhdGlvbiB3cml0dGVuIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaSBhbmQKKyAgICAgIFZpY3RvciBTdGlubmVyLCB3aXRoIHRoZSBoZWxwIG9mIEFudG9pbmUgUGl0cm91ICh0aGUgRnJlbmNoIGNvbm5lY3Rpb24pLgorCisKKy4uIF93aGF0c25ldy1wZXAtNDc5OgorCitQRVAgNDc5OiBDaGFuZ2UgU3RvcEl0ZXJhdGlvbiBoYW5kbGluZyBpbnNpZGUgZ2VuZXJhdG9ycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGludGVyYWN0aW9uIG9mIGdlbmVyYXRvcnMgYW5kIDpleGM6YFN0b3BJdGVyYXRpb25gIGluIFB5dGhvbiAzLjQgYW5kCitlYXJsaWVyIHdhcyBzb21ldGltZXMgc3VycHJpc2luZywgYW5kIGNvdWxkIGNvbmNlYWwgb2JzY3VyZSBidWdzLiAgUHJldmlvdXNseSwKK2BgU3RvcEl0ZXJhdGlvbmBgIHJhaXNlZCBhY2NpZGVudGFsbHkgaW5zaWRlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIHdhcworaW50ZXJwcmV0ZWQgYXMgdGhlIGVuZCBvZiB0aGUgaXRlcmF0aW9uIGJ5IHRoZSBsb29wIGNvbnN0cnVjdCBkcml2aW5nIHRoZQorZ2VuZXJhdG9yLgorCis6cGVwOmA0NzlgIGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIGdlbmVyYXRvcnM6IHdoZW4gYSBgYFN0b3BJdGVyYXRpb25gYAorZXhjZXB0aW9uIGlzIHJhaXNlZCBpbnNpZGUgYSBnZW5lcmF0b3IsIGl0IGlzIHJlcGxhY2VkIHdpdGggYQorOmV4YzpgUnVudGltZUVycm9yYCBiZWZvcmUgaXQgZXhpdHMgdGhlIGdlbmVyYXRvciBmcmFtZS4gIFRoZSBtYWluIGdvYWwgb2YKK3RoaXMgY2hhbmdlIGlzIHRvIGVhc2UgZGVidWdnaW5nIGluIHRoZSBzaXR1YXRpb24gd2hlcmUgYW4gdW5ndWFyZGVkCis6ZnVuYzpgbmV4dGAgY2FsbCByYWlzZXMgYGBTdG9wSXRlcmF0aW9uYGAgYW5kIGNhdXNlcyB0aGUgaXRlcmF0aW9uIGNvbnRyb2xsZWQKK2J5IHRoZSBnZW5lcmF0b3IgdG8gdGVybWluYXRlIHNpbGVudGx5LiBUaGlzIGlzIHBhcnRpY3VsYXJseSBwZXJuaWNpb3VzIGluCitjb21iaW5hdGlvbiB3aXRoIHRoZSBgYHlpZWxkIGZyb21gYCBjb25zdHJ1Y3QuCisKK1RoaXMgaXMgYSBiYWNrd2FyZHMgaW5jb21wYXRpYmxlIGNoYW5nZSwgc28gdG8gZW5hYmxlIHRoZSBuZXcgYmVoYXZpb3IsCithIDp0ZXJtOmBfX2Z1dHVyZV9fYCBpbXBvcnQgaXMgbmVjZXNzYXJ5OjoKKworICAgID4+PiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGdlbmVyYXRvcl9zdG9wCisKKyAgICA+Pj4gZGVmIGdlbigpOgorICAgIC4uLiAgICAgbmV4dChpdGVyKFtdKSkKKyAgICAuLi4gICAgIHlpZWxkCisgICAgLi4uCisgICAgPj4+IG5leHQoZ2VuKCkpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMiwgaW4gZ2VuCisgICAgU3RvcEl0ZXJhdGlvbgorCisgICAgVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSBvZiB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjoKKworICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgUnVudGltZUVycm9yOiBnZW5lcmF0b3IgcmFpc2VkIFN0b3BJdGVyYXRpb24KKworV2l0aG91dCBhIGBgX19mdXR1cmVfX2BgIGltcG9ydCwgYSA6ZXhjOmBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nYCB3aWxsIGJlCityYWlzZWQgd2hlbmV2ZXIgYSBgYFN0b3BJdGVyYXRpb25gYCBleGNlcHRpb24gaXMgcmFpc2VkIGluc2lkZSBhIGdlbmVyYXRvci4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQ3OWAgLS0gQ2hhbmdlIFN0b3BJdGVyYXRpb24gaGFuZGxpbmcgaW5zaWRlIGdlbmVyYXRvcnMKKyAgICAgIFBFUCB3cml0dGVuIGJ5IENocmlzIEFuZ2VsaWNvIGFuZCBHdWlkbyB2YW4gUm9zc3VtLiBJbXBsZW1lbnRlZCBieQorICAgICAgQ2hyaXMgQW5nZWxpY28sIFl1cnkgU2VsaXZhbm92IGFuZCBOaWNrIENvZ2hsYW4uCisKKworLi4gX3doYXRzbmV3LXBlcC00ODU6CisKK1BFUCA0ODU6IEEgZnVuY3Rpb24gZm9yIHRlc3RpbmcgYXBwcm94aW1hdGUgZXF1YWxpdHkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOnBlcDpgNDg1YCBhZGRzIHRoZSA6ZnVuYzpgbWF0aC5pc2Nsb3NlYCBhbmQgOmZ1bmM6YGNtYXRoLmlzY2xvc2VgCitmdW5jdGlvbnMgd2hpY2ggdGVsbCB3aGV0aGVyIHR3byB2YWx1ZXMgYXJlIGFwcHJveGltYXRlbHkgZXF1YWwgb3IKKyJjbG9zZSIgdG8gZWFjaCBvdGhlci4gIFdoZXRoZXIgb3Igbm90IHR3byB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQKK2Nsb3NlIGlzIGRldGVybWluZWQgYWNjb3JkaW5nIHRvIGdpdmVuIGFic29sdXRlIGFuZCByZWxhdGl2ZSB0b2xlcmFuY2VzLgorUmVsYXRpdmUgdG9sZXJhbmNlIGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQgZGlmZmVyZW5jZSBiZXR3ZWVuIGBgaXNjbG9zZWBgCithcmd1bWVudHMsIHJlbGF0aXZlIHRvIHRoZSBsYXJnZXIgYWJzb2x1dGUgdmFsdWU6OgorCisgICAgPj4+IGltcG9ydCBtYXRoCisgICAgPj4+IGEgPSA1LjAKKyAgICA+Pj4gYiA9IDQuOTk5OTgKKyAgICA+Pj4gbWF0aC5pc2Nsb3NlKGEsIGIsIHJlbF90b2w9MWUtNSkKKyAgICBUcnVlCisgICAgPj4+IG1hdGguaXNjbG9zZShhLCBiLCByZWxfdG9sPTFlLTYpCisgICAgRmFsc2UKKworSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjb21wYXJlIHR3byB2YWx1ZXMgdXNpbmcgYWJzb2x1dGUgdG9sZXJhbmNlLCB3aGljaAorbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSB2YWx1ZTo6CisKKyAgICA+Pj4gaW1wb3J0IG1hdGgKKyAgICA+Pj4gYSA9IDUuMAorICAgID4+PiBiID0gNC45OTk5OAorICAgID4+PiBtYXRoLmlzY2xvc2UoYSwgYiwgYWJzX3RvbD0wLjAwMDAzKQorICAgIFRydWUKKyAgICA+Pj4gbWF0aC5pc2Nsb3NlKGEsIGIsIGFic190b2w9MC4wMDAwMSkKKyAgICBGYWxzZQorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDg1YCAtLSBBIGZ1bmN0aW9uIGZvciB0ZXN0aW5nIGFwcHJveGltYXRlIGVxdWFsaXR5CisgICAgICBQRVAgd3JpdHRlbiBieSBDaHJpc3RvcGhlciBCYXJrZXI7IGltcGxlbWVudGVkIGJ5IENocmlzIEJhcmtlciBhbmQKKyAgICAgIFRhbCBFaW5hdC4KKworCisuLiBfd2hhdHNuZXctcGVwLTQ4NjoKKworUEVQIDQ4NjogTWFrZSB0aGUgUHl0aG9uIExhdW5jaGVyIGF3YXJlIG9mIHZpcnR1YWwgZW52aXJvbm1lbnRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOnBlcDpgNDg2YCBtYWtlcyB0aGUgV2luZG93cyBsYXVuY2hlciAoc2VlIDpwZXA6YDM5N2ApIGF3YXJlIG9mIGFuIGFjdGl2ZQordmlydHVhbCBlbnZpcm9ubWVudC4gV2hlbiB0aGUgZGVmYXVsdCBpbnRlcnByZXRlciB3b3VsZCBiZSB1c2VkIGFuZCB0aGUKK2BgVklSVFVBTF9FTlZgYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQsIHRoZSBpbnRlcnByZXRlciBpbiB0aGUgdmlydHVhbAorZW52aXJvbm1lbnQgd2lsbCBiZSB1c2VkLgorCisuLiBzZWVhbHNvOjoKKworICAgIDpwZXA6YDQ4NmAgLS0gTWFrZSB0aGUgUHl0aG9uIExhdW5jaGVyIGF3YXJlIG9mIHZpcnR1YWwgZW52aXJvbm1lbnRzCisgICAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBQYXVsIE1vb3JlLgorCisKKy4uIF93aGF0c25ldy1wZXAtNDg4OgorCitQRVAgNDg4OiBFbGltaW5hdGlvbiBvZiBQWU8gZmlsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA0ODhgIGRvZXMgYXdheSB3aXRoIHRoZSBjb25jZXB0IG9mIGBgLnB5b2BgIGZpbGVzLiBUaGlzIG1lYW5zIHRoYXQKK2BgLnB5Y2BgIGZpbGVzIHJlcHJlc2VudCBib3RoIHVub3B0aW1pemVkIGFuZCBvcHRpbWl6ZWQgYnl0ZWNvZGUuIFRvIHByZXZlbnQgdGhlCituZWVkIHRvIGNvbnN0YW50bHkgcmVnZW5lcmF0ZSBieXRlY29kZSBmaWxlcywgYGAucHljYGAgZmlsZXMgbm93IGhhdmUgYW4KK29wdGlvbmFsIGBgb3B0LWBgIHRhZyBpbiB0aGVpciBuYW1lIHdoZW4gdGhlIGJ5dGVjb2RlIGlzIG9wdGltaXplZC4gVGhpcyBoYXMgdGhlCitzaWRlLWVmZmVjdCBvZiBubyBtb3JlIGJ5dGVjb2RlIGZpbGUgbmFtZSBjbGFzaGVzIHdoZW4gcnVubmluZyB1bmRlciBlaXRoZXIKKzpvcHRpb246YC1PYCBvciA6b3B0aW9uOmAtT09gLiBDb25zZXF1ZW50bHksIGJ5dGVjb2RlIGZpbGVzIGdlbmVyYXRlZCBmcm9tCis6b3B0aW9uOmAtT2AsIGFuZCA6b3B0aW9uOmAtT09gIG1heSBub3cgZXhpc3Qgc2ltdWx0YW5lb3VzbHkuCis6ZnVuYzpgaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2VgIGhhcyBhbiB1cGRhdGVkIEFQSSB0byBoZWxwIHdpdGgKK3RoaXMgY2hhbmdlLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDg4YCAtLSBFbGltaW5hdGlvbiBvZiBQWU8gZmlsZXMKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBCcmV0dCBDYW5ub24uCisKKworLi4gX3doYXRzbmV3LXBlcC00ODk6CisKK1BFUCA0ODk6IE11bHRpLXBoYXNlIGV4dGVuc2lvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOnBlcDpgNDg5YCB1cGRhdGVzIGV4dGVuc2lvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24gdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlCit0d28gc3RlcCBtb2R1bGUgbG9hZGluZyBtZWNoYW5pc20gaW50cm9kdWNlZCBieSA6cGVwOmA0NTFgIGluIFB5dGhvbiAzLjQuCisKK1RoaXMgY2hhbmdlIGJyaW5ncyB0aGUgaW1wb3J0IHNlbWFudGljcyBvZiBleHRlbnNpb24gbW9kdWxlcyB0aGF0IG9wdC1pbiB0bwordXNpbmcgdGhlIG5ldyBtZWNoYW5pc20gbXVjaCBjbG9zZXIgdG8gdGhvc2Ugb2YgUHl0aG9uIHNvdXJjZSBhbmQgYnl0ZWNvZGUKK21vZHVsZXMsIGluY2x1ZGluZyB0aGUgYWJpbGl0eSB0byB1c2UgYW55IHZhbGlkIGlkZW50aWZpZXIgYXMgYSBtb2R1bGUgbmFtZSwKK3JhdGhlciB0aGFuIGJlaW5nIHJlc3RyaWN0ZWQgdG8gQVNDSUkuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0ODlgIC0tIE11bHRpLXBoYXNlIGV4dGVuc2lvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24KKyAgICAgIFBFUCB3cml0dGVuIGJ5IFBldHIgVmlrdG9yaW4sIFN0ZWZhbiBCZWhuZWwsIGFuZCBOaWNrIENvZ2hsYW47CisgICAgICBpbXBsZW1lbnRlZCBieSBQZXRyIFZpa3RvcmluLgorCisKK090aGVyIExhbmd1YWdlIENoYW5nZXMKKz09PT09PT09PT09PT09PT09PT09PT0KKworU29tZSBzbWFsbGVyIGNoYW5nZXMgbWFkZSB0byB0aGUgY29yZSBQeXRob24gbGFuZ3VhZ2UgYXJlOgorCisqIEFkZGVkIHRoZSBgYCJuYW1lcmVwbGFjZSJgYCBlcnJvciBoYW5kbGVycy4gIFRoZSBgYCJiYWNrc2xhc2hyZXBsYWNlImBgCisgIGVycm9yIGhhbmRsZXJzIG5vdyB3b3JrIHdpdGggZGVjb2RpbmcgYW5kIHRyYW5zbGF0aW5nLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDE5Njc2YCBhbmQgOmlzc3VlOmAyMjI4NmAuKQorCisqIFRoZSA6b3B0aW9uOmAtYmAgb3B0aW9uIG5vdyBhZmZlY3RzIGNvbXBhcmlzb25zIG9mIDpjbGFzczpgYnl0ZXNgIHdpdGgKKyAgOmNsYXNzOmBpbnRgLiAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMzY4MWAuKQorCisqIE5ldyBLYXpha2ggYGBrejEwNDhgYCBhbmQgVGFqaWsgYGBrb2k4X3RgYCA6cmVmOmBjb2RlY3MgPHN0YW5kYXJkLWVuY29kaW5ncz5gLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIyNjgyYCBhbmQgOmlzc3VlOmAyMjY4MWAuKQorCisqIFByb3BlcnR5IGRvY3N0cmluZ3MgYXJlIG5vdyB3cml0YWJsZS4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IKKyAgOmZ1bmM6YGNvbGxlY3Rpb25zLm5hbWVkdHVwbGVgIGRvY3N0cmluZ3MuCisgIChDb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMjQwNjRgLikKKworKiBDaXJjdWxhciBpbXBvcnRzIGludm9sdmluZyByZWxhdGl2ZSBpbXBvcnRzIGFyZSBub3cgc3VwcG9ydGVkLgorICAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGFuZCBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDE3NjM2YC4pCisKKworTmV3IE1vZHVsZXMKKz09PT09PT09PT09CisKK3R5cGluZworLS0tLS0tCisKK1RoZSBuZXcgOm1vZDpgdHlwaW5nYCA6dGVybTpgcHJvdmlzaW9uYWwgPHByb3Zpc2lvbmFsIGFwaT5gIG1vZHVsZQorcHJvdmlkZXMgc3RhbmRhcmQgZGVmaW5pdGlvbnMgYW5kIHRvb2xzIGZvciBmdW5jdGlvbiB0eXBlIGFubm90YXRpb25zLgorU2VlIDpyZWY6YFR5cGUgSGludHMgPHdoYXRzbmV3LXBlcC00ODQ+YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworLi4gX3doYXRzbmV3LXppcGFwcDoKKworemlwYXBwCistLS0tLS0KKworVGhlIG5ldyA6bW9kOmB6aXBhcHBgIG1vZHVsZSAoc3BlY2lmaWVkIGluIDpwZXA6YDQ0MWApIHByb3ZpZGVzIGFuIEFQSSBhbmQKK2NvbW1hbmQgbGluZSB0b29sIGZvciBjcmVhdGluZyBleGVjdXRhYmxlIFB5dGhvbiBaaXAgQXBwbGljYXRpb25zLCB3aGljaAord2VyZSBpbnRyb2R1Y2VkIGluIFB5dGhvbiAyLjYgaW4gOmlzc3VlOmAxNzM5NDY4YCwgYnV0IHdoaWNoIHdlcmUgbm90IHdlbGwKK3B1YmxpY2l6ZWQsIGVpdGhlciBhdCB0aGUgdGltZSBvciBzaW5jZS4KKworV2l0aCB0aGUgbmV3IG1vZHVsZSwgYnVuZGxpbmcgeW91ciBhcHBsaWNhdGlvbiBpcyBhcyBzaW1wbGUgYXMgcHV0dGluZyBhbGwKK3RoZSBmaWxlcywgaW5jbHVkaW5nIGEgYGBfX21haW5fXy5weWBgIGZpbGUsIGludG8gYSBkaXJlY3RvcnkgYGBteWFwcGBgCithbmQgcnVubmluZzo6CisKKyAgICAkIHB5dGhvbiAtbSB6aXBhcHAgbXlhcHAKKyAgICAkIHB5dGhvbiBteWFwcC5weXoKKworVGhlIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiBoYXMgYmVlbiBjb250cmlidXRlZCBieSBQYXVsIE1vb3JlIGluCis6aXNzdWU6YDIzNDkxYC4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQ0MWAgLS0gSW1wcm92aW5nIFB5dGhvbiBaSVAgQXBwbGljYXRpb24gU3VwcG9ydAorCisKK0ltcHJvdmVkIE1vZHVsZXMKKz09PT09PT09PT09PT09PT0KKworYXJncGFyc2UKKy0tLS0tLS0tCisKK1RoZSA6Y2xhc3M6YH5hcmdwYXJzZS5Bcmd1bWVudFBhcnNlcmAgY2xhc3Mgbm93IGFsbG93cyB0byBkaXNhYmxlCis6cmVmOmBhYmJyZXZpYXRlZCB1c2FnZSA8cHJlZml4LW1hdGNoaW5nPmAgb2YgbG9uZyBvcHRpb25zIGJ5IHNldHRpbmcKKzpyZWY6YGFsbG93X2FiYnJldmAgdG8gYGBGYWxzZWBgLiAgKENvbnRyaWJ1dGVkIGJ5IEpvbmF0aGFuIFBhdWdoLAorU3RldmVuIEJldGhhcmQsIHBhdWwgajMgYW5kIERhbmllbCBFcmlrc3NvbiBpbiA6aXNzdWU6YDE0OTEwYC4pCisKKworYXN5bmNpbworLS0tLS0tLQorCitTaW5jZSB0aGUgOm1vZDpgYXN5bmNpb2AgbW9kdWxlIGlzIDp0ZXJtOmBwcm92aXNpb25hbCA8cHJvdmlzaW9uYWwgYXBpPmAsCithbGwgY2hhbmdlcyBpbnRyb2R1Y2VkIGluIFB5dGhvbiAzLjUgaGF2ZSBhbHNvIGJlZW4gYmFja3BvcnRlZCB0byBQeXRob24gMy40LnguCisKK05vdGFibGUgY2hhbmdlcyBpbiB0aGUgOm1vZDpgYXN5bmNpb2AgbW9kdWxlIHNpbmNlIFB5dGhvbiAzLjQuMDoKKworKiBOZXcgZGVidWdnaW5nIEFQSXM6IDptZXRoOmBsb29wLnNldF9kZWJ1ZygpIDxhc3luY2lvLkJhc2VFdmVudExvb3Auc2V0X2RlYnVnPmAKKyAgYW5kIDptZXRoOmBsb29wLmdldF9kZWJ1ZygpIDxhc3luY2lvLkJhc2VFdmVudExvb3AuZ2V0X2RlYnVnPmAgbWV0aG9kcy4KKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyLikKKworKiBUaGUgcHJvYWN0b3IgZXZlbnQgbG9vcCBub3cgc3VwcG9ydHMgU1NMLgorICAoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgYW5kIFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjI1NjBgLikKKworKiBBIG5ldyA6bWV0aDpgbG9vcC5pc19jbG9zZWQoKSA8YXN5bmNpby5CYXNlRXZlbnRMb29wLmlzX2Nsb3NlZD5gIG1ldGhvZCB0bworICBjaGVjayBpZiB0aGUgZXZlbnQgbG9vcCBpcyBjbG9zZWQuCisgIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDIxMzI2YC4pCisKKyogQSBuZXcgOm1ldGg6YGxvb3AuY3JlYXRlX3Rhc2soKSA8YXN5bmNpby5CYXNlRXZlbnRMb29wLmNyZWF0ZV90YXNrPmAKKyAgdG8gY29udmVuaWVudGx5IGNyZWF0ZSBhbmQgc2NoZWR1bGUgYSBuZXcgOmNsYXNzOmB+YXN5bmNpby5UYXNrYAorICBmb3IgYSBjb3JvdXRpbmUuICBUaGUgYGBjcmVhdGVfdGFza2BgIG1ldGhvZCBpcyBhbHNvIHVzZWQgYnkgYWxsCisgIGFzeW5jaW8gZnVuY3Rpb25zIHRoYXQgd3JhcCBjb3JvdXRpbmVzIGludG8gdGFza3MsIHN1Y2ggYXMKKyAgOmZ1bmM6YGFzeW5jaW8ud2FpdGAsIDpmdW5jOmBhc3luY2lvLmdhdGhlcmAsIGV0Yy4KKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyLikKKworKiBBIG5ldyA6bWV0aDpgdHJhbnNwb3J0LmdldF93cml0ZV9idWZmZXJfbGltaXRzKCkgPGFzeW5jaW8uV3JpdGVUcmFuc3BvcnQuZ2V0X3dyaXRlX2J1ZmZlcl9saW1pdHM+YAorICBtZXRob2QgdG8gaW5xdWlyZSBmb3IgKmhpZ2gtKiBhbmQgKmxvdy0qIHdhdGVyIGxpbWl0cyBvZiB0aGUgZmxvdworICBjb250cm9sLgorICAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIuKQorCisqIFRoZSA6ZnVuYzpgfmFzeW5jaW8uYXN5bmNgIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YKKyAgOmZ1bmM6YH5hc3luY2lvLmVuc3VyZV9mdXR1cmVgLgorICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YuKQorCisqIE5ldyA6bWV0aDpgbG9vcC5zZXRfdGFza19mYWN0b3J5KCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5zZXRfdGFza19mYWN0b3J5PmAKKyAgYW5kIDptZXRoOmBsb29wLnNldF90YXNrX2ZhY3RvcnkoKSA8YXN5bmNpby5CYXNlRXZlbnRMb29wLmdldF90YXNrX2ZhY3Rvcnk+YAorICBtZXRob2RzIHRvIGN1c3RvbWl6ZSB0aGUgdGFzayBmYWN0b3J5IHRoYXQKKyAgOm1ldGg6YGxvb3AuY3JlYXRlX3Rhc2soKSA8YXN5bmNpby5CYXNlRXZlbnRMb29wLmNyZWF0ZV90YXNrPmAgbWV0aG9kIHVzZXMuCisgIChDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdi4pCisKKyogTmV3IDptZXRoOmBRdWV1ZS5qb2luKCkgPGFzeW5jaW8uUXVldWUuam9pbj5gIGFuZAorICA6bWV0aDpgUXVldWUudGFza19kb25lKCkgPGFzeW5jaW8uUXVldWUudGFza19kb25lPmAgcXVldWUgbWV0aG9kcy4KKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyLikKKworKiBUaGUgYGBKb2luYWJsZVF1ZXVlYGAgY2xhc3Mgd2FzIHJlbW92ZWQsIGluIGZhdm9yIG9mIHRoZQorICA6Y2xhc3M6YGFzeW5jaW8uUXVldWVgIGNsYXNzLgorICAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIuKQorCitVcGRhdGVzIGluIDMuNS4xOgorCisqIFRoZSA6ZnVuYzpgfmFzeW5jaW8uZW5zdXJlX2Z1dHVyZWAgZnVuY3Rpb24gYW5kIGFsbCBmdW5jdGlvbnMgdGhhdAorICB1c2UgaXQsIHN1Y2ggYXMgOm1ldGg6YGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5ydW5fdW50aWxfY29tcGxldGU+YCwKKyAgbm93IGFjY2VwdCBhbGwga2luZHMgb2YgOnRlcm06YGF3YWl0YWJsZSBvYmplY3RzIDxhd2FpdGFibGU+YC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LikKKworKiBOZXcgOmZ1bmM6YH5hc3luY2lvLnJ1bl9jb3JvdXRpbmVfdGhyZWFkc2FmZWAgZnVuY3Rpb24gdG8gc3VibWl0CisgIGNvcm91dGluZXMgdG8gZXZlbnQgbG9vcHMgZnJvbSBvdGhlciB0aHJlYWRzLgorICAoQ29udHJpYnV0ZWQgYnkgVmluY2VudCBNaWNoZWwuKQorCisqIE5ldyA6bWV0aDpgVHJhbnNwb3J0LmlzX2Nsb3NpbmcoKSA8YXN5bmNpby5CYXNlVHJhbnNwb3J0LmlzX2Nsb3Npbmc+YAorICBtZXRob2QgdG8gY2hlY2sgaWYgdGhlIHRyYW5zcG9ydCBpcyBjbG9zaW5nIG9yIGNsb3NlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LikKKworKiBUaGUgOm1ldGg6YGxvb3AuY3JlYXRlX3NlcnZlcigpIDxhc3luY2lvLkJhc2VFdmVudExvb3AuY3JlYXRlX3NlcnZlcj5gCisgIG1ldGhvZCBjYW4gbm93IGFjY2VwdCBhIGxpc3Qgb2YgaG9zdHMuCisgIChDb250cmlidXRlZCBieSBZYW5uIFNpb25uZWF1LikKKworCitiejIKKy0tLQorCitUaGUgOm1ldGg6YEJaMkRlY29tcHJlc3Nvci5kZWNvbXByZXNzIDxiejIuQloyRGVjb21wcmVzc29yLmRlY29tcHJlc3M+YAorbWV0aG9kIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsICptYXhfbGVuZ3RoKiBhcmd1bWVudCB0byBsaW1pdCB0aGUgbWF4aW11bQorc2l6ZSBvZiBkZWNvbXByZXNzZWQgZGF0YS4gKENvbnRyaWJ1dGVkIGJ5IE5pa29sYXVzIFJhdGggaW4gOmlzc3VlOmAxNTk1NWAuKQorCisKK2NnaQorLS0tCisKK1RoZSA6Y2xhc3M6YH5jZ2kuRmllbGRTdG9yYWdlYCBjbGFzcyBub3cgc3VwcG9ydHMgdGhlIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgCitwcm90b2NvbC4gIChDb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMjAyODlgLikKKworCitjbWF0aAorLS0tLS0KKworQSBuZXcgZnVuY3Rpb24gOmZ1bmM6YH5jbWF0aC5pc2Nsb3NlYCBwcm92aWRlcyBhIHdheSB0byB0ZXN0IGZvciBhcHByb3hpbWF0ZQorZXF1YWxpdHkuICAoQ29udHJpYnV0ZWQgYnkgQ2hyaXMgQmFya2VyIGFuZCBUYWwgRWluYXQgaW4gOmlzc3VlOmAyNDI3MGAuKQorCisKK2NvZGUKKy0tLS0KKworVGhlIDpmdW5jOmBJbnRlcmFjdGl2ZUludGVycHJldGVyLnNob3d0cmFjZWJhY2soKSA8Y29kZS5JbnRlcmFjdGl2ZUludGVycHJldGVyLnNob3d0cmFjZWJhY2s+YAorbWV0aG9kIG5vdyBwcmludHMgdGhlIGZ1bGwgY2hhaW5lZCB0cmFjZWJhY2ssIGp1c3QgbGlrZSB0aGUgaW50ZXJhY3RpdmUKK2ludGVycHJldGVyLiAgKENvbnRyaWJ1dGVkIGJ5IENsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDE3NDQyYC4pCisKKworY29sbGVjdGlvbnMKKy0tLS0tLS0tLS0tCisKKy4uIF93aGF0c25ldy1vcmRlcmVkZGljdDoKKworVGhlIDpjbGFzczpgfmNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YCBjbGFzcyBpcyBub3cgaW1wbGVtZW50ZWQgaW4gQywgd2hpY2gKK21ha2VzIGl0IDQgdG8gMTAwIHRpbWVzIGZhc3Rlci4gIChDb250cmlidXRlZCBieSBFcmljIFNub3cgaW4gOmlzc3VlOmAxNjk5MWAuKQorCis6bWV0aDpgT3JkZXJlZERpY3QuaXRlbXMoKSA8Y29sbGVjdGlvbnMuT3JkZXJlZERpY3QuaXRlbXM+YCwKKzptZXRoOmBPcmRlcmVkRGljdC5rZXlzKCkgPGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0LmtleXM+YCwKKzptZXRoOmBPcmRlcmVkRGljdC52YWx1ZXMoKSA8Y29sbGVjdGlvbnMuT3JkZXJlZERpY3QudmFsdWVzPmAgdmlld3Mgbm93IHN1cHBvcnQKKzpmdW5jOmByZXZlcnNlZGAgaXRlcmF0aW9uLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxOTUwNWAuKQorCitUaGUgOmNsYXNzOmB+Y29sbGVjdGlvbnMuZGVxdWVgIGNsYXNzIG5vdyBkZWZpbmVzCis6bWV0aDpgfmNvbGxlY3Rpb25zLmRlcXVlLmluZGV4YCwgOm1ldGg6YH5jb2xsZWN0aW9ucy5kZXF1ZS5pbnNlcnRgLCBhbmQKKzptZXRoOmB+Y29sbGVjdGlvbnMuZGVxdWUuY29weWAsIGFuZCBzdXBwb3J0cyB0aGUgYGArYGAgYW5kIGBgKmBgIG9wZXJhdG9ycy4KK1RoaXMgYWxsb3dzIGRlcXVlcyB0byBiZSByZWNvZ25pemVkIGFzIGEgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZWAKK2FuZCBpbXByb3ZlcyB0aGVpciBzdWJzdGl0dXRhYmlsaXR5IGZvciBsaXN0cy4KKyhDb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlciBpbiA6aXNzdWU6YDIzNzA0YC4pCisKK0RvY3N0cmluZ3MgcHJvZHVjZWQgYnkgOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYCBjYW4gbm93IGJlIHVwZGF0ZWQ6OgorCisgICAgUG9pbnQgPSBuYW1lZHR1cGxlKCdQb2ludCcsIFsneCcsICd5J10pCisgICAgUG9pbnQuX19kb2NfXyArPSAnOiBDYXJ0ZXNpYW4gY29vZGluYXRlJworICAgIFBvaW50LnguX19kb2NfXyA9ICdhYnNjaXNzYScKKyAgICBQb2ludC55Ll9fZG9jX18gPSAnb3JkaW5hdGUnCisKKyhDb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMjQwNjRgLikKKworVGhlIDpjbGFzczpgfmNvbGxlY3Rpb25zLlVzZXJTdHJpbmdgIGNsYXNzIG5vdyBpbXBsZW1lbnRzIHRoZQorOm1ldGg6YF9fZ2V0bmV3YXJnc19fYCwgOm1ldGg6YF9fcm1vZF9fYCwgOm1ldGg6YH5zdHIuY2FzZWZvbGRgLAorOm1ldGg6YH5zdHIuZm9ybWF0X21hcGAsIDptZXRoOmB+c3RyLmlzcHJpbnRhYmxlYCwgYW5kIDptZXRoOmB+c3RyLm1ha2V0cmFuc2AKK21ldGhvZHMgdG8gbWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgbWV0aG9kcyBvZiA6Y2xhc3M6YHN0cmAuCisoQ29udHJpYnV0ZWQgYnkgSm9lIEpldm5payBpbiA6aXNzdWU6YDIyMTg5YC4pCisKKworY29sbGVjdGlvbnMuYWJjCistLS0tLS0tLS0tLS0tLS0KKworVGhlIDptZXRoOmBTZXF1ZW5jZS5pbmRleCgpIDxjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UuaW5kZXg+YCBtZXRob2Qgbm93CithY2NlcHRzICpzdGFydCogYW5kICpzdG9wKiBhcmd1bWVudHMgdG8gbWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgbWV0aG9kcworb2YgOmNsYXNzOmB0dXBsZWAsIDpjbGFzczpgbGlzdGAsIGV0Yy4KKyhDb250cmlidXRlZCBieSBEZXZpbiBKZWFucGllcnJlIGluIDppc3N1ZTpgMjMwODZgLikKKworQSBuZXcgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLkdlbmVyYXRvcmAgYWJzdHJhY3QgYmFzZSBjbGFzcy4gKENvbnRyaWJ1dGVkCitieSBTdGVmYW4gQmVobmVsIGluIDppc3N1ZTpgMjQwMThgLikKKworTmV3IDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5Bd2FpdGFibGVgLCA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuQ29yb3V0aW5lYCwKKzpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5Bc3luY0l0ZXJhdG9yYCwgYW5kCis6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuQXN5bmNJdGVyYWJsZWAgYWJzdHJhY3QgYmFzZSBjbGFzc2VzLgorKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGluIDppc3N1ZTpgMjQxODRgLikKKworRm9yIGVhcmxpZXIgUHl0aG9uIHZlcnNpb25zLCBhIGJhY2twb3J0IG9mIHRoZSBuZXcgQUJDcyBpcyBhdmFpbGFibGUgaW4gYW4KK2V4dGVybmFsIGBQeVBJIHBhY2thZ2UgPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvYmFja3BvcnRzX2FiYz5gXy4KKworCitjb21waWxlYWxsCistLS0tLS0tLS0tCisKK0EgbmV3IDptb2Q6YGNvbXBpbGVhbGxgIG9wdGlvbiwgOnNhbXA6YC1qIHtOfWAsIGFsbG93cyB0byBydW4gKk4qIHdvcmtlcnMKK3N1bXVsdGFuZW91c2x5IHRvIHBlcmZvcm0gcGFyYWxsZWwgYnl0ZWNvZGUgY29tcGlsYXRpb24uCitUaGUgOmZ1bmM6YH5jb21waWxlYWxsLmNvbXBpbGVfZGlyYCBmdW5jdGlvbiBoYXMgYSBjb3JyZXNwb25kaW5nIGBgd29ya2Vyc2BgCitwYXJhbWV0ZXIuICAoQ29udHJpYnV0ZWQgYnkgQ2xhdWRpdSBQb3BhIGluIDppc3N1ZTpgMTYxMDRgLikKKworQW5vdGhlciBuZXcgb3B0aW9uLCBgYC1yYGAsIGFsbG93cyB0byBjb250cm9sIHRoZSBtYXhpbXVtIHJlY3Vyc2lvbgorbGV2ZWwgZm9yIHN1YmRpcmVjdG9yaWVzLiAgKENvbnRyaWJ1dGVkIGJ5IENsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDE5NjI4YC4pCisKK1RoZSBgYC1xYGAgY29tbWFuZCBsaW5lIG9wdGlvbiBjYW4gbm93IGJlIHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZSwgaW4KK3doaWNoIGNhc2UgYWxsIG91dHB1dCwgaW5jbHVkaW5nIGVycm9ycywgd2lsbCBiZSBzdXBwcmVzc2VkLiAgVGhlIGNvcnJlc3BvbmRpbmcKK2BgcXVpZXRgYCBwYXJhbWV0ZXIgaW4gOmZ1bmM6YH5jb21waWxlYWxsLmNvbXBpbGVfZGlyYCwKKzpmdW5jOmB+Y29tcGlsZWFsbC5jb21waWxlX2ZpbGVgLCBhbmQgOmZ1bmM6YH5jb21waWxlYWxsLmNvbXBpbGVfcGF0aGAgY2FuIG5vdworYWNjZXB0IGFuIGludGVnZXIgdmFsdWUgaW5kaWNhdGluZyB0aGUgbGV2ZWwgb2Ygb3V0cHV0IHN1cHByZXNzaW9uLgorKENvbnRyaWJ1dGVkIGJ5IFRob21hcyBLbHV5dmVyIGluIDppc3N1ZTpgMjEzMzhgLikKKworCitjb25jdXJyZW50LmZ1dHVyZXMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOm1ldGg6YEV4ZWN1dG9yLm1hcCgpIDxjb25jdXJyZW50LmZ1dHVyZXMuRXhlY3V0b3IubWFwPmAgbWV0aG9kIG5vdyBhY2NlcHRzIGEKKypjaHVua3NpemUqIGFyZ3VtZW50IHRvIGFsbG93IGJhdGNoaW5nIG9mIHRhc2tzIHRvIGltcHJvdmUgcGVyZm9ybWFuY2Ugd2hlbgorOm1ldGg6YH5jb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvcmAgaXMgdXNlZC4KKyhDb250cmlidXRlZCBieSBEYW4gTydSZWlsbHkgaW4gOmlzc3VlOmAxMTI3MWAuKQorCitUaGUgbnVtYmVyIG9mIHdvcmtlcnMgaW4gdGhlIDpjbGFzczpgfmNvbmN1cnJlbnQuZnV0dXJlcy5UaHJlYWRQb29sRXhlY3V0b3JgCitjb25zdHJ1Y3RvciBpcyBvcHRpb25hbCBub3cuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA1IHRpbWVzIHRoZSBudW1iZXIgb2YgQ1BVcy4KKyhDb250cmlidXRlZCBieSBDbGF1ZGl1IFBvcGEgaW4gOmlzc3VlOmAyMTUyN2AuKQorCisKK2NvbmZpZ3BhcnNlcgorLS0tLS0tLS0tLS0tCisKKzptb2Q6YGNvbmZpZ3BhcnNlcmAgbm93IHByb3ZpZGVzIGEgd2F5IHRvIGN1c3RvbWl6ZSB0aGUgY29udmVyc2lvbgorb2YgdmFsdWVzIGJ5IHNwZWNpZnlpbmcgYSBkaWN0aW9uYXJ5IG9mIGNvbnZlcnRlcnMgaW4gdGhlCis6Y2xhc3M6YH5jb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyYCBjb25zdHJ1Y3Rvciwgb3IgYnkgZGVmaW5pbmcgdGhlbQorYXMgbWV0aG9kcyBpbiBgYENvbmZpZ1BhcnNlcmBgIHN1YmNsYXNzZXMuICBDb252ZXJ0ZXJzIGRlZmluZWQgaW4KK2EgcGFyc2VyIGluc3RhbmNlIGFyZSBpbmhlcml0ZWQgYnkgaXRzIHNlY3Rpb24gcHJveGllcy4KKworRXhhbXBsZTo6CisKKyAgICA+Pj4gaW1wb3J0IGNvbmZpZ3BhcnNlcgorICAgID4+PiBjb252ID0ge30KKyAgICA+Pj4gY29udlsnbGlzdCddID0gbGFtYmRhIHY6IFtlLnN0cmlwKCkgZm9yIGUgaW4gdi5zcGxpdCgpIGlmIGUuc3RyaXAoKV0KKyAgICA+Pj4gY2ZnID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcihjb252ZXJ0ZXJzPWNvbnYpCisgICAgPj4+IGNmZy5yZWFkX3N0cmluZygiIiIKKyAgICAuLi4gW3NdCisgICAgLi4uIGxpc3QgPSBhIGIgYyBkIGUgZiBnCisgICAgLi4uICIiIikKKyAgICA+Pj4gY2ZnLmdldCgncycsICdsaXN0JykKKyAgICAnYSBiIGMgZCBlIGYgZycKKyAgICA+Pj4gY2ZnLmdldGxpc3QoJ3MnLCAnbGlzdCcpCisgICAgWydhJywgJ2InLCAnYycsICdkJywgJ2UnLCAnZicsICdnJ10KKyAgICA+Pj4gc2VjdGlvbiA9IGNmZ1sncyddCisgICAgPj4+IHNlY3Rpb24uZ2V0bGlzdCgnbGlzdCcpCisgICAgWydhJywgJ2InLCAnYycsICdkJywgJ2UnLCAnZicsICdnJ10KKworKENvbnRyaWJ1dGVkIGJ5IMWBdWthc3ogTGFuZ2EgaW4gOmlzc3VlOmAxODE1OWAuKQorCisKK2NvbnRleHRsaWIKKy0tLS0tLS0tLS0KKworVGhlIG5ldyA6ZnVuYzpgfmNvbnRleHRsaWIucmVkaXJlY3Rfc3RkZXJyYCA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCAoc2ltaWxhciB0bworOmZ1bmM6YH5jb250ZXh0bGliLnJlZGlyZWN0X3N0ZG91dGApIG1ha2VzIGl0IGVhc2llciBmb3IgdXRpbGl0eSBzY3JpcHRzIHRvCitoYW5kbGUgaW5mbGV4aWJsZSBBUElzIHRoYXQgd3JpdGUgdGhlaXIgb3V0cHV0IHRvIDpkYXRhOmBzeXMuc3RkZXJyYCBhbmQKK2Rvbid0IHByb3ZpZGUgYW55IG9wdGlvbnMgdG8gcmVkaXJlY3QgaXQ6OgorCisgICAgPj4+IGltcG9ydCBjb250ZXh0bGliLCBpbywgbG9nZ2luZworICAgID4+PiBmID0gaW8uU3RyaW5nSU8oKQorICAgID4+PiB3aXRoIGNvbnRleHRsaWIucmVkaXJlY3Rfc3RkZXJyKGYpOgorICAgIC4uLiAgICAgbG9nZ2luZy53YXJuaW5nKCd3YXJuaW5nJykKKyAgICAuLi4KKyAgICA+Pj4gZi5nZXR2YWx1ZSgpCisgICAgJ1dBUk5JTkc6cm9vdDp3YXJuaW5nXG4nCisKKyhDb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMjIzODlgLikKKworCitjc3YKKy0tLQorCitUaGUgOm1ldGg6YH5jc3YuY3N2d3JpdGVyLndyaXRlcm93YCBtZXRob2Qgbm93IHN1cHBvcnRzIGFyYml0cmFyeSBpdGVyYWJsZXMsCitub3QganVzdCBzZXF1ZW5jZXMuICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIzMTcxYC4pCisKKworY3Vyc2VzCistLS0tLS0KKworVGhlIG5ldyA6ZnVuYzpgfmN1cnNlcy51cGRhdGVfbGluZXNfY29sc2AgZnVuY3Rpb24gdXBkYXRlcyB0aGUgOmVudnZhcjpgTElORVNgCithbmQgOmVudnZhcjpgQ09MU2AgZW52aXJvbm1lbnQgdmFyaWFibGVzLiAgVGhpcyBpcyB1c2VmdWwgZm9yIGRldGVjdGluZworbWFudWFsIHNjcmVlbiByZXNpemluZy4gIChDb250cmlidXRlZCBieSBBcm5vbiBZYWFyaSBpbiA6aXNzdWU6YDQyNTRgLikKKworCitkYm0KKy0tLQorCis6ZnVuYzpgZHVtYi5vcGVuIDxkYm0uZHVtYi5vcGVuPmAgYWx3YXlzIGNyZWF0ZXMgYSBuZXcgZGF0YWJhc2Ugd2hlbiB0aGUgZmxhZworaGFzIHRoZSB2YWx1ZSBgYCJuImBgLiAgKENvbnRyaWJ1dGVkIGJ5IENsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDE4MDM5YC4pCisKKworZGlmZmxpYgorLS0tLS0tLQorCitUaGUgY2hhcnNldCBvZiBIVE1MIGRvY3VtZW50cyBnZW5lcmF0ZWQgYnkKKzptZXRoOmBIdG1sRGlmZi5tYWtlX2ZpbGUoKSA8ZGlmZmxpYi5IdG1sRGlmZi5tYWtlX2ZpbGU+YAorY2FuIG5vdyBiZSBjdXN0b21pemVkIGJ5IHVzaW5nIGEgbmV3ICpjaGFyc2V0KiBrZXl3b3JkLW9ubHkgYXJndW1lbnQuCitUaGUgZGVmYXVsdCBjaGFyc2V0IG9mIEhUTUwgZG9jdW1lbnQgY2hhbmdlZCBmcm9tIGBgIklTTy04ODU5LTEiYGAKK3RvIGBgInV0Zi04ImBgLgorKENvbnRyaWJ1dGVkIGJ5IEJlcmtlciBQZWtzYWcgaW4gOmlzc3VlOmAyMDUyYC4pCisKK1RoZSA6ZnVuYzpgfmRpZmZsaWIuZGlmZl9ieXRlc2AgZnVuY3Rpb24gY2FuIG5vdyBjb21wYXJlIGxpc3RzIG9mIGJ5dGUKK3N0cmluZ3MuICBUaGlzIGZpeGVzIGEgcmVncmVzc2lvbiBmcm9tIFB5dGhvbiAyLgorKENvbnRyaWJ1dGVkIGJ5IFRlcnJ5IEouIFJlZWR5IGFuZCBHcmVnIFdhcmQgaW4gOmlzc3VlOmAxNzQ0NWAuKQorCisKK2Rpc3R1dGlscworLS0tLS0tLS0tCisKK0JvdGggdGhlIGBgYnVpbGRgYCBhbmQgYGBidWlsZF9leHRgYCBjb21tYW5kcyBub3cgYWNjZXB0IGEgYGAtamBgIG9wdGlvbiB0bworZW5hYmxlIHBhcmFsbGVsIGJ1aWxkaW5nIG9mIGV4dGVuc2lvbiBtb2R1bGVzLgorKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgNTMwOWAuKQorCitUaGUgOm1vZDpgZGlzdHV0aWxzYCBtb2R1bGUgbm93IHN1cHBvcnRzIGBgeHpgYCBjb21wcmVzc2lvbiwgYW5kIGNhbiBiZQorZW5hYmxlZCBieSBwYXNzaW5nIGBgeHp0YXJgYCBhcyBhbiBhcmd1bWVudCB0byBgYGJkaXN0IC0tZm9ybWF0YGAuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDE2MzE0YC4pCisKKworZG9jdGVzdAorLS0tLS0tLQorCitUaGUgOmZ1bmM6YH5kb2N0ZXN0LkRvY1Rlc3RTdWl0ZWAgZnVuY3Rpb24gcmV0dXJucyBhbiBlbXB0eQorOmNsYXNzOmB1bml0dGVzdC5UZXN0U3VpdGVgIGlmICptb2R1bGUqIGNvbnRhaW5zIG5vIGRvY3N0cmluZ3MsIGluc3RlYWQgb2YKK3JhaXNpbmcgOmV4YzpgVmFsdWVFcnJvcmAuICAoQ29udHJpYnV0ZWQgYnkgR2xlbm4gSm9uZXMgaW4gOmlzc3VlOmAxNTkxNmAuKQorCisKK2VtYWlsCistLS0tLQorCitBIG5ldyBwb2xpY3kgb3B0aW9uIDphdHRyOmBQb2xpY3kubWFuZ2xlX2Zyb21fIDxlbWFpbC5wb2xpY3kuUG9saWN5Lm1hbmdsZV9mcm9tXz5gCitjb250cm9scyB3aGV0aGVyIG9yIG5vdCBsaW5lcyB0aGF0IHN0YXJ0IHdpdGggYGAiRnJvbSAiYGAgaW4gZW1haWwgYm9kaWVzIGFyZQorcHJlZml4ZWQgd2l0aCBhIGBgIj4iYGAgY2hhcmFjdGVyIGJ5IGdlbmVyYXRvcnMuICBUaGUgZGVmYXVsdCBpcyBgYFRydWVgYCBmb3IKKzphdHRyOmB+ZW1haWwucG9saWN5LmNvbXBhdDMyYCBhbmQgYGBGYWxzZWBgIGZvciBhbGwgb3RoZXIgcG9saWNpZXMuCisoQ29udHJpYnV0ZWQgYnkgTWlsYW4gT2JlcmtpcmNoIGluIDppc3N1ZTpgMjAwOThgLikKKworQSBuZXcKKzptZXRoOmBNZXNzYWdlLmdldF9jb250ZW50X2Rpc3Bvc2l0aW9uKCkgPGVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfY29udGVudF9kaXNwb3NpdGlvbj5gCittZXRob2QgcHJvdmlkZXMgZWFzeSBhY2Nlc3MgdG8gYSBjYW5vbmljYWwgdmFsdWUgZm9yIHRoZQorOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlci4KKyhDb250cmlidXRlZCBieSBBYmhpbGFzaCBSYWogaW4gOmlzc3VlOmAyMTA4M2AuKQorCitBIG5ldyBwb2xpY3kgb3B0aW9uIDphdHRyOmBFbWFpbFBvbGljeS51dGY4IDxlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kudXRmOD5gCitjYW4gYmUgc2V0IHRvIGBgVHJ1ZWBgIHRvIGVuY29kZSBlbWFpbCBoZWFkZXJzIHVzaW5nIHRoZSBVVEYtOCBjaGFyc2V0IGluc3RlYWQKK29mIHVzaW5nIGVuY29kZWQgd29yZHMuICBUaGlzIGFsbG93cyBgYE1lc3NhZ2VzYGAgdG8gYmUgZm9ybWF0dGVkIGFjY29yZGluZyB0bworOnJmYzpgNjUzMmAgYW5kIHVzZWQgd2l0aCBhbiBTTVRQIHNlcnZlciB0aGF0IHN1cHBvcnRzIHRoZSA6cmZjOmA2NTMxYAorYGBTTVRQVVRGOGBgIGV4dGVuc2lvbi4gIChDb250cmlidXRlZCBieSBSLiBEYXZpZCBNdXJyYXkgaW4KKzppc3N1ZTpgMjQyMTFgLikKKworVGhlIDpjbGFzczpgbWltZS50ZXh0Lk1JTUVUZXh0IDxlbWFpbC5taW1lLnRleHQuTUlNRVRleHQ+YCBjb25zdHJ1Y3RvciBub3cKK2FjY2VwdHMgYSA6Y2xhc3M6YGNoYXJzZXQuQ2hhcnNldCA8ZW1haWwuY2hhcnNldC5DaGFyc2V0PmAgaW5zdGFuY2UuCisoQ29udHJpYnV0ZWQgYnkgQ2xhdWRlIFBhcm96IGFuZCBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMTYzMjRgLikKKworCitlbnVtCistLS0tCisKK1RoZSA6Y2xhc3M6YH5lbnVtLkVudW1gIGNhbGxhYmxlIGhhcyBhIG5ldyBwYXJhbWV0ZXIgKnN0YXJ0KiB0bworc3BlY2lmeSB0aGUgaW5pdGlhbCBudW1iZXIgb2YgZW51bSB2YWx1ZXMgaWYgb25seSAqbmFtZXMqIGFyZSBwcm92aWRlZDo6CisKKyAgICA+Pj4gQW5pbWFsID0gZW51bS5FbnVtKCdBbmltYWwnLCAnY2F0IGRvZycsIHN0YXJ0PTEwKQorICAgID4+PiBBbmltYWwuY2F0CisgICAgPEFuaW1hbC5jYXQ6IDEwPgorICAgID4+PiBBbmltYWwuZG9nCisgICAgPEFuaW1hbC5kb2c6IDExPgorCisoQ29udHJpYnV0ZWQgYnkgRXRoYW4gRnVybWFuIGluIDppc3N1ZTpgMjE3MDZgLikKKworCitmYXVsdGhhbmRsZXIKKy0tLS0tLS0tLS0tLQorCitUaGUgOmZ1bmM6YH5mYXVsdGhhbmRsZXIuZW5hYmxlYCwgOmZ1bmM6YH5mYXVsdGhhbmRsZXIucmVnaXN0ZXJgLAorOmZ1bmM6YH5mYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tgIGFuZAorOmZ1bmM6YH5mYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXJgIGZ1bmN0aW9ucyBub3cgYWNjZXB0IGZpbGUKK2Rlc2NyaXB0b3JzIGluIGFkZGl0aW9uIHRvIGZpbGUtbGlrZSBvYmplY3RzLgorKENvbnRyaWJ1dGVkIGJ5IFdlaSBXdSBpbiA6aXNzdWU6YDIzNTY2YC4pCisKKworZnVuY3Rvb2xzCistLS0tLS0tLS0KKworLi4gX3doYXRzbmV3LWxydWNhY2hlOgorCitNb3N0IG9mIHRoZSA6ZnVuYzpgfmZ1bmN0b29scy5scnVfY2FjaGVgIG1hY2hpbmVyeSBpcyBub3cgaW1wbGVtZW50ZWQgaW4gQywgbWFraW5nCitpdCBzaWduaWZpY2FudGx5IGZhc3Rlci4gIChDb250cmlidXRlZCBieSBNYXR0IEpvaW5lciwgQWxleGV5IEthY2hheWV2LCBhbmQKK1NlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxNDM3M2AuKQorCisKK2dsb2IKKy0tLS0KKworVGhlIDpmdW5jOmB+Z2xvYi5pZ2xvYmAgYW5kIDpmdW5jOmB+Z2xvYi5nbG9iYCBmdW5jdGlvbnMgbm93IHN1cHBvcnQgcmVjdXJzaXZlCitzZWFyY2ggaW4gc3ViZGlyZWN0b3JpZXMsIHVzaW5nIHRoZSBgYCIqKiJgYCBwYXR0ZXJuLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxMzk2OGAuKQorCisKK2d6aXAKKy0tLS0KKworVGhlICptb2RlKiBhcmd1bWVudCBvZiB0aGUgOmNsYXNzOmB+Z3ppcC5HemlwRmlsZWAgY29uc3RydWN0b3Igbm93CithY2NlcHRzIGBgIngiYGAgdG8gcmVxdWVzdCBleGNsdXNpdmUgY3JlYXRpb24uCisoQ29udHJpYnV0ZWQgYnkgVGltIEhlYW5leSBpbiA6aXNzdWU6YDE5MjIyYC4pCisKKworaGVhcHEKKy0tLS0tCisKK0VsZW1lbnQgY29tcGFyaXNvbiBpbiA6ZnVuYzpgfmhlYXBxLm1lcmdlYCBjYW4gbm93IGJlIGN1c3RvbWl6ZWQgYnkKK3Bhc3NpbmcgYSA6dGVybTpga2V5IGZ1bmN0aW9uYCBpbiBhIG5ldyBvcHRpb25hbCAqa2V5KiBrZXl3b3JkIGFyZ3VtZW50LAorYW5kIGEgbmV3IG9wdGlvbmFsICpyZXZlcnNlKiBrZXl3b3JkIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIHJldmVyc2UgZWxlbWVudAorY29tcGFyaXNvbjo6CisKKyAgICA+Pj4gaW1wb3J0IGhlYXBxCisgICAgPj4+IGEgPSBbJzknLCAnNzc3JywgJzU1NTU1J10KKyAgICA+Pj4gYiA9IFsnODgnLCAnNjY2NiddCisgICAgPj4+IGxpc3QoaGVhcHEubWVyZ2UoYSwgYiwga2V5PWxlbikpCisgICAgWyc5JywgJzg4JywgJzc3NycsICc2NjY2JywgJzU1NTU1J10KKyAgICA+Pj4gbGlzdChoZWFwcS5tZXJnZShyZXZlcnNlZChhKSwgcmV2ZXJzZWQoYiksIGtleT1sZW4sIHJldmVyc2U9VHJ1ZSkpCisgICAgWyc1NTU1NScsICc2NjY2JywgJzc3NycsICc4OCcsICc5J10KKworKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyIGluIDppc3N1ZTpgMTM3NDJgLikKKworCitodHRwCistLS0tCisKK0EgbmV3IDpjbGFzczpgSFRUUFN0YXR1cyA8aHR0cC5IVFRQU3RhdHVzPmAgZW51bSB0aGF0IGRlZmluZXMgYSBzZXQgb2YKK0hUVFAgc3RhdHVzIGNvZGVzLCByZWFzb24gcGhyYXNlcyBhbmQgbG9uZyBkZXNjcmlwdGlvbnMgd3JpdHRlbiBpbiBFbmdsaXNoLgorKENvbnRyaWJ1dGVkIGJ5IERlbWlhbiBCcmVjaHQgaW4gOmlzc3VlOmAyMTc5M2AuKQorCisKK2h0dHAuY2xpZW50CistLS0tLS0tLS0tLQorCis6bWV0aDpgSFRUUENvbm5lY3Rpb24uZ2V0cmVzcG9uc2UoKSA8aHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24uZ2V0cmVzcG9uc2U+YAorbm93IHJhaXNlcyBhIDpleGM6YH5odHRwLmNsaWVudC5SZW1vdGVEaXNjb25uZWN0ZWRgIGV4Y2VwdGlvbiB3aGVuIGEKK3JlbW90ZSBzZXJ2ZXIgY29ubmVjdGlvbiBpcyBjbG9zZWQgdW5leHBlY3RlZGx5LiAgQWRkaXRpb25hbGx5LCBpZiBhCis6ZXhjOmBDb25uZWN0aW9uRXJyb3JgIChvZiB3aGljaCBgYFJlbW90ZURpc2Nvbm5lY3RlZGBgCitpcyBhIHN1YmNsYXNzKSBpcyByYWlzZWQsIHRoZSBjbGllbnQgc29ja2V0IGlzIG5vdyBjbG9zZWQgYXV0b21hdGljYWxseSwKK2FuZCB3aWxsIHJlY29ubmVjdCBvbiB0aGUgbmV4dCByZXF1ZXN0OjoKKworICAgIGltcG9ydCBodHRwLmNsaWVudAorICAgIGNvbm4gPSBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbignd3d3LnB5dGhvbi5vcmcnKQorICAgIGZvciByZXRyaWVzIGluIHJhbmdlKDMpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBjb25uLnJlcXVlc3QoJ0dFVCcsICcvJykKKyAgICAgICAgICAgIHJlc3AgPSBjb25uLmdldHJlc3BvbnNlKCkKKyAgICAgICAgZXhjZXB0IGh0dHAuY2xpZW50LlJlbW90ZURpc2Nvbm5lY3RlZDoKKyAgICAgICAgICAgIHBhc3MKKworKENvbnRyaWJ1dGVkIGJ5IE1hcnRpbiBQYW50ZXIgaW4gOmlzc3VlOmAzNTY2YC4pCisKKworaWRsZWxpYiBhbmQgSURMRQorLS0tLS0tLS0tLS0tLS0tLQorCitTaW5jZSBpZGxlbGliIGltcGxlbWVudHMgdGhlIElETEUgc2hlbGwgYW5kIGVkaXRvciBhbmQgaXMgbm90IGludGVuZGVkIGZvcgoraW1wb3J0IGJ5IG90aGVyIHByb2dyYW1zLCBpdCBnZXRzIGltcHJvdmVtZW50cyB3aXRoIGV2ZXJ5IHJlbGVhc2UuICBTZWUKKzpmaWxlOmBMaWIvaWRsZWxpYi9ORVdTLnR4dGAgZm9yIGEgY3VtdWxhdGl2ZSBsaXN0IG9mIGNoYW5nZXMgc2luY2UgMy40LjAsCithcyB3ZWxsIGFzIGNoYW5nZXMgbWFkZSBpbiBmdXR1cmUgMy41LnggcmVsZWFzZXMuIFRoaXMgZmlsZSBpcyBhbHNvIGF2YWlsYWJsZQorZnJvbSB0aGUgSURMRSA6bWVudXNlbGVjdGlvbjpgSGVscCAtLT4gQWJvdXQgSURMRWAgZGlhbG9nLgorCisKK2ltYXBsaWIKKy0tLS0tLS0KKworVGhlIDpjbGFzczpgfmltYXBsaWIuSU1BUDRgIGNsYXNzIG5vdyBzdXBwb3J0cyB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAgcHJvdG9jb2wuCitXaGVuIHVzZWQgaW4gYSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LCB0aGUgSU1BUDQgYGBMT0dPVVRgYAorY29tbWFuZCB3aWxsIGJlIGNhbGxlZCBhdXRvbWF0aWNhbGx5IGF0IHRoZSBlbmQgb2YgdGhlIGJsb2NrLgorKENvbnRyaWJ1dGVkIGJ5IFRhcmVrIFppYWTDqSBhbmQgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDQ5NzJgLikKKworVGhlIDptb2Q6YGltYXBsaWJgIG1vZHVsZSBub3cgc3VwcG9ydHMgOnJmYzpgNTE2MWAgKEVOQUJMRSBFeHRlbnNpb24pCithbmQgOnJmYzpgNjg1NWAgKFVURi04IFN1cHBvcnQpIHZpYSB0aGUgOm1ldGg6YElNQVA0LmVuYWJsZSgpIDxpbWFwbGliLklNQVA0LmVuYWJsZT5gCittZXRob2QuICBBIG5ldyA6YXR0cjpgSU1BUDQudXRmOF9lbmFibGVkIDxpbWFwbGliLklNQVA0LnV0ZjhfZW5hYmxlZD5gCithdHRyaWJ1dGUgdHJhY2tzIHdoZXRoZXIgb3Igbm90IDpyZmM6YDY4NTVgIHN1cHBvcnQgaXMgZW5hYmxlZC4KKyhDb250cmlidXRlZCBieSBNaWxhbiBPYmVya2lyY2gsIFIuIERhdmlkIE11cnJheSwgYW5kIE1hY2llaiBTenVsaWsgaW4KKzppc3N1ZTpgMjE4MDBgLikKKworVGhlIDptb2Q6YGltYXBsaWJgIG1vZHVsZSBub3cgYXV0b21hdGljYWxseSBlbmNvZGVzIG5vbi1BU0NJSSBzdHJpbmcgdXNlcm5hbWVzCithbmQgcGFzc3dvcmRzIHVzaW5nIFVURi04LCBhcyByZWNvbW1lbmRlZCBieSB0aGUgUkZDcy4gIChDb250cmlidXRlZCBieSBNaWxhbgorT2JlcmtpcmNoIGluIDppc3N1ZTpgMjE4MDBgLikKKworCitpbWdoZHIKKy0tLS0tLQorCitUaGUgOmZ1bmM6YH5pbWdoZHIud2hhdGAgZnVuY3Rpb24gbm93IHJlY29nbml6ZXMgdGhlCitgT3BlbkVYUiA8aHR0cDovL3d3dy5vcGVuZXhyLmNvbT5gXyBmb3JtYXQKKyhjb250cmlidXRlZCBieSBNYXJ0aW4gVmlnbmFsaSBhbmQgQ2xhdWRpdSBQb3BhIGluIDppc3N1ZTpgMjAyOTVgKSwKK2FuZCB0aGUgYFdlYlAgPGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlYlA+YF8gZm9ybWF0CisoY29udHJpYnV0ZWQgYnkgRmFicmljZSBBbmVjaGUgYW5kIENsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDIwMTk3YC4pCisKKworaW1wb3J0bGliCistLS0tLS0tLS0KKworVGhlIDpjbGFzczpgdXRpbC5MYXp5TG9hZGVyIDxpbXBvcnRsaWIudXRpbC5MYXp5TG9hZGVyPmAgY2xhc3MgYWxsb3dzIGZvcgorbGF6eSBsb2FkaW5nIG9mIG1vZHVsZXMgaW4gYXBwbGljYXRpb25zIHdoZXJlIHN0YXJ0dXAgdGltZSBpcyBpbXBvcnRhbnQuCisoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMTc2MjFgLikKKworVGhlIDpmdW5jOmBhYmMuSW5zcGVjdExvYWRlci5zb3VyY2VfdG9fY29kZSgpIDxpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXIuc291cmNlX3RvX2NvZGU+YAorbWV0aG9kIGlzIG5vdyBhIHN0YXRpYyBtZXRob2QuICBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBpbml0aWFsaXplIGEgbW9kdWxlCitvYmplY3Qgd2l0aCBjb2RlIGNvbXBpbGVkIGZyb20gYSBzdHJpbmcgYnkgcnVubmluZworYGBleGVjKGNvZGUsIG1vZHVsZS5fX2RpY3RfXylgYC4KKyhDb250cmlidXRlZCBieSBCcmV0dCBDYW5ub24gaW4gOmlzc3VlOmAyMTE1NmAuKQorCitUaGUgbmV3IDpmdW5jOmB1dGlsLm1vZHVsZV9mcm9tX3NwZWMoKSA8aW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlYz5gCitmdW5jdGlvbiBpcyBub3cgdGhlIHByZWZlcnJlZCB3YXkgdG8gY3JlYXRlIGEgbmV3IG1vZHVsZS4gIEFzIG9wcG9zZWQgdG8KK2NyZWF0aW5nIGEgOmNsYXNzOmB0eXBlcy5Nb2R1bGVUeXBlYCBpbnN0YW5jZSBkaXJlY3RseSwgdGhpcyBuZXcgZnVuY3Rpb24KK3dpbGwgc2V0IHRoZSB2YXJpb3VzIGltcG9ydC1jb250cm9sbGVkIGF0dHJpYnV0ZXMgYmFzZWQgb24gdGhlIHBhc3NlZC1pbgorc3BlYyBvYmplY3QuICAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjAzODNgLikKKworCitpbnNwZWN0CistLS0tLS0tCisKK0JvdGggdGhlIDpjbGFzczpgfmluc3BlY3QuU2lnbmF0dXJlYCBhbmQgOmNsYXNzOmB+aW5zcGVjdC5QYXJhbWV0ZXJgIGNsYXNzZXMgYXJlCitub3cgcGlja2xhYmxlIGFuZCBoYXNoYWJsZS4gIChDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdiBpbiA6aXNzdWU6YDIwNzI2YAorYW5kIDppc3N1ZTpgMjAzMzRgLikKKworQSBuZXcKKzptZXRoOmBCb3VuZEFyZ3VtZW50cy5hcHBseV9kZWZhdWx0cygpIDxpbnNwZWN0LkJvdW5kQXJndW1lbnRzLmFwcGx5X2RlZmF1bHRzPmAKK21ldGhvZCBwcm92aWRlcyBhIHdheSB0byBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIG1pc3NpbmcgYXJndW1lbnRzOjoKKworICAgID4+PiBkZWYgZm9vKGEsIGI9J2hhbScsICphcmdzKTogcGFzcworICAgID4+PiBiYSA9IGluc3BlY3Quc2lnbmF0dXJlKGZvbykuYmluZCgnc3BhbScpCisgICAgPj4+IGJhLmFwcGx5X2RlZmF1bHRzKCkKKyAgICA+Pj4gYmEuYXJndW1lbnRzCisgICAgT3JkZXJlZERpY3QoWygnYScsICdzcGFtJyksICgnYicsICdoYW0nKSwgKCdhcmdzJywgKCkpXSkKKworKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGluIDppc3N1ZTpgMjQxOTBgLikKKworQSBuZXcgY2xhc3MgbWV0aG9kCis6bWV0aDpgU2lnbmF0dXJlLmZyb21fY2FsbGFibGUoKSA8aW5zcGVjdC5TaWduYXR1cmUuZnJvbV9jYWxsYWJsZT5gIG1ha2VzCitzdWJjbGFzc2luZyBvZiA6Y2xhc3M6YH5pbnNwZWN0LlNpZ25hdHVyZWAgZWFzaWVyLiAgKENvbnRyaWJ1dGVkCitieSBZdXJ5IFNlbGl2YW5vdiBhbmQgRXJpYyBTbm93IGluIDppc3N1ZTpgMTczNzNgLikKKworVGhlIDpmdW5jOmB+aW5zcGVjdC5zaWduYXR1cmVgIGZ1bmN0aW9uIG5vdyBhY2NlcHRzIGEgKmZvbGxvd193cmFwcGVkKgorb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudCwgd2hpY2gsIHdoZW4gc2V0IHRvIGBgRmFsc2VgYCwgZGlzYWJsZXMgYXV0b21hdGljCitmb2xsb3dpbmcgb2YgYGBfX3dyYXBwZWRfX2BgIGxpbmtzLgorKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGluIDppc3N1ZTpgMjA2OTFgLikKKworQSBzZXQgb2YgbmV3IGZ1bmN0aW9ucyB0byBpbnNwZWN0Cis6dGVybTpgY29yb3V0aW5lIGZ1bmN0aW9ucyA8Y29yb3V0aW5lIGZ1bmN0aW9uPmAgYW5kCis6dGVybTpgY29yb3V0aW5lIG9iamVjdHMgPGNvcm91dGluZT5gIGhhcyBiZWVuIGFkZGVkOgorOmZ1bmM6YH5pbnNwZWN0LmlzY29yb3V0aW5lYCwgOmZ1bmM6YH5pbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb25gLAorOmZ1bmM6YH5pbnNwZWN0LmlzYXdhaXRhYmxlYCwgOmZ1bmM6YH5pbnNwZWN0LmdldGNvcm91dGluZWxvY2Fsc2AsCithbmQgOmZ1bmM6YH5pbnNwZWN0LmdldGNvcm91dGluZXN0YXRlYC4KKyhDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdiBpbiA6aXNzdWU6YDI0MDE3YCBhbmQgOmlzc3VlOmAyNDQwMGAuKQorCitUaGUgOmZ1bmM6YH5pbnNwZWN0LnN0YWNrYCwgOmZ1bmM6YH5pbnNwZWN0LnRyYWNlYCwKKzpmdW5jOmB+aW5zcGVjdC5nZXRvdXRlcmZyYW1lc2AsIGFuZCA6ZnVuYzpgfmluc3BlY3QuZ2V0aW5uZXJmcmFtZXNgCitmdW5jdGlvbnMgbm93IHJldHVybiBhIGxpc3Qgb2YgbmFtZWQgdHVwbGVzLgorKENvbnRyaWJ1dGVkIGJ5IERhbmllbCBTaGFoYWYgaW4gOmlzc3VlOmAxNjgwOGAuKQorCisKK2lvCistLQorCitBIG5ldyA6bWV0aDpgQnVmZmVyZWRJT0Jhc2UucmVhZGludG8xKCkgPGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRpbnRvMT5gCittZXRob2QsIHRoYXQgdXNlcyBhdCBtb3N0IG9uZSBjYWxsIHRvIHRoZSB1bmRlcmx5aW5nIHJhdyBzdHJlYW0ncworOm1ldGg6YFJhd0lPQmFzZS5yZWFkKCkgPGlvLlJhd0lPQmFzZS5yZWFkPmAgb3IKKzptZXRoOmBSYXdJT0Jhc2UucmVhZGludG8oKSA8aW8uUmF3SU9CYXNlLnJlYWRpbnRvPmAgbWV0aG9kcy4KKyhDb250cmlidXRlZCBieSBOaWtvbGF1cyBSYXRoIGluIDppc3N1ZTpgMjA1NzhgLikKKworCitpcGFkZHJlc3MKKy0tLS0tLS0tLQorCitCb3RoIHRoZSA6Y2xhc3M6YH5pcGFkZHJlc3MuSVB2NE5ldHdvcmtgIGFuZCA6Y2xhc3M6YH5pcGFkZHJlc3MuSVB2Nk5ldHdvcmtgIGNsYXNzZXMKK25vdyBhY2NlcHQgYW4gYGAoYWRkcmVzcywgbmV0bWFzaylgYCB0dXBsZSBhcmd1bWVudCwgc28gYXMgdG8gZWFzaWx5IGNvbnN0cnVjdAorbmV0d29yayBvYmplY3RzIGZyb20gZXhpc3RpbmcgYWRkcmVzc2VzOjoKKworICAgID4+PiBpbXBvcnQgaXBhZGRyZXNzCisgICAgPj4+IGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzEyNy4wLjAuMCcsIDgpKQorICAgIElQdjROZXR3b3JrKCcxMjcuMC4wLjAvOCcpCisgICAgPj4+IGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzEyNy4wLjAuMCcsICcyNTUuMC4wLjAnKSkKKyAgICBJUHY0TmV0d29yaygnMTI3LjAuMC4wLzgnKQorCisoQ29udHJpYnV0ZWQgYnkgUGV0ZXIgTW9vZHkgYW5kIEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMTY1MzFgLikKKworQSBuZXcgOmF0dHI6YH5pcGFkZHJlc3MuSVB2NE5ldHdvcmsucmV2ZXJzZV9wb2ludGVyYCBhdHRyaWJ1dGUgZm9yIHRoZQorOmNsYXNzOmB+aXBhZGRyZXNzLklQdjROZXR3b3JrYCBhbmQgOmNsYXNzOmB+aXBhZGRyZXNzLklQdjZOZXR3b3JrYCBjbGFzc2VzCityZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSByZXZlcnNlIEROUyBQVFIgcmVjb3JkOjoKKworICAgID4+PiBpbXBvcnQgaXBhZGRyZXNzCisgICAgPj4+IGFkZHIgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEyNy4wLjAuMScpCisgICAgPj4+IGFkZHIucmV2ZXJzZV9wb2ludGVyCisgICAgJzEuMC4wLjEyNy5pbi1hZGRyLmFycGEnCisgICAgPj4+IGFkZHI2ID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKQorICAgID4+PiBhZGRyNi5yZXZlcnNlX3BvaW50ZXIKKyAgICAnMS4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLmlwNi5hcnBhJworCisoQ29udHJpYnV0ZWQgYnkgTGVvbiBXZWJlciBpbiA6aXNzdWU6YDIwNDgwYC4pCisKKworanNvbgorLS0tLQorCitUaGUgOm1vZDpganNvbi50b29sYCBjb21tYW5kIGxpbmUgaW50ZXJmYWNlIG5vdyBwcmVzZXJ2ZXMgdGhlIG9yZGVyIG9mIGtleXMgaW4KK0pTT04gb2JqZWN0cyBwYXNzZWQgaW4gaW5wdXQuICBUaGUgbmV3IGBgLS1zb3J0LWtleXNgYCBvcHRpb24gY2FuIGJlIHVzZWQKK3RvIHNvcnQgdGhlIGtleXMgYWxwaGFiZXRpY2FsbHkuIChDb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnCitpbiA6aXNzdWU6YDIxNjUwYC4pCisKK0pTT04gZGVjb2RlciBub3cgcmFpc2VzIDpleGM6YH5qc29uLkpTT05EZWNvZGVFcnJvcmAgaW5zdGVhZCBvZgorOmV4YzpgVmFsdWVFcnJvcmAgdG8gcHJvdmlkZSBiZXR0ZXIgY29udGV4dCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXJyb3IuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDE5MzYxYC4pCisKKworbGluZWNhY2hlCistLS0tLS0tLS0KKworQSBuZXcgOmZ1bmM6YH5saW5lY2FjaGUubGF6eWNhY2hlYCBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBjYXB0dXJlIGluZm9ybWF0aW9uCithYm91dCBhIG5vbi1maWxlLWJhc2VkIG1vZHVsZSB0byBwZXJtaXQgZ2V0dGluZyBpdHMgbGluZXMgbGF0ZXIgdmlhCis6ZnVuYzpgfmxpbmVjYWNoZS5nZXRsaW5lYC4gVGhpcyBhdm9pZHMgZG9pbmcgSS9PIHVudGlsIGEgbGluZSBpcyBhY3R1YWxseQorbmVlZGVkLCB3aXRob3V0IGhhdmluZyB0byBjYXJyeSB0aGUgbW9kdWxlIGdsb2JhbHMgYXJvdW5kIGluZGVmaW5pdGVseS4KKyhDb250cmlidXRlZCBieSBSb2JlcnQgQ29sbGlucyBpbiA6aXNzdWU6YDE3OTExYC4pCisKKworbG9jYWxlCistLS0tLS0KKworQSBuZXcgOmZ1bmM6YH5sb2NhbGUuZGVsb2NhbGl6ZWAgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY29udmVydCBhIHN0cmluZyBpbnRvCithIG5vcm1hbGl6ZWQgbnVtYmVyIHN0cmluZywgdGFraW5nIHRoZSBgYExDX05VTUVSSUNgYCBzZXR0aW5ncyBpbnRvIGFjY291bnQ6OgorCisgICAgPj4+IGltcG9ydCBsb2NhbGUKKyAgICA+Pj4gbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfTlVNRVJJQywgJ2RlX0RFLlVURi04JykKKyAgICAnZGVfREUuVVRGLTgnCisgICAgPj4+IGxvY2FsZS5kZWxvY2FsaXplKCcxLjIzNCw1NicpCisgICAgJzEyMzQuNTYnCisgICAgPj4+IGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX05VTUVSSUMsICdlbl9VUy5VVEYtOCcpCisgICAgJ2VuX1VTLlVURi04JworICAgID4+PiBsb2NhbGUuZGVsb2NhbGl6ZSgnMSwyMzQuNTYnKQorICAgICcxMjM0LjU2JworCisoQ29udHJpYnV0ZWQgYnkgQ8OpZHJpYyBLcmllciBpbiA6aXNzdWU6YDEzOTE4YC4pCisKKworbG9nZ2luZworLS0tLS0tLQorCitBbGwgbG9nZ2luZyBtZXRob2RzICg6Y2xhc3M6YH5sb2dnaW5nLkxvZ2dlcmAgOm1ldGg6YH5sb2dnaW5nLkxvZ2dlci5sb2dgLAorOm1ldGg6YH5sb2dnaW5nLkxvZ2dlci5leGNlcHRpb25gLCA6bWV0aDpgfmxvZ2dpbmcuTG9nZ2VyLmNyaXRpY2FsYCwKKzptZXRoOmB+bG9nZ2luZy5Mb2dnZXIuZGVidWdgLCBldGMuKSwgbm93IGFjY2VwdCBleGNlcHRpb24gaW5zdGFuY2VzCithcyBhbiAqZXhjX2luZm8qIGFyZ3VtZW50LCBpbiBhZGRpdGlvbiB0byBib29sZWFuIHZhbHVlcyBhbmQgZXhjZXB0aW9uCit0dXBsZXM6OgorCisgICAgPj4+IGltcG9ydCBsb2dnaW5nCisgICAgPj4+IHRyeToKKyAgICAuLi4gICAgIDEvMAorICAgIC4uLiBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZXg6CisgICAgLi4uICAgICBsb2dnaW5nLmVycm9yKCdleGNlcHRpb24nLCBleGNfaW5mbz1leCkKKyAgICBFUlJPUjpyb290OmV4Y2VwdGlvbgorCisoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyMDUzN2AuKQorCitUaGUgOmNsYXNzOmBoYW5kbGVycy5IVFRQSGFuZGxlciA8bG9nZ2luZy5oYW5kbGVycy5IVFRQSGFuZGxlcj5gIGNsYXNzIG5vdworYWNjZXB0cyBhbiBvcHRpb25hbCA6Y2xhc3M6YHNzbC5TU0xDb250ZXh0YCBpbnN0YW5jZSB0byBjb25maWd1cmUgU1NMCitzZXR0aW5ncyB1c2VkIGluIGFuIEhUVFAgY29ubmVjdGlvbi4KKyhDb250cmlidXRlZCBieSBBbGV4IEdheW5vciBpbiA6aXNzdWU6YDIyNzg4YC4pCisKK1RoZSA6Y2xhc3M6YGhhbmRsZXJzLlF1ZXVlTGlzdGVuZXIgPGxvZ2dpbmcuaGFuZGxlcnMuUXVldWVMaXN0ZW5lcj5gIGNsYXNzIG5vdwordGFrZXMgYSAqcmVzcGVjdF9oYW5kbGVyX2xldmVsKiBrZXl3b3JkIGFyZ3VtZW50IHdoaWNoLCBpZiBzZXQgdG8gYGBUcnVlYGAsCit3aWxsIHBhc3MgbWVzc2FnZXMgdG8gaGFuZGxlcnMgdGFraW5nIGhhbmRsZXIgbGV2ZWxzIGludG8gYWNjb3VudC4KKyhDb250cmlidXRlZCBieSBWaW5heSBTYWppcC4pCisKKworbHptYQorLS0tLQorCitUaGUgOm1ldGg6YExaTUFEZWNvbXByZXNzb3IuZGVjb21wcmVzcygpIDxsem1hLkxaTUFEZWNvbXByZXNzb3IuZGVjb21wcmVzcz5gCittZXRob2Qgbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwgKm1heF9sZW5ndGgqIGFyZ3VtZW50IHRvIGxpbWl0IHRoZSBtYXhpbXVtCitzaXplIG9mIGRlY29tcHJlc3NlZCBkYXRhLgorKENvbnRyaWJ1dGVkIGJ5IE1hcnRpbiBQYW50ZXIgaW4gOmlzc3VlOmAxNTk1NWAuKQorCisKK21hdGgKKy0tLS0KKworVHdvIG5ldyBjb25zdGFudHMgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSA6bW9kOmBtYXRoYCBtb2R1bGU6IDpkYXRhOmB+bWF0aC5pbmZgCithbmQgOmRhdGE6YH5tYXRoLm5hbmAuICAoQ29udHJpYnV0ZWQgYnkgTWFyayBEaWNraW5zb24gaW4gOmlzc3VlOmAyMzE4NWAuKQorCitBIG5ldyBmdW5jdGlvbiA6ZnVuYzpgfm1hdGguaXNjbG9zZWAgcHJvdmlkZXMgYSB3YXkgdG8gdGVzdCBmb3IgYXBwcm94aW1hdGUKK2VxdWFsaXR5LiAoQ29udHJpYnV0ZWQgYnkgQ2hyaXMgQmFya2VyIGFuZCBUYWwgRWluYXQgaW4gOmlzc3VlOmAyNDI3MGAuKQorCitBIG5ldyA6ZnVuYzpgfm1hdGguZ2NkYCBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZC4gIFRoZSA6ZnVuYzpgZnJhY3Rpb25zLmdjZGAKK2Z1bmN0aW9uIGlzIG5vdyBkZXByZWNhdGVkLiAoQ29udHJpYnV0ZWQgYnkgTWFyayBEaWNraW5zb24gYW5kIFNlcmhpeQorU3RvcmNoYWthIGluIDppc3N1ZTpgMjI0ODZgLikKKworCittdWx0aXByb2Nlc3NpbmcKKy0tLS0tLS0tLS0tLS0tLQorCis6ZnVuYzpgc2hhcmVkY3R5cGVzLnN5bmNocm9uaXplZCgpIDxtdWx0aXByb2Nlc3Npbmcuc2hhcmVkY3R5cGVzLnN5bmNocm9uaXplZD5gCitvYmplY3RzIG5vdyBzdXBwb3J0IHRoZSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCBwcm90b2NvbC4KKyhDb250cmlidXRlZCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkgaW4gOmlzc3VlOmAyMTU2NWAuKQorCisKK29wZXJhdG9yCistLS0tLS0tLQorCis6ZnVuYzpgfm9wZXJhdG9yLmF0dHJnZXR0ZXJgLCA6ZnVuYzpgfm9wZXJhdG9yLml0ZW1nZXR0ZXJgLAorYW5kIDpmdW5jOmB+b3BlcmF0b3IubWV0aG9kY2FsbGVyYCBvYmplY3RzIG5vdyBzdXBwb3J0IHBpY2tsaW5nLgorKENvbnRyaWJ1dGVkIGJ5IEpvc2ggUm9zZW5iZXJnIGFuZCBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjI5NTVgLikKKworTmV3IDpmdW5jOmB+b3BlcmF0b3IubWF0bXVsYCBhbmQgOmZ1bmM6YH5vcGVyYXRvci5pbWF0bXVsYCBmdW5jdGlvbnMKK3RvIHBlcmZvcm0gbWF0cml4IG11bHRpcGxpY2F0aW9uLgorKENvbnRyaWJ1dGVkIGJ5IEJlbmphbWluIFBldGVyc29uIGluIDppc3N1ZTpgMjExNzZgLikKKworCitvcworLS0KKworVGhlIG5ldyA6ZnVuYzpgfm9zLnNjYW5kaXJgIGZ1bmN0aW9uIHJldHVybmluZyBhbiBpdGVyYXRvciBvZgorOmNsYXNzOmB+b3MuRGlyRW50cnlgIG9iamVjdHMgaGFzIGJlZW4gYWRkZWQuICBJZiBwb3NzaWJsZSwgOmZ1bmM6YH5vcy5zY2FuZGlyYAorZXh0cmFjdHMgZmlsZSBhdHRyaWJ1dGVzIHdoaWxlIHNjYW5uaW5nIGEgZGlyZWN0b3J5LCByZW1vdmluZyB0aGUgbmVlZCB0bworcGVyZm9ybSBzdWJzZXF1ZW50IHN5c3RlbSBjYWxscyB0byBkZXRlcm1pbmUgZmlsZSB0eXBlIG9yIGF0dHJpYnV0ZXMsIHdoaWNoIG1heQorc2lnbmlmaWNhbnRseSBpbXByb3ZlIHBlcmZvcm1hbmNlLiAgKENvbnRyaWJ1dGVkIGJ5IEJlbiBIb3l0IHdpdGggdGhlIGhlbHAKK29mIFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjI1MjRgLikKKworT24gV2luZG93cywgYSBuZXcKKzphdHRyOmBzdGF0X3Jlc3VsdC5zdF9maWxlX2F0dHJpYnV0ZXMgPG9zLnN0YXRfcmVzdWx0LnN0X2ZpbGVfYXR0cmlidXRlcz5gCithdHRyaWJ1dGUgaXMgbm93IGF2YWlsYWJsZS4gIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSBgYGR3RmlsZUF0dHJpYnV0ZXNgYCBtZW1iZXIKK29mIHRoZSBgYEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OYGAgc3RydWN0dXJlIHJldHVybmVkIGJ5CitgYEdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKClgYC4gIChDb250cmlidXRlZCBieSBCZW4gSG95dCBpbiA6aXNzdWU6YDIxNzE5YC4pCisKK1RoZSA6ZnVuYzpgfm9zLnVyYW5kb21gIGZ1bmN0aW9uIG5vdyB1c2VzIHRoZSBgYGdldHJhbmRvbSgpYGAgc3lzY2FsbCBvbiBMaW51eCAzLjE3CitvciBuZXdlciwgYW5kIGBgZ2V0ZW50cm9weSgpYGAgb24gT3BlbkJTRCA1LjYgYW5kIG5ld2VyLCByZW1vdmluZyB0aGUgbmVlZCB0bwordXNlIGBgL2Rldi91cmFuZG9tYGAgYW5kIGF2b2lkaW5nIGZhaWx1cmVzIGR1ZSB0byBwb3RlbnRpYWwgZmlsZSBkZXNjcmlwdG9yCitleGhhdXN0aW9uLiAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjIxODFgLikKKworTmV3IDpmdW5jOmB+b3MuZ2V0X2Jsb2NraW5nYCBhbmQgOmZ1bmM6YH5vcy5zZXRfYmxvY2tpbmdgIGZ1bmN0aW9ucyBhbGxvdyB0bworZ2V0IGFuZCBzZXQgYSBmaWxlIGRlc2NyaXB0b3IncyBibG9ja2luZyBtb2RlICg6ZGF0YTpgfm9zLk9fTk9OQkxPQ0tgLikKKyhDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDIyMDU0YC4pCisKK1RoZSA6ZnVuYzpgfm9zLnRydW5jYXRlYCBhbmQgOmZ1bmM6YH5vcy5mdHJ1bmNhdGVgIGZ1bmN0aW9ucyBhcmUgbm93IHN1cHBvcnRlZAorb24gV2luZG93cy4gIChDb250cmlidXRlZCBieSBTdGV2ZSBEb3dlciBpbiA6aXNzdWU6YDIzNjY4YC4pCisKK1RoZXJlIGlzIGEgbmV3IDpmdW5jOmBvcy5wYXRoLmNvbW1vbnBhdGhgIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgbG9uZ2VzdAorY29tbW9uIHN1Yi1wYXRoIG9mIGVhY2ggcGFzc2VkIHBhdGhuYW1lLiAgVW5saWtlIHRoZQorOmZ1bmM6YG9zLnBhdGguY29tbW9ucHJlZml4YCBmdW5jdGlvbiwgaXQgYWx3YXlzIHJldHVybnMgYSB2YWxpZAorcGF0aDo6CisKKyAgICA+Pj4gb3MucGF0aC5jb21tb25wcmVmaXgoWycvdXNyL2xpYicsICcvdXNyL2xvY2FsL2xpYiddKQorICAgICcvdXNyL2wnCisKKyAgICA+Pj4gb3MucGF0aC5jb21tb25wYXRoKFsnL3Vzci9saWInLCAnL3Vzci9sb2NhbC9saWInXSkKKyAgICAnL3VzcicKKworKENvbnRyaWJ1dGVkIGJ5IFJhZmlrIERyYW91aSBhbmQgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDEwMzk1YC4pCisKKworcGF0aGxpYgorLS0tLS0tLQorCitUaGUgbmV3IDptZXRoOmBQYXRoLnNhbWVmaWxlKCkgPHBhdGhsaWIuUGF0aC5zYW1lZmlsZT5gIG1ldGhvZCBjYW4gYmUgdXNlZAordG8gY2hlY2sgd2hldGhlciB0aGUgcGF0aCBwb2ludHMgdG8gdGhlIHNhbWUgZmlsZSBhcyBhbm90aGVyIHBhdGgsIHdoaWNoIGNhbgorYmUgZWl0aGVyIGFub3RoZXIgOmNsYXNzOmB+cGF0aGxpYi5QYXRoYCBvYmplY3QsIG9yIGEgc3RyaW5nOjoKKworICAgID4+PiBpbXBvcnQgcGF0aGxpYgorICAgID4+PiBwMSA9IHBhdGhsaWIuUGF0aCgnL2V0Yy9ob3N0cycpCisgICAgPj4+IHAyID0gcGF0aGxpYi5QYXRoKCcvZXRjLy4uL2V0Yy9ob3N0cycpCisgICAgPj4+IHAxLnNhbWVmaWxlKHAyKQorICAgIFRydWUKKworKENvbnRyaWJ1dGVkIGJ5IFZhanJhc2t5IEtvayBhbmQgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmAxOTc3NWAuKQorCitUaGUgOm1ldGg6YFBhdGgubWtkaXIoKSA8cGF0aGxpYi5QYXRoLm1rZGlyPmAgbWV0aG9kIG5vdyBhY2NlcHRzIGEgbmV3IG9wdGlvbmFsCisqZXhpc3Rfb2sqIGFyZ3VtZW50IHRvIG1hdGNoIGBgbWtkaXIgLXBgYCBhbmQgOmZ1bmM6YG9zLm1ha2VkaXJzYAorZnVuY3Rpb25hbGl0eS4gIChDb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMjE1MzlgLikKKworVGhlcmUgaXMgYSBuZXcgOm1ldGg6YFBhdGguZXhwYW5kdXNlcigpIDxwYXRobGliLlBhdGguZXhwYW5kdXNlcj5gIG1ldGhvZCB0bworZXhwYW5kIGBgfmBgIGFuZCBgYH51c2VyYGAgcHJlZml4ZXMuICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBhbmQKK0NsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDE5Nzc2YC4pCisKK0EgbmV3IDptZXRoOmBQYXRoLmhvbWUoKSA8cGF0aGxpYi5QYXRoLmhvbWU+YCBjbGFzcyBtZXRob2QgY2FuIGJlIHVzZWQgdG8gZ2V0CithIDpjbGFzczpgfnBhdGhsaWIuUGF0aGAgaW5zdGFuY2UgcmVwcmVzZW50aW5nIHRoZSB1c2Vy4oCZcyBob21lCitkaXJlY3RvcnkuCisoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFNhbGdhZG8gYW5kIE1heWFuayBUcmlwYXRoaSBpbiA6aXNzdWU6YDE5Nzc3YC4pCisKK05ldyA6bWV0aDpgUGF0aC53cml0ZV90ZXh0KCkgPHBhdGhsaWIuUGF0aC53cml0ZV90ZXh0PmAsCis6bWV0aDpgUGF0aC5yZWFkX3RleHQoKSA8cGF0aGxpYi5QYXRoLnJlYWRfdGV4dD5gLAorOm1ldGg6YFBhdGgud3JpdGVfYnl0ZXMoKSA8cGF0aGxpYi5QYXRoLndyaXRlX2J5dGVzPmAsCis6bWV0aDpgUGF0aC5yZWFkX2J5dGVzKCkgPHBhdGhsaWIuUGF0aC5yZWFkX2J5dGVzPmAgbWV0aG9kcyB0byBzaW1wbGlmeQorcmVhZC93cml0ZSBvcGVyYXRpb25zIG9uIGZpbGVzLgorCitUaGUgZm9sbG93aW5nIGNvZGUgc25pcHBldCB3aWxsIGNyZWF0ZSBvciByZXdyaXRlIGV4aXN0aW5nIGZpbGUKK2Bgfi9zcGFtNDJgYDo6CisKKyAgICA+Pj4gaW1wb3J0IHBhdGhsaWIKKyAgICA+Pj4gcCA9IHBhdGhsaWIuUGF0aCgnfi9zcGFtNDInKQorICAgID4+PiBwLmV4cGFuZHVzZXIoKS53cml0ZV90ZXh0KCdoYW0nKQorICAgIDMKKworKENvbnRyaWJ1dGVkIGJ5IENocmlzdG9waGVyIFdlbGJvcm4gaW4gOmlzc3VlOmAyMDIxOGAuKQorCisKK3BpY2tsZQorLS0tLS0tCisKK05lc3RlZCBvYmplY3RzLCBzdWNoIGFzIHVuYm91bmQgbWV0aG9kcyBvciBuZXN0ZWQgY2xhc3NlcywgY2FuIG5vdyBiZSBwaWNrbGVkCit1c2luZyA6cmVmOmBwaWNrbGUgcHJvdG9jb2xzIDxwaWNrbGUtcHJvdG9jb2xzPmAgb2xkZXIgdGhhbiBwcm90b2NvbCB2ZXJzaW9uIDQuCitQcm90b2NvbCB2ZXJzaW9uIDQgYWxyZWFkeSBzdXBwb3J0cyB0aGVzZSBjYXNlcy4gIChDb250cmlidXRlZCBieSBTZXJoaXkKK1N0b3JjaGFrYSBpbiA6aXNzdWU6YDIzNjExYC4pCisKKworcG9wbGliCistLS0tLS0KKworQSBuZXcgOm1ldGg6YFBPUDMudXRmOCgpIDxwb3BsaWIuUE9QMy51dGY4PmAgY29tbWFuZCBlbmFibGVzIDpyZmM6YDY4NTZgCisoSW50ZXJuYXRpb25hbGl6ZWQgRW1haWwpIHN1cHBvcnQsIGlmIGEgUE9QIHNlcnZlciBzdXBwb3J0cyBpdC4KKyhDb250cmlidXRlZCBieSBNaWxhbiBPYmVyS2lyY2ggaW4gOmlzc3VlOmAyMTgwNGAuKQorCisKK3JlCistLQorCitSZWZlcmVuY2VzIGFuZCBjb25kaXRpb25hbCByZWZlcmVuY2VzIHRvIGdyb3VwcyB3aXRoIGZpeGVkIGxlbmd0aCBhcmUgbm93CithbGxvd2VkIGluIGxvb2tiZWhpbmQgYXNzZXJ0aW9uczo6CisKKyAgICA+Pj4gaW1wb3J0IHJlCisgICAgPj4+IHBhdCA9IHJlLmNvbXBpbGUocicoYXxiKS4oPzw9XDEpYycpCisgICAgPj4+IHBhdC5tYXRjaCgnYWFjJykKKyAgICA8X3NyZS5TUkVfTWF0Y2ggb2JqZWN0OyBzcGFuPSgwLCAzKSwgbWF0Y2g9J2FhYyc+CisgICAgPj4+IHBhdC5tYXRjaCgnYmJjJykKKyAgICA8X3NyZS5TUkVfTWF0Y2ggb2JqZWN0OyBzcGFuPSgwLCAzKSwgbWF0Y2g9J2JiYyc+CisKKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgOTE3OWAuKQorCitUaGUgbnVtYmVyIG9mIGNhcHR1cmluZyBncm91cHMgaW4gcmVndWxhciBleHByZXNzaW9ucyBpcyBubyBsb25nZXIgbGltaXRlZCB0bworMTAwLiAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMjQzN2AuKQorCitUaGUgOmZ1bmM6YH5yZS5zdWJgIGFuZCA6ZnVuYzpgfnJlLnN1Ym5gIGZ1bmN0aW9ucyBub3cgcmVwbGFjZSB1bm1hdGNoZWQKK2dyb3VwcyB3aXRoIGVtcHR5IHN0cmluZ3MgaW5zdGVhZCBvZiByYWlzaW5nIGFuIGV4Y2VwdGlvbi4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTUxOTYzOGAuKQorCitUaGUgOmNsYXNzOmByZS5lcnJvcmAgZXhjZXB0aW9ucyBoYXZlIG5ldyBhdHRyaWJ1dGVzLAorOmF0dHI6YH5yZS5lcnJvci5tc2dgLCA6YXR0cjpgfnJlLmVycm9yLnBhdHRlcm5gLAorOmF0dHI6YH5yZS5lcnJvci5wb3NgLCA6YXR0cjpgfnJlLmVycm9yLmxpbmVub2AsCithbmQgOmF0dHI6YH5yZS5lcnJvci5jb2xub2AsIHRoYXQgcHJvdmlkZSBiZXR0ZXIgY29udGV4dAoraW5mb3JtYXRpb24gYWJvdXQgdGhlIGVycm9yOjoKKworICAgID4+PiByZS5jb21waWxlKCIiIgorICAgIC4uLiAgICAgKD94KQorICAgIC4uLiAgICAgLisrCisgICAgLi4uICIiIikKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgLi4uCisgICAgc3JlX2NvbnN0YW50cy5lcnJvcjogbXVsdGlwbGUgcmVwZWF0IGF0IHBvc2l0aW9uIDE2IChsaW5lIDMsIGNvbHVtbiA3KQorCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIyNTc4YC4pCisKKworcmVhZGxpbmUKKy0tLS0tLS0tCisKK0EgbmV3IDpmdW5jOmB+cmVhZGxpbmUuYXBwZW5kX2hpc3RvcnlfZmlsZWAgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gYXBwZW5kCit0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB0cmFpbGluZyBlbGVtZW50cyBpbiBoaXN0b3J5IHRvIHRoZSBnaXZlbiBmaWxlLgorKENvbnRyaWJ1dGVkIGJ5IEJydW5vIENhdWV0IGluIDppc3N1ZTpgMjI5NDBgLikKKworCitzZWxlY3RvcnMKKy0tLS0tLS0tLQorCitUaGUgbmV3IDpjbGFzczpgfnNlbGVjdG9ycy5EZXZwb2xsU2VsZWN0b3JgIHN1cHBvcnRzIGVmZmljaWVudAorYGAvZGV2L3BvbGxgYCBwb2xsaW5nIG9uIFNvbGFyaXMuCisoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sYScgaW4gOmlzc3VlOmAxODkzMWAuKQorCisKK3NodXRpbAorLS0tLS0tCisKK1RoZSA6ZnVuYzpgfnNodXRpbC5tb3ZlYCBmdW5jdGlvbiBub3cgYWNjZXB0cyBhICpjb3B5X2Z1bmN0aW9uKiBhcmd1bWVudCwKK2FsbG93aW5nLCBmb3IgZXhhbXBsZSwgdGhlIDpmdW5jOmB+c2h1dGlsLmNvcHlgIGZ1bmN0aW9uIHRvIGJlIHVzZWQgaW5zdGVhZCBvZgordGhlIGRlZmF1bHQgOmZ1bmM6YH5zaHV0aWwuY29weTJgIGlmIHRoZXJlIGlzIGEgbmVlZCB0byBpZ25vcmUgZmlsZSBtZXRhZGF0YQord2hlbiBtb3ZpbmcuCisoQ29udHJpYnV0ZWQgYnkgQ2xhdWRpdSBQb3BhIGluIDppc3N1ZTpgMTk4NDBgLikKKworVGhlIDpmdW5jOmB+c2h1dGlsLm1ha2VfYXJjaGl2ZWAgZnVuY3Rpb24gbm93IHN1cHBvcnRzIHRoZSAqeHp0YXIqIGZvcm1hdC4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgNTQxMWAuKQorCisKK3NpZ25hbAorLS0tLS0tCisKK09uIFdpbmRvd3MsIHRoZSA6ZnVuYzpgfnNpZ25hbC5zZXRfd2FrZXVwX2ZkYCBmdW5jdGlvbiBub3cgYWxzbyBzdXBwb3J0cworc29ja2V0IGhhbmRsZXMuICAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMjAxOGAuKQorCitWYXJpb3VzIGBgU0lHKmBgIGNvbnN0YW50cyBpbiB0aGUgOm1vZDpgc2lnbmFsYCBtb2R1bGUgaGF2ZSBiZWVuIGNvbnZlcnRlZCBpbnRvCis6bW9kOmBFbnVtcyA8ZW51bT5gLiAgVGhpcyBhbGxvd3MgbWVhbmluZ2Z1bCBuYW1lcyB0byBiZSBwcmludGVkCitkdXJpbmcgZGVidWdnaW5nLCBpbnN0ZWFkIG9mIGludGVnZXIgIm1hZ2ljIG51bWJlcnMiLgorKENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbGEnIGluIDppc3N1ZTpgMjEwNzZgLikKKworCitzbXRwZAorLS0tLS0KKworQm90aCB0aGUgOmNsYXNzOmB+c210cGQuU01UUFNlcnZlcmAgYW5kIDpjbGFzczpgfnNtdHBkLlNNVFBDaGFubmVsYCBjbGFzc2VzIG5vdworYWNjZXB0IGEgKmRlY29kZV9kYXRhKiBrZXl3b3JkIGFyZ3VtZW50IHRvIGRldGVybWluZSBpZiB0aGUgYGBEQVRBYGAgcG9ydGlvbiBvZgordGhlIFNNVFAgdHJhbnNhY3Rpb24gaXMgZGVjb2RlZCB1c2luZyB0aGUgYGAidXRmLTgiYGAgY29kZWMgb3IgaXMgaW5zdGVhZAorcHJvdmlkZWQgdG8gdGhlCis6bWV0aDpgU01UUFNlcnZlci5wcm9jZXNzX21lc3NhZ2UoKSA8c210cGQuU01UUFNlcnZlci5wcm9jZXNzX21lc3NhZ2U+YAorbWV0aG9kIGFzIGEgYnl0ZSBzdHJpbmcuICBUaGUgZGVmYXVsdCBpcyBgYFRydWVgYCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQorcmVhc29ucywgYnV0IHdpbGwgY2hhbmdlIHRvIGBgRmFsc2VgYCBpbiBQeXRob24gMy42LiAgSWYgKmRlY29kZV9kYXRhKiBpcyBzZXQKK3RvIGBgRmFsc2VgYCwgdGhlIGBgcHJvY2Vzc19tZXNzYWdlYGAgbWV0aG9kIG11c3QgYmUgcHJlcGFyZWQgdG8gYWNjZXB0IGtleXdvcmQKK2FyZ3VtZW50cy4KKyhDb250cmlidXRlZCBieSBNYWNpZWogU3p1bGlrIGluIDppc3N1ZTpgMTk2NjJgLikKKworVGhlIDpjbGFzczpgfnNtdHBkLlNNVFBTZXJ2ZXJgIGNsYXNzIG5vdyBhZHZlcnRpc2VzIHRoZSBgYDhCSVRNSU1FYGAgZXh0ZW5zaW9uCisoOnJmYzpgNjE1MmApIGlmICpkZWNvZGVfZGF0YSogaGFzIGJlZW4gc2V0IGBgVHJ1ZWBgLiAgSWYgdGhlIGNsaWVudAorc3BlY2lmaWVzIGBgQk9EWT04QklUTUlNRWBgIG9uIHRoZSBgYE1BSUxgYCBjb21tYW5kLCBpdCBpcyBwYXNzZWQgdG8KKzptZXRoOmBTTVRQU2VydmVyLnByb2Nlc3NfbWVzc2FnZSgpIDxzbXRwZC5TTVRQU2VydmVyLnByb2Nlc3NfbWVzc2FnZT5gCit2aWEgdGhlICptYWlsX29wdGlvbnMqIGtleXdvcmQuCisoQ29udHJpYnV0ZWQgYnkgTWlsYW4gT2JlcmtpcmNoIGFuZCBSLiAgRGF2aWQgTXVycmF5IGluIDppc3N1ZTpgMjE3OTVgLikKKworVGhlIDpjbGFzczpgfnNtdHBkLlNNVFBTZXJ2ZXJgIGNsYXNzIG5vdyBhbHNvIHN1cHBvcnRzIHRoZSBgYFNNVFBVVEY4YGAKK2V4dGVuc2lvbiAoOnJmYzpgNjUzMWA6IEludGVybmF0aW9uYWxpemVkIEVtYWlsKS4gIElmIHRoZSBjbGllbnQgc3BlY2lmaWVkCitgYFNNVFBVVEY4IEJPRFk9OEJJVE1JTUVgYCBvbiB0aGUgYGBNQUlMYGAgY29tbWFuZCwgdGhleSBhcmUgcGFzc2VkIHRvCis6bWV0aDpgU01UUFNlcnZlci5wcm9jZXNzX21lc3NhZ2UoKSA8c210cGQuU01UUFNlcnZlci5wcm9jZXNzX21lc3NhZ2U+YAordmlhIHRoZSAqbWFpbF9vcHRpb25zKiBrZXl3b3JkLiAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZQorYGBwcm9jZXNzX21lc3NhZ2VgYCBtZXRob2QgdG8gY29ycmVjdGx5IGhhbmRsZSB0aGUgYGBTTVRQVVRGOGBgIGRhdGEuCisoQ29udHJpYnV0ZWQgYnkgTWlsYW4gT2JlcmtpcmNoIGluIDppc3N1ZTpgMjE3MjVgLikKKworSXQgaXMgbm93IHBvc3NpYmxlIHRvIHByb3ZpZGUsIGRpcmVjdGx5IG9yIHZpYSBuYW1lIHJlc29sdXRpb24sIElQdjYKK2FkZHJlc3NlcyBpbiB0aGUgOmNsYXNzOmB+c210cGQuU01UUFNlcnZlcmAgY29uc3RydWN0b3IsIGFuZCBoYXZlIGl0CitzdWNjZXNzZnVsbHkgY29ubmVjdC4gIChDb250cmlidXRlZCBieSBNaWxhbiBPYmVya2lyY2ggaW4gOmlzc3VlOmAxNDc1OGAuKQorCisKK3NtdHBsaWIKKy0tLS0tLS0KKworQSBuZXcgOm1ldGg6YFNNVFAuYXV0aCgpIDxzbXRwbGliLlNNVFAuYXV0aD5gIG1ldGhvZCBwcm92aWRlcyBhIGNvbnZlbmllbnQgd2F5IHRvCitpbXBsZW1lbnQgY3VzdG9tIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbXMuIChDb250cmlidXRlZCBieSBNaWxhbgorT2JlcmtpcmNoIGluIDppc3N1ZTpgMTUwMTRgLikKKworVGhlIDptZXRoOmBTTVRQLnNldF9kZWJ1Z2xldmVsKCkgPHNtdHBsaWIuU01UUC5zZXRfZGVidWdsZXZlbD5gIG1ldGhvZCBub3cKK2FjY2VwdHMgYW4gYWRkaXRpb25hbCBkZWJ1Z2xldmVsICgyKSwgd2hpY2ggZW5hYmxlcyB0aW1lc3RhbXBzIGluIGRlYnVnCittZXNzYWdlcy4gKENvbnRyaWJ1dGVkIGJ5IEdhdmluIENoYXBwZWxsIGFuZCBNYWNpZWogU3p1bGlrIGluIDppc3N1ZTpgMTY5MTRgLikKKworQm90aCB0aGUgOm1ldGg6YFNNVFAuc2VuZG1haWwoKSA8c210cGxpYi5TTVRQLnNlbmRtYWlsPmAgYW5kCis6bWV0aDpgU01UUC5zZW5kX21lc3NhZ2UoKSA8c210cGxpYi5TTVRQLnNlbmRfbWVzc2FnZT5gIG1ldGhvZHMgbm93CitzdXBwb3J0IHN1cHBvcnQgOnJmYzpgNjUzMWAgKFNNVFBVVEY4KS4KKyhDb250cmlidXRlZCBieSBNaWxhbiBPYmVya2lyY2ggYW5kIFIuIERhdmlkIE11cnJheSBpbiA6aXNzdWU6YDIyMDI3YC4pCisKKworc25kaGRyCistLS0tLS0KKworVGhlIDpmdW5jOmB+c25kaGRyLndoYXRgIGFuZCA6ZnVuYzpgfnNuZGhkci53aGF0aGRyYCBmdW5jdGlvbnMgIG5vdyByZXR1cm4KK2EgOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYC4gIChDb250cmlidXRlZCBieSBDbGF1ZGl1IFBvcGEgaW4KKzppc3N1ZTpgMTg2MTVgLikKKworCitzb2NrZXQKKy0tLS0tLQorCitGdW5jdGlvbnMgd2l0aCB0aW1lb3V0cyBub3cgdXNlIGEgbW9ub3RvbmljIGNsb2NrLCBpbnN0ZWFkIG9mIGEgc3lzdGVtIGNsb2NrLgorKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjIwNDNgLikKKworQSBuZXcgOm1ldGg6YHNvY2tldC5zZW5kZmlsZSgpIDxzb2NrZXQuc29ja2V0LnNlbmRmaWxlPmAgbWV0aG9kIGFsbG93cyB0bworc2VuZCBhIGZpbGUgb3ZlciBhIHNvY2tldCBieSB1c2luZyB0aGUgaGlnaC1wZXJmb3JtYW5jZSA6ZnVuYzpgb3Muc2VuZGZpbGVgCitmdW5jdGlvbiBvbiBVTklYLCByZXN1bHRpbmcgaW4gdXBsb2FkcyBiZWluZyBmcm9tIDIgdG8gMyB0aW1lcyBmYXN0ZXIgdGhhbiB3aGVuCit1c2luZyBwbGFpbiA6bWV0aDpgc29ja2V0LnNlbmQoKSA8c29ja2V0LnNvY2tldC5zZW5kPmAuCisoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sYScgaW4gOmlzc3VlOmAxNzU1MmAuKQorCitUaGUgOm1ldGg6YHNvY2tldC5zZW5kYWxsKCkgPHNvY2tldC5zb2NrZXQuc2VuZGFsbD5gIG1ldGhvZCBubyBsb25nZXIgcmVzZXRzIHRoZQorc29ja2V0IHRpbWVvdXQgZXZlcnkgdGltZSBieXRlcyBhcmUgcmVjZWl2ZWQgb3Igc2VudC4gIFRoZSBzb2NrZXQgdGltZW91dCBpcworbm93IHRoZSBtYXhpbXVtIHRvdGFsIGR1cmF0aW9uIHRvIHNlbmQgYWxsIGRhdGEuCisoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMzg1M2AuKQorCitUaGUgKmJhY2tsb2cqIGFyZ3VtZW50IG9mIHRoZSA6bWV0aDpgc29ja2V0Lmxpc3RlbigpIDxzb2NrZXQuc29ja2V0Lmxpc3Rlbj5gCittZXRob2QgaXMgbm93IG9wdGlvbmFsLiAgQnkgZGVmYXVsdCBpdCBpcyBzZXQgdG8KKzpkYXRhOmBTT01BWENPTk4gPHNvY2tldC5TT01BWENPTk4+YCBvciB0byBgYDEyOGBgLCB3aGljaGV2ZXIgaXMgbGVzcy4KKyhDb250cmlidXRlZCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkgaW4gOmlzc3VlOmAyMTQ1NWAuKQorCisKK3NzbAorLS0tCisKKy4uIF93aGF0c25ldy1zc2xtZW1vcnliaW86CisKK01lbW9yeSBCSU8gU3VwcG9ydAorfn5+fn5+fn5+fn5+fn5+fn5+CisKKyhDb250cmlidXRlZCBieSBHZWVydCBKYW5zZW4gaW4gOmlzc3VlOmAyMTk2NWAuKQorCitUaGUgbmV3IDpjbGFzczpgfnNzbC5TU0xPYmplY3RgIGNsYXNzIGhhcyBiZWVuIGFkZGVkIHRvIHByb3ZpZGUgU1NMIHByb3RvY29sCitzdXBwb3J0IGZvciBjYXNlcyB3aGVuIHRoZSBuZXR3b3JrIEkvTyBjYXBhYmlsaXRpZXMgb2YgOmNsYXNzOmB+c3NsLlNTTFNvY2tldGAKK2FyZSBub3QgbmVjZXNzYXJ5IG9yIGFyZSBzdWJvcHRpbWFsLiAgYGBTU0xPYmplY3RgYCByZXByZXNlbnRzCithbiBTU0wgcHJvdG9jb2wgaW5zdGFuY2UsIGJ1dCBkb2VzIG5vdCBpbXBsZW1lbnQgYW55IG5ldHdvcmsgSS9PIG1ldGhvZHMsIGFuZAoraW5zdGVhZCBwcm92aWRlcyBhIG1lbW9yeSBidWZmZXIgaW50ZXJmYWNlLiAgVGhlIG5ldyA6Y2xhc3M6YH5zc2wuTWVtb3J5QklPYAorY2xhc3MgY2FuIGJlIHVzZWQgdG8gcGFzcyBkYXRhIGJldHdlZW4gUHl0aG9uIGFuZCBhbiBTU0wgcHJvdG9jb2wgaW5zdGFuY2UuCisKK1RoZSBtZW1vcnkgQklPIFNTTCBzdXBwb3J0IGlzIHByaW1hcmlseSBpbnRlbmRlZCB0byBiZSB1c2VkIGluIGZyYW1ld29ya3MKK2ltcGxlbWVudGluZyBhc3luY2hyb25vdXMgSS9PIGZvciB3aGljaCA6Y2xhc3M6YH5zc2wuU1NMU29ja2V0YCdzIHJlYWRpbmVzcworbW9kZWwgKCJzZWxlY3QvcG9sbCIpIGlzIGluZWZmaWNpZW50LgorCitBIG5ldyA6bWV0aDpgU1NMQ29udGV4dC53cmFwX2JpbygpIDxzc2wuU1NMQ29udGV4dC53cmFwX2Jpbz5gIG1ldGhvZCBjYW4gYmUgdXNlZAordG8gY3JlYXRlIGEgbmV3IGBgU1NMT2JqZWN0YGAgaW5zdGFuY2UuCisKKworQXBwbGljYXRpb24tTGF5ZXIgUHJvdG9jb2wgTmVnb3RpYXRpb24gU3VwcG9ydAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisoQ29udHJpYnV0ZWQgYnkgQmVuamFtaW4gUGV0ZXJzb24gaW4gOmlzc3VlOmAyMDE4OGAuKQorCitXaGVyZSBPcGVuU1NMIHN1cHBvcnQgaXMgcHJlc2VudCwgdGhlIDptb2Q6YHNzbGAgbW9kdWxlIG5vdyBpbXBsZW1lbnRzCit0aGUgKkFwcGxpY2F0aW9uLUxheWVyIFByb3RvY29sIE5lZ290aWF0aW9uKiBUTFMgZXh0ZW5zaW9uIGFzIGRlc2NyaWJlZAoraW4gOnJmYzpgNzMwMWAuCisKK1RoZSBuZXcgOm1ldGg6YFNTTENvbnRleHQuc2V0X2FscG5fcHJvdG9jb2xzKCkgPHNzbC5TU0xDb250ZXh0LnNldF9hbHBuX3Byb3RvY29scz5gCitjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHByb3RvY29scyBhIHNvY2tldCBzaG91bGQgYWR2ZXJ0aXNlIGR1cmluZwordGhlIFRMUyBoYW5kc2hha2UuCisKK1RoZSBuZXcKKzptZXRoOmBTU0xTb2NrZXQuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbCgpIDxzc2wuU1NMU29ja2V0LnNlbGVjdGVkX2FscG5fcHJvdG9jb2w+YAorcmV0dXJucyB0aGUgcHJvdG9jb2wgdGhhdCB3YXMgc2VsZWN0ZWQgZHVyaW5nIHRoZSBUTFMgaGFuZHNoYWtlLgorVGhlIDpkYXRhOmB+c3NsLkhBU19BTFBOYCBmbGFnIGluZGljYXRlcyB3aGV0aGVyIEFMUE4gc3VwcG9ydCBpcyBwcmVzZW50LgorCisKK090aGVyIENoYW5nZXMKK35+fn5+fn5+fn5+fn4KKworVGhlcmUgaXMgYSBuZXcgOm1ldGg6YFNTTFNvY2tldC52ZXJzaW9uKCkgPHNzbC5TU0xTb2NrZXQudmVyc2lvbj5gIG1ldGhvZCB0bworcXVlcnkgdGhlIGFjdHVhbCBwcm90b2NvbCB2ZXJzaW9uIGluIHVzZS4KKyhDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDIwNDIxYC4pCisKK1RoZSA6Y2xhc3M6YH5zc2wuU1NMU29ja2V0YCBjbGFzcyBub3cgaW1wbGVtZW50cworYSA6bWV0aDpgU1NMU29ja2V0LnNlbmRmaWxlKCkgPHNzbC5TU0xTb2NrZXQuc2VuZGZpbGU+YCBtZXRob2QuCisoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sYScgaW4gOmlzc3VlOmAxNzU1MmAuKQorCitUaGUgOm1ldGg6YFNTTFNvY2tldC5zZW5kKCkgPHNzbC5TU0xTb2NrZXQuc2VuZD5gIG1ldGhvZCBub3cgcmFpc2VzIGVpdGhlcgordGhlIDpleGM6YHNzbC5TU0xXYW50UmVhZEVycm9yYCBvciA6ZXhjOmBzc2wuU1NMV2FudFdyaXRlRXJyb3JgIGV4Y2VwdGlvbiBvbiBhCitub24tYmxvY2tpbmcgc29ja2V0IGlmIHRoZSBvcGVyYXRpb24gd291bGQgYmxvY2suIFByZXZpb3VzbHksIGl0IHdvdWxkIHJldHVybgorYGAwYGAuICAoQ29udHJpYnV0ZWQgYnkgTmlrb2xhdXMgUmF0aCBpbiA6aXNzdWU6YDIwOTUxYC4pCisKK1RoZSA6ZnVuYzpgfnNzbC5jZXJ0X3RpbWVfdG9fc2Vjb25kc2AgZnVuY3Rpb24gbm93IGludGVycHJldHMgdGhlIGlucHV0IHRpbWUKK2FzIFVUQyBhbmQgbm90IGFzIGxvY2FsIHRpbWUsIHBlciA6cmZjOmA1MjgwYC4gIEFkZGl0aW9uYWxseSwgdGhlIHJldHVybgordmFsdWUgaXMgYWx3YXlzIGFuIDpjbGFzczpgaW50YC4gKENvbnRyaWJ1dGVkIGJ5IEFraXJhIExpIGluIDppc3N1ZTpgMTk5NDBgLikKKworTmV3IDptZXRoOmBTU0xPYmplY3Quc2hhcmVkX2NpcGhlcnMoKSA8c3NsLlNTTE9iamVjdC5zaGFyZWRfY2lwaGVycz5gIGFuZAorOm1ldGg6YFNTTFNvY2tldC5zaGFyZWRfY2lwaGVycygpIDxzc2wuU1NMU29ja2V0LnNoYXJlZF9jaXBoZXJzPmAgbWV0aG9kcyByZXR1cm4KK3RoZSBsaXN0IG9mIGNpcGhlcnMgc2VudCBieSB0aGUgY2xpZW50IGR1cmluZyB0aGUgaGFuZHNoYWtlLgorKENvbnRyaWJ1dGVkIGJ5IEJlbmphbWluIFBldGVyc29uIGluIDppc3N1ZTpgMjMxODZgLikKKworVGhlIDptZXRoOmBTU0xTb2NrZXQuZG9faGFuZHNoYWtlKCkgPHNzbC5TU0xTb2NrZXQuZG9faGFuZHNoYWtlPmAsCis6bWV0aDpgU1NMU29ja2V0LnJlYWQoKSA8c3NsLlNTTFNvY2tldC5yZWFkPmAsCis6bWV0aDpgU1NMU29ja2V0LnNodXRkb3duKCkgPHNzbC5TU0xTb2NrZXQuc2h1dGRvd24+YCwgYW5kCis6bWV0aDpgU1NMU29ja2V0LndyaXRlKCkgPHNzbC5TU0xTb2NrZXQud3JpdGU+YCBtZXRob2RzIG9mIHRoZSA6Y2xhc3M6YH5zc2wuU1NMU29ja2V0YAorY2xhc3Mgbm8gbG9uZ2VyIHJlc2V0IHRoZSBzb2NrZXQgdGltZW91dCBldmVyeSB0aW1lIGJ5dGVzIGFyZSByZWNlaXZlZCBvciBzZW50LgorVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0aGUgbWF4aW11bSB0b3RhbCBkdXJhdGlvbiBvZiB0aGUgbWV0aG9kLgorKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjM4NTNgLikKKworVGhlIDpmdW5jOmB+c3NsLm1hdGNoX2hvc3RuYW1lYCBmdW5jdGlvbiBub3cgc3VwcG9ydHMgbWF0Y2hpbmcgb2YgSVAgYWRkcmVzc2VzLgorKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMjMyMzlgLikKKworCitzcWxpdGUzCistLS0tLS0tCisKK1RoZSA6Y2xhc3M6YH5zcWxpdGUzLlJvd2AgY2xhc3Mgbm93IGZ1bGx5IHN1cHBvcnRzIHRoZSBzZXF1ZW5jZSBwcm90b2NvbCwKK2luIHBhcnRpY3VsYXIgOmZ1bmM6YHJldmVyc2VkYCBpdGVyYXRpb24gYW5kIHNsaWNlIGluZGV4aW5nLgorKENvbnRyaWJ1dGVkIGJ5IENsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDEwMjAzYDsgYnkgTHVjYXMgU2luY2xhaXIsCitKZXNzaWNhIE1jS2VsbGFyLCBhbmQgIFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxMzU4M2AuKQorCisKKy4uIF93aGF0c25ldy1zdWJwcm9jZXNzOgorCitzdWJwcm9jZXNzCistLS0tLS0tLS0tCisKK1RoZSBuZXcgOmZ1bmM6YH5zdWJwcm9jZXNzLnJ1bmAgZnVuY3Rpb24gaGFzIGJlZW4gYWRkZWQuCitJdCBydW5zIHRoZSBzcGVjaWZpZWQgY29tbWFuZCBhbmQgcmV0dXJucyBhCis6Y2xhc3M6YH5zdWJwcm9jZXNzLkNvbXBsZXRlZFByb2Nlc3NgIG9iamVjdCwgd2hpY2ggZGVzY3JpYmVzIGEgZmluaXNoZWQKK3Byb2Nlc3MuICBUaGUgbmV3IEFQSSBpcyBtb3JlIGNvbnNpc3RlbnQgYW5kIGlzIHRoZSByZWNvbW1lbmRlZCBhcHByb2FjaAordG8gaW52b2tpbmcgc3VicHJvY2Vzc2VzIGluIFB5dGhvbiBjb2RlIHRoYXQgZG9lcyBub3QgbmVlZCB0byBtYWludGFpbgorY29tcGF0aWJpbGl0eSB3aXRoIGVhcmxpZXIgUHl0aG9uIHZlcnNpb25zLgorKENvbnRyaWJ1dGVkIGJ5IFRob21hcyBLbHV5dmVyIGluIDppc3N1ZTpgMjMzNDJgLikKKworRXhhbXBsZXM6OgorCisgICAgPj4+IHN1YnByb2Nlc3MucnVuKFsibHMiLCAiLWwiXSkgICMgZG9lc24ndCBjYXB0dXJlIG91dHB1dAorICAgIENvbXBsZXRlZFByb2Nlc3MoYXJncz1bJ2xzJywgJy1sJ10sIHJldHVybmNvZGU9MCkKKworICAgID4+PiBzdWJwcm9jZXNzLnJ1bigiZXhpdCAxIiwgc2hlbGw9VHJ1ZSwgY2hlY2s9VHJ1ZSkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjogQ29tbWFuZCAnZXhpdCAxJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAxCisKKyAgICA+Pj4gc3VicHJvY2Vzcy5ydW4oWyJscyIsICItbCIsICIvZGV2L251bGwiXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICBDb21wbGV0ZWRQcm9jZXNzKGFyZ3M9WydscycsICctbCcsICcvZGV2L251bGwnXSwgcmV0dXJuY29kZT0wLAorICAgIHN0ZG91dD1iJ2Nydy1ydy1ydy0gMSByb290IHJvb3QgMSwgMyBKYW4gMjMgMTY6MjMgL2Rldi9udWxsXG4nKQorCisKK3N5cworLS0tCisKK0EgbmV3IDpmdW5jOmB+c3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlcmAgZnVuY3Rpb24gYWxsb3dzIHNldHRpbmcgYSBnbG9iYWwKK2hvb2sgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBhIDp0ZXJtOmBjb3JvdXRpbmUgb2JqZWN0IDxjb3JvdXRpbmU+YAoraXMgY3JlYXRlZCBieSBhbiA6a2V5d29yZDpgYXN5bmMgZGVmYCBmdW5jdGlvbi4gIEEgY29ycmVzcG9uZGluZworOmZ1bmM6YH5zeXMuZ2V0X2Nvcm91dGluZV93cmFwcGVyYCBjYW4gYmUgdXNlZCB0byBvYnRhaW4gYSBjdXJyZW50bHkgc2V0Cit3cmFwcGVyLiAgQm90aCBmdW5jdGlvbnMgYXJlIDp0ZXJtOmBwcm92aXNpb25hbCA8cHJvdmlzaW9uYWwgYXBpPmAsCithbmQgYXJlIGludGVuZGVkIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMgb25seS4gIChDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdgoraW4gOmlzc3VlOmAyNDAxN2AuKQorCitBIG5ldyA6ZnVuYzpgfnN5cy5pc19maW5hbGl6aW5nYCBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgUHl0aG9uCitpbnRlcnByZXRlciBpcyA6dGVybTpgc2h1dHRpbmcgZG93biA8aW50ZXJwcmV0ZXIgc2h1dGRvd24+YC4KKyhDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDIyNjk2YC4pCisKKworc3lzY29uZmlnCistLS0tLS0tLS0KKworVGhlIG5hbWUgb2YgdGhlIHVzZXIgc2NyaXB0cyBkaXJlY3Rvcnkgb24gV2luZG93cyBub3cgaW5jbHVkZXMgdGhlIGZpcnN0Cit0d28gY29tcG9uZW50cyBvZiB0aGUgUHl0aG9uIHZlcnNpb24uIChDb250cmlidXRlZCBieSBQYXVsIE1vb3JlCitpbiA6aXNzdWU6YDIzNDM3YC4pCisKKwordGFyZmlsZQorLS0tLS0tLQorCitUaGUgKm1vZGUqIGFyZ3VtZW50IG9mIHRoZSA6ZnVuYzpgfnRhcmZpbGUub3BlbmAgZnVuY3Rpb24gbm93IGFjY2VwdHMgYGAieCJgYAordG8gcmVxdWVzdCBleGNsdXNpdmUgY3JlYXRpb24uICAoQ29udHJpYnV0ZWQgYnkgQmVya2VyIFBla3NhZyBpbiA6aXNzdWU6YDIxNzE3YC4pCisKK1RoZSA6bWV0aDpgVGFyRmlsZS5leHRyYWN0YWxsKCkgPHRhcmZpbGUuVGFyRmlsZS5leHRyYWN0YWxsPmAgYW5kCis6bWV0aDpgVGFyRmlsZS5leHRyYWN0KCkgPHRhcmZpbGUuVGFyRmlsZS5leHRyYWN0PmAgbWV0aG9kcyBub3cgdGFrZSBhIGtleXdvcmQKK2FyZ3VtZW50ICpudW1lcmljX29ubHkqLiAgSWYgc2V0IHRvIGBgVHJ1ZWBgLCB0aGUgZXh0cmFjdGVkIGZpbGVzIGFuZAorZGlyZWN0b3JpZXMgd2lsbCBiZSBvd25lZCBieSB0aGUgbnVtZXJpYyBgYHVpZGBgIGFuZCBgYGdpZGBgIGZyb20gdGhlIHRhcmZpbGUuCitJZiBzZXQgdG8gYGBGYWxzZWBgICh0aGUgZGVmYXVsdCwgYW5kIHRoZSBiZWhhdmlvciBpbiB2ZXJzaW9ucyBwcmlvciB0byAzLjUpLAordGhleSB3aWxsIGJlIG93bmVkIGJ5IHRoZSBuYW1lZCB1c2VyIGFuZCBncm91cCBpbiB0aGUgdGFyZmlsZS4KKyhDb250cmlidXRlZCBieSBNaWNoYWVsIFZvZ3QgYW5kIEVyaWMgU21pdGggaW4gOmlzc3VlOmAyMzE5M2AuKQorCitUaGUgOm1ldGg6YFRhckZpbGUubGlzdCgpIDx0YXJmaWxlLlRhckZpbGUubGlzdD5gIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsCisqbWVtYmVycyoga2V5d29yZCBhcmd1bWVudCB0aGF0IGNhbiBiZSBzZXQgdG8gYSBzdWJzZXQgb2YgdGhlIGxpc3QgcmV0dXJuZWQKK2J5IDptZXRoOmBUYXJGaWxlLmdldG1lbWJlcnMoKSA8dGFyZmlsZS5UYXJGaWxlLmdldG1lbWJlcnM+YC4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjE1NDlgLikKKworCit0aHJlYWRpbmcKKy0tLS0tLS0tLQorCitCb3RoIHRoZSA6bWV0aDpgTG9jay5hY3F1aXJlKCkgPHRocmVhZGluZy5Mb2NrLmFjcXVpcmU+YCBhbmQKKzptZXRoOmBSTG9jay5hY3F1aXJlKCkgPHRocmVhZGluZy5STG9jay5hY3F1aXJlPmAgbWV0aG9kcworbm93IHVzZSBhIG1vbm90b25pYyBjbG9jayBmb3IgdGltZW91dCBtYW5hZ2VtZW50LgorKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjIwNDNgLikKKworCit0aW1lCistLS0tCisKK1RoZSA6ZnVuYzpgfnRpbWUubW9ub3RvbmljYCBmdW5jdGlvbiBpcyBub3cgYWx3YXlzIGF2YWlsYWJsZS4KKyhDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDIyMDQzYC4pCisKKwordGltZWl0CistLS0tLS0KKworQSBuZXcgY29tbWFuZCBsaW5lIG9wdGlvbiBgYC11YGAgb3IgOnNhbXA6YC0tdW5pdD17VX1gIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIHRpbWUKK3VuaXQgZm9yIHRoZSB0aW1lciBvdXRwdXQuICBTdXBwb3J0ZWQgb3B0aW9ucyBhcmUgYGB1c2VjYGAsIGBgbXNlY2BgLAorb3IgYGBzZWNgYC4gIChDb250cmlidXRlZCBieSBKdWxpYW4gR2luZGkgaW4gOmlzc3VlOmAxODk4M2AuKQorCitUaGUgOmZ1bmM6YH50aW1laXQudGltZWl0YCBmdW5jdGlvbiBoYXMgYSBuZXcgKmdsb2JhbHMqIHBhcmFtZXRlciBmb3IKK3NwZWNpZnlpbmcgdGhlIG5hbWVzcGFjZSBpbiB3aGljaCB0aGUgY29kZSB3aWxsIGJlIHJ1bm5pbmcuCisoQ29udHJpYnV0ZWQgYnkgQmVuIFJvYmVydHMgaW4gOmlzc3VlOmAyNTI3YC4pCisKKwordGtpbnRlcgorLS0tLS0tLQorCitUaGUgOm1vZDpgdGtpbnRlci5fZml4YCBtb2R1bGUgdXNlZCBmb3Igc2V0dGluZyB1cCB0aGUgVGNsL1RrIGVudmlyb25tZW50CitvbiBXaW5kb3dzIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IGEgcHJpdmF0ZSBmdW5jdGlvbiBpbiB0aGUgOm1vZDpgX3RraW50ZXJgCittb2R1bGUgd2hpY2ggbWFrZXMgbm8gcGVybWFuZW50IGNoYW5nZXMgdG8gZW52aXJvbm1lbnQgdmFyaWFibGVzLgorKENvbnRyaWJ1dGVkIGJ5IFphY2hhcnkgV2FyZSBpbiA6aXNzdWU6YDIwMDM1YC4pCisKKworLi4gX3doYXRzbmV3LXRyYWNlYmFjazoKKwordHJhY2ViYWNrCistLS0tLS0tLS0KKworTmV3IDpmdW5jOmB+dHJhY2ViYWNrLndhbGtfc3RhY2tgIGFuZCA6ZnVuYzpgfnRyYWNlYmFjay53YWxrX3RiYAorZnVuY3Rpb25zIHRvIGNvbnZlbmllbnRseSB0cmF2ZXJzZSBmcmFtZSBhbmQgdHJhY2ViYWNrIG9iamVjdHMuCisoQ29udHJpYnV0ZWQgYnkgUm9iZXJ0IENvbGxpbnMgaW4gOmlzc3VlOmAxNzkxMWAuKQorCitOZXcgbGlnaHR3ZWlnaHQgY2xhc3NlczogOmNsYXNzOmB+dHJhY2ViYWNrLlRyYWNlYmFja0V4Y2VwdGlvbmAsCis6Y2xhc3M6YH50cmFjZWJhY2suU3RhY2tTdW1tYXJ5YCwgYW5kIDpjbGFzczpgfnRyYWNlYmFjay5GcmFtZVN1bW1hcnlgLgorKENvbnRyaWJ1dGVkIGJ5IFJvYmVydCBDb2xsaW5zIGluIDppc3N1ZTpgMTc5MTFgLikKKworQm90aCB0aGUgOmZ1bmM6YH50cmFjZWJhY2sucHJpbnRfdGJgIGFuZCA6ZnVuYzpgfnRyYWNlYmFjay5wcmludF9zdGFja2AgZnVuY3Rpb25zCitub3cgc3VwcG9ydCBuZWdhdGl2ZSB2YWx1ZXMgZm9yIHRoZSAqbGltaXQqIGFyZ3VtZW50LgorKENvbnRyaWJ1dGVkIGJ5IERtaXRyeSBLYXpha292IGluIDppc3N1ZTpgMjI2MTlgLikKKworCit0eXBlcworLS0tLS0KKworQSBuZXcgOmZ1bmM6YH50eXBlcy5jb3JvdXRpbmVgIGZ1bmN0aW9uIHRvIHRyYW5zZm9ybQorOnRlcm06YGdlbmVyYXRvciA8Z2VuZXJhdG9yIGl0ZXJhdG9yPmAgYW5kCis6Y2xhc3M6YGdlbmVyYXRvci1saWtlIDxjb2xsZWN0aW9ucy5hYmMuR2VuZXJhdG9yPmAgb2JqZWN0cyBpbnRvCis6dGVybTpgYXdhaXRhYmxlcyA8YXdhaXRhYmxlPmAuCisoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyNDAxN2AuKQorCitBIG5ldyB0eXBlIGNhbGxlZCA6Y2xhc3M6YH50eXBlcy5Db3JvdXRpbmVUeXBlYCwgd2hpY2ggaXMgdXNlZCBmb3IKKzp0ZXJtOmBjb3JvdXRpbmVgIG9iamVjdHMgY3JlYXRlZCBieSA6a2V5d29yZDpgYXN5bmMgZGVmYCBmdW5jdGlvbnMuCisoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyNDQwMGAuKQorCisKK3VuaWNvZGVkYXRhCistLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgdW5pY29kZWRhdGFgIG1vZHVsZSBub3cgdXNlcyBkYXRhIGZyb20gYFVuaWNvZGUgOC4wLjAKKzxodHRwOi8vdW5pY29kZS5vcmcvdmVyc2lvbnMvVW5pY29kZTguMC4wLz5gXy4KKworCit1bml0dGVzdAorLS0tLS0tLS0KKworVGhlIDptZXRoOmBUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUoKSA8dW5pdHRlc3QuVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlPmAKK21ldGhvZCBub3cgYWNjZXB0cyBhIGtleXdvcmQtb25seSBhcmd1bWVudCAqcGF0dGVybiogd2hpY2ggaXMgcGFzc2VkIHRvCitgYGxvYWRfdGVzdHNgYCBhcyB0aGUgdGhpcmQgYXJndW1lbnQuICBGb3VuZCBwYWNrYWdlcyBhcmUgbm93IGNoZWNrZWQgZm9yCitgYGxvYWRfdGVzdHNgYCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlaXIgcGF0aCBtYXRjaGVzICpwYXR0ZXJuKiwgYmVjYXVzZSBpdAoraXMgaW1wb3NzaWJsZSBmb3IgYSBwYWNrYWdlIG5hbWUgdG8gbWF0Y2ggdGhlIGRlZmF1bHQgcGF0dGVybi4KKyhDb250cmlidXRlZCBieSBSb2JlcnQgQ29sbGlucyBhbmQgQmFycnkgQS4gV2Fyc2F3IGluIDppc3N1ZTpgMTY2NjJgLikKKworVW5pdHRlc3QgZGlzY292ZXJ5IGVycm9ycyBub3cgYXJlIGV4cG9zZWQgaW4gdGhlCis6ZGF0YTpgVGVzdExvYWRlci5lcnJvcnMgPHVuaXR0ZXN0LlRlc3RMb2FkZXIuZXJyb3JzPmAgYXR0cmlidXRlIG9mIHRoZQorOmNsYXNzOmB+dW5pdHRlc3QuVGVzdExvYWRlcmAgaW5zdGFuY2UuCisoQ29udHJpYnV0ZWQgYnkgUm9iZXJ0IENvbGxpbnMgaW4gOmlzc3VlOmAxOTc0NmAuKQorCitBIG5ldyBjb21tYW5kIGxpbmUgb3B0aW9uIGBgLS1sb2NhbHNgYCB0byBzaG93IGxvY2FsIHZhcmlhYmxlcyBpbgordHJhY2ViYWNrcy4gIChDb250cmlidXRlZCBieSBSb2JlcnQgQ29sbGlucyBpbiA6aXNzdWU6YDIyOTM2YC4pCisKKwordW5pdHRlc3QubW9jaworLS0tLS0tLS0tLS0tLQorCitUaGUgOmNsYXNzOmB+dW5pdHRlc3QubW9jay5Nb2NrYCBjbGFzcyBoYXMgdGhlIGZvbGxvd2luZyBpbXByb3ZlbWVudHM6CisKKyogVGhlIGNsYXNzIGNvbnN0cnVjdG9yIGhhcyBhIG5ldyAqdW5zYWZlKiBwYXJhbWV0ZXIsIHdoaWNoIGNhdXNlcyBtb2NrCisgIG9iamVjdHMgdG8gcmFpc2UgOmV4YzpgQXR0cmlidXRlRXJyb3JgIG9uIGF0dHJpYnV0ZSBuYW1lcyBzdGFydGluZworICB3aXRoIGBgImFzc2VydCJgYC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEt1c2hhbCBEYXMgaW4gOmlzc3VlOmAyMTIzOGAuKQorCisqIEEgbmV3IDptZXRoOmBNb2NrLmFzc2VydF9ub3RfY2FsbGVkKCkgPHVuaXR0ZXN0Lm1vY2suTW9jay5hc3NlcnRfbm90X2NhbGxlZD5gCisgIG1ldGhvZCB0byBjaGVjayBpZiB0aGUgbW9jayBvYmplY3Qgd2FzIGNhbGxlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEt1c2hhbCBEYXMgaW4gOmlzc3VlOmAyMTI2MmAuKQorCitUaGUgOmNsYXNzOmB+dW5pdHRlc3QubW9jay5NYWdpY01vY2tgIGNsYXNzIG5vdyBzdXBwb3J0cyA6bWV0aDpgX190cnVlZGl2X19gLAorOm1ldGg6YF9fZGl2bW9kX19gIGFuZCA6bWV0aDpgX19tYXRtdWxfX2Agb3BlcmF0b3JzLgorKENvbnRyaWJ1dGVkIGJ5IEpvaGFubmVzIEJhaXRlciBpbiA6aXNzdWU6YDIwOTY4YCwgYW5kIEjDpWthbiBMw7Z2ZGFobAoraW4gOmlzc3VlOmAyMzU4MWAgYW5kIDppc3N1ZTpgMjM1NjhgLikKKworSXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byBleHBsaWNpdGx5IHBhc3MgYGBjcmVhdGU9VHJ1ZWBgIHRvIHRoZQorOmZ1bmM6YH51bml0dGVzdC5tb2NrLnBhdGNoYCBmdW5jdGlvbiB3aGVuIHBhdGNoaW5nIGJ1aWx0aW4gbmFtZXMuCisoQ29udHJpYnV0ZWQgYnkgS3VzaGFsIERhcyBpbiA6aXNzdWU6YDE3NjYwYC4pCisKKwordXJsbGliCistLS0tLS0KKworQSBuZXcKKzpjbGFzczpgcmVxdWVzdC5IVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoIDx1cmxsaWIucmVxdWVzdC5IVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoPmAKK2NsYXNzIGFsbG93cyBIVFRQIEJhc2ljIEF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIHRvIGJlIG1hbmFnZWQgc28gYXMgdG8KK2VsaW1pbmF0ZSB1bm5lY2Vzc2FyeSBgYDQwMWBgIHJlc3BvbnNlIGhhbmRsaW5nLCBvciB0byB1bmNvbmRpdGlvbmFsbHkgc2VuZAorY3JlZGVudGlhbHMgb24gdGhlIGZpcnN0IHJlcXVlc3QgaW4gb3JkZXIgdG8gY29tbXVuaWNhdGUgd2l0aCBzZXJ2ZXJzIHRoYXQKK3JldHVybiBhIGBgNDA0YGAgcmVzcG9uc2UgaW5zdGVhZCBvZiBhIGBgNDAxYGAgaWYgdGhlIGBgQXV0aG9yaXphdGlvbmBgIGhlYWRlcgoraXMgbm90IHNlbnQuIChDb250cmlidXRlZCBieSBNYXRlaiBDZXBsIGluIDppc3N1ZTpgMTk0OTRgIGFuZCBBa3NoaXQgS2h1cmFuYSBpbgorOmlzc3VlOmA3MTU5YC4pCisKK0EgbmV3ICpxdW90ZV92aWEqIGFyZ3VtZW50IGZvciB0aGUKKzpmdW5jOmBwYXJzZS51cmxlbmNvZGUoKSA8dXJsbGliLnBhcnNlLnVybGVuY29kZT5gCitmdW5jdGlvbiBwcm92aWRlcyBhIHdheSB0byBjb250cm9sIHRoZSBlbmNvZGluZyBvZiBxdWVyeSBwYXJ0cyBpZiBuZWVkZWQuCisoQ29udHJpYnV0ZWQgYnkgU2Ftd3lzZSBhbmQgQXJub24gWWFhcmkgaW4gOmlzc3VlOmAxMzg2NmAuKQorCitUaGUgOmZ1bmM6YHJlcXVlc3QudXJsb3BlbigpIDx1cmxsaWIucmVxdWVzdC51cmxvcGVuPmAgZnVuY3Rpb24gYWNjZXB0cyBhbgorOmNsYXNzOmBzc2wuU1NMQ29udGV4dGAgb2JqZWN0IGFzIGEgKmNvbnRleHQqIGFyZ3VtZW50LCB3aGljaCB3aWxsIGJlIHVzZWQgZm9yCit0aGUgSFRUUFMgY29ubmVjdGlvbi4gIChDb250cmlidXRlZCBieSBBbGV4IEdheW5vciBpbiA6aXNzdWU6YDIyMzY2YC4pCisKK1RoZSA6ZnVuYzpgcGFyc2UudXJsam9pbigpIDx1cmxsaWIucGFyc2UudXJsam9pbj5gIHdhcyB1cGRhdGVkIHRvIHVzZSB0aGUKKzpyZmM6YDM5ODZgIHNlbWFudGljcyBmb3IgdGhlIHJlc29sdXRpb24gb2YgcmVsYXRpdmUgVVJMcywgcmF0aGVyIHRoYW4KKzpyZmM6YDE4MDhgIGFuZCA6cmZjOmAyMzk2YC4KKyhDb250cmlidXRlZCBieSBEZW1pYW4gQnJlY2h0IGFuZCBTZW50aGlsIEt1bWFyYW4gaW4gOmlzc3VlOmAyMjExOGAuKQorCisKK3dzZ2lyZWYKKy0tLS0tLS0KKworVGhlICpoZWFkZXJzKiBhcmd1bWVudCBvZiB0aGUgOmNsYXNzOmBoZWFkZXJzLkhlYWRlcnMgPHdzZ2lyZWYuaGVhZGVycy5IZWFkZXJzPmAKK2NsYXNzIGNvbnN0cnVjdG9yIGlzIG5vdyBvcHRpb25hbC4KKyhDb250cmlidXRlZCBieSBQYWJsbyBUb3JyZXMgTmF2YXJyZXRlIGFuZCBTaWxlbnRHaG9zdCBpbiA6aXNzdWU6YDU4MDBgLikKKworCit4bWxycGMKKy0tLS0tLQorCitUaGUgOmNsYXNzOmBjbGllbnQuU2VydmVyUHJveHkgPHhtbHJwYy5jbGllbnQuU2VydmVyUHJveHk+YCBjbGFzcyBub3cgc3VwcG9ydHMKK3RoZSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCBwcm90b2NvbC4KKyhDb250cmlidXRlZCBieSBDbGF1ZGl1IFBvcGEgaW4gOmlzc3VlOmAyMDYyN2AuKQorCitUaGUgOmNsYXNzOmBjbGllbnQuU2VydmVyUHJveHkgPHhtbHJwYy5jbGllbnQuU2VydmVyUHJveHk+YCBjb25zdHJ1Y3RvciBub3cgYWNjZXB0cworYW4gb3B0aW9uYWwgOmNsYXNzOmBzc2wuU1NMQ29udGV4dGAgaW5zdGFuY2UuCisoQ29udHJpYnV0ZWQgYnkgQWxleCBHYXlub3IgaW4gOmlzc3VlOmAyMjk2MGAuKQorCisKK3htbC5zYXgKKy0tLS0tLS0KKworU0FYIHBhcnNlcnMgbm93IHN1cHBvcnQgYSBjaGFyYWN0ZXIgc3RyZWFtIG9mIHRoZQorOmNsYXNzOmB4bWxyZWFkZXIuSW5wdXRTb3VyY2UgPHhtbC5zYXgueG1scmVhZGVyLklucHV0U291cmNlPmAgb2JqZWN0LgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMTc1YC4pCisKKzpmdW5jOmB+eG1sLnNheC5wYXJzZVN0cmluZ2Agbm93IGFjY2VwdHMgYSA6Y2xhc3M6YHN0cmAgaW5zdGFuY2UuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDEwNTkwYC4pCisKKworemlwZmlsZQorLS0tLS0tLQorCitaSVAgb3V0cHV0IGNhbiBub3cgYmUgd3JpdHRlbiB0byB1bnNlZWthYmxlIHN0cmVhbXMuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIzMjUyYC4pCisKK1RoZSAqbW9kZSogYXJndW1lbnQgb2YgOm1ldGg6YFppcEZpbGUub3BlbigpIDx6aXBmaWxlLlppcEZpbGUub3Blbj5gIG1ldGhvZCBub3cKK2FjY2VwdHMgYGAieCJgYCB0byByZXF1ZXN0IGV4Y2x1c2l2ZSBjcmVhdGlvbi4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjE3MTdgLikKKworCitPdGhlciBtb2R1bGUtbGV2ZWwgY2hhbmdlcworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworTWFueSBmdW5jdGlvbnMgaW4gdGhlIDptb2Q6YG1tYXBgLCA6bW9kOmBvc3NhdWRpb2RldmAsIDptb2Q6YHNvY2tldGAsCis6bW9kOmBzc2xgLCBhbmQgOm1vZDpgY29kZWNzYCBtb2R1bGVzIG5vdyBhY2NlcHQgd3JpdGFibGUKKzp0ZXJtOmBieXRlcy1saWtlIG9iamVjdHMgPGJ5dGVzLWxpa2Ugb2JqZWN0PmAuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIzMDAxYC4pCisKKworT3B0aW1pemF0aW9ucworPT09PT09PT09PT09PQorCitUaGUgOmZ1bmM6YG9zLndhbGtgIGZ1bmN0aW9uIGhhcyBiZWVuIHNwZWQgdXAgYnkgMyB0byA1IHRpbWVzIG9uIFBPU0lYIHN5c3RlbXMsCithbmQgYnkgNyB0byAyMCB0aW1lcyBvbiBXaW5kb3dzLiAgVGhpcyB3YXMgZG9uZSB1c2luZyB0aGUgbmV3IDpmdW5jOmBvcy5zY2FuZGlyYAorZnVuY3Rpb24sIHdoaWNoIGV4cG9zZXMgZmlsZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSB1bmRlcmx5aW5nIGBgcmVhZGRpcmBgIG9yCitgYEZpbmRGaXJzdEZpbGVgYC9gYEZpbmROZXh0RmlsZWBgIHN5c3RlbSBjYWxscy4gIChDb250cmlidXRlZCBieQorQmVuIEhveXQgd2l0aCBoZWxwIGZyb20gVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMzYwNWAuKQorCitDb25zdHJ1Y3Rpb24gb2YgYGBieXRlcyhpbnQpYGAgKGZpbGxlZCBieSB6ZXJvIGJ5dGVzKSBpcyBmYXN0ZXIgYW5kIHVzZXMgbGVzcworbWVtb3J5IGZvciBsYXJnZSBvYmplY3RzLiBgYGNhbGxvYygpYGAgaXMgdXNlZCBpbnN0ZWFkIG9mIGBgbWFsbG9jKClgYCB0bworYWxsb2NhdGUgbWVtb3J5IGZvciB0aGVzZSBvYmplY3RzLgorKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjEyMzNgLikKKworU29tZSBvcGVyYXRpb25zIG9uIDptb2Q6YGlwYWRkcmVzc2AgOmNsYXNzOmB+aXBhZGRyZXNzLklQdjROZXR3b3JrYCBhbmQKKzpjbGFzczpgfmlwYWRkcmVzcy5JUHY2TmV0d29ya2AgaGF2ZSBiZWVuIG1hc3NpdmVseSBzcGVkIHVwLCBzdWNoIGFzCis6bWV0aDpgfmlwYWRkcmVzcy5JUHY0TmV0d29yay5zdWJuZXRzYCwgOm1ldGg6YH5pcGFkZHJlc3MuSVB2NE5ldHdvcmsuc3VwZXJuZXRgLAorOmZ1bmM6YH5pcGFkZHJlc3Muc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2VgLCA6ZnVuYzpgfmlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXNgLgorVGhlIHNwZWVkIHVwIGNhbiByYW5nZSBmcm9tIDMgdG8gMTUgdGltZXMuCisoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UsIE1pY2hlbCBBbGJlcnQsIGFuZCBNYXJrdXMgaW4KKzppc3N1ZTpgMjE0ODZgLCA6aXNzdWU6YDIxNDg3YCwgOmlzc3VlOmAyMDgyNmAsIDppc3N1ZTpgMjMyNjZgLikKKworUGlja2xpbmcgb2YgOm1vZDpgaXBhZGRyZXNzYCBvYmplY3RzIHdhcyBvcHRpbWl6ZWQgdG8gcHJvZHVjZSBzaWduaWZpY2FudGx5CitzbWFsbGVyIG91dHB1dC4gIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjMxMzNgLikKKworTWFueSBvcGVyYXRpb25zIG9uIDpjbGFzczpgaW8uQnl0ZXNJT2AgYXJlIG5vdyA1MCUgdG8gMTAwJSBmYXN0ZXIuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDE1MzgxYCBhbmQgRGF2aWQgV2lsc29uIGluCis6aXNzdWU6YDIyMDAzYC4pCisKK1RoZSA6ZnVuYzpgbWFyc2hhbC5kdW1wc2AgZnVuY3Rpb24gaXMgbm93IGZhc3RlcjogNjUtODUlIHdpdGggdmVyc2lvbnMgMworYW5kIDQsIDIwLTI1JSB3aXRoIHZlcnNpb25zIDAgdG8gMiBvbiB0eXBpY2FsIGRhdGEsIGFuZCB1cCB0byA1IHRpbWVzIGluCitiZXN0IGNhc2VzLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMDQxNmAgYW5kIDppc3N1ZTpgMjMzNDRgLikKKworVGhlIFVURi0zMiBlbmNvZGVyIGlzIG5vdyAzIHRvIDcgdGltZXMgZmFzdGVyLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxNTAyN2AuKQorCitSZWd1bGFyIGV4cHJlc3Npb25zIGFyZSBub3cgcGFyc2VkIHVwIHRvIDEwJSBmYXN0ZXIuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDE5MzgwYC4pCisKK1RoZSA6ZnVuYzpganNvbi5kdW1wc2AgZnVuY3Rpb24gd2FzIG9wdGltaXplZCB0byBydW4gd2l0aAorYGBlbnN1cmVfYXNjaWk9RmFsc2VgYCBhcyBmYXN0IGFzIHdpdGggYGBlbnN1cmVfYXNjaWk9VHJ1ZWBgLgorKENvbnRyaWJ1dGVkIGJ5IE5hb2tpIEluYWRhIGluIDppc3N1ZTpgMjMyMDZgLikKKworVGhlIDpjOmZ1bmM6YFB5T2JqZWN0X0lzSW5zdGFuY2VgIGFuZCA6YzpmdW5jOmBQeU9iamVjdF9Jc1N1YmNsYXNzYAorZnVuY3Rpb25zIGhhdmUgYmVlbiBzcGVkIHVwIGluIHRoZSBjb21tb24gY2FzZSB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQKK2hhcyA6Y2xhc3M6YHR5cGVgIGFzIGl0cyBtZXRhY2xhc3MuCisoQ29udHJpYnV0ZWQgR2VvcmcgQnJhbmRsIGJ5IGluIDppc3N1ZTpgMjI1NDBgLikKKworTWV0aG9kIGNhY2hpbmcgd2FzIHNsaWdodGx5IGltcHJvdmVkLCB5aWVsZGluZyB1cCB0byA1JSBwZXJmb3JtYW5jZQoraW1wcm92ZW1lbnQgaW4gc29tZSBiZW5jaG1hcmtzLgorKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMjI4NDdgLikKKworT2JqZWN0cyBmcm9tIHRoZSA6bW9kOmByYW5kb21gIG1vZHVsZSBub3cgdXNlIDUwJSBsZXNzIG1lbW9yeSBvbiA2NC1iaXQKK2J1aWxkcy4gIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjM0ODhgLikKKworVGhlIDpmdW5jOmBwcm9wZXJ0eWAgZ2V0dGVyIGNhbGxzIGFyZSB1cCB0byAyNSUgZmFzdGVyLgorKENvbnRyaWJ1dGVkIGJ5IEpvZSBKZXZuaWsgaW4gOmlzc3VlOmAyMzkxMGAuKQorCitJbnN0YW50aWF0aW9uIG9mIDpjbGFzczpgZnJhY3Rpb25zLkZyYWN0aW9uYCBpcyBub3cgdXAgdG8gMzAlIGZhc3Rlci4KKyhDb250cmlidXRlZCBieSBTdGVmYW4gQmVobmVsIGluIDppc3N1ZTpgMjI0NjRgLikKKworU3RyaW5nIG1ldGhvZHMgOm1ldGg6YH5zdHIuZmluZGAsIDptZXRoOmB+c3RyLnJmaW5kYCwgOm1ldGg6YH5zdHIuc3BsaXRgLAorOm1ldGg6YH5zdHIucGFydGl0aW9uYCBhbmQgdGhlIDprZXl3b3JkOmBpbmAgc3RyaW5nIG9wZXJhdG9yIGFyZSBub3cgc2lnbmlmaWNhbnRseQorZmFzdGVyIGZvciBzZWFyY2hpbmcgMS1jaGFyYWN0ZXIgc3Vic3RyaW5ncy4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjM1NzNgLikKKworCitCdWlsZCBhbmQgQyBBUEkgQ2hhbmdlcworPT09PT09PT09PT09PT09PT09PT09PT0KKworTmV3IGBgY2FsbG9jYGAgZnVuY3Rpb25zIHdlcmUgYWRkZWQ6CisKKyogOmM6ZnVuYzpgUHlNZW1fUmF3Q2FsbG9jYCwKKyogOmM6ZnVuYzpgUHlNZW1fQ2FsbG9jYCwKKyogOmM6ZnVuYzpgUHlPYmplY3RfQ2FsbG9jYCwKKyogOmM6ZnVuYzpgX1B5T2JqZWN0X0dDX0NhbGxvY2AuCisKKyhDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDIxMjMzYC4pCisKK05ldyBlbmNvZGluZy9kZWNvZGluZyBoZWxwZXIgZnVuY3Rpb25zOgorCisqIDpjOmZ1bmM6YFB5X0RlY29kZUxvY2FsZWAgKHJlcGxhY2VkIGBgX1B5X2NoYXIyd2NoYXIoKWBgKSwKKyogOmM6ZnVuYzpgUHlfRW5jb2RlTG9jYWxlYCAocmVwbGFjZWQgYGBfUHlfd2NoYXIyY2hhcigpYGApLgorCisoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAxODM5NWAuKQorCitBIG5ldyA6YzpmdW5jOmBQeUNvZGVjX05hbWVSZXBsYWNlRXJyb3JzYCBmdW5jdGlvbiB0byByZXBsYWNlIHRoZSB1bmljb2RlCitlbmNvZGUgZXJyb3Igd2l0aCBgYFxOey4uLn1gYCBlc2NhcGVzLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxOTY3NmAuKQorCitBIG5ldyA6YzpmdW5jOmBQeUVycl9Gb3JtYXRWYCBmdW5jdGlvbiBzaW1pbGFyIHRvIDpjOmZ1bmM6YFB5RXJyX0Zvcm1hdGAsCitidXQgYWNjZXB0cyBhIGBgdmFfbGlzdGBgIGFyZ3VtZW50LgorKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMTg3MTFgLikKKworQSBuZXcgOmM6ZGF0YTpgUHlFeGNfUmVjdXJzaW9uRXJyb3JgIGV4Y2VwdGlvbi4KKyhDb250cmlidXRlZCBieSBHZW9yZyBCcmFuZGwgaW4gOmlzc3VlOmAxOTIzNWAuKQorCitOZXcgOmM6ZnVuYzpgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWNgLCA6YzpmdW5jOmBQeU1vZHVsZV9Gcm9tRGVmQW5kU3BlYzJgLAorYW5kIDpjOmZ1bmM6YFB5TW9kdWxlX0V4ZWNEZWZgIGZ1bmN0aW9ucyBpbnRyb2R1Y2VkIGJ5IDpwZXA6YDQ4OWAgLS0KK211bHRpLXBoYXNlIGV4dGVuc2lvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uCisoQ29udHJpYnV0ZWQgYnkgUGV0ciBWaWt0b3JpbiBpbiA6aXNzdWU6YDI0MjY4YC4pCisKK05ldyA6YzpmdW5jOmBQeU51bWJlcl9NYXRyaXhNdWx0aXBseWAgYW5kCis6YzpmdW5jOmBQeU51bWJlcl9JblBsYWNlTWF0cml4TXVsdGlwbHlgIGZ1bmN0aW9ucyB0byBwZXJmb3JtIG1hdHJpeAorbXVsdGlwbGljYXRpb24uCisoQ29udHJpYnV0ZWQgYnkgQmVuamFtaW4gUGV0ZXJzb24gaW4gOmlzc3VlOmAyMTE3NmAuICBTZWUgYWxzbyA6cGVwOmA0NjVgCitmb3IgZGV0YWlscy4pCisKK1RoZSA6YzptZW1iZXI6YFB5VHlwZU9iamVjdC50cF9maW5hbGl6ZWAgc2xvdCBpcyBub3cgcGFydCBvZiB0aGUgc3RhYmxlIEFCSS4KKworV2luZG93cyBidWlsZHMgbm93IHJlcXVpcmUgTWljcm9zb2Z0IFZpc3VhbCBDKysgMTQuMCwgd2hpY2gKK2lzIGF2YWlsYWJsZSBhcyBwYXJ0IG9mIGBWaXN1YWwgU3R1ZGlvIDIwMTUgPGh0dHA6Ly93d3cudmlzdWFsc3R1ZGlvLmNvbT5gXy4KKworRXh0ZW5zaW9uIG1vZHVsZXMgbm93IGluY2x1ZGUgYSBwbGF0Zm9ybSBpbmZvcm1hdGlvbiB0YWcgaW4gdGhlaXIgZmlsZW5hbWUgb24KK3NvbWUgcGxhdGZvcm1zICh0aGUgdGFnIGlzIG9wdGlvbmFsLCBhbmQgQ1B5dGhvbiB3aWxsIGltcG9ydCBleHRlbnNpb25zIHdpdGhvdXQKK2l0LCBhbHRob3VnaCBpZiB0aGUgdGFnIGlzIHByZXNlbnQgYW5kIG1pc21hdGNoZWQsIHRoZSBleHRlbnNpb24gd29uJ3QgYmUKK2xvYWRlZCk6CisKKyogT24gTGludXgsIGV4dGVuc2lvbiBtb2R1bGUgZmlsZW5hbWVzIGVuZCB3aXRoCisgIGBgLmNweXRob24tPG1ham9yPjxtaW5vcj5tLTxhcmNoaXRlY3R1cmU+LTxvcz4ucHlkYGA6CisKKyAgKiBgYDxtYWpvcj5gYCBpcyB0aGUgbWFqb3IgbnVtYmVyIG9mIHRoZSBQeXRob24gdmVyc2lvbjsKKyAgICBmb3IgUHl0aG9uIDMuNSB0aGlzIGlzIGBgM2BgLgorCisgICogYGA8bWlub3I+YGAgaXMgdGhlIG1pbm9yIG51bWJlciBvZiB0aGUgUHl0aG9uIHZlcnNpb247CisgICAgZm9yIFB5dGhvbiAzLjUgdGhpcyBpcyBgYDVgYC4KKworICAqIGBgPGFyY2hpdGVjdHVyZT5gYCBpcyB0aGUgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlIHRoZSBleHRlbnNpb24gbW9kdWxlCisgICAgd2FzIGJ1aWx0IHRvIHJ1biBvbi4gSXQncyBtb3N0IGNvbW1vbmx5IGVpdGhlciBgYGkzODZgYCBmb3IgMzItYml0IEludGVsCisgICAgcGxhdGZvcm1zIG9yIGBgeDg2XzY0YGAgZm9yIDY0LWJpdCBJbnRlbCAoYW5kIEFNRCkgcGxhdGZvcm1zLgorCisgICogYGA8b3M+YGAgaXMgYWx3YXlzIGBgbGludXgtZ251YGAsIGV4Y2VwdCBmb3IgZXh0ZW5zaW9ucyBidWlsdCB0bworICAgIHRhbGsgdG8gdGhlIDMyLWJpdCBBQkkgb24gNjQtYml0IHBsYXRmb3JtcywgaW4gd2hpY2ggY2FzZSBpdCBpcworICAgIGBgbGludXgtZ251MzJgYCAoYW5kIGBgPGFyY2hpdGVjdHVyZT5gYCB3aWxsIGJlIGBgeDg2XzY0YGApLgorCisqIE9uIFdpbmRvd3MsIGV4dGVuc2lvbiBtb2R1bGUgZmlsZW5hbWVzIGVuZCB3aXRoCisgIGBgPGRlYnVnPi5jcDxtYWpvcj48bWlub3I+LTxwbGF0Zm9ybT4ucHlkYGA6CisKKyAgKiBgYDxtYWpvcj5gYCBpcyB0aGUgbWFqb3IgbnVtYmVyIG9mIHRoZSBQeXRob24gdmVyc2lvbjsKKyAgICBmb3IgUHl0aG9uIDMuNSB0aGlzIGlzIGBgM2BgLgorCisgICogYGA8bWlub3I+YGAgaXMgdGhlIG1pbm9yIG51bWJlciBvZiB0aGUgUHl0aG9uIHZlcnNpb247CisgICAgZm9yIFB5dGhvbiAzLjUgdGhpcyBpcyBgYDVgYC4KKworICAqIGBgPHBsYXRmb3JtPmBgIGlzIHRoZSBwbGF0Zm9ybSB0aGUgZXh0ZW5zaW9uIG1vZHVsZSB3YXMgYnVpbHQgZm9yLAorICAgIGVpdGhlciBgYHdpbjMyYGAgZm9yIFdpbjMyLCBgYHdpbl9hbWQ2NGBgIGZvciBXaW42NCwgYGB3aW5faWE2NGBgIGZvcgorICAgIFdpbmRvd3MgSXRhbml1bSA2NCwgYW5kIGBgd2luX2FybWBgIGZvciBXaW5kb3dzIG9uIEFSTS4KKworICAqIElmIGJ1aWx0IGluIGRlYnVnIG1vZGUsIGBgPGRlYnVnPmBgIHdpbGwgYmUgYGBfZGBgLAorICAgIG90aGVyd2lzZSBpdCB3aWxsIGJlIGJsYW5rLgorCisqIE9uIE9TIFggcGxhdGZvcm1zLCBleHRlbnNpb24gbW9kdWxlIGZpbGVuYW1lcyBub3cgZW5kIHdpdGggYGAtZGFyd2luLnNvYGAuCisKKyogT24gYWxsIG90aGVyIHBsYXRmb3JtcywgZXh0ZW5zaW9uIG1vZHVsZSBmaWxlbmFtZXMgYXJlIHRoZSBzYW1lIGFzIHRoZXkgd2VyZQorICB3aXRoIFB5dGhvbiAzLjQuCisKKworRGVwcmVjYXRlZAorPT09PT09PT09PQorCitOZXcgS2V5d29yZHMKKy0tLS0tLS0tLS0tLQorCitgYGFzeW5jYGAgYW5kIGBgYXdhaXRgYCBhcmUgbm90IHJlY29tbWVuZGVkIHRvIGJlIHVzZWQgYXMgdmFyaWFibGUsIGNsYXNzLAorZnVuY3Rpb24gb3IgbW9kdWxlIG5hbWVzLiAgSW50cm9kdWNlZCBieSA6cGVwOmA0OTJgIGluIFB5dGhvbiAzLjUsIHRoZXkgd2lsbAorYmVjb21lIHByb3BlciBrZXl3b3JkcyBpbiBQeXRob24gMy43LgorCisKK0RlcHJlY2F0ZWQgUHl0aG9uIEJlaGF2aW9yCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSYWlzaW5nIHRoZSA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBleGNlcHRpb24gaW5zaWRlIGEgZ2VuZXJhdG9yIHdpbGwgbm93IGdlbmVyYXRlIGEgc2lsZW50Cis6ZXhjOmBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nYCwgd2hpY2ggd2lsbCBiZWNvbWUgYSBub24tc2lsZW50IGRlcHJlY2F0aW9uCit3YXJuaW5nIGluIFB5dGhvbiAzLjYgYW5kIHdpbGwgdHJpZ2dlciBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaW4gUHl0aG9uIDMuNy4KK1NlZSA6cmVmOmBQRVAgNDc5OiBDaGFuZ2UgU3RvcEl0ZXJhdGlvbiBoYW5kbGluZyBpbnNpZGUgZ2VuZXJhdG9ycyA8d2hhdHNuZXctcGVwLTQ3OT5gCitmb3IgZGV0YWlscy4KKworCitVbnN1cHBvcnRlZCBPcGVyYXRpbmcgU3lzdGVtcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2luZG93cyBYUCBpcyBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IE1pY3Jvc29mdCwgdGh1cywgcGVyIDpQRVA6YDExYCwgQ1B5dGhvbgorMy41IGlzIG5vIGxvbmdlciBvZmZpY2lhbGx5IHN1cHBvcnRlZCBvbiB0aGlzIE9TLgorCisKK0RlcHJlY2F0ZWQgUHl0aG9uIG1vZHVsZXMsIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmBmb3JtYXR0ZXJgIG1vZHVsZSBoYXMgbm93IGdyYWR1YXRlZCB0byBmdWxsIGRlcHJlY2F0aW9uIGFuZCBpcyBzdGlsbAorc2xhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjYuCisKK1RoZSA6ZnVuYzpgYXN5bmNpby5hc3luY2AgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZgorOmZ1bmM6YH5hc3luY2lvLmVuc3VyZV9mdXR1cmVgLgorCitUaGUgOm1vZDpgc210cGRgIG1vZHVsZSBoYXMgaW4gdGhlIHBhc3QgYWx3YXlzIGRlY29kZWQgdGhlIERBVEEgcG9ydGlvbiBvZgorZW1haWwgbWVzc2FnZXMgdXNpbmcgdGhlIGBgdXRmLThgYCBjb2RlYy4gIFRoaXMgY2FuIG5vdyBiZSBjb250cm9sbGVkIGJ5IHRoZQorbmV3ICpkZWNvZGVfZGF0YSoga2V5d29yZCB0byA6Y2xhc3M6YH5zbXRwZC5TTVRQU2VydmVyYC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzCitgYFRydWVgYCwgYnV0IHRoaXMgZGVmYXVsdCBpcyBkZXByZWNhdGVkLiAgU3BlY2lmeSB0aGUgKmRlY29kZV9kYXRhKiBrZXl3b3JkCit3aXRoIGFuIGFwcHJvcHJpYXRlIHZhbHVlIHRvIGF2b2lkIHRoZSBkZXByZWNhdGlvbiB3YXJuaW5nLgorCitEaXJlY3RseSBhc3NpZ25pbmcgdmFsdWVzIHRvIHRoZSA6YXR0cjpgfmh0dHAuY29va2llcy5Nb3JzZWwua2V5YCwKKzphdHRyOmB+aHR0cC5jb29raWVzLk1vcnNlbC52YWx1ZWAgYW5kCis6YXR0cjpgfmh0dHAuY29va2llcy5Nb3JzZWwuY29kZWRfdmFsdWVgIG9mIDpjbGFzczpgaHR0cC5jb29raWVzLk1vcnNlbGAKK29iamVjdHMgaXMgZGVwcmVjYXRlZC4gIFVzZSB0aGUgOm1ldGg6YH5odHRwLmNvb2tpZXMuTW9yc2VsLnNldGAgbWV0aG9kCitpbnN0ZWFkLiAgSW4gYWRkaXRpb24sIHRoZSB1bmRvY3VtZW50ZWQgKkxlZ2FsQ2hhcnMqIHBhcmFtZXRlciBvZgorOm1ldGg6YH5odHRwLmNvb2tpZXMuTW9yc2VsLnNldGAgaXMgZGVwcmVjYXRlZCwgYW5kIGlzIG5vdyBpZ25vcmVkLgorCitQYXNzaW5nIGEgZm9ybWF0IHN0cmluZyBhcyBrZXl3b3JkIGFyZ3VtZW50ICpmb3JtYXRfc3RyaW5nKiB0byB0aGUKKzptZXRoOmB+c3RyaW5nLkZvcm1hdHRlci5mb3JtYXRgIG1ldGhvZCBvZiB0aGUgOmNsYXNzOmBzdHJpbmcuRm9ybWF0dGVyYAorY2xhc3MgaGFzIGJlZW4gZGVwcmVjYXRlZC4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjM2NzFgLikKKworVGhlIDpmdW5jOmBwbGF0Zm9ybS5kaXN0YCBhbmQgOmZ1bmM6YHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbmAgZnVuY3Rpb25zCithcmUgbm93IGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy43LiAgTGludXggZGlzdHJpYnV0aW9ucyB1c2UKK3RvbyBtYW55IGRpZmZlcmVudCB3YXlzIG9mIGRlc2NyaWJpbmcgdGhlbXNlbHZlcywgc28gdGhlIGZ1bmN0aW9uYWxpdHkgaXMKK2xlZnQgdG8gYSBwYWNrYWdlLgorKENvbnRyaWJ1dGVkIGJ5IFZhanJhc2t5IEtvayBhbmQgQmVya2VyIFBla3NhZyBpbiA6aXNzdWU6YDEzMjJgLikKKworVGhlIHByZXZpb3VzbHkgdW5kb2N1bWVudGVkIGBgZnJvbV9mdW5jdGlvbmBgIGFuZCBgYGZyb21fYnVpbHRpbmBgIG1ldGhvZHMgb2YKKzpjbGFzczpgaW5zcGVjdC5TaWduYXR1cmVgIGFyZSBkZXByZWNhdGVkLiAgVXNlIHRoZSBuZXcKKzptZXRoOmBTaWduYXR1cmUuZnJvbV9jYWxsYWJsZSgpIDxpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlPmAKK21ldGhvZCBpbnN0ZWFkLiAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyNDI0OGAuKQorCitUaGUgOmZ1bmM6YGluc3BlY3QuZ2V0YXJnc3BlY2AgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBhbmQgc2NoZWR1bGVkIHRvIGJlCityZW1vdmVkIGluIFB5dGhvbiAzLjYuICAoU2VlIDppc3N1ZTpgMjA0MzhgIGZvciBkZXRhaWxzLikKKworVGhlIDptb2Q6YGluc3BlY3RgIDpmdW5jOmB+aW5zcGVjdC5nZXRmdWxsYXJnc3BlY2AsCis6ZnVuYzpgfmluc3BlY3QuZ2V0YXJndmFsdWVzYCwgOmZ1bmM6YH5pbnNwZWN0LmdldGNhbGxhcmdzYCwKKzpmdW5jOmB+aW5zcGVjdC5nZXRhcmd2YWx1ZXNgLCA6ZnVuYzpgfmluc3BlY3QuZm9ybWF0YXJnc3BlY2AsIGFuZAorOmZ1bmM6YH5pbnNwZWN0LmZvcm1hdGFyZ3ZhbHVlc2AgZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mCit0aGUgOmZ1bmM6YGluc3BlY3Quc2lnbmF0dXJlYCBBUEkuCisoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyMDQzOGAuKQorCitVc2Ugb2YgOmNvbnN0OmByZS5MT0NBTEVgIGZsYWcgd2l0aCBzdHIgcGF0dGVybnMgb3IgOmNvbnN0OmByZS5BU0NJSWAgaXMgbm93CitkZXByZWNhdGVkLiAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMjQwN2AuKQorCitVc2Ugb2YgdW5yZWNvZ25pemVkIHNwZWNpYWwgc2VxdWVuY2VzIGNvbnNpc3Rpbmcgb2YgYGAnXCdgYCBhbmQgYW4gQVNDSUkgbGV0dGVyCitpbiByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybnMgYW5kIHJlcGxhY2VtZW50IHBhdHRlcm5zIG5vdyByYWlzZXMgYQorZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4gaW4gUHl0aG9uIDMuNi4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjM2MjJgLikKKworVGhlIHVuZG9jdW1lbnRlZCBhbmQgdW5vZmZpY2lhbCAqdXNlX2xvYWRfdGVzdHMqIGRlZmF1bHQgYXJndW1lbnQgb2YgdGhlCis6bWV0aDpgdW5pdHRlc3QuVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlYCBtZXRob2Qgbm93IGlzCitkZXByZWNhdGVkIGFuZCBpZ25vcmVkLgorKENvbnRyaWJ1dGVkIGJ5IFJvYmVydCBDb2xsaW5zIGFuZCBCYXJyeSBBLiBXYXJzYXcgaW4gOmlzc3VlOmAxNjY2MmAuKQorCisKK1JlbW92ZWQKKz09PT09PT0KKworQVBJIGFuZCBGZWF0dXJlIFJlbW92YWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZvbGxvd2luZyBvYnNvbGV0ZSBhbmQgcHJldmlvdXNseSBkZXByZWNhdGVkIEFQSXMgYW5kIGZlYXR1cmVzIGhhdmUgYmVlbgorcmVtb3ZlZDoKKworKiBUaGUgYGBfX3ZlcnNpb25fX2BgIGF0dHJpYnV0ZSBoYXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlIGVtYWlsIHBhY2thZ2UuICBUaGUKKyAgZW1haWwgY29kZSBoYXNuJ3QgYmVlbiBzaGlwcGVkIHNlcGFyYXRlbHkgZnJvbSB0aGUgc3RkbGliIGZvciBhIGxvbmcgdGltZSwKKyAgYW5kIHRoZSBgYF9fdmVyc2lvbl9fYGAgc3RyaW5nIHdhcyBub3QgdXBkYXRlZCBpbiB0aGUgbGFzdCBmZXcgcmVsZWFzZXMuCisKKyogVGhlIGludGVybmFsIGBgTmV0cmNgYCBjbGFzcyBpbiB0aGUgOm1vZDpgZnRwbGliYCBtb2R1bGUgd2FzIGRlcHJlY2F0ZWQgaW4KKyAgMy40LCBhbmQgaGFzIG5vdyBiZWVuIHJlbW92ZWQuCisgIChDb250cmlidXRlZCBieSBNYXR0IENoYXB1dCBpbiA6aXNzdWU6YDY2MjNgLikKKworKiBUaGUgY29uY2VwdCBvZiBgYC5weW9gYCBmaWxlcyBoYXMgYmVlbiByZW1vdmVkLgorCisqIFRoZSBKb2luYWJsZVF1ZXVlIGNsYXNzIGluIHRoZSBwcm92aXNpb25hbCA6bW9kOmBhc3luY2lvYCBtb2R1bGUgd2FzCisgIGRlcHJlY2F0ZWQgaW4gMy40LjQgYW5kIGlzIG5vdyByZW1vdmVkLgorICAoQ29udHJpYnV0ZWQgYnkgQS4gSmVzc2UgSmlyeXUgRGF2aXMgaW4gOmlzc3VlOmAyMzQ2NGAuKQorCisKK1BvcnRpbmcgdG8gUHl0aG9uIDMuNQorPT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgc2VjdGlvbiBsaXN0cyBwcmV2aW91c2x5IGRlc2NyaWJlZCBjaGFuZ2VzIGFuZCBvdGhlciBidWdmaXhlcwordGhhdCBtYXkgcmVxdWlyZSBjaGFuZ2VzIHRvIHlvdXIgY29kZS4KKworCitDaGFuZ2VzIGluIFB5dGhvbiBiZWhhdmlvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBEdWUgdG8gYW4gb3ZlcnNpZ2h0LCBlYXJsaWVyIFB5dGhvbiB2ZXJzaW9ucyBlcnJvbmVvdXNseSBhY2NlcHRlZCB0aGUKKyAgZm9sbG93aW5nIHN5bnRheDo6CisKKyAgICAgIGYoMSBmb3IgeCBpbiBbMV0sICphcmdzKQorICAgICAgZigxIGZvciB4IGluIFsxXSwgKiprd2FyZ3MpCisKKyAgUHl0aG9uIDMuNSBub3cgY29ycmVjdGx5IHJhaXNlcyBhIDpleGM6YFN5bnRheEVycm9yYCwgYXMgZ2VuZXJhdG9yCisgIGV4cHJlc3Npb25zIG11c3QgYmUgcHV0IGluIHBhcmVudGhlc2VzIGlmIG5vdCBhIHNvbGUgYXJndW1lbnQgdG8gYSBmdW5jdGlvbi4KKworCitDaGFuZ2VzIGluIHRoZSBQeXRob24gQVBJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogOnBlcDpgNDc1YDogU3lzdGVtIGNhbGxzIGFyZSBub3cgcmV0cmllZCB3aGVuIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIGluc3RlYWQKKyAgb2YgcmFpc2luZyA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBpZiB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90CisgIHJhaXNlIGFuIGV4Y2VwdGlvbi4KKworKiBCZWZvcmUgUHl0aG9uIDMuNSwgYSA6Y2xhc3M6YGRhdGV0aW1lLnRpbWVgIG9iamVjdCB3YXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZQorICBpZiBpdCByZXByZXNlbnRlZCBtaWRuaWdodCBpbiBVVEMuICBUaGlzIGJlaGF2aW9yIHdhcyBjb25zaWRlcmVkIG9ic2N1cmUgYW5kCisgIGVycm9yLXByb25lIGFuZCBoYXMgYmVlbiByZW1vdmVkIGluIFB5dGhvbiAzLjUuICBTZWUgOmlzc3VlOmAxMzkzNmAgZm9yIGZ1bGwKKyAgZGV0YWlscy4KKworKiBUaGUgOm1ldGg6YHNzbC5TU0xTb2NrZXQuc2VuZCgpYCBtZXRob2Qgbm93IHJhaXNlcyBlaXRoZXIKKyAgOmV4Yzpgc3NsLlNTTFdhbnRSZWFkRXJyb3JgIG9yIDpleGM6YHNzbC5TU0xXYW50V3JpdGVFcnJvcmAKKyAgb24gYSBub24tYmxvY2tpbmcgc29ja2V0IGlmIHRoZSBvcGVyYXRpb24gd291bGQgYmxvY2suICBQcmV2aW91c2x5LAorICBpdCB3b3VsZCByZXR1cm4gYGAwYGAuICAoQ29udHJpYnV0ZWQgYnkgTmlrb2xhdXMgUmF0aCBpbiA6aXNzdWU6YDIwOTUxYC4pCisKKyogVGhlIGBgX19uYW1lX19gYCBhdHRyaWJ1dGUgb2YgZ2VuZXJhdG9ycyBpcyBub3cgc2V0IGZyb20gdGhlIGZ1bmN0aW9uIG5hbWUsCisgIGluc3RlYWQgb2YgYmVpbmcgc2V0IGZyb20gdGhlIGNvZGUgbmFtZS4gVXNlIGBgZ2VuLmdpX2NvZGUuY29fbmFtZWBgIHRvCisgIHJldHJpZXZlIHRoZSBjb2RlIG5hbWUuIEdlbmVyYXRvcnMgYWxzbyBoYXZlIGEgbmV3IGBgX19xdWFsbmFtZV9fYGAKKyAgYXR0cmlidXRlLCB0aGUgcXVhbGlmaWVkIG5hbWUsIHdoaWNoIGlzIG5vdyB1c2VkIGZvciB0aGUgcmVwcmVzZW50YXRpb24KKyAgb2YgYSBnZW5lcmF0b3IgKGBgcmVwcihnZW4pYGApLgorICAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMTIwNWAuKQorCisqIFRoZSBkZXByZWNhdGVkICJzdHJpY3QiIG1vZGUgYW5kIGFyZ3VtZW50IG9mIDpjbGFzczpgfmh0bWwucGFyc2VyLkhUTUxQYXJzZXJgLAorICA6bWV0aDpgSFRNTFBhcnNlci5lcnJvcmAsIGFuZCB0aGUgOmV4YzpgSFRNTFBhcnNlckVycm9yYCBleGNlcHRpb24gaGF2ZSBiZWVuCisgIHJlbW92ZWQuICAoQ29udHJpYnV0ZWQgYnkgRXppbyBNZWxvdHRpIGluIDppc3N1ZTpgMTUxMTRgLikKKyAgVGhlICpjb252ZXJ0X2NoYXJyZWZzKiBhcmd1bWVudCBvZiA6Y2xhc3M6YH5odG1sLnBhcnNlci5IVE1MUGFyc2VyYCBpcworICBub3cgYGBUcnVlYGAgYnkgZGVmYXVsdC4gIChDb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMjEwNDdgLikKKworKiBBbHRob3VnaCBpdCBpcyBub3QgZm9ybWFsbHkgcGFydCBvZiB0aGUgQVBJLCBpdCBpcyB3b3J0aCBub3RpbmcgZm9yIHBvcnRpbmcKKyAgcHVycG9zZXMgKGllOiBmaXhpbmcgdGVzdHMpIHRoYXQgZXJyb3IgbWVzc2FnZXMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgb2YgdGhlCisgIGZvcm0gIidzb21ldHlwZScgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYnVmZmVyIHByb3RvY29sIiBhcmUgbm93IG9mIHRoZSBmb3JtICJhCisgIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgcmVxdWlyZWQsIG5vdCAnc29tZXR5cGUnIi4KKyAgKENvbnRyaWJ1dGVkIGJ5IEV6aW8gTWVsb3R0aSBpbiA6aXNzdWU6YDE2NTE4YC4pCisKKyogSWYgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzIHNldCB0byBhIGRpcmVjdG9yeSB0aGF0IG5vIGxvbmdlciBleGlzdHMgdGhlbgorICA6ZXhjOmBGaWxlTm90Rm91bmRFcnJvcmAgd2lsbCBubyBsb25nZXIgYmUgcmFpc2VkIGFuZCBpbnN0ZWFkCisgIDptZXRoOmB+aW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyLmZpbmRfc3BlY2Agd2lsbCByZXR1cm4gYGBOb25lYGAKKyAgKip3aXRob3V0KiogY2FjaGluZyBgYE5vbmVgYCBpbiA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLCB3aGljaCBpcworICBkaWZmZXJlbnQgdGhhbiB0aGUgdHlwaWNhbCBjYXNlICg6aXNzdWU6YDIyODM0YCkuCisKKyogSFRUUCBzdGF0dXMgY29kZSBhbmQgbWVzc2FnZXMgZnJvbSA6bW9kOmBodHRwLmNsaWVudGAgYW5kIDptb2Q6YGh0dHAuc2VydmVyYAorICB3ZXJlIHJlZmFjdG9yZWQgaW50byBhIGNvbW1vbiA6Y2xhc3M6YH5odHRwLkhUVFBTdGF0dXNgIGVudW0uICBUaGUgdmFsdWVzIGluCisgIDptb2Q6YGh0dHAuY2xpZW50YCBhbmQgOm1vZDpgaHR0cC5zZXJ2ZXJgIHJlbWFpbiBhdmFpbGFibGUgZm9yIGJhY2t3YXJkcworICBjb21wYXRpYmlsaXR5LiAgKENvbnRyaWJ1dGVkIGJ5IERlbWlhbiBCcmVjaHQgaW4gOmlzc3VlOmAyMTc5M2AuKQorCisqIFdoZW4gYW4gaW1wb3J0IGxvYWRlciBkZWZpbmVzIDptZXRoOmBpbXBvcnRsaWIubWFjaGluZXJ5LkxvYWRlci5leGVjX21vZHVsZWAKKyAgaXQgaXMgbm93IGV4cGVjdGVkIHRvIGFsc28gZGVmaW5lCisgIDptZXRoOmB+aW1wb3J0bGliLm1hY2hpbmVyeS5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgKHJhaXNlcyBhCisgIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2Agbm93LCB3aWxsIGJlIGFuIGVycm9yIGluIFB5dGhvbiAzLjYpLiBJZiB0aGUgbG9hZGVyCisgIGluaGVyaXRzIGZyb20gOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkxvYWRlcmAgdGhlbiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLCBlbHNlCisgIHNpbXBseSBkZWZpbmUgOm1ldGg6YH5pbXBvcnRsaWIubWFjaGluZXJ5LkxvYWRlci5jcmVhdGVfbW9kdWxlYCB0byByZXR1cm4KKyAgYGBOb25lYGAuICAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjMwMTRgLikKKworKiBUaGUgOmZ1bmM6YHJlLnNwbGl0YCBmdW5jdGlvbiBhbHdheXMgaWdub3JlZCBlbXB0eSBwYXR0ZXJuIG1hdGNoZXMsIHNvIHRoZQorICBgYCJ4KiJgYCBwYXR0ZXJuIHdvcmtlZCB0aGUgc2FtZSBhcyBgYCJ4KyJgYCwgYW5kIHRoZSBgYCJcYiJgYCBwYXR0ZXJuIG5ldmVyCisgIHdvcmtlZC4gIE5vdyA6ZnVuYzpgcmUuc3BsaXRgIHJhaXNlcyBhIHdhcm5pbmcgaWYgdGhlIHBhdHRlcm4gY291bGQgbWF0Y2gKKyAgYW4gZW1wdHkgc3RyaW5nLiAgRm9yIGNvbXBhdGliaWxpdHksIHVzZSBwYXR0ZXJucyB0aGF0IG5ldmVyIG1hdGNoIGFuIGVtcHR5CisgIHN0cmluZyAoZS5nLiBgYCJ4KyJgYCBpbnN0ZWFkIG9mIGBgIngqImBgKS4gIFBhdHRlcm5zIHRoYXQgY291bGQgb25seSBtYXRjaAorICBhbiBlbXB0eSBzdHJpbmcgKHN1Y2ggYXMgYGAiXGIiYGApIG5vdyByYWlzZSBhbiBlcnJvci4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMjgxOGAuKQorCisqIFRoZSA6Y2xhc3M6YGh0dHAuY29va2llcy5Nb3JzZWxgIGRpY3QtbGlrZSBpbnRlcmZhY2UgaGFzIGJlZW4gbWFkZSBzZWxmCisgIGNvbnNpc3RlbnQ6ICBtb3JzZWwgY29tcGFyaXNvbiBub3cgdGFrZXMgdGhlIDphdHRyOmB+aHR0cC5jb29raWVzLk1vcnNlbC5rZXlgCisgIGFuZCA6YXR0cjpgfmh0dHAuY29va2llcy5Nb3JzZWwudmFsdWVgIGludG8gYWNjb3VudCwKKyAgOm1ldGg6YH5odHRwLmNvb2tpZXMuTW9yc2VsLmNvcHlgIG5vdyByZXN1bHRzIGluIGEKKyAgOmNsYXNzOmB+aHR0cC5jb29raWVzLk1vcnNlbGAgaW5zdGFuY2UgcmF0aGVyIHRoYW4gYSA6Y2xhc3M6YGRpY3RgLCBhbmQKKyAgOm1ldGg6YH5odHRwLmNvb2tpZXMuTW9yc2VsLnVwZGF0ZWAgd2lsbCBub3cgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIGFueSBvZiB0aGUKKyAga2V5cyBpbiB0aGUgdXBkYXRlIGRpY3Rpb25hcnkgYXJlIGludmFsaWQuICBJbiBhZGRpdGlvbiwgdGhlIHVuZG9jdW1lbnRlZAorICAqTGVnYWxDaGFycyogcGFyYW1ldGVyIG9mIDpmdW5jOmB+aHR0cC5jb29raWVzLk1vcnNlbC5zZXRgIGlzIGRlcHJlY2F0ZWQgYW5kCisgIGlzIG5vdyBpZ25vcmVkLiAgKENvbnRyaWJ1dGVkIGJ5IERlbWlhbiBCcmVjaHQgaW4gOmlzc3VlOmAyMjExYC4pCisKKyogOnBlcDpgNDg4YCBoYXMgcmVtb3ZlZCBgYC5weW9gYCBmaWxlcyBmcm9tIFB5dGhvbiBhbmQgaW50cm9kdWNlZCB0aGUgb3B0aW9uYWwKKyAgYGBvcHQtYGAgdGFnIGluIGBgLnB5Y2BgIGZpbGUgbmFtZXMuIFRoZQorICA6ZnVuYzpgaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2VgIGhhcyBnYWluZWQgYW4gKm9wdGltaXphdGlvbioKKyAgcGFyYW1ldGVyIHRvIGhlbHAgY29udHJvbCB0aGUgYGBvcHQtYGAgdGFnLiBCZWNhdXNlIG9mIHRoaXMsIHRoZQorICAqZGVidWdfb3ZlcnJpZGUqIHBhcmFtZXRlciBvZiB0aGUgZnVuY3Rpb24gaXMgbm93IGRlcHJlY2F0ZWQuIGAucHlvYCBmaWxlcworICBhcmUgYWxzbyBubyBsb25nZXIgc3VwcG9ydGVkIGFzIGEgZmlsZSBhcmd1bWVudCB0byB0aGUgUHl0aG9uIGludGVycHJldGVyIGFuZAorICB0aHVzIHNlcnZlIG5vIHB1cnBvc2Ugd2hlbiBkaXN0cmlidXRlZCBvbiB0aGVpciBvd24gKGkuZS4gc291cmNsZXNzIGNvZGUKKyAgZGlzdHJpYnV0aW9uKS4gRHVlIHRvIHRoZSBmYWN0IHRoYXQgdGhlIG1hZ2ljIG51bWJlciBmb3IgYnl0ZWNvZGUgaGFzIGNoYW5nZWQKKyAgaW4gUHl0aG9uIDMuNSwgYWxsIG9sZCBgLnB5b2AgZmlsZXMgZnJvbSBwcmV2aW91cyB2ZXJzaW9ucyBvZiBQeXRob24gYXJlCisgIGludmFsaWQgcmVnYXJkbGVzcyBvZiB0aGlzIFBFUC4KKworKiBUaGUgOm1vZDpgc29ja2V0YCBtb2R1bGUgbm93IGV4cG9ydHMgdGhlIDpkYXRhOmB+c29ja2V0LkNBTl9SQVdfRkRfRlJBTUVTYAorICBjb25zdGFudCBvbiBsaW51eCAzLjYgYW5kIGdyZWF0ZXIuCisKKyogVGhlIDpmdW5jOmBzc2wuY2VydF90aW1lX3RvX3NlY29uZHNgIGZ1bmN0aW9uIG5vdyBpbnRlcnByZXRzIHRoZSBpbnB1dCB0aW1lCisgIGFzIFVUQyBhbmQgbm90IGFzIGxvY2FsIHRpbWUsIHBlciA6cmZjOmA1MjgwYC4gIEFkZGl0aW9uYWxseSwgdGhlIHJldHVybgorICB2YWx1ZSBpcyBhbHdheXMgYW4gOmNsYXNzOmBpbnRgLiAoQ29udHJpYnV0ZWQgYnkgQWtpcmEgTGkgaW4gOmlzc3VlOmAxOTk0MGAuKQorCisqIFRoZSBgYHB5Z2V0dGV4dC5weWBgIFRvb2wgbm93IHVzZXMgdGhlIHN0YW5kYXJkICtOTk5OIGZvcm1hdCBmb3IgdGltZXpvbmVzIGluCisgIHRoZSBQT1QtQ3JlYXRpb24tRGF0ZSBoZWFkZXIuCisKKyogVGhlIDptb2Q6YHNtdHBsaWJgIG1vZHVsZSBub3cgdXNlcyA6ZGF0YTpgc3lzLnN0ZGVycmAgaW5zdGVhZCBvZiB0aGUgcHJldmlvdXMKKyAgbW9kdWxlLWxldmVsIDpkYXRhOmBzdGRlcnJgIHZhcmlhYmxlIGZvciBkZWJ1ZyBvdXRwdXQuICBJZiB5b3VyICh0ZXN0KQorICBwcm9ncmFtIGRlcGVuZHMgb24gcGF0Y2hpbmcgdGhlIG1vZHVsZS1sZXZlbCB2YXJpYWJsZSB0byBjYXB0dXJlIHRoZSBkZWJ1ZworICBvdXRwdXQsIHlvdSB3aWxsIG5lZWQgdG8gdXBkYXRlIGl0IHRvIGNhcHR1cmUgc3lzLnN0ZGVyciBpbnN0ZWFkLgorCisqIFRoZSA6bWV0aDpgc3RyLnN0YXJ0c3dpdGhgIGFuZCA6bWV0aDpgc3RyLmVuZHN3aXRoYCBtZXRob2RzIG5vIGxvbmdlciByZXR1cm4KKyAgYGBUcnVlYGAgd2hlbiBmaW5kaW5nIHRoZSBlbXB0eSBzdHJpbmcgYW5kIHRoZSBpbmRleGVzIGFyZSBjb21wbGV0ZWx5IG91dCBvZgorICByYW5nZS4gIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjQyODRgLikKKworKiBUaGUgOmZ1bmM6YGluc3BlY3QuZ2V0ZG9jYCBmdW5jdGlvbiBub3cgcmV0dXJucyBkb2N1bWVudGF0aW9uIHN0cmluZ3MKKyAgaW5oZXJpdGVkIGZyb20gYmFzZSBjbGFzc2VzLiAgRG9jdW1lbnRhdGlvbiBzdHJpbmdzIG5vIGxvbmdlciBuZWVkIHRvIGJlCisgIGR1cGxpY2F0ZWQgaWYgdGhlIGluaGVyaXRlZCBkb2N1bWVudGF0aW9uIGlzIGFwcHJvcHJpYXRlLiAgVG8gc3VwcHJlc3MgYW4KKyAgaW5oZXJpdGVkIHN0cmluZywgYW4gZW1wdHkgc3RyaW5nIG11c3QgYmUgc3BlY2lmaWVkIChvciB0aGUgZG9jdW1lbnRhdGlvbgorICBtYXkgYmUgZmlsbGVkIGluKS4gIFRoaXMgY2hhbmdlIGFmZmVjdHMgdGhlIG91dHB1dCBvZiB0aGUgOm1vZDpgcHlkb2NgCisgIG1vZHVsZSBhbmQgdGhlIDpmdW5jOmBoZWxwYCBmdW5jdGlvbi4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxNTU4MmAuKQorCisqIE5lc3RlZCA6ZnVuYzpgZnVuY3Rvb2xzLnBhcnRpYWxgIGNhbGxzIGFyZSBub3cgZmxhdHRlbmVkLiAgSWYgeW91IHdlcmUKKyAgcmVseWluZyBvbiB0aGUgcHJldmlvdXMgYmVoYXZpb3IsIHlvdSBjYW4gbm93IGVpdGhlciBhZGQgYW4gYXR0cmlidXRlIHRvIGEKKyAgOmZ1bmM6YGZ1bmN0b29scy5wYXJ0aWFsYCBvYmplY3Qgb3IgeW91IGNhbiBjcmVhdGUgYSBzdWJjbGFzcyBvZgorICA6ZnVuYzpgZnVuY3Rvb2xzLnBhcnRpYWxgLgorICAoQ29udHJpYnV0ZWQgYnkgQWxleGFuZGVyIEJlbG9wb2xza3kgaW4gOmlzc3VlOmA3ODMwYC4pCisKK0NoYW5nZXMgaW4gdGhlIEMgQVBJCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSB1bmRvY3VtZW50ZWQgOmM6bWVtYmVyOmB+UHlNZW1vcnlWaWV3T2JqZWN0LmZvcm1hdGAgbWVtYmVyIG9mIHRoZQorICAobm9uLXB1YmxpYykgOmM6dHlwZTpgUHlNZW1vcnlWaWV3T2JqZWN0YCBzdHJ1Y3R1cmUgaGFzIGJlZW4gcmVtb3ZlZC4KKyAgQWxsIGV4dGVuc2lvbnMgcmVseWluZyBvbiB0aGUgcmVsZXZhbnQgcGFydHMgaW4gYGBtZW1vcnlvYmplY3QuaGBgCisgIG11c3QgYmUgcmVidWlsdC4KKworKiBUaGUgOmM6dHlwZTpgUHlNZW1BbGxvY2F0b3JgIHN0cnVjdHVyZSB3YXMgcmVuYW1lZCB0bworICA6Yzp0eXBlOmBQeU1lbUFsbG9jYXRvckV4YCBhbmQgYSBuZXcgYGBjYWxsb2NgYCBmaWVsZCB3YXMgYWRkZWQuCisKKyogUmVtb3ZlZCBub24tZG9jdW1lbnRlZCBtYWNybyA6YzptYWNybzpgUHlPYmplY3RfUkVQUmAgd2hpY2ggbGVha2VkIHJlZmVyZW5jZXMuCisgIFVzZSBmb3JtYXQgY2hhcmFjdGVyIGBgJVJgYCBpbiA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbUZvcm1hdGAtbGlrZSBmdW5jdGlvbnMKKyAgdG8gZm9ybWF0IHRoZSA6ZnVuYzpgcmVwcmAgb2YgdGhlIG9iamVjdC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMjQ1M2AuKQorCisqIEJlY2F1c2UgdGhlIGxhY2sgb2YgdGhlIDphdHRyOmBfX21vZHVsZV9fYCBhdHRyaWJ1dGUgYnJlYWtzIHBpY2tsaW5nIGFuZAorICBpbnRyb3NwZWN0aW9uLCBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgaXMgbm93IHJhaXNlZCBmb3IgYnVpbHRpbiB0eXBlcyB3aXRob3V0CisgIHRoZSA6YXR0cjpgX19tb2R1bGVfX2AgYXR0cmlidXRlLiAgVGhpcyB3b3VsZCBiZSBhbiBBdHRyaWJ1dGVFcnJvciBpbgorICB0aGUgZnV0dXJlLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIwMjA0YC4pCisKKyogQXMgcGFydCBvZiB0aGUgOnBlcDpgNDkyYCBpbXBsZW1lbnRhdGlvbiwgdGhlIGBgdHBfcmVzZXJ2ZWRgYCBzbG90IG9mCisgIDpjOnR5cGU6YFB5VHlwZU9iamVjdGAgd2FzIHJlcGxhY2VkIHdpdGggYQorICA6YzptZW1iZXI6YHRwX2FzX2FzeW5jYCBzbG90LiAgUmVmZXIgdG8gOnJlZjpgY29yby1vYmplY3RzYCBmb3IKKyAgbmV3IHR5cGVzLCBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbnMuCisKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy9pbmRleC5yc3QgYi9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0CmluZGV4IDI5OTAyZTQuLmVkYjU1MDIgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy9pbmRleC5yc3QKKysrIGIvRG9jL3doYXRzbmV3L2luZGV4LnJzdApAQCAtMTEsNiArMTEsNyBAQAogLi4gdG9jdHJlZTo6CiAgICA6bWF4ZGVwdGg6IDIKIAorICAgMy41LnJzdAogICAgMy40LnJzdAogICAgMy4zLnJzdAogICAgMy4yLnJzdApkaWZmIC0tZ2l0IGEvR3JhbW1hci9HcmFtbWFyIGIvR3JhbW1hci9HcmFtbWFyCmluZGV4IDA1YzMxODEuLjk5ZmNlYTAgMTAwNjQ0Ci0tLSBhL0dyYW1tYXIvR3JhbW1hcgorKysgYi9HcmFtbWFyL0dyYW1tYXIKQEAgLTIxLDggKzIxLDExIEBACiAKIGRlY29yYXRvcjogJ0AnIGRvdHRlZF9uYW1lIFsgJygnIFthcmdsaXN0XSAnKScgXSBORVdMSU5FCiBkZWNvcmF0b3JzOiBkZWNvcmF0b3IrCi1kZWNvcmF0ZWQ6IGRlY29yYXRvcnMgKGNsYXNzZGVmIHwgZnVuY2RlZikKK2RlY29yYXRlZDogZGVjb3JhdG9ycyAoY2xhc3NkZWYgfCBmdW5jZGVmIHwgYXN5bmNfZnVuY2RlZikKKworYXN5bmNfZnVuY2RlZjogQVNZTkMgZnVuY2RlZgogZnVuY2RlZjogJ2RlZicgTkFNRSBwYXJhbWV0ZXJzIFsnLT4nIHRlc3RdICc6JyBzdWl0ZQorCiBwYXJhbWV0ZXJzOiAnKCcgW3R5cGVkYXJnc2xpc3RdICcpJwogdHlwZWRhcmdzbGlzdDogKHRmcGRlZiBbJz0nIHRlc3RdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnCiAgICAgICAgWycqJyBbdGZwZGVmXSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJyAnKionIHRmcGRlZl0gfCAnKionIHRmcGRlZl1dCkBAIC00MCw3ICs0Myw3IEBACiBleHByX3N0bXQ6IHRlc3RsaXN0X3N0YXJfZXhwciAoYXVnYXNzaWduICh5aWVsZF9leHByfHRlc3RsaXN0KSB8CiAgICAgICAgICAgICAgICAgICAgICAoJz0nICh5aWVsZF9leHByfHRlc3RsaXN0X3N0YXJfZXhwcikpKikKIHRlc3RsaXN0X3N0YXJfZXhwcjogKHRlc3R8c3Rhcl9leHByKSAoJywnICh0ZXN0fHN0YXJfZXhwcikpKiBbJywnXQotYXVnYXNzaWduOiAoJys9JyB8ICctPScgfCAnKj0nIHwgJy89JyB8ICclPScgfCAnJj0nIHwgJ3w9JyB8ICdePScgfAorYXVnYXNzaWduOiAoJys9JyB8ICctPScgfCAnKj0nIHwgJ0A9JyB8ICcvPScgfCAnJT0nIHwgJyY9JyB8ICd8PScgfCAnXj0nIHwKICAgICAgICAgICAgICc8PD0nIHwgJz4+PScgfCAnKio9JyB8ICcvLz0nKQogIyBGb3Igbm9ybWFsIGFzc2lnbm1lbnRzLCBhZGRpdGlvbmFsIHJlc3RyaWN0aW9ucyBlbmZvcmNlZCBieSB0aGUgaW50ZXJwcmV0ZXIKIGRlbF9zdG10OiAnZGVsJyBleHBybGlzdApAQCAtNjUsNyArNjgsOCBAQAogbm9ubG9jYWxfc3RtdDogJ25vbmxvY2FsJyBOQU1FICgnLCcgTkFNRSkqCiBhc3NlcnRfc3RtdDogJ2Fzc2VydCcgdGVzdCBbJywnIHRlc3RdCiAKLWNvbXBvdW5kX3N0bXQ6IGlmX3N0bXQgfCB3aGlsZV9zdG10IHwgZm9yX3N0bXQgfCB0cnlfc3RtdCB8IHdpdGhfc3RtdCB8IGZ1bmNkZWYgfCBjbGFzc2RlZiB8IGRlY29yYXRlZAorY29tcG91bmRfc3RtdDogaWZfc3RtdCB8IHdoaWxlX3N0bXQgfCBmb3Jfc3RtdCB8IHRyeV9zdG10IHwgd2l0aF9zdG10IHwgZnVuY2RlZiB8IGNsYXNzZGVmIHwgZGVjb3JhdGVkIHwgYXN5bmNfc3RtdAorYXN5bmNfc3RtdDogQVNZTkMgKGZ1bmNkZWYgfCB3aXRoX3N0bXQgfCBmb3Jfc3RtdCkKIGlmX3N0bXQ6ICdpZicgdGVzdCAnOicgc3VpdGUgKCdlbGlmJyB0ZXN0ICc6JyBzdWl0ZSkqIFsnZWxzZScgJzonIHN1aXRlXQogd2hpbGVfc3RtdDogJ3doaWxlJyB0ZXN0ICc6JyBzdWl0ZSBbJ2Vsc2UnICc6JyBzdWl0ZV0KIGZvcl9zdG10OiAnZm9yJyBleHBybGlzdCAnaW4nIHRlc3RsaXN0ICc6JyBzdWl0ZSBbJ2Vsc2UnICc6JyBzdWl0ZV0KQEAgLTg5LDcgKzkzLDcgQEAKIG5vdF90ZXN0OiAnbm90JyBub3RfdGVzdCB8IGNvbXBhcmlzb24KIGNvbXBhcmlzb246IGV4cHIgKGNvbXBfb3AgZXhwcikqCiAjIDw+IGlzbid0IGFjdHVhbGx5IGEgdmFsaWQgY29tcGFyaXNvbiBvcGVyYXRvciBpbiBQeXRob24uIEl0J3MgaGVyZSBmb3IgdGhlCi0jIHNha2Ugb2YgYSBfX2Z1dHVyZV9fIGltcG9ydCBkZXNjcmliZWQgaW4gUEVQIDQwMQorIyBzYWtlIG9mIGEgX19mdXR1cmVfXyBpbXBvcnQgZGVzY3JpYmVkIGluIFBFUCA0MDEgKHdoaWNoIHJlYWxseSB3b3JrcyA6LSkKIGNvbXBfb3A6ICc8J3wnPid8Jz09J3wnPj0nfCc8PSd8Jzw+J3wnIT0nfCdpbid8J25vdCcgJ2luJ3wnaXMnfCdpcycgJ25vdCcKIHN0YXJfZXhwcjogJyonIGV4cHIKIGV4cHI6IHhvcl9leHByICgnfCcgeG9yX2V4cHIpKgpAQCAtOTcsOSArMTAxLDEwIEBACiBhbmRfZXhwcjogc2hpZnRfZXhwciAoJyYnIHNoaWZ0X2V4cHIpKgogc2hpZnRfZXhwcjogYXJpdGhfZXhwciAoKCc8PCd8Jz4+JykgYXJpdGhfZXhwcikqCiBhcml0aF9leHByOiB0ZXJtICgoJysnfCctJykgdGVybSkqCi10ZXJtOiBmYWN0b3IgKCgnKid8Jy8nfCclJ3wnLy8nKSBmYWN0b3IpKgordGVybTogZmFjdG9yICgoJyonfCdAJ3wnLyd8JyUnfCcvLycpIGZhY3RvcikqCiBmYWN0b3I6ICgnKyd8Jy0nfCd+JykgZmFjdG9yIHwgcG93ZXIKLXBvd2VyOiBhdG9tIHRyYWlsZXIqIFsnKionIGZhY3Rvcl0KK3Bvd2VyOiBhdG9tX2V4cHIgWycqKicgZmFjdG9yXQorYXRvbV9leHByOiBbQVdBSVRdIGF0b20gdHJhaWxlcioKIGF0b206ICgnKCcgW3lpZWxkX2V4cHJ8dGVzdGxpc3RfY29tcF0gJyknIHwKICAgICAgICAnWycgW3Rlc3RsaXN0X2NvbXBdICddJyB8CiAgICAgICAgJ3snIFtkaWN0b3JzZXRtYWtlcl0gJ30nIHwKQEAgLTExMSwxNyArMTE2LDI5IEBACiBzbGljZW9wOiAnOicgW3Rlc3RdCiBleHBybGlzdDogKGV4cHJ8c3Rhcl9leHByKSAoJywnIChleHByfHN0YXJfZXhwcikpKiBbJywnXQogdGVzdGxpc3Q6IHRlc3QgKCcsJyB0ZXN0KSogWycsJ10KLWRpY3RvcnNldG1ha2VyOiAoICh0ZXN0ICc6JyB0ZXN0IChjb21wX2ZvciB8ICgnLCcgdGVzdCAnOicgdGVzdCkqIFsnLCddKSkgfAotICAgICAgICAgICAgICAgICAgKHRlc3QgKGNvbXBfZm9yIHwgKCcsJyB0ZXN0KSogWycsJ10pKSApCitkaWN0b3JzZXRtYWtlcjogKCAoKHRlc3QgJzonIHRlc3QgfCAnKionIGV4cHIpCisgICAgICAgICAgICAgICAgICAgKGNvbXBfZm9yIHwgKCcsJyAodGVzdCAnOicgdGVzdCB8ICcqKicgZXhwcikpKiBbJywnXSkpIHwKKyAgICAgICAgICAgICAgICAgICgodGVzdCB8IHN0YXJfZXhwcikKKyAgICAgICAgICAgICAgICAgICAoY29tcF9mb3IgfCAoJywnICh0ZXN0IHwgc3Rhcl9leHByKSkqIFsnLCddKSkgKQogCiBjbGFzc2RlZjogJ2NsYXNzJyBOQU1FIFsnKCcgW2FyZ2xpc3RdICcpJ10gJzonIHN1aXRlCiAKLWFyZ2xpc3Q6IChhcmd1bWVudCAnLCcpKiAoYXJndW1lbnQgWycsJ10KLSAgICAgICAgICAgICAgICAgICAgICAgICB8JyonIHRlc3QgKCcsJyBhcmd1bWVudCkqIFsnLCcgJyoqJyB0ZXN0XSAKLSAgICAgICAgICAgICAgICAgICAgICAgICB8JyoqJyB0ZXN0KQorYXJnbGlzdDogYXJndW1lbnQgKCcsJyBhcmd1bWVudCkqICBbJywnXQorCiAjIFRoZSByZWFzb24gdGhhdCBrZXl3b3JkcyBhcmUgdGVzdCBub2RlcyBpbnN0ZWFkIG9mIE5BTUUgaXMgdGhhdCB1c2luZyBOQU1FCiAjIHJlc3VsdHMgaW4gYW4gYW1iaWd1aXR5LiBhc3QuYyBtYWtlcyBzdXJlIGl0J3MgYSBOQU1FLgotYXJndW1lbnQ6IHRlc3QgW2NvbXBfZm9yXSB8IHRlc3QgJz0nIHRlc3QgICMgUmVhbGx5IFtrZXl3b3JkICc9J10gdGVzdAorIyAidGVzdCAnPScgdGVzdCIgaXMgcmVhbGx5ICJrZXl3b3JkICc9JyB0ZXN0IiwgYnV0IHdlIGhhdmUgbm8gc3VjaCB0b2tlbi4KKyMgVGhlc2UgbmVlZCB0byBiZSBpbiBhIHNpbmdsZSBydWxlIHRvIGF2b2lkIGdyYW1tYXIgdGhhdCBpcyBhbWJpZ3VvdXMKKyMgdG8gb3VyIExMKDEpIHBhcnNlci4gRXZlbiB0aG91Z2ggJ3Rlc3QnIGluY2x1ZGVzICcqZXhwcicgaW4gc3Rhcl9leHByLAorIyB3ZSBleHBsaWNpdGx5IG1hdGNoICcqJyBoZXJlLCB0b28sIHRvIGdpdmUgaXQgcHJvcGVyIHByZWNlZGVuY2UuCisjIElsbGVnYWwgY29tYmluYXRpb25zIGFuZCBvcmRlcmluZ3MgYXJlIGJsb2NrZWQgaW4gYXN0LmM6CisjIG11bHRpcGxlICh0ZXN0IGNvbXBfZm9yKSBhcmd1ZW1lbnRzIGFyZSBibG9ja2VkOyBrZXl3b3JkIHVucGFja2luZ3MKKyMgdGhhdCBwcmVjZWRlIGl0ZXJhYmxlIHVucGFja2luZ3MgYXJlIGJsb2NrZWQ7IGV0Yy4KK2FyZ3VtZW50OiAoIHRlc3QgW2NvbXBfZm9yXSB8CisgICAgICAgICAgICB0ZXN0ICc9JyB0ZXN0IHwKKyAgICAgICAgICAgICcqKicgdGVzdCB8CisgICAgICAgICAgICAnKicgdGVzdCApCisKIGNvbXBfaXRlcjogY29tcF9mb3IgfCBjb21wX2lmCiBjb21wX2ZvcjogJ2ZvcicgZXhwcmxpc3QgJ2luJyBvcl90ZXN0IFtjb21wX2l0ZXJdCiBjb21wX2lmOiAnaWYnIHRlc3Rfbm9jb25kIFtjb21wX2l0ZXJdCmRpZmYgLS1naXQgYS9JbmNsdWRlL1B5dGhvbi1hc3QuaCBiL0luY2x1ZGUvUHl0aG9uLWFzdC5oCmluZGV4IDY3ZDY3N2IuLjJkM2VhY2IgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvUHl0aG9uLWFzdC5oCisrKyBiL0luY2x1ZGUvUHl0aG9uLWFzdC5oCkBAIC0xNSw5ICsxNSw5IEBACiAKIHR5cGVkZWYgZW51bSBfYm9vbG9wIHsgQW5kPTEsIE9yPTIgfSBib29sb3BfdHk7CiAKLXR5cGVkZWYgZW51bSBfb3BlcmF0b3IgeyBBZGQ9MSwgU3ViPTIsIE11bHQ9MywgRGl2PTQsIE1vZD01LCBQb3c9NiwgTFNoaWZ0PTcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUlNoaWZ0PTgsIEJpdE9yPTksIEJpdFhvcj0xMCwgQml0QW5kPTExLCBGbG9vckRpdj0xMiB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3JfdHk7Cit0eXBlZGVmIGVudW0gX29wZXJhdG9yIHsgQWRkPTEsIFN1Yj0yLCBNdWx0PTMsIE1hdE11bHQ9NCwgRGl2PTUsIE1vZD02LCBQb3c9NywKKyAgICAgICAgICAgICAgICAgICAgICAgICBMU2hpZnQ9OCwgUlNoaWZ0PTksIEJpdE9yPTEwLCBCaXRYb3I9MTEsIEJpdEFuZD0xMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGbG9vckRpdj0xMyB9IG9wZXJhdG9yX3R5OwogCiB0eXBlZGVmIGVudW0gX3VuYXJ5b3AgeyBJbnZlcnQ9MSwgTm90PTIsIFVBZGQ9MywgVVN1Yj00IH0gdW5hcnlvcF90eTsKIApAQCAtNjMsMTIgKzYzLDEzIEBACiAgICAgfSB2OwogfTsKIAotZW51bSBfc3RtdF9raW5kIHtGdW5jdGlvbkRlZl9raW5kPTEsIENsYXNzRGVmX2tpbmQ9MiwgUmV0dXJuX2tpbmQ9MywKLSAgICAgICAgICAgICAgICAgIERlbGV0ZV9raW5kPTQsIEFzc2lnbl9raW5kPTUsIEF1Z0Fzc2lnbl9raW5kPTYsIEZvcl9raW5kPTcsCi0gICAgICAgICAgICAgICAgICBXaGlsZV9raW5kPTgsIElmX2tpbmQ9OSwgV2l0aF9raW5kPTEwLCBSYWlzZV9raW5kPTExLAotICAgICAgICAgICAgICAgICAgVHJ5X2tpbmQ9MTIsIEFzc2VydF9raW5kPTEzLCBJbXBvcnRfa2luZD0xNCwKLSAgICAgICAgICAgICAgICAgIEltcG9ydEZyb21fa2luZD0xNSwgR2xvYmFsX2tpbmQ9MTYsIE5vbmxvY2FsX2tpbmQ9MTcsCi0gICAgICAgICAgICAgICAgICBFeHByX2tpbmQ9MTgsIFBhc3Nfa2luZD0xOSwgQnJlYWtfa2luZD0yMCwgQ29udGludWVfa2luZD0yMX07CitlbnVtIF9zdG10X2tpbmQge0Z1bmN0aW9uRGVmX2tpbmQ9MSwgQXN5bmNGdW5jdGlvbkRlZl9raW5kPTIsIENsYXNzRGVmX2tpbmQ9MywKKyAgICAgICAgICAgICAgICAgIFJldHVybl9raW5kPTQsIERlbGV0ZV9raW5kPTUsIEFzc2lnbl9raW5kPTYsCisgICAgICAgICAgICAgICAgICBBdWdBc3NpZ25fa2luZD03LCBGb3Jfa2luZD04LCBBc3luY0Zvcl9raW5kPTksIFdoaWxlX2tpbmQ9MTAsCisgICAgICAgICAgICAgICAgICBJZl9raW5kPTExLCBXaXRoX2tpbmQ9MTIsIEFzeW5jV2l0aF9raW5kPTEzLCBSYWlzZV9raW5kPTE0LAorICAgICAgICAgICAgICAgICAgVHJ5X2tpbmQ9MTUsIEFzc2VydF9raW5kPTE2LCBJbXBvcnRfa2luZD0xNywKKyAgICAgICAgICAgICAgICAgIEltcG9ydEZyb21fa2luZD0xOCwgR2xvYmFsX2tpbmQ9MTksIE5vbmxvY2FsX2tpbmQ9MjAsCisgICAgICAgICAgICAgICAgICBFeHByX2tpbmQ9MjEsIFBhc3Nfa2luZD0yMiwgQnJlYWtfa2luZD0yMywgQ29udGludWVfa2luZD0yNH07CiBzdHJ1Y3QgX3N0bXQgewogICAgIGVudW0gX3N0bXRfa2luZCBraW5kOwogICAgIHVuaW9uIHsKQEAgLTgyLDEwICs4MywxNiBAQAogICAgICAgICAKICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIGlkZW50aWZpZXIgbmFtZTsKKyAgICAgICAgICAgIGFyZ3VtZW50c190eSBhcmdzOworICAgICAgICAgICAgYXNkbF9zZXEgKmJvZHk7CisgICAgICAgICAgICBhc2RsX3NlcSAqZGVjb3JhdG9yX2xpc3Q7CisgICAgICAgICAgICBleHByX3R5IHJldHVybnM7CisgICAgICAgIH0gQXN5bmNGdW5jdGlvbkRlZjsKKyAgICAgICAgCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBpZGVudGlmaWVyIG5hbWU7CiAgICAgICAgICAgICBhc2RsX3NlcSAqYmFzZXM7CiAgICAgICAgICAgICBhc2RsX3NlcSAqa2V5d29yZHM7Ci0gICAgICAgICAgICBleHByX3R5IHN0YXJhcmdzOwotICAgICAgICAgICAgZXhwcl90eSBrd2FyZ3M7CiAgICAgICAgICAgICBhc2RsX3NlcSAqYm9keTsKICAgICAgICAgICAgIGFzZGxfc2VxICpkZWNvcmF0b3JfbGlzdDsKICAgICAgICAgfSBDbGFzc0RlZjsKQEAgLTExNyw2ICsxMjQsMTMgQEAKICAgICAgICAgfSBGb3I7CiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgZXhwcl90eSB0YXJnZXQ7CisgICAgICAgICAgICBleHByX3R5IGl0ZXI7CisgICAgICAgICAgICBhc2RsX3NlcSAqYm9keTsKKyAgICAgICAgICAgIGFzZGxfc2VxICpvcmVsc2U7CisgICAgICAgIH0gQXN5bmNGb3I7CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgZXhwcl90eSB0ZXN0OwogICAgICAgICAgICAgYXNkbF9zZXEgKmJvZHk7CiAgICAgICAgICAgICBhc2RsX3NlcSAqb3JlbHNlOwpAQCAtMTM0LDYgKzE0OCwxMSBAQAogICAgICAgICB9IFdpdGg7CiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgYXNkbF9zZXEgKml0ZW1zOworICAgICAgICAgICAgYXNkbF9zZXEgKmJvZHk7CisgICAgICAgIH0gQXN5bmNXaXRoOworICAgICAgICAKKyAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIGV4cHJfdHkgZXhjOwogICAgICAgICAgICAgZXhwcl90eSBjYXVzZTsKICAgICAgICAgfSBSYWlzZTsKQEAgLTE4MCwxMSArMTk5LDExIEBACiBlbnVtIF9leHByX2tpbmQge0Jvb2xPcF9raW5kPTEsIEJpbk9wX2tpbmQ9MiwgVW5hcnlPcF9raW5kPTMsIExhbWJkYV9raW5kPTQsCiAgICAgICAgICAgICAgICAgICBJZkV4cF9raW5kPTUsIERpY3Rfa2luZD02LCBTZXRfa2luZD03LCBMaXN0Q29tcF9raW5kPTgsCiAgICAgICAgICAgICAgICAgICBTZXRDb21wX2tpbmQ9OSwgRGljdENvbXBfa2luZD0xMCwgR2VuZXJhdG9yRXhwX2tpbmQ9MTEsCi0gICAgICAgICAgICAgICAgICBZaWVsZF9raW5kPTEyLCBZaWVsZEZyb21fa2luZD0xMywgQ29tcGFyZV9raW5kPTE0LAotICAgICAgICAgICAgICAgICAgQ2FsbF9raW5kPTE1LCBOdW1fa2luZD0xNiwgU3RyX2tpbmQ9MTcsIEJ5dGVzX2tpbmQ9MTgsCi0gICAgICAgICAgICAgICAgICBOYW1lQ29uc3RhbnRfa2luZD0xOSwgRWxsaXBzaXNfa2luZD0yMCwgQXR0cmlidXRlX2tpbmQ9MjEsCi0gICAgICAgICAgICAgICAgICBTdWJzY3JpcHRfa2luZD0yMiwgU3RhcnJlZF9raW5kPTIzLCBOYW1lX2tpbmQ9MjQsCi0gICAgICAgICAgICAgICAgICBMaXN0X2tpbmQ9MjUsIFR1cGxlX2tpbmQ9MjZ9OworICAgICAgICAgICAgICAgICAgQXdhaXRfa2luZD0xMiwgWWllbGRfa2luZD0xMywgWWllbGRGcm9tX2tpbmQ9MTQsCisgICAgICAgICAgICAgICAgICBDb21wYXJlX2tpbmQ9MTUsIENhbGxfa2luZD0xNiwgTnVtX2tpbmQ9MTcsIFN0cl9raW5kPTE4LAorICAgICAgICAgICAgICAgICAgQnl0ZXNfa2luZD0xOSwgTmFtZUNvbnN0YW50X2tpbmQ9MjAsIEVsbGlwc2lzX2tpbmQ9MjEsCisgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVfa2luZD0yMiwgU3Vic2NyaXB0X2tpbmQ9MjMsIFN0YXJyZWRfa2luZD0yNCwKKyAgICAgICAgICAgICAgICAgIE5hbWVfa2luZD0yNSwgTGlzdF9raW5kPTI2LCBUdXBsZV9raW5kPTI3fTsKIHN0cnVjdCBfZXhwciB7CiAgICAgZW51bSBfZXhwcl9raW5kIGtpbmQ7CiAgICAgdW5pb24gewpAQCAtMjQ3LDYgKzI2NiwxMCBAQAogICAgICAgICAKICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgIH0gQXdhaXQ7CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKICAgICAgICAgfSBZaWVsZDsKICAgICAgICAgCiAgICAgICAgIHN0cnVjdCB7CkBAIC0yNjMsOCArMjg2LDYgQEAKICAgICAgICAgICAgIGV4cHJfdHkgZnVuYzsKICAgICAgICAgICAgIGFzZGxfc2VxICphcmdzOwogICAgICAgICAgICAgYXNkbF9zZXEgKmtleXdvcmRzOwotICAgICAgICAgICAgZXhwcl90eSBzdGFyYXJnczsKLSAgICAgICAgICAgIGV4cHJfdHkga3dhcmdzOwogICAgICAgICB9IENhbGw7CiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgewpAQCAtNDA2LDExICs0MjcsMTQgQEAKIHN0bXRfdHkgX1B5X0Z1bmN0aW9uRGVmKGlkZW50aWZpZXIgbmFtZSwgYXJndW1lbnRzX3R5IGFyZ3MsIGFzZGxfc2VxICogYm9keSwKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICogZGVjb3JhdG9yX2xpc3QsIGV4cHJfdHkgcmV0dXJucywgaW50IGxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7Ci0jZGVmaW5lIENsYXNzRGVmKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KSBfUHlfQ2xhc3NEZWYoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpCisjZGVmaW5lIEFzeW5jRnVuY3Rpb25EZWYoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSBfUHlfQXN5bmNGdW5jdGlvbkRlZihhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpCitzdG10X3R5IF9QeV9Bc3luY0Z1bmN0aW9uRGVmKGlkZW50aWZpZXIgbmFtZSwgYXJndW1lbnRzX3R5IGFyZ3MsIGFzZGxfc2VxICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keSwgYXNkbF9zZXEgKiBkZWNvcmF0b3JfbGlzdCwgZXhwcl90eSByZXR1cm5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBDbGFzc0RlZihhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpIF9QeV9DbGFzc0RlZihhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpCiBzdG10X3R5IF9QeV9DbGFzc0RlZihpZGVudGlmaWVyIG5hbWUsIGFzZGxfc2VxICogYmFzZXMsIGFzZGxfc2VxICoga2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgICBleHByX3R5IHN0YXJhcmdzLCBleHByX3R5IGt3YXJncywgYXNkbF9zZXEgKiBib2R5LAotICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKiBkZWNvcmF0b3JfbGlzdCwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICBQeUFyZW5hICphcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogZGVjb3JhdG9yX2xpc3QsIGludCBsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBSZXR1cm4oYTAsIGExLCBhMiwgYTMpIF9QeV9SZXR1cm4oYTAsIGExLCBhMiwgYTMpCiBzdG10X3R5IF9QeV9SZXR1cm4oZXhwcl90eSB2YWx1ZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgRGVsZXRlKGEwLCBhMSwgYTIsIGEzKSBfUHlfRGVsZXRlKGEwLCBhMSwgYTIsIGEzKQpAQCAtNDI1LDYgKzQ0OSw5IEBACiAjZGVmaW5lIEZvcihhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgX1B5X0ZvcihhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikKIHN0bXRfdHkgX1B5X0ZvcihleHByX3R5IHRhcmdldCwgZXhwcl90eSBpdGVyLCBhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICoKICAgICAgICAgICAgICAgICBvcmVsc2UsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIEFzeW5jRm9yKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSBfUHlfQXN5bmNGb3IoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpCitzdG10X3R5IF9QeV9Bc3luY0ZvcihleHByX3R5IHRhcmdldCwgZXhwcl90eSBpdGVyLCBhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICoKKyAgICAgICAgICAgICAgICAgICAgIG9yZWxzZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgV2hpbGUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X1doaWxlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpCiBzdG10X3R5IF9QeV9XaGlsZShleHByX3R5IHRlc3QsIGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBvcmVsc2UsIGludCBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwpAQCAtNDM0LDYgKzQ2MSw5IEBACiAjZGVmaW5lIFdpdGgoYTAsIGExLCBhMiwgYTMsIGE0KSBfUHlfV2l0aChhMCwgYTEsIGEyLCBhMywgYTQpCiBzdG10X3R5IF9QeV9XaXRoKGFzZGxfc2VxICogaXRlbXMsIGFzZGxfc2VxICogYm9keSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgQXN5bmNXaXRoKGEwLCBhMSwgYTIsIGEzLCBhNCkgX1B5X0FzeW5jV2l0aChhMCwgYTEsIGEyLCBhMywgYTQpCitzdG10X3R5IF9QeV9Bc3luY1dpdGgoYXNkbF9zZXEgKiBpdGVtcywgYXNkbF9zZXEgKiBib2R5LCBpbnQgbGluZW5vLCBpbnQKKyAgICAgICAgICAgICAgICAgICAgICBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIFJhaXNlKGEwLCBhMSwgYTIsIGEzLCBhNCkgX1B5X1JhaXNlKGEwLCBhMSwgYTIsIGEzLCBhNCkKIHN0bXRfdHkgX1B5X1JhaXNlKGV4cHJfdHkgZXhjLCBleHByX3R5IGNhdXNlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwKICAgICAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTQ5Niw2ICs1MjYsOCBAQAogI2RlZmluZSBHZW5lcmF0b3JFeHAoYTAsIGExLCBhMiwgYTMsIGE0KSBfUHlfR2VuZXJhdG9yRXhwKGEwLCBhMSwgYTIsIGEzLCBhNCkKIGV4cHJfdHkgX1B5X0dlbmVyYXRvckV4cChleHByX3R5IGVsdCwgYXNkbF9zZXEgKiBnZW5lcmF0b3JzLCBpbnQgbGluZW5vLCBpbnQKICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIEF3YWl0KGEwLCBhMSwgYTIsIGEzKSBfUHlfQXdhaXQoYTAsIGExLCBhMiwgYTMpCitleHByX3R5IF9QeV9Bd2FpdChleHByX3R5IHZhbHVlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBZaWVsZChhMCwgYTEsIGEyLCBhMykgX1B5X1lpZWxkKGEwLCBhMSwgYTIsIGEzKQogZXhwcl90eSBfUHlfWWllbGQoZXhwcl90eSB2YWx1ZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgWWllbGRGcm9tKGEwLCBhMSwgYTIsIGEzKSBfUHlfWWllbGRGcm9tKGEwLCBhMSwgYTIsIGEzKQpAQCAtNTA0LDEwICs1MzYsOSBAQAogI2RlZmluZSBDb21wYXJlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9Db21wYXJlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpCiBleHByX3R5IF9QeV9Db21wYXJlKGV4cHJfdHkgbGVmdCwgYXNkbF9pbnRfc2VxICogb3BzLCBhc2RsX3NlcSAqIGNvbXBhcmF0b3JzLAogICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwotI2RlZmluZSBDYWxsKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykgX1B5X0NhbGwoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KQotZXhwcl90eSBfUHlfQ2FsbChleHByX3R5IGZ1bmMsIGFzZGxfc2VxICogYXJncywgYXNkbF9zZXEgKiBrZXl3b3JkcywgZXhwcl90eQotICAgICAgICAgICAgICAgICBzdGFyYXJncywgZXhwcl90eSBrd2FyZ3MsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hCi0gICAgICAgICAgICAgICAgICphcmVuYSk7CisjZGVmaW5lIENhbGwoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X0NhbGwoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKK2V4cHJfdHkgX1B5X0NhbGwoZXhwcl90eSBmdW5jLCBhc2RsX3NlcSAqIGFyZ3MsIGFzZGxfc2VxICoga2V5d29yZHMsIGludAorICAgICAgICAgICAgICAgICBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIE51bShhMCwgYTEsIGEyLCBhMykgX1B5X051bShhMCwgYTEsIGEyLCBhMykKIGV4cHJfdHkgX1B5X051bShvYmplY3QgbiwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgU3RyKGEwLCBhMSwgYTIsIGEzKSBfUHlfU3RyKGEwLCBhMSwgYTIsIGEzKQpAQCAtNTU0LDggKzU4NSw5IEBACiBhcmd1bWVudHNfdHkgX1B5X2FyZ3VtZW50cyhhc2RsX3NlcSAqIGFyZ3MsIGFyZ190eSB2YXJhcmcsIGFzZGxfc2VxICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3b25seWFyZ3MsIGFzZGxfc2VxICoga3dfZGVmYXVsdHMsIGFyZ190eSBrd2FyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICogZGVmYXVsdHMsIFB5QXJlbmEgKmFyZW5hKTsKLSNkZWZpbmUgYXJnKGEwLCBhMSwgYTIpIF9QeV9hcmcoYTAsIGExLCBhMikKLWFyZ190eSBfUHlfYXJnKGlkZW50aWZpZXIgYXJnLCBleHByX3R5IGFubm90YXRpb24sIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgYXJnKGEwLCBhMSwgYTIsIGEzLCBhNCkgX1B5X2FyZyhhMCwgYTEsIGEyLCBhMywgYTQpCithcmdfdHkgX1B5X2FyZyhpZGVudGlmaWVyIGFyZywgZXhwcl90eSBhbm5vdGF0aW9uLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwKKyAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUga2V5d29yZChhMCwgYTEsIGEyKSBfUHlfa2V5d29yZChhMCwgYTEsIGEyKQoga2V5d29yZF90eSBfUHlfa2V5d29yZChpZGVudGlmaWVyIGFyZywgZXhwcl90eSB2YWx1ZSwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBhbGlhcyhhMCwgYTEsIGEyKSBfUHlfYWxpYXMoYTAsIGExLCBhMikKZGlmZiAtLWdpdCBhL0luY2x1ZGUvUHl0aG9uLmggYi9JbmNsdWRlL1B5dGhvbi5oCmluZGV4IDJkZDgyOTAuLjg1OGRiZDEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvUHl0aG9uLmgKKysrIGIvSW5jbHVkZS9QeXRob24uaApAQCAtODUsNiArODUsNyBAQAogI2luY2x1ZGUgInR1cGxlb2JqZWN0LmgiCiAjaW5jbHVkZSAibGlzdG9iamVjdC5oIgogI2luY2x1ZGUgImRpY3RvYmplY3QuaCIKKyNpbmNsdWRlICJvZGljdG9iamVjdC5oIgogI2luY2x1ZGUgImVudW1vYmplY3QuaCIKICNpbmNsdWRlICJzZXRvYmplY3QuaCIKICNpbmNsdWRlICJtZXRob2RvYmplY3QuaCIKQEAgLTExMiw2ICsxMTMsNyBAQAogI2luY2x1ZGUgInB5YXJlbmEuaCIKICNpbmNsdWRlICJtb2RzdXBwb3J0LmgiCiAjaW5jbHVkZSAicHl0aG9ucnVuLmgiCisjaW5jbHVkZSAicHlsaWZlY3ljbGUuaCIKICNpbmNsdWRlICJjZXZhbC5oIgogI2luY2x1ZGUgInN5c21vZHVsZS5oIgogI2luY2x1ZGUgImludHJjaGVjay5oIgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9hYnN0cmFjdC5oIGIvSW5jbHVkZS9hYnN0cmFjdC5oCmluZGV4IGJiZWRhZmQuLjQ4YjI5YTcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYWJzdHJhY3QuaAorKysgYi9JbmNsdWRlL2Fic3RyYWN0LmgKQEAgLTE5Miw4ICsxOTIsOCBAQAogICAgICBpbnQgUHlPYmplY3RfU2V0QXR0clN0cmluZyhQeU9iamVjdCAqbywgY29uc3QgY2hhciAqYXR0cl9uYW1lLCBQeU9iamVjdCAqdik7CiAKICAgICAgU2V0IHRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIG5hbWVkIGF0dHJfbmFtZSwgZm9yIG9iamVjdCBvLAotICAgICB0byB0aGUgdmFsdWUsIHYuIFJldHVybnMgLTEgb24gZmFpbHVyZS4gIFRoaXMgaXMKLSAgICAgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIFB5dGhvbiBzdGF0ZW1lbnQ6IG8uYXR0cl9uYW1lPXYuCisgICAgIHRvIHRoZSB2YWx1ZSB2LiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBmYWlsdXJlOyByZXR1cm4gMCBvbgorICAgICBzdWNjZXNzLiAgVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiB0aGUgUHl0aG9uIHN0YXRlbWVudCBvLmF0dHJfbmFtZT12LgogCiAgICAgICAgKi8KIApAQCAtMjAyLDggKzIwMiw4IEBACiAgICAgIGludCBQeU9iamVjdF9TZXRBdHRyKFB5T2JqZWN0ICpvLCBQeU9iamVjdCAqYXR0cl9uYW1lLCBQeU9iamVjdCAqdik7CiAKICAgICAgU2V0IHRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIG5hbWVkIGF0dHJfbmFtZSwgZm9yIG9iamVjdCBvLAotICAgICB0byB0aGUgdmFsdWUsIHYuIFJldHVybnMgLTEgb24gZmFpbHVyZS4gIFRoaXMgaXMKLSAgICAgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIFB5dGhvbiBzdGF0ZW1lbnQ6IG8uYXR0cl9uYW1lPXYuCisgICAgIHRvIHRoZSB2YWx1ZSB2LiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBmYWlsdXJlOyByZXR1cm4gMCBvbgorICAgICBzdWNjZXNzLiAgVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiB0aGUgUHl0aG9uIHN0YXRlbWVudCBvLmF0dHJfbmFtZT12LgogCiAgICAgICAgKi8KIApAQCAtMjY2LDYgKzI2NiwxMiBAQAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0NhbGwoUHlPYmplY3QgKmNhbGxhYmxlX29iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoUHlPYmplY3QgKmZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp3aGVyZSk7CisjZW5kaWYKKwogICAgICAgIC8qCiAgICAgIENhbGwgYSBjYWxsYWJsZSBQeXRob24gb2JqZWN0LCBjYWxsYWJsZV9vYmplY3QsIHdpdGgKICAgICAgYXJndW1lbnRzIGFuZCBrZXl3b3JkcyBhcmd1bWVudHMuICBUaGUgJ2FyZ3MnIGFyZ3VtZW50IGNhbiBub3QgYmUKQEAgLTQyOSw5ICs0MzUsOSBAQAogICAgICBQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfU2V0SXRlbShQeU9iamVjdCAqbywgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnYpOwogCiAgICAgICAgLyoKLSAgICAgTWFwIHRoZSBvYmplY3QsIGtleSwgdG8gdGhlIHZhbHVlLCB2LiAgUmV0dXJucwotICAgICAtMSBvbiBmYWlsdXJlLiAgVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiB0aGUgUHl0aG9uCi0gICAgIHN0YXRlbWVudDogb1trZXldPXYuCisgICAgIE1hcCB0aGUgb2JqZWN0IGtleSB0byB0aGUgdmFsdWUgdi4gIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xCisgICAgIG9uIGZhaWx1cmU7IHJldHVybiAwIG9uIHN1Y2Nlc3MuICBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBQeXRob24KKyAgICAgc3RhdGVtZW50IG9ba2V5XT12LgogICAgICAgICovCiAKICAgICAgUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X0RlbEl0ZW1TdHJpbmcoUHlPYmplY3QgKm8sIGNvbnN0IGNoYXIgKmtleSk7CkBAIC02NTgsNiArNjY0LDEyIEBACiAgICAgIG8xKm8yLgogICAgICAgICovCiAKKyAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU51bWJlcl9NYXRyaXhNdWx0aXBseShQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CisKKyAgICAgICAvKgorICAgICBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBQeXRob24gZXhwcmVzc2lvbjogbzEgQCBvMi4KKyAgICAgICAqLworCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlOdW1iZXJfRmxvb3JEaXZpZGUoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIpOwogCiAgICAgICAgLyoKQEAgLTgzMiw2ICs4NDQsMTIgQEAKICAgICAgbzEgKj0gbzIuCiAgICAgICAgKi8KIAorICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TnVtYmVyX0luUGxhY2VNYXRyaXhNdWx0aXBseShQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CisKKyAgICAgICAvKgorICAgICBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBQeXRob24gZXhwcmVzc2lvbjogbzEgQD0gbzIuCisgICAgICAgKi8KKwogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZShQeU9iamVjdCAqbzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvMik7CiAKQEAgLTk3NSw5ICs5OTMsOSBAQAogICAgICBQeUFQSV9GVU5DKGludCkgUHlTZXF1ZW5jZV9TZXRJdGVtKFB5T2JqZWN0ICpvLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICp2KTsKIAogICAgICAgIC8qCi0gICAgIEFzc2lnbiBvYmplY3QgdiB0byB0aGUgaXRoIGVsZW1lbnQgb2Ygby4gIFJldHVybnMKLSAgICAgLTEgb24gZmFpbHVyZS4gIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIFB5dGhvbgotICAgICBzdGF0ZW1lbnQ6IG9baV09di4KKyAgICAgQXNzaWduIG9iamVjdCB2IHRvIHRoZSBpdGggZWxlbWVudCBvZiBvLiAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4KKyAgICAgLTEgb24gZmFpbHVyZTsgcmV0dXJuIDAgb24gc3VjY2Vzcy4gIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgdGhlCisgICAgIFB5dGhvbiBzdGF0ZW1lbnQgb1tpXT12LgogICAgICAgICovCiAKICAgICAgUHlBUElfRlVOQyhpbnQpIFB5U2VxdWVuY2VfRGVsSXRlbShQeU9iamVjdCAqbywgUHlfc3NpemVfdCBpKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oIGIvSW5jbHVkZS9ieXRlc19tZXRob2RzLmgKaW5kZXggMTQ5OGI4Zi4uMTFkNWY0MiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ieXRlc19tZXRob2RzLmgKKysrIGIvSW5jbHVkZS9ieXRlc19tZXRob2RzLmgKQEAgLTIxLDggKzIxLDggQEAKIGV4dGVybiB2b2lkIF9QeV9ieXRlc19jYXBpdGFsaXplKGNoYXIgKnJlc3VsdCwgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pOwogZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX3N3YXBjYXNlKGNoYXIgKnJlc3VsdCwgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pOwogCi0vKiBUaGlzIG9uZSBnZXRzIHRoZSByYXcgYXJndW1lbnQgbGlzdC4gKi8KLWV4dGVybiBQeU9iamVjdCogX1B5X2J5dGVzX21ha2V0cmFucyhQeU9iamVjdCAqYXJncyk7CisvKiBUaGUgbWFrZXRyYW5zKCkgc3RhdGljIG1ldGhvZC4gKi8KK2V4dGVybiBQeU9iamVjdCogX1B5X2J5dGVzX21ha2V0cmFucyhQeV9idWZmZXIgKmZybSwgUHlfYnVmZmVyICp0byk7CiAKIC8qIFNoYXJlZCBfX2RvY19fIHN0cmluZ3MuICovCiBleHRlcm4gY29uc3QgY2hhciBfUHlfaXNzcGFjZV9fZG9jX19bXTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYnl0ZXNvYmplY3QuaCBiL0luY2x1ZGUvYnl0ZXNvYmplY3QuaAppbmRleCAwZWU4ZDM2Li5lMzc5YmFjIDEwMDY0NAotLS0gYS9JbmNsdWRlL2J5dGVzb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9ieXRlc29iamVjdC5oCkBAIC02Miw2ICs2Miw3IEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsKFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlCeXRlc19SZXNpemUoUHlPYmplY3QgKiosIFB5X3NzaXplX3QpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlCeXRlc19Gb3JtYXQoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlCeXRlc19EZWNvZGVFc2NhcGUoY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LAogCQkJCQkJICAgY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jZXZhbC5oIGIvSW5jbHVkZS9jZXZhbC5oCmluZGV4IDQ5MzdmMmMuLmI1MzczYTkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvY2V2YWwuaAorKysgYi9JbmNsdWRlL2NldmFsLmgKQEAgLTIzLDYgKzIzLDggQEAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkModm9pZCkgUHlFdmFsX1NldFByb2ZpbGUoUHlfdHJhY2VmdW5jLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFdmFsX1NldFRyYWNlKFB5X3RyYWNlZnVuYywgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUV2YWxfU2V0Q29yb3V0aW5lV3JhcHBlcihQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RXZhbF9HZXRDb3JvdXRpbmVXcmFwcGVyKHZvaWQpOwogI2VuZGlmCiAKIHN0cnVjdCBfZnJhbWU7IC8qIEF2b2lkIGluY2x1ZGluZyBmcmFtZW9iamVjdC5oICovCkBAIC00NiwxNiArNDgsMTYgQEAKIAogICAgSW4gUHl0aG9uIDMuMCwgdGhpcyBwcm90ZWN0aW9uIGhhcyB0d28gbGV2ZWxzOgogICAgKiBub3JtYWwgYW50aS1yZWN1cnNpb24gcHJvdGVjdGlvbiBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgcmVjdXJzaW9uIGxldmVsCi0gICAgIGV4Y2VlZHMgdGhlIGN1cnJlbnQgcmVjdXJzaW9uIGxpbWl0LiBJdCByYWlzZXMgYSBSdW50aW1lRXJyb3IsIGFuZCBzZXRzCisgICAgIGV4Y2VlZHMgdGhlIGN1cnJlbnQgcmVjdXJzaW9uIGxpbWl0LiBJdCByYWlzZXMgYSBSZWN1cnNpb25FcnJvciwgYW5kIHNldHMKICAgICAgdGhlICJvdmVyZmxvd2VkIiBmbGFnIGluIHRoZSB0aHJlYWQgc3RhdGUgc3RydWN0dXJlLiBUaGlzIGZsYWcKICAgICAgdGVtcG9yYXJpbHkgKmRpc2FibGVzKiB0aGUgbm9ybWFsIHByb3RlY3Rpb247IHRoaXMgYWxsb3dzIGNsZWFudXAgY29kZQogICAgICB0byBwb3RlbnRpYWxseSBvdXRncm93IHRoZSByZWN1cnNpb24gbGltaXQgd2hpbGUgcHJvY2Vzc2luZyB0aGUKLSAgICAgUnVudGltZUVycm9yLgorICAgICBSZWN1cnNpb25FcnJvci4KICAgICogImxhc3QgY2hhbmNlIiBhbnRpLXJlY3Vyc2lvbiBwcm90ZWN0aW9uIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSByZWN1cnNpb24KICAgICAgbGV2ZWwgZXhjZWVkcyAiY3VycmVudCByZWN1cnNpb24gbGltaXQgKyA1MCIuIEJ5IGNvbnN0cnVjdGlvbiwgdGhpcwogICAgICBwcm90ZWN0aW9uIGNhbiBvbmx5IGJlIHRyaWdnZXJlZCB3aGVuIHRoZSAib3ZlcmZsb3dlZCIgZmxhZyBpcyBzZXQuIEl0CiAgICAgIG1lYW5zIHRoZSBjbGVhbnVwIGNvZGUgaGFzIGl0c2VsZiBnb25lIGludG8gYW4gaW5maW5pdGUgbG9vcCwgb3IgdGhlCi0gICAgIFJ1bnRpbWVFcnJvciBoYXMgYmVlbiBtaXN0YWtpbmdseSBpZ25vcmVkLiBXaGVuIHRoaXMgcHJvdGVjdGlvbiBpcworICAgICBSZWN1cnNpb25FcnJvciBoYXMgYmVlbiBtaXN0YWtpbmdseSBpZ25vcmVkLiBXaGVuIHRoaXMgcHJvdGVjdGlvbiBpcwogICAgICB0cmlnZ2VyZWQsIHRoZSBpbnRlcnByZXRlciBhYm9ydHMgd2l0aCBhIEZhdGFsIEVycm9yLgogCiAgICBJbiBhZGRpdGlvbiwgdGhlICJvdmVyZmxvd2VkIiBmbGFnIGlzIGF1dG9tYXRpY2FsbHkgcmVzZXQgd2hlbiB0aGUKQEAgLTkyLDEwICs5NCwxNiBAQAogIyAgZGVmaW5lIF9QeV9NYWtlUmVjQ2hlY2soeCkgICgrKyh4KSA+IF9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0KQogI2VuZGlmCiAKKy8qIENvbXB1dGUgdGhlICJsb3dlci13YXRlciBtYXJrIiBmb3IgYSByZWN1cnNpb24gbGltaXQuIFdoZW4KKyAqIFB5X0xlYXZlUmVjdXJzaXZlQ2FsbCgpIGlzIGNhbGxlZCB3aXRoIGEgcmVjdXJzaW9uIGRlcHRoIGJlbG93IHRoaXMgbWFyaywKKyAqIHRoZSBvdmVyZmxvd2VkIGZsYWcgaXMgcmVzZXQgdG8gMC4gKi8KKyNkZWZpbmUgX1B5X1JlY3Vyc2lvbkxpbWl0TG93ZXJXYXRlck1hcmsobGltaXQpIFwKKyAgICAoKChsaW1pdCkgPiAyMDApIFwKKyAgICAgICAgPyAoKGxpbWl0KSAtIDUwKSBcCisgICAgICAgIDogKDMgKiAoKGxpbWl0KSA+PiAyKSkpCisKICNkZWZpbmUgX1B5X01ha2VFbmRSZWNDaGVjayh4KSBcCi0gICAgKC0tKHgpIDwgKChfUHlfQ2hlY2tSZWN1cnNpb25MaW1pdCA+IDEwMCkgXAotICAgICAgICA/IChfUHlfQ2hlY2tSZWN1cnNpb25MaW1pdCAtIDUwKSBcCi0gICAgICAgIDogKDMgKiAoX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQgPj4gMikpKSkKKyAgICAoLS0oeCkgPCBfUHlfUmVjdXJzaW9uTGltaXRMb3dlcldhdGVyTWFyayhfUHlfQ2hlY2tSZWN1cnNpb25MaW1pdCkpCiAKICNkZWZpbmUgUHlfQUxMT1dfUkVDVVJTSU9OIFwKICAgZG8geyB1bnNpZ25lZCBjaGFyIF9vbGQgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5yZWN1cnNpb25fY3JpdGljYWw7XApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jb2RlLmggYi9JbmNsdWRlL2NvZGUuaAppbmRleCA3YzdlNWJmLi41NmU2ZWMxIDEwMDY0NAotLS0gYS9JbmNsdWRlL2NvZGUuaAorKysgYi9JbmNsdWRlL2NvZGUuaApAQCAtMjEsNyArMjEsMTIgQEAKICAgICBQeU9iamVjdCAqY29fdmFybmFtZXM7CS8qIHR1cGxlIG9mIHN0cmluZ3MgKGxvY2FsIHZhcmlhYmxlIG5hbWVzKSAqLwogICAgIFB5T2JqZWN0ICpjb19mcmVldmFyczsJLyogdHVwbGUgb2Ygc3RyaW5ncyAoZnJlZSB2YXJpYWJsZSBuYW1lcykgKi8KICAgICBQeU9iamVjdCAqY29fY2VsbHZhcnM7ICAgICAgLyogdHVwbGUgb2Ygc3RyaW5ncyAoY2VsbCB2YXJpYWJsZSBuYW1lcykgKi8KLSAgICAvKiBUaGUgcmVzdCBkb2Vzbid0IGNvdW50IGZvciBoYXNoIG9yIGNvbXBhcmlzb25zICovCisgICAgLyogVGhlIHJlc3QgYXJlbid0IHVzZWQgaW4gZWl0aGVyIGhhc2ggb3IgY29tcGFyaXNvbnMsIGV4Y2VwdCBmb3IKKyAgICAgICBjb19uYW1lICh1c2VkIGluIGJvdGgpIGFuZCBjb19maXJzdGxpbmVubyAodXNlZCBvbmx5IGluCisgICAgICAgY29tcGFyaXNvbnMpLiAgVGhpcyBpcyBkb25lIHRvIHByZXNlcnZlIHRoZSBuYW1lIGFuZCBsaW5lIG51bWJlcgorICAgICAgIGZvciB0cmFjZWJhY2tzIGFuZCBkZWJ1Z2dlcnM7IG90aGVyd2lzZSwgY29uc3RhbnQgZGUtZHVwbGljYXRpb24KKyAgICAgICB3b3VsZCBjb2xsYXBzZSBpZGVudGljYWwgZnVuY3Rpb25zL2xhbWJkYXMgZGVmaW5lZCBvbiBkaWZmZXJlbnQgbGluZXMuCisgICAgKi8KICAgICB1bnNpZ25lZCBjaGFyICpjb19jZWxsMmFyZzsgLyogTWFwcyBjZWxsIHZhcnMgd2hpY2ggYXJlIGFyZ3VtZW50cy4gKi8KICAgICBQeU9iamVjdCAqY29fZmlsZW5hbWU7CS8qIHVuaWNvZGUgKHdoZXJlIGl0IHdhcyBsb2FkZWQgZnJvbSkgKi8KICAgICBQeU9iamVjdCAqY29fbmFtZTsJCS8qIHVuaWNvZGUgKG5hbWUsIGZvciByZWZlcmVuY2UpICovCkBAIC00Niw2ICs1MSwxMSBAQAogKi8KICNkZWZpbmUgQ09fTk9GUkVFICAgICAgIDB4MDA0MAogCisvKiBUaGUgQ09fQ09ST1VUSU5FIGZsYWcgaXMgc2V0IGZvciBjb3JvdXRpbmUgZnVuY3Rpb25zIChkZWZpbmVkIHdpdGgKKyAgIGBgYXN5bmMgZGVmYGAga2V5d29yZHMpICovCisjZGVmaW5lIENPX0NPUk9VVElORSAgICAgICAgICAgIDB4MDA4MAorI2RlZmluZSBDT19JVEVSQUJMRV9DT1JPVVRJTkUgICAweDAxMDAKKwogLyogVGhlc2UgYXJlIG5vIGxvbmdlciB1c2VkLiAqLwogI2lmIDAKICNkZWZpbmUgQ09fR0VORVJBVE9SX0FMTE9XRUQgICAgMHgxMDAwCkBAIC01Nyw2ICs2Nyw3IEBACiAjZGVmaW5lIENPX0ZVVFVSRV9VTklDT0RFX0xJVEVSQUxTIDB4MjAwMDAKIAogI2RlZmluZSBDT19GVVRVUkVfQkFSUllfQVNfQkRGTCAgMHg0MDAwMAorI2RlZmluZSBDT19GVVRVUkVfR0VORVJBVE9SX1NUT1AgIDB4ODAwMDAKIAogLyogVGhpcyB2YWx1ZSBpcyBmb3VuZCBpbiB0aGUgY29fY2VsbDJhcmcgYXJyYXkgd2hlbiB0aGUgYXNzb2NpYXRlZCBjZWxsCiAgICB2YXJpYWJsZSBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGFuIGFyZ3VtZW50LiBUaGUgbWF4aW11bSBudW1iZXIgb2YKZGlmZiAtLWdpdCBhL0luY2x1ZGUvY29kZWNzLmggYi9JbmNsdWRlL2NvZGVjcy5oCmluZGV4IGRmY2ZhOWMuLmY4Mjc1YTEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvY29kZWNzLmgKKysrIGIvSW5jbHVkZS9jb2RlY3MuaApAQCAtNzEsNyArNzEsNyBAQAogICAgb2JqZWN0IGlzIHBhc3NlZCB0aHJvdWdoIHRoZSBlbmNvZGVyIGZ1bmN0aW9uIGZvdW5kIGZvciB0aGUgZ2l2ZW4KICAgIGVuY29kaW5nIHVzaW5nIHRoZSBlcnJvciBoYW5kbGluZyBtZXRob2QgZGVmaW5lZCBieSBlcnJvcnMuIGVycm9ycwogICAgbWF5IGJlIE5VTEwgdG8gdXNlIHRoZSBkZWZhdWx0IG1ldGhvZCBkZWZpbmVkIGZvciB0aGUgY29kZWMuCi0gICAKKwogICAgUmFpc2VzIGEgTG9va3VwRXJyb3IgaW4gY2FzZSBubyBlbmNvZGVyIGNhbiBiZSBmb3VuZC4KIAogICovCkBAIC04Nyw3ICs4Nyw3IEBACiAgICBvYmplY3QgaXMgcGFzc2VkIHRocm91Z2ggdGhlIGRlY29kZXIgZnVuY3Rpb24gZm91bmQgZm9yIHRoZSBnaXZlbgogICAgZW5jb2RpbmcgdXNpbmcgdGhlIGVycm9yIGhhbmRsaW5nIG1ldGhvZCBkZWZpbmVkIGJ5IGVycm9ycy4gZXJyb3JzCiAgICBtYXkgYmUgTlVMTCB0byB1c2UgdGhlIGRlZmF1bHQgbWV0aG9kIGRlZmluZWQgZm9yIHRoZSBjb2RlYy4KLSAgIAorCiAgICBSYWlzZXMgYSBMb29rdXBFcnJvciBpbiBjYXNlIG5vIGVuY29kZXIgY2FuIGJlIGZvdW5kLgogCiAgKi8KQEAgLTE0NSw3ICsxNDUsNyBAQAogCiAKIAotLyogLS0tIENvZGVjIExvb2t1cCBBUElzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAorLyogLS0tIENvZGVjIExvb2t1cCBBUElzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgIEFsbCBBUElzIHJldHVybiBhIGNvZGVjIG9iamVjdCB3aXRoIGluY3JlbWVudGVkIHJlZmNvdW50IGFuZCBhcmUKICAgIGJhc2VkIG9uIF9QeUNvZGVjX0xvb2t1cCgpLiAgVGhlIHNhbWUgY29tbWVudHMgdy9yIHRvIHRoZSBlbmNvZGluZwpAQCAtMjI1LDYgKzIyNSw5IEBACiAvKiByZXBsYWNlIHRoZSB1bmljb2RlIGVuY29kZSBlcnJvciB3aXRoIGJhY2tzbGFzaCBlc2NhcGVzIChceCwgXHUgYW5kIFxVKSAqLwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnMoUHlPYmplY3QgKmV4Yyk7CiAKKy8qIHJlcGxhY2UgdGhlIHVuaWNvZGUgZW5jb2RlIGVycm9yIHdpdGggYmFja3NsYXNoIGVzY2FwZXMgKFxOLCBceCwgXHUgYW5kIFxVKSAqLworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUNvZGVjX05hbWVSZXBsYWNlRXJyb3JzKFB5T2JqZWN0ICpleGMpOworCiBQeUFQSV9EQVRBKGNvbnN0IGNoYXIgKikgUHlfaGV4ZGlnaXRzOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvY29tcGlsZS5oIGIvSW5jbHVkZS9jb21waWxlLmgKaW5kZXggYzY2NTBkNy4uZWNkOGRjMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jb21waWxlLmgKKysrIGIvSW5jbHVkZS9jb21waWxlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgRlVUVVJFX1BSSU5UX0ZVTkNUSU9OICJwcmludF9mdW5jdGlvbiIKICNkZWZpbmUgRlVUVVJFX1VOSUNPREVfTElURVJBTFMgInVuaWNvZGVfbGl0ZXJhbHMiCiAjZGVmaW5lIEZVVFVSRV9CQVJSWV9BU19CREZMICJiYXJyeV9hc19GTFVGTCIKKyNkZWZpbmUgRlVUVVJFX0dFTkVSQVRPUl9TVE9QICJnZW5lcmF0b3Jfc3RvcCIKIAogc3RydWN0IF9tb2Q7IC8qIERlY2xhcmUgdGhlIGV4aXN0ZW5jZSBvZiB0aGlzIHR5cGUgKi8KICNkZWZpbmUgUHlBU1RfQ29tcGlsZShtb2QsIHMsIGYsIGFyKSBQeUFTVF9Db21waWxlRXgobW9kLCBzLCBmLCAtMSwgYXIpCmRpZmYgLS1naXQgYS9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaCBiL0luY2x1ZGUvY29tcGxleG9iamVjdC5oCmluZGV4IDE5MzRmM2IuLmNiOGM1MmMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvY29tcGxleG9iamVjdC5oCisrKyBiL0luY2x1ZGUvY29tcGxleG9iamVjdC5oCkBAIC0xNCwyMSArMTQsMTMgQEAKIAogLyogT3BlcmF0aW9ucyBvbiBjb21wbGV4IG51bWJlcnMgZnJvbSBjb21wbGV4bW9kdWxlLmMgKi8KIAotI2RlZmluZSBjX3N1bSBfUHlfY19zdW0KLSNkZWZpbmUgY19kaWZmIF9QeV9jX2RpZmYKLSNkZWZpbmUgY19uZWcgX1B5X2NfbmVnCi0jZGVmaW5lIGNfcHJvZCBfUHlfY19wcm9kCi0jZGVmaW5lIGNfcXVvdCBfUHlfY19xdW90Ci0jZGVmaW5lIGNfcG93IF9QeV9jX3BvdwotI2RlZmluZSBjX2FicyBfUHlfY19hYnMKLQotUHlBUElfRlVOQyhQeV9jb21wbGV4KSBjX3N1bShQeV9jb21wbGV4LCBQeV9jb21wbGV4KTsKLVB5QVBJX0ZVTkMoUHlfY29tcGxleCkgY19kaWZmKFB5X2NvbXBsZXgsIFB5X2NvbXBsZXgpOwotUHlBUElfRlVOQyhQeV9jb21wbGV4KSBjX25lZyhQeV9jb21wbGV4KTsKLVB5QVBJX0ZVTkMoUHlfY29tcGxleCkgY19wcm9kKFB5X2NvbXBsZXgsIFB5X2NvbXBsZXgpOwotUHlBUElfRlVOQyhQeV9jb21wbGV4KSBjX3F1b3QoUHlfY29tcGxleCwgUHlfY29tcGxleCk7Ci1QeUFQSV9GVU5DKFB5X2NvbXBsZXgpIGNfcG93KFB5X2NvbXBsZXgsIFB5X2NvbXBsZXgpOwotUHlBUElfRlVOQyhkb3VibGUpIGNfYWJzKFB5X2NvbXBsZXgpOworUHlBUElfRlVOQyhQeV9jb21wbGV4KSBfUHlfY19zdW0oUHlfY29tcGxleCwgUHlfY29tcGxleCk7CitQeUFQSV9GVU5DKFB5X2NvbXBsZXgpIF9QeV9jX2RpZmYoUHlfY29tcGxleCwgUHlfY29tcGxleCk7CitQeUFQSV9GVU5DKFB5X2NvbXBsZXgpIF9QeV9jX25lZyhQeV9jb21wbGV4KTsKK1B5QVBJX0ZVTkMoUHlfY29tcGxleCkgX1B5X2NfcHJvZChQeV9jb21wbGV4LCBQeV9jb21wbGV4KTsKK1B5QVBJX0ZVTkMoUHlfY29tcGxleCkgX1B5X2NfcXVvdChQeV9jb21wbGV4LCBQeV9jb21wbGV4KTsKK1B5QVBJX0ZVTkMoUHlfY29tcGxleCkgX1B5X2NfcG93KFB5X2NvbXBsZXgsIFB5X2NvbXBsZXgpOworUHlBUElfRlVOQyhkb3VibGUpIF9QeV9jX2FicyhQeV9jb21wbGV4KTsKICNlbmRpZgogCiAvKiBDb21wbGV4IG9iamVjdCBpbnRlcmZhY2UgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvZGljdG9iamVjdC5oIGIvSW5jbHVkZS9kaWN0b2JqZWN0LmgKaW5kZXggZWYxMjJiZC4uYmE5MGFhZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9kaWN0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9kaWN0b2JqZWN0LmgKQEAgLTI3LDYgKzI3LDExIEBACiAgICAgUHlPYmplY3QgKiptYV92YWx1ZXM7CiB9IFB5RGljdE9iamVjdDsKIAordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeURpY3RPYmplY3QgKmR2X2RpY3Q7Cit9IF9QeURpY3RWaWV3T2JqZWN0OworCiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5RGljdF9UeXBlOwpAQCAtNDAsOSArNDUsOSBAQAogI2RlZmluZSBQeURpY3RfQ2hlY2sob3ApIFwKICAgICAgICAgICAgICAgICAgUHlUeXBlX0Zhc3RTdWJjbGFzcyhQeV9UWVBFKG9wKSwgUHlfVFBGTEFHU19ESUNUX1NVQkNMQVNTKQogI2RlZmluZSBQeURpY3RfQ2hlY2tFeGFjdChvcCkgKFB5X1RZUEUob3ApID09ICZQeURpY3RfVHlwZSkKLSNkZWZpbmUgUHlEaWN0S2V5c19DaGVjayhvcCkgKFB5X1RZUEUob3ApID09ICZQeURpY3RLZXlzX1R5cGUpCi0jZGVmaW5lIFB5RGljdEl0ZW1zX0NoZWNrKG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5RGljdEl0ZW1zX1R5cGUpCi0jZGVmaW5lIFB5RGljdFZhbHVlc19DaGVjayhvcCkgKFB5X1RZUEUob3ApID09ICZQeURpY3RWYWx1ZXNfVHlwZSkKKyNkZWZpbmUgUHlEaWN0S2V5c19DaGVjayhvcCkgUHlPYmplY3RfVHlwZUNoZWNrKG9wLCAmUHlEaWN0S2V5c19UeXBlKQorI2RlZmluZSBQeURpY3RJdGVtc19DaGVjayhvcCkgUHlPYmplY3RfVHlwZUNoZWNrKG9wLCAmUHlEaWN0SXRlbXNfVHlwZSkKKyNkZWZpbmUgUHlEaWN0VmFsdWVzX0NoZWNrKG9wKSBQeU9iamVjdF9UeXBlQ2hlY2sob3AsICZQeURpY3RWYWx1ZXNfVHlwZSkKIC8qIFRoaXMgZXhjbHVkZXMgVmFsdWVzLCBzaW5jZSB0aGV5IGFyZSBub3Qgc2V0cy4gKi8KICMgZGVmaW5lIFB5RGljdFZpZXdTZXRfQ2hlY2sob3ApIFwKICAgICAoUHlEaWN0S2V5c19DaGVjayhvcCkgfHwgUHlEaWN0SXRlbXNfQ2hlY2sob3ApKQpAQCAtNTAsNiArNTUsMTAgQEAKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURpY3RfTmV3KHZvaWQpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURpY3RfR2V0SXRlbShQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXkpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlEaWN0X0dldEl0ZW1fS25vd25IYXNoKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoKTsKKyNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcihQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXkpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlEaWN0X0dldEl0ZW1JZFdpdGhFcnJvcihQeU9iamVjdCAqZHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5KTsKQEAgLTU4LDcgKzY3LDE1IEBACiAgICAgUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqZGVmYXVsdG9iaik7CiAjZW5kaWYKIFB5QVBJX0ZVTkMoaW50KSBQeURpY3RfU2V0SXRlbShQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICppdGVtKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoaW50KSBfUHlEaWN0X1NldEl0ZW1fS25vd25IYXNoKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtLCBQeV9oYXNoX3QgaGFzaCk7CisjZW5kaWYKIFB5QVBJX0ZVTkMoaW50KSBQeURpY3RfRGVsSXRlbShQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXkpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhpbnQpIF9QeURpY3RfRGVsSXRlbV9Lbm93bkhhc2goUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gpOworI2VuZGlmCiBQeUFQSV9GVU5DKHZvaWQpIFB5RGljdF9DbGVhcihQeU9iamVjdCAqbXApOwogUHlBUElfRlVOQyhpbnQpIFB5RGljdF9OZXh0KAogICAgIFB5T2JqZWN0ICptcCwgUHlfc3NpemVfdCAqcG9zLCBQeU9iamVjdCAqKmtleSwgUHlPYmplY3QgKip2YWx1ZSk7CkBAIC02Nyw2ICs4NCw3IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0KFB5T2JqZWN0ICosIHZvaWQgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5RGljdF9OZXh0KAogICAgIFB5T2JqZWN0ICptcCwgUHlfc3NpemVfdCAqcG9zLCBQeU9iamVjdCAqKmtleSwgUHlPYmplY3QgKip2YWx1ZSwgUHlfaGFzaF90ICpoYXNoKTsKK1B5T2JqZWN0ICpfUHlEaWN0Vmlld19OZXcoUHlPYmplY3QgKiwgUHlUeXBlT2JqZWN0ICopOwogI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9LZXlzKFB5T2JqZWN0ICptcCk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9WYWx1ZXMoUHlPYmplY3QgKm1wKTsKQEAgLTgwLDYgKzk4LDkgQEAKIFB5QVBJX0ZVTkModm9pZCkgX1B5RGljdF9NYXliZVVudHJhY2soUHlPYmplY3QgKm1wKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlEaWN0X0hhc09ubHlTdHJpbmdLZXlzKFB5T2JqZWN0ICptcCk7CiBQeV9zc2l6ZV90IF9QeURpY3RfS2V5c1NpemUoUHlEaWN0S2V5c09iamVjdCAqa2V5cyk7CitQeV9zc2l6ZV90IF9QeURpY3RfU2l6ZU9mKFB5RGljdE9iamVjdCAqKTsKK1B5T2JqZWN0ICpfUHlEaWN0X1BvcChQeURpY3RPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CitQeU9iamVjdCAqX1B5RGljdF9Gcm9tS2V5cyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKICNkZWZpbmUgX1B5RGljdF9IYXNTcGxpdFRhYmxlKGQpICgoZCktPm1hX3ZhbHVlcyAhPSBOVUxMKQogCiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X0NsZWFyRnJlZUxpc3Qodm9pZCk7CkBAIC05Nyw2ICsxMTgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm90aGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ZlcnJpZGUpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeURpY3RWaWV3X0ludGVyc2VjdChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QgKm90aGVyKTsKKyNlbmRpZgorCiAvKiBQeURpY3RfTWVyZ2VGcm9tU2VxMiB1cGRhdGVzL21lcmdlcyBmcm9tIGFuIGl0ZXJhYmxlIG9iamVjdCBwcm9kdWNpbmcKICAgIGl0ZXJhYmxlIG9iamVjdHMgb2YgbGVuZ3RoIDIuICBJZiBvdmVycmlkZSBpcyB0cnVlLCB0aGUgbGFzdCBvY2N1cnJlbmNlCiAgICBvZiBhIGtleSB3aW5zLCBlbHNlIHRoZSBmaXJzdC4gIFRoZSBQeXRob24gZGljdCBjb25zdHJ1Y3RvciBkaWN0KHNlcTIpCmRpZmYgLS1naXQgYS9JbmNsdWRlL2ZpbGVvYmplY3QuaCBiL0luY2x1ZGUvZmlsZW9iamVjdC5oCmluZGV4IDA5Mzk3NDQuLjAzMTU1ZDMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZmlsZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvZmlsZW9iamVjdC5oCkBAIC0zMiwxNyArMzIsNiBAQAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUZpbGVfTmV3U3RkUHJpbnRlcihpbnQpOwogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5U3RkUHJpbnRlcl9UeXBlOwotCi0jaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwCi0vKiBBIHJvdXRpbmUgdG8gY2hlY2sgaWYgYSBmaWxlIGRlc2NyaXB0b3IgaXMgdmFsaWQgb24gV2luZG93cy4gIFJldHVybnMgMAotICogYW5kIHNldHMgZXJybm8gdG8gRUJBREYgaWYgaXQgaXNuJ3QuICBUaGlzIGlzIHRvIGF2b2lkIEFzc2VydGlvbnMKLSAqIGZyb20gdmFyaW91cyBmdW5jdGlvbnMgaW4gdGhlIFdpbmRvd3MgQ1JUIGJlZ2lubmluZyB3aXRoCi0gKiBWaXN1YWwgU3R1ZGlvIDIwMDUKLSAqLwotaW50IF9QeVZlcmlmeV9mZChpbnQgZmQpOwotI2Vsc2UKLSNkZWZpbmUgX1B5VmVyaWZ5X2ZkKEEpICgxKSAvKiBkdW1teSAqLwotI2VuZGlmCiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogLyogQSByb3V0aW5lIHRvIGNoZWNrIGlmIGEgZmlsZSBkZXNjcmlwdG9yIGNhbiBiZSBzZWxlY3QoKS1lZC4gKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvZmlsZXV0aWxzLmggYi9JbmNsdWRlL2ZpbGV1dGlscy5oCmluZGV4IGU5YmFkODAuLmI0YTY4M2MgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZmlsZXV0aWxzLmgKKysrIGIvSW5jbHVkZS9maWxldXRpbHMuaApAQCAtNywzMCArNyw1OSBAQAogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9kZXZpY2VfZW5jb2RpbmcoaW50KTsKIAotUHlBUElfRlVOQyh3Y2hhcl90ICopIF9QeV9jaGFyMndjaGFyKAorUHlBUElfRlVOQyh3Y2hhcl90ICopIFB5X0RlY29kZUxvY2FsZSgKICAgICBjb25zdCBjaGFyICphcmcsCiAgICAgc2l6ZV90ICpzaXplKTsKIAotUHlBUElfRlVOQyhjaGFyKikgX1B5X3djaGFyMmNoYXIoCitQeUFQSV9GVU5DKGNoYXIqKSBQeV9FbmNvZGVMb2NhbGUoCiAgICAgY29uc3Qgd2NoYXJfdCAqdGV4dCwKICAgICBzaXplX3QgKmVycm9yX3Bvcyk7CiAKLSNpZiBkZWZpbmVkKEhBVkVfU1RBVCkgJiYgIWRlZmluZWQoTVNfV0lORE9XUykKLVB5QVBJX0ZVTkMoaW50KSBfUHlfd3N0YXQoCi0gICAgY29uc3Qgd2NoYXJfdCogcGF0aCwKLSAgICBzdHJ1Y3Qgc3RhdCAqYnVmKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKworI2lmZGVmIE1TX1dJTkRPV1MKK3N0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgeworICAgIHVuc2lnbmVkIGxvbmcgc3RfZGV2OworICAgIF9faW50NjQgc3RfaW5vOworICAgIHVuc2lnbmVkIHNob3J0IHN0X21vZGU7CisgICAgaW50IHN0X25saW5rOworICAgIGludCBzdF91aWQ7CisgICAgaW50IHN0X2dpZDsKKyAgICB1bnNpZ25lZCBsb25nIHN0X3JkZXY7CisgICAgX19pbnQ2NCBzdF9zaXplOworICAgIHRpbWVfdCBzdF9hdGltZTsKKyAgICBpbnQgc3RfYXRpbWVfbnNlYzsKKyAgICB0aW1lX3Qgc3RfbXRpbWU7CisgICAgaW50IHN0X210aW1lX25zZWM7CisgICAgdGltZV90IHN0X2N0aW1lOworICAgIGludCBzdF9jdGltZV9uc2VjOworICAgIHVuc2lnbmVkIGxvbmcgc3RfZmlsZV9hdHRyaWJ1dGVzOworfTsKKyNlbHNlCisjICBkZWZpbmUgX1B5X3N0YXRfc3RydWN0IHN0YXQKICNlbmRpZgogCi0jaWZkZWYgSEFWRV9TVEFUCitQeUFQSV9GVU5DKGludCkgX1B5X2ZzdGF0KAorICAgIGludCBmZCwKKyAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpzdGF0dXMpOworCitQeUFQSV9GVU5DKGludCkgX1B5X2ZzdGF0X25vcmFpc2UoCisgICAgaW50IGZkLAorICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnN0YXR1cyk7CisjZW5kaWYgICAvKiBQeV9MSU1JVEVEX0FQSSAqLworCiBQeUFQSV9GVU5DKGludCkgX1B5X3N0YXQoCiAgICAgUHlPYmplY3QgKnBhdGgsCi0gICAgc3RydWN0IHN0YXQgKnN0YXRidWYpOwotI2VuZGlmCisgICAgc3RydWN0IHN0YXQgKnN0YXR1cyk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlfb3BlbigKICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwKICAgICBpbnQgZmxhZ3MpOworCitQeUFQSV9GVU5DKGludCkgX1B5X29wZW5fbm9yYWlzZSgKKyAgICBjb25zdCBjaGFyICpwYXRobmFtZSwKKyAgICBpbnQgZmxhZ3MpOwogI2VuZGlmCiAKIFB5QVBJX0ZVTkMoRklMRSAqKSBfUHlfd2ZvcGVuKApAQCAtNDUsNiArNzQsMjEgQEAKICAgICBQeU9iamVjdCAqcGF0aCwKICAgICBjb25zdCBjaGFyICptb2RlKTsKIAorUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlfcmVhZCgKKyAgICBpbnQgZmQsCisgICAgdm9pZCAqYnVmLAorICAgIHNpemVfdCBjb3VudCk7CisKK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5X3dyaXRlKAorICAgIGludCBmZCwKKyAgICBjb25zdCB2b2lkICpidWYsCisgICAgc2l6ZV90IGNvdW50KTsKKworUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlfd3JpdGVfbm9yYWlzZSgKKyAgICBpbnQgZmQsCisgICAgY29uc3Qgdm9pZCAqYnVmLAorICAgIHNpemVfdCBjb3VudCk7CisKICNpZmRlZiBIQVZFX1JFQURMSU5LCiBQeUFQSV9GVU5DKGludCkgX1B5X3dyZWFkbGluaygKICAgICBjb25zdCB3Y2hhcl90ICpwYXRoLApAQCAtNzAsOCArMTE0LDI3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmF0b21pY19mbGFnX3dvcmtzKTsKIAogUHlBUElfRlVOQyhpbnQpIF9QeV9kdXAoaW50IGZkKTsKKworI2lmbmRlZiBNU19XSU5ET1dTCitQeUFQSV9GVU5DKGludCkgX1B5X2dldF9ibG9ja2luZyhpbnQgZmQpOworCitQeUFQSV9GVU5DKGludCkgX1B5X3NldF9ibG9ja2luZyhpbnQgZmQsIGludCBibG9ja2luZyk7CisjZW5kaWYgICAvKiAhTVNfV0lORE9XUyAqLworCisjaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmIF9NU0NfVkVSIDwgMTkwMAorLyogQSByb3V0aW5lIHRvIGNoZWNrIGlmIGEgZmlsZSBkZXNjcmlwdG9yIGlzIHZhbGlkIG9uIFdpbmRvd3MuICBSZXR1cm5zIDAKKyAqIGFuZCBzZXRzIGVycm5vIHRvIEVCQURGIGlmIGl0IGlzbid0LiAgVGhpcyBpcyB0byBhdm9pZCBBc3NlcnRpb25zCisgKiBmcm9tIHZhcmlvdXMgZnVuY3Rpb25zIGluIHRoZSBXaW5kb3dzIENSVCBiZWdpbm5pbmcgd2l0aAorICogVmlzdWFsIFN0dWRpbyAyMDA1CisgKi8KK2ludCBfUHlWZXJpZnlfZmQoaW50IGZkKTsKKworI2Vsc2UKKyNkZWZpbmUgX1B5VmVyaWZ5X2ZkKEEpICgxKSAvKiBkdW1teSAqLwogI2VuZGlmCiAKKyNlbmRpZiAgIC8qIFB5X0xJTUlURURfQVBJICovCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL2dlbm9iamVjdC5oIGIvSW5jbHVkZS9nZW5vYmplY3QuaAppbmRleCA2NWYxZWNmLi40YzcxODYxIDEwMDY0NAotLS0gYS9JbmNsdWRlL2dlbm9iamVjdC5oCisrKyBiL0luY2x1ZGUvZ2Vub2JqZWN0LmgKQEAgLTEwLDIxICsxMCwyNiBAQAogCiBzdHJ1Y3QgX2ZyYW1lOyAvKiBBdm9pZCBpbmNsdWRpbmcgZnJhbWVvYmplY3QuaCAqLwogCisvKiBfUHlHZW5PYmplY3RfSEVBRCBkZWZpbmVzIHRoZSBpbml0aWFsIHNlZ21lbnQgb2YgZ2VuZXJhdG9yCisgICBhbmQgY29yb3V0aW5lIG9iamVjdHMuICovCisjZGVmaW5lIF9QeUdlbk9iamVjdF9IRUFEKHByZWZpeCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0X0hFQUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAvKiBOb3RlOiBnaV9mcmFtZSBjYW4gYmUgTlVMTCBpZiB0aGUgZ2VuZXJhdG9yIGlzICJmaW5pc2hlZCIgKi8gICAgICAgICBcCisgICAgc3RydWN0IF9mcmFtZSAqcHJlZml4IyNfZnJhbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIC8qIFRydWUgaWYgZ2VuZXJhdG9yIGlzIGJlaW5nIGV4ZWN1dGVkLiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjaGFyIHByZWZpeCMjX3J1bm5pbmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgLyogVGhlIGNvZGUgb2JqZWN0IGJhY2tpbmcgdGhlIGdlbmVyYXRvciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpwcmVmaXgjI19jb2RlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlLiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnByZWZpeCMjX3dlYWtyZWZsaXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIC8qIE5hbWUgb2YgdGhlIGdlbmVyYXRvci4gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcHJlZml4IyNfbmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgLyogUXVhbGlmaWVkIG5hbWUgb2YgdGhlIGdlbmVyYXRvci4gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpwcmVmaXgjI19xdWFsbmFtZTsKKwogdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X0hFQUQKICAgICAvKiBUaGUgZ2lfIHByZWZpeCBpcyBpbnRlbmRlZCB0byByZW1pbmQgb2YgZ2VuZXJhdG9yLWl0ZXJhdG9yLiAqLwotCi0gICAgLyogTm90ZTogZ2lfZnJhbWUgY2FuIGJlIE5VTEwgaWYgdGhlIGdlbmVyYXRvciBpcyAiZmluaXNoZWQiICovCi0gICAgc3RydWN0IF9mcmFtZSAqZ2lfZnJhbWU7Ci0KLSAgICAvKiBUcnVlIGlmIGdlbmVyYXRvciBpcyBiZWluZyBleGVjdXRlZC4gKi8KLSAgICBjaGFyIGdpX3J1bm5pbmc7Ci0KLSAgICAvKiBUaGUgY29kZSBvYmplY3QgYmFja2luZyB0aGUgZ2VuZXJhdG9yICovCi0gICAgUHlPYmplY3QgKmdpX2NvZGU7Ci0KLSAgICAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlLiAqLwotICAgIFB5T2JqZWN0ICpnaV93ZWFrcmVmbGlzdDsKKyAgICBfUHlHZW5PYmplY3RfSEVBRChnaSkKIH0gUHlHZW5PYmplY3Q7CiAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeUdlbl9UeXBlOwpAQCAtMzMsMTEgKzM4LDI4IEBACiAjZGVmaW5lIFB5R2VuX0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlHZW5fVHlwZSkKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUdlbl9OZXcoc3RydWN0IF9mcmFtZSAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlHZW5fTmV3V2l0aFF1YWxOYW1lKHN0cnVjdCBfZnJhbWUgKiwKKyAgICBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKTsKIFB5QVBJX0ZVTkMoaW50KSBQeUdlbl9OZWVkc0ZpbmFsaXppbmcoUHlHZW5PYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKFB5T2JqZWN0ICoqKTsKIFB5T2JqZWN0ICpfUHlHZW5fU2VuZChQeUdlbk9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5R2VuX0ZpbmFsaXplKFB5T2JqZWN0ICpzZWxmKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQordHlwZWRlZiBzdHJ1Y3QgeworICAgIF9QeUdlbk9iamVjdF9IRUFEKGNyKQorfSBQeUNvcm9PYmplY3Q7CisKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeUNvcm9fVHlwZTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlDb3JvV3JhcHBlcl9UeXBlOworCisjZGVmaW5lIFB5Q29yb19DaGVja0V4YWN0KG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5Q29yb19UeXBlKQorUHlPYmplY3QgKl9QeUNvcm9fR2V0QXdhaXRhYmxlSXRlcihQeU9iamVjdCAqbyk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q29yb19OZXcoc3RydWN0IF9mcmFtZSAqLAorICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpOworI2VuZGlmCisKKyN1bmRlZiBfUHlHZW5PYmplY3RfSEVBRAogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvZ3JhbWluaXQuaCBiL0luY2x1ZGUvZ3JhbWluaXQuaAppbmRleCAzZWM5NDlhLi5kMDMwYmMzIDEwMDY0NAotLS0gYS9JbmNsdWRlL2dyYW1pbml0LmgKKysrIGIvSW5jbHVkZS9ncmFtaW5pdC5oCkBAIC02LDc5ICs2LDgyIEBACiAjZGVmaW5lIGRlY29yYXRvciAyNTkKICNkZWZpbmUgZGVjb3JhdG9ycyAyNjAKICNkZWZpbmUgZGVjb3JhdGVkIDI2MQotI2RlZmluZSBmdW5jZGVmIDI2MgotI2RlZmluZSBwYXJhbWV0ZXJzIDI2MwotI2RlZmluZSB0eXBlZGFyZ3NsaXN0IDI2NAotI2RlZmluZSB0ZnBkZWYgMjY1Ci0jZGVmaW5lIHZhcmFyZ3NsaXN0IDI2NgotI2RlZmluZSB2ZnBkZWYgMjY3Ci0jZGVmaW5lIHN0bXQgMjY4Ci0jZGVmaW5lIHNpbXBsZV9zdG10IDI2OQotI2RlZmluZSBzbWFsbF9zdG10IDI3MAotI2RlZmluZSBleHByX3N0bXQgMjcxCi0jZGVmaW5lIHRlc3RsaXN0X3N0YXJfZXhwciAyNzIKLSNkZWZpbmUgYXVnYXNzaWduIDI3MwotI2RlZmluZSBkZWxfc3RtdCAyNzQKLSNkZWZpbmUgcGFzc19zdG10IDI3NQotI2RlZmluZSBmbG93X3N0bXQgMjc2Ci0jZGVmaW5lIGJyZWFrX3N0bXQgMjc3Ci0jZGVmaW5lIGNvbnRpbnVlX3N0bXQgMjc4Ci0jZGVmaW5lIHJldHVybl9zdG10IDI3OQotI2RlZmluZSB5aWVsZF9zdG10IDI4MAotI2RlZmluZSByYWlzZV9zdG10IDI4MQotI2RlZmluZSBpbXBvcnRfc3RtdCAyODIKLSNkZWZpbmUgaW1wb3J0X25hbWUgMjgzCi0jZGVmaW5lIGltcG9ydF9mcm9tIDI4NAotI2RlZmluZSBpbXBvcnRfYXNfbmFtZSAyODUKLSNkZWZpbmUgZG90dGVkX2FzX25hbWUgMjg2Ci0jZGVmaW5lIGltcG9ydF9hc19uYW1lcyAyODcKLSNkZWZpbmUgZG90dGVkX2FzX25hbWVzIDI4OAotI2RlZmluZSBkb3R0ZWRfbmFtZSAyODkKLSNkZWZpbmUgZ2xvYmFsX3N0bXQgMjkwCi0jZGVmaW5lIG5vbmxvY2FsX3N0bXQgMjkxCi0jZGVmaW5lIGFzc2VydF9zdG10IDI5MgotI2RlZmluZSBjb21wb3VuZF9zdG10IDI5MwotI2RlZmluZSBpZl9zdG10IDI5NAotI2RlZmluZSB3aGlsZV9zdG10IDI5NQotI2RlZmluZSBmb3Jfc3RtdCAyOTYKLSNkZWZpbmUgdHJ5X3N0bXQgMjk3Ci0jZGVmaW5lIHdpdGhfc3RtdCAyOTgKLSNkZWZpbmUgd2l0aF9pdGVtIDI5OQotI2RlZmluZSBleGNlcHRfY2xhdXNlIDMwMAotI2RlZmluZSBzdWl0ZSAzMDEKLSNkZWZpbmUgdGVzdCAzMDIKLSNkZWZpbmUgdGVzdF9ub2NvbmQgMzAzCi0jZGVmaW5lIGxhbWJkZWYgMzA0Ci0jZGVmaW5lIGxhbWJkZWZfbm9jb25kIDMwNQotI2RlZmluZSBvcl90ZXN0IDMwNgotI2RlZmluZSBhbmRfdGVzdCAzMDcKLSNkZWZpbmUgbm90X3Rlc3QgMzA4Ci0jZGVmaW5lIGNvbXBhcmlzb24gMzA5Ci0jZGVmaW5lIGNvbXBfb3AgMzEwCi0jZGVmaW5lIHN0YXJfZXhwciAzMTEKLSNkZWZpbmUgZXhwciAzMTIKLSNkZWZpbmUgeG9yX2V4cHIgMzEzCi0jZGVmaW5lIGFuZF9leHByIDMxNAotI2RlZmluZSBzaGlmdF9leHByIDMxNQotI2RlZmluZSBhcml0aF9leHByIDMxNgotI2RlZmluZSB0ZXJtIDMxNwotI2RlZmluZSBmYWN0b3IgMzE4Ci0jZGVmaW5lIHBvd2VyIDMxOQotI2RlZmluZSBhdG9tIDMyMAotI2RlZmluZSB0ZXN0bGlzdF9jb21wIDMyMQotI2RlZmluZSB0cmFpbGVyIDMyMgotI2RlZmluZSBzdWJzY3JpcHRsaXN0IDMyMwotI2RlZmluZSBzdWJzY3JpcHQgMzI0Ci0jZGVmaW5lIHNsaWNlb3AgMzI1Ci0jZGVmaW5lIGV4cHJsaXN0IDMyNgotI2RlZmluZSB0ZXN0bGlzdCAzMjcKLSNkZWZpbmUgZGljdG9yc2V0bWFrZXIgMzI4Ci0jZGVmaW5lIGNsYXNzZGVmIDMyOQotI2RlZmluZSBhcmdsaXN0IDMzMAotI2RlZmluZSBhcmd1bWVudCAzMzEKLSNkZWZpbmUgY29tcF9pdGVyIDMzMgotI2RlZmluZSBjb21wX2ZvciAzMzMKLSNkZWZpbmUgY29tcF9pZiAzMzQKLSNkZWZpbmUgZW5jb2RpbmdfZGVjbCAzMzUKLSNkZWZpbmUgeWllbGRfZXhwciAzMzYKLSNkZWZpbmUgeWllbGRfYXJnIDMzNworI2RlZmluZSBhc3luY19mdW5jZGVmIDI2MgorI2RlZmluZSBmdW5jZGVmIDI2MworI2RlZmluZSBwYXJhbWV0ZXJzIDI2NAorI2RlZmluZSB0eXBlZGFyZ3NsaXN0IDI2NQorI2RlZmluZSB0ZnBkZWYgMjY2CisjZGVmaW5lIHZhcmFyZ3NsaXN0IDI2NworI2RlZmluZSB2ZnBkZWYgMjY4CisjZGVmaW5lIHN0bXQgMjY5CisjZGVmaW5lIHNpbXBsZV9zdG10IDI3MAorI2RlZmluZSBzbWFsbF9zdG10IDI3MQorI2RlZmluZSBleHByX3N0bXQgMjcyCisjZGVmaW5lIHRlc3RsaXN0X3N0YXJfZXhwciAyNzMKKyNkZWZpbmUgYXVnYXNzaWduIDI3NAorI2RlZmluZSBkZWxfc3RtdCAyNzUKKyNkZWZpbmUgcGFzc19zdG10IDI3NgorI2RlZmluZSBmbG93X3N0bXQgMjc3CisjZGVmaW5lIGJyZWFrX3N0bXQgMjc4CisjZGVmaW5lIGNvbnRpbnVlX3N0bXQgMjc5CisjZGVmaW5lIHJldHVybl9zdG10IDI4MAorI2RlZmluZSB5aWVsZF9zdG10IDI4MQorI2RlZmluZSByYWlzZV9zdG10IDI4MgorI2RlZmluZSBpbXBvcnRfc3RtdCAyODMKKyNkZWZpbmUgaW1wb3J0X25hbWUgMjg0CisjZGVmaW5lIGltcG9ydF9mcm9tIDI4NQorI2RlZmluZSBpbXBvcnRfYXNfbmFtZSAyODYKKyNkZWZpbmUgZG90dGVkX2FzX25hbWUgMjg3CisjZGVmaW5lIGltcG9ydF9hc19uYW1lcyAyODgKKyNkZWZpbmUgZG90dGVkX2FzX25hbWVzIDI4OQorI2RlZmluZSBkb3R0ZWRfbmFtZSAyOTAKKyNkZWZpbmUgZ2xvYmFsX3N0bXQgMjkxCisjZGVmaW5lIG5vbmxvY2FsX3N0bXQgMjkyCisjZGVmaW5lIGFzc2VydF9zdG10IDI5MworI2RlZmluZSBjb21wb3VuZF9zdG10IDI5NAorI2RlZmluZSBhc3luY19zdG10IDI5NQorI2RlZmluZSBpZl9zdG10IDI5NgorI2RlZmluZSB3aGlsZV9zdG10IDI5NworI2RlZmluZSBmb3Jfc3RtdCAyOTgKKyNkZWZpbmUgdHJ5X3N0bXQgMjk5CisjZGVmaW5lIHdpdGhfc3RtdCAzMDAKKyNkZWZpbmUgd2l0aF9pdGVtIDMwMQorI2RlZmluZSBleGNlcHRfY2xhdXNlIDMwMgorI2RlZmluZSBzdWl0ZSAzMDMKKyNkZWZpbmUgdGVzdCAzMDQKKyNkZWZpbmUgdGVzdF9ub2NvbmQgMzA1CisjZGVmaW5lIGxhbWJkZWYgMzA2CisjZGVmaW5lIGxhbWJkZWZfbm9jb25kIDMwNworI2RlZmluZSBvcl90ZXN0IDMwOAorI2RlZmluZSBhbmRfdGVzdCAzMDkKKyNkZWZpbmUgbm90X3Rlc3QgMzEwCisjZGVmaW5lIGNvbXBhcmlzb24gMzExCisjZGVmaW5lIGNvbXBfb3AgMzEyCisjZGVmaW5lIHN0YXJfZXhwciAzMTMKKyNkZWZpbmUgZXhwciAzMTQKKyNkZWZpbmUgeG9yX2V4cHIgMzE1CisjZGVmaW5lIGFuZF9leHByIDMxNgorI2RlZmluZSBzaGlmdF9leHByIDMxNworI2RlZmluZSBhcml0aF9leHByIDMxOAorI2RlZmluZSB0ZXJtIDMxOQorI2RlZmluZSBmYWN0b3IgMzIwCisjZGVmaW5lIHBvd2VyIDMyMQorI2RlZmluZSBhdG9tX2V4cHIgMzIyCisjZGVmaW5lIGF0b20gMzIzCisjZGVmaW5lIHRlc3RsaXN0X2NvbXAgMzI0CisjZGVmaW5lIHRyYWlsZXIgMzI1CisjZGVmaW5lIHN1YnNjcmlwdGxpc3QgMzI2CisjZGVmaW5lIHN1YnNjcmlwdCAzMjcKKyNkZWZpbmUgc2xpY2VvcCAzMjgKKyNkZWZpbmUgZXhwcmxpc3QgMzI5CisjZGVmaW5lIHRlc3RsaXN0IDMzMAorI2RlZmluZSBkaWN0b3JzZXRtYWtlciAzMzEKKyNkZWZpbmUgY2xhc3NkZWYgMzMyCisjZGVmaW5lIGFyZ2xpc3QgMzMzCisjZGVmaW5lIGFyZ3VtZW50IDMzNAorI2RlZmluZSBjb21wX2l0ZXIgMzM1CisjZGVmaW5lIGNvbXBfZm9yIDMzNgorI2RlZmluZSBjb21wX2lmIDMzNworI2RlZmluZSBlbmNvZGluZ19kZWNsIDMzOAorI2RlZmluZSB5aWVsZF9leHByIDMzOQorI2RlZmluZSB5aWVsZF9hcmcgMzQwCmRpZmYgLS1naXQgYS9JbmNsdWRlL2dyYW1tYXIuaCBiL0luY2x1ZGUvZ3JhbW1hci5oCmluZGV4IGJhN2QxOWQuLjg1MTIwYjkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZ3JhbW1hci5oCisrKyBiL0luY2x1ZGUvZ3JhbW1hci5oCkBAIC0zNyw3ICszNyw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgaW50CQkgc19uYXJjczsKICAgICBhcmMJCSpzX2FyYzsJCS8qIEFycmF5IG9mIGFyY3MgKi8KLQkKKwogICAgIC8qIE9wdGlvbmFsIGFjY2VsZXJhdG9ycyAqLwogICAgIGludAkJIHNfbG93ZXI7CS8qIExvd2VzdCBsYWJlbCBpbmRleCAqLwogICAgIGludAkJIHNfdXBwZXI7CS8qIEhpZ2hlc3QgbGFiZWwgaW5kZXggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvbGlzdG9iamVjdC5oIGIvSW5jbHVkZS9saXN0b2JqZWN0LmgKaW5kZXggNzRjZjQ2Zi4uZGFhNTEzZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9saXN0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9saXN0b2JqZWN0LmgKQEAgLTcyLDYgKzcyLDcgQEAKICNkZWZpbmUgUHlMaXN0X0dFVF9JVEVNKG9wLCBpKSAoKChQeUxpc3RPYmplY3QgKikob3ApKS0+b2JfaXRlbVtpXSkKICNkZWZpbmUgUHlMaXN0X1NFVF9JVEVNKG9wLCBpLCB2KSAoKChQeUxpc3RPYmplY3QgKikob3ApKS0+b2JfaXRlbVtpXSA9ICh2KSkKICNkZWZpbmUgUHlMaXN0X0dFVF9TSVpFKG9wKSAgICBQeV9TSVpFKG9wKQorI2RlZmluZSBfUHlMaXN0X0lURU1TKG9wKSAgICAgICgoKFB5TGlzdE9iamVjdCAqKShvcCkpLT5vYl9pdGVtKQogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9sb25nb2JqZWN0LmggYi9JbmNsdWRlL2xvbmdvYmplY3QuaAppbmRleCBmZjQzMzA5Li5hZWQ1OWNlIDEwMDY0NAotLS0gYS9JbmNsdWRlL2xvbmdvYmplY3QuaAorKysgYi9JbmNsdWRlL2xvbmdvYmplY3QuaApAQCAtMTk4LDYgKzE5OCw5IEBACiBQeUFQSV9GVU5DKHVuc2lnbmVkIGxvbmcpIFB5T1Nfc3RydG91bChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CiBQeUFQSV9GVU5DKGxvbmcpIFB5T1Nfc3RydG9sKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKIAorLyogRm9yIHVzZSBieSB0aGUgZ2NkIGZ1bmN0aW9uIGluIG1hdGhtb2R1bGUuYyAqLworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlMb25nX0dDRChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvbWVtb3J5b2JqZWN0LmggYi9JbmNsdWRlL21lbW9yeW9iamVjdC5oCmluZGV4IDM4MmNhOTIuLmFiNWVlMDkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbWVtb3J5b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9tZW1vcnlvYmplY3QuaApAQCAtNDUsOSArNDUsNiBAQAogfSBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0OwogCiAKLS8qIGRlcHJlY2F0ZWQsIHJlbW92ZWQgaW4gMy41ICovCi0jZGVmaW5lIF9QeV9NRU1PUllWSUVXX01BWF9GT1JNQVQgMyAvKiBtdXN0IGJlID49IDMgKi8KLQogLyogbWVtb3J5dmlldyBzdGF0ZSBmbGFncyAqLwogI2RlZmluZSBfUHlfTUVNT1JZVklFV19SRUxFQVNFRCAgICAweDAwMSAgLyogYWNjZXNzIHRvIG1hc3RlciBidWZmZXIgYmxvY2tlZCAqLwogI2RlZmluZSBfUHlfTUVNT1JZVklFV19DICAgICAgICAgICAweDAwMiAgLyogQy1jb250aWd1b3VzIGxheW91dCAqLwpAQCAtNjIsNyArNTksNiBAQAogICAgIGludCBmbGFnczsgICAgICAgICAgICAgICAgICAgIC8qIHN0YXRlIGZsYWdzICovCiAgICAgUHlfc3NpemVfdCBleHBvcnRzOyAgICAgICAgICAgLyogbnVtYmVyIG9mIGJ1ZmZlciByZS1leHBvcnRzICovCiAgICAgUHlfYnVmZmVyIHZpZXc7ICAgICAgICAgICAgICAgLyogcHJpdmF0ZSBjb3B5IG9mIHRoZSBleHBvcnRlcidzIHZpZXcgKi8KLSAgICBjaGFyIGZvcm1hdFtfUHlfTUVNT1JZVklFV19NQVhfRk9STUFUXTsgLyogZGVwcmVjYXRlZCwgcmVtb3ZlZCBpbiAzLjUgKi8KICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CiAgICAgUHlfc3NpemVfdCBvYl9hcnJheVsxXTsgICAgICAgLyogc2hhcGUsIHN0cmlkZXMsIHN1Ym9mZnNldHMgKi8KIH0gUHlNZW1vcnlWaWV3T2JqZWN0OwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tZXRob2RvYmplY3QuaCBiL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmgKaW5kZXggM2NjMmVhOS4uZTJhZDgwNCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tZXRob2RvYmplY3QuaAorKysgYi9JbmNsdWRlL21ldGhvZG9iamVjdC5oCkBAIC00Nyw3ICs0Nyw3IEBACiB0eXBlZGVmIHN0cnVjdCBQeU1ldGhvZERlZiBQeU1ldGhvZERlZjsKIAogI2RlZmluZSBQeUNGdW5jdGlvbl9OZXcoTUwsIFNFTEYpIFB5Q0Z1bmN0aW9uX05ld0V4KChNTCksIChTRUxGKSwgTlVMTCkKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDRnVuY3Rpb25fTmV3RXgoUHlNZXRob2REZWYgKiwgUHlPYmplY3QgKiwgCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q0Z1bmN0aW9uX05ld0V4KFB5TWV0aG9kRGVmICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICopOwogCiAvKiBGbGFnIHBhc3NlZCB0byBuZXdtZXRob2RvYmplY3QgKi8KQEAgLTY2LDcgKzY2LDcgQEAKIAogLyogTUVUSF9DT0VYSVNUIGFsbG93cyBhIG1ldGhvZCB0byBiZSBlbnRlcmVkIGV2ZW4gdGhvdWdoIGEgc2xvdCBoYXMKICAgIGFscmVhZHkgZmlsbGVkIHRoZSBlbnRyeS4gIFdoZW4gZGVmaW5lZCwgdGhlIGZsYWcgYWxsb3dzIGEgc2VwYXJhdGUKLSAgIG1ldGhvZCwgIl9fY29udGFpbnNfXyIgZm9yIGV4YW1wbGUsIHRvIGNvZXhpc3Qgd2l0aCBhIGRlZmluZWQgCisgICBtZXRob2QsICJfX2NvbnRhaW5zX18iIGZvciBleGFtcGxlLCB0byBjb2V4aXN0IHdpdGggYSBkZWZpbmVkCiAgICBzbG90IGxpa2Ugc3FfY29udGFpbnMuICovCiAKICNkZWZpbmUgTUVUSF9DT0VYSVNUICAgMHgwMDQwCkBAIC03Nyw2ICs3Nyw3IEBACiAgICAgUHlNZXRob2REZWYgKm1fbWw7IC8qIERlc2NyaXB0aW9uIG9mIHRoZSBDIGZ1bmN0aW9uIHRvIGNhbGwgKi8KICAgICBQeU9iamVjdCAgICAqbV9zZWxmOyAvKiBQYXNzZWQgYXMgJ3NlbGYnIGFyZyB0byB0aGUgQyBmdW5jLCBjYW4gYmUgTlVMTCAqLwogICAgIFB5T2JqZWN0ICAgICptX21vZHVsZTsgLyogVGhlIF9fbW9kdWxlX18gYXR0cmlidXRlLCBjYW4gYmUgYW55dGhpbmcgKi8KKyAgICBQeU9iamVjdCAgICAqbV93ZWFrcmVmbGlzdDsgLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgKi8KIH0gUHlDRnVuY3Rpb25PYmplY3Q7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tb2RzdXBwb3J0LmggYi9JbmNsdWRlL21vZHN1cHBvcnQuaAppbmRleCA1ZGUwNDU4Li44MjlhYWY4IDEwMDY0NAotLS0gYS9JbmNsdWRlL21vZHN1cHBvcnQuaAorKysgYi9JbmNsdWRlL21vZHN1cHBvcnQuaApAQCAtMTIsMTMgKzEyLDEzIEBACiAvKiBJZiBQWV9TU0laRV9UX0NMRUFOIGlzIGRlZmluZWQsIGVhY2ggZnVuY3Rpb25zIHRyZWF0cyAjLXNwZWNpZmllcgogICAgdG8gbWVhbiBQeV9zc2l6ZV90ICovCiAjaWZkZWYgUFlfU1NJWkVfVF9DTEVBTgotI2RlZmluZSBQeUFyZ19QYXJzZQkJCV9QeUFyZ19QYXJzZV9TaXplVAotI2RlZmluZSBQeUFyZ19QYXJzZVR1cGxlCQlfUHlBcmdfUGFyc2VUdXBsZV9TaXplVAotI2RlZmluZSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMJX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAotI2RlZmluZSBQeUFyZ19WYVBhcnNlCQkJX1B5QXJnX1ZhUGFyc2VfU2l6ZVQKLSNkZWZpbmUgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMJX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCi0jZGVmaW5lIFB5X0J1aWxkVmFsdWUJCQlfUHlfQnVpbGRWYWx1ZV9TaXplVAotI2RlZmluZSBQeV9WYUJ1aWxkVmFsdWUJCQlfUHlfVmFCdWlsZFZhbHVlX1NpemVUCisjZGVmaW5lIFB5QXJnX1BhcnNlICAgICAgICAgICAgICAgICAgICAgX1B5QXJnX1BhcnNlX1NpemVUCisjZGVmaW5lIFB5QXJnX1BhcnNlVHVwbGUgICAgICAgICAgICAgICAgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQKKyNkZWZpbmUgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzICAgICBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisjZGVmaW5lIFB5QXJnX1ZhUGFyc2UgICAgICAgICAgICAgICAgICAgX1B5QXJnX1ZhUGFyc2VfU2l6ZVQKKyNkZWZpbmUgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMgICBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyNkZWZpbmUgUHlfQnVpbGRWYWx1ZSAgICAgICAgICAgICAgICAgICBfUHlfQnVpbGRWYWx1ZV9TaXplVAorI2RlZmluZSBQeV9WYUJ1aWxkVmFsdWUgICAgICAgICAgICAgICAgIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQKICNlbHNlCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQoY29uc3QgY2hhciAqLCB2YV9saXN0KTsKICNlbmRpZgpAQCAtNTAsNiArNTAsMTMgQEAKICNkZWZpbmUgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgYykgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgI2MsIGMpCiAjZGVmaW5lIFB5TW9kdWxlX0FkZFN0cmluZ01hY3JvKG0sIGMpIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICNjLCBjKQogCisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzA1MDAwMAorLyogTmV3IGluIDMuNSAqLworUHlBUElfRlVOQyhpbnQpIFB5TW9kdWxlX1NldERvY1N0cmluZyhQeU9iamVjdCAqLCBjb25zdCBjaGFyICopOworUHlBUElfRlVOQyhpbnQpIFB5TW9kdWxlX0FkZEZ1bmN0aW9ucyhQeU9iamVjdCAqLCBQeU1ldGhvZERlZiAqKTsKK1B5QVBJX0ZVTkMoaW50KSBQeU1vZHVsZV9FeGVjRGVmKFB5T2JqZWN0ICptb2R1bGUsIFB5TW9kdWxlRGVmICpkZWYpOworI2VuZGlmCisKICNkZWZpbmUgUHlfQ0xFQU5VUF9TVVBQT1JURUQgMHgyMDAwMAogCiAjZGVmaW5lIFBZVEhPTl9BUElfVkVSU0lPTiAxMDEzCkBAIC02NywzNSArNzQsMzUgQEAKICAgIFBsZWFzZSBhZGQgYSBsaW5lIG9yIHR3byB0byB0aGUgdG9wIG9mIHRoaXMgbG9nIGZvciBlYWNoIEFQSQogICAgdmVyc2lvbiBjaGFuZ2U6CiAKLSAgIDIyLUZlYi0yMDA2ICBNdkwJMTAxMwlQRVAgMzUzIC0gbG9uZyBpbmRpY2VzIGZvciBzZXF1ZW5jZSBsZW5ndGhzCisgICAyMi1GZWItMjAwNiAgTXZMICAgICAxMDEzICAgIFBFUCAzNTMgLSBsb25nIGluZGljZXMgZm9yIHNlcXVlbmNlIGxlbmd0aHMKIAotICAgMTktQXVnLTIwMDIgIEd2UgkxMDEyCUNoYW5nZXMgdG8gc3RyaW5nIG9iamVjdCBzdHJ1Y3QgZm9yCi0gICAJCQkJaW50ZXJuaW5nIGNoYW5nZXMsIHNhdmluZyAzIGJ5dGVzLgorICAgMTktQXVnLTIwMDIgIEd2UiAgICAgMTAxMiAgICBDaGFuZ2VzIHRvIHN0cmluZyBvYmplY3Qgc3RydWN0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5pbmcgY2hhbmdlcywgc2F2aW5nIDMgYnl0ZXMuCiAKLSAgIDE3LUp1bC0yMDAxCUd2UgkxMDExCURlc2NyLWJyYW5jaCwganVzdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlCisgICAxNy1KdWwtMjAwMSAgR3ZSICAgICAxMDExICAgIERlc2NyLWJyYW5jaCwganVzdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlCiAKICAgIDI1LUphbi0yMDAxICBGTEQgICAgIDEwMTAgICAgUGFyYW1ldGVycyBhZGRlZCB0byBQeUNvZGVfTmV3KCkgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnJhbWVfTmV3KCk7IFB5dGhvbiAyLjFhMgogCiAgICAxNC1NYXItMjAwMCAgR3ZSICAgICAxMDA5ICAgIFVuaWNvZGUgQVBJIGFkZGVkCiAKLSAgIDMtSmFuLTE5OTkJR3ZSCTEwMDcJRGVjaWRlZCB0byBjaGFuZ2UgYmFjayEgIChEb24ndCByZXVzZSAxMDA4ISkKKyAgIDMtSmFuLTE5OTkgICBHdlIgICAgIDEwMDcgICAgRGVjaWRlZCB0byBjaGFuZ2UgYmFjayEgIChEb24ndCByZXVzZSAxMDA4ISkKIAotICAgMy1EZWMtMTk5OAlHdlIJMTAwOAlQeXRob24gMS41LjJiMQorICAgMy1EZWMtMTk5OCAgIEd2UiAgICAgMTAwOCAgICBQeXRob24gMS41LjJiMQogCi0gICAxOC1KYW4tMTk5NwlHdlIJMTAwNwlzdHJpbmcgaW50ZXJuaW5nIGFuZCBvdGhlciBzcGVlZHVwcworICAgMTgtSmFuLTE5OTcgIEd2UiAgICAgMTAwNyAgICBzdHJpbmcgaW50ZXJuaW5nIGFuZCBvdGhlciBzcGVlZHVwcwogCi0gICAxMS1PY3QtMTk5NglHdlIJcmVuYW1lZCBQeV9FbGxpcHNlcyB0byBQeV9FbGxpcHNpcyA6LSgKKyAgIDExLU9jdC0xOTk2ICBHdlIgICAgIHJlbmFtZWQgUHlfRWxsaXBzZXMgdG8gUHlfRWxsaXBzaXMgOi0oCiAKLSAgIDMwLUp1bC0xOTk2CUd2UglTbGljZSBhbmQgZWxsaXBzZXMgc3ludGF4IGFkZGVkCisgICAzMC1KdWwtMTk5NiAgR3ZSICAgICBTbGljZSBhbmQgZWxsaXBzZXMgc3ludGF4IGFkZGVkCiAKLSAgIDIzLUp1bC0xOTk2CUd2UglGb3IgMS40IC0tIGJldHRlciBzYWZlIHRoYW4gc29ycnkgdGhpcyB0aW1lIDotKQorICAgMjMtSnVsLTE5OTYgIEd2UiAgICAgRm9yIDEuNCAtLSBiZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5IHRoaXMgdGltZSA6LSkKIAotICAgNy1Ob3YtMTk5NQlHdlIJS2V5d29yZCBhcmd1bWVudHMgKHNob3VsZCd2ZSBiZWVuIGRvbmUgYXQgMS4zIDotKCApCisgICA3LU5vdi0xOTk1ICAgR3ZSICAgICBLZXl3b3JkIGFyZ3VtZW50cyAoc2hvdWxkJ3ZlIGJlZW4gZG9uZSBhdCAxLjMgOi0oICkKIAotICAgMTAtSmFuLTE5OTUJR3ZSCVJlbmFtZWQgZ2xvYmFscyB0byBuZXcgbmFtaW5nIHNjaGVtZQorICAgMTAtSmFuLTE5OTUgIEd2UiAgICAgUmVuYW1lZCBnbG9iYWxzIHRvIG5ldyBuYW1pbmcgc2NoZW1lCiAKLSAgIDktSmFuLTE5OTUJR3ZSCUluaXRpYWwgdmVyc2lvbiAoaW5jb21wYXRpYmxlIHdpdGggb2xkZXIgQVBJKQorICAgOS1KYW4tMTk5NSAgIEd2UiAgICAgSW5pdGlhbCB2ZXJzaW9uIChpbmNvbXBhdGlibGUgd2l0aCBvbGRlciBBUEkpCiAqLwogCiAvKiBUaGUgUFlUSE9OX0FCSV9WRVJTSU9OIGlzIGludHJvZHVjZWQgaW4gUEVQIDM4NC4gRm9yIHRoZSBsaWZldGltZSBvZgpAQCAtMTA1LDEwICsxMTIsMTEgQEAKICNkZWZpbmUgUFlUSE9OX0FCSV9TVFJJTkcgIjMiCiAKICNpZmRlZiBQeV9UUkFDRV9SRUZTCi0gLyogV2hlbiB3ZSBhcmUgdHJhY2luZyByZWZlcmVuY2UgY291bnRzLCByZW5hbWUgUHlNb2R1bGVfQ3JlYXRlMiBzbworIC8qIFdoZW4gd2UgYXJlIHRyYWNpbmcgcmVmZXJlbmNlIGNvdW50cywgcmVuYW1lIG1vZHVsZSBjcmVhdGlvbiBmdW5jdGlvbnMgc28KICAgICBtb2R1bGVzIGNvbXBpbGVkIHdpdGggaW5jb21wYXRpYmxlIHNldHRpbmdzIHdpbGwgZ2VuZXJhdGUgYQogICAgIGxpbmstdGltZSBlcnJvci4gKi8KICAjZGVmaW5lIFB5TW9kdWxlX0NyZWF0ZTIgUHlNb2R1bGVfQ3JlYXRlMlRyYWNlUmVmcworICNkZWZpbmUgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyIFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjMlRyYWNlUmVmcwogI2VuZGlmCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNb2R1bGVfQ3JlYXRlMihzdHJ1Y3QgUHlNb2R1bGVEZWYqLApAQCAtMTE2LDEyICsxMjQsMjcgQEAKIAogI2lmZGVmIFB5X0xJTUlURURfQVBJCiAjZGVmaW5lIFB5TW9kdWxlX0NyZWF0ZShtb2R1bGUpIFwKLQlQeU1vZHVsZV9DcmVhdGUyKG1vZHVsZSwgUFlUSE9OX0FCSV9WRVJTSU9OKQorICAgICAgICBQeU1vZHVsZV9DcmVhdGUyKG1vZHVsZSwgUFlUSE9OX0FCSV9WRVJTSU9OKQogI2Vsc2UKICNkZWZpbmUgUHlNb2R1bGVfQ3JlYXRlKG1vZHVsZSkgXAotCVB5TW9kdWxlX0NyZWF0ZTIobW9kdWxlLCBQWVRIT05fQVBJX1ZFUlNJT04pCisgICAgICAgIFB5TW9kdWxlX0NyZWF0ZTIobW9kdWxlLCBQWVRIT05fQVBJX1ZFUlNJT04pCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwNTAwMDAKKy8qIE5ldyBpbiAzLjUgKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyKFB5TW9kdWxlRGVmICpkZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb2R1bGVfYXBpX3ZlcnNpb24pOworCisjaWZkZWYgUHlfTElNSVRFRF9BUEkKKyNkZWZpbmUgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMobW9kdWxlLCBzcGVjKSBcCisgICAgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyKG1vZHVsZSwgc3BlYywgUFlUSE9OX0FCSV9WRVJTSU9OKQorI2Vsc2UKKyNkZWZpbmUgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMobW9kdWxlLCBzcGVjKSBcCisgICAgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyKG1vZHVsZSwgc3BlYywgUFlUSE9OX0FQSV9WRVJTSU9OKQorI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCisjZW5kaWYgLyogTmV3IGluIDMuNSAqLworCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9EQVRBKGNoYXIgKikgX1B5X1BhY2thZ2VDb250ZXh0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL21vZHVsZW9iamVjdC5oIGIvSW5jbHVkZS9tb2R1bGVvYmplY3QuaAppbmRleCBmMTE5MzY0Li4yMjlkN2ZhIDEwMDY0NAotLS0gYS9JbmNsdWRlL21vZHVsZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvbW9kdWxlb2JqZWN0LmgKQEAgLTMwLDYgKzMwLDEyIEBACiBQeUFQSV9GVU5DKHN0cnVjdCBQeU1vZHVsZURlZiopIFB5TW9kdWxlX0dldERlZihQeU9iamVjdCopOwogUHlBUElfRlVOQyh2b2lkKikgUHlNb2R1bGVfR2V0U3RhdGUoUHlPYmplY3QqKTsKIAorI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwNTAwMDAKKy8qIE5ldyBpbiAzLjUgKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNb2R1bGVEZWZfSW5pdChzdHJ1Y3QgUHlNb2R1bGVEZWYqKTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeU1vZHVsZURlZl9UeXBlOworI2VuZGlmCisKIHR5cGVkZWYgc3RydWN0IFB5TW9kdWxlRGVmX0Jhc2UgewogICBQeU9iamVjdF9IRUFECiAgIFB5T2JqZWN0KiAoKm1faW5pdCkodm9pZCk7CkBAIC00NCwxOSArNTAsMzUgQEAKICAgICBOVUxMLCAvKiBtX2NvcHkgKi8gICAgICAgICAgXAogICB9CiAKK3N0cnVjdCBQeU1vZHVsZURlZl9TbG90OworI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwNTAwMDAKKy8qIE5ldyBpbiAzLjUgKi8KK3R5cGVkZWYgc3RydWN0IFB5TW9kdWxlRGVmX1Nsb3R7CisgICAgaW50IHNsb3Q7CisgICAgdm9pZCAqdmFsdWU7Cit9IFB5TW9kdWxlRGVmX1Nsb3Q7CisKKyNkZWZpbmUgUHlfbW9kX2NyZWF0ZSAxCisjZGVmaW5lIFB5X21vZF9leGVjIDIKKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorI2RlZmluZSBfUHlfbW9kX0xBU1RfU0xPVCAyCisjZW5kaWYKKworI2VuZGlmIC8qIE5ldyBpbiAzLjUgKi8KKwogdHlwZWRlZiBzdHJ1Y3QgUHlNb2R1bGVEZWZ7CiAgIFB5TW9kdWxlRGVmX0Jhc2UgbV9iYXNlOwogICBjb25zdCBjaGFyKiBtX25hbWU7CiAgIGNvbnN0IGNoYXIqIG1fZG9jOwogICBQeV9zc2l6ZV90IG1fc2l6ZTsKICAgUHlNZXRob2REZWYgKm1fbWV0aG9kczsKLSAgaW5xdWlyeSBtX3JlbG9hZDsKKyAgc3RydWN0IFB5TW9kdWxlRGVmX1Nsb3QqIG1fc2xvdHM7CiAgIHRyYXZlcnNlcHJvYyBtX3RyYXZlcnNlOwogICBpbnF1aXJ5IG1fY2xlYXI7CiAgIGZyZWVmdW5jIG1fZnJlZTsKIH1QeU1vZHVsZURlZjsKIAotCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ub2RlLmggYi9JbmNsdWRlL25vZGUuaAppbmRleCAyZTRlMmJhLi42NTRhZDg1IDEwMDY0NAotLS0gYS9JbmNsdWRlL25vZGUuaAorKysgYi9JbmNsdWRlL25vZGUuaApAQCAtMjYsNyArMjYsNyBAQAogCiAvKiBOb2RlIGFjY2VzcyBmdW5jdGlvbnMgKi8KICNkZWZpbmUgTkNIKG4pCQkoKG4pLT5uX25jaGlsZHJlbikKLQkKKwogI2RlZmluZSBDSElMRChuLCBpKQkoJihuKS0+bl9jaGlsZFtpXSkKICNkZWZpbmUgUkNISUxEKG4sIGkpCShDSElMRChuLCBOQ0gobikgKyBpKSkKICNkZWZpbmUgVFlQRShuKQkJKChuKS0+bl90eXBlKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vYmplY3QuaCBiL0luY2x1ZGUvb2JqZWN0LmgKaW5kZXggNWY4NjJhYi4uZWFjOTU0MSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vYmplY3QuaAorKysgYi9JbmNsdWRlL29iamVjdC5oCkBAIC02NSw2ICs2NSw3IEBACiAjZXJyb3IgUHlfTElNSVRFRF9BUEkgaXMgaW5jb21wYXRpYmxlIHdpdGggUHlfREVCVUcsIFB5X1RSQUNFX1JFRlMsIGFuZCBQeV9SRUZfREVCVUcKICNlbmRpZgogCisKICNpZmRlZiBQeV9UUkFDRV9SRUZTCiAvKiBEZWZpbmUgcG9pbnRlcnMgdG8gc3VwcG9ydCBhIGRvdWJseS1saW5rZWQgbGlzdCBvZiBhbGwgbGl2ZSBoZWFwIG9iamVjdHMuICovCiAjZGVmaW5lIF9QeU9iamVjdF9IRUFEX0VYVFJBICAgICAgICAgICAgXApAQCAtMjc1LDYgKzI3Niw5IEBACiAgICAgYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX3RydWVfZGl2aWRlOwogCiAgICAgdW5hcnlmdW5jIG5iX2luZGV4OworCisgICAgYmluYXJ5ZnVuYyBuYl9tYXRyaXhfbXVsdGlwbHk7CisgICAgYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX21hdHJpeF9tdWx0aXBseTsKIH0gUHlOdW1iZXJNZXRob2RzOwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC0yOTcsNiArMzAxLDExIEBACiAgICAgb2Jqb2JqYXJncHJvYyBtcF9hc3Nfc3Vic2NyaXB0OwogfSBQeU1hcHBpbmdNZXRob2RzOwogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdW5hcnlmdW5jIGFtX2F3YWl0OworICAgIHVuYXJ5ZnVuYyBhbV9haXRlcjsKKyAgICB1bmFyeWZ1bmMgYW1fYW5leHQ7Cit9IFB5QXN5bmNNZXRob2RzOwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgIGdldGJ1ZmZlcnByb2MgYmZfZ2V0YnVmZmVyOwpAQCAtMzQyLDcgKzM1MSw4IEBACiAgICAgcHJpbnRmdW5jIHRwX3ByaW50OwogICAgIGdldGF0dHJmdW5jIHRwX2dldGF0dHI7CiAgICAgc2V0YXR0cmZ1bmMgdHBfc2V0YXR0cjsKLSAgICB2b2lkICp0cF9yZXNlcnZlZDsgLyogZm9ybWVybHkga25vd24gYXMgdHBfY29tcGFyZSAqLworICAgIFB5QXN5bmNNZXRob2RzICp0cF9hc19hc3luYzsgLyogZm9ybWVybHkga25vd24gYXMgdHBfY29tcGFyZSAoUHl0aG9uIDIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB0cF9yZXNlcnZlZCAoUHl0aG9uIDMpICovCiAgICAgcmVwcmZ1bmMgdHBfcmVwcjsKIAogICAgIC8qIE1ldGhvZCBzdWl0ZXMgZm9yIHN0YW5kYXJkIGNsYXNzZXMgKi8KQEAgLTQ0OSw2ICs0NTksNyBAQAogICAgIC8qIE5vdGU6IHRoZXJlJ3MgYSBkZXBlbmRlbmN5IG9uIHRoZSBvcmRlciBvZiB0aGVzZSBtZW1iZXJzCiAgICAgICAgaW4gc2xvdHB0cigpIGluIHR5cGVvYmplY3QuYyAuICovCiAgICAgUHlUeXBlT2JqZWN0IGh0X3R5cGU7CisgICAgUHlBc3luY01ldGhvZHMgYXNfYXN5bmM7CiAgICAgUHlOdW1iZXJNZXRob2RzIGFzX251bWJlcjsKICAgICBQeU1hcHBpbmdNZXRob2RzIGFzX21hcHBpbmc7CiAgICAgUHlTZXF1ZW5jZU1ldGhvZHMgYXNfc2VxdWVuY2U7IC8qIGFzX3NlcXVlbmNlIGNvbWVzIGFmdGVyIGFzX21hcHBpbmcsCkBAIC01NzIsMTMgKzU4Myw2IEBACiBQeUFQSV9GVU5DKGludCkgUHlfUmVwckVudGVyKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyh2b2lkKSBQeV9SZXByTGVhdmUoUHlPYmplY3QgKik7CiAKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLS8qIEhlbHBlciBmb3IgcGFzc2luZyBvYmplY3RzIHRvIHByaW50ZiBhbmQgdGhlIGxpa2UuCi0gICBMZWFrcyByZWZjb3VudHMuICBEb24ndCB1c2UgaXQhCi0qLwotI2RlZmluZSBQeU9iamVjdF9SRVBSKG9iaikgUHlVbmljb2RlX0FzVVRGOChQeU9iamVjdF9SZXByKG9iaikpCi0jZW5kaWYKLQogLyogRmxhZyBiaXRzIGZvciBwcmludGluZzogKi8KICNkZWZpbmUgUHlfUFJJTlRfUkFXICAgIDEgICAgICAgLyogTm8gc3RyaW5nIHF1b3RlcyBldGMuICovCiAKQEAgLTcxNCwxMSArNzE4LDE3IEBACiAgICAgICAgICAgICAgICAgX1B5X05lZ2F0aXZlUmVmY291bnQoX19GSUxFX18sIF9fTElORV9fLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKShPUCkpOyAgICAgICAgIFwKIH0KKy8qIFB5X1JFRl9ERUJVRyBhbHNvIGNvbnRyb2xzIHRoZSBkaXNwbGF5IG9mIHJlZmNvdW50cyBhbmQgbWVtb3J5IGJsb2NrCisgKiBhbGxvY2F0aW9ucyBhdCB0aGUgaW50ZXJhY3RpdmUgcHJvbXB0IGFuZCBhdCBpbnRlcnByZXRlciBzaHV0ZG93bgorICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeURlYnVnX1ByaW50VG90YWxSZWZzKHZvaWQpOworI2RlZmluZSBfUFlfREVCVUdfUFJJTlRfVE9UQUxfUkVGUygpIF9QeURlYnVnX1ByaW50VG90YWxSZWZzKCkKICNlbHNlCiAjZGVmaW5lIF9QeV9JTkNfUkVGVE9UQUwKICNkZWZpbmUgX1B5X0RFQ19SRUZUT1RBTAogI2RlZmluZSBfUHlfUkVGX0RFQlVHX0NPTU1BCiAjZGVmaW5lIF9QeV9DSEVDS19SRUZDTlQoT1ApICAgIC8qIGEgc2VtaWNvbG9uICovOworI2RlZmluZSBfUFlfREVCVUdfUFJJTlRfVE9UQUxfUkVGUygpCiAjZW5kaWYgLyogUHlfUkVGX0RFQlVHICovCiAKICNpZmRlZiBDT1VOVF9BTExPQ1MKQEAgLTgzNiw2ICs4NDYsMzIgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihfcHlfeGRlY3JlZl90bXApOyAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisvKiBTYWZlbHkgZGVjcmVmIGBvcGAgYW5kIHNldCBgb3BgIHRvIGBvcDJgLgorICoKKyAqIEFzIGluIGNhc2Ugb2YgUHlfQ0xFQVIgInRoZSBvYnZpb3VzIiBjb2RlIGNhbiBiZSBkZWFkbHk6CisgKgorICogICAgIFB5X1hERUNSRUYob3ApOworICogICAgIG9wID0gb3AyOworICoKKyAqIFRoZSBzYWZlIHdheSBpczoKKyAqCisgKiAgICAgIFB5X1NFVFJFRihvcCwgb3AyKTsKKyAqCisgKiBUaGF0IGFycmFuZ2VzIHRvIHNldCBgb3BgIHRvIGBvcDJgIF9iZWZvcmVfIGRlY3JlZidpbmcsIHNvIHRoYXQgYW55IGNvZGUKKyAqIHRyaWdnZXJlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIGBvcGAgZ2V0dGluZyB0b3JuIGRvd24gbm8gbG9uZ2VyIGJlbGlldmVzCisgKiBgb3BgIHBvaW50cyB0byBhIHZhbGlkIG9iamVjdC4KKyAqLworCisjZGVmaW5lIFB5X1NFVFJFRihvcCwgb3AyKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5T2JqZWN0ICpfcHlfdG1wID0gKFB5T2JqZWN0ICopKG9wKTsgICBcCisgICAgICAgIChvcCkgPSAob3AyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X1hERUNSRUYoX3B5X3RtcCk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworI2VuZGlmIC8qIGlmbmRlZiBQeV9MSU1JVEVEX0FQSSAqLworCiAvKgogVGhlc2UgYXJlIHByb3ZpZGVkIGFzIGNvbnZlbmllbmNlcyB0byBQeXRob24gcnVudGltZSBlbWJlZGRlcnMsIHNvIHRoYXQKIHRoZXkgY2FuIGhhdmUgb2JqZWN0IGNvZGUgdGhhdCBpcyBub3QgZGVwZW5kZW50IG9uIFB5dGhvbiBjb21waWxhdGlvbiBmbGFncy4KZGlmZiAtLWdpdCBhL0luY2x1ZGUvb2JqaW1wbC5oIGIvSW5jbHVkZS9vYmppbXBsLmgKaW5kZXggM2YyMWI3MC4uNjViNmQ5MSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vYmppbXBsLmgKKysrIGIvSW5jbHVkZS9vYmppbXBsLmgKQEAgLTk1LDYgKzk1LDcgQEAKICAgIHRoZSByYXcgbWVtb3J5LgogKi8KIFB5QVBJX0ZVTkModm9pZCAqKSBQeU9iamVjdF9NYWxsb2Moc2l6ZV90IHNpemUpOworUHlBUElfRlVOQyh2b2lkICopIFB5T2JqZWN0X0NhbGxvYyhzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpOwogUHlBUElfRlVOQyh2b2lkICopIFB5T2JqZWN0X1JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpOwogUHlBUElfRlVOQyh2b2lkKSBQeU9iamVjdF9GcmVlKHZvaWQgKnB0cik7CiAKQEAgLTMyMSw3ICszMjIsOCBAQAogICAgICAgICAoIVB5VHVwbGVfQ2hlY2tFeGFjdChvYmopIHx8IF9QeU9iamVjdF9HQ19JU19UUkFDS0VEKG9iaikpKQogI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0dDX01hbGxvYyhzaXplX3QpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfR0NfTWFsbG9jKHNpemVfdCBzaXplKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0dDX0NhbGxvYyhzaXplX3Qgc2l6ZSk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9HQ19OZXcoUHlUeXBlT2JqZWN0ICopOwogUHlBUElfRlVOQyhQeVZhck9iamVjdCAqKSBfUHlPYmplY3RfR0NfTmV3VmFyKFB5VHlwZU9iamVjdCAqLCBQeV9zc2l6ZV90KTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPYmplY3RfR0NfVHJhY2sodm9pZCAqKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb2RpY3RvYmplY3QuaCBiL0luY2x1ZGUvb2RpY3RvYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWQ5NTkyCi0tLSAvZGV2L251bGwKKysrIGIvSW5jbHVkZS9vZGljdG9iamVjdC5oCkBAIC0wLDAgKzEsNDMgQEAKKyNpZm5kZWYgUHlfT0RJQ1RPQkpFQ1RfSAorI2RlZmluZSBQeV9PRElDVE9CSkVDVF9ICisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKworLyogT3JkZXJlZERpY3QgKi8KKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorCit0eXBlZGVmIHN0cnVjdCBfb2RpY3RvYmplY3QgUHlPRGljdE9iamVjdDsKKworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5T0RpY3RfVHlwZTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeU9EaWN0SXRlcl9UeXBlOworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5T0RpY3RLZXlzX1R5cGU7CitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlPRGljdEl0ZW1zX1R5cGU7CitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlPRGljdFZhbHVlc19UeXBlOworCisjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KKworI2RlZmluZSBQeU9EaWN0X0NoZWNrKG9wKSBQeU9iamVjdF9UeXBlQ2hlY2sob3AsICZQeU9EaWN0X1R5cGUpCisjZGVmaW5lIFB5T0RpY3RfQ2hlY2tFeGFjdChvcCkgKFB5X1RZUEUob3ApID09ICZQeU9EaWN0X1R5cGUpCisjZGVmaW5lIFB5T0RpY3RfU0laRShvcCkgKChQeURpY3RPYmplY3QgKilvcCktPm1hX3VzZWQKKyNkZWZpbmUgUHlPRGljdF9IYXNLZXkob2QsIGtleSkgKFB5TWFwcGluZ19IYXNLZXkoUHlPYmplY3QgKilvZCwga2V5KQorCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T0RpY3RfTmV3KHZvaWQpOworUHlBUElfRlVOQyhpbnQpIFB5T0RpY3RfU2V0SXRlbShQeU9iamVjdCAqb2QsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICppdGVtKTsKK1B5QVBJX0ZVTkMoaW50KSBQeU9EaWN0X0RlbEl0ZW0oUHlPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5KTsKKworLyogd3JhcHBlcnMgYXJvdW5kIFB5RGljdCogZnVuY3Rpb25zICovCisjZGVmaW5lIFB5T0RpY3RfR2V0SXRlbShvZCwga2V5KSBQeURpY3RfR2V0SXRlbSgoUHlPYmplY3QgKilvZCwga2V5KQorI2RlZmluZSBQeU9EaWN0X0dldEl0ZW1XaXRoRXJyb3Iob2QsIGtleSkgXAorICAgIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKChQeU9iamVjdCAqKW9kLCBrZXkpCisjZGVmaW5lIFB5T0RpY3RfQ29udGFpbnMob2QsIGtleSkgUHlEaWN0X0NvbnRhaW5zKChQeU9iamVjdCAqKW9kLCBrZXkpCisjZGVmaW5lIFB5T0RpY3RfU2l6ZShvZCkgUHlEaWN0X1NpemUoKFB5T2JqZWN0ICopb2QpCisjZGVmaW5lIFB5T0RpY3RfR2V0SXRlbVN0cmluZyhvZCwga2V5KSBcCisgICAgUHlEaWN0X0dldEl0ZW1TdHJpbmcoKFB5T2JqZWN0ICopb2QsIGtleSkKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvKiAhUHlfT0RJQ1RPQkpFQ1RfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vcGNvZGUuaCBiL0luY2x1ZGUvb3Bjb2RlLmgKaW5kZXggMDkzNmYyZC4uM2Y5MTdmYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vcGNvZGUuaAorKysgYi9JbmNsdWRlL29wY29kZS5oCkBAIC0xLDMgKzEsNCBAQAorLyogQXV0by1nZW5lcmF0ZWQgYnkgVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weSAqLwogI2lmbmRlZiBQeV9PUENPREVfSAogI2RlZmluZSBQeV9PUENPREVfSAogI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC01LDE0MSArNiwxMjIgQEAKICNlbmRpZgogCiAKLS8qIEluc3RydWN0aW9uIG9wY29kZXMgZm9yIGNvbXBpbGVkIGNvZGUgKi8KLQotI2RlZmluZSBQT1BfVE9QICAgICAgICAgMQotI2RlZmluZSBST1RfVFdPICAgICAgICAgMgotI2RlZmluZSBST1RfVEhSRUUgICAgICAgMwotI2RlZmluZSBEVVBfVE9QICAgICAgICAgNAotI2RlZmluZSBEVVBfVE9QX1RXTyAgICAgNQotI2RlZmluZSBOT1AgICAgICAgICAgICAgOQotCi0jZGVmaW5lIFVOQVJZX1BPU0lUSVZFICAxMAotI2RlZmluZSBVTkFSWV9ORUdBVElWRSAgMTEKLSNkZWZpbmUgVU5BUllfTk9UICAgICAgIDEyCi0KLSNkZWZpbmUgVU5BUllfSU5WRVJUICAgIDE1Ci0KLSNkZWZpbmUgQklOQVJZX1BPV0VSICAgIDE5Ci0KLSNkZWZpbmUgQklOQVJZX01VTFRJUExZIDIwCi0KLSNkZWZpbmUgQklOQVJZX01PRFVMTyAgIDIyCi0jZGVmaW5lIEJJTkFSWV9BREQgICAgICAyMwotI2RlZmluZSBCSU5BUllfU1VCVFJBQ1QgMjQKLSNkZWZpbmUgQklOQVJZX1NVQlNDUiAgIDI1Ci0jZGVmaW5lIEJJTkFSWV9GTE9PUl9ESVZJREUgMjYKLSNkZWZpbmUgQklOQVJZX1RSVUVfRElWSURFIDI3Ci0jZGVmaW5lIElOUExBQ0VfRkxPT1JfRElWSURFIDI4Ci0jZGVmaW5lIElOUExBQ0VfVFJVRV9ESVZJREUgMjkKLQotI2RlZmluZSBTVE9SRV9NQVAgICAgICAgNTQKLSNkZWZpbmUgSU5QTEFDRV9BREQgICAgIDU1Ci0jZGVmaW5lIElOUExBQ0VfU1VCVFJBQ1QgICAgICAgIDU2Ci0jZGVmaW5lIElOUExBQ0VfTVVMVElQTFkgICAgICAgIDU3Ci0KLSNkZWZpbmUgSU5QTEFDRV9NT0RVTE8gIDU5Ci0jZGVmaW5lIFNUT1JFX1NVQlNDUiAgICA2MAotI2RlZmluZSBERUxFVEVfU1VCU0NSICAgNjEKLQotI2RlZmluZSBCSU5BUllfTFNISUZUICAgNjIKLSNkZWZpbmUgQklOQVJZX1JTSElGVCAgIDYzCi0jZGVmaW5lIEJJTkFSWV9BTkQgICAgICA2NAotI2RlZmluZSBCSU5BUllfWE9SICAgICAgNjUKLSNkZWZpbmUgQklOQVJZX09SICAgICAgIDY2Ci0jZGVmaW5lIElOUExBQ0VfUE9XRVIgICA2NwotI2RlZmluZSBHRVRfSVRFUiAgICAgICAgNjgKLSNkZWZpbmUgUFJJTlRfRVhQUiAgICAgIDcwCi0jZGVmaW5lIExPQURfQlVJTERfQ0xBU1MgNzEKLSNkZWZpbmUgWUlFTERfRlJPTSAgICAgIDcyCi0KLSNkZWZpbmUgSU5QTEFDRV9MU0hJRlQgIDc1Ci0jZGVmaW5lIElOUExBQ0VfUlNISUZUICA3NgotI2RlZmluZSBJTlBMQUNFX0FORCAgICAgNzcKLSNkZWZpbmUgSU5QTEFDRV9YT1IgICAgIDc4Ci0jZGVmaW5lIElOUExBQ0VfT1IgICAgICA3OQotI2RlZmluZSBCUkVBS19MT09QICAgICAgODAKLSNkZWZpbmUgV0lUSF9DTEVBTlVQICAgIDgxCi0KLSNkZWZpbmUgUkVUVVJOX1ZBTFVFICAgIDgzCi0jZGVmaW5lIElNUE9SVF9TVEFSICAgICA4NAotCi0jZGVmaW5lIFlJRUxEX1ZBTFVFICAgICA4NgotI2RlZmluZSBQT1BfQkxPQ0sgICAgICAgODcKLSNkZWZpbmUgRU5EX0ZJTkFMTFkgICAgIDg4Ci0jZGVmaW5lIFBPUF9FWENFUFQgICAgICA4OQotCi0jZGVmaW5lIEhBVkVfQVJHVU1FTlQgICA5MCAgICAgIC8qIE9wY29kZXMgZnJvbSBoZXJlIGhhdmUgYW4gYXJndW1lbnQ6ICovCi0KLSNkZWZpbmUgU1RPUkVfTkFNRSAgICAgIDkwICAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0jZGVmaW5lIERFTEVURV9OQU1FICAgICA5MSAgICAgIC8qICIiICovCi0jZGVmaW5lIFVOUEFDS19TRVFVRU5DRSA5MiAgICAgIC8qIE51bWJlciBvZiBzZXF1ZW5jZSBpdGVtcyAqLwotI2RlZmluZSBGT1JfSVRFUiAgICAgICAgOTMKLSNkZWZpbmUgVU5QQUNLX0VYICAgICAgIDk0ICAgICAgLyogTnVtIGl0ZW1zIGJlZm9yZSB2YXJpYWJsZSBwYXJ0ICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE51bSBpdGVtcyBhZnRlciB2YXJpYWJsZSBwYXJ0IDw8IDgpICovCi0KLSNkZWZpbmUgU1RPUkVfQVRUUiAgICAgIDk1ICAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0jZGVmaW5lIERFTEVURV9BVFRSICAgICA5NiAgICAgIC8qICIiICovCi0jZGVmaW5lIFNUT1JFX0dMT0JBTCAgICA5NyAgICAgIC8qICIiICovCi0jZGVmaW5lIERFTEVURV9HTE9CQUwgICA5OCAgICAgIC8qICIiICovCi0KLSNkZWZpbmUgTE9BRF9DT05TVCAgICAgIDEwMCAgICAgLyogSW5kZXggaW4gY29uc3QgbGlzdCAqLwotI2RlZmluZSBMT0FEX05BTUUgICAgICAgMTAxICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KLSNkZWZpbmUgQlVJTERfVFVQTEUgICAgIDEwMiAgICAgLyogTnVtYmVyIG9mIHR1cGxlIGl0ZW1zICovCi0jZGVmaW5lIEJVSUxEX0xJU1QgICAgICAxMDMgICAgIC8qIE51bWJlciBvZiBsaXN0IGl0ZW1zICovCi0jZGVmaW5lIEJVSUxEX1NFVCAgICAgICAxMDQgICAgIC8qIE51bWJlciBvZiBzZXQgaXRlbXMgKi8KLSNkZWZpbmUgQlVJTERfTUFQICAgICAgIDEwNSAgICAgLyogQWx3YXlzIHplcm8gZm9yIG5vdyAqLwotI2RlZmluZSBMT0FEX0FUVFIgICAgICAgMTA2ICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KLSNkZWZpbmUgQ09NUEFSRV9PUCAgICAgIDEwNyAgICAgLyogQ29tcGFyaXNvbiBvcGVyYXRvciAqLwotI2RlZmluZSBJTVBPUlRfTkFNRSAgICAgMTA4ICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KLSNkZWZpbmUgSU1QT1JUX0ZST00gICAgIDEwOSAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0KLSNkZWZpbmUgSlVNUF9GT1JXQVJEICAgIDExMCAgICAgLyogTnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgKi8KLSNkZWZpbmUgSlVNUF9JRl9GQUxTRV9PUl9QT1AgMTExICAgICAgICAvKiBUYXJnZXQgYnl0ZSBvZmZzZXQgZnJvbSBiZWdpbm5pbmcgb2YgY29kZSAqLwotI2RlZmluZSBKVU1QX0lGX1RSVUVfT1JfUE9QIDExMiAvKiAiIiAqLwotI2RlZmluZSBKVU1QX0FCU09MVVRFICAgMTEzICAgICAvKiAiIiAqLwotI2RlZmluZSBQT1BfSlVNUF9JRl9GQUxTRSAxMTQgICAvKiAiIiAqLwotI2RlZmluZSBQT1BfSlVNUF9JRl9UUlVFIDExNSAgICAvKiAiIiAqLwotCi0jZGVmaW5lIExPQURfR0xPQkFMICAgICAxMTYgICAgIC8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwotCi0jZGVmaW5lIENPTlRJTlVFX0xPT1AgICAxMTkgICAgIC8qIFN0YXJ0IG9mIGxvb3AgKGFic29sdXRlKSAqLwotI2RlZmluZSBTRVRVUF9MT09QICAgICAgMTIwICAgICAvKiBUYXJnZXQgYWRkcmVzcyAocmVsYXRpdmUpICovCi0jZGVmaW5lIFNFVFVQX0VYQ0VQVCAgICAxMjEgICAgIC8qICIiICovCi0jZGVmaW5lIFNFVFVQX0ZJTkFMTFkgICAxMjIgICAgIC8qICIiICovCi0KLSNkZWZpbmUgTE9BRF9GQVNUICAgICAgIDEyNCAgICAgLyogTG9jYWwgdmFyaWFibGUgbnVtYmVyICovCi0jZGVmaW5lIFNUT1JFX0ZBU1QgICAgICAxMjUgICAgIC8qIExvY2FsIHZhcmlhYmxlIG51bWJlciAqLwotI2RlZmluZSBERUxFVEVfRkFTVCAgICAgMTI2ICAgICAvKiBMb2NhbCB2YXJpYWJsZSBudW1iZXIgKi8KLQotI2RlZmluZSBSQUlTRV9WQVJBUkdTICAgMTMwICAgICAvKiBOdW1iZXIgb2YgcmFpc2UgYXJndW1lbnRzICgxLCAyIG9yIDMpICovCi0vKiBDQUxMX0ZVTkNUSU9OX1hYWCBvcGNvZGVzIGRlZmluZWQgYmVsb3cgZGVwZW5kIG9uIHRoaXMgZGVmaW5pdGlvbiAqLwotI2RlZmluZSBDQUxMX0ZVTkNUSU9OICAgMTMxICAgICAvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLwotI2RlZmluZSBNQUtFX0ZVTkNUSU9OICAgMTMyICAgICAvKiAjZGVmYXVsdHMgKyAja3dkZWZhdWx0czw8OCArICNhbm5vdGF0aW9uczw8MTYgKi8KLSNkZWZpbmUgQlVJTERfU0xJQ0UgICAgIDEzMyAgICAgLyogTnVtYmVyIG9mIGl0ZW1zICovCi0KLSNkZWZpbmUgTUFLRV9DTE9TVVJFICAgIDEzNCAgICAgLyogc2FtZSBhcyBNQUtFX0ZVTkNUSU9OICovCi0jZGVmaW5lIExPQURfQ0xPU1VSRSAgICAxMzUgICAgIC8qIExvYWQgZnJlZSB2YXJpYWJsZSBmcm9tIGNsb3N1cmUgKi8KLSNkZWZpbmUgTE9BRF9ERVJFRiAgICAgIDEzNiAgICAgLyogTG9hZCBhbmQgZGVyZWZlcmVuY2UgZnJvbSBjbG9zdXJlIGNlbGwgKi8gCi0jZGVmaW5lIFNUT1JFX0RFUkVGICAgICAxMzcgICAgIC8qIFN0b3JlIGludG8gY2VsbCAqLyAKLSNkZWZpbmUgREVMRVRFX0RFUkVGICAgIDEzOCAgICAgLyogRGVsZXRlIGNsb3N1cmUgY2VsbCAqLyAKLQotLyogVGhlIG5leHQgMyBvcGNvZGVzIG11c3QgYmUgY29udGlndW91cyBhbmQgc2F0aXNmeQotICAgKENBTExfRlVOQ1RJT05fVkFSIC0gQ0FMTF9GVU5DVElPTikgJiAzID09IDEgICovCi0jZGVmaW5lIENBTExfRlVOQ1RJT05fVkFSICAgICAgICAgIDE0MCAgLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KLSNkZWZpbmUgQ0FMTF9GVU5DVElPTl9LVyAgICAgICAgICAgMTQxICAvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLwotI2RlZmluZSBDQUxMX0ZVTkNUSU9OX1ZBUl9LVyAgICAgICAxNDIgIC8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCi0KLSNkZWZpbmUgU0VUVVBfV0lUSCAxNDMKLQotLyogU3VwcG9ydCBmb3Igb3BhcmdzIG1vcmUgdGhhbiAxNiBiaXRzIGxvbmcgKi8KLSNkZWZpbmUgRVhURU5ERURfQVJHICAxNDQKLQotI2RlZmluZSBMSVNUX0FQUEVORCAgICAgMTQ1Ci0jZGVmaW5lIFNFVF9BREQgICAgICAgICAxNDYKLSNkZWZpbmUgTUFQX0FERCAgICAgICAgIDE0NwotCi0jZGVmaW5lIExPQURfQ0xBU1NERVJFRiAgIDE0OAorICAgIC8qIEluc3RydWN0aW9uIG9wY29kZXMgZm9yIGNvbXBpbGVkIGNvZGUgKi8KKyNkZWZpbmUgUE9QX1RPUCAgICAgICAgICAgICAgICAgICAxCisjZGVmaW5lIFJPVF9UV08gICAgICAgICAgICAgICAgICAgMgorI2RlZmluZSBST1RfVEhSRUUgICAgICAgICAgICAgICAgIDMKKyNkZWZpbmUgRFVQX1RPUCAgICAgICAgICAgICAgICAgICA0CisjZGVmaW5lIERVUF9UT1BfVFdPICAgICAgICAgICAgICAgNQorI2RlZmluZSBOT1AgICAgICAgICAgICAgICAgICAgICAgIDkKKyNkZWZpbmUgVU5BUllfUE9TSVRJVkUgICAgICAgICAgIDEwCisjZGVmaW5lIFVOQVJZX05FR0FUSVZFICAgICAgICAgICAxMQorI2RlZmluZSBVTkFSWV9OT1QgICAgICAgICAgICAgICAgMTIKKyNkZWZpbmUgVU5BUllfSU5WRVJUICAgICAgICAgICAgIDE1CisjZGVmaW5lIEJJTkFSWV9NQVRSSVhfTVVMVElQTFkgICAxNgorI2RlZmluZSBJTlBMQUNFX01BVFJJWF9NVUxUSVBMWSAgMTcKKyNkZWZpbmUgQklOQVJZX1BPV0VSICAgICAgICAgICAgIDE5CisjZGVmaW5lIEJJTkFSWV9NVUxUSVBMWSAgICAgICAgICAyMAorI2RlZmluZSBCSU5BUllfTU9EVUxPICAgICAgICAgICAgMjIKKyNkZWZpbmUgQklOQVJZX0FERCAgICAgICAgICAgICAgIDIzCisjZGVmaW5lIEJJTkFSWV9TVUJUUkFDVCAgICAgICAgICAyNAorI2RlZmluZSBCSU5BUllfU1VCU0NSICAgICAgICAgICAgMjUKKyNkZWZpbmUgQklOQVJZX0ZMT09SX0RJVklERSAgICAgIDI2CisjZGVmaW5lIEJJTkFSWV9UUlVFX0RJVklERSAgICAgICAyNworI2RlZmluZSBJTlBMQUNFX0ZMT09SX0RJVklERSAgICAgMjgKKyNkZWZpbmUgSU5QTEFDRV9UUlVFX0RJVklERSAgICAgIDI5CisjZGVmaW5lIEdFVF9BSVRFUiAgICAgICAgICAgICAgICA1MAorI2RlZmluZSBHRVRfQU5FWFQgICAgICAgICAgICAgICAgNTEKKyNkZWZpbmUgQkVGT1JFX0FTWU5DX1dJVEggICAgICAgIDUyCisjZGVmaW5lIElOUExBQ0VfQUREICAgICAgICAgICAgICA1NQorI2RlZmluZSBJTlBMQUNFX1NVQlRSQUNUICAgICAgICAgNTYKKyNkZWZpbmUgSU5QTEFDRV9NVUxUSVBMWSAgICAgICAgIDU3CisjZGVmaW5lIElOUExBQ0VfTU9EVUxPICAgICAgICAgICA1OQorI2RlZmluZSBTVE9SRV9TVUJTQ1IgICAgICAgICAgICAgNjAKKyNkZWZpbmUgREVMRVRFX1NVQlNDUiAgICAgICAgICAgIDYxCisjZGVmaW5lIEJJTkFSWV9MU0hJRlQgICAgICAgICAgICA2MgorI2RlZmluZSBCSU5BUllfUlNISUZUICAgICAgICAgICAgNjMKKyNkZWZpbmUgQklOQVJZX0FORCAgICAgICAgICAgICAgIDY0CisjZGVmaW5lIEJJTkFSWV9YT1IgICAgICAgICAgICAgICA2NQorI2RlZmluZSBCSU5BUllfT1IgICAgICAgICAgICAgICAgNjYKKyNkZWZpbmUgSU5QTEFDRV9QT1dFUiAgICAgICAgICAgIDY3CisjZGVmaW5lIEdFVF9JVEVSICAgICAgICAgICAgICAgICA2OAorI2RlZmluZSBHRVRfWUlFTERfRlJPTV9JVEVSICAgICAgNjkKKyNkZWZpbmUgUFJJTlRfRVhQUiAgICAgICAgICAgICAgIDcwCisjZGVmaW5lIExPQURfQlVJTERfQ0xBU1MgICAgICAgICA3MQorI2RlZmluZSBZSUVMRF9GUk9NICAgICAgICAgICAgICAgNzIKKyNkZWZpbmUgR0VUX0FXQUlUQUJMRSAgICAgICAgICAgIDczCisjZGVmaW5lIElOUExBQ0VfTFNISUZUICAgICAgICAgICA3NQorI2RlZmluZSBJTlBMQUNFX1JTSElGVCAgICAgICAgICAgNzYKKyNkZWZpbmUgSU5QTEFDRV9BTkQgICAgICAgICAgICAgIDc3CisjZGVmaW5lIElOUExBQ0VfWE9SICAgICAgICAgICAgICA3OAorI2RlZmluZSBJTlBMQUNFX09SICAgICAgICAgICAgICAgNzkKKyNkZWZpbmUgQlJFQUtfTE9PUCAgICAgICAgICAgICAgIDgwCisjZGVmaW5lIFdJVEhfQ0xFQU5VUF9TVEFSVCAgICAgICA4MQorI2RlZmluZSBXSVRIX0NMRUFOVVBfRklOSVNIICAgICAgODIKKyNkZWZpbmUgUkVUVVJOX1ZBTFVFICAgICAgICAgICAgIDgzCisjZGVmaW5lIElNUE9SVF9TVEFSICAgICAgICAgICAgICA4NAorI2RlZmluZSBZSUVMRF9WQUxVRSAgICAgICAgICAgICAgODYKKyNkZWZpbmUgUE9QX0JMT0NLICAgICAgICAgICAgICAgIDg3CisjZGVmaW5lIEVORF9GSU5BTExZICAgICAgICAgICAgICA4OAorI2RlZmluZSBQT1BfRVhDRVBUICAgICAgICAgICAgICAgODkKKyNkZWZpbmUgSEFWRV9BUkdVTUVOVCAgICAgICAgICAgIDkwCisjZGVmaW5lIFNUT1JFX05BTUUgICAgICAgICAgICAgICA5MAorI2RlZmluZSBERUxFVEVfTkFNRSAgICAgICAgICAgICAgOTEKKyNkZWZpbmUgVU5QQUNLX1NFUVVFTkNFICAgICAgICAgIDkyCisjZGVmaW5lIEZPUl9JVEVSICAgICAgICAgICAgICAgICA5MworI2RlZmluZSBVTlBBQ0tfRVggICAgICAgICAgICAgICAgOTQKKyNkZWZpbmUgU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDk1CisjZGVmaW5lIERFTEVURV9BVFRSICAgICAgICAgICAgICA5NgorI2RlZmluZSBTVE9SRV9HTE9CQUwgICAgICAgICAgICAgOTcKKyNkZWZpbmUgREVMRVRFX0dMT0JBTCAgICAgICAgICAgIDk4CisjZGVmaW5lIExPQURfQ09OU1QgICAgICAgICAgICAgIDEwMAorI2RlZmluZSBMT0FEX05BTUUgICAgICAgICAgICAgICAxMDEKKyNkZWZpbmUgQlVJTERfVFVQTEUgICAgICAgICAgICAgMTAyCisjZGVmaW5lIEJVSUxEX0xJU1QgICAgICAgICAgICAgIDEwMworI2RlZmluZSBCVUlMRF9TRVQgICAgICAgICAgICAgICAxMDQKKyNkZWZpbmUgQlVJTERfTUFQICAgICAgICAgICAgICAgMTA1CisjZGVmaW5lIExPQURfQVRUUiAgICAgICAgICAgICAgIDEwNgorI2RlZmluZSBDT01QQVJFX09QICAgICAgICAgICAgICAxMDcKKyNkZWZpbmUgSU1QT1JUX05BTUUgICAgICAgICAgICAgMTA4CisjZGVmaW5lIElNUE9SVF9GUk9NICAgICAgICAgICAgIDEwOQorI2RlZmluZSBKVU1QX0ZPUldBUkQgICAgICAgICAgICAxMTAKKyNkZWZpbmUgSlVNUF9JRl9GQUxTRV9PUl9QT1AgICAgMTExCisjZGVmaW5lIEpVTVBfSUZfVFJVRV9PUl9QT1AgICAgIDExMgorI2RlZmluZSBKVU1QX0FCU09MVVRFICAgICAgICAgICAxMTMKKyNkZWZpbmUgUE9QX0pVTVBfSUZfRkFMU0UgICAgICAgMTE0CisjZGVmaW5lIFBPUF9KVU1QX0lGX1RSVUUgICAgICAgIDExNQorI2RlZmluZSBMT0FEX0dMT0JBTCAgICAgICAgICAgICAxMTYKKyNkZWZpbmUgQ09OVElOVUVfTE9PUCAgICAgICAgICAgMTE5CisjZGVmaW5lIFNFVFVQX0xPT1AgICAgICAgICAgICAgIDEyMAorI2RlZmluZSBTRVRVUF9FWENFUFQgICAgICAgICAgICAxMjEKKyNkZWZpbmUgU0VUVVBfRklOQUxMWSAgICAgICAgICAgMTIyCisjZGVmaW5lIExPQURfRkFTVCAgICAgICAgICAgICAgIDEyNAorI2RlZmluZSBTVE9SRV9GQVNUICAgICAgICAgICAgICAxMjUKKyNkZWZpbmUgREVMRVRFX0ZBU1QgICAgICAgICAgICAgMTI2CisjZGVmaW5lIFJBSVNFX1ZBUkFSR1MgICAgICAgICAgIDEzMAorI2RlZmluZSBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAxMzEKKyNkZWZpbmUgTUFLRV9GVU5DVElPTiAgICAgICAgICAgMTMyCisjZGVmaW5lIEJVSUxEX1NMSUNFICAgICAgICAgICAgIDEzMworI2RlZmluZSBNQUtFX0NMT1NVUkUgICAgICAgICAgICAxMzQKKyNkZWZpbmUgTE9BRF9DTE9TVVJFICAgICAgICAgICAgMTM1CisjZGVmaW5lIExPQURfREVSRUYgICAgICAgICAgICAgIDEzNgorI2RlZmluZSBTVE9SRV9ERVJFRiAgICAgICAgICAgICAxMzcKKyNkZWZpbmUgREVMRVRFX0RFUkVGICAgICAgICAgICAgMTM4CisjZGVmaW5lIENBTExfRlVOQ1RJT05fVkFSICAgICAgIDE0MAorI2RlZmluZSBDQUxMX0ZVTkNUSU9OX0tXICAgICAgICAxNDEKKyNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVJfS1cgICAgMTQyCisjZGVmaW5lIFNFVFVQX1dJVEggICAgICAgICAgICAgIDE0MworI2RlZmluZSBFWFRFTkRFRF9BUkcgICAgICAgICAgICAxNDQKKyNkZWZpbmUgTElTVF9BUFBFTkQgICAgICAgICAgICAgMTQ1CisjZGVmaW5lIFNFVF9BREQgICAgICAgICAgICAgICAgIDE0NgorI2RlZmluZSBNQVBfQUREICAgICAgICAgICAgICAgICAxNDcKKyNkZWZpbmUgTE9BRF9DTEFTU0RFUkVGICAgICAgICAgMTQ4CisjZGVmaW5lIEJVSUxEX0xJU1RfVU5QQUNLICAgICAgIDE0OQorI2RlZmluZSBCVUlMRF9NQVBfVU5QQUNLICAgICAgICAxNTAKKyNkZWZpbmUgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwgMTUxCisjZGVmaW5lIEJVSUxEX1RVUExFX1VOUEFDSyAgICAgIDE1MgorI2RlZmluZSBCVUlMRF9TRVRfVU5QQUNLICAgICAgICAxNTMKKyNkZWZpbmUgU0VUVVBfQVNZTkNfV0lUSCAgICAgICAgMTU0CiAKIC8qIEVYQ0VQVF9IQU5ETEVSIGlzIGEgc3BlY2lhbCwgaW1wbGljaXQgYmxvY2sgdHlwZSB3aGljaCBpcyBjcmVhdGVkIHdoZW4KICAgIGVudGVyaW5nIGFuIGV4Y2VwdCBoYW5kbGVyLiBJdCBpcyBub3QgYW4gb3Bjb2RlIGJ1dCB3ZSBkZWZpbmUgaXQgaGVyZQpAQCAtMTQ4LDggKzEzMCw5IEBACiAjZGVmaW5lIEVYQ0VQVF9IQU5ETEVSIDI1NwogCiAKLWVudW0gY21wX29wIHtQeUNtcF9MVD1QeV9MVCwgUHlDbXBfTEU9UHlfTEUsIFB5Q21wX0VRPVB5X0VRLCBQeUNtcF9ORT1QeV9ORSwgUHlDbXBfR1Q9UHlfR1QsIFB5Q21wX0dFPVB5X0dFLAotICAgICAgICAgICAgIFB5Q21wX0lOLCBQeUNtcF9OT1RfSU4sIFB5Q21wX0lTLCBQeUNtcF9JU19OT1QsIFB5Q21wX0VYQ19NQVRDSCwgUHlDbXBfQkFEfTsKK2VudW0gY21wX29wIHtQeUNtcF9MVD1QeV9MVCwgUHlDbXBfTEU9UHlfTEUsIFB5Q21wX0VRPVB5X0VRLCBQeUNtcF9ORT1QeV9ORSwKKyAgICAgICAgICAgICAgICBQeUNtcF9HVD1QeV9HVCwgUHlDbXBfR0U9UHlfR0UsIFB5Q21wX0lOLCBQeUNtcF9OT1RfSU4sCisgICAgICAgICAgICAgICAgUHlDbXBfSVMsIFB5Q21wX0lTX05PVCwgUHlDbXBfRVhDX01BVENILCBQeUNtcF9CQUR9OwogCiAjZGVmaW5lIEhBU19BUkcob3ApICgob3ApID49IEhBVkVfQVJHVU1FTlQpCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb3NkZWZzLmggYi9JbmNsdWRlL29zZGVmcy5oCmluZGV4IDBjMmUzNGIuLmJkODRjMWMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb3NkZWZzLmgKKysrIGIvSW5jbHVkZS9vc2RlZnMuaApAQCAtNywxNSArNywxMiBAQAogCiAvKiBPcGVyYXRpbmcgc3lzdGVtIGRlcGVuZGVuY2llcyAqLwogCi0vKiBNb2QgYnkgY2hyaXNoOiBRTlggaGFzIFdBVENPTSwgYnV0IGlzbid0IERPUyAqLwotI2lmICFkZWZpbmVkKF9fUU5YX18pCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgZGVmaW5lZChfX1dBVENPTUNfXykgfHwgZGVmaW5lZChfX0RKR1BQX18pCisjaWZkZWYgTVNfV0lORE9XUwogI2RlZmluZSBTRVAgTCdcXCcKICNkZWZpbmUgQUxUU0VQIEwnLycKICNkZWZpbmUgTUFYUEFUSExFTiAyNTYKICNkZWZpbmUgREVMSU0gTCc7JwogI2VuZGlmCi0jZW5kaWYKIAogLyogRmlsZW5hbWUgc2VwYXJhdG9yICovCiAjaWZuZGVmIFNFUApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9wYXRjaGxldmVsLmggYi9JbmNsdWRlL3BhdGNobGV2ZWwuaAppbmRleCBlMWExNDdiLi4xMjQ5MDg2IDEwMDY0NAotLS0gYS9JbmNsdWRlL3BhdGNobGV2ZWwuaAorKysgYi9JbmNsdWRlL3BhdGNobGV2ZWwuaApAQCAtMTcsMTMgKzE3LDEzIEBACiAvKiBWZXJzaW9uIHBhcnNlZCBvdXQgaW50byBudW1lcmljIHZhbHVlcyAqLwogLyotLXN0YXJ0IGNvbnN0YW50cy0tKi8KICNkZWZpbmUgUFlfTUFKT1JfVkVSU0lPTgkzCi0jZGVmaW5lIFBZX01JTk9SX1ZFUlNJT04JNAotI2RlZmluZSBQWV9NSUNST19WRVJTSU9OCTQKKyNkZWZpbmUgUFlfTUlOT1JfVkVSU0lPTgk1CisjZGVmaW5lIFBZX01JQ1JPX1ZFUlNJT04JMQogI2RlZmluZSBQWV9SRUxFQVNFX0xFVkVMCVBZX1JFTEVBU0VfTEVWRUxfRklOQUwKICNkZWZpbmUgUFlfUkVMRUFTRV9TRVJJQUwJMAogCiAvKiBWZXJzaW9uIGFzIGEgc3RyaW5nICovCi0jZGVmaW5lIFBZX1ZFUlNJT04gICAgICAJIjMuNC40KyIKKyNkZWZpbmUgUFlfVkVSU0lPTiAgICAgIAkiMy41LjErIgogLyotLWVuZCBjb25zdGFudHMtLSovCiAKIC8qIFZlcnNpb24gYXMgYSBzaW5nbGUgNC1ieXRlIGhleCBudW1iZXIsIGUuZy4gMHgwMTA1MDJCMiA9PSAxLjUuMmIyLgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWF0b21pYy5oIGIvSW5jbHVkZS9weWF0b21pYy5oCmluZGV4IGQ0ZTE5ZTAuLjg5MmEyMTcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlhdG9taWMuaAorKysgYi9JbmNsdWRlL3B5YXRvbWljLmgKQEAgLTEsMTQgKzEsMTMgQEAKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKICNpZm5kZWYgUHlfQVRPTUlDX0gKICNkZWZpbmUgUHlfQVRPTUlDX0gKLS8qIFhYWDogV2hlbiBjb21waWxlcnMgc3RhcnQgb2ZmZXJpbmcgYSBzdGRhdG9taWMuaCB3aXRoIGxvY2stZnJlZQotICAgYXRvbWljX2ludCBhbmQgYXRvbWljX2FkZHJlc3MgdHlwZXMsIGluY2x1ZGUgdGhhdCBoZXJlIGFuZCByZXdyaXRlCi0gICB0aGUgYXRvbWljIG9wZXJhdGlvbnMgaW4gdGVybXMgb2YgaXQuICovCisjaWZkZWYgUHlfQlVJTERfQ09SRQogCiAjaW5jbHVkZSAiZHluYW1pY19hbm5vdGF0aW9ucy5oIgogCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgeworI2luY2x1ZGUgInB5Y29uZmlnLmgiCisKKyNpZiBkZWZpbmVkKEhBVkVfU1REX0FUT01JQykKKyNpbmNsdWRlIDxzdGRhdG9taWMuaD4KICNlbmRpZgogCiAvKiBUaGlzIGlzIG1vZGVsZWQgYWZ0ZXIgdGhlIGF0b21pY3MgaW50ZXJmYWNlIGZyb20gQzF4LCBhY2NvcmRpbmcgdG8KQEAgLTIwLDYgKzE5LDc2IEBACiAgKiBCZXdhcmUsIHRoZSBpbXBsZW1lbnRhdGlvbnMgaGVyZSBhcmUgZGVlcCBtYWdpYy4KICAqLwogCisjaWYgZGVmaW5lZChIQVZFX1NURF9BVE9NSUMpCisKK3R5cGVkZWYgZW51bSBfUHlfbWVtb3J5X29yZGVyIHsKKyAgICBfUHlfbWVtb3J5X29yZGVyX3JlbGF4ZWQgPSBtZW1vcnlfb3JkZXJfcmVsYXhlZCwKKyAgICBfUHlfbWVtb3J5X29yZGVyX2FjcXVpcmUgPSBtZW1vcnlfb3JkZXJfYWNxdWlyZSwKKyAgICBfUHlfbWVtb3J5X29yZGVyX3JlbGVhc2UgPSBtZW1vcnlfb3JkZXJfcmVsZWFzZSwKKyAgICBfUHlfbWVtb3J5X29yZGVyX2FjcV9yZWwgPSBtZW1vcnlfb3JkZXJfYWNxX3JlbCwKKyAgICBfUHlfbWVtb3J5X29yZGVyX3NlcV9jc3QgPSBtZW1vcnlfb3JkZXJfc2VxX2NzdAorfSBfUHlfbWVtb3J5X29yZGVyOworCit0eXBlZGVmIHN0cnVjdCBfUHlfYXRvbWljX2FkZHJlc3MgeworICAgIF9BdG9taWMgdm9pZCAqX3ZhbHVlOworfSBfUHlfYXRvbWljX2FkZHJlc3M7CisKK3R5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfaW50IHsKKyAgICBhdG9taWNfaW50IF92YWx1ZTsKK30gX1B5X2F0b21pY19pbnQ7CisKKyNkZWZpbmUgX1B5X2F0b21pY19zaWduYWxfZmVuY2UoLyptZW1vcnlfb3JkZXIqLyBPUkRFUikgXAorICAgIGF0b21pY19zaWduYWxfZmVuY2UoT1JERVIpCisKKyNkZWZpbmUgX1B5X2F0b21pY190aHJlYWRfZmVuY2UoLyptZW1vcnlfb3JkZXIqLyBPUkRFUikgXAorICAgIGF0b21pY190aHJlYWRfZmVuY2UoT1JERVIpCisKKyNkZWZpbmUgX1B5X2F0b21pY19zdG9yZV9leHBsaWNpdChBVE9NSUNfVkFMLCBORVdfVkFMLCBPUkRFUikgXAorICAgIGF0b21pY19zdG9yZV9leHBsaWNpdCgmKEFUT01JQ19WQUwpLT5fdmFsdWUsIE5FV19WQUwsIE9SREVSKQorCisjZGVmaW5lIF9QeV9hdG9taWNfbG9hZF9leHBsaWNpdChBVE9NSUNfVkFMLCBPUkRFUikgXAorICAgIGF0b21pY19sb2FkX2V4cGxpY2l0KCYoQVRPTUlDX1ZBTCktPl92YWx1ZSwgT1JERVIpCisKKy8qIFVzZSBidWlsdGluIGF0b21pYyBvcGVyYXRpb25zIGluIEdDQyA+PSA0LjcgKi8KKyNlbGlmIGRlZmluZWQoSEFWRV9CVUlMVElOX0FUT01JQykKKwordHlwZWRlZiBlbnVtIF9QeV9tZW1vcnlfb3JkZXIgeworICAgIF9QeV9tZW1vcnlfb3JkZXJfcmVsYXhlZCA9IF9fQVRPTUlDX1JFTEFYRUQsCisgICAgX1B5X21lbW9yeV9vcmRlcl9hY3F1aXJlID0gX19BVE9NSUNfQUNRVUlSRSwKKyAgICBfUHlfbWVtb3J5X29yZGVyX3JlbGVhc2UgPSBfX0FUT01JQ19SRUxFQVNFLAorICAgIF9QeV9tZW1vcnlfb3JkZXJfYWNxX3JlbCA9IF9fQVRPTUlDX0FDUV9SRUwsCisgICAgX1B5X21lbW9yeV9vcmRlcl9zZXFfY3N0ID0gX19BVE9NSUNfU0VRX0NTVAorfSBfUHlfbWVtb3J5X29yZGVyOworCit0eXBlZGVmIHN0cnVjdCBfUHlfYXRvbWljX2FkZHJlc3MgeworICAgIHZvaWQgKl92YWx1ZTsKK30gX1B5X2F0b21pY19hZGRyZXNzOworCit0eXBlZGVmIHN0cnVjdCBfUHlfYXRvbWljX2ludCB7CisgICAgaW50IF92YWx1ZTsKK30gX1B5X2F0b21pY19pbnQ7CisKKyNkZWZpbmUgX1B5X2F0b21pY19zaWduYWxfZmVuY2UoLyptZW1vcnlfb3JkZXIqLyBPUkRFUikgXAorICAgIF9fYXRvbWljX3NpZ25hbF9mZW5jZShPUkRFUikKKworI2RlZmluZSBfUHlfYXRvbWljX3RocmVhZF9mZW5jZSgvKm1lbW9yeV9vcmRlciovIE9SREVSKSBcCisgICAgX19hdG9taWNfdGhyZWFkX2ZlbmNlKE9SREVSKQorCisjZGVmaW5lIF9QeV9hdG9taWNfc3RvcmVfZXhwbGljaXQoQVRPTUlDX1ZBTCwgTkVXX1ZBTCwgT1JERVIpIFwKKyAgICAoYXNzZXJ0KChPUkRFUikgPT0gX19BVE9NSUNfUkVMQVhFRCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfHwgKE9SREVSKSA9PSBfX0FUT01JQ19TRVFfQ1NUICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB8fCAoT1JERVIpID09IF9fQVRPTUlDX1JFTEVBU0UpLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgX19hdG9taWNfc3RvcmVfbigmKEFUT01JQ19WQUwpLT5fdmFsdWUsIE5FV19WQUwsIE9SREVSKSkKKworI2RlZmluZSBfUHlfYXRvbWljX2xvYWRfZXhwbGljaXQoQVRPTUlDX1ZBTCwgT1JERVIpICAgICAgICAgICBcCisgICAgKGFzc2VydCgoT1JERVIpID09IF9fQVRPTUlDX1JFTEFYRUQgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHx8IChPUkRFUikgPT0gX19BVE9NSUNfU0VRX0NTVCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfHwgKE9SREVSKSA9PSBfX0FUT01JQ19BQ1FVSVJFICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB8fCAoT1JERVIpID09IF9fQVRPTUlDX0NPTlNVTUUpLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgX19hdG9taWNfbG9hZF9uKCYoQVRPTUlDX1ZBTCktPl92YWx1ZSwgT1JERVIpKQorCisjZWxzZQorCiB0eXBlZGVmIGVudW0gX1B5X21lbW9yeV9vcmRlciB7CiAgICAgX1B5X21lbW9yeV9vcmRlcl9yZWxheGVkLAogICAgIF9QeV9tZW1vcnlfb3JkZXJfYWNxdWlyZSwKQEAgLTE2Miw2ICsyMzEsNyBAQAogICAgICgoQVRPTUlDX1ZBTCktPl92YWx1ZSkKIAogI2VuZGlmICAvKiAhZ2NjIHg4NiAqLworI2VuZGlmCiAKIC8qIFN0YW5kYXJkaXplZCBzaG9ydGN1dHMuICovCiAjZGVmaW5lIF9QeV9hdG9taWNfc3RvcmUoQVRPTUlDX1ZBTCwgTkVXX1ZBTCkgXApAQCAtMTc2LDkgKzI0Niw1IEBACiAjZGVmaW5lIF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKEFUT01JQ19WQUwpIFwKICAgICBfUHlfYXRvbWljX2xvYWRfZXhwbGljaXQoQVRPTUlDX1ZBTCwgX1B5X21lbW9yeV9vcmRlcl9yZWxheGVkKQogCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCisjZW5kaWYgIC8qIFB5X0JVSUxEX0NPUkUgKi8KICNlbmRpZiAgLyogUHlfQVRPTUlDX0ggKi8KLSNlbmRpZiAgLyogUHlfTElNSVRFRF9BUEkgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlkZWJ1Zy5oIGIvSW5jbHVkZS9weWRlYnVnLmgKaW5kZXggOGZlOTgxOC4uMTliZWMyYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWRlYnVnLmgKKysrIGIvSW5jbHVkZS9weWRlYnVnLmgKQEAgLTUsNiArNSw4IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisvKiBUaGVzZSBnbG9iYWwgdmFyaWFibGUgYXJlIGRlZmluZWQgaW4gcHlsaWZlY3ljbGUuYyAqLworLyogWFhYIChuY29naGxhbik6IG1vdmUgdGhlc2UgZGVjbGFyYXRpb25zIHRvIHB5bGlmZWN5Y2xlLmg/ICovCiBQeUFQSV9EQVRBKGludCkgUHlfRGVidWdGbGFnOwogUHlBUElfREFUQShpbnQpIFB5X1ZlcmJvc2VGbGFnOwogUHlBUElfREFUQShpbnQpIFB5X1F1aWV0RmxhZzsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHllcnJvcnMuaCBiL0luY2x1ZGUvcHllcnJvcnMuaAppbmRleCAwMmY2NWQ2Li4zNWFlZGI3IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5ZXJyb3JzLmgKKysrIGIvSW5jbHVkZS9weWVycm9ycy5oCkBAIC05OSw2ICs5OSw3IEBACiAjZGVmaW5lIF9QeV9OT19SRVRVUk4KICNlbmRpZgogCisvKiBEZWZpbmVkIGluIFB5dGhvbi9weWxpZmVjeWNsZS5jICovCiBQeUFQSV9GVU5DKHZvaWQpIFB5X0ZhdGFsRXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSkgX1B5X05PX1JFVFVSTjsKIAogI2lmIGRlZmluZWQoUHlfREVCVUcpIHx8IGRlZmluZWQoUHlfTElNSVRFRF9BUEkpCkBAIC0xNDYsNiArMTQ3LDcgQEAKIAogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19CYXNlRXhjZXB0aW9uOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19FeGNlcHRpb247CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1N0b3BBc3luY0l0ZXJhdGlvbjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfU3RvcEl0ZXJhdGlvbjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfR2VuZXJhdG9yRXhpdDsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQXJpdGhtZXRpY0Vycm9yOwpAQCAtMTY1LDYgKzE2Nyw3IEBACiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX05hbWVFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfT3ZlcmZsb3dFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfUnVudGltZUVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19SZWN1cnNpb25FcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfU3ludGF4RXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0luZGVudGF0aW9uRXJyb3I7CkBAIC0yNDQsNiArMjQ3LDEyIEBACiAgICAgY29uc3QgY2hhciAqZm9ybWF0LCAgIC8qIEFTQ0lJLWVuY29kZWQgc3RyaW5nICAqLwogICAgIC4uLgogICAgICk7CisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzA1MDAwMAorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9Gb3JtYXRWKAorICAgIFB5T2JqZWN0ICpleGNlcHRpb24sCisgICAgY29uc3QgY2hhciAqZm9ybWF0LAorICAgIHZhX2xpc3QgdmFyZ3MpOworI2VuZGlmCiAKICNpZmRlZiBNU19XSU5ET1dTCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lKApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWxpZmVjeWNsZS5oIGIvSW5jbHVkZS9weWxpZmVjeWNsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZGViZTIKLS0tIC9kZXYvbnVsbAorKysgYi9JbmNsdWRlL3B5bGlmZWN5Y2xlLmgKQEAgLTAsMCArMSwxMjQgQEAKKworLyogSW50ZXJmYWNlcyB0byBjb25maWd1cmUsIHF1ZXJ5LCBjcmVhdGUgJiBkZXN0cm95IHRoZSBQeXRob24gcnVudGltZSAqLworCisjaWZuZGVmIFB5X1BZTElGRUNZQ0xFX0gKKyNkZWZpbmUgUHlfUFlMSUZFQ1lDTEVfSAorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitQeUFQSV9GVU5DKHZvaWQpIFB5X1NldFByb2dyYW1OYW1lKHdjaGFyX3QgKik7CitQeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfR2V0UHJvZ3JhbU5hbWUodm9pZCk7CisKK1B5QVBJX0ZVTkModm9pZCkgUHlfU2V0UHl0aG9uSG9tZSh3Y2hhcl90ICopOworUHlBUElfRlVOQyh3Y2hhcl90ICopIFB5X0dldFB5dGhvbkhvbWUodm9pZCk7CisKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIE9ubHkgdXNlZCBieSBhcHBsaWNhdGlvbnMgdGhhdCBlbWJlZCB0aGUgaW50ZXJwcmV0ZXIgYW5kIG5lZWQgdG8KKyAqIG92ZXJyaWRlIHRoZSBzdGFuZGFyZCBlbmNvZGluZyBkZXRlcm1pbmF0aW9uIG1lY2hhbmlzbQorICovCitQeUFQSV9GVU5DKGludCkgUHlfU2V0U3RhbmRhcmRTdHJlYW1FbmNvZGluZyhjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisjZW5kaWYKKworUHlBUElfRlVOQyh2b2lkKSBQeV9Jbml0aWFsaXplKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeV9Jbml0aWFsaXplRXgoaW50KTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkModm9pZCkgX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKGludCwgaW50KTsKKyNlbmRpZgorUHlBUElfRlVOQyh2b2lkKSBQeV9GaW5hbGl6ZSh2b2lkKTsKK1B5QVBJX0ZVTkMoaW50KSBQeV9Jc0luaXRpYWxpemVkKHZvaWQpOworUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5X05ld0ludGVycHJldGVyKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeV9FbmRJbnRlcnByZXRlcihQeVRocmVhZFN0YXRlICopOworCisKKy8qIFB5X1B5QXRFeGl0IGlzIGZvciB0aGUgYXRleGl0IG1vZHVsZSwgUHlfQXRFeGl0IGlzIGZvciBsb3ctbGV2ZWwKKyAqIGV4aXQgZnVuY3Rpb25zLgorICovCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKHZvaWQpIF9QeV9QeUF0RXhpdCh2b2lkICgqZnVuYykodm9pZCkpOworI2VuZGlmCitQeUFQSV9GVU5DKGludCkgUHlfQXRFeGl0KHZvaWQgKCpmdW5jKSh2b2lkKSk7CisKK1B5QVBJX0ZVTkModm9pZCkgUHlfRXhpdChpbnQpOworCisvKiBSZXN0b3JlIHNpZ25hbHMgdGhhdCB0aGUgaW50ZXJwcmV0ZXIgaGFzIGNhbGxlZCBTSUdfSUdOIG9uIHRvIFNJR19ERkwuICovCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKHZvaWQpIF9QeV9SZXN0b3JlU2lnbmFscyh2b2lkKTsKKworUHlBUElfRlVOQyhpbnQpIFB5X0ZkSXNJbnRlcmFjdGl2ZShGSUxFICosIGNvbnN0IGNoYXIgKik7CisjZW5kaWYKKworLyogQm9vdHN0cmFwIF9fbWFpbl9fIChkZWZpbmVkIGluIE1vZHVsZXMvbWFpbi5jKSAqLworUHlBUElfRlVOQyhpbnQpIFB5X01haW4oaW50IGFyZ2MsIHdjaGFyX3QgKiphcmd2KTsKKworLyogSW4gZ2V0cGF0aC5jICovCitQeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoKHZvaWQpOworUHlBUElfRlVOQyh3Y2hhcl90ICopIFB5X0dldFByZWZpeCh2b2lkKTsKK1B5QVBJX0ZVTkMod2NoYXJfdCAqKSBQeV9HZXRFeGVjUHJlZml4KHZvaWQpOworUHlBUElfRlVOQyh3Y2hhcl90ICopIFB5X0dldFBhdGgodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpICAgICAgUHlfU2V0UGF0aChjb25zdCB3Y2hhcl90ICopOworI2lmZGVmIE1TX1dJTkRPV1MKK2ludCBfUHlfQ2hlY2tQeXRob24zKCk7CisjZW5kaWYKKworLyogSW4gdGhlaXIgb3duIGZpbGVzICovCitQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0VmVyc2lvbih2b2lkKTsKK1B5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRQbGF0Zm9ybSh2b2lkKTsKK1B5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb3B5cmlnaHQodm9pZCk7CitQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0Q29tcGlsZXIodm9pZCk7CitQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0QnVpbGRJbmZvKHZvaWQpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhjb25zdCBjaGFyICopIF9QeV9oZ2lkZW50aWZpZXIodm9pZCk7CitQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgX1B5X2hndmVyc2lvbih2b2lkKTsKKyNlbmRpZgorCisvKiBJbnRlcm5hbCAtLSB2YXJpb3VzIG9uZS10aW1lIGluaXRpYWxpemF0aW9ucyAqLworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlCdWlsdGluX0luaXQodm9pZCk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVN5c19Jbml0KHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlJbXBvcnRfSW5pdCh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5RXhjX0luaXQoUHlPYmplY3QgKiBibHRpbm1vZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUltcG9ydEhvb2tzX0luaXQodm9pZCk7CitQeUFQSV9GVU5DKGludCkgX1B5RnJhbWVfSW5pdCh2b2lkKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlGbG9hdF9Jbml0KHZvaWQpOworUHlBUElfRlVOQyhpbnQpIFB5Qnl0ZUFycmF5X0luaXQodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeVJhbmRvbV9Jbml0KHZvaWQpOworI2VuZGlmCisKKy8qIFZhcmlvdXMgaW50ZXJuYWwgZmluYWxpemVycyAqLworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyh2b2lkKSBfUHlFeGNfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0X0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5TWV0aG9kX0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5RnJhbWVfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlDRnVuY3Rpb25fRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlEaWN0X0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5VHVwbGVfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlMaXN0X0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5U2V0X0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5Qnl0ZXNfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlCeXRlQXJyYXlfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlGbG9hdF9GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeU9TX0ZpbmlJbnRlcnJ1cHRzKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlHQ19EdW1wU2h1dGRvd25TdGF0cyh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5R0NfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlTbGljZV9GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlUeXBlX0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeVJhbmRvbV9GaW5pKHZvaWQpOworCitQeUFQSV9EQVRBKFB5VGhyZWFkU3RhdGUgKikgX1B5X0ZpbmFsaXppbmc7CisjZW5kaWYKKworLyogU2lnbmFscyAqLwordHlwZWRlZiB2b2lkICgqUHlPU19zaWdoYW5kbGVyX3QpKGludCk7CitQeUFQSV9GVU5DKFB5T1Nfc2lnaGFuZGxlcl90KSBQeU9TX2dldHNpZyhpbnQpOworUHlBUElfRlVOQyhQeU9TX3NpZ2hhbmRsZXJfdCkgUHlPU19zZXRzaWcoaW50LCBQeU9TX3NpZ2hhbmRsZXJfdCk7CisKKy8qIFJhbmRvbSAqLworUHlBUElfRlVOQyhpbnQpIF9QeU9TX1VSYW5kb20gKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvKiAhUHlfUFlMSUZFQ1lDTEVfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weW1hY3JvLmggYi9JbmNsdWRlL3B5bWFjcm8uaAppbmRleCA3OTk3YzU1Li4zZjZmNWRjIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5bWFjcm8uaAorKysgYi9JbmNsdWRlL3B5bWFjcm8uaApAQCAtMSwxMyArMSwyNiBAQAogI2lmbmRlZiBQeV9QWU1BQ1JPX0gKICNkZWZpbmUgUHlfUFlNQUNST19ICiAKKy8qIE1pbmltdW0gdmFsdWUgYmV0d2VlbiB4IGFuZCB5ICovCiAjZGVmaW5lIFB5X01JTih4LCB5KSAoKCh4KSA+ICh5KSkgPyAoeSkgOiAoeCkpCisKKy8qIE1heGltdW0gdmFsdWUgYmV0d2VlbiB4IGFuZCB5ICovCiAjZGVmaW5lIFB5X01BWCh4LCB5KSAoKCh4KSA+ICh5KSkgPyAoeCkgOiAoeSkpCiAKKy8qIEFic29sdXRlIHZhbHVlIG9mIHRoZSBudW1iZXIgeCAqLworI2RlZmluZSBQeV9BQlMoeCkgKCh4KSA8IDAgPyAtKHgpIDogKHgpKQorCisjZGVmaW5lIF9QeV9YU1RSSU5HSUZZKHgpICN4CisKKy8qIENvbnZlcnQgdGhlIGFyZ3VtZW50IHRvIGEgc3RyaW5nLiBGb3IgZXhhbXBsZSwgUHlfU1RSSU5HSUZZKDEyMykgaXMgcmVwbGFjZWQKKyAgIHdpdGggIjEyMyIgYnkgdGhlIHByZXByb2Nlc3Nvci4gRGVmaW5lcyBhcmUgYWxzbyByZXBsYWNlZCBieSB0aGVpciB2YWx1ZS4KKyAgIEZvciBleGFtcGxlIFB5X1NUUklOR0lGWShfX0xJTkVfXykgaXMgcmVwbGFjZWQgYnkgdGhlIGxpbmUgbnVtYmVyLCBub3QKKyAgIGJ5ICJfX0xJTkVfXyIuICovCisjZGVmaW5lIFB5X1NUUklOR0lGWSh4KSBfUHlfWFNUUklOR0lGWSh4KQorCiAvKiBBcmd1bWVudCBtdXN0IGJlIGEgY2hhciBvciBhbiBpbnQgaW4gWy0xMjgsIDEyN10gb3IgWzAsIDI1NV0uICovCiAjZGVmaW5lIFB5X0NIQVJNQVNLKGMpICgodW5zaWduZWQgY2hhcikoKGMpICYgMHhmZikpCiAKLQogLyogQXNzZXJ0IGEgYnVpbGQtdGltZSBkZXBlbmRlbmN5LCBhcyBhbiBleHByZXNzaW9uLgogCiAgICBZb3VyIGNvbXBpbGUgd2lsbCBmYWlsIGlmIHRoZSBjb25kaXRpb24gaXNuJ3QgdHJ1ZSwgb3IgY2FuJ3QgYmUgZXZhbHVhdGVkCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5bWVtLmggYi9JbmNsdWRlL3B5bWVtLmgKaW5kZXggMjM3MmI4Ni4uMDQzZGI2NCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weW1lbS5oCisrKyBiL0luY2x1ZGUvcHltZW0uaApAQCAtMTMsNiArMTMsNyBAQAogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKHZvaWQgKikgUHlNZW1fUmF3TWFsbG9jKHNpemVfdCBzaXplKTsKK1B5QVBJX0ZVTkModm9pZCAqKSBQeU1lbV9SYXdDYWxsb2Moc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKTsKIFB5QVBJX0ZVTkModm9pZCAqKSBQeU1lbV9SYXdSZWFsbG9jKHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlNZW1fUmF3RnJlZSh2b2lkICpwdHIpOwogI2VuZGlmCkBAIC01Nyw2ICs1OCw3IEBACiAqLwogCiBQeUFQSV9GVU5DKHZvaWQgKikgUHlNZW1fTWFsbG9jKHNpemVfdCBzaXplKTsKK1B5QVBJX0ZVTkModm9pZCAqKSBQeU1lbV9DYWxsb2Moc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKTsKIFB5QVBJX0ZVTkModm9pZCAqKSBQeU1lbV9SZWFsbG9jKHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlNZW1fRnJlZSh2b2lkICpwdHIpOwogCkBAIC0xMjYsMjIgKzEyOCwyNSBAQAogfSBQeU1lbUFsbG9jYXRvckRvbWFpbjsKIAogdHlwZWRlZiBzdHJ1Y3QgewotICAgIC8qIHVzZXIgY29udGV4dCBwYXNzZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSAzIGZ1bmN0aW9ucyAqLworICAgIC8qIHVzZXIgY29udGV4dCBwYXNzZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSA0IGZ1bmN0aW9ucyAqLwogICAgIHZvaWQgKmN0eDsKIAogICAgIC8qIGFsbG9jYXRlIGEgbWVtb3J5IGJsb2NrICovCiAgICAgdm9pZCogKCptYWxsb2MpICh2b2lkICpjdHgsIHNpemVfdCBzaXplKTsKIAorICAgIC8qIGFsbG9jYXRlIGEgbWVtb3J5IGJsb2NrIGluaXRpYWxpemVkIGJ5IHplcm9zICovCisgICAgdm9pZCogKCpjYWxsb2MpICh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSk7CisKICAgICAvKiBhbGxvY2F0ZSBvciByZXNpemUgYSBtZW1vcnkgYmxvY2sgKi8KICAgICB2b2lkKiAoKnJlYWxsb2MpICh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKTsKIAogICAgIC8qIHJlbGVhc2UgYSBtZW1vcnkgYmxvY2sgKi8KICAgICB2b2lkICgqZnJlZSkgKHZvaWQgKmN0eCwgdm9pZCAqcHRyKTsKLX0gUHlNZW1BbGxvY2F0b3I7Cit9IFB5TWVtQWxsb2NhdG9yRXg7CiAKIC8qIEdldCB0aGUgbWVtb3J5IGJsb2NrIGFsbG9jYXRvciBvZiB0aGUgc3BlY2lmaWVkIGRvbWFpbi4gKi8KIFB5QVBJX0ZVTkModm9pZCkgUHlNZW1fR2V0QWxsb2NhdG9yKFB5TWVtQWxsb2NhdG9yRG9tYWluIGRvbWFpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TWVtQWxsb2NhdG9yICphbGxvY2F0b3IpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNZW1BbGxvY2F0b3JFeCAqYWxsb2NhdG9yKTsKIAogLyogU2V0IHRoZSBtZW1vcnkgYmxvY2sgYWxsb2NhdG9yIG9mIHRoZSBzcGVjaWZpZWQgZG9tYWluLgogCkBAIC0xNTUsNyArMTYwLDcgQEAKICAgIFB5TWVtX1NldHVwRGVidWdIb29rcygpIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIHRvIHJlaW5zdGFsbCB0aGUgZGVidWcgaG9va3MKICAgIG9uIHRvcCBvbiB0aGUgbmV3IGFsbG9jYXRvci4gKi8KIFB5QVBJX0ZVTkModm9pZCkgUHlNZW1fU2V0QWxsb2NhdG9yKFB5TWVtQWxsb2NhdG9yRG9tYWluIGRvbWFpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TWVtQWxsb2NhdG9yICphbGxvY2F0b3IpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNZW1BbGxvY2F0b3JFeCAqYWxsb2NhdG9yKTsKIAogLyogU2V0dXAgaG9va3MgdG8gZGV0ZWN0IGJ1Z3MgaW4gdGhlIGZvbGxvd2luZyBQeXRob24gbWVtb3J5IGFsbG9jYXRvcgogICAgZnVuY3Rpb25zOgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXBvcnQuaCBiL0luY2x1ZGUvcHlwb3J0LmgKaW5kZXggYjI5ZjliZC4uNjZlMDBkNCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXBvcnQuaAorKysgYi9JbmNsdWRlL3B5cG9ydC5oCkBAIC0zNTcsMjggKzM1Nyw2IEBACiAgKiBzdGF0KCkgYW5kIGZzdGF0KCkgZmlkZGxpbmcgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLS8qIFdlIGV4cGVjdCB0aGF0IHN0YXQgYW5kIGZzdGF0IGV4aXN0IG9uIG1vc3Qgc3lzdGVtcy4KLSAqICBJdCdzIGNvbmZpcm1lZCBvbiBVbml4LCBNYWMgYW5kIFdpbmRvd3MuCi0gKiAgSWYgeW91IGRvbid0IGhhdmUgdGhlbSwgYWRkCi0gKiAgICAgICNkZWZpbmUgRE9OVF9IQVZFX1NUQVQKLSAqIGFuZC9vcgotICogICAgICAjZGVmaW5lIERPTlRfSEFWRV9GU1RBVAotICogdG8geW91ciBweWNvbmZpZy5oLiBQeXRob24gY29kZSBiZXlvbmQgdGhpcyBzaG91bGQgY2hlY2sgSEFWRV9TVEFUIGFuZAotICogSEFWRV9GU1RBVCBpbnN0ZWFkLgotICogQWxzbwotICogICAgICAjZGVmaW5lIEhBVkVfU1lTX1NUQVRfSAotICogaWYgPHN5cy9zdGF0Lmg+IGV4aXN0cyBvbiB5b3VyIHBsYXRmb3JtLCBhbmQKLSAqICAgICAgI2RlZmluZSBIQVZFX1NUQVRfSAotICogaWYgPHN0YXQuaD4gZG9lcy4KLSAqLwotI2lmbmRlZiBET05UX0hBVkVfU1RBVAotI2RlZmluZSBIQVZFX1NUQVQKLSNlbmRpZgotCi0jaWZuZGVmIERPTlRfSEFWRV9GU1RBVAotI2RlZmluZSBIQVZFX0ZTVEFUCi0jZW5kaWYKLQogI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjZWxpZiBkZWZpbmVkKEhBVkVfU1RBVF9IKQpAQCAtNTg4LDYgKzU2NiwyNSBAQAogICAgIH0gd2hpbGUgKDApCiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfR0NDX0FTTV9GT1JfTUM2ODg4MQorI2RlZmluZSBIQVZFX1BZX1NFVF81M0JJVF9QUkVDSVNJT04gMQorI2RlZmluZSBfUHlfU0VUXzUzQklUX1BSRUNJU0lPTl9IRUFERVIgXAorICB1bnNpZ25lZCBpbnQgb2xkX2ZwY3IsIG5ld19mcGNyCisjZGVmaW5lIF9QeV9TRVRfNTNCSVRfUFJFQ0lTSU9OX1NUQVJUCQkJCQlcCisgIGRvIHsJCQkJCQkJCQlcCisgICAgX19hc21fXyAoImZtb3ZlLmwgJSVmcGNyLCUwIiA6ICI9ZyIgKG9sZF9mcGNyKSk7CQkJXAorICAgIC8qIFNldCBkb3VibGUgcHJlY2lzaW9uIC8gcm91bmQgdG8gbmVhcmVzdC4gICovCQkJXAorICAgIG5ld19mcGNyID0gKG9sZF9mcGNyICYgfjB4ZjApIHwgMHg4MDsJCQkJXAorICAgIGlmIChuZXdfZnBjciAhPSBvbGRfZnBjcikJCQkJCQlcCisgICAgICBfX2FzbV9fIHZvbGF0aWxlICgiZm1vdmUubCAlMCwlJWZwY3IiIDogOiAiZyIgKG5ld19mcGNyKSk7CVwKKyAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgX1B5X1NFVF81M0JJVF9QUkVDSVNJT05fRU5ECQkJCQlcCisgIGRvIHsJCQkJCQkJCQlcCisgICAgaWYgKG5ld19mcGNyICE9IG9sZF9mcGNyKQkJCQkJCVwKKyAgICAgIF9fYXNtX18gdm9sYXRpbGUgKCJmbW92ZS5sICUwLCUlZnBjciIgOiA6ICJnIiAob2xkX2ZwY3IpKTsJXAorICB9IHdoaWxlICgwKQorI2VuZGlmCisKIC8qIGRlZmF1bHQgZGVmaW5pdGlvbnMgYXJlIGVtcHR5ICovCiAjaWZuZGVmIEhBVkVfUFlfU0VUXzUzQklUX1BSRUNJU0lPTgogI2RlZmluZSBfUHlfU0VUXzUzQklUX1BSRUNJU0lPTl9IRUFERVIKQEAgLTg4MCw0ICs4NzcsMjQgQEAKICNkZWZpbmUgUFlfTElUVExFX0VORElBTiAxCiAjZW5kaWYKIAorI2lmZGVmIFB5X0JVSUxEX0NPUkUgCisvKgorICogTWFjcm9zIHRvIHByb3RlY3QgQ1JUIGNhbGxzIGFnYWluc3QgaW5zdGFudCB0ZXJtaW5hdGlvbiB3aGVuIHBhc3NlZCBhbgorICogaW52YWxpZCBwYXJhbWV0ZXIgKGlzc3VlMjM1MjQpLgorICovCisjaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxOTAwCisKK2V4dGVybiBfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlciBfUHlfc2lsZW50X2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXI7CisjZGVmaW5lIF9QeV9CRUdJTl9TVVBQUkVTU19JUEggeyBfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlciBfUHlfb2xkX2hhbmRsZXIgPSBcCisgICAgX3NldF90aHJlYWRfbG9jYWxfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlcihfUHlfc2lsZW50X2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIpOworI2RlZmluZSBfUHlfRU5EX1NVUFBSRVNTX0lQSCBfc2V0X3RocmVhZF9sb2NhbF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyKF9QeV9vbGRfaGFuZGxlcik7IH0KKworI2Vsc2UKKworI2RlZmluZSBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisjZGVmaW5lIF9QeV9FTkRfU1VQUFJFU1NfSVBICisKKyNlbmRpZiAvKiBfTVNDX1ZFUiA+PSAxOTAwICovCisjZW5kaWYgLyogUHlfQlVJTERfQ09SRSAqLworCiAjZW5kaWYgLyogUHlfUFlQT1JUX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlzdGF0ZS5oIGIvSW5jbHVkZS9weXN0YXRlLmgKaW5kZXggNDk5MmMyMi4uNjAwMGI4MSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXN0YXRlLmgKKysrIGIvSW5jbHVkZS9weXN0YXRlLmgKQEAgLTEzNCw2ICsxMzQsOSBAQAogICAgIHZvaWQgKCpvbl9kZWxldGUpKHZvaWQgKik7CiAgICAgdm9pZCAqb25fZGVsZXRlX2RhdGE7CiAKKyAgICBQeU9iamVjdCAqY29yb3V0aW5lX3dyYXBwZXI7CisgICAgaW50IGluX2Nvcm91dGluZV93cmFwcGVyOworCiAgICAgLyogWFhYIHNpZ25hbCBoYW5kbGVycyBzaG91bGQgYWxzbyBiZSBoZXJlICovCiAKIH0gUHlUaHJlYWRTdGF0ZTsKQEAgLTE3NSwxNSArMTc4LDEyIEBACiAKIC8qIEFzc3VtaW5nIHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUgR0lMLCB0aGlzIGlzIHRoZQogICAgUHlUaHJlYWRTdGF0ZSBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkLiAqLwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorI2lmZGVmIFB5X0JVSUxEX0NPUkUKIFB5QVBJX0RBVEEoX1B5X2F0b21pY19hZGRyZXNzKSBfUHlUaHJlYWRTdGF0ZV9DdXJyZW50OwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKFB5X0RFQlVHKSB8fCBkZWZpbmVkKFB5X0xJTUlURURfQVBJKQotI2RlZmluZSBQeVRocmVhZFN0YXRlX0dFVCgpIFB5VGhyZWFkU3RhdGVfR2V0KCkKKyMgIGRlZmluZSBQeVRocmVhZFN0YXRlX0dFVCgpIFwKKyAgICAgICAgICAgICAoKFB5VGhyZWFkU3RhdGUqKV9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KSkKICNlbHNlCi0jZGVmaW5lIFB5VGhyZWFkU3RhdGVfR0VUKCkgXAotICAgICgoUHlUaHJlYWRTdGF0ZSopX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJl9QeVRocmVhZFN0YXRlX0N1cnJlbnQpKQorIyAgZGVmaW5lIFB5VGhyZWFkU3RhdGVfR0VUKCkgUHlUaHJlYWRTdGF0ZV9HZXQoKQogI2VuZGlmCiAKIHR5cGVkZWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlzdHJoZXguaCBiL0luY2x1ZGUvcHlzdHJoZXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGMxMjU1Ci0tLSAvZGV2L251bGwKKysrIGIvSW5jbHVkZS9weXN0cmhleC5oCkBAIC0wLDAgKzEsMTcgQEAKKyNpZm5kZWYgUHlfU1RSSEVYX0gKKyNkZWZpbmUgUHlfU1RSSEVYX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiBSZXR1cm5zIGEgc3RyKCkgY29udGFpbmluZyB0aGUgaGV4IHJlcHJlc2VudGF0aW9uIG9mIGFyZ2J1Zi4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlfc3RyaGV4KGNvbnN0IGNoYXIqIGFyZ2J1ZiwgY29uc3QgUHlfc3NpemVfdCBhcmdsZW4pOworLyogUmV0dXJucyBhIGJ5dGVzKCkgY29udGFpbmluZyB0aGUgQVNDSUkgaGV4IHJlcHJlc2VudGF0aW9uIG9mIGFyZ2J1Zi4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlfc3RyaGV4X2J5dGVzKGNvbnN0IGNoYXIqIGFyZ2J1ZiwgY29uc3QgUHlfc3NpemVfdCBhcmdsZW4pOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogIVB5X1NUUkhFWF9IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5dGhvbnJ1bi5oIGIvSW5jbHVkZS9weXRob25ydW4uaAppbmRleCAyZmM1NTc4Li5mOTIxNDhkIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5dGhvbnJ1bi5oCisrKyBiL0luY2x1ZGUvcHl0aG9ucnVuLmgKQEAgLTksNyArOSw4IEBACiAKICNkZWZpbmUgUHlDRl9NQVNLIChDT19GVVRVUkVfRElWSVNJT04gfCBDT19GVVRVUkVfQUJTT0xVVEVfSU1QT1JUIHwgXAogICAgICAgICAgICAgICAgICAgIENPX0ZVVFVSRV9XSVRIX1NUQVRFTUVOVCB8IENPX0ZVVFVSRV9QUklOVF9GVU5DVElPTiB8IFwKLSAgICAgICAgICAgICAgICAgICBDT19GVVRVUkVfVU5JQ09ERV9MSVRFUkFMUyB8IENPX0ZVVFVSRV9CQVJSWV9BU19CREZMKQorICAgICAgICAgICAgICAgICAgIENPX0ZVVFVSRV9VTklDT0RFX0xJVEVSQUxTIHwgQ09fRlVUVVJFX0JBUlJZX0FTX0JERkwgfCBcCisgICAgICAgICAgICAgICAgICAgQ09fRlVUVVJFX0dFTkVSQVRPUl9TVE9QKQogI2RlZmluZSBQeUNGX01BU0tfT0JTT0xFVEUgKENPX05FU1RFRCkKICNkZWZpbmUgUHlDRl9TT1VSQ0VfSVNfVVRGOCAgMHgwMTAwCiAjZGVmaW5lIFB5Q0ZfRE9OVF9JTVBMWV9ERURFTlQgMHgwMjAwCkBAIC0yMiwzMCArMjMsNiBAQAogfSBQeUNvbXBpbGVyRmxhZ3M7CiAjZW5kaWYKIAotUHlBUElfRlVOQyh2b2lkKSBQeV9TZXRQcm9ncmFtTmFtZSh3Y2hhcl90ICopOwotUHlBUElfRlVOQyh3Y2hhcl90ICopIFB5X0dldFByb2dyYW1OYW1lKHZvaWQpOwotCi1QeUFQSV9GVU5DKHZvaWQpIFB5X1NldFB5dGhvbkhvbWUod2NoYXJfdCAqKTsKLVB5QVBJX0ZVTkMod2NoYXJfdCAqKSBQeV9HZXRQeXRob25Ib21lKHZvaWQpOwotCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi0vKiBPbmx5IHVzZWQgYnkgYXBwbGljYXRpb25zIHRoYXQgZW1iZWQgdGhlIGludGVycHJldGVyIGFuZCBuZWVkIHRvCi0gKiBvdmVycmlkZSB0aGUgc3RhbmRhcmQgZW5jb2RpbmcgZGV0ZXJtaW5hdGlvbiBtZWNoYW5pc20KLSAqLwotUHlBUElfRlVOQyhpbnQpIFB5X1NldFN0YW5kYXJkU3RyZWFtRW5jb2RpbmcoY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOwotI2VuZGlmCi0KLVB5QVBJX0ZVTkModm9pZCkgUHlfSW5pdGlhbGl6ZSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlfSW5pdGlhbGl6ZUV4KGludCk7Ci0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKHZvaWQpIF9QeV9Jbml0aWFsaXplRXhfUHJpdmF0ZShpbnQsIGludCk7Ci0jZW5kaWYKLVB5QVBJX0ZVTkModm9pZCkgUHlfRmluYWxpemUodm9pZCk7Ci1QeUFQSV9GVU5DKGludCkgUHlfSXNJbml0aWFsaXplZCh2b2lkKTsKLVB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBQeV9OZXdJbnRlcnByZXRlcih2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlfRW5kSW50ZXJwcmV0ZXIoUHlUaHJlYWRTdGF0ZSAqKTsKLQogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIFB5UnVuX1NpbXBsZVN0cmluZ0ZsYWdzKGNvbnN0IGNoYXIgKiwgUHlDb21waWxlckZsYWdzICopOwogUHlBUElfRlVOQyhpbnQpIFB5UnVuX0FueUZpbGVGbGFncyhGSUxFICosIGNvbnN0IGNoYXIgKiwgUHlDb21waWxlckZsYWdzICopOwpAQCAtMTY2LDI2ICsxNDMsNiBAQAogUHlBUElfRlVOQyh2b2lkKSBQeUVycl9QcmludEV4KGludCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5RXJyX0Rpc3BsYXkoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKLS8qIFB5X1B5QXRFeGl0IGlzIGZvciB0aGUgYXRleGl0IG1vZHVsZSwgUHlfQXRFeGl0IGlzIGZvciBsb3ctbGV2ZWwKLSAqIGV4aXQgZnVuY3Rpb25zLgotICovCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKHZvaWQpIF9QeV9QeUF0RXhpdCh2b2lkICgqZnVuYykodm9pZCkpOwotI2VuZGlmCi1QeUFQSV9GVU5DKGludCkgUHlfQXRFeGl0KHZvaWQgKCpmdW5jKSh2b2lkKSk7Ci0KLVB5QVBJX0ZVTkModm9pZCkgUHlfRXhpdChpbnQpOwotCi0vKiBSZXN0b3JlIHNpZ25hbHMgdGhhdCB0aGUgaW50ZXJwcmV0ZXIgaGFzIGNhbGxlZCBTSUdfSUdOIG9uIHRvIFNJR19ERkwuICovCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKHZvaWQpIF9QeV9SZXN0b3JlU2lnbmFscyh2b2lkKTsKLQotUHlBUElfRlVOQyhpbnQpIFB5X0ZkSXNJbnRlcmFjdGl2ZShGSUxFICosIGNvbnN0IGNoYXIgKik7Ci0jZW5kaWYKLQotLyogQm9vdHN0cmFwICovCi1QeUFQSV9GVU5DKGludCkgUHlfTWFpbihpbnQgYXJnYywgd2NoYXJfdCAqKmFyZ3YpOwotCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBVc2UgbWFjcm9zIGZvciBhIGJ1bmNoIG9mIG9sZCB2YXJpYW50cyAqLwogI2RlZmluZSBQeVJ1bl9TdHJpbmcoc3RyLCBzLCBnLCBsKSBQeVJ1bl9TdHJpbmdGbGFncyhzdHIsIHMsIGcsIGwsIE5VTEwpCkBAIC0yMDcsNjQgKzE2NCw2IEBACiAgICAgUHlSdW5fRmlsZUV4RmxhZ3MoZnAsIHAsIHMsIGcsIGwsIDAsIGZsYWdzKQogI2VuZGlmCiAKLS8qIEluIGdldHBhdGguYyAqLwotUHlBUElfRlVOQyh3Y2hhcl90ICopIFB5X0dldFByb2dyYW1GdWxsUGF0aCh2b2lkKTsKLVB5QVBJX0ZVTkMod2NoYXJfdCAqKSBQeV9HZXRQcmVmaXgodm9pZCk7Ci1QeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfR2V0RXhlY1ByZWZpeCh2b2lkKTsKLVB5QVBJX0ZVTkMod2NoYXJfdCAqKSBQeV9HZXRQYXRoKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSAgICAgIFB5X1NldFBhdGgoY29uc3Qgd2NoYXJfdCAqKTsKLSNpZmRlZiBNU19XSU5ET1dTCi1pbnQgX1B5X0NoZWNrUHl0aG9uMygpOwotI2VuZGlmCi0KLS8qIEluIHRoZWlyIG93biBmaWxlcyAqLwotUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldFZlcnNpb24odm9pZCk7Ci1QeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0UGxhdGZvcm0odm9pZCk7Ci1QeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0Q29weXJpZ2h0KHZvaWQpOwotUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldENvbXBpbGVyKHZvaWQpOwotUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldEJ1aWxkSW5mbyh2b2lkKTsKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBfUHlfaGdpZGVudGlmaWVyKHZvaWQpOwotUHlBUElfRlVOQyhjb25zdCBjaGFyICopIF9QeV9oZ3ZlcnNpb24odm9pZCk7Ci0jZW5kaWYKLQotLyogSW50ZXJuYWwgLS0gdmFyaW91cyBvbmUtdGltZSBpbml0aWFsaXphdGlvbnMgKi8KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5QnVpbHRpbl9Jbml0KHZvaWQpOwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlTeXNfSW5pdCh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0X0luaXQodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeUV4Y19Jbml0KFB5T2JqZWN0ICogYmx0aW5tb2QpOwotUHlBUElfRlVOQyh2b2lkKSBfUHlJbXBvcnRIb29rc19Jbml0KHZvaWQpOwotUHlBUElfRlVOQyhpbnQpIF9QeUZyYW1lX0luaXQodm9pZCk7Ci1QeUFQSV9GVU5DKGludCkgX1B5RmxvYXRfSW5pdCh2b2lkKTsKLVB5QVBJX0ZVTkMoaW50KSBQeUJ5dGVBcnJheV9Jbml0KHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBfUHlSYW5kb21fSW5pdCh2b2lkKTsKLSNlbmRpZgotCi0vKiBWYXJpb3VzIGludGVybmFsIGZpbmFsaXplcnMgKi8KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkModm9pZCkgX1B5RXhjX0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeUltcG9ydF9GaW5pKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBQeU1ldGhvZF9GaW5pKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBQeUZyYW1lX0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5Q0Z1bmN0aW9uX0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5RGljdF9GaW5pKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBQeVR1cGxlX0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5TGlzdF9GaW5pKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBQeVNldF9GaW5pKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBQeUJ5dGVzX0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5Qnl0ZUFycmF5X0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5RmxvYXRfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlPU19GaW5pSW50ZXJydXB0cyh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5R0NfRHVtcFNodXRkb3duU3RhdHModm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeUdDX0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5U2xpY2VfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5VHlwZV9GaW5pKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBfUHlSYW5kb21fRmluaSh2b2lkKTsKLQotUHlBUElfREFUQShQeVRocmVhZFN0YXRlICopIF9QeV9GaW5hbGl6aW5nOwotI2VuZGlmCi0KIC8qIFN0dWZmIHdpdGggbm8gcHJvcGVyIGhvbWUgKHlldCkgKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoY2hhciAqKSBQeU9TX1JlYWRsaW5lKEZJTEUgKiwgRklMRSAqLCBjb25zdCBjaGFyICopOwpAQCAtMjkwLDE0ICsxODksNiBAQAogUHlBUElfRlVOQyhpbnQpIFB5T1NfQ2hlY2tTdGFjayh2b2lkKTsKICNlbmRpZgogCi0vKiBTaWduYWxzICovCi10eXBlZGVmIHZvaWQgKCpQeU9TX3NpZ2hhbmRsZXJfdCkoaW50KTsKLVB5QVBJX0ZVTkMoUHlPU19zaWdoYW5kbGVyX3QpIFB5T1NfZ2V0c2lnKGludCk7Ci1QeUFQSV9GVU5DKFB5T1Nfc2lnaGFuZGxlcl90KSBQeU9TX3NldHNpZyhpbnQsIFB5T1Nfc2lnaGFuZGxlcl90KTsKLQotLyogUmFuZG9tICovCi1QeUFQSV9GVU5DKGludCkgX1B5T1NfVVJhbmRvbSAodm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpOwotCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXRpbWUuaCBiL0luY2x1ZGUvcHl0aW1lLmgKaW5kZXggYjBmYzZkMC4uNDk0MzIyYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXRpbWUuaAorKysgYi9JbmNsdWRlL3B5dGltZS5oCkBAIC0xMyw2MCArMTMsMjYgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX0dFVFRJTUVPRkRBWQotdHlwZWRlZiBzdHJ1Y3QgdGltZXZhbCBfUHlUaW1lX3RpbWV2YWw7CisjaWZkZWYgUFlfSU5UNjRfVAorLyogX1B5VGltZV90OiBQeXRob24gdGltZXN0YW1wIHdpdGggc3Vic2Vjb25kIHByZWNpc2lvbi4gSXQgY2FuIGJlIHVzZWQgdG8KKyAgIHN0b3JlIGEgZHVyYXRpb24sIGFuZCBzbyBpbmRpcmVjdGx5IGEgZGF0ZSAocmVsYXRlZCB0byBhbm90aGVyIGRhdGUsIGxpa2UKKyAgIFVOSVggZXBvY2gpLiAqLwordHlwZWRlZiBQWV9JTlQ2NF9UIF9QeVRpbWVfdDsKKyNkZWZpbmUgX1B5VGltZV9NSU4gUFlfTExPTkdfTUlOCisjZGVmaW5lIF9QeVRpbWVfTUFYIFBZX0xMT05HX01BWAogI2Vsc2UKLXR5cGVkZWYgc3RydWN0IHsKLSAgICB0aW1lX3QgICAgICAgdHZfc2VjOyAgIC8qIHNlY29uZHMgc2luY2UgSmFuLiAxLCAxOTcwICovCi0gICAgbG9uZyAgICAgICAgIHR2X3VzZWM7ICAvKiBhbmQgbWljcm9zZWNvbmRzICovCi19IF9QeVRpbWVfdGltZXZhbDsKKyMgIGVycm9yICJfUHlUaW1lX3QgbmVlZCBzaWduZWQgNjQtYml0IGludGVnZXIgdHlwZSIKICNlbmRpZgogCi0vKiBTdHJ1Y3R1cmUgdXNlZCBieSB0aW1lLmdldF9jbG9ja19pbmZvKCkgKi8KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBjb25zdCBjaGFyICppbXBsZW1lbnRhdGlvbjsKLSAgICBpbnQgbW9ub3RvbmljOwotICAgIGludCBhZGp1c3RhYmxlOwotICAgIGRvdWJsZSByZXNvbHV0aW9uOwotfSBfUHlfY2xvY2tfaW5mb190OwotCi0vKiBTaW1pbGFyIHRvIFBPU0lYIGdldHRpbWVvZmRheSBidXQgY2Fubm90IGZhaWwuICBJZiBzeXN0ZW0gZ2V0dGltZW9mZGF5Ci0gKiBmYWlscyBvciBpcyBub3QgYXZhaWxhYmxlLCBmYWxsIGJhY2sgdG8gbG93ZXIgcmVzb2x1dGlvbiBjbG9ja3MuCi0gKi8KLVB5QVBJX0ZVTkModm9pZCkgX1B5VGltZV9nZXR0aW1lb2ZkYXkoX1B5VGltZV90aW1ldmFsICp0cCk7Ci0KLS8qIFNpbWlsYXIgdG8gX1B5VGltZV9nZXR0aW1lb2ZkYXkoKSBidXQgcmV0cmlldmUgYWxzbyBpbmZvcm1hdGlvbiBvbiB0aGUKLSAqIGNsb2NrIHVzZWQgdG8gZ2V0IHRoZSBjdXJyZW50IHRpbWUuICovCi1QeUFQSV9GVU5DKHZvaWQpIF9QeVRpbWVfZ2V0dGltZW9mZGF5X2luZm8oCi0gICAgX1B5VGltZV90aW1ldmFsICp0cCwKLSAgICBfUHlfY2xvY2tfaW5mb190ICppbmZvKTsKLQotI2RlZmluZSBfUHlUaW1lX0FERF9TRUNPTkRTKHR2LCBpbnRlcnZhbCkgXAotZG8geyBcCi0gICAgdHYudHZfdXNlYyArPSAobG9uZykgKCgobG9uZykgaW50ZXJ2YWwgLSBpbnRlcnZhbCkgKiAxMDAwMDAwKTsgXAotICAgIHR2LnR2X3NlYyArPSAodGltZV90KSBpbnRlcnZhbCArICh0aW1lX3QpICh0di50dl91c2VjIC8gMTAwMDAwMCk7IFwKLSAgICB0di50dl91c2VjICU9IDEwMDAwMDA7IFwKLX0gd2hpbGUgKDApCi0KLSNkZWZpbmUgX1B5VGltZV9JTlRFUlZBTCh0dl9zdGFydCwgdHZfZW5kKSBcCi0gICAgKCh0dl9lbmQudHZfc2VjIC0gdHZfc3RhcnQudHZfc2VjKSArIFwKLSAgICAgKHR2X2VuZC50dl91c2VjIC0gdHZfc3RhcnQudHZfdXNlYykgKiAwLjAwMDAwMSkKLQotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotCiB0eXBlZGVmIGVudW0gewotICAgIC8qIFJvdW5kIHRvd2FyZHMgemVyby4gKi8KLSAgICBfUHlUaW1lX1JPVU5EX0RPV049MCwKLSAgICAvKiBSb3VuZCBhd2F5IGZyb20gemVyby4gKi8KLSAgICBfUHlUaW1lX1JPVU5EX1VQCisgICAgLyogUm91bmQgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoLWluZikuCisgICAgICAgRm9yIGV4YW1wbGUsIHVzZWQgdG8gcmVhZCBhIGNsb2NrLiAqLworICAgIF9QeVRpbWVfUk9VTkRfRkxPT1I9MCwKKyAgICAvKiBSb3VuZCB0b3dhcmRzIGluZmluaXR5ICgraW5mKS4KKyAgICAgICBGb3IgZXhhbXBsZSwgdXNlZCBmb3IgdGltZW91dCB0byB3YWl0ICJhdCBsZWFzdCIgTiBzZWNvbmRzLiAqLworICAgIF9QeVRpbWVfUk9VTkRfQ0VJTElORwogfSBfUHlUaW1lX3JvdW5kX3Q7CiAKLS8qIENvbnZlcnQgYSBudW1iZXIgb2Ygc2Vjb25kcywgaW50IG9yIGZsb2F0LCB0byB0aW1lX3QuICovCi1QeUFQSV9GVU5DKGludCkgX1B5VGltZV9PYmplY3RUb1RpbWVfdCgKLSAgICBQeU9iamVjdCAqb2JqLAotICAgIHRpbWVfdCAqc2VjLAotICAgIF9QeVRpbWVfcm91bmRfdCk7Ci0KIC8qIENvbnZlcnQgYSB0aW1lX3QgdG8gYSBQeUxvbmcuICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUxvbmdfRnJvbVRpbWVfdCgKICAgICB0aW1lX3Qgc2VjKTsKQEAgLTc1LDYgKzQxLDEyIEBACiBQeUFQSV9GVU5DKHRpbWVfdCkgX1B5TG9uZ19Bc1RpbWVfdCgKICAgICBQeU9iamVjdCAqb2JqKTsKIAorLyogQ29udmVydCBhIG51bWJlciBvZiBzZWNvbmRzLCBpbnQgb3IgZmxvYXQsIHRvIHRpbWVfdC4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX09iamVjdFRvVGltZV90KAorICAgIFB5T2JqZWN0ICpvYmosCisgICAgdGltZV90ICpzZWMsCisgICAgX1B5VGltZV9yb3VuZF90KTsKKwogLyogQ29udmVydCBhIG51bWJlciBvZiBzZWNvbmRzLCBpbnQgb3IgZmxvYXQsIHRvIGEgdGltZXZhbCBzdHJ1Y3R1cmUuCiAgICB1c2VjIGlzIGluIHRoZSByYW5nZSBbMDsgOTk5OTk5XSBhbmQgcm91bmRlZCB0b3dhcmRzIHplcm8uCiAgICBGb3IgZXhhbXBsZSwgLTEuMiBpcyBjb252ZXJ0ZWQgdG8gKC0yLCA4MDAwMDApLiAqLwpAQCAtOTIsMTAgKzY0LDEyNiBAQAogICAgIHRpbWVfdCAqc2VjLAogICAgIGxvbmcgKm5zZWMsCiAgICAgX1B5VGltZV9yb3VuZF90KTsKKworCisvKiBDcmVhdGUgYSB0aW1lc3RhbXAgZnJvbSBhIG51bWJlciBvZiBzZWNvbmRzLiAqLworUHlBUElfRlVOQyhfUHlUaW1lX3QpIF9QeVRpbWVfRnJvbVNlY29uZHMoaW50IHNlY29uZHMpOworCisvKiBNYWNybyB0byBjcmVhdGUgYSB0aW1lc3RhbXAgZnJvbSBhIG51bWJlciBvZiBzZWNvbmRzLCBubyBpbnRlZ2VyIG92ZXJmbG93LgorICAgT25seSB1c2UgdGhlIG1hY3JvIGZvciBzbWFsbCB2YWx1ZXMsIHByZWZlciBfUHlUaW1lX0Zyb21TZWNvbmRzKCkuICovCisjZGVmaW5lIF9QWVRJTUVfRlJPTVNFQ09ORFMoc2Vjb25kcykgXAorICAgICAgICAgICAgKChfUHlUaW1lX3QpKHNlY29uZHMpICogKDEwMDAgKiAxMDAwICogMTAwMCkpCisKKy8qIENyZWF0ZSBhIHRpbWVzdGFtcCBmcm9tIGEgbnVtYmVyIG9mIG5hbm9zZWNvbmRzLiAqLworUHlBUElfRlVOQyhfUHlUaW1lX3QpIF9QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKFBZX0xPTkdfTE9ORyBucyk7CisKKy8qIENvbnZlcnQgYSBudW1iZXIgb2Ygc2Vjb25kcyAoUHl0aG9uIGZsb2F0IG9yIGludCkgdG8gYSB0aW1ldGFtcC4KKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLCByZXR1cm4gMCBvbiBzdWNjZXNzLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoX1B5VGltZV90ICp0LAorICAgIFB5T2JqZWN0ICpvYmosCisgICAgX1B5VGltZV9yb3VuZF90IHJvdW5kKTsKKworLyogQ29udmVydCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgKFB5dGhvbiBmbG9hdCBvciBpbnQsIDEwXi0zKSB0byBhIHRpbWV0YW1wLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IsIHJldHVybiAwIG9uIHN1Y2Nlc3MuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9Gcm9tTWlsbGlzZWNvbmRzT2JqZWN0KF9QeVRpbWVfdCAqdCwKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCk7CisKKy8qIENvbnZlcnQgYSB0aW1lc3RhbXAgdG8gYSBudW1iZXIgb2Ygc2Vjb25kcyBhcyBhIEMgZG91YmxlLiAqLworUHlBUElfRlVOQyhkb3VibGUpIF9QeVRpbWVfQXNTZWNvbmRzRG91YmxlKF9QeVRpbWVfdCB0KTsKKworLyogQ29udmVydCB0aW1lc3RhbXAgdG8gYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzICgxMF4tMyBzZWNvbmRzKS4gKi8KK1B5QVBJX0ZVTkMoX1B5VGltZV90KSBfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKF9QeVRpbWVfdCB0LAorICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCk7CisKKy8qIENvbnZlcnQgdGltZXN0YW1wIHRvIGEgbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcyAoMTBeLTYgc2Vjb25kcykuICovCitQeUFQSV9GVU5DKF9QeVRpbWVfdCkgX1B5VGltZV9Bc01pY3Jvc2Vjb25kcyhfUHlUaW1lX3QgdCwKKyAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpOworCisvKiBDb252ZXJ0IHRpbWVzdGFtcCB0byBhIG51bWJlciBvZiBuYW5vc2Vjb25kcyAoMTBeLTkgc2Vjb25kcykgYXMgYSBQeXRob24gaW50CisgICBvYmplY3QuICovCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVRpbWVfQXNOYW5vc2Vjb25kc09iamVjdChfUHlUaW1lX3QgdCk7CisKKy8qIENvbnZlcnQgYSB0aW1lc3RhbXAgdG8gYSB0aW1ldmFsIHN0cnVjdHVyZSAobWljcm9zZWNvbmQgcmVzb2x1dGlvbikuCisgICB0dl91c2VjIGlzIGFsd2F5cyBwb3NpdGl2ZS4KKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIGlmIHRoZSBjb252ZXJzaW9uIG92ZXJmbG93ZWQsCisgICByZXR1cm4gMCBvbiBzdWNjZXNzLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfQXNUaW1ldmFsKF9QeVRpbWVfdCB0LAorICAgIHN0cnVjdCB0aW1ldmFsICp0diwKKyAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpOworCisvKiBTaW1pbGFyIHRvIF9QeVRpbWVfQXNUaW1ldmFsKCksIGJ1dCBkb24ndCByYWlzZSBhbiBleGNlcHRpb24gb24gZXJyb3IuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9Bc1RpbWV2YWxfbm9yYWlzZShfUHlUaW1lX3QgdCwKKyAgICBzdHJ1Y3QgdGltZXZhbCAqdHYsCisgICAgX1B5VGltZV9yb3VuZF90IHJvdW5kKTsKKworLyogQ29udmVydCBhIHRpbWVzdGFtcCB0byBhIG51bWJlciBvZiBzZWNvbmRzIChzZWNzKSBhbmQgbWljcm9zZWNvbmRzICh1cykuCisgICB1cyBpcyBhbHdheXMgcG9zaXRpdmUuIFRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byBfUHlUaW1lX0FzVGltZXZhbCgpCisgICBleGNlcHQgdGhhdCBzZWNzIGlzIGFsd2F5cyBhIHRpbWVfdCB0eXBlLCB3aGVyZWFzIHRoZSB0aW1ldmFsIHN0cnVjdHVyZQorICAgdXNlcyBhIEMgbG9uZyBmb3IgdHZfc2VjIG9uIFdpbmRvd3MuCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBpZiB0aGUgY29udmVyc2lvbiBvdmVyZmxvd2VkLAorICAgcmV0dXJuIDAgb24gc3VjY2Vzcy4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX0FzVGltZXZhbFRpbWVfdCgKKyAgICBfUHlUaW1lX3QgdCwKKyAgICB0aW1lX3QgKnNlY3MsCisgICAgaW50ICp1cywKKyAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpOworCisjaWYgZGVmaW5lZChIQVZFX0NMT0NLX0dFVFRJTUUpIHx8IGRlZmluZWQoSEFWRV9LUVVFVUUpCisvKiBDb252ZXJ0IGEgdGltZXN0YW1wIHRvIGEgdGltZXNwZWMgc3RydWN0dXJlIChuYW5vc2Vjb25kIHJlc29sdXRpb24pLgorICAgdHZfbnNlYyBpcyBhbHdheXMgcG9zaXRpdmUuCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvciwgcmV0dXJuIDAgb24gc3VjY2Vzcy4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX0FzVGltZXNwZWMoX1B5VGltZV90IHQsIHN0cnVjdCB0aW1lc3BlYyAqdHMpOwogI2VuZGlmCiAKLS8qIER1bW15IHRvIGZvcmNlIGxpbmtpbmcuICovCi1QeUFQSV9GVU5DKHZvaWQpIF9QeVRpbWVfSW5pdCh2b2lkKTsKKy8qIEdldCB0aGUgY3VycmVudCB0aW1lIGZyb20gdGhlIHN5c3RlbSBjbG9jay4KKworICAgVGhlIGZ1bmN0aW9uIGNhbm5vdCBmYWlsLiBfUHlUaW1lX0luaXQoKSBlbnN1cmVzIHRoYXQgdGhlIHN5c3RlbSBjbG9jaworICAgd29ya3MuICovCitQeUFQSV9GVU5DKF9QeVRpbWVfdCkgX1B5VGltZV9HZXRTeXN0ZW1DbG9jayh2b2lkKTsKKworLyogR2V0IHRoZSB0aW1lIG9mIGEgbW9ub3RvbmljIGNsb2NrLCBpLmUuIGEgY2xvY2sgdGhhdCBjYW5ub3QgZ28gYmFja3dhcmRzLgorICAgVGhlIGNsb2NrIGlzIG5vdCBhZmZlY3RlZCBieSBzeXN0ZW0gY2xvY2sgdXBkYXRlcy4gVGhlIHJlZmVyZW5jZSBwb2ludCBvZgorICAgdGhlIHJldHVybmVkIHZhbHVlIGlzIHVuZGVmaW5lZCwgc28gdGhhdCBvbmx5IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlCisgICByZXN1bHRzIG9mIGNvbnNlY3V0aXZlIGNhbGxzIGlzIHZhbGlkLgorCisgICBUaGUgZnVuY3Rpb24gY2Fubm90IGZhaWwuIF9QeVRpbWVfSW5pdCgpIGVuc3VyZXMgdGhhdCBhIG1vbm90b25pYyBjbG9jaworICAgaXMgYXZhaWxhYmxlIGFuZCB3b3Jrcy4gKi8KK1B5QVBJX0ZVTkMoX1B5VGltZV90KSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKHZvaWQpOworCisKKy8qIFN0cnVjdHVyZSB1c2VkIGJ5IHRpbWUuZ2V0X2Nsb2NrX2luZm8oKSAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGNvbnN0IGNoYXIgKmltcGxlbWVudGF0aW9uOworICAgIGludCBtb25vdG9uaWM7CisgICAgaW50IGFkanVzdGFibGU7CisgICAgZG91YmxlIHJlc29sdXRpb247Cit9IF9QeV9jbG9ja19pbmZvX3Q7CisKKy8qIEdldCB0aGUgY3VycmVudCB0aW1lIGZyb20gdGhlIHN5c3RlbSBjbG9jay4KKyAqIEZpbGwgY2xvY2sgaW5mb3JtYXRpb24gaWYgaW5mbyBpcyBub3QgTlVMTC4KKyAqIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLCByZXR1cm4gMCBvbiBzdWNjZXNzLgorICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9HZXRTeXN0ZW1DbG9ja1dpdGhJbmZvKAorICAgIF9QeVRpbWVfdCAqdCwKKyAgICBfUHlfY2xvY2tfaW5mb190ICppbmZvKTsKKworLyogR2V0IHRoZSB0aW1lIG9mIGEgbW9ub3RvbmljIGNsb2NrLCBpLmUuIGEgY2xvY2sgdGhhdCBjYW5ub3QgZ28gYmFja3dhcmRzLgorICAgVGhlIGNsb2NrIGlzIG5vdCBhZmZlY3RlZCBieSBzeXN0ZW0gY2xvY2sgdXBkYXRlcy4gVGhlIHJlZmVyZW5jZSBwb2ludCBvZgorICAgdGhlIHJldHVybmVkIHZhbHVlIGlzIHVuZGVmaW5lZCwgc28gdGhhdCBvbmx5IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlCisgICByZXN1bHRzIG9mIGNvbnNlY3V0aXZlIGNhbGxzIGlzIHZhbGlkLgorCisgICBGaWxsIGluZm8gKGlmIHNldCkgd2l0aCBpbmZvcm1hdGlvbiBvZiB0aGUgZnVuY3Rpb24gdXNlZCB0byBnZXQgdGhlIHRpbWUuCisKKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2tXaXRoSW5mbygKKyAgICBfUHlUaW1lX3QgKnQsCisgICAgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbyk7CisKKworLyogSW5pdGlhbGl6ZSB0aW1lLgorICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9Jbml0KHZvaWQpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvc2V0b2JqZWN0LmggYi9JbmNsdWRlL3NldG9iamVjdC5oCmluZGV4IGFlM2Y1NTYuLmYxN2JjMWIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc2V0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9zZXRvYmplY3QuaApAQCAtNiwzOCArNiw0MyBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogCi0vKgotVGhlcmUgYXJlIHRocmVlIGtpbmRzIG9mIHNsb3RzIGluIHRoZSB0YWJsZToKKy8qIFRoZXJlIGFyZSB0aHJlZSBraW5kcyBvZiBlbnRyaWVzIGluIHRoZSB0YWJsZToKIAogMS4gVW51c2VkOiAga2V5ID09IE5VTEwKIDIuIEFjdGl2ZTogIGtleSAhPSBOVUxMIGFuZCBrZXkgIT0gZHVtbXkKIDMuIER1bW15OiAgIGtleSA9PSBkdW1teQogCi1Ob3RlOiAucG9wKCkgYWJ1c2VzIHRoZSBoYXNoIGZpZWxkIG9mIGFuIFVudXNlZCBvciBEdW1teSBzbG90IHRvCi1ob2xkIGEgc2VhcmNoIGZpbmdlci4gIFRoZSBoYXNoIGZpZWxkIG9mIFVudXNlZCBvciBEdW1teSBzbG90cyBoYXMKLW5vIG1lYW5pbmcgb3RoZXJ3aXNlLgorVGhlIGhhc2ggZmllbGQgb2YgVW51c2VkIHNsb3RzIGhhdmUgbm8gbWVhbmluZy4KK1RoZSBoYXNoIGZpZWxkIG9mIER1bW1ueSBzbG90cyBhcmUgc2V0IHRvIC0xCittZWFuaW5nIHRoYXQgZHVtbXkgZW50cmllcyBjYW4gYmUgZGV0ZWN0ZWQgYnkKK2VpdGhlciBlbnRyeS0+a2V5PT1kdW1teSBvciBieSBlbnRyeS0+aGFzaD09LTEuCiAqLwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorCiAjZGVmaW5lIFB5U2V0X01JTlNJWkUgOAogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgLyogQ2FjaGVkIGhhc2ggY29kZSBvZiB0aGUga2V5LiAqLwogICAgIFB5T2JqZWN0ICprZXk7Ci0gICAgUHlfaGFzaF90IGhhc2g7CisgICAgUHlfaGFzaF90IGhhc2g7ICAgICAgICAgICAgIC8qIENhY2hlZCBoYXNoIGNvZGUgb2YgdGhlIGtleSAqLwogfSBzZXRlbnRyeTsKIAorLyogVGhlIFNldE9iamVjdCBkYXRhIHN0cnVjdHVyZSBpcyBzaGFyZWQgYnkgc2V0IGFuZCBmcm96ZW5zZXQgb2JqZWN0cy4KIAotLyoKLVRoaXMgZGF0YSBzdHJ1Y3R1cmUgaXMgc2hhcmVkIGJ5IHNldCBhbmQgZnJvemVuc2V0IG9iamVjdHMuCitJbnZhcmlhbnQgZm9yIHNldHM6CisgLSBoYXNoIGlzIC0xCisKK0ludmFyaWFudHMgZm9yIGZyb3plbnNldHM6CisgLSBkYXRhIGlzIGltbXV0YWJsZS4KKyAtIGhhc2ggaXMgdGhlIGhhc2ggb2YgdGhlIGZyb3plbnNldCBvciAtMSBpZiBub3QgY29tcHV0ZWQgeWV0LgorCiAqLwogCi10eXBlZGVmIHN0cnVjdCBfc2V0b2JqZWN0IFB5U2V0T2JqZWN0Owotc3RydWN0IF9zZXRvYmplY3QgewordHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKIAotICAgIFB5X3NzaXplX3QgZmlsbDsgIC8qICMgQWN0aXZlICsgIyBEdW1teSAqLwotICAgIFB5X3NzaXplX3QgdXNlZDsgIC8qICMgQWN0aXZlICovCisgICAgUHlfc3NpemVfdCBmaWxsOyAgICAgICAgICAgIC8qIE51bWJlciBhY3RpdmUgYW5kIGR1bW15IGVudHJpZXMqLworICAgIFB5X3NzaXplX3QgdXNlZDsgICAgICAgICAgICAvKiBOdW1iZXIgYWN0aXZlIGVudHJpZXMgKi8KIAogICAgIC8qIFRoZSB0YWJsZSBjb250YWlucyBtYXNrICsgMSBzbG90cywgYW5kIHRoYXQncyBhIHBvd2VyIG9mIDIuCiAgICAgICogV2Ugc3RvcmUgdGhlIG1hc2sgaW5zdGVhZCBvZiB0aGUgc2l6ZSBiZWNhdXNlIHRoZSBtYXNrIGlzIG1vcmUKQEAgLTQ1LDMzICs1MCw0MiBAQAogICAgICAqLwogICAgIFB5X3NzaXplX3QgbWFzazsKIAotICAgIC8qIHRhYmxlIHBvaW50cyB0byBzbWFsbHRhYmxlIGZvciBzbWFsbCB0YWJsZXMsIGVsc2UgdG8KLSAgICAgKiBhZGRpdGlvbmFsIG1hbGxvYydlZCBtZW1vcnkuICB0YWJsZSBpcyBuZXZlciBOVUxMISAgVGhpcyBydWxlCi0gICAgICogc2F2ZXMgcmVwZWF0ZWQgcnVudGltZSBudWxsLXRlc3RzLgorICAgIC8qIFRoZSB0YWJsZSBwb2ludHMgdG8gYSBmaXhlZC1zaXplIHNtYWxsdGFibGUgZm9yIHNtYWxsIHRhYmxlcworICAgICAqIG9yIHRvIGFkZGl0aW9uYWwgbWFsbG9jJ2VkIG1lbW9yeSBmb3IgYmlnZ2VyIHRhYmxlcy4KKyAgICAgKiBUaGUgdGFibGUgcG9pbnRlciBpcyBuZXZlciBOVUxMIHdoaWNoIHNhdmVzIHVzIGZyb20gcmVwZWF0ZWQKKyAgICAgKiBydW50aW1lIG51bGwtdGVzdHMuCiAgICAgICovCiAgICAgc2V0ZW50cnkgKnRhYmxlOwotICAgIHNldGVudHJ5ICooKmxvb2t1cCkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCk7Ci0gICAgUHlfaGFzaF90IGhhc2g7ICAgICAgICAgICAgIC8qIG9ubHkgdXNlZCBieSBmcm96ZW5zZXQgb2JqZWN0cyAqLwotICAgIHNldGVudHJ5IHNtYWxsdGFibGVbUHlTZXRfTUlOU0laRV07CisgICAgUHlfaGFzaF90IGhhc2g7ICAgICAgICAgICAgIC8qIE9ubHkgdXNlZCBieSBmcm96ZW5zZXQgb2JqZWN0cyAqLworICAgIFB5X3NzaXplX3QgZmluZ2VyOyAgICAgICAgICAvKiBTZWFyY2ggZmluZ2VyIGZvciBwb3AoKSAqLwogCisgICAgc2V0ZW50cnkgc21hbGx0YWJsZVtQeVNldF9NSU5TSVpFXTsKICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7ICAgICAgLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgKi8KLX07Ci0jZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KK30gUHlTZXRPYmplY3Q7CisKKyNkZWZpbmUgUHlTZXRfR0VUX1NJWkUoc28pICgoKFB5U2V0T2JqZWN0ICopKHNvKSktPnVzZWQpCisKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgX1B5U2V0X0R1bW15OworCitQeUFQSV9GVU5DKGludCkgX1B5U2V0X05leHRFbnRyeShQeU9iamVjdCAqc2V0LCBQeV9zc2l6ZV90ICpwb3MsIFB5T2JqZWN0ICoqa2V5LCBQeV9oYXNoX3QgKmhhc2gpOworUHlBUElfRlVOQyhpbnQpIF9QeVNldF9VcGRhdGUoUHlPYmplY3QgKnNldCwgUHlPYmplY3QgKml0ZXJhYmxlKTsKK1B5QVBJX0ZVTkMoaW50KSBQeVNldF9DbGVhckZyZWVMaXN0KHZvaWQpOworCisjZW5kaWYgLyogU2VjdGlvbiBleGNsdWRlZCBieSBQeV9MSU1JVEVEX0FQSSAqLwogCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlTZXRfVHlwZTsKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeUZyb3plblNldF9UeXBlOwogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5U2V0SXRlcl9UeXBlOwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfREFUQShQeU9iamVjdCAqKSBfUHlTZXRfRHVtbXk7Ci0jZW5kaWYKIAorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeVNldF9OZXcoUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RnJvemVuU2V0X05ldyhQeU9iamVjdCAqKTsKIAotLyogSW52YXJpYW50cyBmb3IgZnJvemVuc2V0czoKLSAqICAgICBkYXRhIGlzIGltbXV0YWJsZS4KLSAqICAgICBoYXNoIGlzIHRoZSBoYXNoIG9mIHRoZSBmcm96ZW5zZXQgb3IgLTEgaWYgbm90IGNvbXB1dGVkIHlldC4KLSAqIEludmFyaWFudHMgZm9yIHNldHM6Ci0gKiAgICAgaGFzaCBpcyAtMQotICovCitQeUFQSV9GVU5DKGludCkgUHlTZXRfQWRkKFB5T2JqZWN0ICpzZXQsIFB5T2JqZWN0ICprZXkpOworUHlBUElfRlVOQyhpbnQpIFB5U2V0X0NsZWFyKFB5T2JqZWN0ICpzZXQpOworUHlBUElfRlVOQyhpbnQpIFB5U2V0X0NvbnRhaW5zKFB5T2JqZWN0ICphbnlzZXQsIFB5T2JqZWN0ICprZXkpOworUHlBUElfRlVOQyhpbnQpIFB5U2V0X0Rpc2NhcmQoUHlPYmplY3QgKnNldCwgUHlPYmplY3QgKmtleSk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5U2V0X1BvcChQeU9iamVjdCAqc2V0KTsKK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlTZXRfU2l6ZShQeU9iamVjdCAqYW55c2V0KTsKIAogI2RlZmluZSBQeUZyb3plblNldF9DaGVja0V4YWN0KG9iKSAoUHlfVFlQRShvYikgPT0gJlB5RnJvemVuU2V0X1R5cGUpCiAjZGVmaW5lIFB5QW55U2V0X0NoZWNrRXhhY3Qob2IpIFwKQEAgLTg3LDI2ICsxMDEsNiBAQAogICAgIChQeV9UWVBFKG9iKSA9PSAmUHlGcm96ZW5TZXRfVHlwZSB8fCBcCiAgICAgICBQeVR5cGVfSXNTdWJ0eXBlKFB5X1RZUEUob2IpLCAmUHlGcm96ZW5TZXRfVHlwZSkpCiAKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlTZXRfTmV3KFB5T2JqZWN0ICopOwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUZyb3plblNldF9OZXcoUHlPYmplY3QgKik7Ci1QeUFQSV9GVU5DKFB5X3NzaXplX3QpIFB5U2V0X1NpemUoUHlPYmplY3QgKmFueXNldCk7Ci0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi0jZGVmaW5lIFB5U2V0X0dFVF9TSVpFKHNvKSAoKChQeVNldE9iamVjdCAqKShzbykpLT51c2VkKQotI2VuZGlmCi1QeUFQSV9GVU5DKGludCkgUHlTZXRfQ2xlYXIoUHlPYmplY3QgKnNldCk7Ci1QeUFQSV9GVU5DKGludCkgUHlTZXRfQ29udGFpbnMoUHlPYmplY3QgKmFueXNldCwgUHlPYmplY3QgKmtleSk7Ci1QeUFQSV9GVU5DKGludCkgUHlTZXRfRGlzY2FyZChQeU9iamVjdCAqc2V0LCBQeU9iamVjdCAqa2V5KTsKLVB5QVBJX0ZVTkMoaW50KSBQeVNldF9BZGQoUHlPYmplY3QgKnNldCwgUHlPYmplY3QgKmtleSk7Ci0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKGludCkgX1B5U2V0X05leHRFbnRyeShQeU9iamVjdCAqc2V0LCBQeV9zc2l6ZV90ICpwb3MsIFB5T2JqZWN0ICoqa2V5LCBQeV9oYXNoX3QgKmhhc2gpOwotI2VuZGlmCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5U2V0X1BvcChQeU9iamVjdCAqc2V0KTsKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoaW50KSBfUHlTZXRfVXBkYXRlKFB5T2JqZWN0ICpzZXQsIFB5T2JqZWN0ICppdGVyYWJsZSk7Ci0KLVB5QVBJX0ZVTkMoaW50KSBQeVNldF9DbGVhckZyZWVMaXN0KHZvaWQpOwotI2VuZGlmCi0KICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL3NsaWNlb2JqZWN0LmggYi9JbmNsdWRlL3NsaWNlb2JqZWN0LmgKaW5kZXggZjdlZTkwYy4uMjYzNzBlMCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zbGljZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvc2xpY2VvYmplY3QuaApAQCAtNDEsNyArNDEsNyBAQAogUHlBUElfRlVOQyhpbnQpIFB5U2xpY2VfR2V0SW5kaWNlcyhQeU9iamVjdCAqciwgUHlfc3NpemVfdCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKnN0b3AsIFB5X3NzaXplX3QgKnN0ZXApOwogUHlBUElfRlVOQyhpbnQpIFB5U2xpY2VfR2V0SW5kaWNlc0V4KFB5T2JqZWN0ICpyLCBQeV9zc2l6ZV90IGxlbmd0aCwKLQkJCQkgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKnN0b3AsIAorCQkJCSAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqc3RvcCwKIAkJCQkgICAgUHlfc3NpemVfdCAqc3RlcCwgUHlfc3NpemVfdCAqc2xpY2VsZW5ndGgpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvc3ltdGFibGUuaCBiL0luY2x1ZGUvc3ltdGFibGUuaAppbmRleCAxY2ZkODg0Li4xNDA5Y2Q5IDEwMDY0NAotLS0gYS9JbmNsdWRlL3N5bXRhYmxlLmgKKysrIGIvSW5jbHVkZS9zeW10YWJsZS5oCkBAIC00Myw3ICs0Myw2IEBACiAgICAgUHlPYmplY3QgKnN0ZV9jaGlsZHJlbjsgIC8qIGxpc3Qgb2YgY2hpbGQgYmxvY2tzICovCiAgICAgUHlPYmplY3QgKnN0ZV9kaXJlY3RpdmVzOy8qIGxvY2F0aW9ucyBvZiBnbG9iYWwgYW5kIG5vbmxvY2FsIHN0YXRlbWVudHMgKi8KICAgICBfUHlfYmxvY2tfdHkgc3RlX3R5cGU7ICAgLyogbW9kdWxlLCBjbGFzcywgb3IgZnVuY3Rpb24gKi8KLSAgICBpbnQgc3RlX3Vub3B0aW1pemVkOyAgICAgLyogZmFsc2UgaWYgbmFtZXNwYWNlIGlzIG9wdGltaXplZCAqLwogICAgIGludCBzdGVfbmVzdGVkOyAgICAgIC8qIHRydWUgaWYgYmxvY2sgaXMgbmVzdGVkICovCiAgICAgdW5zaWduZWQgc3RlX2ZyZWUgOiAxOyAgICAgICAgLyogdHJ1ZSBpZiBibG9jayBoYXMgZnJlZSB2YXJpYWJsZXMgKi8KICAgICB1bnNpZ25lZCBzdGVfY2hpbGRfZnJlZSA6IDE7ICAvKiB0cnVlIGlmIGEgY2hpbGQgYmxvY2sgaGFzIGZyZWUgdmFycywKQEAgLTEwOCwxMCArMTA3LDYgQEAKICNkZWZpbmUgRlJFRSA0CiAjZGVmaW5lIENFTEwgNQogCi0vKiBUaGUgZm9sbG93aW5nIHR3byBuYW1lcyBhcmUgdXNlZCBmb3IgdGhlIHN0ZV91bm9wdGltaXplZCBiaXQgZmllbGQgKi8KLSNkZWZpbmUgT1BUX0lNUE9SVF9TVEFSIDEKLSNkZWZpbmUgT1BUX1RPUExFVkVMIDIgIC8qIHRvcC1sZXZlbCBuYW1lcywgaW5jbHVkaW5nIGV2YWwgYW5kIGV4ZWMgKi8KLQogI2RlZmluZSBHRU5FUkFUT1IgMQogI2RlZmluZSBHRU5FUkFUT1JfRVhQUkVTU0lPTiAyCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvdG9rZW4uaCBiL0luY2x1ZGUvdG9rZW4uaAppbmRleCA5MDUwMjJiLi41OTVhZmEwIDEwMDY0NAotLS0gYS9JbmNsdWRlL3Rva2VuLmgKKysrIGIvSW5jbHVkZS90b2tlbi5oCkBAIC01OCwxMyArNTgsMTYgQEAKICNkZWZpbmUgRE9VQkxFU1RBUkVRVUFMCTQ2CiAjZGVmaW5lIERPVUJMRVNMQVNICTQ3CiAjZGVmaW5lIERPVUJMRVNMQVNIRVFVQUwgNDgKLSNkZWZpbmUgQVQgICAgICAgICAgICAgIDQ5CQotI2RlZmluZSBSQVJST1cgICAgICAgICAgNTAKLSNkZWZpbmUgRUxMSVBTSVMgICAgICAgIDUxCisjZGVmaW5lIEFUICAgICAgICAgICAgICA0OQorI2RlZmluZSBBVEVRVUFMCQk1MAorI2RlZmluZSBSQVJST1cgICAgICAgICAgNTEKKyNkZWZpbmUgRUxMSVBTSVMgICAgICAgIDUyCiAvKiBEb24ndCBmb3JnZXQgdG8gdXBkYXRlIHRoZSB0YWJsZSBfUHlQYXJzZXJfVG9rZW5OYW1lcyBpbiB0b2tlbml6ZXIuYyEgKi8KLSNkZWZpbmUgT1AJCTUyCi0jZGVmaW5lIEVSUk9SVE9LRU4JNTMKLSNkZWZpbmUgTl9UT0tFTlMJNTQKKyNkZWZpbmUgT1AJCTUzCisjZGVmaW5lIEFXQUlUCQk1NAorI2RlZmluZSBBU1lOQwkJNTUKKyNkZWZpbmUgRVJST1JUT0tFTgk1NgorI2RlZmluZSBOX1RPS0VOUwk1NwogCiAvKiBTcGVjaWFsIGRlZmluaXRpb25zIGZvciBjb29wZXJhdGlvbiB3aXRoIHBhcnNlciAqLwogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3R5cGVzbG90cy5oIGIvSW5jbHVkZS90eXBlc2xvdHMuaAppbmRleCBhZDNjZGZiLi4wY2U2YTM3IDEwMDY0NAotLS0gYS9JbmNsdWRlL3R5cGVzbG90cy5oCisrKyBiL0luY2x1ZGUvdHlwZXNsb3RzLmgKQEAgLTc0LDMgKzc0LDEyIEBACiAjZGVmaW5lIFB5X3RwX21lbWJlcnMgNzIKICNkZWZpbmUgUHlfdHBfZ2V0c2V0IDczCiAjZGVmaW5lIFB5X3RwX2ZyZWUgNzQKKyNkZWZpbmUgUHlfbmJfbWF0cml4X211bHRpcGx5IDc1CisjZGVmaW5lIFB5X25iX2lucGxhY2VfbWF0cml4X211bHRpcGx5IDc2CisjZGVmaW5lIFB5X2FtX2F3YWl0IDc3CisjZGVmaW5lIFB5X2FtX2FpdGVyIDc4CisjZGVmaW5lIFB5X2FtX2FuZXh0IDc5CisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzA1MDAwMAorLyogTmV3IGluIDMuNSAqLworI2RlZmluZSBQeV90cF9maW5hbGl6ZSA4MAorI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL3Vjbmhhc2guaCBiL0luY2x1ZGUvdWNuaGFzaC5oCmluZGV4IDhkZTliYTAuLjQ1MzYyZTkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvdWNuaGFzaC5oCisrKyBiL0luY2x1ZGUvdWNuaGFzaC5oCkBAIC0xNiw3ICsxNiw3IEBACiAgICAgaW50IHNpemU7CiAKICAgICAvKiBHZXQgbmFtZSBmb3IgYSBnaXZlbiBjaGFyYWN0ZXIgY29kZS4gIFJldHVybnMgbm9uLXplcm8gaWYKLSAgICAgICBzdWNjZXNzLCB6ZXJvIGlmIG5vdC4gIERvZXMgbm90IHNldCBQeXRob24gZXhjZXB0aW9ucy4gCisgICAgICAgc3VjY2VzcywgemVybyBpZiBub3QuICBEb2VzIG5vdCBzZXQgUHl0aG9uIGV4Y2VwdGlvbnMuCiAgICAgICAgSWYgc2VsZiBpcyBOVUxMLCBkYXRhIGNvbWUgZnJvbSB0aGUgZGVmYXVsdCB2ZXJzaW9uIG9mIHRoZSBkYXRhYmFzZS4KICAgICAgICBJZiBpdCBpcyBub3QgTlVMTCwgaXQgc2hvdWxkIGJlIGEgdW5pY29kZWRhdGEudWNkX1hfWV9aIG9iamVjdCAqLwogICAgIGludCAoKmdldG5hbWUpKFB5T2JqZWN0ICpzZWxmLCBQeV9VQ1M0IGNvZGUsIGNoYXIqIGJ1ZmZlciwgaW50IGJ1ZmxlbiwKZGlmZiAtLWdpdCBhL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oIGIvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKaW5kZXggZjE5ZDliZi4uMDljOWIyMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKQEAgLTIwNjAsMTIgKzIwNjAsNiBAQAogICAgIFB5T2JqZWN0ICplbGVtZW50ICAgICAgICAgICAvKiBFbGVtZW50IHN0cmluZyAqLwogICAgICk7CiAKLS8qIENoZWNrcyB3aGV0aGVyIHRoZSBzdHJpbmcgY29udGFpbnMgYW55IE5VTCBjaGFyYWN0ZXJzLiAqLwotCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9IYXNOVUxDaGFycyhQeU9iamVjdCAqKTsKLSNlbmRpZgotCiAvKiBDaGVja3Mgd2hldGhlciBhcmd1bWVudCBpcyBhIHZhbGlkIGlkZW50aWZpZXIuICovCiAKIFB5QVBJX0ZVTkMoaW50KSBQeVVuaWNvZGVfSXNJZGVudGlmaWVyKFB5T2JqZWN0ICpzKTsKQEAgLTIyNDUsNiArMjIzOSw4IEBACiAgICAgUHlfVU5JQ09ERSBjCiAgICAgKTsKIAorUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfRm9ybWF0TG9uZyhQeU9iamVjdCAqLCBpbnQsIGludCwgaW50KTsKKwogLyogQ3JlYXRlIGEgY29weSBvZiBhIHVuaWNvZGUgc3RyaW5nIGVuZGluZyB3aXRoIGEgbnVsIGNoYXJhY3Rlci4gUmV0dXJuIE5VTEwKICAgIGFuZCByYWlzZSBhIE1lbW9yeUVycm9yIGV4Y2VwdGlvbiBvbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlLCBvdGhlcndpc2UKICAgIHJldHVybiBhIG5ldyBhbGxvY2F0ZWQgYnVmZmVyICh1c2UgUHlNZW1fRnJlZSgpIHRvIGZyZWUgdGhlIGJ1ZmZlcikuICovCmRpZmYgLS1naXQgYS9MaWIvX19mdXR1cmVfXy5weSBiL0xpYi9fX2Z1dHVyZV9fLnB5CmluZGV4IDNiMmQ1ZWMuLjYzYjJiZTMgMTAwNjQ0Ci0tLSBhL0xpYi9fX2Z1dHVyZV9fLnB5CisrKyBiL0xpYi9fX2Z1dHVyZV9fLnB5CkBAIC01Niw2ICs1Niw3IEBACiAgICAgInByaW50X2Z1bmN0aW9uIiwKICAgICAidW5pY29kZV9saXRlcmFscyIsCiAgICAgImJhcnJ5X2FzX0ZMVUZMIiwKKyAgICAiZ2VuZXJhdG9yX3N0b3AiLAogXQogCiBfX2FsbF9fID0gWyJhbGxfZmVhdHVyZV9uYW1lcyJdICsgYWxsX2ZlYXR1cmVfbmFtZXMKQEAgLTcyLDYgKzczLDcgQEAKIENPX0ZVVFVSRV9QUklOVF9GVU5DVElPTiAgPSAweDEwMDAwICAgIyBwcmludCBmdW5jdGlvbgogQ09fRlVUVVJFX1VOSUNPREVfTElURVJBTFMgPSAweDIwMDAwICMgdW5pY29kZSBzdHJpbmcgbGl0ZXJhbHMKIENPX0ZVVFVSRV9CQVJSWV9BU19CREZMID0gMHg0MDAwMAorQ09fRlVUVVJFX0dFTkVSQVRPUl9TVE9QICA9IDB4ODAwMDAgIyBTdG9wSXRlcmF0aW9uIGJlY29tZXMgUnVudGltZUVycm9yIGluIGdlbmVyYXRvcnMKIAogY2xhc3MgX0ZlYXR1cmU6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbmFsUmVsZWFzZSwgbWFuZGF0b3J5UmVsZWFzZSwgY29tcGlsZXJfZmxhZyk6CkBAIC0xMzIsMyArMTM0LDcgQEAKIGJhcnJ5X2FzX0ZMVUZMID0gX0ZlYXR1cmUoKDMsIDEsIDAsICJhbHBoYSIsIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICgzLCA5LCAwLCAiYWxwaGEiLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBDT19GVVRVUkVfQkFSUllfQVNfQkRGTCkKKworZ2VuZXJhdG9yX3N0b3AgPSBfRmVhdHVyZSgoMywgNSwgMCwgImJldGEiLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMywgNywgMCwgImFscGhhIiwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgQ09fRlVUVVJFX0dFTkVSQVRPUl9TVE9QKQpkaWZmIC0tZ2l0IGEvTGliL19jb2xsZWN0aW9uc19hYmMucHkgYi9MaWIvX2NvbGxlY3Rpb25zX2FiYy5weQppbmRleCAzM2I1OWFiLi5mODliYjZmIDEwMDY0NAotLS0gYS9MaWIvX2NvbGxlY3Rpb25zX2FiYy5weQorKysgYi9MaWIvX2NvbGxlY3Rpb25zX2FiYy5weQpAQCAtOSw3ICs5LDggQEAKIGZyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZAogaW1wb3J0IHN5cwogCi1fX2FsbF9fID0gWyJIYXNoYWJsZSIsICJJdGVyYWJsZSIsICJJdGVyYXRvciIsCitfX2FsbF9fID0gWyJBd2FpdGFibGUiLCAiQ29yb3V0aW5lIiwgIkFzeW5jSXRlcmFibGUiLCAiQXN5bmNJdGVyYXRvciIsCisgICAgICAgICAgICJIYXNoYWJsZSIsICJJdGVyYWJsZSIsICJJdGVyYXRvciIsICJHZW5lcmF0b3IiLAogICAgICAgICAgICAiU2l6ZWQiLCAiQ29udGFpbmVyIiwgIkNhbGxhYmxlIiwKICAgICAgICAgICAgIlNldCIsICJNdXRhYmxlU2V0IiwKICAgICAgICAgICAgIk1hcHBpbmciLCAiTXV0YWJsZU1hcHBpbmciLApAQCAtNTAsNiArNTEsMTMgQEAKIGRpY3RfaXRlbXMgPSB0eXBlKHt9Lml0ZW1zKCkpCiAjIyBtaXNjICMjCiBtYXBwaW5ncHJveHkgPSB0eXBlKHR5cGUuX19kaWN0X18pCitnZW5lcmF0b3IgPSB0eXBlKChsYW1iZGE6ICh5aWVsZCkpKCkpCisjIyBjb3JvdXRpbmUgIyMKK2FzeW5jIGRlZiBfY29ybygpOiBwYXNzCitfY29ybyA9IF9jb3JvKCkKK2Nvcm91dGluZSA9IHR5cGUoX2Nvcm8pCitfY29yby5jbG9zZSgpICAjIFByZXZlbnQgUmVzb3VyY2VXYXJuaW5nCitkZWwgX2Nvcm8KIAogCiAjIyMgT05FLVRSSUNLIFBPTklFUyAjIyMKQEAgLTczLDYgKzgxLDExMyBAQAogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCitjbGFzcyBBd2FpdGFibGUobWV0YWNsYXNzPUFCQ01ldGEpOgorCisgICAgX19zbG90c19fID0gKCkKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgIHlpZWxkCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgorICAgICAgICBpZiBjbHMgaXMgQXdhaXRhYmxlOgorICAgICAgICAgICAgZm9yIEIgaW4gQy5fX21yb19fOgorICAgICAgICAgICAgICAgIGlmICJfX2F3YWl0X18iIGluIEIuX19kaWN0X186CisgICAgICAgICAgICAgICAgICAgIGlmIEIuX19kaWN0X19bIl9fYXdhaXRfXyJdOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKworY2xhc3MgQ29yb3V0aW5lKEF3YWl0YWJsZSk6CisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOgorICAgICAgICAiIiJTZW5kIGEgdmFsdWUgaW50byB0aGUgY29yb3V0aW5lLgorICAgICAgICBSZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BJdGVyYXRpb24uCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6CisgICAgICAgICIiIlJhaXNlIGFuIGV4Y2VwdGlvbiBpbiB0aGUgY29yb3V0aW5lLgorICAgICAgICBSZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BJdGVyYXRpb24uCisgICAgICAgICIiIgorICAgICAgICBpZiB2YWwgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIHRiIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgdHlwCisgICAgICAgICAgICB2YWwgPSB0eXAoKQorICAgICAgICBpZiB0YiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHZhbCA9IHZhbC53aXRoX3RyYWNlYmFjayh0YikKKyAgICAgICAgcmFpc2UgdmFsCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIlJhaXNlIEdlbmVyYXRvckV4aXQgaW5zaWRlIGNvcm91dGluZS4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYudGhyb3coR2VuZXJhdG9yRXhpdCkKKyAgICAgICAgZXhjZXB0IChHZW5lcmF0b3JFeGl0LCBTdG9wSXRlcmF0aW9uKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiY29yb3V0aW5lIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgorICAgICAgICBpZiBjbHMgaXMgQ29yb3V0aW5lOgorICAgICAgICAgICAgbXJvID0gQy5fX21yb19fCisgICAgICAgICAgICBmb3IgbWV0aG9kIGluICgnX19hd2FpdF9fJywgJ3NlbmQnLCAndGhyb3cnLCAnY2xvc2UnKToKKyAgICAgICAgICAgICAgICBmb3IgYmFzZSBpbiBtcm86CisgICAgICAgICAgICAgICAgICAgIGlmIG1ldGhvZCBpbiBiYXNlLl9fZGljdF9fOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisKK0Nvcm91dGluZS5yZWdpc3Rlcihjb3JvdXRpbmUpCisKKworY2xhc3MgQXN5bmNJdGVyYWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgYXN5bmMgZGVmIF9fYWl0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIEFzeW5jSXRlcmF0b3IoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKKyAgICAgICAgaWYgY2xzIGlzIEFzeW5jSXRlcmFibGU6CisgICAgICAgICAgICBpZiBhbnkoIl9fYWl0ZXJfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisKK2NsYXNzIEFzeW5jSXRlcmF0b3IoQXN5bmNJdGVyYWJsZSk6CisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgYXN5bmMgZGVmIF9fYW5leHRfXyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBuZXh0IGl0ZW0gb3IgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uIHdoZW4gZXhoYXVzdGVkLiIiIgorICAgICAgICByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24KKworICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgorICAgICAgICBpZiBjbHMgaXMgQXN5bmNJdGVyYXRvcjoKKyAgICAgICAgICAgIGlmIChhbnkoIl9fYW5leHRfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pIGFuZAorICAgICAgICAgICAgICAgIGFueSgiX19haXRlcl9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXykpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisKIGNsYXNzIEl0ZXJhYmxlKG1ldGFjbGFzcz1BQkNNZXRhKToKIAogICAgIF9fc2xvdHNfXyA9ICgpCkBAIC0xMjQsNiArMjM5LDY0IEBACiBJdGVyYXRvci5yZWdpc3Rlcih0dXBsZV9pdGVyYXRvcikKIEl0ZXJhdG9yLnJlZ2lzdGVyKHppcF9pdGVyYXRvcikKIAorCitjbGFzcyBHZW5lcmF0b3IoSXRlcmF0b3IpOgorCisgICAgX19zbG90c19fID0gKCkKKworICAgIGRlZiBfX25leHRfXyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBuZXh0IGl0ZW0gZnJvbSB0aGUgZ2VuZXJhdG9yLgorICAgICAgICBXaGVuIGV4aGF1c3RlZCwgcmFpc2UgU3RvcEl0ZXJhdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLnNlbmQoTm9uZSkKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBzZW5kKHNlbGYsIHZhbHVlKToKKyAgICAgICAgIiIiU2VuZCBhIHZhbHVlIGludG8gdGhlIGdlbmVyYXRvci4KKyAgICAgICAgUmV0dXJuIG5leHQgeWllbGRlZCB2YWx1ZSBvciByYWlzZSBTdG9wSXRlcmF0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHRocm93KHNlbGYsIHR5cCwgdmFsPU5vbmUsIHRiPU5vbmUpOgorICAgICAgICAiIiJSYWlzZSBhbiBleGNlcHRpb24gaW4gdGhlIGdlbmVyYXRvci4KKyAgICAgICAgUmV0dXJuIG5leHQgeWllbGRlZCB2YWx1ZSBvciByYWlzZSBTdG9wSXRlcmF0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgdmFsIGlzIE5vbmU6CisgICAgICAgICAgICBpZiB0YiBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIHR5cAorICAgICAgICAgICAgdmFsID0gdHlwKCkKKyAgICAgICAgaWYgdGIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB2YWwgPSB2YWwud2l0aF90cmFjZWJhY2sodGIpCisgICAgICAgIHJhaXNlIHZhbAorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAiIiJSYWlzZSBHZW5lcmF0b3JFeGl0IGluc2lkZSBnZW5lcmF0b3IuCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnRocm93KEdlbmVyYXRvckV4aXQpCisgICAgICAgIGV4Y2VwdCAoR2VuZXJhdG9yRXhpdCwgU3RvcEl0ZXJhdGlvbik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImdlbmVyYXRvciBpZ25vcmVkIEdlbmVyYXRvckV4aXQiKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKKyAgICAgICAgaWYgY2xzIGlzIEdlbmVyYXRvcjoKKyAgICAgICAgICAgIG1ybyA9IEMuX19tcm9fXworICAgICAgICAgICAgZm9yIG1ldGhvZCBpbiAoJ19faXRlcl9fJywgJ19fbmV4dF9fJywgJ3NlbmQnLCAndGhyb3cnLCAnY2xvc2UnKToKKyAgICAgICAgICAgICAgICBmb3IgYmFzZSBpbiBtcm86CisgICAgICAgICAgICAgICAgICAgIGlmIG1ldGhvZCBpbiBiYXNlLl9fZGljdF9fOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisKK0dlbmVyYXRvci5yZWdpc3RlcihnZW5lcmF0b3IpCisKKwogY2xhc3MgU2l6ZWQobWV0YWNsYXNzPUFCQ01ldGEpOgogCiAgICAgX19zbG90c19fID0gKCkKQEAgLTQ1Myw2ICs2MjYsOCBAQAogCiBjbGFzcyBNYXBwaW5nVmlldyhTaXplZCk6CiAKKyAgICBfX3Nsb3RzX18gPSAnX21hcHBpbmcnLAorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hcHBpbmcpOgogICAgICAgICBzZWxmLl9tYXBwaW5nID0gbWFwcGluZwogCkBAIC00NjUsNiArNjQwLDggQEAKIAogY2xhc3MgS2V5c1ZpZXcoTWFwcGluZ1ZpZXcsIFNldCk6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9mcm9tX2l0ZXJhYmxlKHNlbGYsIGl0KToKICAgICAgICAgcmV0dXJuIHNldChpdCkKQEAgLTQ4MCw2ICs2NTcsOCBAQAogCiBjbGFzcyBJdGVtc1ZpZXcoTWFwcGluZ1ZpZXcsIFNldCk6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9mcm9tX2l0ZXJhYmxlKHNlbGYsIGl0KToKICAgICAgICAgcmV0dXJuIHNldChpdCkKQEAgLTUwMiw2ICs2ODEsOCBAQAogCiBjbGFzcyBWYWx1ZXNWaWV3KE1hcHBpbmdWaWV3KToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHZhbHVlKToKICAgICAgICAgZm9yIGtleSBpbiBzZWxmLl9tYXBwaW5nOgogICAgICAgICAgICAgaWYgdmFsdWUgPT0gc2VsZi5fbWFwcGluZ1trZXldOgpAQCAtNjQ3LDEzICs4MjgsMjMgQEAKICAgICAgICAgZm9yIGkgaW4gcmV2ZXJzZWQocmFuZ2UobGVuKHNlbGYpKSk6CiAgICAgICAgICAgICB5aWVsZCBzZWxmW2ldCiAKLSAgICBkZWYgaW5kZXgoc2VsZiwgdmFsdWUpOgotICAgICAgICAnJydTLmluZGV4KHZhbHVlKSAtPiBpbnRlZ2VyIC0tIHJldHVybiBmaXJzdCBpbmRleCBvZiB2YWx1ZS4KKyAgICBkZWYgaW5kZXgoc2VsZiwgdmFsdWUsIHN0YXJ0PTAsIHN0b3A9Tm9uZSk6CisgICAgICAgICcnJ1MuaW5kZXgodmFsdWUsIFtzdGFydCwgW3N0b3BdXSkgLT4gaW50ZWdlciAtLSByZXR1cm4gZmlyc3QgaW5kZXggb2YgdmFsdWUuCiAgICAgICAgICAgIFJhaXNlcyBWYWx1ZUVycm9yIGlmIHRoZSB2YWx1ZSBpcyBub3QgcHJlc2VudC4KICAgICAgICAgJycnCi0gICAgICAgIGZvciBpLCB2IGluIGVudW1lcmF0ZShzZWxmKToKLSAgICAgICAgICAgIGlmIHYgPT0gdmFsdWU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGkKKyAgICAgICAgaWYgc3RhcnQgaXMgbm90IE5vbmUgYW5kIHN0YXJ0IDwgMDoKKyAgICAgICAgICAgIHN0YXJ0ID0gbWF4KGxlbihzZWxmKSArIHN0YXJ0LCAwKQorICAgICAgICBpZiBzdG9wIGlzIG5vdCBOb25lIGFuZCBzdG9wIDwgMDoKKyAgICAgICAgICAgIHN0b3AgKz0gbGVuKHNlbGYpCisKKyAgICAgICAgaSA9IHN0YXJ0CisgICAgICAgIHdoaWxlIHN0b3AgaXMgTm9uZSBvciBpIDwgc3RvcDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBzZWxmW2ldID09IHZhbHVlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaQorICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGkgKz0gMQogICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAKICAgICBkZWYgY291bnQoc2VsZiwgdmFsdWUpOgpkaWZmIC0tZ2l0IGEvTGliL19jb21wcmVzc2lvbi5weSBiL0xpYi9fY29tcHJlc3Npb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjAwZjMxYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9fY29tcHJlc3Npb24ucHkKQEAgLTAsMCArMSwxNTIgQEAKKyIiIkludGVybmFsIGNsYXNzZXMgdXNlZCBieSB0aGUgZ3ppcCwgbHptYSBhbmQgYnoyIG1vZHVsZXMiIiIKKworaW1wb3J0IGlvCisKKworQlVGRkVSX1NJWkUgPSBpby5ERUZBVUxUX0JVRkZFUl9TSVpFICAjIENvbXByZXNzZWQgZGF0YSByZWFkIGNodW5rIHNpemUKKworCitjbGFzcyBCYXNlU3RyZWFtKGlvLkJ1ZmZlcmVkSU9CYXNlKToKKyAgICAiIiJNb2RlLWNoZWNraW5nIGhlbHBlciBmdW5jdGlvbnMuIiIiCisKKyAgICBkZWYgX2NoZWNrX25vdF9jbG9zZWQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCisKKyAgICBkZWYgX2NoZWNrX2Nhbl9yZWFkKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5yZWFkYWJsZSgpOgorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIkZpbGUgbm90IG9wZW4gZm9yIHJlYWRpbmciKQorCisgICAgZGVmIF9jaGVja19jYW5fd3JpdGUoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLndyaXRhYmxlKCk6CisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiRmlsZSBub3Qgb3BlbiBmb3Igd3JpdGluZyIpCisKKyAgICBkZWYgX2NoZWNrX2Nhbl9zZWVrKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5yZWFkYWJsZSgpOgorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIlNlZWtpbmcgaXMgb25seSBzdXBwb3J0ZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9uIGZpbGVzIG9wZW4gZm9yIHJlYWRpbmciKQorICAgICAgICBpZiBub3Qgc2VsZi5zZWVrYWJsZSgpOgorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIlRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb2VzIG5vdCBzdXBwb3J0IHNlZWtpbmciKQorCisKK2NsYXNzIERlY29tcHJlc3NSZWFkZXIoaW8uUmF3SU9CYXNlKToKKyAgICAiIiJBZGFwdHMgdGhlIGRlY29tcHJlc3NvciBBUEkgdG8gYSBSYXdJT0Jhc2UgcmVhZGVyIEFQSSIiIgorCisgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZwLCBkZWNvbXBfZmFjdG9yeSwgdHJhaWxpbmdfZXJyb3I9KCksICoqZGVjb21wX2FyZ3MpOgorICAgICAgICBzZWxmLl9mcCA9IGZwCisgICAgICAgIHNlbGYuX2VvZiA9IEZhbHNlCisgICAgICAgIHNlbGYuX3BvcyA9IDAgICMgQ3VycmVudCBvZmZzZXQgaW4gZGVjb21wcmVzc2VkIHN0cmVhbQorCisgICAgICAgICMgU2V0IHRvIHNpemUgb2YgZGVjb21wcmVzc2VkIHN0cmVhbSBvbmNlIGl0IGlzIGtub3duLCBmb3IgU0VFS19FTkQKKyAgICAgICAgc2VsZi5fc2l6ZSA9IC0xCisKKyAgICAgICAgIyBTYXZlIHRoZSBkZWNvbXByZXNzb3IgZmFjdG9yeSBhbmQgYXJndW1lbnRzLgorICAgICAgICAjIElmIHRoZSBmaWxlIGNvbnRhaW5zIG11bHRpcGxlIGNvbXByZXNzZWQgc3RyZWFtcywgZWFjaAorICAgICAgICAjIHN0cmVhbSB3aWxsIG5lZWQgYSBzZXBhcmF0ZSBkZWNvbXByZXNzb3Igb2JqZWN0LiBBIG5ldyBkZWNvbXByZXNzb3IKKyAgICAgICAgIyBvYmplY3QgaXMgYWxzbyBuZWVkZWQgd2hlbiBpbXBsZW1lbnRpbmcgYSBiYWNrd2FyZHMgc2VlaygpLgorICAgICAgICBzZWxmLl9kZWNvbXBfZmFjdG9yeSA9IGRlY29tcF9mYWN0b3J5CisgICAgICAgIHNlbGYuX2RlY29tcF9hcmdzID0gZGVjb21wX2FyZ3MKKyAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gc2VsZi5fZGVjb21wX2ZhY3RvcnkoKipzZWxmLl9kZWNvbXBfYXJncykKKworICAgICAgICAjIEV4Y2VwdGlvbiBjbGFzcyB0byBjYXRjaCBmcm9tIGRlY29tcHJlc3NvciBzaWduaWZ5aW5nIGludmFsaWQKKyAgICAgICAgIyB0cmFpbGluZyBkYXRhIHRvIGlnbm9yZQorICAgICAgICBzZWxmLl90cmFpbGluZ19lcnJvciA9IHRyYWlsaW5nX2Vycm9yCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IE5vbmUKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuY2xvc2UoKQorCisgICAgZGVmIHNlZWthYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZnAuc2Vla2FibGUoKQorCisgICAgZGVmIHJlYWRpbnRvKHNlbGYsIGIpOgorICAgICAgICB3aXRoIG1lbW9yeXZpZXcoYikgYXMgdmlldywgdmlldy5jYXN0KCJCIikgYXMgYnl0ZV92aWV3OgorICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVhZChsZW4oYnl0ZV92aWV3KSkKKyAgICAgICAgICAgIGJ5dGVfdmlld1s6bGVuKGRhdGEpXSA9IGRhdGEKKyAgICAgICAgcmV0dXJuIGxlbihkYXRhKQorCisgICAgZGVmIHJlYWQoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgIGlmIHNpemUgPCAwOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVhZGFsbCgpCisKKyAgICAgICAgaWYgbm90IHNpemUgb3Igc2VsZi5fZW9mOgorICAgICAgICAgICAgcmV0dXJuIGIiIgorICAgICAgICBkYXRhID0gTm9uZSAgIyBEZWZhdWx0IGlmIEVPRiBpcyBlbmNvdW50ZXJlZAorICAgICAgICAjIERlcGVuZGluZyBvbiB0aGUgaW5wdXQgZGF0YSwgb3VyIGNhbGwgdG8gdGhlIGRlY29tcHJlc3NvciBtYXkgbm90CisgICAgICAgICMgcmV0dXJuIGFueSBkYXRhLiBJbiB0aGlzIGNhc2UsIHRyeSBhZ2FpbiBhZnRlciByZWFkaW5nIGFub3RoZXIgYmxvY2suCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBpZiBzZWxmLl9kZWNvbXByZXNzb3IuZW9mOgorICAgICAgICAgICAgICAgIHJhd2Jsb2NrID0gKHNlbGYuX2RlY29tcHJlc3Nvci51bnVzZWRfZGF0YSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwLnJlYWQoQlVGRkVSX1NJWkUpKQorICAgICAgICAgICAgICAgIGlmIG5vdCByYXdibG9jazoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAjIENvbnRpbnVlIHRvIG5leHQgc3RyZWFtLgorICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IHNlbGYuX2RlY29tcF9mYWN0b3J5KAorICAgICAgICAgICAgICAgICAgICAqKnNlbGYuX2RlY29tcF9hcmdzKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKHJhd2Jsb2NrLCBzaXplKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBzZWxmLl90cmFpbGluZ19lcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgIyBUcmFpbGluZyBkYXRhIGlzbid0IGEgdmFsaWQgY29tcHJlc3NlZCBzdHJlYW07IGlnbm9yZSBpdC4KKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLm5lZWRzX2lucHV0OgorICAgICAgICAgICAgICAgICAgICByYXdibG9jayA9IHNlbGYuX2ZwLnJlYWQoQlVGRkVSX1NJWkUpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCByYXdibG9jazoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKCJDb21wcmVzc2VkIGZpbGUgZW5kZWQgYmVmb3JlIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kLW9mLXN0cmVhbSBtYXJrZXIgd2FzIHJlYWNoZWQiKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhd2Jsb2NrID0gYiIiCisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKHJhd2Jsb2NrLCBzaXplKQorICAgICAgICAgICAgaWYgZGF0YToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBpZiBub3QgZGF0YToKKyAgICAgICAgICAgIHNlbGYuX2VvZiA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuX3NpemUgPSBzZWxmLl9wb3MKKyAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQorICAgICAgICByZXR1cm4gZGF0YQorCisgICAgIyBSZXdpbmQgdGhlIGZpbGUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZGF0YSBzdHJlYW0uCisgICAgZGVmIF9yZXdpbmQoc2VsZik6CisgICAgICAgIHNlbGYuX2ZwLnNlZWsoMCkKKyAgICAgICAgc2VsZi5fZW9mID0gRmFsc2UKKyAgICAgICAgc2VsZi5fcG9zID0gMAorICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBzZWxmLl9kZWNvbXBfZmFjdG9yeSgqKnNlbGYuX2RlY29tcF9hcmdzKQorCisgICAgZGVmIHNlZWsoc2VsZiwgb2Zmc2V0LCB3aGVuY2U9aW8uU0VFS19TRVQpOgorICAgICAgICAjIFJlY2FsY3VsYXRlIG9mZnNldCBhcyBhbiBhYnNvbHV0ZSBmaWxlIHBvc2l0aW9uLgorICAgICAgICBpZiB3aGVuY2UgPT0gaW8uU0VFS19TRVQ6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsaWYgd2hlbmNlID09IGlvLlNFRUtfQ1VSOgorICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5fcG9zICsgb2Zmc2V0CisgICAgICAgIGVsaWYgd2hlbmNlID09IGlvLlNFRUtfRU5EOgorICAgICAgICAgICAgIyBTZWVraW5nIHJlbGF0aXZlIHRvIEVPRiAtIHdlIG5lZWQgdG8ga25vdyB0aGUgZmlsZSdzIHNpemUuCisgICAgICAgICAgICBpZiBzZWxmLl9zaXplIDwgMDoKKyAgICAgICAgICAgICAgICB3aGlsZSBzZWxmLnJlYWQoaW8uREVGQVVMVF9CVUZGRVJfU0laRSk6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3NpemUgKyBvZmZzZXQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgdmFsdWUgZm9yIHdoZW5jZToge30iLmZvcm1hdCh3aGVuY2UpKQorCisgICAgICAgICMgTWFrZSBpdCBzbyB0aGF0IG9mZnNldCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgZm9yd2FyZC4KKyAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5fcG9zOgorICAgICAgICAgICAgc2VsZi5fcmV3aW5kKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9mZnNldCAtPSBzZWxmLl9wb3MKKworICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQgZGF0YSB1bnRpbCB3ZSByZWFjaCB0aGUgZGVzaXJlZCBwb3NpdGlvbi4KKyAgICAgICAgd2hpbGUgb2Zmc2V0ID4gMDoKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLnJlYWQobWluKGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUsIG9mZnNldCkpCisgICAgICAgICAgICBpZiBub3QgZGF0YToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgb2Zmc2V0IC09IGxlbihkYXRhKQorCisgICAgICAgIHJldHVybiBzZWxmLl9wb3MKKworICAgIGRlZiB0ZWxsKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbi4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BvcwpkaWZmIC0tZ2l0IGEvTGliL19kdW1teV90aHJlYWQucHkgYi9MaWIvX2R1bW15X3RocmVhZC5weQppbmRleCBiNjdjZmI5Li4zNmU1ZjM4IDEwMDY0NAotLS0gYS9MaWIvX2R1bW15X3RocmVhZC5weQorKysgYi9MaWIvX2R1bW15X3RocmVhZC5weQpAQCAtMTQwLDYgKzE0MCwxNCBAQAogICAgIGRlZiBsb2NrZWQoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmxvY2tlZF9zdGF0dXMKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICI8JXMgJXMuJXMgb2JqZWN0IGF0ICVzPiIgJSAoCisgICAgICAgICAgICAibG9ja2VkIiBpZiBzZWxmLmxvY2tlZF9zdGF0dXMgZWxzZSAidW5sb2NrZWQiLAorICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgIGhleChpZChzZWxmKSkKKyAgICAgICAgKQorCiAjIFVzZWQgdG8gc2lnbmFsIHRoYXQgaW50ZXJydXB0X21haW4gd2FzIGNhbGxlZCBpbiBhICJ0aHJlYWQiCiBfaW50ZXJydXB0ID0gRmFsc2UKICMgVHJ1ZSB3aGVuIG5vdCBleGVjdXRpbmcgaW4gYSAidGhyZWFkIgpkaWZmIC0tZ2l0IGEvTGliL19weWRlY2ltYWwucHkgYi9MaWIvX3B5ZGVjaW1hbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWJhNGVlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL19weWRlY2ltYWwucHkKQEAgLTAsMCArMSw2MzgwIEBACisjIENvcHlyaWdodCAoYykgMjAwNCBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworIyBXcml0dGVuIGJ5IEVyaWMgUHJpY2UgPGVwcmljZSBhdCB0amhzc3QuZWR1PgorIyAgICBhbmQgRmFjdW5kbyBCYXRpc3RhIDxmYWN1bmRvIGF0IHRhbmlxdWV0aWwuY29tLmFyPgorIyAgICBhbmQgUmF5bW9uZCBIZXR0aW5nZXIgPHB5dGhvbiBhdCByY24uY29tPgorIyAgICBhbmQgQWFoeiA8YWFoeiBhdCBwb2JveC5jb20+CisjICAgIGFuZCBUaW0gUGV0ZXJzCisKKyMgVGhpcyBtb2R1bGUgc2hvdWxkIGJlIGtlcHQgaW4gc3luYyB3aXRoIHRoZSBsYXRlc3QgdXBkYXRlcyBvZiB0aGUKKyMgSUJNIHNwZWNpZmljYXRpb24gYXMgaXQgZXZvbHZlcy4gIFRob3NlIHVwZGF0ZXMgd2lsbCBiZSB0cmVhdGVkCisjIGFzIGJ1ZyBmaXhlcyAoZGV2aWF0aW9uIGZyb20gdGhlIHNwZWMgaXMgYSBjb21wYXRpYmlsaXR5LCB1c2FiaWxpdHkKKyMgYnVnKSBhbmQgd2lsbCBiZSBiYWNrcG9ydGVkLiAgQXQgdGhpcyBwb2ludCB0aGUgc3BlYyBpcyBzdGFiaWxpemluZworIyBhbmQgdGhlIHVwZGF0ZXMgYXJlIGJlY29taW5nIGZld2VyLCBzbWFsbGVyLCBhbmQgbGVzcyBzaWduaWZpY2FudC4KKworIiIiCitUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIGRlY2ltYWwgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBiYXNlZCBvbgordGhlIEdlbmVyYWwgRGVjaW1hbCBBcml0aG1ldGljIFNwZWNpZmljYXRpb246CisKKyAgICBodHRwOi8vc3BlbGVvdHJvdmUuY29tL2RlY2ltYWwvZGVjYXJpdGguaHRtbAorCithbmQgSUVFRSBzdGFuZGFyZCA4NTQtMTk4NzoKKworICAgIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUVFRV84NTQtMTk4NworCitEZWNpbWFsIGZsb2F0aW5nIHBvaW50IGhhcyBmaW5pdGUgcHJlY2lzaW9uIHdpdGggYXJiaXRyYXJpbHkgbGFyZ2UgYm91bmRzLgorCitUaGUgcHVycG9zZSBvZiB0aGlzIG1vZHVsZSBpcyB0byBzdXBwb3J0IGFyaXRobWV0aWMgdXNpbmcgZmFtaWxpYXIKKyJzY2hvb2xob3VzZSIgcnVsZXMgYW5kIHRvIGF2b2lkIHNvbWUgb2YgdGhlIHRyaWNreSByZXByZXNlbnRhdGlvbgoraXNzdWVzIGFzc29jaWF0ZWQgd2l0aCBiaW5hcnkgZmxvYXRpbmcgcG9pbnQuICBUaGUgcGFja2FnZSBpcyBlc3BlY2lhbGx5Cit1c2VmdWwgZm9yIGZpbmFuY2lhbCBhcHBsaWNhdGlvbnMgb3IgZm9yIGNvbnRleHRzIHdoZXJlIHVzZXJzIGhhdmUKK2V4cGVjdGF0aW9ucyB0aGF0IGFyZSBhdCBvZGRzIHdpdGggYmluYXJ5IGZsb2F0aW5nIHBvaW50IChmb3IgaW5zdGFuY2UsCitpbiBiaW5hcnkgZmxvYXRpbmcgcG9pbnQsIDEuMDAgJSAwLjEgZ2l2ZXMgMC4wOTk5OTk5OTk5OTk5OTk5NSBpbnN0ZWFkCitvZiAwLjA7IERlY2ltYWwoJzEuMDAnKSAlIERlY2ltYWwoJzAuMScpIHJldHVybnMgdGhlIGV4cGVjdGVkCitEZWNpbWFsKCcwLjAwJykpLgorCitIZXJlIGFyZSBzb21lIGV4YW1wbGVzIG9mIHVzaW5nIHRoZSBkZWNpbWFsIG1vZHVsZToKKworPj4+IGZyb20gZGVjaW1hbCBpbXBvcnQgKgorPj4+IHNldGNvbnRleHQoRXh0ZW5kZWRDb250ZXh0KQorPj4+IERlY2ltYWwoMCkKK0RlY2ltYWwoJzAnKQorPj4+IERlY2ltYWwoJzEnKQorRGVjaW1hbCgnMScpCis+Pj4gRGVjaW1hbCgnLS4wMTIzJykKK0RlY2ltYWwoJy0wLjAxMjMnKQorPj4+IERlY2ltYWwoMTIzNDU2KQorRGVjaW1hbCgnMTIzNDU2JykKKz4+PiBEZWNpbWFsKCcxMjMuNDVlMTIzNDU2NzgnKQorRGVjaW1hbCgnMS4yMzQ1RSsxMjM0NTY4MCcpCis+Pj4gRGVjaW1hbCgnMS4zMycpICsgRGVjaW1hbCgnMS4yNycpCitEZWNpbWFsKCcyLjYwJykKKz4+PiBEZWNpbWFsKCcxMi4zNCcpICsgRGVjaW1hbCgnMy44NycpIC0gRGVjaW1hbCgnMTguNDEnKQorRGVjaW1hbCgnLTIuMjAnKQorPj4+IGRpZyA9IERlY2ltYWwoMSkKKz4+PiBwcmludChkaWcgLyBEZWNpbWFsKDMpKQorMC4zMzMzMzMzMzMKKz4+PiBnZXRjb250ZXh0KCkucHJlYyA9IDE4Cis+Pj4gcHJpbnQoZGlnIC8gRGVjaW1hbCgzKSkKKzAuMzMzMzMzMzMzMzMzMzMzMzMzCis+Pj4gcHJpbnQoZGlnLnNxcnQoKSkKKzEKKz4+PiBwcmludChEZWNpbWFsKDMpLnNxcnQoKSkKKzEuNzMyMDUwODA3NTY4ODc3MjkKKz4+PiBwcmludChEZWNpbWFsKDMpICoqIDEyMykKKzQuODUxOTI3ODA5NzY4OTY0MjdFKzU4Cis+Pj4gaW5mID0gRGVjaW1hbCgxKSAvIERlY2ltYWwoMCkKKz4+PiBwcmludChpbmYpCitJbmZpbml0eQorPj4+IG5lZ2luZiA9IERlY2ltYWwoLTEpIC8gRGVjaW1hbCgwKQorPj4+IHByaW50KG5lZ2luZikKKy1JbmZpbml0eQorPj4+IHByaW50KG5lZ2luZiArIGluZikKK05hTgorPj4+IHByaW50KG5lZ2luZiAqIGluZikKKy1JbmZpbml0eQorPj4+IHByaW50KGRpZyAvIDApCitJbmZpbml0eQorPj4+IGdldGNvbnRleHQoKS50cmFwc1tEaXZpc2lvbkJ5WmVyb10gPSAxCis+Pj4gcHJpbnQoZGlnIC8gMCkKK1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgLi4uCisgIC4uLgorICAuLi4KK2RlY2ltYWwuRGl2aXNpb25CeVplcm86IHggLyAwCis+Pj4gYyA9IENvbnRleHQoKQorPj4+IGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSAwCis+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKzAKKz4+PiBjLmRpdmlkZShEZWNpbWFsKDApLCBEZWNpbWFsKDApKQorRGVjaW1hbCgnTmFOJykKKz4+PiBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gMQorPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisxCis+Pj4gYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDAKKz4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorMAorPj4+IHByaW50KGMuZGl2aWRlKERlY2ltYWwoMCksIERlY2ltYWwoMCkpKQorVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAuLi4KKyAgLi4uCisgIC4uLgorZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uOiAwIC8gMAorPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisxCis+Pj4gYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDAKKz4+PiBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gMAorPj4+IHByaW50KGMuZGl2aWRlKERlY2ltYWwoMCksIERlY2ltYWwoMCkpKQorTmFOCis+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKzEKKz4+PgorIiIiCisKK19fYWxsX18gPSBbCisgICAgIyBUd28gbWFqb3IgY2xhc3NlcworICAgICdEZWNpbWFsJywgJ0NvbnRleHQnLAorCisgICAgIyBOYW1lZCB0dXBsZSByZXByZXNlbnRhdGlvbgorICAgICdEZWNpbWFsVHVwbGUnLAorCisgICAgIyBDb250ZXh0cworICAgICdEZWZhdWx0Q29udGV4dCcsICdCYXNpY0NvbnRleHQnLCAnRXh0ZW5kZWRDb250ZXh0JywKKworICAgICMgRXhjZXB0aW9ucworICAgICdEZWNpbWFsRXhjZXB0aW9uJywgJ0NsYW1wZWQnLCAnSW52YWxpZE9wZXJhdGlvbicsICdEaXZpc2lvbkJ5WmVybycsCisgICAgJ0luZXhhY3QnLCAnUm91bmRlZCcsICdTdWJub3JtYWwnLCAnT3ZlcmZsb3cnLCAnVW5kZXJmbG93JywKKyAgICAnRmxvYXRPcGVyYXRpb24nLAorCisgICAgIyBFeGNlcHRpb25hbCBjb25kaXRpb25zIHRoYXQgdHJpZ2dlciBJbnZhbGlkT3BlcmF0aW9uCisgICAgJ0RpdmlzaW9uSW1wb3NzaWJsZScsICdJbnZhbGlkQ29udGV4dCcsICdDb252ZXJzaW9uU3ludGF4JywgJ0RpdmlzaW9uVW5kZWZpbmVkJywKKworICAgICMgQ29uc3RhbnRzIGZvciB1c2UgaW4gc2V0dGluZyB1cCBjb250ZXh0cworICAgICdST1VORF9ET1dOJywgJ1JPVU5EX0hBTEZfVVAnLCAnUk9VTkRfSEFMRl9FVkVOJywgJ1JPVU5EX0NFSUxJTkcnLAorICAgICdST1VORF9GTE9PUicsICdST1VORF9VUCcsICdST1VORF9IQUxGX0RPV04nLCAnUk9VTkRfMDVVUCcsCisKKyAgICAjIEZ1bmN0aW9ucyBmb3IgbWFuaXB1bGF0aW5nIGNvbnRleHRzCisgICAgJ3NldGNvbnRleHQnLCAnZ2V0Y29udGV4dCcsICdsb2NhbGNvbnRleHQnLAorCisgICAgIyBMaW1pdHMgZm9yIHRoZSBDIHZlcnNpb24gZm9yIGNvbXBhdGliaWxpdHkKKyAgICAnTUFYX1BSRUMnLCAgJ01BWF9FTUFYJywgJ01JTl9FTUlOJywgJ01JTl9FVElOWScsCisKKyAgICAjIEMgdmVyc2lvbjogY29tcGlsZSB0aW1lIGNob2ljZSB0aGF0IGVuYWJsZXMgdGhlIHRocmVhZCBsb2NhbCBjb250ZXh0CisgICAgJ0hBVkVfVEhSRUFEUycKK10KKworX194bmFtZV9fID0gX19uYW1lX18gICAgIyBzeXMubW9kdWxlcyBsb29rdXAgKC0td2l0aG91dC10aHJlYWRzKQorX19uYW1lX18gPSAnZGVjaW1hbCcgICAgIyBGb3IgcGlja2xpbmcKK19fdmVyc2lvbl9fID0gJzEuNzAnICAgICMgSGlnaGVzdCB2ZXJzaW9uIG9mIHRoZSBzcGVjIHRoaXMgY29tcGxpZXMgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgIyBTZWUgaHR0cDovL3NwZWxlb3Ryb3ZlLmNvbS9kZWNpbWFsLworX19saWJtcGRlY192ZXJzaW9uX18gPSAiMi40LjEiICMgY29tcGF0aWJsZSBsaWJtcGRlYyB2ZXJzaW9uCisKK2ltcG9ydCBtYXRoIGFzIF9tYXRoCitpbXBvcnQgbnVtYmVycyBhcyBfbnVtYmVycworaW1wb3J0IHN5cworCit0cnk6CisgICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSBhcyBfbmFtZWR0dXBsZQorICAgIERlY2ltYWxUdXBsZSA9IF9uYW1lZHR1cGxlKCdEZWNpbWFsVHVwbGUnLCAnc2lnbiBkaWdpdHMgZXhwb25lbnQnKQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIERlY2ltYWxUdXBsZSA9IGxhbWJkYSAqYXJnczogYXJncworCisjIFJvdW5kaW5nCitST1VORF9ET1dOID0gJ1JPVU5EX0RPV04nCitST1VORF9IQUxGX1VQID0gJ1JPVU5EX0hBTEZfVVAnCitST1VORF9IQUxGX0VWRU4gPSAnUk9VTkRfSEFMRl9FVkVOJworUk9VTkRfQ0VJTElORyA9ICdST1VORF9DRUlMSU5HJworUk9VTkRfRkxPT1IgPSAnUk9VTkRfRkxPT1InCitST1VORF9VUCA9ICdST1VORF9VUCcKK1JPVU5EX0hBTEZfRE9XTiA9ICdST1VORF9IQUxGX0RPV04nCitST1VORF8wNVVQID0gJ1JPVU5EXzA1VVAnCisKKyMgQ29tcGF0aWJpbGl0eSB3aXRoIHRoZSBDIHZlcnNpb24KK0hBVkVfVEhSRUFEUyA9IFRydWUKK2lmIHN5cy5tYXhzaXplID09IDIqKjYzLTE6CisgICAgTUFYX1BSRUMgPSA5OTk5OTk5OTk5OTk5OTk5OTkKKyAgICBNQVhfRU1BWCA9IDk5OTk5OTk5OTk5OTk5OTk5OQorICAgIE1JTl9FTUlOID0gLTk5OTk5OTk5OTk5OTk5OTk5OQorZWxzZToKKyAgICBNQVhfUFJFQyA9IDQyNTAwMDAwMAorICAgIE1BWF9FTUFYID0gNDI1MDAwMDAwCisgICAgTUlOX0VNSU4gPSAtNDI1MDAwMDAwCisKK01JTl9FVElOWSA9IE1JTl9FTUlOIC0gKE1BWF9QUkVDLTEpCisKKyMgRXJyb3JzCisKK2NsYXNzIERlY2ltYWxFeGNlcHRpb24oQXJpdGhtZXRpY0Vycm9yKToKKyAgICAiIiJCYXNlIGV4Y2VwdGlvbiBjbGFzcy4KKworICAgIFVzZWQgZXhjZXB0aW9ucyBkZXJpdmUgZnJvbSB0aGlzLgorICAgIElmIGFuIGV4Y2VwdGlvbiBkZXJpdmVzIGZyb20gYW5vdGhlciBleGNlcHRpb24gYmVzaWRlcyB0aGlzIChzdWNoIGFzCisgICAgVW5kZXJmbG93IChJbmV4YWN0LCBSb3VuZGVkLCBTdWJub3JtYWwpIHRoYXQgaW5kaWNhdGVzIHRoYXQgaXQgaXMgb25seQorICAgIGNhbGxlZCBpZiB0aGUgb3RoZXJzIGFyZSBwcmVzZW50LiAgVGhpcyBpc24ndCBhY3R1YWxseSB1c2VkIGZvcgorICAgIGFueXRoaW5nLCB0aG91Z2guCisKKyAgICBoYW5kbGUgIC0tIENhbGxlZCB3aGVuIGNvbnRleHQuX3JhaXNlX2Vycm9yIGlzIGNhbGxlZCBhbmQgdGhlCisgICAgICAgICAgICAgICB0cmFwX2VuYWJsZXIgaXMgbm90IHNldC4gIEZpcnN0IGFyZ3VtZW50IGlzIHNlbGYsIHNlY29uZCBpcyB0aGUKKyAgICAgICAgICAgICAgIGNvbnRleHQuICBNb3JlIGFyZ3VtZW50cyBjYW4gYmUgZ2l2ZW4sIHRob3NlIGJlaW5nIGFmdGVyCisgICAgICAgICAgICAgICB0aGUgZXhwbGFuYXRpb24gaW4gX3JhaXNlX2Vycm9yIChGb3IgZXhhbXBsZSwKKyAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKE5ld0Vycm9yLCAnKC14KSEnLCBzZWxmLl9zaWduKSB3b3VsZAorICAgICAgICAgICAgICAgY2FsbCBOZXdFcnJvcigpLmhhbmRsZShjb250ZXh0LCBzZWxmLl9zaWduKS4pCisKKyAgICBUbyBkZWZpbmUgYSBuZXcgZXhjZXB0aW9uLCBpdCBzaG91bGQgYmUgc3VmZmljaWVudCB0byBoYXZlIGl0IGRlcml2ZQorICAgIGZyb20gRGVjaW1hbEV4Y2VwdGlvbi4KKyAgICAiIiIKKyAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKKyAgICAgICAgcGFzcworCisKK2NsYXNzIENsYW1wZWQoRGVjaW1hbEV4Y2VwdGlvbik6CisgICAgIiIiRXhwb25lbnQgb2YgYSAwIGNoYW5nZWQgdG8gZml0IGJvdW5kcy4KKworICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGNsYW1wZWQgaWYgdGhlIGV4cG9uZW50IG9mIGEgcmVzdWx0IGhhcyBiZWVuCisgICAgYWx0ZXJlZCBpbiBvcmRlciB0byBmaXQgdGhlIGNvbnN0cmFpbnRzIG9mIGEgc3BlY2lmaWMgY29uY3JldGUKKyAgICByZXByZXNlbnRhdGlvbi4gIFRoaXMgbWF5IG9jY3VyIHdoZW4gdGhlIGV4cG9uZW50IG9mIGEgemVybyByZXN1bHQgd291bGQKKyAgICBiZSBvdXRzaWRlIHRoZSBib3VuZHMgb2YgYSByZXByZXNlbnRhdGlvbiwgb3Igd2hlbiBhIGxhcmdlIG5vcm1hbAorICAgIG51bWJlciB3b3VsZCBoYXZlIGFuIGVuY29kZWQgZXhwb25lbnQgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQuICBJbgorICAgIHRoaXMgbGF0dGVyIGNhc2UsIHRoZSBleHBvbmVudCBpcyByZWR1Y2VkIHRvIGZpdCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICBudW1iZXIgb2YgemVybyBkaWdpdHMgYXJlIGFwcGVuZGVkIHRvIHRoZSBjb2VmZmljaWVudCAoImZvbGQtZG93biIpLgorICAgICIiIgorCitjbGFzcyBJbnZhbGlkT3BlcmF0aW9uKERlY2ltYWxFeGNlcHRpb24pOgorICAgICIiIkFuIGludmFsaWQgb3BlcmF0aW9uIHdhcyBwZXJmb3JtZWQuCisKKyAgICBWYXJpb3VzIGJhZCB0aGluZ3MgY2F1c2UgdGhpczoKKworICAgIFNvbWV0aGluZyBjcmVhdGVzIGEgc2lnbmFsaW5nIE5hTgorICAgIC1JTkYgKyBJTkYKKyAgICAwICogKCstKUlORgorICAgICgrLSlJTkYgLyAoKy0pSU5GCisgICAgeCAlIDAKKyAgICAoKy0pSU5GICUgeAorICAgIHguX3Jlc2NhbGUoIG5vbi1pbnRlZ2VyICkKKyAgICBzcXJ0KC14KSAsIHggPiAwCisgICAgMCAqKiAwCisgICAgeCAqKiAobm9uLWludGVnZXIpCisgICAgeCAqKiAoKy0pSU5GCisgICAgQW4gb3BlcmFuZCBpcyBpbnZhbGlkCisKKyAgICBUaGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gYWZ0ZXIgdGhlc2UgaXMgYSBxdWlldCBwb3NpdGl2ZSBOYU4sCisgICAgZXhjZXB0IHdoZW4gdGhlIGNhdXNlIGlzIGEgc2lnbmFsaW5nIE5hTiwgaW4gd2hpY2ggY2FzZSB0aGUgcmVzdWx0IGlzCisgICAgYWxzbyBhIHF1aWV0IE5hTiwgYnV0IHdpdGggdGhlIG9yaWdpbmFsIHNpZ24sIGFuZCBhbiBvcHRpb25hbAorICAgIGRpYWdub3N0aWMgaW5mb3JtYXRpb24uCisgICAgIiIiCisgICAgZGVmIGhhbmRsZShzZWxmLCBjb250ZXh0LCAqYXJncyk6CisgICAgICAgIGlmIGFyZ3M6CisgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKGFyZ3NbMF0uX3NpZ24sIGFyZ3NbMF0uX2ludCwgJ24nLCBUcnVlKQorICAgICAgICAgICAgcmV0dXJuIGFucy5fZml4X25hbihjb250ZXh0KQorICAgICAgICByZXR1cm4gX05hTgorCitjbGFzcyBDb252ZXJzaW9uU3ludGF4KEludmFsaWRPcGVyYXRpb24pOgorICAgICIiIlRyeWluZyB0byBjb252ZXJ0IGJhZGx5IGZvcm1lZCBzdHJpbmcuCisKKyAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbnZhbGlkLW9wZXJhdGlvbiBpZiBhbiBzdHJpbmcgaXMgYmVpbmcKKyAgICBjb252ZXJ0ZWQgdG8gYSBudW1iZXIgYW5kIGl0IGRvZXMgbm90IGNvbmZvcm0gdG8gdGhlIG51bWVyaWMgc3RyaW5nCisgICAgc3ludGF4LiAgVGhlIHJlc3VsdCBpcyBbMCxxTmFOXS4KKyAgICAiIiIKKyAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKKyAgICAgICAgcmV0dXJuIF9OYU4KKworY2xhc3MgRGl2aXNpb25CeVplcm8oRGVjaW1hbEV4Y2VwdGlvbiwgWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICIiIkRpdmlzaW9uIGJ5IDAuCisKKyAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBkaXZpc2lvbi1ieS16ZXJvIGlmIGRpdmlzaW9uIG9mIGEgZmluaXRlIG51bWJlcgorICAgIGJ5IHplcm8gd2FzIGF0dGVtcHRlZCAoZHVyaW5nIGEgZGl2aWRlLWludGVnZXIgb3IgZGl2aWRlIG9wZXJhdGlvbiwgb3IgYQorICAgIHBvd2VyIG9wZXJhdGlvbiB3aXRoIG5lZ2F0aXZlIHJpZ2h0LWhhbmQgb3BlcmFuZCksIGFuZCB0aGUgZGl2aWRlbmQgd2FzCisgICAgbm90IHplcm8uCisKKyAgICBUaGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gaXMgW3NpZ24saW5mXSwgd2hlcmUgc2lnbiBpcyB0aGUgZXhjbHVzaXZlCisgICAgb3Igb2YgdGhlIHNpZ25zIG9mIHRoZSBvcGVyYW5kcyBmb3IgZGl2aWRlLCBvciBpcyAxIGZvciBhbiBvZGQgcG93ZXIgb2YKKyAgICAtMCwgZm9yIHBvd2VyLgorICAgICIiIgorCisgICAgZGVmIGhhbmRsZShzZWxmLCBjb250ZXh0LCBzaWduLCAqYXJncyk6CisgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2lnbl0KKworY2xhc3MgRGl2aXNpb25JbXBvc3NpYmxlKEludmFsaWRPcGVyYXRpb24pOgorICAgICIiIkNhbm5vdCBwZXJmb3JtIHRoZSBkaXZpc2lvbiBhZGVxdWF0ZWx5LgorCisgICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgaW52YWxpZC1vcGVyYXRpb24gaWYgdGhlIGludGVnZXIgcmVzdWx0IG9mIGEKKyAgICBkaXZpZGUtaW50ZWdlciBvciByZW1haW5kZXIgb3BlcmF0aW9uIGhhZCB0b28gbWFueSBkaWdpdHMgKHdvdWxkIGJlCisgICAgbG9uZ2VyIHRoYW4gcHJlY2lzaW9uKS4gIFRoZSByZXN1bHQgaXMgWzAscU5hTl0uCisgICAgIiIiCisKKyAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKKyAgICAgICAgcmV0dXJuIF9OYU4KKworY2xhc3MgRGl2aXNpb25VbmRlZmluZWQoSW52YWxpZE9wZXJhdGlvbiwgWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICIiIlVuZGVmaW5lZCByZXN1bHQgb2YgZGl2aXNpb24uCisKKyAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbnZhbGlkLW9wZXJhdGlvbiBpZiBkaXZpc2lvbiBieSB6ZXJvIHdhcworICAgIGF0dGVtcHRlZCAoZHVyaW5nIGEgZGl2aWRlLWludGVnZXIsIGRpdmlkZSwgb3IgcmVtYWluZGVyIG9wZXJhdGlvbiksIGFuZAorICAgIHRoZSBkaXZpZGVuZCBpcyBhbHNvIHplcm8uICBUaGUgcmVzdWx0IGlzIFswLHFOYU5dLgorICAgICIiIgorCisgICAgZGVmIGhhbmRsZShzZWxmLCBjb250ZXh0LCAqYXJncyk6CisgICAgICAgIHJldHVybiBfTmFOCisKK2NsYXNzIEluZXhhY3QoRGVjaW1hbEV4Y2VwdGlvbik6CisgICAgIiIiSGFkIHRvIHJvdW5kLCBsb3NpbmcgaW5mb3JtYXRpb24uCisKKyAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbmV4YWN0IHdoZW5ldmVyIHRoZSByZXN1bHQgb2YgYW4gb3BlcmF0aW9uIGlzCisgICAgbm90IGV4YWN0ICh0aGF0IGlzLCBpdCBuZWVkZWQgdG8gYmUgcm91bmRlZCBhbmQgYW55IGRpc2NhcmRlZCBkaWdpdHMKKyAgICB3ZXJlIG5vbi16ZXJvKSwgb3IgaWYgYW4gb3ZlcmZsb3cgb3IgdW5kZXJmbG93IGNvbmRpdGlvbiBvY2N1cnMuICBUaGUKKyAgICByZXN1bHQgaW4gYWxsIGNhc2VzIGlzIHVuY2hhbmdlZC4KKworICAgIFRoZSBpbmV4YWN0IHNpZ25hbCBtYXkgYmUgdGVzdGVkIChvciB0cmFwcGVkKSB0byBkZXRlcm1pbmUgaWYgYSBnaXZlbgorICAgIG9wZXJhdGlvbiAob3Igc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucykgd2FzIGluZXhhY3QuCisgICAgIiIiCisKK2NsYXNzIEludmFsaWRDb250ZXh0KEludmFsaWRPcGVyYXRpb24pOgorICAgICIiIkludmFsaWQgY29udGV4dC4gIFVua25vd24gcm91bmRpbmcsIGZvciBleGFtcGxlLgorCisgICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgaW52YWxpZC1vcGVyYXRpb24gaWYgYW4gaW52YWxpZCBjb250ZXh0IHdhcworICAgIGRldGVjdGVkIGR1cmluZyBhbiBvcGVyYXRpb24uICBUaGlzIGNhbiBvY2N1ciBpZiBjb250ZXh0cyBhcmUgbm90IGNoZWNrZWQKKyAgICBvbiBjcmVhdGlvbiBhbmQgZWl0aGVyIHRoZSBwcmVjaXNpb24gZXhjZWVkcyB0aGUgY2FwYWJpbGl0eSBvZiB0aGUKKyAgICB1bmRlcmx5aW5nIGNvbmNyZXRlIHJlcHJlc2VudGF0aW9uIG9yIGFuIHVua25vd24gb3IgdW5zdXBwb3J0ZWQgcm91bmRpbmcKKyAgICB3YXMgc3BlY2lmaWVkLiAgVGhlc2UgYXNwZWN0cyBvZiB0aGUgY29udGV4dCBuZWVkIG9ubHkgYmUgY2hlY2tlZCB3aGVuCisgICAgdGhlIHZhbHVlcyBhcmUgcmVxdWlyZWQgdG8gYmUgdXNlZC4gIFRoZSByZXN1bHQgaXMgWzAscU5hTl0uCisgICAgIiIiCisKKyAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKKyAgICAgICAgcmV0dXJuIF9OYU4KKworY2xhc3MgUm91bmRlZChEZWNpbWFsRXhjZXB0aW9uKToKKyAgICAiIiJOdW1iZXIgZ290IHJvdW5kZWQgKG5vdCAgbmVjZXNzYXJpbHkgY2hhbmdlZCBkdXJpbmcgcm91bmRpbmcpLgorCisgICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgcm91bmRlZCB3aGVuZXZlciB0aGUgcmVzdWx0IG9mIGFuIG9wZXJhdGlvbiBpcworICAgIHJvdW5kZWQgKHRoYXQgaXMsIHNvbWUgemVybyBvciBub24temVybyBkaWdpdHMgd2VyZSBkaXNjYXJkZWQgZnJvbSB0aGUKKyAgICBjb2VmZmljaWVudCksIG9yIGlmIGFuIG92ZXJmbG93IG9yIHVuZGVyZmxvdyBjb25kaXRpb24gb2NjdXJzLiAgVGhlCisgICAgcmVzdWx0IGluIGFsbCBjYXNlcyBpcyB1bmNoYW5nZWQuCisKKyAgICBUaGUgcm91bmRlZCBzaWduYWwgbWF5IGJlIHRlc3RlZCAob3IgdHJhcHBlZCkgdG8gZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4KKyAgICBvcGVyYXRpb24gKG9yIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMpIGNhdXNlZCBhIGxvc3Mgb2YgcHJlY2lzaW9uLgorICAgICIiIgorCitjbGFzcyBTdWJub3JtYWwoRGVjaW1hbEV4Y2VwdGlvbik6CisgICAgIiIiRXhwb25lbnQgPCBFbWluIGJlZm9yZSByb3VuZGluZy4KKworICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIHN1Ym5vcm1hbCB3aGVuZXZlciB0aGUgcmVzdWx0IG9mIGEgY29udmVyc2lvbiBvcgorICAgIG9wZXJhdGlvbiBpcyBzdWJub3JtYWwgKHRoYXQgaXMsIGl0cyBhZGp1c3RlZCBleHBvbmVudCBpcyBsZXNzIHRoYW4KKyAgICBFbWluLCBiZWZvcmUgYW55IHJvdW5kaW5nKS4gIFRoZSByZXN1bHQgaW4gYWxsIGNhc2VzIGlzIHVuY2hhbmdlZC4KKworICAgIFRoZSBzdWJub3JtYWwgc2lnbmFsIG1heSBiZSB0ZXN0ZWQgKG9yIHRyYXBwZWQpIHRvIGRldGVybWluZSBpZiBhIGdpdmVuCisgICAgb3Igb3BlcmF0aW9uIChvciBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zKSB5aWVsZGVkIGEgc3Vibm9ybWFsIHJlc3VsdC4KKyAgICAiIiIKKworY2xhc3MgT3ZlcmZsb3coSW5leGFjdCwgUm91bmRlZCk6CisgICAgIiIiTnVtZXJpY2FsIG92ZXJmbG93LgorCisgICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgb3ZlcmZsb3cgaWYgdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIGEgcmVzdWx0CisgICAgKGZyb20gYSBjb252ZXJzaW9uIG9yIGZyb20gYW4gb3BlcmF0aW9uIHRoYXQgaXMgbm90IGFuIGF0dGVtcHQgdG8gZGl2aWRlCisgICAgYnkgemVybyksIGFmdGVyIHJvdW5kaW5nLCB3b3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIGxhcmdlc3QgdmFsdWUgdGhhdAorICAgIGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiAodGhlIHZhbHVlIEVtYXgpLgorCisgICAgVGhlIHJlc3VsdCBkZXBlbmRzIG9uIHRoZSByb3VuZGluZyBtb2RlOgorCisgICAgRm9yIHJvdW5kLWhhbGYtdXAgYW5kIHJvdW5kLWhhbGYtZXZlbiAoYW5kIGZvciByb3VuZC1oYWxmLWRvd24gYW5kCisgICAgcm91bmQtdXAsIGlmIGltcGxlbWVudGVkKSwgdGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uIGlzIFtzaWduLGluZl0sCisgICAgd2hlcmUgc2lnbiBpcyB0aGUgc2lnbiBvZiB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdC4gIEZvciByb3VuZC1kb3duLCB0aGUKKyAgICByZXN1bHQgaXMgdGhlIGxhcmdlc3QgZmluaXRlIG51bWJlciB0aGF0IGNhbiBiZSByZXByZXNlbnRlZCBpbiB0aGUKKyAgICBjdXJyZW50IHByZWNpc2lvbiwgd2l0aCB0aGUgc2lnbiBvZiB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdC4gIEZvcgorICAgIHJvdW5kLWNlaWxpbmcsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUgYXMgZm9yIHJvdW5kLWRvd24gaWYgdGhlIHNpZ24gb2YKKyAgICB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdCBpcyAxLCBvciBpcyBbMCxpbmZdIG90aGVyd2lzZS4gIEZvciByb3VuZC1mbG9vciwKKyAgICB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lIGFzIGZvciByb3VuZC1kb3duIGlmIHRoZSBzaWduIG9mIHRoZSBpbnRlcm1lZGlhdGUKKyAgICByZXN1bHQgaXMgMCwgb3IgaXMgWzEsaW5mXSBvdGhlcndpc2UuICBJbiBhbGwgY2FzZXMsIEluZXhhY3QgYW5kIFJvdW5kZWQKKyAgICB3aWxsIGFsc28gYmUgcmFpc2VkLgorICAgICIiIgorCisgICAgZGVmIGhhbmRsZShzZWxmLCBjb250ZXh0LCBzaWduLCAqYXJncyk6CisgICAgICAgIGlmIGNvbnRleHQucm91bmRpbmcgaW4gKFJPVU5EX0hBTEZfVVAsIFJPVU5EX0hBTEZfRVZFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUk9VTkRfSEFMRl9ET1dOLCBST1VORF9VUCk6CisgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3NpZ25dCisgICAgICAgIGlmIHNpZ24gPT0gMDoKKyAgICAgICAgICAgIGlmIGNvbnRleHQucm91bmRpbmcgPT0gUk9VTkRfQ0VJTElORzoKKyAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3NpZ25dCisgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzaWduLCAnOScqY29udGV4dC5wcmVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuRW1heC1jb250ZXh0LnByZWMrMSkKKyAgICAgICAgaWYgc2lnbiA9PSAxOgorICAgICAgICAgICAgaWYgY29udGV4dC5yb3VuZGluZyA9PSBST1VORF9GTE9PUjoKKyAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3NpZ25dCisgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzaWduLCAnOScqY29udGV4dC5wcmVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LkVtYXgtY29udGV4dC5wcmVjKzEpCisKKworY2xhc3MgVW5kZXJmbG93KEluZXhhY3QsIFJvdW5kZWQsIFN1Ym5vcm1hbCk6CisgICAgIiIiTnVtZXJpY2FsIHVuZGVyZmxvdyB3aXRoIHJlc3VsdCByb3VuZGVkIHRvIDAuCisKKyAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyB1bmRlcmZsb3cgaWYgYSByZXN1bHQgaXMgaW5leGFjdCBhbmQgdGhlCisgICAgYWRqdXN0ZWQgZXhwb25lbnQgb2YgdGhlIHJlc3VsdCB3b3VsZCBiZSBzbWFsbGVyIChtb3JlIG5lZ2F0aXZlKSB0aGFuCisgICAgdGhlIHNtYWxsZXN0IHZhbHVlIHRoYXQgY2FuIGJlIGhhbmRsZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uICh0aGUgdmFsdWUKKyAgICBFbWluKS4gIFRoYXQgaXMsIHRoZSByZXN1bHQgaXMgYm90aCBpbmV4YWN0IGFuZCBzdWJub3JtYWwuCisKKyAgICBUaGUgcmVzdWx0IGFmdGVyIGFuIHVuZGVyZmxvdyB3aWxsIGJlIGEgc3Vibm9ybWFsIG51bWJlciByb3VuZGVkLCBpZgorICAgIG5lY2Vzc2FyeSwgc28gdGhhdCBpdHMgZXhwb25lbnQgaXMgbm90IGxlc3MgdGhhbiBFdGlueS4gIFRoaXMgbWF5IHJlc3VsdAorICAgIGluIDAgd2l0aCB0aGUgc2lnbiBvZiB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdCBhbmQgYW4gZXhwb25lbnQgb2YgRXRpbnkuCisKKyAgICBJbiBhbGwgY2FzZXMsIEluZXhhY3QsIFJvdW5kZWQsIGFuZCBTdWJub3JtYWwgd2lsbCBhbHNvIGJlIHJhaXNlZC4KKyAgICAiIiIKKworY2xhc3MgRmxvYXRPcGVyYXRpb24oRGVjaW1hbEV4Y2VwdGlvbiwgVHlwZUVycm9yKToKKyAgICAiIiJFbmFibGUgc3RyaWN0ZXIgc2VtYW50aWNzIGZvciBtaXhpbmcgZmxvYXRzIGFuZCBEZWNpbWFscy4KKworICAgIElmIHRoZSBzaWduYWwgaXMgbm90IHRyYXBwZWQgKGRlZmF1bHQpLCBtaXhpbmcgZmxvYXRzIGFuZCBEZWNpbWFscyBpcworICAgIHBlcm1pdHRlZCBpbiB0aGUgRGVjaW1hbCgpIGNvbnN0cnVjdG9yLCBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsKCkgYW5kCisgICAgYWxsIGNvbXBhcmlzb24gb3BlcmF0b3JzLiBCb3RoIGNvbnZlcnNpb24gYW5kIGNvbXBhcmlzb25zIGFyZSBleGFjdC4KKyAgICBBbnkgb2NjdXJyZW5jZSBvZiBhIG1peGVkIG9wZXJhdGlvbiBpcyBzaWxlbnRseSByZWNvcmRlZCBieSBzZXR0aW5nCisgICAgRmxvYXRPcGVyYXRpb24gaW4gdGhlIGNvbnRleHQgZmxhZ3MuICBFeHBsaWNpdCBjb252ZXJzaW9ucyB3aXRoCisgICAgRGVjaW1hbC5mcm9tX2Zsb2F0KCkgb3IgY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KCkgZG8gbm90CisgICAgc2V0IHRoZSBmbGFnLgorCisgICAgT3RoZXJ3aXNlICh0aGUgc2lnbmFsIGlzIHRyYXBwZWQpLCBvbmx5IGVxdWFsaXR5IGNvbXBhcmlzb25zIGFuZCBleHBsaWNpdAorICAgIGNvbnZlcnNpb25zIGFyZSBzaWxlbnQuIEFsbCBvdGhlciBtaXhlZCBvcGVyYXRpb25zIHJhaXNlIEZsb2F0T3BlcmF0aW9uLgorICAgICIiIgorCisjIExpc3Qgb2YgcHVibGljIHRyYXBzIGFuZCBmbGFncworX3NpZ25hbHMgPSBbQ2xhbXBlZCwgRGl2aXNpb25CeVplcm8sIEluZXhhY3QsIE92ZXJmbG93LCBSb3VuZGVkLAorICAgICAgICAgICAgVW5kZXJmbG93LCBJbnZhbGlkT3BlcmF0aW9uLCBTdWJub3JtYWwsIEZsb2F0T3BlcmF0aW9uXQorCisjIE1hcCBjb25kaXRpb25zIChwZXIgdGhlIHNwZWMpIHRvIHNpZ25hbHMKK19jb25kaXRpb25fbWFwID0ge0NvbnZlcnNpb25TeW50YXg6SW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgIERpdmlzaW9uSW1wb3NzaWJsZTpJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgRGl2aXNpb25VbmRlZmluZWQ6SW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgIEludmFsaWRDb250ZXh0OkludmFsaWRPcGVyYXRpb259CisKKyMgVmFsaWQgcm91bmRpbmcgbW9kZXMKK19yb3VuZGluZ19tb2RlcyA9IChST1VORF9ET1dOLCBST1VORF9IQUxGX1VQLCBST1VORF9IQUxGX0VWRU4sIFJPVU5EX0NFSUxJTkcsCisgICAgICAgICAgICAgICAgICAgUk9VTkRfRkxPT1IsIFJPVU5EX1VQLCBST1VORF9IQUxGX0RPV04sIFJPVU5EXzA1VVApCisKKyMjIyMjIENvbnRleHQgRnVuY3Rpb25zICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgVGhlIGdldGNvbnRleHQoKSBhbmQgc2V0Y29udGV4dCgpIGZ1bmN0aW9uIG1hbmFnZSBhY2Nlc3MgdG8gYSB0aHJlYWQtbG9jYWwKKyMgY3VycmVudCBjb250ZXh0LiAgUHkyLjQgb2ZmZXJzIGRpcmVjdCBzdXBwb3J0IGZvciB0aHJlYWQgbG9jYWxzLiAgSWYgdGhhdAorIyBpcyBub3QgYXZhaWxhYmxlLCB1c2UgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkgd2hpY2ggaXMgc2xvd2VyIGJ1dCB3aWxsCisjIHdvcmsgZm9yIG9sZGVyIFB5dGhvbnMuICBJZiB0aHJlYWRzIGFyZSBub3QgcGFydCBvZiB0aGUgYnVpbGQsIGNyZWF0ZSBhCisjIG1vY2sgdGhyZWFkaW5nIG9iamVjdCB3aXRoIHRocmVhZGluZy5sb2NhbCgpIHJldHVybmluZyB0aGUgbW9kdWxlIG5hbWVzcGFjZS4KKwordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAjIFB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aG91dCB0aHJlYWRzOyBjcmVhdGUgYSBtb2NrIG9iamVjdCBpbnN0ZWFkCisgICAgY2xhc3MgTW9ja1RocmVhZGluZyhvYmplY3QpOgorICAgICAgICBkZWYgbG9jYWwoc2VsZiwgc3lzPXN5cyk6CisgICAgICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbX194bmFtZV9fXQorICAgIHRocmVhZGluZyA9IE1vY2tUaHJlYWRpbmcoKQorICAgIGRlbCBNb2NrVGhyZWFkaW5nCisKK3RyeToKKyAgICB0aHJlYWRpbmcubG9jYWwKKworZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorCisgICAgIyBUbyBmaXggcmVsb2FkaW5nLCBmb3JjZSBpdCB0byBjcmVhdGUgYSBuZXcgY29udGV4dAorICAgICMgT2xkIGNvbnRleHRzIGhhdmUgZGlmZmVyZW50IGV4Y2VwdGlvbnMgaW4gdGhlaXIgZGljdHMsIG1ha2luZyBwcm9ibGVtcy4KKyAgICBpZiBoYXNhdHRyKHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLCAnX19kZWNpbWFsX2NvbnRleHRfXycpOgorICAgICAgICBkZWwgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkuX19kZWNpbWFsX2NvbnRleHRfXworCisgICAgZGVmIHNldGNvbnRleHQoY29udGV4dCk6CisgICAgICAgICIiIlNldCB0aGlzIHRocmVhZCdzIGNvbnRleHQgdG8gY29udGV4dC4iIiIKKyAgICAgICAgaWYgY29udGV4dCBpbiAoRGVmYXVsdENvbnRleHQsIEJhc2ljQ29udGV4dCwgRXh0ZW5kZWRDb250ZXh0KToKKyAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNvcHkoKQorICAgICAgICAgICAgY29udGV4dC5jbGVhcl9mbGFncygpCisgICAgICAgIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLl9fZGVjaW1hbF9jb250ZXh0X18gPSBjb250ZXh0CisKKyAgICBkZWYgZ2V0Y29udGV4dCgpOgorICAgICAgICAiIiJSZXR1cm5zIHRoaXMgdGhyZWFkJ3MgY29udGV4dC4KKworICAgICAgICBJZiB0aGlzIHRocmVhZCBkb2VzIG5vdCB5ZXQgaGF2ZSBhIGNvbnRleHQsIHJldHVybnMKKyAgICAgICAgYSBuZXcgY29udGV4dCBhbmQgc2V0cyB0aGlzIHRocmVhZCdzIGNvbnRleHQuCisgICAgICAgIE5ldyBjb250ZXh0cyBhcmUgY29waWVzIG9mIERlZmF1bHRDb250ZXh0LgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLl9fZGVjaW1hbF9jb250ZXh0X18KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgY29udGV4dCA9IENvbnRleHQoKQorICAgICAgICAgICAgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkuX19kZWNpbWFsX2NvbnRleHRfXyA9IGNvbnRleHQKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0CisKK2Vsc2U6CisKKyAgICBsb2NhbCA9IHRocmVhZGluZy5sb2NhbCgpCisgICAgaWYgaGFzYXR0cihsb2NhbCwgJ19fZGVjaW1hbF9jb250ZXh0X18nKToKKyAgICAgICAgZGVsIGxvY2FsLl9fZGVjaW1hbF9jb250ZXh0X18KKworICAgIGRlZiBnZXRjb250ZXh0KF9sb2NhbD1sb2NhbCk6CisgICAgICAgICIiIlJldHVybnMgdGhpcyB0aHJlYWQncyBjb250ZXh0LgorCisgICAgICAgIElmIHRoaXMgdGhyZWFkIGRvZXMgbm90IHlldCBoYXZlIGEgY29udGV4dCwgcmV0dXJucworICAgICAgICBhIG5ldyBjb250ZXh0IGFuZCBzZXRzIHRoaXMgdGhyZWFkJ3MgY29udGV4dC4KKyAgICAgICAgTmV3IGNvbnRleHRzIGFyZSBjb3BpZXMgb2YgRGVmYXVsdENvbnRleHQuCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gX2xvY2FsLl9fZGVjaW1hbF9jb250ZXh0X18KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgY29udGV4dCA9IENvbnRleHQoKQorICAgICAgICAgICAgX2xvY2FsLl9fZGVjaW1hbF9jb250ZXh0X18gPSBjb250ZXh0CisgICAgICAgICAgICByZXR1cm4gY29udGV4dAorCisgICAgZGVmIHNldGNvbnRleHQoY29udGV4dCwgX2xvY2FsPWxvY2FsKToKKyAgICAgICAgIiIiU2V0IHRoaXMgdGhyZWFkJ3MgY29udGV4dCB0byBjb250ZXh0LiIiIgorICAgICAgICBpZiBjb250ZXh0IGluIChEZWZhdWx0Q29udGV4dCwgQmFzaWNDb250ZXh0LCBFeHRlbmRlZENvbnRleHQpOgorICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHQuY29weSgpCisgICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgX2xvY2FsLl9fZGVjaW1hbF9jb250ZXh0X18gPSBjb250ZXh0CisKKyAgICBkZWwgdGhyZWFkaW5nLCBsb2NhbCAgICAgICAgIyBEb24ndCBjb250YW1pbmF0ZSB0aGUgbmFtZXNwYWNlCisKK2RlZiBsb2NhbGNvbnRleHQoY3R4PU5vbmUpOgorICAgICIiIlJldHVybiBhIGNvbnRleHQgbWFuYWdlciBmb3IgYSBjb3B5IG9mIHRoZSBzdXBwbGllZCBjb250ZXh0CisKKyAgICBVc2VzIGEgY29weSBvZiB0aGUgY3VycmVudCBjb250ZXh0IGlmIG5vIGNvbnRleHQgaXMgc3BlY2lmaWVkCisgICAgVGhlIHJldHVybmVkIGNvbnRleHQgbWFuYWdlciBjcmVhdGVzIGEgbG9jYWwgZGVjaW1hbCBjb250ZXh0CisgICAgaW4gYSB3aXRoIHN0YXRlbWVudDoKKyAgICAgICAgZGVmIHNpbih4KToKKyAgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGN0eDoKKyAgICAgICAgICAgICAgICAgY3R4LnByZWMgKz0gMgorICAgICAgICAgICAgICAgICAjIFJlc3Qgb2Ygc2luIGNhbGN1bGF0aW9uIGFsZ29yaXRobQorICAgICAgICAgICAgICAgICAjIHVzZXMgYSBwcmVjaXNpb24gMiBncmVhdGVyIHRoYW4gbm9ybWFsCisgICAgICAgICAgICAgcmV0dXJuICtzICAjIENvbnZlcnQgcmVzdWx0IHRvIG5vcm1hbCBwcmVjaXNpb24KKworICAgICAgICAgZGVmIHNpbih4KToKKyAgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dChFeHRlbmRlZENvbnRleHQpOgorICAgICAgICAgICAgICAgICAjIFJlc3Qgb2Ygc2luIGNhbGN1bGF0aW9uIGFsZ29yaXRobQorICAgICAgICAgICAgICAgICAjIHVzZXMgdGhlIEV4dGVuZGVkIENvbnRleHQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgIyBHZW5lcmFsIERlY2ltYWwgQXJpdGhtZXRpYyBTcGVjaWZpY2F0aW9uCisgICAgICAgICAgICAgcmV0dXJuICtzICAjIENvbnZlcnQgcmVzdWx0IHRvIG5vcm1hbCBjb250ZXh0CisKKyAgICA+Pj4gc2V0Y29udGV4dChEZWZhdWx0Q29udGV4dCkKKyAgICA+Pj4gcHJpbnQoZ2V0Y29udGV4dCgpLnByZWMpCisgICAgMjgKKyAgICA+Pj4gd2l0aCBsb2NhbGNvbnRleHQoKToKKyAgICAuLi4gICAgIGN0eCA9IGdldGNvbnRleHQoKQorICAgIC4uLiAgICAgY3R4LnByZWMgKz0gMgorICAgIC4uLiAgICAgcHJpbnQoY3R4LnByZWMpCisgICAgLi4uCisgICAgMzAKKyAgICA+Pj4gd2l0aCBsb2NhbGNvbnRleHQoRXh0ZW5kZWRDb250ZXh0KToKKyAgICAuLi4gICAgIHByaW50KGdldGNvbnRleHQoKS5wcmVjKQorICAgIC4uLgorICAgIDkKKyAgICA+Pj4gcHJpbnQoZ2V0Y29udGV4dCgpLnByZWMpCisgICAgMjgKKyAgICAiIiIKKyAgICBpZiBjdHggaXMgTm9uZTogY3R4ID0gZ2V0Y29udGV4dCgpCisgICAgcmV0dXJuIF9Db250ZXh0TWFuYWdlcihjdHgpCisKKworIyMjIyMgRGVjaW1hbCBjbGFzcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgRG8gbm90IHN1YmNsYXNzIERlY2ltYWwgZnJvbSBudW1iZXJzLlJlYWwgYW5kIGRvIG5vdCByZWdpc3RlciBpdCBhcyBzdWNoCisjIChiZWNhdXNlIERlY2ltYWxzIGFyZSBub3QgaW50ZXJvcGVyYWJsZSB3aXRoIGZsb2F0cykuICBTZWUgdGhlIG5vdGVzIGluCisjIG51bWJlcnMucHkgZm9yIG1vcmUgZGV0YWlsLgorCitjbGFzcyBEZWNpbWFsKG9iamVjdCk6CisgICAgIiIiRmxvYXRpbmcgcG9pbnQgY2xhc3MgZm9yIGRlY2ltYWwgYXJpdGhtZXRpYy4iIiIKKworICAgIF9fc2xvdHNfXyA9ICgnX2V4cCcsJ19pbnQnLCdfc2lnbicsICdfaXNfc3BlY2lhbCcpCisgICAgIyBHZW5lcmFsbHksIHRoZSB2YWx1ZSBvZiB0aGUgRGVjaW1hbCBpbnN0YW5jZSBpcyBnaXZlbiBieQorICAgICMgICgtMSkqKl9zaWduICogX2ludCAqIDEwKipfZXhwCisgICAgIyBTcGVjaWFsIHZhbHVlcyBhcmUgc2lnbmlmaWVkIGJ5IF9pc19zcGVjaWFsID09IFRydWUKKworICAgICMgV2UncmUgaW1tdXRhYmxlLCBzbyB1c2UgX19uZXdfXyBub3QgX19pbml0X18KKyAgICBkZWYgX19uZXdfXyhjbHMsIHZhbHVlPSIwIiwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgZGVjaW1hbCBwb2ludCBpbnN0YW5jZS4KKworICAgICAgICA+Pj4gRGVjaW1hbCgnMy4xNCcpICAgICAgICAgICAgICAjIHN0cmluZyBpbnB1dAorICAgICAgICBEZWNpbWFsKCczLjE0JykKKyAgICAgICAgPj4+IERlY2ltYWwoKDAsICgzLCAxLCA0KSwgLTIpKSAgIyB0dXBsZSAoc2lnbiwgZGlnaXRfdHVwbGUsIGV4cG9uZW50KQorICAgICAgICBEZWNpbWFsKCczLjE0JykKKyAgICAgICAgPj4+IERlY2ltYWwoMzE0KSAgICAgICAgICAgICAgICAgIyBpbnQKKyAgICAgICAgRGVjaW1hbCgnMzE0JykKKyAgICAgICAgPj4+IERlY2ltYWwoRGVjaW1hbCgzMTQpKSAgICAgICAgIyBhbm90aGVyIGRlY2ltYWwgaW5zdGFuY2UKKyAgICAgICAgRGVjaW1hbCgnMzE0JykKKyAgICAgICAgPj4+IERlY2ltYWwoJyAgMy4xNCAgXFxuJykgICAgICAgICMgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBva2F5CisgICAgICAgIERlY2ltYWwoJzMuMTQnKQorICAgICAgICAiIiIKKworICAgICAgICAjIE5vdGUgdGhhdCB0aGUgY29lZmZpY2llbnQsIHNlbGYuX2ludCwgaXMgYWN0dWFsbHkgc3RvcmVkIGFzCisgICAgICAgICMgYSBzdHJpbmcgcmF0aGVyIHRoYW4gYXMgYSB0dXBsZSBvZiBkaWdpdHMuICBUaGlzIHNwZWVkcyB1cAorICAgICAgICAjIHRoZSAiZGlnaXRzIHRvIGludGVnZXIiIGFuZCAiaW50ZWdlciB0byBkaWdpdHMiIGNvbnZlcnNpb25zCisgICAgICAgICMgdGhhdCBhcmUgdXNlZCBpbiBhbG1vc3QgZXZlcnkgYXJpdGhtZXRpYyBvcGVyYXRpb24gb24KKyAgICAgICAgIyBEZWNpbWFscy4gIFRoaXMgaXMgYW4gaW50ZXJuYWwgZGV0YWlsOiB0aGUgYXNfdHVwbGUgZnVuY3Rpb24KKyAgICAgICAgIyBhbmQgdGhlIERlY2ltYWwgY29uc3RydWN0b3Igc3RpbGwgZGVhbCB3aXRoIHR1cGxlcyBvZgorICAgICAgICAjIGRpZ2l0cy4KKworICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQorCisgICAgICAgICMgRnJvbSBhIHN0cmluZworICAgICAgICAjIFJFcyBpbnNpc3Qgb24gcmVhbCBzdHJpbmdzLCBzbyB3ZSBjYW4gdG9vLgorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICAgICAgbSA9IF9wYXJzZXIodmFsdWUuc3RyaXAoKSkKKyAgICAgICAgICAgIGlmIG0gaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoQ29udmVyc2lvblN5bnRheCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgbGl0ZXJhbCBmb3IgRGVjaW1hbDogJXIiICUgdmFsdWUpCisKKyAgICAgICAgICAgIGlmIG0uZ3JvdXAoJ3NpZ24nKSA9PSAiLSI6CisgICAgICAgICAgICAgICAgc2VsZi5fc2lnbiA9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fc2lnbiA9IDAKKyAgICAgICAgICAgIGludHBhcnQgPSBtLmdyb3VwKCdpbnQnKQorICAgICAgICAgICAgaWYgaW50cGFydCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAjIGZpbml0ZSBudW1iZXIKKyAgICAgICAgICAgICAgICBmcmFjcGFydCA9IG0uZ3JvdXAoJ2ZyYWMnKSBvciAnJworICAgICAgICAgICAgICAgIGV4cCA9IGludChtLmdyb3VwKCdleHAnKSBvciAnMCcpCisgICAgICAgICAgICAgICAgc2VsZi5faW50ID0gc3RyKGludChpbnRwYXJ0K2ZyYWNwYXJ0KSkKKyAgICAgICAgICAgICAgICBzZWxmLl9leHAgPSBleHAgLSBsZW4oZnJhY3BhcnQpCisgICAgICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IEZhbHNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRpYWcgPSBtLmdyb3VwKCdkaWFnJykKKyAgICAgICAgICAgICAgICBpZiBkaWFnIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAjIE5hTgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnQgPSBzdHIoaW50KGRpYWcgb3IgJzAnKSkubHN0cmlwKCcwJykKKyAgICAgICAgICAgICAgICAgICAgaWYgbS5ncm91cCgnc2lnbmFsJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHAgPSAnTicKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCA9ICduJworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgaW5maW5pdHkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faW50ID0gJzAnCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCA9ICdGJworICAgICAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgPSBUcnVlCisgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgICMgRnJvbSBhbiBpbnRlZ2VyCisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGludCk6CisgICAgICAgICAgICBpZiB2YWx1ZSA+PSAwOgorICAgICAgICAgICAgICAgIHNlbGYuX3NpZ24gPSAwCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX3NpZ24gPSAxCisgICAgICAgICAgICBzZWxmLl9leHAgPSAwCisgICAgICAgICAgICBzZWxmLl9pbnQgPSBzdHIoYWJzKHZhbHVlKSkKKyAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgPSBGYWxzZQorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAjIEZyb20gYW5vdGhlciBkZWNpbWFsCisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIERlY2ltYWwpOgorICAgICAgICAgICAgc2VsZi5fZXhwICA9IHZhbHVlLl9leHAKKyAgICAgICAgICAgIHNlbGYuX3NpZ24gPSB2YWx1ZS5fc2lnbgorICAgICAgICAgICAgc2VsZi5faW50ICA9IHZhbHVlLl9pbnQKKyAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgID0gdmFsdWUuX2lzX3NwZWNpYWwKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgIyBGcm9tIGFuIGludGVybmFsIHdvcmtpbmcgdmFsdWUKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgX1dvcmtSZXApOgorICAgICAgICAgICAgc2VsZi5fc2lnbiA9IHZhbHVlLnNpZ24KKyAgICAgICAgICAgIHNlbGYuX2ludCA9IHN0cih2YWx1ZS5pbnQpCisgICAgICAgICAgICBzZWxmLl9leHAgPSBpbnQodmFsdWUuZXhwKQorICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IEZhbHNlCisgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgICMgdHVwbGUvbGlzdCBjb252ZXJzaW9uIChwb3NzaWJseSBmcm9tIGFzX3R1cGxlKCkpCisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIChsaXN0LHR1cGxlKSk6CisgICAgICAgICAgICBpZiBsZW4odmFsdWUpICE9IDM6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCB0dXBsZSBzaXplIGluIGNyZWF0aW9uIG9mIERlY2ltYWwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zyb20gbGlzdCBvciB0dXBsZS4gIFRoZSBsaXN0IG9yIHR1cGxlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG91bGQgaGF2ZSBleGFjdGx5IHRocmVlIGVsZW1lbnRzLicpCisgICAgICAgICAgICAjIHByb2Nlc3Mgc2lnbi4gIFRoZSBpc2luc3RhbmNlIHRlc3QgcmVqZWN0cyBmbG9hdHMKKyAgICAgICAgICAgIGlmIG5vdCAoaXNpbnN0YW5jZSh2YWx1ZVswXSwgaW50KSBhbmQgdmFsdWVbMF0gaW4gKDAsMSkpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgc2lnbi4gIFRoZSBmaXJzdCB2YWx1ZSBpbiB0aGUgdHVwbGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNob3VsZCBiZSBhbiBpbnRlZ2VyOyBlaXRoZXIgMCBmb3IgYSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG9zaXRpdmUgbnVtYmVyIG9yIDEgZm9yIGEgbmVnYXRpdmUgbnVtYmVyLiIpCisgICAgICAgICAgICBzZWxmLl9zaWduID0gdmFsdWVbMF0KKyAgICAgICAgICAgIGlmIHZhbHVlWzJdID09ICdGJzoKKyAgICAgICAgICAgICAgICAjIGluZmluaXR5OiB2YWx1ZVsxXSBpcyBpZ25vcmVkCisgICAgICAgICAgICAgICAgc2VsZi5faW50ID0gJzAnCisgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gdmFsdWVbMl0KKyAgICAgICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIHByb2Nlc3MgYW5kIHZhbGlkYXRlIHRoZSBkaWdpdHMgaW4gdmFsdWVbMV0KKyAgICAgICAgICAgICAgICBkaWdpdHMgPSBbXQorICAgICAgICAgICAgICAgIGZvciBkaWdpdCBpbiB2YWx1ZVsxXToKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShkaWdpdCwgaW50KSBhbmQgMCA8PSBkaWdpdCA8PSA5OgorICAgICAgICAgICAgICAgICAgICAgICAgIyBza2lwIGxlYWRpbmcgemVyb3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRpZ2l0cyBvciBkaWdpdCAhPSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2l0cy5hcHBlbmQoZGlnaXQpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJUaGUgc2Vjb25kIHZhbHVlIGluIHRoZSB0dXBsZSBtdXN0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlIGNvbXBvc2VkIG9mIGludGVnZXJzIGluIHRoZSByYW5nZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwIHRocm91Z2ggOS4iKQorICAgICAgICAgICAgICAgIGlmIHZhbHVlWzJdIGluICgnbicsICdOJyk6CisgICAgICAgICAgICAgICAgICAgICMgTmFOOiBkaWdpdHMgZm9ybSB0aGUgZGlhZ25vc3RpYworICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnQgPSAnJy5qb2luKG1hcChzdHIsIGRpZ2l0cykpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCA9IHZhbHVlWzJdCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgPSBUcnVlCisgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlWzJdLCBpbnQpOgorICAgICAgICAgICAgICAgICAgICAjIGZpbml0ZSBudW1iZXI6IGRpZ2l0cyBnaXZlIHRoZSBjb2VmZmljaWVudAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnQgPSAnJy5qb2luKG1hcChzdHIsIGRpZ2l0cyBvciBbMF0pKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHAgPSB2YWx1ZVsyXQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsID0gRmFsc2UKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJUaGUgdGhpcmQgdmFsdWUgaW4gdGhlIHR1cGxlIG11c3QgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZSBhbiBpbnRlZ2VyLCBvciBvbmUgb2YgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5ncyAnRicsICduJywgJ04nLiIpCisgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGZsb2F0KToKKyAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihGbG9hdE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAic3RyaWN0IHNlbWFudGljcyBmb3IgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMgYXJlICIKKyAgICAgICAgICAgICAgICAiZW5hYmxlZCIpCisgICAgICAgICAgICB2YWx1ZSA9IERlY2ltYWwuZnJvbV9mbG9hdCh2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuX2V4cCAgPSB2YWx1ZS5fZXhwCisgICAgICAgICAgICBzZWxmLl9zaWduID0gdmFsdWUuX3NpZ24KKyAgICAgICAgICAgIHNlbGYuX2ludCAgPSB2YWx1ZS5faW50CisgICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsICA9IHZhbHVlLl9pc19zcGVjaWFsCisgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2Fubm90IGNvbnZlcnQgJXIgdG8gRGVjaW1hbCIgJSB2YWx1ZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tX2Zsb2F0KGNscywgZik6CisgICAgICAgICIiIkNvbnZlcnRzIGEgZmxvYXQgdG8gYSBkZWNpbWFsIG51bWJlciwgZXhhY3RseS4KKworICAgICAgICBOb3RlIHRoYXQgRGVjaW1hbC5mcm9tX2Zsb2F0KDAuMSkgaXMgbm90IHRoZSBzYW1lIGFzIERlY2ltYWwoJzAuMScpLgorICAgICAgICBTaW5jZSAwLjEgaXMgbm90IGV4YWN0bHkgcmVwcmVzZW50YWJsZSBpbiBiaW5hcnkgZmxvYXRpbmcgcG9pbnQsIHRoZQorICAgICAgICB2YWx1ZSBpcyBzdG9yZWQgYXMgdGhlIG5lYXJlc3QgcmVwcmVzZW50YWJsZSB2YWx1ZSB3aGljaCBpcworICAgICAgICAweDEuOTk5OTk5OTk5OTk5YXAtNC4gIFRoZSBleGFjdCBlcXVpdmFsZW50IG9mIHRoZSB2YWx1ZSBpbiBkZWNpbWFsCisgICAgICAgIGlzIDAuMTAwMDAwMDAwMDAwMDAwMDA1NTUxMTE1MTIzMTI1NzgyNzAyMTE4MTU4MzQwNDU0MTAxNTYyNS4KKworICAgICAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KDAuMSkKKyAgICAgICAgRGVjaW1hbCgnMC4xMDAwMDAwMDAwMDAwMDAwMDU1NTExMTUxMjMxMjU3ODI3MDIxMTgxNTgzNDA0NTQxMDE1NjI1JykKKyAgICAgICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnbmFuJykpCisgICAgICAgIERlY2ltYWwoJ05hTicpCisgICAgICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ2luZicpKQorICAgICAgICBEZWNpbWFsKCdJbmZpbml0eScpCisgICAgICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoLWZsb2F0KCdpbmYnKSkKKyAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKKyAgICAgICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdCgtMC4wKQorICAgICAgICBEZWNpbWFsKCctMCcpCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZiwgaW50KTogICAgICAgICAgICAgICAgIyBoYW5kbGUgaW50ZWdlciBpbnB1dHMKKyAgICAgICAgICAgIHJldHVybiBjbHMoZikKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZiwgZmxvYXQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJhcmd1bWVudCBtdXN0IGJlIGludCBvciBmbG9hdC4iKQorICAgICAgICBpZiBfbWF0aC5pc2luZihmKSBvciBfbWF0aC5pc25hbihmKToKKyAgICAgICAgICAgIHJldHVybiBjbHMocmVwcihmKSkKKyAgICAgICAgaWYgX21hdGguY29weXNpZ24oMS4wLCBmKSA9PSAxLjA6CisgICAgICAgICAgICBzaWduID0gMAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2lnbiA9IDEKKyAgICAgICAgbiwgZCA9IGFicyhmKS5hc19pbnRlZ2VyX3JhdGlvKCkKKyAgICAgICAgayA9IGQuYml0X2xlbmd0aCgpIC0gMQorICAgICAgICByZXN1bHQgPSBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sIHN0cihuKjUqKmspLCAtaykKKyAgICAgICAgaWYgY2xzIGlzIERlY2ltYWw6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gY2xzKHJlc3VsdCkKKworICAgIGRlZiBfaXNuYW4oc2VsZik6CisgICAgICAgICIiIlJldHVybnMgd2hldGhlciB0aGUgbnVtYmVyIGlzIG5vdCBhY3R1YWxseSBvbmUuCisKKyAgICAgICAgMCBpZiBhIG51bWJlcgorICAgICAgICAxIGlmIE5hTgorICAgICAgICAyIGlmIHNOYU4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBleHAgPSBzZWxmLl9leHAKKyAgICAgICAgICAgIGlmIGV4cCA9PSAnbic6CisgICAgICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgICAgIGVsaWYgZXhwID09ICdOJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gMgorICAgICAgICByZXR1cm4gMAorCisgICAgZGVmIF9pc2luZmluaXR5KHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIHdoZXRoZXIgdGhlIG51bWJlciBpcyBpbmZpbml0ZQorCisgICAgICAgIDAgaWYgZmluaXRlIG9yIG5vdCBhIG51bWJlcgorICAgICAgICAxIGlmICtJTkYKKyAgICAgICAgLTEgaWYgLUlORgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fZXhwID09ICdGJzoKKyAgICAgICAgICAgIGlmIHNlbGYuX3NpZ246CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xCisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICByZXR1cm4gMAorCisgICAgZGVmIF9jaGVja19uYW5zKHNlbGYsIG90aGVyPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgd2hldGhlciB0aGUgbnVtYmVyIGlzIG5vdCBhY3R1YWxseSBvbmUuCisKKyAgICAgICAgaWYgc2VsZiwgb3RoZXIgYXJlIHNOYU4sIHNpZ25hbAorICAgICAgICBpZiBzZWxmLCBvdGhlciBhcmUgTmFOIHJldHVybiBuYW4KKyAgICAgICAgcmV0dXJuIDAKKworICAgICAgICBEb25lIGJlZm9yZSBvcGVyYXRpb25zLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmX2lzX25hbiA9IHNlbGYuX2lzbmFuKCkKKyAgICAgICAgaWYgb3RoZXIgaXMgTm9uZToKKyAgICAgICAgICAgIG90aGVyX2lzX25hbiA9IEZhbHNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvdGhlcl9pc19uYW4gPSBvdGhlci5faXNuYW4oKQorCisgICAgICAgIGlmIHNlbGZfaXNfbmFuIG9yIG90aGVyX2lzX25hbjoKKyAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgICAgIGlmIHNlbGZfaXNfbmFuID09IDI6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdzTmFOJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKQorICAgICAgICAgICAgaWYgb3RoZXJfaXNfbmFuID09IDI6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdzTmFOJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcikKKyAgICAgICAgICAgIGlmIHNlbGZfaXNfbmFuOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maXhfbmFuKGNvbnRleHQpCisKKyAgICAgICAgICAgIHJldHVybiBvdGhlci5fZml4X25hbihjb250ZXh0KQorICAgICAgICByZXR1cm4gMAorCisgICAgZGVmIF9jb21wYXJlX2NoZWNrX25hbnMoc2VsZiwgb3RoZXIsIGNvbnRleHQpOgorICAgICAgICAiIiJWZXJzaW9uIG9mIF9jaGVja19uYW5zIHVzZWQgZm9yIHRoZSBzaWduYWxpbmcgY29tcGFyaXNvbnMKKyAgICAgICAgY29tcGFyZV9zaWduYWwsIF9fbGVfXywgX19sdF9fLCBfX2dlX18sIF9fZ3RfXy4KKworICAgICAgICBTaWduYWwgSW52YWxpZE9wZXJhdGlvbiBpZiBlaXRoZXIgc2VsZiBvciBvdGhlciBpcyBhIChxdWlldAorICAgICAgICBvciBzaWduYWxpbmcpIE5hTi4gIFNpZ25hbGluZyBOYU5zIHRha2UgcHJlY2VkZW5jZSBvdmVyIHF1aWV0CisgICAgICAgIE5hTnMuCisKKyAgICAgICAgUmV0dXJuIDAgaWYgbmVpdGhlciBvcGVyYW5kIGlzIGEgTmFOLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGlmIHNlbGYuaXNfc25hbigpOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBpbnZvbHZpbmcgc05hTicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpCisgICAgICAgICAgICBlbGlmIG90aGVyLmlzX3NuYW4oKToKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gaW52b2x2aW5nIHNOYU4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcikKKyAgICAgICAgICAgIGVsaWYgc2VsZi5pc19xbmFuKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wYXJpc29uIGludm9sdmluZyBOYU4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKQorICAgICAgICAgICAgZWxpZiBvdGhlci5pc19xbmFuKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wYXJpc29uIGludm9sdmluZyBOYU4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcikKKyAgICAgICAgcmV0dXJuIDAKKworICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBub256ZXJvOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgorCisgICAgICAgIE5hTnMgYW5kIGluZmluaXRpZXMgYXJlIGNvbnNpZGVyZWQgbm9uemVyby4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9pc19zcGVjaWFsIG9yIHNlbGYuX2ludCAhPSAnMCcKKworICAgIGRlZiBfY21wKHNlbGYsIG90aGVyKToKKyAgICAgICAgIiIiQ29tcGFyZSB0aGUgdHdvIG5vbi1OYU4gZGVjaW1hbCBpbnN0YW5jZXMgc2VsZiBhbmQgb3RoZXIuCisKKyAgICAgICAgUmV0dXJucyAtMSBpZiBzZWxmIDwgb3RoZXIsIDAgaWYgc2VsZiA9PSBvdGhlciBhbmQgMQorICAgICAgICBpZiBzZWxmID4gb3RoZXIuICBUaGlzIHJvdXRpbmUgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5LiIiIgorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBzZWxmX2luZiA9IHNlbGYuX2lzaW5maW5pdHkoKQorICAgICAgICAgICAgb3RoZXJfaW5mID0gb3RoZXIuX2lzaW5maW5pdHkoKQorICAgICAgICAgICAgaWYgc2VsZl9pbmYgPT0gb3RoZXJfaW5mOgorICAgICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICBlbGlmIHNlbGZfaW5mIDwgb3RoZXJfaW5mOgorICAgICAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgICMgY2hlY2sgZm9yIHplcm9zOyAgRGVjaW1hbCgnMCcpID09IERlY2ltYWwoJy0wJykKKyAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICBpZiBub3Qgb3RoZXI6CisgICAgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIC0oKC0xKSoqb3RoZXIuX3NpZ24pCisgICAgICAgIGlmIG5vdCBvdGhlcjoKKyAgICAgICAgICAgIHJldHVybiAoLTEpKipzZWxmLl9zaWduCisKKyAgICAgICAgIyBJZiBkaWZmZXJlbnQgc2lnbnMsIG5lZyBvbmUgaXMgbGVzcworICAgICAgICBpZiBvdGhlci5fc2lnbiA8IHNlbGYuX3NpZ246CisgICAgICAgICAgICByZXR1cm4gLTEKKyAgICAgICAgaWYgc2VsZi5fc2lnbiA8IG90aGVyLl9zaWduOgorICAgICAgICAgICAgcmV0dXJuIDEKKworICAgICAgICBzZWxmX2FkanVzdGVkID0gc2VsZi5hZGp1c3RlZCgpCisgICAgICAgIG90aGVyX2FkanVzdGVkID0gb3RoZXIuYWRqdXN0ZWQoKQorICAgICAgICBpZiBzZWxmX2FkanVzdGVkID09IG90aGVyX2FkanVzdGVkOgorICAgICAgICAgICAgc2VsZl9wYWRkZWQgPSBzZWxmLl9pbnQgKyAnMCcqKHNlbGYuX2V4cCAtIG90aGVyLl9leHApCisgICAgICAgICAgICBvdGhlcl9wYWRkZWQgPSBvdGhlci5faW50ICsgJzAnKihvdGhlci5fZXhwIC0gc2VsZi5fZXhwKQorICAgICAgICAgICAgaWYgc2VsZl9wYWRkZWQgPT0gb3RoZXJfcGFkZGVkOgorICAgICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICBlbGlmIHNlbGZfcGFkZGVkIDwgb3RoZXJfcGFkZGVkOgorICAgICAgICAgICAgICAgIHJldHVybiAtKC0xKSoqc2VsZi5fc2lnbgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gKC0xKSoqc2VsZi5fc2lnbgorICAgICAgICBlbGlmIHNlbGZfYWRqdXN0ZWQgPiBvdGhlcl9hZGp1c3RlZDoKKyAgICAgICAgICAgIHJldHVybiAoLTEpKipzZWxmLl9zaWduCisgICAgICAgIGVsc2U6ICMgc2VsZl9hZGp1c3RlZCA8IG90aGVyX2FkanVzdGVkCisgICAgICAgICAgICByZXR1cm4gLSgoLTEpKipzZWxmLl9zaWduKQorCisgICAgIyBOb3RlOiBUaGUgRGVjaW1hbCBzdGFuZGFyZCBkb2Vzbid0IGNvdmVyIHJpY2ggY29tcGFyaXNvbnMgZm9yCisgICAgIyBEZWNpbWFscy4gIEluIHBhcnRpY3VsYXIsIHRoZSBzcGVjaWZpY2F0aW9uIGlzIHNpbGVudCBvbiB0aGUKKyAgICAjIHN1YmplY3Qgb2Ygd2hhdCBzaG91bGQgaGFwcGVuIGZvciBhIGNvbXBhcmlzb24gaW52b2x2aW5nIGEgTmFOLgorICAgICMgV2UgdGFrZSB0aGUgZm9sbG93aW5nIGFwcHJvYWNoOgorICAgICMKKyAgICAjICAgPT0gY29tcGFyaXNvbnMgaW52b2x2aW5nIGEgcXVpZXQgTmFOIGFsd2F5cyByZXR1cm4gRmFsc2UKKyAgICAjICAgIT0gY29tcGFyaXNvbnMgaW52b2x2aW5nIGEgcXVpZXQgTmFOIGFsd2F5cyByZXR1cm4gVHJ1ZQorICAgICMgICA9PSBvciAhPSBjb21wYXJpc29ucyBpbnZvbHZpbmcgYSBzaWduYWxpbmcgTmFOIHNpZ25hbAorICAgICMgICAgICBJbnZhbGlkT3BlcmF0aW9uLCBhbmQgcmV0dXJuIEZhbHNlIG9yIFRydWUgYXMgYWJvdmUgaWYgdGhlCisgICAgIyAgICAgIEludmFsaWRPcGVyYXRpb24gaXMgbm90IHRyYXBwZWQuCisgICAgIyAgIDwsID4sIDw9IGFuZCA+PSBjb21wYXJpc29ucyBpbnZvbHZpbmcgYSAocXVpZXQgb3Igc2lnbmFsaW5nKQorICAgICMgICAgICBOYU4gc2lnbmFsIEludmFsaWRPcGVyYXRpb24sIGFuZCByZXR1cm4gRmFsc2UgaWYgdGhlCisgICAgIyAgICAgIEludmFsaWRPcGVyYXRpb24gaXMgbm90IHRyYXBwZWQuCisgICAgIworICAgICMgVGhpcyBiZWhhdmlvciBpcyBkZXNpZ25lZCB0byBjb25mb3JtIGFzIGNsb3NlbHkgYXMgcG9zc2libGUgdG8KKyAgICAjIHRoYXQgc3BlY2lmaWVkIGJ5IElFRUUgNzU0LgorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgc2VsZiwgb3RoZXIgPSBfY29udmVydF9mb3JfY29tcGFyaXNvbihzZWxmLCBvdGhlciwgZXF1YWxpdHlfb3A9VHJ1ZSkKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKyAgICAgICAgaWYgc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPT0gMAorCisgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgc2VsZiwgb3RoZXIgPSBfY29udmVydF9mb3JfY29tcGFyaXNvbihzZWxmLCBvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKyAgICAgICAgYW5zID0gc2VsZi5fY29tcGFyZV9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPCAwCisKKyAgICBkZWYgX19sZV9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICBzZWxmLCBvdGhlciA9IF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorICAgICAgICBhbnMgPSBzZWxmLl9jb21wYXJlX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA8PSAwCisKKyAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICBzZWxmLCBvdGhlciA9IF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorICAgICAgICBhbnMgPSBzZWxmLl9jb21wYXJlX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA+IDAKKworICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgIHNlbGYsIG90aGVyID0gX2NvbnZlcnRfZm9yX2NvbXBhcmlzb24oc2VsZiwgb3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisgICAgICAgIGFucyA9IHNlbGYuX2NvbXBhcmVfY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpID49IDAKKworICAgIGRlZiBjb21wYXJlKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJDb21wYXJlIHNlbGYgdG8gb3RoZXIuICBSZXR1cm4gYSBkZWNpbWFsIHZhbHVlOgorCisgICAgICAgIGEgb3IgYiBpcyBhIE5hTiA9PT4gRGVjaW1hbCgnTmFOJykKKyAgICAgICAgYSA8IGIgICAgICAgICAgID09PiBEZWNpbWFsKCctMScpCisgICAgICAgIGEgPT0gYiAgICAgICAgICA9PT4gRGVjaW1hbCgnMCcpCisgICAgICAgIGEgPiBiICAgICAgICAgICA9PT4gRGVjaW1hbCgnMScpCisgICAgICAgICIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgIyBDb21wYXJlKE5hTiwgTmFOKSA9IE5hTgorICAgICAgICBpZiAoc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlciBhbmQgb3RoZXIuX2lzX3NwZWNpYWwpOgorICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZi5fY21wKG90aGVyKSkKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgIiIieC5fX2hhc2hfXygpIDw9PT4gaGFzaCh4KSIiIgorCisgICAgICAgICMgSW4gb3JkZXIgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGhhc2ggb2YgYSBEZWNpbWFsIGluc3RhbmNlCisgICAgICAgICMgYWdyZWVzIHdpdGggdGhlIGhhc2ggb2YgYSBudW1lcmljYWxseSBlcXVhbCBpbnRlZ2VyLCBmbG9hdAorICAgICAgICAjIG9yIEZyYWN0aW9uLCB3ZSBmb2xsb3cgdGhlIHJ1bGVzIGZvciBudW1lcmljIGhhc2hlcyBvdXRsaW5lZAorICAgICAgICAjIGluIHRoZSBkb2N1bWVudGF0aW9uLiAgKFNlZSBsaWJyYXJ5IGRvY3MsICdCdWlsdC1pbiBUeXBlcycpLgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgaWYgc2VsZi5pc19zbmFuKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdDYW5ub3QgaGFzaCBhIHNpZ25hbGluZyBOYU4gdmFsdWUuJykKKyAgICAgICAgICAgIGVsaWYgc2VsZi5pc19uYW4oKToKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5SEFTSF9OQU4KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1fUHlIQVNIX0lORgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfUHlIQVNIX0lORgorCisgICAgICAgIGlmIHNlbGYuX2V4cCA+PSAwOgorICAgICAgICAgICAgZXhwX2hhc2ggPSBwb3coMTAsIHNlbGYuX2V4cCwgX1B5SEFTSF9NT0RVTFVTKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZXhwX2hhc2ggPSBwb3coX1B5SEFTSF8xMElOViwgLXNlbGYuX2V4cCwgX1B5SEFTSF9NT0RVTFVTKQorICAgICAgICBoYXNoXyA9IGludChzZWxmLl9pbnQpICogZXhwX2hhc2ggJSBfUHlIQVNIX01PRFVMVVMKKyAgICAgICAgYW5zID0gaGFzaF8gaWYgc2VsZiA+PSAwIGVsc2UgLWhhc2hfCisgICAgICAgIHJldHVybiAtMiBpZiBhbnMgPT0gLTEgZWxzZSBhbnMKKworICAgIGRlZiBhc190dXBsZShzZWxmKToKKyAgICAgICAgIiIiUmVwcmVzZW50cyB0aGUgbnVtYmVyIGFzIGEgdHJpcGxlIHR1cGxlLgorCisgICAgICAgIFRvIHNob3cgdGhlIGludGVybmFscyBleGFjdGx5IGFzIHRoZXkgYXJlLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIERlY2ltYWxUdXBsZShzZWxmLl9zaWduLCB0dXBsZShtYXAoaW50LCBzZWxmLl9pbnQpKSwgc2VsZi5fZXhwKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAiIiJSZXByZXNlbnRzIHRoZSBudW1iZXIgYXMgYW4gaW5zdGFuY2Ugb2YgRGVjaW1hbC4iIiIKKyAgICAgICAgIyBJbnZhcmlhbnQ6ICBldmFsKHJlcHIoZCkpID09IGQKKyAgICAgICAgcmV0dXJuICJEZWNpbWFsKCclcycpIiAlIHN0cihzZWxmKQorCisgICAgZGVmIF9fc3RyX18oc2VsZiwgZW5nPUZhbHNlLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIgaW4gc2NpZW50aWZpYyBub3RhdGlvbi4KKworICAgICAgICBDYXB0dXJlcyBhbGwgb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSB1bmRlcmx5aW5nIHJlcHJlc2VudGF0aW9uLgorICAgICAgICAiIiIKKworICAgICAgICBzaWduID0gWycnLCAnLSddW3NlbGYuX3NpZ25dCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBpZiBzZWxmLl9leHAgPT0gJ0YnOgorICAgICAgICAgICAgICAgIHJldHVybiBzaWduICsgJ0luZmluaXR5JworICAgICAgICAgICAgZWxpZiBzZWxmLl9leHAgPT0gJ24nOgorICAgICAgICAgICAgICAgIHJldHVybiBzaWduICsgJ05hTicgKyBzZWxmLl9pbnQKKyAgICAgICAgICAgIGVsc2U6ICMgc2VsZi5fZXhwID09ICdOJworICAgICAgICAgICAgICAgIHJldHVybiBzaWduICsgJ3NOYU4nICsgc2VsZi5faW50CisKKyAgICAgICAgIyBudW1iZXIgb2YgZGlnaXRzIG9mIHNlbGYuX2ludCB0byBsZWZ0IG9mIGRlY2ltYWwgcG9pbnQKKyAgICAgICAgbGVmdGRpZ2l0cyA9IHNlbGYuX2V4cCArIGxlbihzZWxmLl9pbnQpCisKKyAgICAgICAgIyBkb3RwbGFjZSBpcyBudW1iZXIgb2YgZGlnaXRzIG9mIHNlbGYuX2ludCB0byB0aGUgbGVmdCBvZiB0aGUKKyAgICAgICAgIyBkZWNpbWFsIHBvaW50IGluIHRoZSBtYW50aXNzYSBvZiB0aGUgb3V0cHV0IHN0cmluZyAodGhhdCBpcywKKyAgICAgICAgIyBhZnRlciBhZGp1c3RpbmcgdGhlIGV4cG9uZW50KQorICAgICAgICBpZiBzZWxmLl9leHAgPD0gMCBhbmQgbGVmdGRpZ2l0cyA+IC02OgorICAgICAgICAgICAgIyBubyBleHBvbmVudCByZXF1aXJlZAorICAgICAgICAgICAgZG90cGxhY2UgPSBsZWZ0ZGlnaXRzCisgICAgICAgIGVsaWYgbm90IGVuZzoKKyAgICAgICAgICAgICMgdXN1YWwgc2NpZW50aWZpYyBub3RhdGlvbjogMSBkaWdpdCBvbiBsZWZ0IG9mIHRoZSBwb2ludAorICAgICAgICAgICAgZG90cGxhY2UgPSAxCisgICAgICAgIGVsaWYgc2VsZi5faW50ID09ICcwJzoKKyAgICAgICAgICAgICMgZW5naW5lZXJpbmcgbm90YXRpb24sIHplcm8KKyAgICAgICAgICAgIGRvdHBsYWNlID0gKGxlZnRkaWdpdHMgKyAxKSAlIDMgLSAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIGVuZ2luZWVyaW5nIG5vdGF0aW9uLCBub256ZXJvCisgICAgICAgICAgICBkb3RwbGFjZSA9IChsZWZ0ZGlnaXRzIC0gMSkgJSAzICsgMQorCisgICAgICAgIGlmIGRvdHBsYWNlIDw9IDA6CisgICAgICAgICAgICBpbnRwYXJ0ID0gJzAnCisgICAgICAgICAgICBmcmFjcGFydCA9ICcuJyArICcwJyooLWRvdHBsYWNlKSArIHNlbGYuX2ludAorICAgICAgICBlbGlmIGRvdHBsYWNlID49IGxlbihzZWxmLl9pbnQpOgorICAgICAgICAgICAgaW50cGFydCA9IHNlbGYuX2ludCsnMCcqKGRvdHBsYWNlLWxlbihzZWxmLl9pbnQpKQorICAgICAgICAgICAgZnJhY3BhcnQgPSAnJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaW50cGFydCA9IHNlbGYuX2ludFs6ZG90cGxhY2VdCisgICAgICAgICAgICBmcmFjcGFydCA9ICcuJyArIHNlbGYuX2ludFtkb3RwbGFjZTpdCisgICAgICAgIGlmIGxlZnRkaWdpdHMgPT0gZG90cGxhY2U6CisgICAgICAgICAgICBleHAgPSAnJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgIGV4cCA9IFsnZScsICdFJ11bY29udGV4dC5jYXBpdGFsc10gKyAiJStkIiAlIChsZWZ0ZGlnaXRzLWRvdHBsYWNlKQorCisgICAgICAgIHJldHVybiBzaWduICsgaW50cGFydCArIGZyYWNwYXJ0ICsgZXhwCisKKyAgICBkZWYgdG9fZW5nX3N0cmluZyhzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJDb252ZXJ0IHRvIGVuZ2luZWVyaW5nLXR5cGUgc3RyaW5nLgorCisgICAgICAgIEVuZ2luZWVyaW5nIG5vdGF0aW9uIGhhcyBhbiBleHBvbmVudCB3aGljaCBpcyBhIG11bHRpcGxlIG9mIDMsIHNvIHRoZXJlCisgICAgICAgIGFyZSB1cCB0byAzIGRpZ2l0cyBsZWZ0IG9mIHRoZSBkZWNpbWFsIHBsYWNlLgorCisgICAgICAgIFNhbWUgcnVsZXMgZm9yIHdoZW4gaW4gZXhwb25lbnRpYWwgYW5kIHdoZW4gYXMgYSB2YWx1ZSBhcyBpbiBfX3N0cl9fLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX19zdHJfXyhlbmc9VHJ1ZSwgY29udGV4dD1jb250ZXh0KQorCisgICAgZGVmIF9fbmVnX18oc2VsZiwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyBhIGNvcHkgd2l0aCB0aGUgc2lnbiBzd2l0Y2hlZC4KKworICAgICAgICBSb3VuZHMsIGlmIGl0IGhhcyByZWFzb24uCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCisgICAgICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBpZiBub3Qgc2VsZiBhbmQgY29udGV4dC5yb3VuZGluZyAhPSBST1VORF9GTE9PUjoKKyAgICAgICAgICAgICMgLURlY2ltYWwoJzAnKSBpcyBEZWNpbWFsKCcwJyksIG5vdCBEZWNpbWFsKCctMCcpLCBleGNlcHQKKyAgICAgICAgICAgICMgaW4gUk9VTkRfRkxPT1Igcm91bmRpbmcgbW9kZS4KKyAgICAgICAgICAgIGFucyA9IHNlbGYuY29weV9hYnMoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYW5zID0gc2VsZi5jb3B5X25lZ2F0ZSgpCisKKyAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCisKKyAgICBkZWYgX19wb3NfXyhzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIGEgY29weSwgdW5sZXNzIGl0IGlzIGEgc05hTi4KKworICAgICAgICBSb3VuZHMgdGhlIG51bWJlciAoaWYgbW9yZSB0aGVuIHByZWNpc2lvbiBkaWdpdHMpCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCisgICAgICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBpZiBub3Qgc2VsZiBhbmQgY29udGV4dC5yb3VuZGluZyAhPSBST1VORF9GTE9PUjoKKyAgICAgICAgICAgICMgKyAoLTApID0gMCwgZXhjZXB0IGluIFJPVU5EX0ZMT09SIHJvdW5kaW5nIG1vZGUuCisgICAgICAgICAgICBhbnMgPSBzZWxmLmNvcHlfYWJzKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFucyA9IERlY2ltYWwoc2VsZikKKworICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKKworICAgIGRlZiBfX2Fic19fKHNlbGYsIHJvdW5kPVRydWUsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHNlbGYuCisKKyAgICAgICAgSWYgdGhlIGtleXdvcmQgYXJndW1lbnQgJ3JvdW5kJyBpcyBmYWxzZSwgZG8gbm90IHJvdW5kLiAgVGhlCisgICAgICAgIGV4cHJlc3Npb24gc2VsZi5fX2Fic19fKHJvdW5kPUZhbHNlKSBpcyBlcXVpdmFsZW50IHRvCisgICAgICAgIHNlbGYuY29weV9hYnMoKS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCByb3VuZDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNvcHlfYWJzKCkKKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCisgICAgICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIGlmIHNlbGYuX3NpZ246CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9fbmVnX18oY29udGV4dD1jb250ZXh0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYW5zID0gc2VsZi5fX3Bvc19fKGNvbnRleHQ9Y29udGV4dCkKKworICAgICAgICByZXR1cm4gYW5zCisKKyAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyBzZWxmICsgb3RoZXIuCisKKyAgICAgICAgLUlORiArIElORiAob3IgdGhlIHJldmVyc2UpIGNhdXNlIEludmFsaWRPcGVyYXRpb24gZXJyb3JzLgorICAgICAgICAiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICAgICAgIyBJZiBib3RoIElORiwgc2FtZSBzaWduID0+IHNhbWUgYXMgYm90aCwgb3Bwb3NpdGUgPT4gZXJyb3IuCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fc2lnbiAhPSBvdGhlci5fc2lnbiBhbmQgb3RoZXIuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICctSU5GICsgSU5GJykKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChvdGhlcikgICMgQ2FuJ3QgYm90aCBiZSBpbmZpbml0eSBoZXJlCisKKyAgICAgICAgZXhwID0gbWluKHNlbGYuX2V4cCwgb3RoZXIuX2V4cCkKKyAgICAgICAgbmVnYXRpdmV6ZXJvID0gMAorICAgICAgICBpZiBjb250ZXh0LnJvdW5kaW5nID09IFJPVU5EX0ZMT09SIGFuZCBzZWxmLl9zaWduICE9IG90aGVyLl9zaWduOgorICAgICAgICAgICAgIyBJZiB0aGUgYW5zd2VyIGlzIDAsIHRoZSBzaWduIHNob3VsZCBiZSBuZWdhdGl2ZSwgaW4gdGhpcyBjYXNlLgorICAgICAgICAgICAgbmVnYXRpdmV6ZXJvID0gMQorCisgICAgICAgIGlmIG5vdCBzZWxmIGFuZCBub3Qgb3RoZXI6CisgICAgICAgICAgICBzaWduID0gbWluKHNlbGYuX3NpZ24sIG90aGVyLl9zaWduKQorICAgICAgICAgICAgaWYgbmVnYXRpdmV6ZXJvOgorICAgICAgICAgICAgICAgIHNpZ24gPSAxCisgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sICcwJywgZXhwKQorICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiBhbnMKKyAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICBleHAgPSBtYXgoZXhwLCBvdGhlci5fZXhwIC0gY29udGV4dC5wcmVjLTEpCisgICAgICAgICAgICBhbnMgPSBvdGhlci5fcmVzY2FsZShleHAsIGNvbnRleHQucm91bmRpbmcpCisgICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIGFucworICAgICAgICBpZiBub3Qgb3RoZXI6CisgICAgICAgICAgICBleHAgPSBtYXgoZXhwLCBzZWxmLl9leHAgLSBjb250ZXh0LnByZWMtMSkKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX3Jlc2NhbGUoZXhwLCBjb250ZXh0LnJvdW5kaW5nKQorICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBvcDEgPSBfV29ya1JlcChzZWxmKQorICAgICAgICBvcDIgPSBfV29ya1JlcChvdGhlcikKKyAgICAgICAgb3AxLCBvcDIgPSBfbm9ybWFsaXplKG9wMSwgb3AyLCBjb250ZXh0LnByZWMpCisKKyAgICAgICAgcmVzdWx0ID0gX1dvcmtSZXAoKQorICAgICAgICBpZiBvcDEuc2lnbiAhPSBvcDIuc2lnbjoKKyAgICAgICAgICAgICMgRXF1YWwgYW5kIG9wcG9zaXRlCisgICAgICAgICAgICBpZiBvcDEuaW50ID09IG9wMi5pbnQ6CisgICAgICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShuZWdhdGl2ZXplcm8sICcwJywgZXhwKQorICAgICAgICAgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFucworICAgICAgICAgICAgaWYgb3AxLmludCA8IG9wMi5pbnQ6CisgICAgICAgICAgICAgICAgb3AxLCBvcDIgPSBvcDIsIG9wMQorICAgICAgICAgICAgICAgICMgT0ssIG5vdyBhYnMob3AxKSA+IGFicyhvcDIpCisgICAgICAgICAgICBpZiBvcDEuc2lnbiA9PSAxOgorICAgICAgICAgICAgICAgIHJlc3VsdC5zaWduID0gMQorICAgICAgICAgICAgICAgIG9wMS5zaWduLCBvcDIuc2lnbiA9IG9wMi5zaWduLCBvcDEuc2lnbgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXN1bHQuc2lnbiA9IDAKKyAgICAgICAgICAgICAgICAjIFNvIHdlIGtub3cgdGhlIHNpZ24sIGFuZCBvcDEgPiAwLgorICAgICAgICBlbGlmIG9wMS5zaWduID09IDE6CisgICAgICAgICAgICByZXN1bHQuc2lnbiA9IDEKKyAgICAgICAgICAgIG9wMS5zaWduLCBvcDIuc2lnbiA9ICgwLCAwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0LnNpZ24gPSAwCisgICAgICAgICMgTm93LCBvcDEgPiBhYnMob3AyKSA+IDAKKworICAgICAgICBpZiBvcDIuc2lnbiA9PSAwOgorICAgICAgICAgICAgcmVzdWx0LmludCA9IG9wMS5pbnQgKyBvcDIuaW50CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQuaW50ID0gb3AxLmludCAtIG9wMi5pbnQKKworICAgICAgICByZXN1bHQuZXhwID0gb3AxLmV4cAorICAgICAgICBhbnMgPSBEZWNpbWFsKHJlc3VsdCkKKyAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGFucworCisgICAgX19yYWRkX18gPSBfX2FkZF9fCisKKyAgICBkZWYgX19zdWJfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIHNlbGYgLSBvdGhlciIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0PWNvbnRleHQpCisgICAgICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgICMgc2VsZiAtIG90aGVyIGlzIGNvbXB1dGVkIGFzIHNlbGYgKyBvdGhlci5jb3B5X25lZ2F0ZSgpCisgICAgICAgIHJldHVybiBzZWxmLl9fYWRkX18ob3RoZXIuY29weV9uZWdhdGUoKSwgY29udGV4dD1jb250ZXh0KQorCisgICAgZGVmIF9fcnN1Yl9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm4gb3RoZXIgLSBzZWxmIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisKKyAgICAgICAgcmV0dXJuIG90aGVyLl9fc3ViX18oc2VsZiwgY29udGV4dD1jb250ZXh0KQorCisgICAgZGVmIF9fbXVsX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiBzZWxmICogb3RoZXIuCisKKyAgICAgICAgKCstKSBJTkYgKiAwIChvciBpdHMgcmV2ZXJzZSkgcmFpc2UgSW52YWxpZE9wZXJhdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIHJlc3VsdHNpZ24gPSBzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ24KKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3RoZXI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnKCstKUlORiAqIDAnKQorICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbcmVzdWx0c2lnbl0KKworICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICcwICogKCstKUlORicpCisgICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtyZXN1bHRzaWduXQorCisgICAgICAgIHJlc3VsdGV4cCA9IHNlbGYuX2V4cCArIG90aGVyLl9leHAKKworICAgICAgICAjIFNwZWNpYWwgY2FzZSBmb3IgbXVsdGlwbHlpbmcgYnkgemVybworICAgICAgICBpZiBub3Qgc2VsZiBvciBub3Qgb3RoZXI6CisgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdHNpZ24sICcwJywgcmVzdWx0ZXhwKQorICAgICAgICAgICAgIyBGaXhpbmcgaW4gY2FzZSB0aGUgZXhwb25lbnQgaXMgb3V0IG9mIGJvdW5kcworICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICAjIFNwZWNpYWwgY2FzZSBmb3IgbXVsdGlwbHlpbmcgYnkgcG93ZXIgb2YgMTAKKyAgICAgICAgaWYgc2VsZi5faW50ID09ICcxJzoKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0c2lnbiwgb3RoZXIuX2ludCwgcmVzdWx0ZXhwKQorICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiBhbnMKKyAgICAgICAgaWYgb3RoZXIuX2ludCA9PSAnMSc6CisgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdHNpZ24sIHNlbGYuX2ludCwgcmVzdWx0ZXhwKQorICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBvcDEgPSBfV29ya1JlcChzZWxmKQorICAgICAgICBvcDIgPSBfV29ya1JlcChvdGhlcikKKworICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdHNpZ24sIHN0cihvcDEuaW50ICogb3AyLmludCksIHJlc3VsdGV4cCkKKyAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKKworICAgICAgICByZXR1cm4gYW5zCisgICAgX19ybXVsX18gPSBfX211bF9fCisKKyAgICBkZWYgX190cnVlZGl2X18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiBzZWxmIC8gb3RoZXIuIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIHNpZ24gPSBzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ24KKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSBhbmQgb3RoZXIuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJygrLSlJTkYvKCstKUlORicpCisKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3NpZ25dCisKKyAgICAgICAgICAgIGlmIG90aGVyLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoQ2xhbXBlZCwgJ0RpdmlzaW9uIGJ5IGluZmluaXR5JykKKyAgICAgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzaWduLCAnMCcsIGNvbnRleHQuRXRpbnkoKSkKKworICAgICAgICAjIFNwZWNpYWwgY2FzZXMgZm9yIHplcm9lcworICAgICAgICBpZiBub3Qgb3RoZXI6CisgICAgICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25VbmRlZmluZWQsICcwIC8gMCcpCisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25CeVplcm8sICd4IC8gMCcsIHNpZ24pCisKKyAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICBleHAgPSBzZWxmLl9leHAgLSBvdGhlci5fZXhwCisgICAgICAgICAgICBjb2VmZiA9IDAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT0ssIHNvIG5laXRoZXIgPSAwLCBJTkYgb3IgTmFOCisgICAgICAgICAgICBzaGlmdCA9IGxlbihvdGhlci5faW50KSAtIGxlbihzZWxmLl9pbnQpICsgY29udGV4dC5wcmVjICsgMQorICAgICAgICAgICAgZXhwID0gc2VsZi5fZXhwIC0gb3RoZXIuX2V4cCAtIHNoaWZ0CisgICAgICAgICAgICBvcDEgPSBfV29ya1JlcChzZWxmKQorICAgICAgICAgICAgb3AyID0gX1dvcmtSZXAob3RoZXIpCisgICAgICAgICAgICBpZiBzaGlmdCA+PSAwOgorICAgICAgICAgICAgICAgIGNvZWZmLCByZW1haW5kZXIgPSBkaXZtb2Qob3AxLmludCAqIDEwKipzaGlmdCwgb3AyLmludCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY29lZmYsIHJlbWFpbmRlciA9IGRpdm1vZChvcDEuaW50LCBvcDIuaW50ICogMTAqKi1zaGlmdCkKKyAgICAgICAgICAgIGlmIHJlbWFpbmRlcjoKKyAgICAgICAgICAgICAgICAjIHJlc3VsdCBpcyBub3QgZXhhY3Q7IGFkanVzdCB0byBlbnN1cmUgY29ycmVjdCByb3VuZGluZworICAgICAgICAgICAgICAgIGlmIGNvZWZmICUgNSA9PSAwOgorICAgICAgICAgICAgICAgICAgICBjb2VmZiArPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgcmVzdWx0IGlzIGV4YWN0OyBnZXQgYXMgY2xvc2UgdG8gaWRlYWwgZXhwb25lbnQgYXMgcG9zc2libGUKKyAgICAgICAgICAgICAgICBpZGVhbF9leHAgPSBzZWxmLl9leHAgLSBvdGhlci5fZXhwCisgICAgICAgICAgICAgICAgd2hpbGUgZXhwIDwgaWRlYWxfZXhwIGFuZCBjb2VmZiAlIDEwID09IDA6CisgICAgICAgICAgICAgICAgICAgIGNvZWZmIC8vPSAxMAorICAgICAgICAgICAgICAgICAgICBleHAgKz0gMQorCisgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgc3RyKGNvZWZmKSwgZXhwKQorICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKKworICAgIGRlZiBfZGl2aWRlKHNlbGYsIG90aGVyLCBjb250ZXh0KToKKyAgICAgICAgIiIiUmV0dXJuIChzZWxmIC8vIG90aGVyLCBzZWxmICUgb3RoZXIpLCB0byBjb250ZXh0LnByZWMgcHJlY2lzaW9uLgorCisgICAgICAgIEFzc3VtZXMgdGhhdCBuZWl0aGVyIHNlbGYgbm9yIG90aGVyIGlzIGEgTmFOLCB0aGF0IHNlbGYgaXMgbm90CisgICAgICAgIGluZmluaXRlIGFuZCB0aGF0IG90aGVyIGlzIG5vbnplcm8uCisgICAgICAgICIiIgorICAgICAgICBzaWduID0gc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduCisgICAgICAgIGlmIG90aGVyLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICBpZGVhbF9leHAgPSBzZWxmLl9leHAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlkZWFsX2V4cCA9IG1pbihzZWxmLl9leHAsIG90aGVyLl9leHApCisKKyAgICAgICAgZXhwZGlmZiA9IHNlbGYuYWRqdXN0ZWQoKSAtIG90aGVyLmFkanVzdGVkKCkKKyAgICAgICAgaWYgbm90IHNlbGYgb3Igb3RoZXIuX2lzaW5maW5pdHkoKSBvciBleHBkaWZmIDw9IC0yOgorICAgICAgICAgICAgcmV0dXJuIChfZGVjX2Zyb21fdHJpcGxlKHNpZ24sICcwJywgMCksCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jlc2NhbGUoaWRlYWxfZXhwLCBjb250ZXh0LnJvdW5kaW5nKSkKKyAgICAgICAgaWYgZXhwZGlmZiA8PSBjb250ZXh0LnByZWM6CisgICAgICAgICAgICBvcDEgPSBfV29ya1JlcChzZWxmKQorICAgICAgICAgICAgb3AyID0gX1dvcmtSZXAob3RoZXIpCisgICAgICAgICAgICBpZiBvcDEuZXhwID49IG9wMi5leHA6CisgICAgICAgICAgICAgICAgb3AxLmludCAqPSAxMCoqKG9wMS5leHAgLSBvcDIuZXhwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvcDIuaW50ICo9IDEwKioob3AyLmV4cCAtIG9wMS5leHApCisgICAgICAgICAgICBxLCByID0gZGl2bW9kKG9wMS5pbnQsIG9wMi5pbnQpCisgICAgICAgICAgICBpZiBxIDwgMTAqKmNvbnRleHQucHJlYzoKKyAgICAgICAgICAgICAgICByZXR1cm4gKF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgc3RyKHEpLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgc3RyKHIpLCBpZGVhbF9leHApKQorCisgICAgICAgICMgSGVyZSB0aGUgcXVvdGllbnQgaXMgdG9vIGxhcmdlIHRvIGJlIHJlcHJlc2VudGFibGUKKyAgICAgICAgYW5zID0gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25JbXBvc3NpYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXVvdGllbnQgdG9vIGxhcmdlIGluIC8vLCAlIG9yIGRpdm1vZCcpCisgICAgICAgIHJldHVybiBhbnMsIGFucworCisgICAgZGVmIF9fcnRydWVkaXZfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiU3dhcHMgc2VsZi9vdGhlciBhbmQgcmV0dXJucyBfX3RydWVkaXZfXy4iIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKyAgICAgICAgcmV0dXJuIG90aGVyLl9fdHJ1ZWRpdl9fKHNlbGYsIGNvbnRleHQ9Y29udGV4dCkKKworICAgIGRlZiBfX2Rpdm1vZF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIChzZWxmIC8vIG90aGVyLCBzZWxmICUgb3RoZXIpCisgICAgICAgICIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gKGFucywgYW5zKQorCisgICAgICAgIHNpZ24gPSBzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ24KKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgICAgICBhbnMgPSBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnZGl2bW9kKElORiwgSU5GKScpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFucywgYW5zCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiAoX1NpZ25lZEluZmluaXR5W3NpZ25dLAorICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ0lORiAlIHgnKSkKKworICAgICAgICBpZiBub3Qgb3RoZXI6CisgICAgICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgICAgICBhbnMgPSBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvblVuZGVmaW5lZCwgJ2Rpdm1vZCgwLCAwKScpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFucywgYW5zCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiAoY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25CeVplcm8sICd4IC8vIDAnLCBzaWduKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICd4ICUgMCcpKQorCisgICAgICAgIHF1b3RpZW50LCByZW1haW5kZXIgPSBzZWxmLl9kaXZpZGUob3RoZXIsIGNvbnRleHQpCisgICAgICAgIHJlbWFpbmRlciA9IHJlbWFpbmRlci5fZml4KGNvbnRleHQpCisgICAgICAgIHJldHVybiBxdW90aWVudCwgcmVtYWluZGVyCisKKyAgICBkZWYgX19yZGl2bW9kX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlN3YXBzIHNlbGYvb3RoZXIgYW5kIHJldHVybnMgX19kaXZtb2RfXy4iIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKyAgICAgICAgcmV0dXJuIG90aGVyLl9fZGl2bW9kX18oc2VsZiwgY29udGV4dD1jb250ZXh0KQorCisgICAgZGVmIF9fbW9kX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBzZWxmICUgb3RoZXIKKyAgICAgICAgIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ0lORiAlIHgnKQorICAgICAgICBlbGlmIG5vdCBvdGhlcjoKKyAgICAgICAgICAgIGlmIHNlbGY6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICd4ICUgMCcpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvblVuZGVmaW5lZCwgJzAgJSAwJykKKworICAgICAgICByZW1haW5kZXIgPSBzZWxmLl9kaXZpZGUob3RoZXIsIGNvbnRleHQpWzFdCisgICAgICAgIHJlbWFpbmRlciA9IHJlbWFpbmRlci5fZml4KGNvbnRleHQpCisgICAgICAgIHJldHVybiByZW1haW5kZXIKKworICAgIGRlZiBfX3Jtb2RfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiU3dhcHMgc2VsZi9vdGhlciBhbmQgcmV0dXJucyBfX21vZF9fLiIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorICAgICAgICByZXR1cm4gb3RoZXIuX19tb2RfXyhzZWxmLCBjb250ZXh0PWNvbnRleHQpCisKKyAgICBkZWYgcmVtYWluZGVyX25lYXIoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBSZW1haW5kZXIgbmVhcmVzdCB0byAwLSAgYWJzKHJlbWFpbmRlci1uZWFyKSA8PSBvdGhlci8yCisgICAgICAgICIiIgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICAjIHNlbGYgPT0gKy8taW5maW5pdHkgLT4gSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVtYWluZGVyX25lYXIoaW5maW5pdHksIHgpJykKKworICAgICAgICAjIG90aGVyID09IDAgLT4gZWl0aGVyIEludmFsaWRPcGVyYXRpb24gb3IgRGl2aXNpb25VbmRlZmluZWQKKyAgICAgICAgaWYgbm90IG90aGVyOgorICAgICAgICAgICAgaWYgc2VsZjoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbWFpbmRlcl9uZWFyKHgsIDApJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uVW5kZWZpbmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVtYWluZGVyX25lYXIoMCwgMCknKQorCisgICAgICAgICMgb3RoZXIgPSArLy1pbmZpbml0eSAtPiByZW1haW5kZXIgPSBzZWxmCisgICAgICAgIGlmIG90aGVyLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICBhbnMgPSBEZWNpbWFsKHNlbGYpCisgICAgICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKKworICAgICAgICAjIHNlbGYgPSAwIC0+IHJlbWFpbmRlciA9IHNlbGYsIHdpdGggaWRlYWwgZXhwb25lbnQKKyAgICAgICAgaWRlYWxfZXhwb25lbnQgPSBtaW4oc2VsZi5fZXhwLCBvdGhlci5fZXhwKQorICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzAnLCBpZGVhbF9leHBvbmVudCkKKyAgICAgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgICAgICMgY2F0Y2ggbW9zdCBjYXNlcyBvZiBsYXJnZSBvciBzbWFsbCBxdW90aWVudAorICAgICAgICBleHBkaWZmID0gc2VsZi5hZGp1c3RlZCgpIC0gb3RoZXIuYWRqdXN0ZWQoKQorICAgICAgICBpZiBleHBkaWZmID49IGNvbnRleHQucHJlYyArIDE6CisgICAgICAgICAgICAjIGV4cGRpZmYgPj0gcHJlYysxID0+IGFicyhzZWxmL290aGVyKSA+IDEwKipwcmVjCisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25JbXBvc3NpYmxlKQorICAgICAgICBpZiBleHBkaWZmIDw9IC0yOgorICAgICAgICAgICAgIyBleHBkaWZmIDw9IC0yID0+IGFicyhzZWxmL290aGVyKSA8IDAuMQorICAgICAgICAgICAgYW5zID0gc2VsZi5fcmVzY2FsZShpZGVhbF9leHBvbmVudCwgY29udGV4dC5yb3VuZGluZykKKyAgICAgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgICAgICMgYWRqdXN0IGJvdGggYXJndW1lbnRzIHRvIGhhdmUgdGhlIHNhbWUgZXhwb25lbnQsIHRoZW4gZGl2aWRlCisgICAgICAgIG9wMSA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgIG9wMiA9IF9Xb3JrUmVwKG90aGVyKQorICAgICAgICBpZiBvcDEuZXhwID49IG9wMi5leHA6CisgICAgICAgICAgICBvcDEuaW50ICo9IDEwKioob3AxLmV4cCAtIG9wMi5leHApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvcDIuaW50ICo9IDEwKioob3AyLmV4cCAtIG9wMS5leHApCisgICAgICAgIHEsIHIgPSBkaXZtb2Qob3AxLmludCwgb3AyLmludCkKKyAgICAgICAgIyByZW1haW5kZXIgaXMgcioxMCoqaWRlYWxfZXhwb25lbnQ7IG90aGVyIGlzICsvLW9wMi5pbnQgKgorICAgICAgICAjIDEwKippZGVhbF9leHBvbmVudC4gICBBcHBseSBjb3JyZWN0aW9uIHRvIGVuc3VyZSB0aGF0CisgICAgICAgICMgYWJzKHJlbWFpbmRlcikgPD0gYWJzKG90aGVyKS8yCisgICAgICAgIGlmIDIqciArIChxJjEpID4gb3AyLmludDoKKyAgICAgICAgICAgIHIgLT0gb3AyLmludAorICAgICAgICAgICAgcSArPSAxCisKKyAgICAgICAgaWYgcSA+PSAxMCoqY29udGV4dC5wcmVjOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uSW1wb3NzaWJsZSkKKworICAgICAgICAjIHJlc3VsdCBoYXMgc2FtZSBzaWduIGFzIHNlbGYgdW5sZXNzIHIgaXMgbmVnYXRpdmUKKyAgICAgICAgc2lnbiA9IHNlbGYuX3NpZ24KKyAgICAgICAgaWYgciA8IDA6CisgICAgICAgICAgICBzaWduID0gMS1zaWduCisgICAgICAgICAgICByID0gLXIKKworICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sIHN0cihyKSwgaWRlYWxfZXhwb25lbnQpCisgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgZGVmIF9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIic2VsZiAvLyBvdGhlciIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ0lORiAvLyBJTkYnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3NlbGYuX3NpZ24gXiBvdGhlci5fc2lnbl0KKworICAgICAgICBpZiBub3Qgb3RoZXI6CisgICAgICAgICAgICBpZiBzZWxmOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkJ5WmVybywgJ3ggLy8gMCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NpZ24gXiBvdGhlci5fc2lnbikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uVW5kZWZpbmVkLCAnMCAvLyAwJykKKworICAgICAgICByZXR1cm4gc2VsZi5fZGl2aWRlKG90aGVyLCBjb250ZXh0KVswXQorCisgICAgZGVmIF9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlN3YXBzIHNlbGYvb3RoZXIgYW5kIHJldHVybnMgX19mbG9vcmRpdl9fLiIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorICAgICAgICByZXR1cm4gb3RoZXIuX19mbG9vcmRpdl9fKHNlbGYsIGNvbnRleHQ9Y29udGV4dCkKKworICAgIGRlZiBfX2Zsb2F0X18oc2VsZik6CisgICAgICAgICIiIkZsb2F0IHJlcHJlc2VudGF0aW9uLiIiIgorICAgICAgICBpZiBzZWxmLl9pc25hbigpOgorICAgICAgICAgICAgaWYgc2VsZi5pc19zbmFuKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IGNvbnZlcnQgc2lnbmFsaW5nIE5hTiB0byBmbG9hdCIpCisgICAgICAgICAgICBzID0gIi1uYW4iIGlmIHNlbGYuX3NpZ24gZWxzZSAibmFuIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcyA9IHN0cihzZWxmKQorICAgICAgICByZXR1cm4gZmxvYXQocykKKworICAgIGRlZiBfX2ludF9fKHNlbGYpOgorICAgICAgICAiIiJDb252ZXJ0cyBzZWxmIHRvIGFuIGludCwgdHJ1bmNhdGluZyBpZiBuZWNlc3NhcnkuIiIiCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBpZiBzZWxmLl9pc25hbigpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IE5hTiB0byBpbnRlZ2VyIikKKyAgICAgICAgICAgIGVsaWYgc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoIkNhbm5vdCBjb252ZXJ0IGluZmluaXR5IHRvIGludGVnZXIiKQorICAgICAgICBzID0gKC0xKSoqc2VsZi5fc2lnbgorICAgICAgICBpZiBzZWxmLl9leHAgPj0gMDoKKyAgICAgICAgICAgIHJldHVybiBzKmludChzZWxmLl9pbnQpKjEwKipzZWxmLl9leHAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzKmludChzZWxmLl9pbnRbOnNlbGYuX2V4cF0gb3IgJzAnKQorCisgICAgX190cnVuY19fID0gX19pbnRfXworCisgICAgZGVmIHJlYWwoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisgICAgcmVhbCA9IHByb3BlcnR5KHJlYWwpCisKKyAgICBkZWYgaW1hZyhzZWxmKToKKyAgICAgICAgcmV0dXJuIERlY2ltYWwoMCkKKyAgICBpbWFnID0gcHJvcGVydHkoaW1hZykKKworICAgIGRlZiBjb25qdWdhdGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19jb21wbGV4X18oc2VsZik6CisgICAgICAgIHJldHVybiBjb21wbGV4KGZsb2F0KHNlbGYpKQorCisgICAgZGVmIF9maXhfbmFuKHNlbGYsIGNvbnRleHQpOgorICAgICAgICAiIiJEZWNhcGl0YXRlIHRoZSBwYXlsb2FkIG9mIGEgTmFOIHRvIGZpdCB0aGUgY29udGV4dCIiIgorICAgICAgICBwYXlsb2FkID0gc2VsZi5faW50CisKKyAgICAgICAgIyBtYXhpbXVtIGxlbmd0aCBvZiBwYXlsb2FkIGlzIHByZWNpc2lvbiBpZiBjbGFtcD0wLAorICAgICAgICAjIHByZWNpc2lvbi0xIGlmIGNsYW1wPTEuCisgICAgICAgIG1heF9wYXlsb2FkX2xlbiA9IGNvbnRleHQucHJlYyAtIGNvbnRleHQuY2xhbXAKKyAgICAgICAgaWYgbGVuKHBheWxvYWQpID4gbWF4X3BheWxvYWRfbGVuOgorICAgICAgICAgICAgcGF5bG9hZCA9IHBheWxvYWRbbGVuKHBheWxvYWQpLW1heF9wYXlsb2FkX2xlbjpdLmxzdHJpcCgnMCcpCisgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBwYXlsb2FkLCBzZWxmLl9leHAsIFRydWUpCisgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisKKyAgICBkZWYgX2ZpeChzZWxmLCBjb250ZXh0KToKKyAgICAgICAgIiIiUm91bmQgaWYgaXQgaXMgbmVjZXNzYXJ5IHRvIGtlZXAgc2VsZiB3aXRoaW4gcHJlYyBwcmVjaXNpb24uCisKKyAgICAgICAgUm91bmRzIGFuZCBmaXhlcyB0aGUgZXhwb25lbnQuICBEb2VzIG5vdCByYWlzZSBvbiBhIHNOYU4uCisKKyAgICAgICAgQXJndW1lbnRzOgorICAgICAgICBzZWxmIC0gRGVjaW1hbCBpbnN0YW5jZQorICAgICAgICBjb250ZXh0IC0gY29udGV4dCB1c2VkLgorICAgICAgICAiIiIKKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgaWYgc2VsZi5faXNuYW4oKToKKyAgICAgICAgICAgICAgICAjIGRlY2FwaXRhdGUgcGF5bG9hZCBpZiBuZWNlc3NhcnkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZml4X25hbihjb250ZXh0KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIHNlbGYgaXMgKy8tSW5maW5pdHk7IHJldHVybiB1bmFsdGVyZWQKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorCisgICAgICAgICMgaWYgc2VsZiBpcyB6ZXJvIHRoZW4gZXhwb25lbnQgc2hvdWxkIGJlIGJldHdlZW4gRXRpbnkgYW5kCisgICAgICAgICMgRW1heCBpZiBjbGFtcD09MCwgYW5kIGJldHdlZW4gRXRpbnkgYW5kIEV0b3AgaWYgY2xhbXA9PTEuCisgICAgICAgIEV0aW55ID0gY29udGV4dC5FdGlueSgpCisgICAgICAgIEV0b3AgPSBjb250ZXh0LkV0b3AoKQorICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIGV4cF9tYXggPSBbY29udGV4dC5FbWF4LCBFdG9wXVtjb250ZXh0LmNsYW1wXQorICAgICAgICAgICAgbmV3X2V4cCA9IG1pbihtYXgoc2VsZi5fZXhwLCBFdGlueSksIGV4cF9tYXgpCisgICAgICAgICAgICBpZiBuZXdfZXhwICE9IHNlbGYuX2V4cDoKKyAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihDbGFtcGVkKQorICAgICAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcwJywgbmV3X2V4cCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKworICAgICAgICAjIGV4cF9taW4gaXMgdGhlIHNtYWxsZXN0IGFsbG93YWJsZSBleHBvbmVudCBvZiB0aGUgcmVzdWx0LAorICAgICAgICAjIGVxdWFsIHRvIG1heChzZWxmLmFkanVzdGVkKCktY29udGV4dC5wcmVjKzEsIEV0aW55KQorICAgICAgICBleHBfbWluID0gbGVuKHNlbGYuX2ludCkgKyBzZWxmLl9leHAgLSBjb250ZXh0LnByZWMKKyAgICAgICAgaWYgZXhwX21pbiA+IEV0b3A6CisgICAgICAgICAgICAjIG92ZXJmbG93OiBleHBfbWluID4gRXRvcCBpZmYgc2VsZi5hZGp1c3RlZCgpID4gRW1heAorICAgICAgICAgICAgYW5zID0gY29udGV4dC5fcmFpc2VfZXJyb3IoT3ZlcmZsb3csICdhYm92ZSBFbWF4Jywgc2VsZi5fc2lnbikKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIHNlbGZfaXNfc3Vibm9ybWFsID0gZXhwX21pbiA8IEV0aW55CisgICAgICAgIGlmIHNlbGZfaXNfc3Vibm9ybWFsOgorICAgICAgICAgICAgZXhwX21pbiA9IEV0aW55CisKKyAgICAgICAgIyByb3VuZCBpZiBzZWxmIGhhcyB0b28gbWFueSBkaWdpdHMKKyAgICAgICAgaWYgc2VsZi5fZXhwIDwgZXhwX21pbjoKKyAgICAgICAgICAgIGRpZ2l0cyA9IGxlbihzZWxmLl9pbnQpICsgc2VsZi5fZXhwIC0gZXhwX21pbgorICAgICAgICAgICAgaWYgZGlnaXRzIDwgMDoKKyAgICAgICAgICAgICAgICBzZWxmID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMScsIGV4cF9taW4tMSkKKyAgICAgICAgICAgICAgICBkaWdpdHMgPSAwCisgICAgICAgICAgICByb3VuZGluZ19tZXRob2QgPSBzZWxmLl9waWNrX3JvdW5kaW5nX2Z1bmN0aW9uW2NvbnRleHQucm91bmRpbmddCisgICAgICAgICAgICBjaGFuZ2VkID0gcm91bmRpbmdfbWV0aG9kKHNlbGYsIGRpZ2l0cykKKyAgICAgICAgICAgIGNvZWZmID0gc2VsZi5faW50WzpkaWdpdHNdIG9yICcwJworICAgICAgICAgICAgaWYgY2hhbmdlZCA+IDA6CisgICAgICAgICAgICAgICAgY29lZmYgPSBzdHIoaW50KGNvZWZmKSsxKQorICAgICAgICAgICAgICAgIGlmIGxlbihjb2VmZikgPiBjb250ZXh0LnByZWM6CisgICAgICAgICAgICAgICAgICAgIGNvZWZmID0gY29lZmZbOi0xXQorICAgICAgICAgICAgICAgICAgICBleHBfbWluICs9IDEKKworICAgICAgICAgICAgIyBjaGVjayB3aGV0aGVyIHRoZSByb3VuZGluZyBwdXNoZWQgdGhlIGV4cG9uZW50IG91dCBvZiByYW5nZQorICAgICAgICAgICAgaWYgZXhwX21pbiA+IEV0b3A6CisgICAgICAgICAgICAgICAgYW5zID0gY29udGV4dC5fcmFpc2VfZXJyb3IoT3ZlcmZsb3csICdhYm92ZSBFbWF4Jywgc2VsZi5fc2lnbikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBjb2VmZiwgZXhwX21pbikKKworICAgICAgICAgICAgIyByYWlzZSB0aGUgYXBwcm9wcmlhdGUgc2lnbmFscywgdGFraW5nIGNhcmUgdG8gcmVzcGVjdAorICAgICAgICAgICAgIyB0aGUgcHJlY2VkZW5jZSBkZXNjcmliZWQgaW4gdGhlIHNwZWNpZmljYXRpb24KKyAgICAgICAgICAgIGlmIGNoYW5nZWQgYW5kIHNlbGZfaXNfc3Vibm9ybWFsOgorICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFVuZGVyZmxvdykKKyAgICAgICAgICAgIGlmIHNlbGZfaXNfc3Vibm9ybWFsOgorICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFN1Ym5vcm1hbCkKKyAgICAgICAgICAgIGlmIGNoYW5nZWQ6CisgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCisgICAgICAgICAgICBpZiBub3QgYW5zOgorICAgICAgICAgICAgICAgICMgcmFpc2UgQ2xhbXBlZCBvbiB1bmRlcmZsb3cgdG8gMAorICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKENsYW1wZWQpCisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgaWYgc2VsZl9pc19zdWJub3JtYWw6CisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihTdWJub3JtYWwpCisKKyAgICAgICAgIyBmb2xkIGRvd24gaWYgY2xhbXAgPT0gMSBhbmQgc2VsZiBoYXMgdG9vIGZldyBkaWdpdHMKKyAgICAgICAgaWYgY29udGV4dC5jbGFtcCA9PSAxIGFuZCBzZWxmLl9leHAgPiBFdG9wOgorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoQ2xhbXBlZCkKKyAgICAgICAgICAgIHNlbGZfcGFkZGVkID0gc2VsZi5faW50ICsgJzAnKihzZWxmLl9leHAgLSBFdG9wKQorICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgc2VsZl9wYWRkZWQsIEV0b3ApCisKKyAgICAgICAgIyBoZXJlIHNlbGYgd2FzIHJlcHJlc2VudGFibGUgdG8gYmVnaW4gd2l0aDsgcmV0dXJuIHVuY2hhbmdlZAorICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorCisgICAgIyBmb3IgZWFjaCBvZiB0aGUgcm91bmRpbmcgZnVuY3Rpb25zIGJlbG93OgorICAgICMgICBzZWxmIGlzIGEgZmluaXRlLCBub256ZXJvIERlY2ltYWwKKyAgICAjICAgcHJlYyBpcyBhbiBpbnRlZ2VyIHNhdGlzZnlpbmcgMCA8PSBwcmVjIDwgbGVuKHNlbGYuX2ludCkKKyAgICAjCisgICAgIyBlYWNoIGZ1bmN0aW9uIHJldHVybnMgZWl0aGVyIC0xLCAwLCBvciAxLCBhcyBmb2xsb3dzOgorICAgICMgICAxIGluZGljYXRlcyB0aGF0IHNlbGYgc2hvdWxkIGJlIHJvdW5kZWQgdXAgKGF3YXkgZnJvbSB6ZXJvKQorICAgICMgICAwIGluZGljYXRlcyB0aGF0IHNlbGYgc2hvdWxkIGJlIHRydW5jYXRlZCwgYW5kIHRoYXQgYWxsIHRoZQorICAgICMgICAgIGRpZ2l0cyB0byBiZSB0cnVuY2F0ZWQgYXJlIHplcm9zIChzbyB0aGUgdmFsdWUgaXMgdW5jaGFuZ2VkKQorICAgICMgIC0xIGluZGljYXRlcyB0aGF0IHRoZXJlIGFyZSBub256ZXJvIGRpZ2l0cyB0byBiZSB0cnVuY2F0ZWQKKworICAgIGRlZiBfcm91bmRfZG93bihzZWxmLCBwcmVjKToKKyAgICAgICAgIiIiQWxzbyBrbm93biBhcyByb3VuZC10b3dhcmRzLTAsIHRydW5jYXRlLiIiIgorICAgICAgICBpZiBfYWxsX3plcm9zKHNlbGYuX2ludCwgcHJlYyk6CisgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIC0xCisKKyAgICBkZWYgX3JvdW5kX3VwKHNlbGYsIHByZWMpOgorICAgICAgICAiIiJSb3VuZHMgYXdheSBmcm9tIDAuIiIiCisgICAgICAgIHJldHVybiAtc2VsZi5fcm91bmRfZG93bihwcmVjKQorCisgICAgZGVmIF9yb3VuZF9oYWxmX3VwKHNlbGYsIHByZWMpOgorICAgICAgICAiIiJSb3VuZHMgNSB1cCAoYXdheSBmcm9tIDApIiIiCisgICAgICAgIGlmIHNlbGYuX2ludFtwcmVjXSBpbiAnNTY3ODknOgorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgZWxpZiBfYWxsX3plcm9zKHNlbGYuX2ludCwgcHJlYyk6CisgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIC0xCisKKyAgICBkZWYgX3JvdW5kX2hhbGZfZG93bihzZWxmLCBwcmVjKToKKyAgICAgICAgIiIiUm91bmQgNSBkb3duIiIiCisgICAgICAgIGlmIF9leGFjdF9oYWxmKHNlbGYuX2ludCwgcHJlYyk6CisgICAgICAgICAgICByZXR1cm4gLTEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb3VuZF9oYWxmX3VwKHByZWMpCisKKyAgICBkZWYgX3JvdW5kX2hhbGZfZXZlbihzZWxmLCBwcmVjKToKKyAgICAgICAgIiIiUm91bmQgNSB0byBldmVuLCByZXN0IHRvIG5lYXJlc3QuIiIiCisgICAgICAgIGlmIF9leGFjdF9oYWxmKHNlbGYuX2ludCwgcHJlYykgYW5kIFwKKyAgICAgICAgICAgICAgICAocHJlYyA9PSAwIG9yIHNlbGYuX2ludFtwcmVjLTFdIGluICcwMjQ2OCcpOgorICAgICAgICAgICAgcmV0dXJuIC0xCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcm91bmRfaGFsZl91cChwcmVjKQorCisgICAgZGVmIF9yb3VuZF9jZWlsaW5nKHNlbGYsIHByZWMpOgorICAgICAgICAiIiJSb3VuZHMgdXAgKG5vdCBhd2F5IGZyb20gMCBpZiBuZWdhdGl2ZS4pIiIiCisgICAgICAgIGlmIHNlbGYuX3NpZ246CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcm91bmRfZG93bihwcmVjKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIC1zZWxmLl9yb3VuZF9kb3duKHByZWMpCisKKyAgICBkZWYgX3JvdW5kX2Zsb29yKHNlbGYsIHByZWMpOgorICAgICAgICAiIiJSb3VuZHMgZG93biAobm90IHRvd2FyZHMgMCBpZiBuZWdhdGl2ZSkiIiIKKyAgICAgICAgaWYgbm90IHNlbGYuX3NpZ246CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcm91bmRfZG93bihwcmVjKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIC1zZWxmLl9yb3VuZF9kb3duKHByZWMpCisKKyAgICBkZWYgX3JvdW5kXzA1dXAoc2VsZiwgcHJlYyk6CisgICAgICAgICIiIlJvdW5kIGRvd24gdW5sZXNzIGRpZ2l0IHByZWMtMSBpcyAwIG9yIDUuIiIiCisgICAgICAgIGlmIHByZWMgYW5kIHNlbGYuX2ludFtwcmVjLTFdIG5vdCBpbiAnMDUnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JvdW5kX2Rvd24ocHJlYykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAtc2VsZi5fcm91bmRfZG93bihwcmVjKQorCisgICAgX3BpY2tfcm91bmRpbmdfZnVuY3Rpb24gPSBkaWN0KAorICAgICAgICBST1VORF9ET1dOID0gX3JvdW5kX2Rvd24sCisgICAgICAgIFJPVU5EX1VQID0gX3JvdW5kX3VwLAorICAgICAgICBST1VORF9IQUxGX1VQID0gX3JvdW5kX2hhbGZfdXAsCisgICAgICAgIFJPVU5EX0hBTEZfRE9XTiA9IF9yb3VuZF9oYWxmX2Rvd24sCisgICAgICAgIFJPVU5EX0hBTEZfRVZFTiA9IF9yb3VuZF9oYWxmX2V2ZW4sCisgICAgICAgIFJPVU5EX0NFSUxJTkcgPSBfcm91bmRfY2VpbGluZywKKyAgICAgICAgUk9VTkRfRkxPT1IgPSBfcm91bmRfZmxvb3IsCisgICAgICAgIFJPVU5EXzA1VVAgPSBfcm91bmRfMDV1cCwKKyAgICApCisKKyAgICBkZWYgX19yb3VuZF9fKHNlbGYsIG49Tm9uZSk6CisgICAgICAgICIiIlJvdW5kIHNlbGYgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciwgb3IgdG8gYSBnaXZlbiBwcmVjaXNpb24uCisKKyAgICAgICAgSWYgb25seSBvbmUgYXJndW1lbnQgaXMgc3VwcGxpZWQsIHJvdW5kIGEgZmluaXRlIERlY2ltYWwKKyAgICAgICAgaW5zdGFuY2Ugc2VsZiB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLiAgSWYgc2VsZiBpcyBpbmZpbml0ZSBvcgorICAgICAgICBhIE5hTiB0aGVuIGEgUHl0aG9uIGV4Y2VwdGlvbiBpcyByYWlzZWQuICBJZiBzZWxmIGlzIGZpbml0ZQorICAgICAgICBhbmQgbGllcyBleGFjdGx5IGhhbGZ3YXkgYmV0d2VlbiB0d28gaW50ZWdlcnMgdGhlbiBpdCBpcworICAgICAgICByb3VuZGVkIHRvIHRoZSBpbnRlZ2VyIHdpdGggZXZlbiBsYXN0IGRpZ2l0LgorCisgICAgICAgID4+PiByb3VuZChEZWNpbWFsKCcxMjMuNDU2JykpCisgICAgICAgIDEyMworICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnLTQ1Ni43ODknKSkKKyAgICAgICAgLTQ1NworICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnLTMuMCcpKQorICAgICAgICAtMworICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMi41JykpCisgICAgICAgIDIKKyAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJzMuNScpKQorICAgICAgICA0CisgICAgICAgID4+PiByb3VuZChEZWNpbWFsKCdJbmYnKSkKKyAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgIC4uLgorICAgICAgICBPdmVyZmxvd0Vycm9yOiBjYW5ub3Qgcm91bmQgYW4gaW5maW5pdHkKKyAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJ05hTicpKQorICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgLi4uCisgICAgICAgIFZhbHVlRXJyb3I6IGNhbm5vdCByb3VuZCBhIE5hTgorCisgICAgICAgIElmIGEgc2Vjb25kIGFyZ3VtZW50IG4gaXMgc3VwcGxpZWQsIHNlbGYgaXMgcm91bmRlZCB0byBuCisgICAgICAgIGRlY2ltYWwgcGxhY2VzIHVzaW5nIHRoZSByb3VuZGluZyBtb2RlIGZvciB0aGUgY3VycmVudAorICAgICAgICBjb250ZXh0LgorCisgICAgICAgIEZvciBhbiBpbnRlZ2VyIG4sIHJvdW5kKHNlbGYsIC1uKSBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8KKyAgICAgICAgc2VsZi5xdWFudGl6ZShEZWNpbWFsKCcxRW4nKSkuCisKKyAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJzEyMy40NTYnKSwgMCkKKyAgICAgICAgRGVjaW1hbCgnMTIzJykKKyAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJzEyMy40NTYnKSwgMikKKyAgICAgICAgRGVjaW1hbCgnMTIzLjQ2JykKKyAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJzEyMy40NTYnKSwgLTIpCisgICAgICAgIERlY2ltYWwoJzFFKzInKQorICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnLUluZmluaXR5JyksIDM3KQorICAgICAgICBEZWNpbWFsKCdOYU4nKQorICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnc05hTjEyMycpLCAwKQorICAgICAgICBEZWNpbWFsKCdOYU4xMjMnKQorCisgICAgICAgICIiIgorICAgICAgICBpZiBuIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyB0d28tYXJndW1lbnQgZm9ybTogdXNlIHRoZSBlcXVpdmFsZW50IHF1YW50aXplIGNhbGwKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG4sIGludCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdTZWNvbmQgYXJndW1lbnQgdG8gcm91bmQgc2hvdWxkIGJlIGludGVncmFsJykKKyAgICAgICAgICAgIGV4cCA9IF9kZWNfZnJvbV90cmlwbGUoMCwgJzEnLCAtbikKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnF1YW50aXplKGV4cCkKKworICAgICAgICAjIG9uZS1hcmd1bWVudCBmb3JtCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBpZiBzZWxmLmlzX25hbigpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCByb3VuZCBhIE5hTiIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoImNhbm5vdCByb3VuZCBhbiBpbmZpbml0eSIpCisgICAgICAgIHJldHVybiBpbnQoc2VsZi5fcmVzY2FsZSgwLCBST1VORF9IQUxGX0VWRU4pKQorCisgICAgZGVmIF9fZmxvb3JfXyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBmbG9vciBvZiBzZWxmLCBhcyBhbiBpbnRlZ2VyLgorCisgICAgICAgIEZvciBhIGZpbml0ZSBEZWNpbWFsIGluc3RhbmNlIHNlbGYsIHJldHVybiB0aGUgZ3JlYXRlc3QKKyAgICAgICAgaW50ZWdlciBuIHN1Y2ggdGhhdCBuIDw9IHNlbGYuICBJZiBzZWxmIGlzIGluZmluaXRlIG9yIGEgTmFOCisgICAgICAgIHRoZW4gYSBQeXRob24gZXhjZXB0aW9uIGlzIHJhaXNlZC4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGlmIHNlbGYuaXNfbmFuKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IHJvdW5kIGEgTmFOIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiY2Fubm90IHJvdW5kIGFuIGluZmluaXR5IikKKyAgICAgICAgcmV0dXJuIGludChzZWxmLl9yZXNjYWxlKDAsIFJPVU5EX0ZMT09SKSkKKworICAgIGRlZiBfX2NlaWxfXyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjZWlsaW5nIG9mIHNlbGYsIGFzIGFuIGludGVnZXIuCisKKyAgICAgICAgRm9yIGEgZmluaXRlIERlY2ltYWwgaW5zdGFuY2Ugc2VsZiwgcmV0dXJuIHRoZSBsZWFzdCBpbnRlZ2VyIG4KKyAgICAgICAgc3VjaCB0aGF0IG4gPj0gc2VsZi4gIElmIHNlbGYgaXMgaW5maW5pdGUgb3IgYSBOYU4gdGhlbiBhCisgICAgICAgIFB5dGhvbiBleGNlcHRpb24gaXMgcmFpc2VkLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgaWYgc2VsZi5pc19uYW4oKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3Qgcm91bmQgYSBOYU4iKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJjYW5ub3Qgcm91bmQgYW4gaW5maW5pdHkiKQorICAgICAgICByZXR1cm4gaW50KHNlbGYuX3Jlc2NhbGUoMCwgUk9VTkRfQ0VJTElORykpCisKKyAgICBkZWYgZm1hKHNlbGYsIG90aGVyLCB0aGlyZCwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiRnVzZWQgbXVsdGlwbHktYWRkLgorCisgICAgICAgIFJldHVybnMgc2VsZipvdGhlcit0aGlyZCB3aXRoIG5vIHJvdW5kaW5nIG9mIHRoZSBpbnRlcm1lZGlhdGUKKyAgICAgICAgcHJvZHVjdCBzZWxmKm90aGVyLgorCisgICAgICAgIHNlbGYgYW5kIG90aGVyIGFyZSBtdWx0aXBsaWVkIHRvZ2V0aGVyLCB3aXRoIG5vIHJvdW5kaW5nIG9mCisgICAgICAgIHRoZSByZXN1bHQuICBUaGUgdGhpcmQgb3BlcmFuZCBpcyB0aGVuIGFkZGVkIHRvIHRoZSByZXN1bHQsCisgICAgICAgIGFuZCBhIHNpbmdsZSBmaW5hbCByb3VuZGluZyBpcyBwZXJmb3JtZWQuCisgICAgICAgICIiIgorCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgdGhpcmQgPSBfY29udmVydF9vdGhlcih0aGlyZCwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgICMgY29tcHV0ZSBwcm9kdWN0OyByYWlzZSBJbnZhbGlkT3BlcmF0aW9uIGlmIGVpdGhlciBvcGVyYW5kIGlzCisgICAgICAgICMgYSBzaWduYWxpbmcgTmFOIG9yIGlmIHRoZSBwcm9kdWN0IGlzIHplcm8gdGltZXMgaW5maW5pdHkuCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICAgICAgaWYgc2VsZi5fZXhwID09ICdOJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLCBzZWxmKQorICAgICAgICAgICAgaWYgb3RoZXIuX2V4cCA9PSAnTic6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdzTmFOJywgb3RoZXIpCisgICAgICAgICAgICBpZiBzZWxmLl9leHAgPT0gJ24nOgorICAgICAgICAgICAgICAgIHByb2R1Y3QgPSBzZWxmCisgICAgICAgICAgICBlbGlmIG90aGVyLl9leHAgPT0gJ24nOgorICAgICAgICAgICAgICAgIHByb2R1Y3QgPSBvdGhlcgorICAgICAgICAgICAgZWxpZiBzZWxmLl9leHAgPT0gJ0YnOgorICAgICAgICAgICAgICAgIGlmIG5vdCBvdGhlcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSU5GICogMCBpbiBmbWEnKQorICAgICAgICAgICAgICAgIHByb2R1Y3QgPSBfU2lnbmVkSW5maW5pdHlbc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduXQorICAgICAgICAgICAgZWxpZiBvdGhlci5fZXhwID09ICdGJzoKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMCAqIElORiBpbiBmbWEnKQorICAgICAgICAgICAgICAgIHByb2R1Y3QgPSBfU2lnbmVkSW5maW5pdHlbc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJvZHVjdCA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGludChzZWxmLl9pbnQpICogaW50KG90aGVyLl9pbnQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCArIG90aGVyLl9leHApCisKKyAgICAgICAgcmV0dXJuIHByb2R1Y3QuX19hZGRfXyh0aGlyZCwgY29udGV4dCkKKworICAgIGRlZiBfcG93ZXJfbW9kdWxvKHNlbGYsIG90aGVyLCBtb2R1bG8sIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlRocmVlIGFyZ3VtZW50IHZlcnNpb24gb2YgX19wb3dfXyIiIgorCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisgICAgICAgIG1vZHVsbyA9IF9jb252ZXJ0X290aGVyKG1vZHVsbykKKyAgICAgICAgaWYgbW9kdWxvIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG1vZHVsbworCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICAjIGRlYWwgd2l0aCBOYU5zOiBpZiB0aGVyZSBhcmUgYW55IHNOYU5zIHRoZW4gZmlyc3Qgb25lIHdpbnMsCisgICAgICAgICMgKGkuZS4gYmVoYXZpb3VyIGZvciBOYU5zIGlzIGlkZW50aWNhbCB0byB0aGF0IG9mIGZtYSkKKyAgICAgICAgc2VsZl9pc19uYW4gPSBzZWxmLl9pc25hbigpCisgICAgICAgIG90aGVyX2lzX25hbiA9IG90aGVyLl9pc25hbigpCisgICAgICAgIG1vZHVsb19pc19uYW4gPSBtb2R1bG8uX2lzbmFuKCkKKyAgICAgICAgaWYgc2VsZl9pc19uYW4gb3Igb3RoZXJfaXNfbmFuIG9yIG1vZHVsb19pc19uYW46CisgICAgICAgICAgICBpZiBzZWxmX2lzX25hbiA9PSAyOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc05hTicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikKKyAgICAgICAgICAgIGlmIG90aGVyX2lzX25hbiA9PSAyOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc05hTicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIpCisgICAgICAgICAgICBpZiBtb2R1bG9faXNfbmFuID09IDI6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdzTmFOJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bG8pCisgICAgICAgICAgICBpZiBzZWxmX2lzX25hbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZml4X25hbihjb250ZXh0KQorICAgICAgICAgICAgaWYgb3RoZXJfaXNfbmFuOgorICAgICAgICAgICAgICAgIHJldHVybiBvdGhlci5fZml4X25hbihjb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIG1vZHVsby5fZml4X25hbihjb250ZXh0KQorCisgICAgICAgICMgY2hlY2sgaW5wdXRzOiB3ZSBhcHBseSBzYW1lIHJlc3RyaWN0aW9ucyBhcyBQeXRob24ncyBwb3coKQorICAgICAgICBpZiBub3QgKHNlbGYuX2lzaW50ZWdlcigpIGFuZAorICAgICAgICAgICAgICAgIG90aGVyLl9pc2ludGVnZXIoKSBhbmQKKyAgICAgICAgICAgICAgICBtb2R1bG8uX2lzaW50ZWdlcigpKToKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3coKSAzcmQgYXJndW1lbnQgbm90IGFsbG93ZWQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmxlc3MgYWxsIGFyZ3VtZW50cyBhcmUgaW50ZWdlcnMnKQorICAgICAgICBpZiBvdGhlciA8IDA6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG93KCkgMm5kIGFyZ3VtZW50IGNhbm5vdCBiZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZ2F0aXZlIHdoZW4gM3JkIGFyZ3VtZW50IHNwZWNpZmllZCcpCisgICAgICAgIGlmIG5vdCBtb2R1bG86CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG93KCkgM3JkIGFyZ3VtZW50IGNhbm5vdCBiZSAwJykKKworICAgICAgICAjIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb24gZm9yIGRlY2ltYWw6IHRoZSBtb2R1bHVzIG11c3QgYmUgbGVzcworICAgICAgICAjIHRoYW4gMTAqKnByZWMgaW4gYWJzb2x1dGUgdmFsdWUKKyAgICAgICAgaWYgbW9kdWxvLmFkanVzdGVkKCkgPj0gY29udGV4dC5wcmVjOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luc3VmZmljaWVudCBwcmVjaXNpb246IHBvdygpIDNyZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IG11c3Qgbm90IGhhdmUgbW9yZSB0aGFuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJlY2lzaW9uIGRpZ2l0cycpCisKKyAgICAgICAgIyBkZWZpbmUgMCoqMCA9PSBOYU4sIGZvciBjb25zaXN0ZW5jeSB3aXRoIHR3by1hcmd1bWVudCBwb3cKKyAgICAgICAgIyAoZXZlbiB0aG91Z2ggaXQgaHVydHMhKQorICAgICAgICBpZiBub3Qgb3RoZXIgYW5kIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F0IGxlYXN0IG9uZSBvZiBwb3coKSAxc3QgYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmQgMm5kIGFyZ3VtZW50IG11c3QgYmUgbm9uemVybyA7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcwKiowIGlzIG5vdCBkZWZpbmVkJykKKworICAgICAgICAjIGNvbXB1dGUgc2lnbiBvZiByZXN1bHQKKyAgICAgICAgaWYgb3RoZXIuX2lzZXZlbigpOgorICAgICAgICAgICAgc2lnbiA9IDAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNpZ24gPSBzZWxmLl9zaWduCisKKyAgICAgICAgIyBjb252ZXJ0IG1vZHVsbyB0byBhIFB5dGhvbiBpbnRlZ2VyLCBhbmQgc2VsZiBhbmQgb3RoZXIgdG8KKyAgICAgICAgIyBEZWNpbWFsIGludGVnZXJzIChpLmUuIGZvcmNlIHRoZWlyIGV4cG9uZW50cyB0byBiZSA+PSAwKQorICAgICAgICBtb2R1bG8gPSBhYnMoaW50KG1vZHVsbykpCisgICAgICAgIGJhc2UgPSBfV29ya1JlcChzZWxmLnRvX2ludGVncmFsX3ZhbHVlKCkpCisgICAgICAgIGV4cG9uZW50ID0gX1dvcmtSZXAob3RoZXIudG9faW50ZWdyYWxfdmFsdWUoKSkKKworICAgICAgICAjIGNvbXB1dGUgcmVzdWx0IHVzaW5nIGludGVnZXIgcG93KCkKKyAgICAgICAgYmFzZSA9IChiYXNlLmludCAlIG1vZHVsbyAqIHBvdygxMCwgYmFzZS5leHAsIG1vZHVsbykpICUgbW9kdWxvCisgICAgICAgIGZvciBpIGluIHJhbmdlKGV4cG9uZW50LmV4cCk6CisgICAgICAgICAgICBiYXNlID0gcG93KGJhc2UsIDEwLCBtb2R1bG8pCisgICAgICAgIGJhc2UgPSBwb3coYmFzZSwgZXhwb25lbnQuaW50LCBtb2R1bG8pCisKKyAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgc3RyKGJhc2UpLCAwKQorCisgICAgZGVmIF9wb3dlcl9leGFjdChzZWxmLCBvdGhlciwgcCk6CisgICAgICAgICIiIkF0dGVtcHQgdG8gY29tcHV0ZSBzZWxmKipvdGhlciBleGFjdGx5LgorCisgICAgICAgIEdpdmVuIERlY2ltYWxzIHNlbGYgYW5kIG90aGVyIGFuZCBhbiBpbnRlZ2VyIHAsIGF0dGVtcHQgdG8KKyAgICAgICAgY29tcHV0ZSBhbiBleGFjdCByZXN1bHQgZm9yIHRoZSBwb3dlciBzZWxmKipvdGhlciwgd2l0aCBwCisgICAgICAgIGRpZ2l0cyBvZiBwcmVjaXNpb24uICBSZXR1cm4gTm9uZSBpZiBzZWxmKipvdGhlciBpcyBub3QKKyAgICAgICAgZXhhY3RseSByZXByZXNlbnRhYmxlIGluIHAgZGlnaXRzLgorCisgICAgICAgIEFzc3VtZXMgdGhhdCBlbGltaW5hdGlvbiBvZiBzcGVjaWFsIGNhc2VzIGhhcyBhbHJlYWR5IGJlZW4KKyAgICAgICAgcGVyZm9ybWVkOiBzZWxmIGFuZCBvdGhlciBtdXN0IGJvdGggYmUgbm9uc3BlY2lhbDsgc2VsZiBtdXN0CisgICAgICAgIGJlIHBvc2l0aXZlIGFuZCBub3QgbnVtZXJpY2FsbHkgZXF1YWwgdG8gMTsgb3RoZXIgbXVzdCBiZQorICAgICAgICBub256ZXJvLiAgRm9yIGVmZmljaWVuY3ksIG90aGVyLl9leHAgc2hvdWxkIG5vdCBiZSB0b28gbGFyZ2UsCisgICAgICAgIHNvIHRoYXQgMTAqKmFicyhvdGhlci5fZXhwKSBpcyBhIGZlYXNpYmxlIGNhbGN1bGF0aW9uLiIiIgorCisgICAgICAgICMgSW4gdGhlIGNvbW1lbnRzIGJlbG93LCB3ZSB3cml0ZSB4IGZvciB0aGUgdmFsdWUgb2Ygc2VsZiBhbmQgeSBmb3IgdGhlCisgICAgICAgICMgdmFsdWUgb2Ygb3RoZXIuICBXcml0ZSB4ID0geGMqMTAqKnhlIGFuZCBhYnMoeSkgPSB5YyoxMCoqeWUsIHdpdGggeGMKKyAgICAgICAgIyBhbmQgeWMgcG9zaXRpdmUgaW50ZWdlcnMgbm90IGRpdmlzaWJsZSBieSAxMC4KKworICAgICAgICAjIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG8gaWRlbnRpZnkgdGhlICpmYWlsdXJlKgorICAgICAgICAjIG9mIHgqKnkgdG8gYmUgZXhhY3RseSByZXByZXNlbnRhYmxlIHdpdGggYXMgbGl0dGxlIGVmZm9ydCBhcworICAgICAgICAjIHBvc3NpYmxlLiAgU28gd2UgbG9vayBmb3IgY2hlYXAgYW5kIGVhc3kgdGVzdHMgdGhhdAorICAgICAgICAjIGVsaW1pbmF0ZSB0aGUgcG9zc2liaWxpdHkgb2YgeCoqeSBiZWluZyBleGFjdC4gIE9ubHkgaWYgYWxsCisgICAgICAgICMgdGhlc2UgdGVzdHMgYXJlIHBhc3NlZCBkbyB3ZSBnbyBvbiB0byBhY3R1YWxseSBjb21wdXRlIHgqKnkuCisKKyAgICAgICAgIyBIZXJlJ3MgdGhlIG1haW4gaWRlYS4gIEV4cHJlc3MgeSBhcyBhIHJhdGlvbmFsIG51bWJlciBtL24sIHdpdGggbSBhbmQKKyAgICAgICAgIyBuIHJlbGF0aXZlbHkgcHJpbWUgYW5kIG4+MC4gIFRoZW4gZm9yIHgqKnkgdG8gYmUgZXhhY3RseQorICAgICAgICAjIHJlcHJlc2VudGFibGUgKGF0ICphbnkqIHByZWNpc2lvbiksIHhjIG11c3QgYmUgdGhlIG50aCBwb3dlciBvZiBhCisgICAgICAgICMgcG9zaXRpdmUgaW50ZWdlciBhbmQgeGUgbXVzdCBiZSBkaXZpc2libGUgYnkgbi4gIElmIHkgaXMgbmVnYXRpdmUKKyAgICAgICAgIyB0aGVuIGFkZGl0aW9uYWxseSB4YyBtdXN0IGJlIGEgcG93ZXIgb2YgZWl0aGVyIDIgb3IgNSwgaGVuY2UgYSBwb3dlcgorICAgICAgICAjIG9mIDIqKm4gb3IgNSoqbi4KKyAgICAgICAgIworICAgICAgICAjIFRoZXJlJ3MgYSBsaW1pdCB0byBob3cgc21hbGwgfHl8IGNhbiBiZTogaWYgeT1tL24gYXMgYWJvdmUKKyAgICAgICAgIyB0aGVuOgorICAgICAgICAjCisgICAgICAgICMgICgxKSBpZiB4YyAhPSAxIHRoZW4gZm9yIHRoZSByZXN1bHQgdG8gYmUgcmVwcmVzZW50YWJsZSB3ZQorICAgICAgICAjICAgICAgbmVlZCB4YyoqKDEvbikgPj0gMiwgYW5kIGhlbmNlIGFsc28geGMqKnx5fCA+PSAyLiAgU28KKyAgICAgICAgIyAgICAgIGlmIHx5fCA8PSAxL25iaXRzKHhjKSB0aGVuIHhjIDwgMioqbmJpdHMoeGMpIDw9CisgICAgICAgICMgICAgICAyKiooMS98eXwpLCBoZW5jZSB4YyoqfHl8IDwgMiBhbmQgdGhlIHJlc3VsdCBpcyBub3QKKyAgICAgICAgIyAgICAgIHJlcHJlc2VudGFibGUuCisgICAgICAgICMKKyAgICAgICAgIyAgKDIpIGlmIHhlICE9IDAsIHx4ZXwqKDEvbikgPj0gMSwgc28gfHhlfCp8eXwgPj0gMS4gIEhlbmNlIGlmCisgICAgICAgICMgICAgICB8eXwgPCAxL3x4ZXwgdGhlbiB0aGUgcmVzdWx0IGlzIG5vdCByZXByZXNlbnRhYmxlLgorICAgICAgICAjCisgICAgICAgICMgTm90ZSB0aGF0IHNpbmNlIHggaXMgbm90IGVxdWFsIHRvIDEsIGF0IGxlYXN0IG9uZSBvZiAoMSkgYW5kCisgICAgICAgICMgKDIpIG11c3QgYXBwbHkuICBOb3cgfHl8IDwgMS9uYml0cyh4YykgaWZmIHx5Y3wqbmJpdHMoeGMpIDwKKyAgICAgICAgIyAxMCoqLXllIGlmZiBsZW4oc3RyKHx5Y3wqbmJpdHMoeGMpKSA8PSAteWUuCisgICAgICAgICMKKyAgICAgICAgIyBUaGVyZSdzIGFsc28gYSBsaW1pdCB0byBob3cgbGFyZ2UgeSBjYW4gYmUsIGF0IGxlYXN0IGlmIGl0J3MKKyAgICAgICAgIyBwb3NpdGl2ZTogdGhlIG5vcm1hbGl6ZWQgcmVzdWx0IHdpbGwgaGF2ZSBjb2VmZmljaWVudCB4YyoqeSwKKyAgICAgICAgIyBzbyBpZiBpdCdzIHJlcHJlc2VudGFibGUgdGhlbiB4YyoqeSA8IDEwKipwLCBhbmQgeSA8CisgICAgICAgICMgcC9sb2cxMCh4YykuICBIZW5jZSBpZiB5KmxvZzEwKHhjKSA+PSBwIHRoZW4gdGhlIHJlc3VsdCBpcworICAgICAgICAjIG5vdCBleGFjdGx5IHJlcHJlc2VudGFibGUuCisKKyAgICAgICAgIyBpZiBsZW4oc3RyKGFicyh5Yyp4ZSkpIDw9IC15ZSB0aGVuIGFicyh5Yyp4ZSkgPCAxMCoqLXllLAorICAgICAgICAjIHNvIHx5fCA8IDEveGUgYW5kIHRoZSByZXN1bHQgaXMgbm90IHJlcHJlc2VudGFibGUuCisgICAgICAgICMgU2ltaWxhcmx5LCBsZW4oc3RyKGFicyh5YykqeGNfYml0cykpIDw9IC15ZSBpbXBsaWVzIHx5fAorICAgICAgICAjIDwgMS9uYml0cyh4YykuCisKKyAgICAgICAgeCA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgIHhjLCB4ZSA9IHguaW50LCB4LmV4cAorICAgICAgICB3aGlsZSB4YyAlIDEwID09IDA6CisgICAgICAgICAgICB4YyAvLz0gMTAKKyAgICAgICAgICAgIHhlICs9IDEKKworICAgICAgICB5ID0gX1dvcmtSZXAob3RoZXIpCisgICAgICAgIHljLCB5ZSA9IHkuaW50LCB5LmV4cAorICAgICAgICB3aGlsZSB5YyAlIDEwID09IDA6CisgICAgICAgICAgICB5YyAvLz0gMTAKKyAgICAgICAgICAgIHllICs9IDEKKworICAgICAgICAjIGNhc2Ugd2hlcmUgeGMgPT0gMTogcmVzdWx0IGlzIDEwKiooeGUqeSksIHdpdGggeGUqeQorICAgICAgICAjIHJlcXVpcmVkIHRvIGJlIGFuIGludGVnZXIKKyAgICAgICAgaWYgeGMgPT0gMToKKyAgICAgICAgICAgIHhlICo9IHljCisgICAgICAgICAgICAjIHJlc3VsdCBpcyBub3cgMTAqKih4ZSAqIDEwKip5ZSk7ICB4ZSAqIDEwKip5ZSBtdXN0IGJlIGludGVncmFsCisgICAgICAgICAgICB3aGlsZSB4ZSAlIDEwID09IDA6CisgICAgICAgICAgICAgICAgeGUgLy89IDEwCisgICAgICAgICAgICAgICAgeWUgKz0gMQorICAgICAgICAgICAgaWYgeWUgPCAwOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBleHBvbmVudCA9IHhlICogMTAqKnllCisgICAgICAgICAgICBpZiB5LnNpZ24gPT0gMToKKyAgICAgICAgICAgICAgICBleHBvbmVudCA9IC1leHBvbmVudAorICAgICAgICAgICAgIyBpZiBvdGhlciBpcyBhIG5vbm5lZ2F0aXZlIGludGVnZXIsIHVzZSBpZGVhbCBleHBvbmVudAorICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW50ZWdlcigpIGFuZCBvdGhlci5fc2lnbiA9PSAwOgorICAgICAgICAgICAgICAgIGlkZWFsX2V4cG9uZW50ID0gc2VsZi5fZXhwKmludChvdGhlcikKKyAgICAgICAgICAgICAgICB6ZXJvcyA9IG1pbihleHBvbmVudC1pZGVhbF9leHBvbmVudCwgcC0xKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB6ZXJvcyA9IDAKKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsICcxJyArICcwJyp6ZXJvcywgZXhwb25lbnQtemVyb3MpCisKKyAgICAgICAgIyBjYXNlIHdoZXJlIHkgaXMgbmVnYXRpdmU6IHhjIG11c3QgYmUgZWl0aGVyIGEgcG93ZXIKKyAgICAgICAgIyBvZiAyIG9yIGEgcG93ZXIgb2YgNS4KKyAgICAgICAgaWYgeS5zaWduID09IDE6CisgICAgICAgICAgICBsYXN0X2RpZ2l0ID0geGMgJSAxMAorICAgICAgICAgICAgaWYgbGFzdF9kaWdpdCBpbiAoMiw0LDYsOCk6CisgICAgICAgICAgICAgICAgIyBxdWljayB0ZXN0IGZvciBwb3dlciBvZiAyCisgICAgICAgICAgICAgICAgaWYgeGMgJiAteGMgIT0geGM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICAgICAgIyBub3cgeGMgaXMgYSBwb3dlciBvZiAyOyBlIGlzIGl0cyBleHBvbmVudAorICAgICAgICAgICAgICAgIGUgPSBfbmJpdHMoeGMpLTEKKworICAgICAgICAgICAgICAgICMgV2Ugbm93IGhhdmU6CisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgICB4ID0gMioqZSAqIDEwKip4ZSwgZSA+IDAsIGFuZCB5IDwgMC4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBUaGUgZXhhY3QgcmVzdWx0IGlzOgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjICAgeCoqeSA9IDUqKigtZSp5KSAqIDEwKiooZSp5ICsgeGUqeSkKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBwcm92aWRlZCB0aGF0IGJvdGggZSp5IGFuZCB4ZSp5IGFyZSBpbnRlZ2Vycy4gIE5vdGUgdGhhdCBpZgorICAgICAgICAgICAgICAgICMgNSoqKC1lKnkpID49IDEwKipwLCB0aGVuIHRoZSByZXN1bHQgY2FuJ3QgYmUgZXhwcmVzc2VkCisgICAgICAgICAgICAgICAgIyBleGFjdGx5IHdpdGggcCBkaWdpdHMgb2YgcHJlY2lzaW9uLgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIFVzaW5nIHRoZSBhYm92ZSwgd2UgY2FuIGd1YXJkIGFnYWluc3QgbGFyZ2UgdmFsdWVzIG9mIHllLgorICAgICAgICAgICAgICAgICMgOTMvNjUgaXMgYW4gdXBwZXIgYm91bmQgZm9yIGxvZygxMCkvbG9nKDUpLCBzbyBpZgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjICAgeWUgPj0gbGVuKHN0cig5MypwLy82NSkpCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgdGhlbgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjICAgLWUqeSA+PSAteSA+PSAxMCoqeWUgPiA5MypwLzY1ID4gcCpsb2coMTApL2xvZyg1KSwKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBzbyA1KiooLWUqeSkgPj0gMTAqKnAsIGFuZCB0aGUgY29lZmZpY2llbnQgb2YgdGhlIHJlc3VsdAorICAgICAgICAgICAgICAgICMgY2FuJ3QgYmUgZXhwcmVzc2VkIGluIHAgZGlnaXRzLgorCisgICAgICAgICAgICAgICAgIyBlbWF4ID49IGxhcmdlc3QgZSBzdWNoIHRoYXQgNSoqZSA8IDEwKipwLgorICAgICAgICAgICAgICAgIGVtYXggPSBwKjkzLy82NQorICAgICAgICAgICAgICAgIGlmIHllID49IGxlbihzdHIoZW1heCkpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICAgICAgIyBGaW5kIC1lKnkgYW5kIC14ZSp5OyBib3RoIG11c3QgYmUgaW50ZWdlcnMKKyAgICAgICAgICAgICAgICBlID0gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KGUgKiB5YywgeWUpCisgICAgICAgICAgICAgICAgeGUgPSBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoeGUgKiB5YywgeWUpCisgICAgICAgICAgICAgICAgaWYgZSBpcyBOb25lIG9yIHhlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgICAgICBpZiBlID4gZW1heDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgICAgICB4YyA9IDUqKmUKKworICAgICAgICAgICAgZWxpZiBsYXN0X2RpZ2l0ID09IDU6CisgICAgICAgICAgICAgICAgIyBlID49IGxvZ181KHhjKSBpZiB4YyBpcyBhIHBvd2VyIG9mIDU7IHdlIGhhdmUKKyAgICAgICAgICAgICAgICAjIGVxdWFsaXR5IGFsbCB0aGUgd2F5IHVwIHRvIHhjPTUqKjI2NTgKKyAgICAgICAgICAgICAgICBlID0gX25iaXRzKHhjKSoyOC8vNjUKKyAgICAgICAgICAgICAgICB4YywgcmVtYWluZGVyID0gZGl2bW9kKDUqKmUsIHhjKQorICAgICAgICAgICAgICAgIGlmIHJlbWFpbmRlcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgICAgICB3aGlsZSB4YyAlIDUgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgeGMgLy89IDUKKyAgICAgICAgICAgICAgICAgICAgZSAtPSAxCisKKyAgICAgICAgICAgICAgICAjIEd1YXJkIGFnYWluc3QgbGFyZ2UgdmFsdWVzIG9mIHllLCB1c2luZyB0aGUgc2FtZSBsb2dpYyBhcyBpbgorICAgICAgICAgICAgICAgICMgdGhlICd4YyBpcyBhIHBvd2VyIG9mIDInIGJyYW5jaC4gIDEwLzMgaXMgYW4gdXBwZXIgYm91bmQgZm9yCisgICAgICAgICAgICAgICAgIyBsb2coMTApL2xvZygyKS4KKyAgICAgICAgICAgICAgICBlbWF4ID0gcCoxMC8vMworICAgICAgICAgICAgICAgIGlmIHllID49IGxlbihzdHIoZW1heCkpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICAgICAgZSA9IF9kZWNpbWFsX2xzaGlmdF9leGFjdChlICogeWMsIHllKQorICAgICAgICAgICAgICAgIHhlID0gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KHhlICogeWMsIHllKQorICAgICAgICAgICAgICAgIGlmIGUgaXMgTm9uZSBvciB4ZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICAgICAgaWYgZSA+IGVtYXg6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICAgICAgeGMgPSAyKiplCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgIGlmIHhjID49IDEwKipwOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICB4ZSA9IC1lLXhlCisgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCBzdHIoeGMpLCB4ZSkKKworICAgICAgICAjIG5vdyB5IGlzIHBvc2l0aXZlOyBmaW5kIG0gYW5kIG4gc3VjaCB0aGF0IHkgPSBtL24KKyAgICAgICAgaWYgeWUgPj0gMDoKKyAgICAgICAgICAgIG0sIG4gPSB5YyoxMCoqeWUsIDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHhlICE9IDAgYW5kIGxlbihzdHIoYWJzKHljKnhlKSkpIDw9IC15ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgeGNfYml0cyA9IF9uYml0cyh4YykKKyAgICAgICAgICAgIGlmIHhjICE9IDEgYW5kIGxlbihzdHIoYWJzKHljKSp4Y19iaXRzKSkgPD0gLXllOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBtLCBuID0geWMsIDEwKiooLXllKQorICAgICAgICAgICAgd2hpbGUgbSAlIDIgPT0gbiAlIDIgPT0gMDoKKyAgICAgICAgICAgICAgICBtIC8vPSAyCisgICAgICAgICAgICAgICAgbiAvLz0gMgorICAgICAgICAgICAgd2hpbGUgbSAlIDUgPT0gbiAlIDUgPT0gMDoKKyAgICAgICAgICAgICAgICBtIC8vPSA1CisgICAgICAgICAgICAgICAgbiAvLz0gNQorCisgICAgICAgICMgY29tcHV0ZSBudGggcm9vdCBvZiB4YyoxMCoqeGUKKyAgICAgICAgaWYgbiA+IDE6CisgICAgICAgICAgICAjIGlmIDEgPCB4YyA8IDIqKm4gdGhlbiB4YyBpc24ndCBhbiBudGggcG93ZXIKKyAgICAgICAgICAgIGlmIHhjICE9IDEgYW5kIHhjX2JpdHMgPD0gbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICB4ZSwgcmVtID0gZGl2bW9kKHhlLCBuKQorICAgICAgICAgICAgaWYgcmVtICE9IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgIyBjb21wdXRlIG50aCByb290IG9mIHhjIHVzaW5nIE5ld3RvbidzIG1ldGhvZAorICAgICAgICAgICAgYSA9IDEgPDwgLSgtX25iaXRzKHhjKS8vbikgIyBpbml0aWFsIGVzdGltYXRlCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHEsIHIgPSBkaXZtb2QoeGMsIGEqKihuLTEpKQorICAgICAgICAgICAgICAgIGlmIGEgPD0gcToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBhID0gKGEqKG4tMSkgKyBxKS8vbgorICAgICAgICAgICAgaWYgbm90IChhID09IHEgYW5kIHIgPT0gMCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIHhjID0gYQorCisgICAgICAgICMgbm93IHhjKjEwKip4ZSBpcyB0aGUgbnRoIHJvb3Qgb2YgdGhlIG9yaWdpbmFsIHhjKjEwKip4ZQorICAgICAgICAjIGNvbXB1dGUgbXRoIHBvd2VyIG9mIHhjKjEwKip4ZQorCisgICAgICAgICMgaWYgbSA+IHAqMTAwLy9fbG9nMTBfbGIoeGMpIHRoZW4gbSA+IHAvbG9nMTAoeGMpLCBoZW5jZSB4YyoqbSA+CisgICAgICAgICMgMTAqKnAgYW5kIHRoZSByZXN1bHQgaXMgbm90IHJlcHJlc2VudGFibGUuCisgICAgICAgIGlmIHhjID4gMSBhbmQgbSA+IHAqMTAwLy9fbG9nMTBfbGIoeGMpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgeGMgPSB4YyoqbQorICAgICAgICB4ZSAqPSBtCisgICAgICAgIGlmIHhjID4gMTAqKnA6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICMgYnkgdGhpcyBwb2ludCB0aGUgcmVzdWx0ICppcyogZXhhY3RseSByZXByZXNlbnRhYmxlCisgICAgICAgICMgYWRqdXN0IHRoZSBleHBvbmVudCB0byBnZXQgYXMgY2xvc2UgYXMgcG9zc2libGUgdG8gdGhlIGlkZWFsCisgICAgICAgICMgZXhwb25lbnQsIGlmIG5lY2Vzc2FyeQorICAgICAgICBzdHJfeGMgPSBzdHIoeGMpCisgICAgICAgIGlmIG90aGVyLl9pc2ludGVnZXIoKSBhbmQgb3RoZXIuX3NpZ24gPT0gMDoKKyAgICAgICAgICAgIGlkZWFsX2V4cG9uZW50ID0gc2VsZi5fZXhwKmludChvdGhlcikKKyAgICAgICAgICAgIHplcm9zID0gbWluKHhlLWlkZWFsX2V4cG9uZW50LCBwLWxlbihzdHJfeGMpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgemVyb3MgPSAwCisgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsIHN0cl94YysnMCcqemVyb3MsIHhlLXplcm9zKQorCisgICAgZGVmIF9fcG93X18oc2VsZiwgb3RoZXIsIG1vZHVsbz1Ob25lLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm4gc2VsZiAqKiBvdGhlciBbICUgbW9kdWxvXS4KKworICAgICAgICBXaXRoIHR3byBhcmd1bWVudHMsIGNvbXB1dGUgc2VsZioqb3RoZXIuCisKKyAgICAgICAgV2l0aCB0aHJlZSBhcmd1bWVudHMsIGNvbXB1dGUgKHNlbGYqKm90aGVyKSAlIG1vZHVsby4gIEZvciB0aGUKKyAgICAgICAgdGhyZWUgYXJndW1lbnQgZm9ybSwgdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgb24gdGhlCisgICAgICAgIGFyZ3VtZW50cyBob2xkOgorCisgICAgICAgICAtIGFsbCB0aHJlZSBhcmd1bWVudHMgbXVzdCBiZSBpbnRlZ3JhbAorICAgICAgICAgLSBvdGhlciBtdXN0IGJlIG5vbm5lZ2F0aXZlCisgICAgICAgICAtIGVpdGhlciBzZWxmIG9yIG90aGVyIChvciBib3RoKSBtdXN0IGJlIG5vbnplcm8KKyAgICAgICAgIC0gbW9kdWxvIG11c3QgYmUgbm9uemVybyBhbmQgbXVzdCBoYXZlIGF0IG1vc3QgcCBkaWdpdHMsCisgICAgICAgICAgIHdoZXJlIHAgaXMgdGhlIGNvbnRleHQgcHJlY2lzaW9uLgorCisgICAgICAgIElmIGFueSBvZiB0aGVzZSByZXN0cmljdGlvbnMgaXMgdmlvbGF0ZWQgdGhlIEludmFsaWRPcGVyYXRpb24KKyAgICAgICAgZmxhZyBpcyByYWlzZWQuCisKKyAgICAgICAgVGhlIHJlc3VsdCBvZiBwb3coc2VsZiwgb3RoZXIsIG1vZHVsbykgaXMgaWRlbnRpY2FsIHRvIHRoZQorICAgICAgICByZXN1bHQgdGhhdCB3b3VsZCBiZSBvYnRhaW5lZCBieSBjb21wdXRpbmcgKHNlbGYqKm90aGVyKSAlCisgICAgICAgIG1vZHVsbyB3aXRoIHVuYm91bmRlZCBwcmVjaXNpb24sIGJ1dCBpcyBjb21wdXRlZCBtb3JlCisgICAgICAgIGVmZmljaWVudGx5LiAgSXQgaXMgYWx3YXlzIGV4YWN0LgorICAgICAgICAiIiIKKworICAgICAgICBpZiBtb2R1bG8gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcG93ZXJfbW9kdWxvKG90aGVyLCBtb2R1bG8sIGNvbnRleHQpCisKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgIyBlaXRoZXIgYXJndW1lbnQgaXMgYSBOYU4gPT4gcmVzdWx0IGlzIE5hTgorICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgIyAwKiowID0gTmFOICghKSwgeCoqMCA9IDEgZm9yIG5vbnplcm8geCAoaW5jbHVkaW5nICsvLUluZmluaXR5KQorICAgICAgICBpZiBub3Qgb3RoZXI6CisgICAgICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJzAgKiogMCcpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBfT25lCisKKyAgICAgICAgIyByZXN1bHQgaGFzIHNpZ24gMSBpZmYgc2VsZi5fc2lnbiBpcyAxIGFuZCBvdGhlciBpcyBhbiBvZGQgaW50ZWdlcgorICAgICAgICByZXN1bHRfc2lnbiA9IDAKKyAgICAgICAgaWYgc2VsZi5fc2lnbiA9PSAxOgorICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW50ZWdlcigpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBvdGhlci5faXNldmVuKCk6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zaWduID0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIC12ZSoqbm9uaW50ZWdlciA9IE5hTgorICAgICAgICAgICAgICAgICMgKC0wKSoqbm9uaW50ZWdlciA9IDAqKm5vbmludGVnZXIKKyAgICAgICAgICAgICAgICBpZiBzZWxmOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICd4ICoqIHkgd2l0aCB4IG5lZ2F0aXZlIGFuZCB5IG5vdCBhbiBpbnRlZ2VyJykKKyAgICAgICAgICAgICMgbmVnYXRlIHNlbGYsIHdpdGhvdXQgZG9pbmcgYW55IHVud2FudGVkIHJvdW5kaW5nCisgICAgICAgICAgICBzZWxmID0gc2VsZi5jb3B5X25lZ2F0ZSgpCisKKyAgICAgICAgIyAwKiooK3ZlIG9yIEluZik9IDA7IDAqKigtdmUgb3IgLUluZikgPSBJbmZpbml0eQorICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIGlmIG90aGVyLl9zaWduID09IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUocmVzdWx0X3NpZ24sICcwJywgMCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtyZXN1bHRfc2lnbl0KKworICAgICAgICAjIEluZioqKCt2ZSBvciBJbmYpID0gSW5mOyBJbmYqKigtdmUgb3IgLUluZikgPSAwCisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIGlmIG90aGVyLl9zaWduID09IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtyZXN1bHRfc2lnbl0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUocmVzdWx0X3NpZ24sICcwJywgMCkKKworICAgICAgICAjIDEqKm90aGVyID0gMSwgYnV0IHRoZSBjaG9pY2Ugb2YgZXhwb25lbnQgYW5kIHRoZSBmbGFncworICAgICAgICAjIGRlcGVuZCBvbiB0aGUgZXhwb25lbnQgb2Ygc2VsZiwgYW5kIG9uIHdoZXRoZXIgb3RoZXIgaXMgYQorICAgICAgICAjIHBvc2l0aXZlIGludGVnZXIsIGEgbmVnYXRpdmUgaW50ZWdlciwgb3IgbmVpdGhlcgorICAgICAgICBpZiBzZWxmID09IF9PbmU6CisgICAgICAgICAgICBpZiBvdGhlci5faXNpbnRlZ2VyKCk6CisgICAgICAgICAgICAgICAgIyBleHAgPSBtYXgoc2VsZi5fZXhwKm1heChpbnQob3RoZXIpLCAwKSwKKyAgICAgICAgICAgICAgICAjIDEtY29udGV4dC5wcmVjKSBidXQgZXZhbHVhdGluZyBpbnQob3RoZXIpIGRpcmVjdGx5CisgICAgICAgICAgICAgICAgIyBpcyBkYW5nZXJvdXMgdW50aWwgd2Uga25vdyBvdGhlciBpcyBzbWFsbCAob3RoZXIKKyAgICAgICAgICAgICAgICAjIGNvdWxkIGJlIDFlOTk5OTk5OTk5KQorICAgICAgICAgICAgICAgIGlmIG90aGVyLl9zaWduID09IDE6CisgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXIgPSAwCisgICAgICAgICAgICAgICAgZWxpZiBvdGhlciA+IGNvbnRleHQucHJlYzoKKyAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllciA9IGNvbnRleHQucHJlYworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXIgPSBpbnQob3RoZXIpCisKKyAgICAgICAgICAgICAgICBleHAgPSBzZWxmLl9leHAgKiBtdWx0aXBsaWVyCisgICAgICAgICAgICAgICAgaWYgZXhwIDwgMS1jb250ZXh0LnByZWM6CisgICAgICAgICAgICAgICAgICAgIGV4cCA9IDEtY29udGV4dC5wcmVjCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCisgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKKyAgICAgICAgICAgICAgICBleHAgPSAxLWNvbnRleHQucHJlYworCisgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRfc2lnbiwgJzEnKycwJyotZXhwLCBleHApCisKKyAgICAgICAgIyBjb21wdXRlIGFkanVzdGVkIGV4cG9uZW50IG9mIHNlbGYKKyAgICAgICAgc2VsZl9hZGogPSBzZWxmLmFkanVzdGVkKCkKKworICAgICAgICAjIHNlbGYgKiogaW5maW5pdHkgaXMgaW5maW5pdHkgaWYgc2VsZiA+IDEsIDAgaWYgc2VsZiA8IDEKKyAgICAgICAgIyBzZWxmICoqIC1pbmZpbml0eSBpcyBpbmZpbml0eSBpZiBzZWxmIDwgMSwgMCBpZiBzZWxmID4gMQorICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgaWYgKG90aGVyLl9zaWduID09IDApID09IChzZWxmX2FkaiA8IDApOgorICAgICAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCAnMCcsIDApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbcmVzdWx0X3NpZ25dCisKKyAgICAgICAgIyBmcm9tIGhlcmUgb24sIHRoZSByZXN1bHQgYWx3YXlzIGdvZXMgdGhyb3VnaCB0aGUgY2FsbAorICAgICAgICAjIHRvIF9maXggYXQgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICBhbnMgPSBOb25lCisgICAgICAgIGV4YWN0ID0gRmFsc2UKKworICAgICAgICAjIGNydWRlIHRlc3QgdG8gY2F0Y2ggY2FzZXMgb2YgZXh0cmVtZSBvdmVyZmxvdy91bmRlcmZsb3cuICBJZgorICAgICAgICAjIGxvZzEwKHNlbGYpKm90aGVyID49IDEwKipib3VuZCBhbmQgYm91bmQgPj0gbGVuKHN0cihFbWF4KSkKKyAgICAgICAgIyB0aGVuIDEwKipib3VuZCA+PSAxMCoqbGVuKHN0cihFbWF4KSkgPj0gRW1heCsxIGFuZCBoZW5jZQorICAgICAgICAjIHNlbGYqKm90aGVyID49IDEwKiooRW1heCsxKSwgc28gb3ZlcmZsb3cgb2NjdXJzLiAgVGhlIHRlc3QKKyAgICAgICAgIyBmb3IgdW5kZXJmbG93IGlzIHNpbWlsYXIuCisgICAgICAgIGJvdW5kID0gc2VsZi5fbG9nMTBfZXhwX2JvdW5kKCkgKyBvdGhlci5hZGp1c3RlZCgpCisgICAgICAgIGlmIChzZWxmX2FkaiA+PSAwKSA9PSAob3RoZXIuX3NpZ24gPT0gMCk6CisgICAgICAgICAgICAjIHNlbGYgPiAxIGFuZCBvdGhlciArdmUsIG9yIHNlbGYgPCAxIGFuZCBvdGhlciAtdmUKKyAgICAgICAgICAgICMgcG9zc2liaWxpdHkgb2Ygb3ZlcmZsb3cKKyAgICAgICAgICAgIGlmIGJvdW5kID49IGxlbihzdHIoY29udGV4dC5FbWF4KSk6CisgICAgICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRfc2lnbiwgJzEnLCBjb250ZXh0LkVtYXgrMSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgc2VsZiA+IDEgYW5kIG90aGVyIC12ZSwgb3Igc2VsZiA8IDEgYW5kIG90aGVyICt2ZQorICAgICAgICAgICAgIyBwb3NzaWJpbGl0eSBvZiB1bmRlcmZsb3cgdG8gMAorICAgICAgICAgICAgRXRpbnkgPSBjb250ZXh0LkV0aW55KCkKKyAgICAgICAgICAgIGlmIGJvdW5kID49IGxlbihzdHIoLUV0aW55KSk6CisgICAgICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRfc2lnbiwgJzEnLCBFdGlueS0xKQorCisgICAgICAgICMgdHJ5IGZvciBhbiBleGFjdCByZXN1bHQgd2l0aCBwcmVjaXNpb24gKzEKKyAgICAgICAgaWYgYW5zIGlzIE5vbmU6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9wb3dlcl9leGFjdChvdGhlciwgY29udGV4dC5wcmVjICsgMSkKKyAgICAgICAgICAgIGlmIGFucyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiByZXN1bHRfc2lnbiA9PSAxOgorICAgICAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKDEsIGFucy5faW50LCBhbnMuX2V4cCkKKyAgICAgICAgICAgICAgICBleGFjdCA9IFRydWUKKworICAgICAgICAjIHVzdWFsIGNhc2U6IGluZXhhY3QgcmVzdWx0LCB4Kip5IGNvbXB1dGVkIGRpcmVjdGx5IGFzIGV4cCh5KmxvZyh4KSkKKyAgICAgICAgaWYgYW5zIGlzIE5vbmU6CisgICAgICAgICAgICBwID0gY29udGV4dC5wcmVjCisgICAgICAgICAgICB4ID0gX1dvcmtSZXAoc2VsZikKKyAgICAgICAgICAgIHhjLCB4ZSA9IHguaW50LCB4LmV4cAorICAgICAgICAgICAgeSA9IF9Xb3JrUmVwKG90aGVyKQorICAgICAgICAgICAgeWMsIHllID0geS5pbnQsIHkuZXhwCisgICAgICAgICAgICBpZiB5LnNpZ24gPT0gMToKKyAgICAgICAgICAgICAgICB5YyA9IC15YworCisgICAgICAgICAgICAjIGNvbXB1dGUgY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0OiAgc3RhcnQgd2l0aCBwcmVjaXNpb24gKzMsCisgICAgICAgICAgICAjIHRoZW4gaW5jcmVhc2UgcHJlY2lzaW9uIHVudGlsIHJlc3VsdCBpcyB1bmFtYmlndW91c2x5IHJvdW5kYWJsZQorICAgICAgICAgICAgZXh0cmEgPSAzCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGNvZWZmLCBleHAgPSBfZHBvd2VyKHhjLCB4ZSwgeWMsIHllLCBwK2V4dHJhKQorICAgICAgICAgICAgICAgIGlmIGNvZWZmICUgKDUqMTAqKihsZW4oc3RyKGNvZWZmKSktcC0xKSk6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXh0cmEgKz0gMworCisgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCBzdHIoY29lZmYpLCBleHApCisKKyAgICAgICAgIyB1bmxpa2UgZXhwLCBsbiBhbmQgbG9nMTAsIHRoZSBwb3dlciBmdW5jdGlvbiByZXNwZWN0cyB0aGUKKyAgICAgICAgIyByb3VuZGluZyBtb2RlOyBubyBuZWVkIHRvIHN3aXRjaCB0byBST1VORF9IQUxGX0VWRU4gaGVyZQorCisgICAgICAgICMgVGhlcmUncyBhIGRpZmZpY3VsdHkgaGVyZSB3aGVuICdvdGhlcicgaXMgbm90IGFuIGludGVnZXIgYW5kCisgICAgICAgICMgdGhlIHJlc3VsdCBpcyBleGFjdC4gIEluIHRoaXMgY2FzZSwgdGhlIHNwZWNpZmljYXRpb24KKyAgICAgICAgIyByZXF1aXJlcyB0aGF0IHRoZSBJbmV4YWN0IGZsYWcgYmUgcmFpc2VkIChpbiBzcGl0ZSBvZgorICAgICAgICAjIGV4YWN0bmVzcyksIGJ1dCBzaW5jZSB0aGUgcmVzdWx0IGlzIGV4YWN0IF9maXggd29uJ3QgZG8gdGhpcworICAgICAgICAjIGZvciB1cy4gIChDb3JyZXNwb25kaW5nbHksIHRoZSBVbmRlcmZsb3cgc2lnbmFsIHNob3VsZCBhbHNvCisgICAgICAgICMgYmUgcmFpc2VkIGZvciBzdWJub3JtYWwgcmVzdWx0cy4pICBXZSBjYW4ndCBkaXJlY3RseSByYWlzZQorICAgICAgICAjIHRoZXNlIHNpZ25hbHMgZWl0aGVyIGJlZm9yZSBvciBhZnRlciBjYWxsaW5nIF9maXgsIHNpbmNlCisgICAgICAgICMgdGhhdCB3b3VsZCB2aW9sYXRlIHRoZSBwcmVjZWRlbmNlIGZvciBzaWduYWxzLiAgU28gd2Ugd3JhcAorICAgICAgICAjIHRoZSAuX2ZpeCBjYWxsIGluIGEgdGVtcG9yYXJ5IGNvbnRleHQsIGFuZCByZXJhaXNlCisgICAgICAgICMgYWZ0ZXJ3YXJkcy4KKyAgICAgICAgaWYgZXhhY3QgYW5kIG5vdCBvdGhlci5faXNpbnRlZ2VyKCk6CisgICAgICAgICAgICAjIHBhZCB3aXRoIHplcm9zIHVwIHRvIGxlbmd0aCBjb250ZXh0LnByZWMrMSBpZiBuZWNlc3Nhcnk7IHRoaXMKKyAgICAgICAgICAgICMgZW5zdXJlcyB0aGF0IHRoZSBSb3VuZGVkIHNpZ25hbCB3aWxsIGJlIHJhaXNlZC4KKyAgICAgICAgICAgIGlmIGxlbihhbnMuX2ludCkgPD0gY29udGV4dC5wcmVjOgorICAgICAgICAgICAgICAgIGV4cGRpZmYgPSBjb250ZXh0LnByZWMgKyAxIC0gbGVuKGFucy5faW50KQorICAgICAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoYW5zLl9zaWduLCBhbnMuX2ludCsnMCcqZXhwZGlmZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFucy5fZXhwLWV4cGRpZmYpCisKKyAgICAgICAgICAgICMgY3JlYXRlIGEgY29weSBvZiB0aGUgY3VycmVudCBjb250ZXh0LCB3aXRoIGNsZWFyZWQgZmxhZ3MvdHJhcHMKKyAgICAgICAgICAgIG5ld2NvbnRleHQgPSBjb250ZXh0LmNvcHkoKQorICAgICAgICAgICAgbmV3Y29udGV4dC5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBmb3IgZXhjZXB0aW9uIGluIF9zaWduYWxzOgorICAgICAgICAgICAgICAgIG5ld2NvbnRleHQudHJhcHNbZXhjZXB0aW9uXSA9IDAKKworICAgICAgICAgICAgIyByb3VuZCBpbiB0aGUgbmV3IGNvbnRleHQKKyAgICAgICAgICAgIGFucyA9IGFucy5fZml4KG5ld2NvbnRleHQpCisKKyAgICAgICAgICAgICMgcmFpc2UgSW5leGFjdCwgYW5kIGlmIG5lY2Vzc2FyeSwgVW5kZXJmbG93CisgICAgICAgICAgICBuZXdjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQorICAgICAgICAgICAgaWYgbmV3Y29udGV4dC5mbGFnc1tTdWJub3JtYWxdOgorICAgICAgICAgICAgICAgIG5ld2NvbnRleHQuX3JhaXNlX2Vycm9yKFVuZGVyZmxvdykKKworICAgICAgICAgICAgIyBwcm9wYWdhdGUgc2lnbmFscyB0byB0aGUgb3JpZ2luYWwgY29udGV4dDsgX2ZpeCBjb3VsZAorICAgICAgICAgICAgIyBoYXZlIHJhaXNlZCBhbnkgb2YgT3ZlcmZsb3csIFVuZGVyZmxvdywgU3Vibm9ybWFsLAorICAgICAgICAgICAgIyBJbmV4YWN0LCBSb3VuZGVkLCBDbGFtcGVkLiAgT3ZlcmZsb3cgbmVlZHMgdGhlIGNvcnJlY3QKKyAgICAgICAgICAgICMgYXJndW1lbnRzLiAgTm90ZSB0aGF0IHRoZSBvcmRlciBvZiB0aGUgZXhjZXB0aW9ucyBpcworICAgICAgICAgICAgIyBpbXBvcnRhbnQgaGVyZS4KKyAgICAgICAgICAgIGlmIG5ld2NvbnRleHQuZmxhZ3NbT3ZlcmZsb3ddOgorICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKE92ZXJmbG93LCAnYWJvdmUgRW1heCcsIGFucy5fc2lnbikKKyAgICAgICAgICAgIGZvciBleGNlcHRpb24gaW4gVW5kZXJmbG93LCBTdWJub3JtYWwsIEluZXhhY3QsIFJvdW5kZWQsIENsYW1wZWQ6CisgICAgICAgICAgICAgICAgaWYgbmV3Y29udGV4dC5mbGFnc1tleGNlcHRpb25dOgorICAgICAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihleGNlcHRpb24pCisKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCisKKyAgICAgICAgcmV0dXJuIGFucworCisgICAgZGVmIF9fcnBvd19fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJTd2FwcyBzZWxmL290aGVyIGFuZCByZXR1cm5zIF9fcG93X18uIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisgICAgICAgIHJldHVybiBvdGhlci5fX3Bvd19fKHNlbGYsIGNvbnRleHQ9Y29udGV4dCkKKworICAgIGRlZiBub3JtYWxpemUoc2VsZiwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiTm9ybWFsaXplLSBzdHJpcCB0cmFpbGluZyAwcywgY2hhbmdlIGFueXRoaW5nIGVxdWFsIHRvIDAgdG8gMGUwIiIiCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgZHVwID0gc2VsZi5fZml4KGNvbnRleHQpCisgICAgICAgIGlmIGR1cC5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgcmV0dXJuIGR1cAorCisgICAgICAgIGlmIG5vdCBkdXA6CisgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShkdXAuX3NpZ24sICcwJywgMCkKKyAgICAgICAgZXhwX21heCA9IFtjb250ZXh0LkVtYXgsIGNvbnRleHQuRXRvcCgpXVtjb250ZXh0LmNsYW1wXQorICAgICAgICBlbmQgPSBsZW4oZHVwLl9pbnQpCisgICAgICAgIGV4cCA9IGR1cC5fZXhwCisgICAgICAgIHdoaWxlIGR1cC5faW50W2VuZC0xXSA9PSAnMCcgYW5kIGV4cCA8IGV4cF9tYXg6CisgICAgICAgICAgICBleHAgKz0gMQorICAgICAgICAgICAgZW5kIC09IDEKKyAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoZHVwLl9zaWduLCBkdXAuX2ludFs6ZW5kXSwgZXhwKQorCisgICAgZGVmIHF1YW50aXplKHNlbGYsIGV4cCwgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUXVhbnRpemUgc2VsZiBzbyBpdHMgZXhwb25lbnQgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiBleHAuCisKKyAgICAgICAgU2ltaWxhciB0byBzZWxmLl9yZXNjYWxlKGV4cC5fZXhwKSBidXQgd2l0aCBlcnJvciBjaGVja2luZy4KKyAgICAgICAgIiIiCisgICAgICAgIGV4cCA9IF9jb252ZXJ0X290aGVyKGV4cCwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgaWYgcm91bmRpbmcgaXMgTm9uZToKKyAgICAgICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5yb3VuZGluZworCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3IgZXhwLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhleHAsIGNvbnRleHQpCisgICAgICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgICAgICBpZiBleHAuX2lzaW5maW5pdHkoKSBvciBzZWxmLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICAgICAgaWYgZXhwLl9pc2luZmluaXR5KCkgYW5kIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikgICMgaWYgYm90aCBhcmUgaW5mLCBpdCBpcyBPSworICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdWFudGl6ZSB3aXRoIG9uZSBJTkYnKQorCisgICAgICAgICMgZXhwLl9leHAgc2hvdWxkIGJlIGJldHdlZW4gRXRpbnkgYW5kIEVtYXgKKyAgICAgICAgaWYgbm90IChjb250ZXh0LkV0aW55KCkgPD0gZXhwLl9leHAgPD0gY29udGV4dC5FbWF4KToKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICd0YXJnZXQgZXhwb25lbnQgb3V0IG9mIGJvdW5kcyBpbiBxdWFudGl6ZScpCisKKyAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcwJywgZXhwLl9leHApCisgICAgICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKKworICAgICAgICBzZWxmX2FkanVzdGVkID0gc2VsZi5hZGp1c3RlZCgpCisgICAgICAgIGlmIHNlbGZfYWRqdXN0ZWQgPiBjb250ZXh0LkVtYXg6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhwb25lbnQgb2YgcXVhbnRpemUgcmVzdWx0IHRvbyBsYXJnZSBmb3IgY3VycmVudCBjb250ZXh0JykKKyAgICAgICAgaWYgc2VsZl9hZGp1c3RlZCAtIGV4cC5fZXhwICsgMSA+IGNvbnRleHQucHJlYzoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdWFudGl6ZSByZXN1bHQgaGFzIHRvbyBtYW55IGRpZ2l0cyBmb3IgY3VycmVudCBjb250ZXh0JykKKworICAgICAgICBhbnMgPSBzZWxmLl9yZXNjYWxlKGV4cC5fZXhwLCByb3VuZGluZykKKyAgICAgICAgaWYgYW5zLmFkanVzdGVkKCkgPiBjb250ZXh0LkVtYXg6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhwb25lbnQgb2YgcXVhbnRpemUgcmVzdWx0IHRvbyBsYXJnZSBmb3IgY3VycmVudCBjb250ZXh0JykKKyAgICAgICAgaWYgbGVuKGFucy5faW50KSA+IGNvbnRleHQucHJlYzoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdWFudGl6ZSByZXN1bHQgaGFzIHRvbyBtYW55IGRpZ2l0cyBmb3IgY3VycmVudCBjb250ZXh0JykKKworICAgICAgICAjIHJhaXNlIGFwcHJvcHJpYXRlIGZsYWdzCisgICAgICAgIGlmIGFucyBhbmQgYW5zLmFkanVzdGVkKCkgPCBjb250ZXh0LkVtaW46CisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihTdWJub3JtYWwpCisgICAgICAgIGlmIGFucy5fZXhwID4gc2VsZi5fZXhwOgorICAgICAgICAgICAgaWYgYW5zICE9IHNlbGY6CisgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCisKKyAgICAgICAgIyBjYWxsIHRvIGZpeCB0YWtlcyBjYXJlIG9mIGFueSBuZWNlc3NhcnkgZm9sZGRvd24sIGFuZAorICAgICAgICAjIHNpZ25hbHMgQ2xhbXBlZCBpZiBuZWNlc3NhcnkKKyAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGFucworCisgICAgZGVmIHNhbWVfcXVhbnR1bShzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBhbmQgb3RoZXIgaGF2ZSB0aGUgc2FtZSBleHBvbmVudDsgb3RoZXJ3aXNlCisgICAgICAgIHJldHVybiBGYWxzZS4KKworICAgICAgICBJZiBlaXRoZXIgb3BlcmFuZCBpcyBhIHNwZWNpYWwgdmFsdWUsIHRoZSBmb2xsb3dpbmcgcnVsZXMgYXJlIHVzZWQ6CisgICAgICAgICAgICogcmV0dXJuIFRydWUgaWYgYm90aCBvcGVyYW5kcyBhcmUgaW5maW5pdGllcworICAgICAgICAgICAqIHJldHVybiBUcnVlIGlmIGJvdGggb3BlcmFuZHMgYXJlIE5hTnMKKyAgICAgICAgICAgKiBvdGhlcndpc2UsIHJldHVybiBGYWxzZS4KKyAgICAgICAgIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIHJldHVybiAoc2VsZi5pc19uYW4oKSBhbmQgb3RoZXIuaXNfbmFuKCkgb3IKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pc19pbmZpbml0ZSgpIGFuZCBvdGhlci5pc19pbmZpbml0ZSgpKQorICAgICAgICByZXR1cm4gc2VsZi5fZXhwID09IG90aGVyLl9leHAKKworICAgIGRlZiBfcmVzY2FsZShzZWxmLCBleHAsIHJvdW5kaW5nKToKKyAgICAgICAgIiIiUmVzY2FsZSBzZWxmIHNvIHRoYXQgdGhlIGV4cG9uZW50IGlzIGV4cCwgZWl0aGVyIGJ5IHBhZGRpbmcgd2l0aCB6ZXJvcworICAgICAgICBvciBieSB0cnVuY2F0aW5nIGRpZ2l0cywgdXNpbmcgdGhlIGdpdmVuIHJvdW5kaW5nIG1vZGUuCisKKyAgICAgICAgU3BlY2lhbHMgYXJlIHJldHVybmVkIHdpdGhvdXQgY2hhbmdlLiAgVGhpcyBvcGVyYXRpb24gaXMKKyAgICAgICAgcXVpZXQ6IGl0IHJhaXNlcyBubyBmbGFncywgYW5kIHVzZXMgbm8gaW5mb3JtYXRpb24gZnJvbSB0aGUKKyAgICAgICAgY29udGV4dC4KKworICAgICAgICBleHAgPSBleHAgdG8gc2NhbGUgdG8gKGFuIGludGVnZXIpCisgICAgICAgIHJvdW5kaW5nID0gcm91bmRpbmcgbW9kZQorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzAnLCBleHApCisKKyAgICAgICAgaWYgc2VsZi5fZXhwID49IGV4cDoKKyAgICAgICAgICAgICMgcGFkIGFuc3dlciB3aXRoIHplcm9zIGlmIG5lY2Vzc2FyeQorICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnQgKyAnMCcqKHNlbGYuX2V4cCAtIGV4cCksIGV4cCkKKworICAgICAgICAjIHRvbyBtYW55IGRpZ2l0czsgcm91bmQgYW5kIGxvc2UgZGF0YS4gIElmIHNlbGYuYWRqdXN0ZWQoKSA8CisgICAgICAgICMgZXhwLTEsIHJlcGxhY2Ugc2VsZiBieSAxMCoqKGV4cC0xKSBiZWZvcmUgcm91bmRpbmcKKyAgICAgICAgZGlnaXRzID0gbGVuKHNlbGYuX2ludCkgKyBzZWxmLl9leHAgLSBleHAKKyAgICAgICAgaWYgZGlnaXRzIDwgMDoKKyAgICAgICAgICAgIHNlbGYgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcxJywgZXhwLTEpCisgICAgICAgICAgICBkaWdpdHMgPSAwCisgICAgICAgIHRoaXNfZnVuY3Rpb24gPSBzZWxmLl9waWNrX3JvdW5kaW5nX2Z1bmN0aW9uW3JvdW5kaW5nXQorICAgICAgICBjaGFuZ2VkID0gdGhpc19mdW5jdGlvbihzZWxmLCBkaWdpdHMpCisgICAgICAgIGNvZWZmID0gc2VsZi5faW50WzpkaWdpdHNdIG9yICcwJworICAgICAgICBpZiBjaGFuZ2VkID09IDE6CisgICAgICAgICAgICBjb2VmZiA9IHN0cihpbnQoY29lZmYpKzEpCisgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sIGNvZWZmLCBleHApCisKKyAgICBkZWYgX3JvdW5kKHNlbGYsIHBsYWNlcywgcm91bmRpbmcpOgorICAgICAgICAiIiJSb3VuZCBhIG5vbnplcm8sIG5vbnNwZWNpYWwgRGVjaW1hbCB0byBhIGZpeGVkIG51bWJlciBvZgorICAgICAgICBzaWduaWZpY2FudCBmaWd1cmVzLCB1c2luZyB0aGUgZ2l2ZW4gcm91bmRpbmcgbW9kZS4KKworICAgICAgICBJbmZpbml0aWVzLCBOYU5zIGFuZCB6ZXJvcyBhcmUgcmV0dXJuZWQgdW5hbHRlcmVkLgorCisgICAgICAgIFRoaXMgb3BlcmF0aW9uIGlzIHF1aWV0OiBpdCByYWlzZXMgbm8gZmxhZ3MsIGFuZCB1c2VzIG5vCisgICAgICAgIGluZm9ybWF0aW9uIGZyb20gdGhlIGNvbnRleHQuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHBsYWNlcyA8PSAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXJndW1lbnQgc2hvdWxkIGJlIGF0IGxlYXN0IDEgaW4gX3JvdW5kIikKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisgICAgICAgIGFucyA9IHNlbGYuX3Jlc2NhbGUoc2VsZi5hZGp1c3RlZCgpKzEtcGxhY2VzLCByb3VuZGluZykKKyAgICAgICAgIyBpdCBjYW4gaGFwcGVuIHRoYXQgdGhlIHJlc2NhbGUgYWx0ZXJzIHRoZSBhZGp1c3RlZCBleHBvbmVudDsKKyAgICAgICAgIyBmb3IgZXhhbXBsZSB3aGVuIHJvdW5kaW5nIDk5Ljk3IHRvIDMgc2lnbmlmaWNhbnQgZmlndXJlcy4KKyAgICAgICAgIyBXaGVuIHRoaXMgaGFwcGVucyB3ZSBlbmQgdXAgd2l0aCBhbiBleHRyYSAwIGF0IHRoZSBlbmQgb2YKKyAgICAgICAgIyB0aGUgbnVtYmVyOyBhIHNlY29uZCByZXNjYWxlIGZpeGVzIHRoaXMuCisgICAgICAgIGlmIGFucy5hZGp1c3RlZCgpICE9IHNlbGYuYWRqdXN0ZWQoKToKKyAgICAgICAgICAgIGFucyA9IGFucy5fcmVzY2FsZShhbnMuYWRqdXN0ZWQoKSsxLXBsYWNlcywgcm91bmRpbmcpCisgICAgICAgIHJldHVybiBhbnMKKworICAgIGRlZiB0b19pbnRlZ3JhbF9leGFjdChzZWxmLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSb3VuZHMgdG8gYSBuZWFyYnkgaW50ZWdlci4KKworICAgICAgICBJZiBubyByb3VuZGluZyBtb2RlIGlzIHNwZWNpZmllZCwgdGFrZSB0aGUgcm91bmRpbmcgbW9kZSBmcm9tCisgICAgICAgIHRoZSBjb250ZXh0LiAgVGhpcyBtZXRob2QgcmFpc2VzIHRoZSBSb3VuZGVkIGFuZCBJbmV4YWN0IGZsYWdzCisgICAgICAgIHdoZW4gYXBwcm9wcmlhdGUuCisKKyAgICAgICAgU2VlIGFsc286IHRvX2ludGVncmFsX3ZhbHVlLCB3aGljaCBkb2VzIGV4YWN0bHkgdGhlIHNhbWUgYXMKKyAgICAgICAgdGhpcyBtZXRob2QgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCByYWlzZSBJbmV4YWN0IG9yIFJvdW5kZWQuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCisgICAgICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFucworICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKyAgICAgICAgaWYgc2VsZi5fZXhwID49IDA6CisgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcwJywgMCkKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICBpZiByb3VuZGluZyBpcyBOb25lOgorICAgICAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0LnJvdW5kaW5nCisgICAgICAgIGFucyA9IHNlbGYuX3Jlc2NhbGUoMCwgcm91bmRpbmcpCisgICAgICAgIGlmIGFucyAhPSBzZWxmOgorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKKyAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKKyAgICAgICAgcmV0dXJuIGFucworCisgICAgZGVmIHRvX2ludGVncmFsX3ZhbHVlKHNlbGYsIHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJvdW5kcyB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLCB3aXRob3V0IHJhaXNpbmcgaW5leGFjdCwgcm91bmRlZC4iIiIKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICBpZiByb3VuZGluZyBpcyBOb25lOgorICAgICAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0LnJvdW5kaW5nCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorICAgICAgICBpZiBzZWxmLl9leHAgPj0gMDoKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVzY2FsZSgwLCByb3VuZGluZykKKworICAgICMgdGhlIG1ldGhvZCBuYW1lIGNoYW5nZWQsIGJ1dCB3ZSBwcm92aWRlIGFsc28gdGhlIG9sZCBvbmUsIGZvciBjb21wYXRpYmlsaXR5CisgICAgdG9faW50ZWdyYWwgPSB0b19pbnRlZ3JhbF92YWx1ZQorCisgICAgZGVmIHNxcnQoc2VsZiwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBzcXVhcmUgcm9vdCBvZiBzZWxmLiIiIgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQorICAgICAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpIGFuZCBzZWxmLl9zaWduID09IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKworICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgICMgZXhwb25lbnQgPSBzZWxmLl9leHAgLy8gMi4gIHNxcnQoLTApID0gLTAKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzAnLCBzZWxmLl9leHAgLy8gMikKKyAgICAgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgICAgIGlmIHNlbGYuX3NpZ24gPT0gMToKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc3FydCgteCksIHggPiAwJykKKworICAgICAgICAjIEF0IHRoaXMgcG9pbnQgc2VsZiByZXByZXNlbnRzIGEgcG9zaXRpdmUgbnVtYmVyLiAgTGV0IHAgYmUKKyAgICAgICAgIyB0aGUgZGVzaXJlZCBwcmVjaXNpb24gYW5kIGV4cHJlc3Mgc2VsZiBpbiB0aGUgZm9ybSBjKjEwMCoqZQorICAgICAgICAjIHdpdGggYyBhIHBvc2l0aXZlIHJlYWwgbnVtYmVyIGFuZCBlIGFuIGludGVnZXIsIGMgYW5kIGUKKyAgICAgICAgIyBiZWluZyBjaG9zZW4gc28gdGhhdCAxMDAqKihwLTEpIDw9IGMgPCAxMDAqKnAuICBUaGVuIHRoZQorICAgICAgICAjIChleGFjdCkgc3F1YXJlIHJvb3Qgb2Ygc2VsZiBpcyBzcXJ0KGMpKjEwKiplLCBhbmQgMTAqKihwLTEpCisgICAgICAgICMgPD0gc3FydChjKSA8IDEwKipwLCBzbyB0aGUgY2xvc2VzdCByZXByZXNlbnRhYmxlIERlY2ltYWwgYXQKKyAgICAgICAgIyBwcmVjaXNpb24gcCBpcyBuKjEwKiplIHdoZXJlIG4gPSByb3VuZF9oYWxmX2V2ZW4oc3FydChjKSksCisgICAgICAgICMgdGhlIGNsb3Nlc3QgaW50ZWdlciB0byBzcXJ0KGMpIHdpdGggdGhlIGV2ZW4gaW50ZWdlciBjaG9zZW4KKyAgICAgICAgIyBpbiB0aGUgY2FzZSBvZiBhIHRpZS4KKyAgICAgICAgIworICAgICAgICAjIFRvIGVuc3VyZSBjb3JyZWN0IHJvdW5kaW5nIGluIGFsbCBjYXNlcywgd2UgdXNlIHRoZQorICAgICAgICAjIGZvbGxvd2luZyB0cmljazogd2UgY29tcHV0ZSB0aGUgc3F1YXJlIHJvb3QgdG8gYW4gZXh0cmEKKyAgICAgICAgIyBwbGFjZSAocHJlY2lzaW9uIHArMSBpbnN0ZWFkIG9mIHByZWNpc2lvbiBwKSwgcm91bmRpbmcgZG93bi4KKyAgICAgICAgIyBUaGVuLCBpZiB0aGUgcmVzdWx0IGlzIGluZXhhY3QgYW5kIGl0cyBsYXN0IGRpZ2l0IGlzIDAgb3IgNSwKKyAgICAgICAgIyB3ZSBpbmNyZWFzZSB0aGUgbGFzdCBkaWdpdCB0byAxIG9yIDYgcmVzcGVjdGl2ZWx5OyBpZiBpdCdzCisgICAgICAgICMgZXhhY3Qgd2UgbGVhdmUgdGhlIGxhc3QgZGlnaXQgYWxvbmUuICBOb3cgdGhlIGZpbmFsIHJvdW5kIHRvCisgICAgICAgICMgcCBwbGFjZXMgKG9yIGZld2VyIGluIHRoZSBjYXNlIG9mIHVuZGVyZmxvdykgd2lsbCByb3VuZAorICAgICAgICAjIGNvcnJlY3RseSBhbmQgcmFpc2UgdGhlIGFwcHJvcHJpYXRlIGZsYWdzLgorCisgICAgICAgICMgdXNlIGFuIGV4dHJhIGRpZ2l0IG9mIHByZWNpc2lvbgorICAgICAgICBwcmVjID0gY29udGV4dC5wcmVjKzEKKworICAgICAgICAjIHdyaXRlIGFyZ3VtZW50IGluIHRoZSBmb3JtIGMqMTAwKiplIHdoZXJlIGUgPSBzZWxmLl9leHAvLzIKKyAgICAgICAgIyBpcyB0aGUgJ2lkZWFsJyBleHBvbmVudCwgdG8gYmUgdXNlZCBpZiB0aGUgc3F1YXJlIHJvb3QgaXMKKyAgICAgICAgIyBleGFjdGx5IHJlcHJlc2VudGFibGUuICBsIGlzIHRoZSBudW1iZXIgb2YgJ2RpZ2l0cycgb2YgYyBpbgorICAgICAgICAjIGJhc2UgMTAwLCBzbyB0aGF0IDEwMCoqKGwtMSkgPD0gYyA8IDEwMCoqbC4KKyAgICAgICAgb3AgPSBfV29ya1JlcChzZWxmKQorICAgICAgICBlID0gb3AuZXhwID4+IDEKKyAgICAgICAgaWYgb3AuZXhwICYgMToKKyAgICAgICAgICAgIGMgPSBvcC5pbnQgKiAxMAorICAgICAgICAgICAgbCA9IChsZW4oc2VsZi5faW50KSA+PiAxKSArIDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGMgPSBvcC5pbnQKKyAgICAgICAgICAgIGwgPSBsZW4oc2VsZi5faW50KSsxID4+IDEKKworICAgICAgICAjIHJlc2NhbGUgc28gdGhhdCBjIGhhcyBleGFjdGx5IHByZWMgYmFzZSAxMDAgJ2RpZ2l0cycKKyAgICAgICAgc2hpZnQgPSBwcmVjLWwKKyAgICAgICAgaWYgc2hpZnQgPj0gMDoKKyAgICAgICAgICAgIGMgKj0gMTAwKipzaGlmdAorICAgICAgICAgICAgZXhhY3QgPSBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjLCByZW1haW5kZXIgPSBkaXZtb2QoYywgMTAwKiotc2hpZnQpCisgICAgICAgICAgICBleGFjdCA9IG5vdCByZW1haW5kZXIKKyAgICAgICAgZSAtPSBzaGlmdAorCisgICAgICAgICMgZmluZCBuID0gZmxvb3Ioc3FydChjKSkgdXNpbmcgTmV3dG9uJ3MgbWV0aG9kCisgICAgICAgIG4gPSAxMCoqcHJlYworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgcSA9IGMvL24KKyAgICAgICAgICAgIGlmIG4gPD0gcToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuID0gbiArIHEgPj4gMQorICAgICAgICBleGFjdCA9IGV4YWN0IGFuZCBuKm4gPT0gYworCisgICAgICAgIGlmIGV4YWN0OgorICAgICAgICAgICAgIyByZXN1bHQgaXMgZXhhY3Q7IHJlc2NhbGUgdG8gdXNlIGlkZWFsIGV4cG9uZW50IGUKKyAgICAgICAgICAgIGlmIHNoaWZ0ID49IDA6CisgICAgICAgICAgICAgICAgIyBhc3NlcnQgbiAlIDEwKipzaGlmdCA9PSAwCisgICAgICAgICAgICAgICAgbiAvLz0gMTAqKnNoaWZ0CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG4gKj0gMTAqKi1zaGlmdAorICAgICAgICAgICAgZSArPSBzaGlmdAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyByZXN1bHQgaXMgbm90IGV4YWN0OyBmaXggbGFzdCBkaWdpdCBhcyBkZXNjcmliZWQgYWJvdmUKKyAgICAgICAgICAgIGlmIG4gJSA1ID09IDA6CisgICAgICAgICAgICAgICAgbiArPSAxCisKKyAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZSgwLCBzdHIobiksIGUpCisKKyAgICAgICAgIyByb3VuZCwgYW5kIGZpdCB0byBjdXJyZW50IGNvbnRleHQKKyAgICAgICAgY29udGV4dCA9IGNvbnRleHQuX3NoYWxsb3dfY29weSgpCisgICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX0hBTEZfRVZFTikKKyAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKKyAgICAgICAgY29udGV4dC5yb3VuZGluZyA9IHJvdW5kaW5nCisKKyAgICAgICAgcmV0dXJuIGFucworCisgICAgZGVmIG1heChzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgbGFyZ2VyIHZhbHVlLgorCisgICAgICAgIExpa2UgbWF4KHNlbGYsIG90aGVyKSBleGNlcHQgaWYgb25lIGlzIG5vdCBhIG51bWJlciwgcmV0dXJucworICAgICAgICBOYU4gKGFuZCBzaWduYWxzIGlmIG9uZSBpcyBzTmFOKS4gIEFsc28gcm91bmRzLgorICAgICAgICAiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgIyBJZiBvbmUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTiBhbmQgdGhlIG90aGVyIGlzIG51bWJlciwgdGhlbiB0aGUKKyAgICAgICAgICAgICMgbnVtYmVyIGlzIGFsd2F5cyByZXR1cm5lZAorICAgICAgICAgICAgc24gPSBzZWxmLl9pc25hbigpCisgICAgICAgICAgICBvbiA9IG90aGVyLl9pc25hbigpCisgICAgICAgICAgICBpZiBzbiBvciBvbjoKKyAgICAgICAgICAgICAgICBpZiBvbiA9PSAxIGFuZCBzbiA9PSAwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZml4KGNvbnRleHQpCisgICAgICAgICAgICAgICAgaWYgc24gPT0gMSBhbmQgb24gPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKworICAgICAgICBjID0gc2VsZi5fY21wKG90aGVyKQorICAgICAgICBpZiBjID09IDA6CisgICAgICAgICAgICAjIElmIGJvdGggb3BlcmFuZHMgYXJlIGZpbml0ZSBhbmQgZXF1YWwgaW4gbnVtZXJpY2FsIHZhbHVlCisgICAgICAgICAgICAjIHRoZW4gYW4gb3JkZXJpbmcgaXMgYXBwbGllZDoKKyAgICAgICAgICAgICMKKyAgICAgICAgICAgICMgSWYgdGhlIHNpZ25zIGRpZmZlciB0aGVuIG1heCByZXR1cm5zIHRoZSBvcGVyYW5kIHdpdGggdGhlCisgICAgICAgICAgICAjIHBvc2l0aXZlIHNpZ24gYW5kIG1pbiByZXR1cm5zIHRoZSBvcGVyYW5kIHdpdGggdGhlIG5lZ2F0aXZlIHNpZ24KKyAgICAgICAgICAgICMKKyAgICAgICAgICAgICMgSWYgdGhlIHNpZ25zIGFyZSB0aGUgc2FtZSB0aGVuIHRoZSBleHBvbmVudCBpcyB1c2VkIHRvIHNlbGVjdAorICAgICAgICAgICAgIyB0aGUgcmVzdWx0LiAgVGhpcyBpcyBleGFjdGx5IHRoZSBvcmRlcmluZyB1c2VkIGluIGNvbXBhcmVfdG90YWwuCisgICAgICAgICAgICBjID0gc2VsZi5jb21wYXJlX3RvdGFsKG90aGVyKQorCisgICAgICAgIGlmIGMgPT0gLTE6CisgICAgICAgICAgICBhbnMgPSBvdGhlcgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYW5zID0gc2VsZgorCisgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgZGVmIG1pbihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgc21hbGxlciB2YWx1ZS4KKworICAgICAgICBMaWtlIG1pbihzZWxmLCBvdGhlcikgZXhjZXB0IGlmIG9uZSBpcyBub3QgYSBudW1iZXIsIHJldHVybnMKKyAgICAgICAgTmFOIChhbmQgc2lnbmFscyBpZiBvbmUgaXMgc05hTikuICBBbHNvIHJvdW5kcy4KKyAgICAgICAgIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgICMgSWYgb25lIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpcyBudW1iZXIsIHRoZW4gdGhlCisgICAgICAgICAgICAjIG51bWJlciBpcyBhbHdheXMgcmV0dXJuZWQKKyAgICAgICAgICAgIHNuID0gc2VsZi5faXNuYW4oKQorICAgICAgICAgICAgb24gPSBvdGhlci5faXNuYW4oKQorICAgICAgICAgICAgaWYgc24gb3Igb246CisgICAgICAgICAgICAgICAgaWYgb24gPT0gMSBhbmQgc24gPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgICAgIGlmIHNuID09IDEgYW5kIG9uID09IDA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlci5fZml4KGNvbnRleHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisKKyAgICAgICAgYyA9IHNlbGYuX2NtcChvdGhlcikKKyAgICAgICAgaWYgYyA9PSAwOgorICAgICAgICAgICAgYyA9IHNlbGYuY29tcGFyZV90b3RhbChvdGhlcikKKworICAgICAgICBpZiBjID09IC0xOgorICAgICAgICAgICAgYW5zID0gc2VsZgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYW5zID0gb3RoZXIKKworICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKKworICAgIGRlZiBfaXNpbnRlZ2VyKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIHdoZXRoZXIgc2VsZiBpcyBhbiBpbnRlZ2VyIiIiCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgc2VsZi5fZXhwID49IDA6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXN0ID0gc2VsZi5faW50W3NlbGYuX2V4cDpdCisgICAgICAgIHJldHVybiByZXN0ID09ICcwJypsZW4ocmVzdCkKKworICAgIGRlZiBfaXNldmVuKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIFRydWUgaWYgc2VsZiBpcyBldmVuLiAgQXNzdW1lcyBzZWxmIGlzIGFuIGludGVnZXIuIiIiCisgICAgICAgIGlmIG5vdCBzZWxmIG9yIHNlbGYuX2V4cCA+IDA6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gc2VsZi5faW50Wy0xK3NlbGYuX2V4cF0gaW4gJzAyNDY4JworCisgICAgZGVmIGFkanVzdGVkKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHNlbGYiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V4cCArIGxlbihzZWxmLl9pbnQpIC0gMQorICAgICAgICAjIElmIE5hTiBvciBJbmZpbml0eSwgc2VsZi5fZXhwIGlzIHN0cmluZworICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIDAKKworICAgIGRlZiBjYW5vbmljYWwoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgdGhlIHNhbWUgRGVjaW1hbCBvYmplY3QuCisKKyAgICAgICAgQXMgd2UgZG8gbm90IGhhdmUgZGlmZmVyZW50IGVuY29kaW5ncyBmb3IgdGhlIHNhbWUgbnVtYmVyLCB0aGUKKyAgICAgICAgcmVjZWl2ZWQgb2JqZWN0IGFscmVhZHkgaXMgaW4gaXRzIGNhbm9uaWNhbCBmb3JtLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBjb21wYXJlX3NpZ25hbChzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiQ29tcGFyZXMgc2VsZiB0byB0aGUgb3RoZXIgb3BlcmFuZCBudW1lcmljYWxseS4KKworICAgICAgICBJdCdzIHByZXR0eSBtdWNoIGxpa2UgY29tcGFyZSgpLCBidXQgYWxsIE5hTnMgc2lnbmFsLCB3aXRoIHNpZ25hbGluZworICAgICAgICBOYU5zIHRha2luZyBwcmVjZWRlbmNlIG92ZXIgcXVpZXQgTmFOcy4KKyAgICAgICAgIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQgPSBUcnVlKQorICAgICAgICBhbnMgPSBzZWxmLl9jb21wYXJlX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKyAgICAgICAgcmV0dXJuIHNlbGYuY29tcGFyZShvdGhlciwgY29udGV4dD1jb250ZXh0KQorCisgICAgZGVmIGNvbXBhcmVfdG90YWwoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIkNvbXBhcmVzIHNlbGYgdG8gb3RoZXIgdXNpbmcgdGhlIGFic3RyYWN0IHJlcHJlc2VudGF0aW9ucy4KKworICAgICAgICBUaGlzIGlzIG5vdCBsaWtlIHRoZSBzdGFuZGFyZCBjb21wYXJlLCB3aGljaCB1c2UgdGhlaXIgbnVtZXJpY2FsCisgICAgICAgIHZhbHVlLiBOb3RlIHRoYXQgYSB0b3RhbCBvcmRlcmluZyBpcyBkZWZpbmVkIGZvciBhbGwgcG9zc2libGUgYWJzdHJhY3QKKyAgICAgICAgcmVwcmVzZW50YXRpb25zLgorICAgICAgICAiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgICMgaWYgb25lIGlzIG5lZ2F0aXZlIGFuZCB0aGUgb3RoZXIgaXMgcG9zaXRpdmUsIGl0J3MgZWFzeQorICAgICAgICBpZiBzZWxmLl9zaWduIGFuZCBub3Qgb3RoZXIuX3NpZ246CisgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCisgICAgICAgIGlmIG5vdCBzZWxmLl9zaWduIGFuZCBvdGhlci5fc2lnbjoKKyAgICAgICAgICAgIHJldHVybiBfT25lCisgICAgICAgIHNpZ24gPSBzZWxmLl9zaWduCisKKyAgICAgICAgIyBsZXQncyBoYW5kbGUgYm90aCBOYU4gdHlwZXMKKyAgICAgICAgc2VsZl9uYW4gPSBzZWxmLl9pc25hbigpCisgICAgICAgIG90aGVyX25hbiA9IG90aGVyLl9pc25hbigpCisgICAgICAgIGlmIHNlbGZfbmFuIG9yIG90aGVyX25hbjoKKyAgICAgICAgICAgIGlmIHNlbGZfbmFuID09IG90aGVyX25hbjoKKyAgICAgICAgICAgICAgICAjIGNvbXBhcmUgcGF5bG9hZHMgYXMgdGhvdWdoIHRoZXkncmUgaW50ZWdlcnMKKyAgICAgICAgICAgICAgICBzZWxmX2tleSA9IGxlbihzZWxmLl9pbnQpLCBzZWxmLl9pbnQKKyAgICAgICAgICAgICAgICBvdGhlcl9rZXkgPSBsZW4ob3RoZXIuX2ludCksIG90aGVyLl9pbnQKKyAgICAgICAgICAgICAgICBpZiBzZWxmX2tleSA8IG90aGVyX2tleToKKyAgICAgICAgICAgICAgICAgICAgaWYgc2lnbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfT25lCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCisgICAgICAgICAgICAgICAgaWYgc2VsZl9rZXkgPiBvdGhlcl9rZXk6CisgICAgICAgICAgICAgICAgICAgIGlmIHNpZ246CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX09uZQorICAgICAgICAgICAgICAgIHJldHVybiBfWmVybworCisgICAgICAgICAgICBpZiBzaWduOgorICAgICAgICAgICAgICAgIGlmIHNlbGZfbmFuID09IDE6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKKyAgICAgICAgICAgICAgICBpZiBvdGhlcl9uYW4gPT0gMToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKKyAgICAgICAgICAgICAgICBpZiBzZWxmX25hbiA9PSAyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCisgICAgICAgICAgICAgICAgaWYgb3RoZXJfbmFuID09IDI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfT25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIHNlbGZfbmFuID09IDE6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfT25lCisgICAgICAgICAgICAgICAgaWYgb3RoZXJfbmFuID09IDE6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKKyAgICAgICAgICAgICAgICBpZiBzZWxmX25hbiA9PSAyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gX09uZQorICAgICAgICAgICAgICAgIGlmIG90aGVyX25hbiA9PSAyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCisKKyAgICAgICAgaWYgc2VsZiA8IG90aGVyOgorICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQorICAgICAgICBpZiBzZWxmID4gb3RoZXI6CisgICAgICAgICAgICByZXR1cm4gX09uZQorCisgICAgICAgIGlmIHNlbGYuX2V4cCA8IG90aGVyLl9leHA6CisgICAgICAgICAgICBpZiBzaWduOgorICAgICAgICAgICAgICAgIHJldHVybiBfT25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKKyAgICAgICAgaWYgc2VsZi5fZXhwID4gb3RoZXIuX2V4cDoKKyAgICAgICAgICAgIGlmIHNpZ246CisgICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gX09uZQorICAgICAgICByZXR1cm4gX1plcm8KKworCisgICAgZGVmIGNvbXBhcmVfdG90YWxfbWFnKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJDb21wYXJlcyBzZWxmIHRvIG90aGVyIHVzaW5nIGFic3RyYWN0IHJlcHIuLCBpZ25vcmluZyBzaWduLgorCisgICAgICAgIExpa2UgY29tcGFyZV90b3RhbCwgYnV0IHdpdGggb3BlcmFuZCdzIHNpZ24gaWdub3JlZCBhbmQgYXNzdW1lZCB0byBiZSAwLgorICAgICAgICAiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgIHMgPSBzZWxmLmNvcHlfYWJzKCkKKyAgICAgICAgbyA9IG90aGVyLmNvcHlfYWJzKCkKKyAgICAgICAgcmV0dXJuIHMuY29tcGFyZV90b3RhbChvKQorCisgICAgZGVmIGNvcHlfYWJzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIGEgY29weSB3aXRoIHRoZSBzaWduIHNldCB0byAwLiAiIiIKKyAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgc2VsZi5faW50LCBzZWxmLl9leHAsIHNlbGYuX2lzX3NwZWNpYWwpCisKKyAgICBkZWYgY29weV9uZWdhdGUoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgYSBjb3B5IHdpdGggdGhlIHNpZ24gaW52ZXJ0ZWQuIiIiCisgICAgICAgIGlmIHNlbGYuX3NpZ246CisgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCBzZWxmLl9pbnQsIHNlbGYuX2V4cCwgc2VsZi5faXNfc3BlY2lhbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDEsIHNlbGYuX2ludCwgc2VsZi5fZXhwLCBzZWxmLl9pc19zcGVjaWFsKQorCisgICAgZGVmIGNvcHlfc2lnbihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyBzZWxmIHdpdGggdGhlIHNpZ24gb2Ygb3RoZXIuIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUob3RoZXIuX3NpZ24sIHNlbGYuX2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwLCBzZWxmLl9pc19zcGVjaWFsKQorCisgICAgZGVmIGV4cChzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIGUgKiogc2VsZi4iIiIKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgIyBleHAoTmFOKSA9IE5hTgorICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgICMgZXhwKC1JbmZpbml0eSkgPSAwCisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAtMToKKyAgICAgICAgICAgIHJldHVybiBfWmVybworCisgICAgICAgICMgZXhwKDApID0gMQorICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBfT25lCisKKyAgICAgICAgIyBleHAoSW5maW5pdHkpID0gSW5maW5pdHkKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IDE6CisgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorCisgICAgICAgICMgdGhlIHJlc3VsdCBpcyBub3cgZ3VhcmFudGVlZCB0byBiZSBpbmV4YWN0ICh0aGUgdHJ1ZQorICAgICAgICAjIG1hdGhlbWF0aWNhbCByZXN1bHQgaXMgdHJhbnNjZW5kZW50YWwpLiBUaGVyZSdzIG5vIG5lZWQgdG8KKyAgICAgICAgIyByYWlzZSBSb3VuZGVkIGFuZCBJbmV4YWN0IGhlcmUtLS10aGV5J2xsIGFsd2F5cyBiZSByYWlzZWQgYXMKKyAgICAgICAgIyBhIHJlc3VsdCBvZiB0aGUgY2FsbCB0byBfZml4LgorICAgICAgICBwID0gY29udGV4dC5wcmVjCisgICAgICAgIGFkaiA9IHNlbGYuYWRqdXN0ZWQoKQorCisgICAgICAgICMgd2Ugb25seSBuZWVkIHRvIGRvIGFueSBjb21wdXRhdGlvbiBmb3IgcXVpdGUgYSBzbWFsbCByYW5nZQorICAgICAgICAjIG9mIGFkanVzdGVkIGV4cG9uZW50cy0tLWZvciBleGFtcGxlLCAtMjkgPD0gYWRqIDw9IDEwIGZvcgorICAgICAgICAjIHRoZSBkZWZhdWx0IGNvbnRleHQuICBGb3Igc21hbGxlciBleHBvbmVudCB0aGUgcmVzdWx0IGlzCisgICAgICAgICMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSAxIGF0IHRoZSBnaXZlbiBwcmVjaXNpb24sIHdoaWxlIGZvcgorICAgICAgICAjIGxhcmdlciBleHBvbmVudCB0aGUgcmVzdWx0IGVpdGhlciBvdmVyZmxvd3Mgb3IgdW5kZXJmbG93cy4KKyAgICAgICAgaWYgc2VsZi5fc2lnbiA9PSAwIGFuZCBhZGogPiBsZW4oc3RyKChjb250ZXh0LkVtYXgrMSkqMykpOgorICAgICAgICAgICAgIyBvdmVyZmxvdworICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZSgwLCAnMScsIGNvbnRleHQuRW1heCsxKQorICAgICAgICBlbGlmIHNlbGYuX3NpZ24gPT0gMSBhbmQgYWRqID4gbGVuKHN0cigoLWNvbnRleHQuRXRpbnkoKSsxKSozKSk6CisgICAgICAgICAgICAjIHVuZGVyZmxvdyB0byAwCisgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKDAsICcxJywgY29udGV4dC5FdGlueSgpLTEpCisgICAgICAgIGVsaWYgc2VsZi5fc2lnbiA9PSAwIGFuZCBhZGogPCAtcDoKKyAgICAgICAgICAgICMgcCsxIGRpZ2l0czsgZmluYWwgcm91bmQgd2lsbCByYWlzZSBjb3JyZWN0IGZsYWdzCisgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKDAsICcxJyArICcwJyoocC0xKSArICcxJywgLXApCisgICAgICAgIGVsaWYgc2VsZi5fc2lnbiA9PSAxIGFuZCBhZGogPCAtcC0xOgorICAgICAgICAgICAgIyBwKzEgZGlnaXRzOyBmaW5hbCByb3VuZCB3aWxsIHJhaXNlIGNvcnJlY3QgZmxhZ3MKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoMCwgJzknKihwKzEpLCAtcC0xKQorICAgICAgICAjIGdlbmVyYWwgY2FzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3AgPSBfV29ya1JlcChzZWxmKQorICAgICAgICAgICAgYywgZSA9IG9wLmludCwgb3AuZXhwCisgICAgICAgICAgICBpZiBvcC5zaWduID09IDE6CisgICAgICAgICAgICAgICAgYyA9IC1jCisKKyAgICAgICAgICAgICMgY29tcHV0ZSBjb3JyZWN0bHkgcm91bmRlZCByZXN1bHQ6IGluY3JlYXNlIHByZWNpc2lvbiBieQorICAgICAgICAgICAgIyAzIGRpZ2l0cyBhdCBhIHRpbWUgdW50aWwgd2UgZ2V0IGFuIHVuYW1iaWd1b3VzbHkKKyAgICAgICAgICAgICMgcm91bmRhYmxlIHJlc3VsdAorICAgICAgICAgICAgZXh0cmEgPSAzCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGNvZWZmLCBleHAgPSBfZGV4cChjLCBlLCBwK2V4dHJhKQorICAgICAgICAgICAgICAgIGlmIGNvZWZmICUgKDUqMTAqKihsZW4oc3RyKGNvZWZmKSktcC0xKSk6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXh0cmEgKz0gMworCisgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKDAsIHN0cihjb2VmZiksIGV4cCkKKworICAgICAgICAjIGF0IHRoaXMgc3RhZ2UsIGFucyBzaG91bGQgcm91bmQgY29ycmVjdGx5IHdpdGggKmFueSoKKyAgICAgICAgIyByb3VuZGluZyBtb2RlLCBub3QganVzdCB3aXRoIFJPVU5EX0hBTEZfRVZFTgorICAgICAgICBjb250ZXh0ID0gY29udGV4dC5fc2hhbGxvd19jb3B5KCkKKyAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0Ll9zZXRfcm91bmRpbmcoUk9VTkRfSEFMRl9FVkVOKQorICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gcm91bmRpbmcKKworICAgICAgICByZXR1cm4gYW5zCisKKyAgICBkZWYgaXNfY2Fub25pY2FsKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGNhbm9uaWNhbDsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KKworICAgICAgICBDdXJyZW50bHksIHRoZSBlbmNvZGluZyBvZiBhIERlY2ltYWwgaW5zdGFuY2UgaXMgYWx3YXlzCisgICAgICAgIGNhbm9uaWNhbCwgc28gdGhpcyBtZXRob2QgcmV0dXJucyBUcnVlIGZvciBhbnkgRGVjaW1hbC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgaXNfZmluaXRlKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGZpbml0ZTsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KKworICAgICAgICBBIERlY2ltYWwgaW5zdGFuY2UgaXMgY29uc2lkZXJlZCBmaW5pdGUgaWYgaXQgaXMgbmVpdGhlcgorICAgICAgICBpbmZpbml0ZSBub3IgYSBOYU4uCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gbm90IHNlbGYuX2lzX3NwZWNpYWwKKworICAgIGRlZiBpc19pbmZpbml0ZShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBpbmZpbml0ZTsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4cCA9PSAnRicKKworICAgIGRlZiBpc19uYW4oc2VsZik6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSBxTmFOIG9yIHNOYU47IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9leHAgaW4gKCduJywgJ04nKQorCisgICAgZGVmIGlzX25vcm1hbChzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgbm9ybWFsIG51bWJlcjsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHJldHVybiBjb250ZXh0LkVtaW4gPD0gc2VsZi5hZGp1c3RlZCgpCisKKyAgICBkZWYgaXNfcW5hbihzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIHF1aWV0IE5hTjsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4cCA9PSAnbicKKworICAgIGRlZiBpc19zaWduZWQoc2VsZik6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgbmVnYXRpdmU7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zaWduID09IDEKKworICAgIGRlZiBpc19zbmFuKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgc2lnbmFsaW5nIE5hTjsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4cCA9PSAnTicKKworICAgIGRlZiBpc19zdWJub3JtYWwoc2VsZiwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBzdWJub3JtYWw7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igbm90IHNlbGY6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICByZXR1cm4gc2VsZi5hZGp1c3RlZCgpIDwgY29udGV4dC5FbWluCisKKyAgICBkZWYgaXNfemVybyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIHplcm87IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCisgICAgICAgIHJldHVybiBub3Qgc2VsZi5faXNfc3BlY2lhbCBhbmQgc2VsZi5faW50ID09ICcwJworCisgICAgZGVmIF9sbl9leHBfYm91bmQoc2VsZik6CisgICAgICAgICIiIkNvbXB1dGUgYSBsb3dlciBib3VuZCBmb3IgdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHNlbGYubG4oKS4KKyAgICAgICAgSW4gb3RoZXIgd29yZHMsIGNvbXB1dGUgciBzdWNoIHRoYXQgc2VsZi5sbigpID49IDEwKipyLiAgQXNzdW1lcworICAgICAgICB0aGF0IHNlbGYgaXMgZmluaXRlIGFuZCBwb3NpdGl2ZSBhbmQgdGhhdCBzZWxmICE9IDEuCisgICAgICAgICIiIgorCisgICAgICAgICMgZm9yIDAuMSA8PSB4IDw9IDEwIHdlIHVzZSB0aGUgaW5lcXVhbGl0aWVzIDEtMS94IDw9IGxuKHgpIDw9IHgtMQorICAgICAgICBhZGogPSBzZWxmLl9leHAgKyBsZW4oc2VsZi5faW50KSAtIDEKKyAgICAgICAgaWYgYWRqID49IDE6CisgICAgICAgICAgICAjIGFyZ3VtZW50ID49IDEwOyB3ZSB1c2UgMjMvMTAgPSAyLjMgYXMgYSBsb3dlciBib3VuZCBmb3IgbG4oMTApCisgICAgICAgICAgICByZXR1cm4gbGVuKHN0cihhZGoqMjMvLzEwKSkgLSAxCisgICAgICAgIGlmIGFkaiA8PSAtMjoKKyAgICAgICAgICAgICMgYXJndW1lbnQgPD0gMC4xCisgICAgICAgICAgICByZXR1cm4gbGVuKHN0cigoLTEtYWRqKSoyMy8vMTApKSAtIDEKKyAgICAgICAgb3AgPSBfV29ya1JlcChzZWxmKQorICAgICAgICBjLCBlID0gb3AuaW50LCBvcC5leHAKKyAgICAgICAgaWYgYWRqID09IDA6CisgICAgICAgICAgICAjIDEgPCBzZWxmIDwgMTAKKyAgICAgICAgICAgIG51bSA9IHN0cihjLTEwKiotZSkKKyAgICAgICAgICAgIGRlbiA9IHN0cihjKQorICAgICAgICAgICAgcmV0dXJuIGxlbihudW0pIC0gbGVuKGRlbikgLSAobnVtIDwgZGVuKQorICAgICAgICAjIGFkaiA9PSAtMSwgMC4xIDw9IHNlbGYgPCAxCisgICAgICAgIHJldHVybiBlICsgbGVuKHN0cigxMCoqLWUgLSBjKSkgLSAxCisKKworICAgIGRlZiBsbihzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBuYXR1cmFsIChiYXNlIGUpIGxvZ2FyaXRobSBvZiBzZWxmLiIiIgorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICAjIGxuKE5hTikgPSBOYU4KKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICAjIGxuKDAuMCkgPT0gLUluZmluaXR5CisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZUluZmluaXR5CisKKyAgICAgICAgIyBsbihJbmZpbml0eSkgPSBJbmZpbml0eQorICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gMToKKyAgICAgICAgICAgIHJldHVybiBfSW5maW5pdHkKKworICAgICAgICAjIGxuKDEuMCkgPT0gMC4wCisgICAgICAgIGlmIHNlbGYgPT0gX09uZToKKyAgICAgICAgICAgIHJldHVybiBfWmVybworCisgICAgICAgICMgbG4obmVnYXRpdmUpIHJhaXNlcyBJbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIGlmIHNlbGYuX3NpZ24gPT0gMToKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsbiBvZiBhIG5lZ2F0aXZlIHZhbHVlJykKKworICAgICAgICAjIHJlc3VsdCBpcyBpcnJhdGlvbmFsLCBzbyBuZWNlc3NhcmlseSBpbmV4YWN0CisgICAgICAgIG9wID0gX1dvcmtSZXAoc2VsZikKKyAgICAgICAgYywgZSA9IG9wLmludCwgb3AuZXhwCisgICAgICAgIHAgPSBjb250ZXh0LnByZWMKKworICAgICAgICAjIGNvcnJlY3RseSByb3VuZGVkIHJlc3VsdDogcmVwZWF0ZWRseSBpbmNyZWFzZSBwcmVjaXNpb24gYnkgMworICAgICAgICAjIHVudGlsIHdlIGdldCBhbiB1bmFtYmlndW91c2x5IHJvdW5kYWJsZSByZXN1bHQKKyAgICAgICAgcGxhY2VzID0gcCAtIHNlbGYuX2xuX2V4cF9ib3VuZCgpICsgMiAjIGF0IGxlYXN0IHArMyBwbGFjZXMKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGNvZWZmID0gX2Rsb2coYywgZSwgcGxhY2VzKQorICAgICAgICAgICAgIyBhc3NlcnQgbGVuKHN0cihhYnMoY29lZmYpKSktcCA+PSAxCisgICAgICAgICAgICBpZiBjb2VmZiAlICg1KjEwKioobGVuKHN0cihhYnMoY29lZmYpKSktcC0xKSk6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHBsYWNlcyArPSAzCisgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoaW50KGNvZWZmPDApLCBzdHIoYWJzKGNvZWZmKSksIC1wbGFjZXMpCisKKyAgICAgICAgY29udGV4dCA9IGNvbnRleHQuX3NoYWxsb3dfY29weSgpCisgICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX0hBTEZfRVZFTikKKyAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKKyAgICAgICAgY29udGV4dC5yb3VuZGluZyA9IHJvdW5kaW5nCisgICAgICAgIHJldHVybiBhbnMKKworICAgIGRlZiBfbG9nMTBfZXhwX2JvdW5kKHNlbGYpOgorICAgICAgICAiIiJDb21wdXRlIGEgbG93ZXIgYm91bmQgZm9yIHRoZSBhZGp1c3RlZCBleHBvbmVudCBvZiBzZWxmLmxvZzEwKCkuCisgICAgICAgIEluIG90aGVyIHdvcmRzLCBmaW5kIHIgc3VjaCB0aGF0IHNlbGYubG9nMTAoKSA+PSAxMCoqci4KKyAgICAgICAgQXNzdW1lcyB0aGF0IHNlbGYgaXMgZmluaXRlIGFuZCBwb3NpdGl2ZSBhbmQgdGhhdCBzZWxmICE9IDEuCisgICAgICAgICIiIgorCisgICAgICAgICMgRm9yIHggPj0gMTAgb3IgeCA8IDAuMSB3ZSBvbmx5IG5lZWQgYSBib3VuZCBvbiB0aGUgaW50ZWdlcgorICAgICAgICAjIHBhcnQgb2YgbG9nMTAoc2VsZiksIGFuZCB0aGlzIGNvbWVzIGRpcmVjdGx5IGZyb20gdGhlCisgICAgICAgICMgZXhwb25lbnQgb2YgeC4gIEZvciAwLjEgPD0geCA8PSAxMCB3ZSB1c2UgdGhlIGluZXF1YWxpdGllcworICAgICAgICAjIDEtMS94IDw9IGxvZyh4KSA8PSB4LTEuIElmIHggPiAxIHdlIGhhdmUgfGxvZzEwKHgpfCA+CisgICAgICAgICMgKDEtMS94KS8yLjMxID4gMC4gIElmIHggPCAxIHRoZW4gfGxvZzEwKHgpfCA+ICgxLXgpLzIuMzEgPiAwCisKKyAgICAgICAgYWRqID0gc2VsZi5fZXhwICsgbGVuKHNlbGYuX2ludCkgLSAxCisgICAgICAgIGlmIGFkaiA+PSAxOgorICAgICAgICAgICAgIyBzZWxmID49IDEwCisgICAgICAgICAgICByZXR1cm4gbGVuKHN0cihhZGopKS0xCisgICAgICAgIGlmIGFkaiA8PSAtMjoKKyAgICAgICAgICAgICMgc2VsZiA8IDAuMQorICAgICAgICAgICAgcmV0dXJuIGxlbihzdHIoLTEtYWRqKSktMQorICAgICAgICBvcCA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgIGMsIGUgPSBvcC5pbnQsIG9wLmV4cAorICAgICAgICBpZiBhZGogPT0gMDoKKyAgICAgICAgICAgICMgMSA8IHNlbGYgPCAxMAorICAgICAgICAgICAgbnVtID0gc3RyKGMtMTAqKi1lKQorICAgICAgICAgICAgZGVuID0gc3RyKDIzMSpjKQorICAgICAgICAgICAgcmV0dXJuIGxlbihudW0pIC0gbGVuKGRlbikgLSAobnVtIDwgZGVuKSArIDIKKyAgICAgICAgIyBhZGogPT0gLTEsIDAuMSA8PSBzZWxmIDwgMQorICAgICAgICBudW0gPSBzdHIoMTAqKi1lLWMpCisgICAgICAgIHJldHVybiBsZW4obnVtKSArIGUgLSAobnVtIDwgIjIzMSIpIC0gMQorCisgICAgZGVmIGxvZzEwKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIGJhc2UgMTAgbG9nYXJpdGhtIG9mIHNlbGYuIiIiCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgICMgbG9nMTAoTmFOKSA9IE5hTgorICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgICMgbG9nMTAoMC4wKSA9PSAtSW5maW5pdHkKKyAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlSW5maW5pdHkKKworICAgICAgICAjIGxvZzEwKEluZmluaXR5KSA9IEluZmluaXR5CisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIF9JbmZpbml0eQorCisgICAgICAgICMgbG9nMTAobmVnYXRpdmUgb3IgLUluZmluaXR5KSByYWlzZXMgSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBpZiBzZWxmLl9zaWduID09IDE6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9nMTAgb2YgYSBuZWdhdGl2ZSB2YWx1ZScpCisKKyAgICAgICAgIyBsb2cxMCgxMCoqbikgPSBuCisgICAgICAgIGlmIHNlbGYuX2ludFswXSA9PSAnMScgYW5kIHNlbGYuX2ludFsxOl0gPT0gJzAnKihsZW4oc2VsZi5faW50KSAtIDEpOgorICAgICAgICAgICAgIyBhbnN3ZXIgbWF5IG5lZWQgcm91bmRpbmcKKyAgICAgICAgICAgIGFucyA9IERlY2ltYWwoc2VsZi5fZXhwICsgbGVuKHNlbGYuX2ludCkgLSAxKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyByZXN1bHQgaXMgaXJyYXRpb25hbCwgc28gbmVjZXNzYXJpbHkgaW5leGFjdAorICAgICAgICAgICAgb3AgPSBfV29ya1JlcChzZWxmKQorICAgICAgICAgICAgYywgZSA9IG9wLmludCwgb3AuZXhwCisgICAgICAgICAgICBwID0gY29udGV4dC5wcmVjCisKKyAgICAgICAgICAgICMgY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0OiByZXBlYXRlZGx5IGluY3JlYXNlIHByZWNpc2lvbgorICAgICAgICAgICAgIyB1bnRpbCByZXN1bHQgaXMgdW5hbWJpZ3VvdXNseSByb3VuZGFibGUKKyAgICAgICAgICAgIHBsYWNlcyA9IHAtc2VsZi5fbG9nMTBfZXhwX2JvdW5kKCkrMgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBjb2VmZiA9IF9kbG9nMTAoYywgZSwgcGxhY2VzKQorICAgICAgICAgICAgICAgICMgYXNzZXJ0IGxlbihzdHIoYWJzKGNvZWZmKSkpLXAgPj0gMQorICAgICAgICAgICAgICAgIGlmIGNvZWZmICUgKDUqMTAqKihsZW4oc3RyKGFicyhjb2VmZikpKS1wLTEpKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBwbGFjZXMgKz0gMworICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShpbnQoY29lZmY8MCksIHN0cihhYnMoY29lZmYpKSwgLXBsYWNlcykKKworICAgICAgICBjb250ZXh0ID0gY29udGV4dC5fc2hhbGxvd19jb3B5KCkKKyAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0Ll9zZXRfcm91bmRpbmcoUk9VTkRfSEFMRl9FVkVOKQorICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gcm91bmRpbmcKKyAgICAgICAgcmV0dXJuIGFucworCisgICAgZGVmIGxvZ2Ioc2VsZiwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiIFJldHVybnMgdGhlIGV4cG9uZW50IG9mIHRoZSBtYWduaXR1ZGUgb2Ygc2VsZidzIE1TRC4KKworICAgICAgICBUaGUgcmVzdWx0IGlzIHRoZSBpbnRlZ2VyIHdoaWNoIGlzIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlCisgICAgICAgIG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IG9mIHNlbGYgKGFzIHRob3VnaCBpdCB3ZXJlIHRydW5jYXRlZAorICAgICAgICB0byBhIHNpbmdsZSBkaWdpdCB3aGlsZSBtYWludGFpbmluZyB0aGUgdmFsdWUgb2YgdGhhdCBkaWdpdCBhbmQKKyAgICAgICAgd2l0aG91dCBsaW1pdGluZyB0aGUgcmVzdWx0aW5nIGV4cG9uZW50KS4KKyAgICAgICAgIiIiCisgICAgICAgICMgbG9nYihOYU4pID0gTmFOCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgICMgbG9nYigrLy1JbmYpID0gK0luZgorICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICByZXR1cm4gX0luZmluaXR5CisKKyAgICAgICAgIyBsb2diKDApID0gLUluZiwgRGl2aXNpb25CeVplcm8KKyAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25CeVplcm8sICdsb2diKDApJywgMSkKKworICAgICAgICAjIG90aGVyd2lzZSwgc2ltcGx5IHJldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2Ygc2VsZiwgYXMgYQorICAgICAgICAjIERlY2ltYWwuICBOb3RlIHRoYXQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIGZpdCB0aGUgcmVzdWx0CisgICAgICAgICMgaW50byB0aGUgY3VycmVudCBjb250ZXh0LgorICAgICAgICBhbnMgPSBEZWNpbWFsKHNlbGYuYWRqdXN0ZWQoKSkKKyAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCisKKyAgICBkZWYgX2lzbG9naWNhbChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIGxvZ2ljYWwgb3BlcmFuZC4KKworICAgICAgICBGb3IgYmVpbmcgbG9naWNhbCwgaXQgbXVzdCBiZSBhIGZpbml0ZSBudW1iZXIgd2l0aCBhIHNpZ24gb2YgMCwKKyAgICAgICAgYW4gZXhwb25lbnQgb2YgMCwgYW5kIGEgY29lZmZpY2llbnQgd2hvc2UgZGlnaXRzIG11c3QgYWxsIGJlCisgICAgICAgIGVpdGhlciAwIG9yIDEuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9zaWduICE9IDAgb3Igc2VsZi5fZXhwICE9IDA6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgZm9yIGRpZyBpbiBzZWxmLl9pbnQ6CisgICAgICAgICAgICBpZiBkaWcgbm90IGluICcwMSc6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgX2ZpbGxfbG9naWNhbChzZWxmLCBjb250ZXh0LCBvcGEsIG9wYik6CisgICAgICAgIGRpZiA9IGNvbnRleHQucHJlYyAtIGxlbihvcGEpCisgICAgICAgIGlmIGRpZiA+IDA6CisgICAgICAgICAgICBvcGEgPSAnMCcqZGlmICsgb3BhCisgICAgICAgIGVsaWYgZGlmIDwgMDoKKyAgICAgICAgICAgIG9wYSA9IG9wYVstY29udGV4dC5wcmVjOl0KKyAgICAgICAgZGlmID0gY29udGV4dC5wcmVjIC0gbGVuKG9wYikKKyAgICAgICAgaWYgZGlmID4gMDoKKyAgICAgICAgICAgIG9wYiA9ICcwJypkaWYgKyBvcGIKKyAgICAgICAgZWxpZiBkaWYgPCAwOgorICAgICAgICAgICAgb3BiID0gb3BiWy1jb250ZXh0LnByZWM6XQorICAgICAgICByZXR1cm4gb3BhLCBvcGIKKworICAgIGRlZiBsb2dpY2FsX2FuZChzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiQXBwbGllcyBhbiAnYW5kJyBvcGVyYXRpb24gYmV0d2VlbiBzZWxmIGFuZCBvdGhlcidzIGRpZ2l0cy4iIiIKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICBpZiBub3Qgc2VsZi5faXNsb2dpY2FsKCkgb3Igbm90IG90aGVyLl9pc2xvZ2ljYWwoKToKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQorCisgICAgICAgICMgZmlsbCB0byBjb250ZXh0LnByZWMKKyAgICAgICAgKG9wYSwgb3BiKSA9IHNlbGYuX2ZpbGxfbG9naWNhbChjb250ZXh0LCBzZWxmLl9pbnQsIG90aGVyLl9pbnQpCisKKyAgICAgICAgIyBtYWtlIHRoZSBvcGVyYXRpb24sIGFuZCBjbGVhbiBzdGFydGluZyB6ZXJvZXMKKyAgICAgICAgcmVzdWx0ID0gIiIuam9pbihbc3RyKGludChhKSZpbnQoYikpIGZvciBhLGIgaW4gemlwKG9wYSxvcGIpXSkKKyAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgcmVzdWx0LmxzdHJpcCgnMCcpIG9yICcwJywgMCkKKworICAgIGRlZiBsb2dpY2FsX2ludmVydChzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJJbnZlcnQgYWxsIGl0cyBkaWdpdHMuIiIiCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgcmV0dXJuIHNlbGYubG9naWNhbF94b3IoX2RlY19mcm9tX3RyaXBsZSgwLCcxJypjb250ZXh0LnByZWMsMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQpCisKKyAgICBkZWYgbG9naWNhbF9vcihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiQXBwbGllcyBhbiAnb3InIG9wZXJhdGlvbiBiZXR3ZWVuIHNlbGYgYW5kIG90aGVyJ3MgZGlnaXRzLiIiIgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgIGlmIG5vdCBzZWxmLl9pc2xvZ2ljYWwoKSBvciBub3Qgb3RoZXIuX2lzbG9naWNhbCgpOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCisKKyAgICAgICAgIyBmaWxsIHRvIGNvbnRleHQucHJlYworICAgICAgICAob3BhLCBvcGIpID0gc2VsZi5fZmlsbF9sb2dpY2FsKGNvbnRleHQsIHNlbGYuX2ludCwgb3RoZXIuX2ludCkKKworICAgICAgICAjIG1ha2UgdGhlIG9wZXJhdGlvbiwgYW5kIGNsZWFuIHN0YXJ0aW5nIHplcm9lcworICAgICAgICByZXN1bHQgPSAiIi5qb2luKFtzdHIoaW50KGEpfGludChiKSkgZm9yIGEsYiBpbiB6aXAob3BhLG9wYildKQorICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCByZXN1bHQubHN0cmlwKCcwJykgb3IgJzAnLCAwKQorCisgICAgZGVmIGxvZ2ljYWxfeG9yKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJBcHBsaWVzIGFuICd4b3InIG9wZXJhdGlvbiBiZXR3ZWVuIHNlbGYgYW5kIG90aGVyJ3MgZGlnaXRzLiIiIgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgIGlmIG5vdCBzZWxmLl9pc2xvZ2ljYWwoKSBvciBub3Qgb3RoZXIuX2lzbG9naWNhbCgpOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCisKKyAgICAgICAgIyBmaWxsIHRvIGNvbnRleHQucHJlYworICAgICAgICAob3BhLCBvcGIpID0gc2VsZi5fZmlsbF9sb2dpY2FsKGNvbnRleHQsIHNlbGYuX2ludCwgb3RoZXIuX2ludCkKKworICAgICAgICAjIG1ha2UgdGhlIG9wZXJhdGlvbiwgYW5kIGNsZWFuIHN0YXJ0aW5nIHplcm9lcworICAgICAgICByZXN1bHQgPSAiIi5qb2luKFtzdHIoaW50KGEpXmludChiKSkgZm9yIGEsYiBpbiB6aXAob3BhLG9wYildKQorICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCByZXN1bHQubHN0cmlwKCcwJykgb3IgJzAnLCAwKQorCisgICAgZGVmIG1heF9tYWcoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIkNvbXBhcmVzIHRoZSB2YWx1ZXMgbnVtZXJpY2FsbHkgd2l0aCB0aGVpciBzaWduIGlnbm9yZWQuIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgICMgSWYgb25lIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpcyBudW1iZXIsIHRoZW4gdGhlCisgICAgICAgICAgICAjIG51bWJlciBpcyBhbHdheXMgcmV0dXJuZWQKKyAgICAgICAgICAgIHNuID0gc2VsZi5faXNuYW4oKQorICAgICAgICAgICAgb24gPSBvdGhlci5faXNuYW4oKQorICAgICAgICAgICAgaWYgc24gb3Igb246CisgICAgICAgICAgICAgICAgaWYgb24gPT0gMSBhbmQgc24gPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgICAgIGlmIHNuID09IDEgYW5kIG9uID09IDA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlci5fZml4KGNvbnRleHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisKKyAgICAgICAgYyA9IHNlbGYuY29weV9hYnMoKS5fY21wKG90aGVyLmNvcHlfYWJzKCkpCisgICAgICAgIGlmIGMgPT0gMDoKKyAgICAgICAgICAgIGMgPSBzZWxmLmNvbXBhcmVfdG90YWwob3RoZXIpCisKKyAgICAgICAgaWYgYyA9PSAtMToKKyAgICAgICAgICAgIGFucyA9IG90aGVyCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhbnMgPSBzZWxmCisKKyAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCisKKyAgICBkZWYgbWluX21hZyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiQ29tcGFyZXMgdGhlIHZhbHVlcyBudW1lcmljYWxseSB3aXRoIHRoZWlyIHNpZ24gaWdub3JlZC4iIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgIyBJZiBvbmUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTiBhbmQgdGhlIG90aGVyIGlzIG51bWJlciwgdGhlbiB0aGUKKyAgICAgICAgICAgICMgbnVtYmVyIGlzIGFsd2F5cyByZXR1cm5lZAorICAgICAgICAgICAgc24gPSBzZWxmLl9pc25hbigpCisgICAgICAgICAgICBvbiA9IG90aGVyLl9pc25hbigpCisgICAgICAgICAgICBpZiBzbiBvciBvbjoKKyAgICAgICAgICAgICAgICBpZiBvbiA9PSAxIGFuZCBzbiA9PSAwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZml4KGNvbnRleHQpCisgICAgICAgICAgICAgICAgaWYgc24gPT0gMSBhbmQgb24gPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKworICAgICAgICBjID0gc2VsZi5jb3B5X2FicygpLl9jbXAob3RoZXIuY29weV9hYnMoKSkKKyAgICAgICAgaWYgYyA9PSAwOgorICAgICAgICAgICAgYyA9IHNlbGYuY29tcGFyZV90b3RhbChvdGhlcikKKworICAgICAgICBpZiBjID09IC0xOgorICAgICAgICAgICAgYW5zID0gc2VsZgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYW5zID0gb3RoZXIKKworICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKKworICAgIGRlZiBuZXh0X21pbnVzKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIGxhcmdlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgc21hbGxlciB0aGFuIGl0c2VsZi4iIiIKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IC0xOgorICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZUluZmluaXR5CisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgJzknKmNvbnRleHQucHJlYywgY29udGV4dC5FdG9wKCkpCisKKyAgICAgICAgY29udGV4dCA9IGNvbnRleHQuY29weSgpCisgICAgICAgIGNvbnRleHQuX3NldF9yb3VuZGluZyhST1VORF9GTE9PUikKKyAgICAgICAgY29udGV4dC5faWdub3JlX2FsbF9mbGFncygpCisgICAgICAgIG5ld19zZWxmID0gc2VsZi5fZml4KGNvbnRleHQpCisgICAgICAgIGlmIG5ld19zZWxmICE9IHNlbGY6CisgICAgICAgICAgICByZXR1cm4gbmV3X3NlbGYKKyAgICAgICAgcmV0dXJuIHNlbGYuX19zdWJfXyhfZGVjX2Zyb21fdHJpcGxlKDAsICcxJywgY29udGV4dC5FdGlueSgpLTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQpCisKKyAgICBkZWYgbmV4dF9wbHVzKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIGxhcmdlciB0aGFuIGl0c2VsZi4iIiIKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IDE6CisgICAgICAgICAgICByZXR1cm4gX0luZmluaXR5CisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAtMToKKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDEsICc5Jypjb250ZXh0LnByZWMsIGNvbnRleHQuRXRvcCgpKQorCisgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNvcHkoKQorICAgICAgICBjb250ZXh0Ll9zZXRfcm91bmRpbmcoUk9VTkRfQ0VJTElORykKKyAgICAgICAgY29udGV4dC5faWdub3JlX2FsbF9mbGFncygpCisgICAgICAgIG5ld19zZWxmID0gc2VsZi5fZml4KGNvbnRleHQpCisgICAgICAgIGlmIG5ld19zZWxmICE9IHNlbGY6CisgICAgICAgICAgICByZXR1cm4gbmV3X3NlbGYKKyAgICAgICAgcmV0dXJuIHNlbGYuX19hZGRfXyhfZGVjX2Zyb21fdHJpcGxlKDAsICcxJywgY29udGV4dC5FdGlueSgpLTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQpCisKKyAgICBkZWYgbmV4dF90b3dhcmQoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIG51bWJlciBjbG9zZXN0IHRvIHNlbGYsIGluIHRoZSBkaXJlY3Rpb24gdG93YXJkcyBvdGhlci4KKworICAgICAgICBUaGUgcmVzdWx0IGlzIHRoZSBjbG9zZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHRvIHNlbGYKKyAgICAgICAgKGV4Y2x1ZGluZyBzZWxmKSB0aGF0IGlzIGluIHRoZSBkaXJlY3Rpb24gdG93YXJkcyBvdGhlciwKKyAgICAgICAgdW5sZXNzIGJvdGggaGF2ZSB0aGUgc2FtZSB2YWx1ZS4gIElmIHRoZSB0d28gb3BlcmFuZHMgYXJlCisgICAgICAgIG51bWVyaWNhbGx5IGVxdWFsLCB0aGVuIHRoZSByZXN1bHQgaXMgYSBjb3B5IG9mIHNlbGYgd2l0aCB0aGUKKyAgICAgICAgc2lnbiBzZXQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIHNpZ24gb2Ygb3RoZXIuCisgICAgICAgICIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBjb21wYXJpc29uID0gc2VsZi5fY21wKG90aGVyKQorICAgICAgICBpZiBjb21wYXJpc29uID09IDA6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jb3B5X3NpZ24ob3RoZXIpCisKKyAgICAgICAgaWYgY29tcGFyaXNvbiA9PSAtMToKKyAgICAgICAgICAgIGFucyA9IHNlbGYubmV4dF9wbHVzKGNvbnRleHQpCisgICAgICAgIGVsc2U6ICMgY29tcGFyaXNvbiA9PSAxCisgICAgICAgICAgICBhbnMgPSBzZWxmLm5leHRfbWludXMoY29udGV4dCkKKworICAgICAgICAjIGRlY2lkZSB3aGljaCBmbGFncyB0byByYWlzZSB1c2luZyB2YWx1ZSBvZiBhbnMKKyAgICAgICAgaWYgYW5zLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihPdmVyZmxvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJbmZpbml0ZSByZXN1bHQgZnJvbSBuZXh0X3Rvd2FyZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnMuX3NpZ24pCisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKKyAgICAgICAgZWxpZiBhbnMuYWRqdXN0ZWQoKSA8IGNvbnRleHQuRW1pbjoKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFVuZGVyZmxvdykKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFN1Ym5vcm1hbCkKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQorICAgICAgICAgICAgIyBpZiBwcmVjaXNpb24gPT0gMSB0aGVuIHdlIGRvbid0IHJhaXNlIENsYW1wZWQgZm9yIGEKKyAgICAgICAgICAgICMgcmVzdWx0IDBFLUV0aW55LgorICAgICAgICAgICAgaWYgbm90IGFuczoKKyAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihDbGFtcGVkKQorCisgICAgICAgIHJldHVybiBhbnMKKworICAgIGRlZiBudW1iZXJfY2xhc3Moc2VsZiwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyBhbiBpbmRpY2F0aW9uIG9mIHRoZSBjbGFzcyBvZiBzZWxmLgorCisgICAgICAgIFRoZSBjbGFzcyBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBzdHJpbmdzOgorICAgICAgICAgIHNOYU4KKyAgICAgICAgICBOYU4KKyAgICAgICAgICAtSW5maW5pdHkKKyAgICAgICAgICAtTm9ybWFsCisgICAgICAgICAgLVN1Ym5vcm1hbAorICAgICAgICAgIC1aZXJvCisgICAgICAgICAgK1plcm8KKyAgICAgICAgICArU3Vibm9ybWFsCisgICAgICAgICAgK05vcm1hbAorICAgICAgICAgICtJbmZpbml0eQorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5pc19zbmFuKCk6CisgICAgICAgICAgICByZXR1cm4gInNOYU4iCisgICAgICAgIGlmIHNlbGYuaXNfcW5hbigpOgorICAgICAgICAgICAgcmV0dXJuICJOYU4iCisgICAgICAgIGluZiA9IHNlbGYuX2lzaW5maW5pdHkoKQorICAgICAgICBpZiBpbmYgPT0gMToKKyAgICAgICAgICAgIHJldHVybiAiK0luZmluaXR5IgorICAgICAgICBpZiBpbmYgPT0gLTE6CisgICAgICAgICAgICByZXR1cm4gIi1JbmZpbml0eSIKKyAgICAgICAgaWYgc2VsZi5pc196ZXJvKCk6CisgICAgICAgICAgICBpZiBzZWxmLl9zaWduOgorICAgICAgICAgICAgICAgIHJldHVybiAiLVplcm8iCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiAiK1plcm8iCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgaWYgc2VsZi5pc19zdWJub3JtYWwoY29udGV4dD1jb250ZXh0KToKKyAgICAgICAgICAgIGlmIHNlbGYuX3NpZ246CisgICAgICAgICAgICAgICAgcmV0dXJuICItU3Vibm9ybWFsIgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gIitTdWJub3JtYWwiCisgICAgICAgICMganVzdCBhIG5vcm1hbCwgcmVndWxhciwgYm9yaW5nIG51bWJlciwgOikKKyAgICAgICAgaWYgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgIHJldHVybiAiLU5vcm1hbCIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAiK05vcm1hbCIKKworICAgIGRlZiByYWRpeChzZWxmKToKKyAgICAgICAgIiIiSnVzdCByZXR1cm5zIDEwLCBhcyB0aGlzIGlzIERlY2ltYWwsIDopIiIiCisgICAgICAgIHJldHVybiBEZWNpbWFsKDEwKQorCisgICAgZGVmIHJvdGF0ZShzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyBhIHJvdGF0ZWQgY29weSBvZiBzZWxmLCB2YWx1ZS1vZi1vdGhlciB0aW1lcy4iIiIKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgaWYgb3RoZXIuX2V4cCAhPSAwOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCisgICAgICAgIGlmIG5vdCAoLWNvbnRleHQucHJlYyA8PSBpbnQob3RoZXIpIDw9IGNvbnRleHQucHJlYyk6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKKworICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorCisgICAgICAgICMgZ2V0IHZhbHVlcywgcGFkIGlmIG5lY2Vzc2FyeQorICAgICAgICB0b3JvdCA9IGludChvdGhlcikKKyAgICAgICAgcm90ZGlnID0gc2VsZi5faW50CisgICAgICAgIHRvcGFkID0gY29udGV4dC5wcmVjIC0gbGVuKHJvdGRpZykKKyAgICAgICAgaWYgdG9wYWQgPiAwOgorICAgICAgICAgICAgcm90ZGlnID0gJzAnKnRvcGFkICsgcm90ZGlnCisgICAgICAgIGVsaWYgdG9wYWQgPCAwOgorICAgICAgICAgICAgcm90ZGlnID0gcm90ZGlnWy10b3BhZDpdCisKKyAgICAgICAgIyBsZXQncyByb3RhdGUhCisgICAgICAgIHJvdGF0ZWQgPSByb3RkaWdbdG9yb3Q6XSArIHJvdGRpZ1s6dG9yb3RdCisgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZWQubHN0cmlwKCcwJykgb3IgJzAnLCBzZWxmLl9leHApCisKKyAgICBkZWYgc2NhbGViKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIHNlbGYgb3BlcmFuZCBhZnRlciBhZGRpbmcgdGhlIHNlY29uZCB2YWx1ZSB0byBpdHMgZXhwLiIiIgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBpZiBvdGhlci5fZXhwICE9IDA6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKKyAgICAgICAgbGltaW5mID0gLTIgKiAoY29udGV4dC5FbWF4ICsgY29udGV4dC5wcmVjKQorICAgICAgICBsaW1zdXAgPSAgMiAqIChjb250ZXh0LkVtYXggKyBjb250ZXh0LnByZWMpCisgICAgICAgIGlmIG5vdCAobGltaW5mIDw9IGludChvdGhlcikgPD0gbGltc3VwKToKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQorCisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisKKyAgICAgICAgZCA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgc2VsZi5faW50LCBzZWxmLl9leHAgKyBpbnQob3RoZXIpKQorICAgICAgICBkID0gZC5fZml4KGNvbnRleHQpCisgICAgICAgIHJldHVybiBkCisKKyAgICBkZWYgc2hpZnQoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgYSBzaGlmdGVkIGNvcHkgb2Ygc2VsZiwgdmFsdWUtb2Ytb3RoZXIgdGltZXMuIiIiCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIGlmIG90aGVyLl9leHAgIT0gMDoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQorICAgICAgICBpZiBub3QgKC1jb250ZXh0LnByZWMgPD0gaW50KG90aGVyKSA8PSBjb250ZXh0LnByZWMpOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCisKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKworICAgICAgICAjIGdldCB2YWx1ZXMsIHBhZCBpZiBuZWNlc3NhcnkKKyAgICAgICAgdG9yb3QgPSBpbnQob3RoZXIpCisgICAgICAgIHJvdGRpZyA9IHNlbGYuX2ludAorICAgICAgICB0b3BhZCA9IGNvbnRleHQucHJlYyAtIGxlbihyb3RkaWcpCisgICAgICAgIGlmIHRvcGFkID4gMDoKKyAgICAgICAgICAgIHJvdGRpZyA9ICcwJyp0b3BhZCArIHJvdGRpZworICAgICAgICBlbGlmIHRvcGFkIDwgMDoKKyAgICAgICAgICAgIHJvdGRpZyA9IHJvdGRpZ1stdG9wYWQ6XQorCisgICAgICAgICMgbGV0J3Mgc2hpZnQhCisgICAgICAgIGlmIHRvcm90IDwgMDoKKyAgICAgICAgICAgIHNoaWZ0ZWQgPSByb3RkaWdbOnRvcm90XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2hpZnRlZCA9IHJvdGRpZyArICcwJyp0b3JvdAorICAgICAgICAgICAgc2hpZnRlZCA9IHNoaWZ0ZWRbLWNvbnRleHQucHJlYzpdCisKKyAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0ZWQubHN0cmlwKCcwJykgb3IgJzAnLCBzZWxmLl9leHApCisKKyAgICAjIFN1cHBvcnQgZm9yIHBpY2tsaW5nLCBjb3B5LCBhbmQgZGVlcGNvcHkKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywgKHN0cihzZWxmKSwpKQorCisgICAgZGVmIF9fY29weV9fKHNlbGYpOgorICAgICAgICBpZiB0eXBlKHNlbGYpIGlzIERlY2ltYWw6CisgICAgICAgICAgICByZXR1cm4gc2VsZiAgICAgIyBJJ20gaW1tdXRhYmxlOyB0aGVyZWZvcmUgSSBhbSBteSBvd24gY2xvbmUKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHN0cihzZWxmKSkKKworICAgIGRlZiBfX2RlZXBjb3B5X18oc2VsZiwgbWVtbyk6CisgICAgICAgIGlmIHR5cGUoc2VsZikgaXMgRGVjaW1hbDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmICAgICAjIE15IGNvbXBvbmVudHMgYXJlIGFsc28gaW1tdXRhYmxlCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzdHIoc2VsZikpCisKKyAgICAjIFBFUCAzMTAxIHN1cHBvcnQuICB0aGUgX2xvY2FsZWNvbnYga2V5d29yZCBhcmd1bWVudCBzaG91bGQgYmUKKyAgICAjIGNvbnNpZGVyZWQgcHJpdmF0ZTogaXQncyBwcm92aWRlZCBmb3IgZWFzZSBvZiB0ZXN0aW5nIG9ubHkuCisgICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgc3BlY2lmaWVyLCBjb250ZXh0PU5vbmUsIF9sb2NhbGVjb252PU5vbmUpOgorICAgICAgICAiIiJGb3JtYXQgYSBEZWNpbWFsIGluc3RhbmNlIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gc3BlY2lmaWVyLgorCisgICAgICAgIFRoZSBzcGVjaWZpZXIgc2hvdWxkIGJlIGEgc3RhbmRhcmQgZm9ybWF0IHNwZWNpZmllciwgd2l0aCB0aGUKKyAgICAgICAgZm9ybSBkZXNjcmliZWQgaW4gUEVQIDMxMDEuICBGb3JtYXR0aW5nIHR5cGVzICdlJywgJ0UnLCAnZicsCisgICAgICAgICdGJywgJ2cnLCAnRycsICduJyBhbmQgJyUnIGFyZSBzdXBwb3J0ZWQuICBJZiB0aGUgZm9ybWF0dGluZworICAgICAgICB0eXBlIGlzIG9taXR0ZWQgaXQgZGVmYXVsdHMgdG8gJ2cnIG9yICdHJywgZGVwZW5kaW5nIG9uIHRoZQorICAgICAgICB2YWx1ZSBvZiBjb250ZXh0LmNhcGl0YWxzLgorICAgICAgICAiIiIKKworICAgICAgICAjIE5vdGU6IFBFUCAzMTAxIHNheXMgdGhhdCBpZiB0aGUgdHlwZSBpcyBub3QgcHJlc2VudCB0aGVuCisgICAgICAgICMgdGhlcmUgc2hvdWxkIGJlIGF0IGxlYXN0IG9uZSBkaWdpdCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludC4KKyAgICAgICAgIyBXZSB0YWtlIHRoZSBsaWJlcnR5IG9mIGlnbm9yaW5nIHRoaXMgcmVxdWlyZW1lbnQgZm9yCisgICAgICAgICMgRGVjaW1hbC0tLWl0J3MgcHJlc3VtYWJseSB0aGVyZSB0byBtYWtlIHN1cmUgdGhhdAorICAgICAgICAjIGZvcm1hdChmbG9hdCwgJycpIGJlaGF2ZXMgc2ltaWxhcmx5IHRvIHN0cihmbG9hdCkuCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBzcGVjID0gX3BhcnNlX2Zvcm1hdF9zcGVjaWZpZXIoc3BlY2lmaWVyLCBfbG9jYWxlY29udj1fbG9jYWxlY29udikKKworICAgICAgICAjIHNwZWNpYWwgdmFsdWVzIGRvbid0IGNhcmUgYWJvdXQgdGhlIHR5cGUgb3IgcHJlY2lzaW9uCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBzaWduID0gX2Zvcm1hdF9zaWduKHNlbGYuX3NpZ24sIHNwZWMpCisgICAgICAgICAgICBib2R5ID0gc3RyKHNlbGYuY29weV9hYnMoKSkKKyAgICAgICAgICAgIGlmIHNwZWNbJ3R5cGUnXSA9PSAnJSc6CisgICAgICAgICAgICAgICAgYm9keSArPSAnJScKKyAgICAgICAgICAgIHJldHVybiBfZm9ybWF0X2FsaWduKHNpZ24sIGJvZHksIHNwZWMpCisKKyAgICAgICAgIyBhIHR5cGUgb2YgTm9uZSBkZWZhdWx0cyB0byAnZycgb3IgJ0cnLCBkZXBlbmRpbmcgb24gY29udGV4dAorICAgICAgICBpZiBzcGVjWyd0eXBlJ10gaXMgTm9uZToKKyAgICAgICAgICAgIHNwZWNbJ3R5cGUnXSA9IFsnZycsICdHJ11bY29udGV4dC5jYXBpdGFsc10KKworICAgICAgICAjIGlmIHR5cGUgaXMgJyUnLCBhZGp1c3QgZXhwb25lbnQgb2Ygc2VsZiBhY2NvcmRpbmdseQorICAgICAgICBpZiBzcGVjWyd0eXBlJ10gPT0gJyUnOgorICAgICAgICAgICAgc2VsZiA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgc2VsZi5faW50LCBzZWxmLl9leHArMikKKworICAgICAgICAjIHJvdW5kIGlmIG5lY2Vzc2FyeSwgdGFraW5nIHJvdW5kaW5nIG1vZGUgZnJvbSB0aGUgY29udGV4dAorICAgICAgICByb3VuZGluZyA9IGNvbnRleHQucm91bmRpbmcKKyAgICAgICAgcHJlY2lzaW9uID0gc3BlY1sncHJlY2lzaW9uJ10KKyAgICAgICAgaWYgcHJlY2lzaW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgc3BlY1sndHlwZSddIGluICdlRSc6CisgICAgICAgICAgICAgICAgc2VsZiA9IHNlbGYuX3JvdW5kKHByZWNpc2lvbisxLCByb3VuZGluZykKKyAgICAgICAgICAgIGVsaWYgc3BlY1sndHlwZSddIGluICdmRiUnOgorICAgICAgICAgICAgICAgIHNlbGYgPSBzZWxmLl9yZXNjYWxlKC1wcmVjaXNpb24sIHJvdW5kaW5nKQorICAgICAgICAgICAgZWxpZiBzcGVjWyd0eXBlJ10gaW4gJ2dHJyBhbmQgbGVuKHNlbGYuX2ludCkgPiBwcmVjaXNpb246CisgICAgICAgICAgICAgICAgc2VsZiA9IHNlbGYuX3JvdW5kKHByZWNpc2lvbiwgcm91bmRpbmcpCisgICAgICAgICMgc3BlY2lhbCBjYXNlOiB6ZXJvcyB3aXRoIGEgcG9zaXRpdmUgZXhwb25lbnQgY2FuJ3QgYmUKKyAgICAgICAgIyByZXByZXNlbnRlZCBpbiBmaXhlZCBwb2ludDsgcmVzY2FsZSB0aGVtIHRvIDBlMC4KKyAgICAgICAgaWYgbm90IHNlbGYgYW5kIHNlbGYuX2V4cCA+IDAgYW5kIHNwZWNbJ3R5cGUnXSBpbiAnZkYlJzoKKyAgICAgICAgICAgIHNlbGYgPSBzZWxmLl9yZXNjYWxlKDAsIHJvdW5kaW5nKQorCisgICAgICAgICMgZmlndXJlIG91dCBwbGFjZW1lbnQgb2YgdGhlIGRlY2ltYWwgcG9pbnQKKyAgICAgICAgbGVmdGRpZ2l0cyA9IHNlbGYuX2V4cCArIGxlbihzZWxmLl9pbnQpCisgICAgICAgIGlmIHNwZWNbJ3R5cGUnXSBpbiAnZUUnOgorICAgICAgICAgICAgaWYgbm90IHNlbGYgYW5kIHByZWNpc2lvbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBkb3RwbGFjZSA9IDEgLSBwcmVjaXNpb24KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZG90cGxhY2UgPSAxCisgICAgICAgIGVsaWYgc3BlY1sndHlwZSddIGluICdmRiUnOgorICAgICAgICAgICAgZG90cGxhY2UgPSBsZWZ0ZGlnaXRzCisgICAgICAgIGVsaWYgc3BlY1sndHlwZSddIGluICdnRyc6CisgICAgICAgICAgICBpZiBzZWxmLl9leHAgPD0gMCBhbmQgbGVmdGRpZ2l0cyA+IC02OgorICAgICAgICAgICAgICAgIGRvdHBsYWNlID0gbGVmdGRpZ2l0cworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkb3RwbGFjZSA9IDEKKworICAgICAgICAjIGZpbmQgZGlnaXRzIGJlZm9yZSBhbmQgYWZ0ZXIgZGVjaW1hbCBwb2ludCwgYW5kIGdldCBleHBvbmVudAorICAgICAgICBpZiBkb3RwbGFjZSA8IDA6CisgICAgICAgICAgICBpbnRwYXJ0ID0gJzAnCisgICAgICAgICAgICBmcmFjcGFydCA9ICcwJyooLWRvdHBsYWNlKSArIHNlbGYuX2ludAorICAgICAgICBlbGlmIGRvdHBsYWNlID4gbGVuKHNlbGYuX2ludCk6CisgICAgICAgICAgICBpbnRwYXJ0ID0gc2VsZi5faW50ICsgJzAnKihkb3RwbGFjZS1sZW4oc2VsZi5faW50KSkKKyAgICAgICAgICAgIGZyYWNwYXJ0ID0gJycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGludHBhcnQgPSBzZWxmLl9pbnRbOmRvdHBsYWNlXSBvciAnMCcKKyAgICAgICAgICAgIGZyYWNwYXJ0ID0gc2VsZi5faW50W2RvdHBsYWNlOl0KKyAgICAgICAgZXhwID0gbGVmdGRpZ2l0cy1kb3RwbGFjZQorCisgICAgICAgICMgZG9uZSB3aXRoIHRoZSBkZWNpbWFsLXNwZWNpZmljIHN0dWZmOyAgaGFuZCBvdmVyIHRoZSByZXN0CisgICAgICAgICMgb2YgdGhlIGZvcm1hdHRpbmcgdG8gdGhlIF9mb3JtYXRfbnVtYmVyIGZ1bmN0aW9uCisgICAgICAgIHJldHVybiBfZm9ybWF0X251bWJlcihzZWxmLl9zaWduLCBpbnRwYXJ0LCBmcmFjcGFydCwgZXhwLCBzcGVjKQorCitkZWYgX2RlY19mcm9tX3RyaXBsZShzaWduLCBjb2VmZmljaWVudCwgZXhwb25lbnQsIHNwZWNpYWw9RmFsc2UpOgorICAgICIiIkNyZWF0ZSBhIGRlY2ltYWwgaW5zdGFuY2UgZGlyZWN0bHksIHdpdGhvdXQgYW55IHZhbGlkYXRpb24sCisgICAgbm9ybWFsaXphdGlvbiAoZS5nLiByZW1vdmFsIG9mIGxlYWRpbmcgemVyb3MpIG9yIGFyZ3VtZW50CisgICAgY29udmVyc2lvbi4KKworICAgIFRoaXMgZnVuY3Rpb24gaXMgZm9yICppbnRlcm5hbCB1c2Ugb25seSouCisgICAgIiIiCisKKyAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oRGVjaW1hbCkKKyAgICBzZWxmLl9zaWduID0gc2lnbgorICAgIHNlbGYuX2ludCA9IGNvZWZmaWNpZW50CisgICAgc2VsZi5fZXhwID0gZXhwb25lbnQKKyAgICBzZWxmLl9pc19zcGVjaWFsID0gc3BlY2lhbAorCisgICAgcmV0dXJuIHNlbGYKKworIyBSZWdpc3RlciBEZWNpbWFsIGFzIGEga2luZCBvZiBOdW1iZXIgKGFuIGFic3RyYWN0IGJhc2UgY2xhc3MpLgorIyBIb3dldmVyLCBkbyBub3QgcmVnaXN0ZXIgaXQgYXMgUmVhbCAoYmVjYXVzZSBEZWNpbWFscyBhcmUgbm90CisjIGludGVyb3BlcmFibGUgd2l0aCBmbG9hdHMpLgorX251bWJlcnMuTnVtYmVyLnJlZ2lzdGVyKERlY2ltYWwpCisKKworIyMjIyMgQ29udGV4dCBjbGFzcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIF9Db250ZXh0TWFuYWdlcihvYmplY3QpOgorICAgICIiIkNvbnRleHQgbWFuYWdlciBjbGFzcyB0byBzdXBwb3J0IGxvY2FsY29udGV4dCgpLgorCisgICAgICBTZXRzIGEgY29weSBvZiB0aGUgc3VwcGxpZWQgY29udGV4dCBpbiBfX2VudGVyX18oKSBhbmQgcmVzdG9yZXMKKyAgICAgIHRoZSBwcmV2aW91cyBkZWNpbWFsIGNvbnRleHQgaW4gX19leGl0X18oKQorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuZXdfY29udGV4dCk6CisgICAgICAgIHNlbGYubmV3X2NvbnRleHQgPSBuZXdfY29udGV4dC5jb3B5KCkKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICBzZWxmLnNhdmVkX2NvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgc2V0Y29udGV4dChzZWxmLm5ld19jb250ZXh0KQorICAgICAgICByZXR1cm4gc2VsZi5uZXdfY29udGV4dAorICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0LCB2LCB0Yik6CisgICAgICAgIHNldGNvbnRleHQoc2VsZi5zYXZlZF9jb250ZXh0KQorCitjbGFzcyBDb250ZXh0KG9iamVjdCk6CisgICAgIiIiQ29udGFpbnMgdGhlIGNvbnRleHQgZm9yIGEgRGVjaW1hbCBpbnN0YW5jZS4KKworICAgIENvbnRhaW5zOgorICAgIHByZWMgLSBwcmVjaXNpb24gKGZvciB1c2UgaW4gcm91bmRpbmcsIGRpdmlzaW9uLCBzcXVhcmUgcm9vdHMuLikKKyAgICByb3VuZGluZyAtIHJvdW5kaW5nIHR5cGUgKGhvdyB5b3Ugcm91bmQpCisgICAgdHJhcHMgLSBJZiB0cmFwc1tleGNlcHRpb25dID0gMSwgdGhlbiB0aGUgZXhjZXB0aW9uIGlzCisgICAgICAgICAgICAgICAgICAgIHJhaXNlZCB3aGVuIGl0IGlzIGNhdXNlZC4gIE90aGVyd2lzZSwgYSB2YWx1ZSBpcworICAgICAgICAgICAgICAgICAgICBzdWJzdGl0dXRlZCBpbi4KKyAgICBmbGFncyAgLSBXaGVuIGFuIGV4Y2VwdGlvbiBpcyBjYXVzZWQsIGZsYWdzW2V4Y2VwdGlvbl0gaXMgc2V0LgorICAgICAgICAgICAgIChXaGV0aGVyIG9yIG5vdCB0aGUgdHJhcF9lbmFibGVyIGlzIHNldCkKKyAgICAgICAgICAgICBTaG91bGQgYmUgcmVzZXQgYnkgdXNlciBvZiBEZWNpbWFsIGluc3RhbmNlLgorICAgIEVtaW4gLSAgIE1pbmltdW0gZXhwb25lbnQKKyAgICBFbWF4IC0gICBNYXhpbXVtIGV4cG9uZW50CisgICAgY2FwaXRhbHMgLSAgICAgIElmIDEsIDEqMTBeMSBpcyBwcmludGVkIGFzIDFFKzEuCisgICAgICAgICAgICAgICAgICAgIElmIDAsIHByaW50ZWQgYXMgMWUxCisgICAgY2xhbXAgLSAgSWYgMSwgY2hhbmdlIGV4cG9uZW50cyBpZiB0b28gaGlnaCAoRGVmYXVsdCAwKQorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHByZWM9Tm9uZSwgcm91bmRpbmc9Tm9uZSwgRW1pbj1Ob25lLCBFbWF4PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgIGNhcGl0YWxzPU5vbmUsIGNsYW1wPU5vbmUsIGZsYWdzPU5vbmUsIHRyYXBzPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgIF9pZ25vcmVkX2ZsYWdzPU5vbmUpOgorICAgICAgICAjIFNldCBkZWZhdWx0czsgZm9yIGV2ZXJ5dGhpbmcgZXhjZXB0IGZsYWdzIGFuZCBfaWdub3JlZF9mbGFncywKKyAgICAgICAgIyBpbmhlcml0IGZyb20gRGVmYXVsdENvbnRleHQuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRjID0gRGVmYXVsdENvbnRleHQKKyAgICAgICAgZXhjZXB0IE5hbWVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLnByZWMgPSBwcmVjIGlmIHByZWMgaXMgbm90IE5vbmUgZWxzZSBkYy5wcmVjCisgICAgICAgIHNlbGYucm91bmRpbmcgPSByb3VuZGluZyBpZiByb3VuZGluZyBpcyBub3QgTm9uZSBlbHNlIGRjLnJvdW5kaW5nCisgICAgICAgIHNlbGYuRW1pbiA9IEVtaW4gaWYgRW1pbiBpcyBub3QgTm9uZSBlbHNlIGRjLkVtaW4KKyAgICAgICAgc2VsZi5FbWF4ID0gRW1heCBpZiBFbWF4IGlzIG5vdCBOb25lIGVsc2UgZGMuRW1heAorICAgICAgICBzZWxmLmNhcGl0YWxzID0gY2FwaXRhbHMgaWYgY2FwaXRhbHMgaXMgbm90IE5vbmUgZWxzZSBkYy5jYXBpdGFscworICAgICAgICBzZWxmLmNsYW1wID0gY2xhbXAgaWYgY2xhbXAgaXMgbm90IE5vbmUgZWxzZSBkYy5jbGFtcAorCisgICAgICAgIGlmIF9pZ25vcmVkX2ZsYWdzIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9pZ25vcmVkX2ZsYWdzID0gW10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MgPSBfaWdub3JlZF9mbGFncworCisgICAgICAgIGlmIHRyYXBzIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnRyYXBzID0gZGMudHJhcHMuY29weSgpCisgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UodHJhcHMsIGRpY3QpOgorICAgICAgICAgICAgc2VsZi50cmFwcyA9IGRpY3QoKHMsIGludChzIGluIHRyYXBzKSkgZm9yIHMgaW4gX3NpZ25hbHMgKyB0cmFwcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYudHJhcHMgPSB0cmFwcworCisgICAgICAgIGlmIGZsYWdzIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLmZsYWdzID0gZGljdC5mcm9ta2V5cyhfc2lnbmFscywgMCkKKyAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShmbGFncywgZGljdCk6CisgICAgICAgICAgICBzZWxmLmZsYWdzID0gZGljdCgocywgaW50KHMgaW4gZmxhZ3MpKSBmb3IgcyBpbiBfc2lnbmFscyArIGZsYWdzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mbGFncyA9IGZsYWdzCisKKyAgICBkZWYgX3NldF9pbnRlZ2VyX2NoZWNrKHNlbGYsIG5hbWUsIHZhbHVlLCB2bWluLCB2bWF4KToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIGludCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIG11c3QgYmUgYW4gaW50ZWdlciIgJSBuYW1lKQorICAgICAgICBpZiB2bWluID09ICctaW5mJzoKKyAgICAgICAgICAgIGlmIHZhbHVlID4gdm1heDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlcyBtdXN0IGJlIGluIFslcywgJWRdLiBnb3Q6ICVzIiAlIChuYW1lLCB2bWluLCB2bWF4LCB2YWx1ZSkpCisgICAgICAgIGVsaWYgdm1heCA9PSAnaW5mJzoKKyAgICAgICAgICAgIGlmIHZhbHVlIDwgdm1pbjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlcyBtdXN0IGJlIGluIFslZCwgJXNdLiBnb3Q6ICVzIiAlIChuYW1lLCB2bWluLCB2bWF4LCB2YWx1ZSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiB2YWx1ZSA8IHZtaW4gb3IgdmFsdWUgPiB2bWF4OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIG11c3QgYmUgaW4gWyVkLCAlZF0uIGdvdCAlcyIgJSAobmFtZSwgdm1pbiwgdm1heCwgdmFsdWUpKQorICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQorCisgICAgZGVmIF9zZXRfc2lnbmFsX2RpY3Qoc2VsZiwgbmFtZSwgZCk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGQsIGRpY3QpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBtdXN0IGJlIGEgc2lnbmFsIGRpY3QiICUgZCkKKyAgICAgICAgZm9yIGtleSBpbiBkOgorICAgICAgICAgICAgaWYgbm90IGtleSBpbiBfc2lnbmFsczoKKyAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcigiJXMgaXMgbm90IGEgdmFsaWQgc2lnbmFsIGRpY3QiICUgZCkKKyAgICAgICAgZm9yIGtleSBpbiBfc2lnbmFsczoKKyAgICAgICAgICAgIGlmIG5vdCBrZXkgaW4gZDoKKyAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcigiJXMgaXMgbm90IGEgdmFsaWQgc2lnbmFsIGRpY3QiICUgZCkKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCBkKQorCisgICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgaWYgbmFtZSA9PSAncHJlYyc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsIDEsICdpbmYnKQorICAgICAgICBlbGlmIG5hbWUgPT0gJ0VtaW4nOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9pbnRlZ2VyX2NoZWNrKG5hbWUsIHZhbHVlLCAnLWluZicsIDApCisgICAgICAgIGVsaWYgbmFtZSA9PSAnRW1heCc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsIDAsICdpbmYnKQorICAgICAgICBlbGlmIG5hbWUgPT0gJ2NhcGl0YWxzJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMCwgMSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdjbGFtcCc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsIDAsIDEpCisgICAgICAgIGVsaWYgbmFtZSA9PSAncm91bmRpbmcnOgorICAgICAgICAgICAgaWYgbm90IHZhbHVlIGluIF9yb3VuZGluZ19tb2RlczoKKyAgICAgICAgICAgICAgICAjIHJhaXNlIFR5cGVFcnJvciBldmVuIGZvciBzdHJpbmdzIHRvIGhhdmUgY29uc2lzdGVuY3kKKyAgICAgICAgICAgICAgICAjIGFtb25nIHZhcmlvdXMgaW1wbGVtZW50YXRpb25zLgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXM6IGludmFsaWQgcm91bmRpbmcgbW9kZSIgJSB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpCisgICAgICAgIGVsaWYgbmFtZSA9PSAnZmxhZ3MnIG9yIG5hbWUgPT0gJ3RyYXBzJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfc2lnbmFsX2RpY3QobmFtZSwgdmFsdWUpCisgICAgICAgIGVsaWYgbmFtZSA9PSAnX2lnbm9yZWRfZmxhZ3MnOgorICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKAorICAgICAgICAgICAgICAgICInZGVjaW1hbC5Db250ZXh0JyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnJXMnIiAlIG5hbWUpCisKKyAgICBkZWYgX19kZWxhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCIlcyBjYW5ub3QgYmUgZGVsZXRlZCIgJSBuYW1lKQorCisgICAgIyBTdXBwb3J0IGZvciBwaWNrbGluZywgY29weSwgYW5kIGRlZXBjb3B5CisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIGZsYWdzID0gW3NpZyBmb3Igc2lnLCB2IGluIHNlbGYuZmxhZ3MuaXRlbXMoKSBpZiB2XQorICAgICAgICB0cmFwcyA9IFtzaWcgZm9yIHNpZywgdiBpbiBzZWxmLnRyYXBzLml0ZW1zKCkgaWYgdl0KKyAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywKKyAgICAgICAgICAgICAgICAoc2VsZi5wcmVjLCBzZWxmLnJvdW5kaW5nLCBzZWxmLkVtaW4sIHNlbGYuRW1heCwKKyAgICAgICAgICAgICAgICAgc2VsZi5jYXBpdGFscywgc2VsZi5jbGFtcCwgZmxhZ3MsIHRyYXBzKSkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgIiIiU2hvdyB0aGUgY3VycmVudCBjb250ZXh0LiIiIgorICAgICAgICBzID0gW10KKyAgICAgICAgcy5hcHBlbmQoJ0NvbnRleHQocHJlYz0lKHByZWMpZCwgcm91bmRpbmc9JShyb3VuZGluZylzLCAnCisgICAgICAgICAgICAgICAgICdFbWluPSUoRW1pbilkLCBFbWF4PSUoRW1heClkLCBjYXBpdGFscz0lKGNhcGl0YWxzKWQsICcKKyAgICAgICAgICAgICAgICAgJ2NsYW1wPSUoY2xhbXApZCcKKyAgICAgICAgICAgICAgICAgJSB2YXJzKHNlbGYpKQorICAgICAgICBuYW1lcyA9IFtmLl9fbmFtZV9fIGZvciBmLCB2IGluIHNlbGYuZmxhZ3MuaXRlbXMoKSBpZiB2XQorICAgICAgICBzLmFwcGVuZCgnZmxhZ3M9WycgKyAnLCAnLmpvaW4obmFtZXMpICsgJ10nKQorICAgICAgICBuYW1lcyA9IFt0Ll9fbmFtZV9fIGZvciB0LCB2IGluIHNlbGYudHJhcHMuaXRlbXMoKSBpZiB2XQorICAgICAgICBzLmFwcGVuZCgndHJhcHM9WycgKyAnLCAnLmpvaW4obmFtZXMpICsgJ10nKQorICAgICAgICByZXR1cm4gJywgJy5qb2luKHMpICsgJyknCisKKyAgICBkZWYgY2xlYXJfZmxhZ3Moc2VsZik6CisgICAgICAgICIiIlJlc2V0IGFsbCBmbGFncyB0byB6ZXJvIiIiCisgICAgICAgIGZvciBmbGFnIGluIHNlbGYuZmxhZ3M6CisgICAgICAgICAgICBzZWxmLmZsYWdzW2ZsYWddID0gMAorCisgICAgZGVmIGNsZWFyX3RyYXBzKHNlbGYpOgorICAgICAgICAiIiJSZXNldCBhbGwgdHJhcHMgdG8gemVybyIiIgorICAgICAgICBmb3IgZmxhZyBpbiBzZWxmLnRyYXBzOgorICAgICAgICAgICAgc2VsZi50cmFwc1tmbGFnXSA9IDAKKworICAgIGRlZiBfc2hhbGxvd19jb3B5KHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIGEgc2hhbGxvdyBjb3B5IGZyb20gc2VsZi4iIiIKKyAgICAgICAgbmMgPSBDb250ZXh0KHNlbGYucHJlYywgc2VsZi5yb3VuZGluZywgc2VsZi5FbWluLCBzZWxmLkVtYXgsCisgICAgICAgICAgICAgICAgICAgICBzZWxmLmNhcGl0YWxzLCBzZWxmLmNsYW1wLCBzZWxmLmZsYWdzLCBzZWxmLnRyYXBzLAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5faWdub3JlZF9mbGFncykKKyAgICAgICAgcmV0dXJuIG5jCisKKyAgICBkZWYgY29weShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyBhIGRlZXAgY29weSBmcm9tIHNlbGYuIiIiCisgICAgICAgIG5jID0gQ29udGV4dChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXBpdGFscywgc2VsZi5jbGFtcCwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3MuY29weSgpLCBzZWxmLnRyYXBzLmNvcHkoKSwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCisgICAgICAgIHJldHVybiBuYworICAgIF9fY29weV9fID0gY29weQorCisgICAgZGVmIF9yYWlzZV9lcnJvcihzZWxmLCBjb25kaXRpb24sIGV4cGxhbmF0aW9uID0gTm9uZSwgKmFyZ3MpOgorICAgICAgICAiIiJIYW5kbGVzIGFuIGVycm9yCisKKyAgICAgICAgSWYgdGhlIGZsYWcgaXMgaW4gX2lnbm9yZWRfZmxhZ3MsIHJldHVybnMgdGhlIGRlZmF1bHQgcmVzcG9uc2UuCisgICAgICAgIE90aGVyd2lzZSwgaXQgc2V0cyB0aGUgZmxhZywgdGhlbiwgaWYgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgdHJhcF9lbmFibGVyIGlzIHNldCwgaXQgcmVyYWlzZXMgdGhlIGV4Y2VwdGlvbi4gIE90aGVyd2lzZSwgaXQgcmV0dXJucworICAgICAgICB0aGUgZGVmYXVsdCB2YWx1ZSBhZnRlciBzZXR0aW5nIHRoZSBmbGFnLgorICAgICAgICAiIiIKKyAgICAgICAgZXJyb3IgPSBfY29uZGl0aW9uX21hcC5nZXQoY29uZGl0aW9uLCBjb25kaXRpb24pCisgICAgICAgIGlmIGVycm9yIGluIHNlbGYuX2lnbm9yZWRfZmxhZ3M6CisgICAgICAgICAgICAjIERvbid0IHRvdWNoIHRoZSBmbGFnCisgICAgICAgICAgICByZXR1cm4gZXJyb3IoKS5oYW5kbGUoc2VsZiwgKmFyZ3MpCisKKyAgICAgICAgc2VsZi5mbGFnc1tlcnJvcl0gPSAxCisgICAgICAgIGlmIG5vdCBzZWxmLnRyYXBzW2Vycm9yXToKKyAgICAgICAgICAgICMgVGhlIGVycm9ycyBkZWZpbmUgaG93IHRvIGhhbmRsZSB0aGVtc2VsdmVzLgorICAgICAgICAgICAgcmV0dXJuIGNvbmRpdGlvbigpLmhhbmRsZShzZWxmLCAqYXJncykKKworICAgICAgICAjIEVycm9ycyBzaG91bGQgb25seSBiZSByaXNrZWQgb24gY29waWVzIG9mIHRoZSBjb250ZXh0CisgICAgICAgICMgc2VsZi5faWdub3JlZF9mbGFncyA9IFtdCisgICAgICAgIHJhaXNlIGVycm9yKGV4cGxhbmF0aW9uKQorCisgICAgZGVmIF9pZ25vcmVfYWxsX2ZsYWdzKHNlbGYpOgorICAgICAgICAiIiJJZ25vcmUgYWxsIGZsYWdzLCBpZiB0aGV5IGFyZSByYWlzZWQiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lnbm9yZV9mbGFncygqX3NpZ25hbHMpCisKKyAgICBkZWYgX2lnbm9yZV9mbGFncyhzZWxmLCAqZmxhZ3MpOgorICAgICAgICAiIiJJZ25vcmUgdGhlIGZsYWdzLCBpZiB0aGV5IGFyZSByYWlzZWQiIiIKKyAgICAgICAgIyBEbyBub3QgbXV0YXRlLS0gVGhpcyB3YXksIGNvcGllcyBvZiBhIGNvbnRleHQgbGVhdmUgdGhlIG9yaWdpbmFsCisgICAgICAgICMgYWxvbmUuCisgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MgPSAoc2VsZi5faWdub3JlZF9mbGFncyArIGxpc3QoZmxhZ3MpKQorICAgICAgICByZXR1cm4gbGlzdChmbGFncykKKworICAgIGRlZiBfcmVnYXJkX2ZsYWdzKHNlbGYsICpmbGFncyk6CisgICAgICAgICIiIlN0b3AgaWdub3JpbmcgdGhlIGZsYWdzLCBpZiB0aGV5IGFyZSByYWlzZWQiIiIKKyAgICAgICAgaWYgZmxhZ3MgYW5kIGlzaW5zdGFuY2UoZmxhZ3NbMF0sICh0dXBsZSxsaXN0KSk6CisgICAgICAgICAgICBmbGFncyA9IGZsYWdzWzBdCisgICAgICAgIGZvciBmbGFnIGluIGZsYWdzOgorICAgICAgICAgICAgc2VsZi5faWdub3JlZF9mbGFncy5yZW1vdmUoZmxhZykKKworICAgICMgV2UgaW5oZXJpdCBvYmplY3QuX19oYXNoX18sIHNvIHdlIG11c3QgZGVueSB0aGlzIGV4cGxpY2l0bHkKKyAgICBfX2hhc2hfXyA9IE5vbmUKKworICAgIGRlZiBFdGlueShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyBFdGlueSAoPSBFbWluIC0gcHJlYyArIDEpIiIiCisgICAgICAgIHJldHVybiBpbnQoc2VsZi5FbWluIC0gc2VsZi5wcmVjICsgMSkKKworICAgIGRlZiBFdG9wKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIG1heGltdW0gZXhwb25lbnQgKD0gRW1heCAtIHByZWMgKyAxKSIiIgorICAgICAgICByZXR1cm4gaW50KHNlbGYuRW1heCAtIHNlbGYucHJlYyArIDEpCisKKyAgICBkZWYgX3NldF9yb3VuZGluZyhzZWxmLCB0eXBlKToKKyAgICAgICAgIiIiU2V0cyB0aGUgcm91bmRpbmcgdHlwZS4KKworICAgICAgICBTZXRzIHRoZSByb3VuZGluZyB0eXBlLCBhbmQgcmV0dXJucyB0aGUgY3VycmVudCAocHJldmlvdXMpCisgICAgICAgIHJvdW5kaW5nIHR5cGUuICBPZnRlbiB1c2VkIGxpa2U6CisKKyAgICAgICAgY29udGV4dCA9IGNvbnRleHQuY29weSgpCisgICAgICAgICMgc28geW91IGRvbid0IGNoYW5nZSB0aGUgY2FsbGluZyBjb250ZXh0CisgICAgICAgICMgaWYgYW4gZXJyb3Igb2NjdXJzIGluIHRoZSBtaWRkbGUuCisgICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX1VQKQorICAgICAgICB2YWwgPSBzZWxmLl9fc3ViX18ob3RoZXIsIGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgY29udGV4dC5fc2V0X3JvdW5kaW5nKHJvdW5kaW5nKQorCisgICAgICAgIFRoaXMgd2lsbCBtYWtlIGl0IHJvdW5kIHVwIGZvciB0aGF0IG9wZXJhdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIHJvdW5kaW5nID0gc2VsZi5yb3VuZGluZworICAgICAgICBzZWxmLnJvdW5kaW5nPSB0eXBlCisgICAgICAgIHJldHVybiByb3VuZGluZworCisgICAgZGVmIGNyZWF0ZV9kZWNpbWFsKHNlbGYsIG51bT0nMCcpOgorICAgICAgICAiIiJDcmVhdGVzIGEgbmV3IERlY2ltYWwgaW5zdGFuY2UgYnV0IHVzaW5nIHNlbGYgYXMgY29udGV4dC4KKworICAgICAgICBUaGlzIG1ldGhvZCBpbXBsZW1lbnRzIHRoZSB0by1udW1iZXIgb3BlcmF0aW9uIG9mIHRoZQorICAgICAgICBJQk0gRGVjaW1hbCBzcGVjaWZpY2F0aW9uLiIiIgorCisgICAgICAgIGlmIGlzaW5zdGFuY2UobnVtLCBzdHIpIGFuZCBudW0gIT0gbnVtLnN0cmlwKCk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmFpc2VfZXJyb3IoQ29udmVyc2lvblN5bnRheCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm8gdHJhaWxpbmcgb3IgbGVhZGluZyB3aGl0ZXNwYWNlIGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVybWl0dGVkLiIpCisKKyAgICAgICAgZCA9IERlY2ltYWwobnVtLCBjb250ZXh0PXNlbGYpCisgICAgICAgIGlmIGQuX2lzbmFuKCkgYW5kIGxlbihkLl9pbnQpID4gc2VsZi5wcmVjIC0gc2VsZi5jbGFtcDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yYWlzZV9lcnJvcihDb252ZXJzaW9uU3ludGF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaWFnbm9zdGljIGluZm8gdG9vIGxvbmcgaW4gTmFOIikKKyAgICAgICAgcmV0dXJuIGQuX2ZpeChzZWxmKQorCisgICAgZGVmIGNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoc2VsZiwgZik6CisgICAgICAgICIiIkNyZWF0ZXMgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBmcm9tIGEgZmxvYXQgYnV0IHJvdW5kaW5nIHVzaW5nIHNlbGYKKyAgICAgICAgYXMgdGhlIGNvbnRleHQuCisKKyAgICAgICAgPj4+IGNvbnRleHQgPSBDb250ZXh0KHByZWM9NSwgcm91bmRpbmc9Uk9VTkRfRE9XTikKKyAgICAgICAgPj4+IGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgzLjE0MTU5MjY1MzU4OTc5MzIpCisgICAgICAgIERlY2ltYWwoJzMuMTQxNScpCisgICAgICAgID4+PiBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHRyYXBzPVtJbmV4YWN0XSkKKyAgICAgICAgPj4+IGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgzLjE0MTU5MjY1MzU4OTc5MzIpCisgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgIC4uLgorICAgICAgICBkZWNpbWFsLkluZXhhY3QKKworICAgICAgICAiIiIKKyAgICAgICAgZCA9IERlY2ltYWwuZnJvbV9mbG9hdChmKSAgICAgICAjIEFuIGV4YWN0IGNvbnZlcnNpb24KKyAgICAgICAgcmV0dXJuIGQuX2ZpeChzZWxmKSAgICAgICAgICAgICAjIEFwcGx5IHRoZSBjb250ZXh0IHJvdW5kaW5nCisKKyAgICAjIE1ldGhvZHMKKyAgICBkZWYgYWJzKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgb3BlcmFuZC4KKworICAgICAgICBJZiB0aGUgb3BlcmFuZCBpcyBuZWdhdGl2ZSwgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBhcyB1c2luZyB0aGUgbWludXMKKyAgICAgICAgb3BlcmF0aW9uIG9uIHRoZSBvcGVyYW5kLiAgT3RoZXJ3aXNlLCB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lIGFzIHVzaW5nCisgICAgICAgIHRoZSBwbHVzIG9wZXJhdGlvbiBvbiB0aGUgb3BlcmFuZC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFicyhEZWNpbWFsKCcyLjEnKSkKKyAgICAgICAgRGVjaW1hbCgnMi4xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hYnMoRGVjaW1hbCgnLTEwMCcpKQorICAgICAgICBEZWNpbWFsKCcxMDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFicyhEZWNpbWFsKCcxMDEuNScpKQorICAgICAgICBEZWNpbWFsKCcxMDEuNScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWJzKERlY2ltYWwoJy0xMDEuNScpKQorICAgICAgICBEZWNpbWFsKCcxMDEuNScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWJzKC0xKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLl9fYWJzX18oY29udGV4dD1zZWxmKQorCisgICAgZGVmIGFkZChzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBzdW0gb2YgdGhlIHR3byBvcGVyYW5kcy4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFkZChEZWNpbWFsKCcxMicpLCBEZWNpbWFsKCc3LjAwJykpCisgICAgICAgIERlY2ltYWwoJzE5LjAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hZGQoRGVjaW1hbCgnMUUrMicpLCBEZWNpbWFsKCcxLjAxRSs0JykpCisgICAgICAgIERlY2ltYWwoJzEuMDJFKzQnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFkZCgxLCBEZWNpbWFsKDIpKQorICAgICAgICBEZWNpbWFsKCczJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hZGQoRGVjaW1hbCg4KSwgNSkKKyAgICAgICAgRGVjaW1hbCgnMTMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFkZCg1LCA1KQorICAgICAgICBEZWNpbWFsKCcxMCcpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByID0gYS5fX2FkZF9fKGIsIGNvbnRleHQ9c2VsZikKKyAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHIKKworICAgIGRlZiBfYXBwbHkoc2VsZiwgYSk6CisgICAgICAgIHJldHVybiBzdHIoYS5fZml4KHNlbGYpKQorCisgICAgZGVmIGNhbm9uaWNhbChzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgc2FtZSBEZWNpbWFsIG9iamVjdC4KKworICAgICAgICBBcyB3ZSBkbyBub3QgaGF2ZSBkaWZmZXJlbnQgZW5jb2RpbmdzIGZvciB0aGUgc2FtZSBudW1iZXIsIHRoZQorICAgICAgICByZWNlaXZlZCBvYmplY3QgYWxyZWFkeSBpcyBpbiBpdHMgY2Fub25pY2FsIGZvcm0uCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jYW5vbmljYWwoRGVjaW1hbCgnMi41MCcpKQorICAgICAgICBEZWNpbWFsKCcyLjUwJykKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGEsIERlY2ltYWwpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjYW5vbmljYWwgcmVxdWlyZXMgYSBEZWNpbWFsIGFzIGFuIGFyZ3VtZW50LiIpCisgICAgICAgIHJldHVybiBhLmNhbm9uaWNhbCgpCisKKyAgICBkZWYgY29tcGFyZShzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiQ29tcGFyZXMgdmFsdWVzIG51bWVyaWNhbGx5LgorCisgICAgICAgIElmIHRoZSBzaWducyBvZiB0aGUgb3BlcmFuZHMgZGlmZmVyLCBhIHZhbHVlIHJlcHJlc2VudGluZyBlYWNoIG9wZXJhbmQKKyAgICAgICAgKCctMScgaWYgdGhlIG9wZXJhbmQgaXMgbGVzcyB0aGFuIHplcm8sICcwJyBpZiB0aGUgb3BlcmFuZCBpcyB6ZXJvIG9yCisgICAgICAgIG5lZ2F0aXZlIHplcm8sIG9yICcxJyBpZiB0aGUgb3BlcmFuZCBpcyBncmVhdGVyIHRoYW4gemVybykgaXMgdXNlZCBpbgorICAgICAgICBwbGFjZSBvZiB0aGF0IG9wZXJhbmQgZm9yIHRoZSBjb21wYXJpc29uIGluc3RlYWQgb2YgdGhlIGFjdHVhbAorICAgICAgICBvcGVyYW5kLgorCisgICAgICAgIFRoZSBjb21wYXJpc29uIGlzIHRoZW4gZWZmZWN0ZWQgYnkgc3VidHJhY3RpbmcgdGhlIHNlY29uZCBvcGVyYW5kIGZyb20KKyAgICAgICAgdGhlIGZpcnN0IGFuZCB0aGVuIHJldHVybmluZyBhIHZhbHVlIGFjY29yZGluZyB0byB0aGUgcmVzdWx0IG9mIHRoZQorICAgICAgICBzdWJ0cmFjdGlvbjogJy0xJyBpZiB0aGUgcmVzdWx0IGlzIGxlc3MgdGhhbiB6ZXJvLCAnMCcgaWYgdGhlIHJlc3VsdCBpcworICAgICAgICB6ZXJvIG9yIG5lZ2F0aXZlIHplcm8sIG9yICcxJyBpZiB0aGUgcmVzdWx0IGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnMi4xJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzIuMTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKCczJyksIERlY2ltYWwoJzIuMScpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCctMycpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJy0zJyksIERlY2ltYWwoJzIuMScpKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZSgxLCAyKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKDEpLCAyKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZSgxLCBEZWNpbWFsKDIpKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5jb21wYXJlKGIsIGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBjb21wYXJlX3NpZ25hbChzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiQ29tcGFyZXMgdGhlIHZhbHVlcyBvZiB0aGUgdHdvIG9wZXJhbmRzIG51bWVyaWNhbGx5LgorCisgICAgICAgIEl0J3MgcHJldHR5IG11Y2ggbGlrZSBjb21wYXJlKCksIGJ1dCBhbGwgTmFOcyBzaWduYWwsIHdpdGggc2lnbmFsaW5nCisgICAgICAgIE5hTnMgdGFraW5nIHByZWNlZGVuY2Ugb3ZlciBxdWlldCBOYU5zLgorCisgICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0CisgICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IGMuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzIuMScpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0gPSAwCisgICAgICAgID4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAwCisgICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoJ05hTicpLCBEZWNpbWFsKCcyLjEnKSkKKyAgICAgICAgRGVjaW1hbCgnTmFOJykKKyAgICAgICAgPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgIDEKKyAgICAgICAgPj4+IGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0gPSAwCisgICAgICAgID4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAwCisgICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoJ3NOYU4nKSwgRGVjaW1hbCgnMi4xJykpCisgICAgICAgIERlY2ltYWwoJ05hTicpCisgICAgICAgID4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAxCisgICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKC0xLCAyKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoLTEpLCAyKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKC0xLCBEZWNpbWFsKDIpKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5jb21wYXJlX3NpZ25hbChiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgY29tcGFyZV90b3RhbChzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiQ29tcGFyZXMgdHdvIG9wZXJhbmRzIHVzaW5nIHRoZWlyIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uLgorCisgICAgICAgIFRoaXMgaXMgbm90IGxpa2UgdGhlIHN0YW5kYXJkIGNvbXBhcmUsIHdoaWNoIHVzZSB0aGVpciBudW1lcmljYWwKKyAgICAgICAgdmFsdWUuIE5vdGUgdGhhdCBhIHRvdGFsIG9yZGVyaW5nIGlzIGRlZmluZWQgZm9yIGFsbCBwb3NzaWJsZSBhYnN0cmFjdAorICAgICAgICByZXByZXNlbnRhdGlvbnMuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyLjczJyksIERlY2ltYWwoJzEyNy45JykpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoJy0xMjcnKSwgIERlY2ltYWwoJzEyJykpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyLjMwJyksIERlY2ltYWwoJzEyLjMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoRGVjaW1hbCgnMTIuMzAnKSwgRGVjaW1hbCgnMTIuMzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKCcxMi4zJyksICBEZWNpbWFsKCcxMi4zMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKCcxMi4zJyksICBEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoMSwgMikKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoRGVjaW1hbCgxKSwgMikKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoMSwgRGVjaW1hbCgyKSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuY29tcGFyZV90b3RhbChiKQorCisgICAgZGVmIGNvbXBhcmVfdG90YWxfbWFnKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJDb21wYXJlcyB0d28gb3BlcmFuZHMgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24gaWdub3Jpbmcgc2lnbi4KKworICAgICAgICBMaWtlIGNvbXBhcmVfdG90YWwsIGJ1dCB3aXRoIG9wZXJhbmQncyBzaWduIGlnbm9yZWQgYW5kIGFzc3VtZWQgdG8gYmUgMC4KKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmNvbXBhcmVfdG90YWxfbWFnKGIpCisKKyAgICBkZWYgY29weV9hYnMoc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybnMgYSBjb3B5IG9mIHRoZSBvcGVyYW5kIHdpdGggdGhlIHNpZ24gc2V0IHRvIDAuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X2FicyhEZWNpbWFsKCcyLjEnKSkKKyAgICAgICAgRGVjaW1hbCgnMi4xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X2FicyhEZWNpbWFsKCctMTAwJykpCisgICAgICAgIERlY2ltYWwoJzEwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9hYnMoLTEpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuY29weV9hYnMoKQorCisgICAgZGVmIGNvcHlfZGVjaW1hbChzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGRlY2ltYWwgb2JqZWN0LgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9kZWNpbWFsKERlY2ltYWwoJzIuMScpKQorICAgICAgICBEZWNpbWFsKCcyLjEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfZGVjaW1hbChEZWNpbWFsKCctMS4wMCcpKQorICAgICAgICBEZWNpbWFsKCctMS4wMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9kZWNpbWFsKDEpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIERlY2ltYWwoYSkKKworICAgIGRlZiBjb3B5X25lZ2F0ZShzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJucyBhIGNvcHkgb2YgdGhlIG9wZXJhbmQgd2l0aCB0aGUgc2lnbiBpbnZlcnRlZC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfbmVnYXRlKERlY2ltYWwoJzEwMS41JykpCisgICAgICAgIERlY2ltYWwoJy0xMDEuNScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9uZWdhdGUoRGVjaW1hbCgnLTEwMS41JykpCisgICAgICAgIERlY2ltYWwoJzEwMS41JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X25lZ2F0ZSgxKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5jb3B5X25lZ2F0ZSgpCisKKyAgICBkZWYgY29weV9zaWduKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJDb3BpZXMgdGhlIHNlY29uZCBvcGVyYW5kJ3Mgc2lnbiB0byB0aGUgZmlyc3Qgb25lLgorCisgICAgICAgIEluIGRldGFpbCwgaXQgcmV0dXJucyBhIGNvcHkgb2YgdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgc2lnbgorICAgICAgICBlcXVhbCB0byB0aGUgc2lnbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oRGVjaW1hbCggJzEuNTAnKSwgRGVjaW1hbCgnNy4zMycpKQorICAgICAgICBEZWNpbWFsKCcxLjUwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oRGVjaW1hbCgnLTEuNTAnKSwgRGVjaW1hbCgnNy4zMycpKQorICAgICAgICBEZWNpbWFsKCcxLjUwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oRGVjaW1hbCggJzEuNTAnKSwgRGVjaW1hbCgnLTcuMzMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEuNTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbihEZWNpbWFsKCctMS41MCcpLCBEZWNpbWFsKCctNy4zMycpKQorICAgICAgICBEZWNpbWFsKCctMS41MCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKDEsIC0yKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKERlY2ltYWwoMSksIC0yKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKDEsIERlY2ltYWwoLTIpKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5jb3B5X3NpZ24oYikKKworICAgIGRlZiBkaXZpZGUoc2VsZiwgYSwgYik6CisgICAgICAgICIiIkRlY2ltYWwgZGl2aXNpb24gaW4gYSBzcGVjaWZpZWQgY29udGV4dC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcxJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnMC4zMzMzMzMzMzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcyJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnMC42NjY2NjY2NjcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCc1JyksIERlY2ltYWwoJzInKSkKKyAgICAgICAgRGVjaW1hbCgnMi41JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcxMCcpKQorICAgICAgICBEZWNpbWFsKCcwLjEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcxMicpLCBEZWNpbWFsKCcxMicpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnOC4wMCcpLCBEZWNpbWFsKCcyJykpCisgICAgICAgIERlY2ltYWwoJzQuMDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcyLjQwMCcpLCBEZWNpbWFsKCcyLjAnKSkKKyAgICAgICAgRGVjaW1hbCgnMS4yMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzEwMDAnKSwgRGVjaW1hbCgnMTAwJykpCisgICAgICAgIERlY2ltYWwoJzEwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMTAwMCcpLCBEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzEwMDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcyLjQwRSs2JyksIERlY2ltYWwoJzInKSkKKyAgICAgICAgRGVjaW1hbCgnMS4yMEUrNicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKDUsIDUpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKDUpLCA1KQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoNSwgRGVjaW1hbCg1KSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByID0gYS5fX3RydWVkaXZfXyhiLCBjb250ZXh0PXNlbGYpCisgICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiByCisKKyAgICBkZWYgZGl2aWRlX2ludChzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiRGl2aWRlcyB0d28gbnVtYmVycyBhbmQgcmV0dXJucyB0aGUgaW50ZWdlciBwYXJ0IG9mIHRoZSByZXN1bHQuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGVfaW50KERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGVfaW50KERlY2ltYWwoJzEwJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludChEZWNpbWFsKCcxJyksIERlY2ltYWwoJzAuMycpKQorICAgICAgICBEZWNpbWFsKCczJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGVfaW50KDEwLCAzKQorICAgICAgICBEZWNpbWFsKCczJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGVfaW50KERlY2ltYWwoMTApLCAzKQorICAgICAgICBEZWNpbWFsKCczJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGVfaW50KDEwLCBEZWNpbWFsKDMpKQorICAgICAgICBEZWNpbWFsKCczJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHIgPSBhLl9fZmxvb3JkaXZfXyhiLCBjb250ZXh0PXNlbGYpCisgICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiByCisKKyAgICBkZWYgZGl2bW9kKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJSZXR1cm4gKGEgLy8gYiwgYSAlIGIpLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2bW9kKERlY2ltYWwoOCksIERlY2ltYWwoMykpCisgICAgICAgIChEZWNpbWFsKCcyJyksIERlY2ltYWwoJzInKSkKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZtb2QoRGVjaW1hbCg4KSwgRGVjaW1hbCg0KSkKKyAgICAgICAgKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdm1vZCg4LCA0KQorICAgICAgICAoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCcwJykpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2bW9kKERlY2ltYWwoOCksIDQpCisgICAgICAgIChEZWNpbWFsKCcyJyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZtb2QoOCwgRGVjaW1hbCg0KSkKKyAgICAgICAgKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgciA9IGEuX19kaXZtb2RfXyhiLCBjb250ZXh0PXNlbGYpCisgICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiByCisKKyAgICBkZWYgZXhwKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm5zIGUgKiogYS4KKworICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKKyAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKKyAgICAgICAgPj4+IGMuRW1heCA9IDk5OQorICAgICAgICA+Pj4gYy5leHAoRGVjaW1hbCgnLUluZmluaXR5JykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gYy5leHAoRGVjaW1hbCgnLTEnKSkKKyAgICAgICAgRGVjaW1hbCgnMC4zNjc4Nzk0NDEnKQorICAgICAgICA+Pj4gYy5leHAoRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IGMuZXhwKERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMi43MTgyODE4MycpCisgICAgICAgID4+PiBjLmV4cChEZWNpbWFsKCcwLjY5MzE0NzE4MScpKQorICAgICAgICBEZWNpbWFsKCcyLjAwMDAwMDAwJykKKyAgICAgICAgPj4+IGMuZXhwKERlY2ltYWwoJytJbmZpbml0eScpKQorICAgICAgICBEZWNpbWFsKCdJbmZpbml0eScpCisgICAgICAgID4+PiBjLmV4cCgxMCkKKyAgICAgICAgRGVjaW1hbCgnMjIwMjYuNDY1OCcpCisgICAgICAgICIiIgorICAgICAgICBhID1fY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmV4cChjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgZm1hKHNlbGYsIGEsIGIsIGMpOgorICAgICAgICAiIiJSZXR1cm5zIGEgbXVsdGlwbGllZCBieSBiLCBwbHVzIGMuCisKKyAgICAgICAgVGhlIGZpcnN0IHR3byBvcGVyYW5kcyBhcmUgbXVsdGlwbGllZCB0b2dldGhlciwgdXNpbmcgbXVsdGlwbHksCisgICAgICAgIHRoZSB0aGlyZCBvcGVyYW5kIGlzIHRoZW4gYWRkZWQgdG8gdGhlIHJlc3VsdCBvZiB0aGF0CisgICAgICAgIG11bHRpcGxpY2F0aW9uLCB1c2luZyBhZGQsIGFsbCB3aXRoIG9ubHkgb25lIGZpbmFsIHJvdW5kaW5nLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnNScpLCBEZWNpbWFsKCc3JykpCisgICAgICAgIERlY2ltYWwoJzIyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5mbWEoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCctNScpLCBEZWNpbWFsKCc3JykpCisgICAgICAgIERlY2ltYWwoJy04JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5mbWEoRGVjaW1hbCgnODg4NTY1MjkwJyksIERlY2ltYWwoJzE1NTcuOTY5MzAnKSwgRGVjaW1hbCgnLTg2MDg3Ljc1NzgnKSkKKyAgICAgICAgRGVjaW1hbCgnMS4zODQzNTczNkUrMTInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmZtYSgxLCAzLCA0KQorICAgICAgICBEZWNpbWFsKCc3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5mbWEoMSwgRGVjaW1hbCgzKSwgNCkKKyAgICAgICAgRGVjaW1hbCgnNycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKDEsIDMsIERlY2ltYWwoNCkpCisgICAgICAgIERlY2ltYWwoJzcnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuZm1hKGIsIGMsIGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBpc19jYW5vbmljYWwoc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGNhbm9uaWNhbDsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KKworICAgICAgICBDdXJyZW50bHksIHRoZSBlbmNvZGluZyBvZiBhIERlY2ltYWwgaW5zdGFuY2UgaXMgYWx3YXlzCisgICAgICAgIGNhbm9uaWNhbCwgc28gdGhpcyBtZXRob2QgcmV0dXJucyBUcnVlIGZvciBhbnkgRGVjaW1hbC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Nhbm9uaWNhbChEZWNpbWFsKCcyLjUwJykpCisgICAgICAgIFRydWUKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGEsIERlY2ltYWwpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpc19jYW5vbmljYWwgcmVxdWlyZXMgYSBEZWNpbWFsIGFzIGFuIGFyZ3VtZW50LiIpCisgICAgICAgIHJldHVybiBhLmlzX2Nhbm9uaWNhbCgpCisKKyAgICBkZWYgaXNfZmluaXRlKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBmaW5pdGU7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCisKKyAgICAgICAgQSBEZWNpbWFsIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgZmluaXRlIGlmIGl0IGlzIG5laXRoZXIKKyAgICAgICAgaW5maW5pdGUgbm9yIGEgTmFOLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKERlY2ltYWwoJzIuNTAnKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZShEZWNpbWFsKCctMC4zJykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoRGVjaW1hbCgnMCcpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKERlY2ltYWwoJ0luZicpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZShEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoMSkKKyAgICAgICAgVHJ1ZQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuaXNfZmluaXRlKCkKKworICAgIGRlZiBpc19pbmZpbml0ZShzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgaW5maW5pdGU7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19pbmZpbml0ZShEZWNpbWFsKCcyLjUwJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfaW5maW5pdGUoRGVjaW1hbCgnLUluZicpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfaW5maW5pdGUoRGVjaW1hbCgnTmFOJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfaW5maW5pdGUoMSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmlzX2luZmluaXRlKCkKKworICAgIGRlZiBpc19uYW4oc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGEgcU5hTiBvciBzTmFOOworICAgICAgICBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfbmFuKERlY2ltYWwoJzIuNTAnKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19uYW4oRGVjaW1hbCgnTmFOJykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19uYW4oRGVjaW1hbCgnLXNOYU4nKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX25hbigxKQorICAgICAgICBGYWxzZQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuaXNfbmFuKCkKKworICAgIGRlZiBpc19ub3JtYWwoc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGEgbm9ybWFsIG51bWJlcjsKKyAgICAgICAgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KKworICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKKyAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKKyAgICAgICAgPj4+IGMuRW1heCA9IDk5OQorICAgICAgICA+Pj4gYy5pc19ub3JtYWwoRGVjaW1hbCgnMi41MCcpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBjLmlzX25vcm1hbChEZWNpbWFsKCcwLjFFLTk5OScpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gYy5pc19ub3JtYWwoRGVjaW1hbCgnMC4wMCcpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gYy5pc19ub3JtYWwoRGVjaW1hbCgnLUluZicpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gYy5pc19ub3JtYWwoRGVjaW1hbCgnTmFOJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBjLmlzX25vcm1hbCgxKQorICAgICAgICBUcnVlCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5pc19ub3JtYWwoY29udGV4dD1zZWxmKQorCisgICAgZGVmIGlzX3FuYW4oc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfcW5hbihEZWNpbWFsKCcyLjUwJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfcW5hbihEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3FuYW4oRGVjaW1hbCgnc05hTicpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3FuYW4oMSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmlzX3FuYW4oKQorCisgICAgZGVmIGlzX3NpZ25lZChzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgbmVnYXRpdmU7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zaWduZWQoRGVjaW1hbCgnMi41MCcpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NpZ25lZChEZWNpbWFsKCctMTInKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NpZ25lZChEZWNpbWFsKCctMCcpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc2lnbmVkKDgpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc2lnbmVkKC04KQorICAgICAgICBUcnVlCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5pc19zaWduZWQoKQorCisgICAgZGVmIGlzX3NuYW4oc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGEgc2lnbmFsaW5nIE5hTjsKKyAgICAgICAgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NuYW4oRGVjaW1hbCgnMi41MCcpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NuYW4oRGVjaW1hbCgnTmFOJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc25hbihEZWNpbWFsKCdzTmFOJykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zbmFuKDEpCisgICAgICAgIEZhbHNlCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5pc19zbmFuKCkKKworICAgIGRlZiBpc19zdWJub3JtYWwoc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIHN1Ym5vcm1hbDsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KKworICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKKyAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKKyAgICAgICAgPj4+IGMuRW1heCA9IDk5OQorICAgICAgICA+Pj4gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgnMi41MCcpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgnMC4xRS05OTknKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgnMC4wMCcpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgnLUluZicpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgnTmFOJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBjLmlzX3N1Ym5vcm1hbCgxKQorICAgICAgICBGYWxzZQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuaXNfc3Vibm9ybWFsKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBpc196ZXJvKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBhIHplcm87IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc196ZXJvKERlY2ltYWwoJzAnKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3plcm8oRGVjaW1hbCgnMi41MCcpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3plcm8oRGVjaW1hbCgnLTBFKzInKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3plcm8oMSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc196ZXJvKDApCisgICAgICAgIFRydWUKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmlzX3plcm8oKQorCisgICAgZGVmIGxuKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBuYXR1cmFsIChiYXNlIGUpIGxvZ2FyaXRobSBvZiB0aGUgb3BlcmFuZC4KKworICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKKyAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKKyAgICAgICAgPj4+IGMuRW1heCA9IDk5OQorICAgICAgICA+Pj4gYy5sbihEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCisgICAgICAgID4+PiBjLmxuKERlY2ltYWwoJzEuMDAwJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gYy5sbihEZWNpbWFsKCcyLjcxODI4MTgzJykpCisgICAgICAgIERlY2ltYWwoJzEuMDAwMDAwMDAnKQorICAgICAgICA+Pj4gYy5sbihEZWNpbWFsKCcxMCcpKQorICAgICAgICBEZWNpbWFsKCcyLjMwMjU4NTA5JykKKyAgICAgICAgPj4+IGMubG4oRGVjaW1hbCgnK0luZmluaXR5JykpCisgICAgICAgIERlY2ltYWwoJ0luZmluaXR5JykKKyAgICAgICAgPj4+IGMubG4oMSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5sbihjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbG9nMTAoc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIGJhc2UgMTAgbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLgorCisgICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQorICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQorICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5CisgICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKKyAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnMC4wMDEnKSkKKyAgICAgICAgRGVjaW1hbCgnLTMnKQorICAgICAgICA+Pj4gYy5sb2cxMChEZWNpbWFsKCcxLjAwMCcpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnMicpKQorICAgICAgICBEZWNpbWFsKCcwLjMwMTAyOTk5NicpCisgICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzEwJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gYy5sb2cxMChEZWNpbWFsKCc3MCcpKQorICAgICAgICBEZWNpbWFsKCcxLjg0NTA5ODA0JykKKyAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnK0luZmluaXR5JykpCisgICAgICAgIERlY2ltYWwoJ0luZmluaXR5JykKKyAgICAgICAgPj4+IGMubG9nMTAoMCkKKyAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKKyAgICAgICAgPj4+IGMubG9nMTAoMSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5sb2cxMChjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbG9nYihzZWxmLCBhKToKKyAgICAgICAgIiIiIFJldHVybnMgdGhlIGV4cG9uZW50IG9mIHRoZSBtYWduaXR1ZGUgb2YgdGhlIG9wZXJhbmQncyBNU0QuCisKKyAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgaW50ZWdlciB3aGljaCBpcyB0aGUgZXhwb25lbnQgb2YgdGhlIG1hZ25pdHVkZQorICAgICAgICBvZiB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdCBvZiB0aGUgb3BlcmFuZCAoYXMgdGhvdWdoIHRoZQorICAgICAgICBvcGVyYW5kIHdlcmUgdHJ1bmNhdGVkIHRvIGEgc2luZ2xlIGRpZ2l0IHdoaWxlIG1haW50YWluaW5nIHRoZQorICAgICAgICB2YWx1ZSBvZiB0aGF0IGRpZ2l0IGFuZCB3aXRob3V0IGxpbWl0aW5nIHRoZSByZXN1bHRpbmcgZXhwb25lbnQpLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYihEZWNpbWFsKCcyNTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYihEZWNpbWFsKCcyLjUwJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2IoRGVjaW1hbCgnMC4wMycpKQorICAgICAgICBEZWNpbWFsKCctMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYihEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYigxKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2diKDEwKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2diKDEwMCkKKyAgICAgICAgRGVjaW1hbCgnMicpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5sb2diKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBsb2dpY2FsX2FuZChzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiQXBwbGllcyB0aGUgbG9naWNhbCBvcGVyYXRpb24gJ2FuZCcgYmV0d2VlbiBlYWNoIG9wZXJhbmQncyBkaWdpdHMuCisKKyAgICAgICAgVGhlIG9wZXJhbmRzIG11c3QgYmUgYm90aCBsb2dpY2FsIG51bWJlcnMuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZChEZWNpbWFsKCcwJyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZChEZWNpbWFsKCcxJyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoRGVjaW1hbCgnMTEwMCcpLCBEZWNpbWFsKCcxMDEwJykpCisgICAgICAgIERlY2ltYWwoJzEwMDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKERlY2ltYWwoJzExMTEnKSwgRGVjaW1hbCgnMTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKDExMCwgMTEwMSkKKyAgICAgICAgRGVjaW1hbCgnMTAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZChEZWNpbWFsKDExMCksIDExMDEpCisgICAgICAgIERlY2ltYWwoJzEwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoMTEwLCBEZWNpbWFsKDExMDEpKQorICAgICAgICBEZWNpbWFsKCcxMDAnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubG9naWNhbF9hbmQoYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIGxvZ2ljYWxfaW52ZXJ0KHNlbGYsIGEpOgorICAgICAgICAiIiJJbnZlcnQgYWxsIHRoZSBkaWdpdHMgaW4gdGhlIG9wZXJhbmQuCisKKyAgICAgICAgVGhlIG9wZXJhbmQgbXVzdCBiZSBhIGxvZ2ljYWwgbnVtYmVyLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9pbnZlcnQoRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCcxMTExMTExMTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfaW52ZXJ0KERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMTExMTExMTEwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2ludmVydChEZWNpbWFsKCcxMTExMTExMTEnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9pbnZlcnQoRGVjaW1hbCgnMTAxMDEwMTAxJykpCisgICAgICAgIERlY2ltYWwoJzEwMTAxMDEwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2ludmVydCgxMTAxKQorICAgICAgICBEZWNpbWFsKCcxMTExMTAwMTAnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubG9naWNhbF9pbnZlcnQoY29udGV4dD1zZWxmKQorCisgICAgZGVmIGxvZ2ljYWxfb3Ioc2VsZiwgYSwgYik6CisgICAgICAgICIiIkFwcGxpZXMgdGhlIGxvZ2ljYWwgb3BlcmF0aW9uICdvcicgYmV0d2VlbiBlYWNoIG9wZXJhbmQncyBkaWdpdHMuCisKKyAgICAgICAgVGhlIG9wZXJhbmRzIG11c3QgYmUgYm90aCBsb2dpY2FsIG51bWJlcnMuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoJzExMDAnKSwgRGVjaW1hbCgnMTAxMCcpKQorICAgICAgICBEZWNpbWFsKCcxMTEwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoJzExMTAnKSwgRGVjaW1hbCgnMTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTExMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcigxMTAsIDExMDEpCisgICAgICAgIERlY2ltYWwoJzExMTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoRGVjaW1hbCgxMTApLCAxMTAxKQorICAgICAgICBEZWNpbWFsKCcxMTExJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKDExMCwgRGVjaW1hbCgxMTAxKSkKKyAgICAgICAgRGVjaW1hbCgnMTExMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5sb2dpY2FsX29yKGIsIGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBsb2dpY2FsX3hvcihzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiQXBwbGllcyB0aGUgbG9naWNhbCBvcGVyYXRpb24gJ3hvcicgYmV0d2VlbiBlYWNoIG9wZXJhbmQncyBkaWdpdHMuCisKKyAgICAgICAgVGhlIG9wZXJhbmRzIG11c3QgYmUgYm90aCBsb2dpY2FsIG51bWJlcnMuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKCcwJyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKCcxJyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMTEwMCcpLCBEZWNpbWFsKCcxMDEwJykpCisgICAgICAgIERlY2ltYWwoJzExMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMTExMScpLCBEZWNpbWFsKCcxMCcpKQorICAgICAgICBEZWNpbWFsKCcxMTAxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcigxMTAsIDExMDEpCisgICAgICAgIERlY2ltYWwoJzEwMTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoMTEwKSwgMTEwMSkKKyAgICAgICAgRGVjaW1hbCgnMTAxMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoMTEwLCBEZWNpbWFsKDExMDEpKQorICAgICAgICBEZWNpbWFsKCcxMDExJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmxvZ2ljYWxfeG9yKGIsIGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBtYXgoc2VsZiwgYSwgYik6CisgICAgICAgICIiIm1heCBjb21wYXJlcyB0d28gdmFsdWVzIG51bWVyaWNhbGx5IGFuZCByZXR1cm5zIHRoZSBtYXhpbXVtLgorCisgICAgICAgIElmIGVpdGhlciBvcGVyYW5kIGlzIGEgTmFOIHRoZW4gdGhlIGdlbmVyYWwgcnVsZXMgYXBwbHkuCisgICAgICAgIE90aGVyd2lzZSwgdGhlIG9wZXJhbmRzIGFyZSBjb21wYXJlZCBhcyB0aG91Z2ggYnkgdGhlIGNvbXBhcmUKKyAgICAgICAgb3BlcmF0aW9uLiAgSWYgdGhleSBhcmUgbnVtZXJpY2FsbHkgZXF1YWwgdGhlbiB0aGUgbGVmdC1oYW5kIG9wZXJhbmQKKyAgICAgICAgaXMgY2hvc2VuIGFzIHRoZSByZXN1bHQuICBPdGhlcndpc2UgdGhlIG1heGltdW0gKGNsb3NlciB0byBwb3NpdGl2ZQorICAgICAgICBpbmZpbml0eSkgb2YgdGhlIHR3byBvcGVyYW5kcyBpcyBjaG9zZW4gYXMgdGhlIHJlc3VsdC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heChEZWNpbWFsKCczJyksIERlY2ltYWwoJzInKSkKKyAgICAgICAgRGVjaW1hbCgnMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KERlY2ltYWwoJy0xMCcpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heChEZWNpbWFsKCcxLjAnKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoRGVjaW1hbCgnNycpLCBEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgRGVjaW1hbCgnNycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KDEsIDIpCisgICAgICAgIERlY2ltYWwoJzInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heChEZWNpbWFsKDEpLCAyKQorICAgICAgICBEZWNpbWFsKCcyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoMSwgRGVjaW1hbCgyKSkKKyAgICAgICAgRGVjaW1hbCgnMicpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5tYXgoYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIG1heF9tYWcoc2VsZiwgYSwgYik6CisgICAgICAgICIiIkNvbXBhcmVzIHRoZSB2YWx1ZXMgbnVtZXJpY2FsbHkgd2l0aCB0aGVpciBzaWduIGlnbm9yZWQuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXhfbWFnKERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnTmFOJykpCisgICAgICAgIERlY2ltYWwoJzcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heF9tYWcoRGVjaW1hbCgnNycpLCBEZWNpbWFsKCctMTAnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXhfbWFnKDEsIC0yKQorICAgICAgICBEZWNpbWFsKCctMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4X21hZyhEZWNpbWFsKDEpLCAtMikKKyAgICAgICAgRGVjaW1hbCgnLTInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heF9tYWcoMSwgRGVjaW1hbCgtMikpCisgICAgICAgIERlY2ltYWwoJy0yJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLm1heF9tYWcoYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIG1pbihzZWxmLCBhLCBiKToKKyAgICAgICAgIiIibWluIGNvbXBhcmVzIHR3byB2YWx1ZXMgbnVtZXJpY2FsbHkgYW5kIHJldHVybnMgdGhlIG1pbmltdW0uCisKKyAgICAgICAgSWYgZWl0aGVyIG9wZXJhbmQgaXMgYSBOYU4gdGhlbiB0aGUgZ2VuZXJhbCBydWxlcyBhcHBseS4KKyAgICAgICAgT3RoZXJ3aXNlLCB0aGUgb3BlcmFuZHMgYXJlIGNvbXBhcmVkIGFzIHRob3VnaCBieSB0aGUgY29tcGFyZQorICAgICAgICBvcGVyYXRpb24uICBJZiB0aGV5IGFyZSBudW1lcmljYWxseSBlcXVhbCB0aGVuIHRoZSBsZWZ0LWhhbmQgb3BlcmFuZAorICAgICAgICBpcyBjaG9zZW4gYXMgdGhlIHJlc3VsdC4gIE90aGVyd2lzZSB0aGUgbWluaW11bSAoY2xvc2VyIHRvIG5lZ2F0aXZlCisgICAgICAgIGluZmluaXR5KSBvZiB0aGUgdHdvIG9wZXJhbmRzIGlzIGNob3NlbiBhcyB0aGUgcmVzdWx0LgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnMicpKQorICAgICAgICBEZWNpbWFsKCcyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW4oRGVjaW1hbCgnLTEwJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW4oRGVjaW1hbCgnMS4wJyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMS4wJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW4oRGVjaW1hbCgnNycpLCBEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgRGVjaW1hbCgnNycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKDEsIDIpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbihEZWNpbWFsKDEpLCAyKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW4oMSwgRGVjaW1hbCgyOSkpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubWluKGIsIGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBtaW5fbWFnKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJDb21wYXJlcyB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluX21hZyhEZWNpbWFsKCczJyksIERlY2ltYWwoJy0yJykpCisgICAgICAgIERlY2ltYWwoJy0yJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW5fbWFnKERlY2ltYWwoJy0zJyksIERlY2ltYWwoJ05hTicpKQorICAgICAgICBEZWNpbWFsKCctMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluX21hZygxLCAtMikKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluX21hZyhEZWNpbWFsKDEpLCAtMikKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluX21hZygxLCBEZWNpbWFsKC0yKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5taW5fbWFnKGIsIGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBtaW51cyhzZWxmLCBhKToKKyAgICAgICAgIiIiTWludXMgY29ycmVzcG9uZHMgdG8gdW5hcnkgcHJlZml4IG1pbnVzIGluIFB5dGhvbi4KKworICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGV2YWx1YXRlZCB1c2luZyB0aGUgc2FtZSBydWxlcyBhcyBzdWJ0cmFjdDsgdGhlCisgICAgICAgIG9wZXJhdGlvbiBtaW51cyhhKSBpcyBjYWxjdWxhdGVkIGFzIHN1YnRyYWN0KCcwJywgYSkgd2hlcmUgdGhlICcwJworICAgICAgICBoYXMgdGhlIHNhbWUgZXhwb25lbnQgYXMgdGhlIG9wZXJhbmQuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW51cyhEZWNpbWFsKCcxLjMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEuMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWludXMoRGVjaW1hbCgnLTEuMycpKQorICAgICAgICBEZWNpbWFsKCcxLjMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbnVzKDEpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLl9fbmVnX18oY29udGV4dD1zZWxmKQorCisgICAgZGVmIG11bHRpcGx5KHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJtdWx0aXBseSBtdWx0aXBsaWVzIHR3byBvcGVyYW5kcy4KKworICAgICAgICBJZiBlaXRoZXIgb3BlcmFuZCBpcyBhIHNwZWNpYWwgdmFsdWUgdGhlbiB0aGUgZ2VuZXJhbCBydWxlcyBhcHBseS4KKyAgICAgICAgT3RoZXJ3aXNlLCB0aGUgb3BlcmFuZHMgYXJlIG11bHRpcGxpZWQgdG9nZXRoZXIKKyAgICAgICAgKCdsb25nIG11bHRpcGxpY2F0aW9uJyksIHJlc3VsdGluZyBpbiBhIG51bWJlciB3aGljaCBtYXkgYmUgYXMgbG9uZyBhcworICAgICAgICB0aGUgc3VtIG9mIHRoZSBsZW5ndGhzIG9mIHRoZSB0d28gb3BlcmFuZHMuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseShEZWNpbWFsKCcxLjIwJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnMy42MCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoRGVjaW1hbCgnNycpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJzIxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseShEZWNpbWFsKCcwLjknKSwgRGVjaW1hbCgnMC44JykpCisgICAgICAgIERlY2ltYWwoJzAuNzInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KERlY2ltYWwoJzAuOScpLCBEZWNpbWFsKCctMCcpKQorICAgICAgICBEZWNpbWFsKCctMC4wJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseShEZWNpbWFsKCc2NTQzMjEnKSwgRGVjaW1hbCgnNjU0MzIxJykpCisgICAgICAgIERlY2ltYWwoJzQuMjgxMzU5NzFFKzExJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseSg3LCA3KQorICAgICAgICBEZWNpbWFsKCc0OScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoRGVjaW1hbCg3KSwgNykKKyAgICAgICAgRGVjaW1hbCgnNDknKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KDcsIERlY2ltYWwoNykpCisgICAgICAgIERlY2ltYWwoJzQ5JykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHIgPSBhLl9fbXVsX18oYiwgY29udGV4dD1zZWxmKQorICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gcgorCisgICAgZGVmIG5leHRfbWludXMoc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIGxhcmdlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgc21hbGxlciB0aGFuIGEuCisKKyAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCisgICAgICAgID4+PiBjLkVtaW4gPSAtOTk5CisgICAgICAgID4+PiBjLkVtYXggPSA5OTkKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5uZXh0X21pbnVzKERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMC45OTk5OTk5OTknKQorICAgICAgICA+Pj4gYy5uZXh0X21pbnVzKERlY2ltYWwoJzFFLTEwMDcnKSkKKyAgICAgICAgRGVjaW1hbCgnMEUtMTAwNycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubmV4dF9taW51cyhEZWNpbWFsKCctMS4wMDAwMDAwMycpKQorICAgICAgICBEZWNpbWFsKCctMS4wMDAwMDAwNCcpCisgICAgICAgID4+PiBjLm5leHRfbWludXMoRGVjaW1hbCgnSW5maW5pdHknKSkKKyAgICAgICAgRGVjaW1hbCgnOS45OTk5OTk5OUUrOTk5JykKKyAgICAgICAgPj4+IGMubmV4dF9taW51cygxKQorICAgICAgICBEZWNpbWFsKCcwLjk5OTk5OTk5OScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5uZXh0X21pbnVzKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBuZXh0X3BsdXMoc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIGxhcmdlciB0aGFuIGEuCisKKyAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCisgICAgICAgID4+PiBjLkVtaW4gPSAtOTk5CisgICAgICAgID4+PiBjLkVtYXggPSA5OTkKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5uZXh0X3BsdXMoRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcxLjAwMDAwMDAxJykKKyAgICAgICAgPj4+IGMubmV4dF9wbHVzKERlY2ltYWwoJy0xRS0xMDA3JykpCisgICAgICAgIERlY2ltYWwoJy0wRS0xMDA3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5uZXh0X3BsdXMoRGVjaW1hbCgnLTEuMDAwMDAwMDMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEuMDAwMDAwMDInKQorICAgICAgICA+Pj4gYy5uZXh0X3BsdXMoRGVjaW1hbCgnLUluZmluaXR5JykpCisgICAgICAgIERlY2ltYWwoJy05Ljk5OTk5OTk5RSs5OTknKQorICAgICAgICA+Pj4gYy5uZXh0X3BsdXMoMSkKKyAgICAgICAgRGVjaW1hbCgnMS4wMDAwMDAwMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5uZXh0X3BsdXMoY29udGV4dD1zZWxmKQorCisgICAgZGVmIG5leHRfdG93YXJkKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBudW1iZXIgY2xvc2VzdCB0byBhLCBpbiBkaXJlY3Rpb24gdG93YXJkcyBiLgorCisgICAgICAgIFRoZSByZXN1bHQgaXMgdGhlIGNsb3Nlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgZnJvbSB0aGUgZmlyc3QKKyAgICAgICAgb3BlcmFuZCAoYnV0IG5vdCB0aGUgZmlyc3Qgb3BlcmFuZCkgdGhhdCBpcyBpbiB0aGUgZGlyZWN0aW9uCisgICAgICAgIHRvd2FyZHMgdGhlIHNlY29uZCBvcGVyYW5kLCB1bmxlc3MgdGhlIG9wZXJhbmRzIGhhdmUgdGhlIHNhbWUKKyAgICAgICAgdmFsdWUuCisKKyAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCisgICAgICAgID4+PiBjLkVtaW4gPSAtOTk5CisgICAgICAgID4+PiBjLkVtYXggPSA5OTkKKyAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcyJykpCisgICAgICAgIERlY2ltYWwoJzEuMDAwMDAwMDEnKQorICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKCctMUUtMTAwNycpLCBEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJy0wRS0xMDA3JykKKyAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgnLTEuMDAwMDAwMDMnKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCctMS4wMDAwMDAwMicpCisgICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCcwLjk5OTk5OTk5OScpCisgICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJzFFLTEwMDcnKSwgRGVjaW1hbCgnLTEwMCcpKQorICAgICAgICBEZWNpbWFsKCcwRS0xMDA3JykKKyAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgnLTEuMDAwMDAwMDMnKSwgRGVjaW1hbCgnLTEwJykpCisgICAgICAgIERlY2ltYWwoJy0xLjAwMDAwMDA0JykKKyAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgnMC4wMCcpLCBEZWNpbWFsKCctMC4wMDAwJykpCisgICAgICAgIERlY2ltYWwoJy0wLjAwJykKKyAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoMCwgMSkKKyAgICAgICAgRGVjaW1hbCgnMUUtMTAwNycpCisgICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoMCksIDEpCisgICAgICAgIERlY2ltYWwoJzFFLTEwMDcnKQorICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZCgwLCBEZWNpbWFsKDEpKQorICAgICAgICBEZWNpbWFsKCcxRS0xMDA3JykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLm5leHRfdG93YXJkKGIsIGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBub3JtYWxpemUoc2VsZiwgYSk6CisgICAgICAgICIiIm5vcm1hbGl6ZSByZWR1Y2VzIGFuIG9wZXJhbmQgdG8gaXRzIHNpbXBsZXN0IGZvcm0uCisKKyAgICAgICAgRXNzZW50aWFsbHkgYSBwbHVzIG9wZXJhdGlvbiB3aXRoIGFsbCB0cmFpbGluZyB6ZXJvcyByZW1vdmVkIGZyb20gdGhlCisgICAgICAgIHJlc3VsdC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZShEZWNpbWFsKCcyLjEnKSkKKyAgICAgICAgRGVjaW1hbCgnMi4xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5ub3JtYWxpemUoRGVjaW1hbCgnLTIuMCcpKQorICAgICAgICBEZWNpbWFsKCctMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubm9ybWFsaXplKERlY2ltYWwoJzEuMjAwJykpCisgICAgICAgIERlY2ltYWwoJzEuMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubm9ybWFsaXplKERlY2ltYWwoJy0xMjAnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEuMkUrMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubm9ybWFsaXplKERlY2ltYWwoJzEyMC4wMCcpKQorICAgICAgICBEZWNpbWFsKCcxLjJFKzInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZShEZWNpbWFsKCcwLjAwJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZSg2KQorICAgICAgICBEZWNpbWFsKCc2JykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLm5vcm1hbGl6ZShjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbnVtYmVyX2NsYXNzKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm5zIGFuIGluZGljYXRpb24gb2YgdGhlIGNsYXNzIG9mIHRoZSBvcGVyYW5kLgorCisgICAgICAgIFRoZSBjbGFzcyBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBzdHJpbmdzOgorICAgICAgICAgIC1zTmFOCisgICAgICAgICAgLU5hTgorICAgICAgICAgIC1JbmZpbml0eQorICAgICAgICAgIC1Ob3JtYWwKKyAgICAgICAgICAtU3Vibm9ybWFsCisgICAgICAgICAgLVplcm8KKyAgICAgICAgICArWmVybworICAgICAgICAgICtTdWJub3JtYWwKKyAgICAgICAgICArTm9ybWFsCisgICAgICAgICAgK0luZmluaXR5CisKKyAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCisgICAgICAgID4+PiBjLkVtaW4gPSAtOTk5CisgICAgICAgID4+PiBjLkVtYXggPSA5OTkKKyAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJ0luZmluaXR5JykpCisgICAgICAgICcrSW5maW5pdHknCisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCcxRS0xMCcpKQorICAgICAgICAnK05vcm1hbCcKKyAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJzIuNTAnKSkKKyAgICAgICAgJytOb3JtYWwnCisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCcwLjFFLTk5OScpKQorICAgICAgICAnK1N1Ym5vcm1hbCcKKyAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJzAnKSkKKyAgICAgICAgJytaZXJvJworICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLTAnKSkKKyAgICAgICAgJy1aZXJvJworICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLTAuMUUtOTk5JykpCisgICAgICAgICctU3Vibm9ybWFsJworICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLTFFLTEwJykpCisgICAgICAgICctTm9ybWFsJworICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLTIuNTAnKSkKKyAgICAgICAgJy1Ob3JtYWwnCisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCctSW5maW5pdHknKSkKKyAgICAgICAgJy1JbmZpbml0eScKKyAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJ05hTicpKQorICAgICAgICAnTmFOJworICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLU5hTicpKQorICAgICAgICAnTmFOJworICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnc05hTicpKQorICAgICAgICAnc05hTicKKyAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKDEyMykKKyAgICAgICAgJytOb3JtYWwnCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5udW1iZXJfY2xhc3MoY29udGV4dD1zZWxmKQorCisgICAgZGVmIHBsdXMoc2VsZiwgYSk6CisgICAgICAgICIiIlBsdXMgY29ycmVzcG9uZHMgdG8gdW5hcnkgcHJlZml4IHBsdXMgaW4gUHl0aG9uLgorCisgICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZXZhbHVhdGVkIHVzaW5nIHRoZSBzYW1lIHJ1bGVzIGFzIGFkZDsgdGhlCisgICAgICAgIG9wZXJhdGlvbiBwbHVzKGEpIGlzIGNhbGN1bGF0ZWQgYXMgYWRkKCcwJywgYSkgd2hlcmUgdGhlICcwJworICAgICAgICBoYXMgdGhlIHNhbWUgZXhwb25lbnQgYXMgdGhlIG9wZXJhbmQuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5wbHVzKERlY2ltYWwoJzEuMycpKQorICAgICAgICBEZWNpbWFsKCcxLjMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnBsdXMoRGVjaW1hbCgnLTEuMycpKQorICAgICAgICBEZWNpbWFsKCctMS4zJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5wbHVzKC0xKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5fX3Bvc19fKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBwb3dlcihzZWxmLCBhLCBiLCBtb2R1bG89Tm9uZSk6CisgICAgICAgICIiIlJhaXNlcyBhIHRvIHRoZSBwb3dlciBvZiBiLCB0byBtb2R1bG8gaWYgZ2l2ZW4uCisKKyAgICAgICAgV2l0aCB0d28gYXJndW1lbnRzLCBjb21wdXRlIGEqKmIuICBJZiBhIGlzIG5lZ2F0aXZlIHRoZW4gYgorICAgICAgICBtdXN0IGJlIGludGVncmFsLiAgVGhlIHJlc3VsdCB3aWxsIGJlIGluZXhhY3QgdW5sZXNzIGIgaXMKKyAgICAgICAgaW50ZWdyYWwgYW5kIHRoZSByZXN1bHQgaXMgZmluaXRlIGFuZCBjYW4gYmUgZXhwcmVzc2VkIGV4YWN0bHkKKyAgICAgICAgaW4gJ3ByZWNpc2lvbicgZGlnaXRzLgorCisgICAgICAgIFdpdGggdGhyZWUgYXJndW1lbnRzLCBjb21wdXRlIChhKipiKSAlIG1vZHVsby4gIEZvciB0aGUKKyAgICAgICAgdGhyZWUgYXJndW1lbnQgZm9ybSwgdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgb24gdGhlCisgICAgICAgIGFyZ3VtZW50cyBob2xkOgorCisgICAgICAgICAtIGFsbCB0aHJlZSBhcmd1bWVudHMgbXVzdCBiZSBpbnRlZ3JhbAorICAgICAgICAgLSBiIG11c3QgYmUgbm9ubmVnYXRpdmUKKyAgICAgICAgIC0gYXQgbGVhc3Qgb25lIG9mIGEgb3IgYiBtdXN0IGJlIG5vbnplcm8KKyAgICAgICAgIC0gbW9kdWxvIG11c3QgYmUgbm9uemVybyBhbmQgaGF2ZSBhdCBtb3N0ICdwcmVjaXNpb24nIGRpZ2l0cworCisgICAgICAgIFRoZSByZXN1bHQgb2YgcG93KGEsIGIsIG1vZHVsbykgaXMgaWRlbnRpY2FsIHRvIHRoZSByZXN1bHQKKyAgICAgICAgdGhhdCB3b3VsZCBiZSBvYnRhaW5lZCBieSBjb21wdXRpbmcgKGEqKmIpICUgbW9kdWxvIHdpdGgKKyAgICAgICAgdW5ib3VuZGVkIHByZWNpc2lvbiwgYnV0IGlzIGNvbXB1dGVkIG1vcmUgZWZmaWNpZW50bHkuICBJdCBpcworICAgICAgICBhbHdheXMgZXhhY3QuCisKKyAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCisgICAgICAgID4+PiBjLkVtaW4gPSAtOTk5CisgICAgICAgID4+PiBjLkVtYXggPSA5OTkKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJzgnKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctMicpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJy04JykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCctMycpKQorICAgICAgICBEZWNpbWFsKCcwLjEyNScpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzEuNycpLCBEZWNpbWFsKCc4JykpCisgICAgICAgIERlY2ltYWwoJzY5Ljc1NzU3NDQnKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCcwLjMwMTAyOTk5NicpKQorICAgICAgICBEZWNpbWFsKCcyLjAwMDAwMDAwJykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnSW5maW5pdHknKSwgRGVjaW1hbCgnLTEnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJ0luZmluaXR5JyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJ0luZmluaXR5JyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctSW5maW5pdHknKSwgRGVjaW1hbCgnLTEnKSkKKyAgICAgICAgRGVjaW1hbCgnLTAnKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctSW5maW5pdHknKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLUluZmluaXR5JyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLUluZmluaXR5JyksIERlY2ltYWwoJzInKSkKKyAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcwJyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnTmFOJykKKworICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCczJyksIERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnMTYnKSkKKyAgICAgICAgRGVjaW1hbCgnMTEnKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctMycpLCBEZWNpbWFsKCc3JyksIERlY2ltYWwoJzE2JykpCisgICAgICAgIERlY2ltYWwoJy0xMScpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy0zJyksIERlY2ltYWwoJzgnKSwgRGVjaW1hbCgnMTYnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnNycpLCBEZWNpbWFsKCctMTYnKSkKKyAgICAgICAgRGVjaW1hbCgnMTEnKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcyM0UxMjM0NScpLCBEZWNpbWFsKCc2N0UxODknKSwgRGVjaW1hbCgnMTIzNDU2Nzg5JykpCisgICAgICAgIERlY2ltYWwoJzExNzI5ODMwJykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLTAnKSwgRGVjaW1hbCgnMTcnKSwgRGVjaW1hbCgnMTcyOScpKQorICAgICAgICBEZWNpbWFsKCctMCcpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy0yMycpLCBEZWNpbWFsKCcwJyksIERlY2ltYWwoJzY1NTM3JykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnBvd2VyKDcsIDcpCisgICAgICAgIERlY2ltYWwoJzgyMzU0MycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucG93ZXIoRGVjaW1hbCg3KSwgNykKKyAgICAgICAgRGVjaW1hbCgnODIzNTQzJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5wb3dlcig3LCBEZWNpbWFsKDcpLCAyKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHIgPSBhLl9fcG93X18oYiwgbW9kdWxvLCBjb250ZXh0PXNlbGYpCisgICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiByCisKKyAgICBkZWYgcXVhbnRpemUoc2VsZiwgYSwgYik6CisgICAgICAgICIiIlJldHVybnMgYSB2YWx1ZSBlcXVhbCB0byAnYScgKHJvdW5kZWQpLCBoYXZpbmcgdGhlIGV4cG9uZW50IG9mICdiJy4KKworICAgICAgICBUaGUgY29lZmZpY2llbnQgb2YgdGhlIHJlc3VsdCBpcyBkZXJpdmVkIGZyb20gdGhhdCBvZiB0aGUgbGVmdC1oYW5kCisgICAgICAgIG9wZXJhbmQuICBJdCBtYXkgYmUgcm91bmRlZCB1c2luZyB0aGUgY3VycmVudCByb3VuZGluZyBzZXR0aW5nIChpZiB0aGUKKyAgICAgICAgZXhwb25lbnQgaXMgYmVpbmcgaW5jcmVhc2VkKSwgbXVsdGlwbGllZCBieSBhIHBvc2l0aXZlIHBvd2VyIG9mIHRlbiAoaWYKKyAgICAgICAgdGhlIGV4cG9uZW50IGlzIGJlaW5nIGRlY3JlYXNlZCksIG9yIGlzIHVuY2hhbmdlZCAoaWYgdGhlIGV4cG9uZW50IGlzCisgICAgICAgIGFscmVhZHkgZXF1YWwgdG8gdGhhdCBvZiB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kKS4KKworICAgICAgICBVbmxpa2Ugb3RoZXIgb3BlcmF0aW9ucywgaWYgdGhlIGxlbmd0aCBvZiB0aGUgY29lZmZpY2llbnQgYWZ0ZXIgdGhlCisgICAgICAgIHF1YW50aXplIG9wZXJhdGlvbiB3b3VsZCBiZSBncmVhdGVyIHRoYW4gcHJlY2lzaW9uIHRoZW4gYW4gSW52YWxpZAorICAgICAgICBvcGVyYXRpb24gY29uZGl0aW9uIGlzIHJhaXNlZC4gIFRoaXMgZ3VhcmFudGVlcyB0aGF0LCB1bmxlc3MgdGhlcmUgaXMKKyAgICAgICAgYW4gZXJyb3IgY29uZGl0aW9uLCB0aGUgZXhwb25lbnQgb2YgdGhlIHJlc3VsdCBvZiBhIHF1YW50aXplIGlzIGFsd2F5cworICAgICAgICBlcXVhbCB0byB0aGF0IG9mIHRoZSByaWdodC1oYW5kIG9wZXJhbmQuCisKKyAgICAgICAgQWxzbyB1bmxpa2Ugb3RoZXIgb3BlcmF0aW9ucywgcXVhbnRpemUgd2lsbCBuZXZlciByYWlzZSBVbmRlcmZsb3csIGV2ZW4KKyAgICAgICAgaWYgdGhlIHJlc3VsdCBpcyBzdWJub3JtYWwgYW5kIGluZXhhY3QuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzAuMDAxJykpCisgICAgICAgIERlY2ltYWwoJzIuMTcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzAuMDEnKSkKKyAgICAgICAgRGVjaW1hbCgnMi4xNycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcwLjEnKSkKKyAgICAgICAgRGVjaW1hbCgnMi4yJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzFlKzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcxZSsxJykpCisgICAgICAgIERlY2ltYWwoJzBFKzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJy1JbmYnKSwgRGVjaW1hbCgnSW5maW5pdHknKSkKKyAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyJyksIERlY2ltYWwoJ0luZmluaXR5JykpCisgICAgICAgIERlY2ltYWwoJ05hTicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnLTAuMScpLCBEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJy0wJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCctMCcpLCBEZWNpbWFsKCcxZSs1JykpCisgICAgICAgIERlY2ltYWwoJy0wRSs1JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcrMzUyMzY0NTAuNicpLCBEZWNpbWFsKCcxZS0yJykpCisgICAgICAgIERlY2ltYWwoJ05hTicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnLTM1MjM2NDUwLjYnKSwgRGVjaW1hbCgnMWUtMicpKQorICAgICAgICBEZWNpbWFsKCdOYU4nKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIxNycpLCBEZWNpbWFsKCcxZS0xJykpCisgICAgICAgIERlY2ltYWwoJzIxNy4wJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyMTcnKSwgRGVjaW1hbCgnMWUtMCcpKQorICAgICAgICBEZWNpbWFsKCcyMTcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIxNycpLCBEZWNpbWFsKCcxZSsxJykpCisgICAgICAgIERlY2ltYWwoJzIuMkUrMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMjE3JyksIERlY2ltYWwoJzFlKzInKSkKKyAgICAgICAgRGVjaW1hbCgnMkUrMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoMSwgMikKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgxKSwgMikKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoMSwgRGVjaW1hbCgyKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5xdWFudGl6ZShiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgcmFkaXgoc2VsZik6CisgICAgICAgICIiIkp1c3QgcmV0dXJucyAxMCwgYXMgdGhpcyBpcyBEZWNpbWFsLCA6KQorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmFkaXgoKQorICAgICAgICBEZWNpbWFsKCcxMCcpCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gRGVjaW1hbCgxMCkKKworICAgIGRlZiByZW1haW5kZXIoc2VsZiwgYSwgYik6CisgICAgICAgICIiIlJldHVybnMgdGhlIHJlbWFpbmRlciBmcm9tIGludGVnZXIgZGl2aXNpb24uCisKKyAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgcmVzaWR1ZSBvZiB0aGUgZGl2aWRlbmQgYWZ0ZXIgdGhlIG9wZXJhdGlvbiBvZgorICAgICAgICBjYWxjdWxhdGluZyBpbnRlZ2VyIGRpdmlzaW9uIGFzIGRlc2NyaWJlZCBmb3IgZGl2aWRlLWludGVnZXIsIHJvdW5kZWQKKyAgICAgICAgdG8gcHJlY2lzaW9uIGRpZ2l0cyBpZiBuZWNlc3NhcnkuICBUaGUgc2lnbiBvZiB0aGUgcmVzdWx0LCBpZgorICAgICAgICBub24temVybywgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgb3JpZ2luYWwgZGl2aWRlbmQuCisKKyAgICAgICAgVGhpcyBvcGVyYXRpb24gd2lsbCBmYWlsIHVuZGVyIHRoZSBzYW1lIGNvbmRpdGlvbnMgYXMgaW50ZWdlciBkaXZpc2lvbgorICAgICAgICAodGhhdCBpcywgaWYgaW50ZWdlciBkaXZpc2lvbiBvbiB0aGUgc2FtZSB0d28gb3BlcmFuZHMgd291bGQgZmFpbCwgdGhlCisgICAgICAgIHJlbWFpbmRlciBjYW5ub3QgYmUgY2FsY3VsYXRlZCkuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnMi4xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnLTEwJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcihEZWNpbWFsKCcxMC4yJyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMC4yJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMC4zJykpCisgICAgICAgIERlY2ltYWwoJzAuMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoJzMuNicpLCBEZWNpbWFsKCcxLjMnKSkKKyAgICAgICAgRGVjaW1hbCgnMS4wJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoMjIsIDYpCisgICAgICAgIERlY2ltYWwoJzQnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcihEZWNpbWFsKDIyKSwgNikKKyAgICAgICAgRGVjaW1hbCgnNCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKDIyLCBEZWNpbWFsKDYpKQorICAgICAgICBEZWNpbWFsKCc0JykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHIgPSBhLl9fbW9kX18oYiwgY29udGV4dD1zZWxmKQorICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gcgorCisgICAgZGVmIHJlbWFpbmRlcl9uZWFyKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJSZXR1cm5zIHRvIGJlICJhIC0gYiAqIG4iLCB3aGVyZSBuIGlzIHRoZSBpbnRlZ2VyIG5lYXJlc3QgdGhlIGV4YWN0CisgICAgICAgIHZhbHVlIG9mICJ4IC8gYiIgKGlmIHR3byBpbnRlZ2VycyBhcmUgZXF1YWxseSBuZWFyIHRoZW4gdGhlIGV2ZW4gb25lCisgICAgICAgIGlzIGNob3NlbikuICBJZiB0aGUgcmVzdWx0IGlzIGVxdWFsIHRvIDAgdGhlbiBpdHMgc2lnbiB3aWxsIGJlIHRoZQorICAgICAgICBzaWduIG9mIGEuCisKKyAgICAgICAgVGhpcyBvcGVyYXRpb24gd2lsbCBmYWlsIHVuZGVyIHRoZSBzYW1lIGNvbmRpdGlvbnMgYXMgaW50ZWdlciBkaXZpc2lvbgorICAgICAgICAodGhhdCBpcywgaWYgaW50ZWdlciBkaXZpc2lvbiBvbiB0aGUgc2FtZSB0d28gb3BlcmFuZHMgd291bGQgZmFpbCwgdGhlCisgICAgICAgIHJlbWFpbmRlciBjYW5ub3QgYmUgY2FsY3VsYXRlZCkuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCctMC45JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCc2JykpCisgICAgICAgIERlY2ltYWwoJy0yJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoJy0xMCcpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCcxMC4yJyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMC4yJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCcwLjMnKSkKKyAgICAgICAgRGVjaW1hbCgnMC4xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCczLjYnKSwgRGVjaW1hbCgnMS4zJykpCisgICAgICAgIERlY2ltYWwoJy0wLjMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKDMsIDExKQorICAgICAgICBEZWNpbWFsKCczJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKDMpLCAxMSkKKyAgICAgICAgRGVjaW1hbCgnMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoMywgRGVjaW1hbCgxMSkpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEucmVtYWluZGVyX25lYXIoYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIHJvdGF0ZShzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiUmV0dXJucyBhIHJvdGF0ZWQgY29weSBvZiBhLCBiIHRpbWVzLgorCisgICAgICAgIFRoZSBjb2VmZmljaWVudCBvZiB0aGUgcmVzdWx0IGlzIGEgcm90YXRlZCBjb3B5IG9mIHRoZSBkaWdpdHMgaW4KKyAgICAgICAgdGhlIGNvZWZmaWNpZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kLiAgVGhlIG51bWJlciBvZiBwbGFjZXMgb2YKKyAgICAgICAgcm90YXRpb24gaXMgdGFrZW4gZnJvbSB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kLAorICAgICAgICB3aXRoIHRoZSByb3RhdGlvbiBiZWluZyB0byB0aGUgbGVmdCBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgaXMKKyAgICAgICAgcG9zaXRpdmUgb3IgdG8gdGhlIHJpZ2h0IG90aGVyd2lzZS4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZShEZWNpbWFsKCczNCcpLCBEZWNpbWFsKCc4JykpCisgICAgICAgIERlY2ltYWwoJzQwMDAwMDAwMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKERlY2ltYWwoJzEyJyksIERlY2ltYWwoJzknKSkKKyAgICAgICAgRGVjaW1hbCgnMTInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZShEZWNpbWFsKCcxMjM0NTY3ODknKSwgRGVjaW1hbCgnLTInKSkKKyAgICAgICAgRGVjaW1hbCgnODkxMjM0NTY3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoRGVjaW1hbCgnMTIzNDU2Nzg5JyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTIzNDU2Nzg5JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoRGVjaW1hbCgnMTIzNDU2Nzg5JyksIERlY2ltYWwoJysyJykpCisgICAgICAgIERlY2ltYWwoJzM0NTY3ODkxMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKDEzMzMzMzMsIDEpCisgICAgICAgIERlY2ltYWwoJzEzMzMzMzMwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoRGVjaW1hbCgxMzMzMzMzKSwgMSkKKyAgICAgICAgRGVjaW1hbCgnMTMzMzMzMzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZSgxMzMzMzMzLCBEZWNpbWFsKDEpKQorICAgICAgICBEZWNpbWFsKCcxMzMzMzMzMCcpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5yb3RhdGUoYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIHNhbWVfcXVhbnR1bShzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiUmV0dXJucyBUcnVlIGlmIHRoZSB0d28gb3BlcmFuZHMgaGF2ZSB0aGUgc2FtZSBleHBvbmVudC4KKworICAgICAgICBUaGUgcmVzdWx0IGlzIG5ldmVyIGFmZmVjdGVkIGJ5IGVpdGhlciB0aGUgc2lnbiBvciB0aGUgY29lZmZpY2llbnQgb2YKKyAgICAgICAgZWl0aGVyIG9wZXJhbmQuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcwLjAwMScpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNhbWVfcXVhbnR1bShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzAuMDEnKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNhbWVfcXVhbnR1bShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oRGVjaW1hbCgnSW5mJyksIERlY2ltYWwoJy1JbmYnKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNhbWVfcXVhbnR1bSgxMDAwMCwgLTEpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oRGVjaW1hbCgxMDAwMCksIC0xKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2FtZV9xdWFudHVtKDEwMDAwLCBEZWNpbWFsKC0xKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuc2FtZV9xdWFudHVtKGIpCisKKyAgICBkZWYgc2NhbGViIChzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgZmlyc3Qgb3BlcmFuZCBhZnRlciBhZGRpbmcgdGhlIHNlY29uZCB2YWx1ZSBpdHMgZXhwLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2NhbGViKERlY2ltYWwoJzcuNTAnKSwgRGVjaW1hbCgnLTInKSkKKyAgICAgICAgRGVjaW1hbCgnMC4wNzUwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zY2FsZWIoRGVjaW1hbCgnNy41MCcpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzcuNTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNjYWxlYihEZWNpbWFsKCc3LjUwJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnNy41MEUrMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2NhbGViKDEsIDQpCisgICAgICAgIERlY2ltYWwoJzFFKzQnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNjYWxlYihEZWNpbWFsKDEpLCA0KQorICAgICAgICBEZWNpbWFsKCcxRSs0JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zY2FsZWIoMSwgRGVjaW1hbCg0KSkKKyAgICAgICAgRGVjaW1hbCgnMUUrNCcpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5zY2FsZWIoYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIHNoaWZ0KHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJSZXR1cm5zIGEgc2hpZnRlZCBjb3B5IG9mIGEsIGIgdGltZXMuCisKKyAgICAgICAgVGhlIGNvZWZmaWNpZW50IG9mIHRoZSByZXN1bHQgaXMgYSBzaGlmdGVkIGNvcHkgb2YgdGhlIGRpZ2l0cworICAgICAgICBpbiB0aGUgY29lZmZpY2llbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQuICBUaGUgbnVtYmVyIG9mIHBsYWNlcworICAgICAgICB0byBzaGlmdCBpcyB0YWtlbiBmcm9tIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQsCisgICAgICAgIHdpdGggdGhlIHNoaWZ0IGJlaW5nIHRvIHRoZSBsZWZ0IGlmIHRoZSBzZWNvbmQgb3BlcmFuZCBpcworICAgICAgICBwb3NpdGl2ZSBvciB0byB0aGUgcmlnaHQgb3RoZXJ3aXNlLiAgRGlnaXRzIHNoaWZ0ZWQgaW50byB0aGUKKyAgICAgICAgY29lZmZpY2llbnQgYXJlIHplcm9zLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoRGVjaW1hbCgnMzQnKSwgRGVjaW1hbCgnOCcpKQorICAgICAgICBEZWNpbWFsKCc0MDAwMDAwMDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KERlY2ltYWwoJzEyJyksIERlY2ltYWwoJzknKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoRGVjaW1hbCgnMTIzNDU2Nzg5JyksIERlY2ltYWwoJy0yJykpCisgICAgICAgIERlY2ltYWwoJzEyMzQ1NjcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KERlY2ltYWwoJzEyMzQ1Njc4OScpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzEyMzQ1Njc4OScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoRGVjaW1hbCgnMTIzNDU2Nzg5JyksIERlY2ltYWwoJysyJykpCisgICAgICAgIERlY2ltYWwoJzM0NTY3ODkwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoODg4ODg4ODgsIDIpCisgICAgICAgIERlY2ltYWwoJzg4ODg4ODgwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoRGVjaW1hbCg4ODg4ODg4OCksIDIpCisgICAgICAgIERlY2ltYWwoJzg4ODg4ODgwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoODg4ODg4ODgsIERlY2ltYWwoMikpCisgICAgICAgIERlY2ltYWwoJzg4ODg4ODgwMCcpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5zaGlmdChiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgc3FydChzZWxmLCBhKToKKyAgICAgICAgIiIiU3F1YXJlIHJvb3Qgb2YgYSBub24tbmVnYXRpdmUgbnVtYmVyIHRvIGNvbnRleHQgcHJlY2lzaW9uLgorCisgICAgICAgIElmIHRoZSByZXN1bHQgbXVzdCBiZSBpbmV4YWN0LCBpdCBpcyByb3VuZGVkIHVzaW5nIHRoZSByb3VuZC1oYWxmLWV2ZW4KKyAgICAgICAgYWxnb3JpdGhtLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnLTAnKSkKKyAgICAgICAgRGVjaW1hbCgnLTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnMC4zOScpKQorICAgICAgICBEZWNpbWFsKCcwLjYyNDQ5OTgwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCcxMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzEuMCcpKQorICAgICAgICBEZWNpbWFsKCcxLjAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnMS4wMCcpKQorICAgICAgICBEZWNpbWFsKCcxLjAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnNycpKQorICAgICAgICBEZWNpbWFsKCcyLjY0NTc1MTMxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzEwJykpCisgICAgICAgIERlY2ltYWwoJzMuMTYyMjc3NjYnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoMikKKyAgICAgICAgRGVjaW1hbCgnMS40MTQyMTM1NicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucHJlYworICAgICAgICA5CisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5zcXJ0KGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBzdWJ0cmFjdChzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byBvcGVyYW5kcy4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnN1YnRyYWN0KERlY2ltYWwoJzEuMycpLCBEZWNpbWFsKCcxLjA3JykpCisgICAgICAgIERlY2ltYWwoJzAuMjMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnN1YnRyYWN0KERlY2ltYWwoJzEuMycpLCBEZWNpbWFsKCcxLjMwJykpCisgICAgICAgIERlY2ltYWwoJzAuMDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnN1YnRyYWN0KERlY2ltYWwoJzEuMycpLCBEZWNpbWFsKCcyLjA3JykpCisgICAgICAgIERlY2ltYWwoJy0wLjc3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zdWJ0cmFjdCg4LCA1KQorICAgICAgICBEZWNpbWFsKCczJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zdWJ0cmFjdChEZWNpbWFsKDgpLCA1KQorICAgICAgICBEZWNpbWFsKCczJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zdWJ0cmFjdCg4LCBEZWNpbWFsKDUpKQorICAgICAgICBEZWNpbWFsKCczJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHIgPSBhLl9fc3ViX18oYiwgY29udGV4dD1zZWxmKQorICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gcgorCisgICAgZGVmIHRvX2VuZ19zdHJpbmcoc2VsZiwgYSk6CisgICAgICAgICIiIkNvbnZlcnRzIGEgbnVtYmVyIHRvIGEgc3RyaW5nLCB1c2luZyBzY2llbnRpZmljIG5vdGF0aW9uLgorCisgICAgICAgIFRoZSBvcGVyYXRpb24gaXMgbm90IGFmZmVjdGVkIGJ5IHRoZSBjb250ZXh0LgorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEudG9fZW5nX3N0cmluZyhjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgdG9fc2NpX3N0cmluZyhzZWxmLCBhKToKKyAgICAgICAgIiIiQ29udmVydHMgYSBudW1iZXIgdG8gYSBzdHJpbmcsIHVzaW5nIHNjaWVudGlmaWMgbm90YXRpb24uCisKKyAgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBub3QgYWZmZWN0ZWQgYnkgdGhlIGNvbnRleHQuCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5fX3N0cl9fKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiB0b19pbnRlZ3JhbF9leGFjdChzZWxmLCBhKToKKyAgICAgICAgIiIiUm91bmRzIHRvIGFuIGludGVnZXIuCisKKyAgICAgICAgV2hlbiB0aGUgb3BlcmFuZCBoYXMgYSBuZWdhdGl2ZSBleHBvbmVudCwgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZQorICAgICAgICBhcyB1c2luZyB0aGUgcXVhbnRpemUoKSBvcGVyYXRpb24gdXNpbmcgdGhlIGdpdmVuIG9wZXJhbmQgYXMgdGhlCisgICAgICAgIGxlZnQtaGFuZC1vcGVyYW5kLCAxRSswIGFzIHRoZSByaWdodC1oYW5kLW9wZXJhbmQsIGFuZCB0aGUgcHJlY2lzaW9uCisgICAgICAgIG9mIHRoZSBvcGVyYW5kIGFzIHRoZSBwcmVjaXNpb24gc2V0dGluZzsgSW5leGFjdCBhbmQgUm91bmRlZCBmbGFncworICAgICAgICBhcmUgYWxsb3dlZCBpbiB0aGlzIG9wZXJhdGlvbi4gIFRoZSByb3VuZGluZyBtb2RlIGlzIHRha2VuIGZyb20gdGhlCisgICAgICAgIGNvbnRleHQuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCcyLjEnKSkKKyAgICAgICAgRGVjaW1hbCgnMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnMTAwJykpCisgICAgICAgIERlY2ltYWwoJzEwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnMTAwLjAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCcxMDEuNScpKQorICAgICAgICBEZWNpbWFsKCcxMDInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJy0xMDEuNScpKQorICAgICAgICBEZWNpbWFsKCctMTAyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCcxMEUrNScpKQorICAgICAgICBEZWNpbWFsKCcxLjBFKzYnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzcuODlFKzc3JykpCisgICAgICAgIERlY2ltYWwoJzcuODlFKzc3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCctSW5mJykpCisgICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS50b19pbnRlZ3JhbF9leGFjdChjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgdG9faW50ZWdyYWxfdmFsdWUoc2VsZiwgYSk6CisgICAgICAgICIiIlJvdW5kcyB0byBhbiBpbnRlZ2VyLgorCisgICAgICAgIFdoZW4gdGhlIG9wZXJhbmQgaGFzIGEgbmVnYXRpdmUgZXhwb25lbnQsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUKKyAgICAgICAgYXMgdXNpbmcgdGhlIHF1YW50aXplKCkgb3BlcmF0aW9uIHVzaW5nIHRoZSBnaXZlbiBvcGVyYW5kIGFzIHRoZQorICAgICAgICBsZWZ0LWhhbmQtb3BlcmFuZCwgMUUrMCBhcyB0aGUgcmlnaHQtaGFuZC1vcGVyYW5kLCBhbmQgdGhlIHByZWNpc2lvbgorICAgICAgICBvZiB0aGUgb3BlcmFuZCBhcyB0aGUgcHJlY2lzaW9uIHNldHRpbmcsIGV4Y2VwdCB0aGF0IG5vIGZsYWdzIHdpbGwKKyAgICAgICAgYmUgc2V0LiAgVGhlIHJvdW5kaW5nIG1vZGUgaXMgdGFrZW4gZnJvbSB0aGUgY29udGV4dC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJzIuMScpKQorICAgICAgICBEZWNpbWFsKCcyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCcxMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCcxMDAuMCcpKQorICAgICAgICBEZWNpbWFsKCcxMDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJzEwMS41JykpCisgICAgICAgIERlY2ltYWwoJzEwMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnLTEwMS41JykpCisgICAgICAgIERlY2ltYWwoJy0xMDInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJzEwRSs1JykpCisgICAgICAgIERlY2ltYWwoJzEuMEUrNicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnNy44OUUrNzcnKSkKKyAgICAgICAgRGVjaW1hbCgnNy44OUUrNzcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJy1JbmYnKSkKKyAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLnRvX2ludGVncmFsX3ZhbHVlKGNvbnRleHQ9c2VsZikKKworICAgICMgdGhlIG1ldGhvZCBuYW1lIGNoYW5nZWQsIGJ1dCB3ZSBwcm92aWRlIGFsc28gdGhlIG9sZCBvbmUsIGZvciBjb21wYXRpYmlsaXR5CisgICAgdG9faW50ZWdyYWwgPSB0b19pbnRlZ3JhbF92YWx1ZQorCitjbGFzcyBfV29ya1JlcChvYmplY3QpOgorICAgIF9fc2xvdHNfXyA9ICgnc2lnbicsJ2ludCcsJ2V4cCcpCisgICAgIyBzaWduOiAwIG9yIDEKKyAgICAjIGludDogIGludAorICAgICMgZXhwOiAgTm9uZSwgaW50LCBvciBzdHJpbmcKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZT1Ob25lKToKKyAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2lnbiA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuaW50ID0gMAorICAgICAgICAgICAgc2VsZi5leHAgPSBOb25lCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgRGVjaW1hbCk6CisgICAgICAgICAgICBzZWxmLnNpZ24gPSB2YWx1ZS5fc2lnbgorICAgICAgICAgICAgc2VsZi5pbnQgPSBpbnQodmFsdWUuX2ludCkKKyAgICAgICAgICAgIHNlbGYuZXhwID0gdmFsdWUuX2V4cAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBhc3NlcnQgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpCisgICAgICAgICAgICBzZWxmLnNpZ24gPSB2YWx1ZVswXQorICAgICAgICAgICAgc2VsZi5pbnQgPSB2YWx1ZVsxXQorICAgICAgICAgICAgc2VsZi5leHAgPSB2YWx1ZVsyXQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIiglciwgJXIsICVyKSIgJSAoc2VsZi5zaWduLCBzZWxmLmludCwgc2VsZi5leHApCisKKyAgICBfX3N0cl9fID0gX19yZXByX18KKworCisKK2RlZiBfbm9ybWFsaXplKG9wMSwgb3AyLCBwcmVjID0gMCk6CisgICAgIiIiTm9ybWFsaXplcyBvcDEsIG9wMiB0byBoYXZlIHRoZSBzYW1lIGV4cCBhbmQgbGVuZ3RoIG9mIGNvZWZmaWNpZW50LgorCisgICAgRG9uZSBkdXJpbmcgYWRkaXRpb24uCisgICAgIiIiCisgICAgaWYgb3AxLmV4cCA8IG9wMi5leHA6CisgICAgICAgIHRtcCA9IG9wMgorICAgICAgICBvdGhlciA9IG9wMQorICAgIGVsc2U6CisgICAgICAgIHRtcCA9IG9wMQorICAgICAgICBvdGhlciA9IG9wMgorCisgICAgIyBMZXQgZXhwID0gbWluKHRtcC5leHAgLSAxLCB0bXAuYWRqdXN0ZWQoKSAtIHByZWNpc2lvbiAtIDEpLgorICAgICMgVGhlbiBhZGRpbmcgMTAqKmV4cCB0byB0bXAgaGFzIHRoZSBzYW1lIGVmZmVjdCAoYWZ0ZXIgcm91bmRpbmcpCisgICAgIyBhcyBhZGRpbmcgYW55IHBvc2l0aXZlIHF1YW50aXR5IHNtYWxsZXIgdGhhbiAxMCoqZXhwOyBzaW1pbGFybHkKKyAgICAjIGZvciBzdWJ0cmFjdGlvbi4gIFNvIGlmIG90aGVyIGlzIHNtYWxsZXIgdGhhbiAxMCoqZXhwIHdlIHJlcGxhY2UKKyAgICAjIGl0IHdpdGggMTAqKmV4cC4gIFRoaXMgYXZvaWRzIHRtcC5leHAgLSBvdGhlci5leHAgZ2V0dGluZyB0b28gbGFyZ2UuCisgICAgdG1wX2xlbiA9IGxlbihzdHIodG1wLmludCkpCisgICAgb3RoZXJfbGVuID0gbGVuKHN0cihvdGhlci5pbnQpKQorICAgIGV4cCA9IHRtcC5leHAgKyBtaW4oLTEsIHRtcF9sZW4gLSBwcmVjIC0gMikKKyAgICBpZiBvdGhlcl9sZW4gKyBvdGhlci5leHAgLSAxIDwgZXhwOgorICAgICAgICBvdGhlci5pbnQgPSAxCisgICAgICAgIG90aGVyLmV4cCA9IGV4cAorCisgICAgdG1wLmludCAqPSAxMCAqKiAodG1wLmV4cCAtIG90aGVyLmV4cCkKKyAgICB0bXAuZXhwID0gb3RoZXIuZXhwCisgICAgcmV0dXJuIG9wMSwgb3AyCisKKyMjIyMjIEludGVnZXIgYXJpdGhtZXRpYyBmdW5jdGlvbnMgdXNlZCBieSBsbiwgbG9nMTAsIGV4cCBhbmQgX19wb3dfXyAjIyMjIworCitfbmJpdHMgPSBpbnQuYml0X2xlbmd0aAorCitkZWYgX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KG4sIGUpOgorICAgICIiIiBHaXZlbiBpbnRlZ2VycyBuIGFuZCBlLCByZXR1cm4gbiAqIDEwKiplIGlmIGl0J3MgYW4gaW50ZWdlciwgZWxzZSBOb25lLgorCisgICAgVGhlIGNvbXB1dGF0aW9uIGlzIGRlc2lnbmVkIHRvIGF2b2lkIGNvbXB1dGluZyBsYXJnZSBwb3dlcnMgb2YgMTAKKyAgICB1bm5lY2Vzc2FyaWx5LgorCisgICAgPj4+IF9kZWNpbWFsX2xzaGlmdF9leGFjdCgzLCA0KQorICAgIDMwMDAwCisgICAgPj4+IF9kZWNpbWFsX2xzaGlmdF9leGFjdCgzMDAsIC05OTk5OTk5OTkpICAjIHJldHVybnMgTm9uZQorCisgICAgIiIiCisgICAgaWYgbiA9PSAwOgorICAgICAgICByZXR1cm4gMAorICAgIGVsaWYgZSA+PSAwOgorICAgICAgICByZXR1cm4gbiAqIDEwKiplCisgICAgZWxzZToKKyAgICAgICAgIyB2YWxfbiA9IGxhcmdlc3QgcG93ZXIgb2YgMTAgZGl2aWRpbmcgbi4KKyAgICAgICAgc3RyX24gPSBzdHIoYWJzKG4pKQorICAgICAgICB2YWxfbiA9IGxlbihzdHJfbikgLSBsZW4oc3RyX24ucnN0cmlwKCcwJykpCisgICAgICAgIHJldHVybiBOb25lIGlmIHZhbF9uIDwgLWUgZWxzZSBuIC8vIDEwKiotZQorCitkZWYgX3NxcnRfbmVhcmVzdChuLCBhKToKKyAgICAiIiJDbG9zZXN0IGludGVnZXIgdG8gdGhlIHNxdWFyZSByb290IG9mIHRoZSBwb3NpdGl2ZSBpbnRlZ2VyIG4uICBhIGlzCisgICAgYW4gaW5pdGlhbCBhcHByb3hpbWF0aW9uIHRvIHRoZSBzcXVhcmUgcm9vdC4gIEFueSBwb3NpdGl2ZSBpbnRlZ2VyCisgICAgd2lsbCBkbyBmb3IgYSwgYnV0IHRoZSBjbG9zZXIgYSBpcyB0byB0aGUgc3F1YXJlIHJvb3Qgb2YgbiB0aGUKKyAgICBmYXN0ZXIgY29udmVyZ2VuY2Ugd2lsbCBiZS4KKworICAgICIiIgorICAgIGlmIG4gPD0gMCBvciBhIDw9IDA6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkJvdGggYXJndW1lbnRzIHRvIF9zcXJ0X25lYXJlc3Qgc2hvdWxkIGJlIHBvc2l0aXZlLiIpCisKKyAgICBiPTAKKyAgICB3aGlsZSBhICE9IGI6CisgICAgICAgIGIsIGEgPSBhLCBhLS1uLy9hPj4xCisgICAgcmV0dXJuIGEKKworZGVmIF9yc2hpZnRfbmVhcmVzdCh4LCBzaGlmdCk6CisgICAgIiIiR2l2ZW4gYW4gaW50ZWdlciB4IGFuZCBhIG5vbm5lZ2F0aXZlIGludGVnZXIgc2hpZnQsIHJldHVybiBjbG9zZXN0CisgICAgaW50ZWdlciB0byB4IC8gMioqc2hpZnQ7IHVzZSByb3VuZC10by1ldmVuIGluIGNhc2Ugb2YgYSB0aWUuCisKKyAgICAiIiIKKyAgICBiLCBxID0gMSA8PCBzaGlmdCwgeCA+PiBzaGlmdAorICAgIHJldHVybiBxICsgKDIqKHggJiAoYi0xKSkgKyAocSYxKSA+IGIpCisKK2RlZiBfZGl2X25lYXJlc3QoYSwgYik6CisgICAgIiIiQ2xvc2VzdCBpbnRlZ2VyIHRvIGEvYiwgYSBhbmQgYiBwb3NpdGl2ZSBpbnRlZ2Vyczsgcm91bmRzIHRvIGV2ZW4KKyAgICBpbiB0aGUgY2FzZSBvZiBhIHRpZS4KKworICAgICIiIgorICAgIHEsIHIgPSBkaXZtb2QoYSwgYikKKyAgICByZXR1cm4gcSArICgyKnIgKyAocSYxKSA+IGIpCisKK2RlZiBfaWxvZyh4LCBNLCBMID0gOCk6CisgICAgIiIiSW50ZWdlciBhcHByb3hpbWF0aW9uIHRvIE0qbG9nKHgvTSksIHdpdGggYWJzb2x1dGUgZXJyb3IgYm91bmRhYmxlCisgICAgaW4gdGVybXMgb25seSBvZiB4L00uCisKKyAgICBHaXZlbiBwb3NpdGl2ZSBpbnRlZ2VycyB4IGFuZCBNLCByZXR1cm4gYW4gaW50ZWdlciBhcHByb3hpbWF0aW9uIHRvCisgICAgTSAqIGxvZyh4L00pLiAgRm9yIEwgPSA4IGFuZCAwLjEgPD0geC9NIDw9IDEwIHRoZSBkaWZmZXJlbmNlCisgICAgYmV0d2VlbiB0aGUgYXBwcm94aW1hdGlvbiBhbmQgdGhlIGV4YWN0IHJlc3VsdCBpcyBhdCBtb3N0IDIyLiAgRm9yCisgICAgTCA9IDggYW5kIDEuMCA8PSB4L00gPD0gMTAuMCB0aGUgZGlmZmVyZW5jZSBpcyBhdCBtb3N0IDE1LiAgSW4KKyAgICBib3RoIGNhc2VzIHRoZXNlIGFyZSB1cHBlciBib3VuZHMgb24gdGhlIGVycm9yOyBpdCB3aWxsIHVzdWFsbHkgYmUKKyAgICBtdWNoIHNtYWxsZXIuIiIiCisKKyAgICAjIFRoZSBiYXNpYyBhbGdvcml0aG0gaXMgdGhlIGZvbGxvd2luZzogbGV0IGxvZzFwIGJlIHRoZSBmdW5jdGlvbgorICAgICMgbG9nMXAoeCkgPSBsb2coMSt4KS4gIFRoZW4gbG9nKHgvTSkgPSBsb2cxcCgoeC1NKS9NKS4gIFdlIHVzZQorICAgICMgdGhlIHJlZHVjdGlvbgorICAgICMKKyAgICAjICAgIGxvZzFwKHkpID0gMipsb2cxcCh5LygxK3NxcnQoMSt5KSkpCisgICAgIworICAgICMgcmVwZWF0ZWRseSB1bnRpbCB0aGUgYXJndW1lbnQgdG8gbG9nMXAgaXMgc21hbGwgKDwgMioqLUwgaW4KKyAgICAjIGFic29sdXRlIHZhbHVlKS4gIEZvciBzbWFsbCB5IHdlIGNhbiB1c2UgdGhlIFRheWxvciBzZXJpZXMKKyAgICAjIGV4cGFuc2lvbgorICAgICMKKyAgICAjICAgIGxvZzFwKHkpIH4geSAtIHkqKjIvMiArIHkqKjMvMyAtIC4uLiAtICgteSkqKlQvVAorICAgICMKKyAgICAjIHRydW5jYXRpbmcgYXQgVCBzdWNoIHRoYXQgeSoqVCBpcyBzbWFsbCBlbm91Z2guICBUaGUgd2hvbGUKKyAgICAjIGNvbXB1dGF0aW9uIGlzIGNhcnJpZWQgb3V0IGluIGEgZm9ybSBvZiBmaXhlZC1wb2ludCBhcml0aG1ldGljLAorICAgICMgd2l0aCBhIHJlYWwgbnVtYmVyIHogYmVpbmcgcmVwcmVzZW50ZWQgYnkgYW4gaW50ZWdlcgorICAgICMgYXBwcm94aW1hdGlvbiB0byB6Kk0uICBUbyBhdm9pZCBsb3NzIG9mIHByZWNpc2lvbiwgdGhlIHkgYmVsb3cKKyAgICAjIGlzIGFjdHVhbGx5IGFuIGludGVnZXIgYXBwcm94aW1hdGlvbiB0byAyKipSKnkqTSwgd2hlcmUgUiBpcyB0aGUKKyAgICAjIG51bWJlciBvZiByZWR1Y3Rpb25zIHBlcmZvcm1lZCBzbyBmYXIuCisKKyAgICB5ID0geC1NCisgICAgIyBhcmd1bWVudCByZWR1Y3Rpb247IFIgPSBudW1iZXIgb2YgcmVkdWN0aW9ucyBwZXJmb3JtZWQKKyAgICBSID0gMAorICAgIHdoaWxlIChSIDw9IEwgYW5kIGFicyh5KSA8PCBMLVIgPj0gTSBvcgorICAgICAgICAgICBSID4gTCBhbmQgYWJzKHkpID4+IFItTCA+PSBNKToKKyAgICAgICAgeSA9IF9kaXZfbmVhcmVzdCgoTSp5KSA8PCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgIE0gKyBfc3FydF9uZWFyZXN0KE0qKE0rX3JzaGlmdF9uZWFyZXN0KHksIFIpKSwgTSkpCisgICAgICAgIFIgKz0gMQorCisgICAgIyBUYXlsb3Igc2VyaWVzIHdpdGggVCB0ZXJtcworICAgIFQgPSAtaW50KC0xMCpsZW4oc3RyKE0pKS8vKDMqTCkpCisgICAgeXNoaWZ0ID0gX3JzaGlmdF9uZWFyZXN0KHksIFIpCisgICAgdyA9IF9kaXZfbmVhcmVzdChNLCBUKQorICAgIGZvciBrIGluIHJhbmdlKFQtMSwgMCwgLTEpOgorICAgICAgICB3ID0gX2Rpdl9uZWFyZXN0KE0sIGspIC0gX2Rpdl9uZWFyZXN0KHlzaGlmdCp3LCBNKQorCisgICAgcmV0dXJuIF9kaXZfbmVhcmVzdCh3KnksIE0pCisKK2RlZiBfZGxvZzEwKGMsIGUsIHApOgorICAgICIiIkdpdmVuIGludGVnZXJzIGMsIGUgYW5kIHAgd2l0aCBjID4gMCwgcCA+PSAwLCBjb21wdXRlIGFuIGludGVnZXIKKyAgICBhcHByb3hpbWF0aW9uIHRvIDEwKipwICogbG9nMTAoYyoxMCoqZSksIHdpdGggYW4gYWJzb2x1dGUgZXJyb3Igb2YKKyAgICBhdCBtb3N0IDEuICBBc3N1bWVzIHRoYXQgYyoxMCoqZSBpcyBub3QgZXhhY3RseSAxLiIiIgorCisgICAgIyBpbmNyZWFzZSBwcmVjaXNpb24gYnkgMjsgY29tcGVuc2F0ZSBmb3IgdGhpcyBieSBkaXZpZGluZworICAgICMgZmluYWwgcmVzdWx0IGJ5IDEwMAorICAgIHAgKz0gMgorCisgICAgIyB3cml0ZSBjKjEwKiplIGFzIGQqMTAqKmYgd2l0aCBlaXRoZXI6CisgICAgIyAgIGYgPj0gMCBhbmQgMSA8PSBkIDw9IDEwLCBvcgorICAgICMgICBmIDw9IDAgYW5kIDAuMSA8PSBkIDw9IDEuCisgICAgIyBUaHVzIGZvciBjKjEwKiplIGNsb3NlIHRvIDEsIGYgPSAwCisgICAgbCA9IGxlbihzdHIoYykpCisgICAgZiA9IGUrbCAtIChlK2wgPj0gMSkKKworICAgIGlmIHAgPiAwOgorICAgICAgICBNID0gMTAqKnAKKyAgICAgICAgayA9IGUrcC1mCisgICAgICAgIGlmIGsgPj0gMDoKKyAgICAgICAgICAgIGMgKj0gMTAqKmsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGMgPSBfZGl2X25lYXJlc3QoYywgMTAqKi1rKQorCisgICAgICAgIGxvZ19kID0gX2lsb2coYywgTSkgIyBlcnJvciA8IDUgKyAyMiA9IDI3CisgICAgICAgIGxvZ18xMCA9IF9sb2cxMF9kaWdpdHMocCkgIyBlcnJvciA8IDEKKyAgICAgICAgbG9nX2QgPSBfZGl2X25lYXJlc3QobG9nX2QqTSwgbG9nXzEwKQorICAgICAgICBsb2dfdGVucG93ZXIgPSBmKk0gIyBleGFjdAorICAgIGVsc2U6CisgICAgICAgIGxvZ19kID0gMCAgIyBlcnJvciA8IDIuMzEKKyAgICAgICAgbG9nX3RlbnBvd2VyID0gX2Rpdl9uZWFyZXN0KGYsIDEwKiotcCkgIyBlcnJvciA8IDAuNQorCisgICAgcmV0dXJuIF9kaXZfbmVhcmVzdChsb2dfdGVucG93ZXIrbG9nX2QsIDEwMCkKKworZGVmIF9kbG9nKGMsIGUsIHApOgorICAgICIiIkdpdmVuIGludGVnZXJzIGMsIGUgYW5kIHAgd2l0aCBjID4gMCwgY29tcHV0ZSBhbiBpbnRlZ2VyCisgICAgYXBwcm94aW1hdGlvbiB0byAxMCoqcCAqIGxvZyhjKjEwKiplKSwgd2l0aCBhbiBhYnNvbHV0ZSBlcnJvciBvZgorICAgIGF0IG1vc3QgMS4gIEFzc3VtZXMgdGhhdCBjKjEwKiplIGlzIG5vdCBleGFjdGx5IDEuIiIiCisKKyAgICAjIEluY3JlYXNlIHByZWNpc2lvbiBieSAyLiBUaGUgcHJlY2lzaW9uIGluY3JlYXNlIGlzIGNvbXBlbnNhdGVkCisgICAgIyBmb3IgYXQgdGhlIGVuZCB3aXRoIGEgZGl2aXNpb24gYnkgMTAwLgorICAgIHAgKz0gMgorCisgICAgIyByZXdyaXRlIGMqMTAqKmUgYXMgZCoxMCoqZiB3aXRoIGVpdGhlciBmID49IDAgYW5kIDEgPD0gZCA8PSAxMCwKKyAgICAjIG9yIGYgPD0gMCBhbmQgMC4xIDw9IGQgPD0gMS4gIFRoZW4gd2UgY2FuIGNvbXB1dGUgMTAqKnAgKiBsb2coYyoxMCoqZSkKKyAgICAjIGFzIDEwKipwICogbG9nKGQpICsgMTAqKnAqZiAqIGxvZygxMCkuCisgICAgbCA9IGxlbihzdHIoYykpCisgICAgZiA9IGUrbCAtIChlK2wgPj0gMSkKKworICAgICMgY29tcHV0ZSBhcHByb3hpbWF0aW9uIHRvIDEwKipwKmxvZyhkKSwgd2l0aCBlcnJvciA8IDI3CisgICAgaWYgcCA+IDA6CisgICAgICAgIGsgPSBlK3AtZgorICAgICAgICBpZiBrID49IDA6CisgICAgICAgICAgICBjICo9IDEwKiprCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjID0gX2Rpdl9uZWFyZXN0KGMsIDEwKiotaykgICMgZXJyb3Igb2YgPD0gMC41IGluIGMKKworICAgICAgICAjIF9pbG9nIG1hZ25pZmllcyBleGlzdGluZyBlcnJvciBpbiBjIGJ5IGEgZmFjdG9yIG9mIGF0IG1vc3QgMTAKKyAgICAgICAgbG9nX2QgPSBfaWxvZyhjLCAxMCoqcCkgIyBlcnJvciA8IDUgKyAyMiA9IDI3CisgICAgZWxzZToKKyAgICAgICAgIyBwIDw9IDA6IGp1c3QgYXBwcm94aW1hdGUgdGhlIHdob2xlIHRoaW5nIGJ5IDA7IGVycm9yIDwgMi4zMQorICAgICAgICBsb2dfZCA9IDAKKworICAgICMgY29tcHV0ZSBhcHByb3hpbWF0aW9uIHRvIGYqMTAqKnAqbG9nKDEwKSwgd2l0aCBlcnJvciA8IDExLgorICAgIGlmIGY6CisgICAgICAgIGV4dHJhID0gbGVuKHN0cihhYnMoZikpKS0xCisgICAgICAgIGlmIHAgKyBleHRyYSA+PSAwOgorICAgICAgICAgICAgIyBlcnJvciBpbiBmICogX2xvZzEwX2RpZ2l0cyhwK2V4dHJhKSA8IHxmfCAqIDEgPSB8ZnwKKyAgICAgICAgICAgICMgYWZ0ZXIgZGl2aXNpb24sIGVycm9yIDwgfGZ8LzEwKipleHRyYSArIDAuNSA8IDEwICsgMC41IDwgMTEKKyAgICAgICAgICAgIGZfbG9nX3RlbiA9IF9kaXZfbmVhcmVzdChmKl9sb2cxMF9kaWdpdHMocCtleHRyYSksIDEwKipleHRyYSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZfbG9nX3RlbiA9IDAKKyAgICBlbHNlOgorICAgICAgICBmX2xvZ190ZW4gPSAwCisKKyAgICAjIGVycm9yIGluIHN1bSA8IDExKzI3ID0gMzg7IGVycm9yIGFmdGVyIGRpdmlzaW9uIDwgMC4zOCArIDAuNSA8IDEKKyAgICByZXR1cm4gX2Rpdl9uZWFyZXN0KGZfbG9nX3RlbiArIGxvZ19kLCAxMDApCisKK2NsYXNzIF9Mb2cxME1lbW9pemUob2JqZWN0KToKKyAgICAiIiJDbGFzcyB0byBjb21wdXRlLCBzdG9yZSwgYW5kIGFsbG93IHJldHJpZXZhbCBvZiwgZGlnaXRzIG9mIHRoZQorICAgIGNvbnN0YW50IGxvZygxMCkgPSAyLjMwMjU4NS4uLi4gIFRoaXMgY29uc3RhbnQgaXMgbmVlZGVkIGJ5CisgICAgRGVjaW1hbC5sbiwgRGVjaW1hbC5sb2cxMCwgRGVjaW1hbC5leHAgYW5kIERlY2ltYWwuX19wb3dfXy4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuZGlnaXRzID0gIjIzMDI1ODUwOTI5OTQwNDU2ODQwMTc5OTE0NTQ2ODQzNjQyMDc2MDExMDE0ODg2IgorCisgICAgZGVmIGdldGRpZ2l0cyhzZWxmLCBwKToKKyAgICAgICAgIiIiR2l2ZW4gYW4gaW50ZWdlciBwID49IDAsIHJldHVybiBmbG9vcigxMCoqcCkqbG9nKDEwKS4KKworICAgICAgICBGb3IgZXhhbXBsZSwgc2VsZi5nZXRkaWdpdHMoMykgcmV0dXJucyAyMzAyLgorICAgICAgICAiIiIKKyAgICAgICAgIyBkaWdpdHMgYXJlIHN0b3JlZCBhcyBhIHN0cmluZywgZm9yIHF1aWNrIGNvbnZlcnNpb24gdG8KKyAgICAgICAgIyBpbnRlZ2VyIGluIHRoZSBjYXNlIHRoYXQgd2UndmUgYWxyZWFkeSBjb21wdXRlZCBlbm91Z2gKKyAgICAgICAgIyBkaWdpdHM7IHRoZSBzdG9yZWQgZGlnaXRzIHNob3VsZCBhbHdheXMgYmUgY29ycmVjdAorICAgICAgICAjICh0cnVuY2F0ZWQsIG5vdCByb3VuZGVkIHRvIG5lYXJlc3QpLgorICAgICAgICBpZiBwIDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInAgc2hvdWxkIGJlIG5vbm5lZ2F0aXZlIikKKworICAgICAgICBpZiBwID49IGxlbihzZWxmLmRpZ2l0cyk6CisgICAgICAgICAgICAjIGNvbXB1dGUgcCszLCBwKzYsIHArOSwgLi4uIGRpZ2l0czsgY29udGludWUgdW50aWwgYXQKKyAgICAgICAgICAgICMgbGVhc3Qgb25lIG9mIHRoZSBleHRyYSBkaWdpdHMgaXMgbm9uemVybworICAgICAgICAgICAgZXh0cmEgPSAzCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICMgY29tcHV0ZSBwK2V4dHJhIGRpZ2l0cywgY29ycmVjdCB0byB3aXRoaW4gMXVscAorICAgICAgICAgICAgICAgIE0gPSAxMCoqKHArZXh0cmErMikKKyAgICAgICAgICAgICAgICBkaWdpdHMgPSBzdHIoX2Rpdl9uZWFyZXN0KF9pbG9nKDEwKk0sIE0pLCAxMDApKQorICAgICAgICAgICAgICAgIGlmIGRpZ2l0c1stZXh0cmE6XSAhPSAnMCcqZXh0cmE6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXh0cmEgKz0gMworICAgICAgICAgICAgIyBrZWVwIGFsbCByZWxpYWJsZSBkaWdpdHMgc28gZmFyOyByZW1vdmUgdHJhaWxpbmcgemVyb3MKKyAgICAgICAgICAgICMgYW5kIG5leHQgbm9uemVybyBkaWdpdAorICAgICAgICAgICAgc2VsZi5kaWdpdHMgPSBkaWdpdHMucnN0cmlwKCcwJylbOi0xXQorICAgICAgICByZXR1cm4gaW50KHNlbGYuZGlnaXRzWzpwKzFdKQorCitfbG9nMTBfZGlnaXRzID0gX0xvZzEwTWVtb2l6ZSgpLmdldGRpZ2l0cworCitkZWYgX2lleHAoeCwgTSwgTD04KToKKyAgICAiIiJHaXZlbiBpbnRlZ2VycyB4IGFuZCBNLCBNID4gMCwgc3VjaCB0aGF0IHgvTSBpcyBzbWFsbCBpbiBhYnNvbHV0ZQorICAgIHZhbHVlLCBjb21wdXRlIGFuIGludGVnZXIgYXBwcm94aW1hdGlvbiB0byBNKmV4cCh4L00pLiAgRm9yIDAgPD0KKyAgICB4L00gPD0gMi40LCB0aGUgYWJzb2x1dGUgZXJyb3IgaW4gdGhlIHJlc3VsdCBpcyBib3VuZGVkIGJ5IDYwIChhbmQKKyAgICBpcyB1c3VhbGx5IG11Y2ggc21hbGxlcikuIiIiCisKKyAgICAjIEFsZ29yaXRobTogdG8gY29tcHV0ZSBleHAoeikgZm9yIGEgcmVhbCBudW1iZXIgeiwgZmlyc3QgZGl2aWRlIHoKKyAgICAjIGJ5IGEgc3VpdGFibGUgcG93ZXIgUiBvZiAyIHNvIHRoYXQgfHovMioqUnwgPCAyKiotTC4gIFRoZW4KKyAgICAjIGNvbXB1dGUgZXhwbTEoei8yKipSKSA9IGV4cCh6LzIqKlIpIC0gMSB1c2luZyB0aGUgdXN1YWwgVGF5bG9yCisgICAgIyBzZXJpZXMKKyAgICAjCisgICAgIyAgICAgZXhwbTEoeCkgPSB4ICsgeCoqMi8yISArIHgqKjMvMyEgKyAuLi4KKyAgICAjCisgICAgIyBOb3cgdXNlIHRoZSBpZGVudGl0eQorICAgICMKKyAgICAjICAgICBleHBtMSgyeCkgPSBleHBtMSh4KSooZXhwbTEoeCkrMikKKyAgICAjCisgICAgIyBSIHRpbWVzIHRvIGNvbXB1dGUgdGhlIHNlcXVlbmNlIGV4cG0xKHovMioqUiksCisgICAgIyBleHBtMSh6LzIqKihSLTEpKSwgLi4uICwgZXhwKHovMiksIGV4cCh6KS4KKworICAgICMgRmluZCBSIHN1Y2ggdGhhdCB4LzIqKlIvTSA8PSAyKiotTAorICAgIFIgPSBfbmJpdHMoKHg8PEwpLy9NKQorCisgICAgIyBUYXlsb3Igc2VyaWVzLiAgKDIqKkwpKipUID4gTQorICAgIFQgPSAtaW50KC0xMCpsZW4oc3RyKE0pKS8vKDMqTCkpCisgICAgeSA9IF9kaXZfbmVhcmVzdCh4LCBUKQorICAgIE1zaGlmdCA9IE08PFIKKyAgICBmb3IgaSBpbiByYW5nZShULTEsIDAsIC0xKToKKyAgICAgICAgeSA9IF9kaXZfbmVhcmVzdCh4KihNc2hpZnQgKyB5KSwgTXNoaWZ0ICogaSkKKworICAgICMgRXhwYW5zaW9uCisgICAgZm9yIGsgaW4gcmFuZ2UoUi0xLCAtMSwgLTEpOgorICAgICAgICBNc2hpZnQgPSBNPDwoaysyKQorICAgICAgICB5ID0gX2Rpdl9uZWFyZXN0KHkqKHkrTXNoaWZ0KSwgTXNoaWZ0KQorCisgICAgcmV0dXJuIE0reQorCitkZWYgX2RleHAoYywgZSwgcCk6CisgICAgIiIiQ29tcHV0ZSBhbiBhcHByb3hpbWF0aW9uIHRvIGV4cChjKjEwKiplKSwgd2l0aCBwIGRlY2ltYWwgcGxhY2VzIG9mCisgICAgcHJlY2lzaW9uLgorCisgICAgUmV0dXJucyBpbnRlZ2VycyBkLCBmIHN1Y2ggdGhhdDoKKworICAgICAgMTAqKihwLTEpIDw9IGQgPD0gMTAqKnAsIGFuZAorICAgICAgKGQtMSkqMTAqKmYgPCBleHAoYyoxMCoqZSkgPCAoZCsxKSoxMCoqZgorCisgICAgSW4gb3RoZXIgd29yZHMsIGQqMTAqKmYgaXMgYW4gYXBwcm94aW1hdGlvbiB0byBleHAoYyoxMCoqZSkgd2l0aCBwCisgICAgZGlnaXRzIG9mIHByZWNpc2lvbiwgYW5kIHdpdGggYW4gZXJyb3IgaW4gZCBvZiBhdCBtb3N0IDEuICBUaGlzIGlzCisgICAgYWxtb3N0LCBidXQgbm90IHF1aXRlLCB0aGUgc2FtZSBhcyB0aGUgZXJyb3IgYmVpbmcgPCAxdWxwOiB3aGVuIGQKKyAgICA9IDEwKioocC0xKSB0aGUgZXJyb3IgY291bGQgYmUgdXAgdG8gMTAgdWxwLiIiIgorCisgICAgIyB3ZSdsbCBjYWxsIGlleHAgd2l0aCBNID0gMTAqKihwKzIpLCBnaXZpbmcgcCszIGRpZ2l0cyBvZiBwcmVjaXNpb24KKyAgICBwICs9IDIKKworICAgICMgY29tcHV0ZSBsb2coMTApIHdpdGggZXh0cmEgcHJlY2lzaW9uID0gYWRqdXN0ZWQgZXhwb25lbnQgb2YgYyoxMCoqZQorICAgIGV4dHJhID0gbWF4KDAsIGUgKyBsZW4oc3RyKGMpKSAtIDEpCisgICAgcSA9IHAgKyBleHRyYQorCisgICAgIyBjb21wdXRlIHF1b3RpZW50IGMqMTAqKmUvKGxvZygxMCkpID0gYyoxMCoqKGUrcSkvKGxvZygxMCkqMTAqKnEpLAorICAgICMgcm91bmRpbmcgZG93bgorICAgIHNoaWZ0ID0gZStxCisgICAgaWYgc2hpZnQgPj0gMDoKKyAgICAgICAgY3NoaWZ0ID0gYyoxMCoqc2hpZnQKKyAgICBlbHNlOgorICAgICAgICBjc2hpZnQgPSBjLy8xMCoqLXNoaWZ0CisgICAgcXVvdCwgcmVtID0gZGl2bW9kKGNzaGlmdCwgX2xvZzEwX2RpZ2l0cyhxKSkKKworICAgICMgcmVkdWNlIHJlbWFpbmRlciBiYWNrIHRvIG9yaWdpbmFsIHByZWNpc2lvbgorICAgIHJlbSA9IF9kaXZfbmVhcmVzdChyZW0sIDEwKipleHRyYSkKKworICAgICMgZXJyb3IgaW4gcmVzdWx0IG9mIF9pZXhwIDwgMTIwOyAgZXJyb3IgYWZ0ZXIgZGl2aXNpb24gPCAwLjYyCisgICAgcmV0dXJuIF9kaXZfbmVhcmVzdChfaWV4cChyZW0sIDEwKipwKSwgMTAwMCksIHF1b3QgLSBwICsgMworCitkZWYgX2Rwb3dlcih4YywgeGUsIHljLCB5ZSwgcCk6CisgICAgIiIiR2l2ZW4gaW50ZWdlcnMgeGMsIHhlLCB5YyBhbmQgeWUgcmVwcmVzZW50aW5nIERlY2ltYWxzIHggPSB4YyoxMCoqeGUgYW5kCisgICAgeSA9IHljKjEwKip5ZSwgY29tcHV0ZSB4Kip5LiAgUmV0dXJucyBhIHBhaXIgb2YgaW50ZWdlcnMgKGMsIGUpIHN1Y2ggdGhhdDoKKworICAgICAgMTAqKihwLTEpIDw9IGMgPD0gMTAqKnAsIGFuZAorICAgICAgKGMtMSkqMTAqKmUgPCB4Kip5IDwgKGMrMSkqMTAqKmUKKworICAgIGluIG90aGVyIHdvcmRzLCBjKjEwKiplIGlzIGFuIGFwcHJveGltYXRpb24gdG8geCoqeSB3aXRoIHAgZGlnaXRzCisgICAgb2YgcHJlY2lzaW9uLCBhbmQgd2l0aCBhbiBlcnJvciBpbiBjIG9mIGF0IG1vc3QgMS4gIChUaGlzIGlzCisgICAgYWxtb3N0LCBidXQgbm90IHF1aXRlLCB0aGUgc2FtZSBhcyB0aGUgZXJyb3IgYmVpbmcgPCAxdWxwOiB3aGVuIGMKKyAgICA9PSAxMCoqKHAtMSkgd2UgY2FuIG9ubHkgZ3VhcmFudGVlIGVycm9yIDwgMTB1bHAuKQorCisgICAgV2UgYXNzdW1lIHRoYXQ6IHggaXMgcG9zaXRpdmUgYW5kIG5vdCBlcXVhbCB0byAxLCBhbmQgeSBpcyBub256ZXJvLgorICAgICIiIgorCisgICAgIyBGaW5kIGIgc3VjaCB0aGF0IDEwKiooYi0xKSA8PSB8eXwgPD0gMTAqKmIKKyAgICBiID0gbGVuKHN0cihhYnMoeWMpKSkgKyB5ZQorCisgICAgIyBsb2coeCkgPSBseGMqMTAqKigtcC1iLTEpLCB0byBwK2IrMSBwbGFjZXMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQKKyAgICBseGMgPSBfZGxvZyh4YywgeGUsIHArYisxKQorCisgICAgIyBjb21wdXRlIHByb2R1Y3QgeSpsb2coeCkgPSB5YypseGMqMTAqKigtcC1iLTEreWUpID0gcGMqMTAqKigtcC0xKQorICAgIHNoaWZ0ID0geWUtYgorICAgIGlmIHNoaWZ0ID49IDA6CisgICAgICAgIHBjID0gbHhjKnljKjEwKipzaGlmdAorICAgIGVsc2U6CisgICAgICAgIHBjID0gX2Rpdl9uZWFyZXN0KGx4Yyp5YywgMTAqKi1zaGlmdCkKKworICAgIGlmIHBjID09IDA6CisgICAgICAgICMgd2UgcHJlZmVyIGEgcmVzdWx0IHRoYXQgaXNuJ3QgZXhhY3RseSAxOyB0aGlzIG1ha2VzIGl0CisgICAgICAgICMgZWFzaWVyIHRvIGNvbXB1dGUgYSBjb3JyZWN0bHkgcm91bmRlZCByZXN1bHQgaW4gX19wb3dfXworICAgICAgICBpZiAoKGxlbihzdHIoeGMpKSArIHhlID49IDEpID09ICh5YyA+IDApKTogIyBpZiB4Kip5ID4gMToKKyAgICAgICAgICAgIGNvZWZmLCBleHAgPSAxMCoqKHAtMSkrMSwgMS1wCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb2VmZiwgZXhwID0gMTAqKnAtMSwgLXAKKyAgICBlbHNlOgorICAgICAgICBjb2VmZiwgZXhwID0gX2RleHAocGMsIC0ocCsxKSwgcCsxKQorICAgICAgICBjb2VmZiA9IF9kaXZfbmVhcmVzdChjb2VmZiwgMTApCisgICAgICAgIGV4cCArPSAxCisKKyAgICByZXR1cm4gY29lZmYsIGV4cAorCitkZWYgX2xvZzEwX2xiKGMsIGNvcnJlY3Rpb24gPSB7CisgICAgICAgICcxJzogMTAwLCAnMic6IDcwLCAnMyc6IDUzLCAnNCc6IDQwLCAnNSc6IDMxLAorICAgICAgICAnNic6IDIzLCAnNyc6IDE2LCAnOCc6IDEwLCAnOSc6IDV9KToKKyAgICAiIiJDb21wdXRlIGEgbG93ZXIgYm91bmQgZm9yIDEwMCpsb2cxMChjKSBmb3IgYSBwb3NpdGl2ZSBpbnRlZ2VyIGMuIiIiCisgICAgaWYgYyA8PSAwOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJUaGUgYXJndW1lbnQgdG8gX2xvZzEwX2xiIHNob3VsZCBiZSBub25uZWdhdGl2ZS4iKQorICAgIHN0cl9jID0gc3RyKGMpCisgICAgcmV0dXJuIDEwMCpsZW4oc3RyX2MpIC0gY29ycmVjdGlvbltzdHJfY1swXV0KKworIyMjIyMgSGVscGVyIEZ1bmN0aW9ucyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1GYWxzZSwgYWxsb3dfZmxvYXQ9RmFsc2UpOgorICAgICIiIkNvbnZlcnQgb3RoZXIgdG8gRGVjaW1hbC4KKworICAgIFZlcmlmaWVzIHRoYXQgaXQncyBvayB0byB1c2UgaW4gYW4gaW1wbGljaXQgY29uc3RydWN0aW9uLgorICAgIElmIGFsbG93X2Zsb2F0IGlzIHRydWUsIGFsbG93IGNvbnZlcnNpb24gZnJvbSBmbG9hdDsgIHRoaXMKKyAgICBpcyB1c2VkIGluIHRoZSBjb21wYXJpc29uIG1ldGhvZHMgKF9fZXFfXyBhbmQgZnJpZW5kcykuCisKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBEZWNpbWFsKToKKyAgICAgICAgcmV0dXJuIG90aGVyCisgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgaW50KToKKyAgICAgICAgcmV0dXJuIERlY2ltYWwob3RoZXIpCisgICAgaWYgYWxsb3dfZmxvYXQgYW5kIGlzaW5zdGFuY2Uob3RoZXIsIGZsb2F0KToKKyAgICAgICAgcmV0dXJuIERlY2ltYWwuZnJvbV9mbG9hdChvdGhlcikKKworICAgIGlmIHJhaXNlaXQ6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBvdGhlcikKKyAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworZGVmIF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyLCBlcXVhbGl0eV9vcD1GYWxzZSk6CisgICAgIiIiR2l2ZW4gYSBEZWNpbWFsIGluc3RhbmNlIHNlbGYgYW5kIGEgUHl0aG9uIG9iamVjdCBvdGhlciwgcmV0dXJuCisgICAgYSBwYWlyIChzLCBvKSBvZiBEZWNpbWFsIGluc3RhbmNlcyBzdWNoIHRoYXQgInMgb3AgbyIgaXMKKyAgICBlcXVpdmFsZW50IHRvICJzZWxmIG9wIG90aGVyIiBmb3IgYW55IG9mIHRoZSA2IGNvbXBhcmlzb24KKyAgICBvcGVyYXRvcnMgIm9wIi4KKworICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIERlY2ltYWwpOgorICAgICAgICByZXR1cm4gc2VsZiwgb3RoZXIKKworICAgICMgQ29tcGFyaXNvbiB3aXRoIGEgUmF0aW9uYWwgaW5zdGFuY2UgKGFsc28gaW5jbHVkZXMgaW50ZWdlcnMpOgorICAgICMgc2VsZiBvcCBuL2QgPD0+IHNlbGYqZCBvcCBuIChmb3IgbiBhbmQgZCBpbnRlZ2VycywgZCBwb3NpdGl2ZSkuCisgICAgIyBBIE5hTiBvciBpbmZpbml0eSBjYW4gYmUgbGVmdCB1bmNoYW5nZWQgd2l0aG91dCBhZmZlY3RpbmcgdGhlCisgICAgIyBjb21wYXJpc29uIHJlc3VsdC4KKyAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBfbnVtYmVycy5SYXRpb25hbCk6CisgICAgICAgIGlmIG5vdCBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgc2VsZiA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihpbnQoc2VsZi5faW50KSAqIG90aGVyLmRlbm9taW5hdG9yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCkKKyAgICAgICAgcmV0dXJuIHNlbGYsIERlY2ltYWwob3RoZXIubnVtZXJhdG9yKQorCisgICAgIyBDb21wYXJpc29ucyB3aXRoIGZsb2F0IGFuZCBjb21wbGV4IHR5cGVzLiAgPT0gYW5kICE9IGNvbXBhcmlzb25zCisgICAgIyB3aXRoIGNvbXBsZXggbnVtYmVycyBzaG91bGQgc3VjY2VlZCwgcmV0dXJuaW5nIGVpdGhlciBUcnVlIG9yIEZhbHNlCisgICAgIyBhcyBhcHByb3ByaWF0ZS4gIE90aGVyIGNvbXBhcmlzb25zIHJldHVybiBOb3RJbXBsZW1lbnRlZC4KKyAgICBpZiBlcXVhbGl0eV9vcCBhbmQgaXNpbnN0YW5jZShvdGhlciwgX251bWJlcnMuQ29tcGxleCkgYW5kIG90aGVyLmltYWcgPT0gMDoKKyAgICAgICAgb3RoZXIgPSBvdGhlci5yZWFsCisgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZmxvYXQpOgorICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIGlmIGVxdWFsaXR5X29wOgorICAgICAgICAgICAgY29udGV4dC5mbGFnc1tGbG9hdE9wZXJhdGlvbl0gPSAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihGbG9hdE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAic3RyaWN0IHNlbWFudGljcyBmb3IgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMgYXJlIGVuYWJsZWQiKQorICAgICAgICByZXR1cm4gc2VsZiwgRGVjaW1hbC5mcm9tX2Zsb2F0KG90aGVyKQorICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZCwgTm90SW1wbGVtZW50ZWQKKworCisjIyMjIyBTZXR1cCBTcGVjaWZpYyBDb250ZXh0cyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFRoZSBkZWZhdWx0IGNvbnRleHQgcHJvdG90eXBlIHVzZWQgYnkgQ29udGV4dCgpCisjIElzIG11dGFibGUsIHNvIHRoYXQgbmV3IGNvbnRleHRzIGNhbiBoYXZlIGRpZmZlcmVudCBkZWZhdWx0IHZhbHVlcworCitEZWZhdWx0Q29udGV4dCA9IENvbnRleHQoCisgICAgICAgIHByZWM9MjgsIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwKKyAgICAgICAgdHJhcHM9W0RpdmlzaW9uQnlaZXJvLCBPdmVyZmxvdywgSW52YWxpZE9wZXJhdGlvbl0sCisgICAgICAgIGZsYWdzPVtdLAorICAgICAgICBFbWF4PTk5OTk5OSwKKyAgICAgICAgRW1pbj0tOTk5OTk5LAorICAgICAgICBjYXBpdGFscz0xLAorICAgICAgICBjbGFtcD0wCispCisKKyMgUHJlLW1hZGUgYWx0ZXJuYXRlIGNvbnRleHRzIG9mZmVyZWQgYnkgdGhlIHNwZWNpZmljYXRpb24KKyMgRG9uJ3QgY2hhbmdlIHRoZXNlOyB0aGUgdXNlciBzaG91bGQgYmUgYWJsZSB0byBzZWxlY3QgdGhlc2UKKyMgY29udGV4dHMgYW5kIGJlIGFibGUgdG8gcmVwcm9kdWNlIHJlc3VsdHMgZnJvbSBvdGhlciBpbXBsZW1lbnRhdGlvbnMKKyMgb2YgdGhlIHNwZWMuCisKK0Jhc2ljQ29udGV4dCA9IENvbnRleHQoCisgICAgICAgIHByZWM9OSwgcm91bmRpbmc9Uk9VTkRfSEFMRl9VUCwKKyAgICAgICAgdHJhcHM9W0RpdmlzaW9uQnlaZXJvLCBPdmVyZmxvdywgSW52YWxpZE9wZXJhdGlvbiwgQ2xhbXBlZCwgVW5kZXJmbG93XSwKKyAgICAgICAgZmxhZ3M9W10sCispCisKK0V4dGVuZGVkQ29udGV4dCA9IENvbnRleHQoCisgICAgICAgIHByZWM9OSwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLAorICAgICAgICB0cmFwcz1bXSwKKyAgICAgICAgZmxhZ3M9W10sCispCisKKworIyMjIyMgY3J1ZCBmb3IgcGFyc2luZyBzdHJpbmdzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBSZWd1bGFyIGV4cHJlc3Npb24gdXNlZCBmb3IgcGFyc2luZyBudW1lcmljIHN0cmluZ3MuICBBZGRpdGlvbmFsCisjIGNvbW1lbnRzOgorIworIyAxLiBVbmNvbW1lbnQgdGhlIHR3byAnXHMqJyBsaW5lcyB0byBhbGxvdyBsZWFkaW5nIGFuZC9vciB0cmFpbGluZworIyB3aGl0ZXNwYWNlLiAgQnV0IG5vdGUgdGhhdCB0aGUgc3BlY2lmaWNhdGlvbiBkaXNhbGxvd3Mgd2hpdGVzcGFjZSBpbgorIyBhIG51bWVyaWMgc3RyaW5nLgorIworIyAyLiBGb3IgZmluaXRlIG51bWJlcnMgKG5vdCBpbmZpbml0aWVzIGFuZCBOYU5zKSB0aGUgYm9keSBvZiB0aGUKKyMgbnVtYmVyIGJldHdlZW4gdGhlIG9wdGlvbmFsIHNpZ24gYW5kIHRoZSBvcHRpb25hbCBleHBvbmVudCBtdXN0IGhhdmUKKyMgYXQgbGVhc3Qgb25lIGRlY2ltYWwgZGlnaXQsIHBvc3NpYmx5IGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LiAgVGhlCisjIGxvb2thaGVhZCBleHByZXNzaW9uICcoPz1cZHxcLlxkKScgY2hlY2tzIHRoaXMuCisKK2ltcG9ydCByZQorX3BhcnNlciA9IHJlLmNvbXBpbGUociIiIiAgICAgICAgIyBBIG51bWVyaWMgc3RyaW5nIGNvbnNpc3RzIG9mOgorIyAgICBccyoKKyAgICAoP1A8c2lnbj5bLStdKT8gICAgICAgICAgICAgICMgYW4gb3B0aW9uYWwgc2lnbiwgZm9sbG93ZWQgYnkgZWl0aGVyLi4uCisgICAgKAorICAgICAgICAoPz1cZHxcLlxkKSAgICAgICAgICAgICAgIyAuLi5hIG51bWJlciAod2l0aCBhdCBsZWFzdCBvbmUgZGlnaXQpCisgICAgICAgICg/UDxpbnQ+XGQqKSAgICAgICAgICAgICAjIGhhdmluZyBhIChwb3NzaWJseSBlbXB0eSkgaW50ZWdlciBwYXJ0CisgICAgICAgIChcLig/UDxmcmFjPlxkKikpPyAgICAgICAjIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsIGZyYWN0aW9uYWwgcGFydAorICAgICAgICAoRSg/UDxleHA+Wy0rXT9cZCspKT8gICAgIyBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCBleHBvbmVudCwgb3IuLi4KKyAgICB8CisgICAgICAgIEluZihpbml0eSk/ICAgICAgICAgICAgICAjIC4uLmFuIGluZmluaXR5LCBvci4uLgorICAgIHwKKyAgICAgICAgKD9QPHNpZ25hbD5zKT8gICAgICAgICAgICMgLi4uYW4gKG9wdGlvbmFsbHkgc2lnbmFsaW5nKQorICAgICAgICBOYU4gICAgICAgICAgICAgICAgICAgICAgIyBOYU4KKyAgICAgICAgKD9QPGRpYWc+XGQqKSAgICAgICAgICAgICMgd2l0aCAocG9zc2libHkgZW1wdHkpIGRpYWdub3N0aWMgaW5mby4KKyAgICApCisjICAgIFxzKgorICAgIFxaCisiIiIsIHJlLlZFUkJPU0UgfCByZS5JR05PUkVDQVNFKS5tYXRjaAorCitfYWxsX3plcm9zID0gcmUuY29tcGlsZSgnMCokJykubWF0Y2gKK19leGFjdF9oYWxmID0gcmUuY29tcGlsZSgnNTAqJCcpLm1hdGNoCisKKyMjIyMjIFBFUDMxMDEgc3VwcG9ydCBmdW5jdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUaGUgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBoYXZlIGxpdHRsZSB0byBkbyB3aXRoIHRoZSBEZWNpbWFsCisjIGNsYXNzLCBhbmQgY291bGQgcG90ZW50aWFsbHkgYmUgcmV1c2VkIG9yIGFkYXB0ZWQgZm9yIG90aGVyIHB1cmUKKyMgUHl0aG9uIG51bWVyaWMgY2xhc3NlcyB0aGF0IHdhbnQgdG8gaW1wbGVtZW50IF9fZm9ybWF0X18KKyMKKyMgQSBmb3JtYXQgc3BlY2lmaWVyIGZvciBEZWNpbWFsIGxvb2tzIGxpa2U6CisjCisjICAgW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVttaW5pbXVtd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdCisKK19wYXJzZV9mb3JtYXRfc3BlY2lmaWVyX3JlZ2V4ID0gcmUuY29tcGlsZShyIiIiXEEKKyg/OgorICAgKD9QPGZpbGw+Lik/CisgICAoP1A8YWxpZ24+Wzw+PV5dKQorKT8KKyg/UDxzaWduPlstKyBdKT8KKyg/UDxhbHQ+XCMpPworKD9QPHplcm9wYWQ+MCk/CisoP1A8bWluaW11bXdpZHRoPig/ITApXGQrKT8KKyg/UDx0aG91c2FuZHNfc2VwPiwpPworKD86XC4oP1A8cHJlY2lzaW9uPjB8KD8hMClcZCspKT8KKyg/UDx0eXBlPltlRWZGZ0duJV0pPworXFoKKyIiIiwgcmUuVkVSQk9TRXxyZS5ET1RBTEwpCisKK2RlbCByZQorCisjIFRoZSBsb2NhbGUgbW9kdWxlIGlzIG9ubHkgbmVlZGVkIGZvciB0aGUgJ24nIGZvcm1hdCBzcGVjaWZpZXIuICBUaGUKKyMgcmVzdCBvZiB0aGUgUEVQIDMxMDEgY29kZSBmdW5jdGlvbnMgcXVpdGUgaGFwcGlseSB3aXRob3V0IGl0LCBzbyB3ZQorIyBkb24ndCBjYXJlIHRvbyBtdWNoIGlmIGxvY2FsZSBpc24ndCBwcmVzZW50LgordHJ5OgorICAgIGltcG9ydCBsb2NhbGUgYXMgX2xvY2FsZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKKworZGVmIF9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyKGZvcm1hdF9zcGVjLCBfbG9jYWxlY29udj1Ob25lKToKKyAgICAiIiJQYXJzZSBhbmQgdmFsaWRhdGUgYSBmb3JtYXQgc3BlY2lmaWVyLgorCisgICAgVHVybnMgYSBzdGFuZGFyZCBudW1lcmljIGZvcm1hdCBzcGVjaWZpZXIgaW50byBhIGRpY3QsIHdpdGggdGhlCisgICAgZm9sbG93aW5nIGVudHJpZXM6CisKKyAgICAgIGZpbGw6IGZpbGwgY2hhcmFjdGVyIHRvIHBhZCBmaWVsZCB0byBtaW5pbXVtIHdpZHRoCisgICAgICBhbGlnbjogYWxpZ25tZW50IHR5cGUsIGVpdGhlciAnPCcsICc+JywgJz0nIG9yICdeJworICAgICAgc2lnbjogZWl0aGVyICcrJywgJy0nIG9yICcgJworICAgICAgbWluaW11bXdpZHRoOiBub25uZWdhdGl2ZSBpbnRlZ2VyIGdpdmluZyBtaW5pbXVtIHdpZHRoCisgICAgICB6ZXJvcGFkOiBib29sZWFuLCBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gcGFkIHdpdGggemVyb3MKKyAgICAgIHRob3VzYW5kc19zZXA6IHN0cmluZyB0byB1c2UgYXMgdGhvdXNhbmRzIHNlcGFyYXRvciwgb3IgJycKKyAgICAgIGdyb3VwaW5nOiBncm91cGluZyBmb3IgdGhvdXNhbmRzIHNlcGFyYXRvcnMsIGluIGZvcm1hdAorICAgICAgICB1c2VkIGJ5IGxvY2FsZWNvbnYKKyAgICAgIGRlY2ltYWxfcG9pbnQ6IHN0cmluZyB0byB1c2UgZm9yIGRlY2ltYWwgcG9pbnQKKyAgICAgIHByZWNpc2lvbjogbm9ubmVnYXRpdmUgaW50ZWdlciBnaXZpbmcgcHJlY2lzaW9uLCBvciBOb25lCisgICAgICB0eXBlOiBvbmUgb2YgdGhlIGNoYXJhY3RlcnMgJ2VFZkZnRyUnLCBvciBOb25lCisKKyAgICAiIiIKKyAgICBtID0gX3BhcnNlX2Zvcm1hdF9zcGVjaWZpZXJfcmVnZXgubWF0Y2goZm9ybWF0X3NwZWMpCisgICAgaWYgbSBpcyBOb25lOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIGZvcm1hdCBzcGVjaWZpZXI6ICIgKyBmb3JtYXRfc3BlYykKKworICAgICMgZ2V0IHRoZSBkaWN0aW9uYXJ5CisgICAgZm9ybWF0X2RpY3QgPSBtLmdyb3VwZGljdCgpCisKKyAgICAjIHplcm9wYWQ7IGRlZmF1bHRzIGZvciBmaWxsIGFuZCBhbGlnbm1lbnQuICBJZiB6ZXJvIHBhZGRpbmcKKyAgICAjIGlzIHJlcXVlc3RlZCwgdGhlIGZpbGwgYW5kIGFsaWduIGZpZWxkcyBzaG91bGQgYmUgYWJzZW50LgorICAgIGZpbGwgPSBmb3JtYXRfZGljdFsnZmlsbCddCisgICAgYWxpZ24gPSBmb3JtYXRfZGljdFsnYWxpZ24nXQorICAgIGZvcm1hdF9kaWN0Wyd6ZXJvcGFkJ10gPSAoZm9ybWF0X2RpY3RbJ3plcm9wYWQnXSBpcyBub3QgTm9uZSkKKyAgICBpZiBmb3JtYXRfZGljdFsnemVyb3BhZCddOgorICAgICAgICBpZiBmaWxsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRmlsbCBjaGFyYWN0ZXIgY29uZmxpY3RzIHdpdGggJzAnIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGluIGZvcm1hdCBzcGVjaWZpZXI6ICIgKyBmb3JtYXRfc3BlYykKKyAgICAgICAgaWYgYWxpZ24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBbGlnbm1lbnQgY29uZmxpY3RzIHdpdGggJzAnIGluICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdCBzcGVjaWZpZXI6ICIgKyBmb3JtYXRfc3BlYykKKyAgICBmb3JtYXRfZGljdFsnZmlsbCddID0gZmlsbCBvciAnICcKKyAgICAjIFBFUCAzMTAxIG9yaWdpbmFsbHkgc3BlY2lmaWVkIHRoYXQgdGhlIGRlZmF1bHQgYWxpZ25tZW50IHNob3VsZAorICAgICMgYmUgbGVmdDsgIGl0IHdhcyBsYXRlciBhZ3JlZWQgdGhhdCByaWdodC1hbGlnbmVkIG1ha2VzIG1vcmUgc2Vuc2UKKyAgICAjIGZvciBudW1lcmljIHR5cGVzLiAgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU2ODU3LgorICAgIGZvcm1hdF9kaWN0WydhbGlnbiddID0gYWxpZ24gb3IgJz4nCisKKyAgICAjIGRlZmF1bHQgc2lnbiBoYW5kbGluZzogJy0nIGZvciBuZWdhdGl2ZSwgJycgZm9yIHBvc2l0aXZlCisgICAgaWYgZm9ybWF0X2RpY3RbJ3NpZ24nXSBpcyBOb25lOgorICAgICAgICBmb3JtYXRfZGljdFsnc2lnbiddID0gJy0nCisKKyAgICAjIG1pbmltdW13aWR0aCBkZWZhdWx0cyB0byAwOyBwcmVjaXNpb24gcmVtYWlucyBOb25lIGlmIG5vdCBnaXZlbgorICAgIGZvcm1hdF9kaWN0WydtaW5pbXVtd2lkdGgnXSA9IGludChmb3JtYXRfZGljdFsnbWluaW11bXdpZHRoJ10gb3IgJzAnKQorICAgIGlmIGZvcm1hdF9kaWN0WydwcmVjaXNpb24nXSBpcyBub3QgTm9uZToKKyAgICAgICAgZm9ybWF0X2RpY3RbJ3ByZWNpc2lvbiddID0gaW50KGZvcm1hdF9kaWN0WydwcmVjaXNpb24nXSkKKworICAgICMgaWYgZm9ybWF0IHR5cGUgaXMgJ2cnIG9yICdHJyB0aGVuIGEgcHJlY2lzaW9uIG9mIDAgbWFrZXMgbGl0dGxlCisgICAgIyBzZW5zZTsgY29udmVydCBpdCB0byAxLiAgU2FtZSBpZiBmb3JtYXQgdHlwZSBpcyB1bnNwZWNpZmllZC4KKyAgICBpZiBmb3JtYXRfZGljdFsncHJlY2lzaW9uJ10gPT0gMDoKKyAgICAgICAgaWYgZm9ybWF0X2RpY3RbJ3R5cGUnXSBpcyBOb25lIG9yIGZvcm1hdF9kaWN0Wyd0eXBlJ10gaW4gJ2dHbic6CisgICAgICAgICAgICBmb3JtYXRfZGljdFsncHJlY2lzaW9uJ10gPSAxCisKKyAgICAjIGRldGVybWluZSB0aG91c2FuZHMgc2VwYXJhdG9yLCBncm91cGluZywgYW5kIGRlY2ltYWwgc2VwYXJhdG9yLCBhbmQKKyAgICAjIGFkZCBhcHByb3ByaWF0ZSBlbnRyaWVzIHRvIGZvcm1hdF9kaWN0CisgICAgaWYgZm9ybWF0X2RpY3RbJ3R5cGUnXSA9PSAnbic6CisgICAgICAgICMgYXBhcnQgZnJvbSBzZXBhcmF0b3JzLCAnbicgYmVoYXZlcyBqdXN0IGxpa2UgJ2cnCisgICAgICAgIGZvcm1hdF9kaWN0Wyd0eXBlJ10gPSAnZycKKyAgICAgICAgaWYgX2xvY2FsZWNvbnYgaXMgTm9uZToKKyAgICAgICAgICAgIF9sb2NhbGVjb252ID0gX2xvY2FsZS5sb2NhbGVjb252KCkKKyAgICAgICAgaWYgZm9ybWF0X2RpY3RbJ3Rob3VzYW5kc19zZXAnXSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkV4cGxpY2l0IHRob3VzYW5kcyBzZXBhcmF0b3IgY29uZmxpY3RzIHdpdGggIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ24nIHR5cGUgaW4gZm9ybWF0IHNwZWNpZmllcjogIiArIGZvcm1hdF9zcGVjKQorICAgICAgICBmb3JtYXRfZGljdFsndGhvdXNhbmRzX3NlcCddID0gX2xvY2FsZWNvbnZbJ3Rob3VzYW5kc19zZXAnXQorICAgICAgICBmb3JtYXRfZGljdFsnZ3JvdXBpbmcnXSA9IF9sb2NhbGVjb252Wydncm91cGluZyddCisgICAgICAgIGZvcm1hdF9kaWN0WydkZWNpbWFsX3BvaW50J10gPSBfbG9jYWxlY29udlsnZGVjaW1hbF9wb2ludCddCisgICAgZWxzZToKKyAgICAgICAgaWYgZm9ybWF0X2RpY3RbJ3Rob3VzYW5kc19zZXAnXSBpcyBOb25lOgorICAgICAgICAgICAgZm9ybWF0X2RpY3RbJ3Rob3VzYW5kc19zZXAnXSA9ICcnCisgICAgICAgIGZvcm1hdF9kaWN0Wydncm91cGluZyddID0gWzMsIDBdCisgICAgICAgIGZvcm1hdF9kaWN0WydkZWNpbWFsX3BvaW50J10gPSAnLicKKworICAgIHJldHVybiBmb3JtYXRfZGljdAorCitkZWYgX2Zvcm1hdF9hbGlnbihzaWduLCBib2R5LCBzcGVjKToKKyAgICAiIiJHaXZlbiBhbiB1bnBhZGRlZCwgbm9uLWFsaWduZWQgbnVtZXJpYyBzdHJpbmcgJ2JvZHknIGFuZCBzaWduCisgICAgc3RyaW5nICdzaWduJywgYWRkIHBhZGRpbmcgYW5kIGFsaWdubWVudCBjb25mb3JtaW5nIHRvIHRoZSBnaXZlbgorICAgIGZvcm1hdCBzcGVjaWZpZXIgZGljdGlvbmFyeSAnc3BlYycgKGFzIHByb2R1Y2VkIGJ5CisgICAgcGFyc2VfZm9ybWF0X3NwZWNpZmllcikuCisKKyAgICAiIiIKKyAgICAjIGhvdyBtdWNoIGV4dHJhIHNwYWNlIGRvIHdlIGhhdmUgdG8gcGxheSB3aXRoPworICAgIG1pbmltdW13aWR0aCA9IHNwZWNbJ21pbmltdW13aWR0aCddCisgICAgZmlsbCA9IHNwZWNbJ2ZpbGwnXQorICAgIHBhZGRpbmcgPSBmaWxsKihtaW5pbXVtd2lkdGggLSBsZW4oc2lnbikgLSBsZW4oYm9keSkpCisKKyAgICBhbGlnbiA9IHNwZWNbJ2FsaWduJ10KKyAgICBpZiBhbGlnbiA9PSAnPCc6CisgICAgICAgIHJlc3VsdCA9IHNpZ24gKyBib2R5ICsgcGFkZGluZworICAgIGVsaWYgYWxpZ24gPT0gJz4nOgorICAgICAgICByZXN1bHQgPSBwYWRkaW5nICsgc2lnbiArIGJvZHkKKyAgICBlbGlmIGFsaWduID09ICc9JzoKKyAgICAgICAgcmVzdWx0ID0gc2lnbiArIHBhZGRpbmcgKyBib2R5CisgICAgZWxpZiBhbGlnbiA9PSAnXic6CisgICAgICAgIGhhbGYgPSBsZW4ocGFkZGluZykvLzIKKyAgICAgICAgcmVzdWx0ID0gcGFkZGluZ1s6aGFsZl0gKyBzaWduICsgYm9keSArIHBhZGRpbmdbaGFsZjpdCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVW5yZWNvZ25pc2VkIGFsaWdubWVudCBmaWVsZCcpCisKKyAgICByZXR1cm4gcmVzdWx0CisKK2RlZiBfZ3JvdXBfbGVuZ3Rocyhncm91cGluZyk6CisgICAgIiIiQ29udmVydCBhIGxvY2FsZWNvbnYtc3R5bGUgZ3JvdXBpbmcgaW50byBhIChwb3NzaWJseSBpbmZpbml0ZSkKKyAgICBpdGVyYWJsZSBvZiBpbnRlZ2VycyByZXByZXNlbnRpbmcgZ3JvdXAgbGVuZ3Rocy4KKworICAgICIiIgorICAgICMgVGhlIHJlc3VsdCBmcm9tIGxvY2FsZWNvbnYoKVsnZ3JvdXBpbmcnXSwgYW5kIHRoZSBpbnB1dCB0byB0aGlzCisgICAgIyBmdW5jdGlvbiwgc2hvdWxkIGJlIGEgbGlzdCBvZiBpbnRlZ2VycyBpbiBvbmUgb2YgdGhlCisgICAgIyBmb2xsb3dpbmcgdGhyZWUgZm9ybXM6CisgICAgIworICAgICMgICAoMSkgYW4gZW1wdHkgbGlzdCwgb3IKKyAgICAjICAgKDIpIG5vbmVtcHR5IGxpc3Qgb2YgcG9zaXRpdmUgaW50ZWdlcnMgKyBbMF0KKyAgICAjICAgKDMpIGxpc3Qgb2YgcG9zaXRpdmUgaW50ZWdlcnMgKyBbbG9jYWxlLkNIQVJfTUFYXSwgb3IKKworICAgIGZyb20gaXRlcnRvb2xzIGltcG9ydCBjaGFpbiwgcmVwZWF0CisgICAgaWYgbm90IGdyb3VwaW5nOgorICAgICAgICByZXR1cm4gW10KKyAgICBlbGlmIGdyb3VwaW5nWy0xXSA9PSAwIGFuZCBsZW4oZ3JvdXBpbmcpID49IDI6CisgICAgICAgIHJldHVybiBjaGFpbihncm91cGluZ1s6LTFdLCByZXBlYXQoZ3JvdXBpbmdbLTJdKSkKKyAgICBlbGlmIGdyb3VwaW5nWy0xXSA9PSBfbG9jYWxlLkNIQVJfTUFYOgorICAgICAgICByZXR1cm4gZ3JvdXBpbmdbOi0xXQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3VucmVjb2duaXNlZCBmb3JtYXQgZm9yIGdyb3VwaW5nJykKKworZGVmIF9pbnNlcnRfdGhvdXNhbmRzX3NlcChkaWdpdHMsIHNwZWMsIG1pbl93aWR0aD0xKToKKyAgICAiIiJJbnNlcnQgdGhvdXNhbmRzIHNlcGFyYXRvcnMgaW50byBhIGRpZ2l0IHN0cmluZy4KKworICAgIHNwZWMgaXMgYSBkaWN0aW9uYXJ5IHdob3NlIGtleXMgc2hvdWxkIGluY2x1ZGUgJ3Rob3VzYW5kc19zZXAnIGFuZAorICAgICdncm91cGluZyc7IHR5cGljYWxseSBpdCdzIHRoZSByZXN1bHQgb2YgcGFyc2luZyB0aGUgZm9ybWF0CisgICAgc3BlY2lmaWVyIHVzaW5nIF9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyLgorCisgICAgVGhlIG1pbl93aWR0aCBrZXl3b3JkIGFyZ3VtZW50IGdpdmVzIHRoZSBtaW5pbXVtIGxlbmd0aCBvZiB0aGUKKyAgICByZXN1bHQsIHdoaWNoIHdpbGwgYmUgcGFkZGVkIG9uIHRoZSBsZWZ0IHdpdGggemVyb3MgaWYgbmVjZXNzYXJ5LgorCisgICAgSWYgbmVjZXNzYXJ5LCB0aGUgemVybyBwYWRkaW5nIGFkZHMgYW4gZXh0cmEgJzAnIG9uIHRoZSBsZWZ0IHRvCisgICAgYXZvaWQgYSBsZWFkaW5nIHRob3VzYW5kcyBzZXBhcmF0b3IuICBGb3IgZXhhbXBsZSwgaW5zZXJ0aW5nCisgICAgY29tbWFzIGV2ZXJ5IHRocmVlIGRpZ2l0cyBpbiAnMTIzNDU2Jywgd2l0aCBtaW5fd2lkdGg9OCwgZ2l2ZXMKKyAgICAnMCwxMjMsNDU2JywgZXZlbiB0aG91Z2ggdGhhdCBoYXMgbGVuZ3RoIDkuCisKKyAgICAiIiIKKworICAgIHNlcCA9IHNwZWNbJ3Rob3VzYW5kc19zZXAnXQorICAgIGdyb3VwaW5nID0gc3BlY1snZ3JvdXBpbmcnXQorCisgICAgZ3JvdXBzID0gW10KKyAgICBmb3IgbCBpbiBfZ3JvdXBfbGVuZ3Rocyhncm91cGluZyk6CisgICAgICAgIGlmIGwgPD0gMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImdyb3VwIGxlbmd0aCBzaG91bGQgYmUgcG9zaXRpdmUiKQorICAgICAgICAjIG1heCguLi4sIDEpIGZvcmNlcyBhdCBsZWFzdCAxIGRpZ2l0IHRvIHRoZSBsZWZ0IG9mIGEgc2VwYXJhdG9yCisgICAgICAgIGwgPSBtaW4obWF4KGxlbihkaWdpdHMpLCBtaW5fd2lkdGgsIDEpLCBsKQorICAgICAgICBncm91cHMuYXBwZW5kKCcwJyoobCAtIGxlbihkaWdpdHMpKSArIGRpZ2l0c1stbDpdKQorICAgICAgICBkaWdpdHMgPSBkaWdpdHNbOi1sXQorICAgICAgICBtaW5fd2lkdGggLT0gbAorICAgICAgICBpZiBub3QgZGlnaXRzIGFuZCBtaW5fd2lkdGggPD0gMDoKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIG1pbl93aWR0aCAtPSBsZW4oc2VwKQorICAgIGVsc2U6CisgICAgICAgIGwgPSBtYXgobGVuKGRpZ2l0cyksIG1pbl93aWR0aCwgMSkKKyAgICAgICAgZ3JvdXBzLmFwcGVuZCgnMCcqKGwgLSBsZW4oZGlnaXRzKSkgKyBkaWdpdHNbLWw6XSkKKyAgICByZXR1cm4gc2VwLmpvaW4ocmV2ZXJzZWQoZ3JvdXBzKSkKKworZGVmIF9mb3JtYXRfc2lnbihpc19uZWdhdGl2ZSwgc3BlYyk6CisgICAgIiIiRGV0ZXJtaW5lIHNpZ24gY2hhcmFjdGVyLiIiIgorCisgICAgaWYgaXNfbmVnYXRpdmU6CisgICAgICAgIHJldHVybiAnLScKKyAgICBlbGlmIHNwZWNbJ3NpZ24nXSBpbiAnICsnOgorICAgICAgICByZXR1cm4gc3BlY1snc2lnbiddCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICcnCisKK2RlZiBfZm9ybWF0X251bWJlcihpc19uZWdhdGl2ZSwgaW50cGFydCwgZnJhY3BhcnQsIGV4cCwgc3BlYyk6CisgICAgIiIiRm9ybWF0IGEgbnVtYmVyLCBnaXZlbiB0aGUgZm9sbG93aW5nIGRhdGE6CisKKyAgICBpc19uZWdhdGl2ZTogdHJ1ZSBpZiB0aGUgbnVtYmVyIGlzIG5lZ2F0aXZlLCBlbHNlIGZhbHNlCisgICAgaW50cGFydDogc3RyaW5nIG9mIGRpZ2l0cyB0aGF0IG11c3QgYXBwZWFyIGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludAorICAgIGZyYWNwYXJ0OiBzdHJpbmcgb2YgZGlnaXRzIHRoYXQgbXVzdCBjb21lIGFmdGVyIHRoZSBwb2ludAorICAgIGV4cDogZXhwb25lbnQsIGFzIGFuIGludGVnZXIKKyAgICBzcGVjOiBkaWN0aW9uYXJ5IHJlc3VsdGluZyBmcm9tIHBhcnNpbmcgdGhlIGZvcm1hdCBzcGVjaWZpZXIKKworICAgIFRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgaW5mb3JtYXRpb24gaW4gc3BlYyB0bzoKKyAgICAgIGluc2VydCBzZXBhcmF0b3JzIChkZWNpbWFsIHNlcGFyYXRvciBhbmQgdGhvdXNhbmRzIHNlcGFyYXRvcnMpCisgICAgICBmb3JtYXQgdGhlIHNpZ24KKyAgICAgIGZvcm1hdCB0aGUgZXhwb25lbnQKKyAgICAgIGFkZCB0cmFpbGluZyAnJScgZm9yIHRoZSAnJScgdHlwZQorICAgICAgemVyby1wYWQgaWYgbmVjZXNzYXJ5CisgICAgICBmaWxsIGFuZCBhbGlnbiBpZiBuZWNlc3NhcnkKKyAgICAiIiIKKworICAgIHNpZ24gPSBfZm9ybWF0X3NpZ24oaXNfbmVnYXRpdmUsIHNwZWMpCisKKyAgICBpZiBmcmFjcGFydCBvciBzcGVjWydhbHQnXToKKyAgICAgICAgZnJhY3BhcnQgPSBzcGVjWydkZWNpbWFsX3BvaW50J10gKyBmcmFjcGFydAorCisgICAgaWYgZXhwICE9IDAgb3Igc3BlY1sndHlwZSddIGluICdlRSc6CisgICAgICAgIGVjaGFyID0geydFJzogJ0UnLCAnZSc6ICdlJywgJ0cnOiAnRScsICdnJzogJ2UnfVtzcGVjWyd0eXBlJ11dCisgICAgICAgIGZyYWNwYXJ0ICs9ICJ7MH17MTorfSIuZm9ybWF0KGVjaGFyLCBleHApCisgICAgaWYgc3BlY1sndHlwZSddID09ICclJzoKKyAgICAgICAgZnJhY3BhcnQgKz0gJyUnCisKKyAgICBpZiBzcGVjWyd6ZXJvcGFkJ106CisgICAgICAgIG1pbl93aWR0aCA9IHNwZWNbJ21pbmltdW13aWR0aCddIC0gbGVuKGZyYWNwYXJ0KSAtIGxlbihzaWduKQorICAgIGVsc2U6CisgICAgICAgIG1pbl93aWR0aCA9IDAKKyAgICBpbnRwYXJ0ID0gX2luc2VydF90aG91c2FuZHNfc2VwKGludHBhcnQsIHNwZWMsIG1pbl93aWR0aCkKKworICAgIHJldHVybiBfZm9ybWF0X2FsaWduKHNpZ24sIGludHBhcnQrZnJhY3BhcnQsIHNwZWMpCisKKworIyMjIyMgVXNlZnVsIENvbnN0YW50cyAoaW50ZXJuYWwgdXNlIG9ubHkpICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgUmV1c2FibGUgZGVmYXVsdHMKK19JbmZpbml0eSA9IERlY2ltYWwoJ0luZicpCitfTmVnYXRpdmVJbmZpbml0eSA9IERlY2ltYWwoJy1JbmYnKQorX05hTiA9IERlY2ltYWwoJ05hTicpCitfWmVybyA9IERlY2ltYWwoMCkKK19PbmUgPSBEZWNpbWFsKDEpCitfTmVnYXRpdmVPbmUgPSBEZWNpbWFsKC0xKQorCisjIF9TaWduZWRJbmZpbml0eVtzaWduXSBpcyBpbmZpbml0eSB3LyB0aGF0IHNpZ24KK19TaWduZWRJbmZpbml0eSA9IChfSW5maW5pdHksIF9OZWdhdGl2ZUluZmluaXR5KQorCisjIENvbnN0YW50cyByZWxhdGVkIHRvIHRoZSBoYXNoIGltcGxlbWVudGF0aW9uOyAgaGFzaCh4KSBpcyBiYXNlZAorIyBvbiB0aGUgcmVkdWN0aW9uIG9mIHggbW9kdWxvIF9QeUhBU0hfTU9EVUxVUworX1B5SEFTSF9NT0RVTFVTID0gc3lzLmhhc2hfaW5mby5tb2R1bHVzCisjIGhhc2ggdmFsdWVzIHRvIHVzZSBmb3IgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGluZmluaXRpZXMsIGFuZCBuYW5zCitfUHlIQVNIX0lORiA9IHN5cy5oYXNoX2luZm8uaW5mCitfUHlIQVNIX05BTiA9IHN5cy5oYXNoX2luZm8ubmFuCisKKyMgX1B5SEFTSF8xMElOViBpcyB0aGUgaW52ZXJzZSBvZiAxMCBtb2R1bG8gdGhlIHByaW1lIF9QeUhBU0hfTU9EVUxVUworX1B5SEFTSF8xMElOViA9IHBvdygxMCwgX1B5SEFTSF9NT0RVTFVTIC0gMiwgX1B5SEFTSF9NT0RVTFVTKQorZGVsIHN5cwpkaWZmIC0tZ2l0IGEvTGliL19weWlvLnB5IGIvTGliL19weWlvLnB5CmluZGV4IGYxZTNhNzkuLjM3MTU3ZDUgMTAwNjQ0Ci0tLSBhL0xpYi9fcHlpby5weQorKysgYi9MaWIvX3B5aW8ucHkKQEAgLTYsMTEgKzYsMTggQEAKIGltcG9ydCBhYmMKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBlcnJubworaW1wb3J0IGFycmF5CitpbXBvcnQgc3RhdAoraW1wb3J0IHN5cwogIyBJbXBvcnQgX3RocmVhZCBpbnN0ZWFkIG9mIHRocmVhZGluZyB0byByZWR1Y2Ugc3RhcnR1cCBjb3N0CiB0cnk6CiAgICAgZnJvbSBfdGhyZWFkIGltcG9ydCBhbGxvY2F0ZV9sb2NrIGFzIExvY2sKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBmcm9tIF9kdW1teV90aHJlYWQgaW1wb3J0IGFsbG9jYXRlX2xvY2sgYXMgTG9jaworaWYgc3lzLnBsYXRmb3JtIGluIHsnd2luMzInLCAnY3lnd2luJ306CisgICAgZnJvbSBtc3ZjcnQgaW1wb3J0IHNldG1vZGUgYXMgX3NldG1vZGUKK2Vsc2U6CisgICAgX3NldG1vZGUgPSBOb25lCiAKIGltcG9ydCBpbwogZnJvbSBpbyBpbXBvcnQgKF9fYWxsX18sIFNFRUtfU0VULCBTRUVLX0NVUiwgU0VFS19FTkQpCkBAIC0yNTYsNyArMjYzLDcgQEAKICAgICBUcmljayBzbyB0aGF0IG9wZW4gd29uJ3QgYmVjb21lIGEgYm91bmQgbWV0aG9kIHdoZW4gc3RvcmVkCiAgICAgYXMgYSBjbGFzcyB2YXJpYWJsZSAoYXMgZGJtLmR1bWIgZG9lcykuCiAKLSAgICBTZWUgaW5pdHN0ZGlvKCkgaW4gUHl0aG9uL3B5dGhvbnJ1bi5jLgorICAgIFNlZSBpbml0c3RkaW8oKSBpbiBQeXRob24vcHlsaWZlY3ljbGUuYy4KICAgICAiIiIKICAgICBfX2RvY19fID0gRG9jRGVzY3JpcHRvcigpCiAKQEAgLTY2MiwxNiArNjY5LDMzIEBACiAgICAgICAgIFJhaXNlcyBCbG9ja2luZ0lPRXJyb3IgaWYgdGhlIHVuZGVybHlpbmcgcmF3IHN0cmVhbSBoYXMgbm8KICAgICAgICAgZGF0YSBhdCB0aGUgbW9tZW50LgogICAgICAgICAiIiIKLSAgICAgICAgIyBYWFggVGhpcyBvdWdodCB0byB3b3JrIHdpdGggYW55dGhpbmcgdGhhdCBzdXBwb3J0cyB0aGUgYnVmZmVyIEFQSQotICAgICAgICBkYXRhID0gc2VsZi5yZWFkKGxlbihiKSkKKworICAgICAgICByZXR1cm4gc2VsZi5fcmVhZGludG8oYiwgcmVhZDE9RmFsc2UpCisKKyAgICBkZWYgcmVhZGludG8xKHNlbGYsIGIpOgorICAgICAgICAiIiJSZWFkIHVwIHRvIGxlbihiKSBieXRlcyBpbnRvICpiKiwgdXNpbmcgYXQgbW9zdCBvbmUgc3lzdGVtIGNhbGwKKworICAgICAgICBSZXR1cm5zIGFuIGludCByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBieXRlcyByZWFkICgwIGZvciBFT0YpLgorCisgICAgICAgIFJhaXNlcyBCbG9ja2luZ0lPRXJyb3IgaWYgdGhlIHVuZGVybHlpbmcgcmF3IHN0cmVhbSBoYXMgbm8KKyAgICAgICAgZGF0YSBhdCB0aGUgbW9tZW50LgorICAgICAgICAiIiIKKworICAgICAgICByZXR1cm4gc2VsZi5fcmVhZGludG8oYiwgcmVhZDE9VHJ1ZSkKKworICAgIGRlZiBfcmVhZGludG8oc2VsZiwgYiwgcmVhZDEpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShiLCBtZW1vcnl2aWV3KToKKyAgICAgICAgICAgIGIgPSBtZW1vcnl2aWV3KGIpCisgICAgICAgIGIgPSBiLmNhc3QoJ0InKQorCisgICAgICAgIGlmIHJlYWQxOgorICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVhZDEobGVuKGIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVhZChsZW4oYikpCiAgICAgICAgIG4gPSBsZW4oZGF0YSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgYls6bl0gPSBkYXRhCi0gICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgaW1wb3J0IGFycmF5Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShiLCBhcnJheS5hcnJheSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXJyCi0gICAgICAgICAgICBiWzpuXSA9IGFycmF5LmFycmF5KCdiJywgZGF0YSkKKworICAgICAgICBiWzpuXSA9IGRhdGEKKwogICAgICAgICByZXR1cm4gbgogCiAgICAgZGVmIHdyaXRlKHNlbGYsIGIpOgpAQCAtNzkwLDEzICs4MTQsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18pKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBjbHNuYW1lID0gc2VsZi5fX2NsYXNzX18uX19uYW1lX18KKyAgICAgICAgbW9kbmFtZSA9IHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18KKyAgICAgICAgY2xzbmFtZSA9IHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBuYW1lID0gc2VsZi5uYW1lCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICByZXR1cm4gIjxfcHlpby57MH0+Ii5mb3JtYXQoY2xzbmFtZSkKKyAgICAgICAgICAgIHJldHVybiAiPHt9Lnt9PiIuZm9ybWF0KG1vZG5hbWUsIGNsc25hbWUpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gIjxfcHlpby57MH0gbmFtZT17MSFyfT4iLmZvcm1hdChjbHNuYW1lLCBuYW1lKQorICAgICAgICAgICAgcmV0dXJuICI8e30ue30gbmFtZT17IXJ9PiIuZm9ybWF0KG1vZG5hbWUsIGNsc25hbWUsIG5hbWUpCiAKICAgICAjIyMgTG93ZXItbGV2ZWwgQVBJcyAjIyMKIApAQCAtOTkzLDEwICsxMDE4LDcgQEAKICAgICAgICAgICAgIGN1cnJlbnRfc2l6ZSA9IDAKICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgIyBSZWFkIHVudGlsIEVPRiBvciB1bnRpbCByZWFkKCkgd291bGQgYmxvY2suCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBjaHVuayA9IHNlbGYucmF3LnJlYWQoKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5yYXcucmVhZCgpCiAgICAgICAgICAgICAgICAgaWYgY2h1bmsgaW4gZW1wdHlfdmFsdWVzOgogICAgICAgICAgICAgICAgICAgICBub2RhdGFfdmFsID0gY2h1bmsKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTEwMTUsMTAgKzEwMzcsNyBAQAogICAgICAgICBjaHVua3MgPSBbYnVmW3BvczpdXQogICAgICAgICB3YW50ZWQgPSBtYXgoc2VsZi5idWZmZXJfc2l6ZSwgbikKICAgICAgICAgd2hpbGUgYXZhaWwgPCBuOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5yYXcucmVhZCh3YW50ZWQpCi0gICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKLSAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJhdy5yZWFkKHdhbnRlZCkKICAgICAgICAgICAgIGlmIGNodW5rIGluIGVtcHR5X3ZhbHVlczoKICAgICAgICAgICAgICAgICBub2RhdGFfdmFsID0gY2h1bmsKICAgICAgICAgICAgICAgICBicmVhawpAQCAtMTA0NywxMiArMTA2Niw3IEBACiAgICAgICAgIGhhdmUgPSBsZW4oc2VsZi5fcmVhZF9idWYpIC0gc2VsZi5fcmVhZF9wb3MKICAgICAgICAgaWYgaGF2ZSA8IHdhbnQgb3IgaGF2ZSA8PSAwOgogICAgICAgICAgICAgdG9fcmVhZCA9IHNlbGYuYnVmZmVyX3NpemUgLSBoYXZlCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IHNlbGYucmF3LnJlYWQodG9fcmVhZCkKLSAgICAgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgY3VycmVudCA9IHNlbGYucmF3LnJlYWQodG9fcmVhZCkKICAgICAgICAgICAgIGlmIGN1cnJlbnQ6CiAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9idWYgPSBzZWxmLl9yZWFkX2J1ZltzZWxmLl9yZWFkX3BvczpdICsgY3VycmVudAogICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfcG9zID0gMApAQCAtMTA3MSw2ICsxMDg1LDU4IEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF91bmxvY2tlZCgKICAgICAgICAgICAgICAgICBtaW4oc2l6ZSwgbGVuKHNlbGYuX3JlYWRfYnVmKSAtIHNlbGYuX3JlYWRfcG9zKSkKIAorICAgICMgSW1wbGVtZW50aW5nIHJlYWRpbnRvKCkgYW5kIHJlYWRpbnRvMSgpIGlzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnkgKHdlCisgICAgIyBjb3VsZCByZWx5IG9uIHRoZSBiYXNlIGNsYXNzIHRoYXQgcHJvdmlkZXMgYW4gaW1wbGVtZW50YXRpb24gaW4gdGVybXMgb2YKKyAgICAjIHJlYWQoKSBhbmQgcmVhZDEoKSkuIFdlIGRvIGl0IGFueXdheSB0byBrZWVwIHRoZSBfcHlpbyBpbXBsZW1lbnRhdGlvbgorICAgICMgc2ltaWxhciB0byB0aGUgaW8gaW1wbGVtZW50YXRpb24gKHdoaWNoIGltcGxlbWVudHMgdGhlIG1ldGhvZHMgZm9yCisgICAgIyBwZXJmb3JtYW5jZSByZWFzb25zKS4KKyAgICBkZWYgX3JlYWRpbnRvKHNlbGYsIGJ1ZiwgcmVhZDEpOgorICAgICAgICAiIiJSZWFkIGRhdGEgaW50byAqYnVmKiB3aXRoIGF0IG1vc3Qgb25lIHN5c3RlbSBjYWxsLiIiIgorCisgICAgICAgIGlmIGxlbihidWYpID09IDA6CisgICAgICAgICAgICByZXR1cm4gMAorCisgICAgICAgICMgTmVlZCB0byBjcmVhdGUgYSBtZW1vcnl2aWV3IG9iamVjdCBvZiB0eXBlICdiJywgb3RoZXJ3aXNlCisgICAgICAgICMgd2UgbWF5IG5vdCBiZSBhYmxlIHRvIGFzc2lnbiBieXRlcyB0byBpdCwgYW5kIHNsaWNpbmcgaXQKKyAgICAgICAgIyB3b3VsZCBjcmVhdGUgYSBuZXcgb2JqZWN0LgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShidWYsIG1lbW9yeXZpZXcpOgorICAgICAgICAgICAgYnVmID0gbWVtb3J5dmlldyhidWYpCisgICAgICAgIGJ1ZiA9IGJ1Zi5jYXN0KCdCJykKKworICAgICAgICB3cml0dGVuID0gMAorICAgICAgICB3aXRoIHNlbGYuX3JlYWRfbG9jazoKKyAgICAgICAgICAgIHdoaWxlIHdyaXR0ZW4gPCBsZW4oYnVmKToKKworICAgICAgICAgICAgICAgICMgRmlyc3QgdHJ5IHRvIHJlYWQgZnJvbSBpbnRlcm5hbCBidWZmZXIKKyAgICAgICAgICAgICAgICBhdmFpbCA9IG1pbihsZW4oc2VsZi5fcmVhZF9idWYpIC0gc2VsZi5fcmVhZF9wb3MsIGxlbihidWYpKQorICAgICAgICAgICAgICAgIGlmIGF2YWlsOgorICAgICAgICAgICAgICAgICAgICBidWZbd3JpdHRlbjp3cml0dGVuK2F2YWlsXSA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfYnVmW3NlbGYuX3JlYWRfcG9zOnNlbGYuX3JlYWRfcG9zK2F2YWlsXQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX3BvcyArPSBhdmFpbAorICAgICAgICAgICAgICAgICAgICB3cml0dGVuICs9IGF2YWlsCisgICAgICAgICAgICAgICAgICAgIGlmIHdyaXR0ZW4gPT0gbGVuKGJ1Zik6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAgICAgIyBJZiByZW1haW5pbmcgc3BhY2UgaW4gY2FsbGVycyBidWZmZXIgaXMgbGFyZ2VyIHRoYW4KKyAgICAgICAgICAgICAgICAjIGludGVybmFsIGJ1ZmZlciwgcmVhZCBkaXJlY3RseSBpbnRvIGNhbGxlcnMgYnVmZmVyCisgICAgICAgICAgICAgICAgaWYgbGVuKGJ1ZikgLSB3cml0dGVuID4gc2VsZi5idWZmZXJfc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgbiA9IHNlbGYucmF3LnJlYWRpbnRvKGJ1Zlt3cml0dGVuOl0pCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBuOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgIyBlb2YKKyAgICAgICAgICAgICAgICAgICAgd3JpdHRlbiArPSBuCisKKyAgICAgICAgICAgICAgICAjIE90aGVyd2lzZSByZWZpbGwgaW50ZXJuYWwgYnVmZmVyIC0gdW5sZXNzIHdlJ3JlCisgICAgICAgICAgICAgICAgIyBpbiByZWFkMSBtb2RlIGFuZCBhbHJlYWR5IGdvdCBzb21lIGRhdGEKKyAgICAgICAgICAgICAgICBlbGlmIG5vdCAocmVhZDEgYW5kIHdyaXR0ZW4pOgorICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcGVla191bmxvY2tlZCgxKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrICMgZW9mCisKKyAgICAgICAgICAgICAgICAjIEluIHJlYWRpbnRvMSBtb2RlLCByZXR1cm4gYXMgc29vbiBhcyB3ZSBoYXZlIHNvbWUgZGF0YQorICAgICAgICAgICAgICAgIGlmIHJlYWQxIGFuZCB3cml0dGVuOgorICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIHJldHVybiB3cml0dGVuCisKICAgICBkZWYgdGVsbChzZWxmKToKICAgICAgICAgcmV0dXJuIF9CdWZmZXJlZElPTWl4aW4udGVsbChzZWxmKSAtIGxlbihzZWxmLl9yZWFkX2J1ZikgKyBzZWxmLl9yZWFkX3BvcwogCkBAIC0xMTQ5LDggKzEyMTUsNiBAQAogICAgICAgICB3aGlsZSBzZWxmLl93cml0ZV9idWY6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgbiA9IHNlbGYucmF3LndyaXRlKHNlbGYuX3dyaXRlX2J1ZikKLSAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBleGNlcHQgQmxvY2tpbmdJT0Vycm9yOgogICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigic2VsZi5yYXcgc2hvdWxkIGltcGxlbWVudCBSYXdJT0Jhc2U6IGl0ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNob3VsZCBub3QgcmFpc2UgQmxvY2tpbmdJT0Vycm9yIikKQEAgLTEyMjAsNiArMTI4NCw5IEBACiAgICAgZGVmIHJlYWQxKHNlbGYsIHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5yZWFkZXIucmVhZDEoc2l6ZSkKIAorICAgIGRlZiByZWFkaW50bzEoc2VsZiwgYik6CisgICAgICAgIHJldHVybiBzZWxmLnJlYWRlci5yZWFkaW50bzEoYikKKwogICAgIGRlZiByZWFkYWJsZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYucmVhZGVyLnJlYWRhYmxlKCkKIApAQCAtMTMwNCw2ICsxMzcxLDEwIEBACiAgICAgICAgIHNlbGYuZmx1c2goKQogICAgICAgICByZXR1cm4gQnVmZmVyZWRSZWFkZXIucmVhZDEoc2VsZiwgc2l6ZSkKIAorICAgIGRlZiByZWFkaW50bzEoc2VsZiwgYik6CisgICAgICAgIHNlbGYuZmx1c2goKQorICAgICAgICByZXR1cm4gQnVmZmVyZWRSZWFkZXIucmVhZGludG8xKHNlbGYsIGIpCisKICAgICBkZWYgd3JpdGUoc2VsZiwgYik6CiAgICAgICAgIGlmIHNlbGYuX3JlYWRfYnVmOgogICAgICAgICAgICAgIyBVbmRvIHJlYWRhaGVhZApAQCAtMTMxMyw2ICsxMzg0LDM0NSBAQAogICAgICAgICByZXR1cm4gQnVmZmVyZWRXcml0ZXIud3JpdGUoc2VsZiwgYikKIAogCitjbGFzcyBGaWxlSU8oUmF3SU9CYXNlKToKKyAgICBfZmQgPSAtMQorICAgIF9jcmVhdGVkID0gRmFsc2UKKyAgICBfcmVhZGFibGUgPSBGYWxzZQorICAgIF93cml0YWJsZSA9IEZhbHNlCisgICAgX2FwcGVuZGluZyA9IEZhbHNlCisgICAgX3NlZWthYmxlID0gTm9uZQorICAgIF9jbG9zZWZkID0gVHJ1ZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUsIG1vZGU9J3InLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKToKKyAgICAgICAgIiIiT3BlbiBhIGZpbGUuICBUaGUgbW9kZSBjYW4gYmUgJ3InIChkZWZhdWx0KSwgJ3cnLCAneCcgb3IgJ2EnIGZvciByZWFkaW5nLAorICAgICAgICB3cml0aW5nLCBleGNsdXNpdmUgY3JlYXRpb24gb3IgYXBwZW5kaW5nLiAgVGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0CisgICAgICAgIGRvZXNuJ3QgZXhpc3Qgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOyBpdCB3aWxsIGJlIHRydW5jYXRlZAorICAgICAgICB3aGVuIG9wZW5lZCBmb3Igd3JpdGluZy4gIEEgRmlsZUV4aXN0c0Vycm9yIHdpbGwgYmUgcmFpc2VkIGlmIGl0IGFscmVhZHkKKyAgICAgICAgZXhpc3RzIHdoZW4gb3BlbmVkIGZvciBjcmVhdGluZy4gT3BlbmluZyBhIGZpbGUgZm9yIGNyZWF0aW5nIGltcGxpZXMKKyAgICAgICAgd3JpdGluZyBzbyB0aGlzIG1vZGUgYmVoYXZlcyBpbiBhIHNpbWlsYXIgd2F5IHRvICd3Jy4gQWRkIGEgJysnIHRvIHRoZSBtb2RlCisgICAgICAgIHRvIGFsbG93IHNpbXVsdGFuZW91cyByZWFkaW5nIGFuZCB3cml0aW5nLiBBIGN1c3RvbSBvcGVuZXIgY2FuIGJlIHVzZWQgYnkKKyAgICAgICAgcGFzc2luZyBhIGNhbGxhYmxlIGFzICpvcGVuZXIqLiBUaGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlCisgICAgICAgIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcgb3BlbmVyIHdpdGggKCpuYW1lKiwgKmZsYWdzKikuCisgICAgICAgICpvcGVuZXIqIG11c3QgcmV0dXJuIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nIG9zLm9wZW4gYXMgKm9wZW5lcioKKyAgICAgICAgcmVzdWx0cyBpbiBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gcGFzc2luZyBOb25lKS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2ZkID49IDA6CisgICAgICAgICAgICAjIEhhdmUgdG8gY2xvc2UgdGhlIGV4aXN0aW5nIGZpbGUgZmlyc3QuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2VmZDoKKyAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2Uoc2VsZi5fZmQpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHNlbGYuX2ZkID0gLTEKKworICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGUsIGZsb2F0KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignaW50ZWdlciBhcmd1bWVudCBleHBlY3RlZCwgZ290IGZsb2F0JykKKyAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlLCBpbnQpOgorICAgICAgICAgICAgZmQgPSBmaWxlCisgICAgICAgICAgICBpZiBmZCA8IDA6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbmVnYXRpdmUgZmlsZSBkZXNjcmlwdG9yJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZkID0gLTEKKworICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShtb2RlLCBzdHIpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdpbnZhbGlkIG1vZGU6ICVzJyAlIChtb2RlLCkpCisgICAgICAgIGlmIG5vdCBzZXQobW9kZSkgPD0gc2V0KCd4cndhYisnKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ludmFsaWQgbW9kZTogJXMnICUgKG1vZGUsKSkKKyAgICAgICAgaWYgc3VtKGMgaW4gJ3J3YXgnIGZvciBjIGluIG1vZGUpICE9IDEgb3IgbW9kZS5jb3VudCgnKycpID4gMToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ011c3QgaGF2ZSBleGFjdGx5IG9uZSBvZiBjcmVhdGUvcmVhZC93cml0ZS9hcHBlbmQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9kZSBhbmQgYXQgbW9zdCBvbmUgcGx1cycpCisKKyAgICAgICAgaWYgJ3gnIGluIG1vZGU6CisgICAgICAgICAgICBzZWxmLl9jcmVhdGVkID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fd3JpdGFibGUgPSBUcnVlCisgICAgICAgICAgICBmbGFncyA9IG9zLk9fRVhDTCB8IG9zLk9fQ1JFQVQKKyAgICAgICAgZWxpZiAncicgaW4gbW9kZToKKyAgICAgICAgICAgIHNlbGYuX3JlYWRhYmxlID0gVHJ1ZQorICAgICAgICAgICAgZmxhZ3MgPSAwCisgICAgICAgIGVsaWYgJ3cnIGluIG1vZGU6CisgICAgICAgICAgICBzZWxmLl93cml0YWJsZSA9IFRydWUKKyAgICAgICAgICAgIGZsYWdzID0gb3MuT19DUkVBVCB8IG9zLk9fVFJVTkMKKyAgICAgICAgZWxpZiAnYScgaW4gbW9kZToKKyAgICAgICAgICAgIHNlbGYuX3dyaXRhYmxlID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fYXBwZW5kaW5nID0gVHJ1ZQorICAgICAgICAgICAgZmxhZ3MgPSBvcy5PX0FQUEVORCB8IG9zLk9fQ1JFQVQKKworICAgICAgICBpZiAnKycgaW4gbW9kZToKKyAgICAgICAgICAgIHNlbGYuX3JlYWRhYmxlID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fd3JpdGFibGUgPSBUcnVlCisKKyAgICAgICAgaWYgc2VsZi5fcmVhZGFibGUgYW5kIHNlbGYuX3dyaXRhYmxlOgorICAgICAgICAgICAgZmxhZ3MgfD0gb3MuT19SRFdSCisgICAgICAgIGVsaWYgc2VsZi5fcmVhZGFibGU6CisgICAgICAgICAgICBmbGFncyB8PSBvcy5PX1JET05MWQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmxhZ3MgfD0gb3MuT19XUk9OTFkKKworICAgICAgICBmbGFncyB8PSBnZXRhdHRyKG9zLCAnT19CSU5BUlknLCAwKQorCisgICAgICAgIG5vaW5oZXJpdF9mbGFnID0gKGdldGF0dHIob3MsICdPX05PSU5IRVJJVCcsIDApIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIob3MsICdPX0NMT0VYRUMnLCAwKSkKKyAgICAgICAgZmxhZ3MgfD0gbm9pbmhlcml0X2ZsYWcKKworICAgICAgICBvd25lZF9mZCA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgZmQgPCAwOgorICAgICAgICAgICAgICAgIGlmIG5vdCBjbG9zZWZkOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW5ub3QgdXNlIGNsb3NlZmQ9RmFsc2Ugd2l0aCBmaWxlIG5hbWUnKQorICAgICAgICAgICAgICAgIGlmIG9wZW5lciBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBmZCA9IG9zLm9wZW4oZmlsZSwgZmxhZ3MsIDBvNjY2KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGZkID0gb3BlbmVyKGZpbGUsIGZsYWdzKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmZCwgaW50KToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZXhwZWN0ZWQgaW50ZWdlciBmcm9tIG9wZW5lcicpCisgICAgICAgICAgICAgICAgICAgIGlmIGZkIDwgMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ05lZ2F0aXZlIGZpbGUgZGVzY3JpcHRvcicpCisgICAgICAgICAgICAgICAgb3duZWRfZmQgPSBmZAorICAgICAgICAgICAgICAgIGlmIG5vdCBub2luaGVyaXRfZmxhZzoKKyAgICAgICAgICAgICAgICAgICAgb3Muc2V0X2luaGVyaXRhYmxlKGZkLCBGYWxzZSkKKworICAgICAgICAgICAgc2VsZi5fY2xvc2VmZCA9IGNsb3NlZmQKKyAgICAgICAgICAgIGZkZnN0YXQgPSBvcy5mc3RhdChmZCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBzdGF0LlNfSVNESVIoZmRmc3RhdC5zdF9tb2RlKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSXNBRGlyZWN0b3J5RXJyb3IoZXJybm8uRUlTRElSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdHJlcnJvcihlcnJuby5FSVNESVIpLCBmaWxlKQorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICMgSWdub3JlIHRoZSBBdHRyaWJ1ZUVycm9yIGlmIHN0YXQuU19JU0RJUiBvciBlcnJuby5FSVNESVIKKyAgICAgICAgICAgICAgICAjIGRvbid0IGV4aXN0LgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHNlbGYuX2Jsa3NpemUgPSBnZXRhdHRyKGZkZnN0YXQsICdzdF9ibGtzaXplJywgMCkKKyAgICAgICAgICAgIGlmIHNlbGYuX2Jsa3NpemUgPD0gMToKKyAgICAgICAgICAgICAgICBzZWxmLl9ibGtzaXplID0gREVGQVVMVF9CVUZGRVJfU0laRQorCisgICAgICAgICAgICBpZiBfc2V0bW9kZToKKyAgICAgICAgICAgICAgICAjIGRvbid0IHRyYW5zbGF0ZSBuZXdsaW5lcyAoXHJcbiA8PT4gXG4pCisgICAgICAgICAgICAgICAgX3NldG1vZGUoZmQsIG9zLk9fQklOQVJZKQorCisgICAgICAgICAgICBzZWxmLm5hbWUgPSBmaWxlCisgICAgICAgICAgICBpZiBzZWxmLl9hcHBlbmRpbmc6CisgICAgICAgICAgICAgICAgIyBGb3IgY29uc2lzdGVudCBiZWhhdmlvdXIsIHdlIGV4cGxpY2l0bHkgc2VlayB0byB0aGUKKyAgICAgICAgICAgICAgICAjIGVuZCBvZiBmaWxlIChvdGhlcndpc2UsIGl0IG1pZ2h0IGJlIGRvbmUgb25seSBvbiB0aGUKKyAgICAgICAgICAgICAgICAjIGZpcnN0IHdyaXRlKCkpLgorICAgICAgICAgICAgICAgIG9zLmxzZWVrKGZkLCAwLCBTRUVLX0VORCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgaWYgb3duZWRfZmQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgb3MuY2xvc2Uob3duZWRfZmQpCisgICAgICAgICAgICByYWlzZQorICAgICAgICBzZWxmLl9mZCA9IGZkCisKKyAgICBkZWYgX19kZWxfXyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fZmQgPj0gMCBhbmQgc2VsZi5fY2xvc2VmZCBhbmQgbm90IHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCd1bmNsb3NlZCBmaWxlICVyJyAlIChzZWxmLCksIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD0yKQorICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisKKyAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbm5vdCBzZXJpYWxpemUgJyVzJyBvYmplY3QiLCBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgY2xhc3NfbmFtZSA9ICclcy4lcycgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fKQorICAgICAgICBpZiBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHJldHVybiAnPCVzIFtjbG9zZWRdPicgJSBjbGFzc19uYW1lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuICgnPCVzIGZkPSVkIG1vZGU9JXIgY2xvc2VmZD0lcj4nICUKKyAgICAgICAgICAgICAgICAgICAgKGNsYXNzX25hbWUsIHNlbGYuX2ZkLCBzZWxmLm1vZGUsIHNlbGYuX2Nsb3NlZmQpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICgnPCVzIG5hbWU9JXIgbW9kZT0lciBjbG9zZWZkPSVyPicgJQorICAgICAgICAgICAgICAgICAgICAoY2xhc3NfbmFtZSwgbmFtZSwgc2VsZi5tb2RlLCBzZWxmLl9jbG9zZWZkKSkKKworICAgIGRlZiBfY2hlY2tSZWFkYWJsZShzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX3JlYWRhYmxlOgorICAgICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRPcGVyYXRpb24oJ0ZpbGUgbm90IG9wZW4gZm9yIHJlYWRpbmcnKQorCisgICAgZGVmIF9jaGVja1dyaXRhYmxlKHNlbGYsIG1zZz1Ob25lKToKKyAgICAgICAgaWYgbm90IHNlbGYuX3dyaXRhYmxlOgorICAgICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRPcGVyYXRpb24oJ0ZpbGUgbm90IG9wZW4gZm9yIHdyaXRpbmcnKQorCisgICAgZGVmIHJlYWQoc2VsZiwgc2l6ZT1Ob25lKToKKyAgICAgICAgIiIiUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGJ5dGVzLgorCisgICAgICAgIE9ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsLCBzbyBsZXNzIGRhdGEgbWF5IGJlIHJldHVybmVkIHRoYW4gcmVxdWVzdGVkCisgICAgICAgIEluIG5vbi1ibG9ja2luZyBtb2RlLCByZXR1cm5zIE5vbmUgaWYgbm8gZGF0YSBpcyBhdmFpbGFibGUuCisgICAgICAgIFJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja1JlYWRhYmxlKCkKKyAgICAgICAgaWYgc2l6ZSBpcyBOb25lIG9yIHNpemUgPCAwOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVhZGFsbCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBvcy5yZWFkKHNlbGYuX2ZkLCBzaXplKQorICAgICAgICBleGNlcHQgQmxvY2tpbmdJT0Vycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiByZWFkYWxsKHNlbGYpOgorICAgICAgICAiIiJSZWFkIGFsbCBkYXRhIGZyb20gdGhlIGZpbGUsIHJldHVybmVkIGFzIGJ5dGVzLgorCisgICAgICAgIEluIG5vbi1ibG9ja2luZyBtb2RlLCByZXR1cm5zIGFzIG11Y2ggYXMgaXMgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLAorICAgICAgICBvciBOb25lIGlmIG5vIGRhdGEgaXMgYXZhaWxhYmxlLiAgUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrUmVhZGFibGUoKQorICAgICAgICBidWZzaXplID0gREVGQVVMVF9CVUZGRVJfU0laRQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3MgPSBvcy5sc2VlayhzZWxmLl9mZCwgMCwgU0VFS19DVVIpCisgICAgICAgICAgICBlbmQgPSBvcy5mc3RhdChzZWxmLl9mZCkuc3Rfc2l6ZQorICAgICAgICAgICAgaWYgZW5kID49IHBvczoKKyAgICAgICAgICAgICAgICBidWZzaXplID0gZW5kIC0gcG9zICsgMQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICByZXN1bHQgPSBieXRlYXJyYXkoKQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgaWYgbGVuKHJlc3VsdCkgPj0gYnVmc2l6ZToKKyAgICAgICAgICAgICAgICBidWZzaXplID0gbGVuKHJlc3VsdCkKKyAgICAgICAgICAgICAgICBidWZzaXplICs9IG1heChidWZzaXplLCBERUZBVUxUX0JVRkZFUl9TSVpFKQorICAgICAgICAgICAgbiA9IGJ1ZnNpemUgLSBsZW4ocmVzdWx0KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGNodW5rID0gb3MucmVhZChzZWxmLl9mZCwgbikKKyAgICAgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CisgICAgICAgICAgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBpZiBub3QgY2h1bms6ICMgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBmaWxlCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHJlc3VsdCArPSBjaHVuaworCisgICAgICAgIHJldHVybiBieXRlcyhyZXN1bHQpCisKKyAgICBkZWYgcmVhZGludG8oc2VsZiwgYik6CisgICAgICAgICIiIlNhbWUgYXMgUmF3SU9CYXNlLnJlYWRpbnRvKCkuIiIiCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGIpLmNhc3QoJ0InKQorICAgICAgICBkYXRhID0gc2VsZi5yZWFkKGxlbihtKSkKKyAgICAgICAgbiA9IGxlbihkYXRhKQorICAgICAgICBtWzpuXSA9IGRhdGEKKyAgICAgICAgcmV0dXJuIG4KKworICAgIGRlZiB3cml0ZShzZWxmLCBiKToKKyAgICAgICAgIiIiV3JpdGUgYnl0ZXMgYiB0byBmaWxlLCByZXR1cm4gbnVtYmVyIHdyaXR0ZW4uCisKKyAgICAgICAgT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwsIHNvIG5vdCBhbGwgb2YgdGhlIGRhdGEgbWF5IGJlIHdyaXR0ZW4uCisgICAgICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiBpcyByZXR1cm5lZC4gIEluIG5vbi1ibG9ja2luZyBtb2RlLAorICAgICAgICByZXR1cm5zIE5vbmUgaWYgdGhlIHdyaXRlIHdvdWxkIGJsb2NrLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja1dyaXRhYmxlKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIG9zLndyaXRlKHNlbGYuX2ZkLCBiKQorICAgICAgICBleGNlcHQgQmxvY2tpbmdJT0Vycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBzZWVrKHNlbGYsIHBvcywgd2hlbmNlPVNFRUtfU0VUKToKKyAgICAgICAgIiIiTW92ZSB0byBuZXcgZmlsZSBwb3NpdGlvbi4KKworICAgICAgICBBcmd1bWVudCBvZmZzZXQgaXMgYSBieXRlIGNvdW50LiAgT3B0aW9uYWwgYXJndW1lbnQgd2hlbmNlIGRlZmF1bHRzIHRvCisgICAgICAgIFNFRUtfU0VUIG9yIDAgKG9mZnNldCBmcm9tIHN0YXJ0IG9mIGZpbGUsIG9mZnNldCBzaG91bGQgYmUgPj0gMCk7IG90aGVyIHZhbHVlcworICAgICAgICBhcmUgU0VFS19DVVIgb3IgMSAobW92ZSByZWxhdGl2ZSB0byBjdXJyZW50IHBvc2l0aW9uLCBwb3NpdGl2ZSBvciBuZWdhdGl2ZSksCisgICAgICAgIGFuZCBTRUVLX0VORCBvciAyIChtb3ZlIHJlbGF0aXZlIHRvIGVuZCBvZiBmaWxlLCB1c3VhbGx5IG5lZ2F0aXZlLCBhbHRob3VnaAorICAgICAgICBtYW55IHBsYXRmb3JtcyBhbGxvdyBzZWVraW5nIGJleW9uZCB0aGUgZW5kIG9mIGEgZmlsZSkuCisKKyAgICAgICAgTm90ZSB0aGF0IG5vdCBhbGwgZmlsZSBvYmplY3RzIGFyZSBzZWVrYWJsZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGlzaW5zdGFuY2UocG9zLCBmbG9hdCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2FuIGludGVnZXIgaXMgcmVxdWlyZWQnKQorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIHJldHVybiBvcy5sc2VlayhzZWxmLl9mZCwgcG9zLCB3aGVuY2UpCisKKyAgICBkZWYgdGVsbChzZWxmKToKKyAgICAgICAgIiIidGVsbCgpIC0+IGludC4gIEN1cnJlbnQgZmlsZSBwb3NpdGlvbi4KKworICAgICAgICBDYW4gcmFpc2UgT1NFcnJvciBmb3Igbm9uIHNlZWthYmxlIGZpbGVzLiIiIgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIHJldHVybiBvcy5sc2VlayhzZWxmLl9mZCwgMCwgU0VFS19DVVIpCisKKyAgICBkZWYgdHJ1bmNhdGUoc2VsZiwgc2l6ZT1Ob25lKToKKyAgICAgICAgIiIiVHJ1bmNhdGUgdGhlIGZpbGUgdG8gYXQgbW9zdCBzaXplIGJ5dGVzLgorCisgICAgICAgIFNpemUgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYXMgcmV0dXJuZWQgYnkgdGVsbCgpLgorICAgICAgICBUaGUgY3VycmVudCBmaWxlIHBvc2l0aW9uIGlzIGNoYW5nZWQgdG8gdGhlIHZhbHVlIG9mIHNpemUuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrV3JpdGFibGUoKQorICAgICAgICBpZiBzaXplIGlzIE5vbmU6CisgICAgICAgICAgICBzaXplID0gc2VsZi50ZWxsKCkKKyAgICAgICAgb3MuZnRydW5jYXRlKHNlbGYuX2ZkLCBzaXplKQorICAgICAgICByZXR1cm4gc2l6ZQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAiIiJDbG9zZSB0aGUgZmlsZS4KKworICAgICAgICBBIGNsb3NlZCBmaWxlIGNhbm5vdCBiZSB1c2VkIGZvciBmdXJ0aGVyIEkvTyBvcGVyYXRpb25zLiAgY2xvc2UoKSBtYXkgYmUKKyAgICAgICAgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHdpdGhvdXQgZXJyb3IuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3Qgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2VmZDoKKyAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2Uoc2VsZi5fZmQpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHN1cGVyKCkuY2xvc2UoKQorCisgICAgZGVmIHNlZWthYmxlKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIGZpbGUgc3VwcG9ydHMgcmFuZG9tLWFjY2Vzcy4iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQorICAgICAgICBpZiBzZWxmLl9zZWVrYWJsZSBpcyBOb25lOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYudGVsbCgpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxmLl9zZWVrYWJsZSA9IEZhbHNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX3NlZWthYmxlID0gVHJ1ZQorICAgICAgICByZXR1cm4gc2VsZi5fc2Vla2FibGUKKworICAgIGRlZiByZWFkYWJsZShzZWxmKToKKyAgICAgICAgIiIiVHJ1ZSBpZiBmaWxlIHdhcyBvcGVuZWQgaW4gYSByZWFkIG1vZGUuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRhYmxlCisKKyAgICBkZWYgd3JpdGFibGUoc2VsZik6CisgICAgICAgICIiIlRydWUgaWYgZmlsZSB3YXMgb3BlbmVkIGluIGEgd3JpdGUgbW9kZS4iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fd3JpdGFibGUKKworICAgIGRlZiBmaWxlbm8oc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgKGFuIGludGVnZXIpLiIiIgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIHJldHVybiBzZWxmLl9mZAorCisgICAgZGVmIGlzYXR0eShzZWxmKToKKyAgICAgICAgIiIiVHJ1ZSBpZiB0aGUgZmlsZSBpcyBjb25uZWN0ZWQgdG8gYSBUVFkgZGV2aWNlLiIiIgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIHJldHVybiBvcy5pc2F0dHkoc2VsZi5fZmQpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY2xvc2VmZChzZWxmKToKKyAgICAgICAgIiIiVHJ1ZSBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIHdpbGwgYmUgY2xvc2VkIGJ5IGNsb3NlKCkuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9jbG9zZWZkCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbW9kZShzZWxmKToKKyAgICAgICAgIiIiU3RyaW5nIGdpdmluZyB0aGUgZmlsZSBtb2RlIiIiCisgICAgICAgIGlmIHNlbGYuX2NyZWF0ZWQ6CisgICAgICAgICAgICBpZiBzZWxmLl9yZWFkYWJsZToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ3hiKycKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuICd4YicKKyAgICAgICAgZWxpZiBzZWxmLl9hcHBlbmRpbmc6CisgICAgICAgICAgICBpZiBzZWxmLl9yZWFkYWJsZToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2FiKycKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuICdhYicKKyAgICAgICAgZWxpZiBzZWxmLl9yZWFkYWJsZToKKyAgICAgICAgICAgIGlmIHNlbGYuX3dyaXRhYmxlOgorICAgICAgICAgICAgICAgIHJldHVybiAncmIrJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ3JiJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICd3YicKKworCiBjbGFzcyBUZXh0SU9CYXNlKElPQmFzZSk6CiAKICAgICAiIiJCYXNlIGNsYXNzIGZvciB0ZXh0IEkvTy4KQEAgLTE1NjYsNyArMTk3Niw4IEBACiAgICAgIyAgIC0gImNoYXJzXy4uLiIgZm9yIGludGVnZXIgdmFyaWFibGVzIHRoYXQgY291bnQgZGVjb2RlZCBjaGFyYWN0ZXJzCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9ICI8X3B5aW8uVGV4dElPV3JhcHBlciIKKyAgICAgICAgcmVzdWx0ID0gIjx7fS57fSIuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18pCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKZGlmZiAtLWdpdCBhL0xpYi9fc3RycHRpbWUucHkgYi9MaWIvX3N0cnB0aW1lLnB5CmluZGV4IDZkNjQ4NTYuLmI4Y2RhNzYgMTAwNjQ0Ci0tLSBhL0xpYi9fc3RycHRpbWUucHkKKysrIGIvTGliL19zdHJwdGltZS5weQpAQCAtMTcxLDkgKzE3MSw5IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYudHpuYW1lID0gdGltZS50em5hbWUKICAgICAgICAgc2VsZi5kYXlsaWdodCA9IHRpbWUuZGF5bGlnaHQKLSAgICAgICAgbm9fc2F2aW5nID0gZnJvemVuc2V0KFsidXRjIiwgImdtdCIsIHNlbGYudHpuYW1lWzBdLmxvd2VyKCldKQorICAgICAgICBub19zYXZpbmcgPSBmcm96ZW5zZXQoeyJ1dGMiLCAiZ210Iiwgc2VsZi50em5hbWVbMF0ubG93ZXIoKX0pCiAgICAgICAgIGlmIHNlbGYuZGF5bGlnaHQ6Ci0gICAgICAgICAgICBoYXNfc2F2aW5nID0gZnJvemVuc2V0KFtzZWxmLnR6bmFtZVsxXS5sb3dlcigpXSkKKyAgICAgICAgICAgIGhhc19zYXZpbmcgPSBmcm96ZW5zZXQoe3NlbGYudHpuYW1lWzFdLmxvd2VyKCl9KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaGFzX3NhdmluZyA9IGZyb3plbnNldCgpCiAgICAgICAgIHNlbGYudGltZXpvbmUgPSAobm9fc2F2aW5nLCBoYXNfc2F2aW5nKQpAQCAtMjU3LDggKzI1Nyw4IEBACiAgICAgICAgICMgZm9ybWF0IGRpcmVjdGl2ZXMgKCVtLCBldGMuKS4KICAgICAgICAgcmVnZXhfY2hhcnMgPSByZV9jb21waWxlKHIiKFtcXC5eJCorP1woXCl7fVxbXF18XSkiKQogICAgICAgICBmb3JtYXQgPSByZWdleF9jaGFycy5zdWIociJcXFwxIiwgZm9ybWF0KQotICAgICAgICB3aGl0ZXNwYWNlX3JlcGxhY2VtZW50ID0gcmVfY29tcGlsZSgnXHMrJykKLSAgICAgICAgZm9ybWF0ID0gd2hpdGVzcGFjZV9yZXBsYWNlbWVudC5zdWIoJ1xzKycsIGZvcm1hdCkKKyAgICAgICAgd2hpdGVzcGFjZV9yZXBsYWNlbWVudCA9IHJlX2NvbXBpbGUocidccysnKQorICAgICAgICBmb3JtYXQgPSB3aGl0ZXNwYWNlX3JlcGxhY2VtZW50LnN1YihyJ1xccysnLCBmb3JtYXQpCiAgICAgICAgIHdoaWxlICclJyBpbiBmb3JtYXQ6CiAgICAgICAgICAgICBkaXJlY3RpdmVfaW5kZXggPSBmb3JtYXQuaW5kZXgoJyUnKSsxCiAgICAgICAgICAgICBwcm9jZXNzZWRfZm9ybWF0ID0gIiVzJXMlcyIgJSAocHJvY2Vzc2VkX2Zvcm1hdCwKQEAgLTMxMSw3ICszMTEsNiBAQAogCiAgICAgZ2xvYmFsIF9UaW1lUkVfY2FjaGUsIF9yZWdleF9jYWNoZQogICAgIHdpdGggX2NhY2hlX2xvY2s6Ci0KICAgICAgICAgbG9jYWxlX3RpbWUgPSBfVGltZVJFX2NhY2hlLmxvY2FsZV90aW1lCiAgICAgICAgIGlmIChfZ2V0bGFuZygpICE9IGxvY2FsZV90aW1lLmxhbmcgb3IKICAgICAgICAgICAgIHRpbWUudHpuYW1lICE9IGxvY2FsZV90aW1lLnR6bmFtZSBvcgpkaWZmIC0tZ2l0IGEvTGliL2FiYy5weSBiL0xpYi9hYmMucHkKaW5kZXggMDM1OGE0Ni4uMWNiZjk2YSAxMDA2NDQKLS0tIGEvTGliL2FiYy5weQorKysgYi9MaWIvYWJjLnB5CkBAIC0xNjgsNyArMTY4LDcgQEAKIAogICAgIGRlZiBfZHVtcF9yZWdpc3RyeShjbHMsIGZpbGU9Tm9uZSk6CiAgICAgICAgICIiIkRlYnVnIGhlbHBlciB0byBwcmludCB0aGUgQUJDIHJlZ2lzdHJ5LiIiIgotICAgICAgICBwcmludCgiQ2xhc3M6ICVzLiVzIiAlIChjbHMuX19tb2R1bGVfXywgY2xzLl9fbmFtZV9fKSwgZmlsZT1maWxlKQorICAgICAgICBwcmludCgiQ2xhc3M6ICVzLiVzIiAlIChjbHMuX19tb2R1bGVfXywgY2xzLl9fcXVhbG5hbWVfXyksIGZpbGU9ZmlsZSkKICAgICAgICAgcHJpbnQoIkludi5jb3VudGVyOiAlcyIgJSBBQkNNZXRhLl9hYmNfaW52YWxpZGF0aW9uX2NvdW50ZXIsIGZpbGU9ZmlsZSkKICAgICAgICAgZm9yIG5hbWUgaW4gc29ydGVkKGNscy5fX2RpY3RfXy5rZXlzKCkpOgogICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCJfYWJjXyIpOgpkaWZmIC0tZ2l0IGEvTGliL2FyZ3BhcnNlLnB5IGIvTGliL2FyZ3BhcnNlLnB5CmluZGV4IGJlMjc2YmIuLjlhMDY3MTkgMTAwNjQ0Ci0tLSBhL0xpYi9hcmdwYXJzZS5weQorKysgYi9MaWIvYXJncGFyc2UucHkKQEAgLTEyMDksMTEgKzEyMDksNiBAQAogICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgIHJldHVybiB2YXJzKHNlbGYpID09IHZhcnMob3RoZXIpCiAKLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIE5hbWVzcGFjZSk6Ci0gICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKLSAgICAgICAgcmV0dXJuIG5vdCAoc2VsZiA9PSBvdGhlcikKLQogICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwga2V5KToKICAgICAgICAgcmV0dXJuIGtleSBpbiBzZWxmLl9fZGljdF9fCiAKQEAgLTE1OTUsNiArMTU5MCw3IEBACiAgICAgICAgIC0gYXJndW1lbnRfZGVmYXVsdCAtLSBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgYWxsIGFyZ3VtZW50cwogICAgICAgICAtIGNvbmZsaWN0X2hhbmRsZXIgLS0gU3RyaW5nIGluZGljYXRpbmcgaG93IHRvIGhhbmRsZSBjb25mbGljdHMKICAgICAgICAgLSBhZGRfaGVscCAtLSBBZGQgYSAtaC8taGVscCBvcHRpb24KKyAgICAgICAgLSBhbGxvd19hYmJyZXYgLS0gQWxsb3cgbG9uZyBvcHRpb25zIHRvIGJlIGFiYnJldmlhdGVkIHVuYW1iaWd1b3VzbHkKICAgICAiIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLApAQCAtMTYwOCw3ICsxNjA0LDggQEAKICAgICAgICAgICAgICAgICAgZnJvbWZpbGVfcHJlZml4X2NoYXJzPU5vbmUsCiAgICAgICAgICAgICAgICAgIGFyZ3VtZW50X2RlZmF1bHQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgY29uZmxpY3RfaGFuZGxlcj0nZXJyb3InLAotICAgICAgICAgICAgICAgICBhZGRfaGVscD1UcnVlKToKKyAgICAgICAgICAgICAgICAgYWRkX2hlbHA9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgYWxsb3dfYWJicmV2PVRydWUpOgogCiAgICAgICAgIHN1cGVyaW5pdCA9IHN1cGVyKEFyZ3VtZW50UGFyc2VyLCBzZWxmKS5fX2luaXRfXwogICAgICAgICBzdXBlcmluaXQoZGVzY3JpcHRpb249ZGVzY3JpcHRpb24sCkBAIC0xNjI2LDYgKzE2MjMsNyBAQAogICAgICAgICBzZWxmLmZvcm1hdHRlcl9jbGFzcyA9IGZvcm1hdHRlcl9jbGFzcwogICAgICAgICBzZWxmLmZyb21maWxlX3ByZWZpeF9jaGFycyA9IGZyb21maWxlX3ByZWZpeF9jaGFycwogICAgICAgICBzZWxmLmFkZF9oZWxwID0gYWRkX2hlbHAKKyAgICAgICAgc2VsZi5hbGxvd19hYmJyZXYgPSBhbGxvd19hYmJyZXYKIAogICAgICAgICBhZGRfZ3JvdXAgPSBzZWxmLmFkZF9hcmd1bWVudF9ncm91cAogICAgICAgICBzZWxmLl9wb3NpdGlvbmFscyA9IGFkZF9ncm91cChfKCdwb3NpdGlvbmFsIGFyZ3VtZW50cycpKQpAQCAtMjEwMywyMyArMjEwMSwyNCBAQAogICAgICAgICAgICAgICAgIGFjdGlvbiA9IHNlbGYuX29wdGlvbl9zdHJpbmdfYWN0aW9uc1tvcHRpb25fc3RyaW5nXQogICAgICAgICAgICAgICAgIHJldHVybiBhY3Rpb24sIG9wdGlvbl9zdHJpbmcsIGV4cGxpY2l0X2FyZwogCi0gICAgICAgICMgc2VhcmNoIHRocm91Z2ggYWxsIHBvc3NpYmxlIHByZWZpeGVzIG9mIHRoZSBvcHRpb24gc3RyaW5nCi0gICAgICAgICMgYW5kIGFsbCBhY3Rpb25zIGluIHRoZSBwYXJzZXIgZm9yIHBvc3NpYmxlIGludGVycHJldGF0aW9ucwotICAgICAgICBvcHRpb25fdHVwbGVzID0gc2VsZi5fZ2V0X29wdGlvbl90dXBsZXMoYXJnX3N0cmluZykKKyAgICAgICAgaWYgc2VsZi5hbGxvd19hYmJyZXY6CisgICAgICAgICAgICAjIHNlYXJjaCB0aHJvdWdoIGFsbCBwb3NzaWJsZSBwcmVmaXhlcyBvZiB0aGUgb3B0aW9uIHN0cmluZworICAgICAgICAgICAgIyBhbmQgYWxsIGFjdGlvbnMgaW4gdGhlIHBhcnNlciBmb3IgcG9zc2libGUgaW50ZXJwcmV0YXRpb25zCisgICAgICAgICAgICBvcHRpb25fdHVwbGVzID0gc2VsZi5fZ2V0X29wdGlvbl90dXBsZXMoYXJnX3N0cmluZykKIAotICAgICAgICAjIGlmIG11bHRpcGxlIGFjdGlvbnMgbWF0Y2gsIHRoZSBvcHRpb24gc3RyaW5nIHdhcyBhbWJpZ3VvdXMKLSAgICAgICAgaWYgbGVuKG9wdGlvbl90dXBsZXMpID4gMToKLSAgICAgICAgICAgIG9wdGlvbnMgPSAnLCAnLmpvaW4oW29wdGlvbl9zdHJpbmcKLSAgICAgICAgICAgICAgICBmb3IgYWN0aW9uLCBvcHRpb25fc3RyaW5nLCBleHBsaWNpdF9hcmcgaW4gb3B0aW9uX3R1cGxlc10pCi0gICAgICAgICAgICBhcmdzID0geydvcHRpb24nOiBhcmdfc3RyaW5nLCAnbWF0Y2hlcyc6IG9wdGlvbnN9Ci0gICAgICAgICAgICBtc2cgPSBfKCdhbWJpZ3VvdXMgb3B0aW9uOiAlKG9wdGlvbilzIGNvdWxkIG1hdGNoICUobWF0Y2hlcylzJykKLSAgICAgICAgICAgIHNlbGYuZXJyb3IobXNnICUgYXJncykKKyAgICAgICAgICAgICMgaWYgbXVsdGlwbGUgYWN0aW9ucyBtYXRjaCwgdGhlIG9wdGlvbiBzdHJpbmcgd2FzIGFtYmlndW91cworICAgICAgICAgICAgaWYgbGVuKG9wdGlvbl90dXBsZXMpID4gMToKKyAgICAgICAgICAgICAgICBvcHRpb25zID0gJywgJy5qb2luKFtvcHRpb25fc3RyaW5nCisgICAgICAgICAgICAgICAgICAgIGZvciBhY3Rpb24sIG9wdGlvbl9zdHJpbmcsIGV4cGxpY2l0X2FyZyBpbiBvcHRpb25fdHVwbGVzXSkKKyAgICAgICAgICAgICAgICBhcmdzID0geydvcHRpb24nOiBhcmdfc3RyaW5nLCAnbWF0Y2hlcyc6IG9wdGlvbnN9CisgICAgICAgICAgICAgICAgbXNnID0gXygnYW1iaWd1b3VzIG9wdGlvbjogJShvcHRpb24pcyBjb3VsZCBtYXRjaCAlKG1hdGNoZXMpcycpCisgICAgICAgICAgICAgICAgc2VsZi5lcnJvcihtc2cgJSBhcmdzKQogCi0gICAgICAgICMgaWYgZXhhY3RseSBvbmUgYWN0aW9uIG1hdGNoZWQsIHRoaXMgc2VnbWVudGF0aW9uIGlzIGdvb2QsCi0gICAgICAgICMgc28gcmV0dXJuIHRoZSBwYXJzZWQgYWN0aW9uCi0gICAgICAgIGVsaWYgbGVuKG9wdGlvbl90dXBsZXMpID09IDE6Ci0gICAgICAgICAgICBvcHRpb25fdHVwbGUsID0gb3B0aW9uX3R1cGxlcwotICAgICAgICAgICAgcmV0dXJuIG9wdGlvbl90dXBsZQorICAgICAgICAgICAgIyBpZiBleGFjdGx5IG9uZSBhY3Rpb24gbWF0Y2hlZCwgdGhpcyBzZWdtZW50YXRpb24gaXMgZ29vZCwKKyAgICAgICAgICAgICMgc28gcmV0dXJuIHRoZSBwYXJzZWQgYWN0aW9uCisgICAgICAgICAgICBlbGlmIGxlbihvcHRpb25fdHVwbGVzKSA9PSAxOgorICAgICAgICAgICAgICAgIG9wdGlvbl90dXBsZSwgPSBvcHRpb25fdHVwbGVzCisgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbl90dXBsZQogCiAgICAgICAgICMgaWYgaXQgd2FzIG5vdCBmb3VuZCBhcyBhbiBvcHRpb24sIGJ1dCBpdCBsb29rcyBsaWtlIGEgbmVnYXRpdmUKICAgICAgICAgIyBudW1iZXIsIGl0IHdhcyBtZWFudCB0byBiZSBwb3NpdGlvbmFsCmRpZmYgLS1naXQgYS9MaWIvYXN0LnB5IGIvTGliL2FzdC5weQppbmRleCAwMmMzYjI4Li4wMTcwNDcyIDEwMDY0NAotLS0gYS9MaWIvYXN0LnB5CisrKyBiL0xpYi9hc3QucHkKQEAgLTE5NCw3ICsxOTQsNyBAQAogICAgIGJlIGZvdW5kLiAgSWYgdGhlIG5vZGUgcHJvdmlkZWQgZG9lcyBub3QgaGF2ZSBkb2NzdHJpbmdzIGEgVHlwZUVycm9yCiAgICAgd2lsbCBiZSByYWlzZWQuCiAgICAgIiIiCi0gICAgaWYgbm90IGlzaW5zdGFuY2Uobm9kZSwgKEZ1bmN0aW9uRGVmLCBDbGFzc0RlZiwgTW9kdWxlKSk6CisgICAgaWYgbm90IGlzaW5zdGFuY2Uobm9kZSwgKEFzeW5jRnVuY3Rpb25EZWYsIEZ1bmN0aW9uRGVmLCBDbGFzc0RlZiwgTW9kdWxlKSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXIgY2FuJ3QgaGF2ZSBkb2NzdHJpbmdzIiAlIG5vZGUuX19jbGFzc19fLl9fbmFtZV9fKQogICAgIGlmIG5vZGUuYm9keSBhbmQgaXNpbnN0YW5jZShub2RlLmJvZHlbMF0sIEV4cHIpIGFuZCBcCiAgICAgICAgaXNpbnN0YW5jZShub2RlLmJvZHlbMF0udmFsdWUsIFN0cik6CkBAIC0yOTMsNyArMjkzLDYgQEAKIAogICAgIGRlZiBnZW5lcmljX3Zpc2l0KHNlbGYsIG5vZGUpOgogICAgICAgICBmb3IgZmllbGQsIG9sZF92YWx1ZSBpbiBpdGVyX2ZpZWxkcyhub2RlKToKLSAgICAgICAgICAgIG9sZF92YWx1ZSA9IGdldGF0dHIobm9kZSwgZmllbGQsIE5vbmUpCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9sZF92YWx1ZSwgbGlzdCk6CiAgICAgICAgICAgICAgICAgbmV3X3ZhbHVlcyA9IFtdCiAgICAgICAgICAgICAgICAgZm9yIHZhbHVlIGluIG9sZF92YWx1ZToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2hhdC5weSBiL0xpYi9hc3luY2hhdC5weQppbmRleCAxNGMxNTJmLi5mNzI4ZDFiIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNoYXQucHkKKysrIGIvTGliL2FzeW5jaGF0LnB5CkBAIC0yODcsNiArMjg3LDkgQEAKIAogY2xhc3MgZmlmbzoKICAgICBkZWYgX19pbml0X18oc2VsZiwgbGlzdD1Ob25lKToKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgIHdhcm5pbmdzLndhcm4oJ2ZpZm8gY2xhc3Mgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjYnLAorICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICBpZiBub3QgbGlzdDoKICAgICAgICAgICAgIHNlbGYubGlzdCA9IGRlcXVlKCkKICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY29yZS5weSBiL0xpYi9hc3luY29yZS5weQppbmRleCAwMGE2Mzk2Li4zYjUxZjBmIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNvcmUucHkKKysrIGIvTGliL2FzeW5jb3JlLnB5CkBAIC01Nyw4ICs1Nyw4IEBACiAgICAgIEVOT1RDT05OLCBFU0hVVERPV04sIEVJU0NPTk4sIEVCQURGLCBFQ09OTkFCT1JURUQsIEVQSVBFLCBFQUdBSU4sIFwKICAgICAgZXJyb3Jjb2RlCiAKLV9ESVNDT05ORUNURUQgPSBmcm96ZW5zZXQoKEVDT05OUkVTRVQsIEVOT1RDT05OLCBFU0hVVERPV04sIEVDT05OQUJPUlRFRCwgRVBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBFQkFERikpCitfRElTQ09OTkVDVEVEID0gZnJvemVuc2V0KHtFQ09OTlJFU0VULCBFTk9UQ09OTiwgRVNIVVRET1dOLCBFQ09OTkFCT1JURUQsIEVQSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRUJBREZ9KQogCiB0cnk6CiAgICAgc29ja2V0X21hcApAQCAtMTQxLDEwICsxNDEsNyBAQAogICAgICAgICAgICAgdGltZS5zbGVlcCh0aW1lb3V0KQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgciwgdywgZSA9IHNlbGVjdC5zZWxlY3QociwgdywgZSwgdGltZW91dCkKLSAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgciwgdywgZSA9IHNlbGVjdC5zZWxlY3QociwgdywgZSwgdGltZW91dCkKIAogICAgICAgICBmb3IgZmQgaW4gcjoKICAgICAgICAgICAgIG9iaiA9IG1hcC5nZXQoZmQpCkBAIC0xODIsMTAgKzE3OSw4IEBACiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gc2VsZWN0LlBPTExPVVQKICAgICAgICAgICAgIGlmIGZsYWdzOgogICAgICAgICAgICAgICAgIHBvbGxzdGVyLnJlZ2lzdGVyKGZkLCBmbGFncykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgciA9IHBvbGxzdGVyLnBvbGwodGltZW91dCkKLSAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICByID0gW10KKworICAgICAgICByID0gcG9sbHN0ZXIucG9sbCh0aW1lb3V0KQogICAgICAgICBmb3IgZmQsIGZsYWdzIGluIHI6CiAgICAgICAgICAgICBvYmogPSBtYXAuZ2V0KGZkKQogICAgICAgICAgICAgaWYgb2JqIGlzIE5vbmU6CkBAIC0yMjAsNyArMjE1LDcgQEAKICAgICBjb25uZWN0aW5nID0gRmFsc2UKICAgICBjbG9zaW5nID0gRmFsc2UKICAgICBhZGRyID0gTm9uZQotICAgIGlnbm9yZV9sb2dfdHlwZXMgPSBmcm96ZW5zZXQoWyd3YXJuaW5nJ10pCisgICAgaWdub3JlX2xvZ190eXBlcyA9IGZyb3plbnNldCh7J3dhcm5pbmcnfSkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrPU5vbmUsIG1hcD1Ob25lKToKICAgICAgICAgaWYgbWFwIGlzIE5vbmU6CkBAIC0yNTUsNyArMjUwLDcgQEAKICAgICAgICAgICAgIHNlbGYuc29ja2V0ID0gTm9uZQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBzdGF0dXMgPSBbc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXysiLiIrc2VsZi5fX2NsYXNzX18uX19uYW1lX19dCisgICAgICAgIHN0YXR1cyA9IFtzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fKyIuIitzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX19dCiAgICAgICAgIGlmIHNlbGYuYWNjZXB0aW5nIGFuZCBzZWxmLmFkZHI6CiAgICAgICAgICAgICBzdGF0dXMuYXBwZW5kKCdsaXN0ZW5pbmcnKQogICAgICAgICBlbGlmIHNlbGYuY29ubmVjdGVkOgpAQCAtNDA0LDIwICszOTksNiBAQAogICAgICAgICAgICAgICAgIGlmIHdoeS5hcmdzWzBdIG5vdCBpbiAoRU5PVENPTk4sIEVCQURGKToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKIAotICAgICMgY2hlYXAgaW5oZXJpdGFuY2UsIHVzZWQgdG8gcGFzcyBhbGwgb3RoZXIgYXR0cmlidXRlCi0gICAgIyByZWZlcmVuY2VzIHRvIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuCi0gICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXRhdHRyID0gZ2V0YXR0cihzZWxmLnNvY2tldCwgYXR0cikKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVzIGluc3RhbmNlIGhhcyBubyBhdHRyaWJ1dGUgJyVzJyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGF0dHIpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbXNnID0gIiUobWUpcy4lKGF0dHIpcyBpcyBkZXByZWNhdGVkOyB1c2UgJShtZSlzLnNvY2tldC4lKGF0dHIpcyAiIFwKLSAgICAgICAgICAgICAgICAgICJpbnN0ZWFkIiAlIHsnbWUnIDogc2VsZi5fX2NsYXNzX18uX19uYW1lX18sICdhdHRyJyA6IGF0dHJ9Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgICAgICByZXR1cm4gcmV0YXR0cgotCiAgICAgIyBsb2cgYW5kIGxvZ19pbmZvIG1heSBiZSBvdmVycmlkZGVuIHRvIHByb3ZpZGUgbW9yZSBzb3BoaXN0aWNhdGVkCiAgICAgIyBsb2dnaW5nIGFuZCB3YXJuaW5nIG1ldGhvZHMuIEluIGdlbmVyYWwsIGxvZyBpcyBmb3IgJ2hpdCcgbG9nZ2luZwogICAgICMgYW5kICdsb2dfaW5mbycgaXMgZm9yIGluZm9ybWF0aW9uYWwsIHdhcm5pbmcgYW5kIGVycm9yIGxvZ2dpbmcuCkBAIC02MDQsOCArNTg1LDYgQEAKICMgUmVnYXJkbGVzcywgdGhpcyBpcyB1c2VmdWwgZm9yIHBpcGVzLCBhbmQgc3RkaW4vc3Rkb3V0Li4uCiAKIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKLSAgICBpbXBvcnQgZmNudGwKLQogICAgIGNsYXNzIGZpbGVfd3JhcHBlcjoKICAgICAgICAgIyBIZXJlIHdlIG92ZXJyaWRlIGp1c3QgZW5vdWdoIHRvIG1ha2UgYSBmaWxlCiAgICAgICAgICMgbG9vayBsaWtlIGEgc29ja2V0IGZvciB0aGUgcHVycG9zZXMgb2YgYXN5bmNvcmUuCkBAIC02NTYsOSArNjM1LDcgQEAKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBzZWxmLnNldF9maWxlKGZkKQogICAgICAgICAgICAgIyBzZXQgaXQgdG8gbm9uLWJsb2NraW5nIG1vZGUKLSAgICAgICAgICAgIGZsYWdzID0gZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfR0VURkwsIDApCi0gICAgICAgICAgICBmbGFncyA9IGZsYWdzIHwgb3MuT19OT05CTE9DSwotICAgICAgICAgICAgZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfU0VURkwsIGZsYWdzKQorICAgICAgICAgICAgb3Muc2V0X2Jsb2NraW5nKGZkLCBGYWxzZSkKIAogICAgICAgICBkZWYgc2V0X2ZpbGUoc2VsZiwgZmQpOgogICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBmaWxlX3dyYXBwZXIoZmQpCmRpZmYgLS1naXQgYS9MaWIvYmluaGV4LnB5IGIvTGliL2JpbmhleC5weQppbmRleCA4MjcyZDVjLi41NmI1Zjg1IDEwMDY0NAotLS0gYS9MaWIvYmluaGV4LnB5CisrKyBiL0xpYi9iaW5oZXgucHkKQEAgLTIzNSwxNCArMjM1LDEzIEBACiAgICAgZmluZm8gPSBnZXRmaWxlaW5mbyhpbnApCiAgICAgb2ZwID0gQmluSGV4KGZpbmZvLCBvdXQpCiAKLSAgICBpZnAgPSBpby5vcGVuKGlucCwgJ3JiJykKLSAgICAjIFhYWFggRG8gdGV4dGZpbGUgdHJhbnNsYXRpb24gb24gbm9uLW1hYyBzeXN0ZW1zCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgZCA9IGlmcC5yZWFkKDEyODAwMCkKLSAgICAgICAgaWYgbm90IGQ6IGJyZWFrCi0gICAgICAgIG9mcC53cml0ZShkKQotICAgIG9mcC5jbG9zZV9kYXRhKCkKLSAgICBpZnAuY2xvc2UoKQorICAgIHdpdGggaW8ub3BlbihpbnAsICdyYicpIGFzIGlmcDoKKyAgICAgICAgIyBYWFhYIERvIHRleHRmaWxlIHRyYW5zbGF0aW9uIG9uIG5vbi1tYWMgc3lzdGVtcworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZCA9IGlmcC5yZWFkKDEyODAwMCkKKyAgICAgICAgICAgIGlmIG5vdCBkOiBicmVhaworICAgICAgICAgICAgb2ZwLndyaXRlKGQpCisgICAgICAgIG9mcC5jbG9zZV9kYXRhKCkKIAogICAgIGlmcCA9IG9wZW5yc3JjKGlucCwgJ3JiJykKICAgICB3aGlsZSBUcnVlOgpAQCAtNDU5LDEzICs0NTgsMTIgQEAKICAgICBpZiBub3Qgb3V0OgogICAgICAgICBvdXQgPSBpZnAuRk5hbWUKIAotICAgIG9mcCA9IGlvLm9wZW4ob3V0LCAnd2InKQotICAgICMgWFhYWCBEbyB0cmFuc2xhdGlvbiBvbiBub24tbWFjIHN5c3RlbXMKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBkID0gaWZwLnJlYWQoMTI4MDAwKQotICAgICAgICBpZiBub3QgZDogYnJlYWsKLSAgICAgICAgb2ZwLndyaXRlKGQpCi0gICAgb2ZwLmNsb3NlKCkKKyAgICB3aXRoIGlvLm9wZW4ob3V0LCAnd2InKSBhcyBvZnA6CisgICAgICAgICMgWFhYWCBEbyB0cmFuc2xhdGlvbiBvbiBub24tbWFjIHN5c3RlbXMKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGQgPSBpZnAucmVhZCgxMjgwMDApCisgICAgICAgICAgICBpZiBub3QgZDogYnJlYWsKKyAgICAgICAgICAgIG9mcC53cml0ZShkKQogICAgIGlmcC5jbG9zZV9kYXRhKCkKIAogICAgIGQgPSBpZnAucmVhZF9yc3JjKDEyODAwMCkKZGlmZiAtLWdpdCBhL0xpYi9iejIucHkgYi9MaWIvYnoyLnB5CmluZGV4IDZjNWE2MGQuLmJjNzhjNTQgMTAwNjQ0Ci0tLSBhL0xpYi9iejIucHkKKysrIGIvTGliL2J6Mi5weQpAQCAtMTIsNiArMTIsNyBAQAogZnJvbSBidWlsdGlucyBpbXBvcnQgb3BlbiBhcyBfYnVpbHRpbl9vcGVuCiBpbXBvcnQgaW8KIGltcG9ydCB3YXJuaW5ncworaW1wb3J0IF9jb21wcmVzc2lvbgogCiB0cnk6CiAgICAgZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFJMb2NrCkBAIC0yMywxMyArMjQsMTEgQEAKIAogX01PREVfQ0xPU0VEICAgPSAwCiBfTU9ERV9SRUFEICAgICA9IDEKLV9NT0RFX1JFQURfRU9GID0gMgorIyBWYWx1ZSAyIG5vIGxvbmdlciB1c2VkCiBfTU9ERV9XUklURSAgICA9IDMKIAotX0JVRkZFUl9TSVpFID0gODE5MgogCi0KLWNsYXNzIEJaMkZpbGUoaW8uQnVmZmVyZWRJT0Jhc2UpOgorY2xhc3MgQloyRmlsZShfY29tcHJlc3Npb24uQmFzZVN0cmVhbSk6CiAKICAgICAiIiJBIGZpbGUgb2JqZWN0IHByb3ZpZGluZyB0cmFuc3BhcmVudCBiemlwMiAoZGUpY29tcHJlc3Npb24uCiAKQEAgLTYxLDEzICs2MCwxMSBAQAogICAgICAgICBtdWx0aXBsZSBjb21wcmVzc2VkIHN0cmVhbXMuCiAgICAgICAgICIiIgogICAgICAgICAjIFRoaXMgbG9jayBtdXN0IGJlIHJlY3Vyc2l2ZSwgc28gdGhhdCBCdWZmZXJlZElPQmFzZSdzCi0gICAgICAgICMgcmVhZGxpbmUoKSwgcmVhZGxpbmVzKCkgYW5kIHdyaXRlbGluZXMoKSBkb24ndCBkZWFkbG9jay4KKyAgICAgICAgIyB3cml0ZWxpbmVzKCkgZG9lcyBub3QgZGVhZGxvY2suCiAgICAgICAgIHNlbGYuX2xvY2sgPSBSTG9jaygpCiAgICAgICAgIHNlbGYuX2ZwID0gTm9uZQogICAgICAgICBzZWxmLl9jbG9zZWZwID0gRmFsc2UKICAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX0NMT1NFRAotICAgICAgICBzZWxmLl9wb3MgPSAwCi0gICAgICAgIHNlbGYuX3NpemUgPSAtMQogCiAgICAgICAgIGlmIGJ1ZmZlcmluZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlVzZSBvZiAnYnVmZmVyaW5nJyBhcmd1bWVudCBpcyBkZXByZWNhdGVkIiwKQEAgLTc5LDkgKzc2LDYgQEAKICAgICAgICAgaWYgbW9kZSBpbiAoIiIsICJyIiwgInJiIik6CiAgICAgICAgICAgICBtb2RlID0gInJiIgogICAgICAgICAgICAgbW9kZV9jb2RlID0gX01PREVfUkVBRAotICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gQloyRGVjb21wcmVzc29yKCkKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKICAgICAgICAgZWxpZiBtb2RlIGluICgidyIsICJ3YiIpOgogICAgICAgICAgICAgbW9kZSA9ICJ3YiIKICAgICAgICAgICAgIG1vZGVfY29kZSA9IF9NT0RFX1dSSVRFCkBAIC0xMDcsNiArMTAxLDEzIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBvciBhIGZpbGUiKQogCisgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKKyAgICAgICAgICAgIHJhdyA9IF9jb21wcmVzc2lvbi5EZWNvbXByZXNzUmVhZGVyKHNlbGYuX2ZwLAorICAgICAgICAgICAgICAgIEJaMkRlY29tcHJlc3NvciwgdHJhaWxpbmdfZXJyb3I9T1NFcnJvcikKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGlvLkJ1ZmZlcmVkUmVhZGVyKHJhdykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3BvcyA9IDAKKwogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgIiIiRmx1c2ggYW5kIGNsb3NlIHRoZSBmaWxlLgogCkBAIC0xMTcsOCArMTE4LDggQEAKICAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfQ0xPU0VEOgogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTm9uZQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyLmNsb3NlKCkKICAgICAgICAgICAgICAgICBlbGlmIHNlbGYuX21vZGUgPT0gX01PREVfV1JJVEU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHNlbGYuX2NvbXByZXNzb3IuZmx1c2goKSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IE5vbmUKQEAgLTEzMCw4ICsxMzEsNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcCA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VmcCA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9DTE9TRUQKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBjbG9zZWQoc2VsZik6CkBAIC0xNDUsMTI1ICsxNDUsMTggQEAKIAogICAgIGRlZiBzZWVrYWJsZShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgc3VwcG9ydHMgc2Vla2luZy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYucmVhZGFibGUoKSBhbmQgc2VsZi5fZnAuc2Vla2FibGUoKQorICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWJsZSgpIGFuZCBzZWxmLl9idWZmZXIuc2Vla2FibGUoKQogCiAgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSB3YXMgb3BlbmVkIGZvciByZWFkaW5nLiIiIgogICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKQorICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFECiAKICAgICBkZWYgd3JpdGFibGUoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcuIiIiCiAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQogICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURQogCi0gICAgIyBNb2RlLWNoZWNraW5nIGhlbHBlciBmdW5jdGlvbnMuCi0KLSAgICBkZWYgX2NoZWNrX25vdF9jbG9zZWQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCi0KLSAgICBkZWYgX2NoZWNrX2Nhbl9yZWFkKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9tb2RlIG5vdCBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpOgotICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCi0gICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiRmlsZSBub3Qgb3BlbiBmb3IgcmVhZGluZyIpCi0KLSAgICBkZWYgX2NoZWNrX2Nhbl93cml0ZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fbW9kZSAhPSBfTU9ERV9XUklURToKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQotICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIkZpbGUgbm90IG9wZW4gZm9yIHdyaXRpbmciKQotCi0gICAgZGVmIF9jaGVja19jYW5fc2VlayhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fbW9kZSBub3QgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKToKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQotICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIlNlZWtpbmcgaXMgb25seSBzdXBwb3J0ZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9uIGZpbGVzIG9wZW4gZm9yIHJlYWRpbmciKQotICAgICAgICBpZiBub3Qgc2VsZi5fZnAuc2Vla2FibGUoKToKLSAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJUaGUgdW5kZXJseWluZyBmaWxlIG9iamVjdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9lcyBub3Qgc3VwcG9ydCBzZWVraW5nIikKLQotICAgICMgRmlsbCB0aGUgcmVhZGFoZWFkIGJ1ZmZlciBpZiBpdCBpcyBlbXB0eS4gUmV0dXJucyBGYWxzZSBvbiBFT0YuCi0gICAgZGVmIF9maWxsX2J1ZmZlcihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEX0VPRjoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAjIERlcGVuZGluZyBvbiB0aGUgaW5wdXQgZGF0YSwgb3VyIGNhbGwgdG8gdGhlIGRlY29tcHJlc3NvciBtYXkgbm90Ci0gICAgICAgICMgcmV0dXJuIGFueSBkYXRhLiBJbiB0aGlzIGNhc2UsIHRyeSBhZ2FpbiBhZnRlciByZWFkaW5nIGFub3RoZXIgYmxvY2suCi0gICAgICAgIHdoaWxlIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPT0gbGVuKHNlbGYuX2J1ZmZlcik6Ci0gICAgICAgICAgICByYXdibG9jayA9IChzZWxmLl9kZWNvbXByZXNzb3IudW51c2VkX2RhdGEgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwLnJlYWQoX0JVRkZFUl9TSVpFKSkKLQotICAgICAgICAgICAgaWYgbm90IHJhd2Jsb2NrOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5lb2Y6Ci0gICAgICAgICAgICAgICAgICAgICMgRW5kLW9mLXN0cmVhbSBtYXJrZXIgYW5kIGVuZCBvZiBmaWxlLiBXZSdyZSBnb29kLgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRF9FT0YKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2l6ZSA9IHNlbGYuX3BvcwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIFByb2JsZW0gLSB3ZSB3ZXJlIGV4cGVjdGluZyBtb3JlIGNvbXByZXNzZWQgZGF0YS4KLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKLQotICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKLSAgICAgICAgICAgICAgICAjIENvbnRpbnVlIHRvIG5leHQgc3RyZWFtLgotICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IEJaMkRlY29tcHJlc3NvcigpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhyYXdibG9jaykKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgIyBUcmFpbGluZyBkYXRhIGlzbid0IGEgdmFsaWQgYnppcDIgc3RyZWFtLiBXZSdyZSBkb25lIGhlcmUuCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9SRUFEX0VPRgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaXplID0gc2VsZi5fcG9zCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhyYXdibG9jaykKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAjIFJlYWQgZGF0YSB1bnRpbCBFT0YuCi0gICAgIyBJZiByZXR1cm5fZGF0YSBpcyBmYWxzZSwgY29uc3VtZSB0aGUgZGF0YSB3aXRob3V0IHJldHVybmluZyBpdC4KLSAgICBkZWYgX3JlYWRfYWxsKHNlbGYsIHJldHVybl9kYXRhPVRydWUpOgotICAgICAgICAjIFRoZSBsb29wIGFzc3VtZXMgdGhhdCBfYnVmZmVyX29mZnNldCBpcyAwLiBFbnN1cmUgdGhhdCB0aGlzIGlzIHRydWUuCi0gICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KLSAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKLQotICAgICAgICBibG9ja3MgPSBbXQotICAgICAgICB3aGlsZSBzZWxmLl9maWxsX2J1ZmZlcigpOgotICAgICAgICAgICAgaWYgcmV0dXJuX2RhdGE6Ci0gICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChzZWxmLl9idWZmZXIpCi0gICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKHNlbGYuX2J1ZmZlcikKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICBpZiByZXR1cm5fZGF0YToKLSAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCi0KLSAgICAjIFJlYWQgYSBibG9jayBvZiB1cCB0byBuIGJ5dGVzLgotICAgICMgSWYgcmV0dXJuX2RhdGEgaXMgZmFsc2UsIGNvbnN1bWUgdGhlIGRhdGEgd2l0aG91dCByZXR1cm5pbmcgaXQuCi0gICAgZGVmIF9yZWFkX2Jsb2NrKHNlbGYsIG4sIHJldHVybl9kYXRhPVRydWUpOgotICAgICAgICAjIElmIHdlIGhhdmUgZW5vdWdoIGRhdGEgYnVmZmVyZWQsIHJldHVybiBpbW1lZGlhdGVseS4KLSAgICAgICAgZW5kID0gc2VsZi5fYnVmZmVyX29mZnNldCArIG4KLSAgICAgICAgaWYgZW5kIDw9IGxlbihzZWxmLl9idWZmZXIpOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDogZW5kXQotICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IGVuZAotICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQotICAgICAgICAgICAgcmV0dXJuIGRhdGEgaWYgcmV0dXJuX2RhdGEgZWxzZSBOb25lCi0KLSAgICAgICAgIyBUaGUgbG9vcCBhc3N1bWVzIHRoYXQgX2J1ZmZlcl9vZmZzZXQgaXMgMC4gRW5zdXJlIHRoYXQgdGhpcyBpcyB0cnVlLgotICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldDpdCi0gICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0KLSAgICAgICAgYmxvY2tzID0gW10KLSAgICAgICAgd2hpbGUgbiA+IDAgYW5kIHNlbGYuX2ZpbGxfYnVmZmVyKCk6Ci0gICAgICAgICAgICBpZiBuIDwgbGVuKHNlbGYuX2J1ZmZlcik6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcls6bl0KLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gbgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyCi0gICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCi0gICAgICAgICAgICBpZiByZXR1cm5fZGF0YToKLSAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKGRhdGEpCi0gICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCi0gICAgICAgICAgICBuIC09IGxlbihkYXRhKQotICAgICAgICBpZiByZXR1cm5fZGF0YToKLSAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCi0KICAgICBkZWYgcGVlayhzZWxmLCBuPTApOgogICAgICAgICAiIiJSZXR1cm4gYnVmZmVyZWQgZGF0YSB3aXRob3V0IGFkdmFuY2luZyB0aGUgZmlsZSBwb3NpdGlvbi4KIApAQCAtMjcyLDkgKzE2NSwxMCBAQAogICAgICAgICAiIiIKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGxfYnVmZmVyKCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGIiIgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KKyAgICAgICAgICAgICMgUmVsaWVzIG9uIHRoZSB1bmRvY3VtZW50ZWQgZmFjdCB0aGF0IEJ1ZmZlcmVkUmVhZGVyLnBlZWsoKQorICAgICAgICAgICAgIyBhbHdheXMgcmV0dXJucyBhdCBsZWFzdCBvbmUgYnl0ZSAoZXhjZXB0IGF0IEVPRiksIGluZGVwZW5kZW50CisgICAgICAgICAgICAjIG9mIHRoZSB2YWx1ZSBvZiBuCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnBlZWsobikKIAogICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgogICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCkBAIC0yODQsNDcgKzE3OCwyOSBAQAogICAgICAgICAiIiIKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQotICAgICAgICAgICAgaWYgc2l6ZSA9PSAwOgotICAgICAgICAgICAgICAgIHJldHVybiBiIiIKLSAgICAgICAgICAgIGVsaWYgc2l6ZSA8IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfYWxsKCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfYmxvY2soc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZChzaXplKQogCiAgICAgZGVmIHJlYWQxKHNlbGYsIHNpemU9LTEpOgogICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzLCB3aGlsZSB0cnlpbmcgdG8gYXZvaWQKLSAgICAgICAgbWFraW5nIG11bHRpcGxlIHJlYWRzIGZyb20gdGhlIHVuZGVybHlpbmcgc3RyZWFtLgorICAgICAgICBtYWtpbmcgbXVsdGlwbGUgcmVhZHMgZnJvbSB0aGUgdW5kZXJseWluZyBzdHJlYW0uIFJlYWRzIHVwIHRvIGEKKyAgICAgICAgYnVmZmVyJ3Mgd29ydGggb2YgZGF0YSBpZiBzaXplIGlzIG5lZ2F0aXZlLgogCiAgICAgICAgIFJldHVybnMgYicnIGlmIHRoZSBmaWxlIGlzIGF0IEVPRi4KICAgICAgICAgIiIiCi0gICAgICAgICMgVXN1YWxseSwgcmVhZDEoKSBjYWxscyBfZnAucmVhZCgpIGF0IG1vc3Qgb25jZS4gSG93ZXZlciwgc29tZXRpbWVzCi0gICAgICAgICMgdGhpcyBkb2VzIG5vdCBnaXZlIGVub3VnaCBkYXRhIGZvciB0aGUgZGVjb21wcmVzc29yIHRvIG1ha2UgcHJvZ3Jlc3MuCi0gICAgICAgICMgSW4gdGhpcyBjYXNlIHdlIG1ha2UgbXVsdGlwbGUgcmVhZHMsIHRvIGF2b2lkIHJldHVybmluZyBiIiIuCiAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKLSAgICAgICAgICAgIGlmIChzaXplID09IDAgb3IKLSAgICAgICAgICAgICAgICAjIE9ubHkgY2FsbCBfZmlsbF9idWZmZXIoKSBpZiB0aGUgYnVmZmVyIGlzIGFjdHVhbGx5IGVtcHR5LgotICAgICAgICAgICAgICAgICMgVGhpcyBnaXZlcyBhIHNpZ25pZmljYW50IHNwZWVkdXAgaWYgKnNpemUqIGlzIHNtYWxsLgotICAgICAgICAgICAgICAgIChzZWxmLl9idWZmZXJfb2Zmc2V0ID09IGxlbihzZWxmLl9idWZmZXIpIGFuZCBub3Qgc2VsZi5fZmlsbF9idWZmZXIoKSkpOgotICAgICAgICAgICAgICAgIHJldHVybiBiIiIKLSAgICAgICAgICAgIGlmIHNpemUgPiAwOgotICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldCA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ICsgc2l6ZV0KLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ICs9IGxlbihkYXRhKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQ6XQotICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0gICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCi0gICAgICAgICAgICByZXR1cm4gZGF0YQorICAgICAgICAgICAgaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICAgICAgc2l6ZSA9IGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZDEoc2l6ZSkKIAogICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKLSAgICAgICAgIiIiUmVhZCB1cCB0byBsZW4oYikgYnl0ZXMgaW50byBiLgorICAgICAgICAiIiJSZWFkIGJ5dGVzIGludG8gYi4KIAogICAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZCAoMCBmb3IgRU9GKS4KICAgICAgICAgIiIiCiAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKLSAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkaW50byhzZWxmLCBiKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkaW50byhiKQogCiAgICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgogICAgICAgICAiIiJSZWFkIGEgbGluZSBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgZnJvbSB0aGUgZmlsZS4KQEAgLTMzOSwxNSArMjE1LDcgQEAKICAgICAgICAgICAgIHNpemUgPSBzaXplLl9faW5kZXhfXygpCiAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKLSAgICAgICAgICAgICMgU2hvcnRjdXQgZm9yIHRoZSBjb21tb24gY2FzZSAtIHRoZSB3aG9sZSBsaW5lIGlzIGluIHRoZSBidWZmZXIuCi0gICAgICAgICAgICBpZiBzaXplIDwgMDoKLSAgICAgICAgICAgICAgICBlbmQgPSBzZWxmLl9idWZmZXIuZmluZChiIlxuIiwgc2VsZi5fYnVmZmVyX29mZnNldCkgKyAxCi0gICAgICAgICAgICAgICAgaWYgZW5kID4gMDoKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDogZW5kXQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gZW5kCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4obGluZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKLSAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkbGluZShzZWxmLCBzaXplKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkbGluZShzaXplKQogCiAgICAgZGVmIHJlYWRsaW5lcyhzZWxmLCBzaXplPS0xKToKICAgICAgICAgIiIiUmVhZCBhIGxpc3Qgb2YgbGluZXMgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCkBAIC0zNjEsNyArMjI5LDggQEAKICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkludGVnZXIgYXJndW1lbnQgZXhwZWN0ZWQiKQogICAgICAgICAgICAgc2l6ZSA9IHNpemUuX19pbmRleF9fKCkKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgotICAgICAgICAgICAgcmV0dXJuIGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRsaW5lcyhzZWxmLCBzaXplKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkbGluZXMoc2l6ZSkKIAogICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKICAgICAgICAgIiIiV3JpdGUgYSBieXRlIHN0cmluZyB0byB0aGUgZmlsZS4KQEAgLTM4NiwxOCArMjU1LDkgQEAKICAgICAgICAgTGluZSBzZXBhcmF0b3JzIGFyZSBub3QgYWRkZWQgYmV0d2VlbiB0aGUgd3JpdHRlbiBieXRlIHN0cmluZ3MuCiAgICAgICAgICIiIgogICAgICAgICB3aXRoIHNlbGYuX2xvY2s6Ci0gICAgICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2Uud3JpdGVsaW5lcyhzZWxmLCBzZXEpCisgICAgICAgICAgICByZXR1cm4gX2NvbXByZXNzaW9uLkJhc2VTdHJlYW0ud3JpdGVsaW5lcyhzZWxmLCBzZXEpCiAKLSAgICAjIFJld2luZCB0aGUgZmlsZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkYXRhIHN0cmVhbS4KLSAgICBkZWYgX3Jld2luZChzZWxmKToKLSAgICAgICAgc2VsZi5fZnAuc2VlaygwLCAwKQotICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRAotICAgICAgICBzZWxmLl9wb3MgPSAwCi0gICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IEJaMkRlY29tcHJlc3NvcigpCi0gICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAotCi0gICAgZGVmIHNlZWsoc2VsZiwgb2Zmc2V0LCB3aGVuY2U9MCk6CisgICAgZGVmIHNlZWsoc2VsZiwgb2Zmc2V0LCB3aGVuY2U9aW8uU0VFS19TRVQpOgogICAgICAgICAiIiJDaGFuZ2UgdGhlIGZpbGUgcG9zaXRpb24uCiAKICAgICAgICAgVGhlIG5ldyBwb3NpdGlvbiBpcyBzcGVjaWZpZWQgYnkgb2Zmc2V0LCByZWxhdGl2ZSB0byB0aGUKQEAgLTQxNCwzNSArMjc0LDE0IEBACiAgICAgICAgICIiIgogICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CiAgICAgICAgICAgICBzZWxmLl9jaGVja19jYW5fc2VlaygpCi0KLSAgICAgICAgICAgICMgUmVjYWxjdWxhdGUgb2Zmc2V0IGFzIGFuIGFic29sdXRlIGZpbGUgcG9zaXRpb24uCi0gICAgICAgICAgICBpZiB3aGVuY2UgPT0gMDoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbGlmIHdoZW5jZSA9PSAxOgotICAgICAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3BvcyArIG9mZnNldAotICAgICAgICAgICAgZWxpZiB3aGVuY2UgPT0gMjoKLSAgICAgICAgICAgICAgICAjIFNlZWtpbmcgcmVsYXRpdmUgdG8gRU9GIC0gd2UgbmVlZCB0byBrbm93IHRoZSBmaWxlJ3Mgc2l6ZS4KLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9zaXplIDwgMDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9hbGwocmV0dXJuX2RhdGE9RmFsc2UpCi0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5fc2l6ZSArIG9mZnNldAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHZhbHVlIGZvciB3aGVuY2U6ICVzIiAlICh3aGVuY2UsKSkKLQotICAgICAgICAgICAgIyBNYWtlIGl0IHNvIHRoYXQgb2Zmc2V0IGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCBmb3J3YXJkLgotICAgICAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5fcG9zOgotICAgICAgICAgICAgICAgIHNlbGYuX3Jld2luZCgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG9mZnNldCAtPSBzZWxmLl9wb3MKLQotICAgICAgICAgICAgIyBSZWFkIGFuZCBkaXNjYXJkIGRhdGEgdW50aWwgd2UgcmVhY2ggdGhlIGRlc2lyZWQgcG9zaXRpb24uCi0gICAgICAgICAgICBzZWxmLl9yZWFkX2Jsb2NrKG9mZnNldCwgcmV0dXJuX2RhdGE9RmFsc2UpCi0KLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3MKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIuc2VlayhvZmZzZXQsIHdoZW5jZSkKIAogICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbi4iIiIKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQUQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci50ZWxsKCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3MKIAogCmRpZmYgLS1naXQgYS9MaWIvY2dpLnB5IGIvTGliL2NnaS5weQppbmRleCA0NWJhZGY2Li4yNmQyNTQ0IDEwMDc1NQotLS0gYS9MaWIvY2dpLnB5CisrKyBiL0xpYi9jZ2kucHkKQEAgLTU2Niw2ICs1NjYsMTIgQEAKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcGFzcwogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuZmlsZS5jbG9zZSgpCisKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgICIiIlJldHVybiBhIHByaW50YWJsZSByZXByZXNlbnRhdGlvbi4iIiIKICAgICAgICAgcmV0dXJuICJGaWVsZFN0b3JhZ2UoJXIsICVyLCAlcikiICUgKApkaWZmIC0tZ2l0IGEvTGliL2NnaXRiLnB5IGIvTGliL2NnaXRiLnB5CmluZGV4IDZlYjUyZTcuLmIyOTExMDAgMTAwNjQ0Ci0tLSBhL0xpYi9jZ2l0Yi5weQorKysgYi9MaWIvY2dpdGIucHkKQEAgLTI5NCw5ICsyOTQsOCBAQAogICAgICAgICAgICAgKGZkLCBwYXRoKSA9IHRlbXBmaWxlLm1rc3RlbXAoc3VmZml4PXN1ZmZpeCwgZGlyPXNlbGYubG9nZGlyKQogCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZmlsZSA9IG9zLmZkb3BlbihmZCwgJ3cnKQotICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoZG9jKQotICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQorICAgICAgICAgICAgICAgIHdpdGggb3MuZmRvcGVuKGZkLCAndycpIGFzIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoZG9jKQogICAgICAgICAgICAgICAgIG1zZyA9ICclcyBjb250YWlucyB0aGUgZGVzY3JpcHRpb24gb2YgdGhpcyBlcnJvci4nICUgcGF0aAogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIG1zZyA9ICdUcmllZCB0byBzYXZlIHRyYWNlYmFjayB0byAlcywgYnV0IGZhaWxlZC4nICUgcGF0aApkaWZmIC0tZ2l0IGEvTGliL2NvZGUucHkgYi9MaWIvY29kZS5weQppbmRleCBmODE4NGI2Li41MzI0NGUzIDEwMDY0NAotLS0gYS9MaWIvY29kZS5weQorKysgYi9MaWIvY29kZS5weQpAQCAtNyw2ICs3LDcgQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IGFyZ3BhcnNlCiBmcm9tIGNvZGVvcCBpbXBvcnQgQ29tbWFuZENvbXBpbGVyLCBjb21waWxlX2NvbW1hbmQKIAogX19hbGxfXyA9IFsiSW50ZXJhY3RpdmVJbnRlcnByZXRlciIsICJJbnRlcmFjdGl2ZUNvbnNvbGUiLCAiaW50ZXJhY3QiLApAQCAtMTM2LDI1ICsxMzcsMTggQEAKICAgICAgICAgVGhlIG91dHB1dCBpcyB3cml0dGVuIGJ5IHNlbGYud3JpdGUoKSwgYmVsb3cuCiAKICAgICAgICAgIiIiCisgICAgICAgIHN5cy5sYXN0X3R5cGUsIHN5cy5sYXN0X3ZhbHVlLCBsYXN0X3RiID0gZWkgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICBzeXMubGFzdF90cmFjZWJhY2sgPSBsYXN0X3RiCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHR5cGUsIHZhbHVlLCB0YiA9IHN5cy5leGNfaW5mbygpCi0gICAgICAgICAgICBzeXMubGFzdF90eXBlID0gdHlwZQotICAgICAgICAgICAgc3lzLmxhc3RfdmFsdWUgPSB2YWx1ZQotICAgICAgICAgICAgc3lzLmxhc3RfdHJhY2ViYWNrID0gdGIKLSAgICAgICAgICAgIHRibGlzdCA9IHRyYWNlYmFjay5leHRyYWN0X3RiKHRiKQotICAgICAgICAgICAgZGVsIHRibGlzdFs6MV0KLSAgICAgICAgICAgIGxpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9saXN0KHRibGlzdCkKLSAgICAgICAgICAgIGlmIGxpbmVzOgotICAgICAgICAgICAgICAgIGxpbmVzLmluc2VydCgwLCAiVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuIikKLSAgICAgICAgICAgIGxpbmVzLmV4dGVuZCh0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KHR5cGUsIHZhbHVlKSkKKyAgICAgICAgICAgIGxpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oZWlbMF0sIGVpWzFdLCBsYXN0X3RiLnRiX25leHQpCisgICAgICAgICAgICBpZiBzeXMuZXhjZXB0aG9vayBpcyBzeXMuX19leGNlcHRob29rX186CisgICAgICAgICAgICAgICAgc2VsZi53cml0ZSgnJy5qb2luKGxpbmVzKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBJZiBzb21lb25lIGhhcyBzZXQgc3lzLmV4Y2VwdGhvb2ssIHdlIGxldCB0aGF0IHRha2UgcHJlY2VkZW5jZQorICAgICAgICAgICAgICAgICMgb3ZlciBzZWxmLndyaXRlCisgICAgICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2soZWlbMF0sIGVpWzFdLCBsYXN0X3RiKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgdGJsaXN0ID0gdGIgPSBOb25lCi0gICAgICAgIGlmIHN5cy5leGNlcHRob29rIGlzIHN5cy5fX2V4Y2VwdGhvb2tfXzoKLSAgICAgICAgICAgIHNlbGYud3JpdGUoJycuam9pbihsaW5lcykpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIElmIHNvbWVvbmUgaGFzIHNldCBzeXMuZXhjZXB0aG9vaywgd2UgbGV0IHRoYXQgdGFrZSBwcmVjZWRlbmNlCi0gICAgICAgICAgICAjIG92ZXIgc2VsZi53cml0ZQotICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2sodHlwZSwgdmFsdWUsIHRiKQorICAgICAgICAgICAgbGFzdF90YiA9IGVpID0gTm9uZQogCiAgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgogICAgICAgICAiIiJXcml0ZSBhIHN0cmluZy4KQEAgLTI5OSw0ICsyOTMsMTIgQEAKIAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIGludGVyYWN0KCkKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXEnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJkb24ndCBwcmludCB2ZXJzaW9uIGFuZCBjb3B5cmlnaHQgbWVzc2FnZXMiKQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgaWYgYXJncy5xIG9yIHN5cy5mbGFncy5xdWlldDoKKyAgICAgICAgYmFubmVyID0gJycKKyAgICBlbHNlOgorICAgICAgICBiYW5uZXIgPSBOb25lCisgICAgaW50ZXJhY3QoYmFubmVyKQpkaWZmIC0tZ2l0IGEvTGliL2NvZGVjcy5weSBiL0xpYi9jb2RlY3MucHkKaW5kZXggNmNkZjNmNC4uMzllYzg0NSAxMDA2NDQKLS0tIGEvTGliL2NvZGVjcy5weQorKysgYi9MaWIvY29kZWNzLnB5CkBAIC0yNyw3ICsyNyw4IEBACiAgICAgICAgICAgICJnZXRpbmNyZW1lbnRhbGRlY29kZXIiLCAiZ2V0cmVhZGVyIiwgImdldHdyaXRlciIsCiAgICAgICAgICAgICJlbmNvZGUiLCAiZGVjb2RlIiwgIml0ZXJlbmNvZGUiLCAiaXRlcmRlY29kZSIsCiAgICAgICAgICAgICJzdHJpY3RfZXJyb3JzIiwgImlnbm9yZV9lcnJvcnMiLCAicmVwbGFjZV9lcnJvcnMiLAotICAgICAgICAgICAieG1sY2hhcnJlZnJlcGxhY2VfZXJyb3JzIiwgImJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzIiwKKyAgICAgICAgICAgInhtbGNoYXJyZWZyZXBsYWNlX2Vycm9ycyIsCisgICAgICAgICAgICJiYWNrc2xhc2hyZXBsYWNlX2Vycm9ycyIsICJuYW1lcmVwbGFjZV9lcnJvcnMiLAogICAgICAgICAgICAicmVnaXN0ZXJfZXJyb3IiLCAibG9va3VwX2Vycm9yIl0KIAogIyMjIENvbnN0YW50cwpAQCAtMTA1LDggKzEwNiw4IEBACiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPCVzLiVzIG9iamVjdCBmb3IgZW5jb2RpbmcgJXMgYXQgMHgleD4iICUgXAotICAgICAgICAgICAgICAgIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLCBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgcmV0dXJuICI8JXMuJXMgb2JqZWN0IGZvciBlbmNvZGluZyAlcyBhdCAlI3g+IiAlIFwKKyAgICAgICAgICAgICAgICAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAogICAgICAgICAgICAgICAgICBzZWxmLm5hbWUsIGlkKHNlbGYpKQogCiBjbGFzcyBDb2RlYzoKQEAgLTEyNiw3ICsxMjcsOCBAQAogICAgICAgICAgJ3N1cnJvZ2F0ZWVzY2FwZScgLSByZXBsYWNlIHdpdGggcHJpdmF0ZSBjb2RlIHBvaW50cyBVK0RDbm4uCiAgICAgICAgICAneG1sY2hhcnJlZnJlcGxhY2UnIC0gUmVwbGFjZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBYTUwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgcmVmZXJlbmNlIChvbmx5IGZvciBlbmNvZGluZykuCi0gICAgICAgICAnYmFja3NsYXNocmVwbGFjZScgIC0gUmVwbGFjZSB3aXRoIGJhY2tzbGFzaGVkIGVzY2FwZSBzZXF1ZW5jZXMKKyAgICAgICAgICdiYWNrc2xhc2hyZXBsYWNlJyAgLSBSZXBsYWNlIHdpdGggYmFja3NsYXNoZWQgZXNjYXBlIHNlcXVlbmNlcy4KKyAgICAgICAgICduYW1lcmVwbGFjZScgICAgICAgLSBSZXBsYWNlIHdpdGggXFxOey4uLn0gZXNjYXBlIHNlcXVlbmNlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbmx5IGZvciBlbmNvZGluZykuCiAKICAgICAgICAgVGhlIHNldCBvZiBhbGxvd2VkIHZhbHVlcyBjYW4gYmUgZXh0ZW5kZWQgdmlhIHJlZ2lzdGVyX2Vycm9yLgpAQCAtMzU4LDcgKzM2MCw4IEBACiAgICAgICAgICAgICAgJ3htbGNoYXJyZWZyZXBsYWNlJyAtIFJlcGxhY2Ugd2l0aCB0aGUgYXBwcm9wcmlhdGUgWE1MCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciByZWZlcmVuY2UuCiAgICAgICAgICAgICAgJ2JhY2tzbGFzaHJlcGxhY2UnICAtIFJlcGxhY2Ugd2l0aCBiYWNrc2xhc2hlZCBlc2NhcGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2VzIChvbmx5IGZvciBlbmNvZGluZykuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlcy4KKyAgICAgICAgICAgICAnbmFtZXJlcGxhY2UnICAgICAgIC0gUmVwbGFjZSB3aXRoIFxcTnsuLi59IGVzY2FwZSBzZXF1ZW5jZXMuCiAKICAgICAgICAgICAgIFRoZSBzZXQgb2YgYWxsb3dlZCBwYXJhbWV0ZXIgdmFsdWVzIGNhbiBiZSBleHRlbmRlZCB2aWEKICAgICAgICAgICAgIHJlZ2lzdGVyX2Vycm9yLgpAQCAtNDI4LDcgKzQzMSw4IEBACiAKICAgICAgICAgICAgICAnc3RyaWN0JyAtIHJhaXNlIGEgVmFsdWVFcnJvciAob3IgYSBzdWJjbGFzcykKICAgICAgICAgICAgICAnaWdub3JlJyAtIGlnbm9yZSB0aGUgY2hhcmFjdGVyIGFuZCBjb250aW51ZSB3aXRoIHRoZSBuZXh0Ci0gICAgICAgICAgICAgJ3JlcGxhY2UnLSByZXBsYWNlIHdpdGggYSBzdWl0YWJsZSByZXBsYWNlbWVudCBjaGFyYWN0ZXI7CisgICAgICAgICAgICAgJ3JlcGxhY2UnLSByZXBsYWNlIHdpdGggYSBzdWl0YWJsZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAnYmFja3NsYXNocmVwbGFjZScgLSBSZXBsYWNlIHdpdGggYmFja3NsYXNoZWQgZXNjYXBlIHNlcXVlbmNlczsKIAogICAgICAgICAgICAgVGhlIHNldCBvZiBhbGxvd2VkIHBhcmFtZXRlciB2YWx1ZXMgY2FuIGJlIGV4dGVuZGVkIHZpYQogICAgICAgICAgICAgcmVnaXN0ZXJfZXJyb3IuCkBAIC0xMDgwLDYgKzEwODQsNyBAQAogICAgIHJlcGxhY2VfZXJyb3JzID0gbG9va3VwX2Vycm9yKCJyZXBsYWNlIikKICAgICB4bWxjaGFycmVmcmVwbGFjZV9lcnJvcnMgPSBsb29rdXBfZXJyb3IoInhtbGNoYXJyZWZyZXBsYWNlIikKICAgICBiYWNrc2xhc2hyZXBsYWNlX2Vycm9ycyA9IGxvb2t1cF9lcnJvcigiYmFja3NsYXNocmVwbGFjZSIpCisgICAgbmFtZXJlcGxhY2VfZXJyb3JzID0gbG9va3VwX2Vycm9yKCJuYW1lcmVwbGFjZSIpCiBleGNlcHQgTG9va3VwRXJyb3I6CiAgICAgIyBJbiAtLWRpc2FibGUtdW5pY29kZSBidWlsZHMsIHRoZXNlIGVycm9yIGhhbmRsZXIgYXJlIG1pc3NpbmcKICAgICBzdHJpY3RfZXJyb3JzID0gTm9uZQpAQCAtMTA4Nyw2ICsxMDkyLDcgQEAKICAgICByZXBsYWNlX2Vycm9ycyA9IE5vbmUKICAgICB4bWxjaGFycmVmcmVwbGFjZV9lcnJvcnMgPSBOb25lCiAgICAgYmFja3NsYXNocmVwbGFjZV9lcnJvcnMgPSBOb25lCisgICAgbmFtZXJlcGxhY2VfZXJyb3JzID0gTm9uZQogCiAjIFRlbGwgbW9kdWxlZmluZGVyIHRoYXQgdXNpbmcgY29kZWNzIHByb2JhYmx5IG5lZWRzIHRoZSBlbmNvZGluZ3MKICMgcGFja2FnZQpkaWZmIC0tZ2l0IGEvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5IGIvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5CmluZGV4IGY5NDIxMGUuLjA5MWU1ZDMgMTAwNjQ0Ci0tLSBhL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQorKysgYi9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkKQEAgLTEsMyArMSwxOSBAQAorJycnVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBzcGVjaWFsaXplZCBjb250YWluZXIgZGF0YXR5cGVzIHByb3ZpZGluZworYWx0ZXJuYXRpdmVzIHRvIFB5dGhvbidzIGdlbmVyYWwgcHVycG9zZSBidWlsdC1pbiBjb250YWluZXJzLCBkaWN0LAorbGlzdCwgc2V0LCBhbmQgdHVwbGUuCisKKyogbmFtZWR0dXBsZSAgIGZhY3RvcnkgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIHR1cGxlIHN1YmNsYXNzZXMgd2l0aCBuYW1lZCBmaWVsZHMKKyogZGVxdWUgICAgICAgIGxpc3QtbGlrZSBjb250YWluZXIgd2l0aCBmYXN0IGFwcGVuZHMgYW5kIHBvcHMgb24gZWl0aGVyIGVuZAorKiBDaGFpbk1hcCAgICAgZGljdC1saWtlIGNsYXNzIGZvciBjcmVhdGluZyBhIHNpbmdsZSB2aWV3IG9mIG11bHRpcGxlIG1hcHBpbmdzCisqIENvdW50ZXIgICAgICBkaWN0IHN1YmNsYXNzIGZvciBjb3VudGluZyBoYXNoYWJsZSBvYmplY3RzCisqIE9yZGVyZWREaWN0ICBkaWN0IHN1YmNsYXNzIHRoYXQgcmVtZW1iZXJzIHRoZSBvcmRlciBlbnRyaWVzIHdlcmUgYWRkZWQKKyogZGVmYXVsdGRpY3QgIGRpY3Qgc3ViY2xhc3MgdGhhdCBjYWxscyBhIGZhY3RvcnkgZnVuY3Rpb24gdG8gc3VwcGx5IG1pc3NpbmcgdmFsdWVzCisqIFVzZXJEaWN0ICAgICB3cmFwcGVyIGFyb3VuZCBkaWN0aW9uYXJ5IG9iamVjdHMgZm9yIGVhc2llciBkaWN0IHN1YmNsYXNzaW5nCisqIFVzZXJMaXN0ICAgICB3cmFwcGVyIGFyb3VuZCBsaXN0IG9iamVjdHMgZm9yIGVhc2llciBsaXN0IHN1YmNsYXNzaW5nCisqIFVzZXJTdHJpbmcgICB3cmFwcGVyIGFyb3VuZCBzdHJpbmcgb2JqZWN0cyBmb3IgZWFzaWVyIHN0cmluZyBzdWJjbGFzc2luZworCisnJycKKwogX19hbGxfXyA9IFsnZGVxdWUnLCAnZGVmYXVsdGRpY3QnLCAnbmFtZWR0dXBsZScsICdVc2VyRGljdCcsICdVc2VyTGlzdCcsCiAgICAgICAgICAgICAnVXNlclN0cmluZycsICdDb3VudGVyJywgJ09yZGVyZWREaWN0JywgJ0NoYWluTWFwJ10KIApAQCAtNyw3ICsyMyw2IEBACiBpbXBvcnQgX2NvbGxlY3Rpb25zX2FiYwogX19hbGxfXyArPSBfY29sbGVjdGlvbnNfYWJjLl9fYWxsX18KIAotZnJvbSBfY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlLCBkZWZhdWx0ZGljdAogZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlciBhcyBfaXRlbWdldHRlciwgZXEgYXMgX2VxCiBmcm9tIGtleXdvcmQgaW1wb3J0IGlza2V5d29yZCBhcyBfaXNrZXl3b3JkCiBpbXBvcnQgc3lzIGFzIF9zeXMKQEAgLTE2LDEwICszMSw0MCBAQAogZnJvbSBpdGVydG9vbHMgaW1wb3J0IHJlcGVhdCBhcyBfcmVwZWF0LCBjaGFpbiBhcyBfY2hhaW4sIHN0YXJtYXAgYXMgX3N0YXJtYXAKIGZyb20gcmVwcmxpYiBpbXBvcnQgcmVjdXJzaXZlX3JlcHIgYXMgX3JlY3Vyc2l2ZV9yZXByCiAKK3RyeToKKyAgICBmcm9tIF9jb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCitlbHNlOgorICAgIE11dGFibGVTZXF1ZW5jZS5yZWdpc3RlcihkZXF1ZSkKKwordHJ5OgorICAgIGZyb20gX2NvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKKworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIE9yZGVyZWREaWN0CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCitjbGFzcyBfT3JkZXJlZERpY3RLZXlzVmlldyhLZXlzVmlldyk6CisKKyAgICBkZWYgX19yZXZlcnNlZF9fKHNlbGYpOgorICAgICAgICB5aWVsZCBmcm9tIHJldmVyc2VkKHNlbGYuX21hcHBpbmcpCisKK2NsYXNzIF9PcmRlcmVkRGljdEl0ZW1zVmlldyhJdGVtc1ZpZXcpOgorCisgICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKToKKyAgICAgICAgZm9yIGtleSBpbiByZXZlcnNlZChzZWxmLl9tYXBwaW5nKToKKyAgICAgICAgICAgIHlpZWxkIChrZXksIHNlbGYuX21hcHBpbmdba2V5XSkKKworY2xhc3MgX09yZGVyZWREaWN0VmFsdWVzVmlldyhWYWx1ZXNWaWV3KToKKworICAgIGRlZiBfX3JldmVyc2VkX18oc2VsZik6CisgICAgICAgIGZvciBrZXkgaW4gcmV2ZXJzZWQoc2VsZi5fbWFwcGluZyk6CisgICAgICAgICAgICB5aWVsZCBzZWxmLl9tYXBwaW5nW2tleV0KKwogY2xhc3MgX0xpbmsob2JqZWN0KToKICAgICBfX3Nsb3RzX18gPSAncHJldicsICduZXh0JywgJ2tleScsICdfX3dlYWtyZWZfXycKIApAQCAtODMsNiArMTI4LDggQEAKICAgICAgICAgbGlua19uZXh0ID0gbGluay5uZXh0CiAgICAgICAgIGxpbmtfcHJldi5uZXh0ID0gbGlua19uZXh0CiAgICAgICAgIGxpbmtfbmV4dC5wcmV2ID0gbGlua19wcmV2CisgICAgICAgIGxpbmsucHJldiA9IE5vbmUKKyAgICAgICAgbGluay5uZXh0ID0gTm9uZQogCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICAnb2QuX19pdGVyX18oKSA8PT0+IGl0ZXIob2QpJwpAQCAtMTY2LDkgKzIxMywxOSBAQAogICAgICAgICByZXR1cm4gc2l6ZQogCiAgICAgdXBkYXRlID0gX191cGRhdGUgPSBNdXRhYmxlTWFwcGluZy51cGRhdGUKLSAgICBrZXlzID0gTXV0YWJsZU1hcHBpbmcua2V5cwotICAgIHZhbHVlcyA9IE11dGFibGVNYXBwaW5nLnZhbHVlcwotICAgIGl0ZW1zID0gTXV0YWJsZU1hcHBpbmcuaXRlbXMKKworICAgIGRlZiBrZXlzKHNlbGYpOgorICAgICAgICAiRC5rZXlzKCkgLT4gYSBzZXQtbGlrZSBvYmplY3QgcHJvdmlkaW5nIGEgdmlldyBvbiBEJ3Mga2V5cyIKKyAgICAgICAgcmV0dXJuIF9PcmRlcmVkRGljdEtleXNWaWV3KHNlbGYpCisKKyAgICBkZWYgaXRlbXMoc2VsZik6CisgICAgICAgICJELml0ZW1zKCkgLT4gYSBzZXQtbGlrZSBvYmplY3QgcHJvdmlkaW5nIGEgdmlldyBvbiBEJ3MgaXRlbXMiCisgICAgICAgIHJldHVybiBfT3JkZXJlZERpY3RJdGVtc1ZpZXcoc2VsZikKKworICAgIGRlZiB2YWx1ZXMoc2VsZik6CisgICAgICAgICJELnZhbHVlcygpIC0+IGFuIG9iamVjdCBwcm92aWRpbmcgYSB2aWV3IG9uIEQncyB2YWx1ZXMiCisgICAgICAgIHJldHVybiBfT3JkZXJlZERpY3RWYWx1ZXNWaWV3KHNlbGYpCisKICAgICBfX25lX18gPSBNdXRhYmxlTWFwcGluZy5fX25lX18KIAogICAgIF9fbWFya2VyID0gb2JqZWN0KCkKQEAgLTIzMyw2ICsyOTAsMTMgQEAKICAgICAgICAgcmV0dXJuIGRpY3QuX19lcV9fKHNlbGYsIG90aGVyKQogCiAKK3RyeToKKyAgICBmcm9tIF9jb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAjIExlYXZlIHRoZSBwdXJlIFB5dGhvbiB2ZXJzaW9uIGluIHBsYWNlLgorICAgIHBhc3MKKworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIG5hbWVkdHVwbGUKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC02OTYsMTQgKzc2MCwyMiBAQAogCiAgICAgZGVmIF9fcG9zX18oc2VsZik6CiAgICAgICAgICdBZGRzIGFuIGVtcHR5IGNvdW50ZXIsIGVmZmVjdGl2ZWx5IHN0cmlwcGluZyBuZWdhdGl2ZSBhbmQgemVybyBjb3VudHMnCi0gICAgICAgIHJldHVybiBzZWxmICsgQ291bnRlcigpCisgICAgICAgIHJlc3VsdCA9IENvdW50ZXIoKQorICAgICAgICBmb3IgZWxlbSwgY291bnQgaW4gc2VsZi5pdGVtcygpOgorICAgICAgICAgICAgaWYgY291bnQgPiAwOgorICAgICAgICAgICAgICAgIHJlc3VsdFtlbGVtXSA9IGNvdW50CisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBfX25lZ19fKHNlbGYpOgogICAgICAgICAnJydTdWJ0cmFjdHMgZnJvbSBhbiBlbXB0eSBjb3VudGVyLiAgU3RyaXBzIHBvc2l0aXZlIGFuZCB6ZXJvIGNvdW50cywKICAgICAgICAgYW5kIGZsaXBzIHRoZSBzaWduIG9uIG5lZ2F0aXZlIGNvdW50cy4KIAogICAgICAgICAnJycKLSAgICAgICAgcmV0dXJuIENvdW50ZXIoKSAtIHNlbGYKKyAgICAgICAgcmVzdWx0ID0gQ291bnRlcigpCisgICAgICAgIGZvciBlbGVtLCBjb3VudCBpbiBzZWxmLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBjb3VudCA8IDA6CisgICAgICAgICAgICAgICAgcmVzdWx0W2VsZW1dID0gMCAtIGNvdW50CisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBfa2VlcF9wb3NpdGl2ZShzZWxmKToKICAgICAgICAgJycnSW50ZXJuYWwgbWV0aG9kIHRvIHN0cmlwIGVsZW1lbnRzIHdpdGggYSBuZWdhdGl2ZSBvciB6ZXJvIGNvdW50JycnCkBAIC05NjMsNyArMTAzNSw2IEBACiAgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPCAgc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPD0gc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPT0gc2VsZi5fX2Nhc3Qob3RoZXIpCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgIT0gc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPiAgc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPj0gc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fY2FzdChzZWxmLCBvdGhlcik6CkBAIC0xMDM1LDE1ICsxMTA2LDEzIEBACiAgICAgZGVmIF9fZmxvYXRfXyhzZWxmKTogcmV0dXJuIGZsb2F0KHNlbGYuZGF0YSkKICAgICBkZWYgX19jb21wbGV4X18oc2VsZik6IHJldHVybiBjb21wbGV4KHNlbGYuZGF0YSkKICAgICBkZWYgX19oYXNoX18oc2VsZik6IHJldHVybiBoYXNoKHNlbGYuZGF0YSkKKyAgICBkZWYgX19nZXRuZXdhcmdzX18oc2VsZik6CisgICAgICAgIHJldHVybiAoc2VsZi5kYXRhWzpdLCkKIAogICAgIGRlZiBfX2VxX18oc2VsZiwgc3RyaW5nKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShzdHJpbmcsIFVzZXJTdHJpbmcpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSA9PSBzdHJpbmcuZGF0YQogICAgICAgICByZXR1cm4gc2VsZi5kYXRhID09IHN0cmluZwotICAgIGRlZiBfX25lX18oc2VsZiwgc3RyaW5nKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShzdHJpbmcsIFVzZXJTdHJpbmcpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSAhPSBzdHJpbmcuZGF0YQotICAgICAgICByZXR1cm4gc2VsZi5kYXRhICE9IHN0cmluZwogICAgIGRlZiBfX2x0X18oc2VsZiwgc3RyaW5nKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShzdHJpbmcsIFVzZXJTdHJpbmcpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSA8IHN0cmluZy5kYXRhCkBAIC0xMDgzLDkgKzExNTIsMTMgQEAKICAgICBfX3JtdWxfXyA9IF9fbXVsX18KICAgICBkZWYgX19tb2RfXyhzZWxmLCBhcmdzKToKICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YSAlIGFyZ3MpCisgICAgZGVmIF9fcm1vZF9fKHNlbGYsIGZvcm1hdCk6CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhmb3JtYXQgJSBhcmdzKQogCiAgICAgIyB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIGRlZmluZWQgaW4gYWxwaGFiZXRpY2FsIG9yZGVyOgogICAgIGRlZiBjYXBpdGFsaXplKHNlbGYpOiByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLmNhcGl0YWxpemUoKSkKKyAgICBkZWYgY2FzZWZvbGQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEuY2FzZWZvbGQoKSkKICAgICBkZWYgY2VudGVyKHNlbGYsIHdpZHRoLCAqYXJncyk6CiAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEuY2VudGVyKHdpZHRoLCAqYXJncykpCiAgICAgZGVmIGNvdW50KHNlbGYsIHN1Yiwgc3RhcnQ9MCwgZW5kPV9zeXMubWF4c2l6ZSk6CkBAIC0xMTA4LDYgKzExODEsOCBAQAogICAgICAgICByZXR1cm4gc2VsZi5kYXRhLmZpbmQoc3ViLCBzdGFydCwgZW5kKQogICAgIGRlZiBmb3JtYXQoc2VsZiwgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgIHJldHVybiBzZWxmLmRhdGEuZm9ybWF0KCphcmdzLCAqKmt3ZHMpCisgICAgZGVmIGZvcm1hdF9tYXAoc2VsZiwgbWFwcGluZyk6CisgICAgICAgIHJldHVybiBzZWxmLmRhdGEuZm9ybWF0X21hcChtYXBwaW5nKQogICAgIGRlZiBpbmRleChzZWxmLCBzdWIsIHN0YXJ0PTAsIGVuZD1fc3lzLm1heHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5kYXRhLmluZGV4KHN1Yiwgc3RhcnQsIGVuZCkKICAgICBkZWYgaXNhbHBoYShzZWxmKTogcmV0dXJuIHNlbGYuZGF0YS5pc2FscGhhKCkKQEAgLTExMTcsNiArMTE5Miw3IEBACiAgICAgZGVmIGlzaWRlbnRpZmllcihzZWxmKTogcmV0dXJuIHNlbGYuZGF0YS5pc2lkZW50aWZpZXIoKQogICAgIGRlZiBpc2xvd2VyKHNlbGYpOiByZXR1cm4gc2VsZi5kYXRhLmlzbG93ZXIoKQogICAgIGRlZiBpc251bWVyaWMoc2VsZik6IHJldHVybiBzZWxmLmRhdGEuaXNudW1lcmljKCkKKyAgICBkZWYgaXNwcmludGFibGUoc2VsZik6IHJldHVybiBzZWxmLmRhdGEuaXNwcmludGFibGUoKQogICAgIGRlZiBpc3NwYWNlKHNlbGYpOiByZXR1cm4gc2VsZi5kYXRhLmlzc3BhY2UoKQogICAgIGRlZiBpc3RpdGxlKHNlbGYpOiByZXR1cm4gc2VsZi5kYXRhLmlzdGl0bGUoKQogICAgIGRlZiBpc3VwcGVyKHNlbGYpOiByZXR1cm4gc2VsZi5kYXRhLmlzdXBwZXIoKQpAQCAtMTEyNSw2ICsxMjAxLDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS5sanVzdCh3aWR0aCwgKmFyZ3MpKQogICAgIGRlZiBsb3dlcihzZWxmKTogcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS5sb3dlcigpKQogICAgIGRlZiBsc3RyaXAoc2VsZiwgY2hhcnM9Tm9uZSk6IHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEubHN0cmlwKGNoYXJzKSkKKyAgICBtYWtldHJhbnMgPSBzdHIubWFrZXRyYW5zCiAgICAgZGVmIHBhcnRpdGlvbihzZWxmLCBzZXApOgogICAgICAgICByZXR1cm4gc2VsZi5kYXRhLnBhcnRpdGlvbihzZXApCiAgICAgZGVmIHJlcGxhY2Uoc2VsZiwgb2xkLCBuZXcsIG1heHNwbGl0PS0xKToKZGlmZiAtLWdpdCBhL0xpYi9jb21waWxlYWxsLnB5IGIvTGliL2NvbXBpbGVhbGwucHkKaW5kZXggOGUxNTY5Yy4uMGNjMGMxZCAxMDA2NDQKLS0tIGEvTGliL2NvbXBpbGVhbGwucHkKKysrIGIvTGliL2NvbXBpbGVhbGwucHkKQEAgLTEsNCArMSw0IEBACi0iIiJNb2R1bGUvc2NyaXB0IHRvIGJ5dGUtY29tcGlsZSBhbGwgLnB5IGZpbGVzIHRvIC5weWMgKG9yIC5weW8pIGZpbGVzLgorIiIiTW9kdWxlL3NjcmlwdCB0byBieXRlLWNvbXBpbGUgYWxsIC5weSBmaWxlcyB0byAucHljIGZpbGVzLgogCiBXaGVuIGNhbGxlZCBhcyBhIHNjcmlwdCB3aXRoIGFyZ3VtZW50cywgdGhpcyBjb21waWxlcyB0aGUgZGlyZWN0b3JpZXMKIGdpdmVuIGFzIGFyZ3VtZW50cyByZWN1cnNpdmVseTsgdGhlIC1sIG9wdGlvbiBwcmV2ZW50cyBpdCBmcm9tCkBAIC0xNiwzMiArMTYsMjQgQEAKIGltcG9ydCBweV9jb21waWxlCiBpbXBvcnQgc3RydWN0CiAKK3RyeToKKyAgICBmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcyBpbXBvcnQgUHJvY2Vzc1Bvb2xFeGVjdXRvcgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIFByb2Nlc3NQb29sRXhlY3V0b3IgPSBOb25lCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAorCiBfX2FsbF9fID0gWyJjb21waWxlX2RpciIsImNvbXBpbGVfZmlsZSIsImNvbXBpbGVfcGF0aCJdCiAKLWRlZiBjb21waWxlX2RpcihkaXIsIG1heGxldmVscz0xMCwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwKLSAgICAgICAgICAgICAgICBxdWlldD1GYWxzZSwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSk6Ci0gICAgIiIiQnl0ZS1jb21waWxlIGFsbCBtb2R1bGVzIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkgdHJlZS4KLQotICAgIEFyZ3VtZW50cyAob25seSBkaXIgaXMgcmVxdWlyZWQpOgotCi0gICAgZGlyOiAgICAgICB0aGUgZGlyZWN0b3J5IHRvIGJ5dGUtY29tcGlsZQotICAgIG1heGxldmVsczogbWF4aW11bSByZWN1cnNpb24gbGV2ZWwgKGRlZmF1bHQgMTApCi0gICAgZGRpcjogICAgICB0aGUgZGlyZWN0b3J5IHRoYXQgd2lsbCBiZSBwcmVwZW5kZWQgdG8gdGhlIHBhdGggdG8gdGhlCi0gICAgICAgICAgICAgICBmaWxlIGFzIGl0IGlzIGNvbXBpbGVkIGludG8gZWFjaCBieXRlLWNvZGUgZmlsZS4KLSAgICBmb3JjZTogICAgIGlmIFRydWUsIGZvcmNlIGNvbXBpbGF0aW9uLCBldmVuIGlmIHRpbWVzdGFtcHMgYXJlIHVwLXRvLWRhdGUKLSAgICBxdWlldDogICAgIGlmIFRydWUsIGJlIHF1aWV0IGR1cmluZyBjb21waWxhdGlvbgotICAgIGxlZ2FjeTogICAgaWYgVHJ1ZSwgcHJvZHVjZSBsZWdhY3kgcHljIHBhdGhzIGluc3RlYWQgb2YgUEVQIDMxNDcgcGF0aHMKLSAgICBvcHRpbWl6ZTogIG9wdGltaXphdGlvbiBsZXZlbCBvciAtMSBmb3IgbGV2ZWwgb2YgdGhlIGludGVycHJldGVyCi0gICAgIiIiCitkZWYgX3dhbGtfZGlyKGRpciwgZGRpcj1Ob25lLCBtYXhsZXZlbHM9MTAsIHF1aWV0PTApOgogICAgIGlmIG5vdCBxdWlldDoKICAgICAgICAgcHJpbnQoJ0xpc3RpbmcgeyFyfS4uLicuZm9ybWF0KGRpcikpCiAgICAgdHJ5OgogICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoZGlyKQogICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBwcmludCgiQ2FuJ3QgbGlzdCB7IXJ9Ii5mb3JtYXQoZGlyKSkKKyAgICAgICAgaWYgcXVpZXQgPCAyOgorICAgICAgICAgICAgcHJpbnQoIkNhbid0IGxpc3QgeyFyfSIuZm9ybWF0KGRpcikpCiAgICAgICAgIG5hbWVzID0gW10KICAgICBuYW1lcy5zb3J0KCkKLSAgICBzdWNjZXNzID0gMQogICAgIGZvciBuYW1lIGluIG5hbWVzOgogICAgICAgICBpZiBuYW1lID09ICdfX3B5Y2FjaGVfXyc6CiAgICAgICAgICAgICBjb250aW51ZQpAQCAtNTEsMTcgKzQzLDUzIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkZmlsZSA9IE5vbmUKICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZnVsbG5hbWUpOgotICAgICAgICAgICAgaWYgbm90IGNvbXBpbGVfZmlsZShmdWxsbmFtZSwgZGRpciwgZm9yY2UsIHJ4LCBxdWlldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5LCBvcHRpbWl6ZSk6Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IDAKKyAgICAgICAgICAgIHlpZWxkIGZ1bGxuYW1lCiAgICAgICAgIGVsaWYgKG1heGxldmVscyA+IDAgYW5kIG5hbWUgIT0gb3MuY3VyZGlyIGFuZCBuYW1lICE9IG9zLnBhcmRpciBhbmQKICAgICAgICAgICAgICAgb3MucGF0aC5pc2RpcihmdWxsbmFtZSkgYW5kIG5vdCBvcy5wYXRoLmlzbGluayhmdWxsbmFtZSkpOgotICAgICAgICAgICAgaWYgbm90IGNvbXBpbGVfZGlyKGZ1bGxuYW1lLCBtYXhsZXZlbHMgLSAxLCBkZmlsZSwgZm9yY2UsIHJ4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aWV0LCBsZWdhY3ksIG9wdGltaXplKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gX3dhbGtfZGlyKGZ1bGxuYW1lLCBkZGlyPWRmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGV2ZWxzPW1heGxldmVscyAtIDEsIHF1aWV0PXF1aWV0KQorCitkZWYgY29tcGlsZV9kaXIoZGlyLCBtYXhsZXZlbHM9MTAsIGRkaXI9Tm9uZSwgZm9yY2U9RmFsc2UsIHJ4PU5vbmUsCisgICAgICAgICAgICAgICAgcXVpZXQ9MCwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSwgd29ya2Vycz0xKToKKyAgICAiIiJCeXRlLWNvbXBpbGUgYWxsIG1vZHVsZXMgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeSB0cmVlLgorCisgICAgQXJndW1lbnRzIChvbmx5IGRpciBpcyByZXF1aXJlZCk6CisKKyAgICBkaXI6ICAgICAgIHRoZSBkaXJlY3RvcnkgdG8gYnl0ZS1jb21waWxlCisgICAgbWF4bGV2ZWxzOiBtYXhpbXVtIHJlY3Vyc2lvbiBsZXZlbCAoZGVmYXVsdCAxMCkKKyAgICBkZGlyOiAgICAgIHRoZSBkaXJlY3RvcnkgdGhhdCB3aWxsIGJlIHByZXBlbmRlZCB0byB0aGUgcGF0aCB0byB0aGUKKyAgICAgICAgICAgICAgIGZpbGUgYXMgaXQgaXMgY29tcGlsZWQgaW50byBlYWNoIGJ5dGUtY29kZSBmaWxlLgorICAgIGZvcmNlOiAgICAgaWYgVHJ1ZSwgZm9yY2UgY29tcGlsYXRpb24sIGV2ZW4gaWYgdGltZXN0YW1wcyBhcmUgdXAtdG8tZGF0ZQorICAgIHF1aWV0OiAgICAgZnVsbCBvdXRwdXQgd2l0aCBGYWxzZSBvciAwLCBlcnJvcnMgb25seSB3aXRoIDEsCisgICAgICAgICAgICAgICBubyBvdXRwdXQgd2l0aCAyCisgICAgbGVnYWN5OiAgICBpZiBUcnVlLCBwcm9kdWNlIGxlZ2FjeSBweWMgcGF0aHMgaW5zdGVhZCBvZiBQRVAgMzE0NyBwYXRocworICAgIG9wdGltaXplOiAgb3B0aW1pemF0aW9uIGxldmVsIG9yIC0xIGZvciBsZXZlbCBvZiB0aGUgaW50ZXJwcmV0ZXIKKyAgICB3b3JrZXJzOiAgIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMKKyAgICAiIiIKKyAgICBmaWxlcyA9IF93YWxrX2RpcihkaXIsIHF1aWV0PXF1aWV0LCBtYXhsZXZlbHM9bWF4bGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgIGRkaXI9ZGRpcikKKyAgICBzdWNjZXNzID0gMQorICAgIGlmIHdvcmtlcnMgaXMgbm90IE5vbmUgYW5kIHdvcmtlcnMgIT0gMSBhbmQgUHJvY2Vzc1Bvb2xFeGVjdXRvciBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgd29ya2VycyA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd3b3JrZXJzIG11c3QgYmUgZ3JlYXRlciBvciBlcXVhbCB0byAwJykKKworICAgICAgICB3b3JrZXJzID0gd29ya2VycyBvciBOb25lCisgICAgICAgIHdpdGggUHJvY2Vzc1Bvb2xFeGVjdXRvcihtYXhfd29ya2Vycz13b3JrZXJzKSBhcyBleGVjdXRvcjoKKyAgICAgICAgICAgIHJlc3VsdHMgPSBleGVjdXRvci5tYXAocGFydGlhbChjb21waWxlX2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRpcj1kZGlyLCBmb3JjZT1mb3JjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByeD1yeCwgcXVpZXQ9cXVpZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5PWxlZ2FjeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6ZT1vcHRpbWl6ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzKQorICAgICAgICAgICAgc3VjY2VzcyA9IG1pbihyZXN1bHRzLCBkZWZhdWx0PTEpCisgICAgZWxzZToKKyAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICBpZiBub3QgY29tcGlsZV9maWxlKGZpbGUsIGRkaXIsIGZvcmNlLCByeCwgcXVpZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2FjeSwgb3B0aW1pemUpOgogICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCiAgICAgcmV0dXJuIHN1Y2Nlc3MKIAotZGVmIGNvbXBpbGVfZmlsZShmdWxsbmFtZSwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwgcXVpZXQ9RmFsc2UsCitkZWYgY29tcGlsZV9maWxlKGZ1bGxuYW1lLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD0wLAogICAgICAgICAgICAgICAgICBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xKToKICAgICAiIiJCeXRlLWNvbXBpbGUgb25lIGZpbGUuCiAKQEAgLTcxLDcgKzk5LDggQEAKICAgICBkZGlyOiAgICAgIGlmIGdpdmVuLCB0aGUgZGlyZWN0b3J5IG5hbWUgY29tcGlsZWQgaW4gdG8gdGhlCiAgICAgICAgICAgICAgICBieXRlLWNvZGUgZmlsZS4KICAgICBmb3JjZTogICAgIGlmIFRydWUsIGZvcmNlIGNvbXBpbGF0aW9uLCBldmVuIGlmIHRpbWVzdGFtcHMgYXJlIHVwLXRvLWRhdGUKLSAgICBxdWlldDogICAgIGlmIFRydWUsIGJlIHF1aWV0IGR1cmluZyBjb21waWxhdGlvbgorICAgIHF1aWV0OiAgICAgZnVsbCBvdXRwdXQgd2l0aCBGYWxzZSBvciAwLCBlcnJvcnMgb25seSB3aXRoIDEsCisgICAgICAgICAgICAgICBubyBvdXRwdXQgd2l0aCAyCiAgICAgbGVnYWN5OiAgICBpZiBUcnVlLCBwcm9kdWNlIGxlZ2FjeSBweWMgcGF0aHMgaW5zdGVhZCBvZiBQRVAgMzE0NyBwYXRocwogICAgIG9wdGltaXplOiAgb3B0aW1pemF0aW9uIGxldmVsIG9yIC0xIGZvciBsZXZlbCBvZiB0aGUgaW50ZXJwcmV0ZXIKICAgICAiIiIKQEAgLTg3LDExICsxMTYsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBzdWNjZXNzCiAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZnVsbG5hbWUpOgogICAgICAgICBpZiBsZWdhY3k6Ci0gICAgICAgICAgICBjZmlsZSA9IGZ1bGxuYW1lICsgKCdjJyBpZiBfX2RlYnVnX18gZWxzZSAnbycpCisgICAgICAgICAgICBjZmlsZSA9IGZ1bGxuYW1lICsgJ2MnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpZiBvcHRpbWl6ZSA+PSAwOgorICAgICAgICAgICAgICAgIG9wdCA9IG9wdGltaXplIGlmIG9wdGltaXplID49IDEgZWxzZSAnJwogICAgICAgICAgICAgICAgIGNmaWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxuYW1lLCBkZWJ1Z19vdmVycmlkZT1ub3Qgb3B0aW1pemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxuYW1lLCBvcHRpbWl6YXRpb249b3B0KQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjZmlsZSA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZ1bGxuYW1lKQogICAgICAgICAgICAgY2FjaGVfZGlyID0gb3MucGF0aC5kaXJuYW1lKGNmaWxlKQpAQCAtMTE0LDcgKzE0NCwxMCBAQAogICAgICAgICAgICAgICAgIG9rID0gcHlfY29tcGlsZS5jb21waWxlKGZ1bGxuYW1lLCBjZmlsZSwgZGZpbGUsIFRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemU9b3B0aW1pemUpCiAgICAgICAgICAgICBleGNlcHQgcHlfY29tcGlsZS5QeUNvbXBpbGVFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgaWYgcXVpZXQ6CisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IDAKKyAgICAgICAgICAgICAgICBpZiBxdWlldCA+PSAyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VzcworICAgICAgICAgICAgICAgIGVsaWYgcXVpZXQ6CiAgICAgICAgICAgICAgICAgICAgIHByaW50KCcqKiogRXJyb3IgY29tcGlsaW5nIHshcn0uLi4nLmZvcm1hdChmdWxsbmFtZSkpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJyoqKiAnLCBlbmQ9JycpCkBAIC0xMjMsMjAgKzE1NiwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz0nYmFja3NsYXNocmVwbGFjZScpCiAgICAgICAgICAgICAgICAgbXNnID0gbXNnLmRlY29kZShzeXMuc3Rkb3V0LmVuY29kaW5nKQogICAgICAgICAgICAgICAgIHByaW50KG1zZykKLSAgICAgICAgICAgICAgICBzdWNjZXNzID0gMAogICAgICAgICAgICAgZXhjZXB0IChTeW50YXhFcnJvciwgVW5pY29kZUVycm9yLCBPU0Vycm9yKSBhcyBlOgotICAgICAgICAgICAgICAgIGlmIHF1aWV0OgorICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCisgICAgICAgICAgICAgICAgaWYgcXVpZXQgPj0gMjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MKKyAgICAgICAgICAgICAgICBlbGlmIHF1aWV0OgogICAgICAgICAgICAgICAgICAgICBwcmludCgnKioqIEVycm9yIGNvbXBpbGluZyB7IXJ9Li4uJy5mb3JtYXQoZnVsbG5hbWUpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHByaW50KCcqKiogJywgZW5kPScnKQogICAgICAgICAgICAgICAgIHByaW50KGUuX19jbGFzc19fLl9fbmFtZV9fICsgJzonLCBlKQotICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGlmIG9rID09IDA6CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCiAgICAgcmV0dXJuIHN1Y2Nlc3MKIAotZGVmIGNvbXBpbGVfcGF0aChza2lwX2N1cmRpcj0xLCBtYXhsZXZlbHM9MCwgZm9yY2U9RmFsc2UsIHF1aWV0PUZhbHNlLAorZGVmIGNvbXBpbGVfcGF0aChza2lwX2N1cmRpcj0xLCBtYXhsZXZlbHM9MCwgZm9yY2U9RmFsc2UsIHF1aWV0PTAsCiAgICAgICAgICAgICAgICAgIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEpOgogICAgICIiIkJ5dGUtY29tcGlsZSBhbGwgbW9kdWxlIG9uIHN5cy5wYXRoLgogCkBAIC0xNDUsMTQgKzE3OSwxNSBAQAogICAgIHNraXBfY3VyZGlyOiBpZiB0cnVlLCBza2lwIGN1cnJlbnQgZGlyZWN0b3J5IChkZWZhdWx0IFRydWUpCiAgICAgbWF4bGV2ZWxzOiAgIG1heCByZWN1cnNpb24gbGV2ZWwgKGRlZmF1bHQgMCkKICAgICBmb3JjZTogYXMgZm9yIGNvbXBpbGVfZGlyKCkgKGRlZmF1bHQgRmFsc2UpCi0gICAgcXVpZXQ6IGFzIGZvciBjb21waWxlX2RpcigpIChkZWZhdWx0IEZhbHNlKQorICAgIHF1aWV0OiBhcyBmb3IgY29tcGlsZV9kaXIoKSAoZGVmYXVsdCAwKQogICAgIGxlZ2FjeTogYXMgZm9yIGNvbXBpbGVfZGlyKCkgKGRlZmF1bHQgRmFsc2UpCiAgICAgb3B0aW1pemU6IGFzIGZvciBjb21waWxlX2RpcigpIChkZWZhdWx0IC0xKQogICAgICIiIgogICAgIHN1Y2Nlc3MgPSAxCiAgICAgZm9yIGRpciBpbiBzeXMucGF0aDoKICAgICAgICAgaWYgKG5vdCBkaXIgb3IgZGlyID09IG9zLmN1cmRpcikgYW5kIHNraXBfY3VyZGlyOgotICAgICAgICAgICAgcHJpbnQoJ1NraXBwaW5nIGN1cnJlbnQgZGlyZWN0b3J5JykKKyAgICAgICAgICAgIGlmIHF1aWV0IDwgMjoKKyAgICAgICAgICAgICAgICBwcmludCgnU2tpcHBpbmcgY3VycmVudCBkaXJlY3RvcnknKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgYW5kIGNvbXBpbGVfZGlyKGRpciwgbWF4bGV2ZWxzLCBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlLCBxdWlldD1xdWlldCwKQEAgLTE2OSwxMCArMjA0LDE1IEBACiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWwnLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9MCwKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9MTAsIGRlc3Q9J21heGxldmVscycsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJkb24ndCByZWN1cnNlIGludG8gc3ViZGlyZWN0b3JpZXMiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1yJywgdHlwZT1pbnQsIGRlc3Q9J3JlY3Vyc2lvbicsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnY29udHJvbCB0aGUgbWF4aW11bSByZWN1cnNpb24gbGV2ZWwuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZiBgLWxgIGFuZCBgLXJgIG9wdGlvbnMgYXJlIHNwZWNpZmllZCwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZW4gYC1yYCB0YWtlcyBwcmVjZWRlbmNlLicpKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1mJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0nZm9yY2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZm9yY2UgcmVidWlsZCBldmVuIGlmIHRpbWVzdGFtcHMgYXJlIHVwIHRvIGRhdGUnKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1xJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0ncXVpZXQnLAotICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nb3V0cHV0IG9ubHkgZXJyb3IgbWVzc2FnZXMnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1xJywgYWN0aW9uPSdjb3VudCcsIGRlc3Q9J3F1aWV0JywgZGVmYXVsdD0wLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nb3V0cHV0IG9ubHkgZXJyb3IgbWVzc2FnZXM7IC1xcSB3aWxsIHN1cHByZXNzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBlcnJvciBtZXNzYWdlcyBhcyB3ZWxsLicpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWInLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZXN0PSdsZWdhY3knLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndXNlIGxlZ2FjeSAocHJlLVBFUDMxNDcpIGNvbXBpbGVkIGZpbGUgbG9jYXRpb25zJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZCcsIG1ldGF2YXI9J0RFU1RESVInLCAgZGVzdD0nZGRpcicsIGRlZmF1bHQ9Tm9uZSwKQEAgLTE5MiwxNCArMjMyLDIyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnemVybyBvciBtb3JlIGZpbGUgYW5kIGRpcmVjdG9yeSBuYW1lcyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG8gY29tcGlsZTsgaWYgbm8gYXJndW1lbnRzIGdpdmVuLCBkZWZhdWx0cyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG8gdGhlIGVxdWl2YWxlbnQgb2YgLWwgc3lzLnBhdGgnKSkKLSAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1qJywgJy0td29ya2VycycsIGRlZmF1bHQ9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9aW50LCBoZWxwPSdSdW4gY29tcGlsZWFsbCBjb25jdXJyZW50bHknKQogCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKICAgICBjb21waWxlX2Rlc3RzID0gYXJncy5jb21waWxlX2Rlc3QKIAogICAgIGlmIGFyZ3Mucng6CiAgICAgICAgIGltcG9ydCByZQogICAgICAgICBhcmdzLnJ4ID0gcmUuY29tcGlsZShhcmdzLnJ4KQogCisKKyAgICBpZiBhcmdzLnJlY3Vyc2lvbiBpcyBub3QgTm9uZToKKyAgICAgICAgbWF4bGV2ZWxzID0gYXJncy5yZWN1cnNpb24KKyAgICBlbHNlOgorICAgICAgICBtYXhsZXZlbHMgPSBhcmdzLm1heGxldmVscworCiAgICAgIyBpZiBmbGlzdCBpcyBwcm92aWRlZCB0aGVuIGxvYWQgaXQKICAgICBpZiBhcmdzLmZsaXN0OgogICAgICAgICB0cnk6CkBAIC0yMDcsOSArMjU1LDEzIEBACiAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKICAgICAgICAgICAgICAgICAgICAgY29tcGlsZV9kZXN0cy5hcHBlbmQobGluZS5zdHJpcCgpKQogICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJFcnJvciByZWFkaW5nIGZpbGUgbGlzdCB7fSIuZm9ybWF0KGFyZ3MuZmxpc3QpKQorICAgICAgICAgICAgaWYgYXJncy5xdWlldCA8IDI6CisgICAgICAgICAgICAgICAgcHJpbnQoIkVycm9yIHJlYWRpbmcgZmlsZSBsaXN0IHt9Ii5mb3JtYXQoYXJncy5mbGlzdCkpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgIGlmIGFyZ3Mud29ya2VycyBpcyBub3QgTm9uZToKKyAgICAgICAgYXJncy53b3JrZXJzID0gYXJncy53b3JrZXJzIG9yIE5vbmUKKwogICAgIHN1Y2Nlc3MgPSBUcnVlCiAgICAgdHJ5OgogICAgICAgICBpZiBjb21waWxlX2Rlc3RzOgpAQCAtMjE5LDE2ICsyNzEsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnF1aWV0LCBhcmdzLmxlZ2FjeSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgY29tcGlsZV9kaXIoZGVzdCwgYXJncy5tYXhsZXZlbHMsIGFyZ3MuZGRpciwKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGNvbXBpbGVfZGlyKGRlc3QsIG1heGxldmVscywgYXJncy5kZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5mb3JjZSwgYXJncy5yeCwgYXJncy5xdWlldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubGVnYWN5KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubGVnYWN5LCB3b3JrZXJzPWFyZ3Mud29ya2Vycyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKICAgICAgICAgICAgIHJldHVybiBzdWNjZXNzCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZV9wYXRoKGxlZ2FjeT1hcmdzLmxlZ2FjeSwgZm9yY2U9YXJncy5mb3JjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpZXQ9YXJncy5xdWlldCkKICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHByaW50KCJcbltpbnRlcnJ1cHRlZF0iKQorICAgICAgICBpZiBhcmdzLnF1aWV0IDwgMjoKKyAgICAgICAgICAgIHByaW50KCJcbltpbnRlcnJ1cHRlZF0iKQogICAgICAgICByZXR1cm4gRmFsc2UKICAgICByZXR1cm4gVHJ1ZQogCmRpZmYgLS1naXQgYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL19iYXNlLnB5IGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9fYmFzZS5weQppbmRleCBiMjU5ODMzLi4yOTU0ODljIDEwMDY0NAotLS0gYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL19iYXNlLnB5CisrKyBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvX2Jhc2UucHkKQEAgLTMwMiwxNyArMzAyLDIwIEBACiAgICAgICAgIHdpdGggc2VsZi5fY29uZGl0aW9uOgogICAgICAgICAgICAgaWYgc2VsZi5fc3RhdGUgPT0gRklOSVNIRUQ6CiAgICAgICAgICAgICAgICAgaWYgc2VsZi5fZXhjZXB0aW9uOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzxGdXR1cmUgYXQgJXMgc3RhdGU9JXMgcmFpc2VkICVzPicgJSAoCi0gICAgICAgICAgICAgICAgICAgICAgICBoZXgoaWQoc2VsZikpLAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzwlcyBhdCAlI3ggc3RhdGU9JXMgcmFpc2VkICVzPicgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgX1NUQVRFX1RPX0RFU0NSSVBUSU9OX01BUFtzZWxmLl9zdGF0ZV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9leGNlcHRpb24uX19jbGFzc19fLl9fbmFtZV9fKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAnPEZ1dHVyZSBhdCAlcyBzdGF0ZT0lcyByZXR1cm5lZCAlcz4nICUgKAotICAgICAgICAgICAgICAgICAgICAgICAgaGV4KGlkKHNlbGYpKSwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICc8JXMgYXQgJSN4IHN0YXRlPSVzIHJldHVybmVkICVzPicgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgX1NUQVRFX1RPX0RFU0NSSVBUSU9OX01BUFtzZWxmLl9zdGF0ZV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXN1bHQuX19jbGFzc19fLl9fbmFtZV9fKQotICAgICAgICAgICAgcmV0dXJuICc8RnV0dXJlIGF0ICVzIHN0YXRlPSVzPicgJSAoCi0gICAgICAgICAgICAgICAgICAgIGhleChpZChzZWxmKSksCisgICAgICAgICAgICByZXR1cm4gJzwlcyBhdCAlI3ggc3RhdGU9JXM+JyAlICgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLAogICAgICAgICAgICAgICAgICAgIF9TVEFURV9UT19ERVNDUklQVElPTl9NQVBbc2VsZi5fc3RhdGVdKQogCiAgICAgZGVmIGNhbmNlbChzZWxmKToKQEAgLTUxNyw3ICs1MjAsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAKLSAgICBkZWYgbWFwKHNlbGYsIGZuLCAqaXRlcmFibGVzLCB0aW1lb3V0PU5vbmUpOgorICAgIGRlZiBtYXAoc2VsZiwgZm4sICppdGVyYWJsZXMsIHRpbWVvdXQ9Tm9uZSwgY2h1bmtzaXplPTEpOgogICAgICAgICAiIiJSZXR1cm5zIGFuIGl0ZXJhdG9yIGVxdWl2YWxlbnQgdG8gbWFwKGZuLCBpdGVyKS4KIAogICAgICAgICBBcmdzOgpAQCAtNTI1LDYgKzUyOCwxMCBAQAogICAgICAgICAgICAgICAgIHBhc3NlZCBpdGVyYWJsZXMuCiAgICAgICAgICAgICB0aW1lb3V0OiBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0LiBJZiBOb25lLCB0aGVuIHRoZXJlCiAgICAgICAgICAgICAgICAgaXMgbm8gbGltaXQgb24gdGhlIHdhaXQgdGltZS4KKyAgICAgICAgICAgIGNodW5rc2l6ZTogVGhlIHNpemUgb2YgdGhlIGNodW5rcyB0aGUgaXRlcmFibGUgd2lsbCBiZSBicm9rZW4gaW50bworICAgICAgICAgICAgICAgIGJlZm9yZSBiZWluZyBwYXNzZWQgdG8gYSBjaGlsZCBwcm9jZXNzLiBUaGlzIGFyZ3VtZW50IGlzIG9ubHkKKyAgICAgICAgICAgICAgICB1c2VkIGJ5IFByb2Nlc3NQb29sRXhlY3V0b3I7IGl0IGlzIGlnbm9yZWQgYnkKKyAgICAgICAgICAgICAgICBUaHJlYWRQb29sRXhlY3V0b3IuCiAKICAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgIEFuIGl0ZXJhdG9yIGVxdWl2YWxlbnQgdG86IG1hcChmdW5jLCAqaXRlcmFibGVzKSBidXQgdGhlIGNhbGxzIG1heQpkaWZmIC0tZ2l0IGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9wcm9jZXNzLnB5IGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9wcm9jZXNzLnB5CmluZGV4IDA3YjUyMjUuLjU5MGVkYmEgMTAwNjQ0Ci0tLSBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvcHJvY2Vzcy5weQorKysgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3Byb2Nlc3MucHkKQEAgLTU1LDYgKzU1LDkgQEAKIGZyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IHdhaXQKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB3ZWFrcmVmCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAoraW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IHRyYWNlYmFjawogCiAjIFdvcmtlcnMgYXJlIGNyZWF0ZWQgYXMgZGFlbW9uIHRocmVhZHMgYW5kIHByb2Nlc3Nlcy4gVGhpcyBpcyBkb25lIHRvIGFsbG93IHRoZQogIyBpbnRlcnByZXRlciB0byBleGl0IHdoZW4gdGhlcmUgYXJlIHN0aWxsIGlkbGUgcHJvY2Vzc2VzIGluIGEKQEAgLTg4LDYgKzkxLDI3IEBACiAjIChGdXR1cmVzIGluIHRoZSBjYWxsIHF1ZXVlIGNhbm5vdCBiZSBjYW5jZWxsZWQpLgogRVhUUkFfUVVFVUVEX0NBTExTID0gMQogCisjIEhhY2sgdG8gZW1iZWQgc3RyaW5naWZpY2F0aW9uIG9mIHJlbW90ZSB0cmFjZWJhY2sgaW4gbG9jYWwgdHJhY2ViYWNrCisKK2NsYXNzIF9SZW1vdGVUcmFjZWJhY2soRXhjZXB0aW9uKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGIpOgorICAgICAgICBzZWxmLnRiID0gdGIKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudGIKKworY2xhc3MgX0V4Y2VwdGlvbldpdGhUcmFjZWJhY2s6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4YywgdGIpOgorICAgICAgICB0YiA9IHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uKHR5cGUoZXhjKSwgZXhjLCB0YikKKyAgICAgICAgdGIgPSAnJy5qb2luKHRiKQorICAgICAgICBzZWxmLmV4YyA9IGV4YworICAgICAgICBzZWxmLnRiID0gJ1xuIiIiXG4lcyIiIicgJSB0YgorICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gX3JlYnVpbGRfZXhjLCAoc2VsZi5leGMsIHNlbGYudGIpCisKK2RlZiBfcmVidWlsZF9leGMoZXhjLCB0Yik6CisgICAgZXhjLl9fY2F1c2VfXyA9IF9SZW1vdGVUcmFjZWJhY2sodGIpCisgICAgcmV0dXJuIGV4YworCiBjbGFzcyBfV29ya0l0ZW0ob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZnV0dXJlLCBmbiwgYXJncywga3dhcmdzKToKICAgICAgICAgc2VsZi5mdXR1cmUgPSBmdXR1cmUKQEAgLTEwOCw2ICsxMzIsMjYgQEAKICAgICAgICAgc2VsZi5hcmdzID0gYXJncwogICAgICAgICBzZWxmLmt3YXJncyA9IGt3YXJncwogCitkZWYgX2dldF9jaHVua3MoKml0ZXJhYmxlcywgY2h1bmtzaXplKToKKyAgICAiIiIgSXRlcmF0ZXMgb3ZlciB6aXAoKWVkIGl0ZXJhYmxlcyBpbiBjaHVua3MuICIiIgorICAgIGl0ID0gemlwKCppdGVyYWJsZXMpCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgY2h1bmsgPSB0dXBsZShpdGVydG9vbHMuaXNsaWNlKGl0LCBjaHVua3NpemUpKQorICAgICAgICBpZiBub3QgY2h1bms6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgeWllbGQgY2h1bmsKKworZGVmIF9wcm9jZXNzX2NodW5rKGZuLCBjaHVuayk6CisgICAgIiIiIFByb2Nlc3NlcyBhIGNodW5rIG9mIGFuIGl0ZXJhYmxlIHBhc3NlZCB0byBtYXAuCisKKyAgICBSdW5zIHRoZSBmdW5jdGlvbiBwYXNzZWQgdG8gbWFwKCkgb24gYSBjaHVuayBvZiB0aGUKKyAgICBpdGVyYWJsZSBwYXNzZWQgdG8gbWFwLgorCisgICAgVGhpcyBmdW5jdGlvbiBpcyBydW4gaW4gYSBzZXBhcmF0ZSBwcm9jZXNzLgorCisgICAgIiIiCisgICAgcmV0dXJuIFtmbigqYXJncykgZm9yIGFyZ3MgaW4gY2h1bmtdCisKIGRlZiBfcHJvY2Vzc193b3JrZXIoY2FsbF9xdWV1ZSwgcmVzdWx0X3F1ZXVlKToKICAgICAiIiJFdmFsdWF0ZXMgY2FsbHMgZnJvbSBjYWxsX3F1ZXVlIGFuZCBwbGFjZXMgdGhlIHJlc3VsdHMgaW4gcmVzdWx0X3F1ZXVlLgogCkBAIC0xMzAsOCArMTc0LDggQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgciA9IGNhbGxfaXRlbS5mbigqY2FsbF9pdGVtLmFyZ3MsICoqY2FsbF9pdGVtLmt3YXJncykKICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHJlc3VsdF9xdWV1ZS5wdXQoX1Jlc3VsdEl0ZW0oY2FsbF9pdGVtLndvcmtfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbj1lKSkKKyAgICAgICAgICAgIGV4YyA9IF9FeGNlcHRpb25XaXRoVHJhY2ViYWNrKGUsIGUuX190cmFjZWJhY2tfXykKKyAgICAgICAgICAgIHJlc3VsdF9xdWV1ZS5wdXQoX1Jlc3VsdEl0ZW0oY2FsbF9pdGVtLndvcmtfaWQsIGV4Y2VwdGlvbj1leGMpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVzdWx0X3F1ZXVlLnB1dChfUmVzdWx0SXRlbShjYWxsX2l0ZW0ud29ya19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PXIpKQpAQCAtMzM0LDYgKzM3OCw5IEBACiAgICAgICAgIGlmIG1heF93b3JrZXJzIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9tYXhfd29ya2VycyA9IG9zLmNwdV9jb3VudCgpIG9yIDEKICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIG1heF93b3JrZXJzIDw9IDA6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibWF4X3dvcmtlcnMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCIpCisKICAgICAgICAgICAgIHNlbGYuX21heF93b3JrZXJzID0gbWF4X3dvcmtlcnMKIAogICAgICAgICAjIE1ha2UgdGhlIGNhbGwgcXVldWUgc2xpZ2h0bHkgbGFyZ2VyIHRoYW4gdGhlIG51bWJlciBvZiBwcm9jZXNzZXMgdG8KQEAgLTQwOCw2ICs0NTUsMzUgQEAKICAgICAgICAgICAgIHJldHVybiBmCiAgICAgc3VibWl0Ll9fZG9jX18gPSBfYmFzZS5FeGVjdXRvci5zdWJtaXQuX19kb2NfXwogCisgICAgZGVmIG1hcChzZWxmLCBmbiwgKml0ZXJhYmxlcywgdGltZW91dD1Ob25lLCBjaHVua3NpemU9MSk6CisgICAgICAgICIiIlJldHVybnMgYW4gaXRlcmF0b3IgZXF1aXZhbGVudCB0byBtYXAoZm4sIGl0ZXIpLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBmbjogQSBjYWxsYWJsZSB0aGF0IHdpbGwgdGFrZSBhcyBtYW55IGFyZ3VtZW50cyBhcyB0aGVyZSBhcmUKKyAgICAgICAgICAgICAgICBwYXNzZWQgaXRlcmFibGVzLgorICAgICAgICAgICAgdGltZW91dDogVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdC4gSWYgTm9uZSwgdGhlbiB0aGVyZQorICAgICAgICAgICAgICAgIGlzIG5vIGxpbWl0IG9uIHRoZSB3YWl0IHRpbWUuCisgICAgICAgICAgICBjaHVua3NpemU6IElmIGdyZWF0ZXIgdGhhbiBvbmUsIHRoZSBpdGVyYWJsZXMgd2lsbCBiZSBjaG9wcGVkIGludG8KKyAgICAgICAgICAgICAgICBjaHVua3Mgb2Ygc2l6ZSBjaHVua3NpemUgYW5kIHN1Ym1pdHRlZCB0byB0aGUgcHJvY2VzcyBwb29sLgorICAgICAgICAgICAgICAgIElmIHNldCB0byBvbmUsIHRoZSBpdGVtcyBpbiB0aGUgbGlzdCB3aWxsIGJlIHNlbnQgb25lIGF0IGEgdGltZS4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQW4gaXRlcmF0b3IgZXF1aXZhbGVudCB0bzogbWFwKGZ1bmMsICppdGVyYWJsZXMpIGJ1dCB0aGUgY2FsbHMgbWF5CisgICAgICAgICAgICBiZSBldmFsdWF0ZWQgb3V0LW9mLW9yZGVyLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIFRpbWVvdXRFcnJvcjogSWYgdGhlIGVudGlyZSByZXN1bHQgaXRlcmF0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAorICAgICAgICAgICAgICAgIGJlZm9yZSB0aGUgZ2l2ZW4gdGltZW91dC4KKyAgICAgICAgICAgIEV4Y2VwdGlvbjogSWYgZm4oKmFyZ3MpIHJhaXNlcyBmb3IgYW55IHZhbHVlcy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGNodW5rc2l6ZSA8IDE6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjaHVua3NpemUgbXVzdCBiZSA+PSAxLiIpCisKKyAgICAgICAgcmVzdWx0cyA9IHN1cGVyKCkubWFwKHBhcnRpYWwoX3Byb2Nlc3NfY2h1bmssIGZuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9nZXRfY2h1bmtzKCppdGVyYWJsZXMsIGNodW5rc2l6ZT1jaHVua3NpemUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD10aW1lb3V0KQorICAgICAgICByZXR1cm4gaXRlcnRvb2xzLmNoYWluLmZyb21faXRlcmFibGUocmVzdWx0cykKKwogICAgIGRlZiBzaHV0ZG93bihzZWxmLCB3YWl0PVRydWUpOgogICAgICAgICB3aXRoIHNlbGYuX3NodXRkb3duX2xvY2s6CiAgICAgICAgICAgICBzZWxmLl9zaHV0ZG93bl90aHJlYWQgPSBUcnVlCmRpZmYgLS1naXQgYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weSBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5CmluZGV4IGY5YmViMGYuLjNhZTQ0MmQgMTAwNjQ0Ci0tLSBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5CisrKyBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5CkBAIC0xMCw2ICsxMCw3IEBACiBpbXBvcnQgcXVldWUKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB3ZWFrcmVmCitpbXBvcnQgb3MKIAogIyBXb3JrZXJzIGFyZSBjcmVhdGVkIGFzIGRhZW1vbiB0aHJlYWRzLiBUaGlzIGlzIGRvbmUgdG8gYWxsb3cgdGhlIGludGVycHJldGVyCiAjIHRvIGV4aXQgd2hlbiB0aGVyZSBhcmUgc3RpbGwgaWRsZSB0aHJlYWRzIGluIGEgVGhyZWFkUG9vbEV4ZWN1dG9yJ3MgdGhyZWFkCkBAIC04MCwxMyArODEsMjAgQEAKICAgICAgICAgX2Jhc2UuTE9HR0VSLmNyaXRpY2FsKCdFeGNlcHRpb24gaW4gd29ya2VyJywgZXhjX2luZm89VHJ1ZSkKIAogY2xhc3MgVGhyZWFkUG9vbEV4ZWN1dG9yKF9iYXNlLkV4ZWN1dG9yKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWF4X3dvcmtlcnMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhfd29ya2Vycz1Ob25lKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZXMgYSBuZXcgVGhyZWFkUG9vbEV4ZWN1dG9yIGluc3RhbmNlLgogCiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgICBtYXhfd29ya2VyczogVGhlIG1heGltdW0gbnVtYmVyIG9mIHRocmVhZHMgdGhhdCBjYW4gYmUgdXNlZCB0bwogICAgICAgICAgICAgICAgIGV4ZWN1dGUgdGhlIGdpdmVuIGNhbGxzLgogICAgICAgICAiIiIKKyAgICAgICAgaWYgbWF4X3dvcmtlcnMgaXMgTm9uZToKKyAgICAgICAgICAgICMgVXNlIHRoaXMgbnVtYmVyIGJlY2F1c2UgVGhyZWFkUG9vbEV4ZWN1dG9yIGlzIG9mdGVuCisgICAgICAgICAgICAjIHVzZWQgdG8gb3ZlcmxhcCBJL08gaW5zdGVhZCBvZiBDUFUgd29yay4KKyAgICAgICAgICAgIG1heF93b3JrZXJzID0gKG9zLmNwdV9jb3VudCgpIG9yIDEpICogNQorICAgICAgICBpZiBtYXhfd29ya2VycyA8PSAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibWF4X3dvcmtlcnMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCIpCisKICAgICAgICAgc2VsZi5fbWF4X3dvcmtlcnMgPSBtYXhfd29ya2VycwogICAgICAgICBzZWxmLl93b3JrX3F1ZXVlID0gcXVldWUuUXVldWUoKQogICAgICAgICBzZWxmLl90aHJlYWRzID0gc2V0KCkKZGlmZiAtLWdpdCBhL0xpYi9jb25maWdwYXJzZXIucHkgYi9MaWIvY29uZmlncGFyc2VyLnB5CmluZGV4IGRjYjdlYzQuLjNhOWZiNTYgMTAwNjQ0Ci0tLSBhL0xpYi9jb25maWdwYXJzZXIucHkKKysrIGIvTGliL2NvbmZpZ3BhcnNlci5weQpAQCAtMTcsNyArMTcsOCBAQAogICAgIF9faW5pdF9fKGRlZmF1bHRzPU5vbmUsIGRpY3RfdHlwZT1fZGVmYXVsdF9kaWN0LCBhbGxvd19ub192YWx1ZT1GYWxzZSwKICAgICAgICAgICAgICBkZWxpbWl0ZXJzPSgnPScsICc6JyksIGNvbW1lbnRfcHJlZml4ZXM9KCcjJywgJzsnKSwKICAgICAgICAgICAgICBpbmxpbmVfY29tbWVudF9wcmVmaXhlcz1Ob25lLCBzdHJpY3Q9VHJ1ZSwKLSAgICAgICAgICAgICBlbXB0eV9saW5lc19pbl92YWx1ZXM9VHJ1ZSk6CisgICAgICAgICAgICAgZW1wdHlfbGluZXNfaW5fdmFsdWVzPVRydWUsIGRlZmF1bHRfc2VjdGlvbj0nREVGQVVMVCcsCisgICAgICAgICAgICAgaW50ZXJwb2xhdGlvbj08dW5zZXQ+LCBjb252ZXJ0ZXJzPTx1bnNldD4pOgogICAgICAgICBDcmVhdGUgdGhlIHBhcnNlci4gV2hlbiBgZGVmYXVsdHMnIGlzIGdpdmVuLCBpdCBpcyBpbml0aWFsaXplZCBpbnRvIHRoZQogICAgICAgICBkaWN0aW9uYXJ5IG9yIGludHJpbnNpYyBkZWZhdWx0cy4gVGhlIGtleXMgbXVzdCBiZSBzdHJpbmdzLCB0aGUgdmFsdWVzCiAgICAgICAgIG11c3QgYmUgYXBwcm9wcmlhdGUgZm9yICUoKXMgc3RyaW5nIGludGVycG9sYXRpb24uCkBAIC00Nyw2ICs0OCwyNSBAQAogICAgICAgICBXaGVuIGBhbGxvd19ub192YWx1ZScgaXMgVHJ1ZSAoZGVmYXVsdDogRmFsc2UpLCBvcHRpb25zIHdpdGhvdXQKICAgICAgICAgdmFsdWVzIGFyZSBhY2NlcHRlZDsgdGhlIHZhbHVlIHByZXNlbnRlZCBmb3IgdGhlc2UgaXMgTm9uZS4KIAorICAgICAgICBXaGVuIGBkZWZhdWx0X3NlY3Rpb24nIGlzIGdpdmVuLCB0aGUgbmFtZSBvZiB0aGUgc3BlY2lhbCBzZWN0aW9uIGlzCisgICAgICAgIG5hbWVkIGFjY29yZGluZ2x5LiBCeSBkZWZhdWx0IGl0IGlzIGNhbGxlZCBgYCJERUZBVUxUImBgIGJ1dCB0aGlzIGNhbgorICAgICAgICBiZSBjdXN0b21pemVkIHRvIHBvaW50IHRvIGFueSBvdGhlciB2YWxpZCBzZWN0aW9uIG5hbWUuIEl0cyBjdXJyZW50CisgICAgICAgIHZhbHVlIGNhbiBiZSByZXRyaWV2ZWQgdXNpbmcgdGhlIGBgcGFyc2VyX2luc3RhbmNlLmRlZmF1bHRfc2VjdGlvbmBgCisgICAgICAgIGF0dHJpYnV0ZSBhbmQgbWF5IGJlIG1vZGlmaWVkIGF0IHJ1bnRpbWUuCisKKyAgICAgICAgV2hlbiBgaW50ZXJwb2xhdGlvbmAgaXMgZ2l2ZW4sIGl0IHNob3VsZCBiZSBhbiBJbnRlcnBvbGF0aW9uIHN1YmNsYXNzCisgICAgICAgIGluc3RhbmNlLiBJdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGhhbmRsZXIgZm9yIG9wdGlvbiB2YWx1ZQorICAgICAgICBwcmUtcHJvY2Vzc2luZyB3aGVuIHVzaW5nIGdldHRlcnMuIFJhd0NvbmZpZ1BhcnNlciBvYmplY3QgcyBkb24ndCBkbworICAgICAgICBhbnkgc29ydCBvZiBpbnRlcnBvbGF0aW9uLCB3aGVyZWFzIENvbmZpZ1BhcnNlciB1c2VzIGFuIGluc3RhbmNlIG9mCisgICAgICAgIEJhc2ljSW50ZXJwb2xhdGlvbi4gVGhlIGxpYnJhcnkgYWxzbyBwcm92aWRlcyBhIGBgemMuYnVpbGRib3RgYAorICAgICAgICBpbnNwaXJlZCBFeHRlbmRlZEludGVycG9sYXRpb24gaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgV2hlbiBgY29udmVydGVyc2AgaXMgZ2l2ZW4sIGl0IHNob3VsZCBiZSBhIGRpY3Rpb25hcnkgd2hlcmUgZWFjaCBrZXkKKyAgICAgICAgcmVwcmVzZW50cyB0aGUgbmFtZSBvZiBhIHR5cGUgY29udmVydGVyIGFuZCBlYWNoIHZhbHVlIGlzIGEgY2FsbGFibGUKKyAgICAgICAgaW1wbGVtZW50aW5nIHRoZSBjb252ZXJzaW9uIGZyb20gc3RyaW5nIHRvIHRoZSBkZXNpcmVkIGRhdGF0eXBlLiBFdmVyeQorICAgICAgICBjb252ZXJ0ZXIgZ2V0cyBpdHMgY29ycmVzcG9uZGluZyBnZXQqKCkgbWV0aG9kIG9uIHRoZSBwYXJzZXIgb2JqZWN0IGFuZAorICAgICAgICBzZWN0aW9uIHByb3hpZXMuCisKICAgICBzZWN0aW9ucygpCiAgICAgICAgIFJldHVybiBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gc2VjdGlvbiBuYW1lcywgc2FucyBERUZBVUxULgogCkBAIC0xMjksOSArMTQ5LDExIEBACiAKIF9fYWxsX18gPSBbIk5vU2VjdGlvbkVycm9yIiwgIkR1cGxpY2F0ZU9wdGlvbkVycm9yIiwgIkR1cGxpY2F0ZVNlY3Rpb25FcnJvciIsCiAgICAgICAgICAgICJOb09wdGlvbkVycm9yIiwgIkludGVycG9sYXRpb25FcnJvciIsICJJbnRlcnBvbGF0aW9uRGVwdGhFcnJvciIsCi0gICAgICAgICAgICJJbnRlcnBvbGF0aW9uU3ludGF4RXJyb3IiLCAiUGFyc2luZ0Vycm9yIiwKLSAgICAgICAgICAgIk1pc3NpbmdTZWN0aW9uSGVhZGVyRXJyb3IiLAorICAgICAgICAgICAiSW50ZXJwb2xhdGlvbk1pc3NpbmdPcHRpb25FcnJvciIsICJJbnRlcnBvbGF0aW9uU3ludGF4RXJyb3IiLAorICAgICAgICAgICAiUGFyc2luZ0Vycm9yIiwgIk1pc3NpbmdTZWN0aW9uSGVhZGVyRXJyb3IiLAogICAgICAgICAgICAiQ29uZmlnUGFyc2VyIiwgIlNhZmVDb25maWdQYXJzZXIiLCAiUmF3Q29uZmlnUGFyc2VyIiwKKyAgICAgICAgICAgIkludGVycG9sYXRpb24iLCAiQmFzaWNJbnRlcnBvbGF0aW9uIiwgICJFeHRlbmRlZEludGVycG9sYXRpb24iLAorICAgICAgICAgICAiTGVnYWN5SW50ZXJwb2xhdGlvbiIsICJTZWN0aW9uUHJveHkiLCAiQ29udmVydGVyTWFwcGluZyIsCiAgICAgICAgICAgICJERUZBVUxUU0VDVCIsICJNQVhfSU5URVJQT0xBVElPTl9ERVBUSCJdCiAKIERFRkFVTFRTRUNUID0gIkRFRkFVTFQiCkBAIC00MDgsNyArNDMwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgdiA9IG1hcFt2YXJdCiAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBJbnRlcnBvbGF0aW9uTWlzc2luZ09wdGlvbkVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCBzZWN0aW9uLCByYXd2YWwsIHZhcikKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgc2VjdGlvbiwgcmF3dmFsLCB2YXIpIGZyb20gTm9uZQogICAgICAgICAgICAgICAgIGlmICIlIiBpbiB2OgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnRlcnBvbGF0ZV9zb21lKHBhcnNlciwgb3B0aW9uLCBhY2N1bSwgdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLCBtYXAsIGRlcHRoICsgMSkKQEAgLTQ4MSw3ICs1MDMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3JlIHRoYW4gb25lICc6JyBmb3VuZDogJXIiICUgKHJlc3QsKSkKICAgICAgICAgICAgICAgICBleGNlcHQgKEtleUVycm9yLCBOb1NlY3Rpb25FcnJvciwgTm9PcHRpb25FcnJvcik6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEludGVycG9sYXRpb25NaXNzaW5nT3B0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24sIHNlY3Rpb24sIHJhd3ZhbCwgIjoiLmpvaW4ocGF0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24sIHNlY3Rpb24sIHJhd3ZhbCwgIjoiLmpvaW4ocGF0aCkpIGZyb20gTm9uZQogICAgICAgICAgICAgICAgIGlmICIkIiBpbiB2OgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnRlcnBvbGF0ZV9zb21lKHBhcnNlciwgb3B0LCBhY2N1bSwgdiwgc2VjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0KHBhcnNlci5pdGVtcyhzZWN0LCByYXc9VHJ1ZSkpLApAQCAtNTE0LDcgKzUzNiw3IEBACiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgJSB2YXJzCiAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEludGVycG9sYXRpb25NaXNzaW5nT3B0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24sIHNlY3Rpb24sIHJhd3ZhbCwgZS5hcmdzWzBdKQorICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCBzZWN0aW9uLCByYXd2YWwsIGUuYXJnc1swXSkgZnJvbSBOb25lCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgIGlmIHZhbHVlIGFuZCAiJSgiIGluIHZhbHVlOgpAQCAtNTc5LDExICs2MDEsMTIgQEAKICAgICAgICAgICAgICAgICAgY29tbWVudF9wcmVmaXhlcz0oJyMnLCAnOycpLCBpbmxpbmVfY29tbWVudF9wcmVmaXhlcz1Ob25lLAogICAgICAgICAgICAgICAgICBzdHJpY3Q9VHJ1ZSwgZW1wdHlfbGluZXNfaW5fdmFsdWVzPVRydWUsCiAgICAgICAgICAgICAgICAgIGRlZmF1bHRfc2VjdGlvbj1ERUZBVUxUU0VDVCwKLSAgICAgICAgICAgICAgICAgaW50ZXJwb2xhdGlvbj1fVU5TRVQpOgorICAgICAgICAgICAgICAgICBpbnRlcnBvbGF0aW9uPV9VTlNFVCwgY29udmVydGVycz1fVU5TRVQpOgogCiAgICAgICAgIHNlbGYuX2RpY3QgPSBkaWN0X3R5cGUKICAgICAgICAgc2VsZi5fc2VjdGlvbnMgPSBzZWxmLl9kaWN0KCkKICAgICAgICAgc2VsZi5fZGVmYXVsdHMgPSBzZWxmLl9kaWN0KCkKKyAgICAgICAgc2VsZi5fY29udmVydGVycyA9IENvbnZlcnRlck1hcHBpbmcoc2VsZikKICAgICAgICAgc2VsZi5fcHJveGllcyA9IHNlbGYuX2RpY3QoKQogICAgICAgICBzZWxmLl9wcm94aWVzW2RlZmF1bHRfc2VjdGlvbl0gPSBTZWN0aW9uUHJveHkoc2VsZiwgZGVmYXVsdF9zZWN0aW9uKQogICAgICAgICBpZiBkZWZhdWx0czoKQEAgLTYxMSw2ICs2MzQsOCBAQAogICAgICAgICAgICAgc2VsZi5faW50ZXJwb2xhdGlvbiA9IHNlbGYuX0RFRkFVTFRfSU5URVJQT0xBVElPTgogICAgICAgICBpZiBzZWxmLl9pbnRlcnBvbGF0aW9uIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9pbnRlcnBvbGF0aW9uID0gSW50ZXJwb2xhdGlvbigpCisgICAgICAgIGlmIGNvbnZlcnRlcnMgaXMgbm90IF9VTlNFVDoKKyAgICAgICAgICAgIHNlbGYuX2NvbnZlcnRlcnMudXBkYXRlKGNvbnZlcnRlcnMpCiAKICAgICBkZWYgZGVmYXVsdHMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9kZWZhdWx0cwpAQCAtNjQ2LDcgKzY3MSw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9wdHMgPSBzZWxmLl9zZWN0aW9uc1tzZWN0aW9uXS5jb3B5KCkKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcmFpc2UgTm9TZWN0aW9uRXJyb3Ioc2VjdGlvbikKKyAgICAgICAgICAgIHJhaXNlIE5vU2VjdGlvbkVycm9yKHNlY3Rpb24pIGZyb20gTm9uZQogICAgICAgICBvcHRzLnVwZGF0ZShzZWxmLl9kZWZhdWx0cykKICAgICAgICAgcmV0dXJuIGxpc3Qob3B0cy5rZXlzKCkpCiAKQEAgLTc3NCwzNiArNzk5LDMxIEBACiAgICAgZGVmIF9nZXQoc2VsZiwgc2VjdGlvbiwgY29udiwgb3B0aW9uLCAqKmt3YXJncyk6CiAgICAgICAgIHJldHVybiBjb252KHNlbGYuZ2V0KHNlY3Rpb24sIG9wdGlvbiwgKiprd2FyZ3MpKQogCi0gICAgZGVmIGdldGludChzZWxmLCBzZWN0aW9uLCBvcHRpb24sICosIHJhdz1GYWxzZSwgdmFycz1Ob25lLAotICAgICAgICAgICAgICAgZmFsbGJhY2s9X1VOU0VUKToKKyAgICBkZWYgX2dldF9jb252KHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgY29udiwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUsCisgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1fVU5TRVQsICoqa3dhcmdzKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldChzZWN0aW9uLCBpbnQsIG9wdGlvbiwgcmF3PXJhdywgdmFycz12YXJzKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldChzZWN0aW9uLCBjb252LCBvcHRpb24sIHJhdz1yYXcsIHZhcnM9dmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpCiAgICAgICAgIGV4Y2VwdCAoTm9TZWN0aW9uRXJyb3IsIE5vT3B0aW9uRXJyb3IpOgogICAgICAgICAgICAgaWYgZmFsbGJhY2sgaXMgX1VOU0VUOgogICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBmYWxsYmFjaworICAgICAgICAgICAgcmV0dXJuIGZhbGxiYWNrCisKKyAgICAjIGdldGludCwgZ2V0ZmxvYXQgYW5kIGdldGJvb2xlYW4gcHJvdmlkZWQgZGlyZWN0bHkgZm9yIGJhY2t3YXJkcyBjb21wYXQKKyAgICBkZWYgZ2V0aW50KHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUsCisgICAgICAgICAgICAgICBmYWxsYmFjaz1fVU5TRVQsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9jb252KHNlY3Rpb24sIG9wdGlvbiwgaW50LCByYXc9cmF3LCB2YXJzPXZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1mYWxsYmFjaywgKiprd2FyZ3MpCiAKICAgICBkZWYgZ2V0ZmxvYXQoc2VsZiwgc2VjdGlvbiwgb3B0aW9uLCAqLCByYXc9RmFsc2UsIHZhcnM9Tm9uZSwKLSAgICAgICAgICAgICAgICAgZmFsbGJhY2s9X1VOU0VUKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldChzZWN0aW9uLCBmbG9hdCwgb3B0aW9uLCByYXc9cmF3LCB2YXJzPXZhcnMpCi0gICAgICAgIGV4Y2VwdCAoTm9TZWN0aW9uRXJyb3IsIE5vT3B0aW9uRXJyb3IpOgotICAgICAgICAgICAgaWYgZmFsbGJhY2sgaXMgX1VOU0VUOgotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBmYWxsYmFjaworICAgICAgICAgICAgICAgICBmYWxsYmFjaz1fVU5TRVQsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9jb252KHNlY3Rpb24sIG9wdGlvbiwgZmxvYXQsIHJhdz1yYXcsIHZhcnM9dmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPWZhbGxiYWNrLCAqKmt3YXJncykKIAogICAgIGRlZiBnZXRib29sZWFuKHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9X1VOU0VUKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldChzZWN0aW9uLCBzZWxmLl9jb252ZXJ0X3RvX2Jvb2xlYW4sIG9wdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3PXJhdywgdmFycz12YXJzKQotICAgICAgICBleGNlcHQgKE5vU2VjdGlvbkVycm9yLCBOb09wdGlvbkVycm9yKToKLSAgICAgICAgICAgIGlmIGZhbGxiYWNrIGlzIF9VTlNFVDoKLSAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsbGJhY2sKKyAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1fVU5TRVQsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9jb252KHNlY3Rpb24sIG9wdGlvbiwgc2VsZi5fY29udmVydF90b19ib29sZWFuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3PXJhdywgdmFycz12YXJzLCBmYWxsYmFjaz1mYWxsYmFjaywgKiprd2FyZ3MpCiAKICAgICBkZWYgaXRlbXMoc2VsZiwgc2VjdGlvbj1fVU5TRVQsIHJhdz1GYWxzZSwgdmFycz1Ob25lKToKICAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiAobmFtZSwgdmFsdWUpIHR1cGxlcyBmb3IgZWFjaCBvcHRpb24gaW4gYSBzZWN0aW9uLgpAQCAtODc1LDcgKzg5NSw3IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VjdGRpY3QgPSBzZWxmLl9zZWN0aW9uc1tzZWN0aW9uXQogICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHJhaXNlIE5vU2VjdGlvbkVycm9yKHNlY3Rpb24pCisgICAgICAgICAgICAgICAgcmFpc2UgTm9TZWN0aW9uRXJyb3Ioc2VjdGlvbikgZnJvbSBOb25lCiAgICAgICAgIHNlY3RkaWN0W3NlbGYub3B0aW9ueGZvcm0ob3B0aW9uKV0gPSB2YWx1ZQogCiAgICAgZGVmIHdyaXRlKHNlbGYsIGZwLCBzcGFjZV9hcm91bmRfZGVsaW1pdGVycz1UcnVlKToKQEAgLTkxNiw3ICs5MzYsNyBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlY3RkaWN0ID0gc2VsZi5fc2VjdGlvbnNbc2VjdGlvbl0KICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBOb1NlY3Rpb25FcnJvcihzZWN0aW9uKQorICAgICAgICAgICAgICAgIHJhaXNlIE5vU2VjdGlvbkVycm9yKHNlY3Rpb24pIGZyb20gTm9uZQogICAgICAgICBvcHRpb24gPSBzZWxmLm9wdGlvbnhmb3JtKG9wdGlvbikKICAgICAgICAgZXhpc3RlZCA9IG9wdGlvbiBpbiBzZWN0ZGljdAogICAgICAgICBpZiBleGlzdGVkOgpAQCAtMTE1Myw2ICsxMTczLDEwIEBACiAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm9wdGlvbiB2YWx1ZXMgbXVzdCBiZSBzdHJpbmdzIikKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb252ZXJ0ZXJzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fY29udmVydGVycworCiAKIGNsYXNzIENvbmZpZ1BhcnNlcihSYXdDb25maWdQYXJzZXIpOgogICAgICIiIkNvbmZpZ1BhcnNlciBpbXBsZW1lbnRpbmcgaW50ZXJwb2xhdGlvbi4iIiIKQEAgLTExOTMsNiArMTIxNywxMCBAQAogICAgICAgICAiIiJDcmVhdGVzIGEgdmlldyBvbiBhIHNlY3Rpb24gb2YgdGhlIHNwZWNpZmllZCBgbmFtZWAgaW4gYHBhcnNlcmAuIiIiCiAgICAgICAgIHNlbGYuX3BhcnNlciA9IHBhcnNlcgogICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQorICAgICAgICBmb3IgY29udiBpbiBwYXJzZXIuY29udmVydGVyczoKKyAgICAgICAgICAgIGtleSA9ICdnZXQnICsgY29udgorICAgICAgICAgICAgZ2V0dGVyID0gZnVuY3Rvb2xzLnBhcnRpYWwoc2VsZi5nZXQsIF9pbXBsPWdldGF0dHIocGFyc2VyLCBrZXkpKQorICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBrZXksIGdldHRlcikKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICc8U2VjdGlvbjoge30+Jy5mb3JtYXQoc2VsZi5fbmFtZSkKQEAgLTEyMjYsMjIgKzEyNTQsNiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlci5kZWZhdWx0cygpCiAKLSAgICBkZWYgZ2V0KHNlbGYsIG9wdGlvbiwgZmFsbGJhY2s9Tm9uZSwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUpOgotICAgICAgICByZXR1cm4gc2VsZi5fcGFyc2VyLmdldChzZWxmLl9uYW1lLCBvcHRpb24sIHJhdz1yYXcsIHZhcnM9dmFycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9ZmFsbGJhY2spCi0KLSAgICBkZWYgZ2V0aW50KHNlbGYsIG9wdGlvbiwgZmFsbGJhY2s9Tm9uZSwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUpOgotICAgICAgICByZXR1cm4gc2VsZi5fcGFyc2VyLmdldGludChzZWxmLl9uYW1lLCBvcHRpb24sIHJhdz1yYXcsIHZhcnM9dmFycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9ZmFsbGJhY2spCi0KLSAgICBkZWYgZ2V0ZmxvYXQoc2VsZiwgb3B0aW9uLCBmYWxsYmFjaz1Ob25lLCAqLCByYXc9RmFsc2UsIHZhcnM9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9wYXJzZXIuZ2V0ZmxvYXQoc2VsZi5fbmFtZSwgb3B0aW9uLCByYXc9cmF3LCB2YXJzPXZhcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9ZmFsbGJhY2spCi0KLSAgICBkZWYgZ2V0Ym9vbGVhbihzZWxmLCBvcHRpb24sIGZhbGxiYWNrPU5vbmUsICosIHJhdz1GYWxzZSwgdmFycz1Ob25lKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlci5nZXRib29sZWFuKHNlbGYuX25hbWUsIG9wdGlvbiwgcmF3PXJhdywgdmFycz12YXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9ZmFsbGJhY2spCi0KICAgICBAcHJvcGVydHkKICAgICBkZWYgcGFyc2VyKHNlbGYpOgogICAgICAgICAjIFRoZSBwYXJzZXIgb2JqZWN0IG9mIHRoZSBwcm94eSBpcyByZWFkLW9ubHkuCkBAIC0xMjUxLDMgKzEyNjMsNzcgQEAKICAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICAgIyBUaGUgbmFtZSBvZiB0aGUgc2VjdGlvbiBvbiBhIHByb3h5IGlzIHJlYWQtb25seS4KICAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKKworICAgIGRlZiBnZXQoc2VsZiwgb3B0aW9uLCBmYWxsYmFjaz1Ob25lLCAqLCByYXc9RmFsc2UsIHZhcnM9Tm9uZSwKKyAgICAgICAgICAgIF9pbXBsPU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgIiIiR2V0IGFuIG9wdGlvbiB2YWx1ZS4KKworICAgICAgICBVbmxlc3MgYGZhbGxiYWNrYCBpcyBwcm92aWRlZCwgYE5vbmVgIHdpbGwgYmUgcmV0dXJuZWQgaWYgdGhlIG9wdGlvbgorICAgICAgICBpcyBub3QgZm91bmQuCisKKyAgICAgICAgIiIiCisgICAgICAgICMgSWYgYF9pbXBsYCBpcyBwcm92aWRlZCwgaXQgc2hvdWxkIGJlIGEgZ2V0dGVyIG1ldGhvZCBvbiB0aGUgcGFyc2VyCisgICAgICAgICMgb2JqZWN0IHRoYXQgcHJvdmlkZXMgdGhlIGRlc2lyZWQgdHlwZSBjb252ZXJzaW9uLgorICAgICAgICBpZiBub3QgX2ltcGw6CisgICAgICAgICAgICBfaW1wbCA9IHNlbGYuX3BhcnNlci5nZXQKKyAgICAgICAgcmV0dXJuIF9pbXBsKHNlbGYuX25hbWUsIG9wdGlvbiwgcmF3PXJhdywgdmFycz12YXJzLAorICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9ZmFsbGJhY2ssICoqa3dhcmdzKQorCisKK2NsYXNzIENvbnZlcnRlck1hcHBpbmcoTXV0YWJsZU1hcHBpbmcpOgorICAgICIiIkVuYWJsZXMgcmV1c2Ugb2YgZ2V0KigpIG1ldGhvZHMgYmV0d2VlbiB0aGUgcGFyc2VyIGFuZCBzZWN0aW9uIHByb3hpZXMuCisKKyAgICBJZiBhIHBhcnNlciBjbGFzcyBpbXBsZW1lbnRzIGEgZ2V0dGVyIGRpcmVjdGx5LCB0aGUgdmFsdWUgZm9yIHRoZSBnaXZlbgorICAgIGtleSB3aWxsIGJlIGBgTm9uZWBgLiBUaGUgcHJlc2VuY2Ugb2YgdGhlIGNvbnZlcnRlciBuYW1lIGhlcmUgZW5hYmxlcworICAgIHNlY3Rpb24gcHJveGllcyB0byBmaW5kIGFuZCB1c2UgdGhlIGltcGxlbWVudGF0aW9uIG9uIHRoZSBwYXJzZXIgY2xhc3MuCisgICAgIiIiCisKKyAgICBHRVRURVJDUkUgPSByZS5jb21waWxlKHIiXmdldCg/UDxuYW1lPi4rKSQiKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlcik6CisgICAgICAgIHNlbGYuX3BhcnNlciA9IHBhcnNlcgorICAgICAgICBzZWxmLl9kYXRhID0ge30KKyAgICAgICAgZm9yIGdldHRlciBpbiBkaXIoc2VsZi5fcGFyc2VyKToKKyAgICAgICAgICAgIG0gPSBzZWxmLkdFVFRFUkNSRS5tYXRjaChnZXR0ZXIpCisgICAgICAgICAgICBpZiBub3QgbSBvciBub3QgY2FsbGFibGUoZ2V0YXR0cihzZWxmLl9wYXJzZXIsIGdldHRlcikpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLl9kYXRhW20uZ3JvdXAoJ25hbWUnKV0gPSBOb25lICAgIyBTZWUgY2xhc3MgZG9jc3RyaW5nLgorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CisgICAgICAgIHJldHVybiBzZWxmLl9kYXRhW2tleV0KKworICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgayA9ICdnZXQnICsga2V5CisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbmNvbXBhdGlibGUga2V5OiB7fSAodHlwZToge30pJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJy5mb3JtYXQoa2V5LCB0eXBlKGtleSkpKQorICAgICAgICBpZiBrID09ICdnZXQnOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW5jb21wYXRpYmxlIGtleTogY2Fubm90IHVzZSAiIiBhcyBhIG5hbWUnKQorICAgICAgICBzZWxmLl9kYXRhW2tleV0gPSB2YWx1ZQorICAgICAgICBmdW5jID0gZnVuY3Rvb2xzLnBhcnRpYWwoc2VsZi5fcGFyc2VyLl9nZXRfY29udiwgY29udj12YWx1ZSkKKyAgICAgICAgZnVuYy5jb252ZXJ0ZXIgPSB2YWx1ZQorICAgICAgICBzZXRhdHRyKHNlbGYuX3BhcnNlciwgaywgZnVuYykKKyAgICAgICAgZm9yIHByb3h5IGluIHNlbGYuX3BhcnNlci52YWx1ZXMoKToKKyAgICAgICAgICAgIGdldHRlciA9IGZ1bmN0b29scy5wYXJ0aWFsKHByb3h5LmdldCwgX2ltcGw9ZnVuYykKKyAgICAgICAgICAgIHNldGF0dHIocHJveHksIGssIGdldHRlcikKKworICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBrZXkpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBrID0gJ2dldCcgKyAoa2V5IG9yIE5vbmUpCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICByYWlzZSBLZXlFcnJvcihrZXkpCisgICAgICAgIGRlbCBzZWxmLl9kYXRhW2tleV0KKyAgICAgICAgZm9yIGluc3QgaW4gaXRlcnRvb2xzLmNoYWluKChzZWxmLl9wYXJzZXIsKSwgc2VsZi5fcGFyc2VyLnZhbHVlcygpKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkZWxhdHRyKGluc3QsIGspCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgIyBkb24ndCByYWlzZSBzaW5jZSB0aGUgZW50cnkgd2FzIHByZXNlbnQgaW4gX2RhdGEsIHNpbGVudGx5CisgICAgICAgICAgICAgICAgIyBjbGVhbiB1cAorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBpdGVyKHNlbGYuX2RhdGEpCisKKyAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9kYXRhKQpkaWZmIC0tZ2l0IGEvTGliL2NvbnRleHRsaWIucHkgYi9MaWIvY29udGV4dGxpYi5weQppbmRleCAwN2IyMjYxLi41Mzc3OTg3IDEwMDY0NAotLS0gYS9MaWIvY29udGV4dGxpYi5weQorKysgYi9MaWIvY29udGV4dGxpYi5weQpAQCAtNSw3ICs1LDcgQEAKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcwogCiBfX2FsbF9fID0gWyJjb250ZXh0bWFuYWdlciIsICJjbG9zaW5nIiwgIkNvbnRleHREZWNvcmF0b3IiLCAiRXhpdFN0YWNrIiwKLSAgICAgICAgICAgInJlZGlyZWN0X3N0ZG91dCIsICJzdXBwcmVzcyJdCisgICAgICAgICAgICJyZWRpcmVjdF9zdGRvdXQiLCAicmVkaXJlY3Rfc3RkZXJyIiwgInN1cHByZXNzIl0KIAogCiBjbGFzcyBDb250ZXh0RGVjb3JhdG9yKG9iamVjdCk6CkBAIC03NywxMCArNzcsMTcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmdlbi50aHJvdyh0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKQogICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiZ2VuZXJhdG9yIGRpZG4ndCBzdG9wIGFmdGVyIHRocm93KCkiKQogICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXhjOgotICAgICAgICAgICAgICAgICMgU3VwcHJlc3MgdGhlIGV4Y2VwdGlvbiAqdW5sZXNzKiBpdCdzIHRoZSBzYW1lIGV4Y2VwdGlvbiB0aGF0CisgICAgICAgICAgICAgICAgIyBTdXBwcmVzcyBTdG9wSXRlcmF0aW9uICp1bmxlc3MqIGl0J3MgdGhlIHNhbWUgZXhjZXB0aW9uIHRoYXQKICAgICAgICAgICAgICAgICAjIHdhcyBwYXNzZWQgdG8gdGhyb3coKS4gIFRoaXMgcHJldmVudHMgYSBTdG9wSXRlcmF0aW9uCi0gICAgICAgICAgICAgICAgIyByYWlzZWQgaW5zaWRlIHRoZSAid2l0aCIgc3RhdGVtZW50IGZyb20gYmVpbmcgc3VwcHJlc3NlZAorICAgICAgICAgICAgICAgICMgcmFpc2VkIGluc2lkZSB0aGUgIndpdGgiIHN0YXRlbWVudCBmcm9tIGJlaW5nIHN1cHByZXNzZWQuCiAgICAgICAgICAgICAgICAgcmV0dXJuIGV4YyBpcyBub3QgdmFsdWUKKyAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgICMgTGlrZXdpc2UsIGF2b2lkIHN1cHByZXNzaW5nIGlmIGEgU3RvcEl0ZXJhdGlvbiBleGNlcHRpb24KKyAgICAgICAgICAgICAgICAjIHdhcyBwYXNzZWQgdG8gdGhyb3coKSBhbmQgbGF0ZXIgd3JhcHBlZCBpbnRvIGEgUnVudGltZUVycm9yCisgICAgICAgICAgICAgICAgIyAoc2VlIFBFUCA0NzkpLgorICAgICAgICAgICAgICAgIGlmIGV4Yy5fX2NhdXNlX18gaXMgdmFsdWU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgIyBvbmx5IHJlLXJhaXNlIGlmIGl0J3MgKm5vdCogdGhlIGV4Y2VwdGlvbiB0aGF0IHdhcwogICAgICAgICAgICAgICAgICMgcGFzc2VkIHRvIHRocm93KCksIGJlY2F1c2UgX19leGl0X18oKSBtdXN0IG5vdCByYWlzZQpAQCAtMTUxLDggKzE1OCwyNyBAQAogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2luZm8pOgogICAgICAgICBzZWxmLnRoaW5nLmNsb3NlKCkKIAotY2xhc3MgcmVkaXJlY3Rfc3Rkb3V0OgotICAgICIiIkNvbnRleHQgbWFuYWdlciBmb3IgdGVtcG9yYXJpbHkgcmVkaXJlY3Rpbmcgc3Rkb3V0IHRvIGFub3RoZXIgZmlsZQorCitjbGFzcyBfUmVkaXJlY3RTdHJlYW06CisKKyAgICBfc3RyZWFtID0gTm9uZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5ld190YXJnZXQpOgorICAgICAgICBzZWxmLl9uZXdfdGFyZ2V0ID0gbmV3X3RhcmdldAorICAgICAgICAjIFdlIHVzZSBhIGxpc3Qgb2Ygb2xkIHRhcmdldHMgdG8gbWFrZSB0aGlzIENNIHJlLWVudHJhbnQKKyAgICAgICAgc2VsZi5fb2xkX3RhcmdldHMgPSBbXQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fb2xkX3RhcmdldHMuYXBwZW5kKGdldGF0dHIoc3lzLCBzZWxmLl9zdHJlYW0pKQorICAgICAgICBzZXRhdHRyKHN5cywgc2VsZi5fc3RyZWFtLCBzZWxmLl9uZXdfdGFyZ2V0KQorICAgICAgICByZXR1cm4gc2VsZi5fbmV3X3RhcmdldAorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y3R5cGUsIGV4Y2luc3QsIGV4Y3RiKToKKyAgICAgICAgc2V0YXR0cihzeXMsIHNlbGYuX3N0cmVhbSwgc2VsZi5fb2xkX3RhcmdldHMucG9wKCkpCisKKworY2xhc3MgcmVkaXJlY3Rfc3Rkb3V0KF9SZWRpcmVjdFN0cmVhbSk6CisgICAgIiIiQ29udGV4dCBtYW5hZ2VyIGZvciB0ZW1wb3JhcmlseSByZWRpcmVjdGluZyBzdGRvdXQgdG8gYW5vdGhlciBmaWxlLgogCiAgICAgICAgICMgSG93IHRvIHNlbmQgaGVscCgpIHRvIHN0ZGVycgogICAgICAgICB3aXRoIHJlZGlyZWN0X3N0ZG91dChzeXMuc3RkZXJyKToKQEAgLTE2NCwxOCArMTkwLDEzIEBACiAgICAgICAgICAgICAgICAgaGVscChwb3cpCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmV3X3RhcmdldCk6Ci0gICAgICAgIHNlbGYuX25ld190YXJnZXQgPSBuZXdfdGFyZ2V0Ci0gICAgICAgICMgV2UgdXNlIGEgbGlzdCBvZiBvbGQgdGFyZ2V0cyB0byBtYWtlIHRoaXMgQ00gcmUtZW50cmFudAotICAgICAgICBzZWxmLl9vbGRfdGFyZ2V0cyA9IFtdCisgICAgX3N0cmVhbSA9ICJzdGRvdXQiCiAKLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBzZWxmLl9vbGRfdGFyZ2V0cy5hcHBlbmQoc3lzLnN0ZG91dCkKLSAgICAgICAgc3lzLnN0ZG91dCA9IHNlbGYuX25ld190YXJnZXQKLSAgICAgICAgcmV0dXJuIHNlbGYuX25ld190YXJnZXQKIAotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGN0eXBlLCBleGNpbnN0LCBleGN0Yik6Ci0gICAgICAgIHN5cy5zdGRvdXQgPSBzZWxmLl9vbGRfdGFyZ2V0cy5wb3AoKQorY2xhc3MgcmVkaXJlY3Rfc3RkZXJyKF9SZWRpcmVjdFN0cmVhbSk6CisgICAgIiIiQ29udGV4dCBtYW5hZ2VyIGZvciB0ZW1wb3JhcmlseSByZWRpcmVjdGluZyBzdGRlcnIgdG8gYW5vdGhlciBmaWxlLiIiIgorCisgICAgX3N0cmVhbSA9ICJzdGRlcnIiCiAKIAogY2xhc3Mgc3VwcHJlc3M6CmRpZmYgLS1naXQgYS9MaWIvY29weS5weSBiL0xpYi9jb3B5LnB5CmluZGV4IGYwZmI0NDMuLjQ5M2M0ODcgMTAwNjQ0Ci0tLSBhL0xpYi9jb3B5LnB5CisrKyBiL0xpYi9jb3B5LnB5CkBAIC05NCw3ICs5NCw3IEBACiAgICAgZWxzZToKICAgICAgICAgcmVkdWN0b3IgPSBnZXRhdHRyKHgsICJfX3JlZHVjZV9leF9fIiwgTm9uZSkKICAgICAgICAgaWYgcmVkdWN0b3I6Ci0gICAgICAgICAgICBydiA9IHJlZHVjdG9yKDIpCisgICAgICAgICAgICBydiA9IHJlZHVjdG9yKDQpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZWR1Y3RvciA9IGdldGF0dHIoeCwgIl9fcmVkdWNlX18iLCBOb25lKQogICAgICAgICAgICAgaWYgcmVkdWN0b3I6CkBAIC0xNzEsNyArMTcxLDcgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByZWR1Y3RvciA9IGdldGF0dHIoeCwgIl9fcmVkdWNlX2V4X18iLCBOb25lKQogICAgICAgICAgICAgICAgICAgICBpZiByZWR1Y3RvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJ2ID0gcmVkdWN0b3IoMikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ2ID0gcmVkdWN0b3IoNCkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHJlZHVjdG9yID0gZ2V0YXR0cih4LCAiX19yZWR1Y2VfXyIsIE5vbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiByZWR1Y3RvcjoKQEAgLTIyMSwxNyArMjIxLDE1IEBACiBkW2xpc3RdID0gX2RlZXBjb3B5X2xpc3QKIAogZGVmIF9kZWVwY29weV90dXBsZSh4LCBtZW1vKToKLSAgICB5ID0gW10KLSAgICBmb3IgYSBpbiB4OgotICAgICAgICB5LmFwcGVuZChkZWVwY29weShhLCBtZW1vKSkKKyAgICB5ID0gW2RlZXBjb3B5KGEsIG1lbW8pIGZvciBhIGluIHhdCiAgICAgIyBXZSdyZSBub3QgZ29pbmcgdG8gcHV0IHRoZSB0dXBsZSBpbiB0aGUgbWVtbywgYnV0IGl0J3Mgc3RpbGwgaW1wb3J0YW50IHdlCiAgICAgIyBjaGVjayBmb3IgaXQsIGluIGNhc2UgdGhlIHR1cGxlIGNvbnRhaW5zIHJlY3Vyc2l2ZSBtdXRhYmxlIHN0cnVjdHVyZXMuCiAgICAgdHJ5OgogICAgICAgICByZXR1cm4gbWVtb1tpZCh4KV0KICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgIHBhc3MKLSAgICBmb3IgaSBpbiByYW5nZShsZW4oeCkpOgotICAgICAgICBpZiB4W2ldIGlzIG5vdCB5W2ldOgorICAgIGZvciBrLCBqIGluIHppcCh4LCB5KToKKyAgICAgICAgaWYgayBpcyBub3QgajoKICAgICAgICAgICAgIHkgPSB0dXBsZSh5KQogICAgICAgICAgICAgYnJlYWsKICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvTGliL2Nzdi5weSBiL0xpYi9jc3YucHkKaW5kZXggYTU2ZWVkOC4uY2E0MGU1ZSAxMDA2NDQKLS0tIGEvTGliL2Nzdi5weQorKysgYi9MaWIvY3N2LnB5CkBAIC0xNDcsMTYgKzE0NywxMyBAQAogICAgICAgICAgICAgaWYgd3JvbmdfZmllbGRzOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImRpY3QgY29udGFpbnMgZmllbGRzIG5vdCBpbiBmaWVsZG5hbWVzOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIsICIuam9pbihbcmVwcih4KSBmb3IgeCBpbiB3cm9uZ19maWVsZHNdKSkKLSAgICAgICAgcmV0dXJuIFtyb3dkaWN0LmdldChrZXksIHNlbGYucmVzdHZhbCkgZm9yIGtleSBpbiBzZWxmLmZpZWxkbmFtZXNdCisgICAgICAgIHJldHVybiAocm93ZGljdC5nZXQoa2V5LCBzZWxmLnJlc3R2YWwpIGZvciBrZXkgaW4gc2VsZi5maWVsZG5hbWVzKQogCiAgICAgZGVmIHdyaXRlcm93KHNlbGYsIHJvd2RpY3QpOgogICAgICAgICByZXR1cm4gc2VsZi53cml0ZXIud3JpdGVyb3coc2VsZi5fZGljdF90b19saXN0KHJvd2RpY3QpKQogCiAgICAgZGVmIHdyaXRlcm93cyhzZWxmLCByb3dkaWN0cyk6Ci0gICAgICAgIHJvd3MgPSBbXQotICAgICAgICBmb3Igcm93ZGljdCBpbiByb3dkaWN0czoKLSAgICAgICAgICAgIHJvd3MuYXBwZW5kKHNlbGYuX2RpY3RfdG9fbGlzdChyb3dkaWN0KSkKLSAgICAgICAgcmV0dXJuIHNlbGYud3JpdGVyLndyaXRlcm93cyhyb3dzKQorICAgICAgICByZXR1cm4gc2VsZi53cml0ZXIud3JpdGVyb3dzKG1hcChzZWxmLl9kaWN0X3RvX2xpc3QsIHJvd2RpY3RzKSkKIAogIyBHdWFyZCBTbmlmZmVyJ3MgdHlwZSBjaGVja2luZyBhZ2FpbnN0IGJ1aWxkcyB0aGF0IGV4Y2x1ZGUgY29tcGxleCgpCiB0cnk6CkBAIC0yMzEsMjAgKzIyOCwyMSBAQAogICAgICAgICBxdW90ZXMgPSB7fQogICAgICAgICBkZWxpbXMgPSB7fQogICAgICAgICBzcGFjZXMgPSAwCisgICAgICAgIGdyb3VwaW5kZXggPSByZWdleHAuZ3JvdXBpbmRleAogICAgICAgICBmb3IgbSBpbiBtYXRjaGVzOgotICAgICAgICAgICAgbiA9IHJlZ2V4cC5ncm91cGluZGV4WydxdW90ZSddIC0gMQorICAgICAgICAgICAgbiA9IGdyb3VwaW5kZXhbJ3F1b3RlJ10gLSAxCiAgICAgICAgICAgICBrZXkgPSBtW25dCiAgICAgICAgICAgICBpZiBrZXk6CiAgICAgICAgICAgICAgICAgcXVvdGVzW2tleV0gPSBxdW90ZXMuZ2V0KGtleSwgMCkgKyAxCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbiA9IHJlZ2V4cC5ncm91cGluZGV4WydkZWxpbSddIC0gMQorICAgICAgICAgICAgICAgIG4gPSBncm91cGluZGV4WydkZWxpbSddIC0gMQogICAgICAgICAgICAgICAgIGtleSA9IG1bbl0KICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYga2V5IGFuZCAoZGVsaW1pdGVycyBpcyBOb25lIG9yIGtleSBpbiBkZWxpbWl0ZXJzKToKICAgICAgICAgICAgICAgICBkZWxpbXNba2V5XSA9IGRlbGltcy5nZXQoa2V5LCAwKSArIDEKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBuID0gcmVnZXhwLmdyb3VwaW5kZXhbJ3NwYWNlJ10gLSAxCisgICAgICAgICAgICAgICAgbiA9IGdyb3VwaW5kZXhbJ3NwYWNlJ10gLSAxCiAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIG1bbl06CmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL19faW5pdF9fLnB5IGIvTGliL2N0eXBlcy9fX2luaXRfXy5weQppbmRleCA1YzgwM2ZmLi5kYzc0NThhIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL19faW5pdF9fLnB5CisrKyBiL0xpYi9jdHlwZXMvX19pbml0X18ucHkKQEAgLTQ3LDcgKzQ3LDcgQEAKIGRlZiBjcmVhdGVfc3RyaW5nX2J1ZmZlcihpbml0LCBzaXplPU5vbmUpOgogICAgICIiImNyZWF0ZV9zdHJpbmdfYnVmZmVyKGFCeXRlcykgLT4gY2hhcmFjdGVyIGFycmF5CiAgICAgY3JlYXRlX3N0cmluZ19idWZmZXIoYW5JbnRlZ2VyKSAtPiBjaGFyYWN0ZXIgYXJyYXkKLSAgICBjcmVhdGVfc3RyaW5nX2J1ZmZlcihhU3RyaW5nLCBhbkludGVnZXIpIC0+IGNoYXJhY3RlciBhcnJheQorICAgIGNyZWF0ZV9zdHJpbmdfYnVmZmVyKGFCeXRlcywgYW5JbnRlZ2VyKSAtPiBjaGFyYWN0ZXIgYXJyYXkKICAgICAiIiIKICAgICBpZiBpc2luc3RhbmNlKGluaXQsIGJ5dGVzKToKICAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgpAQCAtMjM3LDE0ICsyMzcsOCBAQAogCiBjbGFzcyBjX2NoYXJfcChfU2ltcGxlQ0RhdGEpOgogICAgIF90eXBlXyA9ICJ6IgotICAgIGlmIF9vcy5uYW1lID09ICJudCI6Ci0gICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgICAgIGlmIG5vdCB3aW5kbGwua2VybmVsMzIuSXNCYWRTdHJpbmdQdHJBKHNlbGYsIC0xKToKLSAgICAgICAgICAgICAgICByZXR1cm4gIiVzKCVyKSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYudmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gIiVzKCVzKSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGNhc3Qoc2VsZiwgY192b2lkX3ApLnZhbHVlKQotICAgIGVsc2U6Ci0gICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgICAgIHJldHVybiAiJXMoJXMpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgY2FzdChzZWxmLCBjX3ZvaWRfcCkudmFsdWUpCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzKCVzKSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGNfdm9pZF9wLmZyb21fYnVmZmVyKHNlbGYpLnZhbHVlKQogX2NoZWNrX3NpemUoY19jaGFyX3AsICJQIikKIAogY2xhc3MgY192b2lkX3AoX1NpbXBsZUNEYXRhKToKQEAgLTI1OSw2ICsyNTMsOCBAQAogCiBjbGFzcyBjX3djaGFyX3AoX1NpbXBsZUNEYXRhKToKICAgICBfdHlwZV8gPSAiWiIKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiJXMoJXMpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgY192b2lkX3AuZnJvbV9idWZmZXIoc2VsZikudmFsdWUpCiAKIGNsYXNzIGNfd2NoYXIoX1NpbXBsZUNEYXRhKToKICAgICBfdHlwZV8gPSAidSIKQEAgLTM1Myw3ICszNDksNyBAQAogICAgICAgICAgICAgc2VsZi5faGFuZGxlID0gaGFuZGxlCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPCVzICclcycsIGhhbmRsZSAleCBhdCAleD4iICUgXAorICAgICAgICByZXR1cm4gIjwlcyAnJXMnLCBoYW5kbGUgJXggYXQgJSN4PiIgJSBcCiAgICAgICAgICAgICAgICAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuX25hbWUsCiAgICAgICAgICAgICAgICAgKHNlbGYuX2hhbmRsZSAmIChfc3lzLm1heHNpemUqMiArIDEpKSwKICAgICAgICAgICAgICAgICBpZChzZWxmKSAmIChfc3lzLm1heHNpemUqMiArIDEpKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy9fZW5kaWFuLnB5IGIvTGliL2N0eXBlcy9fZW5kaWFuLnB5CmluZGV4IGRhZTY1ZmMuLjM3NDQ0YmQgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvX2VuZGlhbi5weQorKysgYi9MaWIvY3R5cGVzL19lbmRpYW4ucHkKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogICAgIGNsYXNzIEJpZ0VuZGlhblN0cnVjdHVyZShTdHJ1Y3R1cmUsIG1ldGFjbGFzcz1fc3dhcHBlZF9tZXRhKToKICAgICAgICAgIiIiU3RydWN0dXJlIHdpdGggYmlnIGVuZGlhbiBieXRlIG9yZGVyIiIiCisgICAgICAgIF9fc2xvdHNfXyA9ICgpCiAgICAgICAgIF9zd2FwcGVkYnl0ZXNfID0gTm9uZQogCiBlbGlmIHN5cy5ieXRlb3JkZXIgPT0gImJpZyI6CkBAIC01Myw2ICs1NCw3IEBACiAgICAgQmlnRW5kaWFuU3RydWN0dXJlID0gU3RydWN0dXJlCiAgICAgY2xhc3MgTGl0dGxlRW5kaWFuU3RydWN0dXJlKFN0cnVjdHVyZSwgbWV0YWNsYXNzPV9zd2FwcGVkX21ldGEpOgogICAgICAgICAiIiJTdHJ1Y3R1cmUgd2l0aCBsaXR0bGUgZW5kaWFuIGJ5dGUgb3JkZXIiIiIKKyAgICAgICAgX19zbG90c19fID0gKCkKICAgICAgICAgX3N3YXBwZWRieXRlc18gPSBOb25lCiAKIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9hc19wYXJhbWV0ZXIucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9hc19wYXJhbWV0ZXIucHkKaW5kZXggOTQ4YjQ2My4uMmEzNDg0YiAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfYXNfcGFyYW1ldGVyLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2FzX3BhcmFtZXRlci5weQpAQCAtMTk0LDcgKzE5NCw3IEBACiAKICAgICAgICAgYSA9IEEoKQogICAgICAgICBhLl9hc19wYXJhbWV0ZXJfID0gYQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IpOgogICAgICAgICAgICAgY19pbnQuZnJvbV9wYXJhbShhKQogCiAKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2J5dGVzd2FwLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfYnl0ZXN3YXAucHkKaW5kZXggNDI3YmI4Yi4uMDFjOTdlOCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfYnl0ZXN3YXAucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfYnl0ZXN3YXAucHkKQEAgLTIyLDYgKzIyLDI2IEBACiAgICAgICAgICAgICBzZXRhdHRyKGJpdHMsICJpJXMiICUgaSwgMSkKICAgICAgICAgICAgIGR1bXAoYml0cykKIAorICAgIGRlZiB0ZXN0X3Nsb3RzKHNlbGYpOgorICAgICAgICBjbGFzcyBCaWdQb2ludChCaWdFbmRpYW5TdHJ1Y3R1cmUpOgorICAgICAgICAgICAgX19zbG90c19fID0gKCkKKyAgICAgICAgICAgIF9maWVsZHNfID0gWygieCIsIGNfaW50KSwgKCJ5IiwgY19pbnQpXQorCisgICAgICAgIGNsYXNzIExvd1BvaW50KExpdHRsZUVuZGlhblN0cnVjdHVyZSk6CisgICAgICAgICAgICBfX3Nsb3RzX18gPSAoKQorICAgICAgICAgICAgX2ZpZWxkc18gPSBbKCJ4IiwgY19pbnQpLCAoInkiLCBjX2ludCldCisKKyAgICAgICAgYmlnID0gQmlnUG9pbnQoKQorICAgICAgICBsaXR0bGUgPSBMb3dQb2ludCgpCisgICAgICAgIGJpZy54ID0gNAorICAgICAgICBiaWcueSA9IDIKKyAgICAgICAgbGl0dGxlLnggPSAyCisgICAgICAgIGxpdHRsZS55ID0gNAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGJpZy56ID0gNDIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBsaXR0bGUueiA9IDI0CisKICAgICBkZWYgdGVzdF9lbmRpYW5fc2hvcnQoc2VsZik6CiAgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gImxpdHRsZSI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNfc2hvcnQuX19jdHlwZV9sZV9fLCBjX3Nob3J0KQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZnJvbWJ1ZmZlci5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2Zyb21idWZmZXIucHkKaW5kZXggODY5NTRmZS4uMjljNWExOSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZnJvbWJ1ZmZlci5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9mcm9tYnVmZmVyLnB5CkBAIC00NCw3ICs0NCw3IEBACiAgICAgICAgICAgICAoY19jaGFyICogMTYpLmZyb21fYnVmZmVyKG1lbW9yeXZpZXcoYiJhIiAqIDE2KSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgIm5vdCBDIGNvbnRpZ3VvdXMiKToKICAgICAgICAgICAgIChjX2NoYXIgKiAxNikuZnJvbV9idWZmZXIobWVtb3J5dmlldyhieXRlYXJyYXkoYiJhIiAqIDE2KSlbOjotMV0pCi0gICAgICAgIG1zZyA9ICJkb2VzIG5vdCBoYXZlIHRoZSBidWZmZXIgaW50ZXJmYWNlIgorICAgICAgICBtc2cgPSAiYnl0ZXMtbGlrZSBvYmplY3QgaXMgcmVxdWlyZWQiCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIG1zZyk6CiAgICAgICAgICAgICAoY19jaGFyICogMTYpLmZyb21fYnVmZmVyKCJhIiAqIDE2KQogCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9sb2FkaW5nLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbG9hZGluZy5weQppbmRleCA0ZmI4OTY0Li4yODQ2OGMxIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9sb2FkaW5nLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2xvYWRpbmcucHkKQEAgLTUyLDcgKzUyLDkgQEAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lIGluICgibnQiLCAiY2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBzcGVjaWZpYyB0byBXaW5kb3dzIChOVC9DRSknKQogICAgIGRlZiB0ZXN0X2xvYWRfbGlicmFyeShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUobGliY19uYW1lKQorICAgICAgICAjIENSVCBpcyBubyBsb25nZXIgZGlyZWN0bHkgbG9hZGFibGUuIFNlZSBpc3N1ZTIzNjA2IGZvciB0aGUKKyAgICAgICAgIyBkaXNjdXNzaW9uIGFib3V0IGFsdGVybmF0aXZlIGFwcHJvYWNoZXMuCisgICAgICAgICNzZWxmLmFzc2VydElzTm90Tm9uZShsaWJjX25hbWUpCiAgICAgICAgIGlmIHRlc3Quc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgcHJpbnQoZmluZF9saWJyYXJ5KCJrZXJuZWwzMiIpKQogICAgICAgICAgICAgcHJpbnQoZmluZF9saWJyYXJ5KCJ1c2VyMzIiKSkKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BvaW50ZXJzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcG9pbnRlcnMucHkKaW5kZXggNmVlYTU4Zi4uMjI1YjlkMSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcG9pbnRlcnMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcG9pbnRlcnMucHkKQEAgLTIyLDcgKzIyLDEwIEBACiAgICAgZGVmIHRlc3RfcGFzc19wb2ludGVycyhzZWxmKToKICAgICAgICAgZGxsID0gQ0RMTChfY3R5cGVzX3Rlc3QuX19maWxlX18pCiAgICAgICAgIGZ1bmMgPSBkbGwuX3Rlc3RmdW5jX3BfcAotICAgICAgICBmdW5jLnJlc3R5cGUgPSBjX2xvbmcKKyAgICAgICAgaWYgc2l6ZW9mKGNfbG9uZ2xvbmcpID09IHNpemVvZihjX3ZvaWRfcCk6CisgICAgICAgICAgICBmdW5jLnJlc3R5cGUgPSBjX2xvbmdsb25nCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmdW5jLnJlc3R5cGUgPSBjX2xvbmcKIAogICAgICAgICBpID0gY19pbnQoMTIzNDU2NzgpCiAjIyAgICAgICAgZnVuYy5hcmd0eXBlcyA9IChQT0lOVEVSKGNfaW50KSwpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wcm90b3R5cGVzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcHJvdG90eXBlcy5weQppbmRleCA4MThjMTExLi5jZDBjNjQ5IDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wcm90b3R5cGVzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3Byb3RvdHlwZXMucHkKQEAgLTY5LDcgKzY5LDEwIEBACiAKICAgICBkZWYgdGVzdF9pbnRfcG9pbnRlcl9hcmcoc2VsZik6CiAgICAgICAgIGZ1bmMgPSB0ZXN0ZGxsLl90ZXN0ZnVuY19wX3AKLSAgICAgICAgZnVuYy5yZXN0eXBlID0gY19sb25nCisgICAgICAgIGlmIHNpemVvZihjX2xvbmdsb25nKSA9PSBzaXplb2YoY192b2lkX3ApOgorICAgICAgICAgICAgZnVuYy5yZXN0eXBlID0gY19sb25nbG9uZworICAgICAgICBlbHNlOgorICAgICAgICAgICAgZnVuYy5yZXN0eXBlID0gY19sb25nCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZnVuYygwKSkKIAogICAgICAgICBjaSA9IGNfaW50KDApCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF92YWx1ZXMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF92YWx1ZXMucHkKaW5kZXggNjg1MGNmMC4uYzdjNzhjZSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfdmFsdWVzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3ZhbHVlcy5weQpAQCAtNTgsOCArNTgsMTMgQEAKICAgICAgICAgaXRlbXMgPSBbXQogICAgICAgICAjIF9mcm96ZW5faW1wb3J0bGliIGNoYW5nZXMgc2l6ZSB3aGVuZXZlciBpbXBvcnRsaWIuX2Jvb3RzdHJhcAogICAgICAgICAjIGNoYW5nZXMsIHNvIGl0IGdldHMgYSBzcGVjaWFsIGNhc2UuICBXZSBzaG91bGQgbWFrZSBzdXJlIGl0J3MKLSAgICAgICAgIyBmb3VuZCwgYnV0IGRvbid0IHdvcnJ5IGFib3V0IGl0cyBzaXplIHRvbyBtdWNoLgotICAgICAgICBfZnpuX2ltcGxpYl9zZWVuID0gRmFsc2UKKyAgICAgICAgIyBmb3VuZCwgYnV0IGRvbid0IHdvcnJ5IGFib3V0IGl0cyBzaXplIHRvbyBtdWNoLiAgVGhlIHNhbWUKKyAgICAgICAgIyBhcHBsaWVzIHRvIF9mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsLgorICAgICAgICBib290c3RyYXBfc2VlbiA9IFtdCisgICAgICAgIGJvb3RzdHJhcF9leHBlY3RlZCA9IFsKKyAgICAgICAgICAgICAgICBiJ19mcm96ZW5faW1wb3J0bGliJywKKyAgICAgICAgICAgICAgICBiJ19mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsJywKKyAgICAgICAgICAgICAgICBdCiAgICAgICAgIGZvciBlbnRyeSBpbiBmdDoKICAgICAgICAgICAgICMgVGhpcyBpcyBkYW5nZXJvdXMuIFdlICpjYW4qIGl0ZXJhdGUgb3ZlciBhIHBvaW50ZXIsIGJ1dAogICAgICAgICAgICAgIyB0aGUgbG9vcCB3aWxsIG5vdCB0ZXJtaW5hdGUgKG1heWJlIHdpdGggYW4gYWNjZXNzCkBAIC02NywxMCArNzIsMTAgQEAKICAgICAgICAgICAgIGlmIGVudHJ5Lm5hbWUgaXMgTm9uZToKICAgICAgICAgICAgICAgICBicmVhawogCi0gICAgICAgICAgICBpZiBlbnRyeS5uYW1lID09IGInX2Zyb3plbl9pbXBvcnRsaWInOgotICAgICAgICAgICAgICAgIF9mem5faW1wbGliX3NlZW4gPSBUcnVlCisgICAgICAgICAgICBpZiBlbnRyeS5uYW1lIGluIGJvb3RzdHJhcF9leHBlY3RlZDoKKyAgICAgICAgICAgICAgICBib290c3RyYXBfc2Vlbi5hcHBlbmQoZW50cnkubmFtZSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZW50cnkuc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgIl9mcm96ZW5faW1wb3J0bGliIHdhcyByZXBvcnRlZCBhcyBoYXZpbmcgbm8gc2l6ZSIpCisgICAgICAgICAgICAgICAgICAgICJ7IXJ9IHdhcyByZXBvcnRlZCBhcyBoYXZpbmcgbm8gc2l6ZSIuZm9ybWF0KGVudHJ5Lm5hbWUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpdGVtcy5hcHBlbmQoKGVudHJ5Lm5hbWUsIGVudHJ5LnNpemUpKQogCkBAIC04MCw4ICs4NSw4IEBACiAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdGVtcywgZXhwZWN0ZWQpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF9mem5faW1wbGliX3NlZW4sCi0gICAgICAgICAgICAiX2Zyb3plbl9pbXBvcnRsaWIgd2Fzbid0IGZvdW5kIGluIFB5SW1wb3J0X0Zyb3plbk1vZHVsZXMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChib290c3RyYXBfc2VlbiksIGJvb3RzdHJhcF9leHBlY3RlZCwKKyAgICAgICAgICAgICJmcm96ZW4gYm9vdHN0cmFwIG1vZHVsZXMgZGlkIG5vdCBtYXRjaCBQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzIikKIAogICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgX3BvaW50ZXJfdHlwZV9jYWNoZQogICAgICAgICBkZWwgX3BvaW50ZXJfdHlwZV9jYWNoZVtzdHJ1Y3RfZnJvemVuXQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy91dGlsLnB5IGIvTGliL2N0eXBlcy91dGlsLnB5CmluZGV4IDU5NTExM2IuLjllNzRjY2QgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdXRpbC5weQorKysgYi9MaWIvY3R5cGVzL3V0aWwucHkKQEAgLTE5LDYgKzE5LDggQEAKICAgICAgICAgaSA9IGkgKyBsZW4ocHJlZml4KQogICAgICAgICBzLCByZXN0ID0gc3lzLnZlcnNpb25baTpdLnNwbGl0KCIgIiwgMSkKICAgICAgICAgbWFqb3JWZXJzaW9uID0gaW50KHNbOi0yXSkgLSA2CisgICAgICAgIGlmIG1ham9yVmVyc2lvbiA+PSAxMzoKKyAgICAgICAgICAgIG1ham9yVmVyc2lvbiArPSAxCiAgICAgICAgIG1pbm9yVmVyc2lvbiA9IGludChzWzI6M10pIC8gMTAuMAogICAgICAgICAjIEkgZG9uJ3QgdGhpbmsgcGF0aHMgYXJlIGFmZmVjdGVkIGJ5IG1pbm9yIHZlcnNpb24gaW4gdmVyc2lvbiA2CiAgICAgICAgIGlmIG1ham9yVmVyc2lvbiA9PSA2OgpAQCAtMzYsOCArMzgsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGlmIHZlcnNpb24gPD0gNjoKICAgICAgICAgICAgIGNsaWJuYW1lID0gJ21zdmNydCcKLSAgICAgICAgZWxzZToKKyAgICAgICAgZWxpZiB2ZXJzaW9uIDw9IDEzOgogICAgICAgICAgICAgY2xpYm5hbWUgPSAnbXN2Y3IlZCcgJSAodmVyc2lvbiAqIDEwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBDUlQgaXMgbm8gbG9uZ2VyIGRpcmVjdGx5IGxvYWRhYmxlLiBTZWUgaXNzdWUyMzYwNiBmb3IgdGhlCisgICAgICAgICAgICAjIGRpc2N1c3Npb24gYWJvdXQgYWx0ZXJuYXRpdmUgYXBwcm9hY2hlcy4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgIyBJZiBweXRob24gd2FzIGJ1aWx0IHdpdGggaW4gZGVidWcgbW9kZQogICAgICAgICBpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQpkaWZmIC0tZ2l0IGEvTGliL2RhdGV0aW1lLnB5IGIvTGliL2RhdGV0aW1lLnB5CmluZGV4IDNhZjEyZTcuLmI5NzE5Y2IgMTAwNjQ0Ci0tLSBhL0xpYi9kYXRldGltZS5weQorKysgYi9MaWIvZGF0ZXRpbWUucHkKQEAgLTEyLDcgKzEyLDcgQEAKIAogTUlOWUVBUiA9IDEKIE1BWFlFQVIgPSA5OTk5Ci1fTUFYT1JESU5BTCA9IDM2NTIwNTkgIyBkYXRlLm1heC50b29yZGluYWwoKQorX01BWE9SRElOQUwgPSAzNjUyMDU5ICAjIGRhdGUubWF4LnRvb3JkaW5hbCgpCiAKICMgVXRpbGl0eSBmdW5jdGlvbnMsIGFkYXB0ZWQgZnJvbSBQeXRob24ncyBEZW1vL2NsYXNzZXMvRGF0ZXMucHksIHdoaWNoCiAjIGFsc28gYXNzdW1lcyB0aGUgY3VycmVudCBHcmVnb3JpYW4gY2FsZW5kYXIgaW5kZWZpbml0ZWx5IGV4dGVuZGVkIGluCkBAIC0yNiw3ICsyNiw3IEBACiAjIC0xIGlzIGEgcGxhY2Vob2xkZXIgZm9yIGluZGV4aW5nIHB1cnBvc2VzLgogX0RBWVNfSU5fTU9OVEggPSBbLTEsIDMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdCiAKLV9EQVlTX0JFRk9SRV9NT05USCA9IFstMV0gIyAtMSBpcyBhIHBsYWNlaG9sZGVyIGZvciBpbmRleGluZyBwdXJwb3Nlcy4KK19EQVlTX0JFRk9SRV9NT05USCA9IFstMV0gICMgLTEgaXMgYSBwbGFjZWhvbGRlciBmb3IgaW5kZXhpbmcgcHVycG9zZXMuCiBkYm0gPSAwCiBmb3IgZGltIGluIF9EQVlTX0lOX01PTlRIWzE6XToKICAgICBfREFZU19CRUZPUkVfTU9OVEguYXBwZW5kKGRibSkKQEAgLTE2Miw5ICsxNjIsOSBAQAogIyBDb3JyZWN0bHkgc3Vic3RpdHV0ZSBmb3IgJXogYW5kICVaIGVzY2FwZXMgaW4gc3RyZnRpbWUgZm9ybWF0cy4KIGRlZiBfd3JhcF9zdHJmdGltZShvYmplY3QsIGZvcm1hdCwgdGltZXR1cGxlKToKICAgICAjIERvbid0IGNhbGwgdXRjb2Zmc2V0KCkgb3IgdHpuYW1lKCkgdW5sZXNzIGFjdHVhbGx5IG5lZWRlZC4KLSAgICBmcmVwbGFjZSA9IE5vbmUgIyB0aGUgc3RyaW5nIHRvIHVzZSBmb3IgJWYKLSAgICB6cmVwbGFjZSA9IE5vbmUgIyB0aGUgc3RyaW5nIHRvIHVzZSBmb3IgJXoKLSAgICBacmVwbGFjZSA9IE5vbmUgIyB0aGUgc3RyaW5nIHRvIHVzZSBmb3IgJVoKKyAgICBmcmVwbGFjZSA9IE5vbmUgICMgdGhlIHN0cmluZyB0byB1c2UgZm9yICVmCisgICAgenJlcGxhY2UgPSBOb25lICAjIHRoZSBzdHJpbmcgdG8gdXNlIGZvciAlegorICAgIFpyZXBsYWNlID0gTm9uZSAgIyB0aGUgc3RyaW5nIHRvIHVzZSBmb3IgJVoKIAogICAgICMgU2NhbiBmb3JtYXQgZm9yICV6IGFuZCAlWiBlc2NhcGVzLCByZXBsYWNpbmcgYXMgbmVlZGVkLgogICAgIG5ld2Zvcm1hdCA9IFtdCkBAIC0yMTcsMTEgKzIxNyw2IEBACiAgICAgbmV3Zm9ybWF0ID0gIiIuam9pbihuZXdmb3JtYXQpCiAgICAgcmV0dXJuIF90aW1lLnN0cmZ0aW1lKG5ld2Zvcm1hdCwgdGltZXR1cGxlKQogCi1kZWYgX2NhbGxfdHppbmZvX21ldGhvZCh0emluZm8sIG1ldGhuYW1lLCB0emluZm9hcmcpOgotICAgIGlmIHR6aW5mbyBpcyBOb25lOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJldHVybiBnZXRhdHRyKHR6aW5mbywgbWV0aG5hbWUpKHR6aW5mb2FyZykKLQogIyBKdXN0IHJhaXNlIFR5cGVFcnJvciBpZiB0aGUgYXJnIGlzbid0IE5vbmUgb3IgYSBzdHJpbmcuCiBkZWYgX2NoZWNrX3R6bmFtZShuYW1lKToKICAgICBpZiBuYW1lIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShuYW1lLCBzdHIpOgpAQCAtMjQ1LDEzICsyNDAsMzEgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidHppbmZvLiVzKCkgbXVzdCByZXR1cm4gYSB3aG9sZSBudW1iZXIgIgogICAgICAgICAgICAgICAgICAgICAgICAgICJvZiBtaW51dGVzLCBnb3QgJXMiICUgKG5hbWUsIG9mZnNldCkpCiAgICAgaWYgbm90IC10aW1lZGVsdGEoMSkgPCBvZmZzZXQgPCB0aW1lZGVsdGEoMSk6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzKCk9JXMsIG11c3QgYmUgbXVzdCBiZSBzdHJpY3RseSBiZXR3ZWVuIgotICAgICAgICAgICAgICAgICAgICAgICAgICIgLXRpbWVkZWx0YShob3Vycz0yNCkgYW5kIHRpbWVkZWx0YShob3Vycz0yNCkiCi0gICAgICAgICAgICAgICAgICAgICAgICAgJSAobmFtZSwgb2Zmc2V0KSkKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMoKT0lcywgbXVzdCBiZSBtdXN0IGJlIHN0cmljdGx5IGJldHdlZW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICItdGltZWRlbHRhKGhvdXJzPTI0KSBhbmQgdGltZWRlbHRhKGhvdXJzPTI0KSIgJQorICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lLCBvZmZzZXQpKQorCitkZWYgX2NoZWNrX2ludF9maWVsZCh2YWx1ZSk6CisgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKKyAgICAgICAgcmV0dXJuIHZhbHVlCisgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIGZsb2F0KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5fX2ludF9fKCkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignX19pbnRfXyByZXR1cm5lZCBub24taW50ICh0eXBlICVzKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUodmFsdWUpLl9fbmFtZV9fKQorICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2FuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlICVzKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSh2YWx1ZSkuX19uYW1lX18pCisgICAgcmFpc2UgVHlwZUVycm9yKCdpbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkLCBnb3QgZmxvYXQnKQogCiBkZWYgX2NoZWNrX2RhdGVfZmllbGRzKHllYXIsIG1vbnRoLCBkYXkpOgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHllYXIsIGludCk6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcignaW50IGV4cGVjdGVkJykKKyAgICB5ZWFyID0gX2NoZWNrX2ludF9maWVsZCh5ZWFyKQorICAgIG1vbnRoID0gX2NoZWNrX2ludF9maWVsZChtb250aCkKKyAgICBkYXkgPSBfY2hlY2tfaW50X2ZpZWxkKGRheSkKICAgICBpZiBub3QgTUlOWUVBUiA8PSB5ZWFyIDw9IE1BWFlFQVI6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3llYXIgbXVzdCBiZSBpbiAlZC4uJWQnICUgKE1JTllFQVIsIE1BWFlFQVIpLCB5ZWFyKQogICAgIGlmIG5vdCAxIDw9IG1vbnRoIDw9IDEyOgpAQCAtMjU5LDEwICsyNzIsMTMgQEAKICAgICBkaW0gPSBfZGF5c19pbl9tb250aCh5ZWFyLCBtb250aCkKICAgICBpZiBub3QgMSA8PSBkYXkgPD0gZGltOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdkYXkgbXVzdCBiZSBpbiAxLi4lZCcgJSBkaW0sIGRheSkKKyAgICByZXR1cm4geWVhciwgbW9udGgsIGRheQogCiBkZWYgX2NoZWNrX3RpbWVfZmllbGRzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCk6Ci0gICAgaWYgbm90IGlzaW5zdGFuY2UoaG91ciwgaW50KToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdpbnQgZXhwZWN0ZWQnKQorICAgIGhvdXIgPSBfY2hlY2tfaW50X2ZpZWxkKGhvdXIpCisgICAgbWludXRlID0gX2NoZWNrX2ludF9maWVsZChtaW51dGUpCisgICAgc2Vjb25kID0gX2NoZWNrX2ludF9maWVsZChzZWNvbmQpCisgICAgbWljcm9zZWNvbmQgPSBfY2hlY2tfaW50X2ZpZWxkKG1pY3Jvc2Vjb25kKQogICAgIGlmIG5vdCAwIDw9IGhvdXIgPD0gMjM6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2hvdXIgbXVzdCBiZSBpbiAwLi4yMycsIGhvdXIpCiAgICAgaWYgbm90IDAgPD0gbWludXRlIDw9IDU5OgpAQCAtMjcxLDYgKzI4Nyw3IEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3NlY29uZCBtdXN0IGJlIGluIDAuLjU5Jywgc2Vjb25kKQogICAgIGlmIG5vdCAwIDw9IG1pY3Jvc2Vjb25kIDw9IDk5OTk5OToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbWljcm9zZWNvbmQgbXVzdCBiZSBpbiAwLi45OTk5OTknLCBtaWNyb3NlY29uZCkKKyAgICByZXR1cm4gaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kCiAKIGRlZiBfY2hlY2tfdHppbmZvX2FyZyh0eik6CiAgICAgaWYgdHogaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKHR6LCB0emluZm8pOgpAQCAtMzE2LDcgKzMzMyw3IEBACiAgICAgUmVwcmVzZW50YXRpb246IChkYXlzLCBzZWNvbmRzLCBtaWNyb3NlY29uZHMpLiAgV2h5PyAgQmVjYXVzZSBJCiAgICAgZmVsdCBsaWtlIGl0LgogICAgICIiIgotICAgIF9fc2xvdHNfXyA9ICdfZGF5cycsICdfc2Vjb25kcycsICdfbWljcm9zZWNvbmRzJworICAgIF9fc2xvdHNfXyA9ICdfZGF5cycsICdfc2Vjb25kcycsICdfbWljcm9zZWNvbmRzJywgJ19oYXNoY29kZScKIAogICAgIGRlZiBfX25ld19fKGNscywgZGF5cz0wLCBzZWNvbmRzPTAsIG1pY3Jvc2Vjb25kcz0wLAogICAgICAgICAgICAgICAgIG1pbGxpc2Vjb25kcz0wLCBtaW51dGVzPTAsIGhvdXJzPTAsIHdlZWtzPTApOgpAQCAtMzgyLDM4ICszOTksMjYgQEAKICAgICAgICAgIyBzZWNvbmRzZnJhYyBpc24ndCByZWZlcmVuY2VkIGFnYWluCiAKICAgICAgICAgaWYgaXNpbnN0YW5jZShtaWNyb3NlY29uZHMsIGZsb2F0KToKLSAgICAgICAgICAgIG1pY3Jvc2Vjb25kcyArPSB1c2RvdWJsZQotICAgICAgICAgICAgbWljcm9zZWNvbmRzID0gcm91bmQobWljcm9zZWNvbmRzLCAwKQotICAgICAgICAgICAgc2Vjb25kcywgbWljcm9zZWNvbmRzID0gZGl2bW9kKG1pY3Jvc2Vjb25kcywgMWU2KQotICAgICAgICAgICAgYXNzZXJ0IG1pY3Jvc2Vjb25kcyA9PSBpbnQobWljcm9zZWNvbmRzKQotICAgICAgICAgICAgYXNzZXJ0IHNlY29uZHMgPT0gaW50KHNlY29uZHMpCi0gICAgICAgICAgICBkYXlzLCBzZWNvbmRzID0gZGl2bW9kKHNlY29uZHMsIDI0LiozNjAwLikKLSAgICAgICAgICAgIGFzc2VydCBkYXlzID09IGludChkYXlzKQotICAgICAgICAgICAgYXNzZXJ0IHNlY29uZHMgPT0gaW50KHNlY29uZHMpCi0gICAgICAgICAgICBkICs9IGludChkYXlzKQotICAgICAgICAgICAgcyArPSBpbnQoc2Vjb25kcykgICAjIGNhbid0IG92ZXJmbG93Ci0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzLCBpbnQpCi0gICAgICAgICAgICBhc3NlcnQgYWJzKHMpIDw9IDMgKiAyNCAqIDM2MDAKLSAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1pY3Jvc2Vjb25kcyA9IHJvdW5kKG1pY3Jvc2Vjb25kcyArIHVzZG91YmxlKQogICAgICAgICAgICAgc2Vjb25kcywgbWljcm9zZWNvbmRzID0gZGl2bW9kKG1pY3Jvc2Vjb25kcywgMTAwMDAwMCkKICAgICAgICAgICAgIGRheXMsIHNlY29uZHMgPSBkaXZtb2Qoc2Vjb25kcywgMjQqMzYwMCkKICAgICAgICAgICAgIGQgKz0gZGF5cwotICAgICAgICAgICAgcyArPSBpbnQoc2Vjb25kcykgICAgIyBjYW4ndCBvdmVyZmxvdwotICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocywgaW50KQotICAgICAgICAgICAgYXNzZXJ0IGFicyhzKSA8PSAzICogMjQgKiAzNjAwCi0gICAgICAgICAgICBtaWNyb3NlY29uZHMgPSBmbG9hdChtaWNyb3NlY29uZHMpCi0gICAgICAgICAgICBtaWNyb3NlY29uZHMgKz0gdXNkb3VibGUKLSAgICAgICAgICAgIG1pY3Jvc2Vjb25kcyA9IHJvdW5kKG1pY3Jvc2Vjb25kcywgMCkKKyAgICAgICAgICAgIHMgKz0gc2Vjb25kcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWljcm9zZWNvbmRzID0gaW50KG1pY3Jvc2Vjb25kcykKKyAgICAgICAgICAgIHNlY29uZHMsIG1pY3Jvc2Vjb25kcyA9IGRpdm1vZChtaWNyb3NlY29uZHMsIDEwMDAwMDApCisgICAgICAgICAgICBkYXlzLCBzZWNvbmRzID0gZGl2bW9kKHNlY29uZHMsIDI0KjM2MDApCisgICAgICAgICAgICBkICs9IGRheXMKKyAgICAgICAgICAgIHMgKz0gc2Vjb25kcworICAgICAgICAgICAgbWljcm9zZWNvbmRzID0gcm91bmQobWljcm9zZWNvbmRzICsgdXNkb3VibGUpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHMsIGludCkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobWljcm9zZWNvbmRzLCBpbnQpCiAgICAgICAgIGFzc2VydCBhYnMocykgPD0gMyAqIDI0ICogMzYwMAogICAgICAgICBhc3NlcnQgYWJzKG1pY3Jvc2Vjb25kcykgPCAzLjFlNgogCiAgICAgICAgICMgSnVzdCBhIGxpdHRsZSBiaXQgb2YgY2FycnlpbmcgcG9zc2libGUgZm9yIG1pY3Jvc2Vjb25kcyBhbmQgc2Vjb25kcy4KLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobWljcm9zZWNvbmRzLCBmbG9hdCkKLSAgICAgICAgYXNzZXJ0IGludChtaWNyb3NlY29uZHMpID09IG1pY3Jvc2Vjb25kcwotICAgICAgICB1cyA9IGludChtaWNyb3NlY29uZHMpCi0gICAgICAgIHNlY29uZHMsIHVzID0gZGl2bW9kKHVzLCAxMDAwMDAwKQotICAgICAgICBzICs9IHNlY29uZHMgICAgIyBjYW50J3Qgb3ZlcmZsb3cKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocywgaW50KQorICAgICAgICBzZWNvbmRzLCB1cyA9IGRpdm1vZChtaWNyb3NlY29uZHMsIDEwMDAwMDApCisgICAgICAgIHMgKz0gc2Vjb25kcwogICAgICAgICBkYXlzLCBzID0gZGl2bW9kKHMsIDI0KjM2MDApCiAgICAgICAgIGQgKz0gZGF5cwogCkBAIC00MjEsMjcgKzQyNiwzMSBAQAogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzLCBpbnQpIGFuZCAwIDw9IHMgPCAyNCozNjAwCiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHVzLCBpbnQpIGFuZCAwIDw9IHVzIDwgMTAwMDAwMAogCi0gICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCi0KLSAgICAgICAgc2VsZi5fZGF5cyA9IGQKLSAgICAgICAgc2VsZi5fc2Vjb25kcyA9IHMKLSAgICAgICAgc2VsZi5fbWljcm9zZWNvbmRzID0gdXMKICAgICAgICAgaWYgYWJzKGQpID4gOTk5OTk5OTk5OgogICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigidGltZWRlbHRhICMgb2YgZGF5cyBpcyB0b28gbGFyZ2U6ICVkIiAlIGQpCiAKKyAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKKyAgICAgICAgc2VsZi5fZGF5cyA9IGQKKyAgICAgICAgc2VsZi5fc2Vjb25kcyA9IHMKKyAgICAgICAgc2VsZi5fbWljcm9zZWNvbmRzID0gdXMKKyAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQogICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9taWNyb3NlY29uZHM6Ci0gICAgICAgICAgICByZXR1cm4gIiVzKCVkLCAlZCwgJWQpIiAlICgnZGF0ZXRpbWUuJyArIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGF5cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlY29uZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZHMpCisgICAgICAgICAgICByZXR1cm4gIiVzLiVzKCVkLCAlZCwgJWQpIiAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGF5cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlY29uZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZHMpCiAgICAgICAgIGlmIHNlbGYuX3NlY29uZHM6Ci0gICAgICAgICAgICByZXR1cm4gIiVzKCVkLCAlZCkiICUgKCdkYXRldGltZS4nICsgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RheXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlY29uZHMpCi0gICAgICAgIHJldHVybiAiJXMoJWQpIiAlICgnZGF0ZXRpbWUuJyArIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLl9kYXlzKQorICAgICAgICAgICAgcmV0dXJuICIlcy4lcyglZCwgJWQpIiAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RheXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlY29uZHMpCisgICAgICAgIHJldHVybiAiJXMuJXMoJWQpIiAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGF5cykKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICBtbSwgc3MgPSBkaXZtb2Qoc2VsZi5fc2Vjb25kcywgNjApCkBAIC00NTcsNyArNDY2LDcgQEAKIAogICAgIGRlZiB0b3RhbF9zZWNvbmRzKHNlbGYpOgogICAgICAgICAiIiJUb3RhbCBzZWNvbmRzIGluIHRoZSBkdXJhdGlvbi4iIiIKLSAgICAgICAgcmV0dXJuICgoc2VsZi5kYXlzICogODY0MDAgKyBzZWxmLnNlY29uZHMpKjEwKio2ICsKKyAgICAgICAgcmV0dXJuICgoc2VsZi5kYXlzICogODY0MDAgKyBzZWxmLnNlY29uZHMpICogMTAqKjYgKwogICAgICAgICAgICAgICAgIHNlbGYubWljcm9zZWNvbmRzKSAvIDEwKio2CiAKICAgICAjIFJlYWQtb25seSBmaWVsZCBhY2Nlc3NvcnMKQEAgLTU3OCwxMiArNTg3LDYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWVkZWx0YSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSAhPSAwCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotCiAgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWVkZWx0YSk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA8PSAwCkBAIC02MTMsNyArNjE2LDkgQEAKICAgICAgICAgcmV0dXJuIF9jbXAoc2VsZi5fZ2V0c3RhdGUoKSwgb3RoZXIuX2dldHN0YXRlKCkpCiAKICAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBoYXNoKHNlbGYuX2dldHN0YXRlKCkpCisgICAgICAgIGlmIHNlbGYuX2hhc2hjb2RlID09IC0xOgorICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHNlbGYuX2dldHN0YXRlKCkpCisgICAgICAgIHJldHVybiBzZWxmLl9oYXNoY29kZQogCiAgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgogICAgICAgICByZXR1cm4gKHNlbGYuX2RheXMgIT0gMCBvcgpAQCAtNjYxLDcgKzY2Niw3IEBACiAgICAgUHJvcGVydGllcyAocmVhZG9ubHkpOgogICAgIHllYXIsIG1vbnRoLCBkYXkKICAgICAiIiIKLSAgICBfX3Nsb3RzX18gPSAnX3llYXInLCAnX21vbnRoJywgJ19kYXknCisgICAgX19zbG90c19fID0gJ195ZWFyJywgJ19tb250aCcsICdfZGF5JywgJ19oYXNoY29kZScKIAogICAgIGRlZiBfX25ld19fKGNscywgeWVhciwgbW9udGg9Tm9uZSwgZGF5PU5vbmUpOgogICAgICAgICAiIiJDb25zdHJ1Y3Rvci4KQEAgLTY3MCwxNyArNjc1LDE5IEBACiAKICAgICAgICAgeWVhciwgbW9udGgsIGRheSAocmVxdWlyZWQsIGJhc2UgMSkKICAgICAgICAgIiIiCi0gICAgICAgIGlmIChpc2luc3RhbmNlKHllYXIsIGJ5dGVzKSBhbmQgbGVuKHllYXIpID09IDQgYW5kCi0gICAgICAgICAgICAxIDw9IHllYXJbMl0gPD0gMTIgYW5kIG1vbnRoIGlzIE5vbmUpOiAgIyBNb250aCBpcyBzYW5lCisgICAgICAgIGlmIG1vbnRoIGlzIE5vbmUgYW5kIGlzaW5zdGFuY2UoeWVhciwgYnl0ZXMpIGFuZCBsZW4oeWVhcikgPT0gNCBhbmQgXAorICAgICAgICAgICAgICAgIDEgPD0geWVhclsyXSA8PSAxMjoKICAgICAgICAgICAgICMgUGlja2xlIHN1cHBvcnQKICAgICAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgICAgICBzZWxmLl9fc2V0c3RhdGUoeWVhcikKKyAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gLTEKICAgICAgICAgICAgIHJldHVybiBzZWxmCi0gICAgICAgIF9jaGVja19kYXRlX2ZpZWxkcyh5ZWFyLCBtb250aCwgZGF5KQorICAgICAgICB5ZWFyLCBtb250aCwgZGF5ID0gX2NoZWNrX2RhdGVfZmllbGRzKHllYXIsIG1vbnRoLCBkYXkpCiAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgIHNlbGYuX3llYXIgPSB5ZWFyCiAgICAgICAgIHNlbGYuX21vbnRoID0gbW9udGgKICAgICAgICAgc2VsZi5fZGF5ID0gZGF5CisgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gLTEKICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgICMgQWRkaXRpb25hbCBjb25zdHJ1Y3RvcnMKQEAgLTcyMCwxMCArNzI3LDExIEBACiAgICAgICAgID4+PiByZXByKGR0KQogICAgICAgICAnZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMCwgMSwgMSwgMCwgMCwgdHppbmZvPWRhdGV0aW1lLnRpbWV6b25lLnV0YyknCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gIiVzKCVkLCAlZCwgJWQpIiAlICgnZGF0ZXRpbWUuJyArIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl95ZWFyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb250aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGF5KQorICAgICAgICByZXR1cm4gIiVzLiVzKCVkLCAlZCwgJWQpIiAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3llYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21vbnRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYXkpCiAgICAgIyBYWFggVGhlc2Ugc2hvdWxkbid0IGRlcGVuZCBvbiB0aW1lLmxvY2FsdGltZSgpLCBiZWNhdXNlIHRoYXQKICAgICAjIGNsaXBzIHRoZSB1c2FibGUgZGF0ZXMgdG8gWzE5NzAgLi4gMjAzOCkuICBBdCBsZWFzdCBjdGltZSgpIGlzCiAgICAgIyBlYXNpbHkgZG9uZSB3aXRob3V0IHVzaW5nIHN0cmZ0aW1lKCkgLS0gdGhhdCdzIGJldHRlciB0b28gYmVjYXVzZQpAQCAtNzQzLDYgKzc1MSw4IEBACiAgICAgICAgIHJldHVybiBfd3JhcF9zdHJmdGltZShzZWxmLCBmbXQsIHNlbGYudGltZXR1cGxlKCkpCiAKICAgICBkZWYgX19mb3JtYXRfXyhzZWxmLCBmbXQpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmbXQsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm11c3QgYmUgc3RyLCBub3QgJXMiICUgdHlwZShmbXQpLl9fbmFtZV9fKQogICAgICAgICBpZiBsZW4oZm10KSAhPSAwOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3RyZnRpbWUoZm10KQogICAgICAgICByZXR1cm4gc3RyKHNlbGYpCkBAIC04MDAsNyArODEwLDYgQEAKICAgICAgICAgICAgIG1vbnRoID0gc2VsZi5fbW9udGgKICAgICAgICAgaWYgZGF5IGlzIE5vbmU6CiAgICAgICAgICAgICBkYXkgPSBzZWxmLl9kYXkKLSAgICAgICAgX2NoZWNrX2RhdGVfZmllbGRzKHllYXIsIG1vbnRoLCBkYXkpCiAgICAgICAgIHJldHVybiBkYXRlKHllYXIsIG1vbnRoLCBkYXkpCiAKICAgICAjIENvbXBhcmlzb25zIG9mIGRhdGUgb2JqZWN0cyB3aXRoIG90aGVyLgpAQCAtODEwLDExICs4MTksNiBAQAogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPT0gMAogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBkYXRlKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpICE9IDAKLSAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCi0KICAgICBkZWYgX19sZV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZGF0ZSk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA8PSAwCkBAIC04NDMsNyArODQ3LDkgQEAKIAogICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICAgIkhhc2guIgotICAgICAgICByZXR1cm4gaGFzaChzZWxmLl9nZXRzdGF0ZSgpKQorICAgICAgICBpZiBzZWxmLl9oYXNoY29kZSA9PSAtMToKKyAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaChzZWxmLl9nZXRzdGF0ZSgpKQorICAgICAgICByZXR1cm4gc2VsZi5faGFzaGNvZGUKIAogICAgICMgQ29tcHV0YXRpb25zCiAKQEAgLTkxMyw4ICs5MTksNiBAQAogICAgICAgICByZXR1cm4gYnl0ZXMoW3loaSwgeWxvLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5XSksCiAKICAgICBkZWYgX19zZXRzdGF0ZShzZWxmLCBzdHJpbmcpOgotICAgICAgICBpZiBsZW4oc3RyaW5nKSAhPSA0IG9yIG5vdCAoMSA8PSBzdHJpbmdbMl0gPD0gMTIpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub3QgZW5vdWdoIGFyZ3VtZW50cyIpCiAgICAgICAgIHloaSwgeWxvLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5ID0gc3RyaW5nCiAgICAgICAgIHNlbGYuX3llYXIgPSB5aGkgKiAyNTYgKyB5bG8KIApAQCAtOTMzLDYgKzkzNyw3IEBACiAgICAgU3ViY2xhc3NlcyBtdXN0IG92ZXJyaWRlIHRoZSBuYW1lKCksIHV0Y29mZnNldCgpIGFuZCBkc3QoKSBtZXRob2RzLgogICAgICIiIgogICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKICAgICAgICAgImRhdGV0aW1lIC0+IHN0cmluZyBuYW1lIG9mIHRpbWUgem9uZS4iCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInR6aW5mbyBzdWJjbGFzcyBtdXN0IG92ZXJyaWRlIHR6bmFtZSgpIikKQEAgLTEwMTksNiArMTAyNCw3IEBACiAgICAgUHJvcGVydGllcyAocmVhZG9ubHkpOgogICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgdHppbmZvCiAgICAgIiIiCisgICAgX19zbG90c19fID0gJ19ob3VyJywgJ19taW51dGUnLCAnX3NlY29uZCcsICdfbWljcm9zZWNvbmQnLCAnX3R6aW5mbycsICdfaGFzaGNvZGUnCiAKICAgICBkZWYgX19uZXdfXyhjbHMsIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSk6CiAgICAgICAgICIiIkNvbnN0cnVjdG9yLgpAQCAtMTAyOSwxOCArMTAzNSwyMiBAQAogICAgICAgICBzZWNvbmQsIG1pY3Jvc2Vjb25kIChkZWZhdWx0IHRvIHplcm8pCiAgICAgICAgIHR6aW5mbyAoZGVmYXVsdCB0byBOb25lKQogICAgICAgICAiIiIKLSAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKLSAgICAgICAgaWYgaXNpbnN0YW5jZShob3VyLCBieXRlcykgYW5kIGxlbihob3VyKSA9PSA2OgorICAgICAgICBpZiBpc2luc3RhbmNlKGhvdXIsIGJ5dGVzKSBhbmQgbGVuKGhvdXIpID09IDYgYW5kIGhvdXJbMF0gPCAyNDoKICAgICAgICAgICAgICMgUGlja2xlIHN1cHBvcnQKKyAgICAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgICAgICBzZWxmLl9fc2V0c3RhdGUoaG91ciwgbWludXRlIG9yIE5vbmUpCisgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQgPSBfY2hlY2tfdGltZV9maWVsZHMoCisgICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpCiAgICAgICAgIF9jaGVja190emluZm9fYXJnKHR6aW5mbykKLSAgICAgICAgX2NoZWNrX3RpbWVfZmllbGRzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCkKKyAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKICAgICAgICAgc2VsZi5faG91ciA9IGhvdXIKICAgICAgICAgc2VsZi5fbWludXRlID0gbWludXRlCiAgICAgICAgIHNlbGYuX3NlY29uZCA9IHNlY29uZAogICAgICAgICBzZWxmLl9taWNyb3NlY29uZCA9IG1pY3Jvc2Vjb25kCiAgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbworICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICAjIFJlYWQtb25seSBmaWVsZCBhY2Nlc3NvcnMKQEAgLTEwNzksMTIgKzEwODksNiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgdGltZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyLCBhbGxvd19taXhlZD1UcnVlKSAhPSAwCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotCiAgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWUpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPD0gMApAQCAtMTEyNSw4ICsxMTI5LDggQEAKICAgICAgICAgaWYgYmFzZV9jb21wYXJlOgogICAgICAgICAgICAgcmV0dXJuIF9jbXAoKHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kKSwKLSAgICAgICAgICAgICAgICAgICAgICAgKG90aGVyLl9ob3VyLCBvdGhlci5fbWludXRlLCBvdGhlci5fc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuX21pY3Jvc2Vjb25kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChvdGhlci5faG91ciwgb3RoZXIuX21pbnV0ZSwgb3RoZXIuX3NlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5fbWljcm9zZWNvbmQpKQogICAgICAgICBpZiBteW9mZiBpcyBOb25lIG9yIG90b2ZmIGlzIE5vbmU6CiAgICAgICAgICAgICBpZiBhbGxvd19taXhlZDoKICAgICAgICAgICAgICAgICByZXR1cm4gMiAjIGFyYml0cmFyeSBub24temVybyB2YWx1ZQpAQCAtMTEzOSwxNiArMTE0MywyMCBAQAogCiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgICAiIiJIYXNoLiIiIgotICAgICAgICB0em9mZiA9IHNlbGYudXRjb2Zmc2V0KCkKLSAgICAgICAgaWYgbm90IHR6b2ZmOiAjIHplcm8gb3IgTm9uZQotICAgICAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fZ2V0c3RhdGUoKVswXSkKLSAgICAgICAgaCwgbSA9IGRpdm1vZCh0aW1lZGVsdGEoaG91cnM9c2VsZi5ob3VyLCBtaW51dGVzPXNlbGYubWludXRlKSAtIHR6b2ZmLAotICAgICAgICAgICAgICAgICAgICAgIHRpbWVkZWx0YShob3Vycz0xKSkKLSAgICAgICAgYXNzZXJ0IG5vdCBtICUgdGltZWRlbHRhKG1pbnV0ZXM9MSksICJ3aG9sZSBtaW51dGUiCi0gICAgICAgIG0gLy89IHRpbWVkZWx0YShtaW51dGVzPTEpCi0gICAgICAgIGlmIDAgPD0gaCA8IDI0OgotICAgICAgICAgICAgcmV0dXJuIGhhc2godGltZShoLCBtLCBzZWxmLnNlY29uZCwgc2VsZi5taWNyb3NlY29uZCkpCi0gICAgICAgIHJldHVybiBoYXNoKChoLCBtLCBzZWxmLnNlY29uZCwgc2VsZi5taWNyb3NlY29uZCkpCisgICAgICAgIGlmIHNlbGYuX2hhc2hjb2RlID09IC0xOgorICAgICAgICAgICAgdHpvZmYgPSBzZWxmLnV0Y29mZnNldCgpCisgICAgICAgICAgICBpZiBub3QgdHpvZmY6ICAjIHplcm8gb3IgTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaChzZWxmLl9nZXRzdGF0ZSgpWzBdKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBoLCBtID0gZGl2bW9kKHRpbWVkZWx0YShob3Vycz1zZWxmLmhvdXIsIG1pbnV0ZXM9c2VsZi5taW51dGUpIC0gdHpvZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lZGVsdGEoaG91cnM9MSkpCisgICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBtICUgdGltZWRlbHRhKG1pbnV0ZXM9MSksICJ3aG9sZSBtaW51dGUiCisgICAgICAgICAgICAgICAgbSAvLz0gdGltZWRlbHRhKG1pbnV0ZXM9MSkKKyAgICAgICAgICAgICAgICBpZiAwIDw9IGggPCAyNDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHRpbWUoaCwgbSwgc2VsZi5zZWNvbmQsIHNlbGYubWljcm9zZWNvbmQpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaCgoaCwgbSwgc2VsZi5zZWNvbmQsIHNlbGYubWljcm9zZWNvbmQpKQorICAgICAgICByZXR1cm4gc2VsZi5faGFzaGNvZGUKIAogICAgICMgQ29udmVyc2lvbiB0byBzdHJpbmcKIApAQCAtMTE3Niw4ICsxMTg0LDkgQEAKICAgICAgICAgICAgIHMgPSAiLCAlZCIgJSBzZWxmLl9zZWNvbmQKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHMgPSAiIgotICAgICAgICBzPSAiJXMoJWQsICVkJXMpIiAlICgnZGF0ZXRpbWUuJyArIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHMpCisgICAgICAgIHM9ICIlcy4lcyglZCwgJWQlcykiICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzKQogICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBhc3NlcnQgc1stMTpdID09ICIpIgogICAgICAgICAgICAgcyA9IHNbOi0xXSArICIsIHR6aW5mbz0lciIgJSBzZWxmLl90emluZm8gKyAiKSIKQEAgLTEyMTAsNiArMTIxOSw4IEBACiAgICAgICAgIHJldHVybiBfd3JhcF9zdHJmdGltZShzZWxmLCBmbXQsIHRpbWV0dXBsZSkKIAogICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIGZtdCk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZtdCwgc3RyKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibXVzdCBiZSBzdHIsIG5vdCAlcyIgJSB0eXBlKGZtdCkuX19uYW1lX18pCiAgICAgICAgIGlmIGxlbihmbXQpICE9IDA6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5zdHJmdGltZShmbXQpCiAgICAgICAgIHJldHVybiBzdHIoc2VsZikKQEAgLTEyNjYsMTYgKzEyNzcsOCBAQAogICAgICAgICAgICAgbWljcm9zZWNvbmQgPSBzZWxmLm1pY3Jvc2Vjb25kCiAgICAgICAgIGlmIHR6aW5mbyBpcyBUcnVlOgogICAgICAgICAgICAgdHppbmZvID0gc2VsZi50emluZm8KLSAgICAgICAgX2NoZWNrX3RpbWVfZmllbGRzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCkKLSAgICAgICAgX2NoZWNrX3R6aW5mb19hcmcodHppbmZvKQogICAgICAgICByZXR1cm4gdGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIHR6aW5mbykKIAotICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5zZWNvbmQgb3Igc2VsZi5taWNyb3NlY29uZDoKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIG9mZnNldCA9IHNlbGYudXRjb2Zmc2V0KCkgb3IgdGltZWRlbHRhKDApCi0gICAgICAgIHJldHVybiB0aW1lZGVsdGEoaG91cnM9c2VsZi5ob3VyLCBtaW51dGVzPXNlbGYubWludXRlKSAhPSBvZmZzZXQKLQogICAgICMgUGlja2xlIHN1cHBvcnQuCiAKICAgICBkZWYgX2dldHN0YXRlKHNlbGYpOgpAQCAtMTI4OSwxNSArMTI5MiwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIChiYXNlc3RhdGUsIHNlbGYuX3R6aW5mbykKIAogICAgIGRlZiBfX3NldHN0YXRlKHNlbGYsIHN0cmluZywgdHppbmZvKToKLSAgICAgICAgaWYgbGVuKHN0cmluZykgIT0gNiBvciBzdHJpbmdbMF0gPj0gMjQ6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImFuIGludGVnZXIgaXMgcmVxdWlyZWQiKQotICAgICAgICAoc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCi0gICAgICAgICB1czEsIHVzMiwgdXMzKSA9IHN0cmluZworICAgICAgICBpZiB0emluZm8gaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKHR6aW5mbywgX3R6aW5mb19jbGFzcyk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImJhZCB0emluZm8gc3RhdGUgYXJnIikKKyAgICAgICAgc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsIHVzMSwgdXMyLCB1czMgPSBzdHJpbmcKICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSAoKCh1czEgPDwgOCkgfCB1czIpIDw8IDgpIHwgdXMzCi0gICAgICAgIGlmIHR6aW5mbyBpcyBOb25lIG9yIGlzaW5zdGFuY2UodHppbmZvLCBfdHppbmZvX2NsYXNzKToKLSAgICAgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJiYWQgdHppbmZvIHN0YXRlIGFyZyAlciIgJSB0emluZm8pCisgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbwogCiAgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAgIHJldHVybiAodGltZSwgc2VsZi5fZ2V0c3RhdGUoKSkKQEAgLTEzMTQsMjUgKzEzMTMsMzAgQEAKICAgICBUaGUgeWVhciwgbW9udGggYW5kIGRheSBhcmd1bWVudHMgYXJlIHJlcXVpcmVkLiB0emluZm8gbWF5IGJlIE5vbmUsIG9yIGFuCiAgICAgaW5zdGFuY2Ugb2YgYSB0emluZm8gc3ViY2xhc3MuIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIG1heSBiZSBpbnRzLgogICAgICIiIgorICAgIF9fc2xvdHNfXyA9IGRhdGUuX19zbG90c19fICsgdGltZS5fX3Nsb3RzX18KIAotICAgIF9fc2xvdHNfXyA9IGRhdGUuX19zbG90c19fICsgKAotICAgICAgICAnX2hvdXInLCAnX21pbnV0ZScsICdfc2Vjb25kJywKLSAgICAgICAgJ19taWNyb3NlY29uZCcsICdfdHppbmZvJykKICAgICBkZWYgX19uZXdfXyhjbHMsIHllYXIsIG1vbnRoPU5vbmUsIGRheT1Ob25lLCBob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwKICAgICAgICAgICAgICAgICBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UoeWVhciwgYnl0ZXMpIGFuZCBsZW4oeWVhcikgPT0gMTA6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoeWVhciwgYnl0ZXMpIGFuZCBsZW4oeWVhcikgPT0gMTAgYW5kIDEgPD0geWVhclsyXSA8PSAxMjoKICAgICAgICAgICAgICMgUGlja2xlIHN1cHBvcnQKLSAgICAgICAgICAgIHNlbGYgPSBkYXRlLl9fbmV3X18oY2xzLCB5ZWFyWzo0XSkKKyAgICAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgICAgICBzZWxmLl9fc2V0c3RhdGUoeWVhciwgbW9udGgpCisgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICB5ZWFyLCBtb250aCwgZGF5ID0gX2NoZWNrX2RhdGVfZmllbGRzKHllYXIsIG1vbnRoLCBkYXkpCisgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCA9IF9jaGVja190aW1lX2ZpZWxkcygKKyAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCkKICAgICAgICAgX2NoZWNrX3R6aW5mb19hcmcodHppbmZvKQotICAgICAgICBfY2hlY2tfdGltZV9maWVsZHMoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kKQotICAgICAgICBzZWxmID0gZGF0ZS5fX25ld19fKGNscywgeWVhciwgbW9udGgsIGRheSkKKyAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKKyAgICAgICAgc2VsZi5feWVhciA9IHllYXIKKyAgICAgICAgc2VsZi5fbW9udGggPSBtb250aAorICAgICAgICBzZWxmLl9kYXkgPSBkYXkKICAgICAgICAgc2VsZi5faG91ciA9IGhvdXIKICAgICAgICAgc2VsZi5fbWludXRlID0gbWludXRlCiAgICAgICAgIHNlbGYuX3NlY29uZCA9IHNlY29uZAogICAgICAgICBzZWxmLl9taWNyb3NlY29uZCA9IG1pY3Jvc2Vjb25kCiAgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbworICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICAjIFJlYWQtb25seSBmaWVsZCBhY2Nlc3NvcnMKQEAgLTEzOTksMTEgKzE0MDMsNiBAQAogICAgICAgICAiIiJDb25zdHJ1Y3QgYSBuYWl2ZSBVVEMgZGF0ZXRpbWUgZnJvbSBhIFBPU0lYIHRpbWVzdGFtcC4iIiIKICAgICAgICAgcmV0dXJuIGNscy5fZnJvbXRpbWVzdGFtcCh0LCBUcnVlLCBOb25lKQogCi0gICAgIyBYWFggVGhpcyBpcyBzdXBwb3NlZCB0byBkbyBiZXR0ZXIgdGhhbiB3ZSAqY2FuKiBkbyBieSB1c2luZyB0aW1lLnRpbWUoKSwKLSAgICAjIFhYWCBpZiB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgYSBtb3JlIGFjY3VyYXRlIHdheS4gIFRoZSBDIGltcGxlbWVudGF0aW9uCi0gICAgIyBYWFggdXNlcyBnZXR0aW1lb2ZkYXkgb24gcGxhdGZvcm1zIHRoYXQgaGF2ZSBpdCwgYnV0IHRoYXQgaXNuJ3QKLSAgICAjIFhYWCBhdmFpbGFibGUgZnJvbSBQeXRob24uICBTbyBub3coKSBtYXkgcmV0dXJuIGRpZmZlcmVudCByZXN1bHRzCi0gICAgIyBYWFggYWNyb3NzIHRoZSBpbXBsZW1lbnRhdGlvbnMuCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIG5vdyhjbHMsIHR6PU5vbmUpOgogICAgICAgICAiQ29uc3RydWN0IGEgZGF0ZXRpbWUgZnJvbSB0aW1lLnRpbWUoKSBhbmQgb3B0aW9uYWwgdGltZSB6b25lIGluZm8uIgpAQCAtMTQ5MCwxMSArMTQ4OSw4IEBACiAgICAgICAgICAgICBtaWNyb3NlY29uZCA9IHNlbGYubWljcm9zZWNvbmQKICAgICAgICAgaWYgdHppbmZvIGlzIFRydWU6CiAgICAgICAgICAgICB0emluZm8gPSBzZWxmLnR6aW5mbwotICAgICAgICBfY2hlY2tfZGF0ZV9maWVsZHMoeWVhciwgbW9udGgsIGRheSkKLSAgICAgICAgX2NoZWNrX3RpbWVfZmllbGRzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCkKLSAgICAgICAgX2NoZWNrX3R6aW5mb19hcmcodHppbmZvKQotICAgICAgICByZXR1cm4gZGF0ZXRpbWUoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kLCB0emluZm8pCisgICAgICAgIHJldHVybiBkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pCiAKICAgICBkZWYgYXN0aW1lem9uZShzZWxmLCB0ej1Ob25lKToKICAgICAgICAgaWYgdHogaXMgTm9uZToKQEAgLTE1NjQsMTAgKzE1NjAsOSBAQAogICAgICAgICBPcHRpb25hbCBhcmd1bWVudCBzZXAgc3BlY2lmaWVzIHRoZSBzZXBhcmF0b3IgYmV0d2VlbiBkYXRlIGFuZAogICAgICAgICB0aW1lLCBkZWZhdWx0ICdUJy4KICAgICAgICAgIiIiCi0gICAgICAgIHMgPSAoIiUwNGQtJTAyZC0lMDJkJWMiICUgKHNlbGYuX3llYXIsIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwKSArCi0gICAgICAgICAgICAgICAgX2Zvcm1hdF90aW1lKHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZCkpCisgICAgICAgIHMgPSAoIiUwNGQtJTAyZC0lMDJkJWMiICUgKHNlbGYuX3llYXIsIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksIHNlcCkgKworICAgICAgICAgICAgIF9mb3JtYXRfdGltZShzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQpKQogICAgICAgICBvZmYgPSBzZWxmLnV0Y29mZnNldCgpCiAgICAgICAgIGlmIG9mZiBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIG9mZi5kYXlzIDwgMDoKQEAgLTE1ODMsMTQgKzE1NzgsMTUgQEAKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgIiIiQ29udmVydCB0byBmb3JtYWwgc3RyaW5nLCBmb3IgcmVwcigpLiIiIgotICAgICAgICBMID0gW3NlbGYuX3llYXIsIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksICMgVGhlc2UgYXJlIG5ldmVyIHplcm8KKyAgICAgICAgTCA9IFtzZWxmLl95ZWFyLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5LCAgIyBUaGVzZSBhcmUgbmV2ZXIgemVybwogICAgICAgICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLCBzZWxmLl9taWNyb3NlY29uZF0KICAgICAgICAgaWYgTFstMV0gPT0gMDoKICAgICAgICAgICAgIGRlbCBMWy0xXQogICAgICAgICBpZiBMWy0xXSA9PSAwOgogICAgICAgICAgICAgZGVsIExbLTFdCi0gICAgICAgIHMgPSAiLCAiLmpvaW4obWFwKHN0ciwgTCkpCi0gICAgICAgIHMgPSAiJXMoJXMpIiAlICgnZGF0ZXRpbWUuJyArIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzKQorICAgICAgICBzID0gIiVzLiVzKCVzKSIgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIsICIuam9pbihtYXAoc3RyLCBMKSkpCiAgICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGFzc2VydCBzWy0xOl0gPT0gIikiCiAgICAgICAgICAgICBzID0gc1s6LTFdICsgIiwgdHppbmZvPSVyIiAlIHNlbGYuX3R6aW5mbyArICIpIgpAQCAtMTYyMiw3ICsxNjE4LDkgQEAKICAgICAgICAgaXQgbWVhbiBhbnl0aGluZyBpbiBwYXJ0aWN1bGFyLiBGb3IgZXhhbXBsZSwgIkdNVCIsICJVVEMiLCAiLTUwMCIsCiAgICAgICAgICItNTowMCIsICJFRFQiLCAiVVMvRWFzdGVybiIsICJBbWVyaWNhL05ldyBZb3JrIiBhcmUgYWxsIHZhbGlkIHJlcGxpZXMuCiAgICAgICAgICIiIgotICAgICAgICBuYW1lID0gX2NhbGxfdHppbmZvX21ldGhvZChzZWxmLl90emluZm8sICJ0em5hbWUiLCBzZWxmKQorICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIG5hbWUgPSBzZWxmLl90emluZm8udHpuYW1lKHNlbGYpCiAgICAgICAgIF9jaGVja190em5hbWUobmFtZSkKICAgICAgICAgcmV0dXJuIG5hbWUKIApAQCAtMTY1MSwxNCArMTY0OSw2IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBkYXRldGltZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyLCBhbGxvd19taXhlZD1UcnVlKSAhPSAwCi0gICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIGRhdGUpOgotICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotCiAgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGRhdGV0aW1lKToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpIDw9IDAKQEAgLTE3MDgsOSArMTY5OCw5IEBACiAgICAgICAgICAgICByZXR1cm4gX2NtcCgoc2VsZi5feWVhciwgc2VsZi5fbW9udGgsIHNlbGYuX2RheSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZCksCi0gICAgICAgICAgICAgICAgICAgICAgIChvdGhlci5feWVhciwgb3RoZXIuX21vbnRoLCBvdGhlci5fZGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuX2hvdXIsIG90aGVyLl9taW51dGUsIG90aGVyLl9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5fbWljcm9zZWNvbmQpKQorICAgICAgICAgICAgICAgICAgICAgICAgKG90aGVyLl95ZWFyLCBvdGhlci5fbW9udGgsIG90aGVyLl9kYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuX2hvdXIsIG90aGVyLl9taW51dGUsIG90aGVyLl9zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuX21pY3Jvc2Vjb25kKSkKICAgICAgICAgaWYgbXlvZmYgaXMgTm9uZSBvciBvdG9mZiBpcyBOb25lOgogICAgICAgICAgICAgaWYgYWxsb3dfbWl4ZWQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIDIgIyBhcmJpdHJhcnkgbm9uLXplcm8gdmFsdWUKQEAgLTE3NjgsMTIgKzE3NTgsMTUgQEAKICAgICAgICAgcmV0dXJuIGJhc2UgKyBvdG9mZiAtIG15b2ZmCiAKICAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgIHR6b2ZmID0gc2VsZi51dGNvZmZzZXQoKQotICAgICAgICBpZiB0em9mZiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fZ2V0c3RhdGUoKVswXSkKLSAgICAgICAgZGF5cyA9IF95bWQyb3JkKHNlbGYueWVhciwgc2VsZi5tb250aCwgc2VsZi5kYXkpCi0gICAgICAgIHNlY29uZHMgPSBzZWxmLmhvdXIgKiAzNjAwICsgc2VsZi5taW51dGUgKiA2MCArIHNlbGYuc2Vjb25kCi0gICAgICAgIHJldHVybiBoYXNoKHRpbWVkZWx0YShkYXlzLCBzZWNvbmRzLCBzZWxmLm1pY3Jvc2Vjb25kKSAtIHR6b2ZmKQorICAgICAgICBpZiBzZWxmLl9oYXNoY29kZSA9PSAtMToKKyAgICAgICAgICAgIHR6b2ZmID0gc2VsZi51dGNvZmZzZXQoKQorICAgICAgICAgICAgaWYgdHpvZmYgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IGhhc2goc2VsZi5fZ2V0c3RhdGUoKVswXSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGF5cyA9IF95bWQyb3JkKHNlbGYueWVhciwgc2VsZi5tb250aCwgc2VsZi5kYXkpCisgICAgICAgICAgICAgICAgc2Vjb25kcyA9IHNlbGYuaG91ciAqIDM2MDAgKyBzZWxmLm1pbnV0ZSAqIDYwICsgc2VsZi5zZWNvbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IGhhc2godGltZWRlbHRhKGRheXMsIHNlY29uZHMsIHNlbGYubWljcm9zZWNvbmQpIC0gdHpvZmYpCisgICAgICAgIHJldHVybiBzZWxmLl9oYXNoY29kZQogCiAgICAgIyBQaWNrbGUgc3VwcG9ydC4KIApAQCAtMTc5MCwxNCArMTc4MywxMyBAQAogICAgICAgICAgICAgcmV0dXJuIChiYXNlc3RhdGUsIHNlbGYuX3R6aW5mbykKIAogICAgIGRlZiBfX3NldHN0YXRlKHNlbGYsIHN0cmluZywgdHppbmZvKToKKyAgICAgICAgaWYgdHppbmZvIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZSh0emluZm8sIF90emluZm9fY2xhc3MpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJiYWQgdHppbmZvIHN0YXRlIGFyZyIpCiAgICAgICAgICh5aGksIHlsbywgc2VsZi5fbW9udGgsIHNlbGYuX2RheSwgc2VsZi5faG91ciwKICAgICAgICAgIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLCB1czEsIHVzMiwgdXMzKSA9IHN0cmluZwogICAgICAgICBzZWxmLl95ZWFyID0geWhpICogMjU2ICsgeWxvCiAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kID0gKCgodXMxIDw8IDgpIHwgdXMyKSA8PCA4KSB8IHVzMwotICAgICAgICBpZiB0emluZm8gaXMgTm9uZSBvciBpc2luc3RhbmNlKHR6aW5mbywgX3R6aW5mb19jbGFzcyk6Ci0gICAgICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYmFkIHR6aW5mbyBzdGF0ZSBhcmcgJXIiICUgdHppbmZvKQorICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KIAogICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLCBzZWxmLl9nZXRzdGF0ZSgpKQpAQCAtMTgxMyw3ICsxODA1LDcgQEAKICAgICAjIFhYWCBUaGlzIGNvdWxkIGJlIGRvbmUgbW9yZSBlZmZpY2llbnRseQogICAgIFRIVVJTREFZID0gMwogICAgIGZpcnN0ZGF5ID0gX3ltZDJvcmQoeWVhciwgMSwgMSkKLSAgICBmaXJzdHdlZWtkYXkgPSAoZmlyc3RkYXkgKyA2KSAlIDcgIyBTZWUgd2Vla2RheSgpIGFib3ZlCisgICAgZmlyc3R3ZWVrZGF5ID0gKGZpcnN0ZGF5ICsgNikgJSA3ICAjIFNlZSB3ZWVrZGF5KCkgYWJvdmUKICAgICB3ZWVrMW1vbmRheSA9IGZpcnN0ZGF5IC0gZmlyc3R3ZWVrZGF5CiAgICAgaWYgZmlyc3R3ZWVrZGF5ID4gVEhVUlNEQVk6CiAgICAgICAgIHdlZWsxbW9uZGF5ICs9IDcKQEAgLTE4MzQsMTMgKzE4MjYsMTIgQEAKICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShuYW1lLCBzdHIpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJuYW1lIG11c3QgYmUgYSBzdHJpbmciKQogICAgICAgICBpZiBub3QgY2xzLl9taW5vZmZzZXQgPD0gb2Zmc2V0IDw9IGNscy5fbWF4b2Zmc2V0OgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigib2Zmc2V0IG11c3QgYmUgYSB0aW1lZGVsdGEiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc3RyaWN0bHkgYmV0d2VlbiAtdGltZWRlbHRhKGhvdXJzPTI0KSBhbmQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgdGltZWRlbHRhKGhvdXJzPTI0KS4iKQotICAgICAgICBpZiAob2Zmc2V0Lm1pY3Jvc2Vjb25kcyAhPSAwIG9yCi0gICAgICAgICAgICBvZmZzZXQuc2Vjb25kcyAlIDYwICE9IDApOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigib2Zmc2V0IG11c3QgYmUgYSB0aW1lZGVsdGEiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgcmVwcmVzZW50aW5nIGEgd2hvbGUgbnVtYmVyIG9mIG1pbnV0ZXMiKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigib2Zmc2V0IG11c3QgYmUgYSB0aW1lZGVsdGEgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaWN0bHkgYmV0d2VlbiAtdGltZWRlbHRhKGhvdXJzPTI0KSBhbmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZWRlbHRhKGhvdXJzPTI0KS4iKQorICAgICAgICBpZiAob2Zmc2V0Lm1pY3Jvc2Vjb25kcyAhPSAwIG9yIG9mZnNldC5zZWNvbmRzICUgNjAgIT0gMCk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJvZmZzZXQgbXVzdCBiZSBhIHRpbWVkZWx0YSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXByZXNlbnRpbmcgYSB3aG9sZSBudW1iZXIgb2YgbWludXRlcyIpCiAgICAgICAgIHJldHVybiBjbHMuX2NyZWF0ZShvZmZzZXQsIG5hbWUpCiAKICAgICBAY2xhc3NtZXRob2QKQEAgLTE4NzcsMTAgKzE4NjgsMTIgQEAKICAgICAgICAgaWYgc2VsZiBpcyBzZWxmLnV0YzoKICAgICAgICAgICAgIHJldHVybiAnZGF0ZXRpbWUudGltZXpvbmUudXRjJwogICAgICAgICBpZiBzZWxmLl9uYW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gIiVzKCVyKSIgJSAoJ2RhdGV0aW1lLicgKyBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQpCi0gICAgICAgIHJldHVybiAiJXMoJXIsICVyKSIgJSAoJ2RhdGV0aW1lLicgKyBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQsIHNlbGYuX25hbWUpCisgICAgICAgICAgICByZXR1cm4gIiVzLiVzKCVyKSIgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0KQorICAgICAgICByZXR1cm4gIiVzLiVzKCVyLCAlcikiICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCwgc2VsZi5fbmFtZSkKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi50em5hbWUoTm9uZSkKQEAgLTIxMzUsMTQgKzIxMjgsMTMgQEAKICAgICBwYXNzCiBlbHNlOgogICAgICMgQ2xlYW4gdXAgdW51c2VkIG5hbWVzCi0gICAgZGVsIChfREFZTkFNRVMsIF9EQVlTX0JFRk9SRV9NT05USCwgX0RBWVNfSU5fTU9OVEgsCi0gICAgICAgICBfREkxMDBZLCBfREk0MDBZLCBfREk0WSwgX01BWE9SRElOQUwsIF9NT05USE5BTUVTLAotICAgICAgICAgX2J1aWxkX3N0cnVjdF90aW1lLCBfY2FsbF90emluZm9fbWV0aG9kLCBfY2hlY2tfZGF0ZV9maWVsZHMsCi0gICAgICAgICBfY2hlY2tfdGltZV9maWVsZHMsIF9jaGVja190emluZm9fYXJnLCBfY2hlY2tfdHpuYW1lLAotICAgICAgICAgX2NoZWNrX3V0Y19vZmZzZXQsIF9jbXAsIF9jbXBlcnJvciwgX2RhdGVfY2xhc3MsIF9kYXlzX2JlZm9yZV9tb250aCwKLSAgICAgICAgIF9kYXlzX2JlZm9yZV95ZWFyLCBfZGF5c19pbl9tb250aCwgX2Zvcm1hdF90aW1lLCBfaXNfbGVhcCwKLSAgICAgICAgIF9pc293ZWVrMW1vbmRheSwgX21hdGgsIF9vcmQyeW1kLCBfdGltZSwgX3RpbWVfY2xhc3MsIF90emluZm9fY2xhc3MsCi0gICAgICAgICBfd3JhcF9zdHJmdGltZSwgX3ltZDJvcmQpCisgICAgZGVsIChfREFZTkFNRVMsIF9EQVlTX0JFRk9SRV9NT05USCwgX0RBWVNfSU5fTU9OVEgsIF9ESTEwMFksIF9ESTQwMFksCisgICAgICAgICBfREk0WSwgX0VQT0NILCBfTUFYT1JESU5BTCwgX01PTlRITkFNRVMsIF9idWlsZF9zdHJ1Y3RfdGltZSwKKyAgICAgICAgIF9jaGVja19kYXRlX2ZpZWxkcywgX2NoZWNrX2ludF9maWVsZCwgX2NoZWNrX3RpbWVfZmllbGRzLAorICAgICAgICAgX2NoZWNrX3R6aW5mb19hcmcsIF9jaGVja190em5hbWUsIF9jaGVja191dGNfb2Zmc2V0LCBfY21wLCBfY21wZXJyb3IsCisgICAgICAgICBfZGF0ZV9jbGFzcywgX2RheXNfYmVmb3JlX21vbnRoLCBfZGF5c19iZWZvcmVfeWVhciwgX2RheXNfaW5fbW9udGgsCisgICAgICAgICBfZm9ybWF0X3RpbWUsIF9pc19sZWFwLCBfaXNvd2VlazFtb25kYXksIF9tYXRoLCBfb3JkMnltZCwKKyAgICAgICAgIF90aW1lLCBfdGltZV9jbGFzcywgX3R6aW5mb19jbGFzcywgX3dyYXBfc3RyZnRpbWUsIF95bWQyb3JkKQogICAgICMgWFhYIFNpbmNlIGltcG9ydCAqIGFib3ZlIGV4Y2x1ZGVzIG5hbWVzIHRoYXQgc3RhcnQgd2l0aCBfLAogICAgICMgZG9jc3RyaW5nIGRvZXMgbm90IGdldCBvdmVyd3JpdHRlbi4gSW4gdGhlIGZ1dHVyZSwgaXQgbWF5IGJlCiAgICAgIyBhcHByb3ByaWF0ZSB0byBtYWludGFpbiBhIHNpbmdsZSBtb2R1bGUgbGV2ZWwgZG9jc3RyaW5nIGFuZApkaWZmIC0tZ2l0IGEvTGliL2RibS9fX2luaXRfXy5weSBiL0xpYi9kYm0vX19pbml0X18ucHkKaW5kZXggNWY0NjY0YS4uNjgzMWE4NCAxMDA2NDQKLS0tIGEvTGliL2RibS9fX2luaXRfXy5weQorKysgYi9MaWIvZGJtL19faW5pdF9fLnB5CkBAIC0xNTMsOSArMTUzLDkgQEAKICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgICMgUmVhZCB0aGUgc3RhcnQgb2YgdGhlIGZpbGUgLS0gdGhlIG1hZ2ljIG51bWJlcgotICAgIHMxNiA9IGYucmVhZCgxNikKLSAgICBmLmNsb3NlKCkKKyAgICB3aXRoIGY6CisgICAgICAgICMgUmVhZCB0aGUgc3RhcnQgb2YgdGhlIGZpbGUgLS0gdGhlIG1hZ2ljIG51bWJlcgorICAgICAgICBzMTYgPSBmLnJlYWQoMTYpCiAgICAgcyA9IHMxNlswOjRdCiAKICAgICAjIFJldHVybiAiIiBpZiBub3QgYXQgbGVhc3QgNCBieXRlcwpkaWZmIC0tZ2l0IGEvTGliL2RibS9kdW1iLnB5IGIvTGliL2RibS9kdW1iLnB5CmluZGV4IDYzYmMzMjkuLjc3NzdhN2MgMTAwNjQ0Ci0tLSBhL0xpYi9kYm0vZHVtYi5weQorKysgYi9MaWIvZGJtL2R1bWIucHkKQEAgLTQ1LDcgKzQ1LDcgQEAKICAgICBfb3MgPSBfb3MgICAgICAgIyBmb3IgX2NvbW1pdCgpCiAgICAgX2lvID0gX2lvICAgICAgICMgZm9yIF9jb21taXQoKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGViYXNlbmFtZSwgbW9kZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGViYXNlbmFtZSwgbW9kZSwgZmxhZz0nYycpOgogICAgICAgICBzZWxmLl9tb2RlID0gbW9kZQogCiAgICAgICAgICMgVGhlIGRpcmVjdG9yeSBmaWxlIGlzIGEgdGV4dCBmaWxlLiAgRWFjaCBsaW5lIGxvb2tzIGxpa2UKQEAgLTY1LDYgKzY1LDE3IEBACiAgICAgICAgICMgVGhlIGluZGV4IGlzIGFuIGluLW1lbW9yeSBkaWN0LCBtaXJyb3JpbmcgdGhlIGRpcmVjdG9yeSBmaWxlLgogICAgICAgICBzZWxmLl9pbmRleCA9IE5vbmUgICMgbWFwcyBrZXlzIHRvIChwb3MsIHNpeikgcGFpcnMKIAorICAgICAgICAjIEhhbmRsZSB0aGUgY3JlYXRpb24KKyAgICAgICAgc2VsZi5fY3JlYXRlKGZsYWcpCisgICAgICAgIHNlbGYuX3VwZGF0ZSgpCisKKyAgICBkZWYgX2NyZWF0ZShzZWxmLCBmbGFnKToKKyAgICAgICAgaWYgZmxhZyA9PSAnbic6CisgICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gKHNlbGYuX2RhdGZpbGUsIHNlbGYuX2Jha2ZpbGUsIHNlbGYuX2RpcmZpbGUpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgX29zLnJlbW92ZShmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAjIE1vZCBieSBKYWNrOiBjcmVhdGUgZGF0YSBmaWxlIGlmIG5lZWRlZAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmID0gX2lvLm9wZW4oc2VsZi5fZGF0ZmlsZSwgJ3InLCBlbmNvZGluZz0iTGF0aW4tMSIpCkBAIC03Myw3ICs4NCw2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5fY2htb2Qoc2VsZi5fZGF0ZmlsZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICBzZWxmLl91cGRhdGUoKQogCiAgICAgIyBSZWFkIGRpcmVjdG9yeSBmaWxlIGludG8gdGhlIGluLW1lbW9yeSBpbmRleCBkaWN0LgogICAgIGRlZiBfdXBkYXRlKHNlbGYpOgpAQCAtMjY2LDIwICsyNzYsMjAgQEAKICAgICAgICAgc2VsZi5jbG9zZSgpCiAKIAotZGVmIG9wZW4oZmlsZSwgZmxhZz1Ob25lLCBtb2RlPTBvNjY2KToKK2RlZiBvcGVuKGZpbGUsIGZsYWc9J2MnLCBtb2RlPTBvNjY2KToKICAgICAiIiJPcGVuIHRoZSBkYXRhYmFzZSBmaWxlLCBmaWxlbmFtZSwgYW5kIHJldHVybiBjb3JyZXNwb25kaW5nIG9iamVjdC4KIAogICAgIFRoZSBmbGFnIGFyZ3VtZW50LCB1c2VkIHRvIGNvbnRyb2wgaG93IHRoZSBkYXRhYmFzZSBpcyBvcGVuZWQgaW4gdGhlCi0gICAgb3RoZXIgREJNIGltcGxlbWVudGF0aW9ucywgaXMgaWdub3JlZCBpbiB0aGUgZGJtLmR1bWIgbW9kdWxlOyB0aGUKLSAgICBkYXRhYmFzZSBpcyBhbHdheXMgb3BlbmVkIGZvciB1cGRhdGUsIGFuZCB3aWxsIGJlIGNyZWF0ZWQgaWYgaXQgZG9lcwotICAgIG5vdCBleGlzdC4KKyAgICBvdGhlciBEQk0gaW1wbGVtZW50YXRpb25zLCBzdXBwb3J0cyBvbmx5IHRoZSBzZW1hbnRpY3Mgb2YgJ2MnIGFuZCAnbicKKyAgICB2YWx1ZXMuICBPdGhlciB2YWx1ZXMgd2lsbCBkZWZhdWx0IHRvIHRoZSBzZW1hbnRpY3Mgb2YgJ2MnIHZhbHVlOgorICAgIHRoZSBkYXRhYmFzZSB3aWxsIGFsd2F5cyBvcGVuZWQgZm9yIHVwZGF0ZSBhbmQgd2lsbCBiZSBjcmVhdGVkIGlmIGl0CisgICAgZG9lcyBub3QgZXhpc3QuCiAKICAgICBUaGUgb3B0aW9uYWwgbW9kZSBhcmd1bWVudCBpcyB0aGUgVU5JWCBtb2RlIG9mIHRoZSBmaWxlLCB1c2VkIG9ubHkgd2hlbgogICAgIHRoZSBkYXRhYmFzZSBoYXMgdG8gYmUgY3JlYXRlZC4gIEl0IGRlZmF1bHRzIHRvIG9jdGFsIGNvZGUgMG82NjYgKGFuZAogICAgIHdpbGwgYmUgbW9kaWZpZWQgYnkgdGhlIHByZXZhaWxpbmcgdW1hc2spLgogCiAgICAgIiIiCi0gICAgIyBmbGFnIGFyZ3VtZW50IGlzIGN1cnJlbnRseSBpZ25vcmVkCiAKICAgICAjIE1vZGlmeSBtb2RlIGRlcGVuZGluZyBvbiB0aGUgdW1hc2sKICAgICB0cnk6CkBAIC0yOTAsNSArMzAwLDQgQEAKICAgICBlbHNlOgogICAgICAgICAjIFR1cm4gb2ZmIGFueSBiaXRzIHRoYXQgYXJlIHNldCBpbiB0aGUgdW1hc2sKICAgICAgICAgbW9kZSA9IG1vZGUgJiAofnVtKQotCi0gICAgcmV0dXJuIF9EYXRhYmFzZShmaWxlLCBtb2RlKQorICAgIHJldHVybiBfRGF0YWJhc2UoZmlsZSwgbW9kZSwgZmxhZz1mbGFnKQpkaWZmIC0tZ2l0IGEvTGliL2RlY2ltYWwucHkgYi9MaWIvZGVjaW1hbC5weQppbmRleCAzMjRlNGY5Li43NzQ2ZWEyIDEwMDY0NAotLS0gYS9MaWIvZGVjaW1hbC5weQorKysgYi9MaWIvZGVjaW1hbC5weQpAQCAtMSw2NDEzICsxLDExIEBACi0jIENvcHlyaWdodCAoYykgMjAwNCBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotIyBXcml0dGVuIGJ5IEVyaWMgUHJpY2UgPGVwcmljZSBhdCB0amhzc3QuZWR1PgotIyAgICBhbmQgRmFjdW5kbyBCYXRpc3RhIDxmYWN1bmRvIGF0IHRhbmlxdWV0aWwuY29tLmFyPgotIyAgICBhbmQgUmF5bW9uZCBIZXR0aW5nZXIgPHB5dGhvbiBhdCByY24uY29tPgotIyAgICBhbmQgQWFoeiA8YWFoeiBhdCBwb2JveC5jb20+Ci0jICAgIGFuZCBUaW0gUGV0ZXJzCi0KLSMgVGhpcyBtb2R1bGUgc2hvdWxkIGJlIGtlcHQgaW4gc3luYyB3aXRoIHRoZSBsYXRlc3QgdXBkYXRlcyBvZiB0aGUKLSMgSUJNIHNwZWNpZmljYXRpb24gYXMgaXQgZXZvbHZlcy4gIFRob3NlIHVwZGF0ZXMgd2lsbCBiZSB0cmVhdGVkCi0jIGFzIGJ1ZyBmaXhlcyAoZGV2aWF0aW9uIGZyb20gdGhlIHNwZWMgaXMgYSBjb21wYXRpYmlsaXR5LCB1c2FiaWxpdHkKLSMgYnVnKSBhbmQgd2lsbCBiZSBiYWNrcG9ydGVkLiAgQXQgdGhpcyBwb2ludCB0aGUgc3BlYyBpcyBzdGFiaWxpemluZwotIyBhbmQgdGhlIHVwZGF0ZXMgYXJlIGJlY29taW5nIGZld2VyLCBzbWFsbGVyLCBhbmQgbGVzcyBzaWduaWZpY2FudC4KLQotIiIiCi1UaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIGRlY2ltYWwgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBiYXNlZCBvbgotdGhlIEdlbmVyYWwgRGVjaW1hbCBBcml0aG1ldGljIFNwZWNpZmljYXRpb246Ci0KLSAgICBodHRwOi8vc3BlbGVvdHJvdmUuY29tL2RlY2ltYWwvZGVjYXJpdGguaHRtbAotCi1hbmQgSUVFRSBzdGFuZGFyZCA4NTQtMTk4NzoKLQotICAgIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUVFRV84NTQtMTk4NwotCi1EZWNpbWFsIGZsb2F0aW5nIHBvaW50IGhhcyBmaW5pdGUgcHJlY2lzaW9uIHdpdGggYXJiaXRyYXJpbHkgbGFyZ2UgYm91bmRzLgotCi1UaGUgcHVycG9zZSBvZiB0aGlzIG1vZHVsZSBpcyB0byBzdXBwb3J0IGFyaXRobWV0aWMgdXNpbmcgZmFtaWxpYXIKLSJzY2hvb2xob3VzZSIgcnVsZXMgYW5kIHRvIGF2b2lkIHNvbWUgb2YgdGhlIHRyaWNreSByZXByZXNlbnRhdGlvbgotaXNzdWVzIGFzc29jaWF0ZWQgd2l0aCBiaW5hcnkgZmxvYXRpbmcgcG9pbnQuICBUaGUgcGFja2FnZSBpcyBlc3BlY2lhbGx5Ci11c2VmdWwgZm9yIGZpbmFuY2lhbCBhcHBsaWNhdGlvbnMgb3IgZm9yIGNvbnRleHRzIHdoZXJlIHVzZXJzIGhhdmUKLWV4cGVjdGF0aW9ucyB0aGF0IGFyZSBhdCBvZGRzIHdpdGggYmluYXJ5IGZsb2F0aW5nIHBvaW50IChmb3IgaW5zdGFuY2UsCi1pbiBiaW5hcnkgZmxvYXRpbmcgcG9pbnQsIDEuMDAgJSAwLjEgZ2l2ZXMgMC4wOTk5OTk5OTk5OTk5OTk5NSBpbnN0ZWFkCi1vZiAwLjA7IERlY2ltYWwoJzEuMDAnKSAlIERlY2ltYWwoJzAuMScpIHJldHVybnMgdGhlIGV4cGVjdGVkCi1EZWNpbWFsKCcwLjAwJykpLgotCi1IZXJlIGFyZSBzb21lIGV4YW1wbGVzIG9mIHVzaW5nIHRoZSBkZWNpbWFsIG1vZHVsZToKLQotPj4+IGZyb20gZGVjaW1hbCBpbXBvcnQgKgotPj4+IHNldGNvbnRleHQoRXh0ZW5kZWRDb250ZXh0KQotPj4+IERlY2ltYWwoMCkKLURlY2ltYWwoJzAnKQotPj4+IERlY2ltYWwoJzEnKQotRGVjaW1hbCgnMScpCi0+Pj4gRGVjaW1hbCgnLS4wMTIzJykKLURlY2ltYWwoJy0wLjAxMjMnKQotPj4+IERlY2ltYWwoMTIzNDU2KQotRGVjaW1hbCgnMTIzNDU2JykKLT4+PiBEZWNpbWFsKCcxMjMuNDVlMTIzNDU2NzgnKQotRGVjaW1hbCgnMS4yMzQ1RSsxMjM0NTY4MCcpCi0+Pj4gRGVjaW1hbCgnMS4zMycpICsgRGVjaW1hbCgnMS4yNycpCi1EZWNpbWFsKCcyLjYwJykKLT4+PiBEZWNpbWFsKCcxMi4zNCcpICsgRGVjaW1hbCgnMy44NycpIC0gRGVjaW1hbCgnMTguNDEnKQotRGVjaW1hbCgnLTIuMjAnKQotPj4+IGRpZyA9IERlY2ltYWwoMSkKLT4+PiBwcmludChkaWcgLyBEZWNpbWFsKDMpKQotMC4zMzMzMzMzMzMKLT4+PiBnZXRjb250ZXh0KCkucHJlYyA9IDE4Ci0+Pj4gcHJpbnQoZGlnIC8gRGVjaW1hbCgzKSkKLTAuMzMzMzMzMzMzMzMzMzMzMzMzCi0+Pj4gcHJpbnQoZGlnLnNxcnQoKSkKLTEKLT4+PiBwcmludChEZWNpbWFsKDMpLnNxcnQoKSkKLTEuNzMyMDUwODA3NTY4ODc3MjkKLT4+PiBwcmludChEZWNpbWFsKDMpICoqIDEyMykKLTQuODUxOTI3ODA5NzY4OTY0MjdFKzU4Ci0+Pj4gaW5mID0gRGVjaW1hbCgxKSAvIERlY2ltYWwoMCkKLT4+PiBwcmludChpbmYpCi1JbmZpbml0eQotPj4+IG5lZ2luZiA9IERlY2ltYWwoLTEpIC8gRGVjaW1hbCgwKQotPj4+IHByaW50KG5lZ2luZikKLS1JbmZpbml0eQotPj4+IHByaW50KG5lZ2luZiArIGluZikKLU5hTgotPj4+IHByaW50KG5lZ2luZiAqIGluZikKLS1JbmZpbml0eQotPj4+IHByaW50KGRpZyAvIDApCi1JbmZpbml0eQotPj4+IGdldGNvbnRleHQoKS50cmFwc1tEaXZpc2lvbkJ5WmVyb10gPSAxCi0+Pj4gcHJpbnQoZGlnIC8gMCkKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgLi4uCi0gIC4uLgotICAuLi4KLWRlY2ltYWwuRGl2aXNpb25CeVplcm86IHggLyAwCi0+Pj4gYyA9IENvbnRleHQoKQotPj4+IGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSAwCi0+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKLTAKLT4+PiBjLmRpdmlkZShEZWNpbWFsKDApLCBEZWNpbWFsKDApKQotRGVjaW1hbCgnTmFOJykKLT4+PiBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gMQotPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCi0xCi0+Pj4gYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDAKLT4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQotMAotPj4+IHByaW50KGMuZGl2aWRlKERlY2ltYWwoMCksIERlY2ltYWwoMCkpKQotVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAuLi4KLSAgLi4uCi0gIC4uLgotZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uOiAwIC8gMAotPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCi0xCi0+Pj4gYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDAKLT4+PiBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gMAotPj4+IHByaW50KGMuZGl2aWRlKERlY2ltYWwoMCksIERlY2ltYWwoMCkpKQotTmFOCi0+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKLTEKLT4+PgotIiIiCi0KLV9fYWxsX18gPSBbCi0gICAgIyBUd28gbWFqb3IgY2xhc3NlcwotICAgICdEZWNpbWFsJywgJ0NvbnRleHQnLAotCi0gICAgIyBOYW1lZCB0dXBsZSByZXByZXNlbnRhdGlvbgotICAgICdEZWNpbWFsVHVwbGUnLAotCi0gICAgIyBDb250ZXh0cwotICAgICdEZWZhdWx0Q29udGV4dCcsICdCYXNpY0NvbnRleHQnLCAnRXh0ZW5kZWRDb250ZXh0JywKLQotICAgICMgRXhjZXB0aW9ucwotICAgICdEZWNpbWFsRXhjZXB0aW9uJywgJ0NsYW1wZWQnLCAnSW52YWxpZE9wZXJhdGlvbicsICdEaXZpc2lvbkJ5WmVybycsCi0gICAgJ0luZXhhY3QnLCAnUm91bmRlZCcsICdTdWJub3JtYWwnLCAnT3ZlcmZsb3cnLCAnVW5kZXJmbG93JywKLSAgICAnRmxvYXRPcGVyYXRpb24nLAotCi0gICAgIyBFeGNlcHRpb25hbCBjb25kaXRpb25zIHRoYXQgdHJpZ2dlciBJbnZhbGlkT3BlcmF0aW9uCi0gICAgJ0RpdmlzaW9uSW1wb3NzaWJsZScsICdJbnZhbGlkQ29udGV4dCcsICdDb252ZXJzaW9uU3ludGF4JywgJ0RpdmlzaW9uVW5kZWZpbmVkJywKLQotICAgICMgQ29uc3RhbnRzIGZvciB1c2UgaW4gc2V0dGluZyB1cCBjb250ZXh0cwotICAgICdST1VORF9ET1dOJywgJ1JPVU5EX0hBTEZfVVAnLCAnUk9VTkRfSEFMRl9FVkVOJywgJ1JPVU5EX0NFSUxJTkcnLAotICAgICdST1VORF9GTE9PUicsICdST1VORF9VUCcsICdST1VORF9IQUxGX0RPV04nLCAnUk9VTkRfMDVVUCcsCi0KLSAgICAjIEZ1bmN0aW9ucyBmb3IgbWFuaXB1bGF0aW5nIGNvbnRleHRzCi0gICAgJ3NldGNvbnRleHQnLCAnZ2V0Y29udGV4dCcsICdsb2NhbGNvbnRleHQnLAotCi0gICAgIyBMaW1pdHMgZm9yIHRoZSBDIHZlcnNpb24gZm9yIGNvbXBhdGliaWxpdHkKLSAgICAnTUFYX1BSRUMnLCAgJ01BWF9FTUFYJywgJ01JTl9FTUlOJywgJ01JTl9FVElOWScsCi0KLSAgICAjIEMgdmVyc2lvbjogY29tcGlsZSB0aW1lIGNob2ljZSB0aGF0IGVuYWJsZXMgdGhlIHRocmVhZCBsb2NhbCBjb250ZXh0Ci0gICAgJ0hBVkVfVEhSRUFEUycKLV0KLQotX192ZXJzaW9uX18gPSAnMS43MCcgICAgIyBIaWdoZXN0IHZlcnNpb24gb2YgdGhlIHNwZWMgdGhpcyBjb21wbGllcyB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFNlZSBodHRwOi8vc3BlbGVvdHJvdmUuY29tL2RlY2ltYWwvCi1fX2xpYm1wZGVjX3ZlcnNpb25fXyA9ICIyLjQuMSIgIyBjb21wYXRpYmxlIGxpYm1wZGVjIHZlcnNpb24KLQotaW1wb3J0IG1hdGggYXMgX21hdGgKLWltcG9ydCBudW1iZXJzIGFzIF9udW1iZXJzCi1pbXBvcnQgc3lzCiAKIHRyeToKLSAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlIGFzIF9uYW1lZHR1cGxlCi0gICAgRGVjaW1hbFR1cGxlID0gX25hbWVkdHVwbGUoJ0RlY2ltYWxUdXBsZScsICdzaWduIGRpZ2l0cyBleHBvbmVudCcpCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgRGVjaW1hbFR1cGxlID0gbGFtYmRhICphcmdzOiBhcmdzCi0KLSMgUm91bmRpbmcKLVJPVU5EX0RPV04gPSAnUk9VTkRfRE9XTicKLVJPVU5EX0hBTEZfVVAgPSAnUk9VTkRfSEFMRl9VUCcKLVJPVU5EX0hBTEZfRVZFTiA9ICdST1VORF9IQUxGX0VWRU4nCi1ST1VORF9DRUlMSU5HID0gJ1JPVU5EX0NFSUxJTkcnCi1ST1VORF9GTE9PUiA9ICdST1VORF9GTE9PUicKLVJPVU5EX1VQID0gJ1JPVU5EX1VQJwotUk9VTkRfSEFMRl9ET1dOID0gJ1JPVU5EX0hBTEZfRE9XTicKLVJPVU5EXzA1VVAgPSAnUk9VTkRfMDVVUCcKLQotIyBDb21wYXRpYmlsaXR5IHdpdGggdGhlIEMgdmVyc2lvbgotSEFWRV9USFJFQURTID0gVHJ1ZQotaWYgc3lzLm1heHNpemUgPT0gMioqNjMtMToKLSAgICBNQVhfUFJFQyA9IDk5OTk5OTk5OTk5OTk5OTk5OQotICAgIE1BWF9FTUFYID0gOTk5OTk5OTk5OTk5OTk5OTk5Ci0gICAgTUlOX0VNSU4gPSAtOTk5OTk5OTk5OTk5OTk5OTk5Ci1lbHNlOgotICAgIE1BWF9QUkVDID0gNDI1MDAwMDAwCi0gICAgTUFYX0VNQVggPSA0MjUwMDAwMDAKLSAgICBNSU5fRU1JTiA9IC00MjUwMDAwMDAKLQotTUlOX0VUSU5ZID0gTUlOX0VNSU4gLSAoTUFYX1BSRUMtMSkKLQotIyBFcnJvcnMKLQotY2xhc3MgRGVjaW1hbEV4Y2VwdGlvbihBcml0aG1ldGljRXJyb3IpOgotICAgICIiIkJhc2UgZXhjZXB0aW9uIGNsYXNzLgotCi0gICAgVXNlZCBleGNlcHRpb25zIGRlcml2ZSBmcm9tIHRoaXMuCi0gICAgSWYgYW4gZXhjZXB0aW9uIGRlcml2ZXMgZnJvbSBhbm90aGVyIGV4Y2VwdGlvbiBiZXNpZGVzIHRoaXMgKHN1Y2ggYXMKLSAgICBVbmRlcmZsb3cgKEluZXhhY3QsIFJvdW5kZWQsIFN1Ym5vcm1hbCkgdGhhdCBpbmRpY2F0ZXMgdGhhdCBpdCBpcyBvbmx5Ci0gICAgY2FsbGVkIGlmIHRoZSBvdGhlcnMgYXJlIHByZXNlbnQuICBUaGlzIGlzbid0IGFjdHVhbGx5IHVzZWQgZm9yCi0gICAgYW55dGhpbmcsIHRob3VnaC4KLQotICAgIGhhbmRsZSAgLS0gQ2FsbGVkIHdoZW4gY29udGV4dC5fcmFpc2VfZXJyb3IgaXMgY2FsbGVkIGFuZCB0aGUKLSAgICAgICAgICAgICAgIHRyYXBfZW5hYmxlciBpcyBub3Qgc2V0LiAgRmlyc3QgYXJndW1lbnQgaXMgc2VsZiwgc2Vjb25kIGlzIHRoZQotICAgICAgICAgICAgICAgY29udGV4dC4gIE1vcmUgYXJndW1lbnRzIGNhbiBiZSBnaXZlbiwgdGhvc2UgYmVpbmcgYWZ0ZXIKLSAgICAgICAgICAgICAgIHRoZSBleHBsYW5hdGlvbiBpbiBfcmFpc2VfZXJyb3IgKEZvciBleGFtcGxlLAotICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoTmV3RXJyb3IsICcoLXgpIScsIHNlbGYuX3NpZ24pIHdvdWxkCi0gICAgICAgICAgICAgICBjYWxsIE5ld0Vycm9yKCkuaGFuZGxlKGNvbnRleHQsIHNlbGYuX3NpZ24pLikKLQotICAgIFRvIGRlZmluZSBhIG5ldyBleGNlcHRpb24sIGl0IHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGhhdmUgaXQgZGVyaXZlCi0gICAgZnJvbSBEZWNpbWFsRXhjZXB0aW9uLgotICAgICIiIgotICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgKmFyZ3MpOgotICAgICAgICBwYXNzCi0KLQotY2xhc3MgQ2xhbXBlZChEZWNpbWFsRXhjZXB0aW9uKToKLSAgICAiIiJFeHBvbmVudCBvZiBhIDAgY2hhbmdlZCB0byBmaXQgYm91bmRzLgotCi0gICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgY2xhbXBlZCBpZiB0aGUgZXhwb25lbnQgb2YgYSByZXN1bHQgaGFzIGJlZW4KLSAgICBhbHRlcmVkIGluIG9yZGVyIHRvIGZpdCB0aGUgY29uc3RyYWludHMgb2YgYSBzcGVjaWZpYyBjb25jcmV0ZQotICAgIHJlcHJlc2VudGF0aW9uLiAgVGhpcyBtYXkgb2NjdXIgd2hlbiB0aGUgZXhwb25lbnQgb2YgYSB6ZXJvIHJlc3VsdCB3b3VsZAotICAgIGJlIG91dHNpZGUgdGhlIGJvdW5kcyBvZiBhIHJlcHJlc2VudGF0aW9uLCBvciB3aGVuIGEgbGFyZ2Ugbm9ybWFsCi0gICAgbnVtYmVyIHdvdWxkIGhhdmUgYW4gZW5jb2RlZCBleHBvbmVudCB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZC4gIEluCi0gICAgdGhpcyBsYXR0ZXIgY2FzZSwgdGhlIGV4cG9uZW50IGlzIHJlZHVjZWQgdG8gZml0IGFuZCB0aGUgY29ycmVzcG9uZGluZwotICAgIG51bWJlciBvZiB6ZXJvIGRpZ2l0cyBhcmUgYXBwZW5kZWQgdG8gdGhlIGNvZWZmaWNpZW50ICgiZm9sZC1kb3duIikuCi0gICAgIiIiCi0KLWNsYXNzIEludmFsaWRPcGVyYXRpb24oRGVjaW1hbEV4Y2VwdGlvbik6Ci0gICAgIiIiQW4gaW52YWxpZCBvcGVyYXRpb24gd2FzIHBlcmZvcm1lZC4KLQotICAgIFZhcmlvdXMgYmFkIHRoaW5ncyBjYXVzZSB0aGlzOgotCi0gICAgU29tZXRoaW5nIGNyZWF0ZXMgYSBzaWduYWxpbmcgTmFOCi0gICAgLUlORiArIElORgotICAgIDAgKiAoKy0pSU5GCi0gICAgKCstKUlORiAvICgrLSlJTkYKLSAgICB4ICUgMAotICAgICgrLSlJTkYgJSB4Ci0gICAgeC5fcmVzY2FsZSggbm9uLWludGVnZXIgKQotICAgIHNxcnQoLXgpICwgeCA+IDAKLSAgICAwICoqIDAKLSAgICB4ICoqIChub24taW50ZWdlcikKLSAgICB4ICoqICgrLSlJTkYKLSAgICBBbiBvcGVyYW5kIGlzIGludmFsaWQKLQotICAgIFRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiBhZnRlciB0aGVzZSBpcyBhIHF1aWV0IHBvc2l0aXZlIE5hTiwKLSAgICBleGNlcHQgd2hlbiB0aGUgY2F1c2UgaXMgYSBzaWduYWxpbmcgTmFOLCBpbiB3aGljaCBjYXNlIHRoZSByZXN1bHQgaXMKLSAgICBhbHNvIGEgcXVpZXQgTmFOLCBidXQgd2l0aCB0aGUgb3JpZ2luYWwgc2lnbiwgYW5kIGFuIG9wdGlvbmFsCi0gICAgZGlhZ25vc3RpYyBpbmZvcm1hdGlvbi4KLSAgICAiIiIKLSAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKLSAgICAgICAgaWYgYXJnczoKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoYXJnc1swXS5fc2lnbiwgYXJnc1swXS5faW50LCAnbicsIFRydWUpCi0gICAgICAgICAgICByZXR1cm4gYW5zLl9maXhfbmFuKGNvbnRleHQpCi0gICAgICAgIHJldHVybiBfTmFOCi0KLWNsYXNzIENvbnZlcnNpb25TeW50YXgoSW52YWxpZE9wZXJhdGlvbik6Ci0gICAgIiIiVHJ5aW5nIHRvIGNvbnZlcnQgYmFkbHkgZm9ybWVkIHN0cmluZy4KLQotICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGludmFsaWQtb3BlcmF0aW9uIGlmIGFuIHN0cmluZyBpcyBiZWluZwotICAgIGNvbnZlcnRlZCB0byBhIG51bWJlciBhbmQgaXQgZG9lcyBub3QgY29uZm9ybSB0byB0aGUgbnVtZXJpYyBzdHJpbmcKLSAgICBzeW50YXguICBUaGUgcmVzdWx0IGlzIFswLHFOYU5dLgotICAgICIiIgotICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgKmFyZ3MpOgotICAgICAgICByZXR1cm4gX05hTgotCi1jbGFzcyBEaXZpc2lvbkJ5WmVybyhEZWNpbWFsRXhjZXB0aW9uLCBaZXJvRGl2aXNpb25FcnJvcik6Ci0gICAgIiIiRGl2aXNpb24gYnkgMC4KLQotICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGRpdmlzaW9uLWJ5LXplcm8gaWYgZGl2aXNpb24gb2YgYSBmaW5pdGUgbnVtYmVyCi0gICAgYnkgemVybyB3YXMgYXR0ZW1wdGVkIChkdXJpbmcgYSBkaXZpZGUtaW50ZWdlciBvciBkaXZpZGUgb3BlcmF0aW9uLCBvciBhCi0gICAgcG93ZXIgb3BlcmF0aW9uIHdpdGggbmVnYXRpdmUgcmlnaHQtaGFuZCBvcGVyYW5kKSwgYW5kIHRoZSBkaXZpZGVuZCB3YXMKLSAgICBub3QgemVyby4KLQotICAgIFRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiBpcyBbc2lnbixpbmZdLCB3aGVyZSBzaWduIGlzIHRoZSBleGNsdXNpdmUKLSAgICBvciBvZiB0aGUgc2lnbnMgb2YgdGhlIG9wZXJhbmRzIGZvciBkaXZpZGUsIG9yIGlzIDEgZm9yIGFuIG9kZCBwb3dlciBvZgotICAgIC0wLCBmb3IgcG93ZXIuCi0gICAgIiIiCi0KLSAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsIHNpZ24sICphcmdzKToKLSAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtzaWduXQotCi1jbGFzcyBEaXZpc2lvbkltcG9zc2libGUoSW52YWxpZE9wZXJhdGlvbik6Ci0gICAgIiIiQ2Fubm90IHBlcmZvcm0gdGhlIGRpdmlzaW9uIGFkZXF1YXRlbHkuCi0KLSAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbnZhbGlkLW9wZXJhdGlvbiBpZiB0aGUgaW50ZWdlciByZXN1bHQgb2YgYQotICAgIGRpdmlkZS1pbnRlZ2VyIG9yIHJlbWFpbmRlciBvcGVyYXRpb24gaGFkIHRvbyBtYW55IGRpZ2l0cyAod291bGQgYmUKLSAgICBsb25nZXIgdGhhbiBwcmVjaXNpb24pLiAgVGhlIHJlc3VsdCBpcyBbMCxxTmFOXS4KLSAgICAiIiIKLQotICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgKmFyZ3MpOgotICAgICAgICByZXR1cm4gX05hTgotCi1jbGFzcyBEaXZpc2lvblVuZGVmaW5lZChJbnZhbGlkT3BlcmF0aW9uLCBaZXJvRGl2aXNpb25FcnJvcik6Ci0gICAgIiIiVW5kZWZpbmVkIHJlc3VsdCBvZiBkaXZpc2lvbi4KLQotICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGludmFsaWQtb3BlcmF0aW9uIGlmIGRpdmlzaW9uIGJ5IHplcm8gd2FzCi0gICAgYXR0ZW1wdGVkIChkdXJpbmcgYSBkaXZpZGUtaW50ZWdlciwgZGl2aWRlLCBvciByZW1haW5kZXIgb3BlcmF0aW9uKSwgYW5kCi0gICAgdGhlIGRpdmlkZW5kIGlzIGFsc28gemVyby4gIFRoZSByZXN1bHQgaXMgWzAscU5hTl0uCi0gICAgIiIiCi0KLSAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKLSAgICAgICAgcmV0dXJuIF9OYU4KLQotY2xhc3MgSW5leGFjdChEZWNpbWFsRXhjZXB0aW9uKToKLSAgICAiIiJIYWQgdG8gcm91bmQsIGxvc2luZyBpbmZvcm1hdGlvbi4KLQotICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGluZXhhY3Qgd2hlbmV2ZXIgdGhlIHJlc3VsdCBvZiBhbiBvcGVyYXRpb24gaXMKLSAgICBub3QgZXhhY3QgKHRoYXQgaXMsIGl0IG5lZWRlZCB0byBiZSByb3VuZGVkIGFuZCBhbnkgZGlzY2FyZGVkIGRpZ2l0cwotICAgIHdlcmUgbm9uLXplcm8pLCBvciBpZiBhbiBvdmVyZmxvdyBvciB1bmRlcmZsb3cgY29uZGl0aW9uIG9jY3Vycy4gIFRoZQotICAgIHJlc3VsdCBpbiBhbGwgY2FzZXMgaXMgdW5jaGFuZ2VkLgotCi0gICAgVGhlIGluZXhhY3Qgc2lnbmFsIG1heSBiZSB0ZXN0ZWQgKG9yIHRyYXBwZWQpIHRvIGRldGVybWluZSBpZiBhIGdpdmVuCi0gICAgb3BlcmF0aW9uIChvciBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zKSB3YXMgaW5leGFjdC4KLSAgICAiIiIKLQotY2xhc3MgSW52YWxpZENvbnRleHQoSW52YWxpZE9wZXJhdGlvbik6Ci0gICAgIiIiSW52YWxpZCBjb250ZXh0LiAgVW5rbm93biByb3VuZGluZywgZm9yIGV4YW1wbGUuCi0KLSAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbnZhbGlkLW9wZXJhdGlvbiBpZiBhbiBpbnZhbGlkIGNvbnRleHQgd2FzCi0gICAgZGV0ZWN0ZWQgZHVyaW5nIGFuIG9wZXJhdGlvbi4gIFRoaXMgY2FuIG9jY3VyIGlmIGNvbnRleHRzIGFyZSBub3QgY2hlY2tlZAotICAgIG9uIGNyZWF0aW9uIGFuZCBlaXRoZXIgdGhlIHByZWNpc2lvbiBleGNlZWRzIHRoZSBjYXBhYmlsaXR5IG9mIHRoZQotICAgIHVuZGVybHlpbmcgY29uY3JldGUgcmVwcmVzZW50YXRpb24gb3IgYW4gdW5rbm93biBvciB1bnN1cHBvcnRlZCByb3VuZGluZwotICAgIHdhcyBzcGVjaWZpZWQuICBUaGVzZSBhc3BlY3RzIG9mIHRoZSBjb250ZXh0IG5lZWQgb25seSBiZSBjaGVja2VkIHdoZW4KLSAgICB0aGUgdmFsdWVzIGFyZSByZXF1aXJlZCB0byBiZSB1c2VkLiAgVGhlIHJlc3VsdCBpcyBbMCxxTmFOXS4KLSAgICAiIiIKLQotICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgKmFyZ3MpOgotICAgICAgICByZXR1cm4gX05hTgotCi1jbGFzcyBSb3VuZGVkKERlY2ltYWxFeGNlcHRpb24pOgotICAgICIiIk51bWJlciBnb3Qgcm91bmRlZCAobm90ICBuZWNlc3NhcmlseSBjaGFuZ2VkIGR1cmluZyByb3VuZGluZykuCi0KLSAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyByb3VuZGVkIHdoZW5ldmVyIHRoZSByZXN1bHQgb2YgYW4gb3BlcmF0aW9uIGlzCi0gICAgcm91bmRlZCAodGhhdCBpcywgc29tZSB6ZXJvIG9yIG5vbi16ZXJvIGRpZ2l0cyB3ZXJlIGRpc2NhcmRlZCBmcm9tIHRoZQotICAgIGNvZWZmaWNpZW50KSwgb3IgaWYgYW4gb3ZlcmZsb3cgb3IgdW5kZXJmbG93IGNvbmRpdGlvbiBvY2N1cnMuICBUaGUKLSAgICByZXN1bHQgaW4gYWxsIGNhc2VzIGlzIHVuY2hhbmdlZC4KLQotICAgIFRoZSByb3VuZGVkIHNpZ25hbCBtYXkgYmUgdGVzdGVkIChvciB0cmFwcGVkKSB0byBkZXRlcm1pbmUgaWYgYSBnaXZlbgotICAgIG9wZXJhdGlvbiAob3Igc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucykgY2F1c2VkIGEgbG9zcyBvZiBwcmVjaXNpb24uCi0gICAgIiIiCi0KLWNsYXNzIFN1Ym5vcm1hbChEZWNpbWFsRXhjZXB0aW9uKToKLSAgICAiIiJFeHBvbmVudCA8IEVtaW4gYmVmb3JlIHJvdW5kaW5nLgotCi0gICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgc3Vibm9ybWFsIHdoZW5ldmVyIHRoZSByZXN1bHQgb2YgYSBjb252ZXJzaW9uIG9yCi0gICAgb3BlcmF0aW9uIGlzIHN1Ym5vcm1hbCAodGhhdCBpcywgaXRzIGFkanVzdGVkIGV4cG9uZW50IGlzIGxlc3MgdGhhbgotICAgIEVtaW4sIGJlZm9yZSBhbnkgcm91bmRpbmcpLiAgVGhlIHJlc3VsdCBpbiBhbGwgY2FzZXMgaXMgdW5jaGFuZ2VkLgotCi0gICAgVGhlIHN1Ym5vcm1hbCBzaWduYWwgbWF5IGJlIHRlc3RlZCAob3IgdHJhcHBlZCkgdG8gZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4KLSAgICBvciBvcGVyYXRpb24gKG9yIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMpIHlpZWxkZWQgYSBzdWJub3JtYWwgcmVzdWx0LgotICAgICIiIgotCi1jbGFzcyBPdmVyZmxvdyhJbmV4YWN0LCBSb3VuZGVkKToKLSAgICAiIiJOdW1lcmljYWwgb3ZlcmZsb3cuCi0KLSAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBvdmVyZmxvdyBpZiB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2YgYSByZXN1bHQKLSAgICAoZnJvbSBhIGNvbnZlcnNpb24gb3IgZnJvbSBhbiBvcGVyYXRpb24gdGhhdCBpcyBub3QgYW4gYXR0ZW1wdCB0byBkaXZpZGUKLSAgICBieSB6ZXJvKSwgYWZ0ZXIgcm91bmRpbmcsIHdvdWxkIGJlIGdyZWF0ZXIgdGhhbiB0aGUgbGFyZ2VzdCB2YWx1ZSB0aGF0Ci0gICAgY2FuIGJlIGhhbmRsZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uICh0aGUgdmFsdWUgRW1heCkuCi0KLSAgICBUaGUgcmVzdWx0IGRlcGVuZHMgb24gdGhlIHJvdW5kaW5nIG1vZGU6Ci0KLSAgICBGb3Igcm91bmQtaGFsZi11cCBhbmQgcm91bmQtaGFsZi1ldmVuIChhbmQgZm9yIHJvdW5kLWhhbGYtZG93biBhbmQKLSAgICByb3VuZC11cCwgaWYgaW1wbGVtZW50ZWQpLCB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gaXMgW3NpZ24saW5mXSwKLSAgICB3aGVyZSBzaWduIGlzIHRoZSBzaWduIG9mIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0LiAgRm9yIHJvdW5kLWRvd24sIHRoZQotICAgIHJlc3VsdCBpcyB0aGUgbGFyZ2VzdCBmaW5pdGUgbnVtYmVyIHRoYXQgY2FuIGJlIHJlcHJlc2VudGVkIGluIHRoZQotICAgIGN1cnJlbnQgcHJlY2lzaW9uLCB3aXRoIHRoZSBzaWduIG9mIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0LiAgRm9yCi0gICAgcm91bmQtY2VpbGluZywgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBhcyBmb3Igcm91bmQtZG93biBpZiB0aGUgc2lnbiBvZgotICAgIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0IGlzIDEsIG9yIGlzIFswLGluZl0gb3RoZXJ3aXNlLiAgRm9yIHJvdW5kLWZsb29yLAotICAgIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUgYXMgZm9yIHJvdW5kLWRvd24gaWYgdGhlIHNpZ24gb2YgdGhlIGludGVybWVkaWF0ZQotICAgIHJlc3VsdCBpcyAwLCBvciBpcyBbMSxpbmZdIG90aGVyd2lzZS4gIEluIGFsbCBjYXNlcywgSW5leGFjdCBhbmQgUm91bmRlZAotICAgIHdpbGwgYWxzbyBiZSByYWlzZWQuCi0gICAgIiIiCi0KLSAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsIHNpZ24sICphcmdzKToKLSAgICAgICAgaWYgY29udGV4dC5yb3VuZGluZyBpbiAoUk9VTkRfSEFMRl9VUCwgUk9VTkRfSEFMRl9FVkVOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBST1VORF9IQUxGX0RPV04sIFJPVU5EX1VQKToKLSAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2lnbl0KLSAgICAgICAgaWYgc2lnbiA9PSAwOgotICAgICAgICAgICAgaWYgY29udGV4dC5yb3VuZGluZyA9PSBST1VORF9DRUlMSU5HOgotICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2lnbl0KLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sICc5Jypjb250ZXh0LnByZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5FbWF4LWNvbnRleHQucHJlYysxKQotICAgICAgICBpZiBzaWduID09IDE6Ci0gICAgICAgICAgICBpZiBjb250ZXh0LnJvdW5kaW5nID09IFJPVU5EX0ZMT09SOgotICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2lnbl0KLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sICc5Jypjb250ZXh0LnByZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuRW1heC1jb250ZXh0LnByZWMrMSkKLQotCi1jbGFzcyBVbmRlcmZsb3coSW5leGFjdCwgUm91bmRlZCwgU3Vibm9ybWFsKToKLSAgICAiIiJOdW1lcmljYWwgdW5kZXJmbG93IHdpdGggcmVzdWx0IHJvdW5kZWQgdG8gMC4KLQotICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIHVuZGVyZmxvdyBpZiBhIHJlc3VsdCBpcyBpbmV4YWN0IGFuZCB0aGUKLSAgICBhZGp1c3RlZCBleHBvbmVudCBvZiB0aGUgcmVzdWx0IHdvdWxkIGJlIHNtYWxsZXIgKG1vcmUgbmVnYXRpdmUpIHRoYW4KLSAgICB0aGUgc21hbGxlc3QgdmFsdWUgdGhhdCBjYW4gYmUgaGFuZGxlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gKHRoZSB2YWx1ZQotICAgIEVtaW4pLiAgVGhhdCBpcywgdGhlIHJlc3VsdCBpcyBib3RoIGluZXhhY3QgYW5kIHN1Ym5vcm1hbC4KLQotICAgIFRoZSByZXN1bHQgYWZ0ZXIgYW4gdW5kZXJmbG93IHdpbGwgYmUgYSBzdWJub3JtYWwgbnVtYmVyIHJvdW5kZWQsIGlmCi0gICAgbmVjZXNzYXJ5LCBzbyB0aGF0IGl0cyBleHBvbmVudCBpcyBub3QgbGVzcyB0aGFuIEV0aW55LiAgVGhpcyBtYXkgcmVzdWx0Ci0gICAgaW4gMCB3aXRoIHRoZSBzaWduIG9mIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0IGFuZCBhbiBleHBvbmVudCBvZiBFdGlueS4KLQotICAgIEluIGFsbCBjYXNlcywgSW5leGFjdCwgUm91bmRlZCwgYW5kIFN1Ym5vcm1hbCB3aWxsIGFsc28gYmUgcmFpc2VkLgotICAgICIiIgotCi1jbGFzcyBGbG9hdE9wZXJhdGlvbihEZWNpbWFsRXhjZXB0aW9uLCBUeXBlRXJyb3IpOgotICAgICIiIkVuYWJsZSBzdHJpY3RlciBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzLgotCi0gICAgSWYgdGhlIHNpZ25hbCBpcyBub3QgdHJhcHBlZCAoZGVmYXVsdCksIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzIGlzCi0gICAgcGVybWl0dGVkIGluIHRoZSBEZWNpbWFsKCkgY29uc3RydWN0b3IsIGNvbnRleHQuY3JlYXRlX2RlY2ltYWwoKSBhbmQKLSAgICBhbGwgY29tcGFyaXNvbiBvcGVyYXRvcnMuIEJvdGggY29udmVyc2lvbiBhbmQgY29tcGFyaXNvbnMgYXJlIGV4YWN0LgotICAgIEFueSBvY2N1cnJlbmNlIG9mIGEgbWl4ZWQgb3BlcmF0aW9uIGlzIHNpbGVudGx5IHJlY29yZGVkIGJ5IHNldHRpbmcKLSAgICBGbG9hdE9wZXJhdGlvbiBpbiB0aGUgY29udGV4dCBmbGFncy4gIEV4cGxpY2l0IGNvbnZlcnNpb25zIHdpdGgKLSAgICBEZWNpbWFsLmZyb21fZmxvYXQoKSBvciBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoKSBkbyBub3QKLSAgICBzZXQgdGhlIGZsYWcuCi0KLSAgICBPdGhlcndpc2UgKHRoZSBzaWduYWwgaXMgdHJhcHBlZCksIG9ubHkgZXF1YWxpdHkgY29tcGFyaXNvbnMgYW5kIGV4cGxpY2l0Ci0gICAgY29udmVyc2lvbnMgYXJlIHNpbGVudC4gQWxsIG90aGVyIG1peGVkIG9wZXJhdGlvbnMgcmFpc2UgRmxvYXRPcGVyYXRpb24uCi0gICAgIiIiCi0KLSMgTGlzdCBvZiBwdWJsaWMgdHJhcHMgYW5kIGZsYWdzCi1fc2lnbmFscyA9IFtDbGFtcGVkLCBEaXZpc2lvbkJ5WmVybywgSW5leGFjdCwgT3ZlcmZsb3csIFJvdW5kZWQsCi0gICAgICAgICAgICBVbmRlcmZsb3csIEludmFsaWRPcGVyYXRpb24sIFN1Ym5vcm1hbCwgRmxvYXRPcGVyYXRpb25dCi0KLSMgTWFwIGNvbmRpdGlvbnMgKHBlciB0aGUgc3BlYykgdG8gc2lnbmFscwotX2NvbmRpdGlvbl9tYXAgPSB7Q29udmVyc2lvblN5bnRheDpJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgRGl2aXNpb25JbXBvc3NpYmxlOkludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICBEaXZpc2lvblVuZGVmaW5lZDpJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgSW52YWxpZENvbnRleHQ6SW52YWxpZE9wZXJhdGlvbn0KLQotIyBWYWxpZCByb3VuZGluZyBtb2RlcwotX3JvdW5kaW5nX21vZGVzID0gKFJPVU5EX0RPV04sIFJPVU5EX0hBTEZfVVAsIFJPVU5EX0hBTEZfRVZFTiwgUk9VTkRfQ0VJTElORywKLSAgICAgICAgICAgICAgICAgICBST1VORF9GTE9PUiwgUk9VTkRfVVAsIFJPVU5EX0hBTEZfRE9XTiwgUk9VTkRfMDVVUCkKLQotIyMjIyMgQ29udGV4dCBGdW5jdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBUaGUgZ2V0Y29udGV4dCgpIGFuZCBzZXRjb250ZXh0KCkgZnVuY3Rpb24gbWFuYWdlIGFjY2VzcyB0byBhIHRocmVhZC1sb2NhbAotIyBjdXJyZW50IGNvbnRleHQuICBQeTIuNCBvZmZlcnMgZGlyZWN0IHN1cHBvcnQgZm9yIHRocmVhZCBsb2NhbHMuICBJZiB0aGF0Ci0jIGlzIG5vdCBhdmFpbGFibGUsIHVzZSB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKSB3aGljaCBpcyBzbG93ZXIgYnV0IHdpbGwKLSMgd29yayBmb3Igb2xkZXIgUHl0aG9ucy4gIElmIHRocmVhZHMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBidWlsZCwgY3JlYXRlIGEKLSMgbW9jayB0aHJlYWRpbmcgb2JqZWN0IHdpdGggdGhyZWFkaW5nLmxvY2FsKCkgcmV0dXJuaW5nIHRoZSBtb2R1bGUgbmFtZXNwYWNlLgotCi10cnk6Ci0gICAgaW1wb3J0IHRocmVhZGluZwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgICMgUHl0aG9uIHdhcyBjb21waWxlZCB3aXRob3V0IHRocmVhZHM7IGNyZWF0ZSBhIG1vY2sgb2JqZWN0IGluc3RlYWQKLSAgICBjbGFzcyBNb2NrVGhyZWFkaW5nKG9iamVjdCk6Ci0gICAgICAgIGRlZiBsb2NhbChzZWxmLCBzeXM9c3lzKToKLSAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tfX25hbWVfX10KLSAgICB0aHJlYWRpbmcgPSBNb2NrVGhyZWFkaW5nKCkKLSAgICBkZWwgTW9ja1RocmVhZGluZwotCi10cnk6Ci0gICAgdGhyZWFkaW5nLmxvY2FsCi0KLWV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLQotICAgICMgVG8gZml4IHJlbG9hZGluZywgZm9yY2UgaXQgdG8gY3JlYXRlIGEgbmV3IGNvbnRleHQKLSAgICAjIE9sZCBjb250ZXh0cyBoYXZlIGRpZmZlcmVudCBleGNlcHRpb25zIGluIHRoZWlyIGRpY3RzLCBtYWtpbmcgcHJvYmxlbXMuCi0gICAgaWYgaGFzYXR0cih0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKSwgJ19fZGVjaW1hbF9jb250ZXh0X18nKToKLSAgICAgICAgZGVsIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLl9fZGVjaW1hbF9jb250ZXh0X18KLQotICAgIGRlZiBzZXRjb250ZXh0KGNvbnRleHQpOgotICAgICAgICAiIiJTZXQgdGhpcyB0aHJlYWQncyBjb250ZXh0IHRvIGNvbnRleHQuIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaW4gKERlZmF1bHRDb250ZXh0LCBCYXNpY0NvbnRleHQsIEV4dGVuZGVkQ29udGV4dCk6Ci0gICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC5jb3B5KCkKLSAgICAgICAgICAgIGNvbnRleHQuY2xlYXJfZmxhZ3MoKQotICAgICAgICB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5fX2RlY2ltYWxfY29udGV4dF9fID0gY29udGV4dAotCi0gICAgZGVmIGdldGNvbnRleHQoKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGlzIHRocmVhZCdzIGNvbnRleHQuCi0KLSAgICAgICAgSWYgdGhpcyB0aHJlYWQgZG9lcyBub3QgeWV0IGhhdmUgYSBjb250ZXh0LCByZXR1cm5zCi0gICAgICAgIGEgbmV3IGNvbnRleHQgYW5kIHNldHMgdGhpcyB0aHJlYWQncyBjb250ZXh0LgotICAgICAgICBOZXcgY29udGV4dHMgYXJlIGNvcGllcyBvZiBEZWZhdWx0Q29udGV4dC4KLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5fX2RlY2ltYWxfY29udGV4dF9fCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KCkKLSAgICAgICAgICAgIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLl9fZGVjaW1hbF9jb250ZXh0X18gPSBjb250ZXh0Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dAotCi1lbHNlOgotCi0gICAgbG9jYWwgPSB0aHJlYWRpbmcubG9jYWwoKQotICAgIGlmIGhhc2F0dHIobG9jYWwsICdfX2RlY2ltYWxfY29udGV4dF9fJyk6Ci0gICAgICAgIGRlbCBsb2NhbC5fX2RlY2ltYWxfY29udGV4dF9fCi0KLSAgICBkZWYgZ2V0Y29udGV4dChfbG9jYWw9bG9jYWwpOgotICAgICAgICAiIiJSZXR1cm5zIHRoaXMgdGhyZWFkJ3MgY29udGV4dC4KLQotICAgICAgICBJZiB0aGlzIHRocmVhZCBkb2VzIG5vdCB5ZXQgaGF2ZSBhIGNvbnRleHQsIHJldHVybnMKLSAgICAgICAgYSBuZXcgY29udGV4dCBhbmQgc2V0cyB0aGlzIHRocmVhZCdzIGNvbnRleHQuCi0gICAgICAgIE5ldyBjb250ZXh0cyBhcmUgY29waWVzIG9mIERlZmF1bHRDb250ZXh0LgotICAgICAgICAiIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIF9sb2NhbC5fX2RlY2ltYWxfY29udGV4dF9fCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KCkKLSAgICAgICAgICAgIF9sb2NhbC5fX2RlY2ltYWxfY29udGV4dF9fID0gY29udGV4dAotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQKLQotICAgIGRlZiBzZXRjb250ZXh0KGNvbnRleHQsIF9sb2NhbD1sb2NhbCk6Ci0gICAgICAgICIiIlNldCB0aGlzIHRocmVhZCdzIGNvbnRleHQgdG8gY29udGV4dC4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpbiAoRGVmYXVsdENvbnRleHQsIEJhc2ljQ29udGV4dCwgRXh0ZW5kZWRDb250ZXh0KToKLSAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNvcHkoKQotICAgICAgICAgICAgY29udGV4dC5jbGVhcl9mbGFncygpCi0gICAgICAgIF9sb2NhbC5fX2RlY2ltYWxfY29udGV4dF9fID0gY29udGV4dAotCi0gICAgZGVsIHRocmVhZGluZywgbG9jYWwgICAgICAgICMgRG9uJ3QgY29udGFtaW5hdGUgdGhlIG5hbWVzcGFjZQotCi1kZWYgbG9jYWxjb250ZXh0KGN0eD1Ob25lKToKLSAgICAiIiJSZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgZm9yIGEgY29weSBvZiB0aGUgc3VwcGxpZWQgY29udGV4dAotCi0gICAgVXNlcyBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgY29udGV4dCBpZiBubyBjb250ZXh0IGlzIHNwZWNpZmllZAotICAgIFRoZSByZXR1cm5lZCBjb250ZXh0IG1hbmFnZXIgY3JlYXRlcyBhIGxvY2FsIGRlY2ltYWwgY29udGV4dAotICAgIGluIGEgd2l0aCBzdGF0ZW1lbnQ6Ci0gICAgICAgIGRlZiBzaW4oeCk6Ci0gICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjdHg6Ci0gICAgICAgICAgICAgICAgIGN0eC5wcmVjICs9IDIKLSAgICAgICAgICAgICAgICAgIyBSZXN0IG9mIHNpbiBjYWxjdWxhdGlvbiBhbGdvcml0aG0KLSAgICAgICAgICAgICAgICAgIyB1c2VzIGEgcHJlY2lzaW9uIDIgZ3JlYXRlciB0aGFuIG5vcm1hbAotICAgICAgICAgICAgIHJldHVybiArcyAgIyBDb252ZXJ0IHJlc3VsdCB0byBub3JtYWwgcHJlY2lzaW9uCi0KLSAgICAgICAgIGRlZiBzaW4oeCk6Ci0gICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoRXh0ZW5kZWRDb250ZXh0KToKLSAgICAgICAgICAgICAgICAgIyBSZXN0IG9mIHNpbiBjYWxjdWxhdGlvbiBhbGdvcml0aG0KLSAgICAgICAgICAgICAgICAgIyB1c2VzIHRoZSBFeHRlbmRlZCBDb250ZXh0IGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICMgR2VuZXJhbCBEZWNpbWFsIEFyaXRobWV0aWMgU3BlY2lmaWNhdGlvbgotICAgICAgICAgICAgIHJldHVybiArcyAgIyBDb252ZXJ0IHJlc3VsdCB0byBub3JtYWwgY29udGV4dAotCi0gICAgPj4+IHNldGNvbnRleHQoRGVmYXVsdENvbnRleHQpCi0gICAgPj4+IHByaW50KGdldGNvbnRleHQoKS5wcmVjKQotICAgIDI4Ci0gICAgPj4+IHdpdGggbG9jYWxjb250ZXh0KCk6Ci0gICAgLi4uICAgICBjdHggPSBnZXRjb250ZXh0KCkKLSAgICAuLi4gICAgIGN0eC5wcmVjICs9IDIKLSAgICAuLi4gICAgIHByaW50KGN0eC5wcmVjKQotICAgIC4uLgotICAgIDMwCi0gICAgPj4+IHdpdGggbG9jYWxjb250ZXh0KEV4dGVuZGVkQ29udGV4dCk6Ci0gICAgLi4uICAgICBwcmludChnZXRjb250ZXh0KCkucHJlYykKLSAgICAuLi4KLSAgICA5Ci0gICAgPj4+IHByaW50KGdldGNvbnRleHQoKS5wcmVjKQotICAgIDI4Ci0gICAgIiIiCi0gICAgaWYgY3R4IGlzIE5vbmU6IGN0eCA9IGdldGNvbnRleHQoKQotICAgIHJldHVybiBfQ29udGV4dE1hbmFnZXIoY3R4KQotCi0KLSMjIyMjIERlY2ltYWwgY2xhc3MgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIERvIG5vdCBzdWJjbGFzcyBEZWNpbWFsIGZyb20gbnVtYmVycy5SZWFsIGFuZCBkbyBub3QgcmVnaXN0ZXIgaXQgYXMgc3VjaAotIyAoYmVjYXVzZSBEZWNpbWFscyBhcmUgbm90IGludGVyb3BlcmFibGUgd2l0aCBmbG9hdHMpLiAgU2VlIHRoZSBub3RlcyBpbgotIyBudW1iZXJzLnB5IGZvciBtb3JlIGRldGFpbC4KLQotY2xhc3MgRGVjaW1hbChvYmplY3QpOgotICAgICIiIkZsb2F0aW5nIHBvaW50IGNsYXNzIGZvciBkZWNpbWFsIGFyaXRobWV0aWMuIiIiCi0KLSAgICBfX3Nsb3RzX18gPSAoJ19leHAnLCdfaW50JywnX3NpZ24nLCAnX2lzX3NwZWNpYWwnKQotICAgICMgR2VuZXJhbGx5LCB0aGUgdmFsdWUgb2YgdGhlIERlY2ltYWwgaW5zdGFuY2UgaXMgZ2l2ZW4gYnkKLSAgICAjICAoLTEpKipfc2lnbiAqIF9pbnQgKiAxMCoqX2V4cAotICAgICMgU3BlY2lhbCB2YWx1ZXMgYXJlIHNpZ25pZmllZCBieSBfaXNfc3BlY2lhbCA9PSBUcnVlCi0KLSAgICAjIFdlJ3JlIGltbXV0YWJsZSwgc28gdXNlIF9fbmV3X18gbm90IF9faW5pdF9fCi0gICAgZGVmIF9fbmV3X18oY2xzLCB2YWx1ZT0iMCIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIkNyZWF0ZSBhIGRlY2ltYWwgcG9pbnQgaW5zdGFuY2UuCi0KLSAgICAgICAgPj4+IERlY2ltYWwoJzMuMTQnKSAgICAgICAgICAgICAgIyBzdHJpbmcgaW5wdXQKLSAgICAgICAgRGVjaW1hbCgnMy4xNCcpCi0gICAgICAgID4+PiBEZWNpbWFsKCgwLCAoMywgMSwgNCksIC0yKSkgICMgdHVwbGUgKHNpZ24sIGRpZ2l0X3R1cGxlLCBleHBvbmVudCkKLSAgICAgICAgRGVjaW1hbCgnMy4xNCcpCi0gICAgICAgID4+PiBEZWNpbWFsKDMxNCkgICAgICAgICAgICAgICAgICMgaW50Ci0gICAgICAgIERlY2ltYWwoJzMxNCcpCi0gICAgICAgID4+PiBEZWNpbWFsKERlY2ltYWwoMzE0KSkgICAgICAgICMgYW5vdGhlciBkZWNpbWFsIGluc3RhbmNlCi0gICAgICAgIERlY2ltYWwoJzMxNCcpCi0gICAgICAgID4+PiBEZWNpbWFsKCcgIDMuMTQgIFxcbicpICAgICAgICAjIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb2theQotICAgICAgICBEZWNpbWFsKCczLjE0JykKLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBOb3RlIHRoYXQgdGhlIGNvZWZmaWNpZW50LCBzZWxmLl9pbnQsIGlzIGFjdHVhbGx5IHN0b3JlZCBhcwotICAgICAgICAjIGEgc3RyaW5nIHJhdGhlciB0aGFuIGFzIGEgdHVwbGUgb2YgZGlnaXRzLiAgVGhpcyBzcGVlZHMgdXAKLSAgICAgICAgIyB0aGUgImRpZ2l0cyB0byBpbnRlZ2VyIiBhbmQgImludGVnZXIgdG8gZGlnaXRzIiBjb252ZXJzaW9ucwotICAgICAgICAjIHRoYXQgYXJlIHVzZWQgaW4gYWxtb3N0IGV2ZXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uIG9uCi0gICAgICAgICMgRGVjaW1hbHMuICBUaGlzIGlzIGFuIGludGVybmFsIGRldGFpbDogdGhlIGFzX3R1cGxlIGZ1bmN0aW9uCi0gICAgICAgICMgYW5kIHRoZSBEZWNpbWFsIGNvbnN0cnVjdG9yIHN0aWxsIGRlYWwgd2l0aCB0dXBsZXMgb2YKLSAgICAgICAgIyBkaWdpdHMuCi0KLSAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKLQotICAgICAgICAjIEZyb20gYSBzdHJpbmcKLSAgICAgICAgIyBSRXMgaW5zaXN0IG9uIHJlYWwgc3RyaW5ncywgc28gd2UgY2FuIHRvby4KLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKLSAgICAgICAgICAgIG0gPSBfcGFyc2VyKHZhbHVlLnN0cmlwKCkpCi0gICAgICAgICAgICBpZiBtIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKENvbnZlcnNpb25TeW50YXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGxpdGVyYWwgZm9yIERlY2ltYWw6ICVyIiAlIHZhbHVlKQotCi0gICAgICAgICAgICBpZiBtLmdyb3VwKCdzaWduJykgPT0gIi0iOgotICAgICAgICAgICAgICAgIHNlbGYuX3NpZ24gPSAxCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX3NpZ24gPSAwCi0gICAgICAgICAgICBpbnRwYXJ0ID0gbS5ncm91cCgnaW50JykKLSAgICAgICAgICAgIGlmIGludHBhcnQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgIyBmaW5pdGUgbnVtYmVyCi0gICAgICAgICAgICAgICAgZnJhY3BhcnQgPSBtLmdyb3VwKCdmcmFjJykgb3IgJycKLSAgICAgICAgICAgICAgICBleHAgPSBpbnQobS5ncm91cCgnZXhwJykgb3IgJzAnKQotICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9IHN0cihpbnQoaW50cGFydCtmcmFjcGFydCkpCi0gICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gZXhwIC0gbGVuKGZyYWNwYXJ0KQotICAgICAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgPSBGYWxzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkaWFnID0gbS5ncm91cCgnZGlhZycpCi0gICAgICAgICAgICAgICAgaWYgZGlhZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgIyBOYU4KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5faW50ID0gc3RyKGludChkaWFnIG9yICcwJykpLmxzdHJpcCgnMCcpCi0gICAgICAgICAgICAgICAgICAgIGlmIG0uZ3JvdXAoJ3NpZ25hbCcpOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gJ04nCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHAgPSAnbicKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIGluZmluaXR5Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9ICcwJwotICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHAgPSAnRicKLSAgICAgICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsID0gVHJ1ZQotICAgICAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgICAgICAjIEZyb20gYW4gaW50ZWdlcgotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBpbnQpOgotICAgICAgICAgICAgaWYgdmFsdWUgPj0gMDoKLSAgICAgICAgICAgICAgICBzZWxmLl9zaWduID0gMAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9zaWduID0gMQotICAgICAgICAgICAgc2VsZi5fZXhwID0gMAotICAgICAgICAgICAgc2VsZi5faW50ID0gc3RyKGFicyh2YWx1ZSkpCi0gICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsID0gRmFsc2UKLSAgICAgICAgICAgIHJldHVybiBzZWxmCi0KLSAgICAgICAgIyBGcm9tIGFub3RoZXIgZGVjaW1hbAotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBEZWNpbWFsKToKLSAgICAgICAgICAgIHNlbGYuX2V4cCAgPSB2YWx1ZS5fZXhwCi0gICAgICAgICAgICBzZWxmLl9zaWduID0gdmFsdWUuX3NpZ24KLSAgICAgICAgICAgIHNlbGYuX2ludCAgPSB2YWx1ZS5faW50Ci0gICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsICA9IHZhbHVlLl9pc19zcGVjaWFsCi0gICAgICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgICAgICMgRnJvbSBhbiBpbnRlcm5hbCB3b3JraW5nIHZhbHVlCi0gICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIF9Xb3JrUmVwKToKLSAgICAgICAgICAgIHNlbGYuX3NpZ24gPSB2YWx1ZS5zaWduCi0gICAgICAgICAgICBzZWxmLl9pbnQgPSBzdHIodmFsdWUuaW50KQotICAgICAgICAgICAgc2VsZi5fZXhwID0gaW50KHZhbHVlLmV4cCkKLSAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgPSBGYWxzZQotICAgICAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgICAgICAjIHR1cGxlL2xpc3QgY29udmVyc2lvbiAocG9zc2libHkgZnJvbSBhc190dXBsZSgpKQotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCAobGlzdCx0dXBsZSkpOgotICAgICAgICAgICAgaWYgbGVuKHZhbHVlKSAhPSAzOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgdHVwbGUgc2l6ZSBpbiBjcmVhdGlvbiBvZiBEZWNpbWFsICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcm9tIGxpc3Qgb3IgdHVwbGUuICBUaGUgbGlzdCBvciB0dXBsZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGhhdmUgZXhhY3RseSB0aHJlZSBlbGVtZW50cy4nKQotICAgICAgICAgICAgIyBwcm9jZXNzIHNpZ24uICBUaGUgaXNpbnN0YW5jZSB0ZXN0IHJlamVjdHMgZmxvYXRzCi0gICAgICAgICAgICBpZiBub3QgKGlzaW5zdGFuY2UodmFsdWVbMF0sIGludCkgYW5kIHZhbHVlWzBdIGluICgwLDEpKToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHNpZ24uICBUaGUgZmlyc3QgdmFsdWUgaW4gdGhlIHR1cGxlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaG91bGQgYmUgYW4gaW50ZWdlcjsgZWl0aGVyIDAgZm9yIGEgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBvc2l0aXZlIG51bWJlciBvciAxIGZvciBhIG5lZ2F0aXZlIG51bWJlci4iKQotICAgICAgICAgICAgc2VsZi5fc2lnbiA9IHZhbHVlWzBdCi0gICAgICAgICAgICBpZiB2YWx1ZVsyXSA9PSAnRic6Ci0gICAgICAgICAgICAgICAgIyBpbmZpbml0eTogdmFsdWVbMV0gaXMgaWdub3JlZAotICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9ICcwJwotICAgICAgICAgICAgICAgIHNlbGYuX2V4cCA9IHZhbHVlWzJdCi0gICAgICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IFRydWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBwcm9jZXNzIGFuZCB2YWxpZGF0ZSB0aGUgZGlnaXRzIGluIHZhbHVlWzFdCi0gICAgICAgICAgICAgICAgZGlnaXRzID0gW10KLSAgICAgICAgICAgICAgICBmb3IgZGlnaXQgaW4gdmFsdWVbMV06Ci0gICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZGlnaXQsIGludCkgYW5kIDAgPD0gZGlnaXQgPD0gOToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgc2tpcCBsZWFkaW5nIHplcm9zCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBkaWdpdHMgb3IgZGlnaXQgIT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdpdHMuYXBwZW5kKGRpZ2l0KQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlIHNlY29uZCB2YWx1ZSBpbiB0aGUgdHVwbGUgbXVzdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZSBjb21wb3NlZCBvZiBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMCB0aHJvdWdoIDkuIikKLSAgICAgICAgICAgICAgICBpZiB2YWx1ZVsyXSBpbiAoJ24nLCAnTicpOgotICAgICAgICAgICAgICAgICAgICAjIE5hTjogZGlnaXRzIGZvcm0gdGhlIGRpYWdub3N0aWMKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5faW50ID0gJycuam9pbihtYXAoc3RyLCBkaWdpdHMpKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHAgPSB2YWx1ZVsyXQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsID0gVHJ1ZQotICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZVsyXSwgaW50KToKLSAgICAgICAgICAgICAgICAgICAgIyBmaW5pdGUgbnVtYmVyOiBkaWdpdHMgZ2l2ZSB0aGUgY29lZmZpY2llbnQKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5faW50ID0gJycuam9pbihtYXAoc3RyLCBkaWdpdHMgb3IgWzBdKSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gdmFsdWVbMl0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IEZhbHNlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlIHRoaXJkIHZhbHVlIGluIHRoZSB0dXBsZSBtdXN0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmUgYW4gaW50ZWdlciwgb3Igb25lIG9mIHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZ3MgJ0YnLCAnbicsICdOJy4iKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBmbG9hdCk6Ci0gICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoRmxvYXRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgInN0cmljdCBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzIGFyZSAiCi0gICAgICAgICAgICAgICAgImVuYWJsZWQiKQotICAgICAgICAgICAgdmFsdWUgPSBEZWNpbWFsLmZyb21fZmxvYXQodmFsdWUpCi0gICAgICAgICAgICBzZWxmLl9leHAgID0gdmFsdWUuX2V4cAotICAgICAgICAgICAgc2VsZi5fc2lnbiA9IHZhbHVlLl9zaWduCi0gICAgICAgICAgICBzZWxmLl9pbnQgID0gdmFsdWUuX2ludAotICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCAgPSB2YWx1ZS5faXNfc3BlY2lhbAotICAgICAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0ICVyIHRvIERlY2ltYWwiICUgdmFsdWUpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZnJvbV9mbG9hdChjbHMsIGYpOgotICAgICAgICAiIiJDb252ZXJ0cyBhIGZsb2F0IHRvIGEgZGVjaW1hbCBudW1iZXIsIGV4YWN0bHkuCi0KLSAgICAgICAgTm90ZSB0aGF0IERlY2ltYWwuZnJvbV9mbG9hdCgwLjEpIGlzIG5vdCB0aGUgc2FtZSBhcyBEZWNpbWFsKCcwLjEnKS4KLSAgICAgICAgU2luY2UgMC4xIGlzIG5vdCBleGFjdGx5IHJlcHJlc2VudGFibGUgaW4gYmluYXJ5IGZsb2F0aW5nIHBvaW50LCB0aGUKLSAgICAgICAgdmFsdWUgaXMgc3RvcmVkIGFzIHRoZSBuZWFyZXN0IHJlcHJlc2VudGFibGUgdmFsdWUgd2hpY2ggaXMKLSAgICAgICAgMHgxLjk5OTk5OTk5OTk5OWFwLTQuICBUaGUgZXhhY3QgZXF1aXZhbGVudCBvZiB0aGUgdmFsdWUgaW4gZGVjaW1hbAotICAgICAgICBpcyAwLjEwMDAwMDAwMDAwMDAwMDAwNTU1MTExNTEyMzEyNTc4MjcwMjExODE1ODM0MDQ1NDEwMTU2MjUuCi0KLSAgICAgICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdCgwLjEpCi0gICAgICAgIERlY2ltYWwoJzAuMTAwMDAwMDAwMDAwMDAwMDA1NTUxMTE1MTIzMTI1NzgyNzAyMTE4MTU4MzQwNDU0MTAxNTYyNScpCi0gICAgICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ25hbicpKQotICAgICAgICBEZWNpbWFsKCdOYU4nKQotICAgICAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCdpbmYnKSkKLSAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQotICAgICAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KC1mbG9hdCgnaW5mJykpCi0gICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCi0gICAgICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoLTAuMCkKLSAgICAgICAgRGVjaW1hbCgnLTAnKQotCi0gICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKGYsIGludCk6ICAgICAgICAgICAgICAgICMgaGFuZGxlIGludGVnZXIgaW5wdXRzCi0gICAgICAgICAgICByZXR1cm4gY2xzKGYpCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGYsIGZsb2F0KToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYXJndW1lbnQgbXVzdCBiZSBpbnQgb3IgZmxvYXQuIikKLSAgICAgICAgaWYgX21hdGguaXNpbmYoZikgb3IgX21hdGguaXNuYW4oZik6Ci0gICAgICAgICAgICByZXR1cm4gY2xzKHJlcHIoZikpCi0gICAgICAgIGlmIF9tYXRoLmNvcHlzaWduKDEuMCwgZikgPT0gMS4wOgotICAgICAgICAgICAgc2lnbiA9IDAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNpZ24gPSAxCi0gICAgICAgIG4sIGQgPSBhYnMoZikuYXNfaW50ZWdlcl9yYXRpbygpCi0gICAgICAgIGsgPSBkLmJpdF9sZW5ndGgoKSAtIDEKLSAgICAgICAgcmVzdWx0ID0gX2RlY19mcm9tX3RyaXBsZShzaWduLCBzdHIobio1KiprKSwgLWspCi0gICAgICAgIGlmIGNscyBpcyBEZWNpbWFsOgotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGNscyhyZXN1bHQpCi0KLSAgICBkZWYgX2lzbmFuKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIHdoZXRoZXIgdGhlIG51bWJlciBpcyBub3QgYWN0dWFsbHkgb25lLgotCi0gICAgICAgIDAgaWYgYSBudW1iZXIKLSAgICAgICAgMSBpZiBOYU4KLSAgICAgICAgMiBpZiBzTmFOCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgZXhwID0gc2VsZi5fZXhwCi0gICAgICAgICAgICBpZiBleHAgPT0gJ24nOgotICAgICAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgICAgICBlbGlmIGV4cCA9PSAnTic6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDIKLSAgICAgICAgcmV0dXJuIDAKLQotICAgIGRlZiBfaXNpbmZpbml0eShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSBudW1iZXIgaXMgaW5maW5pdGUKLQotICAgICAgICAwIGlmIGZpbml0ZSBvciBub3QgYSBudW1iZXIKLSAgICAgICAgMSBpZiArSU5GCi0gICAgICAgIC0xIGlmIC1JTkYKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuX2V4cCA9PSAnRic6Ci0gICAgICAgICAgICBpZiBzZWxmLl9zaWduOgotICAgICAgICAgICAgICAgIHJldHVybiAtMQotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgcmV0dXJuIDAKLQotICAgIGRlZiBfY2hlY2tfbmFucyhzZWxmLCBvdGhlcj1Ob25lLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIHdoZXRoZXIgdGhlIG51bWJlciBpcyBub3QgYWN0dWFsbHkgb25lLgotCi0gICAgICAgIGlmIHNlbGYsIG90aGVyIGFyZSBzTmFOLCBzaWduYWwKLSAgICAgICAgaWYgc2VsZiwgb3RoZXIgYXJlIE5hTiByZXR1cm4gbmFuCi0gICAgICAgIHJldHVybiAwCi0KLSAgICAgICAgRG9uZSBiZWZvcmUgb3BlcmF0aW9ucy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZl9pc19uYW4gPSBzZWxmLl9pc25hbigpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vbmU6Ci0gICAgICAgICAgICBvdGhlcl9pc19uYW4gPSBGYWxzZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3RoZXJfaXNfbmFuID0gb3RoZXIuX2lzbmFuKCkKLQotICAgICAgICBpZiBzZWxmX2lzX25hbiBvciBvdGhlcl9pc19uYW46Ci0gICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgICAgICBpZiBzZWxmX2lzX25hbiA9PSAyOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc05hTicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikKLSAgICAgICAgICAgIGlmIG90aGVyX2lzX25hbiA9PSAyOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc05hTicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIpCi0gICAgICAgICAgICBpZiBzZWxmX2lzX25hbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZml4X25hbihjb250ZXh0KQotCi0gICAgICAgICAgICByZXR1cm4gb3RoZXIuX2ZpeF9uYW4oY29udGV4dCkKLSAgICAgICAgcmV0dXJuIDAKLQotICAgIGRlZiBfY29tcGFyZV9jaGVja19uYW5zKHNlbGYsIG90aGVyLCBjb250ZXh0KToKLSAgICAgICAgIiIiVmVyc2lvbiBvZiBfY2hlY2tfbmFucyB1c2VkIGZvciB0aGUgc2lnbmFsaW5nIGNvbXBhcmlzb25zCi0gICAgICAgIGNvbXBhcmVfc2lnbmFsLCBfX2xlX18sIF9fbHRfXywgX19nZV9fLCBfX2d0X18uCi0KLSAgICAgICAgU2lnbmFsIEludmFsaWRPcGVyYXRpb24gaWYgZWl0aGVyIHNlbGYgb3Igb3RoZXIgaXMgYSAocXVpZXQKLSAgICAgICAgb3Igc2lnbmFsaW5nKSBOYU4uICBTaWduYWxpbmcgTmFOcyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBxdWlldAotICAgICAgICBOYU5zLgotCi0gICAgICAgIFJldHVybiAwIGlmIG5laXRoZXIgb3BlcmFuZCBpcyBhIE5hTi4KLQotICAgICAgICAiIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBpZiBzZWxmLmlzX3NuYW4oKToKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gaW52b2x2aW5nIHNOYU4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKQotICAgICAgICAgICAgZWxpZiBvdGhlci5pc19zbmFuKCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wYXJpc29uIGludm9sdmluZyBzTmFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIpCi0gICAgICAgICAgICBlbGlmIHNlbGYuaXNfcW5hbigpOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBpbnZvbHZpbmcgTmFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikKLSAgICAgICAgICAgIGVsaWYgb3RoZXIuaXNfcW5hbigpOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBpbnZvbHZpbmcgTmFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIpCi0gICAgICAgIHJldHVybiAwCi0KLSAgICBkZWYgX19ib29sX18oc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgbm9uemVybzsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KLQotICAgICAgICBOYU5zIGFuZCBpbmZpbml0aWVzIGFyZSBjb25zaWRlcmVkIG5vbnplcm8uCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5faXNfc3BlY2lhbCBvciBzZWxmLl9pbnQgIT0gJzAnCi0KLSAgICBkZWYgX2NtcChzZWxmLCBvdGhlcik6Ci0gICAgICAgICIiIkNvbXBhcmUgdGhlIHR3byBub24tTmFOIGRlY2ltYWwgaW5zdGFuY2VzIHNlbGYgYW5kIG90aGVyLgotCi0gICAgICAgIFJldHVybnMgLTEgaWYgc2VsZiA8IG90aGVyLCAwIGlmIHNlbGYgPT0gb3RoZXIgYW5kIDEKLSAgICAgICAgaWYgc2VsZiA+IG90aGVyLiAgVGhpcyByb3V0aW5lIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seS4iIiIKLQotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgc2VsZl9pbmYgPSBzZWxmLl9pc2luZmluaXR5KCkKLSAgICAgICAgICAgIG90aGVyX2luZiA9IG90aGVyLl9pc2luZmluaXR5KCkKLSAgICAgICAgICAgIGlmIHNlbGZfaW5mID09IG90aGVyX2luZjoKLSAgICAgICAgICAgICAgICByZXR1cm4gMAotICAgICAgICAgICAgZWxpZiBzZWxmX2luZiA8IG90aGVyX2luZjoKLSAgICAgICAgICAgICAgICByZXR1cm4gLTEKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDEKLQotICAgICAgICAjIGNoZWNrIGZvciB6ZXJvczsgIERlY2ltYWwoJzAnKSA9PSBEZWNpbWFsKCctMCcpCi0gICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgaWYgbm90IG90aGVyOgotICAgICAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAtKCgtMSkqKm90aGVyLl9zaWduKQotICAgICAgICBpZiBub3Qgb3RoZXI6Ci0gICAgICAgICAgICByZXR1cm4gKC0xKSoqc2VsZi5fc2lnbgotCi0gICAgICAgICMgSWYgZGlmZmVyZW50IHNpZ25zLCBuZWcgb25lIGlzIGxlc3MKLSAgICAgICAgaWYgb3RoZXIuX3NpZ24gPCBzZWxmLl9zaWduOgotICAgICAgICAgICAgcmV0dXJuIC0xCi0gICAgICAgIGlmIHNlbGYuX3NpZ24gPCBvdGhlci5fc2lnbjoKLSAgICAgICAgICAgIHJldHVybiAxCi0KLSAgICAgICAgc2VsZl9hZGp1c3RlZCA9IHNlbGYuYWRqdXN0ZWQoKQotICAgICAgICBvdGhlcl9hZGp1c3RlZCA9IG90aGVyLmFkanVzdGVkKCkKLSAgICAgICAgaWYgc2VsZl9hZGp1c3RlZCA9PSBvdGhlcl9hZGp1c3RlZDoKLSAgICAgICAgICAgIHNlbGZfcGFkZGVkID0gc2VsZi5faW50ICsgJzAnKihzZWxmLl9leHAgLSBvdGhlci5fZXhwKQotICAgICAgICAgICAgb3RoZXJfcGFkZGVkID0gb3RoZXIuX2ludCArICcwJyoob3RoZXIuX2V4cCAtIHNlbGYuX2V4cCkKLSAgICAgICAgICAgIGlmIHNlbGZfcGFkZGVkID09IG90aGVyX3BhZGRlZDoKLSAgICAgICAgICAgICAgICByZXR1cm4gMAotICAgICAgICAgICAgZWxpZiBzZWxmX3BhZGRlZCA8IG90aGVyX3BhZGRlZDoKLSAgICAgICAgICAgICAgICByZXR1cm4gLSgtMSkqKnNlbGYuX3NpZ24KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICgtMSkqKnNlbGYuX3NpZ24KLSAgICAgICAgZWxpZiBzZWxmX2FkanVzdGVkID4gb3RoZXJfYWRqdXN0ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gKC0xKSoqc2VsZi5fc2lnbgotICAgICAgICBlbHNlOiAjIHNlbGZfYWRqdXN0ZWQgPCBvdGhlcl9hZGp1c3RlZAotICAgICAgICAgICAgcmV0dXJuIC0oKC0xKSoqc2VsZi5fc2lnbikKLQotICAgICMgTm90ZTogVGhlIERlY2ltYWwgc3RhbmRhcmQgZG9lc24ndCBjb3ZlciByaWNoIGNvbXBhcmlzb25zIGZvcgotICAgICMgRGVjaW1hbHMuICBJbiBwYXJ0aWN1bGFyLCB0aGUgc3BlY2lmaWNhdGlvbiBpcyBzaWxlbnQgb24gdGhlCi0gICAgIyBzdWJqZWN0IG9mIHdoYXQgc2hvdWxkIGhhcHBlbiBmb3IgYSBjb21wYXJpc29uIGludm9sdmluZyBhIE5hTi4KLSAgICAjIFdlIHRha2UgdGhlIGZvbGxvd2luZyBhcHByb2FjaDoKLSAgICAjCi0gICAgIyAgID09IGNvbXBhcmlzb25zIGludm9sdmluZyBhIHF1aWV0IE5hTiBhbHdheXMgcmV0dXJuIEZhbHNlCi0gICAgIyAgICE9IGNvbXBhcmlzb25zIGludm9sdmluZyBhIHF1aWV0IE5hTiBhbHdheXMgcmV0dXJuIFRydWUKLSAgICAjICAgPT0gb3IgIT0gY29tcGFyaXNvbnMgaW52b2x2aW5nIGEgc2lnbmFsaW5nIE5hTiBzaWduYWwKLSAgICAjICAgICAgSW52YWxpZE9wZXJhdGlvbiwgYW5kIHJldHVybiBGYWxzZSBvciBUcnVlIGFzIGFib3ZlIGlmIHRoZQotICAgICMgICAgICBJbnZhbGlkT3BlcmF0aW9uIGlzIG5vdCB0cmFwcGVkLgotICAgICMgICA8LCA+LCA8PSBhbmQgPj0gY29tcGFyaXNvbnMgaW52b2x2aW5nIGEgKHF1aWV0IG9yIHNpZ25hbGluZykKLSAgICAjICAgICAgTmFOIHNpZ25hbCBJbnZhbGlkT3BlcmF0aW9uLCBhbmQgcmV0dXJuIEZhbHNlIGlmIHRoZQotICAgICMgICAgICBJbnZhbGlkT3BlcmF0aW9uIGlzIG5vdCB0cmFwcGVkLgotICAgICMKLSAgICAjIFRoaXMgYmVoYXZpb3IgaXMgZGVzaWduZWQgdG8gY29uZm9ybSBhcyBjbG9zZWx5IGFzIHBvc3NpYmxlIHRvCi0gICAgIyB0aGF0IHNwZWNpZmllZCBieSBJRUVFIDc1NC4KLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYsIG90aGVyID0gX2NvbnZlcnRfZm9yX2NvbXBhcmlzb24oc2VsZiwgb3RoZXIsIGVxdWFsaXR5X29wPVRydWUpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgICAgIGlmIHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpID09IDAKLQotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYsIG90aGVyID0gX2NvbnZlcnRfZm9yX2NvbXBhcmlzb24oc2VsZiwgb3RoZXIsIGVxdWFsaXR5X29wPVRydWUpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgICAgIGlmIHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgIT0gMAotCi0KLSAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICBzZWxmLCBvdGhlciA9IF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotICAgICAgICBhbnMgPSBzZWxmLl9jb21wYXJlX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA8IDAKLQotICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYsIG90aGVyID0gX2NvbnZlcnRfZm9yX2NvbXBhcmlzb24oc2VsZiwgb3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgICAgIGFucyA9IHNlbGYuX2NvbXBhcmVfY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpIDw9IDAKLQotICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYsIG90aGVyID0gX2NvbnZlcnRfZm9yX2NvbXBhcmlzb24oc2VsZiwgb3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgICAgIGFucyA9IHNlbGYuX2NvbXBhcmVfY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpID4gMAotCi0gICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgc2VsZiwgb3RoZXIgPSBfY29udmVydF9mb3JfY29tcGFyaXNvbihzZWxmLCBvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLSAgICAgICAgYW5zID0gc2VsZi5fY29tcGFyZV9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPj0gMAotCi0gICAgZGVmIGNvbXBhcmUoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIkNvbXBhcmUgc2VsZiB0byBvdGhlci4gIFJldHVybiBhIGRlY2ltYWwgdmFsdWU6Ci0KLSAgICAgICAgYSBvciBiIGlzIGEgTmFOID09PiBEZWNpbWFsKCdOYU4nKQotICAgICAgICBhIDwgYiAgICAgICAgICAgPT0+IERlY2ltYWwoJy0xJykKLSAgICAgICAgYSA9PSBiICAgICAgICAgID09PiBEZWNpbWFsKCcwJykKLSAgICAgICAgYSA+IGIgICAgICAgICAgID09PiBEZWNpbWFsKCcxJykKLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICAjIENvbXBhcmUoTmFOLCBOYU4pID0gTmFOCi0gICAgICAgIGlmIChzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyIGFuZCBvdGhlci5faXNfc3BlY2lhbCk6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmLl9jbXAob3RoZXIpKQotCi0gICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICAiIiJ4Ll9faGFzaF9fKCkgPD09PiBoYXNoKHgpIiIiCi0KLSAgICAgICAgIyBJbiBvcmRlciB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaGFzaCBvZiBhIERlY2ltYWwgaW5zdGFuY2UKLSAgICAgICAgIyBhZ3JlZXMgd2l0aCB0aGUgaGFzaCBvZiBhIG51bWVyaWNhbGx5IGVxdWFsIGludGVnZXIsIGZsb2F0Ci0gICAgICAgICMgb3IgRnJhY3Rpb24sIHdlIGZvbGxvdyB0aGUgcnVsZXMgZm9yIG51bWVyaWMgaGFzaGVzIG91dGxpbmVkCi0gICAgICAgICMgaW4gdGhlIGRvY3VtZW50YXRpb24uICAoU2VlIGxpYnJhcnkgZG9jcywgJ0J1aWx0LWluIFR5cGVzJykuCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBpZiBzZWxmLmlzX3NuYW4oKToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0Nhbm5vdCBoYXNoIGEgc2lnbmFsaW5nIE5hTiB2YWx1ZS4nKQotICAgICAgICAgICAgZWxpZiBzZWxmLmlzX25hbigpOgotICAgICAgICAgICAgICAgIHJldHVybiBfUHlIQVNIX05BTgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9zaWduOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLV9QeUhBU0hfSU5GCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9QeUhBU0hfSU5GCi0KLSAgICAgICAgaWYgc2VsZi5fZXhwID49IDA6Ci0gICAgICAgICAgICBleHBfaGFzaCA9IHBvdygxMCwgc2VsZi5fZXhwLCBfUHlIQVNIX01PRFVMVVMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBleHBfaGFzaCA9IHBvdyhfUHlIQVNIXzEwSU5WLCAtc2VsZi5fZXhwLCBfUHlIQVNIX01PRFVMVVMpCi0gICAgICAgIGhhc2hfID0gaW50KHNlbGYuX2ludCkgKiBleHBfaGFzaCAlIF9QeUhBU0hfTU9EVUxVUwotICAgICAgICBhbnMgPSBoYXNoXyBpZiBzZWxmID49IDAgZWxzZSAtaGFzaF8KLSAgICAgICAgcmV0dXJuIC0yIGlmIGFucyA9PSAtMSBlbHNlIGFucwotCi0gICAgZGVmIGFzX3R1cGxlKHNlbGYpOgotICAgICAgICAiIiJSZXByZXNlbnRzIHRoZSBudW1iZXIgYXMgYSB0cmlwbGUgdHVwbGUuCi0KLSAgICAgICAgVG8gc2hvdyB0aGUgaW50ZXJuYWxzIGV4YWN0bHkgYXMgdGhleSBhcmUuCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gRGVjaW1hbFR1cGxlKHNlbGYuX3NpZ24sIHR1cGxlKG1hcChpbnQsIHNlbGYuX2ludCkpLCBzZWxmLl9leHApCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgICIiIlJlcHJlc2VudHMgdGhlIG51bWJlciBhcyBhbiBpbnN0YW5jZSBvZiBEZWNpbWFsLiIiIgotICAgICAgICAjIEludmFyaWFudDogIGV2YWwocmVwcihkKSkgPT0gZAotICAgICAgICByZXR1cm4gIkRlY2ltYWwoJyVzJykiICUgc3RyKHNlbGYpCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmLCBlbmc9RmFsc2UsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlciBpbiBzY2llbnRpZmljIG5vdGF0aW9uLgotCi0gICAgICAgIENhcHR1cmVzIGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIHVuZGVybHlpbmcgcmVwcmVzZW50YXRpb24uCi0gICAgICAgICIiIgotCi0gICAgICAgIHNpZ24gPSBbJycsICctJ11bc2VsZi5fc2lnbl0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGlmIHNlbGYuX2V4cCA9PSAnRic6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyAnSW5maW5pdHknCi0gICAgICAgICAgICBlbGlmIHNlbGYuX2V4cCA9PSAnbic6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyAnTmFOJyArIHNlbGYuX2ludAotICAgICAgICAgICAgZWxzZTogIyBzZWxmLl9leHAgPT0gJ04nCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyAnc05hTicgKyBzZWxmLl9pbnQKLQotICAgICAgICAjIG51bWJlciBvZiBkaWdpdHMgb2Ygc2VsZi5faW50IHRvIGxlZnQgb2YgZGVjaW1hbCBwb2ludAotICAgICAgICBsZWZ0ZGlnaXRzID0gc2VsZi5fZXhwICsgbGVuKHNlbGYuX2ludCkKLQotICAgICAgICAjIGRvdHBsYWNlIGlzIG51bWJlciBvZiBkaWdpdHMgb2Ygc2VsZi5faW50IHRvIHRoZSBsZWZ0IG9mIHRoZQotICAgICAgICAjIGRlY2ltYWwgcG9pbnQgaW4gdGhlIG1hbnRpc3NhIG9mIHRoZSBvdXRwdXQgc3RyaW5nICh0aGF0IGlzLAotICAgICAgICAjIGFmdGVyIGFkanVzdGluZyB0aGUgZXhwb25lbnQpCi0gICAgICAgIGlmIHNlbGYuX2V4cCA8PSAwIGFuZCBsZWZ0ZGlnaXRzID4gLTY6Ci0gICAgICAgICAgICAjIG5vIGV4cG9uZW50IHJlcXVpcmVkCi0gICAgICAgICAgICBkb3RwbGFjZSA9IGxlZnRkaWdpdHMKLSAgICAgICAgZWxpZiBub3QgZW5nOgotICAgICAgICAgICAgIyB1c3VhbCBzY2llbnRpZmljIG5vdGF0aW9uOiAxIGRpZ2l0IG9uIGxlZnQgb2YgdGhlIHBvaW50Ci0gICAgICAgICAgICBkb3RwbGFjZSA9IDEKLSAgICAgICAgZWxpZiBzZWxmLl9pbnQgPT0gJzAnOgotICAgICAgICAgICAgIyBlbmdpbmVlcmluZyBub3RhdGlvbiwgemVybwotICAgICAgICAgICAgZG90cGxhY2UgPSAobGVmdGRpZ2l0cyArIDEpICUgMyAtIDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgZW5naW5lZXJpbmcgbm90YXRpb24sIG5vbnplcm8KLSAgICAgICAgICAgIGRvdHBsYWNlID0gKGxlZnRkaWdpdHMgLSAxKSAlIDMgKyAxCi0KLSAgICAgICAgaWYgZG90cGxhY2UgPD0gMDoKLSAgICAgICAgICAgIGludHBhcnQgPSAnMCcKLSAgICAgICAgICAgIGZyYWNwYXJ0ID0gJy4nICsgJzAnKigtZG90cGxhY2UpICsgc2VsZi5faW50Ci0gICAgICAgIGVsaWYgZG90cGxhY2UgPj0gbGVuKHNlbGYuX2ludCk6Ci0gICAgICAgICAgICBpbnRwYXJ0ID0gc2VsZi5faW50KycwJyooZG90cGxhY2UtbGVuKHNlbGYuX2ludCkpCi0gICAgICAgICAgICBmcmFjcGFydCA9ICcnCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpbnRwYXJ0ID0gc2VsZi5faW50Wzpkb3RwbGFjZV0KLSAgICAgICAgICAgIGZyYWNwYXJ0ID0gJy4nICsgc2VsZi5faW50W2RvdHBsYWNlOl0KLSAgICAgICAgaWYgbGVmdGRpZ2l0cyA9PSBkb3RwbGFjZToKLSAgICAgICAgICAgIGV4cCA9ICcnCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICAgICAgZXhwID0gWydlJywgJ0UnXVtjb250ZXh0LmNhcGl0YWxzXSArICIlK2QiICUgKGxlZnRkaWdpdHMtZG90cGxhY2UpCi0KLSAgICAgICAgcmV0dXJuIHNpZ24gKyBpbnRwYXJ0ICsgZnJhY3BhcnQgKyBleHAKLQotICAgIGRlZiB0b19lbmdfc3RyaW5nKHNlbGYsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIkNvbnZlcnQgdG8gZW5naW5lZXJpbmctdHlwZSBzdHJpbmcuCi0KLSAgICAgICAgRW5naW5lZXJpbmcgbm90YXRpb24gaGFzIGFuIGV4cG9uZW50IHdoaWNoIGlzIGEgbXVsdGlwbGUgb2YgMywgc28gdGhlcmUKLSAgICAgICAgYXJlIHVwIHRvIDMgZGlnaXRzIGxlZnQgb2YgdGhlIGRlY2ltYWwgcGxhY2UuCi0KLSAgICAgICAgU2FtZSBydWxlcyBmb3Igd2hlbiBpbiBleHBvbmVudGlhbCBhbmQgd2hlbiBhcyBhIHZhbHVlIGFzIGluIF9fc3RyX18uCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fX3N0cl9fKGVuZz1UcnVlLCBjb250ZXh0PWNvbnRleHQpCi0KLSAgICBkZWYgX19uZWdfXyhzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIGEgY29weSB3aXRoIHRoZSBzaWduIHN3aXRjaGVkLgotCi0gICAgICAgIFJvdW5kcywgaWYgaXQgaGFzIHJlYXNvbi4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGlmIG5vdCBzZWxmIGFuZCBjb250ZXh0LnJvdW5kaW5nICE9IFJPVU5EX0ZMT09SOgotICAgICAgICAgICAgIyAtRGVjaW1hbCgnMCcpIGlzIERlY2ltYWwoJzAnKSwgbm90IERlY2ltYWwoJy0wJyksIGV4Y2VwdAotICAgICAgICAgICAgIyBpbiBST1VORF9GTE9PUiByb3VuZGluZyBtb2RlLgotICAgICAgICAgICAgYW5zID0gc2VsZi5jb3B5X2FicygpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLmNvcHlfbmVnYXRlKCkKLQotICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKLQotICAgIGRlZiBfX3Bvc19fKHNlbGYsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgYSBjb3B5LCB1bmxlc3MgaXQgaXMgYSBzTmFOLgotCi0gICAgICAgIFJvdW5kcyB0aGUgbnVtYmVyIChpZiBtb3JlIHRoZW4gcHJlY2lzaW9uIGRpZ2l0cykKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGlmIG5vdCBzZWxmIGFuZCBjb250ZXh0LnJvdW5kaW5nICE9IFJPVU5EX0ZMT09SOgotICAgICAgICAgICAgIyArICgtMCkgPSAwLCBleGNlcHQgaW4gUk9VTkRfRkxPT1Igcm91bmRpbmcgbW9kZS4KLSAgICAgICAgICAgIGFucyA9IHNlbGYuY29weV9hYnMoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYW5zID0gRGVjaW1hbChzZWxmKQotCi0gICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgZGVmIF9fYWJzX18oc2VsZiwgcm91bmQ9VHJ1ZSwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgYWJzb2x1dGUgdmFsdWUgb2Ygc2VsZi4KLQotICAgICAgICBJZiB0aGUga2V5d29yZCBhcmd1bWVudCAncm91bmQnIGlzIGZhbHNlLCBkbyBub3Qgcm91bmQuICBUaGUKLSAgICAgICAgZXhwcmVzc2lvbiBzZWxmLl9fYWJzX18ocm91bmQ9RmFsc2UpIGlzIGVxdWl2YWxlbnQgdG8KLSAgICAgICAgc2VsZi5jb3B5X2FicygpLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgbm90IHJvdW5kOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29weV9hYnMoKQotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgc2VsZi5fc2lnbjoKLSAgICAgICAgICAgIGFucyA9IHNlbGYuX19uZWdfXyhjb250ZXh0PWNvbnRleHQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9fcG9zX18oY29udGV4dD1jb250ZXh0KQotCi0gICAgICAgIHJldHVybiBhbnMKLQotICAgIGRlZiBfX2FkZF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIHNlbGYgKyBvdGhlci4KLQotICAgICAgICAtSU5GICsgSU5GIChvciB0aGUgcmV2ZXJzZSkgY2F1c2UgSW52YWxpZE9wZXJhdGlvbiBlcnJvcnMuCi0gICAgICAgICIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICAjIElmIGJvdGggSU5GLCBzYW1lIHNpZ24gPT4gc2FtZSBhcyBib3RoLCBvcHBvc2l0ZSA9PiBlcnJvci4KLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9zaWduICE9IG90aGVyLl9zaWduIGFuZCBvdGhlci5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJy1JTkYgKyBJTkYnKQotICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0gICAgICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKG90aGVyKSAgIyBDYW4ndCBib3RoIGJlIGluZmluaXR5IGhlcmUKLQotICAgICAgICBleHAgPSBtaW4oc2VsZi5fZXhwLCBvdGhlci5fZXhwKQotICAgICAgICBuZWdhdGl2ZXplcm8gPSAwCi0gICAgICAgIGlmIGNvbnRleHQucm91bmRpbmcgPT0gUk9VTkRfRkxPT1IgYW5kIHNlbGYuX3NpZ24gIT0gb3RoZXIuX3NpZ246Ci0gICAgICAgICAgICAjIElmIHRoZSBhbnN3ZXIgaXMgMCwgdGhlIHNpZ24gc2hvdWxkIGJlIG5lZ2F0aXZlLCBpbiB0aGlzIGNhc2UuCi0gICAgICAgICAgICBuZWdhdGl2ZXplcm8gPSAxCi0KLSAgICAgICAgaWYgbm90IHNlbGYgYW5kIG5vdCBvdGhlcjoKLSAgICAgICAgICAgIHNpZ24gPSBtaW4oc2VsZi5fc2lnbiwgb3RoZXIuX3NpZ24pCi0gICAgICAgICAgICBpZiBuZWdhdGl2ZXplcm86Ci0gICAgICAgICAgICAgICAgc2lnbiA9IDEKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgJzAnLCBleHApCi0gICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIGFucwotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIGV4cCA9IG1heChleHAsIG90aGVyLl9leHAgLSBjb250ZXh0LnByZWMtMSkKLSAgICAgICAgICAgIGFucyA9IG90aGVyLl9yZXNjYWxlKGV4cCwgY29udGV4dC5yb3VuZGluZykKLSAgICAgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCi0gICAgICAgICAgICByZXR1cm4gYW5zCi0gICAgICAgIGlmIG5vdCBvdGhlcjoKLSAgICAgICAgICAgIGV4cCA9IG1heChleHAsIHNlbGYuX2V4cCAtIGNvbnRleHQucHJlYy0xKQotICAgICAgICAgICAgYW5zID0gc2VsZi5fcmVzY2FsZShleHAsIGNvbnRleHQucm91bmRpbmcpCi0gICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIG9wMSA9IF9Xb3JrUmVwKHNlbGYpCi0gICAgICAgIG9wMiA9IF9Xb3JrUmVwKG90aGVyKQotICAgICAgICBvcDEsIG9wMiA9IF9ub3JtYWxpemUob3AxLCBvcDIsIGNvbnRleHQucHJlYykKLQotICAgICAgICByZXN1bHQgPSBfV29ya1JlcCgpCi0gICAgICAgIGlmIG9wMS5zaWduICE9IG9wMi5zaWduOgotICAgICAgICAgICAgIyBFcXVhbCBhbmQgb3Bwb3NpdGUKLSAgICAgICAgICAgIGlmIG9wMS5pbnQgPT0gb3AyLmludDoKLSAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKG5lZ2F0aXZlemVybywgJzAnLCBleHApCi0gICAgICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0gICAgICAgICAgICBpZiBvcDEuaW50IDwgb3AyLmludDoKLSAgICAgICAgICAgICAgICBvcDEsIG9wMiA9IG9wMiwgb3AxCi0gICAgICAgICAgICAgICAgIyBPSywgbm93IGFicyhvcDEpID4gYWJzKG9wMikKLSAgICAgICAgICAgIGlmIG9wMS5zaWduID09IDE6Ci0gICAgICAgICAgICAgICAgcmVzdWx0LnNpZ24gPSAxCi0gICAgICAgICAgICAgICAgb3AxLnNpZ24sIG9wMi5zaWduID0gb3AyLnNpZ24sIG9wMS5zaWduCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlc3VsdC5zaWduID0gMAotICAgICAgICAgICAgICAgICMgU28gd2Uga25vdyB0aGUgc2lnbiwgYW5kIG9wMSA+IDAuCi0gICAgICAgIGVsaWYgb3AxLnNpZ24gPT0gMToKLSAgICAgICAgICAgIHJlc3VsdC5zaWduID0gMQotICAgICAgICAgICAgb3AxLnNpZ24sIG9wMi5zaWduID0gKDAsIDApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXN1bHQuc2lnbiA9IDAKLSAgICAgICAgIyBOb3csIG9wMSA+IGFicyhvcDIpID4gMAotCi0gICAgICAgIGlmIG9wMi5zaWduID09IDA6Ci0gICAgICAgICAgICByZXN1bHQuaW50ID0gb3AxLmludCArIG9wMi5pbnQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlc3VsdC5pbnQgPSBvcDEuaW50IC0gb3AyLmludAotCi0gICAgICAgIHJlc3VsdC5leHAgPSBvcDEuZXhwCi0gICAgICAgIGFucyA9IERlY2ltYWwocmVzdWx0KQotICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotICAgICAgICByZXR1cm4gYW5zCi0KLSAgICBfX3JhZGRfXyA9IF9fYWRkX18KLQotICAgIGRlZiBfX3N1Yl9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm4gc2VsZiAtIG90aGVyIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgIyBzZWxmIC0gb3RoZXIgaXMgY29tcHV0ZWQgYXMgc2VsZiArIG90aGVyLmNvcHlfbmVnYXRlKCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX19hZGRfXyhvdGhlci5jb3B5X25lZ2F0ZSgpLCBjb250ZXh0PWNvbnRleHQpCi0KLSAgICBkZWYgX19yc3ViX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBvdGhlciAtIHNlbGYiIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLQotICAgICAgICByZXR1cm4gb3RoZXIuX19zdWJfXyhzZWxmLCBjb250ZXh0PWNvbnRleHQpCi0KLSAgICBkZWYgX19tdWxfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJuIHNlbGYgKiBvdGhlci4KLQotICAgICAgICAoKy0pIElORiAqIDAgKG9yIGl0cyByZXZlcnNlKSByYWlzZSBJbnZhbGlkT3BlcmF0aW9uLgotICAgICAgICAiIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgcmVzdWx0c2lnbiA9IHNlbGYuX3NpZ24gXiBvdGhlci5fc2lnbgotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgIGlmIG5vdCBvdGhlcjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICcoKy0pSU5GICogMCcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtyZXN1bHRzaWduXQotCi0gICAgICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJzAgKiAoKy0pSU5GJykKLSAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3Jlc3VsdHNpZ25dCi0KLSAgICAgICAgcmVzdWx0ZXhwID0gc2VsZi5fZXhwICsgb3RoZXIuX2V4cAotCi0gICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciBtdWx0aXBseWluZyBieSB6ZXJvCi0gICAgICAgIGlmIG5vdCBzZWxmIG9yIG5vdCBvdGhlcjoKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0c2lnbiwgJzAnLCByZXN1bHRleHApCi0gICAgICAgICAgICAjIEZpeGluZyBpbiBjYXNlIHRoZSBleHBvbmVudCBpcyBvdXQgb2YgYm91bmRzCi0gICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciBtdWx0aXBseWluZyBieSBwb3dlciBvZiAxMAotICAgICAgICBpZiBzZWxmLl9pbnQgPT0gJzEnOgotICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRzaWduLCBvdGhlci5faW50LCByZXN1bHRleHApCi0gICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIGFucwotICAgICAgICBpZiBvdGhlci5faW50ID09ICcxJzoKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0c2lnbiwgc2VsZi5faW50LCByZXN1bHRleHApCi0gICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIG9wMSA9IF9Xb3JrUmVwKHNlbGYpCi0gICAgICAgIG9wMiA9IF9Xb3JrUmVwKG90aGVyKQotCi0gICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0c2lnbiwgc3RyKG9wMS5pbnQgKiBvcDIuaW50KSwgcmVzdWx0ZXhwKQotICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgICAgIHJldHVybiBhbnMKLSAgICBfX3JtdWxfXyA9IF9fbXVsX18KLQotICAgIGRlZiBfX3RydWVkaXZfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJuIHNlbGYgLyBvdGhlci4iIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgc2lnbiA9IHNlbGYuX3NpZ24gXiBvdGhlci5fc2lnbgotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpIGFuZCBvdGhlci5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnKCstKUlORi8oKy0pSU5GJykKLQotICAgICAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2lnbl0KLQotICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihDbGFtcGVkLCAnRGl2aXNpb24gYnkgaW5maW5pdHknKQotICAgICAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sICcwJywgY29udGV4dC5FdGlueSgpKQotCi0gICAgICAgICMgU3BlY2lhbCBjYXNlcyBmb3IgemVyb2VzCi0gICAgICAgIGlmIG5vdCBvdGhlcjoKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvblVuZGVmaW5lZCwgJzAgLyAwJykKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkJ5WmVybywgJ3ggLyAwJywgc2lnbikKLQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIGV4cCA9IHNlbGYuX2V4cCAtIG90aGVyLl9leHAKLSAgICAgICAgICAgIGNvZWZmID0gMAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBPSywgc28gbmVpdGhlciA9IDAsIElORiBvciBOYU4KLSAgICAgICAgICAgIHNoaWZ0ID0gbGVuKG90aGVyLl9pbnQpIC0gbGVuKHNlbGYuX2ludCkgKyBjb250ZXh0LnByZWMgKyAxCi0gICAgICAgICAgICBleHAgPSBzZWxmLl9leHAgLSBvdGhlci5fZXhwIC0gc2hpZnQKLSAgICAgICAgICAgIG9wMSA9IF9Xb3JrUmVwKHNlbGYpCi0gICAgICAgICAgICBvcDIgPSBfV29ya1JlcChvdGhlcikKLSAgICAgICAgICAgIGlmIHNoaWZ0ID49IDA6Ci0gICAgICAgICAgICAgICAgY29lZmYsIHJlbWFpbmRlciA9IGRpdm1vZChvcDEuaW50ICogMTAqKnNoaWZ0LCBvcDIuaW50KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjb2VmZiwgcmVtYWluZGVyID0gZGl2bW9kKG9wMS5pbnQsIG9wMi5pbnQgKiAxMCoqLXNoaWZ0KQotICAgICAgICAgICAgaWYgcmVtYWluZGVyOgotICAgICAgICAgICAgICAgICMgcmVzdWx0IGlzIG5vdCBleGFjdDsgYWRqdXN0IHRvIGVuc3VyZSBjb3JyZWN0IHJvdW5kaW5nCi0gICAgICAgICAgICAgICAgaWYgY29lZmYgJSA1ID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIGNvZWZmICs9IDEKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyByZXN1bHQgaXMgZXhhY3Q7IGdldCBhcyBjbG9zZSB0byBpZGVhbCBleHBvbmVudCBhcyBwb3NzaWJsZQotICAgICAgICAgICAgICAgIGlkZWFsX2V4cCA9IHNlbGYuX2V4cCAtIG90aGVyLl9leHAKLSAgICAgICAgICAgICAgICB3aGlsZSBleHAgPCBpZGVhbF9leHAgYW5kIGNvZWZmICUgMTAgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgY29lZmYgLy89IDEwCi0gICAgICAgICAgICAgICAgICAgIGV4cCArPSAxCi0KLSAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShzaWduLCBzdHIoY29lZmYpLCBleHApCi0gICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgZGVmIF9kaXZpZGUoc2VsZiwgb3RoZXIsIGNvbnRleHQpOgotICAgICAgICAiIiJSZXR1cm4gKHNlbGYgLy8gb3RoZXIsIHNlbGYgJSBvdGhlciksIHRvIGNvbnRleHQucHJlYyBwcmVjaXNpb24uCi0KLSAgICAgICAgQXNzdW1lcyB0aGF0IG5laXRoZXIgc2VsZiBub3Igb3RoZXIgaXMgYSBOYU4sIHRoYXQgc2VsZiBpcyBub3QKLSAgICAgICAgaW5maW5pdGUgYW5kIHRoYXQgb3RoZXIgaXMgbm9uemVyby4KLSAgICAgICAgIiIiCi0gICAgICAgIHNpZ24gPSBzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ24KLSAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgIGlkZWFsX2V4cCA9IHNlbGYuX2V4cAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWRlYWxfZXhwID0gbWluKHNlbGYuX2V4cCwgb3RoZXIuX2V4cCkKLQotICAgICAgICBleHBkaWZmID0gc2VsZi5hZGp1c3RlZCgpIC0gb3RoZXIuYWRqdXN0ZWQoKQotICAgICAgICBpZiBub3Qgc2VsZiBvciBvdGhlci5faXNpbmZpbml0eSgpIG9yIGV4cGRpZmYgPD0gLTI6Ci0gICAgICAgICAgICByZXR1cm4gKF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgJzAnLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVzY2FsZShpZGVhbF9leHAsIGNvbnRleHQucm91bmRpbmcpKQotICAgICAgICBpZiBleHBkaWZmIDw9IGNvbnRleHQucHJlYzoKLSAgICAgICAgICAgIG9wMSA9IF9Xb3JrUmVwKHNlbGYpCi0gICAgICAgICAgICBvcDIgPSBfV29ya1JlcChvdGhlcikKLSAgICAgICAgICAgIGlmIG9wMS5leHAgPj0gb3AyLmV4cDoKLSAgICAgICAgICAgICAgICBvcDEuaW50ICo9IDEwKioob3AxLmV4cCAtIG9wMi5leHApCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG9wMi5pbnQgKj0gMTAqKihvcDIuZXhwIC0gb3AxLmV4cCkKLSAgICAgICAgICAgIHEsIHIgPSBkaXZtb2Qob3AxLmludCwgb3AyLmludCkKLSAgICAgICAgICAgIGlmIHEgPCAxMCoqY29udGV4dC5wcmVjOgotICAgICAgICAgICAgICAgIHJldHVybiAoX2RlY19mcm9tX3RyaXBsZShzaWduLCBzdHIocSksIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBzdHIociksIGlkZWFsX2V4cCkpCi0KLSAgICAgICAgIyBIZXJlIHRoZSBxdW90aWVudCBpcyB0b28gbGFyZ2UgdG8gYmUgcmVwcmVzZW50YWJsZQotICAgICAgICBhbnMgPSBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkltcG9zc2libGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdW90aWVudCB0b28gbGFyZ2UgaW4gLy8sICUgb3IgZGl2bW9kJykKLSAgICAgICAgcmV0dXJuIGFucywgYW5zCi0KLSAgICBkZWYgX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJTd2FwcyBzZWxmL290aGVyIGFuZCByZXR1cm5zIF9fdHJ1ZWRpdl9fLiIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotICAgICAgICByZXR1cm4gb3RoZXIuX190cnVlZGl2X18oc2VsZiwgY29udGV4dD1jb250ZXh0KQotCi0gICAgZGVmIF9fZGl2bW9kX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm4gKHNlbGYgLy8gb3RoZXIsIHNlbGYgJSBvdGhlcikKLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiAoYW5zLCBhbnMpCi0KLSAgICAgICAgc2lnbiA9IHNlbGYuX3NpZ24gXiBvdGhlci5fc2lnbgotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgIGFucyA9IGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdkaXZtb2QoSU5GLCBJTkYpJykKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zLCBhbnMKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIChfU2lnbmVkSW5maW5pdHlbc2lnbl0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnSU5GICUgeCcpKQotCi0gICAgICAgIGlmIG5vdCBvdGhlcjoKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgICAgIGFucyA9IGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uVW5kZWZpbmVkLCAnZGl2bW9kKDAsIDApJykKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zLCBhbnMKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIChjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkJ5WmVybywgJ3ggLy8gMCcsIHNpZ24pLAotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3ggJSAwJykpCi0KLSAgICAgICAgcXVvdGllbnQsIHJlbWFpbmRlciA9IHNlbGYuX2RpdmlkZShvdGhlciwgY29udGV4dCkKLSAgICAgICAgcmVtYWluZGVyID0gcmVtYWluZGVyLl9maXgoY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHF1b3RpZW50LCByZW1haW5kZXIKLQotICAgIGRlZiBfX3JkaXZtb2RfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiU3dhcHMgc2VsZi9vdGhlciBhbmQgcmV0dXJucyBfX2Rpdm1vZF9fLiIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotICAgICAgICByZXR1cm4gb3RoZXIuX19kaXZtb2RfXyhzZWxmLCBjb250ZXh0PWNvbnRleHQpCi0KLSAgICBkZWYgX19tb2RfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYgJSBvdGhlcgotICAgICAgICAiIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnSU5GICUgeCcpCi0gICAgICAgIGVsaWYgbm90IG90aGVyOgotICAgICAgICAgICAgaWYgc2VsZjoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3ggJSAwJykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uVW5kZWZpbmVkLCAnMCAlIDAnKQotCi0gICAgICAgIHJlbWFpbmRlciA9IHNlbGYuX2RpdmlkZShvdGhlciwgY29udGV4dClbMV0KLSAgICAgICAgcmVtYWluZGVyID0gcmVtYWluZGVyLl9maXgoY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHJlbWFpbmRlcgotCi0gICAgZGVmIF9fcm1vZF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJTd2FwcyBzZWxmL290aGVyIGFuZCByZXR1cm5zIF9fbW9kX18uIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgICAgIHJldHVybiBvdGhlci5fX21vZF9fKHNlbGYsIGNvbnRleHQ9Y29udGV4dCkKLQotICAgIGRlZiByZW1haW5kZXJfbmVhcihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJlbWFpbmRlciBuZWFyZXN0IHRvIDAtICBhYnMocmVtYWluZGVyLW5lYXIpIDw9IG90aGVyLzIKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgICMgc2VsZiA9PSArLy1pbmZpbml0eSAtPiBJbnZhbGlkT3BlcmF0aW9uCi0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZW1haW5kZXJfbmVhcihpbmZpbml0eSwgeCknKQotCi0gICAgICAgICMgb3RoZXIgPT0gMCAtPiBlaXRoZXIgSW52YWxpZE9wZXJhdGlvbiBvciBEaXZpc2lvblVuZGVmaW5lZAotICAgICAgICBpZiBub3Qgb3RoZXI6Ci0gICAgICAgICAgICBpZiBzZWxmOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVtYWluZGVyX25lYXIoeCwgMCknKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25VbmRlZmluZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZW1haW5kZXJfbmVhcigwLCAwKScpCi0KLSAgICAgICAgIyBvdGhlciA9ICsvLWluZmluaXR5IC0+IHJlbWFpbmRlciA9IHNlbGYKLSAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgIGFucyA9IERlY2ltYWwoc2VsZikKLSAgICAgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgICAgICMgc2VsZiA9IDAgLT4gcmVtYWluZGVyID0gc2VsZiwgd2l0aCBpZGVhbCBleHBvbmVudAotICAgICAgICBpZGVhbF9leHBvbmVudCA9IG1pbihzZWxmLl9leHAsIG90aGVyLl9leHApCi0gICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMCcsIGlkZWFsX2V4cG9uZW50KQotICAgICAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCi0KLSAgICAgICAgIyBjYXRjaCBtb3N0IGNhc2VzIG9mIGxhcmdlIG9yIHNtYWxsIHF1b3RpZW50Ci0gICAgICAgIGV4cGRpZmYgPSBzZWxmLmFkanVzdGVkKCkgLSBvdGhlci5hZGp1c3RlZCgpCi0gICAgICAgIGlmIGV4cGRpZmYgPj0gY29udGV4dC5wcmVjICsgMToKLSAgICAgICAgICAgICMgZXhwZGlmZiA+PSBwcmVjKzEgPT4gYWJzKHNlbGYvb3RoZXIpID4gMTAqKnByZWMKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkltcG9zc2libGUpCi0gICAgICAgIGlmIGV4cGRpZmYgPD0gLTI6Ci0gICAgICAgICAgICAjIGV4cGRpZmYgPD0gLTIgPT4gYWJzKHNlbGYvb3RoZXIpIDwgMC4xCi0gICAgICAgICAgICBhbnMgPSBzZWxmLl9yZXNjYWxlKGlkZWFsX2V4cG9uZW50LCBjb250ZXh0LnJvdW5kaW5nKQotICAgICAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCi0KLSAgICAgICAgIyBhZGp1c3QgYm90aCBhcmd1bWVudHMgdG8gaGF2ZSB0aGUgc2FtZSBleHBvbmVudCwgdGhlbiBkaXZpZGUKLSAgICAgICAgb3AxID0gX1dvcmtSZXAoc2VsZikKLSAgICAgICAgb3AyID0gX1dvcmtSZXAob3RoZXIpCi0gICAgICAgIGlmIG9wMS5leHAgPj0gb3AyLmV4cDoKLSAgICAgICAgICAgIG9wMS5pbnQgKj0gMTAqKihvcDEuZXhwIC0gb3AyLmV4cCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9wMi5pbnQgKj0gMTAqKihvcDIuZXhwIC0gb3AxLmV4cCkKLSAgICAgICAgcSwgciA9IGRpdm1vZChvcDEuaW50LCBvcDIuaW50KQotICAgICAgICAjIHJlbWFpbmRlciBpcyByKjEwKippZGVhbF9leHBvbmVudDsgb3RoZXIgaXMgKy8tb3AyLmludCAqCi0gICAgICAgICMgMTAqKmlkZWFsX2V4cG9uZW50LiAgIEFwcGx5IGNvcnJlY3Rpb24gdG8gZW5zdXJlIHRoYXQKLSAgICAgICAgIyBhYnMocmVtYWluZGVyKSA8PSBhYnMob3RoZXIpLzIKLSAgICAgICAgaWYgMipyICsgKHEmMSkgPiBvcDIuaW50OgotICAgICAgICAgICAgciAtPSBvcDIuaW50Ci0gICAgICAgICAgICBxICs9IDEKLQotICAgICAgICBpZiBxID49IDEwKipjb250ZXh0LnByZWM6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25JbXBvc3NpYmxlKQotCi0gICAgICAgICMgcmVzdWx0IGhhcyBzYW1lIHNpZ24gYXMgc2VsZiB1bmxlc3MgciBpcyBuZWdhdGl2ZQotICAgICAgICBzaWduID0gc2VsZi5fc2lnbgotICAgICAgICBpZiByIDwgMDoKLSAgICAgICAgICAgIHNpZ24gPSAxLXNpZ24KLSAgICAgICAgICAgIHIgPSAtcgotCi0gICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgc3RyKHIpLCBpZGVhbF9leHBvbmVudCkKLSAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCi0KLSAgICBkZWYgX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJzZWxmIC8vIG90aGVyIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnSU5GIC8vIElORicpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduXQotCi0gICAgICAgIGlmIG5vdCBvdGhlcjoKLSAgICAgICAgICAgIGlmIHNlbGY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uQnlaZXJvLCAneCAvLyAwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25VbmRlZmluZWQsICcwIC8vIDAnKQotCi0gICAgICAgIHJldHVybiBzZWxmLl9kaXZpZGUob3RoZXIsIGNvbnRleHQpWzBdCi0KLSAgICBkZWYgX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiU3dhcHMgc2VsZi9vdGhlciBhbmQgcmV0dXJucyBfX2Zsb29yZGl2X18uIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgICAgIHJldHVybiBvdGhlci5fX2Zsb29yZGl2X18oc2VsZiwgY29udGV4dD1jb250ZXh0KQotCi0gICAgZGVmIF9fZmxvYXRfXyhzZWxmKToKLSAgICAgICAgIiIiRmxvYXQgcmVwcmVzZW50YXRpb24uIiIiCi0gICAgICAgIGlmIHNlbGYuX2lzbmFuKCk6Ci0gICAgICAgICAgICBpZiBzZWxmLmlzX3NuYW4oKToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3QgY29udmVydCBzaWduYWxpbmcgTmFOIHRvIGZsb2F0IikKLSAgICAgICAgICAgIHMgPSAiLW5hbiIgaWYgc2VsZi5fc2lnbiBlbHNlICJuYW4iCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzID0gc3RyKHNlbGYpCi0gICAgICAgIHJldHVybiBmbG9hdChzKQotCi0gICAgZGVmIF9faW50X18oc2VsZik6Ci0gICAgICAgICIiIkNvbnZlcnRzIHNlbGYgdG8gYW4gaW50LCB0cnVuY2F0aW5nIGlmIG5lY2Vzc2FyeS4iIiIKLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGlmIHNlbGYuX2lzbmFuKCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIiKQotICAgICAgICAgICAgZWxpZiBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiQ2Fubm90IGNvbnZlcnQgaW5maW5pdHkgdG8gaW50ZWdlciIpCi0gICAgICAgIHMgPSAoLTEpKipzZWxmLl9zaWduCi0gICAgICAgIGlmIHNlbGYuX2V4cCA+PSAwOgotICAgICAgICAgICAgcmV0dXJuIHMqaW50KHNlbGYuX2ludCkqMTAqKnNlbGYuX2V4cAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHMqaW50KHNlbGYuX2ludFs6c2VsZi5fZXhwXSBvciAnMCcpCi0KLSAgICBfX3RydW5jX18gPSBfX2ludF9fCi0KLSAgICBkZWYgcmVhbChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYKLSAgICByZWFsID0gcHJvcGVydHkocmVhbCkKLQotICAgIGRlZiBpbWFnKHNlbGYpOgotICAgICAgICByZXR1cm4gRGVjaW1hbCgwKQotICAgIGltYWcgPSBwcm9wZXJ0eShpbWFnKQotCi0gICAgZGVmIGNvbmp1Z2F0ZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBfX2NvbXBsZXhfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGNvbXBsZXgoZmxvYXQoc2VsZikpCi0KLSAgICBkZWYgX2ZpeF9uYW4oc2VsZiwgY29udGV4dCk6Ci0gICAgICAgICIiIkRlY2FwaXRhdGUgdGhlIHBheWxvYWQgb2YgYSBOYU4gdG8gZml0IHRoZSBjb250ZXh0IiIiCi0gICAgICAgIHBheWxvYWQgPSBzZWxmLl9pbnQKLQotICAgICAgICAjIG1heGltdW0gbGVuZ3RoIG9mIHBheWxvYWQgaXMgcHJlY2lzaW9uIGlmIGNsYW1wPTAsCi0gICAgICAgICMgcHJlY2lzaW9uLTEgaWYgY2xhbXA9MS4KLSAgICAgICAgbWF4X3BheWxvYWRfbGVuID0gY29udGV4dC5wcmVjIC0gY29udGV4dC5jbGFtcAotICAgICAgICBpZiBsZW4ocGF5bG9hZCkgPiBtYXhfcGF5bG9hZF9sZW46Ci0gICAgICAgICAgICBwYXlsb2FkID0gcGF5bG9hZFtsZW4ocGF5bG9hZCktbWF4X3BheWxvYWRfbGVuOl0ubHN0cmlwKCcwJykKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sIHBheWxvYWQsIHNlbGYuX2V4cCwgVHJ1ZSkKLSAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKLQotICAgIGRlZiBfZml4KHNlbGYsIGNvbnRleHQpOgotICAgICAgICAiIiJSb3VuZCBpZiBpdCBpcyBuZWNlc3NhcnkgdG8ga2VlcCBzZWxmIHdpdGhpbiBwcmVjIHByZWNpc2lvbi4KLQotICAgICAgICBSb3VuZHMgYW5kIGZpeGVzIHRoZSBleHBvbmVudC4gIERvZXMgbm90IHJhaXNlIG9uIGEgc05hTi4KLQotICAgICAgICBBcmd1bWVudHM6Ci0gICAgICAgIHNlbGYgLSBEZWNpbWFsIGluc3RhbmNlCi0gICAgICAgIGNvbnRleHQgLSBjb250ZXh0IHVzZWQuCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBpZiBzZWxmLl9pc25hbigpOgotICAgICAgICAgICAgICAgICMgZGVjYXBpdGF0ZSBwYXlsb2FkIGlmIG5lY2Vzc2FyeQotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maXhfbmFuKGNvbnRleHQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgc2VsZiBpcyArLy1JbmZpbml0eTsgcmV0dXJuIHVuYWx0ZXJlZAotICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0KLSAgICAgICAgIyBpZiBzZWxmIGlzIHplcm8gdGhlbiBleHBvbmVudCBzaG91bGQgYmUgYmV0d2VlbiBFdGlueSBhbmQKLSAgICAgICAgIyBFbWF4IGlmIGNsYW1wPT0wLCBhbmQgYmV0d2VlbiBFdGlueSBhbmQgRXRvcCBpZiBjbGFtcD09MS4KLSAgICAgICAgRXRpbnkgPSBjb250ZXh0LkV0aW55KCkKLSAgICAgICAgRXRvcCA9IGNvbnRleHQuRXRvcCgpCi0gICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgZXhwX21heCA9IFtjb250ZXh0LkVtYXgsIEV0b3BdW2NvbnRleHQuY2xhbXBdCi0gICAgICAgICAgICBuZXdfZXhwID0gbWluKG1heChzZWxmLl9leHAsIEV0aW55KSwgZXhwX21heCkKLSAgICAgICAgICAgIGlmIG5ld19leHAgIT0gc2VsZi5fZXhwOgotICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKENsYW1wZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzAnLCBuZXdfZXhwKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotCi0gICAgICAgICMgZXhwX21pbiBpcyB0aGUgc21hbGxlc3QgYWxsb3dhYmxlIGV4cG9uZW50IG9mIHRoZSByZXN1bHQsCi0gICAgICAgICMgZXF1YWwgdG8gbWF4KHNlbGYuYWRqdXN0ZWQoKS1jb250ZXh0LnByZWMrMSwgRXRpbnkpCi0gICAgICAgIGV4cF9taW4gPSBsZW4oc2VsZi5faW50KSArIHNlbGYuX2V4cCAtIGNvbnRleHQucHJlYwotICAgICAgICBpZiBleHBfbWluID4gRXRvcDoKLSAgICAgICAgICAgICMgb3ZlcmZsb3c6IGV4cF9taW4gPiBFdG9wIGlmZiBzZWxmLmFkanVzdGVkKCkgPiBFbWF4Ci0gICAgICAgICAgICBhbnMgPSBjb250ZXh0Ll9yYWlzZV9lcnJvcihPdmVyZmxvdywgJ2Fib3ZlIEVtYXgnLCBzZWxmLl9zaWduKQotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCi0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgc2VsZl9pc19zdWJub3JtYWwgPSBleHBfbWluIDwgRXRpbnkKLSAgICAgICAgaWYgc2VsZl9pc19zdWJub3JtYWw6Ci0gICAgICAgICAgICBleHBfbWluID0gRXRpbnkKLQotICAgICAgICAjIHJvdW5kIGlmIHNlbGYgaGFzIHRvbyBtYW55IGRpZ2l0cwotICAgICAgICBpZiBzZWxmLl9leHAgPCBleHBfbWluOgotICAgICAgICAgICAgZGlnaXRzID0gbGVuKHNlbGYuX2ludCkgKyBzZWxmLl9leHAgLSBleHBfbWluCi0gICAgICAgICAgICBpZiBkaWdpdHMgPCAwOgotICAgICAgICAgICAgICAgIHNlbGYgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcxJywgZXhwX21pbi0xKQotICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDAKLSAgICAgICAgICAgIHJvdW5kaW5nX21ldGhvZCA9IHNlbGYuX3BpY2tfcm91bmRpbmdfZnVuY3Rpb25bY29udGV4dC5yb3VuZGluZ10KLSAgICAgICAgICAgIGNoYW5nZWQgPSByb3VuZGluZ19tZXRob2Qoc2VsZiwgZGlnaXRzKQotICAgICAgICAgICAgY29lZmYgPSBzZWxmLl9pbnRbOmRpZ2l0c10gb3IgJzAnCi0gICAgICAgICAgICBpZiBjaGFuZ2VkID4gMDoKLSAgICAgICAgICAgICAgICBjb2VmZiA9IHN0cihpbnQoY29lZmYpKzEpCi0gICAgICAgICAgICAgICAgaWYgbGVuKGNvZWZmKSA+IGNvbnRleHQucHJlYzoKLSAgICAgICAgICAgICAgICAgICAgY29lZmYgPSBjb2VmZls6LTFdCi0gICAgICAgICAgICAgICAgICAgIGV4cF9taW4gKz0gMQotCi0gICAgICAgICAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIHJvdW5kaW5nIHB1c2hlZCB0aGUgZXhwb25lbnQgb3V0IG9mIHJhbmdlCi0gICAgICAgICAgICBpZiBleHBfbWluID4gRXRvcDoKLSAgICAgICAgICAgICAgICBhbnMgPSBjb250ZXh0Ll9yYWlzZV9lcnJvcihPdmVyZmxvdywgJ2Fib3ZlIEVtYXgnLCBzZWxmLl9zaWduKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sIGNvZWZmLCBleHBfbWluKQotCi0gICAgICAgICAgICAjIHJhaXNlIHRoZSBhcHByb3ByaWF0ZSBzaWduYWxzLCB0YWtpbmcgY2FyZSB0byByZXNwZWN0Ci0gICAgICAgICAgICAjIHRoZSBwcmVjZWRlbmNlIGRlc2NyaWJlZCBpbiB0aGUgc3BlY2lmaWNhdGlvbgotICAgICAgICAgICAgaWYgY2hhbmdlZCBhbmQgc2VsZl9pc19zdWJub3JtYWw6Ci0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoVW5kZXJmbG93KQotICAgICAgICAgICAgaWYgc2VsZl9pc19zdWJub3JtYWw6Ci0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoU3Vibm9ybWFsKQotICAgICAgICAgICAgaWYgY2hhbmdlZDoKLSAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKLSAgICAgICAgICAgIGlmIG5vdCBhbnM6Ci0gICAgICAgICAgICAgICAgIyByYWlzZSBDbGFtcGVkIG9uIHVuZGVyZmxvdyB0byAwCi0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoQ2xhbXBlZCkKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICBpZiBzZWxmX2lzX3N1Ym5vcm1hbDoKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFN1Ym5vcm1hbCkKLQotICAgICAgICAjIGZvbGQgZG93biBpZiBjbGFtcCA9PSAxIGFuZCBzZWxmIGhhcyB0b28gZmV3IGRpZ2l0cwotICAgICAgICBpZiBjb250ZXh0LmNsYW1wID09IDEgYW5kIHNlbGYuX2V4cCA+IEV0b3A6Ci0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihDbGFtcGVkKQotICAgICAgICAgICAgc2VsZl9wYWRkZWQgPSBzZWxmLl9pbnQgKyAnMCcqKHNlbGYuX2V4cCAtIEV0b3ApCi0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBzZWxmX3BhZGRlZCwgRXRvcCkKLQotICAgICAgICAjIGhlcmUgc2VsZiB3YXMgcmVwcmVzZW50YWJsZSB0byBiZWdpbiB3aXRoOyByZXR1cm4gdW5jaGFuZ2VkCi0gICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0KLSAgICAjIGZvciBlYWNoIG9mIHRoZSByb3VuZGluZyBmdW5jdGlvbnMgYmVsb3c6Ci0gICAgIyAgIHNlbGYgaXMgYSBmaW5pdGUsIG5vbnplcm8gRGVjaW1hbAotICAgICMgICBwcmVjIGlzIGFuIGludGVnZXIgc2F0aXNmeWluZyAwIDw9IHByZWMgPCBsZW4oc2VsZi5faW50KQotICAgICMKLSAgICAjIGVhY2ggZnVuY3Rpb24gcmV0dXJucyBlaXRoZXIgLTEsIDAsIG9yIDEsIGFzIGZvbGxvd3M6Ci0gICAgIyAgIDEgaW5kaWNhdGVzIHRoYXQgc2VsZiBzaG91bGQgYmUgcm91bmRlZCB1cCAoYXdheSBmcm9tIHplcm8pCi0gICAgIyAgIDAgaW5kaWNhdGVzIHRoYXQgc2VsZiBzaG91bGQgYmUgdHJ1bmNhdGVkLCBhbmQgdGhhdCBhbGwgdGhlCi0gICAgIyAgICAgZGlnaXRzIHRvIGJlIHRydW5jYXRlZCBhcmUgemVyb3MgKHNvIHRoZSB2YWx1ZSBpcyB1bmNoYW5nZWQpCi0gICAgIyAgLTEgaW5kaWNhdGVzIHRoYXQgdGhlcmUgYXJlIG5vbnplcm8gZGlnaXRzIHRvIGJlIHRydW5jYXRlZAotCi0gICAgZGVmIF9yb3VuZF9kb3duKHNlbGYsIHByZWMpOgotICAgICAgICAiIiJBbHNvIGtub3duIGFzIHJvdW5kLXRvd2FyZHMtMCwgdHJ1bmNhdGUuIiIiCi0gICAgICAgIGlmIF9hbGxfemVyb3Moc2VsZi5faW50LCBwcmVjKToKLSAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gLTEKLQotICAgIGRlZiBfcm91bmRfdXAoc2VsZiwgcHJlYyk6Ci0gICAgICAgICIiIlJvdW5kcyBhd2F5IGZyb20gMC4iIiIKLSAgICAgICAgcmV0dXJuIC1zZWxmLl9yb3VuZF9kb3duKHByZWMpCi0KLSAgICBkZWYgX3JvdW5kX2hhbGZfdXAoc2VsZiwgcHJlYyk6Ci0gICAgICAgICIiIlJvdW5kcyA1IHVwIChhd2F5IGZyb20gMCkiIiIKLSAgICAgICAgaWYgc2VsZi5faW50W3ByZWNdIGluICc1Njc4OSc6Ci0gICAgICAgICAgICByZXR1cm4gMQotICAgICAgICBlbGlmIF9hbGxfemVyb3Moc2VsZi5faW50LCBwcmVjKToKLSAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gLTEKLQotICAgIGRlZiBfcm91bmRfaGFsZl9kb3duKHNlbGYsIHByZWMpOgotICAgICAgICAiIiJSb3VuZCA1IGRvd24iIiIKLSAgICAgICAgaWYgX2V4YWN0X2hhbGYoc2VsZi5faW50LCBwcmVjKToKLSAgICAgICAgICAgIHJldHVybiAtMQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JvdW5kX2hhbGZfdXAocHJlYykKLQotICAgIGRlZiBfcm91bmRfaGFsZl9ldmVuKHNlbGYsIHByZWMpOgotICAgICAgICAiIiJSb3VuZCA1IHRvIGV2ZW4sIHJlc3QgdG8gbmVhcmVzdC4iIiIKLSAgICAgICAgaWYgX2V4YWN0X2hhbGYoc2VsZi5faW50LCBwcmVjKSBhbmQgXAotICAgICAgICAgICAgICAgIChwcmVjID09IDAgb3Igc2VsZi5faW50W3ByZWMtMV0gaW4gJzAyNDY4Jyk6Ci0gICAgICAgICAgICByZXR1cm4gLTEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb3VuZF9oYWxmX3VwKHByZWMpCi0KLSAgICBkZWYgX3JvdW5kX2NlaWxpbmcoc2VsZiwgcHJlYyk6Ci0gICAgICAgICIiIlJvdW5kcyB1cCAobm90IGF3YXkgZnJvbSAwIGlmIG5lZ2F0aXZlLikiIiIKLSAgICAgICAgaWYgc2VsZi5fc2lnbjoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb3VuZF9kb3duKHByZWMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gLXNlbGYuX3JvdW5kX2Rvd24ocHJlYykKLQotICAgIGRlZiBfcm91bmRfZmxvb3Ioc2VsZiwgcHJlYyk6Ci0gICAgICAgICIiIlJvdW5kcyBkb3duIChub3QgdG93YXJkcyAwIGlmIG5lZ2F0aXZlKSIiIgotICAgICAgICBpZiBub3Qgc2VsZi5fc2lnbjoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb3VuZF9kb3duKHByZWMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gLXNlbGYuX3JvdW5kX2Rvd24ocHJlYykKLQotICAgIGRlZiBfcm91bmRfMDV1cChzZWxmLCBwcmVjKToKLSAgICAgICAgIiIiUm91bmQgZG93biB1bmxlc3MgZGlnaXQgcHJlYy0xIGlzIDAgb3IgNS4iIiIKLSAgICAgICAgaWYgcHJlYyBhbmQgc2VsZi5faW50W3ByZWMtMV0gbm90IGluICcwNSc6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcm91bmRfZG93bihwcmVjKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIC1zZWxmLl9yb3VuZF9kb3duKHByZWMpCi0KLSAgICBfcGlja19yb3VuZGluZ19mdW5jdGlvbiA9IGRpY3QoCi0gICAgICAgIFJPVU5EX0RPV04gPSBfcm91bmRfZG93biwKLSAgICAgICAgUk9VTkRfVVAgPSBfcm91bmRfdXAsCi0gICAgICAgIFJPVU5EX0hBTEZfVVAgPSBfcm91bmRfaGFsZl91cCwKLSAgICAgICAgUk9VTkRfSEFMRl9ET1dOID0gX3JvdW5kX2hhbGZfZG93biwKLSAgICAgICAgUk9VTkRfSEFMRl9FVkVOID0gX3JvdW5kX2hhbGZfZXZlbiwKLSAgICAgICAgUk9VTkRfQ0VJTElORyA9IF9yb3VuZF9jZWlsaW5nLAotICAgICAgICBST1VORF9GTE9PUiA9IF9yb3VuZF9mbG9vciwKLSAgICAgICAgUk9VTkRfMDVVUCA9IF9yb3VuZF8wNXVwLAotICAgICkKLQotICAgIGRlZiBfX3JvdW5kX18oc2VsZiwgbj1Ob25lKToKLSAgICAgICAgIiIiUm91bmQgc2VsZiB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLCBvciB0byBhIGdpdmVuIHByZWNpc2lvbi4KLQotICAgICAgICBJZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBzdXBwbGllZCwgcm91bmQgYSBmaW5pdGUgRGVjaW1hbAotICAgICAgICBpbnN0YW5jZSBzZWxmIHRvIHRoZSBuZWFyZXN0IGludGVnZXIuICBJZiBzZWxmIGlzIGluZmluaXRlIG9yCi0gICAgICAgIGEgTmFOIHRoZW4gYSBQeXRob24gZXhjZXB0aW9uIGlzIHJhaXNlZC4gIElmIHNlbGYgaXMgZmluaXRlCi0gICAgICAgIGFuZCBsaWVzIGV4YWN0bHkgaGFsZndheSBiZXR3ZWVuIHR3byBpbnRlZ2VycyB0aGVuIGl0IGlzCi0gICAgICAgIHJvdW5kZWQgdG8gdGhlIGludGVnZXIgd2l0aCBldmVuIGxhc3QgZGlnaXQuCi0KLSAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJzEyMy40NTYnKSkKLSAgICAgICAgMTIzCi0gICAgICAgID4+PiByb3VuZChEZWNpbWFsKCctNDU2Ljc4OScpKQotICAgICAgICAtNDU3Ci0gICAgICAgID4+PiByb3VuZChEZWNpbWFsKCctMy4wJykpCi0gICAgICAgIC0zCi0gICAgICAgID4+PiByb3VuZChEZWNpbWFsKCcyLjUnKSkKLSAgICAgICAgMgotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMy41JykpCi0gICAgICAgIDQKLSAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJ0luZicpKQotICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAgICAgLi4uCi0gICAgICAgIE92ZXJmbG93RXJyb3I6IGNhbm5vdCByb3VuZCBhbiBpbmZpbml0eQotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgICAgICAuLi4KLSAgICAgICAgVmFsdWVFcnJvcjogY2Fubm90IHJvdW5kIGEgTmFOCi0KLSAgICAgICAgSWYgYSBzZWNvbmQgYXJndW1lbnQgbiBpcyBzdXBwbGllZCwgc2VsZiBpcyByb3VuZGVkIHRvIG4KLSAgICAgICAgZGVjaW1hbCBwbGFjZXMgdXNpbmcgdGhlIHJvdW5kaW5nIG1vZGUgZm9yIHRoZSBjdXJyZW50Ci0gICAgICAgIGNvbnRleHQuCi0KLSAgICAgICAgRm9yIGFuIGludGVnZXIgbiwgcm91bmQoc2VsZiwgLW4pIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0bwotICAgICAgICBzZWxmLnF1YW50aXplKERlY2ltYWwoJzFFbicpKS4KLQotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMTIzLjQ1NicpLCAwKQotICAgICAgICBEZWNpbWFsKCcxMjMnKQotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMTIzLjQ1NicpLCAyKQotICAgICAgICBEZWNpbWFsKCcxMjMuNDYnKQotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMTIzLjQ1NicpLCAtMikKLSAgICAgICAgRGVjaW1hbCgnMUUrMicpCi0gICAgICAgID4+PiByb3VuZChEZWNpbWFsKCctSW5maW5pdHknKSwgMzcpCi0gICAgICAgIERlY2ltYWwoJ05hTicpCi0gICAgICAgID4+PiByb3VuZChEZWNpbWFsKCdzTmFOMTIzJyksIDApCi0gICAgICAgIERlY2ltYWwoJ05hTjEyMycpCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG4gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAjIHR3by1hcmd1bWVudCBmb3JtOiB1c2UgdGhlIGVxdWl2YWxlbnQgcXVhbnRpemUgY2FsbAotICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobiwgaW50KToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ1NlY29uZCBhcmd1bWVudCB0byByb3VuZCBzaG91bGQgYmUgaW50ZWdyYWwnKQotICAgICAgICAgICAgZXhwID0gX2RlY19mcm9tX3RyaXBsZSgwLCAnMScsIC1uKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYucXVhbnRpemUoZXhwKQotCi0gICAgICAgICMgb25lLWFyZ3VtZW50IGZvcm0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGlmIHNlbGYuaXNfbmFuKCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IHJvdW5kIGEgTmFOIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiY2Fubm90IHJvdW5kIGFuIGluZmluaXR5IikKLSAgICAgICAgcmV0dXJuIGludChzZWxmLl9yZXNjYWxlKDAsIFJPVU5EX0hBTEZfRVZFTikpCi0KLSAgICBkZWYgX19mbG9vcl9fKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGZsb29yIG9mIHNlbGYsIGFzIGFuIGludGVnZXIuCi0KLSAgICAgICAgRm9yIGEgZmluaXRlIERlY2ltYWwgaW5zdGFuY2Ugc2VsZiwgcmV0dXJuIHRoZSBncmVhdGVzdAotICAgICAgICBpbnRlZ2VyIG4gc3VjaCB0aGF0IG4gPD0gc2VsZi4gIElmIHNlbGYgaXMgaW5maW5pdGUgb3IgYSBOYU4KLSAgICAgICAgdGhlbiBhIFB5dGhvbiBleGNlcHRpb24gaXMgcmFpc2VkLgotCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgaWYgc2VsZi5pc19uYW4oKToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3Qgcm91bmQgYSBOYU4iKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJjYW5ub3Qgcm91bmQgYW4gaW5maW5pdHkiKQotICAgICAgICByZXR1cm4gaW50KHNlbGYuX3Jlc2NhbGUoMCwgUk9VTkRfRkxPT1IpKQotCi0gICAgZGVmIF9fY2VpbF9fKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGNlaWxpbmcgb2Ygc2VsZiwgYXMgYW4gaW50ZWdlci4KLQotICAgICAgICBGb3IgYSBmaW5pdGUgRGVjaW1hbCBpbnN0YW5jZSBzZWxmLCByZXR1cm4gdGhlIGxlYXN0IGludGVnZXIgbgotICAgICAgICBzdWNoIHRoYXQgbiA+PSBzZWxmLiAgSWYgc2VsZiBpcyBpbmZpbml0ZSBvciBhIE5hTiB0aGVuIGEKLSAgICAgICAgUHl0aG9uIGV4Y2VwdGlvbiBpcyByYWlzZWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBpZiBzZWxmLmlzX25hbigpOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCByb3VuZCBhIE5hTiIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoImNhbm5vdCByb3VuZCBhbiBpbmZpbml0eSIpCi0gICAgICAgIHJldHVybiBpbnQoc2VsZi5fcmVzY2FsZSgwLCBST1VORF9DRUlMSU5HKSkKLQotICAgIGRlZiBmbWEoc2VsZiwgb3RoZXIsIHRoaXJkLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJGdXNlZCBtdWx0aXBseS1hZGQuCi0KLSAgICAgICAgUmV0dXJucyBzZWxmKm90aGVyK3RoaXJkIHdpdGggbm8gcm91bmRpbmcgb2YgdGhlIGludGVybWVkaWF0ZQotICAgICAgICBwcm9kdWN0IHNlbGYqb3RoZXIuCi0KLSAgICAgICAgc2VsZiBhbmQgb3RoZXIgYXJlIG11bHRpcGxpZWQgdG9nZXRoZXIsIHdpdGggbm8gcm91bmRpbmcgb2YKLSAgICAgICAgdGhlIHJlc3VsdC4gIFRoZSB0aGlyZCBvcGVyYW5kIGlzIHRoZW4gYWRkZWQgdG8gdGhlIHJlc3VsdCwKLSAgICAgICAgYW5kIGEgc2luZ2xlIGZpbmFsIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotICAgICAgICB0aGlyZCA9IF9jb252ZXJ0X290aGVyKHRoaXJkLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgIyBjb21wdXRlIHByb2R1Y3Q7IHJhaXNlIEludmFsaWRPcGVyYXRpb24gaWYgZWl0aGVyIG9wZXJhbmQgaXMKLSAgICAgICAgIyBhIHNpZ25hbGluZyBOYU4gb3IgaWYgdGhlIHByb2R1Y3QgaXMgemVybyB0aW1lcyBpbmZpbml0eS4KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgICAgICBpZiBzZWxmLl9leHAgPT0gJ04nOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc05hTicsIHNlbGYpCi0gICAgICAgICAgICBpZiBvdGhlci5fZXhwID09ICdOJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLCBvdGhlcikKLSAgICAgICAgICAgIGlmIHNlbGYuX2V4cCA9PSAnbic6Ci0gICAgICAgICAgICAgICAgcHJvZHVjdCA9IHNlbGYKLSAgICAgICAgICAgIGVsaWYgb3RoZXIuX2V4cCA9PSAnbic6Ci0gICAgICAgICAgICAgICAgcHJvZHVjdCA9IG90aGVyCi0gICAgICAgICAgICBlbGlmIHNlbGYuX2V4cCA9PSAnRic6Ci0gICAgICAgICAgICAgICAgaWYgbm90IG90aGVyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJTkYgKiAwIGluIGZtYScpCi0gICAgICAgICAgICAgICAgcHJvZHVjdCA9IF9TaWduZWRJbmZpbml0eVtzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ25dCi0gICAgICAgICAgICBlbGlmIG90aGVyLl9leHAgPT0gJ0YnOgotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcwICogSU5GIGluIGZtYScpCi0gICAgICAgICAgICAgICAgcHJvZHVjdCA9IF9TaWduZWRJbmZpbml0eVtzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ25dCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcm9kdWN0ID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoaW50KHNlbGYuX2ludCkgKiBpbnQob3RoZXIuX2ludCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwICsgb3RoZXIuX2V4cCkKLQotICAgICAgICByZXR1cm4gcHJvZHVjdC5fX2FkZF9fKHRoaXJkLCBjb250ZXh0KQotCi0gICAgZGVmIF9wb3dlcl9tb2R1bG8oc2VsZiwgb3RoZXIsIG1vZHVsbywgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiVGhyZWUgYXJndW1lbnQgdmVyc2lvbiBvZiBfX3Bvd19fIiIiCi0KLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLSAgICAgICAgbW9kdWxvID0gX2NvbnZlcnRfb3RoZXIobW9kdWxvKQotICAgICAgICBpZiBtb2R1bG8gaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gbW9kdWxvCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgICMgZGVhbCB3aXRoIE5hTnM6IGlmIHRoZXJlIGFyZSBhbnkgc05hTnMgdGhlbiBmaXJzdCBvbmUgd2lucywKLSAgICAgICAgIyAoaS5lLiBiZWhhdmlvdXIgZm9yIE5hTnMgaXMgaWRlbnRpY2FsIHRvIHRoYXQgb2YgZm1hKQotICAgICAgICBzZWxmX2lzX25hbiA9IHNlbGYuX2lzbmFuKCkKLSAgICAgICAgb3RoZXJfaXNfbmFuID0gb3RoZXIuX2lzbmFuKCkKLSAgICAgICAgbW9kdWxvX2lzX25hbiA9IG1vZHVsby5faXNuYW4oKQotICAgICAgICBpZiBzZWxmX2lzX25hbiBvciBvdGhlcl9pc19uYW4gb3IgbW9kdWxvX2lzX25hbjoKLSAgICAgICAgICAgIGlmIHNlbGZfaXNfbmFuID09IDI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdzTmFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKQotICAgICAgICAgICAgaWYgb3RoZXJfaXNfbmFuID09IDI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdzTmFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcikKLSAgICAgICAgICAgIGlmIG1vZHVsb19pc19uYW4gPT0gMjoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsbykKLSAgICAgICAgICAgIGlmIHNlbGZfaXNfbmFuOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maXhfbmFuKGNvbnRleHQpCi0gICAgICAgICAgICBpZiBvdGhlcl9pc19uYW46Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyLl9maXhfbmFuKGNvbnRleHQpCi0gICAgICAgICAgICByZXR1cm4gbW9kdWxvLl9maXhfbmFuKGNvbnRleHQpCi0KLSAgICAgICAgIyBjaGVjayBpbnB1dHM6IHdlIGFwcGx5IHNhbWUgcmVzdHJpY3Rpb25zIGFzIFB5dGhvbidzIHBvdygpCi0gICAgICAgIGlmIG5vdCAoc2VsZi5faXNpbnRlZ2VyKCkgYW5kCi0gICAgICAgICAgICAgICAgb3RoZXIuX2lzaW50ZWdlcigpIGFuZAotICAgICAgICAgICAgICAgIG1vZHVsby5faXNpbnRlZ2VyKCkpOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvdygpIDNyZCBhcmd1bWVudCBub3QgYWxsb3dlZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VubGVzcyBhbGwgYXJndW1lbnRzIGFyZSBpbnRlZ2VycycpCi0gICAgICAgIGlmIG90aGVyIDwgMDoKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3coKSAybmQgYXJndW1lbnQgY2Fubm90IGJlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmVnYXRpdmUgd2hlbiAzcmQgYXJndW1lbnQgc3BlY2lmaWVkJykKLSAgICAgICAgaWYgbm90IG1vZHVsbzoKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3coKSAzcmQgYXJndW1lbnQgY2Fubm90IGJlIDAnKQotCi0gICAgICAgICMgYWRkaXRpb25hbCByZXN0cmljdGlvbiBmb3IgZGVjaW1hbDogdGhlIG1vZHVsdXMgbXVzdCBiZSBsZXNzCi0gICAgICAgICMgdGhhbiAxMCoqcHJlYyBpbiBhYnNvbHV0ZSB2YWx1ZQotICAgICAgICBpZiBtb2R1bG8uYWRqdXN0ZWQoKSA+PSBjb250ZXh0LnByZWM6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5zdWZmaWNpZW50IHByZWNpc2lvbjogcG93KCkgM3JkICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgbXVzdCBub3QgaGF2ZSBtb3JlIHRoYW4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmVjaXNpb24gZGlnaXRzJykKLQotICAgICAgICAjIGRlZmluZSAwKiowID09IE5hTiwgZm9yIGNvbnNpc3RlbmN5IHdpdGggdHdvLWFyZ3VtZW50IHBvdwotICAgICAgICAjIChldmVuIHRob3VnaCBpdCBodXJ0cyEpCi0gICAgICAgIGlmIG5vdCBvdGhlciBhbmQgbm90IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXQgbGVhc3Qgb25lIG9mIHBvdygpIDFzdCBhcmd1bWVudCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZCAybmQgYXJndW1lbnQgbXVzdCBiZSBub256ZXJvIDsnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzAqKjAgaXMgbm90IGRlZmluZWQnKQotCi0gICAgICAgICMgY29tcHV0ZSBzaWduIG9mIHJlc3VsdAotICAgICAgICBpZiBvdGhlci5faXNldmVuKCk6Ci0gICAgICAgICAgICBzaWduID0gMAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2lnbiA9IHNlbGYuX3NpZ24KLQotICAgICAgICAjIGNvbnZlcnQgbW9kdWxvIHRvIGEgUHl0aG9uIGludGVnZXIsIGFuZCBzZWxmIGFuZCBvdGhlciB0bwotICAgICAgICAjIERlY2ltYWwgaW50ZWdlcnMgKGkuZS4gZm9yY2UgdGhlaXIgZXhwb25lbnRzIHRvIGJlID49IDApCi0gICAgICAgIG1vZHVsbyA9IGFicyhpbnQobW9kdWxvKSkKLSAgICAgICAgYmFzZSA9IF9Xb3JrUmVwKHNlbGYudG9faW50ZWdyYWxfdmFsdWUoKSkKLSAgICAgICAgZXhwb25lbnQgPSBfV29ya1JlcChvdGhlci50b19pbnRlZ3JhbF92YWx1ZSgpKQotCi0gICAgICAgICMgY29tcHV0ZSByZXN1bHQgdXNpbmcgaW50ZWdlciBwb3coKQotICAgICAgICBiYXNlID0gKGJhc2UuaW50ICUgbW9kdWxvICogcG93KDEwLCBiYXNlLmV4cCwgbW9kdWxvKSkgJSBtb2R1bG8KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoZXhwb25lbnQuZXhwKToKLSAgICAgICAgICAgIGJhc2UgPSBwb3coYmFzZSwgMTAsIG1vZHVsbykKLSAgICAgICAgYmFzZSA9IHBvdyhiYXNlLCBleHBvbmVudC5pbnQsIG1vZHVsbykKLQotICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzaWduLCBzdHIoYmFzZSksIDApCi0KLSAgICBkZWYgX3Bvd2VyX2V4YWN0KHNlbGYsIG90aGVyLCBwKToKLSAgICAgICAgIiIiQXR0ZW1wdCB0byBjb21wdXRlIHNlbGYqKm90aGVyIGV4YWN0bHkuCi0KLSAgICAgICAgR2l2ZW4gRGVjaW1hbHMgc2VsZiBhbmQgb3RoZXIgYW5kIGFuIGludGVnZXIgcCwgYXR0ZW1wdCB0bwotICAgICAgICBjb21wdXRlIGFuIGV4YWN0IHJlc3VsdCBmb3IgdGhlIHBvd2VyIHNlbGYqKm90aGVyLCB3aXRoIHAKLSAgICAgICAgZGlnaXRzIG9mIHByZWNpc2lvbi4gIFJldHVybiBOb25lIGlmIHNlbGYqKm90aGVyIGlzIG5vdAotICAgICAgICBleGFjdGx5IHJlcHJlc2VudGFibGUgaW4gcCBkaWdpdHMuCi0KLSAgICAgICAgQXNzdW1lcyB0aGF0IGVsaW1pbmF0aW9uIG9mIHNwZWNpYWwgY2FzZXMgaGFzIGFscmVhZHkgYmVlbgotICAgICAgICBwZXJmb3JtZWQ6IHNlbGYgYW5kIG90aGVyIG11c3QgYm90aCBiZSBub25zcGVjaWFsOyBzZWxmIG11c3QKLSAgICAgICAgYmUgcG9zaXRpdmUgYW5kIG5vdCBudW1lcmljYWxseSBlcXVhbCB0byAxOyBvdGhlciBtdXN0IGJlCi0gICAgICAgIG5vbnplcm8uICBGb3IgZWZmaWNpZW5jeSwgb3RoZXIuX2V4cCBzaG91bGQgbm90IGJlIHRvbyBsYXJnZSwKLSAgICAgICAgc28gdGhhdCAxMCoqYWJzKG90aGVyLl9leHApIGlzIGEgZmVhc2libGUgY2FsY3VsYXRpb24uIiIiCi0KLSAgICAgICAgIyBJbiB0aGUgY29tbWVudHMgYmVsb3csIHdlIHdyaXRlIHggZm9yIHRoZSB2YWx1ZSBvZiBzZWxmIGFuZCB5IGZvciB0aGUKLSAgICAgICAgIyB2YWx1ZSBvZiBvdGhlci4gIFdyaXRlIHggPSB4YyoxMCoqeGUgYW5kIGFicyh5KSA9IHljKjEwKip5ZSwgd2l0aCB4YwotICAgICAgICAjIGFuZCB5YyBwb3NpdGl2ZSBpbnRlZ2VycyBub3QgZGl2aXNpYmxlIGJ5IDEwLgotCi0gICAgICAgICMgVGhlIG1haW4gcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBpZGVudGlmeSB0aGUgKmZhaWx1cmUqCi0gICAgICAgICMgb2YgeCoqeSB0byBiZSBleGFjdGx5IHJlcHJlc2VudGFibGUgd2l0aCBhcyBsaXR0bGUgZWZmb3J0IGFzCi0gICAgICAgICMgcG9zc2libGUuICBTbyB3ZSBsb29rIGZvciBjaGVhcCBhbmQgZWFzeSB0ZXN0cyB0aGF0Ci0gICAgICAgICMgZWxpbWluYXRlIHRoZSBwb3NzaWJpbGl0eSBvZiB4Kip5IGJlaW5nIGV4YWN0LiAgT25seSBpZiBhbGwKLSAgICAgICAgIyB0aGVzZSB0ZXN0cyBhcmUgcGFzc2VkIGRvIHdlIGdvIG9uIHRvIGFjdHVhbGx5IGNvbXB1dGUgeCoqeS4KLQotICAgICAgICAjIEhlcmUncyB0aGUgbWFpbiBpZGVhLiAgRXhwcmVzcyB5IGFzIGEgcmF0aW9uYWwgbnVtYmVyIG0vbiwgd2l0aCBtIGFuZAotICAgICAgICAjIG4gcmVsYXRpdmVseSBwcmltZSBhbmQgbj4wLiAgVGhlbiBmb3IgeCoqeSB0byBiZSBleGFjdGx5Ci0gICAgICAgICMgcmVwcmVzZW50YWJsZSAoYXQgKmFueSogcHJlY2lzaW9uKSwgeGMgbXVzdCBiZSB0aGUgbnRoIHBvd2VyIG9mIGEKLSAgICAgICAgIyBwb3NpdGl2ZSBpbnRlZ2VyIGFuZCB4ZSBtdXN0IGJlIGRpdmlzaWJsZSBieSBuLiAgSWYgeSBpcyBuZWdhdGl2ZQotICAgICAgICAjIHRoZW4gYWRkaXRpb25hbGx5IHhjIG11c3QgYmUgYSBwb3dlciBvZiBlaXRoZXIgMiBvciA1LCBoZW5jZSBhIHBvd2VyCi0gICAgICAgICMgb2YgMioqbiBvciA1KipuLgotICAgICAgICAjCi0gICAgICAgICMgVGhlcmUncyBhIGxpbWl0IHRvIGhvdyBzbWFsbCB8eXwgY2FuIGJlOiBpZiB5PW0vbiBhcyBhYm92ZQotICAgICAgICAjIHRoZW46Ci0gICAgICAgICMKLSAgICAgICAgIyAgKDEpIGlmIHhjICE9IDEgdGhlbiBmb3IgdGhlIHJlc3VsdCB0byBiZSByZXByZXNlbnRhYmxlIHdlCi0gICAgICAgICMgICAgICBuZWVkIHhjKiooMS9uKSA+PSAyLCBhbmQgaGVuY2UgYWxzbyB4YyoqfHl8ID49IDIuICBTbwotICAgICAgICAjICAgICAgaWYgfHl8IDw9IDEvbmJpdHMoeGMpIHRoZW4geGMgPCAyKipuYml0cyh4YykgPD0KLSAgICAgICAgIyAgICAgIDIqKigxL3x5fCksIGhlbmNlIHhjKip8eXwgPCAyIGFuZCB0aGUgcmVzdWx0IGlzIG5vdAotICAgICAgICAjICAgICAgcmVwcmVzZW50YWJsZS4KLSAgICAgICAgIwotICAgICAgICAjICAoMikgaWYgeGUgIT0gMCwgfHhlfCooMS9uKSA+PSAxLCBzbyB8eGV8Knx5fCA+PSAxLiAgSGVuY2UgaWYKLSAgICAgICAgIyAgICAgIHx5fCA8IDEvfHhlfCB0aGVuIHRoZSByZXN1bHQgaXMgbm90IHJlcHJlc2VudGFibGUuCi0gICAgICAgICMKLSAgICAgICAgIyBOb3RlIHRoYXQgc2luY2UgeCBpcyBub3QgZXF1YWwgdG8gMSwgYXQgbGVhc3Qgb25lIG9mICgxKSBhbmQKLSAgICAgICAgIyAoMikgbXVzdCBhcHBseS4gIE5vdyB8eXwgPCAxL25iaXRzKHhjKSBpZmYgfHljfCpuYml0cyh4YykgPAotICAgICAgICAjIDEwKioteWUgaWZmIGxlbihzdHIofHljfCpuYml0cyh4YykpIDw9IC15ZS4KLSAgICAgICAgIwotICAgICAgICAjIFRoZXJlJ3MgYWxzbyBhIGxpbWl0IHRvIGhvdyBsYXJnZSB5IGNhbiBiZSwgYXQgbGVhc3QgaWYgaXQncwotICAgICAgICAjIHBvc2l0aXZlOiB0aGUgbm9ybWFsaXplZCByZXN1bHQgd2lsbCBoYXZlIGNvZWZmaWNpZW50IHhjKip5LAotICAgICAgICAjIHNvIGlmIGl0J3MgcmVwcmVzZW50YWJsZSB0aGVuIHhjKip5IDwgMTAqKnAsIGFuZCB5IDwKLSAgICAgICAgIyBwL2xvZzEwKHhjKS4gIEhlbmNlIGlmIHkqbG9nMTAoeGMpID49IHAgdGhlbiB0aGUgcmVzdWx0IGlzCi0gICAgICAgICMgbm90IGV4YWN0bHkgcmVwcmVzZW50YWJsZS4KLQotICAgICAgICAjIGlmIGxlbihzdHIoYWJzKHljKnhlKSkgPD0gLXllIHRoZW4gYWJzKHljKnhlKSA8IDEwKioteWUsCi0gICAgICAgICMgc28gfHl8IDwgMS94ZSBhbmQgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZS4KLSAgICAgICAgIyBTaW1pbGFybHksIGxlbihzdHIoYWJzKHljKSp4Y19iaXRzKSkgPD0gLXllIGltcGxpZXMgfHl8Ci0gICAgICAgICMgPCAxL25iaXRzKHhjKS4KLQotICAgICAgICB4ID0gX1dvcmtSZXAoc2VsZikKLSAgICAgICAgeGMsIHhlID0geC5pbnQsIHguZXhwCi0gICAgICAgIHdoaWxlIHhjICUgMTAgPT0gMDoKLSAgICAgICAgICAgIHhjIC8vPSAxMAotICAgICAgICAgICAgeGUgKz0gMQotCi0gICAgICAgIHkgPSBfV29ya1JlcChvdGhlcikKLSAgICAgICAgeWMsIHllID0geS5pbnQsIHkuZXhwCi0gICAgICAgIHdoaWxlIHljICUgMTAgPT0gMDoKLSAgICAgICAgICAgIHljIC8vPSAxMAotICAgICAgICAgICAgeWUgKz0gMQotCi0gICAgICAgICMgY2FzZSB3aGVyZSB4YyA9PSAxOiByZXN1bHQgaXMgMTAqKih4ZSp5KSwgd2l0aCB4ZSp5Ci0gICAgICAgICMgcmVxdWlyZWQgdG8gYmUgYW4gaW50ZWdlcgotICAgICAgICBpZiB4YyA9PSAxOgotICAgICAgICAgICAgeGUgKj0geWMKLSAgICAgICAgICAgICMgcmVzdWx0IGlzIG5vdyAxMCoqKHhlICogMTAqKnllKTsgIHhlICogMTAqKnllIG11c3QgYmUgaW50ZWdyYWwKLSAgICAgICAgICAgIHdoaWxlIHhlICUgMTAgPT0gMDoKLSAgICAgICAgICAgICAgICB4ZSAvLz0gMTAKLSAgICAgICAgICAgICAgICB5ZSArPSAxCi0gICAgICAgICAgICBpZiB5ZSA8IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIGV4cG9uZW50ID0geGUgKiAxMCoqeWUKLSAgICAgICAgICAgIGlmIHkuc2lnbiA9PSAxOgotICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gLWV4cG9uZW50Ci0gICAgICAgICAgICAjIGlmIG90aGVyIGlzIGEgbm9ubmVnYXRpdmUgaW50ZWdlciwgdXNlIGlkZWFsIGV4cG9uZW50Ci0gICAgICAgICAgICBpZiBvdGhlci5faXNpbnRlZ2VyKCkgYW5kIG90aGVyLl9zaWduID09IDA6Ci0gICAgICAgICAgICAgICAgaWRlYWxfZXhwb25lbnQgPSBzZWxmLl9leHAqaW50KG90aGVyKQotICAgICAgICAgICAgICAgIHplcm9zID0gbWluKGV4cG9uZW50LWlkZWFsX2V4cG9uZW50LCBwLTEpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHplcm9zID0gMAotICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgJzEnICsgJzAnKnplcm9zLCBleHBvbmVudC16ZXJvcykKLQotICAgICAgICAjIGNhc2Ugd2hlcmUgeSBpcyBuZWdhdGl2ZTogeGMgbXVzdCBiZSBlaXRoZXIgYSBwb3dlcgotICAgICAgICAjIG9mIDIgb3IgYSBwb3dlciBvZiA1LgotICAgICAgICBpZiB5LnNpZ24gPT0gMToKLSAgICAgICAgICAgIGxhc3RfZGlnaXQgPSB4YyAlIDEwCi0gICAgICAgICAgICBpZiBsYXN0X2RpZ2l0IGluICgyLDQsNiw4KToKLSAgICAgICAgICAgICAgICAjIHF1aWNrIHRlc3QgZm9yIHBvd2VyIG9mIDIKLSAgICAgICAgICAgICAgICBpZiB4YyAmIC14YyAhPSB4YzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgICAgICAjIG5vdyB4YyBpcyBhIHBvd2VyIG9mIDI7IGUgaXMgaXRzIGV4cG9uZW50Ci0gICAgICAgICAgICAgICAgZSA9IF9uYml0cyh4YyktMQotCi0gICAgICAgICAgICAgICAgIyBXZSBub3cgaGF2ZToKLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyAgIHggPSAyKiplICogMTAqKnhlLCBlID4gMCwgYW5kIHkgPCAwLgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIFRoZSBleGFjdCByZXN1bHQgaXM6Ci0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgICB4Kip5ID0gNSoqKC1lKnkpICogMTAqKihlKnkgKyB4ZSp5KQotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIHByb3ZpZGVkIHRoYXQgYm90aCBlKnkgYW5kIHhlKnkgYXJlIGludGVnZXJzLiAgTm90ZSB0aGF0IGlmCi0gICAgICAgICAgICAgICAgIyA1KiooLWUqeSkgPj0gMTAqKnAsIHRoZW4gdGhlIHJlc3VsdCBjYW4ndCBiZSBleHByZXNzZWQKLSAgICAgICAgICAgICAgICAjIGV4YWN0bHkgd2l0aCBwIGRpZ2l0cyBvZiBwcmVjaXNpb24uCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgVXNpbmcgdGhlIGFib3ZlLCB3ZSBjYW4gZ3VhcmQgYWdhaW5zdCBsYXJnZSB2YWx1ZXMgb2YgeWUuCi0gICAgICAgICAgICAgICAgIyA5My82NSBpcyBhbiB1cHBlciBib3VuZCBmb3IgbG9nKDEwKS9sb2coNSksIHNvIGlmCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgICB5ZSA+PSBsZW4oc3RyKDkzKnAvLzY1KSkKLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyB0aGVuCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgICAtZSp5ID49IC15ID49IDEwKip5ZSA+IDkzKnAvNjUgPiBwKmxvZygxMCkvbG9nKDUpLAotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIHNvIDUqKigtZSp5KSA+PSAxMCoqcCwgYW5kIHRoZSBjb2VmZmljaWVudCBvZiB0aGUgcmVzdWx0Ci0gICAgICAgICAgICAgICAgIyBjYW4ndCBiZSBleHByZXNzZWQgaW4gcCBkaWdpdHMuCi0KLSAgICAgICAgICAgICAgICAjIGVtYXggPj0gbGFyZ2VzdCBlIHN1Y2ggdGhhdCA1KiplIDwgMTAqKnAuCi0gICAgICAgICAgICAgICAgZW1heCA9IHAqOTMvLzY1Ci0gICAgICAgICAgICAgICAgaWYgeWUgPj0gbGVuKHN0cihlbWF4KSk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgICAgICAjIEZpbmQgLWUqeSBhbmQgLXhlKnk7IGJvdGggbXVzdCBiZSBpbnRlZ2VycwotICAgICAgICAgICAgICAgIGUgPSBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoZSAqIHljLCB5ZSkKLSAgICAgICAgICAgICAgICB4ZSA9IF9kZWNpbWFsX2xzaGlmdF9leGFjdCh4ZSAqIHljLCB5ZSkKLSAgICAgICAgICAgICAgICBpZiBlIGlzIE5vbmUgb3IgeGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICAgICAgICAgIGlmIGUgPiBlbWF4OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgICAgIHhjID0gNSoqZQotCi0gICAgICAgICAgICBlbGlmIGxhc3RfZGlnaXQgPT0gNToKLSAgICAgICAgICAgICAgICAjIGUgPj0gbG9nXzUoeGMpIGlmIHhjIGlzIGEgcG93ZXIgb2YgNTsgd2UgaGF2ZQotICAgICAgICAgICAgICAgICMgZXF1YWxpdHkgYWxsIHRoZSB3YXkgdXAgdG8geGM9NSoqMjY1OAotICAgICAgICAgICAgICAgIGUgPSBfbmJpdHMoeGMpKjI4Ly82NQotICAgICAgICAgICAgICAgIHhjLCByZW1haW5kZXIgPSBkaXZtb2QoNSoqZSwgeGMpCi0gICAgICAgICAgICAgICAgaWYgcmVtYWluZGVyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgICAgIHdoaWxlIHhjICUgNSA9PSAwOgotICAgICAgICAgICAgICAgICAgICB4YyAvLz0gNQotICAgICAgICAgICAgICAgICAgICBlIC09IDEKLQotICAgICAgICAgICAgICAgICMgR3VhcmQgYWdhaW5zdCBsYXJnZSB2YWx1ZXMgb2YgeWUsIHVzaW5nIHRoZSBzYW1lIGxvZ2ljIGFzIGluCi0gICAgICAgICAgICAgICAgIyB0aGUgJ3hjIGlzIGEgcG93ZXIgb2YgMicgYnJhbmNoLiAgMTAvMyBpcyBhbiB1cHBlciBib3VuZCBmb3IKLSAgICAgICAgICAgICAgICAjIGxvZygxMCkvbG9nKDIpLgotICAgICAgICAgICAgICAgIGVtYXggPSBwKjEwLy8zCi0gICAgICAgICAgICAgICAgaWYgeWUgPj0gbGVuKHN0cihlbWF4KSk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgICAgICBlID0gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KGUgKiB5YywgeWUpCi0gICAgICAgICAgICAgICAgeGUgPSBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoeGUgKiB5YywgeWUpCi0gICAgICAgICAgICAgICAgaWYgZSBpcyBOb25lIG9yIHhlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgICAgICBpZiBlID4gZW1heDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgICAgICB4YyA9IDIqKmUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICAgICAgaWYgeGMgPj0gMTAqKnA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIHhlID0gLWUteGUKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsIHN0cih4YyksIHhlKQotCi0gICAgICAgICMgbm93IHkgaXMgcG9zaXRpdmU7IGZpbmQgbSBhbmQgbiBzdWNoIHRoYXQgeSA9IG0vbgotICAgICAgICBpZiB5ZSA+PSAwOgotICAgICAgICAgICAgbSwgbiA9IHljKjEwKip5ZSwgMQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgeGUgIT0gMCBhbmQgbGVuKHN0cihhYnMoeWMqeGUpKSkgPD0gLXllOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICB4Y19iaXRzID0gX25iaXRzKHhjKQotICAgICAgICAgICAgaWYgeGMgIT0gMSBhbmQgbGVuKHN0cihhYnMoeWMpKnhjX2JpdHMpKSA8PSAteWU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIG0sIG4gPSB5YywgMTAqKigteWUpCi0gICAgICAgICAgICB3aGlsZSBtICUgMiA9PSBuICUgMiA9PSAwOgotICAgICAgICAgICAgICAgIG0gLy89IDIKLSAgICAgICAgICAgICAgICBuIC8vPSAyCi0gICAgICAgICAgICB3aGlsZSBtICUgNSA9PSBuICUgNSA9PSAwOgotICAgICAgICAgICAgICAgIG0gLy89IDUKLSAgICAgICAgICAgICAgICBuIC8vPSA1Ci0KLSAgICAgICAgIyBjb21wdXRlIG50aCByb290IG9mIHhjKjEwKip4ZQotICAgICAgICBpZiBuID4gMToKLSAgICAgICAgICAgICMgaWYgMSA8IHhjIDwgMioqbiB0aGVuIHhjIGlzbid0IGFuIG50aCBwb3dlcgotICAgICAgICAgICAgaWYgeGMgIT0gMSBhbmQgeGNfYml0cyA8PSBuOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgIHhlLCByZW0gPSBkaXZtb2QoeGUsIG4pCi0gICAgICAgICAgICBpZiByZW0gIT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICAjIGNvbXB1dGUgbnRoIHJvb3Qgb2YgeGMgdXNpbmcgTmV3dG9uJ3MgbWV0aG9kCi0gICAgICAgICAgICBhID0gMSA8PCAtKC1fbmJpdHMoeGMpLy9uKSAjIGluaXRpYWwgZXN0aW1hdGUKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgcSwgciA9IGRpdm1vZCh4YywgYSoqKG4tMSkpCi0gICAgICAgICAgICAgICAgaWYgYSA8PSBxOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGEgPSAoYSoobi0xKSArIHEpLy9uCi0gICAgICAgICAgICBpZiBub3QgKGEgPT0gcSBhbmQgciA9PSAwKToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgeGMgPSBhCi0KLSAgICAgICAgIyBub3cgeGMqMTAqKnhlIGlzIHRoZSBudGggcm9vdCBvZiB0aGUgb3JpZ2luYWwgeGMqMTAqKnhlCi0gICAgICAgICMgY29tcHV0ZSBtdGggcG93ZXIgb2YgeGMqMTAqKnhlCi0KLSAgICAgICAgIyBpZiBtID4gcCoxMDAvL19sb2cxMF9sYih4YykgdGhlbiBtID4gcC9sb2cxMCh4YyksIGhlbmNlIHhjKiptID4KLSAgICAgICAgIyAxMCoqcCBhbmQgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZS4KLSAgICAgICAgaWYgeGMgPiAxIGFuZCBtID4gcCoxMDAvL19sb2cxMF9sYih4Yyk6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICB4YyA9IHhjKiptCi0gICAgICAgIHhlICo9IG0KLSAgICAgICAgaWYgeGMgPiAxMCoqcDoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgIyBieSB0aGlzIHBvaW50IHRoZSByZXN1bHQgKmlzKiBleGFjdGx5IHJlcHJlc2VudGFibGUKLSAgICAgICAgIyBhZGp1c3QgdGhlIGV4cG9uZW50IHRvIGdldCBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byB0aGUgaWRlYWwKLSAgICAgICAgIyBleHBvbmVudCwgaWYgbmVjZXNzYXJ5Ci0gICAgICAgIHN0cl94YyA9IHN0cih4YykKLSAgICAgICAgaWYgb3RoZXIuX2lzaW50ZWdlcigpIGFuZCBvdGhlci5fc2lnbiA9PSAwOgotICAgICAgICAgICAgaWRlYWxfZXhwb25lbnQgPSBzZWxmLl9leHAqaW50KG90aGVyKQotICAgICAgICAgICAgemVyb3MgPSBtaW4oeGUtaWRlYWxfZXhwb25lbnQsIHAtbGVuKHN0cl94YykpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB6ZXJvcyA9IDAKLSAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgc3RyX3hjKycwJyp6ZXJvcywgeGUtemVyb3MpCi0KLSAgICBkZWYgX19wb3dfXyhzZWxmLCBvdGhlciwgbW9kdWxvPU5vbmUsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBzZWxmICoqIG90aGVyIFsgJSBtb2R1bG9dLgotCi0gICAgICAgIFdpdGggdHdvIGFyZ3VtZW50cywgY29tcHV0ZSBzZWxmKipvdGhlci4KLQotICAgICAgICBXaXRoIHRocmVlIGFyZ3VtZW50cywgY29tcHV0ZSAoc2VsZioqb3RoZXIpICUgbW9kdWxvLiAgRm9yIHRoZQotICAgICAgICB0aHJlZSBhcmd1bWVudCBmb3JtLCB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9ucyBvbiB0aGUKLSAgICAgICAgYXJndW1lbnRzIGhvbGQ6Ci0KLSAgICAgICAgIC0gYWxsIHRocmVlIGFyZ3VtZW50cyBtdXN0IGJlIGludGVncmFsCi0gICAgICAgICAtIG90aGVyIG11c3QgYmUgbm9ubmVnYXRpdmUKLSAgICAgICAgIC0gZWl0aGVyIHNlbGYgb3Igb3RoZXIgKG9yIGJvdGgpIG11c3QgYmUgbm9uemVybwotICAgICAgICAgLSBtb2R1bG8gbXVzdCBiZSBub256ZXJvIGFuZCBtdXN0IGhhdmUgYXQgbW9zdCBwIGRpZ2l0cywKLSAgICAgICAgICAgd2hlcmUgcCBpcyB0aGUgY29udGV4dCBwcmVjaXNpb24uCi0KLSAgICAgICAgSWYgYW55IG9mIHRoZXNlIHJlc3RyaWN0aW9ucyBpcyB2aW9sYXRlZCB0aGUgSW52YWxpZE9wZXJhdGlvbgotICAgICAgICBmbGFnIGlzIHJhaXNlZC4KLQotICAgICAgICBUaGUgcmVzdWx0IG9mIHBvdyhzZWxmLCBvdGhlciwgbW9kdWxvKSBpcyBpZGVudGljYWwgdG8gdGhlCi0gICAgICAgIHJlc3VsdCB0aGF0IHdvdWxkIGJlIG9idGFpbmVkIGJ5IGNvbXB1dGluZyAoc2VsZioqb3RoZXIpICUKLSAgICAgICAgbW9kdWxvIHdpdGggdW5ib3VuZGVkIHByZWNpc2lvbiwgYnV0IGlzIGNvbXB1dGVkIG1vcmUKLSAgICAgICAgZWZmaWNpZW50bHkuICBJdCBpcyBhbHdheXMgZXhhY3QuCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIG1vZHVsbyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3dlcl9tb2R1bG8ob3RoZXIsIG1vZHVsbywgY29udGV4dCkKLQotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICAjIGVpdGhlciBhcmd1bWVudCBpcyBhIE5hTiA9PiByZXN1bHQgaXMgTmFOCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAjIDAqKjAgPSBOYU4gKCEpLCB4KiowID0gMSBmb3Igbm9uemVybyB4IChpbmNsdWRpbmcgKy8tSW5maW5pdHkpCi0gICAgICAgIGlmIG5vdCBvdGhlcjoKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnMCAqKiAwJykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKLQotICAgICAgICAjIHJlc3VsdCBoYXMgc2lnbiAxIGlmZiBzZWxmLl9zaWduIGlzIDEgYW5kIG90aGVyIGlzIGFuIG9kZCBpbnRlZ2VyCi0gICAgICAgIHJlc3VsdF9zaWduID0gMAotICAgICAgICBpZiBzZWxmLl9zaWduID09IDE6Ci0gICAgICAgICAgICBpZiBvdGhlci5faXNpbnRlZ2VyKCk6Ci0gICAgICAgICAgICAgICAgaWYgbm90IG90aGVyLl9pc2V2ZW4oKToKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3NpZ24gPSAxCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgLXZlKipub25pbnRlZ2VyID0gTmFOCi0gICAgICAgICAgICAgICAgIyAoLTApKipub25pbnRlZ2VyID0gMCoqbm9uaW50ZWdlcgotICAgICAgICAgICAgICAgIGlmIHNlbGY6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3ggKiogeSB3aXRoIHggbmVnYXRpdmUgYW5kIHkgbm90IGFuIGludGVnZXInKQotICAgICAgICAgICAgIyBuZWdhdGUgc2VsZiwgd2l0aG91dCBkb2luZyBhbnkgdW53YW50ZWQgcm91bmRpbmcKLSAgICAgICAgICAgIHNlbGYgPSBzZWxmLmNvcHlfbmVnYXRlKCkKLQotICAgICAgICAjIDAqKigrdmUgb3IgSW5mKT0gMDsgMCoqKC12ZSBvciAtSW5mKSA9IEluZmluaXR5Ci0gICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgaWYgb3RoZXIuX3NpZ24gPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRfc2lnbiwgJzAnLCAwKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3Jlc3VsdF9zaWduXQotCi0gICAgICAgICMgSW5mKiooK3ZlIG9yIEluZikgPSBJbmY7IEluZioqKC12ZSBvciAtSW5mKSA9IDAKLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgaWYgb3RoZXIuX3NpZ24gPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3Jlc3VsdF9zaWduXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRfc2lnbiwgJzAnLCAwKQotCi0gICAgICAgICMgMSoqb3RoZXIgPSAxLCBidXQgdGhlIGNob2ljZSBvZiBleHBvbmVudCBhbmQgdGhlIGZsYWdzCi0gICAgICAgICMgZGVwZW5kIG9uIHRoZSBleHBvbmVudCBvZiBzZWxmLCBhbmQgb24gd2hldGhlciBvdGhlciBpcyBhCi0gICAgICAgICMgcG9zaXRpdmUgaW50ZWdlciwgYSBuZWdhdGl2ZSBpbnRlZ2VyLCBvciBuZWl0aGVyCi0gICAgICAgIGlmIHNlbGYgPT0gX09uZToKLSAgICAgICAgICAgIGlmIG90aGVyLl9pc2ludGVnZXIoKToKLSAgICAgICAgICAgICAgICAjIGV4cCA9IG1heChzZWxmLl9leHAqbWF4KGludChvdGhlciksIDApLAotICAgICAgICAgICAgICAgICMgMS1jb250ZXh0LnByZWMpIGJ1dCBldmFsdWF0aW5nIGludChvdGhlcikgZGlyZWN0bHkKLSAgICAgICAgICAgICAgICAjIGlzIGRhbmdlcm91cyB1bnRpbCB3ZSBrbm93IG90aGVyIGlzIHNtYWxsIChvdGhlcgotICAgICAgICAgICAgICAgICMgY291bGQgYmUgMWU5OTk5OTk5OTkpCi0gICAgICAgICAgICAgICAgaWYgb3RoZXIuX3NpZ24gPT0gMToKLSAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllciA9IDAKLSAgICAgICAgICAgICAgICBlbGlmIG90aGVyID4gY29udGV4dC5wcmVjOgotICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVyID0gY29udGV4dC5wcmVjCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllciA9IGludChvdGhlcikKLQotICAgICAgICAgICAgICAgIGV4cCA9IHNlbGYuX2V4cCAqIG11bHRpcGxpZXIKLSAgICAgICAgICAgICAgICBpZiBleHAgPCAxLWNvbnRleHQucHJlYzoKLSAgICAgICAgICAgICAgICAgICAgZXhwID0gMS1jb250ZXh0LnByZWMKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKLSAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQotICAgICAgICAgICAgICAgIGV4cCA9IDEtY29udGV4dC5wcmVjCi0KLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCAnMScrJzAnKi1leHAsIGV4cCkKLQotICAgICAgICAjIGNvbXB1dGUgYWRqdXN0ZWQgZXhwb25lbnQgb2Ygc2VsZgotICAgICAgICBzZWxmX2FkaiA9IHNlbGYuYWRqdXN0ZWQoKQotCi0gICAgICAgICMgc2VsZiAqKiBpbmZpbml0eSBpcyBpbmZpbml0eSBpZiBzZWxmID4gMSwgMCBpZiBzZWxmIDwgMQotICAgICAgICAjIHNlbGYgKiogLWluZmluaXR5IGlzIGluZmluaXR5IGlmIHNlbGYgPCAxLCAwIGlmIHNlbGYgPiAxCi0gICAgICAgIGlmIG90aGVyLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICBpZiAob3RoZXIuX3NpZ24gPT0gMCkgPT0gKHNlbGZfYWRqIDwgMCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUocmVzdWx0X3NpZ24sICcwJywgMCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtyZXN1bHRfc2lnbl0KLQotICAgICAgICAjIGZyb20gaGVyZSBvbiwgdGhlIHJlc3VsdCBhbHdheXMgZ29lcyB0aHJvdWdoIHRoZSBjYWxsCi0gICAgICAgICMgdG8gX2ZpeCBhdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24uCi0gICAgICAgIGFucyA9IE5vbmUKLSAgICAgICAgZXhhY3QgPSBGYWxzZQotCi0gICAgICAgICMgY3J1ZGUgdGVzdCB0byBjYXRjaCBjYXNlcyBvZiBleHRyZW1lIG92ZXJmbG93L3VuZGVyZmxvdy4gIElmCi0gICAgICAgICMgbG9nMTAoc2VsZikqb3RoZXIgPj0gMTAqKmJvdW5kIGFuZCBib3VuZCA+PSBsZW4oc3RyKEVtYXgpKQotICAgICAgICAjIHRoZW4gMTAqKmJvdW5kID49IDEwKipsZW4oc3RyKEVtYXgpKSA+PSBFbWF4KzEgYW5kIGhlbmNlCi0gICAgICAgICMgc2VsZioqb3RoZXIgPj0gMTAqKihFbWF4KzEpLCBzbyBvdmVyZmxvdyBvY2N1cnMuICBUaGUgdGVzdAotICAgICAgICAjIGZvciB1bmRlcmZsb3cgaXMgc2ltaWxhci4KLSAgICAgICAgYm91bmQgPSBzZWxmLl9sb2cxMF9leHBfYm91bmQoKSArIG90aGVyLmFkanVzdGVkKCkKLSAgICAgICAgaWYgKHNlbGZfYWRqID49IDApID09IChvdGhlci5fc2lnbiA9PSAwKToKLSAgICAgICAgICAgICMgc2VsZiA+IDEgYW5kIG90aGVyICt2ZSwgb3Igc2VsZiA8IDEgYW5kIG90aGVyIC12ZQotICAgICAgICAgICAgIyBwb3NzaWJpbGl0eSBvZiBvdmVyZmxvdwotICAgICAgICAgICAgaWYgYm91bmQgPj0gbGVuKHN0cihjb250ZXh0LkVtYXgpKToKLSAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCAnMScsIGNvbnRleHQuRW1heCsxKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBzZWxmID4gMSBhbmQgb3RoZXIgLXZlLCBvciBzZWxmIDwgMSBhbmQgb3RoZXIgK3ZlCi0gICAgICAgICAgICAjIHBvc3NpYmlsaXR5IG9mIHVuZGVyZmxvdyB0byAwCi0gICAgICAgICAgICBFdGlueSA9IGNvbnRleHQuRXRpbnkoKQotICAgICAgICAgICAgaWYgYm91bmQgPj0gbGVuKHN0cigtRXRpbnkpKToKLSAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCAnMScsIEV0aW55LTEpCi0KLSAgICAgICAgIyB0cnkgZm9yIGFuIGV4YWN0IHJlc3VsdCB3aXRoIHByZWNpc2lvbiArMQotICAgICAgICBpZiBhbnMgaXMgTm9uZToKLSAgICAgICAgICAgIGFucyA9IHNlbGYuX3Bvd2VyX2V4YWN0KG90aGVyLCBjb250ZXh0LnByZWMgKyAxKQotICAgICAgICAgICAgaWYgYW5zIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGlmIHJlc3VsdF9zaWduID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoMSwgYW5zLl9pbnQsIGFucy5fZXhwKQotICAgICAgICAgICAgICAgIGV4YWN0ID0gVHJ1ZQotCi0gICAgICAgICMgdXN1YWwgY2FzZTogaW5leGFjdCByZXN1bHQsIHgqKnkgY29tcHV0ZWQgZGlyZWN0bHkgYXMgZXhwKHkqbG9nKHgpKQotICAgICAgICBpZiBhbnMgaXMgTm9uZToKLSAgICAgICAgICAgIHAgPSBjb250ZXh0LnByZWMKLSAgICAgICAgICAgIHggPSBfV29ya1JlcChzZWxmKQotICAgICAgICAgICAgeGMsIHhlID0geC5pbnQsIHguZXhwCi0gICAgICAgICAgICB5ID0gX1dvcmtSZXAob3RoZXIpCi0gICAgICAgICAgICB5YywgeWUgPSB5LmludCwgeS5leHAKLSAgICAgICAgICAgIGlmIHkuc2lnbiA9PSAxOgotICAgICAgICAgICAgICAgIHljID0gLXljCi0KLSAgICAgICAgICAgICMgY29tcHV0ZSBjb3JyZWN0bHkgcm91bmRlZCByZXN1bHQ6ICBzdGFydCB3aXRoIHByZWNpc2lvbiArMywKLSAgICAgICAgICAgICMgdGhlbiBpbmNyZWFzZSBwcmVjaXNpb24gdW50aWwgcmVzdWx0IGlzIHVuYW1iaWd1b3VzbHkgcm91bmRhYmxlCi0gICAgICAgICAgICBleHRyYSA9IDMKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgY29lZmYsIGV4cCA9IF9kcG93ZXIoeGMsIHhlLCB5YywgeWUsIHArZXh0cmEpCi0gICAgICAgICAgICAgICAgaWYgY29lZmYgJSAoNSoxMCoqKGxlbihzdHIoY29lZmYpKS1wLTEpKToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBleHRyYSArPSAzCi0KLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0X3NpZ24sIHN0cihjb2VmZiksIGV4cCkKLQotICAgICAgICAjIHVubGlrZSBleHAsIGxuIGFuZCBsb2cxMCwgdGhlIHBvd2VyIGZ1bmN0aW9uIHJlc3BlY3RzIHRoZQotICAgICAgICAjIHJvdW5kaW5nIG1vZGU7IG5vIG5lZWQgdG8gc3dpdGNoIHRvIFJPVU5EX0hBTEZfRVZFTiBoZXJlCi0KLSAgICAgICAgIyBUaGVyZSdzIGEgZGlmZmljdWx0eSBoZXJlIHdoZW4gJ290aGVyJyBpcyBub3QgYW4gaW50ZWdlciBhbmQKLSAgICAgICAgIyB0aGUgcmVzdWx0IGlzIGV4YWN0LiAgSW4gdGhpcyBjYXNlLCB0aGUgc3BlY2lmaWNhdGlvbgotICAgICAgICAjIHJlcXVpcmVzIHRoYXQgdGhlIEluZXhhY3QgZmxhZyBiZSByYWlzZWQgKGluIHNwaXRlIG9mCi0gICAgICAgICMgZXhhY3RuZXNzKSwgYnV0IHNpbmNlIHRoZSByZXN1bHQgaXMgZXhhY3QgX2ZpeCB3b24ndCBkbyB0aGlzCi0gICAgICAgICMgZm9yIHVzLiAgKENvcnJlc3BvbmRpbmdseSwgdGhlIFVuZGVyZmxvdyBzaWduYWwgc2hvdWxkIGFsc28KLSAgICAgICAgIyBiZSByYWlzZWQgZm9yIHN1Ym5vcm1hbCByZXN1bHRzLikgIFdlIGNhbid0IGRpcmVjdGx5IHJhaXNlCi0gICAgICAgICMgdGhlc2Ugc2lnbmFscyBlaXRoZXIgYmVmb3JlIG9yIGFmdGVyIGNhbGxpbmcgX2ZpeCwgc2luY2UKLSAgICAgICAgIyB0aGF0IHdvdWxkIHZpb2xhdGUgdGhlIHByZWNlZGVuY2UgZm9yIHNpZ25hbHMuICBTbyB3ZSB3cmFwCi0gICAgICAgICMgdGhlIC5fZml4IGNhbGwgaW4gYSB0ZW1wb3JhcnkgY29udGV4dCwgYW5kIHJlcmFpc2UKLSAgICAgICAgIyBhZnRlcndhcmRzLgotICAgICAgICBpZiBleGFjdCBhbmQgbm90IG90aGVyLl9pc2ludGVnZXIoKToKLSAgICAgICAgICAgICMgcGFkIHdpdGggemVyb3MgdXAgdG8gbGVuZ3RoIGNvbnRleHQucHJlYysxIGlmIG5lY2Vzc2FyeTsgdGhpcwotICAgICAgICAgICAgIyBlbnN1cmVzIHRoYXQgdGhlIFJvdW5kZWQgc2lnbmFsIHdpbGwgYmUgcmFpc2VkLgotICAgICAgICAgICAgaWYgbGVuKGFucy5faW50KSA8PSBjb250ZXh0LnByZWM6Ci0gICAgICAgICAgICAgICAgZXhwZGlmZiA9IGNvbnRleHQucHJlYyArIDEgLSBsZW4oYW5zLl9pbnQpCi0gICAgICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShhbnMuX3NpZ24sIGFucy5faW50KycwJypleHBkaWZmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5zLl9leHAtZXhwZGlmZikKLQotICAgICAgICAgICAgIyBjcmVhdGUgYSBjb3B5IG9mIHRoZSBjdXJyZW50IGNvbnRleHQsIHdpdGggY2xlYXJlZCBmbGFncy90cmFwcwotICAgICAgICAgICAgbmV3Y29udGV4dCA9IGNvbnRleHQuY29weSgpCi0gICAgICAgICAgICBuZXdjb250ZXh0LmNsZWFyX2ZsYWdzKCkKLSAgICAgICAgICAgIGZvciBleGNlcHRpb24gaW4gX3NpZ25hbHM6Ci0gICAgICAgICAgICAgICAgbmV3Y29udGV4dC50cmFwc1tleGNlcHRpb25dID0gMAotCi0gICAgICAgICAgICAjIHJvdW5kIGluIHRoZSBuZXcgY29udGV4dAotICAgICAgICAgICAgYW5zID0gYW5zLl9maXgobmV3Y29udGV4dCkKLQotICAgICAgICAgICAgIyByYWlzZSBJbmV4YWN0LCBhbmQgaWYgbmVjZXNzYXJ5LCBVbmRlcmZsb3cKLSAgICAgICAgICAgIG5ld2NvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCi0gICAgICAgICAgICBpZiBuZXdjb250ZXh0LmZsYWdzW1N1Ym5vcm1hbF06Ci0gICAgICAgICAgICAgICAgbmV3Y29udGV4dC5fcmFpc2VfZXJyb3IoVW5kZXJmbG93KQotCi0gICAgICAgICAgICAjIHByb3BhZ2F0ZSBzaWduYWxzIHRvIHRoZSBvcmlnaW5hbCBjb250ZXh0OyBfZml4IGNvdWxkCi0gICAgICAgICAgICAjIGhhdmUgcmFpc2VkIGFueSBvZiBPdmVyZmxvdywgVW5kZXJmbG93LCBTdWJub3JtYWwsCi0gICAgICAgICAgICAjIEluZXhhY3QsIFJvdW5kZWQsIENsYW1wZWQuICBPdmVyZmxvdyBuZWVkcyB0aGUgY29ycmVjdAotICAgICAgICAgICAgIyBhcmd1bWVudHMuICBOb3RlIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSBleGNlcHRpb25zIGlzCi0gICAgICAgICAgICAjIGltcG9ydGFudCBoZXJlLgotICAgICAgICAgICAgaWYgbmV3Y29udGV4dC5mbGFnc1tPdmVyZmxvd106Ci0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoT3ZlcmZsb3csICdhYm92ZSBFbWF4JywgYW5zLl9zaWduKQotICAgICAgICAgICAgZm9yIGV4Y2VwdGlvbiBpbiBVbmRlcmZsb3csIFN1Ym5vcm1hbCwgSW5leGFjdCwgUm91bmRlZCwgQ2xhbXBlZDoKLSAgICAgICAgICAgICAgICBpZiBuZXdjb250ZXh0LmZsYWdzW2V4Y2VwdGlvbl06Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKGV4Y2VwdGlvbikKLQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLQotICAgICAgICByZXR1cm4gYW5zCi0KLSAgICBkZWYgX19ycG93X18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlN3YXBzIHNlbGYvb3RoZXIgYW5kIHJldHVybnMgX19wb3dfXy4iIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLSAgICAgICAgcmV0dXJuIG90aGVyLl9fcG93X18oc2VsZiwgY29udGV4dD1jb250ZXh0KQotCi0gICAgZGVmIG5vcm1hbGl6ZShzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJOb3JtYWxpemUtIHN0cmlwIHRyYWlsaW5nIDBzLCBjaGFuZ2UgYW55dGhpbmcgZXF1YWwgdG8gMCB0byAwZTAiIiIKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQotICAgICAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICBkdXAgPSBzZWxmLl9maXgoY29udGV4dCkKLSAgICAgICAgaWYgZHVwLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICByZXR1cm4gZHVwCi0KLSAgICAgICAgaWYgbm90IGR1cDoKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKGR1cC5fc2lnbiwgJzAnLCAwKQotICAgICAgICBleHBfbWF4ID0gW2NvbnRleHQuRW1heCwgY29udGV4dC5FdG9wKCldW2NvbnRleHQuY2xhbXBdCi0gICAgICAgIGVuZCA9IGxlbihkdXAuX2ludCkKLSAgICAgICAgZXhwID0gZHVwLl9leHAKLSAgICAgICAgd2hpbGUgZHVwLl9pbnRbZW5kLTFdID09ICcwJyBhbmQgZXhwIDwgZXhwX21heDoKLSAgICAgICAgICAgIGV4cCArPSAxCi0gICAgICAgICAgICBlbmQgLT0gMQotICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShkdXAuX3NpZ24sIGR1cC5faW50WzplbmRdLCBleHApCi0KLSAgICBkZWYgcXVhbnRpemUoc2VsZiwgZXhwLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUsIHdhdGNoZXhwPVRydWUpOgotICAgICAgICAiIiJRdWFudGl6ZSBzZWxmIHNvIGl0cyBleHBvbmVudCBpcyB0aGUgc2FtZSBhcyB0aGF0IG9mIGV4cC4KLQotICAgICAgICBTaW1pbGFyIHRvIHNlbGYuX3Jlc2NhbGUoZXhwLl9leHApIGJ1dCB3aXRoIGVycm9yIGNoZWNraW5nLgotICAgICAgICAiIiIKLSAgICAgICAgZXhwID0gX2NvbnZlcnRfb3RoZXIoZXhwLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICBpZiByb3VuZGluZyBpcyBOb25lOgotICAgICAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0LnJvdW5kaW5nCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBleHAuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGV4cCwgY29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgICAgIGlmIGV4cC5faXNpbmZpbml0eSgpIG9yIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICBpZiBleHAuX2lzaW5maW5pdHkoKSBhbmQgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKSAgIyBpZiBib3RoIGFyZSBpbmYsIGl0IGlzIE9LCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1YW50aXplIHdpdGggb25lIElORicpCi0KLSAgICAgICAgIyBpZiB3ZSdyZSBub3Qgd2F0Y2hpbmcgZXhwb25lbnRzLCBkbyBhIHNpbXBsZSByZXNjYWxlCi0gICAgICAgIGlmIG5vdCB3YXRjaGV4cDoKLSAgICAgICAgICAgIGFucyA9IHNlbGYuX3Jlc2NhbGUoZXhwLl9leHAsIHJvdW5kaW5nKQotICAgICAgICAgICAgIyByYWlzZSBJbmV4YWN0IGFuZCBSb3VuZGVkIHdoZXJlIGFwcHJvcHJpYXRlCi0gICAgICAgICAgICBpZiBhbnMuX2V4cCA+IHNlbGYuX2V4cDoKLSAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQotICAgICAgICAgICAgICAgIGlmIGFucyAhPSBzZWxmOgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgICMgZXhwLl9leHAgc2hvdWxkIGJlIGJldHdlZW4gRXRpbnkgYW5kIEVtYXgKLSAgICAgICAgaWYgbm90IChjb250ZXh0LkV0aW55KCkgPD0gZXhwLl9leHAgPD0gY29udGV4dC5FbWF4KToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICd0YXJnZXQgZXhwb25lbnQgb3V0IG9mIGJvdW5kcyBpbiBxdWFudGl6ZScpCi0KLSAgICAgICAgaWYgbm90IHNlbGY6Ci0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcwJywgZXhwLl9leHApCi0gICAgICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKLQotICAgICAgICBzZWxmX2FkanVzdGVkID0gc2VsZi5hZGp1c3RlZCgpCi0gICAgICAgIGlmIHNlbGZfYWRqdXN0ZWQgPiBjb250ZXh0LkVtYXg6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhwb25lbnQgb2YgcXVhbnRpemUgcmVzdWx0IHRvbyBsYXJnZSBmb3IgY3VycmVudCBjb250ZXh0JykKLSAgICAgICAgaWYgc2VsZl9hZGp1c3RlZCAtIGV4cC5fZXhwICsgMSA+IGNvbnRleHQucHJlYzoKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdWFudGl6ZSByZXN1bHQgaGFzIHRvbyBtYW55IGRpZ2l0cyBmb3IgY3VycmVudCBjb250ZXh0JykKLQotICAgICAgICBhbnMgPSBzZWxmLl9yZXNjYWxlKGV4cC5fZXhwLCByb3VuZGluZykKLSAgICAgICAgaWYgYW5zLmFkanVzdGVkKCkgPiBjb250ZXh0LkVtYXg6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhwb25lbnQgb2YgcXVhbnRpemUgcmVzdWx0IHRvbyBsYXJnZSBmb3IgY3VycmVudCBjb250ZXh0JykKLSAgICAgICAgaWYgbGVuKGFucy5faW50KSA+IGNvbnRleHQucHJlYzoKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdWFudGl6ZSByZXN1bHQgaGFzIHRvbyBtYW55IGRpZ2l0cyBmb3IgY3VycmVudCBjb250ZXh0JykKLQotICAgICAgICAjIHJhaXNlIGFwcHJvcHJpYXRlIGZsYWdzCi0gICAgICAgIGlmIGFucyBhbmQgYW5zLmFkanVzdGVkKCkgPCBjb250ZXh0LkVtaW46Ci0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihTdWJub3JtYWwpCi0gICAgICAgIGlmIGFucy5fZXhwID4gc2VsZi5fZXhwOgotICAgICAgICAgICAgaWYgYW5zICE9IHNlbGY6Ci0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCi0KLSAgICAgICAgIyBjYWxsIHRvIGZpeCB0YWtlcyBjYXJlIG9mIGFueSBuZWNlc3NhcnkgZm9sZGRvd24sIGFuZAotICAgICAgICAjIHNpZ25hbHMgQ2xhbXBlZCBpZiBuZWNlc3NhcnkKLSAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgcmV0dXJuIGFucwotCi0gICAgZGVmIHNhbWVfcXVhbnR1bShzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBhbmQgb3RoZXIgaGF2ZSB0aGUgc2FtZSBleHBvbmVudDsgb3RoZXJ3aXNlCi0gICAgICAgIHJldHVybiBGYWxzZS4KLQotICAgICAgICBJZiBlaXRoZXIgb3BlcmFuZCBpcyBhIHNwZWNpYWwgdmFsdWUsIHRoZSBmb2xsb3dpbmcgcnVsZXMgYXJlIHVzZWQ6Ci0gICAgICAgICAgICogcmV0dXJuIFRydWUgaWYgYm90aCBvcGVyYW5kcyBhcmUgaW5maW5pdGllcwotICAgICAgICAgICAqIHJldHVybiBUcnVlIGlmIGJvdGggb3BlcmFuZHMgYXJlIE5hTnMKLSAgICAgICAgICAgKiBvdGhlcndpc2UsIHJldHVybiBGYWxzZS4KLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIHJldHVybiAoc2VsZi5pc19uYW4oKSBhbmQgb3RoZXIuaXNfbmFuKCkgb3IKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5pc19pbmZpbml0ZSgpIGFuZCBvdGhlci5pc19pbmZpbml0ZSgpKQotICAgICAgICByZXR1cm4gc2VsZi5fZXhwID09IG90aGVyLl9leHAKLQotICAgIGRlZiBfcmVzY2FsZShzZWxmLCBleHAsIHJvdW5kaW5nKToKLSAgICAgICAgIiIiUmVzY2FsZSBzZWxmIHNvIHRoYXQgdGhlIGV4cG9uZW50IGlzIGV4cCwgZWl0aGVyIGJ5IHBhZGRpbmcgd2l0aCB6ZXJvcwotICAgICAgICBvciBieSB0cnVuY2F0aW5nIGRpZ2l0cywgdXNpbmcgdGhlIGdpdmVuIHJvdW5kaW5nIG1vZGUuCi0KLSAgICAgICAgU3BlY2lhbHMgYXJlIHJldHVybmVkIHdpdGhvdXQgY2hhbmdlLiAgVGhpcyBvcGVyYXRpb24gaXMKLSAgICAgICAgcXVpZXQ6IGl0IHJhaXNlcyBubyBmbGFncywgYW5kIHVzZXMgbm8gaW5mb3JtYXRpb24gZnJvbSB0aGUKLSAgICAgICAgY29udGV4dC4KLQotICAgICAgICBleHAgPSBleHAgdG8gc2NhbGUgdG8gKGFuIGludGVnZXIpCi0gICAgICAgIHJvdW5kaW5nID0gcm91bmRpbmcgbW9kZQotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0gICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzAnLCBleHApCi0KLSAgICAgICAgaWYgc2VsZi5fZXhwID49IGV4cDoKLSAgICAgICAgICAgICMgcGFkIGFuc3dlciB3aXRoIHplcm9zIGlmIG5lY2Vzc2FyeQotICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnQgKyAnMCcqKHNlbGYuX2V4cCAtIGV4cCksIGV4cCkKLQotICAgICAgICAjIHRvbyBtYW55IGRpZ2l0czsgcm91bmQgYW5kIGxvc2UgZGF0YS4gIElmIHNlbGYuYWRqdXN0ZWQoKSA8Ci0gICAgICAgICMgZXhwLTEsIHJlcGxhY2Ugc2VsZiBieSAxMCoqKGV4cC0xKSBiZWZvcmUgcm91bmRpbmcKLSAgICAgICAgZGlnaXRzID0gbGVuKHNlbGYuX2ludCkgKyBzZWxmLl9leHAgLSBleHAKLSAgICAgICAgaWYgZGlnaXRzIDwgMDoKLSAgICAgICAgICAgIHNlbGYgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcxJywgZXhwLTEpCi0gICAgICAgICAgICBkaWdpdHMgPSAwCi0gICAgICAgIHRoaXNfZnVuY3Rpb24gPSBzZWxmLl9waWNrX3JvdW5kaW5nX2Z1bmN0aW9uW3JvdW5kaW5nXQotICAgICAgICBjaGFuZ2VkID0gdGhpc19mdW5jdGlvbihzZWxmLCBkaWdpdHMpCi0gICAgICAgIGNvZWZmID0gc2VsZi5faW50WzpkaWdpdHNdIG9yICcwJwotICAgICAgICBpZiBjaGFuZ2VkID09IDE6Ci0gICAgICAgICAgICBjb2VmZiA9IHN0cihpbnQoY29lZmYpKzEpCi0gICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sIGNvZWZmLCBleHApCi0KLSAgICBkZWYgX3JvdW5kKHNlbGYsIHBsYWNlcywgcm91bmRpbmcpOgotICAgICAgICAiIiJSb3VuZCBhIG5vbnplcm8sIG5vbnNwZWNpYWwgRGVjaW1hbCB0byBhIGZpeGVkIG51bWJlciBvZgotICAgICAgICBzaWduaWZpY2FudCBmaWd1cmVzLCB1c2luZyB0aGUgZ2l2ZW4gcm91bmRpbmcgbW9kZS4KLQotICAgICAgICBJbmZpbml0aWVzLCBOYU5zIGFuZCB6ZXJvcyBhcmUgcmV0dXJuZWQgdW5hbHRlcmVkLgotCi0gICAgICAgIFRoaXMgb3BlcmF0aW9uIGlzIHF1aWV0OiBpdCByYWlzZXMgbm8gZmxhZ3MsIGFuZCB1c2VzIG5vCi0gICAgICAgIGluZm9ybWF0aW9uIGZyb20gdGhlIGNvbnRleHQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHBsYWNlcyA8PSAwOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXJndW1lbnQgc2hvdWxkIGJlIGF0IGxlYXN0IDEgaW4gX3JvdW5kIikKLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBub3Qgc2VsZjoKLSAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0gICAgICAgIGFucyA9IHNlbGYuX3Jlc2NhbGUoc2VsZi5hZGp1c3RlZCgpKzEtcGxhY2VzLCByb3VuZGluZykKLSAgICAgICAgIyBpdCBjYW4gaGFwcGVuIHRoYXQgdGhlIHJlc2NhbGUgYWx0ZXJzIHRoZSBhZGp1c3RlZCBleHBvbmVudDsKLSAgICAgICAgIyBmb3IgZXhhbXBsZSB3aGVuIHJvdW5kaW5nIDk5Ljk3IHRvIDMgc2lnbmlmaWNhbnQgZmlndXJlcy4KLSAgICAgICAgIyBXaGVuIHRoaXMgaGFwcGVucyB3ZSBlbmQgdXAgd2l0aCBhbiBleHRyYSAwIGF0IHRoZSBlbmQgb2YKLSAgICAgICAgIyB0aGUgbnVtYmVyOyBhIHNlY29uZCByZXNjYWxlIGZpeGVzIHRoaXMuCi0gICAgICAgIGlmIGFucy5hZGp1c3RlZCgpICE9IHNlbGYuYWRqdXN0ZWQoKToKLSAgICAgICAgICAgIGFucyA9IGFucy5fcmVzY2FsZShhbnMuYWRqdXN0ZWQoKSsxLXBsYWNlcywgcm91bmRpbmcpCi0gICAgICAgIHJldHVybiBhbnMKLQotICAgIGRlZiB0b19pbnRlZ3JhbF9leGFjdChzZWxmLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSb3VuZHMgdG8gYSBuZWFyYnkgaW50ZWdlci4KLQotICAgICAgICBJZiBubyByb3VuZGluZyBtb2RlIGlzIHNwZWNpZmllZCwgdGFrZSB0aGUgcm91bmRpbmcgbW9kZSBmcm9tCi0gICAgICAgIHRoZSBjb250ZXh0LiAgVGhpcyBtZXRob2QgcmFpc2VzIHRoZSBSb3VuZGVkIGFuZCBJbmV4YWN0IGZsYWdzCi0gICAgICAgIHdoZW4gYXBwcm9wcmlhdGUuCi0KLSAgICAgICAgU2VlIGFsc286IHRvX2ludGVncmFsX3ZhbHVlLCB3aGljaCBkb2VzIGV4YWN0bHkgdGhlIHNhbWUgYXMKLSAgICAgICAgdGhpcyBtZXRob2QgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCByYWlzZSBJbmV4YWN0IG9yIFJvdW5kZWQuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCi0gICAgICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFucwotICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKLSAgICAgICAgaWYgc2VsZi5fZXhwID49IDA6Ci0gICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcwJywgMCkKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICBpZiByb3VuZGluZyBpcyBOb25lOgotICAgICAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0LnJvdW5kaW5nCi0gICAgICAgIGFucyA9IHNlbGYuX3Jlc2NhbGUoMCwgcm91bmRpbmcpCi0gICAgICAgIGlmIGFucyAhPSBzZWxmOgotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKLSAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKLSAgICAgICAgcmV0dXJuIGFucwotCi0gICAgZGVmIHRvX2ludGVncmFsX3ZhbHVlKHNlbGYsIHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJvdW5kcyB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLCB3aXRob3V0IHJhaXNpbmcgaW5leGFjdCwgcm91bmRlZC4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICBpZiByb3VuZGluZyBpcyBOb25lOgotICAgICAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0LnJvdW5kaW5nCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0gICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotICAgICAgICBpZiBzZWxmLl9leHAgPj0gMDoKLSAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVzY2FsZSgwLCByb3VuZGluZykKLQotICAgICMgdGhlIG1ldGhvZCBuYW1lIGNoYW5nZWQsIGJ1dCB3ZSBwcm92aWRlIGFsc28gdGhlIG9sZCBvbmUsIGZvciBjb21wYXRpYmlsaXR5Ci0gICAgdG9faW50ZWdyYWwgPSB0b19pbnRlZ3JhbF92YWx1ZQotCi0gICAgZGVmIHNxcnQoc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBzcXVhcmUgcm9vdCBvZiBzZWxmLiIiIgotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQotICAgICAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpIGFuZCBzZWxmLl9zaWduID09IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKLQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgICMgZXhwb25lbnQgPSBzZWxmLl9leHAgLy8gMi4gIHNxcnQoLTApID0gLTAKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzAnLCBzZWxmLl9leHAgLy8gMikKLSAgICAgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgICAgIGlmIHNlbGYuX3NpZ24gPT0gMToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc3FydCgteCksIHggPiAwJykKLQotICAgICAgICAjIEF0IHRoaXMgcG9pbnQgc2VsZiByZXByZXNlbnRzIGEgcG9zaXRpdmUgbnVtYmVyLiAgTGV0IHAgYmUKLSAgICAgICAgIyB0aGUgZGVzaXJlZCBwcmVjaXNpb24gYW5kIGV4cHJlc3Mgc2VsZiBpbiB0aGUgZm9ybSBjKjEwMCoqZQotICAgICAgICAjIHdpdGggYyBhIHBvc2l0aXZlIHJlYWwgbnVtYmVyIGFuZCBlIGFuIGludGVnZXIsIGMgYW5kIGUKLSAgICAgICAgIyBiZWluZyBjaG9zZW4gc28gdGhhdCAxMDAqKihwLTEpIDw9IGMgPCAxMDAqKnAuICBUaGVuIHRoZQotICAgICAgICAjIChleGFjdCkgc3F1YXJlIHJvb3Qgb2Ygc2VsZiBpcyBzcXJ0KGMpKjEwKiplLCBhbmQgMTAqKihwLTEpCi0gICAgICAgICMgPD0gc3FydChjKSA8IDEwKipwLCBzbyB0aGUgY2xvc2VzdCByZXByZXNlbnRhYmxlIERlY2ltYWwgYXQKLSAgICAgICAgIyBwcmVjaXNpb24gcCBpcyBuKjEwKiplIHdoZXJlIG4gPSByb3VuZF9oYWxmX2V2ZW4oc3FydChjKSksCi0gICAgICAgICMgdGhlIGNsb3Nlc3QgaW50ZWdlciB0byBzcXJ0KGMpIHdpdGggdGhlIGV2ZW4gaW50ZWdlciBjaG9zZW4KLSAgICAgICAgIyBpbiB0aGUgY2FzZSBvZiBhIHRpZS4KLSAgICAgICAgIwotICAgICAgICAjIFRvIGVuc3VyZSBjb3JyZWN0IHJvdW5kaW5nIGluIGFsbCBjYXNlcywgd2UgdXNlIHRoZQotICAgICAgICAjIGZvbGxvd2luZyB0cmljazogd2UgY29tcHV0ZSB0aGUgc3F1YXJlIHJvb3QgdG8gYW4gZXh0cmEKLSAgICAgICAgIyBwbGFjZSAocHJlY2lzaW9uIHArMSBpbnN0ZWFkIG9mIHByZWNpc2lvbiBwKSwgcm91bmRpbmcgZG93bi4KLSAgICAgICAgIyBUaGVuLCBpZiB0aGUgcmVzdWx0IGlzIGluZXhhY3QgYW5kIGl0cyBsYXN0IGRpZ2l0IGlzIDAgb3IgNSwKLSAgICAgICAgIyB3ZSBpbmNyZWFzZSB0aGUgbGFzdCBkaWdpdCB0byAxIG9yIDYgcmVzcGVjdGl2ZWx5OyBpZiBpdCdzCi0gICAgICAgICMgZXhhY3Qgd2UgbGVhdmUgdGhlIGxhc3QgZGlnaXQgYWxvbmUuICBOb3cgdGhlIGZpbmFsIHJvdW5kIHRvCi0gICAgICAgICMgcCBwbGFjZXMgKG9yIGZld2VyIGluIHRoZSBjYXNlIG9mIHVuZGVyZmxvdykgd2lsbCByb3VuZAotICAgICAgICAjIGNvcnJlY3RseSBhbmQgcmFpc2UgdGhlIGFwcHJvcHJpYXRlIGZsYWdzLgotCi0gICAgICAgICMgdXNlIGFuIGV4dHJhIGRpZ2l0IG9mIHByZWNpc2lvbgotICAgICAgICBwcmVjID0gY29udGV4dC5wcmVjKzEKLQotICAgICAgICAjIHdyaXRlIGFyZ3VtZW50IGluIHRoZSBmb3JtIGMqMTAwKiplIHdoZXJlIGUgPSBzZWxmLl9leHAvLzIKLSAgICAgICAgIyBpcyB0aGUgJ2lkZWFsJyBleHBvbmVudCwgdG8gYmUgdXNlZCBpZiB0aGUgc3F1YXJlIHJvb3QgaXMKLSAgICAgICAgIyBleGFjdGx5IHJlcHJlc2VudGFibGUuICBsIGlzIHRoZSBudW1iZXIgb2YgJ2RpZ2l0cycgb2YgYyBpbgotICAgICAgICAjIGJhc2UgMTAwLCBzbyB0aGF0IDEwMCoqKGwtMSkgPD0gYyA8IDEwMCoqbC4KLSAgICAgICAgb3AgPSBfV29ya1JlcChzZWxmKQotICAgICAgICBlID0gb3AuZXhwID4+IDEKLSAgICAgICAgaWYgb3AuZXhwICYgMToKLSAgICAgICAgICAgIGMgPSBvcC5pbnQgKiAxMAotICAgICAgICAgICAgbCA9IChsZW4oc2VsZi5faW50KSA+PiAxKSArIDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGMgPSBvcC5pbnQKLSAgICAgICAgICAgIGwgPSBsZW4oc2VsZi5faW50KSsxID4+IDEKLQotICAgICAgICAjIHJlc2NhbGUgc28gdGhhdCBjIGhhcyBleGFjdGx5IHByZWMgYmFzZSAxMDAgJ2RpZ2l0cycKLSAgICAgICAgc2hpZnQgPSBwcmVjLWwKLSAgICAgICAgaWYgc2hpZnQgPj0gMDoKLSAgICAgICAgICAgIGMgKj0gMTAwKipzaGlmdAotICAgICAgICAgICAgZXhhY3QgPSBUcnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjLCByZW1haW5kZXIgPSBkaXZtb2QoYywgMTAwKiotc2hpZnQpCi0gICAgICAgICAgICBleGFjdCA9IG5vdCByZW1haW5kZXIKLSAgICAgICAgZSAtPSBzaGlmdAotCi0gICAgICAgICMgZmluZCBuID0gZmxvb3Ioc3FydChjKSkgdXNpbmcgTmV3dG9uJ3MgbWV0aG9kCi0gICAgICAgIG4gPSAxMCoqcHJlYwotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgcSA9IGMvL24KLSAgICAgICAgICAgIGlmIG4gPD0gcToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBuID0gbiArIHEgPj4gMQotICAgICAgICBleGFjdCA9IGV4YWN0IGFuZCBuKm4gPT0gYwotCi0gICAgICAgIGlmIGV4YWN0OgotICAgICAgICAgICAgIyByZXN1bHQgaXMgZXhhY3Q7IHJlc2NhbGUgdG8gdXNlIGlkZWFsIGV4cG9uZW50IGUKLSAgICAgICAgICAgIGlmIHNoaWZ0ID49IDA6Ci0gICAgICAgICAgICAgICAgIyBhc3NlcnQgbiAlIDEwKipzaGlmdCA9PSAwCi0gICAgICAgICAgICAgICAgbiAvLz0gMTAqKnNoaWZ0Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG4gKj0gMTAqKi1zaGlmdAotICAgICAgICAgICAgZSArPSBzaGlmdAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyByZXN1bHQgaXMgbm90IGV4YWN0OyBmaXggbGFzdCBkaWdpdCBhcyBkZXNjcmliZWQgYWJvdmUKLSAgICAgICAgICAgIGlmIG4gJSA1ID09IDA6Ci0gICAgICAgICAgICAgICAgbiArPSAxCi0KLSAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZSgwLCBzdHIobiksIGUpCi0KLSAgICAgICAgIyByb3VuZCwgYW5kIGZpdCB0byBjdXJyZW50IGNvbnRleHQKLSAgICAgICAgY29udGV4dCA9IGNvbnRleHQuX3NoYWxsb3dfY29weSgpCi0gICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX0hBTEZfRVZFTikKLSAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgY29udGV4dC5yb3VuZGluZyA9IHJvdW5kaW5nCi0KLSAgICAgICAgcmV0dXJuIGFucwotCi0gICAgZGVmIG1heChzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgbGFyZ2VyIHZhbHVlLgotCi0gICAgICAgIExpa2UgbWF4KHNlbGYsIG90aGVyKSBleGNlcHQgaWYgb25lIGlzIG5vdCBhIG51bWJlciwgcmV0dXJucwotICAgICAgICBOYU4gKGFuZCBzaWduYWxzIGlmIG9uZSBpcyBzTmFOKS4gIEFsc28gcm91bmRzLgotICAgICAgICAiIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgIyBJZiBvbmUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTiBhbmQgdGhlIG90aGVyIGlzIG51bWJlciwgdGhlbiB0aGUKLSAgICAgICAgICAgICMgbnVtYmVyIGlzIGFsd2F5cyByZXR1cm5lZAotICAgICAgICAgICAgc24gPSBzZWxmLl9pc25hbigpCi0gICAgICAgICAgICBvbiA9IG90aGVyLl9pc25hbigpCi0gICAgICAgICAgICBpZiBzbiBvciBvbjoKLSAgICAgICAgICAgICAgICBpZiBvbiA9PSAxIGFuZCBzbiA9PSAwOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZml4KGNvbnRleHQpCi0gICAgICAgICAgICAgICAgaWYgc24gPT0gMSBhbmQgb24gPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLQotICAgICAgICBjID0gc2VsZi5fY21wKG90aGVyKQotICAgICAgICBpZiBjID09IDA6Ci0gICAgICAgICAgICAjIElmIGJvdGggb3BlcmFuZHMgYXJlIGZpbml0ZSBhbmQgZXF1YWwgaW4gbnVtZXJpY2FsIHZhbHVlCi0gICAgICAgICAgICAjIHRoZW4gYW4gb3JkZXJpbmcgaXMgYXBwbGllZDoKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgSWYgdGhlIHNpZ25zIGRpZmZlciB0aGVuIG1heCByZXR1cm5zIHRoZSBvcGVyYW5kIHdpdGggdGhlCi0gICAgICAgICAgICAjIHBvc2l0aXZlIHNpZ24gYW5kIG1pbiByZXR1cm5zIHRoZSBvcGVyYW5kIHdpdGggdGhlIG5lZ2F0aXZlIHNpZ24KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgSWYgdGhlIHNpZ25zIGFyZSB0aGUgc2FtZSB0aGVuIHRoZSBleHBvbmVudCBpcyB1c2VkIHRvIHNlbGVjdAotICAgICAgICAgICAgIyB0aGUgcmVzdWx0LiAgVGhpcyBpcyBleGFjdGx5IHRoZSBvcmRlcmluZyB1c2VkIGluIGNvbXBhcmVfdG90YWwuCi0gICAgICAgICAgICBjID0gc2VsZi5jb21wYXJlX3RvdGFsKG90aGVyKQotCi0gICAgICAgIGlmIGMgPT0gLTE6Ci0gICAgICAgICAgICBhbnMgPSBvdGhlcgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYW5zID0gc2VsZgotCi0gICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgZGVmIG1pbihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgc21hbGxlciB2YWx1ZS4KLQotICAgICAgICBMaWtlIG1pbihzZWxmLCBvdGhlcikgZXhjZXB0IGlmIG9uZSBpcyBub3QgYSBudW1iZXIsIHJldHVybnMKLSAgICAgICAgTmFOIChhbmQgc2lnbmFscyBpZiBvbmUgaXMgc05hTikuICBBbHNvIHJvdW5kcy4KLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgICMgSWYgb25lIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpcyBudW1iZXIsIHRoZW4gdGhlCi0gICAgICAgICAgICAjIG51bWJlciBpcyBhbHdheXMgcmV0dXJuZWQKLSAgICAgICAgICAgIHNuID0gc2VsZi5faXNuYW4oKQotICAgICAgICAgICAgb24gPSBvdGhlci5faXNuYW4oKQotICAgICAgICAgICAgaWYgc24gb3Igb246Ci0gICAgICAgICAgICAgICAgaWYgb24gPT0gMSBhbmQgc24gPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgICAgIGlmIHNuID09IDEgYW5kIG9uID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlci5fZml4KGNvbnRleHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0KLSAgICAgICAgYyA9IHNlbGYuX2NtcChvdGhlcikKLSAgICAgICAgaWYgYyA9PSAwOgotICAgICAgICAgICAgYyA9IHNlbGYuY29tcGFyZV90b3RhbChvdGhlcikKLQotICAgICAgICBpZiBjID09IC0xOgotICAgICAgICAgICAgYW5zID0gc2VsZgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYW5zID0gb3RoZXIKLQotICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKLQotICAgIGRlZiBfaXNpbnRlZ2VyKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIHdoZXRoZXIgc2VsZiBpcyBhbiBpbnRlZ2VyIiIiCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgc2VsZi5fZXhwID49IDA6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXN0ID0gc2VsZi5faW50W3NlbGYuX2V4cDpdCi0gICAgICAgIHJldHVybiByZXN0ID09ICcwJypsZW4ocmVzdCkKLQotICAgIGRlZiBfaXNldmVuKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIFRydWUgaWYgc2VsZiBpcyBldmVuLiAgQXNzdW1lcyBzZWxmIGlzIGFuIGludGVnZXIuIiIiCi0gICAgICAgIGlmIG5vdCBzZWxmIG9yIHNlbGYuX2V4cCA+IDA6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gc2VsZi5faW50Wy0xK3NlbGYuX2V4cF0gaW4gJzAyNDY4JwotCi0gICAgZGVmIGFkanVzdGVkKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHNlbGYiIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V4cCArIGxlbihzZWxmLl9pbnQpIC0gMQotICAgICAgICAjIElmIE5hTiBvciBJbmZpbml0eSwgc2VsZi5fZXhwIGlzIHN0cmluZwotICAgICAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICAgICAgcmV0dXJuIDAKLQotICAgIGRlZiBjYW5vbmljYWwoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIHNhbWUgRGVjaW1hbCBvYmplY3QuCi0KLSAgICAgICAgQXMgd2UgZG8gbm90IGhhdmUgZGlmZmVyZW50IGVuY29kaW5ncyBmb3IgdGhlIHNhbWUgbnVtYmVyLCB0aGUKLSAgICAgICAgcmVjZWl2ZWQgb2JqZWN0IGFscmVhZHkgaXMgaW4gaXRzIGNhbm9uaWNhbCBmb3JtLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBjb21wYXJlX3NpZ25hbChzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiQ29tcGFyZXMgc2VsZiB0byB0aGUgb3RoZXIgb3BlcmFuZCBudW1lcmljYWxseS4KLQotICAgICAgICBJdCdzIHByZXR0eSBtdWNoIGxpa2UgY29tcGFyZSgpLCBidXQgYWxsIE5hTnMgc2lnbmFsLCB3aXRoIHNpZ25hbGluZwotICAgICAgICBOYU5zIHRha2luZyBwcmVjZWRlbmNlIG92ZXIgcXVpZXQgTmFOcy4KLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQgPSBUcnVlKQotICAgICAgICBhbnMgPSBzZWxmLl9jb21wYXJlX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLSAgICAgICAgcmV0dXJuIHNlbGYuY29tcGFyZShvdGhlciwgY29udGV4dD1jb250ZXh0KQotCi0gICAgZGVmIGNvbXBhcmVfdG90YWwoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIkNvbXBhcmVzIHNlbGYgdG8gb3RoZXIgdXNpbmcgdGhlIGFic3RyYWN0IHJlcHJlc2VudGF0aW9ucy4KLQotICAgICAgICBUaGlzIGlzIG5vdCBsaWtlIHRoZSBzdGFuZGFyZCBjb21wYXJlLCB3aGljaCB1c2UgdGhlaXIgbnVtZXJpY2FsCi0gICAgICAgIHZhbHVlLiBOb3RlIHRoYXQgYSB0b3RhbCBvcmRlcmluZyBpcyBkZWZpbmVkIGZvciBhbGwgcG9zc2libGUgYWJzdHJhY3QKLSAgICAgICAgcmVwcmVzZW50YXRpb25zLgotICAgICAgICAiIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgICMgaWYgb25lIGlzIG5lZ2F0aXZlIGFuZCB0aGUgb3RoZXIgaXMgcG9zaXRpdmUsIGl0J3MgZWFzeQotICAgICAgICBpZiBzZWxmLl9zaWduIGFuZCBub3Qgb3RoZXIuX3NpZ246Ci0gICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCi0gICAgICAgIGlmIG5vdCBzZWxmLl9zaWduIGFuZCBvdGhlci5fc2lnbjoKLSAgICAgICAgICAgIHJldHVybiBfT25lCi0gICAgICAgIHNpZ24gPSBzZWxmLl9zaWduCi0KLSAgICAgICAgIyBsZXQncyBoYW5kbGUgYm90aCBOYU4gdHlwZXMKLSAgICAgICAgc2VsZl9uYW4gPSBzZWxmLl9pc25hbigpCi0gICAgICAgIG90aGVyX25hbiA9IG90aGVyLl9pc25hbigpCi0gICAgICAgIGlmIHNlbGZfbmFuIG9yIG90aGVyX25hbjoKLSAgICAgICAgICAgIGlmIHNlbGZfbmFuID09IG90aGVyX25hbjoKLSAgICAgICAgICAgICAgICAjIGNvbXBhcmUgcGF5bG9hZHMgYXMgdGhvdWdoIHRoZXkncmUgaW50ZWdlcnMKLSAgICAgICAgICAgICAgICBzZWxmX2tleSA9IGxlbihzZWxmLl9pbnQpLCBzZWxmLl9pbnQKLSAgICAgICAgICAgICAgICBvdGhlcl9rZXkgPSBsZW4ob3RoZXIuX2ludCksIG90aGVyLl9pbnQKLSAgICAgICAgICAgICAgICBpZiBzZWxmX2tleSA8IG90aGVyX2tleToKLSAgICAgICAgICAgICAgICAgICAgaWYgc2lnbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfT25lCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCi0gICAgICAgICAgICAgICAgaWYgc2VsZl9rZXkgPiBvdGhlcl9rZXk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNpZ246Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX09uZQotICAgICAgICAgICAgICAgIHJldHVybiBfWmVybwotCi0gICAgICAgICAgICBpZiBzaWduOgotICAgICAgICAgICAgICAgIGlmIHNlbGZfbmFuID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKLSAgICAgICAgICAgICAgICBpZiBvdGhlcl9uYW4gPT0gMToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKLSAgICAgICAgICAgICAgICBpZiBzZWxmX25hbiA9PSAyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCi0gICAgICAgICAgICAgICAgaWYgb3RoZXJfbmFuID09IDI6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBfT25lCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIHNlbGZfbmFuID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBfT25lCi0gICAgICAgICAgICAgICAgaWYgb3RoZXJfbmFuID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKLSAgICAgICAgICAgICAgICBpZiBzZWxmX25hbiA9PSAyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX09uZQotICAgICAgICAgICAgICAgIGlmIG90aGVyX25hbiA9PSAyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCi0KLSAgICAgICAgaWYgc2VsZiA8IG90aGVyOgotICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQotICAgICAgICBpZiBzZWxmID4gb3RoZXI6Ci0gICAgICAgICAgICByZXR1cm4gX09uZQotCi0gICAgICAgIGlmIHNlbGYuX2V4cCA8IG90aGVyLl9leHA6Ci0gICAgICAgICAgICBpZiBzaWduOgotICAgICAgICAgICAgICAgIHJldHVybiBfT25lCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKLSAgICAgICAgaWYgc2VsZi5fZXhwID4gb3RoZXIuX2V4cDoKLSAgICAgICAgICAgIGlmIHNpZ246Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gX09uZQotICAgICAgICByZXR1cm4gX1plcm8KLQotCi0gICAgZGVmIGNvbXBhcmVfdG90YWxfbWFnKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJDb21wYXJlcyBzZWxmIHRvIG90aGVyIHVzaW5nIGFic3RyYWN0IHJlcHIuLCBpZ25vcmluZyBzaWduLgotCi0gICAgICAgIExpa2UgY29tcGFyZV90b3RhbCwgYnV0IHdpdGggb3BlcmFuZCdzIHNpZ24gaWdub3JlZCBhbmQgYXNzdW1lZCB0byBiZSAwLgotICAgICAgICAiIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIHMgPSBzZWxmLmNvcHlfYWJzKCkKLSAgICAgICAgbyA9IG90aGVyLmNvcHlfYWJzKCkKLSAgICAgICAgcmV0dXJuIHMuY29tcGFyZV90b3RhbChvKQotCi0gICAgZGVmIGNvcHlfYWJzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIGEgY29weSB3aXRoIHRoZSBzaWduIHNldCB0byAwLiAiIiIKLSAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgc2VsZi5faW50LCBzZWxmLl9leHAsIHNlbGYuX2lzX3NwZWNpYWwpCi0KLSAgICBkZWYgY29weV9uZWdhdGUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgYSBjb3B5IHdpdGggdGhlIHNpZ24gaW52ZXJ0ZWQuIiIiCi0gICAgICAgIGlmIHNlbGYuX3NpZ246Ci0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCBzZWxmLl9pbnQsIHNlbGYuX2V4cCwgc2VsZi5faXNfc3BlY2lhbCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDEsIHNlbGYuX2ludCwgc2VsZi5fZXhwLCBzZWxmLl9pc19zcGVjaWFsKQotCi0gICAgZGVmIGNvcHlfc2lnbihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyBzZWxmIHdpdGggdGhlIHNpZ24gb2Ygb3RoZXIuIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUob3RoZXIuX3NpZ24sIHNlbGYuX2ludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwLCBzZWxmLl9pc19zcGVjaWFsKQotCi0gICAgZGVmIGV4cChzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIGUgKiogc2VsZi4iIiIKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgIyBleHAoTmFOKSA9IE5hTgotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgICMgZXhwKC1JbmZpbml0eSkgPSAwCi0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAtMToKLSAgICAgICAgICAgIHJldHVybiBfWmVybwotCi0gICAgICAgICMgZXhwKDApID0gMQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIHJldHVybiBfT25lCi0KLSAgICAgICAgIyBleHAoSW5maW5pdHkpID0gSW5maW5pdHkKLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotCi0gICAgICAgICMgdGhlIHJlc3VsdCBpcyBub3cgZ3VhcmFudGVlZCB0byBiZSBpbmV4YWN0ICh0aGUgdHJ1ZQotICAgICAgICAjIG1hdGhlbWF0aWNhbCByZXN1bHQgaXMgdHJhbnNjZW5kZW50YWwpLiBUaGVyZSdzIG5vIG5lZWQgdG8KLSAgICAgICAgIyByYWlzZSBSb3VuZGVkIGFuZCBJbmV4YWN0IGhlcmUtLS10aGV5J2xsIGFsd2F5cyBiZSByYWlzZWQgYXMKLSAgICAgICAgIyBhIHJlc3VsdCBvZiB0aGUgY2FsbCB0byBfZml4LgotICAgICAgICBwID0gY29udGV4dC5wcmVjCi0gICAgICAgIGFkaiA9IHNlbGYuYWRqdXN0ZWQoKQotCi0gICAgICAgICMgd2Ugb25seSBuZWVkIHRvIGRvIGFueSBjb21wdXRhdGlvbiBmb3IgcXVpdGUgYSBzbWFsbCByYW5nZQotICAgICAgICAjIG9mIGFkanVzdGVkIGV4cG9uZW50cy0tLWZvciBleGFtcGxlLCAtMjkgPD0gYWRqIDw9IDEwIGZvcgotICAgICAgICAjIHRoZSBkZWZhdWx0IGNvbnRleHQuICBGb3Igc21hbGxlciBleHBvbmVudCB0aGUgcmVzdWx0IGlzCi0gICAgICAgICMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSAxIGF0IHRoZSBnaXZlbiBwcmVjaXNpb24sIHdoaWxlIGZvcgotICAgICAgICAjIGxhcmdlciBleHBvbmVudCB0aGUgcmVzdWx0IGVpdGhlciBvdmVyZmxvd3Mgb3IgdW5kZXJmbG93cy4KLSAgICAgICAgaWYgc2VsZi5fc2lnbiA9PSAwIGFuZCBhZGogPiBsZW4oc3RyKChjb250ZXh0LkVtYXgrMSkqMykpOgotICAgICAgICAgICAgIyBvdmVyZmxvdwotICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZSgwLCAnMScsIGNvbnRleHQuRW1heCsxKQotICAgICAgICBlbGlmIHNlbGYuX3NpZ24gPT0gMSBhbmQgYWRqID4gbGVuKHN0cigoLWNvbnRleHQuRXRpbnkoKSsxKSozKSk6Ci0gICAgICAgICAgICAjIHVuZGVyZmxvdyB0byAwCi0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKDAsICcxJywgY29udGV4dC5FdGlueSgpLTEpCi0gICAgICAgIGVsaWYgc2VsZi5fc2lnbiA9PSAwIGFuZCBhZGogPCAtcDoKLSAgICAgICAgICAgICMgcCsxIGRpZ2l0czsgZmluYWwgcm91bmQgd2lsbCByYWlzZSBjb3JyZWN0IGZsYWdzCi0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKDAsICcxJyArICcwJyoocC0xKSArICcxJywgLXApCi0gICAgICAgIGVsaWYgc2VsZi5fc2lnbiA9PSAxIGFuZCBhZGogPCAtcC0xOgotICAgICAgICAgICAgIyBwKzEgZGlnaXRzOyBmaW5hbCByb3VuZCB3aWxsIHJhaXNlIGNvcnJlY3QgZmxhZ3MKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoMCwgJzknKihwKzEpLCAtcC0xKQotICAgICAgICAjIGdlbmVyYWwgY2FzZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3AgPSBfV29ya1JlcChzZWxmKQotICAgICAgICAgICAgYywgZSA9IG9wLmludCwgb3AuZXhwCi0gICAgICAgICAgICBpZiBvcC5zaWduID09IDE6Ci0gICAgICAgICAgICAgICAgYyA9IC1jCi0KLSAgICAgICAgICAgICMgY29tcHV0ZSBjb3JyZWN0bHkgcm91bmRlZCByZXN1bHQ6IGluY3JlYXNlIHByZWNpc2lvbiBieQotICAgICAgICAgICAgIyAzIGRpZ2l0cyBhdCBhIHRpbWUgdW50aWwgd2UgZ2V0IGFuIHVuYW1iaWd1b3VzbHkKLSAgICAgICAgICAgICMgcm91bmRhYmxlIHJlc3VsdAotICAgICAgICAgICAgZXh0cmEgPSAzCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIGNvZWZmLCBleHAgPSBfZGV4cChjLCBlLCBwK2V4dHJhKQotICAgICAgICAgICAgICAgIGlmIGNvZWZmICUgKDUqMTAqKihsZW4oc3RyKGNvZWZmKSktcC0xKSk6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZXh0cmEgKz0gMwotCi0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKDAsIHN0cihjb2VmZiksIGV4cCkKLQotICAgICAgICAjIGF0IHRoaXMgc3RhZ2UsIGFucyBzaG91bGQgcm91bmQgY29ycmVjdGx5IHdpdGggKmFueSoKLSAgICAgICAgIyByb3VuZGluZyBtb2RlLCBub3QganVzdCB3aXRoIFJPVU5EX0hBTEZfRVZFTgotICAgICAgICBjb250ZXh0ID0gY29udGV4dC5fc2hhbGxvd19jb3B5KCkKLSAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0Ll9zZXRfcm91bmRpbmcoUk9VTkRfSEFMRl9FVkVOKQotICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gcm91bmRpbmcKLQotICAgICAgICByZXR1cm4gYW5zCi0KLSAgICBkZWYgaXNfY2Fub25pY2FsKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGNhbm9uaWNhbDsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KLQotICAgICAgICBDdXJyZW50bHksIHRoZSBlbmNvZGluZyBvZiBhIERlY2ltYWwgaW5zdGFuY2UgaXMgYWx3YXlzCi0gICAgICAgIGNhbm9uaWNhbCwgc28gdGhpcyBtZXRob2QgcmV0dXJucyBUcnVlIGZvciBhbnkgRGVjaW1hbC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgaXNfZmluaXRlKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGZpbml0ZTsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KLQotICAgICAgICBBIERlY2ltYWwgaW5zdGFuY2UgaXMgY29uc2lkZXJlZCBmaW5pdGUgaWYgaXQgaXMgbmVpdGhlcgotICAgICAgICBpbmZpbml0ZSBub3IgYSBOYU4uCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gbm90IHNlbGYuX2lzX3NwZWNpYWwKLQotICAgIGRlZiBpc19pbmZpbml0ZShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBpbmZpbml0ZTsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4cCA9PSAnRicKLQotICAgIGRlZiBpc19uYW4oc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSBxTmFOIG9yIHNOYU47IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9leHAgaW4gKCduJywgJ04nKQotCi0gICAgZGVmIGlzX25vcm1hbChzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgbm9ybWFsIG51bWJlcjsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBub3Qgc2VsZjoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIHJldHVybiBjb250ZXh0LkVtaW4gPD0gc2VsZi5hZGp1c3RlZCgpCi0KLSAgICBkZWYgaXNfcW5hbihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIHF1aWV0IE5hTjsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4cCA9PSAnbicKLQotICAgIGRlZiBpc19zaWduZWQoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgbmVnYXRpdmU7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9zaWduID09IDEKLQotICAgIGRlZiBpc19zbmFuKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgc2lnbmFsaW5nIE5hTjsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4cCA9PSAnTicKLQotICAgIGRlZiBpc19zdWJub3JtYWwoc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBzdWJub3JtYWw7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igbm90IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICByZXR1cm4gc2VsZi5hZGp1c3RlZCgpIDwgY29udGV4dC5FbWluCi0KLSAgICBkZWYgaXNfemVybyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIHplcm87IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCi0gICAgICAgIHJldHVybiBub3Qgc2VsZi5faXNfc3BlY2lhbCBhbmQgc2VsZi5faW50ID09ICcwJwotCi0gICAgZGVmIF9sbl9leHBfYm91bmQoc2VsZik6Ci0gICAgICAgICIiIkNvbXB1dGUgYSBsb3dlciBib3VuZCBmb3IgdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHNlbGYubG4oKS4KLSAgICAgICAgSW4gb3RoZXIgd29yZHMsIGNvbXB1dGUgciBzdWNoIHRoYXQgc2VsZi5sbigpID49IDEwKipyLiAgQXNzdW1lcwotICAgICAgICB0aGF0IHNlbGYgaXMgZmluaXRlIGFuZCBwb3NpdGl2ZSBhbmQgdGhhdCBzZWxmICE9IDEuCi0gICAgICAgICIiIgotCi0gICAgICAgICMgZm9yIDAuMSA8PSB4IDw9IDEwIHdlIHVzZSB0aGUgaW5lcXVhbGl0aWVzIDEtMS94IDw9IGxuKHgpIDw9IHgtMQotICAgICAgICBhZGogPSBzZWxmLl9leHAgKyBsZW4oc2VsZi5faW50KSAtIDEKLSAgICAgICAgaWYgYWRqID49IDE6Ci0gICAgICAgICAgICAjIGFyZ3VtZW50ID49IDEwOyB3ZSB1c2UgMjMvMTAgPSAyLjMgYXMgYSBsb3dlciBib3VuZCBmb3IgbG4oMTApCi0gICAgICAgICAgICByZXR1cm4gbGVuKHN0cihhZGoqMjMvLzEwKSkgLSAxCi0gICAgICAgIGlmIGFkaiA8PSAtMjoKLSAgICAgICAgICAgICMgYXJndW1lbnQgPD0gMC4xCi0gICAgICAgICAgICByZXR1cm4gbGVuKHN0cigoLTEtYWRqKSoyMy8vMTApKSAtIDEKLSAgICAgICAgb3AgPSBfV29ya1JlcChzZWxmKQotICAgICAgICBjLCBlID0gb3AuaW50LCBvcC5leHAKLSAgICAgICAgaWYgYWRqID09IDA6Ci0gICAgICAgICAgICAjIDEgPCBzZWxmIDwgMTAKLSAgICAgICAgICAgIG51bSA9IHN0cihjLTEwKiotZSkKLSAgICAgICAgICAgIGRlbiA9IHN0cihjKQotICAgICAgICAgICAgcmV0dXJuIGxlbihudW0pIC0gbGVuKGRlbikgLSAobnVtIDwgZGVuKQotICAgICAgICAjIGFkaiA9PSAtMSwgMC4xIDw9IHNlbGYgPCAxCi0gICAgICAgIHJldHVybiBlICsgbGVuKHN0cigxMCoqLWUgLSBjKSkgLSAxCi0KLQotICAgIGRlZiBsbihzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBuYXR1cmFsIChiYXNlIGUpIGxvZ2FyaXRobSBvZiBzZWxmLiIiIgotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICAjIGxuKE5hTikgPSBOYU4KLSAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAjIGxuKDAuMCkgPT0gLUluZmluaXR5Ci0gICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZUluZmluaXR5Ci0KLSAgICAgICAgIyBsbihJbmZpbml0eSkgPSBJbmZpbml0eQotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gMToKLSAgICAgICAgICAgIHJldHVybiBfSW5maW5pdHkKLQotICAgICAgICAjIGxuKDEuMCkgPT0gMC4wCi0gICAgICAgIGlmIHNlbGYgPT0gX09uZToKLSAgICAgICAgICAgIHJldHVybiBfWmVybwotCi0gICAgICAgICMgbG4obmVnYXRpdmUpIHJhaXNlcyBJbnZhbGlkT3BlcmF0aW9uCi0gICAgICAgIGlmIHNlbGYuX3NpZ24gPT0gMToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsbiBvZiBhIG5lZ2F0aXZlIHZhbHVlJykKLQotICAgICAgICAjIHJlc3VsdCBpcyBpcnJhdGlvbmFsLCBzbyBuZWNlc3NhcmlseSBpbmV4YWN0Ci0gICAgICAgIG9wID0gX1dvcmtSZXAoc2VsZikKLSAgICAgICAgYywgZSA9IG9wLmludCwgb3AuZXhwCi0gICAgICAgIHAgPSBjb250ZXh0LnByZWMKLQotICAgICAgICAjIGNvcnJlY3RseSByb3VuZGVkIHJlc3VsdDogcmVwZWF0ZWRseSBpbmNyZWFzZSBwcmVjaXNpb24gYnkgMwotICAgICAgICAjIHVudGlsIHdlIGdldCBhbiB1bmFtYmlndW91c2x5IHJvdW5kYWJsZSByZXN1bHQKLSAgICAgICAgcGxhY2VzID0gcCAtIHNlbGYuX2xuX2V4cF9ib3VuZCgpICsgMiAjIGF0IGxlYXN0IHArMyBwbGFjZXMKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGNvZWZmID0gX2Rsb2coYywgZSwgcGxhY2VzKQotICAgICAgICAgICAgIyBhc3NlcnQgbGVuKHN0cihhYnMoY29lZmYpKSktcCA+PSAxCi0gICAgICAgICAgICBpZiBjb2VmZiAlICg1KjEwKioobGVuKHN0cihhYnMoY29lZmYpKSktcC0xKSk6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHBsYWNlcyArPSAzCi0gICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoaW50KGNvZWZmPDApLCBzdHIoYWJzKGNvZWZmKSksIC1wbGFjZXMpCi0KLSAgICAgICAgY29udGV4dCA9IGNvbnRleHQuX3NoYWxsb3dfY29weSgpCi0gICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX0hBTEZfRVZFTikKLSAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgY29udGV4dC5yb3VuZGluZyA9IHJvdW5kaW5nCi0gICAgICAgIHJldHVybiBhbnMKLQotICAgIGRlZiBfbG9nMTBfZXhwX2JvdW5kKHNlbGYpOgotICAgICAgICAiIiJDb21wdXRlIGEgbG93ZXIgYm91bmQgZm9yIHRoZSBhZGp1c3RlZCBleHBvbmVudCBvZiBzZWxmLmxvZzEwKCkuCi0gICAgICAgIEluIG90aGVyIHdvcmRzLCBmaW5kIHIgc3VjaCB0aGF0IHNlbGYubG9nMTAoKSA+PSAxMCoqci4KLSAgICAgICAgQXNzdW1lcyB0aGF0IHNlbGYgaXMgZmluaXRlIGFuZCBwb3NpdGl2ZSBhbmQgdGhhdCBzZWxmICE9IDEuCi0gICAgICAgICIiIgotCi0gICAgICAgICMgRm9yIHggPj0gMTAgb3IgeCA8IDAuMSB3ZSBvbmx5IG5lZWQgYSBib3VuZCBvbiB0aGUgaW50ZWdlcgotICAgICAgICAjIHBhcnQgb2YgbG9nMTAoc2VsZiksIGFuZCB0aGlzIGNvbWVzIGRpcmVjdGx5IGZyb20gdGhlCi0gICAgICAgICMgZXhwb25lbnQgb2YgeC4gIEZvciAwLjEgPD0geCA8PSAxMCB3ZSB1c2UgdGhlIGluZXF1YWxpdGllcwotICAgICAgICAjIDEtMS94IDw9IGxvZyh4KSA8PSB4LTEuIElmIHggPiAxIHdlIGhhdmUgfGxvZzEwKHgpfCA+Ci0gICAgICAgICMgKDEtMS94KS8yLjMxID4gMC4gIElmIHggPCAxIHRoZW4gfGxvZzEwKHgpfCA+ICgxLXgpLzIuMzEgPiAwCi0KLSAgICAgICAgYWRqID0gc2VsZi5fZXhwICsgbGVuKHNlbGYuX2ludCkgLSAxCi0gICAgICAgIGlmIGFkaiA+PSAxOgotICAgICAgICAgICAgIyBzZWxmID49IDEwCi0gICAgICAgICAgICByZXR1cm4gbGVuKHN0cihhZGopKS0xCi0gICAgICAgIGlmIGFkaiA8PSAtMjoKLSAgICAgICAgICAgICMgc2VsZiA8IDAuMQotICAgICAgICAgICAgcmV0dXJuIGxlbihzdHIoLTEtYWRqKSktMQotICAgICAgICBvcCA9IF9Xb3JrUmVwKHNlbGYpCi0gICAgICAgIGMsIGUgPSBvcC5pbnQsIG9wLmV4cAotICAgICAgICBpZiBhZGogPT0gMDoKLSAgICAgICAgICAgICMgMSA8IHNlbGYgPCAxMAotICAgICAgICAgICAgbnVtID0gc3RyKGMtMTAqKi1lKQotICAgICAgICAgICAgZGVuID0gc3RyKDIzMSpjKQotICAgICAgICAgICAgcmV0dXJuIGxlbihudW0pIC0gbGVuKGRlbikgLSAobnVtIDwgZGVuKSArIDIKLSAgICAgICAgIyBhZGogPT0gLTEsIDAuMSA8PSBzZWxmIDwgMQotICAgICAgICBudW0gPSBzdHIoMTAqKi1lLWMpCi0gICAgICAgIHJldHVybiBsZW4obnVtKSArIGUgLSAobnVtIDwgIjIzMSIpIC0gMQotCi0gICAgZGVmIGxvZzEwKHNlbGYsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGJhc2UgMTAgbG9nYXJpdGhtIG9mIHNlbGYuIiIiCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgICMgbG9nMTAoTmFOKSA9IE5hTgotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgICMgbG9nMTAoMC4wKSA9PSAtSW5maW5pdHkKLSAgICAgICAgaWYgbm90IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlSW5maW5pdHkKLQotICAgICAgICAjIGxvZzEwKEluZmluaXR5KSA9IEluZmluaXR5Ci0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAxOgotICAgICAgICAgICAgcmV0dXJuIF9JbmZpbml0eQotCi0gICAgICAgICMgbG9nMTAobmVnYXRpdmUgb3IgLUluZmluaXR5KSByYWlzZXMgSW52YWxpZE9wZXJhdGlvbgotICAgICAgICBpZiBzZWxmLl9zaWduID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9nMTAgb2YgYSBuZWdhdGl2ZSB2YWx1ZScpCi0KLSAgICAgICAgIyBsb2cxMCgxMCoqbikgPSBuCi0gICAgICAgIGlmIHNlbGYuX2ludFswXSA9PSAnMScgYW5kIHNlbGYuX2ludFsxOl0gPT0gJzAnKihsZW4oc2VsZi5faW50KSAtIDEpOgotICAgICAgICAgICAgIyBhbnN3ZXIgbWF5IG5lZWQgcm91bmRpbmcKLSAgICAgICAgICAgIGFucyA9IERlY2ltYWwoc2VsZi5fZXhwICsgbGVuKHNlbGYuX2ludCkgLSAxKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyByZXN1bHQgaXMgaXJyYXRpb25hbCwgc28gbmVjZXNzYXJpbHkgaW5leGFjdAotICAgICAgICAgICAgb3AgPSBfV29ya1JlcChzZWxmKQotICAgICAgICAgICAgYywgZSA9IG9wLmludCwgb3AuZXhwCi0gICAgICAgICAgICBwID0gY29udGV4dC5wcmVjCi0KLSAgICAgICAgICAgICMgY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0OiByZXBlYXRlZGx5IGluY3JlYXNlIHByZWNpc2lvbgotICAgICAgICAgICAgIyB1bnRpbCByZXN1bHQgaXMgdW5hbWJpZ3VvdXNseSByb3VuZGFibGUKLSAgICAgICAgICAgIHBsYWNlcyA9IHAtc2VsZi5fbG9nMTBfZXhwX2JvdW5kKCkrMgotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBjb2VmZiA9IF9kbG9nMTAoYywgZSwgcGxhY2VzKQotICAgICAgICAgICAgICAgICMgYXNzZXJ0IGxlbihzdHIoYWJzKGNvZWZmKSkpLXAgPj0gMQotICAgICAgICAgICAgICAgIGlmIGNvZWZmICUgKDUqMTAqKihsZW4oc3RyKGFicyhjb2VmZikpKS1wLTEpKToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBwbGFjZXMgKz0gMwotICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShpbnQoY29lZmY8MCksIHN0cihhYnMoY29lZmYpKSwgLXBsYWNlcykKLQotICAgICAgICBjb250ZXh0ID0gY29udGV4dC5fc2hhbGxvd19jb3B5KCkKLSAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0Ll9zZXRfcm91bmRpbmcoUk9VTkRfSEFMRl9FVkVOKQotICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gcm91bmRpbmcKLSAgICAgICAgcmV0dXJuIGFucwotCi0gICAgZGVmIGxvZ2Ioc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiIFJldHVybnMgdGhlIGV4cG9uZW50IG9mIHRoZSBtYWduaXR1ZGUgb2Ygc2VsZidzIE1TRC4KLQotICAgICAgICBUaGUgcmVzdWx0IGlzIHRoZSBpbnRlZ2VyIHdoaWNoIGlzIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlCi0gICAgICAgIG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IG9mIHNlbGYgKGFzIHRob3VnaCBpdCB3ZXJlIHRydW5jYXRlZAotICAgICAgICB0byBhIHNpbmdsZSBkaWdpdCB3aGlsZSBtYWludGFpbmluZyB0aGUgdmFsdWUgb2YgdGhhdCBkaWdpdCBhbmQKLSAgICAgICAgd2l0aG91dCBsaW1pdGluZyB0aGUgcmVzdWx0aW5nIGV4cG9uZW50KS4KLSAgICAgICAgIiIiCi0gICAgICAgICMgbG9nYihOYU4pID0gTmFOCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgICMgbG9nYigrLy1JbmYpID0gK0luZgotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICByZXR1cm4gX0luZmluaXR5Ci0KLSAgICAgICAgIyBsb2diKDApID0gLUluZiwgRGl2aXNpb25CeVplcm8KLSAgICAgICAgaWYgbm90IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25CeVplcm8sICdsb2diKDApJywgMSkKLQotICAgICAgICAjIG90aGVyd2lzZSwgc2ltcGx5IHJldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2Ygc2VsZiwgYXMgYQotICAgICAgICAjIERlY2ltYWwuICBOb3RlIHRoYXQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIGZpdCB0aGUgcmVzdWx0Ci0gICAgICAgICMgaW50byB0aGUgY3VycmVudCBjb250ZXh0LgotICAgICAgICBhbnMgPSBEZWNpbWFsKHNlbGYuYWRqdXN0ZWQoKSkKLSAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCi0KLSAgICBkZWYgX2lzbG9naWNhbChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIGxvZ2ljYWwgb3BlcmFuZC4KLQotICAgICAgICBGb3IgYmVpbmcgbG9naWNhbCwgaXQgbXVzdCBiZSBhIGZpbml0ZSBudW1iZXIgd2l0aCBhIHNpZ24gb2YgMCwKLSAgICAgICAgYW4gZXhwb25lbnQgb2YgMCwgYW5kIGEgY29lZmZpY2llbnQgd2hvc2UgZGlnaXRzIG11c3QgYWxsIGJlCi0gICAgICAgIGVpdGhlciAwIG9yIDEuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9zaWduICE9IDAgb3Igc2VsZi5fZXhwICE9IDA6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgZm9yIGRpZyBpbiBzZWxmLl9pbnQ6Ci0gICAgICAgICAgICBpZiBkaWcgbm90IGluICcwMSc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgX2ZpbGxfbG9naWNhbChzZWxmLCBjb250ZXh0LCBvcGEsIG9wYik6Ci0gICAgICAgIGRpZiA9IGNvbnRleHQucHJlYyAtIGxlbihvcGEpCi0gICAgICAgIGlmIGRpZiA+IDA6Ci0gICAgICAgICAgICBvcGEgPSAnMCcqZGlmICsgb3BhCi0gICAgICAgIGVsaWYgZGlmIDwgMDoKLSAgICAgICAgICAgIG9wYSA9IG9wYVstY29udGV4dC5wcmVjOl0KLSAgICAgICAgZGlmID0gY29udGV4dC5wcmVjIC0gbGVuKG9wYikKLSAgICAgICAgaWYgZGlmID4gMDoKLSAgICAgICAgICAgIG9wYiA9ICcwJypkaWYgKyBvcGIKLSAgICAgICAgZWxpZiBkaWYgPCAwOgotICAgICAgICAgICAgb3BiID0gb3BiWy1jb250ZXh0LnByZWM6XQotICAgICAgICByZXR1cm4gb3BhLCBvcGIKLQotICAgIGRlZiBsb2dpY2FsX2FuZChzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiQXBwbGllcyBhbiAnYW5kJyBvcGVyYXRpb24gYmV0d2VlbiBzZWxmIGFuZCBvdGhlcidzIGRpZ2l0cy4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBpZiBub3Qgc2VsZi5faXNsb2dpY2FsKCkgb3Igbm90IG90aGVyLl9pc2xvZ2ljYWwoKToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQotCi0gICAgICAgICMgZmlsbCB0byBjb250ZXh0LnByZWMKLSAgICAgICAgKG9wYSwgb3BiKSA9IHNlbGYuX2ZpbGxfbG9naWNhbChjb250ZXh0LCBzZWxmLl9pbnQsIG90aGVyLl9pbnQpCi0KLSAgICAgICAgIyBtYWtlIHRoZSBvcGVyYXRpb24sIGFuZCBjbGVhbiBzdGFydGluZyB6ZXJvZXMKLSAgICAgICAgcmVzdWx0ID0gIiIuam9pbihbc3RyKGludChhKSZpbnQoYikpIGZvciBhLGIgaW4gemlwKG9wYSxvcGIpXSkKLSAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgcmVzdWx0LmxzdHJpcCgnMCcpIG9yICcwJywgMCkKLQotICAgIGRlZiBsb2dpY2FsX2ludmVydChzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJJbnZlcnQgYWxsIGl0cyBkaWdpdHMuIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgcmV0dXJuIHNlbGYubG9naWNhbF94b3IoX2RlY19mcm9tX3RyaXBsZSgwLCcxJypjb250ZXh0LnByZWMsMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQpCi0KLSAgICBkZWYgbG9naWNhbF9vcihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiQXBwbGllcyBhbiAnb3InIG9wZXJhdGlvbiBiZXR3ZWVuIHNlbGYgYW5kIG90aGVyJ3MgZGlnaXRzLiIiIgotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIGlmIG5vdCBzZWxmLl9pc2xvZ2ljYWwoKSBvciBub3Qgb3RoZXIuX2lzbG9naWNhbCgpOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCi0KLSAgICAgICAgIyBmaWxsIHRvIGNvbnRleHQucHJlYwotICAgICAgICAob3BhLCBvcGIpID0gc2VsZi5fZmlsbF9sb2dpY2FsKGNvbnRleHQsIHNlbGYuX2ludCwgb3RoZXIuX2ludCkKLQotICAgICAgICAjIG1ha2UgdGhlIG9wZXJhdGlvbiwgYW5kIGNsZWFuIHN0YXJ0aW5nIHplcm9lcwotICAgICAgICByZXN1bHQgPSAiIi5qb2luKFtzdHIoaW50KGEpfGludChiKSkgZm9yIGEsYiBpbiB6aXAob3BhLG9wYildKQotICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCByZXN1bHQubHN0cmlwKCcwJykgb3IgJzAnLCAwKQotCi0gICAgZGVmIGxvZ2ljYWxfeG9yKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJBcHBsaWVzIGFuICd4b3InIG9wZXJhdGlvbiBiZXR3ZWVuIHNlbGYgYW5kIG90aGVyJ3MgZGlnaXRzLiIiIgotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIGlmIG5vdCBzZWxmLl9pc2xvZ2ljYWwoKSBvciBub3Qgb3RoZXIuX2lzbG9naWNhbCgpOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCi0KLSAgICAgICAgIyBmaWxsIHRvIGNvbnRleHQucHJlYwotICAgICAgICAob3BhLCBvcGIpID0gc2VsZi5fZmlsbF9sb2dpY2FsKGNvbnRleHQsIHNlbGYuX2ludCwgb3RoZXIuX2ludCkKLQotICAgICAgICAjIG1ha2UgdGhlIG9wZXJhdGlvbiwgYW5kIGNsZWFuIHN0YXJ0aW5nIHplcm9lcwotICAgICAgICByZXN1bHQgPSAiIi5qb2luKFtzdHIoaW50KGEpXmludChiKSkgZm9yIGEsYiBpbiB6aXAob3BhLG9wYildKQotICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCByZXN1bHQubHN0cmlwKCcwJykgb3IgJzAnLCAwKQotCi0gICAgZGVmIG1heF9tYWcoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIkNvbXBhcmVzIHRoZSB2YWx1ZXMgbnVtZXJpY2FsbHkgd2l0aCB0aGVpciBzaWduIGlnbm9yZWQuIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgICMgSWYgb25lIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpcyBudW1iZXIsIHRoZW4gdGhlCi0gICAgICAgICAgICAjIG51bWJlciBpcyBhbHdheXMgcmV0dXJuZWQKLSAgICAgICAgICAgIHNuID0gc2VsZi5faXNuYW4oKQotICAgICAgICAgICAgb24gPSBvdGhlci5faXNuYW4oKQotICAgICAgICAgICAgaWYgc24gb3Igb246Ci0gICAgICAgICAgICAgICAgaWYgb24gPT0gMSBhbmQgc24gPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgICAgIGlmIHNuID09IDEgYW5kIG9uID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlci5fZml4KGNvbnRleHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0KLSAgICAgICAgYyA9IHNlbGYuY29weV9hYnMoKS5fY21wKG90aGVyLmNvcHlfYWJzKCkpCi0gICAgICAgIGlmIGMgPT0gMDoKLSAgICAgICAgICAgIGMgPSBzZWxmLmNvbXBhcmVfdG90YWwob3RoZXIpCi0KLSAgICAgICAgaWYgYyA9PSAtMToKLSAgICAgICAgICAgIGFucyA9IG90aGVyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmCi0KLSAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCi0KLSAgICBkZWYgbWluX21hZyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiQ29tcGFyZXMgdGhlIHZhbHVlcyBudW1lcmljYWxseSB3aXRoIHRoZWlyIHNpZ24gaWdub3JlZC4iIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgIyBJZiBvbmUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTiBhbmQgdGhlIG90aGVyIGlzIG51bWJlciwgdGhlbiB0aGUKLSAgICAgICAgICAgICMgbnVtYmVyIGlzIGFsd2F5cyByZXR1cm5lZAotICAgICAgICAgICAgc24gPSBzZWxmLl9pc25hbigpCi0gICAgICAgICAgICBvbiA9IG90aGVyLl9pc25hbigpCi0gICAgICAgICAgICBpZiBzbiBvciBvbjoKLSAgICAgICAgICAgICAgICBpZiBvbiA9PSAxIGFuZCBzbiA9PSAwOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZml4KGNvbnRleHQpCi0gICAgICAgICAgICAgICAgaWYgc24gPT0gMSBhbmQgb24gPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLQotICAgICAgICBjID0gc2VsZi5jb3B5X2FicygpLl9jbXAob3RoZXIuY29weV9hYnMoKSkKLSAgICAgICAgaWYgYyA9PSAwOgotICAgICAgICAgICAgYyA9IHNlbGYuY29tcGFyZV90b3RhbChvdGhlcikKLQotICAgICAgICBpZiBjID09IC0xOgotICAgICAgICAgICAgYW5zID0gc2VsZgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYW5zID0gb3RoZXIKLQotICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKLQotICAgIGRlZiBuZXh0X21pbnVzKHNlbGYsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGxhcmdlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgc21hbGxlciB0aGFuIGl0c2VsZi4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IC0xOgotICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZUluZmluaXR5Ci0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAxOgotICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgJzknKmNvbnRleHQucHJlYywgY29udGV4dC5FdG9wKCkpCi0KLSAgICAgICAgY29udGV4dCA9IGNvbnRleHQuY29weSgpCi0gICAgICAgIGNvbnRleHQuX3NldF9yb3VuZGluZyhST1VORF9GTE9PUikKLSAgICAgICAgY29udGV4dC5faWdub3JlX2FsbF9mbGFncygpCi0gICAgICAgIG5ld19zZWxmID0gc2VsZi5fZml4KGNvbnRleHQpCi0gICAgICAgIGlmIG5ld19zZWxmICE9IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gbmV3X3NlbGYKLSAgICAgICAgcmV0dXJuIHNlbGYuX19zdWJfXyhfZGVjX2Zyb21fdHJpcGxlKDAsICcxJywgY29udGV4dC5FdGlueSgpLTEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQpCi0KLSAgICBkZWYgbmV4dF9wbHVzKHNlbGYsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIGxhcmdlciB0aGFuIGl0c2VsZi4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gX0luZmluaXR5Ci0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAtMToKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDEsICc5Jypjb250ZXh0LnByZWMsIGNvbnRleHQuRXRvcCgpKQotCi0gICAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNvcHkoKQotICAgICAgICBjb250ZXh0Ll9zZXRfcm91bmRpbmcoUk9VTkRfQ0VJTElORykKLSAgICAgICAgY29udGV4dC5faWdub3JlX2FsbF9mbGFncygpCi0gICAgICAgIG5ld19zZWxmID0gc2VsZi5fZml4KGNvbnRleHQpCi0gICAgICAgIGlmIG5ld19zZWxmICE9IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gbmV3X3NlbGYKLSAgICAgICAgcmV0dXJuIHNlbGYuX19hZGRfXyhfZGVjX2Zyb21fdHJpcGxlKDAsICcxJywgY29udGV4dC5FdGlueSgpLTEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQpCi0KLSAgICBkZWYgbmV4dF90b3dhcmQoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIG51bWJlciBjbG9zZXN0IHRvIHNlbGYsIGluIHRoZSBkaXJlY3Rpb24gdG93YXJkcyBvdGhlci4KLQotICAgICAgICBUaGUgcmVzdWx0IGlzIHRoZSBjbG9zZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHRvIHNlbGYKLSAgICAgICAgKGV4Y2x1ZGluZyBzZWxmKSB0aGF0IGlzIGluIHRoZSBkaXJlY3Rpb24gdG93YXJkcyBvdGhlciwKLSAgICAgICAgdW5sZXNzIGJvdGggaGF2ZSB0aGUgc2FtZSB2YWx1ZS4gIElmIHRoZSB0d28gb3BlcmFuZHMgYXJlCi0gICAgICAgIG51bWVyaWNhbGx5IGVxdWFsLCB0aGVuIHRoZSByZXN1bHQgaXMgYSBjb3B5IG9mIHNlbGYgd2l0aCB0aGUKLSAgICAgICAgc2lnbiBzZXQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIHNpZ24gb2Ygb3RoZXIuCi0gICAgICAgICIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICBjb21wYXJpc29uID0gc2VsZi5fY21wKG90aGVyKQotICAgICAgICBpZiBjb21wYXJpc29uID09IDA6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5jb3B5X3NpZ24ob3RoZXIpCi0KLSAgICAgICAgaWYgY29tcGFyaXNvbiA9PSAtMToKLSAgICAgICAgICAgIGFucyA9IHNlbGYubmV4dF9wbHVzKGNvbnRleHQpCi0gICAgICAgIGVsc2U6ICMgY29tcGFyaXNvbiA9PSAxCi0gICAgICAgICAgICBhbnMgPSBzZWxmLm5leHRfbWludXMoY29udGV4dCkKLQotICAgICAgICAjIGRlY2lkZSB3aGljaCBmbGFncyB0byByYWlzZSB1c2luZyB2YWx1ZSBvZiBhbnMKLSAgICAgICAgaWYgYW5zLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihPdmVyZmxvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJbmZpbml0ZSByZXN1bHQgZnJvbSBuZXh0X3Rvd2FyZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnMuX3NpZ24pCi0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKLSAgICAgICAgZWxpZiBhbnMuYWRqdXN0ZWQoKSA8IGNvbnRleHQuRW1pbjoKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFVuZGVyZmxvdykKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFN1Ym5vcm1hbCkKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCi0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQotICAgICAgICAgICAgIyBpZiBwcmVjaXNpb24gPT0gMSB0aGVuIHdlIGRvbid0IHJhaXNlIENsYW1wZWQgZm9yIGEKLSAgICAgICAgICAgICMgcmVzdWx0IDBFLUV0aW55LgotICAgICAgICAgICAgaWYgbm90IGFuczoKLSAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihDbGFtcGVkKQotCi0gICAgICAgIHJldHVybiBhbnMKLQotICAgIGRlZiBudW1iZXJfY2xhc3Moc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyBhbiBpbmRpY2F0aW9uIG9mIHRoZSBjbGFzcyBvZiBzZWxmLgotCi0gICAgICAgIFRoZSBjbGFzcyBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBzdHJpbmdzOgotICAgICAgICAgIHNOYU4KLSAgICAgICAgICBOYU4KLSAgICAgICAgICAtSW5maW5pdHkKLSAgICAgICAgICAtTm9ybWFsCi0gICAgICAgICAgLVN1Ym5vcm1hbAotICAgICAgICAgIC1aZXJvCi0gICAgICAgICAgK1plcm8KLSAgICAgICAgICArU3Vibm9ybWFsCi0gICAgICAgICAgK05vcm1hbAotICAgICAgICAgICtJbmZpbml0eQotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5pc19zbmFuKCk6Ci0gICAgICAgICAgICByZXR1cm4gInNOYU4iCi0gICAgICAgIGlmIHNlbGYuaXNfcW5hbigpOgotICAgICAgICAgICAgcmV0dXJuICJOYU4iCi0gICAgICAgIGluZiA9IHNlbGYuX2lzaW5maW5pdHkoKQotICAgICAgICBpZiBpbmYgPT0gMToKLSAgICAgICAgICAgIHJldHVybiAiK0luZmluaXR5IgotICAgICAgICBpZiBpbmYgPT0gLTE6Ci0gICAgICAgICAgICByZXR1cm4gIi1JbmZpbml0eSIKLSAgICAgICAgaWYgc2VsZi5pc196ZXJvKCk6Ci0gICAgICAgICAgICBpZiBzZWxmLl9zaWduOgotICAgICAgICAgICAgICAgIHJldHVybiAiLVplcm8iCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAiK1plcm8iCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgaWYgc2VsZi5pc19zdWJub3JtYWwoY29udGV4dD1jb250ZXh0KToKLSAgICAgICAgICAgIGlmIHNlbGYuX3NpZ246Ci0gICAgICAgICAgICAgICAgcmV0dXJuICItU3Vibm9ybWFsIgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gIitTdWJub3JtYWwiCi0gICAgICAgICMganVzdCBhIG5vcm1hbCwgcmVndWxhciwgYm9yaW5nIG51bWJlciwgOikKLSAgICAgICAgaWYgc2VsZi5fc2lnbjoKLSAgICAgICAgICAgIHJldHVybiAiLU5vcm1hbCIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiK05vcm1hbCIKLQotICAgIGRlZiByYWRpeChzZWxmKToKLSAgICAgICAgIiIiSnVzdCByZXR1cm5zIDEwLCBhcyB0aGlzIGlzIERlY2ltYWwsIDopIiIiCi0gICAgICAgIHJldHVybiBEZWNpbWFsKDEwKQotCi0gICAgZGVmIHJvdGF0ZShzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyBhIHJvdGF0ZWQgY29weSBvZiBzZWxmLCB2YWx1ZS1vZi1vdGhlciB0aW1lcy4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgb3RoZXIuX2V4cCAhPSAwOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCi0gICAgICAgIGlmIG5vdCAoLWNvbnRleHQucHJlYyA8PSBpbnQob3RoZXIpIDw9IGNvbnRleHQucHJlYyk6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKLQotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotCi0gICAgICAgICMgZ2V0IHZhbHVlcywgcGFkIGlmIG5lY2Vzc2FyeQotICAgICAgICB0b3JvdCA9IGludChvdGhlcikKLSAgICAgICAgcm90ZGlnID0gc2VsZi5faW50Ci0gICAgICAgIHRvcGFkID0gY29udGV4dC5wcmVjIC0gbGVuKHJvdGRpZykKLSAgICAgICAgaWYgdG9wYWQgPiAwOgotICAgICAgICAgICAgcm90ZGlnID0gJzAnKnRvcGFkICsgcm90ZGlnCi0gICAgICAgIGVsaWYgdG9wYWQgPCAwOgotICAgICAgICAgICAgcm90ZGlnID0gcm90ZGlnWy10b3BhZDpdCi0KLSAgICAgICAgIyBsZXQncyByb3RhdGUhCi0gICAgICAgIHJvdGF0ZWQgPSByb3RkaWdbdG9yb3Q6XSArIHJvdGRpZ1s6dG9yb3RdCi0gICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZWQubHN0cmlwKCcwJykgb3IgJzAnLCBzZWxmLl9leHApCi0KLSAgICBkZWYgc2NhbGViKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIHNlbGYgb3BlcmFuZCBhZnRlciBhZGRpbmcgdGhlIHNlY29uZCB2YWx1ZSB0byBpdHMgZXhwLiIiIgotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICBpZiBvdGhlci5fZXhwICE9IDA6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKLSAgICAgICAgbGltaW5mID0gLTIgKiAoY29udGV4dC5FbWF4ICsgY29udGV4dC5wcmVjKQotICAgICAgICBsaW1zdXAgPSAgMiAqIChjb250ZXh0LkVtYXggKyBjb250ZXh0LnByZWMpCi0gICAgICAgIGlmIG5vdCAobGltaW5mIDw9IGludChvdGhlcikgPD0gbGltc3VwKToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQotCi0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0KLSAgICAgICAgZCA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgc2VsZi5faW50LCBzZWxmLl9leHAgKyBpbnQob3RoZXIpKQotICAgICAgICBkID0gZC5fZml4KGNvbnRleHQpCi0gICAgICAgIHJldHVybiBkCi0KLSAgICBkZWYgc2hpZnQoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgYSBzaGlmdGVkIGNvcHkgb2Ygc2VsZiwgdmFsdWUtb2Ytb3RoZXIgdGltZXMuIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIGlmIG90aGVyLl9leHAgIT0gMDoKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQotICAgICAgICBpZiBub3QgKC1jb250ZXh0LnByZWMgPD0gaW50KG90aGVyKSA8PSBjb250ZXh0LnByZWMpOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCi0KLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKLQotICAgICAgICAjIGdldCB2YWx1ZXMsIHBhZCBpZiBuZWNlc3NhcnkKLSAgICAgICAgdG9yb3QgPSBpbnQob3RoZXIpCi0gICAgICAgIHJvdGRpZyA9IHNlbGYuX2ludAotICAgICAgICB0b3BhZCA9IGNvbnRleHQucHJlYyAtIGxlbihyb3RkaWcpCi0gICAgICAgIGlmIHRvcGFkID4gMDoKLSAgICAgICAgICAgIHJvdGRpZyA9ICcwJyp0b3BhZCArIHJvdGRpZwotICAgICAgICBlbGlmIHRvcGFkIDwgMDoKLSAgICAgICAgICAgIHJvdGRpZyA9IHJvdGRpZ1stdG9wYWQ6XQotCi0gICAgICAgICMgbGV0J3Mgc2hpZnQhCi0gICAgICAgIGlmIHRvcm90IDwgMDoKLSAgICAgICAgICAgIHNoaWZ0ZWQgPSByb3RkaWdbOnRvcm90XQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2hpZnRlZCA9IHJvdGRpZyArICcwJyp0b3JvdAotICAgICAgICAgICAgc2hpZnRlZCA9IHNoaWZ0ZWRbLWNvbnRleHQucHJlYzpdCi0KLSAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0ZWQubHN0cmlwKCcwJykgb3IgJzAnLCBzZWxmLl9leHApCi0KLSAgICAjIFN1cHBvcnQgZm9yIHBpY2tsaW5nLCBjb3B5LCBhbmQgZGVlcGNvcHkKLSAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywgKHN0cihzZWxmKSwpKQotCi0gICAgZGVmIF9fY29weV9fKHNlbGYpOgotICAgICAgICBpZiB0eXBlKHNlbGYpIGlzIERlY2ltYWw6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZiAgICAgIyBJJ20gaW1tdXRhYmxlOyB0aGVyZWZvcmUgSSBhbSBteSBvd24gY2xvbmUKLSAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHN0cihzZWxmKSkKLQotICAgIGRlZiBfX2RlZXBjb3B5X18oc2VsZiwgbWVtbyk6Ci0gICAgICAgIGlmIHR5cGUoc2VsZikgaXMgRGVjaW1hbDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmICAgICAjIE15IGNvbXBvbmVudHMgYXJlIGFsc28gaW1tdXRhYmxlCi0gICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzdHIoc2VsZikpCi0KLSAgICAjIFBFUCAzMTAxIHN1cHBvcnQuICB0aGUgX2xvY2FsZWNvbnYga2V5d29yZCBhcmd1bWVudCBzaG91bGQgYmUKLSAgICAjIGNvbnNpZGVyZWQgcHJpdmF0ZTogaXQncyBwcm92aWRlZCBmb3IgZWFzZSBvZiB0ZXN0aW5nIG9ubHkuCi0gICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgc3BlY2lmaWVyLCBjb250ZXh0PU5vbmUsIF9sb2NhbGVjb252PU5vbmUpOgotICAgICAgICAiIiJGb3JtYXQgYSBEZWNpbWFsIGluc3RhbmNlIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gc3BlY2lmaWVyLgotCi0gICAgICAgIFRoZSBzcGVjaWZpZXIgc2hvdWxkIGJlIGEgc3RhbmRhcmQgZm9ybWF0IHNwZWNpZmllciwgd2l0aCB0aGUKLSAgICAgICAgZm9ybSBkZXNjcmliZWQgaW4gUEVQIDMxMDEuICBGb3JtYXR0aW5nIHR5cGVzICdlJywgJ0UnLCAnZicsCi0gICAgICAgICdGJywgJ2cnLCAnRycsICduJyBhbmQgJyUnIGFyZSBzdXBwb3J0ZWQuICBJZiB0aGUgZm9ybWF0dGluZwotICAgICAgICB0eXBlIGlzIG9taXR0ZWQgaXQgZGVmYXVsdHMgdG8gJ2cnIG9yICdHJywgZGVwZW5kaW5nIG9uIHRoZQotICAgICAgICB2YWx1ZSBvZiBjb250ZXh0LmNhcGl0YWxzLgotICAgICAgICAiIiIKLQotICAgICAgICAjIE5vdGU6IFBFUCAzMTAxIHNheXMgdGhhdCBpZiB0aGUgdHlwZSBpcyBub3QgcHJlc2VudCB0aGVuCi0gICAgICAgICMgdGhlcmUgc2hvdWxkIGJlIGF0IGxlYXN0IG9uZSBkaWdpdCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludC4KLSAgICAgICAgIyBXZSB0YWtlIHRoZSBsaWJlcnR5IG9mIGlnbm9yaW5nIHRoaXMgcmVxdWlyZW1lbnQgZm9yCi0gICAgICAgICMgRGVjaW1hbC0tLWl0J3MgcHJlc3VtYWJseSB0aGVyZSB0byBtYWtlIHN1cmUgdGhhdAotICAgICAgICAjIGZvcm1hdChmbG9hdCwgJycpIGJlaGF2ZXMgc2ltaWxhcmx5IHRvIHN0cihmbG9hdCkuCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBzcGVjID0gX3BhcnNlX2Zvcm1hdF9zcGVjaWZpZXIoc3BlY2lmaWVyLCBfbG9jYWxlY29udj1fbG9jYWxlY29udikKLQotICAgICAgICAjIHNwZWNpYWwgdmFsdWVzIGRvbid0IGNhcmUgYWJvdXQgdGhlIHR5cGUgb3IgcHJlY2lzaW9uCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBzaWduID0gX2Zvcm1hdF9zaWduKHNlbGYuX3NpZ24sIHNwZWMpCi0gICAgICAgICAgICBib2R5ID0gc3RyKHNlbGYuY29weV9hYnMoKSkKLSAgICAgICAgICAgIGlmIHNwZWNbJ3R5cGUnXSA9PSAnJSc6Ci0gICAgICAgICAgICAgICAgYm9keSArPSAnJScKLSAgICAgICAgICAgIHJldHVybiBfZm9ybWF0X2FsaWduKHNpZ24sIGJvZHksIHNwZWMpCi0KLSAgICAgICAgIyBhIHR5cGUgb2YgTm9uZSBkZWZhdWx0cyB0byAnZycgb3IgJ0cnLCBkZXBlbmRpbmcgb24gY29udGV4dAotICAgICAgICBpZiBzcGVjWyd0eXBlJ10gaXMgTm9uZToKLSAgICAgICAgICAgIHNwZWNbJ3R5cGUnXSA9IFsnZycsICdHJ11bY29udGV4dC5jYXBpdGFsc10KLQotICAgICAgICAjIGlmIHR5cGUgaXMgJyUnLCBhZGp1c3QgZXhwb25lbnQgb2Ygc2VsZiBhY2NvcmRpbmdseQotICAgICAgICBpZiBzcGVjWyd0eXBlJ10gPT0gJyUnOgotICAgICAgICAgICAgc2VsZiA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgc2VsZi5faW50LCBzZWxmLl9leHArMikKLQotICAgICAgICAjIHJvdW5kIGlmIG5lY2Vzc2FyeSwgdGFraW5nIHJvdW5kaW5nIG1vZGUgZnJvbSB0aGUgY29udGV4dAotICAgICAgICByb3VuZGluZyA9IGNvbnRleHQucm91bmRpbmcKLSAgICAgICAgcHJlY2lzaW9uID0gc3BlY1sncHJlY2lzaW9uJ10KLSAgICAgICAgaWYgcHJlY2lzaW9uIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaWYgc3BlY1sndHlwZSddIGluICdlRSc6Ci0gICAgICAgICAgICAgICAgc2VsZiA9IHNlbGYuX3JvdW5kKHByZWNpc2lvbisxLCByb3VuZGluZykKLSAgICAgICAgICAgIGVsaWYgc3BlY1sndHlwZSddIGluICdmRiUnOgotICAgICAgICAgICAgICAgIHNlbGYgPSBzZWxmLl9yZXNjYWxlKC1wcmVjaXNpb24sIHJvdW5kaW5nKQotICAgICAgICAgICAgZWxpZiBzcGVjWyd0eXBlJ10gaW4gJ2dHJyBhbmQgbGVuKHNlbGYuX2ludCkgPiBwcmVjaXNpb246Ci0gICAgICAgICAgICAgICAgc2VsZiA9IHNlbGYuX3JvdW5kKHByZWNpc2lvbiwgcm91bmRpbmcpCi0gICAgICAgICMgc3BlY2lhbCBjYXNlOiB6ZXJvcyB3aXRoIGEgcG9zaXRpdmUgZXhwb25lbnQgY2FuJ3QgYmUKLSAgICAgICAgIyByZXByZXNlbnRlZCBpbiBmaXhlZCBwb2ludDsgcmVzY2FsZSB0aGVtIHRvIDBlMC4KLSAgICAgICAgaWYgbm90IHNlbGYgYW5kIHNlbGYuX2V4cCA+IDAgYW5kIHNwZWNbJ3R5cGUnXSBpbiAnZkYlJzoKLSAgICAgICAgICAgIHNlbGYgPSBzZWxmLl9yZXNjYWxlKDAsIHJvdW5kaW5nKQotCi0gICAgICAgICMgZmlndXJlIG91dCBwbGFjZW1lbnQgb2YgdGhlIGRlY2ltYWwgcG9pbnQKLSAgICAgICAgbGVmdGRpZ2l0cyA9IHNlbGYuX2V4cCArIGxlbihzZWxmLl9pbnQpCi0gICAgICAgIGlmIHNwZWNbJ3R5cGUnXSBpbiAnZUUnOgotICAgICAgICAgICAgaWYgbm90IHNlbGYgYW5kIHByZWNpc2lvbiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBkb3RwbGFjZSA9IDEgLSBwcmVjaXNpb24KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZG90cGxhY2UgPSAxCi0gICAgICAgIGVsaWYgc3BlY1sndHlwZSddIGluICdmRiUnOgotICAgICAgICAgICAgZG90cGxhY2UgPSBsZWZ0ZGlnaXRzCi0gICAgICAgIGVsaWYgc3BlY1sndHlwZSddIGluICdnRyc6Ci0gICAgICAgICAgICBpZiBzZWxmLl9leHAgPD0gMCBhbmQgbGVmdGRpZ2l0cyA+IC02OgotICAgICAgICAgICAgICAgIGRvdHBsYWNlID0gbGVmdGRpZ2l0cwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkb3RwbGFjZSA9IDEKLQotICAgICAgICAjIGZpbmQgZGlnaXRzIGJlZm9yZSBhbmQgYWZ0ZXIgZGVjaW1hbCBwb2ludCwgYW5kIGdldCBleHBvbmVudAotICAgICAgICBpZiBkb3RwbGFjZSA8IDA6Ci0gICAgICAgICAgICBpbnRwYXJ0ID0gJzAnCi0gICAgICAgICAgICBmcmFjcGFydCA9ICcwJyooLWRvdHBsYWNlKSArIHNlbGYuX2ludAotICAgICAgICBlbGlmIGRvdHBsYWNlID4gbGVuKHNlbGYuX2ludCk6Ci0gICAgICAgICAgICBpbnRwYXJ0ID0gc2VsZi5faW50ICsgJzAnKihkb3RwbGFjZS1sZW4oc2VsZi5faW50KSkKLSAgICAgICAgICAgIGZyYWNwYXJ0ID0gJycKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGludHBhcnQgPSBzZWxmLl9pbnRbOmRvdHBsYWNlXSBvciAnMCcKLSAgICAgICAgICAgIGZyYWNwYXJ0ID0gc2VsZi5faW50W2RvdHBsYWNlOl0KLSAgICAgICAgZXhwID0gbGVmdGRpZ2l0cy1kb3RwbGFjZQotCi0gICAgICAgICMgZG9uZSB3aXRoIHRoZSBkZWNpbWFsLXNwZWNpZmljIHN0dWZmOyAgaGFuZCBvdmVyIHRoZSByZXN0Ci0gICAgICAgICMgb2YgdGhlIGZvcm1hdHRpbmcgdG8gdGhlIF9mb3JtYXRfbnVtYmVyIGZ1bmN0aW9uCi0gICAgICAgIHJldHVybiBfZm9ybWF0X251bWJlcihzZWxmLl9zaWduLCBpbnRwYXJ0LCBmcmFjcGFydCwgZXhwLCBzcGVjKQotCi1kZWYgX2RlY19mcm9tX3RyaXBsZShzaWduLCBjb2VmZmljaWVudCwgZXhwb25lbnQsIHNwZWNpYWw9RmFsc2UpOgotICAgICIiIkNyZWF0ZSBhIGRlY2ltYWwgaW5zdGFuY2UgZGlyZWN0bHksIHdpdGhvdXQgYW55IHZhbGlkYXRpb24sCi0gICAgbm9ybWFsaXphdGlvbiAoZS5nLiByZW1vdmFsIG9mIGxlYWRpbmcgemVyb3MpIG9yIGFyZ3VtZW50Ci0gICAgY29udmVyc2lvbi4KLQotICAgIFRoaXMgZnVuY3Rpb24gaXMgZm9yICppbnRlcm5hbCB1c2Ugb25seSouCi0gICAgIiIiCi0KLSAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oRGVjaW1hbCkKLSAgICBzZWxmLl9zaWduID0gc2lnbgotICAgIHNlbGYuX2ludCA9IGNvZWZmaWNpZW50Ci0gICAgc2VsZi5fZXhwID0gZXhwb25lbnQKLSAgICBzZWxmLl9pc19zcGVjaWFsID0gc3BlY2lhbAotCi0gICAgcmV0dXJuIHNlbGYKLQotIyBSZWdpc3RlciBEZWNpbWFsIGFzIGEga2luZCBvZiBOdW1iZXIgKGFuIGFic3RyYWN0IGJhc2UgY2xhc3MpLgotIyBIb3dldmVyLCBkbyBub3QgcmVnaXN0ZXIgaXQgYXMgUmVhbCAoYmVjYXVzZSBEZWNpbWFscyBhcmUgbm90Ci0jIGludGVyb3BlcmFibGUgd2l0aCBmbG9hdHMpLgotX251bWJlcnMuTnVtYmVyLnJlZ2lzdGVyKERlY2ltYWwpCi0KLQotIyMjIyMgQ29udGV4dCBjbGFzcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLWNsYXNzIF9Db250ZXh0TWFuYWdlcihvYmplY3QpOgotICAgICIiIkNvbnRleHQgbWFuYWdlciBjbGFzcyB0byBzdXBwb3J0IGxvY2FsY29udGV4dCgpLgotCi0gICAgICBTZXRzIGEgY29weSBvZiB0aGUgc3VwcGxpZWQgY29udGV4dCBpbiBfX2VudGVyX18oKSBhbmQgcmVzdG9yZXMKLSAgICAgIHRoZSBwcmV2aW91cyBkZWNpbWFsIGNvbnRleHQgaW4gX19leGl0X18oKQotICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuZXdfY29udGV4dCk6Ci0gICAgICAgIHNlbGYubmV3X2NvbnRleHQgPSBuZXdfY29udGV4dC5jb3B5KCkKLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBzZWxmLnNhdmVkX2NvbnRleHQgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgc2V0Y29udGV4dChzZWxmLm5ld19jb250ZXh0KQotICAgICAgICByZXR1cm4gc2VsZi5uZXdfY29udGV4dAotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0LCB2LCB0Yik6Ci0gICAgICAgIHNldGNvbnRleHQoc2VsZi5zYXZlZF9jb250ZXh0KQotCi1jbGFzcyBDb250ZXh0KG9iamVjdCk6Ci0gICAgIiIiQ29udGFpbnMgdGhlIGNvbnRleHQgZm9yIGEgRGVjaW1hbCBpbnN0YW5jZS4KLQotICAgIENvbnRhaW5zOgotICAgIHByZWMgLSBwcmVjaXNpb24gKGZvciB1c2UgaW4gcm91bmRpbmcsIGRpdmlzaW9uLCBzcXVhcmUgcm9vdHMuLikKLSAgICByb3VuZGluZyAtIHJvdW5kaW5nIHR5cGUgKGhvdyB5b3Ugcm91bmQpCi0gICAgdHJhcHMgLSBJZiB0cmFwc1tleGNlcHRpb25dID0gMSwgdGhlbiB0aGUgZXhjZXB0aW9uIGlzCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlZCB3aGVuIGl0IGlzIGNhdXNlZC4gIE90aGVyd2lzZSwgYSB2YWx1ZSBpcwotICAgICAgICAgICAgICAgICAgICBzdWJzdGl0dXRlZCBpbi4KLSAgICBmbGFncyAgLSBXaGVuIGFuIGV4Y2VwdGlvbiBpcyBjYXVzZWQsIGZsYWdzW2V4Y2VwdGlvbl0gaXMgc2V0LgotICAgICAgICAgICAgIChXaGV0aGVyIG9yIG5vdCB0aGUgdHJhcF9lbmFibGVyIGlzIHNldCkKLSAgICAgICAgICAgICBTaG91bGQgYmUgcmVzZXQgYnkgdXNlciBvZiBEZWNpbWFsIGluc3RhbmNlLgotICAgIEVtaW4gLSAgIE1pbmltdW0gZXhwb25lbnQKLSAgICBFbWF4IC0gICBNYXhpbXVtIGV4cG9uZW50Ci0gICAgY2FwaXRhbHMgLSAgICAgIElmIDEsIDEqMTBeMSBpcyBwcmludGVkIGFzIDFFKzEuCi0gICAgICAgICAgICAgICAgICAgIElmIDAsIHByaW50ZWQgYXMgMWUxCi0gICAgY2xhbXAgLSAgSWYgMSwgY2hhbmdlIGV4cG9uZW50cyBpZiB0b28gaGlnaCAoRGVmYXVsdCAwKQotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHByZWM9Tm9uZSwgcm91bmRpbmc9Tm9uZSwgRW1pbj1Ob25lLCBFbWF4PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNhcGl0YWxzPU5vbmUsIGNsYW1wPU5vbmUsIGZsYWdzPU5vbmUsIHRyYXBzPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgIF9pZ25vcmVkX2ZsYWdzPU5vbmUpOgotICAgICAgICAjIFNldCBkZWZhdWx0czsgZm9yIGV2ZXJ5dGhpbmcgZXhjZXB0IGZsYWdzIGFuZCBfaWdub3JlZF9mbGFncywKLSAgICAgICAgIyBpbmhlcml0IGZyb20gRGVmYXVsdENvbnRleHQuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGRjID0gRGVmYXVsdENvbnRleHQKLSAgICAgICAgZXhjZXB0IE5hbWVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBzZWxmLnByZWMgPSBwcmVjIGlmIHByZWMgaXMgbm90IE5vbmUgZWxzZSBkYy5wcmVjCi0gICAgICAgIHNlbGYucm91bmRpbmcgPSByb3VuZGluZyBpZiByb3VuZGluZyBpcyBub3QgTm9uZSBlbHNlIGRjLnJvdW5kaW5nCi0gICAgICAgIHNlbGYuRW1pbiA9IEVtaW4gaWYgRW1pbiBpcyBub3QgTm9uZSBlbHNlIGRjLkVtaW4KLSAgICAgICAgc2VsZi5FbWF4ID0gRW1heCBpZiBFbWF4IGlzIG5vdCBOb25lIGVsc2UgZGMuRW1heAotICAgICAgICBzZWxmLmNhcGl0YWxzID0gY2FwaXRhbHMgaWYgY2FwaXRhbHMgaXMgbm90IE5vbmUgZWxzZSBkYy5jYXBpdGFscwotICAgICAgICBzZWxmLmNsYW1wID0gY2xhbXAgaWYgY2xhbXAgaXMgbm90IE5vbmUgZWxzZSBkYy5jbGFtcAotCi0gICAgICAgIGlmIF9pZ25vcmVkX2ZsYWdzIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9pZ25vcmVkX2ZsYWdzID0gW10KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MgPSBfaWdub3JlZF9mbGFncwotCi0gICAgICAgIGlmIHRyYXBzIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnRyYXBzID0gZGMudHJhcHMuY29weSgpCi0gICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UodHJhcHMsIGRpY3QpOgotICAgICAgICAgICAgc2VsZi50cmFwcyA9IGRpY3QoKHMsIGludChzIGluIHRyYXBzKSkgZm9yIHMgaW4gX3NpZ25hbHMgKyB0cmFwcykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYudHJhcHMgPSB0cmFwcwotCi0gICAgICAgIGlmIGZsYWdzIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLmZsYWdzID0gZGljdC5mcm9ta2V5cyhfc2lnbmFscywgMCkKLSAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShmbGFncywgZGljdCk6Ci0gICAgICAgICAgICBzZWxmLmZsYWdzID0gZGljdCgocywgaW50KHMgaW4gZmxhZ3MpKSBmb3IgcyBpbiBfc2lnbmFscyArIGZsYWdzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mbGFncyA9IGZsYWdzCi0KLSAgICBkZWYgX3NldF9pbnRlZ2VyX2NoZWNrKHNlbGYsIG5hbWUsIHZhbHVlLCB2bWluLCB2bWF4KToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIGludCk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIG11c3QgYmUgYW4gaW50ZWdlciIgJSBuYW1lKQotICAgICAgICBpZiB2bWluID09ICctaW5mJzoKLSAgICAgICAgICAgIGlmIHZhbHVlID4gdm1heDoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlcyBtdXN0IGJlIGluIFslcywgJWRdLiBnb3Q6ICVzIiAlIChuYW1lLCB2bWluLCB2bWF4LCB2YWx1ZSkpCi0gICAgICAgIGVsaWYgdm1heCA9PSAnaW5mJzoKLSAgICAgICAgICAgIGlmIHZhbHVlIDwgdm1pbjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlcyBtdXN0IGJlIGluIFslZCwgJXNdLiBnb3Q6ICVzIiAlIChuYW1lLCB2bWluLCB2bWF4LCB2YWx1ZSkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiB2YWx1ZSA8IHZtaW4gb3IgdmFsdWUgPiB2bWF4OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIG11c3QgYmUgaW4gWyVkLCAlZF0uIGdvdCAlcyIgJSAobmFtZSwgdm1pbiwgdm1heCwgdmFsdWUpKQotICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQotCi0gICAgZGVmIF9zZXRfc2lnbmFsX2RpY3Qoc2VsZiwgbmFtZSwgZCk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGQsIGRpY3QpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBtdXN0IGJlIGEgc2lnbmFsIGRpY3QiICUgZCkKLSAgICAgICAgZm9yIGtleSBpbiBkOgotICAgICAgICAgICAgaWYgbm90IGtleSBpbiBfc2lnbmFsczoKLSAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcigiJXMgaXMgbm90IGEgdmFsaWQgc2lnbmFsIGRpY3QiICUgZCkKLSAgICAgICAgZm9yIGtleSBpbiBfc2lnbmFsczoKLSAgICAgICAgICAgIGlmIG5vdCBrZXkgaW4gZDoKLSAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcigiJXMgaXMgbm90IGEgdmFsaWQgc2lnbmFsIGRpY3QiICUgZCkKLSAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCBkKQotCi0gICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKLSAgICAgICAgaWYgbmFtZSA9PSAncHJlYyc6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsIDEsICdpbmYnKQotICAgICAgICBlbGlmIG5hbWUgPT0gJ0VtaW4nOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9pbnRlZ2VyX2NoZWNrKG5hbWUsIHZhbHVlLCAnLWluZicsIDApCi0gICAgICAgIGVsaWYgbmFtZSA9PSAnRW1heCc6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsIDAsICdpbmYnKQotICAgICAgICBlbGlmIG5hbWUgPT0gJ2NhcGl0YWxzJzoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMCwgMSkKLSAgICAgICAgZWxpZiBuYW1lID09ICdjbGFtcCc6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsIDAsIDEpCi0gICAgICAgIGVsaWYgbmFtZSA9PSAncm91bmRpbmcnOgotICAgICAgICAgICAgaWYgbm90IHZhbHVlIGluIF9yb3VuZGluZ19tb2RlczoKLSAgICAgICAgICAgICAgICAjIHJhaXNlIFR5cGVFcnJvciBldmVuIGZvciBzdHJpbmdzIHRvIGhhdmUgY29uc2lzdGVuY3kKLSAgICAgICAgICAgICAgICAjIGFtb25nIHZhcmlvdXMgaW1wbGVtZW50YXRpb25zLgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXM6IGludmFsaWQgcm91bmRpbmcgbW9kZSIgJSB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpCi0gICAgICAgIGVsaWYgbmFtZSA9PSAnZmxhZ3MnIG9yIG5hbWUgPT0gJ3RyYXBzJzoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfc2lnbmFsX2RpY3QobmFtZSwgdmFsdWUpCi0gICAgICAgIGVsaWYgbmFtZSA9PSAnX2lnbm9yZWRfZmxhZ3MnOgotICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKAotICAgICAgICAgICAgICAgICInZGVjaW1hbC5Db250ZXh0JyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnJXMnIiAlIG5hbWUpCi0KLSAgICBkZWYgX19kZWxhdHRyX18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCIlcyBjYW5ub3QgYmUgZGVsZXRlZCIgJSBuYW1lKQotCi0gICAgIyBTdXBwb3J0IGZvciBwaWNrbGluZywgY29weSwgYW5kIGRlZXBjb3B5Ci0gICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgIGZsYWdzID0gW3NpZyBmb3Igc2lnLCB2IGluIHNlbGYuZmxhZ3MuaXRlbXMoKSBpZiB2XQotICAgICAgICB0cmFwcyA9IFtzaWcgZm9yIHNpZywgdiBpbiBzZWxmLnRyYXBzLml0ZW1zKCkgaWYgdl0KLSAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywKLSAgICAgICAgICAgICAgICAoc2VsZi5wcmVjLCBzZWxmLnJvdW5kaW5nLCBzZWxmLkVtaW4sIHNlbGYuRW1heCwKLSAgICAgICAgICAgICAgICAgc2VsZi5jYXBpdGFscywgc2VsZi5jbGFtcCwgZmxhZ3MsIHRyYXBzKSkKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgIiIiU2hvdyB0aGUgY3VycmVudCBjb250ZXh0LiIiIgotICAgICAgICBzID0gW10KLSAgICAgICAgcy5hcHBlbmQoJ0NvbnRleHQocHJlYz0lKHByZWMpZCwgcm91bmRpbmc9JShyb3VuZGluZylzLCAnCi0gICAgICAgICAgICAgICAgICdFbWluPSUoRW1pbilkLCBFbWF4PSUoRW1heClkLCBjYXBpdGFscz0lKGNhcGl0YWxzKWQsICcKLSAgICAgICAgICAgICAgICAgJ2NsYW1wPSUoY2xhbXApZCcKLSAgICAgICAgICAgICAgICAgJSB2YXJzKHNlbGYpKQotICAgICAgICBuYW1lcyA9IFtmLl9fbmFtZV9fIGZvciBmLCB2IGluIHNlbGYuZmxhZ3MuaXRlbXMoKSBpZiB2XQotICAgICAgICBzLmFwcGVuZCgnZmxhZ3M9WycgKyAnLCAnLmpvaW4obmFtZXMpICsgJ10nKQotICAgICAgICBuYW1lcyA9IFt0Ll9fbmFtZV9fIGZvciB0LCB2IGluIHNlbGYudHJhcHMuaXRlbXMoKSBpZiB2XQotICAgICAgICBzLmFwcGVuZCgndHJhcHM9WycgKyAnLCAnLmpvaW4obmFtZXMpICsgJ10nKQotICAgICAgICByZXR1cm4gJywgJy5qb2luKHMpICsgJyknCi0KLSAgICBkZWYgY2xlYXJfZmxhZ3Moc2VsZik6Ci0gICAgICAgICIiIlJlc2V0IGFsbCBmbGFncyB0byB6ZXJvIiIiCi0gICAgICAgIGZvciBmbGFnIGluIHNlbGYuZmxhZ3M6Ci0gICAgICAgICAgICBzZWxmLmZsYWdzW2ZsYWddID0gMAotCi0gICAgZGVmIGNsZWFyX3RyYXBzKHNlbGYpOgotICAgICAgICAiIiJSZXNldCBhbGwgdHJhcHMgdG8gemVybyIiIgotICAgICAgICBmb3IgZmxhZyBpbiBzZWxmLnRyYXBzOgotICAgICAgICAgICAgc2VsZi50cmFwc1tmbGFnXSA9IDAKLQotICAgIGRlZiBfc2hhbGxvd19jb3B5KHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIGEgc2hhbGxvdyBjb3B5IGZyb20gc2VsZi4iIiIKLSAgICAgICAgbmMgPSBDb250ZXh0KHNlbGYucHJlYywgc2VsZi5yb3VuZGluZywgc2VsZi5FbWluLCBzZWxmLkVtYXgsCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLmNhcGl0YWxzLCBzZWxmLmNsYW1wLCBzZWxmLmZsYWdzLCBzZWxmLnRyYXBzLAotICAgICAgICAgICAgICAgICAgICAgc2VsZi5faWdub3JlZF9mbGFncykKLSAgICAgICAgcmV0dXJuIG5jCi0KLSAgICBkZWYgY29weShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyBhIGRlZXAgY29weSBmcm9tIHNlbGYuIiIiCi0gICAgICAgIG5jID0gQ29udGV4dChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAotICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXBpdGFscywgc2VsZi5jbGFtcCwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3MuY29weSgpLCBzZWxmLnRyYXBzLmNvcHkoKSwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCi0gICAgICAgIHJldHVybiBuYwotICAgIF9fY29weV9fID0gY29weQotCi0gICAgZGVmIF9yYWlzZV9lcnJvcihzZWxmLCBjb25kaXRpb24sIGV4cGxhbmF0aW9uID0gTm9uZSwgKmFyZ3MpOgotICAgICAgICAiIiJIYW5kbGVzIGFuIGVycm9yCi0KLSAgICAgICAgSWYgdGhlIGZsYWcgaXMgaW4gX2lnbm9yZWRfZmxhZ3MsIHJldHVybnMgdGhlIGRlZmF1bHQgcmVzcG9uc2UuCi0gICAgICAgIE90aGVyd2lzZSwgaXQgc2V0cyB0aGUgZmxhZywgdGhlbiwgaWYgdGhlIGNvcnJlc3BvbmRpbmcKLSAgICAgICAgdHJhcF9lbmFibGVyIGlzIHNldCwgaXQgcmVyYWlzZXMgdGhlIGV4Y2VwdGlvbi4gIE90aGVyd2lzZSwgaXQgcmV0dXJucwotICAgICAgICB0aGUgZGVmYXVsdCB2YWx1ZSBhZnRlciBzZXR0aW5nIHRoZSBmbGFnLgotICAgICAgICAiIiIKLSAgICAgICAgZXJyb3IgPSBfY29uZGl0aW9uX21hcC5nZXQoY29uZGl0aW9uLCBjb25kaXRpb24pCi0gICAgICAgIGlmIGVycm9yIGluIHNlbGYuX2lnbm9yZWRfZmxhZ3M6Ci0gICAgICAgICAgICAjIERvbid0IHRvdWNoIHRoZSBmbGFnCi0gICAgICAgICAgICByZXR1cm4gZXJyb3IoKS5oYW5kbGUoc2VsZiwgKmFyZ3MpCi0KLSAgICAgICAgc2VsZi5mbGFnc1tlcnJvcl0gPSAxCi0gICAgICAgIGlmIG5vdCBzZWxmLnRyYXBzW2Vycm9yXToKLSAgICAgICAgICAgICMgVGhlIGVycm9ycyBkZWZpbmUgaG93IHRvIGhhbmRsZSB0aGVtc2VsdmVzLgotICAgICAgICAgICAgcmV0dXJuIGNvbmRpdGlvbigpLmhhbmRsZShzZWxmLCAqYXJncykKLQotICAgICAgICAjIEVycm9ycyBzaG91bGQgb25seSBiZSByaXNrZWQgb24gY29waWVzIG9mIHRoZSBjb250ZXh0Ci0gICAgICAgICMgc2VsZi5faWdub3JlZF9mbGFncyA9IFtdCi0gICAgICAgIHJhaXNlIGVycm9yKGV4cGxhbmF0aW9uKQotCi0gICAgZGVmIF9pZ25vcmVfYWxsX2ZsYWdzKHNlbGYpOgotICAgICAgICAiIiJJZ25vcmUgYWxsIGZsYWdzLCBpZiB0aGV5IGFyZSByYWlzZWQiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2lnbm9yZV9mbGFncygqX3NpZ25hbHMpCi0KLSAgICBkZWYgX2lnbm9yZV9mbGFncyhzZWxmLCAqZmxhZ3MpOgotICAgICAgICAiIiJJZ25vcmUgdGhlIGZsYWdzLCBpZiB0aGV5IGFyZSByYWlzZWQiIiIKLSAgICAgICAgIyBEbyBub3QgbXV0YXRlLS0gVGhpcyB3YXksIGNvcGllcyBvZiBhIGNvbnRleHQgbGVhdmUgdGhlIG9yaWdpbmFsCi0gICAgICAgICMgYWxvbmUuCi0gICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MgPSAoc2VsZi5faWdub3JlZF9mbGFncyArIGxpc3QoZmxhZ3MpKQotICAgICAgICByZXR1cm4gbGlzdChmbGFncykKLQotICAgIGRlZiBfcmVnYXJkX2ZsYWdzKHNlbGYsICpmbGFncyk6Ci0gICAgICAgICIiIlN0b3AgaWdub3JpbmcgdGhlIGZsYWdzLCBpZiB0aGV5IGFyZSByYWlzZWQiIiIKLSAgICAgICAgaWYgZmxhZ3MgYW5kIGlzaW5zdGFuY2UoZmxhZ3NbMF0sICh0dXBsZSxsaXN0KSk6Ci0gICAgICAgICAgICBmbGFncyA9IGZsYWdzWzBdCi0gICAgICAgIGZvciBmbGFnIGluIGZsYWdzOgotICAgICAgICAgICAgc2VsZi5faWdub3JlZF9mbGFncy5yZW1vdmUoZmxhZykKLQotICAgICMgV2UgaW5oZXJpdCBvYmplY3QuX19oYXNoX18sIHNvIHdlIG11c3QgZGVueSB0aGlzIGV4cGxpY2l0bHkKLSAgICBfX2hhc2hfXyA9IE5vbmUKLQotICAgIGRlZiBFdGlueShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyBFdGlueSAoPSBFbWluIC0gcHJlYyArIDEpIiIiCi0gICAgICAgIHJldHVybiBpbnQoc2VsZi5FbWluIC0gc2VsZi5wcmVjICsgMSkKLQotICAgIGRlZiBFdG9wKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIG1heGltdW0gZXhwb25lbnQgKD0gRW1heCAtIHByZWMgKyAxKSIiIgotICAgICAgICByZXR1cm4gaW50KHNlbGYuRW1heCAtIHNlbGYucHJlYyArIDEpCi0KLSAgICBkZWYgX3NldF9yb3VuZGluZyhzZWxmLCB0eXBlKToKLSAgICAgICAgIiIiU2V0cyB0aGUgcm91bmRpbmcgdHlwZS4KLQotICAgICAgICBTZXRzIHRoZSByb3VuZGluZyB0eXBlLCBhbmQgcmV0dXJucyB0aGUgY3VycmVudCAocHJldmlvdXMpCi0gICAgICAgIHJvdW5kaW5nIHR5cGUuICBPZnRlbiB1c2VkIGxpa2U6Ci0KLSAgICAgICAgY29udGV4dCA9IGNvbnRleHQuY29weSgpCi0gICAgICAgICMgc28geW91IGRvbid0IGNoYW5nZSB0aGUgY2FsbGluZyBjb250ZXh0Ci0gICAgICAgICMgaWYgYW4gZXJyb3Igb2NjdXJzIGluIHRoZSBtaWRkbGUuCi0gICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX1VQKQotICAgICAgICB2YWwgPSBzZWxmLl9fc3ViX18ob3RoZXIsIGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgY29udGV4dC5fc2V0X3JvdW5kaW5nKHJvdW5kaW5nKQotCi0gICAgICAgIFRoaXMgd2lsbCBtYWtlIGl0IHJvdW5kIHVwIGZvciB0aGF0IG9wZXJhdGlvbi4KLSAgICAgICAgIiIiCi0gICAgICAgIHJvdW5kaW5nID0gc2VsZi5yb3VuZGluZwotICAgICAgICBzZWxmLnJvdW5kaW5nPSB0eXBlCi0gICAgICAgIHJldHVybiByb3VuZGluZwotCi0gICAgZGVmIGNyZWF0ZV9kZWNpbWFsKHNlbGYsIG51bT0nMCcpOgotICAgICAgICAiIiJDcmVhdGVzIGEgbmV3IERlY2ltYWwgaW5zdGFuY2UgYnV0IHVzaW5nIHNlbGYgYXMgY29udGV4dC4KLQotICAgICAgICBUaGlzIG1ldGhvZCBpbXBsZW1lbnRzIHRoZSB0by1udW1iZXIgb3BlcmF0aW9uIG9mIHRoZQotICAgICAgICBJQk0gRGVjaW1hbCBzcGVjaWZpY2F0aW9uLiIiIgotCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobnVtLCBzdHIpIGFuZCBudW0gIT0gbnVtLnN0cmlwKCk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcmFpc2VfZXJyb3IoQ29udmVyc2lvblN5bnRheCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm8gdHJhaWxpbmcgb3IgbGVhZGluZyB3aGl0ZXNwYWNlIGlzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVybWl0dGVkLiIpCi0KLSAgICAgICAgZCA9IERlY2ltYWwobnVtLCBjb250ZXh0PXNlbGYpCi0gICAgICAgIGlmIGQuX2lzbmFuKCkgYW5kIGxlbihkLl9pbnQpID4gc2VsZi5wcmVjIC0gc2VsZi5jbGFtcDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9yYWlzZV9lcnJvcihDb252ZXJzaW9uU3ludGF4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaWFnbm9zdGljIGluZm8gdG9vIGxvbmcgaW4gTmFOIikKLSAgICAgICAgcmV0dXJuIGQuX2ZpeChzZWxmKQotCi0gICAgZGVmIGNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoc2VsZiwgZik6Ci0gICAgICAgICIiIkNyZWF0ZXMgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBmcm9tIGEgZmxvYXQgYnV0IHJvdW5kaW5nIHVzaW5nIHNlbGYKLSAgICAgICAgYXMgdGhlIGNvbnRleHQuCi0KLSAgICAgICAgPj4+IGNvbnRleHQgPSBDb250ZXh0KHByZWM9NSwgcm91bmRpbmc9Uk9VTkRfRE9XTikKLSAgICAgICAgPj4+IGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgzLjE0MTU5MjY1MzU4OTc5MzIpCi0gICAgICAgIERlY2ltYWwoJzMuMTQxNScpCi0gICAgICAgID4+PiBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHRyYXBzPVtJbmV4YWN0XSkKLSAgICAgICAgPj4+IGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgzLjE0MTU5MjY1MzU4OTc5MzIpCi0gICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgICAgICAgIC4uLgotICAgICAgICBkZWNpbWFsLkluZXhhY3Q6IE5vbmUKLQotICAgICAgICAiIiIKLSAgICAgICAgZCA9IERlY2ltYWwuZnJvbV9mbG9hdChmKSAgICAgICAjIEFuIGV4YWN0IGNvbnZlcnNpb24KLSAgICAgICAgcmV0dXJuIGQuX2ZpeChzZWxmKSAgICAgICAgICAgICAjIEFwcGx5IHRoZSBjb250ZXh0IHJvdW5kaW5nCi0KLSAgICAjIE1ldGhvZHMKLSAgICBkZWYgYWJzKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgb3BlcmFuZC4KLQotICAgICAgICBJZiB0aGUgb3BlcmFuZCBpcyBuZWdhdGl2ZSwgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBhcyB1c2luZyB0aGUgbWludXMKLSAgICAgICAgb3BlcmF0aW9uIG9uIHRoZSBvcGVyYW5kLiAgT3RoZXJ3aXNlLCB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lIGFzIHVzaW5nCi0gICAgICAgIHRoZSBwbHVzIG9wZXJhdGlvbiBvbiB0aGUgb3BlcmFuZC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFicyhEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hYnMoRGVjaW1hbCgnLTEwMCcpKQotICAgICAgICBEZWNpbWFsKCcxMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFicyhEZWNpbWFsKCcxMDEuNScpKQotICAgICAgICBEZWNpbWFsKCcxMDEuNScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWJzKERlY2ltYWwoJy0xMDEuNScpKQotICAgICAgICBEZWNpbWFsKCcxMDEuNScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWJzKC0xKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLl9fYWJzX18oY29udGV4dD1zZWxmKQotCi0gICAgZGVmIGFkZChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBzdW0gb2YgdGhlIHR3byBvcGVyYW5kcy4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFkZChEZWNpbWFsKCcxMicpLCBEZWNpbWFsKCc3LjAwJykpCi0gICAgICAgIERlY2ltYWwoJzE5LjAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hZGQoRGVjaW1hbCgnMUUrMicpLCBEZWNpbWFsKCcxLjAxRSs0JykpCi0gICAgICAgIERlY2ltYWwoJzEuMDJFKzQnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFkZCgxLCBEZWNpbWFsKDIpKQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hZGQoRGVjaW1hbCg4KSwgNSkKLSAgICAgICAgRGVjaW1hbCgnMTMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFkZCg1LCA1KQotICAgICAgICBEZWNpbWFsKCcxMCcpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByID0gYS5fX2FkZF9fKGIsIGNvbnRleHQ9c2VsZikKLSAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHIKLQotICAgIGRlZiBfYXBwbHkoc2VsZiwgYSk6Ci0gICAgICAgIHJldHVybiBzdHIoYS5fZml4KHNlbGYpKQotCi0gICAgZGVmIGNhbm9uaWNhbChzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgc2FtZSBEZWNpbWFsIG9iamVjdC4KLQotICAgICAgICBBcyB3ZSBkbyBub3QgaGF2ZSBkaWZmZXJlbnQgZW5jb2RpbmdzIGZvciB0aGUgc2FtZSBudW1iZXIsIHRoZQotICAgICAgICByZWNlaXZlZCBvYmplY3QgYWxyZWFkeSBpcyBpbiBpdHMgY2Fub25pY2FsIGZvcm0uCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jYW5vbmljYWwoRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBEZWNpbWFsKCcyLjUwJykKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGEsIERlY2ltYWwpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjYW5vbmljYWwgcmVxdWlyZXMgYSBEZWNpbWFsIGFzIGFuIGFyZ3VtZW50LiIpCi0gICAgICAgIHJldHVybiBhLmNhbm9uaWNhbCgpCi0KLSAgICBkZWYgY29tcGFyZShzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiQ29tcGFyZXMgdmFsdWVzIG51bWVyaWNhbGx5LgotCi0gICAgICAgIElmIHRoZSBzaWducyBvZiB0aGUgb3BlcmFuZHMgZGlmZmVyLCBhIHZhbHVlIHJlcHJlc2VudGluZyBlYWNoIG9wZXJhbmQKLSAgICAgICAgKCctMScgaWYgdGhlIG9wZXJhbmQgaXMgbGVzcyB0aGFuIHplcm8sICcwJyBpZiB0aGUgb3BlcmFuZCBpcyB6ZXJvIG9yCi0gICAgICAgIG5lZ2F0aXZlIHplcm8sIG9yICcxJyBpZiB0aGUgb3BlcmFuZCBpcyBncmVhdGVyIHRoYW4gemVybykgaXMgdXNlZCBpbgotICAgICAgICBwbGFjZSBvZiB0aGF0IG9wZXJhbmQgZm9yIHRoZSBjb21wYXJpc29uIGluc3RlYWQgb2YgdGhlIGFjdHVhbAotICAgICAgICBvcGVyYW5kLgotCi0gICAgICAgIFRoZSBjb21wYXJpc29uIGlzIHRoZW4gZWZmZWN0ZWQgYnkgc3VidHJhY3RpbmcgdGhlIHNlY29uZCBvcGVyYW5kIGZyb20KLSAgICAgICAgdGhlIGZpcnN0IGFuZCB0aGVuIHJldHVybmluZyBhIHZhbHVlIGFjY29yZGluZyB0byB0aGUgcmVzdWx0IG9mIHRoZQotICAgICAgICBzdWJ0cmFjdGlvbjogJy0xJyBpZiB0aGUgcmVzdWx0IGlzIGxlc3MgdGhhbiB6ZXJvLCAnMCcgaWYgdGhlIHJlc3VsdCBpcwotICAgICAgICB6ZXJvIG9yIG5lZ2F0aXZlIHplcm8sIG9yICcxJyBpZiB0aGUgcmVzdWx0IGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnMi4xJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzIuMTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKCczJyksIERlY2ltYWwoJzIuMScpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCctMycpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJy0zJyksIERlY2ltYWwoJzIuMScpKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZSgxLCAyKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKDEpLCAyKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZSgxLCBEZWNpbWFsKDIpKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5jb21wYXJlKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBjb21wYXJlX3NpZ25hbChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiQ29tcGFyZXMgdGhlIHZhbHVlcyBvZiB0aGUgdHdvIG9wZXJhbmRzIG51bWVyaWNhbGx5LgotCi0gICAgICAgIEl0J3MgcHJldHR5IG11Y2ggbGlrZSBjb21wYXJlKCksIGJ1dCBhbGwgTmFOcyBzaWduYWwsIHdpdGggc2lnbmFsaW5nCi0gICAgICAgIE5hTnMgdGFraW5nIHByZWNlZGVuY2Ugb3ZlciBxdWlldCBOYU5zLgotCi0gICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0Ci0gICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgPj4+IGMuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzIuMScpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0gPSAwCi0gICAgICAgID4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQotICAgICAgICAwCi0gICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoJ05hTicpLCBEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnTmFOJykKLSAgICAgICAgPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCi0gICAgICAgIDEKLSAgICAgICAgPj4+IGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0gPSAwCi0gICAgICAgID4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQotICAgICAgICAwCi0gICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoJ3NOYU4nKSwgRGVjaW1hbCgnMi4xJykpCi0gICAgICAgIERlY2ltYWwoJ05hTicpCi0gICAgICAgID4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQotICAgICAgICAxCi0gICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKC0xLCAyKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoLTEpLCAyKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKC0xLCBEZWNpbWFsKDIpKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5jb21wYXJlX3NpZ25hbChiLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgY29tcGFyZV90b3RhbChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiQ29tcGFyZXMgdHdvIG9wZXJhbmRzIHVzaW5nIHRoZWlyIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uLgotCi0gICAgICAgIFRoaXMgaXMgbm90IGxpa2UgdGhlIHN0YW5kYXJkIGNvbXBhcmUsIHdoaWNoIHVzZSB0aGVpciBudW1lcmljYWwKLSAgICAgICAgdmFsdWUuIE5vdGUgdGhhdCBhIHRvdGFsIG9yZGVyaW5nIGlzIGRlZmluZWQgZm9yIGFsbCBwb3NzaWJsZSBhYnN0cmFjdAotICAgICAgICByZXByZXNlbnRhdGlvbnMuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyLjczJyksIERlY2ltYWwoJzEyNy45JykpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoJy0xMjcnKSwgIERlY2ltYWwoJzEyJykpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyLjMwJyksIERlY2ltYWwoJzEyLjMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoRGVjaW1hbCgnMTIuMzAnKSwgRGVjaW1hbCgnMTIuMzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKCcxMi4zJyksICBEZWNpbWFsKCcxMi4zMDAnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKCcxMi4zJyksICBEZWNpbWFsKCdOYU4nKSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoMSwgMikKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoRGVjaW1hbCgxKSwgMikKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoMSwgRGVjaW1hbCgyKSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuY29tcGFyZV90b3RhbChiKQotCi0gICAgZGVmIGNvbXBhcmVfdG90YWxfbWFnKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJDb21wYXJlcyB0d28gb3BlcmFuZHMgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24gaWdub3Jpbmcgc2lnbi4KLQotICAgICAgICBMaWtlIGNvbXBhcmVfdG90YWwsIGJ1dCB3aXRoIG9wZXJhbmQncyBzaWduIGlnbm9yZWQgYW5kIGFzc3VtZWQgdG8gYmUgMC4KLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmNvbXBhcmVfdG90YWxfbWFnKGIpCi0KLSAgICBkZWYgY29weV9hYnMoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybnMgYSBjb3B5IG9mIHRoZSBvcGVyYW5kIHdpdGggdGhlIHNpZ24gc2V0IHRvIDAuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X2FicyhEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X2FicyhEZWNpbWFsKCctMTAwJykpCi0gICAgICAgIERlY2ltYWwoJzEwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9hYnMoLTEpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuY29weV9hYnMoKQotCi0gICAgZGVmIGNvcHlfZGVjaW1hbChzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGRlY2ltYWwgb2JqZWN0LgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9kZWNpbWFsKERlY2ltYWwoJzIuMScpKQotICAgICAgICBEZWNpbWFsKCcyLjEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfZGVjaW1hbChEZWNpbWFsKCctMS4wMCcpKQotICAgICAgICBEZWNpbWFsKCctMS4wMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9kZWNpbWFsKDEpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIERlY2ltYWwoYSkKLQotICAgIGRlZiBjb3B5X25lZ2F0ZShzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJucyBhIGNvcHkgb2YgdGhlIG9wZXJhbmQgd2l0aCB0aGUgc2lnbiBpbnZlcnRlZC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfbmVnYXRlKERlY2ltYWwoJzEwMS41JykpCi0gICAgICAgIERlY2ltYWwoJy0xMDEuNScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9uZWdhdGUoRGVjaW1hbCgnLTEwMS41JykpCi0gICAgICAgIERlY2ltYWwoJzEwMS41JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X25lZ2F0ZSgxKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5jb3B5X25lZ2F0ZSgpCi0KLSAgICBkZWYgY29weV9zaWduKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJDb3BpZXMgdGhlIHNlY29uZCBvcGVyYW5kJ3Mgc2lnbiB0byB0aGUgZmlyc3Qgb25lLgotCi0gICAgICAgIEluIGRldGFpbCwgaXQgcmV0dXJucyBhIGNvcHkgb2YgdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgc2lnbgotICAgICAgICBlcXVhbCB0byB0aGUgc2lnbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oRGVjaW1hbCggJzEuNTAnKSwgRGVjaW1hbCgnNy4zMycpKQotICAgICAgICBEZWNpbWFsKCcxLjUwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oRGVjaW1hbCgnLTEuNTAnKSwgRGVjaW1hbCgnNy4zMycpKQotICAgICAgICBEZWNpbWFsKCcxLjUwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oRGVjaW1hbCggJzEuNTAnKSwgRGVjaW1hbCgnLTcuMzMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEuNTAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbihEZWNpbWFsKCctMS41MCcpLCBEZWNpbWFsKCctNy4zMycpKQotICAgICAgICBEZWNpbWFsKCctMS41MCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKDEsIC0yKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKERlY2ltYWwoMSksIC0yKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKDEsIERlY2ltYWwoLTIpKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5jb3B5X3NpZ24oYikKLQotICAgIGRlZiBkaXZpZGUoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIkRlY2ltYWwgZGl2aXNpb24gaW4gYSBzcGVjaWZpZWQgY29udGV4dC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcxJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnMC4zMzMzMzMzMzMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcyJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnMC42NjY2NjY2NjcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCc1JyksIERlY2ltYWwoJzInKSkKLSAgICAgICAgRGVjaW1hbCgnMi41JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcxMCcpKQotICAgICAgICBEZWNpbWFsKCcwLjEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcxMicpLCBEZWNpbWFsKCcxMicpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnOC4wMCcpLCBEZWNpbWFsKCcyJykpCi0gICAgICAgIERlY2ltYWwoJzQuMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcyLjQwMCcpLCBEZWNpbWFsKCcyLjAnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4yMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzEwMDAnKSwgRGVjaW1hbCgnMTAwJykpCi0gICAgICAgIERlY2ltYWwoJzEwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMTAwMCcpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzEwMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcyLjQwRSs2JyksIERlY2ltYWwoJzInKSkKLSAgICAgICAgRGVjaW1hbCgnMS4yMEUrNicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKDUsIDUpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKDUpLCA1KQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoNSwgRGVjaW1hbCg1KSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByID0gYS5fX3RydWVkaXZfXyhiLCBjb250ZXh0PXNlbGYpCi0gICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiByCi0KLSAgICBkZWYgZGl2aWRlX2ludChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiRGl2aWRlcyB0d28gbnVtYmVycyBhbmQgcmV0dXJucyB0aGUgaW50ZWdlciBwYXJ0IG9mIHRoZSByZXN1bHQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGVfaW50KERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGVfaW50KERlY2ltYWwoJzEwJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludChEZWNpbWFsKCcxJyksIERlY2ltYWwoJzAuMycpKQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGVfaW50KDEwLCAzKQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGVfaW50KERlY2ltYWwoMTApLCAzKQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGVfaW50KDEwLCBEZWNpbWFsKDMpKQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHIgPSBhLl9fZmxvb3JkaXZfXyhiLCBjb250ZXh0PXNlbGYpCi0gICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiByCi0KLSAgICBkZWYgZGl2bW9kKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJSZXR1cm4gKGEgLy8gYiwgYSAlIGIpLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2bW9kKERlY2ltYWwoOCksIERlY2ltYWwoMykpCi0gICAgICAgIChEZWNpbWFsKCcyJyksIERlY2ltYWwoJzInKSkKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZtb2QoRGVjaW1hbCg4KSwgRGVjaW1hbCg0KSkKLSAgICAgICAgKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdm1vZCg4LCA0KQotICAgICAgICAoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCcwJykpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2bW9kKERlY2ltYWwoOCksIDQpCi0gICAgICAgIChEZWNpbWFsKCcyJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZtb2QoOCwgRGVjaW1hbCg0KSkKLSAgICAgICAgKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgciA9IGEuX19kaXZtb2RfXyhiLCBjb250ZXh0PXNlbGYpCi0gICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiByCi0KLSAgICBkZWYgZXhwKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm5zIGUgKiogYS4KLQotICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKLSAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKLSAgICAgICAgPj4+IGMuRW1heCA9IDk5OQotICAgICAgICA+Pj4gYy5leHAoRGVjaW1hbCgnLUluZmluaXR5JykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gYy5leHAoRGVjaW1hbCgnLTEnKSkKLSAgICAgICAgRGVjaW1hbCgnMC4zNjc4Nzk0NDEnKQotICAgICAgICA+Pj4gYy5leHAoRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IGMuZXhwKERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMi43MTgyODE4MycpCi0gICAgICAgID4+PiBjLmV4cChEZWNpbWFsKCcwLjY5MzE0NzE4MScpKQotICAgICAgICBEZWNpbWFsKCcyLjAwMDAwMDAwJykKLSAgICAgICAgPj4+IGMuZXhwKERlY2ltYWwoJytJbmZpbml0eScpKQotICAgICAgICBEZWNpbWFsKCdJbmZpbml0eScpCi0gICAgICAgID4+PiBjLmV4cCgxMCkKLSAgICAgICAgRGVjaW1hbCgnMjIwMjYuNDY1OCcpCi0gICAgICAgICIiIgotICAgICAgICBhID1fY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmV4cChjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgZm1hKHNlbGYsIGEsIGIsIGMpOgotICAgICAgICAiIiJSZXR1cm5zIGEgbXVsdGlwbGllZCBieSBiLCBwbHVzIGMuCi0KLSAgICAgICAgVGhlIGZpcnN0IHR3byBvcGVyYW5kcyBhcmUgbXVsdGlwbGllZCB0b2dldGhlciwgdXNpbmcgbXVsdGlwbHksCi0gICAgICAgIHRoZSB0aGlyZCBvcGVyYW5kIGlzIHRoZW4gYWRkZWQgdG8gdGhlIHJlc3VsdCBvZiB0aGF0Ci0gICAgICAgIG11bHRpcGxpY2F0aW9uLCB1c2luZyBhZGQsIGFsbCB3aXRoIG9ubHkgb25lIGZpbmFsIHJvdW5kaW5nLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnNScpLCBEZWNpbWFsKCc3JykpCi0gICAgICAgIERlY2ltYWwoJzIyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5mbWEoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCctNScpLCBEZWNpbWFsKCc3JykpCi0gICAgICAgIERlY2ltYWwoJy04JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5mbWEoRGVjaW1hbCgnODg4NTY1MjkwJyksIERlY2ltYWwoJzE1NTcuOTY5MzAnKSwgRGVjaW1hbCgnLTg2MDg3Ljc1NzgnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4zODQzNTczNkUrMTInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmZtYSgxLCAzLCA0KQotICAgICAgICBEZWNpbWFsKCc3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5mbWEoMSwgRGVjaW1hbCgzKSwgNCkKLSAgICAgICAgRGVjaW1hbCgnNycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKDEsIDMsIERlY2ltYWwoNCkpCi0gICAgICAgIERlY2ltYWwoJzcnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuZm1hKGIsIGMsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBpc19jYW5vbmljYWwoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGNhbm9uaWNhbDsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KLQotICAgICAgICBDdXJyZW50bHksIHRoZSBlbmNvZGluZyBvZiBhIERlY2ltYWwgaW5zdGFuY2UgaXMgYWx3YXlzCi0gICAgICAgIGNhbm9uaWNhbCwgc28gdGhpcyBtZXRob2QgcmV0dXJucyBUcnVlIGZvciBhbnkgRGVjaW1hbC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Nhbm9uaWNhbChEZWNpbWFsKCcyLjUwJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGEsIERlY2ltYWwpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpc19jYW5vbmljYWwgcmVxdWlyZXMgYSBEZWNpbWFsIGFzIGFuIGFyZ3VtZW50LiIpCi0gICAgICAgIHJldHVybiBhLmlzX2Nhbm9uaWNhbCgpCi0KLSAgICBkZWYgaXNfZmluaXRlKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBmaW5pdGU7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgQSBEZWNpbWFsIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgZmluaXRlIGlmIGl0IGlzIG5laXRoZXIKLSAgICAgICAgaW5maW5pdGUgbm9yIGEgTmFOLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKERlY2ltYWwoJzIuNTAnKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZShEZWNpbWFsKCctMC4zJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoRGVjaW1hbCgnMCcpKQotICAgICAgICBUcnVlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKERlY2ltYWwoJ0luZicpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZShEZWNpbWFsKCdOYU4nKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoMSkKLSAgICAgICAgVHJ1ZQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuaXNfZmluaXRlKCkKLQotICAgIGRlZiBpc19pbmZpbml0ZShzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgaW5maW5pdGU7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19pbmZpbml0ZShEZWNpbWFsKCcyLjUwJykpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfaW5maW5pdGUoRGVjaW1hbCgnLUluZicpKQotICAgICAgICBUcnVlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfaW5maW5pdGUoRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfaW5maW5pdGUoMSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmlzX2luZmluaXRlKCkKLQotICAgIGRlZiBpc19uYW4oc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGEgcU5hTiBvciBzTmFOOwotICAgICAgICBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfbmFuKERlY2ltYWwoJzIuNTAnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19uYW4oRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19uYW4oRGVjaW1hbCgnLXNOYU4nKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX25hbigxKQotICAgICAgICBGYWxzZQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuaXNfbmFuKCkKLQotICAgIGRlZiBpc19ub3JtYWwoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGEgbm9ybWFsIG51bWJlcjsKLSAgICAgICAgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KLQotICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKLSAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKLSAgICAgICAgPj4+IGMuRW1heCA9IDk5OQotICAgICAgICA+Pj4gYy5pc19ub3JtYWwoRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBUcnVlCi0gICAgICAgID4+PiBjLmlzX25vcm1hbChEZWNpbWFsKCcwLjFFLTk5OScpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gYy5pc19ub3JtYWwoRGVjaW1hbCgnMC4wMCcpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gYy5pc19ub3JtYWwoRGVjaW1hbCgnLUluZicpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gYy5pc19ub3JtYWwoRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBjLmlzX25vcm1hbCgxKQotICAgICAgICBUcnVlCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5pc19ub3JtYWwoY29udGV4dD1zZWxmKQotCi0gICAgZGVmIGlzX3FuYW4oc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfcW5hbihEZWNpbWFsKCcyLjUwJykpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfcW5hbihEZWNpbWFsKCdOYU4nKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3FuYW4oRGVjaW1hbCgnc05hTicpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3FuYW4oMSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmlzX3FuYW4oKQotCi0gICAgZGVmIGlzX3NpZ25lZChzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgbmVnYXRpdmU7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zaWduZWQoRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NpZ25lZChEZWNpbWFsKCctMTInKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NpZ25lZChEZWNpbWFsKCctMCcpKQotICAgICAgICBUcnVlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc2lnbmVkKDgpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc2lnbmVkKC04KQotICAgICAgICBUcnVlCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5pc19zaWduZWQoKQotCi0gICAgZGVmIGlzX3NuYW4oc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGEgc2lnbmFsaW5nIE5hTjsKLSAgICAgICAgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NuYW4oRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NuYW4oRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc25hbihEZWNpbWFsKCdzTmFOJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zbmFuKDEpCi0gICAgICAgIEZhbHNlCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5pc19zbmFuKCkKLQotICAgIGRlZiBpc19zdWJub3JtYWwoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIHN1Ym5vcm1hbDsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KLQotICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKLSAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKLSAgICAgICAgPj4+IGMuRW1heCA9IDk5OQotICAgICAgICA+Pj4gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgnMC4xRS05OTknKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgnMC4wMCcpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgnLUluZicpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBjLmlzX3N1Ym5vcm1hbCgxKQotICAgICAgICBGYWxzZQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuaXNfc3Vibm9ybWFsKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBpc196ZXJvKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBhIHplcm87IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc196ZXJvKERlY2ltYWwoJzAnKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3plcm8oRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3plcm8oRGVjaW1hbCgnLTBFKzInKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3plcm8oMSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc196ZXJvKDApCi0gICAgICAgIFRydWUKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmlzX3plcm8oKQotCi0gICAgZGVmIGxuKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBuYXR1cmFsIChiYXNlIGUpIGxvZ2FyaXRobSBvZiB0aGUgb3BlcmFuZC4KLQotICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKLSAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKLSAgICAgICAgPj4+IGMuRW1heCA9IDk5OQotICAgICAgICA+Pj4gYy5sbihEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCi0gICAgICAgID4+PiBjLmxuKERlY2ltYWwoJzEuMDAwJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gYy5sbihEZWNpbWFsKCcyLjcxODI4MTgzJykpCi0gICAgICAgIERlY2ltYWwoJzEuMDAwMDAwMDAnKQotICAgICAgICA+Pj4gYy5sbihEZWNpbWFsKCcxMCcpKQotICAgICAgICBEZWNpbWFsKCcyLjMwMjU4NTA5JykKLSAgICAgICAgPj4+IGMubG4oRGVjaW1hbCgnK0luZmluaXR5JykpCi0gICAgICAgIERlY2ltYWwoJ0luZmluaXR5JykKLSAgICAgICAgPj4+IGMubG4oMSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5sbihjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbG9nMTAoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGJhc2UgMTAgbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLgotCi0gICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQotICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQotICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5Ci0gICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKLSAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnMC4wMDEnKSkKLSAgICAgICAgRGVjaW1hbCgnLTMnKQotICAgICAgICA+Pj4gYy5sb2cxMChEZWNpbWFsKCcxLjAwMCcpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnMicpKQotICAgICAgICBEZWNpbWFsKCcwLjMwMTAyOTk5NicpCi0gICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzEwJykpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gYy5sb2cxMChEZWNpbWFsKCc3MCcpKQotICAgICAgICBEZWNpbWFsKCcxLjg0NTA5ODA0JykKLSAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnK0luZmluaXR5JykpCi0gICAgICAgIERlY2ltYWwoJ0luZmluaXR5JykKLSAgICAgICAgPj4+IGMubG9nMTAoMCkKLSAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKLSAgICAgICAgPj4+IGMubG9nMTAoMSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5sb2cxMChjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbG9nYihzZWxmLCBhKToKLSAgICAgICAgIiIiIFJldHVybnMgdGhlIGV4cG9uZW50IG9mIHRoZSBtYWduaXR1ZGUgb2YgdGhlIG9wZXJhbmQncyBNU0QuCi0KLSAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgaW50ZWdlciB3aGljaCBpcyB0aGUgZXhwb25lbnQgb2YgdGhlIG1hZ25pdHVkZQotICAgICAgICBvZiB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdCBvZiB0aGUgb3BlcmFuZCAoYXMgdGhvdWdoIHRoZQotICAgICAgICBvcGVyYW5kIHdlcmUgdHJ1bmNhdGVkIHRvIGEgc2luZ2xlIGRpZ2l0IHdoaWxlIG1haW50YWluaW5nIHRoZQotICAgICAgICB2YWx1ZSBvZiB0aGF0IGRpZ2l0IGFuZCB3aXRob3V0IGxpbWl0aW5nIHRoZSByZXN1bHRpbmcgZXhwb25lbnQpLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYihEZWNpbWFsKCcyNTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYihEZWNpbWFsKCcyLjUwJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2IoRGVjaW1hbCgnMC4wMycpKQotICAgICAgICBEZWNpbWFsKCctMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYihEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYigxKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2diKDEwKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2diKDEwMCkKLSAgICAgICAgRGVjaW1hbCgnMicpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5sb2diKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBsb2dpY2FsX2FuZChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiQXBwbGllcyB0aGUgbG9naWNhbCBvcGVyYXRpb24gJ2FuZCcgYmV0d2VlbiBlYWNoIG9wZXJhbmQncyBkaWdpdHMuCi0KLSAgICAgICAgVGhlIG9wZXJhbmRzIG11c3QgYmUgYm90aCBsb2dpY2FsIG51bWJlcnMuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZChEZWNpbWFsKCcwJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZChEZWNpbWFsKCcxJyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoRGVjaW1hbCgnMTEwMCcpLCBEZWNpbWFsKCcxMDEwJykpCi0gICAgICAgIERlY2ltYWwoJzEwMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKERlY2ltYWwoJzExMTEnKSwgRGVjaW1hbCgnMTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKDExMCwgMTEwMSkKLSAgICAgICAgRGVjaW1hbCgnMTAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZChEZWNpbWFsKDExMCksIDExMDEpCi0gICAgICAgIERlY2ltYWwoJzEwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoMTEwLCBEZWNpbWFsKDExMDEpKQotICAgICAgICBEZWNpbWFsKCcxMDAnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubG9naWNhbF9hbmQoYiwgY29udGV4dD1zZWxmKQotCi0gICAgZGVmIGxvZ2ljYWxfaW52ZXJ0KHNlbGYsIGEpOgotICAgICAgICAiIiJJbnZlcnQgYWxsIHRoZSBkaWdpdHMgaW4gdGhlIG9wZXJhbmQuCi0KLSAgICAgICAgVGhlIG9wZXJhbmQgbXVzdCBiZSBhIGxvZ2ljYWwgbnVtYmVyLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9pbnZlcnQoRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcxMTExMTExMTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfaW52ZXJ0KERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMTExMTExMTEwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2ludmVydChEZWNpbWFsKCcxMTExMTExMTEnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9pbnZlcnQoRGVjaW1hbCgnMTAxMDEwMTAxJykpCi0gICAgICAgIERlY2ltYWwoJzEwMTAxMDEwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2ludmVydCgxMTAxKQotICAgICAgICBEZWNpbWFsKCcxMTExMTAwMTAnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubG9naWNhbF9pbnZlcnQoY29udGV4dD1zZWxmKQotCi0gICAgZGVmIGxvZ2ljYWxfb3Ioc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIkFwcGxpZXMgdGhlIGxvZ2ljYWwgb3BlcmF0aW9uICdvcicgYmV0d2VlbiBlYWNoIG9wZXJhbmQncyBkaWdpdHMuCi0KLSAgICAgICAgVGhlIG9wZXJhbmRzIG11c3QgYmUgYm90aCBsb2dpY2FsIG51bWJlcnMuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoJzExMDAnKSwgRGVjaW1hbCgnMTAxMCcpKQotICAgICAgICBEZWNpbWFsKCcxMTEwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoJzExMTAnKSwgRGVjaW1hbCgnMTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTExMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcigxMTAsIDExMDEpCi0gICAgICAgIERlY2ltYWwoJzExMTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoRGVjaW1hbCgxMTApLCAxMTAxKQotICAgICAgICBEZWNpbWFsKCcxMTExJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKDExMCwgRGVjaW1hbCgxMTAxKSkKLSAgICAgICAgRGVjaW1hbCgnMTExMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5sb2dpY2FsX29yKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBsb2dpY2FsX3hvcihzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiQXBwbGllcyB0aGUgbG9naWNhbCBvcGVyYXRpb24gJ3hvcicgYmV0d2VlbiBlYWNoIG9wZXJhbmQncyBkaWdpdHMuCi0KLSAgICAgICAgVGhlIG9wZXJhbmRzIG11c3QgYmUgYm90aCBsb2dpY2FsIG51bWJlcnMuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKCcwJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKCcxJyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMTEwMCcpLCBEZWNpbWFsKCcxMDEwJykpCi0gICAgICAgIERlY2ltYWwoJzExMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMTExMScpLCBEZWNpbWFsKCcxMCcpKQotICAgICAgICBEZWNpbWFsKCcxMTAxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcigxMTAsIDExMDEpCi0gICAgICAgIERlY2ltYWwoJzEwMTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoMTEwKSwgMTEwMSkKLSAgICAgICAgRGVjaW1hbCgnMTAxMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoMTEwLCBEZWNpbWFsKDExMDEpKQotICAgICAgICBEZWNpbWFsKCcxMDExJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmxvZ2ljYWxfeG9yKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBtYXgoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIm1heCBjb21wYXJlcyB0d28gdmFsdWVzIG51bWVyaWNhbGx5IGFuZCByZXR1cm5zIHRoZSBtYXhpbXVtLgotCi0gICAgICAgIElmIGVpdGhlciBvcGVyYW5kIGlzIGEgTmFOIHRoZW4gdGhlIGdlbmVyYWwgcnVsZXMgYXBwbHkuCi0gICAgICAgIE90aGVyd2lzZSwgdGhlIG9wZXJhbmRzIGFyZSBjb21wYXJlZCBhcyB0aG91Z2ggYnkgdGhlIGNvbXBhcmUKLSAgICAgICAgb3BlcmF0aW9uLiAgSWYgdGhleSBhcmUgbnVtZXJpY2FsbHkgZXF1YWwgdGhlbiB0aGUgbGVmdC1oYW5kIG9wZXJhbmQKLSAgICAgICAgaXMgY2hvc2VuIGFzIHRoZSByZXN1bHQuICBPdGhlcndpc2UgdGhlIG1heGltdW0gKGNsb3NlciB0byBwb3NpdGl2ZQotICAgICAgICBpbmZpbml0eSkgb2YgdGhlIHR3byBvcGVyYW5kcyBpcyBjaG9zZW4gYXMgdGhlIHJlc3VsdC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heChEZWNpbWFsKCczJyksIERlY2ltYWwoJzInKSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KERlY2ltYWwoJy0xMCcpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heChEZWNpbWFsKCcxLjAnKSwgRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoRGVjaW1hbCgnNycpLCBEZWNpbWFsKCdOYU4nKSkKLSAgICAgICAgRGVjaW1hbCgnNycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KDEsIDIpCi0gICAgICAgIERlY2ltYWwoJzInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heChEZWNpbWFsKDEpLCAyKQotICAgICAgICBEZWNpbWFsKCcyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoMSwgRGVjaW1hbCgyKSkKLSAgICAgICAgRGVjaW1hbCgnMicpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5tYXgoYiwgY29udGV4dD1zZWxmKQotCi0gICAgZGVmIG1heF9tYWcoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIkNvbXBhcmVzIHRoZSB2YWx1ZXMgbnVtZXJpY2FsbHkgd2l0aCB0aGVpciBzaWduIGlnbm9yZWQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXhfbWFnKERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIERlY2ltYWwoJzcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heF9tYWcoRGVjaW1hbCgnNycpLCBEZWNpbWFsKCctMTAnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXhfbWFnKDEsIC0yKQotICAgICAgICBEZWNpbWFsKCctMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4X21hZyhEZWNpbWFsKDEpLCAtMikKLSAgICAgICAgRGVjaW1hbCgnLTInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heF9tYWcoMSwgRGVjaW1hbCgtMikpCi0gICAgICAgIERlY2ltYWwoJy0yJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLm1heF9tYWcoYiwgY29udGV4dD1zZWxmKQotCi0gICAgZGVmIG1pbihzZWxmLCBhLCBiKToKLSAgICAgICAgIiIibWluIGNvbXBhcmVzIHR3byB2YWx1ZXMgbnVtZXJpY2FsbHkgYW5kIHJldHVybnMgdGhlIG1pbmltdW0uCi0KLSAgICAgICAgSWYgZWl0aGVyIG9wZXJhbmQgaXMgYSBOYU4gdGhlbiB0aGUgZ2VuZXJhbCBydWxlcyBhcHBseS4KLSAgICAgICAgT3RoZXJ3aXNlLCB0aGUgb3BlcmFuZHMgYXJlIGNvbXBhcmVkIGFzIHRob3VnaCBieSB0aGUgY29tcGFyZQotICAgICAgICBvcGVyYXRpb24uICBJZiB0aGV5IGFyZSBudW1lcmljYWxseSBlcXVhbCB0aGVuIHRoZSBsZWZ0LWhhbmQgb3BlcmFuZAotICAgICAgICBpcyBjaG9zZW4gYXMgdGhlIHJlc3VsdC4gIE90aGVyd2lzZSB0aGUgbWluaW11bSAoY2xvc2VyIHRvIG5lZ2F0aXZlCi0gICAgICAgIGluZmluaXR5KSBvZiB0aGUgdHdvIG9wZXJhbmRzIGlzIGNob3NlbiBhcyB0aGUgcmVzdWx0LgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnMicpKQotICAgICAgICBEZWNpbWFsKCcyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW4oRGVjaW1hbCgnLTEwJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW4oRGVjaW1hbCgnMS4wJyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4wJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW4oRGVjaW1hbCgnNycpLCBEZWNpbWFsKCdOYU4nKSkKLSAgICAgICAgRGVjaW1hbCgnNycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKDEsIDIpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbihEZWNpbWFsKDEpLCAyKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW4oMSwgRGVjaW1hbCgyOSkpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubWluKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBtaW5fbWFnKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJDb21wYXJlcyB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluX21hZyhEZWNpbWFsKCczJyksIERlY2ltYWwoJy0yJykpCi0gICAgICAgIERlY2ltYWwoJy0yJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW5fbWFnKERlY2ltYWwoJy0zJyksIERlY2ltYWwoJ05hTicpKQotICAgICAgICBEZWNpbWFsKCctMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluX21hZygxLCAtMikKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluX21hZyhEZWNpbWFsKDEpLCAtMikKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluX21hZygxLCBEZWNpbWFsKC0yKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5taW5fbWFnKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBtaW51cyhzZWxmLCBhKToKLSAgICAgICAgIiIiTWludXMgY29ycmVzcG9uZHMgdG8gdW5hcnkgcHJlZml4IG1pbnVzIGluIFB5dGhvbi4KLQotICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGV2YWx1YXRlZCB1c2luZyB0aGUgc2FtZSBydWxlcyBhcyBzdWJ0cmFjdDsgdGhlCi0gICAgICAgIG9wZXJhdGlvbiBtaW51cyhhKSBpcyBjYWxjdWxhdGVkIGFzIHN1YnRyYWN0KCcwJywgYSkgd2hlcmUgdGhlICcwJwotICAgICAgICBoYXMgdGhlIHNhbWUgZXhwb25lbnQgYXMgdGhlIG9wZXJhbmQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW51cyhEZWNpbWFsKCcxLjMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEuMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWludXMoRGVjaW1hbCgnLTEuMycpKQotICAgICAgICBEZWNpbWFsKCcxLjMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbnVzKDEpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLl9fbmVnX18oY29udGV4dD1zZWxmKQotCi0gICAgZGVmIG11bHRpcGx5KHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJtdWx0aXBseSBtdWx0aXBsaWVzIHR3byBvcGVyYW5kcy4KLQotICAgICAgICBJZiBlaXRoZXIgb3BlcmFuZCBpcyBhIHNwZWNpYWwgdmFsdWUgdGhlbiB0aGUgZ2VuZXJhbCBydWxlcyBhcHBseS4KLSAgICAgICAgT3RoZXJ3aXNlLCB0aGUgb3BlcmFuZHMgYXJlIG11bHRpcGxpZWQgdG9nZXRoZXIKLSAgICAgICAgKCdsb25nIG11bHRpcGxpY2F0aW9uJyksIHJlc3VsdGluZyBpbiBhIG51bWJlciB3aGljaCBtYXkgYmUgYXMgbG9uZyBhcwotICAgICAgICB0aGUgc3VtIG9mIHRoZSBsZW5ndGhzIG9mIHRoZSB0d28gb3BlcmFuZHMuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseShEZWNpbWFsKCcxLjIwJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnMy42MCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoRGVjaW1hbCgnNycpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzIxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseShEZWNpbWFsKCcwLjknKSwgRGVjaW1hbCgnMC44JykpCi0gICAgICAgIERlY2ltYWwoJzAuNzInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KERlY2ltYWwoJzAuOScpLCBEZWNpbWFsKCctMCcpKQotICAgICAgICBEZWNpbWFsKCctMC4wJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseShEZWNpbWFsKCc2NTQzMjEnKSwgRGVjaW1hbCgnNjU0MzIxJykpCi0gICAgICAgIERlY2ltYWwoJzQuMjgxMzU5NzFFKzExJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseSg3LCA3KQotICAgICAgICBEZWNpbWFsKCc0OScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoRGVjaW1hbCg3KSwgNykKLSAgICAgICAgRGVjaW1hbCgnNDknKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KDcsIERlY2ltYWwoNykpCi0gICAgICAgIERlY2ltYWwoJzQ5JykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHIgPSBhLl9fbXVsX18oYiwgY29udGV4dD1zZWxmKQotICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcgotCi0gICAgZGVmIG5leHRfbWludXMoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGxhcmdlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgc21hbGxlciB0aGFuIGEuCi0KLSAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCi0gICAgICAgID4+PiBjLkVtaW4gPSAtOTk5Ci0gICAgICAgID4+PiBjLkVtYXggPSA5OTkKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5uZXh0X21pbnVzKERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMC45OTk5OTk5OTknKQotICAgICAgICA+Pj4gYy5uZXh0X21pbnVzKERlY2ltYWwoJzFFLTEwMDcnKSkKLSAgICAgICAgRGVjaW1hbCgnMEUtMTAwNycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubmV4dF9taW51cyhEZWNpbWFsKCctMS4wMDAwMDAwMycpKQotICAgICAgICBEZWNpbWFsKCctMS4wMDAwMDAwNCcpCi0gICAgICAgID4+PiBjLm5leHRfbWludXMoRGVjaW1hbCgnSW5maW5pdHknKSkKLSAgICAgICAgRGVjaW1hbCgnOS45OTk5OTk5OUUrOTk5JykKLSAgICAgICAgPj4+IGMubmV4dF9taW51cygxKQotICAgICAgICBEZWNpbWFsKCcwLjk5OTk5OTk5OScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5uZXh0X21pbnVzKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBuZXh0X3BsdXMoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIGxhcmdlciB0aGFuIGEuCi0KLSAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCi0gICAgICAgID4+PiBjLkVtaW4gPSAtOTk5Ci0gICAgICAgID4+PiBjLkVtYXggPSA5OTkKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5uZXh0X3BsdXMoRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCcxLjAwMDAwMDAxJykKLSAgICAgICAgPj4+IGMubmV4dF9wbHVzKERlY2ltYWwoJy0xRS0xMDA3JykpCi0gICAgICAgIERlY2ltYWwoJy0wRS0xMDA3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5uZXh0X3BsdXMoRGVjaW1hbCgnLTEuMDAwMDAwMDMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEuMDAwMDAwMDInKQotICAgICAgICA+Pj4gYy5uZXh0X3BsdXMoRGVjaW1hbCgnLUluZmluaXR5JykpCi0gICAgICAgIERlY2ltYWwoJy05Ljk5OTk5OTk5RSs5OTknKQotICAgICAgICA+Pj4gYy5uZXh0X3BsdXMoMSkKLSAgICAgICAgRGVjaW1hbCgnMS4wMDAwMDAwMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5uZXh0X3BsdXMoY29udGV4dD1zZWxmKQotCi0gICAgZGVmIG5leHRfdG93YXJkKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBudW1iZXIgY2xvc2VzdCB0byBhLCBpbiBkaXJlY3Rpb24gdG93YXJkcyBiLgotCi0gICAgICAgIFRoZSByZXN1bHQgaXMgdGhlIGNsb3Nlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgZnJvbSB0aGUgZmlyc3QKLSAgICAgICAgb3BlcmFuZCAoYnV0IG5vdCB0aGUgZmlyc3Qgb3BlcmFuZCkgdGhhdCBpcyBpbiB0aGUgZGlyZWN0aW9uCi0gICAgICAgIHRvd2FyZHMgdGhlIHNlY29uZCBvcGVyYW5kLCB1bmxlc3MgdGhlIG9wZXJhbmRzIGhhdmUgdGhlIHNhbWUKLSAgICAgICAgdmFsdWUuCi0KLSAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCi0gICAgICAgID4+PiBjLkVtaW4gPSAtOTk5Ci0gICAgICAgID4+PiBjLkVtYXggPSA5OTkKLSAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcyJykpCi0gICAgICAgIERlY2ltYWwoJzEuMDAwMDAwMDEnKQotICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKCctMUUtMTAwNycpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJy0wRS0xMDA3JykKLSAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgnLTEuMDAwMDAwMDMnKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCctMS4wMDAwMDAwMicpCi0gICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcwLjk5OTk5OTk5OScpCi0gICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJzFFLTEwMDcnKSwgRGVjaW1hbCgnLTEwMCcpKQotICAgICAgICBEZWNpbWFsKCcwRS0xMDA3JykKLSAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgnLTEuMDAwMDAwMDMnKSwgRGVjaW1hbCgnLTEwJykpCi0gICAgICAgIERlY2ltYWwoJy0xLjAwMDAwMDA0JykKLSAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgnMC4wMCcpLCBEZWNpbWFsKCctMC4wMDAwJykpCi0gICAgICAgIERlY2ltYWwoJy0wLjAwJykKLSAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoMCwgMSkKLSAgICAgICAgRGVjaW1hbCgnMUUtMTAwNycpCi0gICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoMCksIDEpCi0gICAgICAgIERlY2ltYWwoJzFFLTEwMDcnKQotICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZCgwLCBEZWNpbWFsKDEpKQotICAgICAgICBEZWNpbWFsKCcxRS0xMDA3JykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLm5leHRfdG93YXJkKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBub3JtYWxpemUoc2VsZiwgYSk6Ci0gICAgICAgICIiIm5vcm1hbGl6ZSByZWR1Y2VzIGFuIG9wZXJhbmQgdG8gaXRzIHNpbXBsZXN0IGZvcm0uCi0KLSAgICAgICAgRXNzZW50aWFsbHkgYSBwbHVzIG9wZXJhdGlvbiB3aXRoIGFsbCB0cmFpbGluZyB6ZXJvcyByZW1vdmVkIGZyb20gdGhlCi0gICAgICAgIHJlc3VsdC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZShEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5ub3JtYWxpemUoRGVjaW1hbCgnLTIuMCcpKQotICAgICAgICBEZWNpbWFsKCctMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubm9ybWFsaXplKERlY2ltYWwoJzEuMjAwJykpCi0gICAgICAgIERlY2ltYWwoJzEuMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubm9ybWFsaXplKERlY2ltYWwoJy0xMjAnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEuMkUrMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubm9ybWFsaXplKERlY2ltYWwoJzEyMC4wMCcpKQotICAgICAgICBEZWNpbWFsKCcxLjJFKzInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZShEZWNpbWFsKCcwLjAwJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZSg2KQotICAgICAgICBEZWNpbWFsKCc2JykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLm5vcm1hbGl6ZShjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbnVtYmVyX2NsYXNzKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm5zIGFuIGluZGljYXRpb24gb2YgdGhlIGNsYXNzIG9mIHRoZSBvcGVyYW5kLgotCi0gICAgICAgIFRoZSBjbGFzcyBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBzdHJpbmdzOgotICAgICAgICAgIC1zTmFOCi0gICAgICAgICAgLU5hTgotICAgICAgICAgIC1JbmZpbml0eQotICAgICAgICAgIC1Ob3JtYWwKLSAgICAgICAgICAtU3Vibm9ybWFsCi0gICAgICAgICAgLVplcm8KLSAgICAgICAgICArWmVybwotICAgICAgICAgICtTdWJub3JtYWwKLSAgICAgICAgICArTm9ybWFsCi0gICAgICAgICAgK0luZmluaXR5Ci0KLSAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCi0gICAgICAgID4+PiBjLkVtaW4gPSAtOTk5Ci0gICAgICAgID4+PiBjLkVtYXggPSA5OTkKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJ0luZmluaXR5JykpCi0gICAgICAgICcrSW5maW5pdHknCi0gICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCcxRS0xMCcpKQotICAgICAgICAnK05vcm1hbCcKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJzIuNTAnKSkKLSAgICAgICAgJytOb3JtYWwnCi0gICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCcwLjFFLTk5OScpKQotICAgICAgICAnK1N1Ym5vcm1hbCcKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJzAnKSkKLSAgICAgICAgJytaZXJvJwotICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLTAnKSkKLSAgICAgICAgJy1aZXJvJwotICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLTAuMUUtOTk5JykpCi0gICAgICAgICctU3Vibm9ybWFsJwotICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLTFFLTEwJykpCi0gICAgICAgICctTm9ybWFsJwotICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLTIuNTAnKSkKLSAgICAgICAgJy1Ob3JtYWwnCi0gICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCctSW5maW5pdHknKSkKLSAgICAgICAgJy1JbmZpbml0eScKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJ05hTicpKQotICAgICAgICAnTmFOJwotICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLU5hTicpKQotICAgICAgICAnTmFOJwotICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnc05hTicpKQotICAgICAgICAnc05hTicKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKDEyMykKLSAgICAgICAgJytOb3JtYWwnCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5udW1iZXJfY2xhc3MoY29udGV4dD1zZWxmKQotCi0gICAgZGVmIHBsdXMoc2VsZiwgYSk6Ci0gICAgICAgICIiIlBsdXMgY29ycmVzcG9uZHMgdG8gdW5hcnkgcHJlZml4IHBsdXMgaW4gUHl0aG9uLgotCi0gICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZXZhbHVhdGVkIHVzaW5nIHRoZSBzYW1lIHJ1bGVzIGFzIGFkZDsgdGhlCi0gICAgICAgIG9wZXJhdGlvbiBwbHVzKGEpIGlzIGNhbGN1bGF0ZWQgYXMgYWRkKCcwJywgYSkgd2hlcmUgdGhlICcwJwotICAgICAgICBoYXMgdGhlIHNhbWUgZXhwb25lbnQgYXMgdGhlIG9wZXJhbmQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5wbHVzKERlY2ltYWwoJzEuMycpKQotICAgICAgICBEZWNpbWFsKCcxLjMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnBsdXMoRGVjaW1hbCgnLTEuMycpKQotICAgICAgICBEZWNpbWFsKCctMS4zJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5wbHVzKC0xKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5fX3Bvc19fKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBwb3dlcihzZWxmLCBhLCBiLCBtb2R1bG89Tm9uZSk6Ci0gICAgICAgICIiIlJhaXNlcyBhIHRvIHRoZSBwb3dlciBvZiBiLCB0byBtb2R1bG8gaWYgZ2l2ZW4uCi0KLSAgICAgICAgV2l0aCB0d28gYXJndW1lbnRzLCBjb21wdXRlIGEqKmIuICBJZiBhIGlzIG5lZ2F0aXZlIHRoZW4gYgotICAgICAgICBtdXN0IGJlIGludGVncmFsLiAgVGhlIHJlc3VsdCB3aWxsIGJlIGluZXhhY3QgdW5sZXNzIGIgaXMKLSAgICAgICAgaW50ZWdyYWwgYW5kIHRoZSByZXN1bHQgaXMgZmluaXRlIGFuZCBjYW4gYmUgZXhwcmVzc2VkIGV4YWN0bHkKLSAgICAgICAgaW4gJ3ByZWNpc2lvbicgZGlnaXRzLgotCi0gICAgICAgIFdpdGggdGhyZWUgYXJndW1lbnRzLCBjb21wdXRlIChhKipiKSAlIG1vZHVsby4gIEZvciB0aGUKLSAgICAgICAgdGhyZWUgYXJndW1lbnQgZm9ybSwgdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgb24gdGhlCi0gICAgICAgIGFyZ3VtZW50cyBob2xkOgotCi0gICAgICAgICAtIGFsbCB0aHJlZSBhcmd1bWVudHMgbXVzdCBiZSBpbnRlZ3JhbAotICAgICAgICAgLSBiIG11c3QgYmUgbm9ubmVnYXRpdmUKLSAgICAgICAgIC0gYXQgbGVhc3Qgb25lIG9mIGEgb3IgYiBtdXN0IGJlIG5vbnplcm8KLSAgICAgICAgIC0gbW9kdWxvIG11c3QgYmUgbm9uemVybyBhbmQgaGF2ZSBhdCBtb3N0ICdwcmVjaXNpb24nIGRpZ2l0cwotCi0gICAgICAgIFRoZSByZXN1bHQgb2YgcG93KGEsIGIsIG1vZHVsbykgaXMgaWRlbnRpY2FsIHRvIHRoZSByZXN1bHQKLSAgICAgICAgdGhhdCB3b3VsZCBiZSBvYnRhaW5lZCBieSBjb21wdXRpbmcgKGEqKmIpICUgbW9kdWxvIHdpdGgKLSAgICAgICAgdW5ib3VuZGVkIHByZWNpc2lvbiwgYnV0IGlzIGNvbXB1dGVkIG1vcmUgZWZmaWNpZW50bHkuICBJdCBpcwotICAgICAgICBhbHdheXMgZXhhY3QuCi0KLSAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCi0gICAgICAgID4+PiBjLkVtaW4gPSAtOTk5Ci0gICAgICAgID4+PiBjLkVtYXggPSA5OTkKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzgnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctMicpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJy04JykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCctMycpKQotICAgICAgICBEZWNpbWFsKCcwLjEyNScpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzEuNycpLCBEZWNpbWFsKCc4JykpCi0gICAgICAgIERlY2ltYWwoJzY5Ljc1NzU3NDQnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCcwLjMwMTAyOTk5NicpKQotICAgICAgICBEZWNpbWFsKCcyLjAwMDAwMDAwJykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnSW5maW5pdHknKSwgRGVjaW1hbCgnLTEnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJ0luZmluaXR5JyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJ0luZmluaXR5JyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctSW5maW5pdHknKSwgRGVjaW1hbCgnLTEnKSkKLSAgICAgICAgRGVjaW1hbCgnLTAnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctSW5maW5pdHknKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLUluZmluaXR5JyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLUluZmluaXR5JyksIERlY2ltYWwoJzInKSkKLSAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcwJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnTmFOJykKLQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCczJyksIERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnMTYnKSkKLSAgICAgICAgRGVjaW1hbCgnMTEnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctMycpLCBEZWNpbWFsKCc3JyksIERlY2ltYWwoJzE2JykpCi0gICAgICAgIERlY2ltYWwoJy0xMScpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy0zJyksIERlY2ltYWwoJzgnKSwgRGVjaW1hbCgnMTYnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnNycpLCBEZWNpbWFsKCctMTYnKSkKLSAgICAgICAgRGVjaW1hbCgnMTEnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcyM0UxMjM0NScpLCBEZWNpbWFsKCc2N0UxODknKSwgRGVjaW1hbCgnMTIzNDU2Nzg5JykpCi0gICAgICAgIERlY2ltYWwoJzExNzI5ODMwJykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLTAnKSwgRGVjaW1hbCgnMTcnKSwgRGVjaW1hbCgnMTcyOScpKQotICAgICAgICBEZWNpbWFsKCctMCcpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy0yMycpLCBEZWNpbWFsKCcwJyksIERlY2ltYWwoJzY1NTM3JykpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnBvd2VyKDcsIDcpCi0gICAgICAgIERlY2ltYWwoJzgyMzU0MycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucG93ZXIoRGVjaW1hbCg3KSwgNykKLSAgICAgICAgRGVjaW1hbCgnODIzNTQzJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5wb3dlcig3LCBEZWNpbWFsKDcpLCAyKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHIgPSBhLl9fcG93X18oYiwgbW9kdWxvLCBjb250ZXh0PXNlbGYpCi0gICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiByCi0KLSAgICBkZWYgcXVhbnRpemUoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIlJldHVybnMgYSB2YWx1ZSBlcXVhbCB0byAnYScgKHJvdW5kZWQpLCBoYXZpbmcgdGhlIGV4cG9uZW50IG9mICdiJy4KLQotICAgICAgICBUaGUgY29lZmZpY2llbnQgb2YgdGhlIHJlc3VsdCBpcyBkZXJpdmVkIGZyb20gdGhhdCBvZiB0aGUgbGVmdC1oYW5kCi0gICAgICAgIG9wZXJhbmQuICBJdCBtYXkgYmUgcm91bmRlZCB1c2luZyB0aGUgY3VycmVudCByb3VuZGluZyBzZXR0aW5nIChpZiB0aGUKLSAgICAgICAgZXhwb25lbnQgaXMgYmVpbmcgaW5jcmVhc2VkKSwgbXVsdGlwbGllZCBieSBhIHBvc2l0aXZlIHBvd2VyIG9mIHRlbiAoaWYKLSAgICAgICAgdGhlIGV4cG9uZW50IGlzIGJlaW5nIGRlY3JlYXNlZCksIG9yIGlzIHVuY2hhbmdlZCAoaWYgdGhlIGV4cG9uZW50IGlzCi0gICAgICAgIGFscmVhZHkgZXF1YWwgdG8gdGhhdCBvZiB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kKS4KLQotICAgICAgICBVbmxpa2Ugb3RoZXIgb3BlcmF0aW9ucywgaWYgdGhlIGxlbmd0aCBvZiB0aGUgY29lZmZpY2llbnQgYWZ0ZXIgdGhlCi0gICAgICAgIHF1YW50aXplIG9wZXJhdGlvbiB3b3VsZCBiZSBncmVhdGVyIHRoYW4gcHJlY2lzaW9uIHRoZW4gYW4gSW52YWxpZAotICAgICAgICBvcGVyYXRpb24gY29uZGl0aW9uIGlzIHJhaXNlZC4gIFRoaXMgZ3VhcmFudGVlcyB0aGF0LCB1bmxlc3MgdGhlcmUgaXMKLSAgICAgICAgYW4gZXJyb3IgY29uZGl0aW9uLCB0aGUgZXhwb25lbnQgb2YgdGhlIHJlc3VsdCBvZiBhIHF1YW50aXplIGlzIGFsd2F5cwotICAgICAgICBlcXVhbCB0byB0aGF0IG9mIHRoZSByaWdodC1oYW5kIG9wZXJhbmQuCi0KLSAgICAgICAgQWxzbyB1bmxpa2Ugb3RoZXIgb3BlcmF0aW9ucywgcXVhbnRpemUgd2lsbCBuZXZlciByYWlzZSBVbmRlcmZsb3csIGV2ZW4KLSAgICAgICAgaWYgdGhlIHJlc3VsdCBpcyBzdWJub3JtYWwgYW5kIGluZXhhY3QuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzAuMDAxJykpCi0gICAgICAgIERlY2ltYWwoJzIuMTcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzAuMDEnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4xNycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcwLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4yJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzFlKzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcxZSsxJykpCi0gICAgICAgIERlY2ltYWwoJzBFKzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJy1JbmYnKSwgRGVjaW1hbCgnSW5maW5pdHknKSkKLSAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyJyksIERlY2ltYWwoJ0luZmluaXR5JykpCi0gICAgICAgIERlY2ltYWwoJ05hTicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnLTAuMScpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJy0wJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCctMCcpLCBEZWNpbWFsKCcxZSs1JykpCi0gICAgICAgIERlY2ltYWwoJy0wRSs1JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcrMzUyMzY0NTAuNicpLCBEZWNpbWFsKCcxZS0yJykpCi0gICAgICAgIERlY2ltYWwoJ05hTicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnLTM1MjM2NDUwLjYnKSwgRGVjaW1hbCgnMWUtMicpKQotICAgICAgICBEZWNpbWFsKCdOYU4nKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIxNycpLCBEZWNpbWFsKCcxZS0xJykpCi0gICAgICAgIERlY2ltYWwoJzIxNy4wJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyMTcnKSwgRGVjaW1hbCgnMWUtMCcpKQotICAgICAgICBEZWNpbWFsKCcyMTcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIxNycpLCBEZWNpbWFsKCcxZSsxJykpCi0gICAgICAgIERlY2ltYWwoJzIuMkUrMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMjE3JyksIERlY2ltYWwoJzFlKzInKSkKLSAgICAgICAgRGVjaW1hbCgnMkUrMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoMSwgMikKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgxKSwgMikKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoMSwgRGVjaW1hbCgyKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5xdWFudGl6ZShiLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgcmFkaXgoc2VsZik6Ci0gICAgICAgICIiIkp1c3QgcmV0dXJucyAxMCwgYXMgdGhpcyBpcyBEZWNpbWFsLCA6KQotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmFkaXgoKQotICAgICAgICBEZWNpbWFsKCcxMCcpCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gRGVjaW1hbCgxMCkKLQotICAgIGRlZiByZW1haW5kZXIoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIHJlbWFpbmRlciBmcm9tIGludGVnZXIgZGl2aXNpb24uCi0KLSAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgcmVzaWR1ZSBvZiB0aGUgZGl2aWRlbmQgYWZ0ZXIgdGhlIG9wZXJhdGlvbiBvZgotICAgICAgICBjYWxjdWxhdGluZyBpbnRlZ2VyIGRpdmlzaW9uIGFzIGRlc2NyaWJlZCBmb3IgZGl2aWRlLWludGVnZXIsIHJvdW5kZWQKLSAgICAgICAgdG8gcHJlY2lzaW9uIGRpZ2l0cyBpZiBuZWNlc3NhcnkuICBUaGUgc2lnbiBvZiB0aGUgcmVzdWx0LCBpZgotICAgICAgICBub24temVybywgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgb3JpZ2luYWwgZGl2aWRlbmQuCi0KLSAgICAgICAgVGhpcyBvcGVyYXRpb24gd2lsbCBmYWlsIHVuZGVyIHRoZSBzYW1lIGNvbmRpdGlvbnMgYXMgaW50ZWdlciBkaXZpc2lvbgotICAgICAgICAodGhhdCBpcywgaWYgaW50ZWdlciBkaXZpc2lvbiBvbiB0aGUgc2FtZSB0d28gb3BlcmFuZHMgd291bGQgZmFpbCwgdGhlCi0gICAgICAgIHJlbWFpbmRlciBjYW5ub3QgYmUgY2FsY3VsYXRlZCkuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnLTEwJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcihEZWNpbWFsKCcxMC4yJyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMC4yJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMC4zJykpCi0gICAgICAgIERlY2ltYWwoJzAuMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoJzMuNicpLCBEZWNpbWFsKCcxLjMnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4wJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoMjIsIDYpCi0gICAgICAgIERlY2ltYWwoJzQnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcihEZWNpbWFsKDIyKSwgNikKLSAgICAgICAgRGVjaW1hbCgnNCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKDIyLCBEZWNpbWFsKDYpKQotICAgICAgICBEZWNpbWFsKCc0JykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHIgPSBhLl9fbW9kX18oYiwgY29udGV4dD1zZWxmKQotICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcgotCi0gICAgZGVmIHJlbWFpbmRlcl9uZWFyKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJSZXR1cm5zIHRvIGJlICJhIC0gYiAqIG4iLCB3aGVyZSBuIGlzIHRoZSBpbnRlZ2VyIG5lYXJlc3QgdGhlIGV4YWN0Ci0gICAgICAgIHZhbHVlIG9mICJ4IC8gYiIgKGlmIHR3byBpbnRlZ2VycyBhcmUgZXF1YWxseSBuZWFyIHRoZW4gdGhlIGV2ZW4gb25lCi0gICAgICAgIGlzIGNob3NlbikuICBJZiB0aGUgcmVzdWx0IGlzIGVxdWFsIHRvIDAgdGhlbiBpdHMgc2lnbiB3aWxsIGJlIHRoZQotICAgICAgICBzaWduIG9mIGEuCi0KLSAgICAgICAgVGhpcyBvcGVyYXRpb24gd2lsbCBmYWlsIHVuZGVyIHRoZSBzYW1lIGNvbmRpdGlvbnMgYXMgaW50ZWdlciBkaXZpc2lvbgotICAgICAgICAodGhhdCBpcywgaWYgaW50ZWdlciBkaXZpc2lvbiBvbiB0aGUgc2FtZSB0d28gb3BlcmFuZHMgd291bGQgZmFpbCwgdGhlCi0gICAgICAgIHJlbWFpbmRlciBjYW5ub3QgYmUgY2FsY3VsYXRlZCkuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCctMC45JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCc2JykpCi0gICAgICAgIERlY2ltYWwoJy0yJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoJy0xMCcpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCcxMC4yJyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMC4yJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCcwLjMnKSkKLSAgICAgICAgRGVjaW1hbCgnMC4xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCczLjYnKSwgRGVjaW1hbCgnMS4zJykpCi0gICAgICAgIERlY2ltYWwoJy0wLjMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKDMsIDExKQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKDMpLCAxMSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoMywgRGVjaW1hbCgxMSkpCi0gICAgICAgIERlY2ltYWwoJzMnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEucmVtYWluZGVyX25lYXIoYiwgY29udGV4dD1zZWxmKQotCi0gICAgZGVmIHJvdGF0ZShzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiUmV0dXJucyBhIHJvdGF0ZWQgY29weSBvZiBhLCBiIHRpbWVzLgotCi0gICAgICAgIFRoZSBjb2VmZmljaWVudCBvZiB0aGUgcmVzdWx0IGlzIGEgcm90YXRlZCBjb3B5IG9mIHRoZSBkaWdpdHMgaW4KLSAgICAgICAgdGhlIGNvZWZmaWNpZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kLiAgVGhlIG51bWJlciBvZiBwbGFjZXMgb2YKLSAgICAgICAgcm90YXRpb24gaXMgdGFrZW4gZnJvbSB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kLAotICAgICAgICB3aXRoIHRoZSByb3RhdGlvbiBiZWluZyB0byB0aGUgbGVmdCBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgaXMKLSAgICAgICAgcG9zaXRpdmUgb3IgdG8gdGhlIHJpZ2h0IG90aGVyd2lzZS4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZShEZWNpbWFsKCczNCcpLCBEZWNpbWFsKCc4JykpCi0gICAgICAgIERlY2ltYWwoJzQwMDAwMDAwMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKERlY2ltYWwoJzEyJyksIERlY2ltYWwoJzknKSkKLSAgICAgICAgRGVjaW1hbCgnMTInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZShEZWNpbWFsKCcxMjM0NTY3ODknKSwgRGVjaW1hbCgnLTInKSkKLSAgICAgICAgRGVjaW1hbCgnODkxMjM0NTY3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoRGVjaW1hbCgnMTIzNDU2Nzg5JyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTIzNDU2Nzg5JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoRGVjaW1hbCgnMTIzNDU2Nzg5JyksIERlY2ltYWwoJysyJykpCi0gICAgICAgIERlY2ltYWwoJzM0NTY3ODkxMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKDEzMzMzMzMsIDEpCi0gICAgICAgIERlY2ltYWwoJzEzMzMzMzMwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoRGVjaW1hbCgxMzMzMzMzKSwgMSkKLSAgICAgICAgRGVjaW1hbCgnMTMzMzMzMzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZSgxMzMzMzMzLCBEZWNpbWFsKDEpKQotICAgICAgICBEZWNpbWFsKCcxMzMzMzMzMCcpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5yb3RhdGUoYiwgY29udGV4dD1zZWxmKQotCi0gICAgZGVmIHNhbWVfcXVhbnR1bShzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiUmV0dXJucyBUcnVlIGlmIHRoZSB0d28gb3BlcmFuZHMgaGF2ZSB0aGUgc2FtZSBleHBvbmVudC4KLQotICAgICAgICBUaGUgcmVzdWx0IGlzIG5ldmVyIGFmZmVjdGVkIGJ5IGVpdGhlciB0aGUgc2lnbiBvciB0aGUgY29lZmZpY2llbnQgb2YKLSAgICAgICAgZWl0aGVyIG9wZXJhbmQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcwLjAwMScpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNhbWVfcXVhbnR1bShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzAuMDEnKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNhbWVfcXVhbnR1bShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oRGVjaW1hbCgnSW5mJyksIERlY2ltYWwoJy1JbmYnKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNhbWVfcXVhbnR1bSgxMDAwMCwgLTEpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oRGVjaW1hbCgxMDAwMCksIC0xKQotICAgICAgICBUcnVlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2FtZV9xdWFudHVtKDEwMDAwLCBEZWNpbWFsKC0xKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuc2FtZV9xdWFudHVtKGIpCi0KLSAgICBkZWYgc2NhbGViIChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgZmlyc3Qgb3BlcmFuZCBhZnRlciBhZGRpbmcgdGhlIHNlY29uZCB2YWx1ZSBpdHMgZXhwLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2NhbGViKERlY2ltYWwoJzcuNTAnKSwgRGVjaW1hbCgnLTInKSkKLSAgICAgICAgRGVjaW1hbCgnMC4wNzUwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zY2FsZWIoRGVjaW1hbCgnNy41MCcpLCBEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJzcuNTAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNjYWxlYihEZWNpbWFsKCc3LjUwJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnNy41MEUrMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2NhbGViKDEsIDQpCi0gICAgICAgIERlY2ltYWwoJzFFKzQnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNjYWxlYihEZWNpbWFsKDEpLCA0KQotICAgICAgICBEZWNpbWFsKCcxRSs0JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zY2FsZWIoMSwgRGVjaW1hbCg0KSkKLSAgICAgICAgRGVjaW1hbCgnMUUrNCcpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5zY2FsZWIoYiwgY29udGV4dD1zZWxmKQotCi0gICAgZGVmIHNoaWZ0KHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJSZXR1cm5zIGEgc2hpZnRlZCBjb3B5IG9mIGEsIGIgdGltZXMuCi0KLSAgICAgICAgVGhlIGNvZWZmaWNpZW50IG9mIHRoZSByZXN1bHQgaXMgYSBzaGlmdGVkIGNvcHkgb2YgdGhlIGRpZ2l0cwotICAgICAgICBpbiB0aGUgY29lZmZpY2llbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQuICBUaGUgbnVtYmVyIG9mIHBsYWNlcwotICAgICAgICB0byBzaGlmdCBpcyB0YWtlbiBmcm9tIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQsCi0gICAgICAgIHdpdGggdGhlIHNoaWZ0IGJlaW5nIHRvIHRoZSBsZWZ0IGlmIHRoZSBzZWNvbmQgb3BlcmFuZCBpcwotICAgICAgICBwb3NpdGl2ZSBvciB0byB0aGUgcmlnaHQgb3RoZXJ3aXNlLiAgRGlnaXRzIHNoaWZ0ZWQgaW50byB0aGUKLSAgICAgICAgY29lZmZpY2llbnQgYXJlIHplcm9zLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoRGVjaW1hbCgnMzQnKSwgRGVjaW1hbCgnOCcpKQotICAgICAgICBEZWNpbWFsKCc0MDAwMDAwMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KERlY2ltYWwoJzEyJyksIERlY2ltYWwoJzknKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoRGVjaW1hbCgnMTIzNDU2Nzg5JyksIERlY2ltYWwoJy0yJykpCi0gICAgICAgIERlY2ltYWwoJzEyMzQ1NjcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KERlY2ltYWwoJzEyMzQ1Njc4OScpLCBEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJzEyMzQ1Njc4OScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoRGVjaW1hbCgnMTIzNDU2Nzg5JyksIERlY2ltYWwoJysyJykpCi0gICAgICAgIERlY2ltYWwoJzM0NTY3ODkwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoODg4ODg4ODgsIDIpCi0gICAgICAgIERlY2ltYWwoJzg4ODg4ODgwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoRGVjaW1hbCg4ODg4ODg4OCksIDIpCi0gICAgICAgIERlY2ltYWwoJzg4ODg4ODgwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoODg4ODg4ODgsIERlY2ltYWwoMikpCi0gICAgICAgIERlY2ltYWwoJzg4ODg4ODgwMCcpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5zaGlmdChiLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgc3FydChzZWxmLCBhKToKLSAgICAgICAgIiIiU3F1YXJlIHJvb3Qgb2YgYSBub24tbmVnYXRpdmUgbnVtYmVyIHRvIGNvbnRleHQgcHJlY2lzaW9uLgotCi0gICAgICAgIElmIHRoZSByZXN1bHQgbXVzdCBiZSBpbmV4YWN0LCBpdCBpcyByb3VuZGVkIHVzaW5nIHRoZSByb3VuZC1oYWxmLWV2ZW4KLSAgICAgICAgYWxnb3JpdGhtLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnLTAnKSkKLSAgICAgICAgRGVjaW1hbCgnLTAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnMC4zOScpKQotICAgICAgICBEZWNpbWFsKCcwLjYyNDQ5OTgwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCcxMDAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzEuMCcpKQotICAgICAgICBEZWNpbWFsKCcxLjAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnMS4wMCcpKQotICAgICAgICBEZWNpbWFsKCcxLjAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnNycpKQotICAgICAgICBEZWNpbWFsKCcyLjY0NTc1MTMxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzEwJykpCi0gICAgICAgIERlY2ltYWwoJzMuMTYyMjc3NjYnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoMikKLSAgICAgICAgRGVjaW1hbCgnMS40MTQyMTM1NicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucHJlYwotICAgICAgICA5Ci0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5zcXJ0KGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBzdWJ0cmFjdChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byBvcGVyYW5kcy4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnN1YnRyYWN0KERlY2ltYWwoJzEuMycpLCBEZWNpbWFsKCcxLjA3JykpCi0gICAgICAgIERlY2ltYWwoJzAuMjMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnN1YnRyYWN0KERlY2ltYWwoJzEuMycpLCBEZWNpbWFsKCcxLjMwJykpCi0gICAgICAgIERlY2ltYWwoJzAuMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnN1YnRyYWN0KERlY2ltYWwoJzEuMycpLCBEZWNpbWFsKCcyLjA3JykpCi0gICAgICAgIERlY2ltYWwoJy0wLjc3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zdWJ0cmFjdCg4LCA1KQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zdWJ0cmFjdChEZWNpbWFsKDgpLCA1KQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zdWJ0cmFjdCg4LCBEZWNpbWFsKDUpKQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHIgPSBhLl9fc3ViX18oYiwgY29udGV4dD1zZWxmKQotICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcgotCi0gICAgZGVmIHRvX2VuZ19zdHJpbmcoc2VsZiwgYSk6Ci0gICAgICAgICIiIkNvbnZlcnRzIGEgbnVtYmVyIHRvIGEgc3RyaW5nLCB1c2luZyBzY2llbnRpZmljIG5vdGF0aW9uLgotCi0gICAgICAgIFRoZSBvcGVyYXRpb24gaXMgbm90IGFmZmVjdGVkIGJ5IHRoZSBjb250ZXh0LgotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEudG9fZW5nX3N0cmluZyhjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgdG9fc2NpX3N0cmluZyhzZWxmLCBhKToKLSAgICAgICAgIiIiQ29udmVydHMgYSBudW1iZXIgdG8gYSBzdHJpbmcsIHVzaW5nIHNjaWVudGlmaWMgbm90YXRpb24uCi0KLSAgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBub3QgYWZmZWN0ZWQgYnkgdGhlIGNvbnRleHQuCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5fX3N0cl9fKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiB0b19pbnRlZ3JhbF9leGFjdChzZWxmLCBhKToKLSAgICAgICAgIiIiUm91bmRzIHRvIGFuIGludGVnZXIuCi0KLSAgICAgICAgV2hlbiB0aGUgb3BlcmFuZCBoYXMgYSBuZWdhdGl2ZSBleHBvbmVudCwgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZQotICAgICAgICBhcyB1c2luZyB0aGUgcXVhbnRpemUoKSBvcGVyYXRpb24gdXNpbmcgdGhlIGdpdmVuIG9wZXJhbmQgYXMgdGhlCi0gICAgICAgIGxlZnQtaGFuZC1vcGVyYW5kLCAxRSswIGFzIHRoZSByaWdodC1oYW5kLW9wZXJhbmQsIGFuZCB0aGUgcHJlY2lzaW9uCi0gICAgICAgIG9mIHRoZSBvcGVyYW5kIGFzIHRoZSBwcmVjaXNpb24gc2V0dGluZzsgSW5leGFjdCBhbmQgUm91bmRlZCBmbGFncwotICAgICAgICBhcmUgYWxsb3dlZCBpbiB0aGlzIG9wZXJhdGlvbi4gIFRoZSByb3VuZGluZyBtb2RlIGlzIHRha2VuIGZyb20gdGhlCi0gICAgICAgIGNvbnRleHQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnMTAwJykpCi0gICAgICAgIERlY2ltYWwoJzEwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnMTAwLjAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCcxMDEuNScpKQotICAgICAgICBEZWNpbWFsKCcxMDInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJy0xMDEuNScpKQotICAgICAgICBEZWNpbWFsKCctMTAyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCcxMEUrNScpKQotICAgICAgICBEZWNpbWFsKCcxLjBFKzYnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzcuODlFKzc3JykpCi0gICAgICAgIERlY2ltYWwoJzcuODlFKzc3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCctSW5mJykpCi0gICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS50b19pbnRlZ3JhbF9leGFjdChjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgdG9faW50ZWdyYWxfdmFsdWUoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJvdW5kcyB0byBhbiBpbnRlZ2VyLgotCi0gICAgICAgIFdoZW4gdGhlIG9wZXJhbmQgaGFzIGEgbmVnYXRpdmUgZXhwb25lbnQsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUKLSAgICAgICAgYXMgdXNpbmcgdGhlIHF1YW50aXplKCkgb3BlcmF0aW9uIHVzaW5nIHRoZSBnaXZlbiBvcGVyYW5kIGFzIHRoZQotICAgICAgICBsZWZ0LWhhbmQtb3BlcmFuZCwgMUUrMCBhcyB0aGUgcmlnaHQtaGFuZC1vcGVyYW5kLCBhbmQgdGhlIHByZWNpc2lvbgotICAgICAgICBvZiB0aGUgb3BlcmFuZCBhcyB0aGUgcHJlY2lzaW9uIHNldHRpbmcsIGV4Y2VwdCB0aGF0IG5vIGZsYWdzIHdpbGwKLSAgICAgICAgYmUgc2V0LiAgVGhlIHJvdW5kaW5nIG1vZGUgaXMgdGFrZW4gZnJvbSB0aGUgY29udGV4dC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJzIuMScpKQotICAgICAgICBEZWNpbWFsKCcyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCcxMDAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCcxMDAuMCcpKQotICAgICAgICBEZWNpbWFsKCcxMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJzEwMS41JykpCi0gICAgICAgIERlY2ltYWwoJzEwMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnLTEwMS41JykpCi0gICAgICAgIERlY2ltYWwoJy0xMDInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJzEwRSs1JykpCi0gICAgICAgIERlY2ltYWwoJzEuMEUrNicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnNy44OUUrNzcnKSkKLSAgICAgICAgRGVjaW1hbCgnNy44OUUrNzcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJy1JbmYnKSkKLSAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLnRvX2ludGVncmFsX3ZhbHVlKGNvbnRleHQ9c2VsZikKLQotICAgICMgdGhlIG1ldGhvZCBuYW1lIGNoYW5nZWQsIGJ1dCB3ZSBwcm92aWRlIGFsc28gdGhlIG9sZCBvbmUsIGZvciBjb21wYXRpYmlsaXR5Ci0gICAgdG9faW50ZWdyYWwgPSB0b19pbnRlZ3JhbF92YWx1ZQotCi1jbGFzcyBfV29ya1JlcChvYmplY3QpOgotICAgIF9fc2xvdHNfXyA9ICgnc2lnbicsJ2ludCcsJ2V4cCcpCi0gICAgIyBzaWduOiAwIG9yIDEKLSAgICAjIGludDogIGludAotICAgICMgZXhwOiAgTm9uZSwgaW50LCBvciBzdHJpbmcKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZT1Ob25lKToKLSAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuc2lnbiA9IE5vbmUKLSAgICAgICAgICAgIHNlbGYuaW50ID0gMAotICAgICAgICAgICAgc2VsZi5leHAgPSBOb25lCi0gICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgRGVjaW1hbCk6Ci0gICAgICAgICAgICBzZWxmLnNpZ24gPSB2YWx1ZS5fc2lnbgotICAgICAgICAgICAgc2VsZi5pbnQgPSBpbnQodmFsdWUuX2ludCkKLSAgICAgICAgICAgIHNlbGYuZXhwID0gdmFsdWUuX2V4cAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBhc3NlcnQgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpCi0gICAgICAgICAgICBzZWxmLnNpZ24gPSB2YWx1ZVswXQotICAgICAgICAgICAgc2VsZi5pbnQgPSB2YWx1ZVsxXQotICAgICAgICAgICAgc2VsZi5leHAgPSB2YWx1ZVsyXQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIiglciwgJXIsICVyKSIgJSAoc2VsZi5zaWduLCBzZWxmLmludCwgc2VsZi5leHApCi0KLSAgICBfX3N0cl9fID0gX19yZXByX18KLQotCi0KLWRlZiBfbm9ybWFsaXplKG9wMSwgb3AyLCBwcmVjID0gMCk6Ci0gICAgIiIiTm9ybWFsaXplcyBvcDEsIG9wMiB0byBoYXZlIHRoZSBzYW1lIGV4cCBhbmQgbGVuZ3RoIG9mIGNvZWZmaWNpZW50LgotCi0gICAgRG9uZSBkdXJpbmcgYWRkaXRpb24uCi0gICAgIiIiCi0gICAgaWYgb3AxLmV4cCA8IG9wMi5leHA6Ci0gICAgICAgIHRtcCA9IG9wMgotICAgICAgICBvdGhlciA9IG9wMQotICAgIGVsc2U6Ci0gICAgICAgIHRtcCA9IG9wMQotICAgICAgICBvdGhlciA9IG9wMgotCi0gICAgIyBMZXQgZXhwID0gbWluKHRtcC5leHAgLSAxLCB0bXAuYWRqdXN0ZWQoKSAtIHByZWNpc2lvbiAtIDEpLgotICAgICMgVGhlbiBhZGRpbmcgMTAqKmV4cCB0byB0bXAgaGFzIHRoZSBzYW1lIGVmZmVjdCAoYWZ0ZXIgcm91bmRpbmcpCi0gICAgIyBhcyBhZGRpbmcgYW55IHBvc2l0aXZlIHF1YW50aXR5IHNtYWxsZXIgdGhhbiAxMCoqZXhwOyBzaW1pbGFybHkKLSAgICAjIGZvciBzdWJ0cmFjdGlvbi4gIFNvIGlmIG90aGVyIGlzIHNtYWxsZXIgdGhhbiAxMCoqZXhwIHdlIHJlcGxhY2UKLSAgICAjIGl0IHdpdGggMTAqKmV4cC4gIFRoaXMgYXZvaWRzIHRtcC5leHAgLSBvdGhlci5leHAgZ2V0dGluZyB0b28gbGFyZ2UuCi0gICAgdG1wX2xlbiA9IGxlbihzdHIodG1wLmludCkpCi0gICAgb3RoZXJfbGVuID0gbGVuKHN0cihvdGhlci5pbnQpKQotICAgIGV4cCA9IHRtcC5leHAgKyBtaW4oLTEsIHRtcF9sZW4gLSBwcmVjIC0gMikKLSAgICBpZiBvdGhlcl9sZW4gKyBvdGhlci5leHAgLSAxIDwgZXhwOgotICAgICAgICBvdGhlci5pbnQgPSAxCi0gICAgICAgIG90aGVyLmV4cCA9IGV4cAotCi0gICAgdG1wLmludCAqPSAxMCAqKiAodG1wLmV4cCAtIG90aGVyLmV4cCkKLSAgICB0bXAuZXhwID0gb3RoZXIuZXhwCi0gICAgcmV0dXJuIG9wMSwgb3AyCi0KLSMjIyMjIEludGVnZXIgYXJpdGhtZXRpYyBmdW5jdGlvbnMgdXNlZCBieSBsbiwgbG9nMTAsIGV4cCBhbmQgX19wb3dfXyAjIyMjIwotCi1fbmJpdHMgPSBpbnQuYml0X2xlbmd0aAotCi1kZWYgX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KG4sIGUpOgotICAgICIiIiBHaXZlbiBpbnRlZ2VycyBuIGFuZCBlLCByZXR1cm4gbiAqIDEwKiplIGlmIGl0J3MgYW4gaW50ZWdlciwgZWxzZSBOb25lLgotCi0gICAgVGhlIGNvbXB1dGF0aW9uIGlzIGRlc2lnbmVkIHRvIGF2b2lkIGNvbXB1dGluZyBsYXJnZSBwb3dlcnMgb2YgMTAKLSAgICB1bm5lY2Vzc2FyaWx5LgotCi0gICAgPj4+IF9kZWNpbWFsX2xzaGlmdF9leGFjdCgzLCA0KQotICAgIDMwMDAwCi0gICAgPj4+IF9kZWNpbWFsX2xzaGlmdF9leGFjdCgzMDAsIC05OTk5OTk5OTkpICAjIHJldHVybnMgTm9uZQotCi0gICAgIiIiCi0gICAgaWYgbiA9PSAwOgotICAgICAgICByZXR1cm4gMAotICAgIGVsaWYgZSA+PSAwOgotICAgICAgICByZXR1cm4gbiAqIDEwKiplCi0gICAgZWxzZToKLSAgICAgICAgIyB2YWxfbiA9IGxhcmdlc3QgcG93ZXIgb2YgMTAgZGl2aWRpbmcgbi4KLSAgICAgICAgc3RyX24gPSBzdHIoYWJzKG4pKQotICAgICAgICB2YWxfbiA9IGxlbihzdHJfbikgLSBsZW4oc3RyX24ucnN0cmlwKCcwJykpCi0gICAgICAgIHJldHVybiBOb25lIGlmIHZhbF9uIDwgLWUgZWxzZSBuIC8vIDEwKiotZQotCi1kZWYgX3NxcnRfbmVhcmVzdChuLCBhKToKLSAgICAiIiJDbG9zZXN0IGludGVnZXIgdG8gdGhlIHNxdWFyZSByb290IG9mIHRoZSBwb3NpdGl2ZSBpbnRlZ2VyIG4uICBhIGlzCi0gICAgYW4gaW5pdGlhbCBhcHByb3hpbWF0aW9uIHRvIHRoZSBzcXVhcmUgcm9vdC4gIEFueSBwb3NpdGl2ZSBpbnRlZ2VyCi0gICAgd2lsbCBkbyBmb3IgYSwgYnV0IHRoZSBjbG9zZXIgYSBpcyB0byB0aGUgc3F1YXJlIHJvb3Qgb2YgbiB0aGUKLSAgICBmYXN0ZXIgY29udmVyZ2VuY2Ugd2lsbCBiZS4KLQotICAgICIiIgotICAgIGlmIG4gPD0gMCBvciBhIDw9IDA6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkJvdGggYXJndW1lbnRzIHRvIF9zcXJ0X25lYXJlc3Qgc2hvdWxkIGJlIHBvc2l0aXZlLiIpCi0KLSAgICBiPTAKLSAgICB3aGlsZSBhICE9IGI6Ci0gICAgICAgIGIsIGEgPSBhLCBhLS1uLy9hPj4xCi0gICAgcmV0dXJuIGEKLQotZGVmIF9yc2hpZnRfbmVhcmVzdCh4LCBzaGlmdCk6Ci0gICAgIiIiR2l2ZW4gYW4gaW50ZWdlciB4IGFuZCBhIG5vbm5lZ2F0aXZlIGludGVnZXIgc2hpZnQsIHJldHVybiBjbG9zZXN0Ci0gICAgaW50ZWdlciB0byB4IC8gMioqc2hpZnQ7IHVzZSByb3VuZC10by1ldmVuIGluIGNhc2Ugb2YgYSB0aWUuCi0KLSAgICAiIiIKLSAgICBiLCBxID0gMSA8PCBzaGlmdCwgeCA+PiBzaGlmdAotICAgIHJldHVybiBxICsgKDIqKHggJiAoYi0xKSkgKyAocSYxKSA+IGIpCi0KLWRlZiBfZGl2X25lYXJlc3QoYSwgYik6Ci0gICAgIiIiQ2xvc2VzdCBpbnRlZ2VyIHRvIGEvYiwgYSBhbmQgYiBwb3NpdGl2ZSBpbnRlZ2Vyczsgcm91bmRzIHRvIGV2ZW4KLSAgICBpbiB0aGUgY2FzZSBvZiBhIHRpZS4KLQotICAgICIiIgotICAgIHEsIHIgPSBkaXZtb2QoYSwgYikKLSAgICByZXR1cm4gcSArICgyKnIgKyAocSYxKSA+IGIpCi0KLWRlZiBfaWxvZyh4LCBNLCBMID0gOCk6Ci0gICAgIiIiSW50ZWdlciBhcHByb3hpbWF0aW9uIHRvIE0qbG9nKHgvTSksIHdpdGggYWJzb2x1dGUgZXJyb3IgYm91bmRhYmxlCi0gICAgaW4gdGVybXMgb25seSBvZiB4L00uCi0KLSAgICBHaXZlbiBwb3NpdGl2ZSBpbnRlZ2VycyB4IGFuZCBNLCByZXR1cm4gYW4gaW50ZWdlciBhcHByb3hpbWF0aW9uIHRvCi0gICAgTSAqIGxvZyh4L00pLiAgRm9yIEwgPSA4IGFuZCAwLjEgPD0geC9NIDw9IDEwIHRoZSBkaWZmZXJlbmNlCi0gICAgYmV0d2VlbiB0aGUgYXBwcm94aW1hdGlvbiBhbmQgdGhlIGV4YWN0IHJlc3VsdCBpcyBhdCBtb3N0IDIyLiAgRm9yCi0gICAgTCA9IDggYW5kIDEuMCA8PSB4L00gPD0gMTAuMCB0aGUgZGlmZmVyZW5jZSBpcyBhdCBtb3N0IDE1LiAgSW4KLSAgICBib3RoIGNhc2VzIHRoZXNlIGFyZSB1cHBlciBib3VuZHMgb24gdGhlIGVycm9yOyBpdCB3aWxsIHVzdWFsbHkgYmUKLSAgICBtdWNoIHNtYWxsZXIuIiIiCi0KLSAgICAjIFRoZSBiYXNpYyBhbGdvcml0aG0gaXMgdGhlIGZvbGxvd2luZzogbGV0IGxvZzFwIGJlIHRoZSBmdW5jdGlvbgotICAgICMgbG9nMXAoeCkgPSBsb2coMSt4KS4gIFRoZW4gbG9nKHgvTSkgPSBsb2cxcCgoeC1NKS9NKS4gIFdlIHVzZQotICAgICMgdGhlIHJlZHVjdGlvbgotICAgICMKLSAgICAjICAgIGxvZzFwKHkpID0gMipsb2cxcCh5LygxK3NxcnQoMSt5KSkpCi0gICAgIwotICAgICMgcmVwZWF0ZWRseSB1bnRpbCB0aGUgYXJndW1lbnQgdG8gbG9nMXAgaXMgc21hbGwgKDwgMioqLUwgaW4KLSAgICAjIGFic29sdXRlIHZhbHVlKS4gIEZvciBzbWFsbCB5IHdlIGNhbiB1c2UgdGhlIFRheWxvciBzZXJpZXMKLSAgICAjIGV4cGFuc2lvbgotICAgICMKLSAgICAjICAgIGxvZzFwKHkpIH4geSAtIHkqKjIvMiArIHkqKjMvMyAtIC4uLiAtICgteSkqKlQvVAotICAgICMKLSAgICAjIHRydW5jYXRpbmcgYXQgVCBzdWNoIHRoYXQgeSoqVCBpcyBzbWFsbCBlbm91Z2guICBUaGUgd2hvbGUKLSAgICAjIGNvbXB1dGF0aW9uIGlzIGNhcnJpZWQgb3V0IGluIGEgZm9ybSBvZiBmaXhlZC1wb2ludCBhcml0aG1ldGljLAotICAgICMgd2l0aCBhIHJlYWwgbnVtYmVyIHogYmVpbmcgcmVwcmVzZW50ZWQgYnkgYW4gaW50ZWdlcgotICAgICMgYXBwcm94aW1hdGlvbiB0byB6Kk0uICBUbyBhdm9pZCBsb3NzIG9mIHByZWNpc2lvbiwgdGhlIHkgYmVsb3cKLSAgICAjIGlzIGFjdHVhbGx5IGFuIGludGVnZXIgYXBwcm94aW1hdGlvbiB0byAyKipSKnkqTSwgd2hlcmUgUiBpcyB0aGUKLSAgICAjIG51bWJlciBvZiByZWR1Y3Rpb25zIHBlcmZvcm1lZCBzbyBmYXIuCi0KLSAgICB5ID0geC1NCi0gICAgIyBhcmd1bWVudCByZWR1Y3Rpb247IFIgPSBudW1iZXIgb2YgcmVkdWN0aW9ucyBwZXJmb3JtZWQKLSAgICBSID0gMAotICAgIHdoaWxlIChSIDw9IEwgYW5kIGFicyh5KSA8PCBMLVIgPj0gTSBvcgotICAgICAgICAgICBSID4gTCBhbmQgYWJzKHkpID4+IFItTCA+PSBNKToKLSAgICAgICAgeSA9IF9kaXZfbmVhcmVzdCgoTSp5KSA8PCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgIE0gKyBfc3FydF9uZWFyZXN0KE0qKE0rX3JzaGlmdF9uZWFyZXN0KHksIFIpKSwgTSkpCi0gICAgICAgIFIgKz0gMQotCi0gICAgIyBUYXlsb3Igc2VyaWVzIHdpdGggVCB0ZXJtcwotICAgIFQgPSAtaW50KC0xMCpsZW4oc3RyKE0pKS8vKDMqTCkpCi0gICAgeXNoaWZ0ID0gX3JzaGlmdF9uZWFyZXN0KHksIFIpCi0gICAgdyA9IF9kaXZfbmVhcmVzdChNLCBUKQotICAgIGZvciBrIGluIHJhbmdlKFQtMSwgMCwgLTEpOgotICAgICAgICB3ID0gX2Rpdl9uZWFyZXN0KE0sIGspIC0gX2Rpdl9uZWFyZXN0KHlzaGlmdCp3LCBNKQotCi0gICAgcmV0dXJuIF9kaXZfbmVhcmVzdCh3KnksIE0pCi0KLWRlZiBfZGxvZzEwKGMsIGUsIHApOgotICAgICIiIkdpdmVuIGludGVnZXJzIGMsIGUgYW5kIHAgd2l0aCBjID4gMCwgcCA+PSAwLCBjb21wdXRlIGFuIGludGVnZXIKLSAgICBhcHByb3hpbWF0aW9uIHRvIDEwKipwICogbG9nMTAoYyoxMCoqZSksIHdpdGggYW4gYWJzb2x1dGUgZXJyb3Igb2YKLSAgICBhdCBtb3N0IDEuICBBc3N1bWVzIHRoYXQgYyoxMCoqZSBpcyBub3QgZXhhY3RseSAxLiIiIgotCi0gICAgIyBpbmNyZWFzZSBwcmVjaXNpb24gYnkgMjsgY29tcGVuc2F0ZSBmb3IgdGhpcyBieSBkaXZpZGluZwotICAgICMgZmluYWwgcmVzdWx0IGJ5IDEwMAotICAgIHAgKz0gMgotCi0gICAgIyB3cml0ZSBjKjEwKiplIGFzIGQqMTAqKmYgd2l0aCBlaXRoZXI6Ci0gICAgIyAgIGYgPj0gMCBhbmQgMSA8PSBkIDw9IDEwLCBvcgotICAgICMgICBmIDw9IDAgYW5kIDAuMSA8PSBkIDw9IDEuCi0gICAgIyBUaHVzIGZvciBjKjEwKiplIGNsb3NlIHRvIDEsIGYgPSAwCi0gICAgbCA9IGxlbihzdHIoYykpCi0gICAgZiA9IGUrbCAtIChlK2wgPj0gMSkKLQotICAgIGlmIHAgPiAwOgotICAgICAgICBNID0gMTAqKnAKLSAgICAgICAgayA9IGUrcC1mCi0gICAgICAgIGlmIGsgPj0gMDoKLSAgICAgICAgICAgIGMgKj0gMTAqKmsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGMgPSBfZGl2X25lYXJlc3QoYywgMTAqKi1rKQotCi0gICAgICAgIGxvZ19kID0gX2lsb2coYywgTSkgIyBlcnJvciA8IDUgKyAyMiA9IDI3Ci0gICAgICAgIGxvZ18xMCA9IF9sb2cxMF9kaWdpdHMocCkgIyBlcnJvciA8IDEKLSAgICAgICAgbG9nX2QgPSBfZGl2X25lYXJlc3QobG9nX2QqTSwgbG9nXzEwKQotICAgICAgICBsb2dfdGVucG93ZXIgPSBmKk0gIyBleGFjdAotICAgIGVsc2U6Ci0gICAgICAgIGxvZ19kID0gMCAgIyBlcnJvciA8IDIuMzEKLSAgICAgICAgbG9nX3RlbnBvd2VyID0gX2Rpdl9uZWFyZXN0KGYsIDEwKiotcCkgIyBlcnJvciA8IDAuNQotCi0gICAgcmV0dXJuIF9kaXZfbmVhcmVzdChsb2dfdGVucG93ZXIrbG9nX2QsIDEwMCkKLQotZGVmIF9kbG9nKGMsIGUsIHApOgotICAgICIiIkdpdmVuIGludGVnZXJzIGMsIGUgYW5kIHAgd2l0aCBjID4gMCwgY29tcHV0ZSBhbiBpbnRlZ2VyCi0gICAgYXBwcm94aW1hdGlvbiB0byAxMCoqcCAqIGxvZyhjKjEwKiplKSwgd2l0aCBhbiBhYnNvbHV0ZSBlcnJvciBvZgotICAgIGF0IG1vc3QgMS4gIEFzc3VtZXMgdGhhdCBjKjEwKiplIGlzIG5vdCBleGFjdGx5IDEuIiIiCi0KLSAgICAjIEluY3JlYXNlIHByZWNpc2lvbiBieSAyLiBUaGUgcHJlY2lzaW9uIGluY3JlYXNlIGlzIGNvbXBlbnNhdGVkCi0gICAgIyBmb3IgYXQgdGhlIGVuZCB3aXRoIGEgZGl2aXNpb24gYnkgMTAwLgotICAgIHAgKz0gMgotCi0gICAgIyByZXdyaXRlIGMqMTAqKmUgYXMgZCoxMCoqZiB3aXRoIGVpdGhlciBmID49IDAgYW5kIDEgPD0gZCA8PSAxMCwKLSAgICAjIG9yIGYgPD0gMCBhbmQgMC4xIDw9IGQgPD0gMS4gIFRoZW4gd2UgY2FuIGNvbXB1dGUgMTAqKnAgKiBsb2coYyoxMCoqZSkKLSAgICAjIGFzIDEwKipwICogbG9nKGQpICsgMTAqKnAqZiAqIGxvZygxMCkuCi0gICAgbCA9IGxlbihzdHIoYykpCi0gICAgZiA9IGUrbCAtIChlK2wgPj0gMSkKLQotICAgICMgY29tcHV0ZSBhcHByb3hpbWF0aW9uIHRvIDEwKipwKmxvZyhkKSwgd2l0aCBlcnJvciA8IDI3Ci0gICAgaWYgcCA+IDA6Ci0gICAgICAgIGsgPSBlK3AtZgotICAgICAgICBpZiBrID49IDA6Ci0gICAgICAgICAgICBjICo9IDEwKiprCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjID0gX2Rpdl9uZWFyZXN0KGMsIDEwKiotaykgICMgZXJyb3Igb2YgPD0gMC41IGluIGMKLQotICAgICAgICAjIF9pbG9nIG1hZ25pZmllcyBleGlzdGluZyBlcnJvciBpbiBjIGJ5IGEgZmFjdG9yIG9mIGF0IG1vc3QgMTAKLSAgICAgICAgbG9nX2QgPSBfaWxvZyhjLCAxMCoqcCkgIyBlcnJvciA8IDUgKyAyMiA9IDI3Ci0gICAgZWxzZToKLSAgICAgICAgIyBwIDw9IDA6IGp1c3QgYXBwcm94aW1hdGUgdGhlIHdob2xlIHRoaW5nIGJ5IDA7IGVycm9yIDwgMi4zMQotICAgICAgICBsb2dfZCA9IDAKLQotICAgICMgY29tcHV0ZSBhcHByb3hpbWF0aW9uIHRvIGYqMTAqKnAqbG9nKDEwKSwgd2l0aCBlcnJvciA8IDExLgotICAgIGlmIGY6Ci0gICAgICAgIGV4dHJhID0gbGVuKHN0cihhYnMoZikpKS0xCi0gICAgICAgIGlmIHAgKyBleHRyYSA+PSAwOgotICAgICAgICAgICAgIyBlcnJvciBpbiBmICogX2xvZzEwX2RpZ2l0cyhwK2V4dHJhKSA8IHxmfCAqIDEgPSB8ZnwKLSAgICAgICAgICAgICMgYWZ0ZXIgZGl2aXNpb24sIGVycm9yIDwgfGZ8LzEwKipleHRyYSArIDAuNSA8IDEwICsgMC41IDwgMTEKLSAgICAgICAgICAgIGZfbG9nX3RlbiA9IF9kaXZfbmVhcmVzdChmKl9sb2cxMF9kaWdpdHMocCtleHRyYSksIDEwKipleHRyYSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZfbG9nX3RlbiA9IDAKLSAgICBlbHNlOgotICAgICAgICBmX2xvZ190ZW4gPSAwCi0KLSAgICAjIGVycm9yIGluIHN1bSA8IDExKzI3ID0gMzg7IGVycm9yIGFmdGVyIGRpdmlzaW9uIDwgMC4zOCArIDAuNSA8IDEKLSAgICByZXR1cm4gX2Rpdl9uZWFyZXN0KGZfbG9nX3RlbiArIGxvZ19kLCAxMDApCi0KLWNsYXNzIF9Mb2cxME1lbW9pemUob2JqZWN0KToKLSAgICAiIiJDbGFzcyB0byBjb21wdXRlLCBzdG9yZSwgYW5kIGFsbG93IHJldHJpZXZhbCBvZiwgZGlnaXRzIG9mIHRoZQotICAgIGNvbnN0YW50IGxvZygxMCkgPSAyLjMwMjU4NS4uLi4gIFRoaXMgY29uc3RhbnQgaXMgbmVlZGVkIGJ5Ci0gICAgRGVjaW1hbC5sbiwgRGVjaW1hbC5sb2cxMCwgRGVjaW1hbC5leHAgYW5kIERlY2ltYWwuX19wb3dfXy4iIiIKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuZGlnaXRzID0gIjIzMDI1ODUwOTI5OTQwNDU2ODQwMTc5OTE0NTQ2ODQzNjQyMDc2MDExMDE0ODg2IgotCi0gICAgZGVmIGdldGRpZ2l0cyhzZWxmLCBwKToKLSAgICAgICAgIiIiR2l2ZW4gYW4gaW50ZWdlciBwID49IDAsIHJldHVybiBmbG9vcigxMCoqcCkqbG9nKDEwKS4KLQotICAgICAgICBGb3IgZXhhbXBsZSwgc2VsZi5nZXRkaWdpdHMoMykgcmV0dXJucyAyMzAyLgotICAgICAgICAiIiIKLSAgICAgICAgIyBkaWdpdHMgYXJlIHN0b3JlZCBhcyBhIHN0cmluZywgZm9yIHF1aWNrIGNvbnZlcnNpb24gdG8KLSAgICAgICAgIyBpbnRlZ2VyIGluIHRoZSBjYXNlIHRoYXQgd2UndmUgYWxyZWFkeSBjb21wdXRlZCBlbm91Z2gKLSAgICAgICAgIyBkaWdpdHM7IHRoZSBzdG9yZWQgZGlnaXRzIHNob3VsZCBhbHdheXMgYmUgY29ycmVjdAotICAgICAgICAjICh0cnVuY2F0ZWQsIG5vdCByb3VuZGVkIHRvIG5lYXJlc3QpLgotICAgICAgICBpZiBwIDwgMDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInAgc2hvdWxkIGJlIG5vbm5lZ2F0aXZlIikKLQotICAgICAgICBpZiBwID49IGxlbihzZWxmLmRpZ2l0cyk6Ci0gICAgICAgICAgICAjIGNvbXB1dGUgcCszLCBwKzYsIHArOSwgLi4uIGRpZ2l0czsgY29udGludWUgdW50aWwgYXQKLSAgICAgICAgICAgICMgbGVhc3Qgb25lIG9mIHRoZSBleHRyYSBkaWdpdHMgaXMgbm9uemVybwotICAgICAgICAgICAgZXh0cmEgPSAzCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICMgY29tcHV0ZSBwK2V4dHJhIGRpZ2l0cywgY29ycmVjdCB0byB3aXRoaW4gMXVscAotICAgICAgICAgICAgICAgIE0gPSAxMCoqKHArZXh0cmErMikKLSAgICAgICAgICAgICAgICBkaWdpdHMgPSBzdHIoX2Rpdl9uZWFyZXN0KF9pbG9nKDEwKk0sIE0pLCAxMDApKQotICAgICAgICAgICAgICAgIGlmIGRpZ2l0c1stZXh0cmE6XSAhPSAnMCcqZXh0cmE6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZXh0cmEgKz0gMwotICAgICAgICAgICAgIyBrZWVwIGFsbCByZWxpYWJsZSBkaWdpdHMgc28gZmFyOyByZW1vdmUgdHJhaWxpbmcgemVyb3MKLSAgICAgICAgICAgICMgYW5kIG5leHQgbm9uemVybyBkaWdpdAotICAgICAgICAgICAgc2VsZi5kaWdpdHMgPSBkaWdpdHMucnN0cmlwKCcwJylbOi0xXQotICAgICAgICByZXR1cm4gaW50KHNlbGYuZGlnaXRzWzpwKzFdKQotCi1fbG9nMTBfZGlnaXRzID0gX0xvZzEwTWVtb2l6ZSgpLmdldGRpZ2l0cwotCi1kZWYgX2lleHAoeCwgTSwgTD04KToKLSAgICAiIiJHaXZlbiBpbnRlZ2VycyB4IGFuZCBNLCBNID4gMCwgc3VjaCB0aGF0IHgvTSBpcyBzbWFsbCBpbiBhYnNvbHV0ZQotICAgIHZhbHVlLCBjb21wdXRlIGFuIGludGVnZXIgYXBwcm94aW1hdGlvbiB0byBNKmV4cCh4L00pLiAgRm9yIDAgPD0KLSAgICB4L00gPD0gMi40LCB0aGUgYWJzb2x1dGUgZXJyb3IgaW4gdGhlIHJlc3VsdCBpcyBib3VuZGVkIGJ5IDYwIChhbmQKLSAgICBpcyB1c3VhbGx5IG11Y2ggc21hbGxlcikuIiIiCi0KLSAgICAjIEFsZ29yaXRobTogdG8gY29tcHV0ZSBleHAoeikgZm9yIGEgcmVhbCBudW1iZXIgeiwgZmlyc3QgZGl2aWRlIHoKLSAgICAjIGJ5IGEgc3VpdGFibGUgcG93ZXIgUiBvZiAyIHNvIHRoYXQgfHovMioqUnwgPCAyKiotTC4gIFRoZW4KLSAgICAjIGNvbXB1dGUgZXhwbTEoei8yKipSKSA9IGV4cCh6LzIqKlIpIC0gMSB1c2luZyB0aGUgdXN1YWwgVGF5bG9yCi0gICAgIyBzZXJpZXMKLSAgICAjCi0gICAgIyAgICAgZXhwbTEoeCkgPSB4ICsgeCoqMi8yISArIHgqKjMvMyEgKyAuLi4KLSAgICAjCi0gICAgIyBOb3cgdXNlIHRoZSBpZGVudGl0eQotICAgICMKLSAgICAjICAgICBleHBtMSgyeCkgPSBleHBtMSh4KSooZXhwbTEoeCkrMikKLSAgICAjCi0gICAgIyBSIHRpbWVzIHRvIGNvbXB1dGUgdGhlIHNlcXVlbmNlIGV4cG0xKHovMioqUiksCi0gICAgIyBleHBtMSh6LzIqKihSLTEpKSwgLi4uICwgZXhwKHovMiksIGV4cCh6KS4KLQotICAgICMgRmluZCBSIHN1Y2ggdGhhdCB4LzIqKlIvTSA8PSAyKiotTAotICAgIFIgPSBfbmJpdHMoKHg8PEwpLy9NKQotCi0gICAgIyBUYXlsb3Igc2VyaWVzLiAgKDIqKkwpKipUID4gTQotICAgIFQgPSAtaW50KC0xMCpsZW4oc3RyKE0pKS8vKDMqTCkpCi0gICAgeSA9IF9kaXZfbmVhcmVzdCh4LCBUKQotICAgIE1zaGlmdCA9IE08PFIKLSAgICBmb3IgaSBpbiByYW5nZShULTEsIDAsIC0xKToKLSAgICAgICAgeSA9IF9kaXZfbmVhcmVzdCh4KihNc2hpZnQgKyB5KSwgTXNoaWZ0ICogaSkKLQotICAgICMgRXhwYW5zaW9uCi0gICAgZm9yIGsgaW4gcmFuZ2UoUi0xLCAtMSwgLTEpOgotICAgICAgICBNc2hpZnQgPSBNPDwoaysyKQotICAgICAgICB5ID0gX2Rpdl9uZWFyZXN0KHkqKHkrTXNoaWZ0KSwgTXNoaWZ0KQotCi0gICAgcmV0dXJuIE0reQotCi1kZWYgX2RleHAoYywgZSwgcCk6Ci0gICAgIiIiQ29tcHV0ZSBhbiBhcHByb3hpbWF0aW9uIHRvIGV4cChjKjEwKiplKSwgd2l0aCBwIGRlY2ltYWwgcGxhY2VzIG9mCi0gICAgcHJlY2lzaW9uLgotCi0gICAgUmV0dXJucyBpbnRlZ2VycyBkLCBmIHN1Y2ggdGhhdDoKLQotICAgICAgMTAqKihwLTEpIDw9IGQgPD0gMTAqKnAsIGFuZAotICAgICAgKGQtMSkqMTAqKmYgPCBleHAoYyoxMCoqZSkgPCAoZCsxKSoxMCoqZgotCi0gICAgSW4gb3RoZXIgd29yZHMsIGQqMTAqKmYgaXMgYW4gYXBwcm94aW1hdGlvbiB0byBleHAoYyoxMCoqZSkgd2l0aCBwCi0gICAgZGlnaXRzIG9mIHByZWNpc2lvbiwgYW5kIHdpdGggYW4gZXJyb3IgaW4gZCBvZiBhdCBtb3N0IDEuICBUaGlzIGlzCi0gICAgYWxtb3N0LCBidXQgbm90IHF1aXRlLCB0aGUgc2FtZSBhcyB0aGUgZXJyb3IgYmVpbmcgPCAxdWxwOiB3aGVuIGQKLSAgICA9IDEwKioocC0xKSB0aGUgZXJyb3IgY291bGQgYmUgdXAgdG8gMTAgdWxwLiIiIgotCi0gICAgIyB3ZSdsbCBjYWxsIGlleHAgd2l0aCBNID0gMTAqKihwKzIpLCBnaXZpbmcgcCszIGRpZ2l0cyBvZiBwcmVjaXNpb24KLSAgICBwICs9IDIKLQotICAgICMgY29tcHV0ZSBsb2coMTApIHdpdGggZXh0cmEgcHJlY2lzaW9uID0gYWRqdXN0ZWQgZXhwb25lbnQgb2YgYyoxMCoqZQotICAgIGV4dHJhID0gbWF4KDAsIGUgKyBsZW4oc3RyKGMpKSAtIDEpCi0gICAgcSA9IHAgKyBleHRyYQotCi0gICAgIyBjb21wdXRlIHF1b3RpZW50IGMqMTAqKmUvKGxvZygxMCkpID0gYyoxMCoqKGUrcSkvKGxvZygxMCkqMTAqKnEpLAotICAgICMgcm91bmRpbmcgZG93bgotICAgIHNoaWZ0ID0gZStxCi0gICAgaWYgc2hpZnQgPj0gMDoKLSAgICAgICAgY3NoaWZ0ID0gYyoxMCoqc2hpZnQKLSAgICBlbHNlOgotICAgICAgICBjc2hpZnQgPSBjLy8xMCoqLXNoaWZ0Ci0gICAgcXVvdCwgcmVtID0gZGl2bW9kKGNzaGlmdCwgX2xvZzEwX2RpZ2l0cyhxKSkKLQotICAgICMgcmVkdWNlIHJlbWFpbmRlciBiYWNrIHRvIG9yaWdpbmFsIHByZWNpc2lvbgotICAgIHJlbSA9IF9kaXZfbmVhcmVzdChyZW0sIDEwKipleHRyYSkKLQotICAgICMgZXJyb3IgaW4gcmVzdWx0IG9mIF9pZXhwIDwgMTIwOyAgZXJyb3IgYWZ0ZXIgZGl2aXNpb24gPCAwLjYyCi0gICAgcmV0dXJuIF9kaXZfbmVhcmVzdChfaWV4cChyZW0sIDEwKipwKSwgMTAwMCksIHF1b3QgLSBwICsgMwotCi1kZWYgX2Rwb3dlcih4YywgeGUsIHljLCB5ZSwgcCk6Ci0gICAgIiIiR2l2ZW4gaW50ZWdlcnMgeGMsIHhlLCB5YyBhbmQgeWUgcmVwcmVzZW50aW5nIERlY2ltYWxzIHggPSB4YyoxMCoqeGUgYW5kCi0gICAgeSA9IHljKjEwKip5ZSwgY29tcHV0ZSB4Kip5LiAgUmV0dXJucyBhIHBhaXIgb2YgaW50ZWdlcnMgKGMsIGUpIHN1Y2ggdGhhdDoKLQotICAgICAgMTAqKihwLTEpIDw9IGMgPD0gMTAqKnAsIGFuZAotICAgICAgKGMtMSkqMTAqKmUgPCB4Kip5IDwgKGMrMSkqMTAqKmUKLQotICAgIGluIG90aGVyIHdvcmRzLCBjKjEwKiplIGlzIGFuIGFwcHJveGltYXRpb24gdG8geCoqeSB3aXRoIHAgZGlnaXRzCi0gICAgb2YgcHJlY2lzaW9uLCBhbmQgd2l0aCBhbiBlcnJvciBpbiBjIG9mIGF0IG1vc3QgMS4gIChUaGlzIGlzCi0gICAgYWxtb3N0LCBidXQgbm90IHF1aXRlLCB0aGUgc2FtZSBhcyB0aGUgZXJyb3IgYmVpbmcgPCAxdWxwOiB3aGVuIGMKLSAgICA9PSAxMCoqKHAtMSkgd2UgY2FuIG9ubHkgZ3VhcmFudGVlIGVycm9yIDwgMTB1bHAuKQotCi0gICAgV2UgYXNzdW1lIHRoYXQ6IHggaXMgcG9zaXRpdmUgYW5kIG5vdCBlcXVhbCB0byAxLCBhbmQgeSBpcyBub256ZXJvLgotICAgICIiIgotCi0gICAgIyBGaW5kIGIgc3VjaCB0aGF0IDEwKiooYi0xKSA8PSB8eXwgPD0gMTAqKmIKLSAgICBiID0gbGVuKHN0cihhYnMoeWMpKSkgKyB5ZQotCi0gICAgIyBsb2coeCkgPSBseGMqMTAqKigtcC1iLTEpLCB0byBwK2IrMSBwbGFjZXMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQKLSAgICBseGMgPSBfZGxvZyh4YywgeGUsIHArYisxKQotCi0gICAgIyBjb21wdXRlIHByb2R1Y3QgeSpsb2coeCkgPSB5YypseGMqMTAqKigtcC1iLTEreWUpID0gcGMqMTAqKigtcC0xKQotICAgIHNoaWZ0ID0geWUtYgotICAgIGlmIHNoaWZ0ID49IDA6Ci0gICAgICAgIHBjID0gbHhjKnljKjEwKipzaGlmdAotICAgIGVsc2U6Ci0gICAgICAgIHBjID0gX2Rpdl9uZWFyZXN0KGx4Yyp5YywgMTAqKi1zaGlmdCkKLQotICAgIGlmIHBjID09IDA6Ci0gICAgICAgICMgd2UgcHJlZmVyIGEgcmVzdWx0IHRoYXQgaXNuJ3QgZXhhY3RseSAxOyB0aGlzIG1ha2VzIGl0Ci0gICAgICAgICMgZWFzaWVyIHRvIGNvbXB1dGUgYSBjb3JyZWN0bHkgcm91bmRlZCByZXN1bHQgaW4gX19wb3dfXwotICAgICAgICBpZiAoKGxlbihzdHIoeGMpKSArIHhlID49IDEpID09ICh5YyA+IDApKTogIyBpZiB4Kip5ID4gMToKLSAgICAgICAgICAgIGNvZWZmLCBleHAgPSAxMCoqKHAtMSkrMSwgMS1wCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb2VmZiwgZXhwID0gMTAqKnAtMSwgLXAKLSAgICBlbHNlOgotICAgICAgICBjb2VmZiwgZXhwID0gX2RleHAocGMsIC0ocCsxKSwgcCsxKQotICAgICAgICBjb2VmZiA9IF9kaXZfbmVhcmVzdChjb2VmZiwgMTApCi0gICAgICAgIGV4cCArPSAxCi0KLSAgICByZXR1cm4gY29lZmYsIGV4cAotCi1kZWYgX2xvZzEwX2xiKGMsIGNvcnJlY3Rpb24gPSB7Ci0gICAgICAgICcxJzogMTAwLCAnMic6IDcwLCAnMyc6IDUzLCAnNCc6IDQwLCAnNSc6IDMxLAotICAgICAgICAnNic6IDIzLCAnNyc6IDE2LCAnOCc6IDEwLCAnOSc6IDV9KToKLSAgICAiIiJDb21wdXRlIGEgbG93ZXIgYm91bmQgZm9yIDEwMCpsb2cxMChjKSBmb3IgYSBwb3NpdGl2ZSBpbnRlZ2VyIGMuIiIiCi0gICAgaWYgYyA8PSAwOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJUaGUgYXJndW1lbnQgdG8gX2xvZzEwX2xiIHNob3VsZCBiZSBub25uZWdhdGl2ZS4iKQotICAgIHN0cl9jID0gc3RyKGMpCi0gICAgcmV0dXJuIDEwMCpsZW4oc3RyX2MpIC0gY29ycmVjdGlvbltzdHJfY1swXV0KLQotIyMjIyMgSGVscGVyIEZ1bmN0aW9ucyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLWRlZiBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1GYWxzZSwgYWxsb3dfZmxvYXQ9RmFsc2UpOgotICAgICIiIkNvbnZlcnQgb3RoZXIgdG8gRGVjaW1hbC4KLQotICAgIFZlcmlmaWVzIHRoYXQgaXQncyBvayB0byB1c2UgaW4gYW4gaW1wbGljaXQgY29uc3RydWN0aW9uLgotICAgIElmIGFsbG93X2Zsb2F0IGlzIHRydWUsIGFsbG93IGNvbnZlcnNpb24gZnJvbSBmbG9hdDsgIHRoaXMKLSAgICBpcyB1c2VkIGluIHRoZSBjb21wYXJpc29uIG1ldGhvZHMgKF9fZXFfXyBhbmQgZnJpZW5kcykuCi0KLSAgICAiIiIKLSAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBEZWNpbWFsKToKLSAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgaWYgaXNpbnN0YW5jZShvdGhlciwgaW50KToKLSAgICAgICAgcmV0dXJuIERlY2ltYWwob3RoZXIpCi0gICAgaWYgYWxsb3dfZmxvYXQgYW5kIGlzaW5zdGFuY2Uob3RoZXIsIGZsb2F0KToKLSAgICAgICAgcmV0dXJuIERlY2ltYWwuZnJvbV9mbG9hdChvdGhlcikKLQotICAgIGlmIHJhaXNlaXQ6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBvdGhlcikKLSAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKLQotZGVmIF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyLCBlcXVhbGl0eV9vcD1GYWxzZSk6Ci0gICAgIiIiR2l2ZW4gYSBEZWNpbWFsIGluc3RhbmNlIHNlbGYgYW5kIGEgUHl0aG9uIG9iamVjdCBvdGhlciwgcmV0dXJuCi0gICAgYSBwYWlyIChzLCBvKSBvZiBEZWNpbWFsIGluc3RhbmNlcyBzdWNoIHRoYXQgInMgb3AgbyIgaXMKLSAgICBlcXVpdmFsZW50IHRvICJzZWxmIG9wIG90aGVyIiBmb3IgYW55IG9mIHRoZSA2IGNvbXBhcmlzb24KLSAgICBvcGVyYXRvcnMgIm9wIi4KLQotICAgICIiIgotICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIERlY2ltYWwpOgotICAgICAgICByZXR1cm4gc2VsZiwgb3RoZXIKLQotICAgICMgQ29tcGFyaXNvbiB3aXRoIGEgUmF0aW9uYWwgaW5zdGFuY2UgKGFsc28gaW5jbHVkZXMgaW50ZWdlcnMpOgotICAgICMgc2VsZiBvcCBuL2QgPD0+IHNlbGYqZCBvcCBuIChmb3IgbiBhbmQgZCBpbnRlZ2VycywgZCBwb3NpdGl2ZSkuCi0gICAgIyBBIE5hTiBvciBpbmZpbml0eSBjYW4gYmUgbGVmdCB1bmNoYW5nZWQgd2l0aG91dCBhZmZlY3RpbmcgdGhlCi0gICAgIyBjb21wYXJpc29uIHJlc3VsdC4KLSAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBfbnVtYmVycy5SYXRpb25hbCk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgc2VsZiA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihpbnQoc2VsZi5faW50KSAqIG90aGVyLmRlbm9taW5hdG9yKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCkKLSAgICAgICAgcmV0dXJuIHNlbGYsIERlY2ltYWwob3RoZXIubnVtZXJhdG9yKQotCi0gICAgIyBDb21wYXJpc29ucyB3aXRoIGZsb2F0IGFuZCBjb21wbGV4IHR5cGVzLiAgPT0gYW5kICE9IGNvbXBhcmlzb25zCi0gICAgIyB3aXRoIGNvbXBsZXggbnVtYmVycyBzaG91bGQgc3VjY2VlZCwgcmV0dXJuaW5nIGVpdGhlciBUcnVlIG9yIEZhbHNlCi0gICAgIyBhcyBhcHByb3ByaWF0ZS4gIE90aGVyIGNvbXBhcmlzb25zIHJldHVybiBOb3RJbXBsZW1lbnRlZC4KLSAgICBpZiBlcXVhbGl0eV9vcCBhbmQgaXNpbnN0YW5jZShvdGhlciwgX251bWJlcnMuQ29tcGxleCkgYW5kIG90aGVyLmltYWcgPT0gMDoKLSAgICAgICAgb3RoZXIgPSBvdGhlci5yZWFsCi0gICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZmxvYXQpOgotICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIGlmIGVxdWFsaXR5X29wOgotICAgICAgICAgICAgY29udGV4dC5mbGFnc1tGbG9hdE9wZXJhdGlvbl0gPSAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihGbG9hdE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAic3RyaWN0IHNlbWFudGljcyBmb3IgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMgYXJlIGVuYWJsZWQiKQotICAgICAgICByZXR1cm4gc2VsZiwgRGVjaW1hbC5mcm9tX2Zsb2F0KG90aGVyKQotICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZCwgTm90SW1wbGVtZW50ZWQKLQotCi0jIyMjIyBTZXR1cCBTcGVjaWZpYyBDb250ZXh0cyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIFRoZSBkZWZhdWx0IGNvbnRleHQgcHJvdG90eXBlIHVzZWQgYnkgQ29udGV4dCgpCi0jIElzIG11dGFibGUsIHNvIHRoYXQgbmV3IGNvbnRleHRzIGNhbiBoYXZlIGRpZmZlcmVudCBkZWZhdWx0IHZhbHVlcwotCi1EZWZhdWx0Q29udGV4dCA9IENvbnRleHQoCi0gICAgICAgIHByZWM9MjgsIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwKLSAgICAgICAgdHJhcHM9W0RpdmlzaW9uQnlaZXJvLCBPdmVyZmxvdywgSW52YWxpZE9wZXJhdGlvbl0sCi0gICAgICAgIGZsYWdzPVtdLAotICAgICAgICBFbWF4PTk5OTk5OSwKLSAgICAgICAgRW1pbj0tOTk5OTk5LAotICAgICAgICBjYXBpdGFscz0xLAotICAgICAgICBjbGFtcD0wCi0pCi0KLSMgUHJlLW1hZGUgYWx0ZXJuYXRlIGNvbnRleHRzIG9mZmVyZWQgYnkgdGhlIHNwZWNpZmljYXRpb24KLSMgRG9uJ3QgY2hhbmdlIHRoZXNlOyB0aGUgdXNlciBzaG91bGQgYmUgYWJsZSB0byBzZWxlY3QgdGhlc2UKLSMgY29udGV4dHMgYW5kIGJlIGFibGUgdG8gcmVwcm9kdWNlIHJlc3VsdHMgZnJvbSBvdGhlciBpbXBsZW1lbnRhdGlvbnMKLSMgb2YgdGhlIHNwZWMuCi0KLUJhc2ljQ29udGV4dCA9IENvbnRleHQoCi0gICAgICAgIHByZWM9OSwgcm91bmRpbmc9Uk9VTkRfSEFMRl9VUCwKLSAgICAgICAgdHJhcHM9W0RpdmlzaW9uQnlaZXJvLCBPdmVyZmxvdywgSW52YWxpZE9wZXJhdGlvbiwgQ2xhbXBlZCwgVW5kZXJmbG93XSwKLSAgICAgICAgZmxhZ3M9W10sCi0pCi0KLUV4dGVuZGVkQ29udGV4dCA9IENvbnRleHQoCi0gICAgICAgIHByZWM9OSwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLAotICAgICAgICB0cmFwcz1bXSwKLSAgICAgICAgZmxhZ3M9W10sCi0pCi0KLQotIyMjIyMgY3J1ZCBmb3IgcGFyc2luZyBzdHJpbmdzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyBSZWd1bGFyIGV4cHJlc3Npb24gdXNlZCBmb3IgcGFyc2luZyBudW1lcmljIHN0cmluZ3MuICBBZGRpdGlvbmFsCi0jIGNvbW1lbnRzOgotIwotIyAxLiBVbmNvbW1lbnQgdGhlIHR3byAnXHMqJyBsaW5lcyB0byBhbGxvdyBsZWFkaW5nIGFuZC9vciB0cmFpbGluZwotIyB3aGl0ZXNwYWNlLiAgQnV0IG5vdGUgdGhhdCB0aGUgc3BlY2lmaWNhdGlvbiBkaXNhbGxvd3Mgd2hpdGVzcGFjZSBpbgotIyBhIG51bWVyaWMgc3RyaW5nLgotIwotIyAyLiBGb3IgZmluaXRlIG51bWJlcnMgKG5vdCBpbmZpbml0aWVzIGFuZCBOYU5zKSB0aGUgYm9keSBvZiB0aGUKLSMgbnVtYmVyIGJldHdlZW4gdGhlIG9wdGlvbmFsIHNpZ24gYW5kIHRoZSBvcHRpb25hbCBleHBvbmVudCBtdXN0IGhhdmUKLSMgYXQgbGVhc3Qgb25lIGRlY2ltYWwgZGlnaXQsIHBvc3NpYmx5IGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LiAgVGhlCi0jIGxvb2thaGVhZCBleHByZXNzaW9uICcoPz1cZHxcLlxkKScgY2hlY2tzIHRoaXMuCi0KLWltcG9ydCByZQotX3BhcnNlciA9IHJlLmNvbXBpbGUociIiIiAgICAgICAgIyBBIG51bWVyaWMgc3RyaW5nIGNvbnNpc3RzIG9mOgotIyAgICBccyoKLSAgICAoP1A8c2lnbj5bLStdKT8gICAgICAgICAgICAgICMgYW4gb3B0aW9uYWwgc2lnbiwgZm9sbG93ZWQgYnkgZWl0aGVyLi4uCi0gICAgKAotICAgICAgICAoPz1cZHxcLlxkKSAgICAgICAgICAgICAgIyAuLi5hIG51bWJlciAod2l0aCBhdCBsZWFzdCBvbmUgZGlnaXQpCi0gICAgICAgICg/UDxpbnQ+XGQqKSAgICAgICAgICAgICAjIGhhdmluZyBhIChwb3NzaWJseSBlbXB0eSkgaW50ZWdlciBwYXJ0Ci0gICAgICAgIChcLig/UDxmcmFjPlxkKikpPyAgICAgICAjIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsIGZyYWN0aW9uYWwgcGFydAotICAgICAgICAoRSg/UDxleHA+Wy0rXT9cZCspKT8gICAgIyBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCBleHBvbmVudCwgb3IuLi4KLSAgICB8Ci0gICAgICAgIEluZihpbml0eSk/ICAgICAgICAgICAgICAjIC4uLmFuIGluZmluaXR5LCBvci4uLgotICAgIHwKLSAgICAgICAgKD9QPHNpZ25hbD5zKT8gICAgICAgICAgICMgLi4uYW4gKG9wdGlvbmFsbHkgc2lnbmFsaW5nKQotICAgICAgICBOYU4gICAgICAgICAgICAgICAgICAgICAgIyBOYU4KLSAgICAgICAgKD9QPGRpYWc+XGQqKSAgICAgICAgICAgICMgd2l0aCAocG9zc2libHkgZW1wdHkpIGRpYWdub3N0aWMgaW5mby4KLSAgICApCi0jICAgIFxzKgotICAgIFxaCi0iIiIsIHJlLlZFUkJPU0UgfCByZS5JR05PUkVDQVNFKS5tYXRjaAotCi1fYWxsX3plcm9zID0gcmUuY29tcGlsZSgnMCokJykubWF0Y2gKLV9leGFjdF9oYWxmID0gcmUuY29tcGlsZSgnNTAqJCcpLm1hdGNoCi0KLSMjIyMjIFBFUDMxMDEgc3VwcG9ydCBmdW5jdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUaGUgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBoYXZlIGxpdHRsZSB0byBkbyB3aXRoIHRoZSBEZWNpbWFsCi0jIGNsYXNzLCBhbmQgY291bGQgcG90ZW50aWFsbHkgYmUgcmV1c2VkIG9yIGFkYXB0ZWQgZm9yIG90aGVyIHB1cmUKLSMgUHl0aG9uIG51bWVyaWMgY2xhc3NlcyB0aGF0IHdhbnQgdG8gaW1wbGVtZW50IF9fZm9ybWF0X18KLSMKLSMgQSBmb3JtYXQgc3BlY2lmaWVyIGZvciBEZWNpbWFsIGxvb2tzIGxpa2U6Ci0jCi0jICAgW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVttaW5pbXVtd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdCi0KLV9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyX3JlZ2V4ID0gcmUuY29tcGlsZShyIiIiXEEKLSg/OgotICAgKD9QPGZpbGw+Lik/Ci0gICAoP1A8YWxpZ24+Wzw+PV5dKQotKT8KLSg/UDxzaWduPlstKyBdKT8KLSg/UDxhbHQ+XCMpPwotKD9QPHplcm9wYWQ+MCk/Ci0oP1A8bWluaW11bXdpZHRoPig/ITApXGQrKT8KLSg/UDx0aG91c2FuZHNfc2VwPiwpPwotKD86XC4oP1A8cHJlY2lzaW9uPjB8KD8hMClcZCspKT8KLSg/UDx0eXBlPltlRWZGZ0duJV0pPwotXFoKLSIiIiwgcmUuVkVSQk9TRXxyZS5ET1RBTEwpCi0KLWRlbCByZQotCi0jIFRoZSBsb2NhbGUgbW9kdWxlIGlzIG9ubHkgbmVlZGVkIGZvciB0aGUgJ24nIGZvcm1hdCBzcGVjaWZpZXIuICBUaGUKLSMgcmVzdCBvZiB0aGUgUEVQIDMxMDEgY29kZSBmdW5jdGlvbnMgcXVpdGUgaGFwcGlseSB3aXRob3V0IGl0LCBzbyB3ZQotIyBkb24ndCBjYXJlIHRvbyBtdWNoIGlmIGxvY2FsZSBpc24ndCBwcmVzZW50LgotdHJ5OgotICAgIGltcG9ydCBsb2NhbGUgYXMgX2xvY2FsZQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKLQotZGVmIF9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyKGZvcm1hdF9zcGVjLCBfbG9jYWxlY29udj1Ob25lKToKLSAgICAiIiJQYXJzZSBhbmQgdmFsaWRhdGUgYSBmb3JtYXQgc3BlY2lmaWVyLgotCi0gICAgVHVybnMgYSBzdGFuZGFyZCBudW1lcmljIGZvcm1hdCBzcGVjaWZpZXIgaW50byBhIGRpY3QsIHdpdGggdGhlCi0gICAgZm9sbG93aW5nIGVudHJpZXM6Ci0KLSAgICAgIGZpbGw6IGZpbGwgY2hhcmFjdGVyIHRvIHBhZCBmaWVsZCB0byBtaW5pbXVtIHdpZHRoCi0gICAgICBhbGlnbjogYWxpZ25tZW50IHR5cGUsIGVpdGhlciAnPCcsICc+JywgJz0nIG9yICdeJwotICAgICAgc2lnbjogZWl0aGVyICcrJywgJy0nIG9yICcgJwotICAgICAgbWluaW11bXdpZHRoOiBub25uZWdhdGl2ZSBpbnRlZ2VyIGdpdmluZyBtaW5pbXVtIHdpZHRoCi0gICAgICB6ZXJvcGFkOiBib29sZWFuLCBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gcGFkIHdpdGggemVyb3MKLSAgICAgIHRob3VzYW5kc19zZXA6IHN0cmluZyB0byB1c2UgYXMgdGhvdXNhbmRzIHNlcGFyYXRvciwgb3IgJycKLSAgICAgIGdyb3VwaW5nOiBncm91cGluZyBmb3IgdGhvdXNhbmRzIHNlcGFyYXRvcnMsIGluIGZvcm1hdAotICAgICAgICB1c2VkIGJ5IGxvY2FsZWNvbnYKLSAgICAgIGRlY2ltYWxfcG9pbnQ6IHN0cmluZyB0byB1c2UgZm9yIGRlY2ltYWwgcG9pbnQKLSAgICAgIHByZWNpc2lvbjogbm9ubmVnYXRpdmUgaW50ZWdlciBnaXZpbmcgcHJlY2lzaW9uLCBvciBOb25lCi0gICAgICB0eXBlOiBvbmUgb2YgdGhlIGNoYXJhY3RlcnMgJ2VFZkZnRyUnLCBvciBOb25lCi0KLSAgICAiIiIKLSAgICBtID0gX3BhcnNlX2Zvcm1hdF9zcGVjaWZpZXJfcmVnZXgubWF0Y2goZm9ybWF0X3NwZWMpCi0gICAgaWYgbSBpcyBOb25lOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIGZvcm1hdCBzcGVjaWZpZXI6ICIgKyBmb3JtYXRfc3BlYykKLQotICAgICMgZ2V0IHRoZSBkaWN0aW9uYXJ5Ci0gICAgZm9ybWF0X2RpY3QgPSBtLmdyb3VwZGljdCgpCi0KLSAgICAjIHplcm9wYWQ7IGRlZmF1bHRzIGZvciBmaWxsIGFuZCBhbGlnbm1lbnQuICBJZiB6ZXJvIHBhZGRpbmcKLSAgICAjIGlzIHJlcXVlc3RlZCwgdGhlIGZpbGwgYW5kIGFsaWduIGZpZWxkcyBzaG91bGQgYmUgYWJzZW50LgotICAgIGZpbGwgPSBmb3JtYXRfZGljdFsnZmlsbCddCi0gICAgYWxpZ24gPSBmb3JtYXRfZGljdFsnYWxpZ24nXQotICAgIGZvcm1hdF9kaWN0Wyd6ZXJvcGFkJ10gPSAoZm9ybWF0X2RpY3RbJ3plcm9wYWQnXSBpcyBub3QgTm9uZSkKLSAgICBpZiBmb3JtYXRfZGljdFsnemVyb3BhZCddOgotICAgICAgICBpZiBmaWxsIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRmlsbCBjaGFyYWN0ZXIgY29uZmxpY3RzIHdpdGggJzAnIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGluIGZvcm1hdCBzcGVjaWZpZXI6ICIgKyBmb3JtYXRfc3BlYykKLSAgICAgICAgaWYgYWxpZ24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBbGlnbm1lbnQgY29uZmxpY3RzIHdpdGggJzAnIGluICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdCBzcGVjaWZpZXI6ICIgKyBmb3JtYXRfc3BlYykKLSAgICBmb3JtYXRfZGljdFsnZmlsbCddID0gZmlsbCBvciAnICcKLSAgICAjIFBFUCAzMTAxIG9yaWdpbmFsbHkgc3BlY2lmaWVkIHRoYXQgdGhlIGRlZmF1bHQgYWxpZ25tZW50IHNob3VsZAotICAgICMgYmUgbGVmdDsgIGl0IHdhcyBsYXRlciBhZ3JlZWQgdGhhdCByaWdodC1hbGlnbmVkIG1ha2VzIG1vcmUgc2Vuc2UKLSAgICAjIGZvciBudW1lcmljIHR5cGVzLiAgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU2ODU3LgotICAgIGZvcm1hdF9kaWN0WydhbGlnbiddID0gYWxpZ24gb3IgJz4nCi0KLSAgICAjIGRlZmF1bHQgc2lnbiBoYW5kbGluZzogJy0nIGZvciBuZWdhdGl2ZSwgJycgZm9yIHBvc2l0aXZlCi0gICAgaWYgZm9ybWF0X2RpY3RbJ3NpZ24nXSBpcyBOb25lOgotICAgICAgICBmb3JtYXRfZGljdFsnc2lnbiddID0gJy0nCi0KLSAgICAjIG1pbmltdW13aWR0aCBkZWZhdWx0cyB0byAwOyBwcmVjaXNpb24gcmVtYWlucyBOb25lIGlmIG5vdCBnaXZlbgotICAgIGZvcm1hdF9kaWN0WydtaW5pbXVtd2lkdGgnXSA9IGludChmb3JtYXRfZGljdFsnbWluaW11bXdpZHRoJ10gb3IgJzAnKQotICAgIGlmIGZvcm1hdF9kaWN0WydwcmVjaXNpb24nXSBpcyBub3QgTm9uZToKLSAgICAgICAgZm9ybWF0X2RpY3RbJ3ByZWNpc2lvbiddID0gaW50KGZvcm1hdF9kaWN0WydwcmVjaXNpb24nXSkKLQotICAgICMgaWYgZm9ybWF0IHR5cGUgaXMgJ2cnIG9yICdHJyB0aGVuIGEgcHJlY2lzaW9uIG9mIDAgbWFrZXMgbGl0dGxlCi0gICAgIyBzZW5zZTsgY29udmVydCBpdCB0byAxLiAgU2FtZSBpZiBmb3JtYXQgdHlwZSBpcyB1bnNwZWNpZmllZC4KLSAgICBpZiBmb3JtYXRfZGljdFsncHJlY2lzaW9uJ10gPT0gMDoKLSAgICAgICAgaWYgZm9ybWF0X2RpY3RbJ3R5cGUnXSBpcyBOb25lIG9yIGZvcm1hdF9kaWN0Wyd0eXBlJ10gaW4gJ2dHbic6Ci0gICAgICAgICAgICBmb3JtYXRfZGljdFsncHJlY2lzaW9uJ10gPSAxCi0KLSAgICAjIGRldGVybWluZSB0aG91c2FuZHMgc2VwYXJhdG9yLCBncm91cGluZywgYW5kIGRlY2ltYWwgc2VwYXJhdG9yLCBhbmQKLSAgICAjIGFkZCBhcHByb3ByaWF0ZSBlbnRyaWVzIHRvIGZvcm1hdF9kaWN0Ci0gICAgaWYgZm9ybWF0X2RpY3RbJ3R5cGUnXSA9PSAnbic6Ci0gICAgICAgICMgYXBhcnQgZnJvbSBzZXBhcmF0b3JzLCAnbicgYmVoYXZlcyBqdXN0IGxpa2UgJ2cnCi0gICAgICAgIGZvcm1hdF9kaWN0Wyd0eXBlJ10gPSAnZycKLSAgICAgICAgaWYgX2xvY2FsZWNvbnYgaXMgTm9uZToKLSAgICAgICAgICAgIF9sb2NhbGVjb252ID0gX2xvY2FsZS5sb2NhbGVjb252KCkKLSAgICAgICAgaWYgZm9ybWF0X2RpY3RbJ3Rob3VzYW5kc19zZXAnXSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkV4cGxpY2l0IHRob3VzYW5kcyBzZXBhcmF0b3IgY29uZmxpY3RzIHdpdGggIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ24nIHR5cGUgaW4gZm9ybWF0IHNwZWNpZmllcjogIiArIGZvcm1hdF9zcGVjKQotICAgICAgICBmb3JtYXRfZGljdFsndGhvdXNhbmRzX3NlcCddID0gX2xvY2FsZWNvbnZbJ3Rob3VzYW5kc19zZXAnXQotICAgICAgICBmb3JtYXRfZGljdFsnZ3JvdXBpbmcnXSA9IF9sb2NhbGVjb252Wydncm91cGluZyddCi0gICAgICAgIGZvcm1hdF9kaWN0WydkZWNpbWFsX3BvaW50J10gPSBfbG9jYWxlY29udlsnZGVjaW1hbF9wb2ludCddCi0gICAgZWxzZToKLSAgICAgICAgaWYgZm9ybWF0X2RpY3RbJ3Rob3VzYW5kc19zZXAnXSBpcyBOb25lOgotICAgICAgICAgICAgZm9ybWF0X2RpY3RbJ3Rob3VzYW5kc19zZXAnXSA9ICcnCi0gICAgICAgIGZvcm1hdF9kaWN0Wydncm91cGluZyddID0gWzMsIDBdCi0gICAgICAgIGZvcm1hdF9kaWN0WydkZWNpbWFsX3BvaW50J10gPSAnLicKLQotICAgIHJldHVybiBmb3JtYXRfZGljdAotCi1kZWYgX2Zvcm1hdF9hbGlnbihzaWduLCBib2R5LCBzcGVjKToKLSAgICAiIiJHaXZlbiBhbiB1bnBhZGRlZCwgbm9uLWFsaWduZWQgbnVtZXJpYyBzdHJpbmcgJ2JvZHknIGFuZCBzaWduCi0gICAgc3RyaW5nICdzaWduJywgYWRkIHBhZGRpbmcgYW5kIGFsaWdubWVudCBjb25mb3JtaW5nIHRvIHRoZSBnaXZlbgotICAgIGZvcm1hdCBzcGVjaWZpZXIgZGljdGlvbmFyeSAnc3BlYycgKGFzIHByb2R1Y2VkIGJ5Ci0gICAgcGFyc2VfZm9ybWF0X3NwZWNpZmllcikuCi0KLSAgICAiIiIKLSAgICAjIGhvdyBtdWNoIGV4dHJhIHNwYWNlIGRvIHdlIGhhdmUgdG8gcGxheSB3aXRoPwotICAgIG1pbmltdW13aWR0aCA9IHNwZWNbJ21pbmltdW13aWR0aCddCi0gICAgZmlsbCA9IHNwZWNbJ2ZpbGwnXQotICAgIHBhZGRpbmcgPSBmaWxsKihtaW5pbXVtd2lkdGggLSBsZW4oc2lnbikgLSBsZW4oYm9keSkpCi0KLSAgICBhbGlnbiA9IHNwZWNbJ2FsaWduJ10KLSAgICBpZiBhbGlnbiA9PSAnPCc6Ci0gICAgICAgIHJlc3VsdCA9IHNpZ24gKyBib2R5ICsgcGFkZGluZwotICAgIGVsaWYgYWxpZ24gPT0gJz4nOgotICAgICAgICByZXN1bHQgPSBwYWRkaW5nICsgc2lnbiArIGJvZHkKLSAgICBlbGlmIGFsaWduID09ICc9JzoKLSAgICAgICAgcmVzdWx0ID0gc2lnbiArIHBhZGRpbmcgKyBib2R5Ci0gICAgZWxpZiBhbGlnbiA9PSAnXic6Ci0gICAgICAgIGhhbGYgPSBsZW4ocGFkZGluZykvLzIKLSAgICAgICAgcmVzdWx0ID0gcGFkZGluZ1s6aGFsZl0gKyBzaWduICsgYm9keSArIHBhZGRpbmdbaGFsZjpdCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVW5yZWNvZ25pc2VkIGFsaWdubWVudCBmaWVsZCcpCi0KLSAgICByZXR1cm4gcmVzdWx0Ci0KLWRlZiBfZ3JvdXBfbGVuZ3Rocyhncm91cGluZyk6Ci0gICAgIiIiQ29udmVydCBhIGxvY2FsZWNvbnYtc3R5bGUgZ3JvdXBpbmcgaW50byBhIChwb3NzaWJseSBpbmZpbml0ZSkKLSAgICBpdGVyYWJsZSBvZiBpbnRlZ2VycyByZXByZXNlbnRpbmcgZ3JvdXAgbGVuZ3Rocy4KLQotICAgICIiIgotICAgICMgVGhlIHJlc3VsdCBmcm9tIGxvY2FsZWNvbnYoKVsnZ3JvdXBpbmcnXSwgYW5kIHRoZSBpbnB1dCB0byB0aGlzCi0gICAgIyBmdW5jdGlvbiwgc2hvdWxkIGJlIGEgbGlzdCBvZiBpbnRlZ2VycyBpbiBvbmUgb2YgdGhlCi0gICAgIyBmb2xsb3dpbmcgdGhyZWUgZm9ybXM6Ci0gICAgIwotICAgICMgICAoMSkgYW4gZW1wdHkgbGlzdCwgb3IKLSAgICAjICAgKDIpIG5vbmVtcHR5IGxpc3Qgb2YgcG9zaXRpdmUgaW50ZWdlcnMgKyBbMF0KLSAgICAjICAgKDMpIGxpc3Qgb2YgcG9zaXRpdmUgaW50ZWdlcnMgKyBbbG9jYWxlLkNIQVJfTUFYXSwgb3IKLQotICAgIGZyb20gaXRlcnRvb2xzIGltcG9ydCBjaGFpbiwgcmVwZWF0Ci0gICAgaWYgbm90IGdyb3VwaW5nOgotICAgICAgICByZXR1cm4gW10KLSAgICBlbGlmIGdyb3VwaW5nWy0xXSA9PSAwIGFuZCBsZW4oZ3JvdXBpbmcpID49IDI6Ci0gICAgICAgIHJldHVybiBjaGFpbihncm91cGluZ1s6LTFdLCByZXBlYXQoZ3JvdXBpbmdbLTJdKSkKLSAgICBlbGlmIGdyb3VwaW5nWy0xXSA9PSBfbG9jYWxlLkNIQVJfTUFYOgotICAgICAgICByZXR1cm4gZ3JvdXBpbmdbOi0xXQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3VucmVjb2duaXNlZCBmb3JtYXQgZm9yIGdyb3VwaW5nJykKLQotZGVmIF9pbnNlcnRfdGhvdXNhbmRzX3NlcChkaWdpdHMsIHNwZWMsIG1pbl93aWR0aD0xKToKLSAgICAiIiJJbnNlcnQgdGhvdXNhbmRzIHNlcGFyYXRvcnMgaW50byBhIGRpZ2l0IHN0cmluZy4KLQotICAgIHNwZWMgaXMgYSBkaWN0aW9uYXJ5IHdob3NlIGtleXMgc2hvdWxkIGluY2x1ZGUgJ3Rob3VzYW5kc19zZXAnIGFuZAotICAgICdncm91cGluZyc7IHR5cGljYWxseSBpdCdzIHRoZSByZXN1bHQgb2YgcGFyc2luZyB0aGUgZm9ybWF0Ci0gICAgc3BlY2lmaWVyIHVzaW5nIF9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyLgotCi0gICAgVGhlIG1pbl93aWR0aCBrZXl3b3JkIGFyZ3VtZW50IGdpdmVzIHRoZSBtaW5pbXVtIGxlbmd0aCBvZiB0aGUKLSAgICByZXN1bHQsIHdoaWNoIHdpbGwgYmUgcGFkZGVkIG9uIHRoZSBsZWZ0IHdpdGggemVyb3MgaWYgbmVjZXNzYXJ5LgotCi0gICAgSWYgbmVjZXNzYXJ5LCB0aGUgemVybyBwYWRkaW5nIGFkZHMgYW4gZXh0cmEgJzAnIG9uIHRoZSBsZWZ0IHRvCi0gICAgYXZvaWQgYSBsZWFkaW5nIHRob3VzYW5kcyBzZXBhcmF0b3IuICBGb3IgZXhhbXBsZSwgaW5zZXJ0aW5nCi0gICAgY29tbWFzIGV2ZXJ5IHRocmVlIGRpZ2l0cyBpbiAnMTIzNDU2Jywgd2l0aCBtaW5fd2lkdGg9OCwgZ2l2ZXMKLSAgICAnMCwxMjMsNDU2JywgZXZlbiB0aG91Z2ggdGhhdCBoYXMgbGVuZ3RoIDkuCi0KLSAgICAiIiIKLQotICAgIHNlcCA9IHNwZWNbJ3Rob3VzYW5kc19zZXAnXQotICAgIGdyb3VwaW5nID0gc3BlY1snZ3JvdXBpbmcnXQotCi0gICAgZ3JvdXBzID0gW10KLSAgICBmb3IgbCBpbiBfZ3JvdXBfbGVuZ3Rocyhncm91cGluZyk6Ci0gICAgICAgIGlmIGwgPD0gMDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImdyb3VwIGxlbmd0aCBzaG91bGQgYmUgcG9zaXRpdmUiKQotICAgICAgICAjIG1heCguLi4sIDEpIGZvcmNlcyBhdCBsZWFzdCAxIGRpZ2l0IHRvIHRoZSBsZWZ0IG9mIGEgc2VwYXJhdG9yCi0gICAgICAgIGwgPSBtaW4obWF4KGxlbihkaWdpdHMpLCBtaW5fd2lkdGgsIDEpLCBsKQotICAgICAgICBncm91cHMuYXBwZW5kKCcwJyoobCAtIGxlbihkaWdpdHMpKSArIGRpZ2l0c1stbDpdKQotICAgICAgICBkaWdpdHMgPSBkaWdpdHNbOi1sXQotICAgICAgICBtaW5fd2lkdGggLT0gbAotICAgICAgICBpZiBub3QgZGlnaXRzIGFuZCBtaW5fd2lkdGggPD0gMDoKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIG1pbl93aWR0aCAtPSBsZW4oc2VwKQotICAgIGVsc2U6Ci0gICAgICAgIGwgPSBtYXgobGVuKGRpZ2l0cyksIG1pbl93aWR0aCwgMSkKLSAgICAgICAgZ3JvdXBzLmFwcGVuZCgnMCcqKGwgLSBsZW4oZGlnaXRzKSkgKyBkaWdpdHNbLWw6XSkKLSAgICByZXR1cm4gc2VwLmpvaW4ocmV2ZXJzZWQoZ3JvdXBzKSkKLQotZGVmIF9mb3JtYXRfc2lnbihpc19uZWdhdGl2ZSwgc3BlYyk6Ci0gICAgIiIiRGV0ZXJtaW5lIHNpZ24gY2hhcmFjdGVyLiIiIgotCi0gICAgaWYgaXNfbmVnYXRpdmU6Ci0gICAgICAgIHJldHVybiAnLScKLSAgICBlbGlmIHNwZWNbJ3NpZ24nXSBpbiAnICsnOgotICAgICAgICByZXR1cm4gc3BlY1snc2lnbiddCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuICcnCi0KLWRlZiBfZm9ybWF0X251bWJlcihpc19uZWdhdGl2ZSwgaW50cGFydCwgZnJhY3BhcnQsIGV4cCwgc3BlYyk6Ci0gICAgIiIiRm9ybWF0IGEgbnVtYmVyLCBnaXZlbiB0aGUgZm9sbG93aW5nIGRhdGE6Ci0KLSAgICBpc19uZWdhdGl2ZTogdHJ1ZSBpZiB0aGUgbnVtYmVyIGlzIG5lZ2F0aXZlLCBlbHNlIGZhbHNlCi0gICAgaW50cGFydDogc3RyaW5nIG9mIGRpZ2l0cyB0aGF0IG11c3QgYXBwZWFyIGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludAotICAgIGZyYWNwYXJ0OiBzdHJpbmcgb2YgZGlnaXRzIHRoYXQgbXVzdCBjb21lIGFmdGVyIHRoZSBwb2ludAotICAgIGV4cDogZXhwb25lbnQsIGFzIGFuIGludGVnZXIKLSAgICBzcGVjOiBkaWN0aW9uYXJ5IHJlc3VsdGluZyBmcm9tIHBhcnNpbmcgdGhlIGZvcm1hdCBzcGVjaWZpZXIKLQotICAgIFRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgaW5mb3JtYXRpb24gaW4gc3BlYyB0bzoKLSAgICAgIGluc2VydCBzZXBhcmF0b3JzIChkZWNpbWFsIHNlcGFyYXRvciBhbmQgdGhvdXNhbmRzIHNlcGFyYXRvcnMpCi0gICAgICBmb3JtYXQgdGhlIHNpZ24KLSAgICAgIGZvcm1hdCB0aGUgZXhwb25lbnQKLSAgICAgIGFkZCB0cmFpbGluZyAnJScgZm9yIHRoZSAnJScgdHlwZQotICAgICAgemVyby1wYWQgaWYgbmVjZXNzYXJ5Ci0gICAgICBmaWxsIGFuZCBhbGlnbiBpZiBuZWNlc3NhcnkKLSAgICAiIiIKLQotICAgIHNpZ24gPSBfZm9ybWF0X3NpZ24oaXNfbmVnYXRpdmUsIHNwZWMpCi0KLSAgICBpZiBmcmFjcGFydCBvciBzcGVjWydhbHQnXToKLSAgICAgICAgZnJhY3BhcnQgPSBzcGVjWydkZWNpbWFsX3BvaW50J10gKyBmcmFjcGFydAotCi0gICAgaWYgZXhwICE9IDAgb3Igc3BlY1sndHlwZSddIGluICdlRSc6Ci0gICAgICAgIGVjaGFyID0geydFJzogJ0UnLCAnZSc6ICdlJywgJ0cnOiAnRScsICdnJzogJ2UnfVtzcGVjWyd0eXBlJ11dCi0gICAgICAgIGZyYWNwYXJ0ICs9ICJ7MH17MTorfSIuZm9ybWF0KGVjaGFyLCBleHApCi0gICAgaWYgc3BlY1sndHlwZSddID09ICclJzoKLSAgICAgICAgZnJhY3BhcnQgKz0gJyUnCi0KLSAgICBpZiBzcGVjWyd6ZXJvcGFkJ106Ci0gICAgICAgIG1pbl93aWR0aCA9IHNwZWNbJ21pbmltdW13aWR0aCddIC0gbGVuKGZyYWNwYXJ0KSAtIGxlbihzaWduKQotICAgIGVsc2U6Ci0gICAgICAgIG1pbl93aWR0aCA9IDAKLSAgICBpbnRwYXJ0ID0gX2luc2VydF90aG91c2FuZHNfc2VwKGludHBhcnQsIHNwZWMsIG1pbl93aWR0aCkKLQotICAgIHJldHVybiBfZm9ybWF0X2FsaWduKHNpZ24sIGludHBhcnQrZnJhY3BhcnQsIHNwZWMpCi0KLQotIyMjIyMgVXNlZnVsIENvbnN0YW50cyAoaW50ZXJuYWwgdXNlIG9ubHkpICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgUmV1c2FibGUgZGVmYXVsdHMKLV9JbmZpbml0eSA9IERlY2ltYWwoJ0luZicpCi1fTmVnYXRpdmVJbmZpbml0eSA9IERlY2ltYWwoJy1JbmYnKQotX05hTiA9IERlY2ltYWwoJ05hTicpCi1fWmVybyA9IERlY2ltYWwoMCkKLV9PbmUgPSBEZWNpbWFsKDEpCi1fTmVnYXRpdmVPbmUgPSBEZWNpbWFsKC0xKQotCi0jIF9TaWduZWRJbmZpbml0eVtzaWduXSBpcyBpbmZpbml0eSB3LyB0aGF0IHNpZ24KLV9TaWduZWRJbmZpbml0eSA9IChfSW5maW5pdHksIF9OZWdhdGl2ZUluZmluaXR5KQotCi0jIENvbnN0YW50cyByZWxhdGVkIHRvIHRoZSBoYXNoIGltcGxlbWVudGF0aW9uOyAgaGFzaCh4KSBpcyBiYXNlZAotIyBvbiB0aGUgcmVkdWN0aW9uIG9mIHggbW9kdWxvIF9QeUhBU0hfTU9EVUxVUwotX1B5SEFTSF9NT0RVTFVTID0gc3lzLmhhc2hfaW5mby5tb2R1bHVzCi0jIGhhc2ggdmFsdWVzIHRvIHVzZSBmb3IgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGluZmluaXRpZXMsIGFuZCBuYW5zCi1fUHlIQVNIX0lORiA9IHN5cy5oYXNoX2luZm8uaW5mCi1fUHlIQVNIX05BTiA9IHN5cy5oYXNoX2luZm8ubmFuCi0KLSMgX1B5SEFTSF8xMElOViBpcyB0aGUgaW52ZXJzZSBvZiAxMCBtb2R1bG8gdGhlIHByaW1lIF9QeUhBU0hfTU9EVUxVUwotX1B5SEFTSF8xMElOViA9IHBvdygxMCwgX1B5SEFTSF9NT0RVTFVTIC0gMiwgX1B5SEFTSF9NT0RVTFVTKQotZGVsIHN5cwotCi10cnk6Ci0gICAgaW1wb3J0IF9kZWNpbWFsCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGFzcwotZWxzZToKLSAgICBzMSA9IHNldChkaXIoKSkKLSAgICBzMiA9IHNldChkaXIoX2RlY2ltYWwpKQotICAgIGZvciBuYW1lIGluIHMxIC0gczI6Ci0gICAgICAgIGRlbCBnbG9iYWxzKClbbmFtZV0KLSAgICBkZWwgczEsIHMyLCBuYW1lCiAgICAgZnJvbSBfZGVjaW1hbCBpbXBvcnQgKgotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGltcG9ydCBkb2N0ZXN0LCBkZWNpbWFsCi0gICAgZG9jdGVzdC50ZXN0bW9kKGRlY2ltYWwpCisgICAgZnJvbSBfZGVjaW1hbCBpbXBvcnQgX19kb2NfXworICAgIGZyb20gX2RlY2ltYWwgaW1wb3J0IF9fdmVyc2lvbl9fCisgICAgZnJvbSBfZGVjaW1hbCBpbXBvcnQgX19saWJtcGRlY192ZXJzaW9uX18KK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIF9weWRlY2ltYWwgaW1wb3J0ICoKKyAgICBmcm9tIF9weWRlY2ltYWwgaW1wb3J0IF9fZG9jX18KKyAgICBmcm9tIF9weWRlY2ltYWwgaW1wb3J0IF9fdmVyc2lvbl9fCisgICAgZnJvbSBfcHlkZWNpbWFsIGltcG9ydCBfX2xpYm1wZGVjX3ZlcnNpb25fXwpkaWZmIC0tZ2l0IGEvTGliL2RpZmZsaWIucHkgYi9MaWIvZGlmZmxpYi5weQppbmRleCA1NmQ0ODUyLi4wNzZiYmFjIDEwMDY0NAotLS0gYS9MaWIvZGlmZmxpYi5weQorKysgYi9MaWIvZGlmZmxpYi5weQpAQCAtMjgsOSArMjgsOSBAQAogCiBfX2FsbF9fID0gWydnZXRfY2xvc2VfbWF0Y2hlcycsICduZGlmZicsICdyZXN0b3JlJywgJ1NlcXVlbmNlTWF0Y2hlcicsCiAgICAgICAgICAgICdEaWZmZXInLCdJU19DSEFSQUNURVJfSlVOSycsICdJU19MSU5FX0pVTksnLCAnY29udGV4dF9kaWZmJywKLSAgICAgICAgICAgJ3VuaWZpZWRfZGlmZicsICdIdG1sRGlmZicsICdNYXRjaCddCisgICAgICAgICAgICd1bmlmaWVkX2RpZmYnLCAnZGlmZl9ieXRlcycsICdIdG1sRGlmZicsICdNYXRjaCddCiAKLWltcG9ydCBoZWFwcQorZnJvbSBoZWFwcSBpbXBvcnQgbmxhcmdlc3QgYXMgX25sYXJnZXN0CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlIGFzIF9uYW1lZHR1cGxlCiAKIE1hdGNoID0gX25hbWVkdHVwbGUoJ01hdGNoJywgJ2EgYiBzaXplJykKQEAgLTcyOSw3ICs3MjksNyBAQAogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgocy5yYXRpbygpLCB4KSkKIAogICAgICMgTW92ZSB0aGUgYmVzdCBzY29yZXJzIHRvIGhlYWQgb2YgbGlzdAotICAgIHJlc3VsdCA9IGhlYXBxLm5sYXJnZXN0KG4sIHJlc3VsdCkKKyAgICByZXN1bHQgPSBfbmxhcmdlc3QobiwgcmVzdWx0KQogICAgICMgU3RyaXAgc2NvcmVzIGZvciB0aGUgYmVzdCBuIG1hdGNoZXMKICAgICByZXR1cm4gW3ggZm9yIHNjb3JlLCB4IGluIHJlc3VsdF0KIApAQCAtODUyLDEwICs4NTIsOSBAQAogICAgICAgICAgIGFuZCByZXR1cm4gdHJ1ZSBpZmYgdGhlIHN0cmluZyBpcyBqdW5rLiBUaGUgbW9kdWxlLWxldmVsIGZ1bmN0aW9uCiAgICAgICAgICAgYElTX0xJTkVfSlVOS2AgbWF5IGJlIHVzZWQgdG8gZmlsdGVyIG91dCBsaW5lcyB3aXRob3V0IHZpc2libGUKICAgICAgICAgICBjaGFyYWN0ZXJzLCBleGNlcHQgZm9yIGF0IG1vc3Qgb25lIHNwbGF0ICgnIycpLiAgSXQgaXMgcmVjb21tZW5kZWQKLSAgICAgICAgICB0byBsZWF2ZSBsaW5lanVuayBOb25lOyBhcyBvZiBQeXRob24gMi4zLCB0aGUgdW5kZXJseWluZwotICAgICAgICAgIFNlcXVlbmNlTWF0Y2hlciBjbGFzcyBoYXMgZ3Jvd24gYW4gYWRhcHRpdmUgbm90aW9uIG9mICJub2lzZSIgbGluZXMKLSAgICAgICAgICB0aGF0J3MgYmV0dGVyIHRoYW4gYW55IHN0YXRpYyBkZWZpbml0aW9uIHRoZSBhdXRob3IgaGFzIGV2ZXIgYmVlbgotICAgICAgICAgIGFibGUgdG8gY3JhZnQuCisgICAgICAgICAgdG8gbGVhdmUgbGluZWp1bmsgTm9uZTsgdGhlIHVuZGVybHlpbmcgU2VxdWVuY2VNYXRjaGVyIGNsYXNzIGhhcworICAgICAgICAgIGFuIGFkYXB0aXZlIG5vdGlvbiBvZiAibm9pc2UiIGxpbmVzIHRoYXQncyBiZXR0ZXIgdGhhbiBhbnkgc3RhdGljCisgICAgICAgICAgZGVmaW5pdGlvbiB0aGUgYXV0aG9yIGhhcyBldmVyIGJlZW4gYWJsZSB0byBjcmFmdC4KIAogICAgICAgICAtIGBjaGFyanVua2A6IEEgZnVuY3Rpb24gdGhhdCBzaG91bGQgYWNjZXB0IGEgc3RyaW5nIG9mIGxlbmd0aCAxLiBUaGUKICAgICAgICAgICBtb2R1bGUtbGV2ZWwgZnVuY3Rpb24gYElTX0NIQVJBQ1RFUl9KVU5LYCBtYXkgYmUgdXNlZCB0byBmaWx0ZXIgb3V0CkBAIC0xMTc1LDYgKzExNzQsNyBAQAogICAgICBmb3VyCiAgICAgIiIiCiAKKyAgICBfY2hlY2tfdHlwZXMoYSwgYiwgZnJvbWZpbGUsIHRvZmlsZSwgZnJvbWZpbGVkYXRlLCB0b2ZpbGVkYXRlLCBsaW5ldGVybSkKICAgICBzdGFydGVkID0gRmFsc2UKICAgICBmb3IgZ3JvdXAgaW4gU2VxdWVuY2VNYXRjaGVyKE5vbmUsYSxiKS5nZXRfZ3JvdXBlZF9vcGNvZGVzKG4pOgogICAgICAgICBpZiBub3Qgc3RhcnRlZDoKQEAgLTEyNjIsNiArMTI2Miw3IEBACiAgICAgICBmb3VyCiAgICAgIiIiCiAKKyAgICBfY2hlY2tfdHlwZXMoYSwgYiwgZnJvbWZpbGUsIHRvZmlsZSwgZnJvbWZpbGVkYXRlLCB0b2ZpbGVkYXRlLCBsaW5ldGVybSkKICAgICBwcmVmaXggPSBkaWN0KGluc2VydD0nKyAnLCBkZWxldGU9Jy0gJywgcmVwbGFjZT0nISAnLCBlcXVhbD0nICAnKQogICAgIHN0YXJ0ZWQgPSBGYWxzZQogICAgIGZvciBncm91cCBpbiBTZXF1ZW5jZU1hdGNoZXIoTm9uZSxhLGIpLmdldF9ncm91cGVkX29wY29kZXMobik6CkBAIC0xMjkzLDIyICsxMjk0LDcwIEBACiAgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGJbajE6ajJdOgogICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgcHJlZml4W3RhZ10gKyBsaW5lCiAKK2RlZiBfY2hlY2tfdHlwZXMoYSwgYiwgKmFyZ3MpOgorICAgICMgQ2hlY2tpbmcgdHlwZXMgaXMgd2VpcmQsIGJ1dCB0aGUgYWx0ZXJuYXRpdmUgaXMgZ2FyYmxlZCBvdXRwdXQgd2hlbgorICAgICMgc29tZW9uZSBwYXNzZXMgbWl4ZWQgYnl0ZXMgYW5kIHN0ciB0byB7dW5pZmllZCxjb250ZXh0fV9kaWZmKCkuIEUuZy4KKyAgICAjIHdpdGhvdXQgdGhpcyBjaGVjaywgcGFzc2luZyBmaWxlbmFtZXMgYXMgYnl0ZXMgcmVzdWx0cyBpbiBvdXRwdXQgbGlrZQorICAgICMgICAtLS0gYidvbGRmaWxlLnR4dCcKKyAgICAjICAgKysrIGInbmV3ZmlsZS50eHQnCisgICAgIyBiZWNhdXNlIG9mIGhvdyBzdHIuZm9ybWF0KCkgaW5jb3Jwb3JhdGVzIGJ5dGVzIG9iamVjdHMuCisgICAgaWYgYSBhbmQgbm90IGlzaW5zdGFuY2UoYVswXSwgc3RyKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdsaW5lcyB0byBjb21wYXJlIG11c3QgYmUgc3RyLCBub3QgJXMgKCVyKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGUoYVswXSkuX19uYW1lX18sIGFbMF0pKQorICAgIGlmIGIgYW5kIG5vdCBpc2luc3RhbmNlKGJbMF0sIHN0cik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbGluZXMgdG8gY29tcGFyZSBtdXN0IGJlIHN0ciwgbm90ICVzICglciknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlKGJbMF0pLl9fbmFtZV9fLCBiWzBdKSkKKyAgICBmb3IgYXJnIGluIGFyZ3M6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZywgc3RyKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignYWxsIGFyZ3VtZW50cyBtdXN0IGJlIHN0ciwgbm90OiAlcicgJSAoYXJnLCkpCisKK2RlZiBkaWZmX2J5dGVzKGRmdW5jLCBhLCBiLCBmcm9tZmlsZT1iJycsIHRvZmlsZT1iJycsCisgICAgICAgICAgICAgICBmcm9tZmlsZWRhdGU9YicnLCB0b2ZpbGVkYXRlPWInJywgbj0zLCBsaW5ldGVybT1iJ1xuJyk6CisgICAgciIiIgorICAgIENvbXBhcmUgYGFgIGFuZCBgYmAsIHR3byBzZXF1ZW5jZXMgb2YgbGluZXMgcmVwcmVzZW50ZWQgYXMgYnl0ZXMgcmF0aGVyCisgICAgdGhhbiBzdHIuIFRoaXMgaXMgYSB3cmFwcGVyIGZvciBgZGZ1bmNgLCB3aGljaCBpcyB0eXBpY2FsbHkgZWl0aGVyCisgICAgdW5pZmllZF9kaWZmKCkgb3IgY29udGV4dF9kaWZmKCkuIElucHV0cyBhcmUgbG9zc2xlc3NseSBjb252ZXJ0ZWQgdG8KKyAgICBzdHJpbmdzIHNvIHRoYXQgYGRmdW5jYCBvbmx5IGhhcyB0byB3b3JyeSBhYm91dCBzdHJpbmdzLCBhbmQgZW5jb2RlZAorICAgIGJhY2sgdG8gYnl0ZXMgb24gcmV0dXJuLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBjb21wYXJlIGZpbGVzIHdpdGgKKyAgICB1bmtub3duIG9yIGluY29uc2lzdGVudCBlbmNvZGluZy4gQWxsIG90aGVyIGlucHV0cyAoZXhjZXB0IGBuYCkgbXVzdCBiZQorICAgIGJ5dGVzIHJhdGhlciB0aGFuIHN0ci4KKyAgICAiIiIKKyAgICBkZWYgZGVjb2RlKHMpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gcy5kZWNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlcnI6CisgICAgICAgICAgICBtc2cgPSAoJ2FsbCBhcmd1bWVudHMgbXVzdCBiZSBieXRlcywgbm90ICVzICglciknICUKKyAgICAgICAgICAgICAgICAgICAodHlwZShzKS5fX25hbWVfXywgcykpCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnKSBmcm9tIGVycgorICAgIGEgPSBsaXN0KG1hcChkZWNvZGUsIGEpKQorICAgIGIgPSBsaXN0KG1hcChkZWNvZGUsIGIpKQorICAgIGZyb21maWxlID0gZGVjb2RlKGZyb21maWxlKQorICAgIHRvZmlsZSA9IGRlY29kZSh0b2ZpbGUpCisgICAgZnJvbWZpbGVkYXRlID0gZGVjb2RlKGZyb21maWxlZGF0ZSkKKyAgICB0b2ZpbGVkYXRlID0gZGVjb2RlKHRvZmlsZWRhdGUpCisgICAgbGluZXRlcm0gPSBkZWNvZGUobGluZXRlcm0pCisKKyAgICBsaW5lcyA9IGRmdW5jKGEsIGIsIGZyb21maWxlLCB0b2ZpbGUsIGZyb21maWxlZGF0ZSwgdG9maWxlZGF0ZSwgbiwgbGluZXRlcm0pCisgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgIHlpZWxkIGxpbmUuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorCiBkZWYgbmRpZmYoYSwgYiwgbGluZWp1bms9Tm9uZSwgY2hhcmp1bms9SVNfQ0hBUkFDVEVSX0pVTkspOgogICAgIHIiIiIKICAgICBDb21wYXJlIGBhYCBhbmQgYGJgIChsaXN0cyBvZiBzdHJpbmdzKTsgcmV0dXJuIGEgYERpZmZlcmAtc3R5bGUgZGVsdGEuCiAKICAgICBPcHRpb25hbCBrZXl3b3JkIHBhcmFtZXRlcnMgYGxpbmVqdW5rYCBhbmQgYGNoYXJqdW5rYCBhcmUgZm9yIGZpbHRlcgotICAgIGZ1bmN0aW9ucyAob3IgTm9uZSk6CisgICAgZnVuY3Rpb25zLCBvciBjYW4gYmUgTm9uZToKIAotICAgIC0gbGluZWp1bms6IEEgZnVuY3Rpb24gdGhhdCBzaG91bGQgYWNjZXB0IGEgc2luZ2xlIHN0cmluZyBhcmd1bWVudCwgYW5kCisgICAgLSBsaW5lanVuazogQSBmdW5jdGlvbiB0aGF0IHNob3VsZCBhY2NlcHQgYSBzaW5nbGUgc3RyaW5nIGFyZ3VtZW50IGFuZAogICAgICAgcmV0dXJuIHRydWUgaWZmIHRoZSBzdHJpbmcgaXMganVuay4gIFRoZSBkZWZhdWx0IGlzIE5vbmUsIGFuZCBpcwotICAgICAgcmVjb21tZW5kZWQ7IGFzIG9mIFB5dGhvbiAyLjMsIGFuIGFkYXB0aXZlIG5vdGlvbiBvZiAibm9pc2UiIGxpbmVzIGlzCi0gICAgICB1c2VkIHRoYXQgZG9lcyBhIGdvb2Qgam9iIG9uIGl0cyBvd24uCisgICAgICByZWNvbW1lbmRlZDsgdGhlIHVuZGVybHlpbmcgU2VxdWVuY2VNYXRjaGVyIGNsYXNzIGhhcyBhbiBhZGFwdGl2ZQorICAgICAgbm90aW9uIG9mICJub2lzZSIgbGluZXMuCiAKLSAgICAtIGNoYXJqdW5rOiBBIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGFjY2VwdCBhIHN0cmluZyBvZiBsZW5ndGggMS4gVGhlCi0gICAgICBkZWZhdWx0IGlzIG1vZHVsZS1sZXZlbCBmdW5jdGlvbiBJU19DSEFSQUNURVJfSlVOSywgd2hpY2ggZmlsdGVycyBvdXQKLSAgICAgIHdoaXRlc3BhY2UgY2hhcmFjdGVycyAoYSBibGFuayBvciB0YWI7IG5vdGU6IGJhZCBpZGVhIHRvIGluY2x1ZGUgbmV3bGluZQotICAgICAgaW4gdGhpcyEpLgorICAgIC0gY2hhcmp1bms6IEEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGEgY2hhcmFjdGVyIChzdHJpbmcgb2YgbGVuZ3RoCisgICAgICAxKSwgYW5kIHJldHVybnMgdHJ1ZSBpZmYgdGhlIGNoYXJhY3RlciBpcyBqdW5rLiBUaGUgZGVmYXVsdCBpcworICAgICAgdGhlIG1vZHVsZS1sZXZlbCBmdW5jdGlvbiBJU19DSEFSQUNURVJfSlVOSywgd2hpY2ggZmlsdGVycyBvdXQKKyAgICAgIHdoaXRlc3BhY2UgY2hhcmFjdGVycyAoYSBibGFuayBvciB0YWI7IG5vdGU6IGl0J3MgYSBiYWQgaWRlYSB0bworICAgICAgaW5jbHVkZSBuZXdsaW5lIGluIHRoaXMhKS4KIAogICAgIFRvb2xzL3NjcmlwdHMvbmRpZmYucHkgaXMgYSBjb21tYW5kLWxpbmUgZnJvbnQtZW5kIHRvIHRoaXMgZnVuY3Rpb24uCiAKQEAgLTE0MTAsNyArMTQ1OSw3IEBACiAgICAgICAgICAgICBjaGFuZ2VfcmUuc3ViKHJlY29yZF9zdWJfaW5mbyxtYXJrZXJzKQogICAgICAgICAgICAgIyBwcm9jZXNzIGVhY2ggdHVwbGUgaW5zZXJ0aW5nIG91ciBzcGVjaWFsIG1hcmtzIHRoYXQgd29uJ3QgYmUKICAgICAgICAgICAgICMgbm90aWNlZCBieSBhbiB4bWwvaHRtbCBlc2NhcGVyLgotICAgICAgICAgICAgZm9yIGtleSwoYmVnaW4sZW5kKSBpbiBzdWJfaW5mb1s6Oi0xXToKKyAgICAgICAgICAgIGZvciBrZXksKGJlZ2luLGVuZCkgaW4gcmV2ZXJzZWQoc3ViX2luZm8pOgogICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0WzA6YmVnaW5dKydcMCcra2V5K3RleHRbYmVnaW46ZW5kXSsnXDEnK3RleHRbZW5kOl0KICAgICAgICAgICAgIHRleHQgPSB0ZXh0WzI6XQogICAgICAgICAjIEhhbmRsZSBjYXNlIG9mIGFkZC9kZWxldGUgZW50aXJlIGxpbmUKQEAgLTE0NDgsMTAgKzE0OTcsNyBAQAogICAgICAgICAgICAgIyBhcmUgYSBjb25jYXRlbmF0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgZWFjaCBvZiB0aGUgNCBsaW5lcwogICAgICAgICAgICAgIyBzbyB3ZSBjYW4gZG8gc29tZSB2ZXJ5IHJlYWRhYmxlIGNvbXBhcmlzb25zLgogICAgICAgICAgICAgd2hpbGUgbGVuKGxpbmVzKSA8IDQ6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobmV4dChkaWZmX2xpbmVzX2l0ZXJhdG9yKSkKLSAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdYJykKKyAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobmV4dChkaWZmX2xpbmVzX2l0ZXJhdG9yLCAnWCcpKQogICAgICAgICAgICAgcyA9ICcnLmpvaW4oW2xpbmVbMF0gZm9yIGxpbmUgaW4gbGluZXNdKQogICAgICAgICAgICAgaWYgcy5zdGFydHN3aXRoKCdYJyk6CiAgICAgICAgICAgICAgICAgIyBXaGVuIG5vIG1vcmUgbGluZXMsIHB1bXAgb3V0IGFueSByZW1haW5pbmcgYmxhbmsgbGluZXMgc28gdGhlCkBAIC0xNTE0LDcgKzE1NjAsNyBAQAogICAgICAgICAgICAgICAgIG51bV9ibGFua3NfdG9feWllbGQgLT0gMQogICAgICAgICAgICAgICAgIHlpZWxkICgnJywnXG4nKSxOb25lLFRydWUKICAgICAgICAgICAgIGlmIHMuc3RhcnRzd2l0aCgnWCcpOgotICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgeWllbGQgZnJvbV9saW5lLHRvX2xpbmUsVHJ1ZQogCkBAIC0xNTM2LDcgKzE1ODIsMTAgQEAKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICMgQ29sbGVjdGluZyBsaW5lcyBvZiB0ZXh0IHVudGlsIHdlIGhhdmUgYSBmcm9tL3RvIHBhaXIKICAgICAgICAgICAgIHdoaWxlIChsZW4oZnJvbWxpbmVzKT09MCBvciBsZW4odG9saW5lcyk9PTApOgotICAgICAgICAgICAgICAgIGZyb21fbGluZSwgdG9fbGluZSwgZm91bmRfZGlmZiA9IG5leHQobGluZV9pdGVyYXRvcikKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGZyb21fbGluZSwgdG9fbGluZSwgZm91bmRfZGlmZiA9IG5leHQobGluZV9pdGVyYXRvcikKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgaWYgZnJvbV9saW5lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBmcm9tbGluZXMuYXBwZW5kKChmcm9tX2xpbmUsZm91bmRfZGlmZikpCiAgICAgICAgICAgICAgICAgaWYgdG9fbGluZSBpcyBub3QgTm9uZToKQEAgLTE1NTAsOCArMTU5OSw3IEBACiAgICAgIyB0aGVtIHVwIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZWxzZSB3aXRoIHRoZW0uCiAgICAgbGluZV9wYWlyX2l0ZXJhdG9yID0gX2xpbmVfcGFpcl9pdGVyYXRvcigpCiAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgeWllbGQgbmV4dChsaW5lX3BhaXJfaXRlcmF0b3IpCisgICAgICAgIHlpZWxkIGZyb20gbGluZV9wYWlyX2l0ZXJhdG9yCiAgICAgIyBIYW5kbGUgY2FzZSB3aGVyZSB1c2VyIHdhbnRzIGNvbnRleHQgZGlmZmVyZW5jaW5nLiAgV2UgbXVzdCBkbyBzb21lCiAgICAgIyBzdG9yYWdlIG9mIGxpbmVzIHVudGlsIHdlIGtub3cgZm9yIHN1cmUgdGhhdCB0aGV5IGFyZSB0byBiZSB5aWVsZGVkLgogICAgIGVsc2U6CkBAIC0xNTY0LDcgKzE2MTIsMTAgQEAKICAgICAgICAgICAgIGluZGV4LCBjb250ZXh0TGluZXMgPSAwLCBbTm9uZV0qKGNvbnRleHQpCiAgICAgICAgICAgICBmb3VuZF9kaWZmID0gRmFsc2UKICAgICAgICAgICAgIHdoaWxlKGZvdW5kX2RpZmYgaXMgRmFsc2UpOgotICAgICAgICAgICAgICAgIGZyb21fbGluZSwgdG9fbGluZSwgZm91bmRfZGlmZiA9IG5leHQobGluZV9wYWlyX2l0ZXJhdG9yKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZnJvbV9saW5lLCB0b19saW5lLCBmb3VuZF9kaWZmID0gbmV4dChsaW5lX3BhaXJfaXRlcmF0b3IpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgIGkgPSBpbmRleCAlIGNvbnRleHQKICAgICAgICAgICAgICAgICBjb250ZXh0TGluZXNbaV0gPSAoZnJvbV9saW5lLCB0b19saW5lLCBmb3VuZF9kaWZmKQogICAgICAgICAgICAgICAgIGluZGV4ICs9IDEKQEAgLTE2MDEsNyArMTY1Miw3IEBACiAKIDxoZWFkPgogICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIKLSAgICAgICAgICBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KKyAgICAgICAgICBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9JShjaGFyc2V0KXMiIC8+CiAgICAgPHRpdGxlPjwvdGl0bGU+CiAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4lKHN0eWxlcylzCiAgICAgPC9zdHlsZT4KQEAgLTE2NzksNyArMTczMCw3IEBACiAgICAgICAgIHRhYnNpemUgLS0gdGFiIHN0b3Agc3BhY2luZywgZGVmYXVsdHMgdG8gOC4KICAgICAgICAgd3JhcGNvbHVtbiAtLSBjb2x1bW4gbnVtYmVyIHdoZXJlIGxpbmVzIGFyZSBicm9rZW4gYW5kIHdyYXBwZWQsCiAgICAgICAgICAgICBkZWZhdWx0cyB0byBOb25lIHdoZXJlIGxpbmVzIGFyZSBub3Qgd3JhcHBlZC4KLSAgICAgICAgbGluZWp1bmssY2hhcmp1bmsgLS0ga2V5d29yZCBhcmd1bWVudHMgcGFzc2VkIGludG8gbmRpZmYoKSAodXNlZCB0byBieQorICAgICAgICBsaW5lanVuayxjaGFyanVuayAtLSBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgaW50byBuZGlmZigpICh1c2VkIGJ5CiAgICAgICAgICAgICBIdG1sRGlmZigpIHRvIGdlbmVyYXRlIHRoZSBzaWRlIGJ5IHNpZGUgSFRNTCBkaWZmZXJlbmNlcykuICBTZWUKICAgICAgICAgICAgIG5kaWZmKCkgZG9jdW1lbnRhdGlvbiBmb3IgYXJndW1lbnQgZGVmYXVsdCB2YWx1ZXMgYW5kIGRlc2NyaXB0aW9ucy4KICAgICAgICAgIiIiCkBAIC0xNjg4LDggKzE3MzksOCBAQAogICAgICAgICBzZWxmLl9saW5lanVuayA9IGxpbmVqdW5rCiAgICAgICAgIHNlbGYuX2NoYXJqdW5rID0gY2hhcmp1bmsKIAotICAgIGRlZiBtYWtlX2ZpbGUoc2VsZixmcm9tbGluZXMsdG9saW5lcyxmcm9tZGVzYz0nJyx0b2Rlc2M9JycsY29udGV4dD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgIG51bWxpbmVzPTUpOgorICAgIGRlZiBtYWtlX2ZpbGUoc2VsZiwgZnJvbWxpbmVzLCB0b2xpbmVzLCBmcm9tZGVzYz0nJywgdG9kZXNjPScnLAorICAgICAgICAgICAgICAgICAgY29udGV4dD1GYWxzZSwgbnVtbGluZXM9NSwgKiwgY2hhcnNldD0ndXRmLTgnKToKICAgICAgICAgIiIiUmV0dXJucyBIVE1MIGZpbGUgb2Ygc2lkZSBieSBzaWRlIGNvbXBhcmlzb24gd2l0aCBjaGFuZ2UgaGlnaGxpZ2h0cwogCiAgICAgICAgIEFyZ3VtZW50czoKQEAgLTE3MDQsMTMgKzE3NTUsMTYgQEAKICAgICAgICAgICAgIFdoZW4gY29udGV4dCBpcyBGYWxzZSwgY29udHJvbHMgdGhlIG51bWJlciBvZiBsaW5lcyB0byBwbGFjZQogICAgICAgICAgICAgdGhlICJuZXh0IiBsaW5rIGFuY2hvcnMgYmVmb3JlIHRoZSBuZXh0IGNoYW5nZSAoc28gY2xpY2sgb2YKICAgICAgICAgICAgICJuZXh0IiBsaW5rIGp1bXBzIHRvIGp1c3QgYmVmb3JlIHRoZSBjaGFuZ2UpLgorICAgICAgICBjaGFyc2V0IC0tIGNoYXJzZXQgb2YgdGhlIEhUTUwgZG9jdW1lbnQKICAgICAgICAgIiIiCiAKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVfdGVtcGxhdGUgJSBkaWN0KAotICAgICAgICAgICAgc3R5bGVzID0gc2VsZi5fc3R5bGVzLAotICAgICAgICAgICAgbGVnZW5kID0gc2VsZi5fbGVnZW5kLAotICAgICAgICAgICAgdGFibGUgPSBzZWxmLm1ha2VfdGFibGUoZnJvbWxpbmVzLHRvbGluZXMsZnJvbWRlc2MsdG9kZXNjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dD1jb250ZXh0LG51bWxpbmVzPW51bWxpbmVzKSkKKyAgICAgICAgcmV0dXJuIChzZWxmLl9maWxlX3RlbXBsYXRlICUgZGljdCgKKyAgICAgICAgICAgIHN0eWxlcz1zZWxmLl9zdHlsZXMsCisgICAgICAgICAgICBsZWdlbmQ9c2VsZi5fbGVnZW5kLAorICAgICAgICAgICAgdGFibGU9c2VsZi5tYWtlX3RhYmxlKGZyb21saW5lcywgdG9saW5lcywgZnJvbWRlc2MsIHRvZGVzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0PWNvbnRleHQsIG51bWxpbmVzPW51bWxpbmVzKSwKKyAgICAgICAgICAgIGNoYXJzZXQ9Y2hhcnNldAorICAgICAgICApKS5lbmNvZGUoY2hhcnNldCwgJ3htbGNoYXJyZWZyZXBsYWNlJykuZGVjb2RlKGNoYXJzZXQpCiAKICAgICBkZWYgX3RhYl9uZXdsaW5lX3JlcGxhY2Uoc2VsZixmcm9tbGluZXMsdG9saW5lcyk6CiAgICAgICAgICIiIlJldHVybnMgZnJvbS90byBsaW5lIGxpc3RzIHdpdGggdGFicyBleHBhbmRlZCBhbmQgbmV3bGluZXMgcmVtb3ZlZC4KZGlmZiAtLWdpdCBhL0xpYi9kaXMucHkgYi9MaWIvZGlzLnB5CmluZGV4IDgxY2JlN2YuLmFmMzdjZGYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXMucHkKKysrIGIvTGliL2Rpcy5weQpAQCAtMjksNyArMjksNyBAQAogICAgIHJldHVybiBjCiAKIGRlZiBkaXMoeD1Ob25lLCAqLCBmaWxlPU5vbmUpOgotICAgICIiIkRpc2Fzc2VtYmxlIGNsYXNzZXMsIG1ldGhvZHMsIGZ1bmN0aW9ucywgb3IgY29kZS4KKyAgICAiIiJEaXNhc3NlbWJsZSBjbGFzc2VzLCBtZXRob2RzLCBmdW5jdGlvbnMsIGdlbmVyYXRvcnMsIG9yIGNvZGUuCiAKICAgICBXaXRoIG5vIGFyZ3VtZW50LCBkaXNhc3NlbWJsZSB0aGUgbGFzdCB0cmFjZWJhY2suCiAKQEAgLTQxLDYgKzQxLDggQEAKICAgICAgICAgeCA9IHguX19mdW5jX18KICAgICBpZiBoYXNhdHRyKHgsICdfX2NvZGVfXycpOiAgIyBGdW5jdGlvbgogICAgICAgICB4ID0geC5fX2NvZGVfXworICAgIGlmIGhhc2F0dHIoeCwgJ2dpX2NvZGUnKTogICMgR2VuZXJhdG9yCisgICAgICAgIHggPSB4LmdpX2NvZGUKICAgICBpZiBoYXNhdHRyKHgsICdfX2RpY3RfXycpOiAgIyBDbGFzcyBvciBtb2R1bGUKICAgICAgICAgaXRlbXMgPSBzb3J0ZWQoeC5fX2RpY3RfXy5pdGVtcygpKQogICAgICAgICBmb3IgbmFtZSwgeDEgaW4gaXRlbXM6CkBAIC04Miw2ICs4NCw4IEBACiAgICAgMTY6ICJORVNURUQiLAogICAgIDMyOiAiR0VORVJBVE9SIiwKICAgICA2NDogIk5PRlJFRSIsCisgICAxMjg6ICJDT1JPVVRJTkUiLAorICAgMjU2OiAiSVRFUkFCTEVfQ09ST1VUSU5FIiwKIH0KIAogZGVmIHByZXR0eV9mbGFncyhmbGFncyk6CkBAIC05OSwxMSArMTAzLDEzIEBACiAgICAgcmV0dXJuICIsICIuam9pbihuYW1lcykKIAogZGVmIF9nZXRfY29kZV9vYmplY3QoeCk6Ci0gICAgIiIiSGVscGVyIHRvIGhhbmRsZSBtZXRob2RzLCBmdW5jdGlvbnMsIHN0cmluZ3MgYW5kIHJhdyBjb2RlIG9iamVjdHMiIiIKKyAgICAiIiJIZWxwZXIgdG8gaGFuZGxlIG1ldGhvZHMsIGZ1bmN0aW9ucywgZ2VuZXJhdG9ycywgc3RyaW5ncyBhbmQgcmF3IGNvZGUgb2JqZWN0cyIiIgogICAgIGlmIGhhc2F0dHIoeCwgJ19fZnVuY19fJyk6ICMgTWV0aG9kCiAgICAgICAgIHggPSB4Ll9fZnVuY19fCiAgICAgaWYgaGFzYXR0cih4LCAnX19jb2RlX18nKTogIyBGdW5jdGlvbgogICAgICAgICB4ID0geC5fX2NvZGVfXworICAgIGlmIGhhc2F0dHIoeCwgJ2dpX2NvZGUnKTogICMgR2VuZXJhdG9yCisgICAgICAgIHggPSB4LmdpX2NvZGUKICAgICBpZiBpc2luc3RhbmNlKHgsIHN0cik6ICAgICAjIFNvdXJjZSBjb2RlCiAgICAgICAgIHggPSBfdHJ5X2NvbXBpbGUoeCwgIjxkaXNhc3NlbWJseT4iKQogICAgIGlmIGhhc2F0dHIoeCwgJ2NvX2NvZGUnKTogICMgQ29kZSBvYmplY3QKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvX21zdmNjb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvX21zdmNjb21waWxlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGE5ZmZkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2Rpc3R1dGlscy9fbXN2Y2NvbXBpbGVyLnB5CkBAIC0wLDAgKzEsNTQ2IEBACisiIiJkaXN0dXRpbHMuX21zdmNjb21waWxlcgorCitDb250YWlucyBNU1ZDQ29tcGlsZXIsIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBhYnN0cmFjdCBDQ29tcGlsZXIgY2xhc3MKK2ZvciBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAyMDE1LgorCitUaGUgbW9kdWxlIGlzIGNvbXBhdGlibGUgd2l0aCBWUyAyMDE1IGFuZCBsYXRlci4gWW91IGNhbiBmaW5kIGxlZ2FjeSBzdXBwb3J0Citmb3Igb2xkZXIgdmVyc2lvbnMgaW4gZGlzdHV0aWxzLm1zdmM5Y29tcGlsZXIgYW5kIGRpc3R1dGlscy5tc3ZjY29tcGlsZXIuCisiIiIKKworIyBXcml0dGVuIGJ5IFBlcnJ5IFN0b2xsCisjIGhhY2tlZCBieSBSb2JpbiBCZWNrZXIgYW5kIFRob21hcyBIZWxsZXIgdG8gZG8gYSBiZXR0ZXIgam9iIG9mCisjICAgZmluZGluZyBEZXZTdHVkaW8gKHRocm91Z2ggdGhlIHJlZ2lzdHJ5KQorIyBwb3J0ZWQgdG8gVlMgMjAwNSBhbmQgVlMgMjAwOCBieSBDaHJpc3RpYW4gSGVpbWVzCisjIHBvcnRlZCB0byBWUyAyMDE1IGJ5IFN0ZXZlIERvd2VyCisKK2ltcG9ydCBvcworaW1wb3J0IHNodXRpbAoraW1wb3J0IHN0YXQKK2ltcG9ydCBzdWJwcm9jZXNzCisKK2Zyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzRXhlY0Vycm9yLCBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBpbGVFcnJvciwgTGliRXJyb3IsIExpbmtFcnJvcgorZnJvbSBkaXN0dXRpbHMuY2NvbXBpbGVyIGltcG9ydCBDQ29tcGlsZXIsIGdlbl9saWJfb3B0aW9ucworZnJvbSBkaXN0dXRpbHMgaW1wb3J0IGxvZworZnJvbSBkaXN0dXRpbHMudXRpbCBpbXBvcnQgZ2V0X3BsYXRmb3JtCisKK2ltcG9ydCB3aW5yZWcKK2Zyb20gaXRlcnRvb2xzIGltcG9ydCBjb3VudAorCitkZWYgX2ZpbmRfdmN2YXJzYWxsKHBsYXRfc3BlYyk6CisgICAgdHJ5OgorICAgICAgICBrZXkgPSB3aW5yZWcuT3BlbktleUV4KAorICAgICAgICAgICAgd2lucmVnLkhLRVlfTE9DQUxfTUFDSElORSwKKyAgICAgICAgICAgIHIiU29mdHdhcmVcTWljcm9zb2Z0XFZpc3VhbFN0dWRpb1xTeFNcVkM3IiwKKyAgICAgICAgICAgIGFjY2Vzcz13aW5yZWcuS0VZX1JFQUQgfCB3aW5yZWcuS0VZX1dPVzY0XzMyS0VZCisgICAgICAgICkKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgbG9nLmRlYnVnKCJWaXN1YWwgQysrIGlzIG5vdCByZWdpc3RlcmVkIikKKyAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKKworICAgIHdpdGgga2V5OgorICAgICAgICBiZXN0X3ZlcnNpb24gPSAwCisgICAgICAgIGJlc3RfZGlyID0gTm9uZQorICAgICAgICBmb3IgaSBpbiBjb3VudCgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHYsIHZjX2RpciwgdnQgPSB3aW5yZWcuRW51bVZhbHVlKGtleSwgaSkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiB2IGFuZCB2dCA9PSB3aW5yZWcuUkVHX1NaIGFuZCBvcy5wYXRoLmlzZGlyKHZjX2Rpcik6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gaW50KGZsb2F0KHYpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiB2ZXJzaW9uID49IDE0IGFuZCB2ZXJzaW9uID4gYmVzdF92ZXJzaW9uOgorICAgICAgICAgICAgICAgICAgICBiZXN0X3ZlcnNpb24sIGJlc3RfZGlyID0gdmVyc2lvbiwgdmNfZGlyCisgICAgICAgIGlmIG5vdCBiZXN0X3ZlcnNpb246CisgICAgICAgICAgICBsb2cuZGVidWcoIk5vIHN1aXRhYmxlIFZpc3VhbCBDKysgdmVyc2lvbiBmb3VuZCIpCisgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZQorCisgICAgICAgIHZjdmFyc2FsbCA9IG9zLnBhdGguam9pbihiZXN0X2RpciwgInZjdmFyc2FsbC5iYXQiKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUodmN2YXJzYWxsKToKKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiJXMgY2Fubm90IGJlIGZvdW5kIiwgdmN2YXJzYWxsKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKKworICAgICAgICB2Y3J1bnRpbWUgPSBOb25lCisgICAgICAgIHZjcnVudGltZV9zcGVjID0gX1ZDVkFSU19QTEFUX1RPX1ZDUlVOVElNRV9SRURJU1QuZ2V0KHBsYXRfc3BlYykKKyAgICAgICAgaWYgdmNydW50aW1lX3NwZWM6CisgICAgICAgICAgICB2Y3J1bnRpbWUgPSBvcy5wYXRoLmpvaW4oYmVzdF9kaXIsCisgICAgICAgICAgICAgICAgdmNydW50aW1lX3NwZWMuZm9ybWF0KGJlc3RfdmVyc2lvbikpCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUodmNydW50aW1lKToKKyAgICAgICAgICAgICAgICBsb2cuZGVidWcoIiVzIGNhbm5vdCBiZSBmb3VuZCIsIHZjcnVudGltZSkKKyAgICAgICAgICAgICAgICB2Y3J1bnRpbWUgPSBOb25lCisKKyAgICAgICAgcmV0dXJuIHZjdmFyc2FsbCwgdmNydW50aW1lCisKK2RlZiBfZ2V0X3ZjX2VudihwbGF0X3NwZWMpOgorICAgIGlmIG9zLmdldGVudigiRElTVFVUSUxTX1VTRV9TREsiKToKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGtleS5sb3dlcigpOiB2YWx1ZQorICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gb3MuZW52aXJvbi5pdGVtcygpCisgICAgICAgIH0KKworICAgIHZjdmFyc2FsbCwgdmNydW50aW1lID0gX2ZpbmRfdmN2YXJzYWxsKHBsYXRfc3BlYykKKyAgICBpZiBub3QgdmN2YXJzYWxsOgorICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKCJVbmFibGUgdG8gZmluZCB2Y3ZhcnNhbGwuYmF0IikKKworICAgIHRyeToKKyAgICAgICAgb3V0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoCisgICAgICAgICAgICAnInt9IiB7fSAmJiBzZXQnLmZvcm1hdCh2Y3ZhcnNhbGwsIHBsYXRfc3BlYyksCisgICAgICAgICAgICBzaGVsbD1UcnVlLAorICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULAorICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsCisgICAgICAgICkKKyAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXhjOgorICAgICAgICBsb2cuZXJyb3IoZXhjLm91dHB1dCkKKyAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcigiRXJyb3IgZXhlY3V0aW5nIHt9IgorICAgICAgICAgICAgICAgIC5mb3JtYXQoZXhjLmNtZCkpCisKKyAgICBlbnYgPSB7CisgICAgICAgIGtleS5sb3dlcigpOiB2YWx1ZQorICAgICAgICBmb3Iga2V5LCBfLCB2YWx1ZSBpbgorICAgICAgICAobGluZS5wYXJ0aXRpb24oJz0nKSBmb3IgbGluZSBpbiBvdXQuc3BsaXRsaW5lcygpKQorICAgICAgICBpZiBrZXkgYW5kIHZhbHVlCisgICAgfQorCisgICAgaWYgdmNydW50aW1lOgorICAgICAgICBlbnZbJ3B5X3ZjcnVudGltZV9yZWRpc3QnXSA9IHZjcnVudGltZQorICAgIHJldHVybiBlbnYKKworZGVmIF9maW5kX2V4ZShleGUsIHBhdGhzPU5vbmUpOgorICAgICIiIlJldHVybiBwYXRoIHRvIGFuIE1TVkMgZXhlY3V0YWJsZSBwcm9ncmFtLgorCisgICAgVHJpZXMgdG8gZmluZCB0aGUgcHJvZ3JhbSBpbiBzZXZlcmFsIHBsYWNlczogZmlyc3QsIG9uZSBvZiB0aGUKKyAgICBNU1ZDIHByb2dyYW0gc2VhcmNoIHBhdGhzIGZyb20gdGhlIHJlZ2lzdHJ5OyBuZXh0LCB0aGUgZGlyZWN0b3JpZXMKKyAgICBpbiB0aGUgUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZS4gIElmIGFueSBvZiB0aG9zZSB3b3JrLCByZXR1cm4gYW4KKyAgICBhYnNvbHV0ZSBwYXRoIHRoYXQgaXMga25vd24gdG8gZXhpc3QuICBJZiBub25lIG9mIHRoZW0gd29yaywganVzdAorICAgIHJldHVybiB0aGUgb3JpZ2luYWwgcHJvZ3JhbSBuYW1lLCAnZXhlJy4KKyAgICAiIiIKKyAgICBpZiBub3QgcGF0aHM6CisgICAgICAgIHBhdGhzID0gb3MuZ2V0ZW52KCdwYXRoJykuc3BsaXQob3MucGF0aHNlcCkKKyAgICBmb3IgcCBpbiBwYXRoczoKKyAgICAgICAgZm4gPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5hYnNwYXRoKHApLCBleGUpCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZuKToKKyAgICAgICAgICAgIHJldHVybiBmbgorICAgIHJldHVybiBleGUKKworIyBBIG1hcCBrZXllZCBieSBnZXRfcGxhdGZvcm0oKSByZXR1cm4gdmFsdWVzIHRvIHZhbHVlcyBhY2NlcHRlZCBieQorIyAndmN2YXJzYWxsLmJhdCcuICBOb3RlIGEgY3Jvc3MtY29tcGlsZSBtYXkgY29tYmluZSB0aGVzZSAoZWcsICd4ODZfYW1kNjQnIGlzCisjIHRoZSBwYXJhbSB0byBjcm9zcy1jb21waWxlIG9uIHg4NiB0YXJnZXR0aW5nIGFtZDY0LikKK1BMQVRfVE9fVkNWQVJTID0geworICAgICd3aW4zMicgOiAneDg2JywKKyAgICAnd2luLWFtZDY0JyA6ICdhbWQ2NCcsCit9CisKKyMgQSBtYXAga2V5ZWQgYnkgZ2V0X3BsYXRmb3JtKCkgcmV0dXJuIHZhbHVlcyB0byB0aGUgZmlsZSB1bmRlcgorIyB0aGUgVkMgaW5zdGFsbCBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgdmNydW50aW1lIHJlZGlzdHJpYnV0YWJsZS4KK19WQ1ZBUlNfUExBVF9UT19WQ1JVTlRJTUVfUkVESVNUID0geworICAgICd4ODYnIDogJ3JlZGlzdFxceDg2XFxNaWNyb3NvZnQuVkN7MH0wLkNSVFxcdmNydW50aW1lezB9MC5kbGwnLAorICAgICdhbWQ2NCcgOiAncmVkaXN0XFx4NjRcXE1pY3Jvc29mdC5WQ3swfTAuQ1JUXFx2Y3J1bnRpbWV7MH0wLmRsbCcsCisgICAgJ3g4Nl9hbWQ2NCcgOiAncmVkaXN0XFx4NjRcXE1pY3Jvc29mdC5WQ3swfTAuQ1JUXFx2Y3J1bnRpbWV7MH0wLmRsbCcsCit9CisKKyMgQSBzZXQgY29udGFpbmluZyB0aGUgRExMcyB0aGF0IGFyZSBndWFyYW50ZWVkIHRvIGJlIGF2YWlsYWJsZSBmb3IKKyMgYWxsIG1pY3JvIHZlcnNpb25zIG9mIHRoaXMgUHl0aG9uIHZlcnNpb24uIEtub3duIGV4dGVuc2lvbgorIyBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgbm90IGluIHRoaXMgc2V0IHdpbGwgYmUgY29waWVkIHRvIHRoZSBvdXRwdXQKKyMgcGF0aC4KK19CVU5ETEVEX0RMTFMgPSBmcm96ZW5zZXQoWyd2Y3J1bnRpbWUxNDAuZGxsJ10pCisKK2NsYXNzIE1TVkNDb21waWxlcihDQ29tcGlsZXIpIDoKKyAgICAiIiJDb25jcmV0ZSBjbGFzcyB0aGF0IGltcGxlbWVudHMgYW4gaW50ZXJmYWNlIHRvIE1pY3Jvc29mdCBWaXN1YWwgQysrLAorICAgICAgIGFzIGRlZmluZWQgYnkgdGhlIENDb21waWxlciBhYnN0cmFjdCBjbGFzcy4iIiIKKworICAgIGNvbXBpbGVyX3R5cGUgPSAnbXN2YycKKworICAgICMgSnVzdCBzZXQgdGhpcyBzbyBDQ29tcGlsZXIncyBjb25zdHJ1Y3RvciBkb2Vzbid0IGJhcmYuICBXZSBjdXJyZW50bHkKKyAgICAjIGRvbid0IHVzZSB0aGUgJ3NldF9leGVjdXRhYmxlcygpJyBidXJlYXVjcmFjeSBwcm92aWRlZCBieSBDQ29tcGlsZXIsCisgICAgIyBhcyBpdCByZWFsbHkgaXNuJ3QgbmVjZXNzYXJ5IGZvciB0aGlzIHNvcnQgb2Ygc2luZ2xlLWNvbXBpbGVyIGNsYXNzLgorICAgICMgV291bGQgYmUgbmljZSB0byBoYXZlIGEgY29uc2lzdGVudCBpbnRlcmZhY2Ugd2l0aCBVbml4Q0NvbXBpbGVyLAorICAgICMgdGhvdWdoLCBzbyBpdCdzIHdvcnRoIHRoaW5raW5nIGFib3V0LgorICAgIGV4ZWN1dGFibGVzID0ge30KKworICAgICMgUHJpdmF0ZSBjbGFzcyBkYXRhIChuZWVkIHRvIGRpc3Rpbmd1aXNoIEMgZnJvbSBDKysgc291cmNlIGZvciBjb21waWxlcikKKyAgICBfY19leHRlbnNpb25zID0gWycuYyddCisgICAgX2NwcF9leHRlbnNpb25zID0gWycuY2MnLCAnLmNwcCcsICcuY3h4J10KKyAgICBfcmNfZXh0ZW5zaW9ucyA9IFsnLnJjJ10KKyAgICBfbWNfZXh0ZW5zaW9ucyA9IFsnLm1jJ10KKworICAgICMgTmVlZGVkIGZvciB0aGUgZmlsZW5hbWUgZ2VuZXJhdGlvbiBtZXRob2RzIHByb3ZpZGVkIGJ5IHRoZQorICAgICMgYmFzZSBjbGFzcywgQ0NvbXBpbGVyLgorICAgIHNyY19leHRlbnNpb25zID0gKF9jX2V4dGVuc2lvbnMgKyBfY3BwX2V4dGVuc2lvbnMgKworICAgICAgICAgICAgICAgICAgICAgIF9yY19leHRlbnNpb25zICsgX21jX2V4dGVuc2lvbnMpCisgICAgcmVzX2V4dGVuc2lvbiA9ICcucmVzJworICAgIG9ial9leHRlbnNpb24gPSAnLm9iaicKKyAgICBzdGF0aWNfbGliX2V4dGVuc2lvbiA9ICcubGliJworICAgIHNoYXJlZF9saWJfZXh0ZW5zaW9uID0gJy5kbGwnCisgICAgc3RhdGljX2xpYl9mb3JtYXQgPSBzaGFyZWRfbGliX2Zvcm1hdCA9ICclcyVzJworICAgIGV4ZV9leHRlbnNpb24gPSAnLmV4ZScKKworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZlcmJvc2U9MCwgZHJ5X3J1bj0wLCBmb3JjZT0wKToKKyAgICAgICAgQ0NvbXBpbGVyLl9faW5pdF9fIChzZWxmLCB2ZXJib3NlLCBkcnlfcnVuLCBmb3JjZSkKKyAgICAgICAgIyB0YXJnZXQgcGxhdGZvcm0gKC5wbGF0X25hbWUgaXMgY29uc2lzdGVudCB3aXRoICdiZGlzdCcpCisgICAgICAgIHNlbGYucGxhdF9uYW1lID0gTm9uZQorICAgICAgICBzZWxmLmluaXRpYWxpemVkID0gRmFsc2UKKworICAgIGRlZiBpbml0aWFsaXplKHNlbGYsIHBsYXRfbmFtZT1Ob25lKToKKyAgICAgICAgIyBtdWx0aS1pbml0IG1lYW5zIHdlIHdvdWxkIG5lZWQgdG8gY2hlY2sgcGxhdGZvcm0gc2FtZSBlYWNoIHRpbWUuLi4KKyAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLmluaXRpYWxpemVkLCAiZG9uJ3QgaW5pdCBtdWx0aXBsZSB0aW1lcyIKKyAgICAgICAgaWYgcGxhdF9uYW1lIGlzIE5vbmU6CisgICAgICAgICAgICBwbGF0X25hbWUgPSBnZXRfcGxhdGZvcm0oKQorICAgICAgICAjIHNhbml0eSBjaGVjayBmb3IgcGxhdGZvcm1zIHRvIHByZXZlbnQgb2JzY3VyZSBlcnJvcnMgbGF0ZXIuCisgICAgICAgIGlmIHBsYXRfbmFtZSBub3QgaW4gUExBVF9UT19WQ1ZBUlM6CisgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKCItLXBsYXQtbmFtZSBtdXN0IGJlIG9uZSBvZiB7fSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdCh0dXBsZShQTEFUX1RPX1ZDVkFSUykpKQorCisgICAgICAgICMgT24geDg2LCAndmN2YXJzYWxsLmJhdCBhbWQ2NCcgY3JlYXRlcyBhbiBlbnYgdGhhdCBkb2Vzbid0IHdvcms7CisgICAgICAgICMgdG8gY3Jvc3MgY29tcGlsZSwgeW91IHVzZSAneDg2X2FtZDY0Jy4KKyAgICAgICAgIyBPbiBBTUQ2NCwgJ3ZjdmFyc2FsbC5iYXQgYW1kNjQnIGlzIGEgbmF0aXZlIGJ1aWxkIGVudjsgdG8gY3Jvc3MKKyAgICAgICAgIyBjb21waWxlIHVzZSAneDg2JyAoaWUsIGl0IHJ1bnMgdGhlIHg4NiBjb21waWxlciBkaXJlY3RseSkKKyAgICAgICAgaWYgcGxhdF9uYW1lID09IGdldF9wbGF0Zm9ybSgpIG9yIHBsYXRfbmFtZSA9PSAnd2luMzInOgorICAgICAgICAgICAgIyBuYXRpdmUgYnVpbGQgb3IgY3Jvc3MtY29tcGlsZSB0byB3aW4zMgorICAgICAgICAgICAgcGxhdF9zcGVjID0gUExBVF9UT19WQ1ZBUlNbcGxhdF9uYW1lXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBjcm9zcyBjb21waWxlIGZyb20gd2luMzIgLT4gc29tZSA2NGJpdAorICAgICAgICAgICAgcGxhdF9zcGVjID0gJ3t9X3t9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgUExBVF9UT19WQ1ZBUlNbZ2V0X3BsYXRmb3JtKCldLAorICAgICAgICAgICAgICAgIFBMQVRfVE9fVkNWQVJTW3BsYXRfbmFtZV0KKyAgICAgICAgICAgICkKKworICAgICAgICB2Y19lbnYgPSBfZ2V0X3ZjX2VudihwbGF0X3NwZWMpCisgICAgICAgIGlmIG5vdCB2Y19lbnY6CisgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKCJVbmFibGUgdG8gZmluZCBhIGNvbXBhdGlibGUgIgorICAgICAgICAgICAgICAgICJWaXN1YWwgU3R1ZGlvIGluc3RhbGxhdGlvbi4iKQorCisgICAgICAgIHNlbGYuX3BhdGhzID0gdmNfZW52LmdldCgncGF0aCcsICcnKQorICAgICAgICBwYXRocyA9IHNlbGYuX3BhdGhzLnNwbGl0KG9zLnBhdGhzZXApCisgICAgICAgIHNlbGYuY2MgPSBfZmluZF9leGUoImNsLmV4ZSIsIHBhdGhzKQorICAgICAgICBzZWxmLmxpbmtlciA9IF9maW5kX2V4ZSgibGluay5leGUiLCBwYXRocykKKyAgICAgICAgc2VsZi5saWIgPSBfZmluZF9leGUoImxpYi5leGUiLCBwYXRocykKKyAgICAgICAgc2VsZi5yYyA9IF9maW5kX2V4ZSgicmMuZXhlIiwgcGF0aHMpICAgIyByZXNvdXJjZSBjb21waWxlcgorICAgICAgICBzZWxmLm1jID0gX2ZpbmRfZXhlKCJtYy5leGUiLCBwYXRocykgICAjIG1lc3NhZ2UgY29tcGlsZXIKKyAgICAgICAgc2VsZi5tdCA9IF9maW5kX2V4ZSgibXQuZXhlIiwgcGF0aHMpICAgIyBtZXNzYWdlIGNvbXBpbGVyCisgICAgICAgIHNlbGYuX3ZjcnVudGltZV9yZWRpc3QgPSB2Y19lbnYuZ2V0KCdweV92Y3J1bnRpbWVfcmVkaXN0JywgJycpCisKKyAgICAgICAgZm9yIGRpciBpbiB2Y19lbnYuZ2V0KCdpbmNsdWRlJywgJycpLnNwbGl0KG9zLnBhdGhzZXApOgorICAgICAgICAgICAgaWYgZGlyOgorICAgICAgICAgICAgICAgIHNlbGYuYWRkX2luY2x1ZGVfZGlyKGRpcikKKworICAgICAgICBmb3IgZGlyIGluIHZjX2Vudi5nZXQoJ2xpYicsICcnKS5zcGxpdChvcy5wYXRoc2VwKToKKyAgICAgICAgICAgIGlmIGRpcjoKKyAgICAgICAgICAgICAgICBzZWxmLmFkZF9saWJyYXJ5X2RpcihkaXIpCisKKyAgICAgICAgc2VsZi5wcmVwcm9jZXNzX29wdGlvbnMgPSBOb25lCisgICAgICAgICMgSWYgdmNydW50aW1lX3JlZGlzdCBpcyBhdmFpbGFibGUsIGxpbmsgYWdhaW5zdCBpdCBkeW5hbWljYWxseS4gT3RoZXJ3aXNlLAorICAgICAgICAjIHVzZSAvTVRbZF0gdG8gYnVpbGQgc3RhdGljYWxseSwgdGhlbiBzd2l0Y2ggZnJvbSBsaWJ1Y3J0W2RdLmxpYiB0byB1Y3J0W2RdLmxpYgorICAgICAgICAjIGxhdGVyIHRvIGR5bmFtaWNhbGx5IGxpbmsgdG8gdWNydGJhc2UgYnV0IG5vdCB2Y3J1bnRpbWUuCisgICAgICAgIHNlbGYuY29tcGlsZV9vcHRpb25zID0gWworICAgICAgICAgICAgJy9ub2xvZ28nLCAnL094JywgJy9XMycsICcvR0wnLCAnL0ROREVCVUcnCisgICAgICAgIF0KKyAgICAgICAgc2VsZi5jb21waWxlX29wdGlvbnMuYXBwZW5kKCcvTUQnIGlmIHNlbGYuX3ZjcnVudGltZV9yZWRpc3QgZWxzZSAnL01UJykKKworICAgICAgICBzZWxmLmNvbXBpbGVfb3B0aW9uc19kZWJ1ZyA9IFsKKyAgICAgICAgICAgICcvbm9sb2dvJywgJy9PZCcsICcvTURkJywgJy9aaScsICcvVzMnLCAnL0RfREVCVUcnCisgICAgICAgIF0KKworICAgICAgICBsZGZsYWdzID0gWworICAgICAgICAgICAgJy9ub2xvZ28nLCAnL0lOQ1JFTUVOVEFMOk5PJywgJy9MVENHJworICAgICAgICBdCisgICAgICAgIGlmIG5vdCBzZWxmLl92Y3J1bnRpbWVfcmVkaXN0OgorICAgICAgICAgICAgbGRmbGFncy5leHRlbmQoKCcvbm9kZWZhdWx0bGliOmxpYnVjcnQubGliJywgJ3VjcnQubGliJykpCisKKyAgICAgICAgbGRmbGFnc19kZWJ1ZyA9IFsKKyAgICAgICAgICAgICcvbm9sb2dvJywgJy9JTkNSRU1FTlRBTDpOTycsICcvTFRDRycsICcvREVCVUc6RlVMTCcKKyAgICAgICAgXQorCisgICAgICAgIHNlbGYubGRmbGFnc19leGUgPSBbKmxkZmxhZ3MsICcvTUFOSUZFU1Q6RU1CRUQsSUQ9MSddCisgICAgICAgIHNlbGYubGRmbGFnc19leGVfZGVidWcgPSBbKmxkZmxhZ3NfZGVidWcsICcvTUFOSUZFU1Q6RU1CRUQsSUQ9MSddCisgICAgICAgIHNlbGYubGRmbGFnc19zaGFyZWQgPSBbKmxkZmxhZ3MsICcvRExMJywgJy9NQU5JRkVTVDpFTUJFRCxJRD0yJywgJy9NQU5JRkVTVFVBQzpOTyddCisgICAgICAgIHNlbGYubGRmbGFnc19zaGFyZWRfZGVidWcgPSBbKmxkZmxhZ3NfZGVidWcsICcvRExMJywgJy9NQU5JRkVTVDpFTUJFRCxJRD0yJywgJy9NQU5JRkVTVFVBQzpOTyddCisgICAgICAgIHNlbGYubGRmbGFnc19zdGF0aWMgPSBbKmxkZmxhZ3NdCisgICAgICAgIHNlbGYubGRmbGFnc19zdGF0aWNfZGVidWcgPSBbKmxkZmxhZ3NfZGVidWddCisKKyAgICAgICAgc2VsZi5fbGRmbGFncyA9IHsKKyAgICAgICAgICAgIChDQ29tcGlsZXIuRVhFQ1VUQUJMRSwgTm9uZSk6IHNlbGYubGRmbGFnc19leGUsCisgICAgICAgICAgICAoQ0NvbXBpbGVyLkVYRUNVVEFCTEUsIEZhbHNlKTogc2VsZi5sZGZsYWdzX2V4ZSwKKyAgICAgICAgICAgIChDQ29tcGlsZXIuRVhFQ1VUQUJMRSwgVHJ1ZSk6IHNlbGYubGRmbGFnc19leGVfZGVidWcsCisgICAgICAgICAgICAoQ0NvbXBpbGVyLlNIQVJFRF9PQkpFQ1QsIE5vbmUpOiBzZWxmLmxkZmxhZ3Nfc2hhcmVkLAorICAgICAgICAgICAgKENDb21waWxlci5TSEFSRURfT0JKRUNULCBGYWxzZSk6IHNlbGYubGRmbGFnc19zaGFyZWQsCisgICAgICAgICAgICAoQ0NvbXBpbGVyLlNIQVJFRF9PQkpFQ1QsIFRydWUpOiBzZWxmLmxkZmxhZ3Nfc2hhcmVkX2RlYnVnLAorICAgICAgICAgICAgKENDb21waWxlci5TSEFSRURfTElCUkFSWSwgTm9uZSk6IHNlbGYubGRmbGFnc19zdGF0aWMsCisgICAgICAgICAgICAoQ0NvbXBpbGVyLlNIQVJFRF9MSUJSQVJZLCBGYWxzZSk6IHNlbGYubGRmbGFnc19zdGF0aWMsCisgICAgICAgICAgICAoQ0NvbXBpbGVyLlNIQVJFRF9MSUJSQVJZLCBUcnVlKTogc2VsZi5sZGZsYWdzX3N0YXRpY19kZWJ1ZywKKyAgICAgICAgfQorCisgICAgICAgIHNlbGYuaW5pdGlhbGl6ZWQgPSBUcnVlCisKKyAgICAjIC0tIFdvcmtlciBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgZGVmIG9iamVjdF9maWxlbmFtZXMoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfZmlsZW5hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwX2Rpcj0wLAorICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9kaXI9JycpOgorICAgICAgICBleHRfbWFwID0geworICAgICAgICAgICAgKip7ZXh0OiBzZWxmLm9ial9leHRlbnNpb24gZm9yIGV4dCBpbiBzZWxmLnNyY19leHRlbnNpb25zfSwKKyAgICAgICAgICAgICoqe2V4dDogc2VsZi5yZXNfZXh0ZW5zaW9uIGZvciBleHQgaW4gc2VsZi5fcmNfZXh0ZW5zaW9ucyArIHNlbGYuX21jX2V4dGVuc2lvbnN9LAorICAgICAgICB9CisKKyAgICAgICAgb3V0cHV0X2RpciA9IG91dHB1dF9kaXIgb3IgJycKKworICAgICAgICBkZWYgbWFrZV9vdXRfcGF0aChwKToKKyAgICAgICAgICAgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQocCkKKyAgICAgICAgICAgIGlmIHN0cmlwX2RpcjoKKyAgICAgICAgICAgICAgICBiYXNlID0gb3MucGF0aC5iYXNlbmFtZShiYXNlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBfLCBiYXNlID0gb3MucGF0aC5zcGxpdGRyaXZlKGJhc2UpCisgICAgICAgICAgICAgICAgaWYgYmFzZS5zdGFydHN3aXRoKChvcy5wYXRoLnNlcCwgb3MucGF0aC5hbHRzZXApKToKKyAgICAgICAgICAgICAgICAgICAgYmFzZSA9IGJhc2VbMTpdCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIyBYWFg6IFRoaXMgbWF5IHByb2R1Y2UgYWJzdXJkbHkgbG9uZyBwYXRocy4gV2Ugc2hvdWxkIGNoZWNrCisgICAgICAgICAgICAgICAgIyB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQgYW5kIHRyaW0gYmFzZSB1bnRpbCB3ZSBmaXQgd2l0aGluCisgICAgICAgICAgICAgICAgIyAyNjAgY2hhcmFjdGVycy4KKyAgICAgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKG91dHB1dF9kaXIsIGJhc2UgKyBleHRfbWFwW2V4dF0pCisgICAgICAgICAgICBleGNlcHQgTG9va3VwRXJyb3I6CisgICAgICAgICAgICAgICAgIyBCZXR0ZXIgdG8gcmFpc2UgYW4gZXhjZXB0aW9uIGluc3RlYWQgb2Ygc2lsZW50bHkgY29udGludWluZworICAgICAgICAgICAgICAgICMgYW5kIGxhdGVyIGNvbXBsYWluIGFib3V0IHNvdXJjZXMgYW5kIHRhcmdldHMgaGF2aW5nCisgICAgICAgICAgICAgICAgIyBkaWZmZXJlbnQgbGVuZ3RocworICAgICAgICAgICAgICAgIHJhaXNlIENvbXBpbGVFcnJvcigiRG9uJ3Qga25vdyBob3cgdG8gY29tcGlsZSB7fSIuZm9ybWF0KHApKQorCisgICAgICAgIHJldHVybiBsaXN0KG1hcChtYWtlX291dF9wYXRoLCBzb3VyY2VfZmlsZW5hbWVzKSkKKworCisgICAgZGVmIGNvbXBpbGUoc2VsZiwgc291cmNlcywKKyAgICAgICAgICAgICAgICBvdXRwdXRfZGlyPU5vbmUsIG1hY3Jvcz1Ob25lLCBpbmNsdWRlX2RpcnM9Tm9uZSwgZGVidWc9MCwKKyAgICAgICAgICAgICAgICBleHRyYV9wcmVhcmdzPU5vbmUsIGV4dHJhX3Bvc3RhcmdzPU5vbmUsIGRlcGVuZHM9Tm9uZSk6CisKKyAgICAgICAgaWYgbm90IHNlbGYuaW5pdGlhbGl6ZWQ6CisgICAgICAgICAgICBzZWxmLmluaXRpYWxpemUoKQorICAgICAgICBjb21waWxlX2luZm8gPSBzZWxmLl9zZXR1cF9jb21waWxlKG91dHB1dF9kaXIsIG1hY3JvcywgaW5jbHVkZV9kaXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXMsIGRlcGVuZHMsIGV4dHJhX3Bvc3RhcmdzKQorICAgICAgICBtYWNyb3MsIG9iamVjdHMsIGV4dHJhX3Bvc3RhcmdzLCBwcF9vcHRzLCBidWlsZCA9IGNvbXBpbGVfaW5mbworCisgICAgICAgIGNvbXBpbGVfb3B0cyA9IGV4dHJhX3ByZWFyZ3Mgb3IgW10KKyAgICAgICAgY29tcGlsZV9vcHRzLmFwcGVuZCgnL2MnKQorICAgICAgICBpZiBkZWJ1ZzoKKyAgICAgICAgICAgIGNvbXBpbGVfb3B0cy5leHRlbmQoc2VsZi5jb21waWxlX29wdGlvbnNfZGVidWcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb21waWxlX29wdHMuZXh0ZW5kKHNlbGYuY29tcGlsZV9vcHRpb25zKQorCisKKyAgICAgICAgYWRkX2NwcF9vcHRzID0gRmFsc2UKKworICAgICAgICBmb3Igb2JqIGluIG9iamVjdHM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3JjLCBleHQgPSBidWlsZFtvYmpdCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGRlYnVnOgorICAgICAgICAgICAgICAgICMgcGFzcyB0aGUgZnVsbCBwYXRobmFtZSB0byBNU1ZDIGluIGRlYnVnIG1vZGUsCisgICAgICAgICAgICAgICAgIyB0aGlzIGFsbG93cyB0aGUgZGVidWdnZXIgdG8gZmluZCB0aGUgc291cmNlIGZpbGUKKyAgICAgICAgICAgICAgICAjIHdpdGhvdXQgYXNraW5nIHRoZSB1c2VyIHRvIGJyb3dzZSBmb3IgaXQKKyAgICAgICAgICAgICAgICBzcmMgPSBvcy5wYXRoLmFic3BhdGgoc3JjKQorCisgICAgICAgICAgICBpZiBleHQgaW4gc2VsZi5fY19leHRlbnNpb25zOgorICAgICAgICAgICAgICAgIGlucHV0X29wdCA9ICIvVGMiICsgc3JjCisgICAgICAgICAgICBlbGlmIGV4dCBpbiBzZWxmLl9jcHBfZXh0ZW5zaW9uczoKKyAgICAgICAgICAgICAgICBpbnB1dF9vcHQgPSAiL1RwIiArIHNyYworICAgICAgICAgICAgICAgIGFkZF9jcHBfb3B0cyA9IFRydWUKKyAgICAgICAgICAgIGVsaWYgZXh0IGluIHNlbGYuX3JjX2V4dGVuc2lvbnM6CisgICAgICAgICAgICAgICAgIyBjb21waWxlIC5SQyB0byAuUkVTIGZpbGUKKyAgICAgICAgICAgICAgICBpbnB1dF9vcHQgPSBzcmMKKyAgICAgICAgICAgICAgICBvdXRwdXRfb3B0ID0gIi9mbyIgKyBvYmoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Bhd24oW3NlbGYucmNdICsgcHBfb3B0cyArIFtvdXRwdXRfb3B0LCBpbnB1dF9vcHRdKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBEaXN0dXRpbHNFeGVjRXJyb3IgYXMgbXNnOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBDb21waWxlRXJyb3IobXNnKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbGlmIGV4dCBpbiBzZWxmLl9tY19leHRlbnNpb25zOgorICAgICAgICAgICAgICAgICMgQ29tcGlsZSAuTUMgdG8gLlJDIGZpbGUgdG8gLlJFUyBmaWxlLgorICAgICAgICAgICAgICAgICMgICAqICctaCBkaXInIHNwZWNpZmllcyB0aGUgZGlyZWN0b3J5IGZvciB0aGUKKyAgICAgICAgICAgICAgICAjICAgICBnZW5lcmF0ZWQgaW5jbHVkZSBmaWxlCisgICAgICAgICAgICAgICAgIyAgICogJy1yIGRpcicgc3BlY2lmaWVzIHRoZSB0YXJnZXQgZGlyZWN0b3J5IG9mIHRoZQorICAgICAgICAgICAgICAgICMgICAgIGdlbmVyYXRlZCBSQyBmaWxlIGFuZCB0aGUgYmluYXJ5IG1lc3NhZ2UgcmVzb3VyY2UKKyAgICAgICAgICAgICAgICAjICAgICBpdCBpbmNsdWRlcworICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIEZvciBub3cgKHNpbmNlIHRoZXJlIGFyZSBubyBvcHRpb25zIHRvIGNoYW5nZSB0aGlzKSwKKyAgICAgICAgICAgICAgICAjIHdlIHVzZSB0aGUgc291cmNlLWRpcmVjdG9yeSBmb3IgdGhlIGluY2x1ZGUgZmlsZSBhbmQKKyAgICAgICAgICAgICAgICAjIHRoZSBidWlsZCBkaXJlY3RvcnkgZm9yIHRoZSBSQyBmaWxlIGFuZCBtZXNzYWdlCisgICAgICAgICAgICAgICAgIyByZXNvdXJjZXMuIFRoaXMgd29ya3MgYXQgbGVhc3QgZm9yIHdpbjMyYWxsLgorICAgICAgICAgICAgICAgIGhfZGlyID0gb3MucGF0aC5kaXJuYW1lKHNyYykKKyAgICAgICAgICAgICAgICByY19kaXIgPSBvcy5wYXRoLmRpcm5hbWUob2JqKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgIyBmaXJzdCBjb21waWxlIC5NQyB0byAuUkMgYW5kIC5IIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zcGF3bihbc2VsZi5tYywgJy1oJywgaF9kaXIsICctcicsIHJjX2Rpciwgc3JjXSkKKyAgICAgICAgICAgICAgICAgICAgYmFzZSwgXyA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZSAoc3JjKSkKKyAgICAgICAgICAgICAgICAgICAgcmNfZmlsZSA9IG9zLnBhdGguam9pbihyY19kaXIsIGJhc2UgKyAnLnJjJykKKyAgICAgICAgICAgICAgICAgICAgIyB0aGVuIGNvbXBpbGUgLlJDIHRvIC5SRVMgZmlsZQorICAgICAgICAgICAgICAgICAgICBzZWxmLnNwYXduKFtzZWxmLnJjLCAiL2ZvIiArIG9iaiwgcmNfZmlsZV0pCisKKyAgICAgICAgICAgICAgICBleGNlcHQgRGlzdHV0aWxzRXhlY0Vycm9yIGFzIG1zZzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQ29tcGlsZUVycm9yKG1zZykKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIGhvdyB0byBoYW5kbGUgdGhpcyBmaWxlPworICAgICAgICAgICAgICAgIHJhaXNlIENvbXBpbGVFcnJvcigiRG9uJ3Qga25vdyBob3cgdG8gY29tcGlsZSB7fSB0byB7fSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzcmMsIG9iaikpCisKKyAgICAgICAgICAgIGFyZ3MgPSBbc2VsZi5jY10gKyBjb21waWxlX29wdHMgKyBwcF9vcHRzCisgICAgICAgICAgICBpZiBhZGRfY3BwX29wdHM6CisgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQoJy9FSHNjJykKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGlucHV0X29wdCkKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCIvRm8iICsgb2JqKQorICAgICAgICAgICAgYXJncy5leHRlbmQoZXh0cmFfcG9zdGFyZ3MpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnNwYXduKGFyZ3MpCisgICAgICAgICAgICBleGNlcHQgRGlzdHV0aWxzRXhlY0Vycm9yIGFzIG1zZzoKKyAgICAgICAgICAgICAgICByYWlzZSBDb21waWxlRXJyb3IobXNnKQorCisgICAgICAgIHJldHVybiBvYmplY3RzCisKKworICAgIGRlZiBjcmVhdGVfc3RhdGljX2xpYihzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfbGlibmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Rpcj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Zz0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfbGFuZz1Ob25lKToKKworICAgICAgICBpZiBub3Qgc2VsZi5pbml0aWFsaXplZDoKKyAgICAgICAgICAgIHNlbGYuaW5pdGlhbGl6ZSgpCisgICAgICAgIG9iamVjdHMsIG91dHB1dF9kaXIgPSBzZWxmLl9maXhfb2JqZWN0X2FyZ3Mob2JqZWN0cywgb3V0cHV0X2RpcikKKyAgICAgICAgb3V0cHV0X2ZpbGVuYW1lID0gc2VsZi5saWJyYXJ5X2ZpbGVuYW1lKG91dHB1dF9saWJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Rpcj1vdXRwdXRfZGlyKQorCisgICAgICAgIGlmIHNlbGYuX25lZWRfbGluayhvYmplY3RzLCBvdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAgICAgbGliX2FyZ3MgPSBvYmplY3RzICsgWycvT1VUOicgKyBvdXRwdXRfZmlsZW5hbWVdCisgICAgICAgICAgICBpZiBkZWJ1ZzoKKyAgICAgICAgICAgICAgICBwYXNzICMgWFhYIHdoYXQgZ29lcyBoZXJlPworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygnRXhlY3V0aW5nICIlcyIgJXMnLCBzZWxmLmxpYiwgJyAnLmpvaW4obGliX2FyZ3MpKQorICAgICAgICAgICAgICAgIHNlbGYuc3Bhd24oW3NlbGYubGliXSArIGxpYl9hcmdzKQorICAgICAgICAgICAgZXhjZXB0IERpc3R1dGlsc0V4ZWNFcnJvciBhcyBtc2c6CisgICAgICAgICAgICAgICAgcmFpc2UgTGliRXJyb3IobXNnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nLmRlYnVnKCJza2lwcGluZyAlcyAodXAtdG8tZGF0ZSkiLCBvdXRwdXRfZmlsZW5hbWUpCisKKworICAgIGRlZiBsaW5rKHNlbGYsCisgICAgICAgICAgICAgdGFyZ2V0X2Rlc2MsCisgICAgICAgICAgICAgb2JqZWN0cywKKyAgICAgICAgICAgICBvdXRwdXRfZmlsZW5hbWUsCisgICAgICAgICAgICAgb3V0cHV0X2Rpcj1Ob25lLAorICAgICAgICAgICAgIGxpYnJhcmllcz1Ob25lLAorICAgICAgICAgICAgIGxpYnJhcnlfZGlycz1Ob25lLAorICAgICAgICAgICAgIHJ1bnRpbWVfbGlicmFyeV9kaXJzPU5vbmUsCisgICAgICAgICAgICAgZXhwb3J0X3N5bWJvbHM9Tm9uZSwKKyAgICAgICAgICAgICBkZWJ1Zz0wLAorICAgICAgICAgICAgIGV4dHJhX3ByZWFyZ3M9Tm9uZSwKKyAgICAgICAgICAgICBleHRyYV9wb3N0YXJncz1Ob25lLAorICAgICAgICAgICAgIGJ1aWxkX3RlbXA9Tm9uZSwKKyAgICAgICAgICAgICB0YXJnZXRfbGFuZz1Ob25lKToKKworICAgICAgICBpZiBub3Qgc2VsZi5pbml0aWFsaXplZDoKKyAgICAgICAgICAgIHNlbGYuaW5pdGlhbGl6ZSgpCisgICAgICAgIG9iamVjdHMsIG91dHB1dF9kaXIgPSBzZWxmLl9maXhfb2JqZWN0X2FyZ3Mob2JqZWN0cywgb3V0cHV0X2RpcikKKyAgICAgICAgZml4ZWRfYXJncyA9IHNlbGYuX2ZpeF9saWJfYXJncyhsaWJyYXJpZXMsIGxpYnJhcnlfZGlycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lX2xpYnJhcnlfZGlycykKKyAgICAgICAgbGlicmFyaWVzLCBsaWJyYXJ5X2RpcnMsIHJ1bnRpbWVfbGlicmFyeV9kaXJzID0gZml4ZWRfYXJncworCisgICAgICAgIGlmIHJ1bnRpbWVfbGlicmFyeV9kaXJzOgorICAgICAgICAgICAgc2VsZi53YXJuKCJJIGRvbid0IGtub3cgd2hhdCB0byBkbyB3aXRoICdydW50aW1lX2xpYnJhcnlfZGlycyc6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgKyBzdHIocnVudGltZV9saWJyYXJ5X2RpcnMpKQorCisgICAgICAgIGxpYl9vcHRzID0gZ2VuX2xpYl9vcHRpb25zKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnlfZGlycywgcnVudGltZV9saWJyYXJ5X2RpcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcykKKyAgICAgICAgaWYgb3V0cHV0X2RpciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIG91dHB1dF9maWxlbmFtZSA9IG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCBvdXRwdXRfZmlsZW5hbWUpCisKKyAgICAgICAgaWYgc2VsZi5fbmVlZF9saW5rKG9iamVjdHMsIG91dHB1dF9maWxlbmFtZSk6CisgICAgICAgICAgICBsZGZsYWdzID0gc2VsZi5fbGRmbGFnc1t0YXJnZXRfZGVzYywgZGVidWddCisKKyAgICAgICAgICAgIGV4cG9ydF9vcHRzID0gWyIvRVhQT1JUOiIgKyBzeW0gZm9yIHN5bSBpbiAoZXhwb3J0X3N5bWJvbHMgb3IgW10pXQorCisgICAgICAgICAgICBsZF9hcmdzID0gKGxkZmxhZ3MgKyBsaWJfb3B0cyArIGV4cG9ydF9vcHRzICsKKyAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0cyArIFsnL09VVDonICsgb3V0cHV0X2ZpbGVuYW1lXSkKKworICAgICAgICAgICAgIyBUaGUgTVNWQyBsaW5rZXIgZ2VuZXJhdGVzIC5saWIgYW5kIC5leHAgZmlsZXMsIHdoaWNoIGNhbm5vdCBiZQorICAgICAgICAgICAgIyBzdXBwcmVzc2VkIGJ5IGFueSBsaW5rZXIgc3dpdGNoZXMuIFRoZSAubGliIGZpbGVzIG1heSBldmVuIGJlCisgICAgICAgICAgICAjIG5lZWRlZCEgTWFrZSBzdXJlIHRoZXkgYXJlIGdlbmVyYXRlZCBpbiB0aGUgdGVtcG9yYXJ5IGJ1aWxkCisgICAgICAgICAgICAjIGRpcmVjdG9yeS4gU2luY2UgdGhleSBoYXZlIGRpZmZlcmVudCBuYW1lcyBmb3IgZGVidWcgYW5kIHJlbGVhc2UKKyAgICAgICAgICAgICMgYnVpbGRzLCB0aGV5IGNhbiBnbyBpbnRvIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAgICAgICAgICAgIGJ1aWxkX3RlbXAgPSBvcy5wYXRoLmRpcm5hbWUob2JqZWN0c1swXSkKKyAgICAgICAgICAgIGlmIGV4cG9ydF9zeW1ib2xzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIChkbGxfbmFtZSwgZGxsX2V4dCkgPSBvcy5wYXRoLnNwbGl0ZXh0KAorICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKG91dHB1dF9maWxlbmFtZSkpCisgICAgICAgICAgICAgICAgaW1wbGliX2ZpbGUgPSBvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkX3RlbXAsCisgICAgICAgICAgICAgICAgICAgIHNlbGYubGlicmFyeV9maWxlbmFtZShkbGxfbmFtZSkpCisgICAgICAgICAgICAgICAgbGRfYXJncy5hcHBlbmQgKCcvSU1QTElCOicgKyBpbXBsaWJfZmlsZSkKKworICAgICAgICAgICAgaWYgZXh0cmFfcHJlYXJnczoKKyAgICAgICAgICAgICAgICBsZF9hcmdzWzowXSA9IGV4dHJhX3ByZWFyZ3MKKyAgICAgICAgICAgIGlmIGV4dHJhX3Bvc3RhcmdzOgorICAgICAgICAgICAgICAgIGxkX2FyZ3MuZXh0ZW5kKGV4dHJhX3Bvc3RhcmdzKQorCisgICAgICAgICAgICBvdXRwdXRfZGlyID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChvdXRwdXRfZmlsZW5hbWUpKQorICAgICAgICAgICAgc2VsZi5ta3BhdGgob3V0cHV0X2RpcikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBsb2cuZGVidWcoJ0V4ZWN1dGluZyAiJXMiICVzJywgc2VsZi5saW5rZXIsICcgJy5qb2luKGxkX2FyZ3MpKQorICAgICAgICAgICAgICAgIHNlbGYuc3Bhd24oW3NlbGYubGlua2VyXSArIGxkX2FyZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5fY29weV92Y3J1bnRpbWUob3V0cHV0X2RpcikKKyAgICAgICAgICAgIGV4Y2VwdCBEaXN0dXRpbHNFeGVjRXJyb3IgYXMgbXNnOgorICAgICAgICAgICAgICAgIHJhaXNlIExpbmtFcnJvcihtc2cpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2cuZGVidWcoInNraXBwaW5nICVzICh1cC10by1kYXRlKSIsIG91dHB1dF9maWxlbmFtZSkKKworICAgIGRlZiBfY29weV92Y3J1bnRpbWUoc2VsZiwgb3V0cHV0X2Rpcik6CisgICAgICAgIHZjcnVudGltZSA9IHNlbGYuX3ZjcnVudGltZV9yZWRpc3QKKyAgICAgICAgaWYgbm90IHZjcnVudGltZSBvciBub3Qgb3MucGF0aC5pc2ZpbGUodmNydW50aW1lKToKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUodmNydW50aW1lKS5sb3dlcigpIGluIF9CVU5ETEVEX0RMTFM6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBsb2cuZGVidWcoJ0NvcHlpbmcgIiVzIicsIHZjcnVudGltZSkKKyAgICAgICAgdmNydW50aW1lID0gc2h1dGlsLmNvcHkodmNydW50aW1lLCBvdXRwdXRfZGlyKQorICAgICAgICBvcy5jaG1vZCh2Y3J1bnRpbWUsIHN0YXQuU19JV1JJVEUpCisKKyAgICBkZWYgc3Bhd24oc2VsZiwgY21kKToKKyAgICAgICAgb2xkX3BhdGggPSBvcy5nZXRlbnYoJ3BhdGgnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5lbnZpcm9uWydwYXRoJ10gPSBzZWxmLl9wYXRocworICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuc3Bhd24oY21kKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuZW52aXJvblsncGF0aCddID0gb2xkX3BhdGgKKworICAgICMgLS0gTWlzY2VsbGFuZW91cyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgIyBUaGVzZSBhcmUgYWxsIHVzZWQgYnkgdGhlICdnZW5fbGliX29wdGlvbnMoKSBmdW5jdGlvbiwgaW4KKyAgICAjIGNjb21waWxlci5weS4KKworICAgIGRlZiBsaWJyYXJ5X2Rpcl9vcHRpb24oc2VsZiwgZGlyKToKKyAgICAgICAgcmV0dXJuICIvTElCUEFUSDoiICsgZGlyCisKKyAgICBkZWYgcnVudGltZV9saWJyYXJ5X2Rpcl9vcHRpb24oc2VsZiwgZGlyKToKKyAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcigKKyAgICAgICAgICAgICAgImRvbid0IGtub3cgaG93IHRvIHNldCBydW50aW1lIGxpYnJhcnkgc2VhcmNoIHBhdGggZm9yIE1TVkMiKQorCisgICAgZGVmIGxpYnJhcnlfb3B0aW9uKHNlbGYsIGxpYik6CisgICAgICAgIHJldHVybiBzZWxmLmxpYnJhcnlfZmlsZW5hbWUobGliKQorCisgICAgZGVmIGZpbmRfbGlicmFyeV9maWxlKHNlbGYsIGRpcnMsIGxpYiwgZGVidWc9MCk6CisgICAgICAgICMgUHJlZmVyIGEgZGVidWdnaW5nIGxpYnJhcnkgaWYgZm91bmQgKGFuZCByZXF1ZXN0ZWQpLCBidXQgZGVhbAorICAgICAgICAjIHdpdGggaXQgaWYgd2UgZG9uJ3QgaGF2ZSBvbmUuCisgICAgICAgIGlmIGRlYnVnOgorICAgICAgICAgICAgdHJ5X25hbWVzID0gW2xpYiArICJfZCIsIGxpYl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeV9uYW1lcyA9IFtsaWJdCisgICAgICAgIGZvciBkaXIgaW4gZGlyczoKKyAgICAgICAgICAgIGZvciBuYW1lIGluIHRyeV9uYW1lczoKKyAgICAgICAgICAgICAgICBsaWJmaWxlID0gb3MucGF0aC5qb2luKGRpciwgc2VsZi5saWJyYXJ5X2ZpbGVuYW1lKG5hbWUpKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGxpYmZpbGUpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGliZmlsZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBPb3BzLCBkaWRuJ3QgZmluZCBpdCBpbiAqYW55KiBvZiAnZGlycycKKyAgICAgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvYXJjaGl2ZV91dGlsLnB5CmluZGV4IDQ0NzBiYjAuLmJlZDEzODQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvYXJjaGl2ZV91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvYXJjaGl2ZV91dGlsLnB5CkBAIC01NywyNiArNTcsMjggQEAKICAgICAiIiJDcmVhdGUgYSAocG9zc2libHkgY29tcHJlc3NlZCkgdGFyIGZpbGUgZnJvbSBhbGwgdGhlIGZpbGVzIHVuZGVyCiAgICAgJ2Jhc2VfZGlyJy4KIAotICAgICdjb21wcmVzcycgbXVzdCBiZSAiZ3ppcCIgKHRoZSBkZWZhdWx0KSwgImNvbXByZXNzIiwgImJ6aXAyIiwgb3IgTm9uZS4KLSAgICAoY29tcHJlc3Mgd2lsbCBiZSBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjIpCisgICAgJ2NvbXByZXNzJyBtdXN0IGJlICJnemlwIiAodGhlIGRlZmF1bHQpLCAiYnppcDIiLCAieHoiLCAiY29tcHJlc3MiLCBvcgorICAgIE5vbmUuICAoImNvbXByZXNzIiB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuMikKIAogICAgICdvd25lcicgYW5kICdncm91cCcgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGFuIG93bmVyIGFuZCBhIGdyb3VwIGZvciB0aGUKICAgICBhcmNoaXZlIHRoYXQgaXMgYmVpbmcgYnVpbHQuIElmIG5vdCBwcm92aWRlZCwgdGhlIGN1cnJlbnQgb3duZXIgYW5kIGdyb3VwCiAgICAgd2lsbCBiZSB1c2VkLgogCiAgICAgVGhlIG91dHB1dCB0YXIgZmlsZSB3aWxsIGJlIG5hbWVkICdiYXNlX2RpcicgKyAgIi50YXIiLCBwb3NzaWJseSBwbHVzCi0gICAgdGhlIGFwcHJvcHJpYXRlIGNvbXByZXNzaW9uIGV4dGVuc2lvbiAoIi5neiIsICIuYnoyIiBvciAiLloiKS4KKyAgICB0aGUgYXBwcm9wcmlhdGUgY29tcHJlc3Npb24gZXh0ZW5zaW9uICgiLmd6IiwgIi5iejIiLCAiLnh6IiBvciAiLloiKS4KIAogICAgIFJldHVybnMgdGhlIG91dHB1dCBmaWxlbmFtZS4KICAgICAiIiIKLSAgICB0YXJfY29tcHJlc3Npb24gPSB7J2d6aXAnOiAnZ3onLCAnYnppcDInOiAnYnoyJywgTm9uZTogJycsICdjb21wcmVzcyc6ICcnfQotICAgIGNvbXByZXNzX2V4dCA9IHsnZ3ppcCc6ICcuZ3onLCAnYnppcDInOiAnLmJ6MicsICdjb21wcmVzcyc6ICcuWid9CisgICAgdGFyX2NvbXByZXNzaW9uID0geydnemlwJzogJ2d6JywgJ2J6aXAyJzogJ2J6MicsICd4eic6ICd4eicsIE5vbmU6ICcnLAorICAgICAgICAgICAgICAgICAgICAgICAnY29tcHJlc3MnOiAnJ30KKyAgICBjb21wcmVzc19leHQgPSB7J2d6aXAnOiAnLmd6JywgJ2J6aXAyJzogJy5iejInLCAneHonOiAnLnh6JywKKyAgICAgICAgICAgICAgICAgICAgJ2NvbXByZXNzJzogJy5aJ30KIAogICAgICMgZmxhZ3MgZm9yIGNvbXByZXNzaW9uIHByb2dyYW0sIGVhY2ggZWxlbWVudCBvZiBsaXN0IHdpbGwgYmUgYW4gYXJndW1lbnQKICAgICBpZiBjb21wcmVzcyBpcyBub3QgTm9uZSBhbmQgY29tcHJlc3Mgbm90IGluIGNvbXByZXNzX2V4dC5rZXlzKCk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICJiYWQgdmFsdWUgZm9yICdjb21wcmVzcyc6IG11c3QgYmUgTm9uZSwgJ2d6aXAnLCAnYnppcDInICIKLSAgICAgICAgICAgICAgIm9yICdjb21wcmVzcyciKQorICAgICAgICAgICAgICAiYmFkIHZhbHVlIGZvciAnY29tcHJlc3MnOiBtdXN0IGJlIE5vbmUsICdnemlwJywgJ2J6aXAyJywgIgorICAgICAgICAgICAgICAiJ3h6JyBvciAnY29tcHJlc3MnIikKIAogICAgIGFyY2hpdmVfbmFtZSA9IGJhc2VfbmFtZSArICcudGFyJwogICAgIGlmIGNvbXByZXNzICE9ICdjb21wcmVzcyc6CkBAIC0xNzcsNiArMTc5LDcgQEAKIEFSQ0hJVkVfRk9STUFUUyA9IHsKICAgICAnZ3p0YXInOiAobWFrZV90YXJiYWxsLCBbKCdjb21wcmVzcycsICdnemlwJyldLCAiZ3ppcCdlZCB0YXItZmlsZSIpLAogICAgICdienRhcic6IChtYWtlX3RhcmJhbGwsIFsoJ2NvbXByZXNzJywgJ2J6aXAyJyldLCAiYnppcDInZWQgdGFyLWZpbGUiKSwKKyAgICAneHp0YXInOiAobWFrZV90YXJiYWxsLCBbKCdjb21wcmVzcycsICd4eicpXSwgInh6J2VkIHRhci1maWxlIiksCiAgICAgJ3p0YXInOiAgKG1ha2VfdGFyYmFsbCwgWygnY29tcHJlc3MnLCAnY29tcHJlc3MnKV0sICJjb21wcmVzc2VkIHRhciBmaWxlIiksCiAgICAgJ3Rhcic6ICAgKG1ha2VfdGFyYmFsbCwgWygnY29tcHJlc3MnLCBOb25lKV0sICJ1bmNvbXByZXNzZWQgdGFyIGZpbGUiKSwKICAgICAnemlwJzogICAobWFrZV96aXBmaWxlLCBbXSwiWklQIGZpbGUiKQpAQCAtMTk3LDggKzIwMCw4IEBACiAgICAgIiIiQ3JlYXRlIGFuIGFyY2hpdmUgZmlsZSAoZWcuIHppcCBvciB0YXIpLgogCiAgICAgJ2Jhc2VfbmFtZScgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gY3JlYXRlLCBtaW51cyBhbnkgZm9ybWF0LXNwZWNpZmljCi0gICAgZXh0ZW5zaW9uOyAnZm9ybWF0JyBpcyB0aGUgYXJjaGl2ZSBmb3JtYXQ6IG9uZSBvZiAiemlwIiwgInRhciIsICJ6dGFyIiwKLSAgICBvciAiZ3p0YXIiLgorICAgIGV4dGVuc2lvbjsgJ2Zvcm1hdCcgaXMgdGhlIGFyY2hpdmUgZm9ybWF0OiBvbmUgb2YgInppcCIsICJ0YXIiLCAiZ3p0YXIiLAorICAgICJienRhciIsICJ4enRhciIsIG9yICJ6dGFyIi4KIAogICAgICdyb290X2RpcicgaXMgYSBkaXJlY3RvcnkgdGhhdCB3aWxsIGJlIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUKICAgICBhcmNoaXZlOyBpZS4gd2UgdHlwaWNhbGx5IGNoZGlyIGludG8gJ3Jvb3RfZGlyJyBiZWZvcmUgY3JlYXRpbmcgdGhlCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2Njb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvY2NvbXBpbGVyLnB5CmluZGV4IGU5M2EyNzMuLjgyZmQ3ZDUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY2NvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY2NvbXBpbGVyLnB5CkBAIC05NTksNyArOTU5LDcgQEAKICMgaXMgYXNzdW1lZCB0byBiZSBpbiB0aGUgJ2Rpc3R1dGlscycgcGFja2FnZS4pCiBjb21waWxlcl9jbGFzcyA9IHsgJ3VuaXgnOiAgICAoJ3VuaXhjY29tcGlsZXInLCAnVW5peENDb21waWxlcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YW5kYXJkIFVOSVgtc3R5bGUgY29tcGlsZXIiKSwKLSAgICAgICAgICAgICAgICAgICAnbXN2Yyc6ICAgICgnbXN2Y2NvbXBpbGVyJywgJ01TVkNDb21waWxlcicsCisgICAgICAgICAgICAgICAgICAgJ21zdmMnOiAgICAoJ19tc3ZjY29tcGlsZXInLCAnTVNWQ0NvbXBpbGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWljcm9zb2Z0IFZpc3VhbCBDKysiKSwKICAgICAgICAgICAgICAgICAgICAnY3lnd2luJzogICgnY3lnd2luY2NvbXBpbGVyJywgJ0N5Z3dpbkNDb21waWxlcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkN5Z3dpbiBwb3J0IG9mIEdOVSBDIENvbXBpbGVyIGZvciBXaW4zMiIpLApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0LnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0LnB5CmluZGV4IDY4MTRhMWMuLjAxNDg3MWQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3QucHkKQEAgLTYxLDEzICs2MSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICdudCc6ICd6aXAnfQogCiAgICAgIyBFc3RhYmxpc2ggdGhlIHByZWZlcnJlZCBvcmRlciAoZm9yIHRoZSAtLWhlbHAtZm9ybWF0cyBvcHRpb24pLgotICAgIGZvcm1hdF9jb21tYW5kcyA9IFsncnBtJywgJ2d6dGFyJywgJ2J6dGFyJywgJ3p0YXInLCAndGFyJywKKyAgICBmb3JtYXRfY29tbWFuZHMgPSBbJ3JwbScsICdnenRhcicsICdienRhcicsICd4enRhcicsICd6dGFyJywgJ3RhcicsCiAgICAgICAgICAgICAgICAgICAgICAgICd3aW5pbnN0JywgJ3ppcCcsICdtc2knXQogCiAgICAgIyBBbmQgdGhlIHJlYWwgaW5mb3JtYXRpb24uCiAgICAgZm9ybWF0X2NvbW1hbmQgPSB7J3JwbSc6ICAgKCdiZGlzdF9ycG0nLCAgIlJQTSBkaXN0cmlidXRpb24iKSwKICAgICAgICAgICAgICAgICAgICAgICAnZ3p0YXInOiAoJ2JkaXN0X2R1bWInLCAiZ3ppcCdlZCB0YXIgZmlsZSIpLAogICAgICAgICAgICAgICAgICAgICAgICdienRhcic6ICgnYmRpc3RfZHVtYicsICJiemlwMidlZCB0YXIgZmlsZSIpLAorICAgICAgICAgICAgICAgICAgICAgICd4enRhcic6ICgnYmRpc3RfZHVtYicsICJ4eidlZCB0YXIgZmlsZSIpLAogICAgICAgICAgICAgICAgICAgICAgICd6dGFyJzogICgnYmRpc3RfZHVtYicsICJjb21wcmVzc2VkIHRhciBmaWxlIiksCiAgICAgICAgICAgICAgICAgICAgICAgJ3Rhcic6ICAgKCdiZGlzdF9kdW1iJywgInRhciBmaWxlIiksCiAgICAgICAgICAgICAgICAgICAgICAgJ3dpbmluc3QnOiAoJ2JkaXN0X3dpbmluc3QnLApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfZHVtYi5weQppbmRleCA0NDA1ZDEyLi5mMWJmYjI0IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfZHVtYi5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfZHVtYi5weQpAQCAtMjIsNyArMjIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIG5hbWUgdG8gZW1iZWQgaW4gZ2VuZXJhdGVkIGZpbGVuYW1lcyAiCiAgICAgICAgICAgICAgICAgICAgICAiKGRlZmF1bHQ6ICVzKSIgJSBnZXRfcGxhdGZvcm0oKSksCiAgICAgICAgICAgICAgICAgICAgICgnZm9ybWF0PScsICdmJywKLSAgICAgICAgICAgICAgICAgICAgICJhcmNoaXZlIGZvcm1hdCB0byBjcmVhdGUgKHRhciwgenRhciwgZ3p0YXIsIHppcCkiKSwKKyAgICAgICAgICAgICAgICAgICAgICJhcmNoaXZlIGZvcm1hdCB0byBjcmVhdGUgKHRhciwgZ3p0YXIsIGJ6dGFyLCB4enRhciwgIgorICAgICAgICAgICAgICAgICAgICAgInp0YXIsIHppcCkiKSwKICAgICAgICAgICAgICAgICAgICAgKCdrZWVwLXRlbXAnLCAnaycsCiAgICAgICAgICAgICAgICAgICAgICAia2VlcCB0aGUgcHNldWRvLWluc3RhbGxhdGlvbiB0cmVlIGFyb3VuZCBhZnRlciAiICsKICAgICAgICAgICAgICAgICAgICAgICJjcmVhdGluZyB0aGUgZGlzdHJpYnV0aW9uIGFyY2hpdmUiKSwKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkKaW5kZXggOTU5YThiZi4uMGMwZTJjMSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkKQEAgLTMwMyw3ICszMDMsNiBAQAogICAgICAgICByZXR1cm4gaW5zdGFsbGVyX25hbWUKIAogICAgIGRlZiBnZXRfZXhlX2J5dGVzKHNlbGYpOgotICAgICAgICBmcm9tIGRpc3R1dGlscy5tc3ZjY29tcGlsZXIgaW1wb3J0IGdldF9idWlsZF92ZXJzaW9uCiAgICAgICAgICMgSWYgYSB0YXJnZXQtdmVyc2lvbiBvdGhlciB0aGFuIHRoZSBjdXJyZW50IHZlcnNpb24gaGFzIGJlZW4KICAgICAgICAgIyBzcGVjaWZpZWQsIHRoZW4gdXNpbmcgdGhlIE1TVkMgdmVyc2lvbiBmcm9tICp0aGlzKiBidWlsZCBpcyBubyBnb29kLgogICAgICAgICAjIFdpdGhvdXQgYWN0dWFsbHkgZmluZGluZyBhbmQgZXhlY3V0aW5nIHRoZSB0YXJnZXQgdmVyc2lvbiBhbmQgcGFyc2luZwpAQCAtMzEzLDIwICszMTIsMzMgQEAKICAgICAgICAgIyBXZSBjYW4gdGhlbiBleGVjdXRlIHRoaXMgcHJvZ3JhbSB0byBvYnRhaW4gYW55IGluZm8gd2UgbmVlZCwgc3VjaAogICAgICAgICAjIGFzIHRoZSByZWFsIHN5cy52ZXJzaW9uIHN0cmluZyBmb3IgdGhlIGJ1aWxkLgogICAgICAgICBjdXJfdmVyc2lvbiA9IGdldF9weXRob25fdmVyc2lvbigpCi0gICAgICAgIGlmIHNlbGYudGFyZ2V0X3ZlcnNpb24gYW5kIHNlbGYudGFyZ2V0X3ZlcnNpb24gIT0gY3VyX3ZlcnNpb246Ci0gICAgICAgICAgICAjIElmIHRoZSB0YXJnZXQgdmVyc2lvbiBpcyAqbGF0ZXIqIHRoYW4gdXMsIHRoZW4gd2UgYXNzdW1lIHRoZXkKLSAgICAgICAgICAgICMgdXNlIHdoYXQgd2UgdXNlCi0gICAgICAgICAgICAjIHN0cmluZyBjb21wYXJlcyBzZWVtIHdyb25nLCBidXQgYXJlIHdoYXQgc3lzY29uZmlnLnB5IGl0c2VsZiB1c2VzCi0gICAgICAgICAgICBpZiBzZWxmLnRhcmdldF92ZXJzaW9uID4gY3VyX3ZlcnNpb246Ci0gICAgICAgICAgICAgICAgYnYgPSBnZXRfYnVpbGRfdmVyc2lvbigpCisKKyAgICAgICAgIyBJZiB0aGUgdGFyZ2V0IHZlcnNpb24gaXMgKmxhdGVyKiB0aGFuIHVzLCB0aGVuIHdlIGFzc3VtZSB0aGV5CisgICAgICAgICMgdXNlIHdoYXQgd2UgdXNlCisgICAgICAgICMgc3RyaW5nIGNvbXBhcmVzIHNlZW0gd3JvbmcsIGJ1dCBhcmUgd2hhdCBzeXNjb25maWcucHkgaXRzZWxmIHVzZXMKKyAgICAgICAgaWYgc2VsZi50YXJnZXRfdmVyc2lvbiBhbmQgc2VsZi50YXJnZXRfdmVyc2lvbiA8IGN1cl92ZXJzaW9uOgorICAgICAgICAgICAgaWYgc2VsZi50YXJnZXRfdmVyc2lvbiA8ICIyLjQiOgorICAgICAgICAgICAgICAgIGJ2ID0gNi4wCisgICAgICAgICAgICBlbGlmIHNlbGYudGFyZ2V0X3ZlcnNpb24gPT0gIjIuNCI6CisgICAgICAgICAgICAgICAgYnYgPSA3LjEKKyAgICAgICAgICAgIGVsaWYgc2VsZi50YXJnZXRfdmVyc2lvbiA9PSAiMi41IjoKKyAgICAgICAgICAgICAgICBidiA9IDguMAorICAgICAgICAgICAgZWxpZiBzZWxmLnRhcmdldF92ZXJzaW9uIDw9ICIzLjIiOgorICAgICAgICAgICAgICAgIGJ2ID0gOS4wCisgICAgICAgICAgICBlbGlmIHNlbGYudGFyZ2V0X3ZlcnNpb24gPD0gIjMuNCI6CisgICAgICAgICAgICAgICAgYnYgPSAxMC4wCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIHNlbGYudGFyZ2V0X3ZlcnNpb24gPCAiMi40IjoKLSAgICAgICAgICAgICAgICAgICAgYnYgPSA2LjAKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBidiA9IDcuMQorICAgICAgICAgICAgICAgIGJ2ID0gMTQuMAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBmb3IgY3VycmVudCB2ZXJzaW9uIC0gdXNlIGF1dGhvcml0YXRpdmUgY2hlY2suCi0gICAgICAgICAgICBidiA9IGdldF9idWlsZF92ZXJzaW9uKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmcm9tIG1zdmNydCBpbXBvcnQgQ1JUX0FTU0VNQkxZX1ZFUlNJT04KKyAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgICAgICAjIGNyb3NzLWJ1aWxkaW5nLCBzbyBhc3N1bWUgdGhlIGxhdGVzdCB2ZXJzaW9uCisgICAgICAgICAgICAgICAgYnYgPSAxNC4wCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJ2ID0gZmxvYXQoJy4nLmpvaW4oQ1JUX0FTU0VNQkxZX1ZFUlNJT04uc3BsaXQoJy4nLCAyKVs6Ml0pKQorCiAKICAgICAgICAgIyB3aW5pbnN0LXgueS5leGUgaXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoaXMgZmlsZQogICAgICAgICBkaXJlY3RvcnkgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGQucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGQucHkKaW5kZXggY2ZjMTVjZi4uMzM3ZGQwYiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZC5weQpAQCAtMzYsNiArMzYsOCBAQAogICAgICAgICAgIihkZWZhdWx0OiAlcykiICUgZ2V0X3BsYXRmb3JtKCkpLAogICAgICAgICAoJ2NvbXBpbGVyPScsICdjJywKICAgICAgICAgICJzcGVjaWZ5IHRoZSBjb21waWxlciB0eXBlIiksCisgICAgICAgICgncGFyYWxsZWw9JywgJ2onLAorICAgICAgICAgIm51bWJlciBvZiBwYXJhbGxlbCBidWlsZCBqb2JzIiksCiAgICAgICAgICgnZGVidWcnLCAnZycsCiAgICAgICAgICAiY29tcGlsZSBleHRlbnNpb25zIGFuZCBsaWJyYXJpZXMgd2l0aCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24iKSwKICAgICAgICAgKCdmb3JjZScsICdmJywKQEAgLTY1LDYgKzY3LDcgQEAKICAgICAgICAgc2VsZi5kZWJ1ZyA9IE5vbmUKICAgICAgICAgc2VsZi5mb3JjZSA9IDAKICAgICAgICAgc2VsZi5leGVjdXRhYmxlID0gTm9uZQorICAgICAgICBzZWxmLnBhcmFsbGVsID0gTm9uZQogCiAgICAgZGVmIGZpbmFsaXplX29wdGlvbnMoc2VsZik6CiAgICAgICAgIGlmIHNlbGYucGxhdF9uYW1lIGlzIE5vbmU6CkBAIC0xMTYsNiArMTE5LDEyIEBACiAgICAgICAgIGlmIHNlbGYuZXhlY3V0YWJsZSBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlID0gb3MucGF0aC5ub3JtcGF0aChzeXMuZXhlY3V0YWJsZSkKIAorICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYucGFyYWxsZWwsIHN0cik6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXJhbGxlbCA9IGludChzZWxmLnBhcmFsbGVsKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzT3B0aW9uRXJyb3IoInBhcmFsbGVsIHNob3VsZCBiZSBhbiBpbnRlZ2VyIikKKwogICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgICMgUnVuIGFsbCByZWxldmFudCBzdWItY29tbWFuZHMuICBUaGlzIHdpbGwgYmUgc29tZSBzdWJzZXQgb2Y6CiAgICAgICAgICMgIC0gYnVpbGRfcHkgICAgICAtIHB1cmUgUHl0aG9uIG1vZHVsZXMKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5CmluZGV4IGFjYmU2NDguLmQ0Y2IxMWUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQpAQCAtNCw3ICs0LDEwIEBACiBtb2R1bGVzIChjdXJyZW50bHkgbGltaXRlZCB0byBDIGV4dGVuc2lvbnMsIHNob3VsZCBhY2NvbW1vZGF0ZSBDKysKIGV4dGVuc2lvbnMgQVNBUCkuIiIiCiAKLWltcG9ydCBzeXMsIG9zLCByZQoraW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCiBmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBDb21tYW5kCiBmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0ICoKIGZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgY3VzdG9taXplX2NvbXBpbGVyLCBnZXRfcHl0aG9uX3ZlcnNpb24KQEAgLTE2LDEwICsxOSw2IEBACiAKIGZyb20gc2l0ZSBpbXBvcnQgVVNFUl9CQVNFCiAKLWlmIG9zLm5hbWUgPT0gJ250JzoKLSAgICBmcm9tIGRpc3R1dGlscy5tc3ZjY29tcGlsZXIgaW1wb3J0IGdldF9idWlsZF92ZXJzaW9uCi0gICAgTVNWQ19WRVJTSU9OID0gaW50KGdldF9idWlsZF92ZXJzaW9uKCkpCi0KICMgQW4gZXh0ZW5zaW9uIG5hbWUgaXMganVzdCBhIGRvdC1zZXBhcmF0ZWQgbGlzdCBvZiBQeXRob24gTkFNRXMgKGllLgogIyB0aGUgc2FtZSBhcyBhIGZ1bGx5LXF1YWxpZmllZCBtb2R1bGUgbmFtZSkuCiBleHRlbnNpb25fbmFtZV9yZSA9IHJlLmNvbXBpbGUgXApAQCAtODUsNiArODQsOCBAQAogICAgICAgICAgImZvcmNpYmx5IGJ1aWxkIGV2ZXJ5dGhpbmcgKGlnbm9yZSBmaWxlIHRpbWVzdGFtcHMpIiksCiAgICAgICAgICgnY29tcGlsZXI9JywgJ2MnLAogICAgICAgICAgInNwZWNpZnkgdGhlIGNvbXBpbGVyIHR5cGUiKSwKKyAgICAgICAgKCdwYXJhbGxlbD0nLCAnaicsCisgICAgICAgICAibnVtYmVyIG9mIHBhcmFsbGVsIGJ1aWxkIGpvYnMiKSwKICAgICAgICAgKCdzd2lnLWNwcCcsIE5vbmUsCiAgICAgICAgICAibWFrZSBTV0lHIGNyZWF0ZSBDKysgZmlsZXMgKGRlZmF1bHQgaXMgQykiKSwKICAgICAgICAgKCdzd2lnLW9wdHM9JywgTm9uZSwKQEAgLTEyNCw2ICsxMjUsNyBAQAogICAgICAgICBzZWxmLnN3aWdfY3BwID0gTm9uZQogICAgICAgICBzZWxmLnN3aWdfb3B0cyA9IE5vbmUKICAgICAgICAgc2VsZi51c2VyID0gTm9uZQorICAgICAgICBzZWxmLnBhcmFsbGVsID0gTm9uZQogCiAgICAgZGVmIGZpbmFsaXplX29wdGlvbnMoc2VsZik6CiAgICAgICAgIGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKQEAgLTEzNCw2ICsxMzYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2NvbXBpbGVyJywgJ2NvbXBpbGVyJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZGVidWcnLCAnZGVidWcnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdmb3JjZScsICdmb3JjZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3BhcmFsbGVsJywgJ3BhcmFsbGVsJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgncGxhdF9uYW1lJywgJ3BsYXRfbmFtZScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAKQEAgLTE5OSwyNyArMjAyLDE3IEBACiAgICAgICAgICAgICBfc3lzX2hvbWUgPSBnZXRhdHRyKHN5cywgJ19ob21lJywgTm9uZSkKICAgICAgICAgICAgIGlmIF9zeXNfaG9tZToKICAgICAgICAgICAgICAgICBzZWxmLmxpYnJhcnlfZGlycy5hcHBlbmQoX3N5c19ob21lKQotICAgICAgICAgICAgaWYgTVNWQ19WRVJTSU9OID49IDk6Ci0gICAgICAgICAgICAgICAgIyBVc2UgdGhlIC5saWIgZmlsZXMgZm9yIHRoZSBjb3JyZWN0IGFyY2hpdGVjdHVyZQotICAgICAgICAgICAgICAgIGlmIHNlbGYucGxhdF9uYW1lID09ICd3aW4zMic6Ci0gICAgICAgICAgICAgICAgICAgIHN1ZmZpeCA9ICcnCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIyB3aW4tYW1kNjQgb3Igd2luLWlhNjQKLSAgICAgICAgICAgICAgICAgICAgc3VmZml4ID0gc2VsZi5wbGF0X25hbWVbNDpdCi0gICAgICAgICAgICAgICAgbmV3X2xpYiA9IG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICdQQ2J1aWxkJykKLSAgICAgICAgICAgICAgICBpZiBzdWZmaXg6Ci0gICAgICAgICAgICAgICAgICAgIG5ld19saWIgPSBvcy5wYXRoLmpvaW4obmV3X2xpYiwgc3VmZml4KQotICAgICAgICAgICAgICAgIHNlbGYubGlicmFyeV9kaXJzLmFwcGVuZChuZXdfbGliKQogCi0gICAgICAgICAgICBlbGlmIE1TVkNfVkVSU0lPTiA9PSA4OgotICAgICAgICAgICAgICAgIHNlbGYubGlicmFyeV9kaXJzLmFwcGVuZChvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUEMnLCAnVlM4LjAnKSkKLSAgICAgICAgICAgIGVsaWYgTVNWQ19WRVJTSU9OID09IDc6Ci0gICAgICAgICAgICAgICAgc2VsZi5saWJyYXJ5X2RpcnMuYXBwZW5kKG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQQycsICdWUzcuMScpKQorICAgICAgICAgICAgIyBVc2UgdGhlIC5saWIgZmlsZXMgZm9yIHRoZSBjb3JyZWN0IGFyY2hpdGVjdHVyZQorICAgICAgICAgICAgaWYgc2VsZi5wbGF0X25hbWUgPT0gJ3dpbjMyJzoKKyAgICAgICAgICAgICAgICBzdWZmaXggPSAnd2luMzInCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYubGlicmFyeV9kaXJzLmFwcGVuZChvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUEMnLCAnVkM2JykpCisgICAgICAgICAgICAgICAgIyB3aW4tYW1kNjQgb3Igd2luLWlhNjQKKyAgICAgICAgICAgICAgICBzdWZmaXggPSBzZWxmLnBsYXRfbmFtZVs0Ol0KKyAgICAgICAgICAgIG5ld19saWIgPSBvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAnUENidWlsZCcpCisgICAgICAgICAgICBpZiBzdWZmaXg6CisgICAgICAgICAgICAgICAgbmV3X2xpYiA9IG9zLnBhdGguam9pbihuZXdfbGliLCBzdWZmaXgpCisgICAgICAgICAgICBzZWxmLmxpYnJhcnlfZGlycy5hcHBlbmQobmV3X2xpYikKIAogICAgICAgICAjIGZvciBleHRlbnNpb25zIHVuZGVyIEN5Z3dpbiBhbmQgQXRoZU9TIFB5dGhvbidzIGxpYnJhcnkgZGlyZWN0b3J5IG11c3QgYmUKICAgICAgICAgIyBhcHBlbmRlZCB0byBsaWJyYXJ5X2RpcnMKQEAgLTI3NCw2ICsyNjcsMTIgQEAKICAgICAgICAgICAgICAgICBzZWxmLmxpYnJhcnlfZGlycy5hcHBlbmQodXNlcl9saWIpCiAgICAgICAgICAgICAgICAgc2VsZi5ycGF0aC5hcHBlbmQodXNlcl9saWIpCiAKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnBhcmFsbGVsLCBzdHIpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYucGFyYWxsZWwgPSBpbnQoc2VsZi5wYXJhbGxlbCkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc09wdGlvbkVycm9yKCJwYXJhbGxlbCBzaG91bGQgYmUgYW4gaW50ZWdlciIpCisKICAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICBmcm9tIGRpc3R1dGlscy5jY29tcGlsZXIgaW1wb3J0IG5ld19jb21waWxlcgogCkBAIC00NDIsMTUgKzQ0MSw0NSBAQAogICAgIGRlZiBidWlsZF9leHRlbnNpb25zKHNlbGYpOgogICAgICAgICAjIEZpcnN0LCBzYW5pdHktY2hlY2sgdGhlICdleHRlbnNpb25zJyBsaXN0CiAgICAgICAgIHNlbGYuY2hlY2tfZXh0ZW5zaW9uc19saXN0KHNlbGYuZXh0ZW5zaW9ucykKKyAgICAgICAgaWYgc2VsZi5wYXJhbGxlbDoKKyAgICAgICAgICAgIHNlbGYuX2J1aWxkX2V4dGVuc2lvbnNfcGFyYWxsZWwoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fYnVpbGRfZXh0ZW5zaW9uc19zZXJpYWwoKQogCisgICAgZGVmIF9idWlsZF9leHRlbnNpb25zX3BhcmFsbGVsKHNlbGYpOgorICAgICAgICB3b3JrZXJzID0gc2VsZi5wYXJhbGxlbAorICAgICAgICBpZiBzZWxmLnBhcmFsbGVsIGlzIFRydWU6CisgICAgICAgICAgICB3b3JrZXJzID0gb3MuY3B1X2NvdW50KCkgICMgbWF5IHJldHVybiBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZyb20gY29uY3VycmVudC5mdXR1cmVzIGltcG9ydCBUaHJlYWRQb29sRXhlY3V0b3IKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgd29ya2VycyA9IE5vbmUKKworICAgICAgICBpZiB3b3JrZXJzIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9idWlsZF9leHRlbnNpb25zX3NlcmlhbCgpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICB3aXRoIFRocmVhZFBvb2xFeGVjdXRvcihtYXhfd29ya2Vycz13b3JrZXJzKSBhcyBleGVjdXRvcjoKKyAgICAgICAgICAgIGZ1dHVyZXMgPSBbZXhlY3V0b3Iuc3VibWl0KHNlbGYuYnVpbGRfZXh0ZW5zaW9uLCBleHQpCisgICAgICAgICAgICAgICAgICAgICAgIGZvciBleHQgaW4gc2VsZi5leHRlbnNpb25zXQorICAgICAgICAgICAgZm9yIGV4dCwgZnV0IGluIHppcChzZWxmLmV4dGVuc2lvbnMsIGZ1dHVyZXMpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5fZmlsdGVyX2J1aWxkX2Vycm9ycyhleHQpOgorICAgICAgICAgICAgICAgICAgICBmdXQucmVzdWx0KCkKKworICAgIGRlZiBfYnVpbGRfZXh0ZW5zaW9uc19zZXJpYWwoc2VsZik6CiAgICAgICAgIGZvciBleHQgaW4gc2VsZi5leHRlbnNpb25zOgotICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLl9maWx0ZXJfYnVpbGRfZXJyb3JzKGV4dCk6CiAgICAgICAgICAgICAgICAgc2VsZi5idWlsZF9leHRlbnNpb24oZXh0KQotICAgICAgICAgICAgZXhjZXB0IChDQ29tcGlsZXJFcnJvciwgRGlzdHV0aWxzRXJyb3IsIENvbXBpbGVFcnJvcikgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBub3QgZXh0Lm9wdGlvbmFsOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgIHNlbGYud2FybignYnVpbGRpbmcgZXh0ZW5zaW9uICIlcyIgZmFpbGVkOiAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAoZXh0Lm5hbWUsIGUpKQorCisgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICBkZWYgX2ZpbHRlcl9idWlsZF9lcnJvcnMoc2VsZiwgZXh0KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgZXhjZXB0IChDQ29tcGlsZXJFcnJvciwgRGlzdHV0aWxzRXJyb3IsIENvbXBpbGVFcnJvcikgYXMgZToKKyAgICAgICAgICAgIGlmIG5vdCBleHQub3B0aW9uYWw6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHNlbGYud2FybignYnVpbGRpbmcgZXh0ZW5zaW9uICIlcyIgZmFpbGVkOiAlcycgJQorICAgICAgICAgICAgICAgICAgICAgIChleHQubmFtZSwgZSkpCiAKICAgICBkZWYgYnVpbGRfZXh0ZW5zaW9uKHNlbGYsIGV4dCk6CiAgICAgICAgIHNvdXJjZXMgPSBleHQuc291cmNlcwpAQCAtNTAyLDE1ICs1MzEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9wb3N0YXJncz1leHRyYV9hcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPWV4dC5kZXBlbmRzKQogCi0gICAgICAgICMgWFhYIC0tIHRoaXMgaXMgYSBWaWxlIEhBQ0shCi0gICAgICAgICMKLSAgICAgICAgIyBUaGUgc2V0dXAucHkgc2NyaXB0IGZvciBQeXRob24gb24gVW5peCBuZWVkcyB0byBiZSBhYmxlIHRvCi0gICAgICAgICMgZ2V0IHRoaXMgbGlzdCBzbyBpdCBjYW4gcGVyZm9ybSBhbGwgdGhlIGNsZWFuIHVwIG5lZWRlZCB0bwotICAgICAgICAjIGF2b2lkIGtlZXBpbmcgb2JqZWN0IGZpbGVzIGFyb3VuZCB3aGVuIGNsZWFuaW5nIG91dCBhIGZhaWxlZAotICAgICAgICAjIGJ1aWxkIG9mIGFuIGV4dGVuc2lvbiBtb2R1bGUuICBTaW5jZSBEaXN0dXRpbHMgZG9lcyBub3QKLSAgICAgICAgIyB0cmFjayBkZXBlbmRlbmNpZXMsIHdlIGhhdmUgdG8gZ2V0IHJpZCBvZiBpbnRlcm1lZGlhdGVzIHRvCi0gICAgICAgICMgZW5zdXJlIGFsbCB0aGUgaW50ZXJtZWRpYXRlcyB3aWxsIGJlIHByb3Blcmx5IHJlLWJ1aWx0LgotICAgICAgICAjCisgICAgICAgICMgWFhYIG91dGRhdGVkIHZhcmlhYmxlLCBrZXB0IGhlcmUgaW4gY2FzZSB0aGlyZC1wYXJ0IGNvZGUKKyAgICAgICAgIyBuZWVkcyBpdC4KICAgICAgICAgc2VsZi5fYnVpbHRfb2JqZWN0cyA9IG9iamVjdHNbOl0KIAogICAgICAgICAjIE5vdyBsaW5rIHRoZSBvYmplY3QgZmlsZXMgdG9nZXRoZXIgaW50byBhICJzaGFyZWQgb2JqZWN0IiAtLQpAQCAtNjU1LDEwICs2NzcsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgZnJvbSBkaXN0dXRpbHMuc3lzY29uZmlnIGltcG9ydCBnZXRfY29uZmlnX3ZhcgogICAgICAgICBleHRfcGF0aCA9IGV4dF9uYW1lLnNwbGl0KCcuJykKLSAgICAgICAgIyBleHRlbnNpb25zIGluIGRlYnVnX21vZGUgYXJlIG5hbWVkICdtb2R1bGVfZC5weWQnIHVuZGVyIHdpbmRvd3MKICAgICAgICAgZXh0X3N1ZmZpeCA9IGdldF9jb25maWdfdmFyKCdFWFRfU1VGRklYJykKLSAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnIGFuZCBzZWxmLmRlYnVnOgotICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbigqZXh0X3BhdGgpICsgJ19kJyArIGV4dF9zdWZmaXgKICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbigqZXh0X3BhdGgpICsgZXh0X3N1ZmZpeAogCiAgICAgZGVmIGdldF9leHBvcnRfc3ltYm9scyhzZWxmLCBleHQpOgpAQCAtNjgzLDcgKzcwMiw3IEBACiAgICAgICAgICMgdG8gbmVlZCBpdCBtZW50aW9uZWQgZXhwbGljaXRseSwgdGhvdWdoLCBzbyB0aGF0J3Mgd2hhdCB3ZSBkby4KICAgICAgICAgIyBBcHBlbmQgJ19kJyB0byB0aGUgcHl0aG9uIGltcG9ydCBsaWJyYXJ5IG9uIGRlYnVnIGJ1aWxkcy4KICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgICAgICAgICBmcm9tIGRpc3R1dGlscy5tc3ZjY29tcGlsZXIgaW1wb3J0IE1TVkNDb21waWxlcgorICAgICAgICAgICAgZnJvbSBkaXN0dXRpbHMuX21zdmNjb21waWxlciBpbXBvcnQgTVNWQ0NvbXBpbGVyCiAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzZWxmLmNvbXBpbGVyLCBNU1ZDQ29tcGlsZXIpOgogICAgICAgICAgICAgICAgIHRlbXBsYXRlID0gInB5dGhvbiVkJWQiCiAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZzoKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9weS5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9weS5weQppbmRleCA5MTAwYjk2Li5jZjBjYTU3IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfcHkucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3B5LnB5CkBAIC0zMTQsMTAgKzMxNCwxMCBAQAogICAgICAgICAgICAgaWYgaW5jbHVkZV9ieXRlY29kZToKICAgICAgICAgICAgICAgICBpZiBzZWxmLmNvbXBpbGU6CiAgICAgICAgICAgICAgICAgICAgIG91dHB1dHMuYXBwZW5kKGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKAotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGRlYnVnX292ZXJyaWRlPVRydWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIG9wdGltaXphdGlvbj0nJykpCiAgICAgICAgICAgICAgICAgaWYgc2VsZi5vcHRpbWl6ZSA+IDA6CiAgICAgICAgICAgICAgICAgICAgIG91dHB1dHMuYXBwZW5kKGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKAotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGRlYnVnX292ZXJyaWRlPUZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBvcHRpbWl6YXRpb249c2VsZi5vcHRpbWl6ZSkpCiAKICAgICAgICAgb3V0cHV0cyArPSBbCiAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oYnVpbGRfZGlyLCBmaWxlbmFtZSkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKaW5kZXggZDc2OGRjNS4uNjdkYjAwNyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKQEAgLTUxLDcgKzUxLDcgQEAKICAgICAgICAgJ3B1cmVsaWInOiAnJHVzZXJzaXRlJywKICAgICAgICAgJ3BsYXRsaWInOiAnJHVzZXJzaXRlJywKICAgICAgICAgJ2hlYWRlcnMnOiAnJHVzZXJiYXNlL1B5dGhvbiRweV92ZXJzaW9uX25vZG90L0luY2x1ZGUvJGRpc3RfbmFtZScsCi0gICAgICAgICdzY3JpcHRzJzogJyR1c2VyYmFzZS9TY3JpcHRzJywKKyAgICAgICAgJ3NjcmlwdHMnOiAnJHVzZXJiYXNlL1B5dGhvbiRweV92ZXJzaW9uX25vZG90L1NjcmlwdHMnLAogICAgICAgICAnZGF0YScgICA6ICckdXNlcmJhc2UnLAogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsX2xpYi5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsX2xpYi5weQppbmRleCAyMTU4MTNiLi42MTU0Y2YwIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbF9saWIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfbGliLnB5CkBAIC0yMiwxNSArMjIsMTUgQEAKICAgICAjIHBvc3NpYmxlIHNjZW5hcmlvczoKICAgICAjICAgMSkgbm8gY29tcGlsYXRpb24gYXQgYWxsICgtLW5vLWNvbXBpbGUgLS1uby1vcHRpbWl6ZSkKICAgICAjICAgMikgY29tcGlsZSAucHljIG9ubHkgKC0tY29tcGlsZSAtLW5vLW9wdGltaXplOyBkZWZhdWx0KQotICAgICMgICAzKSBjb21waWxlIC5weWMgYW5kICJsZXZlbCAxIiAucHlvICgtLWNvbXBpbGUgLS1vcHRpbWl6ZSkKLSAgICAjICAgNCkgY29tcGlsZSAibGV2ZWwgMSIgLnB5byBvbmx5ICgtLW5vLWNvbXBpbGUgLS1vcHRpbWl6ZSkKLSAgICAjICAgNSkgY29tcGlsZSAucHljIGFuZCAibGV2ZWwgMiIgLnB5byAoLS1jb21waWxlIC0tb3B0aW1pemUtbW9yZSkKLSAgICAjICAgNikgY29tcGlsZSAibGV2ZWwgMiIgLnB5byBvbmx5ICgtLW5vLWNvbXBpbGUgLS1vcHRpbWl6ZS1tb3JlKQorICAgICMgICAzKSBjb21waWxlIC5weWMgYW5kICJvcHQtMSIgLnB5YyAoLS1jb21waWxlIC0tb3B0aW1pemUpCisgICAgIyAgIDQpIGNvbXBpbGUgIm9wdC0xIiAucHljIG9ubHkgKC0tbm8tY29tcGlsZSAtLW9wdGltaXplKQorICAgICMgICA1KSBjb21waWxlIC5weWMgYW5kICJvcHQtMiIgLnB5YyAoLS1jb21waWxlIC0tb3B0aW1pemUtbW9yZSkKKyAgICAjICAgNikgY29tcGlsZSAib3B0LTIiIC5weWMgb25seSAoLS1uby1jb21waWxlIC0tb3B0aW1pemUtbW9yZSkKICAgICAjCi0gICAgIyBUaGUgVUkgZm9yIHRoaXMgaXMgdHdvIG9wdGlvbiwgJ2NvbXBpbGUnIGFuZCAnb3B0aW1pemUnLgorICAgICMgVGhlIFVJIGZvciB0aGlzIGlzIHR3byBvcHRpb25zLCAnY29tcGlsZScgYW5kICdvcHRpbWl6ZScuCiAgICAgIyAnY29tcGlsZScgaXMgc3RyaWN0bHkgYm9vbGVhbiwgYW5kIG9ubHkgZGVjaWRlcyB3aGV0aGVyIHRvCiAgICAgIyBnZW5lcmF0ZSAucHljIGZpbGVzLiAgJ29wdGltaXplJyBpcyB0aHJlZS13YXkgKDAsIDEsIG9yIDIpLCBhbmQKLSAgICAjIGRlY2lkZXMgYm90aCB3aGV0aGVyIHRvIGdlbmVyYXRlIC5weW8gZmlsZXMgYW5kIHdoYXQgbGV2ZWwgb2YKKyAgICAjIGRlY2lkZXMgYm90aCB3aGV0aGVyIHRvIGdlbmVyYXRlIC5weWMgZmlsZXMgYW5kIHdoYXQgbGV2ZWwgb2YKICAgICAjIG9wdGltaXphdGlvbiB0byB1c2UuCiAKICAgICB1c2VyX29wdGlvbnMgPSBbCkBAIC0xNjYsMTAgKzE2NiwxMCBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBzZWxmLmNvbXBpbGU6CiAgICAgICAgICAgICAgICAgYnl0ZWNvZGVfZmlsZXMuYXBwZW5kKGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKAotICAgICAgICAgICAgICAgICAgICBweV9maWxlLCBkZWJ1Z19vdmVycmlkZT1UcnVlKSkKKyAgICAgICAgICAgICAgICAgICAgcHlfZmlsZSwgb3B0aW1pemF0aW9uPScnKSkKICAgICAgICAgICAgIGlmIHNlbGYub3B0aW1pemUgPiAwOgogICAgICAgICAgICAgICAgIGJ5dGVjb2RlX2ZpbGVzLmFwcGVuZChpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgKLSAgICAgICAgICAgICAgICAgICAgcHlfZmlsZSwgZGVidWdfb3ZlcnJpZGU9RmFsc2UpKQorICAgICAgICAgICAgICAgICAgICBweV9maWxlLCBvcHRpbWl6YXRpb249c2VsZi5vcHRpbWl6ZSkpCiAKICAgICAgICAgcmV0dXJuIGJ5dGVjb2RlX2ZpbGVzCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC91cGxvYWQucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvdXBsb2FkLnB5CmluZGV4IDFhOTZlMjIuLjFjNGZjNDggMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC91cGxvYWQucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3VwbG9hZC5weQpAQCAtMSwxMSArMSwxNCBAQAotIiIiZGlzdHV0aWxzLmNvbW1hbmQudXBsb2FkCisiIiIKK2Rpc3R1dGlscy5jb21tYW5kLnVwbG9hZAogCi1JbXBsZW1lbnRzIHRoZSBEaXN0dXRpbHMgJ3VwbG9hZCcgc3ViY29tbWFuZCAodXBsb2FkIHBhY2thZ2UgdG8gUHlQSSkuIiIiCitJbXBsZW1lbnRzIHRoZSBEaXN0dXRpbHMgJ3VwbG9hZCcgc3ViY29tbWFuZCAodXBsb2FkIHBhY2thZ2UgdG8gYSBwYWNrYWdlCitpbmRleCkuCisiIiIKIAotaW1wb3J0IHN5cwotaW1wb3J0IG9zLCBpbwotaW1wb3J0IHNvY2tldAoraW1wb3J0IG9zCitpbXBvcnQgaW8KIGltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IGhhc2hsaWIKIGZyb20gYmFzZTY0IGltcG9ydCBzdGFuZGFyZF9iNjRlbmNvZGUKIGZyb20gdXJsbGliLnJlcXVlc3QgaW1wb3J0IHVybG9wZW4sIFJlcXVlc3QsIEhUVFBFcnJvcgogZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlCkBAIC0xNCwxMiArMTcsNiBAQAogZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IHNwYXduCiBmcm9tIGRpc3R1dGlscyBpbXBvcnQgbG9nCiAKLSMgdGhpcyBrZWVwcyBjb21wYXRpYmlsaXR5IGZvciAyLjMgYW5kIDIuNAotaWYgc3lzLnZlcnNpb24gPCAiMi41IjoKLSAgICBmcm9tIG1kNSBpbXBvcnQgbWQ1Ci1lbHNlOgotICAgIGZyb20gaGFzaGxpYiBpbXBvcnQgbWQ1Ci0KIGNsYXNzIHVwbG9hZChQeVBJUkNDb21tYW5kKToKIAogICAgIGRlc2NyaXB0aW9uID0gInVwbG9hZCBiaW5hcnkgcGFja2FnZSB0byBQeVBJIgpAQCAtNjAsNyArNTcsOCBAQAogCiAgICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuZGlzdHJpYnV0aW9uLmRpc3RfZmlsZXM6Ci0gICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNPcHRpb25FcnJvcigiTm8gZGlzdCBmaWxlIGNyZWF0ZWQgaW4gZWFybGllciBjb21tYW5kIikKKyAgICAgICAgICAgIG1zZyA9ICJObyBkaXN0IGZpbGUgY3JlYXRlZCBpbiBlYXJsaWVyIGNvbW1hbmQiCisgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNPcHRpb25FcnJvcihtc2cpCiAgICAgICAgIGZvciBjb21tYW5kLCBweXZlcnNpb24sIGZpbGVuYW1lIGluIHNlbGYuZGlzdHJpYnV0aW9uLmRpc3RfZmlsZXM6CiAgICAgICAgICAgICBzZWxmLnVwbG9hZF9maWxlKGNvbW1hbmQsIHB5dmVyc2lvbiwgZmlsZW5hbWUpCiAKQEAgLTEwMywxMCArMTAxLDEwIEBACiAgICAgICAgICAgICAnY29udGVudCc6IChvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSxjb250ZW50KSwKICAgICAgICAgICAgICdmaWxldHlwZSc6IGNvbW1hbmQsCiAgICAgICAgICAgICAncHl2ZXJzaW9uJzogcHl2ZXJzaW9uLAotICAgICAgICAgICAgJ21kNV9kaWdlc3QnOiBtZDUoY29udGVudCkuaGV4ZGlnZXN0KCksCisgICAgICAgICAgICAnbWQ1X2RpZ2VzdCc6IGhhc2hsaWIubWQ1KGNvbnRlbnQpLmhleGRpZ2VzdCgpLAogCiAgICAgICAgICAgICAjIGFkZGl0aW9uYWwgbWV0YS1kYXRhCi0gICAgICAgICAgICAnbWV0YWRhdGFfdmVyc2lvbicgOiAnMS4wJywKKyAgICAgICAgICAgICdtZXRhZGF0YV92ZXJzaW9uJzogJzEuMCcsCiAgICAgICAgICAgICAnc3VtbWFyeSc6IG1ldGEuZ2V0X2Rlc2NyaXB0aW9uKCksCiAgICAgICAgICAgICAnaG9tZV9wYWdlJzogbWV0YS5nZXRfdXJsKCksCiAgICAgICAgICAgICAnYXV0aG9yJzogbWV0YS5nZXRfY29udGFjdCgpLApAQCAtMTQ5LDcgKzE0Nyw3IEBACiAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGRhdGEuaXRlbXMoKToKICAgICAgICAgICAgIHRpdGxlID0gJ1xyXG5Db250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9IiVzIicgJSBrZXkKICAgICAgICAgICAgICMgaGFuZGxlIG11bHRpcGxlIGVudHJpZXMgZm9yIHRoZSBzYW1lIG5hbWUKLSAgICAgICAgICAgIGlmIHR5cGUodmFsdWUpICE9IHR5cGUoW10pOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIGxpc3QpOgogICAgICAgICAgICAgICAgIHZhbHVlID0gW3ZhbHVlXQogICAgICAgICAgICAgZm9yIHZhbHVlIGluIHZhbHVlOgogICAgICAgICAgICAgICAgIGlmIHR5cGUodmFsdWUpIGlzIHR1cGxlOgpAQCAtMTY2LDEzICsxNjQsMTUgQEAKICAgICAgICAgYm9keS53cml0ZShlbmRfYm91bmRhcnkpCiAgICAgICAgIGJvZHkgPSBib2R5LmdldHZhbHVlKCkKIAotICAgICAgICBzZWxmLmFubm91bmNlKCJTdWJtaXR0aW5nICVzIHRvICVzIiAlIChmaWxlbmFtZSwgc2VsZi5yZXBvc2l0b3J5KSwgbG9nLklORk8pCisgICAgICAgIG1zZyA9ICJTdWJtaXR0aW5nICVzIHRvICVzIiAlIChmaWxlbmFtZSwgc2VsZi5yZXBvc2l0b3J5KQorICAgICAgICBzZWxmLmFubm91bmNlKG1zZywgbG9nLklORk8pCiAKICAgICAgICAgIyBidWlsZCB0aGUgUmVxdWVzdAotICAgICAgICBoZWFkZXJzID0geydDb250ZW50LXR5cGUnOgotICAgICAgICAgICAgICAgICAgICAgICAgJ211bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSVzJyAlIGJvdW5kYXJ5LAotICAgICAgICAgICAgICAgICAgICdDb250ZW50LWxlbmd0aCc6IHN0cihsZW4oYm9keSkpLAotICAgICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYXV0aH0KKyAgICAgICAgaGVhZGVycyA9IHsKKyAgICAgICAgICAgICdDb250ZW50LXR5cGUnOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9JXMnICUgYm91bmRhcnksCisgICAgICAgICAgICAnQ29udGVudC1sZW5ndGgnOiBzdHIobGVuKGJvZHkpKSwKKyAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYXV0aCwKKyAgICAgICAgfQogCiAgICAgICAgIHJlcXVlc3QgPSBSZXF1ZXN0KHNlbGYucmVwb3NpdG9yeSwgZGF0YT1ib2R5LAogICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPWhlYWRlcnMpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvd2luaW5zdC0xNC4wLWFtZDY0LmV4ZSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTE0LjAtYW1kNjQuZXhlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNWU3OGQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvd2luaW5zdC0xNC4wLWFtZDY0LmV4ZQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvd2luaW5zdC0xNC4wLmV4ZSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTE0LjAuZXhlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjNDMyOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvd2luaW5zdC0xNC4wLmV4ZQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvcmUucHkgYi9MaWIvZGlzdHV0aWxzL2NvcmUucHkKaW5kZXggMmJmZTY2YS4uZjA1YjM0YiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb3JlLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29yZS5weQpAQCAtMjIxLDggKzIyMSw2IEBACiAgICAgICAgICMgSG1tLCBzaG91bGQgd2UgZG8gc29tZXRoaW5nIGlmIGV4aXRpbmcgd2l0aCBhIG5vbi16ZXJvIGNvZGUKICAgICAgICAgIyAoaWUuIGVycm9yKT8KICAgICAgICAgcGFzcwotICAgIGV4Y2VwdDoKLSAgICAgICAgcmFpc2UKIAogICAgIGlmIF9zZXR1cF9kaXN0cmlidXRpb24gaXMgTm9uZToKICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCgiJ2Rpc3R1dGlscy5jb3JlLnNldHVwKCknIHdhcyBuZXZlciBjYWxsZWQgLS0gIgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9kaXN0LnB5IGIvTGliL2Rpc3R1dGlscy9kaXN0LnB5CmluZGV4IDdlYjA0YmMuLmZmYjMzZmY2IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2Rpc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy9kaXN0LnB5CkBAIC00LDcgKzQsOSBAQAogYmVpbmcgYnVpbHQvaW5zdGFsbGVkL2Rpc3RyaWJ1dGVkLgogIiIiCiAKLWltcG9ydCBzeXMsIG9zLCByZQoraW1wb3J0IHN5cworaW1wb3J0IG9zCitpbXBvcnQgcmUKIGZyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2VfZnJvbV9maWxlCiAKIHRyeToKQEAgLTIyLDcgKzI0LDcgQEAKICMgdGhlIHNhbWUgYXMgYSBQeXRob24gTkFNRSAtLSBJIGRvbid0IGFsbG93IGxlYWRpbmcgdW5kZXJzY29yZXMuICBUaGUgZmFjdAogIyB0aGF0IHRoZXkncmUgdmVyeSBzaW1pbGFyIGlzIG5vIGNvaW5jaWRlbmNlOyB0aGUgZGVmYXVsdCBuYW1pbmcgc2NoZW1lIGlzCiAjIHRvIGxvb2sgZm9yIGEgUHl0aG9uIG1vZHVsZSBuYW1lZCBhZnRlciB0aGUgY29tbWFuZC4KLWNvbW1hbmRfcmUgPSByZS5jb21waWxlIChyJ15bYS16QS1aXShbYS16QS1aMC05X10qKSQnKQorY29tbWFuZF9yZSA9IHJlLmNvbXBpbGUocideW2EtekEtWl0oW2EtekEtWjAtOV9dKikkJykKIAogCiBjbGFzcyBEaXN0cmlidXRpb246CkBAIC0zOSw3ICs0MSw2IEBACiAgICAgU2VlIHRoZSBjb2RlIGZvciAnc2V0dXAoKScsIGluIGNvcmUucHksIGZvciBkZXRhaWxzLgogICAgICIiIgogCi0KICAgICAjICdnbG9iYWxfb3B0aW9ucycgZGVzY3JpYmVzIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9ucyB0aGF0IG1heSBiZQogICAgICMgc3VwcGxpZWQgdG8gdGhlIHNldHVwIHNjcmlwdCBwcmlvciB0byBhbnkgYWN0dWFsIGNvbW1hbmRzLgogICAgICMgRWcuICIuL3NldHVwLnB5IC1uIiBvciAiLi9zZXR1cC5weSAtLXF1aWV0IiBib3RoIHRha2UgYWR2YW50YWdlIG9mCkBAIC00OCwxMiArNDksMTMgQEAKICAgICAjIGRvbid0IHdhbnQgdG8gcG9sbHV0ZSB0aGUgY29tbWFuZHMgd2l0aCB0b28gbWFueSBvcHRpb25zIHRoYXQgdGhleQogICAgICMgaGF2ZSBtaW5pbWFsIGNvbnRyb2wgb3Zlci4KICAgICAjIFRoZSBmb3VydGggZW50cnkgZm9yIHZlcmJvc2UgbWVhbnMgdGhhdCBpdCBjYW4gYmUgcmVwZWF0ZWQuCi0gICAgZ2xvYmFsX29wdGlvbnMgPSBbKCd2ZXJib3NlJywgJ3YnLCAicnVuIHZlcmJvc2VseSAoZGVmYXVsdCkiLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAoJ3F1aWV0JywgJ3EnLCAicnVuIHF1aWV0bHkgKHR1cm5zIHZlcmJvc2l0eSBvZmYpIiksCi0gICAgICAgICAgICAgICAgICAgICAgKCdkcnktcnVuJywgJ24nLCAiZG9uJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmciKSwKLSAgICAgICAgICAgICAgICAgICAgICAoJ2hlbHAnLCAnaCcsICJzaG93IGRldGFpbGVkIGhlbHAgbWVzc2FnZSIpLAotICAgICAgICAgICAgICAgICAgICAgICgnbm8tdXNlci1jZmcnLCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAnaWdub3JlIHB5ZGlzdHV0aWxzLmNmZyBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5JyksCisgICAgZ2xvYmFsX29wdGlvbnMgPSBbCisgICAgICAgICgndmVyYm9zZScsICd2JywgInJ1biB2ZXJib3NlbHkgKGRlZmF1bHQpIiwgMSksCisgICAgICAgICgncXVpZXQnLCAncScsICJydW4gcXVpZXRseSAodHVybnMgdmVyYm9zaXR5IG9mZikiKSwKKyAgICAgICAgKCdkcnktcnVuJywgJ24nLCAiZG9uJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmciKSwKKyAgICAgICAgKCdoZWxwJywgJ2gnLCAic2hvdyBkZXRhaWxlZCBoZWxwIG1lc3NhZ2UiKSwKKyAgICAgICAgKCduby11c2VyLWNmZycsIE5vbmUsCisgICAgICAgICAgICAnaWdub3JlIHB5ZGlzdHV0aWxzLmNmZyBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5JyksCiAgICAgXQogCiAgICAgIyAnY29tbW9uX3VzYWdlJyBpcyBhIHNob3J0ICgyLTMgbGluZSkgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGNvbW1vbgpAQCAtMTE1LDEwICsxMTcsOSBAQAogICAgICMgbmVnYXRpdmUgb3B0aW9ucyBhcmUgb3B0aW9ucyB0aGF0IGV4Y2x1ZGUgb3RoZXIgb3B0aW9ucwogICAgIG5lZ2F0aXZlX29wdCA9IHsncXVpZXQnOiAndmVyYm9zZSd9CiAKLQogICAgICMgLS0gQ3JlYXRpb24vaW5pdGlhbGl6YXRpb24gbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLSAgICBkZWYgX19pbml0X18gKHNlbGYsIGF0dHJzPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhdHRycz1Ob25lKToKICAgICAgICAgIiIiQ29uc3RydWN0IGEgbmV3IERpc3RyaWJ1dGlvbiBpbnN0YW5jZTogaW5pdGlhbGl6ZSBhbGwgdGhlCiAgICAgICAgIGF0dHJpYnV0ZXMgb2YgYSBEaXN0cmlidXRpb24sIGFuZCB0aGVuIHVzZSAnYXR0cnMnIChhIGRpY3Rpb25hcnkKICAgICAgICAgbWFwcGluZyBhdHRyaWJ1dGUgbmFtZXMgdG8gdmFsdWVzKSB0byBhc3NpZ24gc29tZSBvZiB0aG9zZQpAQCAtNTMyLDE1ICs1MzMsMTUgQEAKICAgICAgICAgIyB0byBiZSBzdXJlIHRoYXQgdGhlIGJhc2ljICJjb21tYW5kIiBpbnRlcmZhY2UgaXMgaW1wbGVtZW50ZWQuCiAgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKGNtZF9jbGFzcywgQ29tbWFuZCk6CiAgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNDbGFzc0Vycm9yKAotICAgICAgICAgICAgICAgICAgImNvbW1hbmQgY2xhc3MgJXMgbXVzdCBzdWJjbGFzcyBDb21tYW5kIiAlIGNtZF9jbGFzcykKKyAgICAgICAgICAgICAgICAiY29tbWFuZCBjbGFzcyAlcyBtdXN0IHN1YmNsYXNzIENvbW1hbmQiICUgY21kX2NsYXNzKQogCiAgICAgICAgICMgQWxzbyBtYWtlIHN1cmUgdGhhdCB0aGUgY29tbWFuZCBvYmplY3QgcHJvdmlkZXMgYSBsaXN0IG9mIGl0cwogICAgICAgICAjIGtub3duIG9wdGlvbnMuCiAgICAgICAgIGlmIG5vdCAoaGFzYXR0cihjbWRfY2xhc3MsICd1c2VyX29wdGlvbnMnKSBhbmQKICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGNtZF9jbGFzcy51c2VyX29wdGlvbnMsIGxpc3QpKToKLSAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc0NsYXNzRXJyb3IoKCJjb21tYW5kIGNsYXNzICVzIG11c3QgcHJvdmlkZSAiICsKLSAgICAgICAgICAgICAgICAgICAiJ3VzZXJfb3B0aW9ucycgYXR0cmlidXRlIChhIGxpc3Qgb2YgdHVwbGVzKSIpICUgXAotICAgICAgICAgICAgICAgICAgY21kX2NsYXNzKQorICAgICAgICAgICAgbXNnID0gKCJjb21tYW5kIGNsYXNzICVzIG11c3QgcHJvdmlkZSAiCisgICAgICAgICAgICAgICAgIid1c2VyX29wdGlvbnMnIGF0dHJpYnV0ZSAoYSBsaXN0IG9mIHR1cGxlcykiKQorICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzQ2xhc3NFcnJvcihtc2cgJSBjbWRfY2xhc3MpCiAKICAgICAgICAgIyBJZiB0aGUgY29tbWFuZCBjbGFzcyBoYXMgYSBsaXN0IG9mIG5lZ2F0aXZlIGFsaWFzIG9wdGlvbnMsCiAgICAgICAgICMgbWVyZ2UgaXQgaW4gd2l0aCB0aGUgZ2xvYmFsIG5lZ2F0aXZlIGFsaWFzZXMuCkBAIC01NTIsMTIgKzU1MywxMSBAQAogICAgICAgICAjIENoZWNrIGZvciBoZWxwX29wdGlvbnMgaW4gY29tbWFuZCBjbGFzcy4gIFRoZXkgaGF2ZSBhIGRpZmZlcmVudAogICAgICAgICAjIGZvcm1hdCAodHVwbGUgb2YgZm91cikgc28gd2UgbmVlZCB0byBwcmVwcm9jZXNzIHRoZW0gaGVyZS4KICAgICAgICAgaWYgKGhhc2F0dHIoY21kX2NsYXNzLCAnaGVscF9vcHRpb25zJykgYW5kCi0gICAgICAgICAgICBpc2luc3RhbmNlKGNtZF9jbGFzcy5oZWxwX29wdGlvbnMsIGxpc3QpKToKKyAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGNtZF9jbGFzcy5oZWxwX29wdGlvbnMsIGxpc3QpKToKICAgICAgICAgICAgIGhlbHBfb3B0aW9ucyA9IGZpeF9oZWxwX29wdGlvbnMoY21kX2NsYXNzLmhlbHBfb3B0aW9ucykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGhlbHBfb3B0aW9ucyA9IFtdCiAKLQogICAgICAgICAjIEFsbCBjb21tYW5kcyBzdXBwb3J0IHRoZSBnbG9iYWwgb3B0aW9ucyB0b28sIGp1c3QgYnkgYWRkaW5nCiAgICAgICAgICMgaW4gJ2dsb2JhbF9vcHRpb25zJy4KICAgICAgICAgcGFyc2VyLnNldF9vcHRpb25fdGFibGUoc2VsZi5nbG9iYWxfb3B0aW9ucyArCkBAIC01NzAsNyArNTcwLDcgQEAKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGlmIChoYXNhdHRyKGNtZF9jbGFzcywgJ2hlbHBfb3B0aW9ucycpIGFuZAotICAgICAgICAgICAgaXNpbnN0YW5jZShjbWRfY2xhc3MuaGVscF9vcHRpb25zLCBsaXN0KSk6CisgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShjbWRfY2xhc3MuaGVscF9vcHRpb25zLCBsaXN0KSk6CiAgICAgICAgICAgICBoZWxwX29wdGlvbl9mb3VuZD0wCiAgICAgICAgICAgICBmb3IgKGhlbHBfb3B0aW9uLCBzaG9ydCwgZGVzYywgZnVuYykgaW4gY21kX2NsYXNzLmhlbHBfb3B0aW9uczoKICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKG9wdHMsIHBhcnNlci5nZXRfYXR0cl9uYW1lKGhlbHBfb3B0aW9uKSk6CkBAIC02NDcsNyArNjQ3LDcgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAga2xhc3MgPSBzZWxmLmdldF9jb21tYW5kX2NsYXNzKGNvbW1hbmQpCiAgICAgICAgICAgICBpZiAoaGFzYXR0cihrbGFzcywgJ2hlbHBfb3B0aW9ucycpIGFuZAotICAgICAgICAgICAgICAgIGlzaW5zdGFuY2Uoa2xhc3MuaGVscF9vcHRpb25zLCBsaXN0KSk6CisgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2Uoa2xhc3MuaGVscF9vcHRpb25zLCBsaXN0KSk6CiAgICAgICAgICAgICAgICAgcGFyc2VyLnNldF9vcHRpb25fdGFibGUoa2xhc3MudXNlcl9vcHRpb25zICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhfaGVscF9vcHRpb25zKGtsYXNzLmhlbHBfb3B0aW9ucykpCiAgICAgICAgICAgICBlbHNlOgpAQCAtODE0LDcgKzgxNCw3IEBACiAgICAgICAgICAgICBrbGFzc19uYW1lID0gY29tbWFuZAogCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgX19pbXBvcnRfXyAobW9kdWxlX25hbWUpCisgICAgICAgICAgICAgICAgX19pbXBvcnRfXyhtb2R1bGVfbmFtZSkKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBzeXMubW9kdWxlc1ttb2R1bGVfbmFtZV0KICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtODIzLDggKzgyMyw4IEBACiAgICAgICAgICAgICAgICAga2xhc3MgPSBnZXRhdHRyKG1vZHVsZSwga2xhc3NfbmFtZSkKICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNNb2R1bGVFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBjb21tYW5kICclcycgKG5vIGNsYXNzICclcycgaW4gbW9kdWxlICclcycpIgotICAgICAgICAgICAgICAgICAgICAgICUgKGNvbW1hbmQsIGtsYXNzX25hbWUsIG1vZHVsZV9uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgImludmFsaWQgY29tbWFuZCAnJXMnIChubyBjbGFzcyAnJXMnIGluIG1vZHVsZSAnJXMnKSIKKyAgICAgICAgICAgICAgICAgICAgJSAoY29tbWFuZCwga2xhc3NfbmFtZSwgbW9kdWxlX25hbWUpKQogCiAgICAgICAgICAgICBzZWxmLmNtZGNsYXNzW2NvbW1hbmRdID0ga2xhc3MKICAgICAgICAgICAgIHJldHVybiBrbGFzcwpAQCAtODQwLDcgKzg0MCw3IEBACiAgICAgICAgIGNtZF9vYmogPSBzZWxmLmNvbW1hbmRfb2JqLmdldChjb21tYW5kKQogICAgICAgICBpZiBub3QgY21kX29iaiBhbmQgY3JlYXRlOgogICAgICAgICAgICAgaWYgREVCVUc6Ci0gICAgICAgICAgICAgICAgc2VsZi5hbm5vdW5jZSgiRGlzdHJpYnV0aW9uLmdldF9jb21tYW5kX29iaigpOiAiIFwKKyAgICAgICAgICAgICAgICBzZWxmLmFubm91bmNlKCJEaXN0cmlidXRpb24uZ2V0X2NvbW1hbmRfb2JqKCk6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjcmVhdGluZyAnJXMnIGNvbW1hbmQgb2JqZWN0IiAlIGNvbW1hbmQpCiAKICAgICAgICAgICAgIGtsYXNzID0gc2VsZi5nZXRfY29tbWFuZF9jbGFzcyhjb21tYW5kKQpAQCAtODk3LDggKzg5Nyw4IEBACiAgICAgICAgICAgICAgICAgICAgIHNldGF0dHIoY29tbWFuZF9vYmosIG9wdGlvbiwgdmFsdWUpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzT3B0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJlcnJvciBpbiAlczogY29tbWFuZCAnJXMnIGhhcyBubyBzdWNoIG9wdGlvbiAnJXMnIgotICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzb3VyY2UsIGNvbW1hbmRfbmFtZSwgb3B0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICJlcnJvciBpbiAlczogY29tbWFuZCAnJXMnIGhhcyBubyBzdWNoIG9wdGlvbiAnJXMnIgorICAgICAgICAgICAgICAgICAgICAgICAgJSAoc291cmNlLCBjb21tYW5kX25hbWUsIG9wdGlvbikpCiAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBtc2c6CiAgICAgICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzT3B0aW9uRXJyb3IobXNnKQogCkBAIC05NzQsNyArOTc0LDYgQEAKICAgICAgICAgY21kX29iai5ydW4oKQogICAgICAgICBzZWxmLmhhdmVfcnVuW2NvbW1hbmRdID0gMQogCi0KICAgICAjIC0tIERpc3RyaWJ1dGlvbiBxdWVyeSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgZGVmIGhhc19wdXJlX21vZHVsZXMoc2VsZik6CkBAIC0xMTEyLDE3ICsxMTExLDE3IEBACiAgICAgICAgICIiIgogICAgICAgICB2ZXJzaW9uID0gJzEuMCcKICAgICAgICAgaWYgKHNlbGYucHJvdmlkZXMgb3Igc2VsZi5yZXF1aXJlcyBvciBzZWxmLm9ic29sZXRlcyBvcgotICAgICAgICAgICAgc2VsZi5jbGFzc2lmaWVycyBvciBzZWxmLmRvd25sb2FkX3VybCk6CisgICAgICAgICAgICAgICAgc2VsZi5jbGFzc2lmaWVycyBvciBzZWxmLmRvd25sb2FkX3VybCk6CiAgICAgICAgICAgICB2ZXJzaW9uID0gJzEuMScKIAogICAgICAgICBmaWxlLndyaXRlKCdNZXRhZGF0YS1WZXJzaW9uOiAlc1xuJyAlIHZlcnNpb24pCi0gICAgICAgIGZpbGUud3JpdGUoJ05hbWU6ICVzXG4nICUgc2VsZi5nZXRfbmFtZSgpICkKLSAgICAgICAgZmlsZS53cml0ZSgnVmVyc2lvbjogJXNcbicgJSBzZWxmLmdldF92ZXJzaW9uKCkgKQotICAgICAgICBmaWxlLndyaXRlKCdTdW1tYXJ5OiAlc1xuJyAlIHNlbGYuZ2V0X2Rlc2NyaXB0aW9uKCkgKQotICAgICAgICBmaWxlLndyaXRlKCdIb21lLXBhZ2U6ICVzXG4nICUgc2VsZi5nZXRfdXJsKCkgKQotICAgICAgICBmaWxlLndyaXRlKCdBdXRob3I6ICVzXG4nICUgc2VsZi5nZXRfY29udGFjdCgpICkKLSAgICAgICAgZmlsZS53cml0ZSgnQXV0aG9yLWVtYWlsOiAlc1xuJyAlIHNlbGYuZ2V0X2NvbnRhY3RfZW1haWwoKSApCi0gICAgICAgIGZpbGUud3JpdGUoJ0xpY2Vuc2U6ICVzXG4nICUgc2VsZi5nZXRfbGljZW5zZSgpICkKKyAgICAgICAgZmlsZS53cml0ZSgnTmFtZTogJXNcbicgJSBzZWxmLmdldF9uYW1lKCkpCisgICAgICAgIGZpbGUud3JpdGUoJ1ZlcnNpb246ICVzXG4nICUgc2VsZi5nZXRfdmVyc2lvbigpKQorICAgICAgICBmaWxlLndyaXRlKCdTdW1tYXJ5OiAlc1xuJyAlIHNlbGYuZ2V0X2Rlc2NyaXB0aW9uKCkpCisgICAgICAgIGZpbGUud3JpdGUoJ0hvbWUtcGFnZTogJXNcbicgJSBzZWxmLmdldF91cmwoKSkKKyAgICAgICAgZmlsZS53cml0ZSgnQXV0aG9yOiAlc1xuJyAlIHNlbGYuZ2V0X2NvbnRhY3QoKSkKKyAgICAgICAgZmlsZS53cml0ZSgnQXV0aG9yLWVtYWlsOiAlc1xuJyAlIHNlbGYuZ2V0X2NvbnRhY3RfZW1haWwoKSkKKyAgICAgICAgZmlsZS53cml0ZSgnTGljZW5zZTogJXNcbicgJSBzZWxmLmdldF9saWNlbnNlKCkpCiAgICAgICAgIGlmIHNlbGYuZG93bmxvYWRfdXJsOgogICAgICAgICAgICAgZmlsZS53cml0ZSgnRG93bmxvYWQtVVJMOiAlc1xuJyAlIHNlbGYuZG93bmxvYWRfdXJsKQogCkBAIC0xMTMxLDcgKzExMzAsNyBAQAogCiAgICAgICAgIGtleXdvcmRzID0gJywnLmpvaW4oc2VsZi5nZXRfa2V5d29yZHMoKSkKICAgICAgICAgaWYga2V5d29yZHM6Ci0gICAgICAgICAgICBmaWxlLndyaXRlKCdLZXl3b3JkczogJXNcbicgJSBrZXl3b3JkcyApCisgICAgICAgICAgICBmaWxlLndyaXRlKCdLZXl3b3JkczogJXNcbicgJSBrZXl3b3JkcykKIAogICAgICAgICBzZWxmLl93cml0ZV9saXN0KGZpbGUsICdQbGF0Zm9ybScsIHNlbGYuZ2V0X3BsYXRmb3JtcygpKQogICAgICAgICBzZWxmLl93cml0ZV9saXN0KGZpbGUsICdDbGFzc2lmaWVyJywgc2VsZi5nZXRfY2xhc3NpZmllcnMoKSkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvZXh0ZW5zaW9uLnB5IGIvTGliL2Rpc3R1dGlscy9leHRlbnNpb24ucHkKaW5kZXggYTkzNjU1YS4uN2VmYmI3NCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9leHRlbnNpb24ucHkKKysrIGIvTGliL2Rpc3R1dGlscy9leHRlbnNpb24ucHkKQEAgLTEzMSw2ICsxMzEsMTQgQEAKICAgICAgICAgICAgIG1zZyA9ICJVbmtub3duIEV4dGVuc2lvbiBvcHRpb25zOiAlcyIgJSBvcHRpb25zCiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKG1zZykKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8JXMuJXMoJXIpIGF0ICUjeD4nICUgKAorICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgIHNlbGYubmFtZSwKKyAgICAgICAgICAgIGlkKHNlbGYpKQorCisKIGRlZiByZWFkX3NldHVwX2ZpbGUoZmlsZW5hbWUpOgogICAgICIiIlJlYWRzIGEgU2V0dXAgZmlsZSBhbmQgcmV0dXJucyBFeHRlbnNpb24gaW5zdGFuY2VzLiIiIgogICAgIGZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgKHBhcnNlX21ha2VmaWxlLCBleHBhbmRfbWFrZWZpbGVfdmFycywKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvbXN2Yzljb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvbXN2Yzljb21waWxlci5weQppbmRleCBhNWE1MDEwLi5kYTRiMjFkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL21zdmM5Y29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9tc3ZjOWNvbXBpbGVyLnB5CkBAIC0xNzksNiArMTc5LDkgQEAKICAgICBpID0gaSArIGxlbihwcmVmaXgpCiAgICAgcywgcmVzdCA9IHN5cy52ZXJzaW9uW2k6XS5zcGxpdCgiICIsIDEpCiAgICAgbWFqb3JWZXJzaW9uID0gaW50KHNbOi0yXSkgLSA2CisgICAgaWYgbWFqb3JWZXJzaW9uID49IDEzOgorICAgICAgICAjIHYxMyB3YXMgc2tpcHBlZCBhbmQgc2hvdWxkIGJlIHYxNAorICAgICAgICBtYWpvclZlcnNpb24gKz0gMQogICAgIG1pbm9yVmVyc2lvbiA9IGludChzWzI6M10pIC8gMTAuMAogICAgICMgSSBkb24ndCB0aGluayBwYXRocyBhcmUgYWZmZWN0ZWQgYnkgbWlub3IgdmVyc2lvbiBpbiB2ZXJzaW9uIDYKICAgICBpZiBtYWpvclZlcnNpb24gPT0gNjoKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvbXN2Y2NvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy9tc3ZjY29tcGlsZXIucHkKaW5kZXggODExNjY1Ni4uMTA0OGNkNCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9tc3ZjY29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9tc3ZjY29tcGlsZXIucHkKQEAgLTE1Nyw2ICsxNTcsOSBAQAogICAgIGkgPSBpICsgbGVuKHByZWZpeCkKICAgICBzLCByZXN0ID0gc3lzLnZlcnNpb25baTpdLnNwbGl0KCIgIiwgMSkKICAgICBtYWpvclZlcnNpb24gPSBpbnQoc1s6LTJdKSAtIDYKKyAgICBpZiBtYWpvclZlcnNpb24gPj0gMTM6CisgICAgICAgICMgdjEzIHdhcyBza2lwcGVkIGFuZCBzaG91bGQgYmUgdjE0CisgICAgICAgIG1ham9yVmVyc2lvbiArPSAxCiAgICAgbWlub3JWZXJzaW9uID0gaW50KHNbMjozXSkgLyAxMC4wCiAgICAgIyBJIGRvbid0IHRoaW5rIHBhdGhzIGFyZSBhZmZlY3RlZCBieSBtaW5vciB2ZXJzaW9uIGluIHZlcnNpb24gNgogICAgIGlmIG1ham9yVmVyc2lvbiA9PSA2OgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zcGF3bi5weSBiL0xpYi9kaXN0dXRpbHMvc3Bhd24ucHkKaW5kZXggMjJlODdlOC4uNWRkNDE1YSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9zcGF3bi5weQorKysgYi9MaWIvZGlzdHV0aWxzL3NwYXduLnB5CkBAIC0xMzcsOSArMTM3LDYgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBwaWQsIHN0YXR1cyA9IG9zLndhaXRwaWQocGlkLCAwKQogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgICAgIGltcG9ydCBlcnJubwotICAgICAgICAgICAgICAgIGlmIGV4Yy5lcnJubyA9PSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBpZiBub3QgREVCVUc6CiAgICAgICAgICAgICAgICAgICAgIGNtZCA9IGV4ZWN1dGFibGUKICAgICAgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNFeGVjRXJyb3IoCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CmluZGV4IGExNDUyZmUuLjU3MzcyNGQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CkBAIC05LDYgKzksNyBAQAogRW1haWw6ICAgICAgICA8ZmRyYWtlQGFjbS5vcmc+CiAiIiIKIAoraW1wb3J0IF9pbXAKIGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCkBAIC0yMiwyMyArMjMsMTUgQEAKIEJBU0VfRVhFQ19QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5iYXNlX2V4ZWNfcHJlZml4KQogCiAjIFBhdGggdG8gdGhlIGJhc2UgZGlyZWN0b3J5IG9mIHRoZSBwcm9qZWN0LiBPbiBXaW5kb3dzIHRoZSBiaW5hcnkgbWF5Ci0jIGxpdmUgaW4gcHJvamVjdC9QQ0J1aWxkOS4gIElmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhbiB4NjQgV2luZG93cyBidWlsZCwKLSMgaXQnbGwgbGl2ZSBpbiBwcm9qZWN0L1BDYnVpbGQvYW1kNjQuCisjIGxpdmUgaW4gcHJvamVjdC9QQ0J1aWxkL3dpbjMyIG9yIHByb2plY3QvUENCdWlsZC9hbWQ2NC4KICMgc2V0IGZvciBjcm9zcyBidWlsZHMKIGlmICJfUFlUSE9OX1BST0pFQ1RfQkFTRSIgaW4gb3MuZW52aXJvbjoKICAgICBwcm9qZWN0X2Jhc2UgPSBvcy5wYXRoLmFic3BhdGgob3MuZW52aXJvblsiX1BZVEhPTl9QUk9KRUNUX0JBU0UiXSkKIGVsc2U6CiAgICAgcHJvamVjdF9iYXNlID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChzeXMuZXhlY3V0YWJsZSkpCi1pZiBvcy5uYW1lID09ICJudCIgYW5kICJwY2J1aWxkIiBpbiBwcm9qZWN0X2Jhc2VbLTg6XS5sb3dlcigpOgotICAgIHByb2plY3RfYmFzZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ocHJvamVjdF9iYXNlLCBvcy5wYXRoLnBhcmRpcikpCi0jIFBDL1ZTNy4xCi1pZiBvcy5uYW1lID09ICJudCIgYW5kICJcXHBjXFx2IiBpbiBwcm9qZWN0X2Jhc2VbLTEwOl0ubG93ZXIoKToKLSAgICBwcm9qZWN0X2Jhc2UgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHByb2plY3RfYmFzZSwgb3MucGF0aC5wYXJkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLnBhcmRpcikpCi0jIFBDL0FNRDY0Ci1pZiBvcy5uYW1lID09ICJudCIgYW5kICJcXHBjYnVpbGRcXGFtZDY0IiBpbiBwcm9qZWN0X2Jhc2VbLTE0Ol0ubG93ZXIoKToKLSAgICBwcm9qZWN0X2Jhc2UgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHByb2plY3RfYmFzZSwgb3MucGF0aC5wYXJkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLnBhcmRpcikpCitpZiAob3MubmFtZSA9PSAnbnQnIGFuZAorICAgIHByb2plY3RfYmFzZS5sb3dlcigpLmVuZHN3aXRoKCgnXFxwY2J1aWxkXFx3aW4zMicsICdcXHBjYnVpbGRcXGFtZDY0JykpKToKKyAgICBwcm9qZWN0X2Jhc2UgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKHByb2plY3RfYmFzZSkpCiAKICMgcHl0aG9uX2J1aWxkOiAoQm9vbGVhbikgaWYgdHJ1ZSwgd2UncmUgZWl0aGVyIGJ1aWxkaW5nIFB5dGhvbiBvcgogIyBidWlsZGluZyBhbiBleHRlbnNpb24gd2l0aCBhbiB1bi1pbnN0YWxsZWQgUHl0aG9uLCBzbyB3ZSB1c2UKQEAgLTUxLDExICs0NCw5IEBACiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgIHJldHVybiBGYWxzZQogX3N5c19ob21lID0gZ2V0YXR0cihzeXMsICdfaG9tZScsIE5vbmUpCi1pZiBfc3lzX2hvbWUgYW5kIG9zLm5hbWUgPT0gJ250JyBhbmQgXAotICAgIF9zeXNfaG9tZS5sb3dlcigpLmVuZHN3aXRoKCgncGNidWlsZCcsICdwY2J1aWxkXFxhbWQ2NCcpKToKLSAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKQotICAgIGlmIF9zeXNfaG9tZS5lbmRzd2l0aCgncGNidWlsZCcpOiAgICMgbXVzdCBiZSBhbWQ2NAotICAgICAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKQoraWYgKF9zeXNfaG9tZSBhbmQgb3MubmFtZSA9PSAnbnQnIGFuZAorICAgIF9zeXNfaG9tZS5sb3dlcigpLmVuZHN3aXRoKCgnXFxwY2J1aWxkXFx3aW4zMicsICdcXHBjYnVpbGRcXGFtZDY0JykpKToKKyAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9zeXNfaG9tZSkpCiBkZWYgX3B5dGhvbl9idWlsZCgpOgogICAgIGlmIF9zeXNfaG9tZToKICAgICAgICAgcmV0dXJuIF9pc19weXRob25fc291cmNlX2Rpcihfc3lzX2hvbWUpCkBAIC00NjgsNyArNDU5LDcgQEAKICAgICAjIFhYWCBobW1tLi4gYSBub3JtYWwgaW5zdGFsbCBwdXRzIGluY2x1ZGUgZmlsZXMgaGVyZQogICAgIGdbJ0lOQ0xVREVQWSddID0gZ2V0X3B5dGhvbl9pbmMocGxhdF9zcGVjaWZpYz0wKQogCi0gICAgZ1snRVhUX1NVRkZJWCddID0gJy5weWQnCisgICAgZ1snRVhUX1NVRkZJWCddID0gX2ltcC5leHRlbnNpb25fc3VmZml4ZXMoKVswXQogICAgIGdbJ0VYRSddID0gIi5leGUiCiAgICAgZ1snVkVSU0lPTiddID0gZ2V0X3B5dGhvbl92ZXJzaW9uKCkucmVwbGFjZSgiLiIsICIiKQogICAgIGdbJ0JJTkRJUiddID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChzeXMuZXhlY3V0YWJsZSkpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYXJjaGl2ZV91dGlsLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2FyY2hpdmVfdXRpbC5weQppbmRleCAyZDcyYWY0Li4wMmZhMWUyIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYXJjaGl2ZV91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9hcmNoaXZlX3V0aWwucHkKQEAgLTEzLDcgKzEzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSQ0hJVkVfRk9STUFUUykKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBmaW5kX2V4ZWN1dGFibGUsIHNwYXduCiBmcm9tIGRpc3R1dGlscy50ZXN0cyBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNoZWNrX3dhcm5pbmdzLCBydW5fdW5pdHRlc3QsIHBhdGNoCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2hlY2tfd2FybmluZ3MsIHJ1bl91bml0dGVzdCwgcGF0Y2gsIGNoYW5nZV9jd2QKIAogdHJ5OgogICAgIGltcG9ydCBncnAKQEAgLTM0LDYgKzM0LDE2IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgWkxJQl9TVVBQT1JUID0gRmFsc2UKIAordHJ5OgorICAgIGltcG9ydCBiejIKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBiejIgPSBOb25lCisKK3RyeToKKyAgICBpbXBvcnQgbHptYQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGx6bWEgPSBOb25lCisKIGRlZiBjYW5fZnNfZW5jb2RlKGZpbGVuYW1lKToKICAgICAiIiIKICAgICBSZXR1cm4gVHJ1ZSBpZiB0aGUgZmlsZW5hbWUgY2FuIGJlIHNhdmVkIGluIHRoZSBmaWxlIHN5c3RlbS4KQEAgLTUyLDE5ICs2MiwzNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhaTElCX1NVUFBPUlQsICdOZWVkIHpsaWIgc3VwcG9ydCB0byBydW4nKQotICAgIGRlZiB0ZXN0X21ha2VfdGFyYmFsbChzZWxmKToKLSAgICAgICAgc2VsZi5fbWFrZV90YXJiYWxsKCdhcmNoaXZlJykKKyAgICBkZWYgdGVzdF9tYWtlX3RhcmJhbGwoc2VsZiwgbmFtZT0nYXJjaGl2ZScpOgorICAgICAgICAjIGNyZWF0aW5nIHNvbWV0aGluZyB0byB0YXIKKyAgICAgICAgdG1wZGlyID0gc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgc2VsZi5fbWFrZV90YXJiYWxsKHRtcGRpciwgbmFtZSwgJy50YXIuZ3onKQorICAgICAgICAjIHRyeWluZyBhbiB1bmNvbXByZXNzZWQgb25lCisgICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCh0bXBkaXIsIG5hbWUsICcudGFyJywgY29tcHJlc3M9Tm9uZSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFpMSUJfU1VQUE9SVCwgJ05lZWQgemxpYiBzdXBwb3J0IHRvIHJ1bicpCisgICAgZGVmIHRlc3RfbWFrZV90YXJiYWxsX2d6aXAoc2VsZik6CisgICAgICAgIHRtcGRpciA9IHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCh0bXBkaXIsICdhcmNoaXZlJywgJy50YXIuZ3onLCBjb21wcmVzcz0nZ3ppcCcpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhiejIsICdOZWVkIGJ6MiBzdXBwb3J0IHRvIHJ1bicpCisgICAgZGVmIHRlc3RfbWFrZV90YXJiYWxsX2J6aXAyKHNlbGYpOgorICAgICAgICB0bXBkaXIgPSBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBzZWxmLl9tYWtlX3RhcmJhbGwodG1wZGlyLCAnYXJjaGl2ZScsICcudGFyLmJ6MicsIGNvbXByZXNzPSdiemlwMicpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhsem1hLCAnTmVlZCBsem1hIHN1cHBvcnQgdG8gcnVuJykKKyAgICBkZWYgdGVzdF9tYWtlX3RhcmJhbGxfeHooc2VsZik6CisgICAgICAgIHRtcGRpciA9IHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCh0bXBkaXIsICdhcmNoaXZlJywgJy50YXIueHonLCBjb21wcmVzcz0neHonKQorCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoY2FuX2ZzX2VuY29kZSgnw6VyY2hpdicpLAogICAgICAgICAnRmlsZSBzeXN0ZW0gY2Fubm90IGhhbmRsZSB0aGlzIGZpbGVuYW1lJykKICAgICBkZWYgdGVzdF9tYWtlX3RhcmJhbGxfbGF0aW4xKHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgTWlycm9yIHRlc3RfbWFrZV90YXJiYWxsLCBleGNlcHQgZmlsZW5hbWUgY29udGFpbnMgbGF0aW4gY2hhcmFjdGVycy4KICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCgnw6VyY2hpdicpICMgbm90ZSB0aGlzIGlzbid0IGEgcmVhbCB3b3JkCisgICAgICAgIHNlbGYudGVzdF9tYWtlX3RhcmJhbGwoJ8OlcmNoaXYnKSAjIG5vdGUgdGhpcyBpc24ndCBhIHJlYWwgd29yZAogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoWkxJQl9TVVBQT1JULCAnTmVlZCB6bGliIHN1cHBvcnQgdG8gcnVuJykKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhjYW5fZnNfZW5jb2RlKCfjga7jgqLjg7zjgqvjgqTjg5YnKSwKICAgICAgICAgJ0ZpbGUgc3lzdGVtIGNhbm5vdCBoYW5kbGUgdGhpcyBmaWxlbmFtZScpCiAgICAgZGVmIHRlc3RfbWFrZV90YXJiYWxsX2V4dGVuZGVkKHNlbGYpOgpAQCAtNzIsMTYgKzk5LDkgQEAKICAgICAgICAgTWlycm9yIHRlc3RfbWFrZV90YXJiYWxsLCBleGNlcHQgZmlsZW5hbWUgY29udGFpbnMgZXh0ZW5kZWQKICAgICAgICAgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBsYXRpbiBjaGFyc2V0LgogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fbWFrZV90YXJiYWxsKCfjga7jgqLjg7zjgqvjgqTjg5YnKSAjIGphcGFuZXNlIGZvciBhcmNoaXZlCisgICAgICAgIHNlbGYudGVzdF9tYWtlX3RhcmJhbGwoJ+OBruOCouODvOOCq+OCpOODlicpICMgamFwYW5lc2UgZm9yIGFyY2hpdmUKIAotICAgIGRlZiBfbWFrZV90YXJiYWxsKHNlbGYsIHRhcmdldF9uYW1lKToKLSAgICAgICAgIyBjcmVhdGluZyBzb21ldGhpbmcgdG8gdGFyCi0gICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnZmlsZTEnXSwgJ3h4eCcpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnZmlsZTInXSwgJ3h4eCcpCi0gICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbih0bXBkaXIsICdzdWInKSkKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsICdzdWInLCAnZmlsZTMnXSwgJ3h4eCcpCi0KKyAgICBkZWYgX21ha2VfdGFyYmFsbChzZWxmLCB0bXBkaXIsIHRhcmdldF9uYW1lLCBzdWZmaXgsICoqa3dhcmdzKToKICAgICAgICAgdG1wZGlyMiA9IHNlbGYubWtkdGVtcCgpCiAgICAgICAgIHVuaXR0ZXN0LnNraXBVbmxlc3Moc3BsaXRkcml2ZSh0bXBkaXIpWzBdID09IHNwbGl0ZHJpdmUodG1wZGlyMilbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSBhbmQgdGFyZ2V0IHNob3VsZCBiZSBvbiBzYW1lIGRyaXZlIikKQEAgLTg5LDI3ICsxMDksMTMgQEAKICAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHRtcGRpcjIsIHRhcmdldF9uYW1lKQogCiAgICAgICAgICMgd29ya2luZyB3aXRoIHJlbGF0aXZlIHBhdGhzIHRvIGF2b2lkIHRhciB3YXJuaW5ncwotICAgICAgICBvbGRfZGlyID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgb3MuY2hkaXIodG1wZGlyKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtYWtlX3RhcmJhbGwoc3BsaXRkcml2ZShiYXNlX25hbWUpWzFdLCAnLicpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5jaGRpcihvbGRfZGlyKQorICAgICAgICB3aXRoIGNoYW5nZV9jd2QodG1wZGlyKToKKyAgICAgICAgICAgIG1ha2VfdGFyYmFsbChzcGxpdGRyaXZlKGJhc2VfbmFtZSlbMV0sICdkaXN0JywgKiprd2FyZ3MpCiAKICAgICAgICAgIyBjaGVjayBpZiB0aGUgY29tcHJlc3NlZCB0YXJiYWxsIHdhcyBjcmVhdGVkCi0gICAgICAgIHRhcmJhbGwgPSBiYXNlX25hbWUgKyAnLnRhci5neicKKyAgICAgICAgdGFyYmFsbCA9IGJhc2VfbmFtZSArIHN1ZmZpeAogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModGFyYmFsbCkpCi0KLSAgICAgICAgIyB0cnlpbmcgYW4gdW5jb21wcmVzc2VkIG9uZQotICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgdGFyZ2V0X25hbWUpCi0gICAgICAgIG9sZF9kaXIgPSBvcy5nZXRjd2QoKQotICAgICAgICBvcy5jaGRpcih0bXBkaXIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG1ha2VfdGFyYmFsbChzcGxpdGRyaXZlKGJhc2VfbmFtZSlbMV0sICcuJywgY29tcHJlc3M9Tm9uZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLmNoZGlyKG9sZF9kaXIpCi0gICAgICAgIHRhcmJhbGwgPSBiYXNlX25hbWUgKyAnLnRhcicKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHRhcmJhbGwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3RhcmluZm8odGFyYmFsbCksIHNlbGYuX2NyZWF0ZWRfZmlsZXMpCiAKICAgICBkZWYgX3RhcmluZm8oc2VsZiwgcGF0aCk6CiAgICAgICAgIHRhciA9IHRhcmZpbGUub3BlbihwYXRoKQpAQCAtMTIwLDYgKzEyNiw5IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICB0YXIuY2xvc2UoKQogCisgICAgX2NyZWF0ZWRfZmlsZXMgPSAoJ2Rpc3QnLCAnZGlzdC9maWxlMScsICdkaXN0L2ZpbGUyJywKKyAgICAgICAgICAgICAgICAgICAgICAnZGlzdC9zdWInLCAnZGlzdC9zdWIvZmlsZTMnLCAnZGlzdC9zdWIyJykKKwogICAgIGRlZiBfY3JlYXRlX2ZpbGVzKHNlbGYpOgogICAgICAgICAjIGNyZWF0aW5nIHNvbWV0aGluZyB0byB0YXIKICAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKQEAgLTEzMCwxNSArMTM5LDE1IEBACiAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihkaXN0LCAnc3ViJykpCiAgICAgICAgIHNlbGYud3JpdGVfZmlsZShbZGlzdCwgJ3N1YicsICdmaWxlMyddLCAneHh4JykKICAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKGRpc3QsICdzdWIyJykpCi0gICAgICAgIHRtcGRpcjIgPSBzZWxmLm1rZHRlbXAoKQotICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgJ2FyY2hpdmUnKQotICAgICAgICByZXR1cm4gdG1wZGlyLCB0bXBkaXIyLCBiYXNlX25hbWUKKyAgICAgICAgcmV0dXJuIHRtcGRpcgogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoZmluZF9leGVjdXRhYmxlKCd0YXInKSBhbmQgZmluZF9leGVjdXRhYmxlKCdnemlwJykKICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgWkxJQl9TVVBQT1JULAogICAgICAgICAgICAgICAgICAgICAgICAgICdOZWVkIHRoZSB0YXIsIGd6aXAgYW5kIHpsaWIgY29tbWFuZCB0byBydW4nKQogICAgIGRlZiB0ZXN0X3RhcmZpbGVfdnNfdGFyKHNlbGYpOgotICAgICAgICB0bXBkaXIsIHRtcGRpcjIsIGJhc2VfbmFtZSA9ICBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICB0bXBkaXIgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgdG1wZGlyMiA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbih0bXBkaXIyLCAnYXJjaGl2ZScpCiAgICAgICAgIG9sZF9kaXIgPSBvcy5nZXRjd2QoKQogICAgICAgICBvcy5jaGRpcih0bXBkaXIpCiAgICAgICAgIHRyeToKQEAgLTE2NCw3ICsxNzMsOCBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh0YXJiYWxsMikpCiAgICAgICAgICMgbGV0J3MgY29tcGFyZSBib3RoIHRhcmJhbGxzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGFyaW5mbyh0YXJiYWxsKSwgc2VsZi5fdGFyaW5mbyh0YXJiYWxsMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGFyaW5mbyh0YXJiYWxsKSwgc2VsZi5fY3JlYXRlZF9maWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90YXJpbmZvKHRhcmJhbGwyKSwgc2VsZi5fY3JlYXRlZF9maWxlcykKIAogICAgICAgICAjIHRyeWluZyBhbiB1bmNvbXByZXNzZWQgb25lCiAgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbih0bXBkaXIyLCAnYXJjaGl2ZScpCkBAIC0xOTEsNyArMjAxLDggQEAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhmaW5kX2V4ZWN1dGFibGUoJ2NvbXByZXNzJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBjb21wcmVzcyBwcm9ncmFtIGlzIHJlcXVpcmVkJykKICAgICBkZWYgdGVzdF9jb21wcmVzc19kZXByZWNhdGVkKHNlbGYpOgotICAgICAgICB0bXBkaXIsIHRtcGRpcjIsIGJhc2VfbmFtZSA9ICBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICB0bXBkaXIgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHNlbGYubWtkdGVtcCgpLCAnYXJjaGl2ZScpCiAKICAgICAgICAgIyB1c2luZyBjb21wcmVzcyBhbmQgdGVzdGluZyB0aGUgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZwogICAgICAgICBvbGRfZGlyID0gb3MuZ2V0Y3dkKCkKQEAgLTIyNCwxNyArMjM1LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ05lZWQgemlwIGFuZCB6bGliIHN1cHBvcnQgdG8gcnVuJykKICAgICBkZWYgdGVzdF9tYWtlX3ppcGZpbGUoc2VsZik6CiAgICAgICAgICMgY3JlYXRpbmcgc29tZXRoaW5nIHRvIHRhcgotICAgICAgICB0bXBkaXIgPSBzZWxmLm1rZHRlbXAoKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW3RtcGRpciwgJ2ZpbGUxJ10sICd4eHgnKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW3RtcGRpciwgJ2ZpbGUyJ10sICd4eHgnKQotCi0gICAgICAgIHRtcGRpcjIgPSBzZWxmLm1rZHRlbXAoKQotICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgJ2FyY2hpdmUnKQotICAgICAgICBtYWtlX3ppcGZpbGUoYmFzZV9uYW1lLCB0bXBkaXIpCisgICAgICAgIHRtcGRpciA9IHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAoKSwgJ2FyY2hpdmUnKQorICAgICAgICB3aXRoIGNoYW5nZV9jd2QodG1wZGlyKToKKyAgICAgICAgICAgIG1ha2VfemlwZmlsZShiYXNlX25hbWUsICdkaXN0JykKIAogICAgICAgICAjIGNoZWNrIGlmIHRoZSBjb21wcmVzc2VkIHRhcmJhbGwgd2FzIGNyZWF0ZWQKICAgICAgICAgdGFyYmFsbCA9IGJhc2VfbmFtZSArICcuemlwJwogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModGFyYmFsbCkpCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKHRhcmJhbGwpIGFzIHpmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoemYubmFtZWxpc3QoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnZGlzdC9maWxlMScsICdkaXN0L2ZpbGUyJywgJ2Rpc3Qvc3ViL2ZpbGUzJ10pCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhaSVBfU1VQUE9SVCwgJ05lZWQgemlwIHN1cHBvcnQgdG8gcnVuJykKICAgICBkZWYgdGVzdF9tYWtlX3ppcGZpbGVfbm9femxpYihzZWxmKToKQEAgLTI1MCwxOCArMjYxLDI0IEBACiAgICAgICAgIHBhdGNoKHNlbGYsIGFyY2hpdmVfdXRpbC56aXBmaWxlLCAnWmlwRmlsZScsIGZha2VfemlwZmlsZSkKIAogICAgICAgICAjIGNyZWF0ZSBzb21ldGhpbmcgdG8gdGFyIGFuZCBjb21wcmVzcwotICAgICAgICB0bXBkaXIsIHRtcGRpcjIsIGJhc2VfbmFtZSA9IHNlbGYuX2NyZWF0ZV9maWxlcygpCi0gICAgICAgIG1ha2VfemlwZmlsZShiYXNlX25hbWUsIHRtcGRpcikKKyAgICAgICAgdG1wZGlyID0gc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHNlbGYubWtkdGVtcCgpLCAnYXJjaGl2ZScpCisgICAgICAgIHdpdGggY2hhbmdlX2N3ZCh0bXBkaXIpOgorICAgICAgICAgICAgbWFrZV96aXBmaWxlKGJhc2VfbmFtZSwgJ2Rpc3QnKQogCiAgICAgICAgIHRhcmJhbGwgPSBiYXNlX25hbWUgKyAnLnppcCcKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgWygodGFyYmFsbCwgInciKSwgeydjb21wcmVzc2lvbic6IHppcGZpbGUuWklQX1NUT1JFRH0pXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHRhcmJhbGwpKQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZSh0YXJiYWxsKSBhcyB6ZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHpmLm5hbWVsaXN0KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2Rpc3QvZmlsZTEnLCAnZGlzdC9maWxlMicsICdkaXN0L3N1Yi9maWxlMyddKQogCiAgICAgZGVmIHRlc3RfY2hlY2tfYXJjaGl2ZV9mb3JtYXRzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNrX2FyY2hpdmVfZm9ybWF0cyhbJ2d6dGFyJywgJ3h4eCcsICd6aXAnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3h4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tfYXJjaGl2ZV9mb3JtYXRzKFsnZ3p0YXInLCAnemlwJ10pLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjaGVja19hcmNoaXZlX2Zvcm1hdHMoWydnenRhcicsICdienRhcicsICd4enRhcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3p0YXInLCAndGFyJywgJ3ppcCddKSkKIAogICAgIGRlZiB0ZXN0X21ha2VfYXJjaGl2ZShzZWxmKToKICAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKQEAgLTI4Miw2ICsyOTksNDEgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGRlbCBBUkNISVZFX0ZPUk1BVFNbJ3h4eCddCiAKKyAgICBkZWYgdGVzdF9tYWtlX2FyY2hpdmVfdGFyKHNlbGYpOgorICAgICAgICBiYXNlX2RpciA9ICBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5ta2R0ZW1wKCkgLCAnYXJjaGl2ZScpCisgICAgICAgIHJlcyA9IG1ha2VfYXJjaGl2ZShiYXNlX25hbWUsICd0YXInLCBiYXNlX2RpciwgJ2Rpc3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMocmVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmJhc2VuYW1lKHJlcyksICdhcmNoaXZlLnRhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGFyaW5mbyhyZXMpLCBzZWxmLl9jcmVhdGVkX2ZpbGVzKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoWkxJQl9TVVBQT1JULCAnTmVlZCB6bGliIHN1cHBvcnQgdG8gcnVuJykKKyAgICBkZWYgdGVzdF9tYWtlX2FyY2hpdmVfZ3p0YXIoc2VsZik6CisgICAgICAgIGJhc2VfZGlyID0gIHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAoKSAsICdhcmNoaXZlJykKKyAgICAgICAgcmVzID0gbWFrZV9hcmNoaXZlKGJhc2VfbmFtZSwgJ2d6dGFyJywgYmFzZV9kaXIsICdkaXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHJlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5iYXNlbmFtZShyZXMpLCAnYXJjaGl2ZS50YXIuZ3onKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3RhcmluZm8ocmVzKSwgc2VsZi5fY3JlYXRlZF9maWxlcykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGJ6MiwgJ05lZWQgYnoyIHN1cHBvcnQgdG8gcnVuJykKKyAgICBkZWYgdGVzdF9tYWtlX2FyY2hpdmVfYnp0YXIoc2VsZik6CisgICAgICAgIGJhc2VfZGlyID0gIHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAoKSAsICdhcmNoaXZlJykKKyAgICAgICAgcmVzID0gbWFrZV9hcmNoaXZlKGJhc2VfbmFtZSwgJ2J6dGFyJywgYmFzZV9kaXIsICdkaXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHJlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5iYXNlbmFtZShyZXMpLCAnYXJjaGl2ZS50YXIuYnoyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90YXJpbmZvKHJlcyksIHNlbGYuX2NyZWF0ZWRfZmlsZXMpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhsem1hLCAnTmVlZCB4eiBzdXBwb3J0IHRvIHJ1bicpCisgICAgZGVmIHRlc3RfbWFrZV9hcmNoaXZlX3h6dGFyKHNlbGYpOgorICAgICAgICBiYXNlX2RpciA9ICBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5ta2R0ZW1wKCkgLCAnYXJjaGl2ZScpCisgICAgICAgIHJlcyA9IG1ha2VfYXJjaGl2ZShiYXNlX25hbWUsICd4enRhcicsIGJhc2VfZGlyLCAnZGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhyZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYmFzZW5hbWUocmVzKSwgJ2FyY2hpdmUudGFyLnh6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90YXJpbmZvKHJlcyksIHNlbGYuX2NyZWF0ZWRfZmlsZXMpCisKICAgICBkZWYgdGVzdF9tYWtlX2FyY2hpdmVfb3duZXJfZ3JvdXAoc2VsZik6CiAgICAgICAgICMgdGVzdGluZyBtYWtlX2FyY2hpdmUgd2l0aCBvd25lciBhbmQgZ3JvdXAsIHdpdGggdmFyaW91cyBjb21iaW5hdGlvbnMKICAgICAgICAgIyB0aGlzIHdvcmtzIGV2ZW4gaWYgdGhlcmUncyBub3QgZ2lkL3VpZCBzdXBwb3J0CkBAIC0yOTEsNyArMzQzLDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGdyb3VwID0gb3duZXIgPSAncm9vdCcKIAotICAgICAgICBiYXNlX2Rpciwgcm9vdF9kaXIsIGJhc2VfbmFtZSA9ICBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBiYXNlX2RpciA9ICBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICByb290X2RpciA9IHNlbGYubWtkdGVtcCgpCiAgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAoKSAsICdhcmNoaXZlJykKICAgICAgICAgcmVzID0gbWFrZV9hcmNoaXZlKGJhc2VfbmFtZSwgJ3ppcCcsIHJvb3RfZGlyLCBiYXNlX2Rpciwgb3duZXI9b3duZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cD1ncm91cCkKQEAgLTMxMSw3ICszNjQsOCBAQAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFpMSUJfU1VQUE9SVCwgIlJlcXVpcmVzIHpsaWIiKQogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFVJRF9HSURfU1VQUE9SVCwgIlJlcXVpcmVzIGdycCBhbmQgcHdkIHN1cHBvcnQiKQogICAgIGRlZiB0ZXN0X3RhcmZpbGVfcm9vdF9vd25lcihzZWxmKToKLSAgICAgICAgdG1wZGlyLCB0bXBkaXIyLCBiYXNlX25hbWUgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgdG1wZGlyID0gIHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAoKSwgJ2FyY2hpdmUnKQogICAgICAgICBvbGRfZGlyID0gb3MuZ2V0Y3dkKCkKICAgICAgICAgb3MuY2hkaXIodG1wZGlyKQogICAgICAgICBncm91cCA9IGdycC5nZXRncmdpZCgwKVswXQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0LnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0LnB5CmluZGV4IDUwM2E2ZTguLmY3NjJmNWQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3QucHkKQEAgLTIxLDcgKzIxLDcgQEAKIAogICAgICAgICAjIHdoYXQgZm9ybWF0cyBkb2VzIGJkaXN0IG9mZmVyPwogICAgICAgICBmb3JtYXRzID0gWydienRhcicsICdnenRhcicsICdtc2knLCAncnBtJywgJ3RhcicsCi0gICAgICAgICAgICAgICAgICAgJ3dpbmluc3QnLCAnemlwJywgJ3p0YXInXQorICAgICAgICAgICAgICAgICAgICd3aW5pbnN0JywgJ3h6dGFyJywgJ3ppcCcsICd6dGFyJ10KICAgICAgICAgZm91bmQgPSBzb3J0ZWQoY21kLmZvcm1hdF9jb21tYW5kKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvdW5kLCBmb3JtYXRzKQogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfZXh0LnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2V4dC5weQppbmRleCBiOWY0MDdmLi4zNjZmZmJlIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfZXh0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9leHQucHkKQEAgLTM3LDYgKzM3LDkgQEAKICAgICAgICAgZnJvbSBkaXN0dXRpbHMuY29tbWFuZCBpbXBvcnQgYnVpbGRfZXh0CiAgICAgICAgIGJ1aWxkX2V4dC5VU0VSX0JBU0UgPSBzaXRlLlVTRVJfQkFTRQogCisgICAgZGVmIGJ1aWxkX2V4dChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gYnVpbGRfZXh0KCphcmdzLCAqKmt3YXJncykKKwogICAgIGRlZiB0ZXN0X2J1aWxkX2V4dChzZWxmKToKICAgICAgICAgZ2xvYmFsIEFMUkVBRFlfVEVTVEVECiAgICAgICAgIGNvcHlfeHhtb2R1bGVfYyhzZWxmLnRtcF9kaXIpCkBAIC00NCw3ICs0Nyw3IEBACiAgICAgICAgIHh4X2V4dCA9IEV4dGVuc2lvbigneHgnLCBbeHhfY10pCiAgICAgICAgIGRpc3QgPSBEaXN0cmlidXRpb24oeyduYW1lJzogJ3h4JywgJ2V4dF9tb2R1bGVzJzogW3h4X2V4dF19KQogICAgICAgICBkaXN0LnBhY2thZ2VfZGlyID0gc2VsZi50bXBfZGlyCi0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBmaXh1cF9idWlsZF9leHQoY21kKQogICAgICAgICBjbWQuYnVpbGRfbGliID0gc2VsZi50bXBfZGlyCiAgICAgICAgIGNtZC5idWlsZF90ZW1wID0gc2VsZi50bXBfZGlyCkBAIC05MSw3ICs5NCw3IEBACiAKICAgICBkZWYgdGVzdF9zb2xhcmlzX2VuYWJsZV9zaGFyZWQoc2VsZik6CiAgICAgICAgIGRpc3QgPSBEaXN0cmlidXRpb24oeyduYW1lJzogJ3h4J30pCi0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBvbGQgPSBzeXMucGxhdGZvcm0KIAogICAgICAgICBzeXMucGxhdGZvcm0gPSAnc3Vub3MnICMgZm9vbGluZyBmaW5hbGl6ZV9vcHRpb25zCkBAIC0xMTMsNyArMTE2LDcgQEAKICAgICBkZWYgdGVzdF91c2VyX3NpdGUoc2VsZik6CiAgICAgICAgIGltcG9ydCBzaXRlCiAgICAgICAgIGRpc3QgPSBEaXN0cmlidXRpb24oeyduYW1lJzogJ3h4J30pCi0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogCiAgICAgICAgICMgbWFraW5nIHN1cmUgdGhlIHVzZXIgb3B0aW9uIGlzIHRoZXJlCiAgICAgICAgIG9wdGlvbnMgPSBbbmFtZSBmb3IgbmFtZSwgc2hvcnQsIGxhYmxlIGluCkBAIC0xNDQsMTQgKzE0NywxNCBAQAogICAgICAgICAjIHdpdGggdGhlIG9wdGlvbmFsIGFyZ3VtZW50LgogICAgICAgICBtb2R1bGVzID0gW0V4dGVuc2lvbignZm9vJywgWyd4eHgnXSwgb3B0aW9uYWw9RmFsc2UpXQogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKHsnbmFtZSc6ICd4eCcsICdleHRfbW9kdWxlcyc6IG1vZHVsZXN9KQotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmVuc3VyZV9maW5hbGl6ZWQoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVW5rbm93bkZpbGVFcnJvciwgQ29tcGlsZUVycm9yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kLnJ1bikgICMgc2hvdWxkIHJhaXNlIGFuIGVycm9yCiAKICAgICAgICAgbW9kdWxlcyA9IFtFeHRlbnNpb24oJ2ZvbycsIFsneHh4J10sIG9wdGlvbmFsPVRydWUpXQogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKHsnbmFtZSc6ICd4eCcsICdleHRfbW9kdWxlcyc6IG1vZHVsZXN9KQotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmVuc3VyZV9maW5hbGl6ZWQoKQogICAgICAgICBjbWQucnVuKCkgICMgc2hvdWxkIHBhc3MKIApAQCAtMTYwLDcgKzE2Myw3IEBACiAgICAgICAgICMgZXRjLikgYXJlIGluIHRoZSBpbmNsdWRlIHNlYXJjaCBwYXRoLgogICAgICAgICBtb2R1bGVzID0gW0V4dGVuc2lvbignZm9vJywgWyd4eHgnXSwgb3B0aW9uYWw9RmFsc2UpXQogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKHsnbmFtZSc6ICd4eCcsICdleHRfbW9kdWxlcyc6IG1vZHVsZXN9KQotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmZpbmFsaXplX29wdGlvbnMoKQogCiAgICAgICAgIGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKQEAgLTE3MiwxNCArMTc1LDE0IEBACiAKICAgICAgICAgIyBtYWtlIHN1cmUgY21kLmxpYnJhcmllcyBpcyB0dXJuZWQgaW50byBhIGxpc3QKICAgICAgICAgIyBpZiBpdCdzIGEgc3RyaW5nCi0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBjbWQubGlicmFyaWVzID0gJ215X2xpYiwgb3RoZXJfbGliIGxhc3RsaWInCiAgICAgICAgIGNtZC5maW5hbGl6ZV9vcHRpb25zKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQubGlicmFyaWVzLCBbJ215X2xpYicsICdvdGhlcl9saWInLCAnbGFzdGxpYiddKQogCiAgICAgICAgICMgbWFrZSBzdXJlIGNtZC5saWJyYXJ5X2RpcnMgaXMgdHVybmVkIGludG8gYSBsaXN0CiAgICAgICAgICMgaWYgaXQncyBhIHN0cmluZwotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmxpYnJhcnlfZGlycyA9ICdteV9saWJfZGlyJXNvdGhlcl9saWJfZGlyJyAlIG9zLnBhdGhzZXAKICAgICAgICAgY21kLmZpbmFsaXplX29wdGlvbnMoKQogICAgICAgICBzZWxmLmFzc2VydEluKCdteV9saWJfZGlyJywgY21kLmxpYnJhcnlfZGlycykKQEAgLTE4Nyw3ICsxOTAsNyBAQAogCiAgICAgICAgICMgbWFrZSBzdXJlIHJwYXRoIGlzIHR1cm5lZCBpbnRvIGEgbGlzdAogICAgICAgICAjIGlmIGl0J3MgYSBzdHJpbmcKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5ycGF0aCA9ICdvbmUlc3R3bycgJSBvcy5wYXRoc2VwCiAgICAgICAgIGNtZC5maW5hbGl6ZV9vcHRpb25zKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQucnBhdGgsIFsnb25lJywgJ3R3byddKQpAQCAtMTk2LDMyICsxOTksMzIgQEAKIAogICAgICAgICAjIG1ha2Ugc3VyZSBkZWZpbmUgaXMgdHVybmVkIGludG8gMi10dXBsZXMKICAgICAgICAgIyBzdHJpbmdzIGlmIHRoZXkgYXJlICcsJy1zZXBhcmF0ZWQgc3RyaW5ncwotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmRlZmluZSA9ICdvbmUsdHdvJwogICAgICAgICBjbWQuZmluYWxpemVfb3B0aW9ucygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kLmRlZmluZSwgWygnb25lJywgJzEnKSwgKCd0d28nLCAnMScpXSkKIAogICAgICAgICAjIG1ha2Ugc3VyZSB1bmRlZiBpcyB0dXJuZWQgaW50byBhIGxpc3Qgb2YKICAgICAgICAgIyBzdHJpbmdzIGlmIHRoZXkgYXJlICcsJy1zZXBhcmF0ZWQgc3RyaW5ncwotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLnVuZGVmID0gJ29uZSx0d28nCiAgICAgICAgIGNtZC5maW5hbGl6ZV9vcHRpb25zKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQudW5kZWYsIFsnb25lJywgJ3R3byddKQogCiAgICAgICAgICMgbWFrZSBzdXJlIHN3aWdfb3B0cyBpcyB0dXJuZWQgaW50byBhIGxpc3QKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5zd2lnX29wdHMgPSBOb25lCiAgICAgICAgIGNtZC5maW5hbGl6ZV9vcHRpb25zKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQuc3dpZ19vcHRzLCBbXSkKIAotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLnN3aWdfb3B0cyA9ICcxIDInCiAgICAgICAgIGNtZC5maW5hbGl6ZV9vcHRpb25zKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQuc3dpZ19vcHRzLCBbJzEnLCAnMiddKQogCiAgICAgZGVmIHRlc3RfY2hlY2tfZXh0ZW5zaW9uc19saXN0KHNlbGYpOgogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKCkKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5maW5hbGl6ZV9vcHRpb25zKCkKIAogICAgICAgICAjJ2V4dGVuc2lvbnMnIG9wdGlvbiBtdXN0IGJlIGEgbGlzdCBvZiBFeHRlbnNpb24gaW5zdGFuY2VzCkBAIC0yNzAsNyArMjczLDcgQEAKICAgICBkZWYgdGVzdF9nZXRfc291cmNlX2ZpbGVzKHNlbGYpOgogICAgICAgICBtb2R1bGVzID0gW0V4dGVuc2lvbignZm9vJywgWyd4eHgnXSwgb3B0aW9uYWw9RmFsc2UpXQogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKHsnbmFtZSc6ICd4eCcsICdleHRfbW9kdWxlcyc6IG1vZHVsZXN9KQotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmVuc3VyZV9maW5hbGl6ZWQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtZC5nZXRfc291cmNlX2ZpbGVzKCksIFsneHh4J10pCiAKQEAgLTI3OSw3ICsyODIsNyBAQAogICAgICAgICAjIHNob3VsZCBub3QgYmUgb3ZlcnJpZGVuIGJ5IGEgY29tcGlsZXIgaW5zdGFuY2UKICAgICAgICAgIyB3aGVuIHRoZSBjb21tYW5kIGlzIHJ1bgogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKCkKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5jb21waWxlciA9ICd1bml4JwogICAgICAgICBjbWQuZW5zdXJlX2ZpbmFsaXplZCgpCiAgICAgICAgIGNtZC5ydW4oKQpAQCAtMjkyLDcgKzI5NSw3IEBACiAgICAgICAgIGV4dCA9IEV4dGVuc2lvbignZm9vJywgW2NfZmlsZV0sIG9wdGlvbmFsPUZhbHNlKQogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKHsnbmFtZSc6ICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleHRfbW9kdWxlcyc6IFtleHRdfSkKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGZpeHVwX2J1aWxkX2V4dChjbWQpCiAgICAgICAgIGNtZC5lbnN1cmVfZmluYWxpemVkKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY21kLmdldF9vdXRwdXRzKCkpLCAxKQpAQCAtMzU1LDcgKzM1OCw3IEBACiAgICAgICAgICNldHJlZV9leHQgPSBFeHRlbnNpb24oJ2x4bWwuZXRyZWUnLCBbZXRyZWVfY10pCiAgICAgICAgICNkaXN0ID0gRGlzdHJpYnV0aW9uKHsnbmFtZSc6ICdseG1sJywgJ2V4dF9tb2R1bGVzJzogW2V0cmVlX2V4dF19KQogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKCkKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5pbnBsYWNlID0gMQogICAgICAgICBjbWQuZGlzdHJpYnV0aW9uLnBhY2thZ2VfZGlyID0geycnOiAnc3JjJ30KICAgICAgICAgY21kLmRpc3RyaWJ1dGlvbi5wYWNrYWdlcyA9IFsnbHhtbCcsICdseG1sLmh0bWwnXQpAQCAtNDYyLDcgKzQ2NSw3IEBACiAgICAgICAgICAgICAnZXh0X21vZHVsZXMnOiBbZGVwdGFyZ2V0X2V4dF0KICAgICAgICAgfSkKICAgICAgICAgZGlzdC5wYWNrYWdlX2RpciA9IHNlbGYudG1wX2RpcgotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmJ1aWxkX2xpYiA9IHNlbGYudG1wX2RpcgogICAgICAgICBjbWQuYnVpbGRfdGVtcCA9IHNlbGYudG1wX2RpcgogCkBAIC00ODEsOCArNDg0LDE5IEBACiAgICAgICAgICAgICBzZWxmLmZhaWwoIldyb25nIGRlcGxveW1lbnQgdGFyZ2V0IGR1cmluZyBjb21waWxhdGlvbiIpCiAKIAorY2xhc3MgUGFyYWxsZWxCdWlsZEV4dFRlc3RDYXNlKEJ1aWxkRXh0VGVzdENhc2UpOgorCisgICAgZGVmIGJ1aWxkX2V4dChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBidWlsZF9leHQgPSBzdXBlcigpLmJ1aWxkX2V4dCgqYXJncywgKiprd2FyZ3MpCisgICAgICAgIGJ1aWxkX2V4dC5wYXJhbGxlbCA9IFRydWUKKyAgICAgICAgcmV0dXJuIGJ1aWxkX2V4dAorCisKIGRlZiB0ZXN0X3N1aXRlKCk6Ci0gICAgcmV0dXJuIHVuaXR0ZXN0Lm1ha2VTdWl0ZShCdWlsZEV4dFRlc3RDYXNlKQorICAgIHN1aXRlID0gdW5pdHRlc3QuVGVzdFN1aXRlKCkKKyAgICBzdWl0ZS5hZGRUZXN0KHVuaXR0ZXN0Lm1ha2VTdWl0ZShCdWlsZEV4dFRlc3RDYXNlKSkKKyAgICBzdWl0ZS5hZGRUZXN0KHVuaXR0ZXN0Lm1ha2VTdWl0ZShQYXJhbGxlbEJ1aWxkRXh0VGVzdENhc2UpKQorICAgIHJldHVybiBzdWl0ZQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KHRlc3Rfc3VpdGUoKSkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9weS5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9weS5weQppbmRleCBjOGY2Yjg5Li4xODI4M2RjIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfcHkucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX3B5LnB5CkBAIC0xMjAsOCArMTIwLDggQEAKICAgICAgICAgZm91bmQgPSBvcy5saXN0ZGlyKGNtZC5idWlsZF9saWIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGZvdW5kKSwgWydfX3B5Y2FjaGVfXycsICdib2lsZWRlZ2dzLnB5J10pCiAgICAgICAgIGZvdW5kID0gb3MubGlzdGRpcihvcy5wYXRoLmpvaW4oY21kLmJ1aWxkX2xpYiwgJ19fcHljYWNoZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGZvdW5kKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ2JvaWxlZGVnZ3MuJXMucHlvJyAlIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWddKQorICAgICAgICBleHBlY3QgPSAnYm9pbGVkZWdncy57fS5vcHQtMS5weWMnLmZvcm1hdChzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChmb3VuZCksIFtleHBlY3RdKQogCiAgICAgZGVmIHRlc3RfZGlyX2luX3BhY2thZ2VfZGF0YShzZWxmKToKICAgICAgICAgIiIiCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsLnB5CmluZGV4IDE4ZTFlNTcuLjkzMTMzMzAgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsLnB5CkBAIC0yMCw4ICsyMCw2IEBACiAKIAogZGVmIF9tYWtlX2V4dF9uYW1lKG1vZG5hbWUpOgotICAgIGlmIG9zLm5hbWUgPT0gJ250JyBhbmQgc3lzLmV4ZWN1dGFibGUuZW5kc3dpdGgoJ19kLmV4ZScpOgotICAgICAgICBtb2RuYW1lICs9ICdfZCcKICAgICByZXR1cm4gbW9kbmFtZSArIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignRVhUX1NVRkZJWCcpCiAKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfbGliLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfbGliLnB5CmluZGV4IDQwZGQxYTkuLjUzNzhhYTggMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2xpYi5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9saWIucHkKQEAgLTQ0LDEyICs0NCwxMSBAQAogICAgICAgICBmID0gb3MucGF0aC5qb2luKHByb2plY3RfZGlyLCAnZm9vLnB5JykKICAgICAgICAgc2VsZi53cml0ZV9maWxlKGYsICcjIHB5dGhvbiBmaWxlJykKICAgICAgICAgY21kLmJ5dGVfY29tcGlsZShbZl0pCi0gICAgICAgIHB5Y19maWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoJ2Zvby5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfb3ZlcnJpZGU9VHJ1ZSkKLSAgICAgICAgcHlvX2ZpbGUgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgnZm9vLnB5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19vdmVycmlkZT1GYWxzZSkKKyAgICAgICAgcHljX2ZpbGUgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgnZm9vLnB5Jywgb3B0aW1pemF0aW9uPScnKQorICAgICAgICBweWNfb3B0X2ZpbGUgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgnZm9vLnB5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb249Y21kLm9wdGltaXplKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMocHljX2ZpbGUpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMocHlvX2ZpbGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMocHljX29wdF9maWxlKSkKIAogICAgIGRlZiB0ZXN0X2dldF9vdXRwdXRzKHNlbGYpOgogICAgICAgICBwcm9qZWN0X2RpciwgZGlzdCA9IHNlbGYuY3JlYXRlX2Rpc3QoKQpAQCAtNjYsOCArNjUsOCBAQAogICAgICAgICBjbWQuZGlzdHJpYnV0aW9uLnBhY2thZ2VzID0gWydzcGFtJ10KICAgICAgICAgY21kLmRpc3RyaWJ1dGlvbi5zY3JpcHRfbmFtZSA9ICdzZXR1cC5weScKIAotICAgICAgICAjIGdldF9vdXRwdXRzIHNob3VsZCByZXR1cm4gNCBlbGVtZW50czogc3BhbS9fX2luaXRfXy5weSwgLnB5YyBhbmQKLSAgICAgICAgIyAucHlvLCBmb28uaW1wb3J0LXRhZy1hYmlmbGFncy5zbyAvIGZvby5weWQKKyAgICAgICAgIyBnZXRfb3V0cHV0cyBzaG91bGQgcmV0dXJuIDQgZWxlbWVudHM6IHNwYW0vX19pbml0X18ucHkgYW5kIC5weWMsCisgICAgICAgICMgZm9vLmltcG9ydC10YWctYWJpZmxhZ3Muc28gLyBmb28ucHlkCiAgICAgICAgIG91dHB1dHMgPSBjbWQuZ2V0X291dHB1dHMoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihvdXRwdXRzKSwgNCwgb3V0cHV0cykKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X21zdmNjb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9tc3ZjY29tcGlsZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRkOTExZgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9tc3ZjY29tcGlsZXIucHkKQEAgLTAsMCArMSw5MCBAQAorIiIiVGVzdHMgZm9yIGRpc3R1dGlscy5fbXN2Y2NvbXBpbGVyLiIiIgoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgb3MKKworZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yCitmcm9tIGRpc3R1dGlscy50ZXN0cyBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorCisKK1NLSVBfTUVTU0FHRSA9IChOb25lIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiIGVsc2UKKyAgICAgICAgICAgICAgICAiVGhlc2UgdGVzdHMgYXJlIG9ubHkgZm9yIHdpbjMyIikKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoU0tJUF9NRVNTQUdFIGlzIE5vbmUsIFNLSVBfTUVTU0FHRSkKK2NsYXNzIG1zdmNjb21waWxlclRlc3RDYXNlKHN1cHBvcnQuVGVtcGRpck1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfbm9fY29tcGlsZXIoc2VsZik6CisgICAgICAgIGltcG9ydCBkaXN0dXRpbHMuX21zdmNjb21waWxlciBhcyBfbXN2Y2NvbXBpbGVyCisgICAgICAgICMgbWFrZXMgc3VyZSBxdWVyeV92Y3ZhcnNhbGwgcmFpc2VzCisgICAgICAgICMgYSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yIGlmIHRoZSBjb21waWxlcgorICAgICAgICAjIGlzIG5vdCBmb3VuZAorICAgICAgICBkZWYgX2ZpbmRfdmN2YXJzYWxsKHBsYXRfc3BlYyk6CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZQorCisgICAgICAgIG9sZF9maW5kX3ZjdmFyc2FsbCA9IF9tc3ZjY29tcGlsZXIuX2ZpbmRfdmN2YXJzYWxsCisgICAgICAgIF9tc3ZjY29tcGlsZXIuX2ZpbmRfdmN2YXJzYWxsID0gX2ZpbmRfdmN2YXJzYWxsCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERpc3R1dGlsc1BsYXRmb3JtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbXN2Y2NvbXBpbGVyLl9nZXRfdmNfZW52LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd29udCBmaW5kIHRoaXMgdmVyc2lvbicpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBfbXN2Y2NvbXBpbGVyLl9maW5kX3ZjdmFyc2FsbCA9IG9sZF9maW5kX3ZjdmFyc2FsbAorCisgICAgZGVmIHRlc3RfY29tcGlsZXJfb3B0aW9ucyhzZWxmKToKKyAgICAgICAgaW1wb3J0IGRpc3R1dGlscy5fbXN2Y2NvbXBpbGVyIGFzIF9tc3ZjY29tcGlsZXIKKyAgICAgICAgIyBzdXBwcmVzcyBwYXRoIHRvIHZjcnVudGltZSBmcm9tIF9maW5kX3ZjdmFyc2FsbCB0bworICAgICAgICAjIGNoZWNrIHRoYXQgL01UIGlzIGFkZGVkIHRvIGNvbXBpbGUgb3B0aW9ucworICAgICAgICBvbGRfZmluZF92Y3ZhcnNhbGwgPSBfbXN2Y2NvbXBpbGVyLl9maW5kX3ZjdmFyc2FsbAorICAgICAgICBkZWYgX2ZpbmRfdmN2YXJzYWxsKHBsYXRfc3BlYyk6CisgICAgICAgICAgICByZXR1cm4gb2xkX2ZpbmRfdmN2YXJzYWxsKHBsYXRfc3BlYylbMF0sIE5vbmUKKyAgICAgICAgX21zdmNjb21waWxlci5fZmluZF92Y3ZhcnNhbGwgPSBfZmluZF92Y3ZhcnNhbGwKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29tcGlsZXIgPSBfbXN2Y2NvbXBpbGVyLk1TVkNDb21waWxlcigpCisgICAgICAgICAgICBjb21waWxlci5pbml0aWFsaXplKCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignL01UJywgY29tcGlsZXIuY29tcGlsZV9vcHRpb25zKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignL01EJywgY29tcGlsZXIuY29tcGlsZV9vcHRpb25zKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgX21zdmNjb21waWxlci5fZmluZF92Y3ZhcnNhbGwgPSBvbGRfZmluZF92Y3ZhcnNhbGwKKworICAgIGRlZiB0ZXN0X3ZjcnVudGltZV9jb3B5KHNlbGYpOgorICAgICAgICBpbXBvcnQgZGlzdHV0aWxzLl9tc3ZjY29tcGlsZXIgYXMgX21zdmNjb21waWxlcgorICAgICAgICAjIGZvcmNlIHBhdGggdG8gYSBrbm93biBmaWxlIC0gaXQgZG9lc24ndCBtYXR0ZXIKKyAgICAgICAgIyB3aGF0IHdlIGNvcHkgYXMgbG9uZyBhcyBpdHMgbmFtZSBpcyBub3QgaW4KKyAgICAgICAgIyBfbXN2Y2NvbXBpbGVyLl9CVU5ETEVEX0RMTFMKKyAgICAgICAgb2xkX2ZpbmRfdmN2YXJzYWxsID0gX21zdmNjb21waWxlci5fZmluZF92Y3ZhcnNhbGwKKyAgICAgICAgZGVmIF9maW5kX3ZjdmFyc2FsbChwbGF0X3NwZWMpOgorICAgICAgICAgICAgcmV0dXJuIG9sZF9maW5kX3ZjdmFyc2FsbChwbGF0X3NwZWMpWzBdLCBfX2ZpbGVfXworICAgICAgICBfbXN2Y2NvbXBpbGVyLl9maW5kX3ZjdmFyc2FsbCA9IF9maW5kX3ZjdmFyc2FsbAorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ZW1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgICAgIGNvbXBpbGVyID0gX21zdmNjb21waWxlci5NU1ZDQ29tcGlsZXIoKQorICAgICAgICAgICAgY29tcGlsZXIuaW5pdGlhbGl6ZSgpCisgICAgICAgICAgICBjb21waWxlci5fY29weV92Y3J1bnRpbWUodGVtcGRpcikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbigKKyAgICAgICAgICAgICAgICB0ZW1wZGlyLCBvcy5wYXRoLmJhc2VuYW1lKF9fZmlsZV9fKSkpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgX21zdmNjb21waWxlci5fZmluZF92Y3ZhcnNhbGwgPSBvbGRfZmluZF92Y3ZhcnNhbGwKKworICAgIGRlZiB0ZXN0X3ZjcnVudGltZV9za2lwX2NvcHkoc2VsZik6CisgICAgICAgIGltcG9ydCBkaXN0dXRpbHMuX21zdmNjb21waWxlciBhcyBfbXN2Y2NvbXBpbGVyCisKKyAgICAgICAgdGVtcGRpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIGNvbXBpbGVyID0gX21zdmNjb21waWxlci5NU1ZDQ29tcGlsZXIoKQorICAgICAgICBjb21waWxlci5pbml0aWFsaXplKCkKKyAgICAgICAgZGxsID0gY29tcGlsZXIuX3ZjcnVudGltZV9yZWRpc3QKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGRsbCkpCisKKyAgICAgICAgY29tcGlsZXIuX2NvcHlfdmNydW50aW1lKHRlbXBkaXIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICB0ZW1wZGlyLCBvcy5wYXRoLmJhc2VuYW1lKGRsbCkpKSkKKworZGVmIHRlc3Rfc3VpdGUoKToKKyAgICByZXR1cm4gdW5pdHRlc3QubWFrZVN1aXRlKG1zdmNjb21waWxlclRlc3RDYXNlKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHJ1bl91bml0dGVzdCh0ZXN0X3N1aXRlKCkpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3V0aWwucHkKaW5kZXggNWFkY2FjNS4uZTQyMzMyNSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdXRpbC5weQpAQCAtMzIyLDExICszMjIsMTEgQEAKICAgICAgICAgICAgICAgICAgIHByZWZpeD1Ob25lLCBiYXNlX2Rpcj1Ob25lLAogICAgICAgICAgICAgICAgICAgdmVyYm9zZT0xLCBkcnlfcnVuPTAsCiAgICAgICAgICAgICAgICAgICBkaXJlY3Q9Tm9uZSk6Ci0gICAgIiIiQnl0ZS1jb21waWxlIGEgY29sbGVjdGlvbiBvZiBQeXRob24gc291cmNlIGZpbGVzIHRvIGVpdGhlciAucHljCi0gICAgb3IgLnB5byBmaWxlcyBpbiBhIF9fcHljYWNoZV9fIHN1YmRpcmVjdG9yeS4gICdweV9maWxlcycgaXMgYSBsaXN0CisgICAgIiIiQnl0ZS1jb21waWxlIGEgY29sbGVjdGlvbiBvZiBQeXRob24gc291cmNlIGZpbGVzIHRvIC5weWMKKyAgICBmaWxlcyBpbiBhIF9fcHljYWNoZV9fIHN1YmRpcmVjdG9yeS4gICdweV9maWxlcycgaXMgYSBsaXN0CiAgICAgb2YgZmlsZXMgdG8gY29tcGlsZTsgYW55IGZpbGVzIHRoYXQgZG9uJ3QgZW5kIGluICIucHkiIGFyZSBzaWxlbnRseQogICAgIHNraXBwZWQuICAnb3B0aW1pemUnIG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAwIC0gZG9uJ3Qgb3B0aW1pemUgKGdlbmVyYXRlIC5weWMpCisgICAgICAwIC0gZG9uJ3Qgb3B0aW1pemUKICAgICAgIDEgLSBub3JtYWwgb3B0aW1pemF0aW9uIChsaWtlICJweXRob24gLU8iKQogICAgICAgMiAtIGV4dHJhIG9wdGltaXphdGlvbiAobGlrZSAicHl0aG9uIC1PTyIpCiAgICAgSWYgJ2ZvcmNlJyBpcyB0cnVlLCBhbGwgZmlsZXMgYXJlIHJlY29tcGlsZWQgcmVnYXJkbGVzcyBvZgpAQCAtNDM4LDggKzQzOCw5IEBACiAgICAgICAgICAgICAjICAgY2ZpbGUgLSBieXRlLWNvbXBpbGVkIGZpbGUKICAgICAgICAgICAgICMgICBkZmlsZSAtIHB1cnBvcnRlZCBzb3VyY2UgZmlsZW5hbWUgKHNhbWUgYXMgJ2ZpbGUnIGJ5IGRlZmF1bHQpCiAgICAgICAgICAgICBpZiBvcHRpbWl6ZSA+PSAwOgorICAgICAgICAgICAgICAgIG9wdCA9ICcnIGlmIG9wdGltaXplID09IDAgZWxzZSBvcHRpbWl6ZQogICAgICAgICAgICAgICAgIGNmaWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoCi0gICAgICAgICAgICAgICAgICAgIGZpbGUsIGRlYnVnX292ZXJyaWRlPW5vdCBvcHRpbWl6ZSkKKyAgICAgICAgICAgICAgICAgICAgZmlsZSwgb3B0aW1pemF0aW9uPW9wdCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgY2ZpbGUgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlKQogICAgICAgICAgICAgZGZpbGUgPSBmaWxlCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3ZlcnNpb24ucHkgYi9MaWIvZGlzdHV0aWxzL3ZlcnNpb24ucHkKaW5kZXggZWJjYWI4NC4uYWYxNGNjMSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy92ZXJzaW9uLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdmVyc2lvbi5weQpAQCAtNDgsMTIgKzQ4LDYgQEAKICAgICAgICAgICAgIHJldHVybiBjCiAgICAgICAgIHJldHVybiBjID09IDAKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBjID0gc2VsZi5fY21wKG90aGVyKQotICAgICAgICBpZiBjIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIGMKLSAgICAgICAgcmV0dXJuIGMgIT0gMAotCiAgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGMgPSBzZWxmLl9jbXAob3RoZXIpCiAgICAgICAgIGlmIGMgaXMgTm90SW1wbGVtZW50ZWQ6CmRpZmYgLS1naXQgYS9MaWIvZG9jdGVzdC5weSBiL0xpYi9kb2N0ZXN0LnB5CmluZGV4IDQzMmVmMDUuLjQwOTQ3MjMgMTAwNjQ0Ci0tLSBhL0xpYi9kb2N0ZXN0LnB5CisrKyBiL0xpYi9kb2N0ZXN0LnB5CkBAIC01MzAsOCArNTMwLDkgQEAKICAgICAgICAgICAgIGV4YW1wbGVzID0gJzEgZXhhbXBsZScKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGV4YW1wbGVzID0gJyVkIGV4YW1wbGVzJyAlIGxlbihzZWxmLmV4YW1wbGVzKQotICAgICAgICByZXR1cm4gKCc8RG9jVGVzdCAlcyBmcm9tICVzOiVzICglcyk+JyAlCi0gICAgICAgICAgICAgICAgKHNlbGYubmFtZSwgc2VsZi5maWxlbmFtZSwgc2VsZi5saW5lbm8sIGV4YW1wbGVzKSkKKyAgICAgICAgcmV0dXJuICgnPCVzICVzIGZyb20gJXM6JXMgKCVzKT4nICUKKyAgICAgICAgICAgICAgICAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgIHNlbGYubmFtZSwgc2VsZi5maWxlbmFtZSwgc2VsZi5saW5lbm8sIGV4YW1wbGVzKSkKIAogICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiB0eXBlKHNlbGYpIGlzIG5vdCB0eXBlKG90aGVyKToKQEAgLTk3OCw3ICs5NzksOCBAQAogICAgICAgICAgICAgZm9yIHZhbG5hbWUsIHZhbCBpbiBvYmouX19kaWN0X18uaXRlbXMoKToKICAgICAgICAgICAgICAgICB2YWxuYW1lID0gJyVzLiVzJyAlIChuYW1lLCB2YWxuYW1lKQogICAgICAgICAgICAgICAgICMgUmVjdXJzZSB0byBmdW5jdGlvbnMgJiBjbGFzc2VzLgotICAgICAgICAgICAgICAgIGlmICgoaW5zcGVjdC5pc3JvdXRpbmUodmFsKSBvciBpbnNwZWN0LmlzY2xhc3ModmFsKSkgYW5kCisgICAgICAgICAgICAgICAgaWYgKChpbnNwZWN0Lmlzcm91dGluZShpbnNwZWN0LnVud3JhcCh2YWwpKQorICAgICAgICAgICAgICAgICAgICAgb3IgaW5zcGVjdC5pc2NsYXNzKHZhbCkpIGFuZAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcm9tX21vZHVsZShtb2R1bGUsIHZhbCkpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9maW5kKHRlc3RzLCB2YWwsIHZhbG5hbWUsIG1vZHVsZSwgc291cmNlX2xpbmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JzLCBzZWVuKQpAQCAtMTA0OSw3ICsxMDUxLDcgQEAKICAgICAgICAgICAgIGZpbGVuYW1lID0gTm9uZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZmlsZW5hbWUgPSBnZXRhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJywgbW9kdWxlLl9fbmFtZV9fKQotICAgICAgICAgICAgaWYgZmlsZW5hbWVbLTQ6XSBpbiAoIi5weWMiLCAiLnB5byIpOgorICAgICAgICAgICAgaWYgZmlsZW5hbWVbLTQ6XSA9PSAiLnB5YyI6CiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZVs6LTFdCiAgICAgICAgIHJldHVybiBzZWxmLl9wYXJzZXIuZ2V0X2RvY3Rlc3QoZG9jc3RyaW5nLCBnbG9icywgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZW5vKQpAQCAtMjM2NywxNSArMjM2OSw2IEBACiAgICAgICAgIHN1aXRlID0gX0RvY1Rlc3RTdWl0ZSgpCiAgICAgICAgIHN1aXRlLmFkZFRlc3QoU2tpcERvY1Rlc3RDYXNlKG1vZHVsZSkpCiAgICAgICAgIHJldHVybiBzdWl0ZQotICAgIGVsaWYgbm90IHRlc3RzOgotICAgICAgICAjIFdoeSBkbyB3ZSB3YW50IHRvIGRvIHRoaXM/IEJlY2F1c2UgaXQgcmV2ZWFscyBhIGJ1ZyB0aGF0IG1pZ2h0Ci0gICAgICAgICMgb3RoZXJ3aXNlIGJlIGhpZGRlbi4KLSAgICAgICAgIyBJdCBpcyBwcm9iYWJseSBhIGJ1ZyB0aGF0IHRoaXMgZXhjZXB0aW9uIGlzIG5vdCBhbHNvIHJhaXNlZCBpZiB0aGUKLSAgICAgICAgIyBudW1iZXIgb2YgZG9jdGVzdCBleGFtcGxlcyBpbiB0ZXN0cyBpcyB6ZXJvIChpLmUuIGlmIG5vIGRvY3Rlc3QKLSAgICAgICAgIyBleGFtcGxlcyB3ZXJlIGZvdW5kKS4gIEhvd2V2ZXIsIHdlIHNob3VsZCBwcm9iYWJseSBub3QgYmUgcmFpc2luZwotICAgICAgICAjIGFuIGV4Y2VwdGlvbiBhdCBhbGwgaGVyZSwgdGhvdWdoIGl0IGlzIHRvbyBsYXRlIHRvIG1ha2UgdGhpcyBjaGFuZ2UKLSAgICAgICAgIyBmb3IgYSBtYWludGVuYW5jZSByZWxlYXNlLiAgU2VlIGFsc28gaXNzdWUgIzE0NjQ5LgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1vZHVsZSwgImhhcyBubyBkb2NzdHJpbmdzIikKIAogICAgIHRlc3RzLnNvcnQoKQogICAgIHN1aXRlID0gX0RvY1Rlc3RTdWl0ZSgpCkBAIC0yMzg1LDcgKzIzNzgsNyBAQAogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgaWYgbm90IHRlc3QuZmlsZW5hbWU6CiAgICAgICAgICAgICBmaWxlbmFtZSA9IG1vZHVsZS5fX2ZpbGVfXwotICAgICAgICAgICAgaWYgZmlsZW5hbWVbLTQ6XSBpbiAoIi5weWMiLCAiLnB5byIpOgorICAgICAgICAgICAgaWYgZmlsZW5hbWVbLTQ6XSA9PSAiLnB5YyI6CiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZVs6LTFdCiAgICAgICAgICAgICB0ZXN0LmZpbGVuYW1lID0gZmlsZW5hbWUKICAgICAgICAgc3VpdGUuYWRkVGVzdChEb2NUZXN0Q2FzZSh0ZXN0LCAqKm9wdGlvbnMpKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19faW5pdF9fLnB5IGIvTGliL2VtYWlsL19faW5pdF9fLnB5CmluZGV4IGZmMTZmNmEuLmZhZTg3MjQgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9fX2luaXRfXy5weQorKysgYi9MaWIvZW1haWwvX19pbml0X18ucHkKQEAgLTQsOCArNCw2IEBACiAKICIiIkEgcGFja2FnZSBmb3IgcGFyc2luZywgaGFuZGxpbmcsIGFuZCBnZW5lcmF0aW5nIGVtYWlsIG1lc3NhZ2VzLiIiIgogCi1fX3ZlcnNpb25fXyA9ICc1LjEuMCcKLQogX19hbGxfXyA9IFsKICAgICAnYmFzZTY0bWltZScsCiAgICAgJ2NoYXJzZXQnLApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5IGIvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CmluZGV4IGE5YmRmNDQuLmYyNjQxOTEgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQorKysgYi9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKQEAgLTMyMCwxNyArMzIwLDE4IEBACiAgICAgICAgIHJldHVybiAnJy5qb2luKHJlcykKIAogICAgIGRlZiBfZm9sZChzZWxmLCBmb2xkZWQpOgorICAgICAgICBlbmNvZGluZyA9ICd1dGYtOCcgaWYgZm9sZGVkLnBvbGljeS51dGY4IGVsc2UgJ2FzY2lpJwogICAgICAgICBmb3IgcGFydCBpbiBzZWxmLnBhcnRzOgogICAgICAgICAgICAgdHN0ciA9IHN0cihwYXJ0KQogICAgICAgICAgICAgdGxlbiA9IGxlbih0c3RyKQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHN0cihwYXJ0KS5lbmNvZGUoJ3VzLWFzY2lpJykKKyAgICAgICAgICAgICAgICBzdHIocGFydCkuZW5jb2RlKGVuY29kaW5nKQogICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgICAgICBpZiBhbnkoaXNpbnN0YW5jZSh4LCBlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdCkKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHBhcnQuYWxsX2RlZmVjdHMpOgogICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ3Vua25vd24tOGJpdCcKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIFhYWDogdGhpcyBzaG91bGQgYmUgYSBwb2xpY3kgc2V0dGluZworICAgICAgICAgICAgICAgICAgICAjIFhYWDogdGhpcyBzaG91bGQgYmUgYSBwb2xpY3kgc2V0dGluZyB3aGVuIHV0ZjggaXMgRmFsc2UuCiAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndXRmLTgnCiAgICAgICAgICAgICAgICAgdHN0ciA9IHBhcnQuY3RlX2VuY29kZShjaGFyc2V0LCBmb2xkZWQucG9saWN5KQogICAgICAgICAgICAgICAgIHRsZW4gPSBsZW4odHN0cikKQEAgLTM5NCwxMSArMzk1LDEyIEBACiAKICAgICBkZWYgX2ZvbGQoc2VsZiwgZm9sZGVkKToKICAgICAgICAgbGFzdF9ldyA9IE5vbmUKKyAgICAgICAgZW5jb2RpbmcgPSAndXRmLTgnIGlmIGZvbGRlZC5wb2xpY3kudXRmOCBlbHNlICdhc2NpaScKICAgICAgICAgZm9yIHBhcnQgaW4gc2VsZi5wYXJ0czoKICAgICAgICAgICAgIHRzdHIgPSBzdHIocGFydCkKICAgICAgICAgICAgIGlzX2V3ID0gRmFsc2UKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzdHIocGFydCkuZW5jb2RlKCd1cy1hc2NpaScpCisgICAgICAgICAgICAgICAgc3RyKHBhcnQpLmVuY29kZShlbmNvZGluZykKICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgaWYgYW55KGlzaW5zdGFuY2UoeCwgZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHBhcnQuYWxsX2RlZmVjdHMpOgpAQCAtNDc1LDEyICs0NzcsMTMgQEAKICAgICAgICAgIyBjb21tZW50IHRoYXQgYmVjb21lcyBhIGJhcnJpZXIgYWNyb3NzIHdoaWNoIHdlIGNhbid0IGNvbXBvc2UgZW5jb2RlZAogICAgICAgICAjIHdvcmRzLgogICAgICAgICBsYXN0X2V3ID0gTm9uZQorICAgICAgICBlbmNvZGluZyA9ICd1dGYtOCcgaWYgZm9sZGVkLnBvbGljeS51dGY4IGVsc2UgJ2FzY2lpJwogICAgICAgICBmb3IgcGFydCBpbiBzZWxmLnBhcnRzOgogICAgICAgICAgICAgdHN0ciA9IHN0cihwYXJ0KQogICAgICAgICAgICAgdGxlbiA9IGxlbih0c3RyKQogICAgICAgICAgICAgaGFzX2V3ID0gRmFsc2UKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzdHIocGFydCkuZW5jb2RlKCd1cy1hc2NpaScpCisgICAgICAgICAgICAgICAgc3RyKHBhcnQpLmVuY29kZShlbmNvZGluZykKICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgaWYgYW55KGlzaW5zdGFuY2UoeCwgZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBwYXJ0LmFsbF9kZWZlY3RzKToKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weSBiL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weQppbmRleCA4MTA2MTE0Li5jMGQ5OGE0IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkKKysrIGIvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5CkBAIC0xNDksMTIgKzE0OSwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHNlcmlhbGl6YXRpb24uICBOb25lIG9yIDAgbWVhbnMgbm8gbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBpbmcgaXMgZG9uZS4gIERlZmF1bHQgaXMgNzguCiAKKyAgICBtYW5nbGVfZnJvbV8gICAgICAgIC0tIGEgZmxhZyB0aGF0LCB3aGVuIFRydWUgZXNjYXBlcyBGcm9tXyBsaW5lcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgb2YgdGhlIG1lc3NhZ2UgYnkgcHV0dGluZyBhIGA+JyBpbiBmcm9udCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbS4gVGhpcyBpcyB1c2VkIHdoZW4gdGhlIG1lc3NhZ2UgaXMgYmVpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWQgYnkgYSBnZW5lcmF0b3IuIERlZmF1bHQ6IFRydWUuCisKICAgICAiIiIKIAogICAgIHJhaXNlX29uX2RlZmVjdCA9IEZhbHNlCiAgICAgbGluZXNlcCA9ICdcbicKICAgICBjdGVfdHlwZSA9ICc4Yml0JwogICAgIG1heF9saW5lX2xlbmd0aCA9IDc4CisgICAgbWFuZ2xlX2Zyb21fID0gRmFsc2UKIAogICAgIGRlZiBoYW5kbGVfZGVmZWN0KHNlbGYsIG9iaiwgZGVmZWN0KToKICAgICAgICAgIiIiQmFzZWQgb24gcG9saWN5LCBlaXRoZXIgcmFpc2UgZGVmZWN0IG9yIGNhbGwgcmVnaXN0ZXJfZGVmZWN0LgpAQCAtMjY2LDYgKzI3Miw4IEBACiAgICAgcmVwbGljYXRlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgdmVyc2lvbiA1LjEuCiAgICAgIiIiCiAKKyAgICBtYW5nbGVfZnJvbV8gPSBUcnVlCisKICAgICBkZWYgX3Nhbml0aXplX2hlYWRlcihzZWxmLCBuYW1lLCB2YWx1ZSk6CiAgICAgICAgICMgSWYgdGhlIGhlYWRlciB2YWx1ZSBjb250YWlucyBzdXJyb2dhdGVzLCByZXR1cm4gYSBIZWFkZXIgdXNpbmcKICAgICAgICAgIyB0aGUgdW5rbm93bi04Yml0IGNoYXJzZXQgdG8gZW5jb2RlIHRoZSBieXRlcyBhcyBlbmNvZGVkIHdvcmRzLgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2NoYXJzZXQucHkgYi9MaWIvZW1haWwvY2hhcnNldC5weQppbmRleCBlOTk5NDcyLi5lZTU2NDA0IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvY2hhcnNldC5weQorKysgYi9MaWIvZW1haWwvY2hhcnNldC5weQpAQCAtMjQ5LDkgKzI0OSw2IEBACiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIHJldHVybiBzdHIoc2VsZikgPT0gc3RyKG90aGVyKS5sb3dlcigpCiAKLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9fZXFfXyhvdGhlcikKLQogICAgIGRlZiBnZXRfYm9keV9lbmNvZGluZyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIHVzZWQgZm9yIGJvZHkgZW5jb2RpbmcuCiAKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5IGIvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkKaW5kZXggYzk1YjI3Zi4uZTJlM2U5NiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkKKysrIGIvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkKQEAgLTI2LDYgKzI2LDcgQEAKIGZyb20gZW1haWwgaW1wb3J0IGVycm9ycwogZnJvbSBlbWFpbCBpbXBvcnQgbWVzc2FnZQogZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgY29tcGF0MzIKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCiAKIE5MQ1JFID0gcmUuY29tcGlsZSgnXHJcbnxccnxcbicpCiBOTENSRV9ib2wgPSByZS5jb21waWxlKCcoXHJcbnxccnxcbiknKQpAQCAtNTIsOCArNTMsOCBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgIyBDaHVua3Mgb2YgdGhlIGxhc3QgcGFydGlhbCBsaW5lIHB1c2hlZCBpbnRvIHRoaXMgb2JqZWN0LgogICAgICAgICBzZWxmLl9wYXJ0aWFsID0gW10KLSAgICAgICAgIyBUaGUgbGlzdCBvZiBmdWxsLCBwdXNoZWQgbGluZXMsIGluIHJldmVyc2Ugb3JkZXIKLSAgICAgICAgc2VsZi5fbGluZXMgPSBbXQorICAgICAgICAjIEEgZGVxdWUgb2YgZnVsbCwgcHVzaGVkIGxpbmVzCisgICAgICAgIHNlbGYuX2xpbmVzID0gZGVxdWUoKQogICAgICAgICAjIFRoZSBzdGFjayBvZiBmYWxzZS1FT0YgY2hlY2tpbmcgcHJlZGljYXRlcy4KICAgICAgICAgc2VsZi5fZW9mc3RhY2sgPSBbXQogICAgICAgICAjIEEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaGFzIGJlZW4gY2xvc2VkIG9yIG5vdC4KQEAgLTc4LDIxICs3OSwyMSBAQAogICAgICAgICAgICAgcmV0dXJuIE5lZWRNb3JlRGF0YQogICAgICAgICAjIFBvcCB0aGUgbGluZSBvZmYgdGhlIHN0YWNrIGFuZCBzZWUgaWYgaXQgbWF0Y2hlcyB0aGUgY3VycmVudAogICAgICAgICAjIGZhbHNlLUVPRiBwcmVkaWNhdGUuCi0gICAgICAgIGxpbmUgPSBzZWxmLl9saW5lcy5wb3AoKQorICAgICAgICBsaW5lID0gc2VsZi5fbGluZXMucG9wbGVmdCgpCiAgICAgICAgICMgUkZDIDIwNDYsIHNlY3Rpb24gNS4xLjIgcmVxdWlyZXMgdXMgdG8gcmVjb2duaXplIG91dGVyIGxldmVsCiAgICAgICAgICMgYm91bmRhcmllcyBhdCBhbnkgbGV2ZWwgb2YgaW5uZXIgbmVzdGluZy4gIERvIHRoaXMsIGJ1dCBiZSBzdXJlIGl0J3MKICAgICAgICAgIyBpbiB0aGUgb3JkZXIgb2YgbW9zdCB0byBsZWFzdCBuZXN0ZWQuCi0gICAgICAgIGZvciBhdGVvZiBpbiBzZWxmLl9lb2ZzdGFja1s6Oi0xXToKKyAgICAgICAgZm9yIGF0ZW9mIGluIHJldmVyc2VkKHNlbGYuX2VvZnN0YWNrKToKICAgICAgICAgICAgIGlmIGF0ZW9mKGxpbmUpOgogICAgICAgICAgICAgICAgICMgV2UncmUgYXQgdGhlIGZhbHNlIEVPRi4gIEJ1dCBwdXNoIHRoZSBsYXN0IGxpbmUgYmFjayBmaXJzdC4KLSAgICAgICAgICAgICAgICBzZWxmLl9saW5lcy5hcHBlbmQobGluZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9saW5lcy5hcHBlbmRsZWZ0KGxpbmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuICcnCiAgICAgICAgIHJldHVybiBsaW5lCiAKICAgICBkZWYgdW5yZWFkbGluZShzZWxmLCBsaW5lKToKICAgICAgICAgIyBMZXQgdGhlIGNvbnN1bWVyIHB1c2ggYSBsaW5lIGJhY2sgaW50byB0aGUgYnVmZmVyLgogICAgICAgICBhc3NlcnQgbGluZSBpcyBub3QgTmVlZE1vcmVEYXRhCi0gICAgICAgIHNlbGYuX2xpbmVzLmFwcGVuZChsaW5lKQorICAgICAgICBzZWxmLl9saW5lcy5hcHBlbmRsZWZ0KGxpbmUpCiAKICAgICBkZWYgcHVzaChzZWxmLCBkYXRhKToKICAgICAgICAgIiIiUHVzaCBzb21lIG5ldyBkYXRhIGludG8gdGhpcyBvYmplY3QuIiIiCkBAIC0xMTksOCArMTIwLDcgQEAKICAgICAgICAgc2VsZi5wdXNobGluZXMocGFydHMpCiAKICAgICBkZWYgcHVzaGxpbmVzKHNlbGYsIGxpbmVzKToKLSAgICAgICAgIyBSZXZlcnNlIGFuZCBpbnNlcnQgYXQgdGhlIGZyb250IG9mIHRoZSBsaW5lcy4KLSAgICAgICAgc2VsZi5fbGluZXNbOjBdID0gbGluZXNbOjotMV0KKyAgICAgICAgc2VsZi5fbGluZXMuZXh0ZW5kKGxpbmVzKQogCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2dlbmVyYXRvci5weSBiL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkKaW5kZXggNDczNTcyMS4uMTFmZjE2ZCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2dlbmVyYXRvci5weQorKysgYi9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5CkBAIC0zMiwxNiArMzIsMTYgQEAKICAgICAjIFB1YmxpYyBpbnRlcmZhY2UKICAgICAjCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49Tm9uZSwgKiwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXz1Ob25lLCBtYXhoZWFkZXJsZW49Tm9uZSwgKiwKICAgICAgICAgICAgICAgICAgcG9saWN5PU5vbmUpOgogICAgICAgICAiIiJDcmVhdGUgdGhlIGdlbmVyYXRvciBmb3IgbWVzc2FnZSBmbGF0dGVuaW5nLgogCiAgICAgICAgIG91dGZwIGlzIHRoZSBvdXRwdXQgZmlsZS1saWtlIG9iamVjdCBmb3Igd3JpdGluZyB0aGUgbWVzc2FnZSB0by4gIEl0CiAgICAgICAgIG11c3QgaGF2ZSBhIHdyaXRlKCkgbWV0aG9kLgogCi0gICAgICAgIE9wdGlvbmFsIG1hbmdsZV9mcm9tXyBpcyBhIGZsYWcgdGhhdCwgd2hlbiBUcnVlICh0aGUgZGVmYXVsdCksIGVzY2FwZXMKLSAgICAgICAgRnJvbV8gbGluZXMgaW4gdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UgYnkgcHV0dGluZyBhIGA+JyBpbiBmcm9udCBvZgotICAgICAgICB0aGVtLgorICAgICAgICBPcHRpb25hbCBtYW5nbGVfZnJvbV8gaXMgYSBmbGFnIHRoYXQsIHdoZW4gVHJ1ZSAodGhlIGRlZmF1bHQgaWYgcG9saWN5CisgICAgICAgIGlzIG5vdCBzZXQpLCBlc2NhcGVzIEZyb21fIGxpbmVzIGluIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlIGJ5IHB1dHRpbmcKKyAgICAgICAgYSBgPicgaW4gZnJvbnQgb2YgdGhlbS4KIAogICAgICAgICBPcHRpb25hbCBtYXhoZWFkZXJsZW4gc3BlY2lmaWVzIHRoZSBsb25nZXN0IGxlbmd0aCBmb3IgYSBub24tY29udGludWVkCiAgICAgICAgIGhlYWRlci4gIFdoZW4gYSBoZWFkZXIgbGluZSBpcyBsb25nZXIgKGluIGNoYXJhY3RlcnMsIHdpdGggdGFicwpAQCAtNTYsNiArNTYsOSBAQAogICAgICAgICBmbGF0dGVuIG1ldGhvZCBpcyB1c2VkLgogCiAgICAgICAgICIiIgorCisgICAgICAgIGlmIG1hbmdsZV9mcm9tXyBpcyBOb25lOgorICAgICAgICAgICAgbWFuZ2xlX2Zyb21fID0gVHJ1ZSBpZiBwb2xpY3kgaXMgTm9uZSBlbHNlIHBvbGljeS5tYW5nbGVfZnJvbV8KICAgICAgICAgc2VsZi5fZnAgPSBvdXRmcAogICAgICAgICBzZWxmLl9tYW5nbGVfZnJvbV8gPSBtYW5nbGVfZnJvbV8KICAgICAgICAgc2VsZi5tYXhoZWFkZXJsZW4gPSBtYXhoZWFkZXJsZW4KQEAgLTQ0OSw3ICs0NTIsNyBAQAogICAgIExpa2UgdGhlIEdlbmVyYXRvciBiYXNlIGNsYXNzLCBleGNlcHQgdGhhdCBub24tdGV4dCBwYXJ0cyBhcmUgc3Vic3RpdHV0ZWQKICAgICB3aXRoIGEgZm9ybWF0IHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhcnQuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTc4LCBmbXQ9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV89Tm9uZSwgbWF4aGVhZGVybGVuPTc4LCBmbXQ9Tm9uZSk6CiAgICAgICAgICIiIkxpa2UgR2VuZXJhdG9yLl9faW5pdF9fKCkgZXhjZXB0IHRoYXQgYW4gYWRkaXRpb25hbCBvcHRpb25hbAogICAgICAgICBhcmd1bWVudCBpcyBhbGxvd2VkLgogCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvaGVhZGVyLnB5IGIvTGliL2VtYWlsL2hlYWRlci5weQppbmRleCA5Yzg5NTg5Li42ODIwZWExIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvaGVhZGVyLnB5CisrKyBiL0xpYi9lbWFpbC9oZWFkZXIucHkKQEAgLTI2Miw5ICsyNjIsNiBAQAogICAgICAgICAjIGFyZ3MgYW5kIGRvIGFub3RoZXIgY29tcGFyaXNvbi4KICAgICAgICAgcmV0dXJuIG90aGVyID09IHN0cihzZWxmKQogCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBub3Qgc2VsZiA9PSBvdGhlcgotCiAgICAgZGVmIGFwcGVuZChzZWxmLCBzLCBjaGFyc2V0PU5vbmUsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgICIiIkFwcGVuZCBhIHN0cmluZyB0byB0aGUgTUlNRSBoZWFkZXIuCiAKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9oZWFkZXJyZWdpc3RyeS5weSBiL0xpYi9lbWFpbC9oZWFkZXJyZWdpc3RyeS5weQppbmRleCA5MTFhMmFmLi40NjhjYTllIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvaGVhZGVycmVnaXN0cnkucHkKKysrIGIvTGliL2VtYWlsL2hlYWRlcnJlZ2lzdHJ5LnB5CkBAIC04MSw3ICs4MSw4IEBACiAgICAgICAgIHJldHVybiBscAogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIkFkZHJlc3MoZGlzcGxheV9uYW1lPXshcn0sIHVzZXJuYW1lPXshcn0sIGRvbWFpbj17IXJ9KSIuZm9ybWF0KAorICAgICAgICByZXR1cm4gInt9KGRpc3BsYXlfbmFtZT17IXJ9LCB1c2VybmFtZT17IXJ9LCBkb21haW49eyFyfSkiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaXNwbGF5X25hbWUsIHNlbGYudXNlcm5hbWUsIHNlbGYuZG9tYWluKQogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CkBAIC0xMzIsNyArMTMzLDggQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX2FkZHJlc3NlcwogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIkdyb3VwKGRpc3BsYXlfbmFtZT17IXJ9LCBhZGRyZXNzZXM9eyFyfSIuZm9ybWF0KAorICAgICAgICByZXR1cm4gInt9KGRpc3BsYXlfbmFtZT17IXJ9LCBhZGRyZXNzZXM9eyFyfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKICAgICAgICAgICAgICAgICAgc2VsZi5kaXNwbGF5X25hbWUsIHNlbGYuYWRkcmVzc2VzKQogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWVzc2FnZS5weSBiL0xpYi9lbWFpbC9tZXNzYWdlLnB5CmluZGV4IDJmMzdkYmIuLmE4OTIwMTIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9tZXNzYWdlLnB5CisrKyBiL0xpYi9lbWFpbC9tZXNzYWdlLnB5CkBAIC05MjcsMjAgKzkyNywyMSBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIFtwYXJ0LmdldF9jb250ZW50X2NoYXJzZXQoZmFpbG9iaikgZm9yIHBhcnQgaW4gc2VsZi53YWxrKCldCiAKKyAgICBkZWYgZ2V0X2NvbnRlbnRfZGlzcG9zaXRpb24oc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgbWVzc2FnZSdzIGNvbnRlbnQtZGlzcG9zaXRpb24gaWYgaXQgZXhpc3RzLCBvciBOb25lLgorCisgICAgICAgIFRoZSByZXR1cm4gdmFsdWVzIGNhbiBiZSBlaXRoZXIgJ2lubGluZScsICdhdHRhY2htZW50JyBvciBOb25lCisgICAgICAgIGFjY29yZGluZyB0byB0aGUgcmZjMjE4My4KKyAgICAgICAgIiIiCisgICAgICAgIHZhbHVlID0gc2VsZi5nZXQoJ2NvbnRlbnQtZGlzcG9zaXRpb24nKQorICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgY19kID0gX3NwbGl0cGFyYW0odmFsdWUpWzBdLmxvd2VyKCkKKyAgICAgICAgcmV0dXJuIGNfZAorCiAgICAgIyBJLmUuIGRlZiB3YWxrKHNlbGYpOiAuLi4KICAgICBmcm9tIGVtYWlsLml0ZXJhdG9ycyBpbXBvcnQgd2FsawogCi0jIFhYWCBTdXBwb3J0IGZvciB0ZW1wb3JhcnkgZGVwcmVjYXRpb24gaGFjayBmb3IgaXNfYXR0YWNobWVudCBwcm9wZXJ0eS4KLWNsYXNzIF9Jc0F0dGFjaG1lbnQ6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKLSAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQotICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKLSAgICAgICAgd2FybmluZ3Mud2FybigiaXNfYXR0YWNobWVudCB3aWxsIGJlIGEgbWV0aG9kLCBub3QgYSBwcm9wZXJ0eSwgaW4gMy41IiwKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD0zKQotICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQogCiBjbGFzcyBNSU1FUGFydChNZXNzYWdlKToKIApAQCAtOTUwLDEyICs5NTEsOSBAQAogICAgICAgICAgICAgcG9saWN5ID0gZGVmYXVsdAogICAgICAgICBNZXNzYWdlLl9faW5pdF9fKHNlbGYsIHBvbGljeSkKIAotICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpc19hdHRhY2htZW50KHNlbGYpOgogICAgICAgICBjX2QgPSBzZWxmLmdldCgnY29udGVudC1kaXNwb3NpdGlvbicpCi0gICAgICAgIHJlc3VsdCA9IEZhbHNlIGlmIGNfZCBpcyBOb25lIGVsc2UgY19kLmNvbnRlbnRfZGlzcG9zaXRpb24gPT0gJ2F0dGFjaG1lbnQnCi0gICAgICAgICMgWFhYIHRyYW5zaXRpb25hbCBoYWNrIHRvIHJhaXNlIGRlcHJlY2F0aW9uIGlmIG5vdCBjYWxsZWQuCi0gICAgICAgIHJldHVybiBfSXNBdHRhY2htZW50KHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEZhbHNlIGlmIGNfZCBpcyBOb25lIGVsc2UgY19kLmNvbnRlbnRfZGlzcG9zaXRpb24gPT0gJ2F0dGFjaG1lbnQnCiAKICAgICBkZWYgX2ZpbmRfYm9keShzZWxmLCBwYXJ0LCBwcmVmZXJlbmNlbGlzdCk6CiAgICAgICAgIGlmIHBhcnQuaXNfYXR0YWNobWVudCgpOgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvdGV4dC5weSBiL0xpYi9lbWFpbC9taW1lL3RleHQucHkKaW5kZXggZWMxOGI4NS4uNDc5OTI4ZSAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvdGV4dC5weQorKysgYi9MaWIvZW1haWwvbWltZS90ZXh0LnB5CkBAIC02LDYgKzYsNyBAQAogCiBfX2FsbF9fID0gWydNSU1FVGV4dCddCiAKK2Zyb20gZW1haWwuY2hhcnNldCBpbXBvcnQgQ2hhcnNldAogZnJvbSBlbWFpbC5taW1lLm5vbm11bHRpcGFydCBpbXBvcnQgTUlNRU5vbk11bHRpcGFydAogCiAKQEAgLTM0LDYgKzM1LDggQEAKICAgICAgICAgICAgICAgICBfY2hhcnNldCA9ICd1cy1hc2NpaScKICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgX2NoYXJzZXQgPSAndXRmLTgnCisgICAgICAgIGlmIGlzaW5zdGFuY2UoX2NoYXJzZXQsIENoYXJzZXQpOgorICAgICAgICAgICAgX2NoYXJzZXQgPSBzdHIoX2NoYXJzZXQpCiAKICAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAndGV4dCcsIF9zdWJ0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqeydjaGFyc2V0JzogX2NoYXJzZXR9KQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3BvbGljeS5weSBiL0xpYi9lbWFpbC9wb2xpY3kucHkKaW5kZXggZjBiMjBmNC4uNmFjNjRhNSAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL3BvbGljeS5weQorKysgYi9MaWIvZW1haWwvcG9saWN5LnB5CkBAIC0zNSw2ICszNSwxMyBAQAogICAgIEluIGFkZGl0aW9uIHRvIHRoZSBzZXR0YWJsZSBhdHRyaWJ1dGVzIGxpc3RlZCBhYm92ZSB0aGF0IGFwcGx5IHRvCiAgICAgYWxsIFBvbGljaWVzLCB0aGlzIHBvbGljeSBhZGRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBhdHRyaWJ1dGVzOgogCisgICAgdXRmOCAgICAgICAgICAgICAgICAtLSBpZiBGYWxzZSAodGhlIGRlZmF1bHQpIG1lc3NhZ2UgaGVhZGVycyB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkIGFzIEFTQ0lJLCB1c2luZyBlbmNvZGVkIHdvcmRzIHRvIGVuY29kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55IG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIHRoZSBzb3VyY2Ugc3RyaW5ncy4gIElmCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlLCB0aGUgbWVzc2FnZSBoZWFkZXJzIHdpbGwgYmUgc2VyaWFsaXplZCB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRmOCBhbmQgd2lsbCBub3QgY29udGFpbiBlbmNvZGVkIHdvcmRzIChzZWUgUkZDCisgICAgICAgICAgICAgICAgICAgICAgICAgICA2NTMyIGZvciBtb3JlIG9uIHRoaXMgc2VyaWFsaXphdGlvbiBmb3JtYXQpLgorCiAgICAgcmVmb2xkX3NvdXJjZSAgICAgICAtLSBpZiB0aGUgdmFsdWUgZm9yIGEgaGVhZGVyIGluIHRoZSBNZXNzYWdlIG9iamVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtZSBmcm9tIHRoZSBwYXJzaW5nIG9mIHNvbWUgc291cmNlLCB0aGlzIGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IGEgZ2VuZXJhdG9yIHNob3VsZCByZWZvbGQKQEAgLTcyLDYgKzc5LDcgQEAKIAogICAgICIiIgogCisgICAgdXRmOCA9IEZhbHNlCiAgICAgcmVmb2xkX3NvdXJjZSA9ICdsb25nJwogICAgIGhlYWRlcl9mYWN0b3J5ID0gSGVhZGVyUmVnaXN0cnkoKQogICAgIGNvbnRlbnRfbWFuYWdlciA9IHJhd19kYXRhX21hbmFnZXIKQEAgLTE3NSw5ICsxODMsMTMgQEAKICAgICAgICAgcmVmb2xkX2hlYWRlciBzZXR0aW5nLCBzaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8ga25vdyB3aGV0aGVyIHRoZSBiaW5hcnkKICAgICAgICAgZGF0YSBjb25zaXN0cyBvZiBzaW5nbGUgYnl0ZSBjaGFyYWN0ZXJzIG9yIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLgogCisgICAgICAgIElmIHV0ZjggaXMgdHJ1ZSwgaGVhZGVycyBhcmUgZW5jb2RlZCB0byB1dGY4LCBvdGhlcndpc2UgdG8gYXNjaWkgd2l0aAorICAgICAgICBub24tQVNDSUkgdW5pY29kZSByZW5kZXJlZCBhcyBlbmNvZGVkIHdvcmRzLgorCiAgICAgICAgICIiIgogICAgICAgICBmb2xkZWQgPSBzZWxmLl9mb2xkKG5hbWUsIHZhbHVlLCByZWZvbGRfYmluYXJ5PXNlbGYuY3RlX3R5cGU9PSc3Yml0JykKLSAgICAgICAgcmV0dXJuIGZvbGRlZC5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgICAgIGNoYXJzZXQgPSAndXRmOCcgaWYgc2VsZi51dGY4IGVsc2UgJ2FzY2lpJworICAgICAgICByZXR1cm4gZm9sZGVkLmVuY29kZShjaGFyc2V0LCAnc3Vycm9nYXRlZXNjYXBlJykKIAogICAgIGRlZiBfZm9sZChzZWxmLCBuYW1lLCB2YWx1ZSwgcmVmb2xkX2JpbmFyeT1GYWxzZSk6CiAgICAgICAgIGlmIGhhc2F0dHIodmFsdWUsICduYW1lJyk6CkBAIC0xOTksMyArMjExLDQgQEAKIHN0cmljdCA9IGRlZmF1bHQuY2xvbmUocmFpc2Vfb25fZGVmZWN0PVRydWUpCiBTTVRQID0gZGVmYXVsdC5jbG9uZShsaW5lc2VwPSdcclxuJykKIEhUVFAgPSBkZWZhdWx0LmNsb25lKGxpbmVzZXA9J1xyXG4nLCBtYXhfbGluZV9sZW5ndGg9Tm9uZSkKK1NNVFBVVEY4ID0gU01UUC5jbG9uZSh1dGY4PVRydWUpCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2FsaWFzZXMucHkgYi9MaWIvZW5jb2RpbmdzL2FsaWFzZXMucHkKaW5kZXggNGNiYWFkZS4uNjdjODI4ZCAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9hbGlhc2VzLnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvYWxpYXNlcy5weQpAQCAtNDEyLDYgKzQxMiwxMSBAQAogICAgICMga29pOF9yIGNvZGVjCiAgICAgJ2Nza29pOHInICAgICAgICAgICAgOiAna29pOF9yJywKIAorICAgICMga3oxMDQ4IGNvZGVjCisgICAgJ2t6XzEwNDgnICAgICAgICAgICA6ICdrejEwNDgnLAorICAgICdyazEwNDgnICAgICAgICAgICAgOiAna3oxMDQ4JywKKyAgICAnc3RyazEwNDhfMjAwMicgICAgIDogJ2t6MTA0OCcsCisKICAgICAjIGxhdGluXzEgY29kZWMKICAgICAjCiAgICAgIyBOb3RlIHRoYXQgdGhlIGxhdGluXzEgY29kZWMgaXMgaW1wbGVtZW50ZWQgaW50ZXJuYWxseSBpbiBDIGFuZCBhCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2NwNjUwMDEucHkgYi9MaWIvZW5jb2RpbmdzL2NwNjUwMDEucHkKaW5kZXggMjg3ZWI4Ny4uOTVjYjJhZSAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9jcDY1MDAxLnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvY3A2NTAwMS5weQpAQCAtMTEsMjAgKzExLDIzIEBACiAjIyMgQ29kZWMgQVBJcwogCiBlbmNvZGUgPSBmdW5jdG9vbHMucGFydGlhbChjb2RlY3MuY29kZV9wYWdlX2VuY29kZSwgNjUwMDEpCi1kZWNvZGUgPSBmdW5jdG9vbHMucGFydGlhbChjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgNjUwMDEpCitfZGVjb2RlID0gZnVuY3Rvb2xzLnBhcnRpYWwoY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIDY1MDAxKQorCitkZWYgZGVjb2RlKGlucHV0LCBlcnJvcnM9J3N0cmljdCcpOgorICAgIHJldHVybiBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSg2NTAwMSwgaW5wdXQsIGVycm9ycywgVHJ1ZSkKIAogY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCwgc2VsZi5lcnJvcnMpWzBdCiAKIGNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuQnVmZmVyZWRJbmNyZW1lbnRhbERlY29kZXIpOgotICAgIF9idWZmZXJfZGVjb2RlID0gZGVjb2RlCisgICAgX2J1ZmZlcl9kZWNvZGUgPSBfZGVjb2RlCiAKIGNsYXNzIFN0cmVhbVdyaXRlcihjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgICBlbmNvZGUgPSBlbmNvZGUKIAogY2xhc3MgU3RyZWFtUmVhZGVyKGNvZGVjcy5TdHJlYW1SZWFkZXIpOgotICAgIGRlY29kZSA9IGRlY29kZQorICAgIGRlY29kZSA9IF9kZWNvZGUKIAogIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCiAKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3Mva29pOF90LnB5IGIvTGliL2VuY29kaW5ncy9rb2k4X3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU0MTViYQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbmNvZGluZ3Mva29pOF90LnB5CkBAIC0wLDAgKzEsMzA4IEBACisiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGtvaThfdAorIiIiCisjIGh0dHA6Ly9ydS53aWtpcGVkaWEub3JnL3dpa2kv0JrQntCYLTgKKyMgaHR0cDovL3d3dy5vcGVuc291cmNlLmFwcGxlLmNvbS9zb3VyY2UvbGliaWNvbnYvbGliaWNvbnYtNC9saWJpY29udi90ZXN0cy9LT0k4LVQuVFhUCisKK2ltcG9ydCBjb2RlY3MKKworIyMjIENvZGVjIEFQSXMKKworY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKKworICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKKworICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKKworY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgorICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KKworY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgorICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KKworY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgorICAgIHBhc3MKKworY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgorICAgIHBhc3MKKworIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCisKK2RlZiBnZXRyZWdlbnRyeSgpOgorICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAorICAgICAgICBuYW1lPSdrb2k4LXQnLAorICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCisgICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKKyAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKKyAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKKyAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKKyAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKKyAgICApCisKKworIyMjIERlY29kaW5nIFRhYmxlCisKK2RlY29kaW5nX3RhYmxlID0gKAorICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCisgICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKKyAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gU1RBUlQgT0YgVEVYVAorICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAorICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCisgICAgJ1x4MDUnICAgICAjICAweDA1IC0+IEVOUVVJUlkKKyAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKKyAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAorICAgICdceDA4JyAgICAgIyAgMHgwOCAtPiBCQUNLU1BBQ0UKKyAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCisgICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAorICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBWRVJUSUNBTCBUQUJVTEFUSU9OCisgICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAorICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KKyAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gU0hJRlQgT1VUCisgICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCisgICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKKyAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gREVWSUNFIENPTlRST0wgT05FCisgICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTworICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQorICAgICdceDE0JyAgICAgIyAgMHgxNCAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCisgICAgJ1x4MTUnICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCisgICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKKyAgICAnXHgxNycgICAgICMgIDB4MTcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSworICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKKyAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQorICAgICdceDFhJyAgICAgIyAgMHgxQSAtPiBTVUJTVElUVVRFCisgICAgJ1x4MWInICAgICAjICAweDFCIC0+IEVTQ0FQRQorICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgorICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKKyAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgorICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgorICAgICcgJyAgICAgICAgIyAgMHgyMCAtPiBTUEFDRQorICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCisgICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCisgICAgJyMnICAgICAgICAjICAweDIzIC0+IE5VTUJFUiBTSUdOCisgICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCisgICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgorICAgICcmJyAgICAgICAgIyAgMHgyNiAtPiBBTVBFUlNBTkQKKyAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQorICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCisgICAgJyknICAgICAgICAjICAweDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTCisgICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCisgICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgorICAgICcsJyAgICAgICAgIyAgMHgyQyAtPiBDT01NQQorICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKKyAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCisgICAgJy8nICAgICAgICAjICAweDJGIC0+IFNPTElEVVMKKyAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTworICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKKyAgICAnMicgICAgICAgICMgIDB4MzIgLT4gRElHSVQgVFdPCisgICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCisgICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKKyAgICAnNScgICAgICAgICMgIDB4MzUgLT4gRElHSVQgRklWRQorICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKKyAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KKyAgICAnOCcgICAgICAgICMgIDB4MzggLT4gRElHSVQgRUlHSFQKKyAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQorICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgorICAgICc7JyAgICAgICAgIyAgMHgzQiAtPiBTRU1JQ09MT04KKyAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KKyAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KKyAgICAnPicgICAgICAgICMgIDB4M0UgLT4gR1JFQVRFUi1USEFOIFNJR04KKyAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSworICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCisgICAgJ0EnICAgICAgICAjICAweDQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKKyAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgorICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCisgICAgJ0QnICAgICAgICAjICAweDQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKKyAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQorICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCisgICAgJ0cnICAgICAgICAjICAweDQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKKyAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAorICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCisgICAgJ0onICAgICAgICAjICAweDRBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKKyAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSworICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCisgICAgJ00nICAgICAgICAjICAweDREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KKyAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgorICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCisgICAgJ1AnICAgICAgICAjICAweDUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKKyAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQorICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCisgICAgJ1MnICAgICAgICAjICAweDUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMKKyAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAorICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCisgICAgJ1YnICAgICAgICAjICAweDU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFYKKyAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVworICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCisgICAgJ1knICAgICAgICAjICAweDU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkKKyAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgorICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCisgICAgJ1xcJyAgICAgICAjICAweDVDIC0+IFJFVkVSU0UgU09MSURVUworICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAorICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAorICAgICdfJyAgICAgICAgIyAgMHg1RiAtPiBMT1cgTElORQorICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKKyAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKKyAgICAnYicgICAgICAgICMgIDB4NjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKKyAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKKyAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKKyAgICAnZScgICAgICAgICMgIDB4NjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKKyAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKKyAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKKyAgICAnaCcgICAgICAgICMgIDB4NjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKKyAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKKyAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKKyAgICAnaycgICAgICAgICMgIDB4NkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKKyAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKKyAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KKyAgICAnbicgICAgICAgICMgIDB4NkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KKyAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KKyAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKKyAgICAncScgICAgICAgICMgIDB4NzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKKyAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKKyAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKKyAgICAndCcgICAgICAgICMgIDB4NzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKKyAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKKyAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKKyAgICAndycgICAgICAgICMgIDB4NzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKKyAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKKyAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKKyAgICAneicgICAgICAgICMgIDB4N0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKKyAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCisgICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKKyAgICAnfScgICAgICAgICMgIDB4N0QgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAorICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQorICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKKyAgICAnXHUwNDliJyAgICMgIDB4ODAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDQ5MycgICAjICAweDgxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgV0lUSCBTVFJPS0UKKyAgICAnXHUyMDFhJyAgICMgIDB4ODIgLT4gU0lOR0xFIExPVy05IFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MDQ5MicgICAjICAweDgzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRQorICAgICdcdTIwMWUnICAgIyAgMHg4NCAtPiBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDI2JyAgICMgIDB4ODUgLT4gSE9SSVpPTlRBTCBFTExJUFNJUworICAgICdcdTIwMjAnICAgIyAgMHg4NiAtPiBEQUdHRVIKKyAgICAnXHUyMDIxJyAgICMgIDB4ODcgLT4gRE9VQkxFIERBR0dFUgorICAgICdcdWZmZmUnICAgIyAgMHg4OCAtPiBVTkRFRklORUQKKyAgICAnXHUyMDMwJyAgICMgIDB4ODkgLT4gUEVSIE1JTExFIFNJR04KKyAgICAnXHUwNGIzJyAgICMgIDB4OEEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MjAzOScgICAjICAweDhCIC0+IFNJTkdMRSBMRUZULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MDRiMicgICAjICAweDhDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRiNycgICAjICAweDhEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGI2JyAgICMgIDB4OEUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggREVTQ0VOREVSCisgICAgJ1x1ZmZmZScgICAjICAweDhGIC0+IFVOREVGSU5FRAorICAgICdcdTA0OWEnICAgIyAgMHg5MCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgorICAgICdcdTIwMTgnICAgIyAgMHg5MSAtPiBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMTknICAgIyAgMHg5MiAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDFjJyAgICMgIDB4OTMgLT4gTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDFkJyAgICMgIDB4OTQgLT4gUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAyMicgICAjICAweDk1IC0+IEJVTExFVAorICAgICdcdTIwMTMnICAgIyAgMHg5NiAtPiBFTiBEQVNICisgICAgJ1x1MjAxNCcgICAjICAweDk3IC0+IEVNIERBU0gKKyAgICAnXHVmZmZlJyAgICMgIDB4OTggLT4gVU5ERUZJTkVECisgICAgJ1x1MjEyMicgICAjICAweDk5IC0+IFRSQURFIE1BUksgU0lHTgorICAgICdcdWZmZmUnICAgIyAgMHg5QSAtPiBVTkRFRklORUQKKyAgICAnXHUyMDNhJyAgICMgIDB4OUIgLT4gU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1ZmZmZScgICAjICAweDlDIC0+IFVOREVGSU5FRAorICAgICdcdWZmZmUnICAgIyAgMHg5RCAtPiBVTkRFRklORUQKKyAgICAnXHVmZmZlJyAgICMgIDB4OUUgLT4gVU5ERUZJTkVECisgICAgJ1x1ZmZmZScgICAjICAweDlGIC0+IFVOREVGSU5FRAorICAgICdcdWZmZmUnICAgIyAgMHhBMCAtPiBVTkRFRklORUQKKyAgICAnXHUwNGVmJyAgICMgIDB4QTEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST04KKyAgICAnXHUwNGVlJyAgICMgIDB4QTIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgorICAgICdcdTA0NTEnICAgIyAgMHhBMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSU8KKyAgICAnXHhhNCcgICAgICMgIDB4QTQgLT4gQ1VSUkVOQ1kgU0lHTgorICAgICdcdTA0ZTMnICAgIyAgMHhBNSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgorICAgICdceGE2JyAgICAgIyAgMHhBNiAtPiBCUk9LRU4gQkFSCisgICAgJ1x4YTcnICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgorICAgICdcdWZmZmUnICAgIyAgMHhBOCAtPiBVTkRFRklORUQKKyAgICAnXHVmZmZlJyAgICMgIDB4QTkgLT4gVU5ERUZJTkVECisgICAgJ1x1ZmZmZScgICAjICAweEFBIC0+IFVOREVGSU5FRAorICAgICdceGFiJyAgICAgIyAgMHhBQiAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdceGFjJyAgICAgIyAgMHhBQyAtPiBOT1QgU0lHTgorICAgICdceGFkJyAgICAgIyAgMHhBRCAtPiBTT0ZUIEhZUEhFTgorICAgICdceGFlJyAgICAgIyAgMHhBRSAtPiBSRUdJU1RFUkVEIFNJR04KKyAgICAnXHVmZmZlJyAgICMgIDB4QUYgLT4gVU5ERUZJTkVECisgICAgJ1x4YjAnICAgICAjICAweEIwIC0+IERFR1JFRSBTSUdOCisgICAgJ1x4YjEnICAgICAjICAweEIxIC0+IFBMVVMtTUlOVVMgU0lHTgorICAgICdceGIyJyAgICAgIyAgMHhCMiAtPiBTVVBFUlNDUklQVCBUV08KKyAgICAnXHUwNDAxJyAgICMgIDB4QjMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU8KKyAgICAnXHVmZmZlJyAgICMgIDB4QjQgLT4gVU5ERUZJTkVECisgICAgJ1x1MDRlMicgICAjICAweEI1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST04KKyAgICAnXHhiNicgICAgICMgIDB4QjYgLT4gUElMQ1JPVyBTSUdOCisgICAgJ1x4YjcnICAgICAjICAweEI3IC0+IE1JRERMRSBET1QKKyAgICAnXHVmZmZlJyAgICMgIDB4QjggLT4gVU5ERUZJTkVECisgICAgJ1x1MjExNicgICAjICAweEI5IC0+IE5VTUVSTyBTSUdOCisgICAgJ1x1ZmZmZScgICAjICAweEJBIC0+IFVOREVGSU5FRAorICAgICdceGJiJyAgICAgIyAgMHhCQiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHVmZmZlJyAgICMgIDB4QkMgLT4gVU5ERUZJTkVECisgICAgJ1x1ZmZmZScgICAjICAweEJEIC0+IFVOREVGSU5FRAorICAgICdcdWZmZmUnICAgIyAgMHhCRSAtPiBVTkRFRklORUQKKyAgICAnXHhhOScgICAgICMgIDB4QkYgLT4gQ09QWVJJR0hUIFNJR04KKyAgICAnXHUwNDRlJyAgICMgIDB4QzAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlVCisgICAgJ1x1MDQzMCcgICAjICAweEMxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgICAgJ1x1MDQzMScgICAjICAweEMyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCRQorICAgICdcdTA0NDYnICAgIyAgMHhDMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNFCisgICAgJ1x1MDQzNCcgICAjICAweEM0IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBERQorICAgICdcdTA0MzUnICAgIyAgMHhDNSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKKyAgICAnXHUwNDQ0JyAgICMgIDB4QzYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVGCisgICAgJ1x1MDQzMycgICAjICAweEM3IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKKyAgICAnXHUwNDQ1JyAgICMgIDB4QzggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBCisgICAgJ1x1MDQzOCcgICAjICAweEM5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJCisgICAgJ1x1MDQzOScgICAjICAweENBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCisgICAgJ1x1MDQzYScgICAjICAweENCIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQQorICAgICdcdTA0M2InICAgIyAgMHhDQyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKKyAgICAnXHUwNDNjJyAgICMgIDB4Q0QgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCisgICAgJ1x1MDQzZCcgICAjICAweENFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAgICdcdTA0M2UnICAgIyAgMHhDRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgTworICAgICdcdTA0M2YnICAgIyAgMHhEMCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUKKyAgICAnXHUwNDRmJyAgICMgIDB4RDEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBCisgICAgJ1x1MDQ0MCcgICAjICAweEQyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFUgorICAgICdcdTA0NDEnICAgIyAgMHhEMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKKyAgICAnXHUwNDQyJyAgICMgIDB4RDQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCisgICAgJ1x1MDQ0MycgICAjICAweEQ1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBVCisgICAgJ1x1MDQzNicgICAjICAweEQ2IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUKKyAgICAnXHUwNDMyJyAgICMgIDB4RDcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCisgICAgJ1x1MDQ0YycgICAjICAweEQ4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTT0ZUIFNJR04KKyAgICAnXHUwNDRiJyAgICMgIDB4RDkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlUKKyAgICAnXHUwNDM3JyAgICMgIDB4REEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCisgICAgJ1x1MDQ0OCcgICAjICAweERCIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSEEKKyAgICAnXHUwNDRkJyAgICMgIDB4REMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEUKKyAgICAnXHUwNDQ5JyAgICMgIDB4REQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQ0hBCisgICAgJ1x1MDQ0NycgICAjICAweERFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUKKyAgICAnXHUwNDRhJyAgICMgIDB4REYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBUkQgU0lHTgorICAgICdcdTA0MmUnICAgIyAgMHhFMCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZVQorICAgICdcdTA0MTAnICAgIyAgMHhFMSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBCisgICAgJ1x1MDQxMScgICAjICAweEUyIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEJFCisgICAgJ1x1MDQyNicgICAjICAweEUzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFRTRQorICAgICdcdTA0MTQnICAgIyAgMHhFNCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBERQorICAgICdcdTA0MTUnICAgIyAgMHhFNSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRQorICAgICdcdTA0MjQnICAgIyAgMHhFNiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFRgorICAgICdcdTA0MTMnICAgIyAgMHhFNyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUKKyAgICAnXHUwNDI1JyAgICMgIDB4RTggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEEKKyAgICAnXHUwNDE4JyAgICMgIDB4RTkgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSQorICAgICdcdTA0MTknICAgIyAgMHhFQSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBJCisgICAgJ1x1MDQxYScgICAjICAweEVCIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBCisgICAgJ1x1MDQxYicgICAjICAweEVDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVMCisgICAgJ1x1MDQxYycgICAjICAweEVEIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVNCisgICAgJ1x1MDQxZCcgICAjICAweEVFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOCisgICAgJ1x1MDQxZScgICAjICAweEVGIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIE8KKyAgICAnXHUwNDFmJyAgICMgIDB4RjAgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUEUKKyAgICAnXHUwNDJmJyAgICMgIDB4RjEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUEKKyAgICAnXHUwNDIwJyAgICMgIDB4RjIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVIKKyAgICAnXHUwNDIxJyAgICMgIDB4RjMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMKKyAgICAnXHUwNDIyJyAgICMgIDB4RjQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEUKKyAgICAnXHUwNDIzJyAgICMgIDB4RjUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVQorICAgICdcdTA0MTYnICAgIyAgMHhGNiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUKKyAgICAnXHUwNDEyJyAgICMgIDB4RjcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVkUKKyAgICAnXHUwNDJjJyAgICMgIDB4RjggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBTSUdOCisgICAgJ1x1MDQyYicgICAjICAweEY5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlFUlUKKyAgICAnXHUwNDE3JyAgICMgIDB4RkEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUKKyAgICAnXHUwNDI4JyAgICMgIDB4RkIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCisgICAgJ1x1MDQyZCcgICAjICAweEZDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEUKKyAgICAnXHUwNDI5JyAgICMgIDB4RkQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hDSEEKKyAgICAnXHUwNDI3JyAgICMgIDB4RkUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFCisgICAgJ1x1MDQyYScgICAjICAweEZGIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBUkQgU0lHTgorKQorCisjIyMgRW5jb2RpbmcgdGFibGUKK2VuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9rejEwNDgucHkgYi9MaWIvZW5jb2RpbmdzL2t6MTA0OC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTJhZWU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2VuY29kaW5ncy9rejEwNDgucHkKQEAgLTAsMCArMSwzMDcgQEAKKyIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMga3oxMDQ4IGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9WRU5ET1JTL01JU0MvS1oxMDQ4LlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KKworIiIiIyIKKworaW1wb3J0IGNvZGVjcworCisjIyMgQ29kZWMgQVBJcworCitjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgorCisgICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCwgZXJyb3JzLCBlbmNvZGluZ190YWJsZSkKKworICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsIGVycm9ycywgZGVjb2RpbmdfdGFibGUpCisKK2NsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKKyAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzLCBlbmNvZGluZ190YWJsZSlbMF0KKworY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgorICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCwgc2VsZi5lcnJvcnMsIGRlY29kaW5nX3RhYmxlKVswXQorCitjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsIGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgorICAgIHBhc3MKKworY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLCBjb2RlY3MuU3RyZWFtUmVhZGVyKToKKyAgICBwYXNzCisKKyMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQorCitkZWYgZ2V0cmVnZW50cnkoKToKKyAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKKyAgICAgICAgbmFtZT0na3oxMDQ4JywKKyAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAorICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCisgICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCisgICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCisgICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCisgICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCisgICAgKQorCisKKyMjIyBEZWNvZGluZyBUYWJsZQorCitkZWNvZGluZ190YWJsZSA9ICgKKyAgICAnXHgwMCcgICAgICAjICAweDAwIC0+IE5VTEwKKyAgICAnXHgwMScgICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKKyAgICAnXHgwMicgICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKKyAgICAnXHgwMycgICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCisgICAgJ1x4MDQnICAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCisgICAgJ1x4MDUnICAgICAgIyAgMHgwNSAtPiBFTlFVSVJZCisgICAgJ1x4MDYnICAgICAgIyAgMHgwNiAtPiBBQ0tOT1dMRURHRQorICAgICdceDA3JyAgICAgICMgIDB4MDcgLT4gQkVMTAorICAgICdceDA4JyAgICAgICMgIDB4MDggLT4gQkFDS1NQQUNFCisgICAgJ1x0JyAgICAgICAgIyAgMHgwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KKyAgICAnXG4nICAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAorICAgICdceDBiJyAgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgorICAgICdceDBjJyAgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECisgICAgJ1xyJyAgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KKyAgICAnXHgwZScgICAgICAjICAweDBFIC0+IFNISUZUIE9VVAorICAgICdceDBmJyAgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KKyAgICAnXHgxMCcgICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKKyAgICAnXHgxMScgICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQorICAgICdceDEyJyAgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCisgICAgJ1x4MTMnICAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQorICAgICdceDE0JyAgICAgICMgIDB4MTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgorICAgICdceDE1JyAgICAgICMgIDB4MTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKKyAgICAnXHgxNicgICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKKyAgICAnXHgxNycgICAgICAjICAweDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKKyAgICAnXHgxOCcgICAgICAjICAweDE4IC0+IENBTkNFTAorICAgICdceDE5JyAgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQorICAgICdceDFhJyAgICAgICMgIDB4MUEgLT4gU1VCU1RJVFVURQorICAgICdceDFiJyAgICAgICMgIDB4MUIgLT4gRVNDQVBFCisgICAgJ1x4MWMnICAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgorICAgICdceDFkJyAgICAgICMgIDB4MUQgLT4gR1JPVVAgU0VQQVJBVE9SCisgICAgJ1x4MWUnICAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCisgICAgJ1x4MWYnICAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgorICAgICcgJyAgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKKyAgICAnIScgICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKKyAgICAnIicgICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCisgICAgJyMnICAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgorICAgICckJyAgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KKyAgICAnJScgICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgorICAgICcmJyAgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECisgICAgIiciICAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCisgICAgJygnICAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCisgICAgJyknICAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUworICAgICcqJyAgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKKyAgICAnKycgICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgorICAgICcsJyAgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKKyAgICAnLScgICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUworICAgICcuJyAgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCisgICAgJy8nICAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCisgICAgJzAnICAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCisgICAgJzEnICAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKKyAgICAnMicgICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTworICAgICczJyAgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKKyAgICAnNCcgICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKKyAgICAnNScgICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKKyAgICAnNicgICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAorICAgICc3JyAgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KKyAgICAnOCcgICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCisgICAgJzknICAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCisgICAgJzonICAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgorICAgICc7JyAgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCisgICAgJzwnICAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgorICAgICc9JyAgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KKyAgICAnPicgICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCisgICAgJz8nICAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCisgICAgJ0AnICAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCisgICAgJ0EnICAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCisgICAgJ0InICAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCisgICAgJ0MnICAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCisgICAgJ0QnICAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECisgICAgJ0UnICAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCisgICAgJ0YnICAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCisgICAgJ0cnICAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCisgICAgJ0gnICAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICisgICAgJ0knICAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCisgICAgJ0onICAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCisgICAgJ0snICAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCisgICAgJ0wnICAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCisgICAgJ00nICAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCisgICAgJ04nICAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCisgICAgJ08nICAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCisgICAgJ1AnICAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCisgICAgJ1EnICAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCisgICAgJ1InICAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCisgICAgJ1MnICAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCisgICAgJ1QnICAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCisgICAgJ1UnICAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCisgICAgJ1YnICAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCisgICAgJ1cnICAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCisgICAgJ1gnICAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCisgICAgJ1knICAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCisgICAgJ1onICAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCisgICAgJ1snICAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCisgICAgJ1xcJyAgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKKyAgICAnXScgICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCisgICAgJ14nICAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAorICAgICdfJyAgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKKyAgICAnYCcgICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAorICAgICdhJyAgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKKyAgICAnYicgICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCisgICAgJ2MnICAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQworICAgICdkJyAgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKKyAgICAnZScgICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCisgICAgJ2YnICAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgorICAgICdnJyAgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKKyAgICAnaCcgICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICisgICAgJ2knICAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQorICAgICdqJyAgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKKyAgICAnaycgICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCisgICAgJ2wnICAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAorICAgICdtJyAgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KKyAgICAnbicgICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCisgICAgJ28nICAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTworICAgICdwJyAgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKKyAgICAncScgICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCisgICAgJ3InICAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgorICAgICdzJyAgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKKyAgICAndCcgICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCisgICAgJ3UnICAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQorICAgICd2JyAgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKKyAgICAndycgICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCisgICAgJ3gnICAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAorICAgICd5JyAgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKKyAgICAneicgICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCisgICAgJ3snICAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKKyAgICAnfCcgICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKKyAgICAnfScgICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKKyAgICAnficgICAgICAgICAjICAweDdFIC0+IFRJTERFCisgICAgJ1x4N2YnICAgICAgIyAgMHg3RiAtPiBERUxFVEUKKyAgICAnXHUwNDAyJyAgICAjICAweDgwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIERKRQorICAgICdcdTA0MDMnICAgICMgIDB4ODEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0pFCisgICAgJ1x1MjAxYScgICAgIyAgMHg4MiAtPiBTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUwNDUzJyAgICAjICAweDgzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBHSkUKKyAgICAnXHUyMDFlJyAgICAjICAweDg0IC0+IERPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMjYnICAgICMgIDB4ODUgLT4gSE9SSVpPTlRBTCBFTExJUFNJUworICAgICdcdTIwMjAnICAgICMgIDB4ODYgLT4gREFHR0VSCisgICAgJ1x1MjAyMScgICAgIyAgMHg4NyAtPiBET1VCTEUgREFHR0VSCisgICAgJ1x1MjBhYycgICAgIyAgMHg4OCAtPiBFVVJPIFNJR04KKyAgICAnXHUyMDMwJyAgICAjICAweDg5IC0+IFBFUiBNSUxMRSBTSUdOCisgICAgJ1x1MDQwOScgICAgIyAgMHg4QSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBMSkUKKyAgICAnXHUyMDM5JyAgICAjICAweDhCIC0+IFNJTkdMRSBMRUZULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MDQwYScgICAgIyAgMHg4QyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBOSkUKKyAgICAnXHUwNDlhJyAgICAjICAweDhEIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRiYScgICAgIyAgMHg4RSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSEhBCisgICAgJ1x1MDQwZicgICAgIyAgMHg4RiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBEWkhFCisgICAgJ1x1MDQ1MicgICAgIyAgMHg5MCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgREpFCisgICAgJ1x1MjAxOCcgICAgIyAgMHg5MSAtPiBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMTknICAgICMgIDB4OTIgLT4gUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxYycgICAgIyAgMHg5MyAtPiBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMWQnICAgICMgIDB4OTQgLT4gUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAyMicgICAgIyAgMHg5NSAtPiBCVUxMRVQKKyAgICAnXHUyMDEzJyAgICAjICAweDk2IC0+IEVOIERBU0gKKyAgICAnXHUyMDE0JyAgICAjICAweDk3IC0+IEVNIERBU0gKKyAgICAnXHVmZmZlJyAgICAjICAweDk4IC0+IFVOREVGSU5FRAorICAgICdcdTIxMjInICAgICMgIDB4OTkgLT4gVFJBREUgTUFSSyBTSUdOCisgICAgJ1x1MDQ1OScgICAgIyAgMHg5QSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgTEpFCisgICAgJ1x1MjAzYScgICAgIyAgMHg5QiAtPiBTSU5HTEUgUklHSFQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUwNDVhJyAgICAjICAweDlDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBOSkUKKyAgICAnXHUwNDliJyAgICAjICAweDlEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YmInICAgICMgIDB4OUUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNISEEKKyAgICAnXHUwNDVmJyAgICAjICAweDlGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBEWkhFCisgICAgJ1x4YTAnICAgICAgIyAgMHhBMCAtPiBOTy1CUkVBSyBTUEFDRQorICAgICdcdTA0YjAnICAgICMgIDB4QTEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRQorICAgICdcdTA0YjEnICAgICMgIDB4QTIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNUUkFJR0hUIFUgV0lUSCBTVFJPS0UKKyAgICAnXHUwNGQ4JyAgICAjICAweEEzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNDSFdBCisgICAgJ1x4YTQnICAgICAgIyAgMHhBNCAtPiBDVVJSRU5DWSBTSUdOCisgICAgJ1x1MDRlOCcgICAgIyAgMHhBNSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVJSRUQgTworICAgICdceGE2JyAgICAgICMgIDB4QTYgLT4gQlJPS0VOIEJBUgorICAgICdceGE3JyAgICAgICMgIDB4QTcgLT4gU0VDVElPTiBTSUdOCisgICAgJ1x1MDQwMScgICAgIyAgMHhBOCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJTworICAgICdceGE5JyAgICAgICMgIDB4QTkgLT4gQ09QWVJJR0hUIFNJR04KKyAgICAnXHUwNDkyJyAgICAjICAweEFBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRQorICAgICdceGFiJyAgICAgICMgIDB4QUIgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHhhYycgICAgICAjICAweEFDIC0+IE5PVCBTSUdOCisgICAgJ1x4YWQnICAgICAgIyAgMHhBRCAtPiBTT0ZUIEhZUEhFTgorICAgICdceGFlJyAgICAgICMgIDB4QUUgLT4gUkVHSVNURVJFRCBTSUdOCisgICAgJ1x1MDRhZScgICAgIyAgMHhBRiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTVFJBSUdIVCBVCisgICAgJ1x4YjAnICAgICAgIyAgMHhCMCAtPiBERUdSRUUgU0lHTgorICAgICdceGIxJyAgICAgICMgIDB4QjEgLT4gUExVUy1NSU5VUyBTSUdOCisgICAgJ1x1MDQwNicgICAgIyAgMHhCMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKKyAgICAnXHUwNDU2JyAgICAjICAweEIzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKKyAgICAnXHUwNGU5JyAgICAjICAweEI0IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCQVJSRUQgTworICAgICdceGI1JyAgICAgICMgIDB4QjUgLT4gTUlDUk8gU0lHTgorICAgICdceGI2JyAgICAgICMgIDB4QjYgLT4gUElMQ1JPVyBTSUdOCisgICAgJ1x4YjcnICAgICAgIyAgMHhCNyAtPiBNSURETEUgRE9UCisgICAgJ1x1MDQ1MScgICAgIyAgMHhCOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSU8KKyAgICAnXHUyMTE2JyAgICAjICAweEI5IC0+IE5VTUVSTyBTSUdOCisgICAgJ1x1MDQ5MycgICAgIyAgMHhCQSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFIFdJVEggU1RST0tFCisgICAgJ1x4YmInICAgICAgIyAgMHhCQiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUwNGQ5JyAgICAjICAweEJDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTQ0hXQQorICAgICdcdTA0YTInICAgICMgIDB4QkQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGEzJyAgICAjICAweEJFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTiBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YWYnICAgICMgIDB4QkYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNUUkFJR0hUIFUKKyAgICAnXHUwNDEwJyAgICAjICAweEMwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKKyAgICAnXHUwNDExJyAgICAjICAweEMxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEJFCisgICAgJ1x1MDQxMicgICAgIyAgMHhDMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBWRQorICAgICdcdTA0MTMnICAgICMgIDB4QzMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCisgICAgJ1x1MDQxNCcgICAgIyAgMHhDNCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBERQorICAgICdcdTA0MTUnICAgICMgIDB4QzUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUKKyAgICAnXHUwNDE2JyAgICAjICAweEM2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQorICAgICdcdTA0MTcnICAgICMgIDB4QzcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUKKyAgICAnXHUwNDE4JyAgICAjICAweEM4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEkKKyAgICAnXHUwNDE5JyAgICAjICAweEM5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKKyAgICAnXHUwNDFhJyAgICAjICAweENBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBCisgICAgJ1x1MDQxYicgICAgIyAgMHhDQiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTAorICAgICdcdTA0MWMnICAgICMgIDB4Q0MgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KKyAgICAnXHUwNDFkJyAgICAjICAweENEIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOCisgICAgJ1x1MDQxZScgICAgIyAgMHhDRSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPCisgICAgJ1x1MDQxZicgICAgIyAgMHhDRiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQorICAgICdcdTA0MjAnICAgICMgIDB4RDAgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVIKKyAgICAnXHUwNDIxJyAgICAjICAweEQxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVTCisgICAgJ1x1MDQyMicgICAgIyAgMHhEMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURQorICAgICdcdTA0MjMnICAgICMgIDB4RDMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVQorICAgICdcdTA0MjQnICAgICMgIDB4RDQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUYKKyAgICAnXHUwNDI1JyAgICAjICAweEQ1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCisgICAgJ1x1MDQyNicgICAgIyAgMHhENiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0UKKyAgICAnXHUwNDI3JyAgICAjICAweEQ3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRQorICAgICdcdTA0MjgnICAgICMgIDB4RDggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCisgICAgJ1x1MDQyOScgICAgIyAgMHhEOSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSENIQQorICAgICdcdTA0MmEnICAgICMgIDB4REEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEFSRCBTSUdOCisgICAgJ1x1MDQyYicgICAgIyAgMHhEQiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCisgICAgJ1x1MDQyYycgICAgIyAgMHhEQyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTT0ZUIFNJR04KKyAgICAnXHUwNDJkJyAgICAjICAweEREIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEUKKyAgICAnXHUwNDJlJyAgICAjICAweERFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlVCisgICAgJ1x1MDQyZicgICAgIyAgMHhERiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZQQorICAgICdcdTA0MzAnICAgICMgIDB4RTAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAgICAnXHUwNDMxJyAgICAjICAweEUxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCRQorICAgICdcdTA0MzInICAgICMgIDB4RTIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCisgICAgJ1x1MDQzMycgICAgIyAgMHhFMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFCisgICAgJ1x1MDQzNCcgICAgIyAgMHhFNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKKyAgICAnXHUwNDM1JyAgICAjICAweEU1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJRQorICAgICdcdTA0MzYnICAgICMgIDB4RTYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRQorICAgICdcdTA0MzcnICAgICMgIDB4RTcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCisgICAgJ1x1MDQzOCcgICAgIyAgMHhFOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSQorICAgICdcdTA0MzknICAgICMgIDB4RTkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKKyAgICAnXHUwNDNhJyAgICAjICAweEVBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQQorICAgICdcdTA0M2InICAgICMgIDB4RUIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMCisgICAgJ1x1MDQzYycgICAgIyAgMHhFQyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KKyAgICAnXHUwNDNkJyAgICAjICAweEVEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAgICdcdTA0M2UnICAgICMgIDB4RUUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KKyAgICAnXHUwNDNmJyAgICAjICAweEVGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBQRQorICAgICdcdTA0NDAnICAgICMgIDB4RjAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCisgICAgJ1x1MDQ0MScgICAgIyAgMHhGMSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKKyAgICAnXHUwNDQyJyAgICAjICAweEYyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBURQorICAgICdcdTA0NDMnICAgICMgIDB4RjMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKKyAgICAnXHUwNDQ0JyAgICAjICAweEY0IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFRgorICAgICdcdTA0NDUnICAgICMgIDB4RjUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBCisgICAgJ1x1MDQ0NicgICAgIyAgMHhGNiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNFCisgICAgJ1x1MDQ0NycgICAgIyAgMHhGNyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFCisgICAgJ1x1MDQ0OCcgICAgIyAgMHhGOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hBCisgICAgJ1x1MDQ0OScgICAgIyAgMHhGOSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hDSEEKKyAgICAnXHUwNDRhJyAgICAjICAweEZBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQVJEIFNJR04KKyAgICAnXHUwNDRiJyAgICAjICAweEZCIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZRVJVCisgICAgJ1x1MDQ0YycgICAgIyAgMHhGQyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU09GVCBTSUdOCisgICAgJ1x1MDQ0ZCcgICAgIyAgMHhGRCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRQorICAgICdcdTA0NGUnICAgICMgIDB4RkUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlVCisgICAgJ1x1MDQ0ZicgICAgIyAgMHhGRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUEKKykKKworIyMjIEVuY29kaW5nIHRhYmxlCitlbmNvZGluZ190YWJsZSA9IGNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpkaWZmIC0tZ2l0IGEvTGliL2VudW0ucHkgYi9MaWIvZW51bS5weQppbmRleCAzY2QzZGY4Li5jMjhmMzQ1IDEwMDY0NAotLS0gYS9MaWIvZW51bS5weQorKysgYi9MaWIvZW51bS5weQpAQCAtMTA2LDEyICsxMDYsMjAgQEAKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgZW51bSBtZW1iZXIgbmFtZTogezB9Jy5mb3JtYXQoCiAgICAgICAgICAgICAgICAgJywnLmpvaW4oaW52YWxpZF9uYW1lcykpKQogCisgICAgICAgICMgY3JlYXRlIGEgZGVmYXVsdCBkb2NzdHJpbmcgaWYgb25lIGhhcyBub3QgYmVlbiBwcm92aWRlZAorICAgICAgICBpZiAnX19kb2NfXycgbm90IGluIGNsYXNzZGljdDoKKyAgICAgICAgICAgIGNsYXNzZGljdFsnX19kb2NfXyddID0gJ0FuIGVudW1lcmF0aW9uLicKKwogICAgICAgICAjIGNyZWF0ZSBvdXIgbmV3IEVudW0gdHlwZQogICAgICAgICBlbnVtX2NsYXNzID0gc3VwZXIoKS5fX25ld19fKG1ldGFjbHMsIGNscywgYmFzZXMsIGNsYXNzZGljdCkKICAgICAgICAgZW51bV9jbGFzcy5fbWVtYmVyX25hbWVzXyA9IFtdICAgICAgICAgICAgICAgIyBuYW1lcyBpbiBkZWZpbml0aW9uIG9yZGVyCiAgICAgICAgIGVudW1fY2xhc3MuX21lbWJlcl9tYXBfID0gT3JkZXJlZERpY3QoKSAgICAgICMgbmFtZS0+dmFsdWUgbWFwCiAgICAgICAgIGVudW1fY2xhc3MuX21lbWJlcl90eXBlXyA9IG1lbWJlcl90eXBlCiAKKyAgICAgICAgIyBzYXZlIGF0dHJpYnV0ZXMgZnJvbSBzdXBlciBjbGFzc2VzIHNvIHdlIGtub3cgaWYgd2UgY2FuIHRha2UKKyAgICAgICAgIyB0aGUgc2hvcnRjdXQgb2Ygc3RvcmluZyBtZW1iZXJzIGluIHRoZSBjbGFzcyBkaWN0CisgICAgICAgIGJhc2VfYXR0cmlidXRlcyA9IHthIGZvciBiIGluIGJhc2VzIGZvciBhIGluIGIuX19kaWN0X199CisKICAgICAgICAgIyBSZXZlcnNlIHZhbHVlLT5uYW1lIG1hcCBmb3IgaGFzaGFibGUgdmFsdWVzLgogICAgICAgICBlbnVtX2NsYXNzLl92YWx1ZTJtZW1iZXJfbWFwXyA9IHt9CiAKQEAgLTE2NSw2ICsxNzMsMTEgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBBbGlhc2VzIGRvbid0IGFwcGVhciBpbiBtZW1iZXIgbmFtZXMgKG9ubHkgaW4gX19tZW1iZXJzX18pLgogICAgICAgICAgICAgICAgIGVudW1fY2xhc3MuX21lbWJlcl9uYW1lc18uYXBwZW5kKG1lbWJlcl9uYW1lKQorICAgICAgICAgICAgIyBwZXJmb3JtYW5jZSBib29zdCBmb3IgYW55IG1lbWJlciB0aGF0IHdvdWxkIG5vdCBzaGFkb3cKKyAgICAgICAgICAgICMgYSBEeW5hbWljQ2xhc3NBdHRyaWJ1dGUKKyAgICAgICAgICAgIGlmIG1lbWJlcl9uYW1lIG5vdCBpbiBiYXNlX2F0dHJpYnV0ZXM6CisgICAgICAgICAgICAgICAgc2V0YXR0cihlbnVtX2NsYXNzLCBtZW1iZXJfbmFtZSwgZW51bV9tZW1iZXIpCisgICAgICAgICAgICAjIG5vdyBhZGQgdG8gX21lbWJlcl9tYXBfCiAgICAgICAgICAgICBlbnVtX2NsYXNzLl9tZW1iZXJfbWFwX1ttZW1iZXJfbmFtZV0gPSBlbnVtX21lbWJlcgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICMgVGhpcyBtYXkgZmFpbCBpZiB2YWx1ZSBpcyBub3QgaGFzaGFibGUuIFdlIGNhbid0IGFkZCB0aGUgdmFsdWUKQEAgLTE5Myw3ICsyMDYsNyBAQAogICAgICAgICAgICAgZW51bV9jbGFzcy5fX25ld19fID0gRW51bS5fX25ld19fCiAgICAgICAgIHJldHVybiBlbnVtX2NsYXNzCiAKLSAgICBkZWYgX19jYWxsX18oY2xzLCB2YWx1ZSwgbmFtZXM9Tm9uZSwgKiwgbW9kdWxlPU5vbmUsIHF1YWxuYW1lPU5vbmUsIHR5cGU9Tm9uZSk6CisgICAgZGVmIF9fY2FsbF9fKGNscywgdmFsdWUsIG5hbWVzPU5vbmUsICosIG1vZHVsZT1Ob25lLCBxdWFsbmFtZT1Ob25lLCB0eXBlPU5vbmUsIHN0YXJ0PTEpOgogICAgICAgICAiIiJFaXRoZXIgcmV0dXJucyBhbiBleGlzdGluZyBtZW1iZXIsIG9yIGNyZWF0ZXMgYSBuZXcgZW51bSBjbGFzcy4KIAogICAgICAgICBUaGlzIG1ldGhvZCBpcyB1c2VkIGJvdGggd2hlbiBhbiBlbnVtIGNsYXNzIGlzIGdpdmVuIGEgdmFsdWUgdG8gbWF0Y2gKQEAgLTIwNSw3ICsyMTgsNyBAQAogICAgICAgICBgdmFsdWVgIHdpbGwgYmUgdGhlIG5hbWUgb2YgdGhlIG5ldyBjbGFzcy4KIAogICAgICAgICBgbmFtZXNgIHNob3VsZCBiZSBlaXRoZXIgYSBzdHJpbmcgb2Ygd2hpdGUtc3BhY2UvY29tbWEgZGVsaW1pdGVkIG5hbWVzCi0gICAgICAgICh2YWx1ZXMgd2lsbCBzdGFydCBhdCAxKSwgb3IgYW4gaXRlcmF0b3IvbWFwcGluZyBvZiBuYW1lLCB2YWx1ZSBwYWlycy4KKyAgICAgICAgKHZhbHVlcyB3aWxsIHN0YXJ0IGF0IGBzdGFydGApLCBvciBhbiBpdGVyYXRvci9tYXBwaW5nIG9mIG5hbWUsIHZhbHVlIHBhaXJzLgogCiAgICAgICAgIGBtb2R1bGVgIHNob3VsZCBiZSBzZXQgdG8gdGhlIG1vZHVsZSB0aGlzIGNsYXNzIGlzIGJlaW5nIGNyZWF0ZWQgaW47CiAgICAgICAgIGlmIGl0IGlzIG5vdCBzZXQsIGFuIGF0dGVtcHQgdG8gZmluZCB0aGF0IG1vZHVsZSB3aWxsIGJlIG1hZGUsIGJ1dCBpZgpAQCAtMjIxLDcgKzIzNCw3IEBACiAgICAgICAgIGlmIG5hbWVzIGlzIE5vbmU6ICAjIHNpbXBsZSB2YWx1ZSBsb29rdXAKICAgICAgICAgICAgIHJldHVybiBjbHMuX19uZXdfXyhjbHMsIHZhbHVlKQogICAgICAgICAjIG90aGVyd2lzZSwgZnVuY3Rpb25hbCBBUEk6IHdlJ3JlIGNyZWF0aW5nIGEgbmV3IEVudW0gdHlwZQotICAgICAgICByZXR1cm4gY2xzLl9jcmVhdGVfKHZhbHVlLCBuYW1lcywgbW9kdWxlPW1vZHVsZSwgcXVhbG5hbWU9cXVhbG5hbWUsIHR5cGU9dHlwZSkKKyAgICAgICAgcmV0dXJuIGNscy5fY3JlYXRlXyh2YWx1ZSwgbmFtZXMsIG1vZHVsZT1tb2R1bGUsIHF1YWxuYW1lPXF1YWxuYW1lLCB0eXBlPXR5cGUsIHN0YXJ0PXN0YXJ0KQogCiAgICAgZGVmIF9fY29udGFpbnNfXyhjbHMsIG1lbWJlcik6CiAgICAgICAgIHJldHVybiBpc2luc3RhbmNlKG1lbWJlciwgY2xzKSBhbmQgbWVtYmVyLl9uYW1lXyBpbiBjbHMuX21lbWJlcl9tYXBfCkBAIC0yOTIsMTYgKzMwNSwxNiBAQAogICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoJ0Nhbm5vdCByZWFzc2lnbiBtZW1iZXJzLicpCiAgICAgICAgIHN1cGVyKCkuX19zZXRhdHRyX18obmFtZSwgdmFsdWUpCiAKLSAgICBkZWYgX2NyZWF0ZV8oY2xzLCBjbGFzc19uYW1lLCBuYW1lcz1Ob25lLCAqLCBtb2R1bGU9Tm9uZSwgcXVhbG5hbWU9Tm9uZSwgdHlwZT1Ob25lKToKKyAgICBkZWYgX2NyZWF0ZV8oY2xzLCBjbGFzc19uYW1lLCBuYW1lcz1Ob25lLCAqLCBtb2R1bGU9Tm9uZSwgcXVhbG5hbWU9Tm9uZSwgdHlwZT1Ob25lLCBzdGFydD0xKToKICAgICAgICAgIiIiQ29udmVuaWVuY2UgbWV0aG9kIHRvIGNyZWF0ZSBhIG5ldyBFbnVtIGNsYXNzLgogCiAgICAgICAgIGBuYW1lc2AgY2FuIGJlOgogCiAgICAgICAgICogQSBzdHJpbmcgY29udGFpbmluZyBtZW1iZXIgbmFtZXMsIHNlcGFyYXRlZCBlaXRoZXIgd2l0aCBzcGFjZXMgb3IKLSAgICAgICAgICBjb21tYXMuICBWYWx1ZXMgYXJlIGF1dG8tbnVtYmVyZWQgZnJvbSAxLgotICAgICAgICAqIEFuIGl0ZXJhYmxlIG9mIG1lbWJlciBuYW1lcy4gIFZhbHVlcyBhcmUgYXV0by1udW1iZXJlZCBmcm9tIDEuCisgICAgICAgICAgY29tbWFzLiAgVmFsdWVzIGFyZSBpbmNyZW1lbnRlZCBieSAxIGZyb20gYHN0YXJ0YC4KKyAgICAgICAgKiBBbiBpdGVyYWJsZSBvZiBtZW1iZXIgbmFtZXMuICBWYWx1ZXMgYXJlIGluY3JlbWVudGVkIGJ5IDEgZnJvbSBgc3RhcnRgLgogICAgICAgICAqIEFuIGl0ZXJhYmxlIG9mIChtZW1iZXIgbmFtZSwgdmFsdWUpIHBhaXJzLgotICAgICAgICAqIEEgbWFwcGluZyBvZiBtZW1iZXIgbmFtZSAtPiB2YWx1ZS4KKyAgICAgICAgKiBBIG1hcHBpbmcgb2YgbWVtYmVyIG5hbWUgLT4gdmFsdWUgcGFpcnMuCiAKICAgICAgICAgIiIiCiAgICAgICAgIG1ldGFjbHMgPSBjbHMuX19jbGFzc19fCkBAIC0zMTIsNyArMzI1LDcgQEAKICAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lcywgc3RyKToKICAgICAgICAgICAgIG5hbWVzID0gbmFtZXMucmVwbGFjZSgnLCcsICcgJykuc3BsaXQoKQogICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWVzLCAodHVwbGUsIGxpc3QpKSBhbmQgaXNpbnN0YW5jZShuYW1lc1swXSwgc3RyKToKLSAgICAgICAgICAgIG5hbWVzID0gWyhlLCBpKSBmb3IgKGksIGUpIGluIGVudW1lcmF0ZShuYW1lcywgMSldCisgICAgICAgICAgICBuYW1lcyA9IFsoZSwgaSkgZm9yIChpLCBlKSBpbiBlbnVtZXJhdGUobmFtZXMsIHN0YXJ0KV0KIAogICAgICAgICAjIEhlcmUsIG5hbWVzIGlzIGVpdGhlciBhbiBpdGVyYWJsZSBvZiAobmFtZSwgdmFsdWUpIG9yIGEgbWFwcGluZy4KICAgICAgICAgZm9yIGl0ZW0gaW4gbmFtZXM6CkBAIC00NjgsMTAgKzQ4MSw5IEBACiAgICAgICAgICAgICAgICAgbQogICAgICAgICAgICAgICAgIGZvciBjbHMgaW4gc2VsZi5fX2NsYXNzX18ubXJvKCkKICAgICAgICAgICAgICAgICBmb3IgbSBpbiBjbHMuX19kaWN0X18KLSAgICAgICAgICAgICAgICBpZiBtWzBdICE9ICdfJworICAgICAgICAgICAgICAgIGlmIG1bMF0gIT0gJ18nIGFuZCBtIG5vdCBpbiBzZWxmLl9tZW1iZXJfbWFwXwogICAgICAgICAgICAgICAgIF0KLSAgICAgICAgcmV0dXJuIChbJ19fY2xhc3NfXycsICdfX2RvY19fJywgJ19fbW9kdWxlX18nLCAnbmFtZScsICd2YWx1ZSddICsKLSAgICAgICAgICAgICAgICBhZGRlZF9iZWhhdmlvcikKKyAgICAgICAgcmV0dXJuIChbJ19fY2xhc3NfXycsICdfX2RvY19fJywgJ19fbW9kdWxlX18nXSArIGFkZGVkX2JlaGF2aW9yKQogCiAgICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpOgogICAgICAgICAjIG1peGVkLWluIEVudW1zIHNob3VsZCB1c2UgdGhlIG1peGVkLWluIHR5cGUncyBfX2Zvcm1hdF9fLCBvdGhlcndpc2UKZGlmZiAtLWdpdCBhL0xpYi9maWxlaW5wdXQucHkgYi9MaWIvZmlsZWlucHV0LnB5CmluZGV4IDgxYTc1NDUuLjAyMWUzOWYgMTAwNjQ0Ci0tLSBhL0xpYi9maWxlaW5wdXQucHkKKysrIGIvTGliL2ZpbGVpbnB1dC5weQpAQCAtMjc3LDI0ICsyNzcsMjQgQEAKIAogICAgIGRlZiBuZXh0ZmlsZShzZWxmKToKICAgICAgICAgc2F2ZXN0ZG91dCA9IHNlbGYuX3NhdmVzdGRvdXQKLSAgICAgICAgc2VsZi5fc2F2ZXN0ZG91dCA9IDAKKyAgICAgICAgc2VsZi5fc2F2ZXN0ZG91dCA9IE5vbmUKICAgICAgICAgaWYgc2F2ZXN0ZG91dDoKICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlc3Rkb3V0CiAKICAgICAgICAgb3V0cHV0ID0gc2VsZi5fb3V0cHV0Ci0gICAgICAgIHNlbGYuX291dHB1dCA9IDAKKyAgICAgICAgc2VsZi5fb3V0cHV0ID0gTm9uZQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBvdXRwdXQ6CiAgICAgICAgICAgICAgICAgb3V0cHV0LmNsb3NlKCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGZpbGUgPSBzZWxmLl9maWxlCi0gICAgICAgICAgICBzZWxmLl9maWxlID0gMAorICAgICAgICAgICAgc2VsZi5fZmlsZSA9IE5vbmUKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBpZiBmaWxlIGFuZCBub3Qgc2VsZi5faXNzdGRpbjoKICAgICAgICAgICAgICAgICAgICAgZmlsZS5jbG9zZSgpCiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIGJhY2t1cGZpbGVuYW1lID0gc2VsZi5fYmFja3VwZmlsZW5hbWUKLSAgICAgICAgICAgICAgICBzZWxmLl9iYWNrdXBmaWxlbmFtZSA9IDAKKyAgICAgICAgICAgICAgICBzZWxmLl9iYWNrdXBmaWxlbmFtZSA9IE5vbmUKICAgICAgICAgICAgICAgICBpZiBiYWNrdXBmaWxlbmFtZSBhbmQgbm90IHNlbGYuX2JhY2t1cDoKICAgICAgICAgICAgICAgICAgICAgdHJ5OiBvcy51bmxpbmsoYmFja3VwZmlsZW5hbWUpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOiBwYXNzCkBAIC0zMjgsNyArMzI4LDcgQEAKICAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGVuYW1lID09ICctJzoKICAgICAgICAgICAgICAgICBzZWxmLl9maWxlbmFtZSA9ICc8c3RkaW4+JwogICAgICAgICAgICAgICAgIGlmICdiJyBpbiBzZWxmLl9tb2RlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlID0gc3lzLnN0ZGluLmJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlID0gZ2V0YXR0cihzeXMuc3RkaW4sICdidWZmZXInLCBzeXMuc3RkaW4pCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZSA9IHN5cy5zdGRpbgogICAgICAgICAgICAgICAgIHNlbGYuX2lzc3RkaW4gPSBUcnVlCmRpZmYgLS1naXQgYS9MaWIvZm9ybWF0dGVyLnB5IGIvTGliL2Zvcm1hdHRlci5weQppbmRleCA5MzM4MjYxLi5lMjM5NGRlIDEwMDY0NAotLS0gYS9MaWIvZm9ybWF0dGVyLnB5CisrKyBiL0xpYi9mb3JtYXR0ZXIucHkKQEAgLTIwLDggKzIwLDggQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IHdhcm5pbmdzCi13YXJuaW5ncy53YXJuKCd0aGUgZm9ybWF0dGVyIG1vZHVsZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gJwotICAgICAgICAgICAgICAnUHl0aG9uIDMuNicsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCit3YXJuaW5ncy53YXJuKCd0aGUgZm9ybWF0dGVyIG1vZHVsZSBpcyBkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICBzdGFja2xldmVsPTIpCiAKIAogQVNfSVMgPSBOb25lCmRpZmYgLS1naXQgYS9MaWIvZnJhY3Rpb25zLnB5IGIvTGliL2ZyYWN0aW9ucy5weQppbmRleCA3OWU4M2ZmLi42MGIwNzI4IDEwMDY0NAotLS0gYS9MaWIvZnJhY3Rpb25zLnB5CisrKyBiL0xpYi9mcmFjdGlvbnMucHkKQEAgLTIwLDYgKzIwLDE3IEBACiAgICAgVW5sZXNzIGI9PTAsIHRoZSByZXN1bHQgd2lsbCBoYXZlIHRoZSBzYW1lIHNpZ24gYXMgYiAoc28gdGhhdCB3aGVuCiAgICAgYiBpcyBkaXZpZGVkIGJ5IGl0LCB0aGUgcmVzdWx0IGNvbWVzIG91dCBwb3NpdGl2ZSkuCiAgICAgIiIiCisgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgd2FybmluZ3Mud2FybignZnJhY3Rpb25zLmdjZCgpIGlzIGRlcHJlY2F0ZWQuIFVzZSBtYXRoLmdjZCgpIGluc3RlYWQuJywKKyAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICBpZiB0eXBlKGEpIGlzIGludCBpcyB0eXBlKGIpOgorICAgICAgICBpZiAoYiBvciBhKSA8IDA6CisgICAgICAgICAgICByZXR1cm4gLW1hdGguZ2NkKGEsIGIpCisgICAgICAgIHJldHVybiBtYXRoLmdjZChhLCBiKQorICAgIHJldHVybiBfZ2NkKGEsIGIpCisKK2RlZiBfZ2NkKGEsIGIpOgorICAgICMgU3VwcG9ydHMgbm9uLWludGVnZXJzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgogICAgIHdoaWxlIGI6CiAgICAgICAgIGEsIGIgPSBiLCBhJWIKICAgICByZXR1cm4gYQpAQCAtNzAsNyArODEsNyBAQAogICAgIF9fc2xvdHNfXyA9ICgnX251bWVyYXRvcicsICdfZGVub21pbmF0b3InKQogCiAgICAgIyBXZSdyZSBpbW11dGFibGUsIHNvIHVzZSBfX25ld19fIG5vdCBfX2luaXRfXwotICAgIGRlZiBfX25ld19fKGNscywgbnVtZXJhdG9yPTAsIGRlbm9taW5hdG9yPU5vbmUpOgorICAgIGRlZiBfX25ld19fKGNscywgbnVtZXJhdG9yPTAsIGRlbm9taW5hdG9yPU5vbmUsIF9ub3JtYWxpemU9VHJ1ZSk6CiAgICAgICAgICIiIkNvbnN0cnVjdHMgYSBSYXRpb25hbC4KIAogICAgICAgICBUYWtlcyBhIHN0cmluZyBsaWtlICczLzInIG9yICcxLjUnLCBhbm90aGVyIFJhdGlvbmFsIGluc3RhbmNlLCBhCkBAIC0xMDQsNyArMTE1LDEyIEBACiAgICAgICAgIHNlbGYgPSBzdXBlcihGcmFjdGlvbiwgY2xzKS5fX25ld19fKGNscykKIAogICAgICAgICBpZiBkZW5vbWluYXRvciBpcyBOb25lOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShudW1lcmF0b3IsIG51bWJlcnMuUmF0aW9uYWwpOgorICAgICAgICAgICAgaWYgdHlwZShudW1lcmF0b3IpIGlzIGludDoKKyAgICAgICAgICAgICAgICBzZWxmLl9udW1lcmF0b3IgPSBudW1lcmF0b3IKKyAgICAgICAgICAgICAgICBzZWxmLl9kZW5vbWluYXRvciA9IDEKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UobnVtZXJhdG9yLCBudW1iZXJzLlJhdGlvbmFsKToKICAgICAgICAgICAgICAgICBzZWxmLl9udW1lcmF0b3IgPSBudW1lcmF0b3IubnVtZXJhdG9yCiAgICAgICAgICAgICAgICAgc2VsZi5fZGVub21pbmF0b3IgPSBudW1lcmF0b3IuZGVub21pbmF0b3IKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgpAQCAtMTUzLDYgKzE2OSw5IEBACiAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJhcmd1bWVudCBzaG91bGQgYmUgYSBzdHJpbmcgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3IgYSBSYXRpb25hbCBpbnN0YW5jZSIpCiAKKyAgICAgICAgZWxpZiB0eXBlKG51bWVyYXRvcikgaXMgaW50IGlzIHR5cGUoZGVub21pbmF0b3IpOgorICAgICAgICAgICAgcGFzcyAjICp2ZXJ5KiBub3JtYWwgY2FzZQorCiAgICAgICAgIGVsaWYgKGlzaW5zdGFuY2UobnVtZXJhdG9yLCBudW1iZXJzLlJhdGlvbmFsKSBhbmQKICAgICAgICAgICAgIGlzaW5zdGFuY2UoZGVub21pbmF0b3IsIG51bWJlcnMuUmF0aW9uYWwpKToKICAgICAgICAgICAgIG51bWVyYXRvciwgZGVub21pbmF0b3IgPSAoCkBAIC0xNjUsOSArMTg0LDE4IEBACiAKICAgICAgICAgaWYgZGVub21pbmF0b3IgPT0gMDoKICAgICAgICAgICAgIHJhaXNlIFplcm9EaXZpc2lvbkVycm9yKCdGcmFjdGlvbiglcywgMCknICUgbnVtZXJhdG9yKQotICAgICAgICBnID0gZ2NkKG51bWVyYXRvciwgZGVub21pbmF0b3IpCi0gICAgICAgIHNlbGYuX251bWVyYXRvciA9IG51bWVyYXRvciAvLyBnCi0gICAgICAgIHNlbGYuX2Rlbm9taW5hdG9yID0gZGVub21pbmF0b3IgLy8gZworICAgICAgICBpZiBfbm9ybWFsaXplOgorICAgICAgICAgICAgaWYgdHlwZShudW1lcmF0b3IpIGlzIGludCBpcyB0eXBlKGRlbm9taW5hdG9yKToKKyAgICAgICAgICAgICAgICAjICp2ZXJ5KiBub3JtYWwgY2FzZQorICAgICAgICAgICAgICAgIGcgPSBtYXRoLmdjZChudW1lcmF0b3IsIGRlbm9taW5hdG9yKQorICAgICAgICAgICAgICAgIGlmIGRlbm9taW5hdG9yIDwgMDoKKyAgICAgICAgICAgICAgICAgICAgZyA9IC1nCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGcgPSBfZ2NkKG51bWVyYXRvciwgZGVub21pbmF0b3IpCisgICAgICAgICAgICBudW1lcmF0b3IgLy89IGcKKyAgICAgICAgICAgIGRlbm9taW5hdG9yIC8vPSBnCisgICAgICAgIHNlbGYuX251bWVyYXRvciA9IG51bWVyYXRvcgorICAgICAgICBzZWxmLl9kZW5vbWluYXRvciA9IGRlbm9taW5hdG9yCiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICBAY2xhc3NtZXRob2QKQEAgLTI3Nyw3ICszMDUsOCBAQAogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICAiIiJyZXByKHNlbGYpIiIiCi0gICAgICAgIHJldHVybiAoJ0ZyYWN0aW9uKCVzLCAlcyknICUgKHNlbGYuX251bWVyYXRvciwgc2VsZi5fZGVub21pbmF0b3IpKQorICAgICAgICByZXR1cm4gJyVzKCVzLCAlcyknICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX251bWVyYXRvciwgc2VsZi5fZGVub21pbmF0b3IpCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgIiIic3RyKHNlbGYpIiIiCkBAIC0zOTUsMTcgKzQyNCwxNyBAQAogCiAgICAgZGVmIF9hZGQoYSwgYik6CiAgICAgICAgICIiImEgKyBiIiIiCi0gICAgICAgIHJldHVybiBGcmFjdGlvbihhLm51bWVyYXRvciAqIGIuZGVub21pbmF0b3IgKwotICAgICAgICAgICAgICAgICAgICAgICAgYi5udW1lcmF0b3IgKiBhLmRlbm9taW5hdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgYS5kZW5vbWluYXRvciAqIGIuZGVub21pbmF0b3IpCisgICAgICAgIGRhLCBkYiA9IGEuZGVub21pbmF0b3IsIGIuZGVub21pbmF0b3IKKyAgICAgICAgcmV0dXJuIEZyYWN0aW9uKGEubnVtZXJhdG9yICogZGIgKyBiLm51bWVyYXRvciAqIGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgZGEgKiBkYikKIAogICAgIF9fYWRkX18sIF9fcmFkZF9fID0gX29wZXJhdG9yX2ZhbGxiYWNrcyhfYWRkLCBvcGVyYXRvci5hZGQpCiAKICAgICBkZWYgX3N1YihhLCBiKToKICAgICAgICAgIiIiYSAtIGIiIiIKLSAgICAgICAgcmV0dXJuIEZyYWN0aW9uKGEubnVtZXJhdG9yICogYi5kZW5vbWluYXRvciAtCi0gICAgICAgICAgICAgICAgICAgICAgICBiLm51bWVyYXRvciAqIGEuZGVub21pbmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICBhLmRlbm9taW5hdG9yICogYi5kZW5vbWluYXRvcikKKyAgICAgICAgZGEsIGRiID0gYS5kZW5vbWluYXRvciwgYi5kZW5vbWluYXRvcgorICAgICAgICByZXR1cm4gRnJhY3Rpb24oYS5udW1lcmF0b3IgKiBkYiAtIGIubnVtZXJhdG9yICogZGEsCisgICAgICAgICAgICAgICAgICAgICAgICBkYSAqIGRiKQogCiAgICAgX19zdWJfXywgX19yc3ViX18gPSBfb3BlcmF0b3JfZmFsbGJhY2tzKF9zdWIsIG9wZXJhdG9yLnN1YikKIApAQCAtNDUzLDEwICs0ODIsMTIgQEAKICAgICAgICAgICAgICAgICBwb3dlciA9IGIubnVtZXJhdG9yCiAgICAgICAgICAgICAgICAgaWYgcG93ZXIgPj0gMDoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZyYWN0aW9uKGEuX251bWVyYXRvciAqKiBwb3dlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuX2Rlbm9taW5hdG9yICoqIHBvd2VyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5fZGVub21pbmF0b3IgKiogcG93ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbm9ybWFsaXplPUZhbHNlKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGcmFjdGlvbihhLl9kZW5vbWluYXRvciAqKiAtcG93ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLl9udW1lcmF0b3IgKiogLXBvd2VyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5fbnVtZXJhdG9yICoqIC1wb3dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ub3JtYWxpemU9RmFsc2UpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgQSBmcmFjdGlvbmFsIHBvd2VyIHdpbGwgZ2VuZXJhbGx5IHByb2R1Y2UgYW4KICAgICAgICAgICAgICAgICAjIGlycmF0aW9uYWwgbnVtYmVyLgpAQCAtNDgwLDE1ICs1MTEsMTUgQEAKIAogICAgIGRlZiBfX3Bvc19fKGEpOgogICAgICAgICAiIiIrYTogQ29lcmNlcyBhIHN1YmNsYXNzIGluc3RhbmNlIHRvIEZyYWN0aW9uIiIiCi0gICAgICAgIHJldHVybiBGcmFjdGlvbihhLl9udW1lcmF0b3IsIGEuX2Rlbm9taW5hdG9yKQorICAgICAgICByZXR1cm4gRnJhY3Rpb24oYS5fbnVtZXJhdG9yLCBhLl9kZW5vbWluYXRvciwgX25vcm1hbGl6ZT1GYWxzZSkKIAogICAgIGRlZiBfX25lZ19fKGEpOgogICAgICAgICAiIiItYSIiIgotICAgICAgICByZXR1cm4gRnJhY3Rpb24oLWEuX251bWVyYXRvciwgYS5fZGVub21pbmF0b3IpCisgICAgICAgIHJldHVybiBGcmFjdGlvbigtYS5fbnVtZXJhdG9yLCBhLl9kZW5vbWluYXRvciwgX25vcm1hbGl6ZT1GYWxzZSkKIAogICAgIGRlZiBfX2Fic19fKGEpOgogICAgICAgICAiIiJhYnMoYSkiIiIKLSAgICAgICAgcmV0dXJuIEZyYWN0aW9uKGFicyhhLl9udW1lcmF0b3IpLCBhLl9kZW5vbWluYXRvcikKKyAgICAgICAgcmV0dXJuIEZyYWN0aW9uKGFicyhhLl9udW1lcmF0b3IpLCBhLl9kZW5vbWluYXRvciwgX25vcm1hbGl6ZT1GYWxzZSkKIAogICAgIGRlZiBfX3RydW5jX18oYSk6CiAgICAgICAgICIiInRydW5jKGEpIiIiCkBAIC01NTUsNiArNTg2LDggQEAKIAogICAgIGRlZiBfX2VxX18oYSwgYik6CiAgICAgICAgICIiImEgPT0gYiIiIgorICAgICAgICBpZiB0eXBlKGIpIGlzIGludDoKKyAgICAgICAgICAgIHJldHVybiBhLl9udW1lcmF0b3IgPT0gYiBhbmQgYS5fZGVub21pbmF0b3IgPT0gMQogICAgICAgICBpZiBpc2luc3RhbmNlKGIsIG51bWJlcnMuUmF0aW9uYWwpOgogICAgICAgICAgICAgcmV0dXJuIChhLl9udW1lcmF0b3IgPT0gYi5udW1lcmF0b3IgYW5kCiAgICAgICAgICAgICAgICAgICAgIGEuX2Rlbm9taW5hdG9yID09IGIuZGVub21pbmF0b3IpCmRpZmYgLS1naXQgYS9MaWIvZnRwbGliLnB5IGIvTGliL2Z0cGxpYi5weQppbmRleCAxZDNiZDllLi5jNDE2ZDg1IDEwMDY0NAotLS0gYS9MaWIvZnRwbGliLnB5CisrKyBiL0xpYi9mdHBsaWIucHkKQEAgLTQyLDcgKzQyLDcgQEAKIGltcG9ydCB3YXJuaW5ncwogZnJvbSBzb2NrZXQgaW1wb3J0IF9HTE9CQUxfREVGQVVMVF9USU1FT1VUCiAKLV9fYWxsX18gPSBbIkZUUCIsICJOZXRyYyJdCitfX2FsbF9fID0gWyJGVFAiXQogCiAjIE1hZ2ljIG51bWJlciBmcm9tIDxzb2NrZXQuaD4KIE1TR19PT0IgPSAweDEgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFByb2Nlc3MgZGF0YSBvdXQgb2YgYmFuZApAQCAtOTIzLDExNSArOTIzLDYgQEAKICAgICB0YXJnZXQudm9pZHJlc3AoKQogCiAKLWNsYXNzIE5ldHJjOgotICAgICIiIkNsYXNzIHRvIHBhcnNlICYgcHJvdmlkZSBhY2Nlc3MgdG8gJ25ldHJjJyBmb3JtYXQgZmlsZXMuCi0KLSAgICBTZWUgdGhlIG5ldHJjKDQpIG1hbiBwYWdlIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgZmlsZSBmb3JtYXQuCi0KLSAgICBXQVJOSU5HOiBUaGlzIGNsYXNzIGlzIG9ic29sZXRlIC0tIHVzZSBtb2R1bGUgbmV0cmMgaW5zdGVhZC4KLQotICAgICIiIgotICAgIF9fZGVmdXNlciA9IE5vbmUKLSAgICBfX2RlZnBhc3N3ZCA9IE5vbmUKLSAgICBfX2RlZmFjY3QgPSBOb25lCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWU9Tm9uZSk6Ci0gICAgICAgIHdhcm5pbmdzLndhcm4oIlRoaXMgY2xhc3MgaXMgZGVwcmVjYXRlZCwgdXNlIHRoZSBuZXRyYyBtb2R1bGUgaW5zdGVhZCIsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgICAgICBpZiBmaWxlbmFtZSBpcyBOb25lOgotICAgICAgICAgICAgaWYgIkhPTUUiIGluIG9zLmVudmlyb246Ci0gICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsiSE9NRSJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIubmV0cmMiKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJzcGVjaWZ5IGZpbGUgdG8gbG9hZCBvciBzZXQgJEhPTUUiKQotICAgICAgICBzZWxmLl9faG9zdHMgPSB7fQotICAgICAgICBzZWxmLl9fbWFjcm9zID0ge30KLSAgICAgICAgZnAgPSBvcGVuKGZpbGVuYW1lLCAiciIpCi0gICAgICAgIGluX21hY3JvID0gMAotICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgbGluZSA9IGZwLnJlYWRsaW5lKCkKLSAgICAgICAgICAgIGlmIG5vdCBsaW5lOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBpbl9tYWNybyBhbmQgbGluZS5zdHJpcCgpOgotICAgICAgICAgICAgICAgIG1hY3JvX2xpbmVzLmFwcGVuZChsaW5lKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBlbGlmIGluX21hY3JvOgotICAgICAgICAgICAgICAgIHNlbGYuX19tYWNyb3NbbWFjcm9fbmFtZV0gPSB0dXBsZShtYWNyb19saW5lcykKLSAgICAgICAgICAgICAgICBpbl9tYWNybyA9IDAKLSAgICAgICAgICAgIHdvcmRzID0gbGluZS5zcGxpdCgpCi0gICAgICAgICAgICBob3N0ID0gdXNlciA9IHBhc3N3ZCA9IGFjY3QgPSBOb25lCi0gICAgICAgICAgICBkZWZhdWx0ID0gMAotICAgICAgICAgICAgaSA9IDAKLSAgICAgICAgICAgIHdoaWxlIGkgPCBsZW4od29yZHMpOgotICAgICAgICAgICAgICAgIHcxID0gd29yZHNbaV0KLSAgICAgICAgICAgICAgICBpZiBpKzEgPCBsZW4od29yZHMpOgotICAgICAgICAgICAgICAgICAgICB3MiA9IHdvcmRzW2kgKyAxXQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHcyID0gTm9uZQotICAgICAgICAgICAgICAgIGlmIHcxID09ICdkZWZhdWx0JzoKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCA9IDEKLSAgICAgICAgICAgICAgICBlbGlmIHcxID09ICdtYWNoaW5lJyBhbmQgdzI6Ci0gICAgICAgICAgICAgICAgICAgIGhvc3QgPSB3Mi5sb3dlcigpCi0gICAgICAgICAgICAgICAgICAgIGkgPSBpICsgMQotICAgICAgICAgICAgICAgIGVsaWYgdzEgPT0gJ2xvZ2luJyBhbmQgdzI6Ci0gICAgICAgICAgICAgICAgICAgIHVzZXIgPSB3MgotICAgICAgICAgICAgICAgICAgICBpID0gaSArIDEKLSAgICAgICAgICAgICAgICBlbGlmIHcxID09ICdwYXNzd29yZCcgYW5kIHcyOgotICAgICAgICAgICAgICAgICAgICBwYXNzd2QgPSB3MgotICAgICAgICAgICAgICAgICAgICBpID0gaSArIDEKLSAgICAgICAgICAgICAgICBlbGlmIHcxID09ICdhY2NvdW50JyBhbmQgdzI6Ci0gICAgICAgICAgICAgICAgICAgIGFjY3QgPSB3MgotICAgICAgICAgICAgICAgICAgICBpID0gaSArIDEKLSAgICAgICAgICAgICAgICBlbGlmIHcxID09ICdtYWNkZWYnIGFuZCB3MjoKLSAgICAgICAgICAgICAgICAgICAgbWFjcm9fbmFtZSA9IHcyCi0gICAgICAgICAgICAgICAgICAgIG1hY3JvX2xpbmVzID0gW10KLSAgICAgICAgICAgICAgICAgICAgaW5fbWFjcm8gPSAxCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgaSA9IGkgKyAxCi0gICAgICAgICAgICBpZiBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHNlbGYuX19kZWZ1c2VyID0gdXNlciBvciBzZWxmLl9fZGVmdXNlcgotICAgICAgICAgICAgICAgIHNlbGYuX19kZWZwYXNzd2QgPSBwYXNzd2Qgb3Igc2VsZi5fX2RlZnBhc3N3ZAotICAgICAgICAgICAgICAgIHNlbGYuX19kZWZhY2N0ID0gYWNjdCBvciBzZWxmLl9fZGVmYWNjdAotICAgICAgICAgICAgaWYgaG9zdDoKLSAgICAgICAgICAgICAgICBpZiBob3N0IGluIHNlbGYuX19ob3N0czoKLSAgICAgICAgICAgICAgICAgICAgb3VzZXIsIG9wYXNzd2QsIG9hY2N0ID0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2hvc3RzW2hvc3RdCi0gICAgICAgICAgICAgICAgICAgIHVzZXIgPSB1c2VyIG9yIG91c2VyCi0gICAgICAgICAgICAgICAgICAgIHBhc3N3ZCA9IHBhc3N3ZCBvciBvcGFzc3dkCi0gICAgICAgICAgICAgICAgICAgIGFjY3QgPSBhY2N0IG9yIG9hY2N0Ci0gICAgICAgICAgICAgICAgc2VsZi5fX2hvc3RzW2hvc3RdID0gdXNlciwgcGFzc3dkLCBhY2N0Ci0gICAgICAgIGZwLmNsb3NlKCkKLQotICAgIGRlZiBnZXRfaG9zdHMoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgaG9zdHMgbWVudGlvbmVkIGluIHRoZSAubmV0cmMgZmlsZS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX19ob3N0cy5rZXlzKCkKLQotICAgIGRlZiBnZXRfYWNjb3VudChzZWxmLCBob3N0KToKLSAgICAgICAgIiIiUmV0dXJucyBsb2dpbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG5hbWVkIGhvc3QuCi0KLSAgICAgICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIHRyaXBsZSBjb250YWluaW5nIHVzZXJpZCwKLSAgICAgICAgcGFzc3dvcmQsIGFuZCB0aGUgYWNjb3VudGluZyBmaWVsZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgaG9zdCA9IGhvc3QubG93ZXIoKQotICAgICAgICB1c2VyID0gcGFzc3dkID0gYWNjdCA9IE5vbmUKLSAgICAgICAgaWYgaG9zdCBpbiBzZWxmLl9faG9zdHM6Ci0gICAgICAgICAgICB1c2VyLCBwYXNzd2QsIGFjY3QgPSBzZWxmLl9faG9zdHNbaG9zdF0KLSAgICAgICAgdXNlciA9IHVzZXIgb3Igc2VsZi5fX2RlZnVzZXIKLSAgICAgICAgcGFzc3dkID0gcGFzc3dkIG9yIHNlbGYuX19kZWZwYXNzd2QKLSAgICAgICAgYWNjdCA9IGFjY3Qgb3Igc2VsZi5fX2RlZmFjY3QKLSAgICAgICAgcmV0dXJuIHVzZXIsIHBhc3N3ZCwgYWNjdAotCi0gICAgZGVmIGdldF9tYWNyb3Moc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIGRlZmluZWQgbWFjcm8gbmFtZXMuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9fbWFjcm9zLmtleXMoKQotCi0gICAgZGVmIGdldF9tYWNybyhzZWxmLCBtYWNybyk6Ci0gICAgICAgICIiIlJldHVybiBhIHNlcXVlbmNlIG9mIGxpbmVzIHdoaWNoIGRlZmluZSBhIG5hbWVkIG1hY3JvLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fX21hY3Jvc1ttYWNyb10KLQotCi0KIGRlZiB0ZXN0KCk6CiAgICAgJycnVGVzdCBwcm9ncmFtLgogICAgIFVzYWdlOiBmdHAgWy1kXSBbLXJbZmlsZV1dIGhvc3QgWy1sW2Rpcl1dIFstZFtkaXJdXSBbLXBdIFtmaWxlXSAuLi4KQEAgLTEwNDUsNiArOTM2LDggQEAKICAgICAgICAgcHJpbnQodGVzdC5fX2RvY19fKQogICAgICAgICBzeXMuZXhpdCgwKQogCisgICAgaW1wb3J0IG5ldHJjCisKICAgICBkZWJ1Z2dpbmcgPSAwCiAgICAgcmNmaWxlID0gTm9uZQogICAgIHdoaWxlIHN5cy5hcmd2WzFdID09ICctZCc6CkBAIC0xMDU5LDE0ICs5NTIsMTQgQEAKICAgICBmdHAuc2V0X2RlYnVnbGV2ZWwoZGVidWdnaW5nKQogICAgIHVzZXJpZCA9IHBhc3N3ZCA9IGFjY3QgPSAnJwogICAgIHRyeToKLSAgICAgICAgbmV0cmMgPSBOZXRyYyhyY2ZpbGUpCisgICAgICAgIG5ldHJjb2JqID0gbmV0cmMubmV0cmMocmNmaWxlKQogICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICBpZiByY2ZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJDb3VsZCBub3Qgb3BlbiBhY2NvdW50IGZpbGUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgLS0gdXNpbmcgYW5vbnltb3VzIGxvZ2luLiIpCiAgICAgZWxzZToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgdXNlcmlkLCBwYXNzd2QsIGFjY3QgPSBuZXRyYy5nZXRfYWNjb3VudChob3N0KQorICAgICAgICAgICAgdXNlcmlkLCBhY2N0LCBwYXNzd2QgPSBuZXRyY29iai5hdXRoZW50aWNhdG9ycyhob3N0KQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAjIG5vIGFjY291bnQgZm9yIGhvc3QKICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCmRpZmYgLS1naXQgYS9MaWIvZnVuY3Rvb2xzLnB5IGIvTGliL2Z1bmN0b29scy5weQppbmRleCAyYzI5OWQ3Li4yMTQ1MjNjIDEwMDY0NAotLS0gYS9MaWIvZnVuY3Rvb2xzLnB5CisrKyBiL0xpYi9mdW5jdG9vbHMucHkKQEAgLTIzLDcgKzIzLDcgQEAKIGZyb20gd2Vha3JlZiBpbXBvcnQgV2Vha0tleURpY3Rpb25hcnkKIHRyeToKICAgICBmcm9tIF90aHJlYWQgaW1wb3J0IFJMb2NrCi1leGNlcHQ6CitleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgY2xhc3MgUkxvY2s6CiAgICAgICAgICdEdW1teSByZWVudHJhbnQgbG9jayBmb3IgYnVpbGRzIHdpdGhvdXQgdGhyZWFkcycKICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKTogcGFzcwpAQCAtOTQsMTA4ICs5NCwxMDkgQEAKICMgaW5maW5pdGUgcmVjdXJzaW9uIHRoYXQgY291bGQgb2NjdXIgd2hlbiB0aGUgb3BlcmF0b3IgZGlzcGF0Y2ggbG9naWMKICMgZGV0ZWN0cyBhIE5vdEltcGxlbWVudGVkIHJlc3VsdCBhbmQgdGhlbiBjYWxscyBhIHJlZmxlY3RlZCBtZXRob2QuCiAKLWRlZiBfZ3RfZnJvbV9sdChzZWxmLCBvdGhlcik6CitkZWYgX2d0X2Zyb21fbHQoc2VsZiwgb3RoZXIsIE5vdEltcGxlbWVudGVkPU5vdEltcGxlbWVudGVkKToKICAgICAnUmV0dXJuIGEgPiBiLiAgQ29tcHV0ZWQgYnkgQHRvdGFsX29yZGVyaW5nIGZyb20gKG5vdCBhIDwgYikgYW5kIChhICE9IGIpLicKICAgICBvcF9yZXN1bHQgPSBzZWxmLl9fbHRfXyhvdGhlcikKICAgICBpZiBvcF9yZXN1bHQgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gb3BfcmVzdWx0CiAgICAgcmV0dXJuIG5vdCBvcF9yZXN1bHQgYW5kIHNlbGYgIT0gb3RoZXIKIAotZGVmIF9sZV9mcm9tX2x0KHNlbGYsIG90aGVyKToKK2RlZiBfbGVfZnJvbV9sdChzZWxmLCBvdGhlciwgTm90SW1wbGVtZW50ZWQ9Tm90SW1wbGVtZW50ZWQpOgogICAgICdSZXR1cm4gYSA8PSBiLiAgQ29tcHV0ZWQgYnkgQHRvdGFsX29yZGVyaW5nIGZyb20gKGEgPCBiKSBvciAoYSA9PSBiKS4nCiAgICAgb3BfcmVzdWx0ID0gc2VsZi5fX2x0X18ob3RoZXIpCiAgICAgcmV0dXJuIG9wX3Jlc3VsdCBvciBzZWxmID09IG90aGVyCiAKLWRlZiBfZ2VfZnJvbV9sdChzZWxmLCBvdGhlcik6CitkZWYgX2dlX2Zyb21fbHQoc2VsZiwgb3RoZXIsIE5vdEltcGxlbWVudGVkPU5vdEltcGxlbWVudGVkKToKICAgICAnUmV0dXJuIGEgPj0gYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChub3QgYSA8IGIpLicKICAgICBvcF9yZXN1bHQgPSBzZWxmLl9fbHRfXyhvdGhlcikKICAgICBpZiBvcF9yZXN1bHQgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gb3BfcmVzdWx0CiAgICAgcmV0dXJuIG5vdCBvcF9yZXN1bHQKIAotZGVmIF9nZV9mcm9tX2xlKHNlbGYsIG90aGVyKToKK2RlZiBfZ2VfZnJvbV9sZShzZWxmLCBvdGhlciwgTm90SW1wbGVtZW50ZWQ9Tm90SW1wbGVtZW50ZWQpOgogICAgICdSZXR1cm4gYSA+PSBiLiAgQ29tcHV0ZWQgYnkgQHRvdGFsX29yZGVyaW5nIGZyb20gKG5vdCBhIDw9IGIpIG9yIChhID09IGIpLicKICAgICBvcF9yZXN1bHQgPSBzZWxmLl9fbGVfXyhvdGhlcikKICAgICBpZiBvcF9yZXN1bHQgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gb3BfcmVzdWx0CiAgICAgcmV0dXJuIG5vdCBvcF9yZXN1bHQgb3Igc2VsZiA9PSBvdGhlcgogCi1kZWYgX2x0X2Zyb21fbGUoc2VsZiwgb3RoZXIpOgorZGVmIF9sdF9mcm9tX2xlKHNlbGYsIG90aGVyLCBOb3RJbXBsZW1lbnRlZD1Ob3RJbXBsZW1lbnRlZCk6CiAgICAgJ1JldHVybiBhIDwgYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChhIDw9IGIpIGFuZCAoYSAhPSBiKS4nCiAgICAgb3BfcmVzdWx0ID0gc2VsZi5fX2xlX18ob3RoZXIpCiAgICAgaWYgb3BfcmVzdWx0IGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG9wX3Jlc3VsdAogICAgIHJldHVybiBvcF9yZXN1bHQgYW5kIHNlbGYgIT0gb3RoZXIKIAotZGVmIF9ndF9mcm9tX2xlKHNlbGYsIG90aGVyKToKK2RlZiBfZ3RfZnJvbV9sZShzZWxmLCBvdGhlciwgTm90SW1wbGVtZW50ZWQ9Tm90SW1wbGVtZW50ZWQpOgogICAgICdSZXR1cm4gYSA+IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAobm90IGEgPD0gYikuJwogICAgIG9wX3Jlc3VsdCA9IHNlbGYuX19sZV9fKG90aGVyKQogICAgIGlmIG9wX3Jlc3VsdCBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBvcF9yZXN1bHQKICAgICByZXR1cm4gbm90IG9wX3Jlc3VsdAogCi1kZWYgX2x0X2Zyb21fZ3Qoc2VsZiwgb3RoZXIpOgorZGVmIF9sdF9mcm9tX2d0KHNlbGYsIG90aGVyLCBOb3RJbXBsZW1lbnRlZD1Ob3RJbXBsZW1lbnRlZCk6CiAgICAgJ1JldHVybiBhIDwgYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChub3QgYSA+IGIpIGFuZCAoYSAhPSBiKS4nCiAgICAgb3BfcmVzdWx0ID0gc2VsZi5fX2d0X18ob3RoZXIpCiAgICAgaWYgb3BfcmVzdWx0IGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG9wX3Jlc3VsdAogICAgIHJldHVybiBub3Qgb3BfcmVzdWx0IGFuZCBzZWxmICE9IG90aGVyCiAKLWRlZiBfZ2VfZnJvbV9ndChzZWxmLCBvdGhlcik6CitkZWYgX2dlX2Zyb21fZ3Qoc2VsZiwgb3RoZXIsIE5vdEltcGxlbWVudGVkPU5vdEltcGxlbWVudGVkKToKICAgICAnUmV0dXJuIGEgPj0gYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChhID4gYikgb3IgKGEgPT0gYikuJwogICAgIG9wX3Jlc3VsdCA9IHNlbGYuX19ndF9fKG90aGVyKQogICAgIHJldHVybiBvcF9yZXN1bHQgb3Igc2VsZiA9PSBvdGhlcgogCi1kZWYgX2xlX2Zyb21fZ3Qoc2VsZiwgb3RoZXIpOgorZGVmIF9sZV9mcm9tX2d0KHNlbGYsIG90aGVyLCBOb3RJbXBsZW1lbnRlZD1Ob3RJbXBsZW1lbnRlZCk6CiAgICAgJ1JldHVybiBhIDw9IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAobm90IGEgPiBiKS4nCiAgICAgb3BfcmVzdWx0ID0gc2VsZi5fX2d0X18ob3RoZXIpCiAgICAgaWYgb3BfcmVzdWx0IGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG9wX3Jlc3VsdAogICAgIHJldHVybiBub3Qgb3BfcmVzdWx0CiAKLWRlZiBfbGVfZnJvbV9nZShzZWxmLCBvdGhlcik6CitkZWYgX2xlX2Zyb21fZ2Uoc2VsZiwgb3RoZXIsIE5vdEltcGxlbWVudGVkPU5vdEltcGxlbWVudGVkKToKICAgICAnUmV0dXJuIGEgPD0gYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChub3QgYSA+PSBiKSBvciAoYSA9PSBiKS4nCiAgICAgb3BfcmVzdWx0ID0gc2VsZi5fX2dlX18ob3RoZXIpCiAgICAgaWYgb3BfcmVzdWx0IGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG9wX3Jlc3VsdAogICAgIHJldHVybiBub3Qgb3BfcmVzdWx0IG9yIHNlbGYgPT0gb3RoZXIKIAotZGVmIF9ndF9mcm9tX2dlKHNlbGYsIG90aGVyKToKK2RlZiBfZ3RfZnJvbV9nZShzZWxmLCBvdGhlciwgTm90SW1wbGVtZW50ZWQ9Tm90SW1wbGVtZW50ZWQpOgogICAgICdSZXR1cm4gYSA+IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAoYSA+PSBiKSBhbmQgKGEgIT0gYikuJwogICAgIG9wX3Jlc3VsdCA9IHNlbGYuX19nZV9fKG90aGVyKQogICAgIGlmIG9wX3Jlc3VsdCBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBvcF9yZXN1bHQKICAgICByZXR1cm4gb3BfcmVzdWx0IGFuZCBzZWxmICE9IG90aGVyCiAKLWRlZiBfbHRfZnJvbV9nZShzZWxmLCBvdGhlcik6CitkZWYgX2x0X2Zyb21fZ2Uoc2VsZiwgb3RoZXIsIE5vdEltcGxlbWVudGVkPU5vdEltcGxlbWVudGVkKToKICAgICAnUmV0dXJuIGEgPCBiLiAgQ29tcHV0ZWQgYnkgQHRvdGFsX29yZGVyaW5nIGZyb20gKG5vdCBhID49IGIpLicKICAgICBvcF9yZXN1bHQgPSBzZWxmLl9fZ2VfXyhvdGhlcikKICAgICBpZiBvcF9yZXN1bHQgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gb3BfcmVzdWx0CiAgICAgcmV0dXJuIG5vdCBvcF9yZXN1bHQKIAorX2NvbnZlcnQgPSB7CisgICAgJ19fbHRfXyc6IFsoJ19fZ3RfXycsIF9ndF9mcm9tX2x0KSwKKyAgICAgICAgICAgICAgICgnX19sZV9fJywgX2xlX2Zyb21fbHQpLAorICAgICAgICAgICAgICAgKCdfX2dlX18nLCBfZ2VfZnJvbV9sdCldLAorICAgICdfX2xlX18nOiBbKCdfX2dlX18nLCBfZ2VfZnJvbV9sZSksCisgICAgICAgICAgICAgICAoJ19fbHRfXycsIF9sdF9mcm9tX2xlKSwKKyAgICAgICAgICAgICAgICgnX19ndF9fJywgX2d0X2Zyb21fbGUpXSwKKyAgICAnX19ndF9fJzogWygnX19sdF9fJywgX2x0X2Zyb21fZ3QpLAorICAgICAgICAgICAgICAgKCdfX2dlX18nLCBfZ2VfZnJvbV9ndCksCisgICAgICAgICAgICAgICAoJ19fbGVfXycsIF9sZV9mcm9tX2d0KV0sCisgICAgJ19fZ2VfXyc6IFsoJ19fbGVfXycsIF9sZV9mcm9tX2dlKSwKKyAgICAgICAgICAgICAgICgnX19ndF9fJywgX2d0X2Zyb21fZ2UpLAorICAgICAgICAgICAgICAgKCdfX2x0X18nLCBfbHRfZnJvbV9nZSldCit9CisKIGRlZiB0b3RhbF9vcmRlcmluZyhjbHMpOgogICAgICIiIkNsYXNzIGRlY29yYXRvciB0aGF0IGZpbGxzIGluIG1pc3Npbmcgb3JkZXJpbmcgbWV0aG9kcyIiIgotICAgIGNvbnZlcnQgPSB7Ci0gICAgICAgICdfX2x0X18nOiBbKCdfX2d0X18nLCBfZ3RfZnJvbV9sdCksCi0gICAgICAgICAgICAgICAgICAgKCdfX2xlX18nLCBfbGVfZnJvbV9sdCksCi0gICAgICAgICAgICAgICAgICAgKCdfX2dlX18nLCBfZ2VfZnJvbV9sdCldLAotICAgICAgICAnX19sZV9fJzogWygnX19nZV9fJywgX2dlX2Zyb21fbGUpLAotICAgICAgICAgICAgICAgICAgICgnX19sdF9fJywgX2x0X2Zyb21fbGUpLAotICAgICAgICAgICAgICAgICAgICgnX19ndF9fJywgX2d0X2Zyb21fbGUpXSwKLSAgICAgICAgJ19fZ3RfXyc6IFsoJ19fbHRfXycsIF9sdF9mcm9tX2d0KSwKLSAgICAgICAgICAgICAgICAgICAoJ19fZ2VfXycsIF9nZV9mcm9tX2d0KSwKLSAgICAgICAgICAgICAgICAgICAoJ19fbGVfXycsIF9sZV9mcm9tX2d0KV0sCi0gICAgICAgICdfX2dlX18nOiBbKCdfX2xlX18nLCBfbGVfZnJvbV9nZSksCi0gICAgICAgICAgICAgICAgICAgKCdfX2d0X18nLCBfZ3RfZnJvbV9nZSksCi0gICAgICAgICAgICAgICAgICAgKCdfX2x0X18nLCBfbHRfZnJvbV9nZSldCi0gICAgfQogICAgICMgRmluZCB1c2VyLWRlZmluZWQgY29tcGFyaXNvbnMgKG5vdCB0aG9zZSBpbmhlcml0ZWQgZnJvbSBvYmplY3QpLgotICAgIHJvb3RzID0gW29wIGZvciBvcCBpbiBjb252ZXJ0IGlmIGdldGF0dHIoY2xzLCBvcCwgTm9uZSkgaXMgbm90IGdldGF0dHIob2JqZWN0LCBvcCwgTm9uZSldCisgICAgcm9vdHMgPSBbb3AgZm9yIG9wIGluIF9jb252ZXJ0IGlmIGdldGF0dHIoY2xzLCBvcCwgTm9uZSkgaXMgbm90IGdldGF0dHIob2JqZWN0LCBvcCwgTm9uZSldCiAgICAgaWYgbm90IHJvb3RzOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdtdXN0IGRlZmluZSBhdCBsZWFzdCBvbmUgb3JkZXJpbmcgb3BlcmF0aW9uOiA8ID4gPD0gPj0nKQogICAgIHJvb3QgPSBtYXgocm9vdHMpICAgICAgICMgcHJlZmVyIF9fbHRfXyB0byBfX2xlX18gdG8gX19ndF9fIHRvIF9fZ2VfXwotICAgIGZvciBvcG5hbWUsIG9wZnVuYyBpbiBjb252ZXJ0W3Jvb3RdOgorICAgIGZvciBvcG5hbWUsIG9wZnVuYyBpbiBfY29udmVydFtyb290XToKICAgICAgICAgaWYgb3BuYW1lIG5vdCBpbiByb290czoKICAgICAgICAgICAgIG9wZnVuYy5fX25hbWVfXyA9IG9wbmFtZQogICAgICAgICAgICAgc2V0YXR0cihjbHMsIG9wbmFtZSwgb3BmdW5jKQpAQCAtMjIyLDggKzIyMyw2IEBACiAgICAgICAgICAgICByZXR1cm4gbXljbXAoc2VsZi5vYmosIG90aGVyLm9iaikgPD0gMAogICAgICAgICBkZWYgX19nZV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgIHJldHVybiBteWNtcChzZWxmLm9iaiwgb3RoZXIub2JqKSA+PSAwCi0gICAgICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICAgICAgcmV0dXJuIG15Y21wKHNlbGYub2JqLCBvdGhlci5vYmopICE9IDAKICAgICAgICAgX19oYXNoX18gPSBOb25lCiAgICAgcmV0dXJuIEsKIApAQCAtMjQyLDYgKzI0MSwxNCBAQAogICAgICIiIk5ldyBmdW5jdGlvbiB3aXRoIHBhcnRpYWwgYXBwbGljYXRpb24gb2YgdGhlIGdpdmVuIGFyZ3VtZW50cwogICAgIGFuZCBrZXl3b3Jkcy4KICAgICAiIiIKKyAgICBpZiBoYXNhdHRyKGZ1bmMsICdmdW5jJyk6CisgICAgICAgIGFyZ3MgPSBmdW5jLmFyZ3MgKyBhcmdzCisgICAgICAgIHRtcGt3ID0gZnVuYy5rZXl3b3Jkcy5jb3B5KCkKKyAgICAgICAgdG1wa3cudXBkYXRlKGtleXdvcmRzKQorICAgICAgICBrZXl3b3JkcyA9IHRtcGt3CisgICAgICAgIGRlbCB0bXBrdworICAgICAgICBmdW5jID0gZnVuYy5mdW5jCisKICAgICBkZWYgbmV3ZnVuYygqZmFyZ3MsICoqZmtleXdvcmRzKToKICAgICAgICAgbmV3a2V5d29yZHMgPSBrZXl3b3Jkcy5jb3B5KCkKICAgICAgICAgbmV3a2V5d29yZHMudXBkYXRlKGZrZXl3b3JkcykKQEAgLTI5MSw3ICsyOTgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5rZXl3b3Jkcy5pdGVtcygpKQogICAgICAgICBmb3JtYXRfc3RyaW5nID0gInttb2R1bGV9LntjbHN9KHtmdW5jfSwge2FyZ3N9LCB7a2V5d29yZHN9KSIKICAgICAgICAgcmV0dXJuIGZvcm1hdF9zdHJpbmcuZm9ybWF0KG1vZHVsZT1zZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzPXNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzPXNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmM9c2VsZi5mdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz1hcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHM9a2V5d29yZHMpCkBAIC00MTIsMTIwICs0MTksMTI5IEBACiAgICAgaWYgbWF4c2l6ZSBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UobWF4c2l6ZSwgaW50KToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdFeHBlY3RlZCBtYXhzaXplIHRvIGJlIGFuIGludGVnZXIgb3IgTm9uZScpCiAKKyAgICBkZWYgZGVjb3JhdGluZ19mdW5jdGlvbih1c2VyX2Z1bmN0aW9uKToKKyAgICAgICAgd3JhcHBlciA9IF9scnVfY2FjaGVfd3JhcHBlcih1c2VyX2Z1bmN0aW9uLCBtYXhzaXplLCB0eXBlZCwgX0NhY2hlSW5mbykKKyAgICAgICAgcmV0dXJuIHVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsIHVzZXJfZnVuY3Rpb24pCisKKyAgICByZXR1cm4gZGVjb3JhdGluZ19mdW5jdGlvbgorCitkZWYgX2xydV9jYWNoZV93cmFwcGVyKHVzZXJfZnVuY3Rpb24sIG1heHNpemUsIHR5cGVkLCBfQ2FjaGVJbmZvKToKICAgICAjIENvbnN0YW50cyBzaGFyZWQgYnkgYWxsIGxydSBjYWNoZSBpbnN0YW5jZXM6CiAgICAgc2VudGluZWwgPSBvYmplY3QoKSAgICAgICAgICAjIHVuaXF1ZSBvYmplY3QgdXNlZCB0byBzaWduYWwgY2FjaGUgbWlzc2VzCiAgICAgbWFrZV9rZXkgPSBfbWFrZV9rZXkgICAgICAgICAjIGJ1aWxkIGEga2V5IGZyb20gdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cwogICAgIFBSRVYsIE5FWFQsIEtFWSwgUkVTVUxUID0gMCwgMSwgMiwgMyAgICMgbmFtZXMgZm9yIHRoZSBsaW5rIGZpZWxkcwogCi0gICAgZGVmIGRlY29yYXRpbmdfZnVuY3Rpb24odXNlcl9mdW5jdGlvbik6Ci0gICAgICAgIGNhY2hlID0ge30KLSAgICAgICAgaGl0cyA9IG1pc3NlcyA9IDAKLSAgICAgICAgZnVsbCA9IEZhbHNlCi0gICAgICAgIGNhY2hlX2dldCA9IGNhY2hlLmdldCAgICAjIGJvdW5kIG1ldGhvZCB0byBsb29rdXAgYSBrZXkgb3IgcmV0dXJuIE5vbmUKLSAgICAgICAgbG9jayA9IFJMb2NrKCkgICAgICAgICAgICMgYmVjYXVzZSBsaW5rZWRsaXN0IHVwZGF0ZXMgYXJlbid0IHRocmVhZHNhZmUKLSAgICAgICAgcm9vdCA9IFtdICAgICAgICAgICAgICAgICMgcm9vdCBvZiB0aGUgY2lyY3VsYXIgZG91Ymx5IGxpbmtlZCBsaXN0Ci0gICAgICAgIHJvb3RbOl0gPSBbcm9vdCwgcm9vdCwgTm9uZSwgTm9uZV0gICAgICMgaW5pdGlhbGl6ZSBieSBwb2ludGluZyB0byBzZWxmCisgICAgY2FjaGUgPSB7fQorICAgIGhpdHMgPSBtaXNzZXMgPSAwCisgICAgZnVsbCA9IEZhbHNlCisgICAgY2FjaGVfZ2V0ID0gY2FjaGUuZ2V0ICAgICMgYm91bmQgbWV0aG9kIHRvIGxvb2t1cCBhIGtleSBvciByZXR1cm4gTm9uZQorICAgIGxvY2sgPSBSTG9jaygpICAgICAgICAgICAjIGJlY2F1c2UgbGlua2VkbGlzdCB1cGRhdGVzIGFyZW4ndCB0aHJlYWRzYWZlCisgICAgcm9vdCA9IFtdICAgICAgICAgICAgICAgICMgcm9vdCBvZiB0aGUgY2lyY3VsYXIgZG91Ymx5IGxpbmtlZCBsaXN0CisgICAgcm9vdFs6XSA9IFtyb290LCByb290LCBOb25lLCBOb25lXSAgICAgIyBpbml0aWFsaXplIGJ5IHBvaW50aW5nIHRvIHNlbGYKIAotICAgICAgICBpZiBtYXhzaXplID09IDA6CisgICAgaWYgbWF4c2l6ZSA9PSAwOgogCi0gICAgICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2RzKToKLSAgICAgICAgICAgICAgICAjIE5vIGNhY2hpbmcgLS0ganVzdCBhIHN0YXRpc3RpY3MgdXBkYXRlIGFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsCi0gICAgICAgICAgICAgICAgbm9ubG9jYWwgbWlzc2VzCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gdXNlcl9mdW5jdGlvbigqYXJncywgKiprd2RzKQotICAgICAgICAgICAgICAgIG1pc3NlcyArPSAxCisgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3ZHMpOgorICAgICAgICAgICAgIyBObyBjYWNoaW5nIC0tIGp1c3QgYSBzdGF0aXN0aWNzIHVwZGF0ZSBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbAorICAgICAgICAgICAgbm9ubG9jYWwgbWlzc2VzCisgICAgICAgICAgICByZXN1bHQgPSB1c2VyX2Z1bmN0aW9uKCphcmdzLCAqKmt3ZHMpCisgICAgICAgICAgICBtaXNzZXMgKz0gMQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZWxpZiBtYXhzaXplIGlzIE5vbmU6CisKKyAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICAgICAjIFNpbXBsZSBjYWNoaW5nIHdpdGhvdXQgb3JkZXJpbmcgb3Igc2l6ZSBsaW1pdAorICAgICAgICAgICAgbm9ubG9jYWwgaGl0cywgbWlzc2VzCisgICAgICAgICAgICBrZXkgPSBtYWtlX2tleShhcmdzLCBrd2RzLCB0eXBlZCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGNhY2hlX2dldChrZXksIHNlbnRpbmVsKQorICAgICAgICAgICAgaWYgcmVzdWx0IGlzIG5vdCBzZW50aW5lbDoKKyAgICAgICAgICAgICAgICBoaXRzICs9IDEKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgICAgICAgICByZXN1bHQgPSB1c2VyX2Z1bmN0aW9uKCphcmdzLCAqKmt3ZHMpCisgICAgICAgICAgICBjYWNoZVtrZXldID0gcmVzdWx0CisgICAgICAgICAgICBtaXNzZXMgKz0gMQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCi0gICAgICAgIGVsaWYgbWF4c2l6ZSBpcyBOb25lOgorICAgIGVsc2U6CiAKLSAgICAgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3ZHMpOgotICAgICAgICAgICAgICAgICMgU2ltcGxlIGNhY2hpbmcgd2l0aG91dCBvcmRlcmluZyBvciBzaXplIGxpbWl0Ci0gICAgICAgICAgICAgICAgbm9ubG9jYWwgaGl0cywgbWlzc2VzCi0gICAgICAgICAgICAgICAga2V5ID0gbWFrZV9rZXkoYXJncywga3dkcywgdHlwZWQpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gY2FjaGVfZ2V0KGtleSwgc2VudGluZWwpCi0gICAgICAgICAgICAgICAgaWYgcmVzdWx0IGlzIG5vdCBzZW50aW5lbDoKKyAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICAgICAjIFNpemUgbGltaXRlZCBjYWNoaW5nIHRoYXQgdHJhY2tzIGFjY2Vzc2VzIGJ5IHJlY2VuY3kKKyAgICAgICAgICAgIG5vbmxvY2FsIHJvb3QsIGhpdHMsIG1pc3NlcywgZnVsbAorICAgICAgICAgICAga2V5ID0gbWFrZV9rZXkoYXJncywga3dkcywgdHlwZWQpCisgICAgICAgICAgICB3aXRoIGxvY2s6CisgICAgICAgICAgICAgICAgbGluayA9IGNhY2hlX2dldChrZXkpCisgICAgICAgICAgICAgICAgaWYgbGluayBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgIyBNb3ZlIHRoZSBsaW5rIHRvIHRoZSBmcm9udCBvZiB0aGUgY2lyY3VsYXIgcXVldWUKKyAgICAgICAgICAgICAgICAgICAgbGlua19wcmV2LCBsaW5rX25leHQsIF9rZXksIHJlc3VsdCA9IGxpbmsKKyAgICAgICAgICAgICAgICAgICAgbGlua19wcmV2W05FWFRdID0gbGlua19uZXh0CisgICAgICAgICAgICAgICAgICAgIGxpbmtfbmV4dFtQUkVWXSA9IGxpbmtfcHJldgorICAgICAgICAgICAgICAgICAgICBsYXN0ID0gcm9vdFtQUkVWXQorICAgICAgICAgICAgICAgICAgICBsYXN0W05FWFRdID0gcm9vdFtQUkVWXSA9IGxpbmsKKyAgICAgICAgICAgICAgICAgICAgbGlua1tQUkVWXSA9IGxhc3QKKyAgICAgICAgICAgICAgICAgICAgbGlua1tORVhUXSA9IHJvb3QKICAgICAgICAgICAgICAgICAgICAgaGl0cyArPSAxCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgICAgICAgICByZXN1bHQgPSB1c2VyX2Z1bmN0aW9uKCphcmdzLCAqKmt3ZHMpCi0gICAgICAgICAgICAgICAgY2FjaGVba2V5XSA9IHJlc3VsdAorICAgICAgICAgICAgcmVzdWx0ID0gdXNlcl9mdW5jdGlvbigqYXJncywgKiprd2RzKQorICAgICAgICAgICAgd2l0aCBsb2NrOgorICAgICAgICAgICAgICAgIGlmIGtleSBpbiBjYWNoZToKKyAgICAgICAgICAgICAgICAgICAgIyBHZXR0aW5nIGhlcmUgbWVhbnMgdGhhdCB0aGlzIHNhbWUga2V5IHdhcyBhZGRlZCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgIyBjYWNoZSB3aGlsZSB0aGUgbG9jayB3YXMgcmVsZWFzZWQuICBTaW5jZSB0aGUgbGluaworICAgICAgICAgICAgICAgICAgICAjIHVwZGF0ZSBpcyBhbHJlYWR5IGRvbmUsIHdlIG5lZWQgb25seSByZXR1cm4gdGhlCisgICAgICAgICAgICAgICAgICAgICMgY29tcHV0ZWQgcmVzdWx0IGFuZCB1cGRhdGUgdGhlIGNvdW50IG9mIG1pc3Nlcy4KKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGVsaWYgZnVsbDoKKyAgICAgICAgICAgICAgICAgICAgIyBVc2UgdGhlIG9sZCByb290IHRvIHN0b3JlIHRoZSBuZXcga2V5IGFuZCByZXN1bHQuCisgICAgICAgICAgICAgICAgICAgIG9sZHJvb3QgPSByb290CisgICAgICAgICAgICAgICAgICAgIG9sZHJvb3RbS0VZXSA9IGtleQorICAgICAgICAgICAgICAgICAgICBvbGRyb290W1JFU1VMVF0gPSByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgIyBFbXB0eSB0aGUgb2xkZXN0IGxpbmsgYW5kIG1ha2UgaXQgdGhlIG5ldyByb290LgorICAgICAgICAgICAgICAgICAgICAjIEtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIG9sZCBrZXkgYW5kIG9sZCByZXN1bHQgdG8KKyAgICAgICAgICAgICAgICAgICAgIyBwcmV2ZW50IHRoZWlyIHJlZiBjb3VudHMgZnJvbSBnb2luZyB0byB6ZXJvIGR1cmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgIyB1cGRhdGUuIFRoYXQgd2lsbCBwcmV2ZW50IHBvdGVudGlhbGx5IGFyYml0cmFyeSBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgIyBjbGVhbi11cCBjb2RlIChpLmUuIF9fZGVsX18pIGZyb20gcnVubmluZyB3aGlsZSB3ZSdyZQorICAgICAgICAgICAgICAgICAgICAjIHN0aWxsIGFkanVzdGluZyB0aGUgbGlua3MuCisgICAgICAgICAgICAgICAgICAgIHJvb3QgPSBvbGRyb290W05FWFRdCisgICAgICAgICAgICAgICAgICAgIG9sZGtleSA9IHJvb3RbS0VZXQorICAgICAgICAgICAgICAgICAgICBvbGRyZXN1bHQgPSByb290W1JFU1VMVF0KKyAgICAgICAgICAgICAgICAgICAgcm9vdFtLRVldID0gcm9vdFtSRVNVTFRdID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAjIE5vdyB1cGRhdGUgdGhlIGNhY2hlIGRpY3Rpb25hcnkuCisgICAgICAgICAgICAgICAgICAgIGRlbCBjYWNoZVtvbGRrZXldCisgICAgICAgICAgICAgICAgICAgICMgU2F2ZSB0aGUgcG90ZW50aWFsbHkgcmVlbnRyYW50IGNhY2hlW2tleV0gYXNzaWdubWVudAorICAgICAgICAgICAgICAgICAgICAjIGZvciBsYXN0LCBhZnRlciB0aGUgcm9vdCBhbmQgbGlua3MgaGF2ZSBiZWVuIHB1dCBpbgorICAgICAgICAgICAgICAgICAgICAjIGEgY29uc2lzdGVudCBzdGF0ZS4KKyAgICAgICAgICAgICAgICAgICAgY2FjaGVba2V5XSA9IG9sZHJvb3QKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIFB1dCByZXN1bHQgaW4gYSBuZXcgbGluayBhdCB0aGUgZnJvbnQgb2YgdGhlIHF1ZXVlLgorICAgICAgICAgICAgICAgICAgICBsYXN0ID0gcm9vdFtQUkVWXQorICAgICAgICAgICAgICAgICAgICBsaW5rID0gW2xhc3QsIHJvb3QsIGtleSwgcmVzdWx0XQorICAgICAgICAgICAgICAgICAgICBsYXN0W05FWFRdID0gcm9vdFtQUkVWXSA9IGNhY2hlW2tleV0gPSBsaW5rCisgICAgICAgICAgICAgICAgICAgIGZ1bGwgPSAobGVuKGNhY2hlKSA+PSBtYXhzaXplKQogICAgICAgICAgICAgICAgIG1pc3NlcyArPSAxCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCi0gICAgICAgIGVsc2U6CisgICAgZGVmIGNhY2hlX2luZm8oKToKKyAgICAgICAgIiIiUmVwb3J0IGNhY2hlIHN0YXRpc3RpY3MiIiIKKyAgICAgICAgd2l0aCBsb2NrOgorICAgICAgICAgICAgcmV0dXJuIF9DYWNoZUluZm8oaGl0cywgbWlzc2VzLCBtYXhzaXplLCBsZW4oY2FjaGUpKQogCi0gICAgICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2RzKToKLSAgICAgICAgICAgICAgICAjIFNpemUgbGltaXRlZCBjYWNoaW5nIHRoYXQgdHJhY2tzIGFjY2Vzc2VzIGJ5IHJlY2VuY3kKLSAgICAgICAgICAgICAgICBub25sb2NhbCByb290LCBoaXRzLCBtaXNzZXMsIGZ1bGwKLSAgICAgICAgICAgICAgICBrZXkgPSBtYWtlX2tleShhcmdzLCBrd2RzLCB0eXBlZCkKLSAgICAgICAgICAgICAgICB3aXRoIGxvY2s6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmsgPSBjYWNoZV9nZXQoa2V5KQotICAgICAgICAgICAgICAgICAgICBpZiBsaW5rIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBNb3ZlIHRoZSBsaW5rIHRvIHRoZSBmcm9udCBvZiB0aGUgY2lyY3VsYXIgcXVldWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtfcHJldiwgbGlua19uZXh0LCBfa2V5LCByZXN1bHQgPSBsaW5rCi0gICAgICAgICAgICAgICAgICAgICAgICBsaW5rX3ByZXZbTkVYVF0gPSBsaW5rX25leHQKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtfbmV4dFtQUkVWXSA9IGxpbmtfcHJldgotICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHJvb3RbUFJFVl0KLSAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RbTkVYVF0gPSByb290W1BSRVZdID0gbGluawotICAgICAgICAgICAgICAgICAgICAgICAgbGlua1tQUkVWXSA9IGxhc3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtbTkVYVF0gPSByb290Ci0gICAgICAgICAgICAgICAgICAgICAgICBoaXRzICs9IDEKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgICAgICAgICByZXN1bHQgPSB1c2VyX2Z1bmN0aW9uKCphcmdzLCAqKmt3ZHMpCi0gICAgICAgICAgICAgICAgd2l0aCBsb2NrOgotICAgICAgICAgICAgICAgICAgICBpZiBrZXkgaW4gY2FjaGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIEdldHRpbmcgaGVyZSBtZWFucyB0aGF0IHRoaXMgc2FtZSBrZXkgd2FzIGFkZGVkIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBjYWNoZSB3aGlsZSB0aGUgbG9jayB3YXMgcmVsZWFzZWQuICBTaW5jZSB0aGUgbGluawotICAgICAgICAgICAgICAgICAgICAgICAgIyB1cGRhdGUgaXMgYWxyZWFkeSBkb25lLCB3ZSBuZWVkIG9ubHkgcmV0dXJuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBjb21wdXRlZCByZXN1bHQgYW5kIHVwZGF0ZSB0aGUgY291bnQgb2YgbWlzc2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgICAgICBlbGlmIGZ1bGw6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFVzZSB0aGUgb2xkIHJvb3QgdG8gc3RvcmUgdGhlIG5ldyBrZXkgYW5kIHJlc3VsdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIG9sZHJvb3QgPSByb290Ci0gICAgICAgICAgICAgICAgICAgICAgICBvbGRyb290W0tFWV0gPSBrZXkKLSAgICAgICAgICAgICAgICAgICAgICAgIG9sZHJvb3RbUkVTVUxUXSA9IHJlc3VsdAotICAgICAgICAgICAgICAgICAgICAgICAgIyBFbXB0eSB0aGUgb2xkZXN0IGxpbmsgYW5kIG1ha2UgaXQgdGhlIG5ldyByb290LgotICAgICAgICAgICAgICAgICAgICAgICAgIyBLZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBvbGQga2V5IGFuZCBvbGQgcmVzdWx0IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHByZXZlbnQgdGhlaXIgcmVmIGNvdW50cyBmcm9tIGdvaW5nIHRvIHplcm8gZHVyaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIyB1cGRhdGUuIFRoYXQgd2lsbCBwcmV2ZW50IHBvdGVudGlhbGx5IGFyYml0cmFyeSBvYmplY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICMgY2xlYW4tdXAgY29kZSAoaS5lLiBfX2RlbF9fKSBmcm9tIHJ1bm5pbmcgd2hpbGUgd2UncmUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgc3RpbGwgYWRqdXN0aW5nIHRoZSBsaW5rcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QgPSBvbGRyb290W05FWFRdCi0gICAgICAgICAgICAgICAgICAgICAgICBvbGRrZXkgPSByb290W0tFWV0KLSAgICAgICAgICAgICAgICAgICAgICAgIG9sZHJlc3VsdCA9IHJvb3RbUkVTVUxUXQotICAgICAgICAgICAgICAgICAgICAgICAgcm9vdFtLRVldID0gcm9vdFtSRVNVTFRdID0gTm9uZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3cgdXBkYXRlIHRoZSBjYWNoZSBkaWN0aW9uYXJ5LgotICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGNhY2hlW29sZGtleV0KLSAgICAgICAgICAgICAgICAgICAgICAgICMgU2F2ZSB0aGUgcG90ZW50aWFsbHkgcmVlbnRyYW50IGNhY2hlW2tleV0gYXNzaWdubWVudAotICAgICAgICAgICAgICAgICAgICAgICAgIyBmb3IgbGFzdCwgYWZ0ZXIgdGhlIHJvb3QgYW5kIGxpbmtzIGhhdmUgYmVlbiBwdXQgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICMgYSBjb25zaXN0ZW50IHN0YXRlLgotICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVba2V5XSA9IG9sZHJvb3QKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgUHV0IHJlc3VsdCBpbiBhIG5ldyBsaW5rIGF0IHRoZSBmcm9udCBvZiB0aGUgcXVldWUuCi0gICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gcm9vdFtQUkVWXQotICAgICAgICAgICAgICAgICAgICAgICAgbGluayA9IFtsYXN0LCByb290LCBrZXksIHJlc3VsdF0KLSAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RbTkVYVF0gPSByb290W1BSRVZdID0gY2FjaGVba2V5XSA9IGxpbmsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgPSAobGVuKGNhY2hlKSA+PSBtYXhzaXplKQotICAgICAgICAgICAgICAgICAgICBtaXNzZXMgKz0gMQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICBkZWYgY2FjaGVfY2xlYXIoKToKKyAgICAgICAgIiIiQ2xlYXIgdGhlIGNhY2hlIGFuZCBjYWNoZSBzdGF0aXN0aWNzIiIiCisgICAgICAgIG5vbmxvY2FsIGhpdHMsIG1pc3NlcywgZnVsbAorICAgICAgICB3aXRoIGxvY2s6CisgICAgICAgICAgICBjYWNoZS5jbGVhcigpCisgICAgICAgICAgICByb290WzpdID0gW3Jvb3QsIHJvb3QsIE5vbmUsIE5vbmVdCisgICAgICAgICAgICBoaXRzID0gbWlzc2VzID0gMAorICAgICAgICAgICAgZnVsbCA9IEZhbHNlCiAKLSAgICAgICAgZGVmIGNhY2hlX2luZm8oKToKLSAgICAgICAgICAgICIiIlJlcG9ydCBjYWNoZSBzdGF0aXN0aWNzIiIiCi0gICAgICAgICAgICB3aXRoIGxvY2s6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9DYWNoZUluZm8oaGl0cywgbWlzc2VzLCBtYXhzaXplLCBsZW4oY2FjaGUpKQorICAgIHdyYXBwZXIuY2FjaGVfaW5mbyA9IGNhY2hlX2luZm8KKyAgICB3cmFwcGVyLmNhY2hlX2NsZWFyID0gY2FjaGVfY2xlYXIKKyAgICByZXR1cm4gd3JhcHBlcgogCi0gICAgICAgIGRlZiBjYWNoZV9jbGVhcigpOgotICAgICAgICAgICAgIiIiQ2xlYXIgdGhlIGNhY2hlIGFuZCBjYWNoZSBzdGF0aXN0aWNzIiIiCi0gICAgICAgICAgICBub25sb2NhbCBoaXRzLCBtaXNzZXMsIGZ1bGwKLSAgICAgICAgICAgIHdpdGggbG9jazoKLSAgICAgICAgICAgICAgICBjYWNoZS5jbGVhcigpCi0gICAgICAgICAgICAgICAgcm9vdFs6XSA9IFtyb290LCByb290LCBOb25lLCBOb25lXQotICAgICAgICAgICAgICAgIGhpdHMgPSBtaXNzZXMgPSAwCi0gICAgICAgICAgICAgICAgZnVsbCA9IEZhbHNlCi0KLSAgICAgICAgd3JhcHBlci5jYWNoZV9pbmZvID0gY2FjaGVfaW5mbwotICAgICAgICB3cmFwcGVyLmNhY2hlX2NsZWFyID0gY2FjaGVfY2xlYXIKLSAgICAgICAgcmV0dXJuIHVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsIHVzZXJfZnVuY3Rpb24pCi0KLSAgICByZXR1cm4gZGVjb3JhdGluZ19mdW5jdGlvbgordHJ5OgorICAgIGZyb20gX2Z1bmN0b29scyBpbXBvcnQgX2xydV9jYWNoZV93cmFwcGVyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcwogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9MaWIvZ2VuZXJpY3BhdGgucHkgYi9MaWIvZ2VuZXJpY3BhdGgucHkKaW5kZXggY2E0YTUxMC4uNjcxNDA2MSAxMDA2NDQKLS0tIGEvTGliL2dlbmVyaWNwYXRoLnB5CisrKyBiL0xpYi9nZW5lcmljcGF0aC5weQpAQCAtMTMwLDMgKzEzMCwxNiBAQAogICAgICAgICAgICAgZmlsZW5hbWVJbmRleCArPSAxCiAKICAgICByZXR1cm4gcCwgcFs6MF0KKworZGVmIF9jaGVja19hcmdfdHlwZXMoZnVuY25hbWUsICphcmdzKToKKyAgICBoYXNzdHIgPSBoYXNieXRlcyA9IEZhbHNlCisgICAgZm9yIHMgaW4gYXJnczoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzLCBzdHIpOgorICAgICAgICAgICAgaGFzc3RyID0gVHJ1ZQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UocywgYnl0ZXMpOgorICAgICAgICAgICAgaGFzYnl0ZXMgPSBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzKCkgYXJndW1lbnQgbXVzdCBiZSBzdHIgb3IgYnl0ZXMsIG5vdCAlcicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jbmFtZSwgcy5fX2NsYXNzX18uX19uYW1lX18pKSBmcm9tIE5vbmUKKyAgICBpZiBoYXNzdHIgYW5kIGhhc2J5dGVzOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbid0IG1peCBzdHJpbmdzIGFuZCBieXRlcyBpbiBwYXRoIGNvbXBvbmVudHMiKSBmcm9tIE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9nZXRwYXNzLnB5IGIvTGliL2dldHBhc3MucHkKaW5kZXggN2M0ZTk3Ni4uYmU1MTEyMSAxMDA2NDQKLS0tIGEvTGliL2dldHBhc3MucHkKKysrIGIvTGliL2dldHBhc3MucHkKQEAgLTk5LDcgKzk5LDcgQEAKICAgICAiIiJQcm9tcHQgZm9yIHBhc3N3b3JkIHdpdGggZWNobyBvZmYsIHVzaW5nIFdpbmRvd3MgZ2V0Y2goKS4iIiIKICAgICBpZiBzeXMuc3RkaW4gaXMgbm90IHN5cy5fX3N0ZGluX186CiAgICAgICAgIHJldHVybiBmYWxsYmFja19nZXRwYXNzKHByb21wdCwgc3RyZWFtKQotICAgIGltcG9ydCBtc3ZjcnQKKwogICAgIGZvciBjIGluIHByb21wdDoKICAgICAgICAgbXN2Y3J0LnB1dHdjaChjKQogICAgIHB3ID0gIiIKZGlmZiAtLWdpdCBhL0xpYi9nZXR0ZXh0LnB5IGIvTGliL2dldHRleHQucHkKaW5kZXggOGNhZjFkMS4uMTAxMzc4ZiAxMDA2NDQKLS0tIGEvTGliL2dldHRleHQucHkKKysrIGIvTGliL2dldHRleHQucHkKQEAgLTIyNyw2ICsyMjcsMTMgQEAKICAgICBMRV9NQUdJQyA9IDB4OTUwNDEyZGUKICAgICBCRV9NQUdJQyA9IDB4ZGUxMjA0OTUKIAorICAgICMgQWNjZXB0YWJsZSAubW8gdmVyc2lvbnMKKyAgICBWRVJTSU9OUyA9ICgwLCAxKQorCisgICAgZGVmIF9nZXRfdmVyc2lvbnMoc2VsZiwgdmVyc2lvbik6CisgICAgICAgICIiIlJldHVybnMgYSB0dXBsZSBvZiBtYWpvciB2ZXJzaW9uLCBtaW5vciB2ZXJzaW9uIiIiCisgICAgICAgIHJldHVybiAodmVyc2lvbiA+PiAxNiwgdmVyc2lvbiAmIDB4ZmZmZikKKwogICAgIGRlZiBfcGFyc2Uoc2VsZiwgZnApOgogICAgICAgICAiIiJPdmVycmlkZSB0aGlzIG1ldGhvZCB0byBzdXBwb3J0IGFsdGVybmF0aXZlIC5tbyBmb3JtYXRzLiIiIgogICAgICAgICB1bnBhY2sgPSBzdHJ1Y3QudW5wYWNrCkBAIC0yNDcsNiArMjU0LDEyIEBACiAgICAgICAgICAgICBpaSA9ICc+SUknCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKDAsICdCYWQgbWFnaWMgbnVtYmVyJywgZmlsZW5hbWUpCisKKyAgICAgICAgbWFqb3JfdmVyc2lvbiwgbWlub3JfdmVyc2lvbiA9IHNlbGYuX2dldF92ZXJzaW9ucyh2ZXJzaW9uKQorCisgICAgICAgIGlmIG1ham9yX3ZlcnNpb24gbm90IGluIHNlbGYuVkVSU0lPTlM6CisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKDAsICdCYWQgdmVyc2lvbiBudW1iZXIgJyArIHN0cihtYWpvcl92ZXJzaW9uKSwgZmlsZW5hbWUpCisKICAgICAgICAgIyBOb3cgcHV0IGFsbCBtZXNzYWdlcyBmcm9tIHRoZSAubW8gZmlsZSBidWZmZXIgaW50byB0aGUgY2F0YWxvZwogICAgICAgICAjIGRpY3Rpb25hcnkuCiAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIG1zZ2NvdW50KToKZGlmZiAtLWdpdCBhL0xpYi9nbG9iLnB5IGIvTGliL2dsb2IucHkKaW5kZXggZDZlY2EyNC4uMTYzMzBkOCAxMDA2NDQKLS0tIGEvTGliL2dsb2IucHkKKysrIGIvTGliL2dsb2IucHkKQEAgLTQsOSArNCw5IEBACiBpbXBvcnQgcmUKIGltcG9ydCBmbm1hdGNoCiAKLV9fYWxsX18gPSBbImdsb2IiLCAiaWdsb2IiXQorX19hbGxfXyA9IFsiZ2xvYiIsICJpZ2xvYiIsICJlc2NhcGUiXQogCi1kZWYgZ2xvYihwYXRobmFtZSk6CitkZWYgZ2xvYihwYXRobmFtZSwgKiwgcmVjdXJzaXZlPUZhbHNlKToKICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIHBhdGhzIG1hdGNoaW5nIGEgcGF0aG5hbWUgcGF0dGVybi4KIAogICAgIFRoZSBwYXR0ZXJuIG1heSBjb250YWluIHNpbXBsZSBzaGVsbC1zdHlsZSB3aWxkY2FyZHMgYSBsYQpAQCAtMTQsMTAgKzE0LDEyIEBACiAgICAgZG90IGFyZSBzcGVjaWFsIGNhc2VzIHRoYXQgYXJlIG5vdCBtYXRjaGVkIGJ5ICcqJyBhbmQgJz8nCiAgICAgcGF0dGVybnMuCiAKKyAgICBJZiByZWN1cnNpdmUgaXMgdHJ1ZSwgdGhlIHBhdHRlcm4gJyoqJyB3aWxsIG1hdGNoIGFueSBmaWxlcyBhbmQKKyAgICB6ZXJvIG9yIG1vcmUgZGlyZWN0b3JpZXMgYW5kIHN1YmRpcmVjdG9yaWVzLgogICAgICIiIgotICAgIHJldHVybiBsaXN0KGlnbG9iKHBhdGhuYW1lKSkKKyAgICByZXR1cm4gbGlzdChpZ2xvYihwYXRobmFtZSwgcmVjdXJzaXZlPXJlY3Vyc2l2ZSkpCiAKLWRlZiBpZ2xvYihwYXRobmFtZSk6CitkZWYgaWdsb2IocGF0aG5hbWUsICosIHJlY3Vyc2l2ZT1GYWxzZSk6CiAgICAgIiIiUmV0dXJuIGFuIGl0ZXJhdG9yIHdoaWNoIHlpZWxkcyB0aGUgcGF0aHMgbWF0Y2hpbmcgYSBwYXRobmFtZSBwYXR0ZXJuLgogCiAgICAgVGhlIHBhdHRlcm4gbWF5IGNvbnRhaW4gc2ltcGxlIHNoZWxsLXN0eWxlIHdpbGRjYXJkcyBhIGxhCkBAIC0yNSw3ICsyNywxNiBAQAogICAgIGRvdCBhcmUgc3BlY2lhbCBjYXNlcyB0aGF0IGFyZSBub3QgbWF0Y2hlZCBieSAnKicgYW5kICc/JwogICAgIHBhdHRlcm5zLgogCisgICAgSWYgcmVjdXJzaXZlIGlzIHRydWUsIHRoZSBwYXR0ZXJuICcqKicgd2lsbCBtYXRjaCBhbnkgZmlsZXMgYW5kCisgICAgemVybyBvciBtb3JlIGRpcmVjdG9yaWVzIGFuZCBzdWJkaXJlY3Rvcmllcy4KICAgICAiIiIKKyAgICBpdCA9IF9pZ2xvYihwYXRobmFtZSwgcmVjdXJzaXZlKQorICAgIGlmIHJlY3Vyc2l2ZSBhbmQgX2lzcmVjdXJzaXZlKHBhdGhuYW1lKToKKyAgICAgICAgcyA9IG5leHQoaXQpICAjIHNraXAgZW1wdHkgc3RyaW5nCisgICAgICAgIGFzc2VydCBub3QgcworICAgIHJldHVybiBpdAorCitkZWYgX2lnbG9iKHBhdGhuYW1lLCByZWN1cnNpdmUpOgogICAgIGRpcm5hbWUsIGJhc2VuYW1lID0gb3MucGF0aC5zcGxpdChwYXRobmFtZSkKICAgICBpZiBub3QgaGFzX21hZ2ljKHBhdGhuYW1lKToKICAgICAgICAgaWYgYmFzZW5hbWU6CkBAIC0zNywxNyArNDgsMjMgQEAKICAgICAgICAgICAgICAgICB5aWVsZCBwYXRobmFtZQogICAgICAgICByZXR1cm4KICAgICBpZiBub3QgZGlybmFtZToKLSAgICAgICAgeWllbGQgZnJvbSBnbG9iMShOb25lLCBiYXNlbmFtZSkKKyAgICAgICAgaWYgcmVjdXJzaXZlIGFuZCBfaXNyZWN1cnNpdmUoYmFzZW5hbWUpOgorICAgICAgICAgICAgeWllbGQgZnJvbSBnbG9iMihkaXJuYW1lLCBiYXNlbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZ2xvYjEoZGlybmFtZSwgYmFzZW5hbWUpCiAgICAgICAgIHJldHVybgogICAgICMgYG9zLnBhdGguc3BsaXQoKWAgcmV0dXJucyB0aGUgYXJndW1lbnQgaXRzZWxmIGFzIGEgZGlybmFtZSBpZiBpdCBpcyBhCiAgICAgIyBkcml2ZSBvciBVTkMgcGF0aC4gIFByZXZlbnQgYW4gaW5maW5pdGUgcmVjdXJzaW9uIGlmIGEgZHJpdmUgb3IgVU5DIHBhdGgKICAgICAjIGNvbnRhaW5zIG1hZ2ljIGNoYXJhY3RlcnMgKGkuZS4gcidcXD9cQzonKS4KICAgICBpZiBkaXJuYW1lICE9IHBhdGhuYW1lIGFuZCBoYXNfbWFnaWMoZGlybmFtZSk6Ci0gICAgICAgIGRpcnMgPSBpZ2xvYihkaXJuYW1lKQorICAgICAgICBkaXJzID0gX2lnbG9iKGRpcm5hbWUsIHJlY3Vyc2l2ZSkKICAgICBlbHNlOgogICAgICAgICBkaXJzID0gW2Rpcm5hbWVdCiAgICAgaWYgaGFzX21hZ2ljKGJhc2VuYW1lKToKLSAgICAgICAgZ2xvYl9pbl9kaXIgPSBnbG9iMQorICAgICAgICBpZiByZWN1cnNpdmUgYW5kIF9pc3JlY3Vyc2l2ZShiYXNlbmFtZSk6CisgICAgICAgICAgICBnbG9iX2luX2RpciA9IGdsb2IyCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBnbG9iX2luX2RpciA9IGdsb2IxCiAgICAgZWxzZToKICAgICAgICAgZ2xvYl9pbl9kaXIgPSBnbG9iMAogICAgIGZvciBkaXJuYW1lIGluIGRpcnM6CkBAIC04Myw2ICsxMDAsMzIgQEAKICAgICAgICAgICAgIHJldHVybiBbYmFzZW5hbWVdCiAgICAgcmV0dXJuIFtdCiAKKyMgVGhpcyBoZWxwZXIgZnVuY3Rpb24gcmVjdXJzaXZlbHkgeWllbGRzIHJlbGF0aXZlIHBhdGhuYW1lcyBpbnNpZGUgYSBsaXRlcmFsCisjIGRpcmVjdG9yeS4KKworZGVmIGdsb2IyKGRpcm5hbWUsIHBhdHRlcm4pOgorICAgIGFzc2VydCBfaXNyZWN1cnNpdmUocGF0dGVybikKKyAgICB5aWVsZCBwYXR0ZXJuWzowXQorICAgIHlpZWxkIGZyb20gX3JsaXN0ZGlyKGRpcm5hbWUpCisKKyMgUmVjdXJzaXZlbHkgeWllbGRzIHJlbGF0aXZlIHBhdGhuYW1lcyBpbnNpZGUgYSBsaXRlcmFsIGRpcmVjdG9yeS4KK2RlZiBfcmxpc3RkaXIoZGlybmFtZSk6CisgICAgaWYgbm90IGRpcm5hbWU6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZGlybmFtZSwgYnl0ZXMpOgorICAgICAgICAgICAgZGlybmFtZSA9IGJ5dGVzKG9zLmN1cmRpciwgJ0FTQ0lJJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5jdXJkaXIKKyAgICB0cnk6CisgICAgICAgIG5hbWVzID0gb3MubGlzdGRpcihkaXJuYW1lKQorICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgcmV0dXJuCisgICAgZm9yIHggaW4gbmFtZXM6CisgICAgICAgIGlmIG5vdCBfaXNoaWRkZW4oeCk6CisgICAgICAgICAgICB5aWVsZCB4CisgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIHgpIGlmIGRpcm5hbWUgZWxzZSB4CisgICAgICAgICAgICBmb3IgeSBpbiBfcmxpc3RkaXIocGF0aCk6CisgICAgICAgICAgICAgICAgeWllbGQgb3MucGF0aC5qb2luKHgsIHkpCisKIAogbWFnaWNfY2hlY2sgPSByZS5jb21waWxlKCcoWyo/W10pJykKIG1hZ2ljX2NoZWNrX2J5dGVzID0gcmUuY29tcGlsZShiJyhbKj9bXSknKQpAQCAtOTcsNiArMTQwLDEyIEBACiBkZWYgX2lzaGlkZGVuKHBhdGgpOgogICAgIHJldHVybiBwYXRoWzBdIGluICgnLicsIGInLidbMF0pCiAKK2RlZiBfaXNyZWN1cnNpdmUocGF0dGVybik6CisgICAgaWYgaXNpbnN0YW5jZShwYXR0ZXJuLCBieXRlcyk6CisgICAgICAgIHJldHVybiBwYXR0ZXJuID09IGInKionCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHBhdHRlcm4gPT0gJyoqJworCiBkZWYgZXNjYXBlKHBhdGhuYW1lKToKICAgICAiIiJFc2NhcGUgYWxsIHNwZWNpYWwgY2hhcmFjdGVycy4KICAgICAiIiIKZGlmZiAtLWdpdCBhL0xpYi9nemlwLnB5IGIvTGliL2d6aXAucHkKaW5kZXggN2FkMDBlMS4uM2EyYjMyMiAxMDA2NDQKLS0tIGEvTGliL2d6aXAucHkKKysrIGIvTGliL2d6aXAucHkKQEAgLTksNiArOSw3IEBACiBpbXBvcnQgemxpYgogaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgaW8KK2ltcG9ydCBfY29tcHJlc3Npb24KIAogX19hbGxfXyA9IFsiR3ppcEZpbGUiLCAib3BlbiIsICJjb21wcmVzcyIsICJkZWNvbXByZXNzIl0KIApAQCAtODksNDkgKzkwLDM1IEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyW3JlYWQ6XSArIFwKICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbGUucmVhZChzaXplLXNlbGYuX2xlbmd0aCtyZWFkKQogCi0gICAgZGVmIHByZXBlbmQoc2VsZiwgcHJlcGVuZD1iJycsIHJlYWRwcmV2aW91cz1GYWxzZSk6CisgICAgZGVmIHByZXBlbmQoc2VsZiwgcHJlcGVuZD1iJycpOgogICAgICAgICBpZiBzZWxmLl9yZWFkIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBwcmVwZW5kCi0gICAgICAgIGVsaWYgcmVhZHByZXZpb3VzIGFuZCBsZW4ocHJlcGVuZCkgPD0gc2VsZi5fcmVhZDoKKyAgICAgICAgZWxzZTogICMgQXNzdW1lIGRhdGEgd2FzIHJlYWQgc2luY2UgdGhlIGxhc3QgcHJlcGVuZCgpIGNhbGwKICAgICAgICAgICAgIHNlbGYuX3JlYWQgLT0gbGVuKHByZXBlbmQpCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltzZWxmLl9yZWFkOl0gKyBwcmVwZW5kCiAgICAgICAgIHNlbGYuX2xlbmd0aCA9IGxlbihzZWxmLl9idWZmZXIpCiAgICAgICAgIHNlbGYuX3JlYWQgPSAwCiAKLSAgICBkZWYgdW51c2VkKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9yZWFkIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gYicnCi0gICAgICAgIHJldHVybiBzZWxmLl9idWZmZXJbc2VsZi5fcmVhZDpdCi0KLSAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQsIHdoZW5jZT0wKToKLSAgICAgICAgIyBUaGlzIGlzIG9ubHkgZXZlciBjYWxsZWQgd2l0aCBvZmZzZXQ9d2hlbmNlPTAKLSAgICAgICAgaWYgd2hlbmNlID09IDEgYW5kIHNlbGYuX3JlYWQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiAwIDw9IG9mZnNldCArIHNlbGYuX3JlYWQgPD0gc2VsZi5fbGVuZ3RoOgotICAgICAgICAgICAgICAgIHNlbGYuX3JlYWQgKz0gb2Zmc2V0Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG9mZnNldCArPSBzZWxmLl9sZW5ndGggLSBzZWxmLl9yZWFkCisgICAgZGVmIHNlZWsoc2VsZiwgb2ZmKToKICAgICAgICAgc2VsZi5fcmVhZCA9IE5vbmUKICAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQotICAgICAgICByZXR1cm4gc2VsZi5maWxlLnNlZWsob2Zmc2V0LCB3aGVuY2UpCisgICAgICAgIHJldHVybiBzZWxmLmZpbGUuc2VlayhvZmYpCiAKLSAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYuZmlsZSwgbmFtZSkKKyAgICBkZWYgc2Vla2FibGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlICAjIEFsbG93cyBmYXN0LWZvcndhcmRpbmcgZXZlbiBpbiB1bnNlZWthYmxlIHN0cmVhbXMKIAotCi1jbGFzcyBHemlwRmlsZShpby5CdWZmZXJlZElPQmFzZSk6CitjbGFzcyBHemlwRmlsZShfY29tcHJlc3Npb24uQmFzZVN0cmVhbSk6CiAgICAgIiIiVGhlIEd6aXBGaWxlIGNsYXNzIHNpbXVsYXRlcyBtb3N0IG9mIHRoZSBtZXRob2RzIG9mIGEgZmlsZSBvYmplY3Qgd2l0aAotICAgIHRoZSBleGNlcHRpb24gb2YgdGhlIHJlYWRpbnRvKCkgYW5kIHRydW5jYXRlKCkgbWV0aG9kcy4KKyAgICB0aGUgZXhjZXB0aW9uIG9mIHRoZSB0cnVuY2F0ZSgpIG1ldGhvZC4KIAogICAgIFRoaXMgY2xhc3Mgb25seSBzdXBwb3J0cyBvcGVuaW5nIGZpbGVzIGluIGJpbmFyeSBtb2RlLiBJZiB5b3UgbmVlZCB0byBvcGVuIGEKICAgICBjb21wcmVzc2VkIGZpbGUgaW4gdGV4dCBtb2RlLCB1c2UgdGhlIGd6aXAub3BlbigpIGZ1bmN0aW9uLgogCiAgICAgIiIiCiAKKyAgICAjIE92ZXJyaWRkZW4gd2l0aCBpbnRlcm5hbCBmaWxlIG9iamVjdCB0byBiZSBjbG9zZWQsIGlmIG9ubHkgYSBmaWxlbmFtZQorICAgICMgaXMgcGFzc2VkIGluCiAgICAgbXlmaWxlb2JqID0gTm9uZQotICAgIG1heF9yZWFkX2NodW5rID0gMTAgKiAxMDI0ICogMTAyNCAgICMgMTBNYgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lPU5vbmUsIG1vZGU9Tm9uZSwKICAgICAgICAgICAgICAgICAgY29tcHJlc3NsZXZlbD05LCBmaWxlb2JqPU5vbmUsIG10aW1lPU5vbmUpOgpAQCAtMTYzLDEzICsxNTAsOCBAQAogICAgICAgICBhdCBhbGwuIFRoZSBkZWZhdWx0IGlzIDkuCiAKICAgICAgICAgVGhlIG10aW1lIGFyZ3VtZW50IGlzIGFuIG9wdGlvbmFsIG51bWVyaWMgdGltZXN0YW1wIHRvIGJlIHdyaXR0ZW4KLSAgICAgICAgdG8gdGhlIHN0cmVhbSB3aGVuIGNvbXByZXNzaW5nLiAgQWxsIGd6aXAgY29tcHJlc3NlZCBzdHJlYW1zCi0gICAgICAgIGFyZSByZXF1aXJlZCB0byBjb250YWluIGEgdGltZXN0YW1wLiAgSWYgb21pdHRlZCBvciBOb25lLCB0aGUKLSAgICAgICAgY3VycmVudCB0aW1lIGlzIHVzZWQuICBUaGlzIG1vZHVsZSBpZ25vcmVzIHRoZSB0aW1lc3RhbXAgd2hlbgotICAgICAgICBkZWNvbXByZXNzaW5nOyBob3dldmVyLCBzb21lIHByb2dyYW1zLCBzdWNoIGFzIGd1bnppcCwgbWFrZSB1c2UKLSAgICAgICAgb2YgaXQuICBUaGUgZm9ybWF0IG9mIHRoZSB0aW1lc3RhbXAgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUKLSAgICAgICAgcmV0dXJuIHZhbHVlIG9mIHRpbWUudGltZSgpIGFuZCBvZiB0aGUgc3RfbXRpbWUgbWVtYmVyIG9mIHRoZQotICAgICAgICBvYmplY3QgcmV0dXJuZWQgYnkgb3Muc3RhdCgpLgorICAgICAgICB0byB0aGUgbGFzdCBtb2RpZmljYXRpb24gdGltZSBmaWVsZCBpbiB0aGUgc3RyZWFtIHdoZW4gY29tcHJlc3NpbmcuCisgICAgICAgIElmIG9taXR0ZWQgb3IgTm9uZSwgdGhlIGN1cnJlbnQgdGltZSBpcyB1c2VkLgogCiAgICAgICAgICIiIgogCkBAIC0xODgsMTggKzE3MCw5IEBACiAKICAgICAgICAgaWYgbW9kZS5zdGFydHN3aXRoKCdyJyk6CiAgICAgICAgICAgICBzZWxmLm1vZGUgPSBSRUFECi0gICAgICAgICAgICAjIFNldCBmbGFnIGluZGljYXRpbmcgc3RhcnQgb2YgYSBuZXcgbWVtYmVyCi0gICAgICAgICAgICBzZWxmLl9uZXdfbWVtYmVyID0gVHJ1ZQotICAgICAgICAgICAgIyBCdWZmZXIgZGF0YSByZWFkIGZyb20gZ3ppcCBmaWxlLiBleHRyYXN0YXJ0IGlzIG9mZnNldCBpbgotICAgICAgICAgICAgIyBzdHJlYW0gd2hlcmUgYnVmZmVyIHN0YXJ0cy4gZXh0cmFzaXplIGlzIG51bWJlciBvZgotICAgICAgICAgICAgIyBieXRlcyByZW1haW5pbmcgaW4gYnVmZmVyIGZyb20gY3VycmVudCBzdHJlYW0gcG9zaXRpb24uCi0gICAgICAgICAgICBzZWxmLmV4dHJhYnVmID0gYiIiCi0gICAgICAgICAgICBzZWxmLmV4dHJhc2l6ZSA9IDAKLSAgICAgICAgICAgIHNlbGYuZXh0cmFzdGFydCA9IDAKKyAgICAgICAgICAgIHJhdyA9IF9HemlwUmVhZGVyKGZpbGVvYmopCisgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBpby5CdWZmZXJlZFJlYWRlcihyYXcpCiAgICAgICAgICAgICBzZWxmLm5hbWUgPSBmaWxlbmFtZQotICAgICAgICAgICAgIyBTdGFydHMgc21hbGwsIHNjYWxlcyBleHBvbmVudGlhbGx5Ci0gICAgICAgICAgICBzZWxmLm1pbl9yZWFkc2l6ZSA9IDEwMAotICAgICAgICAgICAgZmlsZW9iaiA9IF9QYWRkZWRGaWxlKGZpbGVvYmopCiAKICAgICAgICAgZWxpZiBtb2RlLnN0YXJ0c3dpdGgoKCd3JywgJ2EnLCAneCcpKToKICAgICAgICAgICAgIHNlbGYubW9kZSA9IFdSSVRFCkBAIC0yMDksMTIgKzE4MiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXpsaWIuTUFYX1dCSVRTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemxpYi5ERUZfTUVNX0xFVkVMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkKKyAgICAgICAgICAgIHNlbGYuX3dyaXRlX210aW1lID0gbXRpbWUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogeyFyfSIuZm9ybWF0KG1vZGUpKQogCiAgICAgICAgIHNlbGYuZmlsZW9iaiA9IGZpbGVvYmoKLSAgICAgICAgc2VsZi5vZmZzZXQgPSAwCi0gICAgICAgIHNlbGYubXRpbWUgPSBtdGltZQogCiAgICAgICAgIGlmIHNlbGYubW9kZSA9PSBXUklURToKICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2d6aXBfaGVhZGVyKCkKQEAgLTIyNywyNiArMTk5LDIyIEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZi5uYW1lICsgIi5neiIKICAgICAgICAgcmV0dXJuIHNlbGYubmFtZQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIG10aW1lKHNlbGYpOgorICAgICAgICAiIiJMYXN0IG1vZGlmaWNhdGlvbiB0aW1lIHJlYWQgZnJvbSBzdHJlYW0sIG9yIE5vbmUiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yYXcuX2xhc3RfbXRpbWUKKwogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgZmlsZW9iaiA9IHNlbGYuZmlsZW9iagotICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVvYmosIF9QYWRkZWRGaWxlKToKLSAgICAgICAgICAgIGZpbGVvYmogPSBmaWxlb2JqLmZpbGUKLSAgICAgICAgcyA9IHJlcHIoZmlsZW9iaikKKyAgICAgICAgcyA9IHJlcHIoc2VsZi5maWxlb2JqKQogICAgICAgICByZXR1cm4gJzxnemlwICcgKyBzWzE6LTFdICsgJyAnICsgaGV4KGlkKHNlbGYpKSArICc+JwogCi0gICAgZGVmIF9jaGVja19jbG9zZWQoc2VsZik6Ci0gICAgICAgICIiIlJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgdGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QgaGFzIGJlZW4gY2xvc2VkLgotCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0kvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUuJykKLQogICAgIGRlZiBfaW5pdF93cml0ZShzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgIHNlbGYubmFtZSA9IGZpbGVuYW1lCi0gICAgICAgIHNlbGYuY3JjID0gemxpYi5jcmMzMihiIiIpICYgMHhmZmZmZmZmZgorICAgICAgICBzZWxmLmNyYyA9IHpsaWIuY3JjMzIoYiIiKQogICAgICAgICBzZWxmLnNpemUgPSAwCiAgICAgICAgIHNlbGYud3JpdGVidWYgPSBbXQogICAgICAgICBzZWxmLmJ1ZnNpemUgPSAwCisgICAgICAgIHNlbGYub2Zmc2V0ID0gMCAgIyBDdXJyZW50IGZpbGUgb2Zmc2V0IGZvciBzZWVrKCksIHRlbGwoKSwgZXRjCiAKICAgICBkZWYgX3dyaXRlX2d6aXBfaGVhZGVyKHNlbGYpOgogICAgICAgICBzZWxmLmZpbGVvYmoud3JpdGUoYidcMDM3XDIxMycpICAgICAgICAgICAgICMgbWFnaWMgaGVhZGVyCkBAIC0yNjUsNyArMjMzLDcgQEAKICAgICAgICAgaWYgZm5hbWU6CiAgICAgICAgICAgICBmbGFncyA9IEZOQU1FCiAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShjaHIoZmxhZ3MpLmVuY29kZSgnbGF0aW4tMScpKQotICAgICAgICBtdGltZSA9IHNlbGYubXRpbWUKKyAgICAgICAgbXRpbWUgPSBzZWxmLl93cml0ZV9tdGltZQogICAgICAgICBpZiBtdGltZSBpcyBOb25lOgogICAgICAgICAgICAgbXRpbWUgPSB0aW1lLnRpbWUoKQogICAgICAgICB3cml0ZTMydShzZWxmLmZpbGVvYmosIGludChtdGltZSkpCkBAIC0yNzQsNTkgKzI0Miw4IEBACiAgICAgICAgIGlmIGZuYW1lOgogICAgICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKGZuYW1lICsgYidcMDAwJykKIAotICAgIGRlZiBfaW5pdF9yZWFkKHNlbGYpOgotICAgICAgICBzZWxmLmNyYyA9IHpsaWIuY3JjMzIoYiIiKSAmIDB4ZmZmZmZmZmYKLSAgICAgICAgc2VsZi5zaXplID0gMAotCi0gICAgZGVmIF9yZWFkX2V4YWN0KHNlbGYsIG4pOgotICAgICAgICBkYXRhID0gc2VsZi5maWxlb2JqLnJlYWQobikKLSAgICAgICAgd2hpbGUgbGVuKGRhdGEpIDwgbjoKLSAgICAgICAgICAgIGIgPSBzZWxmLmZpbGVvYmoucmVhZChuIC0gbGVuKGRhdGEpKQotICAgICAgICAgICAgaWYgbm90IGI6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kLW9mLXN0cmVhbSBtYXJrZXIgd2FzIHJlYWNoZWQiKQotICAgICAgICAgICAgZGF0YSArPSBiCi0gICAgICAgIHJldHVybiBkYXRhCi0KLSAgICBkZWYgX3JlYWRfZ3ppcF9oZWFkZXIoc2VsZik6Ci0gICAgICAgIG1hZ2ljID0gc2VsZi5maWxlb2JqLnJlYWQoMikKLSAgICAgICAgaWYgbWFnaWMgPT0gYicnOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgaWYgbWFnaWMgIT0gYidcMDM3XDIxMyc6Ci0gICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdOb3QgYSBnemlwcGVkIGZpbGUnKQotCi0gICAgICAgIG1ldGhvZCwgZmxhZywgc2VsZi5tdGltZSA9IHN0cnVjdC51bnBhY2soIjxCQkl4eCIsIHNlbGYuX3JlYWRfZXhhY3QoOCkpCi0gICAgICAgIGlmIG1ldGhvZCAhPSA4OgotICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QnKQotCi0gICAgICAgIGlmIGZsYWcgJiBGRVhUUkE6Ci0gICAgICAgICAgICAjIFJlYWQgJiBkaXNjYXJkIHRoZSBleHRyYSBmaWVsZCwgaWYgcHJlc2VudAotICAgICAgICAgICAgZXh0cmFfbGVuLCA9IHN0cnVjdC51bnBhY2soIjxIIiwgc2VsZi5fcmVhZF9leGFjdCgyKSkKLSAgICAgICAgICAgIHNlbGYuX3JlYWRfZXhhY3QoZXh0cmFfbGVuKQotICAgICAgICBpZiBmbGFnICYgRk5BTUU6Ci0gICAgICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZpbGVuYW1lCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIHMgPSBzZWxmLmZpbGVvYmoucmVhZCgxKQotICAgICAgICAgICAgICAgIGlmIG5vdCBzIG9yIHM9PWInXDAwMCc6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlmIGZsYWcgJiBGQ09NTUVOVDoKLSAgICAgICAgICAgICMgUmVhZCBhbmQgZGlzY2FyZCBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcgY29udGFpbmluZyBhIGNvbW1lbnQKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgcyA9IHNlbGYuZmlsZW9iai5yZWFkKDEpCi0gICAgICAgICAgICAgICAgaWYgbm90IHMgb3Igcz09YidcMDAwJzoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaWYgZmxhZyAmIEZIQ1JDOgotICAgICAgICAgICAgc2VsZi5fcmVhZF9leGFjdCgyKSAgICAgIyBSZWFkICYgZGlzY2FyZCB0aGUgMTYtYml0IGhlYWRlciBDUkMKLQotICAgICAgICB1bnVzZWQgPSBzZWxmLmZpbGVvYmoudW51c2VkKCkKLSAgICAgICAgaWYgdW51c2VkOgotICAgICAgICAgICAgdW5jb21wcmVzcyA9IHNlbGYuZGVjb21wcmVzcy5kZWNvbXByZXNzKHVudXNlZCkKLSAgICAgICAgICAgIHNlbGYuX2FkZF9yZWFkX2RhdGEodW5jb21wcmVzcykKLSAgICAgICAgcmV0dXJuIFRydWUKLQogICAgIGRlZiB3cml0ZShzZWxmLGRhdGEpOgotICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKICAgICAgICAgaWYgc2VsZi5tb2RlICE9IFdSSVRFOgogICAgICAgICAgICAgaW1wb3J0IGVycm5vCiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKGVycm5vLkVCQURGLCAid3JpdGUoKSBvbiByZWFkLW9ubHkgR3ppcEZpbGUgb2JqZWN0IikKQEAgLTMzNCwxNjYgKzI1MSw0NyBAQAogICAgICAgICBpZiBzZWxmLmZpbGVvYmogaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIndyaXRlKCkgb24gY2xvc2VkIEd6aXBGaWxlIG9iamVjdCIpCiAKLSAgICAgICAgIyBDb252ZXJ0IGRhdGEgdHlwZSBpZiBjYWxsZWQgYnkgaW8uQnVmZmVyZWRXcml0ZXIuCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgbWVtb3J5dmlldyk6Ci0gICAgICAgICAgICBkYXRhID0gZGF0YS50b2J5dGVzKCkKKyAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBieXRlcyk6CisgICAgICAgICAgICBsZW5ndGggPSBsZW4oZGF0YSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgYWNjZXB0IGFueSBkYXRhIHRoYXQgc3VwcG9ydHMgdGhlIGJ1ZmZlciBwcm90b2NvbAorICAgICAgICAgICAgZGF0YSA9IG1lbW9yeXZpZXcoZGF0YSkKKyAgICAgICAgICAgIGxlbmd0aCA9IGRhdGEubmJ5dGVzCiAKLSAgICAgICAgaWYgbGVuKGRhdGEpID4gMDoKKyAgICAgICAgaWYgbGVuZ3RoID4gMDoKICAgICAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShzZWxmLmNvbXByZXNzLmNvbXByZXNzKGRhdGEpKQotICAgICAgICAgICAgc2VsZi5zaXplICs9IGxlbihkYXRhKQotICAgICAgICAgICAgc2VsZi5jcmMgPSB6bGliLmNyYzMyKGRhdGEsIHNlbGYuY3JjKSAmIDB4ZmZmZmZmZmYKLSAgICAgICAgICAgIHNlbGYub2Zmc2V0ICs9IGxlbihkYXRhKQorICAgICAgICAgICAgc2VsZi5zaXplICs9IGxlbmd0aAorICAgICAgICAgICAgc2VsZi5jcmMgPSB6bGliLmNyYzMyKGRhdGEsIHNlbGYuY3JjKQorICAgICAgICAgICAgc2VsZi5vZmZzZXQgKz0gbGVuZ3RoCiAKLSAgICAgICAgcmV0dXJuIGxlbihkYXRhKQorICAgICAgICByZXR1cm4gbGVuZ3RoCiAKICAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKLSAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCiAgICAgICAgIGlmIHNlbGYubW9kZSAhPSBSRUFEOgogICAgICAgICAgICAgaW1wb3J0IGVycm5vCiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKGVycm5vLkVCQURGLCAicmVhZCgpIG9uIHdyaXRlLW9ubHkgR3ppcEZpbGUgb2JqZWN0IikKLQotICAgICAgICBpZiBzZWxmLmV4dHJhc2l6ZSA8PSAwIGFuZCBzZWxmLmZpbGVvYmogaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBiJycKLQotICAgICAgICByZWFkc2l6ZSA9IDEwMjQKLSAgICAgICAgaWYgc2l6ZSA8IDA6ICAgICAgICAjIGdldCB0aGUgd2hvbGUgdGhpbmcKLSAgICAgICAgICAgIHdoaWxlIHNlbGYuX3JlYWQocmVhZHNpemUpOgotICAgICAgICAgICAgICAgIHJlYWRzaXplID0gbWluKHNlbGYubWF4X3JlYWRfY2h1bmssIHJlYWRzaXplICogMikKLSAgICAgICAgICAgIHNpemUgPSBzZWxmLmV4dHJhc2l6ZQotICAgICAgICBlbHNlOiAgICAgICAgICAgICAgICMganVzdCBnZXQgc29tZSBtb3JlIG9mIGl0Ci0gICAgICAgICAgICB3aGlsZSBzaXplID4gc2VsZi5leHRyYXNpemU6Ci0gICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX3JlYWQocmVhZHNpemUpOgotICAgICAgICAgICAgICAgICAgICBpZiBzaXplID4gc2VsZi5leHRyYXNpemU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gc2VsZi5leHRyYXNpemUKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICByZWFkc2l6ZSA9IG1pbihzZWxmLm1heF9yZWFkX2NodW5rLCByZWFkc2l6ZSAqIDIpCi0KLSAgICAgICAgb2Zmc2V0ID0gc2VsZi5vZmZzZXQgLSBzZWxmLmV4dHJhc3RhcnQKLSAgICAgICAgY2h1bmsgPSBzZWxmLmV4dHJhYnVmW29mZnNldDogb2Zmc2V0ICsgc2l6ZV0KLSAgICAgICAgc2VsZi5leHRyYXNpemUgPSBzZWxmLmV4dHJhc2l6ZSAtIHNpemUKLQotICAgICAgICBzZWxmLm9mZnNldCArPSBzaXplCi0gICAgICAgIHJldHVybiBjaHVuaworICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnJlYWQoc2l6ZSkKIAogICAgIGRlZiByZWFkMShzZWxmLCBzaXplPS0xKToKLSAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgIiIiSW1wbGVtZW50cyBCdWZmZXJlZElPQmFzZS5yZWFkMSgpCisKKyAgICAgICAgUmVhZHMgdXAgdG8gYSBidWZmZXIncyB3b3J0aCBvZiBkYXRhIGlzIHNpemUgaXMgbmVnYXRpdmUuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQogICAgICAgICBpZiBzZWxmLm1vZGUgIT0gUkVBRDoKICAgICAgICAgICAgIGltcG9ydCBlcnJubwogICAgICAgICAgICAgcmFpc2UgT1NFcnJvcihlcnJuby5FQkFERiwgInJlYWQxKCkgb24gd3JpdGUtb25seSBHemlwRmlsZSBvYmplY3QiKQogCi0gICAgICAgIGlmIHNlbGYuZXh0cmFzaXplIDw9IDAgYW5kIHNlbGYuZmlsZW9iaiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGInJwotCi0gICAgICAgICMgRm9yIGNlcnRhaW4gaW5wdXQgZGF0YSwgYSBzaW5nbGUgY2FsbCB0byBfcmVhZCgpIG1heSBub3QgcmV0dXJuCi0gICAgICAgICMgYW55IGRhdGEuIEluIHRoaXMgY2FzZSwgcmV0cnkgdW50aWwgd2UgZ2V0IHNvbWUgZGF0YSBvciByZWFjaCBFT0YuCi0gICAgICAgIHdoaWxlIHNlbGYuZXh0cmFzaXplIDw9IDAgYW5kIHNlbGYuX3JlYWQoKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgaWYgc2l6ZSA8IDAgb3Igc2l6ZSA+IHNlbGYuZXh0cmFzaXplOgotICAgICAgICAgICAgc2l6ZSA9IHNlbGYuZXh0cmFzaXplCi0KLSAgICAgICAgb2Zmc2V0ID0gc2VsZi5vZmZzZXQgLSBzZWxmLmV4dHJhc3RhcnQKLSAgICAgICAgY2h1bmsgPSBzZWxmLmV4dHJhYnVmW29mZnNldDogb2Zmc2V0ICsgc2l6ZV0KLSAgICAgICAgc2VsZi5leHRyYXNpemUgLT0gc2l6ZQotICAgICAgICBzZWxmLm9mZnNldCArPSBzaXplCi0gICAgICAgIHJldHVybiBjaHVuaworICAgICAgICBpZiBzaXplIDwgMDoKKyAgICAgICAgICAgIHNpemUgPSBpby5ERUZBVUxUX0JVRkZFUl9TSVpFCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZDEoc2l6ZSkKIAogICAgIGRlZiBwZWVrKHNlbGYsIG4pOgorICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKICAgICAgICAgaWYgc2VsZi5tb2RlICE9IFJFQUQ6CiAgICAgICAgICAgICBpbXBvcnQgZXJybm8KICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoZXJybm8uRUJBREYsICJwZWVrKCkgb24gd3JpdGUtb25seSBHemlwRmlsZSBvYmplY3QiKQotCi0gICAgICAgICMgRG8gbm90IHJldHVybiByaWRpY3Vsb3VzbHkgc21hbGwgYnVmZmVycywgZm9yIG9uZSBjb21tb24gaWRpb20KLSAgICAgICAgIyBpcyB0byBjYWxsIHBlZWsoMSkgYW5kIGV4cGVjdCBtb3JlIGJ5dGVzIGluIHJldHVybi4KLSAgICAgICAgaWYgbiA8IDEwMDoKLSAgICAgICAgICAgIG4gPSAxMDAKLSAgICAgICAgaWYgc2VsZi5leHRyYXNpemUgPT0gMDoKLSAgICAgICAgICAgIGlmIHNlbGYuZmlsZW9iaiBpcyBOb25lOgotICAgICAgICAgICAgICAgIHJldHVybiBiJycKLSAgICAgICAgICAgICMgRW5zdXJlIHRoYXQgd2UgZG9uJ3QgcmV0dXJuIGIiIiBpZiB3ZSBoYXZlbid0IHJlYWNoZWQgRU9GLgotICAgICAgICAgICAgIyAxMDI0IGlzIHRoZSBzYW1lIGJ1ZmZlcmluZyBoZXVyaXN0aWMgdXNlZCBpbiByZWFkKCkKLSAgICAgICAgICAgIHdoaWxlIHNlbGYuZXh0cmFzaXplID09IDAgYW5kIHNlbGYuX3JlYWQobWF4KG4sIDEwMjQpKToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIG9mZnNldCA9IHNlbGYub2Zmc2V0IC0gc2VsZi5leHRyYXN0YXJ0Ci0gICAgICAgIHJlbWFpbmluZyA9IHNlbGYuZXh0cmFzaXplCi0gICAgICAgIGFzc2VydCByZW1haW5pbmcgPT0gbGVuKHNlbGYuZXh0cmFidWYpIC0gb2Zmc2V0Ci0gICAgICAgIHJldHVybiBzZWxmLmV4dHJhYnVmW29mZnNldDpvZmZzZXQgKyBuXQotCi0gICAgZGVmIF91bnJlYWQoc2VsZiwgYnVmKToKLSAgICAgICAgc2VsZi5leHRyYXNpemUgPSBsZW4oYnVmKSArIHNlbGYuZXh0cmFzaXplCi0gICAgICAgIHNlbGYub2Zmc2V0IC09IGxlbihidWYpCi0KLSAgICBkZWYgX3JlYWQoc2VsZiwgc2l6ZT0xMDI0KToKLSAgICAgICAgaWYgc2VsZi5maWxlb2JqIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBpZiBzZWxmLl9uZXdfbWVtYmVyOgotICAgICAgICAgICAgIyBJZiB0aGUgX25ld19tZW1iZXIgZmxhZyBpcyBzZXQsIHdlIGhhdmUgdG8KLSAgICAgICAgICAgICMganVtcCB0byB0aGUgbmV4dCBtZW1iZXIsIGlmIHRoZXJlIGlzIG9uZS4KLSAgICAgICAgICAgIHNlbGYuX2luaXRfcmVhZCgpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZF9nemlwX2hlYWRlcigpOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgc2VsZi5kZWNvbXByZXNzID0gemxpYi5kZWNvbXByZXNzb2JqKC16bGliLk1BWF9XQklUUykKLSAgICAgICAgICAgIHNlbGYuX25ld19tZW1iZXIgPSBGYWxzZQotCi0gICAgICAgICMgUmVhZCBhIGNodW5rIG9mIGRhdGEgZnJvbSB0aGUgZmlsZQotICAgICAgICBidWYgPSBzZWxmLmZpbGVvYmoucmVhZChzaXplKQotCi0gICAgICAgICMgSWYgdGhlIEVPRiBoYXMgYmVlbiByZWFjaGVkLCBmbHVzaCB0aGUgZGVjb21wcmVzc2lvbiBvYmplY3QKLSAgICAgICAgIyBhbmQgbWFyayB0aGlzIG9iamVjdCBhcyBmaW5pc2hlZC4KLQotICAgICAgICBpZiBidWYgPT0gYiIiOgotICAgICAgICAgICAgdW5jb21wcmVzcyA9IHNlbGYuZGVjb21wcmVzcy5mbHVzaCgpCi0gICAgICAgICAgICAjIFByZXBlbmQgdGhlIGFscmVhZHkgcmVhZCBieXRlcyB0byB0aGUgZmlsZW9iaiB0byB0aGV5IGNhbiBiZQotICAgICAgICAgICAgIyBzZWVuIGJ5IF9yZWFkX2VvZigpCi0gICAgICAgICAgICBzZWxmLmZpbGVvYmoucHJlcGVuZChzZWxmLmRlY29tcHJlc3MudW51c2VkX2RhdGEsIFRydWUpCi0gICAgICAgICAgICBzZWxmLl9yZWFkX2VvZigpCi0gICAgICAgICAgICBzZWxmLl9hZGRfcmVhZF9kYXRhKCB1bmNvbXByZXNzICkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIHVuY29tcHJlc3MgPSBzZWxmLmRlY29tcHJlc3MuZGVjb21wcmVzcyhidWYpCi0gICAgICAgIHNlbGYuX2FkZF9yZWFkX2RhdGEoIHVuY29tcHJlc3MgKQotCi0gICAgICAgIGlmIHNlbGYuZGVjb21wcmVzcy51bnVzZWRfZGF0YSAhPSBiIiI6Ci0gICAgICAgICAgICAjIEVuZGluZyBjYXNlOiB3ZSd2ZSBjb21lIHRvIHRoZSBlbmQgb2YgYSBtZW1iZXIgaW4gdGhlIGZpbGUsCi0gICAgICAgICAgICAjIHNvIHNlZWsgYmFjayB0byB0aGUgc3RhcnQgb2YgdGhlIHVudXNlZCBkYXRhLCBmaW5pc2ggdXAKLSAgICAgICAgICAgICMgdGhpcyBtZW1iZXIsIGFuZCByZWFkIGEgbmV3IGd6aXAgaGVhZGVyLgotICAgICAgICAgICAgIyBQcmVwZW5kIHRoZSBhbHJlYWR5IHJlYWQgYnl0ZXMgdG8gdGhlIGZpbGVvYmogdG8gdGhleSBjYW4gYmUKLSAgICAgICAgICAgICMgc2VlbiBieSBfcmVhZF9lb2YoKSBhbmQgX3JlYWRfZ3ppcF9oZWFkZXIoKQotICAgICAgICAgICAgc2VsZi5maWxlb2JqLnByZXBlbmQoc2VsZi5kZWNvbXByZXNzLnVudXNlZF9kYXRhLCBUcnVlKQotICAgICAgICAgICAgIyBDaGVjayB0aGUgQ1JDIGFuZCBmaWxlIHNpemUsIGFuZCBzZXQgdGhlIGZsYWcgc28gd2UgcmVhZAotICAgICAgICAgICAgIyBhIG5ldyBtZW1iZXIgb24gdGhlIG5leHQgY2FsbAotICAgICAgICAgICAgc2VsZi5fcmVhZF9lb2YoKQotICAgICAgICAgICAgc2VsZi5fbmV3X21lbWJlciA9IFRydWUKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBfYWRkX3JlYWRfZGF0YShzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5jcmMgPSB6bGliLmNyYzMyKGRhdGEsIHNlbGYuY3JjKSAmIDB4ZmZmZmZmZmYKLSAgICAgICAgb2Zmc2V0ID0gc2VsZi5vZmZzZXQgLSBzZWxmLmV4dHJhc3RhcnQKLSAgICAgICAgc2VsZi5leHRyYWJ1ZiA9IHNlbGYuZXh0cmFidWZbb2Zmc2V0Ol0gKyBkYXRhCi0gICAgICAgIHNlbGYuZXh0cmFzaXplID0gc2VsZi5leHRyYXNpemUgKyBsZW4oZGF0YSkKLSAgICAgICAgc2VsZi5leHRyYXN0YXJ0ID0gc2VsZi5vZmZzZXQKLSAgICAgICAgc2VsZi5zaXplID0gc2VsZi5zaXplICsgbGVuKGRhdGEpCi0KLSAgICBkZWYgX3JlYWRfZW9mKHNlbGYpOgotICAgICAgICAjIFdlJ3ZlIHJlYWQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZQotICAgICAgICAjIFdlIGNoZWNrIHRoZSB0aGF0IHRoZSBjb21wdXRlZCBDUkMgYW5kIHNpemUgb2YgdGhlCi0gICAgICAgICMgdW5jb21wcmVzc2VkIGRhdGEgbWF0Y2hlcyB0aGUgc3RvcmVkIHZhbHVlcy4gIE5vdGUgdGhhdCB0aGUgc2l6ZQotICAgICAgICAjIHN0b3JlZCBpcyB0aGUgdHJ1ZSBmaWxlIHNpemUgbW9kIDIqKjMyLgotICAgICAgICBjcmMzMiwgaXNpemUgPSBzdHJ1Y3QudW5wYWNrKCI8SUkiLCBzZWxmLl9yZWFkX2V4YWN0KDgpKQotICAgICAgICBpZiBjcmMzMiAhPSBzZWxmLmNyYzoKLSAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIkNSQyBjaGVjayBmYWlsZWQgJXMgIT0gJXMiICUgKGhleChjcmMzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXgoc2VsZi5jcmMpKSkKLSAgICAgICAgZWxpZiBpc2l6ZSAhPSAoc2VsZi5zaXplICYgMHhmZmZmZmZmZik6Ci0gICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJJbmNvcnJlY3QgbGVuZ3RoIG9mIGRhdGEgcHJvZHVjZWQiKQotCi0gICAgICAgICMgR3ppcCBmaWxlcyBjYW4gYmUgcGFkZGVkIHdpdGggemVyb2VzIGFuZCBzdGlsbCBoYXZlIGFyY2hpdmVzLgotICAgICAgICAjIENvbnN1bWUgYWxsIHplcm8gYnl0ZXMgYW5kIHNldCB0aGUgZmlsZSBwb3NpdGlvbiB0byB0aGUgZmlyc3QKLSAgICAgICAgIyBub24temVybyBieXRlLiBTZWUgaHR0cDovL3d3dy5nemlwLm9yZy8jZmFxOAotICAgICAgICBjID0gYiJceDAwIgotICAgICAgICB3aGlsZSBjID09IGIiXHgwMCI6Ci0gICAgICAgICAgICBjID0gc2VsZi5maWxlb2JqLnJlYWQoMSkKLSAgICAgICAgaWYgYzoKLSAgICAgICAgICAgIHNlbGYuZmlsZW9iai5wcmVwZW5kKGMsIFRydWUpCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucGVlayhuKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGNsb3NlZChzZWxmKToKQEAgLTUxMCw2ICszMDgsOCBAQAogICAgICAgICAgICAgICAgIHdyaXRlMzJ1KGZpbGVvYmosIHNlbGYuY3JjKQogICAgICAgICAgICAgICAgICMgc2VsZi5zaXplIG1heSBleGNlZWQgMkdCLCBvciBldmVuIDRHQgogICAgICAgICAgICAgICAgIHdyaXRlMzJ1KGZpbGVvYmosIHNlbGYuc2l6ZSAmIDB4ZmZmZmZmZmYpCisgICAgICAgICAgICBlbGlmIHNlbGYubW9kZSA9PSBSRUFEOgorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlci5jbG9zZSgpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBteWZpbGVvYmogPSBzZWxmLm15ZmlsZW9iagogICAgICAgICAgICAgaWYgbXlmaWxlb2JqOgpAQCAtNTE3LDcgKzMxNyw3IEBACiAgICAgICAgICAgICAgICAgbXlmaWxlb2JqLmNsb3NlKCkKIAogICAgIGRlZiBmbHVzaChzZWxmLHpsaWJfbW9kZT16bGliLlpfU1lOQ19GTFVTSCk6Ci0gICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQogICAgICAgICBpZiBzZWxmLm1vZGUgPT0gV1JJVEU6CiAgICAgICAgICAgICAjIEVuc3VyZSB0aGUgY29tcHJlc3NvcidzIGJ1ZmZlciBpcyBmbHVzaGVkCiAgICAgICAgICAgICBzZWxmLmZpbGVvYmoud3JpdGUoc2VsZi5jb21wcmVzcy5mbHVzaCh6bGliX21vZGUpKQpAQCAtNTM2LDEyICszMzYsNyBAQAogICAgICAgICBiZWdpbm5pbmcgb2YgdGhlIGZpbGUnJycKICAgICAgICAgaWYgc2VsZi5tb2RlICE9IFJFQUQ6CiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJDYW4ndCByZXdpbmQgaW4gd3JpdGUgbW9kZSIpCi0gICAgICAgIHNlbGYuZmlsZW9iai5zZWVrKDApCi0gICAgICAgIHNlbGYuX25ld19tZW1iZXIgPSBUcnVlCi0gICAgICAgIHNlbGYuZXh0cmFidWYgPSBiIiIKLSAgICAgICAgc2VsZi5leHRyYXNpemUgPSAwCi0gICAgICAgIHNlbGYuZXh0cmFzdGFydCA9IDAKLSAgICAgICAgc2VsZi5vZmZzZXQgPSAwCisgICAgICAgIHNlbGYuX2J1ZmZlci5zZWVrKDApCiAKICAgICBkZWYgcmVhZGFibGUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLm1vZGUgPT0gUkVBRApAQCAtNTUyLDEzICszNDcsMTMgQEAKICAgICBkZWYgc2Vla2FibGUoc2VsZik6CiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQsIHdoZW5jZT0wKToKLSAgICAgICAgaWYgd2hlbmNlOgotICAgICAgICAgICAgaWYgd2hlbmNlID09IDE6Ci0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5vZmZzZXQgKyBvZmZzZXQKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignU2VlayBmcm9tIGVuZCBub3Qgc3VwcG9ydGVkJykKKyAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQsIHdoZW5jZT1pby5TRUVLX1NFVCk6CiAgICAgICAgIGlmIHNlbGYubW9kZSA9PSBXUklURToKKyAgICAgICAgICAgIGlmIHdoZW5jZSAhPSBpby5TRUVLX1NFVDoKKyAgICAgICAgICAgICAgICBpZiB3aGVuY2UgPT0gaW8uU0VFS19DVVI6CisgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHNlbGYub2Zmc2V0ICsgb2Zmc2V0CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignU2VlayBmcm9tIGVuZCBub3Qgc3VwcG9ydGVkJykKICAgICAgICAgICAgIGlmIG9mZnNldCA8IHNlbGYub2Zmc2V0OgogICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ05lZ2F0aXZlIHNlZWsgaW4gd3JpdGUgbW9kZScpCiAgICAgICAgICAgICBjb3VudCA9IG9mZnNldCAtIHNlbGYub2Zmc2V0CkBAIC01NjcsNTUgKzM2MiwxNTYgQEAKICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKGNodW5rKQogICAgICAgICAgICAgc2VsZi53cml0ZShieXRlcyhjb3VudCAlIDEwMjQpKQogICAgICAgICBlbGlmIHNlbGYubW9kZSA9PSBSRUFEOgotICAgICAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5vZmZzZXQ6Ci0gICAgICAgICAgICAgICAgIyBmb3IgbmVnYXRpdmUgc2VlaywgcmV3aW5kIGFuZCBkbyBwb3NpdGl2ZSBzZWVrCi0gICAgICAgICAgICAgICAgc2VsZi5yZXdpbmQoKQotICAgICAgICAgICAgY291bnQgPSBvZmZzZXQgLSBzZWxmLm9mZnNldAotICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoY291bnQgLy8gMTAyNCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5yZWFkKDEwMjQpCi0gICAgICAgICAgICBzZWxmLnJlYWQoY291bnQgJSAxMDI0KQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnNlZWsob2Zmc2V0LCB3aGVuY2UpCiAKICAgICAgICAgcmV0dXJuIHNlbGYub2Zmc2V0CiAKICAgICBkZWYgcmVhZGxpbmUoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnJlYWRsaW5lKHNpemUpCisKKworY2xhc3MgX0d6aXBSZWFkZXIoX2NvbXByZXNzaW9uLkRlY29tcHJlc3NSZWFkZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcCk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oX1BhZGRlZEZpbGUoZnApLCB6bGliLmRlY29tcHJlc3NvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgd2JpdHM9LXpsaWIuTUFYX1dCSVRTKQorICAgICAgICAjIFNldCBmbGFnIGluZGljYXRpbmcgc3RhcnQgb2YgYSBuZXcgbWVtYmVyCisgICAgICAgIHNlbGYuX25ld19tZW1iZXIgPSBUcnVlCisgICAgICAgIHNlbGYuX2xhc3RfbXRpbWUgPSBOb25lCisKKyAgICBkZWYgX2luaXRfcmVhZChzZWxmKToKKyAgICAgICAgc2VsZi5fY3JjID0gemxpYi5jcmMzMihiIiIpCisgICAgICAgIHNlbGYuX3N0cmVhbV9zaXplID0gMCAgIyBEZWNvbXByZXNzZWQgc2l6ZSBvZiB1bmNvbmNhdGVuYXRlZCBzdHJlYW0KKworICAgIGRlZiBfcmVhZF9leGFjdChzZWxmLCBuKToKKyAgICAgICAgJycnUmVhZCBleGFjdGx5ICpuKiBieXRlcyBmcm9tIGBzZWxmLl9mcGAKKworICAgICAgICBUaGlzIG1ldGhvZCBpcyByZXF1aXJlZCBiZWNhdXNlIHNlbGYuX2ZwIG1heSBiZSB1bmJ1ZmZlcmVkLAorICAgICAgICBpLmUuIHJldHVybiBzaG9ydCByZWFkcy4KKyAgICAgICAgJycnCisKKyAgICAgICAgZGF0YSA9IHNlbGYuX2ZwLnJlYWQobikKKyAgICAgICAgd2hpbGUgbGVuKGRhdGEpIDwgbjoKKyAgICAgICAgICAgIGIgPSBzZWxmLl9mcC5yZWFkKG4gLSBsZW4oZGF0YSkpCisgICAgICAgICAgICBpZiBub3QgYjoKKyAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiQ29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmQtb2Ytc3RyZWFtIG1hcmtlciB3YXMgcmVhY2hlZCIpCisgICAgICAgICAgICBkYXRhICs9IGIKKyAgICAgICAgcmV0dXJuIGRhdGEKKworICAgIGRlZiBfcmVhZF9nemlwX2hlYWRlcihzZWxmKToKKyAgICAgICAgbWFnaWMgPSBzZWxmLl9mcC5yZWFkKDIpCisgICAgICAgIGlmIG1hZ2ljID09IGInJzoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGlmIG1hZ2ljICE9IGInXDAzN1wyMTMnOgorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignTm90IGEgZ3ppcHBlZCBmaWxlICglciknICUgbWFnaWMpCisKKyAgICAgICAgKG1ldGhvZCwgZmxhZywKKyAgICAgICAgIHNlbGYuX2xhc3RfbXRpbWUpID0gc3RydWN0LnVucGFjaygiPEJCSXh4Iiwgc2VsZi5fcmVhZF9leGFjdCg4KSkKKyAgICAgICAgaWYgbWV0aG9kICE9IDg6CisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdVbmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCcpCisKKyAgICAgICAgaWYgZmxhZyAmIEZFWFRSQToKKyAgICAgICAgICAgICMgUmVhZCAmIGRpc2NhcmQgdGhlIGV4dHJhIGZpZWxkLCBpZiBwcmVzZW50CisgICAgICAgICAgICBleHRyYV9sZW4sID0gc3RydWN0LnVucGFjaygiPEgiLCBzZWxmLl9yZWFkX2V4YWN0KDIpKQorICAgICAgICAgICAgc2VsZi5fcmVhZF9leGFjdChleHRyYV9sZW4pCisgICAgICAgIGlmIGZsYWcgJiBGTkFNRToKKyAgICAgICAgICAgICMgUmVhZCBhbmQgZGlzY2FyZCBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcgY29udGFpbmluZyB0aGUgZmlsZW5hbWUKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcyA9IHNlbGYuX2ZwLnJlYWQoMSkKKyAgICAgICAgICAgICAgICBpZiBub3QgcyBvciBzPT1iJ1wwMDAnOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBpZiBmbGFnICYgRkNPTU1FTlQ6CisgICAgICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgYSBjb21tZW50CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHMgPSBzZWxmLl9mcC5yZWFkKDEpCisgICAgICAgICAgICAgICAgaWYgbm90IHMgb3Igcz09YidcMDAwJzoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgZmxhZyAmIEZIQ1JDOgorICAgICAgICAgICAgc2VsZi5fcmVhZF9leGFjdCgyKSAgICAgIyBSZWFkICYgZGlzY2FyZCB0aGUgMTYtYml0IGhlYWRlciBDUkMKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgogICAgICAgICBpZiBzaXplIDwgMDoKLSAgICAgICAgICAgICMgU2hvcnRjdXQgY29tbW9uIGNhc2UgLSBuZXdsaW5lIGZvdW5kIGluIGJ1ZmZlci4KLSAgICAgICAgICAgIG9mZnNldCA9IHNlbGYub2Zmc2V0IC0gc2VsZi5leHRyYXN0YXJ0Ci0gICAgICAgICAgICBpID0gc2VsZi5leHRyYWJ1Zi5maW5kKGInXG4nLCBvZmZzZXQpICsgMQotICAgICAgICAgICAgaWYgaSA+IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5leHRyYXNpemUgLT0gaSAtIG9mZnNldAotICAgICAgICAgICAgICAgIHNlbGYub2Zmc2V0ICs9IGkgLSBvZmZzZXQKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5leHRyYWJ1ZltvZmZzZXQ6IGldCisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWxsKCkKKyAgICAgICAgIyBzaXplPTAgaXMgc3BlY2lhbCBiZWNhdXNlIGRlY29tcHJlc3MobWF4X2xlbmd0aD0wKSBpcyBub3Qgc3VwcG9ydGVkCisgICAgICAgIGlmIG5vdCBzaXplOgorICAgICAgICAgICAgcmV0dXJuIGIiIgogCi0gICAgICAgICAgICBzaXplID0gc3lzLm1heHNpemUKLSAgICAgICAgICAgIHJlYWRzaXplID0gc2VsZi5taW5fcmVhZHNpemUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlYWRzaXplID0gc2l6ZQotICAgICAgICBidWZzID0gW10KLSAgICAgICAgd2hpbGUgc2l6ZSAhPSAwOgotICAgICAgICAgICAgYyA9IHNlbGYucmVhZChyZWFkc2l6ZSkKLSAgICAgICAgICAgIGkgPSBjLmZpbmQoYidcbicpCisgICAgICAgICMgRm9yIGNlcnRhaW4gaW5wdXQgZGF0YSwgYSBzaW5nbGUKKyAgICAgICAgIyBjYWxsIHRvIGRlY29tcHJlc3MoKSBtYXkgbm90IHJldHVybgorICAgICAgICAjIGFueSBkYXRhLiBJbiB0aGlzIGNhc2UsIHJldHJ5IHVudGlsIHdlIGdldCBzb21lIGRhdGEgb3IgcmVhY2ggRU9GLgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKKyAgICAgICAgICAgICAgICAjIEVuZGluZyBjYXNlOiB3ZSd2ZSBjb21lIHRvIHRoZSBlbmQgb2YgYSBtZW1iZXIgaW4gdGhlIGZpbGUsCisgICAgICAgICAgICAgICAgIyBzbyBmaW5pc2ggdXAgdGhpcyBtZW1iZXIsIGFuZCByZWFkIGEgbmV3IGd6aXAgaGVhZGVyLgorICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhlIENSQyBhbmQgZmlsZSBzaXplLCBhbmQgc2V0IHRoZSBmbGFnIHNvIHdlIHJlYWQKKyAgICAgICAgICAgICAgICAjIGEgbmV3IG1lbWJlcgorICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfZW9mKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9uZXdfbWVtYmVyID0gVHJ1ZQorICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IHNlbGYuX2RlY29tcF9mYWN0b3J5KAorICAgICAgICAgICAgICAgICAgICAqKnNlbGYuX2RlY29tcF9hcmdzKQogCi0gICAgICAgICAgICAjIFdlIHNldCBpPXNpemUgdG8gYnJlYWsgb3V0IG9mIHRoZSBsb29wIHVuZGVyIHR3bwotICAgICAgICAgICAgIyBjb25kaXRpb25zOiAxKSB0aGVyZSdzIG5vIG5ld2xpbmUsIGFuZCB0aGUgY2h1bmsgaXMKLSAgICAgICAgICAgICMgbGFyZ2VyIHRoYW4gc2l6ZSwgb3IgMikgdGhlcmUgaXMgYSBuZXdsaW5lLCBidXQgdGhlCi0gICAgICAgICAgICAjIHJlc3VsdGluZyBsaW5lIHdvdWxkIGJlIGxvbmdlciB0aGFuICdzaXplJy4KLSAgICAgICAgICAgIGlmIChzaXplIDw9IGkpIG9yIChpID09IC0xIGFuZCBsZW4oYykgPiBzaXplKToKLSAgICAgICAgICAgICAgICBpID0gc2l6ZSAtIDEKKyAgICAgICAgICAgIGlmIHNlbGYuX25ld19tZW1iZXI6CisgICAgICAgICAgICAgICAgIyBJZiB0aGUgX25ld19tZW1iZXIgZmxhZyBpcyBzZXQsIHdlIGhhdmUgdG8KKyAgICAgICAgICAgICAgICAjIGp1bXAgdG8gdGhlIG5leHQgbWVtYmVyLCBpZiB0aGVyZSBpcyBvbmUuCisgICAgICAgICAgICAgICAgc2VsZi5faW5pdF9yZWFkKCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZF9nemlwX2hlYWRlcigpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaXplID0gc2VsZi5fcG9zCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgICAgICAgICBzZWxmLl9uZXdfbWVtYmVyID0gRmFsc2UKIAotICAgICAgICAgICAgaWYgaSA+PSAwIG9yIGMgPT0gYicnOgotICAgICAgICAgICAgICAgIGJ1ZnMuYXBwZW5kKGNbOmkgKyAxXSkgICAgIyBBZGQgcG9ydGlvbiBvZiBsYXN0IGNodW5rCi0gICAgICAgICAgICAgICAgc2VsZi5fdW5yZWFkKGNbaSArIDE6XSkgICAjIFB1c2ggYmFjayByZXN0IG9mIGNodW5rCisgICAgICAgICAgICAjIFJlYWQgYSBjaHVuayBvZiBkYXRhIGZyb20gdGhlIGZpbGUKKyAgICAgICAgICAgIGJ1ZiA9IHNlbGYuX2ZwLnJlYWQoaW8uREVGQVVMVF9CVUZGRVJfU0laRSkKKworICAgICAgICAgICAgdW5jb21wcmVzcyA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKGJ1Ziwgc2l6ZSkKKyAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci51bmNvbnN1bWVkX3RhaWwgIT0gYiIiOgorICAgICAgICAgICAgICAgIHNlbGYuX2ZwLnByZXBlbmQoc2VsZi5fZGVjb21wcmVzc29yLnVuY29uc3VtZWRfdGFpbCkKKyAgICAgICAgICAgIGVsaWYgc2VsZi5fZGVjb21wcmVzc29yLnVudXNlZF9kYXRhICE9IGIiIjoKKyAgICAgICAgICAgICAgICAjIFByZXBlbmQgdGhlIGFscmVhZHkgcmVhZCBieXRlcyB0byB0aGUgZmlsZW9iaiBzbyB0aGV5IGNhbgorICAgICAgICAgICAgICAgICMgYmUgc2VlbiBieSBfcmVhZF9lb2YoKSBhbmQgX3JlYWRfZ3ppcF9oZWFkZXIoKQorICAgICAgICAgICAgICAgIHNlbGYuX2ZwLnByZXBlbmQoc2VsZi5fZGVjb21wcmVzc29yLnVudXNlZF9kYXRhKQorCisgICAgICAgICAgICBpZiB1bmNvbXByZXNzICE9IGIiIjoKICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgYnVmID09IGIiIjoKKyAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiQ29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmQtb2Ytc3RyZWFtIG1hcmtlciB3YXMgcmVhY2hlZCIpCiAKLSAgICAgICAgICAgICMgQXBwZW5kIGNodW5rIHRvIGxpc3QsIGRlY3JlYXNlICdzaXplJywKLSAgICAgICAgICAgIGJ1ZnMuYXBwZW5kKGMpCi0gICAgICAgICAgICBzaXplID0gc2l6ZSAtIGxlbihjKQotICAgICAgICAgICAgcmVhZHNpemUgPSBtaW4oc2l6ZSwgcmVhZHNpemUgKiAyKQotICAgICAgICBpZiByZWFkc2l6ZSA+IHNlbGYubWluX3JlYWRzaXplOgotICAgICAgICAgICAgc2VsZi5taW5fcmVhZHNpemUgPSBtaW4ocmVhZHNpemUsIHNlbGYubWluX3JlYWRzaXplICogMiwgNTEyKQotICAgICAgICByZXR1cm4gYicnLmpvaW4oYnVmcykgIyBSZXR1cm4gcmVzdWx0aW5nIGxpbmUKKyAgICAgICAgc2VsZi5fYWRkX3JlYWRfZGF0YSggdW5jb21wcmVzcyApCisgICAgICAgIHNlbGYuX3BvcyArPSBsZW4odW5jb21wcmVzcykKKyAgICAgICAgcmV0dXJuIHVuY29tcHJlc3MKIAorICAgIGRlZiBfYWRkX3JlYWRfZGF0YShzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5fY3JjID0gemxpYi5jcmMzMihkYXRhLCBzZWxmLl9jcmMpCisgICAgICAgIHNlbGYuX3N0cmVhbV9zaXplID0gc2VsZi5fc3RyZWFtX3NpemUgKyBsZW4oZGF0YSkKKworICAgIGRlZiBfcmVhZF9lb2Yoc2VsZik6CisgICAgICAgICMgV2UndmUgcmVhZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlCisgICAgICAgICMgV2UgY2hlY2sgdGhlIHRoYXQgdGhlIGNvbXB1dGVkIENSQyBhbmQgc2l6ZSBvZiB0aGUKKyAgICAgICAgIyB1bmNvbXByZXNzZWQgZGF0YSBtYXRjaGVzIHRoZSBzdG9yZWQgdmFsdWVzLiAgTm90ZSB0aGF0IHRoZSBzaXplCisgICAgICAgICMgc3RvcmVkIGlzIHRoZSB0cnVlIGZpbGUgc2l6ZSBtb2QgMioqMzIuCisgICAgICAgIGNyYzMyLCBpc2l6ZSA9IHN0cnVjdC51bnBhY2soIjxJSSIsIHNlbGYuX3JlYWRfZXhhY3QoOCkpCisgICAgICAgIGlmIGNyYzMyICE9IHNlbGYuX2NyYzoKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIkNSQyBjaGVjayBmYWlsZWQgJXMgIT0gJXMiICUgKGhleChjcmMzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXgoc2VsZi5fY3JjKSkpCisgICAgICAgIGVsaWYgaXNpemUgIT0gKHNlbGYuX3N0cmVhbV9zaXplICYgMHhmZmZmZmZmZik6CisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJJbmNvcnJlY3QgbGVuZ3RoIG9mIGRhdGEgcHJvZHVjZWQiKQorCisgICAgICAgICMgR3ppcCBmaWxlcyBjYW4gYmUgcGFkZGVkIHdpdGggemVyb2VzIGFuZCBzdGlsbCBoYXZlIGFyY2hpdmVzLgorICAgICAgICAjIENvbnN1bWUgYWxsIHplcm8gYnl0ZXMgYW5kIHNldCB0aGUgZmlsZSBwb3NpdGlvbiB0byB0aGUgZmlyc3QKKyAgICAgICAgIyBub24temVybyBieXRlLiBTZWUgaHR0cDovL3d3dy5nemlwLm9yZy8jZmFxOAorICAgICAgICBjID0gYiJceDAwIgorICAgICAgICB3aGlsZSBjID09IGIiXHgwMCI6CisgICAgICAgICAgICBjID0gc2VsZi5fZnAucmVhZCgxKQorICAgICAgICBpZiBjOgorICAgICAgICAgICAgc2VsZi5fZnAucHJlcGVuZChjKQorCisgICAgZGVmIF9yZXdpbmQoc2VsZik6CisgICAgICAgIHN1cGVyKCkuX3Jld2luZCgpCisgICAgICAgIHNlbGYuX25ld19tZW1iZXIgPSBUcnVlCiAKIGRlZiBjb21wcmVzcyhkYXRhLCBjb21wcmVzc2xldmVsPTkpOgogICAgICIiIkNvbXByZXNzIGRhdGEgaW4gb25lIHNob3QgYW5kIHJldHVybiB0aGUgY29tcHJlc3NlZCBzdHJpbmcuCmRpZmYgLS1naXQgYS9MaWIvaGVhcHEucHkgYi9MaWIvaGVhcHEucHkKaW5kZXggZDYxNTIzOS4uMDdhZjM3ZSAxMDA2NDQKLS0tIGEvTGliL2hlYXBxLnB5CisrKyBiL0xpYi9oZWFwcS5weQpAQCAtMTI3LDggKzEyNyw2IEBACiBfX2FsbF9fID0gWydoZWFwcHVzaCcsICdoZWFwcG9wJywgJ2hlYXBpZnknLCAnaGVhcHJlcGxhY2UnLCAnbWVyZ2UnLAogICAgICAgICAgICAnbmxhcmdlc3QnLCAnbnNtYWxsZXN0JywgJ2hlYXBwdXNocG9wJ10KIAotZnJvbSBpdGVydG9vbHMgaW1wb3J0IGlzbGljZSwgY291bnQsIHRlZSwgY2hhaW4KLQogZGVmIGhlYXBwdXNoKGhlYXAsIGl0ZW0pOgogICAgICIiIlB1c2ggaXRlbSBvbnRvIGhlYXAsIG1haW50YWluaW5nIHRoZSBoZWFwIGludmFyaWFudC4iIiIKICAgICBoZWFwLmFwcGVuZChpdGVtKQpAQCAtMTQxLDkgKzEzOSw4IEBACiAgICAgICAgIHJldHVybml0ZW0gPSBoZWFwWzBdCiAgICAgICAgIGhlYXBbMF0gPSBsYXN0ZWx0CiAgICAgICAgIF9zaWZ0dXAoaGVhcCwgMCkKLSAgICBlbHNlOgotICAgICAgICByZXR1cm5pdGVtID0gbGFzdGVsdAotICAgIHJldHVybiByZXR1cm5pdGVtCisgICAgICAgIHJldHVybiByZXR1cm5pdGVtCisgICAgcmV0dXJuIGxhc3RlbHQKIAogZGVmIGhlYXByZXBsYWNlKGhlYXAsIGl0ZW0pOgogICAgICIiIlBvcCBhbmQgcmV0dXJuIHRoZSBjdXJyZW50IHNtYWxsZXN0IHZhbHVlLCBhbmQgYWRkIHRoZSBuZXcgaXRlbS4KQEAgLTE3OSwxMiArMTc2LDIyIEBACiAgICAgZm9yIGkgaW4gcmV2ZXJzZWQocmFuZ2Uobi8vMikpOgogICAgICAgICBfc2lmdHVwKHgsIGkpCiAKLWRlZiBfaGVhcHB1c2hwb3BfbWF4KGhlYXAsIGl0ZW0pOgotICAgICIiIk1heGhlYXAgdmVyc2lvbiBvZiBhIGhlYXBwdXNoIGZvbGxvd2VkIGJ5IGEgaGVhcHBvcC4iIiIKLSAgICBpZiBoZWFwIGFuZCBpdGVtIDwgaGVhcFswXToKLSAgICAgICAgaXRlbSwgaGVhcFswXSA9IGhlYXBbMF0sIGl0ZW0KK2RlZiBfaGVhcHBvcF9tYXgoaGVhcCk6CisgICAgIiIiTWF4aGVhcCB2ZXJzaW9uIG9mIGEgaGVhcHBvcC4iIiIKKyAgICBsYXN0ZWx0ID0gaGVhcC5wb3AoKSAgICAjIHJhaXNlcyBhcHByb3ByaWF0ZSBJbmRleEVycm9yIGlmIGhlYXAgaXMgZW1wdHkKKyAgICBpZiBoZWFwOgorICAgICAgICByZXR1cm5pdGVtID0gaGVhcFswXQorICAgICAgICBoZWFwWzBdID0gbGFzdGVsdAogICAgICAgICBfc2lmdHVwX21heChoZWFwLCAwKQotICAgIHJldHVybiBpdGVtCisgICAgICAgIHJldHVybiByZXR1cm5pdGVtCisgICAgcmV0dXJuIGxhc3RlbHQKKworZGVmIF9oZWFwcmVwbGFjZV9tYXgoaGVhcCwgaXRlbSk6CisgICAgIiIiTWF4aGVhcCB2ZXJzaW9uIG9mIGEgaGVhcHBvcCBmb2xsb3dlZCBieSBhIGhlYXBwdXNoLiIiIgorICAgIHJldHVybml0ZW0gPSBoZWFwWzBdICAgICMgcmFpc2VzIGFwcHJvcHJpYXRlIEluZGV4RXJyb3IgaWYgaGVhcCBpcyBlbXB0eQorICAgIGhlYXBbMF0gPSBpdGVtCisgICAgX3NpZnR1cF9tYXgoaGVhcCwgMCkKKyAgICByZXR1cm4gcmV0dXJuaXRlbQogCiBkZWYgX2hlYXBpZnlfbWF4KHgpOgogICAgICIiIlRyYW5zZm9ybSBsaXN0IGludG8gYSBtYXhoZWFwLCBpbi1wbGFjZSwgaW4gTyhsZW4oeCkpIHRpbWUuIiIiCkBAIC0xOTIsNDIgKzE5OSw2IEBACiAgICAgZm9yIGkgaW4gcmV2ZXJzZWQocmFuZ2Uobi8vMikpOgogICAgICAgICBfc2lmdHVwX21heCh4LCBpKQogCi1kZWYgbmxhcmdlc3QobiwgaXRlcmFibGUpOgotICAgICIiIkZpbmQgdGhlIG4gbGFyZ2VzdCBlbGVtZW50cyBpbiBhIGRhdGFzZXQuCi0KLSAgICBFcXVpdmFsZW50IHRvOiAgc29ydGVkKGl0ZXJhYmxlLCByZXZlcnNlPVRydWUpWzpuXQotICAgICIiIgotICAgIGlmIG4gPCAwOgotICAgICAgICByZXR1cm4gW10KLSAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCi0gICAgcmVzdWx0ID0gbGlzdChpc2xpY2UoaXQsIG4pKQotICAgIGlmIG5vdCByZXN1bHQ6Ci0gICAgICAgIHJldHVybiByZXN1bHQKLSAgICBoZWFwaWZ5KHJlc3VsdCkKLSAgICBfaGVhcHB1c2hwb3AgPSBoZWFwcHVzaHBvcAotICAgIGZvciBlbGVtIGluIGl0OgotICAgICAgICBfaGVhcHB1c2hwb3AocmVzdWx0LCBlbGVtKQotICAgIHJlc3VsdC5zb3J0KHJldmVyc2U9VHJ1ZSkKLSAgICByZXR1cm4gcmVzdWx0Ci0KLWRlZiBuc21hbGxlc3QobiwgaXRlcmFibGUpOgotICAgICIiIkZpbmQgdGhlIG4gc21hbGxlc3QgZWxlbWVudHMgaW4gYSBkYXRhc2V0LgotCi0gICAgRXF1aXZhbGVudCB0bzogIHNvcnRlZChpdGVyYWJsZSlbOm5dCi0gICAgIiIiCi0gICAgaWYgbiA8IDA6Ci0gICAgICAgIHJldHVybiBbXQotICAgIGl0ID0gaXRlcihpdGVyYWJsZSkKLSAgICByZXN1bHQgPSBsaXN0KGlzbGljZShpdCwgbikpCi0gICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgIF9oZWFwaWZ5X21heChyZXN1bHQpCi0gICAgX2hlYXBwdXNocG9wID0gX2hlYXBwdXNocG9wX21heAotICAgIGZvciBlbGVtIGluIGl0OgotICAgICAgICBfaGVhcHB1c2hwb3AocmVzdWx0LCBlbGVtKQotICAgIHJlc3VsdC5zb3J0KCkKLSAgICByZXR1cm4gcmVzdWx0Ci0KICMgJ2hlYXAnIGlzIGEgaGVhcCBhdCBhbGwgaW5kaWNlcyA+PSBzdGFydHBvcywgZXhjZXB0IHBvc3NpYmx5IGZvciBwb3MuICBwb3MKICMgaXMgdGhlIGluZGV4IG9mIGEgbGVhZiB3aXRoIGEgcG9zc2libHkgb3V0LW9mLW9yZGVyIHZhbHVlLiAgUmVzdG9yZSB0aGUKICMgaGVhcCBpbnZhcmlhbnQuCkBAIC0zNDAsMTMgKzMxMSw3IEBACiAgICAgaGVhcFtwb3NdID0gbmV3aXRlbQogICAgIF9zaWZ0ZG93bl9tYXgoaGVhcCwgc3RhcnRwb3MsIHBvcykKIAotIyBJZiBhdmFpbGFibGUsIHVzZSBDIGltcGxlbWVudGF0aW9uCi10cnk6Ci0gICAgZnJvbSBfaGVhcHEgaW1wb3J0ICoKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi0KLWRlZiBtZXJnZSgqaXRlcmFibGVzKToKK2RlZiBtZXJnZSgqaXRlcmFibGVzLCBrZXk9Tm9uZSwgcmV2ZXJzZT1GYWxzZSk6CiAgICAgJycnTWVyZ2UgbXVsdGlwbGUgc29ydGVkIGlucHV0cyBpbnRvIGEgc2luZ2xlIHNvcnRlZCBvdXRwdXQuCiAKICAgICBTaW1pbGFyIHRvIHNvcnRlZChpdGVydG9vbHMuY2hhaW4oKml0ZXJhYmxlcykpIGJ1dCByZXR1cm5zIGEgZ2VuZXJhdG9yLApAQCAtMzU2LDUxICszMjEsMTU4IEBACiAgICAgPj4+IGxpc3QobWVyZ2UoWzEsMyw1LDddLCBbMCwyLDQsOF0sIFs1LDEwLDE1LDIwXSwgW10sIFsyNV0pKQogICAgIFswLCAxLCAyLCAzLCA0LCA1LCA1LCA3LCA4LCAxMCwgMTUsIDIwLCAyNV0KIAorICAgIElmICprZXkqIGlzIG5vdCBOb25lLCBhcHBsaWVzIGEga2V5IGZ1bmN0aW9uIHRvIGVhY2ggZWxlbWVudCB0byBkZXRlcm1pbmUKKyAgICBpdHMgc29ydCBvcmRlci4KKworICAgID4+PiBsaXN0KG1lcmdlKFsnZG9nJywgJ2hvcnNlJ10sIFsnY2F0JywgJ2Zpc2gnLCAna2FuZ2Fyb28nXSwga2V5PWxlbikpCisgICAgWydkb2cnLCAnY2F0JywgJ2Zpc2gnLCAnaG9yc2UnLCAna2FuZ2Fyb28nXQorCiAgICAgJycnCi0gICAgX2hlYXBwb3AsIF9oZWFwcmVwbGFjZSwgX1N0b3BJdGVyYXRpb24gPSBoZWFwcG9wLCBoZWFwcmVwbGFjZSwgU3RvcEl0ZXJhdGlvbgotICAgIF9sZW4gPSBsZW4KIAogICAgIGggPSBbXQogICAgIGhfYXBwZW5kID0gaC5hcHBlbmQKLSAgICBmb3IgaXRudW0sIGl0IGluIGVudW1lcmF0ZShtYXAoaXRlciwgaXRlcmFibGVzKSk6CisKKyAgICBpZiByZXZlcnNlOgorICAgICAgICBfaGVhcGlmeSA9IF9oZWFwaWZ5X21heAorICAgICAgICBfaGVhcHBvcCA9IF9oZWFwcG9wX21heAorICAgICAgICBfaGVhcHJlcGxhY2UgPSBfaGVhcHJlcGxhY2VfbWF4CisgICAgICAgIGRpcmVjdGlvbiA9IC0xCisgICAgZWxzZToKKyAgICAgICAgX2hlYXBpZnkgPSBoZWFwaWZ5CisgICAgICAgIF9oZWFwcG9wID0gaGVhcHBvcAorICAgICAgICBfaGVhcHJlcGxhY2UgPSBoZWFwcmVwbGFjZQorICAgICAgICBkaXJlY3Rpb24gPSAxCisKKyAgICBpZiBrZXkgaXMgTm9uZToKKyAgICAgICAgZm9yIG9yZGVyLCBpdCBpbiBlbnVtZXJhdGUobWFwKGl0ZXIsIGl0ZXJhYmxlcykpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG5leHQgPSBpdC5fX25leHRfXworICAgICAgICAgICAgICAgIGhfYXBwZW5kKFtuZXh0KCksIG9yZGVyICogZGlyZWN0aW9uLCBuZXh0XSkKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgX2hlYXBpZnkoaCkKKyAgICAgICAgd2hpbGUgbGVuKGgpID4gMToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgb3JkZXIsIG5leHQgPSBzID0gaFswXQorICAgICAgICAgICAgICAgICAgICB5aWVsZCB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBzWzBdID0gbmV4dCgpICAgICAgICAgICAjIHJhaXNlcyBTdG9wSXRlcmF0aW9uIHdoZW4gZXhoYXVzdGVkCisgICAgICAgICAgICAgICAgICAgIF9oZWFwcmVwbGFjZShoLCBzKSAgICAgICMgcmVzdG9yZSBoZWFwIGNvbmRpdGlvbgorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgX2hlYXBwb3AoaCkgICAgICAgICAgICAgICAgICMgcmVtb3ZlIGVtcHR5IGl0ZXJhdG9yCisgICAgICAgIGlmIGg6CisgICAgICAgICAgICAjIGZhc3QgY2FzZSB3aGVuIG9ubHkgYSBzaW5nbGUgaXRlcmF0b3IgcmVtYWlucworICAgICAgICAgICAgdmFsdWUsIG9yZGVyLCBuZXh0ID0gaFswXQorICAgICAgICAgICAgeWllbGQgdmFsdWUKKyAgICAgICAgICAgIHlpZWxkIGZyb20gbmV4dC5fX3NlbGZfXworICAgICAgICByZXR1cm4KKworICAgIGZvciBvcmRlciwgaXQgaW4gZW51bWVyYXRlKG1hcChpdGVyLCBpdGVyYWJsZXMpKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbmV4dCA9IGl0Ll9fbmV4dF9fCi0gICAgICAgICAgICBoX2FwcGVuZChbbmV4dCgpLCBpdG51bSwgbmV4dF0pCi0gICAgICAgIGV4Y2VwdCBfU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHZhbHVlID0gbmV4dCgpCisgICAgICAgICAgICBoX2FwcGVuZChba2V5KHZhbHVlKSwgb3JkZXIgKiBkaXJlY3Rpb24sIHZhbHVlLCBuZXh0XSkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgICBwYXNzCi0gICAgaGVhcGlmeShoKQotCi0gICAgd2hpbGUgX2xlbihoKSA+IDE6CisgICAgX2hlYXBpZnkoaCkKKyAgICB3aGlsZSBsZW4oaCkgPiAxOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIHYsIGl0bnVtLCBuZXh0ID0gcyA9IGhbMF0KLSAgICAgICAgICAgICAgICB5aWVsZCB2Ci0gICAgICAgICAgICAgICAgc1swXSA9IG5leHQoKSAgICAgICAgICAgICAgICMgcmFpc2VzIFN0b3BJdGVyYXRpb24gd2hlbiBleGhhdXN0ZWQKLSAgICAgICAgICAgICAgICBfaGVhcHJlcGxhY2UoaCwgcykgICAgICAgICAgIyByZXN0b3JlIGhlYXAgY29uZGl0aW9uCi0gICAgICAgIGV4Y2VwdCBfU3RvcEl0ZXJhdGlvbjoKLSAgICAgICAgICAgIF9oZWFwcG9wKGgpICAgICAgICAgICAgICAgICAgICAgIyByZW1vdmUgZW1wdHkgaXRlcmF0b3IKKyAgICAgICAgICAgICAgICBrZXlfdmFsdWUsIG9yZGVyLCB2YWx1ZSwgbmV4dCA9IHMgPSBoWzBdCisgICAgICAgICAgICAgICAgeWllbGQgdmFsdWUKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5leHQoKQorICAgICAgICAgICAgICAgIHNbMF0gPSBrZXkodmFsdWUpCisgICAgICAgICAgICAgICAgc1syXSA9IHZhbHVlCisgICAgICAgICAgICAgICAgX2hlYXByZXBsYWNlKGgsIHMpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgX2hlYXBwb3AoaCkKICAgICBpZiBoOgotICAgICAgICAjIGZhc3QgY2FzZSB3aGVuIG9ubHkgYSBzaW5nbGUgaXRlcmF0b3IgcmVtYWlucwotICAgICAgICB2LCBpdG51bSwgbmV4dCA9IGhbMF0KLSAgICAgICAgeWllbGQgdgorICAgICAgICBrZXlfdmFsdWUsIG9yZGVyLCB2YWx1ZSwgbmV4dCA9IGhbMF0KKyAgICAgICAgeWllbGQgdmFsdWUKICAgICAgICAgeWllbGQgZnJvbSBuZXh0Ll9fc2VsZl9fCiAKLSMgRXh0ZW5kIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgbnNtYWxsZXN0IGFuZCBubGFyZ2VzdCB0byB1c2UgYSBrZXk9IGFyZ3VtZW50Ci1fbnNtYWxsZXN0ID0gbnNtYWxsZXN0CisKKyMgQWxnb3JpdGhtIG5vdGVzIGZvciBubGFyZ2VzdCgpIGFuZCBuc21hbGxlc3QoKQorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIE1ha2UgYSBzaW5nbGUgcGFzcyBvdmVyIHRoZSBkYXRhIHdoaWxlIGtlZXBpbmcgdGhlIGsgbW9zdCBleHRyZW1lIHZhbHVlcworIyBpbiBhIGhlYXAuICBNZW1vcnkgY29uc3VtcHRpb24gaXMgbGltaXRlZCB0byBrZWVwaW5nIGsgdmFsdWVzIGluIGEgbGlzdC4KKyMKKyMgTWVhc3VyZWQgcGVyZm9ybWFuY2UgZm9yIHJhbmRvbSBpbnB1dHM6CisjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2YgY29tcGFyaXNvbnMKKyMgICAgbiBpbnB1dHMgICAgIGstZXh0cmVtZSB2YWx1ZXMgIChhdmVyYWdlIG9mIDUgdHJpYWxzKSAgICUgbW9yZSB0aGFuIG1pbigpCisjIC0tLS0tLS0tLS0tLS0gICAtLS0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAtLS0tLS0tLS0tLS0tLS0tLQorIyAgICAgIDEsMDAwICAgICAgICAgICAxMDAgICAgICAgICAgICAgICAgICAzLDMxNyAgICAgICAgICAgICAgIDIzMS43JQorIyAgICAgMTAsMDAwICAgICAgICAgICAxMDAgICAgICAgICAgICAgICAgIDE0LDA0NiAgICAgICAgICAgICAgICA0MC41JQorIyAgICAxMDAsMDAwICAgICAgICAgICAxMDAgICAgICAgICAgICAgICAgMTA1LDc0OSAgICAgICAgICAgICAgICAgNS43JQorIyAgMSwwMDAsMDAwICAgICAgICAgICAxMDAgICAgICAgICAgICAgIDEsMDA3LDc1MSAgICAgICAgICAgICAgICAgMC44JQorIyAxMCwwMDAsMDAwICAgICAgICAgICAxMDAgICAgICAgICAgICAgMTAsMDA5LDQwMSAgICAgICAgICAgICAgICAgMC4xJQorIworIyBUaGVvcmV0aWNhbCBudW1iZXIgb2YgY29tcGFyaXNvbnMgZm9yIGsgc21hbGxlc3Qgb2YgbiByYW5kb20gaW5wdXRzOgorIworIyBTdGVwICAgQ29tcGFyaXNvbnMgICAgICAgICAgICAgICAgICBBY3Rpb24KKyMgLS0tLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICAxICAgICAxLjY2ICogayAgICAgICAgICAgICAgICAgICAgIGhlYXBpZnkgdGhlIGZpcnN0IGstaW5wdXRzCisjICAyICAgICBuIC0gayAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmUgcmVtYWluaW5nIGVsZW1lbnRzIHRvIHRvcCBvZiBoZWFwCisjICAzICAgICBrICogKDEgKyBsZzIoaykpICogbG4obi9rKSAgIHJlcGxhY2UgdGhlIHRvcG1vc3QgdmFsdWUgb24gdGhlIGhlYXAKKyMgIDQgICAgIGsgKiBsZzIoaykgLSAoay8yKSAgICAgICAgICAgZmluYWwgc29ydCBvZiB0aGUgayBtb3N0IGV4dHJlbWUgdmFsdWVzCisjCisjIENvbWJpbmluZyBhbmQgc2ltcGxpZnlpbmcgZm9yIGEgcm91Z2ggZXN0aW1hdGUgZ2l2ZXM6CisjCisjICAgICAgICBjb21wYXJpc29ucyA9IG4gKyBrICogKGxvZyhrLCAyKSAqIGxvZyhuL2spICsgbG9nKGssIDIpICsgbG9nKG4vaykpCisjCisjIENvbXB1dGluZyB0aGUgbnVtYmVyIG9mIGNvbXBhcmlzb25zIGZvciBzdGVwIDM6CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICogRm9yIHRoZSBpLXRoIG5ldyB2YWx1ZSBmcm9tIHRoZSBpdGVyYWJsZSwgdGhlIHByb2JhYmlsaXR5IG9mIGJlaW5nIGluIHRoZQorIyAgIGsgbW9zdCBleHRyZW1lIHZhbHVlcyBpcyBrL2kuICBGb3IgZXhhbXBsZSwgdGhlIHByb2JhYmlsaXR5IG9mIHRoZSAxMDFzdAorIyAgIHZhbHVlIHNlZW4gYmVpbmcgaW4gdGhlIDEwMCBtb3N0IGV4dHJlbWUgdmFsdWVzIGlzIDEwMC8xMDEuCisjICogSWYgdGhlIHZhbHVlIGlzIGEgbmV3IGV4dHJlbWUgdmFsdWUsIHRoZSBjb3N0IG9mIGluc2VydGluZyBpdCBpbnRvIHRoZQorIyAgIGhlYXAgaXMgMSArIGxvZyhrLCAyKS4KKyMgKiBUaGUgcHJvYmFiaWxpdHkgdGltZXMgdGhlIGNvc3QgZ2l2ZXM6CisjICAgICAgICAgICAgKGsvaSkgKiAoMSArIGxvZyhrLCAyKSkKKyMgKiBTdW1taW5nIGFjcm9zcyB0aGUgcmVtYWluaW5nIG4tayBlbGVtZW50cyBnaXZlczoKKyMgICAgICAgICAgICBzdW0oKGsvaSkgKiAoMSArIGxvZyhrLCAyKSkgZm9yIGkgaW4gcmFuZ2UoaysxLCBuKzEpKQorIyAqIFRoaXMgcmVkdWNlcyB0bzoKKyMgICAgICAgICAgICAoSChuKSAtIEgoaykpICogayAqICgxICsgbG9nKGssIDIpKQorIyAqIFdoZXJlIEgobikgaXMgdGhlIG4tdGggaGFybW9uaWMgbnVtYmVyIGVzdGltYXRlZCBieToKKyMgICAgICAgICAgICBnYW1tYSA9IDAuNTc3MjE1NjY0OQorIyAgICAgICAgICAgIEgobikgPSBsb2cobiwgZSkgKyBnYW1tYSArIDEgLyAoMiAqIG4pCisjICAgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYXJtb25pY19zZXJpZXNfKG1hdGhlbWF0aWNzKSNSYXRlX29mX2RpdmVyZ2VuY2UKKyMgKiBTdWJzdGl0dXRpbmcgdGhlIEgobikgZm9ybXVsYToKKyMgICAgICAgICAgICBjb21wYXJpc29ucyA9IGsgKiAoMSArIGxvZyhrLCAyKSkgKiAobG9nKG4vaywgZSkgKyAoMS9uIC0gMS9rKSAvIDIpCisjCisjIFdvcnN0LWNhc2UgZm9yIHN0ZXAgMzoKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJbiB0aGUgd29yc3QgY2FzZSwgdGhlIGlucHV0IGRhdGEgaXMgcmV2ZXJzZWQgc29ydGVkIHNvIHRoYXQgZXZlcnkgbmV3IGVsZW1lbnQKKyMgbXVzdCBiZSBpbnNlcnRlZCBpbiB0aGUgaGVhcDoKKyMKKyMgICAgICAgICAgICAgY29tcGFyaXNvbnMgPSAxLjY2ICogayArIGxvZyhrLCAyKSAqIChuIC0gaykKKyMKKyMgQWx0ZXJuYXRpdmUgQWxnb3JpdGhtcworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE90aGVyIGFsZ29yaXRobXMgd2VyZSBub3QgdXNlZCBiZWNhdXNlIHRoZXk6CisjIDEpIFRvb2sgbXVjaCBtb3JlIGF1eGlsaWFyeSBtZW1vcnksCisjIDIpIE1hZGUgbXVsdGlwbGUgcGFzc2VzIG92ZXIgdGhlIGRhdGEuCisjIDMpIE1hZGUgbW9yZSBjb21wYXJpc29ucyBpbiBjb21tb24gY2FzZXMgKHNtYWxsIGssIGxhcmdlIG4sIHNlbWktcmFuZG9tIGlucHV0KS4KKyMgU2VlIHRoZSBtb3JlIGRldGFpbGVkIGNvbXBhcmlzb24gb2YgYXBwcm9hY2ggYXQ6CisjIGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NzU3My1jb21wYXJlLWFsZ29yaXRobXMtZm9yLWhlYXBxc21hbGxlc3QKKwogZGVmIG5zbWFsbGVzdChuLCBpdGVyYWJsZSwga2V5PU5vbmUpOgogICAgICIiIkZpbmQgdGhlIG4gc21hbGxlc3QgZWxlbWVudHMgaW4gYSBkYXRhc2V0LgogCiAgICAgRXF1aXZhbGVudCB0bzogIHNvcnRlZChpdGVyYWJsZSwga2V5PWtleSlbOm5dCiAgICAgIiIiCi0gICAgIyBTaG9ydC1jdXQgZm9yIG49PTEgaXMgdG8gdXNlIG1pbigpIHdoZW4gbGVuKGl0ZXJhYmxlKT4wCisKKyAgICAjIFNob3J0LWN1dCBmb3Igbj09MSBpcyB0byB1c2UgbWluKCkKICAgICBpZiBuID09IDE6CiAgICAgICAgIGl0ID0gaXRlcihpdGVyYWJsZSkKLSAgICAgICAgaGVhZCA9IGxpc3QoaXNsaWNlKGl0LCAxKSkKLSAgICAgICAgaWYgbm90IGhlYWQ6Ci0gICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgc2VudGluZWwgPSBvYmplY3QoKQogICAgICAgICBpZiBrZXkgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBbbWluKGNoYWluKGhlYWQsIGl0KSldCi0gICAgICAgIHJldHVybiBbbWluKGNoYWluKGhlYWQsIGl0KSwga2V5PWtleSldCisgICAgICAgICAgICByZXN1bHQgPSBtaW4oaXQsIGRlZmF1bHQ9c2VudGluZWwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQgPSBtaW4oaXQsIGRlZmF1bHQ9c2VudGluZWwsIGtleT1rZXkpCisgICAgICAgIHJldHVybiBbXSBpZiByZXN1bHQgaXMgc2VudGluZWwgZWxzZSBbcmVzdWx0XQogCiAgICAgIyBXaGVuIG4+PXNpemUsIGl0J3MgZmFzdGVyIHRvIHVzZSBzb3J0ZWQoKQogICAgIHRyeToKQEAgLTQxMywzMiArNDg1LDU3IEBACiAKICAgICAjIFdoZW4ga2V5IGlzIG5vbmUsIHVzZSBzaW1wbGVyIGRlY29yYXRpb24KICAgICBpZiBrZXkgaXMgTm9uZToKLSAgICAgICAgaXQgPSB6aXAoaXRlcmFibGUsIGNvdW50KCkpICAgICAgICAgICAgICAgICAgICAgICAgICMgZGVjb3JhdGUKLSAgICAgICAgcmVzdWx0ID0gX25zbWFsbGVzdChuLCBpdCkKLSAgICAgICAgcmV0dXJuIFtyWzBdIGZvciByIGluIHJlc3VsdF0gICAgICAgICAgICAgICAgICAgICAgICMgdW5kZWNvcmF0ZQorICAgICAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCisgICAgICAgICMgcHV0IHRoZSByYW5nZShuKSBmaXJzdCBzbyB0aGF0IHppcCgpIGRvZXNuJ3QKKyAgICAgICAgIyBjb25zdW1lIG9uZSB0b28gbWFueSBlbGVtZW50cyBmcm9tIHRoZSBpdGVyYXRvcgorICAgICAgICByZXN1bHQgPSBbKGVsZW0sIGkpIGZvciBpLCBlbGVtIGluIHppcChyYW5nZShuKSwgaXQpXQorICAgICAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICBfaGVhcGlmeV9tYXgocmVzdWx0KQorICAgICAgICB0b3AgPSByZXN1bHRbMF1bMF0KKyAgICAgICAgb3JkZXIgPSBuCisgICAgICAgIF9oZWFwcmVwbGFjZSA9IF9oZWFwcmVwbGFjZV9tYXgKKyAgICAgICAgZm9yIGVsZW0gaW4gaXQ6CisgICAgICAgICAgICBpZiBlbGVtIDwgdG9wOgorICAgICAgICAgICAgICAgIF9oZWFwcmVwbGFjZShyZXN1bHQsIChlbGVtLCBvcmRlcikpCisgICAgICAgICAgICAgICAgdG9wID0gcmVzdWx0WzBdWzBdCisgICAgICAgICAgICAgICAgb3JkZXIgKz0gMQorICAgICAgICByZXN1bHQuc29ydCgpCisgICAgICAgIHJldHVybiBbclswXSBmb3IgciBpbiByZXN1bHRdCiAKICAgICAjIEdlbmVyYWwgY2FzZSwgc2xvd2VzdCBtZXRob2QKLSAgICBpbjEsIGluMiA9IHRlZShpdGVyYWJsZSkKLSAgICBpdCA9IHppcChtYXAoa2V5LCBpbjEpLCBjb3VudCgpLCBpbjIpICAgICAgICAgICAgICAgICAgICMgZGVjb3JhdGUKLSAgICByZXN1bHQgPSBfbnNtYWxsZXN0KG4sIGl0KQotICAgIHJldHVybiBbclsyXSBmb3IgciBpbiByZXN1bHRdICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1bmRlY29yYXRlCisgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQorICAgIHJlc3VsdCA9IFsoa2V5KGVsZW0pLCBpLCBlbGVtKSBmb3IgaSwgZWxlbSBpbiB6aXAocmFuZ2UobiksIGl0KV0KKyAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgX2hlYXBpZnlfbWF4KHJlc3VsdCkKKyAgICB0b3AgPSByZXN1bHRbMF1bMF0KKyAgICBvcmRlciA9IG4KKyAgICBfaGVhcHJlcGxhY2UgPSBfaGVhcHJlcGxhY2VfbWF4CisgICAgZm9yIGVsZW0gaW4gaXQ6CisgICAgICAgIGsgPSBrZXkoZWxlbSkKKyAgICAgICAgaWYgayA8IHRvcDoKKyAgICAgICAgICAgIF9oZWFwcmVwbGFjZShyZXN1bHQsIChrLCBvcmRlciwgZWxlbSkpCisgICAgICAgICAgICB0b3AgPSByZXN1bHRbMF1bMF0KKyAgICAgICAgICAgIG9yZGVyICs9IDEKKyAgICByZXN1bHQuc29ydCgpCisgICAgcmV0dXJuIFtyWzJdIGZvciByIGluIHJlc3VsdF0KIAotX25sYXJnZXN0ID0gbmxhcmdlc3QKIGRlZiBubGFyZ2VzdChuLCBpdGVyYWJsZSwga2V5PU5vbmUpOgogICAgICIiIkZpbmQgdGhlIG4gbGFyZ2VzdCBlbGVtZW50cyBpbiBhIGRhdGFzZXQuCiAKICAgICBFcXVpdmFsZW50IHRvOiAgc29ydGVkKGl0ZXJhYmxlLCBrZXk9a2V5LCByZXZlcnNlPVRydWUpWzpuXQogICAgICIiIgogCi0gICAgIyBTaG9ydC1jdXQgZm9yIG49PTEgaXMgdG8gdXNlIG1heCgpIHdoZW4gbGVuKGl0ZXJhYmxlKT4wCisgICAgIyBTaG9ydC1jdXQgZm9yIG49PTEgaXMgdG8gdXNlIG1heCgpCiAgICAgaWYgbiA9PSAxOgogICAgICAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCi0gICAgICAgIGhlYWQgPSBsaXN0KGlzbGljZShpdCwgMSkpCi0gICAgICAgIGlmIG5vdCBoZWFkOgotICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIHNlbnRpbmVsID0gb2JqZWN0KCkKICAgICAgICAgaWYga2V5IGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gW21heChjaGFpbihoZWFkLCBpdCkpXQotICAgICAgICByZXR1cm4gW21heChjaGFpbihoZWFkLCBpdCksIGtleT1rZXkpXQorICAgICAgICAgICAgcmVzdWx0ID0gbWF4KGl0LCBkZWZhdWx0PXNlbnRpbmVsKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0ID0gbWF4KGl0LCBkZWZhdWx0PXNlbnRpbmVsLCBrZXk9a2V5KQorICAgICAgICByZXR1cm4gW10gaWYgcmVzdWx0IGlzIHNlbnRpbmVsIGVsc2UgW3Jlc3VsdF0KIAogICAgICMgV2hlbiBuPj1zaXplLCBpdCdzIGZhc3RlciB0byB1c2Ugc29ydGVkKCkKICAgICB0cnk6CkBAIC00NTEsMjYgKzU0OCw2MCBAQAogCiAgICAgIyBXaGVuIGtleSBpcyBub25lLCB1c2Ugc2ltcGxlciBkZWNvcmF0aW9uCiAgICAgaWYga2V5IGlzIE5vbmU6Ci0gICAgICAgIGl0ID0gemlwKGl0ZXJhYmxlLCBjb3VudCgwLC0xKSkgICAgICAgICAgICAgICAgICAgICAjIGRlY29yYXRlCi0gICAgICAgIHJlc3VsdCA9IF9ubGFyZ2VzdChuLCBpdCkKLSAgICAgICAgcmV0dXJuIFtyWzBdIGZvciByIGluIHJlc3VsdF0gICAgICAgICAgICAgICAgICAgICAgICMgdW5kZWNvcmF0ZQorICAgICAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCisgICAgICAgIHJlc3VsdCA9IFsoZWxlbSwgaSkgZm9yIGksIGVsZW0gaW4gemlwKHJhbmdlKDAsIC1uLCAtMSksIGl0KV0KKyAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgaGVhcGlmeShyZXN1bHQpCisgICAgICAgIHRvcCA9IHJlc3VsdFswXVswXQorICAgICAgICBvcmRlciA9IC1uCisgICAgICAgIF9oZWFwcmVwbGFjZSA9IGhlYXByZXBsYWNlCisgICAgICAgIGZvciBlbGVtIGluIGl0OgorICAgICAgICAgICAgaWYgdG9wIDwgZWxlbToKKyAgICAgICAgICAgICAgICBfaGVhcHJlcGxhY2UocmVzdWx0LCAoZWxlbSwgb3JkZXIpKQorICAgICAgICAgICAgICAgIHRvcCA9IHJlc3VsdFswXVswXQorICAgICAgICAgICAgICAgIG9yZGVyIC09IDEKKyAgICAgICAgcmVzdWx0LnNvcnQocmV2ZXJzZT1UcnVlKQorICAgICAgICByZXR1cm4gW3JbMF0gZm9yIHIgaW4gcmVzdWx0XQogCiAgICAgIyBHZW5lcmFsIGNhc2UsIHNsb3dlc3QgbWV0aG9kCi0gICAgaW4xLCBpbjIgPSB0ZWUoaXRlcmFibGUpCi0gICAgaXQgPSB6aXAobWFwKGtleSwgaW4xKSwgY291bnQoMCwtMSksIGluMikgICAgICAgICAgICAgICAjIGRlY29yYXRlCi0gICAgcmVzdWx0ID0gX25sYXJnZXN0KG4sIGl0KQotICAgIHJldHVybiBbclsyXSBmb3IgciBpbiByZXN1bHRdICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1bmRlY29yYXRlCisgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQorICAgIHJlc3VsdCA9IFsoa2V5KGVsZW0pLCBpLCBlbGVtKSBmb3IgaSwgZWxlbSBpbiB6aXAocmFuZ2UoMCwgLW4sIC0xKSwgaXQpXQorICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgIHJldHVybiByZXN1bHQKKyAgICBoZWFwaWZ5KHJlc3VsdCkKKyAgICB0b3AgPSByZXN1bHRbMF1bMF0KKyAgICBvcmRlciA9IC1uCisgICAgX2hlYXByZXBsYWNlID0gaGVhcHJlcGxhY2UKKyAgICBmb3IgZWxlbSBpbiBpdDoKKyAgICAgICAgayA9IGtleShlbGVtKQorICAgICAgICBpZiB0b3AgPCBrOgorICAgICAgICAgICAgX2hlYXByZXBsYWNlKHJlc3VsdCwgKGssIG9yZGVyLCBlbGVtKSkKKyAgICAgICAgICAgIHRvcCA9IHJlc3VsdFswXVswXQorICAgICAgICAgICAgb3JkZXIgLT0gMQorICAgIHJlc3VsdC5zb3J0KHJldmVyc2U9VHJ1ZSkKKyAgICByZXR1cm4gW3JbMl0gZm9yIHIgaW4gcmVzdWx0XQorCisjIElmIGF2YWlsYWJsZSwgdXNlIEMgaW1wbGVtZW50YXRpb24KK3RyeToKKyAgICBmcm9tIF9oZWFwcSBpbXBvcnQgKgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK3RyeToKKyAgICBmcm9tIF9oZWFwcSBpbXBvcnQgX2hlYXByZXBsYWNlX21heAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK3RyeToKKyAgICBmcm9tIF9oZWFwcSBpbXBvcnQgX2hlYXBpZnlfbWF4CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcwordHJ5OgorICAgIGZyb20gX2hlYXBxIGltcG9ydCBfaGVhcHBvcF9tYXgKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICAjIFNpbXBsZSBzYW5pdHkgdGVzdAotICAgIGhlYXAgPSBbXQotICAgIGRhdGEgPSBbMSwgMywgNSwgNywgOSwgMiwgNCwgNiwgOCwgMF0KLSAgICBmb3IgaXRlbSBpbiBkYXRhOgotICAgICAgICBoZWFwcHVzaChoZWFwLCBpdGVtKQotICAgIHNvcnQgPSBbXQotICAgIHdoaWxlIGhlYXA6Ci0gICAgICAgIHNvcnQuYXBwZW5kKGhlYXBwb3AoaGVhcCkpCi0gICAgcHJpbnQoc29ydCkKIAogICAgIGltcG9ydCBkb2N0ZXN0Ci0gICAgZG9jdGVzdC50ZXN0bW9kKCkKKyAgICBwcmludChkb2N0ZXN0LnRlc3Rtb2QoKSkKZGlmZiAtLWdpdCBhL0xpYi9odG1sL2VudGl0aWVzLnB5IGIvTGliL2h0bWwvZW50aXRpZXMucHkKaW5kZXggYmUzZjYyNy4uOTFlYTVkYSAxMDA2NDQKLS0tIGEvTGliL2h0bWwvZW50aXRpZXMucHkKKysrIGIvTGliL2h0bWwvZW50aXRpZXMucHkKQEAgLTEsNSArMSw4IEBACiAiIiJIVE1MIGNoYXJhY3RlciBlbnRpdHkgcmVmZXJlbmNlcy4iIiIKIAorX19hbGxfXyA9IFsnaHRtbDUnLCAnbmFtZTJjb2RlcG9pbnQnLCAnY29kZXBvaW50Mm5hbWUnLCAnZW50aXR5ZGVmcyddCisKKwogIyBtYXBzIHRoZSBIVE1MIGVudGl0eSBuYW1lIHRvIHRoZSBVbmljb2RlIGNvZGUgcG9pbnQKIG5hbWUyY29kZXBvaW50ID0gewogICAgICdBRWxpZyc6ICAgIDB4MDBjNiwgIyBsYXRpbiBjYXBpdGFsIGxldHRlciBBRSA9IGxhdGluIGNhcGl0YWwgbGlnYXR1cmUgQUUsIFUrMDBDNiBJU09sYXQxCmRpZmYgLS1naXQgYS9MaWIvaHRtbC9wYXJzZXIucHkgYi9MaWIvaHRtbC9wYXJzZXIucHkKaW5kZXggOWFlMzFiOS4uNDNlNjQxMSAxMDA2NDQKLS0tIGEvTGliL2h0bWwvcGFyc2VyLnB5CisrKyBiL0xpYi9odG1sL3BhcnNlci5weQpAQCAtMjksMzUgKzI5LDE1IEBACiBwaWNsb3NlID0gcmUuY29tcGlsZSgnPicpCiBjb21tZW50Y2xvc2UgPSByZS5jb21waWxlKHInLS1ccyo+JykKICMgTm90ZToKLSMgIDEpIHRoZSBzdHJpY3QgYXR0cmZpbmQgaXNuJ3QgcmVhbGx5IHN0cmljdCwgYnV0IHdlIGNhbid0IG1ha2UgaXQKLSMgICAgIGNvcnJlY3RseSBzdHJpY3Qgd2l0aG91dCBicmVha2luZyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5OwotIyAgMikgaWYgeW91IGNoYW5nZSB0YWdmaW5kL2F0dHJmaW5kIHJlbWVtYmVyIHRvIHVwZGF0ZSBsb2NhdGVzdGFydHRhZ2VuZCB0b287Ci0jICAzKSBpZiB5b3UgY2hhbmdlIHRhZ2ZpbmQvYXR0cmZpbmQgYW5kL29yIGxvY2F0ZXN0YXJ0dGFnZW5kIHRoZSBwYXJzZXIgd2lsbAorIyAgMSkgaWYgeW91IGNoYW5nZSB0YWdmaW5kL2F0dHJmaW5kIHJlbWVtYmVyIHRvIHVwZGF0ZSBsb2NhdGVzdGFydHRhZ2VuZCB0b287CisjICAyKSBpZiB5b3UgY2hhbmdlIHRhZ2ZpbmQvYXR0cmZpbmQgYW5kL29yIGxvY2F0ZXN0YXJ0dGFnZW5kIHRoZSBwYXJzZXIgd2lsbAogIyAgICAgZXhwbG9kZSwgc28gZG9uJ3QgZG8gaXQuCi10YWdmaW5kID0gcmUuY29tcGlsZSgnKFthLXpBLVpdWy0uYS16QS1aMC05Ol9dKikoPzpcc3wvKD8hPikpKicpCiAjIHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS90b2tlbml6YXRpb24uaHRtbCN0YWctb3Blbi1zdGF0ZQogIyBhbmQgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvdG9rZW5pemF0aW9uLmh0bWwjdGFnLW5hbWUtc3RhdGUKIHRhZ2ZpbmRfdG9sZXJhbnQgPSByZS5jb21waWxlKCcoW2EtekEtWl1bXlx0XG5cclxmIC8+XHgwMF0qKSg/OlxzfC8oPyE+KSkqJykKLWF0dHJmaW5kID0gcmUuY29tcGlsZSgKLSAgICByJ1xzKihbYS16QS1aX11bLS46YS16QS1aXzAtOV0qKShccyo9XHMqJwotICAgIHInKFwnW15cJ10qXCd8IlteIl0qInxbXlxzIlwnPTw+YF0qKSk/JykKIGF0dHJmaW5kX3RvbGVyYW50ID0gcmUuY29tcGlsZSgKICAgICByJygoPzw9W1wnIlxzL10pW15ccy8+XVteXHMvPT5dKikoXHMqPStccyonCiAgICAgcicoXCdbXlwnXSpcJ3wiW14iXSoifCg/IVtcJyJdKVtePlxzXSopKT8oPzpcc3wvKD8hPikpKicpCi1sb2NhdGVzdGFydHRhZ2VuZCA9IHJlLmNvbXBpbGUociIiIgotICA8W2EtekEtWl1bLS5hLXpBLVowLTk6X10qICAgICAgICAgICMgdGFnIG5hbWUKLSAgKD86XHMrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdoaXRlc3BhY2UgYmVmb3JlIGF0dHJpYnV0ZSBuYW1lCi0gICAgKD86W2EtekEtWl9dWy0uOmEtekEtWjAtOV9dKiAgICAgIyBhdHRyaWJ1dGUgbmFtZQotICAgICAgKD86XHMqPVxzKiAgICAgICAgICAgICAgICAgICAgICMgdmFsdWUgaW5kaWNhdG9yCi0gICAgICAgICg/OidbXiddKicgICAgICAgICAgICAgICAgICAgIyBMSVRBLWVuY2xvc2VkIHZhbHVlCi0gICAgICAgICAgfFwiW15cIl0qXCIgICAgICAgICAgICAgICAgIyBMSVQtZW5jbG9zZWQgdmFsdWUKLSAgICAgICAgICB8W14nXCI+XHNdKyAgICAgICAgICAgICAgICAjIGJhcmUgdmFsdWUKLSAgICAgICAgICkKLSAgICAgICApPwotICAgICApCi0gICApKgotICBccyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdHJhaWxpbmcgd2hpdGVzcGFjZQotIiIiLCByZS5WRVJCT1NFKQogbG9jYXRlc3RhcnR0YWdlbmRfdG9sZXJhbnQgPSByZS5jb21waWxlKHIiIiIKICAgPFthLXpBLVpdW15cdFxuXHJcZiAvPlx4MDBdKiAgICAgICAjIHRhZyBuYW1lCiAgICg/Oltccy9dKiAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCB3aGl0ZXNwYWNlIGJlZm9yZSBhdHRyaWJ1dGUgbmFtZQpAQCAtNzksMjUgKzU5LDYgQEAKIGVuZHRhZ2ZpbmQgPSByZS5jb21waWxlKCc8L1xzKihbYS16QS1aXVstLmEtekEtWjAtOTpfXSopXHMqPicpCiAKIAotY2xhc3MgSFRNTFBhcnNlRXJyb3IoRXhjZXB0aW9uKToKLSAgICAiIiJFeGNlcHRpb24gcmFpc2VkIGZvciBhbGwgcGFyc2UgZXJyb3JzLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZywgcG9zaXRpb249KE5vbmUsIE5vbmUpKToKLSAgICAgICAgYXNzZXJ0IG1zZwotICAgICAgICBzZWxmLm1zZyA9IG1zZwotICAgICAgICBzZWxmLmxpbmVubyA9IHBvc2l0aW9uWzBdCi0gICAgICAgIHNlbGYub2Zmc2V0ID0gcG9zaXRpb25bMV0KLQotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXN1bHQgPSBzZWxmLm1zZwotICAgICAgICBpZiBzZWxmLmxpbmVubyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArICIsIGF0IGxpbmUgJWQiICUgc2VsZi5saW5lbm8KLSAgICAgICAgaWYgc2VsZi5vZmZzZXQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKyAiLCBjb2x1bW4gJWQiICUgKHNlbGYub2Zmc2V0ICsgMSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0KLV9kZWZhdWx0X3NlbnRpbmVsID0gb2JqZWN0KCkKIAogY2xhc3MgSFRNTFBhcnNlcihfbWFya3VwYmFzZS5QYXJzZXJCYXNlKToKICAgICAiIiJGaW5kIHRhZ3MgYW5kIG90aGVyIG1hcmt1cCBhbmQgY2FsbCBoYW5kbGVyIGZ1bmN0aW9ucy4KQEAgLTEyMywyNyArODQsMTIgQEAKIAogICAgIENEQVRBX0NPTlRFTlRfRUxFTUVOVFMgPSAoInNjcmlwdCIsICJzdHlsZSIpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyaWN0PV9kZWZhdWx0X3NlbnRpbmVsLCAqLAotICAgICAgICAgICAgICAgICBjb252ZXJ0X2NoYXJyZWZzPV9kZWZhdWx0X3NlbnRpbmVsKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiwgY29udmVydF9jaGFycmVmcz1UcnVlKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSBhbmQgcmVzZXQgdGhpcyBpbnN0YW5jZS4KIAotICAgICAgICBJZiBjb252ZXJ0X2NoYXJyZWZzIGlzIFRydWUgKGRlZmF1bHQ6IEZhbHNlKSwgYWxsIGNoYXJhY3RlciByZWZlcmVuY2VzCisgICAgICAgIElmIGNvbnZlcnRfY2hhcnJlZnMgaXMgVHJ1ZSAodGhlIGRlZmF1bHQpLCBhbGwgY2hhcmFjdGVyIHJlZmVyZW5jZXMKICAgICAgICAgYXJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIFVuaWNvZGUgY2hhcmFjdGVycy4KLSAgICAgICAgSWYgc3RyaWN0IGlzIHNldCB0byBGYWxzZSAodGhlIGRlZmF1bHQpIHRoZSBwYXJzZXIgd2lsbCBwYXJzZSBpbnZhbGlkCi0gICAgICAgIG1hcmt1cCwgb3RoZXJ3aXNlIGl0IHdpbGwgcmFpc2UgYW4gZXJyb3IuICBOb3RlIHRoYXQgdGhlIHN0cmljdCBtb2RlCi0gICAgICAgIGFuZCBhcmd1bWVudCBhcmUgZGVwcmVjYXRlZC4KICAgICAgICAgIiIiCi0gICAgICAgIGlmIHN0cmljdCBpcyBub3QgX2RlZmF1bHRfc2VudGluZWw6Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGUgc3RyaWN0IGFyZ3VtZW50IGFuZCBtb2RlIGFyZSBkZXByZWNhdGVkLiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3RyaWN0ID0gRmFsc2UgICMgZGVmYXVsdAotICAgICAgICBzZWxmLnN0cmljdCA9IHN0cmljdAotICAgICAgICBpZiBjb252ZXJ0X2NoYXJyZWZzIGlzIF9kZWZhdWx0X3NlbnRpbmVsOgotICAgICAgICAgICAgY29udmVydF9jaGFycmVmcyA9IEZhbHNlICAjIGRlZmF1bHQKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSB2YWx1ZSBvZiBjb252ZXJ0X2NoYXJyZWZzIHdpbGwgYmVjb21lIFRydWUgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiMy41LiBZb3UgYXJlIGVuY291cmFnZWQgdG8gc2V0IHRoZSB2YWx1ZSBleHBsaWNpdGx5LiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICBzZWxmLmNvbnZlcnRfY2hhcnJlZnMgPSBjb252ZXJ0X2NoYXJyZWZzCiAgICAgICAgIHNlbGYucmVzZXQoKQogCkBAIC0xNjgsMTEgKzExNCw2IEBACiAgICAgICAgICIiIkhhbmRsZSBhbnkgYnVmZmVyZWQgZGF0YS4iIiIKICAgICAgICAgc2VsZi5nb2FoZWFkKDEpCiAKLSAgICBkZWYgZXJyb3Ioc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSAnZXJyb3InIG1ldGhvZCBpcyBkZXByZWNhdGVkLiIsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgIHJhaXNlIEhUTUxQYXJzZUVycm9yKG1lc3NhZ2UsIHNlbGYuZ2V0cG9zKCkpCi0KICAgICBfX3N0YXJ0dGFnX3RleHQgPSBOb25lCiAKICAgICBkZWYgZ2V0X3N0YXJ0dGFnX3RleHQoc2VsZik6CkBAIC0yMzUsMTAgKzE3Niw3IEBACiAgICAgICAgICAgICAgICAgZWxpZiBzdGFydHN3aXRoKCI8PyIsIGkpOgogICAgICAgICAgICAgICAgICAgICBrID0gc2VsZi5wYXJzZV9waShpKQogICAgICAgICAgICAgICAgIGVsaWYgc3RhcnRzd2l0aCgiPCEiLCBpKToKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5zdHJpY3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICBrID0gc2VsZi5wYXJzZV9kZWNsYXJhdGlvbihpKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgayA9IHNlbGYucGFyc2VfaHRtbF9kZWNsYXJhdGlvbihpKQorICAgICAgICAgICAgICAgICAgICBrID0gc2VsZi5wYXJzZV9odG1sX2RlY2xhcmF0aW9uKGkpCiAgICAgICAgICAgICAgICAgZWxpZiAoaSArIDEpIDwgbjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfZGF0YSgiPCIpCiAgICAgICAgICAgICAgICAgICAgIGsgPSBpICsgMQpAQCAtMjQ3LDggKzE4NSw2IEBACiAgICAgICAgICAgICAgICAgaWYgayA8IDA6CiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBlbmQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnN0cmljdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoIkVPRiBpbiBtaWRkbGUgb2YgY29uc3RydWN0IikKICAgICAgICAgICAgICAgICAgICAgayA9IHJhd2RhdGEuZmluZCgnPicsIGkgKyAxKQogICAgICAgICAgICAgICAgICAgICBpZiBrIDwgMDoKICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSByYXdkYXRhLmZpbmQoJzwnLCBpICsgMSkKQEAgLTI5MCwxMyArMjI2LDEwIEBACiAgICAgICAgICAgICAgICAgaWYgbWF0Y2g6CiAgICAgICAgICAgICAgICAgICAgICMgbWF0Y2guZ3JvdXAoKSB3aWxsIGNvbnRhaW4gYXQgbGVhc3QgMiBjaGFycwogICAgICAgICAgICAgICAgICAgICBpZiBlbmQgYW5kIG1hdGNoLmdyb3VwKCkgPT0gcmF3ZGF0YVtpOl06Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnN0cmljdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKCJFT0YgaW4gbWlkZGxlIG9mIGVudGl0eSBvciBjaGFyIHJlZiIpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBtYXRjaC5lbmQoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGsgPD0gaToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IG4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gc2VsZi51cGRhdGVwb3MoaSwgaSArIDEpCisgICAgICAgICAgICAgICAgICAgICAgICBrID0gbWF0Y2guZW5kKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGsgPD0gaToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gbgorICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHNlbGYudXBkYXRlcG9zKGksIGkgKyAxKQogICAgICAgICAgICAgICAgICAgICAjIGluY29tcGxldGUKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBlbGlmIChpICsgMSkgPCBuOgpAQCAtMzc1LDE4ICszMDgsMTIgQEAKIAogICAgICAgICAjIE5vdyBwYXJzZSB0aGUgZGF0YSBiZXR3ZWVuIGkrMSBhbmQgaiBpbnRvIGEgdGFnIGFuZCBhdHRycwogICAgICAgICBhdHRycyA9IFtdCi0gICAgICAgIGlmIHNlbGYuc3RyaWN0OgotICAgICAgICAgICAgbWF0Y2ggPSB0YWdmaW5kLm1hdGNoKHJhd2RhdGEsIGkrMSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1hdGNoID0gdGFnZmluZF90b2xlcmFudC5tYXRjaChyYXdkYXRhLCBpKzEpCisgICAgICAgIG1hdGNoID0gdGFnZmluZF90b2xlcmFudC5tYXRjaChyYXdkYXRhLCBpKzEpCiAgICAgICAgIGFzc2VydCBtYXRjaCwgJ3VuZXhwZWN0ZWQgY2FsbCB0byBwYXJzZV9zdGFydHRhZygpJwogICAgICAgICBrID0gbWF0Y2guZW5kKCkKICAgICAgICAgc2VsZi5sYXN0dGFnID0gdGFnID0gbWF0Y2guZ3JvdXAoMSkubG93ZXIoKQogICAgICAgICB3aGlsZSBrIDwgZW5kcG9zOgotICAgICAgICAgICAgaWYgc2VsZi5zdHJpY3Q6Ci0gICAgICAgICAgICAgICAgbSA9IGF0dHJmaW5kLm1hdGNoKHJhd2RhdGEsIGspCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG0gPSBhdHRyZmluZF90b2xlcmFudC5tYXRjaChyYXdkYXRhLCBrKQorICAgICAgICAgICAgbSA9IGF0dHJmaW5kX3RvbGVyYW50Lm1hdGNoKHJhd2RhdGEsIGspCiAgICAgICAgICAgICBpZiBub3QgbToKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgYXR0cm5hbWUsIHJlc3QsIGF0dHJ2YWx1ZSA9IG0uZ3JvdXAoMSwgMiwgMykKQEAgLTQwOSw5ICszMzYsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIC0gc2VsZi5fX3N0YXJ0dGFnX3RleHQucmZpbmQoIlxuIikKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0ICsgbGVuKHNlbGYuX19zdGFydHRhZ190ZXh0KQotICAgICAgICAgICAgaWYgc2VsZi5zdHJpY3Q6Ci0gICAgICAgICAgICAgICAgc2VsZi5lcnJvcigianVuayBjaGFyYWN0ZXJzIGluIHN0YXJ0IHRhZzogJXIiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAlIChyYXdkYXRhW2s6ZW5kcG9zXVs6MjBdLCkpCiAgICAgICAgICAgICBzZWxmLmhhbmRsZV9kYXRhKHJhd2RhdGFbaTplbmRwb3NdKQogICAgICAgICAgICAgcmV0dXJuIGVuZHBvcwogICAgICAgICBpZiBlbmQuZW5kc3dpdGgoJy8+Jyk6CkBAIC00MjcsMTAgKzM1MSw3IEBACiAgICAgIyBvciAtMSBpZiBpbmNvbXBsZXRlLgogICAgIGRlZiBjaGVja19mb3Jfd2hvbGVfc3RhcnRfdGFnKHNlbGYsIGkpOgogICAgICAgICByYXdkYXRhID0gc2VsZi5yYXdkYXRhCi0gICAgICAgIGlmIHNlbGYuc3RyaWN0OgotICAgICAgICAgICAgbSA9IGxvY2F0ZXN0YXJ0dGFnZW5kLm1hdGNoKHJhd2RhdGEsIGkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtID0gbG9jYXRlc3RhcnR0YWdlbmRfdG9sZXJhbnQubWF0Y2gocmF3ZGF0YSwgaSkKKyAgICAgICAgbSA9IGxvY2F0ZXN0YXJ0dGFnZW5kX3RvbGVyYW50Lm1hdGNoKHJhd2RhdGEsIGkpCiAgICAgICAgIGlmIG06CiAgICAgICAgICAgICBqID0gbS5lbmQoKQogICAgICAgICAgICAgbmV4dCA9IHJhd2RhdGFbajpqKzFdCkBAIC00NDMsOSArMzY0LDYgQEAKICAgICAgICAgICAgICAgICAgICAgIyBidWZmZXIgYm91bmRhcnkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgICAgICAgIyBlbHNlIGJvZ3VzIGlucHV0Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5zdHJpY3Q6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlcG9zKGksIGogKyAxKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKCJtYWxmb3JtZWQgZW1wdHkgc3RhcnQgdGFnIikKICAgICAgICAgICAgICAgICBpZiBqID4gaToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGoKICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtNDU4LDkgKzM3Niw2IEBACiAgICAgICAgICAgICAgICAgIyBlbmQgb2YgaW5wdXQgaW4gb3IgYmVmb3JlIGF0dHJpYnV0ZSB2YWx1ZSwgb3Igd2UgaGF2ZSB0aGUKICAgICAgICAgICAgICAgICAjICcvJyBmcm9tIGEgJy8+JyBlbmRpbmcKICAgICAgICAgICAgICAgICByZXR1cm4gLTEKLSAgICAgICAgICAgIGlmIHNlbGYuc3RyaWN0OgotICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlcG9zKGksIGopCi0gICAgICAgICAgICAgICAgc2VsZi5lcnJvcigibWFsZm9ybWVkIHN0YXJ0IHRhZyIpCiAgICAgICAgICAgICBpZiBqID4gaToKICAgICAgICAgICAgICAgICByZXR1cm4gagogICAgICAgICAgICAgZWxzZToKQEAgLTQ4MCw4ICszOTUsNiBAQAogICAgICAgICAgICAgaWYgc2VsZi5jZGF0YV9lbGVtIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2RhdGEocmF3ZGF0YVtpOmd0cG9zXSkKICAgICAgICAgICAgICAgICByZXR1cm4gZ3Rwb3MKLSAgICAgICAgICAgIGlmIHNlbGYuc3RyaWN0OgotICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoImJhZCBlbmQgdGFnOiAlciIgJSAocmF3ZGF0YVtpOmd0cG9zXSwpKQogICAgICAgICAgICAgIyBmaW5kIHRoZSBuYW1lOiB3My5vcmcvVFIvaHRtbDUvdG9rZW5pemF0aW9uLmh0bWwjdGFnLW5hbWUtc3RhdGUKICAgICAgICAgICAgIG5hbWVtYXRjaCA9IHRhZ2ZpbmRfdG9sZXJhbnQubWF0Y2gocmF3ZGF0YSwgaSsyKQogICAgICAgICAgICAgaWYgbm90IG5hbWVtYXRjaDoKQEAgLTU0Nyw4ICs0NjAsNyBAQAogICAgICAgICBwYXNzCiAKICAgICBkZWYgdW5rbm93bl9kZWNsKHNlbGYsIGRhdGEpOgotICAgICAgICBpZiBzZWxmLnN0cmljdDoKLSAgICAgICAgICAgIHNlbGYuZXJyb3IoInVua25vd24gZGVjbGFyYXRpb246ICVyIiAlIChkYXRhLCkpCisgICAgICAgIHBhc3MKIAogICAgICMgSW50ZXJuYWwgLS0gaGVscGVyIHRvIHJlbW92ZSBzcGVjaWFsIGNoYXJhY3RlciBxdW90aW5nCiAgICAgZGVmIHVuZXNjYXBlKHNlbGYsIHMpOgpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvX19pbml0X18ucHkgYi9MaWIvaHR0cC9fX2luaXRfXy5weQppbmRleCAxOTZkMzc4Li5kNDMzNGNjIDEwMDY0NAotLS0gYS9MaWIvaHR0cC9fX2luaXRfXy5weQorKysgYi9MaWIvaHR0cC9fX2luaXRfXy5weQpAQCAtMSArMSwxMzQgQEAKLSMgVGhpcyBkaXJlY3RvcnkgaXMgYSBQeXRob24gcGFja2FnZS4KK2Zyb20gZW51bSBpbXBvcnQgSW50RW51bQorCitfX2FsbF9fID0gWydIVFRQU3RhdHVzJ10KKworY2xhc3MgSFRUUFN0YXR1cyhJbnRFbnVtKToKKyAgICAiIiJIVFRQIHN0YXR1cyBjb2RlcyBhbmQgcmVhc29uIHBocmFzZXMKKworICAgIFN0YXR1cyBjb2RlcyBmcm9tIHRoZSBmb2xsb3dpbmcgUkZDcyBhcmUgYWxsIG9ic2VydmVkOgorCisgICAgICAgICogUkZDIDcyMzE6IEh5cGVydGV4dCBUcmFuc2ZlciBQcm90b2NvbCAoSFRUUC8xLjEpLCBvYnNvbGV0ZXMgMjYxNgorICAgICAgICAqIFJGQyA2NTg1OiBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzCisgICAgICAgICogUkZDIDMyMjk6IERlbHRhIGVuY29kaW5nIGluIEhUVFAKKyAgICAgICAgKiBSRkMgNDkxODogSFRUUCBFeHRlbnNpb25zIGZvciBXZWJEQVYsIG9ic29sZXRlcyAyNTE4CisgICAgICAgICogUkZDIDU4NDI6IEJpbmRpbmcgRXh0ZW5zaW9ucyB0byBXZWJEQVYKKyAgICAgICAgKiBSRkMgNzIzODogUGVybWFuZW50IFJlZGlyZWN0CisgICAgICAgICogUkZDIDIyOTU6IFRyYW5zcGFyZW50IENvbnRlbnQgTmVnb3RpYXRpb24gaW4gSFRUUAorICAgICAgICAqIFJGQyAyNzc0OiBBbiBIVFRQIEV4dGVuc2lvbiBGcmFtZXdvcmsKKyAgICAiIiIKKyAgICBkZWYgX19uZXdfXyhjbHMsIHZhbHVlLCBwaHJhc2UsIGRlc2NyaXB0aW9uPScnKToKKyAgICAgICAgb2JqID0gaW50Ll9fbmV3X18oY2xzLCB2YWx1ZSkKKyAgICAgICAgb2JqLl92YWx1ZV8gPSB2YWx1ZQorCisgICAgICAgIG9iai5waHJhc2UgPSBwaHJhc2UKKyAgICAgICAgb2JqLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24KKyAgICAgICAgcmV0dXJuIG9iagorCisgICAgIyBpbmZvcm1hdGlvbmFsCisgICAgQ09OVElOVUUgPSAxMDAsICdDb250aW51ZScsICdSZXF1ZXN0IHJlY2VpdmVkLCBwbGVhc2UgY29udGludWUnCisgICAgU1dJVENISU5HX1BST1RPQ09MUyA9ICgxMDEsICdTd2l0Y2hpbmcgUHJvdG9jb2xzJywKKyAgICAgICAgICAgICdTd2l0Y2hpbmcgdG8gbmV3IHByb3RvY29sOyBvYmV5IFVwZ3JhZGUgaGVhZGVyJykKKyAgICBQUk9DRVNTSU5HID0gMTAyLCAnUHJvY2Vzc2luZycKKworICAgICMgc3VjY2VzcworICAgIE9LID0gMjAwLCAnT0snLCAnUmVxdWVzdCBmdWxmaWxsZWQsIGRvY3VtZW50IGZvbGxvd3MnCisgICAgQ1JFQVRFRCA9IDIwMSwgJ0NyZWF0ZWQnLCAnRG9jdW1lbnQgY3JlYXRlZCwgVVJMIGZvbGxvd3MnCisgICAgQUNDRVBURUQgPSAoMjAyLCAnQWNjZXB0ZWQnLAorICAgICAgICAnUmVxdWVzdCBhY2NlcHRlZCwgcHJvY2Vzc2luZyBjb250aW51ZXMgb2ZmLWxpbmUnKQorICAgIE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OID0gKDIwMywKKyAgICAgICAgJ05vbi1BdXRob3JpdGF0aXZlIEluZm9ybWF0aW9uJywgJ1JlcXVlc3QgZnVsZmlsbGVkIGZyb20gY2FjaGUnKQorICAgIE5PX0NPTlRFTlQgPSAyMDQsICdObyBDb250ZW50JywgJ1JlcXVlc3QgZnVsZmlsbGVkLCBub3RoaW5nIGZvbGxvd3MnCisgICAgUkVTRVRfQ09OVEVOVCA9IDIwNSwgJ1Jlc2V0IENvbnRlbnQnLCAnQ2xlYXIgaW5wdXQgZm9ybSBmb3IgZnVydGhlciBpbnB1dCcKKyAgICBQQVJUSUFMX0NPTlRFTlQgPSAyMDYsICdQYXJ0aWFsIENvbnRlbnQnLCAnUGFydGlhbCBjb250ZW50IGZvbGxvd3MnCisgICAgTVVMVElfU1RBVFVTID0gMjA3LCAnTXVsdGktU3RhdHVzJworICAgIEFMUkVBRFlfUkVQT1JURUQgPSAyMDgsICdBbHJlYWR5IFJlcG9ydGVkJworICAgIElNX1VTRUQgPSAyMjYsICdJTSBVc2VkJworCisgICAgIyByZWRpcmVjdGlvbgorICAgIE1VTFRJUExFX0NIT0lDRVMgPSAoMzAwLCAnTXVsdGlwbGUgQ2hvaWNlcycsCisgICAgICAgICdPYmplY3QgaGFzIHNldmVyYWwgcmVzb3VyY2VzIC0tIHNlZSBVUkkgbGlzdCcpCisgICAgTU9WRURfUEVSTUFORU5UTFkgPSAoMzAxLCAnTW92ZWQgUGVybWFuZW50bHknLAorICAgICAgICAnT2JqZWN0IG1vdmVkIHBlcm1hbmVudGx5IC0tIHNlZSBVUkkgbGlzdCcpCisgICAgRk9VTkQgPSAzMDIsICdGb3VuZCcsICdPYmplY3QgbW92ZWQgdGVtcG9yYXJpbHkgLS0gc2VlIFVSSSBsaXN0JworICAgIFNFRV9PVEhFUiA9IDMwMywgJ1NlZSBPdGhlcicsICdPYmplY3QgbW92ZWQgLS0gc2VlIE1ldGhvZCBhbmQgVVJMIGxpc3QnCisgICAgTk9UX01PRElGSUVEID0gKDMwNCwgJ05vdCBNb2RpZmllZCcsCisgICAgICAgICdEb2N1bWVudCBoYXMgbm90IGNoYW5nZWQgc2luY2UgZ2l2ZW4gdGltZScpCisgICAgVVNFX1BST1hZID0gKDMwNSwgJ1VzZSBQcm94eScsCisgICAgICAgICdZb3UgbXVzdCB1c2UgcHJveHkgc3BlY2lmaWVkIGluIExvY2F0aW9uIHRvIGFjY2VzcyB0aGlzIHJlc291cmNlJykKKyAgICBURU1QT1JBUllfUkVESVJFQ1QgPSAoMzA3LCAnVGVtcG9yYXJ5IFJlZGlyZWN0JywKKyAgICAgICAgJ09iamVjdCBtb3ZlZCB0ZW1wb3JhcmlseSAtLSBzZWUgVVJJIGxpc3QnKQorICAgIFBFUk1BTkVOVF9SRURJUkVDVCA9ICgzMDgsICdQZXJtYW5lbnQgUmVkaXJlY3QnLAorICAgICAgICAnT2JqZWN0IG1vdmVkIHRlbXBvcmFyaWx5IC0tIHNlZSBVUkkgbGlzdCcpCisKKyAgICAjIGNsaWVudCBlcnJvcgorICAgIEJBRF9SRVFVRVNUID0gKDQwMCwgJ0JhZCBSZXF1ZXN0JywKKyAgICAgICAgJ0JhZCByZXF1ZXN0IHN5bnRheCBvciB1bnN1cHBvcnRlZCBtZXRob2QnKQorICAgIFVOQVVUSE9SSVpFRCA9ICg0MDEsICdVbmF1dGhvcml6ZWQnLAorICAgICAgICAnTm8gcGVybWlzc2lvbiAtLSBzZWUgYXV0aG9yaXphdGlvbiBzY2hlbWVzJykKKyAgICBQQVlNRU5UX1JFUVVJUkVEID0gKDQwMiwgJ1BheW1lbnQgUmVxdWlyZWQnLAorICAgICAgICAnTm8gcGF5bWVudCAtLSBzZWUgY2hhcmdpbmcgc2NoZW1lcycpCisgICAgRk9SQklEREVOID0gKDQwMywgJ0ZvcmJpZGRlbicsCisgICAgICAgICdSZXF1ZXN0IGZvcmJpZGRlbiAtLSBhdXRob3JpemF0aW9uIHdpbGwgbm90IGhlbHAnKQorICAgIE5PVF9GT1VORCA9ICg0MDQsICdOb3QgRm91bmQnLAorICAgICAgICAnTm90aGluZyBtYXRjaGVzIHRoZSBnaXZlbiBVUkknKQorICAgIE1FVEhPRF9OT1RfQUxMT1dFRCA9ICg0MDUsICdNZXRob2QgTm90IEFsbG93ZWQnLAorICAgICAgICAnU3BlY2lmaWVkIG1ldGhvZCBpcyBpbnZhbGlkIGZvciB0aGlzIHJlc291cmNlJykKKyAgICBOT1RfQUNDRVBUQUJMRSA9ICg0MDYsICdOb3QgQWNjZXB0YWJsZScsCisgICAgICAgICdVUkkgbm90IGF2YWlsYWJsZSBpbiBwcmVmZXJyZWQgZm9ybWF0JykKKyAgICBQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRCA9ICg0MDcsCisgICAgICAgICdQcm94eSBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCcsCisgICAgICAgICdZb3UgbXVzdCBhdXRoZW50aWNhdGUgd2l0aCB0aGlzIHByb3h5IGJlZm9yZSBwcm9jZWVkaW5nJykKKyAgICBSRVFVRVNUX1RJTUVPVVQgPSAoNDA4LCAnUmVxdWVzdCBUaW1lb3V0JywKKyAgICAgICAgJ1JlcXVlc3QgdGltZWQgb3V0OyB0cnkgYWdhaW4gbGF0ZXInKQorICAgIENPTkZMSUNUID0gNDA5LCAnQ29uZmxpY3QnLCAnUmVxdWVzdCBjb25mbGljdCcKKyAgICBHT05FID0gKDQxMCwgJ0dvbmUnLAorICAgICAgICAnVVJJIG5vIGxvbmdlciBleGlzdHMgYW5kIGhhcyBiZWVuIHBlcm1hbmVudGx5IHJlbW92ZWQnKQorICAgIExFTkdUSF9SRVFVSVJFRCA9ICg0MTEsICdMZW5ndGggUmVxdWlyZWQnLAorICAgICAgICAnQ2xpZW50IG11c3Qgc3BlY2lmeSBDb250ZW50LUxlbmd0aCcpCisgICAgUFJFQ09ORElUSU9OX0ZBSUxFRCA9ICg0MTIsICdQcmVjb25kaXRpb24gRmFpbGVkJywKKyAgICAgICAgJ1ByZWNvbmRpdGlvbiBpbiBoZWFkZXJzIGlzIGZhbHNlJykKKyAgICBSRVFVRVNUX0VOVElUWV9UT09fTEFSR0UgPSAoNDEzLCAnUmVxdWVzdCBFbnRpdHkgVG9vIExhcmdlJywKKyAgICAgICAgJ0VudGl0eSBpcyB0b28gbGFyZ2UnKQorICAgIFJFUVVFU1RfVVJJX1RPT19MT05HID0gKDQxNCwgJ1JlcXVlc3QtVVJJIFRvbyBMb25nJywKKyAgICAgICAgJ1VSSSBpcyB0b28gbG9uZycpCisgICAgVU5TVVBQT1JURURfTUVESUFfVFlQRSA9ICg0MTUsICdVbnN1cHBvcnRlZCBNZWRpYSBUeXBlJywKKyAgICAgICAgJ0VudGl0eSBib2R5IGluIHVuc3VwcG9ydGVkIGZvcm1hdCcpCisgICAgUkVRVUVTVEVEX1JBTkdFX05PVF9TQVRJU0ZJQUJMRSA9ICg0MTYsCisgICAgICAgICdSZXF1ZXN0ZWQgUmFuZ2UgTm90IFNhdGlzZmlhYmxlJywKKyAgICAgICAgJ0Nhbm5vdCBzYXRpc2Z5IHJlcXVlc3QgcmFuZ2UnKQorICAgIEVYUEVDVEFUSU9OX0ZBSUxFRCA9ICg0MTcsICdFeHBlY3RhdGlvbiBGYWlsZWQnLAorICAgICAgICAnRXhwZWN0IGNvbmRpdGlvbiBjb3VsZCBub3QgYmUgc2F0aXNmaWVkJykKKyAgICBVTlBST0NFU1NBQkxFX0VOVElUWSA9IDQyMiwgJ1VucHJvY2Vzc2FibGUgRW50aXR5JworICAgIExPQ0tFRCA9IDQyMywgJ0xvY2tlZCcKKyAgICBGQUlMRURfREVQRU5ERU5DWSA9IDQyNCwgJ0ZhaWxlZCBEZXBlbmRlbmN5JworICAgIFVQR1JBREVfUkVRVUlSRUQgPSA0MjYsICdVcGdyYWRlIFJlcXVpcmVkJworICAgIFBSRUNPTkRJVElPTl9SRVFVSVJFRCA9ICg0MjgsICdQcmVjb25kaXRpb24gUmVxdWlyZWQnLAorICAgICAgICAnVGhlIG9yaWdpbiBzZXJ2ZXIgcmVxdWlyZXMgdGhlIHJlcXVlc3QgdG8gYmUgY29uZGl0aW9uYWwnKQorICAgIFRPT19NQU5ZX1JFUVVFU1RTID0gKDQyOSwgJ1RvbyBNYW55IFJlcXVlc3RzJywKKyAgICAgICAgJ1RoZSB1c2VyIGhhcyBzZW50IHRvbyBtYW55IHJlcXVlc3RzIGluICcKKyAgICAgICAgJ2EgZ2l2ZW4gYW1vdW50IG9mIHRpbWUgKCJyYXRlIGxpbWl0aW5nIiknKQorICAgIFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UgPSAoNDMxLAorICAgICAgICAnUmVxdWVzdCBIZWFkZXIgRmllbGRzIFRvbyBMYXJnZScsCisgICAgICAgICdUaGUgc2VydmVyIGlzIHVud2lsbGluZyB0byBwcm9jZXNzIHRoZSByZXF1ZXN0IGJlY2F1c2UgaXRzIGhlYWRlciAnCisgICAgICAgICdmaWVsZHMgYXJlIHRvbyBsYXJnZScpCisKKyAgICAjIHNlcnZlciBlcnJvcnMKKyAgICBJTlRFUk5BTF9TRVJWRVJfRVJST1IgPSAoNTAwLCAnSW50ZXJuYWwgU2VydmVyIEVycm9yJywKKyAgICAgICAgJ1NlcnZlciBnb3QgaXRzZWxmIGluIHRyb3VibGUnKQorICAgIE5PVF9JTVBMRU1FTlRFRCA9ICg1MDEsICdOb3QgSW1wbGVtZW50ZWQnLAorICAgICAgICAnU2VydmVyIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24nKQorICAgIEJBRF9HQVRFV0FZID0gKDUwMiwgJ0JhZCBHYXRld2F5JywKKyAgICAgICAgJ0ludmFsaWQgcmVzcG9uc2VzIGZyb20gYW5vdGhlciBzZXJ2ZXIvcHJveHknKQorICAgIFNFUlZJQ0VfVU5BVkFJTEFCTEUgPSAoNTAzLCAnU2VydmljZSBVbmF2YWlsYWJsZScsCisgICAgICAgICdUaGUgc2VydmVyIGNhbm5vdCBwcm9jZXNzIHRoZSByZXF1ZXN0IGR1ZSB0byBhIGhpZ2ggbG9hZCcpCisgICAgR0FURVdBWV9USU1FT1VUID0gKDUwNCwgJ0dhdGV3YXkgVGltZW91dCcsCisgICAgICAgICdUaGUgZ2F0ZXdheSBzZXJ2ZXIgZGlkIG5vdCByZWNlaXZlIGEgdGltZWx5IHJlc3BvbnNlJykKKyAgICBIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRCA9ICg1MDUsICdIVFRQIFZlcnNpb24gTm90IFN1cHBvcnRlZCcsCisgICAgICAgICdDYW5ub3QgZnVsZmlsbCByZXF1ZXN0JykKKyAgICBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUyA9IDUwNiwgJ1ZhcmlhbnQgQWxzbyBOZWdvdGlhdGVzJworICAgIElOU1VGRklDSUVOVF9TVE9SQUdFID0gNTA3LCAnSW5zdWZmaWNpZW50IFN0b3JhZ2UnCisgICAgTE9PUF9ERVRFQ1RFRCA9IDUwOCwgJ0xvb3AgRGV0ZWN0ZWQnCisgICAgTk9UX0VYVEVOREVEID0gNTEwLCAnTm90IEV4dGVuZGVkJworICAgIE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQgPSAoNTExLAorICAgICAgICAnTmV0d29yayBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCcsCisgICAgICAgICdUaGUgY2xpZW50IG5lZWRzIHRvIGF1dGhlbnRpY2F0ZSB0byBnYWluIG5ldHdvcmsgYWNjZXNzJykKZGlmZiAtLWdpdCBhL0xpYi9odHRwL2NsaWVudC5weSBiL0xpYi9odHRwL2NsaWVudC5weQppbmRleCAxYzY5ZGNiLi44MGM4MGNmIDEwMDY0NAotLS0gYS9MaWIvaHR0cC9jbGllbnQucHkKKysrIGIvTGliL2h0dHAvY2xpZW50LnB5CkBAIC0yMCwxMCArMjAsMTIgQEAKICAgICAgIHwgKCBwdXRoZWFkZXIoKSApKiAgZW5kaGVhZGVycygpCiAgICAgICB2CiAgICAgUmVxdWVzdC1zZW50Ci0gICAgICB8Ci0gICAgICB8IHJlc3BvbnNlID0gZ2V0cmVzcG9uc2UoKQotICAgICAgdgotICAgIFVucmVhZC1yZXNwb25zZSAgIFtSZXNwb25zZS1oZWFkZXJzLXJlYWRdCisgICAgICB8XF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnZXRyZXNwb25zZSgpIHJhaXNlcworICAgICAgfCByZXNwb25zZSA9IGdldHJlc3BvbnNlKCkgICAgIHwgQ29ubmVjdGlvbkVycm9yCisgICAgICB2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgIFVucmVhZC1yZXNwb25zZSAgICAgICAgICAgICAgICBJZGxlCisgICAgW1Jlc3BvbnNlLWhlYWRlcnMtcmVhZF0KICAgICAgIHxcX19fX19fX19fX19fX19fX19fX18KICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICB8IHJlc3BvbnNlLnJlYWQoKSAgICAgfCBwdXRyZXF1ZXN0KCkKQEAgLTY4LDYgKzcwLDcgQEAKIAogaW1wb3J0IGVtYWlsLnBhcnNlcgogaW1wb3J0IGVtYWlsLm1lc3NhZ2UKK2ltcG9ydCBodHRwCiBpbXBvcnQgaW8KIGltcG9ydCBvcwogaW1wb3J0IHJlCkBAIC04Miw3ICs4NSw4IEBACiAgICAgICAgICAgICJVbmtub3duVHJhbnNmZXJFbmNvZGluZyIsICJVbmltcGxlbWVudGVkRmlsZU1vZGUiLAogICAgICAgICAgICAiSW5jb21wbGV0ZVJlYWQiLCAiSW52YWxpZFVSTCIsICJJbXByb3BlckNvbm5lY3Rpb25TdGF0ZSIsCiAgICAgICAgICAgICJDYW5ub3RTZW5kUmVxdWVzdCIsICJDYW5ub3RTZW5kSGVhZGVyIiwgIlJlc3BvbnNlTm90UmVhZHkiLAotICAgICAgICAgICAiQmFkU3RhdHVzTGluZSIsICJMaW5lVG9vTG9uZyIsICJlcnJvciIsICJyZXNwb25zZXMiXQorICAgICAgICAgICAiQmFkU3RhdHVzTGluZSIsICJMaW5lVG9vTG9uZyIsICJSZW1vdGVEaXNjb25uZWN0ZWQiLCAiZXJyb3IiLAorICAgICAgICAgICAicmVzcG9uc2VzIl0KIAogSFRUUF9QT1JUID0gODAKIEhUVFBTX1BPUlQgPSA0NDMKQEAgLTk0LDEyMiArOTgsMTMgQEAKIF9DU19SRVFfU1RBUlRFRCA9ICdSZXF1ZXN0LXN0YXJ0ZWQnCiBfQ1NfUkVRX1NFTlQgPSAnUmVxdWVzdC1zZW50JwogCi0jIHN0YXR1cyBjb2RlcwotIyBpbmZvcm1hdGlvbmFsCi1DT05USU5VRSA9IDEwMAotU1dJVENISU5HX1BST1RPQ09MUyA9IDEwMQotUFJPQ0VTU0lORyA9IDEwMgogCi0jIHN1Y2Nlc3NmdWwKLU9LID0gMjAwCi1DUkVBVEVEID0gMjAxCi1BQ0NFUFRFRCA9IDIwMgotTk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04gPSAyMDMKLU5PX0NPTlRFTlQgPSAyMDQKLVJFU0VUX0NPTlRFTlQgPSAyMDUKLVBBUlRJQUxfQ09OVEVOVCA9IDIwNgotTVVMVElfU1RBVFVTID0gMjA3Ci1JTV9VU0VEID0gMjI2CisjIGhhY2sgdG8gbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKK2dsb2JhbHMoKS51cGRhdGUoaHR0cC5IVFRQU3RhdHVzLl9fbWVtYmVyc19fKQogCi0jIHJlZGlyZWN0aW9uCi1NVUxUSVBMRV9DSE9JQ0VTID0gMzAwCi1NT1ZFRF9QRVJNQU5FTlRMWSA9IDMwMQotRk9VTkQgPSAzMDIKLVNFRV9PVEhFUiA9IDMwMwotTk9UX01PRElGSUVEID0gMzA0Ci1VU0VfUFJPWFkgPSAzMDUKLVRFTVBPUkFSWV9SRURJUkVDVCA9IDMwNwotCi0jIGNsaWVudCBlcnJvcgotQkFEX1JFUVVFU1QgPSA0MDAKLVVOQVVUSE9SSVpFRCA9IDQwMQotUEFZTUVOVF9SRVFVSVJFRCA9IDQwMgotRk9SQklEREVOID0gNDAzCi1OT1RfRk9VTkQgPSA0MDQKLU1FVEhPRF9OT1RfQUxMT1dFRCA9IDQwNQotTk9UX0FDQ0VQVEFCTEUgPSA0MDYKLVBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEID0gNDA3Ci1SRVFVRVNUX1RJTUVPVVQgPSA0MDgKLUNPTkZMSUNUID0gNDA5Ci1HT05FID0gNDEwCi1MRU5HVEhfUkVRVUlSRUQgPSA0MTEKLVBSRUNPTkRJVElPTl9GQUlMRUQgPSA0MTIKLVJFUVVFU1RfRU5USVRZX1RPT19MQVJHRSA9IDQxMwotUkVRVUVTVF9VUklfVE9PX0xPTkcgPSA0MTQKLVVOU1VQUE9SVEVEX01FRElBX1RZUEUgPSA0MTUKLVJFUVVFU1RFRF9SQU5HRV9OT1RfU0FUSVNGSUFCTEUgPSA0MTYKLUVYUEVDVEFUSU9OX0ZBSUxFRCA9IDQxNwotVU5QUk9DRVNTQUJMRV9FTlRJVFkgPSA0MjIKLUxPQ0tFRCA9IDQyMwotRkFJTEVEX0RFUEVOREVOQ1kgPSA0MjQKLVVQR1JBREVfUkVRVUlSRUQgPSA0MjYKLVBSRUNPTkRJVElPTl9SRVFVSVJFRCA9IDQyOAotVE9PX01BTllfUkVRVUVTVFMgPSA0MjkKLVJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UgPSA0MzEKLQotIyBzZXJ2ZXIgZXJyb3IKLUlOVEVSTkFMX1NFUlZFUl9FUlJPUiA9IDUwMAotTk9UX0lNUExFTUVOVEVEID0gNTAxCi1CQURfR0FURVdBWSA9IDUwMgotU0VSVklDRV9VTkFWQUlMQUJMRSA9IDUwMwotR0FURVdBWV9USU1FT1VUID0gNTA0Ci1IVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRCA9IDUwNQotSU5TVUZGSUNJRU5UX1NUT1JBR0UgPSA1MDcKLU5PVF9FWFRFTkRFRCA9IDUxMAotTkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRCA9IDUxMQotCisjIGFub3RoZXIgaGFjayB0byBtYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQogIyBNYXBwaW5nIHN0YXR1cyBjb2RlcyB0byBvZmZpY2lhbCBXM0MgbmFtZXMKLXJlc3BvbnNlcyA9IHsKLSAgICAxMDA6ICdDb250aW51ZScsCi0gICAgMTAxOiAnU3dpdGNoaW5nIFByb3RvY29scycsCi0KLSAgICAyMDA6ICdPSycsCi0gICAgMjAxOiAnQ3JlYXRlZCcsCi0gICAgMjAyOiAnQWNjZXB0ZWQnLAotICAgIDIwMzogJ05vbi1BdXRob3JpdGF0aXZlIEluZm9ybWF0aW9uJywKLSAgICAyMDQ6ICdObyBDb250ZW50JywKLSAgICAyMDU6ICdSZXNldCBDb250ZW50JywKLSAgICAyMDY6ICdQYXJ0aWFsIENvbnRlbnQnLAotCi0gICAgMzAwOiAnTXVsdGlwbGUgQ2hvaWNlcycsCi0gICAgMzAxOiAnTW92ZWQgUGVybWFuZW50bHknLAotICAgIDMwMjogJ0ZvdW5kJywKLSAgICAzMDM6ICdTZWUgT3RoZXInLAotICAgIDMwNDogJ05vdCBNb2RpZmllZCcsCi0gICAgMzA1OiAnVXNlIFByb3h5JywKLSAgICAzMDY6ICcoVW51c2VkKScsCi0gICAgMzA3OiAnVGVtcG9yYXJ5IFJlZGlyZWN0JywKLQotICAgIDQwMDogJ0JhZCBSZXF1ZXN0JywKLSAgICA0MDE6ICdVbmF1dGhvcml6ZWQnLAotICAgIDQwMjogJ1BheW1lbnQgUmVxdWlyZWQnLAotICAgIDQwMzogJ0ZvcmJpZGRlbicsCi0gICAgNDA0OiAnTm90IEZvdW5kJywKLSAgICA0MDU6ICdNZXRob2QgTm90IEFsbG93ZWQnLAotICAgIDQwNjogJ05vdCBBY2NlcHRhYmxlJywKLSAgICA0MDc6ICdQcm94eSBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCcsCi0gICAgNDA4OiAnUmVxdWVzdCBUaW1lb3V0JywKLSAgICA0MDk6ICdDb25mbGljdCcsCi0gICAgNDEwOiAnR29uZScsCi0gICAgNDExOiAnTGVuZ3RoIFJlcXVpcmVkJywKLSAgICA0MTI6ICdQcmVjb25kaXRpb24gRmFpbGVkJywKLSAgICA0MTM6ICdSZXF1ZXN0IEVudGl0eSBUb28gTGFyZ2UnLAotICAgIDQxNDogJ1JlcXVlc3QtVVJJIFRvbyBMb25nJywKLSAgICA0MTU6ICdVbnN1cHBvcnRlZCBNZWRpYSBUeXBlJywKLSAgICA0MTY6ICdSZXF1ZXN0ZWQgUmFuZ2UgTm90IFNhdGlzZmlhYmxlJywKLSAgICA0MTc6ICdFeHBlY3RhdGlvbiBGYWlsZWQnLAotICAgIDQyODogJ1ByZWNvbmRpdGlvbiBSZXF1aXJlZCcsCi0gICAgNDI5OiAnVG9vIE1hbnkgUmVxdWVzdHMnLAotICAgIDQzMTogJ1JlcXVlc3QgSGVhZGVyIEZpZWxkcyBUb28gTGFyZ2UnLAotCi0gICAgNTAwOiAnSW50ZXJuYWwgU2VydmVyIEVycm9yJywKLSAgICA1MDE6ICdOb3QgSW1wbGVtZW50ZWQnLAotICAgIDUwMjogJ0JhZCBHYXRld2F5JywKLSAgICA1MDM6ICdTZXJ2aWNlIFVuYXZhaWxhYmxlJywKLSAgICA1MDQ6ICdHYXRld2F5IFRpbWVvdXQnLAotICAgIDUwNTogJ0hUVFAgVmVyc2lvbiBOb3QgU3VwcG9ydGVkJywKLSAgICA1MTE6ICdOZXR3b3JrIEF1dGhlbnRpY2F0aW9uIFJlcXVpcmVkJywKLX0KK3Jlc3BvbnNlcyA9IHt2OiB2LnBocmFzZSBmb3IgdiBpbiBodHRwLkhUVFBTdGF0dXMuX19tZW1iZXJzX18udmFsdWVzKCl9CiAKICMgbWF4aW1hbCBhbW91bnQgb2YgZGF0YSB0byByZWFkIGF0IG9uZSB0aW1lIGluIF9zYWZlX3JlYWQKIE1BWEFNT1VOVCA9IDEwNDg1NzYKQEAgLTMwNSw3ICsyMDAsNyBAQAogICAgIHJldHVybiBlbWFpbC5wYXJzZXIuUGFyc2VyKF9jbGFzcz1fY2xhc3MpLnBhcnNlc3RyKGhzdHJpbmcpCiAKIAotY2xhc3MgSFRUUFJlc3BvbnNlKGlvLlJhd0lPQmFzZSk6CitjbGFzcyBIVFRQUmVzcG9uc2UoaW8uQnVmZmVyZWRJT0Jhc2UpOgogCiAgICAgIyBTZWUgUkZDIDI2MTYgc2VjIDE5LjYgYW5kIFJGQyAxOTQ1IHNlYyA2IGZvciBkZXRhaWxzLgogCkBAIC0zNTMsNyArMjQ4LDggQEAKICAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgICAjIFByZXN1bWFibHksIHRoZSBzZXJ2ZXIgY2xvc2VkIHRoZSBjb25uZWN0aW9uIGJlZm9yZQogICAgICAgICAgICAgIyBzZW5kaW5nIGEgdmFsaWQgcmVzcG9uc2UuCi0gICAgICAgICAgICByYWlzZSBCYWRTdGF0dXNMaW5lKGxpbmUpCisgICAgICAgICAgICByYWlzZSBSZW1vdGVEaXNjb25uZWN0ZWQoIlJlbW90ZSBlbmQgY2xvc2VkIGNvbm5lY3Rpb24gd2l0aG91dCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHJlc3BvbnNlIikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdmVyc2lvbiwgc3RhdHVzLCByZWFzb24gPSBsaW5lLnNwbGl0KE5vbmUsIDIpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgpAQCAtNTMyLDkgKzQyOCwxMCBAQAogICAgICAgICAgICAgcmV0dXJuIGIiIgogCiAgICAgICAgIGlmIGFtdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICMgQW1vdW50IGlzIGdpdmVuLCBzbyBjYWxsIGJhc2UgY2xhc3MgdmVyc2lvbgotICAgICAgICAgICAgIyAod2hpY2ggaXMgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2Ygc2VsZi5yZWFkaW50bykKLSAgICAgICAgICAgIHJldHVybiBzdXBlcihIVFRQUmVzcG9uc2UsIHNlbGYpLnJlYWQoYW10KQorICAgICAgICAgICAgIyBBbW91bnQgaXMgZ2l2ZW4sIGltcGxlbWVudCB1c2luZyByZWFkaW50bworICAgICAgICAgICAgYiA9IGJ5dGVhcnJheShhbXQpCisgICAgICAgICAgICBuID0gc2VsZi5yZWFkaW50byhiKQorICAgICAgICAgICAgcmV0dXJuIG1lbW9yeXZpZXcoYilbOm5dLnRvYnl0ZXMoKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBBbW91bnQgaXMgbm90IGdpdmVuICh1bmJvdW5kZWQgcmVhZCkgc28gd2UgbXVzdCBjaGVjayBzZWxmLmxlbmd0aAogICAgICAgICAgICAgIyBhbmQgc2VsZi5jaHVua2VkCkBAIC02MTQsNzEgKzUxMSw2NyBAQAogICAgICAgICAgICAgaWYgbGluZSBpbiAoYidcclxuJywgYidcbicsIGInJyk6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAorICAgIGRlZiBfZ2V0X2NodW5rX2xlZnQoc2VsZik6CisgICAgICAgICMgcmV0dXJuIHNlbGYuY2h1bmtfbGVmdCwgcmVhZGluZyBhIG5ldyBjaHVuayBpZiBuZWNlc3NhcnkuCisgICAgICAgICMgY2h1bmtfbGVmdCA9PSAwOiBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGNodW5rLCBuZWVkIHRvIGNsb3NlIGl0CisgICAgICAgICMgY2h1bmtfbGVmdCA9PSBOb25lOiBObyBjdXJyZW50IGNodW5rLCBzaG91bGQgcmVhZCBuZXh0LgorICAgICAgICAjIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBub24temVybyBvciBOb25lIGlmIHRoZSBsYXN0IGNodW5rIGhhcworICAgICAgICAjIGJlZW4gcmVhZC4KKyAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuY2h1bmtfbGVmdAorICAgICAgICBpZiBub3QgY2h1bmtfbGVmdDogIyBDYW4gYmUgMCBvciBOb25lCisgICAgICAgICAgICBpZiBjaHVua19sZWZ0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICMgV2UgYXJlIGF0IHRoZSBlbmQgb2YgY2h1bmsuIGRpY2FyZCBjaHVuayBlbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9zYWZlX3JlYWQoMikgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuaworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLl9yZWFkX25leHRfY2h1bmtfc2l6ZSgpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICByYWlzZSBJbmNvbXBsZXRlUmVhZChiJycpCisgICAgICAgICAgICBpZiBjaHVua19sZWZ0ID09IDA6CisgICAgICAgICAgICAgICAgIyBsYXN0IGNodW5rOiAxKigiMCIpIFsgY2h1bmstZXh0ZW5zaW9uIF0gQ1JMRgorICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfYW5kX2Rpc2NhcmRfdHJhaWxlcigpCisgICAgICAgICAgICAgICAgIyB3ZSByZWFkIGV2ZXJ5dGhpbmc7IGNsb3NlIHRoZSAiZmlsZSIKKyAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZV9jb25uKCkKKyAgICAgICAgICAgICAgICBjaHVua19sZWZ0ID0gTm9uZQorICAgICAgICAgICAgc2VsZi5jaHVua19sZWZ0ID0gY2h1bmtfbGVmdAorICAgICAgICByZXR1cm4gY2h1bmtfbGVmdAorCiAgICAgZGVmIF9yZWFkYWxsX2NodW5rZWQoc2VsZik6CiAgICAgICAgIGFzc2VydCBzZWxmLmNodW5rZWQgIT0gX1VOS05PV04KLSAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuY2h1bmtfbGVmdAogICAgICAgICB2YWx1ZSA9IFtdCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBpZiBjaHVua19sZWZ0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5fcmVhZF9uZXh0X2NodW5rX3NpemUoKQotICAgICAgICAgICAgICAgICAgICBpZiBjaHVua19sZWZ0ID09IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBJbmNvbXBsZXRlUmVhZChiJycuam9pbih2YWx1ZSkpCi0gICAgICAgICAgICB2YWx1ZS5hcHBlbmQoc2VsZi5fc2FmZV9yZWFkKGNodW5rX2xlZnQpKQotCi0gICAgICAgICAgICAjIHdlIHJlYWQgdGhlIHdob2xlIGNodW5rLCBnZXQgYW5vdGhlcgotICAgICAgICAgICAgc2VsZi5fc2FmZV9yZWFkKDIpICAgICAgIyB0b3NzIHRoZSBDUkxGIGF0IHRoZSBlbmQgb2YgdGhlIGNodW5rCi0gICAgICAgICAgICBjaHVua19sZWZ0ID0gTm9uZQotCi0gICAgICAgIHNlbGYuX3JlYWRfYW5kX2Rpc2NhcmRfdHJhaWxlcigpCi0KLSAgICAgICAgIyB3ZSByZWFkIGV2ZXJ5dGhpbmc7IGNsb3NlIHRoZSAiZmlsZSIKLSAgICAgICAgc2VsZi5fY2xvc2VfY29ubigpCi0KLSAgICAgICAgcmV0dXJuIGInJy5qb2luKHZhbHVlKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLl9nZXRfY2h1bmtfbGVmdCgpCisgICAgICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHZhbHVlLmFwcGVuZChzZWxmLl9zYWZlX3JlYWQoY2h1bmtfbGVmdCkpCisgICAgICAgICAgICAgICAgc2VsZi5jaHVua19sZWZ0ID0gMAorICAgICAgICAgICAgcmV0dXJuIGInJy5qb2luKHZhbHVlKQorICAgICAgICBleGNlcHQgSW5jb21wbGV0ZVJlYWQ6CisgICAgICAgICAgICByYWlzZSBJbmNvbXBsZXRlUmVhZChiJycuam9pbih2YWx1ZSkpCiAKICAgICBkZWYgX3JlYWRpbnRvX2NodW5rZWQoc2VsZiwgYik6CiAgICAgICAgIGFzc2VydCBzZWxmLmNodW5rZWQgIT0gX1VOS05PV04KLSAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuY2h1bmtfbGVmdAotCiAgICAgICAgIHRvdGFsX2J5dGVzID0gMAogICAgICAgICBtdmIgPSBtZW1vcnl2aWV3KGIpCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBpZiBjaHVua19sZWZ0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5fcmVhZF9uZXh0X2NodW5rX3NpemUoKQotICAgICAgICAgICAgICAgICAgICBpZiBjaHVua19sZWZ0ID09IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBJbmNvbXBsZXRlUmVhZChieXRlcyhiWzA6dG90YWxfYnl0ZXNdKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5fZ2V0X2NodW5rX2xlZnQoKQorICAgICAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsX2J5dGVzCiAKLSAgICAgICAgICAgIGlmIGxlbihtdmIpIDwgY2h1bmtfbGVmdDoKLSAgICAgICAgICAgICAgICBuID0gc2VsZi5fc2FmZV9yZWFkaW50byhtdmIpCi0gICAgICAgICAgICAgICAgc2VsZi5jaHVua19sZWZ0ID0gY2h1bmtfbGVmdCAtIG4KLSAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxfYnl0ZXMgKyBuCi0gICAgICAgICAgICBlbGlmIGxlbihtdmIpID09IGNodW5rX2xlZnQ6Ci0gICAgICAgICAgICAgICAgbiA9IHNlbGYuX3NhZmVfcmVhZGludG8obXZiKQotICAgICAgICAgICAgICAgIHNlbGYuX3NhZmVfcmVhZCgyKSAgIyB0b3NzIHRoZSBDUkxGIGF0IHRoZSBlbmQgb2YgdGhlIGNodW5rCi0gICAgICAgICAgICAgICAgc2VsZi5jaHVua19sZWZ0ID0gTm9uZQotICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbF9ieXRlcyArIG4KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdGVtcF9tdmIgPSBtdmJbMDpjaHVua19sZWZ0XQorICAgICAgICAgICAgICAgIGlmIGxlbihtdmIpIDw9IGNodW5rX2xlZnQ6CisgICAgICAgICAgICAgICAgICAgIG4gPSBzZWxmLl9zYWZlX3JlYWRpbnRvKG12YikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jaHVua19sZWZ0ID0gY2h1bmtfbGVmdCAtIG4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsX2J5dGVzICsgbgorCisgICAgICAgICAgICAgICAgdGVtcF9tdmIgPSBtdmJbOmNodW5rX2xlZnRdCiAgICAgICAgICAgICAgICAgbiA9IHNlbGYuX3NhZmVfcmVhZGludG8odGVtcF9tdmIpCiAgICAgICAgICAgICAgICAgbXZiID0gbXZiW246XQogICAgICAgICAgICAgICAgIHRvdGFsX2J5dGVzICs9IG4KKyAgICAgICAgICAgICAgICBzZWxmLmNodW5rX2xlZnQgPSAwCiAKLSAgICAgICAgICAgICMgd2UgcmVhZCB0aGUgd2hvbGUgY2h1bmssIGdldCBhbm90aGVyCi0gICAgICAgICAgICBzZWxmLl9zYWZlX3JlYWQoMikgICAgICAjIHRvc3MgdGhlIENSTEYgYXQgdGhlIGVuZCBvZiB0aGUgY2h1bmsKLSAgICAgICAgICAgIGNodW5rX2xlZnQgPSBOb25lCi0KLSAgICAgICAgc2VsZi5fcmVhZF9hbmRfZGlzY2FyZF90cmFpbGVyKCkKLQotICAgICAgICAjIHdlIHJlYWQgZXZlcnl0aGluZzsgY2xvc2UgdGhlICJmaWxlIgotICAgICAgICBzZWxmLl9jbG9zZV9jb25uKCkKLQotICAgICAgICByZXR1cm4gdG90YWxfYnl0ZXMKKyAgICAgICAgZXhjZXB0IEluY29tcGxldGVSZWFkOgorICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYnl0ZXMoYlswOnRvdGFsX2J5dGVzXSkpCiAKICAgICBkZWYgX3NhZmVfcmVhZChzZWxmLCBhbXQpOgogICAgICAgICAiIiJSZWFkIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVxdWVzdGVkLCBjb21wZW5zYXRpbmcgZm9yIHBhcnRpYWwgcmVhZHMuCkBAIC03MTksNiArNjEyLDczIEBACiAgICAgICAgICAgICB0b3RhbF9ieXRlcyArPSBuCiAgICAgICAgIHJldHVybiB0b3RhbF9ieXRlcwogCisgICAgZGVmIHJlYWQxKHNlbGYsIG49LTEpOgorICAgICAgICAiIiJSZWFkIHdpdGggYXQgbW9zdCBvbmUgdW5kZXJseWluZyBzeXN0ZW0gY2FsbC4gIElmIGF0IGxlYXN0IG9uZQorICAgICAgICBieXRlIGlzIGJ1ZmZlcmVkLCByZXR1cm4gdGhhdCBpbnN0ZWFkLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5mcCBpcyBOb25lIG9yIHNlbGYuX21ldGhvZCA9PSAiSEVBRCI6CisgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgIGlmIHNlbGYuY2h1bmtlZDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkMV9jaHVua2VkKG4pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuZnAucmVhZDEobikKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBpZiBuID49IDA6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICMgc29tZSBpbXBsZW1lbnRhdGlvbnMsIGxpa2UgQnVmZmVyZWRSZWFkZXIsIGRvbid0IHN1cHBvcnQgLTEKKyAgICAgICAgICAgICMgUmVhZCBhbiBhcmJpdHJhcmlseSBzZWxlY3RlZCBsYXJnZWlzaCBjaHVuay4KKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuZnAucmVhZDEoMTYqMTAyNCkKKyAgICAgICAgaWYgbm90IHJlc3VsdCBhbmQgbjoKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2Nvbm4oKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgcGVlayhzZWxmLCBuPS0xKToKKyAgICAgICAgIyBIYXZpbmcgdGhpcyBlbmFibGVzIElPQmFzZS5yZWFkbGluZSgpIHRvIHJlYWQgbW9yZSB0aGFuIG9uZQorICAgICAgICAjIGJ5dGUgYXQgYSB0aW1lCisgICAgICAgIGlmIHNlbGYuZnAgaXMgTm9uZSBvciBzZWxmLl9tZXRob2QgPT0gIkhFQUQiOgorICAgICAgICAgICAgcmV0dXJuIGIiIgorICAgICAgICBpZiBzZWxmLmNodW5rZWQ6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcGVla19jaHVua2VkKG4pCisgICAgICAgIHJldHVybiBzZWxmLmZwLnBlZWsobikKKworICAgIGRlZiByZWFkbGluZShzZWxmLCBsaW1pdD0tMSk6CisgICAgICAgIGlmIHNlbGYuZnAgaXMgTm9uZSBvciBzZWxmLl9tZXRob2QgPT0gIkhFQUQiOgorICAgICAgICAgICAgcmV0dXJuIGIiIgorICAgICAgICBpZiBzZWxmLmNodW5rZWQ6CisgICAgICAgICAgICAjIEZhbGxiYWNrIHRvIElPQmFzZSByZWFkbGluZSB3aGljaCB1c2VzIHBlZWsoKSBhbmQgcmVhZCgpCisgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5yZWFkbGluZShsaW1pdCkKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5mcC5yZWFkbGluZShsaW1pdCkKKyAgICAgICAgaWYgbm90IHJlc3VsdCBhbmQgbGltaXQ6CisgICAgICAgICAgICBzZWxmLl9jbG9zZV9jb25uKCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIF9yZWFkMV9jaHVua2VkKHNlbGYsIG4pOgorICAgICAgICAjIFN0cmljdGx5IHNwZWFraW5nLCBfZ2V0X2NodW5rX2xlZnQoKSBtYXkgY2F1c2UgbW9yZSB0aGFuIG9uZSByZWFkLAorICAgICAgICAjIGJ1dCB0aGF0IGlzIG9rLCBzaW5jZSB0aGF0IGlzIHRvIHNhdGlzZnkgdGhlIGNodW5rZWQgcHJvdG9jb2wuCisgICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLl9nZXRfY2h1bmtfbGVmdCgpCisgICAgICAgIGlmIGNodW5rX2xlZnQgaXMgTm9uZSBvciBuID09IDA6CisgICAgICAgICAgICByZXR1cm4gYicnCisgICAgICAgIGlmIG5vdCAoMCA8PSBuIDw9IGNodW5rX2xlZnQpOgorICAgICAgICAgICAgbiA9IGNodW5rX2xlZnQgIyBpZiBuIGlzIG5lZ2F0aXZlIG9yIGxhcmdlciB0aGFuIGNodW5rX2xlZnQKKyAgICAgICAgcmVhZCA9IHNlbGYuZnAucmVhZDEobikKKyAgICAgICAgc2VsZi5jaHVua19sZWZ0IC09IGxlbihyZWFkKQorICAgICAgICBpZiBub3QgcmVhZDoKKyAgICAgICAgICAgIHJhaXNlIEluY29tcGxldGVSZWFkKGIiIikKKyAgICAgICAgcmV0dXJuIHJlYWQKKworICAgIGRlZiBfcGVla19jaHVua2VkKHNlbGYsIG4pOgorICAgICAgICAjIFN0cmljdGx5IHNwZWFraW5nLCBfZ2V0X2NodW5rX2xlZnQoKSBtYXkgY2F1c2UgbW9yZSB0aGFuIG9uZSByZWFkLAorICAgICAgICAjIGJ1dCB0aGF0IGlzIG9rLCBzaW5jZSB0aGF0IGlzIHRvIHNhdGlzZnkgdGhlIGNodW5rZWQgcHJvdG9jb2wuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLl9nZXRfY2h1bmtfbGVmdCgpCisgICAgICAgIGV4Y2VwdCBJbmNvbXBsZXRlUmVhZDoKKyAgICAgICAgICAgIHJldHVybiBiJycgIyBwZWVrIGRvZXNuJ3Qgd29ycnkgYWJvdXQgcHJvdG9jb2wKKyAgICAgICAgaWYgY2h1bmtfbGVmdCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGInJyAjIGVvZgorICAgICAgICAjIHBlZWsgaXMgYWxsb3dlZCB0byByZXR1cm4gbW9yZSB0aGFuIHJlcXVlc3RlZC4gIEp1c3QgcmVxdWVzdCB0aGUKKyAgICAgICAgIyBlbnRpcmUgY2h1bmssIGFuZCB0cnVuY2F0ZSB3aGF0IHdlIGdldC4KKyAgICAgICAgcmV0dXJuIHNlbGYuZnAucGVlayhjaHVua19sZWZ0KVs6Y2h1bmtfbGVmdF0KKwogICAgIGRlZiBmaWxlbm8oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmZwLmZpbGVubygpCiAKQEAgLTc2MiwxNCArNzIyLDYgQEAKICAgICBkZWZhdWx0X3BvcnQgPSBIVFRQX1BPUlQKICAgICBhdXRvX29wZW4gPSAxCiAgICAgZGVidWdsZXZlbCA9IDAKLSAgICAjIFRDUCBNYXhpbXVtIFNlZ21lbnQgU2l6ZSAoTVNTKSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBUQ1Agc3RhY2sgb24KLSAgICAjIGEgcGVyLWNvbm5lY3Rpb24gYmFzaXMuICBUaGVyZSBpcyBubyBzaW1wbGUgYW5kIGVmZmljaWVudAotICAgICMgcGxhdGZvcm0gaW5kZXBlbmRlbnQgbWVjaGFuaXNtIGZvciBkZXRlcm1pbmluZyB0aGUgTVNTLCBzbwotICAgICMgaW5zdGVhZCBhIHJlYXNvbmFibGUgZXN0aW1hdGUgaXMgY2hvc2VuLiAgVGhlIGdldHNvY2tvcHQoKQotICAgICMgaW50ZXJmYWNlIHVzaW5nIHRoZSBUQ1BfTUFYU0VHIHBhcmFtZXRlciBtYXkgYmUgYSBzdWl0YWJsZQotICAgICMgYXBwcm9hY2ggb24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcy4gQSB2YWx1ZSBvZiAxNktpQiBpcyBjaG9zZW4KLSAgICAjIGFzIGEgcmVhc29uYWJsZSBlc3RpbWF0ZSBvZiB0aGUgbWF4aW11bSBNU1MuCi0gICAgbXNzID0gMTYzODQKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0PU5vbmUsIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VULAogICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lKToKQEAgLTg1MSw3ICs4MDMsNyBAQAogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVzcG9uc2VfY2xhc3Moc2VsZi5zb2NrLCBtZXRob2Q9c2VsZi5fbWV0aG9kKQogICAgICAgICAodmVyc2lvbiwgY29kZSwgbWVzc2FnZSkgPSByZXNwb25zZS5fcmVhZF9zdGF0dXMoKQogCi0gICAgICAgIGlmIGNvZGUgIT0gMjAwOgorICAgICAgICBpZiBjb2RlICE9IGh0dHAuSFRUUFN0YXR1cy5PSzoKICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiVHVubmVsIGNvbm5lY3Rpb24gZmFpbGVkOiAlZCAlcyIgJSAoY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2Uuc3RyaXAoKSkpCkBAIC04NjUsMTAgKzgxNywxNCBAQAogICAgICAgICAgICAgaWYgbGluZSBpbiAoYidcclxuJywgYidcbicsIGInJyk6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAorICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKKyAgICAgICAgICAgICAgICBwcmludCgnaGVhZGVyOicsIGxpbmUuZGVjb2RlKCkpCisKICAgICBkZWYgY29ubmVjdChzZWxmKToKICAgICAgICAgIiIiQ29ubmVjdCB0byB0aGUgaG9zdCBhbmQgcG9ydCBzcGVjaWZpZWQgaW4gX19pbml0X18uIiIiCi0gICAgICAgIHNlbGYuc29jayA9IHNlbGYuX2NyZWF0ZV9jb25uZWN0aW9uKChzZWxmLmhvc3Qsc2VsZi5wb3J0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50aW1lb3V0LCBzZWxmLnNvdXJjZV9hZGRyZXNzKQorICAgICAgICBzZWxmLnNvY2sgPSBzZWxmLl9jcmVhdGVfY29ubmVjdGlvbigKKyAgICAgICAgICAgIChzZWxmLmhvc3Qsc2VsZi5wb3J0KSwgc2VsZi50aW1lb3V0LCBzZWxmLnNvdXJjZV9hZGRyZXNzKQorICAgICAgICBzZWxmLnNvY2suc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19UQ1AsIHNvY2tldC5UQ1BfTk9ERUxBWSwgMSkKIAogICAgICAgICBpZiBzZWxmLl90dW5uZWxfaG9zdDoKICAgICAgICAgICAgIHNlbGYuX3R1bm5lbCgpCkBAIC05NTEsMTkgKzkwNyw5IEBACiAgICAgICAgIHNlbGYuX2J1ZmZlci5leHRlbmQoKGIiIiwgYiIiKSkKICAgICAgICAgbXNnID0gYiJcclxuIi5qb2luKHNlbGYuX2J1ZmZlcikKICAgICAgICAgZGVsIHNlbGYuX2J1ZmZlcls6XQotICAgICAgICAjIElmIG1zZyBhbmQgbWVzc2FnZV9ib2R5IGFyZSBzZW50IGluIGEgc2luZ2xlIHNlbmQoKSBjYWxsLAotICAgICAgICAjIGl0IHdpbGwgYXZvaWQgcGVyZm9ybWFuY2UgcHJvYmxlbXMgY2F1c2VkIGJ5IHRoZSBpbnRlcmFjdGlvbgotICAgICAgICAjIGJldHdlZW4gZGVsYXllZCBhY2sgYW5kIHRoZSBOYWdsZSBhbGdvcml0aG0uIEhvd2V2ZXIsCi0gICAgICAgICMgdGhlcmUgaXMgbm8gcGVyZm9ybWFuY2UgZ2FpbiBpZiB0aGUgbWVzc2FnZSBpcyBsYXJnZXIKLSAgICAgICAgIyB0aGFuIE1TUyAoYW5kIHRoZXJlIGlzIGEgbWVtb3J5IHBlbmFsdHkgZm9yIHRoZSBtZXNzYWdlCi0gICAgICAgICMgY29weSkuCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobWVzc2FnZV9ib2R5LCBieXRlcykgYW5kIGxlbihtZXNzYWdlX2JvZHkpIDwgc2VsZi5tc3M6Ci0gICAgICAgICAgICBtc2cgKz0gbWVzc2FnZV9ib2R5Ci0gICAgICAgICAgICBtZXNzYWdlX2JvZHkgPSBOb25lCisKICAgICAgICAgc2VsZi5zZW5kKG1zZykKICAgICAgICAgaWYgbWVzc2FnZV9ib2R5IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgIyBtZXNzYWdlX2JvZHkgd2FzIG5vdCBhIHN0cmluZyAoaS5lLiBpdCBpcyBhIGZpbGUpLCBhbmQKLSAgICAgICAgICAgICMgd2UgbXVzdCBydW4gdGhlIHJpc2sgb2YgTmFnbGUuCiAgICAgICAgICAgICBzZWxmLnNlbmQobWVzc2FnZV9ib2R5KQogCiAgICAgZGVmIHB1dHJlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIHNraXBfaG9zdD0wLCBza2lwX2FjY2VwdF9lbmNvZGluZz0wKToKQEAgLTEyMjQsNyArMTE3MCwxMSBAQAogICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlc3BvbnNlX2NsYXNzKHNlbGYuc29jaywgbWV0aG9kPXNlbGYuX21ldGhvZCkKIAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXNwb25zZS5iZWdpbigpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmVzcG9uc2UuYmVnaW4oKQorICAgICAgICAgICAgZXhjZXB0IENvbm5lY3Rpb25FcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKyAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgYXNzZXJ0IHJlc3BvbnNlLndpbGxfY2xvc2UgIT0gX1VOS05PV04KICAgICAgICAgICAgIHNlbGYuX19zdGF0ZSA9IF9DU19JRExFCiAKQEAgLTEzMjcsNyArMTI3Nyw4IEBACiAgICAgICAgICAgICBlID0gJywgJWkgbW9yZSBleHBlY3RlZCcgJSBzZWxmLmV4cGVjdGVkCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBlID0gJycKLSAgICAgICAgcmV0dXJuICdJbmNvbXBsZXRlUmVhZCglaSBieXRlcyByZWFkJXMpJyAlIChsZW4oc2VsZi5wYXJ0aWFsKSwgZSkKKyAgICAgICAgcmV0dXJuICclcyglaSBieXRlcyByZWFkJXMpJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oc2VsZi5wYXJ0aWFsKSwgZSkKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHJlcHIoc2VsZikKIApAQCAtMTM1NSw1ICsxMzA2LDEwIEBACiAgICAgICAgIEhUVFBFeGNlcHRpb24uX19pbml0X18oc2VsZiwgImdvdCBtb3JlIHRoYW4gJWQgYnl0ZXMgd2hlbiByZWFkaW5nICVzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKF9NQVhMSU5FLCBsaW5lX3R5cGUpKQogCitjbGFzcyBSZW1vdGVEaXNjb25uZWN0ZWQoQ29ubmVjdGlvblJlc2V0RXJyb3IsIEJhZFN0YXR1c0xpbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqcG9zLCAqKmt3KToKKyAgICAgICAgQmFkU3RhdHVzTGluZS5fX2luaXRfXyhzZWxmLCAiIikKKyAgICAgICAgQ29ubmVjdGlvblJlc2V0RXJyb3IuX19pbml0X18oc2VsZiwgKnBvcywgKiprdykKKwogIyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKIGVycm9yID0gSFRUUEV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY29va2llamFyLnB5IGIvTGliL2h0dHAvY29va2llamFyLnB5CmluZGV4IGNhZDZiM2EuLmFjNWU2NjcgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2Nvb2tpZWphci5weQorKysgYi9MaWIvaHR0cC9jb29raWVqYXIucHkKQEAgLTgyMSw3ICs4MjEsNyBAQAogICAgICAgICAgICAgYXJncy5hcHBlbmQoIiVzPSVzIiAlIChuYW1lLCByZXByKGF0dHIpKSkKICAgICAgICAgYXJncy5hcHBlbmQoInJlc3Q9JXMiICUgcmVwcihzZWxmLl9yZXN0KSkKICAgICAgICAgYXJncy5hcHBlbmQoInJmYzIxMDk9JXMiICUgcmVwcihzZWxmLnJmYzIxMDkpKQotICAgICAgICByZXR1cm4gIkNvb2tpZSglcykiICUgIiwgIi5qb2luKGFyZ3MpCisgICAgICAgIHJldHVybiAiJXMoJXMpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgIiwgIi5qb2luKGFyZ3MpKQogCiAKIGNsYXNzIENvb2tpZVBvbGljeToKQEAgLTE5OTksNyArMTk5OSw2IEBACiAKICAgICAgICAgbWFnaWMgPSBmLnJlYWRsaW5lKCkKICAgICAgICAgaWYgbm90IHNlbGYubWFnaWNfcmUuc2VhcmNoKG1hZ2ljKToKLSAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgcmFpc2UgTG9hZEVycm9yKAogICAgICAgICAgICAgICAgICIlciBkb2VzIG5vdCBsb29rIGxpa2UgYSBOZXRzY2FwZSBmb3JtYXQgY29va2llcyBmaWxlIiAlCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUpCmRpZmYgLS1naXQgYS9MaWIvaHR0cC9jb29raWVzLnB5IGIvTGliL2h0dHAvY29va2llcy5weQppbmRleCA0ODJlNjAxLi5mZGEwMmI3IDEwMDY0NAotLS0gYS9MaWIvaHR0cC9jb29raWVzLnB5CisrKyBiL0xpYi9odHRwL2Nvb2tpZXMucHkKQEAgLTEzOCw2ICsxMzgsMTIgQEAKIF9zZW1pc3BhY2Vqb2luID0gJzsgJy5qb2luCiBfc3BhY2Vqb2luID0gJyAnLmpvaW4KIAorZGVmIF93YXJuX2RlcHJlY2F0ZWRfc2V0dGVyKHNldHRlcik6CisgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgbXNnID0gKCdUaGUgLiVzIHNldHRlciBpcyBkZXByZWNhdGVkLiBUaGUgYXR0cmlidXRlIHdpbGwgYmUgcmVhZC1vbmx5IGluICcKKyAgICAgICAgICAgJ2Z1dHVyZSByZWxlYXNlcy4gUGxlYXNlIHVzZSB0aGUgc2V0KCkgbWV0aG9kIGluc3RlYWQuJyAlIHNldHRlcikKKyAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTMpCisKICMKICMgRGVmaW5lIGFuIGV4Y2VwdGlvbiB2aXNpYmxlIHRvIEV4dGVybmFsIG1vZHVsZXMKICMKQEAgLTE1MSw4OCArMTU3LDM2IEBACiAjIGludG8gYSA0IGNoYXJhY3RlciBzZXF1ZW5jZTogYSBmb3J3YXJkLXNsYXNoIGZvbGxvd2VkIGJ5IHRoZQogIyB0aHJlZS1kaWdpdCBvY3RhbCBlcXVpdmFsZW50IG9mIHRoZSBjaGFyYWN0ZXIuICBBbnkgJ1wnIG9yICciJyBpcwogIyBxdW90ZWQgd2l0aCBhIHByZWNlZWRpbmcgJ1wnIHNsYXNoLgorIyBCZWNhdXNlIG9mIHRoZSB3YXkgYnJvd3NlcnMgcmVhbGx5IGhhbmRsZSBjb29raWVzIChhcyBvcHBvc2VkIHRvIHdoYXQKKyMgdGhlIFJGQyBzYXlzKSB3ZSBhbHNvIGVuY29kZSAiLCIgYW5kICI7Ii4KICMKICMgVGhlc2UgYXJlIHRha2VuIGZyb20gUkZDMjA2OCBhbmQgUkZDMjEwOS4KICMgICAgICAgX0xlZ2FsQ2hhcnMgICAgICAgaXMgdGhlIGxpc3Qgb2YgY2hhcnMgd2hpY2ggZG9uJ3QgcmVxdWlyZSAiJ3MKICMgICAgICAgX1RyYW5zbGF0b3IgICAgICAgaGFzaC10YWJsZSBmb3IgZmFzdCBxdW90aW5nCiAjCi1fTGVnYWxDaGFycyAgICAgICA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICIhIyQlJicqKy0uXl9gfH46IgotX1RyYW5zbGF0b3IgICAgICAgPSB7Ci0gICAgJ1wwMDAnIDogJ1xcMDAwJywgICdcMDAxJyA6ICdcXDAwMScsICAnXDAwMicgOiAnXFwwMDInLAotICAgICdcMDAzJyA6ICdcXDAwMycsICAnXDAwNCcgOiAnXFwwMDQnLCAgJ1wwMDUnIDogJ1xcMDA1JywKLSAgICAnXDAwNicgOiAnXFwwMDYnLCAgJ1wwMDcnIDogJ1xcMDA3JywgICdcMDEwJyA6ICdcXDAxMCcsCi0gICAgJ1wwMTEnIDogJ1xcMDExJywgICdcMDEyJyA6ICdcXDAxMicsICAnXDAxMycgOiAnXFwwMTMnLAotICAgICdcMDE0JyA6ICdcXDAxNCcsICAnXDAxNScgOiAnXFwwMTUnLCAgJ1wwMTYnIDogJ1xcMDE2JywKLSAgICAnXDAxNycgOiAnXFwwMTcnLCAgJ1wwMjAnIDogJ1xcMDIwJywgICdcMDIxJyA6ICdcXDAyMScsCi0gICAgJ1wwMjInIDogJ1xcMDIyJywgICdcMDIzJyA6ICdcXDAyMycsICAnXDAyNCcgOiAnXFwwMjQnLAotICAgICdcMDI1JyA6ICdcXDAyNScsICAnXDAyNicgOiAnXFwwMjYnLCAgJ1wwMjcnIDogJ1xcMDI3JywKLSAgICAnXDAzMCcgOiAnXFwwMzAnLCAgJ1wwMzEnIDogJ1xcMDMxJywgICdcMDMyJyA6ICdcXDAzMicsCi0gICAgJ1wwMzMnIDogJ1xcMDMzJywgICdcMDM0JyA6ICdcXDAzNCcsICAnXDAzNScgOiAnXFwwMzUnLAotICAgICdcMDM2JyA6ICdcXDAzNicsICAnXDAzNycgOiAnXFwwMzcnLAorX0xlZ2FsQ2hhcnMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAiISMkJSYnKistLl5fYHx+OiIKK19VbmVzY2FwZWRDaGFycyA9IF9MZWdhbENoYXJzICsgJyAoKS88PT4/QFtde30nCiAKLSAgICAjIEJlY2F1c2Ugb2YgdGhlIHdheSBicm93c2VycyByZWFsbHkgaGFuZGxlIGNvb2tpZXMgKGFzIG9wcG9zZWQKLSAgICAjIHRvIHdoYXQgdGhlIFJGQyBzYXlzKSB3ZSBhbHNvIGVuY29kZSAsIGFuZCA7CitfVHJhbnNsYXRvciA9IHtuOiAnXFwlMDNvJyAlIG4KKyAgICAgICAgICAgICAgIGZvciBuIGluIHNldChyYW5nZSgyNTYpKSAtIHNldChtYXAob3JkLCBfVW5lc2NhcGVkQ2hhcnMpKX0KK19UcmFuc2xhdG9yLnVwZGF0ZSh7CisgICAgb3JkKCciJyk6ICdcXCInLAorICAgIG9yZCgnXFwnKTogJ1xcXFwnLAorfSkKIAotICAgICcsJyA6ICdcXDA1NCcsICc7JyA6ICdcXDA3MycsCitfaXNfbGVnYWxfa2V5ID0gcmUuY29tcGlsZSgnWyVzXSsnICUgX0xlZ2FsQ2hhcnMpLmZ1bGxtYXRjaAogCi0gICAgJyInIDogJ1xcIicsICAgICAgICdcXCcgOiAnXFxcXCcsCi0KLSAgICAnXDE3NycgOiAnXFwxNzcnLCAgJ1wyMDAnIDogJ1xcMjAwJywgICdcMjAxJyA6ICdcXDIwMScsCi0gICAgJ1wyMDInIDogJ1xcMjAyJywgICdcMjAzJyA6ICdcXDIwMycsICAnXDIwNCcgOiAnXFwyMDQnLAotICAgICdcMjA1JyA6ICdcXDIwNScsICAnXDIwNicgOiAnXFwyMDYnLCAgJ1wyMDcnIDogJ1xcMjA3JywKLSAgICAnXDIxMCcgOiAnXFwyMTAnLCAgJ1wyMTEnIDogJ1xcMjExJywgICdcMjEyJyA6ICdcXDIxMicsCi0gICAgJ1wyMTMnIDogJ1xcMjEzJywgICdcMjE0JyA6ICdcXDIxNCcsICAnXDIxNScgOiAnXFwyMTUnLAotICAgICdcMjE2JyA6ICdcXDIxNicsICAnXDIxNycgOiAnXFwyMTcnLCAgJ1wyMjAnIDogJ1xcMjIwJywKLSAgICAnXDIyMScgOiAnXFwyMjEnLCAgJ1wyMjInIDogJ1xcMjIyJywgICdcMjIzJyA6ICdcXDIyMycsCi0gICAgJ1wyMjQnIDogJ1xcMjI0JywgICdcMjI1JyA6ICdcXDIyNScsICAnXDIyNicgOiAnXFwyMjYnLAotICAgICdcMjI3JyA6ICdcXDIyNycsICAnXDIzMCcgOiAnXFwyMzAnLCAgJ1wyMzEnIDogJ1xcMjMxJywKLSAgICAnXDIzMicgOiAnXFwyMzInLCAgJ1wyMzMnIDogJ1xcMjMzJywgICdcMjM0JyA6ICdcXDIzNCcsCi0gICAgJ1wyMzUnIDogJ1xcMjM1JywgICdcMjM2JyA6ICdcXDIzNicsICAnXDIzNycgOiAnXFwyMzcnLAotICAgICdcMjQwJyA6ICdcXDI0MCcsICAnXDI0MScgOiAnXFwyNDEnLCAgJ1wyNDInIDogJ1xcMjQyJywKLSAgICAnXDI0MycgOiAnXFwyNDMnLCAgJ1wyNDQnIDogJ1xcMjQ0JywgICdcMjQ1JyA6ICdcXDI0NScsCi0gICAgJ1wyNDYnIDogJ1xcMjQ2JywgICdcMjQ3JyA6ICdcXDI0NycsICAnXDI1MCcgOiAnXFwyNTAnLAotICAgICdcMjUxJyA6ICdcXDI1MScsICAnXDI1MicgOiAnXFwyNTInLCAgJ1wyNTMnIDogJ1xcMjUzJywKLSAgICAnXDI1NCcgOiAnXFwyNTQnLCAgJ1wyNTUnIDogJ1xcMjU1JywgICdcMjU2JyA6ICdcXDI1NicsCi0gICAgJ1wyNTcnIDogJ1xcMjU3JywgICdcMjYwJyA6ICdcXDI2MCcsICAnXDI2MScgOiAnXFwyNjEnLAotICAgICdcMjYyJyA6ICdcXDI2MicsICAnXDI2MycgOiAnXFwyNjMnLCAgJ1wyNjQnIDogJ1xcMjY0JywKLSAgICAnXDI2NScgOiAnXFwyNjUnLCAgJ1wyNjYnIDogJ1xcMjY2JywgICdcMjY3JyA6ICdcXDI2NycsCi0gICAgJ1wyNzAnIDogJ1xcMjcwJywgICdcMjcxJyA6ICdcXDI3MScsICAnXDI3MicgOiAnXFwyNzInLAotICAgICdcMjczJyA6ICdcXDI3MycsICAnXDI3NCcgOiAnXFwyNzQnLCAgJ1wyNzUnIDogJ1xcMjc1JywKLSAgICAnXDI3NicgOiAnXFwyNzYnLCAgJ1wyNzcnIDogJ1xcMjc3JywgICdcMzAwJyA6ICdcXDMwMCcsCi0gICAgJ1wzMDEnIDogJ1xcMzAxJywgICdcMzAyJyA6ICdcXDMwMicsICAnXDMwMycgOiAnXFwzMDMnLAotICAgICdcMzA0JyA6ICdcXDMwNCcsICAnXDMwNScgOiAnXFwzMDUnLCAgJ1wzMDYnIDogJ1xcMzA2JywKLSAgICAnXDMwNycgOiAnXFwzMDcnLCAgJ1wzMTAnIDogJ1xcMzEwJywgICdcMzExJyA6ICdcXDMxMScsCi0gICAgJ1wzMTInIDogJ1xcMzEyJywgICdcMzEzJyA6ICdcXDMxMycsICAnXDMxNCcgOiAnXFwzMTQnLAotICAgICdcMzE1JyA6ICdcXDMxNScsICAnXDMxNicgOiAnXFwzMTYnLCAgJ1wzMTcnIDogJ1xcMzE3JywKLSAgICAnXDMyMCcgOiAnXFwzMjAnLCAgJ1wzMjEnIDogJ1xcMzIxJywgICdcMzIyJyA6ICdcXDMyMicsCi0gICAgJ1wzMjMnIDogJ1xcMzIzJywgICdcMzI0JyA6ICdcXDMyNCcsICAnXDMyNScgOiAnXFwzMjUnLAotICAgICdcMzI2JyA6ICdcXDMyNicsICAnXDMyNycgOiAnXFwzMjcnLCAgJ1wzMzAnIDogJ1xcMzMwJywKLSAgICAnXDMzMScgOiAnXFwzMzEnLCAgJ1wzMzInIDogJ1xcMzMyJywgICdcMzMzJyA6ICdcXDMzMycsCi0gICAgJ1wzMzQnIDogJ1xcMzM0JywgICdcMzM1JyA6ICdcXDMzNScsICAnXDMzNicgOiAnXFwzMzYnLAotICAgICdcMzM3JyA6ICdcXDMzNycsICAnXDM0MCcgOiAnXFwzNDAnLCAgJ1wzNDEnIDogJ1xcMzQxJywKLSAgICAnXDM0MicgOiAnXFwzNDInLCAgJ1wzNDMnIDogJ1xcMzQzJywgICdcMzQ0JyA6ICdcXDM0NCcsCi0gICAgJ1wzNDUnIDogJ1xcMzQ1JywgICdcMzQ2JyA6ICdcXDM0NicsICAnXDM0NycgOiAnXFwzNDcnLAotICAgICdcMzUwJyA6ICdcXDM1MCcsICAnXDM1MScgOiAnXFwzNTEnLCAgJ1wzNTInIDogJ1xcMzUyJywKLSAgICAnXDM1MycgOiAnXFwzNTMnLCAgJ1wzNTQnIDogJ1xcMzU0JywgICdcMzU1JyA6ICdcXDM1NScsCi0gICAgJ1wzNTYnIDogJ1xcMzU2JywgICdcMzU3JyA6ICdcXDM1NycsICAnXDM2MCcgOiAnXFwzNjAnLAotICAgICdcMzYxJyA6ICdcXDM2MScsICAnXDM2MicgOiAnXFwzNjInLCAgJ1wzNjMnIDogJ1xcMzYzJywKLSAgICAnXDM2NCcgOiAnXFwzNjQnLCAgJ1wzNjUnIDogJ1xcMzY1JywgICdcMzY2JyA6ICdcXDM2NicsCi0gICAgJ1wzNjcnIDogJ1xcMzY3JywgICdcMzcwJyA6ICdcXDM3MCcsICAnXDM3MScgOiAnXFwzNzEnLAotICAgICdcMzcyJyA6ICdcXDM3MicsICAnXDM3MycgOiAnXFwzNzMnLCAgJ1wzNzQnIDogJ1xcMzc0JywKLSAgICAnXDM3NScgOiAnXFwzNzUnLCAgJ1wzNzYnIDogJ1xcMzc2JywgICdcMzc3JyA6ICdcXDM3NycKLSAgICB9Ci0KLWRlZiBfcXVvdGUoc3RyLCBMZWdhbENoYXJzPV9MZWdhbENoYXJzKToKK2RlZiBfcXVvdGUoc3RyKToKICAgICByIiIiUXVvdGUgYSBzdHJpbmcgZm9yIHVzZSBpbiBhIGNvb2tpZSBoZWFkZXIuCiAKICAgICBJZiB0aGUgc3RyaW5nIGRvZXMgbm90IG5lZWQgdG8gYmUgZG91YmxlLXF1b3RlZCwgdGhlbiBqdXN0IHJldHVybiB0aGUKICAgICBzdHJpbmcuICBPdGhlcndpc2UsIHN1cnJvdW5kIHRoZSBzdHJpbmcgaW4gZG91YmxlcXVvdGVzIGFuZCBxdW90ZQogICAgICh3aXRoIGEgXCkgc3BlY2lhbCBjaGFyYWN0ZXJzLgogICAgICIiIgotICAgIGlmIGFsbChjIGluIExlZ2FsQ2hhcnMgZm9yIGMgaW4gc3RyKToKKyAgICBpZiBzdHIgaXMgTm9uZSBvciBfaXNfbGVnYWxfa2V5KHN0cik6CiAgICAgICAgIHJldHVybiBzdHIKICAgICBlbHNlOgotICAgICAgICByZXR1cm4gJyInICsgX251bGxqb2luKF9UcmFuc2xhdG9yLmdldChzLCBzKSBmb3IgcyBpbiBzdHIpICsgJyInCisgICAgICAgIHJldHVybiAnIicgKyBzdHIudHJhbnNsYXRlKF9UcmFuc2xhdG9yKSArICciJwogCiAKIF9PY3RhbFBhdHQgPSByZS5jb21waWxlKHIiXFxbMC0zXVswLTddWzAtN10iKQpAQCAtMjQxLDcgKzE5NSw3IEBACiBkZWYgX3VucXVvdGUoc3RyKToKICAgICAjIElmIHRoZXJlIGFyZW4ndCBhbnkgZG91YmxlcXVvdGVzLAogICAgICMgdGhlbiB0aGVyZSBjYW4ndCBiZSBhbnkgc3BlY2lhbCBjaGFyYWN0ZXJzLiAgU2VlIFJGQyAyMTA5LgotICAgIGlmIGxlbihzdHIpIDwgMjoKKyAgICBpZiBzdHIgaXMgTm9uZSBvciBsZW4oc3RyKSA8IDI6CiAgICAgICAgIHJldHVybiBzdHIKICAgICBpZiBzdHJbMF0gIT0gJyInIG9yIHN0clstMV0gIT0gJyInOgogICAgICAgICByZXR1cm4gc3RyCkBAIC0zMzksMzMgKzI5MywxMDggQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgIyBTZXQgZGVmYXVsdHMKLSAgICAgICAgc2VsZi5rZXkgPSBzZWxmLnZhbHVlID0gc2VsZi5jb2RlZF92YWx1ZSA9IE5vbmUKKyAgICAgICAgc2VsZi5fa2V5ID0gc2VsZi5fdmFsdWUgPSBzZWxmLl9jb2RlZF92YWx1ZSA9IE5vbmUKIAogICAgICAgICAjIFNldCBkZWZhdWx0IGF0dHJpYnV0ZXMKICAgICAgICAgZm9yIGtleSBpbiBzZWxmLl9yZXNlcnZlZDoKICAgICAgICAgICAgIGRpY3QuX19zZXRpdGVtX18oc2VsZiwga2V5LCAiIikKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBrZXkoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9rZXkKKworICAgIEBrZXkuc2V0dGVyCisgICAgZGVmIGtleShzZWxmLCBrZXkpOgorICAgICAgICBfd2Fybl9kZXByZWNhdGVkX3NldHRlcigna2V5JykKKyAgICAgICAgc2VsZi5fa2V5ID0ga2V5CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl92YWx1ZQorCisgICAgQHZhbHVlLnNldHRlcgorICAgIGRlZiB2YWx1ZShzZWxmLCB2YWx1ZSk6CisgICAgICAgIF93YXJuX2RlcHJlY2F0ZWRfc2V0dGVyKCd2YWx1ZScpCisgICAgICAgIHNlbGYuX3ZhbHVlID0gdmFsdWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb2RlZF92YWx1ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvZGVkX3ZhbHVlCisKKyAgICBAY29kZWRfdmFsdWUuc2V0dGVyCisgICAgZGVmIGNvZGVkX3ZhbHVlKHNlbGYsIGNvZGVkX3ZhbHVlKToKKyAgICAgICAgX3dhcm5fZGVwcmVjYXRlZF9zZXR0ZXIoJ2NvZGVkX3ZhbHVlJykKKyAgICAgICAgc2VsZi5fY29kZWRfdmFsdWUgPSBjb2RlZF92YWx1ZQorCiAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIEssIFYpOgogICAgICAgICBLID0gSy5sb3dlcigpCiAgICAgICAgIGlmIG5vdCBLIGluIHNlbGYuX3Jlc2VydmVkOgotICAgICAgICAgICAgcmFpc2UgQ29va2llRXJyb3IoIkludmFsaWQgQXR0cmlidXRlICVzIiAlIEspCisgICAgICAgICAgICByYWlzZSBDb29raWVFcnJvcigiSW52YWxpZCBhdHRyaWJ1dGUgJXIiICUgKEssKSkKICAgICAgICAgZGljdC5fX3NldGl0ZW1fXyhzZWxmLCBLLCBWKQogCisgICAgZGVmIHNldGRlZmF1bHQoc2VsZiwga2V5LCB2YWw9Tm9uZSk6CisgICAgICAgIGtleSA9IGtleS5sb3dlcigpCisgICAgICAgIGlmIGtleSBub3QgaW4gc2VsZi5fcmVzZXJ2ZWQ6CisgICAgICAgICAgICByYWlzZSBDb29raWVFcnJvcigiSW52YWxpZCBhdHRyaWJ1dGUgJXIiICUgKGtleSwpKQorICAgICAgICByZXR1cm4gZGljdC5zZXRkZWZhdWx0KHNlbGYsIGtleSwgdmFsKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBtb3JzZWwpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShtb3JzZWwsIE1vcnNlbCk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIChkaWN0Ll9fZXFfXyhzZWxmLCBtb3JzZWwpIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuX3ZhbHVlID09IG1vcnNlbC5fdmFsdWUgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5fa2V5ID09IG1vcnNlbC5fa2V5IGFuZAorICAgICAgICAgICAgICAgIHNlbGYuX2NvZGVkX3ZhbHVlID09IG1vcnNlbC5fY29kZWRfdmFsdWUpCisKKyAgICBfX25lX18gPSBvYmplY3QuX19uZV9fCisKKyAgICBkZWYgY29weShzZWxmKToKKyAgICAgICAgbW9yc2VsID0gTW9yc2VsKCkKKyAgICAgICAgZGljdC51cGRhdGUobW9yc2VsLCBzZWxmKQorICAgICAgICBtb3JzZWwuX19kaWN0X18udXBkYXRlKHNlbGYuX19kaWN0X18pCisgICAgICAgIHJldHVybiBtb3JzZWwKKworICAgIGRlZiB1cGRhdGUoc2VsZiwgdmFsdWVzKToKKyAgICAgICAgZGF0YSA9IHt9CisgICAgICAgIGZvciBrZXksIHZhbCBpbiBkaWN0KHZhbHVlcykuaXRlbXMoKToKKyAgICAgICAgICAgIGtleSA9IGtleS5sb3dlcigpCisgICAgICAgICAgICBpZiBrZXkgbm90IGluIHNlbGYuX3Jlc2VydmVkOgorICAgICAgICAgICAgICAgIHJhaXNlIENvb2tpZUVycm9yKCJJbnZhbGlkIGF0dHJpYnV0ZSAlciIgJSAoa2V5LCkpCisgICAgICAgICAgICBkYXRhW2tleV0gPSB2YWwKKyAgICAgICAgZGljdC51cGRhdGUoc2VsZiwgZGF0YSkKKwogICAgIGRlZiBpc1Jlc2VydmVkS2V5KHNlbGYsIEspOgogICAgICAgICByZXR1cm4gSy5sb3dlcigpIGluIHNlbGYuX3Jlc2VydmVkCiAKICAgICBkZWYgc2V0KHNlbGYsIGtleSwgdmFsLCBjb2RlZF92YWwsIExlZ2FsQ2hhcnM9X0xlZ2FsQ2hhcnMpOgotICAgICAgICAjIEZpcnN0IHdlIHZlcmlmeSB0aGF0IHRoZSBrZXkgaXNuJ3QgYSByZXNlcnZlZCB3b3JkCi0gICAgICAgICMgU2Vjb25kIHdlIG1ha2Ugc3VyZSBpdCBvbmx5IGNvbnRhaW5zIGxlZ2FsIGNoYXJhY3RlcnMKKyAgICAgICAgaWYgTGVnYWxDaGFycyAhPSBfTGVnYWxDaGFyczoKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAgICAgICAgICAgICAnTGVnYWxDaGFycyBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZCwgaWdub3JlZCBhbmQgd2lsbCAnCisgICAgICAgICAgICAgICAgJ2JlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zLicsIERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIpCisKICAgICAgICAgaWYga2V5Lmxvd2VyKCkgaW4gc2VsZi5fcmVzZXJ2ZWQ6Ci0gICAgICAgICAgICByYWlzZSBDb29raWVFcnJvcigiQXR0ZW1wdCB0byBzZXQgYSByZXNlcnZlZCBrZXk6ICVzIiAlIGtleSkKLSAgICAgICAgaWYgYW55KGMgbm90IGluIExlZ2FsQ2hhcnMgZm9yIGMgaW4ga2V5KToKLSAgICAgICAgICAgIHJhaXNlIENvb2tpZUVycm9yKCJJbGxlZ2FsIGtleSB2YWx1ZTogJXMiICUga2V5KQorICAgICAgICAgICAgcmFpc2UgQ29va2llRXJyb3IoJ0F0dGVtcHQgdG8gc2V0IGEgcmVzZXJ2ZWQga2V5ICVyJyAlIChrZXksKSkKKyAgICAgICAgaWYgbm90IF9pc19sZWdhbF9rZXkoa2V5KToKKyAgICAgICAgICAgIHJhaXNlIENvb2tpZUVycm9yKCdJbGxlZ2FsIGtleSAlcicgJSAoa2V5LCkpCiAKICAgICAgICAgIyBJdCdzIGEgZ29vZCBrZXksIHNvIHNhdmUgaXQuCi0gICAgICAgIHNlbGYua2V5ID0ga2V5Ci0gICAgICAgIHNlbGYudmFsdWUgPSB2YWwKLSAgICAgICAgc2VsZi5jb2RlZF92YWx1ZSA9IGNvZGVkX3ZhbAorICAgICAgICBzZWxmLl9rZXkgPSBrZXkKKyAgICAgICAgc2VsZi5fdmFsdWUgPSB2YWwKKyAgICAgICAgc2VsZi5fY29kZWRfdmFsdWUgPSBjb2RlZF92YWwKKworICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAna2V5Jzogc2VsZi5fa2V5LAorICAgICAgICAgICAgJ3ZhbHVlJzogc2VsZi5fdmFsdWUsCisgICAgICAgICAgICAnY29kZWRfdmFsdWUnOiBzZWxmLl9jb2RlZF92YWx1ZSwKKyAgICAgICAgfQorCisgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CisgICAgICAgIHNlbGYuX2tleSA9IHN0YXRlWydrZXknXQorICAgICAgICBzZWxmLl92YWx1ZSA9IHN0YXRlWyd2YWx1ZSddCisgICAgICAgIHNlbGYuX2NvZGVkX3ZhbHVlID0gc3RhdGVbJ2NvZGVkX3ZhbHVlJ10KIAogICAgIGRlZiBvdXRwdXQoc2VsZiwgYXR0cnM9Tm9uZSwgaGVhZGVyPSJTZXQtQ29va2llOiIpOgogICAgICAgICByZXR1cm4gIiVzICVzIiAlIChoZWFkZXIsIHNlbGYuT3V0cHV0U3RyaW5nKGF0dHJzKSkKQEAgLTM3Myw4ICs0MDIsNyBAQAogICAgIF9fc3RyX18gPSBvdXRwdXQKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICc8JXM6ICVzPSVzPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYua2V5LCByZXByKHNlbGYudmFsdWUpKQorICAgICAgICByZXR1cm4gJzwlczogJXM+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5PdXRwdXRTdHJpbmcoKSkKIAogICAgIGRlZiBqc19vdXRwdXQoc2VsZiwgYXR0cnM9Tm9uZSk6CiAgICAgICAgICMgUHJpbnQgamF2YXNjcmlwdApAQCAtNDA4LDEwICs0MzYsOSBAQAogICAgICAgICAgICAgICAgIGFwcGVuZCgiJXM9JXMiICUgKHNlbGYuX3Jlc2VydmVkW2tleV0sIF9nZXRkYXRlKHZhbHVlKSkpCiAgICAgICAgICAgICBlbGlmIGtleSA9PSAibWF4LWFnZSIgYW5kIGlzaW5zdGFuY2UodmFsdWUsIGludCk6CiAgICAgICAgICAgICAgICAgYXBwZW5kKCIlcz0lZCIgJSAoc2VsZi5fcmVzZXJ2ZWRba2V5XSwgdmFsdWUpKQotICAgICAgICAgICAgZWxpZiBrZXkgPT0gInNlY3VyZSI6Ci0gICAgICAgICAgICAgICAgYXBwZW5kKHN0cihzZWxmLl9yZXNlcnZlZFtrZXldKSkKLSAgICAgICAgICAgIGVsaWYga2V5ID09ICJodHRwb25seSI6Ci0gICAgICAgICAgICAgICAgYXBwZW5kKHN0cihzZWxmLl9yZXNlcnZlZFtrZXldKSkKKyAgICAgICAgICAgIGVsaWYga2V5IGluIHNlbGYuX2ZsYWdzOgorICAgICAgICAgICAgICAgIGlmIHZhbHVlOgorICAgICAgICAgICAgICAgICAgICBhcHBlbmQoc3RyKHNlbGYuX3Jlc2VydmVkW2tleV0pKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBhcHBlbmQoIiVzPSVzIiAlIChzZWxmLl9yZXNlcnZlZFtrZXldLCB2YWx1ZSkpCiAKQEAgLTUzNCwxMCArNTYxLDE3IEBACiAgICAgICAgIHJldHVybgogCiAgICAgZGVmIF9fcGFyc2Vfc3RyaW5nKHNlbGYsIHN0ciwgcGF0dD1fQ29va2llUGF0dGVybik6Ci0gICAgICAgIGkgPSAwICAgICAgICAgICAgIyBPdXIgc3RhcnRpbmcgcG9pbnQKLSAgICAgICAgbiA9IGxlbihzdHIpICAgICAjIExlbmd0aCBvZiBzdHJpbmcKLSAgICAgICAgTSA9IE5vbmUgICAgICAgICAjIGN1cnJlbnQgbW9yc2VsCisgICAgICAgIGkgPSAwICAgICAgICAgICAgICAgICAjIE91ciBzdGFydGluZyBwb2ludAorICAgICAgICBuID0gbGVuKHN0cikgICAgICAgICAgIyBMZW5ndGggb2Ygc3RyaW5nCisgICAgICAgIHBhcnNlZF9pdGVtcyA9IFtdICAgICAjIFBhcnNlZCAodHlwZSwga2V5LCB2YWx1ZSkgdHJpcGxlcworICAgICAgICBtb3JzZWxfc2VlbiA9IEZhbHNlICAgIyBBIGtleT12YWx1ZSBwYWlyIHdhcyBwcmV2aW91c2x5IGVuY291bnRlcmVkCiAKKyAgICAgICAgVFlQRV9BVFRSSUJVVEUgPSAxCisgICAgICAgIFRZUEVfS0VZVkFMVUUgPSAyCisKKyAgICAgICAgIyBXZSBmaXJzdCBwYXJzZSB0aGUgd2hvbGUgY29va2llIHN0cmluZyBhbmQgcmVqZWN0IGl0IGlmIGl0J3MKKyAgICAgICAgIyBzeW50YWN0aWNhbGx5IGludmFsaWQgKHRoaXMgaGVscHMgYXZvaWQgc29tZSBjbGFzc2VzIG9mIGluamVjdGlvbgorICAgICAgICAjIGF0dGFja3MpLgogICAgICAgICB3aGlsZSAwIDw9IGkgPCBuOgogICAgICAgICAgICAgIyBTdGFydCBsb29raW5nIGZvciBhIGNvb2tpZQogICAgICAgICAgICAgbWF0Y2ggPSBwYXR0Lm1hdGNoKHN0ciwgaSkKQEAgLTU0OCwyMiArNTgyLDQxIEBACiAgICAgICAgICAgICBrZXksIHZhbHVlID0gbWF0Y2guZ3JvdXAoImtleSIpLCBtYXRjaC5ncm91cCgidmFsIikKICAgICAgICAgICAgIGkgPSBtYXRjaC5lbmQoMCkKIAotICAgICAgICAgICAgIyBQYXJzZSB0aGUga2V5LCB2YWx1ZSBpbiBjYXNlIGl0J3MgbWV0YWluZm8KICAgICAgICAgICAgIGlmIGtleVswXSA9PSAiJCI6Ci0gICAgICAgICAgICAgICAgIyBXZSBpZ25vcmUgYXR0cmlidXRlcyB3aGljaCBwZXJ0YWluIHRvIHRoZSBjb29raWUKLSAgICAgICAgICAgICAgICAjIG1lY2hhbmlzbSBhcyBhIHdob2xlLiAgU2VlIFJGQyAyMTA5LgotICAgICAgICAgICAgICAgICMgKERvZXMgYW55b25lIGNhcmU/KQotICAgICAgICAgICAgICAgIGlmIE06Ci0gICAgICAgICAgICAgICAgICAgIE1ba2V5WzE6XV0gPSB2YWx1ZQorICAgICAgICAgICAgICAgIGlmIG5vdCBtb3JzZWxfc2VlbjoKKyAgICAgICAgICAgICAgICAgICAgIyBXZSBpZ25vcmUgYXR0cmlidXRlcyB3aGljaCBwZXJ0YWluIHRvIHRoZSBjb29raWUKKyAgICAgICAgICAgICAgICAgICAgIyBtZWNoYW5pc20gYXMgYSB3aG9sZSwgc3VjaCBhcyAiJFZlcnNpb24iLgorICAgICAgICAgICAgICAgICAgICAjIFNlZSBSRkMgMjk2NS4gKERvZXMgYW55b25lIGNhcmU/KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHBhcnNlZF9pdGVtcy5hcHBlbmQoKFRZUEVfQVRUUklCVVRFLCBrZXlbMTpdLCB2YWx1ZSkpCiAgICAgICAgICAgICBlbGlmIGtleS5sb3dlcigpIGluIE1vcnNlbC5fcmVzZXJ2ZWQ6Ci0gICAgICAgICAgICAgICAgaWYgTToKLSAgICAgICAgICAgICAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGtleS5sb3dlcigpIGluIE1vcnNlbC5fZmxhZ3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTVtrZXldID0gVHJ1ZQorICAgICAgICAgICAgICAgIGlmIG5vdCBtb3JzZWxfc2VlbjoKKyAgICAgICAgICAgICAgICAgICAgIyBJbnZhbGlkIGNvb2tpZSBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaWYga2V5Lmxvd2VyKCkgaW4gTW9yc2VsLl9mbGFnczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZF9pdGVtcy5hcHBlbmQoKFRZUEVfQVRUUklCVVRFLCBrZXksIFRydWUpKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgTVtrZXldID0gX3VucXVvdGUodmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAgICAjIEludmFsaWQgY29va2llIHN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VkX2l0ZW1zLmFwcGVuZCgoVFlQRV9BVFRSSUJVVEUsIGtleSwgX3VucXVvdGUodmFsdWUpKSkKICAgICAgICAgICAgIGVsaWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgcnZhbCwgY3ZhbCA9IHNlbGYudmFsdWVfZGVjb2RlKHZhbHVlKQorICAgICAgICAgICAgICAgIHBhcnNlZF9pdGVtcy5hcHBlbmQoKFRZUEVfS0VZVkFMVUUsIGtleSwgc2VsZi52YWx1ZV9kZWNvZGUodmFsdWUpKSkKKyAgICAgICAgICAgICAgICBtb3JzZWxfc2VlbiA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBJbnZhbGlkIGNvb2tpZSBzdHJpbmcKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIFRoZSBjb29raWUgc3RyaW5nIGlzIHZhbGlkLCBhcHBseSBpdC4KKyAgICAgICAgTSA9IE5vbmUgICAgICAgICAjIGN1cnJlbnQgbW9yc2VsCisgICAgICAgIGZvciB0cCwga2V5LCB2YWx1ZSBpbiBwYXJzZWRfaXRlbXM6CisgICAgICAgICAgICBpZiB0cCA9PSBUWVBFX0FUVFJJQlVURToKKyAgICAgICAgICAgICAgICBhc3NlcnQgTSBpcyBub3QgTm9uZQorICAgICAgICAgICAgICAgIE1ba2V5XSA9IHZhbHVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFzc2VydCB0cCA9PSBUWVBFX0tFWVZBTFVFCisgICAgICAgICAgICAgICAgcnZhbCwgY3ZhbCA9IHZhbHVlCiAgICAgICAgICAgICAgICAgc2VsZi5fX3NldChrZXksIHJ2YWwsIGN2YWwpCiAgICAgICAgICAgICAgICAgTSA9IHNlbGZba2V5XQogCmRpZmYgLS1naXQgYS9MaWIvaHR0cC9zZXJ2ZXIucHkgYi9MaWIvaHR0cC9zZXJ2ZXIucHkKaW5kZXggNDY4ODA5Ni4uZTFiNzFhYiAxMDA2NDQKLS0tIGEvTGliL2h0dHAvc2VydmVyLnB5CisrKyBiL0xpYi9odHRwL3NlcnZlci5weQpAQCAtMTAzLDYgKzEwMyw4IEBACiBpbXBvcnQgY29weQogaW1wb3J0IGFyZ3BhcnNlCiAKK2Zyb20gaHR0cCBpbXBvcnQgSFRUUFN0YXR1cworCiAKICMgRGVmYXVsdCBlcnJvciBtZXNzYWdlIHRlbXBsYXRlCiBERUZBVUxUX0VSUk9SX01FU1NBR0UgPSAiIiJcCkBAIC0yODEsNyArMjgzLDkgQEAKICAgICAgICAgaWYgbGVuKHdvcmRzKSA9PSAzOgogICAgICAgICAgICAgY29tbWFuZCwgcGF0aCwgdmVyc2lvbiA9IHdvcmRzCiAgICAgICAgICAgICBpZiB2ZXJzaW9uWzo1XSAhPSAnSFRUUC8nOgotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MDAsICJCYWQgcmVxdWVzdCB2ZXJzaW9uICglcikiICUgdmVyc2lvbikKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuQkFEX1JFUVVFU1QsCisgICAgICAgICAgICAgICAgICAgICJCYWQgcmVxdWVzdCB2ZXJzaW9uICglcikiICUgdmVyc2lvbikKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBiYXNlX3ZlcnNpb25fbnVtYmVyID0gdmVyc2lvbi5zcGxpdCgnLycsIDEpWzFdCkBAIC0yOTYsMjUgKzMwMCwzMSBAQAogICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgICAgICAgICAgdmVyc2lvbl9udW1iZXIgPSBpbnQodmVyc2lvbl9udW1iZXJbMF0pLCBpbnQodmVyc2lvbl9udW1iZXJbMV0pCiAgICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEluZGV4RXJyb3IpOgotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MDAsICJCYWQgcmVxdWVzdCB2ZXJzaW9uICglcikiICUgdmVyc2lvbikKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuQkFEX1JFUVVFU1QsCisgICAgICAgICAgICAgICAgICAgICJCYWQgcmVxdWVzdCB2ZXJzaW9uICglcikiICUgdmVyc2lvbikKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIGlmIHZlcnNpb25fbnVtYmVyID49ICgxLCAxKSBhbmQgc2VsZi5wcm90b2NvbF92ZXJzaW9uID49ICJIVFRQLzEuMSI6CiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZV9jb25uZWN0aW9uID0gRmFsc2UKICAgICAgICAgICAgIGlmIHZlcnNpb25fbnVtYmVyID49ICgyLCAwKToKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNTA1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBIVFRQIFZlcnNpb24gKCVzKSIgJSBiYXNlX3ZlcnNpb25fbnVtYmVyKQorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKKyAgICAgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5IVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRCwKKyAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgSFRUUCBWZXJzaW9uICglcykiICUgYmFzZV92ZXJzaW9uX251bWJlcikKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgZWxpZiBsZW4od29yZHMpID09IDI6CiAgICAgICAgICAgICBjb21tYW5kLCBwYXRoID0gd29yZHMKICAgICAgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbiA9IFRydWUKICAgICAgICAgICAgIGlmIGNvbW1hbmQgIT0gJ0dFVCc6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJhZCBIVFRQLzAuOSByZXF1ZXN0IHR5cGUgKCVyKSIgJSBjb21tYW5kKQorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKKyAgICAgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5CQURfUkVRVUVTVCwKKyAgICAgICAgICAgICAgICAgICAgIkJhZCBIVFRQLzAuOSByZXF1ZXN0IHR5cGUgKCVyKSIgJSBjb21tYW5kKQogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBlbGlmIG5vdCB3b3JkczoKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQwMCwgIkJhZCByZXF1ZXN0IHN5bnRheCAoJXIpIiAlIHJlcXVlc3RsaW5lKQorICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAorICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuQkFEX1JFUVVFU1QsCisgICAgICAgICAgICAgICAgIkJhZCByZXF1ZXN0IHN5bnRheCAoJXIpIiAlIHJlcXVlc3RsaW5lKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHNlbGYuY29tbWFuZCwgc2VsZi5wYXRoLCBzZWxmLnJlcXVlc3RfdmVyc2lvbiA9IGNvbW1hbmQsIHBhdGgsIHZlcnNpb24KIApAQCAtMzIzLDcgKzMzMyw5IEBACiAgICAgICAgICAgICBzZWxmLmhlYWRlcnMgPSBodHRwLmNsaWVudC5wYXJzZV9oZWFkZXJzKHNlbGYucmZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jbGFzcz1zZWxmLk1lc3NhZ2VDbGFzcykKICAgICAgICAgZXhjZXB0IGh0dHAuY2xpZW50LkxpbmVUb29Mb25nOgotICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQwMCwgIkxpbmUgdG9vIGxvbmciKQorICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAorICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuQkFEX1JFUVVFU1QsCisgICAgICAgICAgICAgICAgIkxpbmUgdG9vIGxvbmciKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAgICAgY29ubnR5cGUgPSBzZWxmLmhlYWRlcnMuZ2V0KCdDb25uZWN0aW9uJywgIiIpCkBAIC0zNTUsNyArMzY3LDcgQEAKICAgICAgICAgRmFsc2UuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZV9vbmx5KDEwMCkKKyAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlX29ubHkoSFRUUFN0YXR1cy5DT05USU5VRSkKICAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCiAgICAgICAgIHJldHVybiBUcnVlCiAKQEAgLTM3Myw3ICszODUsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdGxpbmUgPSAnJwogICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdF92ZXJzaW9uID0gJycKICAgICAgICAgICAgICAgICBzZWxmLmNvbW1hbmQgPSAnJwotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MTQpCisgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKEhUVFBTdGF0dXMuUkVRVUVTVF9VUklfVE9PX0xPTkcpCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5yYXdfcmVxdWVzdGxpbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZV9jb25uZWN0aW9uID0gVHJ1ZQpAQCAtMzgzLDcgKzM5NSw5IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBtbmFtZSA9ICdkb18nICsgc2VsZi5jb21tYW5kCiAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCBtbmFtZSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDUwMSwgIlVuc3VwcG9ydGVkIG1ldGhvZCAoJXIpIiAlIHNlbGYuY29tbWFuZCkKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuTk9UX0lNUExFTUVOVEVELAorICAgICAgICAgICAgICAgICAgICAiVW5zdXBwb3J0ZWQgbWV0aG9kICglcikiICUgc2VsZi5jb21tYW5kKQogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihzZWxmLCBtbmFtZSkKICAgICAgICAgICAgIG1ldGhvZCgpCkBAIC00MzgsNyArNDUyLDExIEBACiAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ0Nvbm5lY3Rpb24nLCAnY2xvc2UnKQogICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdDb250ZW50LUxlbmd0aCcsIGludChsZW4oYm9keSkpKQogICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKLSAgICAgICAgaWYgc2VsZi5jb21tYW5kICE9ICdIRUFEJyBhbmQgY29kZSA+PSAyMDAgYW5kIGNvZGUgbm90IGluICgyMDQsIDMwNCk6CisKKyAgICAgICAgaWYgKHNlbGYuY29tbWFuZCAhPSAnSEVBRCcgYW5kCisgICAgICAgICAgICAgICAgY29kZSA+PSAyMDAgYW5kCisgICAgICAgICAgICAgICAgY29kZSBub3QgaW4gKAorICAgICAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLk5PX0NPTlRFTlQsIEhUVFBTdGF0dXMuTk9UX01PRElGSUVEKSk6CiAgICAgICAgICAgICBzZWxmLndmaWxlLndyaXRlKGJvZHkpCiAKICAgICBkZWYgc2VuZF9yZXNwb25zZShzZWxmLCBjb2RlLCBtZXNzYWdlPU5vbmUpOgpAQCAtNDk5LDcgKzUxNyw4IEBACiAgICAgICAgIFRoaXMgaXMgY2FsbGVkIGJ5IHNlbmRfcmVzcG9uc2UoKS4KIAogICAgICAgICAiIiIKLQorICAgICAgICBpZiBpc2luc3RhbmNlKGNvZGUsIEhUVFBTdGF0dXMpOgorICAgICAgICAgICAgY29kZSA9IGNvZGUudmFsdWUKICAgICAgICAgc2VsZi5sb2dfbWVzc2FnZSgnIiVzIiAlcyAlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXF1ZXN0bGluZSwgc3RyKGNvZGUpLCBzdHIoc2l6ZSkpCiAKQEAgLTU4Miw4MiArNjAxLDExIEBACiAgICAgIyBNZXNzYWdlQ2xhc3MgdXNlZCB0byBwYXJzZSBoZWFkZXJzCiAgICAgTWVzc2FnZUNsYXNzID0gaHR0cC5jbGllbnQuSFRUUE1lc3NhZ2UKIAotICAgICMgVGFibGUgbWFwcGluZyByZXNwb25zZSBjb2RlcyB0byBtZXNzYWdlczsgZW50cmllcyBoYXZlIHRoZQotICAgICMgZm9ybSB7Y29kZTogKHNob3J0bWVzc2FnZSwgbG9uZ21lc3NhZ2UpfS4KLSAgICAjIFNlZSBSRkMgMjYxNiBhbmQgNjU4NS4KKyAgICAjIGhhY2sgdG8gbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKICAgICByZXNwb25zZXMgPSB7Ci0gICAgICAgIDEwMDogKCdDb250aW51ZScsICdSZXF1ZXN0IHJlY2VpdmVkLCBwbGVhc2UgY29udGludWUnKSwKLSAgICAgICAgMTAxOiAoJ1N3aXRjaGluZyBQcm90b2NvbHMnLAotICAgICAgICAgICAgICAnU3dpdGNoaW5nIHRvIG5ldyBwcm90b2NvbDsgb2JleSBVcGdyYWRlIGhlYWRlcicpLAotCi0gICAgICAgIDIwMDogKCdPSycsICdSZXF1ZXN0IGZ1bGZpbGxlZCwgZG9jdW1lbnQgZm9sbG93cycpLAotICAgICAgICAyMDE6ICgnQ3JlYXRlZCcsICdEb2N1bWVudCBjcmVhdGVkLCBVUkwgZm9sbG93cycpLAotICAgICAgICAyMDI6ICgnQWNjZXB0ZWQnLAotICAgICAgICAgICAgICAnUmVxdWVzdCBhY2NlcHRlZCwgcHJvY2Vzc2luZyBjb250aW51ZXMgb2ZmLWxpbmUnKSwKLSAgICAgICAgMjAzOiAoJ05vbi1BdXRob3JpdGF0aXZlIEluZm9ybWF0aW9uJywgJ1JlcXVlc3QgZnVsZmlsbGVkIGZyb20gY2FjaGUnKSwKLSAgICAgICAgMjA0OiAoJ05vIENvbnRlbnQnLCAnUmVxdWVzdCBmdWxmaWxsZWQsIG5vdGhpbmcgZm9sbG93cycpLAotICAgICAgICAyMDU6ICgnUmVzZXQgQ29udGVudCcsICdDbGVhciBpbnB1dCBmb3JtIGZvciBmdXJ0aGVyIGlucHV0LicpLAotICAgICAgICAyMDY6ICgnUGFydGlhbCBDb250ZW50JywgJ1BhcnRpYWwgY29udGVudCBmb2xsb3dzLicpLAotCi0gICAgICAgIDMwMDogKCdNdWx0aXBsZSBDaG9pY2VzJywKLSAgICAgICAgICAgICAgJ09iamVjdCBoYXMgc2V2ZXJhbCByZXNvdXJjZXMgLS0gc2VlIFVSSSBsaXN0JyksCi0gICAgICAgIDMwMTogKCdNb3ZlZCBQZXJtYW5lbnRseScsICdPYmplY3QgbW92ZWQgcGVybWFuZW50bHkgLS0gc2VlIFVSSSBsaXN0JyksCi0gICAgICAgIDMwMjogKCdGb3VuZCcsICdPYmplY3QgbW92ZWQgdGVtcG9yYXJpbHkgLS0gc2VlIFVSSSBsaXN0JyksCi0gICAgICAgIDMwMzogKCdTZWUgT3RoZXInLCAnT2JqZWN0IG1vdmVkIC0tIHNlZSBNZXRob2QgYW5kIFVSTCBsaXN0JyksCi0gICAgICAgIDMwNDogKCdOb3QgTW9kaWZpZWQnLAotICAgICAgICAgICAgICAnRG9jdW1lbnQgaGFzIG5vdCBjaGFuZ2VkIHNpbmNlIGdpdmVuIHRpbWUnKSwKLSAgICAgICAgMzA1OiAoJ1VzZSBQcm94eScsCi0gICAgICAgICAgICAgICdZb3UgbXVzdCB1c2UgcHJveHkgc3BlY2lmaWVkIGluIExvY2F0aW9uIHRvIGFjY2VzcyB0aGlzICcKLSAgICAgICAgICAgICAgJ3Jlc291cmNlLicpLAotICAgICAgICAzMDc6ICgnVGVtcG9yYXJ5IFJlZGlyZWN0JywKLSAgICAgICAgICAgICAgJ09iamVjdCBtb3ZlZCB0ZW1wb3JhcmlseSAtLSBzZWUgVVJJIGxpc3QnKSwKLQotICAgICAgICA0MDA6ICgnQmFkIFJlcXVlc3QnLAotICAgICAgICAgICAgICAnQmFkIHJlcXVlc3Qgc3ludGF4IG9yIHVuc3VwcG9ydGVkIG1ldGhvZCcpLAotICAgICAgICA0MDE6ICgnVW5hdXRob3JpemVkJywKLSAgICAgICAgICAgICAgJ05vIHBlcm1pc3Npb24gLS0gc2VlIGF1dGhvcml6YXRpb24gc2NoZW1lcycpLAotICAgICAgICA0MDI6ICgnUGF5bWVudCBSZXF1aXJlZCcsCi0gICAgICAgICAgICAgICdObyBwYXltZW50IC0tIHNlZSBjaGFyZ2luZyBzY2hlbWVzJyksCi0gICAgICAgIDQwMzogKCdGb3JiaWRkZW4nLAotICAgICAgICAgICAgICAnUmVxdWVzdCBmb3JiaWRkZW4gLS0gYXV0aG9yaXphdGlvbiB3aWxsIG5vdCBoZWxwJyksCi0gICAgICAgIDQwNDogKCdOb3QgRm91bmQnLCAnTm90aGluZyBtYXRjaGVzIHRoZSBnaXZlbiBVUkknKSwKLSAgICAgICAgNDA1OiAoJ01ldGhvZCBOb3QgQWxsb3dlZCcsCi0gICAgICAgICAgICAgICdTcGVjaWZpZWQgbWV0aG9kIGlzIGludmFsaWQgZm9yIHRoaXMgcmVzb3VyY2UuJyksCi0gICAgICAgIDQwNjogKCdOb3QgQWNjZXB0YWJsZScsICdVUkkgbm90IGF2YWlsYWJsZSBpbiBwcmVmZXJyZWQgZm9ybWF0LicpLAotICAgICAgICA0MDc6ICgnUHJveHkgQXV0aGVudGljYXRpb24gUmVxdWlyZWQnLCAnWW91IG11c3QgYXV0aGVudGljYXRlIHdpdGggJwotICAgICAgICAgICAgICAndGhpcyBwcm94eSBiZWZvcmUgcHJvY2VlZGluZy4nKSwKLSAgICAgICAgNDA4OiAoJ1JlcXVlc3QgVGltZW91dCcsICdSZXF1ZXN0IHRpbWVkIG91dDsgdHJ5IGFnYWluIGxhdGVyLicpLAotICAgICAgICA0MDk6ICgnQ29uZmxpY3QnLCAnUmVxdWVzdCBjb25mbGljdC4nKSwKLSAgICAgICAgNDEwOiAoJ0dvbmUnLAotICAgICAgICAgICAgICAnVVJJIG5vIGxvbmdlciBleGlzdHMgYW5kIGhhcyBiZWVuIHBlcm1hbmVudGx5IHJlbW92ZWQuJyksCi0gICAgICAgIDQxMTogKCdMZW5ndGggUmVxdWlyZWQnLCAnQ2xpZW50IG11c3Qgc3BlY2lmeSBDb250ZW50LUxlbmd0aC4nKSwKLSAgICAgICAgNDEyOiAoJ1ByZWNvbmRpdGlvbiBGYWlsZWQnLCAnUHJlY29uZGl0aW9uIGluIGhlYWRlcnMgaXMgZmFsc2UuJyksCi0gICAgICAgIDQxMzogKCdSZXF1ZXN0IEVudGl0eSBUb28gTGFyZ2UnLCAnRW50aXR5IGlzIHRvbyBsYXJnZS4nKSwKLSAgICAgICAgNDE0OiAoJ1JlcXVlc3QtVVJJIFRvbyBMb25nJywgJ1VSSSBpcyB0b28gbG9uZy4nKSwKLSAgICAgICAgNDE1OiAoJ1Vuc3VwcG9ydGVkIE1lZGlhIFR5cGUnLCAnRW50aXR5IGJvZHkgaW4gdW5zdXBwb3J0ZWQgZm9ybWF0LicpLAotICAgICAgICA0MTY6ICgnUmVxdWVzdGVkIFJhbmdlIE5vdCBTYXRpc2ZpYWJsZScsCi0gICAgICAgICAgICAgICdDYW5ub3Qgc2F0aXNmeSByZXF1ZXN0IHJhbmdlLicpLAotICAgICAgICA0MTc6ICgnRXhwZWN0YXRpb24gRmFpbGVkJywKLSAgICAgICAgICAgICAgJ0V4cGVjdCBjb25kaXRpb24gY291bGQgbm90IGJlIHNhdGlzZmllZC4nKSwKLSAgICAgICAgNDI4OiAoJ1ByZWNvbmRpdGlvbiBSZXF1aXJlZCcsCi0gICAgICAgICAgICAgICdUaGUgb3JpZ2luIHNlcnZlciByZXF1aXJlcyB0aGUgcmVxdWVzdCB0byBiZSBjb25kaXRpb25hbC4nKSwKLSAgICAgICAgNDI5OiAoJ1RvbyBNYW55IFJlcXVlc3RzJywgJ1RoZSB1c2VyIGhhcyBzZW50IHRvbyBtYW55IHJlcXVlc3RzICcKLSAgICAgICAgICAgICAgJ2luIGEgZ2l2ZW4gYW1vdW50IG9mIHRpbWUgKCJyYXRlIGxpbWl0aW5nIikuJyksCi0gICAgICAgIDQzMTogKCdSZXF1ZXN0IEhlYWRlciBGaWVsZHMgVG9vIExhcmdlJywgJ1RoZSBzZXJ2ZXIgaXMgdW53aWxsaW5nIHRvICcKLSAgICAgICAgICAgICAgJ3Byb2Nlc3MgdGhlIHJlcXVlc3QgYmVjYXVzZSBpdHMgaGVhZGVyIGZpZWxkcyBhcmUgdG9vIGxhcmdlLicpLAotCi0gICAgICAgIDUwMDogKCdJbnRlcm5hbCBTZXJ2ZXIgRXJyb3InLCAnU2VydmVyIGdvdCBpdHNlbGYgaW4gdHJvdWJsZScpLAotICAgICAgICA1MDE6ICgnTm90IEltcGxlbWVudGVkJywKLSAgICAgICAgICAgICAgJ1NlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uJyksCi0gICAgICAgIDUwMjogKCdCYWQgR2F0ZXdheScsICdJbnZhbGlkIHJlc3BvbnNlcyBmcm9tIGFub3RoZXIgc2VydmVyL3Byb3h5LicpLAotICAgICAgICA1MDM6ICgnU2VydmljZSBVbmF2YWlsYWJsZScsCi0gICAgICAgICAgICAgICdUaGUgc2VydmVyIGNhbm5vdCBwcm9jZXNzIHRoZSByZXF1ZXN0IGR1ZSB0byBhIGhpZ2ggbG9hZCcpLAotICAgICAgICA1MDQ6ICgnR2F0ZXdheSBUaW1lb3V0JywKLSAgICAgICAgICAgICAgJ1RoZSBnYXRld2F5IHNlcnZlciBkaWQgbm90IHJlY2VpdmUgYSB0aW1lbHkgcmVzcG9uc2UnKSwKLSAgICAgICAgNTA1OiAoJ0hUVFAgVmVyc2lvbiBOb3QgU3VwcG9ydGVkJywgJ0Nhbm5vdCBmdWxmaWxsIHJlcXVlc3QuJyksCi0gICAgICAgIDUxMTogKCdOZXR3b3JrIEF1dGhlbnRpY2F0aW9uIFJlcXVpcmVkJywKLSAgICAgICAgICAgICAgJ1RoZSBjbGllbnQgbmVlZHMgdG8gYXV0aGVudGljYXRlIHRvIGdhaW4gbmV0d29yayBhY2Nlc3MuJyksCi0gICAgICAgIH0KKyAgICAgICAgdjogKHYucGhyYXNlLCB2LmRlc2NyaXB0aW9uKQorICAgICAgICBmb3IgdiBpbiBIVFRQU3RhdHVzLl9fbWVtYmVyc19fLnZhbHVlcygpCisgICAgfQogCiAKIGNsYXNzIFNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlcihCYXNlSFRUUFJlcXVlc3RIYW5kbGVyKToKQEAgLTcwNyw3ICs2NTUsNyBAQAogICAgICAgICAgICAgcGFydHMgPSB1cmxsaWIucGFyc2UudXJsc3BsaXQoc2VsZi5wYXRoKQogICAgICAgICAgICAgaWYgbm90IHBhcnRzLnBhdGguZW5kc3dpdGgoJy8nKToKICAgICAgICAgICAgICAgICAjIHJlZGlyZWN0IGJyb3dzZXIgLSBkb2luZyBiYXNpY2FsbHkgd2hhdCBhcGFjaGUgZG9lcwotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSgzMDEpCisgICAgICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKEhUVFBTdGF0dXMuTU9WRURfUEVSTUFORU5UTFkpCiAgICAgICAgICAgICAgICAgbmV3X3BhcnRzID0gKHBhcnRzWzBdLCBwYXJ0c1sxXSwgcGFydHNbMl0gKyAnLycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzWzNdLCBwYXJ0c1s0XSkKICAgICAgICAgICAgICAgICBuZXdfdXJsID0gdXJsbGliLnBhcnNlLnVybHVuc3BsaXQobmV3X3BhcnRzKQpAQCAtNzI1LDEwICs2NzMsMTAgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZiA9IG9wZW4ocGF0aCwgJ3JiJykKICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDA0LCAiRmlsZSBub3QgZm91bmQiKQorICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKEhUVFBTdGF0dXMuTk9UX0ZPVU5ELCAiRmlsZSBub3QgZm91bmQiKQogICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDIwMCkKKyAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZShIVFRQU3RhdHVzLk9LKQogICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiQ29udGVudC10eXBlIiwgY3R5cGUpCiAgICAgICAgICAgICBmcyA9IG9zLmZzdGF0KGYuZmlsZW5vKCkpCiAgICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LUxlbmd0aCIsIHN0cihmc1s2XSkpCkBAIC03NTAsNyArNjk4LDkgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbGlzdCA9IG9zLmxpc3RkaXIocGF0aCkKICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDA0LCAiTm8gcGVybWlzc2lvbiB0byBsaXN0IGRpcmVjdG9yeSIpCisgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCisgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5OT1RfRk9VTkQsCisgICAgICAgICAgICAgICAgIk5vIHBlcm1pc3Npb24gdG8gbGlzdCBkaXJlY3RvcnkiKQogICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgbGlzdC5zb3J0KGtleT1sYW1iZGEgYTogYS5sb3dlcigpKQogICAgICAgICByID0gW10KQEAgLTc4OSw3ICs3MzksNyBAQAogICAgICAgICBmID0gaW8uQnl0ZXNJTygpCiAgICAgICAgIGYud3JpdGUoZW5jb2RlZCkKICAgICAgICAgZi5zZWVrKDApCi0gICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSgyMDApCisgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZShIVFRQU3RhdHVzLk9LKQogICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LXR5cGUiLCAidGV4dC9odG1sOyBjaGFyc2V0PSVzIiAlIGVuYykKICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiQ29udGVudC1MZW5ndGgiLCBzdHIobGVuKGVuY29kZWQpKSkKICAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCkBAIC05NzYsNyArOTI2LDkgQEAKICAgICAgICAgaWYgc2VsZi5pc19jZ2koKToKICAgICAgICAgICAgIHNlbGYucnVuX2NnaSgpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNTAxLCAiQ2FuIG9ubHkgUE9TVCB0byBDR0kgc2NyaXB0cyIpCisgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCisgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQsCisgICAgICAgICAgICAgICAgIkNhbiBvbmx5IFBPU1QgdG8gQ0dJIHNjcmlwdHMiKQogCiAgICAgZGVmIHNlbmRfaGVhZChzZWxmKToKICAgICAgICAgIiIiVmVyc2lvbiBvZiBzZW5kX2hlYWQgdGhhdCBzdXBwb3J0IENHSSBzY3JpcHRzIiIiCkBAIC0xMDUwLDE3ICsxMDAyLDIxIEBACiAgICAgICAgIHNjcmlwdG5hbWUgPSBkaXIgKyAnLycgKyBzY3JpcHQKICAgICAgICAgc2NyaXB0ZmlsZSA9IHNlbGYudHJhbnNsYXRlX3BhdGgoc2NyaXB0bmFtZSkKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNjcmlwdGZpbGUpOgotICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQwNCwgIk5vIHN1Y2ggQ0dJIHNjcmlwdCAoJXIpIiAlIHNjcmlwdG5hbWUpCisgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCisgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5OT1RfRk9VTkQsCisgICAgICAgICAgICAgICAgIk5vIHN1Y2ggQ0dJIHNjcmlwdCAoJXIpIiAlIHNjcmlwdG5hbWUpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHNjcmlwdGZpbGUpOgotICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQwMywgIkNHSSBzY3JpcHQgaXMgbm90IGEgcGxhaW4gZmlsZSAoJXIpIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0bmFtZSkKKyAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKKyAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkZPUkJJRERFTiwKKyAgICAgICAgICAgICAgICAiQ0dJIHNjcmlwdCBpcyBub3QgYSBwbGFpbiBmaWxlICglcikiICUgc2NyaXB0bmFtZSkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpc3B5ID0gc2VsZi5pc19weXRob24oc2NyaXB0bmFtZSkKICAgICAgICAgaWYgc2VsZi5oYXZlX2Zvcmsgb3Igbm90IGlzcHk6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5pc19leGVjdXRhYmxlKHNjcmlwdGZpbGUpOgotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MDMsICJDR0kgc2NyaXB0IGlzIG5vdCBleGVjdXRhYmxlICglcikiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0bmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuRk9SQklEREVOLAorICAgICAgICAgICAgICAgICAgICAiQ0dJIHNjcmlwdCBpcyBub3QgZXhlY3V0YWJsZSAoJXIpIiAlIHNjcmlwdG5hbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgIyBSZWZlcmVuY2U6IGh0dHA6Ly9ob29ob28ubmNzYS51aXVjLmVkdS9jZ2kvZW52Lmh0bWwKQEAgLTExMjgsNyArMTA4NCw3IEBACiAgICAgICAgICAgICAgICAgICAnSFRUUF9VU0VSX0FHRU5UJywgJ0hUVFBfQ09PS0lFJywgJ0hUVFBfUkVGRVJFUicpOgogICAgICAgICAgICAgZW52LnNldGRlZmF1bHQoaywgIiIpCiAKLSAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDIwMCwgIlNjcmlwdCBvdXRwdXQgZm9sbG93cyIpCisgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZShIVFRQU3RhdHVzLk9LLCAiU2NyaXB0IG91dHB1dCBmb2xsb3dzIikKICAgICAgICAgc2VsZi5mbHVzaF9oZWFkZXJzKCkKIAogICAgICAgICBkZWNvZGVkX3F1ZXJ5ID0gcXVlcnkucmVwbGFjZSgnKycsICcgJykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0NoYW5nZUxvZyBiL0xpYi9pZGxlbGliL0NoYW5nZUxvZwppbmRleCA5ODU4NzFiLi45MGUwMmY2IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9DaGFuZ2VMb2cKKysrIGIvTGliL2lkbGVsaWIvQ2hhbmdlTG9nCkBAIC0yMCw3ICsyMCw3IEBACiAyMDAxLTA3LTE5IDE0OjQ5ICBlbGd1YXZhcwogCiAJKiBDaGFuZ2VMb2csIEVkaXRvcldpbmRvdy5weSwgSU5TVEFMTEFUSU9OLCBORVdTLnR4dCwgUkVBRE1FLnR4dCwKLQlUT0RPLnR4dCwgaWRsZXZlci5weTogCisJVE9ETy50eHQsIGlkbGV2ZXIucHk6CiAJbWlub3IgdGlkeS11cHMgcmVhZHkgZm9yIDAuOC4xIGFscGhhIHRhcmJhbGwgcmVsZWFzZQogCiAyMDAxLTA3LTE3IDE1OjEyICBrYmsKQEAgLTE3Miw3ICsxNzIsNyBAQAogCWFsbCB0aGlzIHdvcmsgdy8gYSBmdXR1cmUtc3RtdCBqdXN0IGxvb2tzIGhhcmRlciBhbmQgaGFyZGVyLiIKIAktLXRpbV9vbmUKIAkKLQkoRnJvbSBSZWwgMS44OiAiSGFjayB0byBtYWtlIHRoaXMgc3RpbGwgd29yayB3aXRoIFB5dGhvbiAxLjUuMi4gCisJKEZyb20gUmVsIDEuODogIkhhY2sgdG8gbWFrZSB0aGlzIHN0aWxsIHdvcmsgd2l0aCBQeXRob24gMS41LjIuCiAJOy0oICIgLS1mZHJha2UpCiAKIDIwMDEtMDctMTQgMTQ6NTEgIGtiawpAQCAtMTkzLDcgKzE5Myw3IEBACiAJdGVzdCgpIHRvIF90ZXN0KCkuIiAgLS1HdlIKIAkKIAlUaGlzIHdhcyBhbiBpbnRlcmVzdGluZyBtZXJnZS4gVGhlIGpvaW4gY29tcGxldGVseSBtaXNzZWQgcmVtb3ZpbmcKLQlnb29kbmFtZSgpLCB3aGljaCB3YXMgYWRqYWNlbnQsIGJ1dCBvdXRzaWRlIG9mLCBhIHNtYWxsIGNvbmZsaWN0LiAKKwlnb29kbmFtZSgpLCB3aGljaCB3YXMgYWRqYWNlbnQsIGJ1dCBvdXRzaWRlIG9mLCBhIHNtYWxsIGNvbmZsaWN0LgogCUkgb25seSBjYXVnaHQgaXQgYnkgY29tcGFyaW5nIHRoZSAxLjEuMy4yLzEuMS4zLjMgZGlmZi4gIENWUyBhaW4ndAogCWluZmFsbGlibGUuCiAKQEAgLTUxNiwxMiArNTE2LDEyIEBACiAKIDIwMDAtMDgtMTUgMjI6NTEgIG5vd29uZGVyCiAKLQkqIElETEVGT1JLLmh0bWw6IAorCSogSURMRUZPUksuaHRtbDoKIAljb3JyZWN0ZWQgZW1haWwgYWRkcmVzcwogCiAyMDAwLTA4LTE1IDIyOjQ3ICBub3dvbmRlcgogCi0JKiBJRExFRk9SSy5odG1sOiAKKwkqIElETEVGT1JLLmh0bWw6CiAJYWRkZWQgLmh0bWwgZmlsZSBmb3IgaHR0cDovL2lkbGVmb3JrLnNvdXJjZWZvcmdlLm5ldAogCiAyMDAwLTA4LTE1IDExOjEzICBkc2NoZXJlcgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQ29kZUNvbnRleHQucHkgYi9MaWIvaWRsZWxpYi9Db2RlQ29udGV4dC5weQppbmRleCA0NDc4M2I2Li43ZDI1YWRhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9Db2RlQ29udGV4dC5weQorKysgYi9MaWIvaWRsZWxpYi9Db2RlQ29udGV4dC5weQpAQCAtNTcsMTggKzU3LDE4IEBACiAgICAgICAgICAgICAjIENhbGN1bGF0ZSB0aGUgYm9yZGVyIHdpZHRoIGFuZCBob3Jpem9udGFsIHBhZGRpbmcgcmVxdWlyZWQgdG8KICAgICAgICAgICAgICMgYWxpZ24gdGhlIGNvbnRleHQgd2l0aCB0aGUgdGV4dCBpbiB0aGUgbWFpbiBUZXh0IHdpZGdldC4KICAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgQWxsIHZhbHVlcyBhcmUgcGFzc2VkIHRocm91Z2ggaW50KHN0cig8dmFsdWU+KSksIHNpbmNlIHNvbWUKKyAgICAgICAgICAgICMgQWxsIHZhbHVlcyBhcmUgcGFzc2VkIHRocm91Z2ggZ2V0aW50KCksIHNpbmNlIHNvbWUKICAgICAgICAgICAgICMgdmFsdWVzIG1heSBiZSBwaXhlbCBvYmplY3RzLCB3aGljaCBjYW4ndCBzaW1wbHkgYmUgYWRkZWQgdG8gaW50cy4KICAgICAgICAgICAgIHdpZGdldHMgPSBzZWxmLmVkaXR3aW4udGV4dCwgc2VsZi5lZGl0d2luLnRleHRfZnJhbWUKICAgICAgICAgICAgICMgQ2FsY3VsYXRlIHRoZSByZXF1aXJlZCB2ZXJ0aWNhbCBwYWRkaW5nCiAgICAgICAgICAgICBwYWR4ID0gMAogICAgICAgICAgICAgZm9yIHdpZGdldCBpbiB3aWRnZXRzOgotICAgICAgICAgICAgICAgIHBhZHggKz0gaW50KHN0ciggd2lkZ2V0LnBhY2tfaW5mbygpWydwYWR4J10gKSkKLSAgICAgICAgICAgICAgICBwYWR4ICs9IGludChzdHIoIHdpZGdldC5jZ2V0KCdwYWR4JykgKSkKKyAgICAgICAgICAgICAgICBwYWR4ICs9IHdpZGdldC50ay5nZXRpbnQod2lkZ2V0LnBhY2tfaW5mbygpWydwYWR4J10pCisgICAgICAgICAgICAgICAgcGFkeCArPSB3aWRnZXQudGsuZ2V0aW50KHdpZGdldC5jZ2V0KCdwYWR4JykpCiAgICAgICAgICAgICAjIENhbGN1bGF0ZSB0aGUgcmVxdWlyZWQgYm9yZGVyIHdpZHRoCiAgICAgICAgICAgICBib3JkZXIgPSAwCiAgICAgICAgICAgICBmb3Igd2lkZ2V0IGluIHdpZGdldHM6Ci0gICAgICAgICAgICAgICAgYm9yZGVyICs9IGludChzdHIoIHdpZGdldC5jZ2V0KCdib3JkZXInKSApKQorICAgICAgICAgICAgICAgIGJvcmRlciArPSB3aWRnZXQudGsuZ2V0aW50KHdpZGdldC5jZ2V0KCdib3JkZXInKSkKICAgICAgICAgICAgIHNlbGYubGFiZWwgPSB0a2ludGVyLkxhYmVsKHNlbGYuZWRpdHdpbi50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PSJcbiIgKiAoc2VsZi5jb250ZXh0X2RlcHRoIC0gMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3I9VywganVzdGlmeT1MRUZULApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvSElTVE9SWS50eHQgYi9MaWIvaWRsZWxpYi9ISVNUT1JZLnR4dAppbmRleCAwMWQ3M2VkLi43MzFmYWJkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ISVNUT1JZLnR4dAorKysgYi9MaWIvaWRsZWxpYi9ISVNUT1JZLnR4dApAQCAtMTEsNyArMTEsNyBAQAogKlJlbGVhc2UgZGF0ZTogMjItSnVsLTIwMDEqCiAKIC0gTmV3IHRhcmJhbGwgcmVsZWFzZWQgYXMgYSByZXN1bHQgb2YgdGhlICdyZXZpdGFsaXNhdGlvbicgb2YgdGhlIElETEVmb3JrCi0gIHByb2plY3QuIAorICBwcm9qZWN0LgogCiAtIFRoaXMgcmVsZWFzZSByZXF1aXJlcyBweXRob24gMi4xIG9yIGJldHRlci4gQ29tcGF0aWJpbGl0eSB3aXRoIGVhcmxpZXIKICAgdmVyc2lvbnMgb2YgcHl0aG9uIChlc3BlY2lhbGx5IGFuY2llbnQgb25lcyBsaWtlIDEuNXgpIGlzIG5vIGxvbmdlciBhCkBAIC0yNiw4ICsyNiw4IEBACiAgIG5vdCB3b3JraW5nLCBidXQgSSBiZWxpZXZlIHRoaXMgd2FzIHRoZSBjYXNlIHdpdGggdGhlIHByZXZpb3VzIElETEUgZm9yawogICByZWxlYXNlICgwLjcuMSkgYXMgd2VsbC4KIAotLSBUaGlzIHJlbGVhc2UgaXMgYmVpbmcgbWFkZSBub3cgdG8gbWFyayB0aGUgcG9pbnQgYXQgd2hpY2ggSURMRWZvcmsgaXMgCi0gIGxhdW5jaGluZyBpbnRvIGEgbmV3IHN0YWdlIG9mIGRldmVsb3BtZW50LiAKKy0gVGhpcyByZWxlYXNlIGlzIGJlaW5nIG1hZGUgbm93IHRvIG1hcmsgdGhlIHBvaW50IGF0IHdoaWNoIElETEVmb3JrIGlzCisgIGxhdW5jaGluZyBpbnRvIGEgbmV3IHN0YWdlIG9mIGRldmVsb3BtZW50LgogCiAtIElETEVmb3JrIENWUyB3aWxsIG5vdyBiZSBicmFuY2hlZCB0byBlbmFibGUgZnVydGhlciBkZXZlbG9wbWVudCBhbmQKICAgZXhwbG9yYXRpb24gb2YgdGhlIHR3byAiZXhlY3V0aW9uIGluIGEgcmVtb3RlIHByb2Nlc3MiIHBhdGNoZXMgc3VibWl0dGVkIGJ5CkBAIC05Niw3ICs5Niw3IEBACiAgICAgaW5zdGVhZCBvZiB0aGUgSURMRSBoZWxwOyBzaGlmdC1UQUIgaXMgbm93IGEgc3lub255bSBmb3IgdW5pbmRlbnQuCiAKIC0gTmV3IG1vZHVsZXM6Ci0gIAorCiAgIEV4ZWNCaW5kaW5nLnB5ICAgICAgICAgRXhlY3V0ZXMgcHJvZ3JhbSB0aHJvdWdoIGxvYWRlcgogICBsb2FkZXIucHkgICAgICAgICAgICAgIEJvb3RzdHJhcHMgdXNlciBwcm9ncmFtCiAgIHByb3RvY29sLnB5ICAgICAgICAgICAgUlBDIHByb3RvY29sCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9ORVdTLnR4dCBiL0xpYi9pZGxlbGliL05FV1MudHh0CmluZGV4IDhiOGUxMGIuLjBlYjkzOWIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL05FV1MudHh0CisrKyBiL0xpYi9pZGxlbGliL05FV1MudHh0CkBAIC0xLDYgKzEsNiBAQAotV2hhdCdzIE5ldyBpbiBJZGxlIDMuNC40PworV2hhdCdzIE5ldyBpbiBJRExFIDMuNS4xPwogPT09PT09PT09PT09PT09PT09PT09PT09PQotKlJlbGVhc2UgZGF0ZTogMjAxNS0xMi0yMCoKKypSZWxlYXNlIGRhdGU6IDIwMTUtMTItMDYqCiAKIC0gSXNzdWUgMTUzNDg6IFN0b3AgdGhlIGRlYnVnZ2VyIGVuZ2luZSAobm9ybWFsbHkgaW4gYSB1c2VyIHByb2Nlc3MpCiAgIGJlZm9yZSBjbG9zaW5nIHRoZSBkZWJ1Z2dlciB3aW5kb3cgKHJ1bm5pbmcgaW4gdGhlIElETEUgcHJvY2VzcykuCkBAIC05Niw2ICs5NiwxMSBAQAogCiAtIElzc3VlICMyNDc5MDogUmVtb3ZlIGV4dHJhbmVvdXMgY29kZSAod2hpY2ggYWxzbyBjcmVhdGUgMiAmIDMgY29uZmxpY3RzKS4KIAorCitXaGF0J3MgTmV3IGluIElETEUgMy41LjA/Cis9PT09PT09PT09PT09PT09PT09PT09PT09CisqUmVsZWFzZSBkYXRlOiAyMDE1LTA5LTEzKgorCiAtIElzc3VlICMyMzY3MjogQWxsb3cgSWRsZSB0byBlZGl0IGFuZCBydW4gZmlsZXMgd2l0aCBhc3RyYWwgY2hhcnMgaW4gbmFtZS4KICAgUGF0Y2ggYnkgTW9oZCBTYW5hZCBaYWtpIFJpenZpLgogCkBAIC0xMTIsMTEgKzExNyw2IEBACiAtIElzc3VlICMyMzE4NDogcmVtb3ZlIHVudXNlZCBuYW1lcyBhbmQgaW1wb3J0cyBpbiBpZGxlbGliLgogICBJbml0aWFsIHBhdGNoIGJ5IEFsIFN3ZWlnYXJ0LgogCi0KLVdoYXQncyBOZXcgaW4gSWRsZSAzLjQuMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDIwMTUtMDItMjUqCi0KIC0gSXNzdWUgIzIwNTc3OiBDb25maWd1cmF0aW9uIG9mIHRoZSBtYXggbGluZSBsZW5ndGggZm9yIHRoZSBGb3JtYXRQYXJhZ3JhcGgKICAgZXh0ZW5zaW9uIGhhcyBiZWVuIG1vdmVkIGZyb20gdGhlIEdlbmVyYWwgdGFiIG9mIHRoZSBJZGxlIHByZWZlcmVuY2VzIGRpYWxvZwogICB0byB0aGUgRm9ybWF0UGFyYWdyYXBoIHRhYiBvZiB0aGUgQ29uZmlnIEV4dGVuc2lvbnMgZGlhbG9nLgpAQCAtMTQ1LDExICsxNDUsNiBAQAogLSBJc3N1ZSAjMjMxODA6IFJlbmFtZSBJRExFICJXaW5kb3dzIiBtZW51IGl0ZW0gdG8gIldpbmRvdyIuCiAgIFBhdGNoIGJ5IEFsIFN3ZWlnYXJ0LgogCi0KLVdoYXQncyBOZXcgaW4gSURMRSAzLjQuMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDIwMTQtMTAtMDYqCi0KIC0gSXNzdWUgIzE3MzkwOiBBZGp1c3QgRWRpdG9yIHdpbmRvdyB0aXRsZTsgcmVtb3ZlICdQeXRob24nLAogICBtb3ZlIHZlcnNpb24gdG8gZW5kLgogCkBAIC0xODQsMTQgKzE3OSw4IEBACiAKIC0gSXNzdWUgIzE4NDA5OiBBZGQgdW5pdHRlc3QgZm9yIEF1dG9Db21wbGV0ZS4gUGF0Y2ggYnkgUGhpbCBXZWJzdGVyLgogCi0tIElzc3VlICMxODEwNDogQWRkIGlkbGVsaWIvaWRsZV90ZXN0L2h0ZXN0LnB5IHdpdGggYSBmZXcgc2FtcGxlIHRlc3RzIHRvIGJlZ2luCi0gIGNvbnNvbGlkYXRpbmcgYW5kIGltcHJvdmluZyBodW1hbi12YWxpZGF0ZWQgdGVzdHMgb2YgSWRsZS4gQ2hhbmdlIG90aGVyIGZpbGVzCi0gIGFzIG5lZWRlZCB0byB3b3JrIHdpdGggaHRlc3QuICBSdW5uaW5nIHRoZSBtb2R1bGUgYXMgX19tYWluX18gcnVucyBhbGwgdGVzdHMuCi0KLQotV2hhdCdzIE5ldyBpbiBJRExFIDMuNC4xPwotPT09PT09PT09PT09PT09PT09PT09PT09PQotKlJlbGVhc2UgZGF0ZTogMjAxNC0wNS0xOCoKKy0gSXNzdWUgIzIxNDc3OiBodGVzdC5weSAtIEltcHJvdmUgZnJhbWV3b3JrLCBjb21wbGV0ZSBzZXQgb2YgdGVzdHMuCisgIFBhdGNoZXMgYnkgU2FpbWFkaGF2IEhlYmxpa2FyCiAKIC0gSXNzdWUgIzE4MTA0OiBBZGQgaWRsZWxpYi9pZGxlX3Rlc3QvaHRlc3QucHkgd2l0aCBhIGZldyBzYW1wbGUgdGVzdHMgdG8gYmVnaW4KICAgY29uc29saWRhdGluZyBhbmQgaW1wcm92aW5nIGh1bWFuLXZhbGlkYXRlZCB0ZXN0cyBvZiBJZGxlLiBDaGFuZ2Ugb3RoZXIgZmlsZXMKQEAgLTI5MCwxMSArMjc5LDYgQEAKIC0gVXNlIG9mICdmaWx0ZXInIGluIGtleWJpbmRpbmdEaWFsb2cucHkgd2FzIGNhdXNpbmcgY3VzdG9tIGtleSBhc3NpZ25tZW50IHRvCiAgIGZhaWwuICBQYXRjaCA1NzA3IGFtYXVyeS5mb3JnZW90ZGFyYy4KIAotCi1XaGF0J3MgTmV3IGluIElETEUgMy4xYTE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09Ci0qUmVsZWFzZSBkYXRlOiAwNy1NYXItMDkqCi0KIC0gSXNzdWUgIzQ4MTU6IE9mZmVyIGNvbnZlcnNpb24gdG8gVVRGLTggaWYgc291cmNlIGZpbGVzIGhhdmUKICAgbm8gZW5jb2RpbmcgZGVjbGFyYXRpb24gYW5kIGFyZSBub3QgZW5jb2RlZCBpbiBVVEYtOC4KIApAQCAtMzM0LDExICszMTgsNiBAQAogCiAtIElzc3VlICMzNTQ5OiBPbiBNYWNPUyB0aGUgcHJlZmVyZW5jZXMgbWVudSB3YXMgbm90IHByZXNlbnQKIAotCi1XaGF0J3MgTmV3IGluIElETEUgMy4wIGZpbmFsPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDAzLURlYy0yMDA4KgotCiAtIElETEUgd291bGQgcHJpbnQgYSAiVW5oYW5kbGVkIHNlcnZlciBleGNlcHRpb24hIiBtZXNzYWdlIHdoZW4gaW50ZXJuYWwKICAgZGVidWdnaW5nIGlzIGVuYWJsZWQuCiAKQEAgLTM0OCwxMSArMzI3LDYgQEAKIC0gSXNzdWUgIzQzODM6IFdoZW4gSURMRSBjYW5ub3QgbWFrZSB0aGUgY29ubmVjdGlvbiB0byBpdHMgc3VicHJvY2VzcywgaXQgd291bGQKICAgZmFpbCB0byBwcm9wZXJseSBkaXNwbGF5IHRoZSBlcnJvciBtZXNzYWdlLgogCi0KLVdoYXQncyBOZXcgaW4gSURMRSAzLjBhMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDI5LUZlYi0yMDA4KgotCiAtIGhlbHAoKSB3YXMgbm90IHBhZ2luZyB0byB0aGUgc2hlbGwuICBJc3N1ZTE2NTAuCiAKIC0gQ29kZUNvbnRleHQgd2FzIG5vdCBpbXBvcnRpbmcuCkBAIC0zNjQsMTkgKzMzOCw5IEBACiAKIC0gSXNzdWUgIzE1ODU6IElETEUgdXNlcyBub24tZXhpc3RlbnQgeHJhbmdlKCkgZnVuY3Rpb24uCiAKLQotV2hhdCdzIE5ldyBpbiBJRExFIDMuMGEyPwotPT09PT09PT09PT09PT09PT09PT09PT09PQotKlJlbGVhc2UgZGF0ZTogMDYtRGVjLTIwMDcqCi0KIC0gV2luZG93cyBFT0wgc2VxdWVuY2Ugbm90IGNvbnZlcnRlZCBjb3JyZWN0bHksIGVuY29kaW5nIGVycm9yLgogICBDYXVzZWQgZmlsZSBzYXZlIHRvIGZhaWwuIEJ1ZyAxMTMwLgogCi0KLVdoYXQncyBOZXcgaW4gSURMRSAzLjBhMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDMxLUF1Zy0yMDA3KgotCiAtIElETEUgY29udmVydGVkIHRvIFB5dGhvbiAzMDAwIHN5bnRheC4KIAogLSBTdHJpbmdzIGJlY2FtZSBVbmljb2RlLgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvV2lkZ2V0UmVkaXJlY3Rvci5weSBiL0xpYi9pZGxlbGliL1dpZGdldFJlZGlyZWN0b3IucHkKaW5kZXggYjNkN2JmYS4uNjdkN2Y2MSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvV2lkZ2V0UmVkaXJlY3Rvci5weQorKysgYi9MaWIvaWRsZWxpYi9XaWRnZXRSZWRpcmVjdG9yLnB5CkBAIC00Nyw4ICs0Nyw5IEBACiAgICAgICAgIHRrLmNyZWF0ZWNvbW1hbmQodywgc2VsZi5kaXNwYXRjaCkKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJXaWRnZXRSZWRpcmVjdG9yKCVzPCVzPikiICUgKHNlbGYud2lkZ2V0Ll9fY2xhc3NfXy5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud2lkZ2V0Ll93KQorICAgICAgICByZXR1cm4gIiVzKCVzPCVzPikiICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud2lkZ2V0Ll9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndpZGdldC5fdykKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgIlVucmVnaXN0ZXIgb3BlcmF0aW9ucyBhbmQgcmV2ZXJ0IHJlZGlyZWN0aW9uIGNyZWF0ZWQgYnkgLl9faW5pdF9fLiIKQEAgLTE0Miw3ICsxNDMsOCBAQAogICAgICAgICBzZWxmLm9yaWdfYW5kX29wZXJhdGlvbiA9IChyZWRpci5vcmlnLCBvcGVyYXRpb24pCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiT3JpZ2luYWxDb21tYW5kKCVyLCAlcikiICUgKHNlbGYucmVkaXIsIHNlbGYub3BlcmF0aW9uKQorICAgICAgICByZXR1cm4gIiVzKCVyLCAlcikiICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVkaXIsIHNlbGYub3BlcmF0aW9uKQogCiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzKToKICAgICAgICAgcmV0dXJuIHNlbGYudGtfY2FsbChzZWxmLm9yaWdfYW5kX29wZXJhdGlvbiArIGFyZ3MpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hlbmdpbmUucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hlbmdpbmUucHkKaW5kZXggYzc3OTJmYi4uZWRiZDU1OCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZW5naW5lLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGVuZ2luZS5weQpAQCAtMTc4LDcgKzE3OCw3IEBACiAgICAgICAgIGVuZ2luZS5yZXZhci5zZXQoMSkKICAgICAgICAgRXF1YWwoZW5naW5lLmdldHByb2coKSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNYm94LnNob3dlcnJvci5tZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnRXJyb3I6IG5vdGhpbmcgdG8gcmVwZWF0XG5QYXR0ZXJuOiArJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAnRXJyb3I6IG5vdGhpbmcgdG8gcmVwZWF0IGF0IHBvc2l0aW9uIDBcblBhdHRlcm46ICsnKQogCiAgICAgZGVmIHRlc3RfcmVwb3J0X2Vycm9yKHNlbGYpOgogICAgICAgICBzaG93ZXJyb3IgPSBNYm94LnNob3dlcnJvcgpkaWZmIC0tZ2l0IGEvTGliL2ltYXBsaWIucHkgYi9MaWIvaW1hcGxpYi5weQppbmRleCBlYjA1ZGNiLi40ZThhNGJiIDEwMDY0NAotLS0gYS9MaWIvaW1hcGxpYi5weQorKysgYi9MaWIvaW1hcGxpYi5weQpAQCAtNjYsNiArNjYsNyBAQAogICAgICAgICAnQ1JFQVRFJzogICAgICAgKCdBVVRIJywgJ1NFTEVDVEVEJyksCiAgICAgICAgICdERUxFVEUnOiAgICAgICAoJ0FVVEgnLCAnU0VMRUNURUQnKSwKICAgICAgICAgJ0RFTEVURUFDTCc6ICAgICgnQVVUSCcsICdTRUxFQ1RFRCcpLAorICAgICAgICAnRU5BQkxFJzogICAgICAgKCdBVVRIJywgKSwKICAgICAgICAgJ0VYQU1JTkUnOiAgICAgICgnQVVUSCcsICdTRUxFQ1RFRCcpLAogICAgICAgICAnRVhQVU5HRSc6ICAgICAgKCdTRUxFQ1RFRCcsKSwKICAgICAgICAgJ0ZFVENIJzogICAgICAgICgnU0VMRUNURUQnLCksCkBAIC0xMDcsMTIgKzEwOCwxNyBAQAogICAgICAgICBicicgKD9QPGhvdXI+WzAtOV1bMC05XSk6KD9QPG1pbj5bMC05XVswLTldKTooP1A8c2VjPlswLTldWzAtOV0pJwogICAgICAgICBicicgKD9QPHpvbmVuPlstK10pKD9QPHpvbmVoPlswLTldWzAtOV0pKD9QPHpvbmVtPlswLTldWzAtOV0pJwogICAgICAgICBiciciJykKKyMgTGl0ZXJhbCBpcyBubyBsb25nZXIgdXNlZDsga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KIExpdGVyYWwgPSByZS5jb21waWxlKGJyJy4qeyg/UDxzaXplPlxkKyl9JCcsIHJlLkFTQ0lJKQogTWFwQ1JMRiA9IHJlLmNvbXBpbGUoYnInXHJcbnxccnxcbicpCiBSZXNwb25zZV9jb2RlID0gcmUuY29tcGlsZShicidcWyg/UDx0eXBlPltBLVotXSspKCAoP1A8ZGF0YT5bXlxdXSopKT9cXScpCiBVbnRhZ2dlZF9yZXNwb25zZSA9IHJlLmNvbXBpbGUoYnInXCogKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhPi4qKSk/JykKKyMgVW50YWdnZWRfc3RhdHVzIGlzIG5vIGxvbmdlciB1c2VkOyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CiBVbnRhZ2dlZF9zdGF0dXMgPSByZS5jb21waWxlKAogICAgIGJyJ1wqICg/UDxkYXRhPlxkKykgKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhMj4uKikpPycsIHJlLkFTQ0lJKQorIyBXZSBjb21waWxlIHRoZXNlIGluIF9tb2RlX3h4eC4KK19MaXRlcmFsID0gYnInLip7KD9QPHNpemU+XGQrKX0kJworX1VudGFnZ2VkX3N0YXR1cyA9IGJyJ1wqICg/UDxkYXRhPlxkKykgKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhMj4uKikpPycKIAogCiAKQEAgLTE2Niw3ICsxNzIsNyBAQAogICAgIGNsYXNzIGFib3J0KGVycm9yKTogcGFzcyAgICAgICAgIyBTZXJ2aWNlIGVycm9ycyAtIGNsb3NlIGFuZCByZXRyeQogICAgIGNsYXNzIHJlYWRvbmx5KGFib3J0KTogcGFzcyAgICAgIyBNYWlsYm94IHN0YXR1cyBjaGFuZ2VkIHRvIFJFQUQtT05MWQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QgPSAnJywgcG9ydCA9IElNQVA0X1BPUlQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCBwb3J0PUlNQVA0X1BPUlQpOgogICAgICAgICBzZWxmLmRlYnVnID0gRGVidWcKICAgICAgICAgc2VsZi5zdGF0ZSA9ICdMT0dPVVQnCiAgICAgICAgIHNlbGYubGl0ZXJhbCA9IE5vbmUgICAgICAgICAgICAgIyBBIGxpdGVyYWwgYXJndW1lbnQgdG8gYSBjb21tYW5kCkBAIC0xNzYsNiArMTgyLDcgQEAKICAgICAgICAgc2VsZi5pc19yZWFkb25seSA9IEZhbHNlICAgICAgICAjIFJFQUQtT05MWSBkZXNpcmVkIHN0YXRlCiAgICAgICAgIHNlbGYudGFnbnVtID0gMAogICAgICAgICBzZWxmLl90bHNfZXN0YWJsaXNoZWQgPSBGYWxzZQorICAgICAgICBzZWxmLl9tb2RlX2FzY2lpKCkKIAogICAgICAgICAjIE9wZW4gc29ja2V0IHRvIHNlcnZlci4KIApAQCAtMTkwLDYgKzE5NywxOSBAQAogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHJhaXNlCiAKKyAgICBkZWYgX21vZGVfYXNjaWkoc2VsZik6CisgICAgICAgIHNlbGYudXRmOF9lbmFibGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5fZW5jb2RpbmcgPSAnYXNjaWknCisgICAgICAgIHNlbGYuTGl0ZXJhbCA9IHJlLmNvbXBpbGUoX0xpdGVyYWwsIHJlLkFTQ0lJKQorICAgICAgICBzZWxmLlVudGFnZ2VkX3N0YXR1cyA9IHJlLmNvbXBpbGUoX1VudGFnZ2VkX3N0YXR1cywgcmUuQVNDSUkpCisKKworICAgIGRlZiBfbW9kZV91dGY4KHNlbGYpOgorICAgICAgICBzZWxmLnV0ZjhfZW5hYmxlZCA9IFRydWUKKyAgICAgICAgc2VsZi5fZW5jb2RpbmcgPSAndXRmLTgnCisgICAgICAgIHNlbGYuTGl0ZXJhbCA9IHJlLmNvbXBpbGUoX0xpdGVyYWwpCisgICAgICAgIHNlbGYuVW50YWdnZWRfc3RhdHVzID0gcmUuY29tcGlsZShfVW50YWdnZWRfc3RhdHVzKQorCiAKICAgICBkZWYgX2Nvbm5lY3Qoc2VsZik6CiAgICAgICAgICMgQ3JlYXRlIHVuaXF1ZSB0YWcgZm9yIHRoaXMgc2Vzc2lvbiwKQEAgLTIzOSw2ICsyNTksMTQgQEAKICAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYsIGF0dHIubG93ZXIoKSkKICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIlVua25vd24gSU1BUDQgY29tbWFuZDogJyVzJyIgJSBhdHRyKQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYubG9nb3V0KCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBwYXNzCiAKIAogICAgICMgICAgICAgT3ZlcnJpZGFibGUgbWV0aG9kcwpAQCAtMzUyLDcgKzM4MCwxMCBAQAogICAgICAgICAgICAgZGF0ZV90aW1lID0gVGltZTJJbnRlcm5hbGRhdGUoZGF0ZV90aW1lKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZGF0ZV90aW1lID0gTm9uZQotICAgICAgICBzZWxmLmxpdGVyYWwgPSBNYXBDUkxGLnN1YihDUkxGLCBtZXNzYWdlKQorICAgICAgICBsaXRlcmFsID0gTWFwQ1JMRi5zdWIoQ1JMRiwgbWVzc2FnZSkKKyAgICAgICAgaWYgc2VsZi51dGY4X2VuYWJsZWQ6CisgICAgICAgICAgICBsaXRlcmFsID0gYidVVEY4ICgnICsgbGl0ZXJhbCArIGInKScKKyAgICAgICAgc2VsZi5saXRlcmFsID0gbGl0ZXJhbAogICAgICAgICByZXR1cm4gc2VsZi5fc2ltcGxlX2NvbW1hbmQobmFtZSwgbWFpbGJveCwgZmxhZ3MsIGRhdGVfdGltZSkKIAogCkBAIC00NDcsNiArNDc4LDE4IEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gc2VsZi5fc2ltcGxlX2NvbW1hbmQoJ0RFTEVURUFDTCcsIG1haWxib3gsIHdobykKIAorICAgIGRlZiBlbmFibGUoc2VsZiwgY2FwYWJpbGl0eSk6CisgICAgICAgICIiIlNlbmQgYW4gUkZDNTE2MSBlbmFibGUgc3RyaW5nIHRvIHRoZSBzZXJ2ZXIuCisKKyAgICAgICAgKHR5cCwgW2RhdGFdKSA9IDxpbnRhbmNlPi5lbmFibGUoY2FwYWJpbGl0eSkKKyAgICAgICAgIiIiCisgICAgICAgIGlmICdFTkFCTEUnIG5vdCBpbiBzZWxmLmNhcGFiaWxpdGllczoKKyAgICAgICAgICAgIHJhaXNlIElNQVA0LmVycm9yKCJTZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBFTkFCTEUiKQorICAgICAgICB0eXAsIGRhdGEgPSBzZWxmLl9zaW1wbGVfY29tbWFuZCgnRU5BQkxFJywgY2FwYWJpbGl0eSkKKyAgICAgICAgaWYgdHlwID09ICdPSycgYW5kICdVVEY4PUFDQ0VQVCcgaW4gY2FwYWJpbGl0eS51cHBlcigpOgorICAgICAgICAgICAgc2VsZi5fbW9kZV91dGY4KCkKKyAgICAgICAgcmV0dXJuIHR5cCwgZGF0YQorCiAgICAgZGVmIGV4cHVuZ2Uoc2VsZik6CiAgICAgICAgICIiIlBlcm1hbmVudGx5IHJlbW92ZSBkZWxldGVkIGl0ZW1zIGZyb20gc2VsZWN0ZWQgbWFpbGJveC4KIApAQCAtNTUzLDcgKzU5Niw3IEBACiAgICAgZGVmIF9DUkFNX01ENV9BVVRIKHNlbGYsIGNoYWxsZW5nZSk6CiAgICAgICAgICIiIiBBdXRob2JqZWN0IHRvIHVzZSB3aXRoIENSQU0tTUQ1IGF1dGhlbnRpY2F0aW9uLiAiIiIKICAgICAgICAgaW1wb3J0IGhtYWMKLSAgICAgICAgcHdkID0gKHNlbGYucGFzc3dvcmQuZW5jb2RlKCdBU0NJSScpIGlmIGlzaW5zdGFuY2Uoc2VsZi5wYXNzd29yZCwgc3RyKQorICAgICAgICBwd2QgPSAoc2VsZi5wYXNzd29yZC5lbmNvZGUoJ3V0Zi04JykgaWYgaXNpbnN0YW5jZShzZWxmLnBhc3N3b3JkLCBzdHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNlbGYucGFzc3dvcmQpCiAgICAgICAgIHJldHVybiBzZWxmLnVzZXIgKyAiICIgKyBobWFjLkhNQUMocHdkLCBjaGFsbGVuZ2UsICdtZDUnKS5oZXhkaWdlc3QoKQogCkBAIC02NTMsOSArNjk2LDEyIEBACiAgICAgICAgICh0eXAsIFtkYXRhXSkgPSA8aW5zdGFuY2U+LnNlYXJjaChjaGFyc2V0LCBjcml0ZXJpb24sIC4uLikKIAogICAgICAgICAnZGF0YScgaXMgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgbWF0Y2hpbmcgbWVzc2FnZSBudW1iZXJzLgorICAgICAgICBJZiBVVEY4IGlzIGVuYWJsZWQsIGNoYXJzZXQgTVVTVCBiZSBOb25lLgogICAgICAgICAiIiIKICAgICAgICAgbmFtZSA9ICdTRUFSQ0gnCiAgICAgICAgIGlmIGNoYXJzZXQ6CisgICAgICAgICAgICBpZiBzZWxmLnV0ZjhfZW5hYmxlZDoKKyAgICAgICAgICAgICAgICByYWlzZSBJTUFQNC5lcnJvcigiTm9uLU5vbmUgY2hhcnNldCBub3QgdmFsaWQgaW4gVVRGOCBtb2RlIikKICAgICAgICAgICAgIHR5cCwgZGF0ID0gc2VsZi5fc2ltcGxlX2NvbW1hbmQobmFtZSwgJ0NIQVJTRVQnLCBjaGFyc2V0LCAqY3JpdGVyaWEpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB0eXAsIGRhdCA9IHNlbGYuX3NpbXBsZV9jb21tYW5kKG5hbWUsICpjcml0ZXJpYSkKQEAgLTg2OSw3ICs5MTUsNyBAQAogICAgIGRlZiBfY2hlY2tfYnllKHNlbGYpOgogICAgICAgICBieWUgPSBzZWxmLnVudGFnZ2VkX3Jlc3BvbnNlcy5nZXQoJ0JZRScpCiAgICAgICAgIGlmIGJ5ZToKLSAgICAgICAgICAgIHJhaXNlIHNlbGYuYWJvcnQoYnllWy0xXS5kZWNvZGUoJ2FzY2lpJywgJ3JlcGxhY2UnKSkKKyAgICAgICAgICAgIHJhaXNlIHNlbGYuYWJvcnQoYnllWy0xXS5kZWNvZGUoc2VsZi5fZW5jb2RpbmcsICdyZXBsYWNlJykpCiAKIAogICAgIGRlZiBfY29tbWFuZChzZWxmLCBuYW1lLCAqYXJncyk6CkBAIC04OTAsMTIgKzkzNiwxMiBAQAogICAgICAgICAgICAgcmFpc2Ugc2VsZi5yZWFkb25seSgnbWFpbGJveCBzdGF0dXMgY2hhbmdlZCB0byBSRUFELU9OTFknKQogCiAgICAgICAgIHRhZyA9IHNlbGYuX25ld190YWcoKQotICAgICAgICBuYW1lID0gYnl0ZXMobmFtZSwgJ0FTQ0lJJykKKyAgICAgICAgbmFtZSA9IGJ5dGVzKG5hbWUsIHNlbGYuX2VuY29kaW5nKQogICAgICAgICBkYXRhID0gdGFnICsgYicgJyArIG5hbWUKICAgICAgICAgZm9yIGFyZyBpbiBhcmdzOgogICAgICAgICAgICAgaWYgYXJnIGlzIE5vbmU6IGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGFyZywgc3RyKToKLSAgICAgICAgICAgICAgICBhcmcgPSBieXRlcyhhcmcsICJBU0NJSSIpCisgICAgICAgICAgICAgICAgYXJnID0gYnl0ZXMoYXJnLCBzZWxmLl9lbmNvZGluZykKICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgYicgJyArIGFyZwogCiAgICAgICAgIGxpdGVyYWwgPSBzZWxmLmxpdGVyYWwKQEAgLTkwNSw3ICs5NTEsNyBAQAogICAgICAgICAgICAgICAgIGxpdGVyYXRvciA9IGxpdGVyYWwKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbGl0ZXJhdG9yID0gTm9uZQotICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgYnl0ZXMoJyB7JXN9JyAlIGxlbihsaXRlcmFsKSwgJ0FTQ0lJJykKKyAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSArIGJ5dGVzKCcgeyVzfScgJSBsZW4obGl0ZXJhbCksIHNlbGYuX2VuY29kaW5nKQogCiAgICAgICAgIGlmIF9fZGVidWdfXzoKICAgICAgICAgICAgIGlmIHNlbGYuZGVidWcgPj0gNDoKQEAgLTk3MCw3ICsxMDE2LDcgQEAKICAgICAgICAgdHlwLCBkYXQgPSBzZWxmLmNhcGFiaWxpdHkoKQogICAgICAgICBpZiBkYXQgPT0gW05vbmVdOgogICAgICAgICAgICAgcmFpc2Ugc2VsZi5lcnJvcignbm8gQ0FQQUJJTElUWSByZXNwb25zZSBmcm9tIHNlcnZlcicpCi0gICAgICAgIGRhdCA9IHN0cihkYXRbLTFdLCAiQVNDSUkiKQorICAgICAgICBkYXQgPSBzdHIoZGF0Wy0xXSwgc2VsZi5fZW5jb2RpbmcpCiAgICAgICAgIGRhdCA9IGRhdC51cHBlcigpCiAgICAgICAgIHNlbGYuY2FwYWJpbGl0aWVzID0gdHVwbGUoZGF0LnNwbGl0KCkpCiAKQEAgLTk4OSwxMCArMTAzNSwxMCBAQAogICAgICAgICBpZiBzZWxmLl9tYXRjaChzZWxmLnRhZ3JlLCByZXNwKToKICAgICAgICAgICAgIHRhZyA9IHNlbGYubW8uZ3JvdXAoJ3RhZycpCiAgICAgICAgICAgICBpZiBub3QgdGFnIGluIHNlbGYudGFnZ2VkX2NvbW1hbmRzOgotICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuYWJvcnQoJ3VuZXhwZWN0ZWQgdGFnZ2VkIHJlc3BvbnNlOiAlcycgJSByZXNwKQorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuYWJvcnQoJ3VuZXhwZWN0ZWQgdGFnZ2VkIHJlc3BvbnNlOiAlcicgJSByZXNwKQogCiAgICAgICAgICAgICB0eXAgPSBzZWxmLm1vLmdyb3VwKCd0eXBlJykKLSAgICAgICAgICAgIHR5cCA9IHN0cih0eXAsICdBU0NJSScpCisgICAgICAgICAgICB0eXAgPSBzdHIodHlwLCBzZWxmLl9lbmNvZGluZykKICAgICAgICAgICAgIGRhdCA9IHNlbGYubW8uZ3JvdXAoJ2RhdGEnKQogICAgICAgICAgICAgc2VsZi50YWdnZWRfY29tbWFuZHNbdGFnXSA9ICh0eXAsIFtkYXRdKQogICAgICAgICBlbHNlOgpAQCAtMTAwMSw3ICsxMDQ3LDcgQEAKICAgICAgICAgICAgICMgJyonICh1bnRhZ2dlZCkgcmVzcG9uc2VzPwogCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fbWF0Y2goVW50YWdnZWRfcmVzcG9uc2UsIHJlc3ApOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuX21hdGNoKFVudGFnZ2VkX3N0YXR1cywgcmVzcCk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fbWF0Y2goc2VsZi5VbnRhZ2dlZF9zdGF0dXMsIHJlc3ApOgogICAgICAgICAgICAgICAgICAgICBkYXQyID0gc2VsZi5tby5ncm91cCgnZGF0YTInKQogCiAgICAgICAgICAgICBpZiBzZWxmLm1vIGlzIE5vbmU6CkBAIC0xMDExLDE3ICsxMDU3LDE3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udGludWF0aW9uX3Jlc3BvbnNlID0gc2VsZi5tby5ncm91cCgnZGF0YScpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lICAgICAjIE5COiBpbmRpY2F0ZXMgY29udGludWF0aW9uCiAKLSAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmFib3J0KCJ1bmV4cGVjdGVkIHJlc3BvbnNlOiAnJXMnIiAlIHJlc3ApCisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5hYm9ydCgidW5leHBlY3RlZCByZXNwb25zZTogJXIiICUgcmVzcCkKIAogICAgICAgICAgICAgdHlwID0gc2VsZi5tby5ncm91cCgndHlwZScpCi0gICAgICAgICAgICB0eXAgPSBzdHIodHlwLCAnYXNjaWknKQorICAgICAgICAgICAgdHlwID0gc3RyKHR5cCwgc2VsZi5fZW5jb2RpbmcpCiAgICAgICAgICAgICBkYXQgPSBzZWxmLm1vLmdyb3VwKCdkYXRhJykKICAgICAgICAgICAgIGlmIGRhdCBpcyBOb25lOiBkYXQgPSBiJycgICAgICAgICMgTnVsbCB1bnRhZ2dlZCByZXNwb25zZQogICAgICAgICAgICAgaWYgZGF0MjogZGF0ID0gZGF0ICsgYicgJyArIGRhdDIKIAogICAgICAgICAgICAgIyBJcyB0aGVyZSBhIGxpdGVyYWwgdG8gY29tZT8KIAotICAgICAgICAgICAgd2hpbGUgc2VsZi5fbWF0Y2goTGl0ZXJhbCwgZGF0KToKKyAgICAgICAgICAgIHdoaWxlIHNlbGYuX21hdGNoKHNlbGYuTGl0ZXJhbCwgZGF0KToKIAogICAgICAgICAgICAgICAgICMgUmVhZCBsaXRlcmFsIGRpcmVjdCBmcm9tIGNvbm5lY3Rpb24uCiAKQEAgLTEwNDUsNyArMTA5MSw3IEBACiAKICAgICAgICAgaWYgdHlwIGluICgnT0snLCAnTk8nLCAnQkFEJykgYW5kIHNlbGYuX21hdGNoKFJlc3BvbnNlX2NvZGUsIGRhdCk6CiAgICAgICAgICAgICB0eXAgPSBzZWxmLm1vLmdyb3VwKCd0eXBlJykKLSAgICAgICAgICAgIHR5cCA9IHN0cih0eXAsICJBU0NJSSIpCisgICAgICAgICAgICB0eXAgPSBzdHIodHlwLCBzZWxmLl9lbmNvZGluZykKICAgICAgICAgICAgIHNlbGYuX2FwcGVuZF91bnRhZ2dlZCh0eXAsIHNlbGYubW8uZ3JvdXAoJ2RhdGEnKSkKIAogICAgICAgICBpZiBfX2RlYnVnX186CkBAIC0xMTE1LDcgKzExNjEsNyBAQAogCiAgICAgZGVmIF9uZXdfdGFnKHNlbGYpOgogCi0gICAgICAgIHRhZyA9IHNlbGYudGFncHJlICsgYnl0ZXMoc3RyKHNlbGYudGFnbnVtKSwgJ0FTQ0lJJykKKyAgICAgICAgdGFnID0gc2VsZi50YWdwcmUgKyBieXRlcyhzdHIoc2VsZi50YWdudW0pLCBzZWxmLl9lbmNvZGluZykKICAgICAgICAgc2VsZi50YWdudW0gPSBzZWxmLnRhZ251bSArIDEKICAgICAgICAgc2VsZi50YWdnZWRfY29tbWFuZHNbdGFnXSA9IE5vbmUKICAgICAgICAgcmV0dXJuIHRhZwpAQCAtMTIwNSw3ICsxMjUxLDggQEAKICAgICAgICAgIiIiCiAKIAotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgcG9ydD1JTUFQNF9TU0xfUE9SVCwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLCBzc2xfY29udGV4dD1Ob25lKToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9JycsIHBvcnQ9SU1BUDRfU1NMX1BPUlQsIGtleWZpbGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPU5vbmUsIHNzbF9jb250ZXh0PU5vbmUpOgogICAgICAgICAgICAgaWYgc3NsX2NvbnRleHQgaXMgbm90IE5vbmUgYW5kIGtleWZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic3NsX2NvbnRleHQgYW5kIGtleWZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKQEAgLTEyNDMsNyArMTI5MCw3IEBACiAKICAgICBJbnN0YW50aWF0ZSB3aXRoOiBJTUFQNF9zdHJlYW0oY29tbWFuZCkKIAotICAgICAgICAgICAgd2hlcmUgImNvbW1hbmQiIGlzIGEgc3RyaW5nIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBzdWJwcm9jZXNzLlBvcGVuKCkKKyAgICAgICAgICAgICJjb21tYW5kIiAtIGEgc3RyaW5nIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBzdWJwcm9jZXNzLlBvcGVuKCkKIAogICAgIGZvciBtb3JlIGRvY3VtZW50YXRpb24gc2VlIHRoZSBkb2NzdHJpbmcgb2YgdGhlIHBhcmVudCBjbGFzcyBJTUFQNC4KICAgICAiIiIKQEAgLTEzMjAsNyArMTM2Nyw3IEBACiAgICAgICAgICMKICAgICAgICAgb3VwID0gYicnCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoaW5wLCBzdHIpOgotICAgICAgICAgICAgaW5wID0gaW5wLmVuY29kZSgnQVNDSUknKQorICAgICAgICAgICAgaW5wID0gaW5wLmVuY29kZSgndXRmLTgnKQogICAgICAgICB3aGlsZSBpbnA6CiAgICAgICAgICAgICBpZiBsZW4oaW5wKSA+IDQ4OgogICAgICAgICAgICAgICAgIHQgPSBpbnBbOjQ4XQpkaWZmIC0tZ2l0IGEvTGliL2ltZ2hkci5weSBiL0xpYi9pbWdoZHIucHkKaW5kZXggYWRkMmVhOC4uYjI2NzkyNSAxMDA2NDQKLS0tIGEvTGliL2ltZ2hkci5weQorKysgYi9MaWIvaW1naGRyLnB5CkBAIC0xMTAsNiArMTEwLDE4IEBACiAKIHRlc3RzLmFwcGVuZCh0ZXN0X2JtcCkKIAorZGVmIHRlc3Rfd2VicChoLCBmKToKKyAgICBpZiBoLnN0YXJ0c3dpdGgoYidSSUZGJykgYW5kIGhbODoxMl0gPT0gYidXRUJQJzoKKyAgICAgICAgcmV0dXJuICd3ZWJwJworCit0ZXN0cy5hcHBlbmQodGVzdF93ZWJwKQorCitkZWYgdGVzdF9leHIoaCwgZik6CisgICAgaWYgaC5zdGFydHN3aXRoKGInXHg3Nlx4MmZceDMxXHgwMScpOgorICAgICAgICByZXR1cm4gJ2V4cicKKwordGVzdHMuYXBwZW5kKHRlc3RfZXhyKQorCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0jCiAjIFNtYWxsIHRlc3QgcHJvZ3JhbSAjCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0jCmRpZmYgLS1naXQgYS9MaWIvaW1wLnB5IGIvTGliL2ltcC5weQppbmRleCBjOTIyZTkyLi5mNmZmZjQ0IDEwMDY0NAotLS0gYS9MaWIvaW1wLnB5CisrKyBiL0xpYi9pbXAucHkKQEAgLTgsMTUgKzgsMTYgQEAKICMgKFByb2JhYmx5KSBuZWVkIHRvIHN0YXkgaW4gX2ltcAogZnJvbSBfaW1wIGltcG9ydCAobG9ja19oZWxkLCBhY3F1aXJlX2xvY2ssIHJlbGVhc2VfbG9jaywKICAgICAgICAgICAgICAgICAgIGdldF9mcm96ZW5fb2JqZWN0LCBpc19mcm96ZW5fcGFja2FnZSwKLSAgICAgICAgICAgICAgICAgIGluaXRfYnVpbHRpbiwgaW5pdF9mcm96ZW4sIGlzX2J1aWx0aW4sIGlzX2Zyb3plbiwKKyAgICAgICAgICAgICAgICAgIGluaXRfZnJvemVuLCBpc19idWlsdGluLCBpc19mcm96ZW4sCiAgICAgICAgICAgICAgICAgICBfZml4X2NvX2ZpbGVuYW1lKQogdHJ5OgotICAgIGZyb20gX2ltcCBpbXBvcnQgbG9hZF9keW5hbWljCisgICAgZnJvbSBfaW1wIGltcG9ydCBjcmVhdGVfZHluYW1pYwogZXhjZXB0IEltcG9ydEVycm9yOgogICAgICMgUGxhdGZvcm0gZG9lc24ndCBzdXBwb3J0IGR5bmFtaWMgbG9hZGluZy4KLSAgICBsb2FkX2R5bmFtaWMgPSBOb25lCisgICAgY3JlYXRlX2R5bmFtaWMgPSBOb25lCiAKLWZyb20gaW1wb3J0bGliLl9ib290c3RyYXAgaW1wb3J0IFNvdXJjZWxlc3NGaWxlTG9hZGVyLCBfRVJSX01TRywgX1NwZWNNZXRob2RzCitmcm9tIGltcG9ydGxpYi5fYm9vdHN0cmFwIGltcG9ydCBfRVJSX01TRywgX2V4ZWMsIF9sb2FkLCBfYnVpbHRpbl9mcm9tX25hbWUKK2Zyb20gaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IFNvdXJjZWxlc3NGaWxlTG9hZGVyCiAKIGZyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGZyb20gaW1wb3J0bGliIGltcG9ydCB1dGlsCkBAIC0yOSw3ICszMCw3IEBACiAKIHdhcm5pbmdzLndhcm4oInRoZSBpbXAgbW9kdWxlIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGltcG9ydGxpYjsgIgogICAgICAgICAgICAgICAic2VlIHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIGZvciBhbHRlcm5hdGl2ZSB1c2VzIiwKLSAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogCiAjIERFUFJFQ0FURUQKIFNFQVJDSF9FUlJPUiA9IDAKQEAgLTU4LDI0ICs1OSwyMyBAQAogZGVmIGdldF9tYWdpYygpOgogICAgICIiIioqREVQUkVDQVRFRCoqCiAKLSAgICBSZXR1cm4gdGhlIG1hZ2ljIG51bWJlciBmb3IgLnB5YyBvciAucHlvIGZpbGVzLgorICAgIFJldHVybiB0aGUgbWFnaWMgbnVtYmVyIGZvciAucHljIGZpbGVzLgogICAgICIiIgogICAgIHJldHVybiB1dGlsLk1BR0lDX05VTUJFUgogCiAKIGRlZiBnZXRfdGFnKCk6Ci0gICAgIiIiUmV0dXJuIHRoZSBtYWdpYyB0YWcgZm9yIC5weWMgb3IgLnB5byBmaWxlcy4iIiIKKyAgICAiIiJSZXR1cm4gdGhlIG1hZ2ljIHRhZyBmb3IgLnB5YyBmaWxlcy4iIiIKICAgICByZXR1cm4gc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZwogCiAKIGRlZiBjYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBkZWJ1Z19vdmVycmlkZT1Ob25lKToKICAgICAiIiIqKkRFUFJFQ0FURUQqKgogCi0gICAgR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyAucHljLy5weW8gZmlsZS4KKyAgICBHaXZlbiB0aGUgcGF0aCB0byBhIC5weSBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weWMgZmlsZS4KIAogICAgIFRoZSAucHkgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvIHRoZQotICAgIC5weWMvLnB5byBmaWxlIGNhbGN1bGF0ZWQgYXMgaWYgdGhlIC5weSBmaWxlIHdlcmUgaW1wb3J0ZWQuICBUaGUgZXh0ZW5zaW9uCi0gICAgd2lsbCBiZSAucHljIHVubGVzcyBzeXMuZmxhZ3Mub3B0aW1pemUgaXMgbm9uLXplcm8sIHRoZW4gaXQgd2lsbCBiZSAucHlvLgorICAgIC5weWMgZmlsZSBjYWxjdWxhdGVkIGFzIGlmIHRoZSAucHkgZmlsZSB3ZXJlIGltcG9ydGVkLgogCiAgICAgSWYgZGVidWdfb3ZlcnJpZGUgaXMgbm90IE5vbmUsIHRoZW4gaXQgbXVzdCBiZSBhIGJvb2xlYW4gYW5kIGlzIHVzZWQgaW4KICAgICBwbGFjZSBvZiBzeXMuZmxhZ3Mub3B0aW1pemUuCkBAIC04MywxNiArODMsMTggQEAKICAgICBJZiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUgdGhlbiBOb3RJbXBsZW1lbnRlZEVycm9yIGlzIHJhaXNlZC4KIAogICAgICIiIgotICAgIHJldHVybiB1dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIGRlYnVnX292ZXJyaWRlKQorICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnKQorICAgICAgICByZXR1cm4gdXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBkZWJ1Z19vdmVycmlkZSkKIAogCiBkZWYgc291cmNlX2Zyb21fY2FjaGUocGF0aCk6CiAgICAgIiIiKipERVBSRUNBVEVEKioKIAotICAgIEdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5Yy4vLnB5byBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weSBmaWxlLgorICAgIEdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5Yy4gZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyAucHkgZmlsZS4KIAotICAgIFRoZSAucHljLy5weW8gZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvCi0gICAgdGhlIC5weSBmaWxlIGNhbGN1bGF0ZWQgdG8gY29ycmVzcG9uZCB0byB0aGUgLnB5Yy8ucHlvIGZpbGUuICBJZiBwYXRoIGRvZXMKKyAgICBUaGUgLnB5YyBmaWxlIGRvZXMgbm90IG5lZWQgdG8gZXhpc3Q7IHRoaXMgc2ltcGx5IHJldHVybnMgdGhlIHBhdGggdG8KKyAgICB0aGUgLnB5IGZpbGUgY2FsY3VsYXRlZCB0byBjb3JyZXNwb25kIHRvIHRoZSAucHljIGZpbGUuICBJZiBwYXRoIGRvZXMKICAgICBub3QgY29uZm9ybSB0byBQRVAgMzE0NyBmb3JtYXQsIFZhbHVlRXJyb3Igd2lsbCBiZSByYWlzZWQuIElmCiAgICAgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lIHRoZW4gTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuCiAKQEAgLTE2NCwxMSArMTY2LDEwIEBACiBkZWYgbG9hZF9zb3VyY2UobmFtZSwgcGF0aG5hbWUsIGZpbGU9Tm9uZSk6CiAgICAgbG9hZGVyID0gX0xvYWRTb3VyY2VDb21wYXRpYmlsaXR5KG5hbWUsIHBhdGhuYW1lLCBmaWxlKQogICAgIHNwZWMgPSB1dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKG5hbWUsIHBhdGhuYW1lLCBsb2FkZXI9bG9hZGVyKQotICAgIG1ldGhvZHMgPSBfU3BlY01ldGhvZHMoc3BlYykKICAgICBpZiBuYW1lIGluIHN5cy5tb2R1bGVzOgotICAgICAgICBtb2R1bGUgPSBtZXRob2RzLmV4ZWMoc3lzLm1vZHVsZXNbbmFtZV0pCisgICAgICAgIG1vZHVsZSA9IF9leGVjKHNwZWMsIHN5cy5tb2R1bGVzW25hbWVdKQogICAgIGVsc2U6Ci0gICAgICAgIG1vZHVsZSA9IG1ldGhvZHMubG9hZCgpCisgICAgICAgIG1vZHVsZSA9IF9sb2FkKHNwZWMpCiAgICAgIyBUbyBhbGxvdyByZWxvYWRpbmcgdG8gcG90ZW50aWFsbHkgd29yaywgdXNlIGEgbm9uLWhhY2tlZCBsb2FkZXIgd2hpY2gKICAgICAjIHdvbid0IHJlbHkgb24gYSBub3ctY2xvc2VkIGZpbGUgb2JqZWN0LgogICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIobmFtZSwgcGF0aG5hbWUpCkBAIC0xODUsMTEgKzE4NiwxMCBAQAogICAgICIiIioqREVQUkVDQVRFRCoqIiIiCiAgICAgbG9hZGVyID0gX0xvYWRDb21waWxlZENvbXBhdGliaWxpdHkobmFtZSwgcGF0aG5hbWUsIGZpbGUpCiAgICAgc3BlYyA9IHV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24obmFtZSwgcGF0aG5hbWUsIGxvYWRlcj1sb2FkZXIpCi0gICAgbWV0aG9kcyA9IF9TcGVjTWV0aG9kcyhzcGVjKQogICAgIGlmIG5hbWUgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgIG1vZHVsZSA9IG1ldGhvZHMuZXhlYyhzeXMubW9kdWxlc1tuYW1lXSkKKyAgICAgICAgbW9kdWxlID0gX2V4ZWMoc3BlYywgc3lzLm1vZHVsZXNbbmFtZV0pCiAgICAgZWxzZToKLSAgICAgICAgbW9kdWxlID0gbWV0aG9kcy5sb2FkKCkKKyAgICAgICAgbW9kdWxlID0gX2xvYWQoc3BlYykKICAgICAjIFRvIGFsbG93IHJlbG9hZGluZyB0byBwb3RlbnRpYWxseSB3b3JrLCB1c2UgYSBub24taGFja2VkIGxvYWRlciB3aGljaAogICAgICMgd29uJ3QgcmVseSBvbiBhIG5vdy1jbG9zZWQgZmlsZSBvYmplY3QuCiAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBTb3VyY2VsZXNzRmlsZUxvYWRlcihuYW1lLCBwYXRobmFtZSkKQEAgLTIxMCwxMSArMjEwLDEwIEBACiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7IXJ9IGlzIG5vdCBhIHBhY2thZ2UnLmZvcm1hdChwYXRoKSkKICAgICBzcGVjID0gdXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihuYW1lLCBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zPVtdKQotICAgIG1ldGhvZHMgPSBfU3BlY01ldGhvZHMoc3BlYykKICAgICBpZiBuYW1lIGluIHN5cy5tb2R1bGVzOgotICAgICAgICByZXR1cm4gbWV0aG9kcy5leGVjKHN5cy5tb2R1bGVzW25hbWVdKQorICAgICAgICByZXR1cm4gX2V4ZWMoc3BlYywgc3lzLm1vZHVsZXNbbmFtZV0pCiAgICAgZWxzZToKLSAgICAgICAgcmV0dXJuIG1ldGhvZHMubG9hZCgpCisgICAgICAgIHJldHVybiBfbG9hZChzcGVjKQogCiAKIGRlZiBsb2FkX21vZHVsZShuYW1lLCBmaWxlLCBmaWxlbmFtZSwgZGV0YWlscyk6CkBAIC0zMTMsMyArMzEyLDM0IEBACiAKICAgICAiIiIKICAgICByZXR1cm4gaW1wb3J0bGliLnJlbG9hZChtb2R1bGUpCisKKworZGVmIGluaXRfYnVpbHRpbihuYW1lKToKKyAgICAiIiIqKkRFUFJFQ0FURUQqKgorCisgICAgTG9hZCBhbmQgcmV0dXJuIGEgYnVpbHQtaW4gbW9kdWxlIGJ5IG5hbWUsIG9yIE5vbmUgaXMgc3VjaCBtb2R1bGUgZG9lc24ndAorICAgIGV4aXN0CisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gX2J1aWx0aW5fZnJvbV9uYW1lKG5hbWUpCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICByZXR1cm4gTm9uZQorCisKK2lmIGNyZWF0ZV9keW5hbWljOgorICAgIGRlZiBsb2FkX2R5bmFtaWMobmFtZSwgcGF0aCwgZmlsZT1Ob25lKToKKyAgICAgICAgIiIiKipERVBSRUNBVEVEKioKKworICAgICAgICBMb2FkIGFuIGV4dGVuc2lvbiBtb2R1bGUuCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQorICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIobmFtZSwgcGF0aCkKKworICAgICAgICAjIElzc3VlICMyNDc0ODogU2tpcCB0aGUgc3lzLm1vZHVsZXMgY2hlY2sgaW4gX2xvYWRfbW9kdWxlX3NoaW07CisgICAgICAgICMgYWx3YXlzIGxvYWQgbmV3IGV4dGVuc2lvbgorICAgICAgICBzcGVjID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKAorICAgICAgICAgICAgbmFtZT1uYW1lLCBsb2FkZXI9bG9hZGVyLCBvcmlnaW49cGF0aCkKKyAgICAgICAgcmV0dXJuIF9sb2FkKHNwZWMpCisKK2Vsc2U6CisgICAgbG9hZF9keW5hbWljID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9fX2luaXRfXy5weSBiL0xpYi9pbXBvcnRsaWIvX19pbml0X18ucHkKaW5kZXggMWJjOTk0Ny4uYjZhOWY4MiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9fX2luaXRfXy5weQorKysgYi9MaWIvaW1wb3J0bGliL19faW5pdF9fLnB5CkBAIC0zMCw5ICszMCwyNiBAQAogICAgICAgICBwYXNzCiAgICAgc3lzLm1vZHVsZXNbJ2ltcG9ydGxpYi5fYm9vdHN0cmFwJ10gPSBfYm9vdHN0cmFwCiAKK3RyeToKKyAgICBpbXBvcnQgX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwgYXMgX2Jvb3RzdHJhcF9leHRlcm5hbAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gLiBpbXBvcnQgX2Jvb3RzdHJhcF9leHRlcm5hbAorICAgIF9ib290c3RyYXBfZXh0ZXJuYWwuX3NldHVwKF9ib290c3RyYXApCisgICAgX2Jvb3RzdHJhcC5fYm9vdHN0cmFwX2V4dGVybmFsID0gX2Jvb3RzdHJhcF9leHRlcm5hbAorZWxzZToKKyAgICBfYm9vdHN0cmFwX2V4dGVybmFsLl9fbmFtZV9fID0gJ2ltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsJworICAgIF9ib290c3RyYXBfZXh0ZXJuYWwuX19wYWNrYWdlX18gPSAnaW1wb3J0bGliJworICAgIHRyeToKKyAgICAgICAgX2Jvb3RzdHJhcF9leHRlcm5hbC5fX2ZpbGVfXyA9IF9fZmlsZV9fLnJlcGxhY2UoJ19faW5pdF9fLnB5JywgJ19ib290c3RyYXBfZXh0ZXJuYWwucHknKQorICAgIGV4Y2VwdCBOYW1lRXJyb3I6CisgICAgICAgICMgX19maWxlX18gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgZGVmaW5lZCwgZS5nLiBpZiB0aGlzIGNvZGUgZ2V0cworICAgICAgICAjIGZyb3plbiBieSBhIHRvb2wgbGlrZSBjeF9GcmVlemUuCisgICAgICAgIHBhc3MKKyAgICBzeXMubW9kdWxlc1snaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwnXSA9IF9ib290c3RyYXBfZXh0ZXJuYWwKKwogIyBUbyBzaW1wbGlmeSBpbXBvcnRzIGluIHRlc3QgY29kZQotX3dfbG9uZyA9IF9ib290c3RyYXAuX3dfbG9uZwotX3JfbG9uZyA9IF9ib290c3RyYXAuX3JfbG9uZworX3dfbG9uZyA9IF9ib290c3RyYXBfZXh0ZXJuYWwuX3dfbG9uZworX3JfbG9uZyA9IF9ib290c3RyYXBfZXh0ZXJuYWwuX3JfbG9uZwogCiAjIEZ1bGx5IGJvb3RzdHJhcHBlZCBhdCB0aGlzIHBvaW50LCBpbXBvcnQgd2hhdGV2ZXIgeW91IGxpa2UsIGNpcmN1bGFyCiAjIGRlcGVuZGVuY2llcyBhbmQgc3RhcnR1cCBvdmVyaGVhZCBtaW5pbWlzYXRpb24gcGVybWl0dGluZyA6KQpAQCAtNzMsNyArOTAsNyBAQAogICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgcGFzcwogICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30uX19sb2FkZXJfXyBpcyBub3Qgc2V0Jy5mb3JtYXQobmFtZSkpCisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9Ll9fbG9hZGVyX18gaXMgbm90IHNldCcuZm9ybWF0KG5hbWUpKSBmcm9tIE5vbmUKIAogICAgIHNwZWMgPSBfYm9vdHN0cmFwLl9maW5kX3NwZWMobmFtZSwgcGF0aCkKICAgICAjIFdlIHdvbid0IHdvcnJ5IGFib3V0IG1hbGZvcm1lZCBzcGVjcyAobWlzc2luZyBhdHRyaWJ1dGVzKS4KQEAgLTEzOCwxNSArMTU1LDE1IEBACiAgICAgICAgICAgICAgICAgcGFyZW50ID0gc3lzLm1vZHVsZXNbcGFyZW50X25hbWVdCiAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgbXNnID0gInBhcmVudCB7IXJ9IG5vdCBpbiBzeXMubW9kdWxlcyIKLSAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cuZm9ybWF0KHBhcmVudF9uYW1lKSwgbmFtZT1wYXJlbnRfbmFtZSkKKyAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cuZm9ybWF0KHBhcmVudF9uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXBhcmVudF9uYW1lKSBmcm9tIE5vbmUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcGtncGF0aCA9IHBhcmVudC5fX3BhdGhfXwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcGtncGF0aCA9IE5vbmUKICAgICAgICAgdGFyZ2V0ID0gbW9kdWxlCiAgICAgICAgIHNwZWMgPSBtb2R1bGUuX19zcGVjX18gPSBfYm9vdHN0cmFwLl9maW5kX3NwZWMobmFtZSwgcGtncGF0aCwgdGFyZ2V0KQotICAgICAgICBtZXRob2RzID0gX2Jvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykKLSAgICAgICAgbWV0aG9kcy5leGVjKG1vZHVsZSkKKyAgICAgICAgX2Jvb3RzdHJhcC5fZXhlYyhzcGVjLCBtb2R1bGUpCiAgICAgICAgICMgVGhlIG1vZHVsZSBtYXkgaGF2ZSByZXBsYWNlZCBpdHNlbGYgaW4gc3lzLm1vZHVsZXMhCiAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tuYW1lXQogICAgIGZpbmFsbHk6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKaW5kZXggNjRiYmI0Ni4uNmY2MmJiMyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQpAQCAtOSw3ICs5LDcgQEAKICMKICMgSU1QT1JUQU5UOiBXaGVuZXZlciBtYWtpbmcgY2hhbmdlcyB0byB0aGlzIG1vZHVsZSwgYmUgc3VyZSB0byBydW4KICMgYSB0b3AtbGV2ZWwgbWFrZSBpbiBvcmRlciB0byBnZXQgdGhlIGZyb3plbiB2ZXJzaW9uIG9mIHRoZSBtb2R1bGUKLSMgdXBkYXRlLiBOb3QgZG9pbmcgc28gd2lsbCByZXN1bHQgaW4gdGhlIE1ha2VmaWxlIHRvIGZhaWwgZm9yCisjIHVwZGF0ZWQuIE5vdCBkb2luZyBzbyB3aWxsIHJlc3VsdCBpbiB0aGUgTWFrZWZpbGUgdG8gZmFpbCBmb3IKICMgYWxsIG90aGVycyB3aG8gZG9uJ3QgaGF2ZSBhIC4vcHl0aG9uIGFyb3VuZCB0byBmcmVlemUgdGhlIG1vZHVsZQogIyBpbiB0aGUgZWFybHkgc3RhZ2VzIG9mIGNvbXBpbGF0aW9uLgogIwpAQCAtMjIsMTAxICsyMiw3IEBACiAKICMgQm9vdHN0cmFwLXJlbGF0ZWQgY29kZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotX0NBU0VfSU5TRU5TSVRJVkVfUExBVEZPUk1TID0gJ3dpbicsICdjeWd3aW4nLCAnZGFyd2luJwotCi0KLWRlZiBfbWFrZV9yZWxheF9jYXNlKCk6Ci0gICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoX0NBU0VfSU5TRU5TSVRJVkVfUExBVEZPUk1TKToKLSAgICAgICAgZGVmIF9yZWxheF9jYXNlKCk6Ci0gICAgICAgICAgICAiIiJUcnVlIGlmIGZpbGVuYW1lcyBtdXN0IGJlIGNoZWNrZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LiIiIgotICAgICAgICAgICAgcmV0dXJuIGInUFlUSE9OQ0FTRU9LJyBpbiBfb3MuZW52aXJvbgotICAgIGVsc2U6Ci0gICAgICAgIGRlZiBfcmVsYXhfY2FzZSgpOgotICAgICAgICAgICAgIiIiVHJ1ZSBpZiBmaWxlbmFtZXMgbXVzdCBiZSBjaGVja2VkIGNhc2UtaW5zZW5zaXRpdmVseS4iIiIKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgIHJldHVybiBfcmVsYXhfY2FzZQotCi0KLWRlZiBfd19sb25nKHgpOgotICAgICIiIkNvbnZlcnQgYSAzMi1iaXQgaW50ZWdlciB0byBsaXR0bGUtZW5kaWFuLiIiIgotICAgIHJldHVybiAoaW50KHgpICYgMHhGRkZGRkZGRikudG9fYnl0ZXMoNCwgJ2xpdHRsZScpCi0KLQotZGVmIF9yX2xvbmcoaW50X2J5dGVzKToKLSAgICAiIiJDb252ZXJ0IDQgYnl0ZXMgaW4gbGl0dGxlLWVuZGlhbiB0byBhbiBpbnRlZ2VyLiIiIgotICAgIHJldHVybiBpbnQuZnJvbV9ieXRlcyhpbnRfYnl0ZXMsICdsaXR0bGUnKQotCi0KLWRlZiBfcGF0aF9qb2luKCpwYXRoX3BhcnRzKToKLSAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5qb2luKCkuIiIiCi0gICAgcmV0dXJuIHBhdGhfc2VwLmpvaW4oW3BhcnQucnN0cmlwKHBhdGhfc2VwYXJhdG9ycykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhcnQgaW4gcGF0aF9wYXJ0cyBpZiBwYXJ0XSkKLQotCi1kZWYgX3BhdGhfc3BsaXQocGF0aCk6Ci0gICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguc3BsaXQoKS4iIiIKLSAgICBpZiBsZW4ocGF0aF9zZXBhcmF0b3JzKSA9PSAxOgotICAgICAgICBmcm9udCwgXywgdGFpbCA9IHBhdGgucnBhcnRpdGlvbihwYXRoX3NlcCkKLSAgICAgICAgcmV0dXJuIGZyb250LCB0YWlsCi0gICAgZm9yIHggaW4gcmV2ZXJzZWQocGF0aCk6Ci0gICAgICAgIGlmIHggaW4gcGF0aF9zZXBhcmF0b3JzOgotICAgICAgICAgICAgZnJvbnQsIHRhaWwgPSBwYXRoLnJzcGxpdCh4LCBtYXhzcGxpdD0xKQotICAgICAgICAgICAgcmV0dXJuIGZyb250LCB0YWlsCi0gICAgcmV0dXJuICcnLCBwYXRoCi0KLQotZGVmIF9wYXRoX3N0YXQocGF0aCk6Ci0gICAgIiIiU3RhdCB0aGUgcGF0aC4KLQotICAgIE1hZGUgYSBzZXBhcmF0ZSBmdW5jdGlvbiB0byBtYWtlIGl0IGVhc2llciB0byBvdmVycmlkZSBpbiBleHBlcmltZW50cwotICAgIChlLmcuIGNhY2hlIHN0YXQgcmVzdWx0cykuCi0KLSAgICAiIiIKLSAgICByZXR1cm4gX29zLnN0YXQocGF0aCkKLQotCi1kZWYgX3BhdGhfaXNfbW9kZV90eXBlKHBhdGgsIG1vZGUpOgotICAgICIiIlRlc3Qgd2hldGhlciB0aGUgcGF0aCBpcyB0aGUgc3BlY2lmaWVkIG1vZGUgdHlwZS4iIiIKLSAgICB0cnk6Ci0gICAgICAgIHN0YXRfaW5mbyA9IF9wYXRoX3N0YXQocGF0aCkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgcmV0dXJuIChzdGF0X2luZm8uc3RfbW9kZSAmIDBvMTcwMDAwKSA9PSBtb2RlCi0KLQotZGVmIF9wYXRoX2lzZmlsZShwYXRoKToKLSAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5pc2ZpbGUuIiIiCi0gICAgcmV0dXJuIF9wYXRoX2lzX21vZGVfdHlwZShwYXRoLCAwbzEwMDAwMCkKLQotCi1kZWYgX3BhdGhfaXNkaXIocGF0aCk6Ci0gICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguaXNkaXIuIiIiCi0gICAgaWYgbm90IHBhdGg6Ci0gICAgICAgIHBhdGggPSBfb3MuZ2V0Y3dkKCkKLSAgICByZXR1cm4gX3BhdGhfaXNfbW9kZV90eXBlKHBhdGgsIDBvMDQwMDAwKQotCi0KLWRlZiBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIG1vZGU9MG82NjYpOgotICAgICIiIkJlc3QtZWZmb3J0IGZ1bmN0aW9uIHRvIHdyaXRlIGRhdGEgdG8gYSBwYXRoIGF0b21pY2FsbHkuCi0gICAgQmUgcHJlcGFyZWQgdG8gaGFuZGxlIGEgRmlsZUV4aXN0c0Vycm9yIGlmIGNvbmN1cnJlbnQgd3JpdGluZyBvZiB0aGUKLSAgICB0ZW1wb3JhcnkgZmlsZSBpcyBhdHRlbXB0ZWQuIiIiCi0gICAgIyBpZCgpIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBwc2V1ZG8tcmFuZG9tIGZpbGVuYW1lLgotICAgIHBhdGhfdG1wID0gJ3t9Lnt9Jy5mb3JtYXQocGF0aCwgaWQocGF0aCkpCi0gICAgZmQgPSBfb3Mub3BlbihwYXRoX3RtcCwKLSAgICAgICAgICAgICAgICAgIF9vcy5PX0VYQ0wgfCBfb3MuT19DUkVBVCB8IF9vcy5PX1dST05MWSwgbW9kZSAmIDBvNjY2KQotICAgIHRyeToKLSAgICAgICAgIyBXZSBmaXJzdCB3cml0ZSBkYXRhIHRvIGEgdGVtcG9yYXJ5IGZpbGUsIGFuZCB0aGVuIHVzZSBvcy5yZXBsYWNlKCkgdG8KLSAgICAgICAgIyBwZXJmb3JtIGFuIGF0b21pYyByZW5hbWUuCi0gICAgICAgIHdpdGggX2lvLkZpbGVJTyhmZCwgJ3diJykgYXMgZmlsZToKLSAgICAgICAgICAgIGZpbGUud3JpdGUoZGF0YSkKLSAgICAgICAgX29zLnJlcGxhY2UocGF0aF90bXAsIHBhdGgpCi0gICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIF9vcy51bmxpbmsocGF0aF90bXApCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICByYWlzZQotCitfYm9vdHN0cmFwX2V4dGVybmFsID0gTm9uZQogCiBkZWYgX3dyYXAobmV3LCBvbGQpOgogICAgICIiIlNpbXBsZSBzdWJzdGl0dXRlIGZvciBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIuIiIiCkBAIC0xMzAsMTAgKzM2LDYgQEAKICAgICByZXR1cm4gdHlwZShzeXMpKG5hbWUpCiAKIAotX2NvZGVfdHlwZSA9IHR5cGUoX3dyYXAuX19jb2RlX18pCi0KLQotCiBjbGFzcyBfTWFuYWdlUmVsb2FkOgogCiAgICAgIiIiTWFuYWdlcyB0aGUgcG9zc2libGUgY2xlYW4tdXAgb2Ygc3lzLm1vZHVsZXMgZm9yIGxvYWRfbW9kdWxlKCkuIiIiCkBAIC0zMDksNyArMjExLDYgQEAKICAgICAgICAgbG9jay5yZWxlYXNlKCkKIAogIyBGcmFtZSBzdHJpcHBpbmcgbWFnaWMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQogZGVmIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoZiwgKmFyZ3MsICoqa3dkcyk6CiAgICAgIiIicmVtb3ZlX2ltcG9ydGxpYl9mcmFtZXMgaW4gaW1wb3J0LmMgd2lsbCBhbHdheXMgcmVtb3ZlIHNlcXVlbmNlcwogICAgIG9mIGltcG9ydGxpYiBmcmFtZXMgdGhhdCBlbmQgd2l0aCBhIGNhbGwgdG8gdGhpcyBmdW5jdGlvbgpAQCAtMzIxLDIwMCArMjIyLDYgQEAKICAgICByZXR1cm4gZigqYXJncywgKiprd2RzKQogCiAKLSMgRmluZGVyL2xvYWRlciB1dGlsaXR5IGNvZGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBNYWdpYyB3b3JkIHRvIHJlamVjdCAucHljIGZpbGVzIGdlbmVyYXRlZCBieSBvdGhlciBQeXRob24gdmVyc2lvbnMuCi0jIEl0IHNob3VsZCBjaGFuZ2UgZm9yIGVhY2ggaW5jb21wYXRpYmxlIGNoYW5nZSB0byB0aGUgYnl0ZWNvZGUuCi0jCi0jIFRoZSB2YWx1ZSBvZiBDUiBhbmQgTEYgaXMgaW5jb3Jwb3JhdGVkIHNvIGlmIHlvdSBldmVyIHJlYWQgb3Igd3JpdGUKLSMgYSAucHljIGZpbGUgaW4gdGV4dCBtb2RlIHRoZSBtYWdpYyBudW1iZXIgd2lsbCBiZSB3cm9uZzsgYWxzbywgdGhlCi0jIEFwcGxlIE1QVyBjb21waWxlciBzd2FwcyB0aGVpciB2YWx1ZXMsIGJvdGNoaW5nIHN0cmluZyBjb25zdGFudHMuCi0jCi0jIFRoZSBtYWdpYyBudW1iZXJzIG11c3QgYmUgc3BhY2VkIGFwYXJ0IGF0IGxlYXN0IDIgdmFsdWVzLCBhcyB0aGUKLSMgLVUgaW50ZXJwZXRlciBmbGFnIHdpbGwgY2F1c2UgTUFHSUMrMSBiZWluZyB1c2VkLiBUaGV5IGhhdmUgYmVlbgotIyBvZGQgbnVtYmVycyBmb3Igc29tZSB0aW1lIG5vdy4KLSMKLSMgVGhlcmUgd2VyZSBhIHZhcmlldHkgb2Ygb2xkIHNjaGVtZXMgZm9yIHNldHRpbmcgdGhlIG1hZ2ljIG51bWJlci4KLSMgVGhlIGN1cnJlbnQgd29ya2luZyBzY2hlbWUgaXMgdG8gaW5jcmVtZW50IHRoZSBwcmV2aW91cyB2YWx1ZSBieQotIyAxMC4KLSMKLSMgU3RhcnRpbmcgd2l0aCB0aGUgYWRvcHRpb24gb2YgUEVQIDMxNDcgaW4gUHl0aG9uIDMuMiwgZXZlcnkgYnVtcCBpbiBtYWdpYwotIyBudW1iZXIgYWxzbyBpbmNsdWRlcyBhIG5ldyAibWFnaWMgdGFnIiwgaS5lLiBhIGh1bWFuIHJlYWRhYmxlIHN0cmluZyB1c2VkCi0jIHRvIHJlcHJlc2VudCB0aGUgbWFnaWMgbnVtYmVyIGluIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzLiAgV2hlbiB5b3UgY2hhbmdlCi0jIHRoZSBtYWdpYyBudW1iZXIsIHlvdSBtdXN0IGFsc28gc2V0IGEgbmV3IHVuaXF1ZSBtYWdpYyB0YWcuICBHZW5lcmFsbHkgdGhpcwotIyBjYW4gYmUgbmFtZWQgYWZ0ZXIgdGhlIFB5dGhvbiBtYWpvciB2ZXJzaW9uIG9mIHRoZSBtYWdpYyBudW1iZXIgYnVtcCwgYnV0Ci0jIGl0IGNhbiByZWFsbHkgYmUgYW55dGhpbmcsIGFzIGxvbmcgYXMgaXQncyBkaWZmZXJlbnQgdGhhbiBhbnl0aGluZyBlbHNlCi0jIHRoYXQncyBjb21lIGJlZm9yZS4gIFRoZSB0YWdzIGFyZSBpbmNsdWRlZCBpbiB0aGUgZm9sbG93aW5nIHRhYmxlLCBzdGFydGluZwotIyB3aXRoIFB5dGhvbiAzLjJhMC4KLSMKLSMgS25vd24gdmFsdWVzOgotIyAgUHl0aG9uIDEuNTogICAyMDEyMQotIyAgUHl0aG9uIDEuNS4xOiAyMDEyMQotIyAgICAgUHl0aG9uIDEuNS4yOiAyMDEyMQotIyAgICAgUHl0aG9uIDEuNjogICA1MDQyOAotIyAgICAgUHl0aG9uIDIuMDogICA1MDgyMwotIyAgICAgUHl0aG9uIDIuMC4xOiA1MDgyMwotIyAgICAgUHl0aG9uIDIuMTogICA2MDIwMgotIyAgICAgUHl0aG9uIDIuMS4xOiA2MDIwMgotIyAgICAgUHl0aG9uIDIuMS4yOiA2MDIwMgotIyAgICAgUHl0aG9uIDIuMjogICA2MDcxNwotIyAgICAgUHl0aG9uIDIuM2EwOiA2MjAxMQotIyAgICAgUHl0aG9uIDIuM2EwOiA2MjAyMQotIyAgICAgUHl0aG9uIDIuM2EwOiA2MjAxMSAoISkKLSMgICAgIFB5dGhvbiAyLjRhMDogNjIwNDEKLSMgICAgIFB5dGhvbiAyLjRhMzogNjIwNTEKLSMgICAgIFB5dGhvbiAyLjRiMTogNjIwNjEKLSMgICAgIFB5dGhvbiAyLjVhMDogNjIwNzEKLSMgICAgIFB5dGhvbiAyLjVhMDogNjIwODEgKGFzdC1icmFuY2gpCi0jICAgICBQeXRob24gMi41YTA6IDYyMDkxICh3aXRoKQotIyAgICAgUHl0aG9uIDIuNWEwOiA2MjA5MiAoY2hhbmdlZCBXSVRIX0NMRUFOVVAgb3Bjb2RlKQotIyAgICAgUHl0aG9uIDIuNWIzOiA2MjEwMSAoZml4IHdyb25nIGNvZGU6IGZvciB4LCBpbiAuLi4pCi0jICAgICBQeXRob24gMi41YjM6IDYyMTExIChmaXggd3JvbmcgY29kZTogeCArPSB5aWVsZCkKLSMgICAgIFB5dGhvbiAyLjVjMTogNjIxMjEgKGZpeCB3cm9uZyBsbm90YWIgd2l0aCBmb3IgbG9vcHMgYW5kCi0jICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yaW5nIGNvbnN0YW50cyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCkKLSMgICAgIFB5dGhvbiAyLjVjMjogNjIxMzEgKGZpeCB3cm9uZyBjb2RlOiBmb3IgeCwgaW4gLi4uIGluIGxpc3Rjb21wL2dlbmV4cCkKLSMgICAgIFB5dGhvbiAyLjZhMDogNjIxNTEgKHBlZXBob2xlIG9wdGltaXphdGlvbnMgYW5kIFNUT1JFX01BUCBvcGNvZGUpCi0jICAgICBQeXRob24gMi42YTE6IDYyMTYxIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKQotIyAgICAgUHl0aG9uIDIuN2EwOiA2MjE3MSAob3B0aW1pemUgbGlzdCBjb21wcmVoZW5zaW9ucy9jaGFuZ2UgTElTVF9BUFBFTkQpCi0jICAgICBQeXRob24gMi43YTA6IDYyMTgxIChvcHRpbWl6ZSBjb25kaXRpb25hbCBicmFuY2hlczoKLSMgICAgICAgICAgICAgICAgICAgICAgICAgIGludHJvZHVjZSBQT1BfSlVNUF9JRl9GQUxTRSBhbmQgUE9QX0pVTVBfSUZfVFJVRSkKLSMgICAgIFB5dGhvbiAyLjdhMCAgNjIxOTEgKGludHJvZHVjZSBTRVRVUF9XSVRIKQotIyAgICAgUHl0aG9uIDIuN2EwICA2MjIwMSAoaW50cm9kdWNlIEJVSUxEX1NFVCkKLSMgICAgIFB5dGhvbiAyLjdhMCAgNjIyMTEgKGludHJvZHVjZSBNQVBfQUREIGFuZCBTRVRfQUREKQotIyAgICAgUHl0aG9uIDMwMDA6ICAgMzAwMAotIyAgICAgICAgICAgICAgICAgICAgMzAxMCAocmVtb3ZlZCBVTkFSWV9DT05WRVJUKQotIyAgICAgICAgICAgICAgICAgICAgMzAyMCAoYWRkZWQgQlVJTERfU0VUKQotIyAgICAgICAgICAgICAgICAgICAgMzAzMCAoYWRkZWQga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMpCi0jICAgICAgICAgICAgICAgICAgICAzMDQwIChhZGRlZCBzaWduYXR1cmUgYW5ub3RhdGlvbnMpCi0jICAgICAgICAgICAgICAgICAgICAzMDUwIChwcmludCBiZWNvbWVzIGEgZnVuY3Rpb24pCi0jICAgICAgICAgICAgICAgICAgICAzMDYwIChQRVAgMzExNSBtZXRhY2xhc3Mgc3ludGF4KQotIyAgICAgICAgICAgICAgICAgICAgMzA2MSAoc3RyaW5nIGxpdGVyYWxzIGJlY29tZSB1bmljb2RlKQotIyAgICAgICAgICAgICAgICAgICAgMzA3MSAoUEVQIDMxMDkgcmFpc2UgY2hhbmdlcykKLSMgICAgICAgICAgICAgICAgICAgIDMwODEgKFBFUCAzMTM3IG1ha2UgX19maWxlX18gYW5kIF9fbmFtZV9fIHVuaWNvZGUpCi0jICAgICAgICAgICAgICAgICAgICAzMDkxIChraWxsIHN0cjggaW50ZXJuaW5nKQotIyAgICAgICAgICAgICAgICAgICAgMzEwMSAobWVyZ2UgZnJvbSAyLjZhMCwgc2VlIDYyMTUxKQotIyAgICAgICAgICAgICAgICAgICAgMzEwMyAoX19maWxlX18gcG9pbnRzIHRvIHNvdXJjZSBmaWxlKQotIyAgICAgUHl0aG9uIDMuMGE0OiAzMTExIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKS4KLSMgICAgIFB5dGhvbiAzLjBhNTogMzEzMSAobGV4aWNhbCBleGNlcHRpb24gc3RhY2tpbmcsIGluY2x1ZGluZyBQT1BfRVhDRVBUKQotIyAgICAgUHl0aG9uIDMuMWEwOiAzMTQxIChvcHRpbWl6ZSBsaXN0LCBzZXQgYW5kIGRpY3QgY29tcHJlaGVuc2lvbnM6Ci0jICAgICAgICAgICAgIGNoYW5nZSBMSVNUX0FQUEVORCBhbmQgU0VUX0FERCwgYWRkIE1BUF9BREQpCi0jICAgICBQeXRob24gMy4xYTA6IDMxNTEgKG9wdGltaXplIGNvbmRpdGlvbmFsIGJyYW5jaGVzOgotIyAgICAgICAgICAgICBpbnRyb2R1Y2UgUE9QX0pVTVBfSUZfRkFMU0UgYW5kIFBPUF9KVU1QX0lGX1RSVUUpCi0jICAgICBQeXRob24gMy4yYTA6IDMxNjAgKGFkZCBTRVRVUF9XSVRIKQotIyAgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKLSMgICAgIFB5dGhvbiAzLjJhMTogMzE3MCAoYWRkIERVUF9UT1BfVFdPLCByZW1vdmUgRFVQX1RPUFggYW5kIFJPVF9GT1VSKQotIyAgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKLSMgICAgIFB5dGhvbiAzLjJhMiAgMzE4MCAoYWRkIERFTEVURV9ERVJFRikKLSMgICAgIFB5dGhvbiAzLjNhMCAgMzE5MCBfX2NsYXNzX18gc3VwZXIgY2xvc3VyZSBjaGFuZ2VkCi0jICAgICBQeXRob24gMy4zYTAgIDMyMDAgKF9fcXVhbG5hbWVfXyBhZGRlZCkKLSMgICAgICAgICAgICAgICAgICAgICAgMzIxMCAoYWRkZWQgc2l6ZSBtb2R1bG8gMioqMzIgdG8gdGhlIHB5YyBoZWFkZXIpCi0jICAgICBQeXRob24gMy4zYTEgIDMyMjAgKGNoYW5nZWQgUEVQIDM4MCBpbXBsZW1lbnRhdGlvbikKLSMgICAgIFB5dGhvbiAzLjNhNCAgMzIzMCAocmV2ZXJ0IGNoYW5nZXMgdG8gaW1wbGljaXQgX19jbGFzc19fIGNsb3N1cmUpCi0jICAgICBQeXRob24gMy40YTEgIDMyNTAgKGV2YWx1YXRlIHBvc2l0aW9uYWwgZGVmYXVsdCBhcmd1bWVudHMgYmVmb3JlCi0jICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZC1vbmx5IGRlZmF1bHRzKQotIyAgICAgUHl0aG9uIDMuNGExICAzMjYwIChhZGQgTE9BRF9DTEFTU0RFUkVGOyBhbGxvdyBsb2NhbHMgb2YgY2xhc3MgdG8gb3ZlcnJpZGUKLSMgICAgICAgICAgICAgICAgICAgICAgICBmcmVlIHZhcnMpCi0jICAgICBQeXRob24gMy40YTEgIDMyNzAgKHZhcmlvdXMgdHdlYWtzIHRvIHRoZSBfX2NsYXNzX18gY2xvc3VyZSkKLSMgICAgIFB5dGhvbiAzLjRhMSAgMzI4MCAocmVtb3ZlIGltcGxpY2l0IGNsYXNzIGFyZ3VtZW50KQotIyAgICAgUHl0aG9uIDMuNGE0ICAzMjkwIChjaGFuZ2VzIHRvIF9fcXVhbG5hbWVfXyBjb21wdXRhdGlvbikKLSMgICAgIFB5dGhvbiAzLjRhNCAgMzMwMCAobW9yZSBjaGFuZ2VzIHRvIF9fcXVhbG5hbWVfXyBjb21wdXRhdGlvbikKLSMgICAgIFB5dGhvbiAzLjRyYzIgMzMxMCAoYWx0ZXIgX19xdWFsbmFtZV9fIGNvbXB1dGF0aW9uKQotIwotIyBNQUdJQyBtdXN0IGNoYW5nZSB3aGVuZXZlciB0aGUgYnl0ZWNvZGUgZW1pdHRlZCBieSB0aGUgY29tcGlsZXIgbWF5IG5vCi0jIGxvbmdlciBiZSB1bmRlcnN0b29kIGJ5IG9sZGVyIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgZXZhbCBsb29wICh1c3VhbGx5Ci0jIGR1ZSB0byB0aGUgYWRkaXRpb24gb2YgbmV3IG9wY29kZXMpLgotCi1NQUdJQ19OVU1CRVIgPSAoMzMxMCkudG9fYnl0ZXMoMiwgJ2xpdHRsZScpICsgYidcclxuJwotX1JBV19NQUdJQ19OVU1CRVIgPSBpbnQuZnJvbV9ieXRlcyhNQUdJQ19OVU1CRVIsICdsaXR0bGUnKSAgIyBGb3IgaW1wb3J0LmMKLQotX1BZQ0FDSEUgPSAnX19weWNhY2hlX18nCi0KLVNPVVJDRV9TVUZGSVhFUyA9IFsnLnB5J10gICMgX3NldHVwKCkgYWRkcyAucHl3IGFzIG5lZWRlZC4KLQotREVCVUdfQllURUNPREVfU1VGRklYRVMgPSBbJy5weWMnXQotT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTID0gWycucHlvJ10KLQotZGVmIGNhY2hlX2Zyb21fc291cmNlKHBhdGgsIGRlYnVnX292ZXJyaWRlPU5vbmUpOgotICAgICIiIkdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5IGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5Yy8ucHlvIGZpbGUuCi0KLSAgICBUaGUgLnB5IGZpbGUgZG9lcyBub3QgbmVlZCB0byBleGlzdDsgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUgcGF0aCB0byB0aGUKLSAgICAucHljLy5weW8gZmlsZSBjYWxjdWxhdGVkIGFzIGlmIHRoZSAucHkgZmlsZSB3ZXJlIGltcG9ydGVkLiAgVGhlIGV4dGVuc2lvbgotICAgIHdpbGwgYmUgLnB5YyB1bmxlc3Mgc3lzLmZsYWdzLm9wdGltaXplIGlzIG5vbi16ZXJvLCB0aGVuIGl0IHdpbGwgYmUgLnB5by4KLQotICAgIElmIGRlYnVnX292ZXJyaWRlIGlzIG5vdCBOb25lLCB0aGVuIGl0IG11c3QgYmUgYSBib29sZWFuIGFuZCBpcyB1c2VkIGluCi0gICAgcGxhY2Ugb2Ygc3lzLmZsYWdzLm9wdGltaXplLgotCi0gICAgSWYgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lIHRoZW4gTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuCi0KLSAgICAiIiIKLSAgICBkZWJ1ZyA9IG5vdCBzeXMuZmxhZ3Mub3B0aW1pemUgaWYgZGVidWdfb3ZlcnJpZGUgaXMgTm9uZSBlbHNlIGRlYnVnX292ZXJyaWRlCi0gICAgaWYgZGVidWc6Ci0gICAgICAgIHN1ZmZpeGVzID0gREVCVUdfQllURUNPREVfU1VGRklYRVMKLSAgICBlbHNlOgotICAgICAgICBzdWZmaXhlcyA9IE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUwotICAgIGhlYWQsIHRhaWwgPSBfcGF0aF9zcGxpdChwYXRoKQotICAgIGJhc2UsIHNlcCwgcmVzdCA9IHRhaWwucnBhcnRpdGlvbignLicpCi0gICAgdGFnID0gc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZwotICAgIGlmIHRhZyBpcyBOb25lOgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUnKQotICAgIGZpbGVuYW1lID0gJycuam9pbihbKGJhc2UgaWYgYmFzZSBlbHNlIHJlc3QpLCBzZXAsIHRhZywgc3VmZml4ZXNbMF1dKQotICAgIHJldHVybiBfcGF0aF9qb2luKGhlYWQsIF9QWUNBQ0hFLCBmaWxlbmFtZSkKLQotCi1kZWYgc291cmNlX2Zyb21fY2FjaGUocGF0aCk6Ci0gICAgIiIiR2l2ZW4gdGhlIHBhdGggdG8gYSAucHljLi8ucHlvIGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5IGZpbGUuCi0KLSAgICBUaGUgLnB5Yy8ucHlvIGZpbGUgZG9lcyBub3QgbmVlZCB0byBleGlzdDsgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUgcGF0aCB0bwotICAgIHRoZSAucHkgZmlsZSBjYWxjdWxhdGVkIHRvIGNvcnJlc3BvbmQgdG8gdGhlIC5weWMvLnB5byBmaWxlLiAgSWYgcGF0aCBkb2VzCi0gICAgbm90IGNvbmZvcm0gdG8gUEVQIDMxNDcgZm9ybWF0LCBWYWx1ZUVycm9yIHdpbGwgYmUgcmFpc2VkLiBJZgotICAgIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZSB0aGVuIE5vdEltcGxlbWVudGVkRXJyb3IgaXMgcmFpc2VkLgotCi0gICAgIiIiCi0gICAgaWYgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lOgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUnKQotICAgIGhlYWQsIHB5Y2FjaGVfZmlsZW5hbWUgPSBfcGF0aF9zcGxpdChwYXRoKQotICAgIGhlYWQsIHB5Y2FjaGUgPSBfcGF0aF9zcGxpdChoZWFkKQotICAgIGlmIHB5Y2FjaGUgIT0gX1BZQ0FDSEU6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9IG5vdCBib3R0b20tbGV2ZWwgZGlyZWN0b3J5IGluICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAneyFyfScuZm9ybWF0KF9QWUNBQ0hFLCBwYXRoKSkKLSAgICBpZiBweWNhY2hlX2ZpbGVuYW1lLmNvdW50KCcuJykgIT0gMjoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZXhwZWN0ZWQgb25seSAyIGRvdHMgaW4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICd7IXJ9Jy5mb3JtYXQocHljYWNoZV9maWxlbmFtZSkpCi0gICAgYmFzZV9maWxlbmFtZSA9IHB5Y2FjaGVfZmlsZW5hbWUucGFydGl0aW9uKCcuJylbMF0KLSAgICByZXR1cm4gX3BhdGhfam9pbihoZWFkLCBiYXNlX2ZpbGVuYW1lICsgU09VUkNFX1NVRkZJWEVTWzBdKQotCi0KLWRlZiBfZ2V0X3NvdXJjZWZpbGUoYnl0ZWNvZGVfcGF0aCk6Ci0gICAgIiIiQ29udmVydCBhIGJ5dGVjb2RlIGZpbGUgcGF0aCB0byBhIHNvdXJjZSBwYXRoIChpZiBwb3NzaWJsZSkuCi0KLSAgICBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBwdXJlbHkgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGZvcgotICAgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aEZpbGVuYW1lcygpIGluIHRoZSBDIEFQSS4KLQotICAgICIiIgotICAgIGlmIGxlbihieXRlY29kZV9wYXRoKSA9PSAwOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJlc3QsIF8sIGV4dGVuc2lvbiA9IGJ5dGVjb2RlX3BhdGgucnBhcnRpdGlvbignLicpCi0gICAgaWYgbm90IHJlc3Qgb3IgZXh0ZW5zaW9uLmxvd2VyKClbLTM6LTFdICE9ICdweSc6Ci0gICAgICAgIHJldHVybiBieXRlY29kZV9wYXRoCi0gICAgdHJ5OgotICAgICAgICBzb3VyY2VfcGF0aCA9IHNvdXJjZV9mcm9tX2NhY2hlKGJ5dGVjb2RlX3BhdGgpCi0gICAgZXhjZXB0IChOb3RJbXBsZW1lbnRlZEVycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAgc291cmNlX3BhdGggPSBieXRlY29kZV9wYXRoWzotMV0KLSAgICByZXR1cm4gc291cmNlX3BhdGggaWYgX3BhdGhfaXNmaWxlKHNvdXJjZV9wYXRoKSBlbHNlIGJ5dGVjb2RlX3BhdGgKLQotCi1kZWYgX2NhbGNfbW9kZShwYXRoKToKLSAgICAiIiJDYWxjdWxhdGUgdGhlIG1vZGUgcGVybWlzc2lvbnMgZm9yIGEgYnl0ZWNvZGUgZmlsZS4iIiIKLSAgICB0cnk6Ci0gICAgICAgIG1vZGUgPSBfcGF0aF9zdGF0KHBhdGgpLnN0X21vZGUKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgbW9kZSA9IDBvNjY2Ci0gICAgIyBXZSBhbHdheXMgZW5zdXJlIHdyaXRlIGFjY2VzcyBzbyB3ZSBjYW4gdXBkYXRlIGNhY2hlZCBmaWxlcwotICAgICMgbGF0ZXIgZXZlbiB3aGVuIHRoZSBzb3VyY2UgZmlsZXMgYXJlIHJlYWQtb25seSBvbiBXaW5kb3dzICgjNjA3NCkKLSAgICBtb2RlIHw9IDBvMjAwCi0gICAgcmV0dXJuIG1vZGUKLQotCiBkZWYgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlLCAqYXJncywgdmVyYm9zaXR5PTEpOgogICAgICIiIlByaW50IHRoZSBtZXNzYWdlIHRvIHN0ZGVyciBpZiAtdi9QWVRIT05WRVJCT1NFIGlzIHR1cm5lZCBvbi4iIiIKICAgICBpZiBzeXMuZmxhZ3MudmVyYm9zZSA+PSB2ZXJib3NpdHk6CkBAIC01MjMsMjQgKzIzMCw2IEBACiAgICAgICAgIHByaW50KG1lc3NhZ2UuZm9ybWF0KCphcmdzKSwgZmlsZT1zeXMuc3RkZXJyKQogCiAKLWRlZiBfY2hlY2tfbmFtZShtZXRob2QpOgotICAgICIiIkRlY29yYXRvciB0byB2ZXJpZnkgdGhhdCB0aGUgbW9kdWxlIGJlaW5nIHJlcXVlc3RlZCBtYXRjaGVzIHRoZSBvbmUgdGhlCi0gICAgbG9hZGVyIGNhbiBoYW5kbGUuCi0KLSAgICBUaGUgZmlyc3QgYXJndW1lbnQgKHNlbGYpIG11c3QgZGVmaW5lIF9uYW1lIHdoaWNoIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMKLSAgICBjb21wYXJlZCBhZ2FpbnN0LiBJZiB0aGUgY29tcGFyaXNvbiBmYWlscyB0aGVuIEltcG9ydEVycm9yIGlzIHJhaXNlZC4KLQotICAgICIiIgotICAgIGRlZiBfY2hlY2tfbmFtZV93cmFwcGVyKHNlbGYsIG5hbWU9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgaWYgbmFtZSBpcyBOb25lOgotICAgICAgICAgICAgbmFtZSA9IHNlbGYubmFtZQotICAgICAgICBlbGlmIHNlbGYubmFtZSAhPSBuYW1lOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2xvYWRlciBjYW5ub3QgaGFuZGxlICVzJyAlIG5hbWUsIG5hbWU9bmFtZSkKLSAgICAgICAgcmV0dXJuIG1ldGhvZChzZWxmLCBuYW1lLCAqYXJncywgKiprd2FyZ3MpCi0gICAgX3dyYXAoX2NoZWNrX25hbWVfd3JhcHBlciwgbWV0aG9kKQotICAgIHJldHVybiBfY2hlY2tfbmFtZV93cmFwcGVyCi0KLQogZGVmIF9yZXF1aXJlc19idWlsdGluKGZ4bik6CiAgICAgIiIiRGVjb3JhdG9yIHRvIHZlcmlmeSB0aGUgbmFtZWQgbW9kdWxlIGlzIGJ1aWx0LWluLiIiIgogICAgIGRlZiBfcmVxdWlyZXNfYnVpbHRpbl93cmFwcGVyKHNlbGYsIGZ1bGxuYW1lKToKQEAgLTU2MywyMyArMjUyLDcgQEAKICAgICByZXR1cm4gX3JlcXVpcmVzX2Zyb3plbl93cmFwcGVyCiAKIAotZGVmIF9maW5kX21vZHVsZV9zaGltKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAiIiJUcnkgdG8gZmluZCBhIGxvYWRlciBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUgYnkgZGVsZWdhdGluZyB0bwotICAgIHNlbGYuZmluZF9sb2FkZXIoKS4KLQotICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgZmluZGVyLmZpbmRfc3BlYygpLgotCi0gICAgIiIiCi0gICAgIyBDYWxsIGZpbmRfbG9hZGVyKCkuIElmIGl0IHJldHVybnMgYSBzdHJpbmcgKGluZGljYXRpbmcgdGhpcwotICAgICMgaXMgYSBuYW1lc3BhY2UgcGFja2FnZSBwb3J0aW9uKSwgZ2VuZXJhdGUgYSB3YXJuaW5nIGFuZAotICAgICMgcmV0dXJuIE5vbmUuCi0gICAgbG9hZGVyLCBwb3J0aW9ucyA9IHNlbGYuZmluZF9sb2FkZXIoZnVsbG5hbWUpCi0gICAgaWYgbG9hZGVyIGlzIE5vbmUgYW5kIGxlbihwb3J0aW9ucyk6Ci0gICAgICAgIG1zZyA9ICdOb3QgaW1wb3J0aW5nIGRpcmVjdG9yeSB7fTogbWlzc2luZyBfX2luaXRfXycKLSAgICAgICAgX3dhcm5pbmdzLndhcm4obXNnLmZvcm1hdChwb3J0aW9uc1swXSksIEltcG9ydFdhcm5pbmcpCi0gICAgcmV0dXJuIGxvYWRlcgotCi0KKyMgVHlwaWNhbGx5IHVzZWQgYnkgbG9hZGVyIGNsYXNzZXMgYXMgYSBtZXRob2QgcmVwbGFjZW1lbnQuCiBkZWYgX2xvYWRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpOgogICAgICIiIkxvYWQgdGhlIHNwZWNpZmllZCBtb2R1bGUgaW50byBzeXMubW9kdWxlcyBhbmQgcmV0dXJuIGl0LgogCkBAIC01ODcsMTAzICsyNjAsMTIgQEAKIAogICAgICIiIgogICAgIHNwZWMgPSBzcGVjX2Zyb21fbG9hZGVyKGZ1bGxuYW1lLCBzZWxmKQotICAgIG1ldGhvZHMgPSBfU3BlY01ldGhvZHMoc3BlYykKICAgICBpZiBmdWxsbmFtZSBpbiBzeXMubW9kdWxlczoKICAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbZnVsbG5hbWVdCi0gICAgICAgIG1ldGhvZHMuZXhlYyhtb2R1bGUpCisgICAgICAgIF9leGVjKHNwZWMsIG1vZHVsZSkKICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW2Z1bGxuYW1lXQogICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBtZXRob2RzLmxvYWQoKQotCi0KLWRlZiBfdmFsaWRhdGVfYnl0ZWNvZGVfaGVhZGVyKGRhdGEsIHNvdXJjZV9zdGF0cz1Ob25lLCBuYW1lPU5vbmUsIHBhdGg9Tm9uZSk6Ci0gICAgIiIiVmFsaWRhdGUgdGhlIGhlYWRlciBvZiB0aGUgcGFzc2VkLWluIGJ5dGVjb2RlIGFnYWluc3Qgc291cmNlX3N0YXRzIChpZgotICAgIGdpdmVuKSBhbmQgcmV0dXJuaW5nIHRoZSBieXRlY29kZSB0aGF0IGNhbiBiZSBjb21waWxlZCBieSBjb21waWxlKCkuCi0KLSAgICBBbGwgb3RoZXIgYXJndW1lbnRzIGFyZSB1c2VkIHRvIGVuaGFuY2UgZXJyb3IgcmVwb3J0aW5nLgotCi0gICAgSW1wb3J0RXJyb3IgaXMgcmFpc2VkIHdoZW4gdGhlIG1hZ2ljIG51bWJlciBpcyBpbmNvcnJlY3Qgb3IgdGhlIGJ5dGVjb2RlIGlzCi0gICAgZm91bmQgdG8gYmUgc3RhbGUuIEVPRkVycm9yIGlzIHJhaXNlZCB3aGVuIHRoZSBkYXRhIGlzIGZvdW5kIHRvIGJlCi0gICAgdHJ1bmNhdGVkLgotCi0gICAgIiIiCi0gICAgZXhjX2RldGFpbHMgPSB7fQotICAgIGlmIG5hbWUgaXMgbm90IE5vbmU6Ci0gICAgICAgIGV4Y19kZXRhaWxzWyduYW1lJ10gPSBuYW1lCi0gICAgZWxzZToKLSAgICAgICAgIyBUbyBwcmV2ZW50IGhhdmluZyB0byBtYWtlIGFsbCBtZXNzYWdlcyBoYXZlIGEgY29uZGl0aW9uYWwgbmFtZS4KLSAgICAgICAgbmFtZSA9ICc8Ynl0ZWNvZGU+JwotICAgIGlmIHBhdGggaXMgbm90IE5vbmU6Ci0gICAgICAgIGV4Y19kZXRhaWxzWydwYXRoJ10gPSBwYXRoCi0gICAgbWFnaWMgPSBkYXRhWzo0XQotICAgIHJhd190aW1lc3RhbXAgPSBkYXRhWzQ6OF0KLSAgICByYXdfc2l6ZSA9IGRhdGFbODoxMl0KLSAgICBpZiBtYWdpYyAhPSBNQUdJQ19OVU1CRVI6Ci0gICAgICAgIG1lc3NhZ2UgPSAnYmFkIG1hZ2ljIG51bWJlciBpbiB7IXJ9OiB7IXJ9Jy5mb3JtYXQobmFtZSwgbWFnaWMpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKLSAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgKipleGNfZGV0YWlscykKLSAgICBlbGlmIGxlbihyYXdfdGltZXN0YW1wKSAhPSA0OgotICAgICAgICBtZXNzYWdlID0gJ3JlYWNoZWQgRU9GIHdoaWxlIHJlYWRpbmcgdGltZXN0YW1wIGluIHshcn0nLmZvcm1hdChuYW1lKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCi0gICAgICAgIHJhaXNlIEVPRkVycm9yKG1lc3NhZ2UpCi0gICAgZWxpZiBsZW4ocmF3X3NpemUpICE9IDQ6Ci0gICAgICAgIG1lc3NhZ2UgPSAncmVhY2hlZCBFT0Ygd2hpbGUgcmVhZGluZyBzaXplIG9mIHNvdXJjZSBpbiB7IXJ9Jy5mb3JtYXQobmFtZSkKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQotICAgICAgICByYWlzZSBFT0ZFcnJvcihtZXNzYWdlKQotICAgIGlmIHNvdXJjZV9zdGF0cyBpcyBub3QgTm9uZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc291cmNlX210aW1lID0gaW50KHNvdXJjZV9zdGF0c1snbXRpbWUnXSkKLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgX3JfbG9uZyhyYXdfdGltZXN0YW1wKSAhPSBzb3VyY2VfbXRpbWU6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICdieXRlY29kZSBpcyBzdGFsZSBmb3IgeyFyfScuZm9ybWF0KG5hbWUpCi0gICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQotICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsICoqZXhjX2RldGFpbHMpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNvdXJjZV9zaXplID0gc291cmNlX3N0YXRzWydzaXplJ10gJiAweEZGRkZGRkZGCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIF9yX2xvbmcocmF3X3NpemUpICE9IHNvdXJjZV9zaXplOgotICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdieXRlY29kZSBpcyBzdGFsZSBmb3IgeyFyfScuZm9ybWF0KG5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqZXhjX2RldGFpbHMpCi0gICAgcmV0dXJuIGRhdGFbMTI6XQotCi0KLWRlZiBfY29tcGlsZV9ieXRlY29kZShkYXRhLCBuYW1lPU5vbmUsIGJ5dGVjb2RlX3BhdGg9Tm9uZSwgc291cmNlX3BhdGg9Tm9uZSk6Ci0gICAgIiIiQ29tcGlsZSBieXRlY29kZSBhcyByZXR1cm5lZCBieSBfdmFsaWRhdGVfYnl0ZWNvZGVfaGVhZGVyKCkuIiIiCi0gICAgY29kZSA9IG1hcnNoYWwubG9hZHMoZGF0YSkKLSAgICBpZiBpc2luc3RhbmNlKGNvZGUsIF9jb2RlX3R5cGUpOgotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHshcn0nLCBieXRlY29kZV9wYXRoKQotICAgICAgICBpZiBzb3VyY2VfcGF0aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIF9pbXAuX2ZpeF9jb19maWxlbmFtZShjb2RlLCBzb3VyY2VfcGF0aCkKLSAgICAgICAgcmV0dXJuIGNvZGUKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignTm9uLWNvZGUgb2JqZWN0IGluIHshcn0nLmZvcm1hdChieXRlY29kZV9wYXRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1uYW1lLCBwYXRoPWJ5dGVjb2RlX3BhdGgpCi0KLWRlZiBfY29kZV90b19ieXRlY29kZShjb2RlLCBtdGltZT0wLCBzb3VyY2Vfc2l6ZT0wKToKLSAgICAiIiJDb21waWxlIGEgY29kZSBvYmplY3QgaW50byBieXRlY29kZSBmb3Igd3JpdGluZyBvdXQgdG8gYSBieXRlLWNvbXBpbGVkCi0gICAgZmlsZS4iIiIKLSAgICBkYXRhID0gYnl0ZWFycmF5KE1BR0lDX05VTUJFUikKLSAgICBkYXRhLmV4dGVuZChfd19sb25nKG10aW1lKSkKLSAgICBkYXRhLmV4dGVuZChfd19sb25nKHNvdXJjZV9zaXplKSkKLSAgICBkYXRhLmV4dGVuZChtYXJzaGFsLmR1bXBzKGNvZGUpKQotICAgIHJldHVybiBkYXRhCi0KLQotZGVmIGRlY29kZV9zb3VyY2Uoc291cmNlX2J5dGVzKToKLSAgICAiIiJEZWNvZGUgYnl0ZXMgcmVwcmVzZW50aW5nIHNvdXJjZSBjb2RlIGFuZCByZXR1cm4gdGhlIHN0cmluZy4KLQotICAgIFVuaXZlcnNhbCBuZXdsaW5lIHN1cHBvcnQgaXMgdXNlZCBpbiB0aGUgZGVjb2RpbmcuCi0gICAgIiIiCi0gICAgaW1wb3J0IHRva2VuaXplICAjIFRvIGF2b2lkIGJvb3RzdHJhcCBpc3N1ZXMuCi0gICAgc291cmNlX2J5dGVzX3JlYWRsaW5lID0gX2lvLkJ5dGVzSU8oc291cmNlX2J5dGVzKS5yZWFkbGluZQotICAgIGVuY29kaW5nID0gdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKHNvdXJjZV9ieXRlc19yZWFkbGluZSkKLSAgICBuZXdsaW5lX2RlY29kZXIgPSBfaW8uSW5jcmVtZW50YWxOZXdsaW5lRGVjb2RlcihOb25lLCBUcnVlKQotICAgIHJldHVybiBuZXdsaW5lX2RlY29kZXIuZGVjb2RlKHNvdXJjZV9ieXRlcy5kZWNvZGUoZW5jb2RpbmdbMF0pKQotCisgICAgICAgIHJldHVybiBfbG9hZChzcGVjKQogCiAjIE1vZHVsZSBzcGVjaWZpY2F0aW9ucyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKQEAgLTcwNCw3ICsyODYsNyBAQAogICAgICAgICBwYXNzCiAgICAgZWxzZToKICAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBfU3BlY01ldGhvZHMoc3BlYykubW9kdWxlX3JlcHIoKQorICAgICAgICAgICAgcmV0dXJuIF9tb2R1bGVfcmVwcl9mcm9tX3NwZWMoc3BlYykKIAogICAgICMgV2UgY291bGQgdXNlIG1vZHVsZS5fX2NsYXNzX18uX19uYW1lX18gaW5zdGVhZCBvZiAnbW9kdWxlJyBpbiB0aGUKICAgICAjIHZhcmlvdXMgcmVwciBwZXJtdXRhdGlvbnMuCkBAIC04MjUsMTQgKzQwNyw5IEBACiAgICAgZGVmIGNhY2hlZChzZWxmKToKICAgICAgICAgaWYgc2VsZi5fY2FjaGVkIGlzIE5vbmU6CiAgICAgICAgICAgICBpZiBzZWxmLm9yaWdpbiBpcyBub3QgTm9uZSBhbmQgc2VsZi5fc2V0X2ZpbGVhdHRyOgotICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gc2VsZi5vcmlnaW4KLSAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCh0dXBsZShTT1VSQ0VfU1VGRklYRVMpKToKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVkID0gY2FjaGVfZnJvbV9zb3VyY2UoZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsaWYgZmlsZW5hbWUuZW5kc3dpdGgodHVwbGUoQllURUNPREVfU1VGRklYRVMpKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVkID0gZmlsZW5hbWUKKyAgICAgICAgICAgICAgICBpZiBfYm9vdHN0cmFwX2V4dGVybmFsIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZWQgPSBfYm9vdHN0cmFwX2V4dGVybmFsLl9nZXRfY2FjaGVkKHNlbGYub3JpZ2luKQogICAgICAgICByZXR1cm4gc2VsZi5fY2FjaGVkCiAKICAgICBAY2FjaGVkLnNldHRlcgpAQCAtODU5LDYgKzQzNiwxMCBAQAogZGVmIHNwZWNfZnJvbV9sb2FkZXIobmFtZSwgbG9hZGVyLCAqLCBvcmlnaW49Tm9uZSwgaXNfcGFja2FnZT1Ob25lKToKICAgICAiIiJSZXR1cm4gYSBtb2R1bGUgc3BlYyBiYXNlZCBvbiB2YXJpb3VzIGxvYWRlciBtZXRob2RzLiIiIgogICAgIGlmIGhhc2F0dHIobG9hZGVyLCAnZ2V0X2ZpbGVuYW1lJyk6CisgICAgICAgIGlmIF9ib290c3RyYXBfZXh0ZXJuYWwgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24gPSBfYm9vdHN0cmFwX2V4dGVybmFsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uCisKICAgICAgICAgaWYgaXNfcGFja2FnZSBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIHNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKG5hbWUsIGxvYWRlcj1sb2FkZXIpCiAgICAgICAgIHNlYXJjaCA9IFtdIGlmIGlzX3BhY2thZ2UgZWxzZSBOb25lCkBAIC04ODEsNzAgKzQ2Miw2IEBACiBfUE9QVUxBVEUgPSBvYmplY3QoKQogCiAKLWRlZiBzcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihuYW1lLCBsb2NhdGlvbj1Ob25lLCAqLCBsb2FkZXI9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucz1fUE9QVUxBVEUpOgotICAgICIiIlJldHVybiBhIG1vZHVsZSBzcGVjIGJhc2VkIG9uIGEgZmlsZSBsb2NhdGlvbi4KLQotICAgIFRvIGluZGljYXRlIHRoYXQgdGhlIG1vZHVsZSBpcyBhIHBhY2thZ2UsIHNldAotICAgIHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIHRvIGEgbGlzdCBvZiBkaXJlY3RvcnkgcGF0aHMuICBBbgotICAgIGVtcHR5IGxpc3QgaXMgc3VmZmljaWVudCwgdGhvdWdoIGl0cyBub3Qgb3RoZXJ3aXNlIHVzZWZ1bCB0byB0aGUKLSAgICBpbXBvcnQgc3lzdGVtLgotCi0gICAgVGhlIGxvYWRlciBtdXN0IHRha2UgYSBzcGVjIGFzIGl0cyBvbmx5IF9faW5pdF9fKCkgYXJnLgotCi0gICAgIiIiCi0gICAgaWYgbG9jYXRpb24gaXMgTm9uZToKLSAgICAgICAgIyBUaGUgY2FsbGVyIG1heSBzaW1wbHkgd2FudCBhIHBhcnRpYWxseSBwb3B1bGF0ZWQgbG9jYXRpb24tCi0gICAgICAgICMgb3JpZW50ZWQgc3BlYy4gIFNvIHdlIHNldCB0aGUgbG9jYXRpb24gdG8gYSBib2d1cyB2YWx1ZSBhbmQKLSAgICAgICAgIyBmaWxsIGluIGFzIG11Y2ggYXMgd2UgY2FuLgotICAgICAgICBsb2NhdGlvbiA9ICc8dW5rbm93bj4nCi0gICAgICAgIGlmIGhhc2F0dHIobG9hZGVyLCAnZ2V0X2ZpbGVuYW1lJyk6Ci0gICAgICAgICAgICAjIEV4ZWN1dGlvbkxvYWRlcgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gbG9hZGVyLmdldF9maWxlbmFtZShuYW1lKQotICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICMgSWYgdGhlIGxvY2F0aW9uIGlzIG9uIHRoZSBmaWxlc3lzdGVtLCBidXQgZG9lc24ndCBhY3R1YWxseSBleGlzdCwKLSAgICAjIHdlIGNvdWxkIHJldHVybiBOb25lIGhlcmUsIGluZGljYXRpbmcgdGhhdCB0aGUgbG9jYXRpb24gaXMgbm90Ci0gICAgIyB2YWxpZC4gIEhvd2V2ZXIsIHdlIGRvbid0IGhhdmUgYSBnb29kIHdheSBvZiB0ZXN0aW5nIHNpbmNlIGFuCi0gICAgIyBpbmRpcmVjdCBsb2NhdGlvbiAoZS5nLiBhIHppcCBmaWxlIG9yIFVSTCkgd2lsbCBsb29rIGxpa2UgYQotICAgICMgbm9uLWV4aXN0ZW50IGZpbGUgcmVsYXRpdmUgdG8gdGhlIGZpbGVzeXN0ZW0uCi0KLSAgICBzcGVjID0gTW9kdWxlU3BlYyhuYW1lLCBsb2FkZXIsIG9yaWdpbj1sb2NhdGlvbikKLSAgICBzcGVjLl9zZXRfZmlsZWF0dHIgPSBUcnVlCi0KLSAgICAjIFBpY2sgYSBsb2FkZXIgaWYgb25lIHdhc24ndCBwcm92aWRlZC4KLSAgICBpZiBsb2FkZXIgaXMgTm9uZToKLSAgICAgICAgZm9yIGxvYWRlcl9jbGFzcywgc3VmZml4ZXMgaW4gX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCk6Ci0gICAgICAgICAgICBpZiBsb2NhdGlvbi5lbmRzd2l0aCh0dXBsZShzdWZmaXhlcykpOgotICAgICAgICAgICAgICAgIGxvYWRlciA9IGxvYWRlcl9jbGFzcyhuYW1lLCBsb2NhdGlvbikKLSAgICAgICAgICAgICAgICBzcGVjLmxvYWRlciA9IGxvYWRlcgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgIyBTZXQgc3VibW9kdWxlX3NlYXJjaF9wYXRocyBhcHByb3ByaWF0ZWx5LgotICAgIGlmIHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIGlzIF9QT1BVTEFURToKLSAgICAgICAgIyBDaGVjayB0aGUgbG9hZGVyLgotICAgICAgICBpZiBoYXNhdHRyKGxvYWRlciwgJ2lzX3BhY2thZ2UnKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpc19wYWNrYWdlID0gbG9hZGVyLmlzX3BhY2thZ2UobmFtZSkKLSAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIGlzX3BhY2thZ2U6Ci0gICAgICAgICAgICAgICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBbXQotICAgIGVsc2U6Ci0gICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucwotICAgIGlmIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPT0gW106Ci0gICAgICAgIGlmIGxvY2F0aW9uOgotICAgICAgICAgICAgZGlybmFtZSA9IF9wYXRoX3NwbGl0KGxvY2F0aW9uKVswXQotICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucy5hcHBlbmQoZGlybmFtZSkKLQotICAgIHJldHVybiBzcGVjCi0KLQogZGVmIF9zcGVjX2Zyb21fbW9kdWxlKG1vZHVsZSwgbG9hZGVyPU5vbmUsIG9yaWdpbj1Ob25lKToKICAgICAjIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgZm9yIHVzZSBpbiBfc2V0dXAoKS4KICAgICB0cnk6CkBAIC05OTAsMjU3ICs1MDcsMTkwIEBACiAgICAgcmV0dXJuIHNwZWMKIAogCi1jbGFzcyBfU3BlY01ldGhvZHM6CitkZWYgX2luaXRfbW9kdWxlX2F0dHJzKHNwZWMsIG1vZHVsZSwgKiwgb3ZlcnJpZGU9RmFsc2UpOgorICAgICMgVGhlIHBhc3NlZC1pbiBtb2R1bGUgbWF5IGJlIG5vdCBzdXBwb3J0IGF0dHJpYnV0ZSBhc3NpZ25tZW50LAorICAgICMgaW4gd2hpY2ggY2FzZSB3ZSBzaW1wbHkgZG9uJ3Qgc2V0IHRoZSBhdHRyaWJ1dGVzLgorICAgICMgX19uYW1lX18KKyAgICBpZiAob3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX25hbWVfXycsIE5vbmUpIGlzIE5vbmUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUuX19uYW1lX18gPSBzcGVjLm5hbWUKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICMgX19sb2FkZXJfXworICAgIGlmIG92ZXJyaWRlIG9yIGdldGF0dHIobW9kdWxlLCAnX19sb2FkZXJfXycsIE5vbmUpIGlzIE5vbmU6CisgICAgICAgIGxvYWRlciA9IHNwZWMubG9hZGVyCisgICAgICAgIGlmIGxvYWRlciBpcyBOb25lOgorICAgICAgICAgICAgIyBBIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaGFjay4KKyAgICAgICAgICAgIGlmIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgX2Jvb3RzdHJhcF9leHRlcm5hbCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisgICAgICAgICAgICAgICAgX05hbWVzcGFjZUxvYWRlciA9IF9ib290c3RyYXBfZXh0ZXJuYWwuX05hbWVzcGFjZUxvYWRlcgogCi0gICAgIiIiQ29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgc3BlYyBvYmplY3RzIHRvIHByb3ZpZGUgc3BlYy1zcGVjaWZpYwotICAgIG1ldGhvZHMuIiIiCisgICAgICAgICAgICAgICAgbG9hZGVyID0gX05hbWVzcGFjZUxvYWRlci5fX25ld19fKF9OYW1lc3BhY2VMb2FkZXIpCisgICAgICAgICAgICAgICAgbG9hZGVyLl9wYXRoID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucworICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IGxvYWRlcgorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgIyBfX3BhY2thZ2VfXworICAgIGlmIG92ZXJyaWRlIG9yIGdldGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nLCBOb25lKSBpcyBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBzcGVjLnBhcmVudAorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgIyBfX3NwZWNfXworICAgIHRyeToKKyAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gc3BlYworICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgcGFzcworICAgICMgX19wYXRoX18KKyAgICBpZiBvdmVycmlkZSBvciBnZXRhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJywgTm9uZSkgaXMgTm9uZToKKyAgICAgICAgaWYgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICMgX19maWxlX18vX19jYWNoZWRfXworICAgIGlmIHNwZWMuaGFzX2xvY2F0aW9uOgorICAgICAgICBpZiBvdmVycmlkZSBvciBnZXRhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJywgTm9uZSkgaXMgTm9uZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19maWxlX18gPSBzcGVjLm9yaWdpbgorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKIAotICAgICMgVGhlIHZhcmlvdXMgc3BlY19mcm9tXyogZnVuY3Rpb25zIGNvdWxkIGJlIG1hZGUgZmFjdG9yeSBtZXRob2RzIGhlcmUuCisgICAgICAgIGlmIG92ZXJyaWRlIG9yIGdldGF0dHIobW9kdWxlLCAnX19jYWNoZWRfXycsIE5vbmUpIGlzIE5vbmU6CisgICAgICAgICAgICBpZiBzcGVjLmNhY2hlZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX2NhY2hlZF9fID0gc3BlYy5jYWNoZWQKKyAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICByZXR1cm4gbW9kdWxlCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3BlYyk6Ci0gICAgICAgIHNlbGYuc3BlYyA9IHNwZWMKIAotICAgIGRlZiBtb2R1bGVfcmVwcihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSByZXByIHRvIHVzZSBmb3IgdGhlIG1vZHVsZS4iIiIKLSAgICAgICAgIyBXZSBtb3N0bHkgcmVwbGljYXRlIF9tb2R1bGVfcmVwcigpIHVzaW5nIHRoZSBzcGVjIGF0dHJpYnV0ZXMuCi0gICAgICAgIHNwZWMgPSBzZWxmLnNwZWMKLSAgICAgICAgbmFtZSA9ICc/JyBpZiBzcGVjLm5hbWUgaXMgTm9uZSBlbHNlIHNwZWMubmFtZQotICAgICAgICBpZiBzcGVjLm9yaWdpbiBpcyBOb25lOgotICAgICAgICAgICAgaWYgc3BlYy5sb2FkZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICByZXR1cm4gJzxtb2R1bGUgeyFyfT4nLmZvcm1hdChuYW1lKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gJzxtb2R1bGUgeyFyfSAoeyFyfSk+Jy5mb3JtYXQobmFtZSwgc3BlYy5sb2FkZXIpCitkZWYgbW9kdWxlX2Zyb21fc3BlYyhzcGVjKToKKyAgICAiIiJDcmVhdGUgYSBtb2R1bGUgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHNwZWMuIiIiCisgICAgIyBUeXBpY2FsbHkgbG9hZGVycyB3aWxsIG5vdCBpbXBsZW1lbnQgY3JlYXRlX21vZHVsZSgpLgorICAgIG1vZHVsZSA9IE5vbmUKKyAgICBpZiBoYXNhdHRyKHNwZWMubG9hZGVyLCAnY3JlYXRlX21vZHVsZScpOgorICAgICAgICAjIElmIGNyZWF0ZV9tb2R1bGUoKSByZXR1cm5zIGBOb25lYCB0aGVuIGl0IG1lYW5zIGRlZmF1bHQKKyAgICAgICAgIyBtb2R1bGUgY3JlYXRpb24gc2hvdWxkIGJlIHVzZWQuCisgICAgICAgIG1vZHVsZSA9IHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoc3BlYykKKyAgICBlbGlmIGhhc2F0dHIoc3BlYy5sb2FkZXIsICdleGVjX21vZHVsZScpOgorICAgICAgICBfd2FybmluZ3Mud2Fybignc3RhcnRpbmcgaW4gUHl0aG9uIDMuNiwgbG9hZGVycyBkZWZpbmluZyBleGVjX21vZHVsZSgpICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ211c3QgYWxzbyBkZWZpbmUgY3JlYXRlX21vZHVsZSgpJywKKyAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCisgICAgaWYgbW9kdWxlIGlzIE5vbmU6CisgICAgICAgIG1vZHVsZSA9IF9uZXdfbW9kdWxlKHNwZWMubmFtZSkKKyAgICBfaW5pdF9tb2R1bGVfYXR0cnMoc3BlYywgbW9kdWxlKQorICAgIHJldHVybiBtb2R1bGUKKworCitkZWYgX21vZHVsZV9yZXByX2Zyb21fc3BlYyhzcGVjKToKKyAgICAiIiJSZXR1cm4gdGhlIHJlcHIgdG8gdXNlIGZvciB0aGUgbW9kdWxlLiIiIgorICAgICMgV2UgbW9zdGx5IHJlcGxpY2F0ZSBfbW9kdWxlX3JlcHIoKSB1c2luZyB0aGUgc3BlYyBhdHRyaWJ1dGVzLgorICAgIG5hbWUgPSAnPycgaWYgc3BlYy5uYW1lIGlzIE5vbmUgZWxzZSBzcGVjLm5hbWUKKyAgICBpZiBzcGVjLm9yaWdpbiBpcyBOb25lOgorICAgICAgICBpZiBzcGVjLmxvYWRlciBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0+Jy5mb3JtYXQobmFtZSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHNwZWMuaGFzX2xvY2F0aW9uOgotICAgICAgICAgICAgICAgIHJldHVybiAnPG1vZHVsZSB7IXJ9IGZyb20geyFyfT4nLmZvcm1hdChuYW1lLCBzcGVjLm9yaWdpbikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gKHt9KT4nLmZvcm1hdChzcGVjLm5hbWUsIHNwZWMub3JpZ2luKQorICAgICAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gKHshcn0pPicuZm9ybWF0KG5hbWUsIHNwZWMubG9hZGVyKQorICAgIGVsc2U6CisgICAgICAgIGlmIHNwZWMuaGFzX2xvY2F0aW9uOgorICAgICAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gZnJvbSB7IXJ9PicuZm9ybWF0KG5hbWUsIHNwZWMub3JpZ2luKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gKHt9KT4nLmZvcm1hdChzcGVjLm5hbWUsIHNwZWMub3JpZ2luKQogCi0gICAgZGVmIGluaXRfbW9kdWxlX2F0dHJzKHNlbGYsIG1vZHVsZSwgKiwgX292ZXJyaWRlPUZhbHNlLCBfZm9yY2VfbmFtZT1UcnVlKToKLSAgICAgICAgIiIiU2V0IHRoZSBtb2R1bGUncyBhdHRyaWJ1dGVzLgogCi0gICAgICAgIEFsbCBtaXNzaW5nIGltcG9ydC1yZWxhdGVkIG1vZHVsZSBhdHRyaWJ1dGVzIHdpbGwgYmUgc2V0LiAgSGVyZQotICAgICAgICBpcyBob3cgdGhlIHNwZWMgYXR0cmlidXRlcyBtYXAgb250byB0aGUgbW9kdWxlOgorIyBVc2VkIGJ5IGltcG9ydGxpYi5yZWxvYWQoKSBhbmQgX2xvYWRfbW9kdWxlX3NoaW0oKS4KK2RlZiBfZXhlYyhzcGVjLCBtb2R1bGUpOgorICAgICIiIkV4ZWN1dGUgdGhlIHNwZWMgaW4gYW4gZXhpc3RpbmcgbW9kdWxlJ3MgbmFtZXNwYWNlLiIiIgorICAgIG5hbWUgPSBzcGVjLm5hbWUKKyAgICBfaW1wLmFjcXVpcmVfbG9jaygpCisgICAgd2l0aCBfTW9kdWxlTG9ja01hbmFnZXIobmFtZSk6CisgICAgICAgIGlmIHN5cy5tb2R1bGVzLmdldChuYW1lKSBpcyBub3QgbW9kdWxlOgorICAgICAgICAgICAgbXNnID0gJ21vZHVsZSB7IXJ9IG5vdCBpbiBzeXMubW9kdWxlcycuZm9ybWF0KG5hbWUpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkKKyAgICAgICAgaWYgc3BlYy5sb2FkZXIgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignbWlzc2luZyBsb2FkZXInLCBuYW1lPXNwZWMubmFtZSkKKyAgICAgICAgICAgICMgbmFtZXNwYWNlIHBhY2thZ2UKKyAgICAgICAgICAgIF9pbml0X21vZHVsZV9hdHRycyhzcGVjLCBtb2R1bGUsIG92ZXJyaWRlPVRydWUpCisgICAgICAgICAgICByZXR1cm4gbW9kdWxlCisgICAgICAgIF9pbml0X21vZHVsZV9hdHRycyhzcGVjLCBtb2R1bGUsIG92ZXJyaWRlPVRydWUpCisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNwZWMubG9hZGVyLCAnZXhlY19tb2R1bGUnKToKKyAgICAgICAgICAgICMgKGlzc3VlMTk3MTMpIE9uY2UgQnVpbHRpbkltcG9ydGVyIGFuZCBFeHRlbnNpb25GaWxlTG9hZGVyCisgICAgICAgICAgICAjIGhhdmUgZXhlY19tb2R1bGUoKSBpbXBsZW1lbnRlZCwgd2UgY2FuIGFkZCBhIGRlcHJlY2F0aW9uCisgICAgICAgICAgICAjIHdhcm5pbmcgaGVyZS4KKyAgICAgICAgICAgIHNwZWMubG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzcGVjLmxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCisgICAgcmV0dXJuIHN5cy5tb2R1bGVzW25hbWVdCiAKLSAgICAgICAgc3BlYy5uYW1lIC0+IG1vZHVsZS5fX25hbWVfXwotICAgICAgICBzcGVjLmxvYWRlciAtPiBtb2R1bGUuX19sb2FkZXJfXwotICAgICAgICBzcGVjLnBhcmVudCAtPiBtb2R1bGUuX19wYWNrYWdlX18KLSAgICAgICAgc3BlYyAtPiBtb2R1bGUuX19zcGVjX18KIAotICAgICAgICBPcHRpb25hbDoKLSAgICAgICAgc3BlYy5vcmlnaW4gLT4gbW9kdWxlLl9fZmlsZV9fIChpZiBzcGVjLnNldF9maWxlYXR0ciBpcyB0cnVlKQotICAgICAgICBzcGVjLmNhY2hlZCAtPiBtb2R1bGUuX19jYWNoZWRfXyAoaWYgX19maWxlX18gYWxzbyBzZXQpCi0gICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgLT4gbW9kdWxlLl9fcGF0aF9fIChpZiBzZXQpCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNwZWMgPSBzZWxmLnNwZWMKLQotICAgICAgICAjIFRoZSBwYXNzZWQgaW4gbW9kdWxlIG1heSBiZSBub3Qgc3VwcG9ydCBhdHRyaWJ1dGUgYXNzaWdubWVudCwKLSAgICAgICAgIyBpbiB3aGljaCBjYXNlIHdlIHNpbXBseSBkb24ndCBzZXQgdGhlIGF0dHJpYnV0ZXMuCi0KLSAgICAgICAgIyBfX25hbWVfXwotICAgICAgICBpZiAoX292ZXJyaWRlIG9yIF9mb3JjZV9uYW1lIG9yCi0gICAgICAgICAgICBnZXRhdHRyKG1vZHVsZSwgJ19fbmFtZV9fJywgTm9uZSkgaXMgTm9uZSk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlLl9fbmFtZV9fID0gc3BlYy5uYW1lCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgICMgX19sb2FkZXJfXwotICAgICAgICBpZiBfb3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJywgTm9uZSkgaXMgTm9uZToKLSAgICAgICAgICAgIGxvYWRlciA9IHNwZWMubG9hZGVyCi0gICAgICAgICAgICBpZiBsb2FkZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAjIEEgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBoYWNrLgotICAgICAgICAgICAgICAgIGlmIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGxvYWRlciA9IF9OYW1lc3BhY2VMb2FkZXIuX19uZXdfXyhfTmFtZXNwYWNlTG9hZGVyKQotICAgICAgICAgICAgICAgICAgICBsb2FkZXIuX3BhdGggPSBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBsb2FkZXIKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgIyBfX3BhY2thZ2VfXwotICAgICAgICBpZiBfb3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycsIE5vbmUpIGlzIE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gc3BlYy5wYXJlbnQKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgIyBfX3NwZWNfXworZGVmIF9sb2FkX2JhY2t3YXJkX2NvbXBhdGlibGUoc3BlYyk6CisgICAgIyAoaXNzdWUxOTcxMykgT25jZSBCdWlsdGluSW1wb3J0ZXIgYW5kIEV4dGVuc2lvbkZpbGVMb2FkZXIKKyAgICAjIGhhdmUgZXhlY19tb2R1bGUoKSBpbXBsZW1lbnRlZCwgd2UgY2FuIGFkZCBhIGRlcHJlY2F0aW9uCisgICAgIyB3YXJuaW5nIGhlcmUuCisgICAgc3BlYy5sb2FkZXIubG9hZF9tb2R1bGUoc3BlYy5uYW1lKQorICAgICMgVGhlIG1vZHVsZSBtdXN0IGJlIGluIHN5cy5tb2R1bGVzIGF0IHRoaXMgcG9pbnQhCisgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbc3BlYy5uYW1lXQorICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19sb2FkZXJfXycsIE5vbmUpIGlzIE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc3BlYy5sb2FkZXIKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nLCBOb25lKSBpcyBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIFNpbmNlIG1vZHVsZS5fX3BhdGhfXyBtYXkgbm90IGxpbmUgdXAgd2l0aAorICAgICAgICAgICAgIyBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfcGF0aHMsIHdlIGNhbid0IG5lY2Vzc2FyaWx5IHJlbHkKKyAgICAgICAgICAgICMgb24gc3BlYy5wYXJlbnQgaGVyZS4KKyAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX25hbWVfXworICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBzcGVjLm5hbWUucnBhcnRpdGlvbignLicpWzBdCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICBpZiBnZXRhdHRyKG1vZHVsZSwgJ19fc3BlY19fJywgTm9uZSkgaXMgTm9uZToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gc3BlYwogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCisgICAgcmV0dXJuIG1vZHVsZQogCi0gICAgICAgICMgX19wYXRoX18KLSAgICAgICAgaWYgX292ZXJyaWRlIG9yIGdldGF0dHIobW9kdWxlLCAnX19wYXRoX18nLCBOb25lKSBpcyBOb25lOgotICAgICAgICAgICAgaWYgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMKLSAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKK2RlZiBfbG9hZF91bmxvY2tlZChzcGVjKToKKyAgICAjIEEgaGVscGVyIGZvciBkaXJlY3QgdXNlIGJ5IHRoZSBpbXBvcnQgc3lzdGVtLgorICAgIGlmIHNwZWMubG9hZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAjIG5vdCBhIG5hbWVzcGFjZSBwYWNrYWdlCisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNwZWMubG9hZGVyLCAnZXhlY19tb2R1bGUnKToKKyAgICAgICAgICAgIHJldHVybiBfbG9hZF9iYWNrd2FyZF9jb21wYXRpYmxlKHNwZWMpCiAKLSAgICAgICAgaWYgc3BlYy5oYXNfbG9jYXRpb246Ci0gICAgICAgICAgICAjIF9fZmlsZV9fCi0gICAgICAgICAgICBpZiBfb3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX2ZpbGVfXycsIE5vbmUpIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBtb2R1bGUuX19maWxlX18gPSBzcGVjLm9yaWdpbgotICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgICAgICAjIF9fY2FjaGVkX18KLSAgICAgICAgICAgIGlmIF9vdmVycmlkZSBvciBnZXRhdHRyKG1vZHVsZSwgJ19fY2FjaGVkX18nLCBOb25lKSBpcyBOb25lOgotICAgICAgICAgICAgICAgIGlmIHNwZWMuY2FjaGVkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUuX19jYWNoZWRfXyA9IHNwZWMuY2FjaGVkCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLQotICAgIGRlZiBjcmVhdGUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBhIG5ldyBtb2R1bGUgdG8gYmUgbG9hZGVkLgotCi0gICAgICAgIFRoZSBpbXBvcnQtcmVsYXRlZCBtb2R1bGUgYXR0cmlidXRlcyBhcmUgYWxzbyBzZXQgd2l0aCB0aGUKLSAgICAgICAgYXBwcm9wcmlhdGUgdmFsdWVzIGZyb20gdGhlIHNwZWMuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNwZWMgPSBzZWxmLnNwZWMKLSAgICAgICAgIyBUeXBpY2FsbHkgbG9hZGVycyB3aWxsIG5vdCBpbXBsZW1lbnQgY3JlYXRlX21vZHVsZSgpLgotICAgICAgICBpZiBoYXNhdHRyKHNwZWMubG9hZGVyLCAnY3JlYXRlX21vZHVsZScpOgotICAgICAgICAgICAgIyBJZiBjcmVhdGVfbW9kdWxlKCkgcmV0dXJucyBgTm9uZWAgaXQgbWVhbnMgdGhlIGRlZmF1bHQKLSAgICAgICAgICAgICMgbW9kdWxlIGNyZWF0aW9uIHNob3VsZCBiZSB1c2VkLgotICAgICAgICAgICAgbW9kdWxlID0gc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZShzcGVjKQorICAgIG1vZHVsZSA9IG1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICB3aXRoIF9pbnN0YWxsZWRfc2FmZWx5KG1vZHVsZSk6CisgICAgICAgIGlmIHNwZWMubG9hZGVyIGlzIE5vbmU6CisgICAgICAgICAgICBpZiBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ21pc3NpbmcgbG9hZGVyJywgbmFtZT1zcGVjLm5hbWUpCisgICAgICAgICAgICAjIEEgbmFtZXNwYWNlIHBhY2thZ2Ugc28gZG8gbm90aGluZy4KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1vZHVsZSA9IE5vbmUKLSAgICAgICAgaWYgbW9kdWxlIGlzIE5vbmU6Ci0gICAgICAgICAgICAjIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBvcGVuKCkgaXMgZXZlciBjYWxsZWQgYXMgdGhlICdpbycKLSAgICAgICAgICAgICMgbW9kdWxlIGltcGxpY2l0bHkgaW1wb3J0cyAnbG9jYWxlJyBhbmQgd291bGQgb3RoZXJ3aXNlCi0gICAgICAgICAgICAjIHRyaWdnZXIgYW4gaW5maW5pdGUgbG9vcC4KLSAgICAgICAgICAgIG1vZHVsZSA9IF9uZXdfbW9kdWxlKHNwZWMubmFtZSkKLSAgICAgICAgc2VsZi5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUpCi0gICAgICAgIHJldHVybiBtb2R1bGUKKyAgICAgICAgICAgIHNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKIAotICAgIGRlZiBfZXhlYyhzZWxmLCBtb2R1bGUpOgotICAgICAgICAiIiJEbyBldmVyeXRoaW5nIG5lY2Vzc2FyeSB0byBleGVjdXRlIHRoZSBtb2R1bGUuCisgICAgIyBXZSBkb24ndCBlbnN1cmUgdGhhdCB0aGUgaW1wb3J0LXJlbGF0ZWQgbW9kdWxlIGF0dHJpYnV0ZXMgZ2V0CisgICAgIyBzZXQgaW4gdGhlIHN5cy5tb2R1bGVzIHJlcGxhY2VtZW50IGNhc2UuICBTdWNoIG1vZHVsZXMgYXJlIG9uCisgICAgIyB0aGVpciBvd24uCisgICAgcmV0dXJuIHN5cy5tb2R1bGVzW3NwZWMubmFtZV0KIAotICAgICAgICBUaGUgbmFtZXNwYWNlIG9mIGBtb2R1bGVgIGlzIHVzZWQgYXMgdGhlIHRhcmdldCBvZiBleGVjdXRpb24uCi0gICAgICAgIFRoaXMgbWV0aG9kIHVzZXMgdGhlIGxvYWRlcidzIGBleGVjX21vZHVsZSgpYCBtZXRob2QuCisjIEEgbWV0aG9kIHVzZWQgZHVyaW5nIHRlc3Rpbmcgb2YgX2xvYWRfdW5sb2NrZWQoKSBhbmQgYnkKKyMgX2xvYWRfbW9kdWxlX3NoaW0oKS4KK2RlZiBfbG9hZChzcGVjKToKKyAgICAiIiJSZXR1cm4gYSBuZXcgbW9kdWxlIG9iamVjdCwgbG9hZGVkIGJ5IHRoZSBzcGVjJ3MgbG9hZGVyLgogCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLnNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKKyAgICBUaGUgbW9kdWxlIGlzIG5vdCBhZGRlZCB0byBpdHMgcGFyZW50LgogCi0gICAgIyBVc2VkIGJ5IGltcG9ydGxpYi5yZWxvYWQoKSBhbmQgX2xvYWRfbW9kdWxlX3NoaW0oKS4KLSAgICBkZWYgZXhlYyhzZWxmLCBtb2R1bGUpOgotICAgICAgICAiIiJFeGVjdXRlIHRoZSBzcGVjIGluIGFuIGV4aXN0aW5nIG1vZHVsZSdzIG5hbWVzcGFjZS4iIiIKLSAgICAgICAgbmFtZSA9IHNlbGYuc3BlYy5uYW1lCi0gICAgICAgIF9pbXAuYWNxdWlyZV9sb2NrKCkKLSAgICAgICAgd2l0aCBfTW9kdWxlTG9ja01hbmFnZXIobmFtZSk6Ci0gICAgICAgICAgICBpZiBzeXMubW9kdWxlcy5nZXQobmFtZSkgaXMgbm90IG1vZHVsZToKLSAgICAgICAgICAgICAgICBtc2cgPSAnbW9kdWxlIHshcn0gbm90IGluIHN5cy5tb2R1bGVzJy5mb3JtYXQobmFtZSkKLSAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkKLSAgICAgICAgICAgIGlmIHNlbGYuc3BlYy5sb2FkZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ21pc3NpbmcgbG9hZGVyJywgbmFtZT1zZWxmLnNwZWMubmFtZSkKLSAgICAgICAgICAgICAgICAjIG5hbWVzcGFjZSBwYWNrYWdlCi0gICAgICAgICAgICAgICAgc2VsZi5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUsIF9vdmVycmlkZT1UcnVlKQotICAgICAgICAgICAgICAgIHJldHVybiBtb2R1bGUKLSAgICAgICAgICAgIHNlbGYuaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlLCBfb3ZlcnJpZGU9VHJ1ZSkKLSAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYuc3BlYy5sb2FkZXIsICdleGVjX21vZHVsZScpOgotICAgICAgICAgICAgICAgICMgKGlzc3VlMTk3MTMpIE9uY2UgQnVpbHRpbkltcG9ydGVyIGFuZCBFeHRlbnNpb25GaWxlTG9hZGVyCi0gICAgICAgICAgICAgICAgIyBoYXZlIGV4ZWNfbW9kdWxlKCkgaW1wbGVtZW50ZWQsIHdlIGNhbiBhZGQgYSBkZXByZWNhdGlvbgotICAgICAgICAgICAgICAgICMgd2FybmluZyBoZXJlLgotICAgICAgICAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZXhlYyhtb2R1bGUpCi0gICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tuYW1lXQorICAgIElmIGEgbW9kdWxlIGlzIGFscmVhZHkgaW4gc3lzLm1vZHVsZXMsIHRoYXQgZXhpc3RpbmcgbW9kdWxlIGdldHMKKyAgICBjbG9iYmVyZWQuCiAKLSAgICBkZWYgX2xvYWRfYmFja3dhcmRfY29tcGF0aWJsZShzZWxmKToKLSAgICAgICAgIyAoaXNzdWUxOTcxMykgT25jZSBCdWlsdGluSW1wb3J0ZXIgYW5kIEV4dGVuc2lvbkZpbGVMb2FkZXIKLSAgICAgICAgIyBoYXZlIGV4ZWNfbW9kdWxlKCkgaW1wbGVtZW50ZWQsIHdlIGNhbiBhZGQgYSBkZXByZWNhdGlvbgotICAgICAgICAjIHdhcm5pbmcgaGVyZS4KLSAgICAgICAgc3BlYyA9IHNlbGYuc3BlYwotICAgICAgICBzcGVjLmxvYWRlci5sb2FkX21vZHVsZShzcGVjLm5hbWUpCi0gICAgICAgICMgVGhlIG1vZHVsZSBtdXN0IGJlIGluIHN5cy5tb2R1bGVzIGF0IHRoaXMgcG9pbnQhCi0gICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW3NwZWMubmFtZV0KLSAgICAgICAgaWYgZ2V0YXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJywgTm9uZSkgaXMgTm9uZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNwZWMubG9hZGVyCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICBpZiBnZXRhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJywgTm9uZSkgaXMgTm9uZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIFNpbmNlIG1vZHVsZS5fX3BhdGhfXyBtYXkgbm90IGxpbmUgdXAgd2l0aAotICAgICAgICAgICAgICAgICMgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX3BhdGhzLCB3ZSBjYW4ndCBuZWNlc3NhcmlseSByZWx5Ci0gICAgICAgICAgICAgICAgIyBvbiBzcGVjLnBhcmVudCBoZXJlLgotICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX25hbWVfXwotICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6Ci0gICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IHNwZWMubmFtZS5ycGFydGl0aW9uKCcuJylbMF0KLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19zcGVjX18nLCBOb25lKSBpcyBOb25lOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1vZHVsZS5fX3NwZWNfXyA9IHNwZWMKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHJldHVybiBtb2R1bGUKLQotICAgIGRlZiBfbG9hZF91bmxvY2tlZChzZWxmKToKLSAgICAgICAgIyBBIGhlbHBlciBmb3IgZGlyZWN0IHVzZSBieSB0aGUgaW1wb3J0IHN5c3RlbS4KLSAgICAgICAgaWYgc2VsZi5zcGVjLmxvYWRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICMgbm90IGEgbmFtZXNwYWNlIHBhY2thZ2UKLSAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYuc3BlYy5sb2FkZXIsICdleGVjX21vZHVsZScpOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9sb2FkX2JhY2t3YXJkX2NvbXBhdGlibGUoKQotCi0gICAgICAgIG1vZHVsZSA9IHNlbGYuY3JlYXRlKCkKLSAgICAgICAgd2l0aCBfaW5zdGFsbGVkX3NhZmVseShtb2R1bGUpOgotICAgICAgICAgICAgaWYgc2VsZi5zcGVjLmxvYWRlciBpcyBOb25lOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignbWlzc2luZyBsb2FkZXInLCBuYW1lPXNlbGYuc3BlYy5uYW1lKQotICAgICAgICAgICAgICAgICMgQSBuYW1lc3BhY2UgcGFja2FnZSBzbyBkbyBub3RoaW5nLgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9leGVjKG1vZHVsZSkKLQotICAgICAgICAjIFdlIGRvbid0IGVuc3VyZSB0aGF0IHRoZSBpbXBvcnQtcmVsYXRlZCBtb2R1bGUgYXR0cmlidXRlcyBnZXQKLSAgICAgICAgIyBzZXQgaW4gdGhlIHN5cy5tb2R1bGVzIHJlcGxhY2VtZW50IGNhc2UuICBTdWNoIG1vZHVsZXMgYXJlIG9uCi0gICAgICAgICMgdGhlaXIgb3duLgotICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbc2VsZi5zcGVjLm5hbWVdCi0KLSAgICAjIEEgbWV0aG9kIHVzZWQgZHVyaW5nIHRlc3Rpbmcgb2YgX2xvYWRfdW5sb2NrZWQoKSBhbmQgYnkKLSAgICAjIF9sb2FkX21vZHVsZV9zaGltKCkuCi0gICAgZGVmIGxvYWQoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBhIG5ldyBtb2R1bGUgb2JqZWN0LCBsb2FkZWQgYnkgdGhlIHNwZWMncyBsb2FkZXIuCi0KLSAgICAgICAgVGhlIG1vZHVsZSBpcyBub3QgYWRkZWQgdG8gaXRzIHBhcmVudC4KLQotICAgICAgICBJZiBhIG1vZHVsZSBpcyBhbHJlYWR5IGluIHN5cy5tb2R1bGVzLCB0aGF0IGV4aXN0aW5nIG1vZHVsZSBnZXRzCi0gICAgICAgIGNsb2JiZXJlZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgX2ltcC5hY3F1aXJlX2xvY2soKQotICAgICAgICB3aXRoIF9Nb2R1bGVMb2NrTWFuYWdlcihzZWxmLnNwZWMubmFtZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fbG9hZF91bmxvY2tlZCgpCi0KLQotZGVmIF9maXhfdXBfbW9kdWxlKG5zLCBuYW1lLCBwYXRobmFtZSwgY3BhdGhuYW1lPU5vbmUpOgotICAgICMgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KCkuCi0gICAgbG9hZGVyID0gbnMuZ2V0KCdfX2xvYWRlcl9fJykKLSAgICBzcGVjID0gbnMuZ2V0KCdfX3NwZWNfXycpCi0gICAgaWYgbm90IGxvYWRlcjoKLSAgICAgICAgaWYgc3BlYzoKLSAgICAgICAgICAgIGxvYWRlciA9IHNwZWMubG9hZGVyCi0gICAgICAgIGVsaWYgcGF0aG5hbWUgPT0gY3BhdGhuYW1lOgotICAgICAgICAgICAgbG9hZGVyID0gU291cmNlbGVzc0ZpbGVMb2FkZXIobmFtZSwgcGF0aG5hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2FkZXIgPSBTb3VyY2VGaWxlTG9hZGVyKG5hbWUsIHBhdGhuYW1lKQotICAgIGlmIG5vdCBzcGVjOgotICAgICAgICBzcGVjID0gc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24obmFtZSwgcGF0aG5hbWUsIGxvYWRlcj1sb2FkZXIpCi0gICAgdHJ5OgotICAgICAgICBuc1snX19zcGVjX18nXSA9IHNwZWMKLSAgICAgICAgbnNbJ19fbG9hZGVyX18nXSA9IGxvYWRlcgotICAgICAgICBuc1snX19maWxlX18nXSA9IHBhdGhuYW1lCi0gICAgICAgIG5zWydfX2NhY2hlZF9fJ10gPSBjcGF0aG5hbWUKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAjIE5vdCBpbXBvcnRhbnQgZW5vdWdoIHRvIHJlcG9ydC4KLSAgICAgICAgcGFzcworICAgICIiIgorICAgIF9pbXAuYWNxdWlyZV9sb2NrKCkKKyAgICB3aXRoIF9Nb2R1bGVMb2NrTWFuYWdlcihzcGVjLm5hbWUpOgorICAgICAgICByZXR1cm4gX2xvYWRfdW5sb2NrZWQoc3BlYykKIAogCiAjIExvYWRlcnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0xMjg1LDE2ICs3MzUsMTcgQEAKICAgICAgICAgcmV0dXJuIHNwZWMubG9hZGVyIGlmIHNwZWMgaXMgbm90IE5vbmUgZWxzZSBOb25lCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBAX3JlcXVpcmVzX2J1aWx0aW4KLSAgICBkZWYgbG9hZF9tb2R1bGUoY2xzLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIkxvYWQgYSBidWlsdC1pbiBtb2R1bGUuIiIiCi0gICAgICAgICMgT25jZSBhbiBleGVjX21vZHVsZSgpIGltcGxlbWVudGF0aW9uIGlzIGFkZGVkIHdlIGNhbiBhbHNvCi0gICAgICAgICMgYWRkIGEgZGVwcmVjYXRpb24gd2FybmluZyBoZXJlLgotICAgICAgICB3aXRoIF9NYW5hZ2VSZWxvYWQoZnVsbG5hbWUpOgotICAgICAgICAgICAgbW9kdWxlID0gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmluaXRfYnVpbHRpbiwgZnVsbG5hbWUpCi0gICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gY2xzCi0gICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9ICcnCi0gICAgICAgIHJldHVybiBtb2R1bGUKKyAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgYnVpbHQtaW4gbW9kdWxlIiIiCisgICAgICAgIGlmIHNwZWMubmFtZSBub3QgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ3shcn0gaXMgbm90IGEgYnVpbHQtaW4gbW9kdWxlJy5mb3JtYXQoc3BlYy5uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9c3BlYy5uYW1lKQorICAgICAgICByZXR1cm4gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmNyZWF0ZV9idWlsdGluLCBzcGVjKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgICIiIkV4ZWMgYSBidWlsdC1pbiBtb2R1bGUiIiIKKyAgICAgICAgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmV4ZWNfYnVpbHRpbiwgbW9kdWxlKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgQF9yZXF1aXJlc19idWlsdGluCkBAIC0xMzE0LDYgKzc2NSw4IEBACiAgICAgICAgICIiIlJldHVybiBGYWxzZSBhcyBidWlsdC1pbiBtb2R1bGVzIGFyZSBuZXZlciBwYWNrYWdlcy4iIiIKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKyAgICBsb2FkX21vZHVsZSA9IGNsYXNzbWV0aG9kKF9sb2FkX21vZHVsZV9zaGltKQorCiAKIGNsYXNzIEZyb3plbkltcG9ydGVyOgogCkBAIC0xMzQ5LDYgKzgwMiwxMCBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIGNscyBpZiBfaW1wLmlzX2Zyb3plbihmdWxsbmFtZSkgZWxzZSBOb25lCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgY3JlYXRlX21vZHVsZShjbHMsIHNwZWMpOgorICAgICAgICAiIiJVc2UgZGVmYXVsdCBzZW1hbnRpY3MgZm9yIG1vZHVsZSBjcmVhdGlvbi4iIiIKKwogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgZXhlY19tb2R1bGUobW9kdWxlKToKICAgICAgICAgbmFtZSA9IG1vZHVsZS5fX3NwZWNfXy5uYW1lCkBAIC0xMzg2LDczMSArODQzLDYgQEAKICAgICAgICAgcmV0dXJuIF9pbXAuaXNfZnJvemVuX3BhY2thZ2UoZnVsbG5hbWUpCiAKIAotY2xhc3MgV2luZG93c1JlZ2lzdHJ5RmluZGVyOgotCi0gICAgIiIiTWV0YSBwYXRoIGZpbmRlciBmb3IgbW9kdWxlcyBkZWNsYXJlZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4iIiIKLQotICAgIFJFR0lTVFJZX0tFWSA9ICgKLSAgICAgICAgJ1NvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXHtzeXNfdmVyc2lvbn0nCi0gICAgICAgICdcXE1vZHVsZXNcXHtmdWxsbmFtZX0nKQotICAgIFJFR0lTVFJZX0tFWV9ERUJVRyA9ICgKLSAgICAgICAgJ1NvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXHtzeXNfdmVyc2lvbn0nCi0gICAgICAgICdcXE1vZHVsZXNcXHtmdWxsbmFtZX1cXERlYnVnJykKLSAgICBERUJVR19CVUlMRCA9IEZhbHNlICAjIENoYW5nZWQgaW4gX3NldHVwKCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfb3Blbl9yZWdpc3RyeShjbHMsIGtleSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBfd2lucmVnLk9wZW5LZXkoX3dpbnJlZy5IS0VZX0NVUlJFTlRfVVNFUiwga2V5KQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBfd2lucmVnLk9wZW5LZXkoX3dpbnJlZy5IS0VZX0xPQ0FMX01BQ0hJTkUsIGtleSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfc2VhcmNoX3JlZ2lzdHJ5KGNscywgZnVsbG5hbWUpOgotICAgICAgICBpZiBjbHMuREVCVUdfQlVJTEQ6Ci0gICAgICAgICAgICByZWdpc3RyeV9rZXkgPSBjbHMuUkVHSVNUUllfS0VZX0RFQlVHCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZWdpc3RyeV9rZXkgPSBjbHMuUkVHSVNUUllfS0VZCi0gICAgICAgIGtleSA9IHJlZ2lzdHJ5X2tleS5mb3JtYXQoZnVsbG5hbWU9ZnVsbG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzX3ZlcnNpb249c3lzLnZlcnNpb25bOjNdKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIGNscy5fb3Blbl9yZWdpc3RyeShrZXkpIGFzIGhrZXk6Ci0gICAgICAgICAgICAgICAgZmlsZXBhdGggPSBfd2lucmVnLlF1ZXJ5VmFsdWUoaGtleSwgJycpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIGZpbGVwYXRoCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZmluZF9zcGVjKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSwgdGFyZ2V0PU5vbmUpOgotICAgICAgICBmaWxlcGF0aCA9IGNscy5fc2VhcmNoX3JlZ2lzdHJ5KGZ1bGxuYW1lKQotICAgICAgICBpZiBmaWxlcGF0aCBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgX3BhdGhfc3RhdChmaWxlcGF0aCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBmb3IgbG9hZGVyLCBzdWZmaXhlcyBpbiBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKToKLSAgICAgICAgICAgIGlmIGZpbGVwYXRoLmVuZHN3aXRoKHR1cGxlKHN1ZmZpeGVzKSk6Ci0gICAgICAgICAgICAgICAgc3BlYyA9IHNwZWNfZnJvbV9sb2FkZXIoZnVsbG5hbWUsIGxvYWRlcihmdWxsbmFtZSwgZmlsZXBhdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbj1maWxlcGF0aCkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3BlYwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6Ci0gICAgICAgICIiIkZpbmQgbW9kdWxlIG5hbWVkIGluIHRoZSByZWdpc3RyeS4KLQotICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGV4ZWNfbW9kdWxlKCkgaW5zdGVhZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgc3BlYyA9IGNscy5maW5kX3NwZWMoZnVsbG5hbWUsIHBhdGgpCi0gICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc3BlYy5sb2FkZXIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLQotY2xhc3MgX0xvYWRlckJhc2ljczoKLQotICAgICIiIkJhc2UgY2xhc3Mgb2YgY29tbW9uIGNvZGUgbmVlZGVkIGJ5IGJvdGggU291cmNlTG9hZGVyIGFuZAotICAgIFNvdXJjZWxlc3NGaWxlTG9hZGVyLiIiIgotCi0gICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmlzX3BhY2thZ2UgYnkgY2hlY2tpbmcgaWYKLSAgICAgICAgdGhlIHBhdGggcmV0dXJuZWQgYnkgZ2V0X2ZpbGVuYW1lIGhhcyBhIGZpbGVuYW1lIG9mICdfX2luaXRfXy5weScuIiIiCi0gICAgICAgIGZpbGVuYW1lID0gX3BhdGhfc3BsaXQoc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpKVsxXQotICAgICAgICBmaWxlbmFtZV9iYXNlID0gZmlsZW5hbWUucnNwbGl0KCcuJywgMSlbMF0KLSAgICAgICAgdGFpbF9uYW1lID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzJdCi0gICAgICAgIHJldHVybiBmaWxlbmFtZV9iYXNlID09ICdfX2luaXRfXycgYW5kIHRhaWxfbmFtZSAhPSAnX19pbml0X18nCi0KLSAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKLSAgICAgICAgIiIiRXhlY3V0ZSB0aGUgbW9kdWxlLiIiIgotICAgICAgICBjb2RlID0gc2VsZi5nZXRfY29kZShtb2R1bGUuX19uYW1lX18pCi0gICAgICAgIGlmIGNvZGUgaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdjYW5ub3QgbG9hZCBtb2R1bGUgeyFyfSB3aGVuIGdldF9jb2RlKCkgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JldHVybnMgTm9uZScuZm9ybWF0KG1vZHVsZS5fX25hbWVfXykpCi0gICAgICAgIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoZXhlYywgY29kZSwgbW9kdWxlLl9fZGljdF9fKQotCi0gICAgbG9hZF9tb2R1bGUgPSBfbG9hZF9tb2R1bGVfc2hpbQotCi0KLWNsYXNzIFNvdXJjZUxvYWRlcihfTG9hZGVyQmFzaWNzKToKLQotICAgIGRlZiBwYXRoX210aW1lKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiJPcHRpb25hbCBtZXRob2QgdGhhdCByZXR1cm5zIHRoZSBtb2RpZmljYXRpb24gdGltZSAoYW4gaW50KSBmb3IgdGhlCi0gICAgICAgIHNwZWNpZmllZCBwYXRoLCB3aGVyZSBwYXRoIGlzIGEgc3RyLgotCi0gICAgICAgIFJhaXNlcyBJT0Vycm9yIHdoZW4gdGhlIHBhdGggY2Fubm90IGJlIGhhbmRsZWQuCi0gICAgICAgICIiIgotICAgICAgICByYWlzZSBJT0Vycm9yCi0KLSAgICBkZWYgcGF0aF9zdGF0cyhzZWxmLCBwYXRoKToKLSAgICAgICAgIiIiT3B0aW9uYWwgbWV0aG9kIHJldHVybmluZyBhIG1ldGFkYXRhIGRpY3QgZm9yIHRoZSBzcGVjaWZpZWQgcGF0aAotICAgICAgICB0byBieSB0aGUgcGF0aCAoc3RyKS4KLSAgICAgICAgUG9zc2libGUga2V5czoKLSAgICAgICAgLSAnbXRpbWUnIChtYW5kYXRvcnkpIGlzIHRoZSBudW1lcmljIHRpbWVzdGFtcCBvZiBsYXN0IHNvdXJjZQotICAgICAgICAgIGNvZGUgbW9kaWZpY2F0aW9uOwotICAgICAgICAtICdzaXplJyAob3B0aW9uYWwpIGlzIHRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSBzb3VyY2UgY29kZS4KLQotICAgICAgICBJbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QgYWxsb3dzIHRoZSBsb2FkZXIgdG8gcmVhZCBieXRlY29kZSBmaWxlcy4KLSAgICAgICAgUmFpc2VzIElPRXJyb3Igd2hlbiB0aGUgcGF0aCBjYW5ub3QgYmUgaGFuZGxlZC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiB7J210aW1lJzogc2VsZi5wYXRoX210aW1lKHBhdGgpfQotCi0gICAgZGVmIF9jYWNoZV9ieXRlY29kZShzZWxmLCBzb3VyY2VfcGF0aCwgY2FjaGVfcGF0aCwgZGF0YSk6Ci0gICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCB3aGljaCB3cml0ZXMgZGF0YSAoYnl0ZXMpIHRvIGEgZmlsZSBwYXRoIChhIHN0cikuCi0KLSAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kIGFsbG93cyBmb3IgdGhlIHdyaXRpbmcgb2YgYnl0ZWNvZGUgZmlsZXMuCi0KLSAgICAgICAgVGhlIHNvdXJjZSBwYXRoIGlzIG5lZWRlZCBpbiBvcmRlciB0byBjb3JyZWN0bHkgdHJhbnNmZXIgcGVybWlzc2lvbnMKLSAgICAgICAgIiIiCi0gICAgICAgICMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB3ZSBkZWxlZ2F0ZSB0byBzZXRfZGF0YSgpCi0gICAgICAgIHJldHVybiBzZWxmLnNldF9kYXRhKGNhY2hlX3BhdGgsIGRhdGEpCi0KLSAgICBkZWYgc2V0X2RhdGEoc2VsZiwgcGF0aCwgZGF0YSk6Ci0gICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCB3aGljaCB3cml0ZXMgZGF0YSAoYnl0ZXMpIHRvIGEgZmlsZSBwYXRoIChhIHN0cikuCi0KLSAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kIGFsbG93cyBmb3IgdGhlIHdyaXRpbmcgb2YgYnl0ZWNvZGUgZmlsZXMuCi0gICAgICAgICIiIgotCi0KLSAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIEluc3BlY3RMb2FkZXIuZ2V0X3NvdXJjZS4iIiIKLSAgICAgICAgcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzb3VyY2VfYnl0ZXMgPSBzZWxmLmdldF9kYXRhKHBhdGgpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdzb3VyY2Ugbm90IGF2YWlsYWJsZSB0aHJvdWdoIGdldF9kYXRhKCknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkgZnJvbSBleGMKLSAgICAgICAgcmV0dXJuIGRlY29kZV9zb3VyY2Uoc291cmNlX2J5dGVzKQotCi0gICAgZGVmIHNvdXJjZV90b19jb2RlKHNlbGYsIGRhdGEsIHBhdGgsICosIF9vcHRpbWl6ZT0tMSk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgY29kZSBvYmplY3QgY29tcGlsZWQgZnJvbSBzb3VyY2UuCi0KLSAgICAgICAgVGhlICdkYXRhJyBhcmd1bWVudCBjYW4gYmUgYW55IG9iamVjdCB0eXBlIHRoYXQgY29tcGlsZSgpIHN1cHBvcnRzLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoY29tcGlsZSwgZGF0YSwgcGF0aCwgJ2V4ZWMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbnRfaW5oZXJpdD1UcnVlLCBvcHRpbWl6ZT1fb3B0aW1pemUpCi0KLSAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmdldF9jb2RlLgotCi0gICAgICAgIFJlYWRpbmcgb2YgYnl0ZWNvZGUgcmVxdWlyZXMgcGF0aF9zdGF0cyB0byBiZSBpbXBsZW1lbnRlZC4gVG8gd3JpdGUKLSAgICAgICAgYnl0ZWNvZGUsIHNldF9kYXRhIG11c3QgYWxzbyBiZSBpbXBsZW1lbnRlZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgc291cmNlX3BhdGggPSBzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkKLSAgICAgICAgc291cmNlX210aW1lID0gTm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBieXRlY29kZV9wYXRoID0gY2FjaGVfZnJvbV9zb3VyY2Uoc291cmNlX3BhdGgpCi0gICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgotICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IE5vbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzdCA9IHNlbGYucGF0aF9zdGF0cyhzb3VyY2VfcGF0aCkKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc291cmNlX210aW1lID0gaW50KHN0WydtdGltZSddKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X2RhdGEoYnl0ZWNvZGVfcGF0aCkKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX2RhdGEgPSBfdmFsaWRhdGVfYnl0ZWNvZGVfaGVhZGVyKGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9zdGF0cz1zdCwgbmFtZT1mdWxsbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1ieXRlY29kZV9wYXRoKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBFT0ZFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fSBtYXRjaGVzIHt9JywgYnl0ZWNvZGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29tcGlsZV9ieXRlY29kZShieXRlc19kYXRhLCBuYW1lPWZ1bGxuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGg9Ynl0ZWNvZGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aD1zb3VyY2VfcGF0aCkKLSAgICAgICAgc291cmNlX2J5dGVzID0gc2VsZi5nZXRfZGF0YShzb3VyY2VfcGF0aCkKLSAgICAgICAgY29kZV9vYmplY3QgPSBzZWxmLnNvdXJjZV90b19jb2RlKHNvdXJjZV9ieXRlcywgc291cmNlX3BhdGgpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20ge30nLCBzb3VyY2VfcGF0aCkKLSAgICAgICAgaWYgKG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBhbmQgYnl0ZWNvZGVfcGF0aCBpcyBub3QgTm9uZSBhbmQKLSAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgaXMgbm90IE5vbmUpOgotICAgICAgICAgICAgZGF0YSA9IF9jb2RlX3RvX2J5dGVjb2RlKGNvZGVfb2JqZWN0LCBzb3VyY2VfbXRpbWUsCi0gICAgICAgICAgICAgICAgICAgIGxlbihzb3VyY2VfYnl0ZXMpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlX2J5dGVjb2RlKHNvdXJjZV9wYXRoLCBieXRlY29kZV9wYXRoLCBkYXRhKQotICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3dyb3RlIHshcn0nLCBieXRlY29kZV9wYXRoKQotICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICByZXR1cm4gY29kZV9vYmplY3QKLQotCi1jbGFzcyBGaWxlTG9hZGVyOgotCi0gICAgIiIiQmFzZSBmaWxlIGxvYWRlciBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIHRoZSBsb2FkZXIgcHJvdG9jb2wgbWV0aG9kcyB0aGF0Ci0gICAgcmVxdWlyZSBmaWxlIHN5c3RlbSB1c2FnZS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdWxsbmFtZSwgcGF0aCk6Ci0gICAgICAgICIiIkNhY2hlIHRoZSBtb2R1bGUgbmFtZSBhbmQgdGhlIHBhdGggdG8gdGhlIGZpbGUgZm91bmQgYnkgdGhlCi0gICAgICAgIGZpbmRlci4iIiIKLSAgICAgICAgc2VsZi5uYW1lID0gZnVsbG5hbWUKLSAgICAgICAgc2VsZi5wYXRoID0gcGF0aAotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18gPT0gb3RoZXIuX19jbGFzc19fIGFuZAotICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X18gPT0gb3RoZXIuX19kaWN0X18pCi0KLSAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBoYXNoKHNlbGYubmFtZSkgXiBoYXNoKHNlbGYucGF0aCkKLQotICAgIEBfY2hlY2tfbmFtZQotICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIkxvYWQgYSBtb2R1bGUgZnJvbSBhIGZpbGUuCi0KLSAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFVzZSBleGVjX21vZHVsZSgpIGluc3RlYWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgICMgVGhlIG9ubHkgcmVhc29uIGZvciB0aGlzIG1ldGhvZCBpcyBmb3IgdGhlIG5hbWUgY2hlY2suCi0gICAgICAgICMgSXNzdWUgIzE0ODU3OiBBdm9pZCB0aGUgemVyby1hcmd1bWVudCBmb3JtIG9mIHN1cGVyIHNvIHRoZSBpbXBsZW1lbnRhdGlvbgotICAgICAgICAjIG9mIHRoYXQgZm9ybSBjYW4gYmUgdXBkYXRlZCB3aXRob3V0IGJyZWFraW5nIHRoZSBmcm96ZW4gbW9kdWxlCi0gICAgICAgIHJldHVybiBzdXBlcihGaWxlTG9hZGVyLCBzZWxmKS5sb2FkX21vZHVsZShmdWxsbmFtZSkKLQotICAgIEBfY2hlY2tfbmFtZQotICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIHBhdGggdG8gdGhlIHNvdXJjZSBmaWxlIGFzIGZvdW5kIGJ5IHRoZSBmaW5kZXIuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnBhdGgKLQotICAgIGRlZiBnZXRfZGF0YShzZWxmLCBwYXRoKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBkYXRhIGZyb20gcGF0aCBhcyByYXcgYnl0ZXMuIiIiCi0gICAgICAgIHdpdGggX2lvLkZpbGVJTyhwYXRoLCAncicpIGFzIGZpbGU6Ci0gICAgICAgICAgICByZXR1cm4gZmlsZS5yZWFkKCkKLQotCi1jbGFzcyBTb3VyY2VGaWxlTG9hZGVyKEZpbGVMb2FkZXIsIFNvdXJjZUxvYWRlcik6Ci0KLSAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBTb3VyY2VMb2FkZXIgdXNpbmcgdGhlIGZpbGUgc3lzdGVtLiIiIgotCi0gICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgbWV0YWRhdGEgZm9yIHRoZSBwYXRoLiIiIgotICAgICAgICBzdCA9IF9wYXRoX3N0YXQocGF0aCkKLSAgICAgICAgcmV0dXJuIHsnbXRpbWUnOiBzdC5zdF9tdGltZSwgJ3NpemUnOiBzdC5zdF9zaXplfQotCi0gICAgZGVmIF9jYWNoZV9ieXRlY29kZShzZWxmLCBzb3VyY2VfcGF0aCwgYnl0ZWNvZGVfcGF0aCwgZGF0YSk6Ci0gICAgICAgICMgQWRhcHQgYmV0d2VlbiB0aGUgdHdvIEFQSXMKLSAgICAgICAgbW9kZSA9IF9jYWxjX21vZGUoc291cmNlX3BhdGgpCi0gICAgICAgIHJldHVybiBzZWxmLnNldF9kYXRhKGJ5dGVjb2RlX3BhdGgsIGRhdGEsIF9tb2RlPW1vZGUpCi0KLSAgICBkZWYgc2V0X2RhdGEoc2VsZiwgcGF0aCwgZGF0YSwgKiwgX21vZGU9MG82NjYpOgotICAgICAgICAiIiJXcml0ZSBieXRlcyBkYXRhIHRvIGEgZmlsZS4iIiIKLSAgICAgICAgcGFyZW50LCBmaWxlbmFtZSA9IF9wYXRoX3NwbGl0KHBhdGgpCi0gICAgICAgIHBhdGhfcGFydHMgPSBbXQotICAgICAgICAjIEZpZ3VyZSBvdXQgd2hhdCBkaXJlY3RvcmllcyBhcmUgbWlzc2luZy4KLSAgICAgICAgd2hpbGUgcGFyZW50IGFuZCBub3QgX3BhdGhfaXNkaXIocGFyZW50KToKLSAgICAgICAgICAgIHBhcmVudCwgcGFydCA9IF9wYXRoX3NwbGl0KHBhcmVudCkKLSAgICAgICAgICAgIHBhdGhfcGFydHMuYXBwZW5kKHBhcnQpCi0gICAgICAgICMgQ3JlYXRlIG5lZWRlZCBkaXJlY3Rvcmllcy4KLSAgICAgICAgZm9yIHBhcnQgaW4gcmV2ZXJzZWQocGF0aF9wYXJ0cyk6Ci0gICAgICAgICAgICBwYXJlbnQgPSBfcGF0aF9qb2luKHBhcmVudCwgcGFydCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBfb3MubWtkaXIocGFyZW50KQotICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKLSAgICAgICAgICAgICAgICAjIFByb2JhYmx5IGFub3RoZXIgUHl0aG9uIHByb2Nlc3MgYWxyZWFkeSBjcmVhdGVkIHRoZSBkaXIuCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKLSAgICAgICAgICAgICAgICAjIENvdWxkIGJlIGEgcGVybWlzc2lvbiBlcnJvciwgcmVhZC1vbmx5IGZpbGVzeXN0ZW06IGp1c3QgZm9yZ2V0Ci0gICAgICAgICAgICAgICAgIyBhYm91dCB3cml0aW5nIHRoZSBkYXRhLgotICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhcmVudCwgZXhjKQotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIF9tb2RlKQotICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY3JlYXRlZCB7IXJ9JywgcGF0aCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgIyBTYW1lIGFzIGFib3ZlOiBqdXN0IGRvbid0IHdyaXRlIHRoZSBieXRlY29kZS4KLSAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhdGgsIGV4YykKLQotCi1jbGFzcyBTb3VyY2VsZXNzRmlsZUxvYWRlcihGaWxlTG9hZGVyLCBfTG9hZGVyQmFzaWNzKToKLQotICAgICIiIkxvYWRlciB3aGljaCBoYW5kbGVzIHNvdXJjZWxlc3MgZmlsZSBpbXBvcnRzLiIiIgotCi0gICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQotICAgICAgICBkYXRhID0gc2VsZi5nZXRfZGF0YShwYXRoKQotICAgICAgICBieXRlc19kYXRhID0gX3ZhbGlkYXRlX2J5dGVjb2RlX2hlYWRlcihkYXRhLCBuYW1lPWZ1bGxuYW1lLCBwYXRoPXBhdGgpCi0gICAgICAgIHJldHVybiBfY29tcGlsZV9ieXRlY29kZShieXRlc19kYXRhLCBuYW1lPWZ1bGxuYW1lLCBieXRlY29kZV9wYXRoPXBhdGgpCi0KLSAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiBOb25lIGFzIHRoZXJlIGlzIG5vIHNvdXJjZSBjb2RlLiIiIgotICAgICAgICByZXR1cm4gTm9uZQotCi0KLSMgRmlsbGVkIGluIGJ5IF9zZXR1cCgpLgotRVhURU5TSU9OX1NVRkZJWEVTID0gW10KLQotCi1jbGFzcyBFeHRlbnNpb25GaWxlTG9hZGVyOgotCi0gICAgIiIiTG9hZGVyIGZvciBleHRlbnNpb24gbW9kdWxlcy4KLQotICAgIFRoZSBjb25zdHJ1Y3RvciBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggRmlsZUZpbmRlci4KLQotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhdGgpOgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYucGF0aCA9IHBhdGgKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fID09IG90aGVyLl9fY2xhc3NfXyBhbmQKLSAgICAgICAgICAgICAgICBzZWxmLl9fZGljdF9fID09IG90aGVyLl9fZGljdF9fKQotCi0gICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gaGFzaChzZWxmLm5hbWUpIF4gaGFzaChzZWxmLnBhdGgpCi0KLSAgICBAX2NoZWNrX25hbWUKLSAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJMb2FkIGFuIGV4dGVuc2lvbiBtb2R1bGUuIiIiCi0gICAgICAgICMgT25jZSBhbiBleGVjX21vZHVsZSgpIGltcGxlbWVudGF0aW9uIGlzIGFkZGVkIHdlIGNhbiBhbHNvCi0gICAgICAgICMgYWRkIGEgZGVwcmVjYXRpb24gd2FybmluZyBoZXJlLgotICAgICAgICB3aXRoIF9NYW5hZ2VSZWxvYWQoZnVsbG5hbWUpOgotICAgICAgICAgICAgbW9kdWxlID0gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmxvYWRfZHluYW1pYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbG5hbWUsIHNlbGYucGF0aCkKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSBsb2FkZWQgZnJvbSB7IXJ9Jywgc2VsZi5wYXRoKQotICAgICAgICBpc19wYWNrYWdlID0gc2VsZi5pc19wYWNrYWdlKGZ1bGxuYW1lKQotICAgICAgICBpZiBpc19wYWNrYWdlIGFuZCBub3QgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpOgotICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gW19wYXRoX3NwbGl0KHNlbGYucGF0aClbMF1dCi0gICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc2VsZgotICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19uYW1lX18KLSAgICAgICAgaWYgbm90IGlzX3BhY2thZ2U6Ci0gICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19wYWNrYWdlX18ucnBhcnRpdGlvbignLicpWzBdCi0gICAgICAgIHJldHVybiBtb2R1bGUKLQotICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGV4dGVuc2lvbiBtb2R1bGUgaXMgYSBwYWNrYWdlLiIiIgotICAgICAgICBmaWxlX25hbWUgPSBfcGF0aF9zcGxpdChzZWxmLnBhdGgpWzFdCi0gICAgICAgIHJldHVybiBhbnkoZmlsZV9uYW1lID09ICdfX2luaXRfXycgKyBzdWZmaXgKLSAgICAgICAgICAgICAgICAgICBmb3Igc3VmZml4IGluIEVYVEVOU0lPTl9TVUZGSVhFUykKLQotICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiBOb25lIGFzIGFuIGV4dGVuc2lvbiBtb2R1bGUgY2Fubm90IGNyZWF0ZSBhIGNvZGUgb2JqZWN0LiIiIgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJSZXR1cm4gTm9uZSBhcyBleHRlbnNpb24gbW9kdWxlcyBoYXZlIG5vIHNvdXJjZSBjb2RlLiIiIgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgQF9jaGVja19uYW1lCi0gICAgZGVmIGdldF9maWxlbmFtZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgcGF0aCB0byB0aGUgc291cmNlIGZpbGUgYXMgZm91bmQgYnkgdGhlIGZpbmRlci4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYucGF0aAotCi0KLWNsYXNzIF9OYW1lc3BhY2VQYXRoOgotICAgICIiIlJlcHJlc2VudHMgYSBuYW1lc3BhY2UgcGFja2FnZSdzIHBhdGguICBJdCB1c2VzIHRoZSBtb2R1bGUgbmFtZQotICAgIHRvIGZpbmQgaXRzIHBhcmVudCBtb2R1bGUsIGFuZCBmcm9tIHRoZXJlIGl0IGxvb2tzIHVwIHRoZSBwYXJlbnQncwotICAgIF9fcGF0aF9fLiAgV2hlbiB0aGlzIGNoYW5nZXMsIHRoZSBtb2R1bGUncyBvd24gcGF0aCBpcyByZWNvbXB1dGVkLAotICAgIHVzaW5nIHBhdGhfZmluZGVyLiAgRm9yIHRvcC1sZXZlbCBtb2R1bGVzLCB0aGUgcGFyZW50IG1vZHVsZSdzIHBhdGgKLSAgICBpcyBzeXMucGF0aC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwYXRoLCBwYXRoX2ZpbmRlcik6Ci0gICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYuX3BhdGggPSBwYXRoCi0gICAgICAgIHNlbGYuX2xhc3RfcGFyZW50X3BhdGggPSB0dXBsZShzZWxmLl9nZXRfcGFyZW50X3BhdGgoKSkKLSAgICAgICAgc2VsZi5fcGF0aF9maW5kZXIgPSBwYXRoX2ZpbmRlcgotCi0gICAgZGVmIF9maW5kX3BhcmVudF9wYXRoX25hbWVzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIGEgdHVwbGUgb2YgKHBhcmVudC1tb2R1bGUtbmFtZSwgcGFyZW50LXBhdGgtYXR0ci1uYW1lKSIiIgotICAgICAgICBwYXJlbnQsIGRvdCwgbWUgPSBzZWxmLl9uYW1lLnJwYXJ0aXRpb24oJy4nKQotICAgICAgICBpZiBkb3QgPT0gJyc6Ci0gICAgICAgICAgICAjIFRoaXMgaXMgYSB0b3AtbGV2ZWwgbW9kdWxlLiBzeXMucGF0aCBjb250YWlucyB0aGUgcGFyZW50IHBhdGguCi0gICAgICAgICAgICByZXR1cm4gJ3N5cycsICdwYXRoJwotICAgICAgICAjIE5vdCBhIHRvcC1sZXZlbCBtb2R1bGUuIHBhcmVudC1tb2R1bGUuX19wYXRoX18gY29udGFpbnMgdGhlCi0gICAgICAgICMgIHBhcmVudCBwYXRoLgotICAgICAgICByZXR1cm4gcGFyZW50LCAnX19wYXRoX18nCi0KLSAgICBkZWYgX2dldF9wYXJlbnRfcGF0aChzZWxmKToKLSAgICAgICAgcGFyZW50X21vZHVsZV9uYW1lLCBwYXRoX2F0dHJfbmFtZSA9IHNlbGYuX2ZpbmRfcGFyZW50X3BhdGhfbmFtZXMoKQotICAgICAgICByZXR1cm4gZ2V0YXR0cihzeXMubW9kdWxlc1twYXJlbnRfbW9kdWxlX25hbWVdLCBwYXRoX2F0dHJfbmFtZSkKLQotICAgIGRlZiBfcmVjYWxjdWxhdGUoc2VsZik6Ci0gICAgICAgICMgSWYgdGhlIHBhcmVudCdzIHBhdGggaGFzIGNoYW5nZWQsIHJlY2FsY3VsYXRlIF9wYXRoCi0gICAgICAgIHBhcmVudF9wYXRoID0gdHVwbGUoc2VsZi5fZ2V0X3BhcmVudF9wYXRoKCkpICMgTWFrZSBhIGNvcHkKLSAgICAgICAgaWYgcGFyZW50X3BhdGggIT0gc2VsZi5fbGFzdF9wYXJlbnRfcGF0aDoKLSAgICAgICAgICAgIHNwZWMgPSBzZWxmLl9wYXRoX2ZpbmRlcihzZWxmLl9uYW1lLCBwYXJlbnRfcGF0aCkKLSAgICAgICAgICAgICMgTm90ZSB0aGF0IG5vIGNoYW5nZXMgYXJlIG1hZGUgaWYgYSBsb2FkZXIgaXMgcmV0dXJuZWQsIGJ1dCB3ZQotICAgICAgICAgICAgIyAgZG8gcmVtZW1iZXIgdGhlIG5ldyBwYXJlbnQgcGF0aAotICAgICAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZSBhbmQgc3BlYy5sb2FkZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBpZiBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXRoID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucwotICAgICAgICAgICAgc2VsZi5fbGFzdF9wYXJlbnRfcGF0aCA9IHBhcmVudF9wYXRoICAgICAjIFNhdmUgdGhlIGNvcHkKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BhdGgKLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5fcmVjYWxjdWxhdGUoKSkKLQotICAgIGRlZiBfX2xlbl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gbGVuKHNlbGYuX3JlY2FsY3VsYXRlKCkpCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnX05hbWVzcGFjZVBhdGgoeyFyfSknLmZvcm1hdChzZWxmLl9wYXRoKQotCi0gICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKToKLSAgICAgICAgcmV0dXJuIGl0ZW0gaW4gc2VsZi5fcmVjYWxjdWxhdGUoKQotCi0gICAgZGVmIGFwcGVuZChzZWxmLCBpdGVtKToKLSAgICAgICAgc2VsZi5fcGF0aC5hcHBlbmQoaXRlbSkKLQotCi0jIFdlIHVzZSB0aGlzIGV4Y2x1c2l2ZWx5IGluIGluaXRfbW9kdWxlX2F0dHJzKCkgZm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkuCi1jbGFzcyBfTmFtZXNwYWNlTG9hZGVyOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwYXRoLCBwYXRoX2ZpbmRlcik6Ci0gICAgICAgIHNlbGYuX3BhdGggPSBfTmFtZXNwYWNlUGF0aChuYW1lLCBwYXRoLCBwYXRoX2ZpbmRlcikKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBtb2R1bGVfcmVwcihjbHMsIG1vZHVsZSk6Ci0gICAgICAgICIiIlJldHVybiByZXByIGZvciB0aGUgbW9kdWxlLgotCi0gICAgICAgIFRoZSBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFRoZSBpbXBvcnQgbWFjaGluZXJ5IGRvZXMgdGhlIGpvYiBpdHNlbGYuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiAnPG1vZHVsZSB7IXJ9IChuYW1lc3BhY2UpPicuZm9ybWF0KG1vZHVsZS5fX25hbWVfXykKLQotICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgcmV0dXJuICcnCi0KLSAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICByZXR1cm4gY29tcGlsZSgnJywgJzxzdHJpbmc+JywgJ2V4ZWMnLCBkb250X2luaGVyaXQ9VHJ1ZSkKLQotICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJMb2FkIGEgbmFtZXNwYWNlIG1vZHVsZS4KLQotICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGV4ZWNfbW9kdWxlKCkgaW5zdGVhZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgIyBUaGUgaW1wb3J0IHN5c3RlbSBuZXZlciBjYWxscyB0aGlzIG1ldGhvZC4KLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnbmFtZXNwYWNlIG1vZHVsZSBsb2FkZWQgd2l0aCBwYXRoIHshcn0nLCBzZWxmLl9wYXRoKQotICAgICAgICByZXR1cm4gX2xvYWRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpCi0KLQotIyBGaW5kZXJzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1jbGFzcyBQYXRoRmluZGVyOgotCi0gICAgIiIiTWV0YSBwYXRoIGZpbmRlciBmb3Igc3lzLnBhdGggYW5kIHBhY2thZ2UgX19wYXRoX18gYXR0cmlidXRlcy4iIiIKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhjbHMpOgotICAgICAgICAiIiJDYWxsIHRoZSBpbnZhbGlkYXRlX2NhY2hlcygpIG1ldGhvZCBvbiBhbGwgcGF0aCBlbnRyeSBmaW5kZXJzCi0gICAgICAgIHN0b3JlZCBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZXMgKHdoZXJlIGltcGxlbWVudGVkKS4iIiIKLSAgICAgICAgZm9yIGZpbmRlciBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS52YWx1ZXMoKToKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoZmluZGVyLCAnaW52YWxpZGF0ZV9jYWNoZXMnKToKLSAgICAgICAgICAgICAgICBmaW5kZXIuaW52YWxpZGF0ZV9jYWNoZXMoKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9wYXRoX2hvb2tzKGNscywgcGF0aCk6Ci0gICAgICAgICIiIlNlYXJjaCBzZXF1ZW5jZSBvZiBob29rcyBmb3IgYSBmaW5kZXIgZm9yICdwYXRoJy4KLQotICAgICAgICBJZiAnaG9va3MnIGlzIGZhbHNlIHRoZW4gdXNlIHN5cy5wYXRoX2hvb2tzLgotCi0gICAgICAgICIiIgotICAgICAgICBpZiBub3Qgc3lzLnBhdGhfaG9va3M6Ci0gICAgICAgICAgICBfd2FybmluZ3Mud2Fybignc3lzLnBhdGhfaG9va3MgaXMgZW1wdHknLCBJbXBvcnRXYXJuaW5nKQotICAgICAgICBmb3IgaG9vayBpbiBzeXMucGF0aF9ob29rczoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXR1cm4gaG9vayhwYXRoKQotICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9wYXRoX2ltcG9ydGVyX2NhY2hlKGNscywgcGF0aCk6Ci0gICAgICAgICIiIkdldCB0aGUgZmluZGVyIGZvciB0aGUgcGF0aCBlbnRyeSBmcm9tIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLgotCi0gICAgICAgIElmIHRoZSBwYXRoIGVudHJ5IGlzIG5vdCBpbiB0aGUgY2FjaGUsIGZpbmQgdGhlIGFwcHJvcHJpYXRlIGZpbmRlcgotICAgICAgICBhbmQgY2FjaGUgaXQuIElmIG5vIGZpbmRlciBpcyBhdmFpbGFibGUsIHN0b3JlIE5vbmUuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHBhdGggPT0gJyc6Ci0gICAgICAgICAgICBwYXRoID0gX29zLmdldGN3ZCgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbmRlciA9IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGZpbmRlciA9IGNscy5fcGF0aF9ob29rcyhwYXRoKQotICAgICAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF0gPSBmaW5kZXIKLSAgICAgICAgcmV0dXJuIGZpbmRlcgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9sZWdhY3lfZ2V0X3NwZWMoY2xzLCBmdWxsbmFtZSwgZmluZGVyKToKLSAgICAgICAgIyBUaGlzIHdvdWxkIGJlIGEgZ29vZCBwbGFjZSBmb3IgYSBEZXByZWNhdGlvbldhcm5pbmcgaWYKLSAgICAgICAgIyB3ZSBlbmRlZCB1cCBnb2luZyB0aGF0IHJvdXRlLgotICAgICAgICBpZiBoYXNhdHRyKGZpbmRlciwgJ2ZpbmRfbG9hZGVyJyk6Ci0gICAgICAgICAgICBsb2FkZXIsIHBvcnRpb25zID0gZmluZGVyLmZpbmRfbG9hZGVyKGZ1bGxuYW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9hZGVyID0gZmluZGVyLmZpbmRfbW9kdWxlKGZ1bGxuYW1lKQotICAgICAgICAgICAgcG9ydGlvbnMgPSBbXQotICAgICAgICBpZiBsb2FkZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc3BlY19mcm9tX2xvYWRlcihmdWxsbmFtZSwgbG9hZGVyKQotICAgICAgICBzcGVjID0gTW9kdWxlU3BlYyhmdWxsbmFtZSwgTm9uZSkKLSAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IHBvcnRpb25zCi0gICAgICAgIHJldHVybiBzcGVjCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgX2dldF9zcGVjKGNscywgZnVsbG5hbWUsIHBhdGgsIHRhcmdldD1Ob25lKToKLSAgICAgICAgIiIiRmluZCB0aGUgbG9hZGVyIG9yIG5hbWVzcGFjZV9wYXRoIGZvciB0aGlzIG1vZHVsZS9wYWNrYWdlIG5hbWUuIiIiCi0gICAgICAgICMgSWYgdGhpcyBlbmRzIHVwIGJlaW5nIGEgbmFtZXNwYWNlIHBhY2thZ2UsIG5hbWVzcGFjZV9wYXRoIGlzCi0gICAgICAgICMgIHRoZSBsaXN0IG9mIHBhdGhzIHRoYXQgd2lsbCBiZWNvbWUgaXRzIF9fcGF0aF9fCi0gICAgICAgIG5hbWVzcGFjZV9wYXRoID0gW10KLSAgICAgICAgZm9yIGVudHJ5IGluIHBhdGg6Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlbnRyeSwgKHN0ciwgYnl0ZXMpKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZmluZGVyID0gY2xzLl9wYXRoX2ltcG9ydGVyX2NhY2hlKGVudHJ5KQotICAgICAgICAgICAgaWYgZmluZGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoZmluZGVyLCAnZmluZF9zcGVjJyk6Ci0gICAgICAgICAgICAgICAgICAgIHNwZWMgPSBmaW5kZXIuZmluZF9zcGVjKGZ1bGxuYW1lLCB0YXJnZXQpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc3BlYyA9IGNscy5fbGVnYWN5X2dldF9zcGVjKGZ1bGxuYW1lLCBmaW5kZXIpCi0gICAgICAgICAgICAgICAgaWYgc3BlYyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIHNwZWMubG9hZGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3BlYwotICAgICAgICAgICAgICAgIHBvcnRpb25zID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucwotICAgICAgICAgICAgICAgIGlmIHBvcnRpb25zIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdzcGVjIG1pc3NpbmcgbG9hZGVyJykKLSAgICAgICAgICAgICAgICAjIFRoaXMgaXMgcG9zc2libHkgcGFydCBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLgotICAgICAgICAgICAgICAgICMgIFJlbWVtYmVyIHRoZXNlIHBhdGggZW50cmllcyAoaWYgYW55KSBmb3Igd2hlbiB3ZQotICAgICAgICAgICAgICAgICMgIGNyZWF0ZSBhIG5hbWVzcGFjZSBwYWNrYWdlLCBhbmQgY29udGludWUgaXRlcmF0aW5nCi0gICAgICAgICAgICAgICAgIyAgb24gcGF0aC4KLSAgICAgICAgICAgICAgICBuYW1lc3BhY2VfcGF0aC5leHRlbmQocG9ydGlvbnMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzcGVjID0gTW9kdWxlU3BlYyhmdWxsbmFtZSwgTm9uZSkKLSAgICAgICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBuYW1lc3BhY2VfcGF0aAotICAgICAgICAgICAgcmV0dXJuIHNwZWMKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmaW5kX3NwZWMoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lLCB0YXJnZXQ9Tm9uZSk6Ci0gICAgICAgICIiImZpbmQgdGhlIG1vZHVsZSBvbiBzeXMucGF0aCBvciAncGF0aCcgYmFzZWQgb24gc3lzLnBhdGhfaG9va3MgYW5kCi0gICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLiIiIgotICAgICAgICBpZiBwYXRoIGlzIE5vbmU6Ci0gICAgICAgICAgICBwYXRoID0gc3lzLnBhdGgKLSAgICAgICAgc3BlYyA9IGNscy5fZ2V0X3NwZWMoZnVsbG5hbWUsIHBhdGgsIHRhcmdldCkKLSAgICAgICAgaWYgc3BlYyBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgZWxpZiBzcGVjLmxvYWRlciBpcyBOb25lOgotICAgICAgICAgICAgbmFtZXNwYWNlX3BhdGggPSBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCi0gICAgICAgICAgICBpZiBuYW1lc3BhY2VfcGF0aDoKLSAgICAgICAgICAgICAgICAjIFdlIGZvdW5kIGF0IGxlYXN0IG9uZSBuYW1lc3BhY2UgcGF0aC4gIFJldHVybiBhCi0gICAgICAgICAgICAgICAgIyAgc3BlYyB3aGljaCBjYW4gY3JlYXRlIHRoZSBuYW1lc3BhY2UgcGFja2FnZS4KLSAgICAgICAgICAgICAgICBzcGVjLm9yaWdpbiA9ICduYW1lc3BhY2UnCi0gICAgICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IF9OYW1lc3BhY2VQYXRoKGZ1bGxuYW1lLCBuYW1lc3BhY2VfcGF0aCwgY2xzLl9nZXRfc3BlYykKLSAgICAgICAgICAgICAgICByZXR1cm4gc3BlYwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHNwZWMKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgotICAgICAgICAiIiJmaW5kIHRoZSBtb2R1bGUgb24gc3lzLnBhdGggb3IgJ3BhdGgnIGJhc2VkIG9uIHN5cy5wYXRoX2hvb2tzIGFuZAotICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4KLQotICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGZpbmRfc3BlYygpIGluc3RlYWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNwZWMgPSBjbHMuZmluZF9zcGVjKGZ1bGxuYW1lLCBwYXRoKQotICAgICAgICBpZiBzcGVjIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gc3BlYy5sb2FkZXIKLQotCi1jbGFzcyBGaWxlRmluZGVyOgotCi0gICAgIiIiRmlsZS1iYXNlZCBmaW5kZXIuCi0KLSAgICBJbnRlcmFjdGlvbnMgd2l0aCB0aGUgZmlsZSBzeXN0ZW0gYXJlIGNhY2hlZCBmb3IgcGVyZm9ybWFuY2UsIGJlaW5nCi0gICAgcmVmcmVzaGVkIHdoZW4gdGhlIGRpcmVjdG9yeSB0aGUgZmluZGVyIGlzIGhhbmRsaW5nIGhhcyBiZWVuIG1vZGlmaWVkLgotCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgKmxvYWRlcl9kZXRhaWxzKToKLSAgICAgICAgIiIiSW5pdGlhbGl6ZSB3aXRoIHRoZSBwYXRoIHRvIHNlYXJjaCBvbiBhbmQgYSB2YXJpYWJsZSBudW1iZXIgb2YKLSAgICAgICAgMi10dXBsZXMgY29udGFpbmluZyB0aGUgbG9hZGVyIGFuZCB0aGUgZmlsZSBzdWZmaXhlcyB0aGUgbG9hZGVyCi0gICAgICAgIHJlY29nbml6ZXMuIiIiCi0gICAgICAgIGxvYWRlcnMgPSBbXQotICAgICAgICBmb3IgbG9hZGVyLCBzdWZmaXhlcyBpbiBsb2FkZXJfZGV0YWlsczoKLSAgICAgICAgICAgIGxvYWRlcnMuZXh0ZW5kKChzdWZmaXgsIGxvYWRlcikgZm9yIHN1ZmZpeCBpbiBzdWZmaXhlcykKLSAgICAgICAgc2VsZi5fbG9hZGVycyA9IGxvYWRlcnMKLSAgICAgICAgIyBCYXNlIChkaXJlY3RvcnkpIHBhdGgKLSAgICAgICAgc2VsZi5wYXRoID0gcGF0aCBvciAnLicKLSAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IC0xCi0gICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBzZXQoKQotICAgICAgICBzZWxmLl9yZWxheGVkX3BhdGhfY2FjaGUgPSBzZXQoKQotCi0gICAgZGVmIGludmFsaWRhdGVfY2FjaGVzKHNlbGYpOgotICAgICAgICAiIiJJbnZhbGlkYXRlIHRoZSBkaXJlY3RvcnkgbXRpbWUuIiIiCi0gICAgICAgIHNlbGYuX3BhdGhfbXRpbWUgPSAtMQotCi0gICAgZmluZF9tb2R1bGUgPSBfZmluZF9tb2R1bGVfc2hpbQotCi0gICAgZGVmIGZpbmRfbG9hZGVyKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgIiIiVHJ5IHRvIGZpbmQgYSBsb2FkZXIgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLCBvciB0aGUgbmFtZXNwYWNlCi0gICAgICAgIHBhY2thZ2UgcG9ydGlvbnMuIFJldHVybnMgKGxvYWRlciwgbGlzdC1vZi1wb3J0aW9ucykuCi0KLSAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFVzZSBmaW5kX3NwZWMoKSBpbnN0ZWFkLgotCi0gICAgICAgICIiIgotICAgICAgICBzcGVjID0gc2VsZi5maW5kX3NwZWMoZnVsbG5hbWUpCi0gICAgICAgIGlmIHNwZWMgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBOb25lLCBbXQotICAgICAgICByZXR1cm4gc3BlYy5sb2FkZXIsIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgb3IgW10KLQotICAgIGRlZiBfZ2V0X3NwZWMoc2VsZiwgbG9hZGVyX2NsYXNzLCBmdWxsbmFtZSwgcGF0aCwgc21zbCwgdGFyZ2V0KToKLSAgICAgICAgbG9hZGVyID0gbG9hZGVyX2NsYXNzKGZ1bGxuYW1lLCBwYXRoKQotICAgICAgICByZXR1cm4gc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24oZnVsbG5hbWUsIHBhdGgsIGxvYWRlcj1sb2FkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucz1zbXNsKQotCi0gICAgZGVmIGZpbmRfc3BlYyhzZWxmLCBmdWxsbmFtZSwgdGFyZ2V0PU5vbmUpOgotICAgICAgICAiIiJUcnkgdG8gZmluZCBhIGxvYWRlciBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUsIG9yIHRoZSBuYW1lc3BhY2UKLSAgICAgICAgcGFja2FnZSBwb3J0aW9ucy4gUmV0dXJucyAobG9hZGVyLCBsaXN0LW9mLXBvcnRpb25zKS4iIiIKLSAgICAgICAgaXNfbmFtZXNwYWNlID0gRmFsc2UKLSAgICAgICAgdGFpbF9tb2R1bGUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCcuJylbMl0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbXRpbWUgPSBfcGF0aF9zdGF0KHNlbGYucGF0aCBvciBfb3MuZ2V0Y3dkKCkpLnN0X210aW1lCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgbXRpbWUgPSAtMQotICAgICAgICBpZiBtdGltZSAhPSBzZWxmLl9wYXRoX210aW1lOgotICAgICAgICAgICAgc2VsZi5fZmlsbF9jYWNoZSgpCi0gICAgICAgICAgICBzZWxmLl9wYXRoX210aW1lID0gbXRpbWUKLSAgICAgICAgIyB0YWlsX21vZHVsZSBrZWVwcyB0aGUgb3JpZ2luYWwgY2FzaW5nLCBmb3IgX19maWxlX18gYW5kIGZyaWVuZHMKLSAgICAgICAgaWYgX3JlbGF4X2Nhc2UoKToKLSAgICAgICAgICAgIGNhY2hlID0gc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlCi0gICAgICAgICAgICBjYWNoZV9tb2R1bGUgPSB0YWlsX21vZHVsZS5sb3dlcigpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjYWNoZSA9IHNlbGYuX3BhdGhfY2FjaGUKLSAgICAgICAgICAgIGNhY2hlX21vZHVsZSA9IHRhaWxfbW9kdWxlCi0gICAgICAgICMgQ2hlY2sgaWYgdGhlIG1vZHVsZSBpcyB0aGUgbmFtZSBvZiBhIGRpcmVjdG9yeSAoYW5kIHRodXMgYSBwYWNrYWdlKS4KLSAgICAgICAgaWYgY2FjaGVfbW9kdWxlIGluIGNhY2hlOgotICAgICAgICAgICAgYmFzZV9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlKQotICAgICAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyX2NsYXNzIGluIHNlbGYuX2xvYWRlcnM6Ci0gICAgICAgICAgICAgICAgaW5pdF9maWxlbmFtZSA9ICdfX2luaXRfXycgKyBzdWZmaXgKLSAgICAgICAgICAgICAgICBmdWxsX3BhdGggPSBfcGF0aF9qb2luKGJhc2VfcGF0aCwgaW5pdF9maWxlbmFtZSkKLSAgICAgICAgICAgICAgICBpZiBfcGF0aF9pc2ZpbGUoZnVsbF9wYXRoKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9zcGVjKGxvYWRlcl9jbGFzcywgZnVsbG5hbWUsIGZ1bGxfcGF0aCwgW2Jhc2VfcGF0aF0sIHRhcmdldCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBJZiBhIG5hbWVzcGFjZSBwYWNrYWdlLCByZXR1cm4gdGhlIHBhdGggaWYgd2UgZG9uJ3QKLSAgICAgICAgICAgICAgICAjICBmaW5kIGEgbW9kdWxlIGluIHRoZSBuZXh0IHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgaXNfbmFtZXNwYWNlID0gX3BhdGhfaXNkaXIoYmFzZV9wYXRoKQotICAgICAgICAjIENoZWNrIGZvciBhIGZpbGUgdy8gYSBwcm9wZXIgc3VmZml4IGV4aXN0cy4KLSAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyX2NsYXNzIGluIHNlbGYuX2xvYWRlcnM6Ci0gICAgICAgICAgICBmdWxsX3BhdGggPSBfcGF0aF9qb2luKHNlbGYucGF0aCwgdGFpbF9tb2R1bGUgKyBzdWZmaXgpCi0gICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd0cnlpbmcge30nLmZvcm1hdChmdWxsX3BhdGgpLCB2ZXJib3NpdHk9MikKLSAgICAgICAgICAgIGlmIGNhY2hlX21vZHVsZSArIHN1ZmZpeCBpbiBjYWNoZToKLSAgICAgICAgICAgICAgICBpZiBfcGF0aF9pc2ZpbGUoZnVsbF9wYXRoKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9zcGVjKGxvYWRlcl9jbGFzcywgZnVsbG5hbWUsIGZ1bGxfcGF0aCwgTm9uZSwgdGFyZ2V0KQotICAgICAgICBpZiBpc19uYW1lc3BhY2U6Ci0gICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdwb3NzaWJsZSBuYW1lc3BhY2UgZm9yIHt9Jy5mb3JtYXQoYmFzZV9wYXRoKSkKLSAgICAgICAgICAgIHNwZWMgPSBNb2R1bGVTcGVjKGZ1bGxuYW1lLCBOb25lKQotICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IFtiYXNlX3BhdGhdCi0gICAgICAgICAgICByZXR1cm4gc3BlYwotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIF9maWxsX2NhY2hlKHNlbGYpOgotICAgICAgICAiIiJGaWxsIHRoZSBjYWNoZSBvZiBwb3RlbnRpYWwgbW9kdWxlcyBhbmQgcGFja2FnZXMgZm9yIHRoaXMgZGlyZWN0b3J5LiIiIgotICAgICAgICBwYXRoID0gc2VsZi5wYXRoCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvbnRlbnRzID0gX29zLmxpc3RkaXIocGF0aCBvciBfb3MuZ2V0Y3dkKCkpCi0gICAgICAgIGV4Y2VwdCAoRmlsZU5vdEZvdW5kRXJyb3IsIFBlcm1pc3Npb25FcnJvciwgTm90QURpcmVjdG9yeUVycm9yKToKLSAgICAgICAgICAgICMgRGlyZWN0b3J5IGhhcyBlaXRoZXIgYmVlbiByZW1vdmVkLCB0dXJuZWQgaW50byBhIGZpbGUsIG9yIG1hZGUKLSAgICAgICAgICAgICMgdW5yZWFkYWJsZS4KLSAgICAgICAgICAgIGNvbnRlbnRzID0gW10KLSAgICAgICAgIyBXZSBzdG9yZSB0d28gY2FjaGVkIHZlcnNpb25zLCB0byBoYW5kbGUgcnVudGltZSBjaGFuZ2VzIG9mIHRoZQotICAgICAgICAjIFBZVEhPTkNBU0VPSyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLSAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKLSAgICAgICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBzZXQoY29udGVudHMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFdpbmRvd3MgdXNlcnMgY2FuIGltcG9ydCBtb2R1bGVzIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBmaWxlCi0gICAgICAgICAgICAjIHN1ZmZpeGVzIChmb3IgbGVnYWN5IHJlYXNvbnMpLiBNYWtlIHRoZSBzdWZmaXggbG93ZXJjYXNlIGhlcmUKLSAgICAgICAgICAgICMgc28gaXQncyBkb25lIG9uY2UgaW5zdGVhZCBvZiBmb3IgZXZlcnkgaW1wb3J0LiBUaGlzIGlzIHNhZmUgYXMKLSAgICAgICAgICAgICMgdGhlIHNwZWNpZmllZCBzdWZmaXhlcyB0byBjaGVjayBhZ2FpbnN0IGFyZSBhbHdheXMgc3BlY2lmaWVkIGluIGEKLSAgICAgICAgICAgICMgY2FzZS1zZW5zaXRpdmUgbWFubmVyLgotICAgICAgICAgICAgbG93ZXJfc3VmZml4X2NvbnRlbnRzID0gc2V0KCkKLSAgICAgICAgICAgIGZvciBpdGVtIGluIGNvbnRlbnRzOgotICAgICAgICAgICAgICAgIG5hbWUsIGRvdCwgc3VmZml4ID0gaXRlbS5wYXJ0aXRpb24oJy4nKQotICAgICAgICAgICAgICAgIGlmIGRvdDoKLSAgICAgICAgICAgICAgICAgICAgbmV3X25hbWUgPSAne30ue30nLmZvcm1hdChuYW1lLCBzdWZmaXgubG93ZXIoKSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBuZXdfbmFtZSA9IG5hbWUKLSAgICAgICAgICAgICAgICBsb3dlcl9zdWZmaXhfY29udGVudHMuYWRkKG5ld19uYW1lKQotICAgICAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IGxvd2VyX3N1ZmZpeF9jb250ZW50cwotICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aChfQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVMpOgotICAgICAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0ge2ZuLmxvd2VyKCkgZm9yIGZuIGluIGNvbnRlbnRzfQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHBhdGhfaG9vayhjbHMsICpsb2FkZXJfZGV0YWlscyk6Ci0gICAgICAgICIiIkEgY2xhc3MgbWV0aG9kIHdoaWNoIHJldHVybnMgYSBjbG9zdXJlIHRvIHVzZSBvbiBzeXMucGF0aF9ob29rCi0gICAgICAgIHdoaWNoIHdpbGwgcmV0dXJuIGFuIGluc3RhbmNlIHVzaW5nIHRoZSBzcGVjaWZpZWQgbG9hZGVycyBhbmQgdGhlIHBhdGgKLSAgICAgICAgY2FsbGVkIG9uIHRoZSBjbG9zdXJlLgotCi0gICAgICAgIElmIHRoZSBwYXRoIGNhbGxlZCBvbiB0aGUgY2xvc3VyZSBpcyBub3QgYSBkaXJlY3RvcnksIEltcG9ydEVycm9yIGlzCi0gICAgICAgIHJhaXNlZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgZGVmIHBhdGhfaG9va19mb3JfRmlsZUZpbmRlcihwYXRoKToKLSAgICAgICAgICAgICIiIlBhdGggaG9vayBmb3IgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyLiIiIgotICAgICAgICAgICAgaWYgbm90IF9wYXRoX2lzZGlyKHBhdGgpOgotICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdvbmx5IGRpcmVjdG9yaWVzIGFyZSBzdXBwb3J0ZWQnLCBwYXRoPXBhdGgpCi0gICAgICAgICAgICByZXR1cm4gY2xzKHBhdGgsICpsb2FkZXJfZGV0YWlscykKLQotICAgICAgICByZXR1cm4gcGF0aF9ob29rX2Zvcl9GaWxlRmluZGVyCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnRmlsZUZpbmRlcih7IXJ9KScuZm9ybWF0KHNlbGYucGF0aCkKLQotCiAjIEltcG9ydCBpdHNlbGYgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIGNsYXNzIF9JbXBvcnRMb2NrQ29udGV4dDoKQEAgLTIxNDYsNyArODc4LDcgQEAKIAogZGVmIF9maW5kX3NwZWMobmFtZSwgcGF0aCwgdGFyZ2V0PU5vbmUpOgogICAgICIiIkZpbmQgYSBtb2R1bGUncyBsb2FkZXIuIiIiCi0gICAgaWYgbm90IHN5cy5tZXRhX3BhdGg6CisgICAgaWYgc3lzLm1ldGFfcGF0aCBpcyBub3QgTm9uZSBhbmQgbm90IHN5cy5tZXRhX3BhdGg6CiAgICAgICAgIF93YXJuaW5ncy53YXJuKCdzeXMubWV0YV9wYXRoIGlzIGVtcHR5JywgSW1wb3J0V2FybmluZykKICAgICAjIFdlIGNoZWNrIHN5cy5tb2R1bGVzIGhlcmUgZm9yIHRoZSByZWxvYWQgY2FzZS4gIFdoaWxlIGEgcGFzc2VkLWluCiAgICAgIyB0YXJnZXQgd2lsbCB1c3VhbGx5IGluZGljYXRlIGEgcmVsb2FkIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSwgd2hlcmVhcwpAQCAtMjIxOCwxMiArOTUwLDEyIEBACiAgICAgICAgICAgICBwYXRoID0gcGFyZW50X21vZHVsZS5fX3BhdGhfXwogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBtc2cgPSAoX0VSUl9NU0cgKyAnOyB7IXJ9IGlzIG5vdCBhIHBhY2thZ2UnKS5mb3JtYXQobmFtZSwgcGFyZW50KQotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLCBuYW1lPW5hbWUpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkgZnJvbSBOb25lCiAgICAgc3BlYyA9IF9maW5kX3NwZWMobmFtZSwgcGF0aCkKICAgICBpZiBzcGVjIGlzIE5vbmU6CiAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKF9FUlJfTVNHLmZvcm1hdChuYW1lKSwgbmFtZT1uYW1lKQogICAgIGVsc2U6Ci0gICAgICAgIG1vZHVsZSA9IF9TcGVjTWV0aG9kcyhzcGVjKS5fbG9hZF91bmxvY2tlZCgpCisgICAgICAgIG1vZHVsZSA9IF9sb2FkX3VubG9ja2VkKHNwZWMpCiAgICAgaWYgcGFyZW50OgogICAgICAgICAjIFNldCB0aGUgbW9kdWxlIGFzIGFuIGF0dHJpYnV0ZSBvbiBpdHMgcGFyZW50LgogICAgICAgICBwYXJlbnRfbW9kdWxlID0gc3lzLm1vZHVsZXNbcGFyZW50XQpAQCAtMjMwOCwxNyArMTA0MCw2IEBACiAgICAgcmV0dXJuIHBhY2thZ2UKIAogCi1kZWYgX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCk6Ci0gICAgIiIiUmV0dXJucyBhIGxpc3Qgb2YgZmlsZS1iYXNlZCBtb2R1bGUgbG9hZGVycy4KLQotICAgIEVhY2ggaXRlbSBpcyBhIHR1cGxlIChsb2FkZXIsIHN1ZmZpeGVzKS4KLSAgICAiIiIKLSAgICBleHRlbnNpb25zID0gRXh0ZW5zaW9uRmlsZUxvYWRlciwgX2ltcC5leHRlbnNpb25fc3VmZml4ZXMoKQotICAgIHNvdXJjZSA9IFNvdXJjZUZpbGVMb2FkZXIsIFNPVVJDRV9TVUZGSVhFUwotICAgIGJ5dGVjb2RlID0gU291cmNlbGVzc0ZpbGVMb2FkZXIsIEJZVEVDT0RFX1NVRkZJWEVTCi0gICAgcmV0dXJuIFtleHRlbnNpb25zLCBzb3VyY2UsIGJ5dGVjb2RlXQotCi0KIGRlZiBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUsIGZyb21saXN0PSgpLCBsZXZlbD0wKToKICAgICAiIiJJbXBvcnQgYSBtb2R1bGUuCiAKQEAgLTIzNTgsOCArMTA3OSw3IEBACiAgICAgc3BlYyA9IEJ1aWx0aW5JbXBvcnRlci5maW5kX3NwZWMobmFtZSkKICAgICBpZiBzcGVjIGlzIE5vbmU6CiAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdubyBidWlsdC1pbiBtb2R1bGUgbmFtZWQgJyArIG5hbWUpCi0gICAgbWV0aG9kcyA9IF9TcGVjTWV0aG9kcyhzcGVjKQotICAgIHJldHVybiBtZXRob2RzLl9sb2FkX3VubG9ja2VkKCkKKyAgICByZXR1cm4gX2xvYWRfdW5sb2NrZWQoc3BlYykKIAogCiBkZWYgX3NldHVwKHN5c19tb2R1bGUsIF9pbXBfbW9kdWxlKToKQEAgLTIzNzAsMTUgKzEwOTAsMTAgQEAKICAgICBtb2R1bGVzLCB0aG9zZSB0d28gbW9kdWxlcyBtdXN0IGJlIGV4cGxpY2l0bHkgcGFzc2VkIGluLgogCiAgICAgIiIiCi0gICAgZ2xvYmFsIF9pbXAsIHN5cywgQllURUNPREVfU1VGRklYRVMKKyAgICBnbG9iYWwgX2ltcCwgc3lzCiAgICAgX2ltcCA9IF9pbXBfbW9kdWxlCiAgICAgc3lzID0gc3lzX21vZHVsZQogCi0gICAgaWYgc3lzLmZsYWdzLm9wdGltaXplOgotICAgICAgICBCWVRFQ09ERV9TVUZGSVhFUyA9IE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUwotICAgIGVsc2U6Ci0gICAgICAgIEJZVEVDT0RFX1NVRkZJWEVTID0gREVCVUdfQllURUNPREVfU1VGRklYRVMKLQogICAgICMgU2V0IHVwIHRoZSBzcGVjIGZvciBleGlzdGluZyBidWlsdGluL2Zyb3plbiBtb2R1bGVzLgogICAgIG1vZHVsZV90eXBlID0gdHlwZShzeXMpCiAgICAgZm9yIG5hbWUsIG1vZHVsZSBpbiBzeXMubW9kdWxlcy5pdGVtcygpOgpAQCAtMjM5MCwzOSArMTEwNSwxNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgc3BlYyA9IF9zcGVjX2Zyb21fbW9kdWxlKG1vZHVsZSwgbG9hZGVyKQotICAgICAgICAgICAgbWV0aG9kcyA9IF9TcGVjTWV0aG9kcyhzcGVjKQotICAgICAgICAgICAgbWV0aG9kcy5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUpCisgICAgICAgICAgICBfaW5pdF9tb2R1bGVfYXR0cnMoc3BlYywgbW9kdWxlKQogCiAgICAgIyBEaXJlY3RseSBsb2FkIGJ1aWx0LWluIG1vZHVsZXMgbmVlZGVkIGR1cmluZyBib290c3RyYXAuCiAgICAgc2VsZl9tb2R1bGUgPSBzeXMubW9kdWxlc1tfX25hbWVfX10KLSAgICBmb3IgYnVpbHRpbl9uYW1lIGluICgnX2lvJywgJ193YXJuaW5ncycsICdidWlsdGlucycsICdtYXJzaGFsJyk6CisgICAgZm9yIGJ1aWx0aW5fbmFtZSBpbiAoJ193YXJuaW5ncycsKToKICAgICAgICAgaWYgYnVpbHRpbl9uYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgIGJ1aWx0aW5fbW9kdWxlID0gX2J1aWx0aW5fZnJvbV9uYW1lKGJ1aWx0aW5fbmFtZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGJ1aWx0aW5fbW9kdWxlID0gc3lzLm1vZHVsZXNbYnVpbHRpbl9uYW1lXQogICAgICAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCBidWlsdGluX25hbWUsIGJ1aWx0aW5fbW9kdWxlKQogCi0gICAgIyBEaXJlY3RseSBsb2FkIHRoZSBvcyBtb2R1bGUgKG5lZWRlZCBkdXJpbmcgYm9vdHN0cmFwKS4KLSAgICBvc19kZXRhaWxzID0gKCdwb3NpeCcsIFsnLyddKSwgKCdudCcsIFsnXFwnLCAnLyddKQotICAgIGZvciBidWlsdGluX29zLCBwYXRoX3NlcGFyYXRvcnMgaW4gb3NfZGV0YWlsczoKLSAgICAgICAgIyBBc3N1bXB0aW9uIG1hZGUgaW4gX3BhdGhfam9pbigpCi0gICAgICAgIGFzc2VydCBhbGwobGVuKHNlcCkgPT0gMSBmb3Igc2VwIGluIHBhdGhfc2VwYXJhdG9ycykKLSAgICAgICAgcGF0aF9zZXAgPSBwYXRoX3NlcGFyYXRvcnNbMF0KLSAgICAgICAgaWYgYnVpbHRpbl9vcyBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgICAgIG9zX21vZHVsZSA9IHN5cy5tb2R1bGVzW2J1aWx0aW5fb3NdCi0gICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG9zX21vZHVsZSA9IF9idWlsdGluX2Zyb21fbmFtZShidWlsdGluX29zKQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignaW1wb3J0bGliIHJlcXVpcmVzIHBvc2l4IG9yIG50JykKLSAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAnX29zJywgb3NfbW9kdWxlKQotICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdwYXRoX3NlcCcsIHBhdGhfc2VwKQotICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdwYXRoX3NlcGFyYXRvcnMnLCAnJy5qb2luKHBhdGhfc2VwYXJhdG9ycykpCi0KICAgICAjIERpcmVjdGx5IGxvYWQgdGhlIF90aHJlYWQgbW9kdWxlIChuZWVkZWQgZHVyaW5nIGJvb3RzdHJhcCkuCiAgICAgdHJ5OgogICAgICAgICB0aHJlYWRfbW9kdWxlID0gX2J1aWx0aW5fZnJvbV9uYW1lKCdfdGhyZWFkJykKQEAgLTI0MzUsMjcgKzExMjgsMTUgQEAKICAgICB3ZWFrcmVmX21vZHVsZSA9IF9idWlsdGluX2Zyb21fbmFtZSgnX3dlYWtyZWYnKQogICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfd2Vha3JlZicsIHdlYWtyZWZfbW9kdWxlKQogCi0gICAgIyBEaXJlY3RseSBsb2FkIHRoZSB3aW5yZWcgbW9kdWxlIChuZWVkZWQgZHVyaW5nIGJvb3RzdHJhcCkuCi0gICAgaWYgYnVpbHRpbl9vcyA9PSAnbnQnOgotICAgICAgICB3aW5yZWdfbW9kdWxlID0gX2J1aWx0aW5fZnJvbV9uYW1lKCd3aW5yZWcnKQotICAgICAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAnX3dpbnJlZycsIHdpbnJlZ19tb2R1bGUpCi0KLSAgICAjIENvbnN0YW50cwotICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfcmVsYXhfY2FzZScsIF9tYWtlX3JlbGF4X2Nhc2UoKSkKLSAgICBFWFRFTlNJT05fU1VGRklYRVMuZXh0ZW5kKF9pbXAuZXh0ZW5zaW9uX3N1ZmZpeGVzKCkpCi0gICAgaWYgYnVpbHRpbl9vcyA9PSAnbnQnOgotICAgICAgICBTT1VSQ0VfU1VGRklYRVMuYXBwZW5kKCcucHl3JykKLSAgICAgICAgaWYgJ19kLnB5ZCcgaW4gRVhURU5TSU9OX1NVRkZJWEVTOgotICAgICAgICAgICAgV2luZG93c1JlZ2lzdHJ5RmluZGVyLkRFQlVHX0JVSUxEID0gVHJ1ZQotCiAKIGRlZiBfaW5zdGFsbChzeXNfbW9kdWxlLCBfaW1wX21vZHVsZSk6CiAgICAgIiIiSW5zdGFsbCBpbXBvcnRsaWIgYXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGltcG9ydC4iIiIKICAgICBfc2V0dXAoc3lzX21vZHVsZSwgX2ltcF9tb2R1bGUpCi0gICAgc3VwcG9ydGVkX2xvYWRlcnMgPSBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKQotICAgIHN5cy5wYXRoX2hvb2tzLmV4dGVuZChbRmlsZUZpbmRlci5wYXRoX2hvb2soKnN1cHBvcnRlZF9sb2FkZXJzKV0pCisKICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChCdWlsdGluSW1wb3J0ZXIpCiAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoRnJvemVuSW1wb3J0ZXIpCi0gICAgaWYgX29zLl9fbmFtZV9fID09ICdudCc6Ci0gICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKFdpbmRvd3NSZWdpc3RyeUZpbmRlcikKLSAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChQYXRoRmluZGVyKQorCisgICAgZ2xvYmFsIF9ib290c3RyYXBfZXh0ZXJuYWwKKyAgICBpbXBvcnQgX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwKKyAgICBfYm9vdHN0cmFwX2V4dGVybmFsID0gX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwKKyAgICBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbC5faW5zdGFsbChzeXMubW9kdWxlc1tfX25hbWVfX10pCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE2YjE3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weQpAQCAtMCwwICsxLDE0MjYgQEAKKyIiIkNvcmUgaW1wbGVtZW50YXRpb24gb2YgcGF0aC1iYXNlZCBpbXBvcnQuCisKK1RoaXMgbW9kdWxlIGlzIE5PVCBtZWFudCB0byBiZSBkaXJlY3RseSBpbXBvcnRlZCEgSXQgaGFzIGJlZW4gZGVzaWduZWQgc3VjaAordGhhdCBpdCBjYW4gYmUgYm9vdHN0cmFwcGVkIGludG8gUHl0aG9uIGFzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBpbXBvcnQuIEFzCitzdWNoIGl0IHJlcXVpcmVzIHRoZSBpbmplY3Rpb24gb2Ygc3BlY2lmaWMgbW9kdWxlcyBhbmQgYXR0cmlidXRlcyBpbiBvcmRlciB0bword29yay4gT25lIHNob3VsZCB1c2UgaW1wb3J0bGliIGFzIHRoZSBwdWJsaWMtZmFjaW5nIHZlcnNpb24gb2YgdGhpcyBtb2R1bGUuCisKKyIiIgorIworIyBJTVBPUlRBTlQ6IFdoZW5ldmVyIG1ha2luZyBjaGFuZ2VzIHRvIHRoaXMgbW9kdWxlLCBiZSBzdXJlIHRvIHJ1bgorIyBhIHRvcC1sZXZlbCBtYWtlIGluIG9yZGVyIHRvIGdldCB0aGUgZnJvemVuIHZlcnNpb24gb2YgdGhlIG1vZHVsZQorIyB1cGRhdGVkLiBOb3QgZG9pbmcgc28gd2lsbCByZXN1bHQgaW4gdGhlIE1ha2VmaWxlIHRvIGZhaWwgZm9yCisjIGFsbCBvdGhlcnMgd2hvIGRvbid0IGhhdmUgYSAuL3B5dGhvbiBhcm91bmQgdG8gZnJlZXplIHRoZSBtb2R1bGUKKyMgaW4gdGhlIGVhcmx5IHN0YWdlcyBvZiBjb21waWxhdGlvbi4KKyMKKworIyBTZWUgaW1wb3J0bGliLl9zZXR1cCgpIGZvciB3aGF0IGlzIGluamVjdGVkIGludG8gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisKKyMgV2hlbiBlZGl0aW5nIHRoaXMgY29kZSBiZSBhd2FyZSB0aGF0IGNvZGUgZXhlY3V0ZWQgYXQgaW1wb3J0IHRpbWUgQ0FOTk9UCisjIHJlZmVyZW5jZSBhbnkgaW5qZWN0ZWQgb2JqZWN0cyEgVGhpcyBpbmNsdWRlcyBub3Qgb25seSBnbG9iYWwgY29kZSBidXQgYWxzbworIyBhbnl0aGluZyBzcGVjaWZpZWQgYXQgdGhlIGNsYXNzIGxldmVsLgorCisjIEJvb3RzdHJhcC1yZWxhdGVkIGNvZGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK19DQVNFX0lOU0VOU0lUSVZFX1BMQVRGT1JNUyA9ICd3aW4nLCAnY3lnd2luJywgJ2RhcndpbicKKworCitkZWYgX21ha2VfcmVsYXhfY2FzZSgpOgorICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKF9DQVNFX0lOU0VOU0lUSVZFX1BMQVRGT1JNUyk6CisgICAgICAgIGRlZiBfcmVsYXhfY2FzZSgpOgorICAgICAgICAgICAgIiIiVHJ1ZSBpZiBmaWxlbmFtZXMgbXVzdCBiZSBjaGVja2VkIGNhc2UtaW5zZW5zaXRpdmVseS4iIiIKKyAgICAgICAgICAgIHJldHVybiBiJ1BZVEhPTkNBU0VPSycgaW4gX29zLmVudmlyb24KKyAgICBlbHNlOgorICAgICAgICBkZWYgX3JlbGF4X2Nhc2UoKToKKyAgICAgICAgICAgICIiIlRydWUgaWYgZmlsZW5hbWVzIG11c3QgYmUgY2hlY2tlZCBjYXNlLWluc2Vuc2l0aXZlbHkuIiIiCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gX3JlbGF4X2Nhc2UKKworCitkZWYgX3dfbG9uZyh4KToKKyAgICAiIiJDb252ZXJ0IGEgMzItYml0IGludGVnZXIgdG8gbGl0dGxlLWVuZGlhbi4iIiIKKyAgICByZXR1cm4gKGludCh4KSAmIDB4RkZGRkZGRkYpLnRvX2J5dGVzKDQsICdsaXR0bGUnKQorCisKK2RlZiBfcl9sb25nKGludF9ieXRlcyk6CisgICAgIiIiQ29udmVydCA0IGJ5dGVzIGluIGxpdHRsZS1lbmRpYW4gdG8gYW4gaW50ZWdlci4iIiIKKyAgICByZXR1cm4gaW50LmZyb21fYnl0ZXMoaW50X2J5dGVzLCAnbGl0dGxlJykKKworCitkZWYgX3BhdGhfam9pbigqcGF0aF9wYXJ0cyk6CisgICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguam9pbigpLiIiIgorICAgIHJldHVybiBwYXRoX3NlcC5qb2luKFtwYXJ0LnJzdHJpcChwYXRoX3NlcGFyYXRvcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwYXJ0IGluIHBhdGhfcGFydHMgaWYgcGFydF0pCisKKworZGVmIF9wYXRoX3NwbGl0KHBhdGgpOgorICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLnNwbGl0KCkuIiIiCisgICAgaWYgbGVuKHBhdGhfc2VwYXJhdG9ycykgPT0gMToKKyAgICAgICAgZnJvbnQsIF8sIHRhaWwgPSBwYXRoLnJwYXJ0aXRpb24ocGF0aF9zZXApCisgICAgICAgIHJldHVybiBmcm9udCwgdGFpbAorICAgIGZvciB4IGluIHJldmVyc2VkKHBhdGgpOgorICAgICAgICBpZiB4IGluIHBhdGhfc2VwYXJhdG9yczoKKyAgICAgICAgICAgIGZyb250LCB0YWlsID0gcGF0aC5yc3BsaXQoeCwgbWF4c3BsaXQ9MSkKKyAgICAgICAgICAgIHJldHVybiBmcm9udCwgdGFpbAorICAgIHJldHVybiAnJywgcGF0aAorCisKK2RlZiBfcGF0aF9zdGF0KHBhdGgpOgorICAgICIiIlN0YXQgdGhlIHBhdGguCisKKyAgICBNYWRlIGEgc2VwYXJhdGUgZnVuY3Rpb24gdG8gbWFrZSBpdCBlYXNpZXIgdG8gb3ZlcnJpZGUgaW4gZXhwZXJpbWVudHMKKyAgICAoZS5nLiBjYWNoZSBzdGF0IHJlc3VsdHMpLgorCisgICAgIiIiCisgICAgcmV0dXJuIF9vcy5zdGF0KHBhdGgpCisKKworZGVmIF9wYXRoX2lzX21vZGVfdHlwZShwYXRoLCBtb2RlKToKKyAgICAiIiJUZXN0IHdoZXRoZXIgdGhlIHBhdGggaXMgdGhlIHNwZWNpZmllZCBtb2RlIHR5cGUuIiIiCisgICAgdHJ5OgorICAgICAgICBzdGF0X2luZm8gPSBfcGF0aF9zdGF0KHBhdGgpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiAoc3RhdF9pbmZvLnN0X21vZGUgJiAwbzE3MDAwMCkgPT0gbW9kZQorCisKK2RlZiBfcGF0aF9pc2ZpbGUocGF0aCk6CisgICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguaXNmaWxlLiIiIgorICAgIHJldHVybiBfcGF0aF9pc19tb2RlX3R5cGUocGF0aCwgMG8xMDAwMDApCisKKworZGVmIF9wYXRoX2lzZGlyKHBhdGgpOgorICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmlzZGlyLiIiIgorICAgIGlmIG5vdCBwYXRoOgorICAgICAgICBwYXRoID0gX29zLmdldGN3ZCgpCisgICAgcmV0dXJuIF9wYXRoX2lzX21vZGVfdHlwZShwYXRoLCAwbzA0MDAwMCkKKworCitkZWYgX3dyaXRlX2F0b21pYyhwYXRoLCBkYXRhLCBtb2RlPTBvNjY2KToKKyAgICAiIiJCZXN0LWVmZm9ydCBmdW5jdGlvbiB0byB3cml0ZSBkYXRhIHRvIGEgcGF0aCBhdG9taWNhbGx5LgorICAgIEJlIHByZXBhcmVkIHRvIGhhbmRsZSBhIEZpbGVFeGlzdHNFcnJvciBpZiBjb25jdXJyZW50IHdyaXRpbmcgb2YgdGhlCisgICAgdGVtcG9yYXJ5IGZpbGUgaXMgYXR0ZW1wdGVkLiIiIgorICAgICMgaWQoKSBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgcHNldWRvLXJhbmRvbSBmaWxlbmFtZS4KKyAgICBwYXRoX3RtcCA9ICd7fS57fScuZm9ybWF0KHBhdGgsIGlkKHBhdGgpKQorICAgIGZkID0gX29zLm9wZW4ocGF0aF90bXAsCisgICAgICAgICAgICAgICAgICBfb3MuT19FWENMIHwgX29zLk9fQ1JFQVQgfCBfb3MuT19XUk9OTFksIG1vZGUgJiAwbzY2NikKKyAgICB0cnk6CisgICAgICAgICMgV2UgZmlyc3Qgd3JpdGUgZGF0YSB0byBhIHRlbXBvcmFyeSBmaWxlLCBhbmQgdGhlbiB1c2Ugb3MucmVwbGFjZSgpIHRvCisgICAgICAgICMgcGVyZm9ybSBhbiBhdG9taWMgcmVuYW1lLgorICAgICAgICB3aXRoIF9pby5GaWxlSU8oZmQsICd3YicpIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlLndyaXRlKGRhdGEpCisgICAgICAgIF9vcy5yZXBsYWNlKHBhdGhfdG1wLCBwYXRoKQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBfb3MudW5saW5rKHBhdGhfdG1wKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcmFpc2UKKworCitfY29kZV90eXBlID0gdHlwZShfd3JpdGVfYXRvbWljLl9fY29kZV9fKQorCisKKyMgRmluZGVyL2xvYWRlciB1dGlsaXR5IGNvZGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBNYWdpYyB3b3JkIHRvIHJlamVjdCAucHljIGZpbGVzIGdlbmVyYXRlZCBieSBvdGhlciBQeXRob24gdmVyc2lvbnMuCisjIEl0IHNob3VsZCBjaGFuZ2UgZm9yIGVhY2ggaW5jb21wYXRpYmxlIGNoYW5nZSB0byB0aGUgYnl0ZWNvZGUuCisjCisjIFRoZSB2YWx1ZSBvZiBDUiBhbmQgTEYgaXMgaW5jb3Jwb3JhdGVkIHNvIGlmIHlvdSBldmVyIHJlYWQgb3Igd3JpdGUKKyMgYSAucHljIGZpbGUgaW4gdGV4dCBtb2RlIHRoZSBtYWdpYyBudW1iZXIgd2lsbCBiZSB3cm9uZzsgYWxzbywgdGhlCisjIEFwcGxlIE1QVyBjb21waWxlciBzd2FwcyB0aGVpciB2YWx1ZXMsIGJvdGNoaW5nIHN0cmluZyBjb25zdGFudHMuCisjCisjIFRoZSBtYWdpYyBudW1iZXJzIG11c3QgYmUgc3BhY2VkIGFwYXJ0IGF0IGxlYXN0IDIgdmFsdWVzLCBhcyB0aGUKKyMgLVUgaW50ZXJwZXRlciBmbGFnIHdpbGwgY2F1c2UgTUFHSUMrMSBiZWluZyB1c2VkLiBUaGV5IGhhdmUgYmVlbgorIyBvZGQgbnVtYmVycyBmb3Igc29tZSB0aW1lIG5vdy4KKyMKKyMgVGhlcmUgd2VyZSBhIHZhcmlldHkgb2Ygb2xkIHNjaGVtZXMgZm9yIHNldHRpbmcgdGhlIG1hZ2ljIG51bWJlci4KKyMgVGhlIGN1cnJlbnQgd29ya2luZyBzY2hlbWUgaXMgdG8gaW5jcmVtZW50IHRoZSBwcmV2aW91cyB2YWx1ZSBieQorIyAxMC4KKyMKKyMgU3RhcnRpbmcgd2l0aCB0aGUgYWRvcHRpb24gb2YgUEVQIDMxNDcgaW4gUHl0aG9uIDMuMiwgZXZlcnkgYnVtcCBpbiBtYWdpYworIyBudW1iZXIgYWxzbyBpbmNsdWRlcyBhIG5ldyAibWFnaWMgdGFnIiwgaS5lLiBhIGh1bWFuIHJlYWRhYmxlIHN0cmluZyB1c2VkCisjIHRvIHJlcHJlc2VudCB0aGUgbWFnaWMgbnVtYmVyIGluIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzLiAgV2hlbiB5b3UgY2hhbmdlCisjIHRoZSBtYWdpYyBudW1iZXIsIHlvdSBtdXN0IGFsc28gc2V0IGEgbmV3IHVuaXF1ZSBtYWdpYyB0YWcuICBHZW5lcmFsbHkgdGhpcworIyBjYW4gYmUgbmFtZWQgYWZ0ZXIgdGhlIFB5dGhvbiBtYWpvciB2ZXJzaW9uIG9mIHRoZSBtYWdpYyBudW1iZXIgYnVtcCwgYnV0CisjIGl0IGNhbiByZWFsbHkgYmUgYW55dGhpbmcsIGFzIGxvbmcgYXMgaXQncyBkaWZmZXJlbnQgdGhhbiBhbnl0aGluZyBlbHNlCisjIHRoYXQncyBjb21lIGJlZm9yZS4gIFRoZSB0YWdzIGFyZSBpbmNsdWRlZCBpbiB0aGUgZm9sbG93aW5nIHRhYmxlLCBzdGFydGluZworIyB3aXRoIFB5dGhvbiAzLjJhMC4KKyMKKyMgS25vd24gdmFsdWVzOgorIyAgUHl0aG9uIDEuNTogICAyMDEyMQorIyAgUHl0aG9uIDEuNS4xOiAyMDEyMQorIyAgICAgUHl0aG9uIDEuNS4yOiAyMDEyMQorIyAgICAgUHl0aG9uIDEuNjogICA1MDQyOAorIyAgICAgUHl0aG9uIDIuMDogICA1MDgyMworIyAgICAgUHl0aG9uIDIuMC4xOiA1MDgyMworIyAgICAgUHl0aG9uIDIuMTogICA2MDIwMgorIyAgICAgUHl0aG9uIDIuMS4xOiA2MDIwMgorIyAgICAgUHl0aG9uIDIuMS4yOiA2MDIwMgorIyAgICAgUHl0aG9uIDIuMjogICA2MDcxNworIyAgICAgUHl0aG9uIDIuM2EwOiA2MjAxMQorIyAgICAgUHl0aG9uIDIuM2EwOiA2MjAyMQorIyAgICAgUHl0aG9uIDIuM2EwOiA2MjAxMSAoISkKKyMgICAgIFB5dGhvbiAyLjRhMDogNjIwNDEKKyMgICAgIFB5dGhvbiAyLjRhMzogNjIwNTEKKyMgICAgIFB5dGhvbiAyLjRiMTogNjIwNjEKKyMgICAgIFB5dGhvbiAyLjVhMDogNjIwNzEKKyMgICAgIFB5dGhvbiAyLjVhMDogNjIwODEgKGFzdC1icmFuY2gpCisjICAgICBQeXRob24gMi41YTA6IDYyMDkxICh3aXRoKQorIyAgICAgUHl0aG9uIDIuNWEwOiA2MjA5MiAoY2hhbmdlZCBXSVRIX0NMRUFOVVAgb3Bjb2RlKQorIyAgICAgUHl0aG9uIDIuNWIzOiA2MjEwMSAoZml4IHdyb25nIGNvZGU6IGZvciB4LCBpbiAuLi4pCisjICAgICBQeXRob24gMi41YjM6IDYyMTExIChmaXggd3JvbmcgY29kZTogeCArPSB5aWVsZCkKKyMgICAgIFB5dGhvbiAyLjVjMTogNjIxMjEgKGZpeCB3cm9uZyBsbm90YWIgd2l0aCBmb3IgbG9vcHMgYW5kCisjICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yaW5nIGNvbnN0YW50cyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCkKKyMgICAgIFB5dGhvbiAyLjVjMjogNjIxMzEgKGZpeCB3cm9uZyBjb2RlOiBmb3IgeCwgaW4gLi4uIGluIGxpc3Rjb21wL2dlbmV4cCkKKyMgICAgIFB5dGhvbiAyLjZhMDogNjIxNTEgKHBlZXBob2xlIG9wdGltaXphdGlvbnMgYW5kIFNUT1JFX01BUCBvcGNvZGUpCisjICAgICBQeXRob24gMi42YTE6IDYyMTYxIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKQorIyAgICAgUHl0aG9uIDIuN2EwOiA2MjE3MSAob3B0aW1pemUgbGlzdCBjb21wcmVoZW5zaW9ucy9jaGFuZ2UgTElTVF9BUFBFTkQpCisjICAgICBQeXRob24gMi43YTA6IDYyMTgxIChvcHRpbWl6ZSBjb25kaXRpb25hbCBicmFuY2hlczoKKyMgICAgICAgICAgICAgICAgICAgICAgICAgIGludHJvZHVjZSBQT1BfSlVNUF9JRl9GQUxTRSBhbmQgUE9QX0pVTVBfSUZfVFJVRSkKKyMgICAgIFB5dGhvbiAyLjdhMCAgNjIxOTEgKGludHJvZHVjZSBTRVRVUF9XSVRIKQorIyAgICAgUHl0aG9uIDIuN2EwICA2MjIwMSAoaW50cm9kdWNlIEJVSUxEX1NFVCkKKyMgICAgIFB5dGhvbiAyLjdhMCAgNjIyMTEgKGludHJvZHVjZSBNQVBfQUREIGFuZCBTRVRfQUREKQorIyAgICAgUHl0aG9uIDMwMDA6ICAgMzAwMAorIyAgICAgICAgICAgICAgICAgICAgMzAxMCAocmVtb3ZlZCBVTkFSWV9DT05WRVJUKQorIyAgICAgICAgICAgICAgICAgICAgMzAyMCAoYWRkZWQgQlVJTERfU0VUKQorIyAgICAgICAgICAgICAgICAgICAgMzAzMCAoYWRkZWQga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMpCisjICAgICAgICAgICAgICAgICAgICAzMDQwIChhZGRlZCBzaWduYXR1cmUgYW5ub3RhdGlvbnMpCisjICAgICAgICAgICAgICAgICAgICAzMDUwIChwcmludCBiZWNvbWVzIGEgZnVuY3Rpb24pCisjICAgICAgICAgICAgICAgICAgICAzMDYwIChQRVAgMzExNSBtZXRhY2xhc3Mgc3ludGF4KQorIyAgICAgICAgICAgICAgICAgICAgMzA2MSAoc3RyaW5nIGxpdGVyYWxzIGJlY29tZSB1bmljb2RlKQorIyAgICAgICAgICAgICAgICAgICAgMzA3MSAoUEVQIDMxMDkgcmFpc2UgY2hhbmdlcykKKyMgICAgICAgICAgICAgICAgICAgIDMwODEgKFBFUCAzMTM3IG1ha2UgX19maWxlX18gYW5kIF9fbmFtZV9fIHVuaWNvZGUpCisjICAgICAgICAgICAgICAgICAgICAzMDkxIChraWxsIHN0cjggaW50ZXJuaW5nKQorIyAgICAgICAgICAgICAgICAgICAgMzEwMSAobWVyZ2UgZnJvbSAyLjZhMCwgc2VlIDYyMTUxKQorIyAgICAgICAgICAgICAgICAgICAgMzEwMyAoX19maWxlX18gcG9pbnRzIHRvIHNvdXJjZSBmaWxlKQorIyAgICAgUHl0aG9uIDMuMGE0OiAzMTExIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKS4KKyMgICAgIFB5dGhvbiAzLjBhNTogMzEzMSAobGV4aWNhbCBleGNlcHRpb24gc3RhY2tpbmcsIGluY2x1ZGluZyBQT1BfRVhDRVBUKQorIyAgICAgUHl0aG9uIDMuMWEwOiAzMTQxIChvcHRpbWl6ZSBsaXN0LCBzZXQgYW5kIGRpY3QgY29tcHJlaGVuc2lvbnM6CisjICAgICAgICAgICAgIGNoYW5nZSBMSVNUX0FQUEVORCBhbmQgU0VUX0FERCwgYWRkIE1BUF9BREQpCisjICAgICBQeXRob24gMy4xYTA6IDMxNTEgKG9wdGltaXplIGNvbmRpdGlvbmFsIGJyYW5jaGVzOgorIyAgICAgICAgICAgICBpbnRyb2R1Y2UgUE9QX0pVTVBfSUZfRkFMU0UgYW5kIFBPUF9KVU1QX0lGX1RSVUUpCisjICAgICBQeXRob24gMy4yYTA6IDMxNjAgKGFkZCBTRVRVUF9XSVRIKQorIyAgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKKyMgICAgIFB5dGhvbiAzLjJhMTogMzE3MCAoYWRkIERVUF9UT1BfVFdPLCByZW1vdmUgRFVQX1RPUFggYW5kIFJPVF9GT1VSKQorIyAgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKKyMgICAgIFB5dGhvbiAzLjJhMiAgMzE4MCAoYWRkIERFTEVURV9ERVJFRikKKyMgICAgIFB5dGhvbiAzLjNhMCAgMzE5MCBfX2NsYXNzX18gc3VwZXIgY2xvc3VyZSBjaGFuZ2VkCisjICAgICBQeXRob24gMy4zYTAgIDMyMDAgKF9fcXVhbG5hbWVfXyBhZGRlZCkKKyMgICAgICAgICAgICAgICAgICAgICAgMzIxMCAoYWRkZWQgc2l6ZSBtb2R1bG8gMioqMzIgdG8gdGhlIHB5YyBoZWFkZXIpCisjICAgICBQeXRob24gMy4zYTEgIDMyMjAgKGNoYW5nZWQgUEVQIDM4MCBpbXBsZW1lbnRhdGlvbikKKyMgICAgIFB5dGhvbiAzLjNhNCAgMzIzMCAocmV2ZXJ0IGNoYW5nZXMgdG8gaW1wbGljaXQgX19jbGFzc19fIGNsb3N1cmUpCisjICAgICBQeXRob24gMy40YTEgIDMyNTAgKGV2YWx1YXRlIHBvc2l0aW9uYWwgZGVmYXVsdCBhcmd1bWVudHMgYmVmb3JlCisjICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZC1vbmx5IGRlZmF1bHRzKQorIyAgICAgUHl0aG9uIDMuNGExICAzMjYwIChhZGQgTE9BRF9DTEFTU0RFUkVGOyBhbGxvdyBsb2NhbHMgb2YgY2xhc3MgdG8gb3ZlcnJpZGUKKyMgICAgICAgICAgICAgICAgICAgICAgICBmcmVlIHZhcnMpCisjICAgICBQeXRob24gMy40YTEgIDMyNzAgKHZhcmlvdXMgdHdlYWtzIHRvIHRoZSBfX2NsYXNzX18gY2xvc3VyZSkKKyMgICAgIFB5dGhvbiAzLjRhMSAgMzI4MCAocmVtb3ZlIGltcGxpY2l0IGNsYXNzIGFyZ3VtZW50KQorIyAgICAgUHl0aG9uIDMuNGE0ICAzMjkwIChjaGFuZ2VzIHRvIF9fcXVhbG5hbWVfXyBjb21wdXRhdGlvbikKKyMgICAgIFB5dGhvbiAzLjRhNCAgMzMwMCAobW9yZSBjaGFuZ2VzIHRvIF9fcXVhbG5hbWVfXyBjb21wdXRhdGlvbikKKyMgICAgIFB5dGhvbiAzLjRyYzIgMzMxMCAoYWx0ZXIgX19xdWFsbmFtZV9fIGNvbXB1dGF0aW9uKQorIyAgICAgUHl0aG9uIDMuNWEwICAzMzIwIChtYXRyaXggbXVsdGlwbGljYXRpb24gb3BlcmF0b3IpCisjICAgICBQeXRob24gMy41YjEgIDMzMzAgKFBFUCA0NDg6IEFkZGl0aW9uYWwgVW5wYWNraW5nIEdlbmVyYWxpemF0aW9ucykKKyMgICAgIFB5dGhvbiAzLjViMiAgMzM0MCAoZml4IGRpY3Rpb25hcnkgZGlzcGxheSBldmFsdWF0aW9uIG9yZGVyICMxMTIwNSkKKyMgICAgIFB5dGhvbiAzLjViMiAgMzM1MCAoYWRkIEdFVF9ZSUVMRF9GUk9NX0lURVIgb3Bjb2RlICMyNDQwMCkKKyMKKyMgTUFHSUMgbXVzdCBjaGFuZ2Ugd2hlbmV2ZXIgdGhlIGJ5dGVjb2RlIGVtaXR0ZWQgYnkgdGhlIGNvbXBpbGVyIG1heSBubworIyBsb25nZXIgYmUgdW5kZXJzdG9vZCBieSBvbGRlciBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGV2YWwgbG9vcCAodXN1YWxseQorIyBkdWUgdG8gdGhlIGFkZGl0aW9uIG9mIG5ldyBvcGNvZGVzKS4KKworTUFHSUNfTlVNQkVSID0gKDMzNTApLnRvX2J5dGVzKDIsICdsaXR0bGUnKSArIGInXHJcbicKK19SQVdfTUFHSUNfTlVNQkVSID0gaW50LmZyb21fYnl0ZXMoTUFHSUNfTlVNQkVSLCAnbGl0dGxlJykgICMgRm9yIGltcG9ydC5jCisKK19QWUNBQ0hFID0gJ19fcHljYWNoZV9fJworX09QVCA9ICdvcHQtJworCitTT1VSQ0VfU1VGRklYRVMgPSBbJy5weSddICAjIF9zZXR1cCgpIGFkZHMgLnB5dyBhcyBuZWVkZWQuCisKK0JZVEVDT0RFX1NVRkZJWEVTID0gWycucHljJ10KKyMgRGVwcmVjYXRlZC4KK0RFQlVHX0JZVEVDT0RFX1NVRkZJWEVTID0gT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTID0gQllURUNPREVfU1VGRklYRVMKKworZGVmIGNhY2hlX2Zyb21fc291cmNlKHBhdGgsIGRlYnVnX292ZXJyaWRlPU5vbmUsICosIG9wdGltaXphdGlvbj1Ob25lKToKKyAgICAiIiJHaXZlbiB0aGUgcGF0aCB0byBhIC5weSBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weWMgZmlsZS4KKworICAgIFRoZSAucHkgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvIHRoZQorICAgIC5weWMgZmlsZSBjYWxjdWxhdGVkIGFzIGlmIHRoZSAucHkgZmlsZSB3ZXJlIGltcG9ydGVkLgorCisgICAgVGhlICdvcHRpbWl6YXRpb24nIHBhcmFtZXRlciBjb250cm9scyB0aGUgcHJlc3VtZWQgb3B0aW1pemF0aW9uIGxldmVsIG9mCisgICAgdGhlIGJ5dGVjb2RlIGZpbGUuIElmICdvcHRpbWl6YXRpb24nIGlzIG5vdCBOb25lLCB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uCisgICAgb2YgdGhlIGFyZ3VtZW50IGlzIHRha2VuIGFuZCB2ZXJpZmllZCB0byBiZSBhbHBoYW51bWVyaWMgKGVsc2UgVmFsdWVFcnJvcgorICAgIGlzIHJhaXNlZCkuCisKKyAgICBUaGUgZGVidWdfb3ZlcnJpZGUgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQuIElmIGRlYnVnX292ZXJyaWRlIGlzIG5vdCBOb25lLAorICAgIGEgVHJ1ZSB2YWx1ZSBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nICdvcHRpbWl6YXRpb24nIHRvIHRoZSBlbXB0eSBzdHJpbmcKKyAgICB3aGlsZSBhIEZhbHNlIHZhbHVlIGlzIGVxdWl2YWxlbnQgdG8gc2V0dGluZyAnb3B0aW1pemF0aW9uJyB0byAnMScuCisKKyAgICBJZiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUgdGhlbiBOb3RJbXBsZW1lbnRlZEVycm9yIGlzIHJhaXNlZC4KKworICAgICIiIgorICAgIGlmIGRlYnVnX292ZXJyaWRlIGlzIG5vdCBOb25lOgorICAgICAgICBfd2FybmluZ3Mud2FybigndGhlIGRlYnVnX292ZXJyaWRlIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkOyB1c2UgJworICAgICAgICAgICAgICAgICAgICAgICAiJ29wdGltaXphdGlvbicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgaWYgb3B0aW1pemF0aW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbWVzc2FnZSA9ICdkZWJ1Z19vdmVycmlkZSBvciBvcHRpbWl6YXRpb24gbXVzdCBiZSBzZXQgdG8gTm9uZScKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtZXNzYWdlKQorICAgICAgICBvcHRpbWl6YXRpb24gPSAnJyBpZiBkZWJ1Z19vdmVycmlkZSBlbHNlIDEKKyAgICBoZWFkLCB0YWlsID0gX3BhdGhfc3BsaXQocGF0aCkKKyAgICBiYXNlLCBzZXAsIHJlc3QgPSB0YWlsLnJwYXJ0aXRpb24oJy4nKQorICAgIHRhZyA9IHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcKKyAgICBpZiB0YWcgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lJykKKyAgICBhbG1vc3RfZmlsZW5hbWUgPSAnJy5qb2luKFsoYmFzZSBpZiBiYXNlIGVsc2UgcmVzdCksIHNlcCwgdGFnXSkKKyAgICBpZiBvcHRpbWl6YXRpb24gaXMgTm9uZToKKyAgICAgICAgaWYgc3lzLmZsYWdzLm9wdGltaXplID09IDA6CisgICAgICAgICAgICBvcHRpbWl6YXRpb24gPSAnJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3B0aW1pemF0aW9uID0gc3lzLmZsYWdzLm9wdGltaXplCisgICAgb3B0aW1pemF0aW9uID0gc3RyKG9wdGltaXphdGlvbikKKyAgICBpZiBvcHRpbWl6YXRpb24gIT0gJyc6CisgICAgICAgIGlmIG5vdCBvcHRpbWl6YXRpb24uaXNhbG51bSgpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigneyFyfSBpcyBub3QgYWxwaGFudW1lcmljJy5mb3JtYXQob3B0aW1pemF0aW9uKSkKKyAgICAgICAgYWxtb3N0X2ZpbGVuYW1lID0gJ3t9Lnt9e30nLmZvcm1hdChhbG1vc3RfZmlsZW5hbWUsIF9PUFQsIG9wdGltaXphdGlvbikKKyAgICByZXR1cm4gX3BhdGhfam9pbihoZWFkLCBfUFlDQUNIRSwgYWxtb3N0X2ZpbGVuYW1lICsgQllURUNPREVfU1VGRklYRVNbMF0pCisKKworZGVmIHNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpOgorICAgICIiIkdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5Yy4gZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyAucHkgZmlsZS4KKworICAgIFRoZSAucHljIGZpbGUgZG9lcyBub3QgbmVlZCB0byBleGlzdDsgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUgcGF0aCB0bworICAgIHRoZSAucHkgZmlsZSBjYWxjdWxhdGVkIHRvIGNvcnJlc3BvbmQgdG8gdGhlIC5weWMgZmlsZS4gIElmIHBhdGggZG9lcworICAgIG5vdCBjb25mb3JtIHRvIFBFUCAzMTQ3LzQ4OCBmb3JtYXQsIFZhbHVlRXJyb3Igd2lsbCBiZSByYWlzZWQuIElmCisgICAgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lIHRoZW4gTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuCisKKyAgICAiIiIKKyAgICBpZiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3N5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZScpCisgICAgaGVhZCwgcHljYWNoZV9maWxlbmFtZSA9IF9wYXRoX3NwbGl0KHBhdGgpCisgICAgaGVhZCwgcHljYWNoZSA9IF9wYXRoX3NwbGl0KGhlYWQpCisgICAgaWYgcHljYWNoZSAhPSBfUFlDQUNIRToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30gbm90IGJvdHRvbS1sZXZlbCBkaXJlY3RvcnkgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICd7IXJ9Jy5mb3JtYXQoX1BZQ0FDSEUsIHBhdGgpKQorICAgIGRvdF9jb3VudCA9IHB5Y2FjaGVfZmlsZW5hbWUuY291bnQoJy4nKQorICAgIGlmIGRvdF9jb3VudCBub3QgaW4gezIsIDN9OgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdleHBlY3RlZCBvbmx5IDIgb3IgMyBkb3RzIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAneyFyfScuZm9ybWF0KHB5Y2FjaGVfZmlsZW5hbWUpKQorICAgIGVsaWYgZG90X2NvdW50ID09IDM6CisgICAgICAgIG9wdGltaXphdGlvbiA9IHB5Y2FjaGVfZmlsZW5hbWUucnNwbGl0KCcuJywgMilbLTJdCisgICAgICAgIGlmIG5vdCBvcHRpbWl6YXRpb24uc3RhcnRzd2l0aChfT1BUKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm9wdGltaXphdGlvbiBwb3J0aW9uIG9mIGZpbGVuYW1lIGRvZXMgbm90IHN0YXJ0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGggeyFyfSIuZm9ybWF0KF9PUFQpKQorICAgICAgICBvcHRfbGV2ZWwgPSBvcHRpbWl6YXRpb25bbGVuKF9PUFQpOl0KKyAgICAgICAgaWYgbm90IG9wdF9sZXZlbC5pc2FsbnVtKCk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJvcHRpbWl6YXRpb24gbGV2ZWwgeyFyfSBpcyBub3QgYW4gYWxwaGFudW1lcmljICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIi5mb3JtYXQob3B0aW1pemF0aW9uKSkKKyAgICBiYXNlX2ZpbGVuYW1lID0gcHljYWNoZV9maWxlbmFtZS5wYXJ0aXRpb24oJy4nKVswXQorICAgIHJldHVybiBfcGF0aF9qb2luKGhlYWQsIGJhc2VfZmlsZW5hbWUgKyBTT1VSQ0VfU1VGRklYRVNbMF0pCisKKworZGVmIF9nZXRfc291cmNlZmlsZShieXRlY29kZV9wYXRoKToKKyAgICAiIiJDb252ZXJ0IGEgYnl0ZWNvZGUgZmlsZSBwYXRoIHRvIGEgc291cmNlIHBhdGggKGlmIHBvc3NpYmxlKS4KKworICAgIFRoaXMgZnVuY3Rpb24gZXhpc3RzIHB1cmVseSBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZm9yCisgICAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoRmlsZW5hbWVzKCkgaW4gdGhlIEMgQVBJLgorCisgICAgIiIiCisgICAgaWYgbGVuKGJ5dGVjb2RlX3BhdGgpID09IDA6CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmVzdCwgXywgZXh0ZW5zaW9uID0gYnl0ZWNvZGVfcGF0aC5ycGFydGl0aW9uKCcuJykKKyAgICBpZiBub3QgcmVzdCBvciBleHRlbnNpb24ubG93ZXIoKVstMzotMV0gIT0gJ3B5JzoKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlX3BhdGgKKyAgICB0cnk6CisgICAgICAgIHNvdXJjZV9wYXRoID0gc291cmNlX2Zyb21fY2FjaGUoYnl0ZWNvZGVfcGF0aCkKKyAgICBleGNlcHQgKE5vdEltcGxlbWVudGVkRXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICBzb3VyY2VfcGF0aCA9IGJ5dGVjb2RlX3BhdGhbOi0xXQorICAgIHJldHVybiBzb3VyY2VfcGF0aCBpZiBfcGF0aF9pc2ZpbGUoc291cmNlX3BhdGgpIGVsc2UgYnl0ZWNvZGVfcGF0aAorCisKK2RlZiBfZ2V0X2NhY2hlZChmaWxlbmFtZSk6CisgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgodHVwbGUoU09VUkNFX1NVRkZJWEVTKSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBjYWNoZV9mcm9tX3NvdXJjZShmaWxlbmFtZSkKKyAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgZWxpZiBmaWxlbmFtZS5lbmRzd2l0aCh0dXBsZShCWVRFQ09ERV9TVUZGSVhFUykpOgorICAgICAgICByZXR1cm4gZmlsZW5hbWUKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQorCisKK2RlZiBfY2FsY19tb2RlKHBhdGgpOgorICAgICIiIkNhbGN1bGF0ZSB0aGUgbW9kZSBwZXJtaXNzaW9ucyBmb3IgYSBieXRlY29kZSBmaWxlLiIiIgorICAgIHRyeToKKyAgICAgICAgbW9kZSA9IF9wYXRoX3N0YXQocGF0aCkuc3RfbW9kZQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBtb2RlID0gMG82NjYKKyAgICAjIFdlIGFsd2F5cyBlbnN1cmUgd3JpdGUgYWNjZXNzIHNvIHdlIGNhbiB1cGRhdGUgY2FjaGVkIGZpbGVzCisgICAgIyBsYXRlciBldmVuIHdoZW4gdGhlIHNvdXJjZSBmaWxlcyBhcmUgcmVhZC1vbmx5IG9uIFdpbmRvd3MgKCM2MDc0KQorICAgIG1vZGUgfD0gMG8yMDAKKyAgICByZXR1cm4gbW9kZQorCisKK2RlZiBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UsICphcmdzLCB2ZXJib3NpdHk9MSk6CisgICAgIiIiUHJpbnQgdGhlIG1lc3NhZ2UgdG8gc3RkZXJyIGlmIC12L1BZVEhPTlZFUkJPU0UgaXMgdHVybmVkIG9uLiIiIgorICAgIGlmIHN5cy5mbGFncy52ZXJib3NlID49IHZlcmJvc2l0eToKKyAgICAgICAgaWYgbm90IG1lc3NhZ2Uuc3RhcnRzd2l0aCgoJyMnLCAnaW1wb3J0ICcpKToKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnIyAnICsgbWVzc2FnZQorICAgICAgICBwcmludChtZXNzYWdlLmZvcm1hdCgqYXJncyksIGZpbGU9c3lzLnN0ZGVycikKKworCitkZWYgX2NoZWNrX25hbWUobWV0aG9kKToKKyAgICAiIiJEZWNvcmF0b3IgdG8gdmVyaWZ5IHRoYXQgdGhlIG1vZHVsZSBiZWluZyByZXF1ZXN0ZWQgbWF0Y2hlcyB0aGUgb25lIHRoZQorICAgIGxvYWRlciBjYW4gaGFuZGxlLgorCisgICAgVGhlIGZpcnN0IGFyZ3VtZW50IChzZWxmKSBtdXN0IGRlZmluZSBfbmFtZSB3aGljaCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzCisgICAgY29tcGFyZWQgYWdhaW5zdC4gSWYgdGhlIGNvbXBhcmlzb24gZmFpbHMgdGhlbiBJbXBvcnRFcnJvciBpcyByYWlzZWQuCisKKyAgICAiIiIKKyAgICBkZWYgX2NoZWNrX25hbWVfd3JhcHBlcihzZWxmLCBuYW1lPU5vbmUsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUKKyAgICAgICAgZWxpZiBzZWxmLm5hbWUgIT0gbmFtZToKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdsb2FkZXIgZm9yICVzIGNhbm5vdCBoYW5kbGUgJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubmFtZSwgbmFtZSksIG5hbWU9bmFtZSkKKyAgICAgICAgcmV0dXJuIG1ldGhvZChzZWxmLCBuYW1lLCAqYXJncywgKiprd2FyZ3MpCisgICAgdHJ5OgorICAgICAgICBfd3JhcCA9IF9ib290c3RyYXAuX3dyYXAKKyAgICBleGNlcHQgTmFtZUVycm9yOgorICAgICAgICAjIFhYWCB5dWNrCisgICAgICAgIGRlZiBfd3JhcChuZXcsIG9sZCk6CisgICAgICAgICAgICBmb3IgcmVwbGFjZSBpbiBbJ19fbW9kdWxlX18nLCAnX19uYW1lX18nLCAnX19xdWFsbmFtZV9fJywgJ19fZG9jX18nXToKKyAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKG9sZCwgcmVwbGFjZSk6CisgICAgICAgICAgICAgICAgICAgIHNldGF0dHIobmV3LCByZXBsYWNlLCBnZXRhdHRyKG9sZCwgcmVwbGFjZSkpCisgICAgICAgICAgICBuZXcuX19kaWN0X18udXBkYXRlKG9sZC5fX2RpY3RfXykKKyAgICBfd3JhcChfY2hlY2tfbmFtZV93cmFwcGVyLCBtZXRob2QpCisgICAgcmV0dXJuIF9jaGVja19uYW1lX3dyYXBwZXIKKworCitkZWYgX2ZpbmRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpOgorICAgICIiIlRyeSB0byBmaW5kIGEgbG9hZGVyIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZSBieSBkZWxlZ2F0aW5nIHRvCisgICAgc2VsZi5maW5kX2xvYWRlcigpLgorCisgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBmaW5kZXIuZmluZF9zcGVjKCkuCisKKyAgICAiIiIKKyAgICAjIENhbGwgZmluZF9sb2FkZXIoKS4gSWYgaXQgcmV0dXJucyBhIHN0cmluZyAoaW5kaWNhdGluZyB0aGlzCisgICAgIyBpcyBhIG5hbWVzcGFjZSBwYWNrYWdlIHBvcnRpb24pLCBnZW5lcmF0ZSBhIHdhcm5pbmcgYW5kCisgICAgIyByZXR1cm4gTm9uZS4KKyAgICBsb2FkZXIsIHBvcnRpb25zID0gc2VsZi5maW5kX2xvYWRlcihmdWxsbmFtZSkKKyAgICBpZiBsb2FkZXIgaXMgTm9uZSBhbmQgbGVuKHBvcnRpb25zKToKKyAgICAgICAgbXNnID0gJ05vdCBpbXBvcnRpbmcgZGlyZWN0b3J5IHt9OiBtaXNzaW5nIF9faW5pdF9fJworICAgICAgICBfd2FybmluZ3Mud2Fybihtc2cuZm9ybWF0KHBvcnRpb25zWzBdKSwgSW1wb3J0V2FybmluZykKKyAgICByZXR1cm4gbG9hZGVyCisKKworZGVmIF92YWxpZGF0ZV9ieXRlY29kZV9oZWFkZXIoZGF0YSwgc291cmNlX3N0YXRzPU5vbmUsIG5hbWU9Tm9uZSwgcGF0aD1Ob25lKToKKyAgICAiIiJWYWxpZGF0ZSB0aGUgaGVhZGVyIG9mIHRoZSBwYXNzZWQtaW4gYnl0ZWNvZGUgYWdhaW5zdCBzb3VyY2Vfc3RhdHMgKGlmCisgICAgZ2l2ZW4pIGFuZCByZXR1cm5pbmcgdGhlIGJ5dGVjb2RlIHRoYXQgY2FuIGJlIGNvbXBpbGVkIGJ5IGNvbXBpbGUoKS4KKworICAgIEFsbCBvdGhlciBhcmd1bWVudHMgYXJlIHVzZWQgdG8gZW5oYW5jZSBlcnJvciByZXBvcnRpbmcuCisKKyAgICBJbXBvcnRFcnJvciBpcyByYWlzZWQgd2hlbiB0aGUgbWFnaWMgbnVtYmVyIGlzIGluY29ycmVjdCBvciB0aGUgYnl0ZWNvZGUgaXMKKyAgICBmb3VuZCB0byBiZSBzdGFsZS4gRU9GRXJyb3IgaXMgcmFpc2VkIHdoZW4gdGhlIGRhdGEgaXMgZm91bmQgdG8gYmUKKyAgICB0cnVuY2F0ZWQuCisKKyAgICAiIiIKKyAgICBleGNfZGV0YWlscyA9IHt9CisgICAgaWYgbmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgZXhjX2RldGFpbHNbJ25hbWUnXSA9IG5hbWUKKyAgICBlbHNlOgorICAgICAgICAjIFRvIHByZXZlbnQgaGF2aW5nIHRvIG1ha2UgYWxsIG1lc3NhZ2VzIGhhdmUgYSBjb25kaXRpb25hbCBuYW1lLgorICAgICAgICBuYW1lID0gJzxieXRlY29kZT4nCisgICAgaWYgcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgZXhjX2RldGFpbHNbJ3BhdGgnXSA9IHBhdGgKKyAgICBtYWdpYyA9IGRhdGFbOjRdCisgICAgcmF3X3RpbWVzdGFtcCA9IGRhdGFbNDo4XQorICAgIHJhd19zaXplID0gZGF0YVs4OjEyXQorICAgIGlmIG1hZ2ljICE9IE1BR0lDX05VTUJFUjoKKyAgICAgICAgbWVzc2FnZSA9ICdiYWQgbWFnaWMgbnVtYmVyIGluIHshcn06IHshcn0nLmZvcm1hdChuYW1lLCBtYWdpYykKKyAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCAqKmV4Y19kZXRhaWxzKQorICAgIGVsaWYgbGVuKHJhd190aW1lc3RhbXApICE9IDQ6CisgICAgICAgIG1lc3NhZ2UgPSAncmVhY2hlZCBFT0Ygd2hpbGUgcmVhZGluZyB0aW1lc3RhbXAgaW4geyFyfScuZm9ybWF0KG5hbWUpCisgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKKyAgICAgICAgcmFpc2UgRU9GRXJyb3IobWVzc2FnZSkKKyAgICBlbGlmIGxlbihyYXdfc2l6ZSkgIT0gNDoKKyAgICAgICAgbWVzc2FnZSA9ICdyZWFjaGVkIEVPRiB3aGlsZSByZWFkaW5nIHNpemUgb2Ygc291cmNlIGluIHshcn0nLmZvcm1hdChuYW1lKQorICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCisgICAgICAgIHJhaXNlIEVPRkVycm9yKG1lc3NhZ2UpCisgICAgaWYgc291cmNlX3N0YXRzIGlzIG5vdCBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb3VyY2VfbXRpbWUgPSBpbnQoc291cmNlX3N0YXRzWydtdGltZSddKQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBfcl9sb25nKHJhd190aW1lc3RhbXApICE9IHNvdXJjZV9tdGltZToKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gJ2J5dGVjb2RlIGlzIHN0YWxlIGZvciB7IXJ9Jy5mb3JtYXQobmFtZSkKKyAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgKipleGNfZGV0YWlscykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc291cmNlX3NpemUgPSBzb3VyY2Vfc3RhdHNbJ3NpemUnXSAmIDB4RkZGRkZGRkYKKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgX3JfbG9uZyhyYXdfc2l6ZSkgIT0gc291cmNlX3NpemU6CisgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2J5dGVjb2RlIGlzIHN0YWxlIGZvciB7IXJ9Jy5mb3JtYXQobmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipleGNfZGV0YWlscykKKyAgICByZXR1cm4gZGF0YVsxMjpdCisKKworZGVmIF9jb21waWxlX2J5dGVjb2RlKGRhdGEsIG5hbWU9Tm9uZSwgYnl0ZWNvZGVfcGF0aD1Ob25lLCBzb3VyY2VfcGF0aD1Ob25lKToKKyAgICAiIiJDb21waWxlIGJ5dGVjb2RlIGFzIHJldHVybmVkIGJ5IF92YWxpZGF0ZV9ieXRlY29kZV9oZWFkZXIoKS4iIiIKKyAgICBjb2RlID0gbWFyc2hhbC5sb2FkcyhkYXRhKQorICAgIGlmIGlzaW5zdGFuY2UoY29kZSwgX2NvZGVfdHlwZSk6CisgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20geyFyfScsIGJ5dGVjb2RlX3BhdGgpCisgICAgICAgIGlmIHNvdXJjZV9wYXRoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgX2ltcC5fZml4X2NvX2ZpbGVuYW1lKGNvZGUsIHNvdXJjZV9wYXRoKQorICAgICAgICByZXR1cm4gY29kZQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdOb24tY29kZSBvYmplY3QgaW4geyFyfScuZm9ybWF0KGJ5dGVjb2RlX3BhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPW5hbWUsIHBhdGg9Ynl0ZWNvZGVfcGF0aCkKKworZGVmIF9jb2RlX3RvX2J5dGVjb2RlKGNvZGUsIG10aW1lPTAsIHNvdXJjZV9zaXplPTApOgorICAgICIiIkNvbXBpbGUgYSBjb2RlIG9iamVjdCBpbnRvIGJ5dGVjb2RlIGZvciB3cml0aW5nIG91dCB0byBhIGJ5dGUtY29tcGlsZWQKKyAgICBmaWxlLiIiIgorICAgIGRhdGEgPSBieXRlYXJyYXkoTUFHSUNfTlVNQkVSKQorICAgIGRhdGEuZXh0ZW5kKF93X2xvbmcobXRpbWUpKQorICAgIGRhdGEuZXh0ZW5kKF93X2xvbmcoc291cmNlX3NpemUpKQorICAgIGRhdGEuZXh0ZW5kKG1hcnNoYWwuZHVtcHMoY29kZSkpCisgICAgcmV0dXJuIGRhdGEKKworCitkZWYgZGVjb2RlX3NvdXJjZShzb3VyY2VfYnl0ZXMpOgorICAgICIiIkRlY29kZSBieXRlcyByZXByZXNlbnRpbmcgc291cmNlIGNvZGUgYW5kIHJldHVybiB0aGUgc3RyaW5nLgorCisgICAgVW5pdmVyc2FsIG5ld2xpbmUgc3VwcG9ydCBpcyB1c2VkIGluIHRoZSBkZWNvZGluZy4KKyAgICAiIiIKKyAgICBpbXBvcnQgdG9rZW5pemUgICMgVG8gYXZvaWQgYm9vdHN0cmFwIGlzc3Vlcy4KKyAgICBzb3VyY2VfYnl0ZXNfcmVhZGxpbmUgPSBfaW8uQnl0ZXNJTyhzb3VyY2VfYnl0ZXMpLnJlYWRsaW5lCisgICAgZW5jb2RpbmcgPSB0b2tlbml6ZS5kZXRlY3RfZW5jb2Rpbmcoc291cmNlX2J5dGVzX3JlYWRsaW5lKQorICAgIG5ld2xpbmVfZGVjb2RlciA9IF9pby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyKE5vbmUsIFRydWUpCisgICAgcmV0dXJuIG5ld2xpbmVfZGVjb2Rlci5kZWNvZGUoc291cmNlX2J5dGVzLmRlY29kZShlbmNvZGluZ1swXSkpCisKKworIyBNb2R1bGUgc3BlY2lmaWNhdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitfUE9QVUxBVEUgPSBvYmplY3QoKQorCisKK2RlZiBzcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihuYW1lLCBsb2NhdGlvbj1Ob25lLCAqLCBsb2FkZXI9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucz1fUE9QVUxBVEUpOgorICAgICIiIlJldHVybiBhIG1vZHVsZSBzcGVjIGJhc2VkIG9uIGEgZmlsZSBsb2NhdGlvbi4KKworICAgIFRvIGluZGljYXRlIHRoYXQgdGhlIG1vZHVsZSBpcyBhIHBhY2thZ2UsIHNldAorICAgIHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIHRvIGEgbGlzdCBvZiBkaXJlY3RvcnkgcGF0aHMuICBBbgorICAgIGVtcHR5IGxpc3QgaXMgc3VmZmljaWVudCwgdGhvdWdoIGl0cyBub3Qgb3RoZXJ3aXNlIHVzZWZ1bCB0byB0aGUKKyAgICBpbXBvcnQgc3lzdGVtLgorCisgICAgVGhlIGxvYWRlciBtdXN0IHRha2UgYSBzcGVjIGFzIGl0cyBvbmx5IF9faW5pdF9fKCkgYXJnLgorCisgICAgIiIiCisgICAgaWYgbG9jYXRpb24gaXMgTm9uZToKKyAgICAgICAgIyBUaGUgY2FsbGVyIG1heSBzaW1wbHkgd2FudCBhIHBhcnRpYWxseSBwb3B1bGF0ZWQgbG9jYXRpb24tCisgICAgICAgICMgb3JpZW50ZWQgc3BlYy4gIFNvIHdlIHNldCB0aGUgbG9jYXRpb24gdG8gYSBib2d1cyB2YWx1ZSBhbmQKKyAgICAgICAgIyBmaWxsIGluIGFzIG11Y2ggYXMgd2UgY2FuLgorICAgICAgICBsb2NhdGlvbiA9ICc8dW5rbm93bj4nCisgICAgICAgIGlmIGhhc2F0dHIobG9hZGVyLCAnZ2V0X2ZpbGVuYW1lJyk6CisgICAgICAgICAgICAjIEV4ZWN1dGlvbkxvYWRlcgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gbG9hZGVyLmdldF9maWxlbmFtZShuYW1lKQorICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICMgSWYgdGhlIGxvY2F0aW9uIGlzIG9uIHRoZSBmaWxlc3lzdGVtLCBidXQgZG9lc24ndCBhY3R1YWxseSBleGlzdCwKKyAgICAjIHdlIGNvdWxkIHJldHVybiBOb25lIGhlcmUsIGluZGljYXRpbmcgdGhhdCB0aGUgbG9jYXRpb24gaXMgbm90CisgICAgIyB2YWxpZC4gIEhvd2V2ZXIsIHdlIGRvbid0IGhhdmUgYSBnb29kIHdheSBvZiB0ZXN0aW5nIHNpbmNlIGFuCisgICAgIyBpbmRpcmVjdCBsb2NhdGlvbiAoZS5nLiBhIHppcCBmaWxlIG9yIFVSTCkgd2lsbCBsb29rIGxpa2UgYQorICAgICMgbm9uLWV4aXN0ZW50IGZpbGUgcmVsYXRpdmUgdG8gdGhlIGZpbGVzeXN0ZW0uCisKKyAgICBzcGVjID0gX2Jvb3RzdHJhcC5Nb2R1bGVTcGVjKG5hbWUsIGxvYWRlciwgb3JpZ2luPWxvY2F0aW9uKQorICAgIHNwZWMuX3NldF9maWxlYXR0ciA9IFRydWUKKworICAgICMgUGljayBhIGxvYWRlciBpZiBvbmUgd2Fzbid0IHByb3ZpZGVkLgorICAgIGlmIGxvYWRlciBpcyBOb25lOgorICAgICAgICBmb3IgbG9hZGVyX2NsYXNzLCBzdWZmaXhlcyBpbiBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKToKKyAgICAgICAgICAgIGlmIGxvY2F0aW9uLmVuZHN3aXRoKHR1cGxlKHN1ZmZpeGVzKSk6CisgICAgICAgICAgICAgICAgbG9hZGVyID0gbG9hZGVyX2NsYXNzKG5hbWUsIGxvY2F0aW9uKQorICAgICAgICAgICAgICAgIHNwZWMubG9hZGVyID0gbG9hZGVyCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAjIFNldCBzdWJtb2R1bGVfc2VhcmNoX3BhdGhzIGFwcHJvcHJpYXRlbHkuCisgICAgaWYgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgX1BPUFVMQVRFOgorICAgICAgICAjIENoZWNrIHRoZSBsb2FkZXIuCisgICAgICAgIGlmIGhhc2F0dHIobG9hZGVyLCAnaXNfcGFja2FnZScpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlzX3BhY2thZ2UgPSBsb2FkZXIuaXNfcGFja2FnZShuYW1lKQorICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgaXNfcGFja2FnZToKKyAgICAgICAgICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IFtdCisgICAgZWxzZToKKyAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCisgICAgaWYgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9PSBbXToKKyAgICAgICAgaWYgbG9jYXRpb246CisgICAgICAgICAgICBkaXJuYW1lID0gX3BhdGhfc3BsaXQobG9jYXRpb24pWzBdCisgICAgICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zLmFwcGVuZChkaXJuYW1lKQorCisgICAgcmV0dXJuIHNwZWMKKworCisjIExvYWRlcnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIFdpbmRvd3NSZWdpc3RyeUZpbmRlcjoKKworICAgICIiIk1ldGEgcGF0aCBmaW5kZXIgZm9yIG1vZHVsZXMgZGVjbGFyZWQgaW4gdGhlIFdpbmRvd3MgcmVnaXN0cnkuIiIiCisKKyAgICBSRUdJU1RSWV9LRVkgPSAoCisgICAgICAgICdTb2Z0d2FyZVxcUHl0aG9uXFxQeXRob25Db3JlXFx7c3lzX3ZlcnNpb259JworICAgICAgICAnXFxNb2R1bGVzXFx7ZnVsbG5hbWV9JykKKyAgICBSRUdJU1RSWV9LRVlfREVCVUcgPSAoCisgICAgICAgICdTb2Z0d2FyZVxcUHl0aG9uXFxQeXRob25Db3JlXFx7c3lzX3ZlcnNpb259JworICAgICAgICAnXFxNb2R1bGVzXFx7ZnVsbG5hbWV9XFxEZWJ1ZycpCisgICAgREVCVUdfQlVJTEQgPSBGYWxzZSAgIyBDaGFuZ2VkIGluIF9zZXR1cCgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX29wZW5fcmVnaXN0cnkoY2xzLCBrZXkpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gX3dpbnJlZy5PcGVuS2V5KF93aW5yZWcuSEtFWV9DVVJSRU5UX1VTRVIsIGtleSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gX3dpbnJlZy5PcGVuS2V5KF93aW5yZWcuSEtFWV9MT0NBTF9NQUNISU5FLCBrZXkpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3NlYXJjaF9yZWdpc3RyeShjbHMsIGZ1bGxuYW1lKToKKyAgICAgICAgaWYgY2xzLkRFQlVHX0JVSUxEOgorICAgICAgICAgICAgcmVnaXN0cnlfa2V5ID0gY2xzLlJFR0lTVFJZX0tFWV9ERUJVRworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVnaXN0cnlfa2V5ID0gY2xzLlJFR0lTVFJZX0tFWQorICAgICAgICBrZXkgPSByZWdpc3RyeV9rZXkuZm9ybWF0KGZ1bGxuYW1lPWZ1bGxuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c192ZXJzaW9uPXN5cy52ZXJzaW9uWzozXSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBjbHMuX29wZW5fcmVnaXN0cnkoa2V5KSBhcyBoa2V5OgorICAgICAgICAgICAgICAgIGZpbGVwYXRoID0gX3dpbnJlZy5RdWVyeVZhbHVlKGhrZXksICcnKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBmaWxlcGF0aAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZpbmRfc3BlYyhjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUsIHRhcmdldD1Ob25lKToKKyAgICAgICAgZmlsZXBhdGggPSBjbHMuX3NlYXJjaF9yZWdpc3RyeShmdWxsbmFtZSkKKyAgICAgICAgaWYgZmlsZXBhdGggaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIF9wYXRoX3N0YXQoZmlsZXBhdGgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZm9yIGxvYWRlciwgc3VmZml4ZXMgaW4gX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCk6CisgICAgICAgICAgICBpZiBmaWxlcGF0aC5lbmRzd2l0aCh0dXBsZShzdWZmaXhlcykpOgorICAgICAgICAgICAgICAgIHNwZWMgPSBfYm9vdHN0cmFwLnNwZWNfZnJvbV9sb2FkZXIoZnVsbG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXIoZnVsbG5hbWUsIGZpbGVwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbj1maWxlcGF0aCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3BlYworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CisgICAgICAgICIiIkZpbmQgbW9kdWxlIG5hbWVkIGluIHRoZSByZWdpc3RyeS4KKworICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGV4ZWNfbW9kdWxlKCkgaW5zdGVhZC4KKworICAgICAgICAiIiIKKyAgICAgICAgc3BlYyA9IGNscy5maW5kX3NwZWMoZnVsbG5hbWUsIHBhdGgpCisgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc3BlYy5sb2FkZXIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKworY2xhc3MgX0xvYWRlckJhc2ljczoKKworICAgICIiIkJhc2UgY2xhc3Mgb2YgY29tbW9uIGNvZGUgbmVlZGVkIGJ5IGJvdGggU291cmNlTG9hZGVyIGFuZAorICAgIFNvdXJjZWxlc3NGaWxlTG9hZGVyLiIiIgorCisgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmlzX3BhY2thZ2UgYnkgY2hlY2tpbmcgaWYKKyAgICAgICAgdGhlIHBhdGggcmV0dXJuZWQgYnkgZ2V0X2ZpbGVuYW1lIGhhcyBhIGZpbGVuYW1lIG9mICdfX2luaXRfXy5weScuIiIiCisgICAgICAgIGZpbGVuYW1lID0gX3BhdGhfc3BsaXQoc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpKVsxXQorICAgICAgICBmaWxlbmFtZV9iYXNlID0gZmlsZW5hbWUucnNwbGl0KCcuJywgMSlbMF0KKyAgICAgICAgdGFpbF9uYW1lID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzJdCisgICAgICAgIHJldHVybiBmaWxlbmFtZV9iYXNlID09ICdfX2luaXRfXycgYW5kIHRhaWxfbmFtZSAhPSAnX19pbml0X18nCisKKyAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKKyAgICAgICAgIiIiVXNlIGRlZmF1bHQgc2VtYW50aWNzIGZvciBtb2R1bGUgY3JlYXRpb24uIiIiCisKKyAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgIiIiRXhlY3V0ZSB0aGUgbW9kdWxlLiIiIgorICAgICAgICBjb2RlID0gc2VsZi5nZXRfY29kZShtb2R1bGUuX19uYW1lX18pCisgICAgICAgIGlmIGNvZGUgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdjYW5ub3QgbG9hZCBtb2R1bGUgeyFyfSB3aGVuIGdldF9jb2RlKCkgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JldHVybnMgTm9uZScuZm9ybWF0KG1vZHVsZS5fX25hbWVfXykpCisgICAgICAgIF9ib290c3RyYXAuX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChleGVjLCBjb2RlLCBtb2R1bGUuX19kaWN0X18pCisKKyAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICByZXR1cm4gX2Jvb3RzdHJhcC5fbG9hZF9tb2R1bGVfc2hpbShzZWxmLCBmdWxsbmFtZSkKKworCitjbGFzcyBTb3VyY2VMb2FkZXIoX0xvYWRlckJhc2ljcyk6CisKKyAgICBkZWYgcGF0aF9tdGltZShzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiT3B0aW9uYWwgbWV0aG9kIHRoYXQgcmV0dXJucyB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgKGFuIGludCkgZm9yIHRoZQorICAgICAgICBzcGVjaWZpZWQgcGF0aCwgd2hlcmUgcGF0aCBpcyBhIHN0ci4KKworICAgICAgICBSYWlzZXMgSU9FcnJvciB3aGVuIHRoZSBwYXRoIGNhbm5vdCBiZSBoYW5kbGVkLgorICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgSU9FcnJvcgorCisgICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCByZXR1cm5pbmcgYSBtZXRhZGF0YSBkaWN0IGZvciB0aGUgc3BlY2lmaWVkIHBhdGgKKyAgICAgICAgdG8gYnkgdGhlIHBhdGggKHN0cikuCisgICAgICAgIFBvc3NpYmxlIGtleXM6CisgICAgICAgIC0gJ210aW1lJyAobWFuZGF0b3J5KSBpcyB0aGUgbnVtZXJpYyB0aW1lc3RhbXAgb2YgbGFzdCBzb3VyY2UKKyAgICAgICAgICBjb2RlIG1vZGlmaWNhdGlvbjsKKyAgICAgICAgLSAnc2l6ZScgKG9wdGlvbmFsKSBpcyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgc291cmNlIGNvZGUuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kIGFsbG93cyB0aGUgbG9hZGVyIHRvIHJlYWQgYnl0ZWNvZGUgZmlsZXMuCisgICAgICAgIFJhaXNlcyBJT0Vycm9yIHdoZW4gdGhlIHBhdGggY2Fubm90IGJlIGhhbmRsZWQuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4geydtdGltZSc6IHNlbGYucGF0aF9tdGltZShwYXRoKX0KKworICAgIGRlZiBfY2FjaGVfYnl0ZWNvZGUoc2VsZiwgc291cmNlX3BhdGgsIGNhY2hlX3BhdGgsIGRhdGEpOgorICAgICAgICAiIiJPcHRpb25hbCBtZXRob2Qgd2hpY2ggd3JpdGVzIGRhdGEgKGJ5dGVzKSB0byBhIGZpbGUgcGF0aCAoYSBzdHIpLgorCisgICAgICAgIEltcGxlbWVudGluZyB0aGlzIG1ldGhvZCBhbGxvd3MgZm9yIHRoZSB3cml0aW5nIG9mIGJ5dGVjb2RlIGZpbGVzLgorCisgICAgICAgIFRoZSBzb3VyY2UgcGF0aCBpcyBuZWVkZWQgaW4gb3JkZXIgdG8gY29ycmVjdGx5IHRyYW5zZmVyIHBlcm1pc3Npb25zCisgICAgICAgICIiIgorICAgICAgICAjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgd2UgZGVsZWdhdGUgdG8gc2V0X2RhdGEoKQorICAgICAgICByZXR1cm4gc2VsZi5zZXRfZGF0YShjYWNoZV9wYXRoLCBkYXRhKQorCisgICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgorICAgICAgICAiIiJPcHRpb25hbCBtZXRob2Qgd2hpY2ggd3JpdGVzIGRhdGEgKGJ5dGVzKSB0byBhIGZpbGUgcGF0aCAoYSBzdHIpLgorCisgICAgICAgIEltcGxlbWVudGluZyB0aGlzIG1ldGhvZCBhbGxvd3MgZm9yIHRoZSB3cml0aW5nIG9mIGJ5dGVjb2RlIGZpbGVzLgorICAgICAgICAiIiIKKworCisgICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmdldF9zb3VyY2UuIiIiCisgICAgICAgIHBhdGggPSBzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc291cmNlX2J5dGVzID0gc2VsZi5nZXRfZGF0YShwYXRoKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignc291cmNlIG5vdCBhdmFpbGFibGUgdGhyb3VnaCBnZXRfZGF0YSgpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUpIGZyb20gZXhjCisgICAgICAgIHJldHVybiBkZWNvZGVfc291cmNlKHNvdXJjZV9ieXRlcykKKworICAgIGRlZiBzb3VyY2VfdG9fY29kZShzZWxmLCBkYXRhLCBwYXRoLCAqLCBfb3B0aW1pemU9LTEpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGNvZGUgb2JqZWN0IGNvbXBpbGVkIGZyb20gc291cmNlLgorCisgICAgICAgIFRoZSAnZGF0YScgYXJndW1lbnQgY2FuIGJlIGFueSBvYmplY3QgdHlwZSB0aGF0IGNvbXBpbGUoKSBzdXBwb3J0cy4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBfYm9vdHN0cmFwLl9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoY29tcGlsZSwgZGF0YSwgcGF0aCwgJ2V4ZWMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbnRfaW5oZXJpdD1UcnVlLCBvcHRpbWl6ZT1fb3B0aW1pemUpCisKKyAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmdldF9jb2RlLgorCisgICAgICAgIFJlYWRpbmcgb2YgYnl0ZWNvZGUgcmVxdWlyZXMgcGF0aF9zdGF0cyB0byBiZSBpbXBsZW1lbnRlZC4gVG8gd3JpdGUKKyAgICAgICAgYnl0ZWNvZGUsIHNldF9kYXRhIG11c3QgYWxzbyBiZSBpbXBsZW1lbnRlZC4KKworICAgICAgICAiIiIKKyAgICAgICAgc291cmNlX3BhdGggPSBzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkKKyAgICAgICAgc291cmNlX210aW1lID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBieXRlY29kZV9wYXRoID0gY2FjaGVfZnJvbV9zb3VyY2Uoc291cmNlX3BhdGgpCisgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgorICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzdCA9IHNlbGYucGF0aF9zdGF0cyhzb3VyY2VfcGF0aCkKKyAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc291cmNlX210aW1lID0gaW50KHN0WydtdGltZSddKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X2RhdGEoYnl0ZWNvZGVfcGF0aCkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX2RhdGEgPSBfdmFsaWRhdGVfYnl0ZWNvZGVfaGVhZGVyKGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9zdGF0cz1zdCwgbmFtZT1mdWxsbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1ieXRlY29kZV9wYXRoKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBFT0ZFcnJvcik6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fSBtYXRjaGVzIHt9JywgYnl0ZWNvZGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29tcGlsZV9ieXRlY29kZShieXRlc19kYXRhLCBuYW1lPWZ1bGxuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGg9Ynl0ZWNvZGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aD1zb3VyY2VfcGF0aCkKKyAgICAgICAgc291cmNlX2J5dGVzID0gc2VsZi5nZXRfZGF0YShzb3VyY2VfcGF0aCkKKyAgICAgICAgY29kZV9vYmplY3QgPSBzZWxmLnNvdXJjZV90b19jb2RlKHNvdXJjZV9ieXRlcywgc291cmNlX3BhdGgpCisgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20ge30nLCBzb3VyY2VfcGF0aCkKKyAgICAgICAgaWYgKG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBhbmQgYnl0ZWNvZGVfcGF0aCBpcyBub3QgTm9uZSBhbmQKKyAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgaXMgbm90IE5vbmUpOgorICAgICAgICAgICAgZGF0YSA9IF9jb2RlX3RvX2J5dGVjb2RlKGNvZGVfb2JqZWN0LCBzb3VyY2VfbXRpbWUsCisgICAgICAgICAgICAgICAgICAgIGxlbihzb3VyY2VfYnl0ZXMpKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlX2J5dGVjb2RlKHNvdXJjZV9wYXRoLCBieXRlY29kZV9wYXRoLCBkYXRhKQorICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3dyb3RlIHshcn0nLCBieXRlY29kZV9wYXRoKQorICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICByZXR1cm4gY29kZV9vYmplY3QKKworCitjbGFzcyBGaWxlTG9hZGVyOgorCisgICAgIiIiQmFzZSBmaWxlIGxvYWRlciBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIHRoZSBsb2FkZXIgcHJvdG9jb2wgbWV0aG9kcyB0aGF0CisgICAgcmVxdWlyZSBmaWxlIHN5c3RlbSB1c2FnZS4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdWxsbmFtZSwgcGF0aCk6CisgICAgICAgICIiIkNhY2hlIHRoZSBtb2R1bGUgbmFtZSBhbmQgdGhlIHBhdGggdG8gdGhlIGZpbGUgZm91bmQgYnkgdGhlCisgICAgICAgIGZpbmRlci4iIiIKKyAgICAgICAgc2VsZi5uYW1lID0gZnVsbG5hbWUKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18gPT0gb3RoZXIuX19jbGFzc19fIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X18gPT0gb3RoZXIuX19kaWN0X18pCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBoYXNoKHNlbGYubmFtZSkgXiBoYXNoKHNlbGYucGF0aCkKKworICAgIEBfY2hlY2tfbmFtZQorICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIkxvYWQgYSBtb2R1bGUgZnJvbSBhIGZpbGUuCisKKyAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFVzZSBleGVjX21vZHVsZSgpIGluc3RlYWQuCisKKyAgICAgICAgIiIiCisgICAgICAgICMgVGhlIG9ubHkgcmVhc29uIGZvciB0aGlzIG1ldGhvZCBpcyBmb3IgdGhlIG5hbWUgY2hlY2suCisgICAgICAgICMgSXNzdWUgIzE0ODU3OiBBdm9pZCB0aGUgemVyby1hcmd1bWVudCBmb3JtIG9mIHN1cGVyIHNvIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICAjIG9mIHRoYXQgZm9ybSBjYW4gYmUgdXBkYXRlZCB3aXRob3V0IGJyZWFraW5nIHRoZSBmcm96ZW4gbW9kdWxlCisgICAgICAgIHJldHVybiBzdXBlcihGaWxlTG9hZGVyLCBzZWxmKS5sb2FkX21vZHVsZShmdWxsbmFtZSkKKworICAgIEBfY2hlY2tfbmFtZQorICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHBhdGggdG8gdGhlIHNvdXJjZSBmaWxlIGFzIGZvdW5kIGJ5IHRoZSBmaW5kZXIuIiIiCisgICAgICAgIHJldHVybiBzZWxmLnBhdGgKKworICAgIGRlZiBnZXRfZGF0YShzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBkYXRhIGZyb20gcGF0aCBhcyByYXcgYnl0ZXMuIiIiCisgICAgICAgIHdpdGggX2lvLkZpbGVJTyhwYXRoLCAncicpIGFzIGZpbGU6CisgICAgICAgICAgICByZXR1cm4gZmlsZS5yZWFkKCkKKworCitjbGFzcyBTb3VyY2VGaWxlTG9hZGVyKEZpbGVMb2FkZXIsIFNvdXJjZUxvYWRlcik6CisKKyAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBTb3VyY2VMb2FkZXIgdXNpbmcgdGhlIGZpbGUgc3lzdGVtLiIiIgorCisgICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIlJldHVybiB0aGUgbWV0YWRhdGEgZm9yIHRoZSBwYXRoLiIiIgorICAgICAgICBzdCA9IF9wYXRoX3N0YXQocGF0aCkKKyAgICAgICAgcmV0dXJuIHsnbXRpbWUnOiBzdC5zdF9tdGltZSwgJ3NpemUnOiBzdC5zdF9zaXplfQorCisgICAgZGVmIF9jYWNoZV9ieXRlY29kZShzZWxmLCBzb3VyY2VfcGF0aCwgYnl0ZWNvZGVfcGF0aCwgZGF0YSk6CisgICAgICAgICMgQWRhcHQgYmV0d2VlbiB0aGUgdHdvIEFQSXMKKyAgICAgICAgbW9kZSA9IF9jYWxjX21vZGUoc291cmNlX3BhdGgpCisgICAgICAgIHJldHVybiBzZWxmLnNldF9kYXRhKGJ5dGVjb2RlX3BhdGgsIGRhdGEsIF9tb2RlPW1vZGUpCisKKyAgICBkZWYgc2V0X2RhdGEoc2VsZiwgcGF0aCwgZGF0YSwgKiwgX21vZGU9MG82NjYpOgorICAgICAgICAiIiJXcml0ZSBieXRlcyBkYXRhIHRvIGEgZmlsZS4iIiIKKyAgICAgICAgcGFyZW50LCBmaWxlbmFtZSA9IF9wYXRoX3NwbGl0KHBhdGgpCisgICAgICAgIHBhdGhfcGFydHMgPSBbXQorICAgICAgICAjIEZpZ3VyZSBvdXQgd2hhdCBkaXJlY3RvcmllcyBhcmUgbWlzc2luZy4KKyAgICAgICAgd2hpbGUgcGFyZW50IGFuZCBub3QgX3BhdGhfaXNkaXIocGFyZW50KToKKyAgICAgICAgICAgIHBhcmVudCwgcGFydCA9IF9wYXRoX3NwbGl0KHBhcmVudCkKKyAgICAgICAgICAgIHBhdGhfcGFydHMuYXBwZW5kKHBhcnQpCisgICAgICAgICMgQ3JlYXRlIG5lZWRlZCBkaXJlY3Rvcmllcy4KKyAgICAgICAgZm9yIHBhcnQgaW4gcmV2ZXJzZWQocGF0aF9wYXJ0cyk6CisgICAgICAgICAgICBwYXJlbnQgPSBfcGF0aF9qb2luKHBhcmVudCwgcGFydCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBfb3MubWtkaXIocGFyZW50KQorICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgICAgICAgICAjIFByb2JhYmx5IGFub3RoZXIgUHl0aG9uIHByb2Nlc3MgYWxyZWFkeSBjcmVhdGVkIHRoZSBkaXIuCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAjIENvdWxkIGJlIGEgcGVybWlzc2lvbiBlcnJvciwgcmVhZC1vbmx5IGZpbGVzeXN0ZW06IGp1c3QgZm9yZ2V0CisgICAgICAgICAgICAgICAgIyBhYm91dCB3cml0aW5nIHRoZSBkYXRhLgorICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhcmVudCwgZXhjKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICB0cnk6CisgICAgICAgICAgICBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIF9tb2RlKQorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY3JlYXRlZCB7IXJ9JywgcGF0aCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgIyBTYW1lIGFzIGFib3ZlOiBqdXN0IGRvbid0IHdyaXRlIHRoZSBieXRlY29kZS4KKyAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhdGgsIGV4YykKKworCitjbGFzcyBTb3VyY2VsZXNzRmlsZUxvYWRlcihGaWxlTG9hZGVyLCBfTG9hZGVyQmFzaWNzKToKKworICAgICIiIkxvYWRlciB3aGljaCBoYW5kbGVzIHNvdXJjZWxlc3MgZmlsZSBpbXBvcnRzLiIiIgorCisgICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQorICAgICAgICBkYXRhID0gc2VsZi5nZXRfZGF0YShwYXRoKQorICAgICAgICBieXRlc19kYXRhID0gX3ZhbGlkYXRlX2J5dGVjb2RlX2hlYWRlcihkYXRhLCBuYW1lPWZ1bGxuYW1lLCBwYXRoPXBhdGgpCisgICAgICAgIHJldHVybiBfY29tcGlsZV9ieXRlY29kZShieXRlc19kYXRhLCBuYW1lPWZ1bGxuYW1lLCBieXRlY29kZV9wYXRoPXBhdGgpCisKKyAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIlJldHVybiBOb25lIGFzIHRoZXJlIGlzIG5vIHNvdXJjZSBjb2RlLiIiIgorICAgICAgICByZXR1cm4gTm9uZQorCisKKyMgRmlsbGVkIGluIGJ5IF9zZXR1cCgpLgorRVhURU5TSU9OX1NVRkZJWEVTID0gW10KKworCitjbGFzcyBFeHRlbnNpb25GaWxlTG9hZGVyKEZpbGVMb2FkZXIsIF9Mb2FkZXJCYXNpY3MpOgorCisgICAgIiIiTG9hZGVyIGZvciBleHRlbnNpb24gbW9kdWxlcy4KKworICAgIFRoZSBjb25zdHJ1Y3RvciBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggRmlsZUZpbmRlci4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhdGgpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fID09IG90aGVyLl9fY2xhc3NfXyBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9fZGljdF9fID09IG90aGVyLl9fZGljdF9fKQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLm5hbWUpIF4gaGFzaChzZWxmLnBhdGgpCisKKyAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKKyAgICAgICAgIiIiQ3JlYXRlIGFuIHVuaXRpYWxpemVkIGV4dGVuc2lvbiBtb2R1bGUiIiIKKyAgICAgICAgbW9kdWxlID0gX2Jvb3RzdHJhcC5fY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKAorICAgICAgICAgICAgX2ltcC5jcmVhdGVfZHluYW1pYywgc3BlYykKKyAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSB7IXJ9IGxvYWRlZCBmcm9tIHshcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMubmFtZSwgc2VsZi5wYXRoKQorICAgICAgICByZXR1cm4gbW9kdWxlCisKKyAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgIiIiSW5pdGlhbGl6ZSBhbiBleHRlbnNpb24gbW9kdWxlIiIiCisgICAgICAgIF9ib290c3RyYXAuX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmV4ZWNfZHluYW1pYywgbW9kdWxlKQorICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdleHRlbnNpb24gbW9kdWxlIHshcn0gZXhlY3V0ZWQgZnJvbSB7IXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5hbWUsIHNlbGYucGF0aCkKKworICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGV4dGVuc2lvbiBtb2R1bGUgaXMgYSBwYWNrYWdlLiIiIgorICAgICAgICBmaWxlX25hbWUgPSBfcGF0aF9zcGxpdChzZWxmLnBhdGgpWzFdCisgICAgICAgIHJldHVybiBhbnkoZmlsZV9uYW1lID09ICdfX2luaXRfXycgKyBzdWZmaXgKKyAgICAgICAgICAgICAgICAgICBmb3Igc3VmZml4IGluIEVYVEVOU0lPTl9TVUZGSVhFUykKKworICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIlJldHVybiBOb25lIGFzIGFuIGV4dGVuc2lvbiBtb2R1bGUgY2Fubm90IGNyZWF0ZSBhIGNvZGUgb2JqZWN0LiIiIgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJSZXR1cm4gTm9uZSBhcyBleHRlbnNpb24gbW9kdWxlcyBoYXZlIG5vIHNvdXJjZSBjb2RlLiIiIgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgQF9jaGVja19uYW1lCisgICAgZGVmIGdldF9maWxlbmFtZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgcGF0aCB0byB0aGUgc291cmNlIGZpbGUgYXMgZm91bmQgYnkgdGhlIGZpbmRlci4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisKK2NsYXNzIF9OYW1lc3BhY2VQYXRoOgorICAgICIiIlJlcHJlc2VudHMgYSBuYW1lc3BhY2UgcGFja2FnZSdzIHBhdGguICBJdCB1c2VzIHRoZSBtb2R1bGUgbmFtZQorICAgIHRvIGZpbmQgaXRzIHBhcmVudCBtb2R1bGUsIGFuZCBmcm9tIHRoZXJlIGl0IGxvb2tzIHVwIHRoZSBwYXJlbnQncworICAgIF9fcGF0aF9fLiAgV2hlbiB0aGlzIGNoYW5nZXMsIHRoZSBtb2R1bGUncyBvd24gcGF0aCBpcyByZWNvbXB1dGVkLAorICAgIHVzaW5nIHBhdGhfZmluZGVyLiAgRm9yIHRvcC1sZXZlbCBtb2R1bGVzLCB0aGUgcGFyZW50IG1vZHVsZSdzIHBhdGgKKyAgICBpcyBzeXMucGF0aC4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwYXRoLCBwYXRoX2ZpbmRlcik6CisgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCisgICAgICAgIHNlbGYuX3BhdGggPSBwYXRoCisgICAgICAgIHNlbGYuX2xhc3RfcGFyZW50X3BhdGggPSB0dXBsZShzZWxmLl9nZXRfcGFyZW50X3BhdGgoKSkKKyAgICAgICAgc2VsZi5fcGF0aF9maW5kZXIgPSBwYXRoX2ZpbmRlcgorCisgICAgZGVmIF9maW5kX3BhcmVudF9wYXRoX25hbWVzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIGEgdHVwbGUgb2YgKHBhcmVudC1tb2R1bGUtbmFtZSwgcGFyZW50LXBhdGgtYXR0ci1uYW1lKSIiIgorICAgICAgICBwYXJlbnQsIGRvdCwgbWUgPSBzZWxmLl9uYW1lLnJwYXJ0aXRpb24oJy4nKQorICAgICAgICBpZiBkb3QgPT0gJyc6CisgICAgICAgICAgICAjIFRoaXMgaXMgYSB0b3AtbGV2ZWwgbW9kdWxlLiBzeXMucGF0aCBjb250YWlucyB0aGUgcGFyZW50IHBhdGguCisgICAgICAgICAgICByZXR1cm4gJ3N5cycsICdwYXRoJworICAgICAgICAjIE5vdCBhIHRvcC1sZXZlbCBtb2R1bGUuIHBhcmVudC1tb2R1bGUuX19wYXRoX18gY29udGFpbnMgdGhlCisgICAgICAgICMgIHBhcmVudCBwYXRoLgorICAgICAgICByZXR1cm4gcGFyZW50LCAnX19wYXRoX18nCisKKyAgICBkZWYgX2dldF9wYXJlbnRfcGF0aChzZWxmKToKKyAgICAgICAgcGFyZW50X21vZHVsZV9uYW1lLCBwYXRoX2F0dHJfbmFtZSA9IHNlbGYuX2ZpbmRfcGFyZW50X3BhdGhfbmFtZXMoKQorICAgICAgICByZXR1cm4gZ2V0YXR0cihzeXMubW9kdWxlc1twYXJlbnRfbW9kdWxlX25hbWVdLCBwYXRoX2F0dHJfbmFtZSkKKworICAgIGRlZiBfcmVjYWxjdWxhdGUoc2VsZik6CisgICAgICAgICMgSWYgdGhlIHBhcmVudCdzIHBhdGggaGFzIGNoYW5nZWQsIHJlY2FsY3VsYXRlIF9wYXRoCisgICAgICAgIHBhcmVudF9wYXRoID0gdHVwbGUoc2VsZi5fZ2V0X3BhcmVudF9wYXRoKCkpICMgTWFrZSBhIGNvcHkKKyAgICAgICAgaWYgcGFyZW50X3BhdGggIT0gc2VsZi5fbGFzdF9wYXJlbnRfcGF0aDoKKyAgICAgICAgICAgIHNwZWMgPSBzZWxmLl9wYXRoX2ZpbmRlcihzZWxmLl9uYW1lLCBwYXJlbnRfcGF0aCkKKyAgICAgICAgICAgICMgTm90ZSB0aGF0IG5vIGNoYW5nZXMgYXJlIG1hZGUgaWYgYSBsb2FkZXIgaXMgcmV0dXJuZWQsIGJ1dCB3ZQorICAgICAgICAgICAgIyAgZG8gcmVtZW1iZXIgdGhlIG5ldyBwYXJlbnQgcGF0aAorICAgICAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZSBhbmQgc3BlYy5sb2FkZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXRoID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucworICAgICAgICAgICAgc2VsZi5fbGFzdF9wYXJlbnRfcGF0aCA9IHBhcmVudF9wYXRoICAgICAjIFNhdmUgdGhlIGNvcHkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BhdGgKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5fcmVjYWxjdWxhdGUoKSkKKworICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gbGVuKHNlbGYuX3JlY2FsY3VsYXRlKCkpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnX05hbWVzcGFjZVBhdGgoeyFyfSknLmZvcm1hdChzZWxmLl9wYXRoKQorCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKToKKyAgICAgICAgcmV0dXJuIGl0ZW0gaW4gc2VsZi5fcmVjYWxjdWxhdGUoKQorCisgICAgZGVmIGFwcGVuZChzZWxmLCBpdGVtKToKKyAgICAgICAgc2VsZi5fcGF0aC5hcHBlbmQoaXRlbSkKKworCisjIFdlIHVzZSB0aGlzIGV4Y2x1c2l2ZWx5IGluIG1vZHVsZV9mcm9tX3NwZWMoKSBmb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eS4KK2NsYXNzIF9OYW1lc3BhY2VMb2FkZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhdGgsIHBhdGhfZmluZGVyKToKKyAgICAgICAgc2VsZi5fcGF0aCA9IF9OYW1lc3BhY2VQYXRoKG5hbWUsIHBhdGgsIHBhdGhfZmluZGVyKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG1vZHVsZV9yZXByKGNscywgbW9kdWxlKToKKyAgICAgICAgIiIiUmV0dXJuIHJlcHIgZm9yIHRoZSBtb2R1bGUuCisKKyAgICAgICAgVGhlIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVGhlIGltcG9ydCBtYWNoaW5lcnkgZG9lcyB0aGUgam9iIGl0c2VsZi4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gKG5hbWVzcGFjZSk+Jy5mb3JtYXQobW9kdWxlLl9fbmFtZV9fKQorCisgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICByZXR1cm4gJycKKworICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgIHJldHVybiBjb21waWxlKCcnLCAnPHN0cmluZz4nLCAnZXhlYycsIGRvbnRfaW5oZXJpdD1UcnVlKQorCisgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc2VsZiwgc3BlYyk6CisgICAgICAgICIiIlVzZSBkZWZhdWx0IHNlbWFudGljcyBmb3IgbW9kdWxlIGNyZWF0aW9uLiIiIgorCisgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIkxvYWQgYSBuYW1lc3BhY2UgbW9kdWxlLgorCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuICBVc2UgZXhlY19tb2R1bGUoKSBpbnN0ZWFkLgorCisgICAgICAgICIiIgorICAgICAgICAjIFRoZSBpbXBvcnQgc3lzdGVtIG5ldmVyIGNhbGxzIHRoaXMgbWV0aG9kLgorICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCduYW1lc3BhY2UgbW9kdWxlIGxvYWRlZCB3aXRoIHBhdGggeyFyfScsIHNlbGYuX3BhdGgpCisgICAgICAgIHJldHVybiBfYm9vdHN0cmFwLl9sb2FkX21vZHVsZV9zaGltKHNlbGYsIGZ1bGxuYW1lKQorCisKKyMgRmluZGVycyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgUGF0aEZpbmRlcjoKKworICAgICIiIk1ldGEgcGF0aCBmaW5kZXIgZm9yIHN5cy5wYXRoIGFuZCBwYWNrYWdlIF9fcGF0aF9fIGF0dHJpYnV0ZXMuIiIiCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoY2xzKToKKyAgICAgICAgIiIiQ2FsbCB0aGUgaW52YWxpZGF0ZV9jYWNoZXMoKSBtZXRob2Qgb24gYWxsIHBhdGggZW50cnkgZmluZGVycworICAgICAgICBzdG9yZWQgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVzICh3aGVyZSBpbXBsZW1lbnRlZCkuIiIiCisgICAgICAgIGZvciBmaW5kZXIgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUudmFsdWVzKCk6CisgICAgICAgICAgICBpZiBoYXNhdHRyKGZpbmRlciwgJ2ludmFsaWRhdGVfY2FjaGVzJyk6CisgICAgICAgICAgICAgICAgZmluZGVyLmludmFsaWRhdGVfY2FjaGVzKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcGF0aF9ob29rcyhjbHMsIHBhdGgpOgorICAgICAgICAiIiJTZWFyY2ggc2VxdWVuY2Ugb2YgaG9va3MgZm9yIGEgZmluZGVyIGZvciAncGF0aCcuCisKKyAgICAgICAgSWYgJ2hvb2tzJyBpcyBmYWxzZSB0aGVuIHVzZSBzeXMucGF0aF9ob29rcy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgc3lzLnBhdGhfaG9va3MgaXMgbm90IE5vbmUgYW5kIG5vdCBzeXMucGF0aF9ob29rczoKKyAgICAgICAgICAgIF93YXJuaW5ncy53YXJuKCdzeXMucGF0aF9ob29rcyBpcyBlbXB0eScsIEltcG9ydFdhcm5pbmcpCisgICAgICAgIGZvciBob29rIGluIHN5cy5wYXRoX2hvb2tzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBob29rKHBhdGgpCisgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3BhdGhfaW1wb3J0ZXJfY2FjaGUoY2xzLCBwYXRoKToKKyAgICAgICAgIiIiR2V0IHRoZSBmaW5kZXIgZm9yIHRoZSBwYXRoIGVudHJ5IGZyb20gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuCisKKyAgICAgICAgSWYgdGhlIHBhdGggZW50cnkgaXMgbm90IGluIHRoZSBjYWNoZSwgZmluZCB0aGUgYXBwcm9wcmlhdGUgZmluZGVyCisgICAgICAgIGFuZCBjYWNoZSBpdC4gSWYgbm8gZmluZGVyIGlzIGF2YWlsYWJsZSwgc3RvcmUgTm9uZS4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgcGF0aCA9PSAnJzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwYXRoID0gX29zLmdldGN3ZCgpCisgICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICAgICAgIyBEb24ndCBjYWNoZSB0aGUgZmFpbHVyZSBhcyB0aGUgY3dkIGNhbiBlYXNpbHkgY2hhbmdlIHRvCisgICAgICAgICAgICAgICAgIyBhIHZhbGlkIGRpcmVjdG9yeSBsYXRlciBvbi4KKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmaW5kZXIgPSBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoXQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBmaW5kZXIgPSBjbHMuX3BhdGhfaG9va3MocGF0aCkKKyAgICAgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdID0gZmluZGVyCisgICAgICAgIHJldHVybiBmaW5kZXIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfbGVnYWN5X2dldF9zcGVjKGNscywgZnVsbG5hbWUsIGZpbmRlcik6CisgICAgICAgICMgVGhpcyB3b3VsZCBiZSBhIGdvb2QgcGxhY2UgZm9yIGEgRGVwcmVjYXRpb25XYXJuaW5nIGlmCisgICAgICAgICMgd2UgZW5kZWQgdXAgZ29pbmcgdGhhdCByb3V0ZS4KKyAgICAgICAgaWYgaGFzYXR0cihmaW5kZXIsICdmaW5kX2xvYWRlcicpOgorICAgICAgICAgICAgbG9hZGVyLCBwb3J0aW9ucyA9IGZpbmRlci5maW5kX2xvYWRlcihmdWxsbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvYWRlciA9IGZpbmRlci5maW5kX21vZHVsZShmdWxsbmFtZSkKKyAgICAgICAgICAgIHBvcnRpb25zID0gW10KKyAgICAgICAgaWYgbG9hZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIF9ib290c3RyYXAuc3BlY19mcm9tX2xvYWRlcihmdWxsbmFtZSwgbG9hZGVyKQorICAgICAgICBzcGVjID0gX2Jvb3RzdHJhcC5Nb2R1bGVTcGVjKGZ1bGxuYW1lLCBOb25lKQorICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gcG9ydGlvbnMKKyAgICAgICAgcmV0dXJuIHNwZWMKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfZ2V0X3NwZWMoY2xzLCBmdWxsbmFtZSwgcGF0aCwgdGFyZ2V0PU5vbmUpOgorICAgICAgICAiIiJGaW5kIHRoZSBsb2FkZXIgb3IgbmFtZXNwYWNlX3BhdGggZm9yIHRoaXMgbW9kdWxlL3BhY2thZ2UgbmFtZS4iIiIKKyAgICAgICAgIyBJZiB0aGlzIGVuZHMgdXAgYmVpbmcgYSBuYW1lc3BhY2UgcGFja2FnZSwgbmFtZXNwYWNlX3BhdGggaXMKKyAgICAgICAgIyAgdGhlIGxpc3Qgb2YgcGF0aHMgdGhhdCB3aWxsIGJlY29tZSBpdHMgX19wYXRoX18KKyAgICAgICAgbmFtZXNwYWNlX3BhdGggPSBbXQorICAgICAgICBmb3IgZW50cnkgaW4gcGF0aDoKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGVudHJ5LCAoc3RyLCBieXRlcykpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmaW5kZXIgPSBjbHMuX3BhdGhfaW1wb3J0ZXJfY2FjaGUoZW50cnkpCisgICAgICAgICAgICBpZiBmaW5kZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihmaW5kZXIsICdmaW5kX3NwZWMnKToKKyAgICAgICAgICAgICAgICAgICAgc3BlYyA9IGZpbmRlci5maW5kX3NwZWMoZnVsbG5hbWUsIHRhcmdldCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzcGVjID0gY2xzLl9sZWdhY3lfZ2V0X3NwZWMoZnVsbG5hbWUsIGZpbmRlcikKKyAgICAgICAgICAgICAgICBpZiBzcGVjIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgc3BlYy5sb2FkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzcGVjCisgICAgICAgICAgICAgICAgcG9ydGlvbnMgPSBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCisgICAgICAgICAgICAgICAgaWYgcG9ydGlvbnMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ3NwZWMgbWlzc2luZyBsb2FkZXInKQorICAgICAgICAgICAgICAgICMgVGhpcyBpcyBwb3NzaWJseSBwYXJ0IG9mIGEgbmFtZXNwYWNlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgIyAgUmVtZW1iZXIgdGhlc2UgcGF0aCBlbnRyaWVzIChpZiBhbnkpIGZvciB3aGVuIHdlCisgICAgICAgICAgICAgICAgIyAgY3JlYXRlIGEgbmFtZXNwYWNlIHBhY2thZ2UsIGFuZCBjb250aW51ZSBpdGVyYXRpbmcKKyAgICAgICAgICAgICAgICAjICBvbiBwYXRoLgorICAgICAgICAgICAgICAgIG5hbWVzcGFjZV9wYXRoLmV4dGVuZChwb3J0aW9ucykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNwZWMgPSBfYm9vdHN0cmFwLk1vZHVsZVNwZWMoZnVsbG5hbWUsIE5vbmUpCisgICAgICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gbmFtZXNwYWNlX3BhdGgKKyAgICAgICAgICAgIHJldHVybiBzcGVjCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZmluZF9zcGVjKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSwgdGFyZ2V0PU5vbmUpOgorICAgICAgICAiIiJmaW5kIHRoZSBtb2R1bGUgb24gc3lzLnBhdGggb3IgJ3BhdGgnIGJhc2VkIG9uIHN5cy5wYXRoX2hvb2tzIGFuZAorICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4iIiIKKyAgICAgICAgaWYgcGF0aCBpcyBOb25lOgorICAgICAgICAgICAgcGF0aCA9IHN5cy5wYXRoCisgICAgICAgIHNwZWMgPSBjbHMuX2dldF9zcGVjKGZ1bGxuYW1lLCBwYXRoLCB0YXJnZXQpCisgICAgICAgIGlmIHNwZWMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsaWYgc3BlYy5sb2FkZXIgaXMgTm9uZToKKyAgICAgICAgICAgIG5hbWVzcGFjZV9wYXRoID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucworICAgICAgICAgICAgaWYgbmFtZXNwYWNlX3BhdGg6CisgICAgICAgICAgICAgICAgIyBXZSBmb3VuZCBhdCBsZWFzdCBvbmUgbmFtZXNwYWNlIHBhdGguICBSZXR1cm4gYQorICAgICAgICAgICAgICAgICMgIHNwZWMgd2hpY2ggY2FuIGNyZWF0ZSB0aGUgbmFtZXNwYWNlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgc3BlYy5vcmlnaW4gPSAnbmFtZXNwYWNlJworICAgICAgICAgICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBfTmFtZXNwYWNlUGF0aChmdWxsbmFtZSwgbmFtZXNwYWNlX3BhdGgsIGNscy5fZ2V0X3NwZWMpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNwZWMKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzcGVjCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZmluZF9tb2R1bGUoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKKyAgICAgICAgIiIiZmluZCB0aGUgbW9kdWxlIG9uIHN5cy5wYXRoIG9yICdwYXRoJyBiYXNlZCBvbiBzeXMucGF0aF9ob29rcyBhbmQKKyAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuCisKKyAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFVzZSBmaW5kX3NwZWMoKSBpbnN0ZWFkLgorCisgICAgICAgICIiIgorICAgICAgICBzcGVjID0gY2xzLmZpbmRfc3BlYyhmdWxsbmFtZSwgcGF0aCkKKyAgICAgICAgaWYgc3BlYyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNwZWMubG9hZGVyCisKKworY2xhc3MgRmlsZUZpbmRlcjoKKworICAgICIiIkZpbGUtYmFzZWQgZmluZGVyLgorCisgICAgSW50ZXJhY3Rpb25zIHdpdGggdGhlIGZpbGUgc3lzdGVtIGFyZSBjYWNoZWQgZm9yIHBlcmZvcm1hbmNlLCBiZWluZworICAgIHJlZnJlc2hlZCB3aGVuIHRoZSBkaXJlY3RvcnkgdGhlIGZpbmRlciBpcyBoYW5kbGluZyBoYXMgYmVlbiBtb2RpZmllZC4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsICpsb2FkZXJfZGV0YWlscyk6CisgICAgICAgICIiIkluaXRpYWxpemUgd2l0aCB0aGUgcGF0aCB0byBzZWFyY2ggb24gYW5kIGEgdmFyaWFibGUgbnVtYmVyIG9mCisgICAgICAgIDItdHVwbGVzIGNvbnRhaW5pbmcgdGhlIGxvYWRlciBhbmQgdGhlIGZpbGUgc3VmZml4ZXMgdGhlIGxvYWRlcgorICAgICAgICByZWNvZ25pemVzLiIiIgorICAgICAgICBsb2FkZXJzID0gW10KKyAgICAgICAgZm9yIGxvYWRlciwgc3VmZml4ZXMgaW4gbG9hZGVyX2RldGFpbHM6CisgICAgICAgICAgICBsb2FkZXJzLmV4dGVuZCgoc3VmZml4LCBsb2FkZXIpIGZvciBzdWZmaXggaW4gc3VmZml4ZXMpCisgICAgICAgIHNlbGYuX2xvYWRlcnMgPSBsb2FkZXJzCisgICAgICAgICMgQmFzZSAoZGlyZWN0b3J5KSBwYXRoCisgICAgICAgIHNlbGYucGF0aCA9IHBhdGggb3IgJy4nCisgICAgICAgIHNlbGYuX3BhdGhfbXRpbWUgPSAtMQorICAgICAgICBzZWxmLl9wYXRoX2NhY2hlID0gc2V0KCkKKyAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0gc2V0KCkKKworICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhzZWxmKToKKyAgICAgICAgIiIiSW52YWxpZGF0ZSB0aGUgZGlyZWN0b3J5IG10aW1lLiIiIgorICAgICAgICBzZWxmLl9wYXRoX210aW1lID0gLTEKKworICAgIGZpbmRfbW9kdWxlID0gX2ZpbmRfbW9kdWxlX3NoaW0KKworICAgIGRlZiBmaW5kX2xvYWRlcihzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIlRyeSB0byBmaW5kIGEgbG9hZGVyIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZSwgb3IgdGhlIG5hbWVzcGFjZQorICAgICAgICBwYWNrYWdlIHBvcnRpb25zLiBSZXR1cm5zIChsb2FkZXIsIGxpc3Qtb2YtcG9ydGlvbnMpLgorCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuICBVc2UgZmluZF9zcGVjKCkgaW5zdGVhZC4KKworICAgICAgICAiIiIKKyAgICAgICAgc3BlYyA9IHNlbGYuZmluZF9zcGVjKGZ1bGxuYW1lKQorICAgICAgICBpZiBzcGVjIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgW10KKyAgICAgICAgcmV0dXJuIHNwZWMubG9hZGVyLCBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIG9yIFtdCisKKyAgICBkZWYgX2dldF9zcGVjKHNlbGYsIGxvYWRlcl9jbGFzcywgZnVsbG5hbWUsIHBhdGgsIHNtc2wsIHRhcmdldCk6CisgICAgICAgIGxvYWRlciA9IGxvYWRlcl9jbGFzcyhmdWxsbmFtZSwgcGF0aCkKKyAgICAgICAgcmV0dXJuIHNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKGZ1bGxuYW1lLCBwYXRoLCBsb2FkZXI9bG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnM9c21zbCkKKworICAgIGRlZiBmaW5kX3NwZWMoc2VsZiwgZnVsbG5hbWUsIHRhcmdldD1Ob25lKToKKyAgICAgICAgIiIiVHJ5IHRvIGZpbmQgYSBsb2FkZXIgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLCBvciB0aGUgbmFtZXNwYWNlCisgICAgICAgIHBhY2thZ2UgcG9ydGlvbnMuIFJldHVybnMgKGxvYWRlciwgbGlzdC1vZi1wb3J0aW9ucykuIiIiCisgICAgICAgIGlzX25hbWVzcGFjZSA9IEZhbHNlCisgICAgICAgIHRhaWxfbW9kdWxlID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzJdCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG10aW1lID0gX3BhdGhfc3RhdChzZWxmLnBhdGggb3IgX29zLmdldGN3ZCgpKS5zdF9tdGltZQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIG10aW1lID0gLTEKKyAgICAgICAgaWYgbXRpbWUgIT0gc2VsZi5fcGF0aF9tdGltZToKKyAgICAgICAgICAgIHNlbGYuX2ZpbGxfY2FjaGUoKQorICAgICAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IG10aW1lCisgICAgICAgICMgdGFpbF9tb2R1bGUga2VlcHMgdGhlIG9yaWdpbmFsIGNhc2luZywgZm9yIF9fZmlsZV9fIGFuZCBmcmllbmRzCisgICAgICAgIGlmIF9yZWxheF9jYXNlKCk6CisgICAgICAgICAgICBjYWNoZSA9IHNlbGYuX3JlbGF4ZWRfcGF0aF9jYWNoZQorICAgICAgICAgICAgY2FjaGVfbW9kdWxlID0gdGFpbF9tb2R1bGUubG93ZXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2FjaGUgPSBzZWxmLl9wYXRoX2NhY2hlCisgICAgICAgICAgICBjYWNoZV9tb2R1bGUgPSB0YWlsX21vZHVsZQorICAgICAgICAjIENoZWNrIGlmIHRoZSBtb2R1bGUgaXMgdGhlIG5hbWUgb2YgYSBkaXJlY3RvcnkgKGFuZCB0aHVzIGEgcGFja2FnZSkuCisgICAgICAgIGlmIGNhY2hlX21vZHVsZSBpbiBjYWNoZToKKyAgICAgICAgICAgIGJhc2VfcGF0aCA9IF9wYXRoX2pvaW4oc2VsZi5wYXRoLCB0YWlsX21vZHVsZSkKKyAgICAgICAgICAgIGZvciBzdWZmaXgsIGxvYWRlcl9jbGFzcyBpbiBzZWxmLl9sb2FkZXJzOgorICAgICAgICAgICAgICAgIGluaXRfZmlsZW5hbWUgPSAnX19pbml0X18nICsgc3VmZml4CisgICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihiYXNlX3BhdGgsIGluaXRfZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgaWYgX3BhdGhfaXNmaWxlKGZ1bGxfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfc3BlYyhsb2FkZXJfY2xhc3MsIGZ1bGxuYW1lLCBmdWxsX3BhdGgsIFtiYXNlX3BhdGhdLCB0YXJnZXQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgSWYgYSBuYW1lc3BhY2UgcGFja2FnZSwgcmV0dXJuIHRoZSBwYXRoIGlmIHdlIGRvbid0CisgICAgICAgICAgICAgICAgIyAgZmluZCBhIG1vZHVsZSBpbiB0aGUgbmV4dCBzZWN0aW9uLgorICAgICAgICAgICAgICAgIGlzX25hbWVzcGFjZSA9IF9wYXRoX2lzZGlyKGJhc2VfcGF0aCkKKyAgICAgICAgIyBDaGVjayBmb3IgYSBmaWxlIHcvIGEgcHJvcGVyIHN1ZmZpeCBleGlzdHMuCisgICAgICAgIGZvciBzdWZmaXgsIGxvYWRlcl9jbGFzcyBpbiBzZWxmLl9sb2FkZXJzOgorICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlICsgc3VmZml4KQorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgndHJ5aW5nIHt9Jy5mb3JtYXQoZnVsbF9wYXRoKSwgdmVyYm9zaXR5PTIpCisgICAgICAgICAgICBpZiBjYWNoZV9tb2R1bGUgKyBzdWZmaXggaW4gY2FjaGU6CisgICAgICAgICAgICAgICAgaWYgX3BhdGhfaXNmaWxlKGZ1bGxfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfc3BlYyhsb2FkZXJfY2xhc3MsIGZ1bGxuYW1lLCBmdWxsX3BhdGgsIE5vbmUsIHRhcmdldCkKKyAgICAgICAgaWYgaXNfbmFtZXNwYWNlOgorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgncG9zc2libGUgbmFtZXNwYWNlIGZvciB7fScuZm9ybWF0KGJhc2VfcGF0aCkpCisgICAgICAgICAgICBzcGVjID0gX2Jvb3RzdHJhcC5Nb2R1bGVTcGVjKGZ1bGxuYW1lLCBOb25lKQorICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IFtiYXNlX3BhdGhdCisgICAgICAgICAgICByZXR1cm4gc3BlYworICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIF9maWxsX2NhY2hlKHNlbGYpOgorICAgICAgICAiIiJGaWxsIHRoZSBjYWNoZSBvZiBwb3RlbnRpYWwgbW9kdWxlcyBhbmQgcGFja2FnZXMgZm9yIHRoaXMgZGlyZWN0b3J5LiIiIgorICAgICAgICBwYXRoID0gc2VsZi5wYXRoCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbnRlbnRzID0gX29zLmxpc3RkaXIocGF0aCBvciBfb3MuZ2V0Y3dkKCkpCisgICAgICAgIGV4Y2VwdCAoRmlsZU5vdEZvdW5kRXJyb3IsIFBlcm1pc3Npb25FcnJvciwgTm90QURpcmVjdG9yeUVycm9yKToKKyAgICAgICAgICAgICMgRGlyZWN0b3J5IGhhcyBlaXRoZXIgYmVlbiByZW1vdmVkLCB0dXJuZWQgaW50byBhIGZpbGUsIG9yIG1hZGUKKyAgICAgICAgICAgICMgdW5yZWFkYWJsZS4KKyAgICAgICAgICAgIGNvbnRlbnRzID0gW10KKyAgICAgICAgIyBXZSBzdG9yZSB0d28gY2FjaGVkIHZlcnNpb25zLCB0byBoYW5kbGUgcnVudGltZSBjaGFuZ2VzIG9mIHRoZQorICAgICAgICAjIFBZVEhPTkNBU0VPSyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKyAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICAgICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBzZXQoY29udGVudHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFdpbmRvd3MgdXNlcnMgY2FuIGltcG9ydCBtb2R1bGVzIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBmaWxlCisgICAgICAgICAgICAjIHN1ZmZpeGVzIChmb3IgbGVnYWN5IHJlYXNvbnMpLiBNYWtlIHRoZSBzdWZmaXggbG93ZXJjYXNlIGhlcmUKKyAgICAgICAgICAgICMgc28gaXQncyBkb25lIG9uY2UgaW5zdGVhZCBvZiBmb3IgZXZlcnkgaW1wb3J0LiBUaGlzIGlzIHNhZmUgYXMKKyAgICAgICAgICAgICMgdGhlIHNwZWNpZmllZCBzdWZmaXhlcyB0byBjaGVjayBhZ2FpbnN0IGFyZSBhbHdheXMgc3BlY2lmaWVkIGluIGEKKyAgICAgICAgICAgICMgY2FzZS1zZW5zaXRpdmUgbWFubmVyLgorICAgICAgICAgICAgbG93ZXJfc3VmZml4X2NvbnRlbnRzID0gc2V0KCkKKyAgICAgICAgICAgIGZvciBpdGVtIGluIGNvbnRlbnRzOgorICAgICAgICAgICAgICAgIG5hbWUsIGRvdCwgc3VmZml4ID0gaXRlbS5wYXJ0aXRpb24oJy4nKQorICAgICAgICAgICAgICAgIGlmIGRvdDoKKyAgICAgICAgICAgICAgICAgICAgbmV3X25hbWUgPSAne30ue30nLmZvcm1hdChuYW1lLCBzdWZmaXgubG93ZXIoKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBuZXdfbmFtZSA9IG5hbWUKKyAgICAgICAgICAgICAgICBsb3dlcl9zdWZmaXhfY29udGVudHMuYWRkKG5ld19uYW1lKQorICAgICAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IGxvd2VyX3N1ZmZpeF9jb250ZW50cworICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aChfQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVMpOgorICAgICAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0ge2ZuLmxvd2VyKCkgZm9yIGZuIGluIGNvbnRlbnRzfQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhdGhfaG9vayhjbHMsICpsb2FkZXJfZGV0YWlscyk6CisgICAgICAgICIiIkEgY2xhc3MgbWV0aG9kIHdoaWNoIHJldHVybnMgYSBjbG9zdXJlIHRvIHVzZSBvbiBzeXMucGF0aF9ob29rCisgICAgICAgIHdoaWNoIHdpbGwgcmV0dXJuIGFuIGluc3RhbmNlIHVzaW5nIHRoZSBzcGVjaWZpZWQgbG9hZGVycyBhbmQgdGhlIHBhdGgKKyAgICAgICAgY2FsbGVkIG9uIHRoZSBjbG9zdXJlLgorCisgICAgICAgIElmIHRoZSBwYXRoIGNhbGxlZCBvbiB0aGUgY2xvc3VyZSBpcyBub3QgYSBkaXJlY3RvcnksIEltcG9ydEVycm9yIGlzCisgICAgICAgIHJhaXNlZC4KKworICAgICAgICAiIiIKKyAgICAgICAgZGVmIHBhdGhfaG9va19mb3JfRmlsZUZpbmRlcihwYXRoKToKKyAgICAgICAgICAgICIiIlBhdGggaG9vayBmb3IgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyLiIiIgorICAgICAgICAgICAgaWYgbm90IF9wYXRoX2lzZGlyKHBhdGgpOgorICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdvbmx5IGRpcmVjdG9yaWVzIGFyZSBzdXBwb3J0ZWQnLCBwYXRoPXBhdGgpCisgICAgICAgICAgICByZXR1cm4gY2xzKHBhdGgsICpsb2FkZXJfZGV0YWlscykKKworICAgICAgICByZXR1cm4gcGF0aF9ob29rX2Zvcl9GaWxlRmluZGVyCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnRmlsZUZpbmRlcih7IXJ9KScuZm9ybWF0KHNlbGYucGF0aCkKKworCisjIEltcG9ydCBzZXR1cCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIF9maXhfdXBfbW9kdWxlKG5zLCBuYW1lLCBwYXRobmFtZSwgY3BhdGhuYW1lPU5vbmUpOgorICAgICMgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KCkuCisgICAgbG9hZGVyID0gbnMuZ2V0KCdfX2xvYWRlcl9fJykKKyAgICBzcGVjID0gbnMuZ2V0KCdfX3NwZWNfXycpCisgICAgaWYgbm90IGxvYWRlcjoKKyAgICAgICAgaWYgc3BlYzoKKyAgICAgICAgICAgIGxvYWRlciA9IHNwZWMubG9hZGVyCisgICAgICAgIGVsaWYgcGF0aG5hbWUgPT0gY3BhdGhuYW1lOgorICAgICAgICAgICAgbG9hZGVyID0gU291cmNlbGVzc0ZpbGVMb2FkZXIobmFtZSwgcGF0aG5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2FkZXIgPSBTb3VyY2VGaWxlTG9hZGVyKG5hbWUsIHBhdGhuYW1lKQorICAgIGlmIG5vdCBzcGVjOgorICAgICAgICBzcGVjID0gc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24obmFtZSwgcGF0aG5hbWUsIGxvYWRlcj1sb2FkZXIpCisgICAgdHJ5OgorICAgICAgICBuc1snX19zcGVjX18nXSA9IHNwZWMKKyAgICAgICAgbnNbJ19fbG9hZGVyX18nXSA9IGxvYWRlcgorICAgICAgICBuc1snX19maWxlX18nXSA9IHBhdGhuYW1lCisgICAgICAgIG5zWydfX2NhY2hlZF9fJ10gPSBjcGF0aG5hbWUKKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAjIE5vdCBpbXBvcnRhbnQgZW5vdWdoIHRvIHJlcG9ydC4KKyAgICAgICAgcGFzcworCisKK2RlZiBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKToKKyAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBmaWxlLWJhc2VkIG1vZHVsZSBsb2FkZXJzLgorCisgICAgRWFjaCBpdGVtIGlzIGEgdHVwbGUgKGxvYWRlciwgc3VmZml4ZXMpLgorICAgICIiIgorICAgIGV4dGVuc2lvbnMgPSBFeHRlbnNpb25GaWxlTG9hZGVyLCBfaW1wLmV4dGVuc2lvbl9zdWZmaXhlcygpCisgICAgc291cmNlID0gU291cmNlRmlsZUxvYWRlciwgU09VUkNFX1NVRkZJWEVTCisgICAgYnl0ZWNvZGUgPSBTb3VyY2VsZXNzRmlsZUxvYWRlciwgQllURUNPREVfU1VGRklYRVMKKyAgICByZXR1cm4gW2V4dGVuc2lvbnMsIHNvdXJjZSwgYnl0ZWNvZGVdCisKKworZGVmIF9zZXR1cChfYm9vdHN0cmFwX21vZHVsZSk6CisgICAgIiIiU2V0dXAgdGhlIHBhdGgtYmFzZWQgaW1wb3J0ZXJzIGZvciBpbXBvcnRsaWIgYnkgaW1wb3J0aW5nIG5lZWRlZAorICAgIGJ1aWx0LWluIG1vZHVsZXMgYW5kIGluamVjdGluZyB0aGVtIGludG8gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisKKyAgICBPdGhlciBjb21wb25lbnRzIGFyZSBleHRyYWN0ZWQgZnJvbSB0aGUgY29yZSBib290c3RyYXAgbW9kdWxlLgorCisgICAgIiIiCisgICAgZ2xvYmFsIHN5cywgX2ltcCwgX2Jvb3RzdHJhcAorICAgIF9ib290c3RyYXAgPSBfYm9vdHN0cmFwX21vZHVsZQorICAgIHN5cyA9IF9ib290c3RyYXAuc3lzCisgICAgX2ltcCA9IF9ib290c3RyYXAuX2ltcAorCisgICAgIyBEaXJlY3RseSBsb2FkIGJ1aWx0LWluIG1vZHVsZXMgbmVlZGVkIGR1cmluZyBib290c3RyYXAuCisgICAgc2VsZl9tb2R1bGUgPSBzeXMubW9kdWxlc1tfX25hbWVfX10KKyAgICBmb3IgYnVpbHRpbl9uYW1lIGluICgnX2lvJywgJ193YXJuaW5ncycsICdidWlsdGlucycsICdtYXJzaGFsJyk6CisgICAgICAgIGlmIGJ1aWx0aW5fbmFtZSBub3QgaW4gc3lzLm1vZHVsZXM6CisgICAgICAgICAgICBidWlsdGluX21vZHVsZSA9IF9ib290c3RyYXAuX2J1aWx0aW5fZnJvbV9uYW1lKGJ1aWx0aW5fbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJ1aWx0aW5fbW9kdWxlID0gc3lzLm1vZHVsZXNbYnVpbHRpbl9uYW1lXQorICAgICAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCBidWlsdGluX25hbWUsIGJ1aWx0aW5fbW9kdWxlKQorCisgICAgIyBEaXJlY3RseSBsb2FkIHRoZSBvcyBtb2R1bGUgKG5lZWRlZCBkdXJpbmcgYm9vdHN0cmFwKS4KKyAgICBvc19kZXRhaWxzID0gKCdwb3NpeCcsIFsnLyddKSwgKCdudCcsIFsnXFwnLCAnLyddKQorICAgIGZvciBidWlsdGluX29zLCBwYXRoX3NlcGFyYXRvcnMgaW4gb3NfZGV0YWlsczoKKyAgICAgICAgIyBBc3N1bXB0aW9uIG1hZGUgaW4gX3BhdGhfam9pbigpCisgICAgICAgIGFzc2VydCBhbGwobGVuKHNlcCkgPT0gMSBmb3Igc2VwIGluIHBhdGhfc2VwYXJhdG9ycykKKyAgICAgICAgcGF0aF9zZXAgPSBwYXRoX3NlcGFyYXRvcnNbMF0KKyAgICAgICAgaWYgYnVpbHRpbl9vcyBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIG9zX21vZHVsZSA9IHN5cy5tb2R1bGVzW2J1aWx0aW5fb3NdCisgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zX21vZHVsZSA9IF9ib290c3RyYXAuX2J1aWx0aW5fZnJvbV9uYW1lKGJ1aWx0aW5fb3MpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdpbXBvcnRsaWIgcmVxdWlyZXMgcG9zaXggb3IgbnQnKQorICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfb3MnLCBvc19tb2R1bGUpCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ3BhdGhfc2VwJywgcGF0aF9zZXApCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ3BhdGhfc2VwYXJhdG9ycycsICcnLmpvaW4ocGF0aF9zZXBhcmF0b3JzKSkKKworICAgICMgRGlyZWN0bHkgbG9hZCB0aGUgX3RocmVhZCBtb2R1bGUgKG5lZWRlZCBkdXJpbmcgYm9vdHN0cmFwKS4KKyAgICB0cnk6CisgICAgICAgIHRocmVhZF9tb2R1bGUgPSBfYm9vdHN0cmFwLl9idWlsdGluX2Zyb21fbmFtZSgnX3RocmVhZCcpCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAjIFB5dGhvbiB3YXMgYnVpbHQgd2l0aG91dCB0aHJlYWRzCisgICAgICAgIHRocmVhZF9tb2R1bGUgPSBOb25lCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ190aHJlYWQnLCB0aHJlYWRfbW9kdWxlKQorCisgICAgIyBEaXJlY3RseSBsb2FkIHRoZSBfd2Vha3JlZiBtb2R1bGUgKG5lZWRlZCBkdXJpbmcgYm9vdHN0cmFwKS4KKyAgICB3ZWFrcmVmX21vZHVsZSA9IF9ib290c3RyYXAuX2J1aWx0aW5fZnJvbV9uYW1lKCdfd2Vha3JlZicpCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ193ZWFrcmVmJywgd2Vha3JlZl9tb2R1bGUpCisKKyAgICAjIERpcmVjdGx5IGxvYWQgdGhlIHdpbnJlZyBtb2R1bGUgKG5lZWRlZCBkdXJpbmcgYm9vdHN0cmFwKS4KKyAgICBpZiBidWlsdGluX29zID09ICdudCc6CisgICAgICAgIHdpbnJlZ19tb2R1bGUgPSBfYm9vdHN0cmFwLl9idWlsdGluX2Zyb21fbmFtZSgnd2lucmVnJykKKyAgICAgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ193aW5yZWcnLCB3aW5yZWdfbW9kdWxlKQorCisgICAgIyBDb25zdGFudHMKKyAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAnX3JlbGF4X2Nhc2UnLCBfbWFrZV9yZWxheF9jYXNlKCkpCisgICAgRVhURU5TSU9OX1NVRkZJWEVTLmV4dGVuZChfaW1wLmV4dGVuc2lvbl9zdWZmaXhlcygpKQorICAgIGlmIGJ1aWx0aW5fb3MgPT0gJ250JzoKKyAgICAgICAgU09VUkNFX1NVRkZJWEVTLmFwcGVuZCgnLnB5dycpCisgICAgICAgIGlmICdfZC5weWQnIGluIEVYVEVOU0lPTl9TVUZGSVhFUzoKKyAgICAgICAgICAgIFdpbmRvd3NSZWdpc3RyeUZpbmRlci5ERUJVR19CVUlMRCA9IFRydWUKKworCitkZWYgX2luc3RhbGwoX2Jvb3RzdHJhcF9tb2R1bGUpOgorICAgICIiIkluc3RhbGwgdGhlIHBhdGgtYmFzZWQgaW1wb3J0IGNvbXBvbmVudHMuIiIiCisgICAgX3NldHVwKF9ib290c3RyYXBfbW9kdWxlKQorICAgIHN1cHBvcnRlZF9sb2FkZXJzID0gX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCkKKyAgICBzeXMucGF0aF9ob29rcy5leHRlbmQoW0ZpbGVGaW5kZXIucGF0aF9ob29rKCpzdXBwb3J0ZWRfbG9hZGVycyldKQorICAgIGlmIF9vcy5fX25hbWVfXyA9PSAnbnQnOgorICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChXaW5kb3dzUmVnaXN0cnlGaW5kZXIpCisgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoUGF0aEZpbmRlcikKKworICAgICMgWFhYIFdlIGV4cG9zZSBhIGNvdXBsZSBvZiBjbGFzc2VzIGluIF9ib290c3RyYXAgZm9yIHRoZSBzYWtlIG9mCisgICAgIyBhIHNldHVwdG9vbHMgYnVnIChodHRwczovL2JpdGJ1Y2tldC5vcmcvcHlwYS9zZXR1cHRvb2xzL2lzc3VlLzM3OCkuCisgICAgX2Jvb3RzdHJhcF9tb2R1bGUuRmlsZUZpbmRlciA9IEZpbGVGaW5kZXIKKyAgICBfYm9vdHN0cmFwX21vZHVsZS5Tb3VyY2VGaWxlTG9hZGVyID0gU291cmNlRmlsZUxvYWRlcgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9hYmMucHkgYi9MaWIvaW1wb3J0bGliL2FiYy5weQppbmRleCA1NThhYmQzLi4xMWFmMjJkIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL2FiYy5weQorKysgYi9MaWIvaW1wb3J0bGliL2FiYy5weQpAQCAtMSwxMiArMSwxOCBAQAogIiIiQWJzdHJhY3QgYmFzZSBjbGFzc2VzIHJlbGF0ZWQgdG8gaW1wb3J0LiIiIgogZnJvbSAuIGltcG9ydCBfYm9vdHN0cmFwCitmcm9tIC4gaW1wb3J0IF9ib290c3RyYXBfZXh0ZXJuYWwKIGZyb20gLiBpbXBvcnQgbWFjaGluZXJ5CiB0cnk6CiAgICAgaW1wb3J0IF9mcm96ZW5faW1wb3J0bGliCisjICAgIGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbAogZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKICAgICBpZiBleGMubmFtZSAhPSAnX2Zyb3plbl9pbXBvcnRsaWInOgogICAgICAgICByYWlzZQogICAgIF9mcm96ZW5faW1wb3J0bGliID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbAorZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKKyAgICBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbCA9IF9ib290c3RyYXBfZXh0ZXJuYWwKIGltcG9ydCBhYmMKIAogCkBAIC0xNCw3ICsyMCwxMCBAQAogICAgIGZvciBjbHMgaW4gY2xhc3NlczoKICAgICAgICAgYWJzdHJhY3RfY2xzLnJlZ2lzdGVyKGNscykKICAgICAgICAgaWYgX2Zyb3plbl9pbXBvcnRsaWIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBmcm96ZW5fY2xzID0gZ2V0YXR0cihfZnJvemVuX2ltcG9ydGxpYiwgY2xzLl9fbmFtZV9fKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZyb3plbl9jbHMgPSBnZXRhdHRyKF9mcm96ZW5faW1wb3J0bGliLCBjbHMuX19uYW1lX18pCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgZnJvemVuX2NscyA9IGdldGF0dHIoX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwsIGNscy5fX25hbWVfXykKICAgICAgICAgICAgIGFic3RyYWN0X2Nscy5yZWdpc3Rlcihmcm96ZW5fY2xzKQogCiAKQEAgLTEwMiw3ICsxMTEsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUsIFtdCiAKLSAgICBmaW5kX21vZHVsZSA9IF9ib290c3RyYXAuX2ZpbmRfbW9kdWxlX3NoaW0KKyAgICBmaW5kX21vZHVsZSA9IF9ib290c3RyYXBfZXh0ZXJuYWwuX2ZpbmRfbW9kdWxlX3NoaW0KIAogICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhzZWxmKToKICAgICAgICAgIiIiQW4gb3B0aW9uYWwgbWV0aG9kIGZvciBjbGVhcmluZyB0aGUgZmluZGVyJ3MgY2FjaGUsIGlmIGFueS4KQEAgLTEyMiwxMSArMTMxLDggQEAKICAgICAgICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJhaXNlIEltcG9ydEVycm9yIGlmIGFueXRoaW5nIHByZXZlbnRzIGl0CiAgICAgICAgIGZyb20gY3JlYXRpbmcgYSBuZXcgbW9kdWxlLiAgSXQgbWF5IHJldHVybiBOb25lIHRvIGluZGljYXRlCiAgICAgICAgIHRoYXQgdGhlIHNwZWMgc2hvdWxkIGNyZWF0ZSB0aGUgbmV3IG1vZHVsZS4KLQotICAgICAgICBjcmVhdGVfbW9kdWxlKCkgaXMgb3B0aW9uYWwuCi0KICAgICAgICAgIiIiCi0gICAgICAgICMgQnkgZGVmYXVsdCwgZGVmZXIgdG8gX1NwZWNNZXRob2RzLmNyZWF0ZSgpIGZvciB0aGUgbmV3IG1vZHVsZS4KKyAgICAgICAgIyBCeSBkZWZhdWx0LCBkZWZlciB0byBkZWZhdWx0IHNlbWFudGljcyBmb3IgdGhlIG5ldyBtb2R1bGUuCiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAjIFdlIGRvbid0IGRlZmluZSBleGVjX21vZHVsZSgpIGhlcmUgc2luY2UgdGhhdCB3b3VsZCBicmVhawpAQCAtMjE3LDE1ICsyMjMsMTYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCiAKLSAgICBkZWYgc291cmNlX3RvX2NvZGUoc2VsZiwgZGF0YSwgcGF0aD0nPHN0cmluZz4nKToKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIHNvdXJjZV90b19jb2RlKGRhdGEsIHBhdGg9JzxzdHJpbmc+Jyk6CiAgICAgICAgICIiIkNvbXBpbGUgJ2RhdGEnIGludG8gYSBjb2RlIG9iamVjdC4KIAogICAgICAgICBUaGUgJ2RhdGEnIGFyZ3VtZW50IGNhbiBiZSBhbnl0aGluZyB0aGF0IGNvbXBpbGUoKSBjYW4gaGFuZGxlLiBUaGUncGF0aCcKICAgICAgICAgYXJndW1lbnQgc2hvdWxkIGJlIHdoZXJlIHRoZSBkYXRhIHdhcyByZXRyaWV2ZWQgKHdoZW4gYXBwbGljYWJsZSkuIiIiCiAgICAgICAgIHJldHVybiBjb21waWxlKGRhdGEsIHBhdGgsICdleGVjJywgZG9udF9pbmhlcml0PVRydWUpCiAKLSAgICBleGVjX21vZHVsZSA9IF9ib290c3RyYXAuX0xvYWRlckJhc2ljcy5leGVjX21vZHVsZQotICAgIGxvYWRfbW9kdWxlID0gX2Jvb3RzdHJhcC5fTG9hZGVyQmFzaWNzLmxvYWRfbW9kdWxlCisgICAgZXhlY19tb2R1bGUgPSBfYm9vdHN0cmFwX2V4dGVybmFsLl9Mb2FkZXJCYXNpY3MuZXhlY19tb2R1bGUKKyAgICBsb2FkX21vZHVsZSA9IF9ib290c3RyYXBfZXh0ZXJuYWwuX0xvYWRlckJhc2ljcy5sb2FkX21vZHVsZQogCiBfcmVnaXN0ZXIoSW5zcGVjdExvYWRlciwgbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlciwgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyKQogCkBAIC0yNjcsNyArMjc0LDcgQEAKIF9yZWdpc3RlcihFeGVjdXRpb25Mb2FkZXIsIG1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKQogCiAKLWNsYXNzIEZpbGVMb2FkZXIoX2Jvb3RzdHJhcC5GaWxlTG9hZGVyLCBSZXNvdXJjZUxvYWRlciwgRXhlY3V0aW9uTG9hZGVyKToKK2NsYXNzIEZpbGVMb2FkZXIoX2Jvb3RzdHJhcF9leHRlcm5hbC5GaWxlTG9hZGVyLCBSZXNvdXJjZUxvYWRlciwgRXhlY3V0aW9uTG9hZGVyKToKIAogICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgcGFydGlhbGx5IGltcGxlbWVudGluZyB0aGUgUmVzb3VyY2VMb2FkZXIgYW5kCiAgICAgRXhlY3V0aW9uTG9hZGVyIEFCQ3MuIiIiCkBAIC0yNzYsNyArMjgzLDcgQEAKICAgICAgICAgICAgIG1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKIAogCi1jbGFzcyBTb3VyY2VMb2FkZXIoX2Jvb3RzdHJhcC5Tb3VyY2VMb2FkZXIsIFJlc291cmNlTG9hZGVyLCBFeGVjdXRpb25Mb2FkZXIpOgorY2xhc3MgU291cmNlTG9hZGVyKF9ib290c3RyYXBfZXh0ZXJuYWwuU291cmNlTG9hZGVyLCBSZXNvdXJjZUxvYWRlciwgRXhlY3V0aW9uTG9hZGVyKToKIAogICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGxvYWRpbmcgc291cmNlIGNvZGUgKGFuZCBvcHRpb25hbGx5IGFueQogICAgIGNvcnJlc3BvbmRpbmcgYnl0ZWNvZGUpLgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9tYWNoaW5lcnkucHkgYi9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQppbmRleCAyZTFiMmQ3Li4xYjJiNWM5IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQorKysgYi9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQpAQCAtMiwxOCArMiwxOCBAQAogCiBpbXBvcnQgX2ltcAogCi1mcm9tIC5fYm9vdHN0cmFwIGltcG9ydCAoU09VUkNFX1NVRkZJWEVTLCBERUJVR19CWVRFQ09ERV9TVUZGSVhFUywKLSAgICAgICAgICAgICAgICAgICAgICAgICBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMsIEJZVEVDT0RFX1NVRkZJWEVTLAotICAgICAgICAgICAgICAgICAgICAgICAgIEVYVEVOU0lPTl9TVUZGSVhFUykKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IE1vZHVsZVNwZWMKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IEJ1aWx0aW5JbXBvcnRlcgogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgRnJvemVuSW1wb3J0ZXIKLWZyb20gLl9ib290c3RyYXAgaW1wb3J0IFdpbmRvd3NSZWdpc3RyeUZpbmRlcgotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgUGF0aEZpbmRlcgotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgRmlsZUZpbmRlcgotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgU291cmNlRmlsZUxvYWRlcgotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgU291cmNlbGVzc0ZpbGVMb2FkZXIKLWZyb20gLl9ib290c3RyYXAgaW1wb3J0IEV4dGVuc2lvbkZpbGVMb2FkZXIKK2Zyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IChTT1VSQ0VfU1VGRklYRVMsIERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTLAorICAgICAgICAgICAgICAgICAgICAgT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTLCBCWVRFQ09ERV9TVUZGSVhFUywKKyAgICAgICAgICAgICAgICAgICAgIEVYVEVOU0lPTl9TVUZGSVhFUykKK2Zyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IFdpbmRvd3NSZWdpc3RyeUZpbmRlcgorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgUGF0aEZpbmRlcgorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgRmlsZUZpbmRlcgorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgU291cmNlRmlsZUxvYWRlcgorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgU291cmNlbGVzc0ZpbGVMb2FkZXIKK2Zyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IEV4dGVuc2lvbkZpbGVMb2FkZXIKIAogCiBkZWYgYWxsX3N1ZmZpeGVzKCk6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3V0aWwucHkgYi9MaWIvaW1wb3J0bGliL3V0aWwucHkKaW5kZXggNmQ3M2IxZC4uMWRiZmYyNiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi91dGlsLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvdXRpbC5weQpAQCAtMSwxNyArMSwxOSBAQAogIiIiVXRpbGl0eSBjb2RlIGZvciBjb25zdHJ1Y3RpbmcgaW1wb3J0ZXJzLCBldGMuIiIiCi0KLWZyb20gLl9ib290c3RyYXAgaW1wb3J0IE1BR0lDX05VTUJFUgotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgY2FjaGVfZnJvbV9zb3VyY2UKLWZyb20gLl9ib290c3RyYXAgaW1wb3J0IGRlY29kZV9zb3VyY2UKLWZyb20gLl9ib290c3RyYXAgaW1wb3J0IHNvdXJjZV9mcm9tX2NhY2hlCi1mcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBzcGVjX2Zyb21fbG9hZGVyCi1mcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBzcGVjX2Zyb21fZmlsZV9sb2NhdGlvbgorZnJvbSAuIGltcG9ydCBhYmMKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IG1vZHVsZV9mcm9tX3NwZWMKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IF9yZXNvbHZlX25hbWUKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IHNwZWNfZnJvbV9sb2FkZXIKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IF9maW5kX3NwZWMKK2Zyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IE1BR0lDX05VTUJFUgorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgY2FjaGVfZnJvbV9zb3VyY2UKK2Zyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IGRlY29kZV9zb3VyY2UKK2Zyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IHNvdXJjZV9mcm9tX2NhY2hlCitmcm9tIC5fYm9vdHN0cmFwX2V4dGVybmFsIGltcG9ydCBzcGVjX2Zyb21fZmlsZV9sb2NhdGlvbgogCiBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyCiBpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKIGltcG9ydCB3YXJuaW5ncwogCiAKQEAgLTU0LDcgKzU2LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc3BlYyA9IG1vZHVsZS5fX3NwZWNfXwogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fS5fX3NwZWNfXyBpcyBub3Qgc2V0Jy5mb3JtYXQobmFtZSkpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fS5fX3NwZWNfXyBpcyBub3Qgc2V0Jy5mb3JtYXQobmFtZSkpIGZyb20gTm9uZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaWYgc3BlYyBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9Ll9fc3BlY19fIGlzIE5vbmUnLmZvcm1hdChuYW1lKSkKQEAgLTk0LDcgKzk2LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc3BlYyA9IG1vZHVsZS5fX3NwZWNfXwogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fS5fX3NwZWNfXyBpcyBub3Qgc2V0Jy5mb3JtYXQobmFtZSkpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fS5fX3NwZWNfXyBpcyBub3Qgc2V0Jy5mb3JtYXQobmFtZSkpIGZyb20gTm9uZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaWYgc3BlYyBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9Ll9fc3BlY19fIGlzIE5vbmUnLmZvcm1hdChuYW1lKSkKQEAgLTIwMCwzICsyMDIsOTQgQEAKICAgICAgICAgICAgIHJldHVybiBmeG4oc2VsZiwgbW9kdWxlLCAqYXJncywgKiprd2FyZ3MpCiAKICAgICByZXR1cm4gbW9kdWxlX2Zvcl9sb2FkZXJfd3JhcHBlcgorCisKK2NsYXNzIF9Nb2R1bGUodHlwZXMuTW9kdWxlVHlwZSk6CisKKyAgICAiIiJBIHN1YmNsYXNzIG9mIHRoZSBtb2R1bGUgdHlwZSB0byBhbGxvdyBfX2NsYXNzX18gbWFuaXB1bGF0aW9uLiIiIgorCisKK2NsYXNzIF9MYXp5TW9kdWxlKHR5cGVzLk1vZHVsZVR5cGUpOgorCisgICAgIiIiQSBzdWJjbGFzcyBvZiB0aGUgbW9kdWxlIHR5cGUgd2hpY2ggdHJpZ2dlcnMgbG9hZGluZyB1cG9uIGF0dHJpYnV0ZSBhY2Nlc3MuIiIiCisKKyAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBhdHRyKToKKyAgICAgICAgIiIiVHJpZ2dlciB0aGUgbG9hZCBvZiB0aGUgbW9kdWxlIGFuZCByZXR1cm4gdGhlIGF0dHJpYnV0ZS4iIiIKKyAgICAgICAgIyBBbGwgbW9kdWxlIG1ldGFkYXRhIG11c3QgYmUgZ2FybmVyZWQgZnJvbSBfX3NwZWNfXyBpbiBvcmRlciB0byBhdm9pZAorICAgICAgICAjIHVzaW5nIG11dGF0ZWQgdmFsdWVzLgorICAgICAgICAjIFN0b3AgdHJpZ2dlcmluZyB0aGlzIG1ldGhvZC4KKyAgICAgICAgc2VsZi5fX2NsYXNzX18gPSBfTW9kdWxlCisgICAgICAgICMgR2V0IHRoZSBvcmlnaW5hbCBuYW1lIHRvIG1ha2Ugc3VyZSBubyBvYmplY3Qgc3Vic3RpdHV0aW9uIG9jY3VycmVkCisgICAgICAgICMgaW4gc3lzLm1vZHVsZXMuCisgICAgICAgIG9yaWdpbmFsX25hbWUgPSBzZWxmLl9fc3BlY19fLm5hbWUKKyAgICAgICAgIyBGaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCBhdHRyaWJ1dGVzIHdlcmUgbXV0YXRlZCBiZXR3ZWVuIHRoZSBjcmVhdGlvbgorICAgICAgICAjIG9mIHRoZSBtb2R1bGUgYW5kIG5vdy4KKyAgICAgICAgYXR0cnNfdGhlbiA9IHNlbGYuX19zcGVjX18ubG9hZGVyX3N0YXRlCisgICAgICAgIGF0dHJzX25vdyA9IHNlbGYuX19kaWN0X18KKyAgICAgICAgYXR0cnNfdXBkYXRlZCA9IHt9CisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGF0dHJzX25vdy5pdGVtcygpOgorICAgICAgICAgICAgIyBDb2RlIHRoYXQgc2V0IHRoZSBhdHRyaWJ1dGUgbWF5IGhhdmUga2VwdCBhIHJlZmVyZW5jZSB0byB0aGUKKyAgICAgICAgICAgICMgYXNzaWduZWQgb2JqZWN0LCBtYWtpbmcgaWRlbnRpdHkgbW9yZSBpbXBvcnRhbnQgdGhhbiBlcXVhbGl0eS4KKyAgICAgICAgICAgIGlmIGtleSBub3QgaW4gYXR0cnNfdGhlbjoKKyAgICAgICAgICAgICAgICBhdHRyc191cGRhdGVkW2tleV0gPSB2YWx1ZQorICAgICAgICAgICAgZWxpZiBpZChhdHRyc19ub3dba2V5XSkgIT0gaWQoYXR0cnNfdGhlbltrZXldKToKKyAgICAgICAgICAgICAgICBhdHRyc191cGRhdGVkW2tleV0gPSB2YWx1ZQorICAgICAgICBzZWxmLl9fc3BlY19fLmxvYWRlci5leGVjX21vZHVsZShzZWxmKQorICAgICAgICAjIElmIGV4ZWNfbW9kdWxlKCkgd2FzIHVzZWQgZGlyZWN0bHkgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoZSBtb2R1bGUKKyAgICAgICAgIyBvYmplY3Qgd2FzIHB1dCBpbnRvIHN5cy5tb2R1bGVzLgorICAgICAgICBpZiBvcmlnaW5hbF9uYW1lIGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgaWYgaWQoc2VsZikgIT0gaWQoc3lzLm1vZHVsZXNbb3JpZ2luYWxfbmFtZV0pOgorICAgICAgICAgICAgICAgIG1zZyA9ICgnbW9kdWxlIG9iamVjdCBmb3IgeyFyfSBzdWJzdGl0dXRlZCBpbiBzeXMubW9kdWxlcyAnCisgICAgICAgICAgICAgICAgICAgICAgICdkdXJpbmcgYSBsYXp5IGxvYWQnKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cuZm9ybWF0KG9yaWdpbmFsX25hbWUpKQorICAgICAgICAjIFVwZGF0ZSBhZnRlciBsb2FkaW5nIHNpbmNlIHRoYXQncyB3aGF0IHdvdWxkIGhhcHBlbiBpbiBhbiBlYWdlcgorICAgICAgICAjIGxvYWRpbmcgc2l0dWF0aW9uLgorICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShhdHRyc191cGRhdGVkKQorICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCBhdHRyKQorCisgICAgZGVmIF9fZGVsYXR0cl9fKHNlbGYsIGF0dHIpOgorICAgICAgICAiIiJUcmlnZ2VyIHRoZSBsb2FkIGFuZCB0aGVuIHBlcmZvcm0gdGhlIGRlbGV0aW9uLiIiIgorICAgICAgICAjIFRvIHRyaWdnZXIgdGhlIGxvYWQgYW5kIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgYXR0cmlidXRlCisgICAgICAgICMgZG9lc24ndCBleGlzdC4KKyAgICAgICAgc2VsZi5fX2dldGF0dHJpYnV0ZV9fKGF0dHIpCisgICAgICAgIGRlbGF0dHIoc2VsZiwgYXR0cikKKworCitjbGFzcyBMYXp5TG9hZGVyKGFiYy5Mb2FkZXIpOgorCisgICAgIiIiQSBsb2FkZXIgdGhhdCBjcmVhdGVzIGEgbW9kdWxlIHdoaWNoIGRlZmVycyBsb2FkaW5nIHVudGlsIGF0dHJpYnV0ZSBhY2Nlc3MuIiIiCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9fY2hlY2tfZWFnZXJfbG9hZGVyKGxvYWRlcik6CisgICAgICAgIGlmIG5vdCBoYXNhdHRyKGxvYWRlciwgJ2V4ZWNfbW9kdWxlJyk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2xvYWRlciBtdXN0IGRlZmluZSBleGVjX21vZHVsZSgpJykKKyAgICAgICAgZWxpZiBoYXNhdHRyKGxvYWRlci5fX2NsYXNzX18sICdjcmVhdGVfbW9kdWxlJyk6CisgICAgICAgICAgICBpZiBhYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGUgIT0gbG9hZGVyLl9fY2xhc3NfXy5jcmVhdGVfbW9kdWxlOgorICAgICAgICAgICAgICAgICMgT25seSBjYXJlIGlmIGNyZWF0ZV9tb2R1bGUoKSBpcyBvdmVycmlkZGVuIGluIGEgc3ViY2xhc3Mgb2YKKyAgICAgICAgICAgICAgICAjIGltcG9ydGxpYi5hYmMuTG9hZGVyLgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbG9hZGVyIGNhbm5vdCBkZWZpbmUgY3JlYXRlX21vZHVsZSgpJykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmYWN0b3J5KGNscywgbG9hZGVyKToKKyAgICAgICAgIiIiQ29uc3RydWN0IGEgY2FsbGFibGUgd2hpY2ggcmV0dXJucyB0aGUgZWFnZXIgbG9hZGVyIG1hZGUgbGF6eS4iIiIKKyAgICAgICAgY2xzLl9fY2hlY2tfZWFnZXJfbG9hZGVyKGxvYWRlcikKKyAgICAgICAgcmV0dXJuIGxhbWJkYSAqYXJncywgKiprd2FyZ3M6IGNscyhsb2FkZXIoKmFyZ3MsICoqa3dhcmdzKSkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2FkZXIpOgorICAgICAgICBzZWxmLl9fY2hlY2tfZWFnZXJfbG9hZGVyKGxvYWRlcikKKyAgICAgICAgc2VsZi5sb2FkZXIgPSBsb2FkZXIKKworICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIHNwZWMpOgorICAgICAgICAiIiJDcmVhdGUgYSBtb2R1bGUgd2hpY2ggY2FuIGhhdmUgaXRzIF9fY2xhc3NfXyBtYW5pcHVsYXRlZC4iIiIKKyAgICAgICAgcmV0dXJuIF9Nb2R1bGUoc3BlYy5uYW1lKQorCisgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgICIiIk1ha2UgdGhlIG1vZHVsZSBsb2FkIGxhemlseS4iIiIKKyAgICAgICAgbW9kdWxlLl9fc3BlY19fLmxvYWRlciA9IHNlbGYubG9hZGVyCisgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc2VsZi5sb2FkZXIKKyAgICAgICAgIyBEb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGRlZXAtY29weWluZyBhcyB0cnlpbmcgdG8gc2V0IGFuIGF0dHJpYnV0ZQorICAgICAgICAjIG9uIGFuIG9iamVjdCB3b3VsZCBoYXZlIHRyaWdnZXJlZCB0aGUgbG9hZCwKKyAgICAgICAgIyBlLmcuIGBgbW9kdWxlLl9fc3BlY19fLmxvYWRlciA9IE5vbmVgYCB3b3VsZCB0cmlnZ2VyIGEgbG9hZCBmcm9tCisgICAgICAgICMgdHJ5aW5nIHRvIGFjY2VzcyBtb2R1bGUuX19zcGVjX18uCisgICAgICAgIG1vZHVsZS5fX3NwZWNfXy5sb2FkZXJfc3RhdGUgPSBtb2R1bGUuX19kaWN0X18uY29weSgpCisgICAgICAgIG1vZHVsZS5fX2NsYXNzX18gPSBfTGF6eU1vZHVsZQpkaWZmIC0tZ2l0IGEvTGliL2luc3BlY3QucHkgYi9MaWIvaW5zcGVjdC5weQppbmRleCA0Mjk4ZGU2Li5iNjViZWM3IDEwMDY0NAotLS0gYS9MaWIvaW5zcGVjdC5weQorKysgYi9MaWIvaW5zcGVjdC5weQpAQCAtMTcsNyArMTcsNyBAQAogICAgIGdldGNsYXNzdHJlZSgpIC0gYXJyYW5nZSBjbGFzc2VzIHNvIGFzIHRvIHJlcHJlc2VudCB0aGVpciBoaWVyYXJjaHkKIAogICAgIGdldGFyZ3NwZWMoKSwgZ2V0YXJndmFsdWVzKCksIGdldGNhbGxhcmdzKCkgLSBnZXQgaW5mbyBhYm91dCBmdW5jdGlvbiBhcmd1bWVudHMKLSAgICBnZXRmdWxsYXJnc3BlYygpIC0gc2FtZSwgd2l0aCBzdXBwb3J0IGZvciBQeXRob24tMzAwMCBmZWF0dXJlcworICAgIGdldGZ1bGxhcmdzcGVjKCkgLSBzYW1lLCB3aXRoIHN1cHBvcnQgZm9yIFB5dGhvbiAzIGZlYXR1cmVzCiAgICAgZm9ybWF0YXJnc3BlYygpLCBmb3JtYXRhcmd2YWx1ZXMoKSAtIGZvcm1hdCBhbiBhcmd1bWVudCBzcGVjCiAgICAgZ2V0b3V0ZXJmcmFtZXMoKSwgZ2V0aW5uZXJmcmFtZXMoKSAtIGdldCBpbmZvIGFib3V0IGZyYW1lcwogICAgIGN1cnJlbnRmcmFtZSgpIC0gZ2V0IHRoZSBjdXJyZW50IHN0YWNrIGZyYW1lCkBAIC0zMiw2ICszMiw5IEBACiAgICAgICAgICAgICAgICdZdXJ5IFNlbGl2YW5vdiA8eXNlbGl2YW5vdkBzcHJ5bWl4LmNvbT4nKQogCiBpbXBvcnQgYXN0CitpbXBvcnQgZGlzCitpbXBvcnQgY29sbGVjdGlvbnMuYWJjCitpbXBvcnQgZW51bQogaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBsaW5lY2FjaGUKQEAgLTQ4LDE4ICs1MSwxMCBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSwgT3JkZXJlZERpY3QKIAogIyBDcmVhdGUgY29uc3RhbnRzIGZvciB0aGUgY29tcGlsZXIgZmxhZ3MgaW4gSW5jbHVkZS9jb2RlLmgKLSMgV2UgdHJ5IHRvIGdldCB0aGVtIGZyb20gZGlzIHRvIGF2b2lkIGR1cGxpY2F0aW9uLCBidXQgZmFsbAotIyBiYWNrIHRvIGhhcmQtY29kaW5nIHNvIHRoZSBkZXBlbmRlbmN5IGlzIG9wdGlvbmFsCi10cnk6Ci0gICAgZnJvbSBkaXMgaW1wb3J0IENPTVBJTEVSX0ZMQUdfTkFNRVMgYXMgX2ZsYWdfbmFtZXMKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBDT19PUFRJTUlaRUQsIENPX05FV0xPQ0FMUyA9IDB4MSwgMHgyCi0gICAgQ09fVkFSQVJHUywgQ09fVkFSS0VZV09SRFMgPSAweDQsIDB4OAotICAgIENPX05FU1RFRCwgQ09fR0VORVJBVE9SLCBDT19OT0ZSRUUgPSAweDEwLCAweDIwLCAweDQwCi1lbHNlOgotICAgIG1vZF9kaWN0ID0gZ2xvYmFscygpCi0gICAgZm9yIGssIHYgaW4gX2ZsYWdfbmFtZXMuaXRlbXMoKToKLSAgICAgICAgbW9kX2RpY3RbIkNPXyIgKyB2XSA9IGsKKyMgV2UgdHJ5IHRvIGdldCB0aGVtIGZyb20gZGlzIHRvIGF2b2lkIGR1cGxpY2F0aW9uCittb2RfZGljdCA9IGdsb2JhbHMoKQorZm9yIGssIHYgaW4gZGlzLkNPTVBJTEVSX0ZMQUdfTkFNRVMuaXRlbXMoKToKKyAgICBtb2RfZGljdFsiQ09fIiArIHZdID0gawogCiAjIFNlZSBJbmNsdWRlL29iamVjdC5oCiBUUEZMQUdTX0lTX0FCU1RSQUNUID0gMSA8PCAyMApAQCAtMTgyLDYgKzE3NywxNSBAQAogICAgIHJldHVybiBib29sKChpc2Z1bmN0aW9uKG9iamVjdCkgb3IgaXNtZXRob2Qob2JqZWN0KSkgYW5kCiAgICAgICAgICAgICAgICAgb2JqZWN0Ll9fY29kZV9fLmNvX2ZsYWdzICYgQ09fR0VORVJBVE9SKQogCitkZWYgaXNjb3JvdXRpbmVmdW5jdGlvbihvYmplY3QpOgorICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBjb3JvdXRpbmUgZnVuY3Rpb24uCisKKyAgICBDb3JvdXRpbmUgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIHdpdGggImFzeW5jIGRlZiIgc3ludGF4LAorICAgIG9yIGdlbmVyYXRvcnMgZGVjb3JhdGVkIHdpdGggInR5cGVzLmNvcm91dGluZSIuCisgICAgIiIiCisgICAgcmV0dXJuIGJvb2woKGlzZnVuY3Rpb24ob2JqZWN0KSBvciBpc21ldGhvZChvYmplY3QpKSBhbmQKKyAgICAgICAgICAgICAgICBvYmplY3QuX19jb2RlX18uY29fZmxhZ3MgJiBDT19DT1JPVVRJTkUpCisKIGRlZiBpc2dlbmVyYXRvcihvYmplY3QpOgogICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBnZW5lcmF0b3IuCiAKQEAgLTE5OSw2ICsyMDMsMTcgQEAKICAgICAgICAgdGhyb3cgICAgICAgICAgIHVzZWQgdG8gcmFpc2UgYW4gZXhjZXB0aW9uIGluc2lkZSB0aGUgZ2VuZXJhdG9yIiIiCiAgICAgcmV0dXJuIGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlcy5HZW5lcmF0b3JUeXBlKQogCitkZWYgaXNjb3JvdXRpbmUob2JqZWN0KToKKyAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgY29yb3V0aW5lLiIiIgorICAgIHJldHVybiBpc2luc3RhbmNlKG9iamVjdCwgdHlwZXMuQ29yb3V0aW5lVHlwZSkKKworZGVmIGlzYXdhaXRhYmxlKG9iamVjdCk6CisgICAgIiIiUmV0dXJuIHRydWUgaXMgb2JqZWN0IGNhbiBiZSBwYXNzZWQgdG8gYW4gYGBhd2FpdGBgIGV4cHJlc3Npb24uIiIiCisgICAgcmV0dXJuIChpc2luc3RhbmNlKG9iamVjdCwgdHlwZXMuQ29yb3V0aW5lVHlwZSkgb3IKKyAgICAgICAgICAgIGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlcy5HZW5lcmF0b3JUeXBlKSBhbmQKKyAgICAgICAgICAgICAgICBvYmplY3QuZ2lfY29kZS5jb19mbGFncyAmIENPX0lURVJBQkxFX0NPUk9VVElORSBvcgorICAgICAgICAgICAgaXNpbnN0YW5jZShvYmplY3QsIGNvbGxlY3Rpb25zLmFiYy5Bd2FpdGFibGUpKQorCiBkZWYgaXN0cmFjZWJhY2sob2JqZWN0KToKICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgdHJhY2ViYWNrLgogCkBAIC00NjcsNiArNDgyLDc1IEBACiAgICAgZXhwbGluZSA9IGxpbmUuZXhwYW5kdGFicygpCiAgICAgcmV0dXJuIGxlbihleHBsaW5lKSAtIGxlbihleHBsaW5lLmxzdHJpcCgpKQogCitkZWYgX2ZpbmRjbGFzcyhmdW5jKToKKyAgICBjbHMgPSBzeXMubW9kdWxlcy5nZXQoZnVuYy5fX21vZHVsZV9fKQorICAgIGlmIGNscyBpcyBOb25lOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIGZvciBuYW1lIGluIGZ1bmMuX19xdWFsbmFtZV9fLnNwbGl0KCcuJylbOi0xXToKKyAgICAgICAgY2xzID0gZ2V0YXR0cihjbHMsIG5hbWUpCisgICAgaWYgbm90IGlzY2xhc3MoY2xzKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICByZXR1cm4gY2xzCisKK2RlZiBfZmluZGRvYyhvYmopOgorICAgIGlmIGlzY2xhc3Mob2JqKToKKyAgICAgICAgZm9yIGJhc2UgaW4gb2JqLl9fbXJvX186CisgICAgICAgICAgICBpZiBiYXNlIGlzIG5vdCBvYmplY3Q6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBkb2MgPSBiYXNlLl9fZG9jX18KKyAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgZG9jIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9jCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBpZiBpc21ldGhvZChvYmopOgorICAgICAgICBuYW1lID0gb2JqLl9fZnVuY19fLl9fbmFtZV9fCisgICAgICAgIHNlbGYgPSBvYmouX19zZWxmX18KKyAgICAgICAgaWYgKGlzY2xhc3Moc2VsZikgYW5kCisgICAgICAgICAgICBnZXRhdHRyKGdldGF0dHIoc2VsZiwgbmFtZSwgTm9uZSksICdfX2Z1bmNfXycpIGlzIG9iai5fX2Z1bmNfXyk6CisgICAgICAgICAgICAjIGNsYXNzbWV0aG9kCisgICAgICAgICAgICBjbHMgPSBzZWxmCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjbHMgPSBzZWxmLl9fY2xhc3NfXworICAgIGVsaWYgaXNmdW5jdGlvbihvYmopOgorICAgICAgICBuYW1lID0gb2JqLl9fbmFtZV9fCisgICAgICAgIGNscyA9IF9maW5kY2xhc3Mob2JqKQorICAgICAgICBpZiBjbHMgaXMgTm9uZSBvciBnZXRhdHRyKGNscywgbmFtZSkgaXMgbm90IG9iajoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgZWxpZiBpc2J1aWx0aW4ob2JqKToKKyAgICAgICAgbmFtZSA9IG9iai5fX25hbWVfXworICAgICAgICBzZWxmID0gb2JqLl9fc2VsZl9fCisgICAgICAgIGlmIChpc2NsYXNzKHNlbGYpIGFuZAorICAgICAgICAgICAgc2VsZi5fX3F1YWxuYW1lX18gKyAnLicgKyBuYW1lID09IG9iai5fX3F1YWxuYW1lX18pOgorICAgICAgICAgICAgIyBjbGFzc21ldGhvZAorICAgICAgICAgICAgY2xzID0gc2VsZgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2xzID0gc2VsZi5fX2NsYXNzX18KKyAgICAjIFNob3VsZCBiZSB0ZXN0ZWQgYmVmb3JlIGlzZGF0YWRlc2NyaXB0b3IoKS4KKyAgICBlbGlmIGlzaW5zdGFuY2Uob2JqLCBwcm9wZXJ0eSk6CisgICAgICAgIGZ1bmMgPSBvYmouZmdldAorICAgICAgICBuYW1lID0gZnVuYy5fX25hbWVfXworICAgICAgICBjbHMgPSBfZmluZGNsYXNzKGZ1bmMpCisgICAgICAgIGlmIGNscyBpcyBOb25lIG9yIGdldGF0dHIoY2xzLCBuYW1lKSBpcyBub3Qgb2JqOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBlbGlmIGlzbWV0aG9kZGVzY3JpcHRvcihvYmopIG9yIGlzZGF0YWRlc2NyaXB0b3Iob2JqKToKKyAgICAgICAgbmFtZSA9IG9iai5fX25hbWVfXworICAgICAgICBjbHMgPSBvYmouX19vYmpjbGFzc19fCisgICAgICAgIGlmIGdldGF0dHIoY2xzLCBuYW1lKSBpcyBub3Qgb2JqOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZm9yIGJhc2UgaW4gY2xzLl9fbXJvX186CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRvYyA9IGdldGF0dHIoYmFzZSwgbmFtZSkuX19kb2NfXworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBkb2MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gZG9jCisgICAgcmV0dXJuIE5vbmUKKwogZGVmIGdldGRvYyhvYmplY3QpOgogICAgICIiIkdldCB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgZm9yIGFuIG9iamVjdC4KIApAQCAtNDc3LDYgKzU2MSwxMSBAQAogICAgICAgICBkb2MgPSBvYmplY3QuX19kb2NfXwogICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBpZiBkb2MgaXMgTm9uZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZG9jID0gX2ZpbmRkb2Mob2JqZWN0KQorICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBUeXBlRXJyb3IpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICBpZiBub3QgaXNpbnN0YW5jZShkb2MsIHN0cik6CiAgICAgICAgIHJldHVybiBOb25lCiAgICAgcmV0dXJuIGNsZWFuZG9jKGRvYykKQEAgLTcxMCw3ICs3OTksNyBAQAogICAgICAgICBpZiBub3QgaGFzYXR0cihvYmplY3QsICdjb19maXJzdGxpbmVubycpOgogICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignY291bGQgbm90IGZpbmQgZnVuY3Rpb24gZGVmaW5pdGlvbicpCiAgICAgICAgIGxudW0gPSBvYmplY3QuY29fZmlyc3RsaW5lbm8gLSAxCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUocideKFxzKmRlZlxzKXwoLiooPzwhXHcpbGFtYmRhKDp8XHMpKXxeKFxzKkApJykKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyJ14oXHMqZGVmXHMpfChccyphc3luY1xzK2RlZlxzKXwoLiooPzwhXHcpbGFtYmRhKDp8XHMpKXxeKFxzKkApJykKICAgICAgICAgd2hpbGUgbG51bSA+IDA6CiAgICAgICAgICAgICBpZiBwYXQubWF0Y2gobGluZXNbbG51bV0pOiBicmVhawogICAgICAgICAgICAgbG51bSA9IGxudW0gLSAxCkBAIC03NzEsMjEgKzg2MCwzNyBAQAogICAgICAgICBzZWxmLmlzbGFtYmRhID0gRmFsc2UKICAgICAgICAgc2VsZi5zdGFydGVkID0gRmFsc2UKICAgICAgICAgc2VsZi5wYXNzbGluZSA9IEZhbHNlCisgICAgICAgIHNlbGYuaW5kZWNvcmF0b3IgPSBGYWxzZQorICAgICAgICBzZWxmLmRlY29yYXRvcmhhc2FyZ3MgPSBGYWxzZQogICAgICAgICBzZWxmLmxhc3QgPSAxCiAKICAgICBkZWYgdG9rZW5lYXRlcihzZWxmLCB0eXBlLCB0b2tlbiwgc3Jvd2NvbCwgZXJvd2NvbCwgbGluZSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLnN0YXJ0ZWQ6CisgICAgICAgIGlmIG5vdCBzZWxmLnN0YXJ0ZWQgYW5kIG5vdCBzZWxmLmluZGVjb3JhdG9yOgorICAgICAgICAgICAgIyBza2lwIGFueSBkZWNvcmF0b3JzCisgICAgICAgICAgICBpZiB0b2tlbiA9PSAiQCI6CisgICAgICAgICAgICAgICAgc2VsZi5pbmRlY29yYXRvciA9IFRydWUKICAgICAgICAgICAgICMgbG9vayBmb3IgdGhlIGZpcnN0ICJkZWYiLCAiY2xhc3MiIG9yICJsYW1iZGEiCi0gICAgICAgICAgICBpZiB0b2tlbiBpbiAoImRlZiIsICJjbGFzcyIsICJsYW1iZGEiKToKKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gKCJkZWYiLCAiY2xhc3MiLCAibGFtYmRhIik6CiAgICAgICAgICAgICAgICAgaWYgdG9rZW4gPT0gImxhbWJkYSI6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXNsYW1iZGEgPSBUcnVlCiAgICAgICAgICAgICAgICAgc2VsZi5zdGFydGVkID0gVHJ1ZQogICAgICAgICAgICAgc2VsZi5wYXNzbGluZSA9IFRydWUgICAgIyBza2lwIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUKKyAgICAgICAgZWxpZiB0b2tlbiA9PSAiKCI6CisgICAgICAgICAgICBpZiBzZWxmLmluZGVjb3JhdG9yOgorICAgICAgICAgICAgICAgIHNlbGYuZGVjb3JhdG9yaGFzYXJncyA9IFRydWUKKyAgICAgICAgZWxpZiB0b2tlbiA9PSAiKSI6CisgICAgICAgICAgICBpZiBzZWxmLmluZGVjb3JhdG9yOgorICAgICAgICAgICAgICAgIHNlbGYuaW5kZWNvcmF0b3IgPSBGYWxzZQorICAgICAgICAgICAgICAgIHNlbGYuZGVjb3JhdG9yaGFzYXJncyA9IEZhbHNlCiAgICAgICAgIGVsaWYgdHlwZSA9PSB0b2tlbml6ZS5ORVdMSU5FOgogICAgICAgICAgICAgc2VsZi5wYXNzbGluZSA9IEZhbHNlICAgIyBzdG9wIHNraXBwaW5nIHdoZW4gYSBORVdMSU5FIGlzIHNlZW4KICAgICAgICAgICAgIHNlbGYubGFzdCA9IHNyb3djb2xbMF0KICAgICAgICAgICAgIGlmIHNlbGYuaXNsYW1iZGE6ICAgICAgICMgbGFtYmRhcyBhbHdheXMgZW5kIGF0IHRoZSBmaXJzdCBORVdMSU5FCiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kT2ZCbG9jaworICAgICAgICAgICAgIyBoaXR0aW5nIGEgTkVXTElORSB3aGVuIGluIGEgZGVjb3JhdG9yIHdpdGhvdXQgYXJncworICAgICAgICAgICAgIyBlbmRzIHRoZSBkZWNvcmF0b3IKKyAgICAgICAgICAgIGlmIHNlbGYuaW5kZWNvcmF0b3IgYW5kIG5vdCBzZWxmLmRlY29yYXRvcmhhc2FyZ3M6CisgICAgICAgICAgICAgICAgc2VsZi5pbmRlY29yYXRvciA9IEZhbHNlCiAgICAgICAgIGVsaWYgc2VsZi5wYXNzbGluZToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxpZiB0eXBlID09IHRva2VuaXplLklOREVOVDoKQEAgLTgyMiwxMCArOTI3LDEzIEBACiAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgb2JqZWN0IGFuZCB0aGUgbGluZSBudW1iZXIgaW5kaWNhdGVzIHdoZXJlIGluIHRoZQogICAgIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRoZSBmaXJzdCBsaW5lIG9mIGNvZGUgd2FzIGZvdW5kLiAgQW4gT1NFcnJvciBpcwogICAgIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUgY2Fubm90IGJlIHJldHJpZXZlZC4iIiIKKyAgICBvYmplY3QgPSB1bndyYXAob2JqZWN0KQogICAgIGxpbmVzLCBsbnVtID0gZmluZHNvdXJjZShvYmplY3QpCiAKLSAgICBpZiBpc21vZHVsZShvYmplY3QpOiByZXR1cm4gbGluZXMsIDAKLSAgICBlbHNlOiByZXR1cm4gZ2V0YmxvY2sobGluZXNbbG51bTpdKSwgbG51bSArIDEKKyAgICBpZiBpc21vZHVsZShvYmplY3QpOgorICAgICAgICByZXR1cm4gbGluZXMsIDAKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gZ2V0YmxvY2sobGluZXNbbG51bTpdKSwgbG51bSArIDEKIAogZGVmIGdldHNvdXJjZShvYmplY3QpOgogICAgICIiIlJldHVybiB0aGUgdGV4dCBvZiB0aGUgc291cmNlIGNvZGUgZm9yIGFuIG9iamVjdC4KQEAgLTkxOSwxNyArMTAyNywxOCBAQAogZGVmIGdldGFyZ3NwZWMoZnVuYyk6CiAgICAgIiIiR2V0IHRoZSBuYW1lcyBhbmQgZGVmYXVsdCB2YWx1ZXMgb2YgYSBmdW5jdGlvbidzIGFyZ3VtZW50cy4KIAotICAgIEEgdHVwbGUgb2YgZm91ciB0aGluZ3MgaXMgcmV0dXJuZWQ6IChhcmdzLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMpLgotICAgICdhcmdzJyBpcyBhIGxpc3Qgb2YgdGhlIGFyZ3VtZW50IG5hbWVzLgotICAgICdhcmdzJyB3aWxsIGluY2x1ZGUga2V5d29yZC1vbmx5IGFyZ3VtZW50IG5hbWVzLgotICAgICd2YXJhcmdzJyBhbmQgJ3Zhcmt3JyBhcmUgdGhlIG5hbWVzIG9mIHRoZSAqIGFuZCAqKiBhcmd1bWVudHMgb3IgTm9uZS4KKyAgICBBIHR1cGxlIG9mIGZvdXIgdGhpbmdzIGlzIHJldHVybmVkOiAoYXJncywgdmFyYXJncywga2V5d29yZHMsIGRlZmF1bHRzKS4KKyAgICAnYXJncycgaXMgYSBsaXN0IG9mIHRoZSBhcmd1bWVudCBuYW1lcywgaW5jbHVkaW5nIGtleXdvcmQtb25seSBhcmd1bWVudCBuYW1lcy4KKyAgICAndmFyYXJncycgYW5kICdrZXl3b3JkcycgYXJlIHRoZSBuYW1lcyBvZiB0aGUgKiBhbmQgKiogYXJndW1lbnRzIG9yIE5vbmUuCiAgICAgJ2RlZmF1bHRzJyBpcyBhbiBuLXR1cGxlIG9mIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgbGFzdCBuIGFyZ3VtZW50cy4KIAotICAgIFVzZSB0aGUgZ2V0ZnVsbGFyZ3NwZWMoKSBBUEkgZm9yIFB5dGhvbi0zMDAwIGNvZGUsIGFzIGFubm90YXRpb25zCisgICAgVXNlIHRoZSBnZXRmdWxsYXJnc3BlYygpIEFQSSBmb3IgUHl0aG9uIDMgY29kZSwgYXMgYW5ub3RhdGlvbnMKICAgICBhbmQga2V5d29yZCBhcmd1bWVudHMgYXJlIHN1cHBvcnRlZC4gZ2V0YXJnc3BlYygpIHdpbGwgcmFpc2UgVmFsdWVFcnJvcgogICAgIGlmIHRoZSBmdW5jIGhhcyBlaXRoZXIgYW5ub3RhdGlvbnMgb3Iga2V5d29yZCBhcmd1bWVudHMuCiAgICAgIiIiCi0KKyAgICB3YXJuaW5ncy53YXJuKCJpbnNwZWN0LmdldGFyZ3NwZWMoKSBpcyBkZXByZWNhdGVkLCAiCisgICAgICAgICAgICAgICAgICAidXNlIGluc3BlY3Quc2lnbmF0dXJlKCkgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9MikKICAgICBhcmdzLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGt3b25seWFyZ3MsIGt3b25seWRlZmF1bHRzLCBhbm4gPSBcCiAgICAgICAgIGdldGZ1bGxhcmdzcGVjKGZ1bmMpCiAgICAgaWYga3dvbmx5YXJncyBvciBhbm46CkBAIC05NTMsNiArMTA2Miw4IEBACiAgICAgJ2Fubm90YXRpb25zJyBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBhcmd1bWVudCBuYW1lcyB0byBhbm5vdGF0aW9ucy4KIAogICAgIFRoZSBmaXJzdCBmb3VyIGl0ZW1zIGluIHRoZSB0dXBsZSBjb3JyZXNwb25kIHRvIGdldGFyZ3NwZWMoKS4KKworICAgIFRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCwgdXNlIGluc3BlY3Quc2lnbmF0dXJlKCkgaW5zdGVhZC4KICAgICAiIiIKIAogICAgIHRyeToKQEAgLTk3Miw5ICsxMDgzLDEwIEBACiAgICAgICAgICMgZ2V0ZnVsbGFyZ3NwZWMoKSBoaXN0b3JpY2FsbHkgaWdub3JlZCBfX3dyYXBwZWRfXyBhdHRyaWJ1dGVzLAogICAgICAgICAjIHNvIHdlIGVuc3VyZSB0aGF0IHJlbWFpbnMgdGhlIGNhc2UgaW4gMy4zKwogCi0gICAgICAgIHNpZyA9IF9zaWduYXR1cmVfaW50ZXJuYWwoZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9RmFsc2UpCisgICAgICAgIHNpZyA9IF9zaWduYXR1cmVfZnJvbV9jYWxsYWJsZShmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWdjbHM9U2lnbmF0dXJlKQogICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXg6CiAgICAgICAgICMgTW9zdCBvZiB0aGUgdGltZXMgJ3NpZ25hdHVyZScgd2lsbCByYWlzZSBWYWx1ZUVycm9yLgogICAgICAgICAjIEJ1dCwgaXQgY2FuIGFsc28gcmFpc2UgQXR0cmlidXRlRXJyb3IsIGFuZCwgbWF5YmUgc29tZXRoaW5nCkBAIC0xMDQzLDggKzExNTUsOCBAQAogZGVmIGZvcm1hdGFubm90YXRpb24oYW5ub3RhdGlvbiwgYmFzZV9tb2R1bGU9Tm9uZSk6CiAgICAgaWYgaXNpbnN0YW5jZShhbm5vdGF0aW9uLCB0eXBlKToKICAgICAgICAgaWYgYW5ub3RhdGlvbi5fX21vZHVsZV9fIGluICgnYnVpbHRpbnMnLCBiYXNlX21vZHVsZSk6Ci0gICAgICAgICAgICByZXR1cm4gYW5ub3RhdGlvbi5fX25hbWVfXwotICAgICAgICByZXR1cm4gYW5ub3RhdGlvbi5fX21vZHVsZV9fKycuJythbm5vdGF0aW9uLl9fbmFtZV9fCisgICAgICAgICAgICByZXR1cm4gYW5ub3RhdGlvbi5fX3F1YWxuYW1lX18KKyAgICAgICAgcmV0dXJuIGFubm90YXRpb24uX19tb2R1bGVfXysnLicrYW5ub3RhdGlvbi5fX3F1YWxuYW1lX18KICAgICByZXR1cm4gcmVwcihhbm5vdGF0aW9uKQogCiBkZWYgZm9ybWF0YW5ub3RhdGlvbnJlbGF0aXZldG8ob2JqZWN0KToKQEAgLTEzMTcsNiArMTQyOSw4IEBACiAgICAgIyBGcmFtZVR5cGUuZl9saW5lbm8gaXMgbm93IGEgZGVzY3JpcHRvciB0aGF0IGdyb3ZlbHMgY29fbG5vdGFiCiAgICAgcmV0dXJuIGZyYW1lLmZfbGluZW5vCiAKK0ZyYW1lSW5mbyA9IG5hbWVkdHVwbGUoJ0ZyYW1lSW5mbycsICgnZnJhbWUnLCkgKyBUcmFjZWJhY2suX2ZpZWxkcykKKwogZGVmIGdldG91dGVyZnJhbWVzKGZyYW1lLCBjb250ZXh0PTEpOgogICAgICIiIkdldCBhIGxpc3Qgb2YgcmVjb3JkcyBmb3IgYSBmcmFtZSBhbmQgYWxsIGhpZ2hlciAoY2FsbGluZykgZnJhbWVzLgogCkBAIC0xMzI0LDcgKzE0MzgsOCBAQAogICAgIG5hbWUsIGEgbGlzdCBvZiBsaW5lcyBvZiBjb250ZXh0LCBhbmQgaW5kZXggd2l0aGluIHRoZSBjb250ZXh0LiIiIgogICAgIGZyYW1lbGlzdCA9IFtdCiAgICAgd2hpbGUgZnJhbWU6Ci0gICAgICAgIGZyYW1lbGlzdC5hcHBlbmQoKGZyYW1lLCkgKyBnZXRmcmFtZWluZm8oZnJhbWUsIGNvbnRleHQpKQorICAgICAgICBmcmFtZWluZm8gPSAoZnJhbWUsKSArIGdldGZyYW1laW5mbyhmcmFtZSwgY29udGV4dCkKKyAgICAgICAgZnJhbWVsaXN0LmFwcGVuZChGcmFtZUluZm8oKmZyYW1laW5mbykpCiAgICAgICAgIGZyYW1lID0gZnJhbWUuZl9iYWNrCiAgICAgcmV0dXJuIGZyYW1lbGlzdAogCkBAIC0xMzM1LDcgKzE0NTAsOCBAQAogICAgIG5hbWUsIGEgbGlzdCBvZiBsaW5lcyBvZiBjb250ZXh0LCBhbmQgaW5kZXggd2l0aGluIHRoZSBjb250ZXh0LiIiIgogICAgIGZyYW1lbGlzdCA9IFtdCiAgICAgd2hpbGUgdGI6Ci0gICAgICAgIGZyYW1lbGlzdC5hcHBlbmQoKHRiLnRiX2ZyYW1lLCkgKyBnZXRmcmFtZWluZm8odGIsIGNvbnRleHQpKQorICAgICAgICBmcmFtZWluZm8gPSAodGIudGJfZnJhbWUsKSArIGdldGZyYW1laW5mbyh0YiwgY29udGV4dCkKKyAgICAgICAgZnJhbWVsaXN0LmFwcGVuZChGcmFtZUluZm8oKmZyYW1laW5mbykpCiAgICAgICAgIHRiID0gdGIudGJfbmV4dAogICAgIHJldHVybiBmcmFtZWxpc3QKIApAQCAtMTQ4NSw2ICsxNjAxLDQ1IEBACiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIHt9CiAKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY29yb3V0aW5lIGludHJvc3BlY3Rpb24KKworQ09ST19DUkVBVEVEID0gJ0NPUk9fQ1JFQVRFRCcKK0NPUk9fUlVOTklORyA9ICdDT1JPX1JVTk5JTkcnCitDT1JPX1NVU1BFTkRFRCA9ICdDT1JPX1NVU1BFTkRFRCcKK0NPUk9fQ0xPU0VEID0gJ0NPUk9fQ0xPU0VEJworCitkZWYgZ2V0Y29yb3V0aW5lc3RhdGUoY29yb3V0aW5lKToKKyAgICAiIiJHZXQgY3VycmVudCBzdGF0ZSBvZiBhIGNvcm91dGluZSBvYmplY3QuCisKKyAgICBQb3NzaWJsZSBzdGF0ZXMgYXJlOgorICAgICAgQ09ST19DUkVBVEVEOiBXYWl0aW5nIHRvIHN0YXJ0IGV4ZWN1dGlvbi4KKyAgICAgIENPUk9fUlVOTklORzogQ3VycmVudGx5IGJlaW5nIGV4ZWN1dGVkIGJ5IHRoZSBpbnRlcnByZXRlci4KKyAgICAgIENPUk9fU1VTUEVOREVEOiBDdXJyZW50bHkgc3VzcGVuZGVkIGF0IGFuIGF3YWl0IGV4cHJlc3Npb24uCisgICAgICBDT1JPX0NMT1NFRDogRXhlY3V0aW9uIGhhcyBjb21wbGV0ZWQuCisgICAgIiIiCisgICAgaWYgY29yb3V0aW5lLmNyX3J1bm5pbmc6CisgICAgICAgIHJldHVybiBDT1JPX1JVTk5JTkcKKyAgICBpZiBjb3JvdXRpbmUuY3JfZnJhbWUgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIENPUk9fQ0xPU0VECisgICAgaWYgY29yb3V0aW5lLmNyX2ZyYW1lLmZfbGFzdGkgPT0gLTE6CisgICAgICAgIHJldHVybiBDT1JPX0NSRUFURUQKKyAgICByZXR1cm4gQ09ST19TVVNQRU5ERUQKKworCitkZWYgZ2V0Y29yb3V0aW5lbG9jYWxzKGNvcm91dGluZSk6CisgICAgIiIiCisgICAgR2V0IHRoZSBtYXBwaW5nIG9mIGNvcm91dGluZSBsb2NhbCB2YXJpYWJsZXMgdG8gdGhlaXIgY3VycmVudCB2YWx1ZXMuCisKKyAgICBBIGRpY3QgaXMgcmV0dXJuZWQsIHdpdGggdGhlIGtleXMgdGhlIGxvY2FsIHZhcmlhYmxlIG5hbWVzIGFuZCB2YWx1ZXMgdGhlCisgICAgYm91bmQgdmFsdWVzLiIiIgorICAgIGZyYW1lID0gZ2V0YXR0cihjb3JvdXRpbmUsICJjcl9mcmFtZSIsIE5vbmUpCisgICAgaWYgZnJhbWUgaXMgbm90IE5vbmU6CisgICAgICAgIHJldHVybiBmcmFtZS5mX2xvY2FscworICAgIGVsc2U6CisgICAgICAgIHJldHVybiB7fQorCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyBGdW5jdGlvbiBTaWduYXR1cmUgT2JqZWN0IChQRVAgMzYyKQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMTUwMSw2ICsxNjU2LDEwIEBACiAKIAogZGVmIF9zaWduYXR1cmVfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2QoY2xzLCBtZXRob2RfbmFtZSk6CisgICAgIiIiUHJpdmF0ZSBoZWxwZXIuIENoZWNrcyBpZiBgYGNsc2BgIGhhcyBhbiBhdHRyaWJ1dGUKKyAgICBuYW1lZCBgYG1ldGhvZF9uYW1lYGAgYW5kIHJldHVybnMgaXQgb25seSBpZiBpdCBpcyBhCisgICAgcHVyZSBweXRob24gZnVuY3Rpb24uCisgICAgIiIiCiAgICAgdHJ5OgogICAgICAgICBtZXRoID0gZ2V0YXR0cihjbHMsIG1ldGhvZF9uYW1lKQogICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKQEAgLTE1MTMsOSArMTY3MiwxMCBAQAogCiAKIGRlZiBfc2lnbmF0dXJlX2dldF9wYXJ0aWFsKHdyYXBwZWRfc2lnLCBwYXJ0aWFsLCBleHRyYV9hcmdzPSgpKToKLSAgICAjIEludGVybmFsIGhlbHBlciB0byBjYWxjdWxhdGUgaG93ICd3cmFwcGVkX3NpZycgc2lnbmF0dXJlIHdpbGwKLSAgICAjIGxvb2sgbGlrZSBhZnRlciBhcHBseWluZyBhICdmdW5jdG9vbHMucGFydGlhbCcgb2JqZWN0IChvciBhbGlrZSkKLSAgICAjIG9uIGl0LgorICAgICIiIlByaXZhdGUgaGVscGVyIHRvIGNhbGN1bGF0ZSBob3cgJ3dyYXBwZWRfc2lnJyBzaWduYXR1cmUgd2lsbAorICAgIGxvb2sgbGlrZSBhZnRlciBhcHBseWluZyBhICdmdW5jdG9vbHMucGFydGlhbCcgb2JqZWN0IChvciBhbGlrZSkKKyAgICBvbiBpdC4KKyAgICAiIiIKIAogICAgIG9sZF9wYXJhbXMgPSB3cmFwcGVkX3NpZy5wYXJhbWV0ZXJzCiAgICAgbmV3X3BhcmFtcyA9IE9yZGVyZWREaWN0KG9sZF9wYXJhbXMuaXRlbXMoKSkKQEAgLTE1ODgsOCArMTc0OCw5IEBACiAKIAogZGVmIF9zaWduYXR1cmVfYm91bmRfbWV0aG9kKHNpZyk6Ci0gICAgIyBJbnRlcm5hbCBoZWxwZXIgdG8gdHJhbnNmb3JtIHNpZ25hdHVyZXMgZm9yIHVuYm91bmQKLSAgICAjIGZ1bmN0aW9ucyB0byBib3VuZCBtZXRob2RzCisgICAgIiIiUHJpdmF0ZSBoZWxwZXIgdG8gdHJhbnNmb3JtIHNpZ25hdHVyZXMgZm9yIHVuYm91bmQKKyAgICBmdW5jdGlvbnMgdG8gYm91bmQgbWV0aG9kcy4KKyAgICAiIiIKIAogICAgIHBhcmFtcyA9IHR1cGxlKHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpKQogCkBAIC0xNjEzLDggKzE3NzQsOSBAQAogCiAKIGRlZiBfc2lnbmF0dXJlX2lzX2J1aWx0aW4ob2JqKToKLSAgICAjIEludGVybmFsIGhlbHBlciB0byB0ZXN0IGlmIGBvYmpgIGlzIGEgY2FsbGFibGUgdGhhdCBtaWdodAotICAgICMgc3VwcG9ydCBBcmd1bWVudCBDbGluaWMncyBfX3RleHRfc2lnbmF0dXJlX18gcHJvdG9jb2wuCisgICAgIiIiUHJpdmF0ZSBoZWxwZXIgdG8gdGVzdCBpZiBgb2JqYCBpcyBhIGNhbGxhYmxlIHRoYXQgbWlnaHQKKyAgICBzdXBwb3J0IEFyZ3VtZW50IENsaW5pYydzIF9fdGV4dF9zaWduYXR1cmVfXyBwcm90b2NvbC4KKyAgICAiIiIKICAgICByZXR1cm4gKGlzYnVpbHRpbihvYmopIG9yCiAgICAgICAgICAgICBpc21ldGhvZGRlc2NyaXB0b3Iob2JqKSBvcgogICAgICAgICAgICAgaXNpbnN0YW5jZShvYmosIF9Ob25Vc2VyRGVmaW5lZENhbGxhYmxlcykgb3IKQEAgLTE2MjQsMTAgKzE3ODYsMTEgQEAKIAogCiBkZWYgX3NpZ25hdHVyZV9pc19mdW5jdGlvbmxpa2Uob2JqKToKLSAgICAjIEludGVybmFsIGhlbHBlciB0byB0ZXN0IGlmIGBvYmpgIGlzIGEgZHVjayB0eXBlIG9mIEZ1bmN0aW9uVHlwZS4KLSAgICAjIEEgZ29vZCBleGFtcGxlIG9mIHN1Y2ggb2JqZWN0cyBhcmUgZnVuY3Rpb25zIGNvbXBpbGVkIHdpdGgKLSAgICAjIEN5dGhvbiwgd2hpY2ggaGF2ZSBhbGwgYXR0cmlidXRlcyB0aGF0IGEgcHVyZSBQeXRob24gZnVuY3Rpb24KLSAgICAjIHdvdWxkIGhhdmUsIGJ1dCBoYXZlIHRoZWlyIGNvZGUgc3RhdGljYWxseSBjb21waWxlZC4KKyAgICAiIiJQcml2YXRlIGhlbHBlciB0byB0ZXN0IGlmIGBvYmpgIGlzIGEgZHVjayB0eXBlIG9mIEZ1bmN0aW9uVHlwZS4KKyAgICBBIGdvb2QgZXhhbXBsZSBvZiBzdWNoIG9iamVjdHMgYXJlIGZ1bmN0aW9ucyBjb21waWxlZCB3aXRoCisgICAgQ3l0aG9uLCB3aGljaCBoYXZlIGFsbCBhdHRyaWJ1dGVzIHRoYXQgYSBwdXJlIFB5dGhvbiBmdW5jdGlvbgorICAgIHdvdWxkIGhhdmUsIGJ1dCBoYXZlIHRoZWlyIGNvZGUgc3RhdGljYWxseSBjb21waWxlZC4KKyAgICAiIiIKIAogICAgIGlmIG5vdCBjYWxsYWJsZShvYmopIG9yIGlzY2xhc3Mob2JqKToKICAgICAgICAgIyBBbGwgZnVuY3Rpb24tbGlrZSBvYmplY3RzIGFyZSBvYnZpb3VzbHkgY2FsbGFibGVzLApAQCAtMTY0OCwxMSArMTgxMSwxMiBAQAogCiAKIGRlZiBfc2lnbmF0dXJlX2dldF9ib3VuZF9wYXJhbShzcGVjKToKLSAgICAjIEludGVybmFsIGhlbHBlciB0byBnZXQgZmlyc3QgcGFyYW1ldGVyIG5hbWUgZnJvbSBhCi0gICAgIyBfX3RleHRfc2lnbmF0dXJlX18gb2YgYSBidWlsdGluIG1ldGhvZCwgd2hpY2ggc2hvdWxkCi0gICAgIyBiZSBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDogJygkcGFyYW0xLCAuLi4pJy4KLSAgICAjIEFzc3VtcHRpb25zIGFyZSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCB3b24ndCBoYXZlCi0gICAgIyBhIGRlZmF1bHQgdmFsdWUgb3IgYW4gYW5ub3RhdGlvbi4KKyAgICAiIiIgUHJpdmF0ZSBoZWxwZXIgdG8gZ2V0IGZpcnN0IHBhcmFtZXRlciBuYW1lIGZyb20gYQorICAgIF9fdGV4dF9zaWduYXR1cmVfXyBvZiBhIGJ1aWx0aW4gbWV0aG9kLCB3aGljaCBzaG91bGQKKyAgICBiZSBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDogJygkcGFyYW0xLCAuLi4pJy4KKyAgICBBc3N1bXB0aW9ucyBhcmUgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQgd29uJ3QgaGF2ZQorICAgIGEgZGVmYXVsdCB2YWx1ZSBvciBhbiBhbm5vdGF0aW9uLgorICAgICIiIgogCiAgICAgYXNzZXJ0IHNwZWMuc3RhcnRzd2l0aCgnKCQnKQogCkBAIC0xNjcxLDcgKzE4MzUsOSBAQAogCiBkZWYgX3NpZ25hdHVyZV9zdHJpcF9ub25fcHl0aG9uX3N5bnRheChzaWduYXR1cmUpOgogICAgICIiIgotICAgIFRha2VzIGEgc2lnbmF0dXJlIGluIEFyZ3VtZW50IENsaW5pYydzIGV4dGVuZGVkIHNpZ25hdHVyZSBmb3JtYXQuCisgICAgUHJpdmF0ZSBoZWxwZXIgZnVuY3Rpb24uIFRha2VzIGEgc2lnbmF0dXJlIGluIEFyZ3VtZW50IENsaW5pYydzCisgICAgZXh0ZW5kZWQgc2lnbmF0dXJlIGZvcm1hdC4KKwogICAgIFJldHVybnMgYSB0dXBsZSBvZiB0aHJlZSB0aGluZ3M6CiAgICAgICAqIHRoYXQgc2lnbmF0dXJlIHJlLXJlbmRlcmVkIGluIHN0YW5kYXJkIFB5dGhvbiBzeW50YXgsCiAgICAgICAqIHRoZSBpbmRleCBvZiB0aGUgInNlbGYiIHBhcmFtZXRlciAoZ2VuZXJhbGx5IDApLCBvciBOb25lIGlmCkBAIC0xNzQwLDggKzE5MDYsMTAgQEAKIAogCiBkZWYgX3NpZ25hdHVyZV9mcm9tc3RyKGNscywgb2JqLCBzLCBza2lwX2JvdW5kX2FyZz1UcnVlKToKLSAgICAjIEludGVybmFsIGhlbHBlciB0byBwYXJzZSBjb250ZW50IG9mICdfX3RleHRfc2lnbmF0dXJlX18nCi0gICAgIyBhbmQgcmV0dXJuIGEgU2lnbmF0dXJlIGJhc2VkIG9uIGl0CisgICAgIiIiUHJpdmF0ZSBoZWxwZXIgdG8gcGFyc2UgY29udGVudCBvZiAnX190ZXh0X3NpZ25hdHVyZV9fJworICAgIGFuZCByZXR1cm4gYSBTaWduYXR1cmUgYmFzZWQgb24gaXQuCisgICAgIiIiCisKICAgICBQYXJhbWV0ZXIgPSBjbHMuX3BhcmFtZXRlcl9jbHMKIAogICAgIGNsZWFuX3NpZ25hdHVyZSwgc2VsZl9wYXJhbWV0ZXIsIGxhc3RfcG9zaXRpb25hbF9vbmx5ID0gXApAQCAtMTg3OSw4ICsyMDQ3LDEwIEBACiAKIAogZGVmIF9zaWduYXR1cmVfZnJvbV9idWlsdGluKGNscywgZnVuYywgc2tpcF9ib3VuZF9hcmc9VHJ1ZSk6Ci0gICAgIyBJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHNpZ25hdHVyZSBmb3IKLSAgICAjIGJ1aWx0aW4gY2FsbGFibGVzCisgICAgIiIiUHJpdmF0ZSBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHNpZ25hdHVyZSBmb3IKKyAgICBidWlsdGluIGNhbGxhYmxlcy4KKyAgICAiIiIKKwogICAgIGlmIG5vdCBfc2lnbmF0dXJlX2lzX2J1aWx0aW4oZnVuYyk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigieyFyfSBpcyBub3QgYSBQeXRob24gYnVpbHRpbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iLmZvcm1hdChmdW5jKSkKQEAgLTE4OTIsNyArMjA2Miw5NSBAQAogICAgIHJldHVybiBfc2lnbmF0dXJlX2Zyb21zdHIoY2xzLCBmdW5jLCBzLCBza2lwX2JvdW5kX2FyZykKIAogCi1kZWYgX3NpZ25hdHVyZV9pbnRlcm5hbChvYmosIGZvbGxvd193cmFwcGVyX2NoYWlucz1UcnVlLCBza2lwX2JvdW5kX2FyZz1UcnVlKToKK2RlZiBfc2lnbmF0dXJlX2Zyb21fZnVuY3Rpb24oY2xzLCBmdW5jKToKKyAgICAiIiJQcml2YXRlIGhlbHBlcjogY29uc3RydWN0cyBTaWduYXR1cmUgZm9yIHRoZSBnaXZlbiBweXRob24gZnVuY3Rpb24uIiIiCisKKyAgICBpc19kdWNrX2Z1bmN0aW9uID0gRmFsc2UKKyAgICBpZiBub3QgaXNmdW5jdGlvbihmdW5jKToKKyAgICAgICAgaWYgX3NpZ25hdHVyZV9pc19mdW5jdGlvbmxpa2UoZnVuYyk6CisgICAgICAgICAgICBpc19kdWNrX2Z1bmN0aW9uID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBJZiBpdCdzIG5vdCBhIHB1cmUgUHl0aG9uIGZ1bmN0aW9uLCBhbmQgbm90IGEgZHVjayB0eXBlCisgICAgICAgICAgICAjIG9mIHB1cmUgZnVuY3Rpb246CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3shcn0gaXMgbm90IGEgUHl0aG9uIGZ1bmN0aW9uJy5mb3JtYXQoZnVuYykpCisKKyAgICBQYXJhbWV0ZXIgPSBjbHMuX3BhcmFtZXRlcl9jbHMKKworICAgICMgUGFyYW1ldGVyIGluZm9ybWF0aW9uLgorICAgIGZ1bmNfY29kZSA9IGZ1bmMuX19jb2RlX18KKyAgICBwb3NfY291bnQgPSBmdW5jX2NvZGUuY29fYXJnY291bnQKKyAgICBhcmdfbmFtZXMgPSBmdW5jX2NvZGUuY29fdmFybmFtZXMKKyAgICBwb3NpdGlvbmFsID0gdHVwbGUoYXJnX25hbWVzWzpwb3NfY291bnRdKQorICAgIGtleXdvcmRfb25seV9jb3VudCA9IGZ1bmNfY29kZS5jb19rd29ubHlhcmdjb3VudAorICAgIGtleXdvcmRfb25seSA9IGFyZ19uYW1lc1twb3NfY291bnQ6KHBvc19jb3VudCArIGtleXdvcmRfb25seV9jb3VudCldCisgICAgYW5ub3RhdGlvbnMgPSBmdW5jLl9fYW5ub3RhdGlvbnNfXworICAgIGRlZmF1bHRzID0gZnVuYy5fX2RlZmF1bHRzX18KKyAgICBrd2RlZmF1bHRzID0gZnVuYy5fX2t3ZGVmYXVsdHNfXworCisgICAgaWYgZGVmYXVsdHM6CisgICAgICAgIHBvc19kZWZhdWx0X2NvdW50ID0gbGVuKGRlZmF1bHRzKQorICAgIGVsc2U6CisgICAgICAgIHBvc19kZWZhdWx0X2NvdW50ID0gMAorCisgICAgcGFyYW1ldGVycyA9IFtdCisKKyAgICAjIE5vbi1rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyB3L28gZGVmYXVsdHMuCisgICAgbm9uX2RlZmF1bHRfY291bnQgPSBwb3NfY291bnQgLSBwb3NfZGVmYXVsdF9jb3VudAorICAgIGZvciBuYW1lIGluIHBvc2l0aW9uYWxbOm5vbl9kZWZhdWx0X2NvdW50XToKKyAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPV9QT1NJVElPTkFMX09SX0tFWVdPUkQpKQorCisgICAgIyAuLi4gdy8gZGVmYXVsdHMuCisgICAgZm9yIG9mZnNldCwgbmFtZSBpbiBlbnVtZXJhdGUocG9zaXRpb25hbFtub25fZGVmYXVsdF9jb3VudDpdKToKKyAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPV9QT1NJVElPTkFMX09SX0tFWVdPUkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PWRlZmF1bHRzW29mZnNldF0pKQorCisgICAgIyAqYXJncworICAgIGlmIGZ1bmNfY29kZS5jb19mbGFncyAmIENPX1ZBUkFSR1M6CisgICAgICAgIG5hbWUgPSBhcmdfbmFtZXNbcG9zX2NvdW50ICsga2V5d29yZF9vbmx5X2NvdW50XQorICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKKyAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoUGFyYW1ldGVyKG5hbWUsIGFubm90YXRpb249YW5ub3RhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1ZBUl9QT1NJVElPTkFMKSkKKworICAgICMgS2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuCisgICAgZm9yIG5hbWUgaW4ga2V5d29yZF9vbmx5OgorICAgICAgICBkZWZhdWx0ID0gX2VtcHR5CisgICAgICAgIGlmIGt3ZGVmYXVsdHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkZWZhdWx0ID0ga3dkZWZhdWx0cy5nZXQobmFtZSwgX2VtcHR5KQorCisgICAgICAgIGFubm90YXRpb24gPSBhbm5vdGF0aW9ucy5nZXQobmFtZSwgX2VtcHR5KQorICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fS0VZV09SRF9PTkxZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0KSkKKyAgICAjICoqa3dhcmdzCisgICAgaWYgZnVuY19jb2RlLmNvX2ZsYWdzICYgQ09fVkFSS0VZV09SRFM6CisgICAgICAgIGluZGV4ID0gcG9zX2NvdW50ICsga2V5d29yZF9vbmx5X2NvdW50CisgICAgICAgIGlmIGZ1bmNfY29kZS5jb19mbGFncyAmIENPX1ZBUkFSR1M6CisgICAgICAgICAgICBpbmRleCArPSAxCisKKyAgICAgICAgbmFtZSA9IGFyZ19uYW1lc1tpbmRleF0KKyAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPV9WQVJfS0VZV09SRCkpCisKKyAgICAjIElzICdmdW5jJyBpcyBhIHB1cmUgUHl0aG9uIGZ1bmN0aW9uIC0gZG9uJ3QgdmFsaWRhdGUgdGhlCisgICAgIyBwYXJhbWV0ZXJzIGxpc3QgKGZvciBjb3JyZWN0IG9yZGVyIGFuZCBkZWZhdWx0cyksIGl0IHNob3VsZCBiZSBPSy4KKyAgICByZXR1cm4gY2xzKHBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICByZXR1cm5fYW5ub3RhdGlvbj1hbm5vdGF0aW9ucy5nZXQoJ3JldHVybicsIF9lbXB0eSksCisgICAgICAgICAgICAgICBfX3ZhbGlkYXRlX3BhcmFtZXRlcnNfXz1pc19kdWNrX2Z1bmN0aW9uKQorCisKK2RlZiBfc2lnbmF0dXJlX2Zyb21fY2FsbGFibGUob2JqLCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnY2xzKToKKworICAgICIiIlByaXZhdGUgaGVscGVyIGZ1bmN0aW9uIHRvIGdldCBzaWduYXR1cmUgZm9yIGFyYml0cmFyeQorICAgIGNhbGxhYmxlIG9iamVjdHMuCisgICAgIiIiCiAKICAgICBpZiBub3QgY2FsbGFibGUob2JqKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIGNhbGxhYmxlIG9iamVjdCcuZm9ybWF0KG9iaikpCkBAIC0xOTAwLDkgKzIxNTgsMTIgQEAKICAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuTWV0aG9kVHlwZSk6CiAgICAgICAgICMgSW4gdGhpcyBjYXNlIHdlIHNraXAgdGhlIGZpcnN0IHBhcmFtZXRlciBvZiB0aGUgdW5kZXJseWluZwogICAgICAgICAjIGZ1bmN0aW9uICh1c3VhbGx5IGBzZWxmYCBvciBgY2xzYCkuCi0gICAgICAgIHNpZyA9IF9zaWduYXR1cmVfaW50ZXJuYWwob2JqLl9fZnVuY19fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZykKKyAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAorICAgICAgICAgICAgb2JqLl9fZnVuY19fLAorICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPWZvbGxvd193cmFwcGVyX2NoYWlucywKKyAgICAgICAgICAgIHNraXBfYm91bmRfYXJnPXNraXBfYm91bmRfYXJnLAorICAgICAgICAgICAgc2lnY2xzPXNpZ2NscykKKwogICAgICAgICBpZiBza2lwX2JvdW5kX2FyZzoKICAgICAgICAgICAgIHJldHVybiBfc2lnbmF0dXJlX2JvdW5kX21ldGhvZChzaWcpCiAgICAgICAgIGVsc2U6CkBAIC0xOTE1LDEwICsyMTc2LDExIEBACiAgICAgICAgICAgICAjIElmIHRoZSB1bndyYXBwZWQgb2JqZWN0IGlzIGEgKm1ldGhvZCosIHdlIG1pZ2h0IHdhbnQgdG8KICAgICAgICAgICAgICMgc2tpcCBpdHMgZmlyc3QgcGFyYW1ldGVyIChzZWxmKS4KICAgICAgICAgICAgICMgU2VlIHRlc3Rfc2lnbmF0dXJlX3dyYXBwZWRfYm91bmRfbWV0aG9kIGZvciBkZXRhaWxzLgotICAgICAgICAgICAgcmV0dXJuIF9zaWduYXR1cmVfaW50ZXJuYWwoCisgICAgICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAogICAgICAgICAgICAgICAgIG9iaiwKICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9Zm9sbG93X3dyYXBwZXJfY2hhaW5zLAotICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnPXNraXBfYm91bmRfYXJnKQorICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnPXNraXBfYm91bmRfYXJnLAorICAgICAgICAgICAgICAgIHNpZ2Nscz1zaWdjbHMpCiAKICAgICB0cnk6CiAgICAgICAgIHNpZyA9IG9iai5fX3NpZ25hdHVyZV9fCkBAIC0xOTQ1LDkgKzIyMDcsMTIgQEAKICAgICAgICAgICAgICMgKHVzdWFsbHkgYHNlbGZgLCBvciBgY2xzYCkgd2lsbCBub3QgYmUgcGFzc2VkCiAgICAgICAgICAgICAjIGF1dG9tYXRpY2FsbHkgKGFzIGZvciBib3VuZG1ldGhvZHMpCiAKLSAgICAgICAgICAgIHdyYXBwZWRfc2lnID0gX3NpZ25hdHVyZV9pbnRlcm5hbChwYXJ0aWFsbWV0aG9kLmZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnKQorICAgICAgICAgICAgd3JhcHBlZF9zaWcgPSBfc2lnbmF0dXJlX2Zyb21fY2FsbGFibGUoCisgICAgICAgICAgICAgICAgcGFydGlhbG1ldGhvZC5mdW5jLAorICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucz1mb2xsb3dfd3JhcHBlcl9jaGFpbnMsCisgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9c2tpcF9ib3VuZF9hcmcsCisgICAgICAgICAgICAgICAgc2lnY2xzPXNpZ2NscykKKwogICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9nZXRfcGFydGlhbCh3cmFwcGVkX3NpZywgcGFydGlhbG1ldGhvZCwgKE5vbmUsKSkKIAogICAgICAgICAgICAgZmlyc3Rfd3JhcHBlZF9wYXJhbSA9IHR1cGxlKHdyYXBwZWRfc2lnLnBhcmFtZXRlcnMudmFsdWVzKCkpWzBdCkBAIC0xOTU4LDE2ICsyMjIzLDE4IEBACiAgICAgaWYgaXNmdW5jdGlvbihvYmopIG9yIF9zaWduYXR1cmVfaXNfZnVuY3Rpb25saWtlKG9iaik6CiAgICAgICAgICMgSWYgaXQncyBhIHB1cmUgUHl0aG9uIGZ1bmN0aW9uLCBvciBhbiBvYmplY3QgdGhhdCBpcyBkdWNrIHR5cGUKICAgICAgICAgIyBvZiBhIFB5dGhvbiBmdW5jdGlvbiAoQ3l0aG9uIGZ1bmN0aW9ucywgZm9yIGluc3RhbmNlKSwgdGhlbjoKLSAgICAgICAgcmV0dXJuIFNpZ25hdHVyZS5mcm9tX2Z1bmN0aW9uKG9iaikKKyAgICAgICAgcmV0dXJuIF9zaWduYXR1cmVfZnJvbV9mdW5jdGlvbihzaWdjbHMsIG9iaikKIAogICAgIGlmIF9zaWduYXR1cmVfaXNfYnVpbHRpbihvYmopOgotICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9mcm9tX2J1aWx0aW4oU2lnbmF0dXJlLCBvYmosCisgICAgICAgIHJldHVybiBfc2lnbmF0dXJlX2Zyb21fYnVpbHRpbihzaWdjbHMsIG9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnPXNraXBfYm91bmRfYXJnKQogCiAgICAgaWYgaXNpbnN0YW5jZShvYmosIGZ1bmN0b29scy5wYXJ0aWFsKToKLSAgICAgICAgd3JhcHBlZF9zaWcgPSBfc2lnbmF0dXJlX2ludGVybmFsKG9iai5mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmcpCisgICAgICAgIHdyYXBwZWRfc2lnID0gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAorICAgICAgICAgICAgb2JqLmZ1bmMsCisgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9Zm9sbG93X3dyYXBwZXJfY2hhaW5zLAorICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9c2tpcF9ib3VuZF9hcmcsCisgICAgICAgICAgICBzaWdjbHM9c2lnY2xzKQogICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9nZXRfcGFydGlhbCh3cmFwcGVkX3NpZywgb2JqKQogCiAgICAgc2lnID0gTm9uZQpAQCAtMTk3OCwyMyArMjI0NSwyOSBAQAogICAgICAgICAjIGluIGl0cyBtZXRhY2xhc3MKICAgICAgICAgY2FsbCA9IF9zaWduYXR1cmVfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2QodHlwZShvYmopLCAnX19jYWxsX18nKQogICAgICAgICBpZiBjYWxsIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9pbnRlcm5hbChjYWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnKQorICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAorICAgICAgICAgICAgICAgIGNhbGwsCisgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPWZvbGxvd193cmFwcGVyX2NoYWlucywKKyAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZz1za2lwX2JvdW5kX2FyZywKKyAgICAgICAgICAgICAgICBzaWdjbHM9c2lnY2xzKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBOb3cgd2UgY2hlY2sgaWYgdGhlICdvYmonIGNsYXNzIGhhcyBhICdfX25ld19fJyBtZXRob2QKICAgICAgICAgICAgIG5ldyA9IF9zaWduYXR1cmVfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2Qob2JqLCAnX19uZXdfXycpCiAgICAgICAgICAgICBpZiBuZXcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9pbnRlcm5hbChuZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZykKKyAgICAgICAgICAgICAgICBzaWcgPSBfc2lnbmF0dXJlX2Zyb21fY2FsbGFibGUoCisgICAgICAgICAgICAgICAgICAgIG5ldywKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPWZvbGxvd193cmFwcGVyX2NoYWlucywKKyAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9c2tpcF9ib3VuZF9hcmcsCisgICAgICAgICAgICAgICAgICAgIHNpZ2Nscz1zaWdjbHMpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgRmluYWxseSwgd2Ugc2hvdWxkIGhhdmUgYXQgbGVhc3QgX19pbml0X18gaW1wbGVtZW50ZWQKICAgICAgICAgICAgICAgICBpbml0ID0gX3NpZ25hdHVyZV9nZXRfdXNlcl9kZWZpbmVkX21ldGhvZChvYmosICdfX2luaXRfXycpCiAgICAgICAgICAgICAgICAgaWYgaW5pdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9pbnRlcm5hbChpbml0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZykKKyAgICAgICAgICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucz1mb2xsb3dfd3JhcHBlcl9jaGFpbnMsCisgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZz1za2lwX2JvdW5kX2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpZ2Nscz1zaWdjbHMpCiAKICAgICAgICAgaWYgc2lnIGlzIE5vbmU6CiAgICAgICAgICAgICAjIEF0IHRoaXMgcG9pbnQgd2Uga25vdywgdGhhdCBgb2JqYCBpcyBhIGNsYXNzLCB3aXRoIG5vIHVzZXItCkBAIC0yMDE2LDcgKzIyODksNyBAQAogICAgICAgICAgICAgICAgICAgICBpZiB0ZXh0X3NpZzoKICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgJ29iaicgY2xhc3MgaGFzIGEgX190ZXh0X3NpZ25hdHVyZV9fIGF0dHJpYnV0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICMgcmV0dXJuIGEgc2lnbmF0dXJlIGJhc2VkIG9uIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9mcm9tc3RyKFNpZ25hdHVyZSwgb2JqLCB0ZXh0X3NpZykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfc2lnbmF0dXJlX2Zyb21zdHIoc2lnY2xzLCBvYmosIHRleHRfc2lnKQogCiAgICAgICAgICAgICAjIE5vICdfX3RleHRfc2lnbmF0dXJlX18nIHdhcyBmb3VuZCBmb3IgdGhlICdvYmonIGNsYXNzLgogICAgICAgICAgICAgIyBMYXN0IG9wdGlvbiBpcyB0byBjaGVjayBpZiBpdHMgJ19faW5pdF9fJyBpcwpAQCAtMjAyNCw5ICsyMjk3LDEzIEBACiAgICAgICAgICAgICBpZiB0eXBlIG5vdCBpbiBvYmouX19tcm9fXzoKICAgICAgICAgICAgICAgICAjIFdlIGhhdmUgYSBjbGFzcyAobm90IG1ldGFjbGFzcyksIGJ1dCBubyB1c2VyLWRlZmluZWQKICAgICAgICAgICAgICAgICAjIF9faW5pdF9fIG9yIF9fbmV3X18gZm9yIGl0Ci0gICAgICAgICAgICAgICAgaWYgb2JqLl9faW5pdF9fIGlzIG9iamVjdC5fX2luaXRfXzoKKyAgICAgICAgICAgICAgICBpZiAob2JqLl9faW5pdF9fIGlzIG9iamVjdC5fX2luaXRfXyBhbmQKKyAgICAgICAgICAgICAgICAgICAgb2JqLl9fbmV3X18gaXMgb2JqZWN0Ll9fbmV3X18pOgogICAgICAgICAgICAgICAgICAgICAjIFJldHVybiBhIHNpZ25hdHVyZSBvZiAnb2JqZWN0JyBidWlsdGluLgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2lnbmF0dXJlKG9iamVjdCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgJ25vIHNpZ25hdHVyZSBmb3VuZCBmb3IgYnVpbHRpbiB0eXBlIHshcn0nLmZvcm1hdChvYmopKQogCiAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShvYmosIF9Ob25Vc2VyRGVmaW5lZENhbGxhYmxlcyk6CiAgICAgICAgICMgQW4gb2JqZWN0IHdpdGggX19jYWxsX18KQEAgLTIwMzYsOSArMjMxMywxMSBAQAogICAgICAgICBjYWxsID0gX3NpZ25hdHVyZV9nZXRfdXNlcl9kZWZpbmVkX21ldGhvZCh0eXBlKG9iaiksICdfX2NhbGxfXycpCiAgICAgICAgIGlmIGNhbGwgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9pbnRlcm5hbChjYWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmcpCisgICAgICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAorICAgICAgICAgICAgICAgICAgICBjYWxsLAorICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9Zm9sbG93X3dyYXBwZXJfY2hhaW5zLAorICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZz1za2lwX2JvdW5kX2FyZywKKyAgICAgICAgICAgICAgICAgICAgc2lnY2xzPXNpZ2NscykKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4OgogICAgICAgICAgICAgICAgIG1zZyA9ICdubyBzaWduYXR1cmUgZm91bmQgZm9yIHshcn0nLmZvcm1hdChvYmopCiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpIGZyb20gZXgKQEAgLTIwNTgsNDEgKzIzMzcsMzUgQEAKIAogICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NhbGxhYmxlIHshcn0gaXMgbm90IHN1cHBvcnRlZCBieSBzaWduYXR1cmUnLmZvcm1hdChvYmopKQogCi1kZWYgc2lnbmF0dXJlKG9iaik6Ci0gICAgJycnR2V0IGEgc2lnbmF0dXJlIG9iamVjdCBmb3IgdGhlIHBhc3NlZCBjYWxsYWJsZS4nJycKLSAgICByZXR1cm4gX3NpZ25hdHVyZV9pbnRlcm5hbChvYmopCi0KIAogY2xhc3MgX3ZvaWQ6Ci0gICAgJycnQSBwcml2YXRlIG1hcmtlciAtIHVzZWQgaW4gUGFyYW1ldGVyICYgU2lnbmF0dXJlJycnCisgICAgIiIiQSBwcml2YXRlIG1hcmtlciAtIHVzZWQgaW4gUGFyYW1ldGVyICYgU2lnbmF0dXJlLiIiIgogCiAKIGNsYXNzIF9lbXB0eToKLSAgICBwYXNzCisgICAgIiIiTWFya2VyIG9iamVjdCBmb3IgU2lnbmF0dXJlLmVtcHR5IGFuZCBQYXJhbWV0ZXIuZW1wdHkuIiIiCiAKIAotY2xhc3MgX1BhcmFtZXRlcktpbmQoaW50KToKLSAgICBkZWYgX19uZXdfXyhzZWxmLCAqYXJncywgbmFtZSk6Ci0gICAgICAgIG9iaiA9IGludC5fX25ld19fKHNlbGYsICphcmdzKQotICAgICAgICBvYmouX25hbWUgPSBuYW1lCi0gICAgICAgIHJldHVybiBvYmoKK2NsYXNzIF9QYXJhbWV0ZXJLaW5kKGVudW0uSW50RW51bSk6CisgICAgUE9TSVRJT05BTF9PTkxZID0gMAorICAgIFBPU0lUSU9OQUxfT1JfS0VZV09SRCA9IDEKKyAgICBWQVJfUE9TSVRJT05BTCA9IDIKKyAgICBLRVlXT1JEX09OTFkgPSAzCisgICAgVkFSX0tFWVdPUkQgPSA0CiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICc8X1BhcmFtZXRlcktpbmQ6IHshcn0+Jy5mb3JtYXQoc2VsZi5fbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWVfCiAKIAotX1BPU0lUSU9OQUxfT05MWSAgICAgICAgPSBfUGFyYW1ldGVyS2luZCgwLCBuYW1lPSdQT1NJVElPTkFMX09OTFknKQotX1BPU0lUSU9OQUxfT1JfS0VZV09SRCAgPSBfUGFyYW1ldGVyS2luZCgxLCBuYW1lPSdQT1NJVElPTkFMX09SX0tFWVdPUkQnKQotX1ZBUl9QT1NJVElPTkFMICAgICAgICAgPSBfUGFyYW1ldGVyS2luZCgyLCBuYW1lPSdWQVJfUE9TSVRJT05BTCcpCi1fS0VZV09SRF9PTkxZICAgICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kKDMsIG5hbWU9J0tFWVdPUkRfT05MWScpCi1fVkFSX0tFWVdPUkQgICAgICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kKDQsIG5hbWU9J1ZBUl9LRVlXT1JEJykKK19QT1NJVElPTkFMX09OTFkgICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kLlBPU0lUSU9OQUxfT05MWQorX1BPU0lUSU9OQUxfT1JfS0VZV09SRCAgID0gX1BhcmFtZXRlcktpbmQuUE9TSVRJT05BTF9PUl9LRVlXT1JECitfVkFSX1BPU0lUSU9OQUwgICAgICAgICAgPSBfUGFyYW1ldGVyS2luZC5WQVJfUE9TSVRJT05BTAorX0tFWVdPUkRfT05MWSAgICAgICAgICAgID0gX1BhcmFtZXRlcktpbmQuS0VZV09SRF9PTkxZCitfVkFSX0tFWVdPUkQgICAgICAgICAgICAgPSBfUGFyYW1ldGVyS2luZC5WQVJfS0VZV09SRAogCiAKIGNsYXNzIFBhcmFtZXRlcjoKLSAgICAnJydSZXByZXNlbnRzIGEgcGFyYW1ldGVyIGluIGEgZnVuY3Rpb24gc2lnbmF0dXJlLgorICAgICIiIlJlcHJlc2VudHMgYSBwYXJhbWV0ZXIgaW4gYSBmdW5jdGlvbiBzaWduYXR1cmUuCiAKICAgICBIYXMgdGhlIGZvbGxvd2luZyBwdWJsaWMgYXR0cmlidXRlczoKIApAQCAtMjExMSw3ICsyMzg0LDcgQEAKICAgICAgICAgUG9zc2libGUgdmFsdWVzOiBgUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWWAsCiAgICAgICAgIGBQYXJhbWV0ZXIuUE9TSVRJT05BTF9PUl9LRVlXT1JEYCwgYFBhcmFtZXRlci5WQVJfUE9TSVRJT05BTGAsCiAgICAgICAgIGBQYXJhbWV0ZXIuS0VZV09SRF9PTkxZYCwgYFBhcmFtZXRlci5WQVJfS0VZV09SRGAuCi0gICAgJycnCisgICAgIiIiCiAKICAgICBfX3Nsb3RzX18gPSAoJ19uYW1lJywgJ19raW5kJywgJ19kZWZhdWx0JywgJ19hbm5vdGF0aW9uJykKIApAQCAtMjE0OCw2ICsyNDIxLDE2IEBACiAKICAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKIAorICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKHR5cGUoc2VsZiksCisgICAgICAgICAgICAgICAgKHNlbGYuX25hbWUsIHNlbGYuX2tpbmQpLAorICAgICAgICAgICAgICAgIHsnX2RlZmF1bHQnOiBzZWxmLl9kZWZhdWx0LAorICAgICAgICAgICAgICAgICAnX2Fubm90YXRpb24nOiBzZWxmLl9hbm5vdGF0aW9ufSkKKworICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgorICAgICAgICBzZWxmLl9kZWZhdWx0ID0gc3RhdGVbJ19kZWZhdWx0J10KKyAgICAgICAgc2VsZi5fYW5ub3RhdGlvbiA9IHN0YXRlWydfYW5ub3RhdGlvbiddCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKQEAgLTIxNjYsNyArMjQ0OSw3IEBACiAKICAgICBkZWYgcmVwbGFjZShzZWxmLCAqLCBuYW1lPV92b2lkLCBraW5kPV92b2lkLAogICAgICAgICAgICAgICAgIGFubm90YXRpb249X3ZvaWQsIGRlZmF1bHQ9X3ZvaWQpOgotICAgICAgICAnJydDcmVhdGVzIGEgY3VzdG9taXplZCBjb3B5IG9mIHRoZSBQYXJhbWV0ZXIuJycnCisgICAgICAgICIiIkNyZWF0ZXMgYSBjdXN0b21pemVkIGNvcHkgb2YgdGhlIFBhcmFtZXRlci4iIiIKIAogICAgICAgICBpZiBuYW1lIGlzIF92b2lkOgogICAgICAgICAgICAgbmFtZSA9IHNlbGYuX25hbWUKQEAgLTIyMDIsMTAgKzI0ODUsMTQgQEAKICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZAogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gJzx7fSBhdCB7OiN4fSB7IXJ9PicuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLCBzZWxmLm5hbWUpCisgICAgICAgIHJldHVybiAnPHt9ICJ7fSI+Jy5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYpCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBoYXNoKChzZWxmLm5hbWUsIHNlbGYua2luZCwgc2VsZi5hbm5vdGF0aW9uLCBzZWxmLmRlZmF1bHQpKQogCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIHNlbGYgaXMgb3RoZXI6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgUGFyYW1ldGVyKToKICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgICByZXR1cm4gKHNlbGYuX25hbWUgPT0gb3RoZXIuX25hbWUgYW5kCkBAIC0yMjE1LDcgKzI1MDIsNyBAQAogCiAKIGNsYXNzIEJvdW5kQXJndW1lbnRzOgotICAgICcnJ1Jlc3VsdCBvZiBgU2lnbmF0dXJlLmJpbmRgIGNhbGwuICBIb2xkcyB0aGUgbWFwcGluZyBvZiBhcmd1bWVudHMKKyAgICAiIiJSZXN1bHQgb2YgYFNpZ25hdHVyZS5iaW5kYCBjYWxsLiAgSG9sZHMgdGhlIG1hcHBpbmcgb2YgYXJndW1lbnRzCiAgICAgdG8gdGhlIGZ1bmN0aW9uJ3MgcGFyYW1ldGVycy4KIAogICAgIEhhcyB0aGUgZm9sbG93aW5nIHB1YmxpYyBhdHRyaWJ1dGVzOgpAQCAtMjIyOSw3ICsyNTE2LDkgQEAKICAgICAgICAgVHVwbGUgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgdmFsdWVzLgogICAgICoga3dhcmdzIDogZGljdAogICAgICAgICBEaWN0IG9mIGtleXdvcmQgYXJndW1lbnRzIHZhbHVlcy4KLSAgICAnJycKKyAgICAiIiIKKworICAgIF9fc2xvdHNfXyA9ICgnYXJndW1lbnRzJywgJ19zaWduYXR1cmUnLCAnX193ZWFrcmVmX18nKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNpZ25hdHVyZSwgYXJndW1lbnRzKToKICAgICAgICAgc2VsZi5hcmd1bWVudHMgPSBhcmd1bWVudHMKQEAgLTIyOTIsMTUgKzI1ODEsNjAgQEAKIAogICAgICAgICByZXR1cm4ga3dhcmdzCiAKKyAgICBkZWYgYXBwbHlfZGVmYXVsdHMoc2VsZik6CisgICAgICAgICIiIlNldCBkZWZhdWx0IHZhbHVlcyBmb3IgbWlzc2luZyBhcmd1bWVudHMuCisKKyAgICAgICAgRm9yIHZhcmlhYmxlLXBvc2l0aW9uYWwgYXJndW1lbnRzICgqYXJncykgdGhlIGRlZmF1bHQgaXMgYW4KKyAgICAgICAgZW1wdHkgdHVwbGUuCisKKyAgICAgICAgRm9yIHZhcmlhYmxlLWtleXdvcmQgYXJndW1lbnRzICgqKmt3YXJncykgdGhlIGRlZmF1bHQgaXMgYW4KKyAgICAgICAgZW1wdHkgZGljdC4KKyAgICAgICAgIiIiCisgICAgICAgIGFyZ3VtZW50cyA9IHNlbGYuYXJndW1lbnRzCisgICAgICAgIGlmIG5vdCBhcmd1bWVudHM6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgbmV3X2FyZ3VtZW50cyA9IFtdCisgICAgICAgIGZvciBuYW1lLCBwYXJhbSBpbiBzZWxmLl9zaWduYXR1cmUucGFyYW1ldGVycy5pdGVtcygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG5ld19hcmd1bWVudHMuYXBwZW5kKChuYW1lLCBhcmd1bWVudHNbbmFtZV0pKQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIGlmIHBhcmFtLmRlZmF1bHQgaXMgbm90IF9lbXB0eToKKyAgICAgICAgICAgICAgICAgICAgdmFsID0gcGFyYW0uZGVmYXVsdAorICAgICAgICAgICAgICAgIGVsaWYgcGFyYW0ua2luZCBpcyBfVkFSX1BPU0lUSU9OQUw6CisgICAgICAgICAgICAgICAgICAgIHZhbCA9ICgpCisgICAgICAgICAgICAgICAgZWxpZiBwYXJhbS5raW5kIGlzIF9WQVJfS0VZV09SRDoKKyAgICAgICAgICAgICAgICAgICAgdmFsID0ge30KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgQm91bmRBcmd1bWVudHMgd2FzIGxpa2VseSBwcm9kdWNlZCBieQorICAgICAgICAgICAgICAgICAgICAjIFNpZ25hdHVyZS5iaW5kX3BhcnRpYWwoKS4KKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBuZXdfYXJndW1lbnRzLmFwcGVuZCgobmFtZSwgdmFsKSkKKyAgICAgICAgc2VsZi5hcmd1bWVudHMgPSBPcmRlcmVkRGljdChuZXdfYXJndW1lbnRzKQorCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIHNlbGYgaXMgb3RoZXI6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgQm91bmRBcmd1bWVudHMpOgogICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgIHJldHVybiAoc2VsZi5zaWduYXR1cmUgPT0gb3RoZXIuc2lnbmF0dXJlIGFuZAogICAgICAgICAgICAgICAgIHNlbGYuYXJndW1lbnRzID09IG90aGVyLmFyZ3VtZW50cykKIAorICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgorICAgICAgICBzZWxmLl9zaWduYXR1cmUgPSBzdGF0ZVsnX3NpZ25hdHVyZSddCisgICAgICAgIHNlbGYuYXJndW1lbnRzID0gc3RhdGVbJ2FyZ3VtZW50cyddCisKKyAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4geydfc2lnbmF0dXJlJzogc2VsZi5fc2lnbmF0dXJlLCAnYXJndW1lbnRzJzogc2VsZi5hcmd1bWVudHN9CisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGFyZ3MgPSBbXQorICAgICAgICBmb3IgYXJnLCB2YWx1ZSBpbiBzZWxmLmFyZ3VtZW50cy5pdGVtcygpOgorICAgICAgICAgICAgYXJncy5hcHBlbmQoJ3t9PXshcn0nLmZvcm1hdChhcmcsIHZhbHVlKSkKKyAgICAgICAgcmV0dXJuICc8e30gKHt9KT4nLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgJywgJy5qb2luKGFyZ3MpKQorCiAKIGNsYXNzIFNpZ25hdHVyZToKLSAgICAnJydBIFNpZ25hdHVyZSBvYmplY3QgcmVwcmVzZW50cyB0aGUgb3ZlcmFsbCBzaWduYXR1cmUgb2YgYSBmdW5jdGlvbi4KKyAgICAiIiJBIFNpZ25hdHVyZSBvYmplY3QgcmVwcmVzZW50cyB0aGUgb3ZlcmFsbCBzaWduYXR1cmUgb2YgYSBmdW5jdGlvbi4KICAgICBJdCBzdG9yZXMgYSBQYXJhbWV0ZXIgb2JqZWN0IGZvciBlYWNoIHBhcmFtZXRlciBhY2NlcHRlZCBieSB0aGUKICAgICBmdW5jdGlvbiwgYXMgd2VsbCBhcyBpbmZvcm1hdGlvbiBzcGVjaWZpYyB0byB0aGUgZnVuY3Rpb24gaXRzZWxmLgogCkBAIC0yMzIwLDcgKzI2NTQsNyBAQAogICAgICogYmluZF9wYXJ0aWFsKCphcmdzLCAqKmt3YXJncykgLT4gQm91bmRBcmd1bWVudHMKICAgICAgICAgQ3JlYXRlcyBhIHBhcnRpYWwgbWFwcGluZyBmcm9tIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzCiAgICAgICAgIHRvIHBhcmFtZXRlcnMgKHNpbXVsYXRpbmcgJ2Z1bmN0b29scy5wYXJ0aWFsJyBiZWhhdmlvci4pCi0gICAgJycnCisgICAgIiIiCiAKICAgICBfX3Nsb3RzX18gPSAoJ19yZXR1cm5fYW5ub3RhdGlvbicsICdfcGFyYW1ldGVycycpCiAKQEAgLTIzMzEsOSArMjY2NSw5IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyYW1ldGVycz1Ob25lLCAqLCByZXR1cm5fYW5ub3RhdGlvbj1fZW1wdHksCiAgICAgICAgICAgICAgICAgIF9fdmFsaWRhdGVfcGFyYW1ldGVyc19fPVRydWUpOgotICAgICAgICAnJydDb25zdHJ1Y3RzIFNpZ25hdHVyZSBmcm9tIHRoZSBnaXZlbiBsaXN0IG9mIFBhcmFtZXRlcgorICAgICAgICAiIiJDb25zdHJ1Y3RzIFNpZ25hdHVyZSBmcm9tIHRoZSBnaXZlbiBsaXN0IG9mIFBhcmFtZXRlcgogICAgICAgICBvYmplY3RzIGFuZCAncmV0dXJuX2Fubm90YXRpb24nLiAgQWxsIGFyZ3VtZW50cyBhcmUgb3B0aW9uYWwuCi0gICAgICAgICcnJworICAgICAgICAiIiIKIAogICAgICAgICBpZiBwYXJhbWV0ZXJzIGlzIE5vbmU6CiAgICAgICAgICAgICBwYXJhbXMgPSBPcmRlcmVkRGljdCgpCkBAIC0yMzgyLDg5ICsyNzE2LDI4IEBACiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZnJvbV9mdW5jdGlvbihjbHMsIGZ1bmMpOgotICAgICAgICAnJydDb25zdHJ1Y3RzIFNpZ25hdHVyZSBmb3IgdGhlIGdpdmVuIHB5dGhvbiBmdW5jdGlvbicnJworICAgICAgICAiIiJDb25zdHJ1Y3RzIFNpZ25hdHVyZSBmb3IgdGhlIGdpdmVuIHB5dGhvbiBmdW5jdGlvbi4iIiIKIAotICAgICAgICBpc19kdWNrX2Z1bmN0aW9uID0gRmFsc2UKLSAgICAgICAgaWYgbm90IGlzZnVuY3Rpb24oZnVuYyk6Ci0gICAgICAgICAgICBpZiBfc2lnbmF0dXJlX2lzX2Z1bmN0aW9ubGlrZShmdW5jKToKLSAgICAgICAgICAgICAgICBpc19kdWNrX2Z1bmN0aW9uID0gVHJ1ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIElmIGl0J3Mgbm90IGEgcHVyZSBQeXRob24gZnVuY3Rpb24sIGFuZCBub3QgYSBkdWNrIHR5cGUKLSAgICAgICAgICAgICAgICAjIG9mIHB1cmUgZnVuY3Rpb246Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIFB5dGhvbiBmdW5jdGlvbicuZm9ybWF0KGZ1bmMpKQotCi0gICAgICAgIFBhcmFtZXRlciA9IGNscy5fcGFyYW1ldGVyX2NscwotCi0gICAgICAgICMgUGFyYW1ldGVyIGluZm9ybWF0aW9uLgotICAgICAgICBmdW5jX2NvZGUgPSBmdW5jLl9fY29kZV9fCi0gICAgICAgIHBvc19jb3VudCA9IGZ1bmNfY29kZS5jb19hcmdjb3VudAotICAgICAgICBhcmdfbmFtZXMgPSBmdW5jX2NvZGUuY29fdmFybmFtZXMKLSAgICAgICAgcG9zaXRpb25hbCA9IHR1cGxlKGFyZ19uYW1lc1s6cG9zX2NvdW50XSkKLSAgICAgICAga2V5d29yZF9vbmx5X2NvdW50ID0gZnVuY19jb2RlLmNvX2t3b25seWFyZ2NvdW50Ci0gICAgICAgIGtleXdvcmRfb25seSA9IGFyZ19uYW1lc1twb3NfY291bnQ6KHBvc19jb3VudCArIGtleXdvcmRfb25seV9jb3VudCldCi0gICAgICAgIGFubm90YXRpb25zID0gZnVuYy5fX2Fubm90YXRpb25zX18KLSAgICAgICAgZGVmYXVsdHMgPSBmdW5jLl9fZGVmYXVsdHNfXwotICAgICAgICBrd2RlZmF1bHRzID0gZnVuYy5fX2t3ZGVmYXVsdHNfXwotCi0gICAgICAgIGlmIGRlZmF1bHRzOgotICAgICAgICAgICAgcG9zX2RlZmF1bHRfY291bnQgPSBsZW4oZGVmYXVsdHMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwb3NfZGVmYXVsdF9jb3VudCA9IDAKLQotICAgICAgICBwYXJhbWV0ZXJzID0gW10KLQotICAgICAgICAjIE5vbi1rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyB3L28gZGVmYXVsdHMuCi0gICAgICAgIG5vbl9kZWZhdWx0X2NvdW50ID0gcG9zX2NvdW50IC0gcG9zX2RlZmF1bHRfY291bnQKLSAgICAgICAgZm9yIG5hbWUgaW4gcG9zaXRpb25hbFs6bm9uX2RlZmF1bHRfY291bnRdOgotICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCi0gICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1BPU0lUSU9OQUxfT1JfS0VZV09SRCkpCi0KLSAgICAgICAgIyAuLi4gdy8gZGVmYXVsdHMuCi0gICAgICAgIGZvciBvZmZzZXQsIG5hbWUgaW4gZW51bWVyYXRlKHBvc2l0aW9uYWxbbm9uX2RlZmF1bHRfY291bnQ6XSk6Ci0gICAgICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fUE9TSVRJT05BTF9PUl9LRVlXT1JELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9ZGVmYXVsdHNbb2Zmc2V0XSkpCi0KLSAgICAgICAgIyAqYXJncwotICAgICAgICBpZiBmdW5jX2NvZGUuY29fZmxhZ3MgJiBDT19WQVJBUkdTOgotICAgICAgICAgICAgbmFtZSA9IGFyZ19uYW1lc1twb3NfY291bnQgKyBrZXl3b3JkX29ubHlfY291bnRdCi0gICAgICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fVkFSX1BPU0lUSU9OQUwpKQotCi0gICAgICAgICMgS2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuCi0gICAgICAgIGZvciBuYW1lIGluIGtleXdvcmRfb25seToKLSAgICAgICAgICAgIGRlZmF1bHQgPSBfZW1wdHkKLSAgICAgICAgICAgIGlmIGt3ZGVmYXVsdHMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgZGVmYXVsdCA9IGt3ZGVmYXVsdHMuZ2V0KG5hbWUsIF9lbXB0eSkKLQotICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCi0gICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X0tFWVdPUkRfT05MWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PWRlZmF1bHQpKQotICAgICAgICAjICoqa3dhcmdzCi0gICAgICAgIGlmIGZ1bmNfY29kZS5jb19mbGFncyAmIENPX1ZBUktFWVdPUkRTOgotICAgICAgICAgICAgaW5kZXggPSBwb3NfY291bnQgKyBrZXl3b3JkX29ubHlfY291bnQKLSAgICAgICAgICAgIGlmIGZ1bmNfY29kZS5jb19mbGFncyAmIENPX1ZBUkFSR1M6Ci0gICAgICAgICAgICAgICAgaW5kZXggKz0gMQotCi0gICAgICAgICAgICBuYW1lID0gYXJnX25hbWVzW2luZGV4XQotICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCi0gICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1ZBUl9LRVlXT1JEKSkKLQotICAgICAgICAjIElzICdmdW5jJyBpcyBhIHB1cmUgUHl0aG9uIGZ1bmN0aW9uIC0gZG9uJ3QgdmFsaWRhdGUgdGhlCi0gICAgICAgICMgcGFyYW1ldGVycyBsaXN0IChmb3IgY29ycmVjdCBvcmRlciBhbmQgZGVmYXVsdHMpLCBpdCBzaG91bGQgYmUgT0suCi0gICAgICAgIHJldHVybiBjbHMocGFyYW1ldGVycywKLSAgICAgICAgICAgICAgICAgICByZXR1cm5fYW5ub3RhdGlvbj1hbm5vdGF0aW9ucy5nZXQoJ3JldHVybicsIF9lbXB0eSksCi0gICAgICAgICAgICAgICAgICAgX192YWxpZGF0ZV9wYXJhbWV0ZXJzX189aXNfZHVja19mdW5jdGlvbikKKyAgICAgICAgd2FybmluZ3Mud2FybigiaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9mdW5jdGlvbigpIGlzIGRlcHJlY2F0ZWQsICIKKyAgICAgICAgICAgICAgICAgICAgICAidXNlIFNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlKCkiLAorICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQorICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9mcm9tX2Z1bmN0aW9uKGNscywgZnVuYykKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBmcm9tX2J1aWx0aW4oY2xzLCBmdW5jKToKKyAgICAgICAgIiIiQ29uc3RydWN0cyBTaWduYXR1cmUgZm9yIHRoZSBnaXZlbiBidWlsdGluIGZ1bmN0aW9uLiIiIgorCisgICAgICAgIHdhcm5pbmdzLndhcm4oImluc3BlY3QuU2lnbmF0dXJlLmZyb21fYnVpbHRpbigpIGlzIGRlcHJlY2F0ZWQsICIKKyAgICAgICAgICAgICAgICAgICAgICAidXNlIFNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlKCkiLAorICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9mcm9tX2J1aWx0aW4oY2xzLCBmdW5jKQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fY2FsbGFibGUoY2xzLCBvYmosICosIGZvbGxvd193cmFwcGVkPVRydWUpOgorICAgICAgICAiIiJDb25zdHJ1Y3RzIFNpZ25hdHVyZSBmb3IgdGhlIGdpdmVuIGNhbGxhYmxlIG9iamVjdC4iIiIKKyAgICAgICAgcmV0dXJuIF9zaWduYXR1cmVfZnJvbV9jYWxsYWJsZShvYmosIHNpZ2Nscz1jbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPWZvbGxvd193cmFwcGVkKQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHBhcmFtZXRlcnMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9wYXJhbWV0ZXJzCkBAIC0yNDc0LDEwICsyNzQ3LDEwIEBACiAgICAgICAgIHJldHVybiBzZWxmLl9yZXR1cm5fYW5ub3RhdGlvbgogCiAgICAgZGVmIHJlcGxhY2Uoc2VsZiwgKiwgcGFyYW1ldGVycz1fdm9pZCwgcmV0dXJuX2Fubm90YXRpb249X3ZvaWQpOgotICAgICAgICAnJydDcmVhdGVzIGEgY3VzdG9taXplZCBjb3B5IG9mIHRoZSBTaWduYXR1cmUuCisgICAgICAgICIiIkNyZWF0ZXMgYSBjdXN0b21pemVkIGNvcHkgb2YgdGhlIFNpZ25hdHVyZS4KICAgICAgICAgUGFzcyAncGFyYW1ldGVycycgYW5kL29yICdyZXR1cm5fYW5ub3RhdGlvbicgYXJndW1lbnRzCiAgICAgICAgIHRvIG92ZXJyaWRlIHRoZW0gaW4gdGhlIG5ldyBjb3B5LgotICAgICAgICAnJycKKyAgICAgICAgIiIiCiAKICAgICAgICAgaWYgcGFyYW1ldGVycyBpcyBfdm9pZDoKICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBzZWxmLnBhcmFtZXRlcnMudmFsdWVzKCkKQEAgLTI0ODgsMzkgKzI3NjEsMjkgQEAKICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikocGFyYW1ldGVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX2Fubm90YXRpb249cmV0dXJuX2Fubm90YXRpb24pCiAKKyAgICBkZWYgX2hhc2hfYmFzaXMoc2VsZik6CisgICAgICAgIHBhcmFtcyA9IHR1cGxlKHBhcmFtIGZvciBwYXJhbSBpbiBzZWxmLnBhcmFtZXRlcnMudmFsdWVzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW0ua2luZCAhPSBfS0VZV09SRF9PTkxZKQorCisgICAgICAgIGt3b19wYXJhbXMgPSB7cGFyYW0ubmFtZTogcGFyYW0gZm9yIHBhcmFtIGluIHNlbGYucGFyYW1ldGVycy52YWx1ZXMoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX0tFWVdPUkRfT05MWX0KKworICAgICAgICByZXR1cm4gcGFyYW1zLCBrd29fcGFyYW1zLCBzZWxmLnJldHVybl9hbm5vdGF0aW9uCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHBhcmFtcywga3dvX3BhcmFtcywgcmV0dXJuX2Fubm90YXRpb24gPSBzZWxmLl9oYXNoX2Jhc2lzKCkKKyAgICAgICAga3dvX3BhcmFtcyA9IGZyb3plbnNldChrd29fcGFyYW1zLnZhbHVlcygpKQorICAgICAgICByZXR1cm4gaGFzaCgocGFyYW1zLCBrd29fcGFyYW1zLCByZXR1cm5fYW5ub3RhdGlvbikpCisKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgc2VsZiBpcyBvdGhlcjoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBTaWduYXR1cmUpOgogICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCi0gICAgICAgIGlmIChzZWxmLnJldHVybl9hbm5vdGF0aW9uICE9IG90aGVyLnJldHVybl9hbm5vdGF0aW9uIG9yCi0gICAgICAgICAgICBsZW4oc2VsZi5wYXJhbWV0ZXJzKSAhPSBsZW4ob3RoZXIucGFyYW1ldGVycykpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgb3RoZXJfcG9zaXRpb25zID0ge3BhcmFtOiBpZHgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpZHgsIHBhcmFtIGluIGVudW1lcmF0ZShvdGhlci5wYXJhbWV0ZXJzLmtleXMoKSl9Ci0KLSAgICAgICAgZm9yIGlkeCwgKHBhcmFtX25hbWUsIHBhcmFtKSBpbiBlbnVtZXJhdGUoc2VsZi5wYXJhbWV0ZXJzLml0ZW1zKCkpOgotICAgICAgICAgICAgaWYgcGFyYW0ua2luZCA9PSBfS0VZV09SRF9PTkxZOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgb3RoZXJfcGFyYW0gPSBvdGhlci5wYXJhbWV0ZXJzW3BhcmFtX25hbWVdCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbSAhPSBvdGhlcl9wYXJhbToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG90aGVyX2lkeCA9IG90aGVyX3Bvc2l0aW9uc1twYXJhbV9uYW1lXQotICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCAhPSBvdGhlcl9pZHggb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtICE9IG90aGVyLnBhcmFtZXRlcnNbcGFyYW1fbmFtZV0pOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hhc2hfYmFzaXMoKSA9PSBvdGhlci5faGFzaF9iYXNpcygpCiAKICAgICBkZWYgX2JpbmQoc2VsZiwgYXJncywga3dhcmdzLCAqLCBwYXJ0aWFsPUZhbHNlKToKLSAgICAgICAgJycnUHJpdmF0ZSBtZXRob2QuICBEb24ndCB1c2UgZGlyZWN0bHkuJycnCisgICAgICAgICIiIlByaXZhdGUgbWV0aG9kLiBEb24ndCB1c2UgZGlyZWN0bHkuIiIiCiAKICAgICAgICAgYXJndW1lbnRzID0gT3JkZXJlZERpY3QoKQogCkBAIC0yNTY4LDcgKzI4MzEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnNfZXggPSAocGFyYW0sKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICd7YXJnIXJ9IHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQgdmFsdWUnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gJ21pc3NpbmcgYSByZXF1aXJlZCBhcmd1bWVudDoge2FyZyFyfScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBtc2cuZm9ybWF0KGFyZz1wYXJhbS5uYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpIGZyb20gTm9uZQogICAgICAgICAgICAgZWxzZToKQEAgLTI1ODEsNyArMjg0NCw4IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgaW4gKF9WQVJfS0VZV09SRCwgX0tFWVdPUkRfT05MWSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIExvb2tzIGxpa2Ugd2UgaGF2ZSBubyBwYXJhbWV0ZXIgZm9yIHRoaXMgcG9zaXRpb25hbAogICAgICAgICAgICAgICAgICAgICAgICAgIyBhcmd1bWVudAotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJykgZnJvbSBOb25lCiAKICAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW0ua2luZCA9PSBfVkFSX1BPU0lUSU9OQUw6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGhhdmUgYW4gJyphcmdzJy1saWtlIGFyZ3VtZW50LCBsZXQncyBmaWxsIGl0IHdpdGgKQEAgLTI1OTMsOCArMjg1Nyw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogCiAgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLm5hbWUgaW4ga3dhcmdzOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdWx0aXBsZSB2YWx1ZXMgZm9yIGFyZ3VtZW50ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAne2FyZyFyfScuZm9ybWF0KGFyZz1wYXJhbS5uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXVsdGlwbGUgdmFsdWVzIGZvciBhcmd1bWVudCB7YXJnIXJ9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZz1wYXJhbS5uYW1lKSkgZnJvbSBOb25lCiAKICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzW3BhcmFtLm5hbWVdID0gYXJnX3ZhbAogCkBAIC0yNjIzLDcgKzI4ODgsNyBAQAogICAgICAgICAgICAgICAgICMgYXJndW1lbnRzLgogICAgICAgICAgICAgICAgIGlmIChub3QgcGFydGlhbCBhbmQgcGFyYW0ua2luZCAhPSBfVkFSX1BPU0lUSU9OQUwgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZGVmYXVsdCBpcyBfZW1wdHkpOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3thcmchcn0gcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCB2YWx1ZScuIFwKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtaXNzaW5nIGEgcmVxdWlyZWQgYXJndW1lbnQ6IHthcmchcn0nLiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoYXJnPXBhcmFtX25hbWUpKSBmcm9tIE5vbmUKIAogICAgICAgICAgICAgZWxzZToKQEAgLTI2NDIsMjQgKzI5MDcsMzcgQEAKICAgICAgICAgICAgICAgICAjIFByb2Nlc3Mgb3VyICcqKmt3YXJncyctbGlrZSBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgICBhcmd1bWVudHNba3dhcmdzX3BhcmFtLm5hbWVdID0ga3dhcmdzCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigndG9vIG1hbnkga2V5d29yZCBhcmd1bWVudHMnKQorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgJ2dvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQge2FyZyFyfScuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgYXJnPW5leHQoaXRlcihrd2FyZ3MpKSkpCiAKICAgICAgICAgcmV0dXJuIHNlbGYuX2JvdW5kX2FyZ3VtZW50c19jbHMoc2VsZiwgYXJndW1lbnRzKQogCiAgICAgZGVmIGJpbmQoKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgJycnR2V0IGEgQm91bmRBcmd1bWVudHMgb2JqZWN0LCB0aGF0IG1hcHMgdGhlIHBhc3NlZCBgYXJnc2AKKyAgICAgICAgIiIiR2V0IGEgQm91bmRBcmd1bWVudHMgb2JqZWN0LCB0aGF0IG1hcHMgdGhlIHBhc3NlZCBgYXJnc2AKICAgICAgICAgYW5kIGBrd2FyZ3NgIHRvIHRoZSBmdW5jdGlvbidzIHNpZ25hdHVyZS4gIFJhaXNlcyBgVHlwZUVycm9yYAogICAgICAgICBpZiB0aGUgcGFzc2VkIGFyZ3VtZW50cyBjYW4gbm90IGJlIGJvdW5kLgotICAgICAgICAnJycKKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBhcmdzWzBdLl9iaW5kKGFyZ3NbMTpdLCBrd2FyZ3MpCiAKICAgICBkZWYgYmluZF9wYXJ0aWFsKCphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICcnJ0dldCBhIEJvdW5kQXJndW1lbnRzIG9iamVjdCwgdGhhdCBwYXJ0aWFsbHkgbWFwcyB0aGUKKyAgICAgICAgIiIiR2V0IGEgQm91bmRBcmd1bWVudHMgb2JqZWN0LCB0aGF0IHBhcnRpYWxseSBtYXBzIHRoZQogICAgICAgICBwYXNzZWQgYGFyZ3NgIGFuZCBga3dhcmdzYCB0byB0aGUgZnVuY3Rpb24ncyBzaWduYXR1cmUuCiAgICAgICAgIFJhaXNlcyBgVHlwZUVycm9yYCBpZiB0aGUgcGFzc2VkIGFyZ3VtZW50cyBjYW4gbm90IGJlIGJvdW5kLgotICAgICAgICAnJycKKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBhcmdzWzBdLl9iaW5kKGFyZ3NbMTpdLCBrd2FyZ3MsIHBhcnRpYWw9VHJ1ZSkKIAorICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKHR5cGUoc2VsZiksCisgICAgICAgICAgICAgICAgKHR1cGxlKHNlbGYuX3BhcmFtZXRlcnMudmFsdWVzKCkpLCksCisgICAgICAgICAgICAgICAgeydfcmV0dXJuX2Fubm90YXRpb24nOiBzZWxmLl9yZXR1cm5fYW5ub3RhdGlvbn0pCisKKyAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKKyAgICAgICAgc2VsZi5fcmV0dXJuX2Fubm90YXRpb24gPSBzdGF0ZVsnX3JldHVybl9hbm5vdGF0aW9uJ10KKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8e30ge30+Jy5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYpCisKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmVzdWx0ID0gW10KICAgICAgICAgcmVuZGVyX3Bvc19vbmx5X3NlcGFyYXRvciA9IEZhbHNlCkBAIC0yNzA1LDYgKzI5ODMsMTIgQEAKIAogICAgICAgICByZXR1cm4gcmVuZGVyZWQKIAorCitkZWYgc2lnbmF0dXJlKG9iaiwgKiwgZm9sbG93X3dyYXBwZWQ9VHJ1ZSk6CisgICAgIiIiR2V0IGEgc2lnbmF0dXJlIG9iamVjdCBmb3IgdGhlIHBhc3NlZCBjYWxsYWJsZS4iIiIKKyAgICByZXR1cm4gU2lnbmF0dXJlLmZyb21fY2FsbGFibGUob2JqLCBmb2xsb3dfd3JhcHBlZD1mb2xsb3dfd3JhcHBlZCkKKworCiBkZWYgX21haW4oKToKICAgICAiIiIgTG9naWMgZm9yIGluc3BlY3RpbmcgYW4gb2JqZWN0IGdpdmVuIGF0IGNvbW1hbmQgbGluZSAiIiIKICAgICBpbXBvcnQgYXJncGFyc2UKZGlmZiAtLWdpdCBhL0xpYi9pcGFkZHJlc3MucHkgYi9MaWIvaXBhZGRyZXNzLnB5CmluZGV4IGFjMDNjMzYuLjc0NjlhOWQgMTAwNjQ0Ci0tLSBhL0xpYi9pcGFkZHJlc3MucHkKKysrIGIvTGliL2lwYWRkcmVzcy5weQpAQCAtMTM1LDcgKzEzNSw3IEBACiAgICAgIiIiCiAgICAgdHJ5OgogICAgICAgICByZXR1cm4gYWRkcmVzcy50b19ieXRlcyg0LCAnYmlnJykKLSAgICBleGNlcHQ6CisgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFkZHJlc3MgbmVnYXRpdmUgb3IgdG9vIGxhcmdlIGZvciBJUHY0IikKIAogCkBAIC0xNTEsNyArMTUxLDcgQEAKICAgICAiIiIKICAgICB0cnk6CiAgICAgICAgIHJldHVybiBhZGRyZXNzLnRvX2J5dGVzKDE2LCAnYmlnJykKLSAgICBleGNlcHQ6CisgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFkZHJlc3MgbmVnYXRpdmUgb3IgdG9vIGxhcmdlIGZvciBJUHY2IikKIAogCkBAIC0xNjQsMjIgKzE2NCwyMyBAQAogCiAKIGRlZiBfZmluZF9hZGRyZXNzX3JhbmdlKGFkZHJlc3Nlcyk6Ci0gICAgIiIiRmluZCBhIHNlcXVlbmNlIG9mIElQdiNBZGRyZXNzLgorICAgICIiIkZpbmQgYSBzZXF1ZW5jZSBvZiBzb3J0ZWQgZGVkdXBsaWNhdGVkIElQdiNBZGRyZXNzLgogCiAgICAgQXJnczoKICAgICAgICAgYWRkcmVzc2VzOiBhIGxpc3Qgb2YgSVB2I0FkZHJlc3Mgb2JqZWN0cy4KIAotICAgIFJldHVybnM6CisgICAgWWllbGRzOgogICAgICAgICBBIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGZpcnN0IGFuZCBsYXN0IElQIGFkZHJlc3NlcyBpbiB0aGUgc2VxdWVuY2UuCiAKICAgICAiIiIKLSAgICBmaXJzdCA9IGxhc3QgPSBhZGRyZXNzZXNbMF0KLSAgICBmb3IgaXAgaW4gYWRkcmVzc2VzWzE6XToKLSAgICAgICAgaWYgaXAuX2lwID09IGxhc3QuX2lwICsgMToKLSAgICAgICAgICAgIGxhc3QgPSBpcAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYnJlYWsKLSAgICByZXR1cm4gKGZpcnN0LCBsYXN0KQorICAgIGl0ID0gaXRlcihhZGRyZXNzZXMpCisgICAgZmlyc3QgPSBsYXN0ID0gbmV4dChpdCkKKyAgICBmb3IgaXAgaW4gaXQ6CisgICAgICAgIGlmIGlwLl9pcCAhPSBsYXN0Ll9pcCArIDE6CisgICAgICAgICAgICB5aWVsZCBmaXJzdCwgbGFzdAorICAgICAgICAgICAgZmlyc3QgPSBpcAorICAgICAgICBsYXN0ID0gaXAKKyAgICB5aWVsZCBmaXJzdCwgbGFzdAogCiAKIGRlZiBfY291bnRfcmlnaHRoYW5kX3plcm9fYml0cyhudW1iZXIsIGJpdHMpOgpAQCAtMTk1LDExICsxOTYsNyBAQAogICAgICIiIgogICAgIGlmIG51bWJlciA9PSAwOgogICAgICAgICByZXR1cm4gYml0cwotICAgIGZvciBpIGluIHJhbmdlKGJpdHMpOgotICAgICAgICBpZiAobnVtYmVyID4+IGkpICYgMToKLSAgICAgICAgICAgIHJldHVybiBpCi0gICAgIyBBbGwgYml0cyBvZiBpbnRlcmVzdCB3ZXJlIHplcm8sIGV2ZW4gaWYgdGhlcmUgYXJlIG1vcmUgaW4gdGhlIG51bWJlcgotICAgIHJldHVybiBiaXRzCisgICAgcmV0dXJuIG1pbihiaXRzLCAofm51bWJlciAmIChudW1iZXItMSkpLmJpdF9sZW5ndGgoKSkKIAogCiBkZWYgc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UoZmlyc3QsIGxhc3QpOgpAQCAtMjUwLDE1ICsyNDcsMTQgQEAKICAgICB3aGlsZSBmaXJzdF9pbnQgPD0gbGFzdF9pbnQ6CiAgICAgICAgIG5iaXRzID0gbWluKF9jb3VudF9yaWdodGhhbmRfemVyb19iaXRzKGZpcnN0X2ludCwgaXBfYml0cyksCiAgICAgICAgICAgICAgICAgICAgIChsYXN0X2ludCAtIGZpcnN0X2ludCArIDEpLmJpdF9sZW5ndGgoKSAtIDEpCi0gICAgICAgIG5ldCA9IGlwKCclcy8lZCcgJSAoZmlyc3QsIGlwX2JpdHMgLSBuYml0cykpCisgICAgICAgIG5ldCA9IGlwKChmaXJzdF9pbnQsIGlwX2JpdHMgLSBuYml0cykpCiAgICAgICAgIHlpZWxkIG5ldAogICAgICAgICBmaXJzdF9pbnQgKz0gMSA8PCBuYml0cwogICAgICAgICBpZiBmaXJzdF9pbnQgLSAxID09IGlwLl9BTExfT05FUzoKICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGZpcnN0ID0gZmlyc3QuX19jbGFzc19fKGZpcnN0X2ludCkKIAogCi1kZWYgX2NvbGxhcHNlX2FkZHJlc3Nlc19yZWN1cnNpdmUoYWRkcmVzc2VzKToKK2RlZiBfY29sbGFwc2VfYWRkcmVzc2VzX2ludGVybmFsKGFkZHJlc3Nlcyk6CiAgICAgIiIiTG9vcHMgdGhyb3VnaCB0aGUgYWRkcmVzc2VzLCBjb2xsYXBzaW5nIGNvbmN1cnJlbnQgbmV0YmxvY2tzLgogCiAgICAgRXhhbXBsZToKQEAgLTI2OCw3ICsyNjQsNyBAQAogICAgICAgICBpcDMgPSBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjYnKQogICAgICAgICBpcDQgPSBJUHY0TmV0d29yaygnMTkyLjAuMi4xOTIvMjYnKQogCi0gICAgICAgIF9jb2xsYXBzZV9hZGRyZXNzZXNfcmVjdXJzaXZlKFtpcDEsIGlwMiwgaXAzLCBpcDRdKSAtPgorICAgICAgICBfY29sbGFwc2VfYWRkcmVzc2VzX2ludGVybmFsKFtpcDEsIGlwMiwgaXAzLCBpcDRdKSAtPgogICAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JyldCiAKICAgICAgICAgVGhpcyBzaG91bGRuJ3QgYmUgY2FsbGVkIGRpcmVjdGx5OyBpdCBpcyBjYWxsZWQgdmlhCkBAIC0yODIsMjggKzI3OCwyOSBAQAogICAgICAgICBwYXNzZWQuCiAKICAgICAiIiIKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBsYXN0X2FkZHIgPSBOb25lCi0gICAgICAgIHJldF9hcnJheSA9IFtdCi0gICAgICAgIG9wdGltaXplZCA9IEZhbHNlCi0KLSAgICAgICAgZm9yIGN1cl9hZGRyIGluIGFkZHJlc3NlczoKLSAgICAgICAgICAgIGlmIG5vdCByZXRfYXJyYXk6Ci0gICAgICAgICAgICAgICAgbGFzdF9hZGRyID0gY3VyX2FkZHIKLSAgICAgICAgICAgICAgICByZXRfYXJyYXkuYXBwZW5kKGN1cl9hZGRyKQotICAgICAgICAgICAgZWxpZiAoY3VyX2FkZHIubmV0d29ya19hZGRyZXNzID49IGxhc3RfYWRkci5uZXR3b3JrX2FkZHJlc3MgYW5kCi0gICAgICAgICAgICAgICAgY3VyX2FkZHIuYnJvYWRjYXN0X2FkZHJlc3MgPD0gbGFzdF9hZGRyLmJyb2FkY2FzdF9hZGRyZXNzKToKLSAgICAgICAgICAgICAgICBvcHRpbWl6ZWQgPSBUcnVlCi0gICAgICAgICAgICBlbGlmIGN1cl9hZGRyID09IGxpc3QobGFzdF9hZGRyLnN1cGVybmV0KCkuc3VibmV0cygpKVsxXToKLSAgICAgICAgICAgICAgICByZXRfYXJyYXlbLTFdID0gbGFzdF9hZGRyID0gbGFzdF9hZGRyLnN1cGVybmV0KCkKLSAgICAgICAgICAgICAgICBvcHRpbWl6ZWQgPSBUcnVlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxhc3RfYWRkciA9IGN1cl9hZGRyCi0gICAgICAgICAgICAgICAgcmV0X2FycmF5LmFwcGVuZChjdXJfYWRkcikKLQotICAgICAgICBhZGRyZXNzZXMgPSByZXRfYXJyYXkKLSAgICAgICAgaWYgbm90IG9wdGltaXplZDoKLSAgICAgICAgICAgIHJldHVybiBhZGRyZXNzZXMKKyAgICAjIEZpcnN0IG1lcmdlCisgICAgdG9fbWVyZ2UgPSBsaXN0KGFkZHJlc3NlcykKKyAgICBzdWJuZXRzID0ge30KKyAgICB3aGlsZSB0b19tZXJnZToKKyAgICAgICAgbmV0ID0gdG9fbWVyZ2UucG9wKCkKKyAgICAgICAgc3VwZXJuZXQgPSBuZXQuc3VwZXJuZXQoKQorICAgICAgICBleGlzdGluZyA9IHN1Ym5ldHMuZ2V0KHN1cGVybmV0KQorICAgICAgICBpZiBleGlzdGluZyBpcyBOb25lOgorICAgICAgICAgICAgc3VibmV0c1tzdXBlcm5ldF0gPSBuZXQKKyAgICAgICAgZWxpZiBleGlzdGluZyAhPSBuZXQ6CisgICAgICAgICAgICAjIE1lcmdlIGNvbnNlY3V0aXZlIHN1Ym5ldHMKKyAgICAgICAgICAgIGRlbCBzdWJuZXRzW3N1cGVybmV0XQorICAgICAgICAgICAgdG9fbWVyZ2UuYXBwZW5kKHN1cGVybmV0KQorICAgICMgVGhlbiBpdGVyYXRlIG92ZXIgcmVzdWx0aW5nIG5ldHdvcmtzLCBza2lwcGluZyBzdWJzdW1lZCBzdWJuZXRzCisgICAgbGFzdCA9IE5vbmUKKyAgICBmb3IgbmV0IGluIHNvcnRlZChzdWJuZXRzLnZhbHVlcygpKToKKyAgICAgICAgaWYgbGFzdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgU2luY2UgdGhleSBhcmUgc29ydGVkLCBsYXN0Lm5ldHdvcmtfYWRkcmVzcyA8PSBuZXQubmV0d29ya19hZGRyZXNzCisgICAgICAgICAgICAjIGlzIGEgZ2l2ZW4uCisgICAgICAgICAgICBpZiBsYXN0LmJyb2FkY2FzdF9hZGRyZXNzID49IG5ldC5icm9hZGNhc3RfYWRkcmVzczoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICB5aWVsZCBuZXQKKyAgICAgICAgbGFzdCA9IG5ldAogCiAKIGRlZiBjb2xsYXBzZV9hZGRyZXNzZXMoYWRkcmVzc2VzKToKQEAgLTMyNCw3ICszMjEsNiBAQAogICAgICAgICBUeXBlRXJyb3I6IElmIHBhc3NlZCBhIGxpc3Qgb2YgbWl4ZWQgdmVyc2lvbiBvYmplY3RzLgogCiAgICAgIiIiCi0gICAgaSA9IDAKICAgICBhZGRycyA9IFtdCiAgICAgaXBzID0gW10KICAgICBuZXRzID0gW10KQEAgLTM1MiwxNSArMzQ4LDEzIEBACiAKICAgICAjIHNvcnQgYW5kIGRlZHVwCiAgICAgaXBzID0gc29ydGVkKHNldChpcHMpKQotICAgIG5ldHMgPSBzb3J0ZWQoc2V0KG5ldHMpKQogCi0gICAgd2hpbGUgaSA8IGxlbihpcHMpOgotICAgICAgICAoZmlyc3QsIGxhc3QpID0gX2ZpbmRfYWRkcmVzc19yYW5nZShpcHNbaTpdKQotICAgICAgICBpID0gaXBzLmluZGV4KGxhc3QpICsgMQotICAgICAgICBhZGRycy5leHRlbmQoc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UoZmlyc3QsIGxhc3QpKQorICAgICMgZmluZCBjb25zZWN1dGl2ZSBhZGRyZXNzIHJhbmdlcyBpbiB0aGUgc29ydGVkIHNlcXVlbmNlIGFuZCBzdW1tYXJpemUgdGhlbQorICAgIGlmIGlwczoKKyAgICAgICAgZm9yIGZpcnN0LCBsYXN0IGluIF9maW5kX2FkZHJlc3NfcmFuZ2UoaXBzKToKKyAgICAgICAgICAgIGFkZHJzLmV4dGVuZChzdW1tYXJpemVfYWRkcmVzc19yYW5nZShmaXJzdCwgbGFzdCkpCiAKLSAgICByZXR1cm4gaXRlcihfY29sbGFwc2VfYWRkcmVzc2VzX3JlY3Vyc2l2ZShzb3J0ZWQoCi0gICAgICAgIGFkZHJzICsgbmV0cywga2V5PV9CYXNlTmV0d29yay5fZ2V0X25ldHdvcmtzX2tleSkpKQorICAgIHJldHVybiBfY29sbGFwc2VfYWRkcmVzc2VzX2ludGVybmFsKGFkZHJzICsgbmV0cykKIAogCiBkZWYgZ2V0X21peGVkX3R5cGVfa2V5KG9iaik6CkBAIC0zOTIsNiArMzg2LDggQEAKIAogICAgICIiIlRoZSBtb3RoZXIgY2xhc3MuIiIiCiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGV4cGxvZGVkKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGxvbmdoYW5kIHZlcnNpb24gb2YgdGhlIElQIGFkZHJlc3MgYXMgYSBzdHJpbmcuIiIiCkBAIC00MDMsNiArMzk5LDE3IEBACiAgICAgICAgIHJldHVybiBzdHIoc2VsZikKIAogICAgIEBwcm9wZXJ0eQorICAgIGRlZiByZXZlcnNlX3BvaW50ZXIoc2VsZik6CisgICAgICAgICIiIlRoZSBuYW1lIG9mIHRoZSByZXZlcnNlIEROUyBwb2ludGVyIGZvciB0aGUgSVAgYWRkcmVzcywgZS5nLjoKKyAgICAgICAgICAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygiMTI3LjAuMC4xIikucmV2ZXJzZV9wb2ludGVyCisgICAgICAgICAgICAnMS4wLjAuMTI3LmluLWFkZHIuYXJwYScKKyAgICAgICAgICAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygiMjAwMTpkYjg6OjEiKS5yZXZlcnNlX3BvaW50ZXIKKyAgICAgICAgICAgICcxLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC44LmIuZC4wLjEuMC4wLjIuaXA2LmFycGEnCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9yZXZlcnNlX3BvaW50ZXIoKQorCisgICAgQHByb3BlcnR5CiAgICAgZGVmIHZlcnNpb24oc2VsZik6CiAgICAgICAgIG1zZyA9ICclMjAwcyBoYXMgbm8gdmVyc2lvbiBzcGVjaWZpZWQnICUgKHR5cGUoc2VsZiksKQogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKG1zZykKQEAgLTQyMyw3ICs0MzAsOCBAQAogICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgKGFkZHJlc3MsIGFkZHJlc3NfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2xlbiwgc2VsZi5fdmVyc2lvbikpCiAKLSAgICBkZWYgX2lwX2ludF9mcm9tX3ByZWZpeChzZWxmLCBwcmVmaXhsZW4pOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfaXBfaW50X2Zyb21fcHJlZml4KGNscywgcHJlZml4bGVuKToKICAgICAgICAgIiIiVHVybiB0aGUgcHJlZml4IGxlbmd0aCBpbnRvIGEgYml0d2lzZSBuZXRtYXNrCiAKICAgICAgICAgQXJnczoKQEAgLTQzMyw5ICs0NDEsMTAgQEAKICAgICAgICAgICAgIEFuIGludGVnZXIuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9BTExfT05FUyBeIChzZWxmLl9BTExfT05FUyA+PiBwcmVmaXhsZW4pCisgICAgICAgIHJldHVybiBjbHMuX0FMTF9PTkVTIF4gKGNscy5fQUxMX09ORVMgPj4gcHJlZml4bGVuKQogCi0gICAgZGVmIF9wcmVmaXhfZnJvbV9pcF9pbnQoc2VsZiwgaXBfaW50KToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3ByZWZpeF9mcm9tX2lwX2ludChjbHMsIGlwX2ludCk6CiAgICAgICAgICIiIlJldHVybiBwcmVmaXggbGVuZ3RoIGZyb20gdGhlIGJpdHdpc2UgbmV0bWFzay4KIAogICAgICAgICBBcmdzOgpAQCAtNDQ4LDIyICs0NTcsMjQgQEAKICAgICAgICAgICAgIFZhbHVlRXJyb3I6IElmIHRoZSBpbnB1dCBpbnRlcm1pbmdsZXMgemVyb2VzICYgb25lcwogICAgICAgICAiIiIKICAgICAgICAgdHJhaWxpbmdfemVyb2VzID0gX2NvdW50X3JpZ2h0aGFuZF96ZXJvX2JpdHMoaXBfaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tYXhfcHJlZml4bGVuKQotICAgICAgICBwcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuIC0gdHJhaWxpbmdfemVyb2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5fbWF4X3ByZWZpeGxlbikKKyAgICAgICAgcHJlZml4bGVuID0gY2xzLl9tYXhfcHJlZml4bGVuIC0gdHJhaWxpbmdfemVyb2VzCiAgICAgICAgIGxlYWRpbmdfb25lcyA9IGlwX2ludCA+PiB0cmFpbGluZ196ZXJvZXMKICAgICAgICAgYWxsX29uZXMgPSAoMSA8PCBwcmVmaXhsZW4pIC0gMQogICAgICAgICBpZiBsZWFkaW5nX29uZXMgIT0gYWxsX29uZXM6Ci0gICAgICAgICAgICBieXRlc2xlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4gLy8gOAorICAgICAgICAgICAgYnl0ZXNsZW4gPSBjbHMuX21heF9wcmVmaXhsZW4gLy8gOAogICAgICAgICAgICAgZGV0YWlscyA9IGlwX2ludC50b19ieXRlcyhieXRlc2xlbiwgJ2JpZycpCiAgICAgICAgICAgICBtc2cgPSAnTmV0bWFzayBwYXR0ZXJuICVyIG1peGVzIHplcm9lcyAmIG9uZXMnCiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZyAlIGRldGFpbHMpCiAgICAgICAgIHJldHVybiBwcmVmaXhsZW4KIAotICAgIGRlZiBfcmVwb3J0X2ludmFsaWRfbmV0bWFzayhzZWxmLCBuZXRtYXNrX3N0cik6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9yZXBvcnRfaW52YWxpZF9uZXRtYXNrKGNscywgbmV0bWFza19zdHIpOgogICAgICAgICBtc2cgPSAnJXIgaXMgbm90IGEgdmFsaWQgbmV0bWFzaycgJSBuZXRtYXNrX3N0cgogICAgICAgICByYWlzZSBOZXRtYXNrVmFsdWVFcnJvcihtc2cpIGZyb20gTm9uZQogCi0gICAgZGVmIF9wcmVmaXhfZnJvbV9wcmVmaXhfc3RyaW5nKHNlbGYsIHByZWZpeGxlbl9zdHIpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcHJlZml4X2Zyb21fcHJlZml4X3N0cmluZyhjbHMsIHByZWZpeGxlbl9zdHIpOgogICAgICAgICAiIiJSZXR1cm4gcHJlZml4IGxlbmd0aCBmcm9tIGEgbnVtZXJpYyBzdHJpbmcKIAogICAgICAgICBBcmdzOgpAQCAtNDc4LDE2ICs0ODksMTcgQEAKICAgICAgICAgIyBpbnQgYWxsb3dzIGEgbGVhZGluZyArLy0gYXMgd2VsbCBhcyBzdXJyb3VuZGluZyB3aGl0ZXNwYWNlLAogICAgICAgICAjIHNvIHdlIGVuc3VyZSB0aGF0IGlzbid0IHRoZSBjYXNlCiAgICAgICAgIGlmIG5vdCBfQmFzZVY0Ll9ERUNJTUFMX0RJR0lUUy5pc3N1cGVyc2V0KHByZWZpeGxlbl9zdHIpOgotICAgICAgICAgICAgc2VsZi5fcmVwb3J0X2ludmFsaWRfbmV0bWFzayhwcmVmaXhsZW5fc3RyKQorICAgICAgICAgICAgY2xzLl9yZXBvcnRfaW52YWxpZF9uZXRtYXNrKHByZWZpeGxlbl9zdHIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHByZWZpeGxlbiA9IGludChwcmVmaXhsZW5fc3RyKQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9pbnZhbGlkX25ldG1hc2socHJlZml4bGVuX3N0cikKLSAgICAgICAgaWYgbm90ICgwIDw9IHByZWZpeGxlbiA8PSBzZWxmLl9tYXhfcHJlZml4bGVuKToKLSAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9pbnZhbGlkX25ldG1hc2socHJlZml4bGVuX3N0cikKKyAgICAgICAgICAgIGNscy5fcmVwb3J0X2ludmFsaWRfbmV0bWFzayhwcmVmaXhsZW5fc3RyKQorICAgICAgICBpZiBub3QgKDAgPD0gcHJlZml4bGVuIDw9IGNscy5fbWF4X3ByZWZpeGxlbik6CisgICAgICAgICAgICBjbHMuX3JlcG9ydF9pbnZhbGlkX25ldG1hc2socHJlZml4bGVuX3N0cikKICAgICAgICAgcmV0dXJuIHByZWZpeGxlbgogCi0gICAgZGVmIF9wcmVmaXhfZnJvbV9pcF9zdHJpbmcoc2VsZiwgaXBfc3RyKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3ByZWZpeF9mcm9tX2lwX3N0cmluZyhjbHMsIGlwX3N0cik6CiAgICAgICAgICIiIlR1cm4gYSBuZXRtYXNrL2hvc3RtYXNrIHN0cmluZyBpbnRvIGEgcHJlZml4IGxlbmd0aAogCiAgICAgICAgIEFyZ3M6CkBAIC01MDEsMjQgKzUxMywyNyBAQAogICAgICAgICAiIiIKICAgICAgICAgIyBQYXJzZSB0aGUgbmV0bWFzay9ob3N0bWFzayBsaWtlIGFuIElQIGFkZHJlc3MuCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlwX2ludCA9IHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhpcF9zdHIpCisgICAgICAgICAgICBpcF9pbnQgPSBjbHMuX2lwX2ludF9mcm9tX3N0cmluZyhpcF9zdHIpCiAgICAgICAgIGV4Y2VwdCBBZGRyZXNzVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9pbnZhbGlkX25ldG1hc2soaXBfc3RyKQorICAgICAgICAgICAgY2xzLl9yZXBvcnRfaW52YWxpZF9uZXRtYXNrKGlwX3N0cikKIAogICAgICAgICAjIFRyeSBtYXRjaGluZyBhIG5ldG1hc2sgKHRoaXMgd291bGQgYmUgLzEqMCovIGFzIGEgYml0d2lzZSByZWdleHApLgogICAgICAgICAjIE5vdGUgdGhhdCB0aGUgdHdvIGFtYmlndW91cyBjYXNlcyAoYWxsLW9uZXMgYW5kIGFsbC16ZXJvZXMpIGFyZQogICAgICAgICAjIHRyZWF0ZWQgYXMgbmV0bWFza3MuCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9wcmVmaXhfZnJvbV9pcF9pbnQoaXBfaW50KQorICAgICAgICAgICAgcmV0dXJuIGNscy5fcHJlZml4X2Zyb21faXBfaW50KGlwX2ludCkKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgIyBJbnZlcnQgdGhlIGJpdHMsIGFuZCB0cnkgbWF0Y2hpbmcgYSAvMCsxKy8gaG9zdG1hc2sgaW5zdGVhZC4KLSAgICAgICAgaXBfaW50IF49IHNlbGYuX0FMTF9PTkVTCisgICAgICAgIGlwX2ludCBePSBjbHMuX0FMTF9PTkVTCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9wcmVmaXhfZnJvbV9pcF9pbnQoaXBfaW50KQorICAgICAgICAgICAgcmV0dXJuIGNscy5fcHJlZml4X2Zyb21faXBfaW50KGlwX2ludCkKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBzZWxmLl9yZXBvcnRfaW52YWxpZF9uZXRtYXNrKGlwX3N0cikKKyAgICAgICAgICAgIGNscy5fcmVwb3J0X2ludmFsaWRfbmV0bWFzayhpcF9zdHIpCisKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLCAoc3RyKHNlbGYpLCkKIAogCiBAZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nCkBAIC01MzAsMTAgKzU0NSw3IEBACiAgICAgdXNlZCBieSBzaW5nbGUgSVAgYWRkcmVzc2VzLgogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgotICAgICAgICBpZiAobm90IGlzaW5zdGFuY2UoYWRkcmVzcywgYnl0ZXMpCi0gICAgICAgICAgICBhbmQgJy8nIGluIHN0cihhZGRyZXNzKSk6Ci0gICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiVW5leHBlY3RlZCAnLycgaW4gJXIiICUgYWRkcmVzcykKKyAgICBfX3Nsb3RzX18gPSAoKQogCiAgICAgZGVmIF9faW50X18oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9pcApAQCAtNTc5LDYgKzU5MSw5IEBACiAgICAgZGVmIF9nZXRfYWRkcmVzc19rZXkoc2VsZik6CiAgICAgICAgIHJldHVybiAoc2VsZi5fdmVyc2lvbiwgc2VsZikKIAorICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18sIChzZWxmLl9pcCwpCisKIAogQGZ1bmN0b29scy50b3RhbF9vcmRlcmluZwogY2xhc3MgX0Jhc2VOZXR3b3JrKF9JUEFkZHJlc3NCYXNlKToKQEAgLTc2NSw3ICs3ODAsNyBAQAogICAgICAgICAgICAgICAgIG90aGVyLmJyb2FkY2FzdF9hZGRyZXNzIDw9IHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignJXMgbm90IGNvbnRhaW5lZCBpbiAlcycgJSAob3RoZXIsIHNlbGYpKQogICAgICAgICBpZiBvdGhlciA9PSBzZWxmOgotICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgIyBNYWtlIHN1cmUgd2UncmUgY29tcGFyaW5nIHRoZSBuZXR3b3JrIG9mIG90aGVyLgogICAgICAgICBvdGhlciA9IG90aGVyLl9fY2xhc3NfXygnJXMvJXMnICUgKG90aGVyLm5ldHdvcmtfYWRkcmVzcywKQEAgLTkwMCwyMCArOTE1LDExIEBACiAgICAgICAgICAgICAgICAgJ3ByZWZpeCBsZW5ndGggZGlmZiAlZCBpcyBpbnZhbGlkIGZvciBuZXRibG9jayAlcycgJSAoCiAgICAgICAgICAgICAgICAgICAgIG5ld19wcmVmaXhsZW4sIHNlbGYpKQogCi0gICAgICAgIGZpcnN0ID0gc2VsZi5fX2NsYXNzX18oJyVzLyVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5uZXR3b3JrX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuICsgcHJlZml4bGVuX2RpZmYpKQotCi0gICAgICAgIHlpZWxkIGZpcnN0Ci0gICAgICAgIGN1cnJlbnQgPSBmaXJzdAotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgYnJvYWRjYXN0ID0gY3VycmVudC5icm9hZGNhc3RfYWRkcmVzcwotICAgICAgICAgICAgaWYgYnJvYWRjYXN0ID09IHNlbGYuYnJvYWRjYXN0X2FkZHJlc3M6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBuZXdfYWRkciA9IHNlbGYuX2FkZHJlc3NfY2xhc3MoaW50KGJyb2FkY2FzdCkgKyAxKQotICAgICAgICAgICAgY3VycmVudCA9IHNlbGYuX19jbGFzc19fKCclcy8lcycgJSAobmV3X2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZml4bGVuKSkKLQorICAgICAgICBzdGFydCA9IGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykKKyAgICAgICAgZW5kID0gaW50KHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MpCisgICAgICAgIHN0ZXAgPSAoaW50KHNlbGYuaG9zdG1hc2spICsgMSkgPj4gcHJlZml4bGVuX2RpZmYKKyAgICAgICAgZm9yIG5ld19hZGRyIGluIHJhbmdlKHN0YXJ0LCBlbmQsIHN0ZXApOgorICAgICAgICAgICAgY3VycmVudCA9IHNlbGYuX19jbGFzc19fKChuZXdfYWRkciwgbmV3X3ByZWZpeGxlbikpCiAgICAgICAgICAgICB5aWVsZCBjdXJyZW50CiAKICAgICBkZWYgc3VwZXJuZXQoc2VsZiwgcHJlZml4bGVuX2RpZmY9MSwgbmV3X3ByZWZpeD1Ob25lKToKQEAgLTk0NywxNSArOTUzLDE1IEBACiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY2Fubm90IHNldCBwcmVmaXhsZW5fZGlmZiBhbmQgbmV3X3ByZWZpeCcpCiAgICAgICAgICAgICBwcmVmaXhsZW5fZGlmZiA9IHNlbGYuX3ByZWZpeGxlbiAtIG5ld19wcmVmaXgKIAotICAgICAgICBpZiBzZWxmLnByZWZpeGxlbiAtIHByZWZpeGxlbl9kaWZmIDwgMDoKKyAgICAgICAgbmV3X3ByZWZpeGxlbiA9IHNlbGYucHJlZml4bGVuIC0gcHJlZml4bGVuX2RpZmYKKyAgICAgICAgaWYgbmV3X3ByZWZpeGxlbiA8IDA6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICdjdXJyZW50IHByZWZpeGxlbiBpcyAlZCwgY2Fubm90IGhhdmUgYSBwcmVmaXhsZW5fZGlmZiBvZiAlZCcgJQogICAgICAgICAgICAgICAgIChzZWxmLnByZWZpeGxlbiwgcHJlZml4bGVuX2RpZmYpKQotICAgICAgICAjIFRPRE8gKHBtb29keSk6IG9wdGltaXplIHRoaXMuCi0gICAgICAgIHQgPSBzZWxmLl9fY2xhc3NfXygnJXMvJWQnICUgKHNlbGYubmV0d29ya19hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnByZWZpeGxlbiAtIHByZWZpeGxlbl9kaWZmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3Q9RmFsc2UpCi0gICAgICAgIHJldHVybiB0Ll9fY2xhc3NfXygnJXMvJWQnICUgKHQubmV0d29ya19hZGRyZXNzLCB0LnByZWZpeGxlbikpCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXygoCisgICAgICAgICAgICBpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpICYgKGludChzZWxmLm5ldG1hc2spIDw8IHByZWZpeGxlbl9kaWZmKSwKKyAgICAgICAgICAgIG5ld19wcmVmaXhsZW4KKyAgICAgICAgICAgICkpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfbXVsdGljYXN0KHNlbGYpOgpAQCAtMTA0OSwyMSArMTA1NSw0OSBAQAogCiAgICAgIiIiCiAKKyAgICBfX3Nsb3RzX18gPSAoKQorICAgIF92ZXJzaW9uID0gNAogICAgICMgRXF1aXZhbGVudCB0byAyNTUuMjU1LjI1NS4yNTUgb3IgMzIgYml0cyBvZiAxJ3MuCiAgICAgX0FMTF9PTkVTID0gKDIqKklQVjRMRU5HVEgpIC0gMQogICAgIF9ERUNJTUFMX0RJR0lUUyA9IGZyb3plbnNldCgnMDEyMzQ1Njc4OScpCiAKICAgICAjIHRoZSB2YWxpZCBvY3RldHMgZm9yIGhvc3QgYW5kIG5ldG1hc2tzLiBvbmx5IHVzZWZ1bCBmb3IgSVB2NC4KLSAgICBfdmFsaWRfbWFza19vY3RldHMgPSBmcm96ZW5zZXQoKDI1NSwgMjU0LCAyNTIsIDI0OCwgMjQwLCAyMjQsIDE5MiwgMTI4LCAwKSkKKyAgICBfdmFsaWRfbWFza19vY3RldHMgPSBmcm96ZW5zZXQoezI1NSwgMjU0LCAyNTIsIDI0OCwgMjQwLCAyMjQsIDE5MiwgMTI4LCAwfSkKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKLSAgICAgICAgc2VsZi5fdmVyc2lvbiA9IDQKLSAgICAgICAgc2VsZi5fbWF4X3ByZWZpeGxlbiA9IElQVjRMRU5HVEgKKyAgICBfbWF4X3ByZWZpeGxlbiA9IElQVjRMRU5HVEgKKyAgICAjIFRoZXJlIGFyZSBvbmx5IGEgaGFuZGZ1bCBvZiB2YWxpZCB2NCBuZXRtYXNrcywgc28gd2UgY2FjaGUgdGhlbSBhbGwKKyAgICAjIHdoZW4gY29uc3RydWN0ZWQgKHNlZSBfbWFrZV9uZXRtYXNrKCkpLgorICAgIF9uZXRtYXNrX2NhY2hlID0ge30KIAogICAgIGRlZiBfZXhwbG9kZV9zaG9ydGhhbmRfaXBfc3RyaW5nKHNlbGYpOgogICAgICAgICByZXR1cm4gc3RyKHNlbGYpCiAKLSAgICBkZWYgX2lwX2ludF9mcm9tX3N0cmluZyhzZWxmLCBpcF9zdHIpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfbWFrZV9uZXRtYXNrKGNscywgYXJnKToKKyAgICAgICAgIiIiTWFrZSBhIChuZXRtYXNrLCBwcmVmaXhfbGVuKSB0dXBsZSBmcm9tIHRoZSBnaXZlbiBhcmd1bWVudC4KKworICAgICAgICBBcmd1bWVudCBjYW4gYmU6CisgICAgICAgIC0gYW4gaW50ZWdlciAodGhlIHByZWZpeCBsZW5ndGgpCisgICAgICAgIC0gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwcmVmaXggbGVuZ3RoIChlLmcuICIyNCIpCisgICAgICAgIC0gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwcmVmaXggbmV0bWFzayAoZS5nLiAiMjU1LjI1NS4yNTUuMCIpCisgICAgICAgICIiIgorICAgICAgICBpZiBhcmcgbm90IGluIGNscy5fbmV0bWFza19jYWNoZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJnLCBpbnQpOgorICAgICAgICAgICAgICAgIHByZWZpeGxlbiA9IGFyZworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgZm9yIGEgbmV0bWFzayBpbiBwcmVmaXggbGVuZ3RoIGZvcm0KKyAgICAgICAgICAgICAgICAgICAgcHJlZml4bGVuID0gY2xzLl9wcmVmaXhfZnJvbV9wcmVmaXhfc3RyaW5nKGFyZykKKyAgICAgICAgICAgICAgICBleGNlcHQgTmV0bWFza1ZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgZm9yIGEgbmV0bWFzayBvciBob3N0bWFzayBpbiBkb3R0ZWQtcXVhZCBmb3JtLgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbWF5IHJhaXNlIE5ldG1hc2tWYWx1ZUVycm9yLgorICAgICAgICAgICAgICAgICAgICBwcmVmaXhsZW4gPSBjbHMuX3ByZWZpeF9mcm9tX2lwX3N0cmluZyhhcmcpCisgICAgICAgICAgICBuZXRtYXNrID0gSVB2NEFkZHJlc3MoY2xzLl9pcF9pbnRfZnJvbV9wcmVmaXgocHJlZml4bGVuKSkKKyAgICAgICAgICAgIGNscy5fbmV0bWFza19jYWNoZVthcmddID0gbmV0bWFzaywgcHJlZml4bGVuCisgICAgICAgIHJldHVybiBjbHMuX25ldG1hc2tfY2FjaGVbYXJnXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9pcF9pbnRfZnJvbV9zdHJpbmcoY2xzLCBpcF9zdHIpOgogICAgICAgICAiIiJUdXJuIHRoZSBnaXZlbiBJUCBzdHJpbmcgaW50byBhbiBpbnRlZ2VyIGZvciBjb21wYXJpc29uLgogCiAgICAgICAgIEFyZ3M6CkBAIC0xMDg0LDExICsxMTE4LDEyIEBACiAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiRXhwZWN0ZWQgNCBvY3RldHMgaW4gJXIiICUgaXBfc3RyKQogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBpbnQuZnJvbV9ieXRlcyhtYXAoc2VsZi5fcGFyc2Vfb2N0ZXQsIG9jdGV0cyksICdiaWcnKQorICAgICAgICAgICAgcmV0dXJuIGludC5mcm9tX2J5dGVzKG1hcChjbHMuX3BhcnNlX29jdGV0LCBvY3RldHMpLCAnYmlnJykKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXhjOgogICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoIiVzIGluICVyIiAlIChleGMsIGlwX3N0cikpIGZyb20gTm9uZQogCi0gICAgZGVmIF9wYXJzZV9vY3RldChzZWxmLCBvY3RldF9zdHIpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcGFyc2Vfb2N0ZXQoY2xzLCBvY3RldF9zdHIpOgogICAgICAgICAiIiJDb252ZXJ0IGEgZGVjaW1hbCBvY3RldCBpbnRvIGFuIGludGVnZXIuCiAKICAgICAgICAgQXJnczoKQEAgLTExMDQsNyArMTEzOSw3IEBACiAgICAgICAgIGlmIG5vdCBvY3RldF9zdHI6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFbXB0eSBvY3RldCBub3QgcGVybWl0dGVkIikKICAgICAgICAgIyBXaGl0ZWxpc3QgdGhlIGNoYXJhY3RlcnMsIHNpbmNlIGludCgpIGFsbG93cyBhIGxvdCBvZiBiaXphcnJlIHN0dWZmLgotICAgICAgICBpZiBub3Qgc2VsZi5fREVDSU1BTF9ESUdJVFMuaXNzdXBlcnNldChvY3RldF9zdHIpOgorICAgICAgICBpZiBub3QgY2xzLl9ERUNJTUFMX0RJR0lUUy5pc3N1cGVyc2V0KG9jdGV0X3N0cik6CiAgICAgICAgICAgICBtc2cgPSAiT25seSBkZWNpbWFsIGRpZ2l0cyBwZXJtaXR0ZWQgaW4gJXIiCiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZyAlIG9jdGV0X3N0cikKICAgICAgICAgIyBXZSBkbyB0aGUgbGVuZ3RoIGNoZWNrIHNlY29uZCwgc2luY2UgdGhlIGludmFsaWQgY2hhcmFjdGVyIGVycm9yCkBAIC0xMTI0LDcgKzExNTksOCBAQAogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiT2N0ZXQgJWQgKD4gMjU1KSBub3QgcGVybWl0dGVkIiAlIG9jdGV0X2ludCkKICAgICAgICAgcmV0dXJuIG9jdGV0X2ludAogCi0gICAgZGVmIF9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZiwgaXBfaW50KToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3N0cmluZ19mcm9tX2lwX2ludChjbHMsIGlwX2ludCk6CiAgICAgICAgICIiIlR1cm5zIGEgMzItYml0IGludGVnZXIgaW50byBkb3R0ZWQgZGVjaW1hbCBub3RhdGlvbi4KIAogICAgICAgICBBcmdzOgpAQCAtMTE4OCw2ICsxMjI0LDE1IEBACiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgIGRlZiBfcmV2ZXJzZV9wb2ludGVyKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHJldmVyc2UgRE5TIHBvaW50ZXIgbmFtZSBmb3IgdGhlIElQdjQgYWRkcmVzcy4KKworICAgICAgICBUaGlzIGltcGxlbWVudHMgdGhlIG1ldGhvZCBkZXNjcmliZWQgaW4gUkZDMTAzNSAzLjUuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldmVyc2Vfb2N0ZXRzID0gc3RyKHNlbGYpLnNwbGl0KCcuJylbOjotMV0KKyAgICAgICAgcmV0dXJuICcuJy5qb2luKHJldmVyc2Vfb2N0ZXRzKSArICcuaW4tYWRkci5hcnBhJworCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIG1heF9wcmVmaXhsZW4oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9tYXhfcHJlZml4bGVuCkBAIC0xMjAxLDYgKzEyNDYsOCBAQAogCiAgICAgIiIiUmVwcmVzZW50IGFuZCBtYW5pcHVsYXRlIHNpbmdsZSBJUHY0IEFkZHJlc3Nlcy4iIiIKIAorICAgIF9fc2xvdHNfXyA9ICgnX2lwJywgJ19fd2Vha3JlZl9fJykKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKIAogICAgICAgICAiIiIKQEAgLTEyMTcsOSArMTI2NCw2IEBACiAgICAgICAgICAgICBBZGRyZXNzVmFsdWVFcnJvcjogSWYgaXBhZGRyZXNzIGlzbid0IGEgdmFsaWQgSVB2NCBhZGRyZXNzLgogCiAgICAgICAgICIiIgotICAgICAgICBfQmFzZUFkZHJlc3MuX19pbml0X18oc2VsZiwgYWRkcmVzcykKLSAgICAgICAgX0Jhc2VWNC5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQotCiAgICAgICAgICMgRWZmaWNpZW50IGNvbnN0cnVjdG9yIGZyb20gaW50ZWdlci4KICAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBpbnQpOgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfaW50X2FkZHJlc3MoYWRkcmVzcykKQEAgLTEyMzUsNiArMTI3OSw4IEBACiAgICAgICAgICMgQXNzdW1lIGlucHV0IGFyZ3VtZW50IHRvIGJlIHN0cmluZyBvciBhbnkgb2JqZWN0IHJlcHJlc2VudGF0aW9uCiAgICAgICAgICMgd2hpY2ggY29udmVydHMgaW50byBhIGZvcm1hdHRlZCBJUCBzdHJpbmcuCiAgICAgICAgIGFkZHJfc3RyID0gc3RyKGFkZHJlc3MpCisgICAgICAgIGlmICcvJyBpbiBhZGRyX3N0cjoKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCJVbmV4cGVjdGVkICcvJyBpbiAlciIgJSBhZGRyZXNzKQogICAgICAgICBzZWxmLl9pcCA9IHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhhZGRyX3N0cikKIAogICAgIEBwcm9wZXJ0eQpAQCAtMTI1MSw4ICsxMjk3LDcgQEAKICAgICAgICAgICAgICByZXNlcnZlZCBJUHY0IE5ldHdvcmsgcmFuZ2UuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHJlc2VydmVkX25ldHdvcmsgPSBJUHY0TmV0d29yaygnMjQwLjAuMC4wLzQnKQotICAgICAgICByZXR1cm4gc2VsZiBpbiByZXNlcnZlZF9uZXR3b3JrCisgICAgICAgIHJldHVybiBzZWxmIGluIHNlbGYuX2NvbnN0YW50cy5fcmVzZXJ2ZWRfbmV0d29yawogCiAgICAgQHByb3BlcnR5CiAgICAgQGZ1bmN0b29scy5scnVfY2FjaGUoKQpAQCAtMTI2NCwyMSArMTMwOSw3IEBACiAgICAgICAgICAgICBpYW5hLWlwdjQtc3BlY2lhbC1yZWdpc3RyeS4KIAogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIChzZWxmIGluIElQdjROZXR3b3JrKCcwLjAuMC4wLzgnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2NE5ldHdvcmsoJzEwLjAuMC4wLzgnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2NE5ldHdvcmsoJzEyNy4wLjAuMC84Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjROZXR3b3JrKCcxNjkuMjU0LjAuMC8xNicpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMTcyLjE2LjAuMC8xMicpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMTkyLjAuMC4wLzI5Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjROZXR3b3JrKCcxOTIuMC4wLjE3MC8zMScpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjROZXR3b3JrKCcxOTIuMTY4LjAuMC8xNicpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMTk4LjE4LjAuMC8xNScpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMTk4LjUxLjEwMC4wLzI0Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjROZXR3b3JrKCcyMDMuMC4xMTMuMC8yNCcpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMjQwLjAuMC4wLzQnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2NE5ldHdvcmsoJzI1NS4yNTUuMjU1LjI1NS8zMicpKQotCisgICAgICAgIHJldHVybiBhbnkoc2VsZiBpbiBuZXQgZm9yIG5ldCBpbiBzZWxmLl9jb25zdGFudHMuX3ByaXZhdGVfbmV0d29ya3MpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfbXVsdGljYXN0KHNlbGYpOgpAQCAtMTI4OSw4ICsxMzIwLDcgQEAKICAgICAgICAgICAgIFNlZSBSRkMgMzE3MSBmb3IgZGV0YWlscy4KIAogICAgICAgICAiIiIKLSAgICAgICAgbXVsdGljYXN0X25ldHdvcmsgPSBJUHY0TmV0d29yaygnMjI0LjAuMC4wLzQnKQotICAgICAgICByZXR1cm4gc2VsZiBpbiBtdWx0aWNhc3RfbmV0d29yaworICAgICAgICByZXR1cm4gc2VsZiBpbiBzZWxmLl9jb25zdGFudHMuX211bHRpY2FzdF9uZXR3b3JrCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfdW5zcGVjaWZpZWQoc2VsZik6CkBAIC0xMzAxLDggKzEzMzEsNyBAQAogICAgICAgICAgICAgUkZDIDU3MzUgMy4KIAogICAgICAgICAiIiIKLSAgICAgICAgdW5zcGVjaWZpZWRfYWRkcmVzcyA9IElQdjRBZGRyZXNzKCcwLjAuMC4wJykKLSAgICAgICAgcmV0dXJuIHNlbGYgPT0gdW5zcGVjaWZpZWRfYWRkcmVzcworICAgICAgICByZXR1cm4gc2VsZiA9PSBzZWxmLl9jb25zdGFudHMuX3Vuc3BlY2lmaWVkX2FkZHJlc3MKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpc19sb29wYmFjayhzZWxmKToKQEAgLTEzMTIsOCArMTM0MSw3IEBACiAgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgYSBsb29wYmFjayBwZXIgUkZDIDMzMzAuCiAKICAgICAgICAgIiIiCi0gICAgICAgIGxvb3BiYWNrX25ldHdvcmsgPSBJUHY0TmV0d29yaygnMTI3LjAuMC4wLzgnKQotICAgICAgICByZXR1cm4gc2VsZiBpbiBsb29wYmFja19uZXR3b3JrCisgICAgICAgIHJldHVybiBzZWxmIGluIHNlbGYuX2NvbnN0YW50cy5fbG9vcGJhY2tfbmV0d29yawogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX2xpbmtfbG9jYWwoc2VsZik6CkBAIC0xMzIzLDggKzEzNTEsNyBAQAogICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGxpbmstbG9jYWwgcGVyIFJGQyAzOTI3LgogCiAgICAgICAgICIiIgotICAgICAgICBsaW5rbG9jYWxfbmV0d29yayA9IElQdjROZXR3b3JrKCcxNjkuMjU0LjAuMC8xNicpCi0gICAgICAgIHJldHVybiBzZWxmIGluIGxpbmtsb2NhbF9uZXR3b3JrCisgICAgICAgIHJldHVybiBzZWxmIGluIHNlbGYuX2NvbnN0YW50cy5fbGlua2xvY2FsX25ldHdvcmsKIAogCiBjbGFzcyBJUHY0SW50ZXJmYWNlKElQdjRBZGRyZXNzKToKQEAgLTEzMzYsNiArMTM2MywxOCBAQAogICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCB0dXBsZSk6CisgICAgICAgICAgICBJUHY0QWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyZXNzWzBdKQorICAgICAgICAgICAgaWYgbGVuKGFkZHJlc3MpID4gMToKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBpbnQoYWRkcmVzc1sxXSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorCisgICAgICAgICAgICBzZWxmLm5ldHdvcmsgPSBJUHY0TmV0d29yayhhZGRyZXNzLCBzdHJpY3Q9RmFsc2UpCisgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBzZWxmLm5ldHdvcmsubmV0bWFzaworICAgICAgICAgICAgc2VsZi5ob3N0bWFzayA9IHNlbGYubmV0d29yay5ob3N0bWFzaworICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgYWRkciA9IF9zcGxpdF9vcHRpb25hbF9uZXRtYXNrKGFkZHJlc3MpCiAgICAgICAgIElQdjRBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJbMF0pCiAKQEAgLTEzNzUsNiArMTQxNCw4IEBACiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5faXAgXiBzZWxmLl9wcmVmaXhsZW4gXiBpbnQoc2VsZi5uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcykKIAorICAgIF9fcmVkdWNlX18gPSBfSVBBZGRyZXNzQmFzZS5fX3JlZHVjZV9fCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgaXAoc2VsZik6CiAgICAgICAgIHJldHVybiBJUHY0QWRkcmVzcyhzZWxmLl9pcCkKQEAgLTE0NDcsMjQgKzE0ODgsMzAgQEAKICAgICAgICAgICAgICAgc3VwcGxpZWQuCiAKICAgICAgICAgIiIiCi0KLSAgICAgICAgX0Jhc2VWNC5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQogICAgICAgICBfQmFzZU5ldHdvcmsuX19pbml0X18oc2VsZiwgYWRkcmVzcykKIAotICAgICAgICAjIENvbnN0cnVjdGluZyBmcm9tIGEgcGFja2VkIGFkZHJlc3MKLSAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBieXRlcyk6CisgICAgICAgICMgQ29uc3RydWN0aW5nIGZyb20gYSBwYWNrZWQgYWRkcmVzcyBvciBpbnRlZ2VyCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgKGludCwgYnl0ZXMpKToKICAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NEFkZHJlc3MoYWRkcmVzcykKLSAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KLSAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjRBZGRyZXNzKHNlbGYuX0FMTF9PTkVTKQotICAgICAgICAgICAgI2ZpeG1lOiBhZGRyZXNzL25ldHdvcmsgdGVzdCBoZXJlCisgICAgICAgICAgICBzZWxmLm5ldG1hc2ssIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21ha2VfbmV0bWFzayhzZWxmLl9tYXhfcHJlZml4bGVuKQorICAgICAgICAgICAgI2ZpeG1lOiBhZGRyZXNzL25ldHdvcmsgdGVzdCBoZXJlLgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgIyBFZmZpY2llbnQgY29uc3RydWN0b3IgZnJvbSBpbnRlZ2VyLgotICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGludCk6Ci0gICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjRBZGRyZXNzKGFkZHJlc3MpCi0gICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCi0gICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY0QWRkcmVzcyhzZWxmLl9BTExfT05FUykKLSAgICAgICAgICAgICNmaXhtZTogYWRkcmVzcy9uZXR3b3JrIHRlc3QgaGVyZS4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCB0dXBsZSk6CisgICAgICAgICAgICBpZiBsZW4oYWRkcmVzcykgPiAxOgorICAgICAgICAgICAgICAgIGFyZyA9IGFkZHJlc3NbMV0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBXZSB3ZXJlbid0IGdpdmVuIGFuIGFkZHJlc3NbMV0KKyAgICAgICAgICAgICAgICBhcmcgPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjRBZGRyZXNzKGFkZHJlc3NbMF0pCisgICAgICAgICAgICBzZWxmLm5ldG1hc2ssIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21ha2VfbmV0bWFzayhhcmcpCisgICAgICAgICAgICBwYWNrZWQgPSBpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpCisgICAgICAgICAgICBpZiBwYWNrZWQgJiBpbnQoc2VsZi5uZXRtYXNrKSAhPSBwYWNrZWQ6CisgICAgICAgICAgICAgICAgaWYgc3RyaWN0OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCclcyBoYXMgaG9zdCBiaXRzIHNldCcgJSBzZWxmKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NEFkZHJlc3MocGFja2VkICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5uZXRtYXNrKSkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICMgQXNzdW1lIGlucHV0IGFyZ3VtZW50IHRvIGJlIHN0cmluZyBvciBhbnkgb2JqZWN0IHJlcHJlc2VudGF0aW9uCkBAIC0xNDczLDE2ICsxNTIwLDEwIEBACiAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NEFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fc3RyaW5nKGFkZHJbMF0pKQogCiAgICAgICAgIGlmIGxlbihhZGRyKSA9PSAyOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICMgQ2hlY2sgZm9yIGEgbmV0bWFzayBpbiBwcmVmaXggbGVuZ3RoIGZvcm0KLSAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9wcmVmaXhfZnJvbV9wcmVmaXhfc3RyaW5nKGFkZHJbMV0pCi0gICAgICAgICAgICBleGNlcHQgTmV0bWFza1ZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBDaGVjayBmb3IgYSBuZXRtYXNrIG9yIGhvc3RtYXNrIGluIGRvdHRlZC1xdWFkIGZvcm0uCi0gICAgICAgICAgICAgICAgIyBUaGlzIG1heSByYWlzZSBOZXRtYXNrVmFsdWVFcnJvci4KLSAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9wcmVmaXhfZnJvbV9pcF9zdHJpbmcoYWRkclsxXSkKKyAgICAgICAgICAgIGFyZyA9IGFkZHJbMV0KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KLSAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NEFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fcHJlZml4KHNlbGYuX3ByZWZpeGxlbikpCisgICAgICAgICAgICBhcmcgPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgIHNlbGYubmV0bWFzaywgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWFrZV9uZXRtYXNrKGFyZykKIAogICAgICAgICBpZiBzdHJpY3Q6CiAgICAgICAgICAgICBpZiAoSVB2NEFkZHJlc3MoaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSAmIGludChzZWxmLm5ldG1hc2spKSAhPQpAQCAtMTUwOSw2ICsxNTUwLDM3IEBACiAgICAgICAgICAgICAgICAgbm90IHNlbGYuaXNfcHJpdmF0ZSkKIAogCitjbGFzcyBfSVB2NENvbnN0YW50czoKKyAgICBfbGlua2xvY2FsX25ldHdvcmsgPSBJUHY0TmV0d29yaygnMTY5LjI1NC4wLjAvMTYnKQorCisgICAgX2xvb3BiYWNrX25ldHdvcmsgPSBJUHY0TmV0d29yaygnMTI3LjAuMC4wLzgnKQorCisgICAgX211bHRpY2FzdF9uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzIyNC4wLjAuMC80JykKKworICAgIF9wcml2YXRlX25ldHdvcmtzID0gWworICAgICAgICBJUHY0TmV0d29yaygnMC4wLjAuMC84JyksCisgICAgICAgIElQdjROZXR3b3JrKCcxMC4wLjAuMC84JyksCisgICAgICAgIElQdjROZXR3b3JrKCcxMjcuMC4wLjAvOCcpLAorICAgICAgICBJUHY0TmV0d29yaygnMTY5LjI1NC4wLjAvMTYnKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzE3Mi4xNi4wLjAvMTInKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjAuMC8yOScpLAorICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMC4xNzAvMzEnKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpLAorICAgICAgICBJUHY0TmV0d29yaygnMTkyLjE2OC4wLjAvMTYnKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzE5OC4xOC4wLjAvMTUnKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzE5OC41MS4xMDAuMC8yNCcpLAorICAgICAgICBJUHY0TmV0d29yaygnMjAzLjAuMTEzLjAvMjQnKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzI0MC4wLjAuMC80JyksCisgICAgICAgIElQdjROZXR3b3JrKCcyNTUuMjU1LjI1NS4yNTUvMzInKSwKKyAgICAgICAgXQorCisgICAgX3Jlc2VydmVkX25ldHdvcmsgPSBJUHY0TmV0d29yaygnMjQwLjAuMC4wLzQnKQorCisgICAgX3Vuc3BlY2lmaWVkX2FkZHJlc3MgPSBJUHY0QWRkcmVzcygnMC4wLjAuMCcpCisKKworSVB2NEFkZHJlc3MuX2NvbnN0YW50cyA9IF9JUHY0Q29uc3RhbnRzCisKIAogY2xhc3MgX0Jhc2VWNjoKIApAQCAtMTUxOSwxNSArMTU5MSwzNyBAQAogCiAgICAgIiIiCiAKKyAgICBfX3Nsb3RzX18gPSAoKQorICAgIF92ZXJzaW9uID0gNgogICAgIF9BTExfT05FUyA9ICgyKipJUFY2TEVOR1RIKSAtIDEKICAgICBfSEVYVEVUX0NPVU5UID0gOAogICAgIF9IRVhfRElHSVRTID0gZnJvemVuc2V0KCcwMTIzNDU2Nzg5QUJDREVGYWJjZGVmJykKKyAgICBfbWF4X3ByZWZpeGxlbiA9IElQVjZMRU5HVEgKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKLSAgICAgICAgc2VsZi5fdmVyc2lvbiA9IDYKLSAgICAgICAgc2VsZi5fbWF4X3ByZWZpeGxlbiA9IElQVjZMRU5HVEgKKyAgICAjIFRoZXJlIGFyZSBvbmx5IGEgYnVuY2ggb2YgdmFsaWQgdjYgbmV0bWFza3MsIHNvIHdlIGNhY2hlIHRoZW0gYWxsCisgICAgIyB3aGVuIGNvbnN0cnVjdGVkIChzZWUgX21ha2VfbmV0bWFzaygpKS4KKyAgICBfbmV0bWFza19jYWNoZSA9IHt9CiAKLSAgICBkZWYgX2lwX2ludF9mcm9tX3N0cmluZyhzZWxmLCBpcF9zdHIpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfbWFrZV9uZXRtYXNrKGNscywgYXJnKToKKyAgICAgICAgIiIiTWFrZSBhIChuZXRtYXNrLCBwcmVmaXhfbGVuKSB0dXBsZSBmcm9tIHRoZSBnaXZlbiBhcmd1bWVudC4KKworICAgICAgICBBcmd1bWVudCBjYW4gYmU6CisgICAgICAgIC0gYW4gaW50ZWdlciAodGhlIHByZWZpeCBsZW5ndGgpCisgICAgICAgIC0gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwcmVmaXggbGVuZ3RoIChlLmcuICIyNCIpCisgICAgICAgIC0gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwcmVmaXggbmV0bWFzayAoZS5nLiAiMjU1LjI1NS4yNTUuMCIpCisgICAgICAgICIiIgorICAgICAgICBpZiBhcmcgbm90IGluIGNscy5fbmV0bWFza19jYWNoZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJnLCBpbnQpOgorICAgICAgICAgICAgICAgIHByZWZpeGxlbiA9IGFyZworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmVmaXhsZW4gPSBjbHMuX3ByZWZpeF9mcm9tX3ByZWZpeF9zdHJpbmcoYXJnKQorICAgICAgICAgICAgbmV0bWFzayA9IElQdjZBZGRyZXNzKGNscy5faXBfaW50X2Zyb21fcHJlZml4KHByZWZpeGxlbikpCisgICAgICAgICAgICBjbHMuX25ldG1hc2tfY2FjaGVbYXJnXSA9IG5ldG1hc2ssIHByZWZpeGxlbgorICAgICAgICByZXR1cm4gY2xzLl9uZXRtYXNrX2NhY2hlW2FyZ10KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfaXBfaW50X2Zyb21fc3RyaW5nKGNscywgaXBfc3RyKToKICAgICAgICAgIiIiVHVybiBhbiBJUHY2IGlwX3N0ciBpbnRvIGFuIGludGVnZXIuCiAKICAgICAgICAgQXJnczoKQEAgLTE1NjMsNyArMTY1Nyw3IEBACiAgICAgICAgICMgQW4gSVB2NiBhZGRyZXNzIGNhbid0IGhhdmUgbW9yZSB0aGFuIDggY29sb25zICg5IHBhcnRzKS4KICAgICAgICAgIyBUaGUgZXh0cmEgY29sb24gY29tZXMgZnJvbSB1c2luZyB0aGUgIjo6IiBub3RhdGlvbiBmb3IgYSBzaW5nbGUKICAgICAgICAgIyBsZWFkaW5nIG9yIHRyYWlsaW5nIHplcm8gcGFydC4KLSAgICAgICAgX21heF9wYXJ0cyA9IHNlbGYuX0hFWFRFVF9DT1VOVCArIDEKKyAgICAgICAgX21heF9wYXJ0cyA9IGNscy5fSEVYVEVUX0NPVU5UICsgMQogICAgICAgICBpZiBsZW4ocGFydHMpID4gX21heF9wYXJ0czoKICAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0ICVkIGNvbG9ucyBwZXJtaXR0ZWQgaW4gJXIiICUgKF9tYXhfcGFydHMtMSwgaXBfc3RyKQogICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnKQpAQCAtMTU5NSwxNyArMTY4OSwxNyBAQAogICAgICAgICAgICAgICAgIGlmIHBhcnRzX2xvOgogICAgICAgICAgICAgICAgICAgICBtc2cgPSAiVHJhaWxpbmcgJzonIG9ubHkgcGVybWl0dGVkIGFzIHBhcnQgb2YgJzo6JyBpbiAlciIKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgaXBfc3RyKSAgIyA6JCByZXF1aXJlcyA6OiQKLSAgICAgICAgICAgIHBhcnRzX3NraXBwZWQgPSBzZWxmLl9IRVhURVRfQ09VTlQgLSAocGFydHNfaGkgKyBwYXJ0c19sbykKKyAgICAgICAgICAgIHBhcnRzX3NraXBwZWQgPSBjbHMuX0hFWFRFVF9DT1VOVCAtIChwYXJ0c19oaSArIHBhcnRzX2xvKQogICAgICAgICAgICAgaWYgcGFydHNfc2tpcHBlZCA8IDE6CiAgICAgICAgICAgICAgICAgbXNnID0gIkV4cGVjdGVkIGF0IG1vc3QgJWQgb3RoZXIgcGFydHMgd2l0aCAnOjonIGluICVyIgotICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIChzZWxmLl9IRVhURVRfQ09VTlQtMSwgaXBfc3RyKSkKKyAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSAoY2xzLl9IRVhURVRfQ09VTlQtMSwgaXBfc3RyKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgT3RoZXJ3aXNlLCBhbGxvY2F0ZSB0aGUgZW50aXJlIGFkZHJlc3MgdG8gcGFydHNfaGkuICBUaGUKICAgICAgICAgICAgICMgZW5kcG9pbnRzIGNvdWxkIHN0aWxsIGJlIGVtcHR5LCBidXQgX3BhcnNlX2hleHRldCgpIHdpbGwgY2hlY2sKICAgICAgICAgICAgICMgZm9yIHRoYXQuCi0gICAgICAgICAgICBpZiBsZW4ocGFydHMpICE9IHNlbGYuX0hFWFRFVF9DT1VOVDoKKyAgICAgICAgICAgIGlmIGxlbihwYXJ0cykgIT0gY2xzLl9IRVhURVRfQ09VTlQ6CiAgICAgICAgICAgICAgICAgbXNnID0gIkV4YWN0bHkgJWQgcGFydHMgZXhwZWN0ZWQgd2l0aG91dCAnOjonIGluICVyIgotICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIChzZWxmLl9IRVhURVRfQ09VTlQsIGlwX3N0cikpCisgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgKGNscy5fSEVYVEVUX0NPVU5ULCBpcF9zdHIpKQogICAgICAgICAgICAgaWYgbm90IHBhcnRzWzBdOgogICAgICAgICAgICAgICAgIG1zZyA9ICJMZWFkaW5nICc6JyBvbmx5IHBlcm1pdHRlZCBhcyBwYXJ0IG9mICc6OicgaW4gJXIiCiAgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgaXBfc3RyKSAgIyBeOiByZXF1aXJlcyBeOjoKQEAgLTE2MjEsMTYgKzE3MTUsMTcgQEAKICAgICAgICAgICAgIGlwX2ludCA9IDAKICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHBhcnRzX2hpKToKICAgICAgICAgICAgICAgICBpcF9pbnQgPDw9IDE2Ci0gICAgICAgICAgICAgICAgaXBfaW50IHw9IHNlbGYuX3BhcnNlX2hleHRldChwYXJ0c1tpXSkKKyAgICAgICAgICAgICAgICBpcF9pbnQgfD0gY2xzLl9wYXJzZV9oZXh0ZXQocGFydHNbaV0pCiAgICAgICAgICAgICBpcF9pbnQgPDw9IDE2ICogcGFydHNfc2tpcHBlZAogICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLXBhcnRzX2xvLCAwKToKICAgICAgICAgICAgICAgICBpcF9pbnQgPDw9IDE2Ci0gICAgICAgICAgICAgICAgaXBfaW50IHw9IHNlbGYuX3BhcnNlX2hleHRldChwYXJ0c1tpXSkKKyAgICAgICAgICAgICAgICBpcF9pbnQgfD0gY2xzLl9wYXJzZV9oZXh0ZXQocGFydHNbaV0pCiAgICAgICAgICAgICByZXR1cm4gaXBfaW50CiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCIlcyBpbiAlciIgJSAoZXhjLCBpcF9zdHIpKSBmcm9tIE5vbmUKIAotICAgIGRlZiBfcGFyc2VfaGV4dGV0KHNlbGYsIGhleHRldF9zdHIpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcGFyc2VfaGV4dGV0KGNscywgaGV4dGV0X3N0cik6CiAgICAgICAgICIiIkNvbnZlcnQgYW4gSVB2NiBoZXh0ZXQgc3RyaW5nIGludG8gYW4gaW50ZWdlci4KIAogICAgICAgICBBcmdzOgpAQCAtMTY0NSw3ICsxNzQwLDcgQEAKIAogICAgICAgICAiIiIKICAgICAgICAgIyBXaGl0ZWxpc3QgdGhlIGNoYXJhY3RlcnMsIHNpbmNlIGludCgpIGFsbG93cyBhIGxvdCBvZiBiaXphcnJlIHN0dWZmLgotICAgICAgICBpZiBub3Qgc2VsZi5fSEVYX0RJR0lUUy5pc3N1cGVyc2V0KGhleHRldF9zdHIpOgorICAgICAgICBpZiBub3QgY2xzLl9IRVhfRElHSVRTLmlzc3VwZXJzZXQoaGV4dGV0X3N0cik6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJPbmx5IGhleCBkaWdpdHMgcGVybWl0dGVkIGluICVyIiAlIGhleHRldF9zdHIpCiAgICAgICAgICMgV2UgZG8gdGhlIGxlbmd0aCBjaGVjayBzZWNvbmQsIHNpbmNlIHRoZSBpbnZhbGlkIGNoYXJhY3RlciBlcnJvcgogICAgICAgICAjIGlzIGxpa2VseSB0byBiZSBtb3JlIGluZm9ybWF0aXZlIGZvciB0aGUgdXNlcgpAQCAtMTY1NSw3ICsxNzUwLDggQEAKICAgICAgICAgIyBMZW5ndGggY2hlY2sgbWVhbnMgd2UgY2FuIHNraXAgY2hlY2tpbmcgdGhlIGludGVnZXIgdmFsdWUKICAgICAgICAgcmV0dXJuIGludChoZXh0ZXRfc3RyLCAxNikKIAotICAgIGRlZiBfY29tcHJlc3NfaGV4dGV0cyhzZWxmLCBoZXh0ZXRzKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2NvbXByZXNzX2hleHRldHMoY2xzLCBoZXh0ZXRzKToKICAgICAgICAgIiIiQ29tcHJlc3NlcyBhIGxpc3Qgb2YgaGV4dGV0cy4KIAogICAgICAgICBDb21wcmVzc2VzIGEgbGlzdCBvZiBzdHJpbmdzLCByZXBsYWNpbmcgdGhlIGxvbmdlc3QgY29udGludW91cwpAQCAtMTcwMiw3ICsxNzk4LDggQEAKIAogICAgICAgICByZXR1cm4gaGV4dGV0cwogCi0gICAgZGVmIF9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZiwgaXBfaW50PU5vbmUpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfc3RyaW5nX2Zyb21faXBfaW50KGNscywgaXBfaW50PU5vbmUpOgogICAgICAgICAiIiJUdXJucyBhIDEyOC1iaXQgaW50ZWdlciBpbnRvIGhleGFkZWNpbWFsIG5vdGF0aW9uLgogCiAgICAgICAgIEFyZ3M6CkBAIC0xNzE2LDE1ICsxODEzLDE1IEBACiAKICAgICAgICAgIiIiCiAgICAgICAgIGlmIGlwX2ludCBpcyBOb25lOgotICAgICAgICAgICAgaXBfaW50ID0gaW50KHNlbGYuX2lwKQorICAgICAgICAgICAgaXBfaW50ID0gaW50KGNscy5faXApCiAKLSAgICAgICAgaWYgaXBfaW50ID4gc2VsZi5fQUxMX09ORVM6CisgICAgICAgIGlmIGlwX2ludCA+IGNscy5fQUxMX09ORVM6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJUHY2IGFkZHJlc3MgaXMgdG9vIGxhcmdlJykKIAogICAgICAgICBoZXhfc3RyID0gJyUwMzJ4JyAlIGlwX2ludAogICAgICAgICBoZXh0ZXRzID0gWycleCcgJSBpbnQoaGV4X3N0clt4OngrNF0sIDE2KSBmb3IgeCBpbiByYW5nZSgwLCAzMiwgNCldCiAKLSAgICAgICAgaGV4dGV0cyA9IHNlbGYuX2NvbXByZXNzX2hleHRldHMoaGV4dGV0cykKKyAgICAgICAgaGV4dGV0cyA9IGNscy5fY29tcHJlc3NfaGV4dGV0cyhoZXh0ZXRzKQogICAgICAgICByZXR1cm4gJzonLmpvaW4oaGV4dGV0cykKIAogICAgIGRlZiBfZXhwbG9kZV9zaG9ydGhhbmRfaXBfc3RyaW5nKHNlbGYpOgpAQCAtMTc1MSw2ICsxODQ4LDE1IEBACiAgICAgICAgICAgICByZXR1cm4gJyVzLyVkJyAlICgnOicuam9pbihwYXJ0cyksIHNlbGYuX3ByZWZpeGxlbikKICAgICAgICAgcmV0dXJuICc6Jy5qb2luKHBhcnRzKQogCisgICAgZGVmIF9yZXZlcnNlX3BvaW50ZXIoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgcmV2ZXJzZSBETlMgcG9pbnRlciBuYW1lIGZvciB0aGUgSVB2NiBhZGRyZXNzLgorCisgICAgICAgIFRoaXMgaW1wbGVtZW50cyB0aGUgbWV0aG9kIGRlc2NyaWJlZCBpbiBSRkMzNTk2IDIuNS4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV2ZXJzZV9jaGFycyA9IHNlbGYuZXhwbG9kZWRbOjotMV0ucmVwbGFjZSgnOicsICcnKQorICAgICAgICByZXR1cm4gJy4nLmpvaW4ocmV2ZXJzZV9jaGFycykgKyAnLmlwNi5hcnBhJworCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIG1heF9wcmVmaXhsZW4oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9tYXhfcHJlZml4bGVuCkBAIC0xNzY0LDYgKzE4NzAsOCBAQAogCiAgICAgIiIiUmVwcmVzZW50IGFuZCBtYW5pcHVsYXRlIHNpbmdsZSBJUHY2IEFkZHJlc3Nlcy4iIiIKIAorICAgIF9fc2xvdHNfXyA9ICgnX2lwJywgJ19fd2Vha3JlZl9fJykKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKICAgICAgICAgIiIiSW5zdGFudGlhdGUgYSBuZXcgSVB2NiBhZGRyZXNzIG9iamVjdC4KIApAQCAtMTc4MSw5ICsxODg5LDYgQEAKICAgICAgICAgICAgIEFkZHJlc3NWYWx1ZUVycm9yOiBJZiBhZGRyZXNzIGlzbid0IGEgdmFsaWQgSVB2NiBhZGRyZXNzLgogCiAgICAgICAgICIiIgotICAgICAgICBfQmFzZUFkZHJlc3MuX19pbml0X18oc2VsZiwgYWRkcmVzcykKLSAgICAgICAgX0Jhc2VWNi5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQotCiAgICAgICAgICMgRWZmaWNpZW50IGNvbnN0cnVjdG9yIGZyb20gaW50ZWdlci4KICAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBpbnQpOgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfaW50X2FkZHJlc3MoYWRkcmVzcykKQEAgLTE3OTksNiArMTkwNCw4IEBACiAgICAgICAgICMgQXNzdW1lIGlucHV0IGFyZ3VtZW50IHRvIGJlIHN0cmluZyBvciBhbnkgb2JqZWN0IHJlcHJlc2VudGF0aW9uCiAgICAgICAgICMgd2hpY2ggY29udmVydHMgaW50byBhIGZvcm1hdHRlZCBJUCBzdHJpbmcuCiAgICAgICAgIGFkZHJfc3RyID0gc3RyKGFkZHJlc3MpCisgICAgICAgIGlmICcvJyBpbiBhZGRyX3N0cjoKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCJVbmV4cGVjdGVkICcvJyBpbiAlciIgJSBhZGRyZXNzKQogICAgICAgICBzZWxmLl9pcCA9IHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhhZGRyX3N0cikKIAogICAgIEBwcm9wZXJ0eQpAQCAtMTgxNSw4ICsxOTIyLDcgQEAKICAgICAgICAgICAgIFNlZSBSRkMgMjM3MyAyLjcgZm9yIGRldGFpbHMuCiAKICAgICAgICAgIiIiCi0gICAgICAgIG11bHRpY2FzdF9uZXR3b3JrID0gSVB2Nk5ldHdvcmsoJ2ZmMDA6Oi84JykKLSAgICAgICAgcmV0dXJuIHNlbGYgaW4gbXVsdGljYXN0X25ldHdvcmsKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gc2VsZi5fY29uc3RhbnRzLl9tdWx0aWNhc3RfbmV0d29yawogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX3Jlc2VydmVkKHNlbGYpOgpAQCAtMTgyNywxNiArMTkzMyw3IEBACiAgICAgICAgICAgICByZXNlcnZlZCBJUHY2IE5ldHdvcmsgcmFuZ2VzLgogCiAgICAgICAgICIiIgotICAgICAgICByZXNlcnZlZF9uZXR3b3JrcyA9IFtJUHY2TmV0d29yaygnOjovOCcpLCBJUHY2TmV0d29yaygnMTAwOjovOCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwOjovNycpLCBJUHY2TmV0d29yaygnNDAwOjovNicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnODAwOjovNScpLCBJUHY2TmV0d29yaygnMTAwMDo6LzQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzQwMDA6Oi8zJyksIElQdjZOZXR3b3JrKCc2MDAwOjovMycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnODAwMDo6LzMnKSwgSVB2Nk5ldHdvcmsoJ0EwMDA6Oi8zJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCdDMDAwOjovMycpLCBJUHY2TmV0d29yaygnRTAwMDo6LzQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJ0YwMDA6Oi81JyksIElQdjZOZXR3b3JrKCdGODAwOjovNicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnRkUwMDo6LzknKV0KLQotICAgICAgICByZXR1cm4gYW55KHNlbGYgaW4geCBmb3IgeCBpbiByZXNlcnZlZF9uZXR3b3JrcykKKyAgICAgICAgcmV0dXJuIGFueShzZWxmIGluIHggZm9yIHggaW4gc2VsZi5fY29uc3RhbnRzLl9yZXNlcnZlZF9uZXR3b3JrcykKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpc19saW5rX2xvY2FsKHNlbGYpOgpAQCAtMTg0Niw4ICsxOTQzLDcgQEAKICAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDQyOTEuCiAKICAgICAgICAgIiIiCi0gICAgICAgIGxpbmtsb2NhbF9uZXR3b3JrID0gSVB2Nk5ldHdvcmsoJ2ZlODA6Oi8xMCcpCi0gICAgICAgIHJldHVybiBzZWxmIGluIGxpbmtsb2NhbF9uZXR3b3JrCisgICAgICAgIHJldHVybiBzZWxmIGluIHNlbGYuX2NvbnN0YW50cy5fbGlua2xvY2FsX25ldHdvcmsKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpc19zaXRlX2xvY2FsKHNlbGYpOgpAQCAtMTg2MSw4ICsxOTU3LDcgQEAKICAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDM1MTMgMi41LjYuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHNpdGVsb2NhbF9uZXR3b3JrID0gSVB2Nk5ldHdvcmsoJ2ZlYzA6Oi8xMCcpCi0gICAgICAgIHJldHVybiBzZWxmIGluIHNpdGVsb2NhbF9uZXR3b3JrCisgICAgICAgIHJldHVybiBzZWxmIGluIHNlbGYuX2NvbnN0YW50cy5fc2l0ZWxvY2FsX25ldHdvcmsKIAogICAgIEBwcm9wZXJ0eQogICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKCkKQEAgLTE4NzQsMTYgKzE5NjksNyBAQAogICAgICAgICAgICAgaWFuYS1pcHY2LXNwZWNpYWwtcmVnaXN0cnkuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiAoc2VsZiBpbiBJUHY2TmV0d29yaygnOjoxLzEyOCcpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY2TmV0d29yaygnOjovMTI4Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjZOZXR3b3JrKCc6OmZmZmY6MDowLzk2Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjZOZXR3b3JrKCcxMDA6Oi82NCcpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY2TmV0d29yaygnMjAwMTo6LzIzJykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjZOZXR3b3JrKCcyMDAxOjI6Oi80OCcpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi8zMicpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY2TmV0d29yaygnMjAwMToxMDo6LzI4Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjZOZXR3b3JrKCdmYzAwOjovNycpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY2TmV0d29yaygnZmU4MDo6LzEwJykpCisgICAgICAgIHJldHVybiBhbnkoc2VsZiBpbiBuZXQgZm9yIG5ldCBpbiBzZWxmLl9jb25zdGFudHMuX3ByaXZhdGVfbmV0d29ya3MpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfZ2xvYmFsKHNlbGYpOgpAQCAtMTk2OCw2ICsyMDU0LDE2IEBACiAgICAgICAgICAgICBzZWxmLm5ldHdvcmsgPSBJUHY2TmV0d29yayhzZWxmLl9pcCkKICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KICAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIHR1cGxlKToKKyAgICAgICAgICAgIElQdjZBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJlc3NbMF0pCisgICAgICAgICAgICBpZiBsZW4oYWRkcmVzcykgPiAxOgorICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IGludChhZGRyZXNzWzFdKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICBzZWxmLm5ldHdvcmsgPSBJUHY2TmV0d29yayhhZGRyZXNzLCBzdHJpY3Q9RmFsc2UpCisgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBzZWxmLm5ldHdvcmsubmV0bWFzaworICAgICAgICAgICAgc2VsZi5ob3N0bWFzayA9IHNlbGYubmV0d29yay5ob3N0bWFzaworICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgYWRkciA9IF9zcGxpdF9vcHRpb25hbF9uZXRtYXNrKGFkZHJlc3MpCiAgICAgICAgIElQdjZBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJbMF0pCkBAIC0yMDA2LDYgKzIxMDIsOCBAQAogICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2lwIF4gc2VsZi5fcHJlZml4bGVuIF4gaW50KHNlbGYubmV0d29yay5uZXR3b3JrX2FkZHJlc3MpCiAKKyAgICBfX3JlZHVjZV9fID0gX0lQQWRkcmVzc0Jhc2UuX19yZWR1Y2VfXworCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlwKHNlbGYpOgogICAgICAgICByZXR1cm4gSVB2NkFkZHJlc3Moc2VsZi5faXApCkBAIC0yMDgyLDIxICsyMTgwLDI4IEBACiAgICAgICAgICAgICAgIHN1cHBsaWVkLgogCiAgICAgICAgICIiIgotICAgICAgICBfQmFzZVY2Ll9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCiAgICAgICAgIF9CYXNlTmV0d29yay5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQogCi0gICAgICAgICMgRWZmaWNpZW50IGNvbnN0cnVjdG9yIGZyb20gaW50ZWdlci4KLSAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBpbnQpOgorICAgICAgICAjIEVmZmljaWVudCBjb25zdHJ1Y3RvciBmcm9tIGludGVnZXIgb3IgcGFja2VkIGFkZHJlc3MKKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCAoYnl0ZXMsIGludCkpOgogICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY2QWRkcmVzcyhhZGRyZXNzKQotICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgotICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NkFkZHJlc3Moc2VsZi5fQUxMX09ORVMpCisgICAgICAgICAgICBzZWxmLm5ldG1hc2ssIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21ha2VfbmV0bWFzayhzZWxmLl9tYXhfcHJlZml4bGVuKQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgIyBDb25zdHJ1Y3RpbmcgZnJvbSBhIHBhY2tlZCBhZGRyZXNzCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgYnl0ZXMpOgotICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY2QWRkcmVzcyhhZGRyZXNzKQotICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgotICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NkFkZHJlc3Moc2VsZi5fQUxMX09ORVMpCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgdHVwbGUpOgorICAgICAgICAgICAgaWYgbGVuKGFkZHJlc3MpID4gMToKKyAgICAgICAgICAgICAgICBhcmcgPSBhZGRyZXNzWzFdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFyZyA9IHNlbGYuX21heF9wcmVmaXhsZW4KKyAgICAgICAgICAgIHNlbGYubmV0bWFzaywgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWFrZV9uZXRtYXNrKGFyZykKKyAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NkFkZHJlc3MoYWRkcmVzc1swXSkKKyAgICAgICAgICAgIHBhY2tlZCA9IGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykKKyAgICAgICAgICAgIGlmIHBhY2tlZCAmIGludChzZWxmLm5ldG1hc2spICE9IHBhY2tlZDoKKyAgICAgICAgICAgICAgICBpZiBzdHJpY3Q6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJyVzIGhhcyBob3N0IGJpdHMgc2V0JyAlIHNlbGYpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY2QWRkcmVzcyhwYWNrZWQgJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludChzZWxmLm5ldG1hc2spKQogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgIyBBc3N1bWUgaW5wdXQgYXJndW1lbnQgdG8gYmUgc3RyaW5nIG9yIGFueSBvYmplY3QgcmVwcmVzZW50YXRpb24KQEAgLTIxMDYsMTIgKzIyMTEsMTEgQEAKICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY2QWRkcmVzcyhzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoYWRkclswXSkpCiAKICAgICAgICAgaWYgbGVuKGFkZHIpID09IDI6Ci0gICAgICAgICAgICAjIFRoaXMgbWF5IHJhaXNlIE5ldG1hc2tWYWx1ZUVycm9yCi0gICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9wcmVmaXhfZnJvbV9wcmVmaXhfc3RyaW5nKGFkZHJbMV0pCisgICAgICAgICAgICBhcmcgPSBhZGRyWzFdCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICBhcmcgPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgIHNlbGYubmV0bWFzaywgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWFrZV9uZXRtYXNrKGFyZykKIAotICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY2QWRkcmVzcyhzZWxmLl9pcF9pbnRfZnJvbV9wcmVmaXgoc2VsZi5fcHJlZml4bGVuKSkKICAgICAgICAgaWYgc3RyaWN0OgogICAgICAgICAgICAgaWYgKElQdjZBZGRyZXNzKGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykgJiBpbnQoc2VsZi5uZXRtYXNrKSkgIT0KICAgICAgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyk6CkBAIC0yMTQ4LDMgKzIyNTIsMzkgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrX2FkZHJlc3MuaXNfc2l0ZV9sb2NhbCBhbmQKICAgICAgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzLmlzX3NpdGVfbG9jYWwpCisKKworY2xhc3MgX0lQdjZDb25zdGFudHM6CisKKyAgICBfbGlua2xvY2FsX25ldHdvcmsgPSBJUHY2TmV0d29yaygnZmU4MDo6LzEwJykKKworICAgIF9tdWx0aWNhc3RfbmV0d29yayA9IElQdjZOZXR3b3JrKCdmZjAwOjovOCcpCisKKyAgICBfcHJpdmF0ZV9uZXR3b3JrcyA9IFsKKyAgICAgICAgSVB2Nk5ldHdvcmsoJzo6MS8xMjgnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJzo6LzEyOCcpLAorICAgICAgICBJUHY2TmV0d29yaygnOjpmZmZmOjA6MC85NicpLAorICAgICAgICBJUHY2TmV0d29yaygnMTAwOjovNjQnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6Oi8yMycpLAorICAgICAgICBJUHY2TmV0d29yaygnMjAwMToyOjovNDgnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovMzInKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6MTA6Oi8yOCcpLAorICAgICAgICBJUHY2TmV0d29yaygnZmMwMDo6LzcnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJ2ZlODA6Oi8xMCcpLAorICAgICAgICBdCisKKyAgICBfcmVzZXJ2ZWRfbmV0d29ya3MgPSBbCisgICAgICAgIElQdjZOZXR3b3JrKCc6Oi84JyksIElQdjZOZXR3b3JrKCcxMDA6Oi84JyksCisgICAgICAgIElQdjZOZXR3b3JrKCcyMDA6Oi83JyksIElQdjZOZXR3b3JrKCc0MDA6Oi82JyksCisgICAgICAgIElQdjZOZXR3b3JrKCc4MDA6Oi81JyksIElQdjZOZXR3b3JrKCcxMDAwOjovNCcpLAorICAgICAgICBJUHY2TmV0d29yaygnNDAwMDo6LzMnKSwgSVB2Nk5ldHdvcmsoJzYwMDA6Oi8zJyksCisgICAgICAgIElQdjZOZXR3b3JrKCc4MDAwOjovMycpLCBJUHY2TmV0d29yaygnQTAwMDo6LzMnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJ0MwMDA6Oi8zJyksIElQdjZOZXR3b3JrKCdFMDAwOjovNCcpLAorICAgICAgICBJUHY2TmV0d29yaygnRjAwMDo6LzUnKSwgSVB2Nk5ldHdvcmsoJ0Y4MDA6Oi82JyksCisgICAgICAgIElQdjZOZXR3b3JrKCdGRTAwOjovOScpLAorICAgIF0KKworICAgIF9zaXRlbG9jYWxfbmV0d29yayA9IElQdjZOZXR3b3JrKCdmZWMwOjovMTAnKQorCisKK0lQdjZBZGRyZXNzLl9jb25zdGFudHMgPSBfSVB2NkNvbnN0YW50cwpkaWZmIC0tZ2l0IGEvTGliL2pzb24vX19pbml0X18ucHkgYi9MaWIvanNvbi9fX2luaXRfXy5weQppbmRleCA5Mzk4NjY3Li4yNjEyNjU3IDEwMDY0NAotLS0gYS9MaWIvanNvbi9fX2luaXRfXy5weQorKysgYi9MaWIvanNvbi9fX2luaXRfXy5weQpAQCAtOTgsMTIgKzk4LDEyIEBACiBfX3ZlcnNpb25fXyA9ICcyLjAuOScKIF9fYWxsX18gPSBbCiAgICAgJ2R1bXAnLCAnZHVtcHMnLCAnbG9hZCcsICdsb2FkcycsCi0gICAgJ0pTT05EZWNvZGVyJywgJ0pTT05FbmNvZGVyJywKKyAgICAnSlNPTkRlY29kZXInLCAnSlNPTkRlY29kZUVycm9yJywgJ0pTT05FbmNvZGVyJywKIF0KIAogX19hdXRob3JfXyA9ICdCb2IgSXBwb2xpdG8gPGJvYkByZWRpdmkuY29tPicKIAotZnJvbSAuZGVjb2RlciBpbXBvcnQgSlNPTkRlY29kZXIKK2Zyb20gLmRlY29kZXIgaW1wb3J0IEpTT05EZWNvZGVyLCBKU09ORGVjb2RlRXJyb3IKIGZyb20gLmVuY29kZXIgaW1wb3J0IEpTT05FbmNvZGVyCiAKIF9kZWZhdWx0X2VuY29kZXIgPSBKU09ORW5jb2RlcigKQEAgLTMxMSw3ICszMTEsOCBAQAogICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3RoZSBKU09OIG9iamVjdCBtdXN0IGJlIHN0ciwgbm90IHshcn0nLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLl9fY2xhc3NfXy5fX25hbWVfXykpCiAgICAgaWYgcy5zdGFydHN3aXRoKHUnXHVmZWZmJyk6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVuZXhwZWN0ZWQgVVRGLTggQk9NIChkZWNvZGUgdXNpbmcgdXRmLTgtc2lnKSIpCisgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiVW5leHBlY3RlZCBVVEYtOCBCT00gKGRlY29kZSB1c2luZyB1dGYtOC1zaWcpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIDApCiAgICAgaWYgKGNscyBpcyBOb25lIGFuZCBvYmplY3RfaG9vayBpcyBOb25lIGFuZAogICAgICAgICAgICAgcGFyc2VfaW50IGlzIE5vbmUgYW5kIHBhcnNlX2Zsb2F0IGlzIE5vbmUgYW5kCiAgICAgICAgICAgICBwYXJzZV9jb25zdGFudCBpcyBOb25lIGFuZCBvYmplY3RfcGFpcnNfaG9vayBpcyBOb25lIGFuZCBub3Qga3cpOgpkaWZmIC0tZ2l0IGEvTGliL2pzb24vZGVjb2Rlci5weSBiL0xpYi9qc29uL2RlY29kZXIucHkKaW5kZXggNTllNWY0MS4uMGYwM2YyMCAxMDA2NDQKLS0tIGEvTGliL2pzb24vZGVjb2Rlci5weQorKysgYi9MaWIvanNvbi9kZWNvZGVyLnB5CkBAIC04LDcgKzgsNyBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGNfc2NhbnN0cmluZyA9IE5vbmUKIAotX19hbGxfXyA9IFsnSlNPTkRlY29kZXInXQorX19hbGxfXyA9IFsnSlNPTkRlY29kZXInLCAnSlNPTkRlY29kZUVycm9yJ10KIAogRkxBR1MgPSByZS5WRVJCT1NFIHwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMCiAKQEAgLTE3LDMyICsxNywzMCBAQAogTmVnSW5mID0gZmxvYXQoJy1pbmYnKQogCiAKLWRlZiBsaW5lY29sKGRvYywgcG9zKToKLSAgICBpZiBpc2luc3RhbmNlKGRvYywgYnl0ZXMpOgotICAgICAgICBuZXdsaW5lID0gYidcbicKLSAgICBlbHNlOgotICAgICAgICBuZXdsaW5lID0gJ1xuJwotICAgIGxpbmVubyA9IGRvYy5jb3VudChuZXdsaW5lLCAwLCBwb3MpICsgMQotICAgIGlmIGxpbmVubyA9PSAxOgotICAgICAgICBjb2xubyA9IHBvcyArIDEKLSAgICBlbHNlOgotICAgICAgICBjb2xubyA9IHBvcyAtIGRvYy5yaW5kZXgobmV3bGluZSwgMCwgcG9zKQotICAgIHJldHVybiBsaW5lbm8sIGNvbG5vCitjbGFzcyBKU09ORGVjb2RlRXJyb3IoVmFsdWVFcnJvcik6CisgICAgIiIiU3ViY2xhc3Mgb2YgVmFsdWVFcnJvciB3aXRoIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBwcm9wZXJ0aWVzOgogCisgICAgbXNnOiBUaGUgdW5mb3JtYXR0ZWQgZXJyb3IgbWVzc2FnZQorICAgIGRvYzogVGhlIEpTT04gZG9jdW1lbnQgYmVpbmcgcGFyc2VkCisgICAgcG9zOiBUaGUgc3RhcnQgaW5kZXggb2YgZG9jIHdoZXJlIHBhcnNpbmcgZmFpbGVkCisgICAgbGluZW5vOiBUaGUgbGluZSBjb3JyZXNwb25kaW5nIHRvIHBvcworICAgIGNvbG5vOiBUaGUgY29sdW1uIGNvcnJlc3BvbmRpbmcgdG8gcG9zCiAKLWRlZiBlcnJtc2cobXNnLCBkb2MsIHBvcywgZW5kPU5vbmUpOgotICAgICMgTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gX2pzb24KLSAgICBsaW5lbm8sIGNvbG5vID0gbGluZWNvbChkb2MsIHBvcykKLSAgICBpZiBlbmQgaXMgTm9uZToKLSAgICAgICAgZm10ID0gJ3swfTogbGluZSB7MX0gY29sdW1uIHsyfSAoY2hhciB7M30pJwotICAgICAgICByZXR1cm4gZm10LmZvcm1hdChtc2csIGxpbmVubywgY29sbm8sIHBvcykKLSAgICAgICAgI2ZtdCA9ICclczogbGluZSAlZCBjb2x1bW4gJWQgKGNoYXIgJWQpJwotICAgICAgICAjcmV0dXJuIGZtdCAlIChtc2csIGxpbmVubywgY29sbm8sIHBvcykKLSAgICBlbmRsaW5lbm8sIGVuZGNvbG5vID0gbGluZWNvbChkb2MsIGVuZCkKLSAgICBmbXQgPSAnezB9OiBsaW5lIHsxfSBjb2x1bW4gezJ9IC0gbGluZSB7M30gY29sdW1uIHs0fSAoY2hhciB7NX0gLSB7Nn0pJwotICAgIHJldHVybiBmbXQuZm9ybWF0KG1zZywgbGluZW5vLCBjb2xubywgZW5kbGluZW5vLCBlbmRjb2xubywgcG9zLCBlbmQpCi0gICAgI2ZtdCA9ICclczogbGluZSAlZCBjb2x1bW4gJWQgLSBsaW5lICVkIGNvbHVtbiAlZCAoY2hhciAlZCAtICVkKScKLSAgICAjcmV0dXJuIGZtdCAlIChtc2csIGxpbmVubywgY29sbm8sIGVuZGxpbmVubywgZW5kY29sbm8sIHBvcywgZW5kKQorICAgICIiIgorICAgICMgTm90ZSB0aGF0IHRoaXMgZXhjZXB0aW9uIGlzIHVzZWQgZnJvbSBfanNvbgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtc2csIGRvYywgcG9zKToKKyAgICAgICAgbGluZW5vID0gZG9jLmNvdW50KCdcbicsIDAsIHBvcykgKyAxCisgICAgICAgIGNvbG5vID0gcG9zIC0gZG9jLnJmaW5kKCdcbicsIDAsIHBvcykKKyAgICAgICAgZXJybXNnID0gJyVzOiBsaW5lICVkIGNvbHVtbiAlZCAoY2hhciAlZCknICUgKG1zZywgbGluZW5vLCBjb2xubywgcG9zKQorICAgICAgICBWYWx1ZUVycm9yLl9faW5pdF9fKHNlbGYsIGVycm1zZykKKyAgICAgICAgc2VsZi5tc2cgPSBtc2cKKyAgICAgICAgc2VsZi5kb2MgPSBkb2MKKyAgICAgICAgc2VsZi5wb3MgPSBwb3MKKyAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KKyAgICAgICAgc2VsZi5jb2xubyA9IGNvbG5vCisKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLCAoc2VsZi5tc2csIHNlbGYuZG9jLCBzZWxmLnBvcykKIAogCiBfQ09OU1RBTlRTID0gewpAQCAtNjYsNyArNjQsNyBAQAogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICBtc2cgPSAiSW52YWxpZCBcXHVYWFhYIGVzY2FwZSIKLSAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZyhtc2csIHMsIHBvcykpCisgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKG1zZywgcywgcG9zKQogCiBkZWYgcHlfc2NhbnN0cmluZyhzLCBlbmQsIHN0cmljdD1UcnVlLAogICAgICAgICBfYj1CQUNLU0xBU0gsIF9tPVNUUklOR0NIVU5LLm1hdGNoKToKQEAgLTg0LDggKzgyLDcgQEAKICAgICB3aGlsZSAxOgogICAgICAgICBjaHVuayA9IF9tKHMsIGVuZCkKICAgICAgICAgaWYgY2h1bmsgaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgZXJybXNnKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0IiwgcywgYmVnaW4pKQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0IiwgcywgYmVnaW4pCiAgICAgICAgIGVuZCA9IGNodW5rLmVuZCgpCiAgICAgICAgIGNvbnRlbnQsIHRlcm1pbmF0b3IgPSBjaHVuay5ncm91cHMoKQogICAgICAgICAjIENvbnRlbnQgaXMgY29udGFpbnMgemVybyBvciBtb3JlIHVuZXNjYXBlZCBzdHJpbmcgY2hhcmFjdGVycwpAQCAtOTksMjIgKzk2LDIxIEBACiAgICAgICAgICAgICBpZiBzdHJpY3Q6CiAgICAgICAgICAgICAgICAgI21zZyA9ICJJbnZhbGlkIGNvbnRyb2wgY2hhcmFjdGVyICVyIGF0IiAlICh0ZXJtaW5hdG9yLCkKICAgICAgICAgICAgICAgICBtc2cgPSAiSW52YWxpZCBjb250cm9sIGNoYXJhY3RlciB7MCFyfSBhdCIuZm9ybWF0KHRlcm1pbmF0b3IpCi0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2cobXNnLCBzLCBlbmQpKQorICAgICAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcihtc2csIHMsIGVuZCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgX2FwcGVuZCh0ZXJtaW5hdG9yKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGVzYyA9IHNbZW5kXQogICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgZXJybXNnKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0IiwgcywgYmVnaW4pKQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0IiwgcywgYmVnaW4pCiAgICAgICAgICMgSWYgbm90IGEgdW5pY29kZSBlc2NhcGUgc2VxdWVuY2UsIG11c3QgYmUgaW4gdGhlIGxvb2t1cCB0YWJsZQogICAgICAgICBpZiBlc2MgIT0gJ3UnOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGNoYXIgPSBfYltlc2NdCiAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgbXNnID0gIkludmFsaWQgXFxlc2NhcGU6IHswIXJ9Ii5mb3JtYXQoZXNjKQotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKG1zZywgcywgZW5kKSkKKyAgICAgICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IobXNnLCBzLCBlbmQpCiAgICAgICAgICAgICBlbmQgKz0gMQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdW5pID0gX2RlY29kZV91WFhYWChzLCBlbmQpCkBAIC0xNjMsOCArMTU5LDggQEAKICAgICAgICAgICAgICAgICBwYWlycyA9IG9iamVjdF9ob29rKHBhaXJzKQogICAgICAgICAgICAgcmV0dXJuIHBhaXJzLCBlbmQgKyAxCiAgICAgICAgIGVsaWYgbmV4dGNoYXIgIT0gJyInOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2coCi0gICAgICAgICAgICAgICAgIkV4cGVjdGluZyBwcm9wZXJ0eSBuYW1lIGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXMiLCBzLCBlbmQpKQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKAorICAgICAgICAgICAgICAgICJFeHBlY3RpbmcgcHJvcGVydHkgbmFtZSBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzIiwgcywgZW5kKQogICAgIGVuZCArPSAxCiAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAga2V5LCBlbmQgPSBzY2Fuc3RyaW5nKHMsIGVuZCwgc3RyaWN0KQpAQCAtMTc0LDcgKzE3MCw3IEBACiAgICAgICAgIGlmIHNbZW5kOmVuZCArIDFdICE9ICc6JzoKICAgICAgICAgICAgIGVuZCA9IF93KHMsIGVuZCkuZW5kKCkKICAgICAgICAgICAgIGlmIHNbZW5kOmVuZCArIDFdICE9ICc6JzoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZygiRXhwZWN0aW5nICc6JyBkZWxpbWl0ZXIiLCBzLCBlbmQpKQorICAgICAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiRXhwZWN0aW5nICc6JyBkZWxpbWl0ZXIiLCBzLCBlbmQpCiAgICAgICAgIGVuZCArPSAxCiAKICAgICAgICAgdHJ5OgpAQCAtMTg4LDcgKzE4NCw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHZhbHVlLCBlbmQgPSBzY2FuX29uY2UocywgZW5kKQogICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBlcnI6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZygiRXhwZWN0aW5nIHZhbHVlIiwgcywgZXJyLnZhbHVlKSkgZnJvbSBOb25lCisgICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIkV4cGVjdGluZyB2YWx1ZSIsIHMsIGVyci52YWx1ZSkgZnJvbSBOb25lCiAgICAgICAgIHBhaXJzX2FwcGVuZCgoa2V5LCB2YWx1ZSkpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG5leHRjaGFyID0gc1tlbmRdCkBAIC0yMDIsMTMgKzE5OCwxMyBAQAogICAgICAgICBpZiBuZXh0Y2hhciA9PSAnfSc6CiAgICAgICAgICAgICBicmVhawogICAgICAgICBlbGlmIG5leHRjaGFyICE9ICcsJzoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKCJFeHBlY3RpbmcgJywnIGRlbGltaXRlciIsIHMsIGVuZCAtIDEpKQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJFeHBlY3RpbmcgJywnIGRlbGltaXRlciIsIHMsIGVuZCAtIDEpCiAgICAgICAgIGVuZCA9IF93KHMsIGVuZCkuZW5kKCkKICAgICAgICAgbmV4dGNoYXIgPSBzW2VuZDplbmQgKyAxXQogICAgICAgICBlbmQgKz0gMQogICAgICAgICBpZiBuZXh0Y2hhciAhPSAnIic6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZygKLSAgICAgICAgICAgICAgICAiRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcyIsIHMsIGVuZCAtIDEpKQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKAorICAgICAgICAgICAgICAgICJFeHBlY3RpbmcgcHJvcGVydHkgbmFtZSBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzIiwgcywgZW5kIC0gMSkKICAgICBpZiBvYmplY3RfcGFpcnNfaG9vayBpcyBub3QgTm9uZToKICAgICAgICAgcmVzdWx0ID0gb2JqZWN0X3BhaXJzX2hvb2socGFpcnMpCiAgICAgICAgIHJldHVybiByZXN1bHQsIGVuZApAQCAtMjMyLDcgKzIyOCw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHZhbHVlLCBlbmQgPSBzY2FuX29uY2UocywgZW5kKQogICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBlcnI6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZygiRXhwZWN0aW5nIHZhbHVlIiwgcywgZXJyLnZhbHVlKSkgZnJvbSBOb25lCisgICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIkV4cGVjdGluZyB2YWx1ZSIsIHMsIGVyci52YWx1ZSkgZnJvbSBOb25lCiAgICAgICAgIF9hcHBlbmQodmFsdWUpCiAgICAgICAgIG5leHRjaGFyID0gc1tlbmQ6ZW5kICsgMV0KICAgICAgICAgaWYgbmV4dGNoYXIgaW4gX3dzOgpAQCAtMjQyLDcgKzIzOCw3IEBACiAgICAgICAgIGlmIG5leHRjaGFyID09ICddJzoKICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgIGVsaWYgbmV4dGNoYXIgIT0gJywnOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2coIkV4cGVjdGluZyAnLCcgZGVsaW1pdGVyIiwgcywgZW5kIC0gMSkpCisgICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIkV4cGVjdGluZyAnLCcgZGVsaW1pdGVyIiwgcywgZW5kIC0gMSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgc1tlbmRdIGluIF93czoKICAgICAgICAgICAgICAgICBlbmQgKz0gMQpAQCAtMzQzLDcgKzMzOSw3IEBACiAgICAgICAgIG9iaiwgZW5kID0gc2VsZi5yYXdfZGVjb2RlKHMsIGlkeD1fdyhzLCAwKS5lbmQoKSkKICAgICAgICAgZW5kID0gX3cocywgZW5kKS5lbmQoKQogICAgICAgICBpZiBlbmQgIT0gbGVuKHMpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2coIkV4dHJhIGRhdGEiLCBzLCBlbmQsIGxlbihzKSkpCisgICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIkV4dHJhIGRhdGEiLCBzLCBlbmQpCiAgICAgICAgIHJldHVybiBvYmoKIAogICAgIGRlZiByYXdfZGVjb2RlKHNlbGYsIHMsIGlkeD0wKToKQEAgLTM1OCw1ICszNTQsNSBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvYmosIGVuZCA9IHNlbGYuc2Nhbl9vbmNlKHMsIGlkeCkKICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXJyOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2coIkV4cGVjdGluZyB2YWx1ZSIsIHMsIGVyci52YWx1ZSkpIGZyb20gTm9uZQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJFeHBlY3RpbmcgdmFsdWUiLCBzLCBlcnIudmFsdWUpIGZyb20gTm9uZQogICAgICAgICByZXR1cm4gb2JqLCBlbmQKZGlmZiAtLWdpdCBhL0xpYi9qc29uL2VuY29kZXIucHkgYi9MaWIvanNvbi9lbmNvZGVyLnB5CmluZGV4IDA1MTM4MzguLjI2ZTllYjIgMTAwNjQ0Ci0tLSBhL0xpYi9qc29uL2VuY29kZXIucHkKKysrIGIvTGliL2pzb24vZW5jb2Rlci5weQpAQCAtNyw2ICs3LDEwIEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgY19lbmNvZGVfYmFzZXN0cmluZ19hc2NpaSA9IE5vbmUKIHRyeToKKyAgICBmcm9tIF9qc29uIGltcG9ydCBlbmNvZGVfYmFzZXN0cmluZyBhcyBjX2VuY29kZV9iYXNlc3RyaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgY19lbmNvZGVfYmFzZXN0cmluZyA9IE5vbmUKK3RyeToKICAgICBmcm9tIF9qc29uIGltcG9ydCBtYWtlX2VuY29kZXIgYXMgY19tYWtlX2VuY29kZXIKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBjX21ha2VfZW5jb2RlciA9IE5vbmUKQEAgLTMwLDcgKzM0LDcgQEAKIElORklOSVRZID0gZmxvYXQoJ2luZicpCiBGTE9BVF9SRVBSID0gcmVwcgogCi1kZWYgZW5jb2RlX2Jhc2VzdHJpbmcocyk6CitkZWYgcHlfZW5jb2RlX2Jhc2VzdHJpbmcocyk6CiAgICAgIiIiUmV0dXJuIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIFB5dGhvbiBzdHJpbmcKIAogICAgICIiIgpAQCAtMzksNiArNDMsOSBAQAogICAgIHJldHVybiAnIicgKyBFU0NBUEUuc3ViKHJlcGxhY2UsIHMpICsgJyInCiAKIAorZW5jb2RlX2Jhc2VzdHJpbmcgPSAoY19lbmNvZGVfYmFzZXN0cmluZyBvciBweV9lbmNvZGVfYmFzZXN0cmluZykKKworCiBkZWYgcHlfZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkocyk6CiAgICAgIiIiUmV0dXJuIGFuIEFTQ0lJLW9ubHkgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIFB5dGhvbiBzdHJpbmcKIApkaWZmIC0tZ2l0IGEvTGliL2pzb24vdG9vbC5weSBiL0xpYi9qc29uL3Rvb2wucHkKaW5kZXggN2RiNDUyOC4uNGYzMTgyYyAxMDA2NDQKLS0tIGEvTGliL2pzb24vdG9vbC5weQorKysgYi9MaWIvanNvbi90b29sLnB5CkBAIC0xMCwyOCArMTAsMzkgQEAKICAgICBFeHBlY3RpbmcgcHJvcGVydHkgbmFtZSBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzOiBsaW5lIDEgY29sdW1uIDMgKGNoYXIgMikKIAogIiIiCi1pbXBvcnQgc3lzCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGpzb24KK2ltcG9ydCBzeXMKKwogCiBkZWYgbWFpbigpOgotICAgIGlmIGxlbihzeXMuYXJndikgPT0gMToKLSAgICAgICAgaW5maWxlID0gc3lzLnN0ZGluCi0gICAgICAgIG91dGZpbGUgPSBzeXMuc3Rkb3V0Ci0gICAgZWxpZiBsZW4oc3lzLmFyZ3YpID09IDI6Ci0gICAgICAgIGluZmlsZSA9IG9wZW4oc3lzLmFyZ3ZbMV0sICdyJykKLSAgICAgICAgb3V0ZmlsZSA9IHN5cy5zdGRvdXQKLSAgICBlbGlmIGxlbihzeXMuYXJndikgPT0gMzoKLSAgICAgICAgaW5maWxlID0gb3BlbihzeXMuYXJndlsxXSwgJ3InKQotICAgICAgICBvdXRmaWxlID0gb3BlbihzeXMuYXJndlsyXSwgJ3cnKQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoc3lzLmFyZ3ZbMF0gKyAiIFtpbmZpbGUgW291dGZpbGVdXSIpCisgICAgcHJvZyA9ICdweXRob24gLW0ganNvbi50b29sJworICAgIGRlc2NyaXB0aW9uID0gKCdBIHNpbXBsZSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlIGZvciBqc29uIG1vZHVsZSAnCisgICAgICAgICAgICAgICAgICAgJ3RvIHZhbGlkYXRlIGFuZCBwcmV0dHktcHJpbnQgSlNPTiBvYmplY3RzLicpCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIocHJvZz1wcm9nLCBkZXNjcmlwdGlvbj1kZXNjcmlwdGlvbikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdpbmZpbGUnLCBuYXJncz0nPycsIHR5cGU9YXJncGFyc2UuRmlsZVR5cGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2EgSlNPTiBmaWxlIHRvIGJlIHZhbGlkYXRlZCBvciBwcmV0dHktcHJpbnRlZCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnb3V0ZmlsZScsIG5hcmdzPSc/JywgdHlwZT1hcmdwYXJzZS5GaWxlVHlwZSgndycpLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nd3JpdGUgdGhlIG91dHB1dCBvZiBpbmZpbGUgdG8gb3V0ZmlsZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1zb3J0LWtleXMnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc29ydCB0aGUgb3V0cHV0IG9mIGRpY3Rpb25hcmllcyBhbHBoYWJldGljYWxseSBieSBrZXknKQorICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBpbmZpbGUgPSBvcHRpb25zLmluZmlsZSBvciBzeXMuc3RkaW4KKyAgICBvdXRmaWxlID0gb3B0aW9ucy5vdXRmaWxlIG9yIHN5cy5zdGRvdXQKKyAgICBzb3J0X2tleXMgPSBvcHRpb25zLnNvcnRfa2V5cwogICAgIHdpdGggaW5maWxlOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvYmogPSBqc29uLmxvYWQoaW5maWxlKQorICAgICAgICAgICAgaWYgc29ydF9rZXlzOgorICAgICAgICAgICAgICAgIG9iaiA9IGpzb24ubG9hZChpbmZpbGUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG9iaiA9IGpzb24ubG9hZChpbmZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdF9wYWlyc19ob29rPWNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgogICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXhpdChlKQogICAgIHdpdGggb3V0ZmlsZToKLSAgICAgICAganNvbi5kdW1wKG9iaiwgb3V0ZmlsZSwgc29ydF9rZXlzPVRydWUsIGluZGVudD00KQorICAgICAgICBqc29uLmR1bXAob2JqLCBvdXRmaWxlLCBzb3J0X2tleXM9c29ydF9rZXlzLCBpbmRlbnQ9NCkKICAgICAgICAgb3V0ZmlsZS53cml0ZSgnXG4nKQogCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL0dyYW1tYXIudHh0IGIvTGliL2xpYjJ0bzMvR3JhbW1hci50eHQKaW5kZXggZTY2N2JjZC4uYzk1NDY2OSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvR3JhbW1hci50eHQKKysrIGIvTGliL2xpYjJ0bzMvR3JhbW1hci50eHQKQEAgLTMzLDcgKzMzLDggQEAKIAogZGVjb3JhdG9yOiAnQCcgZG90dGVkX25hbWUgWyAnKCcgW2FyZ2xpc3RdICcpJyBdIE5FV0xJTkUKIGRlY29yYXRvcnM6IGRlY29yYXRvcisKLWRlY29yYXRlZDogZGVjb3JhdG9ycyAoY2xhc3NkZWYgfCBmdW5jZGVmKQorZGVjb3JhdGVkOiBkZWNvcmF0b3JzIChjbGFzc2RlZiB8IGZ1bmNkZWYgfCBhc3luY19mdW5jZGVmKQorYXN5bmNfZnVuY2RlZjogQVNZTkMgZnVuY2RlZgogZnVuY2RlZjogJ2RlZicgTkFNRSBwYXJhbWV0ZXJzIFsnLT4nIHRlc3RdICc6JyBzdWl0ZQogcGFyYW1ldGVyczogJygnIFt0eXBlZGFyZ3NsaXN0XSAnKScKIHR5cGVkYXJnc2xpc3Q6ICgodGZwZGVmIFsnPScgdGVzdF0gJywnKSoKQEAgLTgyLDcgKzgzLDggQEAKIGV4ZWNfc3RtdDogJ2V4ZWMnIGV4cHIgWydpbicgdGVzdCBbJywnIHRlc3RdXQogYXNzZXJ0X3N0bXQ6ICdhc3NlcnQnIHRlc3QgWycsJyB0ZXN0XQogCi1jb21wb3VuZF9zdG10OiBpZl9zdG10IHwgd2hpbGVfc3RtdCB8IGZvcl9zdG10IHwgdHJ5X3N0bXQgfCB3aXRoX3N0bXQgfCBmdW5jZGVmIHwgY2xhc3NkZWYgfCBkZWNvcmF0ZWQKK2NvbXBvdW5kX3N0bXQ6IGlmX3N0bXQgfCB3aGlsZV9zdG10IHwgZm9yX3N0bXQgfCB0cnlfc3RtdCB8IHdpdGhfc3RtdCB8IGZ1bmNkZWYgfCBjbGFzc2RlZiB8IGRlY29yYXRlZCB8IGFzeW5jX3N0bXQKK2FzeW5jX3N0bXQ6IEFTWU5DIChmdW5jZGVmIHwgd2l0aF9zdG10IHwgZm9yX3N0bXQpCiBpZl9zdG10OiAnaWYnIHRlc3QgJzonIHN1aXRlICgnZWxpZicgdGVzdCAnOicgc3VpdGUpKiBbJ2Vsc2UnICc6JyBzdWl0ZV0KIHdoaWxlX3N0bXQ6ICd3aGlsZScgdGVzdCAnOicgc3VpdGUgWydlbHNlJyAnOicgc3VpdGVdCiBmb3Jfc3RtdDogJ2ZvcicgZXhwcmxpc3QgJ2luJyB0ZXN0bGlzdCAnOicgc3VpdGUgWydlbHNlJyAnOicgc3VpdGVdCkBAIC0xMjEsNyArMTIzLDcgQEAKIGFyaXRoX2V4cHI6IHRlcm0gKCgnKyd8Jy0nKSB0ZXJtKSoKIHRlcm06IGZhY3RvciAoKCcqJ3wnQCd8Jy8nfCclJ3wnLy8nKSBmYWN0b3IpKgogZmFjdG9yOiAoJysnfCctJ3wnficpIGZhY3RvciB8IHBvd2VyCi1wb3dlcjogYXRvbSB0cmFpbGVyKiBbJyoqJyBmYWN0b3JdCitwb3dlcjogW0FXQUlUXSBhdG9tIHRyYWlsZXIqIFsnKionIGZhY3Rvcl0KIGF0b206ICgnKCcgW3lpZWxkX2V4cHJ8dGVzdGxpc3RfZ2V4cF0gJyknIHwKICAgICAgICAnWycgW2xpc3RtYWtlcl0gJ10nIHwKICAgICAgICAneycgW2RpY3RzZXRtYWtlcl0gJ30nIHwKQEAgLTE0Miw3ICsxNDQsNyBAQAogY2xhc3NkZWY6ICdjbGFzcycgTkFNRSBbJygnIFthcmdsaXN0XSAnKSddICc6JyBzdWl0ZQogCiBhcmdsaXN0OiAoYXJndW1lbnQgJywnKSogKGFyZ3VtZW50IFsnLCddCi0gICAgICAgICAgICAgICAgICAgICAgICAgfCcqJyB0ZXN0ICgnLCcgYXJndW1lbnQpKiBbJywnICcqKicgdGVzdF0gCisgICAgICAgICAgICAgICAgICAgICAgICAgfCcqJyB0ZXN0ICgnLCcgYXJndW1lbnQpKiBbJywnICcqKicgdGVzdF0KICAgICAgICAgICAgICAgICAgICAgICAgICB8JyoqJyB0ZXN0KQogYXJndW1lbnQ6IHRlc3QgW2NvbXBfZm9yXSB8IHRlc3QgJz0nIHRlc3QgICMgUmVhbGx5IFtrZXl3b3JkICc9J10gdGVzdAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9wZ2VuMi90b2tlbi5weSBiL0xpYi9saWIydG8zL3BnZW4yL3Rva2VuLnB5CmluZGV4IDc1OTkzOTYuLjFhNjc5NTUgMTAwNzU1Ci0tLSBhL0xpYi9saWIydG8zL3BnZW4yL3Rva2VuLnB5CisrKyBiL0xpYi9saWIydG8zL3BnZW4yL3Rva2VuLnB5CkBAIC02Miw4ICs2MiwxMCBAQAogQ09NTUVOVCA9IDUzCiBOTCA9IDU0CiBSQVJST1cgPSA1NQotRVJST1JUT0tFTiA9IDU2Ci1OX1RPS0VOUyA9IDU3CitBV0FJVCA9IDU2CitBU1lOQyA9IDU3CitFUlJPUlRPS0VOID0gNTgKK05fVE9LRU5TID0gNTkKIE5UX09GRlNFVCA9IDI1NgogIy0tZW5kIGNvbnN0YW50cy0tCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3BnZW4yL3Rva2VuaXplLnB5IGIvTGliL2xpYjJ0bzMvcGdlbjIvdG9rZW5pemUucHkKaW5kZXggM2RkMWVlOS4uMWZmMWM2MSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvcGdlbjIvdG9rZW5pemUucHkKKysrIGIvTGliL2xpYjJ0bzMvcGdlbjIvdG9rZW5pemUucHkKQEAgLTIyMCw3ICsyMjAsNyBAQAogICAgICAgICBmb3IgdG9rIGluIGl0ZXJhYmxlOgogICAgICAgICAgICAgdG9rbnVtLCB0b2t2YWwgPSB0b2tbOjJdCiAKLSAgICAgICAgICAgIGlmIHRva251bSBpbiAoTkFNRSwgTlVNQkVSKToKKyAgICAgICAgICAgIGlmIHRva251bSBpbiAoTkFNRSwgTlVNQkVSLCBBU1lOQywgQVdBSVQpOgogICAgICAgICAgICAgICAgIHRva3ZhbCArPSAnICcKIAogICAgICAgICAgICAgaWYgdG9rbnVtID09IElOREVOVDoKQEAgLTM2Niw2ICszNjYsMTIgQEAKICAgICBjb250bGluZSA9IE5vbmUKICAgICBpbmRlbnRzID0gWzBdCiAKKyAgICAjICdzdGFzaGVkJyBhbmQgJ2FzeW5jXyonIGFyZSB1c2VkIGZvciBhc3luYy9hd2FpdCBwYXJzaW5nCisgICAgc3Rhc2hlZCA9IE5vbmUKKyAgICBhc3luY19kZWYgPSBGYWxzZQorICAgIGFzeW5jX2RlZl9pbmRlbnQgPSAwCisgICAgYXN5bmNfZGVmX25sID0gRmFsc2UKKwogICAgIHdoaWxlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxvb3Agb3ZlciBsaW5lcyBpbiBzdHJlYW0KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbGluZSA9IHJlYWRsaW5lKCkKQEAgLTQwNiw2ICs0MTIsMTAgQEAKICAgICAgICAgICAgICAgICBwb3MgPSBwb3MgKyAxCiAgICAgICAgICAgICBpZiBwb3MgPT0gbWF4OiBicmVhawogCisgICAgICAgICAgICBpZiBzdGFzaGVkOgorICAgICAgICAgICAgICAgIHlpZWxkIHN0YXNoZWQKKyAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQorCiAgICAgICAgICAgICBpZiBsaW5lW3Bvc10gaW4gJyNcclxuJzogICAgICAgICAgICMgc2tpcCBjb21tZW50cyBvciBibGFuayBsaW5lcwogICAgICAgICAgICAgICAgIGlmIGxpbmVbcG9zXSA9PSAnIyc6CiAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRfdG9rZW4gPSBsaW5lW3BvczpdLnJzdHJpcCgnXHJcbicpCkBAIC00MjgsOCArNDM4LDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAidW5pbmRlbnQgZG9lcyBub3QgbWF0Y2ggYW55IG91dGVyIGluZGVudGF0aW9uIGxldmVsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICgiPHRva2VuaXplPiIsIGxudW0sIHBvcywgbGluZSkpCiAgICAgICAgICAgICAgICAgaW5kZW50cyA9IGluZGVudHNbOi0xXQorCisgICAgICAgICAgICAgICAgaWYgYXN5bmNfZGVmIGFuZCBhc3luY19kZWZfaW5kZW50ID49IGluZGVudHNbLTFdOgorICAgICAgICAgICAgICAgICAgICBhc3luY19kZWYgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICBhc3luY19kZWZfbmwgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICBhc3luY19kZWZfaW5kZW50ID0gMAorCiAgICAgICAgICAgICAgICAgeWllbGQgKERFREVOVCwgJycsIChsbnVtLCBwb3MpLCAobG51bSwgcG9zKSwgbGluZSkKIAorICAgICAgICAgICAgaWYgYXN5bmNfZGVmIGFuZCBhc3luY19kZWZfbmwgYW5kIGFzeW5jX2RlZl9pbmRlbnQgPj0gaW5kZW50c1stMV06CisgICAgICAgICAgICAgICAgYXN5bmNfZGVmID0gRmFsc2UKKyAgICAgICAgICAgICAgICBhc3luY19kZWZfbmwgPSBGYWxzZQorICAgICAgICAgICAgICAgIGFzeW5jX2RlZl9pbmRlbnQgPSAwCisKICAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb250aW51ZWQgc3RhdGVtZW50CiAgICAgICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgICAgICByYWlzZSBUb2tlbkVycm9yKCJFT0YgaW4gbXVsdGktbGluZSBzdGF0ZW1lbnQiLCAobG51bSwgMCkpCkBAIC00NDksOSArNDcwLDE4IEBACiAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmUgPSBORVdMSU5FCiAgICAgICAgICAgICAgICAgICAgIGlmIHBhcmVubGV2ID4gMDoKICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmUgPSBOTAorICAgICAgICAgICAgICAgICAgICBlbGlmIGFzeW5jX2RlZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jX2RlZl9ubCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHN0YXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIChuZXdsaW5lLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKKwogICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCA9PSAnIyc6CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBub3QgdG9rZW4uZW5kc3dpdGgoIlxuIikKKyAgICAgICAgICAgICAgICAgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHN0YXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIChDT01NRU5ULCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKICAgICAgICAgICAgICAgICBlbGlmIHRva2VuIGluIHRyaXBsZV9xdW90ZWQ6CiAgICAgICAgICAgICAgICAgICAgIGVuZHByb2cgPSBlbmRwcm9nc1t0b2tlbl0KQEAgLTQ1OSw2ICs0ODksOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiBlbmRtYXRjaDogICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFsbCBvbiBvbmUgbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gZW5kbWF0Y2guZW5kKDApCiAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IGxpbmVbc3RhcnQ6cG9zXQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZCA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIChTVFJJTkcsIHRva2VuLCBzcG9zLCAobG51bSwgcG9zKSwgbGluZSkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnN0YXJ0ID0gKGxudW0sIHN0YXJ0KSAgICAgICAgICAgIyBtdWx0aXBsZSBsaW5lcwpAQCAtNDc2LDIyICs1MDksNjMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRsaW5lID0gbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcmRpbmFyeSBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgc3Rhc2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCAoU1RSSU5HLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKICAgICAgICAgICAgICAgICBlbGlmIGluaXRpYWwgaW4gbmFtZWNoYXJzOiAgICAgICAgICAgICAgICAgIyBvcmRpbmFyeSBuYW1lCi0gICAgICAgICAgICAgICAgICAgIHlpZWxkIChOQU1FLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4gaW4gKCdhc3luYycsICdhd2FpdCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXN5bmNfZGVmOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIChBU1lOQyBpZiB0b2tlbiA9PSAnYXN5bmMnIGVsc2UgQVdBSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgdG9rID0gKE5BTUUsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbiA9PSAnYXN5bmMnIGFuZCBub3Qgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSB0b2sKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4gPT0gJ2RlZic6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Rhc2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3Rhc2hlZFswXSA9PSBOQU1FCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzdGFzaGVkWzFdID09ICdhc3luYycpOgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmNfZGVmID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jX2RlZl9pbmRlbnQgPSBpbmRlbnRzWy0xXQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgKEFTWU5DLCBzdGFzaGVkWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkWzJdLCBzdGFzaGVkWzNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkWzRdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCisKKyAgICAgICAgICAgICAgICAgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHN0YXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCisKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgdG9rCiAgICAgICAgICAgICAgICAgZWxpZiBpbml0aWFsID09ICdcXCc6ICAgICAgICAgICAgICAgICAgICAgICMgY29udGludWVkIHN0bXQKICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHlpZWxkIGlzIG5ldzsgbmVlZGVkIGZvciBiZXR0ZXIgaWRlbXBvdGVuY3k6CisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQogICAgICAgICAgICAgICAgICAgICB5aWVsZCAoTkwsIHRva2VuLCBzcG9zLCAobG51bSwgcG9zKSwgbGluZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWVkID0gMQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGlmIGluaXRpYWwgaW4gJyhbeyc6IHBhcmVubGV2ID0gcGFyZW5sZXYgKyAxCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCBpbiAnKV19JzogcGFyZW5sZXYgPSBwYXJlbmxldiAtIDEKKyAgICAgICAgICAgICAgICAgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHN0YXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIChPUCwgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHlpZWxkIChFUlJPUlRPS0VOLCBsaW5lW3Bvc10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG51bSwgcG9zKSwgKGxudW0sIHBvcysxKSwgbGluZSkKICAgICAgICAgICAgICAgICBwb3MgPSBwb3MgKyAxCiAKKyAgICBpZiBzdGFzaGVkOgorICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgIHN0YXNoZWQgPSBOb25lCisKICAgICBmb3IgaW5kZW50IGluIGluZGVudHNbMTpdOiAgICAgICAgICAgICAgICAgIyBwb3AgcmVtYWluaW5nIGluZGVudCBsZXZlbHMKICAgICAgICAgeWllbGQgKERFREVOVCwgJycsIChsbnVtLCAwKSwgKGxudW0sIDApLCAnJykKICAgICB5aWVsZCAoRU5ETUFSS0VSLCAnJywgKGxudW0sIDApLCAobG51bSwgMCksICcnKQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9wYXJzZXIucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weQppbmRleCA1YmI5ZDJiLi5iNTMzYzAxIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weQpAQCAtNTUsMTIgKzU1LDY0IEBACiAKIAogY2xhc3MgVGVzdFlpZWxkRnJvbShHcmFtbWFyVGVzdCk6Ci0gICAgZGVmIHRlc3RfbWF0cml4X211bHRpcGxpY2F0aW9uX29wZXJhdG9yKHNlbGYpOgorICAgIGRlZiB0ZXN0X3lpZWxkX2Zyb20oc2VsZik6CiAgICAgICAgIHNlbGYudmFsaWRhdGUoInlpZWxkIGZyb20geCIpCiAgICAgICAgIHNlbGYudmFsaWRhdGUoIih5aWVsZCBmcm9tIHgpICsgeSIpCiAgICAgICAgIHNlbGYuaW52YWxpZF9zeW50YXgoInlpZWxkIGZyb20iKQogCiAKK2NsYXNzIFRlc3RBc3luY0F3YWl0KEdyYW1tYXJUZXN0KToKKyAgICBkZWYgdGVzdF9hd2FpdF9leHByKHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgeAorICAgICAgICAgICAgICAgICAgICAgICIiIikKKworICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKKworICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCisKKyAgICAgICAgICAgIGRlZiBmb28oKTogcGFzcworCisgICAgICAgICAgICBhd2FpdCB4CisgICAgICAgICIiIikKKworICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKTogcmV0dXJuIGF3YWl0IGEiIiIpCisKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJkZWYgZm9vKCk6CisgICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogYXdhaXQgeAorICAgICAgICAiIiIpCisKKyAgICAgICAgc2VsZi5pbnZhbGlkX3N5bnRheCgiYXdhaXQgeCIpCisgICAgICAgIHNlbGYuaW52YWxpZF9zeW50YXgoIiIiZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB4IiIiKQorCisgICAgICAgIHNlbGYuaW52YWxpZF9zeW50YXgoIiIiZGVmIGZvbygpOgorICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgIGF3YWl0IHgKKyAgICAgICAgIiIiKQorCisgICAgZGVmIHRlc3RfYXN5bmNfdmFyKHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jID0gMSIiIikKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhd2FpdCA9IDEiIiIpCisgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiZGVmIGFzeW5jKCk6IHBhc3MiIiIpCisKKyAgICBkZWYgdGVzdF9hc3luY193aXRoKHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGEgaW4gYjogcGFzcyIiIikKKworICAgICAgICBzZWxmLmludmFsaWRfc3ludGF4KCIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGEgaW4gYjogcGFzcyIiIikKKworICAgIGRlZiB0ZXN0X2FzeW5jX2ZvcihzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jIHdpdGggYTogcGFzcyIiIikKKworICAgICAgICBzZWxmLmludmFsaWRfc3ludGF4KCIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgd2l0aCBhOiBwYXNzIiIiKQorCisKIGNsYXNzIFRlc3RSYWlzZUNoYW5nZXMoR3JhbW1hclRlc3QpOgogICAgIGRlZiB0ZXN0XzJ4X3N0eWxlXzEoc2VsZik6CiAgICAgICAgIHNlbGYudmFsaWRhdGUoInJhaXNlIikKZGlmZiAtLWdpdCBhL0xpYi9saW5lY2FjaGUucHkgYi9MaWIvbGluZWNhY2hlLnB5CmluZGV4IDg4NGNiZjQuLjNhZmNjZTEgMTAwNjQ0Ci0tLSBhL0xpYi9saW5lY2FjaGUucHkKKysrIGIvTGliL2xpbmVjYWNoZS5weQpAQCAtNSw2ICs1LDcgQEAKIHRoYXQgbmFtZS4KICIiIgogCitpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCB0b2tlbml6ZQpAQCAtMjEsNyArMjIsOSBAQAogCiAjIFRoZSBjYWNoZQogCi1jYWNoZSA9IHt9ICMgVGhlIGNhY2hlCisjIFRoZSBjYWNoZS4gTWFwcyBmaWxlbmFtZXMgdG8gZWl0aGVyIGEgdGh1bmsgd2hpY2ggd2lsbCBwcm92aWRlIHNvdXJjZSBjb2RlLAorIyBvciBhIHR1cGxlIChzaXplLCBtdGltZSwgbGluZXMsIGZ1bGxuYW1lKSBvbmNlIGxvYWRlZC4KK2NhY2hlID0ge30KIAogCiBkZWYgY2xlYXJjYWNoZSgpOgpAQCAtMzYsNyArMzksOSBAQAogICAgIFVwZGF0ZSB0aGUgY2FjaGUgaWYgaXQgZG9lc24ndCBjb250YWluIGFuIGVudHJ5IGZvciB0aGlzIGZpbGUgYWxyZWFkeS4iIiIKIAogICAgIGlmIGZpbGVuYW1lIGluIGNhY2hlOgotICAgICAgICByZXR1cm4gY2FjaGVbZmlsZW5hbWVdWzJdCisgICAgICAgIGVudHJ5ID0gY2FjaGVbZmlsZW5hbWVdCisgICAgICAgIGlmIGxlbihlbnRyeSkgIT0gMToKKyAgICAgICAgICAgIHJldHVybiBjYWNoZVtmaWxlbmFtZV1bMl0KIAogICAgIHRyeToKICAgICAgICAgcmV0dXJuIHVwZGF0ZWNhY2hlKGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscykKQEAgLTU4LDcgKzYzLDExIEBACiAgICAgICAgICAgICByZXR1cm4KIAogICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXM6Ci0gICAgICAgIHNpemUsIG10aW1lLCBsaW5lcywgZnVsbG5hbWUgPSBjYWNoZVtmaWxlbmFtZV0KKyAgICAgICAgZW50cnkgPSBjYWNoZVtmaWxlbmFtZV0KKyAgICAgICAgaWYgbGVuKGVudHJ5KSA9PSAxOgorICAgICAgICAgICAgIyBsYXp5IGNhY2hlIGVudHJ5LCBsZWF2ZSBpdCBsYXp5LgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgc2l6ZSwgbXRpbWUsIGxpbmVzLCBmdWxsbmFtZSA9IGVudHJ5CiAgICAgICAgIGlmIG10aW1lIGlzIE5vbmU6CiAgICAgICAgICAgICBjb250aW51ZSAgICMgbm8tb3AgZm9yIGZpbGVzIGxvYWRlZCB2aWEgYSBfX2xvYWRlcl9fCiAgICAgICAgIHRyeToKQEAgLTc2LDcgKzg1LDggQEAKICAgICBhbmQgcmV0dXJuIGFuIGVtcHR5IGxpc3QuIiIiCiAKICAgICBpZiBmaWxlbmFtZSBpbiBjYWNoZToKLSAgICAgICAgZGVsIGNhY2hlW2ZpbGVuYW1lXQorICAgICAgICBpZiBsZW4oY2FjaGVbZmlsZW5hbWVdKSAhPSAxOgorICAgICAgICAgICAgZGVsIGNhY2hlW2ZpbGVuYW1lXQogICAgIGlmIG5vdCBmaWxlbmFtZSBvciAoZmlsZW5hbWUuc3RhcnRzd2l0aCgnPCcpIGFuZCBmaWxlbmFtZS5lbmRzd2l0aCgnPicpKToKICAgICAgICAgcmV0dXJuIFtdCiAKQEAgLTg2LDI3ICs5NiwyMyBAQAogICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICBiYXNlbmFtZSA9IGZpbGVuYW1lCiAKLSAgICAgICAgIyBUcnkgZm9yIGEgX19sb2FkZXJfXywgaWYgYXZhaWxhYmxlCi0gICAgICAgIGlmIG1vZHVsZV9nbG9iYWxzIGFuZCAnX19sb2FkZXJfXycgaW4gbW9kdWxlX2dsb2JhbHM6Ci0gICAgICAgICAgICBuYW1lID0gbW9kdWxlX2dsb2JhbHMuZ2V0KCdfX25hbWVfXycpCi0gICAgICAgICAgICBsb2FkZXIgPSBtb2R1bGVfZ2xvYmFsc1snX19sb2FkZXJfXyddCi0gICAgICAgICAgICBnZXRfc291cmNlID0gZ2V0YXR0cihsb2FkZXIsICdnZXRfc291cmNlJywgTm9uZSkKLQotICAgICAgICAgICAgaWYgbmFtZSBhbmQgZ2V0X3NvdXJjZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBnZXRfc291cmNlKG5hbWUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgT1NFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBkYXRhIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIE5vIGx1Y2ssIHRoZSBQRVAzMDIgbG9hZGVyIGNhbm5vdCBmaW5kIHRoZSBzb3VyY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIHRoaXMgbW9kdWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdCi0gICAgICAgICAgICAgICAgICAgIGNhY2hlW2ZpbGVuYW1lXSA9ICgKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlbihkYXRhKSwgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5lKydcbicgZm9yIGxpbmUgaW4gZGF0YS5zcGxpdGxpbmVzKCldLCBmdWxsbmFtZQotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZVtmaWxlbmFtZV1bMl0KKyAgICAgICAgIyBSZWFsaXNlIGEgbGF6eSBsb2FkZXIgYmFzZWQgbG9va3VwIGlmIHRoZXJlIGlzIG9uZQorICAgICAgICAjIG90aGVyd2lzZSB0cnkgdG8gbG9va3VwIHJpZ2h0IG5vdy4KKyAgICAgICAgaWYgbGF6eWNhY2hlKGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGF0YSA9IGNhY2hlW2ZpbGVuYW1lXVswXSgpCisgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBPU0Vycm9yKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIGRhdGEgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgIyBObyBsdWNrLCB0aGUgUEVQMzAyIGxvYWRlciBjYW5ub3QgZmluZCB0aGUgc291cmNlCisgICAgICAgICAgICAgICAgICAgICMgZm9yIHRoaXMgbW9kdWxlLgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgICAgICAgICBjYWNoZVtmaWxlbmFtZV0gPSAoCisgICAgICAgICAgICAgICAgICAgIGxlbihkYXRhKSwgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgW2xpbmUrJ1xuJyBmb3IgbGluZSBpbiBkYXRhLnNwbGl0bGluZXMoKV0sIGZ1bGxuYW1lCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZVtmaWxlbmFtZV1bMl0KIAogICAgICAgICAjIFRyeSBsb29raW5nIHRocm91Z2ggdGhlIG1vZHVsZSBzZWFyY2ggcGF0aCwgd2hpY2ggaXMgb25seSB1c2VmdWwKICAgICAgICAgIyB3aGVuIGhhbmRsaW5nIGEgcmVsYXRpdmUgZmlsZW5hbWUuCkBAIC0xMzYsMyArMTQyLDM2IEBACiAgICAgc2l6ZSwgbXRpbWUgPSBzdGF0LnN0X3NpemUsIHN0YXQuc3RfbXRpbWUKICAgICBjYWNoZVtmaWxlbmFtZV0gPSBzaXplLCBtdGltZSwgbGluZXMsIGZ1bGxuYW1lCiAgICAgcmV0dXJuIGxpbmVzCisKKworZGVmIGxhenljYWNoZShmaWxlbmFtZSwgbW9kdWxlX2dsb2JhbHMpOgorICAgICIiIlNlZWQgdGhlIGNhY2hlIGZvciBmaWxlbmFtZSB3aXRoIG1vZHVsZV9nbG9iYWxzLgorCisgICAgVGhlIG1vZHVsZSBsb2FkZXIgd2lsbCBiZSBhc2tlZCBmb3IgdGhlIHNvdXJjZSBvbmx5IHdoZW4gZ2V0bGluZXMgaXMKKyAgICBjYWxsZWQsIG5vdCBpbW1lZGlhdGVseS4KKworICAgIElmIHRoZXJlIGlzIGFuIGVudHJ5IGluIHRoZSBjYWNoZSBhbHJlYWR5LCBpdCBpcyBub3QgYWx0ZXJlZC4KKworICAgIDpyZXR1cm46IFRydWUgaWYgYSBsYXp5IGxvYWQgaXMgcmVnaXN0ZXJlZCBpbiB0aGUgY2FjaGUsCisgICAgICAgIG90aGVyd2lzZSBGYWxzZS4gVG8gcmVnaXN0ZXIgc3VjaCBhIGxvYWQgYSBtb2R1bGUgbG9hZGVyIHdpdGggYQorICAgICAgICBnZXRfc291cmNlIG1ldGhvZCBtdXN0IGJlIGZvdW5kLCB0aGUgZmlsZW5hbWUgbXVzdCBiZSBhIGNhY2hhYmxlCisgICAgICAgIGZpbGVuYW1lLCBhbmQgdGhlIGZpbGVuYW1lIG11c3Qgbm90IGJlIGFscmVhZHkgY2FjaGVkLgorICAgICIiIgorICAgIGlmIGZpbGVuYW1lIGluIGNhY2hlOgorICAgICAgICBpZiBsZW4oY2FjaGVbZmlsZW5hbWVdKSA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgIGlmIG5vdCBmaWxlbmFtZSBvciAoZmlsZW5hbWUuc3RhcnRzd2l0aCgnPCcpIGFuZCBmaWxlbmFtZS5lbmRzd2l0aCgnPicpKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgIyBUcnkgZm9yIGEgX19sb2FkZXJfXywgaWYgYXZhaWxhYmxlCisgICAgaWYgbW9kdWxlX2dsb2JhbHMgYW5kICdfX2xvYWRlcl9fJyBpbiBtb2R1bGVfZ2xvYmFsczoKKyAgICAgICAgbmFtZSA9IG1vZHVsZV9nbG9iYWxzLmdldCgnX19uYW1lX18nKQorICAgICAgICBsb2FkZXIgPSBtb2R1bGVfZ2xvYmFsc1snX19sb2FkZXJfXyddCisgICAgICAgIGdldF9zb3VyY2UgPSBnZXRhdHRyKGxvYWRlciwgJ2dldF9zb3VyY2UnLCBOb25lKQorCisgICAgICAgIGlmIG5hbWUgYW5kIGdldF9zb3VyY2U6CisgICAgICAgICAgICBnZXRfbGluZXMgPSBmdW5jdG9vbHMucGFydGlhbChnZXRfc291cmNlLCBuYW1lKQorICAgICAgICAgICAgY2FjaGVbZmlsZW5hbWVdID0gKGdldF9saW5lcywpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgIHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvTGliL2xvY2FsZS5weSBiL0xpYi9sb2NhbGUucHkKaW5kZXggN2ZmNDM1Ni4uY2VhYTZkOCAxMDA2NDQKLS0tIGEvTGliL2xvY2FsZS5weQorKysgYi9MaWIvbG9jYWxlLnB5CkBAIC0zMDEsOCArMzAxLDggQEAKICAgICAiIiJDb252ZXJ0IGZsb2F0IHRvIGludGVnZXIsIHRha2luZyB0aGUgbG9jYWxlIGludG8gYWNjb3VudC4iIiIKICAgICByZXR1cm4gZm9ybWF0KCIlLjEyZyIsIHZhbCkKIAotZGVmIGF0b2Yoc3RyaW5nLCBmdW5jPWZsb2F0KToKLSAgICAiUGFyc2VzIGEgc3RyaW5nIGFzIGEgZmxvYXQgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbGUgc2V0dGluZ3MuIgorZGVmIGRlbG9jYWxpemUoc3RyaW5nKToKKyAgICAiUGFyc2VzIGEgc3RyaW5nIGFzIGEgbm9ybWFsaXplZCBudW1iZXIgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbGUgc2V0dGluZ3MuIgogICAgICNGaXJzdCwgZ2V0IHJpZCBvZiB0aGUgZ3JvdXBpbmcKICAgICB0cyA9IGxvY2FsZWNvbnYoKVsndGhvdXNhbmRzX3NlcCddCiAgICAgaWYgdHM6CkBAIC0zMTEsMTIgKzMxMSwxNSBAQAogICAgIGRkID0gbG9jYWxlY29udigpWydkZWNpbWFsX3BvaW50J10KICAgICBpZiBkZDoKICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoZGQsICcuJykKLSAgICAjZmluYWxseSwgcGFyc2UgdGhlIHN0cmluZwotICAgIHJldHVybiBmdW5jKHN0cmluZykKKyAgICByZXR1cm4gc3RyaW5nCiAKLWRlZiBhdG9pKHN0cik6CitkZWYgYXRvZihzdHJpbmcsIGZ1bmM9ZmxvYXQpOgorICAgICJQYXJzZXMgYSBzdHJpbmcgYXMgYSBmbG9hdCBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZSBzZXR0aW5ncy4iCisgICAgcmV0dXJuIGZ1bmMoZGVsb2NhbGl6ZShzdHJpbmcpKQorCitkZWYgYXRvaShzdHJpbmcpOgogICAgICJDb252ZXJ0cyBhIHN0cmluZyB0byBhbiBpbnRlZ2VyIGFjY29yZGluZyB0byB0aGUgbG9jYWxlIHNldHRpbmdzLiIKLSAgICByZXR1cm4gYXRvZihzdHIsIGludCkKKyAgICByZXR1cm4gaW50KGRlbG9jYWxpemUoc3RyaW5nKSkKIAogZGVmIF90ZXN0KCk6CiAgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpCkBAIC02OTYsNyArNjk5LDkgQEAKICAgICAnZXVjX2tyJzogICAgICAgICAgICAgICAgICAgICAgICdldWNLUicsCiAgICAgJ3V0Zl84JzogICAgICAgICAgICAgICAgICAgICAgICAnVVRGLTgnLAogICAgICdrb2k4X3InOiAgICAgICAgICAgICAgICAgICAgICAgJ0tPSTgtUicsCisgICAgJ2tvaThfdCc6ICAgICAgICAgICAgICAgICAgICAgICAnS09JOC1UJywKICAgICAna29pOF91JzogICAgICAgICAgICAgICAgICAgICAgICdLT0k4LVUnLAorICAgICdrejEwNDgnOiAgICAgICAgICAgICAgICAgICAgICAgJ1JLMTA0OCcsCiAgICAgJ2NwMTI1MSc6ICAgICAgICAgICAgICAgICAgICAgICAnQ1AxMjUxJywKICAgICAnY3AxMjU1JzogICAgICAgICAgICAgICAgICAgICAgICdDUDEyNTUnLAogICAgICdjcDEyNTYnOiAgICAgICAgICAgICAgICAgICAgICAgJ0NQMTI1NicsCmRpZmYgLS1naXQgYS9MaWIvbG9nZ2luZy9fX2luaXRfXy5weSBiL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CmluZGV4IDY3ZDlkMmUuLjEwNGIwYmUgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CisrKyBiL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgMjAwMS0yMDE0IGJ5IFZpbmF5IFNhamlwLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIyBDb3B5cmlnaHQgMjAwMS0yMDE1IGJ5IFZpbmF5IFNhamlwLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogIwogIyBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZCBpdHMKICMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLApAQCAtMTgsNyArMTgsNyBAQAogTG9nZ2luZyBwYWNrYWdlIGZvciBQeXRob24uIEJhc2VkIG9uIFBFUCAyODIgYW5kIGNvbW1lbnRzIHRoZXJldG8gaW4KIGNvbXAubGFuZy5weXRob24uCiAKLUNvcHlyaWdodCAoQykgMjAwMS0yMDE0IFZpbmF5IFNhamlwLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChDKSAyMDAxLTIwMTUgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRvIHVzZSwgc2ltcGx5ICdpbXBvcnQgbG9nZ2luZycgYW5kIGxvZyBhd2F5IQogIiIiCkBAIC0zMTYsNiArMzE2LDggQEAKICAgICAgICAgcmV0dXJuICc8TG9nUmVjb3JkOiAlcywgJXMsICVzLCAlcywgIiVzIj4nJShzZWxmLm5hbWUsIHNlbGYubGV2ZWxubywKICAgICAgICAgICAgIHNlbGYucGF0aG5hbWUsIHNlbGYubGluZW5vLCBzZWxmLm1zZykKIAorICAgIF9fcmVwcl9fID0gX19zdHJfXworCiAgICAgZGVmIGdldE1lc3NhZ2Uoc2VsZik6CiAgICAgICAgICIiIgogICAgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UgZm9yIHRoaXMgTG9nUmVjb3JkLgpAQCAtMTA5MSw3ICsxMDkzLDYgQEAKICMKICMgICBEZXRlcm1pbmUgd2hpY2ggY2xhc3MgdG8gdXNlIHdoZW4gaW5zdGFudGlhdGluZyBsb2dnZXJzLgogIwotX2xvZ2dlckNsYXNzID0gTm9uZQogCiBkZWYgc2V0TG9nZ2VyQ2xhc3Moa2xhc3MpOgogICAgICIiIgpAQCAtMTExMCw3ICsxMTExLDYgQEAKICAgICAiIiIKICAgICBSZXR1cm4gdGhlIGNsYXNzIHRvIGJlIHVzZWQgd2hlbiBpbnN0YW50aWF0aW5nIGEgbG9nZ2VyLgogICAgICIiIgotCiAgICAgcmV0dXJuIF9sb2dnZXJDbGFzcwogCiBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CkBAIC0xMzA3LDEyICsxMzA3LDExIEBACiAgICAgICAgIGlmIHNlbGYuaXNFbmFibGVkRm9yKEVSUk9SKToKICAgICAgICAgICAgIHNlbGYuX2xvZyhFUlJPUiwgbXNnLCBhcmdzLCAqKmt3YXJncykKIAotICAgIGRlZiBleGNlcHRpb24oc2VsZiwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgorICAgIGRlZiBleGNlcHRpb24oc2VsZiwgbXNnLCAqYXJncywgZXhjX2luZm89VHJ1ZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiIKICAgICAgICAgQ29udmVuaWVuY2UgbWV0aG9kIGZvciBsb2dnaW5nIGFuIEVSUk9SIHdpdGggZXhjZXB0aW9uIGluZm9ybWF0aW9uLgogICAgICAgICAiIiIKLSAgICAgICAga3dhcmdzWydleGNfaW5mbyddID0gVHJ1ZQotICAgICAgICBzZWxmLmVycm9yKG1zZywgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLmVycm9yKG1zZywgKmFyZ3MsIGV4Y19pbmZvPWV4Y19pbmZvLCAqKmt3YXJncykKIAogICAgIGRlZiBjcml0aWNhbChzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIgpAQCAtMTQwNyw3ICsxNDA2LDkgQEAKICAgICAgICAgZWxzZTogIyBwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICBmbiwgbG5vLCBmdW5jID0gIih1bmtub3duIGZpbGUpIiwgMCwgIih1bmtub3duIGZ1bmN0aW9uKSIKICAgICAgICAgaWYgZXhjX2luZm86Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShleGNfaW5mbywgdHVwbGUpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShleGNfaW5mbywgQmFzZUV4Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgZXhjX2luZm8gPSAodHlwZShleGNfaW5mbyksIGV4Y19pbmZvLCBleGNfaW5mby5fX3RyYWNlYmFja19fKQorICAgICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShleGNfaW5mbywgdHVwbGUpOgogICAgICAgICAgICAgICAgIGV4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgcmVjb3JkID0gc2VsZi5tYWtlUmVjb3JkKHNlbGYubmFtZSwgbGV2ZWwsIGZuLCBsbm8sIG1zZywgYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y19pbmZvLCBmdW5jLCBleHRyYSwgc2luZm8pCkBAIC0xNjE3LDEyICsxNjE4LDExIEBACiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmxvZyhFUlJPUiwgbXNnLCAqYXJncywgKiprd2FyZ3MpCiAKLSAgICBkZWYgZXhjZXB0aW9uKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICBkZWYgZXhjZXB0aW9uKHNlbGYsIG1zZywgKmFyZ3MsIGV4Y19pbmZvPVRydWUsICoqa3dhcmdzKToKICAgICAgICAgIiIiCiAgICAgICAgIERlbGVnYXRlIGFuIGV4Y2VwdGlvbiBjYWxsIHRvIHRoZSB1bmRlcmx5aW5nIGxvZ2dlci4KICAgICAgICAgIiIiCi0gICAgICAgIGt3YXJnc1siZXhjX2luZm8iXSA9IFRydWUKLSAgICAgICAgc2VsZi5sb2coRVJST1IsIG1zZywgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLmxvZyhFUlJPUiwgbXNnLCAqYXJncywgZXhjX2luZm89ZXhjX2luZm8sICoqa3dhcmdzKQogCiAgICAgZGVmIGNyaXRpY2FsKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiCkBAIC0xODA0LDE0ICsxODA0LDEzIEBACiAgICAgICAgIGJhc2ljQ29uZmlnKCkKICAgICByb290LmVycm9yKG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCi1kZWYgZXhjZXB0aW9uKG1zZywgKmFyZ3MsICoqa3dhcmdzKToKK2RlZiBleGNlcHRpb24obXNnLCAqYXJncywgZXhjX2luZm89VHJ1ZSwgKiprd2FyZ3MpOgogICAgICIiIgogICAgIExvZyBhIG1lc3NhZ2Ugd2l0aCBzZXZlcml0eSAnRVJST1InIG9uIHRoZSByb290IGxvZ2dlciwgd2l0aCBleGNlcHRpb24KICAgICBpbmZvcm1hdGlvbi4gSWYgdGhlIGxvZ2dlciBoYXMgbm8gaGFuZGxlcnMsIGJhc2ljQ29uZmlnKCkgaXMgY2FsbGVkIHRvIGFkZAogICAgIGEgY29uc29sZSBoYW5kbGVyIHdpdGggYSBwcmUtZGVmaW5lZCBmb3JtYXQuCiAgICAgIiIiCi0gICAga3dhcmdzWydleGNfaW5mbyddID0gVHJ1ZQotICAgIGVycm9yKG1zZywgKmFyZ3MsICoqa3dhcmdzKQorICAgIGVycm9yKG1zZywgKmFyZ3MsIGV4Y19pbmZvPWV4Y19pbmZvLCAqKmt3YXJncykKIAogZGVmIHdhcm5pbmcobXNnLCAqYXJncywgKiprd2FyZ3MpOgogICAgICIiIgpkaWZmIC0tZ2l0IGEvTGliL2xvZ2dpbmcvY29uZmlnLnB5IGIvTGliL2xvZ2dpbmcvY29uZmlnLnB5CmluZGV4IDg5NWZiMjYuLjhhOTk5MjMgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL2NvbmZpZy5weQorKysgYi9MaWIvbG9nZ2luZy9jb25maWcucHkKQEAgLTExNiwxMSArMTE2LDEyIEBACiAgICAgICAgIHNlY3RuYW1lID0gImZvcm1hdHRlcl8lcyIgJSBmb3JtCiAgICAgICAgIGZzID0gY3AuZ2V0KHNlY3RuYW1lLCAiZm9ybWF0IiwgcmF3PVRydWUsIGZhbGxiYWNrPU5vbmUpCiAgICAgICAgIGRmcyA9IGNwLmdldChzZWN0bmFtZSwgImRhdGVmbXQiLCByYXc9VHJ1ZSwgZmFsbGJhY2s9Tm9uZSkKKyAgICAgICAgc3RsID0gY3AuZ2V0KHNlY3RuYW1lLCAic3R5bGUiLCByYXc9VHJ1ZSwgZmFsbGJhY2s9JyUnKQogICAgICAgICBjID0gbG9nZ2luZy5Gb3JtYXR0ZXIKICAgICAgICAgY2xhc3NfbmFtZSA9IGNwW3NlY3RuYW1lXS5nZXQoImNsYXNzIikKICAgICAgICAgaWYgY2xhc3NfbmFtZToKICAgICAgICAgICAgIGMgPSBfcmVzb2x2ZShjbGFzc19uYW1lKQotICAgICAgICBmID0gYyhmcywgZGZzKQorICAgICAgICBmID0gYyhmcywgZGZzLCBzdGwpCiAgICAgICAgIGZvcm1hdHRlcnNbZm9ybV0gPSBmCiAgICAgcmV0dXJuIGZvcm1hdHRlcnMKIApAQCAtNjYwLDcgKzY2MSwxMiBAQAogICAgICAgICAgICAgZm10ID0gY29uZmlnLmdldCgnZm9ybWF0JywgTm9uZSkKICAgICAgICAgICAgIGRmbXQgPSBjb25maWcuZ2V0KCdkYXRlZm10JywgTm9uZSkKICAgICAgICAgICAgIHN0eWxlID0gY29uZmlnLmdldCgnc3R5bGUnLCAnJScpCi0gICAgICAgICAgICByZXN1bHQgPSBsb2dnaW5nLkZvcm1hdHRlcihmbXQsIGRmbXQsIHN0eWxlKQorICAgICAgICAgICAgY25hbWUgPSBjb25maWcuZ2V0KCdjbGFzcycsIE5vbmUpCisgICAgICAgICAgICBpZiBub3QgY25hbWU6CisgICAgICAgICAgICAgICAgYyA9IGxvZ2dpbmcuRm9ybWF0dGVyCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGMgPSBfcmVzb2x2ZShjbmFtZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IGMoZm10LCBkZm10LCBzdHlsZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIGNvbmZpZ3VyZV9maWx0ZXIoc2VsZiwgY29uZmlnKToKZGlmZiAtLWdpdCBhL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5IGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKaW5kZXggMTNhOGZiMi4uYzY4NDBjMyAxMDA2NDQKLS0tIGEvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKKysrIGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKQEAgLTU4OCw2ICs1ODgsOCBAQAogICAgICAgICBkWydtc2cnXSA9IHJlY29yZC5nZXRNZXNzYWdlKCkKICAgICAgICAgZFsnYXJncyddID0gTm9uZQogICAgICAgICBkWydleGNfaW5mbyddID0gTm9uZQorICAgICAgICAjIElzc3VlICMyNTY4NTogZGVsZXRlICdtZXNzYWdlJyBpZiBwcmVzZW50OiByZWR1bmRhbnQgd2l0aCAnbXNnJworICAgICAgICBkLnBvcCgnbWVzc2FnZScsIE5vbmUpCiAgICAgICAgIHMgPSBwaWNrbGUuZHVtcHMoZCwgMSkKICAgICAgICAgc2xlbiA9IHN0cnVjdC5wYWNrKCI+TCIsIGxlbihzKSkKICAgICAgICAgcmV0dXJuIHNsZW4gKyBzCkBAIC0xMzU3LDcgKzEzNTksNyBAQAogICAgICAgICAiIiIKICAgICAgICAgX3NlbnRpbmVsID0gTm9uZQogCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxdWV1ZSwgKmhhbmRsZXJzKToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1ZXVlLCAqaGFuZGxlcnMsIHJlc3BlY3RfaGFuZGxlcl9sZXZlbD1GYWxzZSk6CiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIEluaXRpYWxpc2UgYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHF1ZXVlIGFuZAogICAgICAgICAgICAgaGFuZGxlcnMuCkBAIC0xMzY2LDYgKzEzNjgsNyBAQAogICAgICAgICAgICAgc2VsZi5oYW5kbGVycyA9IGhhbmRsZXJzCiAgICAgICAgICAgICBzZWxmLl9zdG9wID0gdGhyZWFkaW5nLkV2ZW50KCkKICAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYucmVzcGVjdF9oYW5kbGVyX2xldmVsID0gcmVzcGVjdF9oYW5kbGVyX2xldmVsCiAKICAgICAgICAgZGVmIGRlcXVldWUoc2VsZiwgYmxvY2spOgogICAgICAgICAgICAgIiIiCkBAIC0xNDA2LDcgKzE0MDksMTIgQEAKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgcmVjb3JkID0gc2VsZi5wcmVwYXJlKHJlY29yZCkKICAgICAgICAgICAgIGZvciBoYW5kbGVyIGluIHNlbGYuaGFuZGxlcnM6Ci0gICAgICAgICAgICAgICAgaGFuZGxlci5oYW5kbGUocmVjb3JkKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJlc3BlY3RfaGFuZGxlcl9sZXZlbDoKKyAgICAgICAgICAgICAgICAgICAgcHJvY2VzcyA9IFRydWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzID0gcmVjb3JkLmxldmVsbm8gPj0gaGFuZGxlci5sZXZlbAorICAgICAgICAgICAgICAgIGlmIHByb2Nlc3M6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIuaGFuZGxlKHJlY29yZCkKIAogICAgICAgICBkZWYgX21vbml0b3Ioc2VsZik6CiAgICAgICAgICAgICAiIiIKZGlmZiAtLWdpdCBhL0xpYi9sem1hLnB5IGIvTGliL2x6bWEucHkKaW5kZXggZjFkMzk1OC4uODk1MjhiNiAxMDA2NDQKLS0tIGEvTGliL2x6bWEucHkKKysrIGIvTGliL2x6bWEucHkKQEAgLTI1LDE3ICsyNSwxNiBAQAogaW1wb3J0IGlvCiBmcm9tIF9sem1hIGltcG9ydCAqCiBmcm9tIF9sem1hIGltcG9ydCBfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzLCBfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzCitpbXBvcnQgX2NvbXByZXNzaW9uCiAKIAogX01PREVfQ0xPU0VEICAgPSAwCiBfTU9ERV9SRUFEICAgICA9IDEKLV9NT0RFX1JFQURfRU9GID0gMgorIyBWYWx1ZSAyIG5vIGxvbmdlciB1c2VkCiBfTU9ERV9XUklURSAgICA9IDMKIAotX0JVRkZFUl9TSVpFID0gODE5MgogCi0KLWNsYXNzIExaTUFGaWxlKGlvLkJ1ZmZlcmVkSU9CYXNlKToKK2NsYXNzIExaTUFGaWxlKF9jb21wcmVzc2lvbi5CYXNlU3RyZWFtKToKIAogICAgICIiIkEgZmlsZSBvYmplY3QgcHJvdmlkaW5nIHRyYW5zcGFyZW50IExaTUEgKGRlKWNvbXByZXNzaW9uLgogCkBAIC05Miw4ICs5MSw2IEBACiAgICAgICAgIHNlbGYuX2ZwID0gTm9uZQogICAgICAgICBzZWxmLl9jbG9zZWZwID0gRmFsc2UKICAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX0NMT1NFRAotICAgICAgICBzZWxmLl9wb3MgPSAwCi0gICAgICAgIHNlbGYuX3NpemUgPSAtMQogCiAgICAgICAgIGlmIG1vZGUgaW4gKCJyIiwgInJiIik6CiAgICAgICAgICAgICBpZiBjaGVjayAhPSAtMToKQEAgLTEwNSwxOSArMTAyLDEzIEBACiAgICAgICAgICAgICBpZiBmb3JtYXQgaXMgTm9uZToKICAgICAgICAgICAgICAgICBmb3JtYXQgPSBGT1JNQVRfQVVUTwogICAgICAgICAgICAgbW9kZV9jb2RlID0gX01PREVfUkVBRAotICAgICAgICAgICAgIyBTYXZlIHRoZSBhcmdzIHRvIHBhc3MgdG8gdGhlIExaTUFEZWNvbXByZXNzb3IgaW5pdGlhbGl6ZXIuCi0gICAgICAgICAgICAjIElmIHRoZSBmaWxlIGNvbnRhaW5zIG11bHRpcGxlIGNvbXByZXNzZWQgc3RyZWFtcywgZWFjaAotICAgICAgICAgICAgIyBzdHJlYW0gd2lsbCBuZWVkIGEgc2VwYXJhdGUgZGVjb21wcmVzc29yIG9iamVjdC4KLSAgICAgICAgICAgIHNlbGYuX2luaXRfYXJncyA9IHsiZm9ybWF0Ijpmb3JtYXQsICJmaWx0ZXJzIjpmaWx0ZXJzfQotICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTFpNQURlY29tcHJlc3NvcigqKnNlbGYuX2luaXRfYXJncykKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKICAgICAgICAgZWxpZiBtb2RlIGluICgidyIsICJ3YiIsICJhIiwgImFiIiwgIngiLCAieGIiKToKICAgICAgICAgICAgIGlmIGZvcm1hdCBpcyBOb25lOgogICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZPUk1BVF9YWgogICAgICAgICAgICAgbW9kZV9jb2RlID0gX01PREVfV1JJVEUKICAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzb3IgPSBMWk1BQ29tcHJlc3Nvcihmb3JtYXQ9Zm9ybWF0LCBjaGVjaz1jaGVjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXQ9cHJlc2V0LCBmaWx0ZXJzPWZpbHRlcnMpCisgICAgICAgICAgICBzZWxmLl9wb3MgPSAwCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIG1vZGU6IHshcn0iLmZvcm1hdChtb2RlKSkKIApAQCAtMTMzLDYgKzEyNCwxMSBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgb3IgYSBmaWxlIikKIAorICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQUQ6CisgICAgICAgICAgICByYXcgPSBfY29tcHJlc3Npb24uRGVjb21wcmVzc1JlYWRlcihzZWxmLl9mcCwgTFpNQURlY29tcHJlc3NvciwKKyAgICAgICAgICAgICAgICB0cmFpbGluZ19lcnJvcj1MWk1BRXJyb3IsIGZvcm1hdD1mb3JtYXQsIGZpbHRlcnM9ZmlsdGVycykKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGlvLkJ1ZmZlcmVkUmVhZGVyKHJhdykKKwogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgIiIiRmx1c2ggYW5kIGNsb3NlIHRoZSBmaWxlLgogCkBAIC0xNDIsOSArMTM4LDkgQEAKICAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9DTE9TRUQ6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgc2VsZi5fbW9kZSBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpOgotICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IE5vbmUKLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBiIiIKKyAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIuY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKICAgICAgICAgICAgIGVsaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURToKICAgICAgICAgICAgICAgICBzZWxmLl9mcC53cml0ZShzZWxmLl9jb21wcmVzc29yLmZsdXNoKCkpCiAgICAgICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IE5vbmUKQEAgLTE2OSwxMjMgKzE2NSwxOCBAQAogCiAgICAgZGVmIHNlZWthYmxlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSBzdXBwb3J0cyBzZWVraW5nLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWJsZSgpIGFuZCBzZWxmLl9mcC5zZWVrYWJsZSgpCisgICAgICAgIHJldHVybiBzZWxmLnJlYWRhYmxlKCkgYW5kIHNlbGYuX2J1ZmZlci5zZWVrYWJsZSgpCiAKICAgICBkZWYgcmVhZGFibGUoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHdhcyBvcGVuZWQgZm9yIHJlYWRpbmcuIiIiCiAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQotICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpCisgICAgICAgIHJldHVybiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQUQKIAogICAgIGRlZiB3cml0YWJsZShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgd2FzIG9wZW5lZCBmb3Igd3JpdGluZy4iIiIKICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCiAgICAgICAgIHJldHVybiBzZWxmLl9tb2RlID09IF9NT0RFX1dSSVRFCiAKLSAgICAjIE1vZGUtY2hlY2tpbmcgaGVscGVyIGZ1bmN0aW9ucy4KLQotICAgIGRlZiBfY2hlY2tfbm90X2Nsb3NlZChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKLQotICAgIGRlZiBfY2hlY2tfY2FuX3JlYWQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX21vZGUgbm90IGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRik6Ci0gICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKLSAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJGaWxlIG5vdCBvcGVuIGZvciByZWFkaW5nIikKLQotICAgIGRlZiBfY2hlY2tfY2FuX3dyaXRlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9tb2RlICE9IF9NT0RFX1dSSVRFOgotICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCi0gICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiRmlsZSBub3Qgb3BlbiBmb3Igd3JpdGluZyIpCi0KLSAgICBkZWYgX2NoZWNrX2Nhbl9zZWVrKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9tb2RlIG5vdCBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpOgotICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCi0gICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiU2Vla2luZyBpcyBvbmx5IHN1cHBvcnRlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib24gZmlsZXMgb3BlbiBmb3IgcmVhZGluZyIpCi0gICAgICAgIGlmIG5vdCBzZWxmLl9mcC5zZWVrYWJsZSgpOgotICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIlRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb2VzIG5vdCBzdXBwb3J0IHNlZWtpbmciKQotCi0gICAgIyBGaWxsIHRoZSByZWFkYWhlYWQgYnVmZmVyIGlmIGl0IGlzIGVtcHR5LiBSZXR1cm5zIEZhbHNlIG9uIEVPRi4KLSAgICBkZWYgX2ZpbGxfYnVmZmVyKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQURfRU9GOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICMgRGVwZW5kaW5nIG9uIHRoZSBpbnB1dCBkYXRhLCBvdXIgY2FsbCB0byB0aGUgZGVjb21wcmVzc29yIG1heSBub3QKLSAgICAgICAgIyByZXR1cm4gYW55IGRhdGEuIEluIHRoaXMgY2FzZSwgdHJ5IGFnYWluIGFmdGVyIHJlYWRpbmcgYW5vdGhlciBibG9jay4KLSAgICAgICAgd2hpbGUgc2VsZi5fYnVmZmVyX29mZnNldCA9PSBsZW4oc2VsZi5fYnVmZmVyKToKLSAgICAgICAgICAgIHJhd2Jsb2NrID0gKHNlbGYuX2RlY29tcHJlc3Nvci51bnVzZWRfZGF0YSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnAucmVhZChfQlVGRkVSX1NJWkUpKQotCi0gICAgICAgICAgICBpZiBub3QgcmF3YmxvY2s6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX1JFQURfRU9GCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NpemUgPSBzZWxmLl9wb3MKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKLQotICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKLSAgICAgICAgICAgICAgICAjIENvbnRpbnVlIHRvIG5leHQgc3RyZWFtLgotICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IExaTUFEZWNvbXByZXNzb3IoKipzZWxmLl9pbml0X2FyZ3MpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhyYXdibG9jaykKLSAgICAgICAgICAgICAgICBleGNlcHQgTFpNQUVycm9yOgotICAgICAgICAgICAgICAgICAgICAjIFRyYWlsaW5nIGRhdGEgaXNuJ3QgYSB2YWxpZCBjb21wcmVzc2VkIHN0cmVhbTsgaWdub3JlIGl0LgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRF9FT0YKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2l6ZSA9IHNlbGYuX3BvcwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fZGVjb21wcmVzc29yLmRlY29tcHJlc3MocmF3YmxvY2spCi0gICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgIyBSZWFkIGRhdGEgdW50aWwgRU9GLgotICAgICMgSWYgcmV0dXJuX2RhdGEgaXMgZmFsc2UsIGNvbnN1bWUgdGhlIGRhdGEgd2l0aG91dCByZXR1cm5pbmcgaXQuCi0gICAgZGVmIF9yZWFkX2FsbChzZWxmLCByZXR1cm5fZGF0YT1UcnVlKToKLSAgICAgICAgIyBUaGUgbG9vcCBhc3N1bWVzIHRoYXQgX2J1ZmZlcl9vZmZzZXQgaXMgMC4gRW5zdXJlIHRoYXQgdGhpcyBpcyB0cnVlLgotICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldDpdCi0gICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0KLSAgICAgICAgYmxvY2tzID0gW10KLSAgICAgICAgd2hpbGUgc2VsZi5fZmlsbF9idWZmZXIoKToKLSAgICAgICAgICAgIGlmIHJldHVybl9kYXRhOgotICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQoc2VsZi5fYnVmZmVyKQotICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihzZWxmLl9idWZmZXIpCi0gICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBiIiIKLSAgICAgICAgaWYgcmV0dXJuX2RhdGE6Ci0gICAgICAgICAgICByZXR1cm4gYiIiLmpvaW4oYmxvY2tzKQotCi0gICAgIyBSZWFkIGEgYmxvY2sgb2YgdXAgdG8gbiBieXRlcy4KLSAgICAjIElmIHJldHVybl9kYXRhIGlzIGZhbHNlLCBjb25zdW1lIHRoZSBkYXRhIHdpdGhvdXQgcmV0dXJuaW5nIGl0LgotICAgIGRlZiBfcmVhZF9ibG9jayhzZWxmLCBuLCByZXR1cm5fZGF0YT1UcnVlKToKLSAgICAgICAgIyBJZiB3ZSBoYXZlIGVub3VnaCBkYXRhIGJ1ZmZlcmVkLCByZXR1cm4gaW1tZWRpYXRlbHkuCi0gICAgICAgIGVuZCA9IHNlbGYuX2J1ZmZlcl9vZmZzZXQgKyBuCi0gICAgICAgIGlmIGVuZCA8PSBsZW4oc2VsZi5fYnVmZmVyKToKLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldCA6IGVuZF0KLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSBlbmQKLSAgICAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4oZGF0YSkKLSAgICAgICAgICAgIHJldHVybiBkYXRhIGlmIHJldHVybl9kYXRhIGVsc2UgTm9uZQotCi0gICAgICAgICMgVGhlIGxvb3AgYXNzdW1lcyB0aGF0IF9idWZmZXJfb2Zmc2V0IGlzIDAuIEVuc3VyZSB0aGF0IHRoaXMgaXMgdHJ1ZS4KLSAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQ6XQotICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAotCi0gICAgICAgIGJsb2NrcyA9IFtdCi0gICAgICAgIHdoaWxlIG4gPiAwIGFuZCBzZWxmLl9maWxsX2J1ZmZlcigpOgotICAgICAgICAgICAgaWYgbiA8IGxlbihzZWxmLl9idWZmZXIpOgotICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXJbOm5dCi0gICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IG4KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcgotICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICAgICAgaWYgcmV0dXJuX2RhdGE6Ci0gICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChkYXRhKQotICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQotICAgICAgICAgICAgbiAtPSBsZW4oZGF0YSkKLSAgICAgICAgaWYgcmV0dXJuX2RhdGE6Ci0gICAgICAgICAgICByZXR1cm4gYiIiLmpvaW4oYmxvY2tzKQotCiAgICAgZGVmIHBlZWsoc2VsZiwgc2l6ZT0tMSk6CiAgICAgICAgICIiIlJldHVybiBidWZmZXJlZCBkYXRhIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBmaWxlIHBvc2l0aW9uLgogCkBAIC0yOTMsOSArMTg0LDkgQEAKICAgICAgICAgVGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyByZXR1cm5lZCBpcyB1bnNwZWNpZmllZC4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKLSAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGxfYnVmZmVyKCk6Ci0gICAgICAgICAgICByZXR1cm4gYiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldDpdCisgICAgICAgICMgUmVsaWVzIG9uIHRoZSB1bmRvY3VtZW50ZWQgZmFjdCB0aGF0IEJ1ZmZlcmVkUmVhZGVyLnBlZWsoKSBhbHdheXMKKyAgICAgICAgIyByZXR1cm5zIGF0IGxlYXN0IG9uZSBieXRlIChleGNlcHQgYXQgRU9GKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnBlZWsoc2l6ZSkKIAogICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgogICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCkBAIC0zMDQsMzggKzE5NSwxOSBAQAogICAgICAgICBSZXR1cm5zIGIiIiBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGF0IEVPRi4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKLSAgICAgICAgaWYgc2l6ZSA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIGIiIgotICAgICAgICBlbGlmIHNpemUgPCAwOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfYWxsKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkX2Jsb2NrKHNpemUpCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZChzaXplKQogCiAgICAgZGVmIHJlYWQxKHNlbGYsIHNpemU9LTEpOgogICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzLCB3aGlsZSB0cnlpbmcgdG8gYXZvaWQKLSAgICAgICAgbWFraW5nIG11bHRpcGxlIHJlYWRzIGZyb20gdGhlIHVuZGVybHlpbmcgc3RyZWFtLgorICAgICAgICBtYWtpbmcgbXVsdGlwbGUgcmVhZHMgZnJvbSB0aGUgdW5kZXJseWluZyBzdHJlYW0uIFJlYWRzIHVwIHRvIGEKKyAgICAgICAgYnVmZmVyJ3Mgd29ydGggb2YgZGF0YSBpZiBzaXplIGlzIG5lZ2F0aXZlLgogCiAgICAgICAgIFJldHVybnMgYiIiIGlmIHRoZSBmaWxlIGlzIGF0IEVPRi4KICAgICAgICAgIiIiCi0gICAgICAgICMgVXN1YWxseSwgcmVhZDEoKSBjYWxscyBfZnAucmVhZCgpIGF0IG1vc3Qgb25jZS4gSG93ZXZlciwgc29tZXRpbWVzCi0gICAgICAgICMgdGhpcyBkb2VzIG5vdCBnaXZlIGVub3VnaCBkYXRhIGZvciB0aGUgZGVjb21wcmVzc29yIHRvIG1ha2UgcHJvZ3Jlc3MuCi0gICAgICAgICMgSW4gdGhpcyBjYXNlIHdlIG1ha2UgbXVsdGlwbGUgcmVhZHMsIHRvIGF2b2lkIHJldHVybmluZyBiIiIuCiAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKLSAgICAgICAgaWYgKHNpemUgPT0gMCBvcgotICAgICAgICAgICAgIyBPbmx5IGNhbGwgX2ZpbGxfYnVmZmVyKCkgaWYgdGhlIGJ1ZmZlciBpcyBhY3R1YWxseSBlbXB0eS4KLSAgICAgICAgICAgICMgVGhpcyBnaXZlcyBhIHNpZ25pZmljYW50IHNwZWVkdXAgaWYgKnNpemUqIGlzIHNtYWxsLgotICAgICAgICAgICAgKHNlbGYuX2J1ZmZlcl9vZmZzZXQgPT0gbGVuKHNlbGYuX2J1ZmZlcikgYW5kIG5vdCBzZWxmLl9maWxsX2J1ZmZlcigpKSk6Ci0gICAgICAgICAgICByZXR1cm4gYiIiCi0gICAgICAgIGlmIHNpemUgPiAwOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCArIHNpemVdCi0gICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ICs9IGxlbihkYXRhKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKLSAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQotICAgICAgICByZXR1cm4gZGF0YQorICAgICAgICBpZiBzaXplIDwgMDoKKyAgICAgICAgICAgIHNpemUgPSBpby5ERUZBVUxUX0JVRkZFUl9TSVpFCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZDEoc2l6ZSkKIAogICAgIGRlZiByZWFkbGluZShzZWxmLCBzaXplPS0xKToKICAgICAgICAgIiIiUmVhZCBhIGxpbmUgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCkBAIC0zNDUsMTUgKzIxNyw3IEBACiAgICAgICAgIGNhc2UgdGhlIGxpbmUgbWF5IGJlIGluY29tcGxldGUpLiBSZXR1cm5zIGInJyBpZiBhbHJlYWR5IGF0IEVPRi4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKLSAgICAgICAgIyBTaG9ydGN1dCBmb3IgdGhlIGNvbW1vbiBjYXNlIC0gdGhlIHdob2xlIGxpbmUgaXMgaW4gdGhlIGJ1ZmZlci4KLSAgICAgICAgaWYgc2l6ZSA8IDA6Ci0gICAgICAgICAgICBlbmQgPSBzZWxmLl9idWZmZXIuZmluZChiIlxuIiwgc2VsZi5fYnVmZmVyX29mZnNldCkgKyAxCi0gICAgICAgICAgICBpZiBlbmQgPiAwOgotICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldCA6IGVuZF0KLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gZW5kCi0gICAgICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihsaW5lKQotICAgICAgICAgICAgICAgIHJldHVybiBsaW5lCi0gICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkbGluZShzZWxmLCBzaXplKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnJlYWRsaW5lKHNpemUpCiAKICAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CiAgICAgICAgICIiIldyaXRlIGEgYnl0ZXMgb2JqZWN0IHRvIHRoZSBmaWxlLgpAQCAtMzY4LDE2ICsyMzIsNyBAQAogICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCiAgICAgICAgIHJldHVybiBsZW4oZGF0YSkKIAotICAgICMgUmV3aW5kIHRoZSBmaWxlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRhdGEgc3RyZWFtLgotICAgIGRlZiBfcmV3aW5kKHNlbGYpOgotICAgICAgICBzZWxmLl9mcC5zZWVrKDAsIDApCi0gICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9SRUFECi0gICAgICAgIHNlbGYuX3BvcyA9IDAKLSAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTFpNQURlY29tcHJlc3NvcigqKnNlbGYuX2luaXRfYXJncykKLSAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCi0gICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0KLSAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQsIHdoZW5jZT0wKToKKyAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQsIHdoZW5jZT1pby5TRUVLX1NFVCk6CiAgICAgICAgICIiIkNoYW5nZSB0aGUgZmlsZSBwb3NpdGlvbi4KIAogICAgICAgICBUaGUgbmV3IHBvc2l0aW9uIGlzIHNwZWNpZmllZCBieSBvZmZzZXQsIHJlbGF0aXZlIHRvIHRoZQpAQCAtMzg5LDM4ICsyNDQsMTcgQEAKIAogICAgICAgICBSZXR1cm5zIHRoZSBuZXcgZmlsZSBwb3NpdGlvbi4KIAotICAgICAgICBOb3RlIHRoYXQgc2Vla2luZyBpcyBlbXVsYXRlZCwgc3AgZGVwZW5kaW5nIG9uIHRoZSBwYXJhbWV0ZXJzLAorICAgICAgICBOb3RlIHRoYXQgc2Vla2luZyBpcyBlbXVsYXRlZCwgc28gZGVwZW5kaW5nIG9uIHRoZSBwYXJhbWV0ZXJzLAogICAgICAgICB0aGlzIG9wZXJhdGlvbiBtYXkgYmUgZXh0cmVtZWx5IHNsb3cuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9jaGVja19jYW5fc2VlaygpCi0KLSAgICAgICAgIyBSZWNhbGN1bGF0ZSBvZmZzZXQgYXMgYW4gYWJzb2x1dGUgZmlsZSBwb3NpdGlvbi4KLSAgICAgICAgaWYgd2hlbmNlID09IDA6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsaWYgd2hlbmNlID09IDE6Ci0gICAgICAgICAgICBvZmZzZXQgPSBzZWxmLl9wb3MgKyBvZmZzZXQKLSAgICAgICAgZWxpZiB3aGVuY2UgPT0gMjoKLSAgICAgICAgICAgICMgU2Vla2luZyByZWxhdGl2ZSB0byBFT0YgLSB3ZSBuZWVkIHRvIGtub3cgdGhlIGZpbGUncyBzaXplLgotICAgICAgICAgICAgaWYgc2VsZi5fc2l6ZSA8IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9hbGwocmV0dXJuX2RhdGE9RmFsc2UpCi0gICAgICAgICAgICBvZmZzZXQgPSBzZWxmLl9zaXplICsgb2Zmc2V0Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHZhbHVlIGZvciB3aGVuY2U6IHt9Ii5mb3JtYXQod2hlbmNlKSkKLQotICAgICAgICAjIE1ha2UgaXQgc28gdGhhdCBvZmZzZXQgaXMgdGhlIG51bWJlciBvZiBieXRlcyB0byBza2lwIGZvcndhcmQuCi0gICAgICAgIGlmIG9mZnNldCA8IHNlbGYuX3BvczoKLSAgICAgICAgICAgIHNlbGYuX3Jld2luZCgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvZmZzZXQgLT0gc2VsZi5fcG9zCi0KLSAgICAgICAgIyBSZWFkIGFuZCBkaXNjYXJkIGRhdGEgdW50aWwgd2UgcmVhY2ggdGhlIGRlc2lyZWQgcG9zaXRpb24uCi0gICAgICAgIHNlbGYuX3JlYWRfYmxvY2sob2Zmc2V0LCByZXR1cm5fZGF0YT1GYWxzZSkKLQotICAgICAgICByZXR1cm4gc2VsZi5fcG9zCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIuc2VlayhvZmZzZXQsIHdoZW5jZSkKIAogICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbi4iIiIKICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIudGVsbCgpCiAgICAgICAgIHJldHVybiBzZWxmLl9wb3MKIAogCmRpZmYgLS1naXQgYS9MaWIvbWFjcGF0aC5weSBiL0xpYi9tYWNwYXRoLnB5CmluZGV4IDVjYTAwOTcuLmE5MGQxMDUgMTAwNjQ0Ci0tLSBhL0xpYi9tYWNwYXRoLnB5CisrKyBiL0xpYi9tYWNwYXRoLnB5CkBAIC01MCwyMCArNTAsMjYgQEAKIAogCiBkZWYgam9pbihzLCAqcCk6Ci0gICAgY29sb24gPSBfZ2V0X2NvbG9uKHMpCi0gICAgcGF0aCA9IHMKLSAgICBmb3IgdCBpbiBwOgotICAgICAgICBpZiAobm90IHBhdGgpIG9yIGlzYWJzKHQpOgotICAgICAgICAgICAgcGF0aCA9IHQKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIHRbOjFdID09IGNvbG9uOgotICAgICAgICAgICAgdCA9IHRbMTpdCi0gICAgICAgIGlmIGNvbG9uIG5vdCBpbiBwYXRoOgotICAgICAgICAgICAgcGF0aCA9IGNvbG9uICsgcGF0aAotICAgICAgICBpZiBwYXRoWy0xOl0gIT0gY29sb246Ci0gICAgICAgICAgICBwYXRoID0gcGF0aCArIGNvbG9uCi0gICAgICAgIHBhdGggPSBwYXRoICsgdAotICAgIHJldHVybiBwYXRoCisgICAgdHJ5OgorICAgICAgICBjb2xvbiA9IF9nZXRfY29sb24ocykKKyAgICAgICAgcGF0aCA9IHMKKyAgICAgICAgaWYgbm90IHA6CisgICAgICAgICAgICBwYXRoWzowXSArIGNvbG9uICAjMjM3ODA6IEVuc3VyZSBjb21wYXRpYmxlIGRhdGEgdHlwZSBldmVuIGlmIHAgaXMgbnVsbC4KKyAgICAgICAgZm9yIHQgaW4gcDoKKyAgICAgICAgICAgIGlmIChub3QgcGF0aCkgb3IgaXNhYnModCk6CisgICAgICAgICAgICAgICAgcGF0aCA9IHQKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgdFs6MV0gPT0gY29sb246CisgICAgICAgICAgICAgICAgdCA9IHRbMTpdCisgICAgICAgICAgICBpZiBjb2xvbiBub3QgaW4gcGF0aDoKKyAgICAgICAgICAgICAgICBwYXRoID0gY29sb24gKyBwYXRoCisgICAgICAgICAgICBpZiBwYXRoWy0xOl0gIT0gY29sb246CisgICAgICAgICAgICAgICAgcGF0aCA9IHBhdGggKyBjb2xvbgorICAgICAgICAgICAgcGF0aCA9IHBhdGggKyB0CisgICAgICAgIHJldHVybiBwYXRoCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBCeXRlc1dhcm5pbmcpOgorICAgICAgICBnZW5lcmljcGF0aC5fY2hlY2tfYXJnX3R5cGVzKCdqb2luJywgcywgKnApCisgICAgICAgIHJhaXNlCiAKIAogZGVmIHNwbGl0KHMpOgpkaWZmIC0tZ2l0IGEvTGliL21haWxib3gucHkgYi9MaWIvbWFpbGJveC5weQppbmRleCA0ZTQyYWQyLi4yNGQ0YWVjIDEwMDY0NAotLS0gYS9MaWIvbWFpbGJveC5weQorKysgYi9MaWIvbWFpbGJveC5weQpAQCAtMTIzNCw4ICsxMjM0LDggQEAKIGNsYXNzIEJhYnlsKF9zaW5nbGVmaWxlTWFpbGJveCk6CiAgICAgIiIiQW4gUm1haWwtc3R5bGUgQmFieWwgbWFpbGJveC4iIiIKIAotICAgIF9zcGVjaWFsX2xhYmVscyA9IGZyb3plbnNldCgoJ3Vuc2VlbicsICdkZWxldGVkJywgJ2ZpbGVkJywgJ2Fuc3dlcmVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3J3YXJkZWQnLCAnZWRpdGVkJywgJ3Jlc2VudCcpKQorICAgIF9zcGVjaWFsX2xhYmVscyA9IGZyb3plbnNldCh7J3Vuc2VlbicsICdkZWxldGVkJywgJ2ZpbGVkJywgJ2Fuc3dlcmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3J3YXJkZWQnLCAnZWRpdGVkJywgJ3Jlc2VudCd9KQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIGZhY3Rvcnk9Tm9uZSwgY3JlYXRlPVRydWUpOgogICAgICAgICAiIiJJbml0aWFsaXplIGEgQmFieWwgbWFpbGJveC4iIiIKQEAgLTE5NTMsNyArMTk1Myw3IEBACiAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICBsaW5lID0gc2VsZi5yZWFkbGluZSgpCiAgICAgICAgICAgICBpZiBub3QgbGluZToKLSAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICB5aWVsZCBsaW5lCiAKICAgICBkZWYgdGVsbChzZWxmKToKQEAgLTE5NzAsOSArMTk3MCwxMSBAQAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgIiIiQ2xvc2UgdGhlIGZpbGUuIiIiCiAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ19maWxlJyk6Ci0gICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYuX2ZpbGUsICdjbG9zZScpOgotICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGUuY2xvc2UoKQotICAgICAgICAgICAgZGVsIHNlbGYuX2ZpbGUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYuX2ZpbGUsICdjbG9zZScpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlLmNsb3NlKCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZGVsIHNlbGYuX2ZpbGUKIAogICAgIGRlZiBfcmVhZChzZWxmLCBzaXplLCByZWFkX21ldGhvZCk6CiAgICAgICAgICIiIlJlYWQgc2l6ZSBieXRlcyB1c2luZyByZWFkX21ldGhvZC4iIiIKZGlmZiAtLWdpdCBhL0xpYi9tb2R1bGVmaW5kZXIucHkgYi9MaWIvbW9kdWxlZmluZGVyLnB5CmluZGV4IGI3NzhlNjAuLjUwZjI0NjIgMTAwNjQ0Ci0tLSBhL0xpYi9tb2R1bGVmaW5kZXIucHkKKysrIGIvTGliL21vZHVsZWZpbmRlci5weQpAQCAtMSw3ICsxLDcgQEAKICIiIkZpbmQgbW9kdWxlcyB1c2VkIGJ5IGEgc2NyaXB0LCB1c2luZyBpbnRyb3NwZWN0aW9uLiIiIgogCiBpbXBvcnQgZGlzCi1pbXBvcnQgaW1wb3J0bGliLl9ib290c3RyYXAKK2ltcG9ydCBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbAogaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBtYXJzaGFsCiBpbXBvcnQgb3MKQEAgLTIyMyw3ICsyMjMsNyBAQAogICAgICAgICBpZiBub3QgbS5fX3BhdGhfXzoKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBtb2R1bGVzID0ge30KLSAgICAgICAgIyAnc3VmZml4ZXMnIHVzZWQgdG8gYmUgYSBsaXN0IGhhcmRjb2RlZCB0byBbIi5weSIsICIucHljIiwgIi5weW8iXS4KKyAgICAgICAgIyAnc3VmZml4ZXMnIHVzZWQgdG8gYmUgYSBsaXN0IGhhcmRjb2RlZCB0byBbIi5weSIsICIucHljIl0uCiAgICAgICAgICMgQnV0IHdlIG11c3QgYWxzbyBjb2xsZWN0IFB5dGhvbiBleHRlbnNpb24gbW9kdWxlcyAtIGFsdGhvdWdoCiAgICAgICAgICMgd2UgY2Fubm90IHNlcGFyYXRlIG5vcm1hbCBkbGxzIGZyb20gUHl0aG9uIGV4dGVuc2lvbnMuCiAgICAgICAgIHN1ZmZpeGVzID0gW10KQEAgLTI4OSw3ICsyODksNyBAQAogICAgICAgICAgICAgY28gPSBjb21waWxlKGZwLnJlYWQoKSsnXG4nLCBwYXRobmFtZSwgJ2V4ZWMnKQogICAgICAgICBlbGlmIHR5cGUgPT0gaW1wLlBZX0NPTVBJTEVEOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1hcnNoYWxfZGF0YSA9IGltcG9ydGxpYi5fYm9vdHN0cmFwLl92YWxpZGF0ZV9ieXRlY29kZV9oZWFkZXIoZnAucmVhZCgpKQorICAgICAgICAgICAgICAgIG1hcnNoYWxfZGF0YSA9IGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLl92YWxpZGF0ZV9ieXRlY29kZV9oZWFkZXIoZnAucmVhZCgpKQogICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKICAgICAgICAgICAgICAgICBzZWxmLm1zZ291dCgyLCAicmFpc2UgSW1wb3J0RXJyb3I6ICIgKyBzdHIoZXhjKSwgcGF0aG5hbWUpCiAgICAgICAgICAgICAgICAgcmFpc2UKZGlmZiAtLWdpdCBhL0xpYi9tc2lsaWIvX19pbml0X18ucHkgYi9MaWIvbXNpbGliL19faW5pdF9fLnB5CmluZGV4IGQyOWE1OTMuLjg3MzU2MGQgMTAwNjQ0Ci0tLSBhL0xpYi9tc2lsaWIvX19pbml0X18ucHkKKysrIGIvTGliL21zaWxpYi9fX2luaXRfXy5weQpAQCAtMzYxLDcgKzM2MSw3IEBACiAgICAgICAgICMgICAgICAgICAgICAgWyhsb2dpY2FsLCAwLCBmaWxlaGFzaC5JbnRlZ2VyRGF0YSgxKSwKICAgICAgICAgIyAgICAgICAgICAgICAgIGZpbGVoYXNoLkludGVnZXJEYXRhKDIpLCBmaWxlaGFzaC5JbnRlZ2VyRGF0YSgzKSwKICAgICAgICAgIyAgICAgICAgICAgICAgIGZpbGVoYXNoLkludGVnZXJEYXRhKDQpKV0pCi0gICAgICAgICMgQXV0b21hdGljYWxseSByZW1vdmUgLnB5Yy8ucHlvIGZpbGVzIG9uIHVuaW5zdGFsbCAoMikKKyAgICAgICAgIyBBdXRvbWF0aWNhbGx5IHJlbW92ZSAucHljIGZpbGVzIG9uIHVuaW5zdGFsbCAoMikKICAgICAgICAgIyBYWFg6IGFkZGluZyBzbyBtYW55IFJlbW92ZUZpbGUgZW50cmllcyBtYWtlcyBpbnN0YWxsZXIgdW5iZWxpZXZhYmx5CiAgICAgICAgICMgc2xvdy4gU28gaW5zdGVhZCwgd2UgaGF2ZSB0byB1c2Ugd2lsZGNhcmQgcmVtb3ZlIGVudHJpZXMKICAgICAgICAgaWYgZmlsZS5lbmRzd2l0aCgiLnB5Iik6CkBAIC0zODIsMTAgKzM4Miw5IEBACiAgICAgICAgIHJldHVybiBmaWxlcwogCiAgICAgZGVmIHJlbW92ZV9weWMoc2VsZik6Ci0gICAgICAgICJSZW1vdmUgLnB5Yy8ucHlvIGZpbGVzIG9uIHVuaW5zdGFsbCIKKyAgICAgICAgIlJlbW92ZSAucHljIGZpbGVzIG9uIHVuaW5zdGFsbCIKICAgICAgICAgYWRkX2RhdGEoc2VsZi5kYiwgIlJlbW92ZUZpbGUiLAotICAgICAgICAgICAgICAgICBbKHNlbGYuY29tcG9uZW50KyJjIiwgc2VsZi5jb21wb25lbnQsICIqLnB5YyIsIHNlbGYubG9naWNhbCwgMiksCi0gICAgICAgICAgICAgICAgICAoc2VsZi5jb21wb25lbnQrIm8iLCBzZWxmLmNvbXBvbmVudCwgIioucHlvIiwgc2VsZi5sb2dpY2FsLCAyKV0pCisgICAgICAgICAgICAgICAgIFsoc2VsZi5jb21wb25lbnQrImMiLCBzZWxmLmNvbXBvbmVudCwgIioucHljIiwgc2VsZi5sb2dpY2FsLCAyKV0pCiAKIGNsYXNzIEJpbmFyeToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZm5hbWUpOgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CmluZGV4IDFlYjFhOGQuLmQwYTFiODYgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKQEAgLTM2NSwxMCArMzY1LDcgQEAKICAgICBkZWYgX3NlbmQoc2VsZiwgYnVmLCB3cml0ZT1fd3JpdGUpOgogICAgICAgICByZW1haW5pbmcgPSBsZW4oYnVmKQogICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG4gPSB3cml0ZShzZWxmLl9oYW5kbGUsIGJ1ZikKLSAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBuID0gd3JpdGUoc2VsZi5faGFuZGxlLCBidWYpCiAgICAgICAgICAgICByZW1haW5pbmcgLT0gbgogICAgICAgICAgICAgaWYgcmVtYWluaW5nID09IDA6CiAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTM3OSwxMCArMzc2LDcgQEAKICAgICAgICAgaGFuZGxlID0gc2VsZi5faGFuZGxlCiAgICAgICAgIHJlbWFpbmluZyA9IHNpemUKICAgICAgICAgd2hpbGUgcmVtYWluaW5nID4gMDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjaHVuayA9IHJlYWQoaGFuZGxlLCByZW1haW5pbmcpCi0gICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKLSAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgY2h1bmsgPSByZWFkKGhhbmRsZSwgcmVtYWluaW5nKQogICAgICAgICAgICAgbiA9IGxlbihjaHVuaykKICAgICAgICAgICAgIGlmIG4gPT0gMDoKICAgICAgICAgICAgICAgICBpZiByZW1haW5pbmcgPT0gc2l6ZToKQEAgLTQwMCwxNyArMzk0LDE0IEBACiAgICAgICAgIGlmIG4gPiAxNjM4NDoKICAgICAgICAgICAgICMgVGhlIHBheWxvYWQgaXMgbGFyZ2Ugc28gTmFnbGUncyBhbGdvcml0aG0gd29uJ3QgYmUgdHJpZ2dlcmVkCiAgICAgICAgICAgICAjIGFuZCB3ZSdkIGJldHRlciBhdm9pZCB0aGUgY29zdCBvZiBjb25jYXRlbmF0aW9uLgotICAgICAgICAgICAgY2h1bmtzID0gW2hlYWRlciwgYnVmXQotICAgICAgICBlbGlmIG4gPiAwOgotICAgICAgICAgICAgIyBJc3N1ZSAj4oCvMjA1NDA6IGNvbmNhdGVuYXRlIGJlZm9yZSBzZW5kaW5nLCB0byBhdm9pZCBkZWxheXMgZHVlCi0gICAgICAgICAgICAjIHRvIE5hZ2xlJ3MgYWxnb3JpdGhtIG9uIGEgVENQIHNvY2tldC4KLSAgICAgICAgICAgIGNodW5rcyA9IFtoZWFkZXIgKyBidWZdCisgICAgICAgICAgICBzZWxmLl9zZW5kKGhlYWRlcikKKyAgICAgICAgICAgIHNlbGYuX3NlbmQoYnVmKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBUaGlzIGNvZGUgcGF0aCBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgImJyb2tlbiBwaXBlIiBlcnJvcnMKLSAgICAgICAgICAgICMgd2hlbiBzZW5kaW5nIGEgMC1sZW5ndGggYnVmZmVyIGlmIHRoZSBvdGhlciBlbmQgY2xvc2VkIHRoZSBwaXBlLgotICAgICAgICAgICAgY2h1bmtzID0gW2hlYWRlcl0KLSAgICAgICAgZm9yIGNodW5rIGluIGNodW5rczoKLSAgICAgICAgICAgIHNlbGYuX3NlbmQoY2h1bmspCisgICAgICAgICAgICAjIElzc3VlICMyMDU0MDogY29uY2F0ZW5hdGUgYmVmb3JlIHNlbmRpbmcsIHRvIGF2b2lkIGRlbGF5cyBkdWUKKyAgICAgICAgICAgICMgdG8gTmFnbGUncyBhbGdvcml0aG0gb24gYSBUQ1Agc29ja2V0LgorICAgICAgICAgICAgIyBBbHNvIG5vdGUgd2Ugd2FudCB0byBhdm9pZCBzZW5kaW5nIGEgMC1sZW5ndGggYnVmZmVyIHNlcGFyYXRlbHksCisgICAgICAgICAgICAjIHRvIGF2b2lkICJicm9rZW4gcGlwZSIgZXJyb3JzIGlmIHRoZSBvdGhlciBlbmQgY2xvc2VkIHRoZSBwaXBlLgorICAgICAgICAgICAgc2VsZi5fc2VuZChoZWFkZXIgKyBidWYpCiAKICAgICBkZWYgX3JlY3ZfYnl0ZXMoc2VsZiwgbWF4c2l6ZT1Ob25lKToKICAgICAgICAgYnVmID0gc2VsZi5fcmVjdig0KQpAQCAtNTk5LDEzICs1OTAsNyBAQAogICAgICAgICAgICAgc2VsZi5fdW5saW5rID0gTm9uZQogCiAgICAgZGVmIGFjY2VwdChzZWxmKToKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLCBzZWxmLl9sYXN0X2FjY2VwdGVkID0gc2VsZi5fc29ja2V0LmFjY2VwdCgpCi0gICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHMsIHNlbGYuX2xhc3RfYWNjZXB0ZWQgPSBzZWxmLl9zb2NrZXQuYWNjZXB0KCkKICAgICAgICAgcy5zZXRibG9ja2luZyhUcnVlKQogICAgICAgICByZXR1cm4gQ29ubmVjdGlvbihzLmRldGFjaCgpKQogCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L19faW5pdF9fLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9fX2luaXRfXy5weQppbmRleCAxMzVkYjdmLi4xYWJlYTY0IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L19faW5pdF9fLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvX19pbml0X18ucHkKQEAgLTg2LDcgKzg2LDcgQEAKICAgICAgICAgICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJ18nKToKICAgICAgICAgICAgICAgICB0ZW1wLmFwcGVuZCgnJXM9JXInICUgKG5hbWUsIHZhbHVlKSkKICAgICAgICAgdGVtcC5zb3J0KCkKLSAgICAgICAgcmV0dXJuICdOYW1lc3BhY2UoJXMpJyAlIHN0ci5qb2luKCcsICcsIHRlbXApCisgICAgICAgIHJldHVybiAnJXMoJXMpJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgJywgJy5qb2luKHRlbXApKQogCiBkaWN0ID0gZGljdAogbGlzdCA9IGxpc3QKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvY29ubmVjdGlvbi5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvY29ubmVjdGlvbi5weQppbmRleCA2OTRlZjk2Li4xOTg0Mzc1IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L2Nvbm5lY3Rpb24ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9jb25uZWN0aW9uLnB5CkBAIC01OSw5ICs1OSw4IEBACiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBpZiB0aW1lb3V0IDw9IDAuMDoKICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBzZWxmLl9pbi5ub3RfZW1wdHkuYWNxdWlyZSgpCi0gICAgICAgIHNlbGYuX2luLm5vdF9lbXB0eS53YWl0KHRpbWVvdXQpCi0gICAgICAgIHNlbGYuX2luLm5vdF9lbXB0eS5yZWxlYXNlKCkKKyAgICAgICAgd2l0aCBzZWxmLl9pbi5ub3RfZW1wdHk6CisgICAgICAgICAgICBzZWxmLl9pbi5ub3RfZW1wdHkud2FpdCh0aW1lb3V0KQogICAgICAgICByZXR1cm4gc2VsZi5faW4ucXNpemUoKSA+IDAKIAogICAgIGRlZiBjbG9zZShzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya3NlcnZlci5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya3NlcnZlci5weQppbmRleCAzODc1MTdlLi5iMjdjYmE1IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtzZXJ2ZXIucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9mb3Jrc2VydmVyLnB5CkBAIC0xMDcsNyArMTA3LDcgQEAKICAgICAgICAgICAgICAgICBhZGRyZXNzID0gY29ubmVjdGlvbi5hcmJpdHJhcnlfYWRkcmVzcygnQUZfVU5JWCcpCiAgICAgICAgICAgICAgICAgbGlzdGVuZXIuYmluZChhZGRyZXNzKQogICAgICAgICAgICAgICAgIG9zLmNobW9kKGFkZHJlc3MsIDBvNjAwKQotICAgICAgICAgICAgICAgIGxpc3RlbmVyLmxpc3RlbigxMDApCisgICAgICAgICAgICAgICAgbGlzdGVuZXIubGlzdGVuKCkKIAogICAgICAgICAgICAgICAgICMgYWxsIGNsaWVudCBwcm9jZXNzZXMgb3duIHRoZSB3cml0ZSBlbmQgb2YgdGhlICJhbGl2ZSIgcGlwZTsKICAgICAgICAgICAgICAgICAjIHdoZW4gdGhleSBhbGwgdGVybWluYXRlIHRoZSByZWFkIGVuZCBiZWNvbWVzIHJlYWR5LgpAQCAtMTg4LDggKzE4OCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLl9leGl0KGNvZGUpCiAKLSAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ09OTkFCT1JURUQ6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCkBAIC0yMzAsMTMgKzIyOCw3IEBACiAgICAgZGF0YSA9IGInJwogICAgIGxlbmd0aCA9IFVOU0lHTkVEX1NUUlVDVC5zaXplCiAgICAgd2hpbGUgbGVuKGRhdGEpIDwgbGVuZ3RoOgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMgPSBvcy5yZWFkKGZkLCBsZW5ndGggLSBsZW4oZGF0YSkpCi0gICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHMgPSBvcy5yZWFkKGZkLCBsZW5ndGggLSBsZW4oZGF0YSkpCiAgICAgICAgIGlmIG5vdCBzOgogICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoJ3VuZXhwZWN0ZWQgRU9GJykKICAgICAgICAgZGF0YSArPSBzCkBAIC0yNDUsMTMgKzIzNyw3IEBACiBkZWYgd3JpdGVfdW5zaWduZWQoZmQsIG4pOgogICAgIG1zZyA9IFVOU0lHTkVEX1NUUlVDVC5wYWNrKG4pCiAgICAgd2hpbGUgbXNnOgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG5ieXRlcyA9IG9zLndyaXRlKGZkLCBtc2cpCi0gICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIG5ieXRlcyA9IG9zLndyaXRlKGZkLCBtc2cpCiAgICAgICAgIGlmIG5ieXRlcyA9PSAwOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdzaG91bGQgbm90IGdldCBoZXJlJykKICAgICAgICAgbXNnID0gbXNnW25ieXRlczpdCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKaW5kZXggMzQ0YTQ1Zi4uNDRkOTYzOCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weQpAQCAtNTQsNyArNTQsOSBAQAogICAgICAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKICAgICAgICAgICAgIHNlbGYuc2l6ZSwgc2VsZi5uYW1lID0gc2VsZi5fc3RhdGUgPSBzdGF0ZQogICAgICAgICAgICAgc2VsZi5idWZmZXIgPSBtbWFwLm1tYXAoLTEsIHNlbGYuc2l6ZSwgdGFnbmFtZT1zZWxmLm5hbWUpCi0gICAgICAgICAgICBhc3NlcnQgX3dpbmFwaS5HZXRMYXN0RXJyb3IoKSA9PSBfd2luYXBpLkVSUk9SX0FMUkVBRFlfRVhJU1RTCisgICAgICAgICAgICAjIFhYWCBUZW1wb3JhcmlseSBwcmV2ZW50aW5nIGJ1aWxkYm90IGZhaWx1cmVzIHdoaWxlIGRldGVybWluaW5nCisgICAgICAgICAgICAjIFhYWCB0aGUgY29ycmVjdCBsb25nLXRlcm0gZml4LiBTZWUgaXNzdWUgMjMwNjAKKyAgICAgICAgICAgICNhc3NlcnQgX3dpbmFwaS5HZXRMYXN0RXJyb3IoKSA9PSBfd2luYXBpLkVSUk9SX0FMUkVBRFlfRVhJU1RTCiAKIGVsc2U6CiAKQEAgLTY5LDcgKzcxLDE0IEBACiAgICAgICAgICAgICAgICAgb3MudW5saW5rKG5hbWUpCiAgICAgICAgICAgICAgICAgdXRpbC5GaW5hbGl6ZShzZWxmLCBvcy5jbG9zZSwgKHNlbGYuZmQsKSkKICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5mZCwgJ3diJywgY2xvc2VmZD1GYWxzZSkgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAgZi53cml0ZShiJ1wwJypzaXplKQorICAgICAgICAgICAgICAgICAgICBicyA9IDEwMjQgKiAxMDI0CisgICAgICAgICAgICAgICAgICAgIGlmIHNpemUgPj0gYnM6CisgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvcyA9IGInXDAnICogYnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKHNpemUgLy8gYnMpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoemVyb3MpCisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgemVyb3MKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShiJ1wwJyAqIChzaXplICUgYnMpKQorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZi50ZWxsKCkgPT0gc2l6ZQogICAgICAgICAgICAgc2VsZi5idWZmZXIgPSBtbWFwLm1tYXAoc2VsZi5mZCwgc2VsZi5zaXplKQogCiAgICAgZGVmIHJlZHVjZV9hcmVuYShhKToKQEAgLTIxNiw5ICsyMjUsOCBAQAogICAgICAgICBhc3NlcnQgMCA8PSBzaXplIDwgc3lzLm1heHNpemUKICAgICAgICAgaWYgb3MuZ2V0cGlkKCkgIT0gc2VsZi5fbGFzdHBpZDoKICAgICAgICAgICAgIHNlbGYuX19pbml0X18oKSAgICAgICAgICAgICAgICAgICAgICMgcmVpbml0aWFsaXplIGFmdGVyIGZvcmsKLSAgICAgICAgc2VsZi5fbG9jay5hY3F1aXJlKCkKLSAgICAgICAgc2VsZi5fZnJlZV9wZW5kaW5nX2Jsb2NrcygpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fZnJlZV9wZW5kaW5nX2Jsb2NrcygpCiAgICAgICAgICAgICBzaXplID0gc2VsZi5fcm91bmR1cChtYXgoc2l6ZSwxKSwgc2VsZi5fYWxpZ25tZW50KQogICAgICAgICAgICAgKGFyZW5hLCBzdGFydCwgc3RvcCkgPSBzZWxmLl9tYWxsb2Moc2l6ZSkKICAgICAgICAgICAgIG5ld19zdG9wID0gc3RhcnQgKyBzaXplCkBAIC0yMjcsOCArMjM1LDYgQEAKICAgICAgICAgICAgIGJsb2NrID0gKGFyZW5hLCBzdGFydCwgbmV3X3N0b3ApCiAgICAgICAgICAgICBzZWxmLl9hbGxvY2F0ZWRfYmxvY2tzLmFkZChibG9jaykKICAgICAgICAgICAgIHJldHVybiBibG9jawotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fbG9jay5yZWxlYXNlKCkKIAogIwogIyBDbGFzcyByZXByZXNlbnRpbmcgYSBjaHVuayBvZiBhbiBtbWFwIC0tIGNhbiBiZSBpbmhlcml0ZWQgYnkgY2hpbGQgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKaW5kZXggNjZkNDZmYy4uNzc2NjU2ZSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CkBAIC02NSw4ICs2NSw4IEBACiAgICAgICAgIChzZWxmLnR5cGVpZCwgc2VsZi5hZGRyZXNzLCBzZWxmLmlkKSA9IHN0YXRlCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnVG9rZW4odHlwZWlkPSVyLCBhZGRyZXNzPSVyLCBpZD0lciknICUgXAotICAgICAgICAgICAgICAgKHNlbGYudHlwZWlkLCBzZWxmLmFkZHJlc3MsIHNlbGYuaWQpCisgICAgICAgIHJldHVybiAnJXModHlwZWlkPSVyLCBhZGRyZXNzPSVyLCBpZD0lciknICUgXAorICAgICAgICAgICAgICAgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLnR5cGVpZCwgc2VsZi5hZGRyZXNzLCBzZWxmLmlkKQogCiAjCiAjIEZ1bmN0aW9uIGZvciBjb21tdW5pY2F0aW9uIHdpdGggYSBtYW5hZ2VyJ3Mgc2VydmVyIHByb2Nlc3MKQEAgLTMwNiw4ICszMDYsNyBAQAogICAgICAgICAnJycKICAgICAgICAgUmV0dXJuIHNvbWUgaW5mbyAtLS0gdXNlZnVsIHRvIHNwb3QgcHJvYmxlbXMgd2l0aCByZWZjb3VudGluZwogICAgICAgICAnJycKLSAgICAgICAgc2VsZi5tdXRleC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYubXV0ZXg6CiAgICAgICAgICAgICByZXN1bHQgPSBbXQogICAgICAgICAgICAga2V5cyA9IGxpc3Qoc2VsZi5pZF90b19vYmoua2V5cygpKQogICAgICAgICAgICAga2V5cy5zb3J0KCkKQEAgLTMxNyw4ICszMTYsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZGVudCwgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihzZWxmLmlkX3RvX29ialtpZGVudF1bMF0pWzo3NV0pKQogICAgICAgICAgICAgcmV0dXJuICdcbicuam9pbihyZXN1bHQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLm11dGV4LnJlbGVhc2UoKQogCiAgICAgZGVmIG51bWJlcl9vZl9vYmplY3RzKHNlbGYsIGMpOgogICAgICAgICAnJycKQEAgLTM0Myw4ICszNDAsNyBAQAogICAgICAgICAnJycKICAgICAgICAgQ3JlYXRlIGEgbmV3IHNoYXJlZCBvYmplY3QgYW5kIHJldHVybiBpdHMgaWQKICAgICAgICAgJycnCi0gICAgICAgIHNlbGYubXV0ZXguYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLm11dGV4OgogICAgICAgICAgICAgY2FsbGFibGUsIGV4cG9zZWQsIG1ldGhvZF90b190eXBlaWQsIHByb3h5dHlwZSA9IFwKICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlZ2lzdHJ5W3R5cGVpZF0KIApAQCAtMzc0LDggKzM3MCw2IEBACiAgICAgICAgICAgICAjIGhhcyBiZWVuIGNyZWF0ZWQuCiAgICAgICAgICAgICBzZWxmLmluY3JlZihjLCBpZGVudCkKICAgICAgICAgICAgIHJldHVybiBpZGVudCwgdHVwbGUoZXhwb3NlZCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYubXV0ZXgucmVsZWFzZSgpCiAKICAgICBkZWYgZ2V0X21ldGhvZHMoc2VsZiwgYywgdG9rZW4pOgogICAgICAgICAnJycKQEAgLTM5MiwyMiArMzg2LDE2IEBACiAgICAgICAgIHNlbGYuc2VydmVfY2xpZW50KGMpCiAKICAgICBkZWYgaW5jcmVmKHNlbGYsIGMsIGlkZW50KToKLSAgICAgICAgc2VsZi5tdXRleC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYubXV0ZXg6CiAgICAgICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSArPSAxCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLm11dGV4LnJlbGVhc2UoKQogCiAgICAgZGVmIGRlY3JlZihzZWxmLCBjLCBpZGVudCk6Ci0gICAgICAgIHNlbGYubXV0ZXguYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLm11dGV4OgogICAgICAgICAgICAgYXNzZXJ0IHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdID49IDEKICAgICAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdIC09IDEKICAgICAgICAgICAgIGlmIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdID09IDA6CiAgICAgICAgICAgICAgICAgZGVsIHNlbGYuaWRfdG9fb2JqW2lkZW50XSwgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0KICAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCdkaXNwb3Npbmcgb2Ygb2JqIHdpdGggaWQgJXInLCBpZGVudCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYubXV0ZXgucmVsZWFzZSgpCiAKICMKICMgQ2xhc3MgdG8gcmVwcmVzZW50IHN0YXRlIG9mIGEgbWFuYWdlcgpAQCAtNjcxLDE0ICs2NTksMTEgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0b2tlbiwgc2VyaWFsaXplciwgbWFuYWdlcj1Ob25lLAogICAgICAgICAgICAgICAgICBhdXRoa2V5PU5vbmUsIGV4cG9zZWQ9Tm9uZSwgaW5jcmVmPVRydWUpOgotICAgICAgICBCYXNlUHJveHkuX211dGV4LmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggQmFzZVByb3h5Ll9tdXRleDoKICAgICAgICAgICAgIHRsc19pZHNldCA9IEJhc2VQcm94eS5fYWRkcmVzc190b19sb2NhbC5nZXQodG9rZW4uYWRkcmVzcywgTm9uZSkKICAgICAgICAgICAgIGlmIHRsc19pZHNldCBpcyBOb25lOgogICAgICAgICAgICAgICAgIHRsc19pZHNldCA9IHV0aWwuRm9ya0F3YXJlTG9jYWwoKSwgUHJvY2Vzc0xvY2FsU2V0KCkKICAgICAgICAgICAgICAgICBCYXNlUHJveHkuX2FkZHJlc3NfdG9fbG9jYWxbdG9rZW4uYWRkcmVzc10gPSB0bHNfaWRzZXQKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIEJhc2VQcm94eS5fbXV0ZXgucmVsZWFzZSgpCiAKICAgICAgICAgIyBzZWxmLl90bHMgaXMgdXNlZCB0byByZWNvcmQgdGhlIGNvbm5lY3Rpb24gdXNlZCBieSB0aGlzCiAgICAgICAgICMgdGhyZWFkIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIG1hbmFnZXIgYXQgdG9rZW4uYWRkcmVzcwpAQCAtODE4LDggKzgwMyw4IEBACiAgICAgICAgIHJldHVybiBzZWxmLl9nZXR2YWx1ZSgpCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnPCVzIG9iamVjdCwgdHlwZWlkICVyIGF0ICVzPicgJSBcCi0gICAgICAgICAgICAgICAodHlwZShzZWxmKS5fX25hbWVfXywgc2VsZi5fdG9rZW4udHlwZWlkLCAnMHgleCcgJSBpZChzZWxmKSkKKyAgICAgICAgcmV0dXJuICc8JXMgb2JqZWN0LCB0eXBlaWQgJXIgYXQgJSN4PicgJSBcCisgICAgICAgICAgICAgICAodHlwZShzZWxmKS5fX25hbWVfXywgc2VsZi5fdG9rZW4udHlwZWlkLCBpZChzZWxmKSkKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICAnJycKQEAgLTkxNiw3ICs5MDEsNyBAQAogICAgICAgICAgICAgaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnXycpOgogICAgICAgICAgICAgICAgIHRlbXAuYXBwZW5kKCclcz0lcicgJSAobmFtZSwgdmFsdWUpKQogICAgICAgICB0ZW1wLnNvcnQoKQotICAgICAgICByZXR1cm4gJ05hbWVzcGFjZSglcyknICUgc3RyLmpvaW4oJywgJywgdGVtcCkKKyAgICAgICAgcmV0dXJuICclcyglcyknICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCAnLCAnLmpvaW4odGVtcCkpCiAKIGNsYXNzIFZhbHVlKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVjb2RlLCB2YWx1ZSwgbG9jaz1UcnVlKToKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQppbmRleCBkYjZlM2UxLi42ZDI1NDY5IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leGMpCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPE1heWJlRW5jb2RpbmdFcnJvcjogJXM+IiAlIHN0cihzZWxmKQorICAgICAgICByZXR1cm4gIjwlczogJXM+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZikKIAogCiBkZWYgd29ya2VyKGlucXVldWUsIG91dHF1ZXVlLCBpbml0aWFsaXplcj1Ob25lLCBpbml0YXJncz0oKSwgbWF4dGFza3M9Tm9uZSwKQEAgLTY3NSw4ICs2NzUsNyBAQAogICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgZGVmIG5leHQoc2VsZiwgdGltZW91dD1Ob25lKToKLSAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgaXRlbSA9IHNlbGYuX2l0ZW1zLnBvcGxlZnQoKQogICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CkBAIC02ODksOCArNjg4LDYgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5faW5kZXggPT0gc2VsZi5fbGVuZ3RoOgogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgogICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXJyb3IKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCiAKICAgICAgICAgc3VjY2VzcywgdmFsdWUgPSBpdGVtCiAgICAgICAgIGlmIHN1Y2Nlc3M6CkBAIC03MDAsOCArNjk3LDcgQEAKICAgICBfX25leHRfXyA9IG5leHQgICAgICAgICAgICAgICAgICAgICMgWFhYCiAKICAgICBkZWYgX3NldChzZWxmLCBpLCBvYmopOgotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgIGlmIHNlbGYuX2luZGV4ID09IGk6CiAgICAgICAgICAgICAgICAgc2VsZi5faXRlbXMuYXBwZW5kKG9iaikKICAgICAgICAgICAgICAgICBzZWxmLl9pbmRleCArPSAxCkBAIC03MTUsMTggKzcxMSwxMyBAQAogCiAgICAgICAgICAgICBpZiBzZWxmLl9pbmRleCA9PSBzZWxmLl9sZW5ndGg6CiAgICAgICAgICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCiAKICAgICBkZWYgX3NldF9sZW5ndGgoc2VsZiwgbGVuZ3RoKToKLSAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgICBzZWxmLl9sZW5ndGggPSBsZW5ndGgKICAgICAgICAgICAgIGlmIHNlbGYuX2luZGV4ID09IHNlbGYuX2xlbmd0aDoKICAgICAgICAgICAgICAgICBzZWxmLl9jb25kLm5vdGlmeSgpCiAgICAgICAgICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCiAKICMKICMgQ2xhc3Mgd2hvc2UgaW5zdGFuY2VzIGFyZSByZXR1cm5lZCBieSBgUG9vbC5pbWFwX3Vub3JkZXJlZCgpYApAQCAtNzM1LDE1ICs3MjYsMTIgQEAKIGNsYXNzIElNYXBVbm9yZGVyZWRJdGVyYXRvcihJTWFwSXRlcmF0b3IpOgogCiAgICAgZGVmIF9zZXQoc2VsZiwgaSwgb2JqKToKLSAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgICBzZWxmLl9pdGVtcy5hcHBlbmQob2JqKQogICAgICAgICAgICAgc2VsZi5faW5kZXggKz0gMQogICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnkoKQogICAgICAgICAgICAgaWYgc2VsZi5faW5kZXggPT0gc2VsZi5fbGVuZ3RoOgogICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogCiAjCiAjCkBAIC03NjksMTAgKzc1Nyw3IEBACiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBfaGVscF9zdHVmZl9maW5pc2goaW5xdWV1ZSwgdGFza19oYW5kbGVyLCBzaXplKToKICAgICAgICAgIyBwdXQgc2VudGluZWxzIGF0IGhlYWQgb2YgaW5xdWV1ZSB0byBtYWtlIHdvcmtlcnMgZmluaXNoCi0gICAgICAgIGlucXVldWUubm90X2VtcHR5LmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggaW5xdWV1ZS5ub3RfZW1wdHk6CiAgICAgICAgICAgICBpbnF1ZXVlLnF1ZXVlLmNsZWFyKCkKICAgICAgICAgICAgIGlucXVldWUucXVldWUuZXh0ZW5kKFtOb25lXSAqIHNpemUpCiAgICAgICAgICAgICBpbnF1ZXVlLm5vdF9lbXB0eS5ub3RpZnlfYWxsKCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlucXVldWUubm90X2VtcHR5LnJlbGVhc2UoKQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9mb3JrLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9mb3JrLnB5CmluZGV4IDM2N2U3MmUuLmQyZWJkN2MgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fZm9yay5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX2ZvcmsucHkKQEAgLTEsNyArMSw2IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBzaWduYWwKLWltcG9ydCBlcnJubwogCiBmcm9tIC4gaW1wb3J0IHV0aWwKIApAQCAtMjksOCArMjgsNiBAQAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgcGlkLCBzdHMgPSBvcy53YWl0cGlkKHNlbGYucGlkLCBmbGFnKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUlOVFI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAjIENoaWxkIHByb2Nlc3Mgbm90IHlldCBjcmVhdGVkLiBTZWUgIzE3MzE3MTcKICAgICAgICAgICAgICAgICAgICAgIyBlLmVycm5vID09IGVycm5vLkVDSElMRCA9PSAxMAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weQppbmRleCAyOTNhZDc2Li43ODZhMzAzIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weQpAQCAtODIsMTQgKzgyLDExIEBACiAgICAgICAgIGlmIG5vdCBzZWxmLl9zZW0uYWNxdWlyZShibG9jaywgdGltZW91dCk6CiAgICAgICAgICAgICByYWlzZSBGdWxsCiAKLSAgICAgICAgc2VsZi5fbm90ZW1wdHkuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLl9ub3RlbXB0eToKICAgICAgICAgICAgIGlmIHNlbGYuX3RocmVhZCBpcyBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYuX3N0YXJ0X3RocmVhZCgpCiAgICAgICAgICAgICBzZWxmLl9idWZmZXIuYXBwZW5kKG9iaikKICAgICAgICAgICAgIHNlbGYuX25vdGVtcHR5Lm5vdGlmeSgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9ub3RlbXB0eS5yZWxlYXNlKCkKIAogICAgIGRlZiBnZXQoc2VsZiwgYmxvY2s9VHJ1ZSwgdGltZW91dD1Ob25lKToKICAgICAgICAgaWYgYmxvY2sgYW5kIHRpbWVvdXQgaXMgTm9uZToKQEAgLTIwNiwxMiArMjAzLDkgQEAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIF9maW5hbGl6ZV9jbG9zZShidWZmZXIsIG5vdGVtcHR5KToKICAgICAgICAgZGVidWcoJ3RlbGxpbmcgcXVldWUgdGhyZWFkIHRvIHF1aXQnKQotICAgICAgICBub3RlbXB0eS5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIG5vdGVtcHR5OgogICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChfc2VudGluZWwpCiAgICAgICAgICAgICBub3RlbXB0eS5ub3RpZnkoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgbm90ZW1wdHkucmVsZWFzZSgpCiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIF9mZWVkKGJ1ZmZlciwgbm90ZW1wdHksIHNlbmRfYnl0ZXMsIHdyaXRlbG9jaywgY2xvc2UsIGlnbm9yZV9lcGlwZSk6CkBAIC0zMDAsMzUgKzI5NCwyNCBAQAogICAgICAgICBpZiBub3Qgc2VsZi5fc2VtLmFjcXVpcmUoYmxvY2ssIHRpbWVvdXQpOgogICAgICAgICAgICAgcmFpc2UgRnVsbAogCi0gICAgICAgIHNlbGYuX25vdGVtcHR5LmFjcXVpcmUoKQotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5fbm90ZW1wdHksIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgICBpZiBzZWxmLl90aHJlYWQgaXMgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLl9zdGFydF90aHJlYWQoKQogICAgICAgICAgICAgc2VsZi5fYnVmZmVyLmFwcGVuZChvYmopCiAgICAgICAgICAgICBzZWxmLl91bmZpbmlzaGVkX3Rhc2tzLnJlbGVhc2UoKQogICAgICAgICAgICAgc2VsZi5fbm90ZW1wdHkubm90aWZ5KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCi0gICAgICAgICAgICBzZWxmLl9ub3RlbXB0eS5yZWxlYXNlKCkKIAogICAgIGRlZiB0YXNrX2RvbmUoc2VsZik6Ci0gICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLl9jb25kOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX3VuZmluaXNoZWRfdGFza3MuYWNxdWlyZShGYWxzZSk6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigndGFza19kb25lKCkgY2FsbGVkIHRvbyBtYW55IHRpbWVzJykKICAgICAgICAgICAgIGlmIHNlbGYuX3VuZmluaXNoZWRfdGFza3MuX3NlbWxvY2suX2lzX3plcm8oKToKICAgICAgICAgICAgICAgICBzZWxmLl9jb25kLm5vdGlmeV9hbGwoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKIAogICAgIGRlZiBqb2luKHNlbGYpOgotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl91bmZpbmlzaGVkX3Rhc2tzLl9zZW1sb2NrLl9pc196ZXJvKCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fY29uZC53YWl0KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCiAKICMKICMgU2ltcGxpZmllZCBRdWV1ZSB0eXBlIC0tIHJlYWxseSBqdXN0IGEgbG9ja2VkIHBpcGUKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKaW5kZXggMGMxNzgyNS4uNDI1OGY1OSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKQEAgLTE4OCw2ICsxODgsMTIgQEAKICAgICAgICAgc2VsZi5hY3F1aXJlID0gc2VsZi5fbG9jay5hY3F1aXJlCiAgICAgICAgIHNlbGYucmVsZWFzZSA9IHNlbGYuX2xvY2sucmVsZWFzZQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2xvY2suX19lbnRlcl9fKCkKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLl9sb2NrLl9fZXhpdF9fKCphcmdzKQorCiAgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAgIGFzc2VydF9zcGF3bmluZyhzZWxmKQogICAgICAgICByZXR1cm4gc3luY2hyb25pemVkLCAoc2VsZi5fb2JqLCBzZWxmLl9sb2NrKQpAQCAtMjEyLDMyICsyMTgsMjAgQEAKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9vYmopCiAKICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6Ci0gICAgICAgIHNlbGYuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX29ialtpXQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5yZWxlYXNlKCkKIAogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpLCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmOgogICAgICAgICAgICAgc2VsZi5fb2JqW2ldID0gdmFsdWUKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYucmVsZWFzZSgpCiAKICAgICBkZWYgX19nZXRzbGljZV9fKHNlbGYsIHN0YXJ0LCBzdG9wKToKLSAgICAgICAgc2VsZi5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGY6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fb2JqW3N0YXJ0OnN0b3BdCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLnJlbGVhc2UoKQogCiAgICAgZGVmIF9fc2V0c2xpY2VfXyhzZWxmLCBzdGFydCwgc3RvcCwgdmFsdWVzKToKLSAgICAgICAgc2VsZi5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGY6CiAgICAgICAgICAgICBzZWxmLl9vYmpbc3RhcnQ6c3RvcF0gPSB2YWx1ZXMKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYucmVsZWFzZSgpCiAKIAogY2xhc3MgU3luY2hyb25pemVkU3RyaW5nKFN5bmNocm9uaXplZEFycmF5KToKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3Bhd24ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NwYXduLnB5CmluZGV4IDMzNmU0NzkuLjRkNzY5NTEgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3Bhd24ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9zcGF3bi5weQpAQCAtOTEsNyArOTEsNyBAQAogCiBkZWYgc3Bhd25fbWFpbihwaXBlX2hhbmRsZSwgcGFyZW50X3BpZD1Ob25lLCB0cmFja2VyX2ZkPU5vbmUpOgogICAgICcnJwotICAgIFJ1biBjb2RlIHNwZWNpZmVkIGJ5IGRhdGEgcmVjZWl2ZWQgb3ZlciBwaXBlCisgICAgUnVuIGNvZGUgc3BlY2lmaWVkIGJ5IGRhdGEgcmVjZWl2ZWQgb3ZlciBwaXBlCiAgICAgJycnCiAgICAgYXNzZXJ0IGlzX2Zvcmtpbmcoc3lzLmFyZ3YpCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3N5bmNocm9uaXplLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9zeW5jaHJvbml6ZS5weQppbmRleCBkZWExY2JkLi5kNGJkZjBlIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3N5bmNocm9uaXplLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3luY2hyb25pemUucHkKQEAgLTEzNCw3ICsxMzQsNyBAQAogICAgICAgICAgICAgdmFsdWUgPSBzZWxmLl9zZW1sb2NrLl9nZXRfdmFsdWUoKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgdmFsdWUgPSAndW5rbm93bicKLSAgICAgICAgcmV0dXJuICc8U2VtYXBob3JlKHZhbHVlPSVzKT4nICUgdmFsdWUKKyAgICAgICAgcmV0dXJuICc8JXModmFsdWU9JXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHZhbHVlKQogCiAjCiAjIEJvdW5kZWQgc2VtYXBob3JlCkBAIC0xNTAsOCArMTUwLDggQEAKICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fc2VtbG9jay5fZ2V0X3ZhbHVlKCkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIHZhbHVlID0gJ3Vua25vd24nCi0gICAgICAgIHJldHVybiAnPEJvdW5kZWRTZW1hcGhvcmUodmFsdWU9JXMsIG1heHZhbHVlPSVzKT4nICUgXAotICAgICAgICAgICAgICAgKHZhbHVlLCBzZWxmLl9zZW1sb2NrLm1heHZhbHVlKQorICAgICAgICByZXR1cm4gJzwlcyh2YWx1ZT0lcywgbWF4dmFsdWU9JXMpPicgJSBcCisgICAgICAgICAgICAgICAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHZhbHVlLCBzZWxmLl9zZW1sb2NrLm1heHZhbHVlKQogCiAjCiAjIE5vbi1yZWN1cnNpdmUgbG9jawpAQCAtMTc2LDcgKzE3Niw3IEBACiAgICAgICAgICAgICAgICAgbmFtZSA9ICdTb21lT3RoZXJQcm9jZXNzJwogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgbmFtZSA9ICd1bmtub3duJwotICAgICAgICByZXR1cm4gJzxMb2NrKG93bmVyPSVzKT4nICUgbmFtZQorICAgICAgICByZXR1cm4gJzwlcyhvd25lcj0lcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbmFtZSkKIAogIwogIyBSZWN1cnNpdmUgbG9jawpAQCAtMjAyLDcgKzIwMiw3IEBACiAgICAgICAgICAgICAgICAgbmFtZSwgY291bnQgPSAnU29tZU90aGVyUHJvY2VzcycsICdub256ZXJvJwogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgbmFtZSwgY291bnQgPSAndW5rbm93bicsICd1bmtub3duJwotICAgICAgICByZXR1cm4gJzxSTG9jayglcywgJXMpPicgJSAobmFtZSwgY291bnQpCisgICAgICAgIHJldHVybiAnPCVzKCVzLCAlcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbmFtZSwgY291bnQpCiAKICMKICMgQ29uZGl0aW9uIHZhcmlhYmxlCkBAIC0yNDMsNyArMjQzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dva2VuX2NvdW50Ll9zZW1sb2NrLl9nZXRfdmFsdWUoKSkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIG51bV93YWl0ZXJzID0gJ3Vua25vd24nCi0gICAgICAgIHJldHVybiAnPENvbmRpdGlvbiglcywgJXMpPicgJSAoc2VsZi5fbG9jaywgbnVtX3dhaXRlcnMpCisgICAgICAgIHJldHVybiAnPCVzKCVzLCAlcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5fbG9jaywgbnVtX3dhaXRlcnMpCiAKICAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICBhc3NlcnQgc2VsZi5fbG9jay5fc2VtbG9jay5faXNfbWluZSgpLCBcCkBAIC0zMzcsMzQgKzMzNywyNCBAQAogICAgICAgICBzZWxmLl9mbGFnID0gY3R4LlNlbWFwaG9yZSgwKQogCiAgICAgZGVmIGlzX3NldChzZWxmKToKLSAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgICBpZiBzZWxmLl9mbGFnLmFjcXVpcmUoRmFsc2UpOgogICAgICAgICAgICAgICAgIHNlbGYuX2ZsYWcucmVsZWFzZSgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKIAogICAgIGRlZiBzZXQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLl9jb25kOgogICAgICAgICAgICAgc2VsZi5fZmxhZy5hY3F1aXJlKEZhbHNlKQogICAgICAgICAgICAgc2VsZi5fZmxhZy5yZWxlYXNlKCkKICAgICAgICAgICAgIHNlbGYuX2NvbmQubm90aWZ5X2FsbCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogCiAgICAgZGVmIGNsZWFyKHNlbGYpOgotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgIHNlbGYuX2ZsYWcuYWNxdWlyZShGYWxzZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCiAKICAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUpOgotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgIGlmIHNlbGYuX2ZsYWcuYWNxdWlyZShGYWxzZSk6CiAgICAgICAgICAgICAgICAgc2VsZi5fZmxhZy5yZWxlYXNlKCkKICAgICAgICAgICAgIGVsc2U6CkBAIC0zNzQsOCArMzY0LDYgQEAKICAgICAgICAgICAgICAgICBzZWxmLl9mbGFnLnJlbGVhc2UoKQogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCiAKICMKICMgQmFycmllcgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy91dGlsLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy91dGlsLnB5CmluZGV4IDBiNjk1ZTQuLmVhNTQ0M2QgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvdXRpbC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3V0aWwucHkKQEAgLTIxMiwxMCArMjEyLDExIEBACiAgICAgICAgICAgICBvYmogPSBOb25lCiAKICAgICAgICAgaWYgb2JqIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gJzxGaW5hbGl6ZSBvYmplY3QsIGRlYWQ+JworICAgICAgICAgICAgcmV0dXJuICc8JXMgb2JqZWN0LCBkZWFkPicgJSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXwogCi0gICAgICAgIHggPSAnPEZpbmFsaXplIG9iamVjdCwgY2FsbGJhY2s9JXMnICUgXAotICAgICAgICAgICAgZ2V0YXR0cihzZWxmLl9jYWxsYmFjaywgJ19fbmFtZV9fJywgc2VsZi5fY2FsbGJhY2spCisgICAgICAgIHggPSAnPCVzIG9iamVjdCwgY2FsbGJhY2s9JXMnICUgKAorICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgIGdldGF0dHIoc2VsZi5fY2FsbGJhY2ssICdfX25hbWVfXycsIHNlbGYuX2NhbGxiYWNrKSkKICAgICAgICAgaWYgc2VsZi5fYXJnczoKICAgICAgICAgICAgIHggKz0gJywgYXJncz0nICsgc3RyKHNlbGYuX2FyZ3MpCiAgICAgICAgIGlmIHNlbGYuX2t3YXJnczoKQEAgLTMyNyw2ICszMjgsMTMgQEAKICAgICAgICAgc2VsZi5hY3F1aXJlID0gc2VsZi5fbG9jay5hY3F1aXJlCiAgICAgICAgIHNlbGYucmVsZWFzZSA9IHNlbGYuX2xvY2sucmVsZWFzZQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2xvY2suX19lbnRlcl9fKCkKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLl9sb2NrLl9fZXhpdF9fKCphcmdzKQorCisKIGNsYXNzIEZvcmtBd2FyZUxvY2FsKHRocmVhZGluZy5sb2NhbCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICByZWdpc3Rlcl9hZnRlcl9mb3JrKHNlbGYsIGxhbWJkYSBvYmogOiBvYmouX19kaWN0X18uY2xlYXIoKSkKZGlmZiAtLWdpdCBhL0xpYi9udHBhdGgucHkgYi9MaWIvbnRwYXRoLnB5CmluZGV4IDk5Mjk3MGEuLjljYzVjYTcgMTAwNjQ0Ci0tLSBhL0xpYi9udHBhdGgucHkKKysrIGIvTGliL250cGF0aC5weQpAQCAtMTcsNyArMTcsNyBAQAogICAgICAgICAgICAiaXNtb3VudCIsICJleHBhbmR1c2VyIiwiZXhwYW5kdmFycyIsIm5vcm1wYXRoIiwiYWJzcGF0aCIsCiAgICAgICAgICAgICJzcGxpdHVuYyIsImN1cmRpciIsInBhcmRpciIsInNlcCIsInBhdGhzZXAiLCJkZWZwYXRoIiwiYWx0c2VwIiwKICAgICAgICAgICAgImV4dHNlcCIsImRldm51bGwiLCJyZWFscGF0aCIsInN1cHBvcnRzX3VuaWNvZGVfZmlsZW5hbWVzIiwicmVscGF0aCIsCi0gICAgICAgICAgICJzYW1lZmlsZSIsICJzYW1lb3BlbmZpbGUiLCAic2FtZXN0YXQiLF0KKyAgICAgICAgICAgInNhbWVmaWxlIiwgInNhbWVvcGVuZmlsZSIsICJzYW1lc3RhdCIsICJjb21tb25wYXRoIl0KIAogIyBzdHJpbmdzIHJlcHJlc2VudGluZyB2YXJpb3VzIHBhdGgtcmVsYXRlZCBiaXRzIGFuZCBwaWVjZXMKICMgVGhlc2UgYXJlIHByaW1hcmlseSBmb3IgZXhwb3J0OyBpbnRlcm5hbGx5LCB0aGV5IGFyZSBoYXJkY29kZWQuCkBAIC0zMiw0OCArMzIsMTIgQEAKICAgICBkZWZwYXRoID0gJ1xcV2luZG93cycKIGRldm51bGwgPSAnbnVsJwogCi1kZWYgX2dldF9lbXB0eShwYXRoKToKLSAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgcmV0dXJuIGInJwotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAnJwotCi1kZWYgX2dldF9zZXAocGF0aCk6Ci0gICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6Ci0gICAgICAgIHJldHVybiBiJ1xcJwotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAnXFwnCi0KLWRlZiBfZ2V0X2FsdHNlcChwYXRoKToKLSAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgcmV0dXJuIGInLycKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gJy8nCi0KIGRlZiBfZ2V0X2JvdGhzZXBzKHBhdGgpOgogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICByZXR1cm4gYidcXC8nCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuICdcXC8nCiAKLWRlZiBfZ2V0X2RvdChwYXRoKToKLSAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgcmV0dXJuIGInLicKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gJy4nCi0KLWRlZiBfZ2V0X2NvbG9uKHBhdGgpOgotICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgotICAgICAgICByZXR1cm4gYic6JwotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAnOicKLQotZGVmIF9nZXRfc3BlY2lhbChwYXRoKToKLSAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgcmV0dXJuIChiJ1xcXFwuXFwnLCBiJ1xcXFw/XFwnKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAoJ1xcXFwuXFwnLCAnXFxcXD9cXCcpCi0KICMgTm9ybWFsaXplIHRoZSBjYXNlIG9mIGEgcGF0aG5hbWUgYW5kIG1hcCBzbGFzaGVzIHRvIGJhY2tzbGFzaGVzLgogIyBPdGhlciBub3JtYWxpemF0aW9ucyAoc3VjaCBhcyBvcHRpbWl6aW5nICcuLi8nIGF3YXkpIGFyZSBub3QgZG9uZQogIyAodGhpcyBpcyBkb25lIGJ5IG5vcm1wYXRoKS4KQEAgLTgyLDEwICs0NiwxNiBAQAogICAgICIiIk5vcm1hbGl6ZSBjYXNlIG9mIHBhdGhuYW1lLgogCiAgICAgTWFrZXMgYWxsIGNoYXJhY3RlcnMgbG93ZXJjYXNlIGFuZCBhbGwgc2xhc2hlcyBpbnRvIGJhY2tzbGFzaGVzLiIiIgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIChieXRlcywgc3RyKSk6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm9ybWNhc2UoKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgIgotICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAne30nIi5mb3JtYXQocy5fX2NsYXNzX18uX19uYW1lX18pKQotICAgIHJldHVybiBzLnJlcGxhY2UoX2dldF9hbHRzZXAocyksIF9nZXRfc2VwKHMpKS5sb3dlcigpCisgICAgdHJ5OgorICAgICAgICBpZiBpc2luc3RhbmNlKHMsIGJ5dGVzKToKKyAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoYicvJywgYidcXCcpLmxvd2VyKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoJy8nLCAnXFwnKS5sb3dlcigpCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocywgKGJ5dGVzLCBzdHIpKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm9ybWNhc2UoKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJXIiICUgcy5fX2NsYXNzX18uX19uYW1lX18pIGZyb20gTm9uZQorICAgICAgICByYWlzZQogCiAKICMgUmV0dXJuIHdoZXRoZXIgYSBwYXRoIGlzIGFic29sdXRlLgpAQCAtOTcsNDAgKzY3LDUxIEBACiBkZWYgaXNhYnMocyk6CiAgICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhYnNvbHV0ZSIiIgogICAgIHMgPSBzcGxpdGRyaXZlKHMpWzFdCi0gICAgcmV0dXJuIGxlbihzKSA+IDAgYW5kIHNbOjFdIGluIF9nZXRfYm90aHNlcHMocykKKyAgICByZXR1cm4gbGVuKHMpID4gMCBhbmQgc1swXSBpbiBfZ2V0X2JvdGhzZXBzKHMpCiAKIAogIyBKb2luIHR3byAob3IgbW9yZSkgcGF0aHMuCiBkZWYgam9pbihwYXRoLCAqcGF0aHMpOgotICAgIHNlcCA9IF9nZXRfc2VwKHBhdGgpCi0gICAgc2VwcyA9IF9nZXRfYm90aHNlcHMocGF0aCkKLSAgICBjb2xvbiA9IF9nZXRfY29sb24ocGF0aCkKLSAgICByZXN1bHRfZHJpdmUsIHJlc3VsdF9wYXRoID0gc3BsaXRkcml2ZShwYXRoKQotICAgIGZvciBwIGluIHBhdGhzOgotICAgICAgICBwX2RyaXZlLCBwX3BhdGggPSBzcGxpdGRyaXZlKHApCi0gICAgICAgIGlmIHBfcGF0aCBhbmQgcF9wYXRoWzBdIGluIHNlcHM6Ci0gICAgICAgICAgICAjIFNlY29uZCBwYXRoIGlzIGFic29sdXRlCi0gICAgICAgICAgICBpZiBwX2RyaXZlIG9yIG5vdCByZXN1bHRfZHJpdmU6Ci0gICAgICAgICAgICAgICAgcmVzdWx0X2RyaXZlID0gcF9kcml2ZQotICAgICAgICAgICAgcmVzdWx0X3BhdGggPSBwX3BhdGgKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGVsaWYgcF9kcml2ZSBhbmQgcF9kcml2ZSAhPSByZXN1bHRfZHJpdmU6Ci0gICAgICAgICAgICBpZiBwX2RyaXZlLmxvd2VyKCkgIT0gcmVzdWx0X2RyaXZlLmxvd2VyKCk6Ci0gICAgICAgICAgICAgICAgIyBEaWZmZXJlbnQgZHJpdmVzID0+IGlnbm9yZSB0aGUgZmlyc3QgcGF0aCBlbnRpcmVseQotICAgICAgICAgICAgICAgIHJlc3VsdF9kcml2ZSA9IHBfZHJpdmUKKyAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKKyAgICAgICAgc2VwID0gYidcXCcKKyAgICAgICAgc2VwcyA9IGInXFwvJworICAgICAgICBjb2xvbiA9IGInOicKKyAgICBlbHNlOgorICAgICAgICBzZXAgPSAnXFwnCisgICAgICAgIHNlcHMgPSAnXFwvJworICAgICAgICBjb2xvbiA9ICc6JworICAgIHRyeToKKyAgICAgICAgaWYgbm90IHBhdGhzOgorICAgICAgICAgICAgcGF0aFs6MF0gKyBzZXAgICMyMzc4MDogRW5zdXJlIGNvbXBhdGlibGUgZGF0YSB0eXBlIGV2ZW4gaWYgcCBpcyBudWxsLgorICAgICAgICByZXN1bHRfZHJpdmUsIHJlc3VsdF9wYXRoID0gc3BsaXRkcml2ZShwYXRoKQorICAgICAgICBmb3IgcCBpbiBwYXRoczoKKyAgICAgICAgICAgIHBfZHJpdmUsIHBfcGF0aCA9IHNwbGl0ZHJpdmUocCkKKyAgICAgICAgICAgIGlmIHBfcGF0aCBhbmQgcF9wYXRoWzBdIGluIHNlcHM6CisgICAgICAgICAgICAgICAgIyBTZWNvbmQgcGF0aCBpcyBhYnNvbHV0ZQorICAgICAgICAgICAgICAgIGlmIHBfZHJpdmUgb3Igbm90IHJlc3VsdF9kcml2ZToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0X2RyaXZlID0gcF9kcml2ZQogICAgICAgICAgICAgICAgIHJlc3VsdF9wYXRoID0gcF9wYXRoCiAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICMgU2FtZSBkcml2ZSBpbiBkaWZmZXJlbnQgY2FzZQotICAgICAgICAgICAgcmVzdWx0X2RyaXZlID0gcF9kcml2ZQotICAgICAgICAjIFNlY29uZCBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBmaXJzdAotICAgICAgICBpZiByZXN1bHRfcGF0aCBhbmQgcmVzdWx0X3BhdGhbLTFdIG5vdCBpbiBzZXBzOgotICAgICAgICAgICAgcmVzdWx0X3BhdGggPSByZXN1bHRfcGF0aCArIHNlcAotICAgICAgICByZXN1bHRfcGF0aCA9IHJlc3VsdF9wYXRoICsgcF9wYXRoCi0gICAgIyMgYWRkIHNlcGFyYXRvciBiZXR3ZWVuIFVOQyBhbmQgbm9uLWFic29sdXRlIHBhdGgKLSAgICBpZiAocmVzdWx0X3BhdGggYW5kIHJlc3VsdF9wYXRoWzBdIG5vdCBpbiBzZXBzIGFuZAotICAgICAgICByZXN1bHRfZHJpdmUgYW5kIHJlc3VsdF9kcml2ZVstMTpdICE9IGNvbG9uKToKLSAgICAgICAgcmV0dXJuIHJlc3VsdF9kcml2ZSArIHNlcCArIHJlc3VsdF9wYXRoCi0gICAgcmV0dXJuIHJlc3VsdF9kcml2ZSArIHJlc3VsdF9wYXRoCisgICAgICAgICAgICBlbGlmIHBfZHJpdmUgYW5kIHBfZHJpdmUgIT0gcmVzdWx0X2RyaXZlOgorICAgICAgICAgICAgICAgIGlmIHBfZHJpdmUubG93ZXIoKSAhPSByZXN1bHRfZHJpdmUubG93ZXIoKToKKyAgICAgICAgICAgICAgICAgICAgIyBEaWZmZXJlbnQgZHJpdmVzID0+IGlnbm9yZSB0aGUgZmlyc3QgcGF0aCBlbnRpcmVseQorICAgICAgICAgICAgICAgICAgICByZXN1bHRfZHJpdmUgPSBwX2RyaXZlCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9wYXRoID0gcF9wYXRoCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgIyBTYW1lIGRyaXZlIGluIGRpZmZlcmVudCBjYXNlCisgICAgICAgICAgICAgICAgcmVzdWx0X2RyaXZlID0gcF9kcml2ZQorICAgICAgICAgICAgIyBTZWNvbmQgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgZmlyc3QKKyAgICAgICAgICAgIGlmIHJlc3VsdF9wYXRoIGFuZCByZXN1bHRfcGF0aFstMV0gbm90IGluIHNlcHM6CisgICAgICAgICAgICAgICAgcmVzdWx0X3BhdGggPSByZXN1bHRfcGF0aCArIHNlcAorICAgICAgICAgICAgcmVzdWx0X3BhdGggPSByZXN1bHRfcGF0aCArIHBfcGF0aAorICAgICAgICAjIyBhZGQgc2VwYXJhdG9yIGJldHdlZW4gVU5DIGFuZCBub24tYWJzb2x1dGUgcGF0aAorICAgICAgICBpZiAocmVzdWx0X3BhdGggYW5kIHJlc3VsdF9wYXRoWzBdIG5vdCBpbiBzZXBzIGFuZAorICAgICAgICAgICAgcmVzdWx0X2RyaXZlIGFuZCByZXN1bHRfZHJpdmVbLTE6XSAhPSBjb2xvbik6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0X2RyaXZlICsgc2VwICsgcmVzdWx0X3BhdGgKKyAgICAgICAgcmV0dXJuIHJlc3VsdF9kcml2ZSArIHJlc3VsdF9wYXRoCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBCeXRlc1dhcm5pbmcpOgorICAgICAgICBnZW5lcmljcGF0aC5fY2hlY2tfYXJnX3R5cGVzKCdqb2luJywgcGF0aCwgKnBhdGhzKQorICAgICAgICByYWlzZQogCiAKICMgU3BsaXQgYSBwYXRoIGluIGEgZHJpdmUgc3BlY2lmaWNhdGlvbiAoYSBkcml2ZSBsZXR0ZXIgZm9sbG93ZWQgYnkgYQpAQCAtMTU1LDEwICsxMzYsMTYgQEAKICAgICBQYXRocyBjYW5ub3QgY29udGFpbiBib3RoIGEgZHJpdmUgbGV0dGVyIGFuZCBhIFVOQyBwYXRoLgogCiAgICAgIiIiCi0gICAgZW1wdHkgPSBfZ2V0X2VtcHR5KHApCi0gICAgaWYgbGVuKHApID4gMToKLSAgICAgICAgc2VwID0gX2dldF9zZXAocCkKLSAgICAgICAgbm9ybXAgPSBwLnJlcGxhY2UoX2dldF9hbHRzZXAocCksIHNlcCkKKyAgICBpZiBsZW4ocCkgPj0gMjoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShwLCBieXRlcyk6CisgICAgICAgICAgICBzZXAgPSBiJ1xcJworICAgICAgICAgICAgYWx0c2VwID0gYicvJworICAgICAgICAgICAgY29sb24gPSBiJzonCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZXAgPSAnXFwnCisgICAgICAgICAgICBhbHRzZXAgPSAnLycKKyAgICAgICAgICAgIGNvbG9uID0gJzonCisgICAgICAgIG5vcm1wID0gcC5yZXBsYWNlKGFsdHNlcCwgc2VwKQogICAgICAgICBpZiAobm9ybXBbMDoyXSA9PSBzZXAqMikgYW5kIChub3JtcFsyOjNdICE9IHNlcCk6CiAgICAgICAgICAgICAjIGlzIGEgVU5DIHBhdGg6CiAgICAgICAgICAgICAjIHZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2IGRyaXZlIGxldHRlciBvciBVTkMgcGF0aApAQCAtMTY2LDE4ICsxNTMsMTggQEAKICAgICAgICAgICAgICMgICAgICAgICAgIGRpcmVjdG9yeSBeXl5eXl5eXl5eXl5eXl4KICAgICAgICAgICAgIGluZGV4ID0gbm9ybXAuZmluZChzZXAsIDIpCiAgICAgICAgICAgICBpZiBpbmRleCA9PSAtMToKLSAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHksIHAKKyAgICAgICAgICAgICAgICByZXR1cm4gcFs6MF0sIHAKICAgICAgICAgICAgIGluZGV4MiA9IG5vcm1wLmZpbmQoc2VwLCBpbmRleCArIDEpCiAgICAgICAgICAgICAjIGEgVU5DIHBhdGggY2FuJ3QgaGF2ZSB0d28gc2xhc2hlcyBpbiBhIHJvdwogICAgICAgICAgICAgIyAoYWZ0ZXIgdGhlIGluaXRpYWwgdHdvKQogICAgICAgICAgICAgaWYgaW5kZXgyID09IGluZGV4ICsgMToKLSAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHksIHAKKyAgICAgICAgICAgICAgICByZXR1cm4gcFs6MF0sIHAKICAgICAgICAgICAgIGlmIGluZGV4MiA9PSAtMToKICAgICAgICAgICAgICAgICBpbmRleDIgPSBsZW4ocCkKICAgICAgICAgICAgIHJldHVybiBwWzppbmRleDJdLCBwW2luZGV4MjpdCi0gICAgICAgIGlmIG5vcm1wWzE6Ml0gPT0gX2dldF9jb2xvbihwKToKKyAgICAgICAgaWYgbm9ybXBbMToyXSA9PSBjb2xvbjoKICAgICAgICAgICAgIHJldHVybiBwWzoyXSwgcFsyOl0KLSAgICByZXR1cm4gZW1wdHksIHAKKyAgICByZXR1cm4gcFs6MF0sIHAKIAogCiAjIFBhcnNlIFVOQyBwYXRocwpAQCAtMjIxLDEwICsyMDgsNyBAQAogICAgICAgICBpIC09IDEKICAgICBoZWFkLCB0YWlsID0gcFs6aV0sIHBbaTpdICAjIG5vdyB0YWlsIGhhcyBubyBzbGFzaGVzCiAgICAgIyByZW1vdmUgdHJhaWxpbmcgc2xhc2hlcyBmcm9tIGhlYWQsIHVubGVzcyBpdCdzIGFsbCBzbGFzaGVzCi0gICAgaGVhZDIgPSBoZWFkCi0gICAgd2hpbGUgaGVhZDIgYW5kIGhlYWQyWy0xOl0gaW4gc2VwczoKLSAgICAgICAgaGVhZDIgPSBoZWFkMls6LTFdCi0gICAgaGVhZCA9IGhlYWQyIG9yIGhlYWQKKyAgICBoZWFkID0gaGVhZC5yc3RyaXAoc2Vwcykgb3IgaGVhZAogICAgIHJldHVybiBkICsgaGVhZCwgdGFpbAogCiAKQEAgLTIzNCw4ICsyMTgsMTAgQEAKICMgSXQgaXMgYWx3YXlzIHRydWUgdGhhdCByb290ICsgZXh0ID09IHAuCiAKIGRlZiBzcGxpdGV4dChwKToKLSAgICByZXR1cm4gZ2VuZXJpY3BhdGguX3NwbGl0ZXh0KHAsIF9nZXRfc2VwKHApLCBfZ2V0X2FsdHNlcChwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9nZXRfZG90KHApKQorICAgIGlmIGlzaW5zdGFuY2UocCwgYnl0ZXMpOgorICAgICAgICByZXR1cm4gZ2VuZXJpY3BhdGguX3NwbGl0ZXh0KHAsIGInXFwnLCBiJy8nLCBiJy4nKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBnZW5lcmljcGF0aC5fc3BsaXRleHQocCwgJ1xcJywgJy8nLCAnLicpCiBzcGxpdGV4dC5fX2RvY19fID0gZ2VuZXJpY3BhdGguX3NwbGl0ZXh0Ll9fZG9jX18KIAogCkBAIC0zNDMsNyArMzI5LDcgQEAKICAgICAgICAgdXNlcmhvbWUgPSBqb2luKGRyaXZlLCBvcy5lbnZpcm9uWydIT01FUEFUSCddKQogCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6Ci0gICAgICAgIHVzZXJob21lID0gdXNlcmhvbWUuZW5jb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkKKyAgICAgICAgdXNlcmhvbWUgPSBvcy5mc2VuY29kZSh1c2VyaG9tZSkKIAogICAgIGlmIGkgIT0gMTogI351c2VyCiAgICAgICAgIHVzZXJob21lID0gam9pbihkaXJuYW1lKHVzZXJob21lKSwgcGF0aFsxOmldKQpAQCAtMzY5LDEzICszNTUsMTQgQEAKIAogICAgIFVua25vd24gdmFyaWFibGVzIGFyZSBsZWZ0IHVuY2hhbmdlZC4iIiIKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgaWYgb3JkKCckJykgbm90IGluIHBhdGggYW5kIG9yZCgnJScpIG5vdCBpbiBwYXRoOgorICAgICAgICBpZiBiJyQnIG5vdCBpbiBwYXRoIGFuZCBiJyUnIG5vdCBpbiBwYXRoOgogICAgICAgICAgICAgcmV0dXJuIHBhdGgKICAgICAgICAgaW1wb3J0IHN0cmluZwogICAgICAgICB2YXJjaGFycyA9IGJ5dGVzKHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICdfLScsICdhc2NpaScpCiAgICAgICAgIHF1b3RlID0gYidcJycKICAgICAgICAgcGVyY2VudCA9IGInJScKICAgICAgICAgYnJhY2UgPSBiJ3snCisgICAgICAgIHJicmFjZSA9IGInfScKICAgICAgICAgZG9sbGFyID0gYickJwogICAgICAgICBlbnZpcm9uID0gZ2V0YXR0cihvcywgJ2Vudmlyb25iJywgTm9uZSkKICAgICBlbHNlOgpAQCAtMzg2LDYgKzM3Myw3IEBACiAgICAgICAgIHF1b3RlID0gJ1wnJwogICAgICAgICBwZXJjZW50ID0gJyUnCiAgICAgICAgIGJyYWNlID0gJ3snCisgICAgICAgIHJicmFjZSA9ICd9JwogICAgICAgICBkb2xsYXIgPSAnJCcKICAgICAgICAgZW52aXJvbiA9IG9zLmVudmlyb24KICAgICByZXMgPSBwYXRoWzowXQpAQCAtNDMyLDE1ICs0MjAsOSBAQAogICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoW2luZGV4KzI6XQogICAgICAgICAgICAgICAgIHBhdGhsZW4gPSBsZW4ocGF0aCkKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBwYXRoLmluZGV4KGInfScpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHBhdGguaW5kZXgoJ30nKQorICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHBhdGguaW5kZXgocmJyYWNlKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSBiJyR7JyArIHBhdGgKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSAnJHsnICsgcGF0aAorICAgICAgICAgICAgICAgICAgICByZXMgKz0gZG9sbGFyICsgYnJhY2UgKyBwYXRoCiAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcGF0aGxlbiAtIDEKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICB2YXIgPSBwYXRoWzppbmRleF0KQEAgLTQ1MCwxMCArNDMyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBlbnZpcm9uW3Zhcl0KICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBiJyR7JyArIHZhciArIGInfScKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAnJHsnICsgdmFyICsgJ30nCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGRvbGxhciArIGJyYWNlICsgdmFyICsgcmJyYWNlCiAgICAgICAgICAgICAgICAgICAgIHJlcyArPSB2YWx1ZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB2YXIgPSBwYXRoWzowXQpAQCAtNDg1LDE2ICs0NjQsMjUgQEAKIAogZGVmIG5vcm1wYXRoKHBhdGgpOgogICAgICIiIk5vcm1hbGl6ZSBwYXRoLCBlbGltaW5hdGluZyBkb3VibGUgc2xhc2hlcywgZXRjLiIiIgotICAgIHNlcCA9IF9nZXRfc2VwKHBhdGgpCi0gICAgZG90ZG90ID0gX2dldF9kb3QocGF0aCkgKiAyCi0gICAgc3BlY2lhbF9wcmVmaXhlcyA9IF9nZXRfc3BlY2lhbChwYXRoKQorICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgorICAgICAgICBzZXAgPSBiJ1xcJworICAgICAgICBhbHRzZXAgPSBiJy8nCisgICAgICAgIGN1cmRpciA9IGInLicKKyAgICAgICAgcGFyZGlyID0gYicuLicKKyAgICAgICAgc3BlY2lhbF9wcmVmaXhlcyA9IChiJ1xcXFwuXFwnLCBiJ1xcXFw/XFwnKQorICAgIGVsc2U6CisgICAgICAgIHNlcCA9ICdcXCcKKyAgICAgICAgYWx0c2VwID0gJy8nCisgICAgICAgIGN1cmRpciA9ICcuJworICAgICAgICBwYXJkaXIgPSAnLi4nCisgICAgICAgIHNwZWNpYWxfcHJlZml4ZXMgPSAoJ1xcXFwuXFwnLCAnXFxcXD9cXCcpCiAgICAgaWYgcGF0aC5zdGFydHN3aXRoKHNwZWNpYWxfcHJlZml4ZXMpOgogICAgICAgICAjIGluIHRoZSBjYXNlIG9mIHBhdGhzIHdpdGggdGhlc2UgcHJlZml4ZXM6CiAgICAgICAgICMgXFwuXCAtPiBkZXZpY2UgbmFtZXMKICAgICAgICAgIyBcXD9cIC0+IGxpdGVyYWwgcGF0aHMKICAgICAgICAgIyBkbyBub3QgZG8gYW55IG5vcm1hbGl6YXRpb24sIGJ1dCByZXR1cm4gdGhlIHBhdGggdW5jaGFuZ2VkCiAgICAgICAgIHJldHVybiBwYXRoCi0gICAgcGF0aCA9IHBhdGgucmVwbGFjZShfZ2V0X2FsdHNlcChwYXRoKSwgc2VwKQorICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoYWx0c2VwLCBzZXApCiAgICAgcHJlZml4LCBwYXRoID0gc3BsaXRkcml2ZShwYXRoKQogCiAgICAgIyBjb2xsYXBzZSBpbml0aWFsIGJhY2tzbGFzaGVzCkBAIC01MDUsMTMgKzQ5MywxMyBAQAogICAgIGNvbXBzID0gcGF0aC5zcGxpdChzZXApCiAgICAgaSA9IDAKICAgICB3aGlsZSBpIDwgbGVuKGNvbXBzKToKLSAgICAgICAgaWYgbm90IGNvbXBzW2ldIG9yIGNvbXBzW2ldID09IF9nZXRfZG90KHBhdGgpOgorICAgICAgICBpZiBub3QgY29tcHNbaV0gb3IgY29tcHNbaV0gPT0gY3VyZGlyOgogICAgICAgICAgICAgZGVsIGNvbXBzW2ldCi0gICAgICAgIGVsaWYgY29tcHNbaV0gPT0gZG90ZG90OgotICAgICAgICAgICAgaWYgaSA+IDAgYW5kIGNvbXBzW2ktMV0gIT0gZG90ZG90OgorICAgICAgICBlbGlmIGNvbXBzW2ldID09IHBhcmRpcjoKKyAgICAgICAgICAgIGlmIGkgPiAwIGFuZCBjb21wc1tpLTFdICE9IHBhcmRpcjoKICAgICAgICAgICAgICAgICBkZWwgY29tcHNbaS0xOmkrMV0KICAgICAgICAgICAgICAgICBpIC09IDEKLSAgICAgICAgICAgIGVsaWYgaSA9PSAwIGFuZCBwcmVmaXguZW5kc3dpdGgoX2dldF9zZXAocGF0aCkpOgorICAgICAgICAgICAgZWxpZiBpID09IDAgYW5kIHByZWZpeC5lbmRzd2l0aChzZXApOgogICAgICAgICAgICAgICAgIGRlbCBjb21wc1tpXQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBpICs9IDEKQEAgLTUxOSw3ICs1MDcsNyBAQAogICAgICAgICAgICAgaSArPSAxCiAgICAgIyBJZiB0aGUgcGF0aCBpcyBub3cgZW1wdHksIHN1YnN0aXR1dGUgJy4nCiAgICAgaWYgbm90IHByZWZpeCBhbmQgbm90IGNvbXBzOgotICAgICAgICBjb21wcy5hcHBlbmQoX2dldF9kb3QocGF0aCkpCisgICAgICAgIGNvbXBzLmFwcGVuZChjdXJkaXIpCiAgICAgcmV0dXJuIHByZWZpeCArIHNlcC5qb2luKGNvbXBzKQogCiAKQEAgLTU1OSw0MiArNTQ3LDEwOSBAQAogc3VwcG9ydHNfdW5pY29kZV9maWxlbmFtZXMgPSAoaGFzYXR0cihzeXMsICJnZXR3aW5kb3dzdmVyc2lvbiIpIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLmdldHdpbmRvd3N2ZXJzaW9uKClbM10gPj0gMikKIAotZGVmIHJlbHBhdGgocGF0aCwgc3RhcnQ9Y3VyZGlyKToKK2RlZiByZWxwYXRoKHBhdGgsIHN0YXJ0PU5vbmUpOgogICAgICIiIlJldHVybiBhIHJlbGF0aXZlIHZlcnNpb24gb2YgYSBwYXRoIiIiCi0gICAgc2VwID0gX2dldF9zZXAocGF0aCkKKyAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKKyAgICAgICAgc2VwID0gYidcXCcKKyAgICAgICAgY3VyZGlyID0gYicuJworICAgICAgICBwYXJkaXIgPSBiJy4uJworICAgIGVsc2U6CisgICAgICAgIHNlcCA9ICdcXCcKKyAgICAgICAgY3VyZGlyID0gJy4nCisgICAgICAgIHBhcmRpciA9ICcuLicKIAotICAgIGlmIHN0YXJ0IGlzIGN1cmRpcjoKLSAgICAgICAgc3RhcnQgPSBfZ2V0X2RvdChwYXRoKQorICAgIGlmIHN0YXJ0IGlzIE5vbmU6CisgICAgICAgIHN0YXJ0ID0gY3VyZGlyCiAKICAgICBpZiBub3QgcGF0aDoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm8gcGF0aCBzcGVjaWZpZWQiKQogCi0gICAgc3RhcnRfYWJzID0gYWJzcGF0aChub3JtcGF0aChzdGFydCkpCi0gICAgcGF0aF9hYnMgPSBhYnNwYXRoKG5vcm1wYXRoKHBhdGgpKQotICAgIHN0YXJ0X2RyaXZlLCBzdGFydF9yZXN0ID0gc3BsaXRkcml2ZShzdGFydF9hYnMpCi0gICAgcGF0aF9kcml2ZSwgcGF0aF9yZXN0ID0gc3BsaXRkcml2ZShwYXRoX2FicykKLSAgICBpZiBub3JtY2FzZShzdGFydF9kcml2ZSkgIT0gbm9ybWNhc2UocGF0aF9kcml2ZSk6Ci0gICAgICAgIGVycm9yID0gInBhdGggaXMgb24gbW91bnQgJ3swfScsIHN0YXJ0IG9uIG1vdW50ICd7MX0nIi5mb3JtYXQoCi0gICAgICAgICAgICBwYXRoX2RyaXZlLCBzdGFydF9kcml2ZSkKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJvcikKKyAgICB0cnk6CisgICAgICAgIHN0YXJ0X2FicyA9IGFic3BhdGgobm9ybXBhdGgoc3RhcnQpKQorICAgICAgICBwYXRoX2FicyA9IGFic3BhdGgobm9ybXBhdGgocGF0aCkpCisgICAgICAgIHN0YXJ0X2RyaXZlLCBzdGFydF9yZXN0ID0gc3BsaXRkcml2ZShzdGFydF9hYnMpCisgICAgICAgIHBhdGhfZHJpdmUsIHBhdGhfcmVzdCA9IHNwbGl0ZHJpdmUocGF0aF9hYnMpCisgICAgICAgIGlmIG5vcm1jYXNlKHN0YXJ0X2RyaXZlKSAhPSBub3JtY2FzZShwYXRoX2RyaXZlKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInBhdGggaXMgb24gbW91bnQgJXIsIHN0YXJ0IG9uIG1vdW50ICVyIiAlICgKKyAgICAgICAgICAgICAgICBwYXRoX2RyaXZlLCBzdGFydF9kcml2ZSkpCiAKLSAgICBzdGFydF9saXN0ID0gW3ggZm9yIHggaW4gc3RhcnRfcmVzdC5zcGxpdChzZXApIGlmIHhdCi0gICAgcGF0aF9saXN0ID0gW3ggZm9yIHggaW4gcGF0aF9yZXN0LnNwbGl0KHNlcCkgaWYgeF0KLSAgICAjIFdvcmsgb3V0IGhvdyBtdWNoIG9mIHRoZSBmaWxlcGF0aCBpcyBzaGFyZWQgYnkgc3RhcnQgYW5kIHBhdGguCi0gICAgaSA9IDAKLSAgICBmb3IgZTEsIGUyIGluIHppcChzdGFydF9saXN0LCBwYXRoX2xpc3QpOgotICAgICAgICBpZiBub3JtY2FzZShlMSkgIT0gbm9ybWNhc2UoZTIpOgotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaSArPSAxCisgICAgICAgIHN0YXJ0X2xpc3QgPSBbeCBmb3IgeCBpbiBzdGFydF9yZXN0LnNwbGl0KHNlcCkgaWYgeF0KKyAgICAgICAgcGF0aF9saXN0ID0gW3ggZm9yIHggaW4gcGF0aF9yZXN0LnNwbGl0KHNlcCkgaWYgeF0KKyAgICAgICAgIyBXb3JrIG91dCBob3cgbXVjaCBvZiB0aGUgZmlsZXBhdGggaXMgc2hhcmVkIGJ5IHN0YXJ0IGFuZCBwYXRoLgorICAgICAgICBpID0gMAorICAgICAgICBmb3IgZTEsIGUyIGluIHppcChzdGFydF9saXN0LCBwYXRoX2xpc3QpOgorICAgICAgICAgICAgaWYgbm9ybWNhc2UoZTEpICE9IG5vcm1jYXNlKGUyKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaSArPSAxCiAKLSAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgcGFyZGlyID0gYicuLicKKyAgICAgICAgcmVsX2xpc3QgPSBbcGFyZGlyXSAqIChsZW4oc3RhcnRfbGlzdCktaSkgKyBwYXRoX2xpc3RbaTpdCisgICAgICAgIGlmIG5vdCByZWxfbGlzdDoKKyAgICAgICAgICAgIHJldHVybiBjdXJkaXIKKyAgICAgICAgcmV0dXJuIGpvaW4oKnJlbF9saXN0KQorICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yLCBBdHRyaWJ1dGVFcnJvciwgQnl0ZXNXYXJuaW5nLCBEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICBnZW5lcmljcGF0aC5fY2hlY2tfYXJnX3R5cGVzKCdyZWxwYXRoJywgcGF0aCwgc3RhcnQpCisgICAgICAgIHJhaXNlCisKKworIyBSZXR1cm4gdGhlIGxvbmdlc3QgY29tbW9uIHN1Yi1wYXRoIG9mIHRoZSBzZXF1ZW5jZSBvZiBwYXRocyBnaXZlbiBhcyBpbnB1dC4KKyMgVGhlIGZ1bmN0aW9uIGlzIGNhc2UtaW5zZW5zaXRpdmUgYW5kICdzZXBhcmF0b3ItaW5zZW5zaXRpdmUnLCBpLmUuIGlmIHRoZQorIyBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gcGF0aHMgaXMgdGhlIHVzZSBvZiAnXCcgdmVyc3VzICcvJyBhcyBzZXBhcmF0b3IsCisjIHRoZXkgYXJlIGRlZW1lZCB0byBiZSBlcXVhbC4KKyMKKyMgSG93ZXZlciwgdGhlIHJldHVybmVkIHBhdGggd2lsbCBoYXZlIHRoZSBzdGFuZGFyZCAnXCcgc2VwYXJhdG9yIChldmVuIGlmIHRoZQorIyBnaXZlbiBwYXRocyBoYWQgdGhlIGFsdGVybmF0aXZlICcvJyBzZXBhcmF0b3IpIGFuZCB3aWxsIGhhdmUgdGhlIGNhc2Ugb2YgdGhlCisjIGZpcnN0IHBhdGggZ2l2ZW4gaW4gdGhlIHNlcXVlbmNlLiBBZGRpdGlvbmFsbHksIGFueSB0cmFpbGluZyBzZXBhcmF0b3IgaXMKKyMgc3RyaXBwZWQgZnJvbSB0aGUgcmV0dXJuZWQgcGF0aC4KKworZGVmIGNvbW1vbnBhdGgocGF0aHMpOgorICAgICIiIkdpdmVuIGEgc2VxdWVuY2Ugb2YgcGF0aCBuYW1lcywgcmV0dXJucyB0aGUgbG9uZ2VzdCBjb21tb24gc3ViLXBhdGguIiIiCisKKyAgICBpZiBub3QgcGF0aHM6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NvbW1vbnBhdGgoKSBhcmcgaXMgYW4gZW1wdHkgc2VxdWVuY2UnKQorCisgICAgaWYgaXNpbnN0YW5jZShwYXRoc1swXSwgYnl0ZXMpOgorICAgICAgICBzZXAgPSBiJ1xcJworICAgICAgICBhbHRzZXAgPSBiJy8nCisgICAgICAgIGN1cmRpciA9IGInLicKICAgICBlbHNlOgotICAgICAgICBwYXJkaXIgPSAnLi4nCi0gICAgcmVsX2xpc3QgPSBbcGFyZGlyXSAqIChsZW4oc3RhcnRfbGlzdCktaSkgKyBwYXRoX2xpc3RbaTpdCi0gICAgaWYgbm90IHJlbF9saXN0OgotICAgICAgICByZXR1cm4gX2dldF9kb3QocGF0aCkKLSAgICByZXR1cm4gam9pbigqcmVsX2xpc3QpCisgICAgICAgIHNlcCA9ICdcXCcKKyAgICAgICAgYWx0c2VwID0gJy8nCisgICAgICAgIGN1cmRpciA9ICcuJworCisgICAgdHJ5OgorICAgICAgICBkcml2ZXNwbGl0cyA9IFtzcGxpdGRyaXZlKHAucmVwbGFjZShhbHRzZXAsIHNlcCkubG93ZXIoKSkgZm9yIHAgaW4gcGF0aHNdCisgICAgICAgIHNwbGl0X3BhdGhzID0gW3Auc3BsaXQoc2VwKSBmb3IgZCwgcCBpbiBkcml2ZXNwbGl0c10KKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpc2FicywgPSBzZXQocFs6MV0gPT0gc2VwIGZvciBkLCBwIGluIGRyaXZlc3BsaXRzKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IG1peCBhYnNvbHV0ZSBhbmQgcmVsYXRpdmUgcGF0aHMiKSBmcm9tIE5vbmUKKworICAgICAgICAjIENoZWNrIHRoYXQgYWxsIGRyaXZlIGxldHRlcnMgb3IgVU5DIHBhdGhzIG1hdGNoLiBUaGUgY2hlY2sgaXMgbWFkZSBvbmx5CisgICAgICAgICMgbm93IG90aGVyd2lzZSB0eXBlIGVycm9ycyBmb3IgbWl4aW5nIHN0cmluZ3MgYW5kIGJ5dGVzIHdvdWxkIG5vdCBiZQorICAgICAgICAjIGNhdWdodC4KKyAgICAgICAgaWYgbGVuKHNldChkIGZvciBkLCBwIGluIGRyaXZlc3BsaXRzKSkgIT0gMToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBhdGhzIGRvbid0IGhhdmUgdGhlIHNhbWUgZHJpdmUiKQorCisgICAgICAgIGRyaXZlLCBwYXRoID0gc3BsaXRkcml2ZShwYXRoc1swXS5yZXBsYWNlKGFsdHNlcCwgc2VwKSkKKyAgICAgICAgY29tbW9uID0gcGF0aC5zcGxpdChzZXApCisgICAgICAgIGNvbW1vbiA9IFtjIGZvciBjIGluIGNvbW1vbiBpZiBjIGFuZCBjICE9IGN1cmRpcl0KKworICAgICAgICBzcGxpdF9wYXRocyA9IFtbYyBmb3IgYyBpbiBzIGlmIGMgYW5kIGMgIT0gY3VyZGlyXSBmb3IgcyBpbiBzcGxpdF9wYXRoc10KKyAgICAgICAgczEgPSBtaW4oc3BsaXRfcGF0aHMpCisgICAgICAgIHMyID0gbWF4KHNwbGl0X3BhdGhzKQorICAgICAgICBmb3IgaSwgYyBpbiBlbnVtZXJhdGUoczEpOgorICAgICAgICAgICAgaWYgYyAhPSBzMltpXToKKyAgICAgICAgICAgICAgICBjb21tb24gPSBjb21tb25bOmldCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbW1vbiA9IGNvbW1vbls6bGVuKHMxKV0KKworICAgICAgICBwcmVmaXggPSBkcml2ZSArIHNlcCBpZiBpc2FicyBlbHNlIGRyaXZlCisgICAgICAgIHJldHVybiBwcmVmaXggKyBzZXAuam9pbihjb21tb24pCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgZ2VuZXJpY3BhdGguX2NoZWNrX2FyZ190eXBlcygnY29tbW9ucGF0aCcsICpwYXRocykKKyAgICAgICAgcmFpc2UKIAogCiAjIGRldGVybWluZSBpZiB0d28gZmlsZXMgYXJlIGluIGZhY3QgdGhlIHNhbWUgZmlsZQpkaWZmIC0tZ2l0IGEvTGliL29wY29kZS5weSBiL0xpYi9vcGNvZGUucHkKaW5kZXggMGJkMWVlNi4uNGM4MjZhNyAxMDA2NDQKLS0tIGEvTGliL29wY29kZS5weQorKysgYi9MaWIvb3Bjb2RlLnB5CkBAIC03MCw2ICs3MCw5IEBACiAKIGRlZl9vcCgnVU5BUllfSU5WRVJUJywgMTUpCiAKK2RlZl9vcCgnQklOQVJZX01BVFJJWF9NVUxUSVBMWScsIDE2KQorZGVmX29wKCdJTlBMQUNFX01BVFJJWF9NVUxUSVBMWScsIDE3KQorCiBkZWZfb3AoJ0JJTkFSWV9QT1dFUicsIDE5KQogZGVmX29wKCdCSU5BUllfTVVMVElQTFknLCAyMCkKIApAQCAtODIsNyArODUsMTAgQEAKIGRlZl9vcCgnSU5QTEFDRV9GTE9PUl9ESVZJREUnLCAyOCkKIGRlZl9vcCgnSU5QTEFDRV9UUlVFX0RJVklERScsIDI5KQogCi1kZWZfb3AoJ1NUT1JFX01BUCcsIDU0KQorZGVmX29wKCdHRVRfQUlURVInLCA1MCkKK2RlZl9vcCgnR0VUX0FORVhUJywgNTEpCitkZWZfb3AoJ0JFRk9SRV9BU1lOQ19XSVRIJywgNTIpCisKIGRlZl9vcCgnSU5QTEFDRV9BREQnLCA1NSkKIGRlZl9vcCgnSU5QTEFDRV9TVUJUUkFDVCcsIDU2KQogZGVmX29wKCdJTlBMQUNFX01VTFRJUExZJywgNTcpCkBAIC05NywxMCArMTAzLDEyIEBACiBkZWZfb3AoJ0JJTkFSWV9PUicsIDY2KQogZGVmX29wKCdJTlBMQUNFX1BPV0VSJywgNjcpCiBkZWZfb3AoJ0dFVF9JVEVSJywgNjgpCitkZWZfb3AoJ0dFVF9ZSUVMRF9GUk9NX0lURVInLCA2OSkKIAogZGVmX29wKCdQUklOVF9FWFBSJywgNzApCiBkZWZfb3AoJ0xPQURfQlVJTERfQ0xBU1MnLCA3MSkKIGRlZl9vcCgnWUlFTERfRlJPTScsIDcyKQorZGVmX29wKCdHRVRfQVdBSVRBQkxFJywgNzMpCiAKIGRlZl9vcCgnSU5QTEFDRV9MU0hJRlQnLCA3NSkKIGRlZl9vcCgnSU5QTEFDRV9SU0hJRlQnLCA3NikKQEAgLTEwOCw3ICsxMTYsOCBAQAogZGVmX29wKCdJTlBMQUNFX1hPUicsIDc4KQogZGVmX29wKCdJTlBMQUNFX09SJywgNzkpCiBkZWZfb3AoJ0JSRUFLX0xPT1AnLCA4MCkKLWRlZl9vcCgnV0lUSF9DTEVBTlVQJywgODEpCitkZWZfb3AoJ1dJVEhfQ0xFQU5VUF9TVEFSVCcsIDgxKQorZGVmX29wKCdXSVRIX0NMRUFOVVBfRklOSVNIJywgODIpCiAKIGRlZl9vcCgnUkVUVVJOX1ZBTFVFJywgODMpCiBkZWZfb3AoJ0lNUE9SVF9TVEFSJywgODQpCkBAIC0xOTQsNyArMjAzLDE1IEBACiBkZWZfb3AoJ0xPQURfQ0xBU1NERVJFRicsIDE0OCkKIGhhc2ZyZWUuYXBwZW5kKDE0OCkKIAoranJlbF9vcCgnU0VUVVBfQVNZTkNfV0lUSCcsIDE1NCkKKwogZGVmX29wKCdFWFRFTkRFRF9BUkcnLCAxNDQpCiBFWFRFTkRFRF9BUkcgPSAxNDQKIAorZGVmX29wKCdCVUlMRF9MSVNUX1VOUEFDSycsIDE0OSkKK2RlZl9vcCgnQlVJTERfTUFQX1VOUEFDSycsIDE1MCkKK2RlZl9vcCgnQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwnLCAxNTEpCitkZWZfb3AoJ0JVSUxEX1RVUExFX1VOUEFDSycsIDE1MikKK2RlZl9vcCgnQlVJTERfU0VUX1VOUEFDSycsIDE1MykKKwogZGVsIGRlZl9vcCwgbmFtZV9vcCwganJlbF9vcCwgamFic19vcApkaWZmIC0tZ2l0IGEvTGliL29wZXJhdG9yLnB5IGIvTGliL29wZXJhdG9yLnB5CmluZGV4IGI2MDM0OWYuLjBlMmU1M2UgMTAwNjQ0Ci0tLSBhL0xpYi9vcGVyYXRvci5weQorKysgYi9MaWIvb3BlcmF0b3IucHkKQEAgLTEyLDEyICsxMiwxMiBAQAogCiBfX2FsbF9fID0gWydhYnMnLCAnYWRkJywgJ2FuZF8nLCAnYXR0cmdldHRlcicsICdjb25jYXQnLCAnY29udGFpbnMnLCAnY291bnRPZicsCiAgICAgICAgICAgICdkZWxpdGVtJywgJ2VxJywgJ2Zsb29yZGl2JywgJ2dlJywgJ2dldGl0ZW0nLCAnZ3QnLCAnaWFkZCcsICdpYW5kJywKLSAgICAgICAgICAgJ2ljb25jYXQnLCAnaWZsb29yZGl2JywgJ2lsc2hpZnQnLCAnaW1vZCcsICdpbXVsJywgJ2luZGV4JywKLSAgICAgICAgICAgJ2luZGV4T2YnLCAnaW52JywgJ2ludmVydCcsICdpb3InLCAnaXBvdycsICdpcnNoaWZ0JywgJ2lzXycsCi0gICAgICAgICAgICdpc19ub3QnLCAnaXN1YicsICdpdGVtZ2V0dGVyJywgJ2l0cnVlZGl2JywgJ2l4b3InLCAnbGUnLAotICAgICAgICAgICAnbGVuZ3RoX2hpbnQnLCAnbHNoaWZ0JywgJ2x0JywgJ21ldGhvZGNhbGxlcicsICdtb2QnLCAnbXVsJywgJ25lJywKLSAgICAgICAgICAgJ25lZycsICdub3RfJywgJ29yXycsICdwb3MnLCAncG93JywgJ3JzaGlmdCcsICdzZXRpdGVtJywgJ3N1YicsCi0gICAgICAgICAgICd0cnVlZGl2JywgJ3RydXRoJywgJ3hvciddCisgICAgICAgICAgICdpY29uY2F0JywgJ2lmbG9vcmRpdicsICdpbHNoaWZ0JywgJ2ltYXRtdWwnLCAnaW1vZCcsICdpbXVsJywKKyAgICAgICAgICAgJ2luZGV4JywgJ2luZGV4T2YnLCAnaW52JywgJ2ludmVydCcsICdpb3InLCAnaXBvdycsICdpcnNoaWZ0JywKKyAgICAgICAgICAgJ2lzXycsICdpc19ub3QnLCAnaXN1YicsICdpdGVtZ2V0dGVyJywgJ2l0cnVlZGl2JywgJ2l4b3InLCAnbGUnLAorICAgICAgICAgICAnbGVuZ3RoX2hpbnQnLCAnbHNoaWZ0JywgJ2x0JywgJ21hdG11bCcsICdtZXRob2RjYWxsZXInLCAnbW9kJywKKyAgICAgICAgICAgJ211bCcsICduZScsICduZWcnLCAnbm90XycsICdvcl8nLCAncG9zJywgJ3BvdycsICdyc2hpZnQnLAorICAgICAgICAgICAnc2V0aXRlbScsICdzdWInLCAndHJ1ZWRpdicsICd0cnV0aCcsICd4b3InXQogCiBmcm9tIGJ1aWx0aW5zIGltcG9ydCBhYnMgYXMgX2FicwogCkBAIC0xMDUsNiArMTA1LDEwIEBACiAgICAgIlNhbWUgYXMgYSAqIGIuIgogICAgIHJldHVybiBhICogYgogCitkZWYgbWF0bXVsKGEsIGIpOgorICAgICJTYW1lIGFzIGEgQCBiLiIKKyAgICByZXR1cm4gYSBAIGIKKwogZGVmIG5lZyhhKToKICAgICAiU2FtZSBhcyAtYS4iCiAgICAgcmV0dXJuIC1hCkBAIC0yMjcsMTAgKzIzMSwxMyBAQAogICAgIEFmdGVyIGggPSBhdHRyZ2V0dGVyKCduYW1lLmZpcnN0JywgJ25hbWUubGFzdCcpLCB0aGUgY2FsbCBoKHIpIHJldHVybnMKICAgICAoci5uYW1lLmZpcnN0LCByLm5hbWUubGFzdCkuCiAgICAgIiIiCisgICAgX19zbG90c19fID0gKCdfYXR0cnMnLCAnX2NhbGwnKQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGF0dHIsICphdHRycyk6CiAgICAgICAgIGlmIG5vdCBhdHRyczoKICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGF0dHIsIHN0cik6CiAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdhdHRyaWJ1dGUgbmFtZSBtdXN0IGJlIGEgc3RyaW5nJykKKyAgICAgICAgICAgIHNlbGYuX2F0dHJzID0gKGF0dHIsKQogICAgICAgICAgICAgbmFtZXMgPSBhdHRyLnNwbGl0KCcuJykKICAgICAgICAgICAgIGRlZiBmdW5jKG9iaik6CiAgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CkBAIC0yMzgsNyArMjQ1LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gb2JqCiAgICAgICAgICAgICBzZWxmLl9jYWxsID0gZnVuYwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZ2V0dGVycyA9IHR1cGxlKG1hcChhdHRyZ2V0dGVyLCAoYXR0ciwpICsgYXR0cnMpKQorICAgICAgICAgICAgc2VsZi5fYXR0cnMgPSAoYXR0ciwpICsgYXR0cnMKKyAgICAgICAgICAgIGdldHRlcnMgPSB0dXBsZShtYXAoYXR0cmdldHRlciwgc2VsZi5fYXR0cnMpKQogICAgICAgICAgICAgZGVmIGZ1bmMob2JqKToKICAgICAgICAgICAgICAgICByZXR1cm4gdHVwbGUoZ2V0dGVyKG9iaikgZm9yIGdldHRlciBpbiBnZXR0ZXJzKQogICAgICAgICAgICAgc2VsZi5fY2FsbCA9IGZ1bmMKQEAgLTI0NiwxOSArMjU0LDMwIEBACiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG9iaik6CiAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsKG9iaikKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy4lcyglcyknICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4obWFwKHJlcHIsIHNlbGYuX2F0dHJzKSkpCisKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLCBzZWxmLl9hdHRycworCiBjbGFzcyBpdGVtZ2V0dGVyOgogICAgICIiIgogICAgIFJldHVybiBhIGNhbGxhYmxlIG9iamVjdCB0aGF0IGZldGNoZXMgdGhlIGdpdmVuIGl0ZW0ocykgZnJvbSBpdHMgb3BlcmFuZC4KICAgICBBZnRlciBmID0gaXRlbWdldHRlcigyKSwgdGhlIGNhbGwgZihyKSByZXR1cm5zIHJbMl0uCiAgICAgQWZ0ZXIgZyA9IGl0ZW1nZXR0ZXIoMiwgNSwgMyksIHRoZSBjYWxsIGcocikgcmV0dXJucyAoclsyXSwgcls1XSwgclszXSkKICAgICAiIiIKKyAgICBfX3Nsb3RzX18gPSAoJ19pdGVtcycsICdfY2FsbCcpCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlbSwgKml0ZW1zKToKICAgICAgICAgaWYgbm90IGl0ZW1zOgorICAgICAgICAgICAgc2VsZi5faXRlbXMgPSAoaXRlbSwpCiAgICAgICAgICAgICBkZWYgZnVuYyhvYmopOgogICAgICAgICAgICAgICAgIHJldHVybiBvYmpbaXRlbV0KICAgICAgICAgICAgIHNlbGYuX2NhbGwgPSBmdW5jCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpdGVtcyA9IChpdGVtLCkgKyBpdGVtcworICAgICAgICAgICAgc2VsZi5faXRlbXMgPSBpdGVtcyA9IChpdGVtLCkgKyBpdGVtcwogICAgICAgICAgICAgZGVmIGZ1bmMob2JqKToKICAgICAgICAgICAgICAgICByZXR1cm4gdHVwbGUob2JqW2ldIGZvciBpIGluIGl0ZW1zKQogICAgICAgICAgICAgc2VsZi5fY2FsbCA9IGZ1bmMKQEAgLTI2Niw2ICsyODUsMTQgQEAKICAgICBkZWYgX19jYWxsX18oc2VsZiwgb2JqKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGwob2JqKQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLiVzKCVzKScgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKG1hcChyZXByLCBzZWxmLl9pdGVtcykpKQorCisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXywgc2VsZi5faXRlbXMKKwogY2xhc3MgbWV0aG9kY2FsbGVyOgogICAgICIiIgogICAgIFJldHVybiBhIGNhbGxhYmxlIG9iamVjdCB0aGF0IGNhbGxzIHRoZSBnaXZlbiBtZXRob2Qgb24gaXRzIG9wZXJhbmQuCkBAIC0yNzMsNiArMzAwLDcgQEAKICAgICBBZnRlciBnID0gbWV0aG9kY2FsbGVyKCduYW1lJywgJ2RhdGUnLCBmb289MSksIHRoZSBjYWxsIGcocikgcmV0dXJucwogICAgIHIubmFtZSgnZGF0ZScsIGZvbz0xKS4KICAgICAiIiIKKyAgICBfX3Nsb3RzX18gPSAoJ19uYW1lJywgJ19hcmdzJywgJ19rd2FyZ3MnKQogCiAgICAgZGVmIF9faW5pdF9fKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIGlmIGxlbihhcmdzKSA8IDI6CkBAIC0yODAsMTIgKzMwOCwzMCBAQAogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZykKICAgICAgICAgc2VsZiA9IGFyZ3NbMF0KICAgICAgICAgc2VsZi5fbmFtZSA9IGFyZ3NbMV0KKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2VsZi5fbmFtZSwgc3RyKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbWV0aG9kIG5hbWUgbXVzdCBiZSBhIHN0cmluZycpCiAgICAgICAgIHNlbGYuX2FyZ3MgPSBhcmdzWzI6XQogICAgICAgICBzZWxmLl9rd2FyZ3MgPSBrd2FyZ3MKIAogICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBvYmopOgogICAgICAgICByZXR1cm4gZ2V0YXR0cihvYmosIHNlbGYuX25hbWUpKCpzZWxmLl9hcmdzLCAqKnNlbGYuX2t3YXJncykKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgYXJncyA9IFtyZXByKHNlbGYuX25hbWUpXQorICAgICAgICBhcmdzLmV4dGVuZChtYXAocmVwciwgc2VsZi5fYXJncykpCisgICAgICAgIGFyZ3MuZXh0ZW5kKCclcz0lcicgJSAoaywgdikgZm9yIGssIHYgaW4gc2VsZi5fa3dhcmdzLml0ZW1zKCkpCisgICAgICAgIHJldHVybiAnJXMuJXMoJXMpJyAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oYXJncykpCisKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX2t3YXJnczoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXywgKHNlbGYuX25hbWUsKSArIHNlbGYuX2FyZ3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCisgICAgICAgICAgICByZXR1cm4gcGFydGlhbChzZWxmLl9fY2xhc3NfXywgc2VsZi5fbmFtZSwgKipzZWxmLl9rd2FyZ3MpLCBzZWxmLl9hcmdzCisKKwogIyBJbi1wbGFjZSBPcGVyYXRpb25zICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiMKIAogZGVmIGlhZGQoYSwgYik6CkBAIC0zMjYsNiArMzcyLDExIEBACiAgICAgYSAqPSBiCiAgICAgcmV0dXJuIGEKIAorZGVmIGltYXRtdWwoYSwgYik6CisgICAgIlNhbWUgYXMgYSBAPSBiLiIKKyAgICBhIEA9IGIKKyAgICByZXR1cm4gYQorCiBkZWYgaW9yKGEsIGIpOgogICAgICJTYW1lIGFzIGEgfD0gYi4iCiAgICAgYSB8PSBiCkBAIC0zODMsNiArNDM0LDcgQEAKIF9fbHNoaWZ0X18gPSBsc2hpZnQKIF9fbW9kX18gPSBtb2QKIF9fbXVsX18gPSBtdWwKK19fbWF0bXVsX18gPSBtYXRtdWwKIF9fbmVnX18gPSBuZWcKIF9fb3JfXyA9IG9yXwogX19wb3NfXyA9IHBvcwpAQCAtNDAzLDYgKzQ1NSw3IEBACiBfX2lsc2hpZnRfXyA9IGlsc2hpZnQKIF9faW1vZF9fID0gaW1vZAogX19pbXVsX18gPSBpbXVsCitfX2ltYXRtdWxfXyA9IGltYXRtdWwKIF9faW9yX18gPSBpb3IKIF9faXBvd19fID0gaXBvdwogX19pcnNoaWZ0X18gPSBpcnNoaWZ0CmRpZmYgLS1naXQgYS9MaWIvb3MucHkgYi9MaWIvb3MucHkKaW5kZXggMjdiMjQxYS4uMTNhNDJjMyAxMDA2NDQKLS0tIGEvTGliL29zLnB5CisrKyBiL0xpYi9vcy5weQpAQCAtNjEsNiArNjEsMTAgQEAKICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgIHBhc3MKIAorICAgIGltcG9ydCBwb3NpeAorICAgIF9fYWxsX18uZXh0ZW5kKF9nZXRfZXhwb3J0c19saXN0KHBvc2l4KSkKKyAgICBkZWwgcG9zaXgKKwogZWxpZiAnbnQnIGluIF9uYW1lczoKICAgICBuYW1lID0gJ250JwogICAgIGxpbmVzZXAgPSAnXHJcbicKQEAgLTMyMSw3ICszMjUsNyBAQAogICAgIHRoZSB2YWx1ZSBvZiB0b3Bkb3duLCB0aGUgbGlzdCBvZiBzdWJkaXJlY3RvcmllcyBpcyByZXRyaWV2ZWQgYmVmb3JlIHRoZQogICAgIHR1cGxlcyBmb3IgdGhlIGRpcmVjdG9yeSBhbmQgaXRzIHN1YmRpcmVjdG9yaWVzIGFyZSBnZW5lcmF0ZWQuCiAKLSAgICBCeSBkZWZhdWx0IGVycm9ycyBmcm9tIHRoZSBvcy5saXN0ZGlyKCkgY2FsbCBhcmUgaWdub3JlZC4gIElmCisgICAgQnkgZGVmYXVsdCBlcnJvcnMgZnJvbSB0aGUgb3Muc2NhbmRpcigpIGNhbGwgYXJlIGlnbm9yZWQuICBJZgogICAgIG9wdGlvbmFsIGFyZyAnb25lcnJvcicgaXMgc3BlY2lmaWVkLCBpdCBzaG91bGQgYmUgYSBmdW5jdGlvbjsgaXQKICAgICB3aWxsIGJlIGNhbGxlZCB3aXRoIG9uZSBhcmd1bWVudCwgYW4gT1NFcnJvciBpbnN0YW5jZS4gIEl0IGNhbgogICAgIHJlcG9ydCB0aGUgZXJyb3IgdG8gY29udGludWUgd2l0aCB0aGUgd2Fsaywgb3IgcmFpc2UgdGhlIGV4Y2VwdGlvbgpAQCAtMzUwLDcgKzM1NCw4IEBACiAKICAgICAiIiIKIAotICAgIGlzbGluaywgam9pbiwgaXNkaXIgPSBwYXRoLmlzbGluaywgcGF0aC5qb2luLCBwYXRoLmlzZGlyCisgICAgZGlycyA9IFtdCisgICAgbm9uZGlycyA9IFtdCiAKICAgICAjIFdlIG1heSBub3QgaGF2ZSByZWFkIHBlcm1pc3Npb24gZm9yIHRvcCwgaW4gd2hpY2ggY2FzZSB3ZSBjYW4ndAogICAgICMgZ2V0IGEgbGlzdCBvZiB0aGUgZmlsZXMgdGhlIGRpcmVjdG9yeSBjb250YWlucy4gIG9zLndhbGsKQEAgLTM1OCwyOCArMzYzLDcxIEBACiAgICAgIyBtaW5vciByZWFzb24gd2hlbiAoc2F5KSBhIHRob3VzYW5kIHJlYWRhYmxlIGRpcmVjdG9yaWVzIGFyZSBzdGlsbAogICAgICMgbGVmdCB0byB2aXNpdC4gIFRoYXQgbG9naWMgaXMgY29waWVkIGhlcmUuCiAgICAgdHJ5OgotICAgICAgICAjIE5vdGUgdGhhdCBsaXN0ZGlyIGlzIGdsb2JhbCBpbiB0aGlzIG1vZHVsZSBkdWUKKyAgICAgICAgIyBOb3RlIHRoYXQgc2NhbmRpciBpcyBnbG9iYWwgaW4gdGhpcyBtb2R1bGUgZHVlCiAgICAgICAgICMgdG8gZWFybGllciBpbXBvcnQtKi4KLSAgICAgICAgbmFtZXMgPSBsaXN0ZGlyKHRvcCkKLSAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgIHNjYW5kaXJfaXQgPSBzY2FuZGlyKHRvcCkKKyAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKICAgICAgICAgaWYgb25lcnJvciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIG9uZXJyb3IoZXJyKQorICAgICAgICAgICAgb25lcnJvcihlcnJvcikKICAgICAgICAgcmV0dXJuCiAKLSAgICBkaXJzLCBub25kaXJzID0gW10sIFtdCi0gICAgZm9yIG5hbWUgaW4gbmFtZXM6Ci0gICAgICAgIGlmIGlzZGlyKGpvaW4odG9wLCBuYW1lKSk6Ci0gICAgICAgICAgICBkaXJzLmFwcGVuZChuYW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbm9uZGlycy5hcHBlbmQobmFtZSkKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZW50cnkgPSBuZXh0KHNjYW5kaXJfaXQpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKKyAgICAgICAgICAgIGlmIG9uZXJyb3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgb25lcnJvcihlcnJvcikKKyAgICAgICAgICAgIHJldHVybgogCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlzX2RpciA9IGVudHJ5LmlzX2RpcigpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgIyBJZiBpc19kaXIoKSByYWlzZXMgYW4gT1NFcnJvciwgY29uc2lkZXIgdGhhdCB0aGUgZW50cnkgaXMgbm90CisgICAgICAgICAgICAjIGEgZGlyZWN0b3J5LCBzYW1lIGJlaGF2aW91ciB0aGFuIG9zLnBhdGguaXNkaXIoKS4KKyAgICAgICAgICAgIGlzX2RpciA9IEZhbHNlCisKKyAgICAgICAgaWYgaXNfZGlyOgorICAgICAgICAgICAgZGlycy5hcHBlbmQoZW50cnkubmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5vbmRpcnMuYXBwZW5kKGVudHJ5Lm5hbWUpCisKKyAgICAgICAgaWYgbm90IHRvcGRvd24gYW5kIGlzX2RpcjoKKyAgICAgICAgICAgICMgQm90dG9tLXVwOiByZWN1cnNlIGludG8gc3ViLWRpcmVjdG9yeSwgYnV0IGV4Y2x1ZGUgc3ltbGlua3MgdG8KKyAgICAgICAgICAgICMgZGlyZWN0b3JpZXMgaWYgZm9sbG93bGlua3MgaXMgRmFsc2UKKyAgICAgICAgICAgIGlmIGZvbGxvd2xpbmtzOgorICAgICAgICAgICAgICAgIHdhbGtfaW50byA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpc19zeW1saW5rID0gZW50cnkuaXNfc3ltbGluaygpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICMgSWYgaXNfc3ltbGluaygpIHJhaXNlcyBhbiBPU0Vycm9yLCBjb25zaWRlciB0aGF0IHRoZQorICAgICAgICAgICAgICAgICAgICAjIGVudHJ5IGlzIG5vdCBhIHN5bWJvbGljIGxpbmssIHNhbWUgYmVoYXZpb3VyIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgIyBvcy5wYXRoLmlzbGluaygpLgorICAgICAgICAgICAgICAgICAgICBpc19zeW1saW5rID0gRmFsc2UKKyAgICAgICAgICAgICAgICB3YWxrX2ludG8gPSBub3QgaXNfc3ltbGluaworCisgICAgICAgICAgICBpZiB3YWxrX2ludG86CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSB3YWxrKGVudHJ5LnBhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd2xpbmtzKQorCisgICAgIyBZaWVsZCBiZWZvcmUgcmVjdXJzaW9uIGlmIGdvaW5nIHRvcCBkb3duCiAgICAgaWYgdG9wZG93bjoKICAgICAgICAgeWllbGQgdG9wLCBkaXJzLCBub25kaXJzCi0gICAgZm9yIG5hbWUgaW4gZGlyczoKLSAgICAgICAgbmV3X3BhdGggPSBqb2luKHRvcCwgbmFtZSkKLSAgICAgICAgaWYgZm9sbG93bGlua3Mgb3Igbm90IGlzbGluayhuZXdfcGF0aCk6Ci0gICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGsobmV3X3BhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd2xpbmtzKQotICAgIGlmIG5vdCB0b3Bkb3duOgorCisgICAgICAgICMgUmVjdXJzZSBpbnRvIHN1Yi1kaXJlY3RvcmllcworICAgICAgICBpc2xpbmssIGpvaW4gPSBwYXRoLmlzbGluaywgcGF0aC5qb2luCisgICAgICAgIGZvciBuYW1lIGluIGRpcnM6CisgICAgICAgICAgICBuZXdfcGF0aCA9IGpvaW4odG9wLCBuYW1lKQorICAgICAgICAgICAgIyBJc3N1ZSAjMjM2MDU6IG9zLnBhdGguaXNsaW5rKCkgaXMgdXNlZCBpbnN0ZWFkIG9mIGNhY2hpbmcKKyAgICAgICAgICAgICMgZW50cnkuaXNfc3ltbGluaygpIHJlc3VsdCBkdXJpbmcgdGhlIGxvb3Agb24gb3Muc2NhbmRpcigpIGJlY2F1c2UKKyAgICAgICAgICAgICMgdGhlIGNhbGxlciBjYW4gcmVwbGFjZSB0aGUgZGlyZWN0b3J5IGVudHJ5IGR1cmluZyB0aGUgInlpZWxkIgorICAgICAgICAgICAgIyBhYm92ZS4KKyAgICAgICAgICAgIGlmIGZvbGxvd2xpbmtzIG9yIG5vdCBpc2xpbmsobmV3X3BhdGgpOgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gd2FsayhuZXdfcGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93bGlua3MpCisgICAgZWxzZToKKyAgICAgICAgIyBZaWVsZCBhZnRlciByZWN1cnNpb24gaWYgZ29pbmcgYm90dG9tIHVwCiAgICAgICAgIHlpZWxkIHRvcCwgZGlycywgbm9uZGlycwogCiBfX2FsbF9fLmFwcGVuZCgid2FsayIpCkBAIC00NjYsNyArNTE0LDcgQEAKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgICBpZiBvbmVycm9yIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBvbmVycm9yKGVycikKLSAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGlmIGZvbGxvd19zeW1saW5rcyBvciBwYXRoLnNhbWVzdGF0KG9yaWdfc3QsIHN0YXQoZGlyZmQpKToKICAgICAgICAgICAgICAgICAgICAgZGlycGF0aCA9IHBhdGguam9pbih0b3BwYXRoLCBuYW1lKQpkaWZmIC0tZ2l0IGEvTGliL3BhdGhsaWIucHkgYi9MaWIvcGF0aGxpYi5weQppbmRleCA4ZmVmMjU5Li5iYmFjNzczIDEwMDY0NAotLS0gYS9MaWIvcGF0aGxpYi5weQorKysgYi9MaWIvcGF0aGxpYi5weQpAQCAtMjI1LDYgKzIyNSwzNiBAQAogICAgICAgICAgICAgIyBJdCdzIGEgcGF0aCBvbiBhIG5ldHdvcmsgZHJpdmUgPT4gJ2ZpbGU6Ly9ob3N0L3NoYXJlL2EvYicKICAgICAgICAgICAgIHJldHVybiAnZmlsZTonICsgdXJscXVvdGVfZnJvbV9ieXRlcyhwYXRoLmFzX3Bvc2l4KCkuZW5jb2RlKCd1dGYtOCcpKQogCisgICAgZGVmIGdldGhvbWVkaXIoc2VsZiwgdXNlcm5hbWUpOgorICAgICAgICBpZiAnSE9NRScgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgIHVzZXJob21lID0gb3MuZW52aXJvblsnSE9NRSddCisgICAgICAgIGVsaWYgJ1VTRVJQUk9GSUxFJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgdXNlcmhvbWUgPSBvcy5lbnZpcm9uWydVU0VSUFJPRklMRSddCisgICAgICAgIGVsaWYgJ0hPTUVQQVRIJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRydiA9IG9zLmVudmlyb25bJ0hPTUVEUklWRSddCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgZHJ2ID0gJycKKyAgICAgICAgICAgIHVzZXJob21lID0gZHJ2ICsgb3MuZW52aXJvblsnSE9NRVBBVEgnXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJDYW4ndCBkZXRlcm1pbmUgaG9tZSBkaXJlY3RvcnkiKQorCisgICAgICAgIGlmIHVzZXJuYW1lOgorICAgICAgICAgICAgIyBUcnkgdG8gZ3Vlc3MgdXNlciBob21lIGRpcmVjdG9yeS4gIEJ5IGRlZmF1bHQgYWxsIHVzZXJzCisgICAgICAgICAgICAjIGRpcmVjdG9yaWVzIGFyZSBsb2NhdGVkIGluIHRoZSBzYW1lIHBsYWNlIGFuZCBhcmUgbmFtZWQgYnkKKyAgICAgICAgICAgICMgY29ycmVzcG9uZGluZyB1c2VybmFtZXMuICBJZiBjdXJyZW50IHVzZXIgaG9tZSBkaXJlY3RvcnkgcG9pbnRzCisgICAgICAgICAgICAjIHRvIG5vbnN0YW5kYXJkIHBsYWNlLCB0aGlzIGd1ZXNzIGlzIGxpa2VseSB3cm9uZy4KKyAgICAgICAgICAgIGlmIG9zLmVudmlyb25bJ1VTRVJOQU1FJ10gIT0gdXNlcm5hbWU6CisgICAgICAgICAgICAgICAgZHJ2LCByb290LCBwYXJ0cyA9IHNlbGYucGFyc2VfcGFydHMoKHVzZXJob21lLCkpCisgICAgICAgICAgICAgICAgaWYgcGFydHNbLTFdICE9IG9zLmVudmlyb25bJ1VTRVJOQU1FJ106CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2FuJ3QgZGV0ZXJtaW5lIGhvbWUgZGlyZWN0b3J5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgJXIiICUgdXNlcm5hbWUpCisgICAgICAgICAgICAgICAgcGFydHNbLTFdID0gdXNlcm5hbWUKKyAgICAgICAgICAgICAgICBpZiBkcnYgb3Igcm9vdDoKKyAgICAgICAgICAgICAgICAgICAgdXNlcmhvbWUgPSBkcnYgKyByb290ICsgc2VsZi5qb2luKHBhcnRzWzE6XSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB1c2VyaG9tZSA9IHNlbGYuam9pbihwYXJ0cykKKyAgICAgICAgcmV0dXJuIHVzZXJob21lCiAKIGNsYXNzIF9Qb3NpeEZsYXZvdXIoX0ZsYXZvdXIpOgogICAgIHNlcCA9ICcvJwpAQCAtMzA4LDYgKzMzOCwyMSBAQAogICAgICAgICBicGF0aCA9IGJ5dGVzKHBhdGgpCiAgICAgICAgIHJldHVybiAnZmlsZTovLycgKyB1cmxxdW90ZV9mcm9tX2J5dGVzKGJwYXRoKQogCisgICAgZGVmIGdldGhvbWVkaXIoc2VsZiwgdXNlcm5hbWUpOgorICAgICAgICBpZiBub3QgdXNlcm5hbWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG9zLmVudmlyb25bJ0hPTUUnXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIGltcG9ydCBwd2QKKyAgICAgICAgICAgICAgICByZXR1cm4gcHdkLmdldHB3dWlkKG9zLmdldHVpZCgpKS5wd19kaXIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGltcG9ydCBwd2QKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gcHdkLmdldHB3bmFtKHVzZXJuYW1lKS5wd19kaXIKKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbid0IGRldGVybWluZSBob21lIGRpcmVjdG9yeSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgJXIiICUgdXNlcm5hbWUpCisKIAogX3dpbmRvd3NfZmxhdm91ciA9IF9XaW5kb3dzRmxhdm91cigpCiBfcG9zaXhfZmxhdm91ciA9IF9Qb3NpeEZsYXZvdXIoKQpAQCAtOTg0LDYgKzEwMjksMjQgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBjbHMob3MuZ2V0Y3dkKCkpCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgaG9tZShjbHMpOgorICAgICAgICAiIiJSZXR1cm4gYSBuZXcgcGF0aCBwb2ludGluZyB0byB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5IChhcworICAgICAgICByZXR1cm5lZCBieSBvcy5wYXRoLmV4cGFuZHVzZXIoJ34nKSkuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gY2xzKGNscygpLl9mbGF2b3VyLmdldGhvbWVkaXIoTm9uZSkpCisKKyAgICBkZWYgc2FtZWZpbGUoc2VsZiwgb3RoZXJfcGF0aCk6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIG90aGVyX3BhdGggaXMgdGhlIHNhbWUgb3Igbm90IGFzIHRoaXMgZmlsZQorICAgICAgICAoYXMgcmV0dXJuZWQgYnkgb3MucGF0aC5zYW1lZmlsZSgpKS4KKyAgICAgICAgIiIiCisgICAgICAgIHN0ID0gc2VsZi5zdGF0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3RoZXJfc3QgPSBvdGhlcl9wYXRoLnN0YXQoKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBvdGhlcl9zdCA9IG9zLnN0YXQob3RoZXJfcGF0aCkKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguc2FtZXN0YXQoc3QsIG90aGVyX3N0KQorCiAgICAgZGVmIGl0ZXJkaXIoc2VsZik6CiAgICAgICAgICIiIkl0ZXJhdGUgb3ZlciB0aGUgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuICBEb2VzIG5vdCB5aWVsZCBhbnkKICAgICAgICAgcmVzdWx0IGZvciB0aGUgc3BlY2lhbCBwYXRocyAnLicgYW5kICcuLicuCkBAIC0xMDkyLDYgKzExNTUsMzkgQEAKICAgICAgICAgcmV0dXJuIGlvLm9wZW4oc3RyKHNlbGYpLCBtb2RlLCBidWZmZXJpbmcsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5lcj1zZWxmLl9vcGVuZXIpCiAKKyAgICBkZWYgcmVhZF9ieXRlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIE9wZW4gdGhlIGZpbGUgaW4gYnl0ZXMgbW9kZSwgcmVhZCBpdCwgYW5kIGNsb3NlIHRoZSBmaWxlLgorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4obW9kZT0ncmInKSBhcyBmOgorICAgICAgICAgICAgcmV0dXJuIGYucmVhZCgpCisKKyAgICBkZWYgcmVhZF90ZXh0KHNlbGYsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIE9wZW4gdGhlIGZpbGUgaW4gdGV4dCBtb2RlLCByZWFkIGl0LCBhbmQgY2xvc2UgdGhlIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYub3Blbihtb2RlPSdyJywgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpIGFzIGY6CisgICAgICAgICAgICByZXR1cm4gZi5yZWFkKCkKKworICAgIGRlZiB3cml0ZV9ieXRlcyhzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiCisgICAgICAgIE9wZW4gdGhlIGZpbGUgaW4gYnl0ZXMgbW9kZSwgd3JpdGUgdG8gaXQsIGFuZCBjbG9zZSB0aGUgZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgICMgdHlwZS1jaGVjayBmb3IgdGhlIGJ1ZmZlciBpbnRlcmZhY2UgYmVmb3JlIHRydW5jYXRpbmcgdGhlIGZpbGUKKyAgICAgICAgdmlldyA9IG1lbW9yeXZpZXcoZGF0YSkKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4obW9kZT0nd2InKSBhcyBmOgorICAgICAgICAgICAgcmV0dXJuIGYud3JpdGUodmlldykKKworICAgIGRlZiB3cml0ZV90ZXh0KHNlbGYsIGRhdGEsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIE9wZW4gdGhlIGZpbGUgaW4gdGV4dCBtb2RlLCB3cml0ZSB0byBpdCwgYW5kIGNsb3NlIHRoZSBmaWxlLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGF0YSwgc3RyKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZGF0YSBtdXN0IGJlIHN0ciwgbm90ICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5fX2NsYXNzX18uX19uYW1lX18pCisgICAgICAgIHdpdGggc2VsZi5vcGVuKG1vZGU9J3cnLCBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPWVycm9ycykgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBmLndyaXRlKGRhdGEpCisKICAgICBkZWYgdG91Y2goc2VsZiwgbW9kZT0wbzY2NiwgZXhpc3Rfb2s9VHJ1ZSk6CiAgICAgICAgICIiIgogICAgICAgICBDcmVhdGUgdGhpcyBmaWxlIHdpdGggdGhlIGdpdmVuIGFjY2VzcyBtb2RlLCBpZiBpdCBkb2Vzbid0IGV4aXN0LgpAQCAtMTExNSwxNCArMTIxMSwyMSBAQAogICAgICAgICBmZCA9IHNlbGYuX3Jhd19vcGVuKGZsYWdzLCBtb2RlKQogICAgICAgICBvcy5jbG9zZShmZCkKIAotICAgIGRlZiBta2RpcihzZWxmLCBtb2RlPTBvNzc3LCBwYXJlbnRzPUZhbHNlKToKKyAgICBkZWYgbWtkaXIoc2VsZiwgbW9kZT0wbzc3NywgcGFyZW50cz1GYWxzZSwgZXhpc3Rfb2s9RmFsc2UpOgogICAgICAgICBpZiBzZWxmLl9jbG9zZWQ6CiAgICAgICAgICAgICBzZWxmLl9yYWlzZV9jbG9zZWQoKQogICAgICAgICBpZiBub3QgcGFyZW50czoKLSAgICAgICAgICAgIHNlbGYuX2FjY2Vzc29yLm1rZGlyKHNlbGYsIG1vZGUpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5fYWNjZXNzb3IubWtkaXIoc2VsZiwgbW9kZSkKKyAgICAgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CisgICAgICAgICAgICAgICAgaWYgbm90IGV4aXN0X29rIG9yIG5vdCBzZWxmLmlzX2RpcigpOgorICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuX2FjY2Vzc29yLm1rZGlyKHNlbGYsIG1vZGUpCisgICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgICAgIGlmIG5vdCBleGlzdF9vayBvciBub3Qgc2VsZi5pc19kaXIoKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBFTk9FTlQ6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCkBAIC0xMzAzLDYgKzE0MDYsMTcgQEAKICAgICAgICAgICAgICMgKHNlZSBodHRwczovL2JpdGJ1Y2tldC5vcmcvcGl0cm91L3BhdGhsaWIvaXNzdWUvMTIvKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKyAgICBkZWYgZXhwYW5kdXNlcihzZWxmKToKKyAgICAgICAgIiIiIFJldHVybiBhIG5ldyBwYXRoIHdpdGggZXhwYW5kZWQgfiBhbmQgfnVzZXIgY29uc3RydWN0cworICAgICAgICAoYXMgcmV0dXJuZWQgYnkgb3MucGF0aC5leHBhbmR1c2VyKQorICAgICAgICAiIiIKKyAgICAgICAgaWYgKG5vdCAoc2VsZi5fZHJ2IG9yIHNlbGYuX3Jvb3QpIGFuZAorICAgICAgICAgICAgc2VsZi5fcGFydHMgYW5kIHNlbGYuX3BhcnRzWzBdWzoxXSA9PSAnficpOgorICAgICAgICAgICAgaG9tZWRpciA9IHNlbGYuX2ZsYXZvdXIuZ2V0aG9tZWRpcihzZWxmLl9wYXJ0c1swXVsxOl0pCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZnJvbV9wYXJ0cyhbaG9tZWRpcl0gKyBzZWxmLl9wYXJ0c1sxOl0pCisKKyAgICAgICAgcmV0dXJuIHNlbGYKKwogCiBjbGFzcyBQb3NpeFBhdGgoUGF0aCwgUHVyZVBvc2l4UGF0aCk6CiAgICAgX19zbG90c19fID0gKCkKZGlmZiAtLWdpdCBhL0xpYi9wZGIucHkgYi9MaWIvcGRiLnB5CmluZGV4IDdkNThjMmEuLjRjYmE4YTAgMTAwNzU1Ci0tLSBhL0xpYi9wZGIucHkKKysrIGIvTGliL3BkYi5weQpAQCAtMTMxNiw3ICsxMzE2LDcgQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICAjIElzIGl0IGEgY2xhc3M/CiAgICAgICAgIGlmIHZhbHVlLl9fY2xhc3NfXyBpcyB0eXBlOgotICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdDbGFzcyAlcy4lcycgJSAodmFsdWUuX19tb2R1bGVfXywgdmFsdWUuX19uYW1lX18pKQorICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdDbGFzcyAlcy4lcycgJSAodmFsdWUuX19tb2R1bGVfXywgdmFsdWUuX19xdWFsbmFtZV9fKSkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICAjIE5vbmUgb2YgdGhlIGFib3ZlLi4uCiAgICAgICAgIHNlbGYubWVzc2FnZSh0eXBlKHZhbHVlKSkKZGlmZiAtLWdpdCBhL0xpYi9waWNrbGUucHkgYi9MaWIvcGlja2xlLnB5CmluZGV4IDNiMTM5ODQuLjc1MTI3ODcgMTAwNjQ0Ci0tLSBhL0xpYi9waWNrbGUucHkKKysrIGIvTGliL3BpY2tsZS5weQpAQCAtMjU4LDI0ICsyNTgsMjAgQEAKIAogIyBUb29scyB1c2VkIGZvciBwaWNrbGluZy4KIAotZGVmIF9nZXRhdHRyaWJ1dGUob2JqLCBuYW1lLCBhbGxvd19xdWFsbmFtZT1GYWxzZSk6Ci0gICAgZG90dGVkX3BhdGggPSBuYW1lLnNwbGl0KCIuIikKLSAgICBpZiBub3QgYWxsb3dfcXVhbG5hbWUgYW5kIGxlbihkb3R0ZWRfcGF0aCkgPiAxOgotICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiQ2FuJ3QgZ2V0IHF1YWxpZmllZCBhdHRyaWJ1dGUgeyFyfSBvbiB7IXJ9OyAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBwcm90b2NvbHMgPj0gNCB0byBlbmFibGUgc3VwcG9ydCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChuYW1lLCBvYmopKQotICAgIGZvciBzdWJwYXRoIGluIGRvdHRlZF9wYXRoOgorZGVmIF9nZXRhdHRyaWJ1dGUob2JqLCBuYW1lKToKKyAgICBmb3Igc3VicGF0aCBpbiBuYW1lLnNwbGl0KCcuJyk6CiAgICAgICAgIGlmIHN1YnBhdGggPT0gJzxsb2NhbHM+JzoKICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJDYW4ndCBnZXQgbG9jYWwgYXR0cmlidXRlIHshcn0gb24geyFyfSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQobmFtZSwgb2JqKSkKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGFyZW50ID0gb2JqCiAgICAgICAgICAgICBvYmogPSBnZXRhdHRyKG9iaiwgc3VicGF0aCkKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIkNhbid0IGdldCBhdHRyaWJ1dGUgeyFyfSBvbiB7IXJ9IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChuYW1lLCBvYmopKQotICAgIHJldHVybiBvYmoKKyAgICByZXR1cm4gb2JqLCBwYXJlbnQKIAotZGVmIHdoaWNobW9kdWxlKG9iaiwgbmFtZSwgYWxsb3dfcXVhbG5hbWU9RmFsc2UpOgorZGVmIHdoaWNobW9kdWxlKG9iaiwgbmFtZSk6CiAgICAgIiIiRmluZCB0aGUgbW9kdWxlIGFuIG9iamVjdCBiZWxvbmcgdG8uIiIiCiAgICAgbW9kdWxlX25hbWUgPSBnZXRhdHRyKG9iaiwgJ19fbW9kdWxlX18nLCBOb25lKQogICAgIGlmIG1vZHVsZV9uYW1lIGlzIG5vdCBOb25lOgpAQCAtMjg2LDcgKzI4Miw3IEBACiAgICAgICAgIGlmIG1vZHVsZV9uYW1lID09ICdfX21haW5fXycgb3IgbW9kdWxlIGlzIE5vbmU6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBfZ2V0YXR0cmlidXRlKG1vZHVsZSwgbmFtZSwgYWxsb3dfcXVhbG5hbWUpIGlzIG9iajoKKyAgICAgICAgICAgIGlmIF9nZXRhdHRyaWJ1dGUobW9kdWxlLCBuYW1lKVswXSBpcyBvYmo6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZHVsZV9uYW1lCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIHBhc3MKQEAgLTg5OSwxNiArODk1LDE2IEBACiAgICAgICAgIHdyaXRlID0gc2VsZi53cml0ZQogICAgICAgICBtZW1vID0gc2VsZi5tZW1vCiAKLSAgICAgICAgaWYgbmFtZSBpcyBOb25lIGFuZCBzZWxmLnByb3RvID49IDQ6CisgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKICAgICAgICAgICAgIG5hbWUgPSBnZXRhdHRyKG9iaiwgJ19fcXVhbG5hbWVfXycsIE5vbmUpCiAgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKICAgICAgICAgICAgIG5hbWUgPSBvYmouX19uYW1lX18KIAotICAgICAgICBtb2R1bGVfbmFtZSA9IHdoaWNobW9kdWxlKG9iaiwgbmFtZSwgYWxsb3dfcXVhbG5hbWU9c2VsZi5wcm90byA+PSA0KQorICAgICAgICBtb2R1bGVfbmFtZSA9IHdoaWNobW9kdWxlKG9iaiwgbmFtZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgX19pbXBvcnRfXyhtb2R1bGVfbmFtZSwgbGV2ZWw9MCkKICAgICAgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW21vZHVsZV9uYW1lXQotICAgICAgICAgICAgb2JqMiA9IF9nZXRhdHRyaWJ1dGUobW9kdWxlLCBuYW1lLCBhbGxvd19xdWFsbmFtZT1zZWxmLnByb3RvID49IDQpCisgICAgICAgICAgICBvYmoyLCBwYXJlbnQgPSBfZ2V0YXR0cmlidXRlKG1vZHVsZSwgbmFtZSkKICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgS2V5RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKICAgICAgICAgICAgIHJhaXNlIFBpY2tsaW5nRXJyb3IoCiAgICAgICAgICAgICAgICAgIkNhbid0IHBpY2tsZSAlcjogaXQncyBub3QgZm91bmQgYXMgJXMuJXMiICUKQEAgLTkzMCwxMSArOTI2LDE2IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgd3JpdGUoRVhUNCArIHBhY2soIjxpIiwgY29kZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGxhc3RuYW1lID0gbmFtZS5ycGFydGl0aW9uKCcuJylbMl0KKyAgICAgICAgaWYgcGFyZW50IGlzIG1vZHVsZToKKyAgICAgICAgICAgIG5hbWUgPSBsYXN0bmFtZQogICAgICAgICAjIE5vbi1BU0NJSSBpZGVudGlmaWVycyBhcmUgc3VwcG9ydGVkIG9ubHkgd2l0aCBwcm90b2NvbHMgPj0gMy4KICAgICAgICAgaWYgc2VsZi5wcm90byA+PSA0OgogICAgICAgICAgICAgc2VsZi5zYXZlKG1vZHVsZV9uYW1lKQogICAgICAgICAgICAgc2VsZi5zYXZlKG5hbWUpCiAgICAgICAgICAgICB3cml0ZShTVEFDS19HTE9CQUwpCisgICAgICAgIGVsaWYgcGFyZW50IGlzIG5vdCBtb2R1bGU6CisgICAgICAgICAgICBzZWxmLnNhdmVfcmVkdWNlKGdldGF0dHIsIChwYXJlbnQsIGxhc3RuYW1lKSkKICAgICAgICAgZWxpZiBzZWxmLnByb3RvID49IDM6CiAgICAgICAgICAgICB3cml0ZShHTE9CQUwgKyBieXRlcyhtb2R1bGVfbmFtZSwgInV0Zi04IikgKyBiJ1xuJyArCiAgICAgICAgICAgICAgICAgICBieXRlcyhuYW1lLCAidXRmLTgiKSArIGInXG4nKQpAQCAtMTM4MSw4ICsxMzgyLDEwIEBACiAgICAgICAgICAgICBlbGlmIG1vZHVsZSBpbiBfY29tcGF0X3BpY2tsZS5JTVBPUlRfTUFQUElORzoKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBfY29tcGF0X3BpY2tsZS5JTVBPUlRfTUFQUElOR1ttb2R1bGVdCiAgICAgICAgIF9faW1wb3J0X18obW9kdWxlLCBsZXZlbD0wKQotICAgICAgICByZXR1cm4gX2dldGF0dHJpYnV0ZShzeXMubW9kdWxlc1ttb2R1bGVdLCBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd19xdWFsbmFtZT1zZWxmLnByb3RvID49IDQpCisgICAgICAgIGlmIHNlbGYucHJvdG8gPj0gNDoKKyAgICAgICAgICAgIHJldHVybiBfZ2V0YXR0cmlidXRlKHN5cy5tb2R1bGVzW21vZHVsZV0sIG5hbWUpWzBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzeXMubW9kdWxlc1ttb2R1bGVdLCBuYW1lKQogCiAgICAgZGVmIGxvYWRfcmVkdWNlKHNlbGYpOgogICAgICAgICBzdGFjayA9IHNlbGYuc3RhY2sKZGlmZiAtLWdpdCBhL0xpYi9waWNrbGV0b29scy5weSBiL0xpYi9waWNrbGV0b29scy5weQppbmRleCBjZjVkZjQxLi4xNTViZDViIDEwMDY0NAotLS0gYS9MaWIvcGlja2xldG9vbHMucHkKKysrIGIvTGliL3BpY2tsZXRvb2xzLnB5CkBAIC0yNzkzLDcgKzI3OTMsNyBAQAogICAgIHJldHVybiBkb2N0ZXN0LnRlc3Rtb2QoKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIGltcG9ydCBzeXMsIGFyZ3BhcnNlCisgICAgaW1wb3J0IGFyZ3BhcnNlCiAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoCiAgICAgICAgIGRlc2NyaXB0aW9uPSdkaXNhc3NlbWJsZSBvbmUgb3IgbW9yZSBwaWNrbGUgZmlsZXMnKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCmRpZmYgLS1naXQgYS9MaWIvcGtndXRpbC5weSBiL0xpYi9wa2d1dGlsLnB5CmluZGV4IGE1NGU5NDcuLmZjNGEwNzQgMTAwNjQ0Ci0tLSBhL0xpYi9wa2d1dGlsLnB5CisrKyBiL0xpYi9wa2d1dGlsLnB5CkBAIC02MTYsNyArNjE2LDcgQEAKICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAjIFhYWCBuZWVkcyB0ZXN0CiAgICAgbW9kID0gKHN5cy5tb2R1bGVzLmdldChwYWNrYWdlKSBvcgotICAgICAgICAgICBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykubG9hZCgpKQorICAgICAgICAgICBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fbG9hZChzcGVjKSkKICAgICBpZiBtb2QgaXMgTm9uZSBvciBub3QgaGFzYXR0cihtb2QsICdfX2ZpbGVfXycpOgogICAgICAgICByZXR1cm4gTm9uZQogCmRpZmYgLS1naXQgYS9MaWIvcGxhdGZvcm0ucHkgYi9MaWIvcGxhdGZvcm0ucHkKaW5kZXggYWQ0MjVhMS4uZjNkMmM0MiAxMDA3NTUKLS0tIGEvTGliL3BsYXRmb3JtLnB5CisrKyBiL0xpYi9wbGF0Zm9ybS5weQpAQCAtMTE2LDYgKzExNiw4IEBACiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBzeXMsIG9zLCByZSwgc3VicHJvY2VzcwogCitpbXBvcnQgd2FybmluZ3MKKwogIyMjIEdsb2JhbHMgJiBDb25zdGFudHMKIAogIyBEZXRlcm1pbmUgdGhlIHBsYXRmb3JtJ3MgL2Rldi9udWxsIGRldmljZQpAQCAtMTY1LDQwICsxNjcsMzkgQEAKICAgICAgICAgIyBoZXJlIHRvIHdvcmsgYXJvdW5kIHByb2JsZW1zIHdpdGggQ3lnd2luIG5vdCBiZWluZwogICAgICAgICAjIGFibGUgdG8gb3BlbiBzeW1saW5rcyBmb3IgcmVhZGluZwogICAgICAgICBleGVjdXRhYmxlID0gb3MucGF0aC5yZWFscGF0aChleGVjdXRhYmxlKQotICAgIGYgPSBvcGVuKGV4ZWN1dGFibGUsICdyYicpCi0gICAgYmluYXJ5ID0gZi5yZWFkKGNodW5rc2l6ZSkKLSAgICBwb3MgPSAwCi0gICAgd2hpbGUgMToKLSAgICAgICAgaWYgYidsaWJjJyBpbiBiaW5hcnkgb3IgYidHTElCQycgaW4gYmluYXJ5OgotICAgICAgICAgICAgbSA9IF9saWJjX3NlYXJjaC5zZWFyY2goYmluYXJ5LCBwb3MpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtID0gTm9uZQotICAgICAgICBpZiBub3QgbToKLSAgICAgICAgICAgIGJpbmFyeSA9IGYucmVhZChjaHVua3NpemUpCi0gICAgICAgICAgICBpZiBub3QgYmluYXJ5OgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBwb3MgPSAwCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBsaWJjaW5pdCwgZ2xpYmMsIGdsaWJjdmVyc2lvbiwgc28sIHRocmVhZHMsIHNvdmVyc2lvbiA9IFsKLSAgICAgICAgICAgIHMuZGVjb2RlKCdsYXRpbjEnKSBpZiBzIGlzIG5vdCBOb25lIGVsc2UgcwotICAgICAgICAgICAgZm9yIHMgaW4gbS5ncm91cHMoKV0KLSAgICAgICAgaWYgbGliY2luaXQgYW5kIG5vdCBsaWI6Ci0gICAgICAgICAgICBsaWIgPSAnbGliYycKLSAgICAgICAgZWxpZiBnbGliYzoKLSAgICAgICAgICAgIGlmIGxpYiAhPSAnZ2xpYmMnOgotICAgICAgICAgICAgICAgIGxpYiA9ICdnbGliYycKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZ2xpYmN2ZXJzaW9uCi0gICAgICAgICAgICBlbGlmIGdsaWJjdmVyc2lvbiA+IHZlcnNpb246Ci0gICAgICAgICAgICAgICAgdmVyc2lvbiA9IGdsaWJjdmVyc2lvbgotICAgICAgICBlbGlmIHNvOgotICAgICAgICAgICAgaWYgbGliICE9ICdnbGliYyc6CisgICAgd2l0aCBvcGVuKGV4ZWN1dGFibGUsICdyYicpIGFzIGY6CisgICAgICAgIGJpbmFyeSA9IGYucmVhZChjaHVua3NpemUpCisgICAgICAgIHBvcyA9IDAKKyAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIGlmIGInbGliYycgaW4gYmluYXJ5IG9yIGInR0xJQkMnIGluIGJpbmFyeToKKyAgICAgICAgICAgICAgICBtID0gX2xpYmNfc2VhcmNoLnNlYXJjaChiaW5hcnksIHBvcykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbSA9IE5vbmUKKyAgICAgICAgICAgIGlmIG5vdCBtOgorICAgICAgICAgICAgICAgIGJpbmFyeSA9IGYucmVhZChjaHVua3NpemUpCisgICAgICAgICAgICAgICAgaWYgbm90IGJpbmFyeToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBwb3MgPSAwCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGxpYmNpbml0LCBnbGliYywgZ2xpYmN2ZXJzaW9uLCBzbywgdGhyZWFkcywgc292ZXJzaW9uID0gWworICAgICAgICAgICAgICAgIHMuZGVjb2RlKCdsYXRpbjEnKSBpZiBzIGlzIG5vdCBOb25lIGVsc2UgcworICAgICAgICAgICAgICAgIGZvciBzIGluIG0uZ3JvdXBzKCldCisgICAgICAgICAgICBpZiBsaWJjaW5pdCBhbmQgbm90IGxpYjoKICAgICAgICAgICAgICAgICBsaWIgPSAnbGliYycKLSAgICAgICAgICAgICAgICBpZiBzb3ZlcnNpb24gYW5kIHNvdmVyc2lvbiA+IHZlcnNpb246Ci0gICAgICAgICAgICAgICAgICAgIHZlcnNpb24gPSBzb3ZlcnNpb24KLSAgICAgICAgICAgICAgICBpZiB0aHJlYWRzIGFuZCB2ZXJzaW9uWy1sZW4odGhyZWFkcyk6XSAhPSB0aHJlYWRzOgotICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gdmVyc2lvbiArIHRocmVhZHMKLSAgICAgICAgcG9zID0gbS5lbmQoKQotICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgZWxpZiBnbGliYzoKKyAgICAgICAgICAgICAgICBpZiBsaWIgIT0gJ2dsaWJjJzoKKyAgICAgICAgICAgICAgICAgICAgbGliID0gJ2dsaWJjJworICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZ2xpYmN2ZXJzaW9uCisgICAgICAgICAgICAgICAgZWxpZiBnbGliY3ZlcnNpb24gPiB2ZXJzaW9uOgorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZ2xpYmN2ZXJzaW9uCisgICAgICAgICAgICBlbGlmIHNvOgorICAgICAgICAgICAgICAgIGlmIGxpYiAhPSAnZ2xpYmMnOgorICAgICAgICAgICAgICAgICAgICBsaWIgPSAnbGliYycKKyAgICAgICAgICAgICAgICAgICAgaWYgc292ZXJzaW9uIGFuZCBzb3ZlcnNpb24gPiB2ZXJzaW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IHNvdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICBpZiB0aHJlYWRzIGFuZCB2ZXJzaW9uWy1sZW4odGhyZWFkcyk6XSAhPSB0aHJlYWRzOgorICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IHZlcnNpb24gKyB0aHJlYWRzCisgICAgICAgICAgICBwb3MgPSBtLmVuZCgpCiAgICAgcmV0dXJuIGxpYiwgdmVyc2lvbgogCiBkZWYgX2Rpc3RfdHJ5X2hhcmRlcihkaXN0bmFtZSwgdmVyc2lvbiwgaWQpOgpAQCAtMzAwLDYgKzMwMSwxNSBAQAogCiAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZF9kaXN0cz1fc3VwcG9ydGVkX2Rpc3RzLAogICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2Rpc3RyaWJ1dGlvbl9uYW1lPTEpOgorICAgIGltcG9ydCB3YXJuaW5ncworICAgIHdhcm5pbmdzLndhcm4oImRpc3QoKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uKCkgZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkICIKKyAgICAgICAgICAgICAgICAgICJpbiBQeXRob24gMy41IGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNyIsCisgICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCisgICAgcmV0dXJuIF9saW51eF9kaXN0cmlidXRpb24oZGlzdG5hbWUsIHZlcnNpb24sIGlkLCBzdXBwb3J0ZWRfZGlzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbF9kaXN0cmlidXRpb25fbmFtZSkKKworZGVmIF9saW51eF9kaXN0cmlidXRpb24oZGlzdG5hbWUsIHZlcnNpb24sIGlkLCBzdXBwb3J0ZWRfZGlzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2Rpc3RyaWJ1dGlvbl9uYW1lKToKIAogICAgICIiIiBUcmllcyB0byBkZXRlcm1pbmUgdGhlIG5hbWUgb2YgdGhlIExpbnV4IE9TIGRpc3RyaWJ1dGlvbiBuYW1lLgogCkBAIC0zNjYsOSArMzc2LDEzIEBACiAgICAgICAgIGFyZ3MgZ2l2ZW4gYXMgcGFyYW1ldGVycy4KIAogICAgICIiIgotICAgIHJldHVybiBsaW51eF9kaXN0cmlidXRpb24oZGlzdG5hbWUsIHZlcnNpb24sIGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2Rpc3RzPXN1cHBvcnRlZF9kaXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfZGlzdHJpYnV0aW9uX25hbWU9MCkKKyAgICBpbXBvcnQgd2FybmluZ3MKKyAgICB3YXJuaW5ncy53YXJuKCJkaXN0KCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvbigpIGZ1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCAiCisgICAgICAgICAgICAgICAgICAiaW4gUHl0aG9uIDMuNSBhbmQgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjciLAorICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQorICAgIHJldHVybiBfbGludXhfZGlzdHJpYnV0aW9uKGRpc3RuYW1lLCB2ZXJzaW9uLCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRfZGlzdHM9c3VwcG9ydGVkX2Rpc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfZGlzdHJpYnV0aW9uX25hbWU9MCkKIAogZGVmIHBvcGVuKGNtZCwgbW9kZT0ncicsIGJ1ZnNpemU9LTEpOgogCkBAIC00MjgsNyArNDQyLDcgQEAKICAgICAjIFRyeSBzb21lIGNvbW1vbiBjbWQgc3RyaW5ncwogICAgIGZvciBjbWQgaW4gKCd2ZXInLCAnY29tbWFuZCAvYyB2ZXInLCAnY21kIC9jIHZlcicpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwaXBlID0gcG9wZW4oY21kKQorICAgICAgICAgICAgcGlwZSA9IG9zLnBvcGVuKGNtZCkKICAgICAgICAgICAgIGluZm8gPSBwaXBlLnJlYWQoKQogICAgICAgICAgICAgaWYgcGlwZS5jbG9zZSgpOgogICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ2NvbW1hbmQgZmFpbGVkJykKQEAgLTEzODEsNyArMTM5NSwxNSBAQAogCiAgICAgZWxpZiBzeXN0ZW0gaW4gKCdMaW51eCcsKToKICAgICAgICAgIyBMaW51eCBiYXNlZCBzeXN0ZW1zCi0gICAgICAgIGRpc3RuYW1lLCBkaXN0dmVyc2lvbiwgZGlzdGlkID0gZGlzdCgnJykKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgIyBzZWUgaXNzdWUgIzEzMjIgZm9yIG1vcmUgaW5mb3JtYXRpb24KKyAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKAorICAgICAgICAgICAgICAgICdpZ25vcmUnLAorICAgICAgICAgICAgICAgICdkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCisgICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCAuKicsCisgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGRpc3RuYW1lLCBkaXN0dmVyc2lvbiwgZGlzdGlkID0gZGlzdCgnJykKICAgICAgICAgaWYgZGlzdG5hbWUgYW5kIG5vdCB0ZXJzZToKICAgICAgICAgICAgIHBsYXRmb3JtID0gX3BsYXRmb3JtKHN5c3RlbSwgcmVsZWFzZSwgbWFjaGluZSwgcHJvY2Vzc29yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGgnLApkaWZmIC0tZ2l0IGEvTGliL3BvcGxpYi5weSBiL0xpYi9wb3BsaWIucHkKaW5kZXggNDkxNTYyOC4uZjY3MjM5MCAxMDA2NDQKLS0tIGEvTGliL3BvcGxpYi5weQorKysgYi9MaWIvcG9wbGliLnB5CkBAIC03MSw2ICs3MSw3IEBACiAgICAgICAgICAgICBVSURMIFttc2ddICAgICAgICAgICAgICB1aWRsKG1zZyA9IE5vbmUpCiAgICAgICAgICAgICBDQVBBICAgICAgICAgICAgICAgICAgICBjYXBhKCkKICAgICAgICAgICAgIFNUTFMgICAgICAgICAgICAgICAgICAgIHN0bHMoKQorICAgICAgICAgICAgVVRGOCAgICAgICAgICAgICAgICAgICAgdXRmOCgpCiAKICAgICBSYWlzZXMgb25lIGV4Y2VwdGlvbjogJ2Vycm9yX3Byb3RvJy4KIApAQCAtMzQ4LDYgKzM0OSwxMiBAQAogICAgICAgICByZXR1cm4gc2VsZi5fbG9uZ2NtZCgnVUlETCcpCiAKIAorICAgIGRlZiB1dGY4KHNlbGYpOgorICAgICAgICAiIiJUcnkgdG8gZW50ZXIgVVRGLTggbW9kZSAoc2VlIFJGQyA2ODU2KS4gUmV0dXJucyBzZXJ2ZXIgcmVzcG9uc2UuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc2hvcnRjbWQoJ1VURjgnKQorCisKICAgICBkZWYgY2FwYShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHNlcnZlciBjYXBhYmlsaXRpZXMgKFJGQyAyNDQ5KSBhcyBhIGRpY3Rpb25hcnkKICAgICAgICAgPj4+IGM9cG9wbGliLlBPUDMoJ2xvY2FsaG9zdCcpCmRpZmYgLS1naXQgYS9MaWIvcG9zaXhwYXRoLnB5IGIvTGliL3Bvc2l4cGF0aC5weQppbmRleCAwYWE1M2ZlLi4wOWI4ODk3IDEwMDY0NAotLS0gYS9MaWIvcG9zaXhwYXRoLnB5CisrKyBiL0xpYi9wb3NpeHBhdGgucHkKQEAgLTIyLDcgKzIyLDggQEAKICAgICAgICAgICAgImlzbW91bnQiLCAiZXhwYW5kdXNlciIsImV4cGFuZHZhcnMiLCJub3JtcGF0aCIsImFic3BhdGgiLAogICAgICAgICAgICAic2FtZWZpbGUiLCJzYW1lb3BlbmZpbGUiLCJzYW1lc3RhdCIsCiAgICAgICAgICAgICJjdXJkaXIiLCJwYXJkaXIiLCJzZXAiLCJwYXRoc2VwIiwiZGVmcGF0aCIsImFsdHNlcCIsImV4dHNlcCIsCi0gICAgICAgICAgICJkZXZudWxsIiwicmVhbHBhdGgiLCJzdXBwb3J0c191bmljb2RlX2ZpbGVuYW1lcyIsInJlbHBhdGgiXQorICAgICAgICAgICAiZGV2bnVsbCIsInJlYWxwYXRoIiwic3VwcG9ydHNfdW5pY29kZV9maWxlbmFtZXMiLCJyZWxwYXRoIiwKKyAgICAgICAgICAgImNvbW1vbnBhdGgiXQogCiAjIFN0cmluZ3MgcmVwcmVzZW50aW5nIHZhcmlvdXMgcGF0aC1yZWxhdGVkIGJpdHMgYW5kIHBpZWNlcy4KICMgVGhlc2UgYXJlIHByaW1hcmlseSBmb3IgZXhwb3J0OyBpbnRlcm5hbGx5LCB0aGV5IGFyZSBoYXJkY29kZWQuCkBAIC03NSw2ICs3Niw4IEBACiAgICAgc2VwID0gX2dldF9zZXAoYSkKICAgICBwYXRoID0gYQogICAgIHRyeToKKyAgICAgICAgaWYgbm90IHA6CisgICAgICAgICAgICBwYXRoWzowXSArIHNlcCAgIzIzNzgwOiBFbnN1cmUgY29tcGF0aWJsZSBkYXRhIHR5cGUgZXZlbiBpZiBwIGlzIG51bGwuCiAgICAgICAgIGZvciBiIGluIHA6CiAgICAgICAgICAgICBpZiBiLnN0YXJ0c3dpdGgoc2VwKToKICAgICAgICAgICAgICAgICBwYXRoID0gYgpAQCAtODIsMTEgKzg1LDggQEAKICAgICAgICAgICAgICAgICBwYXRoICs9IGIKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcGF0aCArPSBzZXAgKyBiCi0gICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgaWYgYWxsKGlzaW5zdGFuY2UocywgKHN0ciwgYnl0ZXMpKSBmb3IgcyBpbiAoYSwpICsgcCk6Ci0gICAgICAgICAgICAjIE11c3QgaGF2ZSBhIG1peHR1cmUgb2YgdGV4dCBhbmQgYmluYXJ5IGRhdGEKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgbWl4IHN0cmluZ3MgYW5kIGJ5dGVzIGluIHBhdGggIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21wb25lbnRzIikgZnJvbSBOb25lCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBCeXRlc1dhcm5pbmcpOgorICAgICAgICBnZW5lcmljcGF0aC5fY2hlY2tfYXJnX3R5cGVzKCdqb2luJywgYSwgKnApCiAgICAgICAgIHJhaXNlCiAgICAgcmV0dXJuIHBhdGgKIApAQCAtNDQ1LDEzICs0NDUsNTggQEAKICAgICBpZiBzdGFydCBpcyBOb25lOgogICAgICAgICBzdGFydCA9IGN1cmRpcgogCi0gICAgc3RhcnRfbGlzdCA9IFt4IGZvciB4IGluIGFic3BhdGgoc3RhcnQpLnNwbGl0KHNlcCkgaWYgeF0KLSAgICBwYXRoX2xpc3QgPSBbeCBmb3IgeCBpbiBhYnNwYXRoKHBhdGgpLnNwbGl0KHNlcCkgaWYgeF0KKyAgICB0cnk6CisgICAgICAgIHN0YXJ0X2xpc3QgPSBbeCBmb3IgeCBpbiBhYnNwYXRoKHN0YXJ0KS5zcGxpdChzZXApIGlmIHhdCisgICAgICAgIHBhdGhfbGlzdCA9IFt4IGZvciB4IGluIGFic3BhdGgocGF0aCkuc3BsaXQoc2VwKSBpZiB4XQorICAgICAgICAjIFdvcmsgb3V0IGhvdyBtdWNoIG9mIHRoZSBmaWxlcGF0aCBpcyBzaGFyZWQgYnkgc3RhcnQgYW5kIHBhdGguCisgICAgICAgIGkgPSBsZW4oY29tbW9ucHJlZml4KFtzdGFydF9saXN0LCBwYXRoX2xpc3RdKSkKIAotICAgICMgV29yayBvdXQgaG93IG11Y2ggb2YgdGhlIGZpbGVwYXRoIGlzIHNoYXJlZCBieSBzdGFydCBhbmQgcGF0aC4KLSAgICBpID0gbGVuKGNvbW1vbnByZWZpeChbc3RhcnRfbGlzdCwgcGF0aF9saXN0XSkpCisgICAgICAgIHJlbF9saXN0ID0gW3BhcmRpcl0gKiAobGVuKHN0YXJ0X2xpc3QpLWkpICsgcGF0aF9saXN0W2k6XQorICAgICAgICBpZiBub3QgcmVsX2xpc3Q6CisgICAgICAgICAgICByZXR1cm4gY3VyZGlyCisgICAgICAgIHJldHVybiBqb2luKCpyZWxfbGlzdCkKKyAgICBleGNlcHQgKFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IsIEJ5dGVzV2FybmluZywgRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgZ2VuZXJpY3BhdGguX2NoZWNrX2FyZ190eXBlcygncmVscGF0aCcsIHBhdGgsIHN0YXJ0KQorICAgICAgICByYWlzZQogCi0gICAgcmVsX2xpc3QgPSBbcGFyZGlyXSAqIChsZW4oc3RhcnRfbGlzdCktaSkgKyBwYXRoX2xpc3RbaTpdCi0gICAgaWYgbm90IHJlbF9saXN0OgotICAgICAgICByZXR1cm4gY3VyZGlyCi0gICAgcmV0dXJuIGpvaW4oKnJlbF9saXN0KQorCisjIFJldHVybiB0aGUgbG9uZ2VzdCBjb21tb24gc3ViLXBhdGggb2YgdGhlIHNlcXVlbmNlIG9mIHBhdGhzIGdpdmVuIGFzIGlucHV0LgorIyBUaGUgcGF0aHMgYXJlIG5vdCBub3JtYWxpemVkIGJlZm9yZSBjb21wYXJpbmcgdGhlbSAodGhpcyBpcyB0aGUKKyMgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlcikuIEFueSB0cmFpbGluZyBzZXBhcmF0b3IgaXMgc3RyaXBwZWQgZnJvbSB0aGUKKyMgcmV0dXJuZWQgcGF0aC4KKworZGVmIGNvbW1vbnBhdGgocGF0aHMpOgorICAgICIiIkdpdmVuIGEgc2VxdWVuY2Ugb2YgcGF0aCBuYW1lcywgcmV0dXJucyB0aGUgbG9uZ2VzdCBjb21tb24gc3ViLXBhdGguIiIiCisKKyAgICBpZiBub3QgcGF0aHM6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NvbW1vbnBhdGgoKSBhcmcgaXMgYW4gZW1wdHkgc2VxdWVuY2UnKQorCisgICAgaWYgaXNpbnN0YW5jZShwYXRoc1swXSwgYnl0ZXMpOgorICAgICAgICBzZXAgPSBiJy8nCisgICAgICAgIGN1cmRpciA9IGInLicKKyAgICBlbHNlOgorICAgICAgICBzZXAgPSAnLycKKyAgICAgICAgY3VyZGlyID0gJy4nCisKKyAgICB0cnk6CisgICAgICAgIHNwbGl0X3BhdGhzID0gW3BhdGguc3BsaXQoc2VwKSBmb3IgcGF0aCBpbiBwYXRoc10KKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpc2FicywgPSBzZXQocFs6MV0gPT0gc2VwIGZvciBwIGluIHBhdGhzKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IG1peCBhYnNvbHV0ZSBhbmQgcmVsYXRpdmUgcGF0aHMiKSBmcm9tIE5vbmUKKworICAgICAgICBzcGxpdF9wYXRocyA9IFtbYyBmb3IgYyBpbiBzIGlmIGMgYW5kIGMgIT0gY3VyZGlyXSBmb3IgcyBpbiBzcGxpdF9wYXRoc10KKyAgICAgICAgczEgPSBtaW4oc3BsaXRfcGF0aHMpCisgICAgICAgIHMyID0gbWF4KHNwbGl0X3BhdGhzKQorICAgICAgICBjb21tb24gPSBzMQorICAgICAgICBmb3IgaSwgYyBpbiBlbnVtZXJhdGUoczEpOgorICAgICAgICAgICAgaWYgYyAhPSBzMltpXToKKyAgICAgICAgICAgICAgICBjb21tb24gPSBzMVs6aV0KKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIHByZWZpeCA9IHNlcCBpZiBpc2FicyBlbHNlIHNlcFs6MF0KKyAgICAgICAgcmV0dXJuIHByZWZpeCArIHNlcC5qb2luKGNvbW1vbikKKyAgICBleGNlcHQgKFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IpOgorICAgICAgICBnZW5lcmljcGF0aC5fY2hlY2tfYXJnX3R5cGVzKCdjb21tb25wYXRoJywgKnBhdGhzKQorICAgICAgICByYWlzZQpkaWZmIC0tZ2l0IGEvTGliL3BwcmludC5weSBiL0xpYi9wcHJpbnQucHkKaW5kZXggMmNiZmZlZC4uODc2NDliNCAxMDA2NDQKLS0tIGEvTGliL3BwcmludC5weQorKysgYi9MaWIvcHByaW50LnB5CkBAIC0zNCw5ICszNCwxMCBAQAogCiAiIiIKIAoraW1wb3J0IGNvbGxlY3Rpb25zIGFzIF9jb2xsZWN0aW9ucwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzIGFzIF9zeXMKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0IGFzIF9PcmRlcmVkRGljdAoraW1wb3J0IHR5cGVzIGFzIF90eXBlcwogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8gYXMgX1N0cmluZ0lPCiAKIF9fYWxsX18gPSBbInBwcmludCIsInBmb3JtYXQiLCJpc3JlYWRhYmxlIiwiaXNyZWN1cnNpdmUiLCJzYWZlcmVwciIsCkBAIC04NSwxNCArODYsMTAgQEAKIAogICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBydiA9IHNlbGYub2JqLl9fbHRfXyhvdGhlci5vYmopCisgICAgICAgICAgICByZXR1cm4gc2VsZi5vYmogPCBvdGhlci5vYmoKICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgIHJ2ID0gTm90SW1wbGVtZW50ZWQKLQotICAgICAgICBpZiBydiBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJ2ID0gKHN0cih0eXBlKHNlbGYub2JqKSksIGlkKHNlbGYub2JqKSkgPCBcCi0gICAgICAgICAgICAgICAgIChzdHIodHlwZShvdGhlci5vYmopKSwgaWQob3RoZXIub2JqKSkKLSAgICAgICAgcmV0dXJuIHJ2CisgICAgICAgICAgICByZXR1cm4gKChzdHIodHlwZShzZWxmLm9iaikpLCBpZChzZWxmLm9iaikpIDwgXAorICAgICAgICAgICAgICAgICAgICAoc3RyKHR5cGUob3RoZXIub2JqKSksIGlkKG90aGVyLm9iaikpKQogCiBkZWYgX3NhZmVfdHVwbGUodCk6CiAgICAgIkhlbHBlciBmdW5jdGlvbiBmb3IgY29tcGFyaW5nIDItdHVwbGVzIgpAQCAtMTIzLDkgKzEyMCwxMiBAQAogICAgICAgICAiIiIKICAgICAgICAgaW5kZW50ID0gaW50KGluZGVudCkKICAgICAgICAgd2lkdGggPSBpbnQod2lkdGgpCi0gICAgICAgIGFzc2VydCBpbmRlbnQgPj0gMCwgImluZGVudCBtdXN0IGJlID49IDAiCi0gICAgICAgIGFzc2VydCBkZXB0aCBpcyBOb25lIG9yIGRlcHRoID4gMCwgImRlcHRoIG11c3QgYmUgPiAwIgotICAgICAgICBhc3NlcnQgd2lkdGgsICJ3aWR0aCBtdXN0IGJlICE9IDAiCisgICAgICAgIGlmIGluZGVudCA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdpbmRlbnQgbXVzdCBiZSA+PSAwJykKKyAgICAgICAgaWYgZGVwdGggaXMgbm90IE5vbmUgYW5kIGRlcHRoIDw9IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdkZXB0aCBtdXN0IGJlID4gMCcpCisgICAgICAgIGlmIG5vdCB3aWR0aDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3dpZHRoIG11c3QgYmUgIT0gMCcpCiAgICAgICAgIHNlbGYuX2RlcHRoID0gZGVwdGgKICAgICAgICAgc2VsZi5faW5kZW50X3Blcl9sZXZlbCA9IGluZGVudAogICAgICAgICBzZWxmLl93aWR0aCA9IHdpZHRoCkBAIC0xNTIsMTMzICsxNTIsMjIzIEBACiAgICAgICAgIHJldHVybiByZWFkYWJsZSBhbmQgbm90IHJlY3Vyc2l2ZQogCiAgICAgZGVmIF9mb3JtYXQoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6Ci0gICAgICAgIGxldmVsID0gbGV2ZWwgKyAxCiAgICAgICAgIG9iamlkID0gaWQob2JqZWN0KQogICAgICAgICBpZiBvYmppZCBpbiBjb250ZXh0OgogICAgICAgICAgICAgc3RyZWFtLndyaXRlKF9yZWN1cnNpb24ob2JqZWN0KSkKICAgICAgICAgICAgIHNlbGYuX3JlY3Vyc2l2ZSA9IFRydWUKICAgICAgICAgICAgIHNlbGYuX3JlYWRhYmxlID0gRmFsc2UKICAgICAgICAgICAgIHJldHVybgotICAgICAgICByZXAgPSBzZWxmLl9yZXByKG9iamVjdCwgY29udGV4dCwgbGV2ZWwgLSAxKQotICAgICAgICB0eXAgPSB0eXBlKG9iamVjdCkKLSAgICAgICAgbWF4X3dpZHRoID0gc2VsZi5fd2lkdGggLSAxIC0gaW5kZW50IC0gYWxsb3dhbmNlCi0gICAgICAgIHNlcExpbmVzID0gbGVuKHJlcCkgPiBtYXhfd2lkdGgKKyAgICAgICAgcmVwID0gc2VsZi5fcmVwcihvYmplY3QsIGNvbnRleHQsIGxldmVsKQorICAgICAgICBtYXhfd2lkdGggPSBzZWxmLl93aWR0aCAtIGluZGVudCAtIGFsbG93YW5jZQorICAgICAgICBpZiBsZW4ocmVwKSA+IG1heF93aWR0aDoKKyAgICAgICAgICAgIHAgPSBzZWxmLl9kaXNwYXRjaC5nZXQodHlwZShvYmplY3QpLl9fcmVwcl9fLCBOb25lKQorICAgICAgICAgICAgaWYgcCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBjb250ZXh0W29iamlkXSA9IDEKKyAgICAgICAgICAgICAgICBwKHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwgKyAxKQorICAgICAgICAgICAgICAgIGRlbCBjb250ZXh0W29iamlkXQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG9iamVjdCwgZGljdCk6CisgICAgICAgICAgICAgICAgY29udGV4dFtvYmppZF0gPSAxCisgICAgICAgICAgICAgICAgc2VsZi5fcHByaW50X2RpY3Qob2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGxldmVsICsgMSkKKyAgICAgICAgICAgICAgICBkZWwgY29udGV4dFtvYmppZF0KKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc3RyZWFtLndyaXRlKHJlcCkKKworICAgIF9kaXNwYXRjaCA9IHt9CisKKyAgICBkZWYgX3BwcmludF9kaWN0KHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgogICAgICAgICB3cml0ZSA9IHN0cmVhbS53cml0ZQorICAgICAgICB3cml0ZSgneycpCisgICAgICAgIGlmIHNlbGYuX2luZGVudF9wZXJfbGV2ZWwgPiAxOgorICAgICAgICAgICAgd3JpdGUoKHNlbGYuX2luZGVudF9wZXJfbGV2ZWwgLSAxKSAqICcgJykKKyAgICAgICAgbGVuZ3RoID0gbGVuKG9iamVjdCkKKyAgICAgICAgaWYgbGVuZ3RoOgorICAgICAgICAgICAgaXRlbXMgPSBzb3J0ZWQob2JqZWN0Lml0ZW1zKCksIGtleT1fc2FmZV90dXBsZSkKKyAgICAgICAgICAgIHNlbGYuX2Zvcm1hdF9kaWN0X2l0ZW1zKGl0ZW1zLCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGxldmVsKQorICAgICAgICB3cml0ZSgnfScpCiAKLSAgICAgICAgaWYgc2VwTGluZXM6Ci0gICAgICAgICAgICByID0gZ2V0YXR0cih0eXAsICJfX3JlcHJfXyIsIE5vbmUpCi0gICAgICAgICAgICBpZiBpc3N1YmNsYXNzKHR5cCwgZGljdCk6Ci0gICAgICAgICAgICAgICAgd3JpdGUoJ3snKQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX2luZGVudF9wZXJfbGV2ZWwgPiAxOgotICAgICAgICAgICAgICAgICAgICB3cml0ZSgoc2VsZi5faW5kZW50X3Blcl9sZXZlbCAtIDEpICogJyAnKQotICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbihvYmplY3QpCi0gICAgICAgICAgICAgICAgaWYgbGVuZ3RoOgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0W29iamlkXSA9IDEKLSAgICAgICAgICAgICAgICAgICAgaW5kZW50ID0gaW5kZW50ICsgc2VsZi5faW5kZW50X3Blcl9sZXZlbAotICAgICAgICAgICAgICAgICAgICBpZiBpc3N1YmNsYXNzKHR5cCwgX09yZGVyZWREaWN0KToKLSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gbGlzdChvYmplY3QuaXRlbXMoKSkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gc29ydGVkKG9iamVjdC5pdGVtcygpLCBrZXk9X3NhZmVfdHVwbGUpCi0gICAgICAgICAgICAgICAgICAgIGtleSwgZW50ID0gaXRlbXNbMF0KLSAgICAgICAgICAgICAgICAgICAgcmVwID0gc2VsZi5fcmVwcihrZXksIGNvbnRleHQsIGxldmVsKQotICAgICAgICAgICAgICAgICAgICB3cml0ZShyZXApCi0gICAgICAgICAgICAgICAgICAgIHdyaXRlKCc6ICcpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2Zvcm1hdChlbnQsIHN0cmVhbSwgaW5kZW50ICsgbGVuKHJlcCkgKyAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93YW5jZSArIDEsIGNvbnRleHQsIGxldmVsKQotICAgICAgICAgICAgICAgICAgICBpZiBsZW5ndGggPiAxOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGtleSwgZW50IGluIGl0ZW1zWzE6XToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXAgPSBzZWxmLl9yZXByKGtleSwgY29udGV4dCwgbGV2ZWwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUoJyxcbiVzJXM6ICcgJSAoJyAnKmluZGVudCwgcmVwKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mb3JtYXQoZW50LCBzdHJlYW0sIGluZGVudCArIGxlbihyZXApICsgMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93YW5jZSArIDEsIGNvbnRleHQsIGxldmVsKQotICAgICAgICAgICAgICAgICAgICBpbmRlbnQgPSBpbmRlbnQgLSBzZWxmLl9pbmRlbnRfcGVyX2xldmVsCi0gICAgICAgICAgICAgICAgICAgIGRlbCBjb250ZXh0W29iamlkXQotICAgICAgICAgICAgICAgIHdyaXRlKCd9JykKLSAgICAgICAgICAgICAgICByZXR1cm4KKyAgICBfZGlzcGF0Y2hbZGljdC5fX3JlcHJfX10gPSBfcHByaW50X2RpY3QKIAotICAgICAgICAgICAgaWYgKChpc3N1YmNsYXNzKHR5cCwgbGlzdCkgYW5kIHIgaXMgbGlzdC5fX3JlcHJfXykgb3IKLSAgICAgICAgICAgICAgICAoaXNzdWJjbGFzcyh0eXAsIHR1cGxlKSBhbmQgciBpcyB0dXBsZS5fX3JlcHJfXykgb3IKLSAgICAgICAgICAgICAgICAoaXNzdWJjbGFzcyh0eXAsIHNldCkgYW5kIHIgaXMgc2V0Ll9fcmVwcl9fKSBvcgotICAgICAgICAgICAgICAgIChpc3N1YmNsYXNzKHR5cCwgZnJvemVuc2V0KSBhbmQgciBpcyBmcm96ZW5zZXQuX19yZXByX18pCi0gICAgICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbihvYmplY3QpCi0gICAgICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyh0eXAsIGxpc3QpOgotICAgICAgICAgICAgICAgICAgICB3cml0ZSgnWycpCi0gICAgICAgICAgICAgICAgICAgIGVuZGNoYXIgPSAnXScKLSAgICAgICAgICAgICAgICBlbGlmIGlzc3ViY2xhc3ModHlwLCB0dXBsZSk6Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlKCcoJykKLSAgICAgICAgICAgICAgICAgICAgZW5kY2hhciA9ICcpJwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsZW5ndGg6Ci0gICAgICAgICAgICAgICAgICAgICAgICB3cml0ZShyZXApCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICAgICAgaWYgdHlwIGlzIHNldDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlKCd7JykKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZGNoYXIgPSAnfScKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlKHR5cC5fX25hbWVfXykKLSAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlKCcoeycpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbmRjaGFyID0gJ30pJwotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50ICs9IGxlbih0eXAuX19uYW1lX18pICsgMQotICAgICAgICAgICAgICAgICAgICBvYmplY3QgPSBzb3J0ZWQob2JqZWN0LCBrZXk9X3NhZmVfa2V5KQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX2luZGVudF9wZXJfbGV2ZWwgPiAxOgotICAgICAgICAgICAgICAgICAgICB3cml0ZSgoc2VsZi5faW5kZW50X3Blcl9sZXZlbCAtIDEpICogJyAnKQotICAgICAgICAgICAgICAgIGlmIGxlbmd0aDoKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dFtvYmppZF0gPSAxCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2Zvcm1hdF9pdGVtcyhvYmplY3QsIHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudCArIHNlbGYuX2luZGVudF9wZXJfbGV2ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2FuY2UgKyAxLCBjb250ZXh0LCBsZXZlbCkKLSAgICAgICAgICAgICAgICAgICAgZGVsIGNvbnRleHRbb2JqaWRdCi0gICAgICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyh0eXAsIHR1cGxlKSBhbmQgbGVuZ3RoID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlKCcsJykKLSAgICAgICAgICAgICAgICB3cml0ZShlbmRjaGFyKQotICAgICAgICAgICAgICAgIHJldHVybgorICAgIGRlZiBfcHByaW50X29yZGVyZWRfZGljdChzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKKyAgICAgICAgaWYgbm90IGxlbihvYmplY3QpOgorICAgICAgICAgICAgc3RyZWFtLndyaXRlKHJlcHIob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBjbHMgPSBvYmplY3QuX19jbGFzc19fCisgICAgICAgIHN0cmVhbS53cml0ZShjbHMuX19uYW1lX18gKyAnKCcpCisgICAgICAgIHNlbGYuX2Zvcm1hdChsaXN0KG9iamVjdC5pdGVtcygpKSwgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgaW5kZW50ICsgbGVuKGNscy5fX25hbWVfXykgKyAxLCBhbGxvd2FuY2UgKyAxLAorICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCisgICAgICAgIHN0cmVhbS53cml0ZSgnKScpCiAKLSAgICAgICAgICAgIGlmIGlzc3ViY2xhc3ModHlwLCBzdHIpIGFuZCBsZW4ob2JqZWN0KSA+IDAgYW5kIHIgaXMgc3RyLl9fcmVwcl9fOgotICAgICAgICAgICAgICAgIGNodW5rcyA9IFtdCi0gICAgICAgICAgICAgICAgbGluZXMgPSBvYmplY3Quc3BsaXRsaW5lcyhUcnVlKQotICAgICAgICAgICAgICAgIGlmIGxldmVsID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIGluZGVudCArPSAxCi0gICAgICAgICAgICAgICAgICAgIG1heF93aWR0aCAtPSAyCi0gICAgICAgICAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzKToKLSAgICAgICAgICAgICAgICAgICAgcmVwID0gcmVwcihsaW5lKQotICAgICAgICAgICAgICAgICAgICBpZiBsZW4ocmVwKSA8PSBtYXhfd2lkdGg6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaHVua3MuYXBwZW5kKHJlcCkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgQSBsaXN0IG9mIGFsdGVybmF0aW5nIChub24tc3BhY2UsIHNwYWNlKSBzdHJpbmdzCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0cyA9IHJlLnNwbGl0KHInKFxzKyknLCBsaW5lKSArIFsnJ10KLSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSAnJwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKHBhcnRzKSwgMik6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydCA9IHBhcnRzW2ldICsgcGFydHNbaSsxXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IGN1cnJlbnQgKyBwYXJ0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHJlcHIoY2FuZGlkYXRlKSkgPiBtYXhfd2lkdGg6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGN1cnJlbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHVua3MuYXBwZW5kKHJlcHIoY3VycmVudCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBwYXJ0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IGNhbmRpZGF0ZQorICAgIF9kaXNwYXRjaFtfY29sbGVjdGlvbnMuT3JkZXJlZERpY3QuX19yZXByX19dID0gX3BwcmludF9vcmRlcmVkX2RpY3QKKworICAgIGRlZiBfcHByaW50X2xpc3Qoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIHN0cmVhbS53cml0ZSgnWycpCisgICAgICAgIHNlbGYuX2Zvcm1hdF9pdGVtcyhvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UgKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCisgICAgICAgIHN0cmVhbS53cml0ZSgnXScpCisKKyAgICBfZGlzcGF0Y2hbbGlzdC5fX3JlcHJfX10gPSBfcHByaW50X2xpc3QKKworICAgIGRlZiBfcHByaW50X3R1cGxlKHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICBzdHJlYW0ud3JpdGUoJygnKQorICAgICAgICBlbmRjaGFyID0gJywpJyBpZiBsZW4ob2JqZWN0KSA9PSAxIGVsc2UgJyknCisgICAgICAgIHNlbGYuX2Zvcm1hdF9pdGVtcyhvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UgKyBsZW4oZW5kY2hhciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgc3RyZWFtLndyaXRlKGVuZGNoYXIpCisKKyAgICBfZGlzcGF0Y2hbdHVwbGUuX19yZXByX19dID0gX3BwcmludF90dXBsZQorCisgICAgZGVmIF9wcHJpbnRfc2V0KHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICBpZiBub3QgbGVuKG9iamVjdCk6CisgICAgICAgICAgICBzdHJlYW0ud3JpdGUocmVwcihvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHR5cCA9IG9iamVjdC5fX2NsYXNzX18KKyAgICAgICAgaWYgdHlwIGlzIHNldDoKKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSgneycpCisgICAgICAgICAgICBlbmRjaGFyID0gJ30nCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzdHJlYW0ud3JpdGUodHlwLl9fbmFtZV9fICsgJyh7JykKKyAgICAgICAgICAgIGVuZGNoYXIgPSAnfSknCisgICAgICAgICAgICBpbmRlbnQgKz0gbGVuKHR5cC5fX25hbWVfXykgKyAxCisgICAgICAgIG9iamVjdCA9IHNvcnRlZChvYmplY3QsIGtleT1fc2FmZV9rZXkpCisgICAgICAgIHNlbGYuX2Zvcm1hdF9pdGVtcyhvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UgKyBsZW4oZW5kY2hhciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgc3RyZWFtLndyaXRlKGVuZGNoYXIpCisKKyAgICBfZGlzcGF0Y2hbc2V0Ll9fcmVwcl9fXSA9IF9wcHJpbnRfc2V0CisgICAgX2Rpc3BhdGNoW2Zyb3plbnNldC5fX3JlcHJfX10gPSBfcHByaW50X3NldAorCisgICAgZGVmIF9wcHJpbnRfc3RyKHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICB3cml0ZSA9IHN0cmVhbS53cml0ZQorICAgICAgICBpZiBub3QgbGVuKG9iamVjdCk6CisgICAgICAgICAgICB3cml0ZShyZXByKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgY2h1bmtzID0gW10KKyAgICAgICAgbGluZXMgPSBvYmplY3Quc3BsaXRsaW5lcyhUcnVlKQorICAgICAgICBpZiBsZXZlbCA9PSAxOgorICAgICAgICAgICAgaW5kZW50ICs9IDEKKyAgICAgICAgICAgIGFsbG93YW5jZSArPSAxCisgICAgICAgIG1heF93aWR0aDEgPSBtYXhfd2lkdGggPSBzZWxmLl93aWR0aCAtIGluZGVudAorICAgICAgICBmb3IgaSwgbGluZSBpbiBlbnVtZXJhdGUobGluZXMpOgorICAgICAgICAgICAgcmVwID0gcmVwcihsaW5lKQorICAgICAgICAgICAgaWYgaSA9PSBsZW4obGluZXMpIC0gMToKKyAgICAgICAgICAgICAgICBtYXhfd2lkdGgxIC09IGFsbG93YW5jZQorICAgICAgICAgICAgaWYgbGVuKHJlcCkgPD0gbWF4X3dpZHRoMToKKyAgICAgICAgICAgICAgICBjaHVua3MuYXBwZW5kKHJlcCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBBIGxpc3Qgb2YgYWx0ZXJuYXRpbmcgKG5vbi1zcGFjZSwgc3BhY2UpIHN0cmluZ3MKKyAgICAgICAgICAgICAgICBwYXJ0cyA9IHJlLmZpbmRhbGwocidcUypccyonLCBsaW5lKQorICAgICAgICAgICAgICAgIGFzc2VydCBwYXJ0cworICAgICAgICAgICAgICAgIGFzc2VydCBub3QgcGFydHNbLTFdCisgICAgICAgICAgICAgICAgcGFydHMucG9wKCkgICMgZHJvcCBlbXB0eSBsYXN0IHBhcnQKKyAgICAgICAgICAgICAgICBtYXhfd2lkdGgyID0gbWF4X3dpZHRoCisgICAgICAgICAgICAgICAgY3VycmVudCA9ICcnCisgICAgICAgICAgICAgICAgZm9yIGosIHBhcnQgaW4gZW51bWVyYXRlKHBhcnRzKToKKyAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gY3VycmVudCArIHBhcnQKKyAgICAgICAgICAgICAgICAgICAgaWYgaiA9PSBsZW4ocGFydHMpIC0gMSBhbmQgaSA9PSBsZW4obGluZXMpIC0gMToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heF93aWR0aDIgLT0gYWxsb3dhbmNlCisgICAgICAgICAgICAgICAgICAgIGlmIGxlbihyZXByKGNhbmRpZGF0ZSkpID4gbWF4X3dpZHRoMjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGN1cnJlbnQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtzLmFwcGVuZChyZXByKGN1cnJlbnQpKQotICAgICAgICAgICAgICAgIGlmIGxlbihjaHVua3MpID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlKHJlcCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgaWYgbGV2ZWwgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUoJygnKQotICAgICAgICAgICAgICAgIGZvciBpLCByZXAgaW4gZW51bWVyYXRlKGNodW5rcyk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGkgPiAwOgotICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUoJ1xuJyArICcgJyppbmRlbnQpCi0gICAgICAgICAgICAgICAgICAgIHdyaXRlKHJlcCkKLSAgICAgICAgICAgICAgICBpZiBsZXZlbCA9PSAxOgotICAgICAgICAgICAgICAgICAgICB3cml0ZSgnKScpCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHdyaXRlKHJlcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBwYXJ0CisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gY2FuZGlkYXRlCisgICAgICAgICAgICAgICAgaWYgY3VycmVudDoKKyAgICAgICAgICAgICAgICAgICAgY2h1bmtzLmFwcGVuZChyZXByKGN1cnJlbnQpKQorICAgICAgICBpZiBsZW4oY2h1bmtzKSA9PSAxOgorICAgICAgICAgICAgd3JpdGUocmVwKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGxldmVsID09IDE6CisgICAgICAgICAgICB3cml0ZSgnKCcpCisgICAgICAgIGZvciBpLCByZXAgaW4gZW51bWVyYXRlKGNodW5rcyk6CisgICAgICAgICAgICBpZiBpID4gMDoKKyAgICAgICAgICAgICAgICB3cml0ZSgnXG4nICsgJyAnKmluZGVudCkKKyAgICAgICAgICAgIHdyaXRlKHJlcCkKKyAgICAgICAgaWYgbGV2ZWwgPT0gMToKKyAgICAgICAgICAgIHdyaXRlKCcpJykKKworICAgIF9kaXNwYXRjaFtzdHIuX19yZXByX19dID0gX3BwcmludF9zdHIKKworICAgIGRlZiBfcHByaW50X2J5dGVzKHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICB3cml0ZSA9IHN0cmVhbS53cml0ZQorICAgICAgICBpZiBsZW4ob2JqZWN0KSA8PSA0OgorICAgICAgICAgICAgd3JpdGUocmVwcihvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHBhcmVucyA9IGxldmVsID09IDEKKyAgICAgICAgaWYgcGFyZW5zOgorICAgICAgICAgICAgaW5kZW50ICs9IDEKKyAgICAgICAgICAgIGFsbG93YW5jZSArPSAxCisgICAgICAgICAgICB3cml0ZSgnKCcpCisgICAgICAgIGRlbGltID0gJycKKyAgICAgICAgZm9yIHJlcCBpbiBfd3JhcF9ieXRlc19yZXByKG9iamVjdCwgc2VsZi5fd2lkdGggLSBpbmRlbnQsIGFsbG93YW5jZSk6CisgICAgICAgICAgICB3cml0ZShkZWxpbSkKKyAgICAgICAgICAgIHdyaXRlKHJlcCkKKyAgICAgICAgICAgIGlmIG5vdCBkZWxpbToKKyAgICAgICAgICAgICAgICBkZWxpbSA9ICdcbicgKyAnICcqaW5kZW50CisgICAgICAgIGlmIHBhcmVuczoKKyAgICAgICAgICAgIHdyaXRlKCcpJykKKworICAgIF9kaXNwYXRjaFtieXRlcy5fX3JlcHJfX10gPSBfcHByaW50X2J5dGVzCisKKyAgICBkZWYgX3BwcmludF9ieXRlYXJyYXkoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIHdyaXRlID0gc3RyZWFtLndyaXRlCisgICAgICAgIHdyaXRlKCdieXRlYXJyYXkoJykKKyAgICAgICAgc2VsZi5fcHByaW50X2J5dGVzKGJ5dGVzKG9iamVjdCksIHN0cmVhbSwgaW5kZW50ICsgMTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2FuY2UgKyAxLCBjb250ZXh0LCBsZXZlbCArIDEpCisgICAgICAgIHdyaXRlKCcpJykKKworICAgIF9kaXNwYXRjaFtieXRlYXJyYXkuX19yZXByX19dID0gX3BwcmludF9ieXRlYXJyYXkKKworICAgIGRlZiBfcHByaW50X21hcHBpbmdwcm94eShzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKKyAgICAgICAgc3RyZWFtLndyaXRlKCdtYXBwaW5ncHJveHkoJykKKyAgICAgICAgc2VsZi5fZm9ybWF0KG9iamVjdC5jb3B5KCksIHN0cmVhbSwgaW5kZW50ICsgMTMsIGFsbG93YW5jZSArIDEsCisgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgc3RyZWFtLndyaXRlKCcpJykKKworICAgIF9kaXNwYXRjaFtfdHlwZXMuTWFwcGluZ1Byb3h5VHlwZS5fX3JlcHJfX10gPSBfcHByaW50X21hcHBpbmdwcm94eQorCisgICAgZGVmIF9mb3JtYXRfZGljdF9pdGVtcyhzZWxmLCBpdGVtcywgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsKToKKyAgICAgICAgd3JpdGUgPSBzdHJlYW0ud3JpdGUKKyAgICAgICAgaW5kZW50ICs9IHNlbGYuX2luZGVudF9wZXJfbGV2ZWwKKyAgICAgICAgZGVsaW1ubCA9ICcsXG4nICsgJyAnICogaW5kZW50CisgICAgICAgIGxhc3RfaW5kZXggPSBsZW4oaXRlbXMpIC0gMQorICAgICAgICBmb3IgaSwgKGtleSwgZW50KSBpbiBlbnVtZXJhdGUoaXRlbXMpOgorICAgICAgICAgICAgbGFzdCA9IGkgPT0gbGFzdF9pbmRleAorICAgICAgICAgICAgcmVwID0gc2VsZi5fcmVwcihrZXksIGNvbnRleHQsIGxldmVsKQorICAgICAgICAgICAgd3JpdGUocmVwKQorICAgICAgICAgICAgd3JpdGUoJzogJykKKyAgICAgICAgICAgIHNlbGYuX2Zvcm1hdChlbnQsIHN0cmVhbSwgaW5kZW50ICsgbGVuKHJlcCkgKyAyLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93YW5jZSBpZiBsYXN0IGVsc2UgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgICAgIGlmIG5vdCBsYXN0OgorICAgICAgICAgICAgICAgIHdyaXRlKGRlbGltbmwpCiAKICAgICBkZWYgX2Zvcm1hdF9pdGVtcyhzZWxmLCBpdGVtcywgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgogICAgICAgICB3cml0ZSA9IHN0cmVhbS53cml0ZQorICAgICAgICBpbmRlbnQgKz0gc2VsZi5faW5kZW50X3Blcl9sZXZlbAorICAgICAgICBpZiBzZWxmLl9pbmRlbnRfcGVyX2xldmVsID4gMToKKyAgICAgICAgICAgIHdyaXRlKChzZWxmLl9pbmRlbnRfcGVyX2xldmVsIC0gMSkgKiAnICcpCiAgICAgICAgIGRlbGltbmwgPSAnLFxuJyArICcgJyAqIGluZGVudAogICAgICAgICBkZWxpbSA9ICcnCi0gICAgICAgIHdpZHRoID0gbWF4X3dpZHRoID0gc2VsZi5fd2lkdGggLSBpbmRlbnQgLSBhbGxvd2FuY2UgKyAyCi0gICAgICAgIGZvciBlbnQgaW4gaXRlbXM6CisgICAgICAgIHdpZHRoID0gbWF4X3dpZHRoID0gc2VsZi5fd2lkdGggLSBpbmRlbnQgKyAxCisgICAgICAgIGl0ID0gaXRlcihpdGVtcykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV4dF9lbnQgPSBuZXh0KGl0KQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBsYXN0ID0gRmFsc2UKKyAgICAgICAgd2hpbGUgbm90IGxhc3Q6CisgICAgICAgICAgICBlbnQgPSBuZXh0X2VudAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG5leHRfZW50ID0gbmV4dChpdCkKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgIGxhc3QgPSBUcnVlCisgICAgICAgICAgICAgICAgbWF4X3dpZHRoIC09IGFsbG93YW5jZQorICAgICAgICAgICAgICAgIHdpZHRoIC09IGFsbG93YW5jZQogICAgICAgICAgICAgaWYgc2VsZi5fY29tcGFjdDoKICAgICAgICAgICAgICAgICByZXAgPSBzZWxmLl9yZXByKGVudCwgY29udGV4dCwgbGV2ZWwpCiAgICAgICAgICAgICAgICAgdyA9IGxlbihyZXApICsgMgpAQCAtMjk0LDcgKzM4NCw5IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICB3cml0ZShkZWxpbSkKICAgICAgICAgICAgIGRlbGltID0gZGVsaW1ubAotICAgICAgICAgICAgc2VsZi5fZm9ybWF0KGVudCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpCisgICAgICAgICAgICBzZWxmLl9mb3JtYXQoZW50LCBzdHJlYW0sIGluZGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2FuY2UgaWYgbGFzdCBlbHNlIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCiAKICAgICBkZWYgX3JlcHIoc2VsZiwgb2JqZWN0LCBjb250ZXh0LCBsZXZlbCk6CiAgICAgICAgIHJlcHIsIHJlYWRhYmxlLCByZWN1cnNpdmUgPSBzZWxmLmZvcm1hdChvYmplY3QsIGNvbnRleHQuY29weSgpLApAQCAtMzEyLDI5ICs0MDQsOTMgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBfc2FmZV9yZXByKG9iamVjdCwgY29udGV4dCwgbWF4bGV2ZWxzLCBsZXZlbCkKIAorICAgIGRlZiBfcHByaW50X2RlZmF1bHRfZGljdChzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKKyAgICAgICAgaWYgbm90IGxlbihvYmplY3QpOgorICAgICAgICAgICAgc3RyZWFtLndyaXRlKHJlcHIob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICByZGYgPSBzZWxmLl9yZXByKG9iamVjdC5kZWZhdWx0X2ZhY3RvcnksIGNvbnRleHQsIGxldmVsKQorICAgICAgICBjbHMgPSBvYmplY3QuX19jbGFzc19fCisgICAgICAgIGluZGVudCArPSBsZW4oY2xzLl9fbmFtZV9fKSArIDEKKyAgICAgICAgc3RyZWFtLndyaXRlKCclcyglcyxcbiVzJyAlIChjbHMuX19uYW1lX18sIHJkZiwgJyAnICogaW5kZW50KSkKKyAgICAgICAgc2VsZi5fcHByaW50X2RpY3Qob2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlICsgMSwgY29udGV4dCwgbGV2ZWwpCisgICAgICAgIHN0cmVhbS53cml0ZSgnKScpCisKKyAgICBfZGlzcGF0Y2hbX2NvbGxlY3Rpb25zLmRlZmF1bHRkaWN0Ll9fcmVwcl9fXSA9IF9wcHJpbnRfZGVmYXVsdF9kaWN0CisKKyAgICBkZWYgX3BwcmludF9jb3VudGVyKHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICBpZiBub3QgbGVuKG9iamVjdCk6CisgICAgICAgICAgICBzdHJlYW0ud3JpdGUocmVwcihvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGNscyA9IG9iamVjdC5fX2NsYXNzX18KKyAgICAgICAgc3RyZWFtLndyaXRlKGNscy5fX25hbWVfXyArICcoeycpCisgICAgICAgIGlmIHNlbGYuX2luZGVudF9wZXJfbGV2ZWwgPiAxOgorICAgICAgICAgICAgc3RyZWFtLndyaXRlKChzZWxmLl9pbmRlbnRfcGVyX2xldmVsIC0gMSkgKiAnICcpCisgICAgICAgIGl0ZW1zID0gb2JqZWN0Lm1vc3RfY29tbW9uKCkKKyAgICAgICAgc2VsZi5fZm9ybWF0X2RpY3RfaXRlbXMoaXRlbXMsIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50ICsgbGVuKGNscy5fX25hbWVfXykgKyAxLCBhbGxvd2FuY2UgKyAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgc3RyZWFtLndyaXRlKCd9KScpCisKKyAgICBfZGlzcGF0Y2hbX2NvbGxlY3Rpb25zLkNvdW50ZXIuX19yZXByX19dID0gX3BwcmludF9jb3VudGVyCisKKyAgICBkZWYgX3BwcmludF9jaGFpbl9tYXAoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIGlmIG5vdCBsZW4ob2JqZWN0Lm1hcHMpOgorICAgICAgICAgICAgc3RyZWFtLndyaXRlKHJlcHIob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBjbHMgPSBvYmplY3QuX19jbGFzc19fCisgICAgICAgIHN0cmVhbS53cml0ZShjbHMuX19uYW1lX18gKyAnKCcpCisgICAgICAgIGluZGVudCArPSBsZW4oY2xzLl9fbmFtZV9fKSArIDEKKyAgICAgICAgZm9yIGksIG0gaW4gZW51bWVyYXRlKG9iamVjdC5tYXBzKToKKyAgICAgICAgICAgIGlmIGkgPT0gbGVuKG9iamVjdC5tYXBzKSAtIDE6CisgICAgICAgICAgICAgICAgc2VsZi5fZm9ybWF0KG0sIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UgKyAxLCBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUoJyknKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9mb3JtYXQobSwgc3RyZWFtLCBpbmRlbnQsIDEsIGNvbnRleHQsIGxldmVsKQorICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZSgnLFxuJyArICcgJyAqIGluZGVudCkKKworICAgIF9kaXNwYXRjaFtfY29sbGVjdGlvbnMuQ2hhaW5NYXAuX19yZXByX19dID0gX3BwcmludF9jaGFpbl9tYXAKKworICAgIGRlZiBfcHByaW50X2RlcXVlKHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICBpZiBub3QgbGVuKG9iamVjdCk6CisgICAgICAgICAgICBzdHJlYW0ud3JpdGUocmVwcihvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGNscyA9IG9iamVjdC5fX2NsYXNzX18KKyAgICAgICAgc3RyZWFtLndyaXRlKGNscy5fX25hbWVfXyArICcoJykKKyAgICAgICAgaW5kZW50ICs9IGxlbihjbHMuX19uYW1lX18pICsgMQorICAgICAgICBzdHJlYW0ud3JpdGUoJ1snKQorICAgICAgICBpZiBvYmplY3QubWF4bGVuIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9mb3JtYXRfaXRlbXMob2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlICsgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSgnXSknKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fZm9ybWF0X2l0ZW1zKG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCisgICAgICAgICAgICBybWwgPSBzZWxmLl9yZXByKG9iamVjdC5tYXhsZW4sIGNvbnRleHQsIGxldmVsKQorICAgICAgICAgICAgc3RyZWFtLndyaXRlKCddLFxuJXNtYXhsZW49JXMpJyAlICgnICcgKiBpbmRlbnQsIHJtbCkpCisKKyAgICBfZGlzcGF0Y2hbX2NvbGxlY3Rpb25zLmRlcXVlLl9fcmVwcl9fXSA9IF9wcHJpbnRfZGVxdWUKKworICAgIGRlZiBfcHByaW50X3VzZXJfZGljdChzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKKyAgICAgICAgc2VsZi5fZm9ybWF0KG9iamVjdC5kYXRhLCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCAtIDEpCisKKyAgICBfZGlzcGF0Y2hbX2NvbGxlY3Rpb25zLlVzZXJEaWN0Ll9fcmVwcl9fXSA9IF9wcHJpbnRfdXNlcl9kaWN0CisKKyAgICBkZWYgX3BwcmludF91c2VyX2xpc3Qoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIHNlbGYuX2Zvcm1hdChvYmplY3QuZGF0YSwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwgLSAxKQorCisgICAgX2Rpc3BhdGNoW19jb2xsZWN0aW9ucy5Vc2VyTGlzdC5fX3JlcHJfX10gPSBfcHByaW50X3VzZXJfbGlzdAorCisgICAgZGVmIF9wcHJpbnRfdXNlcl9zdHJpbmcoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIHNlbGYuX2Zvcm1hdChvYmplY3QuZGF0YSwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwgLSAxKQorCisgICAgX2Rpc3BhdGNoW19jb2xsZWN0aW9ucy5Vc2VyU3RyaW5nLl9fcmVwcl9fXSA9IF9wcHJpbnRfdXNlcl9zdHJpbmcKIAogIyBSZXR1cm4gdHJpcGxlIChyZXByX3N0cmluZywgaXNyZWFkYWJsZSwgaXNyZWN1cnNpdmUpLgogCiBkZWYgX3NhZmVfcmVwcihvYmplY3QsIGNvbnRleHQsIG1heGxldmVscywgbGV2ZWwpOgogICAgIHR5cCA9IHR5cGUob2JqZWN0KQotICAgIGlmIHR5cCBpcyBzdHI6Ci0gICAgICAgIGlmICdsb2NhbGUnIG5vdCBpbiBfc3lzLm1vZHVsZXM6Ci0gICAgICAgICAgICByZXR1cm4gcmVwcihvYmplY3QpLCBUcnVlLCBGYWxzZQotICAgICAgICBpZiAiJyIgaW4gb2JqZWN0IGFuZCAnIicgbm90IGluIG9iamVjdDoKLSAgICAgICAgICAgIGNsb3N1cmUgPSAnIicKLSAgICAgICAgICAgIHF1b3RlcyA9IHsnIic6ICdcXCInfQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY2xvc3VyZSA9ICInIgotICAgICAgICAgICAgcXVvdGVzID0geyInIjogIlxcJyJ9Ci0gICAgICAgIHFnZXQgPSBxdW90ZXMuZ2V0Ci0gICAgICAgIHNpbyA9IF9TdHJpbmdJTygpCi0gICAgICAgIHdyaXRlID0gc2lvLndyaXRlCi0gICAgICAgIGZvciBjaGFyIGluIG9iamVjdDoKLSAgICAgICAgICAgIGlmIGNoYXIuaXNhbHBoYSgpOgotICAgICAgICAgICAgICAgIHdyaXRlKGNoYXIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHdyaXRlKHFnZXQoY2hhciwgcmVwcihjaGFyKVsxOi0xXSkpCi0gICAgICAgIHJldHVybiAoIiVzJXMlcyIgJSAoY2xvc3VyZSwgc2lvLmdldHZhbHVlKCksIGNsb3N1cmUpKSwgVHJ1ZSwgRmFsc2UKKyAgICBpZiB0eXAgaW4gX2J1aWx0aW5fc2NhbGFyczoKKyAgICAgICAgcmV0dXJuIHJlcHIob2JqZWN0KSwgVHJ1ZSwgRmFsc2UKIAogICAgIHIgPSBnZXRhdHRyKHR5cCwgIl9fcmVwcl9fIiwgTm9uZSkKICAgICBpZiBpc3N1YmNsYXNzKHR5cCwgZGljdCkgYW5kIHIgaXMgZGljdC5fX3JlcHJfXzoKQEAgLTM5OSw2ICs1NTUsOCBAQAogICAgIHJlcCA9IHJlcHIob2JqZWN0KQogICAgIHJldHVybiByZXAsIChyZXAgYW5kIG5vdCByZXAuc3RhcnRzd2l0aCgnPCcpKSwgRmFsc2UKIAorX2J1aWx0aW5fc2NhbGFycyA9IGZyb3plbnNldCh7c3RyLCBieXRlcywgYnl0ZWFycmF5LCBpbnQsIGZsb2F0LCBjb21wbGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCwgdHlwZShOb25lKX0pCiAKIGRlZiBfcmVjdXJzaW9uKG9iamVjdCk6CiAgICAgcmV0dXJuICgiPFJlY3Vyc2lvbiBvbiAlcyB3aXRoIGlkPSVzPiIKQEAgLTQxOCw1ICs1NzYsMjIgQEAKICAgICBwcmludCgiX3NhZmVfcmVwcjoiLCB0MiAtIHQxKQogICAgIHByaW50KCJwZm9ybWF0OiIsIHQzIC0gdDIpCiAKK2RlZiBfd3JhcF9ieXRlc19yZXByKG9iamVjdCwgd2lkdGgsIGFsbG93YW5jZSk6CisgICAgY3VycmVudCA9IGInJworICAgIGxhc3QgPSBsZW4ob2JqZWN0KSAvLyA0ICogNAorICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihvYmplY3QpLCA0KToKKyAgICAgICAgcGFydCA9IG9iamVjdFtpOiBpKzRdCisgICAgICAgIGNhbmRpZGF0ZSA9IGN1cnJlbnQgKyBwYXJ0CisgICAgICAgIGlmIGkgPT0gbGFzdDoKKyAgICAgICAgICAgIHdpZHRoIC09IGFsbG93YW5jZQorICAgICAgICBpZiBsZW4ocmVwcihjYW5kaWRhdGUpKSA+IHdpZHRoOgorICAgICAgICAgICAgaWYgY3VycmVudDoKKyAgICAgICAgICAgICAgICB5aWVsZCByZXByKGN1cnJlbnQpCisgICAgICAgICAgICBjdXJyZW50ID0gcGFydAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY3VycmVudCA9IGNhbmRpZGF0ZQorICAgIGlmIGN1cnJlbnQ6CisgICAgICAgIHlpZWxkIHJlcHIoY3VycmVudCkKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBfcGVyZmNoZWNrKCkKZGlmZiAtLWdpdCBhL0xpYi9weV9jb21waWxlLnB5IGIvTGliL3B5X2NvbXBpbGUucHkKaW5kZXggZjY1ZWVhZi4uMTFjNWI1MCAxMDA2NDQKLS0tIGEvTGliL3B5X2NvbXBpbGUucHkKKysrIGIvTGliL3B5X2NvbXBpbGUucHkKQEAgLTEsOSArMSw5IEBACi0iIiJSb3V0aW5lIHRvICJjb21waWxlIiBhIC5weSBmaWxlIHRvIGEgLnB5YyAob3IgLnB5bykgZmlsZS4KKyIiIlJvdXRpbmUgdG8gImNvbXBpbGUiIGEgLnB5IGZpbGUgdG8gYSAucHljIGZpbGUuCiAKIFRoaXMgbW9kdWxlIGhhcyBpbnRpbWF0ZSBrbm93bGVkZ2Ugb2YgdGhlIGZvcm1hdCBvZiAucHljIGZpbGVzLgogIiIiCiAKLWltcG9ydCBpbXBvcnRsaWIuX2Jvb3RzdHJhcAoraW1wb3J0IGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsCiBpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQogaW1wb3J0IGltcG9ydGxpYi51dGlsCiBpbXBvcnQgb3MKQEAgLTY3LDcgKzY3LDcgQEAKIAogICAgIDpwYXJhbSBmaWxlOiBUaGUgc291cmNlIGZpbGUgbmFtZS4KICAgICA6cGFyYW0gY2ZpbGU6IFRoZSB0YXJnZXQgYnl0ZSBjb21waWxlZCBmaWxlIG5hbWUuICBXaGVuIG5vdCBnaXZlbiwgdGhpcwotICAgICAgICBkZWZhdWx0cyB0byB0aGUgUEVQIDMxNDcgbG9jYXRpb24uCisgICAgICAgIGRlZmF1bHRzIHRvIHRoZSBQRVAgMzE0Ny9QRVAgNDg4IGxvY2F0aW9uLgogICAgIDpwYXJhbSBkZmlsZTogUHVycG9ydGVkIGZpbGUgbmFtZSwgaS5lLiB0aGUgZmlsZSBuYW1lIHRoYXQgc2hvd3MgdXAgaW4KICAgICAgICAgZXJyb3IgbWVzc2FnZXMuICBEZWZhdWx0cyB0byB0aGUgc291cmNlIGZpbGUgbmFtZS4KICAgICA6cGFyYW0gZG9yYWlzZTogRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IGFuIGV4Y2VwdGlvbiBzaG91bGQgYmUKQEAgLTg1LDEyICs4NSwxMiBAQAogICAgIE5vdGUgdGhhdCBpdCBpc24ndCBuZWNlc3NhcnkgdG8gYnl0ZS1jb21waWxlIFB5dGhvbiBtb2R1bGVzIGZvcgogICAgIGV4ZWN1dGlvbiBlZmZpY2llbmN5IC0tIFB5dGhvbiBpdHNlbGYgYnl0ZS1jb21waWxlcyBhIG1vZHVsZSB3aGVuCiAgICAgaXQgaXMgbG9hZGVkLCBhbmQgaWYgaXQgY2FuLCB3cml0ZXMgb3V0IHRoZSBieXRlY29kZSB0byB0aGUKLSAgICBjb3JyZXNwb25kaW5nIC5weWMgKG9yIC5weW8pIGZpbGUuCisgICAgY29ycmVzcG9uZGluZyAucHljIGZpbGUuCiAKICAgICBIb3dldmVyLCBpZiBhIFB5dGhvbiBpbnN0YWxsYXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdXNlcnMsIGl0IGlzIGEKICAgICBnb29kIGlkZWEgdG8gYnl0ZS1jb21waWxlIGFsbCBtb2R1bGVzIHVwb24gaW5zdGFsbGF0aW9uLCBzaW5jZQogICAgIG90aGVyIHVzZXJzIG1heSBub3QgYmUgYWJsZSB0byB3cml0ZSBpbiB0aGUgc291cmNlIGRpcmVjdG9yaWVzLAotICAgIGFuZCB0aHVzIHRoZXkgd29uJ3QgYmUgYWJsZSB0byB3cml0ZSB0aGUgLnB5Yy8ucHlvIGZpbGUsIGFuZCB0aGVuCisgICAgYW5kIHRodXMgdGhleSB3b24ndCBiZSBhYmxlIHRvIHdyaXRlIHRoZSAucHljIGZpbGUsIGFuZCB0aGVuCiAgICAgdGhleSB3b3VsZCBiZSBieXRlLWNvbXBpbGluZyBldmVyeSBtb2R1bGUgZWFjaCB0aW1lIGl0IGlzIGxvYWRlZC4KICAgICBUaGlzIGNhbiBzbG93IGRvd24gcHJvZ3JhbSBzdGFydC11cCBjb25zaWRlcmFibHkuCiAKQEAgLTEwNSw4ICsxMDUsOSBAQAogICAgICIiIgogICAgIGlmIGNmaWxlIGlzIE5vbmU6CiAgICAgICAgIGlmIG9wdGltaXplID49IDA6CisgICAgICAgICAgICBvcHRpbWl6YXRpb24gPSBvcHRpbWl6ZSBpZiBvcHRpbWl6ZSA+PSAxIGVsc2UgJycKICAgICAgICAgICAgIGNmaWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfb3ZlcnJpZGU9bm90IG9wdGltaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb249b3B0aW1pemF0aW9uKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY2ZpbGUgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlKQogICAgIGlmIG9zLnBhdGguaXNsaW5rKGNmaWxlKToKQEAgLTEzNiwxMCArMTM3LDEwIEBACiAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKICAgICAgICAgcGFzcwogICAgIHNvdXJjZV9zdGF0cyA9IGxvYWRlci5wYXRoX3N0YXRzKGZpbGUpCi0gICAgYnl0ZWNvZGUgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fY29kZV90b19ieXRlY29kZSgKKyAgICBieXRlY29kZSA9IGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLl9jb2RlX3RvX2J5dGVjb2RlKAogICAgICAgICAgICAgY29kZSwgc291cmNlX3N0YXRzWydtdGltZSddLCBzb3VyY2Vfc3RhdHNbJ3NpemUnXSkKLSAgICBtb2RlID0gaW1wb3J0bGliLl9ib290c3RyYXAuX2NhbGNfbW9kZShmaWxlKQotICAgIGltcG9ydGxpYi5fYm9vdHN0cmFwLl93cml0ZV9hdG9taWMoY2ZpbGUsIGJ5dGVjb2RlLCBtb2RlKQorICAgIG1vZGUgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fY2FsY19tb2RlKGZpbGUpCisgICAgaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwuX3dyaXRlX2F0b21pYyhjZmlsZSwgYnl0ZWNvZGUsIG1vZGUpCiAgICAgcmV0dXJuIGNmaWxlCiAKIApkaWZmIC0tZ2l0IGEvTGliL3B5ZG9jLnB5IGIvTGliL3B5ZG9jLnB5CmluZGV4IGY0MjI5OWYuLmE5YzA0ZjAgMTAwNzU1Ci0tLSBhL0xpYi9weWRvYy5weQorKysgYi9MaWIvcHlkb2MucHkKQEAgLTUzLDYgKzUzLDcgQEAKIAogaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgaW1wb3J0bGliLl9ib290c3RyYXAKK2ltcG9ydCBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbAogaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IGluc3BlY3QKQEAgLTIxMyw3ICsyMTQsNyBAQAogZGVmIGlzcGFja2FnZShwYXRoKToKICAgICAiIiJHdWVzcyB3aGV0aGVyIGEgcGF0aCByZWZlcnMgdG8gYSBwYWNrYWdlIGRpcmVjdG9yeS4iIiIKICAgICBpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgotICAgICAgICBmb3IgZXh0IGluICgnLnB5JywgJy5weWMnLCAnLnB5bycpOgorICAgICAgICBmb3IgZXh0IGluICgnLnB5JywgJy5weWMnKToKICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihwYXRoLCAnX19pbml0X18nICsgZXh0KSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICByZXR1cm4gRmFsc2UKQEAgLTI2NCw5ICsyNjUsOCBAQAogICAgICAgICAgICAgIyBYWFggV2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0byBwYXNzIGluIHRoZSBsb2FkZXIgaGVyZS4KICAgICAgICAgICAgIHNwZWMgPSBpbXBvcnRsaWIudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbignX190ZW1wX18nLCBmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXI9bG9hZGVyKQotICAgICAgICAgICAgX3NwZWMgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBfc3BlYy5sb2FkKCkKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fbG9hZChzcGVjKQogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ19fdGVtcF9fJ10KQEAgLTI5MywxNCArMjkzLDEzIEBACiAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpCiAgICAgbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSkKICAgICBpZiBpc19ieXRlY29kZToKLSAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLl9ib290c3RyYXAuU291cmNlbGVzc0ZpbGVMb2FkZXIobmFtZSwgcGF0aCkKKyAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwuU291cmNlbGVzc0ZpbGVMb2FkZXIobmFtZSwgcGF0aCkKICAgICBlbHNlOgotICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5Tb3VyY2VGaWxlTG9hZGVyKG5hbWUsIHBhdGgpCisgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLlNvdXJjZUZpbGVMb2FkZXIobmFtZSwgcGF0aCkKICAgICAjIFhYWCBXZSBwcm9iYWJseSBkb24ndCBuZWVkIHRvIHBhc3MgaW4gdGhlIGxvYWRlciBoZXJlLgogICAgIHNwZWMgPSBpbXBvcnRsaWIudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihuYW1lLCBwYXRoLCBsb2FkZXI9bG9hZGVyKQotICAgIF9zcGVjID0gaW1wb3J0bGliLl9ib290c3RyYXAuX1NwZWNNZXRob2RzKHNwZWMpCiAgICAgdHJ5OgotICAgICAgICByZXR1cm4gX3NwZWMubG9hZCgpCisgICAgICAgIHJldHVybiBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fbG9hZChzcGVjKQogICAgIGV4Y2VwdDoKICAgICAgICAgcmFpc2UgRXJyb3JEdXJpbmdJbXBvcnQocGF0aCwgc3lzLmV4Y19pbmZvKCkpCiAKQEAgLTE1OTEsNyArMTU5MCwxMCBAQAogICAgIGlmIGlzaW5zdGFuY2UodGhpbmcsIHN0cik6CiAgICAgICAgIG9iamVjdCA9IGxvY2F0ZSh0aGluZywgZm9yY2Vsb2FkKQogICAgICAgICBpZiBvYmplY3QgaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdubyBQeXRob24gZG9jdW1lbnRhdGlvbiBmb3VuZCBmb3IgJXInICUgdGhpbmcpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignJydcCitObyBQeXRob24gZG9jdW1lbnRhdGlvbiBmb3VuZCBmb3IgJXIuCitVc2UgaGVscCgpIHRvIGdldCB0aGUgaW50ZXJhY3RpdmUgaGVscCB1dGlsaXR5LgorVXNlIGhlbHAoc3RyKSBmb3IgaGVscCBvbiB0aGUgc3RyIGNsYXNzLicnJyAlIHRoaW5nKQogICAgICAgICByZXR1cm4gb2JqZWN0LCB0aGluZwogICAgIGVsc2U6CiAgICAgICAgIG5hbWUgPSBnZXRhdHRyKHRoaW5nLCAnX19uYW1lX18nLCBOb25lKQpAQCAtMTYzOCw5ICsxNjQwLDggQEAKICAgICB0cnk6CiAgICAgICAgIG9iamVjdCwgbmFtZSA9IHJlc29sdmUodGhpbmcsIGZvcmNlbG9hZCkKICAgICAgICAgcGFnZSA9IGh0bWwucGFnZShkZXNjcmliZShvYmplY3QpLCBodG1sLmRvY3VtZW50KG9iamVjdCwgbmFtZSkpCi0gICAgICAgIGZpbGUgPSBvcGVuKG5hbWUgKyAnLmh0bWwnLCAndycsIGVuY29kaW5nPSd1dGYtOCcpCi0gICAgICAgIGZpbGUud3JpdGUocGFnZSkKLSAgICAgICAgZmlsZS5jbG9zZSgpCisgICAgICAgIHdpdGggb3BlbihuYW1lICsgJy5odG1sJywgJ3cnLCBlbmNvZGluZz0ndXRmLTgnKSBhcyBmaWxlOgorICAgICAgICAgICAgZmlsZS53cml0ZShwYWdlKQogICAgICAgICBwcmludCgnd3JvdGUnLCBuYW1lICsgJy5odG1sJykKICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBFcnJvckR1cmluZ0ltcG9ydCkgYXMgdmFsdWU6CiAgICAgICAgIHByaW50KHZhbHVlKQpAQCAtMTgzNSw3ICsxODM2LDggQEAKICAgICAgICAgaWYgaW5zcGVjdC5zdGFjaygpWzFdWzNdID09ICc/JzoKICAgICAgICAgICAgIHNlbGYoKQogICAgICAgICAgICAgcmV0dXJuICcnCi0gICAgICAgIHJldHVybiAnPHB5ZG9jLkhlbHBlciBpbnN0YW5jZT4nCisgICAgICAgIHJldHVybiAnPCVzLiVzIGluc3RhbmNlPicgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18pCiAKICAgICBfR29JbnRlcmFjdGl2ZSA9IG9iamVjdCgpCiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHJlcXVlc3Q9X0dvSW50ZXJhY3RpdmUpOgpAQCAtMTg2MSw3ICsxODYzLDEwIEBACiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIHJlcXVlc3QgPSByZXBsYWNlKHJlcXVlc3QsICciJywgJycsICInIiwgJycpLnN0cmlwKCkKICAgICAgICAgICAgIGlmIHJlcXVlc3QubG93ZXIoKSBpbiAoJ3EnLCAncXVpdCcpOiBicmVhawotICAgICAgICAgICAgc2VsZi5oZWxwKHJlcXVlc3QpCisgICAgICAgICAgICBpZiByZXF1ZXN0ID09ICdoZWxwJzoKKyAgICAgICAgICAgICAgICBzZWxmLmludHJvKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5oZWxwKHJlcXVlc3QpCiAKICAgICBkZWYgZ2V0bGluZShzZWxmLCBwcm9tcHQpOgogICAgICAgICAiIiJSZWFkIG9uZSBsaW5lLCB1c2luZyBpbnB1dCgpIHdoZW4gYXBwcm9wcmlhdGUuIiIiCkBAIC0xODc1LDggKzE4ODAsNyBAQAogICAgIGRlZiBoZWxwKHNlbGYsIHJlcXVlc3QpOgogICAgICAgICBpZiB0eXBlKHJlcXVlc3QpIGlzIHR5cGUoJycpOgogICAgICAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3Quc3RyaXAoKQotICAgICAgICAgICAgaWYgcmVxdWVzdCA9PSAnaGVscCc6IHNlbGYuaW50cm8oKQotICAgICAgICAgICAgZWxpZiByZXF1ZXN0ID09ICdrZXl3b3Jkcyc6IHNlbGYubGlzdGtleXdvcmRzKCkKKyAgICAgICAgICAgIGlmIHJlcXVlc3QgPT0gJ2tleXdvcmRzJzogc2VsZi5saXN0a2V5d29yZHMoKQogICAgICAgICAgICAgZWxpZiByZXF1ZXN0ID09ICdzeW1ib2xzJzogc2VsZi5saXN0c3ltYm9scygpCiAgICAgICAgICAgICBlbGlmIHJlcXVlc3QgPT0gJ3RvcGljcyc6IHNlbGYubGlzdHRvcGljcygpCiAgICAgICAgICAgICBlbGlmIHJlcXVlc3QgPT0gJ21vZHVsZXMnOiBzZWxmLmxpc3Rtb2R1bGVzKCkKQEAgLTE4ODksNiArMTg5Myw3IEBACiAgICAgICAgICAgICBlbGlmIHJlcXVlc3QgaW4gc2VsZi5rZXl3b3Jkczogc2VsZi5zaG93dG9waWMocmVxdWVzdCkKICAgICAgICAgICAgIGVsaWYgcmVxdWVzdCBpbiBzZWxmLnRvcGljczogc2VsZi5zaG93dG9waWMocmVxdWVzdCkKICAgICAgICAgICAgIGVsaWYgcmVxdWVzdDogZG9jKHJlcXVlc3QsICdIZWxwIG9uICVzOicsIG91dHB1dD1zZWxmLl9vdXRwdXQpCisgICAgICAgICAgICBlbHNlOiBkb2Moc3RyLCAnSGVscCBvbiAlczonLCBvdXRwdXQ9c2VsZi5fb3V0cHV0KQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UocmVxdWVzdCwgSGVscGVyKTogc2VsZigpCiAgICAgICAgIGVsc2U6IGRvYyhyZXF1ZXN0LCAnSGVscCBvbiAlczonLCBvdXRwdXQ9c2VsZi5fb3V0cHV0KQogICAgICAgICBzZWxmLm91dHB1dC53cml0ZSgnXG4nKQpAQCAtMjA4NCw5ICsyMDg5LDggQEAKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggPSBOb25lCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgX3NwZWMgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykKICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlID0gX3NwZWMubG9hZCgpCisgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fbG9hZChzcGVjKQogICAgICAgICAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBvbmVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZXJyb3IobW9kbmFtZSkKZGlmZiAtLWdpdCBhL0xpYi9weWRvY19kYXRhL3RvcGljcy5weSBiL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQppbmRleCA4YzU1Nzc3Li4yNTBiZmQzIDEwMDY0NAotLS0gYS9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKKysrIGIvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CkBAIC0xLDEzICsxLDEzIEBACiAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQotIyBBdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueCBvbiBTYXQgRGVjIDE5IDE5OjI3OjMyIDIwMTUKKyMgQXV0b2dlbmVyYXRlZCBieSBTcGhpbnggb24gU2F0IERlYyAgNSAxNzowMjo0OSAyMDE1CiB0b3BpY3MgPSB7J2Fzc2VydCc6IHUnXG5UaGUgImFzc2VydCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cbkFzc2VydCBzdGF0ZW1lbnRzIGFyZSBhIGNvbnZlbmllbnQgd2F5IHRvIGluc2VydCBkZWJ1Z2dpbmcgYXNzZXJ0aW9uc1xuaW50byBhIHByb2dyYW06XG5cbiAgIGFzc2VydF9zdG10IDo6PSAiYXNzZXJ0IiBleHByZXNzaW9uIFsiLCIgZXhwcmVzc2lvbl1cblxuVGhlIHNpbXBsZSBmb3JtLCAiYXNzZXJ0IGV4cHJlc3Npb24iLCBpcyBlcXVpdmFsZW50IHRvXG5cbiAgIGlmIF9fZGVidWdfXzpcbiAgICAgIGlmIG5vdCBleHByZXNzaW9uOiByYWlzZSBBc3NlcnRpb25FcnJvclxuXG5UaGUgZXh0ZW5kZWQgZm9ybSwgImFzc2VydCBleHByZXNzaW9uMSwgZXhwcmVzc2lvbjIiLCBpcyBlcXVpdmFsZW50IHRvXG5cbiAgIGlmIF9fZGVidWdfXzpcbiAgICAgIGlmIG5vdCBleHByZXNzaW9uMTogcmFpc2UgQXNzZXJ0aW9uRXJyb3IoZXhwcmVzc2lvbjIpXG5cblRoZXNlIGVxdWl2YWxlbmNlcyBhc3N1bWUgdGhhdCAiX19kZWJ1Z19fIiBhbmQgIkFzc2VydGlvbkVycm9yIiByZWZlclxudG8gdGhlIGJ1aWx0LWluIHZhcmlhYmxlcyB3aXRoIHRob3NlIG5hbWVzLiAgSW4gdGhlIGN1cnJlbnRcbmltcGxlbWVudGF0aW9uLCB0aGUgYnVpbHQtaW4gdmFyaWFibGUgIl9fZGVidWdfXyIgaXMgIlRydWUiIHVuZGVyXG5ub3JtYWwgY2lyY3Vtc3RhbmNlcywgIkZhbHNlIiB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgKGNvbW1hbmRcbmxpbmUgb3B0aW9uIC1PKS4gIFRoZSBjdXJyZW50IGNvZGUgZ2VuZXJhdG9yIGVtaXRzIG5vIGNvZGUgZm9yIGFuXG5hc3NlcnQgc3RhdGVtZW50IHdoZW4gb3B0aW1pemF0aW9uIGlzIHJlcXVlc3RlZCBhdCBjb21waWxlIHRpbWUuICBOb3RlXG50aGF0IGl0IGlzIHVubmVjZXNzYXJ5IHRvIGluY2x1ZGUgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgZXhwcmVzc2lvblxudGhhdCBmYWlsZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2U7IGl0IHdpbGwgYmUgZGlzcGxheWVkIGFzIHBhcnQgb2YgdGhlXG5zdGFjayB0cmFjZS5cblxuQXNzaWdubWVudHMgdG8gIl9fZGVidWdfXyIgYXJlIGlsbGVnYWwuICBUaGUgdmFsdWUgZm9yIHRoZSBidWlsdC1pblxudmFyaWFibGUgaXMgZGV0ZXJtaW5lZCB3aGVuIHRoZSBpbnRlcnByZXRlciBzdGFydHMuXG4nLAotICdhc3NpZ25tZW50JzogdSdcbkFzc2lnbm1lbnQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKioqXG5cbkFzc2lnbm1lbnQgc3RhdGVtZW50cyBhcmUgdXNlZCB0byAocmUpYmluZCBuYW1lcyB0byB2YWx1ZXMgYW5kIHRvXG5tb2RpZnkgYXR0cmlidXRlcyBvciBpdGVtcyBvZiBtdXRhYmxlIG9iamVjdHM6XG5cbiAgIGFzc2lnbm1lbnRfc3RtdCA6Oj0gKHRhcmdldF9saXN0ICI9IikrIChleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuICAgdGFyZ2V0X2xpc3QgICAgIDo6PSB0YXJnZXQgKCIsIiB0YXJnZXQpKiBbIiwiXVxuICAgdGFyZ2V0ICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4gICAgICAgICAgICAgIHwgIigiIHRhcmdldF9saXN0ICIpIlxuICAgICAgICAgICAgICB8ICJbIiB0YXJnZXRfbGlzdCAiXSJcbiAgICAgICAgICAgICAgfCBhdHRyaWJ1dGVyZWZcbiAgICAgICAgICAgICAgfCBzdWJzY3JpcHRpb25cbiAgICAgICAgICAgICAgfCBzbGljaW5nXG4gICAgICAgICAgICAgIHwgIioiIHRhcmdldFxuXG4oU2VlIHNlY3Rpb24gKlByaW1hcmllcyogZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgZm9yXG4qYXR0cmlidXRlcmVmKiwgKnN1YnNjcmlwdGlvbiosIGFuZCAqc2xpY2luZyouKVxuXG5BbiBhc3NpZ25tZW50IHN0YXRlbWVudCBldmFsdWF0ZXMgdGhlIGV4cHJlc3Npb24gbGlzdCAocmVtZW1iZXIgdGhhdFxudGhpcyBjYW4gYmUgYSBzaW5nbGUgZXhwcmVzc2lvbiBvciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB0aGUgbGF0dGVyXG55aWVsZGluZyBhIHR1cGxlKSBhbmQgYXNzaWducyB0aGUgc2luZ2xlIHJlc3VsdGluZyBvYmplY3QgdG8gZWFjaCBvZlxudGhlIHRhcmdldCBsaXN0cywgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuXG5Bc3NpZ25tZW50IGlzIGRlZmluZWQgcmVjdXJzaXZlbHkgZGVwZW5kaW5nIG9uIHRoZSBmb3JtIG9mIHRoZSB0YXJnZXRcbihsaXN0KS4gV2hlbiBhIHRhcmdldCBpcyBwYXJ0IG9mIGEgbXV0YWJsZSBvYmplY3QgKGFuIGF0dHJpYnV0ZVxucmVmZXJlbmNlLCBzdWJzY3JpcHRpb24gb3Igc2xpY2luZyksIHRoZSBtdXRhYmxlIG9iamVjdCBtdXN0XG51bHRpbWF0ZWx5IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQgYW5kIGRlY2lkZSBhYm91dCBpdHMgdmFsaWRpdHksIGFuZFxubWF5IHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgYXNzaWdubWVudCBpcyB1bmFjY2VwdGFibGUuICBUaGUgcnVsZXNcbm9ic2VydmVkIGJ5IHZhcmlvdXMgdHlwZXMgYW5kIHRoZSBleGNlcHRpb25zIHJhaXNlZCBhcmUgZ2l2ZW4gd2l0aCB0aGVcbmRlZmluaXRpb24gb2YgdGhlIG9iamVjdCB0eXBlcyAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlXG5oaWVyYXJjaHkqKS5cblxuQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSB0YXJnZXQgbGlzdCwgb3B0aW9uYWxseSBlbmNsb3NlZCBpblxucGFyZW50aGVzZXMgb3Igc3F1YXJlIGJyYWNrZXRzLCBpcyByZWN1cnNpdmVseSBkZWZpbmVkIGFzIGZvbGxvd3MuXG5cbiogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGEgc2luZ2xlIHRhcmdldDogVGhlIG9iamVjdCBpcyBhc3NpZ25lZCB0b1xuICB0aGF0IHRhcmdldC5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0YXJnZXRzOiBUaGVcbiAgb2JqZWN0IG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXMgYXMgdGhlcmVcbiAgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgdGhlIGl0ZW1zIGFyZSBhc3NpZ25lZCwgZnJvbVxuICBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG4gICogSWYgdGhlIHRhcmdldCBsaXN0IGNvbnRhaW5zIG9uZSB0YXJnZXQgcHJlZml4ZWQgd2l0aCBhblxuICAgIGFzdGVyaXNrLCBjYWxsZWQgYSAic3RhcnJlZCIgdGFyZ2V0OiBUaGUgb2JqZWN0IG11c3QgYmUgYSBzZXF1ZW5jZVxuICAgIHdpdGggYXQgbGVhc3QgYXMgbWFueSBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0XG4gICAgbGlzdCwgbWludXMgb25lLiAgVGhlIGZpcnN0IGl0ZW1zIG9mIHRoZSBzZXF1ZW5jZSBhcmUgYXNzaWduZWQsXG4gICAgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgdGFyZ2V0cyBiZWZvcmUgdGhlIHN0YXJyZWQgdGFyZ2V0LiAgVGhlXG4gICAgZmluYWwgaXRlbXMgb2YgdGhlIHNlcXVlbmNlIGFyZSBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0cyBhZnRlciB0aGVcbiAgICBzdGFycmVkIHRhcmdldC4gIEEgbGlzdCBvZiB0aGUgcmVtYWluaW5nIGl0ZW1zIGluIHRoZSBzZXF1ZW5jZSBpc1xuICAgIHRoZW4gYXNzaWduZWQgdG8gdGhlIHN0YXJyZWQgdGFyZ2V0ICh0aGUgbGlzdCBjYW4gYmUgZW1wdHkpLlxuXG4gICogRWxzZTogVGhlIG9iamVjdCBtdXN0IGJlIGEgc2VxdWVuY2Ugd2l0aCB0aGUgc2FtZSBudW1iZXIgb2ZcbiAgICBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCB0aGUgaXRlbXMgYXJlXG4gICAgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cblxuQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSBzaW5nbGUgdGFyZ2V0IGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXNcbmZvbGxvd3MuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhbiBpZGVudGlmaWVyIChuYW1lKTpcblxuICAqIElmIHRoZSBuYW1lIGRvZXMgbm90IG9jY3VyIGluIGEgImdsb2JhbCIgb3IgIm5vbmxvY2FsIiBzdGF0ZW1lbnRcbiAgICBpbiB0aGUgY3VycmVudCBjb2RlIGJsb2NrOiB0aGUgbmFtZSBpcyBib3VuZCB0byB0aGUgb2JqZWN0IGluIHRoZVxuICAgIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlLlxuXG4gICogT3RoZXJ3aXNlOiB0aGUgbmFtZSBpcyBib3VuZCB0byB0aGUgb2JqZWN0IGluIHRoZSBnbG9iYWxcbiAgICBuYW1lc3BhY2Ugb3IgdGhlIG91dGVyIG5hbWVzcGFjZSBkZXRlcm1pbmVkIGJ5ICJub25sb2NhbCIsXG4gICAgcmVzcGVjdGl2ZWx5LlxuXG4gIFRoZSBuYW1lIGlzIHJlYm91bmQgaWYgaXQgd2FzIGFscmVhZHkgYm91bmQuICBUaGlzIG1heSBjYXVzZSB0aGVcbiAgcmVmZXJlbmNlIGNvdW50IGZvciB0aGUgb2JqZWN0IHByZXZpb3VzbHkgYm91bmQgdG8gdGhlIG5hbWUgdG8gcmVhY2hcbiAgemVybywgY2F1c2luZyB0aGUgb2JqZWN0IHRvIGJlIGRlYWxsb2NhdGVkIGFuZCBpdHMgZGVzdHJ1Y3RvciAoaWYgaXRcbiAgaGFzIG9uZSkgdG8gYmUgY2FsbGVkLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYSB0YXJnZXQgbGlzdCBlbmNsb3NlZCBpbiBwYXJlbnRoZXNlcyBvciBpblxuICBzcXVhcmUgYnJhY2tldHM6IFRoZSBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYWJsZSB3aXRoIHRoZSBzYW1lIG51bWJlclxuICBvZiBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCBpdHMgaXRlbXMgYXJlXG4gIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldHMuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhbiBhdHRyaWJ1dGUgcmVmZXJlbmNlOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluXG4gIHRoZSByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGFuIG9iamVjdCB3aXRoXG4gIGFzc2lnbmFibGUgYXR0cmlidXRlczsgaWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsICJUeXBlRXJyb3IiIGlzXG4gIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG9cbiAgdGhlIGdpdmVuIGF0dHJpYnV0ZTsgaWYgaXQgY2Fubm90IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQsIGl0IHJhaXNlc1xuICBhbiBleGNlcHRpb24gKHVzdWFsbHkgYnV0IG5vdCBuZWNlc3NhcmlseSAiQXR0cmlidXRlRXJyb3IiKS5cblxuICBOb3RlOiBJZiB0aGUgb2JqZWN0IGlzIGEgY2xhc3MgaW5zdGFuY2UgYW5kIHRoZSBhdHRyaWJ1dGUgcmVmZXJlbmNlXG4gIG9jY3VycyBvbiBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLCB0aGUgUkhTIGV4cHJlc3Npb24sXG4gICJhLngiIGNhbiBhY2Nlc3MgZWl0aGVyIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBvciAoaWYgbm8gaW5zdGFuY2VcbiAgYXR0cmlidXRlIGV4aXN0cykgYSBjbGFzcyBhdHRyaWJ1dGUuICBUaGUgTEhTIHRhcmdldCAiYS54IiBpcyBhbHdheXNcbiAgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LiAgVGh1cywgdGhlXG4gIHR3byBvY2N1cnJlbmNlcyBvZiAiYS54IiBkbyBub3QgbmVjZXNzYXJpbHkgcmVmZXIgdG8gdGhlIHNhbWVcbiAgYXR0cmlidXRlOiBpZiB0aGUgUkhTIGV4cHJlc3Npb24gcmVmZXJzIHRvIGEgY2xhc3MgYXR0cmlidXRlLCB0aGVcbiAgTEhTIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgYXR0cmlidXRlIGFzIHRoZSB0YXJnZXQgb2YgdGhlXG4gIGFzc2lnbm1lbnQ6XG5cbiAgICAgY2xhc3MgQ2xzOlxuICAgICAgICAgeCA9IDMgICAgICAgICAgICAgIyBjbGFzcyB2YXJpYWJsZVxuICAgICBpbnN0ID0gQ2xzKClcbiAgICAgaW5zdC54ID0gaW5zdC54ICsgMSAgICMgd3JpdGVzIGluc3QueCBhcyA0IGxlYXZpbmcgQ2xzLnggYXMgM1xuXG4gIFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgYXBwbHkgdG8gZGVzY3JpcHRvclxuICBhdHRyaWJ1dGVzLCBzdWNoIGFzIHByb3BlcnRpZXMgY3JlYXRlZCB3aXRoICJwcm9wZXJ0eSgpIi5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGVpdGhlciBhIG11dGFibGUgc2VxdWVuY2VcbiAgb2JqZWN0IChzdWNoIGFzIGEgbGlzdCkgb3IgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLlxuICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuXG4gIElmIHRoZSBwcmltYXJ5IGlzIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3QgKHN1Y2ggYXMgYSBsaXN0KSwgdGhlXG4gIHN1YnNjcmlwdCBtdXN0IHlpZWxkIGFuIGludGVnZXIuICBJZiBpdCBpcyBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlXG4gIGludGVnZXIgbGVzcyB0aGFuIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgaXMgYXNrZWRcbiAgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG8gaXRzIGl0ZW0gd2l0aCB0aGF0IGluZGV4LiAgSWYgdGhlXG4gIGluZGV4IGlzIG91dCBvZiByYW5nZSwgIkluZGV4RXJyb3IiIGlzIHJhaXNlZCAoYXNzaWdubWVudCB0byBhXG4gIHN1YnNjcmlwdGVkIHNlcXVlbmNlIGNhbm5vdCBhZGQgbmV3IGl0ZW1zIHRvIGEgbGlzdCkuXG5cbiAgSWYgdGhlIHByaW1hcnkgaXMgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLCB0aGVcbiAgc3Vic2NyaXB0IG11c3QgaGF2ZSBhIHR5cGUgY29tcGF0aWJsZSB3aXRoIHRoZSBtYXBwaW5nXCdzIGtleSB0eXBlLFxuICBhbmQgdGhlIG1hcHBpbmcgaXMgdGhlbiBhc2tlZCB0byBjcmVhdGUgYSBrZXkvZGF0dW0gcGFpciB3aGljaCBtYXBzXG4gIHRoZSBzdWJzY3JpcHQgdG8gdGhlIGFzc2lnbmVkIG9iamVjdC4gIFRoaXMgY2FuIGVpdGhlciByZXBsYWNlIGFuXG4gIGV4aXN0aW5nIGtleS92YWx1ZSBwYWlyIHdpdGggdGhlIHNhbWUga2V5IHZhbHVlLCBvciBpbnNlcnQgYSBuZXdcbiAga2V5L3ZhbHVlIHBhaXIgKGlmIG5vIGtleSB3aXRoIHRoZSBzYW1lIHZhbHVlIGV4aXN0ZWQpLlxuXG4gIEZvciB1c2VyLWRlZmluZWQgb2JqZWN0cywgdGhlICJfX3NldGl0ZW1fXygpIiBtZXRob2QgaXMgY2FsbGVkIHdpdGhcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYSBzbGljaW5nOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3RcbiAgKHN1Y2ggYXMgYSBsaXN0KS4gIFRoZSBhc3NpZ25lZCBvYmplY3Qgc2hvdWxkIGJlIGEgc2VxdWVuY2Ugb2JqZWN0XG4gIG9mIHRoZSBzYW1lIHR5cGUuICBOZXh0LCB0aGUgbG93ZXIgYW5kIHVwcGVyIGJvdW5kIGV4cHJlc3Npb25zIGFyZVxuICBldmFsdWF0ZWQsIGluc29mYXIgdGhleSBhcmUgcHJlc2VudDsgZGVmYXVsdHMgYXJlIHplcm8gYW5kIHRoZVxuICBzZXF1ZW5jZVwncyBsZW5ndGguICBUaGUgYm91bmRzIHNob3VsZCBldmFsdWF0ZSB0byBpbnRlZ2Vycy4gSWZcbiAgZWl0aGVyIGJvdW5kIGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2VcJ3MgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlXG4gIHJlc3VsdGluZyBib3VuZHMgYXJlIGNsaXBwZWQgdG8gbGllIGJldHdlZW4gemVybyBhbmQgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCwgaW5jbHVzaXZlLiAgRmluYWxseSwgdGhlIHNlcXVlbmNlIG9iamVjdCBpcyBhc2tlZCB0byByZXBsYWNlXG4gIHRoZSBzbGljZSB3aXRoIHRoZSBpdGVtcyBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UuICBUaGUgbGVuZ3RoIG9mXG4gIHRoZSBzbGljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxlbmd0aCBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UsXG4gIHRodXMgY2hhbmdpbmcgdGhlIGxlbmd0aCBvZiB0aGUgdGFyZ2V0IHNlcXVlbmNlLCBpZiB0aGUgdGFyZ2V0XG4gIHNlcXVlbmNlIGFsbG93cyBpdC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhlXG5zeW50YXggZm9yIHRhcmdldHMgaXMgdGFrZW4gdG8gYmUgdGhlIHNhbWUgYXMgZm9yIGV4cHJlc3Npb25zLCBhbmRcbmludmFsaWQgc3ludGF4IGlzIHJlamVjdGVkIGR1cmluZyB0aGUgY29kZSBnZW5lcmF0aW9uIHBoYXNlLCBjYXVzaW5nXG5sZXNzIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzLlxuXG5BbHRob3VnaCB0aGUgZGVmaW5pdGlvbiBvZiBhc3NpZ25tZW50IGltcGxpZXMgdGhhdCBvdmVybGFwcyBiZXR3ZWVuXG50aGUgbGVmdC1oYW5kIHNpZGUgYW5kIHRoZSByaWdodC1oYW5kIHNpZGUgYXJlIFwnc2ltdWx0YW5lbm91c1wnIChmb3JcbmV4YW1wbGUgImEsIGIgPSBiLCBhIiBzd2FwcyB0d28gdmFyaWFibGVzKSwgb3ZlcmxhcHMgKndpdGhpbiogdGhlXG5jb2xsZWN0aW9uIG9mIGFzc2lnbmVkLXRvIHZhcmlhYmxlcyBvY2N1ciBsZWZ0LXRvLXJpZ2h0LCBzb21ldGltZXNcbnJlc3VsdGluZyBpbiBjb25mdXNpb24uICBGb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgcHJvZ3JhbSBwcmludHNcbiJbMCwgMl0iOlxuXG4gICB4ID0gWzAsIDFdXG4gICBpID0gMFxuICAgaSwgeFtpXSA9IDEsIDIgICAgICAgICAjIGkgaXMgdXBkYXRlZCwgdGhlbiB4W2ldIGlzIHVwZGF0ZWRcbiAgIHByaW50KHgpXG5cblNlZSBhbHNvOiAqKlBFUCAzMTMyKiogLSBFeHRlbmRlZCBJdGVyYWJsZSBVbnBhY2tpbmdcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlICIqdGFyZ2V0IiBmZWF0dXJlLlxuXG5cbkF1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsIG9mIGFcbmJpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuXG4gICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBvZiB0aGUgbGFzdCB0aHJlZVxuc3ltYm9scy4pXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV2YWx1YXRlcyB0aGUgdGFyZ2V0ICh3aGljaCwgdW5saWtlIG5vcm1hbFxuYXNzaWdubWVudCBzdGF0ZW1lbnRzLCBjYW5ub3QgYmUgYW4gdW5wYWNraW5nKSBhbmQgdGhlIGV4cHJlc3Npb25cbmxpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGFzc2lnbm1lbnRcbm9uIHRoZSB0d28gb3BlcmFuZHMsIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIG9yaWdpbmFsIHRhcmdldC5cblRoZSB0YXJnZXQgaXMgb25seSBldmFsdWF0ZWQgb25jZS5cblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlICJ4ICs9IDEiIGNhbiBiZSByZXdyaXR0ZW4gYXNcbiJ4ID0geCArIDEiIHRvIGFjaGlldmUgYSBzaW1pbGFyLCBidXQgbm90IGV4YWN0bHkgZXF1YWwgZWZmZWN0LiBJbiB0aGVcbmF1Z21lbnRlZCB2ZXJzaW9uLCAieCIgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gQWxzbywgd2hlbiBwb3NzaWJsZSxcbnRoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXQgcmF0aGVyIHRoYW5cbmNyZWF0aW5nIGEgbmV3IG9iamVjdCBhbmQgYXNzaWduaW5nIHRoYXQgdG8gdGhlIHRhcmdldCwgdGhlIG9sZCBvYmplY3RcbmlzIG1vZGlmaWVkIGluc3RlYWQuXG5cblVubGlrZSBub3JtYWwgYXNzaWdubWVudHMsIGF1Z21lbnRlZCBhc3NpZ25tZW50cyBldmFsdWF0ZSB0aGUgbGVmdC1cbmhhbmQgc2lkZSAqYmVmb3JlKiBldmFsdWF0aW5nIHRoZSByaWdodC1oYW5kIHNpZGUuICBGb3IgZXhhbXBsZSwgImFbaV1cbis9IGYoeCkiIGZpcnN0IGxvb2tzLXVwICJhW2ldIiwgdGhlbiBpdCBldmFsdWF0ZXMgImYoeCkiIGFuZCBwZXJmb3Jtc1xudGhlIGFkZGl0aW9uLCBhbmQgbGFzdGx5LCBpdCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRvICJhW2ldIi5cblxuV2l0aCB0aGUgZXhjZXB0aW9uIG9mIGFzc2lnbmluZyB0byB0dXBsZXMgYW5kIG11bHRpcGxlIHRhcmdldHMgaW4gYVxuc2luZ2xlIHN0YXRlbWVudCwgdGhlIGFzc2lnbm1lbnQgZG9uZSBieSBhdWdtZW50ZWQgYXNzaWdubWVudFxuc3RhdGVtZW50cyBpcyBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBub3JtYWwgYXNzaWdubWVudHMuIFNpbWlsYXJseSxcbndpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgcG9zc2libGUgKmluLXBsYWNlKiBiZWhhdmlvciwgdGhlIGJpbmFyeVxub3BlcmF0aW9uIHBlcmZvcm1lZCBieSBhdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgbm9ybWFsXG5iaW5hcnkgb3BlcmF0aW9ucy5cblxuRm9yIHRhcmdldHMgd2hpY2ggYXJlIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCB0aGUgc2FtZSAqY2F2ZWF0IGFib3V0XG5jbGFzcyBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyogYXBwbGllcyBhcyBmb3IgcmVndWxhciBhc3NpZ25tZW50cy5cbicsCisgJ2Fzc2lnbm1lbnQnOiB1J1xuQXNzaWdubWVudCBzdGF0ZW1lbnRzXG4qKioqKioqKioqKioqKioqKioqKipcblxuQXNzaWdubWVudCBzdGF0ZW1lbnRzIGFyZSB1c2VkIHRvIChyZSliaW5kIG5hbWVzIHRvIHZhbHVlcyBhbmQgdG9cbm1vZGlmeSBhdHRyaWJ1dGVzIG9yIGl0ZW1zIG9mIG11dGFibGUgb2JqZWN0czpcblxuICAgYXNzaWdubWVudF9zdG10IDo6PSAodGFyZ2V0X2xpc3QgIj0iKSsgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICB0YXJnZXRfbGlzdCAgICAgOjo9IHRhcmdldCAoIiwiIHRhcmdldCkqIFsiLCJdXG4gICB0YXJnZXQgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgfCAiKCIgdGFyZ2V0X2xpc3QgIikiXG4gICAgICAgICAgICAgIHwgIlsiIHRhcmdldF9saXN0ICJdIlxuICAgICAgICAgICAgICB8IGF0dHJpYnV0ZXJlZlxuICAgICAgICAgICAgICB8IHN1YnNjcmlwdGlvblxuICAgICAgICAgICAgICB8IHNsaWNpbmdcbiAgICAgICAgICAgICAgfCAiKiIgdGFyZ2V0XG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3JcbiphdHRyaWJ1dGVyZWYqLCAqc3Vic2NyaXB0aW9uKiwgYW5kICpzbGljaW5nKi4pXG5cbkFuIGFzc2lnbm1lbnQgc3RhdGVtZW50IGV2YWx1YXRlcyB0aGUgZXhwcmVzc2lvbiBsaXN0IChyZW1lbWJlciB0aGF0XG50aGlzIGNhbiBiZSBhIHNpbmdsZSBleHByZXNzaW9uIG9yIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIHRoZSBsYXR0ZXJcbnlpZWxkaW5nIGEgdHVwbGUpIGFuZCBhc3NpZ25zIHRoZSBzaW5nbGUgcmVzdWx0aW5nIG9iamVjdCB0byBlYWNoIG9mXG50aGUgdGFyZ2V0IGxpc3RzLCBmcm9tIGxlZnQgdG8gcmlnaHQuXG5cbkFzc2lnbm1lbnQgaXMgZGVmaW5lZCByZWN1cnNpdmVseSBkZXBlbmRpbmcgb24gdGhlIGZvcm0gb2YgdGhlIHRhcmdldFxuKGxpc3QpLiBXaGVuIGEgdGFyZ2V0IGlzIHBhcnQgb2YgYSBtdXRhYmxlIG9iamVjdCAoYW4gYXR0cmlidXRlXG5yZWZlcmVuY2UsIHN1YnNjcmlwdGlvbiBvciBzbGljaW5nKSwgdGhlIG11dGFibGUgb2JqZWN0IG11c3RcbnVsdGltYXRlbHkgcGVyZm9ybSB0aGUgYXNzaWdubWVudCBhbmQgZGVjaWRlIGFib3V0IGl0cyB2YWxpZGl0eSwgYW5kXG5tYXkgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSBhc3NpZ25tZW50IGlzIHVuYWNjZXB0YWJsZS4gIFRoZSBydWxlc1xub2JzZXJ2ZWQgYnkgdmFyaW91cyB0eXBlcyBhbmQgdGhlIGV4Y2VwdGlvbnMgcmFpc2VkIGFyZSBnaXZlbiB3aXRoIHRoZVxuZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGVzIChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGVcbmhpZXJhcmNoeSopLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHRhcmdldCBsaXN0LCBvcHRpb25hbGx5IGVuY2xvc2VkIGluXG5wYXJlbnRoZXNlcyBvciBzcXVhcmUgYnJhY2tldHMsIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXMgZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBzaW5nbGUgdGFyZ2V0OiBUaGUgb2JqZWN0IGlzIGFzc2lnbmVkIHRvXG4gIHRoYXQgdGFyZ2V0LlxuXG4qIElmIHRoZSB0YXJnZXQgbGlzdCBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRhcmdldHM6IFRoZVxuICBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYWJsZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtcyBhcyB0aGVyZVxuICBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCB0aGUgaXRlbXMgYXJlIGFzc2lnbmVkLCBmcm9tXG4gIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldHMuXG5cbiAgKiBJZiB0aGUgdGFyZ2V0IGxpc3QgY29udGFpbnMgb25lIHRhcmdldCBwcmVmaXhlZCB3aXRoIGFuXG4gICAgYXN0ZXJpc2ssIGNhbGxlZCBhICJzdGFycmVkIiB0YXJnZXQ6IFRoZSBvYmplY3QgbXVzdCBiZSBhIHNlcXVlbmNlXG4gICAgd2l0aCBhdCBsZWFzdCBhcyBtYW55IGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXRcbiAgICBsaXN0LCBtaW51cyBvbmUuICBUaGUgZmlyc3QgaXRlbXMgb2YgdGhlIHNlcXVlbmNlIGFyZSBhc3NpZ25lZCxcbiAgICBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSB0YXJnZXRzIGJlZm9yZSB0aGUgc3RhcnJlZCB0YXJnZXQuICBUaGVcbiAgICBmaW5hbCBpdGVtcyBvZiB0aGUgc2VxdWVuY2UgYXJlIGFzc2lnbmVkIHRvIHRoZSB0YXJnZXRzIGFmdGVyIHRoZVxuICAgIHN0YXJyZWQgdGFyZ2V0LiAgQSBsaXN0IG9mIHRoZSByZW1haW5pbmcgaXRlbXMgaW4gdGhlIHNlcXVlbmNlIGlzXG4gICAgdGhlbiBhc3NpZ25lZCB0byB0aGUgc3RhcnJlZCB0YXJnZXQgKHRoZSBsaXN0IGNhbiBiZSBlbXB0eSkuXG5cbiAgKiBFbHNlOiBUaGUgb2JqZWN0IG11c3QgYmUgYSBzZXF1ZW5jZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZlxuICAgIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmVcbiAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHNpbmdsZSB0YXJnZXQgaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCBhc1xuZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGFuIGlkZW50aWZpZXIgKG5hbWUpOlxuXG4gICogSWYgdGhlIG5hbWUgZG9lcyBub3Qgb2NjdXIgaW4gYSAiZ2xvYmFsIiBvciAibm9ubG9jYWwiIHN0YXRlbWVudFxuICAgIGluIHRoZSBjdXJyZW50IGNvZGUgYmxvY2s6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlXG4gICAgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UuXG5cbiAgKiBPdGhlcndpc2U6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlIGdsb2JhbFxuICAgIG5hbWVzcGFjZSBvciB0aGUgb3V0ZXIgbmFtZXNwYWNlIGRldGVybWluZWQgYnkgIm5vbmxvY2FsIixcbiAgICByZXNwZWN0aXZlbHkuXG5cbiAgVGhlIG5hbWUgaXMgcmVib3VuZCBpZiBpdCB3YXMgYWxyZWFkeSBib3VuZC4gIFRoaXMgbWF5IGNhdXNlIHRoZVxuICByZWZlcmVuY2UgY291bnQgZm9yIHRoZSBvYmplY3QgcHJldmlvdXNseSBib3VuZCB0byB0aGUgbmFtZSB0byByZWFjaFxuICB6ZXJvLCBjYXVzaW5nIHRoZSBvYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQgYW5kIGl0cyBkZXN0cnVjdG9yIChpZiBpdFxuICBoYXMgb25lKSB0byBiZSBjYWxsZWQuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhIHRhcmdldCBsaXN0IGVuY2xvc2VkIGluIHBhcmVudGhlc2VzIG9yIGluXG4gIHNxdWFyZSBicmFja2V0czogVGhlIG9iamVjdCBtdXN0IGJlIGFuIGl0ZXJhYmxlIHdpdGggdGhlIHNhbWUgbnVtYmVyXG4gIG9mIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgYW5kIGl0cyBpdGVtcyBhcmVcbiAgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGFuIGF0dHJpYnV0ZSByZWZlcmVuY2U6IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW5cbiAgdGhlIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgYW4gb2JqZWN0IHdpdGhcbiAgYXNzaWduYWJsZSBhdHRyaWJ1dGVzOyBpZiB0aGlzIGlzIG5vdCB0aGUgY2FzZSwgIlR5cGVFcnJvciIgaXNcbiAgcmFpc2VkLiAgVGhhdCBvYmplY3QgaXMgdGhlbiBhc2tlZCB0byBhc3NpZ24gdGhlIGFzc2lnbmVkIG9iamVjdCB0b1xuICB0aGUgZ2l2ZW4gYXR0cmlidXRlOyBpZiBpdCBjYW5ub3QgcGVyZm9ybSB0aGUgYXNzaWdubWVudCwgaXQgcmFpc2VzXG4gIGFuIGV4Y2VwdGlvbiAodXN1YWxseSBidXQgbm90IG5lY2Vzc2FyaWx5ICJBdHRyaWJ1dGVFcnJvciIpLlxuXG4gIE5vdGU6IElmIHRoZSBvYmplY3QgaXMgYSBjbGFzcyBpbnN0YW5jZSBhbmQgdGhlIGF0dHJpYnV0ZSByZWZlcmVuY2VcbiAgb2NjdXJzIG9uIGJvdGggc2lkZXMgb2YgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IsIHRoZSBSSFMgZXhwcmVzc2lvbixcbiAgImEueCIgY2FuIGFjY2VzcyBlaXRoZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG9yIChpZiBubyBpbnN0YW5jZVxuICBhdHRyaWJ1dGUgZXhpc3RzKSBhIGNsYXNzIGF0dHJpYnV0ZS4gIFRoZSBMSFMgdGFyZ2V0ICJhLngiIGlzIGFsd2F5c1xuICBzZXQgYXMgYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBjcmVhdGluZyBpdCBpZiBuZWNlc3NhcnkuICBUaHVzLCB0aGVcbiAgdHdvIG9jY3VycmVuY2VzIG9mICJhLngiIGRvIG5vdCBuZWNlc3NhcmlseSByZWZlciB0byB0aGUgc2FtZVxuICBhdHRyaWJ1dGU6IGlmIHRoZSBSSFMgZXhwcmVzc2lvbiByZWZlcnMgdG8gYSBjbGFzcyBhdHRyaWJ1dGUsIHRoZVxuICBMSFMgY3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBhdHRyaWJ1dGUgYXMgdGhlIHRhcmdldCBvZiB0aGVcbiAgYXNzaWdubWVudDpcblxuICAgICBjbGFzcyBDbHM6XG4gICAgICAgICB4ID0gMyAgICAgICAgICAgICAjIGNsYXNzIHZhcmlhYmxlXG4gICAgIGluc3QgPSBDbHMoKVxuICAgICBpbnN0LnggPSBpbnN0LnggKyAxICAgIyB3cml0ZXMgaW5zdC54IGFzIDQgbGVhdmluZyBDbHMueCBhcyAzXG5cbiAgVGhpcyBkZXNjcmlwdGlvbiBkb2VzIG5vdCBuZWNlc3NhcmlseSBhcHBseSB0byBkZXNjcmlwdG9yXG4gIGF0dHJpYnV0ZXMsIHN1Y2ggYXMgcHJvcGVydGllcyBjcmVhdGVkIHdpdGggInByb3BlcnR5KCkiLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYSBzdWJzY3JpcHRpb246IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW4gdGhlXG4gIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgZWl0aGVyIGEgbXV0YWJsZSBzZXF1ZW5jZVxuICBvYmplY3QgKHN1Y2ggYXMgYSBsaXN0KSBvciBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSkuXG4gIE5leHQsIHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQuXG5cbiAgSWYgdGhlIHByaW1hcnkgaXMgYSBtdXRhYmxlIHNlcXVlbmNlIG9iamVjdCAoc3VjaCBhcyBhIGxpc3QpLCB0aGVcbiAgc3Vic2NyaXB0IG11c3QgeWllbGQgYW4gaW50ZWdlci4gIElmIGl0IGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2VcJ3NcbiAgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGEgbm9ubmVnYXRpdmVcbiAgaW50ZWdlciBsZXNzIHRoYW4gdGhlIHNlcXVlbmNlXCdzIGxlbmd0aCwgYW5kIHRoZSBzZXF1ZW5jZSBpcyBhc2tlZFxuICB0byBhc3NpZ24gdGhlIGFzc2lnbmVkIG9iamVjdCB0byBpdHMgaXRlbSB3aXRoIHRoYXQgaW5kZXguICBJZiB0aGVcbiAgaW5kZXggaXMgb3V0IG9mIHJhbmdlLCAiSW5kZXhFcnJvciIgaXMgcmFpc2VkIChhc3NpZ25tZW50IHRvIGFcbiAgc3Vic2NyaXB0ZWQgc2VxdWVuY2UgY2Fubm90IGFkZCBuZXcgaXRlbXMgdG8gYSBsaXN0KS5cblxuICBJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSksIHRoZVxuICBzdWJzY3JpcHQgbXVzdCBoYXZlIGEgdHlwZSBjb21wYXRpYmxlIHdpdGggdGhlIG1hcHBpbmdcJ3Mga2V5IHR5cGUsXG4gIGFuZCB0aGUgbWFwcGluZyBpcyB0aGVuIGFza2VkIHRvIGNyZWF0ZSBhIGtleS9kYXR1bSBwYWlyIHdoaWNoIG1hcHNcbiAgdGhlIHN1YnNjcmlwdCB0byB0aGUgYXNzaWduZWQgb2JqZWN0LiAgVGhpcyBjYW4gZWl0aGVyIHJlcGxhY2UgYW5cbiAgZXhpc3Rpbmcga2V5L3ZhbHVlIHBhaXIgd2l0aCB0aGUgc2FtZSBrZXkgdmFsdWUsIG9yIGluc2VydCBhIG5ld1xuICBrZXkvdmFsdWUgcGFpciAoaWYgbm8ga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUgZXhpc3RlZCkuXG5cbiAgRm9yIHVzZXItZGVmaW5lZCBvYmplY3RzLCB0aGUgIl9fc2V0aXRlbV9fKCkiIG1ldGhvZCBpcyBjYWxsZWQgd2l0aFxuICBhcHByb3ByaWF0ZSBhcmd1bWVudHMuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhIHNsaWNpbmc6IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW4gdGhlXG4gIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgYSBtdXRhYmxlIHNlcXVlbmNlIG9iamVjdFxuICAoc3VjaCBhcyBhIGxpc3QpLiAgVGhlIGFzc2lnbmVkIG9iamVjdCBzaG91bGQgYmUgYSBzZXF1ZW5jZSBvYmplY3RcbiAgb2YgdGhlIHNhbWUgdHlwZS4gIE5leHQsIHRoZSBsb3dlciBhbmQgdXBwZXIgYm91bmQgZXhwcmVzc2lvbnMgYXJlXG4gIGV2YWx1YXRlZCwgaW5zb2ZhciB0aGV5IGFyZSBwcmVzZW50OyBkZWZhdWx0cyBhcmUgemVybyBhbmQgdGhlXG4gIHNlcXVlbmNlXCdzIGxlbmd0aC4gIFRoZSBib3VuZHMgc2hvdWxkIGV2YWx1YXRlIHRvIGludGVnZXJzLiBJZlxuICBlaXRoZXIgYm91bmQgaXMgbmVnYXRpdmUsIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGggaXMgYWRkZWQgdG8gaXQuICBUaGVcbiAgcmVzdWx0aW5nIGJvdW5kcyBhcmUgY2xpcHBlZCB0byBsaWUgYmV0d2VlbiB6ZXJvIGFuZCB0aGUgc2VxdWVuY2VcJ3NcbiAgbGVuZ3RoLCBpbmNsdXNpdmUuICBGaW5hbGx5LCB0aGUgc2VxdWVuY2Ugb2JqZWN0IGlzIGFza2VkIHRvIHJlcGxhY2VcbiAgdGhlIHNsaWNlIHdpdGggdGhlIGl0ZW1zIG9mIHRoZSBhc3NpZ25lZCBzZXF1ZW5jZS4gIFRoZSBsZW5ndGggb2ZcbiAgdGhlIHNsaWNlIG1heSBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgbGVuZ3RoIG9mIHRoZSBhc3NpZ25lZCBzZXF1ZW5jZSxcbiAgdGh1cyBjaGFuZ2luZyB0aGUgbGVuZ3RoIG9mIHRoZSB0YXJnZXQgc2VxdWVuY2UsIGlmIHRoZSB0YXJnZXRcbiAgc2VxdWVuY2UgYWxsb3dzIGl0LlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGVcbnN5bnRheCBmb3IgdGFyZ2V0cyBpcyB0YWtlbiB0byBiZSB0aGUgc2FtZSBhcyBmb3IgZXhwcmVzc2lvbnMsIGFuZFxuaW52YWxpZCBzeW50YXggaXMgcmVqZWN0ZWQgZHVyaW5nIHRoZSBjb2RlIGdlbmVyYXRpb24gcGhhc2UsIGNhdXNpbmdcbmxlc3MgZGV0YWlsZWQgZXJyb3IgbWVzc2FnZXMuXG5cbkFsdGhvdWdoIHRoZSBkZWZpbml0aW9uIG9mIGFzc2lnbm1lbnQgaW1wbGllcyB0aGF0IG92ZXJsYXBzIGJldHdlZW5cbnRoZSBsZWZ0LWhhbmQgc2lkZSBhbmQgdGhlIHJpZ2h0LWhhbmQgc2lkZSBhcmUgXCdzaW11bHRhbmVub3VzXCcgKGZvclxuZXhhbXBsZSAiYSwgYiA9IGIsIGEiIHN3YXBzIHR3byB2YXJpYWJsZXMpLCBvdmVybGFwcyAqd2l0aGluKiB0aGVcbmNvbGxlY3Rpb24gb2YgYXNzaWduZWQtdG8gdmFyaWFibGVzIG9jY3VyIGxlZnQtdG8tcmlnaHQsIHNvbWV0aW1lc1xucmVzdWx0aW5nIGluIGNvbmZ1c2lvbi4gIEZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtIHByaW50c1xuIlswLCAyXSI6XG5cbiAgIHggPSBbMCwgMV1cbiAgIGkgPSAwXG4gICBpLCB4W2ldID0gMSwgMiAgICAgICAgICMgaSBpcyB1cGRhdGVkLCB0aGVuIHhbaV0gaXMgdXBkYXRlZFxuICAgcHJpbnQoeClcblxuU2VlIGFsc286ICoqUEVQIDMxMzIqKiAtIEV4dGVuZGVkIEl0ZXJhYmxlIFVucGFja2luZ1xuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIip0YXJnZXQiIGZlYXR1cmUuXG5cblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlIHN0YXRlbWVudCwgb2YgYVxuYmluYXJ5IG9wZXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQ6XG5cbiAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCBzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4gICBhdWdvcCAgICAgICAgICAgICAgICAgICAgIDo6PSAiKz0iIHwgIi09IiB8ICIqPSIgfCAiQD0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBvZiB0aGUgbGFzdCB0aHJlZVxuc3ltYm9scy4pXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV2YWx1YXRlcyB0aGUgdGFyZ2V0ICh3aGljaCwgdW5saWtlIG5vcm1hbFxuYXNzaWdubWVudCBzdGF0ZW1lbnRzLCBjYW5ub3QgYmUgYW4gdW5wYWNraW5nKSBhbmQgdGhlIGV4cHJlc3Npb25cbmxpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGFzc2lnbm1lbnRcbm9uIHRoZSB0d28gb3BlcmFuZHMsIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIG9yaWdpbmFsIHRhcmdldC5cblRoZSB0YXJnZXQgaXMgb25seSBldmFsdWF0ZWQgb25jZS5cblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlICJ4ICs9IDEiIGNhbiBiZSByZXdyaXR0ZW4gYXNcbiJ4ID0geCArIDEiIHRvIGFjaGlldmUgYSBzaW1pbGFyLCBidXQgbm90IGV4YWN0bHkgZXF1YWwgZWZmZWN0LiBJbiB0aGVcbmF1Z21lbnRlZCB2ZXJzaW9uLCAieCIgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gQWxzbywgd2hlbiBwb3NzaWJsZSxcbnRoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXQgcmF0aGVyIHRoYW5cbmNyZWF0aW5nIGEgbmV3IG9iamVjdCBhbmQgYXNzaWduaW5nIHRoYXQgdG8gdGhlIHRhcmdldCwgdGhlIG9sZCBvYmplY3RcbmlzIG1vZGlmaWVkIGluc3RlYWQuXG5cblVubGlrZSBub3JtYWwgYXNzaWdubWVudHMsIGF1Z21lbnRlZCBhc3NpZ25tZW50cyBldmFsdWF0ZSB0aGUgbGVmdC1cbmhhbmQgc2lkZSAqYmVmb3JlKiBldmFsdWF0aW5nIHRoZSByaWdodC1oYW5kIHNpZGUuICBGb3IgZXhhbXBsZSwgImFbaV1cbis9IGYoeCkiIGZpcnN0IGxvb2tzLXVwICJhW2ldIiwgdGhlbiBpdCBldmFsdWF0ZXMgImYoeCkiIGFuZCBwZXJmb3Jtc1xudGhlIGFkZGl0aW9uLCBhbmQgbGFzdGx5LCBpdCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRvICJhW2ldIi5cblxuV2l0aCB0aGUgZXhjZXB0aW9uIG9mIGFzc2lnbmluZyB0byB0dXBsZXMgYW5kIG11bHRpcGxlIHRhcmdldHMgaW4gYVxuc2luZ2xlIHN0YXRlbWVudCwgdGhlIGFzc2lnbm1lbnQgZG9uZSBieSBhdWdtZW50ZWQgYXNzaWdubWVudFxuc3RhdGVtZW50cyBpcyBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBub3JtYWwgYXNzaWdubWVudHMuIFNpbWlsYXJseSxcbndpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgcG9zc2libGUgKmluLXBsYWNlKiBiZWhhdmlvciwgdGhlIGJpbmFyeVxub3BlcmF0aW9uIHBlcmZvcm1lZCBieSBhdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgbm9ybWFsXG5iaW5hcnkgb3BlcmF0aW9ucy5cblxuRm9yIHRhcmdldHMgd2hpY2ggYXJlIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCB0aGUgc2FtZSAqY2F2ZWF0IGFib3V0XG5jbGFzcyBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyogYXBwbGllcyBhcyBmb3IgcmVndWxhciBhc3NpZ25tZW50cy5cbicsCiAgJ2F0b20taWRlbnRpZmllcnMnOiB1J1xuSWRlbnRpZmllcnMgKE5hbWVzKVxuKioqKioqKioqKioqKioqKioqKlxuXG5BbiBpZGVudGlmaWVyIG9jY3VycmluZyBhcyBhbiBhdG9tIGlzIGEgbmFtZS4gIFNlZSBzZWN0aW9uXG4qSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKiBmb3IgbGV4aWNhbCBkZWZpbml0aW9uIGFuZCBzZWN0aW9uICpOYW1pbmdcbmFuZCBiaW5kaW5nKiBmb3IgZG9jdW1lbnRhdGlvbiBvZiBuYW1pbmcgYW5kIGJpbmRpbmcuXG5cbldoZW4gdGhlIG5hbWUgaXMgYm91bmQgdG8gYW4gb2JqZWN0LCBldmFsdWF0aW9uIG9mIHRoZSBhdG9tIHlpZWxkc1xudGhhdCBvYmplY3QuIFdoZW4gYSBuYW1lIGlzIG5vdCBib3VuZCwgYW4gYXR0ZW1wdCB0byBldmFsdWF0ZSBpdFxucmFpc2VzIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uLlxuXG4qKlByaXZhdGUgbmFtZSBtYW5nbGluZzoqKiBXaGVuIGFuIGlkZW50aWZpZXIgdGhhdCB0ZXh0dWFsbHkgb2NjdXJzIGluXG5hIGNsYXNzIGRlZmluaXRpb24gYmVnaW5zIHdpdGggdHdvIG9yIG1vcmUgdW5kZXJzY29yZSBjaGFyYWN0ZXJzIGFuZFxuZG9lcyBub3QgZW5kIGluIHR3byBvciBtb3JlIHVuZGVyc2NvcmVzLCBpdCBpcyBjb25zaWRlcmVkIGEgKnByaXZhdGVcbm5hbWUqIG9mIHRoYXQgY2xhc3MuIFByaXZhdGUgbmFtZXMgYXJlIHRyYW5zZm9ybWVkIHRvIGEgbG9uZ2VyIGZvcm1cbmJlZm9yZSBjb2RlIGlzIGdlbmVyYXRlZCBmb3IgdGhlbS4gIFRoZSB0cmFuc2Zvcm1hdGlvbiBpbnNlcnRzIHRoZVxuY2xhc3MgbmFtZSwgd2l0aCBsZWFkaW5nIHVuZGVyc2NvcmVzIHJlbW92ZWQgYW5kIGEgc2luZ2xlIHVuZGVyc2NvcmVcbmluc2VydGVkLCBpbiBmcm9udCBvZiB0aGUgbmFtZS4gIEZvciBleGFtcGxlLCB0aGUgaWRlbnRpZmllciAiX19zcGFtIlxub2NjdXJyaW5nIGluIGEgY2xhc3MgbmFtZWQgIkhhbSIgd2lsbCBiZSB0cmFuc2Zvcm1lZCB0byAiX0hhbV9fc3BhbSIuXG5UaGlzIHRyYW5zZm9ybWF0aW9uIGlzIGluZGVwZW5kZW50IG9mIHRoZSBzeW50YWN0aWNhbCBjb250ZXh0IGluIHdoaWNoXG50aGUgaWRlbnRpZmllciBpcyB1c2VkLiAgSWYgdGhlIHRyYW5zZm9ybWVkIG5hbWUgaXMgZXh0cmVtZWx5IGxvbmdcbihsb25nZXIgdGhhbiAyNTUgY2hhcmFjdGVycyksIGltcGxlbWVudGF0aW9uIGRlZmluZWQgdHJ1bmNhdGlvbiBtYXlcbmhhcHBlbi4gSWYgdGhlIGNsYXNzIG5hbWUgY29uc2lzdHMgb25seSBvZiB1bmRlcnNjb3Jlcywgbm9cbnRyYW5zZm9ybWF0aW9uIGlzIGRvbmUuXG4nLAogICdhdG9tLWxpdGVyYWxzJzogdSJcbkxpdGVyYWxzXG4qKioqKioqKlxuXG5QeXRob24gc3VwcG9ydHMgc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBhbmQgdmFyaW91cyBudW1lcmljXG5saXRlcmFsczpcblxuICAgbGl0ZXJhbCA6Oj0gc3RyaW5nbGl0ZXJhbCB8IGJ5dGVzbGl0ZXJhbFxuICAgICAgICAgICAgICAgfCBpbnRlZ2VyIHwgZmxvYXRudW1iZXIgfCBpbWFnbnVtYmVyXG5cbkV2YWx1YXRpb24gb2YgYSBsaXRlcmFsIHlpZWxkcyBhbiBvYmplY3Qgb2YgdGhlIGdpdmVuIHR5cGUgKHN0cmluZyxcbmJ5dGVzLCBpbnRlZ2VyLCBmbG9hdGluZyBwb2ludCBudW1iZXIsIGNvbXBsZXggbnVtYmVyKSB3aXRoIHRoZSBnaXZlblxudmFsdWUuICBUaGUgdmFsdWUgbWF5IGJlIGFwcHJveGltYXRlZCBpbiB0aGUgY2FzZSBvZiBmbG9hdGluZyBwb2ludFxuYW5kIGltYWdpbmFyeSAoY29tcGxleCkgbGl0ZXJhbHMuICBTZWUgc2VjdGlvbiAqTGl0ZXJhbHMqIGZvciBkZXRhaWxzLlxuXG5BbGwgbGl0ZXJhbHMgY29ycmVzcG9uZCB0byBpbW11dGFibGUgZGF0YSB0eXBlcywgYW5kIGhlbmNlIHRoZVxub2JqZWN0J3MgaWRlbnRpdHkgaXMgbGVzcyBpbXBvcnRhbnQgdGhhbiBpdHMgdmFsdWUuICBNdWx0aXBsZVxuZXZhbHVhdGlvbnMgb2YgbGl0ZXJhbHMgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZWl0aGVyIHRoZSBzYW1lXG5vY2N1cnJlbmNlIGluIHRoZSBwcm9ncmFtIHRleHQgb3IgYSBkaWZmZXJlbnQgb2NjdXJyZW5jZSkgbWF5IG9idGFpblxudGhlIHNhbWUgb2JqZWN0IG9yIGEgZGlmZmVyZW50IG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlLlxuIiwKICAnYXR0cmlidXRlLWFjY2Vzcyc6IHUnXG5DdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlIG1lYW5pbmcgb2ZcbmF0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgIngubmFtZSIpIGZvclxuY2xhc3MgaW5zdGFuY2VzLlxuXG5vYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSBhdHRyaWJ1dGUgaW4gdGhlXG4gICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgaXQgZm91bmRcbiAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciAic2VsZiIpLiAgIm5hbWUiIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZS4gVGhpc1xuICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi5cblxuICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbSxcbiAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuICJfX2dldGF0dHJfXygpIiBhbmQgIl9fc2V0YXR0cl9fKCkiLikgVGhpcyBpcyBkb25lIGJvdGggZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlICJfX2dldGF0dHJfXygpIiB3b3VsZCBoYXZlXG4gICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZSB0aGF0IGF0XG4gICBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieSBub3RcbiAgIGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgZ2V0IHRvdGFsXG4gICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cblxub2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzIGZvclxuICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAiX19nZXRhdHRyX18oKSIsXG4gICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgIl9fZ2V0YXR0cmlidXRlX18oKSIgZWl0aGVyXG4gICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiBUaGlzIG1ldGhvZFxuICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gaW5cbiAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBiYXNlIGNsYXNzXG4gICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCBuZWVkcywgZm9yXG4gICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuXG4gICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwIHNwZWNpYWxcbiAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhIGxhbmd1YWdlIHN5bnRheFxuICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSAqU3BlY2lhbCBtZXRob2QgbG9va3VwKi5cblxub2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlXG4gICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgKnZhbHVlKiBpcyB0aGVcbiAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgIm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkiLlxuXG5vYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgTGlrZSAiX19zZXRhdHRyX18oKSIgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCBvZlxuICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgImRlbCBvYmoubmFtZSIgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuICJkaXIoKSIgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgc2VxdWVuY2UgbXVzdCBiZVxuICAgcmV0dXJuZWQuICJkaXIoKSIgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgbGlzdCBhbmRcbiAgIHNvcnRzIGl0LlxuXG5cbkltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuPT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzXG5jb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgYXBwZWFycyBpbiBhblxuKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyXCdzIGNsYXNzXG5kaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzIHBhcmVudHMpLiAgSW4gdGhlXG5leGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbnRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnICJfX2RpY3RfXyIuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAiTm9uZSIgd2hlblxuICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyBtZXRob2Qgc2hvdWxkXG4gICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuICJBdHRyaWJ1dGVFcnJvciJcbiAgIGV4Y2VwdGlvbi5cblxub2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXJcbiAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuXG5vYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlXG4gICBvd25lciBjbGFzcy5cblxuVGhlIGF0dHJpYnV0ZSAiX19vYmpjbGFzc19fIiBpcyBpbnRlcnByZXRlZCBieSB0aGUgImluc3BlY3QiIG1vZHVsZSBhc1xuc3BlY2lmeWluZyB0aGUgY2xhc3Mgd2hlcmUgdGhpcyBvYmplY3Qgd2FzIGRlZmluZWQgKHNldHRpbmcgdGhpc1xuYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiBkeW5hbWljIGNsYXNzXG5hdHRyaWJ1dGVzKS4gRm9yIGNhbGxhYmxlcywgaXQgbWF5IGluZGljYXRlIHRoYXQgYW4gaW5zdGFuY2Ugb2YgdGhlXG5naXZlbiB0eXBlIChvciBhIHN1YmNsYXNzKSBpcyBleHBlY3RlZCBvciByZXF1aXJlZCBhcyB0aGUgZmlyc3RcbnBvc2l0aW9uYWwgYXJndW1lbnQgKGZvciBleGFtcGxlLCBDUHl0aG9uIHNldHMgdGhpcyBhdHRyaWJ1dGUgZm9yXG51bmJvdW5kIG1ldGhvZHMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgaW4gQykuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgYW5kXG4iX19kZWxldGVfXygpIi4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCwgaXRcbmlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgImEueCIgaGFzIGFcbmxvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbiJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXSIsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cblxuSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mIHRoZVxuZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kXG5pbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiB0aGVcbnByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSBkZWZpbmVkIGFuZFxuaG93IHRoZXkgd2VyZSBjYWxsZWQuXG5cblRoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgImEueCIuIEhvd1xudGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gImEiOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICAieC5fX2dldF9fKGEpIi5cblxuSW5zdGFuY2UgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsICJhLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlXG4gICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgY2FsbDpcbiAgICJBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpIi5cblxuU3VwZXIgQmluZGluZ1xuICAgSWYgImEiIGlzIGFuIGluc3RhbmNlIG9mICJzdXBlciIsIHRoZW4gdGhlIGJpbmRpbmcgInN1cGVyKEIsXG4gICBvYmopLm0oKSIgc2VhcmNoZXMgIm9iai5fX2NsYXNzX18uX19tcm9fXyIgZm9yIHRoZSBiYXNlIGNsYXNzICJBIlxuICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yIHdpdGggdGhlXG4gICBjYWxsOiAiQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pIi5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAiX19kZWxldGVfXygpIi4gIElmIGl0XG5kb2VzIG5vdCBkZWZpbmUgIl9fZ2V0X18oKSIsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgd2lsbCByZXR1cm5cbnRoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlIG9iamVjdFwnc1xuaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgIl9fc2V0X18oKSIgYW5kL29yXG4iX19kZWxldGVfXygpIiwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXMgbmVpdGhlciwgaXQgaXNcbmEgbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzIGRlZmluZSBib3RoXG4iX19nZXRfXygpIiBhbmQgIl9fc2V0X18oKSIsIHdoaWxlIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGhhdmUganVzdCB0aGVcbiJfX2dldF9fKCkiIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aCAiX19zZXRfXygpIiBhbmQgIl9fZ2V0X18oKSJcbmRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uIGluIGFuIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJblxuY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGluc3RhbmNlcy5cblxuUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyAic3RhdGljbWV0aG9kKCkiIGFuZCAiY2xhc3NtZXRob2QoKSIpIGFyZVxuaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhblxucmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsIGluc3RhbmNlcyB0b1xuYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2xhc3MuXG5cblRoZSAicHJvcGVydHkoKSIgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhIGRlc2NyaXB0b3IuXG5BY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSBwcm9wZXJ0eS5cblxuXG5fX3Nsb3RzX19cbj09PT09PT09PVxuXG5CeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgYXR0cmlidXRlXG5zdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3IGluc3RhbmNlXG52YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuIGNyZWF0aW5nIGxhcmdlXG5udW1iZXJzIG9mIGluc3RhbmNlcy5cblxuVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSBjbGFzc1xuZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2YgaW5zdGFuY2VcbnZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0byBob2xkIGFcbnZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qIGlzIG5vdFxuY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cblxub2JqZWN0Ll9fc2xvdHNfX1xuXG4gICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4gICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICAqX19zbG90c19fKlxuICAgcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kIHByZXZlbnRzIHRoZVxuICAgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yIGVhY2hcbiAgIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgIkF0dHJpYnV0ZUVycm9yIi4gSWZcbiAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiBhZGRcbiAgIlwnX19kaWN0X19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCBjbGFzc2VzXG4gIGRlZmluaW5nICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byBpdHNcbiAgaW5zdGFuY2VzLiBJZiB3ZWFrIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGRcbiAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGVcbiAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZVxuICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuXG4gIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAiaW50IiwgImJ5dGVzIiBhbmQgInR1cGxlIi5cblxuKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouIE1hcHBpbmdzXG4gIG1heSBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyBtYXkgYmVcbiAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuXG4qICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZVxuICAqX19zbG90c19fKi5cbicsCiAgJ2F0dHJpYnV0ZS1yZWZlcmVuY2VzJzogdSdcbkF0dHJpYnV0ZSByZWZlcmVuY2VzXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BbiBhdHRyaWJ1dGUgcmVmZXJlbmNlIGlzIGEgcHJpbWFyeSBmb2xsb3dlZCBieSBhIHBlcmlvZCBhbmQgYSBuYW1lOlxuXG4gICBhdHRyaWJ1dGVyZWYgOjo9IHByaW1hcnkgIi4iIGlkZW50aWZpZXJcblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3Qgb2YgYSB0eXBlIHRoYXQgc3VwcG9ydHNcbmF0dHJpYnV0ZSByZWZlcmVuY2VzLCB3aGljaCBtb3N0IG9iamVjdHMgZG8uICBUaGlzIG9iamVjdCBpcyB0aGVuXG5hc2tlZCB0byBwcm9kdWNlIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpcyB0aGUgaWRlbnRpZmllci4gIFRoaXNcbnByb2R1Y3Rpb24gY2FuIGJlIGN1c3RvbWl6ZWQgYnkgb3ZlcnJpZGluZyB0aGUgIl9fZ2V0YXR0cl9fKCkiIG1ldGhvZC5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBhdmFpbGFibGUsIHRoZSBleGNlcHRpb24gIkF0dHJpYnV0ZUVycm9yIiBpc1xucmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgdHlwZSBhbmQgdmFsdWUgb2YgdGhlIG9iamVjdCBwcm9kdWNlZCBpc1xuZGV0ZXJtaW5lZCBieSB0aGUgb2JqZWN0LiAgTXVsdGlwbGUgZXZhbHVhdGlvbnMgb2YgdGhlIHNhbWUgYXR0cmlidXRlXG5yZWZlcmVuY2UgbWF5IHlpZWxkIGRpZmZlcmVudCBvYmplY3RzLlxuJywKLSAnYXVnYXNzaWduJzogdSdcbkF1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsIG9mIGFcbmJpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuXG4gICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBvZiB0aGUgbGFzdCB0aHJlZVxuc3ltYm9scy4pXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV2YWx1YXRlcyB0aGUgdGFyZ2V0ICh3aGljaCwgdW5saWtlIG5vcm1hbFxuYXNzaWdubWVudCBzdGF0ZW1lbnRzLCBjYW5ub3QgYmUgYW4gdW5wYWNraW5nKSBhbmQgdGhlIGV4cHJlc3Npb25cbmxpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGFzc2lnbm1lbnRcbm9uIHRoZSB0d28gb3BlcmFuZHMsIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIG9yaWdpbmFsIHRhcmdldC5cblRoZSB0YXJnZXQgaXMgb25seSBldmFsdWF0ZWQgb25jZS5cblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlICJ4ICs9IDEiIGNhbiBiZSByZXdyaXR0ZW4gYXNcbiJ4ID0geCArIDEiIHRvIGFjaGlldmUgYSBzaW1pbGFyLCBidXQgbm90IGV4YWN0bHkgZXF1YWwgZWZmZWN0LiBJbiB0aGVcbmF1Z21lbnRlZCB2ZXJzaW9uLCAieCIgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gQWxzbywgd2hlbiBwb3NzaWJsZSxcbnRoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXQgcmF0aGVyIHRoYW5cbmNyZWF0aW5nIGEgbmV3IG9iamVjdCBhbmQgYXNzaWduaW5nIHRoYXQgdG8gdGhlIHRhcmdldCwgdGhlIG9sZCBvYmplY3RcbmlzIG1vZGlmaWVkIGluc3RlYWQuXG5cblVubGlrZSBub3JtYWwgYXNzaWdubWVudHMsIGF1Z21lbnRlZCBhc3NpZ25tZW50cyBldmFsdWF0ZSB0aGUgbGVmdC1cbmhhbmQgc2lkZSAqYmVmb3JlKiBldmFsdWF0aW5nIHRoZSByaWdodC1oYW5kIHNpZGUuICBGb3IgZXhhbXBsZSwgImFbaV1cbis9IGYoeCkiIGZpcnN0IGxvb2tzLXVwICJhW2ldIiwgdGhlbiBpdCBldmFsdWF0ZXMgImYoeCkiIGFuZCBwZXJmb3Jtc1xudGhlIGFkZGl0aW9uLCBhbmQgbGFzdGx5LCBpdCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRvICJhW2ldIi5cblxuV2l0aCB0aGUgZXhjZXB0aW9uIG9mIGFzc2lnbmluZyB0byB0dXBsZXMgYW5kIG11bHRpcGxlIHRhcmdldHMgaW4gYVxuc2luZ2xlIHN0YXRlbWVudCwgdGhlIGFzc2lnbm1lbnQgZG9uZSBieSBhdWdtZW50ZWQgYXNzaWdubWVudFxuc3RhdGVtZW50cyBpcyBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBub3JtYWwgYXNzaWdubWVudHMuIFNpbWlsYXJseSxcbndpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgcG9zc2libGUgKmluLXBsYWNlKiBiZWhhdmlvciwgdGhlIGJpbmFyeVxub3BlcmF0aW9uIHBlcmZvcm1lZCBieSBhdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgbm9ybWFsXG5iaW5hcnkgb3BlcmF0aW9ucy5cblxuRm9yIHRhcmdldHMgd2hpY2ggYXJlIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCB0aGUgc2FtZSAqY2F2ZWF0IGFib3V0XG5jbGFzcyBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyogYXBwbGllcyBhcyBmb3IgcmVndWxhciBhc3NpZ25tZW50cy5cbicsCi0gJ2JpbmFyeSc6IHUnXG5CaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBiaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIGhhdmUgdGhlIGNvbnZlbnRpb25hbCBwcmlvcml0eVxubGV2ZWxzLiAgTm90ZSB0aGF0IHNvbWUgb2YgdGhlc2Ugb3BlcmF0aW9ucyBhbHNvIGFwcGx5IHRvIGNlcnRhaW4gbm9uLVxubnVtZXJpYyB0eXBlcy4gIEFwYXJ0IGZyb20gdGhlIHBvd2VyIG9wZXJhdG9yLCB0aGVyZSBhcmUgb25seSB0d29cbmxldmVscywgb25lIGZvciBtdWx0aXBsaWNhdGl2ZSBvcGVyYXRvcnMgYW5kIG9uZSBmb3IgYWRkaXRpdmVcbm9wZXJhdG9yczpcblxuICAgbV9leHByIDo6PSB1X2V4cHIgfCBtX2V4cHIgIioiIHVfZXhwciB8IG1fZXhwciAiLy8iIHVfZXhwciB8IG1fZXhwciAiLyIgdV9leHByXG4gICAgICAgICAgICAgIHwgbV9leHByICIlIiB1X2V4cHJcbiAgIGFfZXhwciA6Oj0gbV9leHByIHwgYV9leHByICIrIiBtX2V4cHIgfCBhX2V4cHIgIi0iIG1fZXhwclxuXG5UaGUgIioiIChtdWx0aXBsaWNhdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBwcm9kdWN0IG9mIGl0cyBhcmd1bWVudHMuXG5UaGUgYXJndW1lbnRzIG11c3QgZWl0aGVyIGJvdGggYmUgbnVtYmVycywgb3Igb25lIGFyZ3VtZW50IG11c3QgYmUgYW5cbmludGVnZXIgYW5kIHRoZSBvdGhlciBtdXN0IGJlIGEgc2VxdWVuY2UuIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlXG5udW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSBhbmQgdGhlbiBtdWx0aXBsaWVkIHRvZ2V0aGVyLlxuSW4gdGhlIGxhdHRlciBjYXNlLCBzZXF1ZW5jZSByZXBldGl0aW9uIGlzIHBlcmZvcm1lZDsgYSBuZWdhdGl2ZVxucmVwZXRpdGlvbiBmYWN0b3IgeWllbGRzIGFuIGVtcHR5IHNlcXVlbmNlLlxuXG5UaGUgIi8iIChkaXZpc2lvbikgYW5kICIvLyIgKGZsb29yIGRpdmlzaW9uKSBvcGVyYXRvcnMgeWllbGQgdGhlXG5xdW90aWVudCBvZiB0aGVpciBhcmd1bWVudHMuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG5jb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gRGl2aXNpb24gb2YgaW50ZWdlcnMgeWllbGRzIGEgZmxvYXQsIHdoaWxlXG5mbG9vciBkaXZpc2lvbiBvZiBpbnRlZ2VycyByZXN1bHRzIGluIGFuIGludGVnZXI7IHRoZSByZXN1bHQgaXMgdGhhdFxub2YgbWF0aGVtYXRpY2FsIGRpdmlzaW9uIHdpdGggdGhlIFwnZmxvb3JcJyBmdW5jdGlvbiBhcHBsaWVkIHRvIHRoZVxucmVzdWx0LiAgRGl2aXNpb24gYnkgemVybyByYWlzZXMgdGhlICJaZXJvRGl2aXNpb25FcnJvciIgZXhjZXB0aW9uLlxuXG5UaGUgIiUiIChtb2R1bG8pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcmVtYWluZGVyIGZyb20gdGhlIGRpdmlzaW9uIG9mXG50aGUgZmlyc3QgYXJndW1lbnQgYnkgdGhlIHNlY29uZC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbmNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgQSB6ZXJvIHJpZ2h0IGFyZ3VtZW50IHJhaXNlcyB0aGVcbiJaZXJvRGl2aXNpb25FcnJvciIgZXhjZXB0aW9uLiAgVGhlIGFyZ3VtZW50cyBtYXkgYmUgZmxvYXRpbmcgcG9pbnRcbm51bWJlcnMsIGUuZy4sICIzLjE0JTAuNyIgZXF1YWxzICIwLjM0IiAoc2luY2UgIjMuMTQiIGVxdWFscyAiNCowLjcgK1xuMC4zNCIuKSAgVGhlIG1vZHVsbyBvcGVyYXRvciBhbHdheXMgeWllbGRzIGEgcmVzdWx0IHdpdGggdGhlIHNhbWUgc2lnblxuYXMgaXRzIHNlY29uZCBvcGVyYW5kIChvciB6ZXJvKTsgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSByZXN1bHQgaXNcbnN0cmljdGx5IHNtYWxsZXIgdGhhbiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kIFsxXS5cblxuVGhlIGZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0b3JzIGFyZSBjb25uZWN0ZWQgYnkgdGhlIGZvbGxvd2luZ1xuaWRlbnRpdHk6ICJ4ID09ICh4Ly95KSp5ICsgKHgleSkiLiAgRmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBhcmUgYWxzb1xuY29ubmVjdGVkIHdpdGggdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJkaXZtb2QoKSI6ICJkaXZtb2QoeCwgeSkgPT1cbih4Ly95LCB4JXkpIi4gWzJdLlxuXG5JbiBhZGRpdGlvbiB0byBwZXJmb3JtaW5nIHRoZSBtb2R1bG8gb3BlcmF0aW9uIG9uIG51bWJlcnMsIHRoZSAiJSJcbm9wZXJhdG9yIGlzIGFsc28gb3ZlcmxvYWRlZCBieSBzdHJpbmcgb2JqZWN0cyB0byBwZXJmb3JtIG9sZC1zdHlsZVxuc3RyaW5nIGZvcm1hdHRpbmcgKGFsc28ga25vd24gYXMgaW50ZXJwb2xhdGlvbikuICBUaGUgc3ludGF4IGZvclxuc3RyaW5nIGZvcm1hdHRpbmcgaXMgZGVzY3JpYmVkIGluIHRoZSBQeXRob24gTGlicmFyeSBSZWZlcmVuY2UsXG5zZWN0aW9uICpwcmludGYtc3R5bGUgU3RyaW5nIEZvcm1hdHRpbmcqLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gb3BlcmF0b3IsIHRoZSBtb2R1bG8gb3BlcmF0b3IsIGFuZCB0aGUgImRpdm1vZCgpIlxuZnVuY3Rpb24gYXJlIG5vdCBkZWZpbmVkIGZvciBjb21wbGV4IG51bWJlcnMuICBJbnN0ZWFkLCBjb252ZXJ0IHRvIGFcbmZsb2F0aW5nIHBvaW50IG51bWJlciB1c2luZyB0aGUgImFicygpIiBmdW5jdGlvbiBpZiBhcHByb3ByaWF0ZS5cblxuVGhlICIrIiAoYWRkaXRpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgc3VtIG9mIGl0cyBhcmd1bWVudHMuICBUaGVcbmFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMgb3IgYm90aCBiZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWVcbnR5cGUuICBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZSBudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZVxuYW5kIHRoZW4gYWRkZWQgdG9nZXRoZXIuIEluIHRoZSBsYXR0ZXIgY2FzZSwgdGhlIHNlcXVlbmNlcyBhcmVcbmNvbmNhdGVuYXRlZC5cblxuVGhlICItIiAoc3VidHJhY3Rpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgZGlmZmVyZW5jZSBvZiBpdHMgYXJndW1lbnRzLlxuVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS5cbicsCisgJ2F1Z2Fzc2lnbic6IHUnXG5BdWdtZW50ZWQgYXNzaWdubWVudCBzdGF0ZW1lbnRzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBjb21iaW5hdGlvbiwgaW4gYSBzaW5nbGUgc3RhdGVtZW50LCBvZiBhXG5iaW5hcnkgb3BlcmF0aW9uIGFuZCBhbiBhc3NpZ25tZW50IHN0YXRlbWVudDpcblxuICAgYXVnbWVudGVkX2Fzc2lnbm1lbnRfc3RtdCA6Oj0gYXVndGFyZ2V0IGF1Z29wIChleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuICAgYXVndGFyZ2V0ICAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciB8IGF0dHJpYnV0ZXJlZiB8IHN1YnNjcmlwdGlvbiB8IHNsaWNpbmdcbiAgIGF1Z29wICAgICAgICAgICAgICAgICAgICAgOjo9ICIrPSIgfCAiLT0iIHwgIio9IiB8ICJAPSIgfCAiLz0iIHwgIi8vPSIgfCAiJT0iIHwgIioqPSJcbiAgICAgICAgICAgICB8ICI+Pj0iIHwgIjw8PSIgfCAiJj0iIHwgIl49IiB8ICJ8PSJcblxuKFNlZSBzZWN0aW9uICpQcmltYXJpZXMqIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIG9mIHRoZSBsYXN0IHRocmVlXG5zeW1ib2xzLilcblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXZhbHVhdGVzIHRoZSB0YXJnZXQgKHdoaWNoLCB1bmxpa2Ugbm9ybWFsXG5hc3NpZ25tZW50IHN0YXRlbWVudHMsIGNhbm5vdCBiZSBhbiB1bnBhY2tpbmcpIGFuZCB0aGUgZXhwcmVzc2lvblxubGlzdCwgcGVyZm9ybXMgdGhlIGJpbmFyeSBvcGVyYXRpb24gc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2YgYXNzaWdubWVudFxub24gdGhlIHR3byBvcGVyYW5kcywgYW5kIGFzc2lnbnMgdGhlIHJlc3VsdCB0byB0aGUgb3JpZ2luYWwgdGFyZ2V0LlxuVGhlIHRhcmdldCBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLlxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBleHByZXNzaW9uIGxpa2UgInggKz0gMSIgY2FuIGJlIHJld3JpdHRlbiBhc1xuInggPSB4ICsgMSIgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCBlZmZlY3QuIEluIHRoZVxuYXVnbWVudGVkIHZlcnNpb24sICJ4IiBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLiBBbHNvLCB3aGVuIHBvc3NpYmxlLFxudGhlIGFjdHVhbCBvcGVyYXRpb24gaXMgcGVyZm9ybWVkICppbi1wbGFjZSosIG1lYW5pbmcgdGhhdCByYXRoZXIgdGhhblxuY3JlYXRpbmcgYSBuZXcgb2JqZWN0IGFuZCBhc3NpZ25pbmcgdGhhdCB0byB0aGUgdGFyZ2V0LCB0aGUgb2xkIG9iamVjdFxuaXMgbW9kaWZpZWQgaW5zdGVhZC5cblxuVW5saWtlIG5vcm1hbCBhc3NpZ25tZW50cywgYXVnbWVudGVkIGFzc2lnbm1lbnRzIGV2YWx1YXRlIHRoZSBsZWZ0LVxuaGFuZCBzaWRlICpiZWZvcmUqIGV2YWx1YXRpbmcgdGhlIHJpZ2h0LWhhbmQgc2lkZS4gIEZvciBleGFtcGxlLCAiYVtpXVxuKz0gZih4KSIgZmlyc3QgbG9va3MtdXAgImFbaV0iLCB0aGVuIGl0IGV2YWx1YXRlcyAiZih4KSIgYW5kIHBlcmZvcm1zXG50aGUgYWRkaXRpb24sIGFuZCBsYXN0bHksIGl0IHdyaXRlcyB0aGUgcmVzdWx0IGJhY2sgdG8gImFbaV0iLlxuXG5XaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyBpbiBhXG5zaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG5zdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gU2ltaWxhcmx5LFxud2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgYmluYXJ5XG5vcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBub3JtYWxcbmJpbmFyeSBvcGVyYXRpb25zLlxuXG5Gb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lICpjYXZlYXQgYWJvdXRcbmNsYXNzIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzKiBhcHBsaWVzIGFzIGZvciByZWd1bGFyIGFzc2lnbm1lbnRzLlxuJywKKyAnYmluYXJ5JzogdSdcbkJpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGJpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgaGF2ZSB0aGUgY29udmVudGlvbmFsIHByaW9yaXR5XG5sZXZlbHMuICBOb3RlIHRoYXQgc29tZSBvZiB0aGVzZSBvcGVyYXRpb25zIGFsc28gYXBwbHkgdG8gY2VydGFpbiBub24tXG5udW1lcmljIHR5cGVzLiAgQXBhcnQgZnJvbSB0aGUgcG93ZXIgb3BlcmF0b3IsIHRoZXJlIGFyZSBvbmx5IHR3b1xubGV2ZWxzLCBvbmUgZm9yIG11bHRpcGxpY2F0aXZlIG9wZXJhdG9ycyBhbmQgb25lIGZvciBhZGRpdGl2ZVxub3BlcmF0b3JzOlxuXG4gICBtX2V4cHIgOjo9IHVfZXhwciB8IG1fZXhwciAiKiIgdV9leHByIHwgbV9leHByICJAIiBtX2V4cHIgfFxuICAgICAgICAgICAgICBtX2V4cHIgIi8vIiB1X2V4cHJ8IG1fZXhwciAiLyIgdV9leHByIHxcbiAgICAgICAgICAgICAgbV9leHByICIlIiB1X2V4cHJcbiAgIGFfZXhwciA6Oj0gbV9leHByIHwgYV9leHByICIrIiBtX2V4cHIgfCBhX2V4cHIgIi0iIG1fZXhwclxuXG5UaGUgIioiIChtdWx0aXBsaWNhdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBwcm9kdWN0IG9mIGl0cyBhcmd1bWVudHMuXG5UaGUgYXJndW1lbnRzIG11c3QgZWl0aGVyIGJvdGggYmUgbnVtYmVycywgb3Igb25lIGFyZ3VtZW50IG11c3QgYmUgYW5cbmludGVnZXIgYW5kIHRoZSBvdGhlciBtdXN0IGJlIGEgc2VxdWVuY2UuIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlXG5udW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSBhbmQgdGhlbiBtdWx0aXBsaWVkIHRvZ2V0aGVyLlxuSW4gdGhlIGxhdHRlciBjYXNlLCBzZXF1ZW5jZSByZXBldGl0aW9uIGlzIHBlcmZvcm1lZDsgYSBuZWdhdGl2ZVxucmVwZXRpdGlvbiBmYWN0b3IgeWllbGRzIGFuIGVtcHR5IHNlcXVlbmNlLlxuXG5UaGUgIkAiIChhdCkgb3BlcmF0b3IgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgbWF0cml4XG5tdWx0aXBsaWNhdGlvbi4gIE5vIGJ1aWx0aW4gUHl0aG9uIHR5cGVzIGltcGxlbWVudCB0aGlzIG9wZXJhdG9yLlxuXG5OZXcgaW4gdmVyc2lvbiAzLjUuXG5cblRoZSAiLyIgKGRpdmlzaW9uKSBhbmQgIi8vIiAoZmxvb3IgZGl2aXNpb24pIG9wZXJhdG9ycyB5aWVsZCB0aGVcbnF1b3RpZW50IG9mIHRoZWlyIGFyZ3VtZW50cy4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbmNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiBEaXZpc2lvbiBvZiBpbnRlZ2VycyB5aWVsZHMgYSBmbG9hdCwgd2hpbGVcbmZsb29yIGRpdmlzaW9uIG9mIGludGVnZXJzIHJlc3VsdHMgaW4gYW4gaW50ZWdlcjsgdGhlIHJlc3VsdCBpcyB0aGF0XG5vZiBtYXRoZW1hdGljYWwgZGl2aXNpb24gd2l0aCB0aGUgXCdmbG9vclwnIGZ1bmN0aW9uIGFwcGxpZWQgdG8gdGhlXG5yZXN1bHQuICBEaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyB0aGUgIlplcm9EaXZpc2lvbkVycm9yIiBleGNlcHRpb24uXG5cblRoZSAiJSIgKG1vZHVsbykgb3BlcmF0b3IgeWllbGRzIHRoZSByZW1haW5kZXIgZnJvbSB0aGUgZGl2aXNpb24gb2ZcbnRoZSBmaXJzdCBhcmd1bWVudCBieSB0aGUgc2Vjb25kLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdFxuY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuICBBIHplcm8gcmlnaHQgYXJndW1lbnQgcmFpc2VzIHRoZVxuIlplcm9EaXZpc2lvbkVycm9yIiBleGNlcHRpb24uICBUaGUgYXJndW1lbnRzIG1heSBiZSBmbG9hdGluZyBwb2ludFxubnVtYmVycywgZS5nLiwgIjMuMTQlMC43IiBlcXVhbHMgIjAuMzQiIChzaW5jZSAiMy4xNCIgZXF1YWxzICI0KjAuNyArXG4wLjM0Ii4pICBUaGUgbW9kdWxvIG9wZXJhdG9yIGFsd2F5cyB5aWVsZHMgYSByZXN1bHQgd2l0aCB0aGUgc2FtZSBzaWduXG5hcyBpdHMgc2Vjb25kIG9wZXJhbmQgKG9yIHplcm8pOyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHJlc3VsdCBpc1xuc3RyaWN0bHkgc21hbGxlciB0aGFuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQgWzFdLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRvcnMgYXJlIGNvbm5lY3RlZCBieSB0aGUgZm9sbG93aW5nXG5pZGVudGl0eTogInggPT0gKHgvL3kpKnkgKyAoeCV5KSIuICBGbG9vciBkaXZpc2lvbiBhbmQgbW9kdWxvIGFyZSBhbHNvXG5jb25uZWN0ZWQgd2l0aCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImRpdm1vZCgpIjogImRpdm1vZCh4LCB5KSA9PVxuKHgvL3ksIHgleSkiLiBbMl0uXG5cbkluIGFkZGl0aW9uIHRvIHBlcmZvcm1pbmcgdGhlIG1vZHVsbyBvcGVyYXRpb24gb24gbnVtYmVycywgdGhlICIlIlxub3BlcmF0b3IgaXMgYWxzbyBvdmVybG9hZGVkIGJ5IHN0cmluZyBvYmplY3RzIHRvIHBlcmZvcm0gb2xkLXN0eWxlXG5zdHJpbmcgZm9ybWF0dGluZyAoYWxzbyBrbm93biBhcyBpbnRlcnBvbGF0aW9uKS4gIFRoZSBzeW50YXggZm9yXG5zdHJpbmcgZm9ybWF0dGluZyBpcyBkZXNjcmliZWQgaW4gdGhlIFB5dGhvbiBMaWJyYXJ5IFJlZmVyZW5jZSxcbnNlY3Rpb24gKnByaW50Zi1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZyouXG5cblRoZSBmbG9vciBkaXZpc2lvbiBvcGVyYXRvciwgdGhlIG1vZHVsbyBvcGVyYXRvciwgYW5kIHRoZSAiZGl2bW9kKCkiXG5mdW5jdGlvbiBhcmUgbm90IGRlZmluZWQgZm9yIGNvbXBsZXggbnVtYmVycy4gIEluc3RlYWQsIGNvbnZlcnQgdG8gYVxuZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHVzaW5nIHRoZSAiYWJzKCkiIGZ1bmN0aW9uIGlmIGFwcHJvcHJpYXRlLlxuXG5UaGUgIisiIChhZGRpdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBzdW0gb2YgaXRzIGFyZ3VtZW50cy4gIFRoZVxuYXJndW1lbnRzIG11c3QgZWl0aGVyIGJvdGggYmUgbnVtYmVycyBvciBib3RoIGJlIHNlcXVlbmNlcyBvZiB0aGUgc2FtZVxudHlwZS4gIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlIG51bWJlcnMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlXG5hbmQgdGhlbiBhZGRlZCB0b2dldGhlci4gSW4gdGhlIGxhdHRlciBjYXNlLCB0aGUgc2VxdWVuY2VzIGFyZVxuY29uY2F0ZW5hdGVkLlxuXG5UaGUgIi0iIChzdWJ0cmFjdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBkaWZmZXJlbmNlIG9mIGl0cyBhcmd1bWVudHMuXG5UaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0IGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLlxuJywKICAnYml0d2lzZSc6IHUnXG5CaW5hcnkgYml0d2lzZSBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkVhY2ggb2YgdGhlIHRocmVlIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXMgYSBkaWZmZXJlbnQgcHJpb3JpdHkgbGV2ZWw6XG5cbiAgIGFuZF9leHByIDo6PSBzaGlmdF9leHByIHwgYW5kX2V4cHIgIiYiIHNoaWZ0X2V4cHJcbiAgIHhvcl9leHByIDo6PSBhbmRfZXhwciB8IHhvcl9leHByICJeIiBhbmRfZXhwclxuICAgb3JfZXhwciAgOjo9IHhvcl9leHByIHwgb3JfZXhwciAifCIgeG9yX2V4cHJcblxuVGhlICImIiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgQU5EIG9mIGl0cyBhcmd1bWVudHMsIHdoaWNoIG11c3RcbmJlIGludGVnZXJzLlxuXG5UaGUgIl4iIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBYT1IgKGV4Y2x1c2l2ZSBPUikgb2YgaXRzXG5hcmd1bWVudHMsIHdoaWNoIG11c3QgYmUgaW50ZWdlcnMuXG5cblRoZSAifCIgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIChpbmNsdXNpdmUpIE9SIG9mIGl0cyBhcmd1bWVudHMsXG53aGljaCBtdXN0IGJlIGludGVnZXJzLlxuJywKICAnYmx0aW4tY29kZS1vYmplY3RzJzogdSdcbkNvZGUgT2JqZWN0c1xuKioqKioqKioqKioqXG5cbkNvZGUgb2JqZWN0cyBhcmUgdXNlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gdG8gcmVwcmVzZW50ICJwc2V1ZG8tXG5jb21waWxlZCIgZXhlY3V0YWJsZSBQeXRob24gY29kZSBzdWNoIGFzIGEgZnVuY3Rpb24gYm9keS4gVGhleSBkaWZmZXJcbmZyb20gZnVuY3Rpb24gb2JqZWN0cyBiZWNhdXNlIHRoZXkgZG9uXCd0IGNvbnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlaXJcbmdsb2JhbCBleGVjdXRpb24gZW52aXJvbm1lbnQuICBDb2RlIG9iamVjdHMgYXJlIHJldHVybmVkIGJ5IHRoZSBidWlsdC1cbmluICJjb21waWxlKCkiIGZ1bmN0aW9uIGFuZCBjYW4gYmUgZXh0cmFjdGVkIGZyb20gZnVuY3Rpb24gb2JqZWN0c1xudGhyb3VnaCB0aGVpciAiX19jb2RlX18iIGF0dHJpYnV0ZS4gU2VlIGFsc28gdGhlICJjb2RlIiBtb2R1bGUuXG5cbkEgY29kZSBvYmplY3QgY2FuIGJlIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCBieSBwYXNzaW5nIGl0IChpbnN0ZWFkIG9mIGFcbnNvdXJjZSBzdHJpbmcpIHRvIHRoZSAiZXhlYygpIiBvciAiZXZhbCgpIiAgYnVpbHQtaW4gZnVuY3Rpb25zLlxuXG5TZWUgKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAogICdibHRpbi1lbGxpcHNpcy1vYmplY3QnOiB1J1xuVGhlIEVsbGlwc2lzIE9iamVjdFxuKioqKioqKioqKioqKioqKioqKlxuXG5UaGlzIG9iamVjdCBpcyBjb21tb25seSB1c2VkIGJ5IHNsaWNpbmcgKHNlZSAqU2xpY2luZ3MqKS4gIEl0IHN1cHBvcnRzXG5ubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSBlbGxpcHNpcyBvYmplY3QsIG5hbWVkXG4iRWxsaXBzaXMiIChhIGJ1aWx0LWluIG5hbWUpLiAgInR5cGUoRWxsaXBzaXMpKCkiIHByb2R1Y2VzIHRoZVxuIkVsbGlwc2lzIiBzaW5nbGV0b24uXG5cbkl0IGlzIHdyaXR0ZW4gYXMgIkVsbGlwc2lzIiBvciAiLi4uIi5cbicsCkBAIC0xNyw5ICsxNyw5IEBACiAgJ2JyZWFrJzogdSdcblRoZSAiYnJlYWsiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGJyZWFrX3N0bXQgOjo9ICJicmVhayJcblxuImJyZWFrIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhICJmb3IiIG9yICJ3aGlsZSJcbmxvb3AsIGJ1dCBub3QgbmVzdGVkIGluIGEgZnVuY3Rpb24gb3IgY2xhc3MgZGVmaW5pdGlvbiB3aXRoaW4gdGhhdFxubG9vcC5cblxuSXQgdGVybWluYXRlcyB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbG9vcCwgc2tpcHBpbmcgdGhlIG9wdGlvbmFsICJlbHNlIlxuY2xhdXNlIGlmIHRoZSBsb29wIGhhcyBvbmUuXG5cbklmIGEgImZvciIgbG9vcCBpcyB0ZXJtaW5hdGVkIGJ5ICJicmVhayIsIHRoZSBsb29wIGNvbnRyb2wgdGFyZ2V0XG5rZWVwcyBpdHMgY3VycmVudCB2YWx1ZS5cblxuV2hlbiAiYnJlYWsiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGEgImZpbmFsbHkiXG5jbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5IGxlYXZpbmcgdGhlXG5sb29wLlxuJywKICAnY2FsbGFibGUtdHlwZXMnOiB1J1xuRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiB0aGlzIG1ldGhvZFxuICAgaXMgZGVmaW5lZCwgIngoYXJnMSwgYXJnMiwgLi4uKSIgaXMgYSBzaG9ydGhhbmQgZm9yXG4gICAieC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pIi5cbicsCiAgJ2NhbGxzJzogdSdcbkNhbGxzXG4qKioqKlxuXG5BIGNhbGwgY2FsbHMgYSBjYWxsYWJsZSBvYmplY3QgKGUuZy4sIGEgKmZ1bmN0aW9uKikgd2l0aCBhIHBvc3NpYmx5XG5lbXB0eSBzZXJpZXMgb2YgKmFyZ3VtZW50cyo6XG5cbiAgIGNhbGwgICAgICAgICAgICAgICAgIDo6PSBwcmltYXJ5ICIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXSB8IGNvbXByZWhlbnNpb25dICIpIlxuICAgYXJndW1lbnRfbGlzdCAgICAgICAgOjo9IHBvc2l0aW9uYWxfYXJndW1lbnRzIFsiLCIga2V5d29yZF9hcmd1bWVudHNdXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIgIioiIGV4cHJlc3Npb25dIFsiLCIga2V5d29yZF9hcmd1bWVudHNdXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIgIioqIiBleHByZXNzaW9uXVxuICAgICAgICAgICAgICAgICAgICAgfCBrZXl3b3JkX2FyZ3VtZW50cyBbIiwiICIqIiBleHByZXNzaW9uXVxuICAgICAgICAgICAgICAgICAgICAgICBbIiwiIGtleXdvcmRfYXJndW1lbnRzXSBbIiwiICIqKiIgZXhwcmVzc2lvbl1cbiAgICAgICAgICAgICAgICAgICAgIHwgIioiIGV4cHJlc3Npb24gWyIsIiBrZXl3b3JkX2FyZ3VtZW50c10gWyIsIiAiKioiIGV4cHJlc3Npb25dXG4gICAgICAgICAgICAgICAgICAgICB8ICIqKiIgZXhwcmVzc2lvblxuICAgcG9zaXRpb25hbF9hcmd1bWVudHMgOjo9IGV4cHJlc3Npb24gKCIsIiBleHByZXNzaW9uKSpcbiAgIGtleXdvcmRfYXJndW1lbnRzICAgIDo6PSBrZXl3b3JkX2l0ZW0gKCIsIiBrZXl3b3JkX2l0ZW0pKlxuICAga2V5d29yZF9pdGVtICAgICAgICAgOjo9IGlkZW50aWZpZXIgIj0iIGV4cHJlc3Npb25cblxuQW4gb3B0aW9uYWwgdHJhaWxpbmcgY29tbWEgbWF5IGJlIHByZXNlbnQgYWZ0ZXIgdGhlIHBvc2l0aW9uYWwgYW5kXG5rZXl3b3JkIGFyZ3VtZW50cyBidXQgZG9lcyBub3QgYWZmZWN0IHRoZSBzZW1hbnRpY3MuXG5cblRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYSBjYWxsYWJsZSBvYmplY3QgKHVzZXItZGVmaW5lZFxuZnVuY3Rpb25zLCBidWlsdC1pbiBmdW5jdGlvbnMsIG1ldGhvZHMgb2YgYnVpbHQtaW4gb2JqZWN0cywgY2xhc3Ncbm9iamVjdHMsIG1ldGhvZHMgb2YgY2xhc3MgaW5zdGFuY2VzLCBhbmQgYWxsIG9iamVjdHMgaGF2aW5nIGFcbiJfX2NhbGxfXygpIiBtZXRob2QgYXJlIGNhbGxhYmxlKS4gIEFsbCBhcmd1bWVudCBleHByZXNzaW9ucyBhcmVcbmV2YWx1YXRlZCBiZWZvcmUgdGhlIGNhbGwgaXMgYXR0ZW1wdGVkLiAgUGxlYXNlIHJlZmVyIHRvIHNlY3Rpb25cbipGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIHRoZSBzeW50YXggb2YgZm9ybWFsICpwYXJhbWV0ZXIqIGxpc3RzLlxuXG5JZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcHJlc2VudCwgdGhleSBhcmUgZmlyc3QgY29udmVydGVkIHRvXG5wb3NpdGlvbmFsIGFyZ3VtZW50cywgYXMgZm9sbG93cy4gIEZpcnN0LCBhIGxpc3Qgb2YgdW5maWxsZWQgc2xvdHMgaXNcbmNyZWF0ZWQgZm9yIHRoZSBmb3JtYWwgcGFyYW1ldGVycy4gIElmIHRoZXJlIGFyZSBOIHBvc2l0aW9uYWxcbmFyZ3VtZW50cywgdGhleSBhcmUgcGxhY2VkIGluIHRoZSBmaXJzdCBOIHNsb3RzLiAgTmV4dCwgZm9yIGVhY2hcbmtleXdvcmQgYXJndW1lbnQsIHRoZSBpZGVudGlmaWVyIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZVxuY29ycmVzcG9uZGluZyBzbG90IChpZiB0aGUgaWRlbnRpZmllciBpcyB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgZm9ybWFsXG5wYXJhbWV0ZXIgbmFtZSwgdGhlIGZpcnN0IHNsb3QgaXMgdXNlZCwgYW5kIHNvIG9uKS4gIElmIHRoZSBzbG90IGlzXG5hbHJlYWR5IGZpbGxlZCwgYSAiVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLiBPdGhlcndpc2UsIHRoZVxudmFsdWUgb2YgdGhlIGFyZ3VtZW50IGlzIHBsYWNlZCBpbiB0aGUgc2xvdCwgZmlsbGluZyBpdCAoZXZlbiBpZiB0aGVcbmV4cHJlc3Npb24gaXMgIk5vbmUiLCBpdCBmaWxscyB0aGUgc2xvdCkuICBXaGVuIGFsbCBhcmd1bWVudHMgaGF2ZVxuYmVlbiBwcm9jZXNzZWQsIHRoZSBzbG90cyB0aGF0IGFyZSBzdGlsbCB1bmZpbGxlZCBhcmUgZmlsbGVkIHdpdGggdGhlXG5jb3JyZXNwb25kaW5nIGRlZmF1bHQgdmFsdWUgZnJvbSB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIChEZWZhdWx0XG52YWx1ZXMgYXJlIGNhbGN1bGF0ZWQsIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQ7IHRodXMsIGFcbm11dGFibGUgb2JqZWN0IHN1Y2ggYXMgYSBsaXN0IG9yIGRpY3Rpb25hcnkgdXNlZCBhcyBkZWZhdWx0IHZhbHVlIHdpbGxcbmJlIHNoYXJlZCBieSBhbGwgY2FsbHMgdGhhdCBkb25cJ3Qgc3BlY2lmeSBhbiBhcmd1bWVudCB2YWx1ZSBmb3IgdGhlXG5jb3JyZXNwb25kaW5nIHNsb3Q7IHRoaXMgc2hvdWxkIHVzdWFsbHkgYmUgYXZvaWRlZC4pICBJZiB0aGVyZSBhcmUgYW55XG51bmZpbGxlZCBzbG90cyBmb3Igd2hpY2ggbm8gZGVmYXVsdCB2YWx1ZSBpcyBzcGVjaWZpZWQsIGEgIlR5cGVFcnJvciJcbmV4Y2VwdGlvbiBpcyByYWlzZWQuICBPdGhlcndpc2UsIHRoZSBsaXN0IG9mIGZpbGxlZCBzbG90cyBpcyB1c2VkIGFzXG50aGUgYXJndW1lbnQgbGlzdCBmb3IgdGhlIGNhbGwuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQW4gaW1wbGVtZW50YXRpb24gbWF5IHByb3ZpZGVcbmJ1aWx0LWluIGZ1bmN0aW9ucyB3aG9zZSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgZG8gbm90IGhhdmUgbmFtZXMsIGV2ZW5cbmlmIHRoZXkgYXJlIFwnbmFtZWRcJyBmb3IgdGhlIHB1cnBvc2Ugb2YgZG9jdW1lbnRhdGlvbiwgYW5kIHdoaWNoXG50aGVyZWZvcmUgY2Fubm90IGJlIHN1cHBsaWVkIGJ5IGtleXdvcmQuICBJbiBDUHl0aG9uLCB0aGlzIGlzIHRoZSBjYXNlXG5mb3IgZnVuY3Rpb25zIGltcGxlbWVudGVkIGluIEMgdGhhdCB1c2UgIlB5QXJnX1BhcnNlVHVwbGUoKSIgdG8gcGFyc2VcbnRoZWlyIGFyZ3VtZW50cy5cblxuSWYgdGhlcmUgYXJlIG1vcmUgcG9zaXRpb25hbCBhcmd1bWVudHMgdGhhbiB0aGVyZSBhcmUgZm9ybWFsIHBhcmFtZXRlclxuc2xvdHMsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsIHBhcmFtZXRlclxudXNpbmcgdGhlIHN5bnRheCAiKmlkZW50aWZpZXIiIGlzIHByZXNlbnQ7IGluIHRoaXMgY2FzZSwgdGhhdCBmb3JtYWxcbnBhcmFtZXRlciByZWNlaXZlcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBwb3NpdGlvbmFsIGFyZ3VtZW50c1xuKG9yIGFuIGVtcHR5IHR1cGxlIGlmIHRoZXJlIHdlcmUgbm8gZXhjZXNzIHBvc2l0aW9uYWwgYXJndW1lbnRzKS5cblxuSWYgYW55IGtleXdvcmQgYXJndW1lbnQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIGZvcm1hbCBwYXJhbWV0ZXJcbm5hbWUsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsIHBhcmFtZXRlclxudXNpbmcgdGhlIHN5bnRheCAiKippZGVudGlmaWVyIiBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgZm9ybWFsXG5wYXJhbWV0ZXIgcmVjZWl2ZXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBrZXl3b3JkXG5hcmd1bWVudHMgKHVzaW5nIHRoZSBrZXl3b3JkcyBhcyBrZXlzIGFuZCB0aGUgYXJndW1lbnQgdmFsdWVzIGFzXG5jb3JyZXNwb25kaW5nIHZhbHVlcyksIG9yIGEgKG5ldykgZW1wdHkgZGljdGlvbmFyeSBpZiB0aGVyZSB3ZXJlIG5vXG5leGNlc3Mga2V5d29yZCBhcmd1bWVudHMuXG5cbklmIHRoZSBzeW50YXggIipleHByZXNzaW9uIiBhcHBlYXJzIGluIHRoZSBmdW5jdGlvbiBjYWxsLCAiZXhwcmVzc2lvbiJcbm11c3QgZXZhbHVhdGUgdG8gYW4gaXRlcmFibGUuICBFbGVtZW50cyBmcm9tIHRoaXMgaXRlcmFibGUgYXJlIHRyZWF0ZWRcbmFzIGlmIHRoZXkgd2VyZSBhZGRpdGlvbmFsIHBvc2l0aW9uYWwgYXJndW1lbnRzOyBpZiB0aGVyZSBhcmVcbnBvc2l0aW9uYWwgYXJndW1lbnRzICp4MSosIC4uLiwgKnhOKiwgYW5kICJleHByZXNzaW9uIiBldmFsdWF0ZXMgdG8gYVxuc2VxdWVuY2UgKnkxKiwgLi4uLCAqeU0qLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYSBjYWxsIHdpdGggTStOXG5wb3NpdGlvbmFsIGFyZ3VtZW50cyAqeDEqLCAuLi4sICp4TiosICp5MSosIC4uLiwgKnlNKi5cblxuQSBjb25zZXF1ZW5jZSBvZiB0aGlzIGlzIHRoYXQgYWx0aG91Z2ggdGhlICIqZXhwcmVzc2lvbiIgc3ludGF4IG1heVxuYXBwZWFyICphZnRlciogc29tZSBrZXl3b3JkIGFyZ3VtZW50cywgaXQgaXMgcHJvY2Vzc2VkICpiZWZvcmUqIHRoZVxua2V5d29yZCBhcmd1bWVudHMgKGFuZCB0aGUgIioqZXhwcmVzc2lvbiIgYXJndW1lbnQsIGlmIGFueSAtLSBzZWVcbmJlbG93KS4gIFNvOlxuXG4gICA+Pj4gZGVmIGYoYSwgYik6XG4gICAuLi4gIHByaW50KGEsIGIpXG4gICAuLi5cbiAgID4+PiBmKGI9MSwgKigyLCkpXG4gICAyIDFcbiAgID4+PiBmKGE9MSwgKigyLCkpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbiAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgXCdhXCdcbiAgID4+PiBmKDEsICooMiwpKVxuICAgMSAyXG5cbkl0IGlzIHVudXN1YWwgZm9yIGJvdGgga2V5d29yZCBhcmd1bWVudHMgYW5kIHRoZSAiKmV4cHJlc3Npb24iIHN5bnRheFxudG8gYmUgdXNlZCBpbiB0aGUgc2FtZSBjYWxsLCBzbyBpbiBwcmFjdGljZSB0aGlzIGNvbmZ1c2lvbiBkb2VzIG5vdFxuYXJpc2UuXG5cbklmIHRoZSBzeW50YXggIioqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCxcbiJleHByZXNzaW9uIiBtdXN0IGV2YWx1YXRlIHRvIGEgbWFwcGluZywgdGhlIGNvbnRlbnRzIG9mIHdoaWNoIGFyZVxudHJlYXRlZCBhcyBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLiAgSW4gdGhlIGNhc2Ugb2YgYSBrZXl3b3JkXG5hcHBlYXJpbmcgaW4gYm90aCAiZXhwcmVzc2lvbiIgYW5kIGFzIGFuIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnQsIGFcbiJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG5cbkZvcm1hbCBwYXJhbWV0ZXJzIHVzaW5nIHRoZSBzeW50YXggIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIlxuY2Fubm90IGJlIHVzZWQgYXMgcG9zaXRpb25hbCBhcmd1bWVudCBzbG90cyBvciBhcyBrZXl3b3JkIGFyZ3VtZW50XG5uYW1lcy5cblxuQSBjYWxsIGFsd2F5cyByZXR1cm5zIHNvbWUgdmFsdWUsIHBvc3NpYmx5ICJOb25lIiwgdW5sZXNzIGl0IHJhaXNlcyBhblxuZXhjZXB0aW9uLiAgSG93IHRoaXMgdmFsdWUgaXMgY29tcHV0ZWQgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiB0aGVcbmNhbGxhYmxlIG9iamVjdC5cblxuSWYgaXQgaXMtLS1cblxuYSB1c2VyLWRlZmluZWQgZnVuY3Rpb246XG4gICBUaGUgY29kZSBibG9jayBmb3IgdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLCBwYXNzaW5nIGl0IHRoZVxuICAgYXJndW1lbnQgbGlzdC4gIFRoZSBmaXJzdCB0aGluZyB0aGUgY29kZSBibG9jayB3aWxsIGRvIGlzIGJpbmQgdGhlXG4gICBmb3JtYWwgcGFyYW1ldGVycyB0byB0aGUgYXJndW1lbnRzOyB0aGlzIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uXG4gICAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqLiAgV2hlbiB0aGUgY29kZSBibG9jayBleGVjdXRlcyBhICJyZXR1cm4iXG4gICBzdGF0ZW1lbnQsIHRoaXMgc3BlY2lmaWVzIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuXG5cbmEgYnVpbHQtaW4gZnVuY3Rpb24gb3IgbWV0aG9kOlxuICAgVGhlIHJlc3VsdCBpcyB1cCB0byB0aGUgaW50ZXJwcmV0ZXI7IHNlZSAqQnVpbHQtaW4gRnVuY3Rpb25zKiBmb3JcbiAgIHRoZSBkZXNjcmlwdGlvbnMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBtZXRob2RzLlxuXG5hIGNsYXNzIG9iamVjdDpcbiAgIEEgbmV3IGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgaXMgcmV0dXJuZWQuXG5cbmEgY2xhc3MgaW5zdGFuY2UgbWV0aG9kOlxuICAgVGhlIGNvcnJlc3BvbmRpbmcgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgd2l0aCBhbiBhcmd1bWVudFxuICAgbGlzdCB0aGF0IGlzIG9uZSBsb25nZXIgdGhhbiB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY2FsbDogdGhlXG4gICBpbnN0YW5jZSBiZWNvbWVzIHRoZSBmaXJzdCBhcmd1bWVudC5cblxuYSBjbGFzcyBpbnN0YW5jZTpcbiAgIFRoZSBjbGFzcyBtdXN0IGRlZmluZSBhICJfX2NhbGxfXygpIiBtZXRob2Q7IHRoZSBlZmZlY3QgaXMgdGhlbiB0aGVcbiAgIHNhbWUgYXMgaWYgdGhhdCBtZXRob2Qgd2FzIGNhbGxlZC5cbicsCi0gJ2NsYXNzJzogdSdcbkNsYXNzIGRlZmluaXRpb25zXG4qKioqKioqKioqKioqKioqKlxuXG5BIGNsYXNzIGRlZmluaXRpb24gZGVmaW5lcyBhIGNsYXNzIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZFxudHlwZSBoaWVyYXJjaHkqKTpcblxuICAgY2xhc3NkZWYgICAgOjo9IFtkZWNvcmF0b3JzXSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICI6IiBzdWl0ZVxuICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIlxuICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcblxuQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgVGhlIGluaGVyaXRhbmNlIGxpc3RcbnVzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlICpDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvbipcbmZvciBtb3JlIGFkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlIHRvIGFcbmNsYXNzIG9iamVjdCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NpbmcuICBDbGFzc2VzIHdpdGhvdXQgYW4gaW5oZXJpdGFuY2Vcbmxpc3QgaW5oZXJpdCwgYnkgZGVmYXVsdCwgZnJvbSB0aGUgYmFzZSBjbGFzcyAib2JqZWN0IjsgaGVuY2UsXG5cbiAgIGNsYXNzIEZvbzpcbiAgICAgICBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vKG9iamVjdCk6XG4gICAgICAgcGFzc1xuXG5UaGUgY2xhc3NcJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb24gZnJhbWUgKHNlZVxuKk5hbWluZyBhbmQgYmluZGluZyopLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWwgbmFtZXNwYWNlIGFuZCB0aGVcbm9yaWdpbmFsIGdsb2JhbCBuYW1lc3BhY2UuIChVc3VhbGx5LCB0aGUgc3VpdGUgY29udGFpbnMgbW9zdGx5XG5mdW5jdGlvbiBkZWZpbml0aW9ucy4pICBXaGVuIHRoZSBjbGFzc1wncyBzdWl0ZSBmaW5pc2hlcyBleGVjdXRpb24sIGl0c1xuZXhlY3V0aW9uIGZyYW1lIGlzIGRpc2NhcmRlZCBidXQgaXRzIGxvY2FsIG5hbWVzcGFjZSBpcyBzYXZlZC4gWzRdIEFcbmNsYXNzIG9iamVjdCBpcyB0aGVuIGNyZWF0ZWQgdXNpbmcgdGhlIGluaGVyaXRhbmNlIGxpc3QgZm9yIHRoZSBiYXNlXG5jbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnkuXG5UaGUgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGlzIGNsYXNzIG9iamVjdCBpbiB0aGUgb3JpZ2luYWwgbG9jYWxcbm5hbWVzcGFjZS5cblxuQ2xhc3MgY3JlYXRpb24gY2FuIGJlIGN1c3RvbWl6ZWQgaGVhdmlseSB1c2luZyAqbWV0YWNsYXNzZXMqLlxuXG5DbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyBmdW5jdGlvbnMsXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGNsYXNzIEZvbzogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbzogcGFzc1xuICAgRm9vID0gZjEoYXJnKShmMihGb28pKVxuXG5UaGUgZXZhbHVhdGlvbiBydWxlcyBmb3IgdGhlIGRlY29yYXRvciBleHByZXNzaW9ucyBhcmUgdGhlIHNhbWUgYXMgZm9yXG5mdW5jdGlvbiBkZWNvcmF0b3JzLiAgVGhlIHJlc3VsdCBtdXN0IGJlIGEgY2xhc3Mgb2JqZWN0LCB3aGljaCBpcyB0aGVuXG5ib3VuZCB0byB0aGUgY2xhc3MgbmFtZS5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogVmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gYXJlXG5jbGFzcyBhdHRyaWJ1dGVzOyB0aGV5IGFyZSBzaGFyZWQgYnkgaW5zdGFuY2VzLiAgSW5zdGFuY2UgYXR0cmlidXRlc1xuY2FuIGJlIHNldCBpbiBhIG1ldGhvZCB3aXRoICJzZWxmLm5hbWUgPSB2YWx1ZSIuICBCb3RoIGNsYXNzIGFuZFxuaW5zdGFuY2UgYXR0cmlidXRlcyBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBub3RhdGlvbiAiInNlbGYubmFtZSIiLFxuYW5kIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBoaWRlcyBhIGNsYXNzIGF0dHJpYnV0ZSB3aXRoIHRoZSBzYW1lIG5hbWVcbndoZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZSB1c2VkIGFzIGRlZmF1bHRzXG5mb3IgaW5zdGFuY2UgYXR0cmlidXRlcywgYnV0IHVzaW5nIG11dGFibGUgdmFsdWVzIHRoZXJlIGNhbiBsZWFkIHRvXG51bmV4cGVjdGVkIHJlc3VsdHMuICAqRGVzY3JpcHRvcnMqIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBpbnN0YW5jZVxudmFyaWFibGVzIHdpdGggZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLVxuICBDbGFzcyBEZWNvcmF0b3JzXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gVGhlIGV4Y2VwdGlvbiBpcyBwcm9wYWdhdGVkIHRvIHRoZSBpbnZvY2F0aW9uIHN0YWNrIHVubGVzc1xuICAgIHRoZXJlIGlzIGEgImZpbmFsbHkiIGNsYXVzZSB3aGljaCBoYXBwZW5zIHRvIHJhaXNlIGFub3RoZXJcbiAgICBleGNlcHRpb24uIFRoYXQgbmV3IGV4Y2VwdGlvbiBjYXVzZXMgdGhlIG9sZCBvbmUgdG8gYmUgbG9zdC5cblxuWzJdIEN1cnJlbnRseSwgY29udHJvbCAiZmxvd3Mgb2ZmIHRoZSBlbmQiIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZlxuICAgIGFuIGV4Y2VwdGlvbiBvciB0aGUgZXhlY3V0aW9uIG9mIGEgInJldHVybiIsICJjb250aW51ZSIsIG9yXG4gICAgImJyZWFrIiBzdGF0ZW1lbnQuXG5cblszXSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZVxuICAgIGZ1bmN0aW9uIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgZnVuY3Rpb25cJ3MgIl9fZG9jX18iXG4gICAgYXR0cmlidXRlIGFuZCB0aGVyZWZvcmUgdGhlIGZ1bmN0aW9uXCdzICpkb2NzdHJpbmcqLlxuXG5bNF0gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgY2xhc3NcbiAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG5hbWVzcGFjZVwncyAiX19kb2NfXyIgaXRlbSBhbmRcbiAgICB0aGVyZWZvcmUgdGhlIGNsYXNzXCdzICpkb2NzdHJpbmcqLlxuJywKKyAnY2xhc3MnOiB1J1xuQ2xhc3MgZGVmaW5pdGlvbnNcbioqKioqKioqKioqKioqKioqXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkXG50eXBlIGhpZXJhcmNoeSopOlxuXG4gICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiIHN1aXRlXG4gICBpbmhlcml0YW5jZSA6Oj0gIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiXG4gICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgbGlzdFxudXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgKkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uKlxuZm9yIG1vcmUgYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYVxuY2xhc3Mgb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiBpbmhlcml0YW5jZVxubGlzdCBpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzICJvYmplY3QiOyBoZW5jZSxcblxuICAgY2xhc3MgRm9vOlxuICAgICAgIHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb28ob2JqZWN0KTpcbiAgICAgICBwYXNzXG5cblRoZSBjbGFzc1wncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAoc2VlXG4qTmFtaW5nIGFuZCBiaW5kaW5nKiksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kIHRoZVxub3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbmZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzXCdzIHN1aXRlIGZpbmlzaGVzIGV4ZWN1dGlvbiwgaXRzXG5leGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiBbNF0gQVxuY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlIGJhc2VcbmNsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeS5cblRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbFxubmFtZXNwYWNlLlxuXG5DbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG5cbkNsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucyxcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgY2xhc3MgRm9vOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IG11c3QgYmUgYSBjbGFzcyBvYmplY3QsIHdoaWNoIGlzIHRoZW5cbmJvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSBhdHRyaWJ1dGVzXG5jYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggInNlbGYubmFtZSA9IHZhbHVlIi4gIEJvdGggY2xhc3MgYW5kXG5pbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uICIic2VsZi5uYW1lIiIsXG5hbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgbmFtZVxud2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlIHVzZWQgYXMgZGVmYXVsdHNcbmZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXMgdGhlcmUgY2FuIGxlYWQgdG9cbnVuZXhwZWN0ZWQgcmVzdWx0cy4gICpEZXNjcmlwdG9ycyogY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlXG52YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuU2VlIGFsc286ICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtXG4gIENsYXNzIERlY29yYXRvcnNcbicsCiAgJ2NvbXBhcmlzb25zJzogdSdcbkNvbXBhcmlzb25zXG4qKioqKioqKioqKlxuXG5Vbmxpa2UgQywgYWxsIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBpbiBQeXRob24gaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSxcbndoaWNoIGlzIGxvd2VyIHRoYW4gdGhhdCBvZiBhbnkgYXJpdGhtZXRpYywgc2hpZnRpbmcgb3IgYml0d2lzZVxub3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSAiYSA8IGIgPCBjIiBoYXZlIHRoZVxuaW50ZXJwcmV0YXRpb24gdGhhdCBpcyBjb252ZW50aW9uYWwgaW4gbWF0aGVtYXRpY3M6XG5cbiAgIGNvbXBhcmlzb24gICAgOjo9IG9yX2V4cHIgKCBjb21wX29wZXJhdG9yIG9yX2V4cHIgKSpcbiAgIGNvbXBfb3BlcmF0b3IgOjo9ICI8IiB8ICI+IiB8ICI9PSIgfCAiPj0iIHwgIjw9IiB8ICIhPSJcbiAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG5cbkNvbXBhcmlzb25zIHlpZWxkIGJvb2xlYW4gdmFsdWVzOiAiVHJ1ZSIgb3IgIkZhbHNlIi5cblxuQ29tcGFyaXNvbnMgY2FuIGJlIGNoYWluZWQgYXJiaXRyYXJpbHksIGUuZy4sICJ4IDwgeSA8PSB6IiBpc1xuZXF1aXZhbGVudCB0byAieCA8IHkgYW5kIHkgPD0geiIsIGV4Y2VwdCB0aGF0ICJ5IiBpcyBldmFsdWF0ZWQgb25seVxub25jZSAoYnV0IGluIGJvdGggY2FzZXMgInoiIGlzIG5vdCBldmFsdWF0ZWQgYXQgYWxsIHdoZW4gInggPCB5IiBpc1xuZm91bmQgdG8gYmUgZmFsc2UpLlxuXG5Gb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgYW5kICpvcDEqLFxuKm9wMiosIC4uLiwgKm9wTiogYXJlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCB0aGVuICJhIG9wMSBiIG9wMiBjIC4uLiB5XG5vcE4geiIgaXMgZXF1aXZhbGVudCB0byAiYSBvcDEgYiBhbmQgYiBvcDIgYyBhbmQgLi4uIHkgb3BOIHoiLCBleGNlcHRcbnRoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG5cbk5vdGUgdGhhdCAiYSBvcDEgYiBvcDIgYyIgZG9lc25cJ3QgaW1wbHkgYW55IGtpbmQgb2YgY29tcGFyaXNvbiBiZXR3ZWVuXG4qYSogYW5kICpjKiwgc28gdGhhdCwgZS5nLiwgInggPCB5ID4geiIgaXMgcGVyZmVjdGx5IGxlZ2FsICh0aG91Z2hcbnBlcmhhcHMgbm90IHByZXR0eSkuXG5cblxuVmFsdWUgY29tcGFyaXNvbnNcbj09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRvcnMgIjwiLCAiPiIsICI9PSIsICI+PSIsICI8PSIsIGFuZCAiIT0iIGNvbXBhcmUgdGhlIHZhbHVlc1xub2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBkbyBub3QgbmVlZCB0byBoYXZlIHRoZSBzYW1lIHR5cGUuXG5cbkNoYXB0ZXIgKk9iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXMqIHN0YXRlcyB0aGF0IG9iamVjdHMgaGF2ZSBhIHZhbHVlXG4oaW4gYWRkaXRpb24gdG8gdHlwZSBhbmQgaWRlbnRpdHkpLiAgVGhlIHZhbHVlIG9mIGFuIG9iamVjdCBpcyBhXG5yYXRoZXIgYWJzdHJhY3Qgbm90aW9uIGluIFB5dGhvbjogRm9yIGV4YW1wbGUsIHRoZXJlIGlzIG5vIGNhbm9uaWNhbFxuYWNjZXNzIG1ldGhvZCBmb3IgYW4gb2JqZWN0XCdzIHZhbHVlLiAgQWxzbywgdGhlcmUgaXMgbm8gcmVxdWlyZW1lbnRcbnRoYXQgdGhlIHZhbHVlIG9mIGFuIG9iamVjdCBzaG91bGQgYmUgY29uc3RydWN0ZWQgaW4gYSBwYXJ0aWN1bGFyIHdheSxcbmUuZy4gY29tcHJpc2VkIG9mIGFsbCBpdHMgZGF0YSBhdHRyaWJ1dGVzLiBDb21wYXJpc29uIG9wZXJhdG9yc1xuaW1wbGVtZW50IGEgcGFydGljdWxhciBub3Rpb24gb2Ygd2hhdCB0aGUgdmFsdWUgb2YgYW4gb2JqZWN0IGlzLiAgT25lXG5jYW4gdGhpbmsgb2YgdGhlbSBhcyBkZWZpbmluZyB0aGUgdmFsdWUgb2YgYW4gb2JqZWN0IGluZGlyZWN0bHksIGJ5XG5tZWFucyBvZiB0aGVpciBjb21wYXJpc29uIGltcGxlbWVudGF0aW9uLlxuXG5CZWNhdXNlIGFsbCB0eXBlcyBhcmUgKGRpcmVjdCBvciBpbmRpcmVjdCkgc3VidHlwZXMgb2YgIm9iamVjdCIsIHRoZXlcbmluaGVyaXQgdGhlIGRlZmF1bHQgY29tcGFyaXNvbiBiZWhhdmlvciBmcm9tICJvYmplY3QiLiAgVHlwZXMgY2FuXG5jdXN0b21pemUgdGhlaXIgY29tcGFyaXNvbiBiZWhhdmlvciBieSBpbXBsZW1lbnRpbmcgKnJpY2ggY29tcGFyaXNvblxubWV0aG9kcyogbGlrZSAiX19sdF9fKCkiLCBkZXNjcmliZWQgaW4gKkJhc2ljIGN1c3RvbWl6YXRpb24qLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbiAoIj09IiBhbmQgIiE9IikgaXMgYmFzZWRcbm9uIHRoZSBpZGVudGl0eSBvZiB0aGUgb2JqZWN0cy4gIEhlbmNlLCBlcXVhbGl0eSBjb21wYXJpc29uIG9mXG5pbnN0YW5jZXMgd2l0aCB0aGUgc2FtZSBpZGVudGl0eSByZXN1bHRzIGluIGVxdWFsaXR5LCBhbmQgZXF1YWxpdHlcbmNvbXBhcmlzb24gb2YgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGlkZW50aXRpZXMgcmVzdWx0cyBpblxuaW5lcXVhbGl0eS4gIEEgbW90aXZhdGlvbiBmb3IgdGhpcyBkZWZhdWx0IGJlaGF2aW9yIGlzIHRoZSBkZXNpcmUgdGhhdFxuYWxsIG9iamVjdHMgc2hvdWxkIGJlIHJlZmxleGl2ZSAoaS5lLiAieCBpcyB5IiBpbXBsaWVzICJ4ID09IHkiKS5cblxuQSBkZWZhdWx0IG9yZGVyIGNvbXBhcmlzb24gKCI8IiwgIj4iLCAiPD0iLCBhbmQgIj49IikgaXMgbm90IHByb3ZpZGVkO1xuYW4gYXR0ZW1wdCByYWlzZXMgIlR5cGVFcnJvciIuICBBIG1vdGl2YXRpb24gZm9yIHRoaXMgZGVmYXVsdCBiZWhhdmlvclxuaXMgdGhlIGxhY2sgb2YgYSBzaW1pbGFyIGludmFyaWFudCBhcyBmb3IgZXF1YWxpdHkuXG5cblRoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBlcXVhbGl0eSBjb21wYXJpc29uLCB0aGF0IGluc3RhbmNlcyB3aXRoXG5kaWZmZXJlbnQgaWRlbnRpdGllcyBhcmUgYWx3YXlzIHVuZXF1YWwsIG1heSBiZSBpbiBjb250cmFzdCB0byB3aGF0XG50eXBlcyB3aWxsIG5lZWQgdGhhdCBoYXZlIGEgc2Vuc2libGUgZGVmaW5pdGlvbiBvZiBvYmplY3QgdmFsdWUgYW5kXG52YWx1ZS1iYXNlZCBlcXVhbGl0eS4gIFN1Y2ggdHlwZXMgd2lsbCBuZWVkIHRvIGN1c3RvbWl6ZSB0aGVpclxuY29tcGFyaXNvbiBiZWhhdmlvciwgYW5kIGluIGZhY3QsIGEgbnVtYmVyIG9mIGJ1aWx0LWluIHR5cGVzIGhhdmUgZG9uZVxudGhhdC5cblxuVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyB0aGUgY29tcGFyaXNvbiBiZWhhdmlvciBvZiB0aGUgbW9zdFxuaW1wb3J0YW50IGJ1aWx0LWluIHR5cGVzLlxuXG4qIE51bWJlcnMgb2YgYnVpbHQtaW4gbnVtZXJpYyB0eXBlcyAoKk51bWVyaWMgVHlwZXMgLS0tIGludCwgZmxvYXQsXG4gIGNvbXBsZXgqKSBhbmQgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgdHlwZXMgImZyYWN0aW9ucy5GcmFjdGlvbiIgYW5kXG4gICJkZWNpbWFsLkRlY2ltYWwiIGNhbiBiZSBjb21wYXJlZCB3aXRoaW4gYW5kIGFjcm9zcyB0aGVpciB0eXBlcyxcbiAgd2l0aCB0aGUgcmVzdHJpY3Rpb24gdGhhdCBjb21wbGV4IG51bWJlcnMgZG8gbm90IHN1cHBvcnQgb3JkZXJcbiAgY29tcGFyaXNvbi4gIFdpdGhpbiB0aGUgbGltaXRzIG9mIHRoZSB0eXBlcyBpbnZvbHZlZCwgdGhleSBjb21wYXJlXG4gIG1hdGhlbWF0aWNhbGx5IChhbGdvcml0aG1pY2FsbHkpIGNvcnJlY3Qgd2l0aG91dCBsb3NzIG9mIHByZWNpc2lvbi5cblxuICBUaGUgbm90LWEtbnVtYmVyIHZhbHVlcyAiZmxvYXQoXCdOYU5cJykiIGFuZCAiRGVjaW1hbChcJ05hTlwnKSIgYXJlXG4gIHNwZWNpYWwuICBUaGV5IGFyZSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcyAoInggaXMgeCIgaXMgdHJ1ZSkgYnV0XG4gIGFyZSBub3QgZXF1YWwgdG8gdGhlbXNlbHZlcyAoInggPT0geCIgaXMgZmFsc2UpLiAgQWRkaXRpb25hbGx5LFxuICBjb21wYXJpbmcgYW55IG51bWJlciB0byBhIG5vdC1hLW51bWJlciB2YWx1ZSB3aWxsIHJldHVybiAiRmFsc2UiLlxuICBGb3IgZXhhbXBsZSwgYm90aCAiMyA8IGZsb2F0KFwnTmFOXCcpIiBhbmQgImZsb2F0KFwnTmFOXCcpIDwgMyIgd2lsbFxuICByZXR1cm4gIkZhbHNlIi5cblxuKiBCaW5hcnkgc2VxdWVuY2VzIChpbnN0YW5jZXMgb2YgImJ5dGVzIiBvciAiYnl0ZWFycmF5IikgY2FuIGJlXG4gIGNvbXBhcmVkIHdpdGhpbiBhbmQgYWNyb3NzIHRoZWlyIHR5cGVzLiAgVGhleSBjb21wYXJlXG4gIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljIHZhbHVlcyBvZiB0aGVpciBlbGVtZW50cy5cblxuKiBTdHJpbmdzIChpbnN0YW5jZXMgb2YgInN0ciIpIGNvbXBhcmUgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlXG4gIG51bWVyaWNhbCBVbmljb2RlIGNvZGUgcG9pbnRzICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAib3JkKCkiKSBvZiB0aGVpciBjaGFyYWN0ZXJzLiBbM11cblxuICBTdHJpbmdzIGFuZCBiaW5hcnkgc2VxdWVuY2VzIGNhbm5vdCBiZSBkaXJlY3RseSBjb21wYXJlZC5cblxuKiBTZXF1ZW5jZXMgKGluc3RhbmNlcyBvZiAidHVwbGUiLCAibGlzdCIsIG9yICJyYW5nZSIpIGNhbiBiZVxuICBjb21wYXJlZCBvbmx5IHdpdGhpbiBlYWNoIG9mIHRoZWlyIHR5cGVzLCB3aXRoIHRoZSByZXN0cmljdGlvbiB0aGF0XG4gIHJhbmdlcyBkbyBub3Qgc3VwcG9ydCBvcmRlciBjb21wYXJpc29uLiAgRXF1YWxpdHkgY29tcGFyaXNvbiBhY3Jvc3NcbiAgdGhlc2UgdHlwZXMgcmVzdWx0cyBpbiB1bmVxdWFsaXR5LCBhbmQgb3JkZXJpbmcgY29tcGFyaXNvbiBhY3Jvc3NcbiAgdGhlc2UgdHlwZXMgcmFpc2VzICJUeXBlRXJyb3IiLlxuXG4gIFNlcXVlbmNlcyBjb21wYXJlIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIGNvbXBhcmlzb24gb2ZcbiAgY29ycmVzcG9uZGluZyBlbGVtZW50cywgd2hlcmVieSByZWZsZXhpdml0eSBvZiB0aGUgZWxlbWVudHMgaXNcbiAgZW5mb3JjZWQuXG5cbiAgSW4gZW5mb3JjaW5nIHJlZmxleGl2aXR5IG9mIGVsZW1lbnRzLCB0aGUgY29tcGFyaXNvbiBvZiBjb2xsZWN0aW9uc1xuICBhc3N1bWVzIHRoYXQgZm9yIGEgY29sbGVjdGlvbiBlbGVtZW50ICJ4IiwgInggPT0geCIgaXMgYWx3YXlzIHRydWUuXG4gIEJhc2VkIG9uIHRoYXQgYXNzdW1wdGlvbiwgZWxlbWVudCBpZGVudGl0eSBpcyBjb21wYXJlZCBmaXJzdCwgYW5kXG4gIGVsZW1lbnQgY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgb25seSBmb3IgZGlzdGluY3QgZWxlbWVudHMuICBUaGlzXG4gIGFwcHJvYWNoIHlpZWxkcyB0aGUgc2FtZSByZXN1bHQgYXMgYSBzdHJpY3QgZWxlbWVudCBjb21wYXJpc29uXG4gIHdvdWxkLCBpZiB0aGUgY29tcGFyZWQgZWxlbWVudHMgYXJlIHJlZmxleGl2ZS4gIEZvciBub24tcmVmbGV4aXZlXG4gIGVsZW1lbnRzLCB0aGUgcmVzdWx0IGlzIGRpZmZlcmVudCB0aGFuIGZvciBzdHJpY3QgZWxlbWVudFxuICBjb21wYXJpc29uLCBhbmQgbWF5IGJlIHN1cnByaXNpbmc6ICBUaGUgbm9uLXJlZmxleGl2ZSBub3QtYS1udW1iZXJcbiAgdmFsdWVzIGZvciBleGFtcGxlIHJlc3VsdCBpbiB0aGUgZm9sbG93aW5nIGNvbXBhcmlzb24gYmVoYXZpb3Igd2hlblxuICB1c2VkIGluIGEgbGlzdDpcblxuICAgICA+Pj4gbmFuID0gZmxvYXQoXCdOYU5cJylcbiAgICAgPj4+IG5hbiBpcyBuYW5cbiAgICAgVHJ1ZVxuICAgICA+Pj4gbmFuID09IG5hblxuICAgICBGYWxzZSAgICAgICAgICAgICAgICAgPC0tIHRoZSBkZWZpbmVkIG5vbi1yZWZsZXhpdmUgYmVoYXZpb3Igb2YgTmFOXG4gICAgID4+PiBbbmFuXSA9PSBbbmFuXVxuICAgICBUcnVlICAgICAgICAgICAgICAgICAgPC0tIGxpc3QgZW5mb3JjZXMgcmVmbGV4aXZpdHkgYW5kIHRlc3RzIGlkZW50aXR5IGZpcnN0XG5cbiAgTGV4aWNvZ3JhcGhpY2FsIGNvbXBhcmlzb24gYmV0d2VlbiBidWlsdC1pbiBjb2xsZWN0aW9ucyB3b3JrcyBhc1xuICBmb2xsb3dzOlxuXG4gICogRm9yIHR3byBjb2xsZWN0aW9ucyB0byBjb21wYXJlIGVxdWFsLCB0aGV5IG11c3QgYmUgb2YgdGhlIHNhbWVcbiAgICB0eXBlLCBoYXZlIHRoZSBzYW1lIGxlbmd0aCwgYW5kIGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5nXG4gICAgZWxlbWVudHMgbXVzdCBjb21wYXJlIGVxdWFsIChmb3IgZXhhbXBsZSwgIlsxLDJdID09ICgxLDIpIiBpc1xuICAgIGZhbHNlIGJlY2F1c2UgdGhlIHR5cGUgaXMgbm90IHRoZSBzYW1lKS5cblxuICAqIENvbGxlY3Rpb25zIHRoYXQgc3VwcG9ydCBvcmRlciBjb21wYXJpc29uIGFyZSBvcmRlcmVkIHRoZSBzYW1lXG4gICAgYXMgdGhlaXIgZmlyc3QgdW5lcXVhbCBlbGVtZW50cyAoZm9yIGV4YW1wbGUsICJbMSwyLHhdIDw9IFsxLDIseV0iXG4gICAgaGFzIHRoZSBzYW1lIHZhbHVlIGFzICJ4IDw9IHkiKS4gIElmIGEgY29ycmVzcG9uZGluZyBlbGVtZW50IGRvZXNcbiAgICBub3QgZXhpc3QsIHRoZSBzaG9ydGVyIGNvbGxlY3Rpb24gaXMgb3JkZXJlZCBmaXJzdCAoZm9yIGV4YW1wbGUsXG4gICAgIlsxLDJdIDwgWzEsMiwzXSIgaXMgdHJ1ZSkuXG5cbiogTWFwcGluZ3MgKGluc3RhbmNlcyBvZiAiZGljdCIpIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleVxuICBoYXZlIGVxdWFsICooa2V5LCB2YWx1ZSkqIHBhaXJzLiBFcXVhbGl0eSBjb21wYXJpc29uIG9mIHRoZSBrZXlzIGFuZFxuICBlbGVtZW50cyBlbmZvcmNlcyByZWZsZXhpdml0eS5cblxuICBPcmRlciBjb21wYXJpc29ucyAoIjwiLCAiPiIsICI8PSIsIGFuZCAiPj0iKSByYWlzZSAiVHlwZUVycm9yIi5cblxuKiBTZXRzIChpbnN0YW5jZXMgb2YgInNldCIgb3IgImZyb3plbnNldCIpIGNhbiBiZSBjb21wYXJlZCB3aXRoaW5cbiAgYW5kIGFjcm9zcyB0aGVpciB0eXBlcy5cblxuICBUaGV5IGRlZmluZSBvcmRlciBjb21wYXJpc29uIG9wZXJhdG9ycyB0byBtZWFuIHN1YnNldCBhbmQgc3VwZXJzZXRcbiAgdGVzdHMuICBUaG9zZSByZWxhdGlvbnMgZG8gbm90IGRlZmluZSB0b3RhbCBvcmRlcmluZ3MgKGZvciBleGFtcGxlLFxuICB0aGUgdHdvIHNldHMgInsxLDJ9IiBhbmQgInsyLDN9IiBhcmUgbm90IGVxdWFsLCBub3Igc3Vic2V0cyBvZiBvbmVcbiAgYW5vdGhlciwgbm9yIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlcikuICBBY2NvcmRpbmdseSwgc2V0cyBhcmUgbm90XG4gIGFwcHJvcHJpYXRlIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlcGVuZCBvbiB0b3RhbCBvcmRlcmluZ1xuICAoZm9yIGV4YW1wbGUsICJtaW4oKSIsICJtYXgoKSIsIGFuZCAic29ydGVkKCkiIHByb2R1Y2UgdW5kZWZpbmVkXG4gIHJlc3VsdHMgZ2l2ZW4gYSBsaXN0IG9mIHNldHMgYXMgaW5wdXRzKS5cblxuICBDb21wYXJpc29uIG9mIHNldHMgZW5mb3JjZXMgcmVmbGV4aXZpdHkgb2YgaXRzIGVsZW1lbnRzLlxuXG4qIE1vc3Qgb3RoZXIgYnVpbHQtaW4gdHlwZXMgaGF2ZSBubyBjb21wYXJpc29uIG1ldGhvZHMgaW1wbGVtZW50ZWQsXG4gIHNvIHRoZXkgaW5oZXJpdCB0aGUgZGVmYXVsdCBjb21wYXJpc29uIGJlaGF2aW9yLlxuXG5Vc2VyLWRlZmluZWQgY2xhc3NlcyB0aGF0IGN1c3RvbWl6ZSB0aGVpciBjb21wYXJpc29uIGJlaGF2aW9yIHNob3VsZFxuZm9sbG93IHNvbWUgY29uc2lzdGVuY3kgcnVsZXMsIGlmIHBvc3NpYmxlOlxuXG4qIEVxdWFsaXR5IGNvbXBhcmlzb24gc2hvdWxkIGJlIHJlZmxleGl2ZS4gSW4gb3RoZXIgd29yZHMsIGlkZW50aWNhbFxuICBvYmplY3RzIHNob3VsZCBjb21wYXJlIGVxdWFsOlxuXG4gICAgICJ4IGlzIHkiIGltcGxpZXMgInggPT0geSJcblxuKiBDb21wYXJpc29uIHNob3VsZCBiZSBzeW1tZXRyaWMuIEluIG90aGVyIHdvcmRzLCB0aGUgZm9sbG93aW5nXG4gIGV4cHJlc3Npb25zIHNob3VsZCBoYXZlIHRoZSBzYW1lIHJlc3VsdDpcblxuICAgICAieCA9PSB5IiBhbmQgInkgPT0geCJcblxuICAgICAieCAhPSB5IiBhbmQgInkgIT0geCJcblxuICAgICAieCA8IHkiIGFuZCAieSA+IHgiXG5cbiAgICAgInggPD0geSIgYW5kICJ5ID49IHgiXG5cbiogQ29tcGFyaXNvbiBzaG91bGQgYmUgdHJhbnNpdGl2ZS4gVGhlIGZvbGxvd2luZyAobm9uLWV4aGF1c3RpdmUpXG4gIGV4YW1wbGVzIGlsbHVzdHJhdGUgdGhhdDpcblxuICAgICAieCA+IHkgYW5kIHkgPiB6IiBpbXBsaWVzICJ4ID4geiJcblxuICAgICAieCA8IHkgYW5kIHkgPD0geiIgaW1wbGllcyAieCA8IHoiXG5cbiogSW52ZXJzZSBjb21wYXJpc29uIHNob3VsZCByZXN1bHQgaW4gdGhlIGJvb2xlYW4gbmVnYXRpb24uIEluIG90aGVyXG4gIHdvcmRzLCB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb25zIHNob3VsZCBoYXZlIHRoZSBzYW1lIHJlc3VsdDpcblxuICAgICAieCA9PSB5IiBhbmQgIm5vdCB4ICE9IHkiXG5cbiAgICAgInggPCB5IiBhbmQgIm5vdCB4ID49IHkiIChmb3IgdG90YWwgb3JkZXJpbmcpXG5cbiAgICAgInggPiB5IiBhbmQgIm5vdCB4IDw9IHkiIChmb3IgdG90YWwgb3JkZXJpbmcpXG5cbiAgVGhlIGxhc3QgdHdvIGV4cHJlc3Npb25zIGFwcGx5IHRvIHRvdGFsbHkgb3JkZXJlZCBjb2xsZWN0aW9ucyAoZS5nLlxuICB0byBzZXF1ZW5jZXMsIGJ1dCBub3QgdG8gc2V0cyBvciBtYXBwaW5ncykuIFNlZSBhbHNvIHRoZVxuICAidG90YWxfb3JkZXJpbmcoKSIgZGVjb3JhdG9yLlxuXG5QeXRob24gZG9lcyBub3QgZW5mb3JjZSB0aGVzZSBjb25zaXN0ZW5jeSBydWxlcy4gSW4gZmFjdCwgdGhlXG5ub3QtYS1udW1iZXIgdmFsdWVzIGFyZSBhbiBleGFtcGxlIGZvciBub3QgZm9sbG93aW5nIHRoZXNlIHJ1bGVzLlxuXG5cbk1lbWJlcnNoaXAgdGVzdCBvcGVyYXRpb25zXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb3BlcmF0b3JzICJpbiIgYW5kICJub3QgaW4iIHRlc3QgZm9yIG1lbWJlcnNoaXAuICAieCBpbiBzIlxuZXZhbHVhdGVzIHRvIHRydWUgaWYgKngqIGlzIGEgbWVtYmVyIG9mICpzKiwgYW5kIGZhbHNlIG90aGVyd2lzZS4gICJ4XG5ub3QgaW4gcyIgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgInggaW4gcyIuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzXG5hbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCAiaW4iIHRlc3RzXG53aGV0aGVyIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlcyBzdWNoIGFzXG5saXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbmV4cHJlc3Npb24gInggaW4geSIgaXMgZXF1aXZhbGVudCB0byAiYW55KHggaXMgZSBvciB4ID09IGUgZm9yIGUgaW5cbnkpIi5cblxuRm9yIHRoZSBzdHJpbmcgYW5kIGJ5dGVzIHR5cGVzLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KiBpc1xuYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzICJ5LmZpbmQoeCkgIT0gLTEiLiAgRW1wdHlcbnN0cmluZ3MgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGJlIGEgc3Vic3RyaW5nIG9mIGFueSBvdGhlciBzdHJpbmcsXG5zbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgIl9fY29udGFpbnNfXygpIiBtZXRob2QsICJ4XG5pbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICJ5Ll9fY29udGFpbnNfXyh4KSIgaXMgdHJ1ZS5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiBidXQgZG9cbmRlZmluZSAiX19pdGVyX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgc29tZSB2YWx1ZSAieiIgd2l0aCAieCA9PSB6IlxuaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgInkiLiAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZFxuZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uLlxuXG5MYXN0bHksIHRoZSBvbGQtc3R5bGUgaXRlcmF0aW9uIHByb3RvY29sIGlzIHRyaWVkOiBpZiBhIGNsYXNzIGRlZmluZXNcbiJfX2dldGl0ZW1fXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhIG5vbi1cbm5lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCAieCA9PSB5W2ldIiwgYW5kIGFsbCBsb3dlclxuaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSAiSW5kZXhFcnJvciIgZXhjZXB0aW9uLiAgKElmIGFueSBvdGhlclxuZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCBleGNlcHRpb24pLlxuXG5UaGUgb3BlcmF0b3IgIm5vdCBpbiIgaXMgZGVmaW5lZCB0byBoYXZlIHRoZSBpbnZlcnNlIHRydWUgdmFsdWUgb2ZcbiJpbiIuXG5cblxuSWRlbnRpdHkgY29tcGFyaXNvbnNcbj09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRvcnMgImlzIiBhbmQgImlzIG5vdCIgdGVzdCBmb3Igb2JqZWN0IGlkZW50aXR5OiAieCBpcyB5IiBpc1xudHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgInggaXMgbm90IHkiXG55aWVsZHMgdGhlIGludmVyc2UgdHJ1dGggdmFsdWUuIFs0XVxuJywKLSAnY29tcG91bmQnOiB1J1xuQ29tcG91bmQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKlxuXG5Db21wb3VuZCBzdGF0ZW1lbnRzIGNvbnRhaW4gKGdyb3VwcyBvZikgb3RoZXIgc3RhdGVtZW50czsgdGhleSBhZmZlY3Rcbm9yIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aG9zZSBvdGhlciBzdGF0ZW1lbnRzIGluIHNvbWUgd2F5LiAgSW5cbmdlbmVyYWwsIGNvbXBvdW5kIHN0YXRlbWVudHMgc3BhbiBtdWx0aXBsZSBsaW5lcywgYWx0aG91Z2ggaW4gc2ltcGxlXG5pbmNhcm5hdGlvbnMgYSB3aG9sZSBjb21wb3VuZCBzdGF0ZW1lbnQgbWF5IGJlIGNvbnRhaW5lZCBpbiBvbmUgbGluZS5cblxuVGhlICJpZiIsICJ3aGlsZSIgYW5kICJmb3IiIHN0YXRlbWVudHMgaW1wbGVtZW50IHRyYWRpdGlvbmFsIGNvbnRyb2xcbmZsb3cgY29uc3RydWN0cy4gICJ0cnkiIHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXBcbmNvZGUgZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cywgd2hpbGUgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgYWxsb3dzIHRoZVxuZXhlY3V0aW9uIG9mIGluaXRpYWxpemF0aW9uIGFuZCBmaW5hbGl6YXRpb24gY29kZSBhcm91bmQgYSBibG9jayBvZlxuY29kZS4gIEZ1bmN0aW9uIGFuZCBjbGFzcyBkZWZpbml0aW9ucyBhcmUgYWxzbyBzeW50YWN0aWNhbGx5IGNvbXBvdW5kXG5zdGF0ZW1lbnRzLlxuXG5BIGNvbXBvdW5kIHN0YXRlbWVudCBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSBcJ2NsYXVzZXMuXCcgIEEgY2xhdXNlXG5jb25zaXN0cyBvZiBhIGhlYWRlciBhbmQgYSBcJ3N1aXRlLlwnICBUaGUgY2xhdXNlIGhlYWRlcnMgb2YgYVxucGFydGljdWxhciBjb21wb3VuZCBzdGF0ZW1lbnQgYXJlIGFsbCBhdCB0aGUgc2FtZSBpbmRlbnRhdGlvbiBsZXZlbC5cbkVhY2ggY2xhdXNlIGhlYWRlciBiZWdpbnMgd2l0aCBhIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIGtleXdvcmQgYW5kIGVuZHNcbndpdGggYSBjb2xvbi4gIEEgc3VpdGUgaXMgYSBncm91cCBvZiBzdGF0ZW1lbnRzIGNvbnRyb2xsZWQgYnkgYVxuY2xhdXNlLiAgQSBzdWl0ZSBjYW4gYmUgb25lIG9yIG1vcmUgc2VtaWNvbG9uLXNlcGFyYXRlZCBzaW1wbGVcbnN0YXRlbWVudHMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgaGVhZGVyLCBmb2xsb3dpbmcgdGhlIGhlYWRlclwnc1xuY29sb24sIG9yIGl0IGNhbiBiZSBvbmUgb3IgbW9yZSBpbmRlbnRlZCBzdGF0ZW1lbnRzIG9uIHN1YnNlcXVlbnRcbmxpbmVzLiAgT25seSB0aGUgbGF0dGVyIGZvcm0gb2YgYSBzdWl0ZSBjYW4gY29udGFpbiBuZXN0ZWQgY29tcG91bmRcbnN0YXRlbWVudHM7IHRoZSBmb2xsb3dpbmcgaXMgaWxsZWdhbCwgbW9zdGx5IGJlY2F1c2UgaXQgd291bGRuXCd0IGJlXG5jbGVhciB0byB3aGljaCAiaWYiIGNsYXVzZSBhIGZvbGxvd2luZyAiZWxzZSIgY2xhdXNlIHdvdWxkIGJlbG9uZzpcblxuICAgaWYgdGVzdDE6IGlmIHRlc3QyOiBwcmludCh4KVxuXG5BbHNvIG5vdGUgdGhhdCB0aGUgc2VtaWNvbG9uIGJpbmRzIHRpZ2h0ZXIgdGhhbiB0aGUgY29sb24gaW4gdGhpc1xuY29udGV4dCwgc28gdGhhdCBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGVpdGhlciBhbGwgb3Igbm9uZSBvZiB0aGVcbiJwcmludCgpIiBjYWxscyBhcmUgZXhlY3V0ZWQ6XG5cbiAgIGlmIHggPCB5IDwgejogcHJpbnQoeCk7IHByaW50KHkpOyBwcmludCh6KVxuXG5TdW1tYXJpemluZzpcblxuICAgY29tcG91bmRfc3RtdCA6Oj0gaWZfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aGlsZV9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IGZvcl9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHRyeV9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHdpdGhfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmdW5jZGVmXG4gICAgICAgICAgICAgICAgICAgICB8IGNsYXNzZGVmXG4gICBzdWl0ZSAgICAgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IE5FV0xJTkUgSU5ERU5UIHN0YXRlbWVudCsgREVERU5UXG4gICBzdGF0ZW1lbnQgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IGNvbXBvdW5kX3N0bXRcbiAgIHN0bXRfbGlzdCAgICAgOjo9IHNpbXBsZV9zdG10ICgiOyIgc2ltcGxlX3N0bXQpKiBbIjsiXVxuXG5Ob3RlIHRoYXQgc3RhdGVtZW50cyBhbHdheXMgZW5kIGluIGEgIk5FV0xJTkUiIHBvc3NpYmx5IGZvbGxvd2VkIGJ5IGFcbiJERURFTlQiLiAgQWxzbyBub3RlIHRoYXQgb3B0aW9uYWwgY29udGludWF0aW9uIGNsYXVzZXMgYWx3YXlzIGJlZ2luXG53aXRoIGEga2V5d29yZCB0aGF0IGNhbm5vdCBzdGFydCBhIHN0YXRlbWVudCwgdGh1cyB0aGVyZSBhcmUgbm9cbmFtYmlndWl0aWVzICh0aGUgXCdkYW5nbGluZyAiZWxzZSJcJyBwcm9ibGVtIGlzIHNvbHZlZCBpbiBQeXRob24gYnlcbnJlcXVpcmluZyBuZXN0ZWQgImlmIiBzdGF0ZW1lbnRzIHRvIGJlIGluZGVudGVkKS5cblxuVGhlIGZvcm1hdHRpbmcgb2YgdGhlIGdyYW1tYXIgcnVsZXMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucyBwbGFjZXNcbmVhY2ggY2xhdXNlIG9uIGEgc2VwYXJhdGUgbGluZSBmb3IgY2xhcml0eS5cblxuXG5UaGUgImlmIiBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PVxuXG5UaGUgImlmIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZlxucHJlc2VudCwgaXMgZXhlY3V0ZWQuXG5cblxuVGhlICJ3aGlsZSIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT1cblxuVGhlICJ3aGlsZSIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIHJlcGVhdGVkIGV4ZWN1dGlvbiBhcyBsb25nIGFzIGFuXG5leHByZXNzaW9uIGlzIHRydWU6XG5cbiAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCBleGVjdXRlcyB0aGVcbmZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCB0aW1lXG5pdCBpcyB0ZXN0ZWQpIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWRcbmFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbmV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGdvZXMgYmFja1xudG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cblxuXG5UaGUgImZvciIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09XG5cblRoZSAiZm9yIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGEgc2VxdWVuY2VcbihzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuImV4cHJlc3Npb25fbGlzdCIuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoIGl0ZW1cbnByb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHRoZSBpdGVyYXRvci4gIEVhY2hcbml0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bGVzXG5mb3IgYXNzaWdubWVudHMgKHNlZSAqQXNzaWdubWVudCBzdGF0ZW1lbnRzKiksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuIHRoZVxuc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiksXG50aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgdGhlIGxvb3BcbnRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgY29udGludWVzXG53aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlICJlbHNlIiBjbGF1c2UgaWYgdGhlcmUgaXMgbm8gbmV4dFxuaXRlbS5cblxuVGhlIGZvci1sb29wIG1ha2VzIGFzc2lnbm1lbnRzIHRvIHRoZSB2YXJpYWJsZXMocykgaW4gdGhlIHRhcmdldCBsaXN0LlxuVGhpcyBvdmVyd3JpdGVzIGFsbCBwcmV2aW91cyBhc3NpZ25tZW50cyB0byB0aG9zZSB2YXJpYWJsZXMgaW5jbHVkaW5nXG50aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG5cbiAgIGZvciBpIGluIHJhbmdlKDEwKTpcbiAgICAgICBwcmludChpKVxuICAgICAgIGkgPSA1ICAgICAgICAgICAgICMgdGhpcyB3aWxsIG5vdCBhZmZlY3QgdGhlIGZvci1sb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGkgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBuZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCBpbiB0aGUgcmFuZ2VcblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgdGhleSB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXRcbmFsbCBieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAicmFuZ2UoKSIgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyAiZm9yIGlcbjo9IGEgdG8gYiBkbyI7IGUuZy4sICJsaXN0KHJhbmdlKDMpKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsIDJdIi5cblxuTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGVcbiAgbG9vcCAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbiAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4gIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4gIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgbWVhbnNcbiAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tIHRoZVxuICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4IG9mXG4gIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiB0aGVcbiAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4gIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcblxuICAgICBmb3IgeCBpbiBhWzpdOlxuICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG5cblxuVGhlICJ0cnkiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PVxuXG5UaGUgInRyeSIgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgY29kZVxuZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcblxuICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbiAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiBpZGVudGlmaWVyXV0gIjoiIHN1aXRlKStcbiAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4gICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuXG5UaGUgImV4Y2VwdCIgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuIG5vXG5leGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG5leGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBzdWl0ZSwgYSBzZWFyY2ggZm9yIGFuXG5leGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdCBjbGF1c2VzXG5pbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuIGV4cHJlc3Npb24tXG5sZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlcyBhbnlcbmV4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdCBleHByZXNzaW9uXG5pcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGUgcmVzdWx0aW5nXG5vYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpcyBjb21wYXRpYmxlXG53aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZSBleGNlcHRpb25cbm9iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlIGV4Y2VwdGlvbi5cblxuSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uIHN0YWNrLlxuWzFdXG5cbklmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG5yYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgYW5kXG5hIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxudGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSAidHJ5IiBzdGF0ZW1lbnQgcmFpc2VkXG50aGUgZXhjZXB0aW9uKS5cblxuV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbnRoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSAiYXMiIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLCBpZlxucHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdFxuY2xhdXNlcyBtdXN0IGhhdmUgYW4gZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzIGJsb2NrIGlzXG5yZWFjaGVkLCBleGVjdXRpb24gY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5IHN0YXRlbWVudC5cbihUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgZXhjZXB0aW9uLFxuYW5kIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIHRoZSB0cnkgY2xhdXNlIG9mIHRoZSBpbm5lciBoYW5kbGVyLCB0aGVcbm91dGVyIGhhbmRsZXIgd2lsbCBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24uKVxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyAiYXMgdGFyZ2V0IiwgaXQgaXMgY2xlYXJlZFxuYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICBmb29cblxud2FzIHRyYW5zbGF0ZWQgdG9cblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIGZvb1xuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIGRlbCBOXG5cblRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gYmVcbmFibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSBjbGVhcmVkXG5iZWNhdXNlIHdpdGggdGhlIHRyYWNlYmFjayBhdHRhY2hlZCB0byB0aGVtLCB0aGV5IGZvcm0gYSByZWZlcmVuY2VcbmN5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSBhbGl2ZVxudW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cblxuQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG5leGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgInN5cyIgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzZWQgdmlhXG4ic3lzLmV4Y19pbmZvKCkiLiAic3lzLmV4Y19pbmZvKCkiIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3Rpbmcgb2YgdGhlXG5leGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKSBpZGVudGlmeWluZyB0aGUgcG9pbnQgaW4gdGhlXG5wcm9ncmFtIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuICAic3lzLmV4Y19pbmZvKCkiIHZhbHVlcyBhcmVcbnJlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZ1xuZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG5cblRoZSBvcHRpb25hbCAiZWxzZSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG50aGUgZW5kIG9mIHRoZSAidHJ5IiBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSAiZWxzZSIgY2xhdXNlIGFyZVxubm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyAiZXhjZXB0IiBjbGF1c2VzLlxuXG5JZiAiZmluYWxseSIgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gIFRoZSAidHJ5IlxuY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55ICJleGNlcHQiIGFuZCAiZWxzZSIgY2xhdXNlcy4gIElmIGFuXG5leGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90IGhhbmRsZWQsIHRoZVxuZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZC4gIElmXG50aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiBpdCBpcyByZS1yYWlzZWQgYXQgdGhlIGVuZCBvZiB0aGUgImZpbmFsbHkiXG5jbGF1c2UuICBJZiB0aGUgImZpbmFsbHkiIGNsYXVzZSByYWlzZXMgYW5vdGhlciBleGNlcHRpb24sIHRoZSBzYXZlZFxuZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gSWYgdGhlICJmaW5hbGx5IlxuY2xhdXNlIGV4ZWN1dGVzIGEgInJldHVybiIgb3IgImJyZWFrIiBzdGF0ZW1lbnQsIHRoZSBzYXZlZCBleGNlcHRpb25cbmlzIGRpc2NhcmRlZDpcblxuICAgPj4+IGRlZiBmKCk6XG4gICAuLi4gICAgIHRyeTpcbiAgIC4uLiAgICAgICAgIDEvMFxuICAgLi4uICAgICBmaW5hbGx5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIDQyXG4gICAuLi5cbiAgID4+PiBmKClcbiAgIDQyXG5cblRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSBkdXJpbmdcbmV4ZWN1dGlvbiBvZiB0aGUgImZpbmFsbHkiIGNsYXVzZS5cblxuV2hlbiBhICJyZXR1cm4iLCAiYnJlYWsiIG9yICJjb250aW51ZSIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluIHRoZVxuInRyeSIgc3VpdGUgb2YgYSAidHJ5Ii4uLiJmaW5hbGx5IiBzdGF0ZW1lbnQsIHRoZSAiZmluYWxseSIgY2xhdXNlIGlzXG5hbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSAiY29udGludWUiIHN0YXRlbWVudCBpcyBpbGxlZ2FsIGluXG50aGUgImZpbmFsbHkiIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYSBwcm9ibGVtIHdpdGggdGhlIGN1cnJlbnRcbmltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZSBsaWZ0ZWQgaW4gdGhlIGZ1dHVyZSkuXG5cblRoZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBsYXN0ICJyZXR1cm4iXG5zdGF0ZW1lbnQgZXhlY3V0ZWQuICBTaW5jZSB0aGUgImZpbmFsbHkiIGNsYXVzZSBhbHdheXMgZXhlY3V0ZXMsIGFcbiJyZXR1cm4iIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgImZpbmFsbHkiIGNsYXVzZSB3aWxsIGFsd2F5cyBiZSB0aGVcbmxhc3Qgb25lIGV4ZWN1dGVkOlxuXG4gICA+Pj4gZGVmIGZvbygpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICByZXR1cm4gXCd0cnlcJ1xuICAgLi4uICAgICBmaW5hbGx5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwnZmluYWxseVwnXG4gICAuLi5cbiAgID4+PiBmb28oKVxuICAgXCdmaW5hbGx5XCdcblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgInJhaXNlIiBzdGF0ZW1lbnQgdG9cbmdlbmVyYXRlIGV4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuXG5cblRoZSAid2l0aCIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgIndpdGgiIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrIHdpdGhcbm1ldGhvZHMgZGVmaW5lZCBieSBhIGNvbnRleHQgbWFuYWdlciAoc2VlIHNlY3Rpb24gKldpdGggU3RhdGVtZW50XG5Db250ZXh0IE1hbmFnZXJzKikuIFRoaXMgYWxsb3dzIGNvbW1vbiAidHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiXG51c2FnZSBwYXR0ZXJucyB0byBiZSBlbmNhcHN1bGF0ZWQgZm9yIGNvbnZlbmllbnQgcmV1c2UuXG5cbiAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cblxuVGhlIGV4ZWN1dGlvbiBvZiB0aGUgIndpdGgiIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgYXNcbmZvbGxvd3M6XG5cbjEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSAid2l0aF9pdGVtIilcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuXG4zLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2VudGVyX18oKSIgbWV0aG9kIGlzIGludm9rZWQuXG5cbjQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgIndpdGgiIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSAiX19lbnRlcl9fKCkiIGlzIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBOb3RlOiBUaGUgIndpdGgiIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlICJfX2VudGVyX18oKSJcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiAiX19leGl0X18oKSIgd2lsbCBhbHdheXMgYmVcbiAgICAgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvIHRoZVxuICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yIG9jY3VycmluZ1xuICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuXG41LiBUaGUgc3VpdGUgaXMgZXhlY3V0ZWQuXG5cbjYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgYW5cbiAgIGV4Y2VwdGlvbiBjYXVzZWQgdGhlIHN1aXRlIHRvIGJlIGV4aXRlZCwgaXRzIHR5cGUsIHZhbHVlLCBhbmRcbiAgIHRyYWNlYmFjayBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byAiX19leGl0X18oKSIuIE90aGVyd2lzZSwgdGhyZWVcbiAgICJOb25lIiBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiB2YWx1ZVxuICAgZnJvbSB0aGUgIl9fZXhpdF9fKCkiIG1ldGhvZCB3YXMgZmFsc2UsIHRoZSBleGNlcHRpb24gaXMgcmVyYWlzZWQuXG4gICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzIHN1cHByZXNzZWQsIGFuZFxuICAgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nIHRoZSAid2l0aCJcbiAgIHN0YXRlbWVudC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiBhbiBleGNlcHRpb24sIHRoZVxuICAgcmV0dXJuIHZhbHVlIGZyb20gIl9fZXhpdF9fKCkiIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSAid2l0aCIgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcblxuICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4gICAgICAgc3VpdGVcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICB3aXRoIEEoKSBhcyBhOlxuICAgICAgIHdpdGggQigpIGFzIGI6XG4gICAgICAgICAgIHN1aXRlXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgZXhwcmVzc2lvbnMuXG5cblNlZSBhbHNvOiAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gIndpdGgiXG4gICAgIHN0YXRlbWVudC5cblxuXG5GdW5jdGlvbiBkZWZpbml0aW9uc1xuPT09PT09PT09PT09PT09PT09PT1cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IChzZWVcbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopOlxuXG4gICBmdW5jZGVmICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcbiAgIGRlY29yYXRvcnMgICAgIDo6PSBkZWNvcmF0b3IrXG4gICBkZWNvcmF0b3IgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgW3BhcmFtZXRlcl9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbiAgIGRvdHRlZF9uYW1lICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4gICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuICAgICAgICAgICAgICAgICAgICAgIHwgIioiIFtwYXJhbWV0ZXJdICgiLCIgZGVmcGFyYW1ldGVyKSogWyIsIiAiKioiIHBhcmFtZXRlcl1cbiAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgfCBkZWZwYXJhbWV0ZXIgWyIsIl0gKVxuICAgcGFyYW1ldGVyICAgICAgOjo9IGlkZW50aWZpZXIgWyI6IiBleHByZXNzaW9uXVxuICAgZGVmcGFyYW1ldGVyICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4gICBmdW5jbmFtZSAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgZXhlY3V0aW9uIGJpbmRzXG50aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UgdG8gYSBmdW5jdGlvbiBvYmplY3RcbihhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG5mdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZ2xvYmFsIG5hbWVzcGFjZVxuYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG5cblRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7IHRoaXMgZ2V0c1xuZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuIFszXVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbmV4cHJlc3Npb25zLiBEZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBpc1xuZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICBUaGVcbnJlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gb2JqZWN0XG5hcyB0aGUgb25seSBhcmd1bWVudC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIGJvdW5kIHRvIHRoZSBmdW5jdGlvbiBuYW1lXG5pbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGluXG5uZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBkZWYgZnVuYygpOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgZGVmIGZ1bmMoKTogcGFzc1xuICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG5cbldoZW4gb25lIG9yIG1vcmUgKnBhcmFtZXRlcnMqIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogIj0iXG4qZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcy4iXG5Gb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nICphcmd1bWVudCogbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiIioiIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tIHRoaXNcbmlzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgZ3JhbW1hci5cblxuKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgd2hlbiB0aGVcbmZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzXG5ldmFsdWF0ZWQgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1cbmNvbXB1dGVkIiB2YWx1ZSBpcyB1c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50XG50byB1bmRlcnN0YW5kIHdoZW4gYSBkZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGFcbmxpc3Qgb3IgYSBkaWN0aW9uYXJ5OiBpZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieVxuYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYSBsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLlxuVGhpcyBpcyBnZW5lcmFsbHkgbm90IHdoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gdXNlXG4iTm9uZSIgYXMgdGhlIGRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mIHRoZVxuZnVuY3Rpb24sIGUuZy46XG5cbiAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbiAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4gICAgICAgICAgIHBlbmd1aW4gPSBbXVxuICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbiAgICAgICByZXR1cm4gcGVuZ3VpblxuXG5GdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb25cbipDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnNcbm1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbVxua2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybVxuIiIqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nIGFueVxuZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZiB0aGVcbmZvcm0gIiIqKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ld1xuZGljdGlvbmFyeSByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ld1xuZW1wdHkgZGljdGlvbmFyeS4gUGFyYW1ldGVycyBhZnRlciAiIioiIiBvciAiIippZGVudGlmaWVyIiIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gIiI6IGV4cHJlc3Npb24iIiBmb2xsb3dpbmdcbnRoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvbiBldmVuIHRob3NlXG5vZiB0aGUgZm9ybSAiKmlkZW50aWZpZXIiIG9yICIqKmlkZW50aWZpZXIiLiAgRnVuY3Rpb25zIG1heSBoYXZlXG4icmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICIiLT4gZXhwcmVzc2lvbiIiIGFmdGVyIHRoZSBwYXJhbWV0ZXJcbmxpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIGFuZCBhcmVcbmV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLiAgQW5ub3RhdGlvbnMgbWF5XG5iZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuXG5UaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgYVxuZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhcyB2YWx1ZXMgb2YgYVxuZGljdGlvbmFyeSBrZXllZCBieSB0aGUgcGFyYW1ldGVyc1wnIG5hbWVzIGluIHRoZSAiX19hbm5vdGF0aW9uc19fIlxuYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG5cbkl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgYm91bmRcbnRvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYVxuZXhwcmVzc2lvbnMsIGRlc2NyaWJlZCBpbiBzZWN0aW9uICpMYW1iZGFzKi4gIE5vdGUgdGhhdCB0aGUgbGFtYmRhXG5leHByZXNzaW9uIGlzIG1lcmVseSBhIHNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIGRlZmluaXRpb247XG5hIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSAiImRlZiIiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvclxuYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lIGp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGFcbmV4cHJlc3Npb24uICBUaGUgIiJkZWYiIiBmb3JtIGlzIGFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgaXRcbmFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIiZGVmIiJcbnN0YXRlbWVudCBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbFxuZnVuY3Rpb24gdGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzIHVzZWRcbmluIHRoZSBuZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSBmdW5jdGlvblxuY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gKk5hbWluZyBhbmQgYmluZGluZyogZm9yIGRldGFpbHMuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuXG4gICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cblxuXG5DbGFzcyBkZWZpbml0aW9uc1xuPT09PT09PT09PT09PT09PT1cblxuQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmRcbnR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAiOiIgc3VpdGVcbiAgIGluaGVyaXRhbmNlIDo6PSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSJcbiAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSBsaXN0XG51c3VhbGx5IGdpdmVzIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMgKHNlZSAqQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24qXG5mb3IgbW9yZSBhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBldmFsdWF0ZSB0byBhXG5jbGFzcyBvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlXG5saXN0IGluaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgIm9iamVjdCI7IGhlbmNlLFxuXG4gICBjbGFzcyBGb286XG4gICAgICAgcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbyhvYmplY3QpOlxuICAgICAgIHBhc3NcblxuVGhlIGNsYXNzXCdzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lIChzZWVcbipOYW1pbmcgYW5kIGJpbmRpbmcqKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgdGhlXG5vcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3NcJ3Mgc3VpdGUgZmluaXNoZXMgZXhlY3V0aW9uLCBpdHNcbmV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSBBXG5jbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgYmFzZVxuY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LlxuVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG5uYW1lc3BhY2UuXG5cbkNsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgKm1ldGFjbGFzc2VzKi5cblxuQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgZnVuY3Rpb25zLFxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBjbGFzcyBGb286IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb286IHBhc3NcbiAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcblxuVGhlIGV2YWx1YXRpb24gcnVsZXMgZm9yIHRoZSBkZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lIGFzIGZvclxuZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzIG9iamVjdCwgd2hpY2ggaXMgdGhlblxuYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZVxuY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlIGF0dHJpYnV0ZXNcbmNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCAic2VsZi5uYW1lID0gdmFsdWUiLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gIiJzZWxmLm5hbWUiIixcbmFuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGUgd2l0aCB0aGUgc2FtZSBuYW1lXG53aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmUgdXNlZCBhcyBkZWZhdWx0c1xuZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCB0b1xudW5leHBlY3RlZCByZXN1bHRzLiAgKkRlc2NyaXB0b3JzKiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgaW5zdGFuY2VcbnZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC1cbiAgQ2xhc3MgRGVjb3JhdG9yc1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3NcbiAgICB0aGVyZSBpcyBhICJmaW5hbGx5IiBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyXG4gICAgZXhjZXB0aW9uLiBUaGF0IG5ldyBleGNlcHRpb24gY2F1c2VzIHRoZSBvbGQgb25lIHRvIGJlIGxvc3QuXG5cblsyXSBDdXJyZW50bHksIGNvbnRyb2wgImZsb3dzIG9mZiB0aGUgZW5kIiBleGNlcHQgaW4gdGhlIGNhc2Ugb2ZcbiAgICBhbiBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhICJyZXR1cm4iLCAiY29udGludWUiLCBvclxuICAgICJicmVhayIgc3RhdGVtZW50LlxuXG5bM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGVcbiAgICBmdW5jdGlvbiBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGZ1bmN0aW9uXCdzICJfX2RvY19fIlxuICAgIGF0dHJpYnV0ZSBhbmQgdGhlcmVmb3JlIHRoZSBmdW5jdGlvblwncyAqZG9jc3RyaW5nKi5cblxuWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGNsYXNzXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBuYW1lc3BhY2VcJ3MgIl9fZG9jX18iIGl0ZW0gYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBjbGFzc1wncyAqZG9jc3RyaW5nKi5cbicsCisgJ2NvbXBvdW5kJzogdSdcbkNvbXBvdW5kIHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKipcblxuQ29tcG91bmQgc3RhdGVtZW50cyBjb250YWluIChncm91cHMgb2YpIG90aGVyIHN0YXRlbWVudHM7IHRoZXkgYWZmZWN0XG5vciBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhvc2Ugb3RoZXIgc3RhdGVtZW50cyBpbiBzb21lIHdheS4gIEluXG5nZW5lcmFsLCBjb21wb3VuZCBzdGF0ZW1lbnRzIHNwYW4gbXVsdGlwbGUgbGluZXMsIGFsdGhvdWdoIGluIHNpbXBsZVxuaW5jYXJuYXRpb25zIGEgd2hvbGUgY29tcG91bmQgc3RhdGVtZW50IG1heSBiZSBjb250YWluZWQgaW4gb25lIGxpbmUuXG5cblRoZSAiaWYiLCAid2hpbGUiIGFuZCAiZm9yIiBzdGF0ZW1lbnRzIGltcGxlbWVudCB0cmFkaXRpb25hbCBjb250cm9sXG5mbG93IGNvbnN0cnVjdHMuICAidHJ5IiBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwXG5jb2RlIGZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHMsIHdoaWxlIHRoZSAid2l0aCIgc3RhdGVtZW50IGFsbG93cyB0aGVcbmV4ZWN1dGlvbiBvZiBpbml0aWFsaXphdGlvbiBhbmQgZmluYWxpemF0aW9uIGNvZGUgYXJvdW5kIGEgYmxvY2sgb2ZcbmNvZGUuICBGdW5jdGlvbiBhbmQgY2xhc3MgZGVmaW5pdGlvbnMgYXJlIGFsc28gc3ludGFjdGljYWxseSBjb21wb3VuZFxuc3RhdGVtZW50cy5cblxuQSBjb21wb3VuZCBzdGF0ZW1lbnQgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgXCdjbGF1c2VzLlwnICBBIGNsYXVzZVxuY29uc2lzdHMgb2YgYSBoZWFkZXIgYW5kIGEgXCdzdWl0ZS5cJyAgVGhlIGNsYXVzZSBoZWFkZXJzIG9mIGFcbnBhcnRpY3VsYXIgY29tcG91bmQgc3RhdGVtZW50IGFyZSBhbGwgYXQgdGhlIHNhbWUgaW5kZW50YXRpb24gbGV2ZWwuXG5FYWNoIGNsYXVzZSBoZWFkZXIgYmVnaW5zIHdpdGggYSB1bmlxdWVseSBpZGVudGlmeWluZyBrZXl3b3JkIGFuZCBlbmRzXG53aXRoIGEgY29sb24uICBBIHN1aXRlIGlzIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cyBjb250cm9sbGVkIGJ5IGFcbmNsYXVzZS4gIEEgc3VpdGUgY2FuIGJlIG9uZSBvciBtb3JlIHNlbWljb2xvbi1zZXBhcmF0ZWQgc2ltcGxlXG5zdGF0ZW1lbnRzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGhlYWRlciwgZm9sbG93aW5nIHRoZSBoZWFkZXJcJ3NcbmNvbG9uLCBvciBpdCBjYW4gYmUgb25lIG9yIG1vcmUgaW5kZW50ZWQgc3RhdGVtZW50cyBvbiBzdWJzZXF1ZW50XG5saW5lcy4gIE9ubHkgdGhlIGxhdHRlciBmb3JtIG9mIGEgc3VpdGUgY2FuIGNvbnRhaW4gbmVzdGVkIGNvbXBvdW5kXG5zdGF0ZW1lbnRzOyB0aGUgZm9sbG93aW5nIGlzIGlsbGVnYWwsIG1vc3RseSBiZWNhdXNlIGl0IHdvdWxkblwndCBiZVxuY2xlYXIgdG8gd2hpY2ggImlmIiBjbGF1c2UgYSBmb2xsb3dpbmcgImVsc2UiIGNsYXVzZSB3b3VsZCBiZWxvbmc6XG5cbiAgIGlmIHRlc3QxOiBpZiB0ZXN0MjogcHJpbnQoeClcblxuQWxzbyBub3RlIHRoYXQgdGhlIHNlbWljb2xvbiBiaW5kcyB0aWdodGVyIHRoYW4gdGhlIGNvbG9uIGluIHRoaXNcbmNvbnRleHQsIHNvIHRoYXQgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCBlaXRoZXIgYWxsIG9yIG5vbmUgb2YgdGhlXG4icHJpbnQoKSIgY2FsbHMgYXJlIGV4ZWN1dGVkOlxuXG4gICBpZiB4IDwgeSA8IHo6IHByaW50KHgpOyBwcmludCh5KTsgcHJpbnQoeilcblxuU3VtbWFyaXppbmc6XG5cbiAgIGNvbXBvdW5kX3N0bXQgOjo9IGlmX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgd2hpbGVfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmb3Jfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB0cnlfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aXRoX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZlxuICAgICAgICAgICAgICAgICAgICAgfCBjbGFzc2RlZlxuICAgICAgICAgICAgICAgICAgICAgfCBhc3luY193aXRoX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfZm9yX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfZnVuY2RlZlxuICAgc3VpdGUgICAgICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBORVdMSU5FIElOREVOVCBzdGF0ZW1lbnQrIERFREVOVFxuICAgc3RhdGVtZW50ICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBjb21wb3VuZF9zdG10XG4gICBzdG10X2xpc3QgICAgIDo6PSBzaW1wbGVfc3RtdCAoIjsiIHNpbXBsZV9zdG10KSogWyI7Il1cblxuTm90ZSB0aGF0IHN0YXRlbWVudHMgYWx3YXlzIGVuZCBpbiBhICJORVdMSU5FIiBwb3NzaWJseSBmb2xsb3dlZCBieSBhXG4iREVERU5UIi4gIEFsc28gbm90ZSB0aGF0IG9wdGlvbmFsIGNvbnRpbnVhdGlvbiBjbGF1c2VzIGFsd2F5cyBiZWdpblxud2l0aCBhIGtleXdvcmQgdGhhdCBjYW5ub3Qgc3RhcnQgYSBzdGF0ZW1lbnQsIHRodXMgdGhlcmUgYXJlIG5vXG5hbWJpZ3VpdGllcyAodGhlIFwnZGFuZ2xpbmcgImVsc2UiXCcgcHJvYmxlbSBpcyBzb2x2ZWQgaW4gUHl0aG9uIGJ5XG5yZXF1aXJpbmcgbmVzdGVkICJpZiIgc3RhdGVtZW50cyB0byBiZSBpbmRlbnRlZCkuXG5cblRoZSBmb3JtYXR0aW5nIG9mIHRoZSBncmFtbWFyIHJ1bGVzIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgcGxhY2VzXG5lYWNoIGNsYXVzZSBvbiBhIHNlcGFyYXRlIGxpbmUgZm9yIGNsYXJpdHkuXG5cblxuVGhlICJpZiIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT1cblxuVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuXG5cblRoZSAid2hpbGUiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09XG5cblRoZSAid2hpbGUiIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuZXhwcmVzc2lvbiBpcyB0cnVlOlxuXG4gICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgdGhlXG5maXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgdGltZVxuaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkXG5hbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgc3RhdGVtZW50XG5leGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCBnb2VzIGJhY2tcbnRvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG5cblxuVGhlICJmb3IiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PVxuXG5UaGUgImZvciIgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhIHNlcXVlbmNlXG4oc3VjaCBhcyBhIHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3Igb3RoZXIgaXRlcmFibGUgb2JqZWN0OlxuXG4gICBmb3Jfc3RtdCA6Oj0gImZvciIgdGFyZ2V0X2xpc3QgImluIiBleHByZXNzaW9uX2xpc3QgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoZSBleHByZXNzaW9uIGxpc3QgaXMgZXZhbHVhdGVkIG9uY2U7IGl0IHNob3VsZCB5aWVsZCBhbiBpdGVyYWJsZVxub2JqZWN0LiAgQW4gaXRlcmF0b3IgaXMgY3JlYXRlZCBmb3IgdGhlIHJlc3VsdCBvZiB0aGVcbiJleHByZXNzaW9uX2xpc3QiLiAgVGhlIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgb25jZSBmb3IgZWFjaCBpdGVtXG5wcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciByZXR1cm5lZCBieSB0aGUgaXRlcmF0b3IuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhICJTdG9wSXRlcmF0aW9uIiBleGNlcHRpb24pLFxudGhlIHN1aXRlIGluIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCwgYW5kIHRoZSBsb29wXG50ZXJtaW5hdGVzLlxuXG5BICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbmV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGNvbnRpbnVlc1xud2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSAiZWxzZSIgY2xhdXNlIGlmIHRoZXJlIGlzIG5vIG5leHRcbml0ZW0uXG5cblRoZSBmb3ItbG9vcCBtYWtlcyBhc3NpZ25tZW50cyB0byB0aGUgdmFyaWFibGVzKHMpIGluIHRoZSB0YXJnZXQgbGlzdC5cblRoaXMgb3ZlcndyaXRlcyBhbGwgcHJldmlvdXMgYXNzaWdubWVudHMgdG8gdGhvc2UgdmFyaWFibGVzIGluY2x1ZGluZ1xudGhvc2UgbWFkZSBpbiB0aGUgc3VpdGUgb2YgdGhlIGZvci1sb29wOlxuXG4gICBmb3IgaSBpbiByYW5nZSgxMCk6XG4gICAgICAgcHJpbnQoaSlcbiAgICAgICBpID0gNSAgICAgICAgICAgICAjIHRoaXMgd2lsbCBub3QgYWZmZWN0IHRoZSBmb3ItbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgbmV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICMgaW5kZXggaW4gdGhlIHJhbmdlXG5cbk5hbWVzIGluIHRoZSB0YXJnZXQgbGlzdCBhcmUgbm90IGRlbGV0ZWQgd2hlbiB0aGUgbG9vcCBpcyBmaW5pc2hlZCxcbmJ1dCBpZiB0aGUgc2VxdWVuY2UgaXMgZW1wdHksIHRoZXkgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0XG5hbGwgYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInJhbmdlKCkiIHJldHVybnMgYW5cbml0ZXJhdG9yIG9mIGludGVnZXJzIHN1aXRhYmxlIHRvIGVtdWxhdGUgdGhlIGVmZmVjdCBvZiBQYXNjYWxcJ3MgImZvciBpXG46PSBhIHRvIGIgZG8iOyBlLmcuLCAibGlzdChyYW5nZSgzKSkiIHJldHVybnMgdGhlIGxpc3QgIlswLCAxLCAyXSIuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlXG4gIGxvb3AgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuXG5cblRoZSAidHJ5IiBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT1cblxuVGhlICJ0cnkiIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgaWRlbnRpZmllcl1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlICJleGNlcHQiIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlbiBub1xuZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgc3VpdGUsIGEgc2VhcmNoIGZvciBhblxuZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHQgY2xhdXNlc1xuaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiBleHByZXNzaW9uLVxubGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXMgYW55XG5leGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgZXhwcmVzc2lvblxuaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXMgY29tcGF0aWJsZVxud2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgZXhjZXB0aW9uXG5vYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZSBleGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgInRyeSIgc3RhdGVtZW50IHJhaXNlZFxudGhlIGV4Y2VwdGlvbikuXG5cbldoZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG50aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgImFzIiBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSwgaWZcbnByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgImFzIHRhcmdldCIsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlICJzeXMiIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2Vzc2VkIHZpYVxuInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mIHRoZVxuZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluIHRoZVxucHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgInN5cy5leGNfaW5mbygpIiB2YWx1ZXMgYXJlXG5yZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiIGNsYXVzZSBhcmVcbm5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cblxuSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGUgInRyeSJcbmNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiIGNsYXVzZXMuICBJZiBhblxuZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbmV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQuICBJZlxudGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICJmaW5hbGx5IlxuY2xhdXNlLiAgSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uLCB0aGUgc2F2ZWRcbmV4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uIElmIHRoZSAiZmluYWxseSJcbmNsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uXG5pcyBkaXNjYXJkZWQ6XG5cbiAgID4+PiBkZWYgZigpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICAxLzBcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuICAgLi4uXG4gICA+Pj4gZigpXG4gICA0MlxuXG5UaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG5leGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG5cbldoZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiB0aGVcbiJ0cnkiIHN1aXRlIG9mIGEgInRyeSIuLi4iZmluYWxseSIgc3RhdGVtZW50LCB0aGUgImZpbmFsbHkiIGNsYXVzZSBpc1xuYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgaWxsZWdhbCBpblxudGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5UaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAicmV0dXJuIlxuc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCBhXG4icmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCBhbHdheXMgYmUgdGhlXG5sYXN0IG9uZSBleGVjdXRlZDpcblxuICAgPj4+IGRlZiBmb28oKTpcbiAgIC4uLiAgICAgdHJ5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwndHJ5XCdcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ2ZpbmFsbHlcJ1xuICAgLi4uXG4gICA+Pj4gZm9vKClcbiAgIFwnZmluYWxseVwnXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlICJyYWlzZSIgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuXG5UaGUgIndpdGgiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT1cblxuVGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb24gInRyeSIuLi4iZXhjZXB0Ii4uLiJmaW5hbGx5IlxudXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuXG4gICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbiAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG5cblRoZSBleGVjdXRpb24gb2YgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgIndpdGhfaXRlbSIpXG4gICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuXG4yLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cblxuMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlICJ3aXRoIiBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbiAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cblxuICAgTm90ZTogVGhlICJ3aXRoIiBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSAiX19lbnRlcl9fKCkiXG4gICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgYWx3YXlzIGJlXG4gICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbiAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbiAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cblxuNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuXG42LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gIl9fZXhpdF9fKCkiLiBPdGhlcndpc2UsIHRocmVlXG4gICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gdmFsdWVcbiAgIGZyb20gdGhlICJfX2V4aXRfXygpIiBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzIHJlcmFpc2VkLlxuICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBhbmRcbiAgIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZyB0aGUgIndpdGgiXG4gICBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uIHByb2NlZWRzXG4gICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuXG5XaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyBpZlxubXVsdGlwbGUgIndpdGgiIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG5cbiAgIHdpdGggQSgpIGFzIGEsIEIoKSBhcyBiOlxuICAgICAgIHN1aXRlXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgd2l0aCBBKCkgYXMgYTpcbiAgICAgICB3aXRoIEIoKSBhcyBiOlxuICAgICAgICAgICBzdWl0ZVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IGV4cHJlc3Npb25zLlxuXG5TZWUgYWxzbzogKipQRVAgMDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICJ3aXRoIlxuICAgICBzdGF0ZW1lbnQuXG5cblxuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFtwYXJhbWV0ZXJfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICB8ICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqIFsiLCIgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlICpwYXJhbWV0ZXJzKiBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqICI9IlxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyAqYXJndW1lbnQqIG1heVxuYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyXCdzIGRlZmF1bHQgdmFsdWUgaXNcbnN1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xucGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgIiIqIiIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLSB0aGlzXG5pcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHdoZW4gdGhlXG5mdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpc1xuZXZhbHVhdGVkIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtXG5jb21wdXRlZCIgdmFsdWUgaXMgdXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudFxudG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCBhcyBhXG5saXN0IG9yIGEgZGljdGlvbmFyeTogaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gYnlcbmFwcGVuZGluZyBhbiBpdGVtIHRvIGEgbGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBtb2RpZmllZC5cblRoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHVzZVxuIk5vbmUiIGFzIHRoZSBkZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGVcbmZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiIiKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZyBhbnlcbmV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWYgdGhlXG5mb3JtICIiKippZGVudGlmaWVyIiIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbmRpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXdcbmVtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgIiIqIiIgb3IgIiIqaWRlbnRpZmllciIiIGFyZVxua2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuXG5QYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICIiOiBleHByZXNzaW9uIiIgZm9sbG93aW5nXG50aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb24gZXZlbiB0aG9zZVxub2YgdGhlIGZvcm0gIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIi4gIEZ1bmN0aW9ucyBtYXkgaGF2ZVxuInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiIi0+IGV4cHJlc3Npb24iIiBhZnRlciB0aGUgcGFyYW1ldGVyXG5saXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiBhbmQgYXJlXG5ldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4gIEFubm90YXRpb25zIG1heVxuYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBjb2RlLlxuVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIGFcbmZ1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXMgdmFsdWVzIG9mIGFcbmRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnNcJyBuYW1lcyBpbiB0aGUgIl9fYW5ub3RhdGlvbnNfXyJcbmF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGFcbmV4cHJlc3Npb25zLCBkZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYVxuZXhwcmVzc2lvbiBpcyBtZXJlbHkgYSBzaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uO1xuYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgIiJkZWYiIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgb3JcbmFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgbGFtYmRhXG5leHByZXNzaW9uLiAgVGhlICIiZGVmIiIgZm9ybSBpcyBhY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0XG5hbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiImRlZiIiXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWxcbmZ1bmN0aW9uIHRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkXG5pbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzEwNyoqIC0gRnVuY3Rpb24gQW5ub3RhdGlvbnNcblxuICAgICBUaGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbiBmb3IgZnVuY3Rpb24gYW5ub3RhdGlvbnMuXG5cblxuQ2xhc3MgZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09XG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkXG50eXBlIGhpZXJhcmNoeSopOlxuXG4gICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiIHN1aXRlXG4gICBpbmhlcml0YW5jZSA6Oj0gIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiXG4gICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgbGlzdFxudXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgKkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uKlxuZm9yIG1vcmUgYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYVxuY2xhc3Mgb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiBpbmhlcml0YW5jZVxubGlzdCBpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzICJvYmplY3QiOyBoZW5jZSxcblxuICAgY2xhc3MgRm9vOlxuICAgICAgIHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb28ob2JqZWN0KTpcbiAgICAgICBwYXNzXG5cblRoZSBjbGFzc1wncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAoc2VlXG4qTmFtaW5nIGFuZCBiaW5kaW5nKiksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kIHRoZVxub3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbmZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzXCdzIHN1aXRlIGZpbmlzaGVzIGV4ZWN1dGlvbiwgaXRzXG5leGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiBbNF0gQVxuY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlIGJhc2VcbmNsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeS5cblRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbFxubmFtZXNwYWNlLlxuXG5DbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG5cbkNsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucyxcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgY2xhc3MgRm9vOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IG11c3QgYmUgYSBjbGFzcyBvYmplY3QsIHdoaWNoIGlzIHRoZW5cbmJvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSBhdHRyaWJ1dGVzXG5jYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggInNlbGYubmFtZSA9IHZhbHVlIi4gIEJvdGggY2xhc3MgYW5kXG5pbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uICIic2VsZi5uYW1lIiIsXG5hbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgbmFtZVxud2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlIHVzZWQgYXMgZGVmYXVsdHNcbmZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXMgdGhlcmUgY2FuIGxlYWQgdG9cbnVuZXhwZWN0ZWQgcmVzdWx0cy4gICpEZXNjcmlwdG9ycyogY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlXG52YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuU2VlIGFsc286ICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtXG4gIENsYXNzIERlY29yYXRvcnNcblxuXG5Db3JvdXRpbmVzXG49PT09PT09PT09XG5cbk5ldyBpbiB2ZXJzaW9uIDMuNS5cblxuXG5Db3JvdXRpbmUgZnVuY3Rpb24gZGVmaW5pdGlvblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgYXN5bmNfZnVuY2RlZiA6Oj0gW2RlY29yYXRvcnNdICJhc3luYyIgImRlZiIgZnVuY25hbWUgIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuXG5FeGVjdXRpb24gb2YgUHl0aG9uIGNvcm91dGluZXMgY2FuIGJlIHN1c3BlbmRlZCBhbmQgcmVzdW1lZCBhdCBtYW55XG5wb2ludHMgKHNlZSAqY29yb3V0aW5lKikuICBJbiB0aGUgYm9keSBvZiBhIGNvcm91dGluZSwgYW55ICJhd2FpdCIgYW5kXG4iYXN5bmMiIGlkZW50aWZpZXJzIGJlY29tZSByZXNlcnZlZCBrZXl3b3JkczsgImF3YWl0IiBleHByZXNzaW9ucyxcbiJhc3luYyBmb3IiIGFuZCAiYXN5bmMgd2l0aCIgY2FuIG9ubHkgYmUgdXNlZCBpbiBjb3JvdXRpbmUgYm9kaWVzLlxuXG5GdW5jdGlvbnMgZGVmaW5lZCB3aXRoICJhc3luYyBkZWYiIHN5bnRheCBhcmUgYWx3YXlzIGNvcm91dGluZVxuZnVuY3Rpb25zLCBldmVuIGlmIHRoZXkgZG8gbm90IGNvbnRhaW4gImF3YWl0IiBvciAiYXN5bmMiIGtleXdvcmRzLlxuXG5JdCBpcyBhICJTeW50YXhFcnJvciIgdG8gdXNlICJ5aWVsZCIgZXhwcmVzc2lvbnMgaW4gImFzeW5jIGRlZiJcbmNvcm91dGluZXMuXG5cbkFuIGV4YW1wbGUgb2YgYSBjb3JvdXRpbmUgZnVuY3Rpb246XG5cbiAgIGFzeW5jIGRlZiBmdW5jKHBhcmFtMSwgcGFyYW0yKTpcbiAgICAgICBkb19zdHVmZigpXG4gICAgICAgYXdhaXQgc29tZV9jb3JvdXRpbmUoKVxuXG5cblRoZSAiYXN5bmMgZm9yIiBzdGF0ZW1lbnRcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgYXN5bmNfZm9yX3N0bXQgOjo9ICJhc3luYyIgZm9yX3N0bXRcblxuQW4gKmFzeW5jaHJvbm91cyBpdGVyYWJsZSogaXMgYWJsZSB0byBjYWxsIGFzeW5jaHJvbm91cyBjb2RlIGluIGl0c1xuKml0ZXIqIGltcGxlbWVudGF0aW9uLCBhbmQgKmFzeW5jaHJvbm91cyBpdGVyYXRvciogY2FuIGNhbGxcbmFzeW5jaHJvbm91cyBjb2RlIGluIGl0cyAqbmV4dCogbWV0aG9kLlxuXG5UaGUgImFzeW5jIGZvciIgc3RhdGVtZW50IGFsbG93cyBjb252ZW5pZW50IGl0ZXJhdGlvbiBvdmVyXG5hc3luY2hyb25vdXMgaXRlcmF0b3JzLlxuXG5UaGUgZm9sbG93aW5nIGNvZGU6XG5cbiAgIGFzeW5jIGZvciBUQVJHRVQgaW4gSVRFUjpcbiAgICAgICBCTE9DS1xuICAgZWxzZTpcbiAgICAgICBCTE9DSzJcblxuSXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG86XG5cbiAgIGl0ZXIgPSAoSVRFUilcbiAgIGl0ZXIgPSBhd2FpdCB0eXBlKGl0ZXIpLl9fYWl0ZXJfXyhpdGVyKVxuICAgcnVubmluZyA9IFRydWVcbiAgIHdoaWxlIHJ1bm5pbmc6XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBUQVJHRVQgPSBhd2FpdCB0eXBlKGl0ZXIpLl9fYW5leHRfXyhpdGVyKVxuICAgICAgIGV4Y2VwdCBTdG9wQXN5bmNJdGVyYXRpb246XG4gICAgICAgICAgIHJ1bm5pbmcgPSBGYWxzZVxuICAgICAgIGVsc2U6XG4gICAgICAgICAgIEJMT0NLXG4gICBlbHNlOlxuICAgICAgIEJMT0NLMlxuXG5TZWUgYWxzbyAiX19haXRlcl9fKCkiIGFuZCAiX19hbmV4dF9fKCkiIGZvciBkZXRhaWxzLlxuXG5JdCBpcyBhICJTeW50YXhFcnJvciIgdG8gdXNlICJhc3luYyBmb3IiIHN0YXRlbWVudCBvdXRzaWRlIG9mIGFuXG4iYXN5bmMgZGVmIiBmdW5jdGlvbi5cblxuXG5UaGUgImFzeW5jIHdpdGgiIHN0YXRlbWVudFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgYXN5bmNfd2l0aF9zdG10IDo6PSAiYXN5bmMiIHdpdGhfc3RtdFxuXG5BbiAqYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlciogaXMgYSAqY29udGV4dCBtYW5hZ2VyKiB0aGF0IGlzIGFibGVcbnRvIHN1c3BlbmQgZXhlY3V0aW9uIGluIGl0cyAqZW50ZXIqIGFuZCAqZXhpdCogbWV0aG9kcy5cblxuVGhlIGZvbGxvd2luZyBjb2RlOlxuXG4gICBhc3luYyB3aXRoIEVYUFIgYXMgVkFSOlxuICAgICAgIEJMT0NLXG5cbklzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvOlxuXG4gICBtZ3IgPSAoRVhQUilcbiAgIGFleGl0ID0gdHlwZShtZ3IpLl9fYWV4aXRfX1xuICAgYWVudGVyID0gdHlwZShtZ3IpLl9fYWVudGVyX18obWdyKVxuICAgZXhjID0gVHJ1ZVxuXG4gICBWQVIgPSBhd2FpdCBhZW50ZXJcbiAgIHRyeTpcbiAgICAgICBCTE9DS1xuICAgZXhjZXB0OlxuICAgICAgIGlmIG5vdCBhd2FpdCBhZXhpdChtZ3IsICpzeXMuZXhjX2luZm8oKSk6XG4gICAgICAgICAgIHJhaXNlXG4gICBlbHNlOlxuICAgICAgIGF3YWl0IGFleGl0KG1nciwgTm9uZSwgTm9uZSwgTm9uZSlcblxuU2VlIGFsc28gIl9fYWVudGVyX18oKSIgYW5kICJfX2FleGl0X18oKSIgZm9yIGRldGFpbHMuXG5cbkl0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgImFzeW5jIHdpdGgiIHN0YXRlbWVudCBvdXRzaWRlIG9mIGFuXG4iYXN5bmMgZGVmIiBmdW5jdGlvbi5cblxuU2VlIGFsc286ICoqUEVQIDQ5MioqIC0gQ29yb3V0aW5lcyB3aXRoIGFzeW5jIGFuZCBhd2FpdCBzeW50YXhcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBUaGUgZXhjZXB0aW9uIGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGludm9jYXRpb24gc3RhY2sgdW5sZXNzXG4gICAgdGhlcmUgaXMgYSAiZmluYWxseSIgY2xhdXNlIHdoaWNoIGhhcHBlbnMgdG8gcmFpc2UgYW5vdGhlclxuICAgIGV4Y2VwdGlvbi4gVGhhdCBuZXcgZXhjZXB0aW9uIGNhdXNlcyB0aGUgb2xkIG9uZSB0byBiZSBsb3N0LlxuXG5bMl0gQ3VycmVudGx5LCBjb250cm9sICJmbG93cyBvZmYgdGhlIGVuZCIgZXhjZXB0IGluIHRoZSBjYXNlIG9mXG4gICAgYW4gZXhjZXB0aW9uIG9yIHRoZSBleGVjdXRpb24gb2YgYSAicmV0dXJuIiwgImNvbnRpbnVlIiwgb3JcbiAgICAiYnJlYWsiIHN0YXRlbWVudC5cblxuWzNdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlXG4gICAgZnVuY3Rpb24gYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBmdW5jdGlvblwncyAiX19kb2NfXyJcbiAgICBhdHRyaWJ1dGUgYW5kIHRoZXJlZm9yZSB0aGUgZnVuY3Rpb25cJ3MgKmRvY3N0cmluZyouXG5cbls0XSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBjbGFzc1xuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgbmFtZXNwYWNlXCdzICJfX2RvY19fIiBpdGVtIGFuZFxuICAgIHRoZXJlZm9yZSB0aGUgY2xhc3NcJ3MgKmRvY3N0cmluZyouXG4nLAogICdjb250ZXh0LW1hbmFnZXJzJzogdSdcbldpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQSAqY29udGV4dCBtYW5hZ2VyKiBpcyBhbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSBydW50aW1lIGNvbnRleHQgdG9cbmJlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgIndpdGgiIHN0YXRlbWVudC4gVGhlIGNvbnRleHQgbWFuYWdlclxuaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWUgY29udGV4dFxuZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZSBub3JtYWxseVxuaW52b2tlZCB1c2luZyB0aGUgIndpdGgiIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb24gKlRoZSB3aXRoXG5zdGF0ZW1lbnQqKSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgdGhlaXIgbWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgIndpdGgiXG4gICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kXCdzIHJldHVybiB2YWx1ZSB0byB0aGUgdGFyZ2V0KHMpXG4gICBzcGVjaWZpZWQgaW4gdGhlICJhcyIgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmIGFueS5cblxub2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcblxuICAgRXhpdCB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBwYXJhbWV0ZXJzXG4gICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvIGJlIGV4aXRlZC4gSWYgdGhlXG4gICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSBhcmd1bWVudHMgd2lsbFxuICAgYmUgIk5vbmUiLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCAiX19leGl0X18oKSIgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlIHBhc3NlZC1pblxuICAgZXhjZXB0aW9uOyB0aGlzIGlzIHRoZSBjYWxsZXJcJ3MgcmVzcG9uc2liaWxpdHkuXG5cblNlZSBhbHNvOiAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gIndpdGgiXG4gICAgIHN0YXRlbWVudC5cbicsCiAgJ2NvbnRpbnVlJzogdSdcblRoZSAiY29udGludWUiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGNvbnRpbnVlX3N0bXQgOjo9ICJjb250aW51ZSJcblxuImNvbnRpbnVlIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhICJmb3IiIG9yICJ3aGlsZSJcbmxvb3AsIGJ1dCBub3QgbmVzdGVkIGluIGEgZnVuY3Rpb24gb3IgY2xhc3MgZGVmaW5pdGlvbiBvciAiZmluYWxseSJcbmNsYXVzZSB3aXRoaW4gdGhhdCBsb29wLiAgSXQgY29udGludWVzIHdpdGggdGhlIG5leHQgY3ljbGUgb2YgdGhlXG5uZWFyZXN0IGVuY2xvc2luZyBsb29wLlxuXG5XaGVuICJjb250aW51ZSIgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgInRyeSIgc3RhdGVtZW50IHdpdGggYVxuImZpbmFsbHkiIGNsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHlcbnN0YXJ0aW5nIHRoZSBuZXh0IGxvb3AgY3ljbGUuXG4nLAogICdjb252ZXJzaW9ucyc6IHUnXG5Bcml0aG1ldGljIGNvbnZlcnNpb25zXG4qKioqKioqKioqKioqKioqKioqKioqXG5cbldoZW4gYSBkZXNjcmlwdGlvbiBvZiBhbiBhcml0aG1ldGljIG9wZXJhdG9yIGJlbG93IHVzZXMgdGhlIHBocmFzZVxuInRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIiB0aGlzIG1lYW5zXG50aGF0IHRoZSBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbiBmb3IgYnVpbHQtaW4gdHlwZXMgd29ya3MgYXMgZm9sbG93czpcblxuKiBJZiBlaXRoZXIgYXJndW1lbnQgaXMgYSBjb21wbGV4IG51bWJlciwgdGhlIG90aGVyIGlzIGNvbnZlcnRlZCB0b1xuICBjb21wbGV4O1xuXG4qIG90aGVyd2lzZSwgaWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCB0aGVcbiAgb3RoZXIgaXMgY29udmVydGVkIHRvIGZsb2F0aW5nIHBvaW50O1xuXG4qIG90aGVyd2lzZSwgYm90aCBtdXN0IGJlIGludGVnZXJzIGFuZCBubyBjb252ZXJzaW9uIGlzIG5lY2Vzc2FyeS5cblxuU29tZSBhZGRpdGlvbmFsIHJ1bGVzIGFwcGx5IGZvciBjZXJ0YWluIG9wZXJhdG9ycyAoZS5nLiwgYSBzdHJpbmcgYXMgYVxubGVmdCBhcmd1bWVudCB0byB0aGUgXCclXCcgb3BlcmF0b3IpLiAgRXh0ZW5zaW9ucyBtdXN0IGRlZmluZSB0aGVpciBvd25cbmNvbnZlcnNpb24gYmVoYXZpb3IuXG4nLApAQCAtNDksMjQgKzQ5LDI0IEBACiAgJ25hbWluZyc6IHUnXG5OYW1pbmcgYW5kIGJpbmRpbmdcbioqKioqKioqKioqKioqKioqKlxuXG5cbkJpbmRpbmcgb2YgbmFtZXNcbj09PT09PT09PT09PT09PT1cblxuKk5hbWVzKiByZWZlciB0byBvYmplY3RzLiAgTmFtZXMgYXJlIGludHJvZHVjZWQgYnkgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLlxuXG5UaGUgZm9sbG93aW5nIGNvbnN0cnVjdHMgYmluZCBuYW1lczogZm9ybWFsIHBhcmFtZXRlcnMgdG8gZnVuY3Rpb25zLFxuImltcG9ydCIgc3RhdGVtZW50cywgY2xhc3MgYW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zICh0aGVzZSBiaW5kIHRoZVxuY2xhc3Mgb3IgZnVuY3Rpb24gbmFtZSBpbiB0aGUgZGVmaW5pbmcgYmxvY2spLCBhbmQgdGFyZ2V0cyB0aGF0IGFyZVxuaWRlbnRpZmllcnMgaWYgb2NjdXJyaW5nIGluIGFuIGFzc2lnbm1lbnQsICJmb3IiIGxvb3AgaGVhZGVyLCBvciBhZnRlclxuImFzIiBpbiBhICJ3aXRoIiBzdGF0ZW1lbnQgb3IgImV4Y2VwdCIgY2xhdXNlLiBUaGUgImltcG9ydCIgc3RhdGVtZW50XG5vZiB0aGUgZm9ybSAiZnJvbSAuLi4gaW1wb3J0ICoiIGJpbmRzIGFsbCBuYW1lcyBkZWZpbmVkIGluIHRoZVxuaW1wb3J0ZWQgbW9kdWxlLCBleGNlcHQgdGhvc2UgYmVnaW5uaW5nIHdpdGggYW4gdW5kZXJzY29yZS4gIFRoaXMgZm9ybVxubWF5IG9ubHkgYmUgdXNlZCBhdCB0aGUgbW9kdWxlIGxldmVsLlxuXG5BIHRhcmdldCBvY2N1cnJpbmcgaW4gYSAiZGVsIiBzdGF0ZW1lbnQgaXMgYWxzbyBjb25zaWRlcmVkIGJvdW5kIGZvclxudGhpcyBwdXJwb3NlICh0aG91Z2ggdGhlIGFjdHVhbCBzZW1hbnRpY3MgYXJlIHRvIHVuYmluZCB0aGUgbmFtZSkuXG5cbkVhY2ggYXNzaWdubWVudCBvciBpbXBvcnQgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jayBkZWZpbmVkIGJ5IGFcbmNsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb24gb3IgYXQgdGhlIG1vZHVsZSBsZXZlbCAodGhlIHRvcC1sZXZlbFxuY29kZSBibG9jaykuXG5cbklmIGEgbmFtZSBpcyBib3VuZCBpbiBhIGJsb2NrLCBpdCBpcyBhIGxvY2FsIHZhcmlhYmxlIG9mIHRoYXQgYmxvY2ssXG51bmxlc3MgZGVjbGFyZWQgYXMgIm5vbmxvY2FsIiBvciAiZ2xvYmFsIi4gIElmIGEgbmFtZSBpcyBib3VuZCBhdCB0aGVcbm1vZHVsZSBsZXZlbCwgaXQgaXMgYSBnbG9iYWwgdmFyaWFibGUuICAoVGhlIHZhcmlhYmxlcyBvZiB0aGUgbW9kdWxlXG5jb2RlIGJsb2NrIGFyZSBsb2NhbCBhbmQgZ2xvYmFsLikgIElmIGEgdmFyaWFibGUgaXMgdXNlZCBpbiBhIGNvZGVcbmJsb2NrIGJ1dCBub3QgZGVmaW5lZCB0aGVyZSwgaXQgaXMgYSAqZnJlZSB2YXJpYWJsZSouXG5cbkVhY2ggb2NjdXJyZW5jZSBvZiBhIG5hbWUgaW4gdGhlIHByb2dyYW0gdGV4dCByZWZlcnMgdG8gdGhlICpiaW5kaW5nKlxub2YgdGhhdCBuYW1lIGVzdGFibGlzaGVkIGJ5IHRoZSBmb2xsb3dpbmcgbmFtZSByZXNvbHV0aW9uIHJ1bGVzLlxuXG5cblJlc29sdXRpb24gb2YgbmFtZXNcbj09PT09PT09PT09PT09PT09PT1cblxuQSAqc2NvcGUqIGRlZmluZXMgdGhlIHZpc2liaWxpdHkgb2YgYSBuYW1lIHdpdGhpbiBhIGJsb2NrLiAgSWYgYSBsb2NhbFxudmFyaWFibGUgaXMgZGVmaW5lZCBpbiBhIGJsb2NrLCBpdHMgc2NvcGUgaW5jbHVkZXMgdGhhdCBibG9jay4gIElmIHRoZVxuZGVmaW5pdGlvbiBvY2N1cnMgaW4gYSBmdW5jdGlvbiBibG9jaywgdGhlIHNjb3BlIGV4dGVuZHMgdG8gYW55IGJsb2Nrc1xuY29udGFpbmVkIHdpdGhpbiB0aGUgZGVmaW5pbmcgb25lLCB1bmxlc3MgYSBjb250YWluZWQgYmxvY2sgaW50cm9kdWNlc1xuYSBkaWZmZXJlbnQgYmluZGluZyBmb3IgdGhlIG5hbWUuXG5cbldoZW4gYSBuYW1lIGlzIHVzZWQgaW4gYSBjb2RlIGJsb2NrLCBpdCBpcyByZXNvbHZlZCB1c2luZyB0aGUgbmVhcmVzdFxuZW5jbG9zaW5nIHNjb3BlLiAgVGhlIHNldCBvZiBhbGwgc3VjaCBzY29wZXMgdmlzaWJsZSB0byBhIGNvZGUgYmxvY2tcbmlzIGNhbGxlZCB0aGUgYmxvY2tcJ3MgKmVudmlyb25tZW50Ki5cblxuV2hlbiBhIG5hbWUgaXMgbm90IGZvdW5kIGF0IGFsbCwgYSAiTmFtZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLiBJZlxudGhlIGN1cnJlbnQgc2NvcGUgaXMgYSBmdW5jdGlvbiBzY29wZSwgYW5kIHRoZSBuYW1lIHJlZmVycyB0byBhIGxvY2FsXG52YXJpYWJsZSB0aGF0IGhhcyBub3QgeWV0IGJlZW4gYm91bmQgdG8gYSB2YWx1ZSBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlXG5uYW1lIGlzIHVzZWQsIGFuICJVbmJvdW5kTG9jYWxFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbiJVbmJvdW5kTG9jYWxFcnJvciIgaXMgYSBzdWJjbGFzcyBvZiAiTmFtZUVycm9yIi5cblxuSWYgYSBuYW1lIGJpbmRpbmcgb3BlcmF0aW9uIG9jY3VycyBhbnl3aGVyZSB3aXRoaW4gYSBjb2RlIGJsb2NrLCBhbGxcbnVzZXMgb2YgdGhlIG5hbWUgd2l0aGluIHRoZSBibG9jayBhcmUgdHJlYXRlZCBhcyByZWZlcmVuY2VzIHRvIHRoZVxuY3VycmVudCBibG9jay4gIFRoaXMgY2FuIGxlYWQgdG8gZXJyb3JzIHdoZW4gYSBuYW1lIGlzIHVzZWQgd2l0aGluIGFcbmJsb2NrIGJlZm9yZSBpdCBpcyBib3VuZC4gIFRoaXMgcnVsZSBpcyBzdWJ0bGUuICBQeXRob24gbGFja3NcbmRlY2xhcmF0aW9ucyBhbmQgYWxsb3dzIG5hbWUgYmluZGluZyBvcGVyYXRpb25zIHRvIG9jY3VyIGFueXdoZXJlXG53aXRoaW4gYSBjb2RlIGJsb2NrLiAgVGhlIGxvY2FsIHZhcmlhYmxlcyBvZiBhIGNvZGUgYmxvY2sgY2FuIGJlXG5kZXRlcm1pbmVkIGJ5IHNjYW5uaW5nIHRoZSBlbnRpcmUgdGV4dCBvZiB0aGUgYmxvY2sgZm9yIG5hbWUgYmluZGluZ1xub3BlcmF0aW9ucy5cblxuSWYgdGhlICJnbG9iYWwiIHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2ssIGFsbCB1c2VzIG9mIHRoZSBuYW1lXG5zcGVjaWZpZWQgaW4gdGhlIHN0YXRlbWVudCByZWZlciB0byB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgaW4gdGhlXG50b3AtbGV2ZWwgbmFtZXNwYWNlLiAgTmFtZXMgYXJlIHJlc29sdmVkIGluIHRoZSB0b3AtbGV2ZWwgbmFtZXNwYWNlIGJ5XG5zZWFyY2hpbmcgdGhlIGdsb2JhbCBuYW1lc3BhY2UsIGkuZS4gdGhlIG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlXG5jb250YWluaW5nIHRoZSBjb2RlIGJsb2NrLCBhbmQgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSwgdGhlIG5hbWVzcGFjZVxub2YgdGhlIG1vZHVsZSAiYnVpbHRpbnMiLiAgVGhlIGdsb2JhbCBuYW1lc3BhY2UgaXMgc2VhcmNoZWQgZmlyc3QuICBJZlxudGhlIG5hbWUgaXMgbm90IGZvdW5kIHRoZXJlLCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIGlzIHNlYXJjaGVkLiAgVGhlXG4iZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBwcmVjZWRlIGFsbCB1c2VzIG9mIHRoZSBuYW1lLlxuXG5UaGUgImdsb2JhbCIgc3RhdGVtZW50IGhhcyB0aGUgc2FtZSBzY29wZSBhcyBhIG5hbWUgYmluZGluZyBvcGVyYXRpb25cbmluIHRoZSBzYW1lIGJsb2NrLiAgSWYgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlIGZvciBhIGZyZWUgdmFyaWFibGVcbmNvbnRhaW5zIGEgZ2xvYmFsIHN0YXRlbWVudCwgdGhlIGZyZWUgdmFyaWFibGUgaXMgdHJlYXRlZCBhcyBhIGdsb2JhbC5cblxuVGhlICJub25sb2NhbCIgc3RhdGVtZW50IGNhdXNlcyBjb3JyZXNwb25kaW5nIG5hbWVzIHRvIHJlZmVyIHRvXG5wcmV2aW91c2x5IGJvdW5kIHZhcmlhYmxlcyBpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgZnVuY3Rpb24gc2NvcGUuXG4iU3ludGF4RXJyb3IiIGlzIHJhaXNlZCBhdCBjb21waWxlIHRpbWUgaWYgdGhlIGdpdmVuIG5hbWUgZG9lcyBub3RcbmV4aXN0IGluIGFueSBlbmNsb3NpbmcgZnVuY3Rpb24gc2NvcGUuXG5cblRoZSBuYW1lc3BhY2UgZm9yIGEgbW9kdWxlIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB0aGUgZmlyc3QgdGltZSBhXG5tb2R1bGUgaXMgaW1wb3J0ZWQuICBUaGUgbWFpbiBtb2R1bGUgZm9yIGEgc2NyaXB0IGlzIGFsd2F5cyBjYWxsZWRcbiJfX21haW5fXyIuXG5cbkNsYXNzIGRlZmluaXRpb24gYmxvY2tzIGFuZCBhcmd1bWVudHMgdG8gImV4ZWMoKSIgYW5kICJldmFsKCkiIGFyZVxuc3BlY2lhbCBpbiB0aGUgY29udGV4dCBvZiBuYW1lIHJlc29sdXRpb24uIEEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhblxuZXhlY3V0YWJsZSBzdGF0ZW1lbnQgdGhhdCBtYXkgdXNlIGFuZCBkZWZpbmUgbmFtZXMuIFRoZXNlIHJlZmVyZW5jZXNcbmZvbGxvdyB0aGUgbm9ybWFsIHJ1bGVzIGZvciBuYW1lIHJlc29sdXRpb24gd2l0aCBhbiBleGNlcHRpb24gdGhhdFxudW5ib3VuZCBsb2NhbCB2YXJpYWJsZXMgYXJlIGxvb2tlZCB1cCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gVGhlXG5uYW1lc3BhY2Ugb2YgdGhlIGNsYXNzIGRlZmluaXRpb24gYmVjb21lcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnkgb2ZcbnRoZSBjbGFzcy4gVGhlIHNjb3BlIG9mIG5hbWVzIGRlZmluZWQgaW4gYSBjbGFzcyBibG9jayBpcyBsaW1pdGVkIHRvXG50aGUgY2xhc3MgYmxvY2s7IGl0IGRvZXMgbm90IGV4dGVuZCB0byB0aGUgY29kZSBibG9ja3Mgb2YgbWV0aG9kcyAtLVxudGhpcyBpbmNsdWRlcyBjb21wcmVoZW5zaW9ucyBhbmQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIHNpbmNlIHRoZXkgYXJlXG5pbXBsZW1lbnRlZCB1c2luZyBhIGZ1bmN0aW9uIHNjb3BlLiAgVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmdcbndpbGwgZmFpbDpcblxuICAgY2xhc3MgQTpcbiAgICAgICBhID0gNDJcbiAgICAgICBiID0gbGlzdChhICsgaSBmb3IgaSBpbiByYW5nZSgxMCkpXG5cblxuQnVpbHRpbnMgYW5kIHJlc3RyaWN0ZWQgZXhlY3V0aW9uXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4ZWN1dGlvbiBvZiBhIGNvZGUgYmxvY2tcbmlzIGFjdHVhbGx5IGZvdW5kIGJ5IGxvb2tpbmcgdXAgdGhlIG5hbWUgIl9fYnVpbHRpbnNfXyIgaW4gaXRzIGdsb2JhbFxubmFtZXNwYWNlOyB0aGlzIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkgb3IgYSBtb2R1bGUgKGluIHRoZSBsYXR0ZXIgY2FzZVxudGhlIG1vZHVsZVwncyBkaWN0aW9uYXJ5IGlzIHVzZWQpLiAgQnkgZGVmYXVsdCwgd2hlbiBpbiB0aGUgIl9fbWFpbl9fIlxubW9kdWxlLCAiX19idWlsdGluc19fIiBpcyB0aGUgYnVpbHQtaW4gbW9kdWxlICJidWlsdGlucyI7IHdoZW4gaW4gYW55XG5vdGhlciBtb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIGFuIGFsaWFzIGZvciB0aGUgZGljdGlvbmFyeSBvZiB0aGVcbiJidWlsdGlucyIgbW9kdWxlIGl0c2VsZi4gICJfX2J1aWx0aW5zX18iIGNhbiBiZSBzZXQgdG8gYSB1c2VyLWNyZWF0ZWRcbmRpY3Rpb25hcnkgdG8gY3JlYXRlIGEgd2VhayBmb3JtIG9mIHJlc3RyaWN0ZWQgZXhlY3V0aW9uLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFVzZXJzIHNob3VsZCBub3QgdG91Y2hcbiJfX2J1aWx0aW5zX18iOyBpdCBpcyBzdHJpY3RseSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBVc2Vyc1xud2FudGluZyB0byBvdmVycmlkZSB2YWx1ZXMgaW4gdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBzaG91bGQgImltcG9ydCJcbnRoZSAiYnVpbHRpbnMiIG1vZHVsZSBhbmQgbW9kaWZ5IGl0cyBhdHRyaWJ1dGVzIGFwcHJvcHJpYXRlbHkuXG5cblxuSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuTmFtZSByZXNvbHV0aW9uIG9mIGZyZWUgdmFyaWFibGVzIG9jY3VycyBhdCBydW50aW1lLCBub3QgYXQgY29tcGlsZVxudGltZS4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZSB3aWxsIHByaW50IDQyOlxuXG4gICBpID0gMTBcbiAgIGRlZiBmKCk6XG4gICAgICAgcHJpbnQoaSlcbiAgIGkgPSA0MlxuICAgZigpXG5cblRoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHdoZXJlIFB5dGhvbiBzdGF0ZW1lbnRzIGFyZSBpbGxlZ2FsIHdoZW4gdXNlZFxuaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlIHZhcmlhYmxlcy5cblxuSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgaWxsZWdhbCB0b1xuZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlIHRpbWUuXG5cblRoZSAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgZnVsbFxuZW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyBuYW1lcy4gIE5hbWVzIG1heSBiZSByZXNvbHZlZCBpbiB0aGUgbG9jYWxcbmFuZCBnbG9iYWwgbmFtZXNwYWNlcyBvZiB0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlIG5vdCByZXNvbHZlZFxuaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAgWzFdXG5UaGUgImV4ZWMoKSIgYW5kICJldmFsKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xub3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlIGlzXG5zcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nLAogICdub25sb2NhbCc6IHUnXG5UaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBub25sb2NhbF9zdG10IDo6PSAibm9ubG9jYWwiIGlkZW50aWZpZXIgKCIsIiBpZGVudGlmaWVyKSpcblxuVGhlICJub25sb2NhbCIgc3RhdGVtZW50IGNhdXNlcyB0aGUgbGlzdGVkIGlkZW50aWZpZXJzIHRvIHJlZmVyIHRvXG5wcmV2aW91c2x5IGJvdW5kIHZhcmlhYmxlcyBpbiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZXhjbHVkaW5nXG5nbG9iYWxzLiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBiaW5kaW5nIGlzXG50byBzZWFyY2ggdGhlIGxvY2FsIG5hbWVzcGFjZSBmaXJzdC4gIFRoZSBzdGF0ZW1lbnQgYWxsb3dzXG5lbmNhcHN1bGF0ZWQgY29kZSB0byByZWJpbmQgdmFyaWFibGVzIG91dHNpZGUgb2YgdGhlIGxvY2FsIHNjb3BlXG5iZXNpZGVzIHRoZSBnbG9iYWwgKG1vZHVsZSkgc2NvcGUuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJub25sb2NhbCIgc3RhdGVtZW50LCB1bmxpa2UgdGhvc2UgbGlzdGVkIGluIGFcbiJnbG9iYWwiIHN0YXRlbWVudCwgbXVzdCByZWZlciB0byBwcmUtZXhpc3RpbmcgYmluZGluZ3MgaW4gYW5cbmVuY2xvc2luZyBzY29wZSAodGhlIHNjb3BlIGluIHdoaWNoIGEgbmV3IGJpbmRpbmcgc2hvdWxkIGJlIGNyZWF0ZWRcbmNhbm5vdCBiZSBkZXRlcm1pbmVkIHVuYW1iaWd1b3VzbHkpLlxuXG5OYW1lcyBsaXN0ZWQgaW4gYSAibm9ubG9jYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBjb2xsaWRlIHdpdGggcHJlLVxuZXhpc3RpbmcgYmluZGluZ3MgaW4gdGhlIGxvY2FsIHNjb3BlLlxuXG5TZWUgYWxzbzogKipQRVAgMzEwNCoqIC0gQWNjZXNzIHRvIE5hbWVzIGluIE91dGVyIFNjb3Blc1xuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQuXG4nLAogICdudW1iZXJzJzogdSdcbk51bWVyaWMgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIG51bWVyaWMgbGl0ZXJhbHM6IGludGVnZXJzLCBmbG9hdGluZyBwb2ludFxubnVtYmVycywgYW5kIGltYWdpbmFyeSBudW1iZXJzLiAgVGhlcmUgYXJlIG5vIGNvbXBsZXggbGl0ZXJhbHNcbihjb21wbGV4IG51bWJlcnMgY2FuIGJlIGZvcm1lZCBieSBhZGRpbmcgYSByZWFsIG51bWJlciBhbmQgYW5cbmltYWdpbmFyeSBudW1iZXIpLlxuXG5Ob3RlIHRoYXQgbnVtZXJpYyBsaXRlcmFscyBkbyBub3QgaW5jbHVkZSBhIHNpZ247IGEgcGhyYXNlIGxpa2UgIi0xIlxuaXMgYWN0dWFsbHkgYW4gZXhwcmVzc2lvbiBjb21wb3NlZCBvZiB0aGUgdW5hcnkgb3BlcmF0b3IgXCciLSJcJyBhbmQgdGhlXG5saXRlcmFsICIxIi5cbicsCi0gJ251bWVyaWMtdHlwZXMnOiB1J1xuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLCAicG93KCkiLFxuICAgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZVxuICAgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhblxuICAgIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyBjYWxsZWQuICBUaGUgIl9fZGl2bW9kX18oKSJcbiAgIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmcgIl9fZmxvb3JkaXZfXygpIiBhbmRcbiAgICJfX21vZF9fKCkiOyBpdCBzaG91bGQgbm90IGJlIHJlbGF0ZWQgdG8gIl9fdHJ1ZWRpdl9fKCkiLiAgTm90ZVxuICAgdGhhdCAiX19wb3dfXygpIiBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHQgYW4gb3B0aW9uYWwgdGhpcmRcbiAgIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluICJwb3coKSIgZnVuY3Rpb24gaXNcbiAgIHRvIGJlIHN1cHBvcnRlZC5cblxuICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIHdpdGggdGhlXG4gICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cblxub2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiLyIsICIvLyIsICIlIiwgImRpdm1vZCgpIiwgInBvdygpIixcbiAgICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpIHdpdGggcmVmbGVjdGVkIChzd2FwcGVkKSBvcGVyYW5kcy5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzIG5vdFxuICAgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2ZcbiAgIGRpZmZlcmVudCB0eXBlcy4gWzJdICBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4IC1cbiAgIHkiLCB3aGVyZSAqeSogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiAiX19yc3ViX18oKSJcbiAgIG1ldGhvZCwgInkuX19yc3ViX18oeCkiIGlzIGNhbGxlZCBpZiAieC5fX3N1Yl9fKHkpIiByZXR1cm5zXG4gICAqTm90SW1wbGVtZW50ZWQqLlxuXG4gICBOb3RlIHRoYXQgdGVybmFyeSAicG93KCkiIHdpbGwgbm90IHRyeSBjYWxsaW5nICJfX3Jwb3dfXygpIiAodGhlXG4gICBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3MgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgcmVmbGVjdGVkIG1ldGhvZFxuICAgICBmb3IgdGhlIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3Mgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzXG4gICAgIHRvIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9yc1wnIG9wZXJhdGlvbnMuXG5cbm9iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkIGFyaXRobWV0aWNcbiAgIGFzc2lnbm1lbnRzICgiKz0iLCAiLT0iLCAiKj0iLCAiLz0iLCAiLy89IiwgIiU9IiwgIioqPSIsICI8PD0iLFxuICAgIj4+PSIsICImPSIsICJePSIsICJ8PSIpLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGVcbiAgIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaFxuICAgY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsXG4gICBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCBpZiAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB3aXRoIGFuXG4gICAiX19pYWRkX18oKSIgbWV0aG9kLCAieCArPSB5IiBpcyBlcXVpdmFsZW50IHRvICJ4ID0geC5fX2lhZGRfXyh5KSJcbiAgIC4gT3RoZXJ3aXNlLCAieC5fX2FkZF9fKHkpIiBhbmQgInkuX19yYWRkX18oeCkiIGFyZSBjb25zaWRlcmVkLCBhc1xuICAgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiAieCArIHkiLiBJbiBjZXJ0YWluIHNpdHVhdGlvbnMsIGF1Z21lbnRlZFxuICAgYXNzaWdubWVudCBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgZXJyb3JzIChzZWUgKldoeSBkb2VzXG4gICBhX3R1cGxlW2ldICs9IFtcJ2l0ZW1cJ10gcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhlIGFkZGl0aW9uXG4gICB3b3Jrcz8qKSwgYnV0IHRoaXMgYmVoYXZpb3IgaXMgaW4gZmFjdCBwYXJ0IG9mIHRoZSBkYXRhIG1vZGVsLlxuXG5vYmplY3QuX19uZWdfXyhzZWxmKVxub2JqZWN0Ll9fcG9zX18oc2VsZilcbm9iamVjdC5fX2Fic19fKHNlbGYpXG5vYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKCItIiwgIisiLFxuICAgImFicygpIiBhbmQgIn4iKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiY29tcGxleCgpIiwgImludCgpIixcbiAgICJmbG9hdCgpIiBhbmQgInJvdW5kKCkiLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mIHRoZSBhcHByb3ByaWF0ZVxuICAgdHlwZS5cblxub2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5pbmRleCgpIiwgYW5kIHdoZW5ldmVyIFB5dGhvbiBuZWVkc1xuICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyIG9iamVjdCAoc3VjaFxuICAgYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlIGJ1aWx0LWluICJiaW4oKSIsICJoZXgoKSIgYW5kICJvY3QoKSJcbiAgIGZ1bmN0aW9ucykuIFByZXNlbmNlIG9mIHRoaXMgbWV0aG9kIGluZGljYXRlcyB0aGF0IHRoZSBudW1lcmljXG4gICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cblxuICAgTm90ZTogSW4gb3JkZXIgdG8gaGF2ZSBhIGNvaGVyZW50IGludGVnZXIgdHlwZSBjbGFzcywgd2hlblxuICAgICAiX19pbmRleF9fKCkiIGlzIGRlZmluZWQgIl9faW50X18oKSIgc2hvdWxkIGFsc28gYmUgZGVmaW5lZCwgYW5kXG4gICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cbicsCisgJ251bWVyaWMtdHlwZXMnOiB1J1xuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tYXRtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgImRpdm1vZCgpIixcbiAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpLiAgRm9yIGluc3RhbmNlLCB0b1xuICAgZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gInggKyB5Iiwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGFcbiAgIGNsYXNzIHRoYXQgaGFzIGFuICJfX2FkZF9fKCkiIG1ldGhvZCwgInguX19hZGRfXyh5KSIgaXMgY2FsbGVkLlxuICAgVGhlICJfX2Rpdm1vZF9fKCkiIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmdcbiAgICJfX2Zsb29yZGl2X18oKSIgYW5kICJfX21vZF9fKCkiOyBpdCBzaG91bGQgbm90IGJlIHJlbGF0ZWQgdG9cbiAgICJfX3RydWVkaXZfXygpIi4gIE5vdGUgdGhhdCAiX19wb3dfXygpIiBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHRcbiAgIGFuIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluXG4gICAicG93KCkiIGZ1bmN0aW9uIGlzIHRvIGJlIHN1cHBvcnRlZC5cblxuICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIHdpdGggdGhlXG4gICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cblxub2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLFxuICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8Iikgd2l0aCByZWZsZWN0ZWQgKHN3YXBwZWQpXG4gICBvcGVyYW5kcy4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzXG4gICBub3Qgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2ZcbiAgIGRpZmZlcmVudCB0eXBlcy4gWzJdIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gInggLVxuICAgeSIsIHdoZXJlICp5KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuICJfX3JzdWJfXygpIlxuICAgbWV0aG9kLCAieS5fX3JzdWJfXyh4KSIgaXMgY2FsbGVkIGlmICJ4Ll9fc3ViX18oeSkiIHJldHVybnNcbiAgICpOb3RJbXBsZW1lbnRlZCouXG5cbiAgIE5vdGUgdGhhdCB0ZXJuYXJ5ICJwb3coKSIgd2lsbCBub3QgdHJ5IGNhbGxpbmcgIl9fcnBvd19fKCkiICh0aGVcbiAgIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuXG4gICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIGxlZnRcbiAgICAgb3BlcmFuZFwncyB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSByZWZsZWN0ZWQgbWV0aG9kXG4gICAgIGZvciB0aGUgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGxlZnRcbiAgICAgb3BlcmFuZFwncyBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgYWxsb3dzIHN1YmNsYXNzZXNcbiAgICAgdG8gb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzXCcgb3BlcmF0aW9ucy5cblxub2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgYXJpdGhtZXRpY1xuICAgYXNzaWdubWVudHMgKCIrPSIsICItPSIsICIqPSIsICJAPSIsICIvPSIsICIvLz0iLCAiJT0iLCAiKio9IixcbiAgICI8PD0iLCAiPj49IiwgIiY9IiwgIl49IiwgInw9IikuICBUaGVzZSBtZXRob2RzIHNob3VsZCBhdHRlbXB0IHRvXG4gICBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmQgcmV0dXJuIHRoZSByZXN1bHRcbiAgICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsICpzZWxmKikuICBJZiBhIHNwZWNpZmljXG4gICBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWQgYXNzaWdubWVudCBmYWxscyBiYWNrIHRvIHRoZVxuICAgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIGlmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzXG4gICB3aXRoIGFuICJfX2lhZGRfXygpIiBtZXRob2QsICJ4ICs9IHkiIGlzIGVxdWl2YWxlbnQgdG8gInggPVxuICAgeC5fX2lhZGRfXyh5KSIgLiBPdGhlcndpc2UsICJ4Ll9fYWRkX18oeSkiIGFuZCAieS5fX3JhZGRfXyh4KSIgYXJlXG4gICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mICJ4ICsgeSIuIEluIGNlcnRhaW5cbiAgIHNpdHVhdGlvbnMsIGF1Z21lbnRlZCBhc3NpZ25tZW50IGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBlcnJvcnNcbiAgIChzZWUgKldoeSBkb2VzIGFfdHVwbGVbaV0gKz0gW1wnaXRlbVwnXSByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGVcbiAgIGFkZGl0aW9uIHdvcmtzPyopLCBidXQgdGhpcyBiZWhhdmlvciBpcyBpbiBmYWN0IHBhcnQgb2YgdGhlIGRhdGFcbiAgIG1vZGVsLlxuXG5vYmplY3QuX19uZWdfXyhzZWxmKVxub2JqZWN0Ll9fcG9zX18oc2VsZilcbm9iamVjdC5fX2Fic19fKHNlbGYpXG5vYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKCItIiwgIisiLFxuICAgImFicygpIiBhbmQgIn4iKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiY29tcGxleCgpIiwgImludCgpIixcbiAgICJmbG9hdCgpIiBhbmQgInJvdW5kKCkiLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mIHRoZSBhcHByb3ByaWF0ZVxuICAgdHlwZS5cblxub2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5pbmRleCgpIiwgYW5kIHdoZW5ldmVyIFB5dGhvbiBuZWVkc1xuICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyIG9iamVjdCAoc3VjaFxuICAgYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlIGJ1aWx0LWluICJiaW4oKSIsICJoZXgoKSIgYW5kICJvY3QoKSJcbiAgIGZ1bmN0aW9ucykuIFByZXNlbmNlIG9mIHRoaXMgbWV0aG9kIGluZGljYXRlcyB0aGF0IHRoZSBudW1lcmljXG4gICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cblxuICAgTm90ZTogSW4gb3JkZXIgdG8gaGF2ZSBhIGNvaGVyZW50IGludGVnZXIgdHlwZSBjbGFzcywgd2hlblxuICAgICAiX19pbmRleF9fKCkiIGlzIGRlZmluZWQgIl9faW50X18oKSIgc2hvdWxkIGFsc28gYmUgZGVmaW5lZCwgYW5kXG4gICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cbicsCiAgJ29iamVjdHMnOiB1J1xuT2JqZWN0cywgdmFsdWVzIGFuZCB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4qT2JqZWN0cyogYXJlIFB5dGhvblwncyBhYnN0cmFjdGlvbiBmb3IgZGF0YS4gIEFsbCBkYXRhIGluIGEgUHl0aG9uXG5wcm9ncmFtIGlzIHJlcHJlc2VudGVkIGJ5IG9iamVjdHMgb3IgYnkgcmVsYXRpb25zIGJldHdlZW4gb2JqZWN0cy4gKEluXG5hIHNlbnNlLCBhbmQgaW4gY29uZm9ybWFuY2UgdG8gVm9uIE5ldW1hbm5cJ3MgbW9kZWwgb2YgYSAic3RvcmVkXG5wcm9ncmFtIGNvbXB1dGVyLCIgY29kZSBpcyBhbHNvIHJlcHJlc2VudGVkIGJ5IG9iamVjdHMuKVxuXG5FdmVyeSBvYmplY3QgaGFzIGFuIGlkZW50aXR5LCBhIHR5cGUgYW5kIGEgdmFsdWUuICBBbiBvYmplY3RcJ3NcbippZGVudGl0eSogbmV2ZXIgY2hhbmdlcyBvbmNlIGl0IGhhcyBiZWVuIGNyZWF0ZWQ7IHlvdSBtYXkgdGhpbmsgb2YgaXRcbmFzIHRoZSBvYmplY3RcJ3MgYWRkcmVzcyBpbiBtZW1vcnkuICBUaGUgXCciaXMiXCcgb3BlcmF0b3IgY29tcGFyZXMgdGhlXG5pZGVudGl0eSBvZiB0d28gb2JqZWN0czsgdGhlICJpZCgpIiBmdW5jdGlvbiByZXR1cm5zIGFuIGludGVnZXJcbnJlcHJlc2VudGluZyBpdHMgaWRlbnRpdHkuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogRm9yIENQeXRob24sICJpZCh4KSIgaXMgdGhlIG1lbW9yeVxuYWRkcmVzcyB3aGVyZSAieCIgaXMgc3RvcmVkLlxuXG5BbiBvYmplY3RcJ3MgdHlwZSBkZXRlcm1pbmVzIHRoZSBvcGVyYXRpb25zIHRoYXQgdGhlIG9iamVjdCBzdXBwb3J0c1xuKGUuZy4sICJkb2VzIGl0IGhhdmUgYSBsZW5ndGg/IikgYW5kIGFsc28gZGVmaW5lcyB0aGUgcG9zc2libGUgdmFsdWVzXG5mb3Igb2JqZWN0cyBvZiB0aGF0IHR5cGUuICBUaGUgInR5cGUoKSIgZnVuY3Rpb24gcmV0dXJucyBhbiBvYmplY3RcJ3NcbnR5cGUgKHdoaWNoIGlzIGFuIG9iamVjdCBpdHNlbGYpLiAgTGlrZSBpdHMgaWRlbnRpdHksIGFuIG9iamVjdFwnc1xuKnR5cGUqIGlzIGFsc28gdW5jaGFuZ2VhYmxlLiBbMV1cblxuVGhlICp2YWx1ZSogb2Ygc29tZSBvYmplY3RzIGNhbiBjaGFuZ2UuICBPYmplY3RzIHdob3NlIHZhbHVlIGNhblxuY2hhbmdlIGFyZSBzYWlkIHRvIGJlICptdXRhYmxlKjsgb2JqZWN0cyB3aG9zZSB2YWx1ZSBpcyB1bmNoYW5nZWFibGVcbm9uY2UgdGhleSBhcmUgY3JlYXRlZCBhcmUgY2FsbGVkICppbW11dGFibGUqLiAoVGhlIHZhbHVlIG9mIGFuXG5pbW11dGFibGUgY29udGFpbmVyIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZVxub2JqZWN0IGNhbiBjaGFuZ2Ugd2hlbiB0aGUgbGF0dGVyXCdzIHZhbHVlIGlzIGNoYW5nZWQ7IGhvd2V2ZXIgdGhlXG5jb250YWluZXIgaXMgc3RpbGwgY29uc2lkZXJlZCBpbW11dGFibGUsIGJlY2F1c2UgdGhlIGNvbGxlY3Rpb24gb2Zcbm9iamVjdHMgaXQgY29udGFpbnMgY2Fubm90IGJlIGNoYW5nZWQuICBTbywgaW1tdXRhYmlsaXR5IGlzIG5vdFxuc3RyaWN0bHkgdGhlIHNhbWUgYXMgaGF2aW5nIGFuIHVuY2hhbmdlYWJsZSB2YWx1ZSwgaXQgaXMgbW9yZSBzdWJ0bGUuKVxuQW4gb2JqZWN0XCdzIG11dGFiaWxpdHkgaXMgZGV0ZXJtaW5lZCBieSBpdHMgdHlwZTsgZm9yIGluc3RhbmNlLFxubnVtYmVycywgc3RyaW5ncyBhbmQgdHVwbGVzIGFyZSBpbW11dGFibGUsIHdoaWxlIGRpY3Rpb25hcmllcyBhbmRcbmxpc3RzIGFyZSBtdXRhYmxlLlxuXG5PYmplY3RzIGFyZSBuZXZlciBleHBsaWNpdGx5IGRlc3Ryb3llZDsgaG93ZXZlciwgd2hlbiB0aGV5IGJlY29tZVxudW5yZWFjaGFibGUgdGhleSBtYXkgYmUgZ2FyYmFnZS1jb2xsZWN0ZWQuICBBbiBpbXBsZW1lbnRhdGlvbiBpc1xuYWxsb3dlZCB0byBwb3N0cG9uZSBnYXJiYWdlIGNvbGxlY3Rpb24gb3Igb21pdCBpdCBhbHRvZ2V0aGVyIC0tLSBpdCBpc1xuYSBtYXR0ZXIgb2YgaW1wbGVtZW50YXRpb24gcXVhbGl0eSBob3cgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzXG5pbXBsZW1lbnRlZCwgYXMgbG9uZyBhcyBubyBvYmplY3RzIGFyZSBjb2xsZWN0ZWQgdGhhdCBhcmUgc3RpbGxcbnJlYWNoYWJsZS5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBDUHl0aG9uIGN1cnJlbnRseSB1c2VzIGEgcmVmZXJlbmNlLVxuY291bnRpbmcgc2NoZW1lIHdpdGggKG9wdGlvbmFsKSBkZWxheWVkIGRldGVjdGlvbiBvZiBjeWNsaWNhbGx5IGxpbmtlZFxuZ2FyYmFnZSwgd2hpY2ggY29sbGVjdHMgbW9zdCBvYmplY3RzIGFzIHNvb24gYXMgdGhleSBiZWNvbWVcbnVucmVhY2hhYmxlLCBidXQgaXMgbm90IGd1YXJhbnRlZWQgdG8gY29sbGVjdCBnYXJiYWdlIGNvbnRhaW5pbmdcbmNpcmN1bGFyIHJlZmVyZW5jZXMuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlICJnYyIgbW9kdWxlIGZvclxuaW5mb3JtYXRpb24gb24gY29udHJvbGxpbmcgdGhlIGNvbGxlY3Rpb24gb2YgY3ljbGljIGdhcmJhZ2UuIE90aGVyXG5pbXBsZW1lbnRhdGlvbnMgYWN0IGRpZmZlcmVudGx5IGFuZCBDUHl0aG9uIG1heSBjaGFuZ2UuIERvIG5vdCBkZXBlbmRcbm9uIGltbWVkaWF0ZSBmaW5hbGl6YXRpb24gb2Ygb2JqZWN0cyB3aGVuIHRoZXkgYmVjb21lIHVucmVhY2hhYmxlIChzb1xueW91IHNob3VsZCBhbHdheXMgY2xvc2UgZmlsZXMgZXhwbGljaXRseSkuXG5cbk5vdGUgdGhhdCB0aGUgdXNlIG9mIHRoZSBpbXBsZW1lbnRhdGlvblwncyB0cmFjaW5nIG9yIGRlYnVnZ2luZ1xuZmFjaWxpdGllcyBtYXkga2VlcCBvYmplY3RzIGFsaXZlIHRoYXQgd291bGQgbm9ybWFsbHkgYmUgY29sbGVjdGFibGUuXG5BbHNvIG5vdGUgdGhhdCBjYXRjaGluZyBhbiBleGNlcHRpb24gd2l0aCBhIFwnInRyeSIuLi4iZXhjZXB0IlwnXG5zdGF0ZW1lbnQgbWF5IGtlZXAgb2JqZWN0cyBhbGl2ZS5cblxuU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byAiZXh0ZXJuYWwiIHJlc291cmNlcyBzdWNoIGFzIG9wZW5cbmZpbGVzIG9yIHdpbmRvd3MuICBJdCBpcyB1bmRlcnN0b29kIHRoYXQgdGhlc2UgcmVzb3VyY2VzIGFyZSBmcmVlZFxud2hlbiB0aGUgb2JqZWN0IGlzIGdhcmJhZ2UtY29sbGVjdGVkLCBidXQgc2luY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzXG5ub3QgZ3VhcmFudGVlZCB0byBoYXBwZW4sIHN1Y2ggb2JqZWN0cyBhbHNvIHByb3ZpZGUgYW4gZXhwbGljaXQgd2F5IHRvXG5yZWxlYXNlIHRoZSBleHRlcm5hbCByZXNvdXJjZSwgdXN1YWxseSBhICJjbG9zZSgpIiBtZXRob2QuIFByb2dyYW1zXG5hcmUgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gZXhwbGljaXRseSBjbG9zZSBzdWNoIG9iamVjdHMuICBUaGVcblwnInRyeSIuLi4iZmluYWxseSJcJyBzdGF0ZW1lbnQgYW5kIHRoZSBcJyJ3aXRoIlwnIHN0YXRlbWVudCBwcm92aWRlXG5jb252ZW5pZW50IHdheXMgdG8gZG8gdGhpcy5cblxuU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzOyB0aGVzZSBhcmUgY2FsbGVkXG4qY29udGFpbmVycyouIEV4YW1wbGVzIG9mIGNvbnRhaW5lcnMgYXJlIHR1cGxlcywgbGlzdHMgYW5kXG5kaWN0aW9uYXJpZXMuICBUaGUgcmVmZXJlbmNlcyBhcmUgcGFydCBvZiBhIGNvbnRhaW5lclwncyB2YWx1ZS4gIEluXG5tb3N0IGNhc2VzLCB3aGVuIHdlIHRhbGsgYWJvdXQgdGhlIHZhbHVlIG9mIGEgY29udGFpbmVyLCB3ZSBpbXBseSB0aGVcbnZhbHVlcywgbm90IHRoZSBpZGVudGl0aWVzIG9mIHRoZSBjb250YWluZWQgb2JqZWN0czsgaG93ZXZlciwgd2hlbiB3ZVxudGFsayBhYm91dCB0aGUgbXV0YWJpbGl0eSBvZiBhIGNvbnRhaW5lciwgb25seSB0aGUgaWRlbnRpdGllcyBvZiB0aGVcbmltbWVkaWF0ZWx5IGNvbnRhaW5lZCBvYmplY3RzIGFyZSBpbXBsaWVkLiAgU28sIGlmIGFuIGltbXV0YWJsZVxuY29udGFpbmVyIChsaWtlIGEgdHVwbGUpIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZSBvYmplY3QsIGl0c1xudmFsdWUgY2hhbmdlcyBpZiB0aGF0IG11dGFibGUgb2JqZWN0IGlzIGNoYW5nZWQuXG5cblR5cGVzIGFmZmVjdCBhbG1vc3QgYWxsIGFzcGVjdHMgb2Ygb2JqZWN0IGJlaGF2aW9yLiAgRXZlbiB0aGVcbmltcG9ydGFuY2Ugb2Ygb2JqZWN0IGlkZW50aXR5IGlzIGFmZmVjdGVkIGluIHNvbWUgc2Vuc2U6IGZvciBpbW11dGFibGVcbnR5cGVzLCBvcGVyYXRpb25zIHRoYXQgY29tcHV0ZSBuZXcgdmFsdWVzIG1heSBhY3R1YWxseSByZXR1cm4gYVxucmVmZXJlbmNlIHRvIGFueSBleGlzdGluZyBvYmplY3Qgd2l0aCB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSwgd2hpbGVcbmZvciBtdXRhYmxlIG9iamVjdHMgdGhpcyBpcyBub3QgYWxsb3dlZC4gIEUuZy4sIGFmdGVyICJhID0gMTsgYiA9IDEiLFxuImEiIGFuZCAiYiIgbWF5IG9yIG1heSBub3QgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0IHdpdGggdGhlIHZhbHVlXG5vbmUsIGRlcGVuZGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24sIGJ1dCBhZnRlciAiYyA9IFtdOyBkID0gW10iLCAiYyJcbmFuZCAiZCIgYXJlIGd1YXJhbnRlZWQgdG8gcmVmZXIgdG8gdHdvIGRpZmZlcmVudCwgdW5pcXVlLCBuZXdseVxuY3JlYXRlZCBlbXB0eSBsaXN0cy4gKE5vdGUgdGhhdCAiYyA9IGQgPSBbXSIgYXNzaWducyB0aGUgc2FtZSBvYmplY3RcbnRvIGJvdGggImMiIGFuZCAiZCIuKVxuJywKLSAnb3BlcmF0b3Itc3VtbWFyeSc6IHUnXG5PcGVyYXRvciBwcmVjZWRlbmNlXG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgdGFibGUgc3VtbWFyaXplcyB0aGUgb3BlcmF0b3IgcHJlY2VkZW5jZSBpbiBQeXRob24sIGZyb21cbmxvd2VzdCBwcmVjZWRlbmNlIChsZWFzdCBiaW5kaW5nKSB0byBoaWdoZXN0IHByZWNlZGVuY2UgKG1vc3RcbmJpbmRpbmcpLiAgT3BlcmF0b3JzIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lIHByZWNlZGVuY2UuICBVbmxlc3NcbnRoZSBzeW50YXggaXMgZXhwbGljaXRseSBnaXZlbiwgb3BlcmF0b3JzIGFyZSBiaW5hcnkuICBPcGVyYXRvcnMgaW5cbnRoZSBzYW1lIGJveCBncm91cCBsZWZ0IHRvIHJpZ2h0IChleGNlcHQgZm9yIGV4cG9uZW50aWF0aW9uLCB3aGljaFxuZ3JvdXBzIGZyb20gcmlnaHQgdG8gbGVmdCkuXG5cbk5vdGUgdGhhdCBjb21wYXJpc29ucywgbWVtYmVyc2hpcCB0ZXN0cywgYW5kIGlkZW50aXR5IHRlc3RzLCBhbGwgaGF2ZVxudGhlIHNhbWUgcHJlY2VkZW5jZSBhbmQgaGF2ZSBhIGxlZnQtdG8tcmlnaHQgY2hhaW5pbmcgZmVhdHVyZSBhc1xuZGVzY3JpYmVkIGluIHRoZSAqQ29tcGFyaXNvbnMqIHNlY3Rpb24uXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbnwgImxhbWJkYSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMYW1iZGEgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImlmIiAtLSAiZWxzZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb25kaXRpb25hbCBleHByZXNzaW9uICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIm9yIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImFuZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIm5vdCIgIngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE5PVCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImluIiwgIm5vdCBpbiIsICJpcyIsICJpcyBub3QiLCAiPCIsICI8PSIsICI+IiwgfCBDb21wYXJpc29ucywgaW5jbHVkaW5nIG1lbWJlcnNoaXAgICAgIHxcbnwgIj49IiwgIiE9IiwgIj09IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0ZXN0cyBhbmQgaWRlbnRpdHkgdGVzdHMgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIl4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIFhPUiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIiYiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIjw8IiwgIj4+IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaGlmdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIisiLCAiLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24gICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIioiLCAiLyIsICIvLyIsICIlIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNdWx0aXBsaWNhdGlvbiwgZGl2aXNpb24sIHJlbWFpbmRlciAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbNV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIit4IiwgIi14IiwgIn54IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQb3NpdGl2ZSwgbmVnYXRpdmUsIGJpdHdpc2UgTk9UICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIioqIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFeHBvbmVudGlhdGlvbiBbNl0gICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInhbaW5kZXhdIiwgInhbaW5kZXg6aW5kZXhdIiwgICAgICAgICAgICAgICAgICAgfCBTdWJzY3JpcHRpb24sIHNsaWNpbmcsIGNhbGwsICAgICAgICAgIHxcbnwgIngoYXJndW1lbnRzLi4uKSIsICJ4LmF0dHJpYnV0ZSIgICAgICAgICAgICAgICAgfCBhdHRyaWJ1dGUgcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIihleHByZXNzaW9ucy4uLikiLCAiW2V4cHJlc3Npb25zLi4uXSIsICJ7a2V5OiAgfCBCaW5kaW5nIG9yIHR1cGxlIGRpc3BsYXksIGxpc3QgICAgICAgIHxcbnwgdmFsdWUuLi59IiwgIntleHByZXNzaW9ucy4uLn0iICAgICAgICAgICAgICAgICAgfCBkaXNwbGF5LCBkaWN0aW9uYXJ5IGRpc3BsYXksIHNldCAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaXNwbGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBXaGlsZSAiYWJzKHgleSkgPCBhYnMoeSkiIGlzIHRydWUgbWF0aGVtYXRpY2FsbHksIGZvciBmbG9hdHNcbiAgICBpdCBtYXkgbm90IGJlIHRydWUgbnVtZXJpY2FsbHkgZHVlIHRvIHJvdW5kb2ZmLiAgRm9yIGV4YW1wbGUsIGFuZFxuICAgIGFzc3VtaW5nIGEgcGxhdGZvcm0gb24gd2hpY2ggYSBQeXRob24gZmxvYXQgaXMgYW4gSUVFRSA3NTQgZG91YmxlLVxuICAgIHByZWNpc2lvbiBudW1iZXIsIGluIG9yZGVyIHRoYXQgIi0xZS0xMDAgJSAxZTEwMCIgaGF2ZSB0aGUgc2FtZVxuICAgIHNpZ24gYXMgIjFlMTAwIiwgdGhlIGNvbXB1dGVkIHJlc3VsdCBpcyAiLTFlLTEwMCArIDFlMTAwIiwgd2hpY2hcbiAgICBpcyBudW1lcmljYWxseSBleGFjdGx5IGVxdWFsIHRvICIxZTEwMCIuICBUaGUgZnVuY3Rpb25cbiAgICAibWF0aC5mbW9kKCkiIHJldHVybnMgYSByZXN1bHQgd2hvc2Ugc2lnbiBtYXRjaGVzIHRoZSBzaWduIG9mIHRoZVxuICAgIGZpcnN0IGFyZ3VtZW50IGluc3RlYWQsIGFuZCBzbyByZXR1cm5zICItMWUtMTAwIiBpbiB0aGlzIGNhc2UuXG4gICAgV2hpY2ggYXBwcm9hY2ggaXMgbW9yZSBhcHByb3ByaWF0ZSBkZXBlbmRzIG9uIHRoZSBhcHBsaWNhdGlvbi5cblxuWzJdIElmIHggaXMgdmVyeSBjbG9zZSB0byBhbiBleGFjdCBpbnRlZ2VyIG11bHRpcGxlIG9mIHksIGl0XCdzXG4gICAgcG9zc2libGUgZm9yICJ4Ly95IiB0byBiZSBvbmUgbGFyZ2VyIHRoYW4gIih4LXgleSkvL3kiIGR1ZSB0b1xuICAgIHJvdW5kaW5nLiAgSW4gc3VjaCBjYXNlcywgUHl0aG9uIHJldHVybnMgdGhlIGxhdHRlciByZXN1bHQsIGluXG4gICAgb3JkZXIgdG8gcHJlc2VydmUgdGhhdCAiZGl2bW9kKHgseSlbMF0gKiB5ICsgeCAlIHkiIGJlIHZlcnkgY2xvc2VcbiAgICB0byAieCIuXG5cblszXSBUaGUgVW5pY29kZSBzdGFuZGFyZCBkaXN0aW5ndWlzaGVzIGJldHdlZW4gKmNvZGUgcG9pbnRzKiAoZS5nLlxuICAgIFUrMDA0MSkgYW5kICphYnN0cmFjdCBjaGFyYWN0ZXJzKiAoZS5nLiAiTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSIpLlxuICAgIFdoaWxlIG1vc3QgYWJzdHJhY3QgY2hhcmFjdGVycyBpbiBVbmljb2RlIGFyZSBvbmx5IHJlcHJlc2VudGVkXG4gICAgdXNpbmcgb25lIGNvZGUgcG9pbnQsIHRoZXJlIGlzIGEgbnVtYmVyIG9mIGFic3RyYWN0IGNoYXJhY3RlcnNcbiAgICB0aGF0IGNhbiBpbiBhZGRpdGlvbiBiZSByZXByZXNlbnRlZCB1c2luZyBhIHNlcXVlbmNlIG9mIG1vcmUgdGhhblxuICAgIG9uZSBjb2RlIHBvaW50LiAgRm9yIGV4YW1wbGUsIHRoZSBhYnN0cmFjdCBjaGFyYWN0ZXIgIkxBVElOXG4gICAgQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEiIGNhbiBiZSByZXByZXNlbnRlZCBhcyBhIHNpbmdsZVxuICAgICpwcmVjb21wb3NlZCBjaGFyYWN0ZXIqIGF0IGNvZGUgcG9zaXRpb24gVSswMEM3LCBvciBhcyBhIHNlcXVlbmNlXG4gICAgb2YgYSAqYmFzZSBjaGFyYWN0ZXIqIGF0IGNvZGUgcG9zaXRpb24gVSswMDQzIChMQVRJTiBDQVBJVEFMXG4gICAgTEVUVEVSIEMpLCBmb2xsb3dlZCBieSBhICpjb21iaW5pbmcgY2hhcmFjdGVyKiBhdCBjb2RlIHBvc2l0aW9uXG4gICAgVSswMzI3IChDT01CSU5JTkcgQ0VESUxMQSkuXG5cbiAgICBUaGUgY29tcGFyaXNvbiBvcGVyYXRvcnMgb24gc3RyaW5ncyBjb21wYXJlIGF0IHRoZSBsZXZlbCBvZlxuICAgIFVuaWNvZGUgY29kZSBwb2ludHMuIFRoaXMgbWF5IGJlIGNvdW50ZXItaW50dWl0aXZlIHRvIGh1bWFucy4gIEZvclxuICAgIGV4YW1wbGUsICIiXFx1MDBDNyIgPT0gIlxcdTAwNDNcXHUwMzI3IiIgaXMgIkZhbHNlIiwgZXZlbiB0aG91Z2ggYm90aFxuICAgIHN0cmluZ3MgcmVwcmVzZW50IHRoZSBzYW1lIGFic3RyYWN0IGNoYXJhY3RlciAiTEFUSU4gQ0FQSVRBTFxuICAgIExFVFRFUiBDIFdJVEggQ0VESUxMQSIuXG5cbiAgICBUbyBjb21wYXJlIHN0cmluZ3MgYXQgdGhlIGxldmVsIG9mIGFic3RyYWN0IGNoYXJhY3RlcnMgKHRoYXQgaXMsXG4gICAgaW4gYSB3YXkgaW50dWl0aXZlIHRvIGh1bWFucyksIHVzZSAidW5pY29kZWRhdGEubm9ybWFsaXplKCkiLlxuXG5bNF0gRHVlIHRvIGF1dG9tYXRpYyBnYXJiYWdlLWNvbGxlY3Rpb24sIGZyZWUgbGlzdHMsIGFuZCB0aGVcbiAgICBkeW5hbWljIG5hdHVyZSBvZiBkZXNjcmlwdG9ycywgeW91IG1heSBub3RpY2Ugc2VlbWluZ2x5IHVudXN1YWxcbiAgICBiZWhhdmlvdXIgaW4gY2VydGFpbiB1c2VzIG9mIHRoZSAiaXMiIG9wZXJhdG9yLCBsaWtlIHRob3NlXG4gICAgaW52b2x2aW5nIGNvbXBhcmlzb25zIGJldHdlZW4gaW5zdGFuY2UgbWV0aG9kcywgb3IgY29uc3RhbnRzLlxuICAgIENoZWNrIHRoZWlyIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mby5cblxuWzVdIFRoZSAiJSIgb3BlcmF0b3IgaXMgYWxzbyB1c2VkIGZvciBzdHJpbmcgZm9ybWF0dGluZzsgdGhlIHNhbWVcbiAgICBwcmVjZWRlbmNlIGFwcGxpZXMuXG5cbls2XSBUaGUgcG93ZXIgb3BlcmF0b3IgIioqIiBiaW5kcyBsZXNzIHRpZ2h0bHkgdGhhbiBhbiBhcml0aG1ldGljXG4gICAgb3IgYml0d2lzZSB1bmFyeSBvcGVyYXRvciBvbiBpdHMgcmlnaHQsIHRoYXQgaXMsICIyKiotMSIgaXMgIjAuNSIuXG4nLAorICdvcGVyYXRvci1zdW1tYXJ5JzogdSdcbk9wZXJhdG9yIHByZWNlZGVuY2VcbioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyB0YWJsZSBzdW1tYXJpemVzIHRoZSBvcGVyYXRvciBwcmVjZWRlbmNlIGluIFB5dGhvbiwgZnJvbVxubG93ZXN0IHByZWNlZGVuY2UgKGxlYXN0IGJpbmRpbmcpIHRvIGhpZ2hlc3QgcHJlY2VkZW5jZSAobW9zdFxuYmluZGluZykuICBPcGVyYXRvcnMgaW4gdGhlIHNhbWUgYm94IGhhdmUgdGhlIHNhbWUgcHJlY2VkZW5jZS4gIFVubGVzc1xudGhlIHN5bnRheCBpcyBleHBsaWNpdGx5IGdpdmVuLCBvcGVyYXRvcnMgYXJlIGJpbmFyeS4gIE9wZXJhdG9ycyBpblxudGhlIHNhbWUgYm94IGdyb3VwIGxlZnQgdG8gcmlnaHQgKGV4Y2VwdCBmb3IgZXhwb25lbnRpYXRpb24sIHdoaWNoXG5ncm91cHMgZnJvbSByaWdodCB0byBsZWZ0KS5cblxuTm90ZSB0aGF0IGNvbXBhcmlzb25zLCBtZW1iZXJzaGlwIHRlc3RzLCBhbmQgaWRlbnRpdHkgdGVzdHMsIGFsbCBoYXZlXG50aGUgc2FtZSBwcmVjZWRlbmNlIGFuZCBoYXZlIGEgbGVmdC10by1yaWdodCBjaGFpbmluZyBmZWF0dXJlIGFzXG5kZXNjcmliZWQgaW4gdGhlICpDb21wYXJpc29ucyogc2VjdGlvbi5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xufCAibGFtYmRhIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExhbWJkYSBleHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiaWYiIC0tICJlbHNlIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbmRpdGlvbmFsIGV4cHJlc3Npb24gICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAib3IiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiYW5kIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAibm90IiAieCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gTk9UICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiaW4iLCAibm90IGluIiwgImlzIiwgImlzIG5vdCIsICI8IiwgIjw9IiwgIj4iLCB8IENvbXBhcmlzb25zLCBpbmNsdWRpbmcgbWVtYmVyc2hpcCAgICAgfFxufCAiPj0iLCAiIT0iLCAiPT0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRlc3RzIGFuZCBpZGVudGl0eSB0ZXN0cyAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAifCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiXiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgWE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiJiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiPDwiLCAiPj4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNoaWZ0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKyIsICItIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbiAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIgICAgICAgICAgICAgICAgICAgICAgICB8IE11bHRpcGxpY2F0aW9uLCBtYXRyaXggbXVsdGlwbGljYXRpb24gfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpdmlzaW9uLCByZW1haW5kZXIgWzVdICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiK3giLCAiLXgiLCAifngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBvc2l0aXZlLCBuZWdhdGl2ZSwgYml0d2lzZSBOT1QgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKioiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEV4cG9uZW50aWF0aW9uIFs2XSAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiYXdhaXQiICJ4IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEF3YWl0IGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAieFtpbmRleF0iLCAieFtpbmRleDppbmRleF0iLCAgICAgICAgICAgICAgICAgICB8IFN1YnNjcmlwdGlvbiwgc2xpY2luZywgY2FsbCwgICAgICAgICAgfFxufCAieChhcmd1bWVudHMuLi4pIiwgInguYXR0cmlidXRlIiAgICAgICAgICAgICAgICB8IGF0dHJpYnV0ZSByZWZlcmVuY2UgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKGV4cHJlc3Npb25zLi4uKSIsICJbZXhwcmVzc2lvbnMuLi5dIiwgIntrZXk6ICB8IEJpbmRpbmcgb3IgdHVwbGUgZGlzcGxheSwgbGlzdCAgICAgICAgfFxufCB2YWx1ZS4uLn0iLCAie2V4cHJlc3Npb25zLi4ufSIgICAgICAgICAgICAgICAgICB8IGRpc3BsYXksIGRpY3Rpb25hcnkgZGlzcGxheSwgc2V0ICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFdoaWxlICJhYnMoeCV5KSA8IGFicyh5KSIgaXMgdHJ1ZSBtYXRoZW1hdGljYWxseSwgZm9yIGZsb2F0c1xuICAgIGl0IG1heSBub3QgYmUgdHJ1ZSBudW1lcmljYWxseSBkdWUgdG8gcm91bmRvZmYuICBGb3IgZXhhbXBsZSwgYW5kXG4gICAgYXNzdW1pbmcgYSBwbGF0Zm9ybSBvbiB3aGljaCBhIFB5dGhvbiBmbG9hdCBpcyBhbiBJRUVFIDc1NCBkb3VibGUtXG4gICAgcHJlY2lzaW9uIG51bWJlciwgaW4gb3JkZXIgdGhhdCAiLTFlLTEwMCAlIDFlMTAwIiBoYXZlIHRoZSBzYW1lXG4gICAgc2lnbiBhcyAiMWUxMDAiLCB0aGUgY29tcHV0ZWQgcmVzdWx0IGlzICItMWUtMTAwICsgMWUxMDAiLCB3aGljaFxuICAgIGlzIG51bWVyaWNhbGx5IGV4YWN0bHkgZXF1YWwgdG8gIjFlMTAwIi4gIFRoZSBmdW5jdGlvblxuICAgICJtYXRoLmZtb2QoKSIgcmV0dXJucyBhIHJlc3VsdCB3aG9zZSBzaWduIG1hdGNoZXMgdGhlIHNpZ24gb2YgdGhlXG4gICAgZmlyc3QgYXJndW1lbnQgaW5zdGVhZCwgYW5kIHNvIHJldHVybnMgIi0xZS0xMDAiIGluIHRoaXMgY2FzZS5cbiAgICBXaGljaCBhcHByb2FjaCBpcyBtb3JlIGFwcHJvcHJpYXRlIGRlcGVuZHMgb24gdGhlIGFwcGxpY2F0aW9uLlxuXG5bMl0gSWYgeCBpcyB2ZXJ5IGNsb3NlIHRvIGFuIGV4YWN0IGludGVnZXIgbXVsdGlwbGUgb2YgeSwgaXRcJ3NcbiAgICBwb3NzaWJsZSBmb3IgIngvL3kiIHRvIGJlIG9uZSBsYXJnZXIgdGhhbiAiKHgteCV5KS8veSIgZHVlIHRvXG4gICAgcm91bmRpbmcuICBJbiBzdWNoIGNhc2VzLCBQeXRob24gcmV0dXJucyB0aGUgbGF0dGVyIHJlc3VsdCwgaW5cbiAgICBvcmRlciB0byBwcmVzZXJ2ZSB0aGF0ICJkaXZtb2QoeCx5KVswXSAqIHkgKyB4ICUgeSIgYmUgdmVyeSBjbG9zZVxuICAgIHRvICJ4Ii5cblxuWzNdIFRoZSBVbmljb2RlIHN0YW5kYXJkIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiAqY29kZSBwb2ludHMqIChlLmcuXG4gICAgVSswMDQxKSBhbmQgKmFic3RyYWN0IGNoYXJhY3RlcnMqIChlLmcuICJMQVRJTiBDQVBJVEFMIExFVFRFUiBBIikuXG4gICAgV2hpbGUgbW9zdCBhYnN0cmFjdCBjaGFyYWN0ZXJzIGluIFVuaWNvZGUgYXJlIG9ubHkgcmVwcmVzZW50ZWRcbiAgICB1c2luZyBvbmUgY29kZSBwb2ludCwgdGhlcmUgaXMgYSBudW1iZXIgb2YgYWJzdHJhY3QgY2hhcmFjdGVyc1xuICAgIHRoYXQgY2FuIGluIGFkZGl0aW9uIGJlIHJlcHJlc2VudGVkIHVzaW5nIGEgc2VxdWVuY2Ugb2YgbW9yZSB0aGFuXG4gICAgb25lIGNvZGUgcG9pbnQuICBGb3IgZXhhbXBsZSwgdGhlIGFic3RyYWN0IGNoYXJhY3RlciAiTEFUSU5cbiAgICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSIgY2FuIGJlIHJlcHJlc2VudGVkIGFzIGEgc2luZ2xlXG4gICAgKnByZWNvbXBvc2VkIGNoYXJhY3RlciogYXQgY29kZSBwb3NpdGlvbiBVKzAwQzcsIG9yIGFzIGEgc2VxdWVuY2VcbiAgICBvZiBhICpiYXNlIGNoYXJhY3RlciogYXQgY29kZSBwb3NpdGlvbiBVKzAwNDMgKExBVElOIENBUElUQUxcbiAgICBMRVRURVIgQyksIGZvbGxvd2VkIGJ5IGEgKmNvbWJpbmluZyBjaGFyYWN0ZXIqIGF0IGNvZGUgcG9zaXRpb25cbiAgICBVKzAzMjcgKENPTUJJTklORyBDRURJTExBKS5cblxuICAgIFRoZSBjb21wYXJpc29uIG9wZXJhdG9ycyBvbiBzdHJpbmdzIGNvbXBhcmUgYXQgdGhlIGxldmVsIG9mXG4gICAgVW5pY29kZSBjb2RlIHBvaW50cy4gVGhpcyBtYXkgYmUgY291bnRlci1pbnR1aXRpdmUgdG8gaHVtYW5zLiAgRm9yXG4gICAgZXhhbXBsZSwgIiJcXHUwMEM3IiA9PSAiXFx1MDA0M1xcdTAzMjciIiBpcyAiRmFsc2UiLCBldmVuIHRob3VnaCBib3RoXG4gICAgc3RyaW5ncyByZXByZXNlbnQgdGhlIHNhbWUgYWJzdHJhY3QgY2hhcmFjdGVyICJMQVRJTiBDQVBJVEFMXG4gICAgTEVUVEVSIEMgV0lUSCBDRURJTExBIi5cblxuICAgIFRvIGNvbXBhcmUgc3RyaW5ncyBhdCB0aGUgbGV2ZWwgb2YgYWJzdHJhY3QgY2hhcmFjdGVycyAodGhhdCBpcyxcbiAgICBpbiBhIHdheSBpbnR1aXRpdmUgdG8gaHVtYW5zKSwgdXNlICJ1bmljb2RlZGF0YS5ub3JtYWxpemUoKSIuXG5cbls0XSBEdWUgdG8gYXV0b21hdGljIGdhcmJhZ2UtY29sbGVjdGlvbiwgZnJlZSBsaXN0cywgYW5kIHRoZVxuICAgIGR5bmFtaWMgbmF0dXJlIG9mIGRlc2NyaXB0b3JzLCB5b3UgbWF5IG5vdGljZSBzZWVtaW5nbHkgdW51c3VhbFxuICAgIGJlaGF2aW91ciBpbiBjZXJ0YWluIHVzZXMgb2YgdGhlICJpcyIgb3BlcmF0b3IsIGxpa2UgdGhvc2VcbiAgICBpbnZvbHZpbmcgY29tcGFyaXNvbnMgYmV0d2VlbiBpbnN0YW5jZSBtZXRob2RzLCBvciBjb25zdGFudHMuXG4gICAgQ2hlY2sgdGhlaXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuXG5bNV0gVGhlICIlIiBvcGVyYXRvciBpcyBhbHNvIHVzZWQgZm9yIHN0cmluZyBmb3JtYXR0aW5nOyB0aGUgc2FtZVxuICAgIHByZWNlZGVuY2UgYXBwbGllcy5cblxuWzZdIFRoZSBwb3dlciBvcGVyYXRvciAiKioiIGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIGFuIGFyaXRobWV0aWNcbiAgICBvciBiaXR3aXNlIHVuYXJ5IG9wZXJhdG9yIG9uIGl0cyByaWdodCwgdGhhdCBpcywgIjIqKi0xIiBpcyAiMC41Ii5cbicsCiAgJ3Bhc3MnOiB1J1xuVGhlICJwYXNzIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHBhc3Nfc3RtdCA6Oj0gInBhc3MiXG5cbiJwYXNzIiBpcyBhIG51bGwgb3BlcmF0aW9uIC0tLSB3aGVuIGl0IGlzIGV4ZWN1dGVkLCBub3RoaW5nIGhhcHBlbnMuXG5JdCBpcyB1c2VmdWwgYXMgYSBwbGFjZWhvbGRlciB3aGVuIGEgc3RhdGVtZW50IGlzIHJlcXVpcmVkXG5zeW50YWN0aWNhbGx5LCBidXQgbm8gY29kZSBuZWVkcyB0byBiZSBleGVjdXRlZCwgZm9yIGV4YW1wbGU6XG5cbiAgIGRlZiBmKGFyZyk6IHBhc3MgICAgIyBhIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3RoaW5nICh5ZXQpXG5cbiAgIGNsYXNzIEM6IHBhc3MgICAgICAgIyBhIGNsYXNzIHdpdGggbm8gbWV0aG9kcyAoeWV0KVxuJywKLSAncG93ZXInOiB1J1xuVGhlIHBvd2VyIG9wZXJhdG9yXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIHBvd2VyIG9wZXJhdG9yIGJpbmRzIG1vcmUgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHNcbmxlZnQ7IGl0IGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHMgcmlnaHQuICBUaGVcbnN5bnRheCBpczpcblxuICAgcG93ZXIgOjo9IHByaW1hcnkgWyIqKiIgdV9leHByXVxuXG5UaHVzLCBpbiBhbiB1bnBhcmVudGhlc2l6ZWQgc2VxdWVuY2Ugb2YgcG93ZXIgYW5kIHVuYXJ5IG9wZXJhdG9ycywgdGhlXG5vcGVyYXRvcnMgYXJlIGV2YWx1YXRlZCBmcm9tIHJpZ2h0IHRvIGxlZnQgKHRoaXMgZG9lcyBub3QgY29uc3RyYWluXG50aGUgZXZhbHVhdGlvbiBvcmRlciBmb3IgdGhlIG9wZXJhbmRzKTogIi0xKioyIiByZXN1bHRzIGluICItMSIuXG5cblRoZSBwb3dlciBvcGVyYXRvciBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZSBidWlsdC1pbiAicG93KCkiXG5mdW5jdGlvbiwgd2hlbiBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiBpdCB5aWVsZHMgaXRzIGxlZnQgYXJndW1lbnRcbnJhaXNlZCB0byB0aGUgcG93ZXIgb2YgaXRzIHJpZ2h0IGFyZ3VtZW50LiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZVxuZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIGFuZCB0aGUgcmVzdWx0IGlzIG9mIHRoYXQgdHlwZS5cblxuRm9yIGludCBvcGVyYW5kcywgdGhlIHJlc3VsdCBoYXMgdGhlIHNhbWUgdHlwZSBhcyB0aGUgb3BlcmFuZHMgdW5sZXNzXG50aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG5lZ2F0aXZlOyBpbiB0aGF0IGNhc2UsIGFsbCBhcmd1bWVudHMgYXJlXG5jb252ZXJ0ZWQgdG8gZmxvYXQgYW5kIGEgZmxvYXQgcmVzdWx0IGlzIGRlbGl2ZXJlZC4gRm9yIGV4YW1wbGUsXG4iMTAqKjIiIHJldHVybnMgIjEwMCIsIGJ1dCAiMTAqKi0yIiByZXR1cm5zICIwLjAxIi5cblxuUmFpc2luZyAiMC4wIiB0byBhIG5lZ2F0aXZlIHBvd2VyIHJlc3VsdHMgaW4gYSAiWmVyb0RpdmlzaW9uRXJyb3IiLlxuUmFpc2luZyBhIG5lZ2F0aXZlIG51bWJlciB0byBhIGZyYWN0aW9uYWwgcG93ZXIgcmVzdWx0cyBpbiBhICJjb21wbGV4IlxubnVtYmVyLiAoSW4gZWFybGllciB2ZXJzaW9ucyBpdCByYWlzZWQgYSAiVmFsdWVFcnJvciIuKVxuJywKKyAncG93ZXInOiB1J1xuVGhlIHBvd2VyIG9wZXJhdG9yXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIHBvd2VyIG9wZXJhdG9yIGJpbmRzIG1vcmUgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHNcbmxlZnQ7IGl0IGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHMgcmlnaHQuICBUaGVcbnN5bnRheCBpczpcblxuICAgcG93ZXIgOjo9IGF3YWl0IFsiKioiIHVfZXhwcl1cblxuVGh1cywgaW4gYW4gdW5wYXJlbnRoZXNpemVkIHNlcXVlbmNlIG9mIHBvd2VyIGFuZCB1bmFyeSBvcGVyYXRvcnMsIHRoZVxub3BlcmF0b3JzIGFyZSBldmFsdWF0ZWQgZnJvbSByaWdodCB0byBsZWZ0ICh0aGlzIGRvZXMgbm90IGNvbnN0cmFpblxudGhlIGV2YWx1YXRpb24gb3JkZXIgZm9yIHRoZSBvcGVyYW5kcyk6ICItMSoqMiIgcmVzdWx0cyBpbiAiLTEiLlxuXG5UaGUgcG93ZXIgb3BlcmF0b3IgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUgYnVpbHQtaW4gInBvdygpIlxuZnVuY3Rpb24sIHdoZW4gY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogaXQgeWllbGRzIGl0cyBsZWZ0IGFyZ3VtZW50XG5yYWlzZWQgdG8gdGhlIHBvd2VyIG9mIGl0cyByaWdodCBhcmd1bWVudC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmVcbmZpcnN0IGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLCBhbmQgdGhlIHJlc3VsdCBpcyBvZiB0aGF0IHR5cGUuXG5cbkZvciBpbnQgb3BlcmFuZHMsIHRoZSByZXN1bHQgaGFzIHRoZSBzYW1lIHR5cGUgYXMgdGhlIG9wZXJhbmRzIHVubGVzc1xudGhlIHNlY29uZCBhcmd1bWVudCBpcyBuZWdhdGl2ZTsgaW4gdGhhdCBjYXNlLCBhbGwgYXJndW1lbnRzIGFyZVxuY29udmVydGVkIHRvIGZsb2F0IGFuZCBhIGZsb2F0IHJlc3VsdCBpcyBkZWxpdmVyZWQuIEZvciBleGFtcGxlLFxuIjEwKioyIiByZXR1cm5zICIxMDAiLCBidXQgIjEwKiotMiIgcmV0dXJucyAiMC4wMSIuXG5cblJhaXNpbmcgIjAuMCIgdG8gYSBuZWdhdGl2ZSBwb3dlciByZXN1bHRzIGluIGEgIlplcm9EaXZpc2lvbkVycm9yIi5cblJhaXNpbmcgYSBuZWdhdGl2ZSBudW1iZXIgdG8gYSBmcmFjdGlvbmFsIHBvd2VyIHJlc3VsdHMgaW4gYSAiY29tcGxleCJcbm51bWJlci4gKEluIGVhcmxpZXIgdmVyc2lvbnMgaXQgcmFpc2VkIGEgIlZhbHVlRXJyb3IiLilcbicsCiAgJ3JhaXNlJzogdSdcblRoZSAicmFpc2UiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHJhaXNlX3N0bXQgOjo9ICJyYWlzZSIgW2V4cHJlc3Npb24gWyJmcm9tIiBleHByZXNzaW9uXV1cblxuSWYgbm8gZXhwcmVzc2lvbnMgYXJlIHByZXNlbnQsICJyYWlzZSIgcmUtcmFpc2VzIHRoZSBsYXN0IGV4Y2VwdGlvblxudGhhdCB3YXMgYWN0aXZlIGluIHRoZSBjdXJyZW50IHNjb3BlLiAgSWYgbm8gZXhjZXB0aW9uIGlzIGFjdGl2ZSBpblxudGhlIGN1cnJlbnQgc2NvcGUsIGEgIlJ1bnRpbWVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCBpbmRpY2F0aW5nXG50aGF0IHRoaXMgaXMgYW4gZXJyb3IuXG5cbk90aGVyd2lzZSwgInJhaXNlIiBldmFsdWF0ZXMgdGhlIGZpcnN0IGV4cHJlc3Npb24gYXMgdGhlIGV4Y2VwdGlvblxub2JqZWN0LiAgSXQgbXVzdCBiZSBlaXRoZXIgYSBzdWJjbGFzcyBvciBhbiBpbnN0YW5jZSBvZlxuIkJhc2VFeGNlcHRpb24iLiBJZiBpdCBpcyBhIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIHdpbGwgYmVcbm9idGFpbmVkIHdoZW4gbmVlZGVkIGJ5IGluc3RhbnRpYXRpbmcgdGhlIGNsYXNzIHdpdGggbm8gYXJndW1lbnRzLlxuXG5UaGUgKnR5cGUqIG9mIHRoZSBleGNlcHRpb24gaXMgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZVwncyBjbGFzcywgdGhlXG4qdmFsdWUqIGlzIHRoZSBpbnN0YW5jZSBpdHNlbGYuXG5cbkEgdHJhY2ViYWNrIG9iamVjdCBpcyBub3JtYWxseSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBhbiBleGNlcHRpb25cbmlzIHJhaXNlZCBhbmQgYXR0YWNoZWQgdG8gaXQgYXMgdGhlICJfX3RyYWNlYmFja19fIiBhdHRyaWJ1dGUsIHdoaWNoXG5pcyB3cml0YWJsZS4gWW91IGNhbiBjcmVhdGUgYW4gZXhjZXB0aW9uIGFuZCBzZXQgeW91ciBvd24gdHJhY2ViYWNrIGluXG5vbmUgc3RlcCB1c2luZyB0aGUgIndpdGhfdHJhY2ViYWNrKCkiIGV4Y2VwdGlvbiBtZXRob2QgKHdoaWNoIHJldHVybnNcbnRoZSBzYW1lIGV4Y2VwdGlvbiBpbnN0YW5jZSwgd2l0aCBpdHMgdHJhY2ViYWNrIHNldCB0byBpdHMgYXJndW1lbnQpLFxubGlrZSBzbzpcblxuICAgcmFpc2UgRXhjZXB0aW9uKCJmb28gb2NjdXJyZWQiKS53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2tvYmopXG5cblRoZSAiZnJvbSIgY2xhdXNlIGlzIHVzZWQgZm9yIGV4Y2VwdGlvbiBjaGFpbmluZzogaWYgZ2l2ZW4sIHRoZSBzZWNvbmRcbipleHByZXNzaW9uKiBtdXN0IGJlIGFub3RoZXIgZXhjZXB0aW9uIGNsYXNzIG9yIGluc3RhbmNlLCB3aGljaCB3aWxsXG50aGVuIGJlIGF0dGFjaGVkIHRvIHRoZSByYWlzZWQgZXhjZXB0aW9uIGFzIHRoZSAiX19jYXVzZV9fIiBhdHRyaWJ1dGVcbih3aGljaCBpcyB3cml0YWJsZSkuICBJZiB0aGUgcmFpc2VkIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCwgYm90aFxuZXhjZXB0aW9ucyB3aWxsIGJlIHByaW50ZWQ6XG5cbiAgID4+PiB0cnk6XG4gICAuLi4gICAgIHByaW50KDEgLyAwKVxuICAgLi4uIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOlxuICAgLi4uICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlNvbWV0aGluZyBiYWQgaGFwcGVuZWQiKSBmcm9tIGV4Y1xuICAgLi4uXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDIsIGluIDxtb2R1bGU+XG4gICBaZXJvRGl2aXNpb25FcnJvcjogaW50IGRpdmlzaW9uIG9yIG1vZHVsbyBieSB6ZXJvXG5cbiAgIFRoZSBhYm92ZSBleGNlcHRpb24gd2FzIHRoZSBkaXJlY3QgY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBleGNlcHRpb246XG5cbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgNCwgaW4gPG1vZHVsZT5cbiAgIFJ1bnRpbWVFcnJvcjogU29tZXRoaW5nIGJhZCBoYXBwZW5lZFxuXG5BIHNpbWlsYXIgbWVjaGFuaXNtIHdvcmtzIGltcGxpY2l0bHkgaWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBpbnNpZGVcbmFuIGV4Y2VwdGlvbiBoYW5kbGVyIG9yIGEgImZpbmFsbHkiIGNsYXVzZTogdGhlIHByZXZpb3VzIGV4Y2VwdGlvbiBpc1xudGhlbiBhdHRhY2hlZCBhcyB0aGUgbmV3IGV4Y2VwdGlvblwncyAiX19jb250ZXh0X18iIGF0dHJpYnV0ZTpcblxuICAgPj4+IHRyeTpcbiAgIC4uLiAgICAgcHJpbnQoMSAvIDApXG4gICAuLi4gZXhjZXB0OlxuICAgLi4uICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlNvbWV0aGluZyBiYWQgaGFwcGVuZWQiKVxuICAgLi4uXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDIsIGluIDxtb2R1bGU+XG4gICBaZXJvRGl2aXNpb25FcnJvcjogaW50IGRpdmlzaW9uIG9yIG1vZHVsbyBieSB6ZXJvXG5cbiAgIER1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDpcblxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA0LCBpbiA8bW9kdWxlPlxuICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gYWJvdXQgaGFuZGxpbmcgZXhjZXB0aW9ucyBpcyBpbiBzZWN0aW9uXG4qVGhlIHRyeSBzdGF0ZW1lbnQqLlxuJywKICAncmV0dXJuJzogdSdcblRoZSAicmV0dXJuIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuICAgcmV0dXJuX3N0bXQgOjo9ICJyZXR1cm4iIFtleHByZXNzaW9uX2xpc3RdXG5cbiJyZXR1cm4iIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbixcbm5vdCB3aXRoaW4gYSBuZXN0ZWQgY2xhc3MgZGVmaW5pdGlvbi5cblxuSWYgYW4gZXhwcmVzc2lvbiBsaXN0IGlzIHByZXNlbnQsIGl0IGlzIGV2YWx1YXRlZCwgZWxzZSAiTm9uZSIgaXNcbnN1YnN0aXR1dGVkLlxuXG4icmV0dXJuIiBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY2FsbCB3aXRoIHRoZSBleHByZXNzaW9uIGxpc3QgKG9yXG4iTm9uZSIpIGFzIHJldHVybiB2YWx1ZS5cblxuV2hlbiAicmV0dXJuIiBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBhICJmaW5hbGx5IlxuY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseSBsZWF2aW5nIHRoZVxuZnVuY3Rpb24uXG5cbkluIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLCB0aGUgInJldHVybiIgc3RhdGVtZW50IGluZGljYXRlcyB0aGF0IHRoZVxuZ2VuZXJhdG9yIGlzIGRvbmUgYW5kIHdpbGwgY2F1c2UgIlN0b3BJdGVyYXRpb24iIHRvIGJlIHJhaXNlZC4gVGhlXG5yZXR1cm5lZCB2YWx1ZSAoaWYgYW55KSBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIGNvbnN0cnVjdFxuIlN0b3BJdGVyYXRpb24iIGFuZCBiZWNvbWVzIHRoZSAiU3RvcEl0ZXJhdGlvbi52YWx1ZSIgYXR0cmlidXRlLlxuJywKICAnc2VxdWVuY2UtdHlwZXMnOiB1J1xuRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciBvYmplY3RzLlxuQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSBvciBtYXBwaW5nc1xuKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyB3ZWxsLiAgVGhlXG5maXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgdG9cbmVtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCB0aGVcbmFsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCAiMCA8PSBrIDwgTiIgd2hlcmVcbipOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2ggZGVmaW5lIGFcbnJhbmdlIG9mIGl0ZW1zLiAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzIHByb3ZpZGUgdGhlXG5tZXRob2RzICJrZXlzKCkiLCAidmFsdWVzKCkiLCAiaXRlbXMoKSIsICJnZXQoKSIsICJjbGVhcigpIixcbiJzZXRkZWZhdWx0KCkiLCAicG9wKCkiLCAicG9waXRlbSgpIiwgImNvcHkoKSIsIGFuZCAidXBkYXRlKCkiXG5iZWhhdmluZyBzaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob25cJ3Mgc3RhbmRhcmQgZGljdGlvbmFyeSBvYmplY3RzLlxuVGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlIHByb3ZpZGVzIGEgIk11dGFibGVNYXBwaW5nIiBhYnN0cmFjdCBiYXNlXG5jbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAiX19nZXRpdGVtX18oKSIsXG4iX19zZXRpdGVtX18oKSIsICJfX2RlbGl0ZW1fXygpIiwgYW5kICJrZXlzKCkiLiBNdXRhYmxlIHNlcXVlbmNlc1xuc2hvdWxkIHByb3ZpZGUgbWV0aG9kcyAiYXBwZW5kKCkiLCAiY291bnQoKSIsICJpbmRleCgpIiwgImV4dGVuZCgpIixcbiJpbnNlcnQoKSIsICJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAic29ydCgpIiwgbGlrZSBQeXRob25cbnN0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZCBpbXBsZW1lbnRcbmFkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAobWVhbmluZ1xucmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICJfX3JhZGRfXygpIixcbiJfX2lhZGRfXygpIiwgIl9fbXVsX18oKSIsICJfX3JtdWxfXygpIiBhbmQgIl9faW11bF9fKCkiIGRlc2NyaWJlZFxuYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0IGlzXG5yZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG4iX19jb250YWluc19fKCkiIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSAiaW4iIG9wZXJhdG9yO1xuZm9yIG1hcHBpbmdzLCAiaW4iIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yIHNlcXVlbmNlcywgaXRcbnNob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlciByZWNvbW1lbmRlZCB0aGF0IGJvdGhcbm1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZSAiX19pdGVyX18oKSIgbWV0aG9kIHRvIGFsbG93XG5lZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCAiX19pdGVyX18oKSJcbnNob3VsZCBiZSB0aGUgc2FtZSBhcyAia2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkIGl0ZXJhdGVcbnRocm91Z2ggdGhlIHZhbHVlcy5cblxub2JqZWN0Ll9fbGVuX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gIFNob3VsZCByZXR1cm5cbiAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciAiPj0iIDAuICBBbHNvLCBhbiBvYmplY3QgdGhhdFxuICAgZG9lc25cJ3QgZGVmaW5lIGEgIl9fYm9vbF9fKCkiIG1ldGhvZCBhbmQgd2hvc2UgIl9fbGVuX18oKSIgbWV0aG9kXG4gICByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gY29udGV4dC5cblxub2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5sZW5ndGhfaGludCgpIi4gU2hvdWxkIHJldHVybiBhblxuICAgZXN0aW1hdGVkIGxlbmd0aCBmb3IgdGhlIG9iamVjdCAod2hpY2ggbWF5IGJlIGdyZWF0ZXIgb3IgbGVzcyB0aGFuXG4gICB0aGUgYWN0dWFsIGxlbmd0aCkuIFRoZSBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyICI+PSIgMC4gVGhpc1xuICAgbWV0aG9kIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24gYW5kIGlzIG5ldmVyIHJlcXVpcmVkIGZvclxuICAgY29ycmVjdG5lc3MuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cblxuTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSBtZXRob2RzLlxuICBBIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoICJOb25lIi5cblxub2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mICJzZWxmW2tleV0iLiBGb3Igc2VxdWVuY2UgdHlwZXMsXG4gICB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuICBOb3RlIHRoYXRcbiAgIHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZSBjbGFzcyB3aXNoZXNcbiAgIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC4gSWZcbiAgICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSwgIlR5cGVFcnJvciIgbWF5IGJlIHJhaXNlZDsgaWYgb2ZcbiAgIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAoYWZ0ZXIgYW55XG4gICBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIHZhbHVlcyksICJJbmRleEVycm9yIiBzaG91bGQgYmVcbiAgIHJhaXNlZC4gRm9yIG1hcHBpbmcgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiB0aGVcbiAgIGNvbnRhaW5lciksICJLZXlFcnJvciIgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogImZvciIgbG9vcHMgZXhwZWN0IHRoYXQgYW4gIkluZGV4RXJyb3IiIHdpbGwgYmUgcmFpc2VkIGZvclxuICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mIHRoZVxuICAgICBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fbWlzc2luZ19fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIGJ5ICJkaWN0Ii4iX19nZXRpdGVtX18oKSIgdG8gaW1wbGVtZW50ICJzZWxmW2tleV0iIGZvciBkaWN0XG4gICBzdWJjbGFzc2VzIHdoZW4ga2V5IGlzIG5vdCBpbiB0aGUgZGljdGlvbmFyeS5cblxub2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgaWYgbmV3IGtleXNcbiAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgcmVwbGFjZWQuICBUaGVcbiAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yXG4gICB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50c1xuICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZVxuICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuXG5vYmplY3QuX19pdGVyX18oc2VsZilcblxuICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yIGEgY29udGFpbmVyLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCBjYW4gaXRlcmF0ZVxuICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgaXQgc2hvdWxkXG4gICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lci5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgInJldmVyc2VkKCkiIGJ1aWx0LWluIHRvIGltcGxlbWVudFxuICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0XG4gICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluIHJldmVyc2Ugb3JkZXIuXG5cbiAgIElmIHRoZSAiX19yZXZlcnNlZF9fKCkiIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZSAicmV2ZXJzZWQoKSJcbiAgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZSBwcm90b2NvbCAoIl9fbGVuX18oKSJcbiAgIGFuZCAiX19nZXRpdGVtX18oKSIpLiAgT2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhlIHNlcXVlbmNlIHByb3RvY29sXG4gICBzaG91bGQgb25seSBwcm92aWRlICJfX3JldmVyc2VkX18oKSIgaWYgdGhleSBjYW4gcHJvdmlkZSBhblxuICAgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQgYnlcbiAgICJyZXZlcnNlZCgpIi5cblxuVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKCJpbiIgYW5kICJub3QgaW4iKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiwgdGhlIG1lbWJlcnNoaXAgdGVzdFxuICAgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSAiX19pdGVyX18oKSIsIHRoZW4gdGhlIG9sZCBzZXF1ZW5jZVxuICAgaXRlcmF0aW9uIHByb3RvY29sIHZpYSAiX19nZXRpdGVtX18oKSIsIHNlZSAqdGhpcyBzZWN0aW9uIGluIHRoZVxuICAgbGFuZ3VhZ2UgcmVmZXJlbmNlKi5cbicsCiAgJ3NoaWZ0aW5nJzogdSdcblNoaWZ0aW5nIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKipcblxuVGhlIHNoaWZ0aW5nIG9wZXJhdGlvbnMgaGF2ZSBsb3dlciBwcmlvcml0eSB0aGFuIHRoZSBhcml0aG1ldGljXG5vcGVyYXRpb25zOlxuXG4gICBzaGlmdF9leHByIDo6PSBhX2V4cHIgfCBzaGlmdF9leHByICggIjw8IiB8ICI+PiIgKSBhX2V4cHJcblxuVGhlc2Ugb3BlcmF0b3JzIGFjY2VwdCBpbnRlZ2VycyBhcyBhcmd1bWVudHMuICBUaGV5IHNoaWZ0IHRoZSBmaXJzdFxuYXJndW1lbnQgdG8gdGhlIGxlZnQgb3IgcmlnaHQgYnkgdGhlIG51bWJlciBvZiBiaXRzIGdpdmVuIGJ5IHRoZVxuc2Vjb25kIGFyZ3VtZW50LlxuXG5BIHJpZ2h0IHNoaWZ0IGJ5ICpuKiBiaXRzIGlzIGRlZmluZWQgYXMgZmxvb3IgZGl2aXNpb24gYnkgInBvdygyLG4pIi5cbkEgbGVmdCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIG11bHRpcGxpY2F0aW9uIHdpdGggInBvdygyLG4pIi5cblxuTm90ZTogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgaXNcbiAgcmVxdWlyZWQgdG8gYmUgYXQgbW9zdCAic3lzLm1heHNpemUiLiAgSWYgdGhlIHJpZ2h0LWhhbmQgb3BlcmFuZCBpc1xuICBsYXJnZXIgdGhhbiAic3lzLm1heHNpemUiIGFuICJPdmVyZmxvd0Vycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuJywKICAnc2xpY2luZ3MnOiB1J1xuU2xpY2luZ3NcbioqKioqKioqXG5cbkEgc2xpY2luZyBzZWxlY3RzIGEgcmFuZ2Ugb2YgaXRlbXMgaW4gYSBzZXF1ZW5jZSBvYmplY3QgKGUuZy4sIGFcbnN0cmluZywgdHVwbGUgb3IgbGlzdCkuICBTbGljaW5ncyBtYXkgYmUgdXNlZCBhcyBleHByZXNzaW9ucyBvciBhc1xudGFyZ2V0cyBpbiBhc3NpZ25tZW50IG9yICJkZWwiIHN0YXRlbWVudHMuICBUaGUgc3ludGF4IGZvciBhIHNsaWNpbmc6XG5cbiAgIHNsaWNpbmcgICAgICA6Oj0gcHJpbWFyeSAiWyIgc2xpY2VfbGlzdCAiXSJcbiAgIHNsaWNlX2xpc3QgICA6Oj0gc2xpY2VfaXRlbSAoIiwiIHNsaWNlX2l0ZW0pKiBbIiwiXVxuICAgc2xpY2VfaXRlbSAgIDo6PSBleHByZXNzaW9uIHwgcHJvcGVyX3NsaWNlXG4gICBwcm9wZXJfc2xpY2UgOjo9IFtsb3dlcl9ib3VuZF0gIjoiIFt1cHBlcl9ib3VuZF0gWyAiOiIgW3N0cmlkZV0gXVxuICAgbG93ZXJfYm91bmQgIDo6PSBleHByZXNzaW9uXG4gICB1cHBlcl9ib3VuZCAgOjo9IGV4cHJlc3Npb25cbiAgIHN0cmlkZSAgICAgICA6Oj0gZXhwcmVzc2lvblxuXG5UaGVyZSBpcyBhbWJpZ3VpdHkgaW4gdGhlIGZvcm1hbCBzeW50YXggaGVyZTogYW55dGhpbmcgdGhhdCBsb29rcyBsaWtlXG5hbiBleHByZXNzaW9uIGxpc3QgYWxzbyBsb29rcyBsaWtlIGEgc2xpY2UgbGlzdCwgc28gYW55IHN1YnNjcmlwdGlvblxuY2FuIGJlIGludGVycHJldGVkIGFzIGEgc2xpY2luZy4gIFJhdGhlciB0aGFuIGZ1cnRoZXIgY29tcGxpY2F0aW5nIHRoZVxuc3ludGF4LCB0aGlzIGlzIGRpc2FtYmlndWF0ZWQgYnkgZGVmaW5pbmcgdGhhdCBpbiB0aGlzIGNhc2UgdGhlXG5pbnRlcnByZXRhdGlvbiBhcyBhIHN1YnNjcmlwdGlvbiB0YWtlcyBwcmlvcml0eSBvdmVyIHRoZVxuaW50ZXJwcmV0YXRpb24gYXMgYSBzbGljaW5nICh0aGlzIGlzIHRoZSBjYXNlIGlmIHRoZSBzbGljZSBsaXN0XG5jb250YWlucyBubyBwcm9wZXIgc2xpY2UpLlxuXG5UaGUgc2VtYW50aWNzIGZvciBhIHNsaWNpbmcgYXJlIGFzIGZvbGxvd3MuICBUaGUgcHJpbWFyeSBpcyBpbmRleGVkXG4odXNpbmcgdGhlIHNhbWUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZCBhcyBub3JtYWwgc3Vic2NyaXB0aW9uKSB3aXRoIGFcbmtleSB0aGF0IGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIHNsaWNlIGxpc3QsIGFzIGZvbGxvd3MuICBJZiB0aGUgc2xpY2Vcbmxpc3QgY29udGFpbnMgYXQgbGVhc3Qgb25lIGNvbW1hLCB0aGUga2V5IGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGVcbmNvbnZlcnNpb24gb2YgdGhlIHNsaWNlIGl0ZW1zOyBvdGhlcndpc2UsIHRoZSBjb252ZXJzaW9uIG9mIHRoZSBsb25lXG5zbGljZSBpdGVtIGlzIHRoZSBrZXkuICBUaGUgY29udmVyc2lvbiBvZiBhIHNsaWNlIGl0ZW0gdGhhdCBpcyBhblxuZXhwcmVzc2lvbiBpcyB0aGF0IGV4cHJlc3Npb24uICBUaGUgY29udmVyc2lvbiBvZiBhIHByb3BlciBzbGljZSBpcyBhXG5zbGljZSBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKSB3aG9zZVxuInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCIgYXR0cmlidXRlcyBhcmUgdGhlIHZhbHVlcyBvZiB0aGVcbmV4cHJlc3Npb25zIGdpdmVuIGFzIGxvd2VyIGJvdW5kLCB1cHBlciBib3VuZCBhbmQgc3RyaWRlLFxucmVzcGVjdGl2ZWx5LCBzdWJzdGl0dXRpbmcgIk5vbmUiIGZvciBtaXNzaW5nIGV4cHJlc3Npb25zLlxuJywKICAnc3BlY2lhbGF0dHJzJzogdSdcblNwZWNpYWwgQXR0cmlidXRlc1xuKioqKioqKioqKioqKioqKioqXG5cblRoZSBpbXBsZW1lbnRhdGlvbiBhZGRzIGEgZmV3IHNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXMgdG8gc2V2ZXJhbFxub2JqZWN0IHR5cGVzLCB3aGVyZSB0aGV5IGFyZSByZWxldmFudC4gIFNvbWUgb2YgdGhlc2UgYXJlIG5vdCByZXBvcnRlZFxuYnkgdGhlICJkaXIoKSIgYnVpbHQtaW4gZnVuY3Rpb24uXG5cbm9iamVjdC5fX2RpY3RfX1xuXG4gICBBIGRpY3Rpb25hcnkgb3Igb3RoZXIgbWFwcGluZyBvYmplY3QgdXNlZCB0byBzdG9yZSBhbiBvYmplY3RcJ3NcbiAgICh3cml0YWJsZSkgYXR0cmlidXRlcy5cblxuaW5zdGFuY2UuX19jbGFzc19fXG5cbiAgIFRoZSBjbGFzcyB0byB3aGljaCBhIGNsYXNzIGluc3RhbmNlIGJlbG9uZ3MuXG5cbmNsYXNzLl9fYmFzZXNfX1xuXG4gICBUaGUgdHVwbGUgb2YgYmFzZSBjbGFzc2VzIG9mIGEgY2xhc3Mgb2JqZWN0LlxuXG5jbGFzcy5fX25hbWVfX1xuXG4gICBUaGUgbmFtZSBvZiB0aGUgY2xhc3Mgb3IgdHlwZS5cblxuY2xhc3MuX19xdWFsbmFtZV9fXG5cbiAgIFRoZSAqcXVhbGlmaWVkIG5hbWUqIG9mIHRoZSBjbGFzcyBvciB0eXBlLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjMuXG5cbmNsYXNzLl9fbXJvX19cblxuICAgVGhpcyBhdHRyaWJ1dGUgaXMgYSB0dXBsZSBvZiBjbGFzc2VzIHRoYXQgYXJlIGNvbnNpZGVyZWQgd2hlblxuICAgbG9va2luZyBmb3IgYmFzZSBjbGFzc2VzIGR1cmluZyBtZXRob2QgcmVzb2x1dGlvbi5cblxuY2xhc3MubXJvKClcblxuICAgVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBtZXRhY2xhc3MgdG8gY3VzdG9taXplIHRoZVxuICAgbWV0aG9kIHJlc29sdXRpb24gb3JkZXIgZm9yIGl0cyBpbnN0YW5jZXMuICBJdCBpcyBjYWxsZWQgYXQgY2xhc3NcbiAgIGluc3RhbnRpYXRpb24sIGFuZCBpdHMgcmVzdWx0IGlzIHN0b3JlZCBpbiAiX19tcm9fXyIuXG5cbmNsYXNzLl9fc3ViY2xhc3Nlc19fKClcblxuICAgRWFjaCBjbGFzcyBrZWVwcyBhIGxpc3Qgb2Ygd2VhayByZWZlcmVuY2VzIHRvIGl0cyBpbW1lZGlhdGVcbiAgIHN1YmNsYXNzZXMuICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhvc2UgcmVmZXJlbmNlc1xuICAgc3RpbGwgYWxpdmUuIEV4YW1wbGU6XG5cbiAgICAgID4+PiBpbnQuX19zdWJjbGFzc2VzX18oKVxuICAgICAgWzxjbGFzcyBcJ2Jvb2xcJz5dXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGVzZSBzcGVjaWFsIG1ldGhvZHMgbWF5IGJlIGZvdW5kXG4gICAgaW4gdGhlIFB5dGhvbiBSZWZlcmVuY2UgTWFudWFsICgqQmFzaWMgY3VzdG9taXphdGlvbiopLlxuXG5bMl0gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGxpc3QgIlsxLCAyXSIgaXMgY29uc2lkZXJlZCBlcXVhbCB0b1xuICAgICJbMS4wLCAyLjBdIiwgYW5kIHNpbWlsYXJseSBmb3IgdHVwbGVzLlxuXG5bM10gVGhleSBtdXN0IGhhdmUgc2luY2UgdGhlIHBhcnNlciBjYW5cJ3QgdGVsbCB0aGUgdHlwZSBvZiB0aGVcbiAgICBvcGVyYW5kcy5cblxuWzRdIENhc2VkIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSBwcm9wZXJ0eVxuICAgIGJlaW5nIG9uZSBvZiAiTHUiIChMZXR0ZXIsIHVwcGVyY2FzZSksICJMbCIgKExldHRlciwgbG93ZXJjYXNlKSxcbiAgICBvciAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbls1XSBUbyBmb3JtYXQgb25seSBhIHR1cGxlIHlvdSBzaG91bGQgdGhlcmVmb3JlIHByb3ZpZGUgYVxuICAgIHNpbmdsZXRvbiB0dXBsZSB3aG9zZSBvbmx5IGVsZW1lbnQgaXMgdGhlIHR1cGxlIHRvIGJlIGZvcm1hdHRlZC5cbicsCi0gJ3NwZWNpYWxuYW1lcyc6IHUnXG5TcGVjaWFsIG1ldGhvZCBuYW1lc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBjbGFzcyBjYW4gaW1wbGVtZW50IGNlcnRhaW4gb3BlcmF0aW9ucyB0aGF0IGFyZSBpbnZva2VkIGJ5IHNwZWNpYWxcbnN5bnRheCAoc3VjaCBhcyBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3Igc3Vic2NyaXB0aW5nIGFuZCBzbGljaW5nKSBieVxuZGVmaW5pbmcgbWV0aG9kcyB3aXRoIHNwZWNpYWwgbmFtZXMuIFRoaXMgaXMgUHl0aG9uXCdzIGFwcHJvYWNoIHRvXG4qb3BlcmF0b3Igb3ZlcmxvYWRpbmcqLCBhbGxvd2luZyBjbGFzc2VzIHRvIGRlZmluZSB0aGVpciBvd24gYmVoYXZpb3JcbndpdGggcmVzcGVjdCB0byBsYW5ndWFnZSBvcGVyYXRvcnMuICBGb3IgaW5zdGFuY2UsIGlmIGEgY2xhc3MgZGVmaW5lc1xuYSBtZXRob2QgbmFtZWQgIl9fZ2V0aXRlbV9fKCkiLCBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MsXG50aGVuICJ4W2ldIiBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gInR5cGUoeCkuX19nZXRpdGVtX18oeCwgaSkiLlxuRXhjZXB0IHdoZXJlIG1lbnRpb25lZCwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSBhbiBvcGVyYXRpb24gcmFpc2UgYW5cbmV4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHlcbiJBdHRyaWJ1dGVFcnJvciIgb3IgIlR5cGVFcnJvciIpLlxuXG5XaGVuIGltcGxlbWVudGluZyBhIGNsYXNzIHRoYXQgZW11bGF0ZXMgYW55IGJ1aWx0LWluIHR5cGUsIGl0IGlzXG5pbXBvcnRhbnQgdGhhdCB0aGUgZW11bGF0aW9uIG9ubHkgYmUgaW1wbGVtZW50ZWQgdG8gdGhlIGRlZ3JlZSB0aGF0IGl0XG5tYWtlcyBzZW5zZSBmb3IgdGhlIG9iamVjdCBiZWluZyBtb2RlbGxlZC4gIEZvciBleGFtcGxlLCBzb21lXG5zZXF1ZW5jZXMgbWF5IHdvcmsgd2VsbCB3aXRoIHJldHJpZXZhbCBvZiBpbmRpdmlkdWFsIGVsZW1lbnRzLCBidXRcbmV4dHJhY3RpbmcgYSBzbGljZSBtYXkgbm90IG1ha2Ugc2Vuc2UuICAoT25lIGV4YW1wbGUgb2YgdGhpcyBpcyB0aGVcbiJOb2RlTGlzdCIgaW50ZXJmYWNlIGluIHRoZSBXM0NcJ3MgRG9jdW1lbnQgT2JqZWN0IE1vZGVsLilcblxuXG5CYXNpYyBjdXN0b21pemF0aW9uXG49PT09PT09PT09PT09PT09PT09XG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICAiX19uZXdfXygpIiBpcyBhXG4gICBzdGF0aWMgbWV0aG9kIChzcGVjaWFsLWNhc2VkIHNvIHlvdSBuZWVkIG5vdCBkZWNsYXJlIGl0IGFzIHN1Y2gpXG4gICB0aGF0IHRha2VzIHRoZSBjbGFzcyBvZiB3aGljaCBhbiBpbnN0YW5jZSB3YXMgcmVxdWVzdGVkIGFzIGl0c1xuICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgcGFzc2VkIHRvIHRoZVxuICAgb2JqZWN0IGNvbnN0cnVjdG9yIGV4cHJlc3Npb24gKHRoZSBjYWxsIHRvIHRoZSBjbGFzcykuICBUaGUgcmV0dXJuXG4gICB2YWx1ZSBvZiAiX19uZXdfXygpIiBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgKHVzdWFsbHkgYW5cbiAgIGluc3RhbmNlIG9mICpjbHMqKS5cblxuICAgVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBjbGFzcyBieVxuICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIHVzaW5nXG4gICAic3VwZXIoY3VycmVudGNsYXNzLCBjbHMpLl9fbmV3X18oY2xzWywgLi4uXSkiIHdpdGggYXBwcm9wcmlhdGVcbiAgIGFyZ3VtZW50cyBhbmQgdGhlbiBtb2RpZnlpbmcgdGhlIG5ld2x5LWNyZWF0ZWQgaW5zdGFuY2UgYXNcbiAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuXG4gICBJZiAiX19uZXdfXygpIiByZXR1cm5zIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgICJfX2luaXRfXyhzZWxmWywgLi4uXSkiLCB3aGVyZSAqc2VsZiogaXMgdGhlIG5ldyBpbnN0YW5jZSBhbmQgdGhlXG4gICByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB3ZXJlIHBhc3NlZCB0byAiX19uZXdfXygpIi5cblxuICAgSWYgIl9fbmV3X18oKSIgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cblxuICAgIl9fbmV3X18oKSIgaXMgaW50ZW5kZWQgbWFpbmx5IHRvIGFsbG93IHN1YmNsYXNzZXMgb2YgaW1tdXRhYmxlXG4gICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSBjcmVhdGlvbi4gIEl0XG4gICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluIG9yZGVyIHRvXG4gICBjdXN0b21pemUgY2xhc3MgY3JlYXRpb24uXG5cbm9iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcblxuICAgQ2FsbGVkIGFmdGVyIHRoZSBpbnN0YW5jZSBoYXMgYmVlbiBjcmVhdGVkIChieSAiX19uZXdfXygpIiksIGJ1dFxuICAgYmVmb3JlIGl0IGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBUaGUgYXJndW1lbnRzIGFyZSB0aG9zZVxuICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhblxuICAgIl9faW5pdF9fKCkiIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCwgaWZcbiAgIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciBpbml0aWFsaXphdGlvbiBvZiB0aGVcbiAgIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2U7IGZvciBleGFtcGxlOlxuICAgIkJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pIi5cblxuICAgQmVjYXVzZSAiX19uZXdfXygpIiBhbmQgIl9faW5pdF9fKCkiIHdvcmsgdG9nZXRoZXIgaW4gY29uc3RydWN0aW5nXG4gICBvYmplY3RzICgiX19uZXdfXygpIiB0byBjcmVhdGUgaXQsIGFuZCAiX19pbml0X18oKSIgdG8gY3VzdG9taXNlXG4gICBpdCksIG5vIG5vbi0iTm9uZSIgdmFsdWUgbWF5IGJlIHJldHVybmVkIGJ5ICJfX2luaXRfXygpIjsgZG9pbmcgc29cbiAgIHdpbGwgY2F1c2UgYSAiVHlwZUVycm9yIiB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSAiX19kZWxfXygpIiBtZXRob2QsIHRoZVxuICAgZGVyaXZlZCBjbGFzc1wncyAiX19kZWxfXygpIiBtZXRob2QsIGlmIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXRcbiAgIHRvIGVuc3VyZSBwcm9wZXIgZGVsZXRpb24gb2YgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2UuXG4gICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgKHRob3VnaCBub3QgcmVjb21tZW5kZWQhKSBmb3IgdGhlXG4gICAiX19kZWxfXygpIiBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlIGluc3RhbmNlIGJ5XG4gICBjcmVhdGluZyBhIG5ldyByZWZlcmVuY2UgdG8gaXQuICBJdCBtYXkgdGhlbiBiZSBjYWxsZWQgYXQgYSBsYXRlclxuICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90IGd1YXJhbnRlZWQgdGhhdFxuICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiAiZGVsIHgiIGRvZXNuXCd0IGRpcmVjdGx5IGNhbGwgInguX19kZWxfXygpIiAtLS0gdGhlIGZvcm1lclxuICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yICJ4IiBieSBvbmUsIGFuZCB0aGUgbGF0dGVyIGlzXG4gICAgIG9ubHkgY2FsbGVkIHdoZW4gIngiXCdzIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8uICBTb21lIGNvbW1vblxuICAgICBzaXR1YXRpb25zIHRoYXQgbWF5IHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhbiBvYmplY3QgZnJvbVxuICAgICBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiBvYmplY3RzIChlLmcuLFxuICAgICBhIGRvdWJseS1saW5rZWQgbGlzdCBvciBhIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBwYXJlbnQgYW5kXG4gICAgIGNoaWxkIHBvaW50ZXJzKTsgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgb2ZcbiAgICAgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4gICAgICJzeXMuZXhjX2luZm8oKVsyXSIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKTsgb3IgYSByZWZlcmVuY2VcbiAgICAgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW4gdW5oYW5kbGVkXG4gICAgIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmxhc3RfdHJhY2ViYWNrIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBzZWNvbmQgY2FuIGJlIHJlc29sdmVkIGJ5IGZyZWVpbmcgdGhlIHJlZmVyZW5jZSB0byB0aGVcbiAgICAgdHJhY2ViYWNrIG9iamVjdCB3aGVuIGl0IGlzIG5vIGxvbmdlciB1c2VmdWwsIGFuZCB0aGUgdGhpcmQgY2FuXG4gICAgIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgIk5vbmUiIGluICJzeXMubGFzdF90cmFjZWJhY2siLiBDaXJjdWxhclxuICAgICByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZSBkZXRlY3RlZCBhbmQgY2xlYW5lZCB1cCB3aGVuIHRoZVxuICAgICBjeWNsaWMgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgZW5hYmxlZCAoaXRcJ3Mgb24gYnkgZGVmYXVsdCkuIFJlZmVyXG4gICAgIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgImdjIiBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiAgICAgYWJvdXQgdGhpcyB0b3BpYy5cblxuICAgV2FybmluZzogRHVlIHRvIHRoZSBwcmVjYXJpb3VzIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2hcbiAgICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZ1xuICAgICB0aGVpciBleGVjdXRpb24gYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0b1xuICAgICAic3lzLnN0ZGVyciIgaW5zdGVhZC4gQWxzbywgd2hlbiAiX19kZWxfXygpIiBpcyBpbnZva2VkIGluXG4gICAgIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nIGRlbGV0ZWQgKGUuZy4sIHdoZW4gZXhlY3V0aW9uIG9mIHRoZVxuICAgICBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlciBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlICJfX2RlbF9fKCkiXG4gICAgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZ1xuICAgICB0b3JuIGRvd24gKGUuZy4gdGhlIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpc1xuICAgICByZWFzb24sICJfX2RlbF9fKCkiIG1ldGhvZHMgc2hvdWxkIGRvIHRoZSBhYnNvbHV0ZSBtaW5pbXVtIG5lZWRlZFxuICAgICB0byBtYWludGFpbiBleHRlcm5hbCBpbnZhcmlhbnRzLiAgU3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDEuNSxcbiAgICAgUHl0aG9uIGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggYSBzaW5nbGVcbiAgICAgdW5kZXJzY29yZSBhcmUgZGVsZXRlZCBmcm9tIHRoZWlyIG1vZHVsZSBiZWZvcmUgb3RoZXIgZ2xvYmFscyBhcmVcbiAgICAgZGVsZXRlZDsgaWYgbm8gb3RoZXIgcmVmZXJlbmNlcyB0byBzdWNoIGdsb2JhbHMgZXhpc3QsIHRoaXMgbWF5XG4gICAgIGhlbHAgaW4gYXNzdXJpbmcgdGhhdCBpbXBvcnRlZCBtb2R1bGVzIGFyZSBzdGlsbCBhdmFpbGFibGUgYXQgdGhlXG4gICAgIHRpbWUgd2hlbiB0aGUgIl9fZGVsX18oKSIgbWV0aG9kIGlzIGNhbGxlZC5cblxub2JqZWN0Ll9fcmVwcl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgInJlcHIoKSIgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgIm9mZmljaWFsIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSwgdGhpc1xuICAgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZCB0b1xuICAgcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgICI8Li4uc29tZSB1c2VmdWwgZGVzY3JpcHRpb24uLi4+IiBzaG91bGQgYmUgcmV0dXJuZWQuIFRoZSByZXR1cm5cbiAgIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhIGNsYXNzIGRlZmluZXMgIl9fcmVwcl9fKCkiIGJ1dFxuICAgbm90ICJfX3N0cl9fKCkiLCB0aGVuICJfX3JlcHJfXygpIiBpcyBhbHNvIHVzZWQgd2hlbiBhbiAiaW5mb3JtYWwiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MgaXMgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5ICJzdHIob2JqZWN0KSIgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImZvcm1hdCgpIiBhbmRcbiAgICJwcmludCgpIiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIG9yIG5pY2VseSBwcmludGFibGUgc3RyaW5nXG4gICByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSAqc3RyaW5nKlxuICAgb2JqZWN0LlxuXG4gICBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gIm9iamVjdC5fX3JlcHJfXygpIiBpbiB0aGF0IHRoZXJlIGlzIG5vXG4gICBleHBlY3RhdGlvbiB0aGF0ICJfX3N0cl9fKCkiIHJldHVybiBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uOiBhXG4gICBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZSByZXByZXNlbnRhdGlvbiBjYW4gYmUgdXNlZC5cblxuICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBieSB0aGUgYnVpbHQtaW4gdHlwZSAib2JqZWN0IlxuICAgY2FsbHMgIm9iamVjdC5fX3JlcHJfXygpIi5cblxub2JqZWN0Ll9fYnl0ZXNfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgImJ5dGVzKCkiIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSAiYnl0ZXMiIG9iamVjdC5cblxub2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpXG5cbiAgIENhbGxlZCBieSB0aGUgImZvcm1hdCgpIiBidWlsdC1pbiBmdW5jdGlvbiAoYW5kIGJ5IGV4dGVuc2lvbiwgdGhlXG4gICAic3RyLmZvcm1hdCgpIiBtZXRob2Qgb2YgY2xhc3MgInN0ciIpIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgYVxuICAgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgdXAgdG9cbiAgIHRoZSB0eXBlIGltcGxlbWVudGluZyAiX19mb3JtYXRfXygpIiwgaG93ZXZlciBtb3N0IGNsYXNzZXMgd2lsbFxuICAgZWl0aGVyIGRlbGVnYXRlIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3IgdXNlIGFcbiAgIHNpbWlsYXIgZm9ybWF0dGluZyBvcHRpb24gc3ludGF4LlxuXG4gICBTZWUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZVxuICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG5cbiAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjQ6IFRoZSBfX2Zvcm1hdF9fIG1ldGhvZCBvZiAib2JqZWN0IiBpdHNlbGZcbiAgIHJhaXNlcyBhICJUeXBlRXJyb3IiIGlmIHBhc3NlZCBhbnkgbm9uLWVtcHR5IHN0cmluZy5cblxub2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19lcV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19nZV9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLiBUaGVcbiAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gb3BlcmF0b3Igc3ltYm9scyBhbmQgbWV0aG9kIG5hbWVzIGlzIGFzXG4gICBmb2xsb3dzOiAieDx5IiBjYWxscyAieC5fX2x0X18oeSkiLCAieDw9eSIgY2FsbHMgInguX19sZV9fKHkpIixcbiAgICJ4PT15IiBjYWxscyAieC5fX2VxX18oeSkiLCAieCE9eSIgY2FsbHMgInguX19uZV9fKHkpIiwgIng+eSIgY2FsbHNcbiAgICJ4Ll9fZ3RfXyh5KSIsIGFuZCAieD49eSIgY2FsbHMgInguX19nZV9fKHkpIi5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvbiAiTm90SW1wbGVtZW50ZWQiXG4gICBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYSBnaXZlbiBwYWlyIG9mXG4gICBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgcmV0dXJuZWQgZm9yIGFcbiAgIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW4gcmV0dXJuIGFueSB2YWx1ZSxcbiAgIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYSBCb29sZWFuIGNvbnRleHQgKGUuZy4sXG4gICBpbiB0aGUgY29uZGl0aW9uIG9mIGFuICJpZiIgc3RhdGVtZW50KSwgUHl0aG9uIHdpbGwgY2FsbCAiYm9vbCgpIlxuICAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0IGlzIHRydWUgb3IgZmFsc2UuXG5cbiAgIEJ5IGRlZmF1bHQsICJfX25lX18oKSIgZGVsZWdhdGVzIHRvICJfX2VxX18oKSIgYW5kIGludmVydHMgdGhlXG4gICByZXN1bHQgdW5sZXNzIGl0IGlzICJOb3RJbXBsZW1lbnRlZCIuICBUaGVyZSBhcmUgbm8gb3RoZXIgaW1wbGllZFxuICAgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIGZvciBleGFtcGxlLCB0aGVcbiAgIHRydXRoIG9mICIoeDx5IG9yIHg9PXkpIiBkb2VzIG5vdCBpbXBseSAieDw9eSIuIFRvIGF1dG9tYXRpY2FsbHlcbiAgIGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290IG9wZXJhdGlvbiwgc2VlXG4gICAiZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKCkiLlxuXG4gICBTZWUgdGhlIHBhcmFncmFwaCBvbiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uXG4gICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gY29tcGFyaXNvblxuICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG5cbiAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgKHRvIGJlIHVzZWRcbiAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCB0aGUgcmlnaHRcbiAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsICJfX2x0X18oKSIgYW5kICJfX2d0X18oKSIgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sICJfX2xlX18oKSIgYW5kICJfX2dlX18oKSIgYXJlIGVhY2ggb3RoZXJcJ3MgcmVmbGVjdGlvbixcbiAgIGFuZCAiX19lcV9fKCkiIGFuZCAiX19uZV9fKCkiIGFyZSB0aGVpciBvd24gcmVmbGVjdGlvbi4gSWYgdGhlXG4gICBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLCBhbmQgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGFcbiAgIGRpcmVjdCBvciBpbmRpcmVjdCBzdWJjbGFzcyBvZiB0aGUgbGVmdCBvcGVyYW5kXCdzIHR5cGUsIHRoZVxuICAgcmVmbGVjdGVkIG1ldGhvZCBvZiB0aGUgcmlnaHQgb3BlcmFuZCBoYXMgcHJpb3JpdHksIG90aGVyd2lzZSB0aGVcbiAgIGxlZnQgb3BlcmFuZFwncyBtZXRob2QgaGFzIHByaW9yaXR5LiAgVmlydHVhbCBzdWJjbGFzc2luZyBpcyBub3RcbiAgIGNvbnNpZGVyZWQuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gImhhc2goKSIgYW5kIGZvciBvcGVyYXRpb25zIG9uIG1lbWJlcnNcbiAgIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgInNldCIsICJmcm96ZW5zZXQiLCBhbmQgImRpY3QiLlxuICAgIl9faGFzaF9fKCkiIHNob3VsZCByZXR1cm4gYW4gaW50ZWdlci4gIFRoZSBvbmx5IHJlcXVpcmVkIHByb3BlcnR5XG4gICBpcyB0aGF0IG9iamVjdHMgd2hpY2ggY29tcGFyZSBlcXVhbCBoYXZlIHRoZSBzYW1lIGhhc2ggdmFsdWU7IGl0IGlzXG4gICBhZHZpc2VkIHRvIHNvbWVob3cgbWl4IHRvZ2V0aGVyIChlLmcuIHVzaW5nIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2hcbiAgIHZhbHVlcyBmb3IgdGhlIGNvbXBvbmVudHMgb2YgdGhlIG9iamVjdCB0aGF0IGFsc28gcGxheSBhIHBhcnQgaW5cbiAgIGNvbXBhcmlzb24gb2Ygb2JqZWN0cy5cblxuICAgTm90ZTogImhhc2goKSIgdHJ1bmNhdGVzIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGFuIG9iamVjdFwnc1xuICAgICBjdXN0b20gIl9faGFzaF9fKCkiIG1ldGhvZCB0byB0aGUgc2l6ZSBvZiBhICJQeV9zc2l6ZV90Ii4gIFRoaXNcbiAgICAgaXMgdHlwaWNhbGx5IDggYnl0ZXMgb24gNjQtYml0IGJ1aWxkcyBhbmQgNCBieXRlcyBvbiAzMi1iaXRcbiAgICAgYnVpbGRzLiBJZiBhbiBvYmplY3RcJ3MgICAiX19oYXNoX18oKSIgbXVzdCBpbnRlcm9wZXJhdGUgb24gYnVpbGRzXG4gICAgIG9mIGRpZmZlcmVudCBiaXQgc2l6ZXMsIGJlIHN1cmUgdG8gY2hlY2sgdGhlIHdpZHRoIG9uIGFsbFxuICAgICBzdXBwb3J0ZWQgYnVpbGRzLiAgQW4gZWFzeSB3YXkgdG8gZG8gdGhpcyBpcyB3aXRoICJweXRob24gLWNcbiAgICAgImltcG9ydCBzeXM7IHByaW50KHN5cy5oYXNoX2luZm8ud2lkdGgpIiIuXG5cbiAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuICJfX2VxX18oKSIgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhICJfX2hhc2hfXygpIiBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzICJfX2VxX18oKSJcbiAgIGJ1dCBub3QgIl9faGFzaF9fKCkiLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlIHVzYWJsZSBhcyBpdGVtcyBpblxuICAgaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXMgbXV0YWJsZSBvYmplY3RzIGFuZFxuICAgaW1wbGVtZW50cyBhbiAiX19lcV9fKCkiIG1ldGhvZCwgaXQgc2hvdWxkIG5vdCBpbXBsZW1lbnRcbiAgICJfX2hhc2hfXygpIiwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlIGNvbGxlY3Rpb25zXG4gICByZXF1aXJlcyB0aGF0IGEga2V5XCdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgb2JqZWN0XCdzIGhhc2hcbiAgIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19lcV9fKCkiIGFuZCAiX19oYXNoX18oKSIgbWV0aG9kcyBieVxuICAgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgKGV4Y2VwdCB3aXRoXG4gICB0aGVtc2VsdmVzKSBhbmQgInguX19oYXNoX18oKSIgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBzdWNoXG4gICB0aGF0ICJ4ID09IHkiIGltcGxpZXMgYm90aCB0aGF0ICJ4IGlzIHkiIGFuZCAiaGFzaCh4KSA9PSBoYXNoKHkpIi5cblxuICAgQSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIGFuZCBkb2VzIG5vdCBkZWZpbmUgIl9faGFzaF9fKCkiXG4gICB3aWxsIGhhdmUgaXRzICJfX2hhc2hfXygpIiBpbXBsaWNpdGx5IHNldCB0byAiTm9uZSIuICBXaGVuIHRoZVxuICAgIl9faGFzaF9fKCkiIG1ldGhvZCBvZiBhIGNsYXNzIGlzICJOb25lIiwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzc1xuICAgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSAiVHlwZUVycm9yIiB3aGVuIGEgcHJvZ3JhbSBhdHRlbXB0cyB0b1xuICAgcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSwgYW5kIHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhc1xuICAgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIi5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIG5lZWRzIHRvIHJldGFpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mICJfX2hhc2hfXygpIiBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGUgaW50ZXJwcmV0ZXJcbiAgIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyAiX19oYXNoX18gPVxuICAgPFBhcmVudENsYXNzPi5fX2hhc2hfXyIuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBvdmVycmlkZSAiX19lcV9fKCkiIHdpc2hlcyB0byBzdXBwcmVzc1xuICAgaGFzaCBzdXBwb3J0LCBpdCBzaG91bGQgaW5jbHVkZSAiX19oYXNoX18gPSBOb25lIiBpbiB0aGUgY2xhc3NcbiAgIGRlZmluaXRpb24uIEEgY2xhc3Mgd2hpY2ggZGVmaW5lcyBpdHMgb3duICJfX2hhc2hfXygpIiB0aGF0XG4gICBleHBsaWNpdGx5IHJhaXNlcyBhICJUeXBlRXJyb3IiIHdvdWxkIGJlIGluY29ycmVjdGx5IGlkZW50aWZpZWQgYXNcbiAgIGhhc2hhYmxlIGJ5IGFuICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIiBjYWxsLlxuXG4gICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgIl9faGFzaF9fKCkiIHZhbHVlcyBvZiBzdHIsIGJ5dGVzIGFuZFxuICAgICBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLlxuICAgICBBbHRob3VnaCB0aGV5IHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCBQeXRob25cbiAgICAgcHJvY2VzcywgdGhleSBhcmUgbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2ZcbiAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYSBkZW5pYWwtXG4gICAgIG9mLXNlcnZpY2UgY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGVcbiAgICAgd29yc3QgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QgaW5zZXJ0aW9uLCBPKG5eMikgY29tcGxleGl0eS5cbiAgICAgU2VlIGh0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbCBmb3JcbiAgICAgZGV0YWlscy5DaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBpdGVyYXRpb24gb3JkZXIgb2ZcbiAgICAgZGljdHMsIHNldHMgYW5kIG90aGVyIG1hcHBpbmdzLiAgUHl0aG9uIGhhcyBuZXZlciBtYWRlIGd1YXJhbnRlZXNcbiAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAzMi1iaXQgYW5kXG4gICAgIDY0LWJpdCBidWlsZHMpLlNlZSBhbHNvICJQWVRIT05IQVNIU0VFRCIuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cbm9iamVjdC5fX2Jvb2xfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiBvcGVyYXRpb25cbiAgICJib29sKCkiOyBzaG91bGQgcmV0dXJuICJGYWxzZSIgb3IgIlRydWUiLiAgV2hlbiB0aGlzIG1ldGhvZCBpcyBub3RcbiAgIGRlZmluZWQsICJfX2xlbl9fKCkiIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZSBvYmplY3QgaXNcbiAgIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG5laXRoZXIgIl9fbGVuX18oKSIgbm9yICJfX2Jvb2xfXygpIiwgYWxsIGl0cyBpbnN0YW5jZXMgYXJlXG4gICBjb25zaWRlcmVkIHRydWUuXG5cblxuQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSBtZWFuaW5nIG9mXG5hdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uIG9mICJ4Lm5hbWUiKSBmb3JcbmNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgInNlbGYiKS4gICJuYW1lIiBpcyB0aGUgYXR0cmlidXRlIG5hbWUuIFRoaXNcbiAgIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICAiX19nZXRhdHRyX18oKSIgaXMgbm90IGNhbGxlZC4gIChUaGlzIGlzIGFuIGludGVudGlvbmFsIGFzeW1tZXRyeVxuICAgYmV0d2VlbiAiX19nZXRhdHRyX18oKSIgYW5kICJfX3NldGF0dHJfXygpIi4pIFRoaXMgaXMgZG9uZSBib3RoIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSAiX19nZXRhdHRyX18oKSIgd291bGQgaGF2ZVxuICAgbm8gd2F5IHRvIGFjY2VzcyBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoZSBpbnN0YW5jZS4gIE5vdGUgdGhhdCBhdFxuICAgbGVhc3QgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgeW91IGNhbiBmYWtlIHRvdGFsIGNvbnRyb2wgYnkgbm90XG4gICBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlIGRpY3Rpb25hcnkgKGJ1dFxuICAgaW5zdGVhZCBpbnNlcnRpbmcgdGhlbSBpbiBhbm90aGVyIG9iamVjdCkuICBTZWUgdGhlXG4gICAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvIGFjdHVhbGx5IGdldCB0b3RhbFxuICAgY29udHJvbCBvdmVyIGF0dHJpYnV0ZSBhY2Nlc3MuXG5cbm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSBhY2Nlc3NlcyBmb3JcbiAgIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MuIElmIHRoZSBjbGFzcyBhbHNvIGRlZmluZXMgIl9fZ2V0YXR0cl9fKCkiLFxuICAgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzICJfX2dldGF0dHJpYnV0ZV9fKCkiIGVpdGhlclxuICAgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW4gIkF0dHJpYnV0ZUVycm9yIi4gVGhpcyBtZXRob2RcbiAgIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi4gSW4gb3JkZXIgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uIGluXG4gICB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uIHNob3VsZCBhbHdheXMgY2FsbCB0aGUgYmFzZSBjbGFzc1xuICAgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0byBhY2Nlc3MgYW55IGF0dHJpYnV0ZXMgaXQgbmVlZHMsIGZvclxuICAgZXhhbXBsZSwgIm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpIi5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsXG4gICAgIG1ldGhvZHMgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXhcbiAgICAgb3IgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgIl9fc2V0YXR0cl9fKCkiIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGl0XG4gICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCBmb3IgZXhhbXBsZSxcbiAgICJvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpIi5cblxub2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIExpa2UgIl9fc2V0YXR0cl9fKCkiIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmICJkZWwgb2JqLm5hbWUiIGlzXG4gICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuXG5vYmplY3QuX19kaXJfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiAiZGlyKCkiIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBIHNlcXVlbmNlIG11c3QgYmVcbiAgIHJldHVybmVkLiAiZGlyKCkiIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhIGxpc3QgYW5kXG4gICBzb3J0cyBpdC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyAiX19kaWN0X18iLlxuXG5vYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG5cbiAgIENhbGxlZCB0byBnZXQgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgb3duZXIgY2xhc3MgKGNsYXNzIGF0dHJpYnV0ZVxuICAgYWNjZXNzKSBvciBvZiBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIChpbnN0YW5jZSBhdHRyaWJ1dGVcbiAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgKmluc3RhbmNlKiBpcyB0aGVcbiAgIGluc3RhbmNlIHRoYXQgdGhlIGF0dHJpYnV0ZSB3YXMgYWNjZXNzZWQgdGhyb3VnaCwgb3IgIk5vbmUiIHdoZW5cbiAgIHRoZSBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgKm93bmVyKi4gIFRoaXMgbWV0aG9kIHNob3VsZFxuICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiAiQXR0cmlidXRlRXJyb3IiXG4gICBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblRoZSBhdHRyaWJ1dGUgIl9fb2JqY2xhc3NfXyIgaXMgaW50ZXJwcmV0ZWQgYnkgdGhlICJpbnNwZWN0IiBtb2R1bGUgYXNcbnNwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkIChzZXR0aW5nIHRoaXNcbmFwcHJvcHJpYXRlbHkgY2FuIGFzc2lzdCBpbiBydW50aW1lIGludHJvc3BlY3Rpb24gb2YgZHluYW1pYyBjbGFzc1xuYXR0cmlidXRlcykuIEZvciBjYWxsYWJsZXMsIGl0IG1heSBpbmRpY2F0ZSB0aGF0IGFuIGluc3RhbmNlIG9mIHRoZVxuZ2l2ZW4gdHlwZSAob3IgYSBzdWJjbGFzcykgaXMgZXhwZWN0ZWQgb3IgcmVxdWlyZWQgYXMgdGhlIGZpcnN0XG5wb3NpdGlvbmFsIGFyZ3VtZW50IChmb3IgZXhhbXBsZSwgQ1B5dGhvbiBzZXRzIHRoaXMgYXR0cmlidXRlIGZvclxudW5ib3VuZCBtZXRob2RzIHRoYXQgYXJlIGltcGxlbWVudGVkIGluIEMpLlxuXG5cbkludm9raW5nIERlc2NyaXB0b3JzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5JbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICJiaW5kaW5nXG5iZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgbWV0aG9kc1xuaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIsIGFuZFxuIl9fZGVsZXRlX18oKSIuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiBvYmplY3QsIGl0XG5pcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cblxuVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yIGRlbGV0ZVxudGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdFwncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsICJhLngiIGhhcyBhXG5sb29rdXAgY2hhaW4gc3RhcnRpbmcgd2l0aCAiYS5fX2RpY3RfX1tcJ3hcJ10iLCB0aGVuXG4idHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10iLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzZXMgb2ZcbiJ0eXBlKGEpIiBleGNsdWRpbmcgbWV0YWNsYXNzZXMuXG5cbkhvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nIG9uZSBvZiB0aGVcbmRlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZFxuaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLiAgV2hlcmUgdGhpcyBvY2N1cnMgaW4gdGhlXG5wcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIHdlcmUgZGVmaW5lZCBhbmRcbmhvdyB0aGV5IHdlcmUgY2FsbGVkLlxuXG5UaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBpcyBhIGJpbmRpbmcsICJhLngiLiBIb3dcbnRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uICJhIjpcblxuRGlyZWN0IENhbGxcbiAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyIGNvZGUgZGlyZWN0bHlcbiAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgInguX19nZXRfXyhhKSIuXG5cbkluc3RhbmNlIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCAiYS54IiBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogInR5cGUoYSkuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oYSwgdHlwZShhKSkiLlxuXG5DbGFzcyBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGEgY2xhc3MsICJBLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGNhbGw6XG4gICAiQS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhOb25lLCBBKSIuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmICJhIiBpcyBhbiBpbnN0YW5jZSBvZiAic3VwZXIiLCB0aGVuIHRoZSBiaW5kaW5nICJzdXBlcihCLFxuICAgb2JqKS5tKCkiIHNlYXJjaGVzICJvYmouX19jbGFzc19fLl9fbXJvX18iIGZvciB0aGUgYmFzZSBjbGFzcyAiQSJcbiAgIGltbWVkaWF0ZWx5IHByZWNlZGluZyAiQiIgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvciB3aXRoIHRoZVxuICAgY2FsbDogIkEuX19kaWN0X19bXCdtXCddLl9fZ2V0X18ob2JqLCBvYmouX19jbGFzc19fKSIuXG5cbkZvciBpbnN0YW5jZSBiaW5kaW5ncywgdGhlIHByZWNlZGVuY2Ugb2YgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGRlcGVuZHNcbm9uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBIGRlc2NyaXB0b3IgY2FuIGRlZmluZVxuYW55IGNvbWJpbmF0aW9uIG9mICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiBhbmQgIl9fZGVsZXRlX18oKSIuICBJZiBpdFxuZG9lcyBub3QgZGVmaW5lICJfX2dldF9fKCkiLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGwgcmV0dXJuXG50aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZSBvYmplY3RcJ3Ncbmluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzICJfX3NldF9fKCkiIGFuZC9vclxuIl9fZGVsZXRlX18oKSIsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzIG5laXRoZXIsIGl0IGlzXG5hIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9ycyBkZWZpbmUgYm90aFxuIl9fZ2V0X18oKSIgYW5kICJfX3NldF9fKCkiLCB3aGlsZSBub24tZGF0YSBkZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlXG4iX19nZXRfXygpIiBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGggIl9fc2V0X18oKSIgYW5kICJfX2dldF9fKCkiXG5kZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvbiBpbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW5cbmNvbnRyYXN0LCBub24tZGF0YSBkZXNjcmlwdG9ycyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgInN0YXRpY21ldGhvZCgpIiBhbmQgImNsYXNzbWV0aG9kKCkiKSBhcmVcbmltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5cbnJlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCBpbnN0YW5jZXMgdG9cbmFjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNsYXNzLlxuXG5UaGUgInByb3BlcnR5KCkiIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG4tLS0tLS0tLS1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgKl9fc2xvdHNfXypcbiAgIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgZGVjbGFyZWQgdmFyaWFibGVzIGFuZCBwcmV2ZW50cyB0aGVcbiAgIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qIGZvciBlYWNoXG4gICBpbnN0YW5jZS5cblxuXG5Ob3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxufn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5cblxuKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAqX19kaWN0X18qXG4gIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvIGEgKl9fc2xvdHNfXypcbiAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG5cbiogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgYXNzaWduZWQgbmV3XG4gIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgQXR0ZW1wdHMgdG9cbiAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzICJBdHRyaWJ1dGVFcnJvciIuIElmXG4gIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gYWRkXG4gICJcJ19fZGljdF9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3Nlc1xuICBkZWZpbmluZyAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzXG4gIGluc3RhbmNlcy4gSWYgd2VhayByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkXG4gICJcJ19fd2Vha3JlZl9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5IGNyZWF0aW5nXG4gIGRlc2NyaXB0b3JzICgqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKikgZm9yIGVhY2ggdmFyaWFibGUgbmFtZS4gIEFzXG4gIGEgcmVzdWx0LCBjbGFzcyBhdHRyaWJ1dGVzIGNhbm5vdCBiZSB1c2VkIHRvIHNldCBkZWZhdWx0IHZhbHVlcyBmb3JcbiAgaW5zdGFuY2UgdmFyaWFibGVzIGRlZmluZWQgYnkgKl9fc2xvdHNfXyo7IG90aGVyd2lzZSwgdGhlIGNsYXNzXG4gIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cblxuKiBUaGUgYWN0aW9uIG9mIGEgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gaXMgbGltaXRlZCB0byB0aGUgY2xhc3NcbiAgd2hlcmUgaXQgaXMgZGVmaW5lZC4gIEFzIGEgcmVzdWx0LCBzdWJjbGFzc2VzIHdpbGwgaGF2ZSBhICpfX2RpY3RfXypcbiAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSBjb250YWluIG5hbWVzXG4gIG9mIGFueSAqYWRkaXRpb25hbCogc2xvdHMpLlxuXG4qIElmIGEgY2xhc3MgZGVmaW5lcyBhIHNsb3QgYWxzbyBkZWZpbmVkIGluIGEgYmFzZSBjbGFzcywgdGhlXG4gIGluc3RhbmNlIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyBpbmFjY2Vzc2libGVcbiAgKGV4Y2VwdCBieSByZXRyaWV2aW5nIGl0cyBkZXNjcmlwdG9yIGRpcmVjdGx5IGZyb20gdGhlIGJhc2UgY2xhc3MpLlxuICBUaGlzIHJlbmRlcnMgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0gdW5kZWZpbmVkLiAgSW4gdGhlIGZ1dHVyZSwgYVxuICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuXG4qIE5vbmVtcHR5ICpfX3Nsb3RzX18qIGRvZXMgbm90IHdvcmsgZm9yIGNsYXNzZXMgZGVyaXZlZCBmcm9tXG4gICJ2YXJpYWJsZS1sZW5ndGgiIGJ1aWx0LWluIHR5cGVzIHN1Y2ggYXMgImludCIsICJieXRlcyIgYW5kICJ0dXBsZSIuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5nc1xuICBtYXkgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG5cblxuQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nICJ0eXBlKCkiLiBUaGUgY2xhc3MgYm9keSBpc1xuZXhlY3V0ZWQgaW4gYSBuZXcgbmFtZXNwYWNlIGFuZCB0aGUgY2xhc3MgbmFtZSBpcyBib3VuZCBsb2NhbGx5IHRvIHRoZVxucmVzdWx0IG9mICJ0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpIi5cblxuVGhlIGNsYXNzIGNyZWF0aW9uIHByb2Nlc3MgY2FuIGJlIGN1c3RvbWlzZWQgYnkgcGFzc2luZyB0aGVcbiJtZXRhY2xhc3MiIGtleXdvcmQgYXJndW1lbnQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gbGluZSwgb3IgYnlcbmluaGVyaXRpbmcgZnJvbSBhbiBleGlzdGluZyBjbGFzcyB0aGF0IGluY2x1ZGVkIHN1Y2ggYW4gYXJndW1lbnQuIEluXG50aGUgZm9sbG93aW5nIGV4YW1wbGUsIGJvdGggIk15Q2xhc3MiIGFuZCAiTXlTdWJjbGFzcyIgYXJlIGluc3RhbmNlc1xub2YgIk1ldGEiOlxuXG4gICBjbGFzcyBNZXRhKHR5cGUpOlxuICAgICAgIHBhc3NcblxuICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TWV0YSk6XG4gICAgICAgcGFzc1xuXG4gICBjbGFzcyBNeVN1YmNsYXNzKE15Q2xhc3MpOlxuICAgICAgIHBhc3NcblxuQW55IG90aGVyIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvblxuYXJlIHBhc3NlZCB0aHJvdWdoIHRvIGFsbCBtZXRhY2xhc3Mgb3BlcmF0aW9ucyBkZXNjcmliZWQgYmVsb3cuXG5cbldoZW4gYSBjbGFzcyBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLCB0aGUgZm9sbG93aW5nIHN0ZXBzIG9jY3VyOlxuXG4qIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZFxuXG4qIHRoZSBjbGFzcyBuYW1lc3BhY2UgaXMgcHJlcGFyZWRcblxuKiB0aGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZFxuXG4qIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZFxuXG5cbkRldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3Ncbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBmb3IgYSBjbGFzcyBkZWZpbml0aW9uIGlzIGRldGVybWluZWQgYXNcbmZvbGxvd3M6XG5cbiogaWYgbm8gYmFzZXMgYW5kIG5vIGV4cGxpY2l0IG1ldGFjbGFzcyBhcmUgZ2l2ZW4sIHRoZW4gInR5cGUoKSIgaXNcbiAgdXNlZFxuXG4qIGlmIGFuIGV4cGxpY2l0IG1ldGFjbGFzcyBpcyBnaXZlbiBhbmQgaXQgaXMgKm5vdCogYW4gaW5zdGFuY2Ugb2ZcbiAgInR5cGUoKSIsIHRoZW4gaXQgaXMgdXNlZCBkaXJlY3RseSBhcyB0aGUgbWV0YWNsYXNzXG5cbiogaWYgYW4gaW5zdGFuY2Ugb2YgInR5cGUoKSIgaXMgZ2l2ZW4gYXMgdGhlIGV4cGxpY2l0IG1ldGFjbGFzcywgb3JcbiAgYmFzZXMgYXJlIGRlZmluZWQsIHRoZW4gdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgdXNlZFxuXG5UaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBzZWxlY3RlZCBmcm9tIHRoZSBleHBsaWNpdGx5IHNwZWNpZmllZFxubWV0YWNsYXNzIChpZiBhbnkpIGFuZCB0aGUgbWV0YWNsYXNzZXMgKGkuZS4gInR5cGUoY2xzKSIpIG9mIGFsbFxuc3BlY2lmaWVkIGJhc2UgY2xhc3Nlcy4gVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgb25lIHdoaWNoIGlzIGFcbnN1YnR5cGUgb2YgKmFsbCogb2YgdGhlc2UgY2FuZGlkYXRlIG1ldGFjbGFzc2VzLiBJZiBub25lIG9mIHRoZVxuY2FuZGlkYXRlIG1ldGFjbGFzc2VzIG1lZXRzIHRoYXQgY3JpdGVyaW9uLCB0aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uXG53aWxsIGZhaWwgd2l0aCAiVHlwZUVycm9yIi5cblxuXG5QcmVwYXJpbmcgdGhlIGNsYXNzIG5hbWVzcGFjZVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuT25jZSB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGhhcyBiZWVuIGlkZW50aWZpZWQsIHRoZW4gdGhlIGNsYXNzXG5uYW1lc3BhY2UgaXMgcHJlcGFyZWQuIElmIHRoZSBtZXRhY2xhc3MgaGFzIGEgIl9fcHJlcGFyZV9fIiBhdHRyaWJ1dGUsXG5pdCBpcyBjYWxsZWQgYXMgIm5hbWVzcGFjZSA9IG1ldGFjbGFzcy5fX3ByZXBhcmVfXyhuYW1lLCBiYXNlcyxcbioqa3dkcykiICh3aGVyZSB0aGUgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cywgaWYgYW55LCBjb21lIGZyb21cbnRoZSBjbGFzcyBkZWZpbml0aW9uKS5cblxuSWYgdGhlIG1ldGFjbGFzcyBoYXMgbm8gIl9fcHJlcGFyZV9fIiBhdHRyaWJ1dGUsIHRoZW4gdGhlIGNsYXNzXG5uYW1lc3BhY2UgaXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgImRpY3QoKSIgaW5zdGFuY2UuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMFxuXG4gICAgIEludHJvZHVjZWQgdGhlICJfX3ByZXBhcmVfXyIgbmFtZXNwYWNlIGhvb2tcblxuXG5FeGVjdXRpbmcgdGhlIGNsYXNzIGJvZHlcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZCAoYXBwcm94aW1hdGVseSkgYXMgImV4ZWMoYm9keSwgZ2xvYmFscygpLFxubmFtZXNwYWNlKSIuIFRoZSBrZXkgZGlmZmVyZW5jZSBmcm9tIGEgbm9ybWFsIGNhbGwgdG8gImV4ZWMoKSIgaXMgdGhhdFxubGV4aWNhbCBzY29waW5nIGFsbG93cyB0aGUgY2xhc3MgYm9keSAoaW5jbHVkaW5nIGFueSBtZXRob2RzKSB0b1xucmVmZXJlbmNlIG5hbWVzIGZyb20gdGhlIGN1cnJlbnQgYW5kIG91dGVyIHNjb3BlcyB3aGVuIHRoZSBjbGFzc1xuZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIGEgZnVuY3Rpb24uXG5cbkhvd2V2ZXIsIGV2ZW4gd2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIHRoZSBmdW5jdGlvbixcbm1ldGhvZHMgZGVmaW5lZCBpbnNpZGUgdGhlIGNsYXNzIHN0aWxsIGNhbm5vdCBzZWUgbmFtZXMgZGVmaW5lZCBhdCB0aGVcbmNsYXNzIHNjb3BlLiBDbGFzcyB2YXJpYWJsZXMgbXVzdCBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBmaXJzdFxucGFyYW1ldGVyIG9mIGluc3RhbmNlIG9yIGNsYXNzIG1ldGhvZHMsIGFuZCBjYW5ub3QgYmUgYWNjZXNzZWQgYXQgYWxsXG5mcm9tIHN0YXRpYyBtZXRob2RzLlxuXG5cbkNyZWF0aW5nIHRoZSBjbGFzcyBvYmplY3Rcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuT25jZSB0aGUgY2xhc3MgbmFtZXNwYWNlIGhhcyBiZWVuIHBvcHVsYXRlZCBieSBleGVjdXRpbmcgdGhlIGNsYXNzXG5ib2R5LCB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgY2FsbGluZyAibWV0YWNsYXNzKG5hbWUsIGJhc2VzLFxubmFtZXNwYWNlLCAqKmt3ZHMpIiAodGhlIGFkZGl0aW9uYWwga2V5d29yZHMgcGFzc2VkIGhlcmUgYXJlIHRoZSBzYW1lXG5hcyB0aG9zZSBwYXNzZWQgdG8gIl9fcHJlcGFyZV9fIikuXG5cblRoaXMgY2xhc3Mgb2JqZWN0IGlzIHRoZSBvbmUgdGhhdCB3aWxsIGJlIHJlZmVyZW5jZWQgYnkgdGhlIHplcm8tXG5hcmd1bWVudCBmb3JtIG9mICJzdXBlcigpIi4gIl9fY2xhc3NfXyIgaXMgYW4gaW1wbGljaXQgY2xvc3VyZVxucmVmZXJlbmNlIGNyZWF0ZWQgYnkgdGhlIGNvbXBpbGVyIGlmIGFueSBtZXRob2RzIGluIGEgY2xhc3MgYm9keSByZWZlclxudG8gZWl0aGVyICJfX2NsYXNzX18iIG9yICJzdXBlciIuIFRoaXMgYWxsb3dzIHRoZSB6ZXJvIGFyZ3VtZW50IGZvcm1cbm9mICJzdXBlcigpIiB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIGNsYXNzIGJlaW5nIGRlZmluZWQgYmFzZWQgb25cbmxleGljYWwgc2NvcGluZywgd2hpbGUgdGhlIGNsYXNzIG9yIGluc3RhbmNlIHRoYXQgd2FzIHVzZWQgdG8gbWFrZSB0aGVcbmN1cnJlbnQgY2FsbCBpcyBpZGVudGlmaWVkIGJhc2VkIG9uIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgdG8gdGhlXG5tZXRob2QuXG5cbkFmdGVyIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCwgaXQgaXMgcGFzc2VkIHRvIHRoZSBjbGFzc1xuZGVjb3JhdG9ycyBpbmNsdWRlZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiAoaWYgYW55KSBhbmQgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgdGhlIGRlZmluZWQgY2xhc3MuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTM1KiogLSBOZXcgc3VwZXJcblxuICAgICBEZXNjcmliZXMgdGhlIGltcGxpY2l0ICJfX2NsYXNzX18iIGNsb3N1cmUgcmVmZXJlbmNlXG5cblxuTWV0YWNsYXNzIGV4YW1wbGVcbi0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBwb3RlbnRpYWwgdXNlcyBmb3IgbWV0YWNsYXNzZXMgYXJlIGJvdW5kbGVzcy4gU29tZSBpZGVhcyB0aGF0IGhhdmVcbmJlZW4gZXhwbG9yZWQgaW5jbHVkZSBsb2dnaW5nLCBpbnRlcmZhY2UgY2hlY2tpbmcsIGF1dG9tYXRpY1xuZGVsZWdhdGlvbiwgYXV0b21hdGljIHByb3BlcnR5IGNyZWF0aW9uLCBwcm94aWVzLCBmcmFtZXdvcmtzLCBhbmRcbmF1dG9tYXRpYyByZXNvdXJjZSBsb2NraW5nL3N5bmNocm9uaXphdGlvbi5cblxuSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgbWV0YWNsYXNzIHRoYXQgdXNlcyBhblxuImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IiB0byByZW1lbWJlciB0aGUgb3JkZXIgdGhhdCBjbGFzcyB2YXJpYWJsZXNcbmFyZSBkZWZpbmVkOlxuXG4gICBjbGFzcyBPcmRlcmVkQ2xhc3ModHlwZSk6XG5cbiAgICAgICAgQGNsYXNzbWV0aG9kXG4gICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKTpcbiAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KClcblxuICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsICoqa3dkcyk6XG4gICAgICAgICAgIHJlc3VsdCA9IHR5cGUuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBkaWN0KG5hbWVzcGFjZSkpXG4gICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUobmFtZXNwYWNlKVxuICAgICAgICAgICByZXR1cm4gcmVzdWx0XG5cbiAgIGNsYXNzIEEobWV0YWNsYXNzPU9yZGVyZWRDbGFzcyk6XG4gICAgICAgZGVmIG9uZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0d28oc2VsZik6IHBhc3NcbiAgICAgICBkZWYgdGhyZWUoc2VsZik6IHBhc3NcbiAgICAgICBkZWYgZm91cihzZWxmKTogcGFzc1xuXG4gICA+Pj4gQS5tZW1iZXJzXG4gICAoXCdfX21vZHVsZV9fXCcsIFwnb25lXCcsIFwndHdvXCcsIFwndGhyZWVcJywgXCdmb3VyXCcpXG5cbldoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gZm9yICpBKiBnZXRzIGV4ZWN1dGVkLCB0aGUgcHJvY2VzcyBiZWdpbnNcbndpdGggY2FsbGluZyB0aGUgbWV0YWNsYXNzXCdzICJfX3ByZXBhcmVfXygpIiBtZXRob2Qgd2hpY2ggcmV0dXJucyBhblxuZW1wdHkgImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0Ii4gIFRoYXQgbWFwcGluZyByZWNvcmRzIHRoZSBtZXRob2RzIGFuZFxuYXR0cmlidXRlcyBvZiAqQSogYXMgdGhleSBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIGNsYXNzXG5zdGF0ZW1lbnQuIE9uY2UgdGhvc2UgZGVmaW5pdGlvbnMgYXJlIGV4ZWN1dGVkLCB0aGUgb3JkZXJlZCBkaWN0aW9uYXJ5XG5pcyBmdWxseSBwb3B1bGF0ZWQgYW5kIHRoZSBtZXRhY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIGdldHNcbmludm9rZWQuICBUaGF0IG1ldGhvZCBidWlsZHMgdGhlIG5ldyB0eXBlIGFuZCBpdCBzYXZlcyB0aGUgb3JkZXJlZFxuZGljdGlvbmFyeSBrZXlzIGluIGFuIGF0dHJpYnV0ZSBjYWxsZWQgIm1lbWJlcnMiLlxuXG5cbkN1c3RvbWl6aW5nIGluc3RhbmNlIGFuZCBzdWJjbGFzcyBjaGVja3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZVxuImlzaW5zdGFuY2UoKSIgYW5kICJpc3N1YmNsYXNzKCkiIGJ1aWx0LWluIGZ1bmN0aW9ucy5cblxuSW4gcGFydGljdWxhciwgdGhlIG1ldGFjbGFzcyAiYWJjLkFCQ01ldGEiIGltcGxlbWVudHMgdGhlc2UgbWV0aG9kcyBpblxub3JkZXIgdG8gYWxsb3cgdGhlIGFkZGl0aW9uIG9mIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoQUJDcykgYXNcbiJ2aXJ0dWFsIGJhc2UgY2xhc3NlcyIgdG8gYW55IGNsYXNzIG9yIHR5cGUgKGluY2x1ZGluZyBidWlsdC1pblxudHlwZXMpLCBpbmNsdWRpbmcgb3RoZXIgQUJDcy5cblxuY2xhc3MuX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIFJldHVybiB0cnVlIGlmICppbnN0YW5jZSogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgaW5zdGFuY2Ugb2YgKmNsYXNzKi4gSWYgZGVmaW5lZCwgY2FsbGVkIHRvIGltcGxlbWVudFxuICAgImlzaW5zdGFuY2UoaW5zdGFuY2UsIGNsYXNzKSIuXG5cbmNsYXNzLl9fc3ViY2xhc3NjaGVja19fKHNlbGYsIHN1YmNsYXNzKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiAqc3ViY2xhc3MqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCBvclxuICAgaW5kaXJlY3QpIHN1YmNsYXNzIG9mICpjbGFzcyouICBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICAiaXNzdWJjbGFzcyhzdWJjbGFzcywgY2xhc3MpIi5cblxuTm90ZSB0aGF0IHRoZXNlIG1ldGhvZHMgYXJlIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSAobWV0YWNsYXNzKSBvZiBhXG5jbGFzcy4gIFRoZXkgY2Fubm90IGJlIGRlZmluZWQgYXMgY2xhc3MgbWV0aG9kcyBpbiB0aGUgYWN0dWFsIGNsYXNzLlxuVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGxvb2t1cCBvZiBzcGVjaWFsIG1ldGhvZHMgdGhhdCBhcmUgY2FsbGVkXG5vbiBpbnN0YW5jZXMsIG9ubHkgaW4gdGhpcyBjYXNlIHRoZSBpbnN0YW5jZSBpcyBpdHNlbGYgYSBjbGFzcy5cblxuU2VlIGFsc286ICoqUEVQIDMxMTkqKiAtIEludHJvZHVjaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3Nlc1xuXG4gICAgIEluY2x1ZGVzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBjdXN0b21pemluZyAiaXNpbnN0YW5jZSgpIiBhbmRcbiAgICAgImlzc3ViY2xhc3MoKSIgYmVoYXZpb3IgdGhyb3VnaCAiX19pbnN0YW5jZWNoZWNrX18oKSIgYW5kXG4gICAgICJfX3N1YmNsYXNzY2hlY2tfXygpIiwgd2l0aCBtb3RpdmF0aW9uIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkgaW5cbiAgICAgdGhlIGNvbnRleHQgb2YgYWRkaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoc2VlIHRoZSAiYWJjIlxuICAgICBtb2R1bGUpIHRvIHRoZSBsYW5ndWFnZS5cblxuXG5FbXVsYXRpbmcgY2FsbGFibGUgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxub2JqZWN0Ll9fY2FsbF9fKHNlbGZbLCBhcmdzLi4uXSlcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzICJjYWxsZWQiIGFzIGEgZnVuY3Rpb247IGlmIHRoaXMgbWV0aG9kXG4gICBpcyBkZWZpbmVkLCAieChhcmcxLCBhcmcyLCAuLi4pIiBpcyBhIHNob3J0aGFuZCBmb3JcbiAgICJ4Ll9fY2FsbF9fKGFyZzEsIGFyZzIsIC4uLikiLlxuXG5cbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gayA8IE4iIHdoZXJlXG4qTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoIGRlZmluZSBhXG5yYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlIHRoZVxubWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiZ2V0KCkiLCAiY2xlYXIoKSIsXG4ic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgInVwZGF0ZSgpIlxuYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkIGRpY3Rpb25hcnkgb2JqZWN0cy5cblRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZSBwcm92aWRlcyBhICJNdXRhYmxlTWFwcGluZyIgYWJzdHJhY3QgYmFzZVxuY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kcyBmcm9tIGEgYmFzZSBzZXQgb2YgIl9fZ2V0aXRlbV9fKCkiLFxuIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSBzZXF1ZW5jZXNcbnNob3VsZCBwcm92aWRlIG1ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICJleHRlbmQoKSIsXG4iaW5zZXJ0KCkiLCAicG9wKCkiLCAicmVtb3ZlKCkiLCAicmV2ZXJzZSgpIiBhbmQgInNvcnQoKSIsIGxpa2UgUHl0aG9uXG5zdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgaW1wbGVtZW50XG5hZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzICJfX2FkZF9fKCkiLCAiX19yYWRkX18oKSIsXG4iX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiBkZXNjcmliZWRcbmJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdCBpc1xucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiBvcGVyYXRvcjtcbmZvciBtYXBwaW5ncywgImluIiBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvciBzZXF1ZW5jZXMsIGl0XG5zaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXIgcmVjb21tZW5kZWQgdGhhdCBib3RoXG5tYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCB0byBhbGxvd1xuZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZSBjb250YWluZXI7IGZvciBtYXBwaW5ncywgIl9faXRlcl9fKCkiXG5zaG91bGQgYmUgdGhlIHNhbWUgYXMgImtleXMoKSI7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlXG50aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIuICBTaG91bGQgcmV0dXJuXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gb2JqZWN0IHRoYXRcbiAgIGRvZXNuXCd0IGRlZmluZSBhICJfX2Jvb2xfXygpIiBtZXRob2QgYW5kIHdob3NlICJfX2xlbl9fKCkiIG1ldGhvZFxuICAgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbm9iamVjdC5fX2xlbmd0aF9oaW50X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCByZXR1cm4gYW5cbiAgIGVzdGltYXRlZCBsZW5ndGggZm9yIHRoZSBvYmplY3QgKHdoaWNoIG1heSBiZSBncmVhdGVyIG9yIGxlc3MgdGhhblxuICAgdGhlIGFjdHVhbCBsZW5ndGgpLiBUaGUgbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlciAiPj0iIDAuIFRoaXNcbiAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCBmb3JcbiAgIGNvcnJlY3RuZXNzLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbk5vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcy5cbiAgQSBjYWxsIGxpa2VcblxuICAgICBhWzE6Ml0gPSBiXG5cbiAgaXMgdHJhbnNsYXRlZCB0b1xuXG4gICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuXG4gIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gd2l0aCAiTm9uZSIuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yIHNlcXVlbmNlIHR5cGVzLFxuICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLiAgTm90ZSB0aGF0XG4gICB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGUgY2xhc3Mgd2lzaGVzXG4gICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuIElmXG4gICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSByYWlzZWQ7IGlmIG9mXG4gICBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZiBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueVxuICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAiSW5kZXhFcnJvciIgc2hvdWxkIGJlXG4gICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlXG4gICBjb250YWluZXIpLCAiS2V5RXJyb3IiIHNob3VsZCBiZSByYWlzZWQuXG5cbiAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAic2VsZltrZXldIiBmb3IgZGljdFxuICAgc3ViY2xhc3NlcyB3aGVuIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIuXG5cbiAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSBhcmVcbiAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXRlcmF0b3JcbiAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuXG5vYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG5cbiAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgInJldmVyc2VkKCkiXG4gICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgKCJfX2xlbl9fKCkiXG4gICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbFxuICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW5cbiAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5XG4gICAicmV2ZXJzZWQoKSIuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlIG5vcm1hbGx5XG5pbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgY29udGFpbmVyXG5vYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSBlZmZpY2llbnRcbmltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhIHNlcXVlbmNlLlxuXG5vYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCByZXR1cm4gdHJ1ZVxuICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgb2JqZWN0cywgdGhpc1xuICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb3JcbiAgIHRoZSBrZXktaXRlbSBwYWlycy5cblxuICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSBtZW1iZXJzaGlwIHRlc3RcbiAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgc2VxdWVuY2VcbiAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgKnRoaXMgc2VjdGlvbiBpbiB0aGVcbiAgIGxhbmd1YWdlIHJlZmVyZW5jZSouXG5cblxuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLCAicG93KCkiLFxuICAgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZVxuICAgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhblxuICAgIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyBjYWxsZWQuICBUaGUgIl9fZGl2bW9kX18oKSJcbiAgIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmcgIl9fZmxvb3JkaXZfXygpIiBhbmRcbiAgICJfX21vZF9fKCkiOyBpdCBzaG91bGQgbm90IGJlIHJlbGF0ZWQgdG8gIl9fdHJ1ZWRpdl9fKCkiLiAgTm90ZVxuICAgdGhhdCAiX19wb3dfXygpIiBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHQgYW4gb3B0aW9uYWwgdGhpcmRcbiAgIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluICJwb3coKSIgZnVuY3Rpb24gaXNcbiAgIHRvIGJlIHN1cHBvcnRlZC5cblxuICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIHdpdGggdGhlXG4gICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cblxub2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiLyIsICIvLyIsICIlIiwgImRpdm1vZCgpIiwgInBvdygpIixcbiAgICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpIHdpdGggcmVmbGVjdGVkIChzd2FwcGVkKSBvcGVyYW5kcy5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzIG5vdFxuICAgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2ZcbiAgIGRpZmZlcmVudCB0eXBlcy4gWzJdICBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4IC1cbiAgIHkiLCB3aGVyZSAqeSogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiAiX19yc3ViX18oKSJcbiAgIG1ldGhvZCwgInkuX19yc3ViX18oeCkiIGlzIGNhbGxlZCBpZiAieC5fX3N1Yl9fKHkpIiByZXR1cm5zXG4gICAqTm90SW1wbGVtZW50ZWQqLlxuXG4gICBOb3RlIHRoYXQgdGVybmFyeSAicG93KCkiIHdpbGwgbm90IHRyeSBjYWxsaW5nICJfX3Jwb3dfXygpIiAodGhlXG4gICBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3MgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgcmVmbGVjdGVkIG1ldGhvZFxuICAgICBmb3IgdGhlIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3Mgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzXG4gICAgIHRvIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9yc1wnIG9wZXJhdGlvbnMuXG5cbm9iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkIGFyaXRobWV0aWNcbiAgIGFzc2lnbm1lbnRzICgiKz0iLCAiLT0iLCAiKj0iLCAiLz0iLCAiLy89IiwgIiU9IiwgIioqPSIsICI8PD0iLFxuICAgIj4+PSIsICImPSIsICJePSIsICJ8PSIpLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGVcbiAgIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaFxuICAgY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsXG4gICBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCBpZiAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB3aXRoIGFuXG4gICAiX19pYWRkX18oKSIgbWV0aG9kLCAieCArPSB5IiBpcyBlcXVpdmFsZW50IHRvICJ4ID0geC5fX2lhZGRfXyh5KSJcbiAgIC4gT3RoZXJ3aXNlLCAieC5fX2FkZF9fKHkpIiBhbmQgInkuX19yYWRkX18oeCkiIGFyZSBjb25zaWRlcmVkLCBhc1xuICAgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiAieCArIHkiLiBJbiBjZXJ0YWluIHNpdHVhdGlvbnMsIGF1Z21lbnRlZFxuICAgYXNzaWdubWVudCBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgZXJyb3JzIChzZWUgKldoeSBkb2VzXG4gICBhX3R1cGxlW2ldICs9IFtcJ2l0ZW1cJ10gcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhlIGFkZGl0aW9uXG4gICB3b3Jrcz8qKSwgYnV0IHRoaXMgYmVoYXZpb3IgaXMgaW4gZmFjdCBwYXJ0IG9mIHRoZSBkYXRhIG1vZGVsLlxuXG5vYmplY3QuX19uZWdfXyhzZWxmKVxub2JqZWN0Ll9fcG9zX18oc2VsZilcbm9iamVjdC5fX2Fic19fKHNlbGYpXG5vYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKCItIiwgIisiLFxuICAgImFicygpIiBhbmQgIn4iKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiY29tcGxleCgpIiwgImludCgpIixcbiAgICJmbG9hdCgpIiBhbmQgInJvdW5kKCkiLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mIHRoZSBhcHByb3ByaWF0ZVxuICAgdHlwZS5cblxub2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5pbmRleCgpIiwgYW5kIHdoZW5ldmVyIFB5dGhvbiBuZWVkc1xuICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyIG9iamVjdCAoc3VjaFxuICAgYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlIGJ1aWx0LWluICJiaW4oKSIsICJoZXgoKSIgYW5kICJvY3QoKSJcbiAgIGZ1bmN0aW9ucykuIFByZXNlbmNlIG9mIHRoaXMgbWV0aG9kIGluZGljYXRlcyB0aGF0IHRoZSBudW1lcmljXG4gICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cblxuICAgTm90ZTogSW4gb3JkZXIgdG8gaGF2ZSBhIGNvaGVyZW50IGludGVnZXIgdHlwZSBjbGFzcywgd2hlblxuICAgICAiX19pbmRleF9fKCkiIGlzIGRlZmluZWQgIl9faW50X18oKSIgc2hvdWxkIGFsc28gYmUgZGVmaW5lZCwgYW5kXG4gICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cblxuXG5XaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkEgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSBjb250ZXh0IHRvXG5iZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhICJ3aXRoIiBzdGF0ZW1lbnQuIFRoZSBjb250ZXh0IG1hbmFnZXJcbmhhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCBydW50aW1lIGNvbnRleHRcbmZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCBtYW5hZ2VycyBhcmUgbm9ybWFsbHlcbmludm9rZWQgdXNpbmcgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiBzZWN0aW9uICpUaGUgd2l0aFxuc3RhdGVtZW50KiksIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGJ5IGRpcmVjdGx5IGludm9raW5nIHRoZWlyIG1ldGhvZHMuXG5cblR5cGljYWwgdXNlcyBvZiBjb250ZXh0IG1hbmFnZXJzIGluY2x1ZGUgc2F2aW5nIGFuZCByZXN0b3JpbmcgdmFyaW91c1xua2luZHMgb2YgZ2xvYmFsIHN0YXRlLCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgcmVzb3VyY2VzLCBjbG9zaW5nIG9wZW5lZFxuZmlsZXMsIGV0Yy5cblxuRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29udGV4dCBtYW5hZ2Vycywgc2VlICpDb250ZXh0IE1hbmFnZXIgVHlwZXMqLlxuXG5vYmplY3QuX19lbnRlcl9fKHNlbGYpXG5cbiAgIEVudGVyIHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICJ3aXRoIlxuICAgc3RhdGVtZW50IHdpbGwgYmluZCB0aGlzIG1ldGhvZFwncyByZXR1cm4gdmFsdWUgdG8gdGhlIHRhcmdldChzKVxuICAgc3BlY2lmaWVkIGluIHRoZSAiYXMiIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG5cbm9iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG5cbiAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgcGFyYW1ldGVyc1xuICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSBleGl0ZWQuIElmIHRoZVxuICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgYXJndW1lbnRzIHdpbGxcbiAgIGJlICJOb25lIi5cblxuICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gc3VwcHJlc3MgdGhlXG4gICBleGNlcHRpb24gKGkuZS4sIHByZXZlbnQgaXQgZnJvbSBiZWluZyBwcm9wYWdhdGVkKSwgaXQgc2hvdWxkXG4gICByZXR1cm4gYSB0cnVlIHZhbHVlLiBPdGhlcndpc2UsIHRoZSBleGNlcHRpb24gd2lsbCBiZSBwcm9jZXNzZWRcbiAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuXG4gICBOb3RlIHRoYXQgIl9fZXhpdF9fKCkiIG1ldGhvZHMgc2hvdWxkIG5vdCByZXJhaXNlIHRoZSBwYXNzZWQtaW5cbiAgIGV4Y2VwdGlvbjsgdGhpcyBpcyB0aGUgY2FsbGVyXCdzIHJlc3BvbnNpYmlsaXR5LlxuXG5TZWUgYWxzbzogKipQRVAgMDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICJ3aXRoIlxuICAgICBzdGF0ZW1lbnQuXG5cblxuU3BlY2lhbCBtZXRob2QgbG9va3VwXG49PT09PT09PT09PT09PT09PT09PT1cblxuRm9yIGN1c3RvbSBjbGFzc2VzLCBpbXBsaWNpdCBpbnZvY2F0aW9ucyBvZiBzcGVjaWFsIG1ldGhvZHMgYXJlIG9ubHlcbmd1YXJhbnRlZWQgdG8gd29yayBjb3JyZWN0bHkgaWYgZGVmaW5lZCBvbiBhbiBvYmplY3RcJ3MgdHlwZSwgbm90IGluXG50aGUgb2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBUaGF0IGJlaGF2aW91ciBpcyB0aGUgcmVhc29uIHdoeVxudGhlIGZvbGxvd2luZyBjb2RlIHJhaXNlcyBhbiBleGNlcHRpb246XG5cbiAgID4+PiBjbGFzcyBDOlxuICAgLi4uICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5fX2xlbl9fID0gbGFtYmRhOiA1XG4gICA+Pj4gbGVuKGMpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IG9iamVjdCBvZiB0eXBlIFwnQ1wnIGhhcyBubyBsZW4oKVxuXG5UaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGJlaGF2aW91ciBsaWVzIHdpdGggYSBudW1iZXIgb2Ygc3BlY2lhbFxubWV0aG9kcyBzdWNoIGFzICJfX2hhc2hfXygpIiBhbmQgIl9fcmVwcl9fKCkiIHRoYXQgYXJlIGltcGxlbWVudGVkIGJ5XG5hbGwgb2JqZWN0cywgaW5jbHVkaW5nIHR5cGUgb2JqZWN0cy4gSWYgdGhlIGltcGxpY2l0IGxvb2t1cCBvZiB0aGVzZVxubWV0aG9kcyB1c2VkIHRoZSBjb252ZW50aW9uYWwgbG9va3VwIHByb2Nlc3MsIHRoZXkgd291bGQgZmFpbCB3aGVuXG5pbnZva2VkIG9uIHRoZSB0eXBlIG9iamVjdCBpdHNlbGY6XG5cbiAgID4+PiAxIC5fX2hhc2hfXygpID09IGhhc2goMSlcbiAgIFRydWVcbiAgID4+PiBpbnQuX19oYXNoX18oKSA9PSBoYXNoKGludClcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbiAgIFR5cGVFcnJvcjogZGVzY3JpcHRvciBcJ19faGFzaF9fXCcgb2YgXCdpbnRcJyBvYmplY3QgbmVlZHMgYW4gYXJndW1lbnRcblxuSW5jb3JyZWN0bHkgYXR0ZW1wdGluZyB0byBpbnZva2UgYW4gdW5ib3VuZCBtZXRob2Qgb2YgYSBjbGFzcyBpbiB0aGlzXG53YXkgaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIFwnbWV0YWNsYXNzIGNvbmZ1c2lvblwnLCBhbmQgaXMgYXZvaWRlZFxuYnkgYnlwYXNzaW5nIHRoZSBpbnN0YW5jZSB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbCBtZXRob2RzOlxuXG4gICA+Pj4gdHlwZSgxKS5fX2hhc2hfXygxKSA9PSBoYXNoKDEpXG4gICBUcnVlXG4gICA+Pj4gdHlwZShpbnQpLl9faGFzaF9fKGludCkgPT0gaGFzaChpbnQpXG4gICBUcnVlXG5cbkluIGFkZGl0aW9uIHRvIGJ5cGFzc2luZyBhbnkgaW5zdGFuY2UgYXR0cmlidXRlcyBpbiB0aGUgaW50ZXJlc3Qgb2ZcbmNvcnJlY3RuZXNzLCBpbXBsaWNpdCBzcGVjaWFsIG1ldGhvZCBsb29rdXAgZ2VuZXJhbGx5IGFsc28gYnlwYXNzZXNcbnRoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgZXZlbiBvZiB0aGUgb2JqZWN0XCdzIG1ldGFjbGFzczpcblxuICAgPj4+IGNsYXNzIE1ldGEodHlwZSk6XG4gICAuLi4gICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbiAgIC4uLiAgICAgICAgIHByaW50KCJNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgICAgcmV0dXJuIHR5cGUuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbiAgIC4uLlxuICAgPj4+IGNsYXNzIEMob2JqZWN0LCBtZXRhY2xhc3M9TWV0YSk6XG4gICAuLi4gICAgIGRlZiBfX2xlbl9fKHNlbGYpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIDEwXG4gICAuLi4gICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbiAgIC4uLiAgICAgICAgIHByaW50KCJDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZCIpXG4gICAuLi4gICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5fX2xlbl9fKCkgICAgICAgICAgICAgICAgICMgRXhwbGljaXQgbG9va3VwIHZpYSBpbnN0YW5jZVxuICAgQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWRcbiAgIDEwXG4gICA+Pj4gdHlwZShjKS5fX2xlbl9fKGMpICAgICAgICAgICMgRXhwbGljaXQgbG9va3VwIHZpYSB0eXBlXG4gICBNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWRcbiAgIDEwXG4gICA+Pj4gbGVuKGMpICAgICAgICAgICAgICAgICAgICAgICMgSW1wbGljaXQgbG9va3VwXG4gICAxMFxuXG5CeXBhc3NpbmcgdGhlICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1hY2hpbmVyeSBpbiB0aGlzIGZhc2hpb24gcHJvdmlkZXNcbnNpZ25pZmljYW50IHNjb3BlIGZvciBzcGVlZCBvcHRpbWlzYXRpb25zIHdpdGhpbiB0aGUgaW50ZXJwcmV0ZXIsIGF0XG50aGUgY29zdCBvZiBzb21lIGZsZXhpYmlsaXR5IGluIHRoZSBoYW5kbGluZyBvZiBzcGVjaWFsIG1ldGhvZHMgKHRoZVxuc3BlY2lhbCBtZXRob2QgKm11c3QqIGJlIHNldCBvbiB0aGUgY2xhc3Mgb2JqZWN0IGl0c2VsZiBpbiBvcmRlciB0byBiZVxuY29uc2lzdGVudGx5IGludm9rZWQgYnkgdGhlIGludGVycHJldGVyKS5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBJdCAqaXMqIHBvc3NpYmxlIGluIHNvbWUgY2FzZXMgdG8gY2hhbmdlIGFuIG9iamVjdFwncyB0eXBlLFxuICAgIHVuZGVyIGNlcnRhaW4gY29udHJvbGxlZCBjb25kaXRpb25zLiBJdCBnZW5lcmFsbHkgaXNuXCd0IGEgZ29vZFxuICAgIGlkZWEgdGhvdWdoLCBzaW5jZSBpdCBjYW4gbGVhZCB0byBzb21lIHZlcnkgc3RyYW5nZSBiZWhhdmlvdXIgaWZcbiAgICBpdCBpcyBoYW5kbGVkIGluY29ycmVjdGx5LlxuXG5bMl0gRm9yIG9wZXJhbmRzIG9mIHRoZSBzYW1lIHR5cGUsIGl0IGlzIGFzc3VtZWQgdGhhdCBpZiB0aGUgbm9uLVxuICAgIHJlZmxlY3RlZCBtZXRob2QgKHN1Y2ggYXMgIl9fYWRkX18oKSIpIGZhaWxzIHRoZSBvcGVyYXRpb24gaXMgbm90XG4gICAgc3VwcG9ydGVkLCB3aGljaCBpcyB3aHkgdGhlIHJlZmxlY3RlZCBtZXRob2QgaXMgbm90IGNhbGxlZC5cbicsCi0gJ3N0cmluZy1tZXRob2RzJzogdSdcblN0cmluZyBNZXRob2RzXG4qKioqKioqKioqKioqKlxuXG5TdHJpbmdzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIHNlcXVlbmNlIG9wZXJhdGlvbnMsIGFsb25nIHdpdGhcbnRoZSBhZGRpdGlvbmFsIG1ldGhvZHMgZGVzY3JpYmVkIGJlbG93LlxuXG5TdHJpbmdzIGFsc28gc3VwcG9ydCB0d28gc3R5bGVzIG9mIHN0cmluZyBmb3JtYXR0aW5nLCBvbmUgcHJvdmlkaW5nIGFcbmxhcmdlIGRlZ3JlZSBvZiBmbGV4aWJpbGl0eSBhbmQgY3VzdG9taXphdGlvbiAoc2VlICJzdHIuZm9ybWF0KCkiLFxuKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBhbmQgKlN0cmluZyBGb3JtYXR0aW5nKikgYW5kIHRoZSBvdGhlciBiYXNlZCBvblxuQyAicHJpbnRmIiBzdHlsZSBmb3JtYXR0aW5nIHRoYXQgaGFuZGxlcyBhIG5hcnJvd2VyIHJhbmdlIG9mIHR5cGVzIGFuZFxuaXMgc2xpZ2h0bHkgaGFyZGVyIHRvIHVzZSBjb3JyZWN0bHksIGJ1dCBpcyBvZnRlbiBmYXN0ZXIgZm9yIHRoZSBjYXNlc1xuaXQgY2FuIGhhbmRsZSAoKnByaW50Zi1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZyopLlxuXG5UaGUgKlRleHQgUHJvY2Vzc2luZyBTZXJ2aWNlcyogc2VjdGlvbiBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBjb3ZlcnNcbmEgbnVtYmVyIG9mIG90aGVyIG1vZHVsZXMgdGhhdCBwcm92aWRlIHZhcmlvdXMgdGV4dCByZWxhdGVkIHV0aWxpdGllc1xuKGluY2x1ZGluZyByZWd1bGFyIGV4cHJlc3Npb24gc3VwcG9ydCBpbiB0aGUgInJlIiBtb2R1bGUpLlxuXG5zdHIuY2FwaXRhbGl6ZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGl0cyBmaXJzdCBjaGFyYWN0ZXIgY2FwaXRhbGl6ZWRcbiAgIGFuZCB0aGUgcmVzdCBsb3dlcmNhc2VkLlxuXG5zdHIuY2FzZWZvbGQoKVxuXG4gICBSZXR1cm4gYSBjYXNlZm9sZGVkIGNvcHkgb2YgdGhlIHN0cmluZy4gQ2FzZWZvbGRlZCBzdHJpbmdzIG1heSBiZVxuICAgdXNlZCBmb3IgY2FzZWxlc3MgbWF0Y2hpbmcuXG5cbiAgIENhc2Vmb2xkaW5nIGlzIHNpbWlsYXIgdG8gbG93ZXJjYXNpbmcgYnV0IG1vcmUgYWdncmVzc2l2ZSBiZWNhdXNlXG4gICBpdCBpcyBpbnRlbmRlZCB0byByZW1vdmUgYWxsIGNhc2UgZGlzdGluY3Rpb25zIGluIGEgc3RyaW5nLiBGb3JcbiAgIGV4YW1wbGUsIHRoZSBHZXJtYW4gbG93ZXJjYXNlIGxldHRlciAiXCdceGRmXCciIGlzIGVxdWl2YWxlbnQgdG8gIiJzcyIiLlxuICAgU2luY2UgaXQgaXMgYWxyZWFkeSBsb3dlcmNhc2UsICJsb3dlcigpIiB3b3VsZCBkbyBub3RoaW5nIHRvICJcJ1x4ZGZcJyI7XG4gICAiY2FzZWZvbGQoKSIgY29udmVydHMgaXQgdG8gIiJzcyIiLlxuXG4gICBUaGUgY2FzZWZvbGRpbmcgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlXG4gICBVbmljb2RlIFN0YW5kYXJkLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjMuXG5cbnN0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gUGFkZGluZyBpcyBkb25lXG4gICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUkgc3BhY2UpLiBUaGVcbiAgIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0b1xuICAgImxlbihzKSIuXG5cbnN0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpzdWIqXG4gICBpbiB0aGUgcmFuZ2UgWypzdGFydCosICplbmQqXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZFxuICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXG5zdHIuZW5jb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcblxuICAgUmV0dXJuIGFuIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGFzIGEgYnl0ZXMgb2JqZWN0LiBEZWZhdWx0XG4gICBlbmNvZGluZyBpcyAiXCd1dGYtOFwnIi4gKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudFxuICAgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBUaGUgZGVmYXVsdCBmb3IgKmVycm9ycyogaXMgIlwnc3RyaWN0XCciLFxuICAgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhICJVbmljb2RlRXJyb3IiLiBPdGhlciBwb3NzaWJsZVxuICAgdmFsdWVzIGFyZSAiXCdpZ25vcmVcJyIsICJcJ3JlcGxhY2VcJyIsICJcJ3htbGNoYXJyZWZyZXBsYWNlXCciLFxuICAgIlwnYmFja3NsYXNocmVwbGFjZVwnIiBhbmQgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB2aWFcbiAgICJjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKSIsIHNlZSBzZWN0aW9uICpFcnJvciBIYW5kbGVycyouIEZvciBhIGxpc3RcbiAgIG9mIHBvc3NpYmxlIGVuY29kaW5ncywgc2VlIHNlY3Rpb24gKlN0YW5kYXJkIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFkZGVkLlxuXG5zdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuICJUcnVlIiBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkICpzdWZmaXgqLFxuICAgb3RoZXJ3aXNlIHJldHVybiAiRmFsc2UiLiAgKnN1ZmZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBzdWZmaXhlc1xuICAgdG8gbG9vayBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3QgYmVnaW5uaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgYXQgdGhhdCBwb3NpdGlvbi5cblxuc3RyLmV4cGFuZHRhYnModGFic2l6ZT04KVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgYWxsIHRhYiBjaGFyYWN0ZXJzIGFyZSByZXBsYWNlZFxuICAgYnkgb25lIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uIGFuZCB0aGVcbiAgIGdpdmVuIHRhYiBzaXplLiAgVGFiIHBvc2l0aW9ucyBvY2N1ciBldmVyeSAqdGFic2l6ZSogY2hhcmFjdGVyc1xuICAgKGRlZmF1bHQgaXMgOCwgZ2l2aW5nIHRhYiBwb3NpdGlvbnMgYXQgY29sdW1ucyAwLCA4LCAxNiBhbmQgc28gb24pLlxuICAgVG8gZXhwYW5kIHRoZSBzdHJpbmcsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBzZXQgdG8gemVybyBhbmQgdGhlXG4gICBzdHJpbmcgaXMgZXhhbWluZWQgY2hhcmFjdGVyIGJ5IGNoYXJhY3Rlci4gIElmIHRoZSBjaGFyYWN0ZXIgaXMgYVxuICAgdGFiICgiXFx0IiksIG9uZSBvciBtb3JlIHNwYWNlIGNoYXJhY3RlcnMgYXJlIGluc2VydGVkIGluIHRoZSByZXN1bHRcbiAgIHVudGlsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBlcXVhbCB0byB0aGUgbmV4dCB0YWIgcG9zaXRpb24uIChUaGVcbiAgIHRhYiBjaGFyYWN0ZXIgaXRzZWxmIGlzIG5vdCBjb3BpZWQuKSAgSWYgdGhlIGNoYXJhY3RlciBpcyBhIG5ld2xpbmVcbiAgICgiXFxuIikgb3IgcmV0dXJuICgiXFxyIiksIGl0IGlzIGNvcGllZCBhbmQgdGhlIGN1cnJlbnQgY29sdW1uIGlzXG4gICByZXNldCB0byB6ZXJvLiAgQW55IG90aGVyIGNoYXJhY3RlciBpcyBjb3BpZWQgdW5jaGFuZ2VkIGFuZCB0aGVcbiAgIGN1cnJlbnQgY29sdW1uIGlzIGluY3JlbWVudGVkIGJ5IG9uZSByZWdhcmRsZXNzIG9mIGhvdyB0aGVcbiAgIGNoYXJhY3RlciBpcyByZXByZXNlbnRlZCB3aGVuIHByaW50ZWQuXG5cbiAgID4+PiBcJzAxXFx0MDEyXFx0MDEyM1xcdDAxMjM0XCcuZXhwYW5kdGFicygpXG4gICBcJzAxICAgICAgMDEyICAgICAwMTIzICAgIDAxMjM0XCdcbiAgID4+PiBcJzAxXFx0MDEyXFx0MDEyM1xcdDAxMjM0XCcuZXhwYW5kdGFicyg0KVxuICAgXCcwMSAgMDEyIDAxMjMgICAgMDEyMzRcJ1xuXG5zdHIuZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgaW4gdGhlIHNsaWNlICJzW3N0YXJ0OmVuZF0iLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gIi0xIiBpZiAqc3ViKiBpcyBub3QgZm91bmQuXG5cbiAgIE5vdGU6IFRoZSAiZmluZCgpIiBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UgbmVlZCB0byBrbm93XG4gICAgIHRoZSBwb3NpdGlvbiBvZiAqc3ViKi4gIFRvIGNoZWNrIGlmICpzdWIqIGlzIGEgc3Vic3RyaW5nIG9yIG5vdCxcbiAgICAgdXNlIHRoZSAiaW4iIG9wZXJhdG9yOlxuXG4gICAgICAgID4+PiBcJ1B5XCcgaW4gXCdQeXRob25cJ1xuICAgICAgICBUcnVlXG5cbnN0ci5mb3JtYXQoKmFyZ3MsICoqa3dhcmdzKVxuXG4gICBQZXJmb3JtIGEgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0aW9uLiAgVGhlIHN0cmluZyBvbiB3aGljaCB0aGlzXG4gICBtZXRob2QgaXMgY2FsbGVkIGNhbiBjb250YWluIGxpdGVyYWwgdGV4dCBvciByZXBsYWNlbWVudCBmaWVsZHNcbiAgIGRlbGltaXRlZCBieSBicmFjZXMgInt9Ii4gIEVhY2ggcmVwbGFjZW1lbnQgZmllbGQgY29udGFpbnMgZWl0aGVyXG4gICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lIG9mIGFcbiAgIGtleXdvcmQgYXJndW1lbnQuICBSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGVhY2hcbiAgIHJlcGxhY2VtZW50IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG5cbiAgID4+PiAiVGhlIHN1bSBvZiAxICsgMiBpcyB7MH0iLmZvcm1hdCgxKzIpXG4gICBcJ1RoZSBzdW0gb2YgMSArIDIgaXMgM1wnXG5cbiAgIFNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSB2YXJpb3VzXG4gICBmb3JtYXR0aW5nIG9wdGlvbnMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGluIGZvcm1hdCBzdHJpbmdzLlxuXG5zdHIuZm9ybWF0X21hcChtYXBwaW5nKVxuXG4gICBTaW1pbGFyIHRvICJzdHIuZm9ybWF0KCoqbWFwcGluZykiLCBleGNlcHQgdGhhdCAibWFwcGluZyIgaXMgdXNlZFxuICAgZGlyZWN0bHkgYW5kIG5vdCBjb3BpZWQgdG8gYSAiZGljdCIuICBUaGlzIGlzIHVzZWZ1bCBpZiBmb3IgZXhhbXBsZVxuICAgIm1hcHBpbmciIGlzIGEgZGljdCBzdWJjbGFzczpcblxuICAgPj4+IGNsYXNzIERlZmF1bHQoZGljdCk6XG4gICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuICAgLi4uXG4gICA+Pj4gXCd7bmFtZX0gd2FzIGJvcm4gaW4ge2NvdW50cnl9XCcuZm9ybWF0X21hcChEZWZhdWx0KG5hbWU9XCdHdWlkb1wnKSlcbiAgIFwnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeVwnXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgImZpbmQoKSIsIGJ1dCByYWlzZSAiVmFsdWVFcnJvciIgd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdFxuICAgZm91bmQuXG5cbnN0ci5pc2FsbnVtKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFudW1lcmljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQSBjaGFyYWN0ZXIgImMiXG4gICBpcyBhbHBoYW51bWVyaWMgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgcmV0dXJucyAiVHJ1ZSI6XG4gICAiYy5pc2FscGhhKCkiLCAiYy5pc2RlY2ltYWwoKSIsICJjLmlzZGlnaXQoKSIsIG9yICJjLmlzbnVtZXJpYygpIi5cblxuc3RyLmlzYWxwaGEoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYWJldGljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQWxwaGFiZXRpY1xuICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuICAgZGF0YWJhc2UgYXMgIkxldHRlciIsIGkuZS4sIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSBwcm9wZXJ0eVxuICAgYmVpbmcgb25lIG9mICJMbSIsICJMdCIsICJMdSIsICJMbCIsIG9yICJMbyIuICBOb3RlIHRoYXQgdGhpcyBpc1xuICAgZGlmZmVyZW50IGZyb20gdGhlICJBbHBoYWJldGljIiBwcm9wZXJ0eSBkZWZpbmVkIGluIHRoZSBVbmljb2RlXG4gICBTdGFuZGFyZC5cblxuc3RyLmlzZGVjaW1hbCgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRlY2ltYWwgY2hhcmFjdGVyc1xuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gRGVjaW1hbFxuICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgZnJvbSBnZW5lcmFsIGNhdGVnb3J5ICJOZCIuIFRoaXMgY2F0ZWdvcnlcbiAgIGluY2x1ZGVzIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGNhbiBiZSB1c2VkIHRvXG4gICBmb3JtIGRlY2ltYWwtcmFkaXggbnVtYmVycywgZS5nLiBVKzA2NjAsIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPLlxuXG5zdHIuaXNkaWdpdCgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRpZ2l0cyBhbmQgdGhlcmUgaXNcbiAgIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIERpZ2l0cyBpbmNsdWRlIGRlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYW5kIGRpZ2l0cyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGluZywgc3VjaCBhcyB0aGVcbiAgIGNvbXBhdGliaWxpdHkgc3VwZXJzY3JpcHQgZGlnaXRzLiAgRm9ybWFsbHksIGEgZGlnaXQgaXMgYSBjaGFyYWN0ZXJcbiAgIHRoYXQgaGFzIHRoZSBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQgb3JcbiAgIE51bWVyaWNfVHlwZT1EZWNpbWFsLlxuXG5zdHIuaXNpZGVudGlmaWVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGlkZW50aWZpZXIgYWNjb3JkaW5nIHRvIHRoZVxuICAgbGFuZ3VhZ2UgZGVmaW5pdGlvbiwgc2VjdGlvbiAqSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKi5cblxuICAgVXNlICJrZXl3b3JkLmlza2V5d29yZCgpIiB0byB0ZXN0IGZvciByZXNlcnZlZCBpZGVudGlmaWVycyBzdWNoIGFzXG4gICAiZGVmIiBhbmQgImNsYXNzIi5cblxuc3RyLmlzbG93ZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgbG93ZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXNudW1lcmljKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgbnVtZXJpYyBjaGFyYWN0ZXJzLFxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gTnVtZXJpY1xuICAgY2hhcmFjdGVycyBpbmNsdWRlIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGhhdmVcbiAgIHRoZSBVbmljb2RlIG51bWVyaWMgdmFsdWUgcHJvcGVydHksIGUuZy4gVSsyMTU1LCBWVUxHQVIgRlJBQ1RJT05cbiAgIE9ORSBGSUZUSC4gIEZvcm1hbGx5LCBudW1lcmljIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggdGhlXG4gICBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQsIE51bWVyaWNfVHlwZT1EZWNpbWFsIG9yXG4gICBOdW1lcmljX1R5cGU9TnVtZXJpYy5cblxuc3RyLmlzcHJpbnRhYmxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgcHJpbnRhYmxlIG9yIHRoZVxuICAgc3RyaW5nIGlzIGVtcHR5LCBmYWxzZSBvdGhlcndpc2UuICBOb25wcmludGFibGUgY2hhcmFjdGVycyBhcmVcbiAgIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UgYXNcbiAgICJPdGhlciIgb3IgIlNlcGFyYXRvciIsIGV4Y2VwdGluZyB0aGUgQVNDSUkgc3BhY2UgKDB4MjApIHdoaWNoIGlzXG4gICBjb25zaWRlcmVkIHByaW50YWJsZS4gIChOb3RlIHRoYXQgcHJpbnRhYmxlIGNoYXJhY3RlcnMgaW4gdGhpc1xuICAgY29udGV4dCBhcmUgdGhvc2Ugd2hpY2ggc2hvdWxkIG5vdCBiZSBlc2NhcGVkIHdoZW4gInJlcHIoKSIgaXNcbiAgIGludm9rZWQgb24gYSBzdHJpbmcuICBJdCBoYXMgbm8gYmVhcmluZyBvbiB0aGUgaGFuZGxpbmcgb2Ygc3RyaW5nc1xuICAgd3JpdHRlbiB0byAic3lzLnN0ZG91dCIgb3IgInN5cy5zdGRlcnIiLilcblxuc3RyLmlzc3BhY2UoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBhcmUgb25seSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZ1xuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIFdoaXRlc3BhY2VcbiAgIGNoYXJhY3RlcnMgIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiT3RoZXIiIG9yICJTZXBhcmF0b3IiIGFuZCB0aG9zZSB3aXRoIGJpZGlyZWN0aW9uYWxcbiAgIHByb3BlcnR5IGJlaW5nIG9uZSBvZiAiV1MiLCAiQiIsIG9yICJTIi5cblxuc3RyLmlzdGl0bGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdGl0bGVjYXNlZCBzdHJpbmcgYW5kIHRoZXJlIGlzIGF0XG4gICBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmb3IgZXhhbXBsZSB1cHBlcmNhc2UgY2hhcmFjdGVycyBtYXkgb25seVxuICAgZm9sbG93IHVuY2FzZWQgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgb25seSBjYXNlZCBvbmVzLlxuICAgUmV0dXJuIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzdXBwZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgdXBwZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuam9pbihpdGVyYWJsZSlcblxuICAgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmdzIGluIHRoZVxuICAgKml0ZXJhYmxlKiAqaXRlcmFibGUqLiAgQSAiVHlwZUVycm9yIiB3aWxsIGJlIHJhaXNlZCBpZiB0aGVyZSBhcmVcbiAgIGFueSBub24tc3RyaW5nIHZhbHVlcyBpbiAqaXRlcmFibGUqLCBpbmNsdWRpbmcgImJ5dGVzIiBvYmplY3RzLlxuICAgVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgbWV0aG9kLlxuXG5zdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhbiBBU0NJSVxuICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byAibGVuKHMpIi5cblxuc3RyLmxvd2VyKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzIFs0XVxuICAgY29udmVydGVkIHRvIGxvd2VyY2FzZS5cblxuICAgVGhlIGxvd2VyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlXG4gICBVbmljb2RlIFN0YW5kYXJkLlxuXG5zdHIubHN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGxlYWRpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgcHJlZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICAgICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLmxzdHJpcCgpXG4gICAgICBcJ3NwYWNpb3VzICAgXCdcbiAgICAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLmxzdHJpcChcJ2Ntb3d6LlwnKVxuICAgICAgXCdleGFtcGxlLmNvbVwnXG5cbnN0YXRpYyBzdHIubWFrZXRyYW5zKHhbLCB5Wywgel1dKVxuXG4gICBUaGlzIHN0YXRpYyBtZXRob2QgcmV0dXJucyBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSBmb3JcbiAgICJzdHIudHJhbnNsYXRlKCkiLlxuXG4gICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgbWFwcGluZ1xuICAgVW5pY29kZSBvcmRpbmFscyAoaW50ZWdlcnMpIG9yIGNoYXJhY3RlcnMgKHN0cmluZ3Mgb2YgbGVuZ3RoIDEpIHRvXG4gICBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIChvZiBhcmJpdHJhcnkgbGVuZ3Rocykgb3IgTm9uZS5cbiAgIENoYXJhY3RlciBrZXlzIHdpbGwgdGhlbiBiZSBjb252ZXJ0ZWQgdG8gb3JkaW5hbHMuXG5cbiAgIElmIHRoZXJlIGFyZSB0d28gYXJndW1lbnRzLCB0aGV5IG11c3QgYmUgc3RyaW5ncyBvZiBlcXVhbCBsZW5ndGgsXG4gICBhbmQgaW4gdGhlIHJlc3VsdGluZyBkaWN0aW9uYXJ5LCBlYWNoIGNoYXJhY3RlciBpbiB4IHdpbGwgYmUgbWFwcGVkXG4gICB0byB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluIHkuICBJZiB0aGVyZSBpcyBhIHRoaXJkXG4gICBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIHN0cmluZywgd2hvc2UgY2hhcmFjdGVycyB3aWxsIGJlIG1hcHBlZCB0b1xuICAgTm9uZSBpbiB0aGUgcmVzdWx0LlxuXG5zdHIucGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiBhXG4gICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgc3RyaW5nIGl0c2VsZiwgZm9sbG93ZWQgYnlcbiAgIHR3byBlbXB0eSBzdHJpbmdzLlxuXG5zdHIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAqb2xkKlxuICAgcmVwbGFjZWQgYnkgKm5ldyouICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmNvdW50KiBpcyBnaXZlbiwgb25seVxuICAgdGhlIGZpcnN0ICpjb3VudCogb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLlxuXG5zdHIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCB3aXRoaW4gInNbc3RhcnQ6ZW5kXSIuXG4gICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlXG4gICBub3RhdGlvbi4gIFJldHVybiAiLTEiIG9uIGZhaWx1cmUuXG5cbnN0ci5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgTGlrZSAicmZpbmQoKSIgYnV0IHJhaXNlcyAiVmFsdWVFcnJvciIgd2hlbiB0aGUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBub3QgZm91bmQuXG5cbnN0ci5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIHRoZSBzdHJpbmcgcmlnaHQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhbiBBU0NJSVxuICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byAibGVuKHMpIi5cblxuc3RyLnJwYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IHN0cmluZ3MsIGZvbGxvd2VkIGJ5XG4gICB0aGUgc3RyaW5nIGl0c2VsZi5cblxuc3RyLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0c1xuICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvclxuICAgIk5vbmUiLCBhbnkgd2hpdGVzcGFjZSBzdHJpbmcgaXMgYSBzZXBhcmF0b3IuICBFeGNlcHQgZm9yIHNwbGl0dGluZ1xuICAgZnJvbSB0aGUgcmlnaHQsICJyc3BsaXQoKSIgYmVoYXZlcyBsaWtlICJzcGxpdCgpIiB3aGljaCBpc1xuICAgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cblxuc3RyLnJzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0cmFpbGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG9cbiAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSBzdWZmaXg7IHJhdGhlcixcbiAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgICAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcucnN0cmlwKClcbiAgICAgIFwnICAgc3BhY2lvdXNcJ1xuICAgICAgPj4+IFwnbWlzc2lzc2lwcGlcJy5yc3RyaXAoXCdpcHpcJylcbiAgICAgIFwnbWlzc2lzc1wnXG5cbnN0ci5zcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KlxuICAgc3BsaXRzIGFyZSBkb25lICh0aHVzLCB0aGUgbGlzdCB3aWxsIGhhdmUgYXQgbW9zdCAibWF4c3BsaXQrMSJcbiAgIGVsZW1lbnRzKS4gIElmICptYXhzcGxpdCogaXMgbm90IHNwZWNpZmllZCBvciAiLTEiLCB0aGVuIHRoZXJlIGlzXG4gICBubyBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHNwbGl0cyAoYWxsIHBvc3NpYmxlIHNwbGl0cyBhcmUgbWFkZSkuXG5cbiAgIElmICpzZXAqIGlzIGdpdmVuLCBjb25zZWN1dGl2ZSBkZWxpbWl0ZXJzIGFyZSBub3QgZ3JvdXBlZCB0b2dldGhlclxuICAgYW5kIGFyZSBkZWVtZWQgdG8gZGVsaW1pdCBlbXB0eSBzdHJpbmdzIChmb3IgZXhhbXBsZSxcbiAgICJcJzEsLDJcJy5zcGxpdChcJyxcJykiIHJldHVybnMgIltcJzFcJywgXCdcJywgXCcyXCddIikuICBUaGUgKnNlcCogYXJndW1lbnRcbiAgIG1heSBjb25zaXN0IG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLFxuICAgIlwnMTw+Mjw+M1wnLnNwbGl0KFwnPD5cJykiIHJldHVybnMgIltcJzFcJywgXCcyXCcsIFwnM1wnXSIpLiBTcGxpdHRpbmcgYW5cbiAgIGVtcHR5IHN0cmluZyB3aXRoIGEgc3BlY2lmaWVkIHNlcGFyYXRvciByZXR1cm5zICJbXCdcJ10iLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IFwnMSwyLDNcJy5zcGxpdChcJyxcJylcbiAgICAgIFtcJzFcJywgXCcyXCcsIFwnM1wnXVxuICAgICAgPj4+IFwnMSwyLDNcJy5zcGxpdChcJyxcJywgbWF4c3BsaXQ9MSlcbiAgICAgIFtcJzFcJywgXCcyLDNcJ11cbiAgICAgID4+PiBcJzEsMiwsMyxcJy5zcGxpdChcJyxcJylcbiAgICAgIFtcJzFcJywgXCcyXCcsIFwnXCcsIFwnM1wnLCBcJ1wnXVxuXG4gICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzICJOb25lIiwgYSBkaWZmZXJlbnQgc3BsaXR0aW5nXG4gICBhbGdvcml0aG0gaXMgYXBwbGllZDogcnVucyBvZiBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlIGFyZSByZWdhcmRlZFxuICAgYXMgYSBzaW5nbGUgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gbm8gZW1wdHkgc3RyaW5nc1xuICAgYXQgdGhlIHN0YXJ0IG9yIGVuZCBpZiB0aGUgc3RyaW5nIGhhcyBsZWFkaW5nIG9yIHRyYWlsaW5nXG4gICB3aGl0ZXNwYWNlLiAgQ29uc2VxdWVudGx5LCBzcGxpdHRpbmcgYW4gZW1wdHkgc3RyaW5nIG9yIGEgc3RyaW5nXG4gICBjb25zaXN0aW5nIG9mIGp1c3Qgd2hpdGVzcGFjZSB3aXRoIGEgIk5vbmUiIHNlcGFyYXRvciByZXR1cm5zICJbXSIuXG5cbiAgIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gXCcxIDIgM1wnLnNwbGl0KClcbiAgICAgIFtcJzFcJywgXCcyXCcsIFwnM1wnXVxuICAgICAgPj4+IFwnMSAyIDNcJy5zcGxpdChtYXhzcGxpdD0xKVxuICAgICAgW1wnMVwnLCBcJzIgM1wnXVxuICAgICAgPj4+IFwnICAgMSAgIDIgICAzICAgXCcuc3BsaXQoKVxuICAgICAgW1wnMVwnLCBcJzJcJywgXCczXCddXG5cbnN0ci5zcGxpdGxpbmVzKFtrZWVwZW5kc10pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBzdHJpbmcsIGJyZWFraW5nIGF0IGxpbmVcbiAgIGJvdW5kYXJpZXMuICBMaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbGlzdFxuICAgdW5sZXNzICprZWVwZW5kcyogaXMgZ2l2ZW4gYW5kIHRydWUuXG5cbiAgIFRoaXMgbWV0aG9kIHNwbGl0cyBvbiB0aGUgZm9sbG93aW5nIGxpbmUgYm91bmRhcmllcy4gIEluXG4gICBwYXJ0aWN1bGFyLCB0aGUgYm91bmRhcmllcyBhcmUgYSBzdXBlcnNldCBvZiAqdW5pdmVyc2FsIG5ld2xpbmVzKi5cblxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgUmVwcmVzZW50YXRpb24gICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXFxuIiAgICAgICAgICAgICAgICAgICAgfCBMaW5lIEZlZWQgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFxyIiAgICAgICAgICAgICAgICAgICAgfCBDYXJyaWFnZSBSZXR1cm4gICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFxyXFxuIiAgICAgICAgICAgICAgICAgIHwgQ2FycmlhZ2UgUmV0dXJuICsgTGluZSBGZWVkICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcdiIgb3IgIlxceDBiIiAgICAgICAgICB8IExpbmUgVGFidWxhdGlvbiAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXGYiIG9yICJcXHgwYyIgICAgICAgICAgfCBGb3JtIEZlZWQgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx4MWMiICAgICAgICAgICAgICAgICAgfCBGaWxlIFNlcGFyYXRvciAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx4MWQiICAgICAgICAgICAgICAgICAgfCBHcm91cCBTZXBhcmF0b3IgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx4MWUiICAgICAgICAgICAgICAgICAgfCBSZWNvcmQgU2VwYXJhdG9yICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx4ODUiICAgICAgICAgICAgICAgICAgfCBOZXh0IExpbmUgKEMxIENvbnRyb2wgQ29kZSkgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx1MjAyOCIgICAgICAgICAgICAgICAgfCBMaW5lIFNlcGFyYXRvciAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx1MjAyOSIgICAgICAgICAgICAgICAgfCBQYXJhZ3JhcGggU2VwYXJhdG9yICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiAiXFx2IiBhbmQgIlxcZiIgYWRkZWQgdG8gbGlzdCBvZiBsaW5lXG4gICBib3VuZGFyaWVzLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IFwnYWIgY1xcblxcbmRlIGZnXFxya2xcXHJcXG5cJy5zcGxpdGxpbmVzKClcbiAgICAgIFtcJ2FiIGNcJywgXCdcJywgXCdkZSBmZ1wnLCBcJ2tsXCddXG4gICAgICA+Pj4gXCdhYiBjXFxuXFxuZGUgZmdcXHJrbFxcclxcblwnLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSlcbiAgICAgIFtcJ2FiIGNcXG5cJywgXCdcXG5cJywgXCdkZSBmZ1xcclwnLCBcJ2tsXFxyXFxuXCddXG5cbiAgIFVubGlrZSAic3BsaXQoKSIgd2hlbiBhIGRlbGltaXRlciBzdHJpbmcgKnNlcCogaXMgZ2l2ZW4sIHRoaXNcbiAgIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IGxpc3QgZm9yIHRoZSBlbXB0eSBzdHJpbmcsIGFuZCBhIHRlcm1pbmFsXG4gICBsaW5lIGJyZWFrIGRvZXMgbm90IHJlc3VsdCBpbiBhbiBleHRyYSBsaW5lOlxuXG4gICAgICA+Pj4gIiIuc3BsaXRsaW5lcygpXG4gICAgICBbXVxuICAgICAgPj4+ICJPbmUgbGluZVxcbiIuc3BsaXRsaW5lcygpXG4gICAgICBbXCdPbmUgbGluZVwnXVxuXG4gICBGb3IgY29tcGFyaXNvbiwgInNwbGl0KFwnXFxuXCcpIiBnaXZlczpcblxuICAgICAgPj4+IFwnXCcuc3BsaXQoXCdcXG5cJylcbiAgICAgIFtcJ1wnXVxuICAgICAgPj4+IFwnVHdvIGxpbmVzXFxuXCcuc3BsaXQoXCdcXG5cJylcbiAgICAgIFtcJ1R3byBsaW5lc1wnLCBcJ1wnXVxuXG5zdHIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gIlRydWUiIGlmIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgKnByZWZpeCosIG90aGVyd2lzZSByZXR1cm5cbiAgICJGYWxzZSIuICpwcmVmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgcHJlZml4ZXMgdG8gbG9vayBmb3IuXG4gICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3Qgc3RyaW5nIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuICAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgc3RyaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cbnN0ci5zdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmdcbiAgIGNoYXJhY3RlcnMgcmVtb3ZlZC4gVGhlICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGVcbiAgIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlIHJlbW92ZWQuIElmIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGUgKmNoYXJzKlxuICAgYXJndW1lbnQgZGVmYXVsdHMgdG8gcmVtb3Zpbmcgd2hpdGVzcGFjZS4gVGhlICpjaGFycyogYXJndW1lbnQgaXNcbiAgIG5vdCBhIHByZWZpeCBvciBzdWZmaXg7IHJhdGhlciwgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZVxuICAgc3RyaXBwZWQ6XG5cbiAgICAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcuc3RyaXAoKVxuICAgICAgXCdzcGFjaW91c1wnXG4gICAgICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5zdHJpcChcJ2Ntb3d6LlwnKVxuICAgICAgXCdleGFtcGxlXCdcblxuc3RyLnN3YXBjYXNlKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdXBwZXJjYXNlIGNoYXJhY3RlcnMgY29udmVydGVkIHRvXG4gICBsb3dlcmNhc2UgYW5kIHZpY2UgdmVyc2EuIE5vdGUgdGhhdCBpdCBpcyBub3QgbmVjZXNzYXJpbHkgdHJ1ZSB0aGF0XG4gICAicy5zd2FwY2FzZSgpLnN3YXBjYXNlKCkgPT0gcyIuXG5cbnN0ci50aXRsZSgpXG5cbiAgIFJldHVybiBhIHRpdGxlY2FzZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZXJlIHdvcmRzIHN0YXJ0IHdpdGggYW5cbiAgIHVwcGVyY2FzZSBjaGFyYWN0ZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbG93ZXJjYXNlLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IFwnSGVsbG8gd29ybGRcJy50aXRsZSgpXG4gICAgICBcJ0hlbGxvIFdvcmxkXCdcblxuICAgVGhlIGFsZ29yaXRobSB1c2VzIGEgc2ltcGxlIGxhbmd1YWdlLWluZGVwZW5kZW50IGRlZmluaXRpb24gb2YgYVxuICAgd29yZCBhcyBncm91cHMgb2YgY29uc2VjdXRpdmUgbGV0dGVycy4gIFRoZSBkZWZpbml0aW9uIHdvcmtzIGluXG4gICBtYW55IGNvbnRleHRzIGJ1dCBpdCBtZWFucyB0aGF0IGFwb3N0cm9waGVzIGluIGNvbnRyYWN0aW9ucyBhbmRcbiAgIHBvc3Nlc3NpdmVzIGZvcm0gd29yZCBib3VuZGFyaWVzLCB3aGljaCBtYXkgbm90IGJlIHRoZSBkZXNpcmVkXG4gICByZXN1bHQ6XG5cbiAgICAgID4+PiAidGhleVwncmUgYmlsbFwncyBmcmllbmRzIGZyb20gdGhlIFVLIi50aXRsZSgpXG4gICAgICAiVGhleVwnUmUgQmlsbFwnUyBGcmllbmRzIEZyb20gVGhlIFVrIlxuXG4gICBBIHdvcmthcm91bmQgZm9yIGFwb3N0cm9waGVzIGNhbiBiZSBjb25zdHJ1Y3RlZCB1c2luZyByZWd1bGFyXG4gICBleHByZXNzaW9uczpcblxuICAgICAgPj4+IGltcG9ydCByZVxuICAgICAgPj4+IGRlZiB0aXRsZWNhc2Uocyk6XG4gICAgICAuLi4gICAgIHJldHVybiByZS5zdWIociJbQS1aYS16XSsoXCdbQS1aYS16XSspPyIsXG4gICAgICAuLi4gICAgICAgICAgICAgICAgICAgbGFtYmRhIG1vOiBtby5ncm91cCgwKVswXS51cHBlcigpICtcbiAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vLmdyb3VwKDApWzE6XS5sb3dlcigpLFxuICAgICAgLi4uICAgICAgICAgICAgICAgICAgIHMpXG4gICAgICAuLi5cbiAgICAgID4+PiB0aXRsZWNhc2UoInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcy4iKVxuICAgICAgIlRoZXlcJ3JlIEJpbGxcJ3MgRnJpZW5kcy4iXG5cbnN0ci50cmFuc2xhdGUodGFibGUpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyBpbiB3aGljaCBlYWNoIGNoYXJhY3RlciBoYXMgYmVlbiBtYXBwZWRcbiAgIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLiAgVGhlIHRhYmxlIG11c3QgYmUgYW4gb2JqZWN0XG4gICB0aGF0IGltcGxlbWVudHMgaW5kZXhpbmcgdmlhICJfX2dldGl0ZW1fXygpIiwgdHlwaWNhbGx5IGEgKm1hcHBpbmcqXG4gICBvciAqc2VxdWVuY2UqLiAgV2hlbiBpbmRleGVkIGJ5IGEgVW5pY29kZSBvcmRpbmFsIChhbiBpbnRlZ2VyKSwgdGhlXG4gICB0YWJsZSBvYmplY3QgY2FuIGRvIGFueSBvZiB0aGUgZm9sbG93aW5nOiByZXR1cm4gYSBVbmljb2RlIG9yZGluYWxcbiAgIG9yIGEgc3RyaW5nLCB0byBtYXAgdGhlIGNoYXJhY3RlciB0byBvbmUgb3IgbW9yZSBvdGhlciBjaGFyYWN0ZXJzO1xuICAgcmV0dXJuICJOb25lIiwgdG8gZGVsZXRlIHRoZSBjaGFyYWN0ZXIgZnJvbSB0aGUgcmV0dXJuIHN0cmluZzsgb3JcbiAgIHJhaXNlIGEgIkxvb2t1cEVycm9yIiBleGNlcHRpb24sIHRvIG1hcCB0aGUgY2hhcmFjdGVyIHRvIGl0c2VsZi5cblxuICAgWW91IGNhbiB1c2UgInN0ci5tYWtldHJhbnMoKSIgdG8gY3JlYXRlIGEgdHJhbnNsYXRpb24gbWFwIGZyb21cbiAgIGNoYXJhY3Rlci10by1jaGFyYWN0ZXIgbWFwcGluZ3MgaW4gZGlmZmVyZW50IGZvcm1hdHMuXG5cbiAgIFNlZSBhbHNvIHRoZSAiY29kZWNzIiBtb2R1bGUgZm9yIGEgbW9yZSBmbGV4aWJsZSBhcHByb2FjaCB0byBjdXN0b21cbiAgIGNoYXJhY3RlciBtYXBwaW5ncy5cblxuc3RyLnVwcGVyKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzIFs0XVxuICAgY29udmVydGVkIHRvIHVwcGVyY2FzZS4gIE5vdGUgdGhhdCAic3RyLnVwcGVyKCkuaXN1cHBlcigpIiBtaWdodCBiZVxuICAgIkZhbHNlIiBpZiAicyIgY29udGFpbnMgdW5jYXNlZCBjaGFyYWN0ZXJzIG9yIGlmIHRoZSBVbmljb2RlXG4gICBjYXRlZ29yeSBvZiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlcihzKSBpcyBub3QgIkx1IiAoTGV0dGVyLFxuICAgdXBwZXJjYXNlKSwgYnV0IGUuZy4gIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG4gICBUaGUgdXBwZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbnN0ci56ZmlsbCh3aWR0aClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggQVNDSUkgIlwnMFwnIiBkaWdpdHMgdG9cbiAgIG1ha2UgYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIEEgbGVhZGluZyBzaWduIHByZWZpeFxuICAgKCJcJytcJyIvIlwnLVwnIikgaXMgaGFuZGxlZCBieSBpbnNlcnRpbmcgdGhlIHBhZGRpbmcgKmFmdGVyKiB0aGUgc2lnblxuICAgY2hhcmFjdGVyIHJhdGhlciB0aGFuIGJlZm9yZS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZlxuICAgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gImxlbihzKSIuXG5cbiAgIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gIjQyIi56ZmlsbCg1KVxuICAgICAgXCcwMDA0MlwnXG4gICAgICA+Pj4gIi00MiIuemZpbGwoNSlcbiAgICAgIFwnLTAwNDJcJ1xuJywKKyAnc3BlY2lhbG5hbWVzJzogdSdcblNwZWNpYWwgbWV0aG9kIG5hbWVzXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BIGNsYXNzIGNhbiBpbXBsZW1lbnQgY2VydGFpbiBvcGVyYXRpb25zIHRoYXQgYXJlIGludm9rZWQgYnkgc3BlY2lhbFxuc3ludGF4IChzdWNoIGFzIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvciBzdWJzY3JpcHRpbmcgYW5kIHNsaWNpbmcpIGJ5XG5kZWZpbmluZyBtZXRob2RzIHdpdGggc3BlY2lhbCBuYW1lcy4gVGhpcyBpcyBQeXRob25cJ3MgYXBwcm9hY2ggdG9cbipvcGVyYXRvciBvdmVybG9hZGluZyosIGFsbG93aW5nIGNsYXNzZXMgdG8gZGVmaW5lIHRoZWlyIG93biBiZWhhdmlvclxud2l0aCByZXNwZWN0IHRvIGxhbmd1YWdlIG9wZXJhdG9ycy4gIEZvciBpbnN0YW5jZSwgaWYgYSBjbGFzcyBkZWZpbmVzXG5hIG1ldGhvZCBuYW1lZCAiX19nZXRpdGVtX18oKSIsIGFuZCAieCIgaXMgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyxcbnRoZW4gInhbaV0iIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byAidHlwZSh4KS5fX2dldGl0ZW1fXyh4LCBpKSIuXG5FeGNlcHQgd2hlcmUgbWVudGlvbmVkLCBhdHRlbXB0cyB0byBleGVjdXRlIGFuIG9wZXJhdGlvbiByYWlzZSBhblxuZXhjZXB0aW9uIHdoZW4gbm8gYXBwcm9wcmlhdGUgbWV0aG9kIGlzIGRlZmluZWQgKHR5cGljYWxseVxuIkF0dHJpYnV0ZUVycm9yIiBvciAiVHlwZUVycm9yIikuXG5cbldoZW4gaW1wbGVtZW50aW5nIGEgY2xhc3MgdGhhdCBlbXVsYXRlcyBhbnkgYnVpbHQtaW4gdHlwZSwgaXQgaXNcbmltcG9ydGFudCB0aGF0IHRoZSBlbXVsYXRpb24gb25seSBiZSBpbXBsZW1lbnRlZCB0byB0aGUgZGVncmVlIHRoYXQgaXRcbm1ha2VzIHNlbnNlIGZvciB0aGUgb2JqZWN0IGJlaW5nIG1vZGVsbGVkLiAgRm9yIGV4YW1wbGUsIHNvbWVcbnNlcXVlbmNlcyBtYXkgd29yayB3ZWxsIHdpdGggcmV0cmlldmFsIG9mIGluZGl2aWR1YWwgZWxlbWVudHMsIGJ1dFxuZXh0cmFjdGluZyBhIHNsaWNlIG1heSBub3QgbWFrZSBzZW5zZS4gIChPbmUgZXhhbXBsZSBvZiB0aGlzIGlzIHRoZVxuIk5vZGVMaXN0IiBpbnRlcmZhY2UgaW4gdGhlIFczQ1wncyBEb2N1bWVudCBPYmplY3QgTW9kZWwuKVxuXG5cbkJhc2ljIGN1c3RvbWl6YXRpb25cbj09PT09PT09PT09PT09PT09PT1cblxub2JqZWN0Ll9fbmV3X18oY2xzWywgLi4uXSlcblxuICAgQ2FsbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBjbGFzcyAqY2xzKi4gICJfX25ld19fKCkiIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mICJfX25ld19fKCkiIHNob3VsZCBiZSB0aGUgbmV3IG9iamVjdCBpbnN0YW5jZSAodXN1YWxseSBhblxuICAgaW5zdGFuY2Ugb2YgKmNscyopLlxuXG4gICBUeXBpY2FsIGltcGxlbWVudGF0aW9ucyBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIGJ5XG4gICBpbnZva2luZyB0aGUgc3VwZXJjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgdXNpbmdcbiAgICJzdXBlcihjdXJyZW50Y2xhc3MsIGNscykuX19uZXdfXyhjbHNbLCAuLi5dKSIgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmICJfX25ld19fKCkiIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlIG5ld1xuICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIGJlIGludm9rZWQgbGlrZVxuICAgIl9faW5pdF9fKHNlbGZbLCAuLi5dKSIsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvICJfX25ld19fKCkiLlxuXG4gICBJZiAiX19uZXdfXygpIiBkb2VzIG5vdCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlIG5ld1xuICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICAiX19uZXdfXygpIiBpcyBpbnRlbmRlZCBtYWlubHkgdG8gYWxsb3cgc3ViY2xhc3NlcyBvZiBpbW11dGFibGVcbiAgIHR5cGVzIChsaWtlIGludCwgc3RyLCBvciB0dXBsZSkgdG8gY3VzdG9taXplIGluc3RhbmNlIGNyZWF0aW9uLiAgSXRcbiAgIGlzIGFsc28gY29tbW9ubHkgb3ZlcnJpZGRlbiBpbiBjdXN0b20gbWV0YWNsYXNzZXMgaW4gb3JkZXIgdG9cbiAgIGN1c3RvbWl6ZSBjbGFzcyBjcmVhdGlvbi5cblxub2JqZWN0Ll9faW5pdF9fKHNlbGZbLCAuLi5dKVxuXG4gICBDYWxsZWQgYWZ0ZXIgdGhlIGluc3RhbmNlIGhhcyBiZWVuIGNyZWF0ZWQgKGJ5ICJfX25ld19fKCkiKSwgYnV0XG4gICBiZWZvcmUgaXQgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIFRoZSBhcmd1bWVudHMgYXJlIHRob3NlXG4gICBwYXNzZWQgdG8gdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGV4cHJlc3Npb24uICBJZiBhIGJhc2UgY2xhc3MgaGFzIGFuXG4gICAiX19pbml0X18oKSIgbWV0aG9kLCB0aGUgZGVyaXZlZCBjbGFzc1wncyAiX19pbml0X18oKSIgbWV0aG9kLCBpZlxuICAgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mIHRoZVxuICAgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICAiQmFzZUNsYXNzLl9faW5pdF9fKHNlbGYsIFthcmdzLi4uXSkiLlxuXG4gICBCZWNhdXNlICJfX25ld19fKCkiIGFuZCAiX19pbml0X18oKSIgd29yayB0b2dldGhlciBpbiBjb25zdHJ1Y3RpbmdcbiAgIG9iamVjdHMgKCJfX25ld19fKCkiIHRvIGNyZWF0ZSBpdCwgYW5kICJfX2luaXRfXygpIiB0byBjdXN0b21pc2VcbiAgIGl0KSwgbm8gbm9uLSJOb25lIiB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQgYnkgIl9faW5pdF9fKCkiOyBkb2luZyBzb1xuICAgd2lsbCBjYXVzZSBhICJUeXBlRXJyb3IiIHRvIGJlIHJhaXNlZCBhdCBydW50aW1lLlxuXG5vYmplY3QuX19kZWxfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAgVGhpcyBpcyBhbHNvXG4gICBjYWxsZWQgYSBkZXN0cnVjdG9yLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhICJfX2RlbF9fKCkiIG1ldGhvZCwgdGhlXG4gICBkZXJpdmVkIGNsYXNzXCdzICJfX2RlbF9fKCkiIG1ldGhvZCwgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdFxuICAgdG8gZW5zdXJlIHByb3BlciBkZWxldGlvbiBvZiB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZS5cbiAgIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvciB0aGVcbiAgICJfX2RlbF9fKCkiIG1ldGhvZCB0byBwb3N0cG9uZSBkZXN0cnVjdGlvbiBvZiB0aGUgaW5zdGFuY2UgYnlcbiAgIGNyZWF0aW5nIGEgbmV3IHJlZmVyZW5jZSB0byBpdC4gIEl0IG1heSB0aGVuIGJlIGNhbGxlZCBhdCBhIGxhdGVyXG4gICB0aW1lIHdoZW4gdGhpcyBuZXcgcmVmZXJlbmNlIGlzIGRlbGV0ZWQuICBJdCBpcyBub3QgZ3VhcmFudGVlZCB0aGF0XG4gICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBjYWxsZWQgZm9yIG9iamVjdHMgdGhhdCBzdGlsbCBleGlzdCB3aGVuXG4gICB0aGUgaW50ZXJwcmV0ZXIgZXhpdHMuXG5cbiAgIE5vdGU6ICJkZWwgeCIgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCAieC5fX2RlbF9fKCkiIC0tLSB0aGUgZm9ybWVyXG4gICAgIGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgIngiIGJ5IG9uZSwgYW5kIHRoZSBsYXR0ZXIgaXNcbiAgICAgb25seSBjYWxsZWQgd2hlbiAieCJcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWUgY29tbW9uXG4gICAgIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuIG9iamVjdCBmcm9tXG4gICAgIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuIG9iamVjdHMgKGUuZy4sXG4gICAgIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoIHBhcmVudCBhbmRcbiAgICAgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSBvZlxuICAgICBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgInN5cy5leGNfaW5mbygpWzJdIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpOyBvciBhIHJlZmVyZW5jZVxuICAgICB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSB0aGF0IHJhaXNlZCBhbiB1bmhhbmRsZWRcbiAgICAgZXhjZXB0aW9uIGluIGludGVyYWN0aXZlIG1vZGUgKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4gICAgICJzeXMubGFzdF90cmFjZWJhY2siIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSkuICBUaGUgZmlyc3RcbiAgICAgc2l0dWF0aW9uIGNhbiBvbmx5IGJlIHJlbWVkaWVkIGJ5IGV4cGxpY2l0bHkgYnJlYWtpbmcgdGhlIGN5Y2xlcztcbiAgICAgdGhlIHNlY29uZCBjYW4gYmUgcmVzb2x2ZWQgYnkgZnJlZWluZyB0aGUgcmVmZXJlbmNlIHRvIHRoZVxuICAgICB0cmFjZWJhY2sgb2JqZWN0IHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWZ1bCwgYW5kIHRoZSB0aGlyZCBjYW5cbiAgICAgYmUgcmVzb2x2ZWQgYnkgc3RvcmluZyAiTm9uZSIgaW4gInN5cy5sYXN0X3RyYWNlYmFjayIuIENpcmN1bGFyXG4gICAgIHJlZmVyZW5jZXMgd2hpY2ggYXJlIGdhcmJhZ2UgYXJlIGRldGVjdGVkIGFuZCBjbGVhbmVkIHVwIHdoZW4gdGhlXG4gICAgIGN5Y2xpYyBnYXJiYWdlIGNvbGxlY3RvciBpcyBlbmFibGVkIChpdFwncyBvbiBieSBkZWZhdWx0KS4gUmVmZXJcbiAgICAgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSAiZ2MiIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvblxuICAgICBhYm91dCB0aGlzIHRvcGljLlxuXG4gICBXYXJuaW5nOiBEdWUgdG8gdGhlIHByZWNhcmlvdXMgY2lyY3Vtc3RhbmNlcyB1bmRlciB3aGljaFxuICAgICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBpbnZva2VkLCBleGNlcHRpb25zIHRoYXQgb2NjdXIgZHVyaW5nXG4gICAgIHRoZWlyIGV4ZWN1dGlvbiBhcmUgaWdub3JlZCwgYW5kIGEgd2FybmluZyBpcyBwcmludGVkIHRvXG4gICAgICJzeXMuc3RkZXJyIiBpbnN0ZWFkLiBBbHNvLCB3aGVuICJfX2RlbF9fKCkiIGlzIGludm9rZWQgaW5cbiAgICAgcmVzcG9uc2UgdG8gYSBtb2R1bGUgYmVpbmcgZGVsZXRlZCAoZS5nLiwgd2hlbiBleGVjdXRpb24gb2YgdGhlXG4gICAgIHByb2dyYW0gaXMgZG9uZSksIG90aGVyIGdsb2JhbHMgcmVmZXJlbmNlZCBieSB0aGUgIl9fZGVsX18oKSJcbiAgICAgbWV0aG9kIG1heSBhbHJlYWR5IGhhdmUgYmVlbiBkZWxldGVkIG9yIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nXG4gICAgIHRvcm4gZG93biAoZS5nLiB0aGUgaW1wb3J0IG1hY2hpbmVyeSBzaHV0dGluZyBkb3duKS4gIEZvciB0aGlzXG4gICAgIHJlYXNvbiwgIl9fZGVsX18oKSIgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkXG4gICAgIHRvIG1haW50YWluIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LFxuICAgICBQeXRob24gZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSAiX19kZWxfXygpIiBtZXRob2QgaXMgY2FsbGVkLlxuXG5vYmplY3QuX19yZXByX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSAicmVwcigpIiBidWlsdC1pbiBmdW5jdGlvbiB0byBjb21wdXRlIHRoZSAib2ZmaWNpYWwiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgSWYgYXQgYWxsIHBvc3NpYmxlLCB0aGlzXG4gICBzaG91bGQgbG9vayBsaWtlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gdGhhdCBjb3VsZCBiZSB1c2VkIHRvXG4gICByZWNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZ2l2ZW4gYW4gYXBwcm9wcmlhdGVcbiAgIGVudmlyb25tZW50KS4gIElmIHRoaXMgaXMgbm90IHBvc3NpYmxlLCBhIHN0cmluZyBvZiB0aGUgZm9ybVxuICAgIjwuLi5zb21lIHVzZWZ1bCBkZXNjcmlwdGlvbi4uLj4iIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyAiX19yZXByX18oKSIgYnV0XG4gICBub3QgIl9fc3RyX18oKSIsIHRoZW4gIl9fcmVwcl9fKCkiIGlzIGFsc28gdXNlZCB3aGVuIGFuICJpbmZvcm1hbCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpcyByZXF1aXJlZC5cblxuICAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgZGVidWdnaW5nLCBzbyBpdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGVcbiAgIHJlcHJlc2VudGF0aW9uIGlzIGluZm9ybWF0aW9uLXJpY2ggYW5kIHVuYW1iaWd1b3VzLlxuXG5vYmplY3QuX19zdHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgInN0cihvYmplY3QpIiBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiZm9ybWF0KCkiIGFuZFxuICAgInByaW50KCkiIHRvIGNvbXB1dGUgdGhlICJpbmZvcm1hbCIgb3IgbmljZWx5IHByaW50YWJsZSBzdHJpbmdcbiAgIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhICpzdHJpbmcqXG4gICBvYmplY3QuXG5cbiAgIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSAib2JqZWN0Ll9fcmVwcl9fKCkiIGluIHRoYXQgdGhlcmUgaXMgbm9cbiAgIGV4cGVjdGF0aW9uIHRoYXQgIl9fc3RyX18oKSIgcmV0dXJuIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb246IGFcbiAgIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlIHJlcHJlc2VudGF0aW9uIGNhbiBiZSB1c2VkLlxuXG4gICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGJ5IHRoZSBidWlsdC1pbiB0eXBlICJvYmplY3QiXG4gICBjYWxscyAib2JqZWN0Ll9fcmVwcl9fKCkiLlxuXG5vYmplY3QuX19ieXRlc19fKHNlbGYpXG5cbiAgIENhbGxlZCBieSAiYnl0ZXMoKSIgdG8gY29tcHV0ZSBhIGJ5dGUtc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuXG4gICBvYmplY3QuIFRoaXMgc2hvdWxkIHJldHVybiBhICJieXRlcyIgb2JqZWN0LlxuXG5vYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcblxuICAgQ2FsbGVkIGJ5IHRoZSAiZm9ybWF0KCkiIGJ1aWx0LWluIGZ1bmN0aW9uIChhbmQgYnkgZXh0ZW5zaW9uLCB0aGVcbiAgICJzdHIuZm9ybWF0KCkiIG1ldGhvZCBvZiBjbGFzcyAic3RyIikgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiBUaGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyBhXG4gICBzdHJpbmcgdGhhdCBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnNcbiAgIGRlc2lyZWQuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyB1cCB0b1xuICAgdGhlIHR5cGUgaW1wbGVtZW50aW5nICJfX2Zvcm1hdF9fKCkiLCBob3dldmVyIG1vc3QgY2xhc3NlcyB3aWxsXG4gICBlaXRoZXIgZGVsZWdhdGUgZm9ybWF0dGluZyB0byBvbmUgb2YgdGhlIGJ1aWx0LWluIHR5cGVzLCBvciB1c2UgYVxuICAgc2ltaWxhciBmb3JtYXR0aW5nIG9wdGlvbiBzeW50YXguXG5cbiAgIFNlZSAqRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSogZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlXG4gICBzdGFuZGFyZCBmb3JtYXR0aW5nIHN5bnRheC5cblxuICAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNDogVGhlIF9fZm9ybWF0X18gbWV0aG9kIG9mICJvYmplY3QiIGl0c2VsZlxuICAgcmFpc2VzIGEgIlR5cGVFcnJvciIgaWYgcGFzc2VkIGFueSBub24tZW1wdHkgc3RyaW5nLlxuXG5vYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6ICJ4PHkiIGNhbGxzICJ4Ll9fbHRfXyh5KSIsICJ4PD15IiBjYWxscyAieC5fX2xlX18oeSkiLFxuICAgIng9PXkiIGNhbGxzICJ4Ll9fZXFfXyh5KSIsICJ4IT15IiBjYWxscyAieC5fX25lX18oeSkiLCAieD55IiBjYWxsc1xuICAgInguX19ndF9fKHkpIiwgYW5kICJ4Pj15IiBjYWxscyAieC5fX2dlX18oeSkiLlxuXG4gICBBIHJpY2ggY29tcGFyaXNvbiBtZXRob2QgbWF5IHJldHVybiB0aGUgc2luZ2xldG9uICJOb3RJbXBsZW1lbnRlZCJcbiAgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhIGdpdmVuIHBhaXIgb2ZcbiAgIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSByZXR1cm5lZCBmb3IgYVxuICAgc3VjY2Vzc2Z1bCBjb21wYXJpc29uLiBIb3dldmVyLCB0aGVzZSBtZXRob2RzIGNhbiByZXR1cm4gYW55IHZhbHVlLFxuICAgc28gaWYgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3IgaXMgdXNlZCBpbiBhIEJvb2xlYW4gY29udGV4dCAoZS5nLixcbiAgIGluIHRoZSBjb25kaXRpb24gb2YgYW4gImlmIiBzdGF0ZW1lbnQpLCBQeXRob24gd2lsbCBjYWxsICJib29sKCkiXG4gICBvbiB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIGlmIHRoZSByZXN1bHQgaXMgdHJ1ZSBvciBmYWxzZS5cblxuICAgQnkgZGVmYXVsdCwgIl9fbmVfXygpIiBkZWxlZ2F0ZXMgdG8gIl9fZXFfXygpIiBhbmQgaW52ZXJ0cyB0aGVcbiAgIHJlc3VsdCB1bmxlc3MgaXQgaXMgIk5vdEltcGxlbWVudGVkIi4gIFRoZXJlIGFyZSBubyBvdGhlciBpbXBsaWVkXG4gICByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycywgZm9yIGV4YW1wbGUsIHRoZVxuICAgdHJ1dGggb2YgIih4PHkgb3IgeD09eSkiIGRvZXMgbm90IGltcGx5ICJ4PD15Ii4gVG8gYXV0b21hdGljYWxseVxuICAgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3Qgb3BlcmF0aW9uLCBzZWVcbiAgICJmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSIuXG5cbiAgIFNlZSB0aGUgcGFyYWdyYXBoIG9uICJfX2hhc2hfXygpIiBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb25cbiAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uXG4gICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgIl9fbHRfXygpIiBhbmQgIl9fZ3RfXygpIiBhcmUgZWFjaCBvdGhlclwnc1xuICAgcmVmbGVjdGlvbiwgIl9fbGVfXygpIiBhbmQgIl9fZ2VfXygpIiBhcmUgZWFjaCBvdGhlclwncyByZWZsZWN0aW9uLFxuICAgYW5kICJfX2VxX18oKSIgYW5kICJfX25lX18oKSIgYXJlIHRoZWlyIG93biByZWZsZWN0aW9uLiBJZiB0aGVcbiAgIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMsIGFuZCByaWdodCBvcGVyYW5kXCdzIHR5cGUgaXMgYVxuICAgZGlyZWN0IG9yIGluZGlyZWN0IHN1YmNsYXNzIG9mIHRoZSBsZWZ0IG9wZXJhbmRcJ3MgdHlwZSwgdGhlXG4gICByZWZsZWN0ZWQgbWV0aG9kIG9mIHRoZSByaWdodCBvcGVyYW5kIGhhcyBwcmlvcml0eSwgb3RoZXJ3aXNlIHRoZVxuICAgbGVmdCBvcGVyYW5kXCdzIG1ldGhvZCBoYXMgcHJpb3JpdHkuICBWaXJ0dWFsIHN1YmNsYXNzaW5nIGlzIG5vdFxuICAgY29uc2lkZXJlZC5cblxub2JqZWN0Ll9faGFzaF9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiAiaGFzaCgpIiBhbmQgZm9yIG9wZXJhdGlvbnMgb24gbWVtYmVyc1xuICAgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyAic2V0IiwgImZyb3plbnNldCIsIGFuZCAiZGljdCIuXG4gICAiX19oYXNoX18oKSIgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHkgcmVxdWlyZWQgcHJvcGVydHlcbiAgIGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWUgaGFzaCB2YWx1ZTsgaXQgaXNcbiAgIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmcgZXhjbHVzaXZlIG9yKSB0aGUgaGFzaFxuICAgdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXQgYWxzbyBwbGF5IGEgcGFydCBpblxuICAgY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBOb3RlOiAiaGFzaCgpIiB0cnVuY2F0ZXMgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gYW4gb2JqZWN0XCdzXG4gICAgIGN1c3RvbSAiX19oYXNoX18oKSIgbWV0aG9kIHRvIHRoZSBzaXplIG9mIGEgIlB5X3NzaXplX3QiLiAgVGhpc1xuICAgICBpcyB0eXBpY2FsbHkgOCBieXRlcyBvbiA2NC1iaXQgYnVpbGRzIGFuZCA0IGJ5dGVzIG9uIDMyLWJpdFxuICAgICBidWlsZHMuIElmIGFuIG9iamVjdFwncyAgICJfX2hhc2hfXygpIiBtdXN0IGludGVyb3BlcmF0ZSBvbiBidWlsZHNcbiAgICAgb2YgZGlmZmVyZW50IGJpdCBzaXplcywgYmUgc3VyZSB0byBjaGVjayB0aGUgd2lkdGggb24gYWxsXG4gICAgIHN1cHBvcnRlZCBidWlsZHMuICBBbiBlYXN5IHdheSB0byBkbyB0aGlzIGlzIHdpdGggInB5dGhvbiAtY1xuICAgICAiaW1wb3J0IHN5czsgcHJpbnQoc3lzLmhhc2hfaW5mby53aWR0aCkiIi5cblxuICAgSWYgYSBjbGFzcyBkb2VzIG5vdCBkZWZpbmUgYW4gIl9fZXFfXygpIiBtZXRob2QgaXQgc2hvdWxkIG5vdFxuICAgZGVmaW5lIGEgIl9faGFzaF9fKCkiIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXMgIl9fZXFfXygpIlxuICAgYnV0IG5vdCAiX19oYXNoX18oKSIsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmUgdXNhYmxlIGFzIGl0ZW1zIGluXG4gICBoYXNoYWJsZSBjb2xsZWN0aW9ucy4gIElmIGEgY2xhc3MgZGVmaW5lcyBtdXRhYmxlIG9iamVjdHMgYW5kXG4gICBpbXBsZW1lbnRzIGFuICJfX2VxX18oKSIgbWV0aG9kLCBpdCBzaG91bGQgbm90IGltcGxlbWVudFxuICAgIl9faGFzaF9fKCkiLCBzaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgaGFzaGFibGUgY29sbGVjdGlvbnNcbiAgIHJlcXVpcmVzIHRoYXQgYSBrZXlcJ3MgaGFzaCB2YWx1ZSBpcyBpbW11dGFibGUgKGlmIHRoZSBvYmplY3RcJ3MgaGFzaFxuICAgdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaCBidWNrZXQpLlxuXG4gICBVc2VyLWRlZmluZWQgY2xhc3NlcyBoYXZlICJfX2VxX18oKSIgYW5kICJfX2hhc2hfXygpIiBtZXRob2RzIGJ5XG4gICBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCAieC5fX2hhc2hfXygpIiByZXR1cm5zIGFuIGFwcHJvcHJpYXRlIHZhbHVlIHN1Y2hcbiAgIHRoYXQgInggPT0geSIgaW1wbGllcyBib3RoIHRoYXQgInggaXMgeSIgYW5kICJoYXNoKHgpID09IGhhc2goeSkiLlxuXG4gICBBIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgYW5kIGRvZXMgbm90IGRlZmluZSAiX19oYXNoX18oKSJcbiAgIHdpbGwgaGF2ZSBpdHMgIl9faGFzaF9fKCkiIGltcGxpY2l0bHkgc2V0IHRvICJOb25lIi4gIFdoZW4gdGhlXG4gICAiX19oYXNoX18oKSIgbWV0aG9kIG9mIGEgY2xhc3MgaXMgIk5vbmUiLCBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzXG4gICB3aWxsIHJhaXNlIGFuIGFwcHJvcHJpYXRlICJUeXBlRXJyb3IiIHdoZW4gYSBwcm9ncmFtIGF0dGVtcHRzIHRvXG4gICByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLCBhbmQgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSBpZGVudGlmaWVkIGFzXG4gICB1bmhhc2hhYmxlIHdoZW4gY2hlY2tpbmcgImlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkiLlxuXG4gICBJZiBhIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgIl9faGFzaF9fKCkiIGZyb20gYSBwYXJlbnQgY2xhc3MsIHRoZSBpbnRlcnByZXRlclxuICAgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nICJfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fIi5cblxuICAgSWYgYSBjbGFzcyB0aGF0IGRvZXMgbm90IG92ZXJyaWRlICJfX2VxX18oKSIgd2lzaGVzIHRvIHN1cHByZXNzXG4gICBoYXNoIHN1cHBvcnQsIGl0IHNob3VsZCBpbmNsdWRlICJfX2hhc2hfXyA9IE5vbmUiIGluIHRoZSBjbGFzc1xuICAgZGVmaW5pdGlvbi4gQSBjbGFzcyB3aGljaCBkZWZpbmVzIGl0cyBvd24gIl9faGFzaF9fKCkiIHRoYXRcbiAgIGV4cGxpY2l0bHkgcmFpc2VzIGEgIlR5cGVFcnJvciIgd291bGQgYmUgaW5jb3JyZWN0bHkgaWRlbnRpZmllZCBhc1xuICAgaGFzaGFibGUgYnkgYW4gImlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkiIGNhbGwuXG5cbiAgIE5vdGU6IEJ5IGRlZmF1bHQsIHRoZSAiX19oYXNoX18oKSIgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kXG4gICAgIGRhdGV0aW1lIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSByYW5kb20gdmFsdWUuXG4gICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvblxuICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZlxuICAgICBQeXRob24uVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhIGRlbmlhbC1cbiAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZVxuICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSBjb21wbGV4aXR5LlxuICAgICBTZWUgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvclxuICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiBvcmRlciBvZlxuICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyIG1hZGUgZ3VhcmFudGVlc1xuICAgICBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuIDMyLWJpdCBhbmRcbiAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gIlBZVEhPTkhBU0hTRUVEIi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC5cblxub2JqZWN0Ll9fYm9vbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdHJ1dGggdmFsdWUgdGVzdGluZyBhbmQgdGhlIGJ1aWx0LWluIG9wZXJhdGlvblxuICAgImJvb2woKSI7IHNob3VsZCByZXR1cm4gIkZhbHNlIiBvciAiVHJ1ZSIuICBXaGVuIHRoaXMgbWV0aG9kIGlzIG5vdFxuICAgZGVmaW5lZCwgIl9fbGVuX18oKSIgaXMgY2FsbGVkLCBpZiBpdCBpcyBkZWZpbmVkLCBhbmQgdGhlIG9iamVjdCBpc1xuICAgY29uc2lkZXJlZCB0cnVlIGlmIGl0cyByZXN1bHQgaXMgbm9uemVyby4gIElmIGEgY2xhc3MgZGVmaW5lc1xuICAgbmVpdGhlciAiX19sZW5fXygpIiBub3IgIl9fYm9vbF9fKCkiLCBhbGwgaXRzIGluc3RhbmNlcyBhcmVcbiAgIGNvbnNpZGVyZWQgdHJ1ZS5cblxuXG5DdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlIG1lYW5pbmcgb2ZcbmF0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgIngubmFtZSIpIGZvclxuY2xhc3MgaW5zdGFuY2VzLlxuXG5vYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSBhdHRyaWJ1dGUgaW4gdGhlXG4gICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgaXQgZm91bmRcbiAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciAic2VsZiIpLiAgIm5hbWUiIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZS4gVGhpc1xuICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi5cblxuICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbSxcbiAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuICJfX2dldGF0dHJfXygpIiBhbmQgIl9fc2V0YXR0cl9fKCkiLikgVGhpcyBpcyBkb25lIGJvdGggZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlICJfX2dldGF0dHJfXygpIiB3b3VsZCBoYXZlXG4gICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZSB0aGF0IGF0XG4gICBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieSBub3RcbiAgIGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgZ2V0IHRvdGFsXG4gICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cblxub2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzIGZvclxuICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAiX19nZXRhdHRyX18oKSIsXG4gICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgIl9fZ2V0YXR0cmlidXRlX18oKSIgZWl0aGVyXG4gICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiBUaGlzIG1ldGhvZFxuICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gaW5cbiAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBiYXNlIGNsYXNzXG4gICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCBuZWVkcywgZm9yXG4gICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuXG4gICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwIHNwZWNpYWxcbiAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhIGxhbmd1YWdlIHN5bnRheFxuICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSAqU3BlY2lhbCBtZXRob2QgbG9va3VwKi5cblxub2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlXG4gICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgKnZhbHVlKiBpcyB0aGVcbiAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgIm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkiLlxuXG5vYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgTGlrZSAiX19zZXRhdHRyX18oKSIgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCBvZlxuICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgImRlbCBvYmoubmFtZSIgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuICJkaXIoKSIgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgc2VxdWVuY2UgbXVzdCBiZVxuICAgcmV0dXJuZWQuICJkaXIoKSIgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgbGlzdCBhbmRcbiAgIHNvcnRzIGl0LlxuXG5cbkltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzXG5jb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgYXBwZWFycyBpbiBhblxuKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyXCdzIGNsYXNzXG5kaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzIHBhcmVudHMpLiAgSW4gdGhlXG5leGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbnRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnICJfX2RpY3RfXyIuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAiTm9uZSIgd2hlblxuICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyBtZXRob2Qgc2hvdWxkXG4gICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuICJBdHRyaWJ1dGVFcnJvciJcbiAgIGV4Y2VwdGlvbi5cblxub2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXJcbiAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuXG5vYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlXG4gICBvd25lciBjbGFzcy5cblxuVGhlIGF0dHJpYnV0ZSAiX19vYmpjbGFzc19fIiBpcyBpbnRlcnByZXRlZCBieSB0aGUgImluc3BlY3QiIG1vZHVsZSBhc1xuc3BlY2lmeWluZyB0aGUgY2xhc3Mgd2hlcmUgdGhpcyBvYmplY3Qgd2FzIGRlZmluZWQgKHNldHRpbmcgdGhpc1xuYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiBkeW5hbWljIGNsYXNzXG5hdHRyaWJ1dGVzKS4gRm9yIGNhbGxhYmxlcywgaXQgbWF5IGluZGljYXRlIHRoYXQgYW4gaW5zdGFuY2Ugb2YgdGhlXG5naXZlbiB0eXBlIChvciBhIHN1YmNsYXNzKSBpcyBleHBlY3RlZCBvciByZXF1aXJlZCBhcyB0aGUgZmlyc3RcbnBvc2l0aW9uYWwgYXJndW1lbnQgKGZvciBleGFtcGxlLCBDUHl0aG9uIHNldHMgdGhpcyBhdHRyaWJ1dGUgZm9yXG51bmJvdW5kIG1ldGhvZHMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgaW4gQykuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgYW5kXG4iX19kZWxldGVfXygpIi4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCwgaXRcbmlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgImEueCIgaGFzIGFcbmxvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbiJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXSIsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cblxuSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mIHRoZVxuZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kXG5pbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiB0aGVcbnByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSBkZWZpbmVkIGFuZFxuaG93IHRoZXkgd2VyZSBjYWxsZWQuXG5cblRoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgImEueCIuIEhvd1xudGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gImEiOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICAieC5fX2dldF9fKGEpIi5cblxuSW5zdGFuY2UgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsICJhLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlXG4gICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgY2FsbDpcbiAgICJBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpIi5cblxuU3VwZXIgQmluZGluZ1xuICAgSWYgImEiIGlzIGFuIGluc3RhbmNlIG9mICJzdXBlciIsIHRoZW4gdGhlIGJpbmRpbmcgInN1cGVyKEIsXG4gICBvYmopLm0oKSIgc2VhcmNoZXMgIm9iai5fX2NsYXNzX18uX19tcm9fXyIgZm9yIHRoZSBiYXNlIGNsYXNzICJBIlxuICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yIHdpdGggdGhlXG4gICBjYWxsOiAiQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pIi5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAiX19kZWxldGVfXygpIi4gIElmIGl0XG5kb2VzIG5vdCBkZWZpbmUgIl9fZ2V0X18oKSIsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgd2lsbCByZXR1cm5cbnRoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlIG9iamVjdFwnc1xuaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgIl9fc2V0X18oKSIgYW5kL29yXG4iX19kZWxldGVfXygpIiwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXMgbmVpdGhlciwgaXQgaXNcbmEgbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzIGRlZmluZSBib3RoXG4iX19nZXRfXygpIiBhbmQgIl9fc2V0X18oKSIsIHdoaWxlIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGhhdmUganVzdCB0aGVcbiJfX2dldF9fKCkiIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aCAiX19zZXRfXygpIiBhbmQgIl9fZ2V0X18oKSJcbmRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uIGluIGFuIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJblxuY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGluc3RhbmNlcy5cblxuUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyAic3RhdGljbWV0aG9kKCkiIGFuZCAiY2xhc3NtZXRob2QoKSIpIGFyZVxuaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhblxucmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsIGluc3RhbmNlcyB0b1xuYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2xhc3MuXG5cblRoZSAicHJvcGVydHkoKSIgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhIGRlc2NyaXB0b3IuXG5BY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSBwcm9wZXJ0eS5cblxuXG5fX3Nsb3RzX19cbi0tLS0tLS0tLVxuXG5CeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgYXR0cmlidXRlXG5zdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3IGluc3RhbmNlXG52YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuIGNyZWF0aW5nIGxhcmdlXG5udW1iZXJzIG9mIGluc3RhbmNlcy5cblxuVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSBjbGFzc1xuZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2YgaW5zdGFuY2VcbnZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0byBob2xkIGFcbnZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qIGlzIG5vdFxuY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cblxub2JqZWN0Ll9fc2xvdHNfX1xuXG4gICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4gICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICAqX19zbG90c19fKlxuICAgcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kIHByZXZlbnRzIHRoZVxuICAgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yIGVhY2hcbiAgIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+flxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgIkF0dHJpYnV0ZUVycm9yIi4gSWZcbiAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiBhZGRcbiAgIlwnX19kaWN0X19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCBjbGFzc2VzXG4gIGRlZmluaW5nICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byBpdHNcbiAgaW5zdGFuY2VzLiBJZiB3ZWFrIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGRcbiAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGVcbiAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZVxuICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuXG4gIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAiaW50IiwgImJ5dGVzIiBhbmQgInR1cGxlIi5cblxuKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouIE1hcHBpbmdzXG4gIG1heSBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyBtYXkgYmVcbiAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuXG4qICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZVxuICAqX19zbG90c19fKi5cblxuXG5DdXN0b21pemluZyBjbGFzcyBjcmVhdGlvblxuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQnkgZGVmYXVsdCwgY2xhc3NlcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgInR5cGUoKSIuIFRoZSBjbGFzcyBib2R5IGlzXG5leGVjdXRlZCBpbiBhIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIGxvY2FsbHkgdG8gdGhlXG5yZXN1bHQgb2YgInR5cGUobmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkiLlxuXG5UaGUgY2xhc3MgY3JlYXRpb24gcHJvY2VzcyBjYW4gYmUgY3VzdG9taXNlZCBieSBwYXNzaW5nIHRoZVxuIm1ldGFjbGFzcyIga2V5d29yZCBhcmd1bWVudCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBsaW5lLCBvciBieVxuaW5oZXJpdGluZyBmcm9tIGFuIGV4aXN0aW5nIGNsYXNzIHRoYXQgaW5jbHVkZWQgc3VjaCBhbiBhcmd1bWVudC4gSW5cbnRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgYm90aCAiTXlDbGFzcyIgYW5kICJNeVN1YmNsYXNzIiBhcmUgaW5zdGFuY2VzXG5vZiAiTWV0YSI6XG5cbiAgIGNsYXNzIE1ldGEodHlwZSk6XG4gICAgICAgcGFzc1xuXG4gICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NZXRhKTpcbiAgICAgICBwYXNzXG5cbiAgIGNsYXNzIE15U3ViY2xhc3MoTXlDbGFzcyk6XG4gICAgICAgcGFzc1xuXG5Bbnkgb3RoZXIga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uXG5hcmUgcGFzc2VkIHRocm91Z2ggdG8gYWxsIG1ldGFjbGFzcyBvcGVyYXRpb25zIGRlc2NyaWJlZCBiZWxvdy5cblxuV2hlbiBhIGNsYXNzIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQsIHRoZSBmb2xsb3dpbmcgc3RlcHMgb2NjdXI6XG5cbiogdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBpcyBkZXRlcm1pbmVkXG5cbiogdGhlIGNsYXNzIG5hbWVzcGFjZSBpcyBwcmVwYXJlZFxuXG4qIHRoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkXG5cbiogdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkXG5cblxuRGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGZvciBhIGNsYXNzIGRlZmluaXRpb24gaXMgZGV0ZXJtaW5lZCBhc1xuZm9sbG93czpcblxuKiBpZiBubyBiYXNlcyBhbmQgbm8gZXhwbGljaXQgbWV0YWNsYXNzIGFyZSBnaXZlbiwgdGhlbiAidHlwZSgpIiBpc1xuICB1c2VkXG5cbiogaWYgYW4gZXhwbGljaXQgbWV0YWNsYXNzIGlzIGdpdmVuIGFuZCBpdCBpcyAqbm90KiBhbiBpbnN0YW5jZSBvZlxuICAidHlwZSgpIiwgdGhlbiBpdCBpcyB1c2VkIGRpcmVjdGx5IGFzIHRoZSBtZXRhY2xhc3NcblxuKiBpZiBhbiBpbnN0YW5jZSBvZiAidHlwZSgpIiBpcyBnaXZlbiBhcyB0aGUgZXhwbGljaXQgbWV0YWNsYXNzLCBvclxuICBiYXNlcyBhcmUgZGVmaW5lZCwgdGhlbiB0aGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyB1c2VkXG5cblRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIHNlbGVjdGVkIGZyb20gdGhlIGV4cGxpY2l0bHkgc3BlY2lmaWVkXG5tZXRhY2xhc3MgKGlmIGFueSkgYW5kIHRoZSBtZXRhY2xhc3NlcyAoaS5lLiAidHlwZShjbHMpIikgb2YgYWxsXG5zcGVjaWZpZWQgYmFzZSBjbGFzc2VzLiBUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBvbmUgd2hpY2ggaXMgYVxuc3VidHlwZSBvZiAqYWxsKiBvZiB0aGVzZSBjYW5kaWRhdGUgbWV0YWNsYXNzZXMuIElmIG5vbmUgb2YgdGhlXG5jYW5kaWRhdGUgbWV0YWNsYXNzZXMgbWVldHMgdGhhdCBjcml0ZXJpb24sIHRoZW4gdGhlIGNsYXNzIGRlZmluaXRpb25cbndpbGwgZmFpbCB3aXRoICJUeXBlRXJyb3IiLlxuXG5cblByZXBhcmluZyB0aGUgY2xhc3MgbmFtZXNwYWNlXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5PbmNlIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaGFzIGJlZW4gaWRlbnRpZmllZCwgdGhlbiB0aGUgY2xhc3Ncbm5hbWVzcGFjZSBpcyBwcmVwYXJlZC4gSWYgdGhlIG1ldGFjbGFzcyBoYXMgYSAiX19wcmVwYXJlX18iIGF0dHJpYnV0ZSxcbml0IGlzIGNhbGxlZCBhcyAibmFtZXNwYWNlID0gbWV0YWNsYXNzLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzLFxuKiprd2RzKSIgKHdoZXJlIHRoZSBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLCBpZiBhbnksIGNvbWUgZnJvbVxudGhlIGNsYXNzIGRlZmluaXRpb24pLlxuXG5JZiB0aGUgbWV0YWNsYXNzIGhhcyBubyAiX19wcmVwYXJlX18iIGF0dHJpYnV0ZSwgdGhlbiB0aGUgY2xhc3Ncbm5hbWVzcGFjZSBpcyBpbml0aWFsaXNlZCBhcyBhbiBlbXB0eSAiZGljdCgpIiBpbnN0YW5jZS5cblxuU2VlIGFsc286ICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzMDAwXG5cbiAgICAgSW50cm9kdWNlZCB0aGUgIl9fcHJlcGFyZV9fIiBuYW1lc3BhY2UgaG9va1xuXG5cbkV4ZWN1dGluZyB0aGUgY2xhc3MgYm9keVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkIChhcHByb3hpbWF0ZWx5KSBhcyAiZXhlYyhib2R5LCBnbG9iYWxzKCksXG5uYW1lc3BhY2UpIi4gVGhlIGtleSBkaWZmZXJlbmNlIGZyb20gYSBub3JtYWwgY2FsbCB0byAiZXhlYygpIiBpcyB0aGF0XG5sZXhpY2FsIHNjb3BpbmcgYWxsb3dzIHRoZSBjbGFzcyBib2R5IChpbmNsdWRpbmcgYW55IG1ldGhvZHMpIHRvXG5yZWZlcmVuY2UgbmFtZXMgZnJvbSB0aGUgY3VycmVudCBhbmQgb3V0ZXIgc2NvcGVzIHdoZW4gdGhlIGNsYXNzXG5kZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgYSBmdW5jdGlvbi5cblxuSG93ZXZlciwgZXZlbiB3aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgdGhlIGZ1bmN0aW9uLFxubWV0aG9kcyBkZWZpbmVkIGluc2lkZSB0aGUgY2xhc3Mgc3RpbGwgY2Fubm90IHNlZSBuYW1lcyBkZWZpbmVkIGF0IHRoZVxuY2xhc3Mgc2NvcGUuIENsYXNzIHZhcmlhYmxlcyBtdXN0IGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGZpcnN0XG5wYXJhbWV0ZXIgb2YgaW5zdGFuY2Ugb3IgY2xhc3MgbWV0aG9kcywgYW5kIGNhbm5vdCBiZSBhY2Nlc3NlZCBhdCBhbGxcbmZyb20gc3RhdGljIG1ldGhvZHMuXG5cblxuQ3JlYXRpbmcgdGhlIGNsYXNzIG9iamVjdFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5PbmNlIHRoZSBjbGFzcyBuYW1lc3BhY2UgaGFzIGJlZW4gcG9wdWxhdGVkIGJ5IGV4ZWN1dGluZyB0aGUgY2xhc3NcbmJvZHksIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCBieSBjYWxsaW5nICJtZXRhY2xhc3MobmFtZSwgYmFzZXMsXG5uYW1lc3BhY2UsICoqa3dkcykiICh0aGUgYWRkaXRpb25hbCBrZXl3b3JkcyBwYXNzZWQgaGVyZSBhcmUgdGhlIHNhbWVcbmFzIHRob3NlIHBhc3NlZCB0byAiX19wcmVwYXJlX18iKS5cblxuVGhpcyBjbGFzcyBvYmplY3QgaXMgdGhlIG9uZSB0aGF0IHdpbGwgYmUgcmVmZXJlbmNlZCBieSB0aGUgemVyby1cbmFyZ3VtZW50IGZvcm0gb2YgInN1cGVyKCkiLiAiX19jbGFzc19fIiBpcyBhbiBpbXBsaWNpdCBjbG9zdXJlXG5yZWZlcmVuY2UgY3JlYXRlZCBieSB0aGUgY29tcGlsZXIgaWYgYW55IG1ldGhvZHMgaW4gYSBjbGFzcyBib2R5IHJlZmVyXG50byBlaXRoZXIgIl9fY2xhc3NfXyIgb3IgInN1cGVyIi4gVGhpcyBhbGxvd3MgdGhlIHplcm8gYXJndW1lbnQgZm9ybVxub2YgInN1cGVyKCkiIHRvIGNvcnJlY3RseSBpZGVudGlmeSB0aGUgY2xhc3MgYmVpbmcgZGVmaW5lZCBiYXNlZCBvblxubGV4aWNhbCBzY29waW5nLCB3aGlsZSB0aGUgY2xhc3Mgb3IgaW5zdGFuY2UgdGhhdCB3YXMgdXNlZCB0byBtYWtlIHRoZVxuY3VycmVudCBjYWxsIGlzIGlkZW50aWZpZWQgYmFzZWQgb24gdGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCB0byB0aGVcbm1ldGhvZC5cblxuQWZ0ZXIgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkLCBpdCBpcyBwYXNzZWQgdG8gdGhlIGNsYXNzXG5kZWNvcmF0b3JzIGluY2x1ZGVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIChpZiBhbnkpIGFuZCB0aGUgcmVzdWx0aW5nXG5vYmplY3QgaXMgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyB0aGUgZGVmaW5lZCBjbGFzcy5cblxuU2VlIGFsc286ICoqUEVQIDMxMzUqKiAtIE5ldyBzdXBlclxuXG4gICAgIERlc2NyaWJlcyB0aGUgaW1wbGljaXQgIl9fY2xhc3NfXyIgY2xvc3VyZSByZWZlcmVuY2VcblxuXG5NZXRhY2xhc3MgZXhhbXBsZVxuLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIHBvdGVudGlhbCB1c2VzIGZvciBtZXRhY2xhc3NlcyBhcmUgYm91bmRsZXNzLiBTb21lIGlkZWFzIHRoYXQgaGF2ZVxuYmVlbiBleHBsb3JlZCBpbmNsdWRlIGxvZ2dpbmcsIGludGVyZmFjZSBjaGVja2luZywgYXV0b21hdGljXG5kZWxlZ2F0aW9uLCBhdXRvbWF0aWMgcHJvcGVydHkgY3JlYXRpb24sIHByb3hpZXMsIGZyYW1ld29ya3MsIGFuZFxuYXV0b21hdGljIHJlc291cmNlIGxvY2tpbmcvc3luY2hyb25pemF0aW9uLlxuXG5IZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBtZXRhY2xhc3MgdGhhdCB1c2VzIGFuXG4iY29sbGVjdGlvbnMuT3JkZXJlZERpY3QiIHRvIHJlbWVtYmVyIHRoZSBvcmRlciB0aGF0IGNsYXNzIHZhcmlhYmxlc1xuYXJlIGRlZmluZWQ6XG5cbiAgIGNsYXNzIE9yZGVyZWRDbGFzcyh0eXBlKTpcblxuICAgICAgICBAY2xhc3NtZXRob2RcbiAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOlxuICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKVxuXG4gICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiprd2RzKTpcbiAgICAgICAgICAgcmVzdWx0ID0gdHlwZS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIGRpY3QobmFtZXNwYWNlKSlcbiAgICAgICAgICAgcmVzdWx0Lm1lbWJlcnMgPSB0dXBsZShuYW1lc3BhY2UpXG4gICAgICAgICAgIHJldHVybiByZXN1bHRcblxuICAgY2xhc3MgQShtZXRhY2xhc3M9T3JkZXJlZENsYXNzKTpcbiAgICAgICBkZWYgb25lKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIHR3byhzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0aHJlZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiBmb3VyKHNlbGYpOiBwYXNzXG5cbiAgID4+PiBBLm1lbWJlcnNcbiAgIChcJ19fbW9kdWxlX19cJywgXCdvbmVcJywgXCd0d29cJywgXCd0aHJlZVwnLCBcJ2ZvdXJcJylcblxuV2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBmb3IgKkEqIGdldHMgZXhlY3V0ZWQsIHRoZSBwcm9jZXNzIGJlZ2luc1xud2l0aCBjYWxsaW5nIHRoZSBtZXRhY2xhc3NcJ3MgIl9fcHJlcGFyZV9fKCkiIG1ldGhvZCB3aGljaCByZXR1cm5zIGFuXG5lbXB0eSAiY29sbGVjdGlvbnMuT3JkZXJlZERpY3QiLiAgVGhhdCBtYXBwaW5nIHJlY29yZHMgdGhlIG1ldGhvZHMgYW5kXG5hdHRyaWJ1dGVzIG9mICpBKiBhcyB0aGV5IGFyZSBkZWZpbmVkIHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgY2xhc3NcbnN0YXRlbWVudC4gT25jZSB0aG9zZSBkZWZpbml0aW9ucyBhcmUgZXhlY3V0ZWQsIHRoZSBvcmRlcmVkIGRpY3Rpb25hcnlcbmlzIGZ1bGx5IHBvcHVsYXRlZCBhbmQgdGhlIG1ldGFjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgZ2V0c1xuaW52b2tlZC4gIFRoYXQgbWV0aG9kIGJ1aWxkcyB0aGUgbmV3IHR5cGUgYW5kIGl0IHNhdmVzIHRoZSBvcmRlcmVkXG5kaWN0aW9uYXJ5IGtleXMgaW4gYW4gYXR0cmlidXRlIGNhbGxlZCAibWVtYmVycyIuXG5cblxuQ3VzdG9taXppbmcgaW5zdGFuY2UgYW5kIHN1YmNsYXNzIGNoZWNrc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlXG4iaXNpbnN0YW5jZSgpIiBhbmQgImlzc3ViY2xhc3MoKSIgYnVpbHQtaW4gZnVuY3Rpb25zLlxuXG5JbiBwYXJ0aWN1bGFyLCB0aGUgbWV0YWNsYXNzICJhYmMuQUJDTWV0YSIgaW1wbGVtZW50cyB0aGVzZSBtZXRob2RzIGluXG5vcmRlciB0byBhbGxvdyB0aGUgYWRkaXRpb24gb2YgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChBQkNzKSBhc1xuInZpcnR1YWwgYmFzZSBjbGFzc2VzIiB0byBhbnkgY2xhc3Mgb3IgdHlwZSAoaW5jbHVkaW5nIGJ1aWx0LWluXG50eXBlcyksIGluY2x1ZGluZyBvdGhlciBBQkNzLlxuXG5jbGFzcy5fX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgUmV0dXJuIHRydWUgaWYgKmluc3RhbmNlKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3Qgb3JcbiAgIGluZGlyZWN0KSBpbnN0YW5jZSBvZiAqY2xhc3MqLiBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICAiaXNpbnN0YW5jZShpbnN0YW5jZSwgY2xhc3MpIi5cblxuY2xhc3MuX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgc3ViY2xhc3MpXG5cbiAgIFJldHVybiB0cnVlIGlmICpzdWJjbGFzcyogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgc3ViY2xhc3Mgb2YgKmNsYXNzKi4gIElmIGRlZmluZWQsIGNhbGxlZCB0byBpbXBsZW1lbnRcbiAgICJpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbGFzcykiLlxuXG5Ob3RlIHRoYXQgdGhlc2UgbWV0aG9kcyBhcmUgbG9va2VkIHVwIG9uIHRoZSB0eXBlIChtZXRhY2xhc3MpIG9mIGFcbmNsYXNzLiAgVGhleSBjYW5ub3QgYmUgZGVmaW5lZCBhcyBjbGFzcyBtZXRob2RzIGluIHRoZSBhY3R1YWwgY2xhc3MuXG5UaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9va3VwIG9mIHNwZWNpYWwgbWV0aG9kcyB0aGF0IGFyZSBjYWxsZWRcbm9uIGluc3RhbmNlcywgb25seSBpbiB0aGlzIGNhc2UgdGhlIGluc3RhbmNlIGlzIGl0c2VsZiBhIGNsYXNzLlxuXG5TZWUgYWxzbzogKipQRVAgMzExOSoqIC0gSW50cm9kdWNpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzXG5cbiAgICAgSW5jbHVkZXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIGN1c3RvbWl6aW5nICJpc2luc3RhbmNlKCkiIGFuZFxuICAgICAiaXNzdWJjbGFzcygpIiBiZWhhdmlvciB0aHJvdWdoICJfX2luc3RhbmNlY2hlY2tfXygpIiBhbmRcbiAgICAgIl9fc3ViY2xhc3NjaGVja19fKCkiLCB3aXRoIG1vdGl2YXRpb24gZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSBpblxuICAgICB0aGUgY29udGV4dCBvZiBhZGRpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChzZWUgdGhlICJhYmMiXG4gICAgIG1vZHVsZSkgdG8gdGhlIGxhbmd1YWdlLlxuXG5cbkVtdWxhdGluZyBjYWxsYWJsZSBvYmplY3RzXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19jYWxsX18oc2VsZlssIGFyZ3MuLi5dKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgdGhpcyBtZXRob2RcbiAgIGlzIGRlZmluZWQsICJ4KGFyZzEsIGFyZzIsIC4uLikiIGlzIGEgc2hvcnRoYW5kIGZvclxuICAgInguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKSIuXG5cblxuRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciBvYmplY3RzLlxuQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSBvciBtYXBwaW5nc1xuKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyB3ZWxsLiAgVGhlXG5maXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgdG9cbmVtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCB0aGVcbmFsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCAiMCA8PSBrIDwgTiIgd2hlcmVcbipOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2ggZGVmaW5lIGFcbnJhbmdlIG9mIGl0ZW1zLiAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzIHByb3ZpZGUgdGhlXG5tZXRob2RzICJrZXlzKCkiLCAidmFsdWVzKCkiLCAiaXRlbXMoKSIsICJnZXQoKSIsICJjbGVhcigpIixcbiJzZXRkZWZhdWx0KCkiLCAicG9wKCkiLCAicG9waXRlbSgpIiwgImNvcHkoKSIsIGFuZCAidXBkYXRlKCkiXG5iZWhhdmluZyBzaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob25cJ3Mgc3RhbmRhcmQgZGljdGlvbmFyeSBvYmplY3RzLlxuVGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlIHByb3ZpZGVzIGEgIk11dGFibGVNYXBwaW5nIiBhYnN0cmFjdCBiYXNlXG5jbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAiX19nZXRpdGVtX18oKSIsXG4iX19zZXRpdGVtX18oKSIsICJfX2RlbGl0ZW1fXygpIiwgYW5kICJrZXlzKCkiLiBNdXRhYmxlIHNlcXVlbmNlc1xuc2hvdWxkIHByb3ZpZGUgbWV0aG9kcyAiYXBwZW5kKCkiLCAiY291bnQoKSIsICJpbmRleCgpIiwgImV4dGVuZCgpIixcbiJpbnNlcnQoKSIsICJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAic29ydCgpIiwgbGlrZSBQeXRob25cbnN0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZCBpbXBsZW1lbnRcbmFkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAobWVhbmluZ1xucmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICJfX3JhZGRfXygpIixcbiJfX2lhZGRfXygpIiwgIl9fbXVsX18oKSIsICJfX3JtdWxfXygpIiBhbmQgIl9faW11bF9fKCkiIGRlc2NyaWJlZFxuYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0IGlzXG5yZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG4iX19jb250YWluc19fKCkiIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSAiaW4iIG9wZXJhdG9yO1xuZm9yIG1hcHBpbmdzLCAiaW4iIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yIHNlcXVlbmNlcywgaXRcbnNob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlciByZWNvbW1lbmRlZCB0aGF0IGJvdGhcbm1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZSAiX19pdGVyX18oKSIgbWV0aG9kIHRvIGFsbG93XG5lZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCAiX19pdGVyX18oKSJcbnNob3VsZCBiZSB0aGUgc2FtZSBhcyAia2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkIGl0ZXJhdGVcbnRocm91Z2ggdGhlIHZhbHVlcy5cblxub2JqZWN0Ll9fbGVuX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gIFNob3VsZCByZXR1cm5cbiAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciAiPj0iIDAuICBBbHNvLCBhbiBvYmplY3QgdGhhdFxuICAgZG9lc25cJ3QgZGVmaW5lIGEgIl9fYm9vbF9fKCkiIG1ldGhvZCBhbmQgd2hvc2UgIl9fbGVuX18oKSIgbWV0aG9kXG4gICByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gY29udGV4dC5cblxub2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5sZW5ndGhfaGludCgpIi4gU2hvdWxkIHJldHVybiBhblxuICAgZXN0aW1hdGVkIGxlbmd0aCBmb3IgdGhlIG9iamVjdCAod2hpY2ggbWF5IGJlIGdyZWF0ZXIgb3IgbGVzcyB0aGFuXG4gICB0aGUgYWN0dWFsIGxlbmd0aCkuIFRoZSBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyICI+PSIgMC4gVGhpc1xuICAgbWV0aG9kIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24gYW5kIGlzIG5ldmVyIHJlcXVpcmVkIGZvclxuICAgY29ycmVjdG5lc3MuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cblxuTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSBtZXRob2RzLlxuICBBIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoICJOb25lIi5cblxub2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mICJzZWxmW2tleV0iLiBGb3Igc2VxdWVuY2UgdHlwZXMsXG4gICB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuICBOb3RlIHRoYXRcbiAgIHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZSBjbGFzcyB3aXNoZXNcbiAgIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC4gSWZcbiAgICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSwgIlR5cGVFcnJvciIgbWF5IGJlIHJhaXNlZDsgaWYgb2ZcbiAgIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAoYWZ0ZXIgYW55XG4gICBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIHZhbHVlcyksICJJbmRleEVycm9yIiBzaG91bGQgYmVcbiAgIHJhaXNlZC4gRm9yIG1hcHBpbmcgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiB0aGVcbiAgIGNvbnRhaW5lciksICJLZXlFcnJvciIgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogImZvciIgbG9vcHMgZXhwZWN0IHRoYXQgYW4gIkluZGV4RXJyb3IiIHdpbGwgYmUgcmFpc2VkIGZvclxuICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mIHRoZVxuICAgICBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fbWlzc2luZ19fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIGJ5ICJkaWN0Ii4iX19nZXRpdGVtX18oKSIgdG8gaW1wbGVtZW50ICJzZWxmW2tleV0iIGZvciBkaWN0XG4gICBzdWJjbGFzc2VzIHdoZW4ga2V5IGlzIG5vdCBpbiB0aGUgZGljdGlvbmFyeS5cblxub2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgaWYgbmV3IGtleXNcbiAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgcmVwbGFjZWQuICBUaGVcbiAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yXG4gICB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50c1xuICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZVxuICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuXG5vYmplY3QuX19pdGVyX18oc2VsZilcblxuICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yIGEgY29udGFpbmVyLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCBjYW4gaXRlcmF0ZVxuICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgaXQgc2hvdWxkXG4gICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lci5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgInJldmVyc2VkKCkiIGJ1aWx0LWluIHRvIGltcGxlbWVudFxuICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0XG4gICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluIHJldmVyc2Ugb3JkZXIuXG5cbiAgIElmIHRoZSAiX19yZXZlcnNlZF9fKCkiIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZSAicmV2ZXJzZWQoKSJcbiAgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZSBwcm90b2NvbCAoIl9fbGVuX18oKSJcbiAgIGFuZCAiX19nZXRpdGVtX18oKSIpLiAgT2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhlIHNlcXVlbmNlIHByb3RvY29sXG4gICBzaG91bGQgb25seSBwcm92aWRlICJfX3JldmVyc2VkX18oKSIgaWYgdGhleSBjYW4gcHJvdmlkZSBhblxuICAgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQgYnlcbiAgICJyZXZlcnNlZCgpIi5cblxuVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKCJpbiIgYW5kICJub3QgaW4iKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiwgdGhlIG1lbWJlcnNoaXAgdGVzdFxuICAgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSAiX19pdGVyX18oKSIsIHRoZW4gdGhlIG9sZCBzZXF1ZW5jZVxuICAgaXRlcmF0aW9uIHByb3RvY29sIHZpYSAiX19nZXRpdGVtX18oKSIsIHNlZSAqdGhpcyBzZWN0aW9uIGluIHRoZVxuICAgbGFuZ3VhZ2UgcmVmZXJlbmNlKi5cblxuXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19wb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX29yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLFxuICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYVxuICAgY2xhc3MgdGhhdCBoYXMgYW4gIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyBjYWxsZWQuXG4gICBUaGUgIl9fZGl2bW9kX18oKSIgbWV0aG9kIHNob3VsZCBiZSB0aGUgZXF1aXZhbGVudCB0byB1c2luZ1xuICAgIl9fZmxvb3JkaXZfXygpIiBhbmQgIl9fbW9kX18oKSI7IGl0IHNob3VsZCBub3QgYmUgcmVsYXRlZCB0b1xuICAgIl9fdHJ1ZWRpdl9fKCkiLiAgTm90ZSB0aGF0ICJfX3Bvd19fKCkiIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdFxuICAgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW5cbiAgICJwb3coKSIgZnVuY3Rpb24gaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiAiTm90SW1wbGVtZW50ZWQiLlxuXG5vYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycG93X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yeG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICJkaXZtb2QoKSIsXG4gICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKSB3aXRoIHJlZmxlY3RlZCAoc3dhcHBlZClcbiAgIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXNcbiAgIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZlxuICAgZGlmZmVyZW50IHR5cGVzLiBbMl0gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCAtXG4gICB5Iiwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gIl9fcnN1Yl9fKCkiXG4gICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgInBvdygpIiB3aWxsIG5vdCB0cnkgY2FsbGluZyAiX19ycG93X18oKSIgKHRoZVxuICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG5cbiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kXCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCBtZXRob2RcbiAgICAgZm9yIHRoZSBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3Mgc3ViY2xhc3Nlc1xuICAgICB0byBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnNcJyBvcGVyYXRpb25zLlxuXG5vYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCBhcml0aG1ldGljXG4gICBhc3NpZ25tZW50cyAoIis9IiwgIi09IiwgIio9IiwgIkA9IiwgIi89IiwgIi8vPSIsICIlPSIsICIqKj0iLFxuICAgIjw8PSIsICI+Pj0iLCAiJj0iLCAiXj0iLCAifD0iKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkIGF0dGVtcHQgdG9cbiAgIGRvIHRoZSBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCByZXR1cm4gdGhlIHJlc3VsdFxuICAgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWNcbiAgIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZCBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlXG4gICBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgaWYgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3NcbiAgIHdpdGggYW4gIl9faWFkZF9fKCkiIG1ldGhvZCwgInggKz0geSIgaXMgZXF1aXZhbGVudCB0byAieCA9XG4gICB4Ll9faWFkZF9fKHkpIiAuIE90aGVyd2lzZSwgInguX19hZGRfXyh5KSIgYW5kICJ5Ll9fcmFkZF9fKHgpIiBhcmVcbiAgIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgInggKyB5Ii4gSW4gY2VydGFpblxuICAgc2l0dWF0aW9ucywgYXVnbWVudGVkIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGVycm9yc1xuICAgKHNlZSAqV2h5IGRvZXMgYV90dXBsZVtpXSArPSBbXCdpdGVtXCddIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZVxuICAgYWRkaXRpb24gd29ya3M/KiksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QgcGFydCBvZiB0aGUgZGF0YVxuICAgbW9kZWwuXG5cbm9iamVjdC5fX25lZ19fKHNlbGYpXG5vYmplY3QuX19wb3NfXyhzZWxmKVxub2JqZWN0Ll9fYWJzX18oc2VsZilcbm9iamVjdC5fX2ludmVydF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoIi0iLCAiKyIsXG4gICAiYWJzKCkiIGFuZCAifiIpLlxuXG5vYmplY3QuX19jb21wbGV4X18oc2VsZilcbm9iamVjdC5fX2ludF9fKHNlbGYpXG5vYmplY3QuX19mbG9hdF9fKHNlbGYpXG5vYmplY3QuX19yb3VuZF9fKHNlbGZbLCBuXSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJjb21wbGV4KCkiLCAiaW50KCkiLFxuICAgImZsb2F0KCkiIGFuZCAicm91bmQoKSIuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlXG4gICB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmluZGV4KCkiLCBhbmQgd2hlbmV2ZXIgUHl0aG9uIG5lZWRzXG4gICB0byBsb3NzbGVzc2x5IGNvbnZlcnQgdGhlIG51bWVyaWMgb2JqZWN0IHRvIGFuIGludGVnZXIgb2JqZWN0IChzdWNoXG4gICBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGUgYnVpbHQtaW4gImJpbigpIiwgImhleCgpIiBhbmQgIm9jdCgpIlxuICAgZnVuY3Rpb25zKS4gUHJlc2VuY2Ugb2YgdGhpcyBtZXRob2QgaW5kaWNhdGVzIHRoYXQgdGhlIG51bWVyaWNcbiAgIG9iamVjdCBpcyBhbiBpbnRlZ2VyIHR5cGUuICBNdXN0IHJldHVybiBhbiBpbnRlZ2VyLlxuXG4gICBOb3RlOiBJbiBvcmRlciB0byBoYXZlIGEgY29oZXJlbnQgaW50ZWdlciB0eXBlIGNsYXNzLCB3aGVuXG4gICAgICJfX2luZGV4X18oKSIgaXMgZGVmaW5lZCAiX19pbnRfXygpIiBzaG91bGQgYWxzbyBiZSBkZWZpbmVkLCBhbmRcbiAgICAgYm90aCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlLlxuXG5cbldpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQSAqY29udGV4dCBtYW5hZ2VyKiBpcyBhbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSBydW50aW1lIGNvbnRleHQgdG9cbmJlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgIndpdGgiIHN0YXRlbWVudC4gVGhlIGNvbnRleHQgbWFuYWdlclxuaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWUgY29udGV4dFxuZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZSBub3JtYWxseVxuaW52b2tlZCB1c2luZyB0aGUgIndpdGgiIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb24gKlRoZSB3aXRoXG5zdGF0ZW1lbnQqKSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgdGhlaXIgbWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgIndpdGgiXG4gICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kXCdzIHJldHVybiB2YWx1ZSB0byB0aGUgdGFyZ2V0KHMpXG4gICBzcGVjaWZpZWQgaW4gdGhlICJhcyIgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmIGFueS5cblxub2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcblxuICAgRXhpdCB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBwYXJhbWV0ZXJzXG4gICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvIGJlIGV4aXRlZC4gSWYgdGhlXG4gICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSBhcmd1bWVudHMgd2lsbFxuICAgYmUgIk5vbmUiLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCAiX19leGl0X18oKSIgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlIHBhc3NlZC1pblxuICAgZXhjZXB0aW9uOyB0aGlzIGlzIHRoZSBjYWxsZXJcJ3MgcmVzcG9uc2liaWxpdHkuXG5cblNlZSBhbHNvOiAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gIndpdGgiXG4gICAgIHN0YXRlbWVudC5cblxuXG5TcGVjaWFsIG1ldGhvZCBsb29rdXBcbj09PT09PT09PT09PT09PT09PT09PVxuXG5Gb3IgY3VzdG9tIGNsYXNzZXMsIGltcGxpY2l0IGludm9jYXRpb25zIG9mIHNwZWNpYWwgbWV0aG9kcyBhcmUgb25seVxuZ3VhcmFudGVlZCB0byB3b3JrIGNvcnJlY3RseSBpZiBkZWZpbmVkIG9uIGFuIG9iamVjdFwncyB0eXBlLCBub3QgaW5cbnRoZSBvYmplY3RcJ3MgaW5zdGFuY2UgZGljdGlvbmFyeS4gIFRoYXQgYmVoYXZpb3VyIGlzIHRoZSByZWFzb24gd2h5XG50aGUgZm9sbG93aW5nIGNvZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbjpcblxuICAgPj4+IGNsYXNzIEM6XG4gICAuLi4gICAgIHBhc3NcbiAgIC4uLlxuICAgPj4+IGMgPSBDKClcbiAgID4+PiBjLl9fbGVuX18gPSBsYW1iZGE6IDVcbiAgID4+PiBsZW4oYylcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbiAgIFR5cGVFcnJvcjogb2JqZWN0IG9mIHR5cGUgXCdDXCcgaGFzIG5vIGxlbigpXG5cblRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgYmVoYXZpb3VyIGxpZXMgd2l0aCBhIG51bWJlciBvZiBzcGVjaWFsXG5tZXRob2RzIHN1Y2ggYXMgIl9faGFzaF9fKCkiIGFuZCAiX19yZXByX18oKSIgdGhhdCBhcmUgaW1wbGVtZW50ZWQgYnlcbmFsbCBvYmplY3RzLCBpbmNsdWRpbmcgdHlwZSBvYmplY3RzLiBJZiB0aGUgaW1wbGljaXQgbG9va3VwIG9mIHRoZXNlXG5tZXRob2RzIHVzZWQgdGhlIGNvbnZlbnRpb25hbCBsb29rdXAgcHJvY2VzcywgdGhleSB3b3VsZCBmYWlsIHdoZW5cbmludm9rZWQgb24gdGhlIHR5cGUgb2JqZWN0IGl0c2VsZjpcblxuICAgPj4+IDEgLl9faGFzaF9fKCkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IGludC5fX2hhc2hfXygpID09IGhhc2goaW50KVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgVHlwZUVycm9yOiBkZXNjcmlwdG9yIFwnX19oYXNoX19cJyBvZiBcJ2ludFwnIG9iamVjdCBuZWVkcyBhbiBhcmd1bWVudFxuXG5JbmNvcnJlY3RseSBhdHRlbXB0aW5nIHRvIGludm9rZSBhbiB1bmJvdW5kIG1ldGhvZCBvZiBhIGNsYXNzIGluIHRoaXNcbndheSBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgXCdtZXRhY2xhc3MgY29uZnVzaW9uXCcsIGFuZCBpcyBhdm9pZGVkXG5ieSBieXBhc3NpbmcgdGhlIGluc3RhbmNlIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHM6XG5cbiAgID4+PiB0eXBlKDEpLl9faGFzaF9fKDEpID09IGhhc2goMSlcbiAgIFRydWVcbiAgID4+PiB0eXBlKGludCkuX19oYXNoX18oaW50KSA9PSBoYXNoKGludClcbiAgIFRydWVcblxuSW4gYWRkaXRpb24gdG8gYnlwYXNzaW5nIGFueSBpbnN0YW5jZSBhdHRyaWJ1dGVzIGluIHRoZSBpbnRlcmVzdCBvZlxuY29ycmVjdG5lc3MsIGltcGxpY2l0IHNwZWNpYWwgbWV0aG9kIGxvb2t1cCBnZW5lcmFsbHkgYWxzbyBieXBhc3Nlc1xudGhlICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBldmVuIG9mIHRoZSBvYmplY3RcJ3MgbWV0YWNsYXNzOlxuXG4gICA+Pj4gY2xhc3MgTWV0YSh0eXBlKTpcbiAgIC4uLiAgICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgICAgcHJpbnQoIk1ldGFjbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZCIpXG4gICAuLi4gICAgICAgICByZXR1cm4gdHlwZS5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gY2xhc3MgQyhvYmplY3QsIG1ldGFjbGFzcz1NZXRhKTpcbiAgIC4uLiAgICAgZGVmIF9fbGVuX18oc2VsZik6XG4gICAuLi4gICAgICAgICByZXR1cm4gMTBcbiAgIC4uLiAgICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgICAgcHJpbnQoIkNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbiAgIC4uLiAgICAgICAgIHJldHVybiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbiAgIC4uLlxuICAgPj4+IGMgPSBDKClcbiAgID4+PiBjLl9fbGVuX18oKSAgICAgICAgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhIGluc3RhbmNlXG4gICBDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuICAgMTBcbiAgID4+PiB0eXBlKGMpLl9fbGVuX18oYykgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhIHR5cGVcbiAgIE1ldGFjbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuICAgMTBcbiAgID4+PiBsZW4oYykgICAgICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdCBsb29rdXBcbiAgIDEwXG5cbkJ5cGFzc2luZyB0aGUgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWFjaGluZXJ5IGluIHRoaXMgZmFzaGlvbiBwcm92aWRlc1xuc2lnbmlmaWNhbnQgc2NvcGUgZm9yIHNwZWVkIG9wdGltaXNhdGlvbnMgd2l0aGluIHRoZSBpbnRlcnByZXRlciwgYXRcbnRoZSBjb3N0IG9mIHNvbWUgZmxleGliaWxpdHkgaW4gdGhlIGhhbmRsaW5nIG9mIHNwZWNpYWwgbWV0aG9kcyAodGhlXG5zcGVjaWFsIG1ldGhvZCAqbXVzdCogYmUgc2V0IG9uIHRoZSBjbGFzcyBvYmplY3QgaXRzZWxmIGluIG9yZGVyIHRvIGJlXG5jb25zaXN0ZW50bHkgaW52b2tlZCBieSB0aGUgaW50ZXJwcmV0ZXIpLlxuJywKKyAnc3RyaW5nLW1ldGhvZHMnOiB1J1xuU3RyaW5nIE1ldGhvZHNcbioqKioqKioqKioqKioqXG5cblN0cmluZ3MgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogc2VxdWVuY2Ugb3BlcmF0aW9ucywgYWxvbmcgd2l0aFxudGhlIGFkZGl0aW9uYWwgbWV0aG9kcyBkZXNjcmliZWQgYmVsb3cuXG5cblN0cmluZ3MgYWxzbyBzdXBwb3J0IHR3byBzdHlsZXMgb2Ygc3RyaW5nIGZvcm1hdHRpbmcsIG9uZSBwcm92aWRpbmcgYVxubGFyZ2UgZGVncmVlIG9mIGZsZXhpYmlsaXR5IGFuZCBjdXN0b21pemF0aW9uIChzZWUgInN0ci5mb3JtYXQoKSIsXG4qRm9ybWF0IFN0cmluZyBTeW50YXgqIGFuZCAqU3RyaW5nIEZvcm1hdHRpbmcqKSBhbmQgdGhlIG90aGVyIGJhc2VkIG9uXG5DICJwcmludGYiIHN0eWxlIGZvcm1hdHRpbmcgdGhhdCBoYW5kbGVzIGEgbmFycm93ZXIgcmFuZ2Ugb2YgdHlwZXMgYW5kXG5pcyBzbGlnaHRseSBoYXJkZXIgdG8gdXNlIGNvcnJlY3RseSwgYnV0IGlzIG9mdGVuIGZhc3RlciBmb3IgdGhlIGNhc2VzXG5pdCBjYW4gaGFuZGxlICgqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKikuXG5cblRoZSAqVGV4dCBQcm9jZXNzaW5nIFNlcnZpY2VzKiBzZWN0aW9uIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGNvdmVyc1xuYSBudW1iZXIgb2Ygb3RoZXIgbW9kdWxlcyB0aGF0IHByb3ZpZGUgdmFyaW91cyB0ZXh0IHJlbGF0ZWQgdXRpbGl0aWVzXG4oaW5jbHVkaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBzdXBwb3J0IGluIHRoZSAicmUiIG1vZHVsZSkuXG5cbnN0ci5jYXBpdGFsaXplKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggaXRzIGZpcnN0IGNoYXJhY3RlciBjYXBpdGFsaXplZFxuICAgYW5kIHRoZSByZXN0IGxvd2VyY2FzZWQuXG5cbnN0ci5jYXNlZm9sZCgpXG5cbiAgIFJldHVybiBhIGNhc2Vmb2xkZWQgY29weSBvZiB0aGUgc3RyaW5nLiBDYXNlZm9sZGVkIHN0cmluZ3MgbWF5IGJlXG4gICB1c2VkIGZvciBjYXNlbGVzcyBtYXRjaGluZy5cblxuICAgQ2FzZWZvbGRpbmcgaXMgc2ltaWxhciB0byBsb3dlcmNhc2luZyBidXQgbW9yZSBhZ2dyZXNzaXZlIGJlY2F1c2VcbiAgIGl0IGlzIGludGVuZGVkIHRvIHJlbW92ZSBhbGwgY2FzZSBkaXN0aW5jdGlvbnMgaW4gYSBzdHJpbmcuIEZvclxuICAgZXhhbXBsZSwgdGhlIEdlcm1hbiBsb3dlcmNhc2UgbGV0dGVyICJcJ1x4ZGZcJyIgaXMgZXF1aXZhbGVudCB0byAiInNzIiIuXG4gICBTaW5jZSBpdCBpcyBhbHJlYWR5IGxvd2VyY2FzZSwgImxvd2VyKCkiIHdvdWxkIGRvIG5vdGhpbmcgdG8gIlwnXHhkZlwnIjtcbiAgICJjYXNlZm9sZCgpIiBjb252ZXJ0cyBpdCB0byAiInNzIiIuXG5cbiAgIFRoZSBjYXNlZm9sZGluZyBhbGdvcml0aG0gaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMy5cblxuc3RyLmNlbnRlcih3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBQYWRkaW5nIGlzIGRvbmVcbiAgIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhbiBBU0NJSSBzcGFjZSkuIFRoZVxuICAgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvXG4gICAibGVuKHMpIi5cblxuc3RyLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKnN1YipcbiAgIGluIHRoZSByYW5nZSBbKnN0YXJ0KiwgKmVuZCpdLiAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kXG4gICAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cbnN0ci5lbmNvZGUoZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJzdHJpY3QiKVxuXG4gICBSZXR1cm4gYW4gZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgYXMgYSBieXRlcyBvYmplY3QuIERlZmF1bHRcbiAgIGVuY29kaW5nIGlzICJcJ3V0Zi04XCciLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50XG4gICBlcnJvciBoYW5kbGluZyBzY2hlbWUuIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiBpcyAiXCdzdHJpY3RcJyIsXG4gICBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgIlVuaWNvZGVFcnJvciIuIE90aGVyIHBvc3NpYmxlXG4gICB2YWx1ZXMgYXJlICJcJ2lnbm9yZVwnIiwgIlwncmVwbGFjZVwnIiwgIlwneG1sY2hhcnJlZnJlcGxhY2VcJyIsXG4gICAiXCdiYWNrc2xhc2hyZXBsYWNlXCciIGFuZCBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHZpYVxuICAgImNvZGVjcy5yZWdpc3Rlcl9lcnJvcigpIiwgc2VlIHNlY3Rpb24gKkVycm9yIEhhbmRsZXJzKi4gRm9yIGEgbGlzdFxuICAgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmQgRW5jb2RpbmdzKi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3Iga2V5d29yZCBhcmd1bWVudHMgYWRkZWQuXG5cbnN0ci5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gIlRydWUiIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgKnN1ZmZpeCosXG4gICBvdGhlcndpc2UgcmV0dXJuICJGYWxzZSIuICAqc3VmZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHN1ZmZpeGVzXG4gICB0byBsb29rIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBiZWdpbm5pbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXG5zdHIuZXhwYW5kdGFicyh0YWJzaXplPTgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkXG4gICBieSBvbmUgb3IgbW9yZSBzcGFjZXMsIGRlcGVuZGluZyBvbiB0aGUgY3VycmVudCBjb2x1bW4gYW5kIHRoZVxuICAgZ2l2ZW4gdGFiIHNpemUuICBUYWIgcG9zaXRpb25zIG9jY3VyIGV2ZXJ5ICp0YWJzaXplKiBjaGFyYWN0ZXJzXG4gICAoZGVmYXVsdCBpcyA4LCBnaXZpbmcgdGFiIHBvc2l0aW9ucyBhdCBjb2x1bW5zIDAsIDgsIDE2IGFuZCBzbyBvbikuXG4gICBUbyBleHBhbmQgdGhlIHN0cmluZywgdGhlIGN1cnJlbnQgY29sdW1uIGlzIHNldCB0byB6ZXJvIGFuZCB0aGVcbiAgIHN0cmluZyBpcyBleGFtaW5lZCBjaGFyYWN0ZXIgYnkgY2hhcmFjdGVyLiAgSWYgdGhlIGNoYXJhY3RlciBpcyBhXG4gICB0YWIgKCJcXHQiKSwgb25lIG9yIG1vcmUgc3BhY2UgY2hhcmFjdGVycyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIHJlc3VsdFxuICAgdW50aWwgdGhlIGN1cnJlbnQgY29sdW1uIGlzIGVxdWFsIHRvIHRoZSBuZXh0IHRhYiBwb3NpdGlvbi4gKFRoZVxuICAgdGFiIGNoYXJhY3RlciBpdHNlbGYgaXMgbm90IGNvcGllZC4pICBJZiB0aGUgY2hhcmFjdGVyIGlzIGEgbmV3bGluZVxuICAgKCJcXG4iKSBvciByZXR1cm4gKCJcXHIiKSwgaXQgaXMgY29waWVkIGFuZCB0aGUgY3VycmVudCBjb2x1bW4gaXNcbiAgIHJlc2V0IHRvIHplcm8uICBBbnkgb3RoZXIgY2hhcmFjdGVyIGlzIGNvcGllZCB1bmNoYW5nZWQgYW5kIHRoZVxuICAgY3VycmVudCBjb2x1bW4gaXMgaW5jcmVtZW50ZWQgYnkgb25lIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZVxuICAgY2hhcmFjdGVyIGlzIHJlcHJlc2VudGVkIHdoZW4gcHJpbnRlZC5cblxuICAgPj4+IFwnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzRcJy5leHBhbmR0YWJzKClcbiAgIFwnMDEgICAgICAwMTIgICAgIDAxMjMgICAgMDEyMzRcJ1xuICAgPj4+IFwnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzRcJy5leHBhbmR0YWJzKDQpXG4gICBcJzAxICAwMTIgMDEyMyAgICAwMTIzNFwnXG5cbnN0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCBpbiB0aGUgc2xpY2UgInNbc3RhcnQ6ZW5kXSIuXG4gICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlXG4gICBub3RhdGlvbi4gIFJldHVybiAiLTEiIGlmICpzdWIqIGlzIG5vdCBmb3VuZC5cblxuICAgTm90ZTogVGhlICJmaW5kKCkiIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBvbmx5IGlmIHlvdSBuZWVkIHRvIGtub3dcbiAgICAgdGhlIHBvc2l0aW9uIG9mICpzdWIqLiAgVG8gY2hlY2sgaWYgKnN1YiogaXMgYSBzdWJzdHJpbmcgb3Igbm90LFxuICAgICB1c2UgdGhlICJpbiIgb3BlcmF0b3I6XG5cbiAgICAgICAgPj4+IFwnUHlcJyBpbiBcJ1B5dGhvblwnXG4gICAgICAgIFRydWVcblxuc3RyLmZvcm1hdCgqYXJncywgKiprd2FyZ3MpXG5cbiAgIFBlcmZvcm0gYSBzdHJpbmcgZm9ybWF0dGluZyBvcGVyYXRpb24uICBUaGUgc3RyaW5nIG9uIHdoaWNoIHRoaXNcbiAgIG1ldGhvZCBpcyBjYWxsZWQgY2FuIGNvbnRhaW4gbGl0ZXJhbCB0ZXh0IG9yIHJlcGxhY2VtZW50IGZpZWxkc1xuICAgZGVsaW1pdGVkIGJ5IGJyYWNlcyAie30iLiAgRWFjaCByZXBsYWNlbWVudCBmaWVsZCBjb250YWlucyBlaXRoZXJcbiAgIHRoZSBudW1lcmljIGluZGV4IG9mIGEgcG9zaXRpb25hbCBhcmd1bWVudCwgb3IgdGhlIG5hbWUgb2YgYVxuICAga2V5d29yZCBhcmd1bWVudC4gIFJldHVybnMgYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgZWFjaFxuICAgcmVwbGFjZW1lbnQgZmllbGQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3RyaW5nIHZhbHVlIG9mIHRoZVxuICAgY29ycmVzcG9uZGluZyBhcmd1bWVudC5cblxuICAgPj4+ICJUaGUgc3VtIG9mIDEgKyAyIGlzIHswfSIuZm9ybWF0KDErMilcbiAgIFwnVGhlIHN1bSBvZiAxICsgMiBpcyAzXCdcblxuICAgU2VlICpGb3JtYXQgU3RyaW5nIFN5bnRheCogZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIHZhcmlvdXNcbiAgIGZvcm1hdHRpbmcgb3B0aW9ucyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgaW4gZm9ybWF0IHN0cmluZ3MuXG5cbnN0ci5mb3JtYXRfbWFwKG1hcHBpbmcpXG5cbiAgIFNpbWlsYXIgdG8gInN0ci5mb3JtYXQoKiptYXBwaW5nKSIsIGV4Y2VwdCB0aGF0ICJtYXBwaW5nIiBpcyB1c2VkXG4gICBkaXJlY3RseSBhbmQgbm90IGNvcGllZCB0byBhICJkaWN0Ii4gIFRoaXMgaXMgdXNlZnVsIGlmIGZvciBleGFtcGxlXG4gICAibWFwcGluZyIgaXMgYSBkaWN0IHN1YmNsYXNzOlxuXG4gICA+Pj4gY2xhc3MgRGVmYXVsdChkaWN0KTpcbiAgIC4uLiAgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6XG4gICAuLi4gICAgICAgICByZXR1cm4ga2V5XG4gICAuLi5cbiAgID4+PiBcJ3tuYW1lfSB3YXMgYm9ybiBpbiB7Y291bnRyeX1cJy5mb3JtYXRfbWFwKERlZmF1bHQobmFtZT1cJ0d1aWRvXCcpKVxuICAgXCdHdWlkbyB3YXMgYm9ybiBpbiBjb3VudHJ5XCdcblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5zdHIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgTGlrZSAiZmluZCgpIiwgYnV0IHJhaXNlICJWYWx1ZUVycm9yIiB3aGVuIHRoZSBzdWJzdHJpbmcgaXMgbm90XG4gICBmb3VuZC5cblxuc3RyLmlzYWxudW0oKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYW51bWVyaWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBIGNoYXJhY3RlciAiYyJcbiAgIGlzIGFscGhhbnVtZXJpYyBpZiBvbmUgb2YgdGhlIGZvbGxvd2luZyByZXR1cm5zICJUcnVlIjpcbiAgICJjLmlzYWxwaGEoKSIsICJjLmlzZGVjaW1hbCgpIiwgImMuaXNkaWdpdCgpIiwgb3IgImMuaXNudW1lcmljKCkiLlxuXG5zdHIuaXNhbHBoYSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhYmV0aWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBbHBoYWJldGljXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiTGV0dGVyIiwgaS5lLiwgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5IHByb3BlcnR5XG4gICBiZWluZyBvbmUgb2YgIkxtIiwgIkx0IiwgIkx1IiwgIkxsIiwgb3IgIkxvIi4gIE5vdGUgdGhhdCB0aGlzIGlzXG4gICBkaWZmZXJlbnQgZnJvbSB0aGUgIkFscGhhYmV0aWMiIHByb3BlcnR5IGRlZmluZWQgaW4gdGhlIFVuaWNvZGVcbiAgIFN0YW5kYXJkLlxuXG5zdHIuaXNkZWNpbWFsKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGVjaW1hbCBjaGFyYWN0ZXJzXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBEZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBmcm9tIGdlbmVyYWwgY2F0ZWdvcnkgIk5kIi4gVGhpcyBjYXRlZ29yeVxuICAgaW5jbHVkZXMgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG9cbiAgIGZvcm0gZGVjaW1hbC1yYWRpeCBudW1iZXJzLCBlLmcuIFUrMDY2MCwgQVJBQklDLUlORElDIERJR0lUIFpFUk8uXG5cbnN0ci5pc2RpZ2l0KClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGlnaXRzIGFuZCB0aGVyZSBpc1xuICAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgRGlnaXRzIGluY2x1ZGUgZGVjaW1hbFxuICAgY2hhcmFjdGVycyBhbmQgZGlnaXRzIHRoYXQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLCBzdWNoIGFzIHRoZVxuICAgY29tcGF0aWJpbGl0eSBzdXBlcnNjcmlwdCBkaWdpdHMuICBGb3JtYWxseSwgYSBkaWdpdCBpcyBhIGNoYXJhY3RlclxuICAgdGhhdCBoYXMgdGhlIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCBvclxuICAgTnVtZXJpY19UeXBlPURlY2ltYWwuXG5cbnN0ci5pc2lkZW50aWZpZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgaWRlbnRpZmllciBhY2NvcmRpbmcgdG8gdGhlXG4gICBsYW5ndWFnZSBkZWZpbml0aW9uLCBzZWN0aW9uICpJZGVudGlmaWVycyBhbmQga2V5d29yZHMqLlxuXG4gICBVc2UgImtleXdvcmQuaXNrZXl3b3JkKCkiIHRvIHRlc3QgZm9yIHJlc2VydmVkIGlkZW50aWZpZXJzIHN1Y2ggYXNcbiAgICJkZWYiIGFuZCAiY2xhc3MiLlxuXG5zdHIuaXNsb3dlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSBsb3dlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc251bWVyaWMoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBudW1lcmljIGNoYXJhY3RlcnMsXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBOdW1lcmljXG4gICBjaGFyYWN0ZXJzIGluY2x1ZGUgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgaGF2ZVxuICAgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBwcm9wZXJ0eSwgZS5nLiBVKzIxNTUsIFZVTEdBUiBGUkFDVElPTlxuICAgT05FIEZJRlRILiAgRm9ybWFsbHksIG51bWVyaWMgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCB0aGVcbiAgIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCwgTnVtZXJpY19UeXBlPURlY2ltYWwgb3JcbiAgIE51bWVyaWNfVHlwZT1OdW1lcmljLlxuXG5zdHIuaXNwcmludGFibGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBwcmludGFibGUgb3IgdGhlXG4gICBzdHJpbmcgaXMgZW1wdHksIGZhbHNlIG90aGVyd2lzZS4gIE5vbnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZVxuICAgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZSBhc1xuICAgIk90aGVyIiBvciAiU2VwYXJhdG9yIiwgZXhjZXB0aW5nIHRoZSBBU0NJSSBzcGFjZSAoMHgyMCkgd2hpY2ggaXNcbiAgIGNvbnNpZGVyZWQgcHJpbnRhYmxlLiAgKE5vdGUgdGhhdCBwcmludGFibGUgY2hhcmFjdGVycyBpbiB0aGlzXG4gICBjb250ZXh0IGFyZSB0aG9zZSB3aGljaCBzaG91bGQgbm90IGJlIGVzY2FwZWQgd2hlbiAicmVwcigpIiBpc1xuICAgaW52b2tlZCBvbiBhIHN0cmluZy4gIEl0IGhhcyBubyBiZWFyaW5nIG9uIHRoZSBoYW5kbGluZyBvZiBzdHJpbmdzXG4gICB3cml0dGVuIHRvICJzeXMuc3Rkb3V0IiBvciAic3lzLnN0ZGVyciIuKVxuXG5zdHIuaXNzcGFjZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZXJlIGFyZSBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgV2hpdGVzcGFjZVxuICAgY2hhcmFjdGVycyAgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJPdGhlciIgb3IgIlNlcGFyYXRvciIgYW5kIHRob3NlIHdpdGggYmlkaXJlY3Rpb25hbFxuICAgcHJvcGVydHkgYmVpbmcgb25lIG9mICJXUyIsICJCIiwgb3IgIlMiLlxuXG5zdHIuaXN0aXRsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB0aXRsZWNhc2VkIHN0cmluZyBhbmQgdGhlcmUgaXMgYXRcbiAgIGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZvciBleGFtcGxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIG1heSBvbmx5XG4gICBmb2xsb3cgdW5jYXNlZCBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2UgY2hhcmFjdGVycyBvbmx5IGNhc2VkIG9uZXMuXG4gICBSZXR1cm4gZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXN1cHBlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSB1cHBlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5qb2luKGl0ZXJhYmxlKVxuXG4gICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZ3MgaW4gdGhlXG4gICAqaXRlcmFibGUqICppdGVyYWJsZSouICBBICJUeXBlRXJyb3IiIHdpbGwgYmUgcmFpc2VkIGlmIHRoZXJlIGFyZVxuICAgYW55IG5vbi1zdHJpbmcgdmFsdWVzIGluICppdGVyYWJsZSosIGluY2x1ZGluZyAiYnl0ZXMiIG9iamVjdHMuXG4gICBUaGUgc2VwYXJhdG9yIGJldHdlZW4gZWxlbWVudHMgaXMgdGhlIHN0cmluZyBwcm92aWRpbmcgdGhpcyBtZXRob2QuXG5cbnN0ci5sanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIHRoZSBzdHJpbmcgbGVmdCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouXG4gICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFuIEFTQ0lJXG4gICBzcGFjZSkuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3JcbiAgIGVxdWFsIHRvICJsZW4ocykiLlxuXG5zdHIubG93ZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLlxuXG4gICBUaGUgbG93ZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbnN0ci5sc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggbGVhZGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG9cbiAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSBwcmVmaXg7IHJhdGhlcixcbiAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgICAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcubHN0cmlwKClcbiAgICAgIFwnc3BhY2lvdXMgICBcJ1xuICAgICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcubHN0cmlwKFwnY21vd3ouXCcpXG4gICAgICBcJ2V4YW1wbGUuY29tXCdcblxuc3RhdGljIHN0ci5tYWtldHJhbnMoeFssIHlbLCB6XV0pXG5cbiAgIFRoaXMgc3RhdGljIG1ldGhvZCByZXR1cm5zIGEgdHJhbnNsYXRpb24gdGFibGUgdXNhYmxlIGZvclxuICAgInN0ci50cmFuc2xhdGUoKSIuXG5cbiAgIElmIHRoZXJlIGlzIG9ubHkgb25lIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgZGljdGlvbmFyeSBtYXBwaW5nXG4gICBVbmljb2RlIG9yZGluYWxzIChpbnRlZ2Vycykgb3IgY2hhcmFjdGVycyAoc3RyaW5ncyBvZiBsZW5ndGggMSkgdG9cbiAgIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3MgKG9mIGFyYml0cmFyeSBsZW5ndGhzKSBvciBOb25lLlxuICAgQ2hhcmFjdGVyIGtleXMgd2lsbCB0aGVuIGJlIGNvbnZlcnRlZCB0byBvcmRpbmFscy5cblxuICAgSWYgdGhlcmUgYXJlIHR3byBhcmd1bWVudHMsIHRoZXkgbXVzdCBiZSBzdHJpbmdzIG9mIGVxdWFsIGxlbmd0aCxcbiAgIGFuZCBpbiB0aGUgcmVzdWx0aW5nIGRpY3Rpb25hcnksIGVhY2ggY2hhcmFjdGVyIGluIHggd2lsbCBiZSBtYXBwZWRcbiAgIHRvIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4geS4gIElmIHRoZXJlIGlzIGEgdGhpcmRcbiAgIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgc3RyaW5nLCB3aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgbWFwcGVkIHRvXG4gICBOb25lIGluIHRoZSByZXN1bHQuXG5cbnN0ci5wYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBzdHJpbmcgaXRzZWxmLCBmb2xsb3dlZCBieVxuICAgdHdvIGVtcHR5IHN0cmluZ3MuXG5cbnN0ci5yZXBsYWNlKG9sZCwgbmV3WywgY291bnRdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpvbGQqXG4gICByZXBsYWNlZCBieSAqbmV3Ki4gIElmIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqY291bnQqIGlzIGdpdmVuLCBvbmx5XG4gICB0aGUgZmlyc3QgKmNvdW50KiBvY2N1cnJlbmNlcyBhcmUgcmVwbGFjZWQuXG5cbnN0ci5yZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgKnN1YiogaXNcbiAgIGZvdW5kLCBzdWNoIHRoYXQgKnN1YiogaXMgY29udGFpbmVkIHdpdGhpbiAic1tzdGFydDplbmRdIi5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuICItMSIgb24gZmFpbHVyZS5cblxuc3RyLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlICJyZmluZCgpIiBidXQgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuIHRoZSBzdWJzdHJpbmcgKnN1YiogaXNcbiAgIG5vdCBmb3VuZC5cblxuc3RyLnJqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyByaWdodCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouXG4gICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFuIEFTQ0lJXG4gICBzcGFjZSkuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3JcbiAgIGVxdWFsIHRvICJsZW4ocykiLlxuXG5zdHIucnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiBhXG4gICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0d28gZW1wdHkgc3RyaW5ncywgZm9sbG93ZWQgYnlcbiAgIHRoZSBzdHJpbmcgaXRzZWxmLlxuXG5zdHIucnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlXG4gICBkZWxpbWl0ZXIgc3RyaW5nLiBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCogc3BsaXRzXG4gICBhcmUgZG9uZSwgdGhlICpyaWdodG1vc3QqIG9uZXMuICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yXG4gICAiTm9uZSIsIGFueSB3aGl0ZXNwYWNlIHN0cmluZyBpcyBhIHNlcGFyYXRvci4gIEV4Y2VwdCBmb3Igc3BsaXR0aW5nXG4gICBmcm9tIHRoZSByaWdodCwgInJzcGxpdCgpIiBiZWhhdmVzIGxpa2UgInNwbGl0KCkiIHdoaWNoIGlzXG4gICBkZXNjcmliZWQgaW4gZGV0YWlsIGJlbG93LlxuXG5zdHIucnN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRyYWlsaW5nIGNoYXJhY3RlcnMgcmVtb3ZlZC4gIFRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byBiZVxuICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHN1ZmZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5yc3RyaXAoKVxuICAgICAgXCcgICBzcGFjaW91c1wnXG4gICAgICA+Pj4gXCdtaXNzaXNzaXBwaVwnLnJzdHJpcChcJ2lwelwnKVxuICAgICAgXCdtaXNzaXNzXCdcblxuc3RyLnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlXG4gICBkZWxpbWl0ZXIgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqXG4gICBzcGxpdHMgYXJlIGRvbmUgKHRodXMsIHRoZSBsaXN0IHdpbGwgaGF2ZSBhdCBtb3N0ICJtYXhzcGxpdCsxIlxuICAgZWxlbWVudHMpLiAgSWYgKm1heHNwbGl0KiBpcyBub3Qgc3BlY2lmaWVkIG9yICItMSIsIHRoZW4gdGhlcmUgaXNcbiAgIG5vIGxpbWl0IG9uIHRoZSBudW1iZXIgb2Ygc3BsaXRzIChhbGwgcG9zc2libGUgc3BsaXRzIGFyZSBtYWRlKS5cblxuICAgSWYgKnNlcCogaXMgZ2l2ZW4sIGNvbnNlY3V0aXZlIGRlbGltaXRlcnMgYXJlIG5vdCBncm91cGVkIHRvZ2V0aGVyXG4gICBhbmQgYXJlIGRlZW1lZCB0byBkZWxpbWl0IGVtcHR5IHN0cmluZ3MgKGZvciBleGFtcGxlLFxuICAgIlwnMSwsMlwnLnNwbGl0KFwnLFwnKSIgcmV0dXJucyAiW1wnMVwnLCBcJ1wnLCBcJzJcJ10iKS4gIFRoZSAqc2VwKiBhcmd1bWVudFxuICAgbWF5IGNvbnNpc3Qgb2YgbXVsdGlwbGUgY2hhcmFjdGVycyAoZm9yIGV4YW1wbGUsXG4gICAiXCcxPD4yPD4zXCcuc3BsaXQoXCc8PlwnKSIgcmV0dXJucyAiW1wnMVwnLCBcJzJcJywgXCczXCddIikuIFNwbGl0dGluZyBhblxuICAgZW1wdHkgc3RyaW5nIHdpdGggYSBzcGVjaWZpZWQgc2VwYXJhdG9yIHJldHVybnMgIltcJ1wnXSIuXG5cbiAgIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gXCcxLDIsM1wnLnNwbGl0KFwnLFwnKVxuICAgICAgW1wnMVwnLCBcJzJcJywgXCczXCddXG4gICAgICA+Pj4gXCcxLDIsM1wnLnNwbGl0KFwnLFwnLCBtYXhzcGxpdD0xKVxuICAgICAgW1wnMVwnLCBcJzIsM1wnXVxuICAgICAgPj4+IFwnMSwyLCwzLFwnLnNwbGl0KFwnLFwnKVxuICAgICAgW1wnMVwnLCBcJzJcJywgXCdcJywgXCczXCcsIFwnXCddXG5cbiAgIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgIk5vbmUiLCBhIGRpZmZlcmVudCBzcGxpdHRpbmdcbiAgIGFsZ29yaXRobSBpcyBhcHBsaWVkOiBydW5zIG9mIGNvbnNlY3V0aXZlIHdoaXRlc3BhY2UgYXJlIHJlZ2FyZGVkXG4gICBhcyBhIHNpbmdsZSBzZXBhcmF0b3IsIGFuZCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBubyBlbXB0eSBzdHJpbmdzXG4gICBhdCB0aGUgc3RhcnQgb3IgZW5kIGlmIHRoZSBzdHJpbmcgaGFzIGxlYWRpbmcgb3IgdHJhaWxpbmdcbiAgIHdoaXRlc3BhY2UuICBDb25zZXF1ZW50bHksIHNwbGl0dGluZyBhbiBlbXB0eSBzdHJpbmcgb3IgYSBzdHJpbmdcbiAgIGNvbnNpc3Rpbmcgb2YganVzdCB3aGl0ZXNwYWNlIHdpdGggYSAiTm9uZSIgc2VwYXJhdG9yIHJldHVybnMgIltdIi5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiBcJzEgMiAzXCcuc3BsaXQoKVxuICAgICAgW1wnMVwnLCBcJzJcJywgXCczXCddXG4gICAgICA+Pj4gXCcxIDIgM1wnLnNwbGl0KG1heHNwbGl0PTEpXG4gICAgICBbXCcxXCcsIFwnMiAzXCddXG4gICAgICA+Pj4gXCcgICAxICAgMiAgIDMgICBcJy5zcGxpdCgpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJzNcJ11cblxuc3RyLnNwbGl0bGluZXMoW2tlZXBlbmRzXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIHN0cmluZywgYnJlYWtpbmcgYXQgbGluZVxuICAgYm91bmRhcmllcy4gIExpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0XG4gICB1bmxlc3MgKmtlZXBlbmRzKiBpcyBnaXZlbiBhbmQgdHJ1ZS5cblxuICAgVGhpcyBtZXRob2Qgc3BsaXRzIG9uIHRoZSBmb2xsb3dpbmcgbGluZSBib3VuZGFyaWVzLiAgSW5cbiAgIHBhcnRpY3VsYXIsIHRoZSBib3VuZGFyaWVzIGFyZSBhIHN1cGVyc2V0IG9mICp1bml2ZXJzYWwgbmV3bGluZXMqLlxuXG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBSZXByZXNlbnRhdGlvbiAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8ICJcXG4iICAgICAgICAgICAgICAgICAgICB8IExpbmUgRmVlZCAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHIiICAgICAgICAgICAgICAgICAgICB8IENhcnJpYWdlIFJldHVybiAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHJcXG4iICAgICAgICAgICAgICAgICAgfCBDYXJyaWFnZSBSZXR1cm4gKyBMaW5lIEZlZWQgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx2IiBvciAiXFx4MGIiICAgICAgICAgIHwgTGluZSBUYWJ1bGF0aW9uICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcZiIgb3IgIlxceDBjIiAgICAgICAgICB8IEZvcm0gRmVlZCAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHgxYyIgICAgICAgICAgICAgICAgICB8IEZpbGUgU2VwYXJhdG9yICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHgxZCIgICAgICAgICAgICAgICAgICB8IEdyb3VwIFNlcGFyYXRvciAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHgxZSIgICAgICAgICAgICAgICAgICB8IFJlY29yZCBTZXBhcmF0b3IgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHg4NSIgICAgICAgICAgICAgICAgICB8IE5leHQgTGluZSAoQzEgQ29udHJvbCBDb2RlKSAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHUyMDI4IiAgICAgICAgICAgICAgICB8IExpbmUgU2VwYXJhdG9yICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHUyMDI5IiAgICAgICAgICAgICAgICB8IFBhcmFncmFwaCBTZXBhcmF0b3IgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjI6ICJcXHYiIGFuZCAiXFxmIiBhZGRlZCB0byBsaXN0IG9mIGxpbmVcbiAgIGJvdW5kYXJpZXMuXG5cbiAgIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gXCdhYiBjXFxuXFxuZGUgZmdcXHJrbFxcclxcblwnLnNwbGl0bGluZXMoKVxuICAgICAgW1wnYWIgY1wnLCBcJ1wnLCBcJ2RlIGZnXCcsIFwna2xcJ11cbiAgICAgID4+PiBcJ2FiIGNcXG5cXG5kZSBmZ1xccmtsXFxyXFxuXCcuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKVxuICAgICAgW1wnYWIgY1xcblwnLCBcJ1xcblwnLCBcJ2RlIGZnXFxyXCcsIFwna2xcXHJcXG5cJ11cblxuICAgVW5saWtlICJzcGxpdCgpIiB3aGVuIGEgZGVsaW1pdGVyIHN0cmluZyAqc2VwKiBpcyBnaXZlbiwgdGhpc1xuICAgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgbGlzdCBmb3IgdGhlIGVtcHR5IHN0cmluZywgYW5kIGEgdGVybWluYWxcbiAgIGxpbmUgYnJlYWsgZG9lcyBub3QgcmVzdWx0IGluIGFuIGV4dHJhIGxpbmU6XG5cbiAgICAgID4+PiAiIi5zcGxpdGxpbmVzKClcbiAgICAgIFtdXG4gICAgICA+Pj4gIk9uZSBsaW5lXFxuIi5zcGxpdGxpbmVzKClcbiAgICAgIFtcJ09uZSBsaW5lXCddXG5cbiAgIEZvciBjb21wYXJpc29uLCAic3BsaXQoXCdcXG5cJykiIGdpdmVzOlxuXG4gICAgICA+Pj4gXCdcJy5zcGxpdChcJ1xcblwnKVxuICAgICAgW1wnXCddXG4gICAgICA+Pj4gXCdUd28gbGluZXNcXG5cJy5zcGxpdChcJ1xcblwnKVxuICAgICAgW1wnVHdvIGxpbmVzXCcsIFwnXCddXG5cbnN0ci5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiAiVHJ1ZSIgaWYgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSAqcHJlZml4Kiwgb3RoZXJ3aXNlIHJldHVyblxuICAgIkZhbHNlIi4gKnByZWZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBwcmVmaXhlcyB0byBsb29rIGZvci5cbiAgIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBzdHJpbmcgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG4gICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBzdHJpbmcgYXQgdGhhdCBwb3NpdGlvbi5cblxuc3RyLnN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZ1xuICAgY2hhcmFjdGVycyByZW1vdmVkLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZVxuICAgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmUgcmVtb3ZlZC4gSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqXG4gICBhcmd1bWVudCBkZWZhdWx0cyB0byByZW1vdmluZyB3aGl0ZXNwYWNlLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpc1xuICAgbm90IGEgcHJlZml4IG9yIHN1ZmZpeDsgcmF0aGVyLCBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlXG4gICBzdHJpcHBlZDpcblxuICAgICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5zdHJpcCgpXG4gICAgICBcJ3NwYWNpb3VzXCdcbiAgICAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLnN0cmlwKFwnY21vd3ouXCcpXG4gICAgICBcJ2V4YW1wbGVcJ1xuXG4gICBUaGUgb3V0ZXJtb3N0IGxlYWRpbmcgYW5kIHRyYWlsaW5nICpjaGFycyogYXJndW1lbnQgdmFsdWVzIGFyZVxuICAgc3RyaXBwZWQgZnJvbSB0aGUgc3RyaW5nLiBDaGFyYWN0ZXJzIGFyZSByZW1vdmVkIGZyb20gdGhlIGxlYWRpbmdcbiAgIGVuZCB1bnRpbCByZWFjaGluZyBhIHN0cmluZyBjaGFyYWN0ZXIgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIHRoZVxuICAgc2V0IG9mIGNoYXJhY3RlcnMgaW4gKmNoYXJzKi4gQSBzaW1pbGFyIGFjdGlvbiB0YWtlcyBwbGFjZSBvbiB0aGVcbiAgIHRyYWlsaW5nIGVuZC4gRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiBjb21tZW50X3N0cmluZyA9IFwnIy4uLi4uLi4gU2VjdGlvbiAzLjIuMSBJc3N1ZSAjMzIgLi4uLi4uLlwnXG4gICAgICA+Pj4gY29tbWVudF9zdHJpbmcuc3RyaXAoXCcuIyEgXCcpXG4gICAgICBcJ1NlY3Rpb24gMy4yLjEgSXNzdWUgIzMyXCdcblxuc3RyLnN3YXBjYXNlKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdXBwZXJjYXNlIGNoYXJhY3RlcnMgY29udmVydGVkIHRvXG4gICBsb3dlcmNhc2UgYW5kIHZpY2UgdmVyc2EuIE5vdGUgdGhhdCBpdCBpcyBub3QgbmVjZXNzYXJpbHkgdHJ1ZSB0aGF0XG4gICAicy5zd2FwY2FzZSgpLnN3YXBjYXNlKCkgPT0gcyIuXG5cbnN0ci50aXRsZSgpXG5cbiAgIFJldHVybiBhIHRpdGxlY2FzZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZXJlIHdvcmRzIHN0YXJ0IHdpdGggYW5cbiAgIHVwcGVyY2FzZSBjaGFyYWN0ZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbG93ZXJjYXNlLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IFwnSGVsbG8gd29ybGRcJy50aXRsZSgpXG4gICAgICBcJ0hlbGxvIFdvcmxkXCdcblxuICAgVGhlIGFsZ29yaXRobSB1c2VzIGEgc2ltcGxlIGxhbmd1YWdlLWluZGVwZW5kZW50IGRlZmluaXRpb24gb2YgYVxuICAgd29yZCBhcyBncm91cHMgb2YgY29uc2VjdXRpdmUgbGV0dGVycy4gIFRoZSBkZWZpbml0aW9uIHdvcmtzIGluXG4gICBtYW55IGNvbnRleHRzIGJ1dCBpdCBtZWFucyB0aGF0IGFwb3N0cm9waGVzIGluIGNvbnRyYWN0aW9ucyBhbmRcbiAgIHBvc3Nlc3NpdmVzIGZvcm0gd29yZCBib3VuZGFyaWVzLCB3aGljaCBtYXkgbm90IGJlIHRoZSBkZXNpcmVkXG4gICByZXN1bHQ6XG5cbiAgICAgID4+PiAidGhleVwncmUgYmlsbFwncyBmcmllbmRzIGZyb20gdGhlIFVLIi50aXRsZSgpXG4gICAgICAiVGhleVwnUmUgQmlsbFwnUyBGcmllbmRzIEZyb20gVGhlIFVrIlxuXG4gICBBIHdvcmthcm91bmQgZm9yIGFwb3N0cm9waGVzIGNhbiBiZSBjb25zdHJ1Y3RlZCB1c2luZyByZWd1bGFyXG4gICBleHByZXNzaW9uczpcblxuICAgICAgPj4+IGltcG9ydCByZVxuICAgICAgPj4+IGRlZiB0aXRsZWNhc2Uocyk6XG4gICAgICAuLi4gICAgIHJldHVybiByZS5zdWIociJbQS1aYS16XSsoXCdbQS1aYS16XSspPyIsXG4gICAgICAuLi4gICAgICAgICAgICAgICAgICAgbGFtYmRhIG1vOiBtby5ncm91cCgwKVswXS51cHBlcigpICtcbiAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vLmdyb3VwKDApWzE6XS5sb3dlcigpLFxuICAgICAgLi4uICAgICAgICAgICAgICAgICAgIHMpXG4gICAgICAuLi5cbiAgICAgID4+PiB0aXRsZWNhc2UoInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcy4iKVxuICAgICAgIlRoZXlcJ3JlIEJpbGxcJ3MgRnJpZW5kcy4iXG5cbnN0ci50cmFuc2xhdGUodGFibGUpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyBpbiB3aGljaCBlYWNoIGNoYXJhY3RlciBoYXMgYmVlbiBtYXBwZWRcbiAgIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLiAgVGhlIHRhYmxlIG11c3QgYmUgYW4gb2JqZWN0XG4gICB0aGF0IGltcGxlbWVudHMgaW5kZXhpbmcgdmlhICJfX2dldGl0ZW1fXygpIiwgdHlwaWNhbGx5IGEgKm1hcHBpbmcqXG4gICBvciAqc2VxdWVuY2UqLiAgV2hlbiBpbmRleGVkIGJ5IGEgVW5pY29kZSBvcmRpbmFsIChhbiBpbnRlZ2VyKSwgdGhlXG4gICB0YWJsZSBvYmplY3QgY2FuIGRvIGFueSBvZiB0aGUgZm9sbG93aW5nOiByZXR1cm4gYSBVbmljb2RlIG9yZGluYWxcbiAgIG9yIGEgc3RyaW5nLCB0byBtYXAgdGhlIGNoYXJhY3RlciB0byBvbmUgb3IgbW9yZSBvdGhlciBjaGFyYWN0ZXJzO1xuICAgcmV0dXJuICJOb25lIiwgdG8gZGVsZXRlIHRoZSBjaGFyYWN0ZXIgZnJvbSB0aGUgcmV0dXJuIHN0cmluZzsgb3JcbiAgIHJhaXNlIGEgIkxvb2t1cEVycm9yIiBleGNlcHRpb24sIHRvIG1hcCB0aGUgY2hhcmFjdGVyIHRvIGl0c2VsZi5cblxuICAgWW91IGNhbiB1c2UgInN0ci5tYWtldHJhbnMoKSIgdG8gY3JlYXRlIGEgdHJhbnNsYXRpb24gbWFwIGZyb21cbiAgIGNoYXJhY3Rlci10by1jaGFyYWN0ZXIgbWFwcGluZ3MgaW4gZGlmZmVyZW50IGZvcm1hdHMuXG5cbiAgIFNlZSBhbHNvIHRoZSAiY29kZWNzIiBtb2R1bGUgZm9yIGEgbW9yZSBmbGV4aWJsZSBhcHByb2FjaCB0byBjdXN0b21cbiAgIGNoYXJhY3RlciBtYXBwaW5ncy5cblxuc3RyLnVwcGVyKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzIFs0XVxuICAgY29udmVydGVkIHRvIHVwcGVyY2FzZS4gIE5vdGUgdGhhdCAic3RyLnVwcGVyKCkuaXN1cHBlcigpIiBtaWdodCBiZVxuICAgIkZhbHNlIiBpZiAicyIgY29udGFpbnMgdW5jYXNlZCBjaGFyYWN0ZXJzIG9yIGlmIHRoZSBVbmljb2RlXG4gICBjYXRlZ29yeSBvZiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlcihzKSBpcyBub3QgIkx1IiAoTGV0dGVyLFxuICAgdXBwZXJjYXNlKSwgYnV0IGUuZy4gIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG4gICBUaGUgdXBwZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbnN0ci56ZmlsbCh3aWR0aClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggQVNDSUkgIlwnMFwnIiBkaWdpdHMgdG9cbiAgIG1ha2UgYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIEEgbGVhZGluZyBzaWduIHByZWZpeFxuICAgKCJcJytcJyIvIlwnLVwnIikgaXMgaGFuZGxlZCBieSBpbnNlcnRpbmcgdGhlIHBhZGRpbmcgKmFmdGVyKiB0aGUgc2lnblxuICAgY2hhcmFjdGVyIHJhdGhlciB0aGFuIGJlZm9yZS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZlxuICAgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gImxlbihzKSIuXG5cbiAgIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gIjQyIi56ZmlsbCg1KVxuICAgICAgXCcwMDA0MlwnXG4gICAgICA+Pj4gIi00MiIuemZpbGwoNSlcbiAgICAgIFwnLTAwNDJcJ1xuJywKICAnc3RyaW5ncyc6IHUnXG5TdHJpbmcgYW5kIEJ5dGVzIGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cblN0cmluZyBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9uczpcblxuICAgc3RyaW5nbGl0ZXJhbCAgIDo6PSBbc3RyaW5ncHJlZml4XShzaG9ydHN0cmluZyB8IGxvbmdzdHJpbmcpXG4gICBzdHJpbmdwcmVmaXggICAgOjo9ICJyIiB8ICJ1IiB8ICJSIiB8ICJVIlxuICAgc2hvcnRzdHJpbmcgICAgIDo6PSAiXCciIHNob3J0c3RyaW5naXRlbSogIlwnIiB8IFwnIlwnIHNob3J0c3RyaW5naXRlbSogXCciXCdcbiAgIGxvbmdzdHJpbmcgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ3N0cmluZ2l0ZW0qICJcJ1wnXCciIHwgXCciIiJcJyBsb25nc3RyaW5naXRlbSogXCciIiJcJ1xuICAgc2hvcnRzdHJpbmdpdGVtIDo6PSBzaG9ydHN0cmluZ2NoYXIgfCBzdHJpbmdlc2NhcGVzZXFcbiAgIGxvbmdzdHJpbmdpdGVtICA6Oj0gbG9uZ3N0cmluZ2NoYXIgfCBzdHJpbmdlc2NhcGVzZXFcbiAgIHNob3J0c3RyaW5nY2hhciA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiIG9yIG5ld2xpbmUgb3IgdGhlIHF1b3RlPlxuICAgbG9uZ3N0cmluZ2NoYXIgIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4gICBzdHJpbmdlc2NhcGVzZXEgOjo9ICJcXCIgPGFueSBzb3VyY2UgY2hhcmFjdGVyPlxuXG4gICBieXRlc2xpdGVyYWwgICA6Oj0gYnl0ZXNwcmVmaXgoc2hvcnRieXRlcyB8IGxvbmdieXRlcylcbiAgIGJ5dGVzcHJlZml4ICAgIDo6PSAiYiIgfCAiQiIgfCAiYnIiIHwgIkJyIiB8ICJiUiIgfCAiQlIiIHwgInJiIiB8ICJyQiIgfCAiUmIiIHwgIlJCIlxuICAgc2hvcnRieXRlcyAgICAgOjo9ICJcJyIgc2hvcnRieXRlc2l0ZW0qICJcJyIgfCBcJyJcJyBzaG9ydGJ5dGVzaXRlbSogXCciXCdcbiAgIGxvbmdieXRlcyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nYnl0ZXNpdGVtKiAiXCdcJ1wnIiB8IFwnIiIiXCcgbG9uZ2J5dGVzaXRlbSogXCciIiJcJ1xuICAgc2hvcnRieXRlc2l0ZW0gOjo9IHNob3J0Ynl0ZXNjaGFyIHwgYnl0ZXNlc2NhcGVzZXFcbiAgIGxvbmdieXRlc2l0ZW0gIDo6PSBsb25nYnl0ZXNjaGFyIHwgYnl0ZXNlc2NhcGVzZXFcbiAgIHNob3J0Ynl0ZXNjaGFyIDo6PSA8YW55IEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgIlxcIiBvciBuZXdsaW5lIG9yIHRoZSBxdW90ZT5cbiAgIGxvbmdieXRlc2NoYXIgIDo6PSA8YW55IEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbiAgIGJ5dGVzZXNjYXBlc2VxIDo6PSAiXFwiIDxhbnkgQVNDSUkgY2hhcmFjdGVyPlxuXG5PbmUgc3ludGFjdGljIHJlc3RyaWN0aW9uIG5vdCBpbmRpY2F0ZWQgYnkgdGhlc2UgcHJvZHVjdGlvbnMgaXMgdGhhdFxud2hpdGVzcGFjZSBpcyBub3QgYWxsb3dlZCBiZXR3ZWVuIHRoZSAic3RyaW5ncHJlZml4IiBvciAiYnl0ZXNwcmVmaXgiXG5hbmQgdGhlIHJlc3Qgb2YgdGhlIGxpdGVyYWwuIFRoZSBzb3VyY2UgY2hhcmFjdGVyIHNldCBpcyBkZWZpbmVkIGJ5XG50aGUgZW5jb2RpbmcgZGVjbGFyYXRpb247IGl0IGlzIFVURi04IGlmIG5vIGVuY29kaW5nIGRlY2xhcmF0aW9uIGlzXG5naXZlbiBpbiB0aGUgc291cmNlIGZpbGU7IHNlZSBzZWN0aW9uICpFbmNvZGluZyBkZWNsYXJhdGlvbnMqLlxuXG5JbiBwbGFpbiBFbmdsaXNoOiBCb3RoIHR5cGVzIG9mIGxpdGVyYWxzIGNhbiBiZSBlbmNsb3NlZCBpbiBtYXRjaGluZ1xuc2luZ2xlIHF1b3RlcyAoIlwnIikgb3IgZG91YmxlIHF1b3RlcyAoIiIiKS4gIFRoZXkgY2FuIGFsc28gYmUgZW5jbG9zZWRcbmluIG1hdGNoaW5nIGdyb3VwcyBvZiB0aHJlZSBzaW5nbGUgb3IgZG91YmxlIHF1b3RlcyAodGhlc2UgYXJlXG5nZW5lcmFsbHkgcmVmZXJyZWQgdG8gYXMgKnRyaXBsZS1xdW90ZWQgc3RyaW5ncyopLiAgVGhlIGJhY2tzbGFzaFxuKCJcXCIpIGNoYXJhY3RlciBpcyB1c2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgb3RoZXJ3aXNlIGhhdmUgYVxuc3BlY2lhbCBtZWFuaW5nLCBzdWNoIGFzIG5ld2xpbmUsIGJhY2tzbGFzaCBpdHNlbGYsIG9yIHRoZSBxdW90ZVxuY2hhcmFjdGVyLlxuXG5CeXRlcyBsaXRlcmFscyBhcmUgYWx3YXlzIHByZWZpeGVkIHdpdGggIlwnYlwnIiBvciAiXCdCXCciOyB0aGV5IHByb2R1Y2VcbmFuIGluc3RhbmNlIG9mIHRoZSAiYnl0ZXMiIHR5cGUgaW5zdGVhZCBvZiB0aGUgInN0ciIgdHlwZS4gIFRoZXkgbWF5XG5vbmx5IGNvbnRhaW4gQVNDSUkgY2hhcmFjdGVyczsgYnl0ZXMgd2l0aCBhIG51bWVyaWMgdmFsdWUgb2YgMTI4IG9yXG5ncmVhdGVyIG11c3QgYmUgZXhwcmVzc2VkIHdpdGggZXNjYXBlcy5cblxuQXMgb2YgUHl0aG9uIDMuMyBpdCBpcyBwb3NzaWJsZSBhZ2FpbiB0byBwcmVmaXggc3RyaW5nIGxpdGVyYWxzIHdpdGggYVxuInUiIHByZWZpeCB0byBzaW1wbGlmeSBtYWludGVuYW5jZSBvZiBkdWFsIDIueCBhbmQgMy54IGNvZGViYXNlcy5cblxuQm90aCBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIG1heSBvcHRpb25hbGx5IGJlIHByZWZpeGVkIHdpdGggYVxubGV0dGVyICJcJ3JcJyIgb3IgIlwnUlwnIjsgc3VjaCBzdHJpbmdzIGFyZSBjYWxsZWQgKnJhdyBzdHJpbmdzKiBhbmQgdHJlYXRcbmJhY2tzbGFzaGVzIGFzIGxpdGVyYWwgY2hhcmFjdGVycy4gIEFzIGEgcmVzdWx0LCBpbiBzdHJpbmcgbGl0ZXJhbHMsXG4iXCdcXFVcJyIgYW5kICJcJ1xcdVwnIiBlc2NhcGVzIGluIHJhdyBzdHJpbmdzIGFyZSBub3QgdHJlYXRlZCBzcGVjaWFsbHkuXG5HaXZlbiB0aGF0IFB5dGhvbiAyLnhcJ3MgcmF3IHVuaWNvZGUgbGl0ZXJhbHMgYmVoYXZlIGRpZmZlcmVudGx5IHRoYW5cblB5dGhvbiAzLnhcJ3MgdGhlICJcJ3VyXCciIHN5bnRheCBpcyBub3Qgc3VwcG9ydGVkLlxuXG5OZXcgaW4gdmVyc2lvbiAzLjM6IFRoZSAiXCdyYlwnIiBwcmVmaXggb2YgcmF3IGJ5dGVzIGxpdGVyYWxzIGhhcyBiZWVuXG5hZGRlZCBhcyBhIHN5bm9ueW0gb2YgIlwnYnJcJyIuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuMzogU3VwcG9ydCBmb3IgdGhlIHVuaWNvZGUgbGVnYWN5IGxpdGVyYWxcbigidVwndmFsdWVcJyIpIHdhcyByZWludHJvZHVjZWQgdG8gc2ltcGxpZnkgdGhlIG1haW50ZW5hbmNlIG9mIGR1YWxcblB5dGhvbiAyLnggYW5kIDMueCBjb2RlYmFzZXMuIFNlZSAqKlBFUCA0MTQqKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cblxuSW4gdHJpcGxlLXF1b3RlZCBsaXRlcmFscywgdW5lc2NhcGVkIG5ld2xpbmVzIGFuZCBxdW90ZXMgYXJlIGFsbG93ZWRcbihhbmQgYXJlIHJldGFpbmVkKSwgZXhjZXB0IHRoYXQgdGhyZWUgdW5lc2NhcGVkIHF1b3RlcyBpbiBhIHJvd1xudGVybWluYXRlIHRoZSBsaXRlcmFsLiAgKEEgInF1b3RlIiBpcyB0aGUgY2hhcmFjdGVyIHVzZWQgdG8gb3BlbiB0aGVcbmxpdGVyYWwsIGkuZS4gZWl0aGVyICJcJyIgb3IgIiIiLilcblxuVW5sZXNzIGFuICJcJ3JcJyIgb3IgIlwnUlwnIiBwcmVmaXggaXMgcHJlc2VudCwgZXNjYXBlIHNlcXVlbmNlcyBpbiBzdHJpbmdcbmFuZCBieXRlcyBsaXRlcmFscyBhcmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIHJ1bGVzIHNpbWlsYXIgdG8gdGhvc2VcbnVzZWQgYnkgU3RhbmRhcmQgQy4gIFRoZSByZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlOlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICB8XG4rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG58ICJcXG5ld2xpbmUiICAgICAgICB8IEJhY2tzbGFzaCBhbmQgbmV3bGluZSBpZ25vcmVkICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxcXCIgICAgICAgICAgICAgIHwgQmFja3NsYXNoICgiXFwiKSAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxcJyIgICAgICAgICAgICAgIHwgU2luZ2xlIHF1b3RlICgiXCciKSAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFwiIiAgICAgICAgICAgICAgfCBEb3VibGUgcXVvdGUgKCIiIikgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcYSIgICAgICAgICAgICAgIHwgQVNDSUkgQmVsbCAoQkVMKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXGIiICAgICAgICAgICAgICB8IEFTQ0lJIEJhY2tzcGFjZSAoQlMpICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxmIiAgICAgICAgICAgICAgfCBBU0NJSSBGb3JtZmVlZCAoRkYpICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcbiIgICAgICAgICAgICAgIHwgQVNDSUkgTGluZWZlZWQgKExGKSAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXHIiICAgICAgICAgICAgICB8IEFTQ0lJIENhcnJpYWdlIFJldHVybiAoQ1IpICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFx0IiAgICAgICAgICAgICAgfCBBU0NJSSBIb3Jpem9udGFsIFRhYiAoVEFCKSAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcdiIgICAgICAgICAgICAgIHwgQVNDSUkgVmVydGljYWwgVGFiIChWVCkgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXG9vbyIgICAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIG9jdGFsIHZhbHVlICpvb28qICB8ICgxLDMpICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFx4aGgiICAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBoZXggdmFsdWUgKmhoKiAgICAgfCAoMiwzKSAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcblxuRXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nIGxpdGVyYWxzIGFyZTpcblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfFxuKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xufCAiXFxOe25hbWV9IiAgICAgICAgfCBDaGFyYWN0ZXIgbmFtZWQgKm5hbWUqIGluIHRoZSAgICAgfCAoNCkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCBVbmljb2RlIGRhdGFiYXNlICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcdXh4eHgiICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMTYtYml0IGhleCB2YWx1ZSAgIHwgKDUpICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgKnh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXFV4eHh4eHh4eCIgICAgICB8IENoYXJhY3RlciB3aXRoIDMyLWJpdCBoZXggdmFsdWUgICB8ICg2KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8ICp4eHh4eHh4eCogICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gQXMgaW4gU3RhbmRhcmQgQywgdXAgdG8gdGhyZWUgb2N0YWwgZGlnaXRzIGFyZSBhY2NlcHRlZC5cblxuMi4gVW5saWtlIGluIFN0YW5kYXJkIEMsIGV4YWN0bHkgdHdvIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG4zLiBJbiBhIGJ5dGVzIGxpdGVyYWwsIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBlc2NhcGVzIGRlbm90ZSB0aGVcbiAgIGJ5dGUgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuIEluIGEgc3RyaW5nIGxpdGVyYWwsIHRoZXNlIGVzY2FwZXNcbiAgIGRlbm90ZSBhIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggdGhlIGdpdmVuIHZhbHVlLlxuXG40LiBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciBuYW1lIGFsaWFzZXMgWzFdIGhhcyBiZWVuXG4gICBhZGRlZC5cblxuNS4gSW5kaXZpZHVhbCBjb2RlIHVuaXRzIHdoaWNoIGZvcm0gcGFydHMgb2YgYSBzdXJyb2dhdGUgcGFpciBjYW5cbiAgIGJlIGVuY29kZWQgdXNpbmcgdGhpcyBlc2NhcGUgc2VxdWVuY2UuICBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmVcbiAgIHJlcXVpcmVkLlxuXG42LiBBbnkgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlIGVuY29kZWQgdGhpcyB3YXkuICBFeGFjdGx5IGVpZ2h0XG4gICBoZXggZGlnaXRzIGFyZSByZXF1aXJlZC5cblxuVW5saWtlIFN0YW5kYXJkIEMsIGFsbCB1bnJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmUgbGVmdCBpbiB0aGVcbnN0cmluZyB1bmNoYW5nZWQsIGkuZS4sICp0aGUgYmFja3NsYXNoIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCouICAoVGhpc1xuYmVoYXZpb3IgaXMgdXNlZnVsIHdoZW4gZGVidWdnaW5nOiBpZiBhbiBlc2NhcGUgc2VxdWVuY2UgaXMgbWlzdHlwZWQsXG50aGUgcmVzdWx0aW5nIG91dHB1dCBpcyBtb3JlIGVhc2lseSByZWNvZ25pemVkIGFzIGJyb2tlbi4pICBJdCBpcyBhbHNvXG5pbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoZSBlc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiBzdHJpbmdcbmxpdGVyYWxzIGZhbGwgaW50byB0aGUgY2F0ZWdvcnkgb2YgdW5yZWNvZ25pemVkIGVzY2FwZXMgZm9yIGJ5dGVzXG5saXRlcmFscy5cblxuRXZlbiBpbiBhIHJhdyBsaXRlcmFsLCBxdW90ZXMgY2FuIGJlIGVzY2FwZWQgd2l0aCBhIGJhY2tzbGFzaCwgYnV0IHRoZVxuYmFja3NsYXNoIHJlbWFpbnMgaW4gdGhlIHJlc3VsdDsgZm9yIGV4YW1wbGUsICJyIlxcIiIiIGlzIGEgdmFsaWRcbnN0cmluZyBsaXRlcmFsIGNvbnNpc3Rpbmcgb2YgdHdvIGNoYXJhY3RlcnM6IGEgYmFja3NsYXNoIGFuZCBhIGRvdWJsZVxucXVvdGU7ICJyIlxcIiIgaXMgbm90IGEgdmFsaWQgc3RyaW5nIGxpdGVyYWwgKGV2ZW4gYSByYXcgc3RyaW5nIGNhbm5vdFxuZW5kIGluIGFuIG9kZCBudW1iZXIgb2YgYmFja3NsYXNoZXMpLiAgU3BlY2lmaWNhbGx5LCAqYSByYXcgbGl0ZXJhbFxuY2Fubm90IGVuZCBpbiBhIHNpbmdsZSBiYWNrc2xhc2gqIChzaW5jZSB0aGUgYmFja3NsYXNoIHdvdWxkIGVzY2FwZVxudGhlIGZvbGxvd2luZyBxdW90ZSBjaGFyYWN0ZXIpLiAgTm90ZSBhbHNvIHRoYXQgYSBzaW5nbGUgYmFja3NsYXNoXG5mb2xsb3dlZCBieSBhIG5ld2xpbmUgaXMgaW50ZXJwcmV0ZWQgYXMgdGhvc2UgdHdvIGNoYXJhY3RlcnMgYXMgcGFydFxub2YgdGhlIGxpdGVyYWwsICpub3QqIGFzIGEgbGluZSBjb250aW51YXRpb24uXG4nLAogICdzdWJzY3JpcHRpb25zJzogdSdcblN1YnNjcmlwdGlvbnNcbioqKioqKioqKioqKipcblxuQSBzdWJzY3JpcHRpb24gc2VsZWN0cyBhbiBpdGVtIG9mIGEgc2VxdWVuY2UgKHN0cmluZywgdHVwbGUgb3IgbGlzdClcbm9yIG1hcHBpbmcgKGRpY3Rpb25hcnkpIG9iamVjdDpcblxuICAgc3Vic2NyaXB0aW9uIDo6PSBwcmltYXJ5ICJbIiBleHByZXNzaW9uX2xpc3QgIl0iXG5cblRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYW4gb2JqZWN0IHRoYXQgc3VwcG9ydHMgc3Vic2NyaXB0aW9uXG4obGlzdHMgb3IgZGljdGlvbmFyaWVzIGZvciBleGFtcGxlKS4gIFVzZXItZGVmaW5lZCBvYmplY3RzIGNhbiBzdXBwb3J0XG5zdWJzY3JpcHRpb24gYnkgZGVmaW5pbmcgYSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuXG5Gb3IgYnVpbHQtaW4gb2JqZWN0cywgdGhlcmUgYXJlIHR3byB0eXBlcyBvZiBvYmplY3RzIHRoYXQgc3VwcG9ydFxuc3Vic2NyaXB0aW9uOlxuXG5JZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcsIHRoZSBleHByZXNzaW9uIGxpc3QgbXVzdCBldmFsdWF0ZSB0byBhblxub2JqZWN0IHdob3NlIHZhbHVlIGlzIG9uZSBvZiB0aGUga2V5cyBvZiB0aGUgbWFwcGluZywgYW5kIHRoZVxuc3Vic2NyaXB0aW9uIHNlbGVjdHMgdGhlIHZhbHVlIGluIHRoZSBtYXBwaW5nIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhhdFxua2V5LiAgKFRoZSBleHByZXNzaW9uIGxpc3QgaXMgYSB0dXBsZSBleGNlcHQgaWYgaXQgaGFzIGV4YWN0bHkgb25lXG5pdGVtLilcblxuSWYgdGhlIHByaW1hcnkgaXMgYSBzZXF1ZW5jZSwgdGhlIGV4cHJlc3Npb24gKGxpc3QpIG11c3QgZXZhbHVhdGUgdG9cbmFuIGludGVnZXIgb3IgYSBzbGljZSAoYXMgZGlzY3Vzc2VkIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbikuXG5cblRoZSBmb3JtYWwgc3ludGF4IG1ha2VzIG5vIHNwZWNpYWwgcHJvdmlzaW9uIGZvciBuZWdhdGl2ZSBpbmRpY2VzIGluXG5zZXF1ZW5jZXM7IGhvd2V2ZXIsIGJ1aWx0LWluIHNlcXVlbmNlcyBhbGwgcHJvdmlkZSBhICJfX2dldGl0ZW1fXygpIlxubWV0aG9kIHRoYXQgaW50ZXJwcmV0cyBuZWdhdGl2ZSBpbmRpY2VzIGJ5IGFkZGluZyB0aGUgbGVuZ3RoIG9mIHRoZVxuc2VxdWVuY2UgdG8gdGhlIGluZGV4IChzbyB0aGF0ICJ4Wy0xXSIgc2VsZWN0cyB0aGUgbGFzdCBpdGVtIG9mICJ4IikuXG5UaGUgcmVzdWx0aW5nIHZhbHVlIG11c3QgYmUgYSBub25uZWdhdGl2ZSBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgbnVtYmVyXG5vZiBpdGVtcyBpbiB0aGUgc2VxdWVuY2UsIGFuZCB0aGUgc3Vic2NyaXB0aW9uIHNlbGVjdHMgdGhlIGl0ZW0gd2hvc2VcbmluZGV4IGlzIHRoYXQgdmFsdWUgKGNvdW50aW5nIGZyb20gemVybykuIFNpbmNlIHRoZSBzdXBwb3J0IGZvclxubmVnYXRpdmUgaW5kaWNlcyBhbmQgc2xpY2luZyBvY2N1cnMgaW4gdGhlIG9iamVjdFwncyAiX19nZXRpdGVtX18oKSJcbm1ldGhvZCwgc3ViY2xhc3NlcyBvdmVycmlkaW5nIHRoaXMgbWV0aG9kIHdpbGwgbmVlZCB0byBleHBsaWNpdGx5IGFkZFxudGhhdCBzdXBwb3J0LlxuXG5BIHN0cmluZ1wncyBpdGVtcyBhcmUgY2hhcmFjdGVycy4gIEEgY2hhcmFjdGVyIGlzIG5vdCBhIHNlcGFyYXRlIGRhdGFcbnR5cGUgYnV0IGEgc3RyaW5nIG9mIGV4YWN0bHkgb25lIGNoYXJhY3Rlci5cbicsCiAgJ3RydXRoJzogdSdcblRydXRoIFZhbHVlIFRlc3RpbmdcbioqKioqKioqKioqKioqKioqKipcblxuQW55IG9iamVjdCBjYW4gYmUgdGVzdGVkIGZvciB0cnV0aCB2YWx1ZSwgZm9yIHVzZSBpbiBhbiAiaWYiIG9yXG4id2hpbGUiIGNvbmRpdGlvbiBvciBhcyBvcGVyYW5kIG9mIHRoZSBCb29sZWFuIG9wZXJhdGlvbnMgYmVsb3cuIFRoZVxuZm9sbG93aW5nIHZhbHVlcyBhcmUgY29uc2lkZXJlZCBmYWxzZTpcblxuKiAiTm9uZSJcblxuKiAiRmFsc2UiXG5cbiogemVybyBvZiBhbnkgbnVtZXJpYyB0eXBlLCBmb3IgZXhhbXBsZSwgIjAiLCAiMC4wIiwgIjBqIi5cblxuKiBhbnkgZW1wdHkgc2VxdWVuY2UsIGZvciBleGFtcGxlLCAiXCdcJyIsICIoKSIsICJbXSIuXG5cbiogYW55IGVtcHR5IG1hcHBpbmcsIGZvciBleGFtcGxlLCAie30iLlxuXG4qIGluc3RhbmNlcyBvZiB1c2VyLWRlZmluZWQgY2xhc3NlcywgaWYgdGhlIGNsYXNzIGRlZmluZXMgYVxuICAiX19ib29sX18oKSIgb3IgIl9fbGVuX18oKSIgbWV0aG9kLCB3aGVuIHRoYXQgbWV0aG9kIHJldHVybnMgdGhlXG4gIGludGVnZXIgemVybyBvciAiYm9vbCIgdmFsdWUgIkZhbHNlIi4gWzFdXG5cbkFsbCBvdGhlciB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgdHJ1ZSAtLS0gc28gb2JqZWN0cyBvZiBtYW55IHR5cGVzIGFyZVxuYWx3YXlzIHRydWUuXG5cbk9wZXJhdGlvbnMgYW5kIGJ1aWx0LWluIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYSBCb29sZWFuIHJlc3VsdCBhbHdheXNcbnJldHVybiAiMCIgb3IgIkZhbHNlIiBmb3IgZmFsc2UgYW5kICIxIiBvciAiVHJ1ZSIgZm9yIHRydWUsIHVubGVzc1xub3RoZXJ3aXNlIHN0YXRlZC4gKEltcG9ydGFudCBleGNlcHRpb246IHRoZSBCb29sZWFuIG9wZXJhdGlvbnMgIm9yIlxuYW5kICJhbmQiIGFsd2F5cyByZXR1cm4gb25lIG9mIHRoZWlyIG9wZXJhbmRzLilcbicsCiAgJ3RyeSc6IHUnXG5UaGUgInRyeSIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSAidHJ5IiBzdGF0ZW1lbnQgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cCBjb2RlXG5mb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuXG4gICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgKCJleGNlcHQiIFtleHByZXNzaW9uIFsiYXMiIGlkZW50aWZpZXJdXSAiOiIgc3VpdGUpK1xuICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbiAgICAgICAgICAgICAgICAgWyJmaW5hbGx5IiAiOiIgc3VpdGVdXG4gICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAiZmluYWxseSIgIjoiIHN1aXRlXG5cblRoZSAiZXhjZXB0IiBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuIFdoZW4gbm9cbmV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbmV4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIHN1aXRlLCBhIHNlYXJjaCBmb3IgYW5cbmV4Y2VwdGlvbiBoYW5kbGVyIGlzIHN0YXJ0ZWQuICBUaGlzIHNlYXJjaCBpbnNwZWN0cyB0aGUgZXhjZXB0IGNsYXVzZXNcbmluIHR1cm4gdW50aWwgb25lIGlzIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLiAgQW4gZXhwcmVzc2lvbi1cbmxlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzIGFueVxuZXhjZXB0aW9uLiAgRm9yIGFuIGV4Y2VwdCBjbGF1c2Ugd2l0aCBhbiBleHByZXNzaW9uLCB0aGF0IGV4cHJlc3Npb25cbmlzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZSByZXN1bHRpbmdcbm9iamVjdCBpcyAiY29tcGF0aWJsZSIgd2l0aCB0aGUgZXhjZXB0aW9uLiAgQW4gb2JqZWN0IGlzIGNvbXBhdGlibGVcbndpdGggYW4gZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBjbGFzcyBvciBhIGJhc2UgY2xhc3Mgb2YgdGhlIGV4Y2VwdGlvblxub2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGUgZXhjZXB0aW9uLlxuXG5JZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNvbnRpbnVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb24gdGhlIGludm9jYXRpb24gc3RhY2suXG5bMV1cblxuSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCBjbGF1c2VcbnJhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBvcmlnaW5hbCBzZWFyY2ggZm9yIGEgaGFuZGxlciBpcyBjYW5jZWxlZCBhbmRcbmEgc2VhcmNoIHN0YXJ0cyBmb3IgdGhlIG5ldyBleGNlcHRpb24gaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uXG50aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlICJ0cnkiIHN0YXRlbWVudCByYWlzZWRcbnRoZSBleGNlcHRpb24pLlxuXG5XaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyBhc3NpZ25lZCB0b1xudGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlICJhcyIga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCBjbGF1c2UsIGlmXG5wcmVzZW50LCBhbmQgdGhlIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG5jbGF1c2VzIG11c3QgaGF2ZSBhbiBleGVjdXRhYmxlIGJsb2NrLiAgV2hlbiB0aGUgZW5kIG9mIHRoaXMgYmxvY2sgaXNcbnJlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgc3RhdGVtZW50LlxuKFRoaXMgbWVhbnMgdGhhdCBpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSBleGNlcHRpb24sXG5hbmQgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIHRyeSBjbGF1c2Ugb2YgdGhlIGlubmVyIGhhbmRsZXIsIHRoZVxub3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG5cbldoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHVzaW5nICJhcyB0YXJnZXQiLCBpdCBpcyBjbGVhcmVkXG5hdCB0aGUgZW5kIG9mIHRoZSBleGNlcHQgY2xhdXNlLiAgVGhpcyBpcyBhcyBpZlxuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIGZvb1xuXG53YXMgdHJhbnNsYXRlZCB0b1xuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIHRyeTpcbiAgICAgICAgICAgZm9vXG4gICAgICAgZmluYWxseTpcbiAgICAgICAgICAgZGVsIE5cblxuVGhpcyBtZWFucyB0aGUgZXhjZXB0aW9uIG11c3QgYmUgYXNzaWduZWQgdG8gYSBkaWZmZXJlbnQgbmFtZSB0byBiZVxuYWJsZSB0byByZWZlciB0byBpdCBhZnRlciB0aGUgZXhjZXB0IGNsYXVzZS4gIEV4Y2VwdGlvbnMgYXJlIGNsZWFyZWRcbmJlY2F1c2Ugd2l0aCB0aGUgdHJhY2ViYWNrIGF0dGFjaGVkIHRvIHRoZW0sIHRoZXkgZm9ybSBhIHJlZmVyZW5jZVxuY3ljbGUgd2l0aCB0aGUgc3RhY2sgZnJhbWUsIGtlZXBpbmcgYWxsIGxvY2FscyBpbiB0aGF0IGZyYW1lIGFsaXZlXG51bnRpbCB0aGUgbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gb2NjdXJzLlxuXG5CZWZvcmUgYW4gZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZCwgZGV0YWlscyBhYm91dCB0aGVcbmV4Y2VwdGlvbiBhcmUgc3RvcmVkIGluIHRoZSAic3lzIiBtb2R1bGUgYW5kIGNhbiBiZSBhY2Nlc3NlZCB2aWFcbiJzeXMuZXhjX2luZm8oKSIuICJzeXMuZXhjX2luZm8oKSIgcmV0dXJucyBhIDMtdHVwbGUgY29uc2lzdGluZyBvZiB0aGVcbmV4Y2VwdGlvbiBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSBhbmQgYSB0cmFjZWJhY2sgb2JqZWN0IChzZWVcbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpbiB0aGVcbnByb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gICJzeXMuZXhjX2luZm8oKSIgdmFsdWVzIGFyZVxucmVzdG9yZWQgdG8gdGhlaXIgcHJldmlvdXMgdmFsdWVzIChiZWZvcmUgdGhlIGNhbGwpIHdoZW4gcmV0dXJuaW5nXG5mcm9tIGEgZnVuY3Rpb24gdGhhdCBoYW5kbGVkIGFuIGV4Y2VwdGlvbi5cblxuVGhlIG9wdGlvbmFsICJlbHNlIiBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCBmbG93cyBvZmZcbnRoZSBlbmQgb2YgdGhlICJ0cnkiIGNsYXVzZS4gWzJdIEV4Y2VwdGlvbnMgaW4gdGhlICJlbHNlIiBjbGF1c2UgYXJlXG5ub3QgaGFuZGxlZCBieSB0aGUgcHJlY2VkaW5nICJleGNlcHQiIGNsYXVzZXMuXG5cbklmICJmaW5hbGx5IiBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgVGhlICJ0cnkiXG5jbGF1c2UgaXMgZXhlY3V0ZWQsIGluY2x1ZGluZyBhbnkgImV4Y2VwdCIgYW5kICJlbHNlIiBjbGF1c2VzLiAgSWYgYW5cbmV4Y2VwdGlvbiBvY2N1cnMgaW4gYW55IG9mIHRoZSBjbGF1c2VzIGFuZCBpcyBub3QgaGFuZGxlZCwgdGhlXG5leGNlcHRpb24gaXMgdGVtcG9yYXJpbHkgc2F2ZWQuIFRoZSAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkLiAgSWZcbnRoZXJlIGlzIGEgc2F2ZWQgZXhjZXB0aW9uIGl0IGlzIHJlLXJhaXNlZCBhdCB0aGUgZW5kIG9mIHRoZSAiZmluYWxseSJcbmNsYXVzZS4gIElmIHRoZSAiZmluYWxseSIgY2xhdXNlIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlvbiwgdGhlIHNhdmVkXG5leGNlcHRpb24gaXMgc2V0IGFzIHRoZSBjb250ZXh0IG9mIHRoZSBuZXcgZXhjZXB0aW9uLiBJZiB0aGUgImZpbmFsbHkiXG5jbGF1c2UgZXhlY3V0ZXMgYSAicmV0dXJuIiBvciAiYnJlYWsiIHN0YXRlbWVudCwgdGhlIHNhdmVkIGV4Y2VwdGlvblxuaXMgZGlzY2FyZGVkOlxuXG4gICA+Pj4gZGVmIGYoKTpcbiAgIC4uLiAgICAgdHJ5OlxuICAgLi4uICAgICAgICAgMS8wXG4gICAuLi4gICAgIGZpbmFsbHk6XG4gICAuLi4gICAgICAgICByZXR1cm4gNDJcbiAgIC4uLlxuICAgPj4+IGYoKVxuICAgNDJcblxuVGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtIGR1cmluZ1xuZXhlY3V0aW9uIG9mIHRoZSAiZmluYWxseSIgY2xhdXNlLlxuXG5XaGVuIGEgInJldHVybiIsICJicmVhayIgb3IgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgaW4gdGhlXG4idHJ5IiBzdWl0ZSBvZiBhICJ0cnkiLi4uImZpbmFsbHkiIHN0YXRlbWVudCwgdGhlICJmaW5hbGx5IiBjbGF1c2UgaXNcbmFsc28gZXhlY3V0ZWQgXCdvbiB0aGUgd2F5IG91dC5cJyBBICJjb250aW51ZSIgc3RhdGVtZW50IGlzIGlsbGVnYWwgaW5cbnRoZSAiZmluYWxseSIgY2xhdXNlLiAoVGhlIHJlYXNvbiBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY3VycmVudFxuaW1wbGVtZW50YXRpb24gLS0tIHRoaXMgcmVzdHJpY3Rpb24gbWF5IGJlIGxpZnRlZCBpbiB0aGUgZnV0dXJlKS5cblxuVGhlIHJldHVybiB2YWx1ZSBvZiBhIGZ1bmN0aW9uIGlzIGRldGVybWluZWQgYnkgdGhlIGxhc3QgInJldHVybiJcbnN0YXRlbWVudCBleGVjdXRlZC4gIFNpbmNlIHRoZSAiZmluYWxseSIgY2xhdXNlIGFsd2F5cyBleGVjdXRlcywgYVxuInJldHVybiIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSAiZmluYWxseSIgY2xhdXNlIHdpbGwgYWx3YXlzIGJlIHRoZVxubGFzdCBvbmUgZXhlY3V0ZWQ6XG5cbiAgID4+PiBkZWYgZm9vKCk6XG4gICAuLi4gICAgIHRyeTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ3RyeVwnXG4gICAuLi4gICAgIGZpbmFsbHk6XG4gICAuLi4gICAgICAgICByZXR1cm4gXCdmaW5hbGx5XCdcbiAgIC4uLlxuICAgPj4+IGZvbygpXG4gICBcJ2ZpbmFsbHlcJ1xuXG5BZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbipFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSAicmFpc2UiIHN0YXRlbWVudCB0b1xuZ2VuZXJhdGUgZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlIHN0YXRlbWVudCouXG4nLAotICd0eXBlcyc6IHUnXG5UaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHlcbioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5CZWxvdyBpcyBhIGxpc3Qgb2YgdGhlIHR5cGVzIHRoYXQgYXJlIGJ1aWx0IGludG8gUHl0aG9uLiAgRXh0ZW5zaW9uXG5tb2R1bGVzICh3cml0dGVuIGluIEMsIEphdmEsIG9yIG90aGVyIGxhbmd1YWdlcywgZGVwZW5kaW5nIG9uIHRoZVxuaW1wbGVtZW50YXRpb24pIGNhbiBkZWZpbmUgYWRkaXRpb25hbCB0eXBlcy4gIEZ1dHVyZSB2ZXJzaW9ucyBvZlxuUHl0aG9uIG1heSBhZGQgdHlwZXMgdG8gdGhlIHR5cGUgaGllcmFyY2h5IChlLmcuLCByYXRpb25hbCBudW1iZXJzLFxuZWZmaWNpZW50bHkgc3RvcmVkIGFycmF5cyBvZiBpbnRlZ2VycywgZXRjLiksIGFsdGhvdWdoIHN1Y2ggYWRkaXRpb25zXG53aWxsIG9mdGVuIGJlIHByb3ZpZGVkIHZpYSB0aGUgc3RhbmRhcmQgbGlicmFyeSBpbnN0ZWFkLlxuXG5Tb21lIG9mIHRoZSB0eXBlIGRlc2NyaXB0aW9ucyBiZWxvdyBjb250YWluIGEgcGFyYWdyYXBoIGxpc3Rpbmdcblwnc3BlY2lhbCBhdHRyaWJ1dGVzLlwnICBUaGVzZSBhcmUgYXR0cmlidXRlcyB0aGF0IHByb3ZpZGUgYWNjZXNzIHRvIHRoZVxuaW1wbGVtZW50YXRpb24gYW5kIGFyZSBub3QgaW50ZW5kZWQgZm9yIGdlbmVyYWwgdXNlLiAgVGhlaXIgZGVmaW5pdGlvblxubWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLlxuXG5Ob25lXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGJ1aWx0LWluIG5hbWUgIk5vbmUiLiBJdFxuICAgaXMgdXNlZCB0byBzaWduaWZ5IHRoZSBhYnNlbmNlIG9mIGEgdmFsdWUgaW4gbWFueSBzaXR1YXRpb25zLCBlLmcuLFxuICAgaXQgaXMgcmV0dXJuZWQgZnJvbSBmdW5jdGlvbnMgdGhhdCBkb25cJ3QgZXhwbGljaXRseSByZXR1cm5cbiAgIGFueXRoaW5nLiBJdHMgdHJ1dGggdmFsdWUgaXMgZmFsc2UuXG5cbk5vdEltcGxlbWVudGVkXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGJ1aWx0LWluIG5hbWVcbiAgICJOb3RJbXBsZW1lbnRlZCIuIE51bWVyaWMgbWV0aG9kcyBhbmQgcmljaCBjb21wYXJpc29uIG1ldGhvZHNcbiAgIHNob3VsZCByZXR1cm4gdGhpcyB2YWx1ZSBpZiB0aGV5IGRvIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3JcbiAgIHRoZSBvcGVyYW5kcyBwcm92aWRlZC4gIChUaGUgaW50ZXJwcmV0ZXIgd2lsbCB0aGVuIHRyeSB0aGVcbiAgIHJlZmxlY3RlZCBvcGVyYXRpb24sIG9yIHNvbWUgb3RoZXIgZmFsbGJhY2ssIGRlcGVuZGluZyBvbiB0aGVcbiAgIG9wZXJhdG9yLikgIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuXG4gICBTZWUgKkltcGxlbWVudGluZyB0aGUgYXJpdGhtZXRpYyBvcGVyYXRpb25zKiBmb3IgbW9yZSBkZXRhaWxzLlxuXG5FbGxpcHNpc1xuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBsaXRlcmFsICIuLi4iIG9yIHRoZVxuICAgYnVpbHQtaW4gbmFtZSAiRWxsaXBzaXMiLiAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG5cbiJudW1iZXJzLk51bWJlciJcbiAgIFRoZXNlIGFyZSBjcmVhdGVkIGJ5IG51bWVyaWMgbGl0ZXJhbHMgYW5kIHJldHVybmVkIGFzIHJlc3VsdHMgYnlcbiAgIGFyaXRobWV0aWMgb3BlcmF0b3JzIGFuZCBhcml0aG1ldGljIGJ1aWx0LWluIGZ1bmN0aW9ucy4gIE51bWVyaWNcbiAgIG9iamVjdHMgYXJlIGltbXV0YWJsZTsgb25jZSBjcmVhdGVkIHRoZWlyIHZhbHVlIG5ldmVyIGNoYW5nZXMuXG4gICBQeXRob24gbnVtYmVycyBhcmUgb2YgY291cnNlIHN0cm9uZ2x5IHJlbGF0ZWQgdG8gbWF0aGVtYXRpY2FsXG4gICBudW1iZXJzLCBidXQgc3ViamVjdCB0byB0aGUgbGltaXRhdGlvbnMgb2YgbnVtZXJpY2FsIHJlcHJlc2VudGF0aW9uXG4gICBpbiBjb21wdXRlcnMuXG5cbiAgIFB5dGhvbiBkaXN0aW5ndWlzaGVzIGJldHdlZW4gaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIGFuZFxuICAgY29tcGxleCBudW1iZXJzOlxuXG4gICAibnVtYmVycy5JbnRlZ3JhbCJcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBlbGVtZW50cyBmcm9tIHRoZSBtYXRoZW1hdGljYWwgc2V0IG9mIGludGVnZXJzXG4gICAgICAocG9zaXRpdmUgYW5kIG5lZ2F0aXZlKS5cblxuICAgICAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBpbnRlZ2VyczpcblxuICAgICAgSW50ZWdlcnMgKCJpbnQiKVxuXG4gICAgICAgICBUaGVzZSByZXByZXNlbnQgbnVtYmVycyBpbiBhbiB1bmxpbWl0ZWQgcmFuZ2UsIHN1YmplY3QgdG9cbiAgICAgICAgIGF2YWlsYWJsZSAodmlydHVhbCkgbWVtb3J5IG9ubHkuICBGb3IgdGhlIHB1cnBvc2Ugb2Ygc2hpZnRcbiAgICAgICAgIGFuZCBtYXNrIG9wZXJhdGlvbnMsIGEgYmluYXJ5IHJlcHJlc2VudGF0aW9uIGlzIGFzc3VtZWQsIGFuZFxuICAgICAgICAgbmVnYXRpdmUgbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgaW4gYSB2YXJpYW50IG9mIDJcJ3NcbiAgICAgICAgIGNvbXBsZW1lbnQgd2hpY2ggZ2l2ZXMgdGhlIGlsbHVzaW9uIG9mIGFuIGluZmluaXRlIHN0cmluZyBvZlxuICAgICAgICAgc2lnbiBiaXRzIGV4dGVuZGluZyB0byB0aGUgbGVmdC5cblxuICAgICAgQm9vbGVhbnMgKCJib29sIilcbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCB0aGUgdHJ1dGggdmFsdWVzIEZhbHNlIGFuZCBUcnVlLiAgVGhlIHR3b1xuICAgICAgICAgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIHZhbHVlcyAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlIHRoZVxuICAgICAgICAgb25seSBCb29sZWFuIG9iamVjdHMuIFRoZSBCb29sZWFuIHR5cGUgaXMgYSBzdWJ0eXBlIG9mIHRoZVxuICAgICAgICAgaW50ZWdlciB0eXBlLCBhbmQgQm9vbGVhbiB2YWx1ZXMgYmVoYXZlIGxpa2UgdGhlIHZhbHVlcyAwIGFuZFxuICAgICAgICAgMSwgcmVzcGVjdGl2ZWx5LCBpbiBhbG1vc3QgYWxsIGNvbnRleHRzLCB0aGUgZXhjZXB0aW9uIGJlaW5nXG4gICAgICAgICB0aGF0IHdoZW4gY29udmVydGVkIHRvIGEgc3RyaW5nLCB0aGUgc3RyaW5ncyAiIkZhbHNlIiIgb3JcbiAgICAgICAgICIiVHJ1ZSIiIGFyZSByZXR1cm5lZCwgcmVzcGVjdGl2ZWx5LlxuXG4gICAgICBUaGUgcnVsZXMgZm9yIGludGVnZXIgcmVwcmVzZW50YXRpb24gYXJlIGludGVuZGVkIHRvIGdpdmUgdGhlXG4gICAgICBtb3N0IG1lYW5pbmdmdWwgaW50ZXJwcmV0YXRpb24gb2Ygc2hpZnQgYW5kIG1hc2sgb3BlcmF0aW9uc1xuICAgICAgaW52b2x2aW5nIG5lZ2F0aXZlIGludGVnZXJzLlxuXG4gICAibnVtYmVycy5SZWFsIiAoImZsb2F0IilcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBtYWNoaW5lLWxldmVsIGRvdWJsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnRcbiAgICAgIG51bWJlcnMuIFlvdSBhcmUgYXQgdGhlIG1lcmN5IG9mIHRoZSB1bmRlcmx5aW5nIG1hY2hpbmVcbiAgICAgIGFyY2hpdGVjdHVyZSAoYW5kIEMgb3IgSmF2YSBpbXBsZW1lbnRhdGlvbikgZm9yIHRoZSBhY2NlcHRlZFxuICAgICAgcmFuZ2UgYW5kIGhhbmRsaW5nIG9mIG92ZXJmbG93LiBQeXRob24gZG9lcyBub3Qgc3VwcG9ydCBzaW5nbGUtXG4gICAgICBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgbnVtYmVyczsgdGhlIHNhdmluZ3MgaW4gcHJvY2Vzc29yIGFuZFxuICAgICAgbWVtb3J5IHVzYWdlIHRoYXQgYXJlIHVzdWFsbHkgdGhlIHJlYXNvbiBmb3IgdXNpbmcgdGhlc2UgYXJlXG4gICAgICBkd2FyZmVkIGJ5IHRoZSBvdmVyaGVhZCBvZiB1c2luZyBvYmplY3RzIGluIFB5dGhvbiwgc28gdGhlcmUgaXNcbiAgICAgIG5vIHJlYXNvbiB0byBjb21wbGljYXRlIHRoZSBsYW5ndWFnZSB3aXRoIHR3byBraW5kcyBvZiBmbG9hdGluZ1xuICAgICAgcG9pbnQgbnVtYmVycy5cblxuICAgIm51bWJlcnMuQ29tcGxleCIgKCJjb21wbGV4IilcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBjb21wbGV4IG51bWJlcnMgYXMgYSBwYWlyIG9mIG1hY2hpbmUtbGV2ZWxcbiAgICAgIGRvdWJsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gIFRoZSBzYW1lIGNhdmVhdHMgYXBwbHlcbiAgICAgIGFzIGZvciBmbG9hdGluZyBwb2ludCBudW1iZXJzLiBUaGUgcmVhbCBhbmQgaW1hZ2luYXJ5IHBhcnRzIG9mIGFcbiAgICAgIGNvbXBsZXggbnVtYmVyICJ6IiBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIHJlYWQtb25seVxuICAgICAgYXR0cmlidXRlcyAiei5yZWFsIiBhbmQgInouaW1hZyIuXG5cblNlcXVlbmNlc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBvcmRlcmVkIHNldHMgaW5kZXhlZCBieSBub24tbmVnYXRpdmVcbiAgIG51bWJlcnMuIFRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtc1xuICAgb2YgYSBzZXF1ZW5jZS4gV2hlbiB0aGUgbGVuZ3RoIG9mIGEgc2VxdWVuY2UgaXMgKm4qLCB0aGUgaW5kZXggc2V0XG4gICBjb250YWlucyB0aGUgbnVtYmVycyAwLCAxLCAuLi4sICpuKi0xLiAgSXRlbSAqaSogb2Ygc2VxdWVuY2UgKmEqIGlzXG4gICBzZWxlY3RlZCBieSAiYVtpXSIuXG5cbiAgIFNlcXVlbmNlcyBhbHNvIHN1cHBvcnQgc2xpY2luZzogImFbaTpqXSIgc2VsZWN0cyBhbGwgaXRlbXMgd2l0aFxuICAgaW5kZXggKmsqIHN1Y2ggdGhhdCAqaSogIjw9IiAqayogIjwiICpqKi4gIFdoZW4gdXNlZCBhcyBhblxuICAgZXhwcmVzc2lvbiwgYSBzbGljZSBpcyBhIHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUuICBUaGlzIGltcGxpZXNcbiAgIHRoYXQgdGhlIGluZGV4IHNldCBpcyByZW51bWJlcmVkIHNvIHRoYXQgaXQgc3RhcnRzIGF0IDAuXG5cbiAgIFNvbWUgc2VxdWVuY2VzIGFsc28gc3VwcG9ydCAiZXh0ZW5kZWQgc2xpY2luZyIgd2l0aCBhIHRoaXJkICJzdGVwIlxuICAgcGFyYW1ldGVyOiAiYVtpOmo6a10iIHNlbGVjdHMgYWxsIGl0ZW1zIG9mICphKiB3aXRoIGluZGV4ICp4KiB3aGVyZVxuICAgInggPSBpICsgbiprIiwgKm4qICI+PSIgIjAiIGFuZCAqaSogIjw9IiAqeCogIjwiICpqKi5cblxuICAgU2VxdWVuY2VzIGFyZSBkaXN0aW5ndWlzaGVkIGFjY29yZGluZyB0byB0aGVpciBtdXRhYmlsaXR5OlxuXG4gICBJbW11dGFibGUgc2VxdWVuY2VzXG4gICAgICBBbiBvYmplY3Qgb2YgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGUgY2Fubm90IGNoYW5nZSBvbmNlIGl0IGlzXG4gICAgICBjcmVhdGVkLiAgKElmIHRoZSBvYmplY3QgY29udGFpbnMgcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzLFxuICAgICAgdGhlc2Ugb3RoZXIgb2JqZWN0cyBtYXkgYmUgbXV0YWJsZSBhbmQgbWF5IGJlIGNoYW5nZWQ7IGhvd2V2ZXIsXG4gICAgICB0aGUgY29sbGVjdGlvbiBvZiBvYmplY3RzIGRpcmVjdGx5IHJlZmVyZW5jZWQgYnkgYW4gaW1tdXRhYmxlXG4gICAgICBvYmplY3QgY2Fubm90IGNoYW5nZS4pXG5cbiAgICAgIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXM6XG5cbiAgICAgIFN0cmluZ3NcbiAgICAgICAgIEEgc3RyaW5nIGlzIGEgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoYXQgcmVwcmVzZW50IFVuaWNvZGUgY29kZVxuICAgICAgICAgcG9pbnRzLiBBbGwgdGhlIGNvZGUgcG9pbnRzIGluIHRoZSByYW5nZSAiVSswMDAwIC0gVSsxMEZGRkYiXG4gICAgICAgICBjYW4gYmUgcmVwcmVzZW50ZWQgaW4gYSBzdHJpbmcuICBQeXRob24gZG9lc25cJ3QgaGF2ZSBhICJjaGFyIlxuICAgICAgICAgdHlwZTsgaW5zdGVhZCwgZXZlcnkgY29kZSBwb2ludCBpbiB0aGUgc3RyaW5nIGlzIHJlcHJlc2VudGVkXG4gICAgICAgICBhcyBhIHN0cmluZyBvYmplY3Qgd2l0aCBsZW5ndGggIjEiLiAgVGhlIGJ1aWx0LWluIGZ1bmN0aW9uXG4gICAgICAgICAib3JkKCkiIGNvbnZlcnRzIGEgY29kZSBwb2ludCBmcm9tIGl0cyBzdHJpbmcgZm9ybSB0byBhblxuICAgICAgICAgaW50ZWdlciBpbiB0aGUgcmFuZ2UgIjAgLSAxMEZGRkYiOyAiY2hyKCkiIGNvbnZlcnRzIGFuXG4gICAgICAgICBpbnRlZ2VyIGluIHRoZSByYW5nZSAiMCAtIDEwRkZGRiIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbGVuZ3RoXG4gICAgICAgICAiMSIgc3RyaW5nIG9iamVjdC4gInN0ci5lbmNvZGUoKSIgY2FuIGJlIHVzZWQgdG8gY29udmVydCBhXG4gICAgICAgICAic3RyIiB0byAiYnl0ZXMiIHVzaW5nIHRoZSBnaXZlbiB0ZXh0IGVuY29kaW5nLCBhbmRcbiAgICAgICAgICJieXRlcy5kZWNvZGUoKSIgY2FuIGJlIHVzZWQgdG8gYWNoaWV2ZSB0aGUgb3Bwb3NpdGUuXG5cbiAgICAgIFR1cGxlc1xuICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgdHVwbGUgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gVHVwbGVzIG9mXG4gICAgICAgICB0d28gb3IgbW9yZSBpdGVtcyBhcmUgZm9ybWVkIGJ5IGNvbW1hLXNlcGFyYXRlZCBsaXN0cyBvZlxuICAgICAgICAgZXhwcmVzc2lvbnMuICBBIHR1cGxlIG9mIG9uZSBpdGVtIChhIFwnc2luZ2xldG9uXCcpIGNhbiBiZVxuICAgICAgICAgZm9ybWVkIGJ5IGFmZml4aW5nIGEgY29tbWEgdG8gYW4gZXhwcmVzc2lvbiAoYW4gZXhwcmVzc2lvbiBieVxuICAgICAgICAgaXRzZWxmIGRvZXMgbm90IGNyZWF0ZSBhIHR1cGxlLCBzaW5jZSBwYXJlbnRoZXNlcyBtdXN0IGJlXG4gICAgICAgICB1c2FibGUgZm9yIGdyb3VwaW5nIG9mIGV4cHJlc3Npb25zKS4gIEFuIGVtcHR5IHR1cGxlIGNhbiBiZVxuICAgICAgICAgZm9ybWVkIGJ5IGFuIGVtcHR5IHBhaXIgb2YgcGFyZW50aGVzZXMuXG5cbiAgICAgIEJ5dGVzXG4gICAgICAgICBBIGJ5dGVzIG9iamVjdCBpcyBhbiBpbW11dGFibGUgYXJyYXkuICBUaGUgaXRlbXMgYXJlIDgtYml0XG4gICAgICAgICBieXRlcywgcmVwcmVzZW50ZWQgYnkgaW50ZWdlcnMgaW4gdGhlIHJhbmdlIDAgPD0geCA8IDI1Ni5cbiAgICAgICAgIEJ5dGVzIGxpdGVyYWxzIChsaWtlICJiXCdhYmNcJyIpIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgICAgICAgICJieXRlcygpIiBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYnl0ZXMgb2JqZWN0cy4gIEFsc28sXG4gICAgICAgICBieXRlcyBvYmplY3RzIGNhbiBiZSBkZWNvZGVkIHRvIHN0cmluZ3MgdmlhIHRoZSAiZGVjb2RlKCkiXG4gICAgICAgICBtZXRob2QuXG5cbiAgIE11dGFibGUgc2VxdWVuY2VzXG4gICAgICBNdXRhYmxlIHNlcXVlbmNlcyBjYW4gYmUgY2hhbmdlZCBhZnRlciB0aGV5IGFyZSBjcmVhdGVkLiAgVGhlXG4gICAgICBzdWJzY3JpcHRpb24gYW5kIHNsaWNpbmcgbm90YXRpb25zIGNhbiBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgb2ZcbiAgICAgIGFzc2lnbm1lbnQgYW5kICJkZWwiIChkZWxldGUpIHN0YXRlbWVudHMuXG5cbiAgICAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzOlxuXG4gICAgICBMaXN0c1xuICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgbGlzdCBhcmUgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiAgTGlzdHMgYXJlXG4gICAgICAgICBmb3JtZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zIGluXG4gICAgICAgICBzcXVhcmUgYnJhY2tldHMuIChOb3RlIHRoYXQgdGhlcmUgYXJlIG5vIHNwZWNpYWwgY2FzZXMgbmVlZGVkXG4gICAgICAgICB0byBmb3JtIGxpc3RzIG9mIGxlbmd0aCAwIG9yIDEuKVxuXG4gICAgICBCeXRlIEFycmF5c1xuICAgICAgICAgQSBieXRlYXJyYXkgb2JqZWN0IGlzIGEgbXV0YWJsZSBhcnJheS4gVGhleSBhcmUgY3JlYXRlZCBieVxuICAgICAgICAgdGhlIGJ1aWx0LWluICJieXRlYXJyYXkoKSIgY29uc3RydWN0b3IuICBBc2lkZSBmcm9tIGJlaW5nXG4gICAgICAgICBtdXRhYmxlIChhbmQgaGVuY2UgdW5oYXNoYWJsZSksIGJ5dGUgYXJyYXlzIG90aGVyd2lzZSBwcm92aWRlXG4gICAgICAgICB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kIGZ1bmN0aW9uYWxpdHkgYXMgaW1tdXRhYmxlIGJ5dGVzXG4gICAgICAgICBvYmplY3RzLlxuXG4gICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZSAiYXJyYXkiIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgZXhhbXBsZSBvZiBhXG4gICAgICBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsIGFzIGRvZXMgdGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlLlxuXG5TZXQgdHlwZXNcbiAgIFRoZXNlIHJlcHJlc2VudCB1bm9yZGVyZWQsIGZpbml0ZSBzZXRzIG9mIHVuaXF1ZSwgaW1tdXRhYmxlXG4gICBvYmplY3RzLiBBcyBzdWNoLCB0aGV5IGNhbm5vdCBiZSBpbmRleGVkIGJ5IGFueSBzdWJzY3JpcHQuIEhvd2V2ZXIsXG4gICB0aGV5IGNhbiBiZSBpdGVyYXRlZCBvdmVyLCBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSJcbiAgIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIHNldC4gQ29tbW9uIHVzZXMgZm9yIHNldHMgYXJlIGZhc3RcbiAgIG1lbWJlcnNoaXAgdGVzdGluZywgcmVtb3ZpbmcgZHVwbGljYXRlcyBmcm9tIGEgc2VxdWVuY2UsIGFuZFxuICAgY29tcHV0aW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zIHN1Y2ggYXMgaW50ZXJzZWN0aW9uLCB1bmlvbixcbiAgIGRpZmZlcmVuY2UsIGFuZCBzeW1tZXRyaWMgZGlmZmVyZW5jZS5cblxuICAgRm9yIHNldCBlbGVtZW50cywgdGhlIHNhbWUgaW1tdXRhYmlsaXR5IHJ1bGVzIGFwcGx5IGFzIGZvclxuICAgZGljdGlvbmFyeSBrZXlzLiBOb3RlIHRoYXQgbnVtZXJpYyB0eXBlcyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgZm9yXG4gICBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sICIxIiBhbmRcbiAgICIxLjAiKSwgb25seSBvbmUgb2YgdGhlbSBjYW4gYmUgY29udGFpbmVkIGluIGEgc2V0LlxuXG4gICBUaGVyZSBhcmUgY3VycmVudGx5IHR3byBpbnRyaW5zaWMgc2V0IHR5cGVzOlxuXG4gICBTZXRzXG4gICAgICBUaGVzZSByZXByZXNlbnQgYSBtdXRhYmxlIHNldC4gVGhleSBhcmUgY3JlYXRlZCBieSB0aGUgYnVpbHQtaW5cbiAgICAgICJzZXQoKSIgY29uc3RydWN0b3IgYW5kIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIGJ5IHNldmVyYWxcbiAgICAgIG1ldGhvZHMsIHN1Y2ggYXMgImFkZCgpIi5cblxuICAgRnJvemVuIHNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhbiBpbW11dGFibGUgc2V0LiAgVGhleSBhcmUgY3JlYXRlZCBieSB0aGVcbiAgICAgIGJ1aWx0LWluICJmcm96ZW5zZXQoKSIgY29uc3RydWN0b3IuICBBcyBhIGZyb3plbnNldCBpcyBpbW11dGFibGVcbiAgICAgIGFuZCAqaGFzaGFibGUqLCBpdCBjYW4gYmUgdXNlZCBhZ2FpbiBhcyBhbiBlbGVtZW50IG9mIGFub3RoZXJcbiAgICAgIHNldCwgb3IgYXMgYSBkaWN0aW9uYXJ5IGtleS5cblxuTWFwcGluZ3NcbiAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgYXJiaXRyYXJ5IGluZGV4XG4gICBzZXRzLiBUaGUgc3Vic2NyaXB0IG5vdGF0aW9uICJhW2tdIiBzZWxlY3RzIHRoZSBpdGVtIGluZGV4ZWQgYnkgImsiXG4gICBmcm9tIHRoZSBtYXBwaW5nICJhIjsgdGhpcyBjYW4gYmUgdXNlZCBpbiBleHByZXNzaW9ucyBhbmQgYXMgdGhlXG4gICB0YXJnZXQgb2YgYXNzaWdubWVudHMgb3IgImRlbCIgc3RhdGVtZW50cy4gVGhlIGJ1aWx0LWluIGZ1bmN0aW9uXG4gICAibGVuKCkiIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIG1hcHBpbmcuXG5cbiAgIFRoZXJlIGlzIGN1cnJlbnRseSBhIHNpbmdsZSBpbnRyaW5zaWMgbWFwcGluZyB0eXBlOlxuXG4gICBEaWN0aW9uYXJpZXNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgbmVhcmx5XG4gICAgICBhcmJpdHJhcnkgdmFsdWVzLiAgVGhlIG9ubHkgdHlwZXMgb2YgdmFsdWVzIG5vdCBhY2NlcHRhYmxlIGFzXG4gICAgICBrZXlzIGFyZSB2YWx1ZXMgY29udGFpbmluZyBsaXN0cyBvciBkaWN0aW9uYXJpZXMgb3Igb3RoZXJcbiAgICAgIG11dGFibGUgdHlwZXMgdGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG4gICAgICBpZGVudGl0eSwgdGhlIHJlYXNvbiBiZWluZyB0aGF0IHRoZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2ZcbiAgICAgIGRpY3Rpb25hcmllcyByZXF1aXJlcyBhIGtleVwncyBoYXNoIHZhbHVlIHRvIHJlbWFpbiBjb25zdGFudC5cbiAgICAgIE51bWVyaWMgdHlwZXMgdXNlZCBmb3Iga2V5cyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWNcbiAgICAgIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sICIxIiBhbmQgIjEuMCIpXG4gICAgICB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHRvIGluZGV4IHRoZSBzYW1lXG4gICAgICBkaWN0aW9uYXJ5IGVudHJ5LlxuXG4gICAgICBEaWN0aW9uYXJpZXMgYXJlIG11dGFibGU7IHRoZXkgY2FuIGJlIGNyZWF0ZWQgYnkgdGhlICJ7Li4ufSJcbiAgICAgIG5vdGF0aW9uIChzZWUgc2VjdGlvbiAqRGljdGlvbmFyeSBkaXNwbGF5cyopLlxuXG4gICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZXMgImRibS5uZGJtIiBhbmQgImRibS5nbnUiIHByb3ZpZGVcbiAgICAgIGFkZGl0aW9uYWwgZXhhbXBsZXMgb2YgbWFwcGluZyB0eXBlcywgYXMgZG9lcyB0aGUgImNvbGxlY3Rpb25zIlxuICAgICAgbW9kdWxlLlxuXG5DYWxsYWJsZSB0eXBlc1xuICAgVGhlc2UgYXJlIHRoZSB0eXBlcyB0byB3aGljaCB0aGUgZnVuY3Rpb24gY2FsbCBvcGVyYXRpb24gKHNlZVxuICAgc2VjdGlvbiAqQ2FsbHMqKSBjYW4gYmUgYXBwbGllZDpcblxuICAgVXNlci1kZWZpbmVkIGZ1bmN0aW9uc1xuICAgICAgQSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGlzIGNyZWF0ZWQgYnkgYSBmdW5jdGlvblxuICAgICAgZGVmaW5pdGlvbiAoc2VlIHNlY3Rpb24gKkZ1bmN0aW9uIGRlZmluaXRpb25zKikuICBJdCBzaG91bGQgYmVcbiAgICAgIGNhbGxlZCB3aXRoIGFuIGFyZ3VtZW50IGxpc3QgY29udGFpbmluZyB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXNcbiAgICAgIGFzIHRoZSBmdW5jdGlvblwncyBmb3JtYWwgcGFyYW1ldGVyIGxpc3QuXG5cbiAgICAgIFNwZWNpYWwgYXR0cmlidXRlczpcblxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArPT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09K1xuICAgICAgfCAiX19kb2NfXyIgICAgICAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzIGRvY3VtZW50YXRpb24gICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcsIG9yICJOb25lIiBpZiAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdW5hdmFpbGFibGU7IG5vdCBpbmhlcml0ZWQgYnkgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN1YmNsYXNzZXMgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19uYW1lX18iICAgICAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzIG5hbWUgICAgICAgICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19xdWFsbmFtZV9fIiAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzICpxdWFsaWZpZWQgbmFtZSogfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXcgaW4gdmVyc2lvbiAzLjMuICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fbW9kdWxlX18iICAgICAgICAgICAgICB8IFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbiB3YXMgZGVmaW5lZCBpbiwgb3IgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIk5vbmUiIGlmIHVuYXZhaWxhYmxlLiAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2RlZmF1bHRzX18iICAgICAgICAgICAgfCBBIHR1cGxlIGNvbnRhaW5pbmcgZGVmYXVsdCAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnQgdmFsdWVzIGZvciB0aG9zZSAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50cyB0aGF0IGhhdmUgZGVmYXVsdHMsICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvciAiTm9uZSIgaWYgbm8gYXJndW1lbnRzIGhhdmUgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYSBkZWZhdWx0IHZhbHVlICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2NvZGVfXyIgICAgICAgICAgICAgICAgfCBUaGUgY29kZSBvYmplY3QgcmVwcmVzZW50aW5nICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uIGJvZHkuICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2dsb2JhbHNfXyIgICAgICAgICAgICAgfCBBIHJlZmVyZW5jZSB0byB0aGUgZGljdGlvbmFyeSAgIHwgUmVhZC1vbmx5ICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhhdCBob2xkcyB0aGUgZnVuY3Rpb25cJ3MgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnbG9iYWwgdmFyaWFibGVzIC0tLSB0aGUgZ2xvYmFsIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGUgaW4gICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoaWNoIHRoZSBmdW5jdGlvbiB3YXMgZGVmaW5lZC4gfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19kaWN0X18iICAgICAgICAgICAgICAgIHwgVGhlIG5hbWVzcGFjZSBzdXBwb3J0aW5nICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyYml0cmFyeSBmdW5jdGlvbiBhdHRyaWJ1dGVzLiAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19jbG9zdXJlX18iICAgICAgICAgICAgIHwgIk5vbmUiIG9yIGEgdHVwbGUgb2YgY2VsbHMgdGhhdCB8IFJlYWQtb25seSAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNvbnRhaW4gYmluZGluZ3MgZm9yIHRoZSAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvblwncyBmcmVlIHZhcmlhYmxlcy4gICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2Fubm90YXRpb25zX18iICAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBhbm5vdGF0aW9ucyAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2YgcGFyYW1ldGVycy4gIFRoZSBrZXlzIG9mIHRoZSB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpY3QgYXJlIHRoZSBwYXJhbWV0ZXIgbmFtZXMsICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbmQgIlwncmV0dXJuXCciIGZvciB0aGUgcmV0dXJuICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbm5vdGF0aW9uLCBpZiBwcm92aWRlZC4gICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fa3dkZWZhdWx0c19fIiAgICAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGRlZmF1bHRzIGZvciAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycy4gICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcblxuICAgICAgTW9zdCBvZiB0aGUgYXR0cmlidXRlcyBsYWJlbGxlZCAiV3JpdGFibGUiIGNoZWNrIHRoZSB0eXBlIG9mIHRoZVxuICAgICAgYXNzaWduZWQgdmFsdWUuXG5cbiAgICAgIEZ1bmN0aW9uIG9iamVjdHMgYWxzbyBzdXBwb3J0IGdldHRpbmcgYW5kIHNldHRpbmcgYXJiaXRyYXJ5XG4gICAgICBhdHRyaWJ1dGVzLCB3aGljaCBjYW4gYmUgdXNlZCwgZm9yIGV4YW1wbGUsIHRvIGF0dGFjaCBtZXRhZGF0YVxuICAgICAgdG8gZnVuY3Rpb25zLiAgUmVndWxhciBhdHRyaWJ1dGUgZG90LW5vdGF0aW9uIGlzIHVzZWQgdG8gZ2V0IGFuZFxuICAgICAgc2V0IHN1Y2ggYXR0cmlidXRlcy4gKk5vdGUgdGhhdCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5XG4gICAgICBzdXBwb3J0cyBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMuIEZ1bmN0aW9uXG4gICAgICBhdHRyaWJ1dGVzIG9uIGJ1aWx0LWluIGZ1bmN0aW9ucyBtYXkgYmUgc3VwcG9ydGVkIGluIHRoZVxuICAgICAgZnV0dXJlLipcblxuICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBhIGZ1bmN0aW9uXCdzIGRlZmluaXRpb24gY2FuIGJlXG4gICAgICByZXRyaWV2ZWQgZnJvbSBpdHMgY29kZSBvYmplY3Q7IHNlZSB0aGUgZGVzY3JpcHRpb24gb2YgaW50ZXJuYWxcbiAgICAgIHR5cGVzIGJlbG93LlxuXG4gICBJbnN0YW5jZSBtZXRob2RzXG4gICAgICBBbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGNvbWJpbmVzIGEgY2xhc3MsIGEgY2xhc3MgaW5zdGFuY2UgYW5kXG4gICAgICBhbnkgY2FsbGFibGUgb2JqZWN0IChub3JtYWxseSBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbikuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJfX3NlbGZfXyIgaXMgdGhlIGNsYXNzIGluc3RhbmNlXG4gICAgICBvYmplY3QsICJfX2Z1bmNfXyIgaXMgdGhlIGZ1bmN0aW9uIG9iamVjdDsgIl9fZG9jX18iIGlzIHRoZVxuICAgICAgbWV0aG9kXCdzIGRvY3VtZW50YXRpb24gKHNhbWUgYXMgIl9fZnVuY19fLl9fZG9jX18iKTsgIl9fbmFtZV9fIlxuICAgICAgaXMgdGhlIG1ldGhvZCBuYW1lIChzYW1lIGFzICJfX2Z1bmNfXy5fX25hbWVfXyIpOyAiX19tb2R1bGVfXyJcbiAgICAgIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIG1ldGhvZCB3YXMgZGVmaW5lZCBpbiwgb3IgIk5vbmUiXG4gICAgICBpZiB1bmF2YWlsYWJsZS5cblxuICAgICAgTWV0aG9kcyBhbHNvIHN1cHBvcnQgYWNjZXNzaW5nIChidXQgbm90IHNldHRpbmcpIHRoZSBhcmJpdHJhcnlcbiAgICAgIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0LlxuXG4gICAgICBVc2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdHMgbWF5IGJlIGNyZWF0ZWQgd2hlbiBnZXR0aW5nIGFuXG4gICAgICBhdHRyaWJ1dGUgb2YgYSBjbGFzcyAocGVyaGFwcyB2aWEgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyksIGlmXG4gICAgICB0aGF0IGF0dHJpYnV0ZSBpcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3Qgb3IgYSBjbGFzc1xuICAgICAgbWV0aG9kIG9iamVjdC5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZyBhIHVzZXItXG4gICAgICBkZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBmcm9tIGEgY2xhc3MgdmlhIG9uZSBvZiBpdHMgaW5zdGFuY2VzLFxuICAgICAgaXRzICJfX3NlbGZfXyIgYXR0cmlidXRlIGlzIHRoZSBpbnN0YW5jZSwgYW5kIHRoZSBtZXRob2Qgb2JqZWN0XG4gICAgICBpcyBzYWlkIHRvIGJlIGJvdW5kLiAgVGhlIG5ldyBtZXRob2RcJ3MgIl9fZnVuY19fIiBhdHRyaWJ1dGUgaXNcbiAgICAgIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFdoZW4gYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmdcbiAgICAgIGFub3RoZXIgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIHRoZSBiZWhhdmlvdXIgaXNcbiAgICAgIHRoZSBzYW1lIGFzIGZvciBhIGZ1bmN0aW9uIG9iamVjdCwgZXhjZXB0IHRoYXQgdGhlICJfX2Z1bmNfXyJcbiAgICAgIGF0dHJpYnV0ZSBvZiB0aGUgbmV3IGluc3RhbmNlIGlzIG5vdCB0aGUgb3JpZ2luYWwgbWV0aG9kIG9iamVjdFxuICAgICAgYnV0IGl0cyAiX19mdW5jX18iIGF0dHJpYnV0ZS5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZyBhIGNsYXNzXG4gICAgICBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgaXRzICJfX3NlbGZfXyIgYXR0cmlidXRlXG4gICAgICBpcyB0aGUgY2xhc3MgaXRzZWxmLCBhbmQgaXRzICJfX2Z1bmNfXyIgYXR0cmlidXRlIGlzIHRoZVxuICAgICAgZnVuY3Rpb24gb2JqZWN0IHVuZGVybHlpbmcgdGhlIGNsYXNzIG1ldGhvZC5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNhbGxlZCwgdGhlIHVuZGVybHlpbmdcbiAgICAgIGZ1bmN0aW9uICgiX19mdW5jX18iKSBpcyBjYWxsZWQsIGluc2VydGluZyB0aGUgY2xhc3MgaW5zdGFuY2VcbiAgICAgICgiX19zZWxmX18iKSBpbiBmcm9udCBvZiB0aGUgYXJndW1lbnQgbGlzdC4gIEZvciBpbnN0YW5jZSwgd2hlblxuICAgICAgIkMiIGlzIGEgY2xhc3Mgd2hpY2ggY29udGFpbnMgYSBkZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uICJmKCkiLFxuICAgICAgYW5kICJ4IiBpcyBhbiBpbnN0YW5jZSBvZiAiQyIsIGNhbGxpbmcgInguZigxKSIgaXMgZXF1aXZhbGVudCB0b1xuICAgICAgY2FsbGluZyAiQy5mKHgsIDEpIi5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGRlcml2ZWQgZnJvbSBhIGNsYXNzIG1ldGhvZFxuICAgICAgb2JqZWN0LCB0aGUgImNsYXNzIGluc3RhbmNlIiBzdG9yZWQgaW4gIl9fc2VsZl9fIiB3aWxsIGFjdHVhbGx5XG4gICAgICBiZSB0aGUgY2xhc3MgaXRzZWxmLCBzbyB0aGF0IGNhbGxpbmcgZWl0aGVyICJ4LmYoMSkiIG9yICJDLmYoMSkiXG4gICAgICBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgImYoQywxKSIgd2hlcmUgImYiIGlzIHRoZSB1bmRlcmx5aW5nXG4gICAgICBmdW5jdGlvbi5cblxuICAgICAgTm90ZSB0aGF0IHRoZSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGZ1bmN0aW9uIG9iamVjdCB0byBpbnN0YW5jZVxuICAgICAgbWV0aG9kIG9iamVjdCBoYXBwZW5zIGVhY2ggdGltZSB0aGUgYXR0cmlidXRlIGlzIHJldHJpZXZlZCBmcm9tXG4gICAgICB0aGUgaW5zdGFuY2UuICBJbiBzb21lIGNhc2VzLCBhIGZydWl0ZnVsIG9wdGltaXphdGlvbiBpcyB0b1xuICAgICAgYXNzaWduIHRoZSBhdHRyaWJ1dGUgdG8gYSBsb2NhbCB2YXJpYWJsZSBhbmQgY2FsbCB0aGF0IGxvY2FsXG4gICAgICB2YXJpYWJsZS4gQWxzbyBub3RpY2UgdGhhdCB0aGlzIHRyYW5zZm9ybWF0aW9uIG9ubHkgaGFwcGVucyBmb3JcbiAgICAgIHVzZXItZGVmaW5lZCBmdW5jdGlvbnM7IG90aGVyIGNhbGxhYmxlIG9iamVjdHMgKGFuZCBhbGwgbm9uLVxuICAgICAgY2FsbGFibGUgb2JqZWN0cykgYXJlIHJldHJpZXZlZCB3aXRob3V0IHRyYW5zZm9ybWF0aW9uLiAgSXQgaXNcbiAgICAgIGFsc28gaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zIHdoaWNoIGFyZVxuICAgICAgYXR0cmlidXRlcyBvZiBhIGNsYXNzIGluc3RhbmNlIGFyZSBub3QgY29udmVydGVkIHRvIGJvdW5kXG4gICAgICBtZXRob2RzOyB0aGlzICpvbmx5KiBoYXBwZW5zIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGFuIGF0dHJpYnV0ZVxuICAgICAgb2YgdGhlIGNsYXNzLlxuXG4gICBHZW5lcmF0b3IgZnVuY3Rpb25zXG4gICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCB1c2VzIHRoZSAieWllbGQiIHN0YXRlbWVudCAoc2VlXG4gICAgICBzZWN0aW9uICpUaGUgeWllbGQgc3RhdGVtZW50KikgaXMgY2FsbGVkIGEgKmdlbmVyYXRvciBmdW5jdGlvbiouXG4gICAgICBTdWNoIGEgZnVuY3Rpb24sIHdoZW4gY2FsbGVkLCBhbHdheXMgcmV0dXJucyBhbiBpdGVyYXRvciBvYmplY3RcbiAgICAgIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGV4ZWN1dGUgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uOiAgY2FsbGluZ1xuICAgICAgdGhlIGl0ZXJhdG9yXCdzICJpdGVyYXRvci5fX25leHRfXygpIiBtZXRob2Qgd2lsbCBjYXVzZSB0aGVcbiAgICAgIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgdW50aWwgaXQgcHJvdmlkZXMgYSB2YWx1ZSB1c2luZyB0aGUgInlpZWxkIlxuICAgICAgc3RhdGVtZW50LiAgV2hlbiB0aGUgZnVuY3Rpb24gZXhlY3V0ZXMgYSAicmV0dXJuIiBzdGF0ZW1lbnQgb3JcbiAgICAgIGZhbGxzIG9mZiB0aGUgZW5kLCBhICJTdG9wSXRlcmF0aW9uIiBleGNlcHRpb24gaXMgcmFpc2VkIGFuZCB0aGVcbiAgICAgIGl0ZXJhdG9yIHdpbGwgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHNldCBvZiB2YWx1ZXMgdG8gYmVcbiAgICAgIHJldHVybmVkLlxuXG4gICBCdWlsdC1pbiBmdW5jdGlvbnNcbiAgICAgIEEgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYSBDIGZ1bmN0aW9uLlxuICAgICAgRXhhbXBsZXMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFyZSAibGVuKCkiIGFuZCAibWF0aC5zaW4oKSJcbiAgICAgICgibWF0aCIgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBtb2R1bGUpLiBUaGUgbnVtYmVyIGFuZCB0eXBlIG9mXG4gICAgICB0aGUgYXJndW1lbnRzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBDIGZ1bmN0aW9uLiBTcGVjaWFsIHJlYWQtXG4gICAgICBvbmx5IGF0dHJpYnV0ZXM6ICJfX2RvY19fIiBpcyB0aGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvblxuICAgICAgc3RyaW5nLCBvciAiTm9uZSIgaWYgdW5hdmFpbGFibGU7ICJfX25hbWVfXyIgaXMgdGhlIGZ1bmN0aW9uXCdzXG4gICAgICBuYW1lOyAiX19zZWxmX18iIGlzIHNldCB0byAiTm9uZSIgKGJ1dCBzZWUgdGhlIG5leHQgaXRlbSk7XG4gICAgICAiX19tb2R1bGVfXyIgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWRcbiAgICAgIGluIG9yICJOb25lIiBpZiB1bmF2YWlsYWJsZS5cblxuICAgQnVpbHQtaW4gbWV0aG9kc1xuICAgICAgVGhpcyBpcyByZWFsbHkgYSBkaWZmZXJlbnQgZGlzZ3Vpc2Ugb2YgYSBidWlsdC1pbiBmdW5jdGlvbiwgdGhpc1xuICAgICAgdGltZSBjb250YWluaW5nIGFuIG9iamVjdCBwYXNzZWQgdG8gdGhlIEMgZnVuY3Rpb24gYXMgYW5cbiAgICAgIGltcGxpY2l0IGV4dHJhIGFyZ3VtZW50LiAgQW4gZXhhbXBsZSBvZiBhIGJ1aWx0LWluIG1ldGhvZCBpc1xuICAgICAgImFsaXN0LmFwcGVuZCgpIiwgYXNzdW1pbmcgKmFsaXN0KiBpcyBhIGxpc3Qgb2JqZWN0LiBJbiB0aGlzXG4gICAgICBjYXNlLCB0aGUgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlICJfX3NlbGZfXyIgaXMgc2V0IHRvIHRoZVxuICAgICAgb2JqZWN0IGRlbm90ZWQgYnkgKmFsaXN0Ki5cblxuICAgQ2xhc3Nlc1xuICAgICAgQ2xhc3NlcyBhcmUgY2FsbGFibGUuICBUaGVzZSBvYmplY3RzIG5vcm1hbGx5IGFjdCBhcyBmYWN0b3JpZXNcbiAgICAgIGZvciBuZXcgaW5zdGFuY2VzIG9mIHRoZW1zZWx2ZXMsIGJ1dCB2YXJpYXRpb25zIGFyZSBwb3NzaWJsZSBmb3JcbiAgICAgIGNsYXNzIHR5cGVzIHRoYXQgb3ZlcnJpZGUgIl9fbmV3X18oKSIuICBUaGUgYXJndW1lbnRzIG9mIHRoZVxuICAgICAgY2FsbCBhcmUgcGFzc2VkIHRvICJfX25ld19fKCkiIGFuZCwgaW4gdGhlIHR5cGljYWwgY2FzZSwgdG9cbiAgICAgICJfX2luaXRfXygpIiB0byBpbml0aWFsaXplIHRoZSBuZXcgaW5zdGFuY2UuXG5cbiAgIENsYXNzIEluc3RhbmNlc1xuICAgICAgSW5zdGFuY2VzIG9mIGFyYml0cmFyeSBjbGFzc2VzIGNhbiBiZSBtYWRlIGNhbGxhYmxlIGJ5IGRlZmluaW5nXG4gICAgICBhICJfX2NhbGxfXygpIiBtZXRob2QgaW4gdGhlaXIgY2xhc3MuXG5cbk1vZHVsZXNcbiAgIE1vZHVsZXMgYXJlIGEgYmFzaWMgb3JnYW5pemF0aW9uYWwgdW5pdCBvZiBQeXRob24gY29kZSwgYW5kIGFyZVxuICAgY3JlYXRlZCBieSB0aGUgKmltcG9ydCBzeXN0ZW0qIGFzIGludm9rZWQgZWl0aGVyIGJ5IHRoZSAiaW1wb3J0IlxuICAgc3RhdGVtZW50IChzZWUgImltcG9ydCIpLCBvciBieSBjYWxsaW5nIGZ1bmN0aW9ucyBzdWNoIGFzXG4gICAiaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSIgYW5kIGJ1aWx0LWluICJfX2ltcG9ydF9fKCkiLiAgQSBtb2R1bGVcbiAgIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdCAodGhpcyBpc1xuICAgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZCBieSB0aGUgIl9fZ2xvYmFsc19fIiBhdHRyaWJ1dGUgb2ZcbiAgIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUpLiAgQXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlXG4gICB0cmFuc2xhdGVkIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCAibS54IiBpcyBlcXVpdmFsZW50XG4gICB0byAibS5fX2RpY3RfX1sieCJdIi4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGVcbiAgIG9iamVjdCB1c2VkIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZSAoc2luY2UgaXQgaXNuXCd0IG5lZWRlZCBvbmNlXG4gICB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSkuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2UgZGljdGlvbmFyeSxcbiAgIGUuZy4sICJtLnggPSAxIiBpcyBlcXVpdmFsZW50IHRvICJtLl9fZGljdF9fWyJ4Il0gPSAxIi5cblxuICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiAiX19kaWN0X18iIGlzIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlXG4gICBhcyBhIGRpY3Rpb25hcnkgb2JqZWN0LlxuXG4gICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEJlY2F1c2Ugb2YgdGhlIHdheSBDUHl0aG9uXG4gICBjbGVhcnMgbW9kdWxlIGRpY3Rpb25hcmllcywgdGhlIG1vZHVsZSBkaWN0aW9uYXJ5IHdpbGwgYmUgY2xlYXJlZFxuICAgd2hlbiB0aGUgbW9kdWxlIGZhbGxzIG91dCBvZiBzY29wZSBldmVuIGlmIHRoZSBkaWN0aW9uYXJ5IHN0aWxsIGhhc1xuICAgbGl2ZSByZWZlcmVuY2VzLiAgVG8gYXZvaWQgdGhpcywgY29weSB0aGUgZGljdGlvbmFyeSBvciBrZWVwIHRoZVxuICAgbW9kdWxlIGFyb3VuZCB3aGlsZSB1c2luZyBpdHMgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIG1vZHVsZVwncyBuYW1lO1xuICAgIl9fZG9jX18iIGlzIHRoZSBtb2R1bGVcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yICJOb25lIiBpZlxuICAgdW5hdmFpbGFibGU7ICJfX2ZpbGVfXyIgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggdGhlXG4gICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlICJfX2ZpbGVfXyJcbiAgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLCBzdWNoIGFzIENcbiAgIG1vZHVsZXMgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvclxuICAgZXh0ZW5zaW9uIG1vZHVsZXMgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXQgaXNcbiAgIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgZmlsZS5cblxuQ3VzdG9tIGNsYXNzZXNcbiAgIEN1c3RvbSBjbGFzcyB0eXBlcyBhcmUgdHlwaWNhbGx5IGNyZWF0ZWQgYnkgY2xhc3MgZGVmaW5pdGlvbnMgKHNlZVxuICAgc2VjdGlvbiAqQ2xhc3MgZGVmaW5pdGlvbnMqKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkXG4gICBieSBhIGRpY3Rpb25hcnkgb2JqZWN0LiBDbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgdHJhbnNsYXRlZFxuICAgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJDLngiIGlzIHRyYW5zbGF0ZWQgdG9cbiAgICJDLl9fZGljdF9fWyJ4Il0iIChhbHRob3VnaCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgaG9va3Mgd2hpY2ggYWxsb3dcbiAgIGZvciBvdGhlciBtZWFucyBvZiBsb2NhdGluZyBhdHRyaWJ1dGVzKS4gV2hlbiB0aGUgYXR0cmlidXRlIG5hbWUgaXNcbiAgIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGF0dHJpYnV0ZSBzZWFyY2ggY29udGludWVzIGluIHRoZSBiYXNlXG4gICBjbGFzc2VzLiBUaGlzIHNlYXJjaCBvZiB0aGUgYmFzZSBjbGFzc2VzIHVzZXMgdGhlIEMzIG1ldGhvZFxuICAgcmVzb2x1dGlvbiBvcmRlciB3aGljaCBiZWhhdmVzIGNvcnJlY3RseSBldmVuIGluIHRoZSBwcmVzZW5jZSBvZlxuICAgXCdkaWFtb25kXCcgaW5oZXJpdGFuY2Ugc3RydWN0dXJlcyB3aGVyZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiAgIGluaGVyaXRhbmNlIHBhdGhzIGxlYWRpbmcgYmFjayB0byBhIGNvbW1vbiBhbmNlc3Rvci4gQWRkaXRpb25hbFxuICAgZGV0YWlscyBvbiB0aGUgQzMgTVJPIHVzZWQgYnkgUHl0aG9uIGNhbiBiZSBmb3VuZCBpbiB0aGVcbiAgIGRvY3VtZW50YXRpb24gYWNjb21wYW55aW5nIHRoZSAyLjMgcmVsZWFzZSBhdFxuICAgaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9yZWxlYXNlcy8yLjMvbXJvLy5cblxuICAgV2hlbiBhIGNsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2UgKGZvciBjbGFzcyAiQyIsIHNheSkgd291bGQgeWllbGQgYVxuICAgY2xhc3MgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2RcbiAgIG9iamVjdCB3aG9zZSAiX19zZWxmX18iIGF0dHJpYnV0ZXMgaXMgIkMiLiAgV2hlbiBpdCB3b3VsZCB5aWVsZCBhXG4gICBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgb2JqZWN0IHdyYXBwZWQgYnlcbiAgIHRoZSBzdGF0aWMgbWV0aG9kIG9iamVjdC4gU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycypcbiAgIGZvciBhbm90aGVyIHdheSBpbiB3aGljaCBhdHRyaWJ1dGVzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3MgbWF5XG4gICBkaWZmZXIgZnJvbSB0aG9zZSBhY3R1YWxseSBjb250YWluZWQgaW4gaXRzICJfX2RpY3RfXyIuXG5cbiAgIENsYXNzIGF0dHJpYnV0ZSBhc3NpZ25tZW50cyB1cGRhdGUgdGhlIGNsYXNzXCdzIGRpY3Rpb25hcnksIG5ldmVyXG4gICB0aGUgZGljdGlvbmFyeSBvZiBhIGJhc2UgY2xhc3MuXG5cbiAgIEEgY2xhc3Mgb2JqZWN0IGNhbiBiZSBjYWxsZWQgKHNlZSBhYm92ZSkgdG8geWllbGQgYSBjbGFzcyBpbnN0YW5jZVxuICAgKHNlZSBiZWxvdykuXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgY2xhc3MgbmFtZTsgIl9fbW9kdWxlX18iIGlzXG4gICB0aGUgbW9kdWxlIG5hbWUgaW4gd2hpY2ggdGhlIGNsYXNzIHdhcyBkZWZpbmVkOyAiX19kaWN0X18iIGlzIHRoZVxuICAgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzc1wncyBuYW1lc3BhY2U7ICJfX2Jhc2VzX18iIGlzIGEgdHVwbGVcbiAgIChwb3NzaWJseSBlbXB0eSBvciBhIHNpbmdsZXRvbikgY29udGFpbmluZyB0aGUgYmFzZSBjbGFzc2VzLCBpbiB0aGVcbiAgIG9yZGVyIG9mIHRoZWlyIG9jY3VycmVuY2UgaW4gdGhlIGJhc2UgY2xhc3MgbGlzdDsgIl9fZG9jX18iIGlzIHRoZVxuICAgY2xhc3NcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIE5vbmUgaWYgdW5kZWZpbmVkLlxuXG5DbGFzcyBpbnN0YW5jZXNcbiAgIEEgY2xhc3MgaW5zdGFuY2UgaXMgY3JlYXRlZCBieSBjYWxsaW5nIGEgY2xhc3Mgb2JqZWN0IChzZWUgYWJvdmUpLlxuICAgQSBjbGFzcyBpbnN0YW5jZSBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYXMgYSBkaWN0aW9uYXJ5IHdoaWNoXG4gICBpcyB0aGUgZmlyc3QgcGxhY2UgaW4gd2hpY2ggYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHNlYXJjaGVkLlxuICAgV2hlbiBhbiBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kIHRoZXJlLCBhbmQgdGhlIGluc3RhbmNlXCdzIGNsYXNzIGhhc1xuICAgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZSwgdGhlIHNlYXJjaCBjb250aW51ZXMgd2l0aCB0aGUgY2xhc3NcbiAgIGF0dHJpYnV0ZXMuICBJZiBhIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aGF0IGlzIGEgdXNlci1kZWZpbmVkXG4gICBmdW5jdGlvbiBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdFxuICAgd2hvc2UgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLiAgU3RhdGljIG1ldGhvZCBhbmRcbiAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBhbHNvIHRyYW5zZm9ybWVkOyBzZWUgYWJvdmUgdW5kZXJcbiAgICJDbGFzc2VzIi4gIFNlZSBzZWN0aW9uICpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqIGZvciBhbm90aGVyIHdheVxuICAgaW4gd2hpY2ggYXR0cmlidXRlcyBvZiBhIGNsYXNzIHJldHJpZXZlZCB2aWEgaXRzIGluc3RhbmNlcyBtYXlcbiAgIGRpZmZlciBmcm9tIHRoZSBvYmplY3RzIGFjdHVhbGx5IHN0b3JlZCBpbiB0aGUgY2xhc3NcJ3MgIl9fZGljdF9fIi5cbiAgIElmIG5vIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCwgYW5kIHRoZSBvYmplY3RcJ3MgY2xhc3MgaGFzIGFcbiAgICJfX2dldGF0dHJfXygpIiBtZXRob2QsIHRoYXQgaXMgY2FsbGVkIHRvIHNhdGlzZnkgdGhlIGxvb2t1cC5cblxuICAgQXR0cmlidXRlIGFzc2lnbm1lbnRzIGFuZCBkZWxldGlvbnMgdXBkYXRlIHRoZSBpbnN0YW5jZVwnc1xuICAgZGljdGlvbmFyeSwgbmV2ZXIgYSBjbGFzc1wncyBkaWN0aW9uYXJ5LiAgSWYgdGhlIGNsYXNzIGhhcyBhXG4gICAiX19zZXRhdHRyX18oKSIgb3IgIl9fZGVsYXR0cl9fKCkiIG1ldGhvZCwgdGhpcyBpcyBjYWxsZWQgaW5zdGVhZFxuICAgb2YgdXBkYXRpbmcgdGhlIGluc3RhbmNlIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG5cbiAgIENsYXNzIGluc3RhbmNlcyBjYW4gcHJldGVuZCB0byBiZSBudW1iZXJzLCBzZXF1ZW5jZXMsIG9yIG1hcHBpbmdzXG4gICBpZiB0aGV5IGhhdmUgbWV0aG9kcyB3aXRoIGNlcnRhaW4gc3BlY2lhbCBuYW1lcy4gIFNlZSBzZWN0aW9uXG4gICAqU3BlY2lhbCBtZXRob2QgbmFtZXMqLlxuXG4gICBTcGVjaWFsIGF0dHJpYnV0ZXM6ICJfX2RpY3RfXyIgaXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5O1xuICAgIl9fY2xhc3NfXyIgaXMgdGhlIGluc3RhbmNlXCdzIGNsYXNzLlxuXG5JL08gb2JqZWN0cyAoYWxzbyBrbm93biBhcyBmaWxlIG9iamVjdHMpXG4gICBBICpmaWxlIG9iamVjdCogcmVwcmVzZW50cyBhbiBvcGVuIGZpbGUuICBWYXJpb3VzIHNob3J0Y3V0cyBhcmVcbiAgIGF2YWlsYWJsZSB0byBjcmVhdGUgZmlsZSBvYmplY3RzOiB0aGUgIm9wZW4oKSIgYnVpbHQtaW4gZnVuY3Rpb24sXG4gICBhbmQgYWxzbyAib3MucG9wZW4oKSIsICJvcy5mZG9wZW4oKSIsIGFuZCB0aGUgIm1ha2VmaWxlKCkiIG1ldGhvZFxuICAgb2Ygc29ja2V0IG9iamVjdHMgKGFuZCBwZXJoYXBzIGJ5IG90aGVyIGZ1bmN0aW9ucyBvciBtZXRob2RzXG4gICBwcm92aWRlZCBieSBleHRlbnNpb24gbW9kdWxlcykuXG5cbiAgIFRoZSBvYmplY3RzICJzeXMuc3RkaW4iLCAic3lzLnN0ZG91dCIgYW5kICJzeXMuc3RkZXJyIiBhcmVcbiAgIGluaXRpYWxpemVkIHRvIGZpbGUgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcnByZXRlclwnc1xuICAgc3RhbmRhcmQgaW5wdXQsIG91dHB1dCBhbmQgZXJyb3Igc3RyZWFtczsgdGhleSBhcmUgYWxsIG9wZW4gaW4gdGV4dFxuICAgbW9kZSBhbmQgdGhlcmVmb3JlIGZvbGxvdyB0aGUgaW50ZXJmYWNlIGRlZmluZWQgYnkgdGhlXG4gICAiaW8uVGV4dElPQmFzZSIgYWJzdHJhY3QgY2xhc3MuXG5cbkludGVybmFsIHR5cGVzXG4gICBBIGZldyB0eXBlcyB1c2VkIGludGVybmFsbHkgYnkgdGhlIGludGVycHJldGVyIGFyZSBleHBvc2VkIHRvIHRoZVxuICAgdXNlci4gVGhlaXIgZGVmaW5pdGlvbnMgbWF5IGNoYW5nZSB3aXRoIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGVcbiAgIGludGVycHJldGVyLCBidXQgdGhleSBhcmUgbWVudGlvbmVkIGhlcmUgZm9yIGNvbXBsZXRlbmVzcy5cblxuICAgQ29kZSBvYmplY3RzXG4gICAgICBDb2RlIG9iamVjdHMgcmVwcmVzZW50ICpieXRlLWNvbXBpbGVkKiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlLFxuICAgICAgb3IgKmJ5dGVjb2RlKi4gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGNvZGUgb2JqZWN0IGFuZCBhXG4gICAgICBmdW5jdGlvbiBvYmplY3QgaXMgdGhhdCB0aGUgZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGFuIGV4cGxpY2l0XG4gICAgICByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uXCdzIGdsb2JhbHMgKHRoZSBtb2R1bGUgaW4gd2hpY2ggaXQgd2FzXG4gICAgICBkZWZpbmVkKSwgd2hpbGUgYSBjb2RlIG9iamVjdCBjb250YWlucyBubyBjb250ZXh0OyBhbHNvIHRoZVxuICAgICAgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgZnVuY3Rpb24gb2JqZWN0LCBub3RcbiAgICAgIGluIHRoZSBjb2RlIG9iamVjdCAoYmVjYXVzZSB0aGV5IHJlcHJlc2VudCB2YWx1ZXMgY2FsY3VsYXRlZCBhdFxuICAgICAgcnVuLXRpbWUpLiAgVW5saWtlIGZ1bmN0aW9uIG9iamVjdHMsIGNvZGUgb2JqZWN0cyBhcmUgaW1tdXRhYmxlXG4gICAgICBhbmQgY29udGFpbiBubyByZWZlcmVuY2VzIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSB0byBtdXRhYmxlXG4gICAgICBvYmplY3RzLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiY29fbmFtZSIgZ2l2ZXMgdGhlIGZ1bmN0aW9uIG5hbWU7XG4gICAgICAiY29fYXJnY291bnQiIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgKGluY2x1ZGluZ1xuICAgICAgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMpOyAiY29fbmxvY2FscyIgaXMgdGhlIG51bWJlciBvZlxuICAgICAgbG9jYWwgdmFyaWFibGVzIHVzZWQgYnkgdGhlIGZ1bmN0aW9uIChpbmNsdWRpbmcgYXJndW1lbnRzKTtcbiAgICAgICJjb192YXJuYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgbG9jYWxcbiAgICAgIHZhcmlhYmxlcyAoc3RhcnRpbmcgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMpOyAiY29fY2VsbHZhcnMiIGlzIGFcbiAgICAgIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGxvY2FsIHZhcmlhYmxlcyB0aGF0IGFyZVxuICAgICAgcmVmZXJlbmNlZCBieSBuZXN0ZWQgZnVuY3Rpb25zOyAiY29fZnJlZXZhcnMiIGlzIGEgdHVwbGVcbiAgICAgIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGZyZWUgdmFyaWFibGVzOyAiY29fY29kZSIgaXMgYSBzdHJpbmdcbiAgICAgIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2YgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zOyAiY29fY29uc3RzIlxuICAgICAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBsaXRlcmFscyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbiAgICAgICJjb19uYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbiAgICAgICJjb19maWxlbmFtZSIgaXMgdGhlIGZpbGVuYW1lIGZyb20gd2hpY2ggdGhlIGNvZGUgd2FzIGNvbXBpbGVkO1xuICAgICAgImNvX2ZpcnN0bGluZW5vIiBpcyB0aGUgZmlyc3QgbGluZSBudW1iZXIgb2YgdGhlIGZ1bmN0aW9uO1xuICAgICAgImNvX2xub3RhYiIgaXMgYSBzdHJpbmcgZW5jb2RpbmcgdGhlIG1hcHBpbmcgZnJvbSBieXRlY29kZVxuICAgICAgb2Zmc2V0cyB0byBsaW5lIG51bWJlcnMgKGZvciBkZXRhaWxzIHNlZSB0aGUgc291cmNlIGNvZGUgb2YgdGhlXG4gICAgICBpbnRlcnByZXRlcik7ICJjb19zdGFja3NpemUiIGlzIHRoZSByZXF1aXJlZCBzdGFjayBzaXplXG4gICAgICAoaW5jbHVkaW5nIGxvY2FsIHZhcmlhYmxlcyk7ICJjb19mbGFncyIgaXMgYW4gaW50ZWdlciBlbmNvZGluZyBhXG4gICAgICBudW1iZXIgb2YgZmxhZ3MgZm9yIHRoZSBpbnRlcnByZXRlci5cblxuICAgICAgVGhlIGZvbGxvd2luZyBmbGFnIGJpdHMgYXJlIGRlZmluZWQgZm9yICJjb19mbGFncyI6IGJpdCAiMHgwNCJcbiAgICAgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIiphcmd1bWVudHMiIHN5bnRheCB0byBhY2NlcHQgYW5cbiAgICAgIGFyYml0cmFyeSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHM7IGJpdCAiMHgwOCIgaXMgc2V0IGlmXG4gICAgICB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIioqa2V5d29yZHMiIHN5bnRheCB0byBhY2NlcHQgYXJiaXRyYXJ5XG4gICAgICBrZXl3b3JkIGFyZ3VtZW50czsgYml0ICIweDIwIiBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGFcbiAgICAgIGdlbmVyYXRvci5cblxuICAgICAgRnV0dXJlIGZlYXR1cmUgZGVjbGFyYXRpb25zICgiZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiIpXG4gICAgICBhbHNvIHVzZSBiaXRzIGluICJjb19mbGFncyIgdG8gaW5kaWNhdGUgd2hldGhlciBhIGNvZGUgb2JqZWN0XG4gICAgICB3YXMgY29tcGlsZWQgd2l0aCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBlbmFibGVkOiBiaXQgIjB4MjAwMCIgaXNcbiAgICAgIHNldCBpZiB0aGUgZnVuY3Rpb24gd2FzIGNvbXBpbGVkIHdpdGggZnV0dXJlIGRpdmlzaW9uIGVuYWJsZWQ7XG4gICAgICBiaXRzICIweDEwIiBhbmQgIjB4MTAwMCIgd2VyZSB1c2VkIGluIGVhcmxpZXIgdmVyc2lvbnMgb2ZcbiAgICAgIFB5dGhvbi5cblxuICAgICAgT3RoZXIgYml0cyBpbiAiY29fZmxhZ3MiIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLlxuXG4gICAgICBJZiBhIGNvZGUgb2JqZWN0IHJlcHJlc2VudHMgYSBmdW5jdGlvbiwgdGhlIGZpcnN0IGl0ZW0gaW5cbiAgICAgICJjb19jb25zdHMiIGlzIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBvZiB0aGUgZnVuY3Rpb24sIG9yXG4gICAgICAiTm9uZSIgaWYgdW5kZWZpbmVkLlxuXG4gICBGcmFtZSBvYmplY3RzXG4gICAgICBGcmFtZSBvYmplY3RzIHJlcHJlc2VudCBleGVjdXRpb24gZnJhbWVzLiAgVGhleSBtYXkgb2NjdXIgaW5cbiAgICAgIHRyYWNlYmFjayBvYmplY3RzIChzZWUgYmVsb3cpLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiZl9iYWNrIiBpcyB0byB0aGUgcHJldmlvdXMgc3RhY2tcbiAgICAgIGZyYW1lICh0b3dhcmRzIHRoZSBjYWxsZXIpLCBvciAiTm9uZSIgaWYgdGhpcyBpcyB0aGUgYm90dG9tXG4gICAgICBzdGFjayBmcmFtZTsgImZfY29kZSIgaXMgdGhlIGNvZGUgb2JqZWN0IGJlaW5nIGV4ZWN1dGVkIGluIHRoaXNcbiAgICAgIGZyYW1lOyAiZl9sb2NhbHMiIGlzIHRoZSBkaWN0aW9uYXJ5IHVzZWQgdG8gbG9vayB1cCBsb2NhbFxuICAgICAgdmFyaWFibGVzOyAiZl9nbG9iYWxzIiBpcyB1c2VkIGZvciBnbG9iYWwgdmFyaWFibGVzO1xuICAgICAgImZfYnVpbHRpbnMiIGlzIHVzZWQgZm9yIGJ1aWx0LWluIChpbnRyaW5zaWMpIG5hbWVzOyAiZl9sYXN0aSJcbiAgICAgIGdpdmVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uICh0aGlzIGlzIGFuIGluZGV4IGludG8gdGhlXG4gICAgICBieXRlY29kZSBzdHJpbmcgb2YgdGhlIGNvZGUgb2JqZWN0KS5cblxuICAgICAgU3BlY2lhbCB3cml0YWJsZSBhdHRyaWJ1dGVzOiAiZl90cmFjZSIsIGlmIG5vdCAiTm9uZSIsIGlzIGFcbiAgICAgIGZ1bmN0aW9uIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgY29kZSBsaW5lICh0aGlzIGlzXG4gICAgICB1c2VkIGJ5IHRoZSBkZWJ1Z2dlcik7ICJmX2xpbmVubyIgaXMgdGhlIGN1cnJlbnQgbGluZSBudW1iZXIgb2ZcbiAgICAgIHRoZSBmcmFtZSAtLS0gd3JpdGluZyB0byB0aGlzIGZyb20gd2l0aGluIGEgdHJhY2UgZnVuY3Rpb24ganVtcHNcbiAgICAgIHRvIHRoZSBnaXZlbiBsaW5lIChvbmx5IGZvciB0aGUgYm90dG9tLW1vc3QgZnJhbWUpLiAgQSBkZWJ1Z2dlclxuICAgICAgY2FuIGltcGxlbWVudCBhIEp1bXAgY29tbWFuZCAoYWthIFNldCBOZXh0IFN0YXRlbWVudCkgYnkgd3JpdGluZ1xuICAgICAgdG8gZl9saW5lbm8uXG5cbiAgICAgIEZyYW1lIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuXG4gICAgICBmcmFtZS5jbGVhcigpXG5cbiAgICAgICAgIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgcmVmZXJlbmNlcyB0byBsb2NhbCB2YXJpYWJsZXMgaGVsZCBieVxuICAgICAgICAgdGhlIGZyYW1lLiAgQWxzbywgaWYgdGhlIGZyYW1lIGJlbG9uZ2VkIHRvIGEgZ2VuZXJhdG9yLCB0aGVcbiAgICAgICAgIGdlbmVyYXRvciBpcyBmaW5hbGl6ZWQuICBUaGlzIGhlbHBzIGJyZWFrIHJlZmVyZW5jZSBjeWNsZXNcbiAgICAgICAgIGludm9sdmluZyBmcmFtZSBvYmplY3RzIChmb3IgZXhhbXBsZSB3aGVuIGNhdGNoaW5nIGFuXG4gICAgICAgICBleGNlcHRpb24gYW5kIHN0b3JpbmcgaXRzIHRyYWNlYmFjayBmb3IgbGF0ZXIgdXNlKS5cblxuICAgICAgICAgIlJ1bnRpbWVFcnJvciIgaXMgcmFpc2VkIGlmIHRoZSBmcmFtZSBpcyBjdXJyZW50bHkgZXhlY3V0aW5nLlxuXG4gICAgICAgICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbiAgIFRyYWNlYmFjayBvYmplY3RzXG4gICAgICBUcmFjZWJhY2sgb2JqZWN0cyByZXByZXNlbnQgYSBzdGFjayB0cmFjZSBvZiBhbiBleGNlcHRpb24uICBBXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0IGlzIGNyZWF0ZWQgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLiAgV2hlbiB0aGVcbiAgICAgIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdW53aW5kcyB0aGUgZXhlY3V0aW9uIHN0YWNrLCBhdFxuICAgICAgZWFjaCB1bndvdW5kIGxldmVsIGEgdHJhY2ViYWNrIG9iamVjdCBpcyBpbnNlcnRlZCBpbiBmcm9udCBvZlxuICAgICAgdGhlIGN1cnJlbnQgdHJhY2ViYWNrLiAgV2hlbiBhbiBleGNlcHRpb24gaGFuZGxlciBpcyBlbnRlcmVkLFxuICAgICAgdGhlIHN0YWNrIHRyYWNlIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtLiAoU2VlIHNlY3Rpb25cbiAgICAgICpUaGUgdHJ5IHN0YXRlbWVudCouKSBJdCBpcyBhY2Nlc3NpYmxlIGFzIHRoZSB0aGlyZCBpdGVtIG9mIHRoZVxuICAgICAgdHVwbGUgcmV0dXJuZWQgYnkgInN5cy5leGNfaW5mbygpIi4gV2hlbiB0aGUgcHJvZ3JhbSBjb250YWlucyBub1xuICAgICAgc3VpdGFibGUgaGFuZGxlciwgdGhlIHN0YWNrIHRyYWNlIGlzIHdyaXR0ZW4gKG5pY2VseSBmb3JtYXR0ZWQpXG4gICAgICB0byB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtOyBpZiB0aGUgaW50ZXJwcmV0ZXIgaXMgaW50ZXJhY3RpdmUsXG4gICAgICBpdCBpcyBhbHNvIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSB1c2VyIGFzICJzeXMubGFzdF90cmFjZWJhY2siLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAidGJfbmV4dCIgaXMgdGhlIG5leHQgbGV2ZWwgaW4gdGhlXG4gICAgICBzdGFjayB0cmFjZSAodG93YXJkcyB0aGUgZnJhbWUgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCksIG9yXG4gICAgICAiTm9uZSIgaWYgdGhlcmUgaXMgbm8gbmV4dCBsZXZlbDsgInRiX2ZyYW1lIiBwb2ludHMgdG8gdGhlXG4gICAgICBleGVjdXRpb24gZnJhbWUgb2YgdGhlIGN1cnJlbnQgbGV2ZWw7ICJ0Yl9saW5lbm8iIGdpdmVzIHRoZSBsaW5lXG4gICAgICBudW1iZXIgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZDsgInRiX2xhc3RpIiBpbmRpY2F0ZXMgdGhlXG4gICAgICBwcmVjaXNlIGluc3RydWN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIGFuZCBsYXN0IGluc3RydWN0aW9uIGluXG4gICAgICB0aGUgdHJhY2ViYWNrIG1heSBkaWZmZXIgZnJvbSB0aGUgbGluZSBudW1iZXIgb2YgaXRzIGZyYW1lXG4gICAgICBvYmplY3QgaWYgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCBpbiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIG5vXG4gICAgICBtYXRjaGluZyBleGNlcHQgY2xhdXNlIG9yIHdpdGggYSBmaW5hbGx5IGNsYXVzZS5cblxuICAgU2xpY2Ugb2JqZWN0c1xuICAgICAgU2xpY2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgc2xpY2VzIGZvciAiX19nZXRpdGVtX18oKSJcbiAgICAgIG1ldGhvZHMuICBUaGV5IGFyZSBhbHNvIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluICJzbGljZSgpIlxuICAgICAgZnVuY3Rpb24uXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJzdGFydCIgaXMgdGhlIGxvd2VyIGJvdW5kOyAic3RvcCJcbiAgICAgIGlzIHRoZSB1cHBlciBib3VuZDsgInN0ZXAiIGlzIHRoZSBzdGVwIHZhbHVlOyBlYWNoIGlzICJOb25lIiBpZlxuICAgICAgb21pdHRlZC4gIFRoZXNlIGF0dHJpYnV0ZXMgY2FuIGhhdmUgYW55IHR5cGUuXG5cbiAgICAgIFNsaWNlIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuXG4gICAgICBzbGljZS5pbmRpY2VzKHNlbGYsIGxlbmd0aClcblxuICAgICAgICAgVGhpcyBtZXRob2QgdGFrZXMgYSBzaW5nbGUgaW50ZWdlciBhcmd1bWVudCAqbGVuZ3RoKiBhbmRcbiAgICAgICAgIGNvbXB1dGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzbGljZSB0aGF0IHRoZSBzbGljZSBvYmplY3RcbiAgICAgICAgIHdvdWxkIGRlc2NyaWJlIGlmIGFwcGxpZWQgdG8gYSBzZXF1ZW5jZSBvZiAqbGVuZ3RoKiBpdGVtcy5cbiAgICAgICAgIEl0IHJldHVybnMgYSB0dXBsZSBvZiB0aHJlZSBpbnRlZ2VyczsgcmVzcGVjdGl2ZWx5IHRoZXNlIGFyZVxuICAgICAgICAgdGhlICpzdGFydCogYW5kICpzdG9wKiBpbmRpY2VzIGFuZCB0aGUgKnN0ZXAqIG9yIHN0cmlkZVxuICAgICAgICAgbGVuZ3RoIG9mIHRoZSBzbGljZS4gTWlzc2luZyBvciBvdXQtb2YtYm91bmRzIGluZGljZXMgYXJlXG4gICAgICAgICBoYW5kbGVkIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcy5cblxuICAgU3RhdGljIG1ldGhvZCBvYmplY3RzXG4gICAgICBTdGF0aWMgbWV0aG9kIG9iamVjdHMgcHJvdmlkZSBhIHdheSBvZiBkZWZlYXRpbmcgdGhlXG4gICAgICB0cmFuc2Zvcm1hdGlvbiBvZiBmdW5jdGlvbiBvYmplY3RzIHRvIG1ldGhvZCBvYmplY3RzIGRlc2NyaWJlZFxuICAgICAgYWJvdmUuIEEgc3RhdGljIG1ldGhvZCBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhbnkgb3RoZXJcbiAgICAgIG9iamVjdCwgdXN1YWxseSBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0LiBXaGVuIGEgc3RhdGljXG4gICAgICBtZXRob2Qgb2JqZWN0IGlzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3Mgb3IgYSBjbGFzcyBpbnN0YW5jZSwgdGhlXG4gICAgICBvYmplY3QgYWN0dWFsbHkgcmV0dXJuZWQgaXMgdGhlIHdyYXBwZWQgb2JqZWN0LCB3aGljaCBpcyBub3RcbiAgICAgIHN1YmplY3QgdG8gYW55IGZ1cnRoZXIgdHJhbnNmb3JtYXRpb24uIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmVcbiAgICAgIG5vdCB0aGVtc2VsdmVzIGNhbGxhYmxlLCBhbHRob3VnaCB0aGUgb2JqZWN0cyB0aGV5IHdyYXAgdXN1YWxseVxuICAgICAgYXJlLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAgICAic3RhdGljbWV0aG9kKCkiIGNvbnN0cnVjdG9yLlxuXG4gICBDbGFzcyBtZXRob2Qgb2JqZWN0c1xuICAgICAgQSBjbGFzcyBtZXRob2Qgb2JqZWN0LCBsaWtlIGEgc3RhdGljIG1ldGhvZCBvYmplY3QsIGlzIGEgd3JhcHBlclxuICAgICAgYXJvdW5kIGFub3RoZXIgb2JqZWN0IHRoYXQgYWx0ZXJzIHRoZSB3YXkgaW4gd2hpY2ggdGhhdCBvYmplY3RcbiAgICAgIGlzIHJldHJpZXZlZCBmcm9tIGNsYXNzZXMgYW5kIGNsYXNzIGluc3RhbmNlcy4gVGhlIGJlaGF2aW91ciBvZlxuICAgICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgdXBvbiBzdWNoIHJldHJpZXZhbCBpcyBkZXNjcmliZWQgYWJvdmUsXG4gICAgICB1bmRlciAiVXNlci1kZWZpbmVkIG1ldGhvZHMiLiBDbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZFxuICAgICAgYnkgdGhlIGJ1aWx0LWluICJjbGFzc21ldGhvZCgpIiBjb25zdHJ1Y3Rvci5cbicsCisgJ3R5cGVzJzogdSdcblRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkJlbG93IGlzIGEgbGlzdCBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgYnVpbHQgaW50byBQeXRob24uICBFeHRlbnNpb25cbm1vZHVsZXMgKHdyaXR0ZW4gaW4gQywgSmF2YSwgb3Igb3RoZXIgbGFuZ3VhZ2VzLCBkZXBlbmRpbmcgb24gdGhlXG5pbXBsZW1lbnRhdGlvbikgY2FuIGRlZmluZSBhZGRpdGlvbmFsIHR5cGVzLiAgRnV0dXJlIHZlcnNpb25zIG9mXG5QeXRob24gbWF5IGFkZCB0eXBlcyB0byB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4sIHJhdGlvbmFsIG51bWJlcnMsXG5lZmZpY2llbnRseSBzdG9yZWQgYXJyYXlzIG9mIGludGVnZXJzLCBldGMuKSwgYWx0aG91Z2ggc3VjaCBhZGRpdGlvbnNcbndpbGwgb2Z0ZW4gYmUgcHJvdmlkZWQgdmlhIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGluc3RlYWQuXG5cblNvbWUgb2YgdGhlIHR5cGUgZGVzY3JpcHRpb25zIGJlbG93IGNvbnRhaW4gYSBwYXJhZ3JhcGggbGlzdGluZ1xuXCdzcGVjaWFsIGF0dHJpYnV0ZXMuXCcgIFRoZXNlIGFyZSBhdHRyaWJ1dGVzIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlXG5pbXBsZW1lbnRhdGlvbiBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbCB1c2UuICBUaGVpciBkZWZpbml0aW9uXG5tYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG5cbk5vbmVcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZSAiTm9uZSIuIEl0XG4gICBpcyB1c2VkIHRvIHNpZ25pZnkgdGhlIGFic2VuY2Ugb2YgYSB2YWx1ZSBpbiBtYW55IHNpdHVhdGlvbnMsIGUuZy4sXG4gICBpdCBpcyByZXR1cm5lZCBmcm9tIGZ1bmN0aW9ucyB0aGF0IGRvblwndCBleHBsaWNpdGx5IHJldHVyblxuICAgYW55dGhpbmcuIEl0cyB0cnV0aCB2YWx1ZSBpcyBmYWxzZS5cblxuTm90SW1wbGVtZW50ZWRcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZVxuICAgIk5vdEltcGxlbWVudGVkIi4gTnVtZXJpYyBtZXRob2RzIGFuZCByaWNoIGNvbXBhcmlzb24gbWV0aG9kc1xuICAgc2hvdWxkIHJldHVybiB0aGlzIHZhbHVlIGlmIHRoZXkgZG8gbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvclxuICAgdGhlIG9wZXJhbmRzIHByb3ZpZGVkLiAgKFRoZSBpbnRlcnByZXRlciB3aWxsIHRoZW4gdHJ5IHRoZVxuICAgcmVmbGVjdGVkIG9wZXJhdGlvbiwgb3Igc29tZSBvdGhlciBmYWxsYmFjaywgZGVwZW5kaW5nIG9uIHRoZVxuICAgb3BlcmF0b3IuKSAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG5cbiAgIFNlZSAqSW1wbGVtZW50aW5nIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnMqIGZvciBtb3JlIGRldGFpbHMuXG5cbkVsbGlwc2lzXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGxpdGVyYWwgIi4uLiIgb3IgdGhlXG4gICBidWlsdC1pbiBuYW1lICJFbGxpcHNpcyIuICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cblxuIm51bWJlcnMuTnVtYmVyIlxuICAgVGhlc2UgYXJlIGNyZWF0ZWQgYnkgbnVtZXJpYyBsaXRlcmFscyBhbmQgcmV0dXJuZWQgYXMgcmVzdWx0cyBieVxuICAgYXJpdGhtZXRpYyBvcGVyYXRvcnMgYW5kIGFyaXRobWV0aWMgYnVpbHQtaW4gZnVuY3Rpb25zLiAgTnVtZXJpY1xuICAgb2JqZWN0cyBhcmUgaW1tdXRhYmxlOyBvbmNlIGNyZWF0ZWQgdGhlaXIgdmFsdWUgbmV2ZXIgY2hhbmdlcy5cbiAgIFB5dGhvbiBudW1iZXJzIGFyZSBvZiBjb3Vyc2Ugc3Ryb25nbHkgcmVsYXRlZCB0byBtYXRoZW1hdGljYWxcbiAgIG51bWJlcnMsIGJ1dCBzdWJqZWN0IHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBudW1lcmljYWwgcmVwcmVzZW50YXRpb25cbiAgIGluIGNvbXB1dGVycy5cblxuICAgUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBpbnRlZ2VycywgZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgYW5kXG4gICBjb21wbGV4IG51bWJlcnM6XG5cbiAgICJudW1iZXJzLkludGVncmFsIlxuICAgICAgVGhlc2UgcmVwcmVzZW50IGVsZW1lbnRzIGZyb20gdGhlIG1hdGhlbWF0aWNhbCBzZXQgb2YgaW50ZWdlcnNcbiAgICAgIChwb3NpdGl2ZSBhbmQgbmVnYXRpdmUpLlxuXG4gICAgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGludGVnZXJzOlxuXG4gICAgICBJbnRlZ2VycyAoImludCIpXG5cbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCBudW1iZXJzIGluIGFuIHVubGltaXRlZCByYW5nZSwgc3ViamVjdCB0b1xuICAgICAgICAgYXZhaWxhYmxlICh2aXJ0dWFsKSBtZW1vcnkgb25seS4gIEZvciB0aGUgcHVycG9zZSBvZiBzaGlmdFxuICAgICAgICAgYW5kIG1hc2sgb3BlcmF0aW9ucywgYSBiaW5hcnkgcmVwcmVzZW50YXRpb24gaXMgYXNzdW1lZCwgYW5kXG4gICAgICAgICBuZWdhdGl2ZSBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBpbiBhIHZhcmlhbnQgb2YgMlwnc1xuICAgICAgICAgY29tcGxlbWVudCB3aGljaCBnaXZlcyB0aGUgaWxsdXNpb24gb2YgYW4gaW5maW5pdGUgc3RyaW5nIG9mXG4gICAgICAgICBzaWduIGJpdHMgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0LlxuXG4gICAgICBCb29sZWFucyAoImJvb2wiKVxuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IHRoZSB0cnV0aCB2YWx1ZXMgRmFsc2UgYW5kIFRydWUuICBUaGUgdHdvXG4gICAgICAgICBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgdmFsdWVzICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgdGhlXG4gICAgICAgICBvbmx5IEJvb2xlYW4gb2JqZWN0cy4gVGhlIEJvb2xlYW4gdHlwZSBpcyBhIHN1YnR5cGUgb2YgdGhlXG4gICAgICAgICBpbnRlZ2VyIHR5cGUsIGFuZCBCb29sZWFuIHZhbHVlcyBiZWhhdmUgbGlrZSB0aGUgdmFsdWVzIDAgYW5kXG4gICAgICAgICAxLCByZXNwZWN0aXZlbHksIGluIGFsbW9zdCBhbGwgY29udGV4dHMsIHRoZSBleGNlcHRpb24gYmVpbmdcbiAgICAgICAgIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcsIHRoZSBzdHJpbmdzICIiRmFsc2UiIiBvclxuICAgICAgICAgIiJUcnVlIiIgYXJlIHJldHVybmVkLCByZXNwZWN0aXZlbHkuXG5cbiAgICAgIFRoZSBydWxlcyBmb3IgaW50ZWdlciByZXByZXNlbnRhdGlvbiBhcmUgaW50ZW5kZWQgdG8gZ2l2ZSB0aGVcbiAgICAgIG1vc3QgbWVhbmluZ2Z1bCBpbnRlcnByZXRhdGlvbiBvZiBzaGlmdCBhbmQgbWFzayBvcGVyYXRpb25zXG4gICAgICBpbnZvbHZpbmcgbmVnYXRpdmUgaW50ZWdlcnMuXG5cbiAgICJudW1iZXJzLlJlYWwiICgiZmxvYXQiKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IG1hY2hpbmUtbGV2ZWwgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludFxuICAgICAgbnVtYmVycy4gWW91IGFyZSBhdCB0aGUgbWVyY3kgb2YgdGhlIHVuZGVybHlpbmcgbWFjaGluZVxuICAgICAgYXJjaGl0ZWN0dXJlIChhbmQgQyBvciBKYXZhIGltcGxlbWVudGF0aW9uKSBmb3IgdGhlIGFjY2VwdGVkXG4gICAgICByYW5nZSBhbmQgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cuIFB5dGhvbiBkb2VzIG5vdCBzdXBwb3J0IHNpbmdsZS1cbiAgICAgIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzOyB0aGUgc2F2aW5ncyBpbiBwcm9jZXNzb3IgYW5kXG4gICAgICBtZW1vcnkgdXNhZ2UgdGhhdCBhcmUgdXN1YWxseSB0aGUgcmVhc29uIGZvciB1c2luZyB0aGVzZSBhcmVcbiAgICAgIGR3YXJmZWQgYnkgdGhlIG92ZXJoZWFkIG9mIHVzaW5nIG9iamVjdHMgaW4gUHl0aG9uLCBzbyB0aGVyZSBpc1xuICAgICAgbm8gcmVhc29uIHRvIGNvbXBsaWNhdGUgdGhlIGxhbmd1YWdlIHdpdGggdHdvIGtpbmRzIG9mIGZsb2F0aW5nXG4gICAgICBwb2ludCBudW1iZXJzLlxuXG4gICAibnVtYmVycy5Db21wbGV4IiAoImNvbXBsZXgiKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IGNvbXBsZXggbnVtYmVycyBhcyBhIHBhaXIgb2YgbWFjaGluZS1sZXZlbFxuICAgICAgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAgVGhlIHNhbWUgY2F2ZWF0cyBhcHBseVxuICAgICAgYXMgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgb2YgYVxuICAgICAgY29tcGxleCBudW1iZXIgInoiIGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGUgcmVhZC1vbmx5XG4gICAgICBhdHRyaWJ1dGVzICJ6LnJlYWwiIGFuZCAiei5pbWFnIi5cblxuU2VxdWVuY2VzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIG9yZGVyZWQgc2V0cyBpbmRleGVkIGJ5IG5vbi1uZWdhdGl2ZVxuICAgbnVtYmVycy4gVGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zXG4gICBvZiBhIHNlcXVlbmNlLiBXaGVuIHRoZSBsZW5ndGggb2YgYSBzZXF1ZW5jZSBpcyAqbiosIHRoZSBpbmRleCBzZXRcbiAgIGNvbnRhaW5zIHRoZSBudW1iZXJzIDAsIDEsIC4uLiwgKm4qLTEuICBJdGVtICppKiBvZiBzZXF1ZW5jZSAqYSogaXNcbiAgIHNlbGVjdGVkIGJ5ICJhW2ldIi5cblxuICAgU2VxdWVuY2VzIGFsc28gc3VwcG9ydCBzbGljaW5nOiAiYVtpOmpdIiBzZWxlY3RzIGFsbCBpdGVtcyB3aXRoXG4gICBpbmRleCAqayogc3VjaCB0aGF0ICppKiAiPD0iICprKiAiPCIgKmoqLiAgV2hlbiB1c2VkIGFzIGFuXG4gICBleHByZXNzaW9uLCBhIHNsaWNlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgaW1wbGllc1xuICAgdGhhdCB0aGUgaW5kZXggc2V0IGlzIHJlbnVtYmVyZWQgc28gdGhhdCBpdCBzdGFydHMgYXQgMC5cblxuICAgU29tZSBzZXF1ZW5jZXMgYWxzbyBzdXBwb3J0ICJleHRlbmRlZCBzbGljaW5nIiB3aXRoIGEgdGhpcmQgInN0ZXAiXG4gICBwYXJhbWV0ZXI6ICJhW2k6ajprXSIgc2VsZWN0cyBhbGwgaXRlbXMgb2YgKmEqIHdpdGggaW5kZXggKngqIHdoZXJlXG4gICAieCA9IGkgKyBuKmsiLCAqbiogIj49IiAiMCIgYW5kICppKiAiPD0iICp4KiAiPCIgKmoqLlxuXG4gICBTZXF1ZW5jZXMgYXJlIGRpc3Rpbmd1aXNoZWQgYWNjb3JkaW5nIHRvIHRoZWlyIG11dGFiaWxpdHk6XG5cbiAgIEltbXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIEFuIG9iamVjdCBvZiBhbiBpbW11dGFibGUgc2VxdWVuY2UgdHlwZSBjYW5ub3QgY2hhbmdlIG9uY2UgaXQgaXNcbiAgICAgIGNyZWF0ZWQuICAoSWYgdGhlIG9iamVjdCBjb250YWlucyByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHMsXG4gICAgICB0aGVzZSBvdGhlciBvYmplY3RzIG1heSBiZSBtdXRhYmxlIGFuZCBtYXkgYmUgY2hhbmdlZDsgaG93ZXZlcixcbiAgICAgIHRoZSBjb2xsZWN0aW9uIG9mIG9iamVjdHMgZGlyZWN0bHkgcmVmZXJlbmNlZCBieSBhbiBpbW11dGFibGVcbiAgICAgIG9iamVjdCBjYW5ub3QgY2hhbmdlLilcblxuICAgICAgVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlczpcblxuICAgICAgU3RyaW5nc1xuICAgICAgICAgQSBzdHJpbmcgaXMgYSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhhdCByZXByZXNlbnQgVW5pY29kZSBjb2RlXG4gICAgICAgICBwb2ludHMuIEFsbCB0aGUgY29kZSBwb2ludHMgaW4gdGhlIHJhbmdlICJVKzAwMDAgLSBVKzEwRkZGRiJcbiAgICAgICAgIGNhbiBiZSByZXByZXNlbnRlZCBpbiBhIHN0cmluZy4gIFB5dGhvbiBkb2VzblwndCBoYXZlIGEgImNoYXIiXG4gICAgICAgICB0eXBlOyBpbnN0ZWFkLCBldmVyeSBjb2RlIHBvaW50IGluIHRoZSBzdHJpbmcgaXMgcmVwcmVzZW50ZWRcbiAgICAgICAgIGFzIGEgc3RyaW5nIG9iamVjdCB3aXRoIGxlbmd0aCAiMSIuICBUaGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgICAgICAgICJvcmQoKSIgY29udmVydHMgYSBjb2RlIHBvaW50IGZyb20gaXRzIHN0cmluZyBmb3JtIHRvIGFuXG4gICAgICAgICBpbnRlZ2VyIGluIHRoZSByYW5nZSAiMCAtIDEwRkZGRiI7ICJjaHIoKSIgY29udmVydHMgYW5cbiAgICAgICAgIGludGVnZXIgaW4gdGhlIHJhbmdlICIwIC0gMTBGRkZGIiB0byB0aGUgY29ycmVzcG9uZGluZyBsZW5ndGhcbiAgICAgICAgICIxIiBzdHJpbmcgb2JqZWN0LiAic3RyLmVuY29kZSgpIiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IGFcbiAgICAgICAgICJzdHIiIHRvICJieXRlcyIgdXNpbmcgdGhlIGdpdmVuIHRleHQgZW5jb2RpbmcsIGFuZFxuICAgICAgICAgImJ5dGVzLmRlY29kZSgpIiBjYW4gYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBvcHBvc2l0ZS5cblxuICAgICAgVHVwbGVzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSB0dXBsZSBhcmUgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiBUdXBsZXMgb2ZcbiAgICAgICAgIHR3byBvciBtb3JlIGl0ZW1zIGFyZSBmb3JtZWQgYnkgY29tbWEtc2VwYXJhdGVkIGxpc3RzIG9mXG4gICAgICAgICBleHByZXNzaW9ucy4gIEEgdHVwbGUgb2Ygb25lIGl0ZW0gKGEgXCdzaW5nbGV0b25cJykgY2FuIGJlXG4gICAgICAgICBmb3JtZWQgYnkgYWZmaXhpbmcgYSBjb21tYSB0byBhbiBleHByZXNzaW9uIChhbiBleHByZXNzaW9uIGJ5XG4gICAgICAgICBpdHNlbGYgZG9lcyBub3QgY3JlYXRlIGEgdHVwbGUsIHNpbmNlIHBhcmVudGhlc2VzIG11c3QgYmVcbiAgICAgICAgIHVzYWJsZSBmb3IgZ3JvdXBpbmcgb2YgZXhwcmVzc2lvbnMpLiAgQW4gZW1wdHkgdHVwbGUgY2FuIGJlXG4gICAgICAgICBmb3JtZWQgYnkgYW4gZW1wdHkgcGFpciBvZiBwYXJlbnRoZXNlcy5cblxuICAgICAgQnl0ZXNcbiAgICAgICAgIEEgYnl0ZXMgb2JqZWN0IGlzIGFuIGltbXV0YWJsZSBhcnJheS4gIFRoZSBpdGVtcyBhcmUgOC1iaXRcbiAgICAgICAgIGJ5dGVzLCByZXByZXNlbnRlZCBieSBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgMjU2LlxuICAgICAgICAgQnl0ZXMgbGl0ZXJhbHMgKGxpa2UgImJcJ2FiY1wnIikgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgICAgICAgImJ5dGVzKCkiIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBieXRlcyBvYmplY3RzLiAgQWxzbyxcbiAgICAgICAgIGJ5dGVzIG9iamVjdHMgY2FuIGJlIGRlY29kZWQgdG8gc3RyaW5ncyB2aWEgdGhlICJkZWNvZGUoKSJcbiAgICAgICAgIG1ldGhvZC5cblxuICAgTXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIE11dGFibGUgc2VxdWVuY2VzIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQuICBUaGVcbiAgICAgIHN1YnNjcmlwdGlvbiBhbmQgc2xpY2luZyBub3RhdGlvbnMgY2FuIGJlIHVzZWQgYXMgdGhlIHRhcmdldCBvZlxuICAgICAgYXNzaWdubWVudCBhbmQgImRlbCIgKGRlbGV0ZSkgc3RhdGVtZW50cy5cblxuICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG5cbiAgICAgIExpc3RzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyBhcmVcbiAgICAgICAgIGZvcm1lZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaW5cbiAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyBuZWVkZWRcbiAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG5cbiAgICAgIEJ5dGUgQXJyYXlzXG4gICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkIGJ5XG4gICAgICAgICB0aGUgYnVpbHQtaW4gImJ5dGVhcnJheSgpIiBjb25zdHJ1Y3Rvci4gIEFzaWRlIGZyb20gYmVpbmdcbiAgICAgICAgIG11dGFibGUgKGFuZCBoZW5jZSB1bmhhc2hhYmxlKSwgYnl0ZSBhcnJheXMgb3RoZXJ3aXNlIHByb3ZpZGVcbiAgICAgICAgIHRoZSBzYW1lIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eSBhcyBpbW11dGFibGUgYnl0ZXNcbiAgICAgICAgIG9iamVjdHMuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlICJhcnJheSIgcHJvdmlkZXMgYW4gYWRkaXRpb25hbCBleGFtcGxlIG9mIGFcbiAgICAgIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgYXMgZG9lcyB0aGUgImNvbGxlY3Rpb25zIiBtb2R1bGUuXG5cblNldCB0eXBlc1xuICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbiAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gSG93ZXZlcixcbiAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIlxuICAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgc2V0LiBDb21tb24gdXNlcyBmb3Igc2V0cyBhcmUgZmFzdFxuICAgbWVtYmVyc2hpcCB0ZXN0aW5nLCByZW1vdmluZyBkdXBsaWNhdGVzIGZyb20gYSBzZXF1ZW5jZSwgYW5kXG4gICBjb21wdXRpbmcgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgc3VjaCBhcyBpbnRlcnNlY3Rpb24sIHVuaW9uLFxuICAgZGlmZmVyZW5jZSwgYW5kIHN5bW1ldHJpYyBkaWZmZXJlbmNlLlxuXG4gICBGb3Igc2V0IGVsZW1lbnRzLCB0aGUgc2FtZSBpbW11dGFiaWxpdHkgcnVsZXMgYXBwbHkgYXMgZm9yXG4gICBkaWN0aW9uYXJ5IGtleXMuIE5vdGUgdGhhdCBudW1lcmljIHR5cGVzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3JcbiAgIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZFxuICAgIjEuMCIpLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG5cbiAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBzZXQgdHlwZXM6XG5cbiAgIFNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhIG11dGFibGUgc2V0LiBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgInNldCgpIiBjb25zdHJ1Y3RvciBhbmQgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgYnkgc2V2ZXJhbFxuICAgICAgbWV0aG9kcywgc3VjaCBhcyAiYWRkKCkiLlxuXG4gICBGcm96ZW4gc2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGFuIGltbXV0YWJsZSBzZXQuICBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZVxuICAgICAgYnVpbHQtaW4gImZyb3plbnNldCgpIiBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzIGltbXV0YWJsZVxuICAgICAgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2YgYW5vdGhlclxuICAgICAgc2V0LCBvciBhcyBhIGRpY3Rpb25hcnkga2V5LlxuXG5NYXBwaW5nc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBhcmJpdHJhcnkgaW5kZXhcbiAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gImFba10iIHNlbGVjdHMgdGhlIGl0ZW0gaW5kZXhlZCBieSAiayJcbiAgIGZyb20gdGhlIG1hcHBpbmcgImEiOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZCBhcyB0aGVcbiAgIHRhcmdldCBvZiBhc3NpZ25tZW50cyBvciAiZGVsIiBzdGF0ZW1lbnRzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgbWFwcGluZy5cblxuICAgVGhlcmUgaXMgY3VycmVudGx5IGEgc2luZ2xlIGludHJpbnNpYyBtYXBwaW5nIHR5cGU6XG5cbiAgIERpY3Rpb25hcmllc1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBuZWFybHlcbiAgICAgIGFyYml0cmFyeSB2YWx1ZXMuICBUaGUgb25seSB0eXBlcyBvZiB2YWx1ZXMgbm90IGFjY2VwdGFibGUgYXNcbiAgICAgIGtleXMgYXJlIHZhbHVlcyBjb250YWluaW5nIGxpc3RzIG9yIGRpY3Rpb25hcmllcyBvciBvdGhlclxuICAgICAgbXV0YWJsZSB0eXBlcyB0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSBvYmplY3RcbiAgICAgIGlkZW50aXR5LCB0aGUgcmVhc29uIGJlaW5nIHRoYXQgdGhlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICAgZGljdGlvbmFyaWVzIHJlcXVpcmVzIGEga2V5XCdzIGhhc2ggdmFsdWUgdG8gcmVtYWluIGNvbnN0YW50LlxuICAgICAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpY1xuICAgICAgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZCAiMS4wIilcbiAgICAgIHRoZW4gdGhleSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXggdGhlIHNhbWVcbiAgICAgIGRpY3Rpb25hcnkgZW50cnkuXG5cbiAgICAgIERpY3Rpb25hcmllcyBhcmUgbXV0YWJsZTsgdGhleSBjYW4gYmUgY3JlYXRlZCBieSB0aGUgInsuLi59IlxuICAgICAgbm90YXRpb24gKHNlZSBzZWN0aW9uICpEaWN0aW9uYXJ5IGRpc3BsYXlzKikuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlcyAiZGJtLm5kYm0iIGFuZCAiZGJtLmdudSIgcHJvdmlkZVxuICAgICAgYWRkaXRpb25hbCBleGFtcGxlcyBvZiBtYXBwaW5nIHR5cGVzLCBhcyBkb2VzIHRoZSAiY29sbGVjdGlvbnMiXG4gICAgICBtb2R1bGUuXG5cbkNhbGxhYmxlIHR5cGVzXG4gICBUaGVzZSBhcmUgdGhlIHR5cGVzIHRvIHdoaWNoIHRoZSBmdW5jdGlvbiBjYWxsIG9wZXJhdGlvbiAoc2VlXG4gICBzZWN0aW9uICpDYWxscyopIGNhbiBiZSBhcHBsaWVkOlxuXG4gICBVc2VyLWRlZmluZWQgZnVuY3Rpb25zXG4gICAgICBBIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgaXMgY3JlYXRlZCBieSBhIGZ1bmN0aW9uXG4gICAgICBkZWZpbml0aW9uIChzZWUgc2VjdGlvbiAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqKS4gIEl0IHNob3VsZCBiZVxuICAgICAgY2FsbGVkIHdpdGggYW4gYXJndW1lbnQgbGlzdCBjb250YWluaW5nIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtc1xuICAgICAgYXMgdGhlIGZ1bmN0aW9uXCdzIGZvcm1hbCBwYXJhbWV0ZXIgbGlzdC5cblxuICAgICAgU3BlY2lhbCBhdHRyaWJ1dGVzOlxuXG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBBdHRyaWJ1dGUgICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT0rXG4gICAgICB8ICJfX2RvY19fIiAgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvbiAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZywgb3IgIk5vbmUiIGlmICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1bmF2YWlsYWJsZTsgbm90IGluaGVyaXRlZCBieSAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3ViY2xhc3NlcyAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX25hbWVfXyIgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgbmFtZSAgICAgICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX3F1YWxuYW1lX18iICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgKnF1YWxpZmllZCBuYW1lKiB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldyBpbiB2ZXJzaW9uIDMuMy4gICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19tb2R1bGVfXyIgICAgICAgICAgICAgIHwgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluLCBvciAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiTm9uZSIgaWYgdW5hdmFpbGFibGUuICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZGVmYXVsdHNfXyIgICAgICAgICAgICB8IEEgdHVwbGUgY29udGFpbmluZyBkZWZhdWx0ICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudCB2YWx1ZXMgZm9yIHRob3NlICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnRzIHRoYXQgaGF2ZSBkZWZhdWx0cywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yICJOb25lIiBpZiBubyBhcmd1bWVudHMgaGF2ZSAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhIGRlZmF1bHQgdmFsdWUgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fY29kZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBjb2RlIG9iamVjdCByZXByZXNlbnRpbmcgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29tcGlsZWQgZnVuY3Rpb24gYm9keS4gICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZ2xvYmFsc19fIiAgICAgICAgICAgICB8IEEgcmVmZXJlbmNlIHRvIHRoZSBkaWN0aW9uYXJ5ICAgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGhvbGRzIHRoZSBmdW5jdGlvblwncyAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdsb2JhbCB2YXJpYWJsZXMgLS0tIHRoZSBnbG9iYWwgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZSBpbiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hpY2ggdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkLiB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2RpY3RfXyIgICAgICAgICAgICAgICAgfCBUaGUgbmFtZXNwYWNlIHN1cHBvcnRpbmcgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJiaXRyYXJ5IGZ1bmN0aW9uIGF0dHJpYnV0ZXMuICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2Nsb3N1cmVfXyIgICAgICAgICAgICAgfCAiTm9uZSIgb3IgYSB0dXBsZSBvZiBjZWxscyB0aGF0IHwgUmVhZC1vbmx5ICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY29udGFpbiBiaW5kaW5ncyBmb3IgdGhlICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uXCdzIGZyZWUgdmFyaWFibGVzLiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fYW5ub3RhdGlvbnNfXyIgICAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGFubm90YXRpb25zICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZiBwYXJhbWV0ZXJzLiAgVGhlIGtleXMgb2YgdGhlIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGljdCBhcmUgdGhlIHBhcmFtZXRlciBuYW1lcywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFuZCAiXCdyZXR1cm5cJyIgZm9yIHRoZSByZXR1cm4gICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFubm90YXRpb24sIGlmIHByb3ZpZGVkLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19rd2RlZmF1bHRzX18iICAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgZGVmYXVsdHMgZm9yICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmQtb25seSBwYXJhbWV0ZXJzLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuXG4gICAgICBNb3N0IG9mIHRoZSBhdHRyaWJ1dGVzIGxhYmVsbGVkICJXcml0YWJsZSIgY2hlY2sgdGhlIHR5cGUgb2YgdGhlXG4gICAgICBhc3NpZ25lZCB2YWx1ZS5cblxuICAgICAgRnVuY3Rpb24gb2JqZWN0cyBhbHNvIHN1cHBvcnQgZ2V0dGluZyBhbmQgc2V0dGluZyBhcmJpdHJhcnlcbiAgICAgIGF0dHJpYnV0ZXMsIHdoaWNoIGNhbiBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgdG8gYXR0YWNoIG1ldGFkYXRhXG4gICAgICB0byBmdW5jdGlvbnMuICBSZWd1bGFyIGF0dHJpYnV0ZSBkb3Qtbm90YXRpb24gaXMgdXNlZCB0byBnZXQgYW5kXG4gICAgICBzZXQgc3VjaCBhdHRyaWJ1dGVzLiAqTm90ZSB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHlcbiAgICAgIHN1cHBvcnRzIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gRnVuY3Rpb25cbiAgICAgIGF0dHJpYnV0ZXMgb24gYnVpbHQtaW4gZnVuY3Rpb25zIG1heSBiZSBzdXBwb3J0ZWQgaW4gdGhlXG4gICAgICBmdXR1cmUuKlxuXG4gICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGEgZnVuY3Rpb25cJ3MgZGVmaW5pdGlvbiBjYW4gYmVcbiAgICAgIHJldHJpZXZlZCBmcm9tIGl0cyBjb2RlIG9iamVjdDsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBpbnRlcm5hbFxuICAgICAgdHlwZXMgYmVsb3cuXG5cbiAgIEluc3RhbmNlIG1ldGhvZHNcbiAgICAgIEFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgY29tYmluZXMgYSBjbGFzcywgYSBjbGFzcyBpbnN0YW5jZSBhbmRcbiAgICAgIGFueSBjYWxsYWJsZSBvYmplY3QgKG5vcm1hbGx5IGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uKS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogIl9fc2VsZl9fIiBpcyB0aGUgY2xhc3MgaW5zdGFuY2VcbiAgICAgIG9iamVjdCwgIl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gb2JqZWN0OyAiX19kb2NfXyIgaXMgdGhlXG4gICAgICBtZXRob2RcJ3MgZG9jdW1lbnRhdGlvbiAoc2FtZSBhcyAiX19mdW5jX18uX19kb2NfXyIpOyAiX19uYW1lX18iXG4gICAgICBpcyB0aGUgbWV0aG9kIG5hbWUgKHNhbWUgYXMgIl9fZnVuY19fLl9fbmFtZV9fIik7ICJfX21vZHVsZV9fIlxuICAgICAgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbWV0aG9kIHdhcyBkZWZpbmVkIGluLCBvciAiTm9uZSJcbiAgICAgIGlmIHVuYXZhaWxhYmxlLlxuXG4gICAgICBNZXRob2RzIGFsc28gc3VwcG9ydCBhY2Nlc3NpbmcgKGJ1dCBub3Qgc2V0dGluZykgdGhlIGFyYml0cmFyeVxuICAgICAgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0cyBtYXkgYmUgY3JlYXRlZCB3aGVuIGdldHRpbmcgYW5cbiAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIChwZXJoYXBzIHZpYSBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzKSwgaWZcbiAgICAgIHRoYXQgYXR0cmlidXRlIGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBvciBhIGNsYXNzXG4gICAgICBtZXRob2Qgb2JqZWN0LlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgdXNlci1cbiAgICAgIGRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGZyb20gYSBjbGFzcyB2aWEgb25lIG9mIGl0cyBpbnN0YW5jZXMsXG4gICAgICBpdHMgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLCBhbmQgdGhlIG1ldGhvZCBvYmplY3RcbiAgICAgIGlzIHNhaWQgdG8gYmUgYm91bmQuICBUaGUgbmV3IG1ldGhvZFwncyAiX19mdW5jX18iIGF0dHJpYnV0ZSBpc1xuICAgICAgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIG9iamVjdC5cblxuICAgICAgV2hlbiBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZ1xuICAgICAgYW5vdGhlciBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgdGhlIGJlaGF2aW91ciBpc1xuICAgICAgdGhlIHNhbWUgYXMgZm9yIGEgZnVuY3Rpb24gb2JqZWN0LCBleGNlcHQgdGhhdCB0aGUgIl9fZnVuY19fIlxuICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2Qgb2JqZWN0XG4gICAgICBidXQgaXRzICJfX2Z1bmNfXyIgYXR0cmlidXRlLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgY2xhc3NcbiAgICAgIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCBpdHMgIl9fc2VsZl9fIiBhdHRyaWJ1dGVcbiAgICAgIGlzIHRoZSBjbGFzcyBpdHNlbGYsIGFuZCBpdHMgIl9fZnVuY19fIiBhdHRyaWJ1dGUgaXMgdGhlXG4gICAgICBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY2FsbGVkLCB0aGUgdW5kZXJseWluZ1xuICAgICAgZnVuY3Rpb24gKCJfX2Z1bmNfXyIpIGlzIGNhbGxlZCwgaW5zZXJ0aW5nIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgKCJfX3NlbGZfXyIpIGluIGZyb250IG9mIHRoZSBhcmd1bWVudCBsaXN0LiAgRm9yIGluc3RhbmNlLCB3aGVuXG4gICAgICAiQyIgaXMgYSBjbGFzcyB3aGljaCBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gImYoKSIsXG4gICAgICBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICJDIiwgY2FsbGluZyAieC5mKDEpIiBpcyBlcXVpdmFsZW50IHRvXG4gICAgICBjYWxsaW5nICJDLmYoeCwgMSkiLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgZGVyaXZlZCBmcm9tIGEgY2xhc3MgbWV0aG9kXG4gICAgICBvYmplY3QsIHRoZSAiY2xhc3MgaW5zdGFuY2UiIHN0b3JlZCBpbiAiX19zZWxmX18iIHdpbGwgYWN0dWFsbHlcbiAgICAgIGJlIHRoZSBjbGFzcyBpdHNlbGYsIHNvIHRoYXQgY2FsbGluZyBlaXRoZXIgInguZigxKSIgb3IgIkMuZigxKSJcbiAgICAgIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyAiZihDLDEpIiB3aGVyZSAiZiIgaXMgdGhlIHVuZGVybHlpbmdcbiAgICAgIGZ1bmN0aW9uLlxuXG4gICAgICBOb3RlIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZnVuY3Rpb24gb2JqZWN0IHRvIGluc3RhbmNlXG4gICAgICBtZXRob2Qgb2JqZWN0IGhhcHBlbnMgZWFjaCB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgcmV0cmlldmVkIGZyb21cbiAgICAgIHRoZSBpbnN0YW5jZS4gIEluIHNvbWUgY2FzZXMsIGEgZnJ1aXRmdWwgb3B0aW1pemF0aW9uIGlzIHRvXG4gICAgICBhc3NpZ24gdGhlIGF0dHJpYnV0ZSB0byBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjYWxsIHRoYXQgbG9jYWxcbiAgICAgIHZhcmlhYmxlLiBBbHNvIG5vdGljZSB0aGF0IHRoaXMgdHJhbnNmb3JtYXRpb24gb25seSBoYXBwZW5zIGZvclxuICAgICAgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczsgb3RoZXIgY2FsbGFibGUgb2JqZWN0cyAoYW5kIGFsbCBub24tXG4gICAgICBjYWxsYWJsZSBvYmplY3RzKSBhcmUgcmV0cmlldmVkIHdpdGhvdXQgdHJhbnNmb3JtYXRpb24uICBJdCBpc1xuICAgICAgYWxzbyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgd2hpY2ggYXJlXG4gICAgICBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgaW5zdGFuY2UgYXJlIG5vdCBjb252ZXJ0ZWQgdG8gYm91bmRcbiAgICAgIG1ldGhvZHM7IHRoaXMgKm9ubHkqIGhhcHBlbnMgd2hlbiB0aGUgZnVuY3Rpb24gaXMgYW4gYXR0cmlidXRlXG4gICAgICBvZiB0aGUgY2xhc3MuXG5cbiAgIEdlbmVyYXRvciBmdW5jdGlvbnNcbiAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIHVzZXMgdGhlICJ5aWVsZCIgc3RhdGVtZW50IChzZWVcbiAgICAgIHNlY3Rpb24gKlRoZSB5aWVsZCBzdGF0ZW1lbnQqKSBpcyBjYWxsZWQgYSAqZ2VuZXJhdG9yIGZ1bmN0aW9uKi5cbiAgICAgIFN1Y2ggYSBmdW5jdGlvbiwgd2hlbiBjYWxsZWQsIGFsd2F5cyByZXR1cm5zIGFuIGl0ZXJhdG9yIG9iamVjdFxuICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb246ICBjYWxsaW5nXG4gICAgICB0aGUgaXRlcmF0b3JcJ3MgIml0ZXJhdG9yLl9fbmV4dF9fKCkiIG1ldGhvZCB3aWxsIGNhdXNlIHRoZVxuICAgICAgZnVuY3Rpb24gdG8gZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSAieWllbGQiXG4gICAgICBzdGF0ZW1lbnQuICBXaGVuIHRoZSBmdW5jdGlvbiBleGVjdXRlcyBhICJyZXR1cm4iIHN0YXRlbWVudCBvclxuICAgICAgZmFsbHMgb2ZmIHRoZSBlbmQsIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZVxuICAgICAgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mIHZhbHVlcyB0byBiZVxuICAgICAgcmV0dXJuZWQuXG5cbiAgIENvcm91dGluZSBmdW5jdGlvbnNcbiAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIGlzIGRlZmluZWQgdXNpbmcgImFzeW5jIGRlZiIgaXNcbiAgICAgIGNhbGxlZCBhICpjb3JvdXRpbmUgZnVuY3Rpb24qLiAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCxcbiAgICAgIHJldHVybnMgYSAqY29yb3V0aW5lKiBvYmplY3QuICBJdCBtYXkgY29udGFpbiAiYXdhaXQiXG4gICAgICBleHByZXNzaW9ucywgYXMgd2VsbCBhcyAiYXN5bmMgd2l0aCIgYW5kICJhc3luYyBmb3IiIHN0YXRlbWVudHMuXG4gICAgICBTZWUgYWxzbyB0aGUgKkNvcm91dGluZSBPYmplY3RzKiBzZWN0aW9uLlxuXG4gICBCdWlsdC1pbiBmdW5jdGlvbnNcbiAgICAgIEEgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYSBDIGZ1bmN0aW9uLlxuICAgICAgRXhhbXBsZXMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFyZSAibGVuKCkiIGFuZCAibWF0aC5zaW4oKSJcbiAgICAgICgibWF0aCIgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBtb2R1bGUpLiBUaGUgbnVtYmVyIGFuZCB0eXBlIG9mXG4gICAgICB0aGUgYXJndW1lbnRzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBDIGZ1bmN0aW9uLiBTcGVjaWFsIHJlYWQtXG4gICAgICBvbmx5IGF0dHJpYnV0ZXM6ICJfX2RvY19fIiBpcyB0aGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvblxuICAgICAgc3RyaW5nLCBvciAiTm9uZSIgaWYgdW5hdmFpbGFibGU7ICJfX25hbWVfXyIgaXMgdGhlIGZ1bmN0aW9uXCdzXG4gICAgICBuYW1lOyAiX19zZWxmX18iIGlzIHNldCB0byAiTm9uZSIgKGJ1dCBzZWUgdGhlIG5leHQgaXRlbSk7XG4gICAgICAiX19tb2R1bGVfXyIgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWRcbiAgICAgIGluIG9yICJOb25lIiBpZiB1bmF2YWlsYWJsZS5cblxuICAgQnVpbHQtaW4gbWV0aG9kc1xuICAgICAgVGhpcyBpcyByZWFsbHkgYSBkaWZmZXJlbnQgZGlzZ3Vpc2Ugb2YgYSBidWlsdC1pbiBmdW5jdGlvbiwgdGhpc1xuICAgICAgdGltZSBjb250YWluaW5nIGFuIG9iamVjdCBwYXNzZWQgdG8gdGhlIEMgZnVuY3Rpb24gYXMgYW5cbiAgICAgIGltcGxpY2l0IGV4dHJhIGFyZ3VtZW50LiAgQW4gZXhhbXBsZSBvZiBhIGJ1aWx0LWluIG1ldGhvZCBpc1xuICAgICAgImFsaXN0LmFwcGVuZCgpIiwgYXNzdW1pbmcgKmFsaXN0KiBpcyBhIGxpc3Qgb2JqZWN0LiBJbiB0aGlzXG4gICAgICBjYXNlLCB0aGUgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlICJfX3NlbGZfXyIgaXMgc2V0IHRvIHRoZVxuICAgICAgb2JqZWN0IGRlbm90ZWQgYnkgKmFsaXN0Ki5cblxuICAgQ2xhc3Nlc1xuICAgICAgQ2xhc3NlcyBhcmUgY2FsbGFibGUuICBUaGVzZSBvYmplY3RzIG5vcm1hbGx5IGFjdCBhcyBmYWN0b3JpZXNcbiAgICAgIGZvciBuZXcgaW5zdGFuY2VzIG9mIHRoZW1zZWx2ZXMsIGJ1dCB2YXJpYXRpb25zIGFyZSBwb3NzaWJsZSBmb3JcbiAgICAgIGNsYXNzIHR5cGVzIHRoYXQgb3ZlcnJpZGUgIl9fbmV3X18oKSIuICBUaGUgYXJndW1lbnRzIG9mIHRoZVxuICAgICAgY2FsbCBhcmUgcGFzc2VkIHRvICJfX25ld19fKCkiIGFuZCwgaW4gdGhlIHR5cGljYWwgY2FzZSwgdG9cbiAgICAgICJfX2luaXRfXygpIiB0byBpbml0aWFsaXplIHRoZSBuZXcgaW5zdGFuY2UuXG5cbiAgIENsYXNzIEluc3RhbmNlc1xuICAgICAgSW5zdGFuY2VzIG9mIGFyYml0cmFyeSBjbGFzc2VzIGNhbiBiZSBtYWRlIGNhbGxhYmxlIGJ5IGRlZmluaW5nXG4gICAgICBhICJfX2NhbGxfXygpIiBtZXRob2QgaW4gdGhlaXIgY2xhc3MuXG5cbk1vZHVsZXNcbiAgIE1vZHVsZXMgYXJlIGEgYmFzaWMgb3JnYW5pemF0aW9uYWwgdW5pdCBvZiBQeXRob24gY29kZSwgYW5kIGFyZVxuICAgY3JlYXRlZCBieSB0aGUgKmltcG9ydCBzeXN0ZW0qIGFzIGludm9rZWQgZWl0aGVyIGJ5IHRoZSAiaW1wb3J0IlxuICAgc3RhdGVtZW50IChzZWUgImltcG9ydCIpLCBvciBieSBjYWxsaW5nIGZ1bmN0aW9ucyBzdWNoIGFzXG4gICAiaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSIgYW5kIGJ1aWx0LWluICJfX2ltcG9ydF9fKCkiLiAgQSBtb2R1bGVcbiAgIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdCAodGhpcyBpc1xuICAgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZCBieSB0aGUgIl9fZ2xvYmFsc19fIiBhdHRyaWJ1dGUgb2ZcbiAgIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUpLiAgQXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlXG4gICB0cmFuc2xhdGVkIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCAibS54IiBpcyBlcXVpdmFsZW50XG4gICB0byAibS5fX2RpY3RfX1sieCJdIi4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGVcbiAgIG9iamVjdCB1c2VkIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZSAoc2luY2UgaXQgaXNuXCd0IG5lZWRlZCBvbmNlXG4gICB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSkuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2UgZGljdGlvbmFyeSxcbiAgIGUuZy4sICJtLnggPSAxIiBpcyBlcXVpdmFsZW50IHRvICJtLl9fZGljdF9fWyJ4Il0gPSAxIi5cblxuICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiAiX19kaWN0X18iIGlzIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlXG4gICBhcyBhIGRpY3Rpb25hcnkgb2JqZWN0LlxuXG4gICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEJlY2F1c2Ugb2YgdGhlIHdheSBDUHl0aG9uXG4gICBjbGVhcnMgbW9kdWxlIGRpY3Rpb25hcmllcywgdGhlIG1vZHVsZSBkaWN0aW9uYXJ5IHdpbGwgYmUgY2xlYXJlZFxuICAgd2hlbiB0aGUgbW9kdWxlIGZhbGxzIG91dCBvZiBzY29wZSBldmVuIGlmIHRoZSBkaWN0aW9uYXJ5IHN0aWxsIGhhc1xuICAgbGl2ZSByZWZlcmVuY2VzLiAgVG8gYXZvaWQgdGhpcywgY29weSB0aGUgZGljdGlvbmFyeSBvciBrZWVwIHRoZVxuICAgbW9kdWxlIGFyb3VuZCB3aGlsZSB1c2luZyBpdHMgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIG1vZHVsZVwncyBuYW1lO1xuICAgIl9fZG9jX18iIGlzIHRoZSBtb2R1bGVcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yICJOb25lIiBpZlxuICAgdW5hdmFpbGFibGU7ICJfX2ZpbGVfXyIgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggdGhlXG4gICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlICJfX2ZpbGVfXyJcbiAgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLCBzdWNoIGFzIENcbiAgIG1vZHVsZXMgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvclxuICAgZXh0ZW5zaW9uIG1vZHVsZXMgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXQgaXNcbiAgIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgZmlsZS5cblxuQ3VzdG9tIGNsYXNzZXNcbiAgIEN1c3RvbSBjbGFzcyB0eXBlcyBhcmUgdHlwaWNhbGx5IGNyZWF0ZWQgYnkgY2xhc3MgZGVmaW5pdGlvbnMgKHNlZVxuICAgc2VjdGlvbiAqQ2xhc3MgZGVmaW5pdGlvbnMqKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkXG4gICBieSBhIGRpY3Rpb25hcnkgb2JqZWN0LiBDbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgdHJhbnNsYXRlZFxuICAgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJDLngiIGlzIHRyYW5zbGF0ZWQgdG9cbiAgICJDLl9fZGljdF9fWyJ4Il0iIChhbHRob3VnaCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgaG9va3Mgd2hpY2ggYWxsb3dcbiAgIGZvciBvdGhlciBtZWFucyBvZiBsb2NhdGluZyBhdHRyaWJ1dGVzKS4gV2hlbiB0aGUgYXR0cmlidXRlIG5hbWUgaXNcbiAgIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGF0dHJpYnV0ZSBzZWFyY2ggY29udGludWVzIGluIHRoZSBiYXNlXG4gICBjbGFzc2VzLiBUaGlzIHNlYXJjaCBvZiB0aGUgYmFzZSBjbGFzc2VzIHVzZXMgdGhlIEMzIG1ldGhvZFxuICAgcmVzb2x1dGlvbiBvcmRlciB3aGljaCBiZWhhdmVzIGNvcnJlY3RseSBldmVuIGluIHRoZSBwcmVzZW5jZSBvZlxuICAgXCdkaWFtb25kXCcgaW5oZXJpdGFuY2Ugc3RydWN0dXJlcyB3aGVyZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiAgIGluaGVyaXRhbmNlIHBhdGhzIGxlYWRpbmcgYmFjayB0byBhIGNvbW1vbiBhbmNlc3Rvci4gQWRkaXRpb25hbFxuICAgZGV0YWlscyBvbiB0aGUgQzMgTVJPIHVzZWQgYnkgUHl0aG9uIGNhbiBiZSBmb3VuZCBpbiB0aGVcbiAgIGRvY3VtZW50YXRpb24gYWNjb21wYW55aW5nIHRoZSAyLjMgcmVsZWFzZSBhdFxuICAgaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9yZWxlYXNlcy8yLjMvbXJvLy5cblxuICAgV2hlbiBhIGNsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2UgKGZvciBjbGFzcyAiQyIsIHNheSkgd291bGQgeWllbGQgYVxuICAgY2xhc3MgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2RcbiAgIG9iamVjdCB3aG9zZSAiX19zZWxmX18iIGF0dHJpYnV0ZXMgaXMgIkMiLiAgV2hlbiBpdCB3b3VsZCB5aWVsZCBhXG4gICBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgb2JqZWN0IHdyYXBwZWQgYnlcbiAgIHRoZSBzdGF0aWMgbWV0aG9kIG9iamVjdC4gU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycypcbiAgIGZvciBhbm90aGVyIHdheSBpbiB3aGljaCBhdHRyaWJ1dGVzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3MgbWF5XG4gICBkaWZmZXIgZnJvbSB0aG9zZSBhY3R1YWxseSBjb250YWluZWQgaW4gaXRzICJfX2RpY3RfXyIuXG5cbiAgIENsYXNzIGF0dHJpYnV0ZSBhc3NpZ25tZW50cyB1cGRhdGUgdGhlIGNsYXNzXCdzIGRpY3Rpb25hcnksIG5ldmVyXG4gICB0aGUgZGljdGlvbmFyeSBvZiBhIGJhc2UgY2xhc3MuXG5cbiAgIEEgY2xhc3Mgb2JqZWN0IGNhbiBiZSBjYWxsZWQgKHNlZSBhYm92ZSkgdG8geWllbGQgYSBjbGFzcyBpbnN0YW5jZVxuICAgKHNlZSBiZWxvdykuXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgY2xhc3MgbmFtZTsgIl9fbW9kdWxlX18iIGlzXG4gICB0aGUgbW9kdWxlIG5hbWUgaW4gd2hpY2ggdGhlIGNsYXNzIHdhcyBkZWZpbmVkOyAiX19kaWN0X18iIGlzIHRoZVxuICAgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzc1wncyBuYW1lc3BhY2U7ICJfX2Jhc2VzX18iIGlzIGEgdHVwbGVcbiAgIChwb3NzaWJseSBlbXB0eSBvciBhIHNpbmdsZXRvbikgY29udGFpbmluZyB0aGUgYmFzZSBjbGFzc2VzLCBpbiB0aGVcbiAgIG9yZGVyIG9mIHRoZWlyIG9jY3VycmVuY2UgaW4gdGhlIGJhc2UgY2xhc3MgbGlzdDsgIl9fZG9jX18iIGlzIHRoZVxuICAgY2xhc3NcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIE5vbmUgaWYgdW5kZWZpbmVkLlxuXG5DbGFzcyBpbnN0YW5jZXNcbiAgIEEgY2xhc3MgaW5zdGFuY2UgaXMgY3JlYXRlZCBieSBjYWxsaW5nIGEgY2xhc3Mgb2JqZWN0IChzZWUgYWJvdmUpLlxuICAgQSBjbGFzcyBpbnN0YW5jZSBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYXMgYSBkaWN0aW9uYXJ5IHdoaWNoXG4gICBpcyB0aGUgZmlyc3QgcGxhY2UgaW4gd2hpY2ggYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHNlYXJjaGVkLlxuICAgV2hlbiBhbiBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kIHRoZXJlLCBhbmQgdGhlIGluc3RhbmNlXCdzIGNsYXNzIGhhc1xuICAgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZSwgdGhlIHNlYXJjaCBjb250aW51ZXMgd2l0aCB0aGUgY2xhc3NcbiAgIGF0dHJpYnV0ZXMuICBJZiBhIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aGF0IGlzIGEgdXNlci1kZWZpbmVkXG4gICBmdW5jdGlvbiBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdFxuICAgd2hvc2UgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLiAgU3RhdGljIG1ldGhvZCBhbmRcbiAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBhbHNvIHRyYW5zZm9ybWVkOyBzZWUgYWJvdmUgdW5kZXJcbiAgICJDbGFzc2VzIi4gIFNlZSBzZWN0aW9uICpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqIGZvciBhbm90aGVyIHdheVxuICAgaW4gd2hpY2ggYXR0cmlidXRlcyBvZiBhIGNsYXNzIHJldHJpZXZlZCB2aWEgaXRzIGluc3RhbmNlcyBtYXlcbiAgIGRpZmZlciBmcm9tIHRoZSBvYmplY3RzIGFjdHVhbGx5IHN0b3JlZCBpbiB0aGUgY2xhc3NcJ3MgIl9fZGljdF9fIi5cbiAgIElmIG5vIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCwgYW5kIHRoZSBvYmplY3RcJ3MgY2xhc3MgaGFzIGFcbiAgICJfX2dldGF0dHJfXygpIiBtZXRob2QsIHRoYXQgaXMgY2FsbGVkIHRvIHNhdGlzZnkgdGhlIGxvb2t1cC5cblxuICAgQXR0cmlidXRlIGFzc2lnbm1lbnRzIGFuZCBkZWxldGlvbnMgdXBkYXRlIHRoZSBpbnN0YW5jZVwnc1xuICAgZGljdGlvbmFyeSwgbmV2ZXIgYSBjbGFzc1wncyBkaWN0aW9uYXJ5LiAgSWYgdGhlIGNsYXNzIGhhcyBhXG4gICAiX19zZXRhdHRyX18oKSIgb3IgIl9fZGVsYXR0cl9fKCkiIG1ldGhvZCwgdGhpcyBpcyBjYWxsZWQgaW5zdGVhZFxuICAgb2YgdXBkYXRpbmcgdGhlIGluc3RhbmNlIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG5cbiAgIENsYXNzIGluc3RhbmNlcyBjYW4gcHJldGVuZCB0byBiZSBudW1iZXJzLCBzZXF1ZW5jZXMsIG9yIG1hcHBpbmdzXG4gICBpZiB0aGV5IGhhdmUgbWV0aG9kcyB3aXRoIGNlcnRhaW4gc3BlY2lhbCBuYW1lcy4gIFNlZSBzZWN0aW9uXG4gICAqU3BlY2lhbCBtZXRob2QgbmFtZXMqLlxuXG4gICBTcGVjaWFsIGF0dHJpYnV0ZXM6ICJfX2RpY3RfXyIgaXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5O1xuICAgIl9fY2xhc3NfXyIgaXMgdGhlIGluc3RhbmNlXCdzIGNsYXNzLlxuXG5JL08gb2JqZWN0cyAoYWxzbyBrbm93biBhcyBmaWxlIG9iamVjdHMpXG4gICBBICpmaWxlIG9iamVjdCogcmVwcmVzZW50cyBhbiBvcGVuIGZpbGUuICBWYXJpb3VzIHNob3J0Y3V0cyBhcmVcbiAgIGF2YWlsYWJsZSB0byBjcmVhdGUgZmlsZSBvYmplY3RzOiB0aGUgIm9wZW4oKSIgYnVpbHQtaW4gZnVuY3Rpb24sXG4gICBhbmQgYWxzbyAib3MucG9wZW4oKSIsICJvcy5mZG9wZW4oKSIsIGFuZCB0aGUgIm1ha2VmaWxlKCkiIG1ldGhvZFxuICAgb2Ygc29ja2V0IG9iamVjdHMgKGFuZCBwZXJoYXBzIGJ5IG90aGVyIGZ1bmN0aW9ucyBvciBtZXRob2RzXG4gICBwcm92aWRlZCBieSBleHRlbnNpb24gbW9kdWxlcykuXG5cbiAgIFRoZSBvYmplY3RzICJzeXMuc3RkaW4iLCAic3lzLnN0ZG91dCIgYW5kICJzeXMuc3RkZXJyIiBhcmVcbiAgIGluaXRpYWxpemVkIHRvIGZpbGUgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcnByZXRlclwnc1xuICAgc3RhbmRhcmQgaW5wdXQsIG91dHB1dCBhbmQgZXJyb3Igc3RyZWFtczsgdGhleSBhcmUgYWxsIG9wZW4gaW4gdGV4dFxuICAgbW9kZSBhbmQgdGhlcmVmb3JlIGZvbGxvdyB0aGUgaW50ZXJmYWNlIGRlZmluZWQgYnkgdGhlXG4gICAiaW8uVGV4dElPQmFzZSIgYWJzdHJhY3QgY2xhc3MuXG5cbkludGVybmFsIHR5cGVzXG4gICBBIGZldyB0eXBlcyB1c2VkIGludGVybmFsbHkgYnkgdGhlIGludGVycHJldGVyIGFyZSBleHBvc2VkIHRvIHRoZVxuICAgdXNlci4gVGhlaXIgZGVmaW5pdGlvbnMgbWF5IGNoYW5nZSB3aXRoIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGVcbiAgIGludGVycHJldGVyLCBidXQgdGhleSBhcmUgbWVudGlvbmVkIGhlcmUgZm9yIGNvbXBsZXRlbmVzcy5cblxuICAgQ29kZSBvYmplY3RzXG4gICAgICBDb2RlIG9iamVjdHMgcmVwcmVzZW50ICpieXRlLWNvbXBpbGVkKiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlLFxuICAgICAgb3IgKmJ5dGVjb2RlKi4gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGNvZGUgb2JqZWN0IGFuZCBhXG4gICAgICBmdW5jdGlvbiBvYmplY3QgaXMgdGhhdCB0aGUgZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGFuIGV4cGxpY2l0XG4gICAgICByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uXCdzIGdsb2JhbHMgKHRoZSBtb2R1bGUgaW4gd2hpY2ggaXQgd2FzXG4gICAgICBkZWZpbmVkKSwgd2hpbGUgYSBjb2RlIG9iamVjdCBjb250YWlucyBubyBjb250ZXh0OyBhbHNvIHRoZVxuICAgICAgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgZnVuY3Rpb24gb2JqZWN0LCBub3RcbiAgICAgIGluIHRoZSBjb2RlIG9iamVjdCAoYmVjYXVzZSB0aGV5IHJlcHJlc2VudCB2YWx1ZXMgY2FsY3VsYXRlZCBhdFxuICAgICAgcnVuLXRpbWUpLiAgVW5saWtlIGZ1bmN0aW9uIG9iamVjdHMsIGNvZGUgb2JqZWN0cyBhcmUgaW1tdXRhYmxlXG4gICAgICBhbmQgY29udGFpbiBubyByZWZlcmVuY2VzIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSB0byBtdXRhYmxlXG4gICAgICBvYmplY3RzLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiY29fbmFtZSIgZ2l2ZXMgdGhlIGZ1bmN0aW9uIG5hbWU7XG4gICAgICAiY29fYXJnY291bnQiIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgKGluY2x1ZGluZ1xuICAgICAgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMpOyAiY29fbmxvY2FscyIgaXMgdGhlIG51bWJlciBvZlxuICAgICAgbG9jYWwgdmFyaWFibGVzIHVzZWQgYnkgdGhlIGZ1bmN0aW9uIChpbmNsdWRpbmcgYXJndW1lbnRzKTtcbiAgICAgICJjb192YXJuYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgbG9jYWxcbiAgICAgIHZhcmlhYmxlcyAoc3RhcnRpbmcgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMpOyAiY29fY2VsbHZhcnMiIGlzIGFcbiAgICAgIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGxvY2FsIHZhcmlhYmxlcyB0aGF0IGFyZVxuICAgICAgcmVmZXJlbmNlZCBieSBuZXN0ZWQgZnVuY3Rpb25zOyAiY29fZnJlZXZhcnMiIGlzIGEgdHVwbGVcbiAgICAgIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGZyZWUgdmFyaWFibGVzOyAiY29fY29kZSIgaXMgYSBzdHJpbmdcbiAgICAgIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2YgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zOyAiY29fY29uc3RzIlxuICAgICAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBsaXRlcmFscyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbiAgICAgICJjb19uYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbiAgICAgICJjb19maWxlbmFtZSIgaXMgdGhlIGZpbGVuYW1lIGZyb20gd2hpY2ggdGhlIGNvZGUgd2FzIGNvbXBpbGVkO1xuICAgICAgImNvX2ZpcnN0bGluZW5vIiBpcyB0aGUgZmlyc3QgbGluZSBudW1iZXIgb2YgdGhlIGZ1bmN0aW9uO1xuICAgICAgImNvX2xub3RhYiIgaXMgYSBzdHJpbmcgZW5jb2RpbmcgdGhlIG1hcHBpbmcgZnJvbSBieXRlY29kZVxuICAgICAgb2Zmc2V0cyB0byBsaW5lIG51bWJlcnMgKGZvciBkZXRhaWxzIHNlZSB0aGUgc291cmNlIGNvZGUgb2YgdGhlXG4gICAgICBpbnRlcnByZXRlcik7ICJjb19zdGFja3NpemUiIGlzIHRoZSByZXF1aXJlZCBzdGFjayBzaXplXG4gICAgICAoaW5jbHVkaW5nIGxvY2FsIHZhcmlhYmxlcyk7ICJjb19mbGFncyIgaXMgYW4gaW50ZWdlciBlbmNvZGluZyBhXG4gICAgICBudW1iZXIgb2YgZmxhZ3MgZm9yIHRoZSBpbnRlcnByZXRlci5cblxuICAgICAgVGhlIGZvbGxvd2luZyBmbGFnIGJpdHMgYXJlIGRlZmluZWQgZm9yICJjb19mbGFncyI6IGJpdCAiMHgwNCJcbiAgICAgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIiphcmd1bWVudHMiIHN5bnRheCB0byBhY2NlcHQgYW5cbiAgICAgIGFyYml0cmFyeSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHM7IGJpdCAiMHgwOCIgaXMgc2V0IGlmXG4gICAgICB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIioqa2V5d29yZHMiIHN5bnRheCB0byBhY2NlcHQgYXJiaXRyYXJ5XG4gICAgICBrZXl3b3JkIGFyZ3VtZW50czsgYml0ICIweDIwIiBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGFcbiAgICAgIGdlbmVyYXRvci5cblxuICAgICAgRnV0dXJlIGZlYXR1cmUgZGVjbGFyYXRpb25zICgiZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiIpXG4gICAgICBhbHNvIHVzZSBiaXRzIGluICJjb19mbGFncyIgdG8gaW5kaWNhdGUgd2hldGhlciBhIGNvZGUgb2JqZWN0XG4gICAgICB3YXMgY29tcGlsZWQgd2l0aCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBlbmFibGVkOiBiaXQgIjB4MjAwMCIgaXNcbiAgICAgIHNldCBpZiB0aGUgZnVuY3Rpb24gd2FzIGNvbXBpbGVkIHdpdGggZnV0dXJlIGRpdmlzaW9uIGVuYWJsZWQ7XG4gICAgICBiaXRzICIweDEwIiBhbmQgIjB4MTAwMCIgd2VyZSB1c2VkIGluIGVhcmxpZXIgdmVyc2lvbnMgb2ZcbiAgICAgIFB5dGhvbi5cblxuICAgICAgT3RoZXIgYml0cyBpbiAiY29fZmxhZ3MiIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLlxuXG4gICAgICBJZiBhIGNvZGUgb2JqZWN0IHJlcHJlc2VudHMgYSBmdW5jdGlvbiwgdGhlIGZpcnN0IGl0ZW0gaW5cbiAgICAgICJjb19jb25zdHMiIGlzIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBvZiB0aGUgZnVuY3Rpb24sIG9yXG4gICAgICAiTm9uZSIgaWYgdW5kZWZpbmVkLlxuXG4gICBGcmFtZSBvYmplY3RzXG4gICAgICBGcmFtZSBvYmplY3RzIHJlcHJlc2VudCBleGVjdXRpb24gZnJhbWVzLiAgVGhleSBtYXkgb2NjdXIgaW5cbiAgICAgIHRyYWNlYmFjayBvYmplY3RzIChzZWUgYmVsb3cpLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiZl9iYWNrIiBpcyB0byB0aGUgcHJldmlvdXMgc3RhY2tcbiAgICAgIGZyYW1lICh0b3dhcmRzIHRoZSBjYWxsZXIpLCBvciAiTm9uZSIgaWYgdGhpcyBpcyB0aGUgYm90dG9tXG4gICAgICBzdGFjayBmcmFtZTsgImZfY29kZSIgaXMgdGhlIGNvZGUgb2JqZWN0IGJlaW5nIGV4ZWN1dGVkIGluIHRoaXNcbiAgICAgIGZyYW1lOyAiZl9sb2NhbHMiIGlzIHRoZSBkaWN0aW9uYXJ5IHVzZWQgdG8gbG9vayB1cCBsb2NhbFxuICAgICAgdmFyaWFibGVzOyAiZl9nbG9iYWxzIiBpcyB1c2VkIGZvciBnbG9iYWwgdmFyaWFibGVzO1xuICAgICAgImZfYnVpbHRpbnMiIGlzIHVzZWQgZm9yIGJ1aWx0LWluIChpbnRyaW5zaWMpIG5hbWVzOyAiZl9sYXN0aSJcbiAgICAgIGdpdmVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uICh0aGlzIGlzIGFuIGluZGV4IGludG8gdGhlXG4gICAgICBieXRlY29kZSBzdHJpbmcgb2YgdGhlIGNvZGUgb2JqZWN0KS5cblxuICAgICAgU3BlY2lhbCB3cml0YWJsZSBhdHRyaWJ1dGVzOiAiZl90cmFjZSIsIGlmIG5vdCAiTm9uZSIsIGlzIGFcbiAgICAgIGZ1bmN0aW9uIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgY29kZSBsaW5lICh0aGlzIGlzXG4gICAgICB1c2VkIGJ5IHRoZSBkZWJ1Z2dlcik7ICJmX2xpbmVubyIgaXMgdGhlIGN1cnJlbnQgbGluZSBudW1iZXIgb2ZcbiAgICAgIHRoZSBmcmFtZSAtLS0gd3JpdGluZyB0byB0aGlzIGZyb20gd2l0aGluIGEgdHJhY2UgZnVuY3Rpb24ganVtcHNcbiAgICAgIHRvIHRoZSBnaXZlbiBsaW5lIChvbmx5IGZvciB0aGUgYm90dG9tLW1vc3QgZnJhbWUpLiAgQSBkZWJ1Z2dlclxuICAgICAgY2FuIGltcGxlbWVudCBhIEp1bXAgY29tbWFuZCAoYWthIFNldCBOZXh0IFN0YXRlbWVudCkgYnkgd3JpdGluZ1xuICAgICAgdG8gZl9saW5lbm8uXG5cbiAgICAgIEZyYW1lIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuXG4gICAgICBmcmFtZS5jbGVhcigpXG5cbiAgICAgICAgIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgcmVmZXJlbmNlcyB0byBsb2NhbCB2YXJpYWJsZXMgaGVsZCBieVxuICAgICAgICAgdGhlIGZyYW1lLiAgQWxzbywgaWYgdGhlIGZyYW1lIGJlbG9uZ2VkIHRvIGEgZ2VuZXJhdG9yLCB0aGVcbiAgICAgICAgIGdlbmVyYXRvciBpcyBmaW5hbGl6ZWQuICBUaGlzIGhlbHBzIGJyZWFrIHJlZmVyZW5jZSBjeWNsZXNcbiAgICAgICAgIGludm9sdmluZyBmcmFtZSBvYmplY3RzIChmb3IgZXhhbXBsZSB3aGVuIGNhdGNoaW5nIGFuXG4gICAgICAgICBleGNlcHRpb24gYW5kIHN0b3JpbmcgaXRzIHRyYWNlYmFjayBmb3IgbGF0ZXIgdXNlKS5cblxuICAgICAgICAgIlJ1bnRpbWVFcnJvciIgaXMgcmFpc2VkIGlmIHRoZSBmcmFtZSBpcyBjdXJyZW50bHkgZXhlY3V0aW5nLlxuXG4gICAgICAgICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbiAgIFRyYWNlYmFjayBvYmplY3RzXG4gICAgICBUcmFjZWJhY2sgb2JqZWN0cyByZXByZXNlbnQgYSBzdGFjayB0cmFjZSBvZiBhbiBleGNlcHRpb24uICBBXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0IGlzIGNyZWF0ZWQgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLiAgV2hlbiB0aGVcbiAgICAgIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdW53aW5kcyB0aGUgZXhlY3V0aW9uIHN0YWNrLCBhdFxuICAgICAgZWFjaCB1bndvdW5kIGxldmVsIGEgdHJhY2ViYWNrIG9iamVjdCBpcyBpbnNlcnRlZCBpbiBmcm9udCBvZlxuICAgICAgdGhlIGN1cnJlbnQgdHJhY2ViYWNrLiAgV2hlbiBhbiBleGNlcHRpb24gaGFuZGxlciBpcyBlbnRlcmVkLFxuICAgICAgdGhlIHN0YWNrIHRyYWNlIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtLiAoU2VlIHNlY3Rpb25cbiAgICAgICpUaGUgdHJ5IHN0YXRlbWVudCouKSBJdCBpcyBhY2Nlc3NpYmxlIGFzIHRoZSB0aGlyZCBpdGVtIG9mIHRoZVxuICAgICAgdHVwbGUgcmV0dXJuZWQgYnkgInN5cy5leGNfaW5mbygpIi4gV2hlbiB0aGUgcHJvZ3JhbSBjb250YWlucyBub1xuICAgICAgc3VpdGFibGUgaGFuZGxlciwgdGhlIHN0YWNrIHRyYWNlIGlzIHdyaXR0ZW4gKG5pY2VseSBmb3JtYXR0ZWQpXG4gICAgICB0byB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtOyBpZiB0aGUgaW50ZXJwcmV0ZXIgaXMgaW50ZXJhY3RpdmUsXG4gICAgICBpdCBpcyBhbHNvIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSB1c2VyIGFzICJzeXMubGFzdF90cmFjZWJhY2siLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAidGJfbmV4dCIgaXMgdGhlIG5leHQgbGV2ZWwgaW4gdGhlXG4gICAgICBzdGFjayB0cmFjZSAodG93YXJkcyB0aGUgZnJhbWUgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCksIG9yXG4gICAgICAiTm9uZSIgaWYgdGhlcmUgaXMgbm8gbmV4dCBsZXZlbDsgInRiX2ZyYW1lIiBwb2ludHMgdG8gdGhlXG4gICAgICBleGVjdXRpb24gZnJhbWUgb2YgdGhlIGN1cnJlbnQgbGV2ZWw7ICJ0Yl9saW5lbm8iIGdpdmVzIHRoZSBsaW5lXG4gICAgICBudW1iZXIgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZDsgInRiX2xhc3RpIiBpbmRpY2F0ZXMgdGhlXG4gICAgICBwcmVjaXNlIGluc3RydWN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIGFuZCBsYXN0IGluc3RydWN0aW9uIGluXG4gICAgICB0aGUgdHJhY2ViYWNrIG1heSBkaWZmZXIgZnJvbSB0aGUgbGluZSBudW1iZXIgb2YgaXRzIGZyYW1lXG4gICAgICBvYmplY3QgaWYgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCBpbiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIG5vXG4gICAgICBtYXRjaGluZyBleGNlcHQgY2xhdXNlIG9yIHdpdGggYSBmaW5hbGx5IGNsYXVzZS5cblxuICAgU2xpY2Ugb2JqZWN0c1xuICAgICAgU2xpY2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgc2xpY2VzIGZvciAiX19nZXRpdGVtX18oKSJcbiAgICAgIG1ldGhvZHMuICBUaGV5IGFyZSBhbHNvIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluICJzbGljZSgpIlxuICAgICAgZnVuY3Rpb24uXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJzdGFydCIgaXMgdGhlIGxvd2VyIGJvdW5kOyAic3RvcCJcbiAgICAgIGlzIHRoZSB1cHBlciBib3VuZDsgInN0ZXAiIGlzIHRoZSBzdGVwIHZhbHVlOyBlYWNoIGlzICJOb25lIiBpZlxuICAgICAgb21pdHRlZC4gIFRoZXNlIGF0dHJpYnV0ZXMgY2FuIGhhdmUgYW55IHR5cGUuXG5cbiAgICAgIFNsaWNlIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuXG4gICAgICBzbGljZS5pbmRpY2VzKHNlbGYsIGxlbmd0aClcblxuICAgICAgICAgVGhpcyBtZXRob2QgdGFrZXMgYSBzaW5nbGUgaW50ZWdlciBhcmd1bWVudCAqbGVuZ3RoKiBhbmRcbiAgICAgICAgIGNvbXB1dGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzbGljZSB0aGF0IHRoZSBzbGljZSBvYmplY3RcbiAgICAgICAgIHdvdWxkIGRlc2NyaWJlIGlmIGFwcGxpZWQgdG8gYSBzZXF1ZW5jZSBvZiAqbGVuZ3RoKiBpdGVtcy5cbiAgICAgICAgIEl0IHJldHVybnMgYSB0dXBsZSBvZiB0aHJlZSBpbnRlZ2VyczsgcmVzcGVjdGl2ZWx5IHRoZXNlIGFyZVxuICAgICAgICAgdGhlICpzdGFydCogYW5kICpzdG9wKiBpbmRpY2VzIGFuZCB0aGUgKnN0ZXAqIG9yIHN0cmlkZVxuICAgICAgICAgbGVuZ3RoIG9mIHRoZSBzbGljZS4gTWlzc2luZyBvciBvdXQtb2YtYm91bmRzIGluZGljZXMgYXJlXG4gICAgICAgICBoYW5kbGVkIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcy5cblxuICAgU3RhdGljIG1ldGhvZCBvYmplY3RzXG4gICAgICBTdGF0aWMgbWV0aG9kIG9iamVjdHMgcHJvdmlkZSBhIHdheSBvZiBkZWZlYXRpbmcgdGhlXG4gICAgICB0cmFuc2Zvcm1hdGlvbiBvZiBmdW5jdGlvbiBvYmplY3RzIHRvIG1ldGhvZCBvYmplY3RzIGRlc2NyaWJlZFxuICAgICAgYWJvdmUuIEEgc3RhdGljIG1ldGhvZCBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhbnkgb3RoZXJcbiAgICAgIG9iamVjdCwgdXN1YWxseSBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0LiBXaGVuIGEgc3RhdGljXG4gICAgICBtZXRob2Qgb2JqZWN0IGlzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3Mgb3IgYSBjbGFzcyBpbnN0YW5jZSwgdGhlXG4gICAgICBvYmplY3QgYWN0dWFsbHkgcmV0dXJuZWQgaXMgdGhlIHdyYXBwZWQgb2JqZWN0LCB3aGljaCBpcyBub3RcbiAgICAgIHN1YmplY3QgdG8gYW55IGZ1cnRoZXIgdHJhbnNmb3JtYXRpb24uIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmVcbiAgICAgIG5vdCB0aGVtc2VsdmVzIGNhbGxhYmxlLCBhbHRob3VnaCB0aGUgb2JqZWN0cyB0aGV5IHdyYXAgdXN1YWxseVxuICAgICAgYXJlLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAgICAic3RhdGljbWV0aG9kKCkiIGNvbnN0cnVjdG9yLlxuXG4gICBDbGFzcyBtZXRob2Qgb2JqZWN0c1xuICAgICAgQSBjbGFzcyBtZXRob2Qgb2JqZWN0LCBsaWtlIGEgc3RhdGljIG1ldGhvZCBvYmplY3QsIGlzIGEgd3JhcHBlclxuICAgICAgYXJvdW5kIGFub3RoZXIgb2JqZWN0IHRoYXQgYWx0ZXJzIHRoZSB3YXkgaW4gd2hpY2ggdGhhdCBvYmplY3RcbiAgICAgIGlzIHJldHJpZXZlZCBmcm9tIGNsYXNzZXMgYW5kIGNsYXNzIGluc3RhbmNlcy4gVGhlIGJlaGF2aW91ciBvZlxuICAgICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgdXBvbiBzdWNoIHJldHJpZXZhbCBpcyBkZXNjcmliZWQgYWJvdmUsXG4gICAgICB1bmRlciAiVXNlci1kZWZpbmVkIG1ldGhvZHMiLiBDbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZFxuICAgICAgYnkgdGhlIGJ1aWx0LWluICJjbGFzc21ldGhvZCgpIiBjb25zdHJ1Y3Rvci5cbicsCiAgJ3R5cGVzZnVuY3Rpb25zJzogdSdcbkZ1bmN0aW9uc1xuKioqKioqKioqXG5cbkZ1bmN0aW9uIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBUaGUgb25seVxub3BlcmF0aW9uIG9uIGEgZnVuY3Rpb24gb2JqZWN0IGlzIHRvIGNhbGwgaXQ6ICJmdW5jKGFyZ3VtZW50LWxpc3QpIi5cblxuVGhlcmUgYXJlIHJlYWxseSB0d28gZmxhdm9ycyBvZiBmdW5jdGlvbiBvYmplY3RzOiBidWlsdC1pbiBmdW5jdGlvbnNcbmFuZCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiAgQm90aCBzdXBwb3J0IHRoZSBzYW1lIG9wZXJhdGlvbiAodG8gY2FsbFxudGhlIGZ1bmN0aW9uKSwgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBkaWZmZXJlbnQsIGhlbmNlIHRoZVxuZGlmZmVyZW50IG9iamVjdCB0eXBlcy5cblxuU2VlICpGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAogICd0eXBlc21hcHBpbmcnOiB1J1xuTWFwcGluZyBUeXBlcyAtLS0gImRpY3QiXG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuQSAqbWFwcGluZyogb2JqZWN0IG1hcHMgKmhhc2hhYmxlKiB2YWx1ZXMgdG8gYXJiaXRyYXJ5IG9iamVjdHMuXG5NYXBwaW5ncyBhcmUgbXV0YWJsZSBvYmplY3RzLiAgVGhlcmUgaXMgY3VycmVudGx5IG9ubHkgb25lIHN0YW5kYXJkXG5tYXBwaW5nIHR5cGUsIHRoZSAqZGljdGlvbmFyeSouICAoRm9yIG90aGVyIGNvbnRhaW5lcnMgc2VlIHRoZSBidWlsdC1cbmluICJsaXN0IiwgInNldCIsIGFuZCAidHVwbGUiIGNsYXNzZXMsIGFuZCB0aGUgImNvbGxlY3Rpb25zIiBtb2R1bGUuKVxuXG5BIGRpY3Rpb25hcnlcJ3Mga2V5cyBhcmUgKmFsbW9zdCogYXJiaXRyYXJ5IHZhbHVlcy4gIFZhbHVlcyB0aGF0IGFyZVxubm90ICpoYXNoYWJsZSosIHRoYXQgaXMsIHZhbHVlcyBjb250YWluaW5nIGxpc3RzLCBkaWN0aW9uYXJpZXMgb3Jcbm90aGVyIG11dGFibGUgdHlwZXMgKHRoYXQgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlIHJhdGhlciB0aGFuIGJ5IG9iamVjdFxuaWRlbnRpdHkpIG1heSBub3QgYmUgdXNlZCBhcyBrZXlzLiAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXlcbnRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbFxuKHN1Y2ggYXMgIjEiIGFuZCAiMS4wIikgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleFxudGhlIHNhbWUgZGljdGlvbmFyeSBlbnRyeS4gIChOb3RlIGhvd2V2ZXIsIHRoYXQgc2luY2UgY29tcHV0ZXJzIHN0b3JlXG5mbG9hdGluZy1wb2ludCBudW1iZXJzIGFzIGFwcHJveGltYXRpb25zIGl0IGlzIHVzdWFsbHkgdW53aXNlIHRvIHVzZVxudGhlbSBhcyBkaWN0aW9uYXJ5IGtleXMuKVxuXG5EaWN0aW9uYXJpZXMgY2FuIGJlIGNyZWF0ZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mICJrZXk6XG52YWx1ZSIgcGFpcnMgd2l0aGluIGJyYWNlcywgZm9yIGV4YW1wbGU6ICJ7XCdqYWNrXCc6IDQwOTgsIFwnc2pvZXJkXCc6XG40MTI3fSIgb3IgIns0MDk4OiBcJ2phY2tcJywgNDEyNzogXCdzam9lcmRcJ30iLCBvciBieSB0aGUgImRpY3QiXG5jb25zdHJ1Y3Rvci5cblxuY2xhc3MgY2xhc3MgZGljdCgqKmt3YXJnKVxuY2xhc3MgY2xhc3MgZGljdChtYXBwaW5nLCAqKmt3YXJnKVxuY2xhc3MgY2xhc3MgZGljdChpdGVyYWJsZSwgKiprd2FyZylcblxuICAgUmV0dXJuIGEgbmV3IGRpY3Rpb25hcnkgaW5pdGlhbGl6ZWQgZnJvbSBhbiBvcHRpb25hbCBwb3NpdGlvbmFsXG4gICBhcmd1bWVudCBhbmQgYSBwb3NzaWJseSBlbXB0eSBzZXQgb2Yga2V5d29yZCBhcmd1bWVudHMuXG5cbiAgIElmIG5vIHBvc2l0aW9uYWwgYXJndW1lbnQgaXMgZ2l2ZW4sIGFuIGVtcHR5IGRpY3Rpb25hcnkgaXMgY3JlYXRlZC5cbiAgIElmIGEgcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiBhbmQgaXQgaXMgYSBtYXBwaW5nIG9iamVjdCwgYVxuICAgZGljdGlvbmFyeSBpcyBjcmVhdGVkIHdpdGggdGhlIHNhbWUga2V5LXZhbHVlIHBhaXJzIGFzIHRoZSBtYXBwaW5nXG4gICBvYmplY3QuICBPdGhlcndpc2UsIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYW4gKml0ZXJhYmxlKlxuICAgb2JqZWN0LiAgRWFjaCBpdGVtIGluIHRoZSBpdGVyYWJsZSBtdXN0IGl0c2VsZiBiZSBhbiBpdGVyYWJsZSB3aXRoXG4gICBleGFjdGx5IHR3byBvYmplY3RzLiAgVGhlIGZpcnN0IG9iamVjdCBvZiBlYWNoIGl0ZW0gYmVjb21lcyBhIGtleVxuICAgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LCBhbmQgdGhlIHNlY29uZCBvYmplY3QgdGhlIGNvcnJlc3BvbmRpbmdcbiAgIHZhbHVlLiAgSWYgYSBrZXkgb2NjdXJzIG1vcmUgdGhhbiBvbmNlLCB0aGUgbGFzdCB2YWx1ZSBmb3IgdGhhdCBrZXlcbiAgIGJlY29tZXMgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LlxuXG4gICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHRoZSBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgdGhlaXJcbiAgIHZhbHVlcyBhcmUgYWRkZWQgdG8gdGhlIGRpY3Rpb25hcnkgY3JlYXRlZCBmcm9tIHRoZSBwb3NpdGlvbmFsXG4gICBhcmd1bWVudC4gIElmIGEga2V5IGJlaW5nIGFkZGVkIGlzIGFscmVhZHkgcHJlc2VudCwgdGhlIHZhbHVlIGZyb21cbiAgIHRoZSBrZXl3b3JkIGFyZ3VtZW50IHJlcGxhY2VzIHRoZSB2YWx1ZSBmcm9tIHRoZSBwb3NpdGlvbmFsXG4gICBhcmd1bWVudC5cblxuICAgVG8gaWxsdXN0cmF0ZSwgdGhlIGZvbGxvd2luZyBleGFtcGxlcyBhbGwgcmV0dXJuIGEgZGljdGlvbmFyeSBlcXVhbFxuICAgdG8gInsib25lIjogMSwgInR3byI6IDIsICJ0aHJlZSI6IDN9IjpcblxuICAgICAgPj4+IGEgPSBkaWN0KG9uZT0xLCB0d289MiwgdGhyZWU9MylcbiAgICAgID4+PiBiID0ge1wnb25lXCc6IDEsIFwndHdvXCc6IDIsIFwndGhyZWVcJzogM31cbiAgICAgID4+PiBjID0gZGljdCh6aXAoW1wnb25lXCcsIFwndHdvXCcsIFwndGhyZWVcJ10sIFsxLCAyLCAzXSkpXG4gICAgICA+Pj4gZCA9IGRpY3QoWyhcJ3R3b1wnLCAyKSwgKFwnb25lXCcsIDEpLCAoXCd0aHJlZVwnLCAzKV0pXG4gICAgICA+Pj4gZSA9IGRpY3Qoe1wndGhyZWVcJzogMywgXCdvbmVcJzogMSwgXCd0d29cJzogMn0pXG4gICAgICA+Pj4gYSA9PSBiID09IGMgPT0gZCA9PSBlXG4gICAgICBUcnVlXG5cbiAgIFByb3ZpZGluZyBrZXl3b3JkIGFyZ3VtZW50cyBhcyBpbiB0aGUgZmlyc3QgZXhhbXBsZSBvbmx5IHdvcmtzIGZvclxuICAga2V5cyB0aGF0IGFyZSB2YWxpZCBQeXRob24gaWRlbnRpZmllcnMuICBPdGhlcndpc2UsIGFueSB2YWxpZCBrZXlzXG4gICBjYW4gYmUgdXNlZC5cblxuICAgVGhlc2UgYXJlIHRoZSBvcGVyYXRpb25zIHRoYXQgZGljdGlvbmFyaWVzIHN1cHBvcnQgKGFuZCB0aGVyZWZvcmUsXG4gICBjdXN0b20gbWFwcGluZyB0eXBlcyBzaG91bGQgc3VwcG9ydCB0b28pOlxuXG4gICBsZW4oZClcblxuICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGRpY3Rpb25hcnkgKmQqLlxuXG4gICBkW2tleV1cblxuICAgICAgUmV0dXJuIHRoZSBpdGVtIG9mICpkKiB3aXRoIGtleSAqa2V5Ki4gIFJhaXNlcyBhICJLZXlFcnJvciIgaWZcbiAgICAgICprZXkqIGlzIG5vdCBpbiB0aGUgbWFwLlxuXG4gICAgICBJZiBhIHN1YmNsYXNzIG9mIGRpY3QgZGVmaW5lcyBhIG1ldGhvZCAiX19taXNzaW5nX18oKSIgYW5kICprZXkqXG4gICAgICBpcyBub3QgcHJlc2VudCwgdGhlICJkW2tleV0iIG9wZXJhdGlvbiBjYWxscyB0aGF0IG1ldGhvZCB3aXRoXG4gICAgICB0aGUga2V5ICprZXkqIGFzIGFyZ3VtZW50LiAgVGhlICJkW2tleV0iIG9wZXJhdGlvbiB0aGVuIHJldHVybnNcbiAgICAgIG9yIHJhaXNlcyB3aGF0ZXZlciBpcyByZXR1cm5lZCBvciByYWlzZWQgYnkgdGhlXG4gICAgICAiX19taXNzaW5nX18oa2V5KSIgY2FsbC4gTm8gb3RoZXIgb3BlcmF0aW9ucyBvciBtZXRob2RzIGludm9rZVxuICAgICAgIl9fbWlzc2luZ19fKCkiLiBJZiAiX19taXNzaW5nX18oKSIgaXMgbm90IGRlZmluZWQsICJLZXlFcnJvciJcbiAgICAgIGlzIHJhaXNlZC4gIl9fbWlzc2luZ19fKCkiIG11c3QgYmUgYSBtZXRob2Q7IGl0IGNhbm5vdCBiZSBhblxuICAgICAgaW5zdGFuY2UgdmFyaWFibGU6XG5cbiAgICAgICAgID4+PiBjbGFzcyBDb3VudGVyKGRpY3QpOlxuICAgICAgICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgICAgICAgIC4uLiAgICAgICAgIHJldHVybiAwXG4gICAgICAgICA+Pj4gYyA9IENvdW50ZXIoKVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDBcbiAgICAgICAgID4+PiBjW1wncmVkXCddICs9IDFcbiAgICAgICAgID4+PiBjW1wncmVkXCddXG4gICAgICAgICAxXG5cbiAgICAgIFRoZSBleGFtcGxlIGFib3ZlIHNob3dzIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mXG4gICAgICAiY29sbGVjdGlvbnMuQ291bnRlciIuICBBIGRpZmZlcmVudCAiX19taXNzaW5nX18iIG1ldGhvZCBpcyB1c2VkXG4gICAgICBieSAiY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QiLlxuXG4gICBkW2tleV0gPSB2YWx1ZVxuXG4gICAgICBTZXQgImRba2V5XSIgdG8gKnZhbHVlKi5cblxuICAgZGVsIGRba2V5XVxuXG4gICAgICBSZW1vdmUgImRba2V5XSIgZnJvbSAqZCouICBSYWlzZXMgYSAiS2V5RXJyb3IiIGlmICprZXkqIGlzIG5vdFxuICAgICAgaW4gdGhlIG1hcC5cblxuICAga2V5IGluIGRcblxuICAgICAgUmV0dXJuICJUcnVlIiBpZiAqZCogaGFzIGEga2V5ICprZXkqLCBlbHNlICJGYWxzZSIuXG5cbiAgIGtleSBub3QgaW4gZFxuXG4gICAgICBFcXVpdmFsZW50IHRvICJub3Qga2V5IGluIGQiLlxuXG4gICBpdGVyKGQpXG5cbiAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIG9mIHRoZSBkaWN0aW9uYXJ5LiAgVGhpcyBpcyBhXG4gICAgICBzaG9ydGN1dCBmb3IgIml0ZXIoZC5rZXlzKCkpIi5cblxuICAgY2xlYXIoKVxuXG4gICAgICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNvcHkoKVxuXG4gICAgICBSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNsYXNzbWV0aG9kIGZyb21rZXlzKHNlcVssIHZhbHVlXSlcblxuICAgICAgQ3JlYXRlIGEgbmV3IGRpY3Rpb25hcnkgd2l0aCBrZXlzIGZyb20gKnNlcSogYW5kIHZhbHVlcyBzZXQgdG9cbiAgICAgICp2YWx1ZSouXG5cbiAgICAgICJmcm9ta2V5cygpIiBpcyBhIGNsYXNzIG1ldGhvZCB0aGF0IHJldHVybnMgYSBuZXcgZGljdGlvbmFyeS5cbiAgICAgICp2YWx1ZSogZGVmYXVsdHMgdG8gIk5vbmUiLlxuXG4gICBnZXQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIFJldHVybiB0aGUgdmFsdWUgZm9yICprZXkqIGlmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCBlbHNlXG4gICAgICAqZGVmYXVsdCouIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvICJOb25lIiwgc29cbiAgICAgIHRoYXQgdGhpcyBtZXRob2QgbmV2ZXIgcmFpc2VzIGEgIktleUVycm9yIi5cblxuICAgaXRlbXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBpdGVtcyAoIihrZXksIHZhbHVlKSJcbiAgICAgIHBhaXJzKS4gU2VlIHRoZSAqZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMqLlxuXG4gICBrZXlzKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3Mga2V5cy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIHBvcChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJlbW92ZSBpdCBhbmQgcmV0dXJuIGl0cyB2YWx1ZSxcbiAgICAgIGVsc2UgcmV0dXJuICpkZWZhdWx0Ki4gIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4gYW5kICprZXkqIGlzXG4gICAgICBub3QgaW4gdGhlIGRpY3Rpb25hcnksIGEgIktleUVycm9yIiBpcyByYWlzZWQuXG5cbiAgIHBvcGl0ZW0oKVxuXG4gICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBhcmJpdHJhcnkgIihrZXksIHZhbHVlKSIgcGFpciBmcm9tIHRoZVxuICAgICAgZGljdGlvbmFyeS5cblxuICAgICAgInBvcGl0ZW0oKSIgaXMgdXNlZnVsIHRvIGRlc3RydWN0aXZlbHkgaXRlcmF0ZSBvdmVyIGFcbiAgICAgIGRpY3Rpb25hcnksIGFzIG9mdGVuIHVzZWQgaW4gc2V0IGFsZ29yaXRobXMuICBJZiB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgZW1wdHksIGNhbGxpbmcgInBvcGl0ZW0oKSIgcmFpc2VzIGEgIktleUVycm9yIi5cblxuICAgc2V0ZGVmYXVsdChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJldHVybiBpdHMgdmFsdWUuICBJZiBub3QsIGluc2VydFxuICAgICAgKmtleSogd2l0aCBhIHZhbHVlIG9mICpkZWZhdWx0KiBhbmQgcmV0dXJuICpkZWZhdWx0Ki4gICpkZWZhdWx0KlxuICAgICAgZGVmYXVsdHMgdG8gIk5vbmUiLlxuXG4gICB1cGRhdGUoW290aGVyXSlcblxuICAgICAgVXBkYXRlIHRoZSBkaWN0aW9uYXJ5IHdpdGggdGhlIGtleS92YWx1ZSBwYWlycyBmcm9tICpvdGhlciosXG4gICAgICBvdmVyd3JpdGluZyBleGlzdGluZyBrZXlzLiAgUmV0dXJuICJOb25lIi5cblxuICAgICAgInVwZGF0ZSgpIiBhY2NlcHRzIGVpdGhlciBhbm90aGVyIGRpY3Rpb25hcnkgb2JqZWN0IG9yIGFuXG4gICAgICBpdGVyYWJsZSBvZiBrZXkvdmFsdWUgcGFpcnMgKGFzIHR1cGxlcyBvciBvdGhlciBpdGVyYWJsZXMgb2ZcbiAgICAgIGxlbmd0aCB0d28pLiAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCwgdGhlIGRpY3Rpb25hcnlcbiAgICAgIGlzIHRoZW4gdXBkYXRlZCB3aXRoIHRob3NlIGtleS92YWx1ZSBwYWlyczogImQudXBkYXRlKHJlZD0xLFxuICAgICAgYmx1ZT0yKSIuXG5cbiAgIHZhbHVlcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIHZhbHVlcy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIERpY3Rpb25hcmllcyBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSAiKGtleSxcbiAgIHZhbHVlKSIgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zIChcJzxcJywgXCc8PVwnLCBcJz49XCcsIFwnPlwnKSByYWlzZVxuICAgIlR5cGVFcnJvciIuXG5cblNlZSBhbHNvOiAidHlwZXMuTWFwcGluZ1Byb3h5VHlwZSIgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGEgcmVhZC1vbmx5XG4gIHZpZXcgb2YgYSAiZGljdCIuXG5cblxuRGljdGlvbmFyeSB2aWV3IG9iamVjdHNcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvYmplY3RzIHJldHVybmVkIGJ5ICJkaWN0LmtleXMoKSIsICJkaWN0LnZhbHVlcygpIiBhbmRcbiJkaWN0Lml0ZW1zKCkiIGFyZSAqdmlldyBvYmplY3RzKi4gIFRoZXkgcHJvdmlkZSBhIGR5bmFtaWMgdmlldyBvbiB0aGVcbmRpY3Rpb25hcnlcJ3MgZW50cmllcywgd2hpY2ggbWVhbnMgdGhhdCB3aGVuIHRoZSBkaWN0aW9uYXJ5IGNoYW5nZXMsXG50aGUgdmlldyByZWZsZWN0cyB0aGVzZSBjaGFuZ2VzLlxuXG5EaWN0aW9uYXJ5IHZpZXdzIGNhbiBiZSBpdGVyYXRlZCBvdmVyIHRvIHlpZWxkIHRoZWlyIHJlc3BlY3RpdmUgZGF0YSxcbmFuZCBzdXBwb3J0IG1lbWJlcnNoaXAgdGVzdHM6XG5cbmxlbihkaWN0dmlldylcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeS5cblxuaXRlcihkaWN0dmlldylcblxuICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMsIHZhbHVlcyBvciBpdGVtcyAocmVwcmVzZW50ZWQgYXNcbiAgIHR1cGxlcyBvZiAiKGtleSwgdmFsdWUpIikgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIEtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiBhbiBhcmJpdHJhcnkgb3JkZXIgd2hpY2ggaXNcbiAgIG5vbi1yYW5kb20sIHZhcmllcyBhY3Jvc3MgUHl0aG9uIGltcGxlbWVudGF0aW9ucywgYW5kIGRlcGVuZHMgb25cbiAgIHRoZSBkaWN0aW9uYXJ5XCdzIGhpc3Rvcnkgb2YgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zLiBJZiBrZXlzLFxuICAgdmFsdWVzIGFuZCBpdGVtcyB2aWV3cyBhcmUgaXRlcmF0ZWQgb3ZlciB3aXRoIG5vIGludGVydmVuaW5nXG4gICBtb2RpZmljYXRpb25zIHRvIHRoZSBkaWN0aW9uYXJ5LCB0aGUgb3JkZXIgb2YgaXRlbXMgd2lsbCBkaXJlY3RseVxuICAgY29ycmVzcG9uZC4gIFRoaXMgYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiAiKHZhbHVlLCBrZXkpIiBwYWlycyB1c2luZ1xuICAgInppcCgpIjogInBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKSIuICBBbm90aGVyIHdheSB0b1xuICAgY3JlYXRlIHRoZSBzYW1lIGxpc3QgaXMgInBhaXJzID0gWyh2LCBrKSBmb3IgKGssIHYpIGluIGQuaXRlbXMoKV0iLlxuXG4gICBJdGVyYXRpbmcgdmlld3Mgd2hpbGUgYWRkaW5nIG9yIGRlbGV0aW5nIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnlcbiAgIG1heSByYWlzZSBhICJSdW50aW1lRXJyb3IiIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyIGFsbCBlbnRyaWVzLlxuXG54IGluIGRpY3R2aWV3XG5cbiAgIFJldHVybiAiVHJ1ZSIgaWYgKngqIGlzIGluIHRoZSB1bmRlcmx5aW5nIGRpY3Rpb25hcnlcJ3Mga2V5cywgdmFsdWVzXG4gICBvciBpdGVtcyAoaW4gdGhlIGxhdHRlciBjYXNlLCAqeCogc2hvdWxkIGJlIGEgIihrZXksIHZhbHVlKSJcbiAgIHR1cGxlKS5cblxuS2V5cyB2aWV3cyBhcmUgc2V0LWxpa2Ugc2luY2UgdGhlaXIgZW50cmllcyBhcmUgdW5pcXVlIGFuZCBoYXNoYWJsZS5cbklmIGFsbCB2YWx1ZXMgYXJlIGhhc2hhYmxlLCBzbyB0aGF0ICIoa2V5LCB2YWx1ZSkiIHBhaXJzIGFyZSB1bmlxdWVcbmFuZCBoYXNoYWJsZSwgdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyB2aWV3cyBhcmVcbm5vdCB0cmVhdGVkIGFzIHNldC1saWtlIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90IHVuaXF1ZS4pXG5Gb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgYWJzdHJhY3RcbmJhc2UgY2xhc3MgImNvbGxlY3Rpb25zLmFiYy5TZXQiIGFyZSBhdmFpbGFibGUgKGZvciBleGFtcGxlLCAiPT0iLFxuIjwiLCBvciAiXiIpLlxuXG5BbiBleGFtcGxlIG9mIGRpY3Rpb25hcnkgdmlldyB1c2FnZTpcblxuICAgPj4+IGRpc2hlcyA9IHtcJ2VnZ3NcJzogMiwgXCdzYXVzYWdlXCc6IDEsIFwnYmFjb25cJzogMSwgXCdzcGFtXCc6IDUwMH1cbiAgID4+PiBrZXlzID0gZGlzaGVzLmtleXMoKVxuICAgPj4+IHZhbHVlcyA9IGRpc2hlcy52YWx1ZXMoKVxuXG4gICA+Pj4gIyBpdGVyYXRpb25cbiAgID4+PiBuID0gMFxuICAgPj4+IGZvciB2YWwgaW4gdmFsdWVzOlxuICAgLi4uICAgICBuICs9IHZhbFxuICAgPj4+IHByaW50KG4pXG4gICA1MDRcblxuICAgPj4+ICMga2V5cyBhbmQgdmFsdWVzIGFyZSBpdGVyYXRlZCBvdmVyIGluIHRoZSBzYW1lIG9yZGVyXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnZWdnc1wnLCBcJ2JhY29uXCcsIFwnc2F1c2FnZVwnLCBcJ3NwYW1cJ11cbiAgID4+PiBsaXN0KHZhbHVlcylcbiAgIFsyLCAxLCAxLCA1MDBdXG5cbiAgID4+PiAjIHZpZXcgb2JqZWN0cyBhcmUgZHluYW1pYyBhbmQgcmVmbGVjdCBkaWN0IGNoYW5nZXNcbiAgID4+PiBkZWwgZGlzaGVzW1wnZWdnc1wnXVxuICAgPj4+IGRlbCBkaXNoZXNbXCdzYXVzYWdlXCddXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnc3BhbVwnLCBcJ2JhY29uXCddXG5cbiAgID4+PiAjIHNldCBvcGVyYXRpb25zXG4gICA+Pj4ga2V5cyAmIHtcJ2VnZ3NcJywgXCdiYWNvblwnLCBcJ3NhbGFkXCd9XG4gICB7XCdiYWNvblwnfVxuICAgPj4+IGtleXMgXiB7XCdzYXVzYWdlXCcsIFwnanVpY2VcJ31cbiAgIHtcJ2p1aWNlXCcsIFwnc2F1c2FnZVwnLCBcJ2JhY29uXCcsIFwnc3BhbVwnfVxuJywKICAndHlwZXNtZXRob2RzJzogdSdcbk1ldGhvZHNcbioqKioqKipcblxuTWV0aG9kcyBhcmUgZnVuY3Rpb25zIHRoYXQgYXJlIGNhbGxlZCB1c2luZyB0aGUgYXR0cmlidXRlIG5vdGF0aW9uLlxuVGhlcmUgYXJlIHR3byBmbGF2b3JzOiBidWlsdC1pbiBtZXRob2RzIChzdWNoIGFzICJhcHBlbmQoKSIgb24gbGlzdHMpXG5hbmQgY2xhc3MgaW5zdGFuY2UgbWV0aG9kcy4gIEJ1aWx0LWluIG1ldGhvZHMgYXJlIGRlc2NyaWJlZCB3aXRoIHRoZVxudHlwZXMgdGhhdCBzdXBwb3J0IHRoZW0uXG5cbklmIHlvdSBhY2Nlc3MgYSBtZXRob2QgKGEgZnVuY3Rpb24gZGVmaW5lZCBpbiBhIGNsYXNzIG5hbWVzcGFjZSlcbnRocm91Z2ggYW4gaW5zdGFuY2UsIHlvdSBnZXQgYSBzcGVjaWFsIG9iamVjdDogYSAqYm91bmQgbWV0aG9kKiAoYWxzb1xuY2FsbGVkICppbnN0YW5jZSBtZXRob2QqKSBvYmplY3QuIFdoZW4gY2FsbGVkLCBpdCB3aWxsIGFkZCB0aGUgInNlbGYiXG5hcmd1bWVudCB0byB0aGUgYXJndW1lbnQgbGlzdC4gIEJvdW5kIG1ldGhvZHMgaGF2ZSB0d28gc3BlY2lhbCByZWFkLVxub25seSBhdHRyaWJ1dGVzOiAibS5fX3NlbGZfXyIgaXMgdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgbWV0aG9kXG5vcGVyYXRlcywgYW5kICJtLl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gaW1wbGVtZW50aW5nIHRoZSBtZXRob2QuXG5DYWxsaW5nICJtKGFyZy0xLCBhcmctMiwgLi4uLCBhcmctbikiIGlzIGNvbXBsZXRlbHkgZXF1aXZhbGVudCB0b1xuY2FsbGluZyAibS5fX2Z1bmNfXyhtLl9fc2VsZl9fLCBhcmctMSwgYXJnLTIsIC4uLiwgYXJnLW4pIi5cblxuTGlrZSBmdW5jdGlvbiBvYmplY3RzLCBib3VuZCBtZXRob2Qgb2JqZWN0cyBzdXBwb3J0IGdldHRpbmcgYXJiaXRyYXJ5XG5hdHRyaWJ1dGVzLiAgSG93ZXZlciwgc2luY2UgbWV0aG9kIGF0dHJpYnV0ZXMgYXJlIGFjdHVhbGx5IHN0b3JlZCBvblxudGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0ICgibWV0aC5fX2Z1bmNfXyIpLCBzZXR0aW5nIG1ldGhvZFxuYXR0cmlidXRlcyBvbiBib3VuZCBtZXRob2RzIGlzIGRpc2FsbG93ZWQuICBBdHRlbXB0aW5nIHRvIHNldCBhblxuYXR0cmlidXRlIG9uIGEgbWV0aG9kIHJlc3VsdHMgaW4gYW4gIkF0dHJpYnV0ZUVycm9yIiBiZWluZyByYWlzZWQuICBJblxub3JkZXIgdG8gc2V0IGEgbWV0aG9kIGF0dHJpYnV0ZSwgeW91IG5lZWQgdG8gZXhwbGljaXRseSBzZXQgaXQgb24gdGhlXG51bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdDpcblxuICAgPj4+IGNsYXNzIEM6XG4gICAuLi4gICAgIGRlZiBtZXRob2Qoc2VsZik6XG4gICAuLi4gICAgICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5tZXRob2Qud2hvYW1pID0gXCdteSBuYW1lIGlzIG1ldGhvZFwnICAjIGNhblwndCBzZXQgb24gdGhlIG1ldGhvZFxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgQXR0cmlidXRlRXJyb3I6IFwnbWV0aG9kXCcgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgXCd3aG9hbWlcJ1xuICAgPj4+IGMubWV0aG9kLl9fZnVuY19fLndob2FtaSA9IFwnbXkgbmFtZSBpcyBtZXRob2RcJ1xuICAgPj4+IGMubWV0aG9kLndob2FtaVxuICAgXCdteSBuYW1lIGlzIG1ldGhvZFwnXG5cblNlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCmRpZmYgLS1naXQgYS9MaWIvcXVldWUucHkgYi9MaWIvcXVldWUucHkKaW5kZXggM2NlZTM2Yi4uNTcyNDI1ZSAxMDA2NDQKLS0tIGEvTGliL3F1ZXVlLnB5CisrKyBiL0xpYi9xdWV1ZS5weQpAQCAtNiwxMCArNiw3IEBACiAgICAgaW1wb3J0IGR1bW15X3RocmVhZGluZyBhcyB0aHJlYWRpbmcKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCiBmcm9tIGhlYXBxIGltcG9ydCBoZWFwcHVzaCwgaGVhcHBvcAotdHJ5OgotICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIHRpbWUKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUKK2Zyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIHRpbWUKIAogX19hbGxfXyA9IFsnRW1wdHknLCAnRnVsbCcsICdRdWV1ZScsICdQcmlvcml0eVF1ZXVlJywgJ0xpZm9RdWV1ZSddCiAKZGlmZiAtLWdpdCBhL0xpYi9yYW5kb20ucHkgYi9MaWIvcmFuZG9tLnB5CmluZGV4IDQ2NDI5MjguLjFmNWJlNDUgMTAwNjQ0Ci0tLSBhL0xpYi9yYW5kb20ucHkKKysrIGIvTGliL3JhbmRvbS5weQpAQCAtNjg3LDcgKzY4Nyw3IEBACiAgICAgcHJpbnQocm91bmQodDEtdDAsIDMpLCAnc2VjLCcsIGVuZD0nICcpCiAgICAgYXZnID0gdG90YWwvbgogICAgIHN0ZGRldiA9IF9zcXJ0KHNxc3VtL24gLSBhdmcqYXZnKQotICAgIHByaW50KCdhdmcgJWcsIHN0ZGRldiAlZywgbWluICVnLCBtYXggJWcnICUgXAorICAgIHByaW50KCdhdmcgJWcsIHN0ZGRldiAlZywgbWluICVnLCBtYXggJWdcbicgJSBcCiAgICAgICAgICAgICAgIChhdmcsIHN0ZGRldiwgc21hbGxlc3QsIGxhcmdlc3QpKQogCiAKZGlmZiAtLWdpdCBhL0xpYi9yZS5weSBiL0xpYi9yZS5weQppbmRleCAxOTlhZmVlLi5kZGU4OTAxIDEwMDY0NAotLS0gYS9MaWIvcmUucHkKKysrIGIvTGliL3JlLnB5CkBAIC0xMjgsMTAgKzEyOCwxMyBAQAogICAgIF9sb2NhbGUgPSBOb25lCiAKICMgcHVibGljIHN5bWJvbHMKLV9fYWxsX18gPSBbICJtYXRjaCIsICJmdWxsbWF0Y2giLCAic2VhcmNoIiwgInN1YiIsICJzdWJuIiwgInNwbGl0IiwgImZpbmRhbGwiLAotICAgICJjb21waWxlIiwgInB1cmdlIiwgInRlbXBsYXRlIiwgImVzY2FwZSIsICJBIiwgIkkiLCAiTCIsICJNIiwgIlMiLCAiWCIsCi0gICAgIlUiLCAiQVNDSUkiLCAiSUdOT1JFQ0FTRSIsICJMT0NBTEUiLCAiTVVMVElMSU5FIiwgIkRPVEFMTCIsICJWRVJCT1NFIiwKLSAgICAiVU5JQ09ERSIsICJlcnJvciIgXQorX19hbGxfXyA9IFsKKyAgICAibWF0Y2giLCAiZnVsbG1hdGNoIiwgInNlYXJjaCIsICJzdWIiLCAic3VibiIsICJzcGxpdCIsCisgICAgImZpbmRhbGwiLCAiZmluZGl0ZXIiLCAiY29tcGlsZSIsICJwdXJnZSIsICJ0ZW1wbGF0ZSIsICJlc2NhcGUiLAorICAgICJlcnJvciIsICJBIiwgIkkiLCAiTCIsICJNIiwgIlMiLCAiWCIsICJVIiwKKyAgICAiQVNDSUkiLCAiSUdOT1JFQ0FTRSIsICJMT0NBTEUiLCAiTVVMVElMSU5FIiwgIkRPVEFMTCIsICJWRVJCT1NFIiwKKyAgICAiVU5JQ09ERSIsCitdCiAKIF9fdmVyc2lvbl9fID0gIjIuMi4xIgogCkBAIC0yMDksMTQgKzIxMiwxMiBAQAogICAgIEVtcHR5IG1hdGNoZXMgYXJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHQuIiIiCiAgICAgcmV0dXJuIF9jb21waWxlKHBhdHRlcm4sIGZsYWdzKS5maW5kYWxsKHN0cmluZykKIAotaWYgc3lzLmhleHZlcnNpb24gPj0gMHgwMjAyMDAwMDoKLSAgICBfX2FsbF9fLmFwcGVuZCgiZmluZGl0ZXIiKQotICAgIGRlZiBmaW5kaXRlcihwYXR0ZXJuLCBzdHJpbmcsIGZsYWdzPTApOgotICAgICAgICAiIiJSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBhbGwgbm9uLW92ZXJsYXBwaW5nIG1hdGNoZXMgaW4gdGhlCi0gICAgICAgIHN0cmluZy4gIEZvciBlYWNoIG1hdGNoLCB0aGUgaXRlcmF0b3IgcmV0dXJucyBhIG1hdGNoIG9iamVjdC4KK2RlZiBmaW5kaXRlcihwYXR0ZXJuLCBzdHJpbmcsIGZsYWdzPTApOgorICAgICIiIlJldHVybiBhbiBpdGVyYXRvciBvdmVyIGFsbCBub24tb3ZlcmxhcHBpbmcgbWF0Y2hlcyBpbiB0aGUKKyAgICBzdHJpbmcuICBGb3IgZWFjaCBtYXRjaCwgdGhlIGl0ZXJhdG9yIHJldHVybnMgYSBtYXRjaCBvYmplY3QuCiAKLSAgICAgICAgRW1wdHkgbWF0Y2hlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdC4iIiIKLSAgICAgICAgcmV0dXJuIF9jb21waWxlKHBhdHRlcm4sIGZsYWdzKS5maW5kaXRlcihzdHJpbmcpCisgICAgRW1wdHkgbWF0Y2hlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdC4iIiIKKyAgICByZXR1cm4gX2NvbXBpbGUocGF0dGVybiwgZmxhZ3MpLmZpbmRpdGVyKHN0cmluZykKIAogZGVmIGNvbXBpbGUocGF0dGVybiwgZmxhZ3M9MCk6CiAgICAgIkNvbXBpbGUgYSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybiwgcmV0dXJuaW5nIGEgcGF0dGVybiBvYmplY3QuIgpAQCAtMjc2LDIzICsyNzcsMjEgQEAKIF9NQVhDQUNIRSA9IDUxMgogZGVmIF9jb21waWxlKHBhdHRlcm4sIGZsYWdzKToKICAgICAjIGludGVybmFsOiBjb21waWxlIHBhdHRlcm4KLSAgICBieXBhc3NfY2FjaGUgPSBmbGFncyAmIERFQlVHCi0gICAgaWYgbm90IGJ5cGFzc19jYWNoZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcCwgbG9jID0gX2NhY2hlW3R5cGUocGF0dGVybiksIHBhdHRlcm4sIGZsYWdzXQotICAgICAgICAgICAgaWYgbG9jIGlzIE5vbmUgb3IgbG9jID09IF9sb2NhbGUuc2V0bG9jYWxlKF9sb2NhbGUuTENfQ1RZUEUpOgotICAgICAgICAgICAgICAgIHJldHVybiBwCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKKyAgICB0cnk6CisgICAgICAgIHAsIGxvYyA9IF9jYWNoZVt0eXBlKHBhdHRlcm4pLCBwYXR0ZXJuLCBmbGFnc10KKyAgICAgICAgaWYgbG9jIGlzIE5vbmUgb3IgbG9jID09IF9sb2NhbGUuc2V0bG9jYWxlKF9sb2NhbGUuTENfQ1RZUEUpOgorICAgICAgICAgICAgcmV0dXJuIHAKKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBhc3MKICAgICBpZiBpc2luc3RhbmNlKHBhdHRlcm4sIF9wYXR0ZXJuX3R5cGUpOgogICAgICAgICBpZiBmbGFnczoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgIkNhbm5vdCBwcm9jZXNzIGZsYWdzIGFyZ3VtZW50IHdpdGggYSBjb21waWxlZCBwYXR0ZXJuIikKKyAgICAgICAgICAgICAgICAiY2Fubm90IHByb2Nlc3MgZmxhZ3MgYXJndW1lbnQgd2l0aCBhIGNvbXBpbGVkIHBhdHRlcm4iKQogICAgICAgICByZXR1cm4gcGF0dGVybgogICAgIGlmIG5vdCBzcmVfY29tcGlsZS5pc3N0cmluZyhwYXR0ZXJuKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaXJzdCBhcmd1bWVudCBtdXN0IGJlIHN0cmluZyBvciBjb21waWxlZCBwYXR0ZXJuIikKICAgICBwID0gc3JlX2NvbXBpbGUuY29tcGlsZShwYXR0ZXJuLCBmbGFncykKLSAgICBpZiBub3QgYnlwYXNzX2NhY2hlOgorICAgIGlmIG5vdCAoZmxhZ3MgJiBERUJVRyk6CiAgICAgICAgIGlmIGxlbihfY2FjaGUpID49IF9NQVhDQUNIRToKICAgICAgICAgICAgIF9jYWNoZS5jbGVhcigpCiAgICAgICAgIGlmIHAuZmxhZ3MgJiBMT0NBTEU6CkBAIC0zNTIsMTAgKzM1MSwxMSBAQAogICAgICAgICBzID0gc3JlX3BhcnNlLlBhdHRlcm4oKQogICAgICAgICBzLmZsYWdzID0gZmxhZ3MKICAgICAgICAgZm9yIHBocmFzZSwgYWN0aW9uIGluIGxleGljb246CisgICAgICAgICAgICBnaWQgPSBzLm9wZW5ncm91cCgpCiAgICAgICAgICAgICBwLmFwcGVuZChzcmVfcGFyc2UuU3ViUGF0dGVybihzLCBbCi0gICAgICAgICAgICAgICAgKFNVQlBBVFRFUk4sIChsZW4ocCkrMSwgc3JlX3BhcnNlLnBhcnNlKHBocmFzZSwgZmxhZ3MpKSksCisgICAgICAgICAgICAgICAgKFNVQlBBVFRFUk4sIChnaWQsIHNyZV9wYXJzZS5wYXJzZShwaHJhc2UsIGZsYWdzKSkpLAogICAgICAgICAgICAgICAgIF0pKQotICAgICAgICBzLmdyb3VwcyA9IGxlbihwKSsxCisgICAgICAgICAgICBzLmNsb3NlZ3JvdXAoZ2lkLCBwWy0xXSkKICAgICAgICAgcCA9IHNyZV9wYXJzZS5TdWJQYXR0ZXJuKHMsIFsoQlJBTkNILCAoTm9uZSwgcCkpXSkKICAgICAgICAgc2VsZi5zY2FubmVyID0gc3JlX2NvbXBpbGUuY29tcGlsZShwKQogICAgIGRlZiBzY2FuKHNlbGYsIHN0cmluZyk6CkBAIC0zNjMsNyArMzYzLDcgQEAKICAgICAgICAgYXBwZW5kID0gcmVzdWx0LmFwcGVuZAogICAgICAgICBtYXRjaCA9IHNlbGYuc2Nhbm5lci5zY2FubmVyKHN0cmluZykubWF0Y2gKICAgICAgICAgaSA9IDAKLSAgICAgICAgd2hpbGUgMToKKyAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIG0gPSBtYXRjaCgpCiAgICAgICAgICAgICBpZiBub3QgbToKICAgICAgICAgICAgICAgICBicmVhawpkaWZmIC0tZ2l0IGEvTGliL3JlcHJsaWIucHkgYi9MaWIvcmVwcmxpYi5weQppbmRleCBmODAzMzYwLi5lY2JkMmNjIDEwMDY0NAotLS0gYS9MaWIvcmVwcmxpYi5weQorKysgYi9MaWIvcmVwcmxpYi5weQpAQCAtODMsMTYgKzgzLDIyIEBACiAgICAgICAgIHJldHVybiBzZWxmLl9yZXByX2l0ZXJhYmxlKHgsIGxldmVsLCAnWycsICddJywgc2VsZi5tYXhsaXN0KQogCiAgICAgZGVmIHJlcHJfYXJyYXkoc2VsZiwgeCwgbGV2ZWwpOgorICAgICAgICBpZiBub3QgeDoKKyAgICAgICAgICAgIHJldHVybiAiYXJyYXkoJyVzJykiICUgeC50eXBlY29kZQogICAgICAgICBoZWFkZXIgPSAiYXJyYXkoJyVzJywgWyIgJSB4LnR5cGVjb2RlCiAgICAgICAgIHJldHVybiBzZWxmLl9yZXByX2l0ZXJhYmxlKHgsIGxldmVsLCBoZWFkZXIsICddKScsIHNlbGYubWF4YXJyYXkpCiAKICAgICBkZWYgcmVwcl9zZXQoc2VsZiwgeCwgbGV2ZWwpOgorICAgICAgICBpZiBub3QgeDoKKyAgICAgICAgICAgIHJldHVybiAnc2V0KCknCiAgICAgICAgIHggPSBfcG9zc2libHlfc29ydGVkKHgpCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXByX2l0ZXJhYmxlKHgsIGxldmVsLCAnc2V0KFsnLCAnXSknLCBzZWxmLm1heHNldCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlcHJfaXRlcmFibGUoeCwgbGV2ZWwsICd7JywgJ30nLCBzZWxmLm1heHNldCkKIAogICAgIGRlZiByZXByX2Zyb3plbnNldChzZWxmLCB4LCBsZXZlbCk6CisgICAgICAgIGlmIG5vdCB4OgorICAgICAgICAgICAgcmV0dXJuICdmcm96ZW5zZXQoKScKICAgICAgICAgeCA9IF9wb3NzaWJseV9zb3J0ZWQoeCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlcHJfaXRlcmFibGUoeCwgbGV2ZWwsICdmcm96ZW5zZXQoWycsICddKScsCisgICAgICAgIHJldHVybiBzZWxmLl9yZXByX2l0ZXJhYmxlKHgsIGxldmVsLCAnZnJvemVuc2V0KHsnLCAnfSknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1heGZyb3plbnNldCkKIAogICAgIGRlZiByZXByX2RlcXVlKHNlbGYsIHgsIGxldmVsKToKQEAgLTEzNiw3ICsxNDIsNyBAQAogICAgICAgICAgICAgIyBCdWdzIGluIHguX19yZXByX18oKSBjYW4gY2F1c2UgYXJiaXRyYXJ5CiAgICAgICAgICAgICAjIGV4Y2VwdGlvbnMgLS0gdGhlbiBtYWtlIHVwIHNvbWV0aGluZwogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgcmV0dXJuICc8JXMgaW5zdGFuY2UgYXQgJXg+JyAlICh4Ll9fY2xhc3NfXy5fX25hbWVfXywgaWQoeCkpCisgICAgICAgICAgICByZXR1cm4gJzwlcyBpbnN0YW5jZSBhdCAlI3g+JyAlICh4Ll9fY2xhc3NfXy5fX25hbWVfXywgaWQoeCkpCiAgICAgICAgIGlmIGxlbihzKSA+IHNlbGYubWF4b3RoZXI6CiAgICAgICAgICAgICBpID0gbWF4KDAsIChzZWxmLm1heG90aGVyLTMpLy8yKQogICAgICAgICAgICAgaiA9IG1heCgwLCBzZWxmLm1heG90aGVyLTMtaSkKZGlmZiAtLWdpdCBhL0xpYi9ydW5weS5weSBiL0xpYi9ydW5weS5weQppbmRleCAwYmI1N2Q3Li5hZjYyMDVkIDEwMDY0NAotLS0gYS9MaWIvcnVucHkucHkKKysrIGIvTGliL3J1bnB5LnB5CkBAIC01OCw3ICs1OCw3IEBACiAgICAgICAgIHNlbGYudmFsdWUgPSBzZWxmLl9zZW50aW5lbAogICAgICAgICBzeXMuYXJndlswXSA9IHNlbGYuX3NhdmVkX3ZhbHVlCiAKLSMgVE9ETzogUmVwbGFjZSB0aGVzZSBoZWxwZXJzIHdpdGggaW1wb3J0bGliLl9ib290c3RyYXAuX1NwZWNNZXRob2RzCisjIFRPRE86IFJlcGxhY2UgdGhlc2UgaGVscGVycyB3aXRoIGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsIGZ1bmN0aW9ucy4KIGRlZiBfcnVuX2NvZGUoY29kZSwgcnVuX2dsb2JhbHMsIGluaXRfZ2xvYmFscz1Ob25lLAogICAgICAgICAgICAgICBtb2RfbmFtZT1Ob25lLCBtb2Rfc3BlYz1Ob25lLAogICAgICAgICAgICAgICBwa2dfbmFtZT1Ob25lLCBzY3JpcHRfbmFtZT1Ob25lKToKQEAgLTk5LDcgKzk5LDIyIEBACiAgICAgcmV0dXJuIG1vZF9nbG9iYWxzLmNvcHkoKQogCiAjIEhlbHBlciB0byBnZXQgdGhlIGxvYWRlciwgY29kZSBhbmQgZmlsZW5hbWUgZm9yIGEgbW9kdWxlCi1kZWYgX2dldF9tb2R1bGVfZGV0YWlscyhtb2RfbmFtZSk6CitkZWYgX2dldF9tb2R1bGVfZGV0YWlscyhtb2RfbmFtZSwgZXJyb3I9SW1wb3J0RXJyb3IpOgorICAgIGlmIG1vZF9uYW1lLnN0YXJ0c3dpdGgoIi4iKToKKyAgICAgICAgcmFpc2UgZXJyb3IoIlJlbGF0aXZlIG1vZHVsZSBuYW1lcyBub3Qgc3VwcG9ydGVkIikKKyAgICBwa2dfbmFtZSwgXywgXyA9IG1vZF9uYW1lLnJwYXJ0aXRpb24oIi4iKQorICAgIGlmIHBrZ19uYW1lOgorICAgICAgICAjIFRyeSBpbXBvcnRpbmcgdGhlIHBhcmVudCB0byBhdm9pZCBjYXRjaGluZyBpbml0aWFsaXphdGlvbiBlcnJvcnMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX19pbXBvcnRfXyhwa2dfbmFtZSkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6CisgICAgICAgICAgICAjIElmIHRoZSBwYXJlbnQgb3IgaGlnaGVyIGFuY2VzdG9yIHBhY2thZ2UgaXMgbWlzc2luZywgbGV0IHRoZQorICAgICAgICAgICAgIyBlcnJvciBiZSByYWlzZWQgYnkgZmluZF9zcGVjKCkgYmVsb3cgYW5kIHRoZW4gYmUgY2F1Z2h0LiBCdXQgZG8KKyAgICAgICAgICAgICMgbm90IGFsbG93IG90aGVyIGVycm9ycyB0byBiZSBjYXVnaHQuCisgICAgICAgICAgICBpZiBlLm5hbWUgaXMgTm9uZSBvciAoZS5uYW1lICE9IHBrZ19uYW1lIGFuZAorICAgICAgICAgICAgICAgICAgICBub3QgcGtnX25hbWUuc3RhcnRzd2l0aChlLm5hbWUgKyAiLiIpKToKKyAgICAgICAgICAgICAgICByYWlzZQorCiAgICAgdHJ5OgogICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKG1vZF9uYW1lKQogICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBUeXBlRXJyb3IsIFZhbHVlRXJyb3IpIGFzIGV4OgpAQCAtMTA3LDI3ICsxMjIsMzUgQEAKICAgICAgICAgIyBpbXBvcnRsaWIsIHdoZXJlIHRoZSBsYXR0ZXIgcmFpc2VzIG90aGVyIGVycm9ycyBmb3IgY2FzZXMgd2hlcmUKICAgICAgICAgIyBwa2d1dGlsIHByZXZpb3VzbHkgcmFpc2VkIEltcG9ydEVycm9yCiAgICAgICAgIG1zZyA9ICJFcnJvciB3aGlsZSBmaW5kaW5nIHNwZWMgZm9yIHshcn0gKHt9OiB7fSkiCi0gICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQobW9kX25hbWUsIHR5cGUoZXgpLCBleCkpIGZyb20gZXgKKyAgICAgICAgcmFpc2UgZXJyb3IobXNnLmZvcm1hdChtb2RfbmFtZSwgdHlwZShleCkuX19uYW1lX18sIGV4KSkgZnJvbSBleAogICAgIGlmIHNwZWMgaXMgTm9uZToKLSAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIk5vIG1vZHVsZSBuYW1lZCAlcyIgJSBtb2RfbmFtZSkKKyAgICAgICAgcmFpc2UgZXJyb3IoIk5vIG1vZHVsZSBuYW1lZCAlcyIgJSBtb2RfbmFtZSkKICAgICBpZiBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIGlzIG5vdCBOb25lOgogICAgICAgICBpZiBtb2RfbmFtZSA9PSAiX19tYWluX18iIG9yIG1vZF9uYW1lLmVuZHN3aXRoKCIuX19tYWluX18iKToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJDYW5ub3QgdXNlIHBhY2thZ2UgYXMgX19tYWluX18gbW9kdWxlIikKKyAgICAgICAgICAgIHJhaXNlIGVycm9yKCJDYW5ub3QgdXNlIHBhY2thZ2UgYXMgX19tYWluX18gbW9kdWxlIikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcGtnX21haW5fbmFtZSA9IG1vZF9uYW1lICsgIi5fX21haW5fXyIKLSAgICAgICAgICAgIHJldHVybiBfZ2V0X21vZHVsZV9kZXRhaWxzKHBrZ19tYWluX25hbWUpCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoKCIlczsgJXIgaXMgYSBwYWNrYWdlIGFuZCBjYW5ub3QgIiArCisgICAgICAgICAgICByZXR1cm4gX2dldF9tb2R1bGVfZGV0YWlscyhwa2dfbWFpbl9uYW1lLCBlcnJvcikKKyAgICAgICAgZXhjZXB0IGVycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBtb2RfbmFtZSBub3QgaW4gc3lzLm1vZHVsZXM6CisgICAgICAgICAgICAgICAgcmFpc2UgICMgTm8gbW9kdWxlIGxvYWRlZDsgYmVpbmcgYSBwYWNrYWdlIGlzIGlycmVsZXZhbnQKKyAgICAgICAgICAgIHJhaXNlIGVycm9yKCgiJXM7ICVyIGlzIGEgcGFja2FnZSBhbmQgY2Fubm90ICIgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZSBkaXJlY3RseSBleGVjdXRlZCIpICUoZSwgbW9kX25hbWUpKQogICAgIGxvYWRlciA9IHNwZWMubG9hZGVyCiAgICAgaWYgbG9hZGVyIGlzIE5vbmU6Ci0gICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCIlciBpcyBhIG5hbWVzcGFjZSBwYWNrYWdlIGFuZCBjYW5ub3QgYmUgZXhlY3V0ZWQiCisgICAgICAgIHJhaXNlIGVycm9yKCIlciBpcyBhIG5hbWVzcGFjZSBwYWNrYWdlIGFuZCBjYW5ub3QgYmUgZXhlY3V0ZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbW9kX25hbWUpCi0gICAgY29kZSA9IGxvYWRlci5nZXRfY29kZShtb2RfbmFtZSkKKyAgICB0cnk6CisgICAgICAgIGNvZGUgPSBsb2FkZXIuZ2V0X2NvZGUobW9kX25hbWUpCisgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6CisgICAgICAgIHJhaXNlIGVycm9yKGZvcm1hdChlKSkgZnJvbSBlCiAgICAgaWYgY29kZSBpcyBOb25lOgotICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiTm8gY29kZSBvYmplY3QgYXZhaWxhYmxlIGZvciAlcyIgJSBtb2RfbmFtZSkKKyAgICAgICAgcmFpc2UgZXJyb3IoIk5vIGNvZGUgb2JqZWN0IGF2YWlsYWJsZSBmb3IgJXMiICUgbW9kX25hbWUpCiAgICAgcmV0dXJuIG1vZF9uYW1lLCBzcGVjLCBjb2RlCiAKK2NsYXNzIF9FcnJvcihFeGNlcHRpb24pOgorICAgICIiIkVycm9yIHRoYXQgX3J1bl9tb2R1bGVfYXNfbWFpbigpIHNob3VsZCByZXBvcnQgd2l0aG91dCBhIHRyYWNlYmFjayIiIgorCiAjIFhYWCBuY29naGxhbjogU2hvdWxkIHRoaXMgYmUgZG9jdW1lbnRlZCBhbmQgbWFkZSBwdWJsaWM/CiAjIChDdXJyZW50IHRob3VnaHRzOiBkb24ndCByZXBlYXQgdGhlIG1pc3Rha2UgdGhhdCBsZWFkIHRvIGl0cwogIyBjcmVhdGlvbiB3aGVuIHJ1bl9tb2R1bGUoKSBubyBsb25nZXIgbWV0IHRoZSBuZWVkcyBvZgpAQCAtMTQ4LDIwICsxNzEsMTEgQEAKICAgICAiIiIKICAgICB0cnk6CiAgICAgICAgIGlmIGFsdGVyX2FyZ3Ygb3IgbW9kX25hbWUgIT0gIl9fbWFpbl9fIjogIyBpLmUuIC1tIHN3aXRjaAotICAgICAgICAgICAgbW9kX25hbWUsIG1vZF9zcGVjLCBjb2RlID0gX2dldF9tb2R1bGVfZGV0YWlscyhtb2RfbmFtZSkKKyAgICAgICAgICAgIG1vZF9uYW1lLCBtb2Rfc3BlYywgY29kZSA9IF9nZXRfbW9kdWxlX2RldGFpbHMobW9kX25hbWUsIF9FcnJvcikKICAgICAgICAgZWxzZTogICAgICAgICAgIyBpLmUuIGRpcmVjdG9yeSBvciB6aXBmaWxlIGV4ZWN1dGlvbgotICAgICAgICAgICAgbW9kX25hbWUsIG1vZF9zcGVjLCBjb2RlID0gX2dldF9tYWluX21vZHVsZV9kZXRhaWxzKCkKLSAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgotICAgICAgICAjIFRyeSB0byBwcm92aWRlIGEgZ29vZCBlcnJvciBtZXNzYWdlCi0gICAgICAgICMgZm9yIGRpcmVjdG9yaWVzLCB6aXAgZmlsZXMgYW5kIHRoZSAtbSBzd2l0Y2gKLSAgICAgICAgaWYgYWx0ZXJfYXJndjoKLSAgICAgICAgICAgICMgRm9yIC1tIHN3aXRjaCwganVzdCBkaXNwbGF5IHRoZSBleGNlcHRpb24KLSAgICAgICAgICAgIGluZm8gPSBzdHIoZXhjKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBGb3IgZGlyZWN0b3JpZXMvemlwZmlsZXMsIGxldCB0aGUgdXNlcgotICAgICAgICAgICAgIyBrbm93IHdoYXQgdGhlIGNvZGUgd2FzIGxvb2tpbmcgZm9yCi0gICAgICAgICAgICBpbmZvID0gImNhbid0IGZpbmQgJ19fbWFpbl9fJyBtb2R1bGUgaW4gJXIiICUgc3lzLmFyZ3ZbMF0KLSAgICAgICAgbXNnID0gIiVzOiAlcyIgJSAoc3lzLmV4ZWN1dGFibGUsIGluZm8pCisgICAgICAgICAgICBtb2RfbmFtZSwgbW9kX3NwZWMsIGNvZGUgPSBfZ2V0X21haW5fbW9kdWxlX2RldGFpbHMoX0Vycm9yKQorICAgIGV4Y2VwdCBfRXJyb3IgYXMgZXhjOgorICAgICAgICBtc2cgPSAiJXM6ICVzIiAlIChzeXMuZXhlY3V0YWJsZSwgZXhjKQogICAgICAgICBzeXMuZXhpdChtc2cpCiAgICAgbWFpbl9nbG9iYWxzID0gc3lzLm1vZHVsZXNbIl9fbWFpbl9fIl0uX19kaWN0X18KICAgICBpZiBhbHRlcl9hcmd2OgpAQCAtMTg0LDcgKzE5OCw3IEBACiAgICAgICAgICMgTGVhdmUgdGhlIHN5cyBtb2R1bGUgYWxvbmUKICAgICAgICAgcmV0dXJuIF9ydW5fY29kZShjb2RlLCB7fSwgaW5pdF9nbG9iYWxzLCBydW5fbmFtZSwgbW9kX3NwZWMpCiAKLWRlZiBfZ2V0X21haW5fbW9kdWxlX2RldGFpbHMoKToKK2RlZiBfZ2V0X21haW5fbW9kdWxlX2RldGFpbHMoZXJyb3I9SW1wb3J0RXJyb3IpOgogICAgICMgSGVscGVyIHRoYXQgZ2l2ZXMgYSBuaWNlciBlcnJvciBtZXNzYWdlIHdoZW4gYXR0ZW1wdGluZyB0bwogICAgICMgZXhlY3V0ZSBhIHppcGZpbGUgb3IgZGlyZWN0b3J5IGJ5IGludm9raW5nIF9fbWFpbl9fLnB5CiAgICAgIyBBbHNvIG1vdmVzIHRoZSBzdGFuZGFyZCBfX21haW5fXyBvdXQgb2YgdGhlIHdheSBzbyB0aGF0IHRoZQpAQCAtMTk2LDcgKzIxMCw3IEBACiAgICAgICAgIHJldHVybiBfZ2V0X21vZHVsZV9kZXRhaWxzKG1haW5fbmFtZSkKICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgogICAgICAgICBpZiBtYWluX25hbWUgaW4gc3RyKGV4Yyk6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiY2FuJ3QgZmluZCAlciBtb2R1bGUgaW4gJXIiICUKKyAgICAgICAgICAgIHJhaXNlIGVycm9yKCJjYW4ndCBmaW5kICVyIG1vZHVsZSBpbiAlciIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1haW5fbmFtZSwgc3lzLnBhdGhbMF0pKSBmcm9tIGV4YwogICAgICAgICByYWlzZQogICAgIGZpbmFsbHk6CmRpZmYgLS1naXQgYS9MaWIvc2NoZWQucHkgYi9MaWIvc2NoZWQucHkKaW5kZXggMmU2YjAwYS4uYjQ3NjQ4ZCAxMDA2NDQKLS0tIGEvTGliL3NjaGVkLnB5CisrKyBiL0xpYi9zY2hlZC5weQpAQCAtMzUsMTYgKzM1LDEyIEBACiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGltcG9ydCBkdW1teV90aHJlYWRpbmcgYXMgdGhyZWFkaW5nCi10cnk6Ci0gICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKK2Zyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCiAKIF9fYWxsX18gPSBbInNjaGVkdWxlciJdCiAKIGNsYXNzIEV2ZW50KG5hbWVkdHVwbGUoJ0V2ZW50JywgJ3RpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50LCBrd2FyZ3MnKSk6CiAgICAgZGVmIF9fZXFfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpID09IChvLnRpbWUsIG8ucHJpb3JpdHkpCi0gICAgZGVmIF9fbmVfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpICE9IChvLnRpbWUsIG8ucHJpb3JpdHkpCiAgICAgZGVmIF9fbHRfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpIDwgIChvLnRpbWUsIG8ucHJpb3JpdHkpCiAgICAgZGVmIF9fbGVfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpIDw9IChvLnRpbWUsIG8ucHJpb3JpdHkpCiAgICAgZGVmIF9fZ3RfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpID4gIChvLnRpbWUsIG8ucHJpb3JpdHkpCmRpZmYgLS1naXQgYS9MaWIvc2VsZWN0b3JzLnB5IGIvTGliL3NlbGVjdG9ycy5weQppbmRleCA3YjZkYTI5Li42ZDU2OWMzIDEwMDY0NAotLS0gYS9MaWIvc2VsZWN0b3JzLnB5CisrKyBiL0xpYi9zZWxlY3RvcnMucHkKQEAgLTE3NCw5ICsxNzQsOSBAQAogICAgICAgICBTZWxlY3RvcktleSBmb3IgdGhpcyBmaWxlIG9iamVjdAogICAgICAgICAiIiIKICAgICAgICAgbWFwcGluZyA9IHNlbGYuZ2V0X21hcCgpCisgICAgICAgIGlmIG1hcHBpbmcgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignU2VsZWN0b3IgaXMgY2xvc2VkJykKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgbWFwcGluZyBpcyBOb25lOgotICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yCiAgICAgICAgICAgICByZXR1cm4gbWFwcGluZ1tmaWxlb2JqXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcigieyFyfSBpcyBub3QgcmVnaXN0ZXJlZCIuZm9ybWF0KGZpbGVvYmopKSBmcm9tIE5vbmUKQEAgLTQ0NSwxMCArNDQ1LDY2IEBACiAgICAgICAgICAgICByZXR1cm4gcmVhZHkKIAogICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICAgICBzZWxmLl9lcG9sbC5jbG9zZSgpCisgICAgICAgICAgICBzdXBlcigpLmNsb3NlKCkKKworCitpZiBoYXNhdHRyKHNlbGVjdCwgJ2RldnBvbGwnKToKKworICAgIGNsYXNzIERldnBvbGxTZWxlY3RvcihfQmFzZVNlbGVjdG9ySW1wbCk6CisgICAgICAgICIiIlNvbGFyaXMgL2Rldi9wb2xsIHNlbGVjdG9yLiIiIgorCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQorICAgICAgICAgICAgc2VsZi5fZGV2cG9sbCA9IHNlbGVjdC5kZXZwb2xsKCkKKworICAgICAgICBkZWYgZmlsZW5vKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2RldnBvbGwuZmlsZW5vKCkKKworICAgICAgICBkZWYgcmVnaXN0ZXIoc2VsZiwgZmlsZW9iaiwgZXZlbnRzLCBkYXRhPU5vbmUpOgorICAgICAgICAgICAga2V5ID0gc3VwZXIoKS5yZWdpc3RlcihmaWxlb2JqLCBldmVudHMsIGRhdGEpCisgICAgICAgICAgICBwb2xsX2V2ZW50cyA9IDAKKyAgICAgICAgICAgIGlmIGV2ZW50cyAmIEVWRU5UX1JFQUQ6CisgICAgICAgICAgICAgICAgcG9sbF9ldmVudHMgfD0gc2VsZWN0LlBPTExJTgorICAgICAgICAgICAgaWYgZXZlbnRzICYgRVZFTlRfV1JJVEU6CisgICAgICAgICAgICAgICAgcG9sbF9ldmVudHMgfD0gc2VsZWN0LlBPTExPVVQKKyAgICAgICAgICAgIHNlbGYuX2RldnBvbGwucmVnaXN0ZXIoa2V5LmZkLCBwb2xsX2V2ZW50cykKKyAgICAgICAgICAgIHJldHVybiBrZXkKKworICAgICAgICBkZWYgdW5yZWdpc3RlcihzZWxmLCBmaWxlb2JqKToKKyAgICAgICAgICAgIGtleSA9IHN1cGVyKCkudW5yZWdpc3RlcihmaWxlb2JqKQorICAgICAgICAgICAgc2VsZi5fZGV2cG9sbC51bnJlZ2lzdGVyKGtleS5mZCkKKyAgICAgICAgICAgIHJldHVybiBrZXkKKworICAgICAgICBkZWYgc2VsZWN0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IE5vbmUKKyAgICAgICAgICAgIGVsaWYgdGltZW91dCA8PSAwOgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSAwCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgZGV2cG9sbCgpIGhhcyBhIHJlc29sdXRpb24gb2YgMSBtaWxsaXNlY29uZCwgcm91bmQgYXdheSBmcm9tCisgICAgICAgICAgICAgICAgIyB6ZXJvIHRvIHdhaXQgKmF0IGxlYXN0KiB0aW1lb3V0IHNlY29uZHMuCisgICAgICAgICAgICAgICAgdGltZW91dCA9IG1hdGguY2VpbCh0aW1lb3V0ICogMWUzKQorICAgICAgICAgICAgcmVhZHkgPSBbXQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuX2Vwb2xsLmNsb3NlKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc3VwZXIoKS5jbG9zZSgpCisgICAgICAgICAgICAgICAgZmRfZXZlbnRfbGlzdCA9IHNlbGYuX2RldnBvbGwucG9sbCh0aW1lb3V0KQorICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWR5CisgICAgICAgICAgICBmb3IgZmQsIGV2ZW50IGluIGZkX2V2ZW50X2xpc3Q6CisgICAgICAgICAgICAgICAgZXZlbnRzID0gMAorICAgICAgICAgICAgICAgIGlmIGV2ZW50ICYgfnNlbGVjdC5QT0xMSU46CisgICAgICAgICAgICAgICAgICAgIGV2ZW50cyB8PSBFVkVOVF9XUklURQorICAgICAgICAgICAgICAgIGlmIGV2ZW50ICYgfnNlbGVjdC5QT0xMT1VUOgorICAgICAgICAgICAgICAgICAgICBldmVudHMgfD0gRVZFTlRfUkVBRAorCisgICAgICAgICAgICAgICAga2V5ID0gc2VsZi5fa2V5X2Zyb21fZmQoZmQpCisgICAgICAgICAgICAgICAgaWYga2V5OgorICAgICAgICAgICAgICAgICAgICByZWFkeS5hcHBlbmQoKGtleSwgZXZlbnRzICYga2V5LmV2ZW50cykpCisgICAgICAgICAgICByZXR1cm4gcmVhZHkKKworICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICAgICBzZWxmLl9kZXZwb2xsLmNsb3NlKCkKKyAgICAgICAgICAgIHN1cGVyKCkuY2xvc2UoKQogCiAKIGlmIGhhc2F0dHIoc2VsZWN0LCAna3F1ZXVlJyk6CkBAIC01MTksMTggKzU3NSwxOSBAQAogICAgICAgICAgICAgcmV0dXJuIHJlYWR5CiAKICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuX2txdWV1ZS5jbG9zZSgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHN1cGVyKCkuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5fa3F1ZXVlLmNsb3NlKCkKKyAgICAgICAgICAgIHN1cGVyKCkuY2xvc2UoKQogCiAKLSMgQ2hvb3NlIHRoZSBiZXN0IGltcGxlbWVudGF0aW9uOiByb3VnaGx5LCBlcG9sbHxrcXVldWUgPiBwb2xsID4gc2VsZWN0LgorIyBDaG9vc2UgdGhlIGJlc3QgaW1wbGVtZW50YXRpb24sIHJvdWdobHk6CisjICAgIGVwb2xsfGtxdWV1ZXxkZXZwb2xsID4gcG9sbCA+IHNlbGVjdC4KICMgc2VsZWN0KCkgYWxzbyBjYW4ndCBhY2NlcHQgYSBGRCA+IEZEX1NFVFNJWkUgKHVzdWFsbHkgYXJvdW5kIDEwMjQpCiBpZiAnS3F1ZXVlU2VsZWN0b3InIGluIGdsb2JhbHMoKToKICAgICBEZWZhdWx0U2VsZWN0b3IgPSBLcXVldWVTZWxlY3RvcgogZWxpZiAnRXBvbGxTZWxlY3RvcicgaW4gZ2xvYmFscygpOgogICAgIERlZmF1bHRTZWxlY3RvciA9IEVwb2xsU2VsZWN0b3IKK2VsaWYgJ0RldnBvbGxTZWxlY3RvcicgaW4gZ2xvYmFscygpOgorICAgIERlZmF1bHRTZWxlY3RvciA9IERldnBvbGxTZWxlY3RvcgogZWxpZiAnUG9sbFNlbGVjdG9yJyBpbiBnbG9iYWxzKCk6CiAgICAgRGVmYXVsdFNlbGVjdG9yID0gUG9sbFNlbGVjdG9yCiBlbHNlOgpkaWZmIC0tZ2l0IGEvTGliL3NobGV4LnB5IGIvTGliL3NobGV4LnB5CmluZGV4IDQ2NzI1NTMuLmYwODM5MTggMTAwNjQ0Ci0tLSBhL0xpYi9zaGxleC5weQorKysgYi9MaWIvc2hsZXgucHkKQEAgLTQ5LDkgKzQ5LDYgQEAKICAgICAgICAgc2VsZi50b2tlbiA9ICcnCiAgICAgICAgIHNlbGYuZmlsZXN0YWNrID0gZGVxdWUoKQogICAgICAgICBzZWxmLnNvdXJjZSA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi5kZWJ1ZzoKLSAgICAgICAgICAgIHByaW50KCdzaGxleDogcmVhZGluZyBmcm9tICVzLCBsaW5lICVkJyBcCi0gICAgICAgICAgICAgICAgICAlIChzZWxmLmluc3RyZWFtLCBzZWxmLmxpbmVubykpCiAKICAgICBkZWYgcHVzaF90b2tlbihzZWxmLCB0b2spOgogICAgICAgICAiUHVzaCBhIHRva2VuIG9udG8gdGhlIHN0YWNrIHBvcHBlZCBieSB0aGUgZ2V0X3Rva2VuIG1ldGhvZCIKZGlmZiAtLWdpdCBhL0xpYi9zaHV0aWwucHkgYi9MaWIvc2h1dGlsLnB5CmluZGV4IGQ3NjdhMGMuLjNmNGI2YmYgMTAwNjQ0Ci0tLSBhL0xpYi9zaHV0aWwucHkKKysrIGIvTGliL3NodXRpbC5weQpAQCAtNyw3ICs3LDYgQEAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHN0YXQKLWZyb20gb3MucGF0aCBpbXBvcnQgYWJzcGF0aAogaW1wb3J0IGZubWF0Y2gKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGVycm5vCkBAIC0yMSw2ICsyMCwxMyBAQAogICAgIF9CWjJfU1VQUE9SVEVEID0gRmFsc2UKIAogdHJ5OgorICAgIGltcG9ydCBsem1hCisgICAgZGVsIGx6bWEKKyAgICBfTFpNQV9TVVBQT1JURUQgPSBUcnVlCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX0xaTUFfU1VQUE9SVEVEID0gRmFsc2UKKwordHJ5OgogICAgIGZyb20gcHdkIGltcG9ydCBnZXRwd25hbQogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGdldHB3bmFtID0gTm9uZQpAQCAtNDkxLDcgKzQ5Nyw3IEBACiAgICAgc2VwID0gb3MucGF0aC5zZXAgKyAob3MucGF0aC5hbHRzZXAgb3IgJycpCiAgICAgcmV0dXJuIG9zLnBhdGguYmFzZW5hbWUocGF0aC5yc3RyaXAoc2VwKSkKIAotZGVmIG1vdmUoc3JjLCBkc3QpOgorZGVmIG1vdmUoc3JjLCBkc3QsIGNvcHlfZnVuY3Rpb249Y29weTIpOgogICAgICIiIlJlY3Vyc2l2ZWx5IG1vdmUgYSBmaWxlIG9yIGRpcmVjdG9yeSB0byBhbm90aGVyIGxvY2F0aW9uLiBUaGlzIGlzCiAgICAgc2ltaWxhciB0byB0aGUgVW5peCAibXYiIGNvbW1hbmQuIFJldHVybiB0aGUgZmlsZSBvciBkaXJlY3RvcnkncwogICAgIGRlc3RpbmF0aW9uLgpAQCAtNTA4LDYgKzUxNCwxMSBAQAogICAgIHJlY3JlYXRlZCB1bmRlciB0aGUgbmV3IG5hbWUgaWYgb3MucmVuYW1lKCkgZmFpbHMgYmVjYXVzZSBvZiBjcm9zcwogICAgIGZpbGVzeXN0ZW0gcmVuYW1lcy4KIAorICAgIFRoZSBvcHRpb25hbCBgY29weV9mdW5jdGlvbmAgYXJndW1lbnQgaXMgYSBjYWxsYWJsZSB0aGF0IHdpbGwgYmUgdXNlZAorICAgIHRvIGNvcHkgdGhlIHNvdXJjZSBvciBpdCB3aWxsIGJlIGRlbGVnYXRlZCB0byBgY29weXRyZWVgLgorICAgIEJ5IGRlZmF1bHQsIGNvcHkyKCkgaXMgdXNlZCwgYnV0IGFueSBmdW5jdGlvbiB0aGF0IHN1cHBvcnRzIHRoZSBzYW1lCisgICAgc2lnbmF0dXJlIChsaWtlIGNvcHkoKSkgY2FuIGJlIHVzZWQuCisKICAgICBBIGxvdCBtb3JlIGNvdWxkIGJlIGRvbmUgaGVyZS4uLiAgQSBsb29rIGF0IGEgbXYuYyBzaG93cyBhIGxvdCBvZgogICAgIHRoZSBpc3N1ZXMgdGhpcyBpbXBsZW1lbnRhdGlvbiBnbG9zc2VzIG92ZXIuCiAKQEAgLTUzMiwxNyArNTQzLDE5IEBACiAgICAgICAgICAgICBvcy51bmxpbmsoc3JjKQogICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoc3JjKToKICAgICAgICAgICAgIGlmIF9kZXN0aW5zcmMoc3JjLCBkc3QpOgotICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKCJDYW5ub3QgbW92ZSBhIGRpcmVjdG9yeSAnJXMnIGludG8gaXRzZWxmICclcycuIiAlIChzcmMsIGRzdCkpCi0gICAgICAgICAgICBjb3B5dHJlZShzcmMsIHJlYWxfZHN0LCBzeW1saW5rcz1UcnVlKQorICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKCJDYW5ub3QgbW92ZSBhIGRpcmVjdG9yeSAnJXMnIGludG8gaXRzZWxmIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgJyVzJy4iICUgKHNyYywgZHN0KSkKKyAgICAgICAgICAgIGNvcHl0cmVlKHNyYywgcmVhbF9kc3QsIGNvcHlfZnVuY3Rpb249Y29weV9mdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzPVRydWUpCiAgICAgICAgICAgICBybXRyZWUoc3JjKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgY29weTIoc3JjLCByZWFsX2RzdCkKKyAgICAgICAgICAgIGNvcHlfZnVuY3Rpb24oc3JjLCByZWFsX2RzdCkKICAgICAgICAgICAgIG9zLnVubGluayhzcmMpCiAgICAgcmV0dXJuIHJlYWxfZHN0CiAKIGRlZiBfZGVzdGluc3JjKHNyYywgZHN0KToKLSAgICBzcmMgPSBhYnNwYXRoKHNyYykKLSAgICBkc3QgPSBhYnNwYXRoKGRzdCkKKyAgICBzcmMgPSBvcy5wYXRoLmFic3BhdGgoc3JjKQorICAgIGRzdCA9IG9zLnBhdGguYWJzcGF0aChkc3QpCiAgICAgaWYgbm90IHNyYy5lbmRzd2l0aChvcy5wYXRoLnNlcCk6CiAgICAgICAgIHNyYyArPSBvcy5wYXRoLnNlcAogICAgIGlmIG5vdCBkc3QuZW5kc3dpdGgob3MucGF0aC5zZXApOgpAQCAtNTc4LDE0ICs1OTEsMTQgQEAKICAgICAiIiJDcmVhdGUgYSAocG9zc2libHkgY29tcHJlc3NlZCkgdGFyIGZpbGUgZnJvbSBhbGwgdGhlIGZpbGVzIHVuZGVyCiAgICAgJ2Jhc2VfZGlyJy4KIAotICAgICdjb21wcmVzcycgbXVzdCBiZSAiZ3ppcCIgKHRoZSBkZWZhdWx0KSwgImJ6aXAyIiwgb3IgTm9uZS4KKyAgICAnY29tcHJlc3MnIG11c3QgYmUgImd6aXAiICh0aGUgZGVmYXVsdCksICJiemlwMiIsICJ4eiIsIG9yIE5vbmUuCiAKICAgICAnb3duZXInIGFuZCAnZ3JvdXAnIGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhbiBvd25lciBhbmQgYSBncm91cCBmb3IgdGhlCiAgICAgYXJjaGl2ZSB0aGF0IGlzIGJlaW5nIGJ1aWx0LiBJZiBub3QgcHJvdmlkZWQsIHRoZSBjdXJyZW50IG93bmVyIGFuZCBncm91cAogICAgIHdpbGwgYmUgdXNlZC4KIAogICAgIFRoZSBvdXRwdXQgdGFyIGZpbGUgd2lsbCBiZSBuYW1lZCAnYmFzZV9uYW1lJyArICAiLnRhciIsIHBvc3NpYmx5IHBsdXMKLSAgICB0aGUgYXBwcm9wcmlhdGUgY29tcHJlc3Npb24gZXh0ZW5zaW9uICgiLmd6Iiwgb3IgIi5iejIiKS4KKyAgICB0aGUgYXBwcm9wcmlhdGUgY29tcHJlc3Npb24gZXh0ZW5zaW9uICgiLmd6IiwgIi5iejIiLCBvciAiLnh6IikuCiAKICAgICBSZXR1cm5zIHRoZSBvdXRwdXQgZmlsZW5hbWUuCiAgICAgIiIiCkBAIC01OTYsNiArNjA5LDEwIEBACiAgICAgICAgIHRhcl9jb21wcmVzc2lvblsnYnppcDInXSA9ICdiejInCiAgICAgICAgIGNvbXByZXNzX2V4dFsnYnppcDInXSA9ICcuYnoyJwogCisgICAgaWYgX0xaTUFfU1VQUE9SVEVEOgorICAgICAgICB0YXJfY29tcHJlc3Npb25bJ3h6J10gPSAneHonCisgICAgICAgIGNvbXByZXNzX2V4dFsneHonXSA9ICcueHonCisKICAgICAjIGZsYWdzIGZvciBjb21wcmVzc2lvbiBwcm9ncmFtLCBlYWNoIGVsZW1lbnQgb2YgbGlzdCB3aWxsIGJlIGFuIGFyZ3VtZW50CiAgICAgaWYgY29tcHJlc3MgaXMgbm90IE5vbmUgYW5kIGNvbXByZXNzIG5vdCBpbiBjb21wcmVzc19leHQ6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJhZCB2YWx1ZSBmb3IgJ2NvbXByZXNzJywgb3IgY29tcHJlc3Npb24gZm9ybWF0IG5vdCAiCkBAIC02MzUsMjMgKzY1Miw2IEBACiAKICAgICByZXR1cm4gYXJjaGl2ZV9uYW1lCiAKLWRlZiBfY2FsbF9leHRlcm5hbF96aXAoYmFzZV9kaXIsIHppcF9maWxlbmFtZSwgdmVyYm9zZT1GYWxzZSwgZHJ5X3J1bj1GYWxzZSk6Ci0gICAgIyBYWFggc2VlIGlmIHdlIHdhbnQgdG8ga2VlcCBhbiBleHRlcm5hbCBjYWxsIGhlcmUKLSAgICBpZiB2ZXJib3NlOgotICAgICAgICB6aXBvcHRpb25zID0gIi1yIgotICAgIGVsc2U6Ci0gICAgICAgIHppcG9wdGlvbnMgPSAiLXJxIgotICAgIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzRXhlY0Vycm9yCi0gICAgZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IHNwYXduCi0gICAgdHJ5OgotICAgICAgICBzcGF3bihbInppcCIsIHppcG9wdGlvbnMsIHppcF9maWxlbmFtZSwgYmFzZV9kaXJdLCBkcnlfcnVuPWRyeV9ydW4pCi0gICAgZXhjZXB0IERpc3R1dGlsc0V4ZWNFcnJvcjoKLSAgICAgICAgIyBYWFggcmVhbGx5IHNob3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuICJjb3VsZG4ndCBmaW5kCi0gICAgICAgICMgZXh0ZXJuYWwgJ3ppcCcgY29tbWFuZCIgYW5kICJ6aXAgZmFpbGVkIi4KLSAgICAgICAgcmFpc2UgRXhlY0Vycm9yKCJ1bmFibGUgdG8gY3JlYXRlIHppcCBmaWxlICclcyc6ICIKLSAgICAgICAgICAgICJjb3VsZCBuZWl0aGVyIGltcG9ydCB0aGUgJ3ppcGZpbGUnIG1vZHVsZSBub3IgIgotICAgICAgICAgICAgImZpbmQgYSBzdGFuZGFsb25lIHppcCB1dGlsaXR5IikgJSB6aXBfZmlsZW5hbWUKLQogZGVmIF9tYWtlX3ppcGZpbGUoYmFzZV9uYW1lLCBiYXNlX2RpciwgdmVyYm9zZT0wLCBkcnlfcnVuPTAsIGxvZ2dlcj1Ob25lKToKICAgICAiIiJDcmVhdGUgYSB6aXAgZmlsZSBmcm9tIGFsbCB0aGUgZmlsZXMgdW5kZXIgJ2Jhc2VfZGlyJy4KIApAQCAtNjYxLDYgKzY2MSw4IEBACiAgICAgYXZhaWxhYmxlLCByYWlzZXMgRXhlY0Vycm9yLiAgUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgb3V0cHV0IHppcAogICAgIGZpbGUuCiAgICAgIiIiCisgICAgaW1wb3J0IHppcGZpbGUKKwogICAgIHppcF9maWxlbmFtZSA9IGJhc2VfbmFtZSArICIuemlwIgogICAgIGFyY2hpdmVfZGlyID0gb3MucGF0aC5kaXJuYW1lKGJhc2VfbmFtZSkKIApAQCAtNjcwLDM5ICs2NzIsMjkgQEAKICAgICAgICAgaWYgbm90IGRyeV9ydW46CiAgICAgICAgICAgICBvcy5tYWtlZGlycyhhcmNoaXZlX2RpcikKIAotICAgICMgSWYgemlwZmlsZSBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSwgdHJ5IHNwYXduaW5nIGFuIGV4dGVybmFsICd6aXAnCi0gICAgIyBjb21tYW5kLgotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHppcGZpbGUKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHppcGZpbGUgPSBOb25lCisgICAgaWYgbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICBsb2dnZXIuaW5mbygiY3JlYXRpbmcgJyVzJyBhbmQgYWRkaW5nICclcycgdG8gaXQiLAorICAgICAgICAgICAgICAgICAgICB6aXBfZmlsZW5hbWUsIGJhc2VfZGlyKQogCi0gICAgaWYgemlwZmlsZSBpcyBOb25lOgotICAgICAgICBfY2FsbF9leHRlcm5hbF96aXAoYmFzZV9kaXIsIHppcF9maWxlbmFtZSwgdmVyYm9zZSwgZHJ5X3J1bikKLSAgICBlbHNlOgotICAgICAgICBpZiBsb2dnZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBsb2dnZXIuaW5mbygiY3JlYXRpbmcgJyVzJyBhbmQgYWRkaW5nICclcycgdG8gaXQiLAotICAgICAgICAgICAgICAgICAgICAgICAgemlwX2ZpbGVuYW1lLCBiYXNlX2RpcikKLQotICAgICAgICBpZiBub3QgZHJ5X3J1bjoKLSAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKHppcF9maWxlbmFtZSwgInciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Npb249emlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHpmOgotICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLm5vcm1wYXRoKGJhc2VfZGlyKQotICAgICAgICAgICAgICAgIHpmLndyaXRlKHBhdGgsIHBhdGgpCi0gICAgICAgICAgICAgICAgaWYgbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiYWRkaW5nICclcyciLCBwYXRoKQotICAgICAgICAgICAgICAgIGZvciBkaXJwYXRoLCBkaXJuYW1lcywgZmlsZW5hbWVzIGluIG9zLndhbGsoYmFzZV9kaXIpOgotICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoZGlybmFtZXMpOgotICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKGRpcnBhdGgsIG5hbWUpKQorICAgIGlmIG5vdCBkcnlfcnVuOgorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZSh6aXBfZmlsZW5hbWUsICJ3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Npb249emlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHpmOgorICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGgubm9ybXBhdGgoYmFzZV9kaXIpCisgICAgICAgICAgICB6Zi53cml0ZShwYXRoLCBwYXRoKQorICAgICAgICAgICAgaWYgbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJhZGRpbmcgJyVzJyIsIHBhdGgpCisgICAgICAgICAgICBmb3IgZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcyBpbiBvcy53YWxrKGJhc2VfZGlyKToKKyAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoZGlybmFtZXMpOgorICAgICAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZGlycGF0aCwgbmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHpmLndyaXRlKHBhdGgsIHBhdGgpCisgICAgICAgICAgICAgICAgICAgIGlmIGxvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJhZGRpbmcgJyVzJyIsIHBhdGgpCisgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZW5hbWVzOgorICAgICAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZGlycGF0aCwgbmFtZSkpCisgICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpOgogICAgICAgICAgICAgICAgICAgICAgICAgemYud3JpdGUocGF0aCwgcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxvZ2dlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiYWRkaW5nICclcyciLCBwYXRoKQotICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlbmFtZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZGlycGF0aCwgbmFtZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB6Zi53cml0ZShwYXRoLCBwYXRoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxvZ2dlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oImFkZGluZyAnJXMnIiwgcGF0aCkKIAogICAgIHJldHVybiB6aXBfZmlsZW5hbWUKIApAQCAtNzE2LDYgKzcwOCwxMCBAQAogICAgIF9BUkNISVZFX0ZPUk1BVFNbJ2J6dGFyJ10gPSAoX21ha2VfdGFyYmFsbCwgWygnY29tcHJlc3MnLCAnYnppcDInKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiemlwMidlZCB0YXItZmlsZSIpCiAKK2lmIF9MWk1BX1NVUFBPUlRFRDoKKyAgICBfQVJDSElWRV9GT1JNQVRTWyd4enRhciddID0gKF9tYWtlX3RhcmJhbGwsIFsoJ2NvbXByZXNzJywgJ3h6JyldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieHonZWQgdGFyLWZpbGUiKQorCiBkZWYgZ2V0X2FyY2hpdmVfZm9ybWF0cygpOgogICAgICIiIlJldHVybnMgYSBsaXN0IG9mIHN1cHBvcnRlZCBmb3JtYXRzIGZvciBhcmNoaXZpbmcgYW5kIHVuYXJjaGl2aW5nLgogCkBAIC05MDQsNyArOTAwLDcgQEAKICAgICAgICAgemlwLmNsb3NlKCkKIAogZGVmIF91bnBhY2tfdGFyZmlsZShmaWxlbmFtZSwgZXh0cmFjdF9kaXIpOgotICAgICIiIlVucGFjayB0YXIvdGFyLmd6L3Rhci5iejIgYGZpbGVuYW1lYCB0byBgZXh0cmFjdF9kaXJgCisgICAgIiIiVW5wYWNrIHRhci90YXIuZ3ovdGFyLmJ6Mi90YXIueHogYGZpbGVuYW1lYCB0byBgZXh0cmFjdF9kaXJgCiAgICAgIiIiCiAgICAgdHJ5OgogICAgICAgICB0YXJvYmogPSB0YXJmaWxlLm9wZW4oZmlsZW5hbWUpCkBAIC05MjMsOSArOTE5LDEzIEBACiAgICAgfQogCiBpZiBfQloyX1NVUFBPUlRFRDoKLSAgICBfVU5QQUNLX0ZPUk1BVFNbJ2J6dGFyJ10gPSAoWycuYnoyJ10sIF91bnBhY2tfdGFyZmlsZSwgW10sCisgICAgX1VOUEFDS19GT1JNQVRTWydienRhciddID0gKFsnLnRhci5iejInLCAnLnRiejInXSwgX3VucGFja190YXJmaWxlLCBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ6aXAyJ2VkIHRhci1maWxlIikKIAoraWYgX0xaTUFfU1VQUE9SVEVEOgorICAgIF9VTlBBQ0tfRk9STUFUU1sneHp0YXInXSA9IChbJy50YXIueHonLCAnLnR4eiddLCBfdW5wYWNrX3RhcmZpbGUsIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieHonZWQgdGFyLWZpbGUiKQorCiBkZWYgX2ZpbmRfdW5wYWNrX2Zvcm1hdChmaWxlbmFtZSk6CiAgICAgZm9yIG5hbWUsIGluZm8gaW4gX1VOUEFDS19GT1JNQVRTLml0ZW1zKCk6CiAgICAgICAgIGZvciBleHRlbnNpb24gaW4gaW5mb1swXToKZGlmZiAtLWdpdCBhL0xpYi9zaWduYWwucHkgYi9MaWIvc2lnbmFsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmMDVjOTEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvc2lnbmFsLnB5CkBAIC0wLDAgKzEsNzkgQEAKK2ltcG9ydCBfc2lnbmFsCitmcm9tIF9zaWduYWwgaW1wb3J0ICoKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcyBhcyBfd3JhcHMKK2Zyb20gZW51bSBpbXBvcnQgSW50RW51bSBhcyBfSW50RW51bQorCitfZ2xvYmFscyA9IGdsb2JhbHMoKQorCitfSW50RW51bS5fY29udmVydCgKKyAgICAgICAgJ1NpZ25hbHMnLCBfX25hbWVfXywKKyAgICAgICAgbGFtYmRhIG5hbWU6CisgICAgICAgICAgICBuYW1lLmlzdXBwZXIoKQorICAgICAgICAgICAgYW5kIChuYW1lLnN0YXJ0c3dpdGgoJ1NJRycpIGFuZCBub3QgbmFtZS5zdGFydHN3aXRoKCdTSUdfJykpCisgICAgICAgICAgICBvciBuYW1lLnN0YXJ0c3dpdGgoJ0NUUkxfJykpCisKK19JbnRFbnVtLl9jb252ZXJ0KAorICAgICAgICAnSGFuZGxlcnMnLCBfX25hbWVfXywKKyAgICAgICAgbGFtYmRhIG5hbWU6IG5hbWUgaW4gKCdTSUdfREZMJywgJ1NJR19JR04nKSkKKworaWYgJ3B0aHJlYWRfc2lnbWFzaycgaW4gX2dsb2JhbHM6CisgICAgX0ludEVudW0uX2NvbnZlcnQoCisgICAgICAgICAgICAnU2lnbWFza3MnLCBfX25hbWVfXywKKyAgICAgICAgICAgIGxhbWJkYSBuYW1lOiBuYW1lIGluICgnU0lHX0JMT0NLJywgJ1NJR19VTkJMT0NLJywgJ1NJR19TRVRNQVNLJykpCisKKworZGVmIF9pbnRfdG9fZW51bSh2YWx1ZSwgZW51bV9rbGFzcyk6CisgICAgIiIiQ29udmVydCBhIG51bWVyaWMgdmFsdWUgdG8gYW4gSW50RW51bSBtZW1iZXIuCisgICAgSWYgaXQncyBub3QgYSBrbm93biBtZW1iZXIsIHJldHVybiB0aGUgbnVtZXJpYyB2YWx1ZSBpdHNlbGYuCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gZW51bV9rbGFzcyh2YWx1ZSkKKyAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgcmV0dXJuIHZhbHVlCisKKworZGVmIF9lbnVtX3RvX2ludCh2YWx1ZSk6CisgICAgIiIiQ29udmVydCBhbiBJbnRFbnVtIG1lbWJlciB0byBhIG51bWVyaWMgdmFsdWUuCisgICAgSWYgaXQncyBub3QgYW4gSW50RW51bSBtZW1iZXIgcmV0dXJuIHRoZSB2YWx1ZSBpdHNlbGYuCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gaW50KHZhbHVlKQorICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVHlwZUVycm9yKToKKyAgICAgICAgcmV0dXJuIHZhbHVlCisKKworQF93cmFwcyhfc2lnbmFsLnNpZ25hbCkKK2RlZiBzaWduYWwoc2lnbmFsbnVtLCBoYW5kbGVyKToKKyAgICBoYW5kbGVyID0gX3NpZ25hbC5zaWduYWwoX2VudW1fdG9faW50KHNpZ25hbG51bSksIF9lbnVtX3RvX2ludChoYW5kbGVyKSkKKyAgICByZXR1cm4gX2ludF90b19lbnVtKGhhbmRsZXIsIEhhbmRsZXJzKQorCisKK0Bfd3JhcHMoX3NpZ25hbC5nZXRzaWduYWwpCitkZWYgZ2V0c2lnbmFsKHNpZ25hbG51bSk6CisgICAgaGFuZGxlciA9IF9zaWduYWwuZ2V0c2lnbmFsKHNpZ25hbG51bSkKKyAgICByZXR1cm4gX2ludF90b19lbnVtKGhhbmRsZXIsIEhhbmRsZXJzKQorCisKK2lmICdwdGhyZWFkX3NpZ21hc2snIGluIF9nbG9iYWxzOgorICAgIEBfd3JhcHMoX3NpZ25hbC5wdGhyZWFkX3NpZ21hc2spCisgICAgZGVmIHB0aHJlYWRfc2lnbWFzayhob3csIG1hc2spOgorICAgICAgICBzaWdzX3NldCA9IF9zaWduYWwucHRocmVhZF9zaWdtYXNrKGhvdywgbWFzaykKKyAgICAgICAgcmV0dXJuIHNldChfaW50X3RvX2VudW0oeCwgU2lnbmFscykgZm9yIHggaW4gc2lnc19zZXQpCisgICAgcHRocmVhZF9zaWdtYXNrLl9fZG9jX18gPSBfc2lnbmFsLnB0aHJlYWRfc2lnbWFzay5fX2RvY19fCisKKworaWYgJ3NpZ3BlbmRpbmcnIGluIF9nbG9iYWxzOgorICAgIEBfd3JhcHMoX3NpZ25hbC5zaWdwZW5kaW5nKQorICAgIGRlZiBzaWdwZW5kaW5nKCk6CisgICAgICAgIHNpZ3MgPSBfc2lnbmFsLnNpZ3BlbmRpbmcoKQorICAgICAgICByZXR1cm4gc2V0KF9pbnRfdG9fZW51bSh4LCBTaWduYWxzKSBmb3IgeCBpbiBzaWdzKQorCisKK2lmICdzaWd3YWl0JyBpbiBfZ2xvYmFsczoKKyAgICBAX3dyYXBzKF9zaWduYWwuc2lnd2FpdCkKKyAgICBkZWYgc2lnd2FpdChzaWdzZXQpOgorICAgICAgICByZXRzaWcgPSBfc2lnbmFsLnNpZ3dhaXQoc2lnc2V0KQorICAgICAgICByZXR1cm4gX2ludF90b19lbnVtKHJldHNpZywgU2lnbmFscykKKyAgICBzaWd3YWl0Ll9fZG9jX18gPSBfc2lnbmFsLnNpZ3dhaXQKKworZGVsIF9nbG9iYWxzLCBfd3JhcHMKZGlmZiAtLWdpdCBhL0xpYi9zaXRlLnB5IGIvTGliL3NpdGUucHkKaW5kZXggM2M4NTg0Yi4uM2E4ZDFjMyAxMDA2NDQKLS0tIGEvTGliL3NpdGUucHkKKysrIGIvTGliL3NpdGUucHkKQEAgLTcsNyArNyw3IEBACiBUaGlzIHdpbGwgYXBwZW5kIHNpdGUtc3BlY2lmaWMgcGF0aHMgdG8gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aC4gIE9uCiBVbml4IChpbmNsdWRpbmcgTWFjIE9TWCksIGl0IHN0YXJ0cyB3aXRoIHN5cy5wcmVmaXggYW5kCiBzeXMuZXhlY19wcmVmaXggKGlmIGRpZmZlcmVudCkgYW5kIGFwcGVuZHMKLWxpYi9weXRob248dmVyc2lvbj4vc2l0ZS1wYWNrYWdlcyBhcyB3ZWxsIGFzIGxpYi9zaXRlLXB5dGhvbi4KK2xpYi9weXRob248dmVyc2lvbj4vc2l0ZS1wYWNrYWdlcy4KIE9uIG90aGVyIHBsYXRmb3JtcyAoc3VjaCBhcyBXaW5kb3dzKSwgaXQgdHJpZXMgZWFjaCBvZiB0aGUKIHByZWZpeGVzIGRpcmVjdGx5LCBhcyB3ZWxsIGFzIHdpdGggbGliL3NpdGUtcGFja2FnZXMgYXBwZW5kZWQuICBUaGUKIHJlc3VsdGluZyBkaXJlY3RvcmllcywgaWYgdGhleSBleGlzdCwgYXJlIGFwcGVuZGVkIHRvIHN5cy5wYXRoLCBhbmQKQEAgLTE1LDcgKzE1LDcgQEAKIAogSWYgYSBmaWxlIG5hbWVkICJweXZlbnYuY2ZnIiBleGlzdHMgb25lIGRpcmVjdG9yeSBhYm92ZSBzeXMuZXhlY3V0YWJsZSwKIHN5cy5wcmVmaXggYW5kIHN5cy5leGVjX3ByZWZpeCBhcmUgc2V0IHRvIHRoYXQgZGlyZWN0b3J5IGFuZAotaXQgaXMgYWxzbyBjaGVja2VkIGZvciBzaXRlLXBhY2thZ2VzIGFuZCBzaXRlLXB5dGhvbiAoc3lzLmJhc2VfcHJlZml4IGFuZAoraXQgaXMgYWxzbyBjaGVja2VkIGZvciBzaXRlLXBhY2thZ2VzIChzeXMuYmFzZV9wcmVmaXggYW5kCiBzeXMuYmFzZV9leGVjX3ByZWZpeCB3aWxsIGFsd2F5cyBiZSB0aGUgInJlYWwiIHByZWZpeGVzIG9mIHRoZSBQeXRob24KIGluc3RhbGxhdGlvbikuIElmICJweXZlbnYuY2ZnIiAoYSBib290c3RyYXAgY29uZmlndXJhdGlvbiBmaWxlKSBjb250YWlucwogdGhlIGtleSAiaW5jbHVkZS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcyIgc2V0IHRvIGFueXRoaW5nIG90aGVyIHRoYW4gImZhbHNlIgpAQCAtOTgsOCArOTgsOCBAQAogZGVmIGFic19wYXRocygpOgogICAgICIiIlNldCBhbGwgbW9kdWxlIF9fZmlsZV9fIGFuZCBfX2NhY2hlZF9fIGF0dHJpYnV0ZXMgdG8gYW4gYWJzb2x1dGUgcGF0aCIiIgogICAgIGZvciBtIGluIHNldChzeXMubW9kdWxlcy52YWx1ZXMoKSk6Ci0gICAgICAgIGlmIChnZXRhdHRyKGdldGF0dHIobSwgJ19fbG9hZGVyX18nLCBOb25lKSwgJ19fbW9kdWxlX18nLCBOb25lKSAhPQotICAgICAgICAgICAgICAgICdfZnJvemVuX2ltcG9ydGxpYicpOgorICAgICAgICBpZiAoZ2V0YXR0cihnZXRhdHRyKG0sICdfX2xvYWRlcl9fJywgTm9uZSksICdfX21vZHVsZV9fJywgTm9uZSkgbm90IGluCisgICAgICAgICAgICAgICAgKCdfZnJvemVuX2ltcG9ydGxpYicsICdfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbCcpKToKICAgICAgICAgICAgIGNvbnRpbnVlICAgIyBkb24ndCBtZXNzIHdpdGggYSBQRVAgMzAyLXN1cHBsaWVkIF9fZmlsZV9fCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG0uX19maWxlX18gPSBvcy5wYXRoLmFic3BhdGgobS5fX2ZpbGVfXykKQEAgLTI4NSw4ICsyODUsNyBAQAogICAgIHJldHVybiBrbm93bl9wYXRocwogCiBkZWYgZ2V0c2l0ZXBhY2thZ2VzKHByZWZpeGVzPU5vbmUpOgotICAgICIiIlJldHVybnMgYSBsaXN0IGNvbnRhaW5pbmcgYWxsIGdsb2JhbCBzaXRlLXBhY2thZ2VzIGRpcmVjdG9yaWVzCi0gICAgKGFuZCBwb3NzaWJseSBzaXRlLXB5dGhvbikuCisgICAgIiIiUmV0dXJucyBhIGxpc3QgY29udGFpbmluZyBhbGwgZ2xvYmFsIHNpdGUtcGFja2FnZXMgZGlyZWN0b3JpZXMuCiAKICAgICBGb3IgZWFjaCBkaXJlY3RvcnkgcHJlc2VudCBpbiBgYHByZWZpeGVzYGAgKG9yIHRoZSBnbG9iYWwgYGBQUkVGSVhFU2BgKSwKICAgICB0aGlzIGZ1bmN0aW9uIHdpbGwgZmluZCBpdHMgYHNpdGUtcGFja2FnZXNgIHN1YmRpcmVjdG9yeSBkZXBlbmRpbmcgb24gdGhlCkBAIC0zMDcsNyArMzA2LDYgQEAKICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpdGUtcGFja2FnZXMiKSkKLSAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsICJzaXRlLXB5dGhvbiIpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChwcmVmaXgpCiAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLCAic2l0ZS1wYWNrYWdlcyIpKQpAQCAtMzIzLDE0ICszMjEsOSBAQAogICAgIHJldHVybiBzaXRlcGFja2FnZXMKIAogZGVmIGFkZHNpdGVwYWNrYWdlcyhrbm93bl9wYXRocywgcHJlZml4ZXM9Tm9uZSk6Ci0gICAgIiIiQWRkIHNpdGUtcGFja2FnZXMgKGFuZCBwb3NzaWJseSBzaXRlLXB5dGhvbikgdG8gc3lzLnBhdGgiIiIKKyAgICAiIiJBZGQgc2l0ZS1wYWNrYWdlcyB0byBzeXMucGF0aCIiIgogICAgIGZvciBzaXRlZGlyIGluIGdldHNpdGVwYWNrYWdlcyhwcmVmaXhlcyk6CiAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoc2l0ZWRpcik6Ci0gICAgICAgICAgICBpZiAic2l0ZS1weXRob24iIGluIHNpdGVkaXI6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybignInNpdGUtcHl0aG9uIiBkaXJlY3RvcmllcyB3aWxsIG5vdCBiZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3VwcG9ydGVkIGluIDMuNSBhbnltb3JlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIGFkZHNpdGVkaXIoc2l0ZWRpciwga25vd25fcGF0aHMpCiAKICAgICByZXR1cm4ga25vd25fcGF0aHMKQEAgLTQ4NSw2ICs0NzgsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbV9zaXRlID0gdmFsdWUubG93ZXIoKQogICAgICAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSAnaG9tZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuX2hvbWUgPSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSAnYXBwbG9jYWwnIGFuZCB2YWx1ZS5sb3dlcigpID09ICd0cnVlJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgQXBwLWxvY2FsIGluc3RhbGxzIHVzZSB0aGUgZXhlX2RpciBhcyBwcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAjIG5vdCBvbmUgbGV2ZWwgaGlnaGVyLCBhbmQgZG8gbm90IHVzZSBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICMgc2l0ZSBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNpdGVfcHJlZml4ID0gZXhlX2RpcgorICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtX3NpdGUgPSAnZmFsc2UnCiAKICAgICAgICAgc3lzLnByZWZpeCA9IHN5cy5leGVjX3ByZWZpeCA9IHNpdGVfcHJlZml4CiAKZGlmZiAtLWdpdCBhL0xpYi9zbXRwZC5weSBiL0xpYi9zbXRwZC5weQppbmRleCBkYjdjODY3Li43MzIwNjZlIDEwMDc1NQotLS0gYS9MaWIvc210cGQucHkKKysrIGIvTGliL3NtdHBkLnB5CkBAIC0xLDUgKzEsNSBAQAogIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKLSIiIkFuIFJGQyA1MzIxIHNtdHAgcHJveHkuCisiIiJBbiBSRkMgNTMyMSBzbXRwIHByb3h5IHdpdGggb3B0aW9uYWwgUkZDIDE4NzAgYW5kIFJGQyA2NTMxIGV4dGVuc2lvbnMuCiAKIFVzYWdlOiAlKHByb2dyYW0pcyBbb3B0aW9uc10gW2xvY2FsaG9zdDpsb2NhbHBvcnQgW3JlbW90ZWhvc3Q6cmVtb3RlcG9ydF1dCiAKQEAgLTI1LDYgKzI1LDEwIEBACiAgICAgICAgIFJlc3RyaWN0IHRoZSB0b3RhbCBzaXplIG9mIHRoZSBpbmNvbWluZyBtZXNzYWdlIHRvICJsaW1pdCIgbnVtYmVyIG9mCiAgICAgICAgIGJ5dGVzIHZpYSB0aGUgUkZDIDE4NzAgU0laRSBleHRlbnNpb24uICBEZWZhdWx0cyB0byAzMzU1NDQzMiBieXRlcy4KIAorICAgIC0tc210cHV0ZjgKKyAgICAtdQorICAgICAgICBFbmFibGUgdGhlIFNNVFBVVEY4IGV4dGVuc2lvbiBhbmQgYmVoYXZlIGFzIGFuIFJGQyA2NTMxIHNtdHAgcHJveHkuCisKICAgICAtLWRlYnVnCiAgICAgLWQKICAgICAgICAgVHVybiBvbiBkZWJ1Z2dpbmcgcHJpbnRzLgpAQCAtOTgsNyArMTAyLDYgQEAKIAogREVCVUdTVFJFQU0gPSBEZXZudWxsKCkKIE5FV0xJTkUgPSAnXG4nCi1FTVBUWVNUUklORyA9ICcnCiBDT01NQVNQQUNFID0gJywgJwogREFUQV9TSVpFX0RFRkFVTFQgPSAzMzU1NDQzMgogCkBAIC0xMTYsMjYgKzExOSw0OCBAQAogCiAgICAgY29tbWFuZF9zaXplX2xpbWl0ID0gNTEyCiAgICAgY29tbWFuZF9zaXplX2xpbWl0cyA9IGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0KGxhbWJkYSB4PWNvbW1hbmRfc2l6ZV9saW1pdDogeCkKLSAgICBjb21tYW5kX3NpemVfbGltaXRzLnVwZGF0ZSh7Ci0gICAgICAgICdNQUlMJzogY29tbWFuZF9zaXplX2xpbWl0ICsgMjYsCi0gICAgICAgIH0pCi0gICAgbWF4X2NvbW1hbmRfc2l6ZV9saW1pdCA9IG1heChjb21tYW5kX3NpemVfbGltaXRzLnZhbHVlcygpKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1heF9jb21tYW5kX3NpemVfbGltaXQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBtYXgoc2VsZi5jb21tYW5kX3NpemVfbGltaXRzLnZhbHVlcygpKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbW1hbmRfc2l6ZV9saW1pdAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlciwgY29ubiwgYWRkciwgZGF0YV9zaXplX2xpbWl0PURBVEFfU0laRV9ERUZBVUxULAotICAgICAgICAgICAgICAgICBtYXA9Tm9uZSk6CisgICAgICAgICAgICAgICAgIG1hcD1Ob25lLCBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPU5vbmUpOgogICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0Ll9faW5pdF9fKHNlbGYsIGNvbm4sIG1hcD1tYXApCiAgICAgICAgIHNlbGYuc210cF9zZXJ2ZXIgPSBzZXJ2ZXIKICAgICAgICAgc2VsZi5jb25uID0gY29ubgogICAgICAgICBzZWxmLmFkZHIgPSBhZGRyCiAgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gZGF0YV9zaXplX2xpbWl0Ci0gICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMgPSBbXQotICAgICAgICBzZWxmLnNtdHBfc3RhdGUgPSBzZWxmLkNPTU1BTkQKKyAgICAgICAgc2VsZi5lbmFibGVfU01UUFVURjggPSBlbmFibGVfU01UUFVURjgKKyAgICAgICAgaWYgZW5hYmxlX1NNVFBVVEY4OgorICAgICAgICAgICAgaWYgZGVjb2RlX2RhdGE6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCBjYW5ub3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGJlIHNldCB0byBUcnVlIGF0IHRoZSBzYW1lIHRpbWUiKQorICAgICAgICAgICAgZGVjb2RlX2RhdGEgPSBGYWxzZQorICAgICAgICBpZiBkZWNvZGVfZGF0YSBpcyBOb25lOgorICAgICAgICAgICAgd2FybigiVGhlIGRlY29kZV9kYXRhIGRlZmF1bHQgb2YgVHJ1ZSB3aWxsIGNoYW5nZSB0byBGYWxzZSBpbiAzLjY7IgorICAgICAgICAgICAgICAgICAiIHNwZWNpZnkgYW4gZXhwbGljaXQgdmFsdWUgZm9yIHRoaXMga2V5d29yZCIsCisgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgIGRlY29kZV9kYXRhID0gVHJ1ZQorICAgICAgICBzZWxmLl9kZWNvZGVfZGF0YSA9IGRlY29kZV9kYXRhCisgICAgICAgIGlmIGRlY29kZV9kYXRhOgorICAgICAgICAgICAgc2VsZi5fZW1wdHlzdHJpbmcgPSAnJworICAgICAgICAgICAgc2VsZi5fbGluZXNlcCA9ICdcclxuJworICAgICAgICAgICAgc2VsZi5fZG90c2VwID0gJy4nCisgICAgICAgICAgICBzZWxmLl9uZXdsaW5lID0gTkVXTElORQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fZW1wdHlzdHJpbmcgPSBiJycKKyAgICAgICAgICAgIHNlbGYuX2xpbmVzZXAgPSBiJ1xyXG4nCisgICAgICAgICAgICBzZWxmLl9kb3RzZXAgPSBvcmQoYicuJykKKyAgICAgICAgICAgIHNlbGYuX25ld2xpbmUgPSBiJ1xuJworICAgICAgICBzZWxmLl9zZXRfcnNldF9zdGF0ZSgpCiAgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9ICcnCi0gICAgICAgIHNlbGYubWFpbGZyb20gPSBOb25lCi0gICAgICAgIHNlbGYucmNwdHRvcyA9IFtdCi0gICAgICAgIHNlbGYucmVjZWl2ZWRfZGF0YSA9ICcnCisgICAgICAgIHNlbGYuZXh0ZW5kZWRfc210cCA9IEZhbHNlCisgICAgICAgIHNlbGYuY29tbWFuZF9zaXplX2xpbWl0cy5jbGVhcigpCiAgICAgICAgIHNlbGYuZnFkbiA9IHNvY2tldC5nZXRmcWRuKCkKLSAgICAgICAgc2VsZi5udW1fYnl0ZXMgPSAwCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYucGVlciA9IGNvbm4uZ2V0cGVlcm5hbWUoKQogICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CkBAIC0xNDcsOCArMTcyLDIyIEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgcHJpbnQoJ1BlZXI6JywgcmVwcihzZWxmLnBlZXIpLCBmaWxlPURFQlVHU1RSRUFNKQogICAgICAgICBzZWxmLnB1c2goJzIyMCAlcyAlcycgJSAoc2VsZi5mcWRuLCBfX3ZlcnNpb25fXykpCisKKyAgICBkZWYgX3NldF9wb3N0X2RhdGFfc3RhdGUoc2VsZik6CisgICAgICAgICIiIlJlc2V0IHN0YXRlIHZhcmlhYmxlcyB0byB0aGVpciBwb3N0LURBVEEgc3RhdGUuIiIiCisgICAgICAgIHNlbGYuc210cF9zdGF0ZSA9IHNlbGYuQ09NTUFORAorICAgICAgICBzZWxmLm1haWxmcm9tID0gTm9uZQorICAgICAgICBzZWxmLnJjcHR0b3MgPSBbXQorICAgICAgICBzZWxmLnJlcXVpcmVfU01UUFVURjggPSBGYWxzZQorICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKICAgICAgICAgc2VsZi5zZXRfdGVybWluYXRvcihiJ1xyXG4nKQotICAgICAgICBzZWxmLmV4dGVuZGVkX3NtdHAgPSBGYWxzZQorCisgICAgZGVmIF9zZXRfcnNldF9zdGF0ZShzZWxmKToKKyAgICAgICAgIiIiUmVzZXQgYWxsIHN0YXRlIHZhcmlhYmxlcyBleGNlcHQgdGhlIGdyZWV0aW5nLiIiIgorICAgICAgICBzZWxmLl9zZXRfcG9zdF9kYXRhX3N0YXRlKCkKKyAgICAgICAgc2VsZi5yZWNlaXZlZF9kYXRhID0gJycKKyAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcyA9IFtdCisKIAogICAgICMgcHJvcGVydGllcyBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkKICAgICBAcHJvcGVydHkKQEAgLTI3Miw5ICszMTEsMTAgQEAKICAgICAgICAgICAgICJzZXQgJ2FkZHInIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYuYWRkciA9IHZhbHVlCiAKLSAgICAjIE92ZXJyaWRlcyBiYXNlIGNsYXNzIGZvciBjb252ZW5pZW5jZQorICAgICMgT3ZlcnJpZGVzIGJhc2UgY2xhc3MgZm9yIGNvbnZlbmllbmNlLgogICAgIGRlZiBwdXNoKHNlbGYsIG1zZyk6Ci0gICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQucHVzaChzZWxmLCBieXRlcyhtc2cgKyAnXHJcbicsICdhc2NpaScpKQorICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0LnB1c2goc2VsZiwgYnl0ZXMoCisgICAgICAgICAgICBtc2cgKyAnXHJcbicsICd1dGYtOCcgaWYgc2VsZi5yZXF1aXJlX1NNVFBVVEY4IGVsc2UgJ2FzY2lpJykpCiAKICAgICAjIEltcGxlbWVudGF0aW9uIG9mIGJhc2UgY2xhc3MgYWJzdHJhY3QgbWV0aG9kCiAgICAgZGVmIGNvbGxlY3RfaW5jb21pbmdfZGF0YShzZWxmLCBkYXRhKToKQEAgLTI4NywxMSArMzI3LDE0IEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZWxpZiBsaW1pdDoKICAgICAgICAgICAgIHNlbGYubnVtX2J5dGVzICs9IGxlbihkYXRhKQotICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzLmFwcGVuZChzdHIoZGF0YSwgInV0Zi04IikpCisgICAgICAgIGlmIHNlbGYuX2RlY29kZV9kYXRhOgorICAgICAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcy5hcHBlbmQoc3RyKGRhdGEsICd1dGYtOCcpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcy5hcHBlbmQoZGF0YSkKIAogICAgICMgSW1wbGVtZW50YXRpb24gb2YgYmFzZSBjbGFzcyBhYnN0cmFjdCBtZXRob2QKICAgICBkZWYgZm91bmRfdGVybWluYXRvcihzZWxmKToKLSAgICAgICAgbGluZSA9IEVNUFRZU1RSSU5HLmpvaW4oc2VsZi5yZWNlaXZlZF9saW5lcykKKyAgICAgICAgbGluZSA9IHNlbGYuX2VtcHR5c3RyaW5nLmpvaW4oc2VsZi5yZWNlaXZlZF9saW5lcykKICAgICAgICAgcHJpbnQoJ0RhdGE6JywgcmVwcihsaW5lKSwgZmlsZT1ERUJVR1NUUkVBTSkKICAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcyA9IFtdCiAgICAgICAgIGlmIHNlbGYuc210cF9zdGF0ZSA9PSBzZWxmLkNPTU1BTkQ6CkBAIC0yOTksNyArMzQyLDggQEAKICAgICAgICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAwIEVycm9yOiBiYWQgc3ludGF4JykKICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIG1ldGhvZCA9IE5vbmUKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9kZWNvZGVfZGF0YToKKyAgICAgICAgICAgICAgICBsaW5lID0gc3RyKGxpbmUsICd1dGYtOCcpCiAgICAgICAgICAgICBpID0gbGluZS5maW5kKCcgJykKICAgICAgICAgICAgIGlmIGkgPCAwOgogICAgICAgICAgICAgICAgIGNvbW1hbmQgPSBsaW5lLnVwcGVyKCkKQEAgLTMzMCwyMSArMzc0LDIxIEBACiAgICAgICAgICAgICAjIFJlbW92ZSBleHRyYW5lb3VzIGNhcnJpYWdlIHJldHVybnMgYW5kIGRlLXRyYW5zcGFyZW5jeSBhY2NvcmRpbmcKICAgICAgICAgICAgICMgdG8gUkZDIDUzMjEsIFNlY3Rpb24gNC41LjIuCiAgICAgICAgICAgICBkYXRhID0gW10KLSAgICAgICAgICAgIGZvciB0ZXh0IGluIGxpbmUuc3BsaXQoJ1xyXG4nKToKLSAgICAgICAgICAgICAgICBpZiB0ZXh0IGFuZCB0ZXh0WzBdID09ICcuJzoKKyAgICAgICAgICAgIGZvciB0ZXh0IGluIGxpbmUuc3BsaXQoc2VsZi5fbGluZXNlcCk6CisgICAgICAgICAgICAgICAgaWYgdGV4dCBhbmQgdGV4dFswXSA9PSBzZWxmLl9kb3RzZXA6CiAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKHRleHRbMTpdKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKHRleHQpCi0gICAgICAgICAgICBzZWxmLnJlY2VpdmVkX2RhdGEgPSBORVdMSU5FLmpvaW4oZGF0YSkKLSAgICAgICAgICAgIHN0YXR1cyA9IHNlbGYuc210cF9zZXJ2ZXIucHJvY2Vzc19tZXNzYWdlKHNlbGYucGVlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFpbGZyb20sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJjcHR0b3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlY2VpdmVkX2RhdGEpCi0gICAgICAgICAgICBzZWxmLnJjcHR0b3MgPSBbXQotICAgICAgICAgICAgc2VsZi5tYWlsZnJvbSA9IE5vbmUKLSAgICAgICAgICAgIHNlbGYuc210cF9zdGF0ZSA9IHNlbGYuQ09NTUFORAotICAgICAgICAgICAgc2VsZi5udW1fYnl0ZXMgPSAwCi0gICAgICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGInXHJcbicpCisgICAgICAgICAgICBzZWxmLnJlY2VpdmVkX2RhdGEgPSBzZWxmLl9uZXdsaW5lLmpvaW4oZGF0YSkKKyAgICAgICAgICAgIGFyZ3MgPSAoc2VsZi5wZWVyLCBzZWxmLm1haWxmcm9tLCBzZWxmLnJjcHR0b3MsIHNlbGYucmVjZWl2ZWRfZGF0YSkKKyAgICAgICAgICAgIGt3YXJncyA9IHt9CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZGVjb2RlX2RhdGE6CisgICAgICAgICAgICAgICAga3dhcmdzID0geworICAgICAgICAgICAgICAgICAgICAnbWFpbF9vcHRpb25zJzogc2VsZi5tYWlsX29wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICdyY3B0X29wdGlvbnMnOiBzZWxmLnJjcHRfb3B0aW9ucywKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0dXMgPSBzZWxmLnNtdHBfc2VydmVyLnByb2Nlc3NfbWVzc2FnZSgqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICBzZWxmLl9zZXRfcG9zdF9kYXRhX3N0YXRlKCkKICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgT0snKQogICAgICAgICAgICAgZWxzZToKQEAgLTM1NSwyNiArMzk5LDM1IEBACiAgICAgICAgIGlmIG5vdCBhcmc6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTeW50YXg6IEhFTE8gaG9zdG5hbWUnKQogICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICMgU2VlIGlzc3VlICMyMTc4MyBmb3IgYSBkaXNjdXNzaW9uIG9mIHRoaXMgYmVoYXZpb3IuCiAgICAgICAgIGlmIHNlbGYuc2Vlbl9ncmVldGluZzoKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIER1cGxpY2F0ZSBIRUxPL0VITE8nKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5zZWVuX2dyZWV0aW5nID0gYXJnCi0gICAgICAgICAgICBzZWxmLmV4dGVuZGVkX3NtdHAgPSBGYWxzZQotICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgJXMnICUgc2VsZi5mcWRuKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuX3NldF9yc2V0X3N0YXRlKCkKKyAgICAgICAgc2VsZi5zZWVuX2dyZWV0aW5nID0gYXJnCisgICAgICAgIHNlbGYucHVzaCgnMjUwICVzJyAlIHNlbGYuZnFkbikKIAogICAgIGRlZiBzbXRwX0VITE8oc2VsZiwgYXJnKToKICAgICAgICAgaWYgbm90IGFyZzoKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIFN5bnRheDogRUhMTyBob3N0bmFtZScpCiAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgIyBTZWUgaXNzdWUgIzIxNzgzIGZvciBhIGRpc2N1c3Npb24gb2YgdGhpcyBiZWhhdmlvci4KICAgICAgICAgaWYgc2VsZi5zZWVuX2dyZWV0aW5nOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRHVwbGljYXRlIEhFTE8vRUhMTycpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnNlZW5fZ3JlZXRpbmcgPSBhcmcKLSAgICAgICAgICAgIHNlbGYuZXh0ZW5kZWRfc210cCA9IFRydWUKLSAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwLSVzJyAlIHNlbGYuZnFkbikKLSAgICAgICAgICAgIGlmIHNlbGYuZGF0YV9zaXplX2xpbWl0OgotICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwLVNJWkUgJXMnICUgc2VsZi5kYXRhX3NpemVfbGltaXQpCi0gICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBIRUxQJykKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLl9zZXRfcnNldF9zdGF0ZSgpCisgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9IGFyZworICAgICAgICBzZWxmLmV4dGVuZGVkX3NtdHAgPSBUcnVlCisgICAgICAgIHNlbGYucHVzaCgnMjUwLSVzJyAlIHNlbGYuZnFkbikKKyAgICAgICAgaWYgc2VsZi5kYXRhX3NpemVfbGltaXQ6CisgICAgICAgICAgICBzZWxmLnB1c2goJzI1MC1TSVpFICVzJyAlIHNlbGYuZGF0YV9zaXplX2xpbWl0KQorICAgICAgICAgICAgc2VsZi5jb21tYW5kX3NpemVfbGltaXRzWydNQUlMJ10gKz0gMjYKKyAgICAgICAgaWYgbm90IHNlbGYuX2RlY29kZV9kYXRhOgorICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAtOEJJVE1JTUUnKQorICAgICAgICBpZiBzZWxmLmVuYWJsZV9TTVRQVVRGODoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwLVNNVFBVVEY4JykKKyAgICAgICAgICAgIHNlbGYuY29tbWFuZF9zaXplX2xpbWl0c1snTUFJTCddICs9IDEwCisgICAgICAgIHNlbGYucHVzaCgnMjUwIEhFTFAnKQogCiAgICAgZGVmIHNtdHBfTk9PUChzZWxmLCBhcmcpOgogICAgICAgICBpZiBhcmc6CkBAIC00MDUsMTEgKzQ1OCwxNSBAQAogICAgICAgICByZXR1cm4gYWRkcmVzcy5hZGRyX3NwZWMsIHJlc3QKIAogICAgIGRlZiBfZ2V0cGFyYW1zKHNlbGYsIHBhcmFtcyk6Ci0gICAgICAgICMgUmV0dXJuIGFueSBwYXJhbWV0ZXJzIHRoYXQgYXBwZWFyIHRvIGJlIHN5bnRhY3RpY2FsbHkgdmFsaWQgYWNjb3JkaW5nCi0gICAgICAgICMgdG8gUkZDIDE4NjksIGlnbm9yZSBhbGwgb3RoZXJzLiAgKFBvc3RlbCBydWxlOiBhY2NlcHQgd2hhdCB3ZSBjYW4uKQotICAgICAgICBwYXJhbXMgPSBbcGFyYW0uc3BsaXQoJz0nLCAxKSBmb3IgcGFyYW0gaW4gcGFyYW1zLnNwbGl0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJz0nIGluIHBhcmFtXQotICAgICAgICByZXR1cm4ge2s6IHYgZm9yIGssIHYgaW4gcGFyYW1zIGlmIGsuaXNhbG51bSgpfQorICAgICAgICAjIFJldHVybiBwYXJhbXMgYXMgZGljdGlvbmFyeS4gUmV0dXJuIE5vbmUgaWYgbm90IGFsbCBwYXJhbWV0ZXJzCisgICAgICAgICMgYXBwZWFyIHRvIGJlIHN5bnRhY3RpY2FsbHkgdmFsaWQgYWNjb3JkaW5nIHRvIFJGQyAxODY5LgorICAgICAgICByZXN1bHQgPSB7fQorICAgICAgICBmb3IgcGFyYW0gaW4gcGFyYW1zOgorICAgICAgICAgICAgcGFyYW0sIGVxLCB2YWx1ZSA9IHBhcmFtLnBhcnRpdGlvbignPScpCisgICAgICAgICAgICBpZiBub3QgcGFyYW0uaXNhbG51bSgpIG9yIGVxIGFuZCBub3QgdmFsdWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIHJlc3VsdFtwYXJhbV0gPSB2YWx1ZSBpZiBlcSBlbHNlIFRydWUKKyAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIHNtdHBfSEVMUChzZWxmLCBhcmcpOgogICAgICAgICBpZiBhcmc6CkBAIC00NTksNyArNTE2LDcgQEAKIAogICAgIGRlZiBzbXRwX01BSUwoc2VsZiwgYXJnKToKICAgICAgICAgaWYgbm90IHNlbGYuc2Vlbl9ncmVldGluZzoKLSAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIEVycm9yOiBzZW5kIEhFTE8gZmlyc3QnKTsKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIEVycm9yOiBzZW5kIEhFTE8gZmlyc3QnKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHByaW50KCc9PT0+IE1BSUwnLCBhcmcsIGZpbGU9REVCVUdTVFJFQU0pCiAgICAgICAgIHN5bnRheGVyciA9ICc1MDEgU3ludGF4OiBNQUlMIEZST006IDxhZGRyZXNzPicKQEAgLTQ3OSwxMCArNTM2LDIzIEBACiAgICAgICAgIGlmIHNlbGYubWFpbGZyb206CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBFcnJvcjogbmVzdGVkIE1BSUwgY29tbWFuZCcpCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgcGFyYW1zID0gc2VsZi5fZ2V0cGFyYW1zKHBhcmFtcy51cHBlcigpKQorICAgICAgICBzZWxmLm1haWxfb3B0aW9ucyA9IHBhcmFtcy51cHBlcigpLnNwbGl0KCkKKyAgICAgICAgcGFyYW1zID0gc2VsZi5fZ2V0cGFyYW1zKHNlbGYubWFpbF9vcHRpb25zKQogICAgICAgICBpZiBwYXJhbXMgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCiAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgbm90IHNlbGYuX2RlY29kZV9kYXRhOgorICAgICAgICAgICAgYm9keSA9IHBhcmFtcy5wb3AoJ0JPRFknLCAnN0JJVCcpCisgICAgICAgICAgICBpZiBib2R5IG5vdCBpbiBbJzdCSVQnLCAnOEJJVE1JTUUnXToKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBFcnJvcjogQk9EWSBjYW4gb25seSBiZSBvbmUgb2YgN0JJVCwgOEJJVE1JTUUnKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBzZWxmLmVuYWJsZV9TTVRQVVRGODoKKyAgICAgICAgICAgIHNtdHB1dGY4ID0gcGFyYW1zLnBvcCgnU01UUFVURjgnLCBGYWxzZSkKKyAgICAgICAgICAgIGlmIHNtdHB1dGY4IGlzIFRydWU6CisgICAgICAgICAgICAgICAgc2VsZi5yZXF1aXJlX1NNVFBVVEY4ID0gVHJ1ZQorICAgICAgICAgICAgZWxpZiBzbXRwdXRmOCBpcyBub3QgRmFsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgRXJyb3I6IFNNVFBVVEY4IHRha2VzIG5vIGFyZ3VtZW50cycpCisgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNpemUgPSBwYXJhbXMucG9wKCdTSVpFJywgTm9uZSkKICAgICAgICAgaWYgc2l6ZToKICAgICAgICAgICAgIGlmIG5vdCBzaXplLmlzZGlnaXQoKToKQEAgLTUxNywxNiArNTg3LDE2IEBACiAgICAgICAgIGlmIG5vdCBhZGRyZXNzOgogICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBwYXJhbXM6Ci0gICAgICAgICAgICBpZiBzZWxmLmV4dGVuZGVkX3NtdHA6Ci0gICAgICAgICAgICAgICAgcGFyYW1zID0gc2VsZi5fZ2V0cGFyYW1zKHBhcmFtcy51cHBlcigpKQotICAgICAgICAgICAgICAgIGlmIHBhcmFtcyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgcGFyYW1zIGFuZCBsZW4ocGFyYW1zLmtleXMoKSkgPiAwOgorICAgICAgICBpZiBub3Qgc2VsZi5leHRlbmRlZF9zbXRwIGFuZCBwYXJhbXM6CisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYucmNwdF9vcHRpb25zID0gcGFyYW1zLnVwcGVyKCkuc3BsaXQoKQorICAgICAgICBwYXJhbXMgPSBzZWxmLl9nZXRwYXJhbXMoc2VsZi5yY3B0X29wdGlvbnMpCisgICAgICAgIGlmIHBhcmFtcyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICAjIFhYWCBjdXJyZW50bHkgdGhlcmUgYXJlIG5vIG9wdGlvbnMgd2UgcmVjb2duaXplLgorICAgICAgICBpZiBsZW4ocGFyYW1zLmtleXMoKSkgPiAwOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1NTUgUkNQVCBUTyBwYXJhbWV0ZXJzIG5vdCByZWNvZ25pemVkIG9yIG5vdCBpbXBsZW1lbnRlZCcpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5yY3B0dG9zLmFwcGVuZChhZGRyZXNzKQpAQCAtNTM3LDExICs2MDcsNyBAQAogICAgICAgICBpZiBhcmc6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTeW50YXg6IFJTRVQnKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICMgUmVzZXRzIHRoZSBzZW5kZXIsIHJlY2lwaWVudHMsIGFuZCBkYXRhLCBidXQgbm90IHRoZSBncmVldGluZwotICAgICAgICBzZWxmLm1haWxmcm9tID0gTm9uZQotICAgICAgICBzZWxmLnJjcHR0b3MgPSBbXQotICAgICAgICBzZWxmLnJlY2VpdmVkX2RhdGEgPSAnJwotICAgICAgICBzZWxmLnNtdHBfc3RhdGUgPSBzZWxmLkNPTU1BTkQKKyAgICAgICAgc2VsZi5fc2V0X3JzZXRfc3RhdGUoKQogICAgICAgICBzZWxmLnB1c2goJzI1MCBPSycpCiAKICAgICBkZWYgc210cF9EQVRBKHNlbGYsIGFyZyk6CkBAIC01NjgsMTMgKzYzNCwyOSBAQAogICAgIGNoYW5uZWxfY2xhc3MgPSBTTVRQQ2hhbm5lbAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2FsYWRkciwgcmVtb3RlYWRkciwKLSAgICAgICAgICAgICAgICAgZGF0YV9zaXplX2xpbWl0PURBVEFfU0laRV9ERUZBVUxULCBtYXA9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGRhdGFfc2l6ZV9saW1pdD1EQVRBX1NJWkVfREVGQVVMVCwgbWFwPU5vbmUsCisgICAgICAgICAgICAgICAgIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9Tm9uZSk6CiAgICAgICAgIHNlbGYuX2xvY2FsYWRkciA9IGxvY2FsYWRkcgogICAgICAgICBzZWxmLl9yZW1vdGVhZGRyID0gcmVtb3RlYWRkcgogICAgICAgICBzZWxmLmRhdGFfc2l6ZV9saW1pdCA9IGRhdGFfc2l6ZV9saW1pdAorICAgICAgICBzZWxmLmVuYWJsZV9TTVRQVVRGOCA9IGVuYWJsZV9TTVRQVVRGOAorICAgICAgICBpZiBlbmFibGVfU01UUFVURjg6CisgICAgICAgICAgICBpZiBkZWNvZGVfZGF0YToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJUaGUgZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgcGFyYW1ldGVycyBjYW5ub3QgYmUgc2V0IHRvIFRydWUgYXQgdGhlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBzYW1lIHRpbWUuIikKKyAgICAgICAgICAgIGRlY29kZV9kYXRhID0gRmFsc2UKKyAgICAgICAgaWYgZGVjb2RlX2RhdGEgaXMgTm9uZToKKyAgICAgICAgICAgIHdhcm4oIlRoZSBkZWNvZGVfZGF0YSBkZWZhdWx0IG9mIFRydWUgd2lsbCBjaGFuZ2UgdG8gRmFsc2UgaW4gMy42OyIKKyAgICAgICAgICAgICAgICAgIiBzcGVjaWZ5IGFuIGV4cGxpY2l0IHZhbHVlIGZvciB0aGlzIGtleXdvcmQiLAorICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICBkZWNvZGVfZGF0YSA9IFRydWUKKyAgICAgICAgc2VsZi5fZGVjb2RlX2RhdGEgPSBkZWNvZGVfZGF0YQogICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIG1hcD1tYXApCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgZ2FpX3Jlc3VsdHMgPSBzb2NrZXQuZ2V0YWRkcmluZm8oKmxvY2FsYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9c29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KGdhaV9yZXN1bHRzWzBdWzBdLCBnYWlfcmVzdWx0c1swXVsxXSkKICAgICAgICAgICAgICMgdHJ5IHRvIHJlLXVzZSBhIHNlcnZlciBwb3J0IGlmIHBvc3NpYmxlCiAgICAgICAgICAgICBzZWxmLnNldF9yZXVzZV9hZGRyKCkKICAgICAgICAgICAgIHNlbGYuYmluZChsb2NhbGFkZHIpCkBAIC01ODksMTEgKzY3MSwxNiBAQAogCiAgICAgZGVmIGhhbmRsZV9hY2NlcHRlZChzZWxmLCBjb25uLCBhZGRyKToKICAgICAgICAgcHJpbnQoJ0luY29taW5nIGNvbm5lY3Rpb24gZnJvbSAlcycgJSByZXByKGFkZHIpLCBmaWxlPURFQlVHU1RSRUFNKQotICAgICAgICBjaGFubmVsID0gc2VsZi5jaGFubmVsX2NsYXNzKHNlbGYsIGNvbm4sIGFkZHIsIHNlbGYuZGF0YV9zaXplX2xpbWl0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21hcCkKKyAgICAgICAgY2hhbm5lbCA9IHNlbGYuY2hhbm5lbF9jbGFzcyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFfc2l6ZV9saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lbmFibGVfU01UUFVURjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVjb2RlX2RhdGEpCiAKICAgICAjIEFQSSBmb3IgImRvaW5nIHNvbWV0aGluZyB1c2VmdWwgd2l0aCB0aGUgbWVzc2FnZSIKLSAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKKyAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhLCAqKmt3YXJncyk6CiAgICAgICAgICIiIk92ZXJyaWRlIHRoaXMgYWJzdHJhY3QgbWV0aG9kIHRvIGhhbmRsZSBtZXNzYWdlcyBmcm9tIHRoZSBjbGllbnQuCiAKICAgICAgICAgcGVlciBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgKGlwYWRkciwgcG9ydCkgb2YgdGhlIGNsaWVudCB0aGF0IG1hZGUgdGhlCkBAIC02MTEsMjkgKzY5OCw1OCBAQAogICAgICAgICBjb250YWluaW5nIGEgYC4nIGZvbGxvd2VkIGJ5IG90aGVyIHRleHQgaGFzIGhhZCB0aGUgbGVhZGluZyBkb3QKICAgICAgICAgcmVtb3ZlZC4KIAotICAgICAgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gTm9uZSwgZm9yIGEgbm9ybWFsIGAyNTAgT2snIHJlc3BvbnNlOwotICAgICAgICBvdGhlcndpc2UgaXQgcmV0dXJucyB0aGUgZGVzaXJlZCByZXNwb25zZSBzdHJpbmcgaW4gUkZDIDgyMSBmb3JtYXQuCisgICAgICAgIGt3YXJncyBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiBJdCBpcyBlbXB0eQorICAgICAgICB1bmxlc3MgZGVjb2RlX2RhdGE9RmFsc2Ugb3IgZW5hYmxlX1NNVFBVVEY4PVRydWUgd2FzIGdpdmVuIGFzIGluaXQKKyAgICAgICAgcGFyYW1ldGVyLCBpbiB3aGljaCBjYXNlIHV0IHdpbGwgY29udGFpbiB0aGUgZm9sbG93aW5nIGtleXM6CisgICAgICAgICAgICAnbWFpbF9vcHRpb25zJzogbGlzdCBvZiBwYXJhbWV0ZXJzIHRvIHRoZSBtYWlsIGNvbW1hbmQuICBBbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cyBhcmUgdXBwZXJjYXNlIHN0cmluZ3MuICBFeGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnQk9EWT04QklUTUlNRScsICdTTVRQVVRGOCddLgorICAgICAgICAgICAgJ3JjcHRfb3B0aW9ucyc6IHNhbWUsIGZvciB0aGUgcmNwdCBjb21tYW5kLgorCisgICAgICAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBOb25lIGZvciBhIG5vcm1hbCBgMjUwIE9rJyByZXNwb25zZTsKKyAgICAgICAgb3RoZXJ3aXNlLCBpdCBzaG91bGQgcmV0dXJuIHRoZSBkZXNpcmVkIHJlc3BvbnNlIHN0cmluZyBpbiBSRkMgODIxCisgICAgICAgIGZvcm1hdC4KIAogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAKIGNsYXNzIERlYnVnZ2luZ1NlcnZlcihTTVRQU2VydmVyKToKLSAgICAjIERvIHNvbWV0aGluZyB3aXRoIHRoZSBnYXRoZXJlZCBtZXNzYWdlCi0gICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CisKKyAgICBkZWYgX3ByaW50X21lc3NhZ2VfY29udGVudChzZWxmLCBwZWVyLCBkYXRhKToKICAgICAgICAgaW5oZWFkZXJzID0gMQotICAgICAgICBsaW5lcyA9IGRhdGEuc3BsaXQoJ1xuJykKLSAgICAgICAgcHJpbnQoJy0tLS0tLS0tLS0gTUVTU0FHRSBGT0xMT1dTIC0tLS0tLS0tLS0nKQorICAgICAgICBsaW5lcyA9IGRhdGEuc3BsaXRsaW5lcygpCiAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgogICAgICAgICAgICAgIyBoZWFkZXJzIGZpcnN0CiAgICAgICAgICAgICBpZiBpbmhlYWRlcnMgYW5kIG5vdCBsaW5lOgotICAgICAgICAgICAgICAgIHByaW50KCdYLVBlZXI6JywgcGVlclswXSkKKyAgICAgICAgICAgICAgICBwZWVyaGVhZGVyID0gJ1gtUGVlcjogJyArIHBlZXJbMF0KKyAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCBzdHIpOgorICAgICAgICAgICAgICAgICAgICAjIGRlY29kZWRfZGF0YT1mYWxzZTsgbWFrZSBoZWFkZXIgbWF0Y2ggb3RoZXIgYmluYXJ5IG91dHB1dAorICAgICAgICAgICAgICAgICAgICBwZWVyaGVhZGVyID0gcmVwcihwZWVyaGVhZGVyLmVuY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgICAgICBwcmludChwZWVyaGVhZGVyKQogICAgICAgICAgICAgICAgIGluaGVhZGVycyA9IDAKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGEsIHN0cik6CisgICAgICAgICAgICAgICAgIyBBdm9pZCBzcHVyaW91cyAnc3RyIG9uIGJ5dGVzIGluc3RhbmNlJyB3YXJuaW5nLgorICAgICAgICAgICAgICAgIGxpbmUgPSByZXByKGxpbmUpCiAgICAgICAgICAgICBwcmludChsaW5lKQorCisgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSwgKiprd2FyZ3MpOgorICAgICAgICBwcmludCgnLS0tLS0tLS0tLSBNRVNTQUdFIEZPTExPV1MgLS0tLS0tLS0tLScpCisgICAgICAgIGlmIGt3YXJnczoKKyAgICAgICAgICAgIGlmIGt3YXJncy5nZXQoJ21haWxfb3B0aW9ucycpOgorICAgICAgICAgICAgICAgIHByaW50KCdtYWlsIG9wdGlvbnM6ICVzJyAlIGt3YXJnc1snbWFpbF9vcHRpb25zJ10pCisgICAgICAgICAgICBpZiBrd2FyZ3MuZ2V0KCdyY3B0X29wdGlvbnMnKToKKyAgICAgICAgICAgICAgICBwcmludCgncmNwdCBvcHRpb25zOiAlc1xuJyAlIGt3YXJnc1sncmNwdF9vcHRpb25zJ10pCisgICAgICAgIHNlbGYuX3ByaW50X21lc3NhZ2VfY29udGVudChwZWVyLCBkYXRhKQogICAgICAgICBwcmludCgnLS0tLS0tLS0tLS0tIEVORCBNRVNTQUdFIC0tLS0tLS0tLS0tLScpCiAKIAogY2xhc3MgUHVyZVByb3h5KFNNVFBTZXJ2ZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBpZiAnZW5hYmxlX1NNVFBVVEY4JyBpbiBrd2FyZ3MgYW5kIGt3YXJnc1snZW5hYmxlX1NNVFBVVEY4J106CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQdXJlUHJveHkgZG9lcyBub3Qgc3VwcG9ydCBTTVRQVVRGOC4iKQorICAgICAgICBzdXBlcihQdXJlUHJveHksIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKwogICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEpOgogICAgICAgICBsaW5lcyA9IGRhdGEuc3BsaXQoJ1xuJykKICAgICAgICAgIyBMb29rIGZvciB0aGUgbGFzdCBoZWFkZXIKQEAgLTY3NCw2ICs3OTAsMTEgQEAKIAogCiBjbGFzcyBNYWlsbWFuUHJveHkoUHVyZVByb3h5KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgaWYgJ2VuYWJsZV9TTVRQVVRGOCcgaW4ga3dhcmdzIGFuZCBrd2FyZ3NbJ2VuYWJsZV9TTVRQVVRGOCddOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTWFpbG1hblByb3h5IGRvZXMgbm90IHN1cHBvcnQgU01UUFVURjguIikKKyAgICAgICAgc3VwZXIoUHVyZVByb3h5LCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisKICAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKICAgICAgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KICAgICAgICAgZnJvbSBNYWlsbWFuIGltcG9ydCBVdGlscwpAQCAtNzUyLDE3ICs4NzMsMTkgQEAKIAogCiBjbGFzcyBPcHRpb25zOgotICAgIHNldHVpZCA9IDEKKyAgICBzZXR1aWQgPSBUcnVlCiAgICAgY2xhc3NuYW1lID0gJ1B1cmVQcm94eScKICAgICBzaXplX2xpbWl0ID0gTm9uZQorICAgIGVuYWJsZV9TTVRQVVRGOCA9IEZhbHNlCiAKIAogZGVmIHBhcnNlYXJncygpOgogICAgIGdsb2JhbCBERUJVR1NUUkVBTQogICAgIHRyeToKICAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoCi0gICAgICAgICAgICBzeXMuYXJndlsxOl0sICduVmhjOnM6ZCcsCi0gICAgICAgICAgICBbJ2NsYXNzPScsICdub3NldHVpZCcsICd2ZXJzaW9uJywgJ2hlbHAnLCAnc2l6ZT0nLCAnZGVidWcnXSkKKyAgICAgICAgICAgIHN5cy5hcmd2WzE6XSwgJ25WaGM6czpkdScsCisgICAgICAgICAgICBbJ2NsYXNzPScsICdub3NldHVpZCcsICd2ZXJzaW9uJywgJ2hlbHAnLCAnc2l6ZT0nLCAnZGVidWcnLAorICAgICAgICAgICAgICdzbXRwdXRmOCddKQogICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3IgYXMgZToKICAgICAgICAgdXNhZ2UoMSwgZSkKIApAQCAtNzc0LDExICs4OTcsMTMgQEAKICAgICAgICAgICAgIHByaW50KF9fdmVyc2lvbl9fKQogICAgICAgICAgICAgc3lzLmV4aXQoMCkKICAgICAgICAgZWxpZiBvcHQgaW4gKCctbicsICctLW5vc2V0dWlkJyk6Ci0gICAgICAgICAgICBvcHRpb25zLnNldHVpZCA9IDAKKyAgICAgICAgICAgIG9wdGlvbnMuc2V0dWlkID0gRmFsc2UKICAgICAgICAgZWxpZiBvcHQgaW4gKCctYycsICctLWNsYXNzJyk6CiAgICAgICAgICAgICBvcHRpb25zLmNsYXNzbmFtZSA9IGFyZwogICAgICAgICBlbGlmIG9wdCBpbiAoJy1kJywgJy0tZGVidWcnKToKICAgICAgICAgICAgIERFQlVHU1RSRUFNID0gc3lzLnN0ZGVycgorICAgICAgICBlbGlmIG9wdCBpbiAoJy11JywgJy0tc210cHV0ZjgnKToKKyAgICAgICAgICAgIG9wdGlvbnMuZW5hYmxlX1NNVFBVVEY4ID0gVHJ1ZQogICAgICAgICBlbGlmIG9wdCBpbiAoJy1zJywgJy0tc2l6ZScpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGludF9zaXplID0gaW50KGFyZykKQEAgLTgzMyw3ICs5NTgsNyBAQAogICAgIGNsYXNzXyA9IGdldGF0dHIobW9kLCBjbGFzc25hbWUpCiAgICAgcHJveHkgPSBjbGFzc18oKG9wdGlvbnMubG9jYWxob3N0LCBvcHRpb25zLmxvY2FscG9ydCksCiAgICAgICAgICAgICAgICAgICAgKG9wdGlvbnMucmVtb3RlaG9zdCwgb3B0aW9ucy5yZW1vdGVwb3J0KSwKLSAgICAgICAgICAgICAgICAgICBvcHRpb25zLnNpemVfbGltaXQpCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zaXplX2xpbWl0LCBlbmFibGVfU01UUFVURjg9b3B0aW9ucy5lbmFibGVfU01UUFVURjgpCiAgICAgaWYgb3B0aW9ucy5zZXR1aWQ6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcG9ydCBwd2QKZGlmZiAtLWdpdCBhL0xpYi9zbXRwbGliLnB5IGIvTGliL3NtdHBsaWIucHkKaW5kZXggZGIyM2ZmMC4uNDc1Njk3MyAxMDA3NTUKLS0tIGEvTGliL3NtdHBsaWIucHkKKysrIGIvTGliL3NtdHBsaWIucHkKQEAgLTUwLDggKzUwLDkgQEAKIGltcG9ydCBiYXNlNjQKIGltcG9ydCBobWFjCiBpbXBvcnQgY29weQoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgc3lzCiBmcm9tIGVtYWlsLmJhc2U2NG1pbWUgaW1wb3J0IGJvZHlfZW5jb2RlIGFzIGVuY29kZV9iYXNlNjQKLWZyb20gc3lzIGltcG9ydCBzdGRlcnIKIAogX19hbGxfXyA9IFsiU01UUEV4Y2VwdGlvbiIsICJTTVRQU2VydmVyRGlzY29ubmVjdGVkIiwgIlNNVFBSZXNwb25zZUV4Y2VwdGlvbiIsCiAgICAgICAgICAgICJTTVRQU2VuZGVyUmVmdXNlZCIsICJTTVRQUmVjaXBpZW50c1JlZnVzZWQiLCAiU01UUERhdGFFcnJvciIsCkBAIC03MCw2ICs3MSwxMyBAQAogY2xhc3MgU01UUEV4Y2VwdGlvbihPU0Vycm9yKToKICAgICAiIiJCYXNlIGNsYXNzIGZvciBhbGwgZXhjZXB0aW9ucyByYWlzZWQgYnkgdGhpcyBtb2R1bGUuIiIiCiAKK2NsYXNzIFNNVFBOb3RTdXBwb3J0ZWRFcnJvcihTTVRQRXhjZXB0aW9uKToKKyAgICAiIiJUaGUgY29tbWFuZCBvciBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgU01UUCBzZXJ2ZXIuCisKKyAgICBUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gcnVuIGEgY29tbWFuZCBvciBhCisgICAgY29tbWFuZCB3aXRoIGFuIG9wdGlvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIuCisgICAgIiIiCisKIGNsYXNzIFNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQoU01UUEV4Y2VwdGlvbik6CiAgICAgIiIiTm90IGNvbm5lY3RlZCB0byBhbnkgU01UUCBzZXJ2ZXIuCiAKQEAgLTIzNiw2ICsyNDQsNyBAQAogICAgICAgICBzZWxmLl9ob3N0ID0gaG9zdAogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CiAgICAgICAgIHNlbGYuZXNtdHBfZmVhdHVyZXMgPSB7fQorICAgICAgICBzZWxmLmNvbW1hbmRfZW5jb2RpbmcgPSAnYXNjaWknCiAgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MgPSBzb3VyY2VfYWRkcmVzcwogCiAgICAgICAgIGlmIGhvc3Q6CkBAIC0yODIsMTIgKzI5MSwxNyBAQAogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5kZWJ1Z2xldmVsID0gZGVidWdsZXZlbAogCisgICAgZGVmIF9wcmludF9kZWJ1ZyhzZWxmLCAqYXJncyk6CisgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDE6CisgICAgICAgICAgICBwcmludChkYXRldGltZS5kYXRldGltZS5ub3coKS50aW1lKCksICphcmdzLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmludCgqYXJncywgZmlsZT1zeXMuc3RkZXJyKQorCiAgICAgZGVmIF9nZXRfc29ja2V0KHNlbGYsIGhvc3QsIHBvcnQsIHRpbWVvdXQpOgogICAgICAgICAjIFRoaXMgbWFrZXMgaXQgc2ltcGxlciBmb3IgU01UUF9TU0wgdG8gdXNlIHRoZSBTTVRQIGNvbm5lY3QgY29kZQogICAgICAgICAjIGFuZCBqdXN0IGFsdGVyIHRoZSBzb2NrZXQgY29ubmVjdGlvbiBiaXQuCiAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICBwcmludCgnY29ubmVjdDogdG8nLCAoaG9zdCwgcG9ydCksIHNlbGYuc291cmNlX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN0ZGVycikKKyAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCdjb25uZWN0OiB0bycsIChob3N0LCBwb3J0KSwgc2VsZi5zb3VyY2VfYWRkcmVzcykKICAgICAgICAgcmV0dXJuIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb3VyY2VfYWRkcmVzcykKIApAQCAtMzE3LDIxICszMzEsMjQgQEAKICAgICAgICAgaWYgbm90IHBvcnQ6CiAgICAgICAgICAgICBwb3J0ID0gc2VsZi5kZWZhdWx0X3BvcnQKICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgIHByaW50KCdjb25uZWN0OicsIChob3N0LCBwb3J0KSwgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygnY29ubmVjdDonLCAoaG9zdCwgcG9ydCkpCiAgICAgICAgIHNlbGYuc29jayA9IHNlbGYuX2dldF9zb2NrZXQoaG9zdCwgcG9ydCwgc2VsZi50aW1lb3V0KQogICAgICAgICBzZWxmLmZpbGUgPSBOb25lCiAgICAgICAgIChjb2RlLCBtc2cpID0gc2VsZi5nZXRyZXBseSgpCiAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICBwcmludCgiY29ubmVjdDoiLCBtc2csIGZpbGU9c3RkZXJyKQorICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJ2Nvbm5lY3Q6JywgcmVwcihtc2cpKQogICAgICAgICByZXR1cm4gKGNvZGUsIG1zZykKIAogICAgIGRlZiBzZW5kKHNlbGYsIHMpOgogICAgICAgICAiIiJTZW5kIGBzJyB0byB0aGUgc2VydmVyLiIiIgogICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgcHJpbnQoJ3NlbmQ6JywgcmVwcihzKSwgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1Zygnc2VuZDonLCByZXByKHMpKQogICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdzb2NrJykgYW5kIHNlbGYuc29jazoKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uocywgc3RyKToKLSAgICAgICAgICAgICAgICBzID0gcy5lbmNvZGUoImFzY2lpIikKKyAgICAgICAgICAgICAgICAjIHNlbmQgaXMgdXNlZCBieSB0aGUgJ2RhdGEnIGNvbW1hbmQsIHdoZXJlIGNvbW1hbmRfZW5jb2RpbmcKKyAgICAgICAgICAgICAgICAjIHNob3VsZCBub3QgYmUgdXNlZCwgYnV0ICdkYXRhJyBuZWVkcyB0byBjb252ZXJ0IHRoZSBzdHJpbmcgdG8KKyAgICAgICAgICAgICAgICAjIGJpbmFyeSBpdHNlbGYgYW55d2F5LCBzbyB0aGF0J3Mgbm90IGEgcHJvYmxlbS4KKyAgICAgICAgICAgICAgICBzID0gcy5lbmNvZGUoc2VsZi5jb21tYW5kX2VuY29kaW5nKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuc29jay5zZW5kYWxsKHMpCiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKQEAgLTM3NSw3ICszOTIsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgICAgICAgICAgIHJhaXNlIFNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQoIkNvbm5lY3Rpb24gdW5leHBlY3RlZGx5IGNsb3NlZCIpCiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgICAgIHByaW50KCdyZXBseTonLCByZXByKGxpbmUpLCBmaWxlPXN0ZGVycikKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygncmVwbHk6JywgcmVwcihsaW5lKSkKICAgICAgICAgICAgIGlmIGxlbihsaW5lKSA+IF9NQVhMSU5FOgogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgICAgICAgICAgIHJhaXNlIFNNVFBSZXNwb25zZUV4Y2VwdGlvbig1MDAsICJMaW5lIHRvbyBsb25nLiIpCkBAIC0zOTQsOCArNDExLDcgQEAKIAogICAgICAgICBlcnJtc2cgPSBiIlxuIi5qb2luKHJlc3ApCiAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICBwcmludCgncmVwbHk6IHJldGNvZGUgKCVzKTsgTXNnOiAlcycgJSAoZXJyY29kZSwgZXJybXNnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN0ZGVycikKKyAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCdyZXBseTogcmV0Y29kZSAoJXMpOyBNc2c6ICVhJyAlIChlcnJjb2RlLCBlcnJtc2cpKQogICAgICAgICByZXR1cm4gZXJyY29kZSwgZXJybXNnCiAKICAgICBkZWYgZG9jbWQoc2VsZiwgY21kLCBhcmdzPSIiKToKQEAgLTQ3Nyw2ICs0OTMsNyBAQAogCiAgICAgZGVmIHJzZXQoc2VsZik6CiAgICAgICAgICIiIlNNVFAgJ3JzZXQnIGNvbW1hbmQgLS0gcmVzZXRzIHNlc3Npb24uIiIiCisgICAgICAgIHNlbGYuY29tbWFuZF9lbmNvZGluZyA9ICdhc2NpaScKICAgICAgICAgcmV0dXJuIHNlbGYuZG9jbWQoInJzZXQiKQogCiAgICAgZGVmIF9yc2V0KHNlbGYpOgpAQCAtNDk2LDkgKzUxMywyMiBAQAogICAgICAgICByZXR1cm4gc2VsZi5kb2NtZCgibm9vcCIpCiAKICAgICBkZWYgbWFpbChzZWxmLCBzZW5kZXIsIG9wdGlvbnM9W10pOgotICAgICAgICAiIiJTTVRQICdtYWlsJyBjb21tYW5kIC0tIGJlZ2lucyBtYWlsIHhmZXIgc2Vzc2lvbi4iIiIKKyAgICAgICAgIiIiU01UUCAnbWFpbCcgY29tbWFuZCAtLSBiZWdpbnMgbWFpbCB4ZmVyIHNlc3Npb24uCisKKyAgICAgICAgVGhpcyBtZXRob2QgbWF5IHJhaXNlIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uczoKKworICAgICAgICAgU01UUE5vdFN1cHBvcnRlZEVycm9yICBUaGUgb3B0aW9ucyBwYXJhbWV0ZXIgaW5jbHVkZXMgJ1NNVFBVVEY4JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgdGhlIFNNVFBVVEY4IGV4dGVuc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzZXJ2ZXIuCisgICAgICAgICIiIgogICAgICAgICBvcHRpb25saXN0ID0gJycKICAgICAgICAgaWYgb3B0aW9ucyBhbmQgc2VsZi5kb2VzX2VzbXRwOgorICAgICAgICAgICAgaWYgYW55KHgubG93ZXIoKT09J3NtdHB1dGY4JyBmb3IgeCBpbiBvcHRpb25zKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmhhc19leHRuKCdzbXRwdXRmOCcpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbW1hbmRfZW5jb2RpbmcgPSAndXRmLTgnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgU01UUE5vdFN1cHBvcnRlZEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgJ1NNVFBVVEY4IG5vdCBzdXBwb3J0ZWQgYnkgc2VydmVyJykKICAgICAgICAgICAgIG9wdGlvbmxpc3QgPSAnICcgKyAnICcuam9pbihvcHRpb25zKQogICAgICAgICBzZWxmLnB1dGNtZCgibWFpbCIsICJGUk9NOiVzJXMiICUgKHF1b3RlYWRkcihzZW5kZXIpLCBvcHRpb25saXN0KSkKICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0cmVwbHkoKQpAQCAtNTI0LDcgKzU1NCw3IEBACiAgICAgICAgIHNlbGYucHV0Y21kKCJkYXRhIikKICAgICAgICAgKGNvZGUsIHJlcGwpID0gc2VsZi5nZXRyZXBseSgpCiAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICBwcmludCgiZGF0YToiLCAoY29kZSwgcmVwbCksIGZpbGU9c3RkZXJyKQorICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJ2RhdGE6JywgKGNvZGUsIHJlcGwpKQogICAgICAgICBpZiBjb2RlICE9IDM1NDoKICAgICAgICAgICAgIHJhaXNlIFNNVFBEYXRhRXJyb3IoY29kZSwgcmVwbCkKICAgICAgICAgZWxzZToKQEAgLTUzNyw3ICs1NjcsNyBAQAogICAgICAgICAgICAgc2VsZi5zZW5kKHEpCiAgICAgICAgICAgICAoY29kZSwgbXNnKSA9IHNlbGYuZ2V0cmVwbHkoKQogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgICAgICBwcmludCgiZGF0YToiLCAoY29kZSwgbXNnKSwgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJ2RhdGE6JywgKGNvZGUsIG1zZykpCiAgICAgICAgICAgICByZXR1cm4gKGNvZGUsIG1zZykKIAogICAgIGRlZiB2ZXJpZnkoc2VsZiwgYWRkcmVzcyk6CkBAIC01NzEsMTIgKzYwMSw3NyBAQAogICAgICAgICAgICAgICAgIGlmIG5vdCAoMjAwIDw9IGNvZGUgPD0gMjk5KToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgU01UUEhlbG9FcnJvcihjb2RlLCByZXNwKQogCi0gICAgZGVmIGxvZ2luKHNlbGYsIHVzZXIsIHBhc3N3b3JkKToKKyAgICBkZWYgYXV0aChzZWxmLCBtZWNoYW5pc20sIGF1dGhvYmplY3QsICosIGluaXRpYWxfcmVzcG9uc2Vfb2s9VHJ1ZSk6CisgICAgICAgICIiIkF1dGhlbnRpY2F0aW9uIGNvbW1hbmQgLSByZXF1aXJlcyByZXNwb25zZSBwcm9jZXNzaW5nLgorCisgICAgICAgICdtZWNoYW5pc20nIHNwZWNpZmllcyB3aGljaCBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20gaXMgdG8KKyAgICAgICAgYmUgdXNlZCAtIHRoZSB2YWxpZCB2YWx1ZXMgYXJlIHRob3NlIGxpc3RlZCBpbiB0aGUgJ2F1dGgnCisgICAgICAgIGVsZW1lbnQgb2YgJ2VzbXRwX2ZlYXR1cmVzJy4KKworICAgICAgICAnYXV0aG9iamVjdCcgbXVzdCBiZSBhIGNhbGxhYmxlIG9iamVjdCB0YWtpbmcgYSBzaW5nbGUgYXJndW1lbnQ6CisKKyAgICAgICAgICAgICAgICBkYXRhID0gYXV0aG9iamVjdChjaGFsbGVuZ2UpCisKKyAgICAgICAgSXQgd2lsbCBiZSBjYWxsZWQgdG8gcHJvY2VzcyB0aGUgc2VydmVyJ3MgY2hhbGxlbmdlIHJlc3BvbnNlOyB0aGUKKyAgICAgICAgY2hhbGxlbmdlIGFyZ3VtZW50IGl0IGlzIHBhc3NlZCB3aWxsIGJlIGEgYnl0ZXMuICBJdCBzaG91bGQgcmV0dXJuCisgICAgICAgIGJ5dGVzIGRhdGEgdGhhdCB3aWxsIGJlIGJhc2U2NCBlbmNvZGVkIGFuZCBzZW50IHRvIHRoZSBzZXJ2ZXIuCisKKyAgICAgICAgS2V5d29yZCBhcmd1bWVudHM6CisgICAgICAgICAgICAtIGluaXRpYWxfcmVzcG9uc2Vfb2s6IEFsbG93IHNlbmRpbmcgdGhlIFJGQyA0OTU0IGluaXRpYWwtcmVzcG9uc2UKKyAgICAgICAgICAgICAgdG8gdGhlIEFVVEggY29tbWFuZCwgaWYgdGhlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgc3VwcG9ydHMgaXQuCisgICAgICAgICIiIgorICAgICAgICAjIFJGQyA0OTU0IGFsbG93cyBhdXRoIG1ldGhvZHMgdG8gcHJvdmlkZSBhbiBpbml0aWFsIHJlc3BvbnNlLiAgTm90IGFsbAorICAgICAgICAjIG1ldGhvZHMgc3VwcG9ydCBpdC4gIEJ5IGRlZmluaXRpb24sIGlmIHRoZXkgcmV0dXJuIHNvbWV0aGluZyBvdGhlcgorICAgICAgICAjIHRoYW4gTm9uZSB3aGVuIGNoYWxsZW5nZSBpcyBOb25lLCB0aGVuIHRoZXkgZG8uICBTZWUgaXNzdWUgIzE1MDE0LgorICAgICAgICBtZWNoYW5pc20gPSBtZWNoYW5pc20udXBwZXIoKQorICAgICAgICBpbml0aWFsX3Jlc3BvbnNlID0gKGF1dGhvYmplY3QoKSBpZiBpbml0aWFsX3Jlc3BvbnNlX29rIGVsc2UgTm9uZSkKKyAgICAgICAgaWYgaW5pdGlhbF9yZXNwb25zZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJlc3BvbnNlID0gZW5jb2RlX2Jhc2U2NChpbml0aWFsX3Jlc3BvbnNlLmVuY29kZSgnYXNjaWknKSwgZW9sPScnKQorICAgICAgICAgICAgKGNvZGUsIHJlc3ApID0gc2VsZi5kb2NtZCgiQVVUSCIsIG1lY2hhbmlzbSArICIgIiArIHJlc3BvbnNlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgKGNvZGUsIHJlc3ApID0gc2VsZi5kb2NtZCgiQVVUSCIsIG1lY2hhbmlzbSkKKyAgICAgICAgIyBJZiBzZXJ2ZXIgcmVzcG9uZHMgd2l0aCBhIGNoYWxsZW5nZSwgc2VuZCB0aGUgcmVzcG9uc2UuCisgICAgICAgIGlmIGNvZGUgPT0gMzM0OgorICAgICAgICAgICAgY2hhbGxlbmdlID0gYmFzZTY0LmRlY29kZWJ5dGVzKHJlc3ApCisgICAgICAgICAgICByZXNwb25zZSA9IGVuY29kZV9iYXNlNjQoCisgICAgICAgICAgICAgICAgYXV0aG9iamVjdChjaGFsbGVuZ2UpLmVuY29kZSgnYXNjaWknKSwgZW9sPScnKQorICAgICAgICAgICAgKGNvZGUsIHJlc3ApID0gc2VsZi5kb2NtZChyZXNwb25zZSkKKyAgICAgICAgaWYgY29kZSBpbiAoMjM1LCA1MDMpOgorICAgICAgICAgICAgcmV0dXJuIChjb2RlLCByZXNwKQorICAgICAgICByYWlzZSBTTVRQQXV0aGVudGljYXRpb25FcnJvcihjb2RlLCByZXNwKQorCisgICAgZGVmIGF1dGhfY3JhbV9tZDUoc2VsZiwgY2hhbGxlbmdlPU5vbmUpOgorICAgICAgICAiIiIgQXV0aG9iamVjdCB0byB1c2Ugd2l0aCBDUkFNLU1ENSBhdXRoZW50aWNhdGlvbi4gUmVxdWlyZXMgc2VsZi51c2VyCisgICAgICAgIGFuZCBzZWxmLnBhc3N3b3JkIHRvIGJlIHNldC4iIiIKKyAgICAgICAgIyBDUkFNLU1ENSBkb2VzIG5vdCBzdXBwb3J0IGluaXRpYWwtcmVzcG9uc2UuCisgICAgICAgIGlmIGNoYWxsZW5nZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYudXNlciArICIgIiArIGhtYWMuSE1BQygKKyAgICAgICAgICAgIHNlbGYucGFzc3dvcmQuZW5jb2RlKCdhc2NpaScpLCBjaGFsbGVuZ2UsICdtZDUnKS5oZXhkaWdlc3QoKQorCisgICAgZGVmIGF1dGhfcGxhaW4oc2VsZiwgY2hhbGxlbmdlPU5vbmUpOgorICAgICAgICAiIiIgQXV0aG9iamVjdCB0byB1c2Ugd2l0aCBQTEFJTiBhdXRoZW50aWNhdGlvbi4gUmVxdWlyZXMgc2VsZi51c2VyIGFuZAorICAgICAgICBzZWxmLnBhc3N3b3JkIHRvIGJlIHNldC4iIiIKKyAgICAgICAgcmV0dXJuICJcMCVzXDAlcyIgJSAoc2VsZi51c2VyLCBzZWxmLnBhc3N3b3JkKQorCisgICAgZGVmIGF1dGhfbG9naW4oc2VsZiwgY2hhbGxlbmdlPU5vbmUpOgorICAgICAgICAiIiIgQXV0aG9iamVjdCB0byB1c2Ugd2l0aCBMT0dJTiBhdXRoZW50aWNhdGlvbi4gUmVxdWlyZXMgc2VsZi51c2VyIGFuZAorICAgICAgICBzZWxmLnBhc3N3b3JkIHRvIGJlIHNldC4iIiIKKyAgICAgICAgaWYgY2hhbGxlbmdlIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi51c2VyCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXNzd29yZAorCisgICAgZGVmIGxvZ2luKHNlbGYsIHVzZXIsIHBhc3N3b3JkLCAqLCBpbml0aWFsX3Jlc3BvbnNlX29rPVRydWUpOgogICAgICAgICAiIiJMb2cgaW4gb24gYW4gU01UUCBzZXJ2ZXIgdGhhdCByZXF1aXJlcyBhdXRoZW50aWNhdGlvbi4KIAogICAgICAgICBUaGUgYXJndW1lbnRzIGFyZToKLSAgICAgICAgICAgIC0gdXNlcjogICAgIFRoZSB1c2VyIG5hbWUgdG8gYXV0aGVudGljYXRlIHdpdGguCi0gICAgICAgICAgICAtIHBhc3N3b3JkOiBUaGUgcGFzc3dvcmQgZm9yIHRoZSBhdXRoZW50aWNhdGlvbi4KKyAgICAgICAgICAgIC0gdXNlcjogICAgICAgICBUaGUgdXNlciBuYW1lIHRvIGF1dGhlbnRpY2F0ZSB3aXRoLgorICAgICAgICAgICAgLSBwYXNzd29yZDogICAgIFRoZSBwYXNzd29yZCBmb3IgdGhlIGF1dGhlbnRpY2F0aW9uLgorCisgICAgICAgIEtleXdvcmQgYXJndW1lbnRzOgorICAgICAgICAgICAgLSBpbml0aWFsX3Jlc3BvbnNlX29rOiBBbGxvdyBzZW5kaW5nIHRoZSBSRkMgNDk1NCBpbml0aWFsLXJlc3BvbnNlCisgICAgICAgICAgICAgIHRvIHRoZSBBVVRIIGNvbW1hbmQsIGlmIHRoZSBhdXRoZW50aWNhdGlvbiBtZXRob2RzIHN1cHBvcnRzIGl0LgogCiAgICAgICAgIElmIHRoZXJlIGhhcyBiZWVuIG5vIHByZXZpb3VzIEVITE8gb3IgSEVMTyBjb21tYW5kIHRoaXMgc2Vzc2lvbiwgdGhpcwogICAgICAgICBtZXRob2QgdHJpZXMgRVNNVFAgRUhMTyBmaXJzdC4KQEAgLTU4OSw2NyArNjg0LDQ5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGhlbG8gZ3JlZXRpbmcuCiAgICAgICAgICBTTVRQQXV0aGVudGljYXRpb25FcnJvciAgVGhlIHNlcnZlciBkaWRuJ3QgYWNjZXB0IHRoZSB1c2VybmFtZS8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCBjb21iaW5hdGlvbi4KKyAgICAgICAgIFNNVFBOb3RTdXBwb3J0ZWRFcnJvciAgICBUaGUgQVVUSCBjb21tYW5kIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyLgogICAgICAgICAgU01UUEV4Y2VwdGlvbiAgICAgICAgICAgIE5vIHN1aXRhYmxlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB3YXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZC4KICAgICAgICAgIiIiCiAKLSAgICAgICAgZGVmIGVuY29kZV9jcmFtX21kNShjaGFsbGVuZ2UsIHVzZXIsIHBhc3N3b3JkKToKLSAgICAgICAgICAgIGNoYWxsZW5nZSA9IGJhc2U2NC5kZWNvZGVieXRlcyhjaGFsbGVuZ2UpCi0gICAgICAgICAgICByZXNwb25zZSA9IHVzZXIgKyAiICIgKyBobWFjLkhNQUMocGFzc3dvcmQuZW5jb2RlKCdhc2NpaScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZSwgJ21kNScpLmhleGRpZ2VzdCgpCi0gICAgICAgICAgICByZXR1cm4gZW5jb2RlX2Jhc2U2NChyZXNwb25zZS5lbmNvZGUoJ2FzY2lpJyksIGVvbD0nJykKLQotICAgICAgICBkZWYgZW5jb2RlX3BsYWluKHVzZXIsIHBhc3N3b3JkKToKLSAgICAgICAgICAgIHMgPSAiXDAlc1wwJXMiICUgKHVzZXIsIHBhc3N3b3JkKQotICAgICAgICAgICAgcmV0dXJuIGVuY29kZV9iYXNlNjQocy5lbmNvZGUoJ2FzY2lpJyksIGVvbD0nJykKLQotICAgICAgICBBVVRIX1BMQUlOID0gIlBMQUlOIgotICAgICAgICBBVVRIX0NSQU1fTUQ1ID0gIkNSQU0tTUQ1IgotICAgICAgICBBVVRIX0xPR0lOID0gIkxPR0lOIgotCiAgICAgICAgIHNlbGYuZWhsb19vcl9oZWxvX2lmX25lZWRlZCgpCi0KICAgICAgICAgaWYgbm90IHNlbGYuaGFzX2V4dG4oImF1dGgiKToKLSAgICAgICAgICAgIHJhaXNlIFNNVFBFeGNlcHRpb24oIlNNVFAgQVVUSCBleHRlbnNpb24gbm90IHN1cHBvcnRlZCBieSBzZXJ2ZXIuIikKKyAgICAgICAgICAgIHJhaXNlIFNNVFBOb3RTdXBwb3J0ZWRFcnJvcigKKyAgICAgICAgICAgICAgICAiU01UUCBBVVRIIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHNlcnZlci4iKQogCiAgICAgICAgICMgQXV0aGVudGljYXRpb24gbWV0aG9kcyB0aGUgc2VydmVyIGNsYWltcyB0byBzdXBwb3J0CiAgICAgICAgIGFkdmVydGlzZWRfYXV0aGxpc3QgPSBzZWxmLmVzbXRwX2ZlYXR1cmVzWyJhdXRoIl0uc3BsaXQoKQogCi0gICAgICAgICMgTGlzdCBvZiBhdXRoZW50aWNhdGlvbiBtZXRob2RzIHdlIHN1cHBvcnQ6IGZyb20gcHJlZmVycmVkIHRvCi0gICAgICAgICMgbGVzcyBwcmVmZXJyZWQgbWV0aG9kcy4gRXhjZXB0IGZvciB0aGUgcHVycG9zZSBvZiB0ZXN0aW5nIHRoZSB3ZWFrZXIKLSAgICAgICAgIyBvbmVzLCB3ZSBwcmVmZXIgc3Ryb25nZXIgbWV0aG9kcyBsaWtlIENSQU0tTUQ1OgotICAgICAgICBwcmVmZXJyZWRfYXV0aHMgPSBbQVVUSF9DUkFNX01ENSwgQVVUSF9QTEFJTiwgQVVUSF9MT0dJTl0KKyAgICAgICAgIyBBdXRoZW50aWNhdGlvbiBtZXRob2RzIHdlIGNhbiBoYW5kbGUgaW4gb3VyIHByZWZlcnJlZCBvcmRlcjoKKyAgICAgICAgcHJlZmVycmVkX2F1dGhzID0gWydDUkFNLU1ENScsICdQTEFJTicsICdMT0dJTiddCiAKLSAgICAgICAgIyBXZSB0cnkgdGhlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgdGhlIHNlcnZlciBhZHZlcnRpc2VzLCBidXQgb25seSB0aGUKLSAgICAgICAgIyBvbmVzICp3ZSogc3VwcG9ydC4gQW5kIGluIG91ciBwcmVmZXJyZWQgb3JkZXIuCi0gICAgICAgIGF1dGhsaXN0ID0gW2F1dGggZm9yIGF1dGggaW4gcHJlZmVycmVkX2F1dGhzIGlmIGF1dGggaW4gYWR2ZXJ0aXNlZF9hdXRobGlzdF0KKyAgICAgICAgIyBXZSB0cnkgdGhlIHN1cHBvcnRlZCBhdXRoZW50aWNhdGlvbnMgaW4gb3VyIHByZWZlcnJlZCBvcmRlciwgaWYKKyAgICAgICAgIyB0aGUgc2VydmVyIHN1cHBvcnRzIHRoZW0uCisgICAgICAgIGF1dGhsaXN0ID0gW2F1dGggZm9yIGF1dGggaW4gcHJlZmVycmVkX2F1dGhzCisgICAgICAgICAgICAgICAgICAgIGlmIGF1dGggaW4gYWR2ZXJ0aXNlZF9hdXRobGlzdF0KICAgICAgICAgaWYgbm90IGF1dGhsaXN0OgogICAgICAgICAgICAgcmFpc2UgU01UUEV4Y2VwdGlvbigiTm8gc3VpdGFibGUgYXV0aGVudGljYXRpb24gbWV0aG9kIGZvdW5kLiIpCiAKICAgICAgICAgIyBTb21lIHNlcnZlcnMgYWR2ZXJ0aXNlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgdGhleSBkb24ndCByZWFsbHkKICAgICAgICAgIyBzdXBwb3J0LCBzbyBpZiBhdXRoZW50aWNhdGlvbiBmYWlscywgd2UgY29udGludWUgdW50aWwgd2UndmUgdHJpZWQKICAgICAgICAgIyBhbGwgbWV0aG9kcy4KKyAgICAgICAgc2VsZi51c2VyLCBzZWxmLnBhc3N3b3JkID0gdXNlciwgcGFzc3dvcmQKICAgICAgICAgZm9yIGF1dGhtZXRob2QgaW4gYXV0aGxpc3Q6Ci0gICAgICAgICAgICBpZiBhdXRobWV0aG9kID09IEFVVEhfQ1JBTV9NRDU6Ci0gICAgICAgICAgICAgICAgKGNvZGUsIHJlc3ApID0gc2VsZi5kb2NtZCgiQVVUSCIsIEFVVEhfQ1JBTV9NRDUpCi0gICAgICAgICAgICAgICAgaWYgY29kZSA9PSAzMzQ6Ci0gICAgICAgICAgICAgICAgICAgIChjb2RlLCByZXNwKSA9IHNlbGYuZG9jbWQoZW5jb2RlX2NyYW1fbWQ1KHJlc3AsIHVzZXIsIHBhc3N3b3JkKSkKLSAgICAgICAgICAgIGVsaWYgYXV0aG1ldGhvZCA9PSBBVVRIX1BMQUlOOgotICAgICAgICAgICAgICAgIChjb2RlLCByZXNwKSA9IHNlbGYuZG9jbWQoIkFVVEgiLAotICAgICAgICAgICAgICAgICAgICBBVVRIX1BMQUlOICsgIiAiICsgZW5jb2RlX3BsYWluKHVzZXIsIHBhc3N3b3JkKSkKLSAgICAgICAgICAgIGVsaWYgYXV0aG1ldGhvZCA9PSBBVVRIX0xPR0lOOgotICAgICAgICAgICAgICAgIChjb2RlLCByZXNwKSA9IHNlbGYuZG9jbWQoIkFVVEgiLAotICAgICAgICAgICAgICAgICAgICAiJXMgJXMiICUgKEFVVEhfTE9HSU4sIGVuY29kZV9iYXNlNjQodXNlci5lbmNvZGUoJ2FzY2lpJyksIGVvbD0nJykpKQotICAgICAgICAgICAgICAgIGlmIGNvZGUgPT0gMzM0OgotICAgICAgICAgICAgICAgICAgICAoY29kZSwgcmVzcCkgPSBzZWxmLmRvY21kKGVuY29kZV9iYXNlNjQocGFzc3dvcmQuZW5jb2RlKCdhc2NpaScpLCBlb2w9JycpKQorICAgICAgICAgICAgbWV0aG9kX25hbWUgPSAnYXV0aF8nICsgYXV0aG1ldGhvZC5sb3dlcigpLnJlcGxhY2UoJy0nLCAnXycpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgKGNvZGUsIHJlc3ApID0gc2VsZi5hdXRoKAorICAgICAgICAgICAgICAgICAgICBhdXRobWV0aG9kLCBnZXRhdHRyKHNlbGYsIG1ldGhvZF9uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbF9yZXNwb25zZV9vaz1pbml0aWFsX3Jlc3BvbnNlX29rKQorICAgICAgICAgICAgICAgICMgMjM1ID09ICdBdXRoZW50aWNhdGlvbiBzdWNjZXNzZnVsJworICAgICAgICAgICAgICAgICMgNTAzID09ICdFcnJvcjogYWxyZWFkeSBhdXRoZW50aWNhdGVkJworICAgICAgICAgICAgICAgIGlmIGNvZGUgaW4gKDIzNSwgNTAzKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChjb2RlLCByZXNwKQorICAgICAgICAgICAgZXhjZXB0IFNNVFBBdXRoZW50aWNhdGlvbkVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgbGFzdF9leGNlcHRpb24gPSBlCiAKLSAgICAgICAgICAgICMgMjM1ID09ICdBdXRoZW50aWNhdGlvbiBzdWNjZXNzZnVsJwotICAgICAgICAgICAgIyA1MDMgPT0gJ0Vycm9yOiBhbHJlYWR5IGF1dGhlbnRpY2F0ZWQnCi0gICAgICAgICAgICBpZiBjb2RlIGluICgyMzUsIDUwMyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIChjb2RlLCByZXNwKQotCi0gICAgICAgICMgV2UgY291bGQgbm90IGxvZ2luIHN1Y2Vzc2Z1bGx5LiBSZXR1cm4gcmVzdWx0IG9mIGxhc3QgYXR0ZW1wdC4KLSAgICAgICAgcmFpc2UgU01UUEF1dGhlbnRpY2F0aW9uRXJyb3IoY29kZSwgcmVzcCkKKyAgICAgICAgIyBXZSBjb3VsZCBub3QgbG9naW4gc3VjY2Vzc2Z1bGx5LiAgUmV0dXJuIHJlc3VsdCBvZiBsYXN0IGF0dGVtcHQuCisgICAgICAgIHJhaXNlIGxhc3RfZXhjZXB0aW9uCiAKICAgICBkZWYgc3RhcnR0bHMoc2VsZiwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLCBjb250ZXh0PU5vbmUpOgogICAgICAgICAiIiJQdXRzIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBTTVRQIHNlcnZlciBpbnRvIFRMUyBtb2RlLgpAQCAtNjcwLDcgKzc0Nyw4IEBACiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmVobG9fb3JfaGVsb19pZl9uZWVkZWQoKQogICAgICAgICBpZiBub3Qgc2VsZi5oYXNfZXh0bigic3RhcnR0bHMiKToKLSAgICAgICAgICAgIHJhaXNlIFNNVFBFeGNlcHRpb24oIlNUQVJUVExTIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHNlcnZlci4iKQorICAgICAgICAgICAgcmFpc2UgU01UUE5vdFN1cHBvcnRlZEVycm9yKAorICAgICAgICAgICAgICAgICJTVEFSVFRMUyBleHRlbnNpb24gbm90IHN1cHBvcnRlZCBieSBzZXJ2ZXIuIikKICAgICAgICAgKHJlc3AsIHJlcGx5KSA9IHNlbGYuZG9jbWQoIlNUQVJUVExTIikKICAgICAgICAgaWYgcmVzcCA9PSAyMjA6CiAgICAgICAgICAgICBpZiBub3QgX2hhdmVfc3NsOgpAQCAtNzM1LDYgKzgxMyw5IEBACiAgICAgICAgICBTTVRQRGF0YUVycm9yICAgICAgICAgIFRoZSBzZXJ2ZXIgcmVwbGllZCB3aXRoIGFuIHVuZXhwZWN0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgY29kZSAob3RoZXIgdGhhbiBhIHJlZnVzYWwgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSByZWNpcGllbnQpLgorICAgICAgICAgU01UUE5vdFN1cHBvcnRlZEVycm9yICBUaGUgbWFpbF9vcHRpb25zIHBhcmFtZXRlciBpbmNsdWRlcyAnU01UUFVURjgnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCB0aGUgU01UUFVURjggZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNlcnZlci4KIAogICAgICAgICBOb3RlOiB0aGUgY29ubmVjdGlvbiB3aWxsIGJlIG9wZW4gZXZlbiBhZnRlciBhbiBleGNlcHRpb24gaXMgcmFpc2VkLgogCkBAIC03NjMsOCArODQ0LDYgQEAKICAgICAgICAgaWYgaXNpbnN0YW5jZShtc2csIHN0cik6CiAgICAgICAgICAgICBtc2cgPSBfZml4X2VvbHMobXNnKS5lbmNvZGUoJ2FzY2lpJykKICAgICAgICAgaWYgc2VsZi5kb2VzX2VzbXRwOgotICAgICAgICAgICAgIyBIbW1tPyB3aGF0J3MgdGhpcz8gLWRkbQotICAgICAgICAgICAgIyBzZWxmLmVzbXRwX2ZlYXR1cmVzWyc3Yml0J109IiIKICAgICAgICAgICAgIGlmIHNlbGYuaGFzX2V4dG4oJ3NpemUnKToKICAgICAgICAgICAgICAgICBlc210cF9vcHRzLmFwcGVuZCgic2l6ZT0lZCIgJSBsZW4obXNnKSkKICAgICAgICAgICAgIGZvciBvcHRpb24gaW4gbWFpbF9vcHRpb25zOgpAQCAtODEyLDcgKzg5MSwxMyBAQAogICAgICAgICB0b19hZGRyLCBhbnkgQmNjIGZpZWxkIChvciBSZXNlbnQtQmNjIGZpZWxkLCB3aGVuIHRoZSBNZXNzYWdlIGlzIGEKICAgICAgICAgcmVzZW50KSBvZiB0aGUgTWVzc2FnZSBvYmplY3Qgd29uJ3QgYmUgdHJhbnNtaXR0ZWQuICBUaGUgTWVzc2FnZQogICAgICAgICBvYmplY3QgaXMgdGhlbiBzZXJpYWxpemVkIHVzaW5nIGVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvciBhbmQKLSAgICAgICAgc2VuZG1haWwgaXMgY2FsbGVkIHRvIHRyYW5zbWl0IHRoZSBtZXNzYWdlLgorICAgICAgICBzZW5kbWFpbCBpcyBjYWxsZWQgdG8gdHJhbnNtaXQgdGhlIG1lc3NhZ2UuICBJZiB0aGUgc2VuZGVyIG9yIGFueSBvZgorICAgICAgICB0aGUgcmVjaXBpZW50IGFkZHJlc3NlcyBjb250YWluIG5vbi1BU0NJSSBhbmQgdGhlIHNlcnZlciBhZHZlcnRpc2VzIHRoZQorICAgICAgICBTTVRQVVRGOCBjYXBhYmlsaXR5LCB0aGUgcG9saWN5IGlzIGNsb25lZCB3aXRoIHV0Zjggc2V0IHRvIFRydWUgZm9yIHRoZQorICAgICAgICBzZXJpYWxpemF0aW9uLCBhbmQgU01UUFVURjggYW5kIEJPRFk9OEJJVE1JTUUgYXJlIGFzc2VydGVkIG9uIHRoZSBzZW5kLgorICAgICAgICBJZiB0aGUgc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgU01UUFVURjgsIGFuIFNNUFROb3RTdXBwb3J0ZWQgZXJyb3IgaXMKKyAgICAgICAgcmFpc2VkLiAgT3RoZXJ3aXNlIHRoZSBnZW5lcmF0b3IgaXMgY2FsbGVkIHdpdGhvdXQgbW9kaWZ5aW5nIHRoZQorICAgICAgICBwb2xpY3kuCiAKICAgICAgICAgIiIiCiAgICAgICAgICMgJ1Jlc2VudC1EYXRlJyBpcyBhIG1hbmRhdG9yeSBmaWVsZCBpZiB0aGUgTWVzc2FnZSBpcyByZXNlbnQgKFJGQyAyODIyCkBAIC04MjUsNiArOTEwLDcgQEAKICAgICAgICAgIyBvcHRpb24gYWxsb3dpbmcgdGhlIHVzZXIgdG8gZW5hYmxlIHRoZSBoZXVyaXN0aWNzLiAgKEl0IHNob3VsZCBiZQogICAgICAgICAjIHBvc3NpYmxlIHRvIGd1ZXNzIGNvcnJlY3RseSBhbG1vc3QgYWxsIG9mIHRoZSB0aW1lLikKIAorICAgICAgICBzZWxmLmVobG9fb3JfaGVsb19pZl9uZWVkZWQoKQogICAgICAgICByZXNlbnQgPSBtc2cuZ2V0X2FsbCgnUmVzZW50LURhdGUnKQogICAgICAgICBpZiByZXNlbnQgaXMgTm9uZToKICAgICAgICAgICAgIGhlYWRlcl9wcmVmaXggPSAnJwpAQCAtODQwLDE0ICs5MjYsMzAgQEAKICAgICAgICAgaWYgdG9fYWRkcnMgaXMgTm9uZToKICAgICAgICAgICAgIGFkZHJfZmllbGRzID0gW2YgZm9yIGYgaW4gKG1zZ1toZWFkZXJfcHJlZml4ICsgJ1RvJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dbaGVhZGVyX3ByZWZpeCArICdCY2MnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ1toZWFkZXJfcHJlZml4ICsgJ0NjJ10pIGlmIGYgaXMgbm90IE5vbmVdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dbaGVhZGVyX3ByZWZpeCArICdDYyddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZiBpcyBub3QgTm9uZV0KICAgICAgICAgICAgIHRvX2FkZHJzID0gW2FbMV0gZm9yIGEgaW4gZW1haWwudXRpbHMuZ2V0YWRkcmVzc2VzKGFkZHJfZmllbGRzKV0KICAgICAgICAgIyBNYWtlIGEgbG9jYWwgY29weSBzbyB3ZSBjYW4gZGVsZXRlIHRoZSBiY2MgaGVhZGVycy4KICAgICAgICAgbXNnX2NvcHkgPSBjb3B5LmNvcHkobXNnKQogICAgICAgICBkZWwgbXNnX2NvcHlbJ0JjYyddCiAgICAgICAgIGRlbCBtc2dfY29weVsnUmVzZW50LUJjYyddCisgICAgICAgIGludGVybmF0aW9uYWwgPSBGYWxzZQorICAgICAgICB0cnk6CisgICAgICAgICAgICAnJy5qb2luKFtmcm9tX2FkZHIsICp0b19hZGRyc10pLmVuY29kZSgnYXNjaWknKQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuaGFzX2V4dG4oJ3NtdHB1dGY4Jyk6CisgICAgICAgICAgICAgICAgcmFpc2UgU01UUE5vdFN1cHBvcnRlZEVycm9yKAorICAgICAgICAgICAgICAgICAgICAiT25lIG9yIG1vcmUgc291cmNlIG9yIGRlbGl2ZXJ5IGFkZHJlc3NlcyByZXF1aXJlIgorICAgICAgICAgICAgICAgICAgICAiIGludGVybmF0aW9uYWxpemVkIGVtYWlsIHN1cHBvcnQsIGJ1dCB0aGUgc2VydmVyIgorICAgICAgICAgICAgICAgICAgICAiIGRvZXMgbm90IGFkdmVydGlzZSB0aGUgcmVxdWlyZWQgU01UUFVURjggY2FwYWJpbGl0eSIpCisgICAgICAgICAgICBpbnRlcm5hdGlvbmFsID0gVHJ1ZQogICAgICAgICB3aXRoIGlvLkJ5dGVzSU8oKSBhcyBieXRlc21zZzoKLSAgICAgICAgICAgIGcgPSBlbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3IoYnl0ZXNtc2cpCisgICAgICAgICAgICBpZiBpbnRlcm5hdGlvbmFsOgorICAgICAgICAgICAgICAgIGcgPSBlbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgIGJ5dGVzbXNnLCBwb2xpY3k9bXNnLnBvbGljeS5jbG9uZSh1dGY4PVRydWUpKQorICAgICAgICAgICAgICAgIG1haWxfb3B0aW9ucyArPSBbJ1NNVFBVVEY4JywgJ0JPRFk9OEJJVE1JTUUnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBnID0gZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yKGJ5dGVzbXNnKQogICAgICAgICAgICAgZy5mbGF0dGVuKG1zZ19jb3B5LCBsaW5lc2VwPSdcclxuJykKICAgICAgICAgICAgIGZsYXRtc2cgPSBieXRlc21zZy5nZXR2YWx1ZSgpCiAgICAgICAgIHJldHVybiBzZWxmLnNlbmRtYWlsKGZyb21fYWRkciwgdG9fYWRkcnMsIGZsYXRtc2csIG1haWxfb3B0aW9ucywKQEAgLTkxNSw3ICsxMDE3LDcgQEAKIAogICAgICAgICBkZWYgX2dldF9zb2NrZXQoc2VsZiwgaG9zdCwgcG9ydCwgdGltZW91dCk6CiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgICAgIHByaW50KCdjb25uZWN0OicsIChob3N0LCBwb3J0KSwgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJ2Nvbm5lY3Q6JywgKGhvc3QsIHBvcnQpKQogICAgICAgICAgICAgbmV3X3NvY2tldCA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MpCiAgICAgICAgICAgICBuZXdfc29ja2V0ID0gc2VsZi5jb250ZXh0LndyYXBfc29ja2V0KG5ld19zb2NrZXQsCkBAIC05NjMsMjIgKzEwNjUsMjAgQEAKICAgICAgICAgICAgIHNlbGYuc29jay5jb25uZWN0KGhvc3QpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgICAgICBwcmludCgnY29ubmVjdCBmYWlsOicsIGhvc3QsIGZpbGU9c3RkZXJyKQorICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCdjb25uZWN0IGZhaWw6JywgaG9zdCkKICAgICAgICAgICAgIGlmIHNlbGYuc29jazoKICAgICAgICAgICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQogICAgICAgICAgICAgc2VsZi5zb2NrID0gTm9uZQogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgKGNvZGUsIG1zZykgPSBzZWxmLmdldHJlcGx5KCkKICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgIHByaW50KCdjb25uZWN0OicsIG1zZywgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygnY29ubmVjdDonLCBtc2cpCiAgICAgICAgIHJldHVybiAoY29kZSwgbXNnKQogCiAKICMgVGVzdCB0aGUgc2VuZG1haWwgbWV0aG9kLCB3aGljaCB0ZXN0cyBtb3N0IG9mIHRoZSBvdGhlcnMuCiAjIE5vdGU6IFRoaXMgYWx3YXlzIHNlbmRzIHRvIGxvY2FsaG9zdC4KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgaW1wb3J0IHN5cwotCiAgICAgZGVmIHByb21wdChwcm9tcHQpOgogICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKHByb21wdCArICI6ICIpCiAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQpkaWZmIC0tZ2l0IGEvTGliL3NuZGhkci5weSBiL0xpYi9zbmRoZHIucHkKaW5kZXggMjQwZTUwNy4uZTU5MDFlYyAxMDA2NDQKLS0tIGEvTGliL3NuZGhkci5weQorKysgYi9MaWIvc25kaGRyLnB5CkBAIC0zMiw2ICszMiwxMSBAQAogCiBfX2FsbF9fID0gWyd3aGF0JywgJ3doYXRoZHInXQogCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCisKK1NuZEhlYWRlcnMgPSBuYW1lZHR1cGxlKCdTbmRIZWFkZXJzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdmaWxldHlwZSBmcmFtZXJhdGUgbmNoYW5uZWxzIG5mcmFtZXMgc2FtcHdpZHRoJykKKwogZGVmIHdoYXQoZmlsZW5hbWUpOgogICAgICIiIkd1ZXNzIHRoZSB0eXBlIG9mIGEgc291bmQgZmlsZS4iIiIKICAgICByZXMgPSB3aGF0aGRyKGZpbGVuYW1lKQpAQCAtNDUsNyArNTAsNyBAQAogICAgICAgICBmb3IgdGYgaW4gdGVzdHM6CiAgICAgICAgICAgICByZXMgPSB0ZihoLCBmKQogICAgICAgICAgICAgaWYgcmVzOgotICAgICAgICAgICAgICAgIHJldHVybiByZXMKKyAgICAgICAgICAgICAgICByZXR1cm4gU25kSGVhZGVycygqcmVzKQogICAgICAgICByZXR1cm4gTm9uZQogCiAKZGlmZiAtLWdpdCBhL0xpYi9zb2NrZXQucHkgYi9MaWIvc29ja2V0LnB5CmluZGV4IGZmMmYwODcuLmVkMWIxMGEgMTAwNjQ0Ci0tLSBhL0xpYi9zb2NrZXQucHkKKysrIGIvTGliL3NvY2tldC5weQpAQCAtNDksNyArNDksNyBAQAogaW1wb3J0IF9zb2NrZXQKIGZyb20gX3NvY2tldCBpbXBvcnQgKgogCi1pbXBvcnQgb3MsIHN5cywgaW8KK2ltcG9ydCBvcywgc3lzLCBpbywgc2VsZWN0b3JzCiBmcm9tIGVudW0gaW1wb3J0IEludEVudW0KIAogdHJ5OgpAQCAtNjksNiArNjksNyBAQAogIyBOb3RlIHRoYXQgX3NvY2tldCBvbmx5IGtub3dzIGFib3V0IHRoZSBpbnRlZ2VyIHZhbHVlcy4gVGhlIHB1YmxpYyBpbnRlcmZhY2UKICMgaW4gdGhpcyBtb2R1bGUgdW5kZXJzdGFuZHMgdGhlIGVudW1zIGFuZCB0cmFuc2xhdGVzIHRoZW0gYmFjayBmcm9tIGludGVnZXJzCiAjIHdoZXJlIG5lZWRlZCAoZS5nLiAuZmFtaWx5IHByb3BlcnR5IG9mIGEgc29ja2V0IG9iamVjdCkuCisKIEludEVudW0uX2NvbnZlcnQoCiAgICAgICAgICdBZGRyZXNzRmFtaWx5JywKICAgICAgICAgX19uYW1lX18sCkBAIC03OSw2ICs4MCwxMCBAQAogICAgICAgICBfX25hbWVfXywKICAgICAgICAgbGFtYmRhIEM6IEMuaXN1cHBlcigpIGFuZCBDLnN0YXJ0c3dpdGgoJ1NPQ0tfJykpCiAKK19MT0NBTEhPU1QgICAgPSAnMTI3LjAuMC4xJworX0xPQ0FMSE9TVF9WNiA9ICc6OjEnCisKKwogZGVmIF9pbnRlbnVtX2NvbnZlcnRlcih2YWx1ZSwgZW51bV9rbGFzcyk6CiAgICAgIiIiQ29udmVydCBhIG51bWVyaWMgZmFtaWx5IHZhbHVlIHRvIGFuIEludEVudW0gbWVtYmVyLgogCkBAIC0xMTIsNiArMTE3LDkgQEAKICAgICBfX2FsbF9fLmFwcGVuZCgiZXJyb3JUYWIiKQogCiAKK2NsYXNzIF9HaXZldXBPblNlbmRmaWxlKEV4Y2VwdGlvbik6IHBhc3MKKworCiBjbGFzcyBzb2NrZXQoX3NvY2tldC5zb2NrZXQpOgogCiAgICAgIiIiQSBzdWJjbGFzcyBvZiBfc29ja2V0LnNvY2tldCBhZGRpbmcgdGhlIG1ha2VmaWxlKCkgbWV0aG9kLiIiIgpAQCAtMTQxLDcgKzE0OSw3IEBACiAgICAgICAgIGNsb3NlZCA9IGdldGF0dHIoc2VsZiwgJ19jbG9zZWQnLCBGYWxzZSkKICAgICAgICAgcyA9ICI8JXMuJXMlcyBmZD0laSwgZmFtaWx5PSVzLCB0eXBlPSVzLCBwcm90bz0laSIgXAogICAgICAgICAgICAgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKLSAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAogICAgICAgICAgICAgICAgIiBbY2xvc2VkXSIgaWYgY2xvc2VkIGVsc2UgIiIsCiAgICAgICAgICAgICAgICBzZWxmLmZpbGVubygpLAogICAgICAgICAgICAgICAgc2VsZi5mYW1pbHksCkBAIC0yMzksNiArMjQ3LDE0OSBAQAogICAgICAgICB0ZXh0Lm1vZGUgPSBtb2RlCiAgICAgICAgIHJldHVybiB0ZXh0CiAKKyAgICBpZiBoYXNhdHRyKG9zLCAnc2VuZGZpbGUnKToKKworICAgICAgICBkZWYgX3NlbmRmaWxlX3VzZV9zZW5kZmlsZShzZWxmLCBmaWxlLCBvZmZzZXQ9MCwgY291bnQ9Tm9uZSk6CisgICAgICAgICAgICBzZWxmLl9jaGVja19zZW5kZmlsZV9wYXJhbXMoZmlsZSwgb2Zmc2V0LCBjb3VudCkKKyAgICAgICAgICAgIHNvY2tubyA9IHNlbGYuZmlsZW5vKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmaWxlbm8gPSBmaWxlLmZpbGVubygpCisgICAgICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbikgYXMgZXJyOgorICAgICAgICAgICAgICAgIHJhaXNlIF9HaXZldXBPblNlbmRmaWxlKGVycikgICMgbm90IGEgcmVndWxhciBmaWxlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZnNpemUgPSBvcy5mc3RhdChmaWxlbm8pLnN0X3NpemUKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIHJhaXNlIF9HaXZldXBPblNlbmRmaWxlKGVycikgICMgbm90IGEgcmVndWxhciBmaWxlCisgICAgICAgICAgICBpZiBub3QgZnNpemU6CisgICAgICAgICAgICAgICAgcmV0dXJuIDAgICMgZW1wdHkgZmlsZQorICAgICAgICAgICAgYmxvY2tzaXplID0gZnNpemUgaWYgbm90IGNvdW50IGVsc2UgY291bnQKKworICAgICAgICAgICAgdGltZW91dCA9IHNlbGYuZ2V0dGltZW91dCgpCisgICAgICAgICAgICBpZiB0aW1lb3V0ID09IDA6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm9uLWJsb2NraW5nIHNvY2tldHMgYXJlIG5vdCBzdXBwb3J0ZWQiKQorICAgICAgICAgICAgIyBwb2xsL3NlbGVjdCBoYXZlIHRoZSBhZHZhbnRhZ2Ugb2Ygbm90IHJlcXVpcmluZyBhbnkKKyAgICAgICAgICAgICMgZXh0cmEgZmlsZSBkZXNjcmlwdG9yLCBjb250cmFyaWx5IHRvIGVwb2xsL2txdWV1ZQorICAgICAgICAgICAgIyAoYWxzbywgdGhleSByZXF1aXJlIGEgc2luZ2xlIHN5c2NhbGwpLgorICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxlY3RvcnMsICdQb2xsU2VsZWN0b3InKToKKyAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9ycy5Qb2xsU2VsZWN0b3IoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9ycy5TZWxlY3RTZWxlY3RvcigpCisgICAgICAgICAgICBzZWxlY3Rvci5yZWdpc3Rlcihzb2Nrbm8sIHNlbGVjdG9ycy5FVkVOVF9XUklURSkKKworICAgICAgICAgICAgdG90YWxfc2VudCA9IDAKKyAgICAgICAgICAgICMgbG9jYWxpemUgdmFyaWFibGUgYWNjZXNzIHRvIG1pbmltaXplIG92ZXJoZWFkCisgICAgICAgICAgICBzZWxlY3Rvcl9zZWxlY3QgPSBzZWxlY3Rvci5zZWxlY3QKKyAgICAgICAgICAgIG9zX3NlbmRmaWxlID0gb3Muc2VuZGZpbGUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGFuZCBub3Qgc2VsZWN0b3Jfc2VsZWN0KHRpbWVvdXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgX3NvY2tldC50aW1lb3V0KCd0aW1lZCBvdXQnKQorICAgICAgICAgICAgICAgICAgICBpZiBjb3VudDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrc2l6ZSA9IGNvdW50IC0gdG90YWxfc2VudAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYmxvY2tzaXplIDw9IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VudCA9IG9zX3NlbmRmaWxlKHNvY2tubywgZmlsZW5vLCBvZmZzZXQsIGJsb2Nrc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEJsb2NraW5nSU9FcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCB0aW1lb3V0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQmxvY2sgdW50aWwgdGhlIHNvY2tldCBpcyByZWFkeSB0byBzZW5kIHNvbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGRhdGE7IGF2b2lkcyBob2dnaW5nIENQVSByZXNvdXJjZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3Jfc2VsZWN0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRvdGFsX3NlbnQgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGNhbiBnZXQgaGVyZSBmb3IgZGlmZmVyZW50IHJlYXNvbnMsIHRoZSBtYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvbmUgYmVpbmcgJ2ZpbGUnIGlzIG5vdCBhIHJlZ3VsYXIgbW1hcCgyKS1saWtlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmaWxlLCBpbiB3aGljaCBjYXNlIHdlJ2xsIGZhbGwgYmFjayBvbiB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcGxhaW4gc2VuZCgpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIF9HaXZldXBPblNlbmRmaWxlKGVycikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVyciBmcm9tIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbnQgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayAgIyBFT0YKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBzZW50CisgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbF9zZW50ICs9IHNlbnQKKyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxfc2VudAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBpZiB0b3RhbF9zZW50ID4gMCBhbmQgaGFzYXR0cihmaWxlLCAnc2VlaycpOgorICAgICAgICAgICAgICAgICAgICBmaWxlLnNlZWsob2Zmc2V0KQorICAgIGVsc2U6CisgICAgICAgIGRlZiBfc2VuZGZpbGVfdXNlX3NlbmRmaWxlKHNlbGYsIGZpbGUsIG9mZnNldD0wLCBjb3VudD1Ob25lKToKKyAgICAgICAgICAgIHJhaXNlIF9HaXZldXBPblNlbmRmaWxlKAorICAgICAgICAgICAgICAgICJvcy5zZW5kZmlsZSgpIG5vdCBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSIpCisKKyAgICBkZWYgX3NlbmRmaWxlX3VzZV9zZW5kKHNlbGYsIGZpbGUsIG9mZnNldD0wLCBjb3VudD1Ob25lKToKKyAgICAgICAgc2VsZi5fY2hlY2tfc2VuZGZpbGVfcGFyYW1zKGZpbGUsIG9mZnNldCwgY291bnQpCisgICAgICAgIGlmIHNlbGYuZ2V0dGltZW91dCgpID09IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJub24tYmxvY2tpbmcgc29ja2V0cyBhcmUgbm90IHN1cHBvcnRlZCIpCisgICAgICAgIGlmIG9mZnNldDoKKyAgICAgICAgICAgIGZpbGUuc2VlayhvZmZzZXQpCisgICAgICAgIGJsb2Nrc2l6ZSA9IG1pbihjb3VudCwgODE5MikgaWYgY291bnQgZWxzZSA4MTkyCisgICAgICAgIHRvdGFsX3NlbnQgPSAwCisgICAgICAgICMgbG9jYWxpemUgdmFyaWFibGUgYWNjZXNzIHRvIG1pbmltaXplIG92ZXJoZWFkCisgICAgICAgIGZpbGVfcmVhZCA9IGZpbGUucmVhZAorICAgICAgICBzb2NrX3NlbmQgPSBzZWxmLnNlbmQKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBpZiBjb3VudDoKKyAgICAgICAgICAgICAgICAgICAgYmxvY2tzaXplID0gbWluKGNvdW50IC0gdG90YWxfc2VudCwgYmxvY2tzaXplKQorICAgICAgICAgICAgICAgICAgICBpZiBibG9ja3NpemUgPD0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZGF0YSA9IG1lbW9yeXZpZXcoZmlsZV9yZWFkKGJsb2Nrc2l6ZSkpCisgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrICAjIEVPRgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbnQgPSBzb2NrX3NlbmQoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEJsb2NraW5nSU9FcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbF9zZW50ICs9IHNlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbnQgPCBsZW4oZGF0YSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGFbc2VudDpdCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICByZXR1cm4gdG90YWxfc2VudAorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgdG90YWxfc2VudCA+IDAgYW5kIGhhc2F0dHIoZmlsZSwgJ3NlZWsnKToKKyAgICAgICAgICAgICAgICBmaWxlLnNlZWsob2Zmc2V0ICsgdG90YWxfc2VudCkKKworICAgIGRlZiBfY2hlY2tfc2VuZGZpbGVfcGFyYW1zKHNlbGYsIGZpbGUsIG9mZnNldCwgY291bnQpOgorICAgICAgICBpZiAnYicgbm90IGluIGdldGF0dHIoZmlsZSwgJ21vZGUnLCAnYicpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZmlsZSBzaG91bGQgYmUgb3BlbmVkIGluIGJpbmFyeSBtb2RlIikKKyAgICAgICAgaWYgbm90IHNlbGYudHlwZSAmIFNPQ0tfU1RSRUFNOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigib25seSBTT0NLX1NUUkVBTSB0eXBlIHNvY2tldHMgYXJlIHN1cHBvcnRlZCIpCisgICAgICAgIGlmIGNvdW50IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY291bnQsIGludCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAiY291bnQgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgKGdvdCB7IXJ9KSIuZm9ybWF0KGNvdW50KSkKKyAgICAgICAgICAgIGlmIGNvdW50IDw9IDA6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgImNvdW50IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIChnb3QgeyFyfSkiLmZvcm1hdChjb3VudCkpCisKKyAgICBkZWYgc2VuZGZpbGUoc2VsZiwgZmlsZSwgb2Zmc2V0PTAsIGNvdW50PU5vbmUpOgorICAgICAgICAiIiJzZW5kZmlsZShmaWxlWywgb2Zmc2V0WywgY291bnRdXSkgLT4gc2VudAorCisgICAgICAgIFNlbmQgYSBmaWxlIHVudGlsIEVPRiBpcyByZWFjaGVkIGJ5IHVzaW5nIGhpZ2gtcGVyZm9ybWFuY2UKKyAgICAgICAgb3Muc2VuZGZpbGUoKSBhbmQgcmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgd2hpY2gKKyAgICAgICAgd2VyZSBzZW50LgorICAgICAgICAqZmlsZSogbXVzdCBiZSBhIHJlZ3VsYXIgZmlsZSBvYmplY3Qgb3BlbmVkIGluIGJpbmFyeSBtb2RlLgorICAgICAgICBJZiBvcy5zZW5kZmlsZSgpIGlzIG5vdCBhdmFpbGFibGUgKGUuZy4gV2luZG93cykgb3IgZmlsZSBpcworICAgICAgICBub3QgYSByZWd1bGFyIGZpbGUgc29ja2V0LnNlbmQoKSB3aWxsIGJlIHVzZWQgaW5zdGVhZC4KKyAgICAgICAgKm9mZnNldCogdGVsbHMgZnJvbSB3aGVyZSB0byBzdGFydCByZWFkaW5nIHRoZSBmaWxlLgorICAgICAgICBJZiBzcGVjaWZpZWQsICpjb3VudCogaXMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyB0byB0cmFuc21pdAorICAgICAgICBhcyBvcHBvc2VkIHRvIHNlbmRpbmcgdGhlIGZpbGUgdW50aWwgRU9GIGlzIHJlYWNoZWQuCisgICAgICAgIEZpbGUgcG9zaXRpb24gaXMgdXBkYXRlZCBvbiByZXR1cm4gb3IgYWxzbyBpbiBjYXNlIG9mIGVycm9yIGluCisgICAgICAgIHdoaWNoIGNhc2UgZmlsZS50ZWxsKCkgY2FuIGJlIHVzZWQgdG8gZmlndXJlIG91dCB0aGUgbnVtYmVyIG9mCisgICAgICAgIGJ5dGVzIHdoaWNoIHdlcmUgc2VudC4KKyAgICAgICAgVGhlIHNvY2tldCBtdXN0IGJlIG9mIFNPQ0tfU1RSRUFNIHR5cGUuCisgICAgICAgIE5vbi1ibG9ja2luZyBzb2NrZXRzIGFyZSBub3Qgc3VwcG9ydGVkLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NlbmRmaWxlX3VzZV9zZW5kZmlsZShmaWxlLCBvZmZzZXQsIGNvdW50KQorICAgICAgICBleGNlcHQgX0dpdmV1cE9uU2VuZGZpbGU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2VuZGZpbGVfdXNlX3NlbmQoZmlsZSwgb2Zmc2V0LCBjb3VudCkKKwogICAgIGRlZiBfZGVjcmVmX3NvY2tldGlvcyhzZWxmKToKICAgICAgICAgaWYgc2VsZi5faW9fcmVmcyA+IDA6CiAgICAgICAgICAgICBzZWxmLl9pb19yZWZzIC09IDEKQEAgLTMyOSw2ICs0ODAsNTIgQEAKICAgICAgICAgYiA9IHNvY2tldChmYW1pbHksIHR5cGUsIHByb3RvLCBiLmRldGFjaCgpKQogICAgICAgICByZXR1cm4gYSwgYgogCitlbHNlOgorCisgICAgIyBPcmlnaW46IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tLzQzMjU3ODMsIGJ5IEdlZXJ0IEphbnNlbi4gIFB1YmxpYyBkb21haW4uCisgICAgZGVmIHNvY2tldHBhaXIoZmFtaWx5PUFGX0lORVQsIHR5cGU9U09DS19TVFJFQU0sIHByb3RvPTApOgorICAgICAgICBpZiBmYW1pbHkgPT0gQUZfSU5FVDoKKyAgICAgICAgICAgIGhvc3QgPSBfTE9DQUxIT1NUCisgICAgICAgIGVsaWYgZmFtaWx5ID09IEFGX0lORVQ2OgorICAgICAgICAgICAgaG9zdCA9IF9MT0NBTEhPU1RfVjYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk9ubHkgQUZfSU5FVCBhbmQgQUZfSU5FVDYgc29ja2V0IGFkZHJlc3MgZmFtaWxpZXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJlIHN1cHBvcnRlZCIpCisgICAgICAgIGlmIHR5cGUgIT0gU09DS19TVFJFQU06CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJPbmx5IFNPQ0tfU1RSRUFNIHNvY2tldCB0eXBlIGlzIHN1cHBvcnRlZCIpCisgICAgICAgIGlmIHByb3RvICE9IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJPbmx5IHByb3RvY29sIHplcm8gaXMgc3VwcG9ydGVkIikKKworICAgICAgICAjIFdlIGNyZWF0ZSBhIGNvbm5lY3RlZCBUQ1Agc29ja2V0LiBOb3RlIHRoZSB0cmljayB3aXRoCisgICAgICAgICMgc2V0YmxvY2tpbmcoRmFsc2UpIHRoYXQgcHJldmVudHMgdXMgZnJvbSBoYXZpbmcgdG8gY3JlYXRlIGEgdGhyZWFkLgorICAgICAgICBsc29jayA9IHNvY2tldChmYW1pbHksIHR5cGUsIHByb3RvKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBsc29jay5iaW5kKChob3N0LCAwKSkKKyAgICAgICAgICAgIGxzb2NrLmxpc3RlbigpCisgICAgICAgICAgICAjIE9uIElQdjYsIGlnbm9yZSBmbG93X2luZm8gYW5kIHNjb3BlX2lkCisgICAgICAgICAgICBhZGRyLCBwb3J0ID0gbHNvY2suZ2V0c29ja25hbWUoKVs6Ml0KKyAgICAgICAgICAgIGNzb2NrID0gc29ja2V0KGZhbWlseSwgdHlwZSwgcHJvdG8pCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY3NvY2suc2V0YmxvY2tpbmcoRmFsc2UpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBjc29jay5jb25uZWN0KChhZGRyLCBwb3J0KSkKKyAgICAgICAgICAgICAgICBleGNlcHQgKEJsb2NraW5nSU9FcnJvciwgSW50ZXJydXB0ZWRFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBjc29jay5zZXRibG9ja2luZyhUcnVlKQorICAgICAgICAgICAgICAgIHNzb2NrLCBfID0gbHNvY2suYWNjZXB0KCkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBjc29jay5jbG9zZSgpCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGxzb2NrLmNsb3NlKCkKKyAgICAgICAgcmV0dXJuIChzc29jaywgY3NvY2spCisKK3NvY2tldHBhaXIuX19kb2NfXyA9ICIiInNvY2tldHBhaXIoW2ZhbWlseVssIHR5cGVbLCBwcm90b11dXSkgLT4gKHNvY2tldCBvYmplY3QsIHNvY2tldCBvYmplY3QpCitDcmVhdGUgYSBwYWlyIG9mIHNvY2tldCBvYmplY3RzIGZyb20gdGhlIHNvY2tldHMgcmV0dXJuZWQgYnkgdGhlIHBsYXRmb3JtCitzb2NrZXRwYWlyKCkgZnVuY3Rpb24uCitUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3Igc29ja2V0KCkgZXhjZXB0IHRoZSBkZWZhdWx0IGZhbWlseSBpcyBBRl9VTklYCitpZiBkZWZpbmVkIG9uIHRoZSBwbGF0Zm9ybTsgb3RoZXJ3aXNlLCB0aGUgZGVmYXVsdCBpcyBBRl9JTkVULgorIiIiCiAKIF9ibG9ja2luZ19lcnJub3MgPSB7IEVBR0FJTiwgRVdPVUxEQkxPQ0sgfQogCkBAIC0zNzksOCArNTc2LDYgQEAKICAgICAgICAgICAgIGV4Y2VwdCB0aW1lb3V0OgogICAgICAgICAgICAgICAgIHNlbGYuX3RpbWVvdXRfb2NjdXJyZWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBleGNlcHQgZXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gaW4gX2Jsb2NraW5nX2Vycm5vczoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9zb2NrZXRzZXJ2ZXIucHkgYi9MaWIvc29ja2V0c2VydmVyLnB5CmluZGV4IDVjYjg5YmUuLjBjZThlODEgMTAwNjQ0Ci0tLSBhL0xpYi9zb2NrZXRzZXJ2ZXIucHkKKysrIGIvTGliL3NvY2tldHNlcnZlci5weQpAQCAtOTQsNyArOTQsNyBAQAogQW5vdGhlciBhcHByb2FjaCB0byBoYW5kbGluZyBtdWx0aXBsZSBzaW11bHRhbmVvdXMgcmVxdWVzdHMgaW4gYW4KIGVudmlyb25tZW50IHRoYXQgc3VwcG9ydHMgbmVpdGhlciB0aHJlYWRzIG5vciBmb3JrIChvciB3aGVyZSB0aGVzZSBhcmUKIHRvbyBleHBlbnNpdmUgb3IgaW5hcHByb3ByaWF0ZSBmb3IgdGhlIHNlcnZpY2UpIGlzIHRvIG1haW50YWluIGFuCi1leHBsaWNpdCB0YWJsZSBvZiBwYXJ0aWFsbHkgZmluaXNoZWQgcmVxdWVzdHMgYW5kIHRvIHVzZSBzZWxlY3QoKSB0bworZXhwbGljaXQgdGFibGUgb2YgcGFydGlhbGx5IGZpbmlzaGVkIHJlcXVlc3RzIGFuZCB0byB1c2UgYSBzZWxlY3RvciB0bwogZGVjaWRlIHdoaWNoIHJlcXVlc3QgdG8gd29yayBvbiBuZXh0IChvciB3aGV0aGVyIHRvIGhhbmRsZSBhIG5ldwogaW5jb21pbmcgcmVxdWVzdCkuICBUaGlzIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgZm9yIHN0cmVhbSBzZXJ2aWNlcwogd2hlcmUgZWFjaCBjbGllbnQgY2FuIHBvdGVudGlhbGx5IGJlIGNvbm5lY3RlZCBmb3IgYSBsb25nIHRpbWUgKGlmCkBAIC0xMDQsNyArMTA0LDYgQEAKIC0gU3RhbmRhcmQgY2xhc3NlcyBmb3IgU3VuIFJQQyAod2hpY2ggdXNlcyBlaXRoZXIgVURQIG9yIFRDUCkKIC0gU3RhbmRhcmQgbWl4LWluIGNsYXNzZXMgdG8gaW1wbGVtZW50IHZhcmlvdXMgYXV0aGVudGljYXRpb24KICAgYW5kIGVuY3J5cHRpb24gc2NoZW1lcwotLSBTdGFuZGFyZCBmcmFtZXdvcmsgZm9yIHNlbGVjdC1iYXNlZCBtdWx0aXBsZXhpbmcKIAogWFhYIE9wZW4gcHJvYmxlbXM6CiAtIFdoYXQgdG8gZG8gd2l0aCBvdXQtb2YtYmFuZCBkYXRhPwpAQCAtMTMwLDEzICsxMjksMTQgQEAKIAogCiBpbXBvcnQgc29ja2V0Ci1pbXBvcnQgc2VsZWN0CitpbXBvcnQgc2VsZWN0b3JzCiBpbXBvcnQgb3MKIGltcG9ydCBlcnJubwogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBpbXBvcnQgZHVtbXlfdGhyZWFkaW5nIGFzIHRocmVhZGluZworZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgdGltZQogCiBfX2FsbF9fID0gWyJCYXNlU2VydmVyIiwgIlRDUFNlcnZlciIsICJVRFBTZXJ2ZXIiLCAiRm9ya2luZ1VEUFNlcnZlciIsCiAgICAgICAgICAgICJGb3JraW5nVENQU2VydmVyIiwgIlRocmVhZGluZ1VEUFNlcnZlciIsICJUaHJlYWRpbmdUQ1BTZXJ2ZXIiLApAQCAtMTQ3LDE0ICsxNDcsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgIlRocmVhZGluZ1VuaXhTdHJlYW1TZXJ2ZXIiLAogICAgICAgICAgICAgICAgICAgICAiVGhyZWFkaW5nVW5peERhdGFncmFtU2VydmVyIl0pCiAKLWRlZiBfZWludHJfcmV0cnkoZnVuYywgKmFyZ3MpOgotICAgICIiInJlc3RhcnQgYSBzeXN0ZW0gY2FsbCBpbnRlcnJ1cHRlZCBieSBFSU5UUiIiIgotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgICAgICByYWlzZQorIyBwb2xsL3NlbGVjdCBoYXZlIHRoZSBhZHZhbnRhZ2Ugb2Ygbm90IHJlcXVpcmluZyBhbnkgZXh0cmEgZmlsZSBkZXNjcmlwdG9yLAorIyBjb250cmFyaWx5IHRvIGVwb2xsL2txdWV1ZSAoYWxzbywgdGhleSByZXF1aXJlIGEgc2luZ2xlIHN5c2NhbGwpLgoraWYgaGFzYXR0cihzZWxlY3RvcnMsICdQb2xsU2VsZWN0b3InKToKKyAgICBfU2VydmVyU2VsZWN0b3IgPSBzZWxlY3RvcnMuUG9sbFNlbGVjdG9yCitlbHNlOgorICAgIF9TZXJ2ZXJTZWxlY3RvciA9IHNlbGVjdG9ycy5TZWxlY3RTZWxlY3RvcgorCiAKIGNsYXNzIEJhc2VTZXJ2ZXI6CiAKQEAgLTE2Niw3ICsxNjUsNyBAQAogICAgIC0gc2VydmVfZm9yZXZlcihwb2xsX2ludGVydmFsPTAuNSkKICAgICAtIHNodXRkb3duKCkKICAgICAtIGhhbmRsZV9yZXF1ZXN0KCkgICMgaWYgeW91IGRvIG5vdCB1c2Ugc2VydmVfZm9yZXZlcigpCi0gICAgLSBmaWxlbm8oKSAtPiBpbnQgICAjIGZvciBzZWxlY3QoKQorICAgIC0gZmlsZW5vKCkgLT4gaW50ICAgIyBmb3Igc2VsZWN0b3IKIAogICAgIE1ldGhvZHMgdGhhdCBtYXkgYmUgb3ZlcnJpZGRlbjoKIApAQCAtMjI3LDE3ICsyMjYsMTkgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX19pc19zaHV0X2Rvd24uY2xlYXIoKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fX3NodXRkb3duX3JlcXVlc3Q6Ci0gICAgICAgICAgICAgICAgIyBYWFg6IENvbnNpZGVyIHVzaW5nIGFub3RoZXIgZmlsZSBkZXNjcmlwdG9yIG9yCi0gICAgICAgICAgICAgICAgIyBjb25uZWN0aW5nIHRvIHRoZSBzb2NrZXQgdG8gd2FrZSB0aGlzIHVwIGluc3RlYWQgb2YKLSAgICAgICAgICAgICAgICAjIHBvbGxpbmcuIFBvbGxpbmcgcmVkdWNlcyBvdXIgcmVzcG9uc2l2ZW5lc3MgdG8gYQotICAgICAgICAgICAgICAgICMgc2h1dGRvd24gcmVxdWVzdCBhbmQgd2FzdGVzIGNwdSBhdCBhbGwgb3RoZXIgdGltZXMuCi0gICAgICAgICAgICAgICAgciwgdywgZSA9IF9laW50cl9yZXRyeShzZWxlY3Quc2VsZWN0LCBbc2VsZl0sIFtdLCBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxfaW50ZXJ2YWwpCi0gICAgICAgICAgICAgICAgaWYgc2VsZiBpbiByOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfcmVxdWVzdF9ub2Jsb2NrKCkKKyAgICAgICAgICAgICMgWFhYOiBDb25zaWRlciB1c2luZyBhbm90aGVyIGZpbGUgZGVzY3JpcHRvciBvciBjb25uZWN0aW5nIHRvIHRoZQorICAgICAgICAgICAgIyBzb2NrZXQgdG8gd2FrZSB0aGlzIHVwIGluc3RlYWQgb2YgcG9sbGluZy4gUG9sbGluZyByZWR1Y2VzIG91cgorICAgICAgICAgICAgIyByZXNwb25zaXZlbmVzcyB0byBhIHNodXRkb3duIHJlcXVlc3QgYW5kIHdhc3RlcyBjcHUgYXQgYWxsIG90aGVyCisgICAgICAgICAgICAjIHRpbWVzLgorICAgICAgICAgICAgd2l0aCBfU2VydmVyU2VsZWN0b3IoKSBhcyBzZWxlY3RvcjoKKyAgICAgICAgICAgICAgICBzZWxlY3Rvci5yZWdpc3RlcihzZWxmLCBzZWxlY3RvcnMuRVZFTlRfUkVBRCkKIAotICAgICAgICAgICAgICAgIHNlbGYuc2VydmljZV9hY3Rpb25zKCkKKyAgICAgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fX3NodXRkb3duX3JlcXVlc3Q6CisgICAgICAgICAgICAgICAgICAgIHJlYWR5ID0gc2VsZWN0b3Iuc2VsZWN0KHBvbGxfaW50ZXJ2YWwpCisgICAgICAgICAgICAgICAgICAgIGlmIHJlYWR5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3JlcXVlc3Rfbm9ibG9jaygpCisKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2aWNlX2FjdGlvbnMoKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5fX3NodXRkb3duX3JlcXVlc3QgPSBGYWxzZQogICAgICAgICAgICAgc2VsZi5fX2lzX3NodXRfZG93bi5zZXQoKQpAQCAtMjYwLDE2ICsyNjEsMTYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHBhc3MKIAotICAgICMgVGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gaGFuZGxpbmcsIGdldHRpbmcsIHByb2Nlc3NpbmcgYW5kCi0gICAgIyBmaW5pc2hpbmcgYSByZXF1ZXN0IGlzIGZhaXJseSBhcmJpdHJhcnkuICBSZW1lbWJlcjoKKyAgICAjIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGhhbmRsaW5nLCBnZXR0aW5nLCBwcm9jZXNzaW5nIGFuZCBmaW5pc2hpbmcgYQorICAgICMgcmVxdWVzdCBpcyBmYWlybHkgYXJiaXRyYXJ5LiAgUmVtZW1iZXI6CiAgICAgIwotICAgICMgLSBoYW5kbGVfcmVxdWVzdCgpIGlzIHRoZSB0b3AtbGV2ZWwgY2FsbC4gIEl0IGNhbGxzCi0gICAgIyAgIHNlbGVjdCwgZ2V0X3JlcXVlc3QoKSwgdmVyaWZ5X3JlcXVlc3QoKSBhbmQgcHJvY2Vzc19yZXF1ZXN0KCkKKyAgICAjIC0gaGFuZGxlX3JlcXVlc3QoKSBpcyB0aGUgdG9wLWxldmVsIGNhbGwuICBJdCBjYWxscyBzZWxlY3Rvci5zZWxlY3QoKSwKKyAgICAjICAgZ2V0X3JlcXVlc3QoKSwgdmVyaWZ5X3JlcXVlc3QoKSBhbmQgcHJvY2Vzc19yZXF1ZXN0KCkKICAgICAjIC0gZ2V0X3JlcXVlc3QoKSBpcyBkaWZmZXJlbnQgZm9yIHN0cmVhbSBvciBkYXRhZ3JhbSBzb2NrZXRzCi0gICAgIyAtIHByb2Nlc3NfcmVxdWVzdCgpIGlzIHRoZSBwbGFjZSB0aGF0IG1heSBmb3JrIGEgbmV3IHByb2Nlc3MKLSAgICAjICAgb3IgY3JlYXRlIGEgbmV3IHRocmVhZCB0byBmaW5pc2ggdGhlIHJlcXVlc3QKLSAgICAjIC0gZmluaXNoX3JlcXVlc3QoKSBpbnN0YW50aWF0ZXMgdGhlIHJlcXVlc3QgaGFuZGxlciBjbGFzczsKLSAgICAjICAgdGhpcyBjb25zdHJ1Y3RvciB3aWxsIGhhbmRsZSB0aGUgcmVxdWVzdCBhbGwgYnkgaXRzZWxmCisgICAgIyAtIHByb2Nlc3NfcmVxdWVzdCgpIGlzIHRoZSBwbGFjZSB0aGF0IG1heSBmb3JrIGEgbmV3IHByb2Nlc3Mgb3IgY3JlYXRlIGEKKyAgICAjICAgbmV3IHRocmVhZCB0byBmaW5pc2ggdGhlIHJlcXVlc3QKKyAgICAjIC0gZmluaXNoX3JlcXVlc3QoKSBpbnN0YW50aWF0ZXMgdGhlIHJlcXVlc3QgaGFuZGxlciBjbGFzczsgdGhpcworICAgICMgICBjb25zdHJ1Y3RvciB3aWxsIGhhbmRsZSB0aGUgcmVxdWVzdCBhbGwgYnkgaXRzZWxmCiAKICAgICBkZWYgaGFuZGxlX3JlcXVlc3Qoc2VsZik6CiAgICAgICAgICIiIkhhbmRsZSBvbmUgcmVxdWVzdCwgcG9zc2libHkgYmxvY2tpbmcuCkBAIC0yODMsMTggKzI4NCwzMCBAQAogICAgICAgICAgICAgdGltZW91dCA9IHNlbGYudGltZW91dAogICAgICAgICBlbGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHRpbWVvdXQgPSBtaW4odGltZW91dCwgc2VsZi50aW1lb3V0KQotICAgICAgICBmZF9zZXRzID0gX2VpbnRyX3JldHJ5KHNlbGVjdC5zZWxlY3QsIFtzZWxmXSwgW10sIFtdLCB0aW1lb3V0KQotICAgICAgICBpZiBub3QgZmRfc2V0c1swXToKLSAgICAgICAgICAgIHNlbGYuaGFuZGxlX3RpbWVvdXQoKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuX2hhbmRsZV9yZXF1ZXN0X25vYmxvY2soKQorICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZGVhZGxpbmUgPSB0aW1lKCkgKyB0aW1lb3V0CisKKyAgICAgICAgIyBXYWl0IHVudGlsIGEgcmVxdWVzdCBhcnJpdmVzIG9yIHRoZSB0aW1lb3V0IGV4cGlyZXMgLSB0aGUgbG9vcCBpcworICAgICAgICAjIG5lY2Vzc2FyeSB0byBhY2NvbW1vZGF0ZSBlYXJseSB3YWtldXBzIGR1ZSB0byBFSU5UUi4KKyAgICAgICAgd2l0aCBfU2VydmVyU2VsZWN0b3IoKSBhcyBzZWxlY3RvcjoKKyAgICAgICAgICAgIHNlbGVjdG9yLnJlZ2lzdGVyKHNlbGYsIHNlbGVjdG9ycy5FVkVOVF9SRUFEKQorCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHJlYWR5ID0gc2VsZWN0b3Iuc2VsZWN0KHRpbWVvdXQpCisgICAgICAgICAgICAgICAgaWYgcmVhZHk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9oYW5kbGVfcmVxdWVzdF9ub2Jsb2NrKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gdGltZSgpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IDwgMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5oYW5kbGVfdGltZW91dCgpCiAKICAgICBkZWYgX2hhbmRsZV9yZXF1ZXN0X25vYmxvY2soc2VsZik6CiAgICAgICAgICIiIkhhbmRsZSBvbmUgcmVxdWVzdCwgd2l0aG91dCBibG9ja2luZy4KIAotICAgICAgICBJIGFzc3VtZSB0aGF0IHNlbGVjdC5zZWxlY3QgaGFzIHJldHVybmVkIHRoYXQgdGhlIHNvY2tldCBpcwotICAgICAgICByZWFkYWJsZSBiZWZvcmUgdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVkLCBzbyB0aGVyZSBzaG91bGQgYmUKLSAgICAgICAgbm8gcmlzayBvZiBibG9ja2luZyBpbiBnZXRfcmVxdWVzdCgpLgorICAgICAgICBJIGFzc3VtZSB0aGF0IHNlbGVjdG9yLnNlbGVjdCgpIGhhcyByZXR1cm5lZCB0aGF0IHRoZSBzb2NrZXQgaXMKKyAgICAgICAgcmVhZGFibGUgYmVmb3JlIHRoaXMgZnVuY3Rpb24gd2FzIGNhbGxlZCwgc28gdGhlcmUgc2hvdWxkIGJlIG5vIHJpc2sgb2YKKyAgICAgICAgYmxvY2tpbmcgaW4gZ2V0X3JlcXVlc3QoKS4KICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzID0gc2VsZi5nZXRfcmVxdWVzdCgpCkBAIC0zNzcsNyArMzkwLDcgQEAKICAgICAtIHNlcnZlX2ZvcmV2ZXIocG9sbF9pbnRlcnZhbD0wLjUpCiAgICAgLSBzaHV0ZG93bigpCiAgICAgLSBoYW5kbGVfcmVxdWVzdCgpICAjIGlmIHlvdSBkb24ndCB1c2Ugc2VydmVfZm9yZXZlcigpCi0gICAgLSBmaWxlbm8oKSAtPiBpbnQgICAjIGZvciBzZWxlY3QoKQorICAgIC0gZmlsZW5vKCkgLT4gaW50ICAgIyBmb3Igc2VsZWN0b3IKIAogICAgIE1ldGhvZHMgdGhhdCBtYXkgYmUgb3ZlcnJpZGRlbjoKIApAQCAtNDYzLDcgKzQ3Niw3IEBACiAgICAgZGVmIGZpbGVubyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHNvY2tldCBmaWxlIG51bWJlci4KIAotICAgICAgICBJbnRlcmZhY2UgcmVxdWlyZWQgYnkgc2VsZWN0KCkuCisgICAgICAgIEludGVyZmFjZSByZXF1aXJlZCBieSBzZWxlY3Rvci4KIAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIHNlbGYuc29ja2V0LmZpbGVubygpCkBAIC01NDAsOCArNTUzLDYgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBwaWQsIF8gPSBvcy53YWl0cGlkKC0xLCAwKQogICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmRpc2NhcmQocGlkKQotICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgogICAgICAgICAgICAgICAgICMgd2UgZG9uJ3QgaGF2ZSBhbnkgY2hpbGRyZW4sIHdlJ3JlIGRvbmUKICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5jbGVhcigpCmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L2ZhY3RvcnkucHkgYi9MaWIvc3FsaXRlMy90ZXN0L2ZhY3RvcnkucHkKaW5kZXggYTgzNDhiNC4uZjU4NzU5NiAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC9mYWN0b3J5LnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvZmFjdG9yeS5weQpAQCAtMTExLDYgKzExMSwyNCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpOgogICAgICAgICAgICAgcm93WzIqKjEwMDBdCiAKKyAgICBkZWYgQ2hlY2tTcWxpdGVSb3dTbGljZShzZWxmKToKKyAgICAgICAgIyBBIHNxbGl0ZS5Sb3cgY2FuIGJlIHNsaWNlZCBsaWtlIGEgbGlzdC4KKyAgICAgICAgc2VsZi5jb24ucm93X2ZhY3RvcnkgPSBzcWxpdGUuUm93CisgICAgICAgIHJvdyA9IHNlbGYuY29uLmV4ZWN1dGUoInNlbGVjdCAxLCAyLCAzLCA0IikuZmV0Y2hvbmUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvd1swOjBdLCAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbMDoxXSwgKDEsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbMTozXSwgKDIsIDMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvd1szOjFdLCAoKSkKKyAgICAgICAgIyBFeHBsaWNpdCBib3VuZHMgYXJlIG9wdGlvbmFsLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvd1sxOl0sICgyLCAzLCA0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbOjNdLCAoMSwgMiwgMykpCisgICAgICAgICMgU2xpY2VzIGNhbiB1c2UgbmVnYXRpdmUgaW5kaWNlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbLTI6LTFdLCAoMywpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvd1stMjpdLCAoMywgNCkpCisgICAgICAgICMgU2xpY2luZyBzdXBwb3J0cyBzdGVwcy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbMDo0OjJdLCAoMSwgMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm93WzM6MDotMl0sICg0LCAyKSkKKwogICAgIGRlZiBDaGVja1NxbGl0ZVJvd0l0ZXIoc2VsZik6CiAgICAgICAgICIiIkNoZWNrcyBpZiB0aGUgcm93IG9iamVjdCBpcyBpdGVyYWJsZSIiIgogICAgICAgICBzZWxmLmNvbi5yb3dfZmFjdG9yeSA9IHNxbGl0ZS5Sb3cKZGlmZiAtLWdpdCBhL0xpYi9zcmVfY29tcGlsZS5weSBiL0xpYi9zcmVfY29tcGlsZS5weQppbmRleCA1NTBlYTE1Li41MDJiMDYxIDEwMDY0NAotLS0gYS9MaWIvc3JlX2NvbXBpbGUucHkKKysrIGIvTGliL3NyZV9jb21waWxlLnB5CkBAIC0xMywxOSArMTMsMTMgQEAKIGltcG9ydCBfc3JlCiBpbXBvcnQgc3JlX3BhcnNlCiBmcm9tIHNyZV9jb25zdGFudHMgaW1wb3J0ICoKLWZyb20gX3NyZSBpbXBvcnQgTUFYUkVQRUFUCiAKIGFzc2VydCBfc3JlLk1BR0lDID09IE1BR0lDLCAiU1JFIG1vZHVsZSBtaXNtYXRjaCIKIAotaWYgX3NyZS5DT0RFU0laRSA9PSAyOgotICAgIE1BWENPREUgPSA2NTUzNQotZWxzZToKLSAgICBNQVhDT0RFID0gMHhGRkZGRkZGRgotCi1fTElURVJBTF9DT0RFUyA9IHNldChbTElURVJBTCwgTk9UX0xJVEVSQUxdKQotX1JFUEVBVElOR19DT0RFUyA9IHNldChbUkVQRUFULCBNSU5fUkVQRUFULCBNQVhfUkVQRUFUXSkKLV9TVUNDRVNTX0NPREVTID0gc2V0KFtTVUNDRVNTLCBGQUlMVVJFXSkKLV9BU1NFUlRfQ09ERVMgPSBzZXQoW0FTU0VSVCwgQVNTRVJUX05PVF0pCitfTElURVJBTF9DT0RFUyA9IHtMSVRFUkFMLCBOT1RfTElURVJBTH0KK19SRVBFQVRJTkdfQ09ERVMgPSB7UkVQRUFULCBNSU5fUkVQRUFULCBNQVhfUkVQRUFUfQorX1NVQ0NFU1NfQ09ERVMgPSB7U1VDQ0VTUywgRkFJTFVSRX0KK19BU1NFUlRfQ09ERVMgPSB7QVNTRVJULCBBU1NFUlRfTk9UfQogCiAjIFNldHMgb2YgbG93ZXJjYXNlIGNoYXJhY3RlcnMgd2hpY2ggaGF2ZSB0aGUgc2FtZSB1cHBlcmNhc2UuCiBfZXF1aXZhbGVuY2VzID0gKApAQCAtODYsNzUgKzgwLDc1IEBACiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0U6CiAgICAgICAgICAgICAgICAgbG8gPSBfc3JlLmdldGxvd2VyKGF2LCBmbGFncykKICAgICAgICAgICAgICAgICBpZiBmaXhlcyBhbmQgbG8gaW4gZml4ZXM6Ci0gICAgICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tJTl9JR05PUkVdKQorICAgICAgICAgICAgICAgICAgICBlbWl0KElOX0lHTk9SRSkKICAgICAgICAgICAgICAgICAgICAgc2tpcCA9IF9sZW4oY29kZSk7IGVtaXQoMCkKICAgICAgICAgICAgICAgICAgICAgaWYgb3AgaXMgTk9UX0xJVEVSQUw6Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbTkVHQVRFXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXQoTkVHQVRFKQogICAgICAgICAgICAgICAgICAgICBmb3IgayBpbiAobG8sKSArIGZpeGVzW2xvXToKLSAgICAgICAgICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tMSVRFUkFMXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXQoTElURVJBTCkKICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXQoaykKLSAgICAgICAgICAgICAgICAgICAgZW1pdChPUENPREVTW0ZBSUxVUkVdKQorICAgICAgICAgICAgICAgICAgICBlbWl0KEZBSUxVUkUpCiAgICAgICAgICAgICAgICAgICAgIGNvZGVbc2tpcF0gPSBfbGVuKGNvZGUpIC0gc2tpcAogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tPUF9JR05PUkVbb3BdXSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdChPUF9JR05PUkVbb3BdKQogICAgICAgICAgICAgICAgICAgICBlbWl0KGxvKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbb3BdKQorICAgICAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgICAgICAgICAgZW1pdChhdikKICAgICAgICAgZWxpZiBvcCBpcyBJTjoKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRToKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbT1BfSUdOT1JFW29wXV0pCisgICAgICAgICAgICAgICAgZW1pdChPUF9JR05PUkVbb3BdKQogICAgICAgICAgICAgICAgIGRlZiBmaXh1cChsaXRlcmFsLCBmbGFncz1mbGFncyk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfc3JlLmdldGxvd2VyKGxpdGVyYWwsIGZsYWdzKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbb3BdKQorICAgICAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgICAgICAgICAgZml4dXAgPSBOb25lCiAgICAgICAgICAgICBza2lwID0gX2xlbihjb2RlKTsgZW1pdCgwKQogICAgICAgICAgICAgX2NvbXBpbGVfY2hhcnNldChhdiwgZmxhZ3MsIGNvZGUsIGZpeHVwLCBmaXhlcykKICAgICAgICAgICAgIGNvZGVbc2tpcF0gPSBfbGVuKGNvZGUpIC0gc2tpcAogICAgICAgICBlbGlmIG9wIGlzIEFOWToKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfRE9UQUxMOgotICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tBTllfQUxMXSkKKyAgICAgICAgICAgICAgICBlbWl0KEFOWV9BTEwpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tBTlldKQorICAgICAgICAgICAgICAgIGVtaXQoQU5ZKQogICAgICAgICBlbGlmIG9wIGluIFJFUEVBVElOR19DT0RFUzoKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfVEVNUExBVEU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImludGVybmFsOiB1bnN1cHBvcnRlZCB0ZW1wbGF0ZSBvcGVyYXRvciIpCisgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImludGVybmFsOiB1bnN1cHBvcnRlZCB0ZW1wbGF0ZSBvcGVyYXRvciAlciIgJSAob3AsKSkKICAgICAgICAgICAgIGVsaWYgX3NpbXBsZShhdikgYW5kIG9wIGlzIG5vdCBSRVBFQVQ6CiAgICAgICAgICAgICAgICAgaWYgb3AgaXMgTUFYX1JFUEVBVDoKLSAgICAgICAgICAgICAgICAgICAgZW1pdChPUENPREVTW1JFUEVBVF9PTkVdKQorICAgICAgICAgICAgICAgICAgICBlbWl0KFJFUEVBVF9PTkUpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZW1pdChPUENPREVTW01JTl9SRVBFQVRfT05FXSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdChNSU5fUkVQRUFUX09ORSkKICAgICAgICAgICAgICAgICBza2lwID0gX2xlbihjb2RlKTsgZW1pdCgwKQogICAgICAgICAgICAgICAgIGVtaXQoYXZbMF0pCiAgICAgICAgICAgICAgICAgZW1pdChhdlsxXSkKICAgICAgICAgICAgICAgICBfY29tcGlsZShjb2RlLCBhdlsyXSwgZmxhZ3MpCi0gICAgICAgICAgICAgICAgZW1pdChPUENPREVTW1NVQ0NFU1NdKQorICAgICAgICAgICAgICAgIGVtaXQoU1VDQ0VTUykKICAgICAgICAgICAgICAgICBjb2RlW3NraXBdID0gX2xlbihjb2RlKSAtIHNraXAKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZW1pdChPUENPREVTW1JFUEVBVF0pCisgICAgICAgICAgICAgICAgZW1pdChSRVBFQVQpCiAgICAgICAgICAgICAgICAgc2tpcCA9IF9sZW4oY29kZSk7IGVtaXQoMCkKICAgICAgICAgICAgICAgICBlbWl0KGF2WzBdKQogICAgICAgICAgICAgICAgIGVtaXQoYXZbMV0pCiAgICAgICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXZbMl0sIGZsYWdzKQogICAgICAgICAgICAgICAgIGNvZGVbc2tpcF0gPSBfbGVuKGNvZGUpIC0gc2tpcAogICAgICAgICAgICAgICAgIGlmIG9wIGlzIE1BWF9SRVBFQVQ6Ci0gICAgICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tNQVhfVU5USUxdKQorICAgICAgICAgICAgICAgICAgICBlbWl0KE1BWF9VTlRJTCkKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbTUlOX1VOVElMXSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdChNSU5fVU5USUwpCiAgICAgICAgIGVsaWYgb3AgaXMgU1VCUEFUVEVSTjoKICAgICAgICAgICAgIGlmIGF2WzBdOgotICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tNQVJLXSkKKyAgICAgICAgICAgICAgICBlbWl0KE1BUkspCiAgICAgICAgICAgICAgICAgZW1pdCgoYXZbMF0tMSkqMikKICAgICAgICAgICAgICMgX2NvbXBpbGVfaW5mbyhjb2RlLCBhdlsxXSwgZmxhZ3MpCiAgICAgICAgICAgICBfY29tcGlsZShjb2RlLCBhdlsxXSwgZmxhZ3MpCiAgICAgICAgICAgICBpZiBhdlswXToKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbTUFSS10pCisgICAgICAgICAgICAgICAgZW1pdChNQVJLKQogICAgICAgICAgICAgICAgIGVtaXQoKGF2WzBdLTEpKjIrMSkKICAgICAgICAgZWxpZiBvcCBpbiBTVUNDRVNTX0NPREVTOgotICAgICAgICAgICAgZW1pdChPUENPREVTW29wXSkKKyAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgIGVsaWYgb3AgaW4gQVNTRVJUX0NPREVTOgotICAgICAgICAgICAgZW1pdChPUENPREVTW29wXSkKKyAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgICAgICBza2lwID0gX2xlbihjb2RlKTsgZW1pdCgwKQogICAgICAgICAgICAgaWYgYXZbMF0gPj0gMDoKICAgICAgICAgICAgICAgICBlbWl0KDApICMgbG9vayBhaGVhZApAQCAtMTY0LDU3ICsxNTgsNTcgQEAKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImxvb2stYmVoaW5kIHJlcXVpcmVzIGZpeGVkLXdpZHRoIHBhdHRlcm4iKQogICAgICAgICAgICAgICAgIGVtaXQobG8pICMgbG9vayBiZWhpbmQKICAgICAgICAgICAgIF9jb21waWxlKGNvZGUsIGF2WzFdLCBmbGFncykKLSAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tTVUNDRVNTXSkKKyAgICAgICAgICAgIGVtaXQoU1VDQ0VTUykKICAgICAgICAgICAgIGNvZGVbc2tpcF0gPSBfbGVuKGNvZGUpIC0gc2tpcAogICAgICAgICBlbGlmIG9wIGlzIENBTEw6Ci0gICAgICAgICAgICBlbWl0KE9QQ09ERVNbb3BdKQorICAgICAgICAgICAgZW1pdChvcCkKICAgICAgICAgICAgIHNraXAgPSBfbGVuKGNvZGUpOyBlbWl0KDApCiAgICAgICAgICAgICBfY29tcGlsZShjb2RlLCBhdiwgZmxhZ3MpCi0gICAgICAgICAgICBlbWl0KE9QQ09ERVNbU1VDQ0VTU10pCisgICAgICAgICAgICBlbWl0KFNVQ0NFU1MpCiAgICAgICAgICAgICBjb2RlW3NraXBdID0gX2xlbihjb2RlKSAtIHNraXAKICAgICAgICAgZWxpZiBvcCBpcyBBVDoKLSAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tvcF0pCisgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19NVUxUSUxJTkU6CiAgICAgICAgICAgICAgICAgYXYgPSBBVF9NVUxUSUxJTkUuZ2V0KGF2LCBhdikKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFOgogICAgICAgICAgICAgICAgIGF2ID0gQVRfTE9DQUxFLmdldChhdiwgYXYpCiAgICAgICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKICAgICAgICAgICAgICAgICBhdiA9IEFUX1VOSUNPREUuZ2V0KGF2LCBhdikKLSAgICAgICAgICAgIGVtaXQoQVRDT0RFU1thdl0pCisgICAgICAgICAgICBlbWl0KGF2KQogICAgICAgICBlbGlmIG9wIGlzIEJSQU5DSDoKLSAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tvcF0pCisgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICAgICAgdGFpbCA9IFtdCiAgICAgICAgICAgICB0YWlsYXBwZW5kID0gdGFpbC5hcHBlbmQKICAgICAgICAgICAgIGZvciBhdiBpbiBhdlsxXToKICAgICAgICAgICAgICAgICBza2lwID0gX2xlbihjb2RlKTsgZW1pdCgwKQogICAgICAgICAgICAgICAgICMgX2NvbXBpbGVfaW5mbyhjb2RlLCBhdiwgZmxhZ3MpCiAgICAgICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXYsIGZsYWdzKQotICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tKVU1QXSkKKyAgICAgICAgICAgICAgICBlbWl0KEpVTVApCiAgICAgICAgICAgICAgICAgdGFpbGFwcGVuZChfbGVuKGNvZGUpKTsgZW1pdCgwKQogICAgICAgICAgICAgICAgIGNvZGVbc2tpcF0gPSBfbGVuKGNvZGUpIC0gc2tpcAotICAgICAgICAgICAgZW1pdCgwKSAjIGVuZCBvZiBicmFuY2gKKyAgICAgICAgICAgIGVtaXQoRkFJTFVSRSkgIyBlbmQgb2YgYnJhbmNoCiAgICAgICAgICAgICBmb3IgdGFpbCBpbiB0YWlsOgogICAgICAgICAgICAgICAgIGNvZGVbdGFpbF0gPSBfbGVuKGNvZGUpIC0gdGFpbAogICAgICAgICBlbGlmIG9wIGlzIENBVEVHT1JZOgotICAgICAgICAgICAgZW1pdChPUENPREVTW29wXSkKKyAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKICAgICAgICAgICAgICAgICBhdiA9IENIX0xPQ0FMRVthdl0KICAgICAgICAgICAgIGVsaWYgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFOgogICAgICAgICAgICAgICAgIGF2ID0gQ0hfVU5JQ09ERVthdl0KLSAgICAgICAgICAgIGVtaXQoQ0hDT0RFU1thdl0pCisgICAgICAgICAgICBlbWl0KGF2KQogICAgICAgICBlbGlmIG9wIGlzIEdST1VQUkVGOgogICAgICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFOgotICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tPUF9JR05PUkVbb3BdXSkKKyAgICAgICAgICAgICAgICBlbWl0KE9QX0lHTk9SRVtvcF0pCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tvcF0pCisgICAgICAgICAgICAgICAgZW1pdChvcCkKICAgICAgICAgICAgIGVtaXQoYXYtMSkKICAgICAgICAgZWxpZiBvcCBpcyBHUk9VUFJFRl9FWElTVFM6Ci0gICAgICAgICAgICBlbWl0KE9QQ09ERVNbb3BdKQorICAgICAgICAgICAgZW1pdChvcCkKICAgICAgICAgICAgIGVtaXQoYXZbMF0tMSkKICAgICAgICAgICAgIHNraXB5ZXMgPSBfbGVuKGNvZGUpOyBlbWl0KDApCiAgICAgICAgICAgICBfY29tcGlsZShjb2RlLCBhdlsxXSwgZmxhZ3MpCiAgICAgICAgICAgICBpZiBhdlsyXToKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbSlVNUF0pCisgICAgICAgICAgICAgICAgZW1pdChKVU1QKQogICAgICAgICAgICAgICAgIHNraXBubyA9IF9sZW4oY29kZSk7IGVtaXQoMCkKICAgICAgICAgICAgICAgICBjb2RlW3NraXB5ZXNdID0gX2xlbihjb2RlKSAtIHNraXB5ZXMgKyAxCiAgICAgICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXZbMl0sIGZsYWdzKQpAQCAtMjIyLDE5ICsyMTYsMTggQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgY29kZVtza2lweWVzXSA9IF9sZW4oY29kZSkgLSBza2lweWVzICsgMQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5zdXBwb3J0ZWQgb3BlcmFuZCB0eXBlIiwgb3ApCisgICAgICAgICAgICByYWlzZSBlcnJvcigiaW50ZXJuYWw6IHVuc3VwcG9ydGVkIG9wZXJhbmQgdHlwZSAlciIgJSAob3AsKSkKIAogZGVmIF9jb21waWxlX2NoYXJzZXQoY2hhcnNldCwgZmxhZ3MsIGNvZGUsIGZpeHVwPU5vbmUsIGZpeGVzPU5vbmUpOgogICAgICMgY29tcGlsZSBjaGFyc2V0IHN1YnByb2dyYW0KICAgICBlbWl0ID0gY29kZS5hcHBlbmQKLSAgICBmb3Igb3AsIGF2IGluIF9vcHRpbWl6ZV9jaGFyc2V0KGNoYXJzZXQsIGZpeHVwLCBmaXhlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSk6Ci0gICAgICAgIGVtaXQoT1BDT0RFU1tvcF0pCisgICAgZm9yIG9wLCBhdiBpbiBfb3B0aW1pemVfY2hhcnNldChjaGFyc2V0LCBmaXh1cCwgZml4ZXMpOgorICAgICAgICBlbWl0KG9wKQogICAgICAgICBpZiBvcCBpcyBORUdBVEU6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsaWYgb3AgaXMgTElURVJBTDoKICAgICAgICAgICAgIGVtaXQoYXYpCi0gICAgICAgIGVsaWYgb3AgaXMgUkFOR0U6CisgICAgICAgIGVsaWYgb3AgaXMgUkFOR0Ugb3Igb3AgaXMgUkFOR0VfSUdOT1JFOgogICAgICAgICAgICAgZW1pdChhdlswXSkKICAgICAgICAgICAgIGVtaXQoYXZbMV0pCiAgICAgICAgIGVsaWYgb3AgaXMgQ0hBUlNFVDoKQEAgLTI0MywxNiArMjM2LDE2IEBACiAgICAgICAgICAgICBjb2RlLmV4dGVuZChhdikKICAgICAgICAgZWxpZiBvcCBpcyBDQVRFR09SWToKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFOgotICAgICAgICAgICAgICAgIGVtaXQoQ0hDT0RFU1tDSF9MT0NBTEVbYXZdXSkKKyAgICAgICAgICAgICAgICBlbWl0KENIX0xPQ0FMRVthdl0pCiAgICAgICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKLSAgICAgICAgICAgICAgICBlbWl0KENIQ09ERVNbQ0hfVU5JQ09ERVthdl1dKQorICAgICAgICAgICAgICAgIGVtaXQoQ0hfVU5JQ09ERVthdl0pCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGVtaXQoQ0hDT0RFU1thdl0pCisgICAgICAgICAgICAgICAgZW1pdChhdikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIGVycm9yKCJpbnRlcm5hbDogdW5zdXBwb3J0ZWQgc2V0IG9wZXJhdG9yIikKLSAgICBlbWl0KE9QQ09ERVNbRkFJTFVSRV0pCisgICAgICAgICAgICByYWlzZSBlcnJvcigiaW50ZXJuYWw6IHVuc3VwcG9ydGVkIHNldCBvcGVyYXRvciAlciIgJSAob3AsKSkKKyAgICBlbWl0KEZBSUxVUkUpCiAKLWRlZiBfb3B0aW1pemVfY2hhcnNldChjaGFyc2V0LCBmaXh1cCwgZml4ZXMsIGlzdW5pY29kZSk6CitkZWYgX29wdGltaXplX2NoYXJzZXQoY2hhcnNldCwgZml4dXAsIGZpeGVzKToKICAgICAjIGludGVybmFsOiBvcHRpbWl6ZSBjaGFyYWN0ZXIgc2V0CiAgICAgb3V0ID0gW10KICAgICB0YWlsID0gW10KQEAgLTI2MiwxMCArMjU1LDEwIEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgaWYgb3AgaXMgTElURVJBTDoKICAgICAgICAgICAgICAgICAgICAgaWYgZml4dXA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpID0gZml4dXAoYXYpCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFybWFwW2ldID0gMQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZml4ZXMgYW5kIGkgaW4gZml4ZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGsgaW4gZml4ZXNbaV06CisgICAgICAgICAgICAgICAgICAgICAgICBsbyA9IGZpeHVwKGF2KQorICAgICAgICAgICAgICAgICAgICAgICAgY2hhcm1hcFtsb10gPSAxCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBmaXhlcyBhbmQgbG8gaW4gZml4ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGsgaW4gZml4ZXNbbG9dOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFybWFwW2tdID0gMQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgY2hhcm1hcFthdl0gPSAxCkBAIC0yOTEsMjEgKzI4NCwxMyBAQAogICAgICAgICAgICAgICAgICAgICAjIGNoYXJhY3RlciBzZXQgY29udGFpbnMgbm9uLVVDUzEgY2hhcmFjdGVyIGNvZGVzCiAgICAgICAgICAgICAgICAgICAgIGNoYXJtYXAgKz0gYidcMCcgKiAweGZmMDAKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAjIGNoYXJhY3RlciBzZXQgY29udGFpbnMgbm9uLUJNUCBjaGFyYWN0ZXIgY29kZXMKLSAgICAgICAgICAgICAgICBpZiBmaXh1cCBhbmQgaXN1bmljb2RlIGFuZCBvcCBpcyBSQU5HRToKLSAgICAgICAgICAgICAgICAgICAgbG8sIGhpID0gYXYKLSAgICAgICAgICAgICAgICAgICAgcmFuZ2VzID0gW2F2XQotICAgICAgICAgICAgICAgICAgICAjIFRoZXJlIGFyZSBvbmx5IHR3byByYW5nZXMgb2YgY2FzZWQgYXN0cmFsIGNoYXJhY3RlcnM6Ci0gICAgICAgICAgICAgICAgICAgICMgMTA0MDAtMTA0NEYgKERlc2VyZXQpIGFuZCAxMThBMC0xMThERiAoV2FyYW5nIENpdGkpLgotICAgICAgICAgICAgICAgICAgICBfZml4dXBfcmFuZ2UobWF4KDB4MTAwMDAsIGxvKSwgbWluKDB4MTFmZmYsIGhpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlcywgZml4dXApCi0gICAgICAgICAgICAgICAgICAgIGZvciBsbywgaGkgaW4gcmFuZ2VzOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbG8gPT0gaGk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFpbC5hcHBlbmQoKExJVEVSQUwsIGhpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFpbC5hcHBlbmQoKFJBTkdFLCAobG8sIGhpKSkpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdGFpbC5hcHBlbmQoKG9wLCBhdikpCisgICAgICAgICAgICAgICAgIyBDaGFyYWN0ZXIgc2V0IGNvbnRhaW5zIG5vbi1CTVAgY2hhcmFjdGVyIGNvZGVzLgorICAgICAgICAgICAgICAgICMgVGhlcmUgYXJlIG9ubHkgdHdvIHJhbmdlcyBvZiBjYXNlZCBub24tQk1QIGNoYXJhY3RlcnM6CisgICAgICAgICAgICAgICAgIyAxMDQwMC0xMDQ0RiAoRGVzZXJldCkgYW5kIDExOEEwLTExOERGIChXYXJhbmcgQ2l0aSksCisgICAgICAgICAgICAgICAgIyBhbmQgZm9yIGJvdGggcmFuZ2VzIFJBTkdFX0lHTk9SRSB3b3Jrcy4KKyAgICAgICAgICAgICAgICBpZiBmaXh1cCBhbmQgb3AgaXMgUkFOR0U6CisgICAgICAgICAgICAgICAgICAgIG9wID0gUkFOR0VfSUdOT1JFCisgICAgICAgICAgICAgICAgdGFpbC5hcHBlbmQoKG9wLCBhdikpCiAgICAgICAgICAgICBicmVhawogCiAgICAgIyBjb21wcmVzcyBjaGFyYWN0ZXIgbWFwCkBAIC0zODMsMjUgKzM2OCw4IEBACiAgICAgb3V0ICs9IHRhaWwKICAgICByZXR1cm4gb3V0CiAKLWRlZiBfZml4dXBfcmFuZ2UobG8sIGhpLCByYW5nZXMsIGZpeHVwKToKLSAgICBmb3IgaSBpbiBtYXAoZml4dXAsIHJhbmdlKGxvLCBoaSsxKSk6Ci0gICAgICAgIGZvciBrLCAobG8sIGhpKSBpbiBlbnVtZXJhdGUocmFuZ2VzKToKLSAgICAgICAgICAgIGlmIGkgPCBsbzoKLSAgICAgICAgICAgICAgICBpZiBsID09IGxvIC0gMToKLSAgICAgICAgICAgICAgICAgICAgcmFuZ2VzW2tdID0gKGksIGhpKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhbmdlcy5pbnNlcnQoaywgKGksIGkpKQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBlbGlmIGkgPiBoaToKLSAgICAgICAgICAgICAgICBpZiBpID09IGhpICsgMToKLSAgICAgICAgICAgICAgICAgICAgcmFuZ2VzW2tdID0gKGxvLCBpKQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFuZ2VzLmFwcGVuZCgoaSwgaSkpCi0KIF9DT0RFQklUUyA9IF9zcmUuQ09ERVNJWkUgKiA4CitNQVhDT0RFID0gKDEgPDwgX0NPREVCSVRTKSAtIDEKIF9CSVRTX1RSQU5TID0gYicwJyArIGInMScgKiAyNTUKIGRlZiBfbWtfYml0bWFwKGJpdHMsIF9DT0RFQklUUz1fQ09ERUJJVFMsIF9pbnQ9aW50KToKICAgICBzID0gYml0cy50cmFuc2xhdGUoX0JJVFNfVFJBTlMpWzo6LTFdCkBAIC00NDYsOCArNDE0LDExIEBACiAgICAgIyB0aGlzIGNvbnRhaW5zIG1pbi9tYXggcGF0dGVybiB3aWR0aCwgYW5kIGFuIG9wdGlvbmFsIGxpdGVyYWwKICAgICAjIHByZWZpeCBvciBhIGNoYXJhY3RlciBtYXAKICAgICBsbywgaGkgPSBwYXR0ZXJuLmdldHdpZHRoKCkKKyAgICBpZiBoaSA+IE1BWENPREU6CisgICAgICAgIGhpID0gTUFYQ09ERQogICAgIGlmIGxvID09IDA6Ci0gICAgICAgIHJldHVybiAjIG5vdCB3b3J0aCBpdAorICAgICAgICBjb2RlLmV4dGVuZChbSU5GTywgNCwgMCwgbG8sIGhpXSkKKyAgICAgICAgcmV0dXJuCiAgICAgIyBsb29rIGZvciBhIGxpdGVyYWwgcHJlZml4CiAgICAgcHJlZml4ID0gW10KICAgICBwcmVmaXhhcHBlbmQgPSBwcmVmaXguYXBwZW5kCkBAIC01MDUsMjEgKzQ3NiwyMSBAQAogICAgICAgICAgICAgZWxpZiBvcCBpcyBJTjoKICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gYXYKICMjICAgICBpZiBwcmVmaXg6Ci0jIyAgICAgICAgIHByaW50ICIqKiogUFJFRklYIiwgcHJlZml4LCBwcmVmaXhfc2tpcAorIyMgICAgICAgICBwcmludCgiKioqIFBSRUZJWCIsIHByZWZpeCwgcHJlZml4X3NraXApCiAjIyAgICAgaWYgY2hhcnNldDoKLSMjICAgICAgICAgcHJpbnQgIioqKiBDSEFSU0VUIiwgY2hhcnNldAorIyMgICAgICAgICBwcmludCgiKioqIENIQVJTRVQiLCBjaGFyc2V0KQogICAgICMgYWRkIGFuIGluZm8gYmxvY2sKICAgICBlbWl0ID0gY29kZS5hcHBlbmQKLSAgICBlbWl0KE9QQ09ERVNbSU5GT10pCisgICAgZW1pdChJTkZPKQogICAgIHNraXAgPSBsZW4oY29kZSk7IGVtaXQoMCkKICAgICAjIGxpdGVyYWwgZmxhZwogICAgIG1hc2sgPSAwCiAgICAgaWYgcHJlZml4OgogICAgICAgICBtYXNrID0gU1JFX0lORk9fUFJFRklYCiAgICAgICAgIGlmIGxlbihwcmVmaXgpID09IHByZWZpeF9za2lwID09IGxlbihwYXR0ZXJuLmRhdGEpOgotICAgICAgICAgICAgbWFzayA9IG1hc2sgKyBTUkVfSU5GT19MSVRFUkFMCisgICAgICAgICAgICBtYXNrID0gbWFzayB8IFNSRV9JTkZPX0xJVEVSQUwKICAgICBlbGlmIGNoYXJzZXQ6Ci0gICAgICAgIG1hc2sgPSBtYXNrICsgU1JFX0lORk9fQ0hBUlNFVAorICAgICAgICBtYXNrID0gbWFzayB8IFNSRV9JTkZPX0NIQVJTRVQKICAgICBlbWl0KG1hc2spCiAgICAgIyBwYXR0ZXJuIGxlbmd0aAogICAgIGlmIGxvIDwgTUFYQ09ERToKQEAgLTUyNywxMCArNDk4LDcgQEAKICAgICBlbHNlOgogICAgICAgICBlbWl0KE1BWENPREUpCiAgICAgICAgIHByZWZpeCA9IHByZWZpeFs6TUFYQ09ERV0KLSAgICBpZiBoaSA8IE1BWENPREU6Ci0gICAgICAgIGVtaXQoaGkpCi0gICAgZWxzZToKLSAgICAgICAgZW1pdCgwKQorICAgIGVtaXQobWluKGhpLCBNQVhDT0RFKSkKICAgICAjIGFkZCBsaXRlcmFsIHByZWZpeAogICAgIGlmIHByZWZpeDoKICAgICAgICAgZW1pdChsZW4ocHJlZml4KSkgIyBsZW5ndGgKQEAgLTU1Niw3ICs1MjQsNyBAQAogICAgICMgY29tcGlsZSB0aGUgcGF0dGVybgogICAgIF9jb21waWxlKGNvZGUsIHAuZGF0YSwgZmxhZ3MpCiAKLSAgICBjb2RlLmFwcGVuZChPUENPREVTW1NVQ0NFU1NdKQorICAgIGNvZGUuYXBwZW5kKFNVQ0NFU1MpCiAKICAgICByZXR1cm4gY29kZQogCkBAIC01NzEsMTMgKzUzOSw3IEBACiAKICAgICBjb2RlID0gX2NvZGUocCwgZmxhZ3MpCiAKLSAgICAjIHByaW50IGNvZGUKLQotICAgICMgWFhYOiA8Zmw+IGdldCByaWQgb2YgdGhpcyBsaW1pdGF0aW9uIQotICAgIGlmIHAucGF0dGVybi5ncm91cHMgPiAxMDA6Ci0gICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAotICAgICAgICAgICAgInNvcnJ5LCBidXQgdGhpcyB2ZXJzaW9uIG9ubHkgc3VwcG9ydHMgMTAwIG5hbWVkIGdyb3VwcyIKLSAgICAgICAgICAgICkKKyAgICAjIHByaW50KGNvZGUpCiAKICAgICAjIG1hcCBpbiBlaXRoZXIgZGlyZWN0aW9uCiAgICAgZ3JvdXBpbmRleCA9IHAucGF0dGVybi5ncm91cGRpY3QKZGlmZiAtLWdpdCBhL0xpYi9zcmVfY29uc3RhbnRzLnB5IGIvTGliL3NyZV9jb25zdGFudHMucHkKaW5kZXggMjNlMzUxNi4uZmM2ODRhZSAxMDA2NDQKLS0tIGEvTGliL3NyZV9jb25zdGFudHMucHkKKysrIGIvTGliL3NyZV9jb25zdGFudHMucHkKQEAgLTEzLDE1MyArMTMsMTE1IEBACiAKICMgdXBkYXRlIHdoZW4gY29uc3RhbnRzIGFyZSBhZGRlZCBvciByZW1vdmVkCiAKLU1BR0lDID0gMjAwMzEwMTcKK01BR0lDID0gMjAxNDA5MTcKIAotZnJvbSBfc3JlIGltcG9ydCBNQVhSRVBFQVQKK2Zyb20gX3NyZSBpbXBvcnQgTUFYUkVQRUFULCBNQVhHUk9VUFMKIAogIyBTUkUgc3RhbmRhcmQgZXhjZXB0aW9uIChhY2Nlc3MgYXMgc3JlLmVycm9yKQogIyBzaG91bGQgdGhpcyByZWFsbHkgYmUgaGVyZT8KIAogY2xhc3MgZXJyb3IoRXhjZXB0aW9uKToKLSAgICBwYXNzCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZywgcGF0dGVybj1Ob25lLCBwb3M9Tm9uZSk6CisgICAgICAgIHNlbGYubXNnID0gbXNnCisgICAgICAgIHNlbGYucGF0dGVybiA9IHBhdHRlcm4KKyAgICAgICAgc2VsZi5wb3MgPSBwb3MKKyAgICAgICAgaWYgcGF0dGVybiBpcyBub3QgTm9uZSBhbmQgcG9zIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbXNnID0gJyVzIGF0IHBvc2l0aW9uICVkJyAlIChtc2csIHBvcykKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocGF0dGVybiwgc3RyKToKKyAgICAgICAgICAgICAgICBuZXdsaW5lID0gJ1xuJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuZXdsaW5lID0gYidcbicKKyAgICAgICAgICAgIHNlbGYubGluZW5vID0gcGF0dGVybi5jb3VudChuZXdsaW5lLCAwLCBwb3MpICsgMQorICAgICAgICAgICAgc2VsZi5jb2xubyA9IHBvcyAtIHBhdHRlcm4ucmZpbmQobmV3bGluZSwgMCwgcG9zKQorICAgICAgICAgICAgaWYgbmV3bGluZSBpbiBwYXR0ZXJuOgorICAgICAgICAgICAgICAgIG1zZyA9ICclcyAobGluZSAlZCwgY29sdW1uICVkKScgJSAobXNnLCBzZWxmLmxpbmVubywgc2VsZi5jb2xubykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYubGluZW5vID0gc2VsZi5jb2xubyA9IE5vbmUKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhtc2cpCisKKworY2xhc3MgX05hbWVkSW50Q29uc3RhbnQoaW50KToKKyAgICBkZWYgX19uZXdfXyhjbHMsIHZhbHVlLCBuYW1lKToKKyAgICAgICAgc2VsZiA9IHN1cGVyKF9OYW1lZEludENvbnN0YW50LCBjbHMpLl9fbmV3X18oY2xzLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm5hbWUKKworICAgIF9fcmVwcl9fID0gX19zdHJfXworCitNQVhSRVBFQVQgPSBfTmFtZWRJbnRDb25zdGFudChNQVhSRVBFQVQsICdNQVhSRVBFQVQnKQorCitkZWYgX21ha2Vjb2RlcyhuYW1lcyk6CisgICAgbmFtZXMgPSBuYW1lcy5zdHJpcCgpLnNwbGl0KCkKKyAgICBpdGVtcyA9IFtfTmFtZWRJbnRDb25zdGFudChpLCBuYW1lKSBmb3IgaSwgbmFtZSBpbiBlbnVtZXJhdGUobmFtZXMpXQorICAgIGdsb2JhbHMoKS51cGRhdGUoe2l0ZW0ubmFtZTogaXRlbSBmb3IgaXRlbSBpbiBpdGVtc30pCisgICAgcmV0dXJuIGl0ZW1zCiAKICMgb3BlcmF0b3JzCisjIGZhaWx1cmU9MCBzdWNjZXNzPTEgKGp1c3QgYmVjYXVzZSBpdCBsb29rcyBiZXR0ZXIgdGhhdCB3YXkgOi0pCitPUENPREVTID0gX21ha2Vjb2RlcygiIiIKKyAgICBGQUlMVVJFIFNVQ0NFU1MKIAotRkFJTFVSRSA9ICJmYWlsdXJlIgotU1VDQ0VTUyA9ICJzdWNjZXNzIgorICAgIEFOWSBBTllfQUxMCisgICAgQVNTRVJUIEFTU0VSVF9OT1QKKyAgICBBVAorICAgIEJSQU5DSAorICAgIENBTEwKKyAgICBDQVRFR09SWQorICAgIENIQVJTRVQgQklHQ0hBUlNFVAorICAgIEdST1VQUkVGIEdST1VQUkVGX0VYSVNUUyBHUk9VUFJFRl9JR05PUkUKKyAgICBJTiBJTl9JR05PUkUKKyAgICBJTkZPCisgICAgSlVNUAorICAgIExJVEVSQUwgTElURVJBTF9JR05PUkUKKyAgICBNQVJLCisgICAgTUFYX1VOVElMCisgICAgTUlOX1VOVElMCisgICAgTk9UX0xJVEVSQUwgTk9UX0xJVEVSQUxfSUdOT1JFCisgICAgTkVHQVRFCisgICAgUkFOR0UKKyAgICBSRVBFQVQKKyAgICBSRVBFQVRfT05FCisgICAgU1VCUEFUVEVSTgorICAgIE1JTl9SRVBFQVRfT05FCisgICAgUkFOR0VfSUdOT1JFCiAKLUFOWSA9ICJhbnkiCi1BTllfQUxMID0gImFueV9hbGwiCi1BU1NFUlQgPSAiYXNzZXJ0IgotQVNTRVJUX05PVCA9ICJhc3NlcnRfbm90IgotQVQgPSAiYXQiCi1CSUdDSEFSU0VUID0gImJpZ2NoYXJzZXQiCi1CUkFOQ0ggPSAiYnJhbmNoIgotQ0FMTCA9ICJjYWxsIgotQ0FURUdPUlkgPSAiY2F0ZWdvcnkiCi1DSEFSU0VUID0gImNoYXJzZXQiCi1HUk9VUFJFRiA9ICJncm91cHJlZiIKLUdST1VQUkVGX0lHTk9SRSA9ICJncm91cHJlZl9pZ25vcmUiCi1HUk9VUFJFRl9FWElTVFMgPSAiZ3JvdXByZWZfZXhpc3RzIgotSU4gPSAiaW4iCi1JTl9JR05PUkUgPSAiaW5faWdub3JlIgotSU5GTyA9ICJpbmZvIgotSlVNUCA9ICJqdW1wIgotTElURVJBTCA9ICJsaXRlcmFsIgotTElURVJBTF9JR05PUkUgPSAibGl0ZXJhbF9pZ25vcmUiCi1NQVJLID0gIm1hcmsiCi1NQVhfUkVQRUFUID0gIm1heF9yZXBlYXQiCi1NQVhfVU5USUwgPSAibWF4X3VudGlsIgotTUlOX1JFUEVBVCA9ICJtaW5fcmVwZWF0IgotTUlOX1VOVElMID0gIm1pbl91bnRpbCIKLU5FR0FURSA9ICJuZWdhdGUiCi1OT1RfTElURVJBTCA9ICJub3RfbGl0ZXJhbCIKLU5PVF9MSVRFUkFMX0lHTk9SRSA9ICJub3RfbGl0ZXJhbF9pZ25vcmUiCi1SQU5HRSA9ICJyYW5nZSIKLVJFUEVBVCA9ICJyZXBlYXQiCi1SRVBFQVRfT05FID0gInJlcGVhdF9vbmUiCi1TVUJQQVRURVJOID0gInN1YnBhdHRlcm4iCi1NSU5fUkVQRUFUX09ORSA9ICJtaW5fcmVwZWF0X29uZSIKKyAgICBNSU5fUkVQRUFUIE1BWF9SRVBFQVQKKyIiIikKK2RlbCBPUENPREVTWy0yOl0gIyByZW1vdmUgTUlOX1JFUEVBVCBhbmQgTUFYX1JFUEVBVAogCiAjIHBvc2l0aW9ucwotQVRfQkVHSU5OSU5HID0gImF0X2JlZ2lubmluZyIKLUFUX0JFR0lOTklOR19MSU5FID0gImF0X2JlZ2lubmluZ19saW5lIgotQVRfQkVHSU5OSU5HX1NUUklORyA9ICJhdF9iZWdpbm5pbmdfc3RyaW5nIgotQVRfQk9VTkRBUlkgPSAiYXRfYm91bmRhcnkiCi1BVF9OT05fQk9VTkRBUlkgPSAiYXRfbm9uX2JvdW5kYXJ5IgotQVRfRU5EID0gImF0X2VuZCIKLUFUX0VORF9MSU5FID0gImF0X2VuZF9saW5lIgotQVRfRU5EX1NUUklORyA9ICJhdF9lbmRfc3RyaW5nIgotQVRfTE9DX0JPVU5EQVJZID0gImF0X2xvY19ib3VuZGFyeSIKLUFUX0xPQ19OT05fQk9VTkRBUlkgPSAiYXRfbG9jX25vbl9ib3VuZGFyeSIKLUFUX1VOSV9CT1VOREFSWSA9ICJhdF91bmlfYm91bmRhcnkiCi1BVF9VTklfTk9OX0JPVU5EQVJZID0gImF0X3VuaV9ub25fYm91bmRhcnkiCitBVENPREVTID0gX21ha2Vjb2RlcygiIiIKKyAgICBBVF9CRUdJTk5JTkcgQVRfQkVHSU5OSU5HX0xJTkUgQVRfQkVHSU5OSU5HX1NUUklORworICAgIEFUX0JPVU5EQVJZIEFUX05PTl9CT1VOREFSWQorICAgIEFUX0VORCBBVF9FTkRfTElORSBBVF9FTkRfU1RSSU5HCisgICAgQVRfTE9DX0JPVU5EQVJZIEFUX0xPQ19OT05fQk9VTkRBUlkKKyAgICBBVF9VTklfQk9VTkRBUlkgQVRfVU5JX05PTl9CT1VOREFSWQorIiIiKQogCiAjIGNhdGVnb3JpZXMKLUNBVEVHT1JZX0RJR0lUID0gImNhdGVnb3J5X2RpZ2l0IgotQ0FURUdPUllfTk9UX0RJR0lUID0gImNhdGVnb3J5X25vdF9kaWdpdCIKLUNBVEVHT1JZX1NQQUNFID0gImNhdGVnb3J5X3NwYWNlIgotQ0FURUdPUllfTk9UX1NQQUNFID0gImNhdGVnb3J5X25vdF9zcGFjZSIKLUNBVEVHT1JZX1dPUkQgPSAiY2F0ZWdvcnlfd29yZCIKLUNBVEVHT1JZX05PVF9XT1JEID0gImNhdGVnb3J5X25vdF93b3JkIgotQ0FURUdPUllfTElORUJSRUFLID0gImNhdGVnb3J5X2xpbmVicmVhayIKLUNBVEVHT1JZX05PVF9MSU5FQlJFQUsgPSAiY2F0ZWdvcnlfbm90X2xpbmVicmVhayIKLUNBVEVHT1JZX0xPQ19XT1JEID0gImNhdGVnb3J5X2xvY193b3JkIgotQ0FURUdPUllfTE9DX05PVF9XT1JEID0gImNhdGVnb3J5X2xvY19ub3Rfd29yZCIKLUNBVEVHT1JZX1VOSV9ESUdJVCA9ICJjYXRlZ29yeV91bmlfZGlnaXQiCi1DQVRFR09SWV9VTklfTk9UX0RJR0lUID0gImNhdGVnb3J5X3VuaV9ub3RfZGlnaXQiCi1DQVRFR09SWV9VTklfU1BBQ0UgPSAiY2F0ZWdvcnlfdW5pX3NwYWNlIgotQ0FURUdPUllfVU5JX05PVF9TUEFDRSA9ICJjYXRlZ29yeV91bmlfbm90X3NwYWNlIgotQ0FURUdPUllfVU5JX1dPUkQgPSAiY2F0ZWdvcnlfdW5pX3dvcmQiCi1DQVRFR09SWV9VTklfTk9UX1dPUkQgPSAiY2F0ZWdvcnlfdW5pX25vdF93b3JkIgotQ0FURUdPUllfVU5JX0xJTkVCUkVBSyA9ICJjYXRlZ29yeV91bmlfbGluZWJyZWFrIgotQ0FURUdPUllfVU5JX05PVF9MSU5FQlJFQUsgPSAiY2F0ZWdvcnlfdW5pX25vdF9saW5lYnJlYWsiCitDSENPREVTID0gX21ha2Vjb2RlcygiIiIKKyAgICBDQVRFR09SWV9ESUdJVCBDQVRFR09SWV9OT1RfRElHSVQKKyAgICBDQVRFR09SWV9TUEFDRSBDQVRFR09SWV9OT1RfU1BBQ0UKKyAgICBDQVRFR09SWV9XT1JEIENBVEVHT1JZX05PVF9XT1JECisgICAgQ0FURUdPUllfTElORUJSRUFLIENBVEVHT1JZX05PVF9MSU5FQlJFQUsKKyAgICBDQVRFR09SWV9MT0NfV09SRCBDQVRFR09SWV9MT0NfTk9UX1dPUkQKKyAgICBDQVRFR09SWV9VTklfRElHSVQgQ0FURUdPUllfVU5JX05PVF9ESUdJVAorICAgIENBVEVHT1JZX1VOSV9TUEFDRSBDQVRFR09SWV9VTklfTk9UX1NQQUNFCisgICAgQ0FURUdPUllfVU5JX1dPUkQgQ0FURUdPUllfVU5JX05PVF9XT1JECisgICAgQ0FURUdPUllfVU5JX0xJTkVCUkVBSyBDQVRFR09SWV9VTklfTk9UX0xJTkVCUkVBSworIiIiKQogCi1PUENPREVTID0gWwotCi0gICAgIyBmYWlsdXJlPTAgc3VjY2Vzcz0xIChqdXN0IGJlY2F1c2UgaXQgbG9va3MgYmV0dGVyIHRoYXQgd2F5IDotKQotICAgIEZBSUxVUkUsIFNVQ0NFU1MsCi0KLSAgICBBTlksIEFOWV9BTEwsCi0gICAgQVNTRVJULCBBU1NFUlRfTk9ULAotICAgIEFULAotICAgIEJSQU5DSCwKLSAgICBDQUxMLAotICAgIENBVEVHT1JZLAotICAgIENIQVJTRVQsIEJJR0NIQVJTRVQsCi0gICAgR1JPVVBSRUYsIEdST1VQUkVGX0VYSVNUUywgR1JPVVBSRUZfSUdOT1JFLAotICAgIElOLCBJTl9JR05PUkUsCi0gICAgSU5GTywKLSAgICBKVU1QLAotICAgIExJVEVSQUwsIExJVEVSQUxfSUdOT1JFLAotICAgIE1BUkssCi0gICAgTUFYX1VOVElMLAotICAgIE1JTl9VTlRJTCwKLSAgICBOT1RfTElURVJBTCwgTk9UX0xJVEVSQUxfSUdOT1JFLAotICAgIE5FR0FURSwKLSAgICBSQU5HRSwKLSAgICBSRVBFQVQsCi0gICAgUkVQRUFUX09ORSwKLSAgICBTVUJQQVRURVJOLAotICAgIE1JTl9SRVBFQVRfT05FCi0KLV0KLQotQVRDT0RFUyA9IFsKLSAgICBBVF9CRUdJTk5JTkcsIEFUX0JFR0lOTklOR19MSU5FLCBBVF9CRUdJTk5JTkdfU1RSSU5HLCBBVF9CT1VOREFSWSwKLSAgICBBVF9OT05fQk9VTkRBUlksIEFUX0VORCwgQVRfRU5EX0xJTkUsIEFUX0VORF9TVFJJTkcsCi0gICAgQVRfTE9DX0JPVU5EQVJZLCBBVF9MT0NfTk9OX0JPVU5EQVJZLCBBVF9VTklfQk9VTkRBUlksCi0gICAgQVRfVU5JX05PTl9CT1VOREFSWQotXQotCi1DSENPREVTID0gWwotICAgIENBVEVHT1JZX0RJR0lULCBDQVRFR09SWV9OT1RfRElHSVQsIENBVEVHT1JZX1NQQUNFLAotICAgIENBVEVHT1JZX05PVF9TUEFDRSwgQ0FURUdPUllfV09SRCwgQ0FURUdPUllfTk9UX1dPUkQsCi0gICAgQ0FURUdPUllfTElORUJSRUFLLCBDQVRFR09SWV9OT1RfTElORUJSRUFLLCBDQVRFR09SWV9MT0NfV09SRCwKLSAgICBDQVRFR09SWV9MT0NfTk9UX1dPUkQsIENBVEVHT1JZX1VOSV9ESUdJVCwgQ0FURUdPUllfVU5JX05PVF9ESUdJVCwKLSAgICBDQVRFR09SWV9VTklfU1BBQ0UsIENBVEVHT1JZX1VOSV9OT1RfU1BBQ0UsIENBVEVHT1JZX1VOSV9XT1JELAotICAgIENBVEVHT1JZX1VOSV9OT1RfV09SRCwgQ0FURUdPUllfVU5JX0xJTkVCUkVBSywKLSAgICBDQVRFR09SWV9VTklfTk9UX0xJTkVCUkVBSwotXQotCi1kZWYgbWFrZWRpY3QobGlzdCk6Ci0gICAgZCA9IHt9Ci0gICAgaSA9IDAKLSAgICBmb3IgaXRlbSBpbiBsaXN0OgotICAgICAgICBkW2l0ZW1dID0gaQotICAgICAgICBpID0gaSArIDEKLSAgICByZXR1cm4gZAotCi1PUENPREVTID0gbWFrZWRpY3QoT1BDT0RFUykKLUFUQ09ERVMgPSBtYWtlZGljdChBVENPREVTKQotQ0hDT0RFUyA9IG1ha2VkaWN0KENIQ09ERVMpCiAKICMgcmVwbGFjZW1lbnQgb3BlcmF0aW9ucyBmb3IgImlnbm9yZSBjYXNlIiBtb2RlCiBPUF9JR05PUkUgPSB7CiAgICAgR1JPVVBSRUY6IEdST1VQUkVGX0lHTk9SRSwKICAgICBJTjogSU5fSUdOT1JFLAogICAgIExJVEVSQUw6IExJVEVSQUxfSUdOT1JFLAotICAgIE5PVF9MSVRFUkFMOiBOT1RfTElURVJBTF9JR05PUkUKKyAgICBOT1RfTElURVJBTDogTk9UX0xJVEVSQUxfSUdOT1JFLAorICAgIFJBTkdFOiBSQU5HRV9JR05PUkUsCiB9CiAKIEFUX01VTFRJTElORSA9IHsKQEAgLTIxNywxMSArMTc5LDExIEBACiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgZGVmIGR1bXAoZiwgZCwgcHJlZml4KToKLSAgICAgICAgaXRlbXMgPSBzb3J0ZWQoZC5pdGVtcygpLCBrZXk9bGFtYmRhIGE6IGFbMV0pCi0gICAgICAgIGZvciBrLCB2IGluIGl0ZW1zOgotICAgICAgICAgICAgZi53cml0ZSgiI2RlZmluZSAlc18lcyAlc1xuIiAlIChwcmVmaXgsIGsudXBwZXIoKSwgdikpCi0gICAgZiA9IG9wZW4oInNyZV9jb25zdGFudHMuaCIsICJ3IikKLSAgICBmLndyaXRlKCIiIlwKKyAgICAgICAgaXRlbXMgPSBzb3J0ZWQoZCkKKyAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6CisgICAgICAgICAgICBmLndyaXRlKCIjZGVmaW5lICVzXyVzICVkXG4iICUgKHByZWZpeCwgaXRlbSwgaXRlbSkpCisgICAgd2l0aCBvcGVuKCJzcmVfY29uc3RhbnRzLmgiLCAidyIpIGFzIGY6CisgICAgICAgIGYud3JpdGUoIiIiXAogLyoKICAqIFNlY3JldCBMYWJzJyBSZWd1bGFyIEV4cHJlc3Npb24gRW5naW5lCiAgKgpAQCAtMjM3LDI1ICsxOTksMjQgQEAKIAogIiIiKQogCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfTUFHSUMgJWRcbiIgJSBNQUdJQykKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfTUFHSUMgJWRcbiIgJSBNQUdJQykKIAotICAgIGR1bXAoZiwgT1BDT0RFUywgIlNSRV9PUCIpCi0gICAgZHVtcChmLCBBVENPREVTLCAiU1JFIikKLSAgICBkdW1wKGYsIENIQ09ERVMsICJTUkUiKQorICAgICAgICBkdW1wKGYsIE9QQ09ERVMsICJTUkVfT1AiKQorICAgICAgICBkdW1wKGYsIEFUQ09ERVMsICJTUkUiKQorICAgICAgICBkdW1wKGYsIENIQ09ERVMsICJTUkUiKQogCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19URU1QTEFURSAlZFxuIiAlIFNSRV9GTEFHX1RFTVBMQVRFKQotICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfSUdOT1JFQ0FTRSAlZFxuIiAlIFNSRV9GTEFHX0lHTk9SRUNBU0UpCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19MT0NBTEUgJWRcbiIgJSBTUkVfRkxBR19MT0NBTEUpCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19NVUxUSUxJTkUgJWRcbiIgJSBTUkVfRkxBR19NVUxUSUxJTkUpCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19ET1RBTEwgJWRcbiIgJSBTUkVfRkxBR19ET1RBTEwpCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19VTklDT0RFICVkXG4iICUgU1JFX0ZMQUdfVU5JQ09ERSkKLSAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9GTEFHX1ZFUkJPU0UgJWRcbiIgJSBTUkVfRkxBR19WRVJCT1NFKQotICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfREVCVUcgJWRcbiIgJSBTUkVfRkxBR19ERUJVRykKLSAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9GTEFHX0FTQ0lJICVkXG4iICUgU1JFX0ZMQUdfQVNDSUkpCisgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfVEVNUExBVEUgJWRcbiIgJSBTUkVfRkxBR19URU1QTEFURSkKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19JR05PUkVDQVNFICVkXG4iICUgU1JFX0ZMQUdfSUdOT1JFQ0FTRSkKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19MT0NBTEUgJWRcbiIgJSBTUkVfRkxBR19MT0NBTEUpCisgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfTVVMVElMSU5FICVkXG4iICUgU1JFX0ZMQUdfTVVMVElMSU5FKQorICAgICAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9GTEFHX0RPVEFMTCAlZFxuIiAlIFNSRV9GTEFHX0RPVEFMTCkKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19VTklDT0RFICVkXG4iICUgU1JFX0ZMQUdfVU5JQ09ERSkKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19WRVJCT1NFICVkXG4iICUgU1JFX0ZMQUdfVkVSQk9TRSkKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19ERUJVRyAlZFxuIiAlIFNSRV9GTEFHX0RFQlVHKQorICAgICAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9GTEFHX0FTQ0lJICVkXG4iICUgU1JFX0ZMQUdfQVNDSUkpCiAKLSAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9JTkZPX1BSRUZJWCAlZFxuIiAlIFNSRV9JTkZPX1BSRUZJWCkKLSAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9JTkZPX0xJVEVSQUwgJWRcbiIgJSBTUkVfSU5GT19MSVRFUkFMKQotICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0lORk9fQ0hBUlNFVCAlZFxuIiAlIFNSRV9JTkZPX0NIQVJTRVQpCisgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0lORk9fUFJFRklYICVkXG4iICUgU1JFX0lORk9fUFJFRklYKQorICAgICAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9JTkZPX0xJVEVSQUwgJWRcbiIgJSBTUkVfSU5GT19MSVRFUkFMKQorICAgICAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9JTkZPX0NIQVJTRVQgJWRcbiIgJSBTUkVfSU5GT19DSEFSU0VUKQogCi0gICAgZi5jbG9zZSgpCiAgICAgcHJpbnQoImRvbmUiKQpkaWZmIC0tZ2l0IGEvTGliL3NyZV9wYXJzZS5weSBiL0xpYi9zcmVfcGFyc2UucHkKaW5kZXggZGYxZTY0My4uZjZhODg1MSAxMDA2NDQKLS0tIGEvTGliL3NyZV9wYXJzZS5weQorKysgYi9MaWIvc3JlX3BhcnNlLnB5CkBAIC0xMywxNyArMTMsMjAgQEAKICMgWFhYOiBzaG93IHN0cmluZyBvZmZzZXQgYW5kIG9mZmVuZGluZyBjaGFyYWN0ZXIgZm9yIGFsbCBlcnJvcnMKIAogZnJvbSBzcmVfY29uc3RhbnRzIGltcG9ydCAqCi1mcm9tIF9zcmUgaW1wb3J0IE1BWFJFUEVBVAogCiBTUEVDSUFMX0NIQVJTID0gIi5cXFt7KCkqKz9eJHwiCiBSRVBFQVRfQ0hBUlMgPSAiKis/eyIKIAotRElHSVRTID0gc2V0KCIwMTIzNDU2Nzg5IikKK0RJR0lUUyA9IGZyb3plbnNldCgiMDEyMzQ1Njc4OSIpCiAKLU9DVERJR0lUUyA9IHNldCgiMDEyMzQ1NjciKQotSEVYRElHSVRTID0gc2V0KCIwMTIzNDU2Nzg5YWJjZGVmQUJDREVGIikKK09DVERJR0lUUyA9IGZyb3plbnNldCgiMDEyMzQ1NjciKQorSEVYRElHSVRTID0gZnJvemVuc2V0KCIwMTIzNDU2Nzg5YWJjZGVmQUJDREVGIikKK0FTQ0lJTEVUVEVSUyA9IGZyb3plbnNldCgiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIpCiAKLVdISVRFU1BBQ0UgPSBzZXQoIiBcdFxuXHJcdlxmIikKK1dISVRFU1BBQ0UgPSBmcm96ZW5zZXQoIiBcdFxuXHJcdlxmIikKKworX1JFUEVBVENPREVTID0gZnJvemVuc2V0KHtNSU5fUkVQRUFULCBNQVhfUkVQRUFUfSkKK19VTklUQ09ERVMgPSBmcm96ZW5zZXQoe0FOWSwgUkFOR0UsIElOLCBMSVRFUkFMLCBOT1RfTElURVJBTCwgQ0FURUdPUll9KQogCiBFU0NBUEVTID0gewogICAgIHIiXGEiOiAoTElURVJBTCwgb3JkKCJcYSIpKSwKQEAgLTY2LDI2ICs2OSwzNiBAQAogICAgICMgbWFzdGVyIHBhdHRlcm4gb2JqZWN0LiAga2VlcHMgdHJhY2sgb2YgZ2xvYmFsIGF0dHJpYnV0ZXMKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYuZmxhZ3MgPSAwCi0gICAgICAgIHNlbGYub3BlbiA9IFtdCi0gICAgICAgIHNlbGYuZ3JvdXBzID0gMQogICAgICAgICBzZWxmLmdyb3VwZGljdCA9IHt9Ci0gICAgICAgIHNlbGYubG9va2JlaGluZCA9IDAKLQorICAgICAgICBzZWxmLmdyb3Vwd2lkdGhzID0gW05vbmVdICAjIGdyb3VwIDAKKyAgICAgICAgc2VsZi5sb29rYmVoaW5kZ3JvdXBzID0gTm9uZQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBncm91cHMoc2VsZik6CisgICAgICAgIHJldHVybiBsZW4oc2VsZi5ncm91cHdpZHRocykKICAgICBkZWYgb3Blbmdyb3VwKHNlbGYsIG5hbWU9Tm9uZSk6CiAgICAgICAgIGdpZCA9IHNlbGYuZ3JvdXBzCi0gICAgICAgIHNlbGYuZ3JvdXBzID0gZ2lkICsgMQorICAgICAgICBzZWxmLmdyb3Vwd2lkdGhzLmFwcGVuZChOb25lKQorICAgICAgICBpZiBzZWxmLmdyb3VwcyA+IE1BWEdST1VQUzoKKyAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ0b28gbWFueSBncm91cHMiKQogICAgICAgICBpZiBuYW1lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgb2dpZCA9IHNlbGYuZ3JvdXBkaWN0LmdldChuYW1lLCBOb25lKQogICAgICAgICAgICAgaWYgb2dpZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigicmVkZWZpbml0aW9uIG9mIGdyb3VwIG5hbWUgJXMgYXMgZ3JvdXAgJWQ7ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2FzIGdyb3VwICVkIiAlIChyZXByKG5hbWUpLCBnaWQsICBvZ2lkKSkKKyAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigicmVkZWZpbml0aW9uIG9mIGdyb3VwIG5hbWUgJXIgYXMgZ3JvdXAgJWQ7ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2FzIGdyb3VwICVkIiAlIChuYW1lLCBnaWQsICBvZ2lkKSkKICAgICAgICAgICAgIHNlbGYuZ3JvdXBkaWN0W25hbWVdID0gZ2lkCi0gICAgICAgIHNlbGYub3Blbi5hcHBlbmQoZ2lkKQogICAgICAgICByZXR1cm4gZ2lkCi0gICAgZGVmIGNsb3NlZ3JvdXAoc2VsZiwgZ2lkKToKLSAgICAgICAgc2VsZi5vcGVuLnJlbW92ZShnaWQpCisgICAgZGVmIGNsb3NlZ3JvdXAoc2VsZiwgZ2lkLCBwKToKKyAgICAgICAgc2VsZi5ncm91cHdpZHRoc1tnaWRdID0gcC5nZXR3aWR0aCgpCiAgICAgZGVmIGNoZWNrZ3JvdXAoc2VsZiwgZ2lkKToKLSAgICAgICAgcmV0dXJuIGdpZCA8IHNlbGYuZ3JvdXBzIGFuZCBnaWQgbm90IGluIHNlbGYub3BlbgorICAgICAgICByZXR1cm4gZ2lkIDwgc2VsZi5ncm91cHMgYW5kIHNlbGYuZ3JvdXB3aWR0aHNbZ2lkXSBpcyBub3QgTm9uZQorCisgICAgZGVmIGNoZWNrbG9va2JlaGluZGdyb3VwKHNlbGYsIGdpZCwgc291cmNlKToKKyAgICAgICAgaWYgc2VsZi5sb29rYmVoaW5kZ3JvdXBzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY2hlY2tncm91cChnaWQpOgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcignY2Fubm90IHJlZmVyIHRvIGFuIG9wZW4gZ3JvdXAnKQorICAgICAgICAgICAgaWYgZ2lkID49IHNlbGYubG9va2JlaGluZGdyb3VwczoKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoJ2Nhbm5vdCByZWZlciB0byBncm91cCBkZWZpbmVkIGluIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvb2tiZWhpbmQgc3VicGF0dGVybicpCiAKIGNsYXNzIFN1YlBhdHRlcm46CiAgICAgIyBhIHN1YnBhdHRlcm4sIGluIGludGVybWVkaWF0ZSBmb3JtCkBAIC05OSwyNCArMTEyLDI0IEBACiAgICAgICAgIG5sID0gVHJ1ZQogICAgICAgICBzZXF0eXBlcyA9ICh0dXBsZSwgbGlzdCkKICAgICAgICAgZm9yIG9wLCBhdiBpbiBzZWxmLmRhdGE6Ci0gICAgICAgICAgICBwcmludChsZXZlbCoiICAiICsgb3AsIGVuZD0nJykKLSAgICAgICAgICAgIGlmIG9wID09IElOOgorICAgICAgICAgICAgcHJpbnQobGV2ZWwqIiAgIiArIHN0cihvcCksIGVuZD0nJykKKyAgICAgICAgICAgIGlmIG9wIGlzIElOOgogICAgICAgICAgICAgICAgICMgbWVtYmVyIHN1Ymxhbmd1YWdlCiAgICAgICAgICAgICAgICAgcHJpbnQoKQogICAgICAgICAgICAgICAgIGZvciBvcCwgYSBpbiBhdjoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoKGxldmVsKzEpKiIgICIgKyBvcCwgYSkKLSAgICAgICAgICAgIGVsaWYgb3AgPT0gQlJBTkNIOgorICAgICAgICAgICAgICAgICAgICBwcmludCgobGV2ZWwrMSkqIiAgIiArIHN0cihvcCksIGEpCisgICAgICAgICAgICBlbGlmIG9wIGlzIEJSQU5DSDoKICAgICAgICAgICAgICAgICBwcmludCgpCiAgICAgICAgICAgICAgICAgZm9yIGksIGEgaW4gZW51bWVyYXRlKGF2WzFdKToKICAgICAgICAgICAgICAgICAgICAgaWYgaToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KGxldmVsKiIgICIgKyAib3IiKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQobGV2ZWwqIiAgIiArICJPUiIpCiAgICAgICAgICAgICAgICAgICAgIGEuZHVtcChsZXZlbCsxKQotICAgICAgICAgICAgZWxpZiBvcCA9PSBHUk9VUFJFRl9FWElTVFM6CisgICAgICAgICAgICBlbGlmIG9wIGlzIEdST1VQUkVGX0VYSVNUUzoKICAgICAgICAgICAgICAgICBjb25kZ3JvdXAsIGl0ZW1feWVzLCBpdGVtX25vID0gYXYKICAgICAgICAgICAgICAgICBwcmludCgnJywgY29uZGdyb3VwKQogICAgICAgICAgICAgICAgIGl0ZW1feWVzLmR1bXAobGV2ZWwrMSkKICAgICAgICAgICAgICAgICBpZiBpdGVtX25vOgotICAgICAgICAgICAgICAgICAgICBwcmludChsZXZlbCoiICAiICsgImVsc2UiKQorICAgICAgICAgICAgICAgICAgICBwcmludChsZXZlbCoiICAiICsgIkVMU0UiKQogICAgICAgICAgICAgICAgICAgICBpdGVtX25vLmR1bXAobGV2ZWwrMSkKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShhdiwgc2VxdHlwZXMpOgogICAgICAgICAgICAgICAgIG5sID0gRmFsc2UKQEAgLTE1MywxMSArMTY2LDkgQEAKICAgICAgICAgc2VsZi5kYXRhLmFwcGVuZChjb2RlKQogICAgIGRlZiBnZXR3aWR0aChzZWxmKToKICAgICAgICAgIyBkZXRlcm1pbmUgdGhlIHdpZHRoIChtaW4sIG1heCkgZm9yIHRoaXMgc3VicGF0dGVybgotICAgICAgICBpZiBzZWxmLndpZHRoOgorICAgICAgICBpZiBzZWxmLndpZHRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYud2lkdGgKICAgICAgICAgbG8gPSBoaSA9IDAKLSAgICAgICAgVU5JVENPREVTID0gKEFOWSwgUkFOR0UsIElOLCBMSVRFUkFMLCBOT1RfTElURVJBTCwgQ0FURUdPUlkpCi0gICAgICAgIFJFUEVBVENPREVTID0gKE1JTl9SRVBFQVQsIE1BWF9SRVBFQVQpCiAgICAgICAgIGZvciBvcCwgYXYgaW4gc2VsZi5kYXRhOgogICAgICAgICAgICAgaWYgb3AgaXMgQlJBTkNIOgogICAgICAgICAgICAgICAgIGkgPSBNQVhSRVBFQVQgLSAxCkBAIC0xNzYsMTQgKzE4NywyOCBAQAogICAgICAgICAgICAgICAgIGksIGogPSBhdlsxXS5nZXR3aWR0aCgpCiAgICAgICAgICAgICAgICAgbG8gPSBsbyArIGkKICAgICAgICAgICAgICAgICBoaSA9IGhpICsgagotICAgICAgICAgICAgZWxpZiBvcCBpbiBSRVBFQVRDT0RFUzoKKyAgICAgICAgICAgIGVsaWYgb3AgaW4gX1JFUEVBVENPREVTOgogICAgICAgICAgICAgICAgIGksIGogPSBhdlsyXS5nZXR3aWR0aCgpCiAgICAgICAgICAgICAgICAgbG8gPSBsbyArIGkgKiBhdlswXQogICAgICAgICAgICAgICAgIGhpID0gaGkgKyBqICogYXZbMV0KLSAgICAgICAgICAgIGVsaWYgb3AgaW4gVU5JVENPREVTOgorICAgICAgICAgICAgZWxpZiBvcCBpbiBfVU5JVENPREVTOgogICAgICAgICAgICAgICAgIGxvID0gbG8gKyAxCiAgICAgICAgICAgICAgICAgaGkgPSBoaSArIDEKLSAgICAgICAgICAgIGVsaWYgb3AgPT0gU1VDQ0VTUzoKKyAgICAgICAgICAgIGVsaWYgb3AgaXMgR1JPVVBSRUY6CisgICAgICAgICAgICAgICAgaSwgaiA9IHNlbGYucGF0dGVybi5ncm91cHdpZHRoc1thdl0KKyAgICAgICAgICAgICAgICBsbyA9IGxvICsgaQorICAgICAgICAgICAgICAgIGhpID0gaGkgKyBqCisgICAgICAgICAgICBlbGlmIG9wIGlzIEdST1VQUkVGX0VYSVNUUzoKKyAgICAgICAgICAgICAgICBpLCBqID0gYXZbMV0uZ2V0d2lkdGgoKQorICAgICAgICAgICAgICAgIGlmIGF2WzJdIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBsLCBoID0gYXZbMl0uZ2V0d2lkdGgoKQorICAgICAgICAgICAgICAgICAgICBpID0gbWluKGksIGwpCisgICAgICAgICAgICAgICAgICAgIGogPSBtYXgoaiwgaCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpID0gMAorICAgICAgICAgICAgICAgIGxvID0gbG8gKyBpCisgICAgICAgICAgICAgICAgaGkgPSBoaSArIGoKKyAgICAgICAgICAgIGVsaWYgb3AgaXMgU1VDQ0VTUzoKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBzZWxmLndpZHRoID0gbWluKGxvLCBNQVhSRVBFQVQgLSAxKSwgbWluKGhpLCBNQVhSRVBFQVQpCiAgICAgICAgIHJldHVybiBzZWxmLndpZHRoCkBAIC0xOTIsMzMgKzIxNywzMyBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJpbmcpOgogICAgICAgICBzZWxmLmlzdGV4dCA9IGlzaW5zdGFuY2Uoc3RyaW5nLCBzdHIpCiAgICAgICAgIHNlbGYuc3RyaW5nID0gc3RyaW5nCisgICAgICAgIGlmIG5vdCBzZWxmLmlzdGV4dDoKKyAgICAgICAgICAgIHN0cmluZyA9IHN0cihzdHJpbmcsICdsYXRpbjEnKQorICAgICAgICBzZWxmLmRlY29kZWRfc3RyaW5nID0gc3RyaW5nCiAgICAgICAgIHNlbGYuaW5kZXggPSAwCisgICAgICAgIHNlbGYubmV4dCA9IE5vbmUKICAgICAgICAgc2VsZi5fX25leHQoKQogICAgIGRlZiBfX25leHQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuaW5kZXggPj0gbGVuKHNlbGYuc3RyaW5nKToKKyAgICAgICAgaW5kZXggPSBzZWxmLmluZGV4CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNoYXIgPSBzZWxmLmRlY29kZWRfc3RyaW5nW2luZGV4XQorICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgIHNlbGYubmV4dCA9IE5vbmUKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBjaGFyID0gc2VsZi5zdHJpbmdbc2VsZi5pbmRleDpzZWxmLmluZGV4KzFdCi0gICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciB0aGUgc3RyOCwgc2luY2UgaW5kZXhpbmcgcmV0dXJucyBhIGludGVnZXIKLSAgICAgICAgIyBYWFggVGhpcyBpcyBvbmx5IG5lZWRlZCBmb3IgdGVzdF9idWdfOTI2MDc1IGluIHRlc3RfcmUucHkKLSAgICAgICAgaWYgY2hhciBhbmQgbm90IHNlbGYuaXN0ZXh0OgotICAgICAgICAgICAgY2hhciA9IGNocihjaGFyWzBdKQogICAgICAgICBpZiBjaGFyID09ICJcXCI6CisgICAgICAgICAgICBpbmRleCArPSAxCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgYyA9IHNlbGYuc3RyaW5nW3NlbGYuaW5kZXggKyAxXQorICAgICAgICAgICAgICAgIGNoYXIgKz0gc2VsZi5kZWNvZGVkX3N0cmluZ1tpbmRleF0KICAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJib2d1cyBlc2NhcGUgKGVuZCBvZiBsaW5lKSIpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5pc3RleHQ6Ci0gICAgICAgICAgICAgICAgYyA9IGNocihjKQotICAgICAgICAgICAgY2hhciA9IGNoYXIgKyBjCi0gICAgICAgIHNlbGYuaW5kZXggPSBzZWxmLmluZGV4ICsgbGVuKGNoYXIpCisgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImJhZCBlc2NhcGUgKGVuZCBvZiBwYXR0ZXJuKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdHJpbmcsIGxlbihzZWxmLnN0cmluZykgLSAxKSBmcm9tIE5vbmUKKyAgICAgICAgc2VsZi5pbmRleCA9IGluZGV4ICsgMQogICAgICAgICBzZWxmLm5leHQgPSBjaGFyCi0gICAgZGVmIG1hdGNoKHNlbGYsIGNoYXIsIHNraXA9MSk6CisgICAgZGVmIG1hdGNoKHNlbGYsIGNoYXIpOgogICAgICAgICBpZiBjaGFyID09IHNlbGYubmV4dDoKLSAgICAgICAgICAgIGlmIHNraXA6Ci0gICAgICAgICAgICAgICAgc2VsZi5fX25leHQoKQotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIHNlbGYuX19uZXh0KCkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQogICAgIGRlZiBnZXQoc2VsZik6CiAgICAgICAgIHRoaXMgPSBzZWxmLm5leHQKICAgICAgICAgc2VsZi5fX25leHQoKQpAQCAtMjMyLDEwICsyNTcsMzAgQEAKICAgICAgICAgICAgIHJlc3VsdCArPSBjCiAgICAgICAgICAgICBzZWxmLl9fbmV4dCgpCiAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICBkZWYgZ2V0dW50aWwoc2VsZiwgdGVybWluYXRvcik6CisgICAgICAgIHJlc3VsdCA9ICcnCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBjID0gc2VsZi5uZXh0CisgICAgICAgICAgICBzZWxmLl9fbmV4dCgpCisgICAgICAgICAgICBpZiBjIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5lcnJvcigibWlzc2luZyBncm91cCBuYW1lIikKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmVycm9yKCJtaXNzaW5nICVzLCB1bnRlcm1pbmF0ZWQgbmFtZSIgJSB0ZXJtaW5hdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHJlc3VsdCkpCisgICAgICAgICAgICBpZiBjID09IHRlcm1pbmF0b3I6CisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5lcnJvcigibWlzc2luZyBncm91cCBuYW1lIiwgMSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmVzdWx0ICs9IGMKKyAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgIGRlZiB0ZWxsKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5pbmRleCwgc2VsZi5uZXh0CisgICAgICAgIHJldHVybiBzZWxmLmluZGV4IC0gbGVuKHNlbGYubmV4dCBvciAnJykKICAgICBkZWYgc2VlayhzZWxmLCBpbmRleCk6Ci0gICAgICAgIHNlbGYuaW5kZXgsIHNlbGYubmV4dCA9IGluZGV4CisgICAgICAgIHNlbGYuaW5kZXggPSBpbmRleAorICAgICAgICBzZWxmLl9fbmV4dCgpCisKKyAgICBkZWYgZXJyb3Ioc2VsZiwgbXNnLCBvZmZzZXQ9MCk6CisgICAgICAgIHJldHVybiBlcnJvcihtc2csIHNlbGYuc3RyaW5nLCBzZWxmLnRlbGwoKSAtIG9mZnNldCkKIAogIyBUaGUgZm9sbG93aW5nIHRocmVlIGZ1bmN0aW9ucyBhcmUgbm90IHVzZWQgaW4gdGhpcyBtb2R1bGUgYW55bW9yZSwgYnV0IHdlIGtlZXAKICMgdGhlbSBoZXJlICh3aXRoIERlcHJlY2F0aW9uV2FybmluZ3MpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KQEAgLTI3MCw3ICszMTUsNyBAQAogICAgIGlmIGNvZGU6CiAgICAgICAgIHJldHVybiBjb2RlCiAgICAgY29kZSA9IENBVEVHT1JJRVMuZ2V0KGVzY2FwZSkKLSAgICBpZiBjb2RlIGFuZCBjb2RlWzBdID09IElOOgorICAgIGlmIGNvZGUgYW5kIGNvZGVbMF0gaXMgSU46CiAgICAgICAgIHJldHVybiBjb2RlCiAgICAgdHJ5OgogICAgICAgICBjID0gZXNjYXBlWzE6Ml0KQEAgLTI3OCwzMyArMzIzLDQxIEBACiAgICAgICAgICAgICAjIGhleGFkZWNpbWFsIGVzY2FwZSAoZXhhY3RseSB0d28gZGlnaXRzKQogICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSgyLCBIRVhESUdJVFMpCiAgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA0OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKLSAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzI6XSwgMTYpICYgMHhmZgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW5jb21wbGV0ZSBlc2NhcGUgJXMiICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzI6XSwgMTYpCiAgICAgICAgIGVsaWYgYyA9PSAidSIgYW5kIHNvdXJjZS5pc3RleHQ6CiAgICAgICAgICAgICAjIHVuaWNvZGUgZXNjYXBlIChleGFjdGx5IGZvdXIgZGlnaXRzKQogICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSg0LCBIRVhESUdJVFMpCiAgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA2OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImluY29tcGxldGUgZXNjYXBlICVzIiAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KQogICAgICAgICBlbGlmIGMgPT0gIlUiIGFuZCBzb3VyY2UuaXN0ZXh0OgogICAgICAgICAgICAgIyB1bmljb2RlIGVzY2FwZSAoZXhhY3RseSBlaWdodCBkaWdpdHMpCiAgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDgsIEhFWERJR0lUUykKICAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDEwOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImluY29tcGxldGUgZXNjYXBlICVzIiAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgICBjID0gaW50KGVzY2FwZVsyOl0sIDE2KQogICAgICAgICAgICAgY2hyKGMpICMgcmFpc2UgVmFsdWVFcnJvciBmb3IgaW52YWxpZCBjb2RlCiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgYwogICAgICAgICBlbGlmIGMgaW4gT0NURElHSVRTOgogICAgICAgICAgICAgIyBvY3RhbCBlc2NhcGUgKHVwIHRvIHRocmVlIGRpZ2l0cykKICAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoMiwgT0NURElHSVRTKQotICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMTpdLCA4KSAmIDB4ZmYKKyAgICAgICAgICAgIGMgPSBpbnQoZXNjYXBlWzE6XSwgOCkKKyAgICAgICAgICAgIGlmIGMgPiAwbzM3NzoKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoJ29jdGFsIGVzY2FwZSB2YWx1ZSAlcyBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JhbmdlIDAtMG8zNzcnICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBjCiAgICAgICAgIGVsaWYgYyBpbiBESUdJVFM6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgIGlmIGxlbihlc2NhcGUpID09IDI6CisgICAgICAgICAgICBpZiBjIGluIEFTQ0lJTEVUVEVSUzoKKyAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdiYWQgZXNjYXBlICVzJyAlIGVzY2FwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD04KQogICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIG9yZChlc2NhcGVbMV0pCiAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgIHBhc3MKLSAgICByYWlzZSBlcnJvcigiYm9ndXMgZXNjYXBlOiAlcyIgJSByZXByKGVzY2FwZSkpCisgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgZXNjYXBlICVzIiAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAKIGRlZiBfZXNjYXBlKHNvdXJjZSwgZXNjYXBlLCBzdGF0ZSk6CiAgICAgIyBoYW5kbGUgZXNjYXBlIGNvZGUgaW4gZXhwcmVzc2lvbgpAQCAtMzIwLDY5ICszNzMsNzAgQEAKICAgICAgICAgICAgICMgaGV4YWRlY2ltYWwgZXNjYXBlCiAgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDIsIEhFWERJR0lUUykKICAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgotICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMjpdLCAxNikgJiAweGZmCisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJpbmNvbXBsZXRlIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQorICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMjpdLCAxNikKICAgICAgICAgZWxpZiBjID09ICJ1IiBhbmQgc291cmNlLmlzdGV4dDoKICAgICAgICAgICAgICMgdW5pY29kZSBlc2NhcGUgKGV4YWN0bHkgZm91ciBkaWdpdHMpCiAgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDQsIEhFWERJR0lUUykKICAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDY6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW5jb21wbGV0ZSBlc2NhcGUgJXMiICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzI6XSwgMTYpCiAgICAgICAgIGVsaWYgYyA9PSAiVSIgYW5kIHNvdXJjZS5pc3RleHQ6CiAgICAgICAgICAgICAjIHVuaWNvZGUgZXNjYXBlIChleGFjdGx5IGVpZ2h0IGRpZ2l0cykKICAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoOCwgSEVYRElHSVRTKQogICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gMTA6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW5jb21wbGV0ZSBlc2NhcGUgJXMiICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKICAgICAgICAgICAgIGMgPSBpbnQoZXNjYXBlWzI6XSwgMTYpCiAgICAgICAgICAgICBjaHIoYykgIyByYWlzZSBWYWx1ZUVycm9yIGZvciBpbnZhbGlkIGNvZGUKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBjCiAgICAgICAgIGVsaWYgYyA9PSAiMCI6CiAgICAgICAgICAgICAjIG9jdGFsIGVzY2FwZQogICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSgyLCBPQ1RESUdJVFMpCi0gICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsxOl0sIDgpICYgMHhmZgorICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMTpdLCA4KQogICAgICAgICBlbGlmIGMgaW4gRElHSVRTOgogICAgICAgICAgICAgIyBvY3RhbCBlc2NhcGUgKm9yKiBkZWNpbWFsIGdyb3VwIHJlZmVyZW5jZSAoc2lnaCkKICAgICAgICAgICAgIGlmIHNvdXJjZS5uZXh0IGluIERJR0lUUzoKLSAgICAgICAgICAgICAgICBlc2NhcGUgPSBlc2NhcGUgKyBzb3VyY2UuZ2V0KCkKKyAgICAgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldCgpCiAgICAgICAgICAgICAgICAgaWYgKGVzY2FwZVsxXSBpbiBPQ1RESUdJVFMgYW5kIGVzY2FwZVsyXSBpbiBPQ1RESUdJVFMgYW5kCiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0IGluIE9DVERJR0lUUyk6CiAgICAgICAgICAgICAgICAgICAgICMgZ290IHRocmVlIG9jdGFsIGRpZ2l0czsgdGhpcyBpcyBhbiBvY3RhbCBlc2NhcGUKLSAgICAgICAgICAgICAgICAgICAgZXNjYXBlID0gZXNjYXBlICsgc291cmNlLmdldCgpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzE6XSwgOCkgJiAweGZmCisgICAgICAgICAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgYyA9IGludChlc2NhcGVbMTpdLCA4KQorICAgICAgICAgICAgICAgICAgICBpZiBjID4gMG8zNzc6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoJ29jdGFsIGVzY2FwZSB2YWx1ZSAlcyBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmFuZ2UgMC0wbzM3NycgJSBlc2NhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGVzY2FwZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBjCiAgICAgICAgICAgICAjIG5vdCBhbiBvY3RhbCBlc2NhcGUsIHNvIHRoaXMgaXMgYSBncm91cCByZWZlcmVuY2UKICAgICAgICAgICAgIGdyb3VwID0gaW50KGVzY2FwZVsxOl0pCiAgICAgICAgICAgICBpZiBncm91cCA8IHN0YXRlLmdyb3VwczoKICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdGUuY2hlY2tncm91cChncm91cCk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJjYW5ub3QgcmVmZXIgdG8gb3BlbiBncm91cCIpCi0gICAgICAgICAgICAgICAgaWYgc3RhdGUubG9va2JlaGluZDoKLSAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2dyb3VwIHJlZmVyZW5jZXMgaW4gbG9va2JlaGluZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fzc2VydGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImNhbm5vdCByZWZlciB0byBhbiBvcGVuIGdyb3VwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihlc2NhcGUpKQorICAgICAgICAgICAgICAgIHN0YXRlLmNoZWNrbG9va2JlaGluZGdyb3VwKGdyb3VwLCBzb3VyY2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEdST1VQUkVGLCBncm91cAotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSIsIGxlbihlc2NhcGUpKQogICAgICAgICBpZiBsZW4oZXNjYXBlKSA9PSAyOgorICAgICAgICAgICAgaWYgYyBpbiBBU0NJSUxFVFRFUlM6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybignYmFkIGVzY2FwZSAlcycgJSBlc2NhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9OCkKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBvcmQoZXNjYXBlWzFdKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICBwYXNzCi0gICAgcmFpc2UgZXJyb3IoImJvZ3VzIGVzY2FwZTogJXMiICUgcmVwcihlc2NhcGUpKQorICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogCi1kZWYgX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlLCBuZXN0ZWQ9MSk6CitkZWYgX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlLCBuZXN0ZWQ9VHJ1ZSk6CiAgICAgIyBwYXJzZSBhbiBhbHRlcm5hdGlvbjogYXxifGMKIAogICAgIGl0ZW1zID0gW10KICAgICBpdGVtc2FwcGVuZCA9IGl0ZW1zLmFwcGVuZAogICAgIHNvdXJjZW1hdGNoID0gc291cmNlLm1hdGNoCi0gICAgd2hpbGUgMToKKyAgICBzdGFydCA9IHNvdXJjZS50ZWxsKCkKKyAgICB3aGlsZSBUcnVlOgogICAgICAgICBpdGVtc2FwcGVuZChfcGFyc2Uoc291cmNlLCBzdGF0ZSkpCi0gICAgICAgIGlmIHNvdXJjZW1hdGNoKCJ8Iik6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBub3QgbmVzdGVkOgorICAgICAgICBpZiBub3Qgc291cmNlbWF0Y2goInwiKToKICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlmIG5vdCBzb3VyY2UubmV4dCBvciBzb3VyY2VtYXRjaCgiKSIsIDApOgotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIGVycm9yKCJwYXR0ZXJuIG5vdCBwcm9wZXJseSBjbG9zZWQiKQogCiAgICAgaWYgbGVuKGl0ZW1zKSA9PSAxOgogICAgICAgICByZXR1cm4gaXRlbXNbMF0KQEAgLTM5MSw3ICs0NDUsNyBAQAogICAgIHN1YnBhdHRlcm5hcHBlbmQgPSBzdWJwYXR0ZXJuLmFwcGVuZAogCiAgICAgIyBjaGVjayBpZiBhbGwgaXRlbXMgc2hhcmUgYSBjb21tb24gcHJlZml4Ci0gICAgd2hpbGUgMToKKyAgICB3aGlsZSBUcnVlOgogICAgICAgICBwcmVmaXggPSBOb25lCiAgICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgogICAgICAgICAgICAgaWYgbm90IGl0ZW06CkBAIC00MTEsMTYgKzQ2NSwxMiBAQAogCiAgICAgIyBjaGVjayBpZiB0aGUgYnJhbmNoIGNhbiBiZSByZXBsYWNlZCBieSBhIGNoYXJhY3RlciBzZXQKICAgICBmb3IgaXRlbSBpbiBpdGVtczoKLSAgICAgICAgaWYgbGVuKGl0ZW0pICE9IDEgb3IgaXRlbVswXVswXSAhPSBMSVRFUkFMOgorICAgICAgICBpZiBsZW4oaXRlbSkgIT0gMSBvciBpdGVtWzBdWzBdIGlzIG5vdCBMSVRFUkFMOgogICAgICAgICAgICAgYnJlYWsKICAgICBlbHNlOgogICAgICAgICAjIHdlIGNhbiBzdG9yZSB0aGlzIGFzIGEgY2hhcmFjdGVyIHNldCBpbnN0ZWFkIG9mIGEKICAgICAgICAgIyBicmFuY2ggKHRoZSBjb21waWxlciBtYXkgb3B0aW1pemUgdGhpcyBldmVuIG1vcmUpCi0gICAgICAgIHNldCA9IFtdCi0gICAgICAgIHNldGFwcGVuZCA9IHNldC5hcHBlbmQKLSAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6Ci0gICAgICAgICAgICBzZXRhcHBlbmQoaXRlbVswXSkKLSAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoSU4sIHNldCkpCisgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKElOLCBbaXRlbVswXSBmb3IgaXRlbSBpbiBpdGVtc10pKQogICAgICAgICByZXR1cm4gc3VicGF0dGVybgogCiAgICAgc3VicGF0dGVybi5hcHBlbmQoKEJSQU5DSCwgKE5vbmUsIGl0ZW1zKSkpCkBAIC00MzAsMjEgKzQ4MCwxNCBAQAogICAgIGl0ZW1feWVzID0gX3BhcnNlKHNvdXJjZSwgc3RhdGUpCiAgICAgaWYgc291cmNlLm1hdGNoKCJ8Iik6CiAgICAgICAgIGl0ZW1fbm8gPSBfcGFyc2Uoc291cmNlLCBzdGF0ZSkKLSAgICAgICAgaWYgc291cmNlLm1hdGNoKCJ8Iik6Ci0gICAgICAgICAgICByYWlzZSBlcnJvcigiY29uZGl0aW9uYWwgYmFja3JlZiB3aXRoIG1vcmUgdGhhbiB0d28gYnJhbmNoZXMiKQorICAgICAgICBpZiBzb3VyY2UubmV4dCA9PSAifCI6CisgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImNvbmRpdGlvbmFsIGJhY2tyZWYgd2l0aCBtb3JlIHRoYW4gdHdvIGJyYW5jaGVzIikKICAgICBlbHNlOgogICAgICAgICBpdGVtX25vID0gTm9uZQotICAgIGlmIHNvdXJjZS5uZXh0IGFuZCBub3Qgc291cmNlLm1hdGNoKCIpIiwgMCk6Ci0gICAgICAgIHJhaXNlIGVycm9yKCJwYXR0ZXJuIG5vdCBwcm9wZXJseSBjbG9zZWQiKQogICAgIHN1YnBhdHRlcm4gPSBTdWJQYXR0ZXJuKHN0YXRlKQogICAgIHN1YnBhdHRlcm4uYXBwZW5kKChHUk9VUFJFRl9FWElTVFMsIChjb25kZ3JvdXAsIGl0ZW1feWVzLCBpdGVtX25vKSkpCiAgICAgcmV0dXJuIHN1YnBhdHRlcm4KIAotX1BBVFRFUk5FTkRFUlMgPSBzZXQoInwpIikKLV9BU1NFUlRDSEFSUyA9IHNldCgiPSE8IikKLV9MT09LQkVISU5EQVNTRVJUQ0hBUlMgPSBzZXQoIj0hIikKLV9SRVBFQVRDT0RFUyA9IHNldChbTUlOX1JFUEVBVCwgTUFYX1JFUEVBVF0pCi0KIGRlZiBfcGFyc2Uoc291cmNlLCBzdGF0ZSk6CiAgICAgIyBwYXJzZSBhIHNpbXBsZSBwYXR0ZXJuCiAgICAgc3VicGF0dGVybiA9IFN1YlBhdHRlcm4oc3RhdGUpCkBAIC00NTQsMzQgKzQ5NywzOCBAQAogICAgIHNvdXJjZWdldCA9IHNvdXJjZS5nZXQKICAgICBzb3VyY2VtYXRjaCA9IHNvdXJjZS5tYXRjaAogICAgIF9sZW4gPSBsZW4KLSAgICBQQVRURVJORU5ERVJTID0gX1BBVFRFUk5FTkRFUlMKLSAgICBBU1NFUlRDSEFSUyA9IF9BU1NFUlRDSEFSUwotICAgIExPT0tCRUhJTkRBU1NFUlRDSEFSUyA9IF9MT09LQkVISU5EQVNTRVJUQ0hBUlMKLSAgICBSRVBFQVRDT0RFUyA9IF9SRVBFQVRDT0RFUworICAgIF9vcmQgPSBvcmQKKyAgICB2ZXJib3NlID0gc3RhdGUuZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFCiAKLSAgICB3aGlsZSAxOgorICAgIHdoaWxlIFRydWU6CiAKLSAgICAgICAgaWYgc291cmNlLm5leHQgaW4gUEFUVEVSTkVOREVSUzoKLSAgICAgICAgICAgIGJyZWFrICMgZW5kIG9mIHN1YnBhdHRlcm4KLSAgICAgICAgdGhpcyA9IHNvdXJjZWdldCgpCisgICAgICAgIHRoaXMgPSBzb3VyY2UubmV4dAogICAgICAgICBpZiB0aGlzIGlzIE5vbmU6CiAgICAgICAgICAgICBicmVhayAjIGVuZCBvZiBwYXR0ZXJuCisgICAgICAgIGlmIHRoaXMgaW4gInwpIjoKKyAgICAgICAgICAgIGJyZWFrICMgZW5kIG9mIHN1YnBhdHRlcm4KKyAgICAgICAgc291cmNlZ2V0KCkKIAotICAgICAgICBpZiBzdGF0ZS5mbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0U6CisgICAgICAgIGlmIHZlcmJvc2U6CiAgICAgICAgICAgICAjIHNraXAgd2hpdGVzcGFjZSBhbmQgY29tbWVudHMKICAgICAgICAgICAgIGlmIHRoaXMgaW4gV0hJVEVTUEFDRToKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgdGhpcyA9PSAiIyI6Ci0gICAgICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgICAgICB0aGlzID0gc291cmNlZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgaWYgdGhpcyBpbiAoTm9uZSwgIlxuIik6CisgICAgICAgICAgICAgICAgICAgIGlmIHRoaXMgaXMgTm9uZSBvciB0aGlzID09ICJcbiI6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgaWYgdGhpcyBhbmQgdGhpc1swXSBub3QgaW4gU1BFQ0lBTF9DSEFSUzoKLSAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKExJVEVSQUwsIG9yZCh0aGlzKSkpCisgICAgICAgIGlmIHRoaXNbMF0gPT0gIlxcIjoKKyAgICAgICAgICAgIGNvZGUgPSBfZXNjYXBlKHNvdXJjZSwgdGhpcywgc3RhdGUpCisgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKGNvZGUpCisKKyAgICAgICAgZWxpZiB0aGlzIG5vdCBpbiBTUEVDSUFMX0NIQVJTOgorICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoTElURVJBTCwgX29yZCh0aGlzKSkpCiAKICAgICAgICAgZWxpZiB0aGlzID09ICJbIjoKKyAgICAgICAgICAgIGhlcmUgPSBzb3VyY2UudGVsbCgpIC0gMQogICAgICAgICAgICAgIyBjaGFyYWN0ZXIgc2V0CiAgICAgICAgICAgICBzZXQgPSBbXQogICAgICAgICAgICAgc2V0YXBwZW5kID0gc2V0LmFwcGVuZApAQCAtNDkxLDM5ICs1MzgsNDIgQEAKICAgICAgICAgICAgICAgICBzZXRhcHBlbmQoKE5FR0FURSwgTm9uZSkpCiAgICAgICAgICAgICAjIGNoZWNrIHJlbWFpbmluZyBjaGFyYWN0ZXJzCiAgICAgICAgICAgICBzdGFydCA9IHNldFs6XQotICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgdGhpcyA9IHNvdXJjZWdldCgpCisgICAgICAgICAgICAgICAgaWYgdGhpcyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVudGVybWluYXRlZCBjaGFyYWN0ZXIgc2V0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS50ZWxsKCkgLSBoZXJlKQogICAgICAgICAgICAgICAgIGlmIHRoaXMgPT0gIl0iIGFuZCBzZXQgIT0gc3RhcnQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZWxpZiB0aGlzIGFuZCB0aGlzWzBdID09ICJcXCI6CisgICAgICAgICAgICAgICAgZWxpZiB0aGlzWzBdID09ICJcXCI6CiAgICAgICAgICAgICAgICAgICAgIGNvZGUxID0gX2NsYXNzX2VzY2FwZShzb3VyY2UsIHRoaXMpCi0gICAgICAgICAgICAgICAgZWxpZiB0aGlzOgotICAgICAgICAgICAgICAgICAgICBjb2RlMSA9IExJVEVSQUwsIG9yZCh0aGlzKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bmV4cGVjdGVkIGVuZCBvZiByZWd1bGFyIGV4cHJlc3Npb24iKQorICAgICAgICAgICAgICAgICAgICBjb2RlMSA9IExJVEVSQUwsIF9vcmQodGhpcykKICAgICAgICAgICAgICAgICBpZiBzb3VyY2VtYXRjaCgiLSIpOgogICAgICAgICAgICAgICAgICAgICAjIHBvdGVudGlhbCByYW5nZQotICAgICAgICAgICAgICAgICAgICB0aGlzID0gc291cmNlZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgaWYgdGhpcyA9PSAiXSI6CisgICAgICAgICAgICAgICAgICAgIHRoYXQgPSBzb3VyY2VnZXQoKQorICAgICAgICAgICAgICAgICAgICBpZiB0aGF0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVudGVybWluYXRlZCBjaGFyYWN0ZXIgc2V0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gaGVyZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgdGhhdCA9PSAiXSI6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb2RlMVswXSBpcyBJTjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlMSA9IGNvZGUxWzFdWzBdCiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRhcHBlbmQoY29kZTEpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXRhcHBlbmQoKExJVEVSQUwsIG9yZCgiLSIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldGFwcGVuZCgoTElURVJBTCwgX29yZCgiLSIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgdGhpczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRoaXNbMF0gPT0gIlxcIjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlMiA9IF9jbGFzc19lc2NhcGUoc291cmNlLCB0aGlzKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlMiA9IExJVEVSQUwsIG9yZCh0aGlzKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29kZTFbMF0gIT0gTElURVJBTCBvciBjb2RlMlswXSAhPSBMSVRFUkFMOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJiYWQgY2hhcmFjdGVyIHJhbmdlIikKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvID0gY29kZTFbMV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGhpID0gY29kZTJbMV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGhpIDwgbG86Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImJhZCBjaGFyYWN0ZXIgcmFuZ2UiKQotICAgICAgICAgICAgICAgICAgICAgICAgc2V0YXBwZW5kKChSQU5HRSwgKGxvLCBoaSkpKQorICAgICAgICAgICAgICAgICAgICBpZiB0aGF0WzBdID09ICJcXCI6CisgICAgICAgICAgICAgICAgICAgICAgICBjb2RlMiA9IF9jbGFzc19lc2NhcGUoc291cmNlLCB0aGF0KQogICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInVuZXhwZWN0ZWQgZW5kIG9mIHJlZ3VsYXIgZXhwcmVzc2lvbiIpCisgICAgICAgICAgICAgICAgICAgICAgICBjb2RlMiA9IExJVEVSQUwsIF9vcmQodGhhdCkKKyAgICAgICAgICAgICAgICAgICAgaWYgY29kZTFbMF0gIT0gTElURVJBTCBvciBjb2RlMlswXSAhPSBMSVRFUkFMOgorICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gImJhZCBjaGFyYWN0ZXIgcmFuZ2UgJXMtJXMiICUgKHRoaXMsIHRoYXQpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IobXNnLCBsZW4odGhpcykgKyAxICsgbGVuKHRoYXQpKQorICAgICAgICAgICAgICAgICAgICBsbyA9IGNvZGUxWzFdCisgICAgICAgICAgICAgICAgICAgIGhpID0gY29kZTJbMV0KKyAgICAgICAgICAgICAgICAgICAgaWYgaGkgPCBsbzoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJiYWQgY2hhcmFjdGVyIHJhbmdlICVzLSVzIiAlICh0aGlzLCB0aGF0KQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKHRoaXMpICsgMSArIGxlbih0aGF0KSkKKyAgICAgICAgICAgICAgICAgICAgc2V0YXBwZW5kKChSQU5HRSwgKGxvLCBoaSkpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGlmIGNvZGUxWzBdIGlzIElOOgogICAgICAgICAgICAgICAgICAgICAgICAgY29kZTEgPSBjb2RlMVsxXVswXQpAQCAtNTM4LDggKzU4OCw5IEBACiAgICAgICAgICAgICAgICAgIyBYWFg6IDxmbD4gc2hvdWxkIGFkZCBjaGFybWFwIG9wdGltaXphdGlvbiBoZXJlCiAgICAgICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoSU4sIHNldCkpCiAKLSAgICAgICAgZWxpZiB0aGlzIGFuZCB0aGlzWzBdIGluIFJFUEVBVF9DSEFSUzoKKyAgICAgICAgZWxpZiB0aGlzIGluIFJFUEVBVF9DSEFSUzoKICAgICAgICAgICAgICMgcmVwZWF0IHByZXZpb3VzIGl0ZW0KKyAgICAgICAgICAgIGhlcmUgPSBzb3VyY2UudGVsbCgpCiAgICAgICAgICAgICBpZiB0aGlzID09ICI/IjoKICAgICAgICAgICAgICAgICBtaW4sIG1heCA9IDAsIDEKICAgICAgICAgICAgIGVsaWYgdGhpcyA9PSAiKiI6CkBAIC01NDksMjAgKzYwMCwxOSBAQAogICAgICAgICAgICAgICAgIG1pbiwgbWF4ID0gMSwgTUFYUkVQRUFUCiAgICAgICAgICAgICBlbGlmIHRoaXMgPT0gInsiOgogICAgICAgICAgICAgICAgIGlmIHNvdXJjZS5uZXh0ID09ICJ9IjoKLSAgICAgICAgICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoTElURVJBTCwgb3JkKHRoaXMpKSkKKyAgICAgICAgICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoTElURVJBTCwgX29yZCh0aGlzKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaGVyZSA9IHNvdXJjZS50ZWxsKCkKICAgICAgICAgICAgICAgICBtaW4sIG1heCA9IDAsIE1BWFJFUEVBVAogICAgICAgICAgICAgICAgIGxvID0gaGkgPSAiIgogICAgICAgICAgICAgICAgIHdoaWxlIHNvdXJjZS5uZXh0IGluIERJR0lUUzoKLSAgICAgICAgICAgICAgICAgICAgbG8gPSBsbyArIHNvdXJjZS5nZXQoKQorICAgICAgICAgICAgICAgICAgICBsbyArPSBzb3VyY2VnZXQoKQogICAgICAgICAgICAgICAgIGlmIHNvdXJjZW1hdGNoKCIsIik6CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHNvdXJjZS5uZXh0IGluIERJR0lUUzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGhpID0gaGkgKyBzb3VyY2VnZXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgaGkgKz0gc291cmNlZ2V0KCkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBoaSA9IGxvCiAgICAgICAgICAgICAgICAgaWYgbm90IHNvdXJjZW1hdGNoKCJ9Iik6Ci0gICAgICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKExJVEVSQUwsIG9yZCh0aGlzKSkpCisgICAgICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKExJVEVSQUwsIF9vcmQodGhpcykpKQogICAgICAgICAgICAgICAgICAgICBzb3VyY2Uuc2VlayhoZXJlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGlmIGxvOgpAQCAtNTc0LDE4ICs2MjQsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgbWF4ID49IE1BWFJFUEVBVDoKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoInRoZSByZXBldGl0aW9uIG51bWJlciBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgICAgICAgICBpZiBtYXggPCBtaW46Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigiYmFkIHJlcGVhdCBpbnRlcnZhbCIpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pbiByZXBlYXQgZ3JlYXRlciB0aGFuIG1heCByZXBlYXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS50ZWxsKCkgLSBoZXJlKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigibm90IHN1cHBvcnRlZCIpCisgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoInVuc3VwcG9ydGVkIHF1YW50aWZpZXIgJXIiICUgKGNoYXIsKSkKICAgICAgICAgICAgICMgZmlndXJlIG91dCB3aGljaCBpdGVtIHRvIHJlcGVhdAogICAgICAgICAgICAgaWYgc3VicGF0dGVybjoKICAgICAgICAgICAgICAgICBpdGVtID0gc3VicGF0dGVyblstMTpdCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGl0ZW0gPSBOb25lCi0gICAgICAgICAgICBpZiBub3QgaXRlbSBvciAoX2xlbihpdGVtKSA9PSAxIGFuZCBpdGVtWzBdWzBdID09IEFUKToKLSAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigibm90aGluZyB0byByZXBlYXQiKQotICAgICAgICAgICAgaWYgaXRlbVswXVswXSBpbiBSRVBFQVRDT0RFUzoKLSAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigibXVsdGlwbGUgcmVwZWF0IikKKyAgICAgICAgICAgIGlmIG5vdCBpdGVtIG9yIChfbGVuKGl0ZW0pID09IDEgYW5kIGl0ZW1bMF1bMF0gaXMgQVQpOgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigibm90aGluZyB0byByZXBlYXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gaGVyZSArIGxlbih0aGlzKSkKKyAgICAgICAgICAgIGlmIGl0ZW1bMF1bMF0gaW4gX1JFUEVBVENPREVTOgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigibXVsdGlwbGUgcmVwZWF0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnRlbGwoKSAtIGhlcmUgKyBsZW4odGhpcykpCiAgICAgICAgICAgICBpZiBzb3VyY2VtYXRjaCgiPyIpOgogICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5bLTFdID0gKE1JTl9SRVBFQVQsIChtaW4sIG1heCwgaXRlbSkpCiAgICAgICAgICAgICBlbHNlOgpAQCAtNTk1LDE1MCArNjQ4LDE0MCBAQAogICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoQU5ZLCBOb25lKSkKIAogICAgICAgICBlbGlmIHRoaXMgPT0gIigiOgotICAgICAgICAgICAgZ3JvdXAgPSAxCisgICAgICAgICAgICBzdGFydCA9IHNvdXJjZS50ZWxsKCkgLSAxCisgICAgICAgICAgICBncm91cCA9IFRydWUKICAgICAgICAgICAgIG5hbWUgPSBOb25lCiAgICAgICAgICAgICBjb25kZ3JvdXAgPSBOb25lCiAgICAgICAgICAgICBpZiBzb3VyY2VtYXRjaCgiPyIpOgotICAgICAgICAgICAgICAgIGdyb3VwID0gMAogICAgICAgICAgICAgICAgICMgb3B0aW9ucwotICAgICAgICAgICAgICAgIGlmIHNvdXJjZW1hdGNoKCJQIik6CisgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCisgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4iKQorICAgICAgICAgICAgICAgIGlmIGNoYXIgPT0gIlAiOgogICAgICAgICAgICAgICAgICAgICAjIHB5dGhvbiBleHRlbnNpb25zCiAgICAgICAgICAgICAgICAgICAgIGlmIHNvdXJjZW1hdGNoKCI8Iik6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIG5hbWVkIGdyb3VwOiBza2lwIGZvcndhcmQgdG8gZW5kIG9mIG5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSAiIgotICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bnRlcm1pbmF0ZWQgbmFtZSIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciA9PSAiPiI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUgKyBjaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICBncm91cCA9IDEKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJtaXNzaW5nIGdyb3VwIG5hbWUiKQorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHNvdXJjZS5nZXR1bnRpbCgiPiIpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbmFtZS5pc2lkZW50aWZpZXIoKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICVyIiAlIG5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAlciIgJSBuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKG5hbWUpICsgMSkKICAgICAgICAgICAgICAgICAgICAgZWxpZiBzb3VyY2VtYXRjaCgiPSIpOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBuYW1lZCBiYWNrcmVmZXJlbmNlCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gIiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigidW50ZXJtaW5hdGVkIG5hbWUiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgPT0gIikiOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lICsgY2hhcgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoIm1pc3NpbmcgZ3JvdXAgbmFtZSIpCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gc291cmNlLmdldHVudGlsKCIpIikKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBuYW1lLmlzaWRlbnRpZmllcigpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJiYWQgY2hhcmFjdGVyIGluIGJhY2tyZWYgZ3JvdXAgbmFtZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVyIiAlIG5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAlciIgJSBuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKG5hbWUpICsgMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdpZCA9IHN0YXRlLmdyb3VwZGljdC5nZXQobmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGdpZCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJ1bmtub3duIGdyb3VwIG5hbWU6IHswIXJ9Ii5mb3JtYXQobmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcihtc2cpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzdGF0ZS5sb29rYmVoaW5kOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2dyb3VwIHJlZmVyZW5jZXMgaW4gbG9va2JlaGluZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNzZXJ0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBncm91cCBuYW1lICVyIiAlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IobXNnLCBsZW4obmFtZSkgKyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXRlLmNoZWNrZ3JvdXAoZ2lkKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImNhbm5vdCByZWZlciB0byBhbiBvcGVuIGdyb3VwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKG5hbWUpICsgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmNoZWNrbG9va2JlaGluZGdyb3VwKGdpZCwgc291cmNlKQogICAgICAgICAgICAgICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoR1JPVVBSRUYsIGdpZCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInVuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4iKQotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInVua25vd24gc3BlY2lmaWVyOiA/UCVzIiAlIGNoYXIpCi0gICAgICAgICAgICAgICAgZWxpZiBzb3VyY2VtYXRjaCgiOiIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigidW5leHBlY3RlZCBlbmQgb2YgcGF0dGVybiIpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVua25vd24gZXh0ZW5zaW9uID9QIiArIGNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNoYXIpICsgMikKKyAgICAgICAgICAgICAgICBlbGlmIGNoYXIgPT0gIjoiOgogICAgICAgICAgICAgICAgICAgICAjIG5vbi1jYXB0dXJpbmcgZ3JvdXAKLSAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSAyCi0gICAgICAgICAgICAgICAgZWxpZiBzb3VyY2VtYXRjaCgiIyIpOgorICAgICAgICAgICAgICAgICAgICBncm91cCA9IE5vbmUKKyAgICAgICAgICAgICAgICBlbGlmIGNoYXIgPT0gIiMiOgogICAgICAgICAgICAgICAgICAgICAjIGNvbW1lbnQKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNvdXJjZS5uZXh0IGlzIE5vbmUgb3Igc291cmNlLm5leHQgPT0gIikiOgorICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgc291cmNlLm5leHQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIGNvbW1lbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gc3RhcnQpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzb3VyY2VnZXQoKSA9PSAiKSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZWdldCgpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzb3VyY2VtYXRjaCgiKSIpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInVuYmFsYW5jZWQgcGFyZW50aGVzaXMiKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGVsaWYgc291cmNlLm5leHQgaW4gQVNTRVJUQ0hBUlM6CisgICAgICAgICAgICAgICAgZWxpZiBjaGFyIGluICI9ITwiOgogICAgICAgICAgICAgICAgICAgICAjIGxvb2thaGVhZCBhc3NlcnRpb25zCi0gICAgICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQogICAgICAgICAgICAgICAgICAgICBkaXIgPSAxCiAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgPT0gIjwiOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgc291cmNlLm5leHQgbm90IGluIExPT0tCRUhJTkRBU1NFUlRDSEFSUzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigic3ludGF4IGVycm9yIikKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpciA9IC0xICMgbG9va2JlaGluZAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5sb29rYmVoaW5kICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4iKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBub3QgaW4gIj0hIjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVua25vd24gZXh0ZW5zaW9uID88IiArIGNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihjaGFyKSArIDIpCisgICAgICAgICAgICAgICAgICAgICAgICBkaXIgPSAtMSAjIGxvb2tiZWhpbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvb2tiZWhpbmRncm91cHMgPSBzdGF0ZS5sb29rYmVoaW5kZ3JvdXBzCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBsb29rYmVoaW5kZ3JvdXBzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUubG9va2JlaGluZGdyb3VwcyA9IHN0YXRlLmdyb3VwcwogICAgICAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlKQogICAgICAgICAgICAgICAgICAgICBpZiBkaXIgPCAwOgotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUubG9va2JlaGluZCAtPSAxCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBsb29rYmVoaW5kZ3JvdXBzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUubG9va2JlaGluZGdyb3VwcyA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNvdXJjZW1hdGNoKCIpIik6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigidW5iYWxhbmNlZCBwYXJlbnRoZXNpcyIpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIHN1YnBhdHRlcm4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS50ZWxsKCkgLSBzdGFydCkKICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciA9PSAiPSI6CiAgICAgICAgICAgICAgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChBU1NFUlQsIChkaXIsIHApKSkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKEFTU0VSVF9OT1QsIChkaXIsIHApKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBlbGlmIHNvdXJjZW1hdGNoKCIoIik6CisgICAgICAgICAgICAgICAgZWxpZiBjaGFyID09ICIoIjoKICAgICAgICAgICAgICAgICAgICAgIyBjb25kaXRpb25hbCBiYWNrcmVmZXJlbmNlIGdyb3VwCi0gICAgICAgICAgICAgICAgICAgIGNvbmRuYW1lID0gIiIKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bnRlcm1pbmF0ZWQgbmFtZSIpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyID09ICIpIjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgY29uZG5hbWUgPSBjb25kbmFtZSArIGNoYXIKLSAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSAyCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjb25kbmFtZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJtaXNzaW5nIGdyb3VwIG5hbWUiKQorICAgICAgICAgICAgICAgICAgICBjb25kbmFtZSA9IHNvdXJjZS5nZXR1bnRpbCgiKSIpCisgICAgICAgICAgICAgICAgICAgIGdyb3VwID0gTm9uZQogICAgICAgICAgICAgICAgICAgICBpZiBjb25kbmFtZS5pc2lkZW50aWZpZXIoKToKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRncm91cCA9IHN0YXRlLmdyb3VwZGljdC5nZXQoY29uZG5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb25kZ3JvdXAgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBncm91cCBuYW1lOiB7MCFyfSIuZm9ybWF0KGNvbmRuYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKG1zZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBncm91cCBuYW1lICVyIiAlIGNvbmRuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKGNvbmRuYW1lKSArIDEpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGdyb3VwID0gaW50KGNvbmRuYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvbmRncm91cCA8IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUiKQotICAgICAgICAgICAgICAgICAgICBpZiBzdGF0ZS5sb29rYmVoaW5kOgotICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdncm91cCByZWZlcmVuY2VzIGluIGxvb2tiZWhpbmQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNzZXJ0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nKQotICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAlciIgJSBjb25kbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbihjb25kbmFtZSkgKyAxKSBmcm9tIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjb25kZ3JvdXA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgZ3JvdXAgbnVtYmVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNvbmRuYW1lKSArIDEpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb25kZ3JvdXAgPj0gTUFYR1JPVVBTOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oY29uZG5hbWUpICsgMSkKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUuY2hlY2tsb29rYmVoaW5kZ3JvdXAoY29uZGdyb3VwLCBzb3VyY2UpCisgICAgICAgICAgICAgICAgZWxpZiBjaGFyIGluIEZMQUdTOgogICAgICAgICAgICAgICAgICAgICAjIGZsYWdzCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzb3VyY2UubmV4dCBpbiBGTEFHUzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuIikKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgc291cmNlLm5leHQgaW4gRkxBR1M6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5mbGFncyA9IHN0YXRlLmZsYWdzIHwgRkxBR1Nbc291cmNlZ2V0KCldCi0gICAgICAgICAgICBpZiBncm91cDoKLSAgICAgICAgICAgICAgICAjIHBhcnNlIGdyb3VwIGNvbnRlbnRzCi0gICAgICAgICAgICAgICAgaWYgZ3JvdXAgPT0gMjoKLSAgICAgICAgICAgICAgICAgICAgIyBhbm9ueW1vdXMgZ3JvdXAKLSAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5mbGFncyB8PSBGTEFHU1tjaGFyXQorICAgICAgICAgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJtaXNzaW5nICkiKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciA9PSAiKSI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgbm90IGluIEZMQUdTOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigidW5rbm93biBmbGFnIiwgbGVuKGNoYXIpKQorICAgICAgICAgICAgICAgICAgICB2ZXJib3NlID0gc3RhdGUuZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmtub3duIGV4dGVuc2lvbiA/IiArIGNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oY2hhcikgKyAxKQorCisgICAgICAgICAgICAjIHBhcnNlIGdyb3VwIGNvbnRlbnRzCisgICAgICAgICAgICBpZiBncm91cCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGdyb3VwID0gc3RhdGUub3Blbmdyb3VwKG5hbWUpCi0gICAgICAgICAgICAgICAgaWYgY29uZGdyb3VwOgotICAgICAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlKQotICAgICAgICAgICAgICAgIGlmIG5vdCBzb3VyY2VtYXRjaCgiKSIpOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigidW5iYWxhbmNlZCBwYXJlbnRoZXNpcyIpCi0gICAgICAgICAgICAgICAgaWYgZ3JvdXAgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLmNsb3NlZ3JvdXAoZ3JvdXApCi0gICAgICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoU1VCUEFUVEVSTiwgKGdyb3VwLCBwKSkpCisgICAgICAgICAgICAgICAgZXhjZXB0IGVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKGVyci5tc2csIGxlbihuYW1lKSArIDEpIGZyb20gTm9uZQorICAgICAgICAgICAgaWYgY29uZGdyb3VwOgorICAgICAgICAgICAgICAgIHAgPSBfcGFyc2Vfc3ViX2NvbmQoc291cmNlLCBzdGF0ZSwgY29uZGdyb3VwKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInVuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4iKQotICAgICAgICAgICAgICAgICAgICBpZiBjaGFyID09ICIpIjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bmtub3duIGV4dGVuc2lvbiIpCisgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSkKKyAgICAgICAgICAgIGlmIG5vdCBzb3VyY2UubWF0Y2goIikiKToKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIHN1YnBhdHRlcm4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gc3RhcnQpCisgICAgICAgICAgICBpZiBncm91cCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzdGF0ZS5jbG9zZWdyb3VwKGdyb3VwLCBwKQorICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoU1VCUEFUVEVSTiwgKGdyb3VwLCBwKSkpCiAKICAgICAgICAgZWxpZiB0aGlzID09ICJeIjoKICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKEFULCBBVF9CRUdJTk5JTkcpKQpAQCAtNzQ2LDI1ICs3ODksMzEgQEAKICAgICAgICAgZWxpZiB0aGlzID09ICIkIjoKICAgICAgICAgICAgIHN1YnBhdHRlcm4uYXBwZW5kKChBVCwgQVRfRU5EKSkKIAotICAgICAgICBlbGlmIHRoaXMgYW5kIHRoaXNbMF0gPT0gIlxcIjoKLSAgICAgICAgICAgIGNvZGUgPSBfZXNjYXBlKHNvdXJjZSwgdGhpcywgc3RhdGUpCi0gICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKGNvZGUpCi0KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIGVycm9yKCJwYXJzZXIgZXJyb3IiKQorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoInVuc3VwcG9ydGVkIHNwZWNpYWwgY2hhcmFjdGVyICVyIiAlIChjaGFyLCkpCiAKICAgICByZXR1cm4gc3VicGF0dGVybgogCiBkZWYgZml4X2ZsYWdzKHNyYywgZmxhZ3MpOgogICAgICMgQ2hlY2sgYW5kIGZpeCBmbGFncyBhY2NvcmRpbmcgdG8gdGhlIHR5cGUgb2YgcGF0dGVybiAoc3RyIG9yIGJ5dGVzKQogICAgIGlmIGlzaW5zdGFuY2Uoc3JjLCBzdHIpOgorICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybigiTE9DQUxFIGZsYWcgd2l0aCBhIHN0ciBwYXR0ZXJuIGlzIGRlcHJlY2F0ZWQuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIldpbGwgYmUgYW4gZXJyb3IgaW4gMy42IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTYpCiAgICAgICAgIGlmIG5vdCBmbGFncyAmIFNSRV9GTEFHX0FTQ0lJOgogICAgICAgICAgICAgZmxhZ3MgfD0gU1JFX0ZMQUdfVU5JQ09ERQogICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFTQ0lJIGFuZCBVTklDT0RFIGZsYWdzIGFyZSBpbmNvbXBhdGlibGUiKQogICAgIGVsc2U6CiAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbid0IHVzZSBVTklDT0RFIGZsYWcgd2l0aCBhIGJ5dGVzIHBhdHRlcm4iKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IHVzZSBVTklDT0RFIGZsYWcgd2l0aCBhIGJ5dGVzIHBhdHRlcm4iKQorICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRSBhbmQgZmxhZ3MgJiBTUkVfRkxBR19BU0NJSToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybigiQVNDSUkgYW5kIExPQ0FMRSBmbGFncyBhcmUgaW5jb21wYXRpYmxlLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJXaWxsIGJlIGFuIGVycm9yIGluIDMuNiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD02KQogICAgIHJldHVybiBmbGFncwogCiBkZWYgcGFyc2Uoc3RyLCBmbGFncz0wLCBwYXR0ZXJuPU5vbmUpOgpAQCAtNzgwLDExICs4MjksOSBAQAogICAgIHAgPSBfcGFyc2Vfc3ViKHNvdXJjZSwgcGF0dGVybiwgMCkKICAgICBwLnBhdHRlcm4uZmxhZ3MgPSBmaXhfZmxhZ3Moc3RyLCBwLnBhdHRlcm4uZmxhZ3MpCiAKLSAgICB0YWlsID0gc291cmNlLmdldCgpCi0gICAgaWYgdGFpbCA9PSAiKSI6Ci0gICAgICAgIHJhaXNlIGVycm9yKCJ1bmJhbGFuY2VkIHBhcmVudGhlc2lzIikKLSAgICBlbGlmIHRhaWw6Ci0gICAgICAgIHJhaXNlIGVycm9yKCJib2d1cyBjaGFyYWN0ZXJzIGF0IGVuZCBvZiByZWd1bGFyIGV4cHJlc3Npb24iKQorICAgIGlmIHNvdXJjZS5uZXh0IGlzIG5vdCBOb25lOgorICAgICAgICBhc3NlcnQgc291cmNlLm5leHQgPT0gIikiCisgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigidW5iYWxhbmNlZCBwYXJlbnRoZXNpcyIpCiAKICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0RFQlVHOgogICAgICAgICBwLmR1bXAoKQpAQCAtODExLDYgKzg1OCw3IEBACiAgICAgICAgICAgICBkZWwgbGl0ZXJhbFs6XQogICAgICAgICBncm91cHMuYXBwZW5kKChsZW4obGl0ZXJhbHMpLCBpbmRleCkpCiAgICAgICAgIGxpdGVyYWxzLmFwcGVuZChOb25lKQorICAgIGdyb3VwaW5kZXggPSBwYXR0ZXJuLmdyb3VwaW5kZXgKICAgICB3aGlsZSBUcnVlOgogICAgICAgICB0aGlzID0gc2dldCgpCiAgICAgICAgIGlmIHRoaXMgaXMgTm9uZToKQEAgLTgyMCwyOCArODY4LDI1IEBACiAgICAgICAgICAgICBjID0gdGhpc1sxXQogICAgICAgICAgICAgaWYgYyA9PSAiZyI6CiAgICAgICAgICAgICAgICAgbmFtZSA9ICIiCi0gICAgICAgICAgICAgICAgaWYgcy5tYXRjaCgiPCIpOgotICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgY2hhciA9IHNnZXQoKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bnRlcm1pbmF0ZWQgZ3JvdXAgbmFtZSIpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyID09ICI+IjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArPSBjaGFyCi0gICAgICAgICAgICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJtaXNzaW5nIGdyb3VwIG5hbWUiKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpbnQobmFtZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXggPCAwOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoIm5lZ2F0aXZlIGdyb3VwIG51bWJlciIpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBuYW1lLmlzaWRlbnRpZmllcigpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSIpCisgICAgICAgICAgICAgICAgaWYgbm90IHMubWF0Y2goIjwiKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugcy5lcnJvcigibWlzc2luZyA8IikKKyAgICAgICAgICAgICAgICBuYW1lID0gcy5nZXR1bnRpbCgiPiIpCisgICAgICAgICAgICAgICAgaWYgbmFtZS5pc2lkZW50aWZpZXIoKToKICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBwYXR0ZXJuLmdyb3VwaW5kZXhbbmFtZV0KKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gZ3JvdXBpbmRleFtuYW1lXQogICAgICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBncm91cCBuYW1lOiB7MCFyfSIuZm9ybWF0KG5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yKG1zZykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoInVua25vd24gZ3JvdXAgbmFtZSAlciIgJSBuYW1lKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gaW50KG5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBpbmRleCA8IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAlciIgJSBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4obmFtZSkgKyAxKSBmcm9tIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXggPj0gTUFYR1JPVVBTOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugcy5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4obmFtZSkgKyAxKQogICAgICAgICAgICAgICAgIGFkZGdyb3VwKGluZGV4KQogICAgICAgICAgICAgZWxpZiBjID09ICIwIjoKICAgICAgICAgICAgICAgICBpZiBzLm5leHQgaW4gT0NURElHSVRTOgpAQCAtODU3LDE0ICs5MDIsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHMubmV4dCBpbiBPQ1RESUdJVFMpOgogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyArPSBzZ2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlzb2N0YWwgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBsYXBwZW5kKGNocihpbnQodGhpc1sxOl0sIDgpICYgMHhmZikpCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gaW50KHRoaXNbMTpdLCA4KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYyA+IDBvMzc3OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoJ29jdGFsIGVzY2FwZSB2YWx1ZSAlcyBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyYW5nZSAwLTBvMzc3JyAlIHRoaXMsIGxlbih0aGlzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhcHBlbmQoY2hyKGMpKQogICAgICAgICAgICAgICAgIGlmIG5vdCBpc29jdGFsOgogICAgICAgICAgICAgICAgICAgICBhZGRncm91cChpbnQodGhpc1sxOl0pKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHRoaXMgPSBjaHIoRVNDQVBFU1t0aGlzXVsxXSkKICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgaWYgYyBpbiBBU0NJSUxFVFRFUlM6CisgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2JhZCBlc2NhcGUgJXMnICUgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTQpCiAgICAgICAgICAgICAgICAgbGFwcGVuZCh0aGlzKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbGFwcGVuZCh0aGlzKQpAQCAtODc4LDE0ICs5MzAsMTIgQEAKIAogZGVmIGV4cGFuZF90ZW1wbGF0ZSh0ZW1wbGF0ZSwgbWF0Y2gpOgogICAgIGcgPSBtYXRjaC5ncm91cAotICAgIHNlcCA9IG1hdGNoLnN0cmluZ1s6MF0KKyAgICBlbXB0eSA9IG1hdGNoLnN0cmluZ1s6MF0KICAgICBncm91cHMsIGxpdGVyYWxzID0gdGVtcGxhdGUKICAgICBsaXRlcmFscyA9IGxpdGVyYWxzWzpdCiAgICAgdHJ5OgogICAgICAgICBmb3IgaW5kZXgsIGdyb3VwIGluIGdyb3VwczoKLSAgICAgICAgICAgIGxpdGVyYWxzW2luZGV4XSA9IHMgPSBnKGdyb3VwKQotICAgICAgICAgICAgaWYgcyBpcyBOb25lOgotICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bm1hdGNoZWQgZ3JvdXAiKQorICAgICAgICAgICAgbGl0ZXJhbHNbaW5kZXhdID0gZyhncm91cCkgb3IgZW1wdHkKICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgcmFpc2UgZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIikKLSAgICByZXR1cm4gc2VwLmpvaW4obGl0ZXJhbHMpCisgICAgcmV0dXJuIGVtcHR5LmpvaW4obGl0ZXJhbHMpCmRpZmYgLS1naXQgYS9MaWIvc3NsLnB5IGIvTGliL3NzbC5weQppbmRleCBlYzQyZTM4Li5hYjdhNDliIDEwMDY0NAotLS0gYS9MaWIvc3NsLnB5CisrKyBiL0xpYi9zc2wucHkKQEAgLTg3LDE3ICs4NywxOCBAQAogQUxFUlRfREVTQ1JJUFRJT05fVU5LTk9XTl9QU0tfSURFTlRJVFkKICIiIgogCitpbXBvcnQgaXBhZGRyZXNzCiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCByZQogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCi1mcm9tIGVudW0gaW1wb3J0IEVudW0gYXMgX0VudW0KK2Zyb20gZW51bSBpbXBvcnQgRW51bSBhcyBfRW51bSwgSW50RW51bSBhcyBfSW50RW51bQogCiBpbXBvcnQgX3NzbCAgICAgICAgICAgICAjIGlmIHdlIGNhbid0IGltcG9ydCBpdCwgbGV0IHRoZSBlcnJvciBwcm9wYWdhdGUKIAogZnJvbSBfc3NsIGltcG9ydCBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSLCBPUEVOU1NMX1ZFUlNJT05fSU5GTywgT1BFTlNTTF9WRVJTSU9OCi1mcm9tIF9zc2wgaW1wb3J0IF9TU0xDb250ZXh0Citmcm9tIF9zc2wgaW1wb3J0IF9TU0xDb250ZXh0LCBNZW1vcnlCSU8KIGZyb20gX3NzbCBpbXBvcnQgKAogICAgIFNTTEVycm9yLCBTU0xaZXJvUmV0dXJuRXJyb3IsIFNTTFdhbnRSZWFkRXJyb3IsIFNTTFdhbnRXcml0ZUVycm9yLAogICAgIFNTTFN5c2NhbGxFcnJvciwgU1NMRU9GRXJyb3IsCkBAIC0xMTksMzAgKzEyMCwyMyBAQAogX2ltcG9ydF9zeW1ib2xzKCdPUF8nKQogX2ltcG9ydF9zeW1ib2xzKCdBTEVSVF9ERVNDUklQVElPTl8nKQogX2ltcG9ydF9zeW1ib2xzKCdTU0xfRVJST1JfJykKLV9pbXBvcnRfc3ltYm9scygnUFJPVE9DT0xfJykKIF9pbXBvcnRfc3ltYm9scygnVkVSSUZZXycpCiAKLWZyb20gX3NzbCBpbXBvcnQgSEFTX1NOSSwgSEFTX0VDREgsIEhBU19OUE4KK2Zyb20gX3NzbCBpbXBvcnQgSEFTX1NOSSwgSEFTX0VDREgsIEhBU19OUE4sIEhBU19BTFBOCiAKIGZyb20gX3NzbCBpbXBvcnQgX09QRU5TU0xfQVBJX1ZFUlNJT04KIAorX0ludEVudW0uX2NvbnZlcnQoCisgICAgICAgICdfU1NMTWV0aG9kJywgX19uYW1lX18sCisgICAgICAgIGxhbWJkYSBuYW1lOiBuYW1lLnN0YXJ0c3dpdGgoJ1BST1RPQ09MXycpLAorICAgICAgICBzb3VyY2U9X3NzbCkKIAotX1BST1RPQ09MX05BTUVTID0ge3ZhbHVlOiBuYW1lIGZvciBuYW1lLCB2YWx1ZSBpbiBnbG9iYWxzKCkuaXRlbXMoKSBpZiBuYW1lLnN0YXJ0c3dpdGgoJ1BST1RPQ09MXycpfQorX1BST1RPQ09MX05BTUVTID0ge3ZhbHVlOiBuYW1lIGZvciBuYW1lLCB2YWx1ZSBpbiBfU1NMTWV0aG9kLl9fbWVtYmVyc19fLml0ZW1zKCl9CisKIHRyeToKLSAgICBmcm9tIF9zc2wgaW1wb3J0IFBST1RPQ09MX1NTTHYyCiAgICAgX1NTTHYyX0lGX0VYSVNUUyA9IFBST1RPQ09MX1NTTHYyCi1leGNlcHQgSW1wb3J0RXJyb3I6CitleGNlcHQgTmFtZUVycm9yOgogICAgIF9TU0x2Ml9JRl9FWElTVFMgPSBOb25lCi1lbHNlOgotICAgIF9QUk9UT0NPTF9OQU1FU1tQUk9UT0NPTF9TU0x2Ml0gPSAiU1NMdjIiCi0KLXRyeToKLSAgICBmcm9tIF9zc2wgaW1wb3J0IFBST1RPQ09MX1RMU3YxXzEsIFBST1RPQ09MX1RMU3YxXzIKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi1lbHNlOgotICAgIF9QUk9UT0NPTF9OQU1FU1tQUk9UT0NPTF9UTFN2MV8xXSA9ICJUTFN2MS4xIgotICAgIF9QUk9UT0NPTF9OQU1FU1tQUk9UT0NPTF9UTFN2MV8yXSA9ICJUTFN2MS4yIgogCiBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKICAgICBmcm9tIF9zc2wgaW1wb3J0IGVudW1fY2VydGlmaWNhdGVzLCBlbnVtX2NybHMKQEAgLTI0Niw2ICsyNDAsMTcgQEAKICAgICByZXR1cm4gcGF0Lm1hdGNoKGhvc3RuYW1lKQogCiAKK2RlZiBfaXBhZGRyZXNzX21hdGNoKGlwbmFtZSwgaG9zdF9pcCk6CisgICAgIiIiRXhhY3QgbWF0Y2hpbmcgb2YgSVAgYWRkcmVzc2VzLgorCisgICAgUkZDIDYxMjUgZXhwbGljaXRseSBkb2Vzbid0IGRlZmluZSBhbiBhbGdvcml0aG0gZm9yIHRoaXMKKyAgICAoc2VjdGlvbiAxLjcuMiAtICJPdXQgb2YgU2NvcGUiKS4KKyAgICAiIiIKKyAgICAjIE9wZW5TU0wgbWF5IGFkZCBhIHRyYWlsaW5nIG5ld2xpbmUgdG8gYSBzdWJqZWN0QWx0TmFtZSdzIElQIGFkZHJlc3MKKyAgICBpcCA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKGlwbmFtZS5yc3RyaXAoKSkKKyAgICByZXR1cm4gaXAgPT0gaG9zdF9pcAorCisKIGRlZiBtYXRjaF9ob3N0bmFtZShjZXJ0LCBob3N0bmFtZSk6CiAgICAgIiIiVmVyaWZ5IHRoYXQgKmNlcnQqIChpbiBkZWNvZGVkIGZvcm1hdCBhcyByZXR1cm5lZCBieQogICAgIFNTTFNvY2tldC5nZXRwZWVyY2VydCgpKSBtYXRjaGVzIHRoZSAqaG9zdG5hbWUqLiAgUkZDIDI4MTggYW5kIFJGQyA2MTI1CkBAIC0yNTgsMTEgKzI2MywyMCBAQAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJlbXB0eSBvciBubyBjZXJ0aWZpY2F0ZSwgbWF0Y2hfaG9zdG5hbWUgbmVlZHMgYSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlNTTCBzb2NrZXQgb3IgU1NMIGNvbnRleHQgd2l0aCBlaXRoZXIgIgogICAgICAgICAgICAgICAgICAgICAgICAgICJDRVJUX09QVElPTkFMIG9yIENFUlRfUkVRVUlSRUQiKQorICAgIHRyeToKKyAgICAgICAgaG9zdF9pcCA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKGhvc3RuYW1lKQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAjIE5vdCBhbiBJUCBhZGRyZXNzIChjb21tb24gY2FzZSkKKyAgICAgICAgaG9zdF9pcCA9IE5vbmUKICAgICBkbnNuYW1lcyA9IFtdCiAgICAgc2FuID0gY2VydC5nZXQoJ3N1YmplY3RBbHROYW1lJywgKCkpCiAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2FuOgogICAgICAgICBpZiBrZXkgPT0gJ0ROUyc6Ci0gICAgICAgICAgICBpZiBfZG5zbmFtZV9tYXRjaCh2YWx1ZSwgaG9zdG5hbWUpOgorICAgICAgICAgICAgaWYgaG9zdF9pcCBpcyBOb25lIGFuZCBfZG5zbmFtZV9tYXRjaCh2YWx1ZSwgaG9zdG5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZG5zbmFtZXMuYXBwZW5kKHZhbHVlKQorICAgICAgICBlbGlmIGtleSA9PSAnSVAgQWRkcmVzcyc6CisgICAgICAgICAgICBpZiBob3N0X2lwIGlzIG5vdCBOb25lIGFuZCBfaXBhZGRyZXNzX21hdGNoKHZhbHVlLCBob3N0X2lwKToKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIGRuc25hbWVzLmFwcGVuZCh2YWx1ZSkKICAgICBpZiBub3QgZG5zbmFtZXM6CkBAIC0zNjEsNiArMzc1LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNlcnZlcl9ob3N0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dD1zZWxmKQogCisgICAgZGVmIHdyYXBfYmlvKHNlbGYsIGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lKToKKyAgICAgICAgc3Nsb2JqID0gc2VsZi5fd3JhcF9iaW8oaW5jb21pbmcsIG91dGdvaW5nLCBzZXJ2ZXJfc2lkZT1zZXJ2ZXJfc2lkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNlcnZlcl9ob3N0bmFtZSkKKyAgICAgICAgcmV0dXJuIFNTTE9iamVjdChzc2xvYmopCisKICAgICBkZWYgc2V0X25wbl9wcm90b2NvbHMoc2VsZiwgbnBuX3Byb3RvY29scyk6CiAgICAgICAgIHByb3RvcyA9IGJ5dGVhcnJheSgpCiAgICAgICAgIGZvciBwcm90b2NvbCBpbiBucG5fcHJvdG9jb2xzOgpAQCAtMzcyLDYgKzM5MiwxNyBAQAogCiAgICAgICAgIHNlbGYuX3NldF9ucG5fcHJvdG9jb2xzKHByb3RvcykKIAorICAgIGRlZiBzZXRfYWxwbl9wcm90b2NvbHMoc2VsZiwgYWxwbl9wcm90b2NvbHMpOgorICAgICAgICBwcm90b3MgPSBieXRlYXJyYXkoKQorICAgICAgICBmb3IgcHJvdG9jb2wgaW4gYWxwbl9wcm90b2NvbHM6CisgICAgICAgICAgICBiID0gYnl0ZXMocHJvdG9jb2wsICdhc2NpaScpCisgICAgICAgICAgICBpZiBsZW4oYikgPT0gMCBvciBsZW4oYikgPiAyNTU6CisgICAgICAgICAgICAgICAgcmFpc2UgU1NMRXJyb3IoJ0FMUE4gcHJvdG9jb2xzIG11c3QgYmUgMSB0byAyNTUgaW4gbGVuZ3RoJykKKyAgICAgICAgICAgIHByb3Rvcy5hcHBlbmQobGVuKGIpKQorICAgICAgICAgICAgcHJvdG9zLmV4dGVuZChiKQorCisgICAgICAgIHNlbGYuX3NldF9hbHBuX3Byb3RvY29scyhwcm90b3MpCisKICAgICBkZWYgX2xvYWRfd2luZG93c19zdG9yZV9jZXJ0cyhzZWxmLCBzdG9yZW5hbWUsIHB1cnBvc2UpOgogICAgICAgICBjZXJ0cyA9IGJ5dGVhcnJheSgpCiAgICAgICAgIGZvciBjZXJ0LCBlbmNvZGluZywgdHJ1c3QgaW4gZW51bV9jZXJ0aWZpY2F0ZXMoc3RvcmVuYW1lKToKQEAgLTQ4OCw2ICs1MTksMTQxIEBACiBfY3JlYXRlX3N0ZGxpYl9jb250ZXh0ID0gX2NyZWF0ZV91bnZlcmlmaWVkX2NvbnRleHQKIAogCitjbGFzcyBTU0xPYmplY3Q6CisgICAgIiIiVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSBvbiB0b3Agb2YgYSBsb3ctbGV2ZWwgU1NMIG9iamVjdCBhcworICAgIGltcGxlbWVudGVkIGJ5IE9wZW5TU0wuIFRoaXMgb2JqZWN0IGNhcHR1cmVzIHRoZSBzdGF0ZSBvZiBhbiBTU0wgY29ubmVjdGlvbgorICAgIGJ1dCBkb2VzIG5vdCBwcm92aWRlIGFueSBuZXR3b3JrIElPIGl0c2VsZi4gSU8gbmVlZHMgdG8gYmUgcGVyZm9ybWVkCisgICAgdGhyb3VnaCBzZXBhcmF0ZSAiQklPIiBvYmplY3RzIHdoaWNoIGFyZSBPcGVuU1NMJ3MgSU8gYWJzdHJhY3Rpb24gbGF5ZXIuCisKKyAgICBUaGlzIGNsYXNzIGRvZXMgbm90IGhhdmUgYSBwdWJsaWMgY29uc3RydWN0b3IuIEluc3RhbmNlcyBhcmUgcmV0dXJuZWQgYnkKKyAgICBgYFNTTENvbnRleHQud3JhcF9iaW9gYC4gVGhpcyBjbGFzcyBpcyB0eXBpY2FsbHkgdXNlZCBieSBmcmFtZXdvcmsgYXV0aG9ycworICAgIHRoYXQgd2FudCB0byBpbXBsZW1lbnQgYXN5bmNocm9ub3VzIElPIGZvciBTU0wgdGhyb3VnaCBtZW1vcnkgYnVmZmVycy4KKworICAgIFdoZW4gY29tcGFyZWQgdG8gYGBTU0xTb2NrZXRgYCwgdGhpcyBvYmplY3QgbGFja3MgdGhlIGZvbGxvd2luZyBmZWF0dXJlczoKKworICAgICAqIEFueSBmb3JtIG9mIG5ldHdvcmsgSU8gaW5jbHVnaW5nIG1ldGhvZHMgc3VjaCBhcyBgYHJlY3ZgYCBhbmQgYGBzZW5kYGAuCisgICAgICogVGhlIGBgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3RgYCBhbmQgYGBzdXBwcmVzc19yYWdnZWRfZW9mc2BgIG1hY2hpbmVyeS4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzc2xvYmosIG93bmVyPU5vbmUpOgorICAgICAgICBzZWxmLl9zc2xvYmogPSBzc2xvYmoKKyAgICAgICAgIyBOb3RlOiBfc3Nsb2JqIHRha2VzIGEgd2VhayByZWZlcmVuY2UgdG8gb3duZXIKKyAgICAgICAgc2VsZi5fc3Nsb2JqLm93bmVyID0gb3duZXIgb3Igc2VsZgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbnRleHQoc2VsZik6CisgICAgICAgICIiIlRoZSBTU0xDb250ZXh0IHRoYXQgaXMgY3VycmVudGx5IGluIHVzZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5jb250ZXh0CisKKyAgICBAY29udGV4dC5zZXR0ZXIKKyAgICBkZWYgY29udGV4dChzZWxmLCBjdHgpOgorICAgICAgICBzZWxmLl9zc2xvYmouY29udGV4dCA9IGN0eAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlcnZlcl9zaWRlKHNlbGYpOgorICAgICAgICAiIiJXaGV0aGVyIHRoaXMgaXMgYSBzZXJ2ZXItc2lkZSBzb2NrZXQuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2VydmVyX3NpZGUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXJ2ZXJfaG9zdG5hbWUoc2VsZik6CisgICAgICAgICIiIlRoZSBjdXJyZW50bHkgc2V0IHNlcnZlciBob3N0bmFtZSAoZm9yIFNOSSksIG9yIGBgTm9uZWBgIGlmIG5vCisgICAgICAgIHNlcnZlciBob3N0YW1lIGlzIHNldC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXJ2ZXJfaG9zdG5hbWUKKworICAgIGRlZiByZWFkKHNlbGYsIGxlbj0wLCBidWZmZXI9Tm9uZSk6CisgICAgICAgICIiIlJlYWQgdXAgdG8gJ2xlbicgYnl0ZXMgZnJvbSB0aGUgU1NMIG9iamVjdCBhbmQgcmV0dXJuIHRoZW0uCisKKyAgICAgICAgSWYgJ2J1ZmZlcicgaXMgcHJvdmlkZWQsIHJlYWQgaW50byB0aGlzIGJ1ZmZlciBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YKKyAgICAgICAgYnl0ZXMgcmVhZC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGJ1ZmZlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHYgPSBzZWxmLl9zc2xvYmoucmVhZChsZW4sIGJ1ZmZlcikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHYgPSBzZWxmLl9zc2xvYmoucmVhZChsZW4gb3IgMTAyNCkKKyAgICAgICAgcmV0dXJuIHYKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiV3JpdGUgJ2RhdGEnIHRvIHRoZSBTU0wgb2JqZWN0IGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcworICAgICAgICB3cml0dGVuLgorCisgICAgICAgIFRoZSAnZGF0YScgYXJndW1lbnQgbXVzdCBzdXBwb3J0IHRoZSBidWZmZXIgaW50ZXJmYWNlLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai53cml0ZShkYXRhKQorCisgICAgZGVmIGdldHBlZXJjZXJ0KHNlbGYsIGJpbmFyeV9mb3JtPUZhbHNlKToKKyAgICAgICAgIiIiUmV0dXJucyBhIGZvcm1hdHRlZCB2ZXJzaW9uIG9mIHRoZSBkYXRhIGluIHRoZSBjZXJ0aWZpY2F0ZSBwcm92aWRlZAorICAgICAgICBieSB0aGUgb3RoZXIgZW5kIG9mIHRoZSBTU0wgY2hhbm5lbC4KKworICAgICAgICBSZXR1cm4gTm9uZSBpZiBubyBjZXJ0aWZpY2F0ZSB3YXMgcHJvdmlkZWQsIHt9IGlmIGEgY2VydGlmaWNhdGUgd2FzCisgICAgICAgIHByb3ZpZGVkLCBidXQgbm90IHZhbGlkYXRlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmoucGVlcl9jZXJ0aWZpY2F0ZShiaW5hcnlfZm9ybSkKKworICAgIGRlZiBzZWxlY3RlZF9ucG5fcHJvdG9jb2woc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIE5QTiBwcm90b2NvbCBhcyBhIHN0cmluZywgb3IgYGBOb25lYGAKKyAgICAgICAgaWYgYSBuZXh0IHByb3RvY29sIHdhcyBub3QgbmVnb3RpYXRlZCBvciBpZiBOUE4gaXMgbm90IHN1cHBvcnRlZCBieSBvbmUKKyAgICAgICAgb2YgdGhlIHBlZXJzLiIiIgorICAgICAgICBpZiBfc3NsLkhBU19OUE46CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpCisKKyAgICBkZWYgc2VsZWN0ZWRfYWxwbl9wcm90b2NvbChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgQUxQTiBwcm90b2NvbCBhcyBhIHN0cmluZywgb3IgYGBOb25lYGAKKyAgICAgICAgaWYgYSBuZXh0IHByb3RvY29sIHdhcyBub3QgbmVnb3RpYXRlZCBvciBpZiBBTFBOIGlzIG5vdCBzdXBwb3J0ZWQgYnkgb25lCisgICAgICAgIG9mIHRoZSBwZWVycy4iIiIKKyAgICAgICAgaWYgX3NzbC5IQVNfQUxQTjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2VsZWN0ZWRfYWxwbl9wcm90b2NvbCgpCisKKyAgICBkZWYgY2lwaGVyKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBjaXBoZXIgYXMgYSAzLXR1cGxlIGBgKG5hbWUsCisgICAgICAgIHNzbF92ZXJzaW9uLCBzZWNyZXRfYml0cylgYC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5jaXBoZXIoKQorCisgICAgZGVmIHNoYXJlZF9jaXBoZXJzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNpcGhlcnMgc2hhcmVkIGJ5IHRoZSBjbGllbnQgZHVyaW5nIHRoZSBoYW5kc2hha2Ugb3IKKyAgICAgICAgTm9uZSBpZiB0aGlzIGlzIG5vdCBhIHZhbGlkIHNlcnZlciBjb25uZWN0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zaGFyZWRfY2lwaGVycygpCisKKyAgICBkZWYgY29tcHJlc3Npb24oc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCBjb21wcmVzc2lvbiBhbGdvcml0aG0gaW4gdXNlLCBvciBgYE5vbmVgYCBpZgorICAgICAgICBjb21wcmVzc2lvbiB3YXMgbm90IG5lZ290aWF0ZWQgb3Igbm90IHN1cHBvcnRlZCBieSBvbmUgb2YgdGhlIHBlZXJzLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLmNvbXByZXNzaW9uKCkKKworICAgIGRlZiBwZW5kaW5nKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IGNhbiBiZSByZWFkIGltbWVkaWF0ZWx5LiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnBlbmRpbmcoKQorCisgICAgZGVmIGRvX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgIiIiU3RhcnQgdGhlIFNTTC9UTFMgaGFuZHNoYWtlLiIiIgorICAgICAgICBzZWxmLl9zc2xvYmouZG9faGFuZHNoYWtlKCkKKyAgICAgICAgaWYgc2VsZi5jb250ZXh0LmNoZWNrX2hvc3RuYW1lOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuc2VydmVyX2hvc3RuYW1lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNoZWNrX2hvc3RuYW1lIG5lZWRzIHNlcnZlcl9ob3N0bmFtZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQiKQorICAgICAgICAgICAgbWF0Y2hfaG9zdG5hbWUoc2VsZi5nZXRwZWVyY2VydCgpLCBzZWxmLnNlcnZlcl9ob3N0bmFtZSkKKworICAgIGRlZiB1bndyYXAoc2VsZik6CisgICAgICAgICIiIlN0YXJ0IHRoZSBTU0wgc2h1dGRvd24gaGFuZHNoYWtlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNodXRkb3duKCkKKworICAgIGRlZiBnZXRfY2hhbm5lbF9iaW5kaW5nKHNlbGYsIGNiX3R5cGU9InRscy11bmlxdWUiKToKKyAgICAgICAgIiIiR2V0IGNoYW5uZWwgYmluZGluZyBkYXRhIGZvciBjdXJyZW50IGNvbm5lY3Rpb24uICBSYWlzZSBWYWx1ZUVycm9yCisgICAgICAgIGlmIHRoZSByZXF1ZXN0ZWQgYGNiX3R5cGVgIGlzIG5vdCBzdXBwb3J0ZWQuICBSZXR1cm4gYnl0ZXMgb2YgdGhlIGRhdGEKKyAgICAgICAgb3IgTm9uZSBpZiB0aGUgZGF0YSBpcyBub3QgYXZhaWxhYmxlIChlLmcuIGJlZm9yZSB0aGUgaGFuZHNoYWtlKS4iIiIKKyAgICAgICAgaWYgY2JfdHlwZSBub3QgaW4gQ0hBTk5FTF9CSU5ESU5HX1RZUEVTOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5zdXBwb3J0ZWQgY2hhbm5lbCBiaW5kaW5nIHR5cGUiKQorICAgICAgICBpZiBjYl90eXBlICE9ICJ0bHMtdW5pcXVlIjoKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInswfSBjaGFubmVsIGJpbmRpbmcgdHlwZSBub3QgaW1wbGVtZW50ZWQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChjYl90eXBlKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai50bHNfdW5pcXVlX2NiKCkKKworICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIHByb3RvY29sIHZlcnNpb24gdXNlZCBieSB0aGUKKyAgICAgICAgY3VycmVudCBTU0wgY2hhbm5lbC4gIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmoudmVyc2lvbigpCisKKwogY2xhc3MgU1NMU29ja2V0KHNvY2tldCk6CiAgICAgIiIiVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGEgc3VidHlwZSBvZiBzb2NrZXQuc29ja2V0IHRoYXQgd3JhcHMKICAgICB0aGUgdW5kZXJseWluZyBPUyBzb2NrZXQgaW4gYW4gU1NMIGNvbnRleHQgd2hlbiBuZWNlc3NhcnksIGFuZApAQCAtNTcwLDggKzczNiw5IEBACiAgICAgICAgIGlmIGNvbm5lY3RlZDoKICAgICAgICAgICAgICMgY3JlYXRlIHRoZSBTU0wgb2JqZWN0CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fc3Nsb2JqID0gc2VsZi5fY29udGV4dC5fd3JhcF9zb2NrZXQoc2VsZiwgc2VydmVyX3NpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWUpCisgICAgICAgICAgICAgICAgc3Nsb2JqID0gc2VsZi5fY29udGV4dC5fd3JhcF9zb2NrZXQoc2VsZiwgc2VydmVyX3NpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuX3NzbG9iaiA9IFNTTE9iamVjdChzc2xvYmosIG93bmVyPXNlbGYpCiAgICAgICAgICAgICAgICAgaWYgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q6CiAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLmdldHRpbWVvdXQoKQogICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0ID09IDAuMDoKQEAgLTYxNiwxMSArNzgzLDcgQEAKICAgICAgICAgaWYgbm90IHNlbGYuX3NzbG9iajoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlJlYWQgb24gY2xvc2VkIG9yIHVud3JhcHBlZCBTU0wgc29ja2V0LiIpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIGJ1ZmZlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB2ID0gc2VsZi5fc3Nsb2JqLnJlYWQobGVuLCBidWZmZXIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHYgPSBzZWxmLl9zc2xvYmoucmVhZChsZW4gb3IgMTAyNCkKLSAgICAgICAgICAgIHJldHVybiB2CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnJlYWQobGVuLCBidWZmZXIpCiAgICAgICAgIGV4Y2VwdCBTU0xFcnJvciBhcyB4OgogICAgICAgICAgICAgaWYgeC5hcmdzWzBdID09IFNTTF9FUlJPUl9FT0YgYW5kIHNlbGYuc3VwcHJlc3NfcmFnZ2VkX2VvZnM6CiAgICAgICAgICAgICAgICAgaWYgYnVmZmVyIGlzIG5vdCBOb25lOgpAQCAtNjQ3LDcgKzgxMCw3IEBACiAKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgICBzZWxmLl9jaGVja19jb25uZWN0ZWQoKQotICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnBlZXJfY2VydGlmaWNhdGUoYmluYXJ5X2Zvcm0pCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouZ2V0cGVlcmNlcnQoYmluYXJ5X2Zvcm0pCiAKICAgICBkZWYgc2VsZWN0ZWRfbnBuX3Byb3RvY29sKHNlbGYpOgogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCkBAIC02NTYsNiArODE5LDEzIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpCiAKKyAgICBkZWYgc2VsZWN0ZWRfYWxwbl9wcm90b2NvbChzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQorICAgICAgICBpZiBub3Qgc2VsZi5fc3Nsb2JqIG9yIG5vdCBfc3NsLkhBU19BTFBOOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2VsZWN0ZWRfYWxwbl9wcm90b2NvbCgpCisKICAgICBkZWYgY2lwaGVyKHNlbGYpOgogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9zc2xvYmo6CkBAIC02NjMsNiArODMzLDEyIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLmNpcGhlcigpCiAKKyAgICBkZWYgc2hhcmVkX2NpcGhlcnMoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgaWYgbm90IHNlbGYuX3NzbG9iajoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2hhcmVkX2NpcGhlcnMoKQorCiAgICAgZGVmIGNvbXByZXNzaW9uKHNlbGYpOgogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9zc2xvYmo6CkBAIC02NzcsMTcgKzg1Myw3IEBACiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICAgIm5vbi16ZXJvIGZsYWdzIG5vdCBhbGxvd2VkIGluIGNhbGxzIHRvIHNlbmQoKSBvbiAlcyIgJQogICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB2ID0gc2VsZi5fc3Nsb2JqLndyaXRlKGRhdGEpCi0gICAgICAgICAgICBleGNlcHQgU1NMRXJyb3IgYXMgeDoKLSAgICAgICAgICAgICAgICBpZiB4LmFyZ3NbMF0gPT0gU1NMX0VSUk9SX1dBTlRfUkVBRDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgICAgICAgICBlbGlmIHguYXJnc1swXSA9PSBTU0xfRVJST1JfV0FOVF9XUklURToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gdgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai53cml0ZShkYXRhKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHNvY2tldC5zZW5kKHNlbGYsIGRhdGEsIGZsYWdzKQogCkBAIC03MjMsNiArODg5LDE2IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc29ja2V0LnNlbmRhbGwoc2VsZiwgZGF0YSwgZmxhZ3MpCiAKKyAgICBkZWYgc2VuZGZpbGUoc2VsZiwgZmlsZSwgb2Zmc2V0PTAsIGNvdW50PU5vbmUpOgorICAgICAgICAiIiJTZW5kIGEgZmlsZSwgcG9zc2libHkgYnkgdXNpbmcgb3Muc2VuZGZpbGUoKSBpZiB0aGlzIGlzIGEKKyAgICAgICAgY2xlYXItdGV4dCBzb2NrZXQuICBSZXR1cm4gdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBzZW50LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fc3Nsb2JqIGlzIE5vbmU6CisgICAgICAgICAgICAjIG9zLnNlbmRmaWxlKCkgd29ya3Mgd2l0aCBwbGFpbiBzb2NrZXRzIG9ubHkKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLnNlbmRmaWxlKGZpbGUsIG9mZnNldCwgY291bnQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2VuZGZpbGVfdXNlX3NlbmQoZmlsZSwgb2Zmc2V0LCBjb3VudCkKKwogICAgIGRlZiByZWN2KHNlbGYsIGJ1Zmxlbj0xMDI0LCBmbGFncz0wKToKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgICBpZiBzZWxmLl9zc2xvYmo6CkBAIC03ODcsNyArOTYzLDcgQEAKIAogICAgIGRlZiB1bndyYXAoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX3NzbG9iajoKLSAgICAgICAgICAgIHMgPSBzZWxmLl9zc2xvYmouc2h1dGRvd24oKQorICAgICAgICAgICAgcyA9IHNlbGYuX3NzbG9iai51bndyYXAoKQogICAgICAgICAgICAgc2VsZi5fc3Nsb2JqID0gTm9uZQogICAgICAgICAgICAgcmV0dXJuIHMKICAgICAgICAgZWxzZToKQEAgLTgwOCwxMiArOTg0LDYgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuc2V0dGltZW91dCh0aW1lb3V0KQogCi0gICAgICAgIGlmIHNlbGYuY29udGV4dC5jaGVja19ob3N0bmFtZToKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLnNlcnZlcl9ob3N0bmFtZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjaGVja19ob3N0bmFtZSBuZWVkcyBzZXJ2ZXJfaG9zdG5hbWUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IikKLSAgICAgICAgICAgIG1hdGNoX2hvc3RuYW1lKHNlbGYuZ2V0cGVlcmNlcnQoKSwgc2VsZi5zZXJ2ZXJfaG9zdG5hbWUpCi0KICAgICBkZWYgX3JlYWxfY29ubmVjdChzZWxmLCBhZGRyLCBjb25uZWN0X2V4KToKICAgICAgICAgaWYgc2VsZi5zZXJ2ZXJfc2lkZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbid0IGNvbm5lY3QgaW4gc2VydmVyLXNpZGUgbW9kZSIpCkBAIC04MjEsNyArOTkxLDggQEAKICAgICAgICAgIyBjb25uZWN0ZWQgYXQgdGhlIHRpbWUgb2YgdGhlIGNhbGwuICBXZSBjb25uZWN0IGl0LCB0aGVuIHdyYXAgaXQuCiAgICAgICAgIGlmIHNlbGYuX2Nvbm5lY3RlZDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImF0dGVtcHQgdG8gY29ubmVjdCBhbHJlYWR5LWNvbm5lY3RlZCBTU0xTb2NrZXQhIikKLSAgICAgICAgc2VsZi5fc3Nsb2JqID0gc2VsZi5jb250ZXh0Ll93cmFwX3NvY2tldChzZWxmLCBGYWxzZSwgc2VsZi5zZXJ2ZXJfaG9zdG5hbWUpCisgICAgICAgIHNzbG9iaiA9IHNlbGYuY29udGV4dC5fd3JhcF9zb2NrZXQoc2VsZiwgRmFsc2UsIHNlbGYuc2VydmVyX2hvc3RuYW1lKQorICAgICAgICBzZWxmLl9zc2xvYmogPSBTU0xPYmplY3Qoc3Nsb2JqLCBvd25lcj1zZWxmKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBjb25uZWN0X2V4OgogICAgICAgICAgICAgICAgIHJjID0gc29ja2V0LmNvbm5lY3RfZXgoc2VsZiwgYWRkcikKQEAgLTg2NCwxNSArMTAzNSwxOCBAQAogICAgICAgICBpZiB0aGUgcmVxdWVzdGVkIGBjYl90eXBlYCBpcyBub3Qgc3VwcG9ydGVkLiAgUmV0dXJuIGJ5dGVzIG9mIHRoZSBkYXRhCiAgICAgICAgIG9yIE5vbmUgaWYgdGhlIGRhdGEgaXMgbm90IGF2YWlsYWJsZSAoZS5nLiBiZWZvcmUgdGhlIGhhbmRzaGFrZSkuCiAgICAgICAgICIiIgotICAgICAgICBpZiBjYl90eXBlIG5vdCBpbiBDSEFOTkVMX0JJTkRJTkdfVFlQRVM6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbnN1cHBvcnRlZCBjaGFubmVsIGJpbmRpbmcgdHlwZSIpCi0gICAgICAgIGlmIGNiX3R5cGUgIT0gInRscy11bmlxdWUiOgotICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiezB9IGNoYW5uZWwgYmluZGluZyB0eXBlIG5vdCBpbXBsZW1lbnRlZCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KGNiX3R5cGUpKQogICAgICAgICBpZiBzZWxmLl9zc2xvYmogaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmoudGxzX3VuaXF1ZV9jYigpCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouZ2V0X2NoYW5uZWxfYmluZGluZyhjYl90eXBlKQorCisgICAgZGVmIHZlcnNpb24oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gYSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIHByb3RvY29sIHZlcnNpb24gdXNlZCBieSB0aGUKKyAgICAgICAgY3VycmVudCBTU0wgY2hhbm5lbCwgb3IgTm9uZSBpZiB0aGVyZSBpcyBubyBlc3RhYmxpc2hlZCBjaGFubmVsLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fc3Nsb2JqIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnZlcnNpb24oKQogCiAKIGRlZiB3cmFwX3NvY2tldChzb2NrLCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsCkBAIC04OTIsMTIgKzEwNjYsMzQgQEAKICMgc29tZSB1dGlsaXR5IGZ1bmN0aW9ucwogCiBkZWYgY2VydF90aW1lX3RvX3NlY29uZHMoY2VydF90aW1lKToKLSAgICAiIiJUYWtlcyBhIGRhdGUtdGltZSBzdHJpbmcgaW4gc3RhbmRhcmQgQVNOMV9wcmludCBmb3JtCi0gICAgKCJNT04gREFZIDI0SE9VUjpNSU5VVEU6U0VDIFlFQVIgVElNRVpPTkUiKSBhbmQgcmV0dXJuCi0gICAgYSBQeXRob24gdGltZSB2YWx1ZSBpbiBzZWNvbmRzIHBhc3QgdGhlIGVwb2NoLiIiIgorICAgICIiIlJldHVybiB0aGUgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHRoZSBFcG9jaCwgZ2l2ZW4gdGhlIHRpbWVzdHJpbmcKKyAgICByZXByZXNlbnRpbmcgdGhlICJub3RCZWZvcmUiIG9yICJub3RBZnRlciIgZGF0ZSBmcm9tIGEgY2VydGlmaWNhdGUKKyAgICBpbiBgYCIlYiAlZCAlSDolTTolUyAlWSAlWiJgYCBzdHJwdGltZSBmb3JtYXQgKEMgbG9jYWxlKS4KIAotICAgIGltcG9ydCB0aW1lCi0gICAgcmV0dXJuIHRpbWUubWt0aW1lKHRpbWUuc3RycHRpbWUoY2VydF90aW1lLCAiJWIgJWQgJUg6JU06JVMgJVkgR01UIikpCisgICAgIm5vdEJlZm9yZSIgb3IgIm5vdEFmdGVyIiBkYXRlcyBtdXN0IHVzZSBVVEMgKFJGQyA1MjgwKS4KKworICAgIE1vbnRoIGlzIG9uZSBvZjogSmFuIEZlYiBNYXIgQXByIE1heSBKdW4gSnVsIEF1ZyBTZXAgT2N0IE5vdiBEZWMKKyAgICBVVEMgc2hvdWxkIGJlIHNwZWNpZmllZCBhcyBHTVQgKHNlZSBBU04xX1RJTUVfcHJpbnQoKSkKKyAgICAiIiIKKyAgICBmcm9tIHRpbWUgaW1wb3J0IHN0cnB0aW1lCisgICAgZnJvbSBjYWxlbmRhciBpbXBvcnQgdGltZWdtCisKKyAgICBtb250aHMgPSAoCisgICAgICAgICJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLAorICAgICAgICAiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIgorICAgICkKKyAgICB0aW1lX2Zvcm1hdCA9ICcgJWQgJUg6JU06JVMgJVkgR01UJyAjIE5PVEU6IG5vIG1vbnRoLCBmaXhlZCBHTVQKKyAgICB0cnk6CisgICAgICAgIG1vbnRoX251bWJlciA9IG1vbnRocy5pbmRleChjZXJ0X3RpbWVbOjNdLnRpdGxlKCkpICsgMQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd0aW1lIGRhdGEgJXIgZG9lcyBub3QgbWF0Y2ggJworICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXQgIiUlYiVzIicgJSAoY2VydF90aW1lLCB0aW1lX2Zvcm1hdCkpCisgICAgZWxzZToKKyAgICAgICAgIyBmb3VuZCB2YWxpZCBtb250aAorICAgICAgICB0dCA9IHN0cnB0aW1lKGNlcnRfdGltZVszOl0sIHRpbWVfZm9ybWF0KQorICAgICAgICAjIHJldHVybiBhbiBpbnRlZ2VyLCB0aGUgcHJldmlvdXMgbWt0aW1lKCktYmFzZWQgaW1wbGVtZW50YXRpb24KKyAgICAgICAgIyByZXR1cm5lZCBhIGZsb2F0IChmcmFjdGlvbmFsIHNlY29uZHMgYXJlIGFsd2F5cyB6ZXJvIGhlcmUpLgorICAgICAgICByZXR1cm4gdGltZWdtKCh0dFswXSwgbW9udGhfbnVtYmVyKSArIHR0WzI6Nl0pCiAKIFBFTV9IRUFERVIgPSAiLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tIgogUEVNX0ZPT1RFUiA9ICItLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tIgpkaWZmIC0tZ2l0IGEvTGliL3N0YXQucHkgYi9MaWIvc3RhdC5weQppbmRleCAzZWVjYzNlLi40NjgzN2MwIDEwMDY0NAotLS0gYS9MaWIvc3RhdC5weQorKysgYi9MaWIvc3RhdC5weQpAQCAtMTQ4LDYgKzE0OCwyOSBAQAogICAgICAgICAgICAgcGVybS5hcHBlbmQoIi0iKQogICAgIHJldHVybiAiIi5qb2luKHBlcm0pCiAKKworIyBXaW5kb3dzIEZJTEVfQVRUUklCVVRFIGNvbnN0YW50cyBmb3IgaW50ZXJwcmV0aW5nIG9zLnN0YXQoKSdzCisjICJzdF9maWxlX2F0dHJpYnV0ZXMiIG1lbWJlcgorCitGSUxFX0FUVFJJQlVURV9BUkNISVZFID0gMzIKK0ZJTEVfQVRUUklCVVRFX0NPTVBSRVNTRUQgPSAyMDQ4CitGSUxFX0FUVFJJQlVURV9ERVZJQ0UgPSA2NAorRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZID0gMTYKK0ZJTEVfQVRUUklCVVRFX0VOQ1JZUFRFRCA9IDE2Mzg0CitGSUxFX0FUVFJJQlVURV9ISURERU4gPSAyCitGSUxFX0FUVFJJQlVURV9JTlRFR1JJVFlfU1RSRUFNID0gMzI3NjgKK0ZJTEVfQVRUUklCVVRFX05PUk1BTCA9IDEyOAorRklMRV9BVFRSSUJVVEVfTk9UX0NPTlRFTlRfSU5ERVhFRCA9IDgxOTIKK0ZJTEVfQVRUUklCVVRFX05PX1NDUlVCX0RBVEEgPSAxMzEwNzIKK0ZJTEVfQVRUUklCVVRFX09GRkxJTkUgPSA0MDk2CitGSUxFX0FUVFJJQlVURV9SRUFET05MWSA9IDEKK0ZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQgPSAxMDI0CitGSUxFX0FUVFJJQlVURV9TUEFSU0VfRklMRSA9IDUxMgorRklMRV9BVFRSSUJVVEVfU1lTVEVNID0gNAorRklMRV9BVFRSSUJVVEVfVEVNUE9SQVJZID0gMjU2CitGSUxFX0FUVFJJQlVURV9WSVJUVUFMID0gNjU1MzYKKworCiAjIElmIGF2YWlsYWJsZSwgdXNlIEMgaW1wbGVtZW50YXRpb24KIHRyeToKICAgICBmcm9tIF9zdGF0IGltcG9ydCAqCmRpZmYgLS1naXQgYS9MaWIvc3RyaW5nLnB5IGIvTGliL3N0cmluZy5weQppbmRleCBlZjA3ODdmLi42MmU4ZjJmIDEwMDY0NAotLS0gYS9MaWIvc3RyaW5nLnB5CisrKyBiL0xpYi9zdHJpbmcucHkKQEAgLTE3OCw2ICsxNzgsOSBAQAogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgIGlmICdmb3JtYXRfc3RyaW5nJyBpbiBrd2FyZ3M6CiAgICAgICAgICAgICAgICAgZm9ybWF0X3N0cmluZyA9IGt3YXJncy5wb3AoJ2Zvcm1hdF9zdHJpbmcnKQorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlBhc3NpbmcgJ2Zvcm1hdF9zdHJpbmcnIGFzIGtleXdvcmQgYXJndW1lbnQgaXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcHJlY2F0ZWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmb3JtYXQoKSBtaXNzaW5nIDEgcmVxdWlyZWQgcG9zaXRpb25hbCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudDogJ2Zvcm1hdF9zdHJpbmcnIikgZnJvbSBOb25lCmRpZmYgLS1naXQgYS9MaWIvc3VicHJvY2Vzcy5weSBiL0xpYi9zdWJwcm9jZXNzLnB5CmluZGV4IDA0Y2ZiNDQuLmQxMzI0YjggMTAwNjQ0Ci0tLSBhL0xpYi9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi9zdWJwcm9jZXNzLnB5CkBAIC0xMDQsMTcgKzEwNCwyMSBAQAogSWYgZW52IGlzIG5vdCBOb25lLCBpdCBkZWZpbmVzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSBuZXcKIHByb2Nlc3MuCiAKLUlmIHVuaXZlcnNhbF9uZXdsaW5lcyBpcyBmYWxzZSwgdGhlIGZpbGUgb2JqZWN0cyBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIKK0lmIHVuaXZlcnNhbF9uZXdsaW5lcyBpcyBGYWxzZSwgdGhlIGZpbGUgb2JqZWN0cyBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIKIGFyZSBvcGVuZWQgYXMgYmluYXJ5IGZpbGVzLCBhbmQgbm8gbGluZSBlbmRpbmcgY29udmVyc2lvbiBpcyBkb25lLgogCi1JZiB1bml2ZXJzYWxfbmV3bGluZXMgaXMgdHJ1ZSwgdGhlIGZpbGUgb2JqZWN0cyBzdGRvdXQgYW5kIHN0ZGVyciBhcmUKLW9wZW5lZCBhcyBhIHRleHQgZmlsZXMsIGJ1dCBsaW5lcyBtYXkgYmUgdGVybWluYXRlZCBieSBhbnkgb2YgJ1xuJywKK0lmIHVuaXZlcnNhbF9uZXdsaW5lcyBpcyBUcnVlLCB0aGUgZmlsZSBvYmplY3RzIHN0ZG91dCBhbmQgc3RkZXJyIGFyZQorb3BlbmVkIGFzIGEgdGV4dCBmaWxlLCBidXQgbGluZXMgbWF5IGJlIHRlcm1pbmF0ZWQgYnkgYW55IG9mICdcbicsCiB0aGUgVW5peCBlbmQtb2YtbGluZSBjb252ZW50aW9uLCAnXHInLCB0aGUgb2xkIE1hY2ludG9zaCBjb252ZW50aW9uIG9yCiAnXHJcbicsIHRoZSBXaW5kb3dzIGNvbnZlbnRpb24uICBBbGwgb2YgdGhlc2UgZXh0ZXJuYWwgcmVwcmVzZW50YXRpb25zCiBhcmUgc2VlbiBhcyAnXG4nIGJ5IHRoZSBQeXRob24gcHJvZ3JhbS4gIEFsc28sIHRoZSBuZXdsaW5lcyBhdHRyaWJ1dGUKIG9mIHRoZSBmaWxlIG9iamVjdHMgc3Rkb3V0LCBzdGRpbiBhbmQgc3RkZXJyIGFyZSBub3QgdXBkYXRlZCBieSB0aGUKIGNvbW11bmljYXRlKCkgbWV0aG9kLgogCitJbiBlaXRoZXIgY2FzZSwgdGhlIHByb2Nlc3MgYmVpbmcgY29tbXVuaWNhdGVkIHdpdGggc2hvdWxkIHN0YXJ0IHVwCitleHBlY3RpbmcgdG8gcmVjZWl2ZSBieXRlcyBvbiBpdHMgc3RhbmRhcmQgaW5wdXQgYW5kIGRlY29kZSB0aGVtIHdpdGgKK3RoZSBzYW1lIGVuY29kaW5nIHRoZXkgYXJlIHNlbnQgaW4uCisKIFRoZSBzdGFydHVwaW5mbyBhbmQgY3JlYXRpb25mbGFncywgaWYgZ2l2ZW4sIHdpbGwgYmUgcGFzc2VkIHRvIHRoZQogdW5kZXJseWluZyBDcmVhdGVQcm9jZXNzKCkgZnVuY3Rpb24uICBUaGV5IGNhbiBzcGVjaWZ5IHRoaW5ncyBzdWNoIGFzCiBhcHBlYXJhbmNlIG9mIHRoZSBtYWluIHdpbmRvdyBhbmQgcHJpb3JpdHkgZm9yIHRoZSBuZXcgcHJvY2Vzcy4KQEAgLTE4NCw2ICsxODgsOSBAQAogICAgIHBhc3MgYSBzdHJpbmcgdG8gdGhlIHN1YnByb2Nlc3MncyBzdGRpbi4gIElmIHlvdSB1c2UgdGhpcyBhcmd1bWVudAogICAgIHlvdSBtYXkgbm90IGFsc28gdXNlIHRoZSBQb3BlbiBjb25zdHJ1Y3RvcidzICJzdGRpbiIgYXJndW1lbnQuCiAKKyAgICBJZiB1bml2ZXJzYWxfbmV3bGluZXMgaXMgc2V0IHRvIFRydWUsIHRoZSAiaW5wdXQiIGFyZ3VtZW50IG11c3QKKyAgICBiZSBhIHN0cmluZyByYXRoZXIgdGhhbiBieXRlcywgYW5kIHRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSBhIHN0cmluZy4KKwogRXhjZXB0aW9ucwogLS0tLS0tLS0tLQogRXhjZXB0aW9ucyByYWlzZWQgaW4gdGhlIGNoaWxkIHByb2Nlc3MsIGJlZm9yZSB0aGUgbmV3IHByb2dyYW0gaGFzCkBAIC0yMjUsOSArMjMyLDEzIEBACiBjb21tdW5pY2F0ZShpbnB1dD1Ob25lKQogICAgIEludGVyYWN0IHdpdGggcHJvY2VzczogU2VuZCBkYXRhIHRvIHN0ZGluLiAgUmVhZCBkYXRhIGZyb20gc3Rkb3V0CiAgICAgYW5kIHN0ZGVyciwgdW50aWwgZW5kLW9mLWZpbGUgaXMgcmVhY2hlZC4gIFdhaXQgZm9yIHByb2Nlc3MgdG8KLSAgICB0ZXJtaW5hdGUuICBUaGUgb3B0aW9uYWwgaW5wdXQgYXJndW1lbnQgc2hvdWxkIGJlIGEgc3RyaW5nIHRvIGJlCisgICAgdGVybWluYXRlLiAgVGhlIG9wdGlvbmFsIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZSBkYXRhIHRvIGJlCiAgICAgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IgTm9uZSwgaWYgbm8gZGF0YSBzaG91bGQgYmUgc2VudCB0bwotICAgIHRoZSBjaGlsZC4KKyAgICB0aGUgY2hpbGQuIElmIHRoZSBQb3BlbiBpbnN0YW5jZSB3YXMgY29uc3RydWN0ZWQgd2l0aCB1bml2ZXJzYWxfbmV3bGluZXMKKyAgICBzZXQgdG8gVHJ1ZSwgdGhlIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZSBhIHN0cmluZyBhbmQgd2lsbCBiZSBlbmNvZGVkCisgICAgdXNpbmcgdGhlIHByZWZlcnJlZCBzeXN0ZW0gZW5jb2RpbmcgKHNlZSBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcpOworICAgIGlmIHVuaXZlcnNhbF9uZXdsaW5lcyBpcyBGYWxzZSwgdGhlIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZSBhCisgICAgYnl0ZSBzdHJpbmcuCiAKICAgICBjb21tdW5pY2F0ZSgpIHJldHVybnMgYSB0dXBsZSAoc3Rkb3V0LCBzdGRlcnIpLgogCkBAIC0zNDUsNyArMzU2LDcgQEAKICIiIgogCiBpbXBvcnQgc3lzCi1tc3dpbmRvd3MgPSAoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIpCitfbXN3aW5kb3dzID0gKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiKQogCiBpbXBvcnQgaW8KIGltcG9ydCBvcwpAQCAtMzU0LDEwICszNjUsNyBAQAogaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBlcnJubwotdHJ5OgotICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCitmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQogCiAjIEV4Y2VwdGlvbiBjbGFzc2VzIHVzZWQgYnkgdGhpcyBtb2R1bGUuCiBjbGFzcyBTdWJwcm9jZXNzRXJyb3IoRXhjZXB0aW9uKTogcGFzcwpAQCAtMzY5LDI5ICszNzcsNTMgQEAKICAgICBUaGUgZXhpdCBzdGF0dXMgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlOwogICAgIGNoZWNrX291dHB1dCgpIHdpbGwgYWxzbyBzdG9yZSB0aGUgb3V0cHV0IGluIHRoZSBvdXRwdXQgYXR0cmlidXRlLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXR1cm5jb2RlLCBjbWQsIG91dHB1dD1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmV0dXJuY29kZSwgY21kLCBvdXRwdXQ9Tm9uZSwgc3RkZXJyPU5vbmUpOgogICAgICAgICBzZWxmLnJldHVybmNvZGUgPSByZXR1cm5jb2RlCiAgICAgICAgIHNlbGYuY21kID0gY21kCiAgICAgICAgIHNlbGYub3V0cHV0ID0gb3V0cHV0CisgICAgICAgIHNlbGYuc3RkZXJyID0gc3RkZXJyCisKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICJDb21tYW5kICclcycgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBzdGF0dXMgJWQiICUgKHNlbGYuY21kLCBzZWxmLnJldHVybmNvZGUpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3Rkb3V0KHNlbGYpOgorICAgICAgICAiIiJBbGlhcyBmb3Igb3V0cHV0IGF0dHJpYnV0ZSwgdG8gbWF0Y2ggc3RkZXJyIiIiCisgICAgICAgIHJldHVybiBzZWxmLm91dHB1dAorCisgICAgQHN0ZG91dC5zZXR0ZXIKKyAgICBkZWYgc3Rkb3V0KHNlbGYsIHZhbHVlKToKKyAgICAgICAgIyBUaGVyZSdzIG5vIG9idmlvdXMgcmVhc29uIHRvIHNldCB0aGlzLCBidXQgYWxsb3cgaXQgYW55d2F5IHNvCisgICAgICAgICMgLnN0ZG91dCBpcyBhIHRyYW5zcGFyZW50IGFsaWFzIGZvciAub3V0cHV0CisgICAgICAgIHNlbGYub3V0cHV0ID0gdmFsdWUKKwogCiBjbGFzcyBUaW1lb3V0RXhwaXJlZChTdWJwcm9jZXNzRXJyb3IpOgogICAgICIiIlRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIHRoZSB0aW1lb3V0IGV4cGlyZXMgd2hpbGUgd2FpdGluZyBmb3IgYQogICAgIGNoaWxkIHByb2Nlc3MuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNtZCwgdGltZW91dCwgb3V0cHV0PU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjbWQsIHRpbWVvdXQsIG91dHB1dD1Ob25lLCBzdGRlcnI9Tm9uZSk6CiAgICAgICAgIHNlbGYuY21kID0gY21kCiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAgICAgc2VsZi5vdXRwdXQgPSBvdXRwdXQKKyAgICAgICAgc2VsZi5zdGRlcnIgPSBzdGRlcnIKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gKCJDb21tYW5kICclcycgdGltZWQgb3V0IGFmdGVyICVzIHNlY29uZHMiICUKICAgICAgICAgICAgICAgICAoc2VsZi5jbWQsIHNlbGYudGltZW91dCkpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3Rkb3V0KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5vdXRwdXQKIAotaWYgbXN3aW5kb3dzOgorICAgIEBzdGRvdXQuc2V0dGVyCisgICAgZGVmIHN0ZG91dChzZWxmLCB2YWx1ZSk6CisgICAgICAgICMgVGhlcmUncyBubyBvYnZpb3VzIHJlYXNvbiB0byBzZXQgdGhpcywgYnV0IGFsbG93IGl0IGFueXdheSBzbworICAgICAgICAjIC5zdGRvdXQgaXMgYSB0cmFuc3BhcmVudCBhbGlhcyBmb3IgLm91dHB1dAorICAgICAgICBzZWxmLm91dHB1dCA9IHZhbHVlCisKKworaWYgX21zd2luZG93czoKICAgICBpbXBvcnQgdGhyZWFkaW5nCiAgICAgaW1wb3J0IG1zdmNydAogICAgIGltcG9ydCBfd2luYXBpCkBAIC00MjUsOSArNDU3LDEyIEBACiAKIAogX19hbGxfXyA9IFsiUG9wZW4iLCAiUElQRSIsICJTVERPVVQiLCAiY2FsbCIsICJjaGVja19jYWxsIiwgImdldHN0YXR1c291dHB1dCIsCi0gICAgICAgICAgICJnZXRvdXRwdXQiLCAiY2hlY2tfb3V0cHV0IiwgIkNhbGxlZFByb2Nlc3NFcnJvciIsICJERVZOVUxMIl0KKyAgICAgICAgICAgImdldG91dHB1dCIsICJjaGVja19vdXRwdXQiLCAicnVuIiwgIkNhbGxlZFByb2Nlc3NFcnJvciIsICJERVZOVUxMIiwKKyAgICAgICAgICAgIlN1YnByb2Nlc3NFcnJvciIsICJUaW1lb3V0RXhwaXJlZCIsICJDb21wbGV0ZWRQcm9jZXNzIl0KKyAgICAgICAgICAgIyBOT1RFOiBXZSBpbnRlbnRpb25hbGx5IGV4Y2x1ZGUgbGlzdDJjbWRsaW5lIGFzIGl0IGlzCisgICAgICAgICAgICMgY29uc2lkZXJlZCBhbiBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBpc3N1ZTEwODM4LgogCi1pZiBtc3dpbmRvd3M6CitpZiBfbXN3aW5kb3dzOgogICAgIGZyb20gX3dpbmFwaSBpbXBvcnQgKENSRUFURV9ORVdfQ09OU09MRSwgQ1JFQVRFX05FV19QUk9DRVNTX0dST1VQLAogICAgICAgICAgICAgICAgICAgICAgICAgIFNURF9JTlBVVF9IQU5ETEUsIFNURF9PVVRQVVRfSEFORExFLAogICAgICAgICAgICAgICAgICAgICAgICAgIFNURF9FUlJPUl9IQU5ETEUsIFNXX0hJREUsCkBAIC00NTMsMTUgKzQ4OCwxMSBAQAogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYWxyZWFkeSBjbG9zZWQiKQogCiAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgICAgIHJldHVybiAiSGFuZGxlKCVkKSIgJSBpbnQoc2VsZikKKyAgICAgICAgICAgIHJldHVybiAiJXMoJWQpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgaW50KHNlbGYpKQogCiAgICAgICAgIF9fZGVsX18gPSBDbG9zZQogICAgICAgICBfX3N0cl9fID0gX19yZXByX18KIAotdHJ5OgotICAgIE1BWEZEID0gb3Muc3lzY29uZigiU0NfT1BFTl9NQVgiKQotZXhjZXB0OgotICAgIE1BWEZEID0gMjU2CiAKICMgVGhpcyBsaXN0cyBob2xkcyBQb3BlbiBpbnN0YW5jZXMgZm9yIHdoaWNoIHRoZSB1bmRlcmx5aW5nIHByb2Nlc3MgaGFkIG5vdAogIyBleGl0ZWQgYXQgdGhlIHRpbWUgaXRzIF9fZGVsX18gbWV0aG9kIGdvdCBjYWxsZWQ6IHRob3NlIHByb2Nlc3NlcyBhcmUgd2FpdCgpZWQKQEAgLTQ4NSwxNCArNTE2LDYgQEAKIERFVk5VTEwgPSAtMwogCiAKLWRlZiBfZWludHJfcmV0cnlfY2FsbChmdW5jLCAqYXJncyk6Ci0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MpCi0gICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgY29udGludWUKLQotCiAjIFhYWCBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCBieSBtdWx0aXByb2Nlc3NpbmcgYW5kIHRoZSB0ZXN0IHN1aXRlLAogIyBidXQgaXQncyBoZXJlIHNvIHRoYXQgaXQgY2FuIGJlIGltcG9ydGVkIHdoZW4gUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGhvdXQKICMgdGhyZWFkcy4KQEAgLTU4OCwzNCArNjExLDEwMiBAQAogICAgIC4uLiAgICAgICAgICAgICAgaW5wdXQ9YiJ3aGVuIGluIHRoZSBjb3Vyc2Ugb2YgZm9vbWFuIGV2ZW50c1xuIikKICAgICBiJ3doZW4gaW4gdGhlIGNvdXJzZSBvZiBiYXJtYW4gZXZlbnRzXG4nCiAKLSAgICBJZiB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSBpcyBwYXNzZWQsIHRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSBhCi0gICAgc3RyaW5nIHJhdGhlciB0aGFuIGJ5dGVzLgorICAgIElmIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlIGlzIHBhc3NlZCwgdGhlICJpbnB1dCIgYXJndW1lbnQgbXVzdCBiZSBhCisgICAgc3RyaW5nIGFuZCB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgYSBzdHJpbmcgcmF0aGVyIHRoYW4gYnl0ZXMuCiAgICAgIiIiCiAgICAgaWYgJ3N0ZG91dCcgaW4ga3dhcmdzOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdzdGRvdXQgYXJndW1lbnQgbm90IGFsbG93ZWQsIGl0IHdpbGwgYmUgb3ZlcnJpZGRlbi4nKQotICAgIGlmICdpbnB1dCcgaW4ga3dhcmdzOgorCisgICAgaWYgJ2lucHV0JyBpbiBrd2FyZ3MgYW5kIGt3YXJnc1snaW5wdXQnXSBpcyBOb25lOgorICAgICAgICAjIEV4cGxpY2l0bHkgcGFzc2luZyBpbnB1dD1Ob25lIHdhcyBwcmV2aW91c2x5IGVxdWl2YWxlbnQgdG8gcGFzc2luZyBhbgorICAgICAgICAjIGVtcHR5IHN0cmluZy4gVGhhdCBpcyBtYWludGFpbmVkIGhlcmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgorICAgICAgICBrd2FyZ3NbJ2lucHV0J10gPSAnJyBpZiBrd2FyZ3MuZ2V0KCd1bml2ZXJzYWxfbmV3bGluZXMnLCBGYWxzZSkgZWxzZSBiJycKKworICAgIHJldHVybiBydW4oKnBvcGVuYXJncywgc3Rkb3V0PVBJUEUsIHRpbWVvdXQ9dGltZW91dCwgY2hlY2s9VHJ1ZSwKKyAgICAgICAgICAgICAgICoqa3dhcmdzKS5zdGRvdXQKKworCitjbGFzcyBDb21wbGV0ZWRQcm9jZXNzKG9iamVjdCk6CisgICAgIiIiQSBwcm9jZXNzIHRoYXQgaGFzIGZpbmlzaGVkIHJ1bm5pbmcuCisKKyAgICBUaGlzIGlzIHJldHVybmVkIGJ5IHJ1bigpLgorCisgICAgQXR0cmlidXRlczoKKyAgICAgIGFyZ3M6IFRoZSBsaXN0IG9yIHN0ciBhcmdzIHBhc3NlZCB0byBydW4oKS4KKyAgICAgIHJldHVybmNvZGU6IFRoZSBleGl0IGNvZGUgb2YgdGhlIHByb2Nlc3MsIG5lZ2F0aXZlIGZvciBzaWduYWxzLgorICAgICAgc3Rkb3V0OiBUaGUgc3RhbmRhcmQgb3V0cHV0IChOb25lIGlmIG5vdCBjYXB0dXJlZCkuCisgICAgICBzdGRlcnI6IFRoZSBzdGFuZGFyZCBlcnJvciAoTm9uZSBpZiBub3QgY2FwdHVyZWQpLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzLCByZXR1cm5jb2RlLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUpOgorICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCisgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IHJldHVybmNvZGUKKyAgICAgICAgc2VsZi5zdGRvdXQgPSBzdGRvdXQKKyAgICAgICAgc2VsZi5zdGRlcnIgPSBzdGRlcnIKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgYXJncyA9IFsnYXJncz17IXJ9Jy5mb3JtYXQoc2VsZi5hcmdzKSwKKyAgICAgICAgICAgICAgICAncmV0dXJuY29kZT17IXJ9Jy5mb3JtYXQoc2VsZi5yZXR1cm5jb2RlKV0KKyAgICAgICAgaWYgc2VsZi5zdGRvdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgnc3Rkb3V0PXshcn0nLmZvcm1hdChzZWxmLnN0ZG91dCkpCisgICAgICAgIGlmIHNlbGYuc3RkZXJyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYXJncy5hcHBlbmQoJ3N0ZGVycj17IXJ9Jy5mb3JtYXQoc2VsZi5zdGRlcnIpKQorICAgICAgICByZXR1cm4gInt9KHt9KSIuZm9ybWF0KHR5cGUoc2VsZikuX19uYW1lX18sICcsICcuam9pbihhcmdzKSkKKworICAgIGRlZiBjaGVja19yZXR1cm5jb2RlKHNlbGYpOgorICAgICAgICAiIiJSYWlzZSBDYWxsZWRQcm9jZXNzRXJyb3IgaWYgdGhlIGV4aXQgY29kZSBpcyBub24temVyby4iIiIKKyAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlOgorICAgICAgICAgICAgcmFpc2UgQ2FsbGVkUHJvY2Vzc0Vycm9yKHNlbGYucmV0dXJuY29kZSwgc2VsZi5hcmdzLCBzZWxmLnN0ZG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVycikKKworCitkZWYgcnVuKCpwb3BlbmFyZ3MsIGlucHV0PU5vbmUsIHRpbWVvdXQ9Tm9uZSwgY2hlY2s9RmFsc2UsICoqa3dhcmdzKToKKyAgICAiIiJSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cyBhbmQgcmV0dXJuIGEgQ29tcGxldGVkUHJvY2VzcyBpbnN0YW5jZS4KKworICAgIFRoZSByZXR1cm5lZCBpbnN0YW5jZSB3aWxsIGhhdmUgYXR0cmlidXRlcyBhcmdzLCByZXR1cm5jb2RlLCBzdGRvdXQgYW5kCisgICAgc3RkZXJyLiBCeSBkZWZhdWx0LCBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgbm90IGNhcHR1cmVkLCBhbmQgdGhvc2UgYXR0cmlidXRlcworICAgIHdpbGwgYmUgTm9uZS4gUGFzcyBzdGRvdXQ9UElQRSBhbmQvb3Igc3RkZXJyPVBJUEUgaW4gb3JkZXIgdG8gY2FwdHVyZSB0aGVtLgorCisgICAgSWYgY2hlY2sgaXMgVHJ1ZSBhbmQgdGhlIGV4aXQgY29kZSB3YXMgbm9uLXplcm8sIGl0IHJhaXNlcyBhCisgICAgQ2FsbGVkUHJvY2Vzc0Vycm9yLiBUaGUgQ2FsbGVkUHJvY2Vzc0Vycm9yIG9iamVjdCB3aWxsIGhhdmUgdGhlIHJldHVybiBjb2RlCisgICAgaW4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlLCBhbmQgb3V0cHV0ICYgc3RkZXJyIGF0dHJpYnV0ZXMgaWYgdGhvc2Ugc3RyZWFtcworICAgIHdlcmUgY2FwdHVyZWQuCisKKyAgICBJZiB0aW1lb3V0IGlzIGdpdmVuLCBhbmQgdGhlIHByb2Nlc3MgdGFrZXMgdG9vIGxvbmcsIGEgVGltZW91dEV4cGlyZWQKKyAgICBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuCisKKyAgICBUaGVyZSBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCAiaW5wdXQiLCBhbGxvd2luZyB5b3UgdG8KKyAgICBwYXNzIGEgc3RyaW5nIHRvIHRoZSBzdWJwcm9jZXNzJ3Mgc3RkaW4uICBJZiB5b3UgdXNlIHRoaXMgYXJndW1lbnQKKyAgICB5b3UgbWF5IG5vdCBhbHNvIHVzZSB0aGUgUG9wZW4gY29uc3RydWN0b3IncyAic3RkaW4iIGFyZ3VtZW50LCBhcworICAgIGl0IHdpbGwgYmUgdXNlZCBpbnRlcm5hbGx5LgorCisgICAgVGhlIG90aGVyIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSBQb3BlbiBjb25zdHJ1Y3Rvci4KKworICAgIElmIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlIGlzIHBhc3NlZCwgdGhlICJpbnB1dCIgYXJndW1lbnQgbXVzdCBiZSBhCisgICAgc3RyaW5nIGFuZCBzdGRvdXQvc3RkZXJyIGluIHRoZSByZXR1cm5lZCBvYmplY3Qgd2lsbCBiZSBzdHJpbmdzIHJhdGhlciB0aGFuCisgICAgYnl0ZXMuCisgICAgIiIiCisgICAgaWYgaW5wdXQgaXMgbm90IE5vbmU6CiAgICAgICAgIGlmICdzdGRpbicgaW4ga3dhcmdzOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc3RkaW4gYW5kIGlucHV0IGFyZ3VtZW50cyBtYXkgbm90IGJvdGggYmUgdXNlZC4nKQotICAgICAgICBpbnB1dGRhdGEgPSBrd2FyZ3NbJ2lucHV0J10KLSAgICAgICAgZGVsIGt3YXJnc1snaW5wdXQnXQogICAgICAgICBrd2FyZ3NbJ3N0ZGluJ10gPSBQSVBFCi0gICAgZWxzZToKLSAgICAgICAgaW5wdXRkYXRhID0gTm9uZQotICAgIHdpdGggUG9wZW4oKnBvcGVuYXJncywgc3Rkb3V0PVBJUEUsICoqa3dhcmdzKSBhcyBwcm9jZXNzOgorCisgICAgd2l0aCBQb3BlbigqcG9wZW5hcmdzLCAqKmt3YXJncykgYXMgcHJvY2VzczoKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3V0cHV0LCB1bnVzZWRfZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZShpbnB1dGRhdGEsIHRpbWVvdXQ9dGltZW91dCkKKyAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZShpbnB1dCwgdGltZW91dD10aW1lb3V0KQogICAgICAgICBleGNlcHQgVGltZW91dEV4cGlyZWQ6CiAgICAgICAgICAgICBwcm9jZXNzLmtpbGwoKQotICAgICAgICAgICAgb3V0cHV0LCB1bnVzZWRfZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChwcm9jZXNzLmFyZ3MsIHRpbWVvdXQsIG91dHB1dD1vdXRwdXQpCisgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQocHJvY2Vzcy5hcmdzLCB0aW1lb3V0LCBvdXRwdXQ9c3Rkb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN0ZGVycikKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgcHJvY2Vzcy5raWxsKCkKICAgICAgICAgICAgIHByb2Nlc3Mud2FpdCgpCiAgICAgICAgICAgICByYWlzZQogICAgICAgICByZXRjb2RlID0gcHJvY2Vzcy5wb2xsKCkKLSAgICAgICAgaWYgcmV0Y29kZToKLSAgICAgICAgICAgIHJhaXNlIENhbGxlZFByb2Nlc3NFcnJvcihyZXRjb2RlLCBwcm9jZXNzLmFyZ3MsIG91dHB1dD1vdXRwdXQpCi0gICAgcmV0dXJuIG91dHB1dAorICAgICAgICBpZiBjaGVjayBhbmQgcmV0Y29kZToKKyAgICAgICAgICAgIHJhaXNlIENhbGxlZFByb2Nlc3NFcnJvcihyZXRjb2RlLCBwcm9jZXNzLmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0PXN0ZG91dCwgc3RkZXJyPXN0ZGVycikKKyAgICByZXR1cm4gQ29tcGxldGVkUHJvY2Vzcyhwcm9jZXNzLmFyZ3MsIHJldGNvZGUsIHN0ZG91dCwgc3RkZXJyKQogCiAKIGRlZiBsaXN0MmNtZGxpbmUoc2VxKToKQEAgLTc2Myw3ICs4NTQsNyBAQAogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShidWZzaXplLCBpbnQpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJidWZzaXplIG11c3QgYmUgYW4gaW50ZWdlciIpCiAKLSAgICAgICAgaWYgbXN3aW5kb3dzOgorICAgICAgICBpZiBfbXN3aW5kb3dzOgogICAgICAgICAgICAgaWYgcHJlZXhlY19mbiBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwcmVleGVjX2ZuIGlzIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm1zIikKQEAgLTgyMyw3ICs5MTQsNyBAQAogICAgICAgICAjIHF1aWNrbHkgdGVybWluYXRpbmcgY2hpbGQgY291bGQgbWFrZSBvdXIgZmRzIHVud3JhcHBhYmxlCiAgICAgICAgICMgKHNlZSAjODQ1OCkuCiAKLSAgICAgICAgaWYgbXN3aW5kb3dzOgorICAgICAgICBpZiBfbXN3aW5kb3dzOgogICAgICAgICAgICAgaWYgcDJjd3JpdGUgIT0gLTE6CiAgICAgICAgICAgICAgICAgcDJjd3JpdGUgPSBtc3ZjcnQub3Blbl9vc2ZoYW5kbGUocDJjd3JpdGUuRGV0YWNoKCksIDApCiAgICAgICAgICAgICBpZiBjMnByZWFkICE9IC0xOgpAQCAtOTE1LDE0ICsxMDA2LDM1IEBACiAgICAgICAgICAgICBzZWxmLl9kZXZudWxsID0gb3Mub3Blbihvcy5kZXZudWxsLCBvcy5PX1JEV1IpCiAgICAgICAgIHJldHVybiBzZWxmLl9kZXZudWxsCiAKKyAgICBkZWYgX3N0ZGluX3dyaXRlKHNlbGYsIGlucHV0KToKKyAgICAgICAgaWYgaW5wdXQ6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi53cml0ZShpbnB1dCkKKyAgICAgICAgICAgIGV4Y2VwdCBCcm9rZW5QaXBlRXJyb3I6CisgICAgICAgICAgICAgICAgIyBjb21tdW5pY2F0ZSgpIG11c3QgaWdub3JlIGJyb2tlbiBwaXBlIGVycm9yCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVJTlZBTCBhbmQgc2VsZi5wb2xsKCkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgSXNzdWUgIzE5NjEyOiBPbiBXaW5kb3dzLCBzdGRpbi53cml0ZSgpIGZhaWxzIHdpdGggRUlOVkFMCisgICAgICAgICAgICAgICAgICAgICMgaWYgdGhlIHByb2Nlc3MgYWxyZWFkeSBleGl0ZWQgYmVmb3JlIHRoZSB3cml0ZQorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgc2VsZi5zdGRpbi5jbG9zZSgpCisKICAgICBkZWYgY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQ9Tm9uZSwgdGltZW91dD1Ob25lKToKICAgICAgICAgIiIiSW50ZXJhY3Qgd2l0aCBwcm9jZXNzOiBTZW5kIGRhdGEgdG8gc3RkaW4uICBSZWFkIGRhdGEgZnJvbQogICAgICAgICBzdGRvdXQgYW5kIHN0ZGVyciwgdW50aWwgZW5kLW9mLWZpbGUgaXMgcmVhY2hlZC4gIFdhaXQgZm9yCi0gICAgICAgIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgVGhlIG9wdGlvbmFsIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZQotICAgICAgICBieXRlcyB0byBiZSBzZW50IHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBvciBOb25lLCBpZiBubyBkYXRhCi0gICAgICAgIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjaGlsZC4KKyAgICAgICAgcHJvY2VzcyB0byB0ZXJtaW5hdGUuCiAKLSAgICAgICAgY29tbXVuaWNhdGUoKSByZXR1cm5zIGEgdHVwbGUgKHN0ZG91dCwgc3RkZXJyKS4iIiIKKyAgICAgICAgVGhlIG9wdGlvbmFsICJpbnB1dCIgYXJndW1lbnQgc2hvdWxkIGJlIGRhdGEgdG8gYmUgc2VudCB0byB0aGUKKyAgICAgICAgY2hpbGQgcHJvY2VzcyAoaWYgc2VsZi51bml2ZXJzYWxfbmV3bGluZXMgaXMgVHJ1ZSwgdGhpcyBzaG91bGQKKyAgICAgICAgYmUgYSBzdHJpbmc7IGlmIGl0IGlzIEZhbHNlLCAiaW5wdXQiIHNob3VsZCBiZSBieXRlcyksIG9yCisgICAgICAgIE5vbmUsIGlmIG5vIGRhdGEgc2hvdWxkIGJlIHNlbnQgdG8gdGhlIGNoaWxkLgorCisgICAgICAgIGNvbW11bmljYXRlKCkgcmV0dXJucyBhIHR1cGxlIChzdGRvdXQsIHN0ZGVycikuICBUaGVzZSB3aWxsIGJlCisgICAgICAgIGJ5dGVzIG9yLCBpZiBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lcyB3YXMgVHJ1ZSwgYSBzdHJpbmcuCisgICAgICAgICIiIgogCiAgICAgICAgIGlmIHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZCBhbmQgaW5wdXQ6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3Qgc2VuZCBpbnB1dCBhZnRlciBzdGFydGluZyBjb21tdW5pY2F0aW9uIikKQEAgLTkzNSwxOCArMTA0NywxMiBAQAogICAgICAgICAgICAgc3Rkb3V0ID0gTm9uZQogICAgICAgICAgICAgc3RkZXJyID0gTm9uZQogICAgICAgICAgICAgaWYgc2VsZi5zdGRpbjoKLSAgICAgICAgICAgICAgICBpZiBpbnB1dDoKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi53cml0ZShpbnB1dCkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRVBJUEUgYW5kIGUuZXJybm8gIT0gZXJybm8uRUlOVkFMOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fc3RkaW5fd3JpdGUoaW5wdXQpCiAgICAgICAgICAgICBlbGlmIHNlbGYuc3Rkb3V0OgotICAgICAgICAgICAgICAgIHN0ZG91dCA9IF9laW50cl9yZXRyeV9jYWxsKHNlbGYuc3Rkb3V0LnJlYWQpCisgICAgICAgICAgICAgICAgc3Rkb3V0ID0gc2VsZi5zdGRvdXQucmVhZCgpCiAgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQuY2xvc2UoKQogICAgICAgICAgICAgZWxpZiBzZWxmLnN0ZGVycjoKLSAgICAgICAgICAgICAgICBzdGRlcnIgPSBfZWludHJfcmV0cnlfY2FsbChzZWxmLnN0ZGVyci5yZWFkKQorICAgICAgICAgICAgICAgIHN0ZGVyciA9IHNlbGYuc3RkZXJyLnJlYWQoKQogICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmNsb3NlKCkKICAgICAgICAgICAgIHNlbGYud2FpdCgpCiAgICAgICAgIGVsc2U6CkBAIC05ODUsNyArMTA5MSw3IEBACiAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIG9yaWdfdGltZW91dCkKIAogCi0gICAgaWYgbXN3aW5kb3dzOgorICAgIGlmIF9tc3dpbmRvd3M6CiAgICAgICAgICMKICAgICAgICAgIyBXaW5kb3dzIG1ldGhvZHMKICAgICAgICAgIwpAQCAtMTE5MCwyMSArMTI5Niw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnJfdGhyZWFkLnN0YXJ0KCkKIAogICAgICAgICAgICAgaWYgc2VsZi5zdGRpbjoKLSAgICAgICAgICAgICAgICBpZiBpbnB1dCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi53cml0ZShpbnB1dCkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRVBJUEU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb21tdW5pY2F0ZSgpIHNob3VsZCBpZ25vcmUgcGlwZSBmdWxsIGVycm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiAoZS5lcnJubyA9PSBlcnJuby5FSU5WQUwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxmLnBvbGwoKSBpcyBub3QgTm9uZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJc3N1ZSAjMTk2MTI6IHN0ZGluLndyaXRlKCkgZmFpbHMgd2l0aCBFSU5WQUwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHRoZSBwcm9jZXNzIGFscmVhZHkgZXhpdGVkIGJlZm9yZSB0aGUgd3JpdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fc3RkaW5fd3JpdGUoaW5wdXQpCiAKICAgICAgICAgICAgICMgV2FpdCBmb3IgdGhlIHJlYWRlciB0aHJlYWRzLCBvciB0aW1lIG91dC4gIElmIHdlIHRpbWUgb3V0LCB0aGUKICAgICAgICAgICAgICMgdGhyZWFkcyByZW1haW4gcmVhZGluZyBhbmQgdGhlIGZkcyBsZWZ0IG9wZW4gaW4gY2FzZSB0aGUgdXNlcgpAQCAtMTMyMywxNiArMTQxNSw2IEBACiAgICAgICAgICAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlKQogCiAKLSAgICAgICAgZGVmIF9jbG9zZV9mZHMoc2VsZiwgZmRzX3RvX2tlZXApOgotICAgICAgICAgICAgc3RhcnRfZmQgPSAzCi0gICAgICAgICAgICBmb3IgZmQgaW4gc29ydGVkKGZkc190b19rZWVwKToKLSAgICAgICAgICAgICAgICBpZiBmZCA+PSBzdGFydF9mZDoKLSAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2VyYW5nZShzdGFydF9mZCwgZmQpCi0gICAgICAgICAgICAgICAgICAgIHN0YXJ0X2ZkID0gZmQgKyAxCi0gICAgICAgICAgICBpZiBzdGFydF9mZCA8PSBNQVhGRDoKLSAgICAgICAgICAgICAgICBvcy5jbG9zZXJhbmdlKHN0YXJ0X2ZkLCBNQVhGRCkKLQotCiAgICAgICAgIGRlZiBfZXhlY3V0ZV9jaGlsZChzZWxmLCBhcmdzLCBleGVjdXRhYmxlLCBwcmVleGVjX2ZuLCBjbG9zZV9mZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbywgY3JlYXRpb25mbGFncywgc2hlbGwsCkBAIC0xNDE4LDcgKzE1MDAsNyBAQAogICAgICAgICAgICAgICAgICMgZXhjZXB0aW9uIChsaW1pdGVkIGluIHNpemUpCiAgICAgICAgICAgICAgICAgZXJycGlwZV9kYXRhID0gYnl0ZWFycmF5KCkKICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICBwYXJ0ID0gX2VpbnRyX3JldHJ5X2NhbGwob3MucmVhZCwgZXJycGlwZV9yZWFkLCA1MDAwMCkKKyAgICAgICAgICAgICAgICAgICAgcGFydCA9IG9zLnJlYWQoZXJycGlwZV9yZWFkLCA1MDAwMCkKICAgICAgICAgICAgICAgICAgICAgZXJycGlwZV9kYXRhICs9IHBhcnQKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHBhcnQgb3IgbGVuKGVycnBpcGVfZGF0YSkgPiA1MDAwMDoKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0xNDI4LDEwICsxNTEwLDkgQEAKIAogICAgICAgICAgICAgaWYgZXJycGlwZV9kYXRhOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgX2VpbnRyX3JldHJ5X2NhbGwob3Mud2FpdHBpZCwgc2VsZi5waWQsIDApCi0gICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ0hJTEQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgICAgICBvcy53YWl0cGlkKHNlbGYucGlkLCAwKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uX25hbWUsIGhleF9lcnJubywgZXJyX21zZyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJwaXBlX2RhdGEuc3BsaXQoYic6JywgMikpCkBAIC0xNTE0LDEwICsxNTk1LDggQEAKICAgICAgICAgZGVmIF90cnlfd2FpdChzZWxmLCB3YWl0X2ZsYWdzKToKICAgICAgICAgICAgICIiIkFsbCBjYWxsZXJzIHRvIHRoaXMgZnVuY3Rpb24gTVVTVCBob2xkIHNlbGYuX3dhaXRwaWRfbG9jay4iIiIKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAocGlkLCBzdHMpID0gX2VpbnRyX3JldHJ5X2NhbGwob3Mud2FpdHBpZCwgc2VsZi5waWQsIHdhaXRfZmxhZ3MpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUNISUxEOgotICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIChwaWQsIHN0cykgPSBvcy53YWl0cGlkKHNlbGYucGlkLCB3YWl0X2ZsYWdzKQorICAgICAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgogICAgICAgICAgICAgICAgICMgVGhpcyBoYXBwZW5zIGlmIFNJR0NMRCBpcyBzZXQgdG8gYmUgaWdub3JlZCBvciB3YWl0aW5nCiAgICAgICAgICAgICAgICAgIyBmb3IgY2hpbGQgcHJvY2Vzc2VzIGhhcyBvdGhlcndpc2UgYmVlbiBkaXNhYmxlZCBmb3Igb3VyCiAgICAgICAgICAgICAgICAgIyBwcm9jZXNzLiAgVGhpcyBjaGlsZCBpcyBkZWFkLCB3ZSBjYW4ndCBnZXQgdGhlIHN0YXR1cy4KQEAgLTE2MjksMTIgKzE3MDgsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dF9vZmZzZXQgKyBfUElQRV9CVUZdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dF9vZmZzZXQgKz0gb3Mud3JpdGUoa2V5LmZkLCBjaHVuaykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVQSVBFOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IudW5yZWdpc3RlcihrZXkuZmlsZW9iaikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleS5maWxlb2JqLmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEJyb2tlblBpcGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IudW5yZWdpc3RlcihrZXkuZmlsZW9iaikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LmZpbGVvYmouY2xvc2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2lucHV0X29mZnNldCA+PSBsZW4oc2VsZi5faW5wdXQpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IudW5yZWdpc3RlcihrZXkuZmlsZW9iaikKZGlmZiAtLWdpdCBhL0xpYi9zeW1ib2wucHkgYi9MaWIvc3ltYm9sLnB5CmluZGV4IDVjZjRhNjUuLjc1NDE0OTcgMTAwNzU1Ci0tLSBhL0xpYi9zeW1ib2wucHkKKysrIGIvTGliL3N5bWJvbC5weQpAQCAtMTYsODIgKzE2LDg1IEBACiBkZWNvcmF0b3IgPSAyNTkKIGRlY29yYXRvcnMgPSAyNjAKIGRlY29yYXRlZCA9IDI2MQotZnVuY2RlZiA9IDI2MgotcGFyYW1ldGVycyA9IDI2MwotdHlwZWRhcmdzbGlzdCA9IDI2NAotdGZwZGVmID0gMjY1Ci12YXJhcmdzbGlzdCA9IDI2NgotdmZwZGVmID0gMjY3Ci1zdG10ID0gMjY4Ci1zaW1wbGVfc3RtdCA9IDI2OQotc21hbGxfc3RtdCA9IDI3MAotZXhwcl9zdG10ID0gMjcxCi10ZXN0bGlzdF9zdGFyX2V4cHIgPSAyNzIKLWF1Z2Fzc2lnbiA9IDI3MwotZGVsX3N0bXQgPSAyNzQKLXBhc3Nfc3RtdCA9IDI3NQotZmxvd19zdG10ID0gMjc2Ci1icmVha19zdG10ID0gMjc3Ci1jb250aW51ZV9zdG10ID0gMjc4Ci1yZXR1cm5fc3RtdCA9IDI3OQoteWllbGRfc3RtdCA9IDI4MAotcmFpc2Vfc3RtdCA9IDI4MQotaW1wb3J0X3N0bXQgPSAyODIKLWltcG9ydF9uYW1lID0gMjgzCi1pbXBvcnRfZnJvbSA9IDI4NAotaW1wb3J0X2FzX25hbWUgPSAyODUKLWRvdHRlZF9hc19uYW1lID0gMjg2Ci1pbXBvcnRfYXNfbmFtZXMgPSAyODcKLWRvdHRlZF9hc19uYW1lcyA9IDI4OAotZG90dGVkX25hbWUgPSAyODkKLWdsb2JhbF9zdG10ID0gMjkwCi1ub25sb2NhbF9zdG10ID0gMjkxCi1hc3NlcnRfc3RtdCA9IDI5MgotY29tcG91bmRfc3RtdCA9IDI5MwotaWZfc3RtdCA9IDI5NAotd2hpbGVfc3RtdCA9IDI5NQotZm9yX3N0bXQgPSAyOTYKLXRyeV9zdG10ID0gMjk3Ci13aXRoX3N0bXQgPSAyOTgKLXdpdGhfaXRlbSA9IDI5OQotZXhjZXB0X2NsYXVzZSA9IDMwMAotc3VpdGUgPSAzMDEKLXRlc3QgPSAzMDIKLXRlc3Rfbm9jb25kID0gMzAzCi1sYW1iZGVmID0gMzA0Ci1sYW1iZGVmX25vY29uZCA9IDMwNQotb3JfdGVzdCA9IDMwNgotYW5kX3Rlc3QgPSAzMDcKLW5vdF90ZXN0ID0gMzA4Ci1jb21wYXJpc29uID0gMzA5Ci1jb21wX29wID0gMzEwCi1zdGFyX2V4cHIgPSAzMTEKLWV4cHIgPSAzMTIKLXhvcl9leHByID0gMzEzCi1hbmRfZXhwciA9IDMxNAotc2hpZnRfZXhwciA9IDMxNQotYXJpdGhfZXhwciA9IDMxNgotdGVybSA9IDMxNwotZmFjdG9yID0gMzE4Ci1wb3dlciA9IDMxOQotYXRvbSA9IDMyMAotdGVzdGxpc3RfY29tcCA9IDMyMQotdHJhaWxlciA9IDMyMgotc3Vic2NyaXB0bGlzdCA9IDMyMwotc3Vic2NyaXB0ID0gMzI0Ci1zbGljZW9wID0gMzI1Ci1leHBybGlzdCA9IDMyNgotdGVzdGxpc3QgPSAzMjcKLWRpY3RvcnNldG1ha2VyID0gMzI4Ci1jbGFzc2RlZiA9IDMyOQotYXJnbGlzdCA9IDMzMAotYXJndW1lbnQgPSAzMzEKLWNvbXBfaXRlciA9IDMzMgotY29tcF9mb3IgPSAzMzMKLWNvbXBfaWYgPSAzMzQKLWVuY29kaW5nX2RlY2wgPSAzMzUKLXlpZWxkX2V4cHIgPSAzMzYKLXlpZWxkX2FyZyA9IDMzNworYXN5bmNfZnVuY2RlZiA9IDI2MgorZnVuY2RlZiA9IDI2MworcGFyYW1ldGVycyA9IDI2NAordHlwZWRhcmdzbGlzdCA9IDI2NQordGZwZGVmID0gMjY2Cit2YXJhcmdzbGlzdCA9IDI2NwordmZwZGVmID0gMjY4CitzdG10ID0gMjY5CitzaW1wbGVfc3RtdCA9IDI3MAorc21hbGxfc3RtdCA9IDI3MQorZXhwcl9zdG10ID0gMjcyCit0ZXN0bGlzdF9zdGFyX2V4cHIgPSAyNzMKK2F1Z2Fzc2lnbiA9IDI3NAorZGVsX3N0bXQgPSAyNzUKK3Bhc3Nfc3RtdCA9IDI3NgorZmxvd19zdG10ID0gMjc3CiticmVha19zdG10ID0gMjc4Citjb250aW51ZV9zdG10ID0gMjc5CityZXR1cm5fc3RtdCA9IDI4MAoreWllbGRfc3RtdCA9IDI4MQorcmFpc2Vfc3RtdCA9IDI4MgoraW1wb3J0X3N0bXQgPSAyODMKK2ltcG9ydF9uYW1lID0gMjg0CitpbXBvcnRfZnJvbSA9IDI4NQoraW1wb3J0X2FzX25hbWUgPSAyODYKK2RvdHRlZF9hc19uYW1lID0gMjg3CitpbXBvcnRfYXNfbmFtZXMgPSAyODgKK2RvdHRlZF9hc19uYW1lcyA9IDI4OQorZG90dGVkX25hbWUgPSAyOTAKK2dsb2JhbF9zdG10ID0gMjkxCitub25sb2NhbF9zdG10ID0gMjkyCithc3NlcnRfc3RtdCA9IDI5MworY29tcG91bmRfc3RtdCA9IDI5NAorYXN5bmNfc3RtdCA9IDI5NQoraWZfc3RtdCA9IDI5Ngord2hpbGVfc3RtdCA9IDI5NworZm9yX3N0bXQgPSAyOTgKK3RyeV9zdG10ID0gMjk5Cit3aXRoX3N0bXQgPSAzMDAKK3dpdGhfaXRlbSA9IDMwMQorZXhjZXB0X2NsYXVzZSA9IDMwMgorc3VpdGUgPSAzMDMKK3Rlc3QgPSAzMDQKK3Rlc3Rfbm9jb25kID0gMzA1CitsYW1iZGVmID0gMzA2CitsYW1iZGVmX25vY29uZCA9IDMwNworb3JfdGVzdCA9IDMwOAorYW5kX3Rlc3QgPSAzMDkKK25vdF90ZXN0ID0gMzEwCitjb21wYXJpc29uID0gMzExCitjb21wX29wID0gMzEyCitzdGFyX2V4cHIgPSAzMTMKK2V4cHIgPSAzMTQKK3hvcl9leHByID0gMzE1CithbmRfZXhwciA9IDMxNgorc2hpZnRfZXhwciA9IDMxNworYXJpdGhfZXhwciA9IDMxOAordGVybSA9IDMxOQorZmFjdG9yID0gMzIwCitwb3dlciA9IDMyMQorYXRvbV9leHByID0gMzIyCithdG9tID0gMzIzCit0ZXN0bGlzdF9jb21wID0gMzI0Cit0cmFpbGVyID0gMzI1CitzdWJzY3JpcHRsaXN0ID0gMzI2CitzdWJzY3JpcHQgPSAzMjcKK3NsaWNlb3AgPSAzMjgKK2V4cHJsaXN0ID0gMzI5Cit0ZXN0bGlzdCA9IDMzMAorZGljdG9yc2V0bWFrZXIgPSAzMzEKK2NsYXNzZGVmID0gMzMyCithcmdsaXN0ID0gMzMzCithcmd1bWVudCA9IDMzNAorY29tcF9pdGVyID0gMzM1Citjb21wX2ZvciA9IDMzNgorY29tcF9pZiA9IDMzNworZW5jb2RpbmdfZGVjbCA9IDMzOAoreWllbGRfZXhwciA9IDMzOQoreWllbGRfYXJnID0gMzQwCiAjLS1lbmQgY29uc3RhbnRzLS0KIAogc3ltX25hbWUgPSB7fQpkaWZmIC0tZ2l0IGEvTGliL3N5bXRhYmxlLnB5IGIvTGliL3N5bXRhYmxlLnB5CmluZGV4IGUyMzMxM2IuLjg0ZmVjNGEgMTAwNjQ0Ci0tLSBhL0xpYi9zeW10YWJsZS5weQorKysgYi9MaWIvc3ltdGFibGUucHkKQEAgLTIsNyArMiw3IEBACiAKIGltcG9ydCBfc3ltdGFibGUKIGZyb20gX3N5bXRhYmxlIGltcG9ydCAoVVNFLCBERUZfR0xPQkFMLCBERUZfTE9DQUwsIERFRl9QQVJBTSwKLSAgICAgREVGX0lNUE9SVCwgREVGX0JPVU5ELCBPUFRfSU1QT1JUX1NUQVIsIFNDT1BFX09GRiwgU0NPUEVfTUFTSywgRlJFRSwKKyAgICAgREVGX0lNUE9SVCwgREVGX0JPVU5ELCBTQ09QRV9PRkYsIFNDT1BFX01BU0ssIEZSRUUsCiAgICAgIExPQ0FMLCBHTE9CQUxfSU1QTElDSVQsIEdMT0JBTF9FWFBMSUNJVCwgQ0VMTCkKIAogaW1wb3J0IHdlYWtyZWYKQEAgLTc0LDggKzc0LDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX3RhYmxlLmxpbmVubwogCiAgICAgZGVmIGlzX29wdGltaXplZChzZWxmKToKLSAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fdGFibGUudHlwZSA9PSBfc3ltdGFibGUuVFlQRV9GVU5DVElPTgotICAgICAgICAgICAgICAgICAgICBhbmQgbm90IHNlbGYuX3RhYmxlLm9wdGltaXplZCkKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fdGFibGUudHlwZSA9PSBfc3ltdGFibGUuVFlQRV9GVU5DVElPTikKIAogICAgIGRlZiBpc19uZXN0ZWQoc2VsZik6CiAgICAgICAgIHJldHVybiBib29sKHNlbGYuX3RhYmxlLm5lc3RlZCkKQEAgLTg3LDEwICs4Niw2IEBACiAgICAgICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBzY29wZSB1c2VzIGV4ZWMuICBEZXByZWNhdGVkIG1ldGhvZC4iIiIKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYgaGFzX2ltcG9ydF9zdGFyKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgc2NvcGUgdXNlcyBpbXBvcnQgKiIiIgotICAgICAgICByZXR1cm4gYm9vbChzZWxmLl90YWJsZS5vcHRpbWl6ZWQgJiBPUFRfSU1QT1JUX1NUQVIpCi0KICAgICBkZWYgZ2V0X2lkZW50aWZpZXJzKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fdGFibGUuc3ltYm9scy5rZXlzKCkKIApkaWZmIC0tZ2l0IGEvTGliL3N5c2NvbmZpZy5weSBiL0xpYi9zeXNjb25maWcucHkKaW5kZXggZGJmNzc2Ny4uOWMzNGJlMCAxMDA2NDQKLS0tIGEvTGliL3N5c2NvbmZpZy5weQorKysgYi9MaWIvc3lzY29uZmlnLnB5CkBAIC01Nyw3ICs1Nyw3IEBACiAgICAgICAgICdwdXJlbGliJzogJ3t1c2VyYmFzZX0vUHl0aG9ue3B5X3ZlcnNpb25fbm9kb3R9L3NpdGUtcGFja2FnZXMnLAogICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9L1B5dGhvbntweV92ZXJzaW9uX25vZG90fS9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ2luY2x1ZGUnOiAne3VzZXJiYXNlfS9QeXRob257cHlfdmVyc2lvbl9ub2RvdH0vSW5jbHVkZScsCi0gICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vU2NyaXB0cycsCisgICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vUHl0aG9ue3B5X3ZlcnNpb25fbm9kb3R9L1NjcmlwdHMnLAogICAgICAgICAnZGF0YSc6ICd7dXNlcmJhc2V9JywKICAgICAgICAgfSwKICAgICAncG9zaXhfdXNlcic6IHsKQEAgLTEwOSwxMyArMTA5LDggQEAKICAgICAjIHVuYWJsZSB0byByZXRyaWV2ZSB0aGUgcmVhbCBwcm9ncmFtIG5hbWUKICAgICBfUFJPSkVDVF9CQVNFID0gX3NhZmVfcmVhbHBhdGgob3MuZ2V0Y3dkKCkpCiAKLWlmIG9zLm5hbWUgPT0gIm50IiBhbmQgInBjYnVpbGQiIGluIF9QUk9KRUNUX0JBU0VbLTg6XS5sb3dlcigpOgotICAgIF9QUk9KRUNUX0JBU0UgPSBfc2FmZV9yZWFscGF0aChvcy5wYXRoLmpvaW4oX1BST0pFQ1RfQkFTRSwgcGFyZGlyKSkKLSMgUEMvVlM3LjEKLWlmIG9zLm5hbWUgPT0gIm50IiBhbmQgIlxccGNcXHYiIGluIF9QUk9KRUNUX0JBU0VbLTEwOl0ubG93ZXIoKToKLSAgICBfUFJPSkVDVF9CQVNFID0gX3NhZmVfcmVhbHBhdGgob3MucGF0aC5qb2luKF9QUk9KRUNUX0JBU0UsIHBhcmRpciwgcGFyZGlyKSkKLSMgUEMvQU1ENjQKLWlmIG9zLm5hbWUgPT0gIm50IiBhbmQgIlxccGNidWlsZFxcYW1kNjQiIGluIF9QUk9KRUNUX0JBU0VbLTE0Ol0ubG93ZXIoKToKK2lmIChvcy5uYW1lID09ICdudCcgYW5kCisgICAgX1BST0pFQ1RfQkFTRS5sb3dlcigpLmVuZHN3aXRoKCgnXFxwY2J1aWxkXFx3aW4zMicsICdcXHBjYnVpbGRcXGFtZDY0JykpKToKICAgICBfUFJPSkVDVF9CQVNFID0gX3NhZmVfcmVhbHBhdGgob3MucGF0aC5qb2luKF9QUk9KRUNUX0JBU0UsIHBhcmRpciwgcGFyZGlyKSkKIAogIyBzZXQgZm9yIGNyb3NzIGJ1aWxkcwpAQCAtMTI5LDExICsxMjQsOSBAQAogICAgIHJldHVybiBGYWxzZQogCiBfc3lzX2hvbWUgPSBnZXRhdHRyKHN5cywgJ19ob21lJywgTm9uZSkKLWlmIF9zeXNfaG9tZSBhbmQgb3MubmFtZSA9PSAnbnQnIGFuZCBcCi0gICAgX3N5c19ob21lLmxvd2VyKCkuZW5kc3dpdGgoKCdwY2J1aWxkJywgJ3BjYnVpbGRcXGFtZDY0JykpOgotICAgIF9zeXNfaG9tZSA9IG9zLnBhdGguZGlybmFtZShfc3lzX2hvbWUpCi0gICAgaWYgX3N5c19ob21lLmVuZHN3aXRoKCdwY2J1aWxkJyk6ICAgIyBtdXN0IGJlIGFtZDY0Ci0gICAgICAgIF9zeXNfaG9tZSA9IG9zLnBhdGguZGlybmFtZShfc3lzX2hvbWUpCitpZiAoX3N5c19ob21lIGFuZCBvcy5uYW1lID09ICdudCcgYW5kCisgICAgX3N5c19ob21lLmxvd2VyKCkuZW5kc3dpdGgoKCdcXHBjYnVpbGRcXHdpbjMyJywgJ1xccGNidWlsZFxcYW1kNjQnKSkpOgorICAgIF9zeXNfaG9tZSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKSkKIGRlZiBpc19weXRob25fYnVpbGQoY2hlY2tfaG9tZT1GYWxzZSk6CiAgICAgaWYgY2hlY2tfaG9tZSBhbmQgX3N5c19ob21lOgogICAgICAgICByZXR1cm4gX2lzX3B5dGhvbl9zb3VyY2VfZGlyKF9zeXNfaG9tZSkKQEAgLTI2Nyw3ICsyNjAsMTIgQEAKICAgICB3aGlsZSBsZW4odmFyaWFibGVzKSA+IDA6CiAgICAgICAgIGZvciBuYW1lIGluIHR1cGxlKHZhcmlhYmxlcyk6CiAgICAgICAgICAgICB2YWx1ZSA9IG5vdGRvbmVbbmFtZV0KLSAgICAgICAgICAgIG0gPSBfZmluZHZhcjFfcnguc2VhcmNoKHZhbHVlKSBvciBfZmluZHZhcjJfcnguc2VhcmNoKHZhbHVlKQorICAgICAgICAgICAgbTEgPSBfZmluZHZhcjFfcnguc2VhcmNoKHZhbHVlKQorICAgICAgICAgICAgbTIgPSBfZmluZHZhcjJfcnguc2VhcmNoKHZhbHVlKQorICAgICAgICAgICAgaWYgbTEgYW5kIG0yOgorICAgICAgICAgICAgICAgIG0gPSBtMSBpZiBtMS5zdGFydCgpIDwgbTIuc3RhcnQoKSBlbHNlIG0yCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG0gPSBtMSBpZiBtMSBlbHNlIG0yCiAgICAgICAgICAgICBpZiBtIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIG4gPSBtLmdyb3VwKDEpCiAgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCmRpZmYgLS1naXQgYS9MaWIvdGFyZmlsZS5weSBiL0xpYi90YXJmaWxlLnB5CmluZGV4IDVmMWE5NzkuLjlkMjJjOGUgMTAwNzU1Ci0tLSBhL0xpYi90YXJmaWxlLnB5CisrKyBiL0xpYi90YXJmaWxlLnB5CkBAIC00NTksMTMgKzQ1OSw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKHNlbGYuYnVmKQogICAgICAgICAgICAgICAgIHNlbGYuYnVmID0gYiIiCiAgICAgICAgICAgICAgICAgaWYgc2VsZi5jb21wdHlwZSA9PSAiZ3oiOgotICAgICAgICAgICAgICAgICAgICAjIFRoZSBuYXRpdmUgemxpYiBjcmMgaXMgYW4gdW5zaWduZWQgMzItYml0IGludGVnZXIsIGJ1dAotICAgICAgICAgICAgICAgICAgICAjIHRoZSBQeXRob24gd3JhcHBlciBpbXBsaWNpdGx5IGNhc3RzIHRoYXQgdG8gYSBzaWduZWQgQwotICAgICAgICAgICAgICAgICAgICAjIGxvbmcuICBTbywgb24gYSAzMi1iaXQgYm94IHNlbGYuY3JjIG1heSAibG9vayBuZWdhdGl2ZSIsCi0gICAgICAgICAgICAgICAgICAgICMgd2hpbGUgdGhlIHNhbWUgY3JjIG9uIGEgNjQtYml0IGJveCBtYXkgImxvb2sgcG9zaXRpdmUiLgotICAgICAgICAgICAgICAgICAgICAjIFRvIGF2b2lkIGlya3NvbWUgd2FybmluZ3MgZnJvbSB0aGUgYHN0cnVjdGAgbW9kdWxlLCBmb3JjZQotICAgICAgICAgICAgICAgICAgICAjIGl0IHRvIGxvb2sgcG9zaXRpdmUgb24gYWxsIGJveGVzLgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbGVvYmoud3JpdGUoc3RydWN0LnBhY2soIjxMIiwgc2VsZi5jcmMgJiAweGZmZmZmZmZmKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKHN0cnVjdC5wYWNrKCI8TCIsIHNlbGYuY3JjKSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKHN0cnVjdC5wYWNrKCI8TCIsIHNlbGYucG9zICYgMHhmZmZmRkZGRikpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZXh0ZmlsZW9iajoKQEAgLTE0MTQsOSArMTQwOCw5IEBACiAgICAgICAgICAgIGNhbiBiZSBkZXRlcm1pbmVkLCBgbW9kZScgaXMgb3ZlcnJpZGRlbiBieSBgZmlsZW9iaidzIG1vZGUuCiAgICAgICAgICAgIGBmaWxlb2JqJyBpcyBub3QgY2xvc2VkLCB3aGVuIFRhckZpbGUgaXMgY2xvc2VkLgogICAgICAgICAiIiIKLSAgICAgICAgbW9kZXMgPSB7InIiOiAicmIiLCAiYSI6ICJyK2IiLCAidyI6ICJ3YiJ9CisgICAgICAgIG1vZGVzID0geyJyIjogInJiIiwgImEiOiAicitiIiwgInciOiAid2IiLCAieCI6ICJ4YiJ9CiAgICAgICAgIGlmIG1vZGUgbm90IGluIG1vZGVzOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBtdXN0IGJlICdyJywgJ2EnIG9yICd3JyIpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtb2RlIG11c3QgYmUgJ3InLCAnYScsICd3JyBvciAneCciKQogICAgICAgICBzZWxmLm1vZGUgPSBtb2RlCiAgICAgICAgIHNlbGYuX21vZGUgPSBtb2Rlc1ttb2RlXQogCkBAIC0xNDg4LDcgKzE0ODIsNyBAQAogICAgICAgICAgICAgICAgICAgICBleGNlcHQgSGVhZGVyRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJlYWRFcnJvcihzdHIoZSkpCiAKLSAgICAgICAgICAgIGlmIHNlbGYubW9kZSBpbiAiYXciOgorICAgICAgICAgICAgaWYgc2VsZi5tb2RlIGluICgiYSIsICJ3IiwgIngiKToKICAgICAgICAgICAgICAgICBzZWxmLl9sb2FkZWQgPSBUcnVlCiAKICAgICAgICAgICAgICAgICBpZiBzZWxmLnBheF9oZWFkZXJzOgpAQCAtMTUyOSw2ICsxNTIzLDE1IEBACiAgICAgICAgICAgICd3OmJ6MicgICAgICBvcGVuIGZvciB3cml0aW5nIHdpdGggYnppcDIgY29tcHJlc3Npb24KICAgICAgICAgICAgJ3c6eHonICAgICAgIG9wZW4gZm9yIHdyaXRpbmcgd2l0aCBsem1hIGNvbXByZXNzaW9uCiAKKyAgICAgICAgICAgJ3gnIG9yICd4OicgIGNyZWF0ZSBhIHRhcmZpbGUgZXhjbHVzaXZlbHkgd2l0aG91dCBjb21wcmVzc2lvbiwgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuIGV4Y2VwdGlvbiBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGNyZWF0ZWQKKyAgICAgICAgICAgJ3g6Z3onICAgICAgIGNyZWF0ZSBhbiBnemlwIGNvbXByZXNzZWQgdGFyZmlsZSwgcmFpc2UgYW4gZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGNyZWF0ZWQKKyAgICAgICAgICAgJ3g6YnoyJyAgICAgIGNyZWF0ZSBhbiBiemlwMiBjb21wcmVzc2VkIHRhcmZpbGUsIHJhaXNlIGFuIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBjcmVhdGVkCisgICAgICAgICAgICd4Onh6JyAgICAgICBjcmVhdGUgYW4gbHptYSBjb21wcmVzc2VkIHRhcmZpbGUsIHJhaXNlIGFuIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBjcmVhdGVkCisKICAgICAgICAgICAgJ3J8KicgICAgICAgIG9wZW4gYSBzdHJlYW0gb2YgdGFyIGJsb2NrcyB3aXRoIHRyYW5zcGFyZW50IGNvbXByZXNzaW9uCiAgICAgICAgICAgICdyfCcgICAgICAgICBvcGVuIGFuIHVuY29tcHJlc3NlZCBzdHJlYW0gb2YgdGFyIGJsb2NrcyBmb3IgcmVhZGluZwogICAgICAgICAgICAncnxneicgICAgICAgb3BlbiBhIGd6aXAgY29tcHJlc3NlZCBzdHJlYW0gb2YgdGFyIGJsb2NrcwpAQCAtMTU4Nyw3ICsxNTkwLDcgQEAKICAgICAgICAgICAgIHQuX2V4dGZpbGVvYmogPSBGYWxzZQogICAgICAgICAgICAgcmV0dXJuIHQKIAotICAgICAgICBlbGlmIG1vZGUgaW4gKCJhIiwgInciKToKKyAgICAgICAgZWxpZiBtb2RlIGluICgiYSIsICJ3IiwgIngiKToKICAgICAgICAgICAgIHJldHVybiBjbHMudGFyb3BlbihuYW1lLCBtb2RlLCBmaWxlb2JqLCAqKmt3YXJncykKIAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmRpc2Nlcm5pYmxlIG1vZGUiKQpAQCAtMTU5Niw4ICsxNTk5LDggQEAKICAgICBkZWYgdGFyb3BlbihjbHMsIG5hbWUsIG1vZGU9InIiLCBmaWxlb2JqPU5vbmUsICoqa3dhcmdzKToKICAgICAgICAgIiIiT3BlbiB1bmNvbXByZXNzZWQgdGFyIGFyY2hpdmUgbmFtZSBmb3IgcmVhZGluZyBvciB3cml0aW5nLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgImEiLCAidyIpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBtdXN0IGJlICdyJywgJ2EnIG9yICd3JyIpCisgICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJhIiwgInciLCAieCIpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBtdXN0IGJlICdyJywgJ2EnLCAndycgb3IgJ3gnIikKICAgICAgICAgcmV0dXJuIGNscyhuYW1lLCBtb2RlLCBmaWxlb2JqLCAqKmt3YXJncykKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMTYwNSw4ICsxNjA4LDggQEAKICAgICAgICAgIiIiT3BlbiBnemlwIGNvbXByZXNzZWQgdGFyIGFyY2hpdmUgbmFtZSBmb3IgcmVhZGluZyBvciB3cml0aW5nLgogICAgICAgICAgICBBcHBlbmRpbmcgaXMgbm90IGFsbG93ZWQuCiAgICAgICAgICIiIgotICAgICAgICBpZiBtb2RlIG5vdCBpbiAoInIiLCAidyIpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBtdXN0IGJlICdyJyBvciAndyciKQorICAgICAgICBpZiBtb2RlIG5vdCBpbiAoInIiLCAidyIsICJ4Iik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtb2RlIG11c3QgYmUgJ3InLCAndycgb3IgJ3gnIikKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpbXBvcnQgZ3ppcApAQCAtMTYzOSw4ICsxNjQyLDggQEAKICAgICAgICAgIiIiT3BlbiBiemlwMiBjb21wcmVzc2VkIHRhciBhcmNoaXZlIG5hbWUgZm9yIHJlYWRpbmcgb3Igd3JpdGluZy4KICAgICAgICAgICAgQXBwZW5kaW5nIGlzIG5vdCBhbGxvd2VkLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgInciKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgbXVzdCBiZSAncicgb3IgJ3cnLiIpCisgICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJ3IiwgIngiKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgbXVzdCBiZSAncicsICd3JyBvciAneCciKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcG9ydCBiejIKQEAgLTE2NjgsOCArMTY3MSw4IEBACiAgICAgICAgICIiIk9wZW4gbHptYSBjb21wcmVzc2VkIHRhciBhcmNoaXZlIG5hbWUgZm9yIHJlYWRpbmcgb3Igd3JpdGluZy4KICAgICAgICAgICAgQXBwZW5kaW5nIGlzIG5vdCBhbGxvd2VkLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgInciKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgbXVzdCBiZSAncicgb3IgJ3cnIikKKyAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgInciLCAieCIpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBtdXN0IGJlICdyJywgJ3cnIG9yICd4JyIpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wb3J0IGx6bWEKQEAgLTE3MTEsNyArMTcxNCw3IEBACiAKICAgICAgICAgc2VsZi5jbG9zZWQgPSBUcnVlCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIHNlbGYubW9kZSBpbiAiYXciOgorICAgICAgICAgICAgaWYgc2VsZi5tb2RlIGluICgiYSIsICJ3IiwgIngiKToKICAgICAgICAgICAgICAgICBzZWxmLmZpbGVvYmoud3JpdGUoTlVMICogKEJMT0NLU0laRSAqIDIpKQogICAgICAgICAgICAgICAgIHNlbGYub2Zmc2V0ICs9IChCTE9DS1NJWkUgKiAyKQogICAgICAgICAgICAgICAgICMgZmlsbCB1cCB0aGUgZW5kIHdpdGggemVyby1ibG9ja3MKQEAgLTE3NTcsNyArMTc2MCw3IEBACiAgICAgICAgICAgIGFkZGZpbGUoKS4gSWYgZ2l2ZW4sIGBhcmNuYW1lJyBzcGVjaWZpZXMgYW4gYWx0ZXJuYXRpdmUgbmFtZSBmb3IgdGhlCiAgICAgICAgICAgIGZpbGUgaW4gdGhlIGFyY2hpdmUuCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLl9jaGVjaygiYXciKQorICAgICAgICBzZWxmLl9jaGVjaygiYXd4IikKIAogICAgICAgICAjIFdoZW4gZmlsZW9iaiBpcyBnaXZlbiwgcmVwbGFjZSBuYW1lIGJ5CiAgICAgICAgICMgZmlsZW9iaidzIHJlYWwgbmFtZS4KQEAgLTE4NDgsMTQgKzE4NTEsMTcgQEAKICAgICAgICAgICAgICAgICB0YXJpbmZvLmRldm1pbm9yID0gb3MubWlub3Ioc3RhdHJlcy5zdF9yZGV2KQogICAgICAgICByZXR1cm4gdGFyaW5mbwogCi0gICAgZGVmIGxpc3Qoc2VsZiwgdmVyYm9zZT1UcnVlKToKKyAgICBkZWYgbGlzdChzZWxmLCB2ZXJib3NlPVRydWUsICosIG1lbWJlcnM9Tm9uZSk6CiAgICAgICAgICIiIlByaW50IGEgdGFibGUgb2YgY29udGVudHMgdG8gc3lzLnN0ZG91dC4gSWYgYHZlcmJvc2UnIGlzIEZhbHNlLCBvbmx5CiAgICAgICAgICAgIHRoZSBuYW1lcyBvZiB0aGUgbWVtYmVycyBhcmUgcHJpbnRlZC4gSWYgaXQgaXMgVHJ1ZSwgYW4gYGxzIC1sJy1saWtlCi0gICAgICAgICAgIG91dHB1dCBpcyBwcm9kdWNlZC4KKyAgICAgICAgICAgb3V0cHV0IGlzIHByb2R1Y2VkLiBgbWVtYmVycycgaXMgb3B0aW9uYWwgYW5kIG11c3QgYmUgYSBzdWJzZXQgb2YgdGhlCisgICAgICAgICAgIGxpc3QgcmV0dXJuZWQgYnkgZ2V0bWVtYmVycygpLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fY2hlY2soKQogCi0gICAgICAgIGZvciB0YXJpbmZvIGluIHNlbGY6CisgICAgICAgIGlmIG1lbWJlcnMgaXMgTm9uZToKKyAgICAgICAgICAgIG1lbWJlcnMgPSBzZWxmCisgICAgICAgIGZvciB0YXJpbmZvIGluIG1lbWJlcnM6CiAgICAgICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgICAgIF9zYWZlX3ByaW50KHN0YXQuZmlsZW1vZGUodGFyaW5mby5tb2RlKSkKICAgICAgICAgICAgICAgICBfc2FmZV9wcmludCgiJXMvJXMiICUgKHRhcmluZm8udW5hbWUgb3IgdGFyaW5mby51aWQsCkBAIC0xODg4LDcgKzE4OTQsNyBAQAogICAgICAgICAgICBUYXJJbmZvIG9iamVjdCwgaWYgaXQgcmV0dXJucyBOb25lIHRoZSBUYXJJbmZvIG9iamVjdCB3aWxsIGJlCiAgICAgICAgICAgIGV4Y2x1ZGVkIGZyb20gdGhlIGFyY2hpdmUuCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLl9jaGVjaygiYXciKQorICAgICAgICBzZWxmLl9jaGVjaygiYXd4IikKIAogICAgICAgICBpZiBhcmNuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgICBhcmNuYW1lID0gbmFtZQpAQCAtMTk0NSw3ICsxOTUxLDcgQEAKICAgICAgICAgICAgT24gV2luZG93cyBwbGF0Zm9ybXMsIGBmaWxlb2JqJyBzaG91bGQgYWx3YXlzIGJlIG9wZW5lZCB3aXRoIG1vZGUKICAgICAgICAgICAgJ3JiJyB0byBhdm9pZCBpcnJpdGF0aW9uIGFib3V0IHRoZSBmaWxlIHNpemUuCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLl9jaGVjaygiYXciKQorICAgICAgICBzZWxmLl9jaGVjaygiYXd4IikKIAogICAgICAgICB0YXJpbmZvID0gY29weS5jb3B5KHRhcmluZm8pCiAKQEAgLTE5NjQsMTIgKzE5NzAsMTMgQEAKIAogICAgICAgICBzZWxmLm1lbWJlcnMuYXBwZW5kKHRhcmluZm8pCiAKLSAgICBkZWYgZXh0cmFjdGFsbChzZWxmLCBwYXRoPSIuIiwgbWVtYmVycz1Ob25lKToKKyAgICBkZWYgZXh0cmFjdGFsbChzZWxmLCBwYXRoPSIuIiwgbWVtYmVycz1Ob25lLCAqLCBudW1lcmljX293bmVyPUZhbHNlKToKICAgICAgICAgIiIiRXh0cmFjdCBhbGwgbWVtYmVycyBmcm9tIHRoZSBhcmNoaXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcKICAgICAgICAgICAgZGlyZWN0b3J5IGFuZCBzZXQgb3duZXIsIG1vZGlmaWNhdGlvbiB0aW1lIGFuZCBwZXJtaXNzaW9ucyBvbgogICAgICAgICAgICBkaXJlY3RvcmllcyBhZnRlcndhcmRzLiBgcGF0aCcgc3BlY2lmaWVzIGEgZGlmZmVyZW50IGRpcmVjdG9yeQogICAgICAgICAgICB0byBleHRyYWN0IHRvLiBgbWVtYmVycycgaXMgb3B0aW9uYWwgYW5kIG11c3QgYmUgYSBzdWJzZXQgb2YgdGhlCi0gICAgICAgICAgIGxpc3QgcmV0dXJuZWQgYnkgZ2V0bWVtYmVycygpLgorICAgICAgICAgICBsaXN0IHJldHVybmVkIGJ5IGdldG1lbWJlcnMoKS4gSWYgYG51bWVyaWNfb3duZXJgIGlzIFRydWUsIG9ubHkKKyAgICAgICAgICAgdGhlIG51bWJlcnMgZm9yIHVzZXIvZ3JvdXAgbmFtZXMgYXJlIHVzZWQgYW5kIG5vdCB0aGUgbmFtZXMuCiAgICAgICAgICIiIgogICAgICAgICBkaXJlY3RvcmllcyA9IFtdCiAKQEAgLTE5ODMsNyArMTk5MCw4IEBACiAgICAgICAgICAgICAgICAgdGFyaW5mbyA9IGNvcHkuY29weSh0YXJpbmZvKQogICAgICAgICAgICAgICAgIHRhcmluZm8ubW9kZSA9IDBvNzAwCiAgICAgICAgICAgICAjIERvIG5vdCBzZXRfYXR0cnMgZGlyZWN0b3JpZXMsIGFzIHdlIHdpbGwgZG8gdGhhdCBmdXJ0aGVyIGRvd24KLSAgICAgICAgICAgIHNlbGYuZXh0cmFjdCh0YXJpbmZvLCBwYXRoLCBzZXRfYXR0cnM9bm90IHRhcmluZm8uaXNkaXIoKSkKKyAgICAgICAgICAgIHNlbGYuZXh0cmFjdCh0YXJpbmZvLCBwYXRoLCBzZXRfYXR0cnM9bm90IHRhcmluZm8uaXNkaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljX293bmVyPW51bWVyaWNfb3duZXIpCiAKICAgICAgICAgIyBSZXZlcnNlIHNvcnQgZGlyZWN0b3JpZXMuCiAgICAgICAgIGRpcmVjdG9yaWVzLnNvcnQoa2V5PWxhbWJkYSBhOiBhLm5hbWUpCkBAIC0xOTkzLDcgKzIwMDEsNyBAQAogICAgICAgICBmb3IgdGFyaW5mbyBpbiBkaXJlY3RvcmllczoKICAgICAgICAgICAgIGRpcnBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCwgdGFyaW5mby5uYW1lKQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuY2hvd24odGFyaW5mbywgZGlycGF0aCkKKyAgICAgICAgICAgICAgICBzZWxmLmNob3duKHRhcmluZm8sIGRpcnBhdGgsIG51bWVyaWNfb3duZXI9bnVtZXJpY19vd25lcikKICAgICAgICAgICAgICAgICBzZWxmLnV0aW1lKHRhcmluZm8sIGRpcnBhdGgpCiAgICAgICAgICAgICAgICAgc2VsZi5jaG1vZCh0YXJpbmZvLCBkaXJwYXRoKQogICAgICAgICAgICAgZXhjZXB0IEV4dHJhY3RFcnJvciBhcyBlOgpAQCAtMjAwMiwxMiArMjAxMCwxNCBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RiZygxLCAidGFyZmlsZTogJXMiICUgZSkKIAotICAgIGRlZiBleHRyYWN0KHNlbGYsIG1lbWJlciwgcGF0aD0iIiwgc2V0X2F0dHJzPVRydWUpOgorICAgIGRlZiBleHRyYWN0KHNlbGYsIG1lbWJlciwgcGF0aD0iIiwgc2V0X2F0dHJzPVRydWUsICosIG51bWVyaWNfb3duZXI9RmFsc2UpOgogICAgICAgICAiIiJFeHRyYWN0IGEgbWVtYmVyIGZyb20gdGhlIGFyY2hpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksCiAgICAgICAgICAgIHVzaW5nIGl0cyBmdWxsIG5hbWUuIEl0cyBmaWxlIGluZm9ybWF0aW9uIGlzIGV4dHJhY3RlZCBhcyBhY2N1cmF0ZWx5CiAgICAgICAgICAgIGFzIHBvc3NpYmxlLiBgbWVtYmVyJyBtYXkgYmUgYSBmaWxlbmFtZSBvciBhIFRhckluZm8gb2JqZWN0LiBZb3UgY2FuCiAgICAgICAgICAgIHNwZWNpZnkgYSBkaWZmZXJlbnQgZGlyZWN0b3J5IHVzaW5nIGBwYXRoJy4gRmlsZSBhdHRyaWJ1dGVzIChvd25lciwKLSAgICAgICAgICAgbXRpbWUsIG1vZGUpIGFyZSBzZXQgdW5sZXNzIGBzZXRfYXR0cnMnIGlzIEZhbHNlLgorICAgICAgICAgICBtdGltZSwgbW9kZSkgYXJlIHNldCB1bmxlc3MgYHNldF9hdHRycycgaXMgRmFsc2UuIElmIGBudW1lcmljX293bmVyYAorICAgICAgICAgICBpcyBUcnVlLCBvbmx5IHRoZSBudW1iZXJzIGZvciB1c2VyL2dyb3VwIG5hbWVzIGFyZSB1c2VkIGFuZCBub3QKKyAgICAgICAgICAgdGhlIG5hbWVzLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fY2hlY2soInIiKQogCkBAIC0yMDIyLDcgKzIwMzIsOCBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX2V4dHJhY3RfbWVtYmVyKHRhcmluZm8sIG9zLnBhdGguam9pbihwYXRoLCB0YXJpbmZvLm5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2F0dHJzPXNldF9hdHRycykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9hdHRycz1zZXRfYXR0cnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljX293bmVyPW51bWVyaWNfb3duZXIpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBpZiBzZWxmLmVycm9ybGV2ZWwgPiAwOgogICAgICAgICAgICAgICAgIHJhaXNlCkBAIC0yMDY4LDcgKzIwNzksOCBAQAogICAgICAgICAgICAgIyBibGtkZXYsIGV0Yy4pLCByZXR1cm4gTm9uZSBpbnN0ZWFkIG9mIGEgZmlsZSBvYmplY3QuCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZGVmIF9leHRyYWN0X21lbWJlcihzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoLCBzZXRfYXR0cnM9VHJ1ZSk6CisgICAgZGVmIF9leHRyYWN0X21lbWJlcihzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoLCBzZXRfYXR0cnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNfb3duZXI9RmFsc2UpOgogICAgICAgICAiIiJFeHRyYWN0IHRoZSBUYXJJbmZvIG9iamVjdCB0YXJpbmZvIHRvIGEgcGh5c2ljYWwKICAgICAgICAgICAgZmlsZSBjYWxsZWQgdGFyZ2V0cGF0aC4KICAgICAgICAgIiIiCkBAIC0yMTA2LDcgKzIxMTgsNyBAQAogICAgICAgICAgICAgc2VsZi5tYWtlZmlsZSh0YXJpbmZvLCB0YXJnZXRwYXRoKQogCiAgICAgICAgIGlmIHNldF9hdHRyczoKLSAgICAgICAgICAgIHNlbGYuY2hvd24odGFyaW5mbywgdGFyZ2V0cGF0aCkKKyAgICAgICAgICAgIHNlbGYuY2hvd24odGFyaW5mbywgdGFyZ2V0cGF0aCwgbnVtZXJpY19vd25lcikKICAgICAgICAgICAgIGlmIG5vdCB0YXJpbmZvLmlzc3ltKCk6CiAgICAgICAgICAgICAgICAgc2VsZi5jaG1vZCh0YXJpbmZvLCB0YXJnZXRwYXRoKQogICAgICAgICAgICAgICAgIHNlbGYudXRpbWUodGFyaW5mbywgdGFyZ2V0cGF0aCkKQEAgLTIxOTUsMTkgKzIyMDcsMjQgQEAKICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICByYWlzZSBFeHRyYWN0RXJyb3IoInVuYWJsZSB0byByZXNvbHZlIGxpbmsgaW5zaWRlIGFyY2hpdmUiKQogCi0gICAgZGVmIGNob3duKHNlbGYsIHRhcmluZm8sIHRhcmdldHBhdGgpOgotICAgICAgICAiIiJTZXQgb3duZXIgb2YgdGFyZ2V0cGF0aCBhY2NvcmRpbmcgdG8gdGFyaW5mby4KKyAgICBkZWYgY2hvd24oc2VsZiwgdGFyaW5mbywgdGFyZ2V0cGF0aCwgbnVtZXJpY19vd25lcik6CisgICAgICAgICIiIlNldCBvd25lciBvZiB0YXJnZXRwYXRoIGFjY29yZGluZyB0byB0YXJpbmZvLiBJZiBudW1lcmljX293bmVyCisgICAgICAgICAgIGlzIFRydWUsIHVzZSAuZ2lkLy51aWQgaW5zdGVhZCBvZiAuZ25hbWUvLnVuYW1lLgogICAgICAgICAiIiIKICAgICAgICAgaWYgcHdkIGFuZCBoYXNhdHRyKG9zLCAiZ2V0ZXVpZCIpIGFuZCBvcy5nZXRldWlkKCkgPT0gMDoKICAgICAgICAgICAgICMgV2UgaGF2ZSB0byBiZSByb290IHRvIGRvIHNvLgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGcgPSBncnAuZ2V0Z3JuYW0odGFyaW5mby5nbmFtZSlbMl0KLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIGlmIG51bWVyaWNfb3duZXI6CiAgICAgICAgICAgICAgICAgZyA9IHRhcmluZm8uZ2lkCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdSA9IHB3ZC5nZXRwd25hbSh0YXJpbmZvLnVuYW1lKVsyXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgIHUgPSB0YXJpbmZvLnVpZAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGcgPSBncnAuZ2V0Z3JuYW0odGFyaW5mby5nbmFtZSlbMl0KKyAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGcgPSB0YXJpbmZvLmdpZAorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdSA9IHB3ZC5nZXRwd25hbSh0YXJpbmZvLnVuYW1lKVsyXQorICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgdSA9IHRhcmluZm8udWlkCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgaWYgdGFyaW5mby5pc3N5bSgpIGFuZCBoYXNhdHRyKG9zLCAibGNob3duIik6CiAgICAgICAgICAgICAgICAgICAgIG9zLmxjaG93bih0YXJnZXRwYXRoLCB1LCBnKQpkaWZmIC0tZ2l0IGEvTGliL3RlbG5ldGxpYi5weSBiL0xpYi90ZWxuZXRsaWIucHkKaW5kZXggNTE3MzhmMC4uNzJkYWJjNyAxMDA2NDQKLS0tIGEvTGliL3RlbG5ldGxpYi5weQorKysgYi9MaWIvdGVsbmV0bGliLnB5CkBAIC0zNiwxMCArMzYsNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHNvY2tldAogaW1wb3J0IHNlbGVjdG9ycwotdHJ5OgotICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCitmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQogCiBfX2FsbF9fID0gWyJUZWxuZXQiXQogCkBAIC0yNjUsOCArMjYyLDggQEAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgICIiIkNsb3NlIHRoZSBjb25uZWN0aW9uLiIiIgogICAgICAgICBzb2NrID0gc2VsZi5zb2NrCi0gICAgICAgIHNlbGYuc29jayA9IDAKLSAgICAgICAgc2VsZi5lb2YgPSAxCisgICAgICAgIHNlbGYuc29jayA9IE5vbmUKKyAgICAgICAgc2VsZi5lb2YgPSBUcnVlCiAgICAgICAgIHNlbGYuaWFjc2VxID0gYicnCiAgICAgICAgIHNlbGYuc2IgPSAwCiAgICAgICAgIGlmIHNvY2s6CmRpZmYgLS1naXQgYS9MaWIvdGVtcGZpbGUucHkgYi9MaWIvdGVtcGZpbGUucHkKaW5kZXggMDUzNzIyOC4uZDM4MWEyNSAxMDA2NDQKLS0tIGEvTGliL3RlbXBmaWxlLnB5CisrKyBiL0xpYi90ZW1wZmlsZS5weQpAQCAtNiw2ICs2LDE0IEBACiBleGNlcHQgZm9yICdta3RlbXAnLiAgJ21rdGVtcCcgaXMgc3ViamVjdCB0byByYWNlIGNvbmRpdGlvbnMgYW5kCiBzaG91bGQgbm90IGJlIHVzZWQ7IGl0IGlzIHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9ubHkuCiAKK1RoZSBkZWZhdWx0IHBhdGggbmFtZXMgYXJlIHJldHVybmVkIGFzIHN0ci4gIElmIHlvdSBzdXBwbHkgYnl0ZXMgYXMKK2lucHV0LCBhbGwgcmV0dXJuIHZhbHVlcyB3aWxsIGJlIGluIGJ5dGVzLiAgRXg6CisKKyAgICA+Pj4gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgKDQsICcvdG1wL3RtcHRwdTluaW44JykKKyAgICA+Pj4gdGVtcGZpbGUubWtkdGVtcChzdWZmaXg9YicnKQorICAgIGInL3RtcC90bXBwYmk4ZjBoeScKKwogVGhpcyBtb2R1bGUgYWxzbyBwcm92aWRlcyBzb21lIGRhdGEgaXRlbXMgdG8gdGhlIHVzZXI6CiAKICAgVE1QX01BWCAgLSBtYXhpbXVtIG51bWJlciBvZiBuYW1lcyB0aGF0IHdpbGwgYmUgdHJpZWQgYmVmb3JlCkBAIC0yMSw3ICsyOSw4IEBACiAgICAgIm1rc3RlbXAiLCAibWtkdGVtcCIsICAgICAgICAgICAgICAgICAgIyBsb3cgbGV2ZWwgc2FmZSBpbnRlcmZhY2VzCiAgICAgIm1rdGVtcCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkZXByZWNhdGVkIHVuc2FmZSBpbnRlcmZhY2UKICAgICAiVE1QX01BWCIsICJnZXR0ZW1wcHJlZml4IiwgICAgICAgICAgICAjIGNvbnN0YW50cwotICAgICJ0ZW1wZGlyIiwgImdldHRlbXBkaXIiCisgICAgInRlbXBkaXIiLCAiZ2V0dGVtcGRpciIsCisgICAgImdldHRlbXBwcmVmaXhiIiwgImdldHRlbXBkaXJiIiwKICAgIF0KIAogCkBAIC01NSw4ICs2NCwxMCBAQAogZWxzZToKICAgICBUTVBfTUFYID0gMTAwMDAKIAotIyBBbHRob3VnaCBpdCBkb2VzIG5vdCBoYXZlIGFuIHVuZGVyc2NvcmUgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgdGhpcwotIyB2YXJpYWJsZSBpcyBhbiBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgKHNlZSBpc3N1ZSAxMDM1NCkuCisjIFRoaXMgdmFyaWFibGUgX3dhc18gdW51c2VkIGZvciBsZWdhY3kgcmVhc29ucywgc2VlIGlzc3VlIDEwMzU0LgorIyBCdXQgYXMgb2YgMy41IHdlIGFjdHVhbGx5IHVzZSBpdCBhdCBydW50aW1lIHNvIGNoYW5naW5nIGl0IHdvdWxkCisjIGhhdmUgYSBwb3NzaWJseSBkZXNpcmFibGUgc2lkZSBlZmZlY3QuLi4gIEJ1dCB3ZSBkbyBub3Qgd2FudCB0byBzdXBwb3J0CisjIHRoYXQgYXMgYW4gQVBJLiAgSXQgaXMgdW5kb2N1bWVudGVkIG9uIHB1cnBvc2UuICBEbyBub3QgZGVwZW5kIG9uIHRoaXMuCiB0ZW1wbGF0ZSA9ICJ0bXAiCiAKICMgSW50ZXJuYWwgcm91dGluZXMuCkBAIC04Miw2ICs5Myw0NiBAQAogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBUcnVlCiAKKworZGVmIF9pbmZlcl9yZXR1cm5fdHlwZSgqYXJncyk6CisgICAgIiIiTG9vayBhdCB0aGUgdHlwZSBvZiBhbGwgYXJncyBhbmQgZGl2aW5lIHRoZWlyIGltcGxpZWQgcmV0dXJuIHR5cGUuIiIiCisgICAgcmV0dXJuX3R5cGUgPSBOb25lCisgICAgZm9yIGFyZyBpbiBhcmdzOgorICAgICAgICBpZiBhcmcgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJnLCBieXRlcyk6CisgICAgICAgICAgICBpZiByZXR1cm5fdHlwZSBpcyBzdHI6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCBtaXggYnl0ZXMgYW5kIG5vbi1ieXRlcyBpbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIGNvbXBvbmVudHMuIikKKyAgICAgICAgICAgIHJldHVybl90eXBlID0gYnl0ZXMKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHJldHVybl90eXBlIGlzIGJ5dGVzOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgbWl4IGJ5dGVzIGFuZCBub24tYnl0ZXMgaW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0aCBjb21wb25lbnRzLiIpCisgICAgICAgICAgICByZXR1cm5fdHlwZSA9IHN0cgorICAgIGlmIHJldHVybl90eXBlIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBzdHIgICMgdGVtcGZpbGUgQVBJcyByZXR1cm4gYSBzdHIgYnkgZGVmYXVsdC4KKyAgICByZXR1cm4gcmV0dXJuX3R5cGUKKworCitkZWYgX3Nhbml0aXplX3BhcmFtcyhwcmVmaXgsIHN1ZmZpeCwgZGlyKToKKyAgICAiIiJDb21tb24gcGFyYW1ldGVyIHByb2Nlc3NpbmcgZm9yIG1vc3QgQVBJcyBpbiB0aGlzIG1vZHVsZS4iIiIKKyAgICBvdXRwdXRfdHlwZSA9IF9pbmZlcl9yZXR1cm5fdHlwZShwcmVmaXgsIHN1ZmZpeCwgZGlyKQorICAgIGlmIHN1ZmZpeCBpcyBOb25lOgorICAgICAgICBzdWZmaXggPSBvdXRwdXRfdHlwZSgpCisgICAgaWYgcHJlZml4IGlzIE5vbmU6CisgICAgICAgIGlmIG91dHB1dF90eXBlIGlzIHN0cjoKKyAgICAgICAgICAgIHByZWZpeCA9IHRlbXBsYXRlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmVmaXggPSBfb3MuZnNlbmNvZGUodGVtcGxhdGUpCisgICAgaWYgZGlyIGlzIE5vbmU6CisgICAgICAgIGlmIG91dHB1dF90eXBlIGlzIHN0cjoKKyAgICAgICAgICAgIGRpciA9IGdldHRlbXBkaXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGlyID0gZ2V0dGVtcGRpcmIoKQorICAgIHJldHVybiBwcmVmaXgsIHN1ZmZpeCwgZGlyLCBvdXRwdXRfdHlwZQorCisKIGNsYXNzIF9SYW5kb21OYW1lU2VxdWVuY2U6CiAgICAgIiIiQW4gaW5zdGFuY2Ugb2YgX1JhbmRvbU5hbWVTZXF1ZW5jZSBnZW5lcmF0ZXMgYW4gZW5kbGVzcwogICAgIHNlcXVlbmNlIG9mIHVucHJlZGljdGFibGUgc3RyaW5ncyB3aGljaCBjYW4gc2FmZWx5IGJlIGluY29ycG9yYXRlZApAQCAtMTk1LDE3ICsyNDYsMTggQEAKICAgICByZXR1cm4gX25hbWVfc2VxdWVuY2UKIAogCi1kZWYgX21rc3RlbXBfaW5uZXIoZGlyLCBwcmUsIHN1ZiwgZmxhZ3MpOgorZGVmIF9ta3N0ZW1wX2lubmVyKGRpciwgcHJlLCBzdWYsIGZsYWdzLCBvdXRwdXRfdHlwZSk6CiAgICAgIiIiQ29kZSBjb21tb24gdG8gbWtzdGVtcCwgVGVtcG9yYXJ5RmlsZSwgYW5kIE5hbWVkVGVtcG9yYXJ5RmlsZS4iIiIKIAogICAgIG5hbWVzID0gX2dldF9jYW5kaWRhdGVfbmFtZXMoKQorICAgIGlmIG91dHB1dF90eXBlIGlzIGJ5dGVzOgorICAgICAgICBuYW1lcyA9IG1hcChfb3MuZnNlbmNvZGUsIG5hbWVzKQogCiAgICAgZm9yIHNlcSBpbiByYW5nZShUTVBfTUFYKToKICAgICAgICAgbmFtZSA9IG5leHQobmFtZXMpCiAgICAgICAgIGZpbGUgPSBfb3MucGF0aC5qb2luKGRpciwgcHJlICsgbmFtZSArIHN1ZikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZmQgPSBfb3Mub3BlbihmaWxlLCBmbGFncywgMG82MDApCi0gICAgICAgICAgICByZXR1cm4gKGZkLCBfb3MucGF0aC5hYnNwYXRoKGZpbGUpKQogICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgogICAgICAgICAgICAgY29udGludWUgICAgIyB0cnkgYWdhaW4KICAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvcjoKQEAgLTIxNiw2ICsyNjgsNyBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHJldHVybiAoZmQsIF9vcy5wYXRoLmFic3BhdGgoZmlsZSkpCiAKICAgICByYWlzZSBGaWxlRXhpc3RzRXJyb3IoX2Vycm5vLkVFWElTVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHVzYWJsZSB0ZW1wb3JhcnkgZmlsZSBuYW1lIGZvdW5kIikKQEAgLTIyNCw5ICsyNzcsMTMgQEAKICMgVXNlciB2aXNpYmxlIGludGVyZmFjZXMuCiAKIGRlZiBnZXR0ZW1wcHJlZml4KCk6Ci0gICAgIiIiQWNjZXNzb3IgZm9yIHRlbXBkaXIudGVtcGxhdGUuIiIiCisgICAgIiIiVGhlIGRlZmF1bHQgcHJlZml4IGZvciB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMuIiIiCiAgICAgcmV0dXJuIHRlbXBsYXRlCiAKK2RlZiBnZXR0ZW1wcHJlZml4YigpOgorICAgICIiIlRoZSBkZWZhdWx0IHByZWZpeCBmb3IgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzIGFzIGJ5dGVzLiIiIgorICAgIHJldHVybiBfb3MuZnNlbmNvZGUoZ2V0dGVtcHByZWZpeCgpKQorCiB0ZW1wZGlyID0gTm9uZQogCiBkZWYgZ2V0dGVtcGRpcigpOgpAQCAtMjQxLDI0ICsyOTgsMzIgQEAKICAgICAgICAgICAgIF9vbmNlX2xvY2sucmVsZWFzZSgpCiAgICAgcmV0dXJuIHRlbXBkaXIKIAotZGVmIG1rc3RlbXAoc3VmZml4PSIiLCBwcmVmaXg9dGVtcGxhdGUsIGRpcj1Ob25lLCB0ZXh0PUZhbHNlKToKK2RlZiBnZXR0ZW1wZGlyYigpOgorICAgICIiIkEgYnl0ZXMgdmVyc2lvbiBvZiB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkuIiIiCisgICAgcmV0dXJuIF9vcy5mc2VuY29kZShnZXR0ZW1wZGlyKCkpCisKK2RlZiBta3N0ZW1wKHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwgZGlyPU5vbmUsIHRleHQ9RmFsc2UpOgogICAgICIiIlVzZXItY2FsbGFibGUgZnVuY3Rpb24gdG8gY3JlYXRlIGFuZCByZXR1cm4gYSB1bmlxdWUgdGVtcG9yYXJ5CiAgICAgZmlsZS4gIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBwYWlyIChmZCwgbmFtZSkgd2hlcmUgZmQgaXMgdGhlCiAgICAgZmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IG9zLm9wZW4sIGFuZCBuYW1lIGlzIHRoZSBmaWxlbmFtZS4KIAotICAgIElmICdzdWZmaXgnIGlzIHNwZWNpZmllZCwgdGhlIGZpbGUgbmFtZSB3aWxsIGVuZCB3aXRoIHRoYXQgc3VmZml4LAorICAgIElmICdzdWZmaXgnIGlzIG5vdCBOb25lLCB0aGUgZmlsZSBuYW1lIHdpbGwgZW5kIHdpdGggdGhhdCBzdWZmaXgsCiAgICAgb3RoZXJ3aXNlIHRoZXJlIHdpbGwgYmUgbm8gc3VmZml4LgogCi0gICAgSWYgJ3ByZWZpeCcgaXMgc3BlY2lmaWVkLCB0aGUgZmlsZSBuYW1lIHdpbGwgYmVnaW4gd2l0aCB0aGF0IHByZWZpeCwKKyAgICBJZiAncHJlZml4JyBpcyBub3QgTm9uZSwgdGhlIGZpbGUgbmFtZSB3aWxsIGJlZ2luIHdpdGggdGhhdCBwcmVmaXgsCiAgICAgb3RoZXJ3aXNlIGEgZGVmYXVsdCBwcmVmaXggaXMgdXNlZC4KIAotICAgIElmICdkaXInIGlzIHNwZWNpZmllZCwgdGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGluIHRoYXQgZGlyZWN0b3J5LAorICAgIElmICdkaXInIGlzIG5vdCBOb25lLCB0aGUgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhhdCBkaXJlY3RvcnksCiAgICAgb3RoZXJ3aXNlIGEgZGVmYXVsdCBkaXJlY3RvcnkgaXMgdXNlZC4KIAogICAgIElmICd0ZXh0JyBpcyBzcGVjaWZpZWQgYW5kIHRydWUsIHRoZSBmaWxlIGlzIG9wZW5lZCBpbiB0ZXh0CiAgICAgbW9kZS4gIEVsc2UgKHRoZSBkZWZhdWx0KSB0aGUgZmlsZSBpcyBvcGVuZWQgaW4gYmluYXJ5IG1vZGUuICBPbgogICAgIHNvbWUgb3BlcmF0aW5nIHN5c3RlbXMsIHRoaXMgbWFrZXMgbm8gZGlmZmVyZW5jZS4KIAorICAgIElmIGFueSBvZiAnc3VmZml4JywgJ3ByZWZpeCcgYW5kICdkaXInIGFyZSBub3QgTm9uZSwgdGhleSBtdXN0IGJlIHRoZQorICAgIHNhbWUgdHlwZS4gIElmIHRoZXkgYXJlIGJ5dGVzLCB0aGUgcmV0dXJuZWQgbmFtZSB3aWxsIGJlIGJ5dGVzOyBzdHIKKyAgICBvdGhlcndpc2UuCisKICAgICBUaGUgZmlsZSBpcyByZWFkYWJsZSBhbmQgd3JpdGFibGUgb25seSBieSB0aGUgY3JlYXRpbmcgdXNlciBJRC4KICAgICBJZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSB1c2VzIHBlcm1pc3Npb24gYml0cyB0byBpbmRpY2F0ZSB3aGV0aGVyIGEKICAgICBmaWxlIGlzIGV4ZWN1dGFibGUsIHRoZSBmaWxlIGlzIGV4ZWN1dGFibGUgYnkgbm8gb25lLiBUaGUgZmlsZQpAQCAtMjY3LDE4ICszMzIsMTcgQEAKICAgICBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZSBmaWxlIHdoZW4gZG9uZSB3aXRoIGl0LgogICAgICIiIgogCi0gICAgaWYgZGlyIGlzIE5vbmU6Ci0gICAgICAgIGRpciA9IGdldHRlbXBkaXIoKQorICAgIHByZWZpeCwgc3VmZml4LCBkaXIsIG91dHB1dF90eXBlID0gX3Nhbml0aXplX3BhcmFtcyhwcmVmaXgsIHN1ZmZpeCwgZGlyKQogCiAgICAgaWYgdGV4dDoKICAgICAgICAgZmxhZ3MgPSBfdGV4dF9vcGVuZmxhZ3MKICAgICBlbHNlOgogICAgICAgICBmbGFncyA9IF9iaW5fb3BlbmZsYWdzCiAKLSAgICByZXR1cm4gX21rc3RlbXBfaW5uZXIoZGlyLCBwcmVmaXgsIHN1ZmZpeCwgZmxhZ3MpCisgICAgcmV0dXJuIF9ta3N0ZW1wX2lubmVyKGRpciwgcHJlZml4LCBzdWZmaXgsIGZsYWdzLCBvdXRwdXRfdHlwZSkKIAogCi1kZWYgbWtkdGVtcChzdWZmaXg9IiIsIHByZWZpeD10ZW1wbGF0ZSwgZGlyPU5vbmUpOgorZGVmIG1rZHRlbXAoc3VmZml4PU5vbmUsIHByZWZpeD1Ob25lLCBkaXI9Tm9uZSk6CiAgICAgIiIiVXNlci1jYWxsYWJsZSBmdW5jdGlvbiB0byBjcmVhdGUgYW5kIHJldHVybiBhIHVuaXF1ZSB0ZW1wb3JhcnkKICAgICBkaXJlY3RvcnkuICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZGlyZWN0b3J5LgogCkBAIC0yOTEsMTcgKzM1NSwxNyBAQAogICAgIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgdGhlIGRpcmVjdG9yeSB3aGVuIGRvbmUgd2l0aCBpdC4KICAgICAiIiIKIAotICAgIGlmIGRpciBpcyBOb25lOgotICAgICAgICBkaXIgPSBnZXR0ZW1wZGlyKCkKKyAgICBwcmVmaXgsIHN1ZmZpeCwgZGlyLCBvdXRwdXRfdHlwZSA9IF9zYW5pdGl6ZV9wYXJhbXMocHJlZml4LCBzdWZmaXgsIGRpcikKIAogICAgIG5hbWVzID0gX2dldF9jYW5kaWRhdGVfbmFtZXMoKQorICAgIGlmIG91dHB1dF90eXBlIGlzIGJ5dGVzOgorICAgICAgICBuYW1lcyA9IG1hcChfb3MuZnNlbmNvZGUsIG5hbWVzKQogCiAgICAgZm9yIHNlcSBpbiByYW5nZShUTVBfTUFYKToKICAgICAgICAgbmFtZSA9IG5leHQobmFtZXMpCiAgICAgICAgIGZpbGUgPSBfb3MucGF0aC5qb2luKGRpciwgcHJlZml4ICsgbmFtZSArIHN1ZmZpeCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgX29zLm1rZGlyKGZpbGUsIDBvNzAwKQotICAgICAgICAgICAgcmV0dXJuIGZpbGUKICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKICAgICAgICAgICAgIGNvbnRpbnVlICAgICMgdHJ5IGFnYWluCiAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CkBAIC0zMTIsNiArMzc2LDcgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICByZXR1cm4gZmlsZQogCiAgICAgcmFpc2UgRmlsZUV4aXN0c0Vycm9yKF9lcnJuby5FRVhJU1QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyB1c2FibGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBuYW1lIGZvdW5kIikKQEAgLTMyMCwxMSArMzg1LDEyIEBACiAgICAgIiIiVXNlci1jYWxsYWJsZSBmdW5jdGlvbiB0byByZXR1cm4gYSB1bmlxdWUgdGVtcG9yYXJ5IGZpbGUgbmFtZS4gIFRoZQogICAgIGZpbGUgaXMgbm90IGNyZWF0ZWQuCiAKLSAgICBBcmd1bWVudHMgYXJlIGFzIGZvciBta3N0ZW1wLCBleGNlcHQgdGhhdCB0aGUgJ3RleHQnIGFyZ3VtZW50IGlzCi0gICAgbm90IGFjY2VwdGVkLgorICAgIEFyZ3VtZW50cyBhcmUgc2ltaWxhciB0byBta3N0ZW1wLCBleGNlcHQgdGhhdCB0aGUgJ3RleHQnIGFyZ3VtZW50IGlzCisgICAgbm90IGFjY2VwdGVkLCBhbmQgc3VmZml4PU5vbmUsIHByZWZpeD1Ob25lIGFuZCBieXRlcyBmaWxlIG5hbWVzIGFyZSBub3QKKyAgICBzdXBwb3J0ZWQuCiAKLSAgICBUaGlzIGZ1bmN0aW9uIGlzIHVuc2FmZSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLiAgVGhlIGZpbGUgbmFtZQotICAgIHJlZmVycyB0byBhIGZpbGUgdGhhdCBkaWQgbm90IGV4aXN0IGF0IHNvbWUgcG9pbnQsIGJ1dCBieSB0aGUgdGltZQorICAgIFRISVMgRlVOQ1RJT04gSVMgVU5TQUZFIEFORCBTSE9VTEQgTk9UIEJFIFVTRUQuICBUaGUgZmlsZSBuYW1lIG1heQorICAgIHJlZmVyIHRvIGEgZmlsZSB0aGF0IGRpZCBub3QgZXhpc3QgYXQgc29tZSBwb2ludCwgYnV0IGJ5IHRoZSB0aW1lCiAgICAgeW91IGdldCBhcm91bmQgdG8gY3JlYXRpbmcgaXQsIHNvbWVvbmUgZWxzZSBtYXkgaGF2ZSBiZWF0ZW4geW91IHRvCiAgICAgdGhlIHB1bmNoLgogICAgICIiIgpAQCAtNDU0LDcgKzUyMCw3IEBACiAKIAogZGVmIE5hbWVkVGVtcG9yYXJ5RmlsZShtb2RlPSd3K2InLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmU9Tm9uZSwgc3VmZml4PSIiLCBwcmVmaXg9dGVtcGxhdGUsCisgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmU9Tm9uZSwgc3VmZml4PU5vbmUsIHByZWZpeD1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICBkaXI9Tm9uZSwgZGVsZXRlPVRydWUpOgogICAgICIiIkNyZWF0ZSBhbmQgcmV0dXJuIGEgdGVtcG9yYXJ5IGZpbGUuCiAgICAgQXJndW1lbnRzOgpAQCAtNDcxLDggKzUzNyw3IEBACiAgICAgd2hlbiBpdCBpcyBjbG9zZWQgdW5sZXNzIHRoZSAnZGVsZXRlJyBhcmd1bWVudCBpcyBzZXQgdG8gRmFsc2UuCiAgICAgIiIiCiAKLSAgICBpZiBkaXIgaXMgTm9uZToKLSAgICAgICAgZGlyID0gZ2V0dGVtcGRpcigpCisgICAgcHJlZml4LCBzdWZmaXgsIGRpciwgb3V0cHV0X3R5cGUgPSBfc2FuaXRpemVfcGFyYW1zKHByZWZpeCwgc3VmZml4LCBkaXIpCiAKICAgICBmbGFncyA9IF9iaW5fb3BlbmZsYWdzCiAKQEAgLTQ4MSw3ICs1NDYsNyBAQAogICAgIGlmIF9vcy5uYW1lID09ICdudCcgYW5kIGRlbGV0ZToKICAgICAgICAgZmxhZ3MgfD0gX29zLk9fVEVNUE9SQVJZCiAKLSAgICAoZmQsIG5hbWUpID0gX21rc3RlbXBfaW5uZXIoZGlyLCBwcmVmaXgsIHN1ZmZpeCwgZmxhZ3MpCisgICAgKGZkLCBuYW1lKSA9IF9ta3N0ZW1wX2lubmVyKGRpciwgcHJlZml4LCBzdWZmaXgsIGZsYWdzLCBvdXRwdXRfdHlwZSkKICAgICB0cnk6CiAgICAgICAgIGZpbGUgPSBfaW8ub3BlbihmZCwgbW9kZSwgYnVmZmVyaW5nPWJ1ZmZlcmluZywKICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmU9bmV3bGluZSwgZW5jb2Rpbmc9ZW5jb2RpbmcpCkBAIC00OTcsOCArNTYyLDEzIEBACiAgICAgVGVtcG9yYXJ5RmlsZSA9IE5hbWVkVGVtcG9yYXJ5RmlsZQogCiBlbHNlOgorICAgICMgSXMgdGhlIE9fVE1QRklMRSBmbGFnIGF2YWlsYWJsZSBhbmQgZG9lcyBpdCB3b3JrPworICAgICMgVGhlIGZsYWcgaXMgc2V0IHRvIEZhbHNlIGlmIG9zLm9wZW4oZGlyLCBvcy5PX1RNUEZJTEUpIHJhaXNlcyBhbgorICAgICMgSXNBRGlyZWN0b3J5RXJyb3IgZXhjZXB0aW9uCisgICAgX09fVE1QRklMRV9XT1JLUyA9IGhhc2F0dHIoX29zLCAnT19UTVBGSUxFJykKKwogICAgIGRlZiBUZW1wb3JhcnlGaWxlKG1vZGU9J3crYicsIGJ1ZmZlcmluZz0tMSwgZW5jb2Rpbmc9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lPU5vbmUsIHN1ZmZpeD0iIiwgcHJlZml4PXRlbXBsYXRlLAorICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmU9Tm9uZSwgc3VmZml4PU5vbmUsIHByZWZpeD1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgIGRpcj1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlIGFuZCByZXR1cm4gYSB0ZW1wb3JhcnkgZmlsZS4KICAgICAgICAgQXJndW1lbnRzOgpAQCAtNTEyLDEzICs1ODIsNDEgQEAKICAgICAgICAgUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBhIGZpbGUtbGlrZSBpbnRlcmZhY2UuICBUaGUgZmlsZSBoYXMgbm8KICAgICAgICAgbmFtZSwgYW5kIHdpbGwgY2Vhc2UgdG8gZXhpc3Qgd2hlbiBpdCBpcyBjbG9zZWQuCiAgICAgICAgICIiIgorICAgICAgICBnbG9iYWwgX09fVE1QRklMRV9XT1JLUwogCi0gICAgICAgIGlmIGRpciBpcyBOb25lOgotICAgICAgICAgICAgZGlyID0gZ2V0dGVtcGRpcigpCisgICAgICAgIHByZWZpeCwgc3VmZml4LCBkaXIsIG91dHB1dF90eXBlID0gX3Nhbml0aXplX3BhcmFtcyhwcmVmaXgsIHN1ZmZpeCwgZGlyKQogCiAgICAgICAgIGZsYWdzID0gX2Jpbl9vcGVuZmxhZ3MKKyAgICAgICAgaWYgX09fVE1QRklMRV9XT1JLUzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmbGFnczIgPSAoZmxhZ3MgfCBfb3MuT19UTVBGSUxFKSAmIH5fb3MuT19DUkVBVAorICAgICAgICAgICAgICAgIGZkID0gX29zLm9wZW4oZGlyLCBmbGFnczIsIDBvNjAwKQorICAgICAgICAgICAgZXhjZXB0IElzQURpcmVjdG9yeUVycm9yOgorICAgICAgICAgICAgICAgICMgTGludXgga2VybmVsIG9sZGVyIHRoYW4gMy4xMSBpZ25vcmVzIHRoZSBPX1RNUEZJTEUgZmxhZzoKKyAgICAgICAgICAgICAgICAjIE9fVE1QRklMRSBpcyByZWFkIGFzIE9fRElSRUNUT1JZLiBUcnlpbmcgdG8gb3BlbiBhIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICMgd2l0aCBPX1JEV1J8T19ESVJFQ1RPUlkgZmFpbHMgd2l0aCBJc0FEaXJlY3RvcnlFcnJvciwgYQorICAgICAgICAgICAgICAgICMgZGlyZWN0b3J5IGNhbm5vdCBiZSBvcGVuIHRvIHdyaXRlLiBTZXQgZmxhZyB0byBGYWxzZSB0byBub3QKKyAgICAgICAgICAgICAgICAjIHRyeSBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBfT19UTVBGSUxFX1dPUktTID0gRmFsc2UKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICMgVGhlIGZpbGVzeXN0ZW0gb2YgdGhlIGRpcmVjdG9yeSBkb2VzIG5vdCBzdXBwb3J0IE9fVE1QRklMRS4KKyAgICAgICAgICAgICAgICAjIEZvciBleGFtcGxlLCBPU0Vycm9yKDk1LCAnT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQnKS4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBPbiBMaW51eCBrZXJuZWwgb2xkZXIgdGhhbiAzLjExLCB0cnlpbmcgdG8gb3BlbiBhIHJlZ3VsYXIKKyAgICAgICAgICAgICAgICAjIGZpbGUgKG9yIGEgc3ltYm9saWMgbGluayB0byBhIHJlZ3VsYXIgZmlsZSkgd2l0aCBPX1RNUEZJTEUKKyAgICAgICAgICAgICAgICAjIGZhaWxzIHdpdGggTm90QURpcmVjdG9yeUVycm9yLCBiZWNhdXNlIE9fVE1QRklMRSBpcyByZWFkIGFzCisgICAgICAgICAgICAgICAgIyBPX0RJUkVDVE9SWS4KKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9pby5vcGVuKGZkLCBtb2RlLCBidWZmZXJpbmc9YnVmZmVyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZT1uZXdsaW5lLCBlbmNvZGluZz1lbmNvZGluZykKKyAgICAgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgICAgIF9vcy5jbG9zZShmZCkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICMgRmFsbGJhY2sgdG8gX21rc3RlbXBfaW5uZXIoKS4KIAotICAgICAgICAoZmQsIG5hbWUpID0gX21rc3RlbXBfaW5uZXIoZGlyLCBwcmVmaXgsIHN1ZmZpeCwgZmxhZ3MpCisgICAgICAgIChmZCwgbmFtZSkgPSBfbWtzdGVtcF9pbm5lcihkaXIsIHByZWZpeCwgc3VmZml4LCBmbGFncywgb3V0cHV0X3R5cGUpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIF9vcy51bmxpbmsobmFtZSkKICAgICAgICAgICAgIHJldHVybiBfaW8ub3BlbihmZCwgbW9kZSwgYnVmZmVyaW5nPWJ1ZmZlcmluZywKQEAgLTUzNiw3ICs2MzQsNyBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1heF9zaXplPTAsIG1vZGU9J3crYicsIGJ1ZmZlcmluZz0tMSwKICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgbmV3bGluZT1Ob25lLAotICAgICAgICAgICAgICAgICBzdWZmaXg9IiIsIHByZWZpeD10ZW1wbGF0ZSwgZGlyPU5vbmUpOgorICAgICAgICAgICAgICAgICBzdWZmaXg9Tm9uZSwgcHJlZml4PU5vbmUsIGRpcj1Ob25lKToKICAgICAgICAgaWYgJ2InIGluIG1vZGU6CiAgICAgICAgICAgICBzZWxmLl9maWxlID0gX2lvLkJ5dGVzSU8oKQogICAgICAgICBlbHNlOgpAQCAtNjg3LDcgKzc4NSw3IEBACiAgICAgaW4gaXQgYXJlIHJlbW92ZWQuCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3VmZml4PSIiLCBwcmVmaXg9dGVtcGxhdGUsIGRpcj1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3VmZml4PU5vbmUsIHByZWZpeD1Ob25lLCBkaXI9Tm9uZSk6CiAgICAgICAgIHNlbGYubmFtZSA9IG1rZHRlbXAoc3VmZml4LCBwcmVmaXgsIGRpcikKICAgICAgICAgc2VsZi5fZmluYWxpemVyID0gX3dlYWtyZWYuZmluYWxpemUoCiAgICAgICAgICAgICBzZWxmLCBzZWxmLl9jbGVhbnVwLCBzZWxmLm5hbWUsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9fdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkgYi9MaWIvdGVzdC9fdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkKaW5kZXggMjA0ZDg5NC4uZTkxMjBhYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CisrKyBiL0xpYi90ZXN0L190ZXN0X211bHRpcHJvY2Vzc2luZy5weQpAQCAtMTksNyArMTksNyBAQAogaW1wb3J0IHN0cnVjdAogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgdGVzdC5zdXBwb3J0Ci1pbXBvcnQgdGVzdC5zY3JpcHRfaGVscGVyCitpbXBvcnQgdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIKIAogCiAjIFNraXAgdGVzdHMgaWYgX211bHRpcHJvY2Vzc2luZyB3YXNuJ3QgYnVpbHQuCkBAIC0yNjI0LDcgKzI2MjQsNyBAQAogCiAgICAgICAgIGwgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgbC5iaW5kKCh0ZXN0LnN1cHBvcnQuSE9TVCwgMCkpCi0gICAgICAgIGwubGlzdGVuKDEpCisgICAgICAgIGwubGlzdGVuKCkKICAgICAgICAgY29ubi5zZW5kKGwuZ2V0c29ja25hbWUoKSkKICAgICAgICAgbmV3X2Nvbm4sIGFkZHIgPSBsLmFjY2VwdCgpCiAgICAgICAgIGNvbm4uc2VuZChuZXdfY29ubikKQEAgLTMyNzEsNyArMzI3MSw3IEBACiAgICAgICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IHdhaXQKICAgICAgICAgbCA9IHNvY2tldC5zb2NrZXQoKQogICAgICAgICBsLmJpbmQoKHRlc3Quc3VwcG9ydC5IT1NULCAwKSkKLSAgICAgICAgbC5saXN0ZW4oNCkKKyAgICAgICAgbC5saXN0ZW4oKQogICAgICAgICBhZGRyID0gbC5nZXRzb2NrbmFtZSgpCiAgICAgICAgIHJlYWRlcnMgPSBbXQogICAgICAgICBwcm9jcyA9IFtdCkBAIC0zNDgzLDExICszNDgzLDExIEBACiAgICAgICAgIHNtID0gbXVsdGlwcm9jZXNzaW5nLmdldF9zdGFydF9tZXRob2QoKQogICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICdtcF9mb3JrX2JvbWIucHknKQogICAgICAgICBpZiBzbSAhPSAnZm9yayc6Ci0gICAgICAgICAgICByYywgb3V0LCBlcnIgPSB0ZXN0LnNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKG5hbWUsIHNtKQorICAgICAgICAgICAgcmMsIG91dCwgZXJyID0gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKG5hbWUsIHNtKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsIGInJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidSdW50aW1lRXJyb3InLCBlcnIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYywgb3V0LCBlcnIgPSB0ZXN0LnNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vayhuYW1lLCBzbSkKKyAgICAgICAgICAgIHJjLCBvdXQsIGVyciA9IHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2sobmFtZSwgc20pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dC5yc3RyaXAoKSwgYicxMjMnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIsIGInJykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMS5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI4NWUyOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzEucHkKQEAgLTAsMCArMSwyIEBACithc3luYyBkZWYgZm9vKGE9YXdhaXQgc29tZXRoaW5nKCkpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzIucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiODVlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMyLnB5CkBAIC0wLDAgKzEsMiBAQAorYXN5bmMgZGVmIGZvbyhhPWF3YWl0IHNvbWV0aGluZygpKToKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMzLnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGUxYmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMy5weQpAQCAtMCwwICsxLDIgQEAKK2FzeW5jIGRlZiBmb28oKToKKyAgICBbaSBhc3luYyBmb3IgaSBpbiBlbHNdCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM0LnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDMzYjI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNC5weQpAQCAtMCwwICsxLDIgQEAKK2FzeW5jIGRlZiBmb28oKToKKyAgICBhd2FpdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNS5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQxOWFmNgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzUucHkKQEAgLTAsMCArMSwyIEBACitkZWYgZm9vKCk6CisgICAgYXdhaXQgc29tZXRoaW5nKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzYucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM2LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiMGEyM2QKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM2LnB5CkBAIC0wLDAgKzEsMiBAQAorYXN5bmMgZGVmIGZvbygpOgorICAgIHlpZWxkCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM3LnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWU0YmY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNy5weQpAQCAtMCwwICsxLDIgQEAKK2FzeW5jIGRlZiBmb28oKToKKyAgICB5aWVsZCBmcm9tIFtdCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM4LnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jOC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzYzNmY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jOC5weQpAQCAtMCwwICsxLDIgQEAKK2FzeW5jIGRlZiBmb28oKToKKyAgICBhd2FpdCBhd2FpdCBmdXQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5IGIvTGliL3Rlc3QvZGF0ZXRpbWV0ZXN0ZXIucHkKaW5kZXggMjg5YjBjYS4uNjM2NWM2MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvZGF0ZXRpbWV0ZXN0ZXIucHkKKysrIGIvTGliL3Rlc3QvZGF0ZXRpbWV0ZXN0ZXIucHkKQEAgLTQsNiArNCw3IEBACiAiIiIKIAogaW1wb3J0IGNvcHkKK2ltcG9ydCBkZWNpbWFsCiBpbXBvcnQgc3lzCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgcmFuZG9tCkBAIC01MSw2ICs1MiwxNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGV0aW1lLk1JTllFQVIsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0ZXRpbWUuTUFYWUVBUiwgOTk5OSkKIAorICAgIGRlZiB0ZXN0X25hbWVfY2xlYW51cChzZWxmKToKKyAgICAgICAgaWYgJ19GYXN0JyBub3QgaW4gc3RyKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGRhdGV0aW1lID0gZGF0ZXRpbWVfbW9kdWxlCisgICAgICAgIG5hbWVzID0gc2V0KG5hbWUgZm9yIG5hbWUgaW4gZGlyKGRhdGV0aW1lKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgbmFtZS5zdGFydHN3aXRoKCdfXycpIGFuZCBub3QgbmFtZS5lbmRzd2l0aCgnX18nKSkKKyAgICAgICAgYWxsb3dlZCA9IHNldChbJ01BWFlFQVInLCAnTUlOWUVBUicsICdkYXRlJywgJ2RhdGV0aW1lJywKKyAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGV0aW1lX0NBUEknLCAndGltZScsICd0aW1lZGVsdGEnLCAndGltZXpvbmUnLAorICAgICAgICAgICAgICAgICAgICAgICAndHppbmZvJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZXMgLSBhbGxvd2VkLCBzZXQoW10pKQorCiAgICAgZGVmIHRlc3RfZGl2aWRlX2FuZF9yb3VuZChzZWxmKToKICAgICAgICAgaWYgJ19GYXN0JyBpbiBzdHIoc2VsZik6CiAgICAgICAgICAgICByZXR1cm4KQEAgLTEyMjMsMTEgKzEyMzUsMTMgQEAKICAgICAgICAgI2NoZWNrIHRoYXQgdGhpcyBzdGFuZGFyZCBleHRlbnNpb24gd29ya3MKICAgICAgICAgdC5zdHJmdGltZSgiJWYiKQogCi0KICAgICBkZWYgdGVzdF9mb3JtYXQoc2VsZik6CiAgICAgICAgIGR0ID0gc2VsZi50aGVjbGFzcygyMDA3LCA5LCAxMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5fX2Zvcm1hdF9fKCcnKSwgc3RyKGR0KSkKIAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnXm11c3QgYmUgc3RyLCBub3QgaW50JCcpOgorICAgICAgICAgICAgZHQuX19mb3JtYXRfXygxMjMpCisKICAgICAgICAgIyBjaGVjayB0aGF0IGEgZGVyaXZlZCBjbGFzcydzIF9fc3RyX18oKSBnZXRzIGNhbGxlZAogICAgICAgICBjbGFzcyBBKHNlbGYudGhlY2xhc3MpOgogICAgICAgICAgICAgZGVmIF9fc3RyX18oc2VsZik6CkBAIC0xMzc5LDggKzEzOTMsNiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBpc2luc3RhbmNlKG90aGVyLCBMYXJnZXJUaGFuQW55dGhpbmcpCiAgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShvdGhlciwgTGFyZ2VyVGhhbkFueXRoaW5nKQotICAgICAgICAgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5vdCBpc2luc3RhbmNlKG90aGVyLCBMYXJnZXJUaGFuQW55dGhpbmcpCiAgICAgICAgICAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgICAgICByZXR1cm4gbm90IGlzaW5zdGFuY2Uob3RoZXIsIExhcmdlclRoYW5Bbnl0aGluZykKICAgICAgICAgICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIpOgpAQCAtMTQ4Myw5ICsxNDk1LDEwIEBACiAgICAgICAgIGZvciBtb250aF9ieXRlIGluIGInOScsIGInXDAnLCBiJ1xyJywgYidceGZmJzoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50aGVjbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVs6Ml0gKyBtb250aF9ieXRlICsgYmFzZVszOl0pCi0gICAgICAgICMgR29vZCBieXRlcywgYnV0IGJhZCB0emluZm86Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50aGVjbGFzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMoWzFdICogbGVuKGJhc2UpKSwgJ0VTVCcpCisgICAgICAgIGlmIGlzc3ViY2xhc3Moc2VsZi50aGVjbGFzcywgZGF0ZXRpbWUpOgorICAgICAgICAgICAgIyBHb29kIGJ5dGVzLCBidXQgYmFkIHR6aW5mbzoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdeYmFkIHR6aW5mbyBzdGF0ZSBhcmckJyk6CisgICAgICAgICAgICAgICAgc2VsZi50aGVjbGFzcyhieXRlcyhbMV0gKiBsZW4oYmFzZSkpLCAnRVNUJykKIAogICAgICAgICBmb3Igb3JkX2J5dGUgaW4gcmFuZ2UoMSwgMTMpOgogICAgICAgICAgICAgIyBUaGlzIHNob3VsZG4ndCBibG93IHVwIGJlY2F1c2Ugb2YgdGhlIG1vbnRoIGJ5dGUgYWxvbmUuICBJZgpAQCAtMTU2MSw2ICsxNTc0LDkgQEAKICAgICAgICAgZHQgPSBzZWxmLnRoZWNsYXNzKDIwMDcsIDksIDEwLCA0LCA1LCAxLCAxMjMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQuX19mb3JtYXRfXygnJyksIHN0cihkdCkpCiAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ15tdXN0IGJlIHN0ciwgbm90IGludCQnKToKKyAgICAgICAgICAgIGR0Ll9fZm9ybWF0X18oMTIzKQorCiAgICAgICAgICMgY2hlY2sgdGhhdCBhIGRlcml2ZWQgY2xhc3MncyBfX3N0cl9fKCkgZ2V0cyBjYWxsZWQKICAgICAgICAgY2xhc3MgQShzZWxmLnRoZWNsYXNzKToKICAgICAgICAgICAgIGRlZiBfX3N0cl9fKHNlbGYpOgpAQCAtMTk0MCw2ICsxOTU2LDcgQEAKICAgICAgICAgZm9yIGluc2FuZSBpbiAtMWUyMDAsIDFlMjAwOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2VsZi50aGVjbGFzcy51dGNmcm9tdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zYW5lKQorCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIldpbmRvd3MgZG9lc24ndCBhY2NlcHQgbmVnYXRpdmUgdGltZXN0YW1wcyIpCiAgICAgZGVmIHRlc3RfbmVnYXRpdmVfZmxvYXRfZnJvbXRpbWVzdGFtcChzZWxmKToKICAgICAgICAgIyBUaGUgcmVzdWx0IGlzIHR6LWRlcGVuZGVudDsgYXQgbGVhc3QgdGVzdCB0aGF0IHRoaXMgZG9lc24ndApAQCAtMjMxOSw2ICsyMzM2LDkgQEAKICAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMSwgMiwgMywgNCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Ll9fZm9ybWF0X18oJycpLCBzdHIodCkpCiAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ15tdXN0IGJlIHN0ciwgbm90IGludCQnKToKKyAgICAgICAgICAgIHQuX19mb3JtYXRfXygxMjMpCisKICAgICAgICAgIyBjaGVjayB0aGF0IGEgZGVyaXZlZCBjbGFzcydzIF9fc3RyX18oKSBnZXRzIGNhbGxlZAogICAgICAgICBjbGFzcyBBKHNlbGYudGhlY2xhc3MpOgogICAgICAgICAgICAgZGVmIF9fc3RyX18oc2VsZik6CkBAIC0yMzgyLDEzICsyNDAyLDE0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWcsIGRlcml2ZWQpCiAKICAgICBkZWYgdGVzdF9ib29sKHNlbGYpOgorICAgICAgICAjIHRpbWUgaXMgYWx3YXlzIFRydWUuCiAgICAgICAgIGNscyA9IHNlbGYudGhlY2xhc3MKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNscygxKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNscygwLCAxKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNscygwLCAwLCAxKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNscygwLCAwLCAwLCAxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbHMoMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2xzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbHMoMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbHMoKSkKIAogICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CiAgICAgICAgIGNscyA9IHNlbGYudGhlY2xhc3MKQEAgLTI0NDcsNiArMjQ2OCw5IEBACiAgICAgICAgIGZvciBob3VyX2J5dGUgaW4gJyAnLCAnOScsIGNocigyNCksICdceGZmJzoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50aGVjbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG91cl9ieXRlICsgYmFzZVsxOl0pCisgICAgICAgICMgR29vZCBieXRlcywgYnV0IGJhZCB0emluZm86CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdeYmFkIHR6aW5mbyBzdGF0ZSBhcmckJyk6CisgICAgICAgICAgICBzZWxmLnRoZWNsYXNzKGJ5dGVzKFsxXSAqIGxlbihiYXNlKSksICdFU1QnKQogCiAjIEEgbWl4aW4gZm9yIGNsYXNzZXMgd2l0aCBhIHR6aW5mbz0gYXJndW1lbnQuICBTdWJjbGFzc2VzIG11c3QgZGVmaW5lCiAjIHRoZWNsYXNzIGFzIGEgY2xhc3MgYXRyaWJ1dGUsIGFuZCB0aGVjbGFzcygxLCAxLCAxLCB0emluZm89d2hhdGV2ZXIpCkBAIC0yNzA2LDcgKzI3MzAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHQuc3RyZnRpbWUsICIlWiIpCiAKICAgICAgICAgIyBJc3N1ZSAjNjY5NzoKLSAgICAgICAgaWYgJ19GYXN0JyBpbiBzdHIodHlwZShzZWxmKSk6CisgICAgICAgIGlmICdfRmFzdCcgaW4gc3RyKHNlbGYpOgogICAgICAgICAgICAgQmFkdHpuYW1lLnR6ID0gJ1x1ZDgwMCcKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQuc3RyZnRpbWUsICIlWiIpCiAKQEAgLTI3NDEsNyArMjc2NSw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlcml2ZWQudHpuYW1lKCksICdjb29raWUnKQogCiAgICAgZGVmIHRlc3RfbW9yZV9ib29sKHNlbGYpOgotICAgICAgICAjIFRlc3QgY2FzZXMgd2l0aCBub24tTm9uZSB0emluZm8uCisgICAgICAgICMgdGltZSBpcyBhbHdheXMgVHJ1ZS4KICAgICAgICAgY2xzID0gc2VsZi50aGVjbGFzcwogCiAgICAgICAgIHQgPSBjbHMoMCwgdHppbmZvPUZpeGVkT2Zmc2V0KC0zMDAsICIiKSkKQEAgLTI3NTEsMjIgKzI3NzUsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQpCiAKICAgICAgICAgdCA9IGNscyg1LCB0emluZm89Rml4ZWRPZmZzZXQoMzAwLCAiIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodCkKLQotICAgICAgICB0ID0gY2xzKDIzLCA1OSwgdHppbmZvPUZpeGVkT2Zmc2V0KDIzKjYwICsgNTksICIiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0KQotCi0gICAgICAgICMgTW9zdGx5IGVuc3VyaW5nIHRoaXMgZG9lc24ndCBvdmVyZmxvdyBpbnRlcm5hbGx5LgotICAgICAgICB0ID0gY2xzKDAsIHR6aW5mbz1GaXhlZE9mZnNldCgyMyo2MCArIDU5LCAiIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0KQogCi0gICAgICAgICMgQnV0IHRoaXMgc2hvdWxkIHlpZWxkIGEgdmFsdWUgZXJyb3IgLS0gdGhlIHV0Y29mZnNldCBpcyBib2d1cy4KLSAgICAgICAgdCA9IGNscygwLCB0emluZm89Rml4ZWRPZmZzZXQoMjQqNjAsICIiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiBib29sKHQpKQotCi0gICAgICAgICMgTGlrZXdpc2UuCi0gICAgICAgIHQgPSBjbHMoMCwgdHppbmZvPUZpeGVkT2Zmc2V0KC0yNCo2MCwgIiIpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IGJvb2wodCkpCisgICAgICAgIHQgPSBjbHMoMjMsIDU5LCB0emluZm89Rml4ZWRPZmZzZXQoMjMqNjAgKyA1OSwgIiIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodCkKIAogICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CiAgICAgICAgIGNscyA9IHNlbGYudGhlY2xhc3MKQEAgLTM4ODAsOCArMzg5Miw1OSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzX2RhdGV0aW1lLCBkYXRldGltZV9zYykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRldGltZV9zYywgYXNfZGF0ZXRpbWUpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKKyAgICBkZWYgdGVzdF9leHRyYV9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBmb3IgeCBpbiBbZGF0ZS50b2RheSgpLAorICAgICAgICAgICAgICAgICAgdGltZSgpLAorICAgICAgICAgICAgICAgICAgZGF0ZXRpbWUudXRjbm93KCksCisgICAgICAgICAgICAgICAgICB0aW1lZGVsdGEoKSwKKyAgICAgICAgICAgICAgICAgIHR6aW5mbygpLAorICAgICAgICAgICAgICAgICAgdGltZXpvbmUodGltZWRlbHRhKCkpXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgICAgIHguYWJjID0gMQorCisgICAgZGVmIHRlc3RfY2hlY2tfYXJnX3R5cGVzKHNlbGYpOgorICAgICAgICBjbGFzcyBOdW1iZXI6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQorICAgICAgICAgICAgZGVmIF9faW50X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKKworICAgICAgICBmb3IgeHggaW4gW2RlY2ltYWwuRGVjaW1hbCgxMCksCisgICAgICAgICAgICAgICAgICAgZGVjaW1hbC5EZWNpbWFsKCcxMC45JyksCisgICAgICAgICAgICAgICAgICAgTnVtYmVyKDEwKV06CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGV0aW1lKDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZXRpbWUoeHgsIHh4LCB4eCwgeHgsIHh4LCB4eCwgeHgpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdeYW4gaW50ZWdlciBpcyByZXF1aXJlZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcKGdvdCB0eXBlIHN0clwpJCcpOgorICAgICAgICAgICAgZGF0ZXRpbWUoMTAsIDEwLCAnMTAnKQorCisgICAgICAgIGYxMCA9IE51bWJlcigxMC45KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnXl9faW50X18gcmV0dXJuZWQgbm9uLWludCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcKHR5cGUgZmxvYXRcKSQnKToKKyAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgZjEwKQorCisgICAgICAgIGNsYXNzIEZsb2F0KGZsb2F0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgczEwID0gRmxvYXQoMTAuOSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ15pbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkLCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnb3QgZmxvYXQkJyk6CisgICAgICAgICAgICBkYXRldGltZSgxMCwgMTAsIHMxMCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBkYXRldGltZSgxMC4sIDEwLCAxMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZGF0ZXRpbWUoMTAsIDEwLiwgMTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgMTAuKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBkYXRldGltZSgxMCwgMTAsIDEwLCAxMC4pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgMTAsIDEwLCAxMC4pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAuKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBkYXRldGltZSgxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMC4pCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2VpbnRyZGF0YS9laW50cl90ZXN0ZXIucHkgYi9MaWIvdGVzdC9laW50cmRhdGEvZWludHJfdGVzdGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzYzM2ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9laW50cmRhdGEvZWludHJfdGVzdGVyLnB5CkBAIC0wLDAgKzEsNDY5IEBACisiIiIKK1RoaXMgdGVzdCBzdWl0ZSBleGVyY2lzZXMgc29tZSBzeXN0ZW0gY2FsbHMgc3ViamVjdCB0byBpbnRlcnJ1cHRpb24gd2l0aCBFSU5UUiwKK3RvIGNoZWNrIHRoYXQgaXQgaXMgYWN0dWFsbHkgaGFuZGxlZCB0cmFuc3BhcmVudGx5LgorSXQgaXMgaW50ZW5kZWQgdG8gYmUgcnVuIGJ5IHRoZSBtYWluIHRlc3Qgc3VpdGUgd2l0aGluIGEgY2hpbGQgcHJvY2VzcywgdG8KK2Vuc3VyZSB0aGVyZSBpcyBubyBiYWNrZ3JvdW5kIHRocmVhZCBydW5uaW5nIChzbyB0aGF0IHNpZ25hbHMgYXJlIGRlbGl2ZXJlZCB0bwordGhlIGNvcnJlY3QgdGhyZWFkKS4KK1NpZ25hbHMgYXJlIGdlbmVyYXRlZCBpbi1wcm9jZXNzIHVzaW5nIHNldGl0aW1lcihJVElNRVJfUkVBTCksIHdoaWNoIGFsbG93cworc3ViLXNlY29uZCBwZXJpb2RpY2l0eSAoY29udHJhcmlseSB0byBzaWduYWwoKSkuCisiIiIKKworaW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBpbworaW1wb3J0IG9zCitpbXBvcnQgc2VsZWN0CitpbXBvcnQgc2lnbmFsCitpbXBvcnQgc29ja2V0CitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBraWxsX29uX2Vycm9yKHByb2MpOgorICAgICIiIkNvbnRleHQgbWFuYWdlciBraWxsaW5nIHRoZSBzdWJwcm9jZXNzIGlmIGEgUHl0aG9uIGV4Y2VwdGlvbiBpcyByYWlzZWQuIiIiCisgICAgd2l0aCBwcm9jOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB5aWVsZCBwcm9jCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHByb2Mua2lsbCgpCisgICAgICAgICAgICByYWlzZQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAic2V0aXRpbWVyIiksICJyZXF1aXJlcyBzZXRpdGltZXIoKSIpCitjbGFzcyBFSU5UUkJhc2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiIgQmFzZSBjbGFzcyBmb3IgRUlOVFIgdGVzdHMuICIiIgorCisgICAgIyBkZWxheSBmb3IgaW5pdGlhbCBzaWduYWwgZGVsaXZlcnkKKyAgICBzaWduYWxfZGVsYXkgPSAwLjEKKyAgICAjIHNpZ25hbCBkZWxpdmVyeSBwZXJpb2RpY2l0eQorICAgIHNpZ25hbF9wZXJpb2QgPSAwLjEKKyAgICAjIGRlZmF1bHQgc2xlZXAgdGltZSBmb3IgdGVzdHMgLSBzaG91bGQgb2J2aW91c2x5IGhhdmU6CisgICAgIyBzbGVlcF90aW1lID4gc2lnbmFsX3BlcmlvZAorICAgIHNsZWVwX3RpbWUgPSAwLjIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy5vcmlnX2hhbmRsZXIgPSBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBsYW1iZGEgKmFyZ3M6IE5vbmUpCisgICAgICAgIHNpZ25hbC5zZXRpdGltZXIoc2lnbmFsLklUSU1FUl9SRUFMLCBjbHMuc2lnbmFsX2RlbGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5zaWduYWxfcGVyaW9kKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHN0b3BfYWxhcm0oY2xzKToKKyAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzaWduYWwuSVRJTUVSX1JFQUwsIDAsIDApCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMuc3RvcF9hbGFybSgpCisgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGNscy5vcmlnX2hhbmRsZXIpCisKKyAgICBkZWYgc3VicHJvY2VzcyhzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIGNtZF9hcmdzID0gKHN5cy5leGVjdXRhYmxlLCAnLWMnKSArIGFyZ3MKKyAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuUG9wZW4oY21kX2FyZ3MsICoqa3cpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICJzZXRpdGltZXIiKSwgInJlcXVpcmVzIHNldGl0aW1lcigpIikKK2NsYXNzIE9TRUlOVFJUZXN0KEVJTlRSQmFzZVRlc3QpOgorICAgICIiIiBFSU5UUiB0ZXN0cyBmb3IgdGhlIG9zIG1vZHVsZS4gIiIiCisKKyAgICBkZWYgbmV3X3NsZWVwX3Byb2Nlc3Moc2VsZik6CisgICAgICAgIGNvZGUgPSAnaW1wb3J0IHRpbWU7IHRpbWUuc2xlZXAoJXIpJyAlIHNlbGYuc2xlZXBfdGltZQorICAgICAgICByZXR1cm4gc2VsZi5zdWJwcm9jZXNzKGNvZGUpCisKKyAgICBkZWYgX3Rlc3Rfd2FpdF9tdWx0aXBsZShzZWxmLCB3YWl0X2Z1bmMpOgorICAgICAgICBudW0gPSAzCisgICAgICAgIHByb2Nlc3NlcyA9IFtzZWxmLm5ld19zbGVlcF9wcm9jZXNzKCkgZm9yIF8gaW4gcmFuZ2UobnVtKV0KKyAgICAgICAgZm9yIF8gaW4gcmFuZ2UobnVtKToKKyAgICAgICAgICAgIHdhaXRfZnVuYygpCisKKyAgICBkZWYgdGVzdF93YWl0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3dhaXRfbXVsdGlwbGUob3Mud2FpdCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICd3YWl0MycpLCAncmVxdWlyZXMgd2FpdDMoKScpCisgICAgZGVmIHRlc3Rfd2FpdDMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfd2FpdF9tdWx0aXBsZShsYW1iZGE6IG9zLndhaXQzKDApKQorCisgICAgZGVmIF90ZXN0X3dhaXRfc2luZ2xlKHNlbGYsIHdhaXRfZnVuYyk6CisgICAgICAgIHByb2MgPSBzZWxmLm5ld19zbGVlcF9wcm9jZXNzKCkKKyAgICAgICAgd2FpdF9mdW5jKHByb2MucGlkKQorCisgICAgZGVmIHRlc3Rfd2FpdHBpZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF93YWl0X3NpbmdsZShsYW1iZGEgcGlkOiBvcy53YWl0cGlkKHBpZCwgMCkpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnd2FpdDQnKSwgJ3JlcXVpcmVzIHdhaXQ0KCknKQorICAgIGRlZiB0ZXN0X3dhaXQ0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3dhaXRfc2luZ2xlKGxhbWJkYSBwaWQ6IG9zLndhaXQ0KHBpZCwgMCkpCisKKyAgICBkZWYgdGVzdF9yZWFkKHNlbGYpOgorICAgICAgICByZCwgd3IgPSBvcy5waXBlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCByZCkKKyAgICAgICAgIyB3ciBjbG9zZWQgZXhwbGljaXRseSBieSBwYXJlbnQKKworICAgICAgICAjIHRoZSBwYXlsb2FkIGJlbG93IGFyZSBzbWFsbGVyIHRoYW4gUElQRV9CVUYsIGhlbmNlIHRoZSB3cml0ZXMgd2lsbCBiZQorICAgICAgICAjIGF0b21pYworICAgICAgICBkYXRhcyA9IFtiImhlbGxvIiwgYiJ3b3JsZCIsIGIic3BhbSJdCisKKyAgICAgICAgY29kZSA9ICdcbicuam9pbigoCisgICAgICAgICAgICAnaW1wb3J0IG9zLCBzeXMsIHRpbWUnLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnd3IgPSBpbnQoc3lzLmFyZ3ZbMV0pJywKKyAgICAgICAgICAgICdkYXRhcyA9ICVyJyAlIGRhdGFzLAorICAgICAgICAgICAgJ3NsZWVwX3RpbWUgPSAlcicgJSBzZWxmLnNsZWVwX3RpbWUsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdmb3IgZGF0YSBpbiBkYXRhczonLAorICAgICAgICAgICAgJyAgICAjIGxldCB0aGUgcGFyZW50IGJsb2NrIG9uIHJlYWQoKScsCisgICAgICAgICAgICAnICAgIHRpbWUuc2xlZXAoc2xlZXBfdGltZSknLAorICAgICAgICAgICAgJyAgICBvcy53cml0ZSh3ciwgZGF0YSknLAorICAgICAgICApKQorCisgICAgICAgIHByb2MgPSBzZWxmLnN1YnByb2Nlc3MoY29kZSwgc3RyKHdyKSwgcGFzc19mZHM9W3dyXSkKKyAgICAgICAgd2l0aCBraWxsX29uX2Vycm9yKHByb2MpOgorICAgICAgICAgICAgb3MuY2xvc2Uod3IpCisgICAgICAgICAgICBmb3IgZGF0YSBpbiBkYXRhczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIG9zLnJlYWQocmQsIGxlbihkYXRhKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb2Mud2FpdCgpLCAwKQorCisgICAgZGVmIHRlc3Rfd3JpdGUoc2VsZik6CisgICAgICAgIHJkLCB3ciA9IG9zLnBpcGUoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIHdyKQorICAgICAgICAjIHJkIGNsb3NlZCBleHBsaWNpdGx5IGJ5IHBhcmVudAorCisgICAgICAgICMgd2UgbXVzdCB3cml0ZSBlbm91Z2ggZGF0YSBmb3IgdGhlIHdyaXRlKCkgdG8gYmxvY2sKKyAgICAgICAgZGF0YSA9IGIieCIgKiBzdXBwb3J0LlBJUEVfTUFYX1NJWkUKKworICAgICAgICBjb2RlID0gJ1xuJy5qb2luKCgKKyAgICAgICAgICAgICdpbXBvcnQgaW8sIG9zLCBzeXMsIHRpbWUnLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAncmQgPSBpbnQoc3lzLmFyZ3ZbMV0pJywKKyAgICAgICAgICAgICdzbGVlcF90aW1lID0gJXInICUgc2VsZi5zbGVlcF90aW1lLAorICAgICAgICAgICAgJ2RhdGEgPSBiIngiICogJXMnICUgc3VwcG9ydC5QSVBFX01BWF9TSVpFLAorICAgICAgICAgICAgJ2RhdGFfbGVuID0gbGVuKGRhdGEpJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJyMgbGV0IHRoZSBwYXJlbnQgYmxvY2sgb24gd3JpdGUoKScsCisgICAgICAgICAgICAndGltZS5zbGVlcChzbGVlcF90aW1lKScsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdyZWFkX2RhdGEgPSBpby5CeXRlc0lPKCknLAorICAgICAgICAgICAgJ3doaWxlIGxlbihyZWFkX2RhdGEuZ2V0dmFsdWUoKSkgPCBkYXRhX2xlbjonLAorICAgICAgICAgICAgJyAgICBjaHVuayA9IG9zLnJlYWQocmQsIDIgKiBkYXRhX2xlbiknLAorICAgICAgICAgICAgJyAgICByZWFkX2RhdGEud3JpdGUoY2h1bmspJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ3ZhbHVlID0gcmVhZF9kYXRhLmdldHZhbHVlKCknLAorICAgICAgICAgICAgJ2lmIHZhbHVlICE9IGRhdGE6JywKKyAgICAgICAgICAgICcgICAgcmFpc2UgRXhjZXB0aW9uKCJyZWFkIGVycm9yOiAlcyB2cyAlcyBieXRlcyInLAorICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgJSAobGVuKHZhbHVlKSwgZGF0YV9sZW4pKScsCisgICAgICAgICkpCisKKyAgICAgICAgcHJvYyA9IHNlbGYuc3VicHJvY2Vzcyhjb2RlLCBzdHIocmQpLCBwYXNzX2Zkcz1bcmRdKQorICAgICAgICB3aXRoIGtpbGxfb25fZXJyb3IocHJvYyk6CisgICAgICAgICAgICBvcy5jbG9zZShyZCkKKyAgICAgICAgICAgIHdyaXR0ZW4gPSAwCisgICAgICAgICAgICB3aGlsZSB3cml0dGVuIDwgbGVuKGRhdGEpOgorICAgICAgICAgICAgICAgIHdyaXR0ZW4gKz0gb3Mud3JpdGUod3IsIG1lbW9yeXZpZXcoZGF0YSlbd3JpdHRlbjpdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9jLndhaXQoKSwgMCkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgInNldGl0aW1lciIpLCAicmVxdWlyZXMgc2V0aXRpbWVyKCkiKQorY2xhc3MgU29ja2V0RUlOVFJUZXN0KEVJTlRSQmFzZVRlc3QpOgorICAgICIiIiBFSU5UUiB0ZXN0cyBmb3IgdGhlIHNvY2tldCBtb2R1bGUuICIiIgorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdzb2NrZXRwYWlyJyksICduZWVkcyBzb2NrZXRwYWlyKCknKQorICAgIGRlZiBfdGVzdF9yZWN2KHNlbGYsIHJlY3ZfZnVuYyk6CisgICAgICAgIHJkLCB3ciA9IHNvY2tldC5zb2NrZXRwYWlyKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJkLmNsb3NlKQorICAgICAgICAjIHdyIGNsb3NlZCBleHBsaWNpdGx5IGJ5IHBhcmVudAorCisgICAgICAgICMgc2luZ2xlLWJ5dGUgcGF5bG9hZCBndWFyZCB1cyBhZ2FpbnN0IHBhcnRpYWwgcmVjdgorICAgICAgICBkYXRhcyA9IFtiIngiLCBiInkiLCBiInoiXQorCisgICAgICAgIGNvZGUgPSAnXG4nLmpvaW4oKAorICAgICAgICAgICAgJ2ltcG9ydCBvcywgc29ja2V0LCBzeXMsIHRpbWUnLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnZmQgPSBpbnQoc3lzLmFyZ3ZbMV0pJywKKyAgICAgICAgICAgICdmYW1pbHkgPSAlcycgJSBpbnQod3IuZmFtaWx5KSwKKyAgICAgICAgICAgICdzb2NrX3R5cGUgPSAlcycgJSBpbnQod3IudHlwZSksCisgICAgICAgICAgICAnZGF0YXMgPSAlcicgJSBkYXRhcywKKyAgICAgICAgICAgICdzbGVlcF90aW1lID0gJXInICUgc2VsZi5zbGVlcF90aW1lLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnd3IgPSBzb2NrZXQuZnJvbWZkKGZkLCBmYW1pbHksIHNvY2tfdHlwZSknLAorICAgICAgICAgICAgJ29zLmNsb3NlKGZkKScsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICd3aXRoIHdyOicsCisgICAgICAgICAgICAnICAgIGZvciBkYXRhIGluIGRhdGFzOicsCisgICAgICAgICAgICAnICAgICAgICAjIGxldCB0aGUgcGFyZW50IGJsb2NrIG9uIHJlY3YoKScsCisgICAgICAgICAgICAnICAgICAgICB0aW1lLnNsZWVwKHNsZWVwX3RpbWUpJywKKyAgICAgICAgICAgICcgICAgICAgIHdyLnNlbmRhbGwoZGF0YSknLAorICAgICAgICApKQorCisgICAgICAgIGZkID0gd3IuZmlsZW5vKCkKKyAgICAgICAgcHJvYyA9IHNlbGYuc3VicHJvY2Vzcyhjb2RlLCBzdHIoZmQpLCBwYXNzX2Zkcz1bZmRdKQorICAgICAgICB3aXRoIGtpbGxfb25fZXJyb3IocHJvYyk6CisgICAgICAgICAgICB3ci5jbG9zZSgpCisgICAgICAgICAgICBmb3IgZGF0YSBpbiBkYXRhczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIHJlY3ZfZnVuYyhyZCwgbGVuKGRhdGEpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvYy53YWl0KCksIDApCisKKyAgICBkZWYgdGVzdF9yZWN2KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3JlY3Yoc29ja2V0LnNvY2tldC5yZWN2KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQuc29ja2V0LCAncmVjdm1zZycpLCAnbmVlZHMgcmVjdm1zZygpJykKKyAgICBkZWYgdGVzdF9yZWN2bXNnKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3JlY3YobGFtYmRhIHNvY2ssIGRhdGE6IHNvY2sucmVjdm1zZyhkYXRhKVswXSkKKworICAgIGRlZiBfdGVzdF9zZW5kKHNlbGYsIHNlbmRfZnVuYyk6CisgICAgICAgIHJkLCB3ciA9IHNvY2tldC5zb2NrZXRwYWlyKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHdyLmNsb3NlKQorICAgICAgICAjIHJkIGNsb3NlZCBleHBsaWNpdGx5IGJ5IHBhcmVudAorCisgICAgICAgICMgd2UgbXVzdCBzZW5kIGVub3VnaCBkYXRhIGZvciB0aGUgc2VuZCgpIHRvIGJsb2NrCisgICAgICAgIGRhdGEgPSBiInh5eiIgKiAoc3VwcG9ydC5TT0NLX01BWF9TSVpFIC8vIDMpCisKKyAgICAgICAgY29kZSA9ICdcbicuam9pbigoCisgICAgICAgICAgICAnaW1wb3J0IG9zLCBzb2NrZXQsIHN5cywgdGltZScsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdmZCA9IGludChzeXMuYXJndlsxXSknLAorICAgICAgICAgICAgJ2ZhbWlseSA9ICVzJyAlIGludChyZC5mYW1pbHkpLAorICAgICAgICAgICAgJ3NvY2tfdHlwZSA9ICVzJyAlIGludChyZC50eXBlKSwKKyAgICAgICAgICAgICdzbGVlcF90aW1lID0gJXInICUgc2VsZi5zbGVlcF90aW1lLAorICAgICAgICAgICAgJ2RhdGEgPSBiInh5eiIgKiAlcycgJSAoc3VwcG9ydC5TT0NLX01BWF9TSVpFIC8vIDMpLAorICAgICAgICAgICAgJ2RhdGFfbGVuID0gbGVuKGRhdGEpJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ3JkID0gc29ja2V0LmZyb21mZChmZCwgZmFtaWx5LCBzb2NrX3R5cGUpJywKKyAgICAgICAgICAgICdvcy5jbG9zZShmZCknLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnd2l0aCByZDonLAorICAgICAgICAgICAgJyAgICAjIGxldCB0aGUgcGFyZW50IGJsb2NrIG9uIHNlbmQoKScsCisgICAgICAgICAgICAnICAgIHRpbWUuc2xlZXAoc2xlZXBfdGltZSknLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnICAgIHJlY2VpdmVkX2RhdGEgPSBieXRlYXJyYXkoZGF0YV9sZW4pJywKKyAgICAgICAgICAgICcgICAgbiA9IDAnLAorICAgICAgICAgICAgJyAgICB3aGlsZSBuIDwgZGF0YV9sZW46JywKKyAgICAgICAgICAgICcgICAgICAgIG4gKz0gcmQucmVjdl9pbnRvKG1lbW9yeXZpZXcocmVjZWl2ZWRfZGF0YSlbbjpdKScsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdpZiByZWNlaXZlZF9kYXRhICE9IGRhdGE6JywKKyAgICAgICAgICAgICcgICAgcmFpc2UgRXhjZXB0aW9uKCJyZWN2IGVycm9yOiAlcyB2cyAlcyBieXRlcyInLAorICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgJSAobGVuKHJlY2VpdmVkX2RhdGEpLCBkYXRhX2xlbikpJywKKyAgICAgICAgKSkKKworICAgICAgICBmZCA9IHJkLmZpbGVubygpCisgICAgICAgIHByb2MgPSBzZWxmLnN1YnByb2Nlc3MoY29kZSwgc3RyKGZkKSwgcGFzc19mZHM9W2ZkXSkKKyAgICAgICAgd2l0aCBraWxsX29uX2Vycm9yKHByb2MpOgorICAgICAgICAgICAgcmQuY2xvc2UoKQorICAgICAgICAgICAgd3JpdHRlbiA9IDAKKyAgICAgICAgICAgIHdoaWxlIHdyaXR0ZW4gPCBsZW4oZGF0YSk6CisgICAgICAgICAgICAgICAgc2VudCA9IHNlbmRfZnVuYyh3ciwgbWVtb3J5dmlldyhkYXRhKVt3cml0dGVuOl0pCisgICAgICAgICAgICAgICAgIyBzZW5kYWxsKCkgcmV0dXJucyBOb25lCisgICAgICAgICAgICAgICAgd3JpdHRlbiArPSBsZW4oZGF0YSkgaWYgc2VudCBpcyBOb25lIGVsc2Ugc2VudAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9jLndhaXQoKSwgMCkKKworICAgIGRlZiB0ZXN0X3NlbmQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfc2VuZChzb2NrZXQuc29ja2V0LnNlbmQpCisKKyAgICBkZWYgdGVzdF9zZW5kYWxsKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3NlbmQoc29ja2V0LnNvY2tldC5zZW5kYWxsKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQuc29ja2V0LCAnc2VuZG1zZycpLCAnbmVlZHMgc2VuZG1zZygpJykKKyAgICBkZWYgdGVzdF9zZW5kbXNnKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3NlbmQobGFtYmRhIHNvY2ssIGRhdGE6IHNvY2suc2VuZG1zZyhbZGF0YV0pKQorCisgICAgZGVmIHRlc3RfYWNjZXB0KHNlbGYpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc29jay5jbG9zZSkKKworICAgICAgICBzb2NrLmJpbmQoKHN1cHBvcnQuSE9TVCwgMCkpCisgICAgICAgIHBvcnQgPSBzb2NrLmdldHNvY2tuYW1lKClbMV0KKyAgICAgICAgc29jay5saXN0ZW4oKQorCisgICAgICAgIGNvZGUgPSAnXG4nLmpvaW4oKAorICAgICAgICAgICAgJ2ltcG9ydCBzb2NrZXQsIHRpbWUnLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnaG9zdCA9ICVyJyAlIHN1cHBvcnQuSE9TVCwKKyAgICAgICAgICAgICdwb3J0ID0gJXMnICUgcG9ydCwKKyAgICAgICAgICAgICdzbGVlcF90aW1lID0gJXInICUgc2VsZi5zbGVlcF90aW1lLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnIyBsZXQgcGFyZW50IGJsb2NrIG9uIGFjY2VwdCgpJywKKyAgICAgICAgICAgICd0aW1lLnNsZWVwKHNsZWVwX3RpbWUpJywKKyAgICAgICAgICAgICd3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCkpOicsCisgICAgICAgICAgICAnICAgIHRpbWUuc2xlZXAoc2xlZXBfdGltZSknLAorICAgICAgICApKQorCisgICAgICAgIHByb2MgPSBzZWxmLnN1YnByb2Nlc3MoY29kZSkKKyAgICAgICAgd2l0aCBraWxsX29uX2Vycm9yKHByb2MpOgorICAgICAgICAgICAgY2xpZW50X3NvY2ssIF8gPSBzb2NrLmFjY2VwdCgpCisgICAgICAgICAgICBjbGllbnRfc29jay5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb2Mud2FpdCgpLCAwKQorCisgICAgIyBJc3N1ZSAjMjUxMjI6IFRoZXJlIGlzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIEZyZWVCU0Qga2VybmVsIG9uCisgICAgIyBoYW5kbGluZyBzaWduYWxzIGluIHRoZSBGSUZPIGRldmljZS4gU2tpcCB0aGUgdGVzdCB1bnRpbCB0aGUgYnVnIGlzCisgICAgIyBmaXhlZCBpbiB0aGUga2VybmVsLgorICAgICMgaHR0cHM6Ly9idWdzLmZyZWVic2Qub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMDMxNjIKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19mcmVlYnNkX3ZlcnNpb24oMTAsIDMpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ21rZmlmbycpLCAnbmVlZHMgbWtmaWZvKCknKQorICAgIGRlZiBfdGVzdF9vcGVuKHNlbGYsIGRvX29wZW5fY2xvc2VfcmVhZGVyLCBkb19vcGVuX2Nsb3NlX3dyaXRlcik6CisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKworICAgICAgICAjIFVzZSBhIGZpZm86IHVudGlsIHRoZSBjaGlsZCBvcGVucyBpdCBmb3IgcmVhZGluZywgdGhlIHBhcmVudCB3aWxsCisgICAgICAgICMgYmxvY2sgd2hlbiB0cnlpbmcgdG8gb3BlbiBpdCBmb3Igd3JpdGluZy4KKyAgICAgICAgc3VwcG9ydC51bmxpbmsoZmlsZW5hbWUpCisgICAgICAgIG9zLm1rZmlmbyhmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKworICAgICAgICBjb2RlID0gJ1xuJy5qb2luKCgKKyAgICAgICAgICAgICdpbXBvcnQgb3MsIHRpbWUnLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAncGF0aCA9ICVhJyAlIGZpbGVuYW1lLAorICAgICAgICAgICAgJ3NsZWVwX3RpbWUgPSAlcicgJSBzZWxmLnNsZWVwX3RpbWUsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICcjIGxldCB0aGUgcGFyZW50IGJsb2NrJywKKyAgICAgICAgICAgICd0aW1lLnNsZWVwKHNsZWVwX3RpbWUpJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgZG9fb3Blbl9jbG9zZV9yZWFkZXIsCisgICAgICAgICkpCisKKyAgICAgICAgcHJvYyA9IHNlbGYuc3VicHJvY2Vzcyhjb2RlKQorICAgICAgICB3aXRoIGtpbGxfb25fZXJyb3IocHJvYyk6CisgICAgICAgICAgICBkb19vcGVuX2Nsb3NlX3dyaXRlcihmaWxlbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvYy53YWl0KCksIDApCisKKyAgICBkZWYgcHl0aG9uX29wZW4oc2VsZiwgcGF0aCk6CisgICAgICAgIGZwID0gb3BlbihwYXRoLCAndycpCisgICAgICAgIGZwLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X29wZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfb3BlbigiZnAgPSBvcGVuKHBhdGgsICdyJylcbmZwLmNsb3NlKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5weXRob25fb3BlbikKKworICAgIGRlZiBvc19vcGVuKHNlbGYsIHBhdGgpOgorICAgICAgICBmZCA9IG9zLm9wZW4ocGF0aCwgb3MuT19XUk9OTFkpCisgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgZGVmIHRlc3Rfb3Nfb3BlbihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9vcGVuKCJmZCA9IG9zLm9wZW4ocGF0aCwgb3MuT19SRE9OTFkpXG5vcy5jbG9zZShmZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vc19vcGVuKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAic2V0aXRpbWVyIiksICJyZXF1aXJlcyBzZXRpdGltZXIoKSIpCitjbGFzcyBUaW1lRUlOVFJUZXN0KEVJTlRSQmFzZVRlc3QpOgorICAgICIiIiBFSU5UUiB0ZXN0cyBmb3IgdGhlIHRpbWUgbW9kdWxlLiAiIiIKKworICAgIGRlZiB0ZXN0X3NsZWVwKHNlbGYpOgorICAgICAgICB0MCA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgdGltZS5zbGVlcChzZWxmLnNsZWVwX3RpbWUpCisgICAgICAgIHNlbGYuc3RvcF9hbGFybSgpCisgICAgICAgIGR0ID0gdGltZS5tb25vdG9uaWMoKSAtIHQwCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGR0LCBzZWxmLnNsZWVwX3RpbWUpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICJzZXRpdGltZXIiKSwgInJlcXVpcmVzIHNldGl0aW1lcigpIikKK2NsYXNzIFNpZ25hbEVJTlRSVGVzdChFSU5UUkJhc2VUZXN0KToKKyAgICAiIiIgRUlOVFIgdGVzdHMgZm9yIHRoZSBzaWduYWwgbW9kdWxlLiAiIiIKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lndGltZWR3YWl0JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3RpbWVkd2FpdCgpJykKKyAgICBkZWYgdGVzdF9zaWd0aW1lZHdhaXQoc2VsZik6CisgICAgICAgIHQwID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICBzaWduYWwuc2lndGltZWR3YWl0KFtzaWduYWwuU0lHVVNSMV0sIHNlbGYuc2xlZXBfdGltZSkKKyAgICAgICAgZHQgPSB0aW1lLm1vbm90b25pYygpIC0gdDAKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoZHQsIHNlbGYuc2xlZXBfdGltZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lnd2FpdGluZm8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lnd2FpdGluZm8oKScpCisgICAgZGVmIHRlc3Rfc2lnd2FpdGluZm8oc2VsZik6CisgICAgICAgICMgSXNzdWUgIzI1Mjc3OiBUaGUgc2xlZXAgaXMgYSB3ZWFrIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHRoZSBwYXJlbnQKKyAgICAgICAgIyBhbmQgdGhlIGNoaWxkIHByb2Nlc3MuIElmIHRoZSBzbGVlcCBpcyB0b28gbG93LCB0aGUgdGVzdCBoYW5ncyBvbgorICAgICAgICAjIHNsb3cgb3IgaGlnaGx5IGxvYWRlZCBzeXN0ZW1zLgorICAgICAgICBzZWxmLnNsZWVwX3RpbWUgPSAyLjAKKworICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHVVNSMQorICAgICAgICBwaWQgPSBvcy5nZXRwaWQoKQorCisgICAgICAgIG9sZF9oYW5kbGVyID0gc2lnbmFsLnNpZ25hbChzaWdudW0sIGxhbWJkYSAqYXJnczogTm9uZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNpZ25hbC5zaWduYWwsIHNpZ251bSwgb2xkX2hhbmRsZXIpCisKKyAgICAgICAgY29kZSA9ICdcbicuam9pbigoCisgICAgICAgICAgICAnaW1wb3J0IG9zLCB0aW1lJywKKyAgICAgICAgICAgICdwaWQgPSAlcycgJSBvcy5nZXRwaWQoKSwKKyAgICAgICAgICAgICdzaWdudW0gPSAlcycgJSBpbnQoc2lnbnVtKSwKKyAgICAgICAgICAgICdzbGVlcF90aW1lID0gJXInICUgc2VsZi5zbGVlcF90aW1lLAorICAgICAgICAgICAgJ3RpbWUuc2xlZXAoc2xlZXBfdGltZSknLAorICAgICAgICAgICAgJ29zLmtpbGwocGlkLCBzaWdudW0pJywKKyAgICAgICAgKSkKKworICAgICAgICB0MCA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgcHJvYyA9IHNlbGYuc3VicHJvY2Vzcyhjb2RlKQorICAgICAgICB3aXRoIGtpbGxfb25fZXJyb3IocHJvYyk6CisgICAgICAgICAgICAjIHBhcmVudAorICAgICAgICAgICAgc2lnbmFsLnNpZ3dhaXRpbmZvKFtzaWdudW1dKQorICAgICAgICAgICAgZHQgPSB0aW1lLm1vbm90b25pYygpIC0gdDAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvYy53YWl0KCksIDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoZHQsIHNlbGYuc2xlZXBfdGltZSkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgInNldGl0aW1lciIpLCAicmVxdWlyZXMgc2V0aXRpbWVyKCkiKQorY2xhc3MgU2VsZWN0RUlOVFJUZXN0KEVJTlRSQmFzZVRlc3QpOgorICAgICIiIiBFSU5UUiB0ZXN0cyBmb3IgdGhlIHNlbGVjdCBtb2R1bGUuICIiIgorCisgICAgZGVmIHRlc3Rfc2VsZWN0KHNlbGYpOgorICAgICAgICB0MCA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW10sIFtdLCBzZWxmLnNsZWVwX3RpbWUpCisgICAgICAgIGR0ID0gdGltZS5tb25vdG9uaWMoKSAtIHQwCisgICAgICAgIHNlbGYuc3RvcF9hbGFybSgpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGR0LCBzZWxmLnNsZWVwX3RpbWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNlbGVjdCwgJ3BvbGwnKSwgJ25lZWQgc2VsZWN0LnBvbGwnKQorICAgIGRlZiB0ZXN0X3BvbGwoc2VsZik6CisgICAgICAgIHBvbGxlciA9IHNlbGVjdC5wb2xsKCkKKworICAgICAgICB0MCA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgcG9sbGVyLnBvbGwoc2VsZi5zbGVlcF90aW1lICogMWUzKQorICAgICAgICBkdCA9IHRpbWUubW9ub3RvbmljKCkgLSB0MAorICAgICAgICBzZWxmLnN0b3BfYWxhcm0oKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChkdCwgc2VsZi5zbGVlcF90aW1lKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzZWxlY3QsICdlcG9sbCcpLCAnbmVlZCBzZWxlY3QuZXBvbGwnKQorICAgIGRlZiB0ZXN0X2Vwb2xsKHNlbGYpOgorICAgICAgICBwb2xsZXIgPSBzZWxlY3QuZXBvbGwoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocG9sbGVyLmNsb3NlKQorCisgICAgICAgIHQwID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICBwb2xsZXIucG9sbChzZWxmLnNsZWVwX3RpbWUpCisgICAgICAgIGR0ID0gdGltZS5tb25vdG9uaWMoKSAtIHQwCisgICAgICAgIHNlbGYuc3RvcF9hbGFybSgpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGR0LCBzZWxmLnNsZWVwX3RpbWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNlbGVjdCwgJ2txdWV1ZScpLCAnbmVlZCBzZWxlY3Qua3F1ZXVlJykKKyAgICBkZWYgdGVzdF9rcXVldWUoc2VsZik6CisgICAgICAgIGtxdWV1ZSA9IHNlbGVjdC5rcXVldWUoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoa3F1ZXVlLmNsb3NlKQorCisgICAgICAgIHQwID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICBrcXVldWUuY29udHJvbChOb25lLCAxLCBzZWxmLnNsZWVwX3RpbWUpCisgICAgICAgIGR0ID0gdGltZS5tb25vdG9uaWMoKSAtIHQwCisgICAgICAgIHNlbGYuc3RvcF9hbGFybSgpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGR0LCBzZWxmLnNsZWVwX3RpbWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNlbGVjdCwgJ2RldnBvbGwnKSwgJ25lZWQgc2VsZWN0LmRldnBvbGwnKQorICAgIGRlZiB0ZXN0X2RldnBvbGwoc2VsZik6CisgICAgICAgIHBvbGxlciA9IHNlbGVjdC5kZXZwb2xsKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHBvbGxlci5jbG9zZSkKKworICAgICAgICB0MCA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgcG9sbGVyLnBvbGwoc2VsZi5zbGVlcF90aW1lICogMWUzKQorICAgICAgICBkdCA9IHRpbWUubW9ub3RvbmljKCkgLSB0MAorICAgICAgICBzZWxmLnN0b3BfYWxhcm0oKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChkdCwgc2VsZi5zbGVlcF90aW1lKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKKyAgICAgICAgT1NFSU5UUlRlc3QsCisgICAgICAgIFNvY2tldEVJTlRSVGVzdCwKKyAgICAgICAgVGltZUVJTlRSVGVzdCwKKyAgICAgICAgU2lnbmFsRUlOVFJUZXN0LAorICAgICAgICBTZWxlY3RFSU5UUlRlc3QpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZXhjZXB0aW9uX2hpZXJhcmNoeS50eHQgYi9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dAppbmRleCAxYzFmNjlmLi4wNTEzNzY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dAorKysgYi9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dApAQCAtNCw2ICs0LDcgQEAKICArLS0gR2VuZXJhdG9yRXhpdAogICstLSBFeGNlcHRpb24KICAgICAgICstLSBTdG9wSXRlcmF0aW9uCisgICAgICArLS0gU3RvcEFzeW5jSXRlcmF0aW9uCiAgICAgICArLS0gQXJpdGhtZXRpY0Vycm9yCiAgICAgICB8ICAgICstLSBGbG9hdGluZ1BvaW50RXJyb3IKICAgICAgIHwgICAgKy0tIE92ZXJmbG93RXJyb3IKQEAgLTM4LDYgKzM5LDcgQEAKICAgICAgICstLSBSZWZlcmVuY2VFcnJvcgogICAgICAgKy0tIFJ1bnRpbWVFcnJvcgogICAgICAgfCAgICArLS0gTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgfCAgICArLS0gUmVjdXJzaW9uRXJyb3IKICAgICAgICstLSBTeW50YXhFcnJvcgogICAgICAgfCAgICArLS0gSW5kZW50YXRpb25FcnJvcgogICAgICAgfCAgICAgICAgICstLSBUYWJFcnJvcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZm9ya193YWl0LnB5IGIvTGliL3Rlc3QvZm9ya193YWl0LnB5CmluZGV4IDE5YjU0ZWMuLjcxMzAzOWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2Zvcmtfd2FpdC5weQorKysgYi9MaWIvdGVzdC9mb3JrX3dhaXQucHkKQEAgLTQ4LDcgKzQ4LDEyIEBACiAgICAgICAgIGZvciBpIGluIHJhbmdlKE5VTV9USFJFQURTKToKICAgICAgICAgICAgIF90aHJlYWQuc3RhcnRfbmV3KHNlbGYuZiwgKGksKSkKIAotICAgICAgICB0aW1lLnNsZWVwKExPTkdTTEVFUCkKKyAgICAgICAgIyBidXN5LWxvb3AgdG8gd2FpdCBmb3IgdGhyZWFkcworICAgICAgICBkZWFkbGluZSA9IHRpbWUubW9ub3RvbmljKCkgKyAxMC4wCisgICAgICAgIHdoaWxlIGxlbihzZWxmLmFsaXZlKSA8IE5VTV9USFJFQURTOgorICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCisgICAgICAgICAgICBpZiBkZWFkbGluZSA8IHRpbWUubW9ub3RvbmljKCk6CisgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICBhID0gc29ydGVkKHNlbGYuYWxpdmUua2V5cygpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGxpc3QocmFuZ2UoTlVNX1RIUkVBRFMpKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2ltZ2hkcmRhdGEvcHl0aG9uLmV4ciBiL0xpYi90ZXN0L2ltZ2hkcmRhdGEvcHl0aG9uLmV4cgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzNjODFlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvaW1naGRyZGF0YS9weXRob24uZXhyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2ltZ2hkcmRhdGEvcHl0aG9uLndlYnAgYi9MaWIvdGVzdC9pbWdoZHJkYXRhL3B5dGhvbi53ZWJwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4MjRlYzcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9pbWdoZHJkYXRhL3B5dGhvbi53ZWJwCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2ltcF9kdW1teS5weSBiL0xpYi90ZXN0L2ltcF9kdW1teS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTRkZWI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvaW1wX2R1bW15LnB5CkBAIC0wLDAgKzEsMyBAQAorIyBGb2RkZXIgZm9yIHRlc3Qgb2YgaXNzdWUyNDc0OCBpbiB0ZXN0X2ltcAorCitkdW1teV9uYW1lID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvaW5zcGVjdF9mb2RkZXIucHkgYi9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlci5weQppbmRleCAwYzFkODEwLi43MTFiYWRhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlci5weQorKysgYi9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlci5weQpAQCAtNDUsOSArNDUsMTkgQEAKICAgICAgICAgICAgIHNlbGYuZXggPSBzeXMuZXhjX2luZm8oKQogICAgICAgICAgICAgc2VsZi50ciA9IGluc3BlY3QudHJhY2UoKQogCi0jIGxpbmUgNDgKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29udHJhZGljdGlvbihzZWxmKToKKyAgICAgICAgJ1RoZSBhdXRvbWF0aWMgZ2FpbnNheWluZy4nCisgICAgICAgIHBhc3MKKworIyBsaW5lIDUzCiBjbGFzcyBNYWxvZG9yb3VzUGVydmVydChTdHVwaWRHaXQpOgotICAgIHBhc3MKKyAgICBkZWYgYWJ1c2Uoc2VsZiwgYSwgYiwgYyk6CisgICAgICAgIHBhc3MKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb250cmFkaWN0aW9uKHNlbGYpOgorICAgICAgICBwYXNzCiAKIFRpdCA9IE1hbG9kb3JvdXNQZXJ2ZXJ0CiAKQEAgLTU1LDQgKzY1LDEyIEBACiAgICAgcGFzcwogCiBjbGFzcyBGZXN0ZXJpbmdHb2IoTWFsb2Rvcm91c1BlcnZlcnQsIFBhcnJvdERyb3BwaW5ncyk6CisgICAgZGVmIGFidXNlKHNlbGYsIGEsIGIsIGMpOgorICAgICAgICBwYXNzCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29udHJhZGljdGlvbihzZWxmKToKKyAgICAgICAgcGFzcworCithc3luYyBkZWYgbG9iYmVzdChncmVuYWRlKToKICAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlcjIucHkgYi9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlcjIucHkKaW5kZXggYmQ3MTA2Zi4uYzY5ODdlYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvaW5zcGVjdF9mb2RkZXIyLnB5CisrKyBiL0xpYi90ZXN0L2luc3BlY3RfZm9kZGVyMi5weQpAQCAtMTA5LDMgKzEwOSwzMSBAQAogI2xpbmUgMTA5CiBkZWYga2V5d29yZF9vbmx5X2FyZygqLCBhcmcpOgogICAgIHBhc3MKKworQHdyYXAobGFtYmRhOiBOb25lKQorZGVmIGZ1bmMxMTQoKToKKyAgICByZXR1cm4gMTE1CisKK2NsYXNzIENsYXNzV2l0aE1ldGhvZDoKKyAgICBkZWYgbWV0aG9kKHNlbGYpOgorICAgICAgICBwYXNzCisKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcworCitkZWYgZGVjb3JhdG9yKGZ1bmMpOgorICAgIEB3cmFwcyhmdW5jKQorICAgIGRlZiBmYWtlKCk6CisgICAgICAgIHJldHVybiA0MgorICAgIHJldHVybiBmYWtlCisKKyNsaW5lIDEyOQorQGRlY29yYXRvcgorZGVmIHJlYWwoKToKKyAgICByZXR1cm4gMjAKKworI2xpbmUgMTM0CitjbGFzcyBjbHMxMzU6CisgICAgZGVmIGZ1bmMxMzYoKToKKyAgICAgICAgZGVmIGZ1bmMxMzcoKToKKyAgICAgICAgICAgIG5ldmVyX3JlYWNoZWQxCisgICAgICAgICAgICBuZXZlcl9yZWFjaGVkMgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlzdF90ZXN0cy5weSBiL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkKaW5kZXggNDJlMTE4Yi4uMWFkZmM3NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbGlzdF90ZXN0cy5weQorKysgYi9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5CkBAIC0zMCw2ICszMCwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGEpLCBpZChiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBiKQogCisgICAgZGVmIHRlc3RfZ2V0aXRlbV9lcnJvcihzZWxmKToKKyAgICAgICAgbXNnID0gImxpc3QgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKKyAgICAgICAgICAgIGEgPSBbXQorICAgICAgICAgICAgYVsnYSddID0gInB5dGhvbiIKKwogICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CiAgICAgICAgIGwwID0gW10KICAgICAgICAgbDIgPSBbMCwgMSwgMl0KQEAgLTUwLDcgKzU2LDcgQEAKICAgICAgICAgbDAgPSBbXQogICAgICAgICBmb3IgaSBpbiByYW5nZShzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKSArIDEwMCk6CiAgICAgICAgICAgICBsMCA9IFtsMF0KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCByZXByLCBsMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIHJlcHIsIGwwKQogCiAgICAgZGVmIHRlc3RfcHJpbnQoc2VsZik6CiAgICAgICAgIGQgPSBzZWxmLnR5cGUydGVzdChyYW5nZSgyMDApKQpAQCAtMTIwLDYgKzEyNiwxMCBAQAogICAgICAgICBhWy0xXSA9IDkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBzZWxmLnR5cGUydGVzdChbNSw2LDcsOCw5XSkpCiAKKyAgICAgICAgbXNnID0gImxpc3QgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKKyAgICAgICAgICAgIGFbJ2EnXSA9ICJweXRob24iCisKICAgICBkZWYgdGVzdF9kZWxpdGVtKHNlbGYpOgogICAgICAgICBhID0gc2VsZi50eXBlMnRlc3QoWzAsIDFdKQogICAgICAgICBkZWwgYVsxXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbG9ja190ZXN0cy5weSBiL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkKaW5kZXggNDYyZWNlZi4uYWZkNjg3MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbG9ja190ZXN0cy5weQorKysgYi9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5CkBAIC04Niw3ICs4NiwxMyBAQAogCiAgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKICAgICAgICAgbG9jayA9IHNlbGYubG9ja3R5cGUoKQotICAgICAgICByZXByKGxvY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihsb2NrKSwgIjx1bmxvY2tlZCAuKiBvYmplY3QgKC4qKT9hdCAuKj4iKQorICAgICAgICBkZWwgbG9jaworCisgICAgZGVmIHRlc3RfbG9ja2VkX3JlcHIoc2VsZik6CisgICAgICAgIGxvY2sgPSBzZWxmLmxvY2t0eXBlKCkKKyAgICAgICAgbG9jay5hY3F1aXJlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKGxvY2spLCAiPGxvY2tlZCAuKiBvYmplY3QgKC4qKT9hdCAuKj4iKQogICAgICAgICBkZWwgbG9jawogCiAgICAgZGVmIHRlc3RfYWNxdWlyZV9kZXN0cm95KHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbW9ja19zb2NrZXQucHkgYi9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQppbmRleCBlMzY3MjRmLi5iMjhjNDczIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQorKysgYi9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQpAQCAtMzUsOCArMzUsOSBAQAogY2xhc3MgTW9ja1NvY2tldDoKICAgICAiIiJNb2NrIHNvY2tldCBvYmplY3QgdXNlZCBieSBzbXRwZCBhbmQgc210cGxpYiB0ZXN0cy4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZhbWlseT1Ob25lKToKICAgICAgICAgZ2xvYmFsIF9yZXBseV9kYXRhCisgICAgICAgIHNlbGYuZmFtaWx5ID0gZmFtaWx5CiAgICAgICAgIHNlbGYub3V0cHV0ID0gW10KICAgICAgICAgc2VsZi5saW5lcyA9IFtdCiAgICAgICAgIGlmIF9yZXBseV9kYXRhOgpAQCAtMTAxLDE1ICsxMDIsMTQgQEAKICAgICAgICAgcmV0dXJuIGxlbihkYXRhKQogCiAgICAgZGVmIGdldHBlZXJuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gJ3BlZXInCisgICAgICAgIHJldHVybiAoJ3BlZXItYWRkcmVzcycsICdwZWVyLXBvcnQnKQogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICBwYXNzCiAKIAogZGVmIHNvY2tldChmYW1pbHk9Tm9uZSwgdHlwZT1Ob25lLCBwcm90bz1Ob25lKToKLSAgICByZXR1cm4gTW9ja1NvY2tldCgpCi0KKyAgICByZXR1cm4gTW9ja1NvY2tldChmYW1pbHkpCiAKIGRlZiBjcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzLCB0aW1lb3V0PXNvY2tldF9tb2R1bGUuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCiAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9Tm9uZSk6CkBAIC0xNDQsMTMgKzE0NCwxNiBAQAogZGVmIGdldGhvc3RieW5hbWUobmFtZSk6CiAgICAgcmV0dXJuICIiCiAKK2RlZiBnZXRhZGRyaW5mbygqYXJncywgKiprdyk6CisgICAgcmV0dXJuIHNvY2tldF9tb2R1bGUuZ2V0YWRkcmluZm8oKmFyZ3MsICoqa3cpCiAKIGdhaWVycm9yID0gc29ja2V0X21vZHVsZS5nYWllcnJvcgogZXJyb3IgPSBzb2NrZXRfbW9kdWxlLmVycm9yCiAKIAogIyBDb25zdGFudHMKLUFGX0lORVQgPSBOb25lCi1TT0NLX1NUUkVBTSA9IE5vbmUKK0FGX0lORVQgPSBzb2NrZXRfbW9kdWxlLkFGX0lORVQKK0FGX0lORVQ2ID0gc29ja2V0X21vZHVsZS5BRl9JTkVUNgorU09DS19TVFJFQU0gPSBzb2NrZXRfbW9kdWxlLlNPQ0tfU1RSRUFNCiBTT0xfU09DS0VUID0gTm9uZQogU09fUkVVU0VBRERSID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5IGIvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5CmluZGV4IGI5NDhjNTUuLmZiYTExMGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weQorKysgYi9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkKQEAgLTE4MTUsMTYgKzE4MTUsNjIgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChudW1fYWRkaXRlbXMsIDIpCiAKICAgICBkZWYgdGVzdF9zaW1wbGVfbmV3b2JqKHNlbGYpOgotICAgICAgICB4ID0gb2JqZWN0Ll9fbmV3X18oU2ltcGxlTmV3T2JqKSAgIyBhdm9pZCBfX2luaXRfXworICAgICAgICB4ID0gU2ltcGxlTmV3T2JqLl9fbmV3X18oU2ltcGxlTmV3T2JqLCAweGZhY2UpICAjIGF2b2lkIF9faW5pdF9fCiAgICAgICAgIHguYWJjID0gNjY2CiAgICAgICAgIGZvciBwcm90byBpbiBwcm90b2NvbHM6Ci0gICAgICAgICAgICBzID0gc2VsZi5kdW1wcyh4LCBwcm90bykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Bjb2RlX2luX3BpY2tsZShwaWNrbGUuTkVXT0JKLCBzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiA8PSBwcm90byA8IDQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wY29kZV9pbl9waWNrbGUocGlja2xlLk5FV09CSl9FWCwgcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvID49IDQpCi0gICAgICAgICAgICB5ID0gc2VsZi5sb2FkcyhzKSAgICMgd2lsbCByYWlzZSBUeXBlRXJyb3IgaWYgX19pbml0X18gY2FsbGVkCi0gICAgICAgICAgICBzZWxmLmFzc2VydF9pc19jb3B5KHgsIHkpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90byk6CisgICAgICAgICAgICAgICAgcyA9IHNlbGYuZHVtcHMoeCwgcHJvdG8pCisgICAgICAgICAgICAgICAgaWYgcHJvdG8gPCAxOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInXG5MNjQyMDYnLCBzKSAgIyBMT05HCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ01ceGNlXHhmYScsIHMpICAjIEJJTklOVDIKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wY29kZV9pbl9waWNrbGUocGlja2xlLk5FV09CSiwgcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyIDw9IHByb3RvKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3Bjb2RlX2luX3BpY2tsZShwaWNrbGUuTkVXT0JKX0VYLCBzKSkKKyAgICAgICAgICAgICAgICB5ID0gc2VsZi5sb2FkcyhzKSAgICMgd2lsbCByYWlzZSBUeXBlRXJyb3IgaWYgX19pbml0X18gY2FsbGVkCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRfaXNfY29weSh4LCB5KQorCisgICAgZGVmIHRlc3RfY29tcGxleF9uZXdvYmooc2VsZik6CisgICAgICAgIHggPSBDb21wbGV4TmV3T2JqLl9fbmV3X18oQ29tcGxleE5ld09iaiwgMHhmYWNlKSAgIyBhdm9pZCBfX2luaXRfXworICAgICAgICB4LmFiYyA9IDY2NgorICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8pOgorICAgICAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKHgsIHByb3RvKQorICAgICAgICAgICAgICAgIGlmIHByb3RvIDwgMToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1xuTDY0MjA2JywgcykgICMgTE9ORworICAgICAgICAgICAgICAgIGVsaWYgcHJvdG8gPCAyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInTVx4Y2VceGZhJywgcykgICMgQklOSU5UMgorICAgICAgICAgICAgICAgIGVsaWYgcHJvdG8gPCA0OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInWFx4MDRceDAwXHgwMFx4MDBGQUNFJywgcykgICMgQklOVU5JQ09ERQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidceDhjXHgwNEZBQ0UnLCBzKSAgIyBTSE9SVF9CSU5VTklDT0RFCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGNvZGVfaW5fcGlja2xlKHBpY2tsZS5ORVdPQkosIHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiA8PSBwcm90bykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9wY29kZV9pbl9waWNrbGUocGlja2xlLk5FV09CSl9FWCwgcykpCisgICAgICAgICAgICAgICAgeSA9IHNlbGYubG9hZHMocykgICAjIHdpbGwgcmFpc2UgVHlwZUVycm9yIGlmIF9faW5pdF9fIGNhbGxlZAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2lzX2NvcHkoeCwgeSkKKworICAgIGRlZiB0ZXN0X2NvbXBsZXhfbmV3b2JqX2V4KHNlbGYpOgorICAgICAgICB4ID0gQ29tcGxleE5ld09iakV4Ll9fbmV3X18oQ29tcGxleE5ld09iakV4LCAweGZhY2UpICAjIGF2b2lkIF9faW5pdF9fCisgICAgICAgIHguYWJjID0gNjY2CisgICAgICAgIGZvciBwcm90byBpbiBwcm90b2NvbHM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90byk6CisgICAgICAgICAgICAgICAgaWYgMiA8PSBwcm90byA8IDQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuZHVtcHMsIHgsIHByb3RvKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKHgsIHByb3RvKQorICAgICAgICAgICAgICAgIGlmIHByb3RvIDwgMToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1xuTDY0MjA2JywgcykgICMgTE9ORworICAgICAgICAgICAgICAgIGVsaWYgcHJvdG8gPCAyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInTVx4Y2VceGZhJywgcykgICMgQklOSU5UMgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBwcm90byA+PSA0CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidceDhjXHgwNEZBQ0UnLCBzKSAgIyBTSE9SVF9CSU5VTklDT0RFCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcGNvZGVfaW5fcGlja2xlKHBpY2tsZS5ORVdPQkosIHMpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Bjb2RlX2luX3BpY2tsZShwaWNrbGUuTkVXT0JKX0VYLCBzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgPD0gcHJvdG8pCisgICAgICAgICAgICAgICAgeSA9IHNlbGYubG9hZHMocykgICAjIHdpbGwgcmFpc2UgVHlwZUVycm9yIGlmIF9faW5pdF9fIGNhbGxlZAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2lzX2NvcHkoeCwgeSkKIAogICAgIGRlZiB0ZXN0X25ld29ial9saXN0X3Nsb3RzKHNlbGYpOgogICAgICAgICB4ID0gU2xvdExpc3QoWzEsIDIsIDNdKQpAQCAtMTg5OCwxNSArMTk0NCwxNSBAQAogICAgICAgICAgICAgICAgICMgNXRoIGl0ZW0gaXMgbm90IGFuIGl0ZXJhdG9yCiAgICAgICAgICAgICAgICAgcmV0dXJuIGRpY3QsICgpLCBOb25lLCBOb25lLCBbXQogCi0gICAgICAgICMgUHJvdG9jb2wgMCBpcyBsZXNzIHN0cmljdCBhbmQgYWxzbyBhY2NlcHQgaXRlcmFibGVzLgorICAgICAgICAjIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBpcyBsZXNzIHN0cmljdCBhbmQgYWxzbyBhY2NlcHRzIGl0ZXJhYmxlcy4KICAgICAgICAgZm9yIHByb3RvIGluIHByb3RvY29sczoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmR1bXBzKEMoKSwgcHJvdG8pCi0gICAgICAgICAgICBleGNlcHQgKHBpY2tsZS5QaWNrbGVFcnJvcik6CisgICAgICAgICAgICBleGNlcHQgcGlja2xlLlBpY2tsaW5nRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuZHVtcHMoRCgpLCBwcm90bykKLSAgICAgICAgICAgIGV4Y2VwdCAocGlja2xlLlBpY2tsZUVycm9yKToKKyAgICAgICAgICAgIGV4Y2VwdCBwaWNrbGUuUGlja2xpbmdFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAKICAgICBkZWYgdGVzdF9tYW55X3B1dHNfYW5kX2dldHMoc2VsZik6CkBAIC0yMDg4LDEzICsyMTM0LDI0IEBACiAgICAgICAgICAgICAgICAgY2xhc3MgQjoKICAgICAgICAgICAgICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UoNCwgcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CiAgICAgICAgICAgICBmb3Igb2JqIGluIFtOZXN0ZWQuQSwgTmVzdGVkLkEuQiwgTmVzdGVkLkEuQi5DXToKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90bywgb2JqPW9iaik6CiAgICAgICAgICAgICAgICAgICAgIHVucGlja2xlZCA9IHNlbGYubG9hZHMoc2VsZi5kdW1wcyhvYmosIHByb3RvKSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhvYmosIHVucGlja2xlZCkKIAorICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV9uZXN0ZWRfbmFtZXMoc2VsZik6CisgICAgICAgIGdsb2JhbCBSZWN1cnNpdmUKKyAgICAgICAgY2xhc3MgUmVjdXJzaXZlOgorICAgICAgICAgICAgcGFzcworICAgICAgICBSZWN1cnNpdmUubW9kID0gc3lzLm1vZHVsZXNbUmVjdXJzaXZlLl9fbW9kdWxlX19dCisgICAgICAgIFJlY3Vyc2l2ZS5fX3F1YWxuYW1lX18gPSAnUmVjdXJzaXZlLm1vZC5SZWN1cnNpdmUnCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8pOgorICAgICAgICAgICAgICAgIHVucGlja2xlZCA9IHNlbGYubG9hZHMoc2VsZi5kdW1wcyhSZWN1cnNpdmUsIHByb3RvKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHVucGlja2xlZCwgUmVjdXJzaXZlKQorICAgICAgICBkZWwgUmVjdXJzaXZlLm1vZCAjIGJyZWFrIHJlZmVyZW5jZSBsb29wCisKICAgICBkZWYgdGVzdF9weV9tZXRob2RzKHNlbGYpOgogICAgICAgICBnbG9iYWwgUHlNZXRob2RzVGVzdAogICAgICAgICBjbGFzcyBQeU1ldGhvZHNUZXN0OgpAQCAtMjEzMyw3ICsyMTkwLDcgQEAKICAgICAgICAgICAgIChQeU1ldGhvZHNUZXN0LmJpc2N1aXRzLCBQeU1ldGhvZHNUZXN0KSwKICAgICAgICAgICAgIChQeU1ldGhvZHNUZXN0Lk5lc3RlZC5waWUsIFB5TWV0aG9kc1Rlc3QuTmVzdGVkKQogICAgICAgICApCi0gICAgICAgIGZvciBwcm90byBpbiByYW5nZSg0LCBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKICAgICAgICAgICAgIGZvciBtZXRob2QgaW4gcHlfbWV0aG9kczoKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90bywgbWV0aG9kPW1ldGhvZCk6CiAgICAgICAgICAgICAgICAgICAgIHVucGlja2xlZCA9IHNlbGYubG9hZHMoc2VsZi5kdW1wcyhtZXRob2QsIHByb3RvKSkKQEAgLTIxNzMsNyArMjIzMCw3IEBACiAgICAgICAgICAgICAoU3ViY2xhc3MuTmVzdGVkKCJzd2VldCIpLmNvdW50LCAoImUiLCkpLAogICAgICAgICAgICAgKFN1YmNsYXNzLk5lc3RlZC5jb3VudCwgKFN1YmNsYXNzLk5lc3RlZCgic3dlZXQiKSwgImUiKSksCiAgICAgICAgICkKLSAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKDQsIHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgogICAgICAgICAgICAgZm9yIG1ldGhvZCwgYXJncyBpbiBjX21ldGhvZHM6CiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8sIG1ldGhvZD1tZXRob2QpOgogICAgICAgICAgICAgICAgICAgICB1bnBpY2tsZWQgPSBzZWxmLmxvYWRzKHNlbGYuZHVtcHMobWV0aG9kLCBwcm90bykpCkBAIC0yMTk3LDYgKzIyNTQsMjcgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigoJ2Mlc1xuJXMnICUgKG1vZCwgbmFtZSkpLmVuY29kZSgpLCBwaWNrbGVkKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoc2VsZi5sb2FkcyhwaWNrbGVkKSksIHR5cGUodmFsKSkKIAorICAgIGRlZiB0ZXN0X2xvY2FsX2xvb2t1cF9lcnJvcihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2hpY2htb2R1bGUoKSBlcnJvcnMgb3V0IGNsZWFubHkgd2hlbiBsb29raW5nIHVwCisgICAgICAgICMgYW4gYXNzdW1lZCBnbG9iYWxseS1yZWFjaGFibGUgb2JqZWN0IGZhaWxzLgorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgcGFzcworICAgICAgICAjIFNpbmNlIHRoZSBmdW5jdGlvbiBpcyBsb2NhbCwgbG9va3VwIHdpbGwgZmFpbAorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UoMCwgcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKEF0dHJpYnV0ZUVycm9yLCBwaWNrbGUuUGlja2xpbmdFcnJvcikpOgorICAgICAgICAgICAgICAgIHBpY2tsZXRvb2xzLmRpcyhzZWxmLmR1bXBzKGYsIHByb3RvKSkKKyAgICAgICAgIyBTYW1lIHdpdGhvdXQgYSBfX21vZHVsZV9fIGF0dHJpYnV0ZSAoZXhlcmNpc2VzIGEgZGlmZmVyZW50IHBhdGgKKyAgICAgICAgIyBpbiBfcGlja2xlLmMpLgorICAgICAgICBkZWwgZi5fX21vZHVsZV9fCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZSgwLCBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoQXR0cmlidXRlRXJyb3IsIHBpY2tsZS5QaWNrbGluZ0Vycm9yKSk6CisgICAgICAgICAgICAgICAgcGlja2xldG9vbHMuZGlzKHNlbGYuZHVtcHMoZiwgcHJvdG8pKQorICAgICAgICAjIFlldCBhIGRpZmZlcmVudCBwYXRoLgorICAgICAgICBmLl9fbmFtZV9fID0gZi5fX3F1YWxuYW1lX18KKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKDAsIHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChBdHRyaWJ1dGVFcnJvciwgcGlja2xlLlBpY2tsaW5nRXJyb3IpKToKKyAgICAgICAgICAgICAgICBwaWNrbGV0b29scy5kaXMoc2VsZi5kdW1wcyhmLCBwcm90bykpCisKIAogY2xhc3MgQmlnbWVtUGlja2xlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0yNDMxLDEyICsyNTA5LDIwIEBACiBjbGFzcyBTbG90TGlzdChNeUxpc3QpOgogICAgIF9fc2xvdHNfXyA9IFsiZm9vIl0KIAotY2xhc3MgU2ltcGxlTmV3T2JqKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGEsIGIsIGMpOgorY2xhc3MgU2ltcGxlTmV3T2JqKGludCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICMgcmFpc2UgYW4gZXJyb3IsIHRvIG1ha2Ugc3VyZSB0aGlzIGlzbid0IGNhbGxlZAogICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlNpbXBsZU5ld09iai5fX2luaXRfXygpIGRpZG4ndCBleHBlY3QgdG8gZ2V0IGNhbGxlZCIpCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fZGljdF9fID09IG90aGVyLl9fZGljdF9fCisgICAgICAgIHJldHVybiBpbnQoc2VsZikgPT0gaW50KG90aGVyKSBhbmQgc2VsZi5fX2RpY3RfXyA9PSBvdGhlci5fX2RpY3RfXworCitjbGFzcyBDb21wbGV4TmV3T2JqKFNpbXBsZU5ld09iaik6CisgICAgZGVmIF9fZ2V0bmV3YXJnc19fKHNlbGYpOgorICAgICAgICByZXR1cm4gKCclWCcgJSBzZWxmLCAxNikKKworY2xhc3MgQ29tcGxleE5ld09iakV4KFNpbXBsZU5ld09iaik6CisgICAgZGVmIF9fZ2V0bmV3YXJnc19leF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKCclWCcgJSBzZWxmLCksIHsnYmFzZSc6IDE2fQogCiBjbGFzcyBCYWRHZXRhdHRyOgogICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBrZXkpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcHlzdG9uZS5weSBiL0xpYi90ZXN0L3B5c3RvbmUucHkKaW5kZXggNTlkZDk5Yi4uY2YxNjkyZSAxMDA3NTUKLS0tIGEvTGliL3Rlc3QvcHlzdG9uZS5weQorKysgYi9MaWIvdGVzdC9weXN0b25lLnB5CkBAIC00MSw3ICs0MSw3IEBACiAKIExPT1BTID0gNTAwMDAKIAotZnJvbSB0aW1lIGltcG9ydCBjbG9jaworZnJvbSB0aW1lIGltcG9ydCB0aW1lCiAKIF9fdmVyc2lvbl9fID0gIjEuMiIKIApAQCAtOTMsMTAgKzkzLDEwIEBACiAgICAgZ2xvYmFsIFB0ckdsYgogICAgIGdsb2JhbCBQdHJHbGJOZXh0CiAKLSAgICBzdGFydHRpbWUgPSBjbG9jaygpCisgICAgc3RhcnR0aW1lID0gdGltZSgpCiAgICAgZm9yIGkgaW4gcmFuZ2UobG9vcHMpOgogICAgICAgICBwYXNzCi0gICAgbnVsbHRpbWUgPSBjbG9jaygpIC0gc3RhcnR0aW1lCisgICAgbnVsbHRpbWUgPSB0aW1lKCkgLSBzdGFydHRpbWUKIAogICAgIFB0ckdsYk5leHQgPSBSZWNvcmQoKQogICAgIFB0ckdsYiA9IFJlY29yZCgpCkBAIC0xMDgsNyArMTA4LDcgQEAKICAgICBTdHJpbmcxTG9jID0gIkRIUllTVE9ORSBQUk9HUkFNLCAxJ1NUIFNUUklORyIKICAgICBBcnJheTJHbG9iWzhdWzddID0gMTAKIAotICAgIHN0YXJ0dGltZSA9IGNsb2NrKCkKKyAgICBzdGFydHRpbWUgPSB0aW1lKCkKIAogICAgIGZvciBpIGluIHJhbmdlKGxvb3BzKToKICAgICAgICAgUHJvYzUoKQpAQCAtMTM0LDcgKzEzNCw3IEBACiAgICAgICAgIEludExvYzIgPSA3ICogKEludExvYzMgLSBJbnRMb2MyKSAtIEludExvYzEKICAgICAgICAgSW50TG9jMSA9IFByb2MyKEludExvYzEpCiAKLSAgICBiZW5jaHRpbWUgPSBjbG9jaygpIC0gc3RhcnR0aW1lIC0gbnVsbHRpbWUKKyAgICBiZW5jaHRpbWUgPSB0aW1lKCkgLSBzdGFydHRpbWUgLSBudWxsdGltZQogICAgIGlmIGJlbmNodGltZSA9PSAwLjA6CiAgICAgICAgIGxvb3BzUGVyQmVuY2h0aW1lID0gMC4wCiAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3JlX3Rlc3RzLnB5IGIvTGliL3Rlc3QvcmVfdGVzdHMucHkKaW5kZXggN2Y4MDc1ZS4uOGMxNThmOCAxMDA3NTUKLS0tIGEvTGliL3Rlc3QvcmVfdGVzdHMucHkKKysrIGIvTGliL3Rlc3QvcmVfdGVzdHMucHkKQEAgLTg3LDcgKzg3LDcgQEAKICAgICAocidbXGFdW1xiXVtcZl1bXG5dW1xyXVtcdF1bXHZdJywgJ1xhXGJcZlxuXHJcdFx2JywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ1xhXGJcZlxuXHJcdFx2JyksCiAgICAgIyBOT1RFOiBub3QgYW4gZXJyb3IgdW5kZXIgUENSRS9QUkU6CiAgICAgKHInXHUnLCAnJywgU1lOVEFYX0VSUk9SKSwgICAgIyBBIFBlcmwgZXNjYXBlCi0gICAgKHInXGNcZVxnXGhcaVxqXGtcbVxvXHBccVx5XHonLCAnY2VnaGlqa21vcHF5eicsIFNVQ0NFRUQsICdmb3VuZCcsICdjZWdoaWprbW9wcXl6JyksCisgICAgIyAocidcY1xlXGdcaFxpXGpca1xtXG9ccFxxXHlceicsICdjZWdoaWprbW9wcXl6JywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2NlZ2hpamttb3BxeXonKSwKICAgICAocidceGZmJywgJ1wzNzcnLCBTVUNDRUVELCAnZm91bmQnLCBjaHIoMjU1KSksCiAgICAgIyBuZXcgXHggc2VtYW50aWNzCiAgICAgKHInXHgwMGZmZmZmZmZmZmZmZmZmJywgJ1wzNzcnLCBGQUlMLCAnZm91bmQnLCBjaHIoMjU1KSksCkBAIC02MDcsOCArNjA3LDggQEAKICAgICAjIG5ldyBceCBzZW1hbnRpY3MKICAgICAocidceDAwZmYnLCAnXDM3NycsIEZBSUwpLAogICAgICMgKHInXHgwMGZmJywgJ1wzNzcnLCBTVUNDRUVELCAnZm91bmQnLCBjaHIoMjU1KSksCi0gICAgKHInXHRcblx2XHJcZlxhXGcnLCAnXHRcblx2XHJcZlxhZycsIFNVQ0NFRUQsICdmb3VuZCcsICdcdFxuXHZcclxmXGFnJyksCi0gICAgKCdcdFxuXHZcclxmXGFcZycsICdcdFxuXHZcclxmXGFnJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ1x0XG5cdlxyXGZcYWcnKSwKKyAgICAocidcdFxuXHZcclxmXGEnLCAnXHRcblx2XHJcZlxhJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ1x0XG5cdlxyXGZcYScpLAorICAgICgnXHRcblx2XHJcZlxhJywgJ1x0XG5cdlxyXGZcYScsIFNVQ0NFRUQsICdmb3VuZCcsICdcdFxuXHZcclxmXGEnKSwKICAgICAocidcdFxuXHZcclxmXGEnLCAnXHRcblx2XHJcZlxhJywgU1VDQ0VFRCwgJ2ZvdW5kJywgY2hyKDkpK2NocigxMCkrY2hyKDExKStjaHIoMTMpK2NocigxMikrY2hyKDcpKSwKICAgICAocidbXHRdW1xuXVtcdl1bXHJdW1xmXVtcYl0nLCAnXHRcblx2XHJcZlxiJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ1x0XG5cdlxyXGZcYicpLAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9yZWdydGVzdC5weSBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CmluZGV4IGViZGNkYWQuLjQzMTA0MmUgMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CkBAIC0zMjIsNiArMzIyLDggQEAKICAgICBncm91cC5hZGRfYXJndW1lbnQoJy1GJywgJy0tZm9yZXZlcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB0aGUgc3BlY2lmaWVkIHRlc3RzIGluIGEgbG9vcCwgdW50aWwgYW4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvciBoYXBwZW5zJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1QJywgJy0tcGdvJywgZGVzdD0ncGdvJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZW5hYmxlIFByb2ZpbGUgR3VpZGVkIE9wdGltaXphdGlvbiB0cmFpbmluZycpCiAKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdhcmdzJywgbmFyZ3M9YXJncGFyc2UuUkVNQUlOREVSLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD1hcmdwYXJzZS5TVVBQUkVTUykKQEAgLTM2MSw3ICszNjMsNyBAQAogICAgICAgICAgZmluZGxlYWtzPUZhbHNlLCB1c2VfcmVzb3VyY2VzPU5vbmUsIHRyYWNlPUZhbHNlLCBjb3ZlcmRpcj0nY292ZXJhZ2UnLAogICAgICAgICAgcnVubGVha3M9RmFsc2UsIGh1bnRybGVha3M9RmFsc2UsIHZlcmJvc2UyPUZhbHNlLCBwcmludF9zbG93PUZhbHNlLAogICAgICAgICAgcmFuZG9tX3NlZWQ9Tm9uZSwgdXNlX21wPU5vbmUsIHZlcmJvc2UzPUZhbHNlLCBmb3JldmVyPUZhbHNlLAotICAgICAgICAgaGVhZGVyPUZhbHNlLCBmYWlsZmFzdD1GYWxzZSwgbWF0Y2hfdGVzdHM9Tm9uZSkKKyAgICAgICAgIGhlYWRlcj1GYWxzZSwgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUsIHBnbz1GYWxzZSkKICAgICBmb3IgaywgdiBpbiBrd2FyZ3MuaXRlbXMoKToKICAgICAgICAgaWYgbm90IGhhc2F0dHIobnMsIGspOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclciBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgJwpAQCAtNDM1LDE0ICs0MzcsMTYgQEAKICAgICBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IFBvcGVuLCBQSVBFCiAgICAgYmFzZV9jbWQgPSAoW3N5cy5leGVjdXRhYmxlXSArIHN1cHBvcnQuYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkgKwogICAgICAgICAgICAgICAgIFsnLVgnLCAnZmF1bHRoYW5kbGVyJywgJy1tJywgJ3Rlc3QucmVncnRlc3QnXSkKLQorICAgICMgcmVxdWlyZWQgdG8gc3Bhd24gYSBuZXcgcHJvY2VzcyB3aXRoIFBHTyBmbGFnIG9uL29mZgorICAgIGlmIG5zLnBnbzoKKyAgICAgICAgYmFzZV9jbWQgPSBiYXNlX2NtZCArIFsnLS1wZ28nXQogICAgIHNsYXZlYXJncyA9ICgKICAgICAgICAgICAgICh0ZXN0bmFtZSwgbnMudmVyYm9zZSwgbnMucXVpZXQpLAogICAgICAgICAgICAgZGljdChodW50cmxlYWtzPW5zLmh1bnRybGVha3MsCiAgICAgICAgICAgICAgICAgIHVzZV9yZXNvdXJjZXM9bnMudXNlX3Jlc291cmNlcywKICAgICAgICAgICAgICAgICAgb3V0cHV0X29uX2ZhaWx1cmU9bnMudmVyYm9zZTMsCiAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9bnMudGltZW91dCwgZmFpbGZhc3Q9bnMuZmFpbGZhc3QsCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Rlc3RzPW5zLm1hdGNoX3Rlc3RzKSkKKyAgICAgICAgICAgICAgICAgbWF0Y2hfdGVzdHM9bnMubWF0Y2hfdGVzdHMsIHBnbz1ucy5wZ28pKQogICAgICMgUnVubmluZyB0aGUgY2hpbGQgZnJvbSB0aGUgc2FtZSB3b3JraW5nIGRpcmVjdG9yeSBhcyByZWdydGVzdCdzIG9yaWdpbmFsCiAgICAgIyBpbnZvY2F0aW9uIGVuc3VyZXMgdGhhdCBURU1QRElSIGZvciB0aGUgY2hpbGQgaXMgdGhlIHNhbWUgd2hlbgogICAgICMgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpIGlzIHRydWUuIFNlZSBpc3N1ZSAxNTMwMC4KQEAgLTUwNyw3ICs1MTEsMTMgQEAKICAgICAgICAgaW1wb3J0IGdjCiAgICAgICAgIGdjLnNldF90aHJlc2hvbGQobnMudGhyZXNob2xkKQogICAgIGlmIG5zLm5vd2luZG93czoKKyAgICAgICAgcHJpbnQoJ1RoZSAtLW5vd2luZG93cyAoLW4pIG9wdGlvbiBpcyBkZXByZWNhdGVkLiAnCisgICAgICAgICAgICAgICdVc2UgLXZ2IHRvIGRpc3BsYXkgYXNzZXJ0aW9ucyBpbiBzdGRlcnIuJykKKyAgICB0cnk6CiAgICAgICAgIGltcG9ydCBtc3ZjcnQKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgogICAgICAgICBtc3ZjcnQuU2V0RXJyb3JNb2RlKG1zdmNydC5TRU1fRkFJTENSSVRJQ0FMRVJST1JTfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5TRU1fTk9BTElHTk1FTlRGQVVMVEVYQ0VQVHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuU0VNX05PR1BGQVVMVEVSUk9SQk9YfApAQCAtNTE5LDggKzUyOSwxMSBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZm9yIG0gaW4gW21zdmNydC5DUlRfV0FSTiwgbXN2Y3J0LkNSVF9FUlJPUiwgbXN2Y3J0LkNSVF9BU1NFUlRdOgotICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIG1zdmNydC5DUlREQkdfTU9ERV9GSUxFKQotICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRGaWxlKG0sIG1zdmNydC5DUlREQkdfRklMRV9TVERFUlIpCisgICAgICAgICAgICAgICAgaWYgbnMudmVyYm9zZSBhbmQgbnMudmVyYm9zZSA+PSAyOgorICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZShtLCBtc3ZjcnQuQ1JUREJHX01PREVfRklMRSkKKyAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydEZpbGUobSwgbXN2Y3J0LkNSVERCR19GSUxFX1NUREVSUikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZShtLCAwKQogICAgIGlmIG5zLndhaXQ6CiAgICAgICAgIGlucHV0KCJQcmVzcyBhbnkga2V5IHRvIGNvbnRpbnVlLi4uIikKIApAQCAtNTk2LDEzICs2MDksMTQgQEAKICAgICAgICAgbnMuYXJncyA9IFtdCiAKICAgICAjIEZvciBhIHBhcnRpYWwgcnVuLCB3ZSBkbyBub3QgbmVlZCB0byBjbHV0dGVyIHRoZSBvdXRwdXQuCi0gICAgaWYgbnMudmVyYm9zZSBvciBucy5oZWFkZXIgb3Igbm90IChucy5xdWlldCBvciBucy5zaW5nbGUgb3IgdGVzdHMgb3IgbnMuYXJncyk6CisgICAgaWYgKG5zLnZlcmJvc2Ugb3IgbnMuaGVhZGVyIG9yCisgICAgICAgICAgICBub3QgKG5zLnBnbyBvciBucy5xdWlldCBvciBucy5zaW5nbGUgb3IgdGVzdHMgb3IgbnMuYXJncykpOgogICAgICAgICAjIFByaW50IGJhc2ljIHBsYXRmb3JtIGluZm9ybWF0aW9uCiAgICAgICAgIHByaW50KCI9PSIsIHBsYXRmb3JtLnB5dGhvbl9pbXBsZW1lbnRhdGlvbigpLCAqc3lzLnZlcnNpb24uc3BsaXQoKSkKICAgICAgICAgcHJpbnQoIj09ICAiLCBwbGF0Zm9ybS5wbGF0Zm9ybShhbGlhc2VkPVRydWUpLAotICAgICAgICAgICAgICAgICAgICAgICIlcy1lbmRpYW4iICUgc3lzLmJ5dGVvcmRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICIlcy1lbmRpYW4iICUgc3lzLmJ5dGVvcmRlcikKICAgICAgICAgcHJpbnQoIj09ICAiLCAiaGFzaCBhbGdvcml0aG06Iiwgc3lzLmhhc2hfaW5mby5hbGdvcml0aG0sCi0gICAgICAgICAgICAgICI2NGJpdCIgaWYgc3lzLm1heHNpemUgPiAyKiozMiBlbHNlICIzMmJpdCIpCisgICAgICAgICAgICAgICAgIjY0Yml0IiBpZiBzeXMubWF4c2l6ZSA+IDIqKjMyIGVsc2UgIjMyYml0IikKICAgICAgICAgcHJpbnQoIj09ICAiLCBvcy5nZXRjd2QoKSkKICAgICAgICAgcHJpbnQoIlRlc3Rpbmcgd2l0aCBmbGFnczoiLCBzeXMuZmxhZ3MpCiAKQEAgLTY0NSw3ICs2NTksOCBAQAogCiAgICAgZGVmIGFjY3VtdWxhdGVfcmVzdWx0KHRlc3QsIHJlc3VsdCk6CiAgICAgICAgIG9rLCB0ZXN0X3RpbWUgPSByZXN1bHQKLSAgICAgICAgdGVzdF90aW1lcy5hcHBlbmQoKHRlc3RfdGltZSwgdGVzdCkpCisgICAgICAgIGlmIG9rIG5vdCBpbiAoQ0hJTERfRVJST1IsIElOVEVSUlVQVEVEKToKKyAgICAgICAgICAgIHRlc3RfdGltZXMuYXBwZW5kKCh0ZXN0X3RpbWUsIHRlc3QpKQogICAgICAgICBpZiBvayA9PSBQQVNTRUQ6CiAgICAgICAgICAgICBnb29kLmFwcGVuZCh0ZXN0KQogICAgICAgICBlbGlmIG9rID09IEZBSUxFRDoKQEAgLTcyMiwxMyArNzM3LDE2IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgcmVzdWx0KQogICAgICAgICAgICAgICAgIGlmIG5vdCBucy5xdWlldDoKLSAgICAgICAgICAgICAgICAgICAgZm10ID0gIlt7MTp7MH19ezJ9L3szfV0gezR9IiBpZiBiYWQgZWxzZSAiW3sxOnswfX17Mn1dIHs0fSIKKyAgICAgICAgICAgICAgICAgICAgaWYgYmFkIGFuZCBub3QgbnMucGdvOgorICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gIlt7MTp7MH19ezJ9L3szfV0gezR9IgorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gIlt7MTp7MH19ezJ9XSB7NH0iCiAgICAgICAgICAgICAgICAgICAgIHByaW50KGZtdC5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvdW50X3dpZHRoLCB0ZXN0X2luZGV4LCB0ZXN0X2NvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGJhZCksIHRlc3QpKQogICAgICAgICAgICAgICAgIGlmIHN0ZG91dDoKICAgICAgICAgICAgICAgICAgICAgcHJpbnQoc3Rkb3V0KQotICAgICAgICAgICAgICAgIGlmIHN0ZGVycjoKKyAgICAgICAgICAgICAgICBpZiBzdGRlcnIgYW5kIG5vdCBucy5wZ286CiAgICAgICAgICAgICAgICAgICAgIHByaW50KHN0ZGVyciwgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQpAQCAtNzQ1LDcgKzc2MywxMCBAQAogICAgIGVsc2U6CiAgICAgICAgIGZvciB0ZXN0X2luZGV4LCB0ZXN0IGluIGVudW1lcmF0ZSh0ZXN0cywgMSk6CiAgICAgICAgICAgICBpZiBub3QgbnMucXVpZXQ6Ci0gICAgICAgICAgICAgICAgZm10ID0gIlt7MTp7MH19ezJ9L3szfV0gezR9IiBpZiBiYWQgZWxzZSAiW3sxOnswfX17Mn1dIHs0fSIKKyAgICAgICAgICAgICAgICBpZiBiYWQgYW5kIG5vdCBucy5wZ286CisgICAgICAgICAgICAgICAgICAgIGZtdCA9ICJbezE6ezB9fXsyfS97M31dIHs0fSIKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmbXQgPSAiW3sxOnswfX17Mn1dIHs0fSIKICAgICAgICAgICAgICAgICBwcmludChmbXQuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvdW50X3dpZHRoLCB0ZXN0X2luZGV4LCB0ZXN0X2NvdW50LCBsZW4oYmFkKSwgdGVzdCkpCiAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCkBAIC03NjAsMTMgKzc4MSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zLmh1bnRybGVha3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X29uX2ZhaWx1cmU9bnMudmVyYm9zZTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1ucy50aW1lb3V0LCBmYWlsZmFzdD1ucy5mYWlsZmFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF90ZXN0cz1ucy5tYXRjaF90ZXN0cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF90ZXN0cz1ucy5tYXRjaF90ZXN0cywgcGdvPW5zLnBnbykKICAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgcmVzdWx0KQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0ZWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgaWYgbnMuZmluZGxlYWtzOgogICAgICAgICAgICAgICAgIGdjLmNvbGxlY3QoKQogICAgICAgICAgICAgICAgIGlmIGdjLmdhcmJhZ2U6CkBAIC03ODEsMTQgKzgwMCwxNCBAQAogICAgICAgICAgICAgICAgIGlmIG1vZHVsZSBub3QgaW4gc2F2ZV9tb2R1bGVzIGFuZCBtb2R1bGUuc3RhcnRzd2l0aCgidGVzdC4iKToKICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC51bmxvYWQobW9kdWxlKQogCi0gICAgaWYgaW50ZXJydXB0ZWQ6CisgICAgaWYgaW50ZXJydXB0ZWQgYW5kIG5vdCBucy5wZ286CiAgICAgICAgICMgcHJpbnQgYSBuZXdsaW5lIGFmdGVyIF5DCiAgICAgICAgIHByaW50KCkKICAgICAgICAgcHJpbnQoIlRlc3Qgc3VpdGUgaW50ZXJydXB0ZWQgYnkgc2lnbmFsIFNJR0lOVC4iKQogICAgICAgICBvbWl0dGVkID0gc2V0KHNlbGVjdGVkKSAtIHNldChnb29kKSAtIHNldChiYWQpIC0gc2V0KHNraXBwZWQpCiAgICAgICAgIHByaW50KGNvdW50KGxlbihvbWl0dGVkKSwgInRlc3QiKSwgIm9taXR0ZWQ6IikKICAgICAgICAgcHJpbnRsaXN0KG9taXR0ZWQpCi0gICAgaWYgZ29vZCBhbmQgbm90IG5zLnF1aWV0OgorICAgIGlmIGdvb2QgYW5kIG5vdCBucy5xdWlldCBhbmQgbm90IG5zLnBnbzoKICAgICAgICAgaWYgbm90IGJhZCBhbmQgbm90IHNraXBwZWQgYW5kIG5vdCBpbnRlcnJ1cHRlZCBhbmQgbGVuKGdvb2QpID4gMToKICAgICAgICAgICAgIHByaW50KCJBbGwiLCBlbmQ9JyAnKQogICAgICAgICBwcmludChjb3VudChsZW4oZ29vZCksICJ0ZXN0IiksICJPSy4iKQpAQCAtNzk3LDI2ICs4MTYsMjcgQEAKICAgICAgICAgcHJpbnQoIjEwIHNsb3dlc3QgdGVzdHM6IikKICAgICAgICAgZm9yIHRpbWUsIHRlc3QgaW4gdGVzdF90aW1lc1s6MTBdOgogICAgICAgICAgICAgcHJpbnQoIiVzOiAlLjFmcyIgJSAodGVzdCwgdGltZSkpCi0gICAgaWYgYmFkOgorICAgIGlmIGJhZCBhbmQgbm90IG5zLnBnbzoKICAgICAgICAgcHJpbnQoY291bnQobGVuKGJhZCksICJ0ZXN0IiksICJmYWlsZWQ6IikKICAgICAgICAgcHJpbnRsaXN0KGJhZCkKLSAgICBpZiBlbnZpcm9ubWVudF9jaGFuZ2VkOgorICAgIGlmIGVudmlyb25tZW50X2NoYW5nZWQgYW5kIG5vdCBucy5wZ286CiAgICAgICAgIHByaW50KCJ7fSBhbHRlcmVkIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQ6Ii5mb3JtYXQoCiAgICAgICAgICAgICAgICAgIGNvdW50KGxlbihlbnZpcm9ubWVudF9jaGFuZ2VkKSwgInRlc3QiKSkpCiAgICAgICAgIHByaW50bGlzdChlbnZpcm9ubWVudF9jaGFuZ2VkKQotICAgIGlmIHNraXBwZWQgYW5kIG5vdCBucy5xdWlldDoKKyAgICBpZiBza2lwcGVkIGFuZCBub3QgbnMucXVpZXQgYW5kIG5vdCBucy5wZ286CiAgICAgICAgIHByaW50KGNvdW50KGxlbihza2lwcGVkKSwgInRlc3QiKSwgInNraXBwZWQ6IikKICAgICAgICAgcHJpbnRsaXN0KHNraXBwZWQpCiAKICAgICBpZiBucy52ZXJib3NlMiBhbmQgYmFkOgogICAgICAgICBwcmludCgiUmUtcnVubmluZyBmYWlsZWQgdGVzdHMgaW4gdmVyYm9zZSBtb2RlIikKICAgICAgICAgZm9yIHRlc3QgaW4gYmFkWzpdOgotICAgICAgICAgICAgcHJpbnQoIlJlLXJ1bm5pbmcgdGVzdCAlciBpbiB2ZXJib3NlIG1vZGUiICUgdGVzdCkKKyAgICAgICAgICAgIGlmIG5vdCBucy5wZ286CisgICAgICAgICAgICAgICAgcHJpbnQoIlJlLXJ1bm5pbmcgdGVzdCAlciBpbiB2ZXJib3NlIG1vZGUiICUgdGVzdCkKICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG5zLnZlcmJvc2UgPSBUcnVlCiAgICAgICAgICAgICAgICAgb2sgPSBydW50ZXN0KHRlc3QsIFRydWUsIG5zLnF1aWV0LCBucy5odW50cmxlYWtzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PW5zLnRpbWVvdXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9bnMudGltZW91dCwgcGdvPW5zLnBnbykKICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgICAgICAgICAjIHByaW50IGEgbmV3bGluZSBzZXBhcmF0ZSBmcm9tIHRoZSBeQwogICAgICAgICAgICAgICAgIHByaW50KCkKQEAgLTkxNSw3ICs5MzUsNyBAQAogZGVmIHJ1bnRlc3QodGVzdCwgdmVyYm9zZSwgcXVpZXQsCiAgICAgICAgICAgICBodW50cmxlYWtzPUZhbHNlLCB1c2VfcmVzb3VyY2VzPU5vbmUsCiAgICAgICAgICAgICBvdXRwdXRfb25fZmFpbHVyZT1GYWxzZSwgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUsCi0gICAgICAgICAgICB0aW1lb3V0PU5vbmUpOgorICAgICAgICAgICAgdGltZW91dD1Ob25lLCAqLCBwZ289RmFsc2UpOgogICAgICIiIlJ1biBhIHNpbmdsZSB0ZXN0LgogCiAgICAgdGVzdCAtLSB0aGUgbmFtZSBvZiB0aGUgdGVzdApAQCAtOTI4LDYgKzk0OCw4IEBACiAgICAgdGltZW91dCAtLSBkdW1wIHRoZSB0cmFjZWJhY2sgYW5kIGV4aXQgaWYgYSB0ZXN0IHRha2VzIG1vcmUgdGhhbgogICAgICAgICAgICAgICAgdGltZW91dCBzZWNvbmRzCiAgICAgZmFpbGZhc3QsIG1hdGNoX3Rlc3RzIC0tIFNlZSByZWdydGVzdCBjb21tYW5kLWxpbmUgZmxhZ3MgZm9yIHRoZXNlLgorICAgIHBnbyAtLSBpZiB0cnVlLCBkbyBub3QgcHJpbnQgdW5uZWNlc3NhcnkgaW5mbyB3aGVuIHJ1bm5pbmcgdGhlIHRlc3QKKyAgICAgICAgICAgZm9yIFByb2ZpbGUgR3VpZGVkIE9wdGltaXphdGlvbiBidWlsZAogCiAgICAgUmV0dXJucyB0aGUgdHVwbGUgcmVzdWx0LCB0ZXN0X3RpbWUsIHdoZXJlIHJlc3VsdCBpcyBvbmUgb2YgdGhlIGNvbnN0YW50czoKICAgICAgICAgSU5URVJSVVBURUQgICAgICBLZXlib2FyZEludGVycnVwdCB3aGVuIHJ1biB1bmRlciAtagpAQCAtOTM3LDcgKzk1OSw2IEBACiAgICAgICAgIEZBSUxFRCAgICAgICAgICAgdGVzdCBmYWlsZWQKICAgICAgICAgUEFTU0VEICAgICAgICAgICB0ZXN0IHBhc3NlZAogICAgICIiIgotCiAgICAgaWYgdXNlX3Jlc291cmNlcyBpcyBub3QgTm9uZToKICAgICAgICAgc3VwcG9ydC51c2VfcmVzb3VyY2VzID0gdXNlX3Jlc291cmNlcwogICAgIHVzZV90aW1lb3V0ID0gKHRpbWVvdXQgaXMgbm90IE5vbmUpCkBAIC05NjcsOCArOTg4LDggQEAKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc3RyZWFtCiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHN0cmVhbQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3RfaW5uZXIodGVzdCwgdmVyYm9zZSwgcXVpZXQsIGh1bnRybGVha3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5X2ZhaWx1cmU9RmFsc2UpCi0gICAgICAgICAgICAgICAgaWYgcmVzdWx0WzBdID09IEZBSUxFRDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfZmFpbHVyZT1GYWxzZSwgcGdvPXBnbykKKyAgICAgICAgICAgICAgICBpZiByZXN1bHRbMF0gPT0gRkFJTEVEIGFuZCBub3QgcGdvOgogICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzdHJlYW0uZ2V0dmFsdWUoKQogICAgICAgICAgICAgICAgICAgICBvcmlnX3N0ZGVyci53cml0ZShvdXRwdXQpCiAgICAgICAgICAgICAgICAgICAgIG9yaWdfc3RkZXJyLmZsdXNoKCkKQEAgLTk3OCw3ICs5OTksNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3VwcG9ydC52ZXJib3NlID0gdmVyYm9zZSAgIyBUZWxsIHRlc3RzIHRvIGJlIG1vZGVyYXRlbHkgcXVpZXQKICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3RfaW5uZXIodGVzdCwgdmVyYm9zZSwgcXVpZXQsIGh1bnRybGVha3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfZmFpbHVyZT1ub3QgdmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheV9mYWlsdXJlPW5vdCB2ZXJib3NlLCBwZ289cGdvKQogICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgZmluYWxseToKICAgICAgICAgaWYgdXNlX3RpbWVvdXQ6CkBAIC0xMDEwLDEwICsxMDMxLDExIEBACiAKICAgICBjaGFuZ2VkID0gRmFsc2UKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0bmFtZSwgdmVyYm9zZT0wLCBxdWlldD1GYWxzZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RuYW1lLCB2ZXJib3NlPTAsIHF1aWV0PUZhbHNlLCAqLCBwZ289RmFsc2UpOgogICAgICAgICBzZWxmLnRlc3RuYW1lID0gdGVzdG5hbWUKICAgICAgICAgc2VsZi52ZXJib3NlID0gdmVyYm9zZQogICAgICAgICBzZWxmLnF1aWV0ID0gcXVpZXQKKyAgICAgICAgc2VsZi5wZ28gPSBwZ28KIAogICAgICMgVG8gYWRkIHRoaW5ncyB0byBzYXZlIGFuZCByZXN0b3JlLCBhZGQgYSBuYW1lIFhYWCB0byB0aGUgcmVzb3VyY2VzIGxpc3QKICAgICAjIGFuZCBhZGQgY29ycmVzcG9uZGluZyBnZXRfWFhYL3Jlc3RvcmVfWFhYIGZ1bmN0aW9ucy4gIGdldF9YWFggc2hvdWxkCkBAIC0xMjQyLDExICsxMjY0LDExIEBACiAgICAgICAgICAgICBpZiBjdXJyZW50ICE9IG9yaWdpbmFsOgogICAgICAgICAgICAgICAgIHNlbGYuY2hhbmdlZCA9IFRydWUKICAgICAgICAgICAgICAgICByZXN0b3JlKG9yaWdpbmFsKQotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnF1aWV0OgorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnF1aWV0IGFuZCBub3Qgc2VsZi5wZ286CiAgICAgICAgICAgICAgICAgICAgIHByaW50KCJXYXJuaW5nIC0tIHt9IHdhcyBtb2RpZmllZCBieSB7fSIuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHNlbGYudGVzdG5hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi52ZXJib3NlID4gMToKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi52ZXJib3NlID4gMSBhbmQgbm90IHNlbGYucGdvOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgQmVmb3JlOiB7fVxuICBBZnRlcjogIHt9ICIuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbCwgY3VycmVudCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKQEAgLTEyNTQsNyArMTI3Niw3IEBACiAKIAogZGVmIHJ1bnRlc3RfaW5uZXIodGVzdCwgdmVyYm9zZSwgcXVpZXQsCi0gICAgICAgICAgICAgICAgICBodW50cmxlYWtzPUZhbHNlLCBkaXNwbGF5X2ZhaWx1cmU9VHJ1ZSk6CisgICAgICAgICAgICAgICAgICBodW50cmxlYWtzPUZhbHNlLCBkaXNwbGF5X2ZhaWx1cmU9VHJ1ZSwgcGdvPUZhbHNlKToKICAgICBzdXBwb3J0LnVubG9hZCh0ZXN0KQogCiAgICAgdGVzdF90aW1lID0gMC4wCkBAIC0xMjY1LDcgKzEyODcsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBBbHdheXMgaW1wb3J0IGl0IGZyb20gdGhlIHRlc3QgcGFja2FnZQogICAgICAgICAgICAgYWJzdGVzdCA9ICd0ZXN0LicgKyB0ZXN0Ci0gICAgICAgIHdpdGggc2F2ZWRfdGVzdF9lbnZpcm9ubWVudCh0ZXN0LCB2ZXJib3NlLCBxdWlldCkgYXMgZW52aXJvbm1lbnQ6CisgICAgICAgIHdpdGggc2F2ZWRfdGVzdF9lbnZpcm9ubWVudCh0ZXN0LCB2ZXJib3NlLCBxdWlldCwgcGdvPXBnbykgYXMgZW52aXJvbm1lbnQ6CiAgICAgICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKICAgICAgICAgICAgIHRoZV9tb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShhYnN0ZXN0KQogICAgICAgICAgICAgIyBJZiB0aGUgdGVzdCBoYXMgYSB0ZXN0X21haW4sIHRoYXQgd2lsbCBydW4gdGhlIGFwcHJvcHJpYXRlCkBAIC0xMjc1LDMzICsxMjk3LDM5IEBACiAgICAgICAgICAgICAgICAgZGVmIHRlc3RfcnVubmVyKCk6CiAgICAgICAgICAgICAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQogICAgICAgICAgICAgICAgICAgICB0ZXN0cyA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKHRoZV9tb2R1bGUpCisgICAgICAgICAgICAgICAgICAgIGZvciBlcnJvciBpbiBsb2FkZXIuZXJyb3JzOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoZXJyb3IsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICAgICAgaWYgbG9hZGVyLmVycm9yczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiZXJyb3JzIHdoaWxlIGxvYWRpbmcgdGVzdHMiKQogICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCh0ZXN0cykKICAgICAgICAgICAgIHRlc3RfcnVubmVyKCkKICAgICAgICAgICAgIGlmIGh1bnRybGVha3M6CiAgICAgICAgICAgICAgICAgcmVmbGVhayA9IGRhc2hfUih0aGVfbW9kdWxlLCB0ZXN0LCB0ZXN0X3J1bm5lciwgaHVudHJsZWFrcykKICAgICAgICAgICAgIHRlc3RfdGltZSA9IHRpbWUudGltZSgpIC0gc3RhcnRfdGltZQogICAgIGV4Y2VwdCBzdXBwb3J0LlJlc291cmNlRGVuaWVkIGFzIG1zZzoKLSAgICAgICAgaWYgbm90IHF1aWV0OgorICAgICAgICBpZiBub3QgcXVpZXQgYW5kIG5vdCBwZ286CiAgICAgICAgICAgICBwcmludCh0ZXN0LCAic2tpcHBlZCAtLSIsIG1zZykKICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogICAgICAgICByZXR1cm4gUkVTT1VSQ0VfREVOSUVELCB0ZXN0X3RpbWUKICAgICBleGNlcHQgdW5pdHRlc3QuU2tpcFRlc3QgYXMgbXNnOgotICAgICAgICBpZiBub3QgcXVpZXQ6CisgICAgICAgIGlmIG5vdCBxdWlldCBhbmQgbm90IHBnbzoKICAgICAgICAgICAgIHByaW50KHRlc3QsICJza2lwcGVkIC0tIiwgbXNnKQogICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAgICAgICAgIHJldHVybiBTS0lQUEVELCB0ZXN0X3RpbWUKICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgIHJhaXNlCiAgICAgZXhjZXB0IHN1cHBvcnQuVGVzdEZhaWxlZCBhcyBtc2c6Ci0gICAgICAgIGlmIGRpc3BsYXlfZmFpbHVyZToKLSAgICAgICAgICAgIHByaW50KCJ0ZXN0IiwgdGVzdCwgImZhaWxlZCAtLSIsIG1zZywgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQoInRlc3QiLCB0ZXN0LCAiZmFpbGVkIiwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBpZiBub3QgcGdvOgorICAgICAgICAgICAgaWYgZGlzcGxheV9mYWlsdXJlOgorICAgICAgICAgICAgICAgIHByaW50KCJ0ZXN0IiwgdGVzdCwgImZhaWxlZCAtLSIsIG1zZywgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmludCgidGVzdCIsIHRlc3QsICJmYWlsZWQiLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQogICAgICAgICByZXR1cm4gRkFJTEVELCB0ZXN0X3RpbWUKICAgICBleGNlcHQ6CiAgICAgICAgIG1zZyA9IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkKLSAgICAgICAgcHJpbnQoInRlc3QiLCB0ZXN0LCAiY3Jhc2hlZCAtLSIsIG1zZywgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBpZiBub3QgcGdvOgorICAgICAgICAgICAgcHJpbnQoInRlc3QiLCB0ZXN0LCAiY3Jhc2hlZCAtLSIsIG1zZywgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKICAgICAgICAgcmV0dXJuIEZBSUxFRCwgdGVzdF90aW1lCiAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NzbF9zZXJ2ZXJzLnB5IGIvTGliL3Rlc3Qvc3NsX3NlcnZlcnMucHkKaW5kZXggNzU5YjNmNC4uZjlkMzBjZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc3NsX3NlcnZlcnMucHkKKysrIGIvTGliL3Rlc3Qvc3NsX3NlcnZlcnMucHkKQEAgLTE1MCw3ICsxNTAsNyBAQAogZGVmIG1ha2VfaHR0cHNfc2VydmVyKGNhc2UsICosIGNvbnRleHQ9Tm9uZSwgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgaG9zdD1IT1NULCBoYW5kbGVyX2NsYXNzPU5vbmUpOgogICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIGNvbnRleHQgPSBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dChzc2wuUHVycG9zZS5DTElFTlRfQVVUSCkKICAgICAjIFdlIGFzc3VtZSB0aGUgY2VydGZpbGUgY29udGFpbnMgYm90aCBwcml2YXRlIGtleSBhbmQgY2VydGlmaWNhdGUKICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0ZmlsZSkKICAgICBzZXJ2ZXIgPSBIVFRQU1NlcnZlclRocmVhZChjb250ZXh0LCBob3N0LCBoYW5kbGVyX2NsYXNzKQpAQCAtMTgyLDYgKzE4Miw4IEBACiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jdXJ2ZS1uYW1lJywgZGVzdD0nY3VydmVfbmFtZScsIHR5cGU9c3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZScsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdjdXJ2ZSBuYW1lIGZvciBFQy1iYXNlZCBEaWZmaWUtSGVsbG1hbicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jaXBoZXJzJywgZGVzdD0nY2lwaGVycycsIHR5cGU9c3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nYWxsb3dlZCBjaXBoZXIgbGlzdCcpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1kaCcsIGRlc3Q9J2RoX2ZpbGUnLCB0eXBlPXN0ciwgYWN0aW9uPSdzdG9yZScsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdQRU0gZmlsZSBjb250YWluaW5nIERIIHBhcmFtZXRlcnMnKQogICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCkBAIC0xOTIsMTIgKzE5NCwxNCBAQAogICAgIGVsc2U6CiAgICAgICAgIGhhbmRsZXJfY2xhc3MgPSBSb290ZWRIVFRQUmVxdWVzdEhhbmRsZXIKICAgICAgICAgaGFuZGxlcl9jbGFzcy5yb290ID0gb3MuZ2V0Y3dkKCkKLSAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgIGNvbnRleHQgPSBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dChzc2wuUHVycG9zZS5DTElFTlRfQVVUSCkKICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKICAgICBpZiBhcmdzLmN1cnZlX25hbWU6CiAgICAgICAgIGNvbnRleHQuc2V0X2VjZGhfY3VydmUoYXJncy5jdXJ2ZV9uYW1lKQogICAgIGlmIGFyZ3MuZGhfZmlsZToKICAgICAgICAgY29udGV4dC5sb2FkX2RoX3BhcmFtcyhhcmdzLmRoX2ZpbGUpCisgICAgaWYgYXJncy5jaXBoZXJzOgorICAgICAgICBjb250ZXh0LnNldF9jaXBoZXJzKGFyZ3MuY2lwaGVycykKIAogICAgIHNlcnZlciA9IEhUVFBTU2VydmVyKCgiIiwgYXJncy5wb3J0KSwgaGFuZGxlcl9jbGFzcywgY29udGV4dCkKICAgICBpZiBhcmdzLnZlcmJvc2U6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zdHJpbmdfdGVzdHMucHkgYi9MaWIvdGVzdC9zdHJpbmdfdGVzdHMucHkKaW5kZXggMjQyYTkzMS4uNzYwNWYwZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc3RyaW5nX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L3N0cmluZ190ZXN0cy5weQpAQCAtNjg1LDcgKzY4NSw3IEBACiAKIAogY2xhc3MgQ29tbW9uVGVzdChCYXNlVGVzdCk6Ci0gICAgIyBUaGlzIHRlc3RjYXNlIGNvbnRhaW5zIHRlc3QgdGhhdCBjYW4gYmUgdXNlZCBpbiBhbGwKKyAgICAjIFRoaXMgdGVzdGNhc2UgY29udGFpbnMgdGVzdHMgdGhhdCBjYW4gYmUgdXNlZCBpbiBhbGwKICAgICAjIHN0cmluZ2xpa2UgY2xhc3Nlcy4gQ3VycmVudGx5IHRoaXMgaXMgc3RyLCB1bmljb2RlCiAgICAgIyBVc2VyU3RyaW5nIGFuZCB0aGUgc3RyaW5nIG1vZHVsZS4KIApAQCAtOTc2LDYgKzk3Niw5IEBACiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChUcnVlLCAnaGVsbG93b3JsZCcsICdzdGFydHN3aXRoJywgJ2xvd28nLCAzKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoVHJ1ZSwgJ2hlbGxvd29ybGQnLCAnc3RhcnRzd2l0aCcsICdsb3dvJywgMywgNykKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKEZhbHNlLCAnaGVsbG93b3JsZCcsICdzdGFydHN3aXRoJywgJ2xvd28nLCAzLCA2KQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoVHJ1ZSwgJycsICdzdGFydHN3aXRoJywgJycsIDAsIDEpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChUcnVlLCAnJywgJ3N0YXJ0c3dpdGgnLCAnJywgMCwgMCkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKEZhbHNlLCAnJywgJ3N0YXJ0c3dpdGgnLCAnJywgMSwgMCkKIAogICAgICAgICAjIHRlc3QgbmVnYXRpdmUgaW5kaWNlcwogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoVHJ1ZSwgJ2hlbGxvJywgJ3N0YXJ0c3dpdGgnLCAnaGUnLCAwLCAtMSkKQEAgLTEwMjIsNiArMTAyNSw5IEBACiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChGYWxzZSwgJ2hlbGxvd29ybGQnLCAnZW5kc3dpdGgnLCAnbG93bycsIDMsIDgpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChGYWxzZSwgJ2FiJywgJ2VuZHN3aXRoJywgJ2FiJywgMCwgMSkKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKEZhbHNlLCAnYWInLCAnZW5kc3dpdGgnLCAnYWInLCAwLCAwKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoVHJ1ZSwgJycsICdlbmRzd2l0aCcsICcnLCAwLCAxKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoVHJ1ZSwgJycsICdlbmRzd2l0aCcsICcnLCAwLCAwKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoRmFsc2UsICcnLCAnZW5kc3dpdGgnLCAnJywgMSwgMCkKIAogICAgICAgICAjIHRlc3QgbmVnYXRpdmUgaW5kaWNlcwogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoVHJ1ZSwgJ2hlbGxvJywgJ2VuZHN3aXRoJywgJ2xvJywgLTIpCkBAIC0xMTc2LDggKzExODIsNyBAQAogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2FiYycsICdfX21vZF9fJykKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICclKGZvbylzJywgJ19fbW9kX18nLCA0MikKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICclcyVzJywgJ19fbW9kX18nLCAoNDIsKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJyVjJywgJ19fbW9kX18nLCAoTm9uZSwpKQorICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJyVjJywgJ19fbW9kX18nLCAoTm9uZSwpKQogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFZhbHVlRXJyb3IsICclKGZvbycsICdfX21vZF9fJywge30pCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnJShmb28pcyAlKGJhcilzJywgJ19fbW9kX18nLCAoJ2ZvbycsIDQyKSkKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICclZCcsICdfX21vZF9fJywgIjQyIikgIyBub3QgbnVtZXJpYwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc3VwcG9ydC9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3N1cHBvcnQvX19pbml0X18ucHkKaW5kZXggY2RmODZlNy4uZGZiNGMyNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc3VwcG9ydC9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC9zdXBwb3J0L19faW5pdF9fLnB5CkBAIC04OCw3ICs4OCw3IEBACiAgICAgInNraXBfdW5sZXNzX3N5bWxpbmsiLCAicmVxdWlyZXNfZ3ppcCIsICJyZXF1aXJlc19iejIiLCAicmVxdWlyZXNfbHptYSIsCiAgICAgImJpZ21lbXRlc3QiLCAiYmlnYWRkcnNwYWNldGVzdCIsICJjcHl0aG9uX29ubHkiLCAiZ2V0X2F0dHJpYnV0ZSIsCiAgICAgInJlcXVpcmVzX0lFRUVfNzU0IiwgInNraXBfdW5sZXNzX3hhdHRyIiwgInJlcXVpcmVzX3psaWIiLAotICAgICJhbnRpY2lwYXRlX2ZhaWx1cmUiLCAibG9hZF9wYWNrYWdlX3Rlc3RzIiwKKyAgICAiYW50aWNpcGF0ZV9mYWlsdXJlIiwgImxvYWRfcGFja2FnZV90ZXN0cyIsICJkZXRlY3RfYXBpX21pc21hdGNoIiwKICAgICAjIHN5cwogICAgICJpc19qeXRob24iLCAiY2hlY2tfaW1wbF9kZXRhaWwiLAogICAgICMgbmV0d29yawpAQCAtMzc2LDM2ICszNzYsMzIgQEAKICAgICAgICAgcGFzcwogCiBkZWYgbWFrZV9sZWdhY3lfcHljKHNvdXJjZSk6Ci0gICAgIiIiTW92ZSBhIFBFUCAzMTQ3IHB5Yy9weW8gZmlsZSB0byBpdHMgbGVnYWN5IHB5Yy9weW8gbG9jYXRpb24uCi0KLSAgICBUaGUgY2hvaWNlIG9mIC5weWMgb3IgLnB5byBleHRlbnNpb24gaXMgZG9uZSBiYXNlZCBvbiB0aGUgX19kZWJ1Z19fIGZsYWcKLSAgICB2YWx1ZS4KKyAgICAiIiJNb3ZlIGEgUEVQIDMxNDcvNDg4IHB5YyBmaWxlIHRvIGl0cyBsZWdhY3kgcHljIGxvY2F0aW9uLgogCiAgICAgOnBhcmFtIHNvdXJjZTogVGhlIGZpbGUgc3lzdGVtIHBhdGggdG8gdGhlIHNvdXJjZSBmaWxlLiAgVGhlIHNvdXJjZSBmaWxlCi0gICAgICAgIGRvZXMgbm90IG5lZWQgdG8gZXhpc3QsIGhvd2V2ZXIgdGhlIFBFUCAzMTQ3IHB5YyBmaWxlIG11c3QgZXhpc3QuCisgICAgICAgIGRvZXMgbm90IG5lZWQgdG8gZXhpc3QsIGhvd2V2ZXIgdGhlIFBFUCAzMTQ3LzQ4OCBweWMgZmlsZSBtdXN0IGV4aXN0LgogICAgIDpyZXR1cm46IFRoZSBmaWxlIHN5c3RlbSBwYXRoIHRvIHRoZSBsZWdhY3kgcHljIGZpbGUuCiAgICAgIiIiCiAgICAgcHljX2ZpbGUgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShzb3VyY2UpCiAgICAgdXBfb25lID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChzb3VyY2UpKQotICAgIGxlZ2FjeV9weWMgPSBvcy5wYXRoLmpvaW4odXBfb25lLCBzb3VyY2UgKyAoJ2MnIGlmIF9fZGVidWdfXyBlbHNlICdvJykpCisgICAgbGVnYWN5X3B5YyA9IG9zLnBhdGguam9pbih1cF9vbmUsIHNvdXJjZSArICdjJykKICAgICBvcy5yZW5hbWUocHljX2ZpbGUsIGxlZ2FjeV9weWMpCiAgICAgcmV0dXJuIGxlZ2FjeV9weWMKIAogZGVmIGZvcmdldChtb2RuYW1lKToKICAgICAiIiInRm9yZ2V0JyBhIG1vZHVsZSB3YXMgZXZlciBpbXBvcnRlZC4KIAotICAgIFRoaXMgcmVtb3ZlcyB0aGUgbW9kdWxlIGZyb20gc3lzLm1vZHVsZXMgYW5kIGRlbGV0ZXMgYW55IFBFUCAzMTQ3IG9yCi0gICAgbGVnYWN5IC5weWMgYW5kIC5weW8gZmlsZXMuCisgICAgVGhpcyByZW1vdmVzIHRoZSBtb2R1bGUgZnJvbSBzeXMubW9kdWxlcyBhbmQgZGVsZXRlcyBhbnkgUEVQIDMxNDcvNDg4IG9yCisgICAgbGVnYWN5IC5weWMgZmlsZXMuCiAgICAgIiIiCiAgICAgdW5sb2FkKG1vZG5hbWUpCiAgICAgZm9yIGRpcm5hbWUgaW4gc3lzLnBhdGg6CiAgICAgICAgIHNvdXJjZSA9IG9zLnBhdGguam9pbihkaXJuYW1lLCBtb2RuYW1lICsgJy5weScpCiAgICAgICAgICMgSXQgZG9lc24ndCBtYXR0ZXIgaWYgdGhleSBleGlzdCBvciBub3QsIHVubGluayBhbGwgcG9zc2libGUKLSAgICAgICAgIyBjb21iaW5hdGlvbnMgb2YgUEVQIDMxNDcgYW5kIGxlZ2FjeSBweWMgYW5kIHB5byBmaWxlcy4KKyAgICAgICAgIyBjb21iaW5hdGlvbnMgb2YgUEVQIDMxNDcvNDg4IGFuZCBsZWdhY3kgcHljIGZpbGVzLgogICAgICAgICB1bmxpbmsoc291cmNlICsgJ2MnKQotICAgICAgICB1bmxpbmsoc291cmNlICsgJ28nKQotICAgICAgICB1bmxpbmsoaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc291cmNlLCBkZWJ1Z19vdmVycmlkZT1UcnVlKSkKLSAgICAgICAgdW5saW5rKGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHNvdXJjZSwgZGVidWdfb3ZlcnJpZGU9RmFsc2UpKQorICAgICAgICBmb3Igb3B0IGluICgnJywgMSwgMik6CisgICAgICAgICAgICB1bmxpbmsoaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc291cmNlLCBvcHRpbWl6YXRpb249b3B0KSkKIAogIyBDaGVjayB3aGV0aGVyIGEgZ3VpIGlzIGFjdHVhbGx5IGF2YWlsYWJsZQogZGVmIF9pc19ndWlfYXZhaWxhYmxlKCk6CkBAIC0xMDQyLDcgKzEwMzgsOCBAQAogICAgICMgVmVyaWZ5IHRoZSByZXF1aXJlbWVudCBiZWZvcmUgZG93bmxvYWRpbmcgdGhlIGZpbGUKICAgICByZXF1aXJlcygndXJsZmV0Y2gnKQogCi0gICAgcHJpbnQoJ1x0ZmV0Y2hpbmcgJXMgLi4uJyAlIHVybCwgZmlsZT1nZXRfb3JpZ2luYWxfc3Rkb3V0KCkpCisgICAgaWYgdmVyYm9zZToKKyAgICAgICAgcHJpbnQoJ1x0ZmV0Y2hpbmcgJXMgLi4uJyAlIHVybCwgZmlsZT1nZXRfb3JpZ2luYWxfc3Rkb3V0KCkpCiAgICAgb3BlbmVyID0gdXJsbGliLnJlcXVlc3QuYnVpbGRfb3BlbmVyKCkKICAgICBpZiBnemlwOgogICAgICAgICBvcGVuZXIuYWRkaGVhZGVycy5hcHBlbmQoKCdBY2NlcHQtRW5jb2RpbmcnLCAnZ3ppcCcpKQpAQCAtMTYxMSwxMiArMTYwOCwxNSBAQAogZGVmIGJpZ21lbXRlc3Qoc2l6ZSwgbWVtdXNlLCBkcnlfcnVuPVRydWUpOgogICAgICIiIkRlY29yYXRvciBmb3IgYmlnbWVtIHRlc3RzLgogCi0gICAgJ21pbnNpemUnIGlzIHRoZSBtaW5pbXVtIHVzZWZ1bCBzaXplIGZvciB0aGUgdGVzdCAoaW4gYXJiaXRyYXJ5LAotICAgIHRlc3QtaW50ZXJwcmV0ZWQgdW5pdHMuKSAnbWVtdXNlJyBpcyB0aGUgbnVtYmVyIG9mICdieXRlcyBwZXIgc2l6ZScgZm9yCi0gICAgdGhlIHRlc3QsIG9yIGEgZ29vZCBlc3RpbWF0ZSBvZiBpdC4KKyAgICAnc2l6ZScgaXMgYSByZXF1ZXN0ZWQgc2l6ZSBmb3IgdGhlIHRlc3QgKGluIGFyYml0cmFyeSwgdGVzdC1pbnRlcnByZXRlZAorICAgIHVuaXRzLikgJ21lbXVzZScgaXMgdGhlIG51bWJlciBvZiBieXRlcyBwZXIgdW5pdCBmb3IgdGhlIHRlc3QsIG9yIGEgZ29vZAorICAgIGVzdGltYXRlIG9mIGl0LiBGb3IgZXhhbXBsZSwgYSB0ZXN0IHRoYXQgbmVlZHMgdHdvIGJ5dGUgYnVmZmVycywgb2YgNCBHaUIKKyAgICBlYWNoLCBjb3VsZCBiZSBkZWNvcmF0ZWQgd2l0aCBAYmlnbWVtdGVzdChzaXplPV80RywgbWVtdXNlPTIpLgogCi0gICAgaWYgJ2RyeV9ydW4nIGlzIEZhbHNlLCBpdCBtZWFucyB0aGUgdGVzdCBkb2Vzbid0IHN1cHBvcnQgZHVtbXkgcnVucwotICAgIHdoZW4gLU0gaXMgbm90IHNwZWNpZmllZC4KKyAgICBUaGUgJ3NpemUnIGFyZ3VtZW50IGlzIG5vcm1hbGx5IHBhc3NlZCB0byB0aGUgZGVjb3JhdGVkIHRlc3QgbWV0aG9kIGFzIGFuCisgICAgZXh0cmEgYXJndW1lbnQuIElmICdkcnlfcnVuJyBpcyB0cnVlLCB0aGUgdmFsdWUgcGFzc2VkIHRvIHRoZSB0ZXN0IG1ldGhvZAorICAgIG1heSBiZSBsZXNzIHRoYW4gdGhlIHJlcXVlc3RlZCB2YWx1ZS4gSWYgJ2RyeV9ydW4nIGlzIGZhbHNlLCBpdCBtZWFucyB0aGUKKyAgICB0ZXN0IGRvZXNuJ3Qgc3VwcG9ydCBkdW1teSBydW5zIHdoZW4gLU0gaXMgbm90IHNwZWNpZmllZC4KICAgICAiIiIKICAgICBkZWYgZGVjb3JhdG9yKGYpOgogICAgICAgICBkZWYgd3JhcHBlcihzZWxmKToKQEAgLTIxODcsNiArMjE4NywyMSBAQAogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKIAorZGVmIGRldGVjdF9hcGlfbWlzbWF0Y2gocmVmX2FwaSwgb3RoZXJfYXBpLCAqLCBpZ25vcmU9KCkpOgorICAgICIiIlJldHVybnMgdGhlIHNldCBvZiBpdGVtcyBpbiByZWZfYXBpIG5vdCBpbiBvdGhlcl9hcGksIGV4Y2VwdCBmb3IgYQorICAgIGRlZmluZWQgbGlzdCBvZiBpdGVtcyB0byBiZSBpZ25vcmVkIGluIHRoaXMgY2hlY2suCisKKyAgICBCeSBkZWZhdWx0IHRoaXMgc2tpcHMgcHJpdmF0ZSBhdHRyaWJ1dGVzIGJlZ2lubmluZyB3aXRoICdfJyBidXQKKyAgICBpbmNsdWRlcyBhbGwgbWFnaWMgbWV0aG9kcywgaS5lLiB0aG9zZSBzdGFydGluZyBhbmQgZW5kaW5nIGluICdfXycuCisgICAgIiIiCisgICAgbWlzc2luZ19pdGVtcyA9IHNldChkaXIocmVmX2FwaSkpIC0gc2V0KGRpcihvdGhlcl9hcGkpKQorICAgIGlmIGlnbm9yZToKKyAgICAgICAgbWlzc2luZ19pdGVtcyAtPSBzZXQoaWdub3JlKQorICAgIG1pc3NpbmdfaXRlbXMgPSBzZXQobSBmb3IgbSBpbiBtaXNzaW5nX2l0ZW1zCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbS5zdGFydHN3aXRoKCdfJykgb3IgbS5lbmRzd2l0aCgnX18nKSkKKyAgICByZXR1cm4gbWlzc2luZ19pdGVtcworCisKIGNsYXNzIFN1cHByZXNzQ3Jhc2hSZXBvcnQ6CiAgICAgIiIiVHJ5IHRvIHByZXZlbnQgYSBjcmFzaCByZXBvcnQgZnJvbSBwb3BwaW5nIHVwLgogCkBAIC0yMTk0LDYgKzIyMDksNyBAQAogICAgIGRpc2FibGUgdGhlIGNyZWF0aW9uIG9mIGNvcmVkdW1wIGZpbGUuCiAgICAgIiIiCiAgICAgb2xkX3ZhbHVlID0gTm9uZQorICAgIG9sZF9tb2RlcyA9IE5vbmUKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgICIiIk9uIFdpbmRvd3MsIGRpc2FibGUgV2luZG93cyBFcnJvciBSZXBvcnRpbmcgZGlhbG9ncyB1c2luZwpAQCAtMjIxMSw2ICsyMjI3LDI2IEBACiAgICAgICAgICAgICBTRU1fTk9HUEZBVUxURVJST1JCT1ggPSAweDAyCiAgICAgICAgICAgICBzZWxmLm9sZF92YWx1ZSA9IHNlbGYuX2szMi5TZXRFcnJvck1vZGUoU0VNX05PR1BGQVVMVEVSUk9SQk9YKQogICAgICAgICAgICAgc2VsZi5fazMyLlNldEVycm9yTW9kZShzZWxmLm9sZF92YWx1ZSB8IFNFTV9OT0dQRkFVTFRFUlJPUkJPWCkKKworICAgICAgICAgICAgIyBTdXBwcmVzcyBhc3NlcnQgZGlhbG9ncyBpbiBkZWJ1ZyBidWlsZHMKKyAgICAgICAgICAgICMgKHNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjMzMTQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaW1wb3J0IG1zdmNydAorICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlCisgICAgICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBJbXBvcnRFcnJvcik6CisgICAgICAgICAgICAgICAgIyBubyBtc3ZjcnQgb3IgYSByZWxlYXNlIGJ1aWxkCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLm9sZF9tb2RlcyA9IHt9CisgICAgICAgICAgICAgICAgZm9yIHJlcG9ydF90eXBlIGluIFttc3ZjcnQuQ1JUX1dBUk4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ1JUX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LkNSVF9BU1NFUlRdOgorICAgICAgICAgICAgICAgICAgICBvbGRfbW9kZSA9IG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKHJlcG9ydF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DUlREQkdfTU9ERV9GSUxFKQorICAgICAgICAgICAgICAgICAgICBvbGRfZmlsZSA9IG1zdmNydC5DcnRTZXRSZXBvcnRGaWxlKHJlcG9ydF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DUlREQkdfRklMRV9TVERFUlIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYub2xkX21vZGVzW3JlcG9ydF90eXBlXSA9IG9sZF9tb2RlLCBvbGRfZmlsZQorCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpZiByZXNvdXJjZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0cnk6CkBAIC0yMjQyLDYgKzIyNzgsMTIgQEAKIAogICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CiAgICAgICAgICAgICBzZWxmLl9rMzIuU2V0RXJyb3JNb2RlKHNlbGYub2xkX3ZhbHVlKQorCisgICAgICAgICAgICBpZiBzZWxmLm9sZF9tb2RlczoKKyAgICAgICAgICAgICAgICBpbXBvcnQgbXN2Y3J0CisgICAgICAgICAgICAgICAgZm9yIHJlcG9ydF90eXBlLCAob2xkX21vZGUsIG9sZF9maWxlKSBpbiBzZWxmLm9sZF9tb2Rlcy5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZShyZXBvcnRfdHlwZSwgb2xkX21vZGUpCisgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRGaWxlKHJlcG9ydF90eXBlLCBvbGRfZmlsZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlmIHJlc291cmNlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NjcmlwdF9oZWxwZXIucHkgYi9MaWIvdGVzdC9zdXBwb3J0L3NjcmlwdF9oZWxwZXIucHkKc2ltaWxhcml0eSBpbmRleCA4NyUKcmVuYW1lIGZyb20gTGliL3Rlc3Qvc2NyaXB0X2hlbHBlci5weQpyZW5hbWUgdG8gTGliL3Rlc3Qvc3VwcG9ydC9zY3JpcHRfaGVscGVyLnB5CmluZGV4IGQyNzQ5NmIuLjljMmU5ZWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NjcmlwdF9oZWxwZXIucHkKKysrIGIvTGliL3Rlc3Qvc3VwcG9ydC9zY3JpcHRfaGVscGVyLnB5CkBAIC0xNCwxMyArMTQsMTMgQEAKIGltcG9ydCB6aXBmaWxlCiAKIGZyb20gaW1wb3J0bGliLnV0aWwgaW1wb3J0IHNvdXJjZV9mcm9tX2NhY2hlCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgbWFrZV9sZWdhY3lfcHljLCBzdHJpcF9weXRob25fc3RkZXJyLCB0ZW1wX2RpcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IG1ha2VfbGVnYWN5X3B5Yywgc3RyaXBfcHl0aG9uX3N0ZGVycgogCiAKICMgQ2FjaGVkIHJlc3VsdCBvZiB0aGUgZXhwZW5zaXZlIHRlc3QgcGVyZm9ybWVkIGluIHRoZSBmdW5jdGlvbiBiZWxvdy4KIF9fY2FjaGVkX2ludGVycF9yZXF1aXJlc19lbnZpcm9ubWVudCA9IE5vbmUKIAotZGVmIF9pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpOgorZGVmIGludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCk6CiAgICAgIiIiCiAgICAgUmV0dXJucyBUcnVlIGlmIG91ciBzeXMuZXhlY3V0YWJsZSBpbnRlcnByZXRlciByZXF1aXJlcyBlbnZpcm9ubWVudAogICAgIHZhcmlhYmxlcyBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHJ1biBhdCBhbGwuCkBAIC01Nyw3ICs1Nyw3IEBACiAKICMgRXhlY3V0aW5nIHRoZSBpbnRlcnByZXRlciBpbiBhIHN1YnByb2Nlc3MKIGRlZiBydW5fcHl0aG9uX3VudGlsX2VuZCgqYXJncywgKiplbnZfdmFycyk6Ci0gICAgZW52X3JlcXVpcmVkID0gX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkKKyAgICBlbnZfcmVxdWlyZWQgPSBpbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpCiAgICAgaWYgJ19faXNvbGF0ZWQnIGluIGVudl92YXJzOgogICAgICAgICBpc29sYXRlZCA9IGVudl92YXJzLnBvcCgnX19pc29sYXRlZCcpCiAgICAgZWxzZToKQEAgLTk1LDEwICs5NSwzMCBAQAogZGVmIF9hc3NlcnRfcHl0aG9uKGV4cGVjdGVkX3N1Y2Nlc3MsICphcmdzLCAqKmVudl92YXJzKToKICAgICByZXMsIGNtZF9saW5lID0gcnVuX3B5dGhvbl91bnRpbF9lbmQoKmFyZ3MsICoqZW52X3ZhcnMpCiAgICAgaWYgKHJlcy5yYyBhbmQgZXhwZWN0ZWRfc3VjY2Vzcykgb3IgKG5vdCByZXMucmMgYW5kIG5vdCBleHBlY3RlZF9zdWNjZXNzKToKLSAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCi0gICAgICAgICAgICAiUHJvY2VzcyByZXR1cm4gY29kZSBpcyAlZCwgY29tbWFuZCBsaW5lIHdhczogJXIsICIKLSAgICAgICAgICAgICJzdGRlcnIgZm9sbG93czpcbiVzIiAlIChyZXMucmMsIGNtZF9saW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5lcnIuZGVjb2RlKCdhc2NpaScsICdpZ25vcmUnKSkpCisgICAgICAgICMgTGltaXQgdG8gODAgbGluZXMgdG8gQVNDSUkgY2hhcmFjdGVycworICAgICAgICBtYXhsZW4gPSA4MCAqIDEwMAorICAgICAgICBvdXQsIGVyciA9IHJlcy5vdXQsIHJlcy5lcnIKKyAgICAgICAgaWYgbGVuKG91dCkgPiBtYXhsZW46CisgICAgICAgICAgICBvdXQgPSBiJyguLi4gdHJ1bmNhdGVkIHN0ZG91dCAuLi4pJyArIG91dFstbWF4bGVuOl0KKyAgICAgICAgaWYgbGVuKGVycikgPiBtYXhsZW46CisgICAgICAgICAgICBlcnIgPSBiJyguLi4gdHJ1bmNhdGVkIHN0ZGVyciAuLi4pJyArIGVyclstbWF4bGVuOl0KKyAgICAgICAgb3V0ID0gb3V0LmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpLnJzdHJpcCgpCisgICAgICAgIGVyciA9IGVyci5kZWNvZGUoJ2FzY2lpJywgJ3JlcGxhY2UnKS5yc3RyaXAoKQorICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiUHJvY2VzcyByZXR1cm4gY29kZSBpcyAlZFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCBsaW5lOiAlclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGRvdXQ6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLS1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLS1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkZXJyOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS0tXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS0tIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChyZXMucmMsIGNtZF9saW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycikpCiAgICAgcmV0dXJuIHJlcwogCiBkZWYgYXNzZXJ0X3B5dGhvbl9vaygqYXJncywgKiplbnZfdmFycyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X19fZnV0dXJlX18ucHkgYi9MaWIvdGVzdC90ZXN0X19fZnV0dXJlX18ucHkKaW5kZXggNmY3M2M3Zi4uNTU5YTE4NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9fX2Z1dHVyZV9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfX19mdXR1cmVfXy5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgX19mdXR1cmVfXwogCiBHT09EX1NFUklBTFMgPSAoImFscGhhIiwgImJldGEiLCAiY2FuZGlkYXRlIiwgImZpbmFsIikKQEAgLTU4LDggKzU3LDUgQEAKICAgICAgICAgICAgICAgICAgICAiLmNvbXBpbGVyX2ZsYWcgaXNuJ3QgaW50IikKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRnV0dXJlVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9fb3Bjb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF9fb3Bjb2RlLnB5CmluZGV4IDAxNTJlOWQuLjEwNzVkZWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfX29wY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X19vcGNvZGUucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgZGlzCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBpbXBvcnRfbW9kdWxlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZQogaW1wb3J0IHVuaXR0ZXN0CiAKIF9vcGNvZGUgPSBpbXBvcnRfbW9kdWxlKCJfb3Bjb2RlIikKQEAgLTE2LDggKzE2LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgX29wY29kZS5zdGFja19lZmZlY3QsIGRpcy5vcG1hcFsnQlVJTERfU0xJQ0UnXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgX29wY29kZS5zdGFja19lZmZlY3QsIGRpcy5vcG1hcFsnUE9QX1RPUCddLCAwKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KE9wY29kZVRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5CmluZGV4IDVkY2FkZjcuLmFjNjMyNWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5CkBAIC0yNzMsOSArMjczLDUgQEAKICAgICAgICAgcmVzdWx0ID0gX29zeF9zdXBwb3J0LmdldF9wbGF0Zm9ybV9vc3goY29uZmlnX3ZhcnMsICcgJywgJyAnLCAnICcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCdtYWNvc3gnLCAnMTAuNicsICdmYXQnKSwgcmVzdWx0KQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgotICAgICAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RfT1NYU3VwcG9ydCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkKaW5kZXggNWVmZGI2Ny4uZjQ4ZTg1YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5CkBAIC0yMCwxNSArMjAsNiBAQAogCiBjbGFzcyBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBkZWYgYXNzZXJ0RXF1YWwoc2VsZiwgb2JqMSwgb2JqMik6Ci0gICAgICAgIGlmIG9iajEgIT0gb2JqMjoKLSAgICAgICAgICAgIHByaW50KCcnKQotICAgICAgICAgICAgcHJpbnQocmVwcihvYmoxKSkKLSAgICAgICAgICAgIHByaW50KHJlcHIob2JqMikpCi0gICAgICAgICAgICBwcmludChvYmoxKQotICAgICAgICAgICAgcHJpbnQob2JqMikKLSAgICAgICAgc3VwZXIoVGVzdENhc2UsIHNlbGYpLmFzc2VydEVxdWFsKG9iajEsIG9iajIpCi0KICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgICMgVGhlIHRlc3RzIGFzc3VtZSB0aGF0IGxpbmUgd3JhcHBpbmcgb2NjdXJzIGF0IDgwIGNvbHVtbnMsIGJ1dCB0aGlzCiAgICAgICAgICMgYmVoYXZpb3VyIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHNldHRpbmcgdGhlIENPTFVNTlMgZW52aXJvbm1lbnQKQEAgLTc4LDkgKzY5LDYgQEAKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgcmV0dXJuIHZhcnMoc2VsZikgPT0gdmFycyhvdGhlcikKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4gbm90IChzZWxmID09IG90aGVyKQotCiAKIGNsYXNzIEFyZ3VtZW50UGFyc2VyRXJyb3IoRXhjZXB0aW9uKToKIApAQCAtNzY1LDYgKzc1MywzOSBAQAogICAgIF0KIAogCitjbGFzcyBUZXN0T3B0aW9uYWxzQWxsb3dMb25nQWJicmV2aWF0aW9uKFBhcnNlclRlc3RDYXNlKToKKyAgICAiIiJBbGxvdyBsb25nIG9wdGlvbnMgdG8gYmUgYWJicmV2aWF0ZWQgdW5hbWJpZ3VvdXNseSIiIgorCisgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFsKKyAgICAgICAgU2lnKCctLWZvbycpLAorICAgICAgICBTaWcoJy0tZm9vYmF6JyksCisgICAgICAgIFNpZygnLS1mb29ibGUnLCBhY3Rpb249J3N0b3JlX3RydWUnKSwKKyAgICBdCisgICAgZmFpbHVyZXMgPSBbJy0tZm9vYiA1JywgJy0tZm9vYiddCisgICAgc3VjY2Vzc2VzID0gWworICAgICAgICAoJycsIE5TKGZvbz1Ob25lLCBmb29iYXo9Tm9uZSwgZm9vYmxlPUZhbHNlKSksCisgICAgICAgICgnLS1mb28gNycsIE5TKGZvbz0nNycsIGZvb2Jhej1Ob25lLCBmb29ibGU9RmFsc2UpKSwKKyAgICAgICAgKCctLWZvb2JhIGEnLCBOUyhmb289Tm9uZSwgZm9vYmF6PSdhJywgZm9vYmxlPUZhbHNlKSksCisgICAgICAgICgnLS1mb29ibCAtLWZvbyBnJywgTlMoZm9vPSdnJywgZm9vYmF6PU5vbmUsIGZvb2JsZT1UcnVlKSksCisgICAgXQorCisKK2NsYXNzIFRlc3RPcHRpb25hbHNEaXNhbGxvd0xvbmdBYmJyZXZpYXRpb24oUGFyc2VyVGVzdENhc2UpOgorICAgICIiIkRvIG5vdCBhbGxvdyBhYmJyZXZpYXRpb25zIG9mIGxvbmcgb3B0aW9ucyBhdCBhbGwiIiIKKworICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcoYWxsb3dfYWJicmV2PUZhbHNlKQorICAgIGFyZ3VtZW50X3NpZ25hdHVyZXMgPSBbCisgICAgICAgIFNpZygnLS1mb28nKSwKKyAgICAgICAgU2lnKCctLWZvb2RsZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpLAorICAgICAgICBTaWcoJy0tZm9vbmx5JyksCisgICAgXQorICAgIGZhaWx1cmVzID0gWyctZm9vbiAzJywgJy0tZm9vbiAzJywgJy0tZm9vZCcsICctLWZvb2QgLS1mb28gMiddCisgICAgc3VjY2Vzc2VzID0gWworICAgICAgICAoJycsIE5TKGZvbz1Ob25lLCBmb29kbGU9RmFsc2UsIGZvb25seT1Ob25lKSksCisgICAgICAgICgnLS1mb28gMycsIE5TKGZvbz0nMycsIGZvb2RsZT1GYWxzZSwgZm9vbmx5PU5vbmUpKSwKKyAgICAgICAgKCctLWZvb25seSA3IC0tZm9vZGxlIC0tZm9vIDInLCBOUyhmb289JzInLCBmb29kbGU9VHJ1ZSwgZm9vbmx5PSc3JykpLAorICAgIF0KKwogIyA9PT09PT09PT09PT09PT09CiAjIFBvc2l0aW9uYWwgdGVzdHMKICMgPT09PT09PT09PT09PT09PQpAQCAtMTk5MywxNCArMjAxNCw5IEBACiAgICAgICAgICAgICAnJycpKQogCiAgICAgZGVmIF90ZXN0X3N1YnBhcnNlcl9oZWxwKHNlbGYsIGFyZ3Nfc3RyLCBleHBlY3RlZF9oZWxwKToKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2VsZi5wYXJzZXIucGFyc2VfYXJncyhhcmdzX3N0ci5zcGxpdCgpKQotICAgICAgICBleGNlcHQgQXJndW1lbnRQYXJzZXJFcnJvcjoKLSAgICAgICAgICAgIGVyciA9IHN5cy5leGNfaW5mbygpWzFdCi0gICAgICAgICAgICBpZiBlcnIuc3Rkb3V0ICE9IGV4cGVjdGVkX2hlbHA6Ci0gICAgICAgICAgICAgICAgcHJpbnQocmVwcihleHBlY3RlZF9oZWxwKSkKLSAgICAgICAgICAgICAgICBwcmludChyZXByKGVyci5zdGRvdXQpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuc3Rkb3V0LCBleHBlY3RlZF9oZWxwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2hlbHAsIGNtLmV4Y2VwdGlvbi5zdGRvdXQpCiAKICAgICBkZWYgdGVzdF9zdWJwYXJzZXIxX2hlbHAoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3Rfc3VicGFyc2VyX2hlbHAoJzUuMCAxIC1oJywgdGV4dHdyYXAuZGVkZW50KCcnJ1wKQEAgLTI4NDYsMTUgKzI4NjIsMTUgQEAKIAogICAgIGRlZiB0ZXN0X2dldF9kZWZhdWx0KHNlbGYpOgogICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcGFyc2VyLmdldF9kZWZhdWx0KCJmb28iKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBwYXJzZXIuZ2V0X2RlZmF1bHQoImJhciIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXJzZXIuZ2V0X2RlZmF1bHQoImZvbyIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXJzZXIuZ2V0X2RlZmF1bHQoImJhciIpKQogCiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tZm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBwYXJzZXIuZ2V0X2RlZmF1bHQoImZvbyIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHBhcnNlci5nZXRfZGVmYXVsdCgiYmFyIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhcnNlci5nZXRfZGVmYXVsdCgiZm9vIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhcnNlci5nZXRfZGVmYXVsdCgiYmFyIikpCiAKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1iYXIiLCB0eXBlPWludCwgZGVmYXVsdD00MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBwYXJzZXIuZ2V0X2RlZmF1bHQoImZvbyIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXJzZXIuZ2V0X2RlZmF1bHQoImZvbyIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQyLCBwYXJzZXIuZ2V0X2RlZmF1bHQoImJhciIpKQogCiAgICAgICAgIHBhcnNlci5zZXRfZGVmYXVsdHMoZm9vPSJiYWRnZXIiKQpAQCAtMjg2OSwxOCArMjg4NSwxNiBAQAogCiAgICAgZGVmIHRlc3RfZW1wdHkoc2VsZik6CiAgICAgICAgIG5zID0gYXJncGFyc2UuTmFtZXNwYWNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJyBpbiBucywgRmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgbm90IGluIG5zLCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd4JyBpbiBucywgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJycsIG5zKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCd4JywgbnMpCiAKICAgICBkZWYgdGVzdF9ub25fZW1wdHkoc2VsZik6CiAgICAgICAgIG5zID0gYXJncGFyc2UuTmFtZXNwYWNlKHg9MSwgeT0yKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd4JyBpbiBucywgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgneCcgbm90IGluIG5zLCBGYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgneScgaW4gbnMsIFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgaW4gbnMsIEZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd4eCcgaW4gbnMsIEZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd6JyBpbiBucywgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJycsIG5zKQorICAgICAgICBzZWxmLmFzc2VydEluKCd4JywgbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3knLCBucykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigneHgnLCBucykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigneicsIG5zKQogCiAjID09PT09PT09PT09PT09PT09PT09PQogIyBIZWxwIGZvcm1hdHRpbmcgdGVzdHMKQEAgLTI5MzYsMTMgKzI5NTAsNiBAQAogICAgICAgICAgICAgZGVmIF90ZXN0KHNlbGYsIHRlc3RlciwgcGFyc2VyX3RleHQpOgogICAgICAgICAgICAgICAgIGV4cGVjdGVkX3RleHQgPSBnZXRhdHRyKHRlc3Rlciwgc2VsZi5mdW5jX3N1ZmZpeCkKICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXh0ID0gdGV4dHdyYXAuZGVkZW50KGV4cGVjdGVkX3RleHQpCi0gICAgICAgICAgICAgICAgaWYgZXhwZWN0ZWRfdGV4dCAhPSBwYXJzZXJfdGV4dDoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQocmVwcihleHBlY3RlZF90ZXh0KSkKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQocmVwcihwYXJzZXJfdGV4dCkpCi0gICAgICAgICAgICAgICAgICAgIGZvciBjaGFyMSwgY2hhcjIgaW4gemlwKGV4cGVjdGVkX3RleHQsIHBhcnNlcl90ZXh0KToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIxICE9IGNoYXIyOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdmaXJzdCBkaWZmOiAlciAlcicgJSAoY2hhcjEsIGNoYXIyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIHRlc3Rlci5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXh0LCBwYXJzZXJfdGV4dCkKIAogICAgICAgICAgICAgZGVmIHRlc3RfZm9ybWF0KHNlbGYsIHRlc3Rlcik6CkBAIC00MjIxLDI0ICs0MjI4LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VmFsdWVFcnJvcignZm9vJywgYWN0aW9uPSdiYXonKQogICAgICAgICBzZWxmLmFzc2VydFZhbHVlRXJyb3IoJy0tZm9vJywgYWN0aW9uPSgnc3RvcmUnLCAnYXBwZW5kJykpCiAgICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1mb28iLCBhY3Rpb249InN0b3JlLXRydWUiKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIGUgPSBzeXMuZXhjX2luZm8oKVsxXQotICAgICAgICAgICAgZXhwZWN0ZWQgPSAndW5rbm93biBhY3Rpb24nCi0gICAgICAgICAgICBtc2cgPSAnZXhwZWN0ZWQgJXIsIGZvdW5kICVyJyAlIChleHBlY3RlZCwgZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleHBlY3RlZCBpbiBzdHIoZSksIG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRJbigndW5rbm93biBhY3Rpb24nLCBzdHIoY20uZXhjZXB0aW9uKSkKIAogICAgIGRlZiB0ZXN0X211bHRpcGxlX2Rlc3Qoc2VsZik6CiAgICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudChkZXN0PSdmb28nKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CiAgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdiYXInLCBkZXN0PSdiYXonKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIGUgPSBzeXMuZXhjX2luZm8oKVsxXQotICAgICAgICAgICAgZXhwZWN0ZWQgPSAnZGVzdCBzdXBwbGllZCB0d2ljZSBmb3IgcG9zaXRpb25hbCBhcmd1bWVudCcKLSAgICAgICAgICAgIG1zZyA9ICdleHBlY3RlZCAlciwgZm91bmQgJXInICUgKGV4cGVjdGVkLCBlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4cGVjdGVkIGluIHN0cihlKSwgbXNnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdkZXN0IHN1cHBsaWVkIHR3aWNlIGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50JywKKyAgICAgICAgICAgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSkKIAogICAgIGRlZiB0ZXN0X25vX2FyZ3VtZW50X2FjdGlvbnMoc2VsZik6CiAgICAgICAgIGZvciBhY3Rpb24gaW4gWydzdG9yZV9jb25zdCcsICdzdG9yZV90cnVlJywgJ3N0b3JlX2ZhbHNlJywKQEAgLTQzOTUsMTggKzQzOTUsMTAgQEAKIGNsYXNzIFRlc3RPcHRpb25hbHNIZWxwVmVyc2lvbkFjdGlvbnMoVGVzdENhc2UpOgogICAgICIiIlRlc3QgdGhlIGhlbHAgYW5kIHZlcnNpb24gYWN0aW9ucyIiIgogCi0gICAgZGVmIF9nZXRfZXJyb3Ioc2VsZiwgZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnVuYygqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIGV4Y2VwdCBBcmd1bWVudFBhcnNlckVycm9yOgotICAgICAgICAgICAgcmV0dXJuIHN5cy5leGNfaW5mbygpWzFdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yLCBmdW5jLCAqYXJncywgKiprd2FyZ3MpCi0KICAgICBkZWYgYXNzZXJ0UHJpbnRIZWxwRXhpdChzZWxmLCBwYXJzZXIsIGFyZ3Nfc3RyKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHBhcnNlci5mb3JtYXRfaGVscCgpLAotICAgICAgICAgICAgc2VsZi5fZ2V0X2Vycm9yKHBhcnNlci5wYXJzZV9hcmdzLCBhcmdzX3N0ci5zcGxpdCgpKS5zdGRvdXQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRQYXJzZXJFcnJvcikgYXMgY206CisgICAgICAgICAgICBwYXJzZXIucGFyc2VfYXJncyhhcmdzX3N0ci5zcGxpdCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5mb3JtYXRfaGVscCgpLCBjbS5leGNlcHRpb24uc3Rkb3V0KQogCiAgICAgZGVmIGFzc2VydEFyZ3VtZW50UGFyc2VyRXJyb3Ioc2VsZiwgcGFyc2VyLCAqYXJncyk6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IsIHBhcnNlci5wYXJzZV9hcmdzLCBhcmdzKQpAQCAtNDQyMSw4ICs0NDEzLDkgQEAKICAgICBkZWYgdGVzdF92ZXJzaW9uX2Zvcm1hdChzZWxmKToKICAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nUFBQJykKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nJShwcm9nKXMgMy41JykKLSAgICAgICAgbXNnID0gc2VsZi5fZ2V0X2Vycm9yKHBhcnNlci5wYXJzZV9hcmdzLCBbJy12J10pLnN0ZG91dAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQUFAgMy41XG4nLCBtc2cpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRQYXJzZXJFcnJvcikgYXMgY206CisgICAgICAgICAgICBwYXJzZXIucGFyc2VfYXJncyhbJy12J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1BQUCAzLjVcbicsIGNtLmV4Y2VwdGlvbi5zdGRvdXQpCiAKICAgICBkZWYgdGVzdF92ZXJzaW9uX25vX2hlbHAoc2VsZik6CiAgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKGFkZF9oZWxwPUZhbHNlKQpAQCAtNDQzNCw4ICs0NDI3LDkgQEAKICAgICBkZWYgdGVzdF92ZXJzaW9uX2FjdGlvbihzZWxmKToKICAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nWFhYJykKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLVYnLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPSclKHByb2cpcyAzLjcnKQotICAgICAgICBtc2cgPSBzZWxmLl9nZXRfZXJyb3IocGFyc2VyLnBhcnNlX2FyZ3MsIFsnLVYnXSkuc3Rkb3V0Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1hYWCAzLjdcbicsIG1zZykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHBhcnNlci5wYXJzZV9hcmdzKFsnLVYnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWFhYIDMuN1xuJywgY20uZXhjZXB0aW9uLnN0ZG91dCkKIAogICAgIGRlZiB0ZXN0X25vX2hlbHAoc2VsZik6CiAgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKGFkZF9oZWxwPUZhbHNlKQpAQCAtNDYwNSwxNCArNDU5OSwxMCBAQAogCiAgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHByb2c9J1BST0cnLCBhZGRfaGVscD1GYWxzZSkKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgneCcsIHR5cGU9c3BhbSkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgcGFyc2VyLnBhcnNlX2FyZ3MoWydYWFgnXSkKLSAgICAgICAgZXhjZXB0IEFyZ3VtZW50UGFyc2VyRXJyb3I6Ci0gICAgICAgICAgICBleHBlY3RlZCA9ICd1c2FnZTogUFJPRyB4XG5QUk9HOiBlcnJvcjogYXJndW1lbnQgeDogc3BhbSFcbicKLSAgICAgICAgICAgIG1zZyA9IHN5cy5leGNfaW5mbygpWzFdLnN0ZGVycgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgbXNnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndXNhZ2U6IFBST0cgeFxuUFJPRzogZXJyb3I6IGFyZ3VtZW50IHg6IHNwYW0hXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5zdGRlcnIpCiAKICMgPT09PT09PT09PT09PT09PT09PT09PT09PQogIyBNZXNzYWdlQ29udGVudEVycm9yIHRlc3RzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FycmF5LnB5IGIvTGliL3Rlc3QvdGVzdF9hcnJheS5weQppbmRleCAwN2M5YmY5Li4xMGQ5OTQ2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FycmF5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkKQEAgLTM5NCw3ICszOTQsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGIpCiAKICAgICBkZWYgdGVzdF90b2Zyb21zdHJpbmcoc2VsZik6Ci0gICAgICAgIG5iX3dhcm5pbmdzID0gNAorICAgICAgICAjIFdhcm5pbmdzIG5vdCByYWlzZWQgd2hlbiBhcmd1bWVudHMgYXJlIGluY29ycmVjdCBhcyBBcmd1bWVudCBDbGluaWMKKyAgICAgICAgIyBoYW5kbGVzIHRoYXQgYmVmb3JlIHRoZSB3YXJuaW5nIGNhbiBiZSByYWlzZWQuCisgICAgICAgIG5iX3dhcm5pbmdzID0gMgogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyByOgogICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPXIiKHRvfGZyb20pc3RyaW5nXChcKSBpcyBkZXByZWNhdGVkIiwKQEAgLTEwMzksNiArMTA0MSwxMSBAQAogICAgICAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsICJmb28iKQogICAgICAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIGFycmF5LmFycmF5KCd1JywgJ2ZvbycpKQogCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfb2Jzb2xldGVfd3JpdGVfbG9jayhzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGJ1ZmZlcl93aXRoX251bGxfdmlldworICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ0InLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBnZXRidWZmZXJfd2l0aF9udWxsX3ZpZXcsIGEpCiAKIGNsYXNzIFN0cmluZ1Rlc3QoQmFzZVRlc3QpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzZGxfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9hc2RsX3BhcnNlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWJjNjg0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9hc2RsX3BhcnNlci5weQpAQCAtMCwwICsxLDEyMiBAQAorIiIiVGVzdHMgZm9yIHRoZSBhc2RsIHBhcnNlciBpbiBQYXJzZXIvYXNkbC5weSIiIgorCitpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQoraW1wb3J0IG9zCitmcm9tIG9zLnBhdGggaW1wb3J0IGRpcm5hbWUKK2ltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKK2ltcG9ydCB1bml0dGVzdAorCisKKyMgVGhpcyB0ZXN0IGlzIG9ubHkgcmVsZXZhbnQgZm9yIGZyb20tc291cmNlIGJ1aWxkcyBvZiBQeXRob24uCitpZiBub3Qgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCd0ZXN0IGlycmVsZXZhbnQgZm9yIGFuIGluc3RhbGxlZCBQeXRob24nKQorCitzcmNfYmFzZSA9IGRpcm5hbWUoZGlybmFtZShkaXJuYW1lKF9fZmlsZV9fKSkpCitwYXJzZXJfZGlyID0gb3MucGF0aC5qb2luKHNyY19iYXNlLCAnUGFyc2VyJykKKworCitjbGFzcyBUZXN0QXNkbFBhcnNlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgIyBMb2FkcyB0aGUgYXNkbCBtb2R1bGUgZHluYW1pY2FsbHksIHNpbmNlIGl0J3Mgbm90IGluIGEgcmVhbCBpbXBvcnRhYmxlCisgICAgICAgICMgcGFja2FnZS4KKyAgICAgICAgIyBQYXJzZXMgUHl0aG9uLmFzZGwgaW50byBhbiBhc3QuTW9kdWxlIGFuZCBydW4gdGhlIGNoZWNrIG9uIGl0LgorICAgICAgICAjIFRoZXJlJ3Mgbm8gbmVlZCB0byBkbyB0aGlzIGZvciBlYWNoIHRlc3QgbWV0aG9kLCBoZW5jZSBzZXRVcENsYXNzLgorICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgcGFyc2VyX2RpcikKKyAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKAorICAgICAgICAgICAgICAgICdhc2RsJywgb3MucGF0aC5qb2luKHBhcnNlcl9kaXIsICdhc2RsLnB5JykpCisgICAgICAgIGNscy5hc2RsID0gbG9hZGVyLmxvYWRfbW9kdWxlKCkKKyAgICAgICAgY2xzLm1vZCA9IGNscy5hc2RsLnBhcnNlKG9zLnBhdGguam9pbihwYXJzZXJfZGlyLCAnUHl0aG9uLmFzZGwnKSkKKyAgICAgICAgY2xzLmFzc2VydFRydWUoY2xzLmFzZGwuY2hlY2soY2xzLm1vZCksICdNb2R1bGUgdmFsaWRhdGlvbiBmYWlsZWQnKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgZGVsIHN5cy5wYXRoWzBdCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICMgYWxpYXMgc3R1ZmYgZnJvbSB0aGUgY2xhc3MsIGZvciBjb252ZW5pZW5jZQorICAgICAgICBzZWxmLmFzZGwgPSBUZXN0QXNkbFBhcnNlci5hc2RsCisgICAgICAgIHNlbGYubW9kID0gVGVzdEFzZGxQYXJzZXIubW9kCisgICAgICAgIHNlbGYudHlwZXMgPSBzZWxmLm1vZC50eXBlcworCisgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubW9kLm5hbWUsICdQeXRob24nKQorICAgICAgICBzZWxmLmFzc2VydEluKCdzdG10Jywgc2VsZi50eXBlcykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignZXhwcicsIHNlbGYudHlwZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ21vZCcsIHNlbGYudHlwZXMpCisKKyAgICBkZWYgdGVzdF9kZWZpbml0aW9ucyhzZWxmKToKKyAgICAgICAgZGVmcyA9IHNlbGYubW9kLmRmbnMKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRlZnNbMF0sIHNlbGYuYXNkbC5UeXBlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGVmc1swXS52YWx1ZSwgc2VsZi5hc2RsLlN1bSkKKworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VsZi50eXBlc1snd2l0aGl0ZW0nXSwgc2VsZi5hc2RsLlByb2R1Y3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWxmLnR5cGVzWydhbGlhcyddLCBzZWxmLmFzZGwuUHJvZHVjdCkKKworICAgIGRlZiB0ZXN0X3Byb2R1Y3Qoc2VsZik6CisgICAgICAgIGFsaWFzID0gc2VsZi50eXBlc1snYWxpYXMnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyKGFsaWFzKSwKKyAgICAgICAgICAgICdQcm9kdWN0KFtGaWVsZChpZGVudGlmaWVyLCBuYW1lKSwgRmllbGQoaWRlbnRpZmllciwgYXNuYW1lLCBvcHQ9VHJ1ZSldKScpCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBzdG10ID0gc2VsZi50eXBlc1snc3RtdCddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHN0bXQuYXR0cmlidXRlcyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHN0bXQuYXR0cmlidXRlc1swXSksICdGaWVsZChpbnQsIGxpbmVubyknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzdG10LmF0dHJpYnV0ZXNbMV0pLCAnRmllbGQoaW50LCBjb2xfb2Zmc2V0KScpCisKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3Rvcl9maWVsZHMoc2VsZik6CisgICAgICAgIGVoYW5kbGVyID0gc2VsZi50eXBlc1snZXhjZXB0aGFuZGxlciddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVoYW5kbGVyLnR5cGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZWhhbmRsZXIuYXR0cmlidXRlcyksIDIpCisKKyAgICAgICAgY29ucyA9IGVoYW5kbGVyLnR5cGVzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjb25zLCBzZWxmLmFzZGwuQ29uc3RydWN0b3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNvbnMuZmllbGRzKSwgMykKKworICAgICAgICBmMCA9IGNvbnMuZmllbGRzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZjAudHlwZSwgJ2V4cHInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYwLm5hbWUsICd0eXBlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYwLm9wdCkKKworICAgICAgICBmMSA9IGNvbnMuZmllbGRzWzFdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZjEudHlwZSwgJ2lkZW50aWZpZXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYxLm5hbWUsICduYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYxLm9wdCkKKworICAgICAgICBmMiA9IGNvbnMuZmllbGRzWzJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZjIudHlwZSwgJ3N0bXQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYyLm5hbWUsICdib2R5JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmMi5vcHQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmMi5zZXEpCisKKyAgICBkZWYgdGVzdF92aXNpdG9yKHNlbGYpOgorICAgICAgICBjbGFzcyBDdXN0b21WaXNpdG9yKHNlbGYuYXNkbC5WaXNpdG9yQmFzZSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisgICAgICAgICAgICAgICAgc2VsZi5uYW1lc193aXRoX3NlcSA9IFtdCisKKyAgICAgICAgICAgIGRlZiB2aXNpdE1vZHVsZShzZWxmLCBtb2QpOgorICAgICAgICAgICAgICAgIGZvciBkZm4gaW4gbW9kLmRmbnM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudmlzaXQoZGZuKQorCisgICAgICAgICAgICBkZWYgdmlzaXRUeXBlKHNlbGYsIHR5cGUpOgorICAgICAgICAgICAgICAgIHNlbGYudmlzaXQodHlwZS52YWx1ZSkKKworICAgICAgICAgICAgZGVmIHZpc2l0U3VtKHNlbGYsIHN1bSk6CisgICAgICAgICAgICAgICAgZm9yIHQgaW4gc3VtLnR5cGVzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnZpc2l0KHQpCisKKyAgICAgICAgICAgIGRlZiB2aXNpdENvbnN0cnVjdG9yKHNlbGYsIGNvbnMpOgorICAgICAgICAgICAgICAgIGZvciBmIGluIGNvbnMuZmllbGRzOgorICAgICAgICAgICAgICAgICAgICBpZiBmLnNlcToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmFtZXNfd2l0aF9zZXEuYXBwZW5kKGNvbnMubmFtZSkKKworICAgICAgICB2ID0gQ3VzdG9tVmlzaXRvcigpCisgICAgICAgIHYudmlzaXQoc2VsZi50eXBlc1snbW9kJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5uYW1lc193aXRoX3NlcSwgWydNb2R1bGUnLCAnSW50ZXJhY3RpdmUnLCAnU3VpdGUnXSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3QucHkgYi9MaWIvdGVzdC90ZXN0X2FzdC5weQppbmRleCBhNTMzZjg2Li5kM2U2ZDM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FzdC5weQpAQCAtNzgsOSArNzgsOSBAQAogICAgICMgUGFzcywKICAgICAicGFzcyIsCiAgICAgIyBCcmVhawotICAgICJicmVhayIsCisgICAgImZvciB2IGluIHY6YnJlYWsiLAogICAgICMgQ29udGludWUKLSAgICAiY29udGludWUiLAorICAgICJmb3IgdiBpbiB2OmNvbnRpbnVlIiwKICAgICAjIGZvciBzdGF0ZW1lbnRzIHdpdGggbmFrZWQgdHVwbGVzIChzZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTY3MDQpCiAgICAgImZvciBhLGIgaW4gYzogcGFzcyIsCiAgICAgIlsoYSxiKSBmb3IgYSxiIGluIGNdIiwKQEAgLTEwNiw2ICsxMDYsMTUgQEAKICAgICAie3IgZm9yIGwgaW4geCBpZiBnfSIsCiAgICAgIyBzZXRjb21wIHdpdGggbmFrZWQgdHVwbGUKICAgICAie3IgZm9yIGwsbSBpbiB4fSIsCisgICAgIyBBc3luY0Z1bmN0aW9uRGVmCisgICAgImFzeW5jIGRlZiBmKCk6XG4gYXdhaXQgc29tZXRoaW5nKCkiLAorICAgICMgQXN5bmNGb3IKKyAgICAiYXN5bmMgZGVmIGYoKTpcbiBhc3luYyBmb3IgZSBpbiBpOiAxXG4gZWxzZTogMiIsCisgICAgIyBBc3luY1dpdGgKKyAgICAiYXN5bmMgZGVmIGYoKTpcbiBhc3luYyB3aXRoIGEgYXMgYjogMSIsCisgICAgIyBQRVAgNDQ4OiBBZGRpdGlvbmFsIFVucGFja2luZyBHZW5lcmFsaXphdGlvbnMKKyAgICAieyoqezE6Mn0sIDI6M30iLAorICAgICJ7KnsxLCAyfSwgM30iLAogXQogCiAjIFRoZXNlIGFyZSBjb21waWxlZCB0aHJvdWdoICJzaW5nbGUiCkBAIC0yMjUsOSArMjM0LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2luZ2xlX3Rlc3RzLCBzaW5nbGVfcmVzdWx0cywgInNpbmdsZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2YWxfdGVzdHMsIGV2YWxfcmVzdWx0cywgImV2YWwiKSk6CiAgICAgICAgICAgICBmb3IgaSwgbyBpbiB6aXAoaW5wdXQsIG91dHB1dCk6Ci0gICAgICAgICAgICAgICAgYXN0X3RyZWUgPSBjb21waWxlKGksICI/Iiwga2luZCwgYXN0LlB5Q0ZfT05MWV9BU1QpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b190dXBsZShhc3RfdHJlZSksIG8pCi0gICAgICAgICAgICAgICAgc2VsZi5fYXNzZXJ0VHJ1ZW9yZGVyKGFzdF90cmVlLCAoMCwgMCkpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYWN0aW9uPSJwYXJzaW5nIiwgaW5wdXQ9aSk6CisgICAgICAgICAgICAgICAgICAgIGFzdF90cmVlID0gY29tcGlsZShpLCAiPyIsIGtpbmQsIGFzdC5QeUNGX09OTFlfQVNUKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvX3R1cGxlKGFzdF90cmVlKSwgbykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXNzZXJ0VHJ1ZW9yZGVyKGFzdF90cmVlLCAoMCwgMCkpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYWN0aW9uPSJjb21waWxpbmciLCBpbnB1dD1pKToKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZShhc3RfdHJlZSwgIj8iLCBraW5kKQogCiAgICAgZGVmIHRlc3Rfc2xpY2Uoc2VsZik6CiAgICAgICAgIHNsYyA9IGFzdC5wYXJzZSgieFs6Ol0iKS5ib2R5WzBdLnZhbHVlLnNsaWNlCkBAIC00MjcsMTcgKzQzOSwxNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5kdW1wKG5vZGUpLAogICAgICAgICAgICAgIk1vZHVsZShib2R5PVtFeHByKHZhbHVlPUNhbGwoZnVuYz1OYW1lKGlkPSdzcGFtJywgY3R4PUxvYWQoKSksICIKICAgICAgICAgICAgICJhcmdzPVtOYW1lKGlkPSdlZ2dzJywgY3R4PUxvYWQoKSksIFN0cihzPSdhbmQgY2hlZXNlJyldLCAiCi0gICAgICAgICAgICAia2V5d29yZHM9W10sIHN0YXJhcmdzPU5vbmUsIGt3YXJncz1Ob25lKSldKSIKKyAgICAgICAgICAgICJrZXl3b3Jkcz1bXSkpXSkiCiAgICAgICAgICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QuZHVtcChub2RlLCBhbm5vdGF0ZV9maWVsZHM9RmFsc2UpLAogICAgICAgICAgICAgIk1vZHVsZShbRXhwcihDYWxsKE5hbWUoJ3NwYW0nLCBMb2FkKCkpLCBbTmFtZSgnZWdncycsIExvYWQoKSksICIKLSAgICAgICAgICAgICJTdHIoJ2FuZCBjaGVlc2UnKV0sIFtdLCBOb25lLCBOb25lKSldKSIKKyAgICAgICAgICAgICJTdHIoJ2FuZCBjaGVlc2UnKV0sIFtdKSldKSIKICAgICAgICAgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5kdW1wKG5vZGUsIGluY2x1ZGVfYXR0cmlidXRlcz1UcnVlKSwKICAgICAgICAgICAgICJNb2R1bGUoYm9keT1bRXhwcih2YWx1ZT1DYWxsKGZ1bmM9TmFtZShpZD0nc3BhbScsIGN0eD1Mb2FkKCksICIKICAgICAgICAgICAgICJsaW5lbm89MSwgY29sX29mZnNldD0wKSwgYXJncz1bTmFtZShpZD0nZWdncycsIGN0eD1Mb2FkKCksICIKICAgICAgICAgICAgICJsaW5lbm89MSwgY29sX29mZnNldD01KSwgU3RyKHM9J2FuZCBjaGVlc2UnLCBsaW5lbm89MSwgIgotICAgICAgICAgICAgImNvbF9vZmZzZXQ9MTEpXSwga2V5d29yZHM9W10sIHN0YXJhcmdzPU5vbmUsIGt3YXJncz1Ob25lLCAiCisgICAgICAgICAgICAiY29sX29mZnNldD0xMSldLCBrZXl3b3Jkcz1bXSwgIgogICAgICAgICAgICAgImxpbmVubz0xLCBjb2xfb2Zmc2V0PTApLCBsaW5lbm89MSwgY29sX29mZnNldD0wKV0pIgogICAgICAgICApCiAKQEAgLTQ1MywxNiArNDY1LDE2IEBACiAgICAgZGVmIHRlc3RfZml4X21pc3NpbmdfbG9jYXRpb25zKHNlbGYpOgogICAgICAgICBzcmMgPSBhc3QucGFyc2UoJ3dyaXRlKCJzcGFtIiknKQogICAgICAgICBzcmMuYm9keS5hcHBlbmQoYXN0LkV4cHIoYXN0LkNhbGwoYXN0Lk5hbWUoJ3NwYW0nLCBhc3QuTG9hZCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthc3QuU3RyKCdlZ2dzJyldLCBbXSwgTm9uZSwgTm9uZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FzdC5TdHIoJ2VnZ3MnKV0sIFtdKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3JjLCBhc3QuZml4X21pc3NpbmdfbG9jYXRpb25zKHNyYykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmR1bXAoc3JjLCBpbmNsdWRlX2F0dHJpYnV0ZXM9VHJ1ZSksCiAgICAgICAgICAgICAiTW9kdWxlKGJvZHk9W0V4cHIodmFsdWU9Q2FsbChmdW5jPU5hbWUoaWQ9J3dyaXRlJywgY3R4PUxvYWQoKSwgIgogICAgICAgICAgICAgImxpbmVubz0xLCBjb2xfb2Zmc2V0PTApLCBhcmdzPVtTdHIocz0nc3BhbScsIGxpbmVubz0xLCAiCi0gICAgICAgICAgICAiY29sX29mZnNldD02KV0sIGtleXdvcmRzPVtdLCBzdGFyYXJncz1Ob25lLCBrd2FyZ3M9Tm9uZSwgIgorICAgICAgICAgICAgImNvbF9vZmZzZXQ9NildLCBrZXl3b3Jkcz1bXSwgIgogICAgICAgICAgICAgImxpbmVubz0xLCBjb2xfb2Zmc2V0PTApLCBsaW5lbm89MSwgY29sX29mZnNldD0wKSwgIgogICAgICAgICAgICAgIkV4cHIodmFsdWU9Q2FsbChmdW5jPU5hbWUoaWQ9J3NwYW0nLCBjdHg9TG9hZCgpLCBsaW5lbm89MSwgIgogICAgICAgICAgICAgImNvbF9vZmZzZXQ9MCksIGFyZ3M9W1N0cihzPSdlZ2dzJywgbGluZW5vPTEsIGNvbF9vZmZzZXQ9MCldLCAiCi0gICAgICAgICAgICAia2V5d29yZHM9W10sIHN0YXJhcmdzPU5vbmUsIGt3YXJncz1Ob25lLCBsaW5lbm89MSwgIgorICAgICAgICAgICAgImtleXdvcmRzPVtdLCBsaW5lbm89MSwgIgogICAgICAgICAgICAgImNvbF9vZmZzZXQ9MCksIGxpbmVubz0xLCBjb2xfb2Zmc2V0PTApXSkiCiAgICAgICAgICkKIApAQCAtNDg3LDggKzQ5OSw3IEBACiAgICAgICAgIG5vZGUgPSBhc3QucGFyc2UoJ2ZvbygpJywgbW9kZT0nZXZhbCcpCiAgICAgICAgIGQgPSBkaWN0KGFzdC5pdGVyX2ZpZWxkcyhub2RlLmJvZHkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQucG9wKCdmdW5jJykuaWQsICdmb28nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIHsna2V5d29yZHMnOiBbXSwgJ2t3YXJncyc6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmdzJzogW10sICdzdGFyYXJncyc6IE5vbmV9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIHsna2V5d29yZHMnOiBbXSwgJ2FyZ3MnOiBbXX0pCiAKICAgICBkZWYgdGVzdF9pdGVyX2NoaWxkX25vZGVzKHNlbGYpOgogICAgICAgICBub2RlID0gYXN0LnBhcnNlKCJzcGFtKDIzLCA0MiwgZWdncz0nbGVlaycpIiwgbW9kZT0nZXZhbCcpCkBAIC01MDYsNiArNTE3LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QuZ2V0X2RvY3N0cmluZyhub2RlLmJvZHlbMF0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICdsaW5lIG9uZVxubGluZSB0d28nKQogCisgICAgICAgIG5vZGUgPSBhc3QucGFyc2UoJ2FzeW5jIGRlZiBmb28oKTpcbiAgIiIic3BhbVxuICBoYW0iIiInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5nZXRfZG9jc3RyaW5nKG5vZGUuYm9keVswXSksICdzcGFtXG5oYW0nKQorCiAgICAgZGVmIHRlc3RfbGl0ZXJhbF9ldmFsKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5saXRlcmFsX2V2YWwoJ1sxLCAyLCAzXScpLCBbMSwgMiwgM10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmxpdGVyYWxfZXZhbCgneyJmb28iOiA0Mn0nKSwgeyJmb28iOiA0Mn0pCkBAIC02MDQsOCArNjE4LDcgQEAKICAgICAgICAgc2VsZi5fY2hlY2tfYXJndW1lbnRzKGZhYywgc2VsZi5zdG10KQogCiAgICAgZGVmIHRlc3RfY2xhc3NkZWYoc2VsZik6Ci0gICAgICAgIGRlZiBjbHMoYmFzZXM9Tm9uZSwga2V5d29yZHM9Tm9uZSwgc3RhcmFyZ3M9Tm9uZSwga3dhcmdzPU5vbmUsCi0gICAgICAgICAgICAgICAgYm9keT1Ob25lLCBkZWNvcmF0b3JfbGlzdD1Ob25lKToKKyAgICAgICAgZGVmIGNscyhiYXNlcz1Ob25lLCBrZXl3b3Jkcz1Ob25lLCBib2R5PU5vbmUsIGRlY29yYXRvcl9saXN0PU5vbmUpOgogICAgICAgICAgICAgaWYgYmFzZXMgaXMgTm9uZToKICAgICAgICAgICAgICAgICBiYXNlcyA9IFtdCiAgICAgICAgICAgICBpZiBrZXl3b3JkcyBpcyBOb25lOgpAQCAtNjE0LDE2ICs2MjcsMTIgQEAKICAgICAgICAgICAgICAgICBib2R5ID0gW2FzdC5QYXNzKCldCiAgICAgICAgICAgICBpZiBkZWNvcmF0b3JfbGlzdCBpcyBOb25lOgogICAgICAgICAgICAgICAgIGRlY29yYXRvcl9saXN0ID0gW10KLSAgICAgICAgICAgIHJldHVybiBhc3QuQ2xhc3NEZWYoIm15Y2xhc3MiLCBiYXNlcywga2V5d29yZHMsIHN0YXJhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3MsIGJvZHksIGRlY29yYXRvcl9saXN0KQorICAgICAgICAgICAgcmV0dXJuIGFzdC5DbGFzc0RlZigibXljbGFzcyIsIGJhc2VzLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keSwgZGVjb3JhdG9yX2xpc3QpCiAgICAgICAgIHNlbGYuc3RtdChjbHMoYmFzZXM9W2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSksCiAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCiAgICAgICAgIHNlbGYuc3RtdChjbHMoa2V5d29yZHM9W2FzdC5rZXl3b3JkKCJ4IiwgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXSksCiAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCi0gICAgICAgIHNlbGYuc3RtdChjbHMoc3RhcmFyZ3M9YXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpLAotICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQotICAgICAgICBzZWxmLnN0bXQoY2xzKGt3YXJncz1hc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSksCi0gICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCiAgICAgICAgIHNlbGYuc3RtdChjbHMoYm9keT1bXSksICJlbXB0eSBib2R5IG9uIENsYXNzRGVmIikKICAgICAgICAgc2VsZi5zdG10KGNscyhib2R5PVtOb25lXSksICJOb25lIGRpc2FsbG93ZWQiKQogICAgICAgICBzZWxmLnN0bXQoY2xzKGRlY29yYXRvcl9saXN0PVthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pLApAQCAtNzc3LDggKzc4Niw2IEBACiAgICAgZGVmIHRlc3RfZGljdChzZWxmKToKICAgICAgICAgZCA9IGFzdC5EaWN0KFtdLCBbYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKV0pCiAgICAgICAgIHNlbGYuZXhwcihkLCAic2FtZSBudW1iZXIgb2Yga2V5cyBhcyB2YWx1ZXMiKQotICAgICAgICBkID0gYXN0LkRpY3QoW05vbmVdLCBbYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKV0pCi0gICAgICAgIHNlbGYuZXhwcihkLCAiTm9uZSBkaXNhbGxvd2VkIikKICAgICAgICAgZCA9IGFzdC5EaWN0KFthc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpXSwgW05vbmVdKQogICAgICAgICBzZWxmLmV4cHIoZCwgIk5vbmUgZGlzYWxsb3dlZCIpCiAKQEAgLTg1NCwyMCArODYxLDEyIEBACiAgICAgICAgIGZ1bmMgPSBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpCiAgICAgICAgIGFyZ3MgPSBbYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKV0KICAgICAgICAga2V5d29yZHMgPSBbYXN0LmtleXdvcmQoInciLCBhc3QuTmFtZSgieiIsIGFzdC5Mb2FkKCkpKV0KLSAgICAgICAgc3RhcmFyZyA9IGFzdC5OYW1lKCJwIiwgYXN0LkxvYWQoKSkKLSAgICAgICAga3dhcmcgPSBhc3QuTmFtZSgicSIsIGFzdC5Mb2FkKCkpCi0gICAgICAgIGNhbGwgPSBhc3QuQ2FsbChhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgYXJncywga2V5d29yZHMsIHN0YXJhcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICBrd2FyZykKKyAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBhcmdzLCBrZXl3b3JkcykKICAgICAgICAgc2VsZi5leHByKGNhbGwsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKLSAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGZ1bmMsIFtOb25lXSwga2V5d29yZHMsIHN0YXJhcmcsIGt3YXJnKQorICAgICAgICBjYWxsID0gYXN0LkNhbGwoZnVuYywgW05vbmVdLCBrZXl3b3JkcykKICAgICAgICAgc2VsZi5leHByKGNhbGwsICJOb25lIGRpc2FsbG93ZWQiKQogICAgICAgICBiYWRfa2V5d29yZHMgPSBbYXN0LmtleXdvcmQoInciLCBhc3QuTmFtZSgieiIsIGFzdC5TdG9yZSgpKSldCi0gICAgICAgIGNhbGwgPSBhc3QuQ2FsbChmdW5jLCBhcmdzLCBiYWRfa2V5d29yZHMsIHN0YXJhcmcsIGt3YXJnKQotICAgICAgICBzZWxmLmV4cHIoY2FsbCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQotICAgICAgICBjYWxsID0gYXN0LkNhbGwoZnVuYywgYXJncywga2V5d29yZHMsIGFzdC5OYW1lKCJ6IiwgYXN0LlN0b3JlKCkpLCBrd2FyZykKLSAgICAgICAgc2VsZi5leHByKGNhbGwsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKLSAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGZ1bmMsIGFyZ3MsIGtleXdvcmRzLCBzdGFyYXJnLAotICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInciLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIGNhbGwgPSBhc3QuQ2FsbChmdW5jLCBhcmdzLCBiYWRfa2V5d29yZHMpCiAgICAgICAgIHNlbGYuZXhwcihjYWxsLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCiAKICAgICBkZWYgdGVzdF9udW0oc2VsZik6CkBAIC05NTcsOCArOTU2LDggQEAKICgnTW9kdWxlJywgWygnRnVuY3Rpb25EZWYnLCAoMSwgMCksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgKCdhcmcnLCAoMSwgNyksICdhcmdzJywgTm9uZSksIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdQYXNzJywgKDEsIDE0KSldLCBbXSwgTm9uZSldKSwKICgnTW9kdWxlJywgWygnRnVuY3Rpb25EZWYnLCAoMSwgMCksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgTm9uZSwgW10sIFtdLCAoJ2FyZycsICgxLCA4KSwgJ2t3YXJncycsIE5vbmUpLCBbXSksIFsoJ1Bhc3MnLCAoMSwgMTcpKV0sIFtdLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdGdW5jdGlvbkRlZicsICgxLCAwKSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFsoJ2FyZycsICgxLCA2KSwgJ2EnLCBOb25lKSwgKCdhcmcnLCAoMSwgOSksICdiJywgTm9uZSksICgnYXJnJywgKDEsIDE0KSwgJ2MnLCBOb25lKSwgKCdhcmcnLCAoMSwgMjIpLCAnZCcsIE5vbmUpLCAoJ2FyZycsICgxLCAyOCksICdlJywgTm9uZSldLCAoJ2FyZycsICgxLCAzNSksICdhcmdzJywgTm9uZSksIFsoJ2FyZycsICgxLCA0MSksICdmJywgTm9uZSldLCBbKCdOdW0nLCAoMSwgNDMpLCA0MildLCAoJ2FyZycsICgxLCA0OSksICdrd2FyZ3MnLCBOb25lKSwgWygnTnVtJywgKDEsIDExKSwgMSksICgnTmFtZUNvbnN0YW50JywgKDEsIDE2KSwgTm9uZSksICgnTGlzdCcsICgxLCAyNCksIFtdLCAoJ0xvYWQnLCkpLCAoJ0RpY3QnLCAoMSwgMzApLCBbXSwgW10pXSksIFsoJ1Bhc3MnLCAoMSwgNTgpKV0sIFtdLCBOb25lKV0pLAotKCdNb2R1bGUnLCBbKCdDbGFzc0RlZicsICgxLCAwKSwgJ0MnLCBbXSwgW10sIE5vbmUsIE5vbmUsIFsoJ1Bhc3MnLCAoMSwgOCkpXSwgW10pXSksCi0oJ01vZHVsZScsIFsoJ0NsYXNzRGVmJywgKDEsIDApLCAnQycsIFsoJ05hbWUnLCAoMSwgOCksICdvYmplY3QnLCAoJ0xvYWQnLCkpXSwgW10sIE5vbmUsIE5vbmUsIFsoJ1Bhc3MnLCAoMSwgMTcpKV0sIFtdKV0pLAorKCdNb2R1bGUnLCBbKCdDbGFzc0RlZicsICgxLCAwKSwgJ0MnLCBbXSwgW10sIFsoJ1Bhc3MnLCAoMSwgOCkpXSwgW10pXSksCisoJ01vZHVsZScsIFsoJ0NsYXNzRGVmJywgKDEsIDApLCAnQycsIFsoJ05hbWUnLCAoMSwgOCksICdvYmplY3QnLCAoJ0xvYWQnLCkpXSwgW10sIFsoJ1Bhc3MnLCAoMSwgMTcpKV0sIFtdKV0pLAogKCdNb2R1bGUnLCBbKCdGdW5jdGlvbkRlZicsICgxLCAwKSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sIE5vbmUsIFtdKSwgWygnUmV0dXJuJywgKDEsIDgpLCAoJ051bScsICgxLCAxNSksIDEpKV0sIFtdLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdEZWxldGUnLCAoMSwgMCksIFsoJ05hbWUnLCAoMSwgNCksICd2JywgKCdEZWwnLCkpXSldKSwKICgnTW9kdWxlJywgWygnQXNzaWduJywgKDEsIDApLCBbKCdOYW1lJywgKDEsIDApLCAndicsICgnU3RvcmUnLCkpXSwgKCdOdW0nLCAoMSwgNCksIDEpKV0pLApAQCAtOTY4LDcgKzk2Nyw3IEBACiAoJ01vZHVsZScsIFsoJ0lmJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMyksICd2JywgKCdMb2FkJywpKSwgWygnUGFzcycsICgxLCA1KSldLCBbXSldKSwKICgnTW9kdWxlJywgWygnV2l0aCcsICgxLCAwKSwgWygnd2l0aGl0ZW0nLCAoJ05hbWUnLCAoMSwgNSksICd4JywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDEwKSwgJ3knLCAoJ1N0b3JlJywpKSldLCBbKCdQYXNzJywgKDEsIDEzKSldKV0pLAogKCdNb2R1bGUnLCBbKCdXaXRoJywgKDEsIDApLCBbKCd3aXRoaXRlbScsICgnTmFtZScsICgxLCA1KSwgJ3gnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgMTApLCAneScsICgnU3RvcmUnLCkpKSwgKCd3aXRoaXRlbScsICgnTmFtZScsICgxLCAxMyksICd6JywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ3EnLCAoJ1N0b3JlJywpKSldLCBbKCdQYXNzJywgKDEsIDIxKSldKV0pLAotKCdNb2R1bGUnLCBbKCdSYWlzZScsICgxLCAwKSwgKCdDYWxsJywgKDEsIDYpLCAoJ05hbWUnLCAoMSwgNiksICdFeGNlcHRpb24nLCAoJ0xvYWQnLCkpLCBbKCdTdHInLCAoMSwgMTYpLCAnc3RyaW5nJyldLCBbXSwgTm9uZSwgTm9uZSksIE5vbmUpXSksCisoJ01vZHVsZScsIFsoJ1JhaXNlJywgKDEsIDApLCAoJ0NhbGwnLCAoMSwgNiksICgnTmFtZScsICgxLCA2KSwgJ0V4Y2VwdGlvbicsICgnTG9hZCcsKSksIFsoJ1N0cicsICgxLCAxNiksICdzdHJpbmcnKV0sIFtdKSwgTm9uZSldKSwKICgnTW9kdWxlJywgWygnVHJ5JywgKDEsIDApLCBbKCdQYXNzJywgKDIsIDIpKV0sIFsoJ0V4Y2VwdEhhbmRsZXInLCAoMywgMCksICgnTmFtZScsICgzLCA3KSwgJ0V4Y2VwdGlvbicsICgnTG9hZCcsKSksIE5vbmUsIFsoJ1Bhc3MnLCAoNCwgMikpXSldLCBbXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ1RyeScsICgxLCAwKSwgWygnUGFzcycsICgyLCAyKSldLCBbXSwgW10sIFsoJ1Bhc3MnLCAoNCwgMikpXSldKSwKICgnTW9kdWxlJywgWygnQXNzZXJ0JywgKDEsIDApLCAoJ05hbWUnLCAoMSwgNyksICd2JywgKCdMb2FkJywpKSwgTm9uZSldKSwKQEAgLTk3NywxNyArOTc2LDIyIEBACiAoJ01vZHVsZScsIFsoJ0dsb2JhbCcsICgxLCAwKSwgWyd2J10pXSksCiAoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnTnVtJywgKDEsIDApLCAxKSldKSwKICgnTW9kdWxlJywgWygnUGFzcycsICgxLCAwKSldKSwKLSgnTW9kdWxlJywgWygnQnJlYWsnLCAoMSwgMCkpXSksCi0oJ01vZHVsZScsIFsoJ0NvbnRpbnVlJywgKDEsIDApKV0pLAorKCdNb2R1bGUnLCBbKCdGb3InLCAoMSwgMCksICgnTmFtZScsICgxLCA0KSwgJ3YnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDkpLCAndicsICgnTG9hZCcsKSksIFsoJ0JyZWFrJywgKDEsIDExKSldLCBbXSldKSwKKygnTW9kdWxlJywgWygnRm9yJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgNCksICd2JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA5KSwgJ3YnLCAoJ0xvYWQnLCkpLCBbKCdDb250aW51ZScsICgxLCAxMSkpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ0ZvcicsICgxLCAwKSwgKCdUdXBsZScsICgxLCA0KSwgWygnTmFtZScsICgxLCA0KSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDYpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMSksICdjJywgKCdMb2FkJywpKSwgWygnUGFzcycsICgxLCAxNCkpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnTGlzdENvbXAnLCAoMSwgMSksICgnVHVwbGUnLCAoMSwgMiksIFsoJ05hbWUnLCAoMSwgMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICdjJywgKCdMb2FkJywpKSwgW10pXSkpXSksCiAoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnR2VuZXJhdG9yRXhwJywgKDEsIDEpLCAoJ1R1cGxlJywgKDEsIDIpLCBbKCdOYW1lJywgKDEsIDIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAnYycsICgnTG9hZCcsKSksIFtdKV0pKV0pLAogKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0dlbmVyYXRvckV4cCcsICgxLCAxKSwgKCdUdXBsZScsICgxLCAyKSwgWygnTmFtZScsICgxLCAyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNCksICdiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDEyKSwgWygnTmFtZScsICgxLCAxMiksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNCksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDIwKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKICgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdHZW5lcmF0b3JFeHAnLCAoMiwgNCksICgnVHVwbGUnLCAoMywgNCksIFsoJ05hbWUnLCAoMywgNCksICdBYScsICgnTG9hZCcsKSksICgnTmFtZScsICg1LCA3KSwgJ0JiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDgsIDQpLCBbKCdOYW1lJywgKDgsIDQpLCAnQWEnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEwLCA0KSwgJ0JiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEwLCAxMCksICdDYycsICgnTG9hZCcsKSksIFtdKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0RpY3RDb21wJywgKDEsIDEpLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDUpLCAnYicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgMTEpLCAndycsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTYpLCAneCcsICgnTG9hZCcsKSksIFtdKSwgKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDIyKSwgJ20nLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDI3KSwgJ3AnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDMyKSwgJ2cnLCAoJ0xvYWQnLCkpXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdEaWN0Q29tcCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA1KSwgJ2InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAndicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAndycsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICd4JywgKCdMb2FkJywpKSwgW10pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0Q29tcCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAncicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdsJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICd4JywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdnJywgKCdMb2FkJywpKV0pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0Q29tcCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAncicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDcpLCBbKCdOYW1lJywgKDEsIDcpLCAnbCcsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgOSksICdtJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE0KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdEaWN0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA1KSwgJ2InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDExKSwgJ3cnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE2KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSksICgnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCAyMiksICdtJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAyNyksICdwJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAzMiksICdnJywgKCdMb2FkJywpKV0pXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnRGljdENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNSksICdiJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ3YnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ3cnLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAneCcsICgnTG9hZCcsKSksIFtdKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ3InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnbCcsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAneCcsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZycsICgnTG9hZCcsKSldKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ3InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCA3KSwgWygnTmFtZScsICgxLCA3KSwgJ2wnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDkpLCAnbScsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNCksICd4JywgKCdMb2FkJywpKSwgW10pXSkpXSksCisoJ01vZHVsZScsIFsoJ0FzeW5jRnVuY3Rpb25EZWYnLCAoMSwgNiksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgTm9uZSwgW10sIFtdLCBOb25lLCBbXSksIFsoJ0V4cHInLCAoMiwgMSksICgnQXdhaXQnLCAoMiwgMSksICgnQ2FsbCcsICgyLCA3KSwgKCdOYW1lJywgKDIsIDcpLCAnc29tZXRoaW5nJywgKCdMb2FkJywpKSwgW10sIFtdKSkpXSwgW10sIE5vbmUpXSksCisoJ01vZHVsZScsIFsoJ0FzeW5jRnVuY3Rpb25EZWYnLCAoMSwgNiksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgTm9uZSwgW10sIFtdLCBOb25lLCBbXSksIFsoJ0FzeW5jRm9yJywgKDIsIDcpLCAoJ05hbWUnLCAoMiwgMTEpLCAnZScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMiwgMTYpLCAnaScsICgnTG9hZCcsKSksIFsoJ0V4cHInLCAoMiwgMTkpLCAoJ051bScsICgyLCAxOSksIDEpKV0sIFsoJ0V4cHInLCAoMywgNyksICgnTnVtJywgKDMsIDcpLCAyKSldKV0sIFtdLCBOb25lKV0pLAorKCdNb2R1bGUnLCBbKCdBc3luY0Z1bmN0aW9uRGVmJywgKDEsIDYpLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdBc3luY1dpdGgnLCAoMiwgNyksIFsoJ3dpdGhpdGVtJywgKCdOYW1lJywgKDIsIDEyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMiwgMTcpLCAnYicsICgnU3RvcmUnLCkpKV0sIFsoJ0V4cHInLCAoMiwgMjApLCAoJ051bScsICgyLCAyMCksIDEpKV0pXSwgW10sIE5vbmUpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnRGljdCcsICgxLCAwKSwgW05vbmUsICgnTnVtJywgKDEsIDEwKSwgMildLCBbKCdEaWN0JywgKDEsIDMpLCBbKCdOdW0nLCAoMSwgNCksIDEpXSwgWygnTnVtJywgKDEsIDYpLCAyKV0pLCAoJ051bScsICgxLCAxMiksIDMpXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0JywgKDEsIDApLCBbKCdTdGFycmVkJywgKDEsIDEpLCAoJ1NldCcsICgxLCAyKSwgWygnTnVtJywgKDEsIDMpLCAxKSwgKCdOdW0nLCAoMSwgNiksIDIpXSksICgnTG9hZCcsKSksICgnTnVtJywgKDEsIDEwKSwgMyldKSldKSwKIF0KIHNpbmdsZV9yZXN1bHRzID0gWwogKCdJbnRlcmFjdGl2ZScsIFsoJ0V4cHInLCAoMSwgMCksICgnQmluT3AnLCAoMSwgMCksICgnTnVtJywgKDEsIDApLCAxKSwgKCdBZGQnLCksICgnTnVtJywgKDEsIDIpLCAyKSkpXSksCkBAIC0xMDA1LDcgKzEwMDksNyBAQAogKCdFeHByZXNzaW9uJywgKCdMaXN0Q29tcCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdiJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICdjJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdkJywgKCdMb2FkJywpKV0pXSkpLAogKCdFeHByZXNzaW9uJywgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnYicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAnYycsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZCcsICgnTG9hZCcsKSldKV0pKSwKICgnRXhwcmVzc2lvbicsICgnQ29tcGFyZScsICgxLCAwKSwgKCdOdW0nLCAoMSwgMCksIDEpLCBbKCdMdCcsKSwgKCdMdCcsKV0sIFsoJ051bScsICgxLCA0KSwgMiksICgnTnVtJywgKDEsIDgpLCAzKV0pKSwKLSgnRXhwcmVzc2lvbicsICgnQ2FsbCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDApLCAnZicsICgnTG9hZCcsKSksIFsoJ051bScsICgxLCAyKSwgMSksICgnTnVtJywgKDEsIDQpLCAyKV0sIFsoJ2tleXdvcmQnLCAnYycsICgnTnVtJywgKDEsIDgpLCAzKSldLCAoJ05hbWUnLCAoMSwgMTEpLCAnZCcsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCAxNSksICdlJywgKCdMb2FkJywpKSkpLAorKCdFeHByZXNzaW9uJywgKCdDYWxsJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMCksICdmJywgKCdMb2FkJywpKSwgWygnTnVtJywgKDEsIDIpLCAxKSwgKCdOdW0nLCAoMSwgNCksIDIpLCAoJ1N0YXJyZWQnLCAoMSwgMTApLCAoJ05hbWUnLCAoMSwgMTEpLCAnZCcsICgnTG9hZCcsKSksICgnTG9hZCcsKSldLCBbKCdrZXl3b3JkJywgJ2MnLCAoJ051bScsICgxLCA4KSwgMykpLCAoJ2tleXdvcmQnLCBOb25lLCAoJ05hbWUnLCAoMSwgMTUpLCAnZScsICgnTG9hZCcsKSkpXSkpLAogKCdFeHByZXNzaW9uJywgKCdOdW0nLCAoMSwgMCksIDEwKSksCiAoJ0V4cHJlc3Npb24nLCAoJ1N0cicsICgxLCAwKSwgJ3N0cmluZycpKSwKICgnRXhwcmVzc2lvbicsICgnQXR0cmlidXRlJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMCksICdhJywgKCdMb2FkJywpKSwgJ2InLCAoJ0xvYWQnLCkpKSwKQEAgLTEwMTYsNiArMTAyMCw2IEBACiAoJ0V4cHJlc3Npb24nLCAoJ1R1cGxlJywgKDEsIDApLCBbKCdOdW0nLCAoMSwgMCksIDEpLCAoJ051bScsICgxLCAyKSwgMiksICgnTnVtJywgKDEsIDQpLCAzKV0sICgnTG9hZCcsKSkpLAogKCdFeHByZXNzaW9uJywgKCdUdXBsZScsICgxLCAxKSwgWygnTnVtJywgKDEsIDEpLCAxKSwgKCdOdW0nLCAoMSwgMyksIDIpLCAoJ051bScsICgxLCA1KSwgMyldLCAoJ0xvYWQnLCkpKSwKICgnRXhwcmVzc2lvbicsICgnVHVwbGUnLCAoMSwgMCksIFtdLCAoJ0xvYWQnLCkpKSwKLSgnRXhwcmVzc2lvbicsICgnQ2FsbCcsICgxLCAwKSwgKCdBdHRyaWJ1dGUnLCAoMSwgMCksICgnQXR0cmlidXRlJywgKDEsIDApLCAoJ0F0dHJpYnV0ZScsICgxLCAwKSwgKCdOYW1lJywgKDEsIDApLCAnYScsICgnTG9hZCcsKSksICdiJywgKCdMb2FkJywpKSwgJ2MnLCAoJ0xvYWQnLCkpLCAnZCcsICgnTG9hZCcsKSksIFsoJ1N1YnNjcmlwdCcsICgxLCA4KSwgKCdBdHRyaWJ1dGUnLCAoMSwgOCksICgnTmFtZScsICgxLCA4KSwgJ2EnLCAoJ0xvYWQnLCkpLCAnYicsICgnTG9hZCcsKSksICgnU2xpY2UnLCAoJ051bScsICgxLCAxMiksIDEpLCAoJ051bScsICgxLCAxNCksIDIpLCBOb25lKSwgKCdMb2FkJywpKV0sIFtdLCBOb25lLCBOb25lKSksCisoJ0V4cHJlc3Npb24nLCAoJ0NhbGwnLCAoMSwgMCksICgnQXR0cmlidXRlJywgKDEsIDApLCAoJ0F0dHJpYnV0ZScsICgxLCAwKSwgKCdBdHRyaWJ1dGUnLCAoMSwgMCksICgnTmFtZScsICgxLCAwKSwgJ2EnLCAoJ0xvYWQnLCkpLCAnYicsICgnTG9hZCcsKSksICdjJywgKCdMb2FkJywpKSwgJ2QnLCAoJ0xvYWQnLCkpLCBbKCdTdWJzY3JpcHQnLCAoMSwgOCksICgnQXR0cmlidXRlJywgKDEsIDgpLCAoJ05hbWUnLCAoMSwgOCksICdhJywgKCdMb2FkJywpKSwgJ2InLCAoJ0xvYWQnLCkpLCAoJ1NsaWNlJywgKCdOdW0nLCAoMSwgMTIpLCAxKSwgKCdOdW0nLCAoMSwgMTQpLCAyKSwgTm9uZSksICgnTG9hZCcsKSldLCBbXSkpLAogXQogbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzeW5jaGF0LnB5IGIvTGliL3Rlc3QvdGVzdF9hc3luY2hhdC5weQppbmRleCAyZGM5ZDBjLi4zYTMzZmM4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FzeW5jaGF0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNoYXQucHkKQEAgLTEyLDYgKzEyLDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHVuaXR0ZXN0Lm1vY2sKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCkBAIC0zOCw3ICszOSw3IEBACiAgICAgICAgICAgICBzZWxmLnN0YXJ0X3Jlc2VuZF9ldmVudCA9IE5vbmUKIAogICAgICAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5zb2NrLmxpc3RlbigxKQorICAgICAgICAgICAgc2VsZi5zb2NrLmxpc3RlbigpCiAgICAgICAgICAgICBzZWxmLmV2ZW50LnNldCgpCiAgICAgICAgICAgICBjb25uLCBjbGllbnQgPSBzZWxmLnNvY2suYWNjZXB0KCkKICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gYiIiCkBAIC0yOTgsNyArMjk5LDEwIEBACiAKIGNsYXNzIFRlc3RGaWZvKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKLSAgICAgICAgZiA9IGFzeW5jaGF0LmZpZm8oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSBhcyBjbToKKyAgICAgICAgICAgIGYgPSBhc3luY2hhdC5maWZvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20ud2FybmluZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgImZpZm8gY2xhc3Mgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjYiKQogICAgICAgICBmLnB1c2goNykKICAgICAgICAgZi5wdXNoKGInYScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGYpLCAyKQpAQCAtMzEzLDcgKzMxNywxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgwLCBOb25lKSkKIAogICAgIGRlZiB0ZXN0X2dpdmVuX2xpc3Qoc2VsZik6Ci0gICAgICAgIGYgPSBhc3luY2hhdC5maWZvKFtiJ3gnLCAxNywgM10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpIGFzIGNtOgorICAgICAgICAgICAgZiA9IGFzeW5jaGF0LmZpZm8oW2IneCcsIDE3LCAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20ud2FybmluZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgImZpZm8gY2xhc3Mgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjYiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmKSwgMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMSwgYid4JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIDE3KSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X3BlcDQ5Mi5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X3BlcDQ5Mi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWFiYTgxCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfcGVwNDkyLnB5CkBAIC0wLDAgKzEsMjMxIEBACisiIiJUZXN0cyBzdXBwb3J0IGZvciBuZXcgc3ludGF4IGludHJvZHVjZWQgYnkgUEVQIDQ5Mi4iIiIKKworaW1wb3J0IGNvbGxlY3Rpb25zLmFiYworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKKwordHJ5OgorICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gYXN5bmNpbyBpbXBvcnQgdGVzdF9zdXBwb3J0IGFzIHN1cHBvcnQKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKKworaW1wb3J0IGFzeW5jaW8KK2Zyb20gYXN5bmNpbyBpbXBvcnQgdGVzdF91dGlscworCisKK2NsYXNzIEJhc2VUZXN0KHRlc3RfdXRpbHMuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmxvb3AgPSBhc3luY2lvLkJhc2VFdmVudExvb3AoKQorICAgICAgICBzZWxmLmxvb3AuX3Byb2Nlc3NfZXZlbnRzID0gbW9jay5Nb2NrKCkKKyAgICAgICAgc2VsZi5sb29wLl9zZWxlY3RvciA9IG1vY2suTW9jaygpCisgICAgICAgIHNlbGYubG9vcC5fc2VsZWN0b3Iuc2VsZWN0LnJldHVybl92YWx1ZSA9ICgpCisgICAgICAgIHNlbGYuc2V0X2V2ZW50X2xvb3Aoc2VsZi5sb29wKQorCisKK2NsYXNzIExvY2tUZXN0cyhCYXNlVGVzdCk6CisKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXJfYXN5bmNfd2l0aChzZWxmKToKKyAgICAgICAgcHJpbWl0aXZlcyA9IFsKKyAgICAgICAgICAgIGFzeW5jaW8uTG9jayhsb29wPXNlbGYubG9vcCksCisgICAgICAgICAgICBhc3luY2lvLkNvbmRpdGlvbihsb29wPXNlbGYubG9vcCksCisgICAgICAgICAgICBhc3luY2lvLlNlbWFwaG9yZShsb29wPXNlbGYubG9vcCksCisgICAgICAgICAgICBhc3luY2lvLkJvdW5kZWRTZW1hcGhvcmUobG9vcD1zZWxmLmxvb3ApLAorICAgICAgICBdCisKKyAgICAgICAgYXN5bmMgZGVmIHRlc3QobG9jayk6CisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2NrLmxvY2tlZCgpKQorICAgICAgICAgICAgYXN5bmMgd2l0aCBsb2NrIGFzIF9sb2NrOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoX2xvY2ssIE5vbmUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2subG9ja2VkKCkpCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9jay5sb2NrZWQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9jay5sb2NrZWQoKSkKKworICAgICAgICBmb3IgcHJpbWl0aXZlIGluIHByaW1pdGl2ZXM6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHRlc3QocHJpbWl0aXZlKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocHJpbWl0aXZlLmxvY2tlZCgpKQorCisgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyX3dpdGhfYXdhaXQoc2VsZik6CisgICAgICAgIHByaW1pdGl2ZXMgPSBbCisgICAgICAgICAgICBhc3luY2lvLkxvY2sobG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgYXN5bmNpby5Db25kaXRpb24obG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgYXN5bmNpby5TZW1hcGhvcmUobG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgYXN5bmNpby5Cb3VuZGVkU2VtYXBob3JlKGxvb3A9c2VsZi5sb29wKSwKKyAgICAgICAgXQorCisgICAgICAgIGFzeW5jIGRlZiB0ZXN0KGxvY2spOgorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9jay5sb2NrZWQoKSkKKyAgICAgICAgICAgIHdpdGggYXdhaXQgbG9jayBhcyBfbG9jazoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKF9sb2NrLCBOb25lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NrLmxvY2tlZCgpKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2subG9ja2VkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvY2subG9ja2VkKCkpCisKKyAgICAgICAgZm9yIHByaW1pdGl2ZSBpbiBwcmltaXRpdmVzOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0ZXN0KHByaW1pdGl2ZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByaW1pdGl2ZS5sb2NrZWQoKSkKKworCitjbGFzcyBTdHJlYW1SZWFkZXJUZXN0cyhCYXNlVGVzdCk6CisKKyAgICBkZWYgdGVzdF9yZWFkbGluZShzZWxmKToKKyAgICAgICAgREFUQSA9IGInbGluZTFcbmxpbmUyXG5saW5lMycKKworICAgICAgICBzdHJlYW0gPSBhc3luY2lvLlN0cmVhbVJlYWRlcihsb29wPXNlbGYubG9vcCkKKyAgICAgICAgc3RyZWFtLmZlZWRfZGF0YShEQVRBKQorICAgICAgICBzdHJlYW0uZmVlZF9lb2YoKQorCisgICAgICAgIGFzeW5jIGRlZiByZWFkZXIoKToKKyAgICAgICAgICAgIGRhdGEgPSBbXQorICAgICAgICAgICAgYXN5bmMgZm9yIGxpbmUgaW4gc3RyZWFtOgorICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGxpbmUpCisgICAgICAgICAgICByZXR1cm4gZGF0YQorCisgICAgICAgIGRhdGEgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJlYWRlcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIFtiJ2xpbmUxXG4nLCBiJ2xpbmUyXG4nLCBiJ2xpbmUzJ10pCisKKworY2xhc3MgQ29yb3V0aW5lVGVzdHMoQmFzZVRlc3QpOgorCisgICAgZGVmIHRlc3RfaXNjb3JvdXRpbmUoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworCisgICAgICAgIGYgPSBmb28oKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5pc2Nvcm91dGluZShmKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKSAjIHNpbGVuY2Ugd2FybmluZworCisgICAgICAgICMgVGVzdCB0aGF0IGFzeW5jaW8uaXNjb3JvdXRpbmUoKSB1c2VzIGNvbGxlY3Rpb25zLmFiYy5Db3JvdXRpbmUKKyAgICAgICAgY2xhc3MgRmFrZUNvcm86CisgICAgICAgICAgICBkZWYgc2VuZChzZWxmLCB2YWx1ZSk6IHBhc3MKKyAgICAgICAgICAgIGRlZiB0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKTogcGFzcworICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOiB5aWVsZAorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhc3luY2lvLmlzY29yb3V0aW5lKEZha2VDb3JvKCkpKQorCisgICAgZGVmIHRlc3RfaXNjb3JvdXRpbmVmdW5jdGlvbihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhc3luY2lvLmlzY29yb3V0aW5lZnVuY3Rpb24oZm9vKSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX3JldHVybmluZ19hd2FpdGFibGUoc2VsZik6CisgICAgICAgIGNsYXNzIEF3YWl0YWJsZToKKyAgICAgICAgICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICgnc3BhbScsKQorCisgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQorICAgICAgICBkZWYgZnVuYygpOgorICAgICAgICAgICAgcmV0dXJuIEF3YWl0YWJsZSgpCisKKyAgICAgICAgY29ybyA9IGZ1bmMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcm8uc2VuZChOb25lKSwgJ3NwYW0nKQorICAgICAgICBjb3JvLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2RlZl9jb3JvdXRpbmVzKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgYmFyKCk6CisgICAgICAgICAgICByZXR1cm4gJ3NwYW0nCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCBiYXIoKQorCisgICAgICAgICMgcHJvZHVjdGlvbiBtb2RlCisgICAgICAgIGRhdGEgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGZvbygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsICdzcGFtJykKKworICAgICAgICAjIGRlYnVnIG1vZGUKKyAgICAgICAgc2VsZi5sb29wLnNldF9kZWJ1ZyhUcnVlKQorICAgICAgICBkYXRhID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShmb28oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCAnc3BhbScpCisKKyAgICBAbW9jay5wYXRjaCgnYXN5bmNpby5jb3JvdXRpbmVzLmxvZ2dlcicpCisgICAgZGVmIHRlc3RfYXN5bmNfZGVmX3dyYXBwZWQoc2VsZiwgbV9sb2cpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGFzeW5jIGRlZiBzdGFydCgpOgorICAgICAgICAgICAgZm9vX2Nvcm8gPSBmb28oKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCgKKyAgICAgICAgICAgICAgICByZXByKGZvb19jb3JvKSwKKyAgICAgICAgICAgICAgICByJzxDb3JvV3JhcHBlciAuKlwuZm9vXChcKSBydW5uaW5nIGF0IC4qcGVwNDkyLio+JykKKworICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKChyJy4qZm9vLip3YXMgbmV2ZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZykpOgorICAgICAgICAgICAgICAgIGZvb19jb3JvID0gTm9uZQorICAgICAgICAgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1fbG9nLmVycm9yLmNhbGxlZCkKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gbV9sb2cuZXJyb3IuY2FsbF9hcmdzWzBdWzBdCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidDb3JvV3JhcHBlci4qZm9vLip3YXMgbmV2ZXInKQorCisgICAgICAgIHNlbGYubG9vcC5zZXRfZGVidWcoVHJ1ZSkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzdGFydCgpKQorCisgICAgICAgIGFzeW5jIGRlZiBzdGFydCgpOgorICAgICAgICAgICAgZm9vX2Nvcm8gPSBmb28oKQorICAgICAgICAgICAgdGFzayA9IGFzeW5jaW8uZW5zdXJlX2Z1dHVyZShmb29fY29ybywgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIodGFzayksIHInVGFzay4qZm9vLipydW5uaW5nJykKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHN0YXJ0KCkpCisKKworICAgIGRlZiB0ZXN0X3R5cGVzX2Nvcm91dGluZShzZWxmKToKKyAgICAgICAgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgZnJvbSAoKQorICAgICAgICAgICAgcmV0dXJuICdzcGFtJworCisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGZ1bmMoKToKKyAgICAgICAgICAgIHJldHVybiBnZW4oKQorCisgICAgICAgIGFzeW5jIGRlZiBjb3JvKCk6CisgICAgICAgICAgICB3cmFwcGVyID0gZnVuYygpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uod3JhcHBlciwgdHlwZXMuX0dlbmVyYXRvcldyYXBwZXIpCisgICAgICAgICAgICByZXR1cm4gYXdhaXQgd3JhcHBlcgorCisgICAgICAgIGRhdGEgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGNvcm8oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCAnc3BhbScpCisKKyAgICBkZWYgdGVzdF90YXNrX3ByaW50X3N0YWNrKHNlbGYpOgorICAgICAgICBUID0gTm9uZQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGYgPSBULmdldF9zdGFjayhsaW1pdD0xKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZlswXS5mX2NvZGUuY29fbmFtZSwgJ2ZvbycpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGYgPSBOb25lCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bm5lcigpOgorICAgICAgICAgICAgbm9ubG9jYWwgVAorICAgICAgICAgICAgVCA9IGFzeW5jaW8uZW5zdXJlX2Z1dHVyZShmb28oKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICBhd2FpdCBUCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW5uZXIoKSkKKworICAgIGRlZiB0ZXN0X2RvdWJsZV9hd2FpdChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGFmdW5jKCk6CisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1zZWxmLmxvb3ApCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bm5lcigpOgorICAgICAgICAgICAgY29ybyA9IGFmdW5jKCkKKyAgICAgICAgICAgIHQgPSBhc3luY2lvLlRhc2soY29ybywgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBjb3JvCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHQuY2FuY2VsKCkKKworICAgICAgICBzZWxmLmxvb3Auc2V0X2RlYnVnKFRydWUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFJ1bnRpbWVFcnJvciwKKyAgICAgICAgICAgIHInQ2Fubm90IGF3YWl0Lip0ZXN0X2RvdWJsZV9hd2FpdC4qXGJhZnVuY1xiLip3aGlsZS4qXGJzbGVlcFxiJyk6CisKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVubmVyKCkpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkgYi9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CmluZGV4IGQ0NDcyNmQuLjM4NTc5MTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQpAQCAtNyw3ICs3LDYgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgZXJybm8KIGltcG9ydCBzdHJ1Y3QKLWltcG9ydCB3YXJuaW5ncwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KQEAgLTY1LDcgKzY0LDcgQEAKICMgdXNlZCB3aGVuIHRlc3Rpbmcgc2VuZGVyczsganVzdCBjb2xsZWN0cyB3aGF0IGl0IGdldHMgdW50aWwgbmV3bGluZSBpcyBzZW50CiBkZWYgY2FwdHVyZV9zZXJ2ZXIoZXZ0LCBidWYsIHNlcnYpOgogICAgIHRyeToKLSAgICAgICAgc2Vydi5saXN0ZW4oNSkKKyAgICAgICAgc2Vydi5saXN0ZW4oKQogICAgICAgICBjb25uLCBhZGRyID0gc2Vydi5hY2NlcHQoKQogICAgIGV4Y2VwdCBzb2NrZXQudGltZW91dDoKICAgICAgICAgcGFzcwpAQCAtMjk4LDIzICsyOTcsNiBAQAogICAgICAgICAgICAgICAgICAgICAnd2FybmluZzogdW5oYW5kbGVkIGNvbm5lY3QgZXZlbnQnXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzLCBleHBlY3RlZCkKIAotICAgIGRlZiB0ZXN0X2lzc3VlXzg1OTQoc2VsZik6Ci0gICAgICAgICMgWFhYIC0gdGhpcyB0ZXN0IGlzIHN1cHBvc2VkIHRvIGJlIHJlbW92ZWQgaW4gbmV4dCBtYWpvciBQeXRob24KLSAgICAgICAgIyB2ZXJzaW9uCi0gICAgICAgIGQgPSBhc3luY29yZS5kaXNwYXRjaGVyKHNvY2tldC5zb2NrZXQoKSkKLSAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGVycm9yIG1lc3NhZ2Ugbm8gbG9uZ2VyIHJlZmVycyB0byB0aGUgc29ja2V0Ci0gICAgICAgICMgb2JqZWN0IGJ1dCB0aGUgZGlzcGF0Y2hlciBpbnN0YW5jZSBpbnN0ZWFkCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsICdkaXNwYXRjaGVyIGluc3RhbmNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyLCBkLCAnZm9vJykKLSAgICAgICAgIyBjaGVhcCBpbmhlcml0YW5jZSB3aXRoIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBpcyBzdXBwb3NlZAotICAgICAgICAjIHRvIHN0aWxsIHdvcmsgYnV0IGEgRGVwcmVjYXRpb25XYXJuaW5nIGlzIGV4cGVjdGVkCi0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImFsd2F5cyIpCi0gICAgICAgICAgICBmYW1pbHkgPSBkLmZhbWlseQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmYW1pbHksIHNvY2tldC5BRl9JTkVUKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh3WzBdLmNhdGVnb3J5LCBEZXByZWNhdGlvbldhcm5pbmcpKQotCiAgICAgZGVmIHRlc3Rfc3RyZXJyb3Ioc2VsZik6CiAgICAgICAgICMgcmVmZXJzIHRvIGJ1ZyAjODU3MwogICAgICAgICBlcnIgPSBhc3luY29yZS5fc3RyZXJyb3IoZXJybm8uRVBFUk0pCkBAIC0zMzEsOSArMzEzLDggQEAKICAgICBkZWYgaGFuZGxlX2Nvbm5lY3Qoc2VsZik6CiAgICAgICAgIHBhc3MKIAotY2xhc3MgRGlzcGF0Y2hlcldpdGhTZW5kVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIHVzZXBvbGwgPSBGYWxzZQogCitjbGFzcyBEaXNwYXRjaGVyV2l0aFNlbmRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBwYXNzCiAKQEAgLTM4MywxMCArMzY0LDYgQEAKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImpvaW4oKSB0aW1lZCBvdXQiKQogCiAKLQotY2xhc3MgRGlzcGF0Y2hlcldpdGhTZW5kVGVzdHNfVXNlUG9sbChEaXNwYXRjaGVyV2l0aFNlbmRUZXN0cyk6Ci0gICAgdXNlcG9sbCA9IFRydWUKLQogQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihhc3luY29yZSwgJ2ZpbGVfd3JhcHBlcicpLAogICAgICAgICAgICAgICAgICAgICAgJ2FzeW5jb3JlLmZpbGVfd3JhcHBlciByZXF1aXJlZCcpCiBjbGFzcyBGaWxlV3JhcHBlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hdGV4aXQucHkgYi9MaWIvdGVzdC90ZXN0X2F0ZXhpdC5weQppbmRleCA3MGQyZjFjLi4xNzJiZDI1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2F0ZXhpdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2F0ZXhpdC5weQpAQCAtMTc3LDkgKzE3Nyw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRleGl0Ll9uY2FsbGJhY2tzKCksIG4pCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXVnYXNzaWduLnB5IGIvTGliL3Rlc3QvdGVzdF9hdWdhc3NpZ24ucHkKaW5kZXggMGU3NWM2Yi4uNTA5M2U5ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hdWdhc3NpZ24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hdWdhc3NpZ24ucHkKQEAgLTEsNiArMSw1IEBACiAjIEF1Z21lbnRlZCBhc3NpZ25tZW50IHRlc3QuCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIGltcG9ydCB1bml0dGVzdAogCiAKQEAgLTEzNiw2ICsxMzUsMTQgQEAKICAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCJfX2ltdWxfXyBjYWxsZWQiKQogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCiAKKyAgICAgICAgICAgIGRlZiBfX21hdG11bF9fKHNlbGYsIHZhbCk6CisgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgiX19tYXRtdWxfXyBjYWxsZWQiKQorICAgICAgICAgICAgZGVmIF9fcm1hdG11bF9fKHNlbGYsIHZhbCk6CisgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgiX19ybWF0bXVsX18gY2FsbGVkIikKKyAgICAgICAgICAgIGRlZiBfX2ltYXRtdWxfXyhzZWxmLCB2YWwpOgorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoIl9faW1hdG11bF9fIGNhbGxlZCIpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKwogICAgICAgICAgICAgZGVmIF9fZmxvb3JkaXZfXyhzZWxmLCB2YWwpOgogICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoIl9fZmxvb3JkaXZfXyBjYWxsZWQiKQogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCkBAIC0yMjUsNiArMjMyLDEwIEBACiAgICAgICAgIDEgKiB4CiAgICAgICAgIHggKj0gMQogCisgICAgICAgIHggQCAxCisgICAgICAgIDEgQCB4CisgICAgICAgIHggQD0gMQorCiAgICAgICAgIHggLyAxCiAgICAgICAgIDEgLyB4CiAgICAgICAgIHggLz0gMQpAQCAtMjcxLDYgKzI4Miw5IEBACiBfX211bF9fIGNhbGxlZAogX19ybXVsX18gY2FsbGVkCiBfX2ltdWxfXyBjYWxsZWQKK19fbWF0bXVsX18gY2FsbGVkCitfX3JtYXRtdWxfXyBjYWxsZWQKK19faW1hdG11bF9fIGNhbGxlZAogX190cnVlZGl2X18gY2FsbGVkCiBfX3J0cnVlZGl2X18gY2FsbGVkCiBfX2l0cnVlZGl2X18gY2FsbGVkCkBAIC0zMDAsOCArMzE0LDUgQEAKIF9faWxzaGlmdF9fIGNhbGxlZAogJycnLnNwbGl0bGluZXMoKSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChBdWdBc3NpZ25UZXN0KQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Jhc2U2NC5weSBiL0xpYi90ZXN0L3Rlc3RfYmFzZTY0LnB5CmluZGV4IGI5NzM4ZGQuLmEwZjU0OGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmFzZTY0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmFzZTY0LnB5CkBAIC0zLDEwICszLDggQEAKIGltcG9ydCBiYXNlNjQKIGltcG9ydCBiaW5hc2NpaQogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN0cnVjdAogZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiAKIAogY2xhc3MgTGVnYWN5QmFzZTY0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNjIyLDE1ICs2MjAsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoYmluYXNjaWkuRXJyb3IsIFZhbHVlRXJyb3IpKQogCiAKLQogY2xhc3MgVGVzdE1haW4odW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc3VwcG9ydC5URVNURk4pOgogICAgICAgICAgICAgb3MudW5saW5rKHN1cHBvcnQuVEVTVEZOKQogCi0gICAgZGVmIGdldF9vdXRwdXQoc2VsZiwgKmFyZ3MsICoqb3B0aW9ucyk6Ci0gICAgICAgIGFyZ3MgPSAoc3lzLmV4ZWN1dGFibGUsICctbScsICdiYXNlNjQnKSArIGFyZ3MKLSAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGFyZ3MsICoqb3B0aW9ucykKKyAgICBkZWYgZ2V0X291dHB1dChzZWxmLCAqYXJncyk6CisgICAgICAgIHJldHVybiBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2soJy1tJywgJ2Jhc2U2NCcsICphcmdzKS5vdXQKIAogICAgIGRlZiB0ZXN0X2VuY29kZV9kZWNvZGUoc2VsZik6CiAgICAgICAgIG91dHB1dCA9IHNlbGYuZ2V0X291dHB1dCgnLXQnKQpAQCAtNjQzLDEzICs2MzksMTQgQEAKICAgICBkZWYgdGVzdF9lbmNvZGVfZmlsZShzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAnd2InKSBhcyBmcDoKICAgICAgICAgICAgIGZwLndyaXRlKGInYVx4ZmZiXG4nKQotCiAgICAgICAgIG91dHB1dCA9IHNlbGYuZ2V0X291dHB1dCgnLWUnLCBzdXBwb3J0LlRFU1RGTikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQucnN0cmlwKCksIGInWWY5aUNnPT0nKQogCi0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykgYXMgZnA6Ci0gICAgICAgICAgICBvdXRwdXQgPSBzZWxmLmdldF9vdXRwdXQoJy1lJywgc3RkaW49ZnApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LnJzdHJpcCgpLCBiJ1lmOWlDZz09JykKKyAgICBkZWYgdGVzdF9lbmNvZGVfZnJvbV9zdGRpbihzZWxmKToKKyAgICAgICAgd2l0aCBzY3JpcHRfaGVscGVyLnNwYXduX3B5dGhvbignLW0nLCAnYmFzZTY0JywgJy1lJykgYXMgcHJvYzoKKyAgICAgICAgICAgIG91dCwgZXJyID0gcHJvYy5jb21tdW5pY2F0ZShiJ2FceGZmYlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQucnN0cmlwKCksIGInWWY5aUNnPT0nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlcnIpCiAKICAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6CiAgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3diJykgYXMgZnA6CkBAIC02NTcsMTAgKzY1NCw1IEBACiAgICAgICAgIG91dHB1dCA9IHNlbGYuZ2V0X291dHB1dCgnLWQnLCBzdXBwb3J0LlRFU1RGTikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQucnN0cmlwKCksIGInYVx4ZmZiJykKIAotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weSBiL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkKaW5kZXggMzg5ZGFhMC4uODM2N2FmZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVGVzdCB0aGUgYmluYXNjaWkgQyBtb2R1bGUuIiIiCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgYmluYXNjaWkKIGltcG9ydCBhcnJheQpAQCAtMjc3LDExICsyNzYsNSBAQAogICAgIHR5cGUydGVzdCA9IG1lbW9yeXZpZXcKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQmluQVNDSUlUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5QmluQVNDSUlUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGVhcnJheUJpbkFTQ0lJVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBNZW1vcnl2aWV3QmluQVNDSUlUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Jpbm9wLnB5IGIvTGliL3Rlc3QvdGVzdF9iaW5vcC5weQppbmRleCA5NjNhYTAxLi44MjM3NDBjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Jpbm9wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmlub3AucHkKQEAgLTM4OSw5ICszODksNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wX3NlcXVlbmNlKGxlLCBCLCBWKSwgWydCLl9fbGVfXycsICdWLl9fZ2VfXyddKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChSYXRUZXN0Q2FzZSwgT3BlcmF0aW9uT3JkZXJUZXN0cykKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weSBiL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5CmluZGV4IGFhMTUzNzcuLjJlZWY5ZmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5CkBAIC0xMSw2ICsxMSw3IEBACiAjIG1lbW9yeXZpZXcgdGVzdHMgaXMgbm93IGluIHRoaXMgbW9kdWxlLgogIwogCitpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gaXRlcnRvb2xzIGltcG9ydCBwZXJtdXRhdGlvbnMsIHByb2R1Y3QKQEAgLTIxNiw3ICsyMTcsNyBAQAogICAgIGZvciB0IGluIGl0ZXJfbW9kZShuaXRlbXMsIHRlc3RvYmopOgogICAgICAgICB5aWVsZCB0CiAgICAgaWYgdGVzdG9iaiAhPSAnbmRhcnJheSc6Ci0gICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgcmV0dXJuCiAgICAgeWllbGQgc3RydWN0X2l0ZW1zKG5pdGVtcywgdGVzdG9iaikKIAogCkBAIC04NDAsNiArODQxLDExIEBACiAgICAgICAgICAgICAgICAgIyB0ZXN0IHRvYnl0ZXMoKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnRvYnl0ZXMoKSwgYikKIAorICAgICAgICAgICAgICAgICMgdGVzdCBoZXgoKQorICAgICAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KHJlc3VsdCkKKyAgICAgICAgICAgICAgICBoID0gIiIuam9pbigiJTAyeCIgJSBjIGZvciBjIGluIGIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmhleCgpLCBoKQorCiAgICAgICAgICAgICAgICAgIyBsc3QgOj0gZXhwZWN0ZWQgbXVsdGktZGltZW5zaW9uYWwgbG9naWNhbCByZXByZXNlbnRhdGlvbgogICAgICAgICAgICAgICAgICMgZmxhdHRlbihsc3QpIDo9IGVsZW1lbnRzIGluIEMtb3JkZXIKICAgICAgICAgICAgICAgICBmZiA9IGZtdCBpZiBmbXQgZWxzZSAnQicKQEAgLTEwMDcsNiArMTAxMyw3IEBACiAgICAgICAgICMgc2hhcGUsIHN0cmlkZXMsIG9mZnNldAogICAgICAgICBzdHJ1Y3R1cmUgPSAoCiAgICAgICAgICAgICAoW10sIFtdLCAwKSwKKyAgICAgICAgICAgIChbMSwzLDFdLCBbXSwgMCksCiAgICAgICAgICAgICAoWzEyXSwgW10sIDApLAogICAgICAgICAgICAgKFsxMl0sIFstMV0sIDExKSwKICAgICAgICAgICAgIChbNl0sIFsyXSwgMCksCkBAIC0xMDc4LDYgKzEwODUsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kYXJyYXksIGV4LCBnZXRidWY9UHlCVUZfQU5ZX0NPTlRJR1VPVVMpCiAgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX1NJTVBMRSkKIAorICAgICAgICAjIElzc3VlICMyMjQ0NTogTmV3IHByZWNpc2UgY29udGlndWl0eSBkZWZpbml0aW9uLgorICAgICAgICBmb3Igc2hhcGUgaW4gWzEsMTIsMV0sIFs3LDAsN106CisgICAgICAgICAgICBmb3Igb3JkZXIgaW4gMCwgTkRfRk9SVFJBTjoKKyAgICAgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmbGFncz1vcmRlcnxORF9XUklUQUJMRSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfY29udGlndW91cyhleCwgJ0YnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfY29udGlndW91cyhleCwgJ0MnKSkKKworICAgICAgICAgICAgICAgIGZvciBmbGFncyBpbiByZXF1ZXN0czoKKyAgICAgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9ZmxhZ3MpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19jb250aWd1b3VzKG5kLCAnRicpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfY29udGlndW91cyhuZCwgJ0MnKSkKKwogICAgIGRlZiB0ZXN0X25kYXJyYXlfZXhjZXB0aW9ucyhzZWxmKToKICAgICAgICAgbmQgPSBuZGFycmF5KFs5XSwgWzFdKQogICAgICAgICBuZG0gPSBuZGFycmF5KFs5XSwgWzFdLCBmbGFncz1ORF9WQVJFWFBPUlQpCkBAIC0yNDU0LDcgKzI0NzMsNyBAQAogICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfc2l6ZW9mKHNlbGYpOgogICAgICAgICBjaGVjayA9IHNlbGYuY2hlY2tfc2l6ZW9mCiAgICAgICAgIHZzaXplID0gc3VwcG9ydC5jYWxjdm9ianNpemUKLSAgICAgICAgYmFzZV9zdHJ1Y3QgPSAnUG5pbiAyUDJuMmk1UCAzY1AnCisgICAgICAgIGJhc2Vfc3RydWN0ID0gJ1BuaW4gMlAybjJpNVAgUCcKICAgICAgICAgcGVyX2RpbSA9ICczbicKIAogICAgICAgICBpdGVtcyA9IGxpc3QocmFuZ2UoOCkpCkBAIC0yNTQ1LDggKzI1NjQsNyBAQAogICAgICAgICAgICAgZXggPSBuZGFycmF5KHNpdGVtcywgc2hhcGU9WzFdLCBmb3JtYXQ9c2ZtdCkKICAgICAgICAgICAgIG1zcmMgPSBtZW1vcnl2aWV3KGV4KQogICAgICAgICAgICAgZm9yIGRmbXQsIF8sIF8gaW4gaXRlcl9mb3JtYXQoMSk6Ci0gICAgICAgICAgICAgICAgaWYgKG5vdCBpc19tZW1vcnl2aWV3X2Zvcm1hdChzZm10KSBvcgotICAgICAgICAgICAgICAgICAgICBub3QgaXNfbWVtb3J5dmlld19mb3JtYXQoZGZtdCkpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBpc19tZW1vcnl2aWV3X2Zvcm1hdChkZm10KToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbXNyYy5jYXN0LCBkZm10LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMzIvL2RzaXplXSkKICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtMjc1OSw2ICsyNzc3LDMyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCwgY2FzdD1UcnVlKQogCisgICAgICAgIGlmIGN0eXBlczoKKyAgICAgICAgICAgICMgZm9ybWF0OiAiVHs+bDp4Oj5kOnk6fSIKKyAgICAgICAgICAgIGNsYXNzIEJFUG9pbnQoY3R5cGVzLkJpZ0VuZGlhblN0cnVjdHVyZSk6CisgICAgICAgICAgICAgICAgX2ZpZWxkc18gPSBbKCJ4IiwgY3R5cGVzLmNfbG9uZyksICgieSIsIGN0eXBlcy5jX2RvdWJsZSldCisgICAgICAgICAgICBwb2ludCA9IEJFUG9pbnQoMTAwLCAyMDAuMSkKKyAgICAgICAgICAgIG0xID0gbWVtb3J5dmlldyhwb2ludCkKKyAgICAgICAgICAgIG0yID0gbTEuY2FzdCgnQicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLm9iaiwgcG9pbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLml0ZW1zaXplLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMi5yZWFkb25seSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIubmRpbSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIuc2hhcGUsIChtMi5uYnl0ZXMsKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIuc3RyaWRlcywgKDEsKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIuc3Vib2Zmc2V0cywgKCkpCisKKyAgICAgICAgICAgIHggPSBjdHlwZXMuY19kb3VibGUoMS4yKQorICAgICAgICAgICAgbTEgPSBtZW1vcnl2aWV3KHgpCisgICAgICAgICAgICBtMiA9IG0xLmNhc3QoJ2MnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMi5vYmosIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLml0ZW1zaXplLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMi5yZWFkb25seSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIubmRpbSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIuc2hhcGUsIChtMi5uYnl0ZXMsKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIuc3RyaWRlcywgKDEsKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIuc3Vib2Zmc2V0cywgKCkpCisKICAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3RvbGlzdChzZWxmKToKIAogICAgICAgICAjIE1vc3QgdG9saXN0KCkgdGVzdHMgYXJlIGluIHNlbGYudmVyaWZ5KCkgZXRjLgpAQCAtMjgxMiw2ICsyODU2LDEzIEBACiAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV2YWwsICI5LjAgaW4gbSIsIGxvY2FscygpKQogCisgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICBkZWYgYXNzZXJ0X291dF9vZl9ib3VuZHNfZXJyb3Ioc2VsZiwgZGltKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgImluZGV4IG91dCBvZiBib3VuZHMgb24gZGltZW5zaW9uICVkIiAlIChkaW0sKSkKKwogICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfaW5kZXgoc2VsZik6CiAKICAgICAgICAgIyBuZGltID0gMApAQCAtMjgzOCwxMiArMjg4OSwzMSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAtOCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX2dldGl0ZW1fXywgOCkKIAotICAgICAgICAjIE5vdCBpbXBsZW1lbnRlZDogbXVsdGlkaW1lbnNpb25hbCBzdWItdmlld3MKKyAgICAgICAgIyBtdWx0aS1kaW1lbnNpb25hbAogICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMyw0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCiAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQogCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19nZXRpdGVtX18sIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19zZXRpdGVtX18sIDAsIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVswLCAwXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzIsIDBdLCA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMiwgM10sIDExKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bLTEsIC0xXSwgMTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVstMywgLTRdLCAwKQorCisgICAgICAgICMgb3V0IG9mIGJvdW5kcworICAgICAgICBmb3IgaW5kZXggaW4gKDMsIC00KToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRfb3V0X29mX2JvdW5kc19lcnJvcihkaW09MSk6CisgICAgICAgICAgICAgICAgbVtpbmRleCwgMF0KKyAgICAgICAgZm9yIGluZGV4IGluICg0LCAtNSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0X291dF9vZl9ib3VuZHNfZXJyb3IoZGltPTIpOgorICAgICAgICAgICAgICAgIG1bMCwgaW5kZXhdCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19nZXRpdGVtX18sICgyKio2NCwgMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19nZXRpdGVtX18sICgwLCAyKio2NCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCAoMCwgMCwgMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX2dldGl0ZW1fXywgKDAuMCwgMC4wKSkKKworICAgICAgICAjIE5vdCBpbXBsZW1lbnRlZDogbXVsdGlkaW1lbnNpb25hbCBzdWItdmlld3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX2dldGl0ZW1fXywgKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19nZXRpdGVtX18sIDApCiAKICAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2Fzc2lnbihzZWxmKToKQEAgLTI5MzIsMTAgKzMwMDIsMjcgQEAKICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19zZXRpdGVtX18sIDAsIDEpCiAKLSAgICAgICAgIyBOb3QgaW1wbGVtZW50ZWQ6IG11bHRpZGltZW5zaW9uYWwgc3ViLXZpZXdzCisgICAgICAgICMgbXVsdGktZGltZW5zaW9uYWwKICAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQogICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgbVswLDFdID0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleFswXVsxXSwgNDIpCisgICAgICAgIG1bLTEsLTFdID0gNDMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleFsyXVszXSwgNDMpCisgICAgICAgICMgZXJyb3JzCisgICAgICAgIGZvciBpbmRleCBpbiAoMywgLTQpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydF9vdXRfb2ZfYm91bmRzX2Vycm9yKGRpbT0xKToKKyAgICAgICAgICAgICAgICBtW2luZGV4LCAwXSA9IDAKKyAgICAgICAgZm9yIGluZGV4IGluICg0LCAtNSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0X291dF9vZl9ib3VuZHNfZXJyb3IoZGltPTIpOgorICAgICAgICAgICAgICAgIG1bMCwgaW5kZXhdID0gMAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fc2V0aXRlbV9fLCAoMioqNjQsIDApLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fc2V0aXRlbV9fLCAoMCwgMioqNjQpLCAwKQogCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgKDAsIDAsIDApLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sICgwLjAsIDAuMCksIDApCisKKyAgICAgICAgIyBOb3QgaW1wbGVtZW50ZWQ6IG11bHRpZGltZW5zaW9uYWwgc3ViLXZpZXdzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19zZXRpdGVtX18sIDAsIFsyLCAzXSkKIAogICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfc2xpY2Uoc2VsZik6CkBAIC0yOTQ4LDggKzMwMzUsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLl9fc2V0aXRlbV9fLCBzbGljZSgwLDIsMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVhcnJheShbMSwyXSkpCiAKLSAgICAgICAgIyBpbnZhbGlkIHNsaWNlIGtleQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19nZXRpdGVtX18sICgpKQorICAgICAgICAjIDAtZGltIHNsaWNpbmcgKGlkZW50aXR5IGZ1bmN0aW9uKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAoKSkKIAogICAgICAgICAjIG11bHRpZGltZW5zaW9uYWwgc2xpY2VzCiAgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsxMl0sIGZsYWdzPU5EX1dSSVRBQkxFKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5IGIvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CmluZGV4IGQwMGQwYjcuLjVkZWViNzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKQEAgLTE2LDcgKzE2LDcgQEAKIGltcG9ydCB3YXJuaW5ncwogZnJvbSBvcGVyYXRvciBpbXBvcnQgbmVnCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCB1bmxpbmssICBydW5fdW5pdHRlc3QsIGNoZWNrX3dhcm5pbmdzCi1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogdHJ5OgogICAgIGltcG9ydCBwdHksIHNpZ25hbAogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtMzEyLDExICszMTIsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21waWxlKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb21waWxlLCAncHJpbnQoNDIpXG4nLCAnPHN0cmluZz4nLCAnYmFkbW9kZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbXBpbGUsICdwcmludCg0MilcbicsICc8c3RyaW5nPicsICdzaW5nbGUnLCAweGZmKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbXBpbGUsIGNocigwKSwgJ2YnLCAnZXhlYycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbXBpbGUsIGNocigwKSwgJ2YnLCAnZXhlYycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcGlsZSwgJ3Bhc3MnLCAnPycsICdleGVjJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZT0nZXZhbCcsIHNvdXJjZT0nMCcsIGZpbGVuYW1lPSd0bXAnKQogICAgICAgICBjb21waWxlKCdwcmludCgiXHhlNSIpXG4nLCAnJywgJ2V4ZWMnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbXBpbGUsIGNocigwKSwgJ2YnLCAnZXhlYycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbXBpbGUsIGNocigwKSwgJ2YnLCAnZXhlYycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbXBpbGUsIHN0cignYSA9IDEnKSwgJ2YnLCAnYmFkJykKIAogICAgICAgICAjIHRlc3QgdGhlIG9wdGltaXplIGFyZ3VtZW50CkBAIC0xMDk0LDcgKzEwOTQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKHBvdygtMSwgMC41KSwgMWopCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwocG93KC0xLCAxLzMpLCAwLjUgKyAwLjg2NjAyNTQwMzc4NDQzODZqKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG93LCAtMSwgLTIsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBvdywgLTEsIC0yLCAzKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwb3csIDEsIDIsIDApCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3cpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5IGIvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQppbmRleCAwYTczZmNiLi5jYWYyOGZkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKQEAgLTMwMSw2ICszMDEsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50eXBlMnRlc3QuZnJvbWhleCwgJ1x4MDAnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnR5cGUydGVzdC5mcm9taGV4LCAnMTIgICBceDAwICAgMzQnKQogCisgICAgZGVmIHRlc3RfaGV4KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LmhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR5cGUydGVzdC5oZXgsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoYiIiKS5oZXgoKSwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZWFycmF5KFsweDFhLCAweDJiLCAweDMwXSkuaGV4KCksICcxYTJiMzAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGIiXHgxYVx4MmJceDMwIikuaGV4KCksICcxYTJiMzAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbW9yeXZpZXcoYiJceDFhXHgyYlx4MzAiKS5oZXgoKSwgJzFhMmIzMCcpCisKICAgICBkZWYgdGVzdF9qb2luKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGIiIikuam9pbihbXSksIGIiIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChiIiIpLmpvaW4oW2IiIl0pLCBiIiIpCkBAIC00NjEsNiArNDY5LDI4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yaW5kZXgoaSwgMywgOSksIDcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIucmluZGV4LCB3LCAxLCAzKQogCisgICAgZGVmIHRlc3RfbW9kKHNlbGYpOgorICAgICAgICBiID0gYidoZWxsbywgJWIhJworICAgICAgICBvcmlnID0gYgorICAgICAgICBiID0gYiAlIGInd29ybGQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidoZWxsbywgd29ybGQhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnLCBiJ2hlbGxvLCAlYiEnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGIgaXMgb3JpZykKKyAgICAgICAgYiA9IGInJXMgLyAxMDAgPSAlZCUlJworICAgICAgICBhID0gYiAlIChiJ3NldmVudHktbmluZScsIDc5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGInc2V2ZW50eS1uaW5lIC8gMTAwID0gNzklJykKKworICAgIGRlZiB0ZXN0X2ltb2Qoc2VsZik6CisgICAgICAgIGIgPSBiJ2hlbGxvLCAlYiEnCisgICAgICAgIG9yaWcgPSBiCisgICAgICAgIGIgJT0gYid3b3JsZCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ2hlbGxvLCB3b3JsZCEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWcsIGInaGVsbG8sICViIScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYiBpcyBvcmlnKQorICAgICAgICBiID0gYiclcyAvIDEwMCA9ICVkJSUnCisgICAgICAgIGIgJT0gKGInc2V2ZW50eS1uaW5lJywgNzkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidzZXZlbnR5LW5pbmUgLyAxMDAgPSA3OSUnKQorCiAgICAgZGVmIHRlc3RfcmVwbGFjZShzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInbWlzc2lzc2lwcGknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmVwbGFjZShiJ2knLCBiJ2EnKSwgYidtYXNzYXNzYXBwYScpCkBAIC03MjIsNiArNzUyLDExIEBACiBjbGFzcyBCeXRlc1Rlc3QoQmFzZUJ5dGVzVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHR5cGUydGVzdCA9IGJ5dGVzCiAKKyAgICBkZWYgdGVzdF9nZXRpdGVtX2Vycm9yKHNlbGYpOgorICAgICAgICBtc2cgPSAiYnl0ZSBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMgb3Igc2xpY2VzIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2cpOgorICAgICAgICAgICAgYidweXRob24nWydhJ10KKwogICAgIGRlZiB0ZXN0X2J1ZmZlcl9pc19yZWFkb25seShzZWxmKToKICAgICAgICAgZmQgPSBvcy5vcGVuKF9fZmlsZV9fLCBvcy5PX1JET05MWSkKICAgICAgICAgd2l0aCBvcGVuKGZkLCAicmIiLCBidWZmZXJpbmc9MCkgYXMgZjoKQEAgLTc0NCw2ICs3NzksMTIgQEAKICAgICAgICAgICAgIGRlZiBfX2luZGV4X18oc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIDQyCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoQSgpKSwgYidhJykKKyAgICAgICAgIyBJc3N1ZSAjMjU3NjYKKyAgICAgICAgY2xhc3MgQShzdHIpOgorICAgICAgICAgICAgZGVmIF9fYnl0ZXNfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYidhYmMnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoQSgnXHUyMGFjJykpLCBiJ2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoQSgnXHUyMGFjJyksICdpc284ODU5LTE1JyksIGInXHhhNCcpCiAgICAgICAgICMgSXNzdWUgIzI0NzMxCiAgICAgICAgIGNsYXNzIEE6CiAgICAgICAgICAgICBkZWYgX19ieXRlc19fKHNlbGYpOgpAQCAtNzg0LDYgKzgyNSwxNyBAQAogY2xhc3MgQnl0ZUFycmF5VGVzdChCYXNlQnl0ZXNUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdHlwZTJ0ZXN0ID0gYnl0ZWFycmF5CiAKKyAgICBkZWYgdGVzdF9nZXRpdGVtX2Vycm9yKHNlbGYpOgorICAgICAgICBtc2cgPSAiYnl0ZWFycmF5IGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyBvciBzbGljZXMiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIG1zZyk6CisgICAgICAgICAgICBieXRlYXJyYXkoYidweXRob24nKVsnYSddCisKKyAgICBkZWYgdGVzdF9zZXRpdGVtX2Vycm9yKHNlbGYpOgorICAgICAgICBtc2cgPSAiYnl0ZWFycmF5IGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyBvciBzbGljZXMiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIG1zZyk6CisgICAgICAgICAgICBiID0gYnl0ZWFycmF5KGIncHl0aG9uJykKKyAgICAgICAgICAgIGJbJ2EnXSA9ICJweXRob24iCisKICAgICBkZWYgdGVzdF9ub2hhc2goc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaGFzaCwgYnl0ZWFycmF5KCkpCiAKQEAgLTk5OCw2ICsxMDUwLDI4IEBACiAgICAgICAgIGJbODpdID0gYgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGJ5dGVhcnJheShsaXN0KHJhbmdlKDgpKSArIGxpc3QocmFuZ2UoMjU2KSkpKQogCisgICAgZGVmIHRlc3RfbW9kKHNlbGYpOgorICAgICAgICBiID0gYnl0ZWFycmF5KGInaGVsbG8sICViIScpCisgICAgICAgIG9yaWcgPSBiCisgICAgICAgIGIgPSBiICUgYid3b3JsZCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ2hlbGxvLCB3b3JsZCEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWcsIGJ5dGVhcnJheShiJ2hlbGxvLCAlYiEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiIGlzIG9yaWcpCisgICAgICAgIGIgPSBieXRlYXJyYXkoYiclcyAvIDEwMCA9ICVkJSUnKQorICAgICAgICBhID0gYiAlIChiJ3NldmVudHktbmluZScsIDc5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGJ5dGVhcnJheShiJ3NldmVudHktbmluZSAvIDEwMCA9IDc5JScpKQorCisgICAgZGVmIHRlc3RfaW1vZChzZWxmKToKKyAgICAgICAgYiA9IGJ5dGVhcnJheShiJ2hlbGxvLCAlYiEnKQorICAgICAgICBvcmlnID0gYgorICAgICAgICBiICU9IGInd29ybGQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidoZWxsbywgd29ybGQhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnLCBieXRlYXJyYXkoYidoZWxsbywgJWIhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYiBpcyBvcmlnKQorICAgICAgICBiID0gYnl0ZWFycmF5KGInJXMgLyAxMDAgPSAlZCUlJykKKyAgICAgICAgYiAlPSAoYidzZXZlbnR5LW5pbmUnLCA3OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBieXRlYXJyYXkoYidzZXZlbnR5LW5pbmUgLyAxMDAgPSA3OSUnKSkKKwogICAgIGRlZiB0ZXN0X2ljb25jYXQoc2VsZik6CiAgICAgICAgIGIgPSBieXRlYXJyYXkoYiJhYmMiKQogICAgICAgICBiMSA9IGIKQEAgLTEyMDUsNiArMTI3OSwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgZGVsc2xpY2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgb3JpZykKIAorICAgIEB0ZXN0LnN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfb2Jzb2xldGVfd3JpdGVfbG9jayhzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGJ1ZmZlcl93aXRoX251bGxfdmlldworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgZ2V0YnVmZmVyX3dpdGhfbnVsbF92aWV3LCBieXRlYXJyYXkoKSkKIAogY2xhc3MgQXNzb3J0ZWRCeXRlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMKQEAgLTEzMTUsMjAgKzEzOTMsMzUgQEAKICAgICAgICAgYiA9IGJ5dGVhcnJheSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYi5yZXBsYWNlKGInJywgYicnKSBpcyBiKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLmZsYWdzLmJ5dGVzX3dhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkJ5dGVzV2FybmluZyBpcyBuZWVkZWQgZm9yIHRoaXMgdGVzdDogdXNlIC1iYiBvcHRpb24iKQogICAgIGRlZiB0ZXN0X2NvbXBhcmUoc2VsZik6Ci0gICAgICAgIGlmIHN5cy5mbGFncy5ieXRlc193YXJuaW5nOgotICAgICAgICAgICAgZGVmIGJ5dGVzX3dhcm5pbmcoKToKLSAgICAgICAgICAgICAgICByZXR1cm4gdGVzdC5zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgQnl0ZXNXYXJuaW5nKSkKLSAgICAgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgotICAgICAgICAgICAgICAgIGInJyA9PSAnJwotICAgICAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6Ci0gICAgICAgICAgICAgICAgYicnICE9ICcnCi0gICAgICAgICAgICB3aXRoIGJ5dGVzX3dhcm5pbmcoKToKLSAgICAgICAgICAgICAgICBieXRlYXJyYXkoYicnKSA9PSAnJwotICAgICAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6Ci0gICAgICAgICAgICAgICAgYnl0ZWFycmF5KGInJykgIT0gJycKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIkJ5dGVzV2FybmluZyBpcyBuZWVkZWQgZm9yIHRoaXMgdGVzdDogdXNlIC1iYiBvcHRpb24iKQorICAgICAgICBkZWYgYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgcmV0dXJuIHRlc3Quc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIEJ5dGVzV2FybmluZykpCisgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgYicnID09ICcnCisgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgJycgPT0gYicnCisgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgYicnICE9ICcnCisgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgJycgIT0gYicnCisgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgYnl0ZWFycmF5KGInJykgPT0gJycKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICAnJyA9PSBieXRlYXJyYXkoYicnKQorICAgICAgICB3aXRoIGJ5dGVzX3dhcm5pbmcoKToKKyAgICAgICAgICAgIGJ5dGVhcnJheShiJycpICE9ICcnCisgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgJycgIT0gYnl0ZWFycmF5KGInJykKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICBiJ1wwJyA9PSAwCisgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgMCA9PSBiJ1wwJworICAgICAgICB3aXRoIGJ5dGVzX3dhcm5pbmcoKToKKyAgICAgICAgICAgIGInXDAnICE9IDAKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICAwICE9IGInXDAnCiAKICAgICAjIE9wdGltaXphdGlvbnM6CiAgICAgIyBfX2l0ZXJfXz8gKG9wdGltaXphdGlvbikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnoyLnB5IGIvTGliL3Rlc3QvdGVzdF9iejIucHkKaW5kZXggYmVlZjI3NS4uYTFlNGI4ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iejIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iejIucHkKQEAgLTIsMTMgKzIsMTUgQEAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBiaWdtZW10ZXN0LCBfNEcKIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGlvIGltcG9ydCBCeXRlc0lPCitmcm9tIGlvIGltcG9ydCBCeXRlc0lPLCBERUZBVUxUX0JVRkZFUl9TSVpFCiBpbXBvcnQgb3MKIGltcG9ydCBwaWNrbGUKK2ltcG9ydCBnbG9iCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHVubGluaworaW1wb3J0IF9jb21wcmVzc2lvbgogCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwpAQCAtNTEsNiArNTMsMTkgQEAKICAgICBFTVBUWV9EQVRBID0gYidCWmg5XHgxN3JFOFBceDkwXHgwMFx4MDBceDAwXHgwMCcKICAgICBCQURfREFUQSA9IGIndGhpcyBpcyBub3QgYSB2YWxpZCBiemlwMiBmaWxlJwogCisgICAgIyBTb21lIHRlc3RzIG5lZWQgbW9yZSB0aGFuIG9uZSBibG9jayBvZiB1bmNvbXByZXNzZWQgZGF0YS4gU2luY2Ugb25lIGJsb2NrCisgICAgIyBpcyBhdCBsZWFzdCAxMDAga0IsIHdlIGdhdGhlciBzb21lIGRhdGEgZHluYW1pY2FsbHkgYW5kIGNvbXByZXNzIGl0LgorICAgICMgTm90ZSB0aGF0IHRoaXMgYXNzdW1lcyB0aGF0IGNvbXByZXNzaW9uIHdvcmtzIGNvcnJlY3RseSwgc28gd2UgY2Fubm90CisgICAgIyBzaW1wbHkgdXNlIHRoZSBiaWdnZXIgdGVzdCBkYXRhIGZvciBhbGwgdGVzdHMuCisgICAgdGVzdF9zaXplID0gMAorICAgIEJJR19URVhUID0gYnl0ZWFycmF5KDEyOCoxMDI0KQorICAgIGZvciBmbmFtZSBpbiBnbG9iLmdsb2Iob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcqLnB5JykpOgorICAgICAgICB3aXRoIG9wZW4oZm5hbWUsICdyYicpIGFzIGZoOgorICAgICAgICAgICAgdGVzdF9zaXplICs9IGZoLnJlYWRpbnRvKG1lbW9yeXZpZXcoQklHX1RFWFQpW3Rlc3Rfc2l6ZTpdKQorICAgICAgICBpZiB0ZXN0X3NpemUgPiAxMjgqMTAyNDoKKyAgICAgICAgICAgIGJyZWFrCisgICAgQklHX0RBVEEgPSBiejIuY29tcHJlc3MoQklHX1RFWFQsIGNvbXByZXNzbGV2ZWw9MSkKKwogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5maWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCiAKQEAgLTk2LDcgKzExMSw3IEBACiAgICAgZGVmIHRlc3RSZWFkKHNlbGYpOgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBmbG9hdCgpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUKQogCiAgICAgZGVmIHRlc3RSZWFkQmFkRmlsZShzZWxmKToKQEAgLTEwNywyMSArMTIyLDIxIEBACiAgICAgZGVmIHRlc3RSZWFkTXVsdGlTdHJlYW0oc2VsZik6CiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz01KQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIGZsb2F0KCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQgKiA1KQogCiAgICAgZGVmIHRlc3RSZWFkTW9ua2V5TXVsdGlTdHJlYW0oc2VsZik6CiAgICAgICAgICMgVGVzdCBCWjJGaWxlLnJlYWQoKSBvbiBhIG11bHRpLXN0cmVhbSBhcmNoaXZlIHdoZXJlIGEgc3RyZWFtCiAgICAgICAgICMgYm91bmRhcnkgY29pbmNpZGVzIHdpdGggdGhlIGVuZCBvZiB0aGUgcmF3IHJlYWQgYnVmZmVyLgotICAgICAgICBidWZmZXJfc2l6ZSA9IGJ6Mi5fQlVGRkVSX1NJWkUKLSAgICAgICAgYnoyLl9CVUZGRVJfU0laRSA9IGxlbihzZWxmLkRBVEEpCisgICAgICAgIGJ1ZmZlcl9zaXplID0gX2NvbXByZXNzaW9uLkJVRkZFUl9TSVpFCisgICAgICAgIF9jb21wcmVzc2lvbi5CVUZGRVJfU0laRSA9IGxlbihzZWxmLkRBVEEpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz01KQogICAgICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIE5vbmUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIGZsb2F0KCkpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUICogNSkKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGJ6Mi5fQlVGRkVSX1NJWkUgPSBidWZmZXJfc2l6ZQorICAgICAgICAgICAgX2NvbXByZXNzaW9uLkJVRkZFUl9TSVpFID0gYnVmZmVyX3NpemUKIAogICAgIGRlZiB0ZXN0UmVhZFRyYWlsaW5nSnVuayhzZWxmKToKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdWZmaXg9c2VsZi5CQURfREFUQSkKQEAgLTEzNiw3ICsxNTEsNyBAQAogICAgIGRlZiB0ZXN0UmVhZDAoc2VsZik6CiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIGZsb2F0KCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgwKSwgYiIiKQogCiAgICAgZGVmIHRlc3RSZWFkQ2h1bmsxMChzZWxmKToKQEAgLTU0NSwxMyArNTYwLDI0IEBACiAgICAgICAgIHdpdGggQloyRmlsZShzdHJfZmlsZW5hbWUsICJyYiIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLkRBVEEpCiAKKyAgICBkZWYgdGVzdERlY29tcHJlc3NMaW1pdGVkKHNlbGYpOgorICAgICAgICAiIiJEZWNvbXByZXNzZWQgZGF0YSBidWZmZXJpbmcgc2hvdWxkIGJlIGxpbWl0ZWQiIiIKKyAgICAgICAgYm9tYiA9IGJ6Mi5jb21wcmVzcyhieXRlcyhpbnQoMmU2KSksIGNvbXByZXNzbGV2ZWw9OSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihib21iKSwgX2NvbXByZXNzaW9uLkJVRkZFUl9TSVpFKQorCisgICAgICAgIGRlY29tcCA9IEJaMkZpbGUoQnl0ZXNJTyhib21iKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcygxKSwgZGVjb21wLnJlYWQoMSkpCisgICAgICAgIG1heF9kZWNvbXAgPSAxICsgREVGQVVMVF9CVUZGRVJfU0laRQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChkZWNvbXAuX2J1ZmZlci5yYXcudGVsbCgpLCBtYXhfZGVjb21wLAorICAgICAgICAgICAgIkV4Y2Vzc2l2ZSBhbW91bnQgb2YgZGF0YSB3YXMgZGVjb21wcmVzc2VkIikKKwogCiAgICAgIyBUZXN0cyBmb3IgYSBCWjJGaWxlIHdyYXBwaW5nIGFub3RoZXIgZmlsZSBvYmplY3Q6CiAKICAgICBkZWYgdGVzdFJlYWRCeXRlc0lPKHNlbGYpOgogICAgICAgICB3aXRoIEJ5dGVzSU8oc2VsZi5EQVRBKSBhcyBiaW86CiAgICAgICAgICAgICB3aXRoIEJaMkZpbGUoYmlvKSBhcyBiejJmOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBOb25lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBmbG9hdCgpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYmlvLmNsb3NlZCkKIApAQCAtNzA1LDYgKzczMSw5NSBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wcyhCWjJEZWNvbXByZXNzb3IoKSwgcHJvdG8pCiAKKyAgICBkZWYgdGVzdERlY29tcHJlc3NvckNodW5rc01heHNpemUoc2VsZik6CisgICAgICAgIGJ6ZCA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgIG1heF9sZW5ndGggPSAxMDAKKyAgICAgICAgb3V0ID0gW10KKworICAgICAgICAjIEZlZWQgc29tZSBpbnB1dAorICAgICAgICBsZW5fID0gbGVuKHNlbGYuQklHX0RBVEEpIC0gNjQKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhzZWxmLkJJR19EQVRBWzpsZW5fXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbGVuZ3RoPW1heF9sZW5ndGgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ6ZC5uZWVkc19pbnB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ob3V0Wy0xXSksIG1heF9sZW5ndGgpCisKKyAgICAgICAgIyBSZXRyaWV2ZSBtb3JlIGRhdGEgd2l0aG91dCBwcm92aWRpbmcgbW9yZSBpbnB1dAorICAgICAgICBvdXQuYXBwZW5kKGJ6ZC5kZWNvbXByZXNzKGInJywgbWF4X2xlbmd0aD1tYXhfbGVuZ3RoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiemQubmVlZHNfaW5wdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG91dFstMV0pLCBtYXhfbGVuZ3RoKQorCisgICAgICAgICMgUmV0cmlldmUgbW9yZSBkYXRhIHdoaWxlIHByb3ZpZGluZyBtb3JlIGlucHV0CisgICAgICAgIG91dC5hcHBlbmQoYnpkLmRlY29tcHJlc3Moc2VsZi5CSUdfREFUQVtsZW5fOl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2xlbmd0aD1tYXhfbGVuZ3RoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKG91dFstMV0pLCBtYXhfbGVuZ3RoKQorCisgICAgICAgICMgUmV0cmlldmUgcmVtYWluaW5nIHVuY29tcHJlc3NlZCBkYXRhCisgICAgICAgIHdoaWxlIG5vdCBiemQuZW9mOgorICAgICAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhiJycsIG1heF9sZW5ndGg9bWF4X2xlbmd0aCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4ob3V0Wy0xXSksIG1heF9sZW5ndGgpCisKKyAgICAgICAgb3V0ID0gYiIiLmpvaW4ob3V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwgc2VsZi5CSUdfVEVYVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiemQudW51c2VkX2RhdGEsIGIiIikKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9pbnB1dGJ1Zl8xKHNlbGYpOgorICAgICAgICAjIFRlc3QgcmV1c2luZyBpbnB1dCBidWZmZXIgYWZ0ZXIgbW92aW5nIGV4aXN0aW5nCisgICAgICAgICMgY29udGVudHMgdG8gYmVnaW5uaW5nCisgICAgICAgIGJ6ZCA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgIG91dCA9IFtdCisKKyAgICAgICAgIyBDcmVhdGUgaW5wdXQgYnVmZmVyIGFuZCBmaWxsIGl0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnpkLmRlY29tcHJlc3Moc2VsZi5EQVRBWzoxMDBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9sZW5ndGg9MCksIGInJykKKworICAgICAgICAjIFJldHJpZXZlIHNvbWUgcmVzdWx0cywgZnJlZWluZyBjYXBhY2l0eSBhdCBiZWdpbm5pbmcKKyAgICAgICAgIyBvZiBpbnB1dCBidWZmZXIKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhiJycsIDIpKQorCisgICAgICAgICMgQWRkIG1vcmUgZGF0YSB0aGF0IGZpdHMgaW50byBpbnB1dCBidWZmZXIgYWZ0ZXIKKyAgICAgICAgIyBtb3ZpbmcgZXhpc3RpbmcgZGF0YSB0byBiZWdpbm5pbmcKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhzZWxmLkRBVEFbMTAwOjEwNV0sIDE1KSkKKworICAgICAgICAjIERlY29tcHJlc3MgcmVzdCBvZiBkYXRhCisgICAgICAgIG91dC5hcHBlbmQoYnpkLmRlY29tcHJlc3Moc2VsZi5EQVRBWzEwNTpdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycuam9pbihvdXQpLCBzZWxmLlRFWFQpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfaW5wdXRidWZfMihzZWxmKToKKyAgICAgICAgIyBUZXN0IHJldXNpbmcgaW5wdXQgYnVmZmVyIGJ5IGFwcGVuZGluZyBkYXRhIGF0IHRoZQorICAgICAgICAjIGVuZCByaWdodCBhd2F5CisgICAgICAgIGJ6ZCA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgIG91dCA9IFtdCisKKyAgICAgICAgIyBDcmVhdGUgaW5wdXQgYnVmZmVyIGFuZCBlbXB0eSBpdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6ZC5kZWNvbXByZXNzKHNlbGYuREFUQVs6MjAwXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbGVuZ3RoPTApLCBiJycpCisgICAgICAgIG91dC5hcHBlbmQoYnpkLmRlY29tcHJlc3MoYicnKSkKKworICAgICAgICAjIEZpbGwgYnVmZmVyIHdpdGggbmV3IGRhdGEKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhzZWxmLkRBVEFbMjAwOjI4MF0sIDIpKQorCisgICAgICAgICMgQXBwZW5kIHNvbWUgbW9yZSBkYXRhLCBub3QgZW5vdWdoIHRvIHJlcXVpcmUgcmVzaXplCisgICAgICAgIG91dC5hcHBlbmQoYnpkLmRlY29tcHJlc3Moc2VsZi5EQVRBWzI4MDozMDBdLCAyKSkKKworICAgICAgICAjIERlY29tcHJlc3MgcmVzdCBvZiBkYXRhCisgICAgICAgIG91dC5hcHBlbmQoYnpkLmRlY29tcHJlc3Moc2VsZi5EQVRBWzMwMDpdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycuam9pbihvdXQpLCBzZWxmLlRFWFQpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfaW5wdXRidWZfMyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHJldXNpbmcgaW5wdXQgYnVmZmVyIGFmdGVyIGV4dGVuZGluZyBpdAorCisgICAgICAgIGJ6ZCA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgIG91dCA9IFtdCisKKyAgICAgICAgIyBDcmVhdGUgYWxtb3N0IGZ1bGwgaW5wdXQgYnVmZmVyCisgICAgICAgIG91dC5hcHBlbmQoYnpkLmRlY29tcHJlc3Moc2VsZi5EQVRBWzoyMDBdLCA1KSkKKworICAgICAgICAjIEFkZCBldmVuIG1vcmUgZGF0YSB0byBpdCwgcmVxdWlyaW5nIHJlc2l6ZQorICAgICAgICBvdXQuYXBwZW5kKGJ6ZC5kZWNvbXByZXNzKHNlbGYuREFUQVsyMDA6MzAwXSwgNSkpCisKKyAgICAgICAgIyBEZWNvbXByZXNzIHJlc3Qgb2YgZGF0YQorICAgICAgICBvdXQuYXBwZW5kKGJ6ZC5kZWNvbXByZXNzKHNlbGYuREFUQVszMDA6XSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLmpvaW4ob3V0KSwgc2VsZi5URVhUKQogCiBjbGFzcyBDb21wcmVzc0RlY29tcHJlc3NUZXN0KEJhc2VUZXN0KToKICAgICBkZWYgdGVzdENvbXByZXNzKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weSBiL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkKaW5kZXggOTE5Mzg1Ny4uODBlZDYzMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5CkBAIC0yLDcgKzIsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCiBpbXBvcnQgdGltZQogaW1wb3J0IGxvY2FsZQogaW1wb3J0IHN5cwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jYWxsLnB5IGIvTGliL3Rlc3QvdGVzdF9jYWxsLnB5CmluZGV4IGMwMGNjYmEuLmUyYjhlMGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2FsbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NhbGwucHkKQEAgLTEsNSArMSw0IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAjIFRoZSB0ZXN0IGNhc2VzIGhlcmUgY292ZXIgc2V2ZXJhbCBwYXRocyB0aHJvdWdoIHRoZSBmdW5jdGlvbiBjYWxsaW5nCiAjIGNvZGUuICBUaGV5IGRlcGVuZCBvbiB0aGUgTUVUSF9YWFggZmxhZyB0aGF0IGlzIHVzZWQgdG8gZGVmaW5lIGEgQwpAQCAtMTIzLDkgKzEyMiw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgW10uY291bnQsIHg9MiwgeT0yKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChDRnVuY3Rpb25DYWxscykKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NhcGkucHkgYi9MaWIvdGVzdC90ZXN0X2NhcGkucHkKaW5kZXggYTBjMWU3OS4uNmE4Njg1YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQpAQCAtNiwxMCArNiwxMiBAQAogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2ltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgTUlTU0lOR19DX0RPQ1NUUklOR1MKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fZmFpbHVyZQogdHJ5OgogICAgIGltcG9ydCBfcG9zaXhzdWJwcm9jZXNzCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0yMSw2ICsyMyw5IEBACiAjIFNraXAgdGhpcyB0ZXN0IGlmIHRoZSBfdGVzdGNhcGkgbW9kdWxlIGlzbid0IGF2YWlsYWJsZS4KIF90ZXN0Y2FwaSA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnX3Rlc3RjYXBpJykKIAorIyBXZXJlIHdlIGNvbXBpbGVkIC0td2l0aC1weWRlYnVnIG9yIHdpdGggI2RlZmluZSBQeV9ERUJVRz8KK1B5X0RFQlVHID0gaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50JykKKwogCiBkZWYgdGVzdGZ1bmN0aW9uKHNlbGYpOgogICAgICIiInNvbWUgZG9jIiIiCkBAIC0xMTgsNyArMTIzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkubm9fZG9jc3RyaW5nLl9fZG9jX18sIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3Rlc3RjYXBpLm5vX2RvY3N0cmluZy5fX3RleHRfc2lnbmF0dXJlX18sIE5vbmUpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkuZG9jc3RyaW5nX2VtcHR5Ll9fZG9jX18sICIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF90ZXN0Y2FwaS5kb2NzdHJpbmdfZW1wdHkuX19kb2NfXywgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkuZG9jc3RyaW5nX2VtcHR5Ll9fdGV4dF9zaWduYXR1cmVfXywgTm9uZSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF90ZXN0Y2FwaS5kb2NzdHJpbmdfbm9fc2lnbmF0dXJlLl9fZG9jX18sCkBAIC0xNDUsMTEgKzE1MCw5MiBAQAogICAgICAgICAgICAgIlRoaXMgZG9jc3RyaW5nIGhhcyBhIHZhbGlkIHNpZ25hdHVyZS4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF90ZXN0Y2FwaS5kb2NzdHJpbmdfd2l0aF9zaWduYXR1cmUuX190ZXh0X3NpZ25hdHVyZV9fLCAiKCRtb2R1bGUsIC8sIHNpZykiKQogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3Rlc3RjYXBpLmRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9idXRfbm9fZG9jLl9fZG9jX18sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3Rlc3RjYXBpLmRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9idXRfbm9fZG9jLl9fdGV4dF9zaWduYXR1cmVfXywKKyAgICAgICAgICAgICIoJG1vZHVsZSwgLywgc2lnKSIpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkuZG9jc3RyaW5nX3dpdGhfc2lnbmF0dXJlX2FuZF9leHRyYV9uZXdsaW5lcy5fX2RvY19fLAogICAgICAgICAgICAgIlxuVGhpcyBkb2NzdHJpbmcgaGFzIGEgdmFsaWQgc2lnbmF0dXJlIGFuZCBzb21lIGV4dHJhIG5ld2xpbmVzLiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3Rlc3RjYXBpLmRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9hbmRfZXh0cmFfbmV3bGluZXMuX190ZXh0X3NpZ25hdHVyZV9fLAogICAgICAgICAgICAgIigkbW9kdWxlLCAvLCBwYXJhbWV0ZXIpIikKIAorICAgIGRlZiB0ZXN0X2NfdHlwZV93aXRoX21hdHJpeF9tdWx0aXBsaWNhdGlvbihzZWxmKToKKyAgICAgICAgTSA9IF90ZXN0Y2FwaS5tYXRtdWxUeXBlCisgICAgICAgIG0xID0gTSgpCisgICAgICAgIG0yID0gTSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEgQCBtMiwgKCJtYXRtdWwiLCBtMSwgbTIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xIEAgNDIsICgibWF0bXVsIiwgbTEsIDQyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0MiBAIG0xLCAoIm1hdG11bCIsIDQyLCBtMSkpCisgICAgICAgIG8gPSBtMQorICAgICAgICBvIEA9IG0yCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobywgKCJpbWF0bXVsIiwgbTEsIG0yKSkKKyAgICAgICAgbyA9IG0xCisgICAgICAgIG8gQD0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvLCAoImltYXRtdWwiLCBtMSwgNDIpKQorICAgICAgICBvID0gNDIKKyAgICAgICAgbyBAPSBtMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG8sICgibWF0bXVsIiwgNDIsIG0xKSkKKworICAgIGRlZiB0ZXN0X3JldHVybl9udWxsX3dpdGhvdXRfZXJyb3Ioc2VsZik6CisgICAgICAgICMgSXNzdWUgIzIzNTcxOiBBIGZ1bmN0aW9uIG11c3Qgbm90IHJldHVybiBOVUxMIHdpdGhvdXQgc2V0dGluZyBhbgorICAgICAgICAjIGVycm9yCisgICAgICAgIGlmIFB5X0RFQlVHOgorICAgICAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCisgICAgICAgICAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKyAgICAgICAgICAgICAgICB3aXRoIHN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpOgorICAgICAgICAgICAgICAgICAgICBfdGVzdGNhcGkucmV0dXJuX251bGxfd2l0aG91dF9lcnJvcigpCisgICAgICAgICAgICAiIiIpCisgICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoJy1jJywgY29kZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyLnJlcGxhY2UoYidccicsIGInJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ0ZhdGFsIFB5dGhvbiBlcnJvcjogYSBmdW5jdGlvbiByZXR1cm5lZCBOVUxMICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInd2l0aG91dCBzZXR0aW5nIGFuIGVycm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ1N5c3RlbUVycm9yOiA8YnVpbHQtaW4gZnVuY3Rpb24gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnIncmV0dXJuX251bGxfd2l0aG91dF9lcnJvcj4gcmV0dXJuZWQgTlVMTCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicid3aXRob3V0IHNldHRpbmcgYW4gZXJyb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ0N1cnJlbnQgdGhyZWFkLio6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJyAgRmlsZSAuKiIsIGxpbmUgNiBpbiA8bW9kdWxlPicpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBfdGVzdGNhcGkucmV0dXJuX251bGxfd2l0aG91dF9lcnJvcigpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmV0dXJuX251bGxfd2l0aG91dF9lcnJvci4qICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JldHVybmVkIE5VTEwgd2l0aG91dCBzZXR0aW5nIGFuIGVycm9yJykKKworICAgIGRlZiB0ZXN0X3JldHVybl9yZXN1bHRfd2l0aF9lcnJvcihzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjM1NzE6IEEgZnVuY3Rpb24gbXVzdCBub3QgcmV0dXJuIGEgcmVzdWx0IHdpdGggYW4gZXJyb3Igc2V0CisgICAgICAgIGlmIFB5X0RFQlVHOgorICAgICAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCisgICAgICAgICAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKyAgICAgICAgICAgICAgICB3aXRoIHN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpOgorICAgICAgICAgICAgICAgICAgICBfdGVzdGNhcGkucmV0dXJuX3Jlc3VsdF93aXRoX2Vycm9yKCkKKyAgICAgICAgICAgICIiIikKKyAgICAgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fZmFpbHVyZSgnLWMnLCBjb2RlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnIucmVwbGFjZShiJ1xyJywgYicnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInRmF0YWwgUHl0aG9uIGVycm9yOiBhIGZ1bmN0aW9uIHJldHVybmVkIGEgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidyZXN1bHQgd2l0aCBhbiBlcnJvciBzZXRcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInVmFsdWVFcnJvclxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidTeXN0ZW1FcnJvcjogPGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInZnVuY3Rpb24gcmV0dXJuX3Jlc3VsdF93aXRoX2Vycm9yPiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ3JldHVybmVkIGEgcmVzdWx0IHdpdGggYW4gZXJyb3Igc2V0XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidDdXJyZW50IHRocmVhZC4qOlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicicgIEZpbGUgLiosIGxpbmUgNiBpbiA8bW9kdWxlPicpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBfdGVzdGNhcGkucmV0dXJuX3Jlc3VsdF93aXRoX2Vycm9yKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXR1cm5fcmVzdWx0X3dpdGhfZXJyb3IuKiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXR1cm5lZCBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldCcpCisKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIFRlc3RQZW5kaW5nQ2FsbHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjY1LDcgKzM1MSw3IEBACiAgICAgICAgICAgICBleGVuYW1lICs9IGV4dAogICAgICAgICAgICAgZXhlcGF0aCA9IG9zLnBhdGguZGlybmFtZShzeXMuZXhlY3V0YWJsZSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGV4ZXBhdGggPSBvcy5wYXRoLmpvaW4oYmFzZXBhdGgsICJNb2R1bGVzIikKKyAgICAgICAgICAgIGV4ZXBhdGggPSBvcy5wYXRoLmpvaW4oYmFzZXBhdGgsICJQcm9ncmFtcyIpCiAgICAgICAgIHNlbGYudGVzdF9leGUgPSBleGUgPSBvcy5wYXRoLmpvaW4oZXhlcGF0aCwgZXhlbmFtZSkKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGV4ZSk6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCIlciBkb2Vzbid0IGV4aXN0IiAlIGV4ZSkKQEAgLTI4NCwxMiArMzcwLDEzIEBACiAgICAgICAgIGNtZC5leHRlbmQoYXJncykKICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKICAgICAgICAgKG91dCwgZXJyKSA9IHAuY29tbXVuaWNhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmV0dXJuY29kZSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIHJldHVybmNvZGUgJWQsIHN0ZGVyciBpcyAlciIgJQogICAgICAgICAgICAgICAgICAgICAgICAgIChwLnJldHVybmNvZGUsIGVycikpCi0gICAgICAgIHJldHVybiBvdXQuZGVjb2RlKCJsYXRpbjEiKSwgZXJyLmRlY29kZSgibGF0aW4xIikKKyAgICAgICAgcmV0dXJuIG91dCwgZXJyCiAKICAgICBkZWYgdGVzdF9zdWJpbnRlcnBzKHNlbGYpOgogICAgICAgICAjIFRoaXMgaXMganVzdCBhICJkb24ndCBjcmFzaCIgdGVzdApAQCAtMzE2LDM0ICs0MDMsMzggQEAKICAgICAgICAgICAgIHByaW50KCkKICAgICAgICAgICAgIHByaW50KG91dCkKICAgICAgICAgICAgIHByaW50KGVycikKKyAgICAgICAgZXhwZWN0ZWRfZXJyb3JzID0gc3lzLl9fc3Rkb3V0X18uZXJyb3JzCiAgICAgICAgIGV4cGVjdGVkX3N0ZGluX2VuY29kaW5nID0gc3lzLl9fc3RkaW5fXy5lbmNvZGluZwogICAgICAgICBleHBlY3RlZF9waXBlX2VuY29kaW5nID0gc2VsZi5fZ2V0X2RlZmF1bHRfcGlwZV9lbmNvZGluZygpCi0gICAgICAgIGV4cGVjdGVkX291dHB1dCA9IG9zLmxpbmVzZXAuam9pbihbCisgICAgICAgIGV4cGVjdGVkX291dHB1dCA9ICdcbicuam9pbihbCiAgICAgICAgICItLS0gVXNlIGRlZmF1bHRzIC0tLSIsCiAgICAgICAgICJFeHBlY3RlZCBlbmNvZGluZzogZGVmYXVsdCIsCiAgICAgICAgICJFeHBlY3RlZCBlcnJvcnM6IGRlZmF1bHQiLAotICAgICAgICAic3RkaW46IHswfTpzdHJpY3QiLAotICAgICAgICAic3Rkb3V0OiB7MX06c3RyaWN0IiwKLSAgICAgICAgInN0ZGVycjogezF9OmJhY2tzbGFzaHJlcGxhY2UiLAorICAgICAgICAic3RkaW46IHtpbl9lbmNvZGluZ306e2Vycm9yc30iLAorICAgICAgICAic3Rkb3V0OiB7b3V0X2VuY29kaW5nfTp7ZXJyb3JzfSIsCisgICAgICAgICJzdGRlcnI6IHtvdXRfZW5jb2Rpbmd9OmJhY2tzbGFzaHJlcGxhY2UiLAogICAgICAgICAiLS0tIFNldCBlcnJvcnMgb25seSAtLS0iLAogICAgICAgICAiRXhwZWN0ZWQgZW5jb2Rpbmc6IGRlZmF1bHQiLAotICAgICAgICAiRXhwZWN0ZWQgZXJyb3JzOiBzdXJyb2dhdGVlc2NhcGUiLAotICAgICAgICAic3RkaW46IHswfTpzdXJyb2dhdGVlc2NhcGUiLAotICAgICAgICAic3Rkb3V0OiB7MX06c3Vycm9nYXRlZXNjYXBlIiwKLSAgICAgICAgInN0ZGVycjogezF9OmJhY2tzbGFzaHJlcGxhY2UiLAorICAgICAgICAiRXhwZWN0ZWQgZXJyb3JzOiBpZ25vcmUiLAorICAgICAgICAic3RkaW46IHtpbl9lbmNvZGluZ306aWdub3JlIiwKKyAgICAgICAgInN0ZG91dDoge291dF9lbmNvZGluZ306aWdub3JlIiwKKyAgICAgICAgInN0ZGVycjoge291dF9lbmNvZGluZ306YmFja3NsYXNocmVwbGFjZSIsCiAgICAgICAgICItLS0gU2V0IGVuY29kaW5nIG9ubHkgLS0tIiwKICAgICAgICAgIkV4cGVjdGVkIGVuY29kaW5nOiBsYXRpbi0xIiwKICAgICAgICAgIkV4cGVjdGVkIGVycm9yczogZGVmYXVsdCIsCi0gICAgICAgICJzdGRpbjogbGF0aW4tMTpzdHJpY3QiLAotICAgICAgICAic3Rkb3V0OiBsYXRpbi0xOnN0cmljdCIsCisgICAgICAgICJzdGRpbjogbGF0aW4tMTp7ZXJyb3JzfSIsCisgICAgICAgICJzdGRvdXQ6IGxhdGluLTE6e2Vycm9yc30iLAogICAgICAgICAic3RkZXJyOiBsYXRpbi0xOmJhY2tzbGFzaHJlcGxhY2UiLAogICAgICAgICAiLS0tIFNldCBlbmNvZGluZyBhbmQgZXJyb3JzIC0tLSIsCiAgICAgICAgICJFeHBlY3RlZCBlbmNvZGluZzogbGF0aW4tMSIsCi0gICAgICAgICJFeHBlY3RlZCBlcnJvcnM6IHN1cnJvZ2F0ZWVzY2FwZSIsCi0gICAgICAgICJzdGRpbjogbGF0aW4tMTpzdXJyb2dhdGVlc2NhcGUiLAotICAgICAgICAic3Rkb3V0OiBsYXRpbi0xOnN1cnJvZ2F0ZWVzY2FwZSIsCi0gICAgICAgICJzdGRlcnI6IGxhdGluLTE6YmFja3NsYXNocmVwbGFjZSJdKS5mb3JtYXQoZXhwZWN0ZWRfc3RkaW5fZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGlwZV9lbmNvZGluZykKKyAgICAgICAgIkV4cGVjdGVkIGVycm9yczogcmVwbGFjZSIsCisgICAgICAgICJzdGRpbjogbGF0aW4tMTpyZXBsYWNlIiwKKyAgICAgICAgInN0ZG91dDogbGF0aW4tMTpyZXBsYWNlIiwKKyAgICAgICAgInN0ZGVycjogbGF0aW4tMTpiYWNrc2xhc2hyZXBsYWNlIl0pCisgICAgICAgIGV4cGVjdGVkX291dHB1dCA9IGV4cGVjdGVkX291dHB1dC5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2VuY29kaW5nPWV4cGVjdGVkX3N0ZGluX2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfZW5jb2Rpbmc9ZXhwZWN0ZWRfcGlwZV9lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzPWV4cGVjdGVkX2Vycm9ycykKICAgICAgICAgIyBUaGlzIGlzIHVzZWZ1bCBpZiB3ZSBldmVyIHRyaXAgb3ZlciBvZGQgcGxhdGZvcm0gYmVoYXZpb3VyCiAgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuc3RyaXAoKSwgZXhwZWN0ZWRfb3V0cHV0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jZ2kucHkgYi9MaWIvdGVzdC90ZXN0X2NnaS5weQppbmRleCA2YjI4MTA2Li5hYjlmNmFiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NnaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NnaS5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGNoZWNrX3dhcm5pbmdzCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2hlY2tfd2FybmluZ3MKIGltcG9ydCBjZ2kKIGltcG9ydCBvcwogaW1wb3J0IHN5cwpAQCAtMzQ0LDYgKzM0NCwxNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZzLmxpc3RbMF0ubmFtZSwgJ3N1Ym1pdC1uYW1lJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcy5saXN0WzBdLnZhbHVlLCAnTGFycnknKQogCisgICAgZGVmIHRlc3RfZmllbGRzdG9yYWdlX2FzX2NvbnRleHRfbWFuYWdlcihzZWxmKToKKyAgICAgICAgZnAgPSBCeXRlc0lPKGIneCcgKiAxMCkKKyAgICAgICAgZW52ID0geydSRVFVRVNUX01FVEhPRCc6ICdQVVQnfQorICAgICAgICB3aXRoIGNnaS5GaWVsZFN0b3JhZ2UoZnA9ZnAsIGVudmlyb249ZW52KSBhcyBmczoKKyAgICAgICAgICAgIGNvbnRlbnQgPSBmcy5maWxlLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmcy5maWxlLmNsb3NlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmZpbGUuY2xvc2VkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRlbnQsICd4JyAqIDEwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ0kvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUnKToKKyAgICAgICAgICAgIGZzLmZpbGUucmVhZCgpCiAKICAgICBfcXNfcmVzdWx0ID0gewogICAgICAgICAna2V5MSc6ICd2YWx1ZTEnLApAQCAtNTE5LDkgKzUyOSw1IEBACiAtLUFhQjAzeC0tCiAiIiIKIAotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KENnaVRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NnaXRiLnB5IGIvTGliL3Rlc3QvdGVzdF9jZ2l0Yi5weQppbmRleCAyZTA3MmE5Li5hODdhNDIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NnaXRiLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2dpdGIucHkKQEAgLTEsNSArMSw1IEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlLCB0ZW1wX2RpcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHRlbXBfZGlyCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IGNnaXRiCkBAIC02Myw4ICs2Myw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJzwvcD4nLCBvdXQpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChUZXN0Q2dpdGIpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2hhcm1hcGNvZGVjLnB5IGIvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkKaW5kZXggNjIyNjU4Ny4uNDA2NGFlZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkKQEAgLTQ5LDggKzQ5LDUgQEAKICAgICBkZWYgdGVzdF9tYXB0b3VuZGVmaW5lZChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVycm9yLCBzdHIsIGInYWJjXDAwMScsIGNvZGVjbmFtZSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoQ2hhcm1hcENvZGVjVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbGFzcy5weSBiL0xpYi90ZXN0L3Rlc3RfY2xhc3MucHkKaW5kZXggZTM4ODNkNi4uNGQ1NTRhMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbGFzcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NsYXNzLnB5CkBAIC0yLDcgKzIsNiBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIHRlc3RtZXRocyA9IFsKIApAQCAtMTMsNiArMTIsOCBAQAogICAgICJyc3ViIiwKICAgICAibXVsIiwKICAgICAicm11bCIsCisgICAgIm1hdG11bCIsCisgICAgInJtYXRtdWwiLAogICAgICJ0cnVlZGl2IiwKICAgICAicnRydWVkaXYiLAogICAgICJmbG9vcmRpdiIsCkBAIC0xNzcsNiArMTc4LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Q2FsbFN0YWNrKFsoIl9fcm11bF9fIiwgKHRlc3RtZSwgMSkpXSkKIAogICAgICAgICBjYWxsTHN0WzpdID0gW10KKyAgICAgICAgdGVzdG1lIEAgMQorICAgICAgICBzZWxmLmFzc2VydENhbGxTdGFjayhbKCJfX21hdG11bF9fIiwgKHRlc3RtZSwgMSkpXSkKKworICAgICAgICBjYWxsTHN0WzpdID0gW10KKyAgICAgICAgMSBAIHRlc3RtZQorICAgICAgICBzZWxmLmFzc2VydENhbGxTdGFjayhbKCJfX3JtYXRtdWxfXyIsICh0ZXN0bWUsIDEpKV0pCisKKyAgICAgICAgY2FsbExzdFs6XSA9IFtdCiAgICAgICAgIHRlc3RtZSAvIDEKICAgICAgICAgc2VsZi5hc3NlcnRDYWxsU3RhY2soWygiX190cnVlZGl2X18iLCAodGVzdG1lLCAxKSldKQogCkBAIC00OTEsMTAgKzUwMCwxMCBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGEoKSAjIFRoaXMgc2hvdWxkIG5vdCBzZWdmYXVsdAotICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICBleGNlcHQgUmVjdXJzaW9uRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIkZhaWxlZCB0byByYWlzZSBSdW50aW1lRXJyb3IiKQorICAgICAgICAgICAgc2VsZi5mYWlsKCJGYWlsZWQgdG8gcmFpc2UgUmVjdXJzaW9uRXJyb3IiKQogCiAgICAgZGVmIHRlc3RGb3JFeGNlcHRpb25zUmFpc2VkSW5JbnN0YW5jZUdldGF0dHIyKHNlbGYpOgogICAgICAgICAjIFRlc3RzIGZvciBleGNlcHRpb25zIHJhaXNlZCBpbiBpbnN0YW5jZV9nZXRhdHRyMigpLgpAQCAtNTU5LDggKzU2OCw1IEBACiAgICAgICAgIGEgPSBBKGhhc2goQS5mKV4oLTEpKQogICAgICAgICBoYXNoKGEuZikKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENsYXNzVGVzdHMpCi0KLWlmIF9fbmFtZV9fPT0nX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfY21hdGgucHkKaW5kZXggNjhiZjE2ZS4uMWY4ODRlNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbWF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtYXRoLnB5CkBAIC0xLDUgKzEsNiBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgcmVxdWlyZXNfSUVFRV83NTQsIGNweXRob25fb25seQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzX0lFRUVfNzU0LCBjcHl0aG9uX29ubHkKIGZyb20gdGVzdC50ZXN0X21hdGggaW1wb3J0IHBhcnNlX3Rlc3RmaWxlLCB0ZXN0X2ZpbGUKK2ltcG9ydCB0ZXN0LnRlc3RfbWF0aCBhcyB0ZXN0X21hdGgKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGNtYXRoLCBtYXRoCiBmcm9tIGNtYXRoIGltcG9ydCBwaGFzZSwgcG9sYXIsIHJlY3QsIHBpCkBAIC01NjAsOCArNTYxLDQ2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydENvbXBsZXhJZGVudGljYWwoY21hdGguYXRhbmgoeiksIHopCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChDTWF0aFRlc3RzKQorY2xhc3MgSXNDbG9zZVRlc3RzKHRlc3RfbWF0aC5Jc0Nsb3NlVGVzdHMpOgorICAgIGlzY2xvc2UgPSBjbWF0aC5pc2Nsb3NlCisKKyAgICBkZWYgdGVzdF9yZWplY3RfY29tcGxleF90b2xlcmFuY2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmlzY2xvc2UoMWosIDFqLCByZWxfdG9sPTFqKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuaXNjbG9zZSgxaiwgMWosIGFic190b2w9MWopCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5pc2Nsb3NlKDFqLCAxaiwgcmVsX3RvbD0xaiwgYWJzX3RvbD0xaikKKworICAgIGRlZiB0ZXN0X2NvbXBsZXhfdmFsdWVzKHNlbGYpOgorICAgICAgICAjIHRlc3QgY29tcGxleCB2YWx1ZXMgdGhhdCBhcmUgY2xvc2UgdG8gd2l0aGluIDEyIGRlY2ltYWwgcGxhY2VzCisgICAgICAgIGNvbXBsZXhfZXhhbXBsZXMgPSBbKDEuMCsxLjBqLCAxLjAwMDAwMDAwMDAwMSsxLjBqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMS4wKzEuMGosIDEuMCsxLjAwMDAwMDAwMDAwMWopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMS4wKzEuMGosIC0xLjAwMDAwMDAwMDAwMSsxLjBqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMS4wLTEuMGosIDEuMC0wLjk5OTk5OTk5OTk5OWopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKworICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKGNvbXBsZXhfZXhhbXBsZXMsIHJlbF90b2w9MWUtMTIpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsTm90Q2xvc2UoY29tcGxleF9leGFtcGxlcywgcmVsX3RvbD0xZS0xMykKKworICAgIGRlZiB0ZXN0X2NvbXBsZXhfbmVhcl96ZXJvKHNlbGYpOgorICAgICAgICAjIHRlc3QgdmFsdWVzIG5lYXIgemVybyB0aGF0IGFyZSBuZWFyIHRvIHdpdGhpbiB0aHJlZSBkZWNpbWFsIHBsYWNlcworICAgICAgICBuZWFyX3plcm9fZXhhbXBsZXMgPSBbKDAuMDAxaiwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMC4wMDEsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAuMDAxKzAuMDAxaiwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTAuMDAxKzAuMDAxaiwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMC4wMDEtMC4wMDFqLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMC4wMDEtMC4wMDFqLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKworICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKG5lYXJfemVyb19leGFtcGxlcywgYWJzX3RvbD0xLjVlLTAzKQorICAgICAgICBzZWxmLmFzc2VydEFsbE5vdENsb3NlKG5lYXJfemVyb19leGFtcGxlcywgYWJzX3RvbD0wLjVlLTAzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNDbG9zZSgwLjAwMS0wLjAwMWosIDAuMDAxKzAuMDAxaiwgYWJzX3RvbD0yZS0wMykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdENsb3NlKDAuMDAxLTAuMDAxaiwgMC4wMDErMC4wMDFqLCBhYnNfdG9sPTFlLTAzKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5CmluZGV4IDVjYWQzZWMuLmRjZTQxOGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weQpAQCAtOCw4ICs4LDggQEAKIGltcG9ydCBzeXMKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgdGVtcGZpbGUKLWZyb20gdGVzdCBpbXBvcnQgc2NyaXB0X2hlbHBlcgotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IChzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uLCBhc3NlcnRfcHl0aG9uX29rLAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IChzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uLCBhc3NlcnRfcHl0aG9uX29rLAogICAgIGFzc2VydF9weXRob25fZmFpbHVyZSkKIAogCkBAIC01OSw3ICs1OSw3IEBACiAKICAgICBkZWYgdGVzdF94b3B0aW9ucyhzZWxmKToKICAgICAgICAgZGVmIGdldF94b3B0aW9ucygqYXJncyk6Ci0gICAgICAgICAgICAjIHVzZSBzdWJwcm9jZXNzIG1vZHVsZSBkaXJlY3RseSBiZWNhdXNlIHRlc3Quc2NyaXB0X2hlbHBlciBhZGRzCisgICAgICAgICAgICAjIHVzZSBzdWJwcm9jZXNzIG1vZHVsZSBkaXJlY3RseSBiZWNhdXNlIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGFkZHMKICAgICAgICAgICAgICMgIi1YIGZhdWx0aGFuZGxlciIgdG8gdGhlIGNvbW1hbmQgbGluZQogICAgICAgICAgICAgYXJncyA9IChzeXMuZXhlY3V0YWJsZSwgJy1FJykgKyBhcmdzCiAgICAgICAgICAgICBhcmdzICs9ICgnLWMnLCAnaW1wb3J0IHN5czsgcHJpbnQoc3lzLl94b3B0aW9ucyknKQpAQCAtMzQ0LDcgKzM0NCw4IEBACiAgICAgICAgICMgSXNzdWUgIzUzMTk6IGlmIHN0ZG91dC5mbHVzaCgpIGZhaWxzIGF0IHNodXRkb3duLCBhbiBlcnJvciBzaG91bGQKICAgICAgICAgIyBiZSBwcmludGVkIG91dC4KICAgICAgICAgY29kZSA9ICIiImlmIDE6Ci0gICAgICAgICAgICBpbXBvcnQgb3MsIHN5cworICAgICAgICAgICAgaW1wb3J0IG9zLCBzeXMsIHRlc3Quc3VwcG9ydAorICAgICAgICAgICAgdGVzdC5zdXBwb3J0LlN1cHByZXNzQ3Jhc2hSZXBvcnQoKS5fX2VudGVyX18oKQogICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgneCcpCiAgICAgICAgICAgICBvcy5jbG9zZShzeXMuc3Rkb3V0LmZpbGVubygpKSIiIgogICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCkBAIC00NTYsNyArNDU3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuc3BsaXRsaW5lcygpLmNvdW50KGInVW5rbm93biBvcHRpb246IC1hJyksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBvdXQpCiAKLSAgICBAdW5pdHRlc3Quc2tpcElmKHNjcmlwdF9oZWxwZXIuX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCksCisgICAgQHVuaXR0ZXN0LnNraXBJZihzY3JpcHRfaGVscGVyLmludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAnQ2Fubm90IHJ1biAtSSB0ZXN0cyB3aGVuIFBZVEhPTiBlbnYgdmFycyBhcmUgcmVxdWlyZWQuJykKICAgICBkZWYgdGVzdF9pc29sYXRlZG1vZGUoc2VsZik6CiAgICAgICAgIHNlbGYudmVyaWZ5X3ZhbGlkX2ZsYWcoJy1JJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5IGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkKaW5kZXggNzM1MDE2NC4uYWZhYzYyYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkKQEAgLTEzLDEwICsxMyw5IEBACiAKIGltcG9ydCB0ZXh0d3JhcAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgKAorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgKAogICAgIG1ha2VfcGtnLCBtYWtlX3NjcmlwdCwgbWFrZV96aXBfcGtnLCBtYWtlX3ppcF9zY3JpcHQsCi0gICAgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlLCB0ZW1wX2RpciwKLSAgICBzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uKQorICAgIGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZSwgc3Bhd25fcHl0aG9uLCBraWxsX3B5dGhvbikKIAogdmVyYm9zZSA9IHN1cHBvcnQudmVyYm9zZQogCkBAIC0yMjMsMTQgKzIyMiwxNCBAQAogICAgICAgICBzZWxmLmNoZWNrX3JlcGxfc3RkZXJyX2ZsdXNoKFRydWUpCiAKICAgICBkZWYgdGVzdF9iYXNpY19zY3JpcHQoc2VsZik6Ci0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0JykKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdF9kaXIsIE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3Rfc2NyaXB0X2NvbXBpbGVkKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ3NjcmlwdCcpCiAgICAgICAgICAgICBweV9jb21waWxlLmNvbXBpbGUoc2NyaXB0X25hbWUsIGRvcmFpc2U9VHJ1ZSkKICAgICAgICAgICAgIG9zLnJlbW92ZShzY3JpcHRfbmFtZSkKQEAgLTI0MCwxNCArMjM5LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X25hbWUsIHNjcmlwdF9kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5X2NvbXBpbGVkKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ19fbWFpbl9fJykKICAgICAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShzY3JpcHRfbmFtZSwgZG9yYWlzZT1UcnVlKQogICAgICAgICAgICAgb3MucmVtb3ZlKHNjcmlwdF9uYW1lKQpAQCAtMjU3LDE5ICsyNTYsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5X2Vycm9yKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIG1zZyA9ICJjYW4ndCBmaW5kICdfX21haW5fXycgbW9kdWxlIGluICVyIiAlIHNjcmlwdF9kaXIKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2ltcG9ydF9lcnJvcihzY3JpcHRfZGlyLCBtc2cpCiAKICAgICBkZWYgdGVzdF96aXBmaWxlKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ19fbWFpbl9fJykKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IG1ha2VfemlwX3NjcmlwdChzY3JpcHRfZGlyLCAndGVzdF96aXAnLCBzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdCh6aXBfbmFtZSwgcnVuX25hbWUsIHppcF9uYW1lLCB6aXBfbmFtZSwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKQogCiAgICAgZGVmIHRlc3RfemlwZmlsZV9jb21waWxlZChzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycpCiAgICAgICAgICAgICBjb21waWxlZF9uYW1lID0gcHlfY29tcGlsZS5jb21waWxlKHNjcmlwdF9uYW1lLCBkb3JhaXNlPVRydWUpCiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBtYWtlX3ppcF9zY3JpcHQoc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgY29tcGlsZWRfbmFtZSkKQEAgLTI3NywxNCArMjc2LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKQogCiAgICAgZGVmIHRlc3RfemlwZmlsZV9lcnJvcihzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdub3RfbWFpbicpCiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBtYWtlX3ppcF9zY3JpcHQoc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgc2NyaXB0X25hbWUpCiAgICAgICAgICAgICBtc2cgPSAiY2FuJ3QgZmluZCAnX19tYWluX18nIG1vZHVsZSBpbiAlciIgJSB6aXBfbmFtZQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfaW1wb3J0X2Vycm9yKHppcF9uYW1lLCBtc2cpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fcGFja2FnZShzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCiAgICAgICAgICAgICBtYWtlX3BrZyhwa2dfZGlyKQogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChwa2dfZGlyLCAnc2NyaXB0JykKQEAgLTI5NCwxNCArMjkzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlX2luX3BhY2thZ2VfaW5femlwZmlsZShzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBfbWFrZV90ZXN0X3ppcF9wa2coc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgJ3Rlc3RfcGtnJywgJ3NjcmlwdCcpCiAgICAgICAgICAgICBsYXVuY2hfbmFtZSA9IF9tYWtlX2xhdW5jaF9zY3JpcHQoc2NyaXB0X2RpciwgJ2xhdW5jaCcsICd0ZXN0X3BrZy5zY3JpcHQnLCB6aXBfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSwgcnVuX25hbWUsIHJ1bl9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppcF9uYW1lLCAndGVzdF9wa2cnLCB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fc3VicGFja2FnZV9pbl96aXBmaWxlKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IF9tYWtlX3Rlc3RfemlwX3BrZyhzY3JpcHRfZGlyLCAndGVzdF96aXAnLCAndGVzdF9wa2cnLCAnc2NyaXB0JywgZGVwdGg9MikKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnLnRlc3RfcGtnLnNjcmlwdCcsIHppcF9uYW1lKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBydW5fbmFtZSwgcnVuX25hbWUsCkBAIC0zMDksNyArMzA4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHBrZ19kaXIgPSBvcy5wYXRoLmpvaW4oc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHBrZ19kaXIsICdfX21haW5fXycpCkBAIC0zMTksNyArMzE4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX2NvbXBpbGVkKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHBrZ19kaXIgPSBvcy5wYXRoLmpvaW4oc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHBrZ19kaXIsICdfX21haW5fXycpCkBAIC0zMzIsNyArMzMxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfcGFja2FnZV9lcnJvcihzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCiAgICAgICAgICAgICBtYWtlX3BrZyhwa2dfZGlyKQogICAgICAgICAgICAgbXNnID0gKCIndGVzdF9wa2cnIGlzIGEgcGFja2FnZSBhbmQgY2Fubm90ICIKQEAgLTM0MSw3ICszNDAsNyBAQAogICAgICAgICAgICAgc2VsZi5fY2hlY2tfaW1wb3J0X2Vycm9yKGxhdW5jaF9uYW1lLCBtc2cpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX3JlY3Vyc2lvbihzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCiAgICAgICAgICAgICBtYWtlX3BrZyhwa2dfZGlyKQogICAgICAgICAgICAgbWFpbl9kaXIgPSBvcy5wYXRoLmpvaW4ocGtnX2RpciwgJ19fbWFpbl9fJykKQEAgLTM1NSw3ICszNTQsNyBAQAogICAgIGRlZiB0ZXN0X2lzc3VlODIwMihzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgcGFja2FnZSBfX2luaXRfXyBtb2R1bGVzIHNlZSAiLW0iIGluIHN5cy5hcmd2MCB3aGlsZQogICAgICAgICAjIHNlYXJjaGluZyBmb3IgdGhlIG1vZHVsZSB0byBleGVjdXRlCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoYW5nZV9jd2QocGF0aD1zY3JpcHRfZGlyKToKICAgICAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCiAgICAgICAgICAgICAgICAgbWFrZV9wa2cocGtnX2RpciwgImltcG9ydCBzeXM7IHByaW50KCdpbml0X2FyZ3YwPT0lcicgJSBzeXMuYXJndlswXSkiKQpAQCAtMzcyLDcgKzM3MSw3IEBACiAgICAgZGVmIHRlc3RfaXNzdWU4MjAyX2Rhc2hfY19maWxlX2lnbm9yZWQoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIGEgIi1jIiBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQogICAgICAgICAjIGRvZXMgbm90IGFsdGVyIHRoZSB2YWx1ZSBvZiBzeXMucGF0aFswXQotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGFuZ2VfY3dkKHBhdGg9c2NyaXB0X2Rpcik6CiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKCItYyIsICJ3IikgYXMgZjoKICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiZGF0YSIpCkBAIC0zODcsNyArMzg2LDcgQEAKICAgICBkZWYgdGVzdF9pc3N1ZTgyMDJfZGFzaF9tX2ZpbGVfaWdub3JlZChzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgYSAiLW0iIGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5CiAgICAgICAgICMgZG9lcyBub3QgYWx0ZXIgdGhlIHZhbHVlIG9mIHN5cy5wYXRoWzBdCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnb3RoZXInKQogICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoYW5nZV9jd2QocGF0aD1zY3JpcHRfZGlyKToKICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oIi1tIiwgInciKSBhcyBmOgpAQCAtMzk4LDIwICszOTcsODcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLCAnJywgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKIAorICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIHNldHVwX3Rlc3RfcGtnKHNlbGYsICphcmdzKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpciwgXAorICAgICAgICAgICAgICAgIHN1cHBvcnQuY2hhbmdlX2N3ZChwYXRoPXNjcmlwdF9kaXIpOgorICAgICAgICAgICAgcGtnX2RpciA9IG9zLnBhdGguam9pbihzY3JpcHRfZGlyLCAndGVzdF9wa2cnKQorICAgICAgICAgICAgbWFrZV9wa2cocGtnX2RpciwgKmFyZ3MpCisgICAgICAgICAgICB5aWVsZCBwa2dfZGlyCisKKyAgICBkZWYgY2hlY2tfZGFzaF9tX2ZhaWx1cmUoc2VsZiwgKmFyZ3MpOgorICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoJy1tJywgKmFyZ3MsIF9faXNvbGF0ZWQ9RmFsc2UpCisgICAgICAgIGlmIHZlcmJvc2UgPiAxOgorICAgICAgICAgICAgcHJpbnQocmVwcihvdXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCAxKQorICAgICAgICByZXR1cm4gZXJyCisKICAgICBkZWYgdGVzdF9kYXNoX21fZXJyb3JfY29kZV9pc19vbmUoc2VsZik6CiAgICAgICAgICMgSWYgYSBtb2R1bGUgaXMgaW52b2tlZCB3aXRoIHRoZSAtbSBjb21tYW5kIGxpbmUgZmxhZwogICAgICAgICAjIGFuZCByZXN1bHRzIGluIGFuIGVycm9yIHRoYXQgdGhlIHJldHVybiBjb2RlIHRvIHRoZQogICAgICAgICAjIHNoZWxsIGlzICcxJwotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKLSAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGFuZ2VfY3dkKHBhdGg9c2NyaXB0X2Rpcik6Ci0gICAgICAgICAgICAgICAgcGtnX2RpciA9IG9zLnBhdGguam9pbihzY3JpcHRfZGlyLCAndGVzdF9wa2cnKQotICAgICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCi0gICAgICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChwa2dfZGlyLCAnb3RoZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6IHJhaXNlIFZhbHVlRXJyb3IiKQotICAgICAgICAgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fZmFpbHVyZSgnLW0nLCAndGVzdF9wa2cub3RoZXInLCAqZXhhbXBsZV9hcmdzKQotICAgICAgICAgICAgICAgIGlmIHZlcmJvc2UgPiAxOgotICAgICAgICAgICAgICAgICAgICBwcmludChyZXByKG91dCkpCisgICAgICAgIHdpdGggc2VsZi5zZXR1cF90ZXN0X3BrZygpIGFzIHBrZ19kaXI6CisgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHBrZ19kaXIsICdvdGhlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOiByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgICAgIGVyciA9IHNlbGYuY2hlY2tfZGFzaF9tX2ZhaWx1cmUoJ3Rlc3RfcGtnLm90aGVyJywgKmV4YW1wbGVfYXJncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidWYWx1ZUVycm9yJywgZXJyKQorCisgICAgZGVmIHRlc3RfZGFzaF9tX2Vycm9ycyhzZWxmKToKKyAgICAgICAgIyBFeGVyY2lzZSBlcnJvciByZXBvcnRpbmcgZm9yIHZhcmlvdXMgaW52YWxpZCBwYWNrYWdlIGV4ZWN1dGlvbnMKKyAgICAgICAgdGVzdHMgPSAoCisgICAgICAgICAgICAoJ2J1aWx0aW5zJywgYnInTm8gY29kZSBvYmplY3QgYXZhaWxhYmxlJyksCisgICAgICAgICAgICAoJ2J1aWx0aW5zLngnLCBicidFcnJvciB3aGlsZSBmaW5kaW5nIHNwZWMuKkF0dHJpYnV0ZUVycm9yJyksCisgICAgICAgICAgICAoJ2J1aWx0aW5zLngueScsIGJyJ0Vycm9yIHdoaWxlIGZpbmRpbmcgc3BlYy4qJworICAgICAgICAgICAgICAgIGJyJ0ltcG9ydEVycm9yLipObyBtb2R1bGUgbmFtZWQuKm5vdCBhIHBhY2thZ2UnKSwKKyAgICAgICAgICAgICgnb3MucGF0aCcsIGJyJ2xvYWRlci4qY2Fubm90IGhhbmRsZScpLAorICAgICAgICAgICAgKCdpbXBvcnRsaWInLCBicidObyBtb2R1bGUgbmFtZWQuKicKKyAgICAgICAgICAgICAgICBicidpcyBhIHBhY2thZ2UgYW5kIGNhbm5vdCBiZSBkaXJlY3RseSBleGVjdXRlZCcpLAorICAgICAgICAgICAgKCdpbXBvcnRsaWIubm9uZXhpc3RhbnQnLCBicidObyBtb2R1bGUgbmFtZWQnKSwKKyAgICAgICAgICAgICgnLnVuaXR0ZXN0JywgYnInUmVsYXRpdmUgbW9kdWxlIG5hbWVzIG5vdCBzdXBwb3J0ZWQnKSwKKyAgICAgICAgKQorICAgICAgICBmb3IgbmFtZSwgcmVnZXggaW4gdGVzdHM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW1lKToKKyAgICAgICAgICAgICAgICByYywgXywgZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKCctbScsIG5hbWUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVyciwgcmVnZXgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihiJ1RyYWNlYmFjaycsIGVycikKKworICAgIGRlZiB0ZXN0X2Rhc2hfbV9iYWRfcHljKHNlbGYpOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyLCBcCisgICAgICAgICAgICAgICAgc3VwcG9ydC5jaGFuZ2VfY3dkKHBhdGg9c2NyaXB0X2Rpcik6CisgICAgICAgICAgICBvcy5ta2RpcigndGVzdF9wa2cnKQorICAgICAgICAgICAgIyBDcmVhdGUgaW52YWxpZCAqLnB5YyBhcyBlbXB0eSBmaWxlCisgICAgICAgICAgICB3aXRoIG9wZW4oJ3Rlc3RfcGtnL19faW5pdF9fLnB5YycsICd3YicpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVyciA9IHNlbGYuY2hlY2tfZGFzaF9tX2ZhaWx1cmUoJ3Rlc3RfcGtnJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyLCBicidFcnJvciB3aGlsZSBmaW5kaW5nIHNwZWMuKicKKyAgICAgICAgICAgICAgICBicidJbXBvcnRFcnJvci4qYmFkIG1hZ2ljIG51bWJlcicpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKGInaXMgYSBwYWNrYWdlJywgZXJyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihiJ1RyYWNlYmFjaycsIGVycikKKworICAgIGRlZiB0ZXN0X2Rhc2hfbV9pbml0X3RyYWNlYmFjayhzZWxmKToKKyAgICAgICAgIyBUaGVzZSB3ZXJlIHdyYXBwZWQgaW4gYW4gSW1wb3J0RXJyb3IgYW5kIHRyYWNlYmFja3Mgd2VyZQorICAgICAgICAjIHN1cHByZXNzZWQ7IHNlZSBJc3N1ZSAxNDI4NQorICAgICAgICBleGNlcHRpb25zID0gKEltcG9ydEVycm9yLCBBdHRyaWJ1dGVFcnJvciwgVHlwZUVycm9yLCBWYWx1ZUVycm9yKQorICAgICAgICBmb3IgZXhjZXB0aW9uIGluIGV4Y2VwdGlvbnM6CisgICAgICAgICAgICBleGNlcHRpb24gPSBleGNlcHRpb24uX19uYW1lX18KKyAgICAgICAgICAgIGluaXQgPSAicmFpc2UgezB9KCdFeGNlcHRpb24gaW4gX19pbml0X18ucHknKSIuZm9ybWF0KGV4Y2VwdGlvbikKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGV4Y2VwdGlvbiksIFwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXR1cF90ZXN0X3BrZyhpbml0KSBhcyBwa2dfZGlyOgorICAgICAgICAgICAgICAgIGVyciA9IHNlbGYuY2hlY2tfZGFzaF9tX2ZhaWx1cmUoJ3Rlc3RfcGtnJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGV4Y2VwdGlvbi5lbmNvZGUoJ2FzY2lpJyksIGVycikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInRXhjZXB0aW9uIGluIF9faW5pdF9fLnB5JywgZXJyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidUcmFjZWJhY2snLCBlcnIpCisKKyAgICBkZWYgdGVzdF9kYXNoX21fbWFpbl90cmFjZWJhY2soc2VsZik6CisgICAgICAgICMgRW5zdXJlIHRoYXQgYW4gSW1wb3J0RXJyb3IncyB0cmFjZWJhY2sgaXMgcmVwb3J0ZWQKKyAgICAgICAgd2l0aCBzZWxmLnNldHVwX3Rlc3RfcGtnKCkgYXMgcGtnX2RpcjoKKyAgICAgICAgICAgIG1haW4gPSAicmFpc2UgSW1wb3J0RXJyb3IoJ0V4Y2VwdGlvbiBpbiBfX21haW5fXyBtb2R1bGUnKSIKKyAgICAgICAgICAgIF9tYWtlX3Rlc3Rfc2NyaXB0KHBrZ19kaXIsICdfX21haW5fXycsIG1haW4pCisgICAgICAgICAgICBlcnIgPSBzZWxmLmNoZWNrX2Rhc2hfbV9mYWlsdXJlKCd0ZXN0X3BrZycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInSW1wb3J0RXJyb3InLCBlcnIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInRXhjZXB0aW9uIGluIF9fbWFpbl9fIG1vZHVsZScsIGVycikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidUcmFjZWJhY2snLCBlcnIpCiAKICAgICBkZWYgdGVzdF9wZXBfNDA5X3ZlcmJpYWdlKHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSBQRVAgNDA5IHN5bnRheCBwcm9wZXJseSBzdXBwcmVzc2VzCkBAIC00MjIsNyArNDg4LDcgQEAKICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICByYWlzZSBOYW1lRXJyb3IgZnJvbSBOb25lCiAgICAgICAgICAgICAiIiIpCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0Jywgc2NyaXB0KQogICAgICAgICAgICAgZXhpdGNvZGUsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgdGV4dCA9IHN0ZGVyci5kZWNvZGUoJ2FzY2lpJykuc3BsaXQoJ1xuJykKQEAgLTQ2Niw3ICs1MzIsNyBAQAogICAgICAgICAgICAgaWYgZXJyb3I6CiAgICAgICAgICAgICAgICAgc3lzLmV4aXQoZXJyb3IpCiAgICAgICAgICAgICAiIiIpCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0Jywgc2NyaXB0KQogICAgICAgICAgICAgZXhpdGNvZGUsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgdGV4dCA9IHN0ZGVyci5kZWNvZGUoJ2FzY2lpJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVfbW9kdWxlLnB5CmluZGV4IDdhODBhODAuLjMzOTRiMzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weQpAQCAtMSw2ICsxLDcgQEAKICJUZXN0IEludGVyYWN0aXZlQ29uc29sZSBhbmQgSW50ZXJhY3RpdmVJbnRlcnByZXRlciBmcm9tIGNvZGUgbW9kdWxlIgogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKIGZyb20gY29udGV4dGxpYiBpbXBvcnQgRXhpdFN0YWNrCiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKQEAgLTc4LDkgKzc5LDQwIEBACiAgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdChiYW5uZXI9JycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDEpCiAKKyAgICBkZWYgdGVzdF9jYXVzZV90YihzZWxmKToKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBbInJhaXNlIFZhbHVlRXJyb3IoJycpIGZyb20gQXR0cmlidXRlRXJyb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU9GRXJyb3IoJ0ZpbmlzaGVkJyldCisgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdCgpCisgICAgICAgIG91dHB1dCA9ICcnLmpvaW4oJycuam9pbihjYWxsWzFdKSBmb3IgY2FsbCBpbiBzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHMpCisgICAgICAgIGV4cGVjdGVkID0gZGVkZW50KCIiIgorICAgICAgICBBdHRyaWJ1dGVFcnJvcgogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdEludGVyYWN0aXZlQ29uc29sZSkKKyAgICAgICAgVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSBvZiB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjoKKworICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgRmlsZSAiPGNvbnNvbGU+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgICBWYWx1ZUVycm9yCisgICAgICAgICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbihleHBlY3RlZCwgb3V0cHV0KQorCisgICAgZGVmIHRlc3RfY29udGV4dF90YihzZWxmKToKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBbInRyeTogaGFtXG5leGNlcHQ6IGVnZ3NcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFT0ZFcnJvcignRmluaXNoZWQnKV0KKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KCkKKyAgICAgICAgb3V0cHV0ID0gJycuam9pbignJy5qb2luKGNhbGxbMV0pIGZvciBjYWxsIGluIHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscykKKyAgICAgICAgZXhwZWN0ZWQgPSBkZWRlbnQoIiIiCisgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICBGaWxlICI8Y29uc29sZT4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgICAgIE5hbWVFcnJvcjogbmFtZSAnaGFtJyBpcyBub3QgZGVmaW5lZAorCisgICAgICAgIER1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDoKKworICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgRmlsZSAiPGNvbnNvbGU+IiwgbGluZSAyLCBpbiA8bW9kdWxlPgorICAgICAgICBOYW1lRXJyb3I6IG5hbWUgJ2VnZ3MnIGlzIG5vdCBkZWZpbmVkCisgICAgICAgICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbihleHBlY3RlZCwgb3V0cHV0KQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weQppbmRleCAxMzI3ZjExLi5lZTFlMjhhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkKQEAgLTE1MCw2ICsxNTAsMjIgQEAKICAgICAgICAgc291dCA9IGIiYVx4YWNcXHUxMjM0XHhhNFxcdTgwMDBcXFUwMDEwZmZmZiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW4uZW5jb2RlKCJpc28tODg1OS0xNSIsICJiYWNrc2xhc2hyZXBsYWNlIiksIHNvdXQpCiAKKyAgICBkZWYgdGVzdF9uYW1lZXNjYXBlKHNlbGYpOgorICAgICAgICAjIERvZXMgdGhlIHNhbWUgYXMgYmFja3NsYXNoZXNjYXBlLCBidXQgcHJlZmVycyBgYFxOey4uLn1gYCBlc2NhcGUKKyAgICAgICAgIyBzZXF1ZW5jZXMuCisgICAgICAgIHNpbiA9ICJhXHhhY1x1MTIzNFx1MjBhY1x1ODAwMFxVMDAxMGZmZmYiCisgICAgICAgIHNvdXQgPSAoYidhXFxOe05PVCBTSUdOfVxcTntFVEhJT1BJQyBTWUxMQUJMRSBTRUV9XFxOe0VVUk8gU0lHTn0nCisgICAgICAgICAgICAgICAgYidcXE57Q0pLIFVOSUZJRUQgSURFT0dSQVBILTgwMDB9XFxVMDAxMGZmZmYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpbi5lbmNvZGUoImFzY2lpIiwgIm5hbWVyZXBsYWNlIiksIHNvdXQpCisKKyAgICAgICAgc291dCA9IChiJ2FceGFjXFxOe0VUSElPUElDIFNZTExBQkxFIFNFRX1cXE57RVVSTyBTSUdOfScKKyAgICAgICAgICAgICAgICBiJ1xcTntDSksgVU5JRklFRCBJREVPR1JBUEgtODAwMH1cXFUwMDEwZmZmZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2luLmVuY29kZSgibGF0aW4tMSIsICJuYW1lcmVwbGFjZSIpLCBzb3V0KQorCisgICAgICAgIHNvdXQgPSAoYidhXHhhY1xcTntFVEhJT1BJQyBTWUxMQUJMRSBTRUV9XHhhNCcKKyAgICAgICAgICAgICAgICBiJ1xcTntDSksgVU5JRklFRCBJREVPR1JBUEgtODAwMH1cXFUwMDEwZmZmZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2luLmVuY29kZSgiaXNvLTg4NTktMTUiLCAibmFtZXJlcGxhY2UiKSwgc291dCkKKwogICAgIGRlZiB0ZXN0X2RlY29kaW5nX2NhbGxiYWNrcyhzZWxmKToKICAgICAgICAgIyBUaGlzIGlzIGEgdGVzdCBmb3IgYSBkZWNvZGluZyBjYWxsYmFjayBoYW5kbGVyCiAgICAgICAgICMgdGhhdCBhbGxvd3MgdGhlIGRlY29kaW5nIG9mIHRoZSBpbnZhbGlkIHNlcXVlbmNlCkBAIC0yMjAsNiArMjM2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICJcdTAwMDBcdWZmZmQiCiAgICAgICAgICAgICAgICAgKQogCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlKCJ1bmljb2RlLWludGVybmFsIiwgImJhY2tzbGFzaHJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgIlx1MDAwMFxceDAwIgorICAgICAgICAgICAgICAgICkKKwogICAgICAgICAgICAgICAgIGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigidGVzdC5odWkiLCBoYW5kbGVyX3VuaWNvZGVpbnRlcm5hbCkKIAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCkBAIC0yODcsNyArMzA4LDcgQEAKICAgICBkZWYgdGVzdF9sb25nc3RyaW5ncyhzZWxmKToKICAgICAgICAgIyB0ZXN0IGxvbmcgc3RyaW5ncyB0byBjaGVjayBmb3IgbWVtb3J5IG92ZXJmbG93IHByb2JsZW1zCiAgICAgICAgIGVycm9ycyA9IFsgInN0cmljdCIsICJpZ25vcmUiLCAicmVwbGFjZSIsICJ4bWxjaGFycmVmcmVwbGFjZSIsCi0gICAgICAgICAgICAgICAgICAgImJhY2tzbGFzaHJlcGxhY2UiXQorICAgICAgICAgICAgICAgICAgICJiYWNrc2xhc2hyZXBsYWNlIiwgIm5hbWVyZXBsYWNlIl0KICAgICAgICAgIyByZWdpc3RlciB0aGUgaGFuZGxlcnMgdW5kZXIgZGlmZmVyZW50IG5hbWVzLAogICAgICAgICAjIHRvIHByZXZlbnQgdGhlIGNvZGVjIGZyb20gcmVjb2duaXppbmcgdGhlIG5hbWUKICAgICAgICAgZm9yIGVyciBpbiBlcnJvcnM6CkBAIC01NTAsMTcgKzU3MSw2IEBACiAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycywKICAgICAgICAgICAgVW5pY29kZUVycm9yKCJvdWNoIikKICAgICAgICAgKQotICAgICAgICAjICJiYWNrc2xhc2hyZXBsYWNlIiBjYW4gb25seSBiZSB1c2VkIGZvciBlbmNvZGluZwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIFR5cGVFcnJvciwKLSAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycywKLSAgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvcigiYXNjaWkiLCBieXRlYXJyYXkoYiJceGZmIiksIDAsIDEsICJvdWNoIikKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIFR5cGVFcnJvciwKLSAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycywKLSAgICAgICAgICAgIFVuaWNvZGVUcmFuc2xhdGVFcnJvcigiXHUzMDQyIiwgMCwgMSwgIm91Y2giKQotICAgICAgICApCiAgICAgICAgICMgVXNlIHRoZSBjb3JyZWN0IGV4Y2VwdGlvbgogICAgICAgICB0ZXN0cyA9IFsKICAgICAgICAgICAgICgiXHUzMDQyIiwgIlxcdTMwNDIiKSwKQEAgLTU4NSw2ICs1OTUsNzIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAxICsgbGVuKHMpLCAib3VjaCIpKSwKICAgICAgICAgICAgICAgICAgICAgKHIsIDEgKyBsZW4ocykpCiAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVUcmFuc2xhdGVFcnJvcigiYSIgKyBzICsgImIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDEgKyBsZW4ocyksICJvdWNoIikpLAorICAgICAgICAgICAgICAgICAgICAociwgMSArIGxlbihzKSkKKyAgICAgICAgICAgICAgICApCisgICAgICAgIHRlc3RzID0gWworICAgICAgICAgICAgKGIiYSIsICJcXHg2MSIpLAorICAgICAgICAgICAgKGIiXG4iLCAiXFx4MGEiKSwKKyAgICAgICAgICAgIChiIlx4MDAiLCAiXFx4MDAiKSwKKyAgICAgICAgICAgIChiIlx4ZmYiLCAiXFx4ZmYiKSwKKyAgICAgICAgXQorICAgICAgICBmb3IgYiwgciBpbiB0ZXN0czoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGJ5dGVzPWIpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvcigiYXNjaWkiLCBieXRlYXJyYXkoYiJhIiArIGIgKyBiImIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAyLCAib3VjaCIpKSwKKyAgICAgICAgICAgICAgICAgICAgKHIsIDIpCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfYmFkYW5kZ29vZG5hbWVyZXBsYWNlZXhjZXB0aW9ucyhzZWxmKToKKyAgICAgICAgIyAibmFtZXJlcGxhY2UiIGNvbXBsYWlucyBhYm91dCBhIG5vbi1leGNlcHRpb24gcGFzc2VkIGluCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgIGNvZGVjcy5uYW1lcmVwbGFjZV9lcnJvcnMsCisgICAgICAgICAgIDQyCisgICAgICAgICkKKyAgICAgICAgIyAibmFtZXJlcGxhY2UiIGNvbXBsYWlucyBhYm91dCB0aGUgd3JvbmcgZXhjZXB0aW9uIHR5cGVzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgIGNvZGVjcy5uYW1lcmVwbGFjZV9lcnJvcnMsCisgICAgICAgICAgIFVuaWNvZGVFcnJvcigib3VjaCIpCisgICAgICAgICkKKyAgICAgICAgIyAibmFtZXJlcGxhY2UiIGNhbiBvbmx5IGJlIHVzZWQgZm9yIGVuY29kaW5nCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgY29kZWNzLm5hbWVyZXBsYWNlX2Vycm9ycywKKyAgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvcigiYXNjaWkiLCBieXRlYXJyYXkoYiJceGZmIiksIDAsIDEsICJvdWNoIikKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgIGNvZGVjcy5uYW1lcmVwbGFjZV9lcnJvcnMsCisgICAgICAgICAgICBVbmljb2RlVHJhbnNsYXRlRXJyb3IoIlx1MzA0MiIsIDAsIDEsICJvdWNoIikKKyAgICAgICAgKQorICAgICAgICAjIFVzZSB0aGUgY29ycmVjdCBleGNlcHRpb24KKyAgICAgICAgdGVzdHMgPSBbCisgICAgICAgICAgICAoIlx1MzA0MiIsICJcXE57SElSQUdBTkEgTEVUVEVSIEF9IiksCisgICAgICAgICAgICAoIlx4MDAiLCAiXFx4MDAiKSwKKyAgICAgICAgICAgICgiXHVmYmY5IiwgIlxcTntBUkFCSUMgTElHQVRVUkUgVUlHSFVSIEtJUkdISVogWUVIIFdJVEggIgorICAgICAgICAgICAgICAgICAgICAgICAiSEFNWkEgQUJPVkUgV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STX0iKSwKKyAgICAgICAgICAgICgiXFUwMDBlMDA3ZiIsICJcXE57Q0FOQ0VMIFRBR30iKSwKKyAgICAgICAgICAgICgiXFUwMDEwZmZmZiIsICJcXFUwMDEwZmZmZiIpLAorICAgICAgICAgICAgIyBMb25lIHN1cnJvZ2F0ZXMKKyAgICAgICAgICAgICgiXHVkODAwIiwgIlxcdWQ4MDAiKSwKKyAgICAgICAgICAgICgiXHVkZmZmIiwgIlxcdWRmZmYiKSwKKyAgICAgICAgICAgICgiXHVkODAwXHVkZmZmIiwgIlxcdWQ4MDBcXHVkZmZmIiksCisgICAgICAgIF0KKyAgICAgICAgZm9yIHMsIHIgaW4gdGVzdHM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzdHI9cyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgY29kZWNzLm5hbWVyZXBsYWNlX2Vycm9ycygKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCAiYSIgKyBzICsgImIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDEgKyBsZW4ocyksICJvdWNoIikpLAorICAgICAgICAgICAgICAgICAgICAociwgMSArIGxlbihzKSkKKyAgICAgICAgICAgICAgICApCiAKICAgICBkZWYgdGVzdF9iYWRhbmRnb29kc3Vycm9nYXRlZXNjYXBlZXhjZXB0aW9ucyhzZWxmKToKICAgICAgICAgc3Vycm9nYXRlZXNjYXBlX2Vycm9ycyA9IGNvZGVjcy5sb29rdXBfZXJyb3IoJ3N1cnJvZ2F0ZWVzY2FwZScpCkBAIC02NjMsMjAgKzczOSwyNCBAQAogICAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGVwYXNzX2Vycm9ycywKICAgICAgICAgICAgICAgICAgICAgVW5pY29kZURlY29kZUVycm9yKGVuYywgImEiLmVuY29kZShlbmMpLCAwLCAxLCAib3VjaCIpCiAgICAgICAgICAgICAgICAgKQorICAgICAgICBmb3IgcyBpbiAoIlx1ZDgwMCIsICJcdWRmZmYiLCAiXHVkODAwXHVkZmZmIik6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzdHI9cyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgc3Vycm9nYXRlcGFzc19lcnJvcnMsCisgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCBzLCAwLCBsZW4ocyksICJvdWNoIikKKyAgICAgICAgICAgICAgICApCiAgICAgICAgIHRlc3RzID0gWwotICAgICAgICAgICAgKCJhc2NpaSIsICJcdWQ4MDAiLCBiJ1x4ZWRceGEwXHg4MCcsIDMpLAogICAgICAgICAgICAgKCJ1dGYtOCIsICJcdWQ4MDAiLCBiJ1x4ZWRceGEwXHg4MCcsIDMpLAogICAgICAgICAgICAgKCJ1dGYtMTZsZSIsICJcdWQ4MDAiLCBiJ1x4MDBceGQ4JywgMiksCiAgICAgICAgICAgICAoInV0Zi0xNmJlIiwgIlx1ZDgwMCIsIGInXHhkOFx4MDAnLCAyKSwKICAgICAgICAgICAgICgidXRmLTMybGUiLCAiXHVkODAwIiwgYidceDAwXHhkOFx4MDBceDAwJywgNCksCiAgICAgICAgICAgICAoInV0Zi0zMmJlIiwgIlx1ZDgwMCIsIGInXHgwMFx4MDBceGQ4XHgwMCcsIDQpLAotICAgICAgICAgICAgKCJhc2NpaSIsICJcdWRmZmYiLCBiJ1x4ZWRceGJmXHhiZicsIDMpLAogICAgICAgICAgICAgKCJ1dGYtOCIsICJcdWRmZmYiLCBiJ1x4ZWRceGJmXHhiZicsIDMpLAogICAgICAgICAgICAgKCJ1dGYtMTZsZSIsICJcdWRmZmYiLCBiJ1x4ZmZceGRmJywgMiksCiAgICAgICAgICAgICAoInV0Zi0xNmJlIiwgIlx1ZGZmZiIsIGInXHhkZlx4ZmYnLCAyKSwKICAgICAgICAgICAgICgidXRmLTMybGUiLCAiXHVkZmZmIiwgYidceGZmXHhkZlx4MDBceDAwJywgNCksCiAgICAgICAgICAgICAoInV0Zi0zMmJlIiwgIlx1ZGZmZiIsIGInXHgwMFx4MDBceGRmXHhmZicsIDQpLAotICAgICAgICAgICAgKCJhc2NpaSIsICJcdWQ4MDBcdWRmZmYiLCBiJ1x4ZWRceGEwXHg4MFx4ZWRceGJmXHhiZicsIDMpLAogICAgICAgICAgICAgKCJ1dGYtOCIsICJcdWQ4MDBcdWRmZmYiLCBiJ1x4ZWRceGEwXHg4MFx4ZWRceGJmXHhiZicsIDMpLAogICAgICAgICAgICAgKCJ1dGYtMTZsZSIsICJcdWQ4MDBcdWRmZmYiLCBiJ1x4MDBceGQ4XHhmZlx4ZGYnLCAyKSwKICAgICAgICAgICAgICgidXRmLTE2YmUiLCAiXHVkODAwXHVkZmZmIiwgYidceGQ4XHgwMFx4ZGZceGZmJywgMiksCkBAIC02OTQsNyArNzc0LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGVwYXNzX2Vycm9ycygKICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvcihlbmMsIGJ5dGVhcnJheShiImEiICsgYls6bl0gKyBiImIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBuLCAib3VjaCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAxICsgbiwgIm91Y2giKSksCiAgICAgICAgICAgICAgICAgICAgIChzWzoxXSwgMSArIG4pCiAgICAgICAgICAgICAgICAgKQogCkBAIC03MzgsNiArODE4LDEwIEBACiAgICAgICAgICAgICBjb2RlY3MuYmFja3NsYXNocmVwbGFjZV9lcnJvcnMsCiAgICAgICAgICAgICBjb2RlY3MubG9va3VwX2Vycm9yKCJiYWNrc2xhc2hyZXBsYWNlIikKICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLm5hbWVyZXBsYWNlX2Vycm9ycywKKyAgICAgICAgICAgIGNvZGVjcy5sb29rdXBfZXJyb3IoIm5hbWVyZXBsYWNlIikKKyAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfdW5lbmNvZGFibGVyZXBsYWNlbWVudChzZWxmKToKICAgICAgICAgZGVmIHVuZW5jcmVwbChleGMpOgpAQCAtODkwLDcgKzk3NCw4IEBACiAgICAgICAgIGNsYXNzIEQoZGljdCk6CiAgICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCi0gICAgICAgIGZvciBlcnIgaW4gKCJzdHJpY3QiLCAicmVwbGFjZSIsICJ4bWxjaGFycmVmcmVwbGFjZSIsICJiYWNrc2xhc2hyZXBsYWNlIiwgInRlc3QucG9zcmV0dXJuIik6CisgICAgICAgIGZvciBlcnIgaW4gKCJzdHJpY3QiLCAicmVwbGFjZSIsICJ4bWxjaGFycmVmcmVwbGFjZSIsCisgICAgICAgICAgICAgICAgICAgICJiYWNrc2xhc2hyZXBsYWNlIiwgIm5hbWVyZXBsYWNlIiwgInRlc3QucG9zcmV0dXJuIik6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRXJyb3IsIGNvZGVjcy5jaGFybWFwX2VuY29kZSwgIlx4ZmYiLCBlcnIsIHsweGZmOiBOb25lfSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvZGVjcy5jaGFybWFwX2VuY29kZSwgIlx4ZmYiLCBlcnIsIEQoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29kZWNzLmNoYXJtYXBfZW5jb2RlLCAiXHhmZiIsIGVyciwgezB4ZmY6IDMwMH0pCkBAIC05MDUsNyArOTkwLDcgQEAKICAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgI3NlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsICJceGZmIi50cmFuc2xhdGUsIEQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAiXHhmZiIudHJhbnNsYXRlLCB7MHhmZjogc3lzLm1heHVuaWNvZGUrMX0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsICJceGZmIi50cmFuc2xhdGUsIHsweGZmOiBzeXMubWF4dW5pY29kZSsxfSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAiXHhmZiIudHJhbnNsYXRlLCB7MHhmZjogKCl9KQogCiAgICAgZGVmIHRlc3RfYnVnODI4NzM3KHNlbGYpOgpAQCAtOTY3LDYgKzEwNTIsNyBAQAogICAgICAgICAgICAgY29kZWNzLmlnbm9yZV9lcnJvcnMsCiAgICAgICAgICAgICBjb2RlY3MucmVwbGFjZV9lcnJvcnMsCiAgICAgICAgICAgICBjb2RlY3MuYmFja3NsYXNocmVwbGFjZV9lcnJvcnMsCisgICAgICAgICAgICBjb2RlY3MubmFtZXJlcGxhY2VfZXJyb3JzLAogICAgICAgICAgICAgY29kZWNzLnhtbGNoYXJyZWZyZXBsYWNlX2Vycm9ycywKICAgICAgICAgICAgIGNvZGVjcy5sb29rdXBfZXJyb3IoJ3N1cnJvZ2F0ZWVzY2FwZScpLAogICAgICAgICAgICAgY29kZWNzLmxvb2t1cF9lcnJvcignc3Vycm9nYXRlcGFzcycpLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkKaW5kZXggNjBlNjllYi4uZDBlM2ExNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5CkBAIC04Myw4ICs4Myw1IEBACiAgICAgICAgIChiImFifntceDc5XHg3OVx4NDFceDQ0fn1jZCIsICJyZXBsYWNlIiwgImFiXHVmZmZkXHVmZmZkXHU4MDRhY2QiKSwKICAgICApCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkKaW5kZXggMjVjMDViNi4uYmI5YmUxMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5CkBAIC0xOSw4ICsxOSw1IEBACiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdThiMTAiKSwKICAgICApCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5CmluZGV4IDg3NzY4NjQuLjhhM2NhNzAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkKQEAgLTM4LDggKzM4LDUgQEAKICAgICBkZWYgdGVzdF9jaHVua2NvZGluZyhzZWxmKToKICAgICAgICAgcGFzcwogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5CmluZGV4IDQwOTE5NDguLjQ0YjYzYTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weQpAQCAtMTIzLDggKzEyMyw1IEBACiAgICAgICAgIGIiXHg4NUcmcmVhbDtceDg1USA9ICZsYW5nOyYjNDY2MDsmcmFuZzsiCiAgICAgKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5CmluZGV4IGNkNzY5NmEuLmI2YTc0ZmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weQpAQCAtNjYsOCArNjYsNSBAQAogICAgICAgICAoYiJceDhDQnh5IiwgInJlcGxhY2UiLCAgIlx1RkZGREJ4eSIpLAogICAgICkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weQppbmRleCBlYTZlMWMxLi45MTc0Mjk2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkKQEAgLTE5LDggKzE5LDUgQEAKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1OGIxMCIpLAogICAgICkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CmluZGV4IDhmZTIxZmIuLmI5M2UwYWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CkBAIC0zNDksNiArMzQ5LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCAiXHVkODAwIi5lbmNvZGUsIHNlbGYuZW5jb2RpbmcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgImJhY2tzbGFzaHJlcGxhY2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiW1xcdWRjODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgIm5hbWVyZXBsYWNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgIltcXHVkYzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJ4bWxjaGFycmVmcmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJbJiM1NjQ0ODtdIi5lbmNvZGUoc2VsZi5lbmNvZGluZykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgImlnbm9yZSIpLApAQCAtMzc2LDYgKzM3OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgKyBhZnRlcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9zZXF1ZW5jZS5kZWNvZGUoc2VsZi5lbmNvZGluZywgInJlcGxhY2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlICsgc2VsZi5pbGxfZm9ybWVkX3NlcXVlbmNlX3JlcGxhY2UgKyBhZnRlcikKKyAgICAgICAgICAgIGJhY2tzbGFzaHJlcGxhY2UgPSAnJy5qb2luKCdcXHglMDJ4JyAlIGIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBiIGluIHNlbGYuaWxsX2Zvcm1lZF9zZXF1ZW5jZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9zZXF1ZW5jZS5kZWNvZGUoc2VsZi5lbmNvZGluZywgImJhY2tzbGFzaHJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlICsgYmFja3NsYXNocmVwbGFjZSArIGFmdGVyKQogCiBjbGFzcyBVVEYzMlRlc3QoUmVhZFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICJ1dGYtMzIiCkBAIC04MDgsNiArODE0LDcgQEAKICAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdpZ25vcmUnLCBiJycpLAogICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ3JlcGxhY2UnLCBiJz8nKSwKICAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdiYWNrc2xhc2hyZXBsYWNlJywgYidcXHVkYzgwJyksCisgICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnbmFtZXJlcGxhY2UnLCBiJ1xcdWRjODAnKSwKICAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdzdXJyb2dhdGVwYXNzJywgYidceGVkXHhiMlx4ODAnKSwKICAgICAgICAgICAgICkpCiAgICAgICAgIGVsc2U6CkBAIC04NjksNiArODc2LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBiIlx4ZWRceGEwXHg4MCIuZGVjb2RlLCAiY3A2NTAwMSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoImNwNjUwMDEiLCAiYmFja3NsYXNocmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGInW1xcdWRjODBdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJuYW1lcmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInW1xcdWRjODBdJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJ4bWxjaGFycmVmcmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGInWyYjNTY0NDg7XScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoImNwNjUwMDEiLCAic3Vycm9nYXRlZXNjYXBlIiksCkBAIC04OTAsMTAgKzg5OSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIlxVMDAwMTBmZmZcdUQ4MDAiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoY29kZWNzLmxvb2t1cF9lcnJvcigic3Vycm9nYXRlcGFzcyIpKQogCi0gICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2tpcFRlc3QoImlzc3VlICMyMDU3MTogY29kZSBwYWdlIDY1MDAxIGNvZGVjIGRvZXMgbm90ICIKLSAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydCBwYXJ0aWFsIGRlY29kZXIgeWV0IikKLQogCiBjbGFzcyBVVEY3VGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi03IgpAQCAtMTEzOSw2ICsxMTQ0LDcgQEAKIGNsYXNzIEVzY2FwZURlY29kZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2VtcHR5KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5lc2NhcGVfZGVjb2RlKGIiIiksIChiIiIsIDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5lc2NhcGVfZGVjb2RlKGJ5dGVhcnJheSgpKSwgKGIiIiwgMCkpCiAKICAgICBkZWYgdGVzdF9yYXcoc2VsZik6CiAgICAgICAgIGRlY29kZSA9IGNvZGVjcy5lc2NhcGVfZGVjb2RlCkBAIC0xMzU3LDE0ICsxMzYzLDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVfaW50ZXJuYWwiKQogICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICJsaXR0bGUiOgogICAgICAgICAgICAgaW52YWxpZCA9IGIiXHgwMFx4MDBceDExXHgwMCIKKyAgICAgICAgICAgIGludmFsaWRfYmFja3NsYXNocmVwbGFjZSA9IHIiXHgwMFx4MDBceDExXHgwMCIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGludmFsaWQgPSBiIlx4MDBceDExXHgwMFx4MDAiCisgICAgICAgICAgICBpbnZhbGlkX2JhY2tzbGFzaHJlcGxhY2UgPSByIlx4MDBceDExXHgwMFx4MDAiCiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZC5kZWNvZGUsICJ1bmljb2RlX2ludGVybmFsIikKICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludmFsaWQuZGVjb2RlKCJ1bmljb2RlX2ludGVybmFsIiwgInJlcGxhY2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1x1ZmZmZCcpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnZhbGlkLmRlY29kZSgidW5pY29kZV9pbnRlcm5hbCIsICJiYWNrc2xhc2hyZXBsYWNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWRfYmFja3NsYXNocmVwbGFjZSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFNJWkVPRl9XQ0hBUl9UID09IDQsICdzcGVjaWZpYyB0byAzMi1iaXQgd2NoYXJfdCcpCiAgICAgZGVmIHRlc3RfZGVjb2RlX2Vycm9yX2F0dHJpYnV0ZXMoc2VsZik6CkBAIC0xNjcwLDYgKzE2ODEsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MuZGVjb2RlKGInYWJjJyksICdhYmMnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsIGNvZGVjcy5kZWNvZGUsIGInXHhmZicsICdhc2NpaScpCiAKKyAgICAgICAgIyB0ZXN0IGtleXdvcmRzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLmRlY29kZShvYmo9YidceGU0XHhmNlx4ZmMnLCBlbmNvZGluZz0nbGF0aW4tMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdceGU0XHhmNlx4ZmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5kZWNvZGUoYidbXHhmZl0nLCAnYXNjaWknLCBlcnJvcnM9J2lnbm9yZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdbXScpCisKICAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLmVuY29kZSgnXHhlNFx4ZjZceGZjJywgJ2xhdGluLTEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4ZTRceGY2XHhmYycpCkBAIC0xNjc4LDYgKzE2OTUsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MuZW5jb2RlKCdhYmMnKSwgYidhYmMnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsIGNvZGVjcy5lbmNvZGUsICdceGZmZmYnLCAnYXNjaWknKQogCisgICAgICAgICMgdGVzdCBrZXl3b3JkcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5lbmNvZGUob2JqPSdceGU0XHhmNlx4ZmMnLCBlbmNvZGluZz0nbGF0aW4tMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInXHhlNFx4ZjZceGZjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MuZW5jb2RlKCdbXHhmZl0nLCAnYXNjaWknLCBlcnJvcnM9J2lnbm9yZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInW10nKQorCiAgICAgZGVmIHRlc3RfcmVnaXN0ZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29kZWNzLnJlZ2lzdGVyKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvZGVjcy5yZWdpc3RlciwgNDIpCkBAIC0xNzI2LDYgKzE3NDksNyBAQAogICAgICAgICAgICAgInJlZ2lzdGVyX2Vycm9yIiwgImxvb2t1cF9lcnJvciIsCiAgICAgICAgICAgICAic3RyaWN0X2Vycm9ycyIsICJyZXBsYWNlX2Vycm9ycyIsICJpZ25vcmVfZXJyb3JzIiwKICAgICAgICAgICAgICJ4bWxjaGFycmVmcmVwbGFjZV9lcnJvcnMiLCAiYmFja3NsYXNocmVwbGFjZV9lcnJvcnMiLAorICAgICAgICAgICAgIm5hbWVyZXBsYWNlX2Vycm9ycyIsCiAgICAgICAgICAgICAib3BlbiIsICJFbmNvZGVkRmlsZSIsCiAgICAgICAgICAgICAiaXRlcmVuY29kZSIsICJpdGVyZGVjb2RlIiwKICAgICAgICAgICAgICJCT00iLCAiQk9NX0JFIiwgIkJPTV9MRSIsCkBAIC0xODU2LDcgKzE4ODAsOSBAQAogICAgICJpc284ODU5XzkiLAogICAgICJqb2hhYiIsCiAgICAgImtvaThfciIsCisgICAgImtvaThfdCIsCiAgICAgImtvaThfdSIsCisgICAgImt6MTA0OCIsCiAgICAgImxhdGluXzEiLAogICAgICJtYWNfY3lyaWxsaWMiLAogICAgICJtYWNfZ3JlZWsiLApAQCAtMjA4Nyw2ICsyMTEzLDE2IEBACiAgICAgICAgICkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgImJhY2tzbGFzaHJlcGxhY2UiLCAiYWIiKSwKKyAgICAgICAgICAgICgiYWJcXHgwMiIsIDMpCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgImJhY2tzbGFzaHJlcGxhY2UiLCAiYWJcdWZmZmUiKSwKKyAgICAgICAgICAgICgiYWJcXHgwMiIsIDMpCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgImlnbm9yZSIsICJhYiIpLAogICAgICAgICAgICAgKCJhYiIsIDMpCiAgICAgICAgICkKQEAgLTIxNjMsNiArMjE5OSwyNSBAQAogICAgICAgICApCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNvZGVjcy5jaGFybWFwX2RlY29kZShiIlx4MDBceDAxXHgwMiIsICJiYWNrc2xhc2hyZXBsYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MDogJ2EnLCAxOiAnYid9KSwKKyAgICAgICAgICAgICgiYWJcXHgwMiIsIDMpCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgImJhY2tzbGFzaHJlcGxhY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswOiAnYScsIDE6ICdiJywgMjogTm9uZX0pLAorICAgICAgICAgICAgKCJhYlxceDAyIiwgMykKKyAgICAgICAgKQorCisgICAgICAgICMgSXNzdWUgIzE0ODUwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoYiJceDAwXHgwMVx4MDIiLCAiYmFja3NsYXNocmVwbGFjZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezA6ICdhJywgMTogJ2InLCAyOiAnXHVmZmZlJ30pLAorICAgICAgICAgICAgKCJhYlxceDAyIiwgMykKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoYiJceDAwXHgwMVx4MDIiLCAiaWdub3JlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MDogJ2EnLCAxOiAnYid9KSwKICAgICAgICAgICAgICgiYWIiLCAzKQpAQCAtMjIzOSw2ICsyMjk0LDE4IEBACiAgICAgICAgICkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgImJhY2tzbGFzaHJlcGxhY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswOiBhLCAxOiBifSksCisgICAgICAgICAgICAoImFiXFx4MDIiLCAzKQorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNvZGVjcy5jaGFybWFwX2RlY29kZShiIlx4MDBceDAxXHgwMiIsICJiYWNrc2xhc2hyZXBsYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MDogYSwgMTogYiwgMjogMHhGRkZFfSksCisgICAgICAgICAgICAoImFiXFx4MDIiLCAzKQorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgIGNvZGVjcy5jaGFybWFwX2RlY29kZShiIlx4MDBceDAxXHgwMiIsICJpZ25vcmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswOiBhLCAxOiBifSksCiAgICAgICAgICAgICAoImFiIiwgMykKQEAgLTIyOTcsOSArMjM2NCwxMyBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgY29kZWNzLnVuaWNvZGVfZXNjYXBlX2RlY29kZSwgYnIiXFUwMDExMDAwMCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLnVuaWNvZGVfZXNjYXBlX2RlY29kZShyIlxVMDAxMTAwMDAiLCAicmVwbGFjZSIpLCAoIlx1ZmZmZCIsIDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlKHIiXFUwMDExMDAwMCIsICJiYWNrc2xhc2hyZXBsYWNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgKHIiXHg1Y1x4NTVceDMwXHgzMFx4MzFceDMxXHgzMFx4MzBceDMwXHgzMCIsIDEwKSkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsIGNvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlLCBiciJcVTAwMTEwMDAwIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MucmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZShyIlxVMDAxMTAwMDAiLCAicmVwbGFjZSIpLCAoIlx1ZmZmZCIsIDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MucmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZShyIlxVMDAxMTAwMDAiLCAiYmFja3NsYXNocmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIChyIlx4NWNceDU1XHgzMFx4MzBceDMxXHgzMVx4MzBceDMwXHgzMFx4MzAiLCAxMCkpCiAKIAogY2xhc3MgVW5pY29kZUVzY2FwZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjg4NCwxNSArMjk1NSwxNSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFVuaWNvZGVFbmNvZGVFcnJvciwgJ2NwOTMyJywKICAgICAgICAgICAgIGNvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlLCA5MzIsICdceGZmJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChVbmljb2RlRGVjb2RlRXJyb3IsICdjcDkzMicsCi0gICAgICAgICAgICBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgOTMyLCBiJ1x4ODFceDAwJykKKyAgICAgICAgICAgIGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCA5MzIsIGInXHg4MVx4MDAnLCAnc3RyaWN0JywgVHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChVbmljb2RlRGVjb2RlRXJyb3IsICdDUF9VVEY4JywKLSAgICAgICAgICAgIGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCBzZWxmLkNQX1VURjgsIGInXHhmZicpCisgICAgICAgICAgICBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgc2VsZi5DUF9VVEY4LCBiJ1x4ZmYnLCAnc3RyaWN0JywgVHJ1ZSkKIAogICAgIGRlZiBjaGVja19kZWNvZGUoc2VsZiwgY3AsIHRlc3RzKToKICAgICAgICAgZm9yIHJhdywgZXJyb3JzLCBleHBlY3RlZCBpbiB0ZXN0czoKICAgICAgICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZGVjb2RlZCA9IGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlKGNwLCByYXcsIGVycm9ycykKKyAgICAgICAgICAgICAgICAgICAgZGVjb2RlZCA9IGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlKGNwLCByYXcsIGVycm9ycywgVHJ1ZSkKICAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZGVjb2RlICVhIGZyb20gImNwJXMiIHdpdGggJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9ycz0lcjogJXMnICUgKHJhdywgY3AsIGVycm9ycywgZXJyKSkKQEAgLTI5MDQsNyArMjk3NSw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZGVjb2RlZFsxXSwgbGVuKHJhdykpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIGNwLCByYXcsIGVycm9ycykKKyAgICAgICAgICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIGNwLCByYXcsIGVycm9ycywgVHJ1ZSkKIAogICAgIGRlZiBjaGVja19lbmNvZGUoc2VsZiwgY3AsIHRlc3RzKToKICAgICAgICAgZm9yIHRleHQsIGVycm9ycywgZXhwZWN0ZWQgaW4gdGVzdHM6CkBAIC0yOTMyLDcgKzMwMDMsMTIgQEAKICAgICAgICAgICAgICgnW1x4ZmZdJywgJ3JlcGxhY2UnLCBiJ1t5XScpLAogICAgICAgICAgICAgKCdbXHUyMGFjXScsICdyZXBsYWNlJywgYidbP10nKSwKICAgICAgICAgICAgICgnW1x4ZmZdJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCBiJ1tcXHhmZl0nKSwKKyAgICAgICAgICAgICgnW1x4ZmZdJywgJ25hbWVyZXBsYWNlJywKKyAgICAgICAgICAgICBiJ1tcXE57TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVN9XScpLAogICAgICAgICAgICAgKCdbXHhmZl0nLCAneG1sY2hhcnJlZnJlcGxhY2UnLCBiJ1smIzI1NTtdJyksCisgICAgICAgICAgICAoJ1x1ZGNmZicsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgICgnW1x1ZGNmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgYidbXHhmZl0nKSwKKyAgICAgICAgICAgICgnW1x1ZGNmZl0nLCAnc3Vycm9nYXRlcGFzcycsIE5vbmUpLAogICAgICAgICApKQogICAgICAgICBzZWxmLmNoZWNrX2RlY29kZSg5MzIsICgKICAgICAgICAgICAgIChiJ2FiYycsICdzdHJpY3QnLCAnYWJjJyksCkBAIC0yOTQxLDEwICszMDE3LDEzIEBACiAgICAgICAgICAgICAoYidbXHhmZl0nLCAnc3RyaWN0JywgTm9uZSksCiAgICAgICAgICAgICAoYidbXHhmZl0nLCAnaWdub3JlJywgJ1tdJyksCiAgICAgICAgICAgICAoYidbXHhmZl0nLCAncmVwbGFjZScsICdbXHVmZmZkXScpLAorICAgICAgICAgICAgKGInW1x4ZmZdJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCAnW1xceGZmXScpLAogICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3N1cnJvZ2F0ZWVzY2FwZScsICdbXHVkY2ZmXScpLAorICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3N1cnJvZ2F0ZXBhc3MnLCBOb25lKSwKICAgICAgICAgICAgIChiJ1x4ODFceDAwYWJjJywgJ3N0cmljdCcsIE5vbmUpLAogICAgICAgICAgICAgKGInXHg4MVx4MDBhYmMnLCAnaWdub3JlJywgJ1x4MDBhYmMnKSwKICAgICAgICAgICAgIChiJ1x4ODFceDAwYWJjJywgJ3JlcGxhY2UnLCAnXHVmZmZkXHgwMGFiYycpLAorICAgICAgICAgICAgKGInXHg4MVx4MDBhYmMnLCAnYmFja3NsYXNocmVwbGFjZScsICdcXHg4MVx4MDBhYmMnKSwKICAgICAgICAgKSkKIAogICAgIGRlZiB0ZXN0X2NwMTI1MihzZWxmKToKQEAgLTI5NTIsOSArMzAzMSwxMiBAQAogICAgICAgICAgICAgKCdhYmMnLCAnc3RyaWN0JywgYidhYmMnKSwKICAgICAgICAgICAgICgnXHhlOVx1MjBhYycsICdzdHJpY3QnLCAgYidceGU5XHg4MCcpLAogICAgICAgICAgICAgKCdceGZmJywgJ3N0cmljdCcsIGInXHhmZicpLAorICAgICAgICAgICAgIyB0ZXN0IGVycm9yIGhhbmRsZXJzCiAgICAgICAgICAgICAoJ1x1MDE0MScsICdzdHJpY3QnLCBOb25lKSwKICAgICAgICAgICAgICgnXHUwMTQxJywgJ2lnbm9yZScsIGInJyksCiAgICAgICAgICAgICAoJ1x1MDE0MScsICdyZXBsYWNlJywgYidMJyksCisgICAgICAgICAgICAoJ1x1ZGM5OCcsICdzdXJyb2dhdGVlc2NhcGUnLCBiJ1x4OTgnKSwKKyAgICAgICAgICAgICgnXHVkYzk4JywgJ3N1cnJvZ2F0ZXBhc3MnLCBOb25lKSwKICAgICAgICAgKSkKICAgICAgICAgc2VsZi5jaGVja19kZWNvZGUoMTI1MiwgKAogICAgICAgICAgICAgKGInYWJjJywgJ3N0cmljdCcsICdhYmMnKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZW9wLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkKaW5kZXggYjY1NDIzYi4uNTA5YmY1ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkKQEAgLTMsNyArMyw3IEBACiAgICBOaWNrIE1hdGhld3NvbgogIiIiCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGlzX2p5dGhvbgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGlzX2p5dGhvbgogCiBmcm9tIGNvZGVvcCBpbXBvcnQgY29tcGlsZV9jb21tYW5kLCBQeUNGX0RPTlRfSU1QTFlfREVERU5UCiBpbXBvcnQgaW8KQEAgLTI5Niw5ICsyOTYsNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUoImEgPSAxXG4iLCAiZGVmIiwgJ3NpbmdsZScpLmNvX2ZpbGVuYW1lKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoQ29kZW9wVGVzdHMpCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkKaW5kZXggMDg4MmJhYy4uNGMzMmUwOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5CkBAIC0zLDYgKzMsNyBAQAogaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgY29weQogaW1wb3J0IGRvY3Rlc3QKK2ltcG9ydCBpbnNwZWN0CiBpbXBvcnQga2V5d29yZAogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgcGlja2xlCkBAIC0xMSwxMiArMTIsMTUgQEAKIGltcG9ydCBzdHJpbmcKIGltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAoraW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSwgQ291bnRlciwgT3JkZXJlZERpY3QsIF9jb3VudF9lbGVtZW50cwotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlckRpY3QKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJEaWN0LCBVc2VyU3RyaW5nLCBVc2VyTGlzdAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQ2hhaW5NYXAKLWZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEF3YWl0YWJsZSwgQ29yb3V0aW5lLCBBc3luY0l0ZXJhdG9yLCBBc3luY0l0ZXJhYmxlCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvciwgR2VuZXJhdG9yCiBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2l6ZWQsIENvbnRhaW5lciwgQ2FsbGFibGUKIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTZXQsIE11dGFibGVTZXQKIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBNYXBwaW5nLCBNdXRhYmxlTWFwcGluZywgS2V5c1ZpZXcsIEl0ZW1zVmlldwpAQCAtMjQsNiArMjgsMjYgQEAKIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBCeXRlU3RyaW5nCiAKIAorY2xhc3MgVGVzdFVzZXJPYmplY3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgX3N1cGVyc2V0X3Rlc3Qoc2VsZiwgYSwgYik6CisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKAorICAgICAgICAgICAgc2V0KGRpcihhKSksCisgICAgICAgICAgICBzZXQoZGlyKGIpKSwKKyAgICAgICAgICAgICd7YX0gc2hvdWxkIGhhdmUgYWxsIHRoZSBtZXRob2RzIG9mIHtifScuZm9ybWF0KAorICAgICAgICAgICAgICAgIGE9YS5fX25hbWVfXywKKyAgICAgICAgICAgICAgICBiPWIuX19uYW1lX18sCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAgZGVmIHRlc3Rfc3RyX3Byb3RvY29sKHNlbGYpOgorICAgICAgICBzZWxmLl9zdXBlcnNldF90ZXN0KFVzZXJTdHJpbmcsIHN0cikKKworICAgIGRlZiB0ZXN0X2xpc3RfcHJvdG9jb2woc2VsZik6CisgICAgICAgIHNlbGYuX3N1cGVyc2V0X3Rlc3QoVXNlckxpc3QsIGxpc3QpCisKKyAgICBkZWYgdGVzdF9kaWN0X3Byb3RvY29sKHNlbGYpOgorICAgICAgICBzZWxmLl9zdXBlcnNldF90ZXN0KFVzZXJEaWN0LCBkaWN0KQorCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMgQ2hhaW5NYXAgKGhlbHBlciBjbGFzcyBmb3IgY29uZmlncGFyc2VyIGFuZCB0aGUgc3RyaW5nIG1vZHVsZSkKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0xOTksNiArMjIzLDE0IEBACiAgICAgICAgIFBvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb2ludC5fX2RvY19fLCAnUG9pbnQoeCwgeSknKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKKyAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCisgICAgZGVmIHRlc3RfZG9jX3dyaXRhYmxlKHNlbGYpOgorICAgICAgICBQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9pbnQueC5fX2RvY19fLCAnQWxpYXMgZm9yIGZpZWxkIG51bWJlciAwJykKKyAgICAgICAgUG9pbnQueC5fX2RvY19fID0gJ2RvY3N0cmluZyBmb3IgUG9pbnQueCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb2ludC54Ll9fZG9jX18sICdkb2NzdHJpbmcgZm9yIFBvaW50LngnKQorCiAgICAgZGVmIHRlc3RfbmFtZV9maXhlcihzZWxmKToKICAgICAgICAgZm9yIHNwZWMsIHJlbmFtZWQgaW4gWwogICAgICAgICAgICAgWygnZWZnJywgJ2claGknKSwgICgnZWZnJywgJ18xJyldLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmllbGQgd2l0aCBub24tYWxwaGEgY2hhcgpAQCAtNDU3LDYgKzQ4OSwxMjEgQEAKIAogY2xhc3MgVGVzdE9uZVRyaWNrUG9ueUFCQ3MoQUJDVGVzdENhc2UpOgogCisgICAgZGVmIHRlc3RfQXdhaXRhYmxlKHNlbGYpOgorICAgICAgICBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZAorCisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGNvcm8oKToKKyAgICAgICAgICAgIHlpZWxkCisKKyAgICAgICAgYXN5bmMgZGVmIG5ld19jb3JvKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgQmFyOgorICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICB5aWVsZAorCisgICAgICAgIGNsYXNzIE1pbmltYWxDb3JvKENvcm91dGluZSk6CisgICAgICAgICAgICBkZWYgc2VuZChzZWxmLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS50aHJvdyh0eXAsIHZhbCwgdGIpCisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHlpZWxkCisKKyAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgaW50KCksIGdlbigpLCBvYmplY3QoKV0KKyAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgQXdhaXRhYmxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHR5cGUoeCksIEF3YWl0YWJsZSksIHJlcHIodHlwZSh4KSkpCisKKyAgICAgICAgc2FtcGxlcyA9IFtCYXIoKSwgTWluaW1hbENvcm8oKV0KKyAgICAgICAgZm9yIHggaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh4LCBBd2FpdGFibGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh0eXBlKHgpLCBBd2FpdGFibGUpKQorCisgICAgICAgIGMgPSBjb3JvKCkKKyAgICAgICAgIyBJdGVyYWJsZSBjb3JvdXRpbmVzIChnZW5lcmF0b3JzIHdpdGggQ09fSVRFUkFCTEVfQ09ST1VUSU5FCisgICAgICAgICMgZmxhZyBkb24ndCBoYXZlICdfX2F3YWl0X18nIG1ldGhvZCwgaGVuY2UgY2FuJ3QgYmUgaW5zdGFuY2VzCisgICAgICAgICMgb2YgQXdhaXRhYmxlLiBVc2UgaW5zcGVjdC5pc2F3YWl0YWJsZSB0byBkZXRlY3QgdGhlbS4KKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGMsIEF3YWl0YWJsZSkKKworICAgICAgICBjID0gbmV3X2Nvcm8oKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYywgQXdhaXRhYmxlKQorICAgICAgICBjLmNsb3NlKCkgIyBhd29pZCBSdW50aW1lV2FybmluZyB0aGF0IGNvcm8oKSB3YXMgbm90IGF3YWl0ZWQKKworICAgICAgICBjbGFzcyBDb3JvTGlrZTogcGFzcworICAgICAgICBDb3JvdXRpbmUucmVnaXN0ZXIoQ29yb0xpa2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKENvcm9MaWtlKCksIEF3YWl0YWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKENvcm9MaWtlLCBBd2FpdGFibGUpKQorICAgICAgICBDb3JvTGlrZSA9IE5vbmUKKyAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkgIyBLaWxsIENvcm9MaWtlIHRvIGNsZWFuLXVwIEFCQ01ldGEgY2FjaGUKKworICAgIGRlZiB0ZXN0X0Nvcm91dGluZShzZWxmKToKKyAgICAgICAgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQKKworICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBjb3JvKCk6CisgICAgICAgICAgICB5aWVsZAorCisgICAgICAgIGFzeW5jIGRlZiBuZXdfY29ybygpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIEJhcjoKKyAgICAgICAgICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgeWllbGQKKworICAgICAgICBjbGFzcyBNaW5pbWFsQ29ybyhDb3JvdXRpbmUpOgorICAgICAgICAgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZQorICAgICAgICAgICAgZGVmIHRocm93KHNlbGYsIHR5cCwgdmFsPU5vbmUsIHRiPU5vbmUpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkudGhyb3codHlwLCB2YWwsIHRiKQorICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICB5aWVsZAorCisgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIGludCgpLCBnZW4oKSwgb2JqZWN0KCksIEJhcigpXQorICAgICAgICBmb3IgeCBpbiBub25fc2FtcGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZSh4LCBDb3JvdXRpbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3ModHlwZSh4KSwgQ29yb3V0aW5lKSwgcmVwcih0eXBlKHgpKSkKKworICAgICAgICBzYW1wbGVzID0gW01pbmltYWxDb3JvKCldCisgICAgICAgIGZvciB4IGluIHNhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoeCwgQXdhaXRhYmxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZSh4KSwgQXdhaXRhYmxlKSkKKworICAgICAgICBjID0gY29ybygpCisgICAgICAgICMgSXRlcmFibGUgY29yb3V0aW5lcyAoZ2VuZXJhdG9ycyB3aXRoIENPX0lURVJBQkxFX0NPUk9VVElORQorICAgICAgICAjIGZsYWcgZG9uJ3QgaGF2ZSAnX19hd2FpdF9fJyBtZXRob2QsIGhlbmNlIGNhbid0IGJlIGluc3RhbmNlcworICAgICAgICAjIG9mIENvcm91dGluZS4gVXNlIGluc3BlY3QuaXNhd2FpdGFibGUgdG8gZGV0ZWN0IHRoZW0uCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShjLCBDb3JvdXRpbmUpCisKKyAgICAgICAgYyA9IG5ld19jb3JvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGMsIENvcm91dGluZSkKKyAgICAgICAgYy5jbG9zZSgpICMgYXdvaWQgUnVudGltZVdhcm5pbmcgdGhhdCBjb3JvKCkgd2FzIG5vdCBhd2FpdGVkCisKKyAgICAgICAgY2xhc3MgQ29yb0xpa2U6CisgICAgICAgICAgICBkZWYgc2VuZChzZWxmLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIHRocm93KHNlbGYsIHR5cCwgdmFsPU5vbmUsIHRiPU5vbmUpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoQ29yb0xpa2UoKSwgQ29yb3V0aW5lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQ29yb0xpa2UsIENvcm91dGluZSkpCisKKyAgICAgICAgY2xhc3MgQ29yb0xpa2U6CisgICAgICAgICAgICBkZWYgc2VuZChzZWxmLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoQ29yb0xpa2UoKSwgQ29yb3V0aW5lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENvcm9MaWtlLCBDb3JvdXRpbmUpKQorCiAgICAgZGVmIHRlc3RfSGFzaGFibGUoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgc29tZSBub24taGFzaGFibGVzCiAgICAgICAgIG5vbl9zYW1wbGVzID0gW2J5dGVhcnJheSgpLCBsaXN0KCksIHNldCgpLCBkaWN0KCldCkBAIC00ODMsNiArNjMwLDQwIEBACiAgICAgICAgIHNlbGYudmFsaWRhdGVfYWJzdHJhY3RfbWV0aG9kcyhIYXNoYWJsZSwgJ19faGFzaF9fJykKICAgICAgICAgc2VsZi52YWxpZGF0ZV9pc2luc3RhbmNlKEhhc2hhYmxlLCAnX19oYXNoX18nKQogCisgICAgZGVmIHRlc3RfQXN5bmNJdGVyYWJsZShzZWxmKToKKyAgICAgICAgY2xhc3MgQUk6CisgICAgICAgICAgICBhc3luYyBkZWYgX19haXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKEFJKCksIEFzeW5jSXRlcmFibGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhBSSwgQXN5bmNJdGVyYWJsZSkpCisgICAgICAgICMgQ2hlY2sgc29tZSBub24taXRlcmFibGVzCisgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIG9iamVjdCwgW11dCisgICAgICAgIGZvciB4IGluIG5vbl9zYW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHgsIEFzeW5jSXRlcmFibGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3ModHlwZSh4KSwgQXN5bmNJdGVyYWJsZSksIHJlcHIodHlwZSh4KSkpCisgICAgICAgIHNlbGYudmFsaWRhdGVfYWJzdHJhY3RfbWV0aG9kcyhBc3luY0l0ZXJhYmxlLCAnX19haXRlcl9fJykKKyAgICAgICAgc2VsZi52YWxpZGF0ZV9pc2luc3RhbmNlKEFzeW5jSXRlcmFibGUsICdfX2FpdGVyX18nKQorCisgICAgZGVmIHRlc3RfQXN5bmNJdGVyYXRvcihzZWxmKToKKyAgICAgICAgY2xhc3MgQUk6CisgICAgICAgICAgICBhc3luYyBkZWYgX19haXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBhc3luYyBkZWYgX19hbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShBSSgpLCBBc3luY0l0ZXJhdG9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQUksIEFzeW5jSXRlcmF0b3IpKQorICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCBvYmplY3QsIFtdXQorICAgICAgICAjIENoZWNrIHNvbWUgbm9uLWl0ZXJhYmxlcworICAgICAgICBmb3IgeCBpbiBub25fc2FtcGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZSh4LCBBc3luY0l0ZXJhdG9yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHR5cGUoeCksIEFzeW5jSXRlcmF0b3IpLCByZXByKHR5cGUoeCkpKQorICAgICAgICAjIFNpbWlsYXJseSB0byByZWd1bGFyIGl0ZXJhdG9ycyAoc2VlIGlzc3VlIDEwNTY1KQorICAgICAgICBjbGFzcyBBbmV4dE9ubHk6CisgICAgICAgICAgICBhc3luYyBkZWYgX19hbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbgorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoQW5leHRPbmx5KCksIEFzeW5jSXRlcmF0b3IpCisgICAgICAgIHNlbGYudmFsaWRhdGVfYWJzdHJhY3RfbWV0aG9kcyhBc3luY0l0ZXJhdG9yLCAnX19hbmV4dF9fJywgJ19fYWl0ZXJfXycpCisKICAgICBkZWYgdGVzdF9JdGVyYWJsZShzZWxmKToKICAgICAgICAgIyBDaGVjayBzb21lIG5vbi1pdGVyYWJsZXMKICAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgNDIsIDMuMTQsIDFqXQpAQCAtNTMwLDkgKzcxMSw4MCBAQAogICAgICAgICBjbGFzcyBOZXh0T25seToKICAgICAgICAgICAgIGRlZiBfX25leHRfXyhzZWxmKToKICAgICAgICAgICAgICAgICB5aWVsZCAxCi0gICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoTmV4dE9ubHkoKSwgSXRlcmF0b3IpCiAKKyAgICBkZWYgdGVzdF9HZW5lcmF0b3Ioc2VsZik6CisgICAgICAgIGNsYXNzIE5vbkdlbjE6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6IHJldHVybiBOb25lCisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiB0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKTogcGFzcworCisgICAgICAgIGNsYXNzIE5vbkdlbjI6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6IHJldHVybiBOb25lCisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYsIHZhbHVlKTogcmV0dXJuIHZhbHVlCisKKyAgICAgICAgY2xhc3MgTm9uR2VuMzoKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOiByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIGRlZiB0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKTogcGFzcworCisgICAgICAgIG5vbl9zYW1wbGVzID0gWworICAgICAgICAgICAgTm9uZSwgNDIsIDMuMTQsIDFqLCBiIiIsICIiLCAoKSwgW10sIHt9LCBzZXQoKSwKKyAgICAgICAgICAgIGl0ZXIoKCkpLCBpdGVyKFtdKSwgTm9uR2VuMSgpLCBOb25HZW4yKCksIE5vbkdlbjMoKV0KKyAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgR2VuZXJhdG9yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHR5cGUoeCksIEdlbmVyYXRvciksIHJlcHIodHlwZSh4KSkpCisKKyAgICAgICAgY2xhc3MgR2VuOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOiByZXR1cm4gTm9uZQorICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgc2VuZChzZWxmLCB2YWx1ZSk6IHJldHVybiB2YWx1ZQorICAgICAgICAgICAgZGVmIHRocm93KHNlbGYsIHR5cCwgdmFsPU5vbmUsIHRiPU5vbmUpOiBwYXNzCisKKyAgICAgICAgY2xhc3MgTWluaW1hbEdlbihHZW5lcmF0b3IpOgorICAgICAgICAgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZQorICAgICAgICAgICAgZGVmIHRocm93KHNlbGYsIHR5cCwgdmFsPU5vbmUsIHRiPU5vbmUpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkudGhyb3codHlwLCB2YWwsIHRiKQorCisgICAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEKKworICAgICAgICBzYW1wbGVzID0gW2dlbigpLCAobGFtYmRhOiAoeWllbGQpKSgpLCBHZW4oKSwgTWluaW1hbEdlbigpXQorICAgICAgICBmb3IgeCBpbiBzYW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHgsIEl0ZXJhdG9yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHgsIEdlbmVyYXRvcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUoeCksIEdlbmVyYXRvciksIHJlcHIodHlwZSh4KSkpCisgICAgICAgIHNlbGYudmFsaWRhdGVfYWJzdHJhY3RfbWV0aG9kcyhHZW5lcmF0b3IsICdzZW5kJywgJ3Rocm93JykKKworICAgICAgICAjIG1peGluIHRlc3RzCisgICAgICAgIG1nZW4gPSBNaW5pbWFsR2VuKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtZ2VuLCBpdGVyKG1nZW4pKQorICAgICAgICBzZWxmLmFzc2VydElzKG1nZW4uc2VuZChOb25lKSwgbmV4dChtZ2VuKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBtZ2VuLnNlbmQoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1nZW4uY2xvc2UoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWdlbi50aHJvdywgVmFsdWVFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiXmh1aHUkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZ2VuLnRocm93LCBWYWx1ZUVycm9yLCBWYWx1ZUVycm9yKCJodWh1IikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG1nZW4udGhyb3csIFN0b3BJdGVyYXRpb24oKSkKKworICAgICAgICBjbGFzcyBGYWlsT25DbG9zZShHZW5lcmF0b3IpOgorICAgICAgICAgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOiByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIGRlZiB0aHJvdyhzZWxmLCAqYXJncyk6IHJhaXNlIFZhbHVlRXJyb3IKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBGYWlsT25DbG9zZSgpLmNsb3NlKQorCisgICAgICAgIGNsYXNzIElnbm9yZUdlbmVyYXRvckV4aXQoR2VuZXJhdG9yKToKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYsIHZhbHVlKTogcmV0dXJuIHZhbHVlCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZiwgKmFyZ3MpOiBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBJZ25vcmVHZW5lcmF0b3JFeGl0KCkuY2xvc2UpCisKICAgICBkZWYgdGVzdF9TaXplZChzZWxmKToKICAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgNDIsIDMuMTQsIDFqLAogICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhOiAoeWllbGQpKSgpLApAQCAtNjU5LDYgKzkxMSw1OSBAQAogICAgICAgICBhLCBiID0gT25lVHdvVGhyZWVTZXQoKSwgT25lVHdvVGhyZWVTZXQoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzaChhKSA9PSBoYXNoKGIpKQogCisgICAgZGVmIHRlc3RfaXNkaXNqb2ludF9TZXQoc2VsZik6CisgICAgICAgIGNsYXNzIE15U2V0KFNldCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaXRyKToKKyAgICAgICAgICAgICAgICBzZWxmLmNvbnRlbnRzID0gaXRyCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHgpOgorICAgICAgICAgICAgICAgIHJldHVybiB4IGluIHNlbGYuY29udGVudHMKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihzZWxmLmNvbnRlbnRzKQorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxlbihbeCBmb3IgeCBpbiBzZWxmLmNvbnRlbnRzXSkKKyAgICAgICAgczEgPSBNeVNldCgoMSwgMiwgMykpCisgICAgICAgIHMyID0gTXlTZXQoKDQsIDUsIDYpKQorICAgICAgICBzMyA9IE15U2V0KCgxLCA1LCA2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMxLmlzZGlzam9pbnQoczIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMxLmlzZGlzam9pbnQoczMpKQorCisgICAgZGVmIHRlc3RfZXF1YWxpdHlfU2V0KHNlbGYpOgorICAgICAgICBjbGFzcyBNeVNldChTZXQpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGl0cik6CisgICAgICAgICAgICAgICAgc2VsZi5jb250ZW50cyA9IGl0cgorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB4KToKKyAgICAgICAgICAgICAgICByZXR1cm4geCBpbiBzZWxmLmNvbnRlbnRzCisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5jb250ZW50cykKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBsZW4oW3ggZm9yIHggaW4gc2VsZi5jb250ZW50c10pCisgICAgICAgIHMxID0gTXlTZXQoKDEsKSkKKyAgICAgICAgczIgPSBNeVNldCgoMSwgMikpCisgICAgICAgIHMzID0gTXlTZXQoKDMsIDQpKQorICAgICAgICBzNCA9IE15U2V0KCgzLCA0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMyID4gczEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzMSA8IHMyKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMyIDw9IHMxKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMyIDw9IHMzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMxID49IHMyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMzLCBzNCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzMiwgczMpCisKKyAgICBkZWYgdGVzdF9hcml0aG1ldGljX1NldChzZWxmKToKKyAgICAgICAgY2xhc3MgTXlTZXQoU2V0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpdHIpOgorICAgICAgICAgICAgICAgIHNlbGYuY29udGVudHMgPSBpdHIKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHggaW4gc2VsZi5jb250ZW50cworICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKHNlbGYuY29udGVudHMpCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGVuKFt4IGZvciB4IGluIHNlbGYuY29udGVudHNdKQorICAgICAgICBzMSA9IE15U2V0KCgxLCAyLCAzKSkKKyAgICAgICAgczIgPSBNeVNldCgoMywgNCwgNSkpCisgICAgICAgIHMzID0gczEgJiBzMgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMzLCBNeVNldCgoMywpKSkKKwogICAgIGRlZiB0ZXN0X011dGFibGVTZXQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZXQoKSwgTXV0YWJsZVNldCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Moc2V0LCBNdXRhYmxlU2V0KSkKQEAgLTk1OSw2ICsxMjY0LDQxIEBACiAgICAgICAgIHNlbGYudmFsaWRhdGVfYWJzdHJhY3RfbWV0aG9kcyhTZXF1ZW5jZSwgJ19fY29udGFpbnNfXycsICdfX2l0ZXJfXycsICdfX2xlbl9fJywKICAgICAgICAgICAgICdfX2dldGl0ZW1fXycpCiAKKyAgICBkZWYgdGVzdF9TZXF1ZW5jZV9taXhpbnMoc2VsZik6CisgICAgICAgIGNsYXNzIFNlcXVlbmNlU3ViY2xhc3MoU2VxdWVuY2UpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcT0oKSk6CisgICAgICAgICAgICAgICAgc2VsZi5zZXEgPSBzZXEKKworICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGluZGV4KToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zZXFbaW5kZXhdCisKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBsZW4oc2VsZi5zZXEpCisKKyAgICAgICAgIyBDb21wYXJlIFNlcXVlbmNlLmluZGV4KCkgYmVoYXZpb3IgdG8gKGxpc3R8c3RyKS5pbmRleCgpIGJlaGF2aW9yCisgICAgICAgIGRlZiBhc3NlcnRfaW5kZXhfc2FtZShzZXExLCBzZXEyLCBpbmRleF9hcmdzKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBleHBlY3RlZCA9IHNlcTEuaW5kZXgoKmluZGV4X2FyZ3MpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBzZXEyLmluZGV4KCppbmRleF9hcmdzKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhY3R1YWwgPSBzZXEyLmluZGV4KCppbmRleF9hcmdzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgIGFjdHVhbCwgZXhwZWN0ZWQsICclci5pbmRleCVzJyAlIChzZXExLCBpbmRleF9hcmdzKSkKKworICAgICAgICBmb3IgdHkgaW4gbGlzdCwgc3RyOgorICAgICAgICAgICAgbmF0aXZlc2VxID0gdHkoJ2FicmFjYWRhYnJhJykKKyAgICAgICAgICAgIGluZGV4ZXMgPSBbLTEwMDAwLCAtOTk5OV0gKyBsaXN0KHJhbmdlKC0zLCBsZW4obmF0aXZlc2VxKSArIDMpKQorICAgICAgICAgICAgc2Vxc2VxID0gU2VxdWVuY2VTdWJjbGFzcyhuYXRpdmVzZXEpCisgICAgICAgICAgICBmb3IgbGV0dGVyIGluIHNldChuYXRpdmVzZXEpIHwgeyd6J306CisgICAgICAgICAgICAgICAgYXNzZXJ0X2luZGV4X3NhbWUobmF0aXZlc2VxLCBzZXFzZXEsIChsZXR0ZXIsKSkKKyAgICAgICAgICAgICAgICBmb3Igc3RhcnQgaW4gcmFuZ2UoLTMsIGxlbihuYXRpdmVzZXEpICsgMyk6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9pbmRleF9zYW1lKG5hdGl2ZXNlcSwgc2Vxc2VxLCAobGV0dGVyLCBzdGFydCkpCisgICAgICAgICAgICAgICAgICAgIGZvciBzdG9wIGluIHJhbmdlKC0zLCBsZW4obmF0aXZlc2VxKSArIDMpOgorICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2luZGV4X3NhbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlc2VxLCBzZXFzZXEsIChsZXR0ZXIsIHN0YXJ0LCBzdG9wKSkKKwogICAgIGRlZiB0ZXN0X0J5dGVTdHJpbmcoc2VsZik6CiAgICAgICAgIGZvciBzYW1wbGUgaW4gW2J5dGVzLCBieXRlYXJyYXldOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNhbXBsZSgpLCBCeXRlU3RyaW5nKQpAQCAtOTczLDcgKzEzMTMsNyBAQAogICAgICAgICBmb3Igc2FtcGxlIGluIFt0dXBsZSwgc3RyLCBieXRlc106CiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2Uoc2FtcGxlKCksIE11dGFibGVTZXF1ZW5jZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhzYW1wbGUsIE11dGFibGVTZXF1ZW5jZSkpCi0gICAgICAgIGZvciBzYW1wbGUgaW4gW2xpc3QsIGJ5dGVhcnJheV06CisgICAgICAgIGZvciBzYW1wbGUgaW4gW2xpc3QsIGJ5dGVhcnJheSwgZGVxdWVdOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNhbXBsZSgpLCBNdXRhYmxlU2VxdWVuY2UpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhzYW1wbGUsIE11dGFibGVTZXF1ZW5jZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhzdHIsIE11dGFibGVTZXF1ZW5jZSkpCkBAIC0xMjg5LDcgKzE2MjksOSBAQAogZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgogICAgIE5hbWVkVHVwbGVEb2NzID0gZG9jdGVzdC5Eb2NUZXN0U3VpdGUobW9kdWxlPWNvbGxlY3Rpb25zKQogICAgIHRlc3RfY2xhc3NlcyA9IFtUZXN0TmFtZWRUdXBsZSwgTmFtZWRUdXBsZURvY3MsIFRlc3RPbmVUcmlja1BvbnlBQkNzLAotICAgICAgICAgICAgICAgICAgICBUZXN0Q29sbGVjdGlvbkFCQ3MsIFRlc3RDb3VudGVyLCBUZXN0Q2hhaW5NYXBdCisgICAgICAgICAgICAgICAgICAgIFRlc3RDb2xsZWN0aW9uQUJDcywgVGVzdENvdW50ZXIsIFRlc3RDaGFpbk1hcCwKKyAgICAgICAgICAgICAgICAgICAgVGVzdFVzZXJPYmplY3RzLAorICAgICAgICAgICAgICAgICAgICBdCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KGNvbGxlY3Rpb25zLCB2ZXJib3NlKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBhcmUucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBhcmUucHkKaW5kZXggYTY2MzgzMi4uNDcxYzhkYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21wYXJlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGFyZS5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIEVtcHR5OgogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKQEAgLTEyMSw4ICsxMjAsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEFueXRoaW5nKCksIHkpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENvbXBhcmlzb25UZXN0KQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkKaW5kZXggZWUyOGNhOS4uODkzNWM2NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weQpAQCAtNSw3ICs1LDggQEAKIGltcG9ydCBfYXN0CiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0eXBlcwotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBzY3JpcHRfaGVscGVyCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiAKIGNsYXNzIFRlc3RTcGVjaWZpY3ModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC00MjcsNyArNDI4LDcgQEAKIAogICAgIGRlZiB0ZXN0X2NvbXBpbGVfYXN0KHNlbGYpOgogICAgICAgICBmbmFtZSA9IF9fZmlsZV9fCi0gICAgICAgIGlmIGZuYW1lLmxvd2VyKCkuZW5kc3dpdGgoKCdweWMnLCAncHlvJykpOgorICAgICAgICBpZiBmbmFtZS5sb3dlcigpLmVuZHN3aXRoKCdweWMnKToKICAgICAgICAgICAgIGZuYW1lID0gZm5hbWVbOi0xXQogICAgICAgICB3aXRoIG9wZW4oZm5hbWUsICdyJykgYXMgZjoKICAgICAgICAgICAgIGZjb250ZW50cyA9IGYucmVhZCgpCkBAIC00NjAsNiArNDYxLDE3IEBACiAgICAgICAgIGFzdC5ib2R5ID0gW19hc3QuQm9vbE9wKCldCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcGlsZSwgYXN0LCAnPGFzdD4nLCAnZXhlYycpCiAKKyAgICBkZWYgdGVzdF9kaWN0X2V2YWx1YXRpb25fb3JkZXIoc2VsZik6CisgICAgICAgIGkgPSAwCisKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIG5vbmxvY2FsIGkKKyAgICAgICAgICAgIGkgKz0gMQorICAgICAgICAgICAgcmV0dXJuIGkKKworICAgICAgICBkID0ge2YoKTogZigpLCBmKCk6IGYoKX0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCB7MTogMiwgMzogNH0pCisKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zYW1lX2ZpbGVuYW1lX3VzZWQoc2VsZik6CiAgICAgICAgIHMgPSAiIiJkZWYgZigpOiBwYXNzXG5kZWYgZygpOiBwYXNzIiIiCkBAIC01MzIsNyArNTQ0LDcgQEAKICAgICAgICAgICAgIGJyb2tlbiA9IHByZWZpeCArIHJlcGVhdGVkICogZmFpbF9kZXB0aAogICAgICAgICAgICAgZGV0YWlscyA9ICJDb21waWxpbmcgKHshcn0gKyB7IXJ9ICoge30pIi5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCByZXBlYXRlZCwgZmFpbF9kZXB0aCkKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBtc2c9ZGV0YWlscyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBtc2c9ZGV0YWlscyk6CiAgICAgICAgICAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZShicm9rZW4pCiAKICAgICAgICAgY2hlY2tfbGltaXQoImEiLCAiKCkiKQpAQCAtNTQzLDEwICs1NTUsOSBAQAogICAgIGRlZiB0ZXN0X251bGxfdGVybWluYXRlZChzZWxmKToKICAgICAgICAgIyBUaGUgc291cmNlIGNvZGUgaXMgbnVsbC10ZXJtaW5hdGVkIGludGVybmFsbHksIGJ1dCBieXRlcy1saWtlCiAgICAgICAgICMgb2JqZWN0cyBhcmUgYWNjZXB0ZWQsIHdoaWNoIGNvdWxkIGJlIG5vdCB0ZXJtaW5hdGVkLgotICAgICAgICAjIEV4Y2VwdGlvbiBjaGFuZ2VkIGZyb20gVHlwZUVycm9yIHRvIFZhbHVlRXJyb3IgaW4gMy41Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJjYW5ub3QgY29udGFpbiBudWxsIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiY2Fubm90IGNvbnRhaW4gbnVsbCIpOgogICAgICAgICAgICAgY29tcGlsZSgiMTIzXHgwMCIsICI8ZHVtbXk+IiwgImV2YWwiKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiY2Fubm90IGNvbnRhaW4gbnVsbCIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImNhbm5vdCBjb250YWluIG51bGwiKToKICAgICAgICAgICAgIGNvbXBpbGUobWVtb3J5dmlldyhiIjEyM1x4MDAiKSwgIjxkdW1teT4iLCAiZXZhbCIpCiAgICAgICAgIGNvZGUgPSBjb21waWxlKG1lbW9yeXZpZXcoYiIxMjNceDAwIilbMTotMV0sICI8ZHVtbXk+IiwgImV2YWwiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoY29kZSksIDIzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb21waWxlYWxsLnB5IGIvTGliL3Rlc3QvdGVzdF9jb21waWxlYWxsLnB5CmluZGV4IDdjNjFmYTMuLjJjZThhNjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29tcGlsZWFsbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGVhbGwucHkKQEAgLTExLDcgKzExLDE1IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBpbwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHNjcmlwdF9oZWxwZXIKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2ssIHNraXBVbmxlc3MKK3RyeToKKyAgICBmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcyBpbXBvcnQgUHJvY2Vzc1Bvb2xFeGVjdXRvcgorICAgIF9oYXZlX211bHRpcHJvY2Vzc2luZyA9IFRydWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfaGF2ZV9tdWx0aXByb2Nlc3NpbmcgPSBGYWxzZQorCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiAKIGNsYXNzIENvbXBpbGVhbGxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTk1LDE4ICsxMDMsNDUgQEAKICAgICBkZWYgdGVzdF9vcHRpbWl6ZShzZWxmKToKICAgICAgICAgIyBtYWtlIHN1cmUgY29tcGlsaW5nIHdpdGggZGlmZmVyZW50IG9wdGltaXphdGlvbiBzZXR0aW5ncyB0aGFuIHRoZQogICAgICAgICAjIGludGVycHJldGVyJ3MgY3JlYXRlcyB0aGUgY29ycmVjdCBmaWxlIG5hbWVzCi0gICAgICAgIG9wdGltaXplID0gMSBpZiBfX2RlYnVnX18gZWxzZSAwCisgICAgICAgIG9wdGltaXplLCBvcHQgPSAoMSwgMSkgaWYgX19kZWJ1Z19fIGVsc2UgKDAsICcnKQogICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBxdWlldD1UcnVlLCBvcHRpbWl6ZT1vcHRpbWl6ZSkKICAgICAgICAgY2FjaGVkID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5zb3VyY2VfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfb3ZlcnJpZGU9bm90IG9wdGltaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb249b3B0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoY2FjaGVkKSkKICAgICAgICAgY2FjaGVkMiA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHNlbGYuc291cmNlX3BhdGgyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfb3ZlcnJpZGU9bm90IG9wdGltaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uPW9wdCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGNhY2hlZDIpKQogICAgICAgICBjYWNoZWQzID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5zb3VyY2VfcGF0aDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19vdmVycmlkZT1ub3Qgb3B0aW1pemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb249b3B0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoY2FjaGVkMykpCiAKKyAgICBAbW9jay5wYXRjaCgnY29tcGlsZWFsbC5Qcm9jZXNzUG9vbEV4ZWN1dG9yJykKKyAgICBkZWYgdGVzdF9jb21waWxlX3Bvb2xfY2FsbGVkKHNlbGYsIHBvb2xfbW9jayk6CisgICAgICAgIGNvbXBpbGVhbGwuY29tcGlsZV9kaXIoc2VsZi5kaXJlY3RvcnksIHF1aWV0PVRydWUsIHdvcmtlcnM9NSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvb2xfbW9jay5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9jb21waWxlX3dvcmtlcnNfbm9uX3Bvc2l0aXZlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJzIG11c3QgYmUgZ3JlYXRlciBvciBlcXVhbCB0byAwIik6CisgICAgICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCB3b3JrZXJzPS0xKQorCisgICAgQG1vY2sucGF0Y2goJ2NvbXBpbGVhbGwuUHJvY2Vzc1Bvb2xFeGVjdXRvcicpCisgICAgZGVmIHRlc3RfY29tcGlsZV93b3JrZXJzX2NwdV9jb3VudChzZWxmLCBwb29sX21vY2spOgorICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBxdWlldD1UcnVlLCB3b3JrZXJzPTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9vbF9tb2NrLmNhbGxfYXJnc1sxXVsnbWF4X3dvcmtlcnMnXSwgTm9uZSkKKworICAgIEBtb2NrLnBhdGNoKCdjb21waWxlYWxsLlByb2Nlc3NQb29sRXhlY3V0b3InKQorICAgIEBtb2NrLnBhdGNoKCdjb21waWxlYWxsLmNvbXBpbGVfZmlsZScpCisgICAgZGVmIHRlc3RfY29tcGlsZV9vbmVfd29ya2VyKHNlbGYsIGNvbXBpbGVfZmlsZV9tb2NrLCBwb29sX21vY2spOgorICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBxdWlldD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBvb2xfbW9jay5jYWxsZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21waWxlX2ZpbGVfbW9jay5jYWxsZWQpCisKKyAgICBAbW9jay5wYXRjaCgnY29tcGlsZWFsbC5Qcm9jZXNzUG9vbEV4ZWN1dG9yJywgbmV3PU5vbmUpCisgICAgQG1vY2sucGF0Y2goJ2NvbXBpbGVhbGwuY29tcGlsZV9maWxlJykKKyAgICBkZWYgdGVzdF9jb21waWxlX21pc3NpbmdfbXVsdGlwcm9jZXNzaW5nKHNlbGYsIGNvbXBpbGVfZmlsZV9tb2NrKToKKyAgICAgICAgY29tcGlsZWFsbC5jb21waWxlX2RpcihzZWxmLmRpcmVjdG9yeSwgcXVpZXQ9VHJ1ZSwgd29ya2Vycz01KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tcGlsZV9maWxlX21vY2suY2FsbGVkKQogCiBjbGFzcyBFbmNvZGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIklzc3VlIDY3MTY6IGNvbXBpbGVhbGwgc2hvdWxkIGVzY2FwZSBzb3VyY2UgY29kZSB3aGVuIHByaW50aW5nIGVycm9ycwpAQCAtMjMxLDExICsyNjYsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihiJ0xpc3RpbmcgJywgcXVpZXQpCiAKICAgICAjIEVuc3VyZSB0aGF0IHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGNvbXBpbGVhbGwncyBDTEkgaXMgdG8gY3JlYXRlCi0gICAgIyBQRVAgMzE0NyBweWMvcHlvIGZpbGVzLgorICAgICMgUEVQIDMxNDcvUEVQIDQ4OCBweWMgZmlsZXMuCiAgICAgZm9yIG5hbWUsIGV4dCwgc3dpdGNoIGluIFsKICAgICAgICAgKCdub3JtYWwnLCAncHljJywgW10pLAotICAgICAgICAoJ29wdGltaXplJywgJ3B5bycsIFsnLU8nXSksCi0gICAgICAgICgnZG91Ymxlb3B0aW1pemUnLCAncHlvJywgWyctT08nXSksCisgICAgICAgICgnb3B0aW1pemUnLCAnb3B0LTEucHljJywgWyctTyddKSwKKyAgICAgICAgKCdkb3VibGVvcHRpbWl6ZScsICdvcHQtMi5weWMnLCBbJy1PTyddKSwKICAgICBdOgogICAgICAgICBkZWYgZihzZWxmLCBleHQ9ZXh0LCBzd2l0Y2g9c3dpdGNoKToKICAgICAgICAgICAgIHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vaygqKHN3aXRjaCArCkBAIC0yNTIsMTMgKzI4NywxMiBAQAogCiAgICAgZGVmIHRlc3RfbGVnYWN5X3BhdGhzKHNlbGYpOgogICAgICAgICAjIEVuc3VyZSB0aGF0IHdpdGggdGhlIHByb3BlciBzd2l0Y2gsIGNvbXBpbGVhbGwgbGVhdmVzIGxlZ2FjeQotICAgICAgICAjIHB5Yy9weW8gZmlsZXMsIGFuZCBubyBfX3B5Y2FjaGVfXyBkaXJlY3RvcnkuCisgICAgICAgICMgcHljIGZpbGVzLCBhbmQgbm8gX19weWNhY2hlX18gZGlyZWN0b3J5LgogICAgICAgICBzZWxmLmFzc2VydFJ1bk9LKCctYicsICctcScsIHNlbGYucGtnZGlyKQogICAgICAgICAjIFZlcmlmeSB0aGUgX19weWNhY2hlX18gZGlyZWN0b3J5IGNvbnRlbnRzLgogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHNlbGYucGtnZGlyX2NhY2hlZGlyKSkKLSAgICAgICAgb3B0ID0gJ2MnIGlmIF9fZGVidWdfXyBlbHNlICdvJwotICAgICAgICBleHBlY3RlZCA9IHNvcnRlZChbJ19faW5pdF9fLnB5JywgJ19faW5pdF9fLnB5JyArIG9wdCwgJ2Jhci5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFyLnB5JyArIG9wdF0pCisgICAgICAgIGV4cGVjdGVkID0gc29ydGVkKFsnX19pbml0X18ucHknLCAnX19pbml0X18ucHljJywgJ2Jhci5weScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFyLnB5YyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChvcy5saXN0ZGlyKHNlbGYucGtnZGlyKSksIGV4cGVjdGVkKQogCiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfcnVucyhzZWxmKToKQEAgLTMwMSwxMiArMzM1LDUzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoc3ViaW5pdGZuKQogICAgICAgICBzZWxmLmFzc2VydENvbXBpbGVkKGhhbWZuKQogCisgICAgZGVmIHRlc3RfcmVjdXJzaW9uX2xpbWl0KHNlbGYpOgorICAgICAgICBzdWJwYWNrYWdlID0gb3MucGF0aC5qb2luKHNlbGYucGtnZGlyLCAnc3BhbScpCisgICAgICAgIHN1YnBhY2thZ2UyID0gb3MucGF0aC5qb2luKHN1YnBhY2thZ2UsICdoYW0nKQorICAgICAgICBzdWJwYWNrYWdlMyA9IG9zLnBhdGguam9pbihzdWJwYWNrYWdlMiwgJ2VnZ3MnKQorICAgICAgICBmb3IgcGtnIGluIChzdWJwYWNrYWdlLCBzdWJwYWNrYWdlMiwgc3VicGFja2FnZTMpOgorICAgICAgICAgICAgc2NyaXB0X2hlbHBlci5tYWtlX3BrZyhwa2cpCisKKyAgICAgICAgc3ViaW5pdGZuID0gb3MucGF0aC5qb2luKHN1YnBhY2thZ2UsICdfX2luaXRfXy5weScpCisgICAgICAgIGhhbWZuID0gc2NyaXB0X2hlbHBlci5tYWtlX3NjcmlwdChzdWJwYWNrYWdlLCAnaGFtJywgJycpCisgICAgICAgIHNwYW1mbiA9IHNjcmlwdF9oZWxwZXIubWFrZV9zY3JpcHQoc3VicGFja2FnZTIsICdzcGFtJywgJycpCisgICAgICAgIGVnZ2ZuID0gc2NyaXB0X2hlbHBlci5tYWtlX3NjcmlwdChzdWJwYWNrYWdlMywgJ2VnZycsICcnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UnVuT0soJy1xJywgJy1yIDAnLCBzZWxmLnBrZ2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RDb21waWxlZChzdWJpbml0Zm4pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoCisgICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc3VicGFja2FnZSwgJ19fcHljYWNoZV9fJykpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UnVuT0soJy1xJywgJy1yIDEnLCBzZWxmLnBrZ2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRDb21waWxlZChzdWJpbml0Zm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoaGFtZm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q29tcGlsZWQoc3BhbWZuKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UnVuT0soJy1xJywgJy1yIDInLCBzZWxmLnBrZ2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRDb21waWxlZChzdWJpbml0Zm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoaGFtZm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoc3BhbWZuKQorICAgICAgICBzZWxmLmFzc2VydE5vdENvbXBpbGVkKGVnZ2ZuKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UnVuT0soJy1xJywgJy1yIDUnLCBzZWxmLnBrZ2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRDb21waWxlZChzdWJpbml0Zm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoaGFtZm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoc3BhbWZuKQorICAgICAgICBzZWxmLmFzc2VydENvbXBpbGVkKGVnZ2ZuKQorCiAgICAgZGVmIHRlc3RfcXVpZXQoc2VsZik6CiAgICAgICAgIG5vaXN5ID0gc2VsZi5hc3NlcnRSdW5PSyhzZWxmLnBrZ2RpcikKICAgICAgICAgcXVpZXQgPSBzZWxmLmFzc2VydFJ1bk9LKCctcScsIHNlbGYucGtnZGlyKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGInJywgbm9pc3kpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBxdWlldCkKIAorICAgIGRlZiB0ZXN0X3NpbGVudChzZWxmKToKKyAgICAgICAgc2NyaXB0X2hlbHBlci5tYWtlX3NjcmlwdChzZWxmLnBrZ2RpciwgJ2NydW5jaHlmcm9nJywgJ2JhZChzeW50YXgnKQorICAgICAgICBfLCBxdWlldCwgXyA9IHNlbGYuYXNzZXJ0UnVuTm90T0soJy1xJywgc2VsZi5wa2dkaXIpCisgICAgICAgIF8sIHNpbGVudCwgXyA9IHNlbGYuYXNzZXJ0UnVuTm90T0soJy1xcScsIHNlbGYucGtnZGlyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGInJywgcXVpZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBzaWxlbnQpCisKICAgICBkZWYgdGVzdF9yZWdleHAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UnVuT0soJy1xJywgJy14JywgcidiYVteXFwvXSokJywgc2VsZi5wa2dkaXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q29tcGlsZWQoc2VsZi5iYXJmbikKQEAgLTM5OSw2ICs0NzQsMjkgQEAKICAgICAgICAgb3V0ID0gc2VsZi5hc3NlcnRSdW5PSygnYmFkZmlsZW5hbWUnKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dCwgYiJDYW4ndCBsaXN0ICdiYWRmaWxlbmFtZSciKQogCisgICAgQHNraXBVbmxlc3MoX2hhdmVfbXVsdGlwcm9jZXNzaW5nLCAicmVxdWlyZXMgbXVsdGlwcm9jZXNzaW5nIikKKyAgICBkZWYgdGVzdF93b3JrZXJzKHNlbGYpOgorICAgICAgICBiYXIyZm4gPSBzY3JpcHRfaGVscGVyLm1ha2Vfc2NyaXB0KHNlbGYuZGlyZWN0b3J5LCAnYmFyMicsICcnKQorICAgICAgICBmaWxlcyA9IFtdCisgICAgICAgIGZvciBzdWZmaXggaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICBwa2dkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5kaXJlY3RvcnksICdmb297fScuZm9ybWF0KHN1ZmZpeCkpCisgICAgICAgICAgICBvcy5ta2Rpcihwa2dkaXIpCisgICAgICAgICAgICBmbiA9IHNjcmlwdF9oZWxwZXIubWFrZV9zY3JpcHQocGtnZGlyLCAnX19pbml0X18nLCAnJykKKyAgICAgICAgICAgIGZpbGVzLmFwcGVuZChzY3JpcHRfaGVscGVyLm1ha2Vfc2NyaXB0KHBrZ2RpciwgJ2JhcjInLCAnJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSdW5PSyhzZWxmLmRpcmVjdG9yeSwgJy1qJywgJzAnKQorICAgICAgICBzZWxmLmFzc2VydENvbXBpbGVkKGJhcjJmbikKKyAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydENvbXBpbGVkKGZpbGUpCisKKyAgICBAbW9jay5wYXRjaCgnY29tcGlsZWFsbC5jb21waWxlX2RpcicpCisgICAgZGVmIHRlc3Rfd29ya2Vyc19hdmFpbGFibGVfY29yZXMoc2VsZiwgY29tcGlsZV9kaXIpOgorICAgICAgICB3aXRoIG1vY2sucGF0Y2goInN5cy5hcmd2IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldz1bc3lzLmV4ZWN1dGFibGUsIHNlbGYuZGlyZWN0b3J5LCAiLWowIl0pOgorICAgICAgICAgICAgY29tcGlsZWFsbC5tYWluKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21waWxlX2Rpci5jYWxsZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBpbGVfZGlyLmNhbGxfYXJnc1stMV1bJ3dvcmtlcnMnXSwgTm9uZSkKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb25jdXJyZW50X2Z1dHVyZXMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQppbmRleCBjNzRiMmNhLi5iOTk3NDBiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQpAQCAtOSw4ICs5LDkgQEAKICMgd2l0aG91dCB0aHJlYWQgc3VwcG9ydC4KIHRlc3Quc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0aHJlYWRpbmcnKQogCi1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogCitpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCkBAIC00MjUsNiArNDI2LDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2xsZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAiU3RhbGUgcmVmZXJlbmNlIG5vdCBjb2xsZWN0ZWQgd2l0aGluIHRpbWVvdXQuIikKIAorICAgIGRlZiB0ZXN0X21heF93b3JrZXJzX25lZ2F0aXZlKHNlbGYpOgorICAgICAgICBmb3IgbnVtYmVyIGluICgwLCAtMSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWF4X3dvcmtlcnMgbXVzdCBiZSBncmVhdGVyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhhbiAwIik6CisgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRvcl90eXBlKG1heF93b3JrZXJzPW51bWJlcikKKwogCiBjbGFzcyBUaHJlYWRQb29sRXhlY3V0b3JUZXN0KFRocmVhZFBvb2xNaXhpbiwgRXhlY3V0b3JUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfbWFwX3N1Ym1pdHNfd2l0aG91dF9pdGVyYXRpb24oc2VsZik6CkBAIC00MzcsNiArNDQ1LDExIEBACiAgICAgICAgIHNlbGYuZXhlY3V0b3Iuc2h1dGRvd24od2FpdD1UcnVlKQogICAgICAgICBzZWxmLmFzc2VydENvdW50RXF1YWwoZmluaXNoZWQsIHJhbmdlKDEwKSkKIAorICAgIGRlZiB0ZXN0X2RlZmF1bHRfd29ya2VycyhzZWxmKToKKyAgICAgICAgZXhlY3V0b3IgPSBzZWxmLmV4ZWN1dG9yX3R5cGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4ZWN1dG9yLl9tYXhfd29ya2VycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAob3MuY3B1X2NvdW50KCkgb3IgMSkgKiA1KQorCiAKIGNsYXNzIFByb2Nlc3NQb29sRXhlY3V0b3JUZXN0KFByb2Nlc3NQb29sTWl4aW4sIEV4ZWN1dG9yVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2tpbGxlZF9jaGlsZChzZWxmKToKQEAgLTQ1MSw2ICs0NjQsNDggQEAKICAgICAgICAgIyBTdWJtaXR0aW5nIG90aGVyIGpvYnMgZmFpbHMgYXMgd2VsbC4KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnJva2VuUHJvY2Vzc1Bvb2wsIHNlbGYuZXhlY3V0b3Iuc3VibWl0LCBwb3csIDIsIDgpCiAKKyAgICBkZWYgdGVzdF9tYXBfY2h1bmtzaXplKHNlbGYpOgorICAgICAgICBkZWYgYmFkX21hcCgpOgorICAgICAgICAgICAgbGlzdChzZWxmLmV4ZWN1dG9yLm1hcChwb3csIHJhbmdlKDQwKSwgcmFuZ2UoNDApLCBjaHVua3NpemU9LTEpKQorCisgICAgICAgIHJlZiA9IGxpc3QobWFwKHBvdywgcmFuZ2UoNDApLCByYW5nZSg0MCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgbGlzdChzZWxmLmV4ZWN1dG9yLm1hcChwb3csIHJhbmdlKDQwKSwgcmFuZ2UoNDApLCBjaHVua3NpemU9NikpLAorICAgICAgICAgICAgcmVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgbGlzdChzZWxmLmV4ZWN1dG9yLm1hcChwb3csIHJhbmdlKDQwKSwgcmFuZ2UoNDApLCBjaHVua3NpemU9NTApKSwKKyAgICAgICAgICAgIHJlZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGxpc3Qoc2VsZi5leGVjdXRvci5tYXAocG93LCByYW5nZSg0MCksIHJhbmdlKDQwKSwgY2h1bmtzaXplPTQwKSksCisgICAgICAgICAgICByZWYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJhZF9tYXApCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3RfdHJhY2ViYWNrKGNscyk6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigxMjMpICMgc29tZSBjb21tZW50CisKKyAgICBkZWYgdGVzdF90cmFjZWJhY2soc2VsZik6CisgICAgICAgICMgV2Ugd2FudCBlbnN1cmUgdGhhdCB0aGUgdHJhY2ViYWNrIGZyb20gdGhlIGNoaWxkIHByb2Nlc3MgaXMKKyAgICAgICAgIyBjb250YWluZWQgaW4gdGhlIHRyYWNlYmFjayByYWlzZWQgaW4gdGhlIG1haW4gcHJvY2Vzcy4KKyAgICAgICAgZnV0dXJlID0gc2VsZi5leGVjdXRvci5zdWJtaXQoc2VsZi5fdGVzdF90cmFjZWJhY2spCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBjbToKKyAgICAgICAgICAgIGZ1dHVyZS5yZXN1bHQoKQorCisgICAgICAgIGV4YyA9IGNtLmV4Y2VwdGlvbgorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZXhjKSwgUnVudGltZUVycm9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Yy5hcmdzLCAoMTIzLCkpCisgICAgICAgIGNhdXNlID0gZXhjLl9fY2F1c2VfXworICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoY2F1c2UpLCBmdXR1cmVzLnByb2Nlc3MuX1JlbW90ZVRyYWNlYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRJbigncmFpc2UgUnVudGltZUVycm9yKDEyMykgIyBzb21lIGNvbW1lbnQnLCBjYXVzZS50YikKKworICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBmMToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByYWlzZSBleGMKKyAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2soKnN5cy5leGNfaW5mbygpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdyYWlzZSBSdW50aW1lRXJyb3IoMTIzKSAjIHNvbWUgY29tbWVudCcsCisgICAgICAgICAgICAgICAgICAgICAgZjEuZ2V0dmFsdWUoKSkKKwogCiBjbGFzcyBGdXR1cmVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZG9uZV9jYWxsYmFja193aXRoX3Jlc3VsdChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29uZmlncGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKaW5kZXggM2IwMzUwMC4uNzFhOGYzZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKQEAgLTU3OSw3ICs1NzksNyBAQAogICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiZXhwZWN0ZWQgZXhjZXB0aW9uIHR5cGUgJXMuJXMiCi0gICAgICAgICAgICAgICAgICAgICAgJSAoZXhjLl9fbW9kdWxlX18sIGV4Yy5fX25hbWVfXykpCisgICAgICAgICAgICAgICAgICAgICAgJSAoZXhjLl9fbW9kdWxlX18sIGV4Yy5fX3F1YWxuYW1lX18pKQogCiAgICAgZGVmIHRlc3RfYm9vbGVhbihzZWxmKToKICAgICAgICAgY2YgPSBzZWxmLmZyb21zdHJpbmcoCkBAIC0xNTg1LDYgKzE1ODUsMzQgQEAKICAgICAgICAgIiIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIocGFyc2VyWydzZWN0aW9uJ10pLCAnPFNlY3Rpb246IHNlY3Rpb24+JykKIAorICAgIGRlZiB0ZXN0X2luY29uc2lzdGVudF9jb252ZXJ0ZXJzX3N0YXRlKHNlbGYpOgorICAgICAgICBwYXJzZXIgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyKCkKKyAgICAgICAgaW1wb3J0IGRlY2ltYWwKKyAgICAgICAgcGFyc2VyLmNvbnZlcnRlcnNbJ2RlY2ltYWwnXSA9IGRlY2ltYWwuRGVjaW1hbAorICAgICAgICBwYXJzZXIucmVhZF9zdHJpbmcoIiIiCisgICAgICAgICAgICBbczFdCisgICAgICAgICAgICBvbmUgPSAxCisgICAgICAgICAgICBbczJdCisgICAgICAgICAgICB0d28gPSAyCisgICAgICAgICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbignZGVjaW1hbCcsIHBhcnNlci5jb252ZXJ0ZXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5nZXRkZWNpbWFsKCdzMScsICdvbmUnKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuZ2V0ZGVjaW1hbCgnczInLCAndHdvJyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyWydzMSddLmdldGRlY2ltYWwoJ29uZScpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlclsnczInXS5nZXRkZWNpbWFsKCd0d28nKSwgMikKKyAgICAgICAgZGVsIHBhcnNlci5nZXRkZWNpbWFsCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldGRlY2ltYWwoJ3MxJywgJ29uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2RlY2ltYWwnLCBwYXJzZXIuY29udmVydGVycykKKyAgICAgICAgZGVsIHBhcnNlci5jb252ZXJ0ZXJzWydkZWNpbWFsJ10KKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignZGVjaW1hbCcsIHBhcnNlci5jb252ZXJ0ZXJzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRkZWNpbWFsKCdzMScsICdvbmUnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlclsnczEnXS5nZXRkZWNpbWFsKCdvbmUnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlclsnczInXS5nZXRkZWNpbWFsKCd0d28nKQorCiAKIGNsYXNzIEV4Y2VwdGlvblBpY2tsaW5nVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIlRlc3RzIGZvciBpc3N1ZSAjMTM3NjA6IENvbmZpZ1BhcnNlciBleGNlcHRpb25zIGFyZSBub3QgcGlja2xhYmxlLiIiIgpAQCAtMTc3Nyw1ICsxODA1LDI1MiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2szJ10sICd2MzsjLy9zdGlsbCB2MyMgYW5kIHN0aWxsIHYzJykKIAogCitjbGFzcyBFeGNlcHRpb25Db250ZXh0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIiBUZXN0IHRoYXQgaW1wbGVtZW50YXRpb24gZGV0YWlscyBkb2Vzbid0IGxlYWsKKyAgICB0aHJvdWdoIHJhaXNpbmcgZXhjZXB0aW9ucy4gIiIiCisKKyAgICBkZWYgdGVzdF9nZXRfYmFzaWNfaW50ZXJwb2xhdGlvbihzZWxmKToKKyAgICAgICAgcGFyc2VyID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCisgICAgICAgIHBhcnNlci5yZWFkX3N0cmluZygiIiIKKyAgICAgICAgW1BhdGhzXQorICAgICAgICBob21lX2RpcjogL1VzZXJzCisgICAgICAgIG15X2RpcjogJShob21lX2RpcjEpcy9sdW1iZXJqYWNrCisgICAgICAgIG15X3BpY3R1cmVzOiAlKG15X2RpcilzL1BpY3R1cmVzCisgICAgICAgICIiIikKKyAgICAgICAgY20gPSBzZWxmLmFzc2VydFJhaXNlcyhjb25maWdwYXJzZXIuSW50ZXJwb2xhdGlvbk1pc3NpbmdPcHRpb25FcnJvcikKKyAgICAgICAgd2l0aCBjbToKKyAgICAgICAgICAgIHBhcnNlci5nZXQoJ1BhdGhzJywgJ215X2RpcicpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoY20uZXhjZXB0aW9uLl9fc3VwcHJlc3NfY29udGV4dF9fLCBUcnVlKQorCisgICAgZGVmIHRlc3RfZ2V0X2V4dGVuZGVkX2ludGVycG9sYXRpb24oc2VsZik6CisgICAgICAgIHBhcnNlciA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoCisgICAgICAgICAgaW50ZXJwb2xhdGlvbj1jb25maWdwYXJzZXIuRXh0ZW5kZWRJbnRlcnBvbGF0aW9uKCkpCisgICAgICAgIHBhcnNlci5yZWFkX3N0cmluZygiIiIKKyAgICAgICAgW1BhdGhzXQorICAgICAgICBob21lX2RpcjogL1VzZXJzCisgICAgICAgIG15X2RpcjogJHtob21lX2RpcjF9L2x1bWJlcmphY2sKKyAgICAgICAgbXlfcGljdHVyZXM6ICR7bXlfZGlyfS9QaWN0dXJlcworICAgICAgICAiIiIpCisgICAgICAgIGNtID0gc2VsZi5hc3NlcnRSYWlzZXMoY29uZmlncGFyc2VyLkludGVycG9sYXRpb25NaXNzaW5nT3B0aW9uRXJyb3IpCisgICAgICAgIHdpdGggY206CisgICAgICAgICAgICBwYXJzZXIuZ2V0KCdQYXRocycsICdteV9kaXInKQorICAgICAgICBzZWxmLmFzc2VydElzKGNtLmV4Y2VwdGlvbi5fX3N1cHByZXNzX2NvbnRleHRfXywgVHJ1ZSkKKworICAgIGRlZiB0ZXN0X21pc3Npbmdfb3B0aW9ucyhzZWxmKToKKyAgICAgICAgcGFyc2VyID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCisgICAgICAgIHBhcnNlci5yZWFkX3N0cmluZygiIiIKKyAgICAgICAgW1BhdGhzXQorICAgICAgICBob21lX2RpcjogL1VzZXJzCisgICAgICAgICIiIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhjb25maWdwYXJzZXIuTm9TZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcGFyc2VyLm9wdGlvbnMoJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzKGNtLmV4Y2VwdGlvbi5fX3N1cHByZXNzX2NvbnRleHRfXywgVHJ1ZSkKKworICAgIGRlZiB0ZXN0X21pc3Npbmdfc2VjdGlvbihzZWxmKToKKyAgICAgICAgY29uZmlnID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoY29uZmlncGFyc2VyLk5vU2VjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGNvbmZpZy5zZXQoJ1NlY3Rpb24xJywgJ2FuX2ludCcsICcxNScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoY20uZXhjZXB0aW9uLl9fc3VwcHJlc3NfY29udGV4dF9fLCBUcnVlKQorCisgICAgZGVmIHRlc3RfcmVtb3ZlX29wdGlvbihzZWxmKToKKyAgICAgICAgY29uZmlnID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoY29uZmlncGFyc2VyLk5vU2VjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGNvbmZpZy5yZW1vdmVfb3B0aW9uKCdTZWN0aW9uMScsICdhbl9pbnQnKQorICAgICAgICBzZWxmLmFzc2VydElzKGNtLmV4Y2VwdGlvbi5fX3N1cHByZXNzX2NvbnRleHRfXywgVHJ1ZSkKKworCitjbGFzcyBDb252ZXJ0ZXJzVGVzdENhc2UoQmFzaWNUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkludHJvZHVjZWQgaW4gMy41LCBpc3N1ZSAjMTgxNTkuIiIiCisKKyAgICBjb25maWdfY2xhc3MgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyCisKKyAgICBkZWYgbmV3Y29uZmlnKHNlbGYsIGRlZmF1bHRzPU5vbmUpOgorICAgICAgICBpbnN0YW5jZSA9IHN1cGVyKCkubmV3Y29uZmlnKGRlZmF1bHRzPWRlZmF1bHRzKQorICAgICAgICBpbnN0YW5jZS5jb252ZXJ0ZXJzWydsaXN0J10gPSBsYW1iZGEgdjogW2Uuc3RyaXAoKSBmb3IgZSBpbiB2LnNwbGl0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlLnN0cmlwKCldCisgICAgICAgIHJldHVybiBpbnN0YW5jZQorCisgICAgZGVmIHRlc3RfY29udmVydGVycyhzZWxmKToKKyAgICAgICAgY2ZnID0gc2VsZi5uZXdjb25maWcoKQorICAgICAgICBzZWxmLmFzc2VydEluKCdib29sZWFuJywgY2ZnLmNvbnZlcnRlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpc3QnLCBjZmcuY29udmVydGVycykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2ZnLmNvbnZlcnRlcnNbJ2ludCddKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjZmcuY29udmVydGVyc1snZmxvYXQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2ZnLmNvbnZlcnRlcnNbJ2Jvb2xlYW4nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoY2ZnLmNvbnZlcnRlcnNbJ2xpc3QnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2ZnLmNvbnZlcnRlcnMpLCA0KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgY2ZnLmNvbnZlcnRlcnNbJyddID0gbGFtYmRhIHY6IHYKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGNmZy5jb252ZXJ0ZXJzW05vbmVdID0gbGFtYmRhIHY6IHYKKyAgICAgICAgY2ZnLnJlYWRfc3RyaW5nKCIiIgorICAgICAgICBbc10KKyAgICAgICAgc3RyID0gc3RyaW5nCisgICAgICAgIGludCA9IDEKKyAgICAgICAgZmxvYXQgPSAwLjUKKyAgICAgICAgbGlzdCA9IGEgYiBjIGQgZSBmIGcKKyAgICAgICAgYm9vbCA9IHllcworICAgICAgICAiIiIpCisgICAgICAgIHMgPSBjZmdbJ3MnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ3N0ciddLCAnc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydpbnQnXSwgJzEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2Zsb2F0J10sICcwLjUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2xpc3QnXSwgJ2EgYiBjIGQgZSBmIGcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2Jvb2wnXSwgJ3llcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldCgncycsICdzdHInKSwgJ3N0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldCgncycsICdpbnQnKSwgJzEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXQoJ3MnLCAnZmxvYXQnKSwgJzAuNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldCgncycsICdsaXN0JyksICdhIGIgYyBkIGUgZiBnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0KCdzJywgJ2Jvb2wnKSwgJ3llcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldCgncycsICdzdHInKSwgJ3N0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGludCgncycsICdpbnQnKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0ZmxvYXQoJ3MnLCAnZmxvYXQnKSwgMC41KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsaXN0KCdzJywgJ2xpc3QnKSwgWydhJywgJ2InLCAnYycsICdkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZScsICdmJywgJ2cnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0Ym9vbGVhbigncycsICdib29sJyksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXQoJ3N0cicpLCAnc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldGludCgnaW50JyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXRmbG9hdCgnZmxvYXQnKSwgMC41KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0bGlzdCgnbGlzdCcpLCBbJ2EnLCAnYicsICdjJywgJ2QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2UnLCAnZicsICdnJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXRib29sZWFuKCdib29sJyksIFRydWUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgY2ZnLmdldGRlY2ltYWwoJ3MnLCAnZmxvYXQnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHMuZ2V0ZGVjaW1hbCgnZmxvYXQnKQorICAgICAgICBpbXBvcnQgZGVjaW1hbAorICAgICAgICBjZmcuY29udmVydGVyc1snZGVjaW1hbCddID0gZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2RlY2ltYWwnLCBjZmcuY29udmVydGVycykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoY2ZnLmNvbnZlcnRlcnNbJ2RlY2ltYWwnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2ZnLmNvbnZlcnRlcnMpLCA1KQorICAgICAgICBkZWMwXzUgPSBkZWNpbWFsLkRlY2ltYWwoJzAuNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGRlY2ltYWwoJ3MnLCAnZmxvYXQnKSwgZGVjMF81KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0ZGVjaW1hbCgnZmxvYXQnKSwgZGVjMF81KQorICAgICAgICBkZWwgY2ZnLmNvbnZlcnRlcnNbJ2RlY2ltYWwnXQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdkZWNpbWFsJywgY2ZnLmNvbnZlcnRlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNmZy5jb252ZXJ0ZXJzKSwgNCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBjZmcuZ2V0ZGVjaW1hbCgncycsICdmbG9hdCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcy5nZXRkZWNpbWFsKCdmbG9hdCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgZGVsIGNmZy5jb252ZXJ0ZXJzWydkZWNpbWFsJ10KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBkZWwgY2ZnLmNvbnZlcnRlcnNbJyddCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgZGVsIGNmZy5jb252ZXJ0ZXJzW05vbmVdCisKKworY2xhc3MgQmxhdGFudE92ZXJyaWRlQ29udmVydGVyc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJXaGF0IGlmIHNvbWVib2R5IG92ZXJyb2RlIGEgZ2V0Ym9vbGVhbigpPyBXZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGluCisgICAgdGhpcyBjYXNlIHRoZSBhdXRvbWF0aWMgY29udmVydGVycyBkbyBub3Qga2ljayBpbi4iIiIKKworICAgIGNvbmZpZyA9ICIiIgorICAgICAgICBbb25lXQorICAgICAgICBvbmUgPSBmYWxzZQorICAgICAgICB0d28gPSBmYWxzZQorICAgICAgICB0aHJlZSA9IGxvbmcgc3Rvcnkgc2hvcnQKKworICAgICAgICBbdHdvXQorICAgICAgICBvbmUgPSBmYWxzZQorICAgICAgICB0d28gPSBmYWxzZQorICAgICAgICB0aHJlZSA9IGZvdXIKKyAgICAiIiIKKworICAgIGRlZiB0ZXN0X2NvbnZlcnRlcnNfYXRfaW5pdChzZWxmKToKKyAgICAgICAgY2ZnID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcihjb252ZXJ0ZXJzPXsnbGVuJzogbGVufSkKKyAgICAgICAgY2ZnLnJlYWRfc3RyaW5nKHNlbGYuY29uZmlnKQorICAgICAgICBzZWxmLl90ZXN0X2xlbihjZmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGNmZy5jb252ZXJ0ZXJzWydsZW4nXSkKKworICAgIGRlZiB0ZXN0X2luaGVyaXRhbmNlKHNlbGYpOgorICAgICAgICBjbGFzcyBTdHJhbmdlQ29uZmlnUGFyc2VyKGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIpOgorICAgICAgICAgICAgZ2V0dHlzYnVyZyA9ICdhIGhpc3RvcmljIGJvcm91Z2ggaW4gc291dGggY2VudHJhbCBQZW5uc3lsdmFuaWEnCisKKyAgICAgICAgICAgIGRlZiBnZXRib29sZWFuKHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1jb25maWdwYXJzZXIuX1VOU0VUKToKKyAgICAgICAgICAgICAgICBpZiBzZWN0aW9uID09IG9wdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5nZXRib29sZWFuKHNlY3Rpb24sIG9wdGlvbiwgcmF3PXJhdywgdmFycz12YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9ZmFsbGJhY2spCisgICAgICAgICAgICBkZWYgZ2V0bGVuKHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPWNvbmZpZ3BhcnNlci5fVU5TRVQpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfY29udihzZWN0aW9uLCBvcHRpb24sIGxlbiwgcmF3PXJhdywgdmFycz12YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1mYWxsYmFjaykKKworICAgICAgICBjZmcgPSBTdHJhbmdlQ29uZmlnUGFyc2VyKCkKKyAgICAgICAgY2ZnLnJlYWRfc3RyaW5nKHNlbGYuY29uZmlnKQorICAgICAgICBzZWxmLl90ZXN0X2xlbihjZmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNmZy5jb252ZXJ0ZXJzWydsZW4nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNmZy5nZXRib29sZWFuKCdvbmUnLCAnb25lJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZmcuZ2V0Ym9vbGVhbigndHdvJywgJ3R3bycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNmZy5nZXRib29sZWFuKCdvbmUnLCAndHdvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2ZnLmdldGJvb2xlYW4oJ3R3bycsICdvbmUnKSkKKyAgICAgICAgY2ZnLmNvbnZlcnRlcnNbJ2Jvb2xlYW4nXSA9IGNmZy5fY29udmVydF90b19ib29sZWFuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2ZnLmdldGJvb2xlYW4oJ29uZScsICdvbmUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjZmcuZ2V0Ym9vbGVhbigndHdvJywgJ3R3bycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNmZy5nZXRib29sZWFuKCdvbmUnLCAndHdvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2ZnLmdldGJvb2xlYW4oJ3R3bycsICdvbmUnKSkKKworICAgIGRlZiBfdGVzdF9sZW4oc2VsZiwgY2ZnKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2ZnLmNvbnZlcnRlcnMpLCA0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdib29sZWFuJywgY2ZnLmNvbnZlcnRlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xlbicsIGNmZy5jb252ZXJ0ZXJzKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCd0eXNidXJnJywgY2ZnLmNvbnZlcnRlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNmZy5jb252ZXJ0ZXJzWydpbnQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2ZnLmNvbnZlcnRlcnNbJ2Zsb2F0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNmZy5jb252ZXJ0ZXJzWydib29sZWFuJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGxlbignb25lJywgJ29uZScpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsZW4oJ29uZScsICd0d28nKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0bGVuKCdvbmUnLCAndGhyZWUnKSwgMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGxlbigndHdvJywgJ29uZScpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsZW4oJ3R3bycsICd0d28nKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0bGVuKCd0d28nLCAndGhyZWUnKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0bGVuKCd0d28nLCAnZm91cicsIGZhbGxiYWNrPTApLCAwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNvbmZpZ3BhcnNlci5Ob09wdGlvbkVycm9yKToKKyAgICAgICAgICAgIGNmZy5nZXRsZW4oJ3R3bycsICdmb3VyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmdbJ29uZSddLmdldGxlbignb25lJyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnWydvbmUnXS5nZXRsZW4oJ3R3bycpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZ1snb25lJ10uZ2V0bGVuKCd0aHJlZScpLCAxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmdbJ3R3byddLmdldGxlbignb25lJyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnWyd0d28nXS5nZXRsZW4oJ3R3bycpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZ1sndHdvJ10uZ2V0bGVuKCd0aHJlZScpLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZ1sndHdvJ10uZ2V0bGVuKCdmb3VyJywgMCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnWyd0d28nXS5nZXRsZW4oJ2ZvdXInKSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2luc3RhbmNlX2Fzc2lnbm1lbnQoc2VsZik6CisgICAgICAgIGNmZyA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoKQorICAgICAgICBjZmcuZ2V0Ym9vbGVhbiA9IGxhbWJkYSBzZWN0aW9uLCBvcHRpb246IFRydWUKKyAgICAgICAgY2ZnLmdldGxlbiA9IGxhbWJkYSBzZWN0aW9uLCBvcHRpb246IGxlbihjZmdbc2VjdGlvbl1bb3B0aW9uXSkKKyAgICAgICAgY2ZnLnJlYWRfc3RyaW5nKHNlbGYuY29uZmlnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjZmcuY29udmVydGVycyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Jvb2xlYW4nLCBjZmcuY29udmVydGVycykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbGVuJywgY2ZnLmNvbnZlcnRlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNmZy5jb252ZXJ0ZXJzWydpbnQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2ZnLmNvbnZlcnRlcnNbJ2Zsb2F0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNmZy5jb252ZXJ0ZXJzWydib29sZWFuJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZmcuZ2V0Ym9vbGVhbignb25lJywgJ29uZScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2ZnLmdldGJvb2xlYW4oJ3R3bycsICd0d28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNmZy5nZXRib29sZWFuKCdvbmUnLCAndHdvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZmcuZ2V0Ym9vbGVhbigndHdvJywgJ29uZScpKQorICAgICAgICBjZmcuY29udmVydGVyc1snYm9vbGVhbiddID0gY2ZnLl9jb252ZXJ0X3RvX2Jvb2xlYW4KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjZmcuZ2V0Ym9vbGVhbignb25lJywgJ29uZScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNmZy5nZXRib29sZWFuKCd0d28nLCAndHdvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2ZnLmdldGJvb2xlYW4oJ29uZScsICd0d28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjZmcuZ2V0Ym9vbGVhbigndHdvJywgJ29uZScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsZW4oJ29uZScsICdvbmUnKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0bGVuKCdvbmUnLCAndHdvJyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGxlbignb25lJywgJ3RocmVlJyksIDE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsZW4oJ3R3bycsICdvbmUnKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0bGVuKCd0d28nLCAndHdvJyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGxlbigndHdvJywgJ3RocmVlJyksIDQpCisgICAgICAgICMgSWYgYSBnZXR0ZXIgaW1wbCBpcyBhc3NpZ25lZCBzdHJhaWdodCB0byB0aGUgaW5zdGFuY2UsIGl0IHdvbid0CisgICAgICAgICMgYmUgYXZhaWxhYmxlIG9uIHRoZSBzZWN0aW9uIHByb3hpZXMuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmdbJ29uZSddLmdldGxlbignb25lJyksIDUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmdbJ3R3byddLmdldGxlbignb25lJyksIDUpCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29udGFpbnMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbnRhaW5zLnB5CmluZGV4IGE2NjdhMTYuLjNjNmJkZWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29udGFpbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb250YWlucy5weQpAQCAtMSw1ICsxLDQgQEAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiBpbXBvcnQgdW5pdHRlc3QKIAogCkBAIC04Niw4ICs4NSw1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29udGFpbmVyID09IGNvbnRhaW5lcikKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFRlc3RDb250YWlucykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5CmluZGV4IDI2Njk2NTEuLjMwYTYzNzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkKQEAgLTgzLDYgKzgzLDQyIEBACiAgICAgICAgICAgICByYWlzZSBaZXJvRGl2aXNpb25FcnJvcig5OTkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGUsIFsxLCA0MiwgOTk5XSkKIAorICAgIGRlZiB0ZXN0X2NvbnRleHRtYW5hZ2VyX2V4Y2VwdF9zdG9waXRlcihzZWxmKToKKyAgICAgICAgc3RvcF9leGMgPSBTdG9wSXRlcmF0aW9uKCdzcGFtJykKKyAgICAgICAgQGNvbnRleHRtYW5hZ2VyCisgICAgICAgIGRlZiB3b29ob28oKToKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RvcEl0ZXJhdGlvbiIpOgorICAgICAgICAgICAgICAgIHdpdGggd29vaG9vKCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHN0b3BfZXhjCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXg6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGV4LCBzdG9wX2V4YykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgc3VwcHJlc3NlZCcpCisKKyAgICBkZWYgdGVzdF9jb250ZXh0bWFuYWdlcl9leGNlcHRfcGVwNDc5KHNlbGYpOgorICAgICAgICBjb2RlID0gIiIiXAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBnZW5lcmF0b3Jfc3RvcAorZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgorQGNvbnRleHRtYW5hZ2VyCitkZWYgd29vaG9vKCk6CisgICAgeWllbGQKKyIiIgorICAgICAgICBsb2NhbHMgPSB7fQorICAgICAgICBleGVjKGNvZGUsIGxvY2FscywgbG9jYWxzKQorICAgICAgICB3b29ob28gPSBsb2NhbHNbJ3dvb2hvbyddCisKKyAgICAgICAgc3RvcF9leGMgPSBTdG9wSXRlcmF0aW9uKCdzcGFtJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCB3b29ob28oKToKKyAgICAgICAgICAgICAgICByYWlzZSBzdG9wX2V4YworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhleCwgc3RvcF9leGMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BJdGVyYXRpb24gd2FzIHN1cHByZXNzZWQnKQorCiAgICAgZGVmIF9jcmVhdGVfY29udGV4dG1hbmFnZXJfYXR0cmlicyhzZWxmKToKICAgICAgICAgZGVmIGF0dHJpYnMoKiprdyk6CiAgICAgICAgICAgICBkZWYgZGVjb3JhdGUoZnVuYyk6CkBAIC03MjYsNjAgKzc2Miw3NiBAQAogICAgICAgICBzdGFjay5wdXNoKGNtKQogICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0sIGNtKQogCi1jbGFzcyBUZXN0UmVkaXJlY3RTdGRvdXQodW5pdHRlc3QuVGVzdENhc2UpOgorCitjbGFzcyBUZXN0UmVkaXJlY3RTdHJlYW06CisKKyAgICByZWRpcmVjdF9zdHJlYW0gPSBOb25lCisgICAgb3JpZ19zdHJlYW0gPSBOb25lCiAKICAgICBAc3VwcG9ydC5yZXF1aXJlc19kb2NzdHJpbmdzCiAgICAgZGVmIHRlc3RfaW5zdGFuY2VfZG9jcyhzZWxmKToKICAgICAgICAgIyBJc3N1ZSAxOTMzMDogZW5zdXJlIGNvbnRleHQgbWFuYWdlciBpbnN0YW5jZXMgaGF2ZSBnb29kIGRvY3N0cmluZ3MKLSAgICAgICAgY21fZG9jc3RyaW5nID0gcmVkaXJlY3Rfc3Rkb3V0Ll9fZG9jX18KLSAgICAgICAgb2JqID0gcmVkaXJlY3Rfc3Rkb3V0KE5vbmUpCisgICAgICAgIGNtX2RvY3N0cmluZyA9IHNlbGYucmVkaXJlY3Rfc3RyZWFtLl9fZG9jX18KKyAgICAgICAgb2JqID0gc2VsZi5yZWRpcmVjdF9zdHJlYW0oTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmouX19kb2NfXywgY21fZG9jc3RyaW5nKQogCiAgICAgZGVmIHRlc3Rfbm9fcmVkaXJlY3RfaW5faW5pdChzZWxmKToKLSAgICAgICAgb3JpZ19zdGRvdXQgPSBzeXMuc3Rkb3V0Ci0gICAgICAgIHJlZGlyZWN0X3N0ZG91dChOb25lKQotICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5zdGRvdXQsIG9yaWdfc3Rkb3V0KQorICAgICAgICBvcmlnX3N0ZG91dCA9IGdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKQorICAgICAgICBzZWxmLnJlZGlyZWN0X3N0cmVhbShOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzKGdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKSwgb3JpZ19zdGRvdXQpCiAKICAgICBkZWYgdGVzdF9yZWRpcmVjdF90b19zdHJpbmdfaW8oc2VsZik6CiAgICAgICAgIGYgPSBpby5TdHJpbmdJTygpCiAgICAgICAgIG1zZyA9ICJDb25zaWRlciBhbiBBUEkgbGlrZSBoZWxwKCksIHdoaWNoIHByaW50cyBkaXJlY3RseSB0byBzdGRvdXQiCi0gICAgICAgIG9yaWdfc3Rkb3V0ID0gc3lzLnN0ZG91dAotICAgICAgICB3aXRoIHJlZGlyZWN0X3N0ZG91dChmKToKLSAgICAgICAgICAgIHByaW50KG1zZykKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhzeXMuc3Rkb3V0LCBvcmlnX3N0ZG91dCkKKyAgICAgICAgb3JpZ19zdGRvdXQgPSBnZXRhdHRyKHN5cywgc2VsZi5vcmlnX3N0cmVhbSkKKyAgICAgICAgd2l0aCBzZWxmLnJlZGlyZWN0X3N0cmVhbShmKToKKyAgICAgICAgICAgIHByaW50KG1zZywgZmlsZT1nZXRhdHRyKHN5cywgc2VsZi5vcmlnX3N0cmVhbSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZ2V0YXR0cihzeXMsIHNlbGYub3JpZ19zdHJlYW0pLCBvcmlnX3N0ZG91dCkKICAgICAgICAgcyA9IGYuZ2V0dmFsdWUoKS5zdHJpcCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgbXNnKQogCiAgICAgZGVmIHRlc3RfZW50ZXJfcmVzdWx0X2lzX3RhcmdldChzZWxmKToKICAgICAgICAgZiA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgd2l0aCByZWRpcmVjdF9zdGRvdXQoZikgYXMgZW50ZXJfcmVzdWx0OgorICAgICAgICB3aXRoIHNlbGYucmVkaXJlY3Rfc3RyZWFtKGYpIGFzIGVudGVyX3Jlc3VsdDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZW50ZXJfcmVzdWx0LCBmKQogCiAgICAgZGVmIHRlc3RfY21faXNfcmV1c2FibGUoc2VsZik6CiAgICAgICAgIGYgPSBpby5TdHJpbmdJTygpCi0gICAgICAgIHdyaXRlX3RvX2YgPSByZWRpcmVjdF9zdGRvdXQoZikKLSAgICAgICAgb3JpZ19zdGRvdXQgPSBzeXMuc3Rkb3V0CisgICAgICAgIHdyaXRlX3RvX2YgPSBzZWxmLnJlZGlyZWN0X3N0cmVhbShmKQorICAgICAgICBvcmlnX3N0ZG91dCA9IGdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKQogICAgICAgICB3aXRoIHdyaXRlX3RvX2Y6Ci0gICAgICAgICAgICBwcmludCgiSGVsbG8iLCBlbmQ9IiAiKQorICAgICAgICAgICAgcHJpbnQoIkhlbGxvIiwgZW5kPSIgIiwgZmlsZT1nZXRhdHRyKHN5cywgc2VsZi5vcmlnX3N0cmVhbSkpCiAgICAgICAgIHdpdGggd3JpdGVfdG9fZjoKLSAgICAgICAgICAgIHByaW50KCJXb3JsZCEiKQotICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5zdGRvdXQsIG9yaWdfc3Rkb3V0KQorICAgICAgICAgICAgcHJpbnQoIldvcmxkISIsIGZpbGU9Z2V0YXR0cihzeXMsIHNlbGYub3JpZ19zdHJlYW0pKQorICAgICAgICBzZWxmLmFzc2VydElzKGdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKSwgb3JpZ19zdGRvdXQpCiAgICAgICAgIHMgPSBmLmdldHZhbHVlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCAiSGVsbG8gV29ybGQhXG4iKQogCiAgICAgZGVmIHRlc3RfY21faXNfcmVlbnRyYW50KHNlbGYpOgogICAgICAgICBmID0gaW8uU3RyaW5nSU8oKQotICAgICAgICB3cml0ZV90b19mID0gcmVkaXJlY3Rfc3Rkb3V0KGYpCi0gICAgICAgIG9yaWdfc3Rkb3V0ID0gc3lzLnN0ZG91dAorICAgICAgICB3cml0ZV90b19mID0gc2VsZi5yZWRpcmVjdF9zdHJlYW0oZikKKyAgICAgICAgb3JpZ19zdGRvdXQgPSBnZXRhdHRyKHN5cywgc2VsZi5vcmlnX3N0cmVhbSkKICAgICAgICAgd2l0aCB3cml0ZV90b19mOgotICAgICAgICAgICAgcHJpbnQoIkhlbGxvIiwgZW5kPSIgIikKKyAgICAgICAgICAgIHByaW50KCJIZWxsbyIsIGVuZD0iICIsIGZpbGU9Z2V0YXR0cihzeXMsIHNlbGYub3JpZ19zdHJlYW0pKQogICAgICAgICAgICAgd2l0aCB3cml0ZV90b19mOgotICAgICAgICAgICAgICAgIHByaW50KCJXb3JsZCEiKQotICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5zdGRvdXQsIG9yaWdfc3Rkb3V0KQorICAgICAgICAgICAgICAgIHByaW50KCJXb3JsZCEiLCBmaWxlPWdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhnZXRhdHRyKHN5cywgc2VsZi5vcmlnX3N0cmVhbSksIG9yaWdfc3Rkb3V0KQogICAgICAgICBzID0gZi5nZXR2YWx1ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgIkhlbGxvIFdvcmxkIVxuIikKIAogCitjbGFzcyBUZXN0UmVkaXJlY3RTdGRvdXQoVGVzdFJlZGlyZWN0U3RyZWFtLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICByZWRpcmVjdF9zdHJlYW0gPSByZWRpcmVjdF9zdGRvdXQKKyAgICBvcmlnX3N0cmVhbSA9ICJzdGRvdXQiCisKKworY2xhc3MgVGVzdFJlZGlyZWN0U3RkZXJyKFRlc3RSZWRpcmVjdFN0cmVhbSwgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgcmVkaXJlY3Rfc3RyZWFtID0gcmVkaXJlY3Rfc3RkZXJyCisgICAgb3JpZ19zdHJlYW0gPSAic3RkZXJyIgorCisKIGNsYXNzIFRlc3RTdXBwcmVzcyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBAc3VwcG9ydC5yZXF1aXJlc19kb2NzdHJpbmdzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvcHkucHkgYi9MaWIvdGVzdC90ZXN0X2NvcHkucHkKaW5kZXggMGM1MzU0Yy4uNDEwN2U4YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb3B5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29weS5weQpAQCAtNyw3ICs3LDYgQEAKIGZyb20gb3BlcmF0b3IgaW1wb3J0IGxlLCBsdCwgZ2UsIGd0LCBlcSwgbmUKIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogb3JkZXJfY29tcGFyaXNvbnMgPSBsZSwgbHQsIGdlLCBndAogZXF1YWxpdHlfY29tcGFyaXNvbnMgPSBlcSwgbmUKQEAgLTE0Niw2ICsxNDUsNDAgQEAKICAgICAgICAgeCA9IEMoNDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29weS5jb3B5KHgpLCB4KQogCisgICAgZGVmIHRlc3RfY29weV9pbnN0X2dldG5ld2FyZ3Moc2VsZik6CisgICAgICAgIGNsYXNzIEMoaW50KToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgZm9vKToKKyAgICAgICAgICAgICAgICBzZWxmID0gaW50Ll9fbmV3X18oY2xzKQorICAgICAgICAgICAgICAgIHNlbGYuZm9vID0gZm9vCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX2dldG5ld2FyZ3NfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5mb28sCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5mb28gPT0gb3RoZXIuZm9vCisgICAgICAgIHggPSBDKDQyKQorICAgICAgICB5ID0gY29weS5jb3B5KHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh5LCBDKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LmZvbywgeC5mb28pCisKKyAgICBkZWYgdGVzdF9jb3B5X2luc3RfZ2V0bmV3YXJnc19leChzZWxmKToKKyAgICAgICAgY2xhc3MgQyhpbnQpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCAqLCBmb28pOgorICAgICAgICAgICAgICAgIHNlbGYgPSBpbnQuX19uZXdfXyhjbHMpCisgICAgICAgICAgICAgICAgc2VsZi5mb28gPSBmb28KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fZ2V0bmV3YXJnc19leF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAoKSwgeydmb28nOiBzZWxmLmZvb30KKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmZvbyA9PSBvdGhlci5mb28KKyAgICAgICAgeCA9IEMoZm9vPTQyKQorICAgICAgICB5ID0gY29weS5jb3B5KHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh5LCBDKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LmZvbywgeC5mb28pCisKICAgICBkZWYgdGVzdF9jb3B5X2luc3RfZ2V0c3RhdGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZm9vKToKQEAgLTI5Nyw3ICszMzAsNyBAQAogICAgICAgICB4LmFwcGVuZCh4KQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBmb3Igb3AgaW4gY29tcGFyaXNvbnM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wLCB5LCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIG9wLCB5LCB4KQogICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoeVswXSwgeSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oeSksIDEpCkBAIC0zMjQsNyArMzU3LDcgQEAKICAgICAgICAgeFswXS5hcHBlbmQoeCkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgZm9yIG9wIGluIGNvbXBhcmlzb25zOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcCwgeSwgeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBvcCwgeSwgeCkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQogICAgICAgICBzZWxmLmFzc2VydElzTm90KHlbMF0sIHhbMF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoeVswXVswXSwgeSkKQEAgLTM0Myw3ICszNzYsNyBAQAogICAgICAgICBmb3Igb3AgaW4gb3JkZXJfY29tcGFyaXNvbnM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wLCB5LCB4KQogICAgICAgICBmb3Igb3AgaW4gZXF1YWxpdHlfY29tcGFyaXNvbnM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wLCB5LCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIG9wLCB5LCB4KQogICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoeVsnZm9vJ10sIHkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHkpLCAxKQpAQCAtNDA4LDYgKzQ0MSw0MiBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeS5mb28sIHguZm9vKQogCisgICAgZGVmIHRlc3RfZGVlcGNvcHlfaW5zdF9nZXRuZXdhcmdzKHNlbGYpOgorICAgICAgICBjbGFzcyBDKGludCk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIGZvbyk6CisgICAgICAgICAgICAgICAgc2VsZiA9IGludC5fX25ld19fKGNscykKKyAgICAgICAgICAgICAgICBzZWxmLmZvbyA9IGZvbworICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19nZXRuZXdhcmdzX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZm9vLAorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZm9vID09IG90aGVyLmZvbworICAgICAgICB4ID0gQyhbNDJdKQorICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoeSwgQykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeS5mb28sIHguZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKKworICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3RfZ2V0bmV3YXJnc19leChzZWxmKToKKyAgICAgICAgY2xhc3MgQyhpbnQpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCAqLCBmb28pOgorICAgICAgICAgICAgICAgIHNlbGYgPSBpbnQuX19uZXdfXyhjbHMpCisgICAgICAgICAgICAgICAgc2VsZi5mb28gPSBmb28KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fZ2V0bmV3YXJnc19leF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAoKSwgeydmb28nOiBzZWxmLmZvb30KKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmZvbyA9PSBvdGhlci5mb28KKyAgICAgICAgeCA9IEMoZm9vPVs0Ml0pCisgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh5LCBDKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LmZvbywgeC5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeS5mb28sIHguZm9vKQorCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfaW5zdF9nZXRzdGF0ZShzZWxmKToKICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmb28pOgpAQCAtNzYxLDggKzgzMCw1IEBACiAKIGRlZiBnbG9iYWxfZm9vKHgsIHkpOiByZXR1cm4geCt5CiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0Q29weSkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb3B5cmVnLnB5IGIvTGliL3Rlc3QvdGVzdF9jb3B5cmVnLnB5CmluZGV4IGFiZTA3NDguLjUyZTg4N2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29weXJlZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvcHlyZWcucHkKQEAgLTEsNyArMSw2IEBACiBpbXBvcnQgY29weXJlZwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnBpY2tsZXRlc3RlciBpbXBvcnQgRXh0ZW5zaW9uU2F2ZXIKIAogY2xhc3MgQzoKQEAgLTExMyw5ICsxMTIsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWQpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENvcHlSZWdUZXN0Q2FzZSkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Nvcm91dGluZXMucHkgYi9MaWIvdGVzdC90ZXN0X2Nvcm91dGluZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdjMWNkZgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfY29yb3V0aW5lcy5weQpAQCAtMCwwICsxLDE1MDMgQEAKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgY29weQoraW1wb3J0IGluc3BlY3QKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBzeXMKK2ltcG9ydCB0eXBlcworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisKK2NsYXNzIEFzeW5jWWllbGRGcm9tOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmopOgorICAgICAgICBzZWxmLm9iaiA9IG9iagorCisgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgeWllbGQgZnJvbSBzZWxmLm9iagorCisKK2NsYXNzIEFzeW5jWWllbGQ6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCisKKyAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICB5aWVsZCBzZWxmLnZhbHVlCisKKworZGVmIHJ1bl9hc3luYyhjb3JvKToKKyAgICBhc3NlcnQgY29yby5fX2NsYXNzX18gaW4ge3R5cGVzLkdlbmVyYXRvclR5cGUsIHR5cGVzLkNvcm91dGluZVR5cGV9CisKKyAgICBidWZmZXIgPSBbXQorICAgIHJlc3VsdCA9IE5vbmUKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGNvcm8uc2VuZChOb25lKSkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICByZXN1bHQgPSBleC5hcmdzWzBdIGlmIGV4LmFyZ3MgZWxzZSBOb25lCisgICAgICAgICAgICBicmVhaworICAgIHJldHVybiBidWZmZXIsIHJlc3VsdAorCisKK2RlZiBydW5fYXN5bmNfX2F3YWl0X18oY29ybyk6CisgICAgYXNzZXJ0IGNvcm8uX19jbGFzc19fIGlzIHR5cGVzLkNvcm91dGluZVR5cGUKKyAgICBhdyA9IGNvcm8uX19hd2FpdF9fKCkKKyAgICBidWZmZXIgPSBbXQorICAgIHJlc3VsdCA9IE5vbmUKKyAgICBpID0gMAorICAgIHdoaWxlIFRydWU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIGkgJSAyOgorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQobmV4dChhdykpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoYXcuc2VuZChOb25lKSkKKyAgICAgICAgICAgIGkgKz0gMQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHJlc3VsdCA9IGV4LmFyZ3NbMF0gaWYgZXguYXJncyBlbHNlIE5vbmUKKyAgICAgICAgICAgIGJyZWFrCisgICAgcmV0dXJuIGJ1ZmZlciwgcmVzdWx0CisKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBzaWxlbmNlX2Nvcm9fZ2MoKToKKyAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIikKKyAgICAgICAgeWllbGQKKyAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKKworCitjbGFzcyBBc3luY0JhZFN5bnRheFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFkc3ludGF4XzEoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgIidhd2FpdCcgb3V0c2lkZSIpOgorICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jMQorCisgICAgZGVmIHRlc3RfYmFkc3ludGF4XzIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgIidhd2FpdCcgb3V0c2lkZSIpOgorICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jMgorCisgICAgZGVmIHRlc3RfYmFkc3ludGF4XzMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4Jyk6CisgICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmMzCisKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfNChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnKToKKyAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzQKKworICAgIGRlZiB0ZXN0X2JhZHN5bnRheF81KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcpOgorICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jNQorCisgICAgZGVmIHRlc3RfYmFkc3ludGF4XzYoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFN5bnRheEVycm9yLCAiJ3lpZWxkJyBpbnNpZGUgYXN5bmMgZnVuY3Rpb24iKToKKworICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jNgorCisgICAgZGVmIHRlc3RfYmFkc3ludGF4Xzcoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFN5bnRheEVycm9yLCAiJ3lpZWxkIGZyb20nIGluc2lkZSBhc3luYyBmdW5jdGlvbiIpOgorCisgICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM3CisKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfOChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnKToKKyAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzgKKworICAgIGRlZiB0ZXN0X2JhZHN5bnRheF85KHNlbGYpOgorICAgICAgICBucyA9IHt9CisgICAgICAgIGZvciBjb21wIGluIHsnKGF3YWl0IGEgZm9yIGEgaW4gYiknLAorICAgICAgICAgICAgICAgICAgICAgJ1thd2FpdCBhIGZvciBhIGluIGJdJywKKyAgICAgICAgICAgICAgICAgICAgICd7YXdhaXQgYSBmb3IgYSBpbiBifScsCisgICAgICAgICAgICAgICAgICAgICAne2F3YWl0IGE6IGMgZm9yIGEgaW4gYn0nfToKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnYXdhaXQuKmluIGNvbXByZWhlbicpOgorICAgICAgICAgICAgICAgIGV4ZWMoJ2FzeW5jIGRlZiBmKCk6XG5cdHt9Jy5mb3JtYXQoY29tcCksIG5zLCBucykKKworICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8xMChzZWxmKToKKyAgICAgICAgIyBUZXN0cyBmb3IgaXNzdWUgMjQ2MTkKKworICAgICAgICBzYW1wbGVzID0gWworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgIGRlZiBiYXIoKTogcGFzcworICAgICAgICAgICAgICAgICAgIGF3YWl0ID0gMQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisKKyAgICAgICAgICAgICAgICAgICBkZWYgYmFyKCk6IHBhc3MKKyAgICAgICAgICAgICAgICAgICBhd2FpdCA9IDEKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgIGRlZiBiYXIoKTogcGFzcworICAgICAgICAgICAgICAgICAgIGlmIDE6CisgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0ID0gMQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGJhcigpOiBwYXNzCisgICAgICAgICAgICAgICAgICAgaWYgMToKKyAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgYQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGJhcigpOiBwYXNzCisgICAgICAgICAgICAgICAgICAgYXdhaXQgYQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgZGVmIGJheigpOiBwYXNzCisgICAgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGJhcigpOiBwYXNzCisgICAgICAgICAgICAgICAgICAgYXdhaXQgYQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgZGVmIGJheigpOiBwYXNzCisgICAgICAgICAgICAgICAgICAgIyA0NTYKKyAgICAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6IHBhc3MKKyAgICAgICAgICAgICAgICAgICAjIDEyMworICAgICAgICAgICAgICAgICAgIGF3YWl0IGEKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgIGRlZiBiYXooKTogcGFzcworICAgICAgICAgICAgICAgICAgICMgNDU2CisgICAgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGJhcigpOiBwYXNzCisgICAgICAgICAgICAgICAgICAgIyAxMjMKKyAgICAgICAgICAgICAgICAgICBhd2FpdCA9IDIKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGZvbygpOgorCisgICAgICAgICAgICAgICAgICAgZGVmIGJheigpOiBwYXNzCisKKyAgICAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6IHBhc3MKKworICAgICAgICAgICAgICAgICAgIGF3YWl0IGEKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorCisgICAgICAgICAgICAgICAgICAgZGVmIGJheigpOiBwYXNzCisKKyAgICAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6IHBhc3MKKworICAgICAgICAgICAgICAgICAgIGF3YWl0ID0gMgorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgZGVmIGFzeW5jKCk6IHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgIGRlZiBhd2FpdCgpOiBwYXNzCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0CisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICByZXR1cm4gbGFtYmRhIGFzeW5jOiBhd2FpdAorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSBhOiBhd2FpdAorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhd2FpdCBhKCkiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oYT1hd2FpdCBiKToKKyAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oYTphd2FpdCBiKToKKyAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXooKToKKyAgICAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKGE9YXdhaXQgYik6CisgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbyhhc3luYyk6CisgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVmIGJheigpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jID0gMQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVmIGJheigpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jID0gMQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGJhcigpOgorCisgICAgICAgICAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmF6KCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICAgICAgICAgICAgICBkZWYgYmF6KCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIKKworICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgPSAxCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWYgYmF6KCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc1xuYXdhaXQgZm9vKCkKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBiYXooKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzXG5hd2FpdCBmb28oKQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKGF3YWl0KToKKyAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKworICAgICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBiYXIoKTogcGFzcworCisgICAgICAgICAgICAgICAgICAgYXdhaXQgYQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFzc1xuYXdhaXQgYQorICAgICAgICAgICAgIiIiXQorCisgICAgICAgIGZvciBjb2RlIGluIHNhbXBsZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjb2RlPWNvZGUpLCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICAgICAgY29tcGlsZShjb2RlLCAiPHRlc3Q+IiwgImV4ZWMiKQorCisgICAgZGVmIHRlc3RfZ29vZHN5bnRheF8xKHNlbGYpOgorICAgICAgICAjIFRlc3RzIGZvciBpc3N1ZSAyNDYxOQorCisgICAgICAgIGRlZiBmb28oYXdhaXQpOgorICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygxMCksIDExKQorCisgICAgICAgIGRlZiBmb28oYXdhaXQpOgorICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oMjApLCAyMikKKworICAgICAgICBkZWYgZm9vKGF3YWl0KToKKworICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisKKyAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworCisgICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDIwKSwgMjIpCisKKyAgICAgICAgZGVmIGZvbyhhd2FpdCk6CisgICAgICAgICAgICAiIiJzcGFtIiIiCisgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IFwKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAjIDEyMworICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAjIDQ1NgorICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygyMCksIDIyKQorCisgICAgICAgIGRlZiBmb28oYXdhaXQpOgorICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgIGFzeW5jIGRlZiBiYXIoKTogcmV0dXJuIGF3YWl0XworICAgICAgICAgICAgYXdhaXRfID0gYXdhaXQKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBiYXIoKS5zZW5kKE5vbmUpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZXguYXJnc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbyg0MiksIDQyKQorCisgICAgICAgIGFzeW5jIGRlZiBmKCk6CisgICAgICAgICAgICBhc3luYyBkZWYgZygpOiBwYXNzCisgICAgICAgICAgICBhd2FpdCB6CisgICAgICAgIGF3YWl0ID0gMQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uKGYpKQorCisKK2NsYXNzIFRva2VuaXplclJlZ3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X29uZWxpbmVfZGVmcyhzZWxmKToKKyAgICAgICAgYnVmID0gW10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNTAwKToKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJ2RlZiBpe2l9KCk6IHJldHVybiB7aX0nLmZvcm1hdChpPWkpKQorICAgICAgICBidWYgPSAnXG4nLmpvaW4oYnVmKQorCisgICAgICAgICMgVGVzdCB0aGF0IDUwMCBjb25zZXF1ZW50LCBvbmUtbGluZSBkZWZzIGlzIE9LCisgICAgICAgIG5zID0ge30KKyAgICAgICAgZXhlYyhidWYsIG5zLCBucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuc1snaTQ5OSddKCksIDQ5OSkKKworICAgICAgICAjIFRlc3QgdGhhdCA1MDAgY29uc2VxdWVudCwgb25lLWxpbmUgZGVmcyAqYW5kKgorICAgICAgICAjIG9uZSAnYXN5bmMgZGVmJyBmb2xsb3dpbmcgdGhlbSBpcyBPSworICAgICAgICBidWYgKz0gJ1xuYXN5bmMgZGVmIGZvbygpOlxuICAgIHJldHVybicKKyAgICAgICAgbnMgPSB7fQorICAgICAgICBleGVjKGJ1ZiwgbnMsIG5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zWydpNDk5J10oKSwgNDk5KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uKG5zWydmb28nXSkpCisKKworY2xhc3MgQ29yb3V0aW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9nZW5fMShzZWxmKToKKyAgICAgICAgZGVmIGdlbigpOiB5aWVsZAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoZ2VuLCAnX19hd2FpdF9fJykpCisKKyAgICBkZWYgdGVzdF9mdW5jXzEoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiAxMAorCisgICAgICAgIGYgPSBmb28oKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZiwgdHlwZXMuQ29yb3V0aW5lVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJvb2woZm9vLl9fY29kZV9fLmNvX2ZsYWdzICYgaW5zcGVjdC5DT19DT1JPVVRJTkUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJvb2woZm9vLl9fY29kZV9fLmNvX2ZsYWdzICYgaW5zcGVjdC5DT19HRU5FUkFUT1IpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYm9vbChmLmNyX2NvZGUuY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0NPUk9VVElORSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYm9vbChmLmNyX2NvZGUuY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0dFTkVSQVRPUikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKGYpLCAoW10sIDEwKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luY19fYXdhaXRfXyhmb28oKSksIChbXSwgMTApKQorCisgICAgICAgIGRlZiBiYXIoKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJvb2woYmFyLl9fY29kZV9fLmNvX2ZsYWdzICYgaW5zcGVjdC5DT19DT1JPVVRJTkUpKQorCisgICAgZGVmIHRlc3RfZnVuY18yKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIFJ1bnRpbWVFcnJvciwgImNvcm91dGluZSByYWlzZWQgU3RvcEl0ZXJhdGlvbiIpOgorCisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICBkZWYgdGVzdF9mdW5jXzMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKworICAgICAgICB3aXRoIHNpbGVuY2VfY29yb19nYygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKGZvbygpKSwgJ148Y29yb3V0aW5lIG9iamVjdC4qIGF0IDB4Lio+JCcpCisKKyAgICBkZWYgdGVzdF9mdW5jXzQoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKworICAgICAgICBjaGVjayA9IGxhbWJkYTogc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwgIidjb3JvdXRpbmUnIG9iamVjdCBpcyBub3QgaXRlcmFibGUiKQorCisgICAgICAgIHdpdGggY2hlY2soKToKKyAgICAgICAgICAgIGxpc3QoZm9vKCkpCisKKyAgICAgICAgd2l0aCBjaGVjaygpOgorICAgICAgICAgICAgdHVwbGUoZm9vKCkpCisKKyAgICAgICAgd2l0aCBjaGVjaygpOgorICAgICAgICAgICAgc3VtKGZvbygpKQorCisgICAgICAgIHdpdGggY2hlY2soKToKKyAgICAgICAgICAgIGl0ZXIoZm9vKCkpCisKKyAgICAgICAgd2l0aCBzaWxlbmNlX2Nvcm9fZ2MoKSwgY2hlY2soKToKKyAgICAgICAgICAgIGZvciBpIGluIGZvbygpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICB3aXRoIHNpbGVuY2VfY29yb19nYygpLCBjaGVjaygpOgorICAgICAgICAgICAgW2kgZm9yIGkgaW4gZm9vKCldCisKKyAgICBkZWYgdGVzdF9mdW5jXzUoc2VsZik6CisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgeWllbGQgMQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGF3YWl0IGJhcigpCisKKyAgICAgICAgY2hlY2sgPSBsYW1iZGE6IHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBUeXBlRXJyb3IsICInY29yb3V0aW5lJyBvYmplY3QgaXMgbm90IGl0ZXJhYmxlIikKKworICAgICAgICB3aXRoIGNoZWNrKCk6CisgICAgICAgICAgICBmb3IgZWwgaW4gZm9vKCk6IHBhc3MKKworICAgICAgICAjIHRoZSBmb2xsb3dpbmcgc2hvdWxkIHBhc3Mgd2l0aG91dCBhbiBlcnJvcgorICAgICAgICBmb3IgZWwgaW4gYmFyKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVsLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtlbCBmb3IgZWwgaW4gYmFyKCldLCBbMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUoYmFyKCkpLCAoMSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihiYXIoKSkpLCAxKQorCisgICAgZGVmIHRlc3RfZnVuY182KHNlbGYpOgorICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIHlpZWxkIDIKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhd2FpdCBiYXIoKQorCisgICAgICAgIGYgPSBmb28oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuc2VuZChOb25lKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnNlbmQoTm9uZSksIDIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbik6CisgICAgICAgICAgICBmLnNlbmQoTm9uZSkKKworICAgIGRlZiB0ZXN0X2Z1bmNfNyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGJhcigpOgorICAgICAgICAgICAgcmV0dXJuIDEwCisKKyAgICAgICAgZGVmIGZvbygpOgorICAgICAgICAgICAgeWllbGQgZnJvbSBiYXIoKQorCisgICAgICAgIHdpdGggc2lsZW5jZV9jb3JvX2djKCksIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgICAiY2Fubm90ICd5aWVsZCBmcm9tJyBhIGNvcm91dGluZSBvYmplY3QgaW4gYSBub24tY29yb3V0aW5lIGdlbmVyYXRvciIpOgorCisgICAgICAgICAgICBsaXN0KGZvbygpKQorCisgICAgZGVmIHRlc3RfZnVuY184KHNlbGYpOgorICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgIHJldHVybiAoeWllbGQgZnJvbSBmb28oKSkKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gJ3NwYW0nCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMoYmFyKCkpLCAoW10sICdzcGFtJykgKQorCisgICAgZGVmIHRlc3RfZnVuY185KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleCgKKyAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nLCAiY29yb3V0aW5lICcuKnRlc3RfZnVuY185Lipmb28nIHdhcyBuZXZlciBhd2FpdGVkIik6CisKKyAgICAgICAgICAgIGZvbygpCisgICAgICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQorCisgICAgZGVmIHRlc3RfZnVuY18xMChzZWxmKToKKyAgICAgICAgTiA9IDAKKworICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIE4KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhID0geWllbGQKKyAgICAgICAgICAgICAgICB5aWVsZCAoYSAqKiAyKQorICAgICAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgICAgIE4gKz0gMTAwCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgTiArPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXdhaXQgZ2VuKCkKKworICAgICAgICBjb3JvID0gZm9vKCkKKyAgICAgICAgYXcgPSBjb3JvLl9fYXdhaXRfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYXcsIGl0ZXIoYXcpKQorICAgICAgICBuZXh0KGF3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3LnNlbmQoMTApLCAxMDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOLCAwKQorICAgICAgICBhdy5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTiwgMSkKKworICAgICAgICBjb3JvID0gZm9vKCkKKyAgICAgICAgYXcgPSBjb3JvLl9fYXdhaXRfXygpCisgICAgICAgIG5leHQoYXcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgYXcudGhyb3coWmVyb0RpdmlzaW9uRXJyb3IsIE5vbmUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTiwgMTAyKQorCisgICAgZGVmIHRlc3RfZnVuY18xMShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZ1bmMoKTogcGFzcworICAgICAgICBjb3JvID0gZnVuYygpCisgICAgICAgICMgVGVzdCB0aGF0IFB5Q29yb19UeXBlIGFuZCBfUHlDb3JvV3JhcHBlcl9UeXBlIHR5cGVzIHdlcmUgcHJvcGVybHkKKyAgICAgICAgIyBpbml0aWFsaXplZAorICAgICAgICBzZWxmLmFzc2VydEluKCdfX2F3YWl0X18nLCBkaXIoY29ybykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19faXRlcl9fJywgZGlyKGNvcm8uX19hd2FpdF9fKCkpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdjb3JvdXRpbmVfd3JhcHBlcicsIHJlcHIoY29yby5fX2F3YWl0X18oKSkpCisgICAgICAgIGNvcm8uY2xvc2UoKSAjIGF2b2lkIFJ1bnRpbWVXYXJuaW5nCisKKyAgICBkZWYgdGVzdF9mdW5jXzEyKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZygpOgorICAgICAgICAgICAgaSA9IG1lLnNlbmQoTm9uZSkKKyAgICAgICAgICAgIGF3YWl0IGZvbworICAgICAgICBtZSA9IGcoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3JvdXRpbmUgYWxyZWFkeSBleGVjdXRpbmciKToKKyAgICAgICAgICAgIG1lLnNlbmQoTm9uZSkKKworICAgIGRlZiB0ZXN0X2Z1bmNfMTMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnKCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgICJjYW4ndCBzZW5kIG5vbi1Ob25lIHZhbHVlIHRvIGEganVzdC1zdGFydGVkIGNvcm91dGluZSIpOgorCisgICAgICAgICAgICBnKCkuc2VuZCgnc3BhbScpCisKKyAgICBkZWYgdGVzdF9mdW5jXzE0KHNlbGYpOgorICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgIGFzeW5jIGRlZiBjb3JvKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgZ2VuKCkKKyAgICAgICAgICAgIGV4Y2VwdCBHZW5lcmF0b3JFeGl0OgorICAgICAgICAgICAgICAgIGF3YWl0IGdlbigpCisgICAgICAgIGMgPSBjb3JvKCkKKyAgICAgICAgYy5zZW5kKE5vbmUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChSdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29yb3V0aW5lIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCIpOgorICAgICAgICAgICAgYy5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9jcl9hd2FpdChzZWxmKToKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgYSgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNvcm91dGluZXN0YXRlKGNvcm9fYiksIGluc3BlY3QuQ09ST19SVU5OSU5HKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29yb19iLmNyX2F3YWl0KQorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjb3JvdXRpbmVzdGF0ZShjb3JvX2IpLCBpbnNwZWN0LkNPUk9fUlVOTklORykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNvcm9fYi5jcl9hd2FpdCkKKworICAgICAgICBhc3luYyBkZWYgYygpOgorICAgICAgICAgICAgYXdhaXQgYSgpCisKKyAgICAgICAgYXN5bmMgZGVmIGIoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNvcm9fYi5jcl9hd2FpdCkKKyAgICAgICAgICAgIGF3YWl0IGMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29yb19iLmNyX2F3YWl0KQorCisgICAgICAgIGNvcm9fYiA9IGIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y29yb3V0aW5lc3RhdGUoY29yb19iKSwgaW5zcGVjdC5DT1JPX0NSRUFURUQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNvcm9fYi5jcl9hd2FpdCkKKworICAgICAgICBjb3JvX2Iuc2VuZChOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y29yb3V0aW5lc3RhdGUoY29yb19iKSwgaW5zcGVjdC5DT1JPX1NVU1BFTkRFRCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3JvX2IuY3JfYXdhaXQuY3JfYXdhaXQuZ2lfY29kZS5jb19uYW1lLCAnYScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKToKKyAgICAgICAgICAgIGNvcm9fYi5zZW5kKE5vbmUpICAjIGNvbXBsZXRlIGNvcm91dGluZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y29yb3V0aW5lc3RhdGUoY29yb19iKSwgaW5zcGVjdC5DT1JPX0NMT1NFRCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29yb19iLmNyX2F3YWl0KQorCisgICAgZGVmIHRlc3RfY29yb3R5cGVfMShzZWxmKToKKyAgICAgICAgY3QgPSB0eXBlcy5Db3JvdXRpbmVUeXBlCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2ludG8gY29yb3V0aW5lJywgY3Quc2VuZC5fX2RvY19fKQorICAgICAgICBzZWxmLmFzc2VydEluKCdpbnNpZGUgY29yb3V0aW5lJywgY3QuY2xvc2UuX19kb2NfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignaW4gY29yb3V0aW5lJywgY3QudGhyb3cuX19kb2NfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignb2YgdGhlIGNvcm91dGluZScsIGN0Ll9fZGljdF9fWydfX25hbWVfXyddLl9fZG9jX18pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ29mIHRoZSBjb3JvdXRpbmUnLCBjdC5fX2RpY3RfX1snX19xdWFsbmFtZV9fJ10uX19kb2NfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdC5fX25hbWVfXywgJ2Nvcm91dGluZScpCisKKyAgICAgICAgYXN5bmMgZGVmIGYoKTogcGFzcworICAgICAgICBjID0gZigpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Nvcm91dGluZSBvYmplY3QnLCByZXByKGMpKQorICAgICAgICBjLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2F3YWl0XzEoc2VsZik6CisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXdhaXQgMQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAib2JqZWN0IGludCBjYW4udC4qYXdhaXQiKToKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgIGRlZiB0ZXN0X2F3YWl0XzIoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGF3YWl0IFtdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICJvYmplY3QgbGlzdCBjYW4udC4qYXdhaXQiKToKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgIGRlZiB0ZXN0X2F3YWl0XzMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGF3YWl0IEFzeW5jWWllbGRGcm9tKFsxLCAyLCAzXSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhmb28oKSksIChbMSwgMiwgM10sIE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luY19fYXdhaXRfXyhmb28oKSksIChbMSwgMiwgM10sIE5vbmUpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfNChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGJhcigpOgorICAgICAgICAgICAgcmV0dXJuIDQyCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGJhcigpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMoZm9vKCkpLCAoW10sIDQyKSkKKworICAgIGRlZiB0ZXN0X2F3YWl0XzUoc2VsZik6CisgICAgICAgIGNsYXNzIEF3YWl0YWJsZToKKyAgICAgICAgICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuIChhd2FpdCBBd2FpdGFibGUoKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBUeXBlRXJyb3IsICJfX2F3YWl0X18uKnJldHVybmVkIG5vbi1pdGVyYXRvciBvZiB0eXBlIik6CisKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgIGRlZiB0ZXN0X2F3YWl0XzYoc2VsZik6CisgICAgICAgIGNsYXNzIEF3YWl0YWJsZToKKyAgICAgICAgICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXIoWzUyXSkKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gKGF3YWl0IEF3YWl0YWJsZSgpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKGZvbygpKSwgKFs1Ml0sIE5vbmUpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfNyhzZWxmKToKKyAgICAgICAgY2xhc3MgQXdhaXRhYmxlOgorICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICB5aWVsZCA0MgorICAgICAgICAgICAgICAgIHJldHVybiAxMDAKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gKGF3YWl0IEF3YWl0YWJsZSgpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKGZvbygpKSwgKFs0Ml0sIDEwMCkpCisKKyAgICBkZWYgdGVzdF9hd2FpdF84KHNlbGYpOgorICAgICAgICBjbGFzcyBBd2FpdGFibGU6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOiByZXR1cm4gYXdhaXQgQXdhaXRhYmxlKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBUeXBlRXJyb3IsICJvYmplY3QgQXdhaXRhYmxlIGNhbid0IGJlIHVzZWQgaW4gJ2F3YWl0JyBleHByZXNzaW9uIik6CisKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgIGRlZiB0ZXN0X2F3YWl0Xzkoc2VsZik6CisgICAgICAgIGRlZiB3cmFwKCk6CisgICAgICAgICAgICByZXR1cm4gYmFyCisKKyAgICAgICAgYXN5bmMgZGVmIGJhcigpOgorICAgICAgICAgICAgcmV0dXJuIDQyCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYiA9IGJhcigpCisKKyAgICAgICAgICAgIGRiID0geydiJzogIGxhbWJkYTogd3JhcH0KKworICAgICAgICAgICAgY2xhc3MgREI6CisgICAgICAgICAgICAgICAgYiA9IHdyYXAKKworICAgICAgICAgICAgcmV0dXJuIChhd2FpdCBiYXIoKSArIGF3YWl0IHdyYXAoKSgpICsgYXdhaXQgZGJbJ2InXSgpKCkoKSArCisgICAgICAgICAgICAgICAgICAgIGF3YWl0IGJhcigpICogMTAwMCArIGF3YWl0IERCLmIoKSgpKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28yKCk6CisgICAgICAgICAgICByZXR1cm4gLWF3YWl0IGJhcigpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMoZm9vKCkpLCAoW10sIDQyMTY4KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMoZm9vMigpKSwgKFtdLCAtNDIpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfMTAoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBiYXooKToKKyAgICAgICAgICAgIHJldHVybiA0MgorCisgICAgICAgIGFzeW5jIGRlZiBiYXIoKToKKyAgICAgICAgICAgIHJldHVybiBiYXooKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCAoYXdhaXQgYmFyKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMoZm9vKCkpLCAoW10sIDQyKSkKKworICAgIGRlZiB0ZXN0X2F3YWl0XzExKHNlbGYpOgorICAgICAgICBkZWYgaWRlbnQodmFsKToKKyAgICAgICAgICAgIHJldHVybiB2YWwKKworICAgICAgICBhc3luYyBkZWYgYmFyKCk6CisgICAgICAgICAgICByZXR1cm4gJ3NwYW0nCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuIGlkZW50KHZhbD1hd2FpdCBiYXIoKSkKKworICAgICAgICBhc3luYyBkZWYgZm9vMigpOgorICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGJhcigpLCAnaGFtJworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKGZvbzIoKSksIChbXSwgKCdzcGFtJywgJ2hhbScpKSkKKworICAgIGRlZiB0ZXN0X2F3YWl0XzEyKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgY29ybygpOgorICAgICAgICAgICAgcmV0dXJuICdzcGFtJworCisgICAgICAgIGNsYXNzIEF3YWl0YWJsZToKKyAgICAgICAgICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvcm8oKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCBBd2FpdGFibGUoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwgIl9fYXdhaXRfX1woXCkgcmV0dXJuZWQgYSBjb3JvdXRpbmUiKToKKworICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfMTMoc2VsZik6CisgICAgICAgIGNsYXNzIEF3YWl0YWJsZToKKyAgICAgICAgICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gYXdhaXQgQXdhaXRhYmxlKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBUeXBlRXJyb3IsICJfX2F3YWl0X18uKnJldHVybmVkIG5vbi1pdGVyYXRvciBvZiB0eXBlIik6CisKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgIGRlZiB0ZXN0X2F3YWl0XzE0KHNlbGYpOgorICAgICAgICBjbGFzcyBXcmFwcGVyOgorICAgICAgICAgICAgIyBGb3JjZXMgdGhlIGludGVycHJldGVyIHRvIHVzZSBDb3JvdXRpbmVUeXBlLl9fYXdhaXRfXworICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvcm8pOgorICAgICAgICAgICAgICAgIGFzc2VydCBjb3JvLl9fY2xhc3NfXyBpcyB0eXBlcy5Db3JvdXRpbmVUeXBlCisgICAgICAgICAgICAgICAgc2VsZi5jb3JvID0gY29ybworICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb3JvLl9fYXdhaXRfXygpCisKKyAgICAgICAgY2xhc3MgRnV0dXJlTGlrZToKKyAgICAgICAgICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICh5aWVsZCkKKworICAgICAgICBjbGFzcyBNYXJrZXIoRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3luYyBkZWYgY29ybzEoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgRnV0dXJlTGlrZSgpCisgICAgICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgcmFpc2UgTWFya2VyCisgICAgICAgIGFzeW5jIGRlZiBjb3JvMigpOgorICAgICAgICAgICAgcmV0dXJuIGF3YWl0IFdyYXBwZXIoY29ybzEoKSkKKworICAgICAgICBjID0gY29ybzIoKQorICAgICAgICBjLnNlbmQoTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN0b3BJdGVyYXRpb24sICdzcGFtJyk6CisgICAgICAgICAgICBjLnNlbmQoJ3NwYW0nKQorCisgICAgICAgIGMgPSBjb3JvMigpCisgICAgICAgIGMuc2VuZChOb25lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE1hcmtlcik6CisgICAgICAgICAgICBjLnRocm93KFplcm9EaXZpc2lvbkVycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF8xKHNlbGYpOgorICAgICAgICBjbGFzcyBNYW5hZ2VyOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgYXdhaXQgQXN5bmNZaWVsZEZyb20oWydlbnRlci0xLScgKyBzZWxmLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbnRlci0yLScgKyBzZWxmLm5hbWVdKQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICAgICAgICAgIGF3YWl0IEFzeW5jWWllbGRGcm9tKFsnZXhpdC0xLScgKyBzZWxmLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGl0LTItJyArIHNlbGYubmFtZV0pCisKKyAgICAgICAgICAgICAgICBpZiBzZWxmLm5hbWUgPT0gJ0InOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXN5bmMgd2l0aCBNYW5hZ2VyKCJBIikgYXMgYSwgTWFuYWdlcigiQiIpIGFzIGI6CisgICAgICAgICAgICAgICAgYXdhaXQgQXN5bmNZaWVsZEZyb20oWygnbWFuYWdlcnMnLCBhLm5hbWUsIGIubmFtZSldKQorICAgICAgICAgICAgICAgIDEvMAorCisgICAgICAgIGYgPSBmb28oKQorICAgICAgICByZXN1bHQsIF8gPSBydW5fYXN5bmMoZikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcmVzdWx0LCBbJ2VudGVyLTEtQScsICdlbnRlci0yLUEnLCAnZW50ZXItMS1CJywgJ2VudGVyLTItQicsCisgICAgICAgICAgICAgICAgICAgICAoJ21hbmFnZXJzJywgJ0EnLCAnQicpLAorICAgICAgICAgICAgICAgICAgICAgJ2V4aXQtMS1CJywgJ2V4aXQtMi1CJywgJ2V4aXQtMS1BJywgJ2V4aXQtMi1BJ10KKyAgICAgICAgKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggTWFuYWdlcigiQSIpIGFzIGEsIE1hbmFnZXIoIkMiKSBhcyBjOgorICAgICAgICAgICAgICAgIGF3YWl0IEFzeW5jWWllbGRGcm9tKFsoJ21hbmFnZXJzJywgYS5uYW1lLCBjLm5hbWUpXSkKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgIGRlZiB0ZXN0X3dpdGhfMihzZWxmKToKKyAgICAgICAgY2xhc3MgQ006CisgICAgICAgICAgICBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXN5bmMgd2l0aCBDTSgpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsICdfX2FleGl0X18nKToKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgIGRlZiB0ZXN0X3dpdGhfMyhzZWxmKToKKyAgICAgICAgY2xhc3MgQ006CisgICAgICAgICAgICBkZWYgX19hZXhpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgJ19fYWVudGVyX18nKToKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgIGRlZiB0ZXN0X3dpdGhfNChzZWxmKToKKyAgICAgICAgY2xhc3MgQ006CisgICAgICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgJ19fYWV4aXRfXycpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3Rfd2l0aF81KHNlbGYpOgorICAgICAgICAjIFdoaWxlIHRoaXMgdGVzdCBkb2Vzbid0IG1ha2UgYSBsb3Qgb2Ygc2Vuc2UsCisgICAgICAgICMgaXQncyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgYW4gZWFybHkgYnVnIHdpdGggb3Bjb2RlcworICAgICAgICAjIGdlbmVyYXRpb24KKworICAgICAgICBjbGFzcyBDTToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2VsZiwgKmV4Yyk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGFzeW5jIGRlZiBmdW5jKCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0ICgxLCApID09IDEKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmdW5jKCkpCisKKyAgICBkZWYgdGVzdF93aXRoXzYoc2VsZik6CisgICAgICAgIGNsYXNzIENNOgorICAgICAgICAgICAgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDEyMworCisgICAgICAgICAgICBkZWYgX19hZXhpdF9fKHNlbGYsICplKToKKyAgICAgICAgICAgICAgICByZXR1cm4gNDU2CisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXN5bmMgd2l0aCBDTSgpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBUeXBlRXJyb3IsICJvYmplY3QgaW50IGNhbid0IGJlIHVzZWQgaW4gJ2F3YWl0JyBleHByZXNzaW9uIik6CisgICAgICAgICAgICAjIGl0J3MgaW1wb3J0YW50IHRoYXQgX19hZXhpdF9fIHdhc24ndCBjYWxsZWQKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgIGRlZiB0ZXN0X3dpdGhfNyhzZWxmKToKKyAgICAgICAgY2xhc3MgQ006CisgICAgICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgICAgICBkZWYgX19hZXhpdF9fKHNlbGYsICplKToKKyAgICAgICAgICAgICAgICByZXR1cm4gNDQ0CisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXN5bmMgd2l0aCBDTSgpOgorICAgICAgICAgICAgICAgIDEvMAorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyBleGM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KAorICAgICAgICAgICAgICAgIGV4Yy5hcmdzWzBdLCAib2JqZWN0IGludCBjYW4ndCBiZSB1c2VkIGluICdhd2FpdCcgZXhwcmVzc2lvbiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhjLl9fY29udGV4dF9fIGlzIG5vdCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXhjLl9fY29udGV4dF9fLCBaZXJvRGl2aXNpb25FcnJvcikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ2ludmFsaWQgYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlciBkaWQgbm90IGZhaWwnKQorCisKKyAgICBkZWYgdGVzdF93aXRoXzgoc2VsZik6CisgICAgICAgIENOVCA9IDAKKworICAgICAgICBjbGFzcyBDTToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgICAgIGRlZiBfX2FleGl0X18oc2VsZiwgKmUpOgorICAgICAgICAgICAgICAgIHJldHVybiA0NTYKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBub25sb2NhbCBDTlQKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKToKKyAgICAgICAgICAgICAgICBDTlQgKz0gMQorCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgVHlwZUVycm9yLCAib2JqZWN0IGludCBjYW4ndCBiZSB1c2VkIGluICdhd2FpdCcgZXhwcmVzc2lvbiIpOgorCisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDTlQsIDEpCisKKworICAgIGRlZiB0ZXN0X3dpdGhfOShzZWxmKToKKyAgICAgICAgQ05UID0gMAorCisgICAgICAgIGNsYXNzIENNOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCAqZSk6CisgICAgICAgICAgICAgICAgMS8wCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgbm9ubG9jYWwgQ05UCisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgQ05UICs9IDEKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENOVCwgMSkKKworICAgIGRlZiB0ZXN0X3dpdGhfMTAoc2VsZik6CisgICAgICAgIENOVCA9IDAKKworICAgICAgICBjbGFzcyBDTToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2VsZiwgKmUpOgorICAgICAgICAgICAgICAgIDEvMAorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIENOVAorICAgICAgICAgICAgYXN5bmMgd2l0aCBDTSgpOgorICAgICAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4Yy5fX2NvbnRleHRfXyBpcyBub3QgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGV4Yy5fX2NvbnRleHRfXywgWmVyb0RpdmlzaW9uRXJyb3IpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXhjLl9fY29udGV4dF9fLl9fY29udGV4dF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZUVycm9yKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnZXhjZXB0aW9uIGZyb20gX19hZXhpdF9fIGRpZCBub3QgcHJvcGFnYXRlJykKKworICAgIGRlZiB0ZXN0X3dpdGhfMTEoc2VsZik6CisgICAgICAgIENOVCA9IDAKKworICAgICAgICBjbGFzcyBDTToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCAqZSk6CisgICAgICAgICAgICAgICAgMS8wCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgbm9ubG9jYWwgQ05UCisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvciBhcyBleGM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhjLl9fY29udGV4dF9fIGlzIE5vbmUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ2V4Y2VwdGlvbiBmcm9tIF9fYWVudGVyX18gZGlkIG5vdCBwcm9wYWdhdGUnKQorCisgICAgZGVmIHRlc3Rfd2l0aF8xMihzZWxmKToKKyAgICAgICAgQ05UID0gMAorCisgICAgICAgIGNsYXNzIENNOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCAqZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBub25sb2NhbCBDTlQKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNtLl9fY2xhc3NfXywgQ00pCisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisKKyAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3Rfd2l0aF8xMyhzZWxmKToKKyAgICAgICAgQ05UID0gMAorCisgICAgICAgIGNsYXNzIENNOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgMS8wCisKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2VsZiwgKmUpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgbm9ubG9jYWwgQ05UCisgICAgICAgICAgICBDTlQgKz0gMQorICAgICAgICAgICAgYXN5bmMgd2l0aCBDTSgpOgorICAgICAgICAgICAgICAgIENOVCArPSAxMDAwCisgICAgICAgICAgICBDTlQgKz0gMTAwMDAKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDTlQsIDEpCisKKyAgICBkZWYgdGVzdF9mb3JfMShzZWxmKToKKyAgICAgICAgYWl0ZXJfY2FsbHMgPSAwCisKKyAgICAgICAgY2xhc3MgQXN5bmNJdGVyOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuaSA9IDAKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWl0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCBhaXRlcl9jYWxscworICAgICAgICAgICAgICAgIGFpdGVyX2NhbGxzICs9IDEKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgICAgICBhc3luYyBkZWYgX19hbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuaSArPSAxCisKKyAgICAgICAgICAgICAgICBpZiBub3QgKHNlbGYuaSAlIDEwKToKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgQXN5bmNZaWVsZChzZWxmLmkgKiAxMCkKKworICAgICAgICAgICAgICAgIGlmIHNlbGYuaSA+IDEwMDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uCisKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5pLCBzZWxmLmkKKworCisgICAgICAgIGJ1ZmZlciA9IFtdCisgICAgICAgIGFzeW5jIGRlZiB0ZXN0MSgpOgorICAgICAgICAgICAgYXN5bmMgZm9yIGkxLCBpMiBpbiBBc3luY0l0ZXIoKToKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGkxICsgaTIpCisKKyAgICAgICAgeWllbGRlZCwgXyA9IHJ1bl9hc3luYyh0ZXN0MSgpKQorICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IF9fYWl0ZXJfXyB3YXMgY2FsbGVkIG9ubHkgb25jZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFpdGVyX2NhbGxzLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHlpZWxkZWQsIFtpICogMTAwIGZvciBpIGluIHJhbmdlKDEsIDExKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmZmVyLCBbaSoyIGZvciBpIGluIHJhbmdlKDEsIDEwMSldKQorCisKKyAgICAgICAgYnVmZmVyID0gW10KKyAgICAgICAgYXN5bmMgZGVmIHRlc3QyKCk6CisgICAgICAgICAgICBub25sb2NhbCBidWZmZXIKKyAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEFzeW5jSXRlcigpOgorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoaVswXSkKKyAgICAgICAgICAgICAgICBpZiBpWzBdID09IDIwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCd3aGF0PycpCisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCdlbmQnKQorCisgICAgICAgIHlpZWxkZWQsIF8gPSBydW5fYXN5bmModGVzdDIoKSkKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBfX2FpdGVyX18gd2FzIGNhbGxlZCBvbmx5IG9uY2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhaXRlcl9jYWxscywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5aWVsZGVkLCBbMTAwLCAyMDBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmZlciwgW2kgZm9yIGkgaW4gcmFuZ2UoMSwgMjEpXSArIFsnZW5kJ10pCisKKworICAgICAgICBidWZmZXIgPSBbXQorICAgICAgICBhc3luYyBkZWYgdGVzdDMoKToKKyAgICAgICAgICAgIG5vbmxvY2FsIGJ1ZmZlcgorICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gQXN5bmNJdGVyKCk6CisgICAgICAgICAgICAgICAgaWYgaVswXSA+IDIwOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoaVswXSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgnd2hhdD8nKQorICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgnZW5kJykKKworICAgICAgICB5aWVsZGVkLCBfID0gcnVuX2FzeW5jKHRlc3QzKCkpCisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgX19haXRlcl9fIHdhcyBjYWxsZWQgb25seSBvbmNlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWl0ZXJfY2FsbHMsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeWllbGRlZCwgW2kgKiAxMDAgZm9yIGkgaW4gcmFuZ2UoMSwgMTEpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZmZXIsIFtpIGZvciBpIGluIHJhbmdlKDEsIDIxKV0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyd3aGF0PycsICdlbmQnXSkKKworICAgIGRlZiB0ZXN0X2Zvcl8yKHNlbGYpOgorICAgICAgICB0dXAgPSAoMSwgMiwgMykKKyAgICAgICAgcmVmc19iZWZvcmUgPSBzeXMuZ2V0cmVmY291bnQodHVwKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIHR1cDoKKyAgICAgICAgICAgICAgICBwcmludCgnbmV2ZXIgZ29pbmcgdG8gaGFwcGVuJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgVHlwZUVycm9yLCAiYXN5bmMgZm9yJyByZXF1aXJlcyBhbiBvYmplY3QuKl9fYWl0ZXJfXy4qdHVwbGUiKToKKworICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHJlZmNvdW50KHR1cCksIHJlZnNfYmVmb3JlKQorCisgICAgZGVmIHRlc3RfZm9yXzMoc2VsZik6CisgICAgICAgIGNsYXNzIEk6CisgICAgICAgICAgICBkZWYgX19haXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgYWl0ZXIgPSBJKCkKKyAgICAgICAgcmVmc19iZWZvcmUgPSBzeXMuZ2V0cmVmY291bnQoYWl0ZXIpCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gYWl0ZXI6CisgICAgICAgICAgICAgICAgcHJpbnQoJ25ldmVyIGdvaW5nIHRvIGhhcHBlbicpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdC4qX19haXRlci4qXDogSSIpOgorCisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0cmVmY291bnQoYWl0ZXIpLCByZWZzX2JlZm9yZSkKKworICAgIGRlZiB0ZXN0X2Zvcl80KHNlbGYpOgorICAgICAgICBjbGFzcyBJOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWl0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgICAgICBkZWYgX19hbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAoKQorCisgICAgICAgIGFpdGVyID0gSSgpCisgICAgICAgIHJlZnNfYmVmb3JlID0gc3lzLmdldHJlZmNvdW50KGFpdGVyKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIGFpdGVyOgorICAgICAgICAgICAgICAgIHByaW50KCduZXZlciBnb2luZyB0byBoYXBwZW4nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgImFzeW5jIGZvcicgcmVjZWl2ZWQgYW4gaW52YWxpZCBvYmplY3QuKl9fYW5leHRfXy4qdHVwbGUiKToKKworICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHJlZmNvdW50KGFpdGVyKSwgcmVmc19iZWZvcmUpCisKKyAgICBkZWYgdGVzdF9mb3JfNShzZWxmKToKKyAgICAgICAgY2xhc3MgSToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAgICAgZGVmIF9fYW5leHRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMTIzCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gSSgpOgorICAgICAgICAgICAgICAgIHByaW50KCduZXZlciBnb2luZyB0byBoYXBwZW4nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgImFzeW5jIGZvcicgcmVjZWl2ZWQgYW4gaW52YWxpZCBvYmplY3QuKl9fYW5leHQuKmludCIpOgorCisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICBkZWYgdGVzdF9mb3JfNihzZWxmKToKKyAgICAgICAgSSA9IDAKKworICAgICAgICBjbGFzcyBNYW5hZ2VyOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgSQorICAgICAgICAgICAgICAgIEkgKz0gMTAwMDAKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgSQorICAgICAgICAgICAgICAgIEkgKz0gMTAwMDAwCisKKyAgICAgICAgY2xhc3MgSXRlcmFibGU6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5pID0gMAorCisgICAgICAgICAgICBhc3luYyBkZWYgX19haXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FuZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5pID4gMTA6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbgorICAgICAgICAgICAgICAgIHNlbGYuaSArPSAxCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaQorCisgICAgICAgICMjIyMjIyMjIyMjIyMjCisKKyAgICAgICAgbWFuYWdlciA9IE1hbmFnZXIoKQorICAgICAgICBpdGVyYWJsZSA9IEl0ZXJhYmxlKCkKKyAgICAgICAgbXJlZnNfYmVmb3JlID0gc3lzLmdldHJlZmNvdW50KG1hbmFnZXIpCisgICAgICAgIGlyZWZzX2JlZm9yZSA9IHN5cy5nZXRyZWZjb3VudChpdGVyYWJsZSkKKworICAgICAgICBhc3luYyBkZWYgbWFpbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgSQorCisgICAgICAgICAgICBhc3luYyB3aXRoIG1hbmFnZXI6CisgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gaXRlcmFibGU6CisgICAgICAgICAgICAgICAgICAgIEkgKz0gMQorICAgICAgICAgICAgSSArPSAxMDAwCisKKyAgICAgICAgcnVuX2FzeW5jKG1haW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChJLCAxMTEwMTEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0cmVmY291bnQobWFuYWdlciksIG1yZWZzX2JlZm9yZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0cmVmY291bnQoaXRlcmFibGUpLCBpcmVmc19iZWZvcmUpCisKKyAgICAgICAgIyMjIyMjIyMjIyMjIyMKKworICAgICAgICBhc3luYyBkZWYgbWFpbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgSQorCisgICAgICAgICAgICBhc3luYyB3aXRoIE1hbmFnZXIoKToKKyAgICAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBJdGVyYWJsZSgpOgorICAgICAgICAgICAgICAgICAgICBJICs9IDEKKyAgICAgICAgICAgIEkgKz0gMTAwMAorCisgICAgICAgICAgICBhc3luYyB3aXRoIE1hbmFnZXIoKToKKyAgICAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBJdGVyYWJsZSgpOgorICAgICAgICAgICAgICAgICAgICBJICs9IDEKKyAgICAgICAgICAgIEkgKz0gMTAwMAorCisgICAgICAgIHJ1bl9hc3luYyhtYWluKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoSSwgMzMzMDMzKQorCisgICAgICAgICMjIyMjIyMjIyMjIyMjCisKKyAgICAgICAgYXN5bmMgZGVmIG1haW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIEkKKworICAgICAgICAgICAgYXN5bmMgd2l0aCBNYW5hZ2VyKCk6CisgICAgICAgICAgICAgICAgSSArPSAxMDAKKyAgICAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBJdGVyYWJsZSgpOgorICAgICAgICAgICAgICAgICAgICBJICs9IDEKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBJICs9IDEwMDAwMDAwCisgICAgICAgICAgICBJICs9IDEwMDAKKworICAgICAgICAgICAgYXN5bmMgd2l0aCBNYW5hZ2VyKCk6CisgICAgICAgICAgICAgICAgSSArPSAxMDAKKyAgICAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBJdGVyYWJsZSgpOgorICAgICAgICAgICAgICAgICAgICBJICs9IDEKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBJICs9IDEwMDAwMDAwCisgICAgICAgICAgICBJICs9IDEwMDAKKworICAgICAgICBydW5fYXN5bmMobWFpbigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEksIDIwNTU1MjU1KQorCisgICAgZGVmIHRlc3RfZm9yXzcoc2VsZik6CisgICAgICAgIENOVCA9IDAKKyAgICAgICAgY2xhc3MgQUk6CisgICAgICAgICAgICBhc3luYyBkZWYgX19haXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIDEvMAorICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBub25sb2NhbCBDTlQKKyAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEFJKCk6CisgICAgICAgICAgICAgICAgQ05UICs9IDEKKyAgICAgICAgICAgIENOVCArPSAxMAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDTlQsIDApCisKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZnVuYygpOiBwYXNzCisgICAgICAgIGNvcm8gPSBmdW5jKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY29weS5jb3B5KGNvcm8pCisKKyAgICAgICAgYXcgPSBjb3JvLl9fYXdhaXRfXygpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBjb3B5LmNvcHkoYXcpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBhdy5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmdW5jKCk6IHBhc3MKKyAgICAgICAgY29ybyA9IGZ1bmMoKQorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFR5cGVFcnJvciwgcGlja2xlLlBpY2tsaW5nRXJyb3IpKToKKyAgICAgICAgICAgICAgICBwaWNrbGUuZHVtcHMoY29ybywgcHJvdG8pCisKKyAgICAgICAgYXcgPSBjb3JvLl9fYXdhaXRfXygpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFR5cGVFcnJvciwgcGlja2xlLlBpY2tsaW5nRXJyb3IpKToKKyAgICAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXBzKGF3LCBwcm90bykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGF3LmNsb3NlKCkKKworCitjbGFzcyBDb3JvQXN5bmNJT0NvbXBhdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYXN5bmNpb18xKHNlbGYpOgorICAgICAgICAjIGFzeW5jaW8gY2Fubm90IGJlIGltcG9ydGVkIHdoZW4gUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkCisgICAgICAgICMgc3VwcG9ydAorICAgICAgICBhc3luY2lvID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdhc3luY2lvJykKKworICAgICAgICBjbGFzcyBNeUV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGJ1ZmZlciA9IFtdCisKKyAgICAgICAgY2xhc3MgQ006CisgICAgICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKDEpCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxKQorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoMikKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgICAgICBhc3luYyBkZWYgX19hZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIpOgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSkKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGV4Y190eXBlLl9fbmFtZV9fKQorCisgICAgICAgIGFzeW5jIGRlZiBmKCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCkgYXMgYzoKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEpCisgICAgICAgICAgICAgICAgcmFpc2UgTXlFeGNlcHRpb24KKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ3VucmVhY2hhYmxlJykKKworICAgICAgICBsb29wID0gYXN5bmNpby5uZXdfZXZlbnRfbG9vcCgpCisgICAgICAgIGFzeW5jaW8uc2V0X2V2ZW50X2xvb3AobG9vcCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoZigpKQorICAgICAgICBleGNlcHQgTXlFeGNlcHRpb246CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBsb29wLmNsb3NlKCkKKyAgICAgICAgICAgIGFzeW5jaW8uc2V0X2V2ZW50X2xvb3AoTm9uZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmZlciwgWzEsIDIsICdNeUV4Y2VwdGlvbiddKQorCisKK2NsYXNzIFN5c1NldENvcm9XcmFwcGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9zZXRfd3JhcHBlcl8xKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gJ3NwYW0nCisKKyAgICAgICAgd3JhcHBlZCA9IE5vbmUKKyAgICAgICAgZGVmIHdyYXAoZ2VuKToKKyAgICAgICAgICAgIG5vbmxvY2FsIHdyYXBwZWQKKyAgICAgICAgICAgIHdyYXBwZWQgPSBnZW4KKyAgICAgICAgICAgIHJldHVybiBnZW4KKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzeXMuZ2V0X2Nvcm91dGluZV93cmFwcGVyKCkpCisKKyAgICAgICAgc3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlcih3cmFwKQorICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5nZXRfY29yb3V0aW5lX3dyYXBwZXIoKSwgd3JhcCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZiA9IGZvbygpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUod3JhcHBlZCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMoZiksIChbXSwgJ3NwYW0nKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN5cy5zZXRfY29yb3V0aW5lX3dyYXBwZXIoTm9uZSkKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzeXMuZ2V0X2Nvcm91dGluZV93cmFwcGVyKCkpCisKKyAgICAgICAgd3JhcHBlZCA9IE5vbmUKKyAgICAgICAgd2l0aCBzaWxlbmNlX2Nvcm9fZ2MoKToKKyAgICAgICAgICAgIGZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uod3JhcHBlZCkKKworICAgIGRlZiB0ZXN0X3NldF93cmFwcGVyXzIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHN5cy5nZXRfY29yb3V0aW5lX3dyYXBwZXIoKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgImNhbGxhYmxlIGV4cGVjdGVkLCBnb3QgaW50Iik6CisgICAgICAgICAgICBzeXMuc2V0X2Nvcm91dGluZV93cmFwcGVyKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHN5cy5nZXRfY29yb3V0aW5lX3dyYXBwZXIoKSkKKworICAgIGRlZiB0ZXN0X3NldF93cmFwcGVyXzMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiAnc3BhbScKKworICAgICAgICBkZWYgd3JhcHBlcihjb3JvKToKKyAgICAgICAgICAgIGFzeW5jIGRlZiB3cmFwKGNvcm8pOgorICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBjb3JvCisgICAgICAgICAgICByZXR1cm4gd3JhcChjb3JvKQorCisgICAgICAgIHN5cy5zZXRfY29yb3V0aW5lX3dyYXBwZXIod3JhcHBlcikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzaWxlbmNlX2Nvcm9fZ2MoKSwgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBSdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgImNvcm91dGluZSB3cmFwcGVyLipcLndyYXBwZXIgYXQgMHguKmF0dGVtcHRlZCB0byAiCisgICAgICAgICAgICAgICAgInJlY3Vyc2l2ZWx5IHdyYXAgLiogd3JhcCAuKiIpOgorCisgICAgICAgICAgICAgICAgZm9vKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN5cy5zZXRfY29yb3V0aW5lX3dyYXBwZXIoTm9uZSkKKworICAgIGRlZiB0ZXN0X3NldF93cmFwcGVyXzQoc2VsZik6CisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuICdzcGFtJworCisgICAgICAgIHdyYXBwZWQgPSBOb25lCisgICAgICAgIGRlZiB3cmFwKGdlbik6CisgICAgICAgICAgICBub25sb2NhbCB3cmFwcGVkCisgICAgICAgICAgICB3cmFwcGVkID0gZ2VuCisgICAgICAgICAgICByZXR1cm4gZ2VuCisKKyAgICAgICAgc3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlcih3cmFwKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb28oKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcygKKyAgICAgICAgICAgICAgICB3cmFwcGVkLCBOb25lLAorICAgICAgICAgICAgICAgICJnZW5lcmF0b3ItYmFzZWQgY29yb3V0aW5lIHdhcyB3cmFwcGVkIHZpYSAiCisgICAgICAgICAgICAgICAgInN5cy5zZXRfY29yb3V0aW5lX3dyYXBwZXIiKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlcihOb25lKQorCisKK2NsYXNzIENBUElUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3RwX2F3YWl0XzEoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBhd2FpdFR5cGUgYXMgYXQKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBmdXR1cmUgPSBhdChpdGVyKFsxXSkpCisgICAgICAgICAgICByZXR1cm4gKGF3YWl0IGZ1dHVyZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygpLnNlbmQoTm9uZSksIDEpCisKKyAgICBkZWYgdGVzdF90cF9hd2FpdF8yKHNlbGYpOgorICAgICAgICAjIFRlc3QgdHBfYXdhaXQgdG8gX19hd2FpdF9fIG1hcHBpbmcKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGF3YWl0VHlwZSBhcyBhdAorICAgICAgICBmdXR1cmUgPSBhdChpdGVyKFsxXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChmdXR1cmUuX19hd2FpdF9fKCkpLCAxKQorCisgICAgZGVmIHRlc3RfdHBfYXdhaXRfMyhzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGF3YWl0VHlwZSBhcyBhdAorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGZ1dHVyZSA9IGF0KDEpCisgICAgICAgICAgICByZXR1cm4gKGF3YWl0IGZ1dHVyZSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgVHlwZUVycm9yLCAiX19hd2FpdF9fLipyZXR1cm5lZCBub24taXRlcmF0b3Igb2YgdHlwZSAnaW50JyIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oKS5zZW5kKE5vbmUpLCAxKQorCisKK2lmIF9fbmFtZV9fPT0iX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKaW5kZXggY2U1ZDI3ZS4uZjE4OTgzZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CkBAIC0xMSw3ICsxMSw3IEBACiBjbGFzcyBDUHJvZmlsZVRlc3QoUHJvZmlsZVRlc3QpOgogICAgIHByb2ZpbGVyY2xhc3MgPSBjUHJvZmlsZS5Qcm9maWxlCiAgICAgcHJvZmlsZXJtb2R1bGUgPSBjUHJvZmlsZQotICAgIGV4cGVjdGVkX21heF9vdXRwdXQgPSAie2J1aWx0LWluIG1ldGhvZCBtYXh9IgorICAgIGV4cGVjdGVkX21heF9vdXRwdXQgPSAie2J1aWx0LWluIG1ldGhvZCBidWlsdGlucy5tYXh9IgogCiAgICAgZGVmIGdldF9leHBlY3RlZF9vdXRwdXQoc2VsZik6CiAgICAgICAgIHJldHVybiBfUHJvZmlsZU91dHB1dApAQCAtNzIsOSArNzIsOSBAQAogcHJvZmlsZWUucHk6ODgoaGVscGVyMikgICAgICAgICAgICAgICAgICAgICAgICAgICA8LSAgICAgICA2ICAgIDAuMjM0ICAgIDAuMzAwICBwcm9maWxlZS5weTo1NShoZWxwZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgICAgMC4wNzggICAgMC4xMDAgIHByb2ZpbGVlLnB5Ojg0KGhlbHBlcjJfaW5kaXJlY3QpCiBwcm9maWxlZS5weTo5OChzdWJoZWxwZXIpICAgICAgICAgICAgICAgICAgICAgICAgIDwtICAgICAgIDggICAgMC4wNjQgICAgMC4wODAgIHByb2ZpbGVlLnB5Ojg4KGhlbHBlcjIpCi17YnVpbHQtaW4gbWV0aG9kIGV4Y19pbmZvfSAgICAgICAgICAgICAgICAgICAgICAgIDwtICAgICAgIDQgICAgMC4wMDAgICAgMC4wMDAgIHByb2ZpbGVlLnB5OjczKGhlbHBlcjEpCi17YnVpbHQtaW4gbWV0aG9kIGhhc2F0dHJ9ICAgICAgICAgICAgICAgICAgICAgICAgIDwtICAgICAgIDQgICAgMC4wMDAgICAgMC4wMDQgIHByb2ZpbGVlLnB5OjczKGhlbHBlcjEpCit7YnVpbHQtaW4gbWV0aG9kIGJ1aWx0aW5zLmhhc2F0dHJ9ICAgICAgICAgICAgICAgIDwtICAgICAgIDQgICAgMC4wMDAgICAgMC4wMDQgIHByb2ZpbGVlLnB5OjczKGhlbHBlcjEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDggICAgMC4wMDAgICAgMC4wMDggIHByb2ZpbGVlLnB5Ojg4KGhlbHBlcjIpCit7YnVpbHQtaW4gbWV0aG9kIHN5cy5leGNfaW5mb30gICAgICAgICAgICAgICAgICAgIDwtICAgICAgIDQgICAgMC4wMDAgICAgMC4wMDAgIHByb2ZpbGVlLnB5OjczKGhlbHBlcjEpCiB7bWV0aG9kICdhcHBlbmQnIG9mICdsaXN0JyBvYmplY3RzfSAgICAgICAgICAgICAgIDwtICAgICAgIDQgICAgMC4wMDAgICAgMC4wMDAgIHByb2ZpbGVlLnB5OjczKGhlbHBlcjEpIiIiCiBfUHJvZmlsZU91dHB1dFsncHJpbnRfY2FsbGVlcyddID0gIiIiXAogPHN0cmluZz46MSg8bW9kdWxlPikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgICAgICAxICAgIDAuMjcwICAgIDEuMDAwICBwcm9maWxlZS5weToyNSh0ZXN0ZnVuYykKQEAgLTg3LDEyICs4NywxMiBAQAogcHJvZmlsZWUucHk6NTUoaGVscGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgICAgICA0ICAgIDAuMTE2ICAgIDAuMTIwICBwcm9maWxlZS5weTo3MyhoZWxwZXIxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyICAgIDAuMDAwICAgIDAuMTQwICBwcm9maWxlZS5weTo4NChoZWxwZXIyX2luZGlyZWN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2ICAgIDAuMjM0ICAgIDAuMzAwICBwcm9maWxlZS5weTo4OChoZWxwZXIyKQotcHJvZmlsZWUucHk6NzMoaGVscGVyMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgICAgICA0ICAgIDAuMDAwICAgIDAuMDAwICB7YnVpbHQtaW4gbWV0aG9kIGV4Y19pbmZvfQorcHJvZmlsZWUucHk6NzMoaGVscGVyMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgICAgICA0ICAgIDAuMDAwICAgIDAuMDA0ICB7YnVpbHQtaW4gbWV0aG9kIGJ1aWx0aW5zLmhhc2F0dHJ9CiBwcm9maWxlZS5weTo4NChoZWxwZXIyX2luZGlyZWN0KSAgICAgICAgICAgICAgICAgIC0+ICAgICAgIDIgICAgMC4wMDYgICAgMC4wNDAgIHByb2ZpbGVlLnB5OjM1KGZhY3RvcmlhbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAgICAwLjA3OCAgICAwLjEwMCAgcHJvZmlsZWUucHk6ODgoaGVscGVyMikKIHByb2ZpbGVlLnB5Ojg4KGhlbHBlcjIpICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gICAgICAgOCAgICAwLjA2NCAgICAwLjA4MCAgcHJvZmlsZWUucHk6OTgoc3ViaGVscGVyKQogcHJvZmlsZWUucHk6OTgoc3ViaGVscGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgICAgIDE2ICAgIDAuMDE2ICAgIDAuMDE2ICBwcm9maWxlZS5weToxMTAoX19nZXRhdHRyX18pCi17YnVpbHQtaW4gbWV0aG9kIGhhc2F0dHJ9ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICAgICAgMTIgICAgMC4wMTIgICAgMC4wMTIgIHByb2ZpbGVlLnB5OjExMChfX2dldGF0dHJfXykiIiIKK3tidWlsdC1pbiBtZXRob2QgYnVpbHRpbnMuaGFzYXR0cn0gICAgICAgICAgICAgICAgLT4gICAgICAxMiAgICAwLjAxMiAgICAwLjAxMiAgcHJvZmlsZWUucHk6MTEwKF9fZ2V0YXR0cl9fKSIiIgogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jcmFzaGVycy5weSBiL0xpYi90ZXN0L3Rlc3RfY3Jhc2hlcnMucHkKaW5kZXggMzM2Y2NiZS4uNThkZmQwMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jcmFzaGVycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NyYXNoZXJzLnB5CkBAIC04LDcgKzgsNyBAQAogaW1wb3J0IGdsb2IKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgdGVzdC5zdXBwb3J0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIAogQ1JBU0hFUl9ESVIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgImNyYXNoZXJzIikKIENSQVNIRVJfRklMRVMgPSBvcy5wYXRoLmpvaW4oQ1JBU0hFUl9ESVIsICIqLnB5IikKQEAgLTMwLDkgKzMwLDggQEAKICAgICAgICAgICAgIGFzc2VydF9weXRob25fZmFpbHVyZShmbmFtZSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChDcmFzaGVyVGVzdCkKK2RlZiB0ZWFyRG93bk1vZHVsZSgpOgogICAgIHRlc3Quc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jc3YucHkgYi9MaWIvdGVzdC90ZXN0X2Nzdi5weQppbmRleCA2NTQ0OWFlLi43N2MzMTVlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Nzdi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Nzdi5weQpAQCAtMSw2ICsxLDcgQEAKICMgQ29weXJpZ2h0IChDKSAyMDAxLDIwMDIgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgY3N2IHBhY2thZ2UgdW5pdCB0ZXN0cwogCitpbXBvcnQgY29weQogaW1wb3J0IGlvCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKQEAgLTksNiArMTAsNyBAQAogZnJvbSB0ZW1wZmlsZSBpbXBvcnQgVGVtcG9yYXJ5RmlsZQogaW1wb3J0IGNzdgogaW1wb3J0IGdjCitpbXBvcnQgcGlja2xlCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogY2xhc3MgVGVzdF9Dc3YodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTg2LDYgKzE4OCwxNCBAQAogICAgICAgICBzZWxmLl93cml0ZV90ZXN0KFsnYScsMSwncCxxJ10sICdhLDEscFxcLHEnLAogICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZWNoYXI9J1xcJywgcXVvdGluZyA9IGNzdi5RVU9URV9OT05FKQogCisgICAgZGVmIHRlc3Rfd3JpdGVfaXRlcmFibGUoc2VsZik6CisgICAgICAgIHNlbGYuX3dyaXRlX3Rlc3QoaXRlcihbJ2EnLCAxLCAncCxxJ10pLCAnYSwxLCJwLHEiJykKKyAgICAgICAgc2VsZi5fd3JpdGVfdGVzdChpdGVyKFsnYScsIDEsIE5vbmVdKSwgJ2EsMSwnKQorICAgICAgICBzZWxmLl93cml0ZV90ZXN0KGl0ZXIoW10pLCAnJykKKyAgICAgICAgc2VsZi5fd3JpdGVfdGVzdChpdGVyKFtOb25lXSksICciIicpCisgICAgICAgIHNlbGYuX3dyaXRlX2Vycm9yX3Rlc3QoY3N2LkVycm9yLCBpdGVyKFtOb25lXSksIHF1b3Rpbmc9Y3N2LlFVT1RFX05PTkUpCisgICAgICAgIHNlbGYuX3dyaXRlX3Rlc3QoaXRlcihbTm9uZSwgTm9uZV0pLCAnLCcpCisKICAgICBkZWYgdGVzdF93cml0ZXJvd3Moc2VsZik6CiAgICAgICAgIGNsYXNzIEJyb2tlbkZpbGU6CiAgICAgICAgICAgICBkZWYgd3JpdGUoc2VsZiwgYnVmKToKQEAgLTQxNiw2ICs0MjYsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjc3YucmVhZGVyLCBbXSwgcXVvdGluZyA9IC0xKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNzdi5yZWFkZXIsIFtdLCBxdW90aW5nID0gMTAwKQogCisgICAgIyBTZWUgaXNzdWUgIzIyOTk1CisgICAgIyMgZGVmIHRlc3RfY29weShzZWxmKToKKyAgICAjIyAgICAgZm9yIG5hbWUgaW4gY3N2Lmxpc3RfZGlhbGVjdHMoKToKKyAgICAjIyAgICAgICAgIGRpYWxlY3QgPSBjc3YuZ2V0X2RpYWxlY3QobmFtZSkKKyAgICAjIyAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29weS5jb3B5LCBkaWFsZWN0KQorCisgICAgIyMgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICMjICAgICBmb3IgbmFtZSBpbiBjc3YubGlzdF9kaWFsZWN0cygpOgorICAgICMjICAgICAgICAgZGlhbGVjdCA9IGNzdi5nZXRfZGlhbGVjdChuYW1lKQorICAgICMjICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgIyMgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwaWNrbGUuZHVtcHMsIGRpYWxlY3QsIHByb3RvKQorCiBjbGFzcyBUZXN0Q3N2QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHJlYWRlckFzc2VydEVxdWFsKHNlbGYsIGlucHV0LCBleHBlY3RlZF9yZXN1bHQpOgogICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoIncrIiwgbmV3bGluZT0nJykgYXMgZmlsZW9iajoKQEAgLTU3OCw2ICs2MDAsMTYgQEAKICAgICAgICAgICAgIGZpbGVvYmoucmVhZGxpbmUoKSAjIGhlYWRlcgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlb2JqLnJlYWQoKSwgIjEwLCxhYmNcclxuIikKIAorICAgIGRlZiB0ZXN0X3dyaXRlX211bHRpcGxlX2RpY3Rfcm93cyhzZWxmKToKKyAgICAgICAgZmlsZW9iaiA9IFN0cmluZ0lPKCkKKyAgICAgICAgd3JpdGVyID0gY3N2LkRpY3RXcml0ZXIoZmlsZW9iaiwgZmllbGRuYW1lcz1bImYxIiwgImYyIiwgImYzIl0pCisgICAgICAgIHdyaXRlci53cml0ZWhlYWRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZW9iai5nZXR2YWx1ZSgpLCAiZjEsZjIsZjNcclxuIikKKyAgICAgICAgd3JpdGVyLndyaXRlcm93cyhbeyJmMSI6IDEsICJmMiI6ICJhYmMiLCAiZjMiOiAiZiJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImYxIjogMiwgImYyIjogNSwgImYzIjogInh5eiJ9XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlb2JqLmdldHZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgImYxLGYyLGYzXHJcbjEsYWJjLGZcclxuMiw1LHh5elxyXG4iKQorCiAgICAgZGVmIHRlc3Rfd3JpdGVfbm9fZmllbGRzKHNlbGYpOgogICAgICAgICBmaWxlb2JqID0gU3RyaW5nSU8oKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNzdi5EaWN0V3JpdGVyLCBmaWxlb2JqKQpAQCAtNzc2LDcgKzgwOCw3IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoY3N2LkVycm9yKSBhcyBjbToKICAgICAgICAgICAgIG15ZGlhbGVjdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyJxdW90ZWNoYXIiIG11c3QgYmUgYW4gMS1jaGFyYWN0ZXIgc3RyaW5nJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAnInF1b3RlY2hhciIgbXVzdCBiZSBhIDEtY2hhcmFjdGVyIHN0cmluZycpCiAKICAgICAgICAgbXlkaWFsZWN0LnF1b3RlY2hhciA9IDQKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhjc3YuRXJyb3IpIGFzIGNtOgpAQCAtNzk5LDEzICs4MzEsMTMgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhjc3YuRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbXlkaWFsZWN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnImRlbGltaXRlciIgbXVzdCBiZSBhbiAxLWNoYXJhY3RlciBzdHJpbmcnKQorICAgICAgICAgICAgICAgICAgICAgICAgICciZGVsaW1pdGVyIiBtdXN0IGJlIGEgMS1jaGFyYWN0ZXIgc3RyaW5nJykKIAogICAgICAgICBteWRpYWxlY3QuZGVsaW1pdGVyID0gIiIKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhjc3YuRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbXlkaWFsZWN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnImRlbGltaXRlciIgbXVzdCBiZSBhbiAxLWNoYXJhY3RlciBzdHJpbmcnKQorICAgICAgICAgICAgICAgICAgICAgICAgICciZGVsaW1pdGVyIiBtdXN0IGJlIGEgMS1jaGFyYWN0ZXIgc3RyaW5nJykKIAogICAgICAgICBteWRpYWxlY3QuZGVsaW1pdGVyID0gYiIsIgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNzdi5FcnJvcikgYXMgY206CkBAIC0xMDY2LDExICsxMDk4LDUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZW9iai5yZWFkKCksIGV4cGVjdGVkKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBtb2QgPSBzeXMubW9kdWxlc1tfX25hbWVfX10KLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgKltnZXRhdHRyKG1vZCwgbmFtZSkgZm9yIG5hbWUgaW4gZGlyKG1vZCkgaWYgbmFtZS5zdGFydHN3aXRoKCdUZXN0JyldCi0gICAgKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2N1cnNlcy5weSBiL0xpYi90ZXN0L3Rlc3RfY3Vyc2VzLnB5CmluZGV4IGJkN2Q0ZmMuLjI3NDcwNDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY3Vyc2VzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3Vyc2VzLnB5CkBAIC0zNzAsNiArMzcwLDEzIEBACiAgICAgICAgIG9mZnNldCA9IGh1bWFuX3JlYWRhYmxlX3NpZ25hdHVyZS5maW5kKCJbeSwgeCxdIikKICAgICAgICAgYXNzZXJ0IG9mZnNldCA+PSAwLCAiIgogCisgICAgZGVmIHRlc3RfdXBkYXRlX2xpbmVzX2NvbHMoc2VsZik6CisgICAgICAgICMgdGhpcyBkb2Vzbid0IGFjdHVhbGx5IHRlc3QgdGhhdCBMSU5FUyBhbmQgQ09MUyBhcmUgdXBkYXRlZCwKKyAgICAgICAgIyBiZWNhdXNlIHdlIGNhbid0IGF1dG9tYXRlIGNoYW5naW5nIHRoZW0uIFNlZSBJc3N1ZSAjNDI1NCBmb3IKKyAgICAgICAgIyBhIG1hbnVhbCB0ZXN0IHNjcmlwdC4gV2UgY2FuIG9ubHkgdGVzdCB0aGF0IHRoZSBmdW5jdGlvbgorICAgICAgICAjIGNhbiBiZSBjYWxsZWQuCisgICAgICAgIGN1cnNlcy51cGRhdGVfbGluZXNfY29scygpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGF0ZXRpbWUucHkgYi9MaWIvdGVzdC90ZXN0X2RhdGV0aW1lLnB5CmluZGV4IGQ5ZGRiMzIuLjJkNGViNTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGF0ZXRpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kYXRldGltZS5weQpAQCAtMSwyMCArMSwyMCBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCisKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBpbXBvcnRfZnJlc2hfbW9kdWxlLCBydW5fdW5pdHRlc3QKIAogVEVTVFMgPSAndGVzdC5kYXRldGltZXRlc3RlcicKIAotIyBYWFg6IGltcG9ydF9mcmVzaF9tb2R1bGUoKSBpcyBzdXBwb3NlZCB0byBsZWF2ZSBzeXMubW9kdWxlIGNhY2hlIHVudG91Y2hlZCwKLSMgWFhYOiBidXQgaXQgZG9lcyBub3QsIHNvIHdlIGhhdmUgdG8gc2F2ZSBhbmQgcmVzdG9yZSBpdCBvdXJzZWx2ZXMuCi1zYXZlX3N5c19tb2R1bGVzID0gc3lzLm1vZHVsZXMuY29weSgpCiB0cnk6CiAgICAgcHVyZV90ZXN0cyA9IGltcG9ydF9mcmVzaF9tb2R1bGUoVEVTVFMsIGZyZXNoPVsnZGF0ZXRpbWUnLCAnX3N0cnB0aW1lJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZD1bJ19kYXRldGltZSddKQogICAgIGZhc3RfdGVzdHMgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKFRFU1RTLCBmcmVzaD1bJ2RhdGV0aW1lJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfZGF0ZXRpbWUnLCAnX3N0cnB0aW1lJ10pCiBmaW5hbGx5OgotICAgIHN5cy5tb2R1bGVzLmNsZWFyKCkKLSAgICBzeXMubW9kdWxlcy51cGRhdGUoc2F2ZV9zeXNfbW9kdWxlcykKKyAgICAjIFhYWDogaW1wb3J0X2ZyZXNoX21vZHVsZSgpIGlzIHN1cHBvc2VkIHRvIGxlYXZlIHN5cy5tb2R1bGUgY2FjaGUgdW50b3VjaGVkLAorICAgICMgWFhYOiBidXQgaXQgZG9lcyBub3QsIHNvIHdlIGhhdmUgdG8gY2xlYW51cCBvdXJzZWx2ZXMuCisgICAgZm9yIG1vZG5hbWUgaW4gWydkYXRldGltZScsICdfZGF0ZXRpbWUnLCAnX3N0cnB0aW1lJ106CisgICAgICAgIHN5cy5tb2R1bGVzLnBvcChtb2RuYW1lLCBOb25lKQogdGVzdF9tb2R1bGVzID0gW3B1cmVfdGVzdHMsIGZhc3RfdGVzdHNdCiB0ZXN0X3N1ZmZpeGVzID0gWyJfUHVyZSIsICJfRmFzdCJdCiAjIFhYWChnYikgRmlyc3QgcnVuIGFsbCB0aGUgX1B1cmUgdGVzdHMsIHRoZW4gYWxsIHRoZSBfRmFzdCB0ZXN0cy4gIFlvdSBtaWdodApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kYm1fZHVtYi5weSBiL0xpYi90ZXN0L3Rlc3RfZGJtX2R1bWIucHkKaW5kZXggZGM4OGNhNi4uZmY2M2M4OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYm1fZHVtYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RibV9kdW1iLnB5CkBAIC0yMTcsNiArMjE3LDE0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiREJNIG9iamVjdCBoYXMgYWxyZWFkeSBiZWVuIGNsb3NlZCIpCiAKKyAgICBkZWYgdGVzdF9jcmVhdGVfbmV3KHNlbGYpOgorICAgICAgICB3aXRoIGR1bWJkYm0ub3BlbihfZm5hbWUsICduJykgYXMgZjoKKyAgICAgICAgICAgIGZvciBrIGluIHNlbGYuX2RpY3Q6CisgICAgICAgICAgICAgICAgZltrXSA9IHNlbGYuX2RpY3Rba10KKworICAgICAgICB3aXRoIGR1bWJkYm0ub3BlbihfZm5hbWUsICduJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5rZXlzKCksIFtdKQorCiAgICAgZGVmIHRlc3RfZXZhbChzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKF9mbmFtZSArICcuZGlyJywgJ3cnKSBhcyBzdHJlYW06CiAgICAgICAgICAgICBzdHJlYW0ud3JpdGUoInN0cihwcmludCgnSGFja2VkIScpKSwgMFxuIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weSBiL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weQppbmRleCBhMTc4ZjZmLi4xMzdhYWE1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5CkBAIC0zMywxMiArMzMsMTMgQEAKIGltcG9ydCBudW1iZXJzCiBpbXBvcnQgbG9jYWxlCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHJ1bl91bml0dGVzdCwgcnVuX2RvY3Rlc3QsIGlzX3Jlc291cmNlX2VuYWJsZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzX0lFRUVfNzU0KQorICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlc19JRUVFXzc1NCwgcmVxdWlyZXNfZG9jc3RyaW5ncykKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoY2hlY2tfd2FybmluZ3MsIGltcG9ydF9mcmVzaF9tb2R1bGUsIFRlc3RGYWlsZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl93aXRoX2xvY2FsZSwgY3B5dGhvbl9vbmx5KQogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHRpbWUKIGltcG9ydCB3YXJuaW5ncworaW1wb3J0IGluc3BlY3QKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC00MTc0LDkgKzQxNzUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX192ZXJzaW9uX18sIFAuX192ZXJzaW9uX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX2xpYm1wZGVjX3ZlcnNpb25fXywgUC5fX2xpYm1wZGVjX3ZlcnNpb25fXykKIAotICAgICAgICB4ID0gZGlyKEMpCi0gICAgICAgIHkgPSBbcyBmb3IgcyBpbiBkaXIoUCkgaWYgJ19fJyBpbiBzIG9yIG5vdCBzLnN0YXJ0c3dpdGgoJ18nKV0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoeCkgLSBzZXQoeSksIHNldCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcihDKSwgZGlyKFApKQogCiAgICAgZGVmIHRlc3RfY29udGV4dF9hdHRyaWJ1dGVzKHNlbGYpOgogCkBAIC00NDU1LDE4ICs0NDU0LDYgQEAKIGNsYXNzIFB5RnVuY3Rpb25hbGl0eSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiRXh0cmEgZnVuY3Rpb25hbGl0eSBpbiBkZWNpbWFsLnB5IiIiCiAKLSAgICBkZWYgdGVzdF9weV9xdWFudGl6ZV93YXRjaGV4cChzZWxmKToKLSAgICAgICAgIyB3YXRjaGV4cCBmdW5jdGlvbmFsaXR5Ci0gICAgICAgIERlY2ltYWwgPSBQLkRlY2ltYWwKLSAgICAgICAgbG9jYWxjb250ZXh0ID0gUC5sb2NhbGNvbnRleHQKLQotICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6Ci0gICAgICAgICAgICBjLnByZWMgPSAxCi0gICAgICAgICAgICBjLkVtYXggPSAxCi0gICAgICAgICAgICBjLkVtaW4gPSAtMQotICAgICAgICAgICAgeCA9IERlY2ltYWwoOTk5OTkpLnF1YW50aXplKERlY2ltYWwoIjFlMyIpLCB3YXRjaGV4cD1GYWxzZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgRGVjaW1hbCgnMS4wMEUrNScpKQotCiAgICAgZGVmIHRlc3RfcHlfYWx0ZXJuYXRlX2Zvcm1hdHRpbmcoc2VsZik6CiAgICAgICAgICMgdHJpcGxlcyBnaXZpbmcgYSBmb3JtYXQsIGEgRGVjaW1hbCwgYW5kIHRoZSBleHBlY3RlZCByZXN1bHQKICAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbApAQCAtNTQwOSw2ICs1Mzk2LDE0MyBAQAogICAgICAgICAgICAgeSA9IERlY2ltYWwoMTAqKig5KjI1KSkuX19zaXplb2ZfXygpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgrNCkKIAorQHJlcXVpcmVzX2RvY3N0cmluZ3MKK0B1bml0dGVzdC5za2lwVW5sZXNzKEMsICJ0ZXN0IHJlcXVpcmVzIEMgdmVyc2lvbiIpCitjbGFzcyBTaWduYXR1cmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJGdW5jdGlvbiBzaWduYXR1cmVzIiIiCisKKyAgICBkZWYgdGVzdF9pbnNwZWN0X21vZHVsZShzZWxmKToKKyAgICAgICAgZm9yIGF0dHIgaW4gZGlyKFApOgorICAgICAgICAgICAgaWYgYXR0ci5zdGFydHN3aXRoKCdfJyk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHBfZnVuYyA9IGdldGF0dHIoUCwgYXR0cikKKyAgICAgICAgICAgIGNfZnVuYyA9IGdldGF0dHIoQywgYXR0cikKKyAgICAgICAgICAgIGlmIChhdHRyID09ICdEZWNpbWFsJyBvciBhdHRyID09ICdDb250ZXh0JyBvcgorICAgICAgICAgICAgICAgIGluc3BlY3QuaXNmdW5jdGlvbihwX2Z1bmMpKToKKyAgICAgICAgICAgICAgICBwX3NpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHBfZnVuYykKKyAgICAgICAgICAgICAgICBjX3NpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGNfZnVuYykKKworICAgICAgICAgICAgICAgICMgcGFyYW1ldGVyIG5hbWVzOgorICAgICAgICAgICAgICAgIGNfbmFtZXMgPSBsaXN0KGNfc2lnLnBhcmFtZXRlcnMua2V5cygpKQorICAgICAgICAgICAgICAgIHBfbmFtZXMgPSBbeCBmb3IgeCBpbiBwX3NpZy5wYXJhbWV0ZXJzLmtleXMoKSBpZiBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHguc3RhcnRzd2l0aCgnXycpXQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjX25hbWVzLCBwX25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJwYXJhbWV0ZXIgbmFtZSBtaXNtYXRjaCBpbiAlcyIgJSBwX2Z1bmMpCisKKyAgICAgICAgICAgICAgICBjX2tpbmQgPSBbeC5raW5kIGZvciB4IGluIGNfc2lnLnBhcmFtZXRlcnMudmFsdWVzKCldCisgICAgICAgICAgICAgICAgcF9raW5kID0gW3hbMV0ua2luZCBmb3IgeCBpbiBwX3NpZy5wYXJhbWV0ZXJzLml0ZW1zKCkgaWYgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgIHhbMF0uc3RhcnRzd2l0aCgnXycpXQorCisgICAgICAgICAgICAgICAgIyBwYXJhbWV0ZXJzOgorICAgICAgICAgICAgICAgIGlmIGF0dHIgIT0gJ3NldGNvbnRleHQnOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNfa2luZCwgcF9raW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0icGFyYW1ldGVyIGtpbmQgbWlzbWF0Y2ggaW4gJXMiICUgcF9mdW5jKQorCisgICAgZGVmIHRlc3RfaW5zcGVjdF90eXBlcyhzZWxmKToKKworICAgICAgICBQT1MgPSBpbnNwZWN0Ll9QYXJhbWV0ZXJLaW5kLlBPU0lUSU9OQUxfT05MWQorICAgICAgICBQT1NfS1dEID0gaW5zcGVjdC5fUGFyYW1ldGVyS2luZC5QT1NJVElPTkFMX09SX0tFWVdPUkQKKworICAgICAgICAjIFR5cGUgaGV1cmlzdGljICh0eXBlIGFubm90YXRpb25zIHdvdWxkIGhlbHAhKToKKyAgICAgICAgcGRpY3QgPSB7QzogeydvdGhlcic6IEMuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICd0aGlyZCc6IEMuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICd4JzogQy5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ3knOiBDLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAneic6IEMuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICdhJzogQy5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ2InOiBDLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAnYyc6IEMuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICdleHAnOiBDLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAnbW9kdWxvJzogQy5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ251bSc6ICIxIiwKKyAgICAgICAgICAgICAgICAgICAgICdmJzogMS4wLAorICAgICAgICAgICAgICAgICAgICAgJ3JvdW5kaW5nJzogQy5ST1VORF9IQUxGX1VQLAorICAgICAgICAgICAgICAgICAgICAgJ2NvbnRleHQnOiBDLmdldGNvbnRleHQoKX0sCisgICAgICAgICAgICAgICAgIFA6IHsnb3RoZXInOiBQLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAndGhpcmQnOiBQLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAnYSc6IFAuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICdiJzogUC5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ2MnOiBQLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAnZXhwJzogUC5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ21vZHVsbyc6IFAuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICdudW0nOiAiMSIsCisgICAgICAgICAgICAgICAgICAgICAnZic6IDEuMCwKKyAgICAgICAgICAgICAgICAgICAgICdyb3VuZGluZyc6IFAuUk9VTkRfSEFMRl9VUCwKKyAgICAgICAgICAgICAgICAgICAgICdjb250ZXh0JzogUC5nZXRjb250ZXh0KCl9fQorCisgICAgICAgIGRlZiBta2FyZ3MobW9kdWxlLCBzaWcpOgorICAgICAgICAgICAgYXJncyA9IFtdCisgICAgICAgICAgICBrd2FyZ3MgPSB7fQorICAgICAgICAgICAgZm9yIG5hbWUsIHBhcmFtIGluIHNpZy5wYXJhbWV0ZXJzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgaWYgbmFtZSA9PSAnc2VsZic6IGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgcGFyYW0ua2luZCA9PSBQT1M6CisgICAgICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKHBkaWN0W21vZHVsZV1bbmFtZV0pCisgICAgICAgICAgICAgICAgZWxpZiBwYXJhbS5raW5kID09IFBPU19LV0Q6CisgICAgICAgICAgICAgICAgICAgIGt3YXJnc1tuYW1lXSA9IHBkaWN0W21vZHVsZV1bbmFtZV0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUZXN0RmFpbGVkKCJ1bmV4cGVjdGVkIHBhcmFtZXRlciBraW5kIikKKyAgICAgICAgICAgIHJldHVybiBhcmdzLCBrd2FyZ3MKKworICAgICAgICBkZWYgdHIocyk6CisgICAgICAgICAgICAiIiJUaGUgQyBDb250ZXh0IGRvY3N0cmluZ3MgdXNlICd4JyBpbiBvcmRlciB0byBwcmV2ZW50IGNvbmZ1c2lvbgorICAgICAgICAgICAgICAgd2l0aCB0aGUgYXJ0aWNsZSAnYScgaW4gdGhlIGRlc2NyaXB0aW9ucy4iIiIKKyAgICAgICAgICAgIGlmIHMgPT0gJ3gnOiByZXR1cm4gJ2EnCisgICAgICAgICAgICBpZiBzID09ICd5JzogcmV0dXJuICdiJworICAgICAgICAgICAgaWYgcyA9PSAneic6IHJldHVybiAnYycKKyAgICAgICAgICAgIHJldHVybiBzCisKKyAgICAgICAgZGVmIGRvaXQodHkpOgorICAgICAgICAgICAgcF90eXBlID0gZ2V0YXR0cihQLCB0eSkKKyAgICAgICAgICAgIGNfdHlwZSA9IGdldGF0dHIoQywgdHkpCisgICAgICAgICAgICBmb3IgYXR0ciBpbiBkaXIocF90eXBlKToKKyAgICAgICAgICAgICAgICBpZiBhdHRyLnN0YXJ0c3dpdGgoJ18nKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBwX2Z1bmMgPSBnZXRhdHRyKHBfdHlwZSwgYXR0cikKKyAgICAgICAgICAgICAgICBjX2Z1bmMgPSBnZXRhdHRyKGNfdHlwZSwgYXR0cikKKyAgICAgICAgICAgICAgICBpZiBpbnNwZWN0LmlzZnVuY3Rpb24ocF9mdW5jKToKKyAgICAgICAgICAgICAgICAgICAgcF9zaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShwX2Z1bmMpCisgICAgICAgICAgICAgICAgICAgIGNfc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoY19mdW5jKQorCisgICAgICAgICAgICAgICAgICAgICMgcGFyYW1ldGVyIG5hbWVzOgorICAgICAgICAgICAgICAgICAgICBwX25hbWVzID0gbGlzdChwX3NpZy5wYXJhbWV0ZXJzLmtleXMoKSkKKyAgICAgICAgICAgICAgICAgICAgY19uYW1lcyA9IFt0cih4KSBmb3IgeCBpbiBjX3NpZy5wYXJhbWV0ZXJzLmtleXMoKV0KKworICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNfbmFtZXMsIHBfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJwYXJhbWV0ZXIgbmFtZSBtaXNtYXRjaCBpbiAlcyIgJSBwX2Z1bmMpCisKKyAgICAgICAgICAgICAgICAgICAgcF9raW5kID0gW3gua2luZCBmb3IgeCBpbiBwX3NpZy5wYXJhbWV0ZXJzLnZhbHVlcygpXQorICAgICAgICAgICAgICAgICAgICBjX2tpbmQgPSBbeC5raW5kIGZvciB4IGluIGNfc2lnLnBhcmFtZXRlcnMudmFsdWVzKCldCisKKyAgICAgICAgICAgICAgICAgICAgIyAnc2VsZicgcGFyYW1ldGVyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHBfa2luZFswXSwgUE9TX0tXRCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjX2tpbmRbMF0sIFBPUykKKworICAgICAgICAgICAgICAgICAgICAjIHJlbWFpbmluZyBwYXJhbWV0ZXJzOgorICAgICAgICAgICAgICAgICAgICBpZiB0eSA9PSAnRGVjaW1hbCc6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNfa2luZFsxOl0sIHBfa2luZFsxOl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0icGFyYW1ldGVyIGtpbmQgbWlzbWF0Y2ggaW4gJXMiICUgcF9mdW5jKQorICAgICAgICAgICAgICAgICAgICBlbHNlOiAjIENvbnRleHQgbWV0aG9kcyBhcmUgcG9zaXRpb25hbCBvbmx5IGluIHRoZSBDIHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjX2tpbmQpLCBsZW4ocF9raW5kKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJwYXJhbWV0ZXIga2luZCBtaXNtYXRjaCBpbiAlcyIgJSBwX2Z1bmMpCisKKyAgICAgICAgICAgICAgICAgICAgIyBSdW4gdGhlIGZ1bmN0aW9uOgorICAgICAgICAgICAgICAgICAgICBhcmdzLCBrd2RzID0gbWthcmdzKEMsIGNfc2lnKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKGNfdHlwZSg5KSwgYXR0cikoKmFyZ3MsICoqa3dkcykKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUZXN0RmFpbGVkKCJpbnZhbGlkIHNpZ25hdHVyZSBmb3IgJXM6ICVzICVzIiAlIChjX2Z1bmMsIGFyZ3MsIGt3ZHMpKQorCisgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGt3ZHMgPSBta2FyZ3MoUCwgcF9zaWcpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIocF90eXBlKDkpLCBhdHRyKSgqYXJncywgKiprd2RzKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRlc3RGYWlsZWQoImludmFsaWQgc2lnbmF0dXJlIGZvciAlczogJXMgJXMiICUgKHBfZnVuYywgYXJncywga3dkcykpCisKKyAgICAgICAgZG9pdCgnRGVjaW1hbCcpCisgICAgICAgIGRvaXQoJ0NvbnRleHQnKQorCisKIGFsbF90ZXN0cyA9IFsKICAgQ0V4cGxpY2l0Q29uc3RydWN0aW9uVGVzdCwgUHlFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QsCiAgIENJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QsIFB5SW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0LApAQCAtNTQzNCw2ICs1NTU4LDcgQEAKICAgICBhbGxfdGVzdHMgPSBhbGxfdGVzdHNbMTo6Ml0KIGVsc2U6CiAgICAgYWxsX3Rlc3RzLmluc2VydCgwLCBDaGVja0F0dHJpYnV0ZXMpCisgICAgYWxsX3Rlc3RzLmluc2VydCgxLCBTaWduYXR1cmVUZXN0KQogCiAKIGRlZiB0ZXN0X21haW4oYXJpdGg9Tm9uZSwgdmVyYm9zZT1Ob25lLCB0b2RvX3Rlc3RzPU5vbmUsIGRlYnVnPU5vbmUpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZWNvcmF0b3JzLnB5IGIvTGliL3Rlc3QvdGVzdF9kZWNvcmF0b3JzLnB5CmluZGV4IDUzYzk0NjkuLmQwYTJlYzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVjb3JhdG9ycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RlY29yYXRvcnMucHkKQEAgLTEsNSArMSw0IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBkZWYgZnVuY2F0dHJzKCoqa3dkcyk6CiAgICAgZGVmIGRlY29yYXRlKGZ1bmMpOgpAQCAtMzAxLDkgKzMwMCw1IEBACiAgICAgICAgIGNsYXNzIEMob2JqZWN0KTogcGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuZXh0cmEsICdzZWNvbmQnKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdERlY29yYXRvcnMpCi0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdENsYXNzRGVjb3JhdG9ycykKLQotaWYgX19uYW1lX189PSJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RlZmF1bHRkaWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9kZWZhdWx0ZGljdC5weQppbmRleCA1MzJkNTM1Li5hOTBiYzJiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RlZmF1bHRkaWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVmYXVsdGRpY3QucHkKQEAgLTUsNyArNSw2IEBACiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CiAKQEAgLTE1Nyw4ICsxNTYsOSBAQAogICAgICAgICAgICAgZGVmIF9mYWN0b3J5KHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBbXQogICAgICAgICBkID0gc3ViKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIoZCkuc3RhcnRzd2l0aCgKLSAgICAgICAgICAgICJkZWZhdWx0ZGljdCg8Ym91bmQgbWV0aG9kIHN1Yi5fZmFjdG9yeSBvZiBkZWZhdWx0ZGljdCguLi4iKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKGQpLAorICAgICAgICAgICAgciJkZWZhdWx0ZGljdFwoPGJvdW5kIG1ldGhvZCAuKnN1YlwuX2ZhY3RvcnkgIgorICAgICAgICAgICAgciJvZiBkZWZhdWx0ZGljdFwoXC5cLlwuLCBce1x9XCk+LCBce1x9XCkiKQogCiAgICAgICAgICMgTk9URTogcHJpbnRpbmcgYSBzdWJjbGFzcyBvZiBhIGJ1aWx0aW4gdHlwZSBkb2VzIG5vdCBjYWxsIGl0cwogICAgICAgICAjIHRwX3ByaW50IHNsb3QuIFNvIHRoaXMgcGFydCBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSB0ZXN0IGFzIGFib3ZlLgpAQCAtMTgzLDggKzE4Myw1IEBACiAgICAgICAgICAgICBvID0gcGlja2xlLmxvYWRzKHMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIG8pCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0RGVmYXVsdERpY3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkgYi9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CmluZGV4IDVlY2JjNzMuLjg3MTg3MTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQpAQCAtMTY0LDYgKzE2NCwyNiBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCA+ICB5LCBsaXN0KHgpID4gIGxpc3QoeSksICh4LHkpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCA+PSB5LCBsaXN0KHgpID49IGxpc3QoeSksICh4LHkpKQogCisgICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZik6CisgICAgICAgIG4gPSAyMDAKKworICAgICAgICBkID0gZGVxdWUocmFuZ2UobikpCisgICAgICAgIGZvciBpIGluIHJhbmdlKG4pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGkgaW4gZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKChuKzEpIG5vdCBpbiBkKQorCisgICAgICAgICMgVGVzdCBkZXRlY3Rpb24gb2YgbXV0YXRpb24gZHVyaW5nIGl0ZXJhdGlvbgorICAgICAgICBkID0gZGVxdWUocmFuZ2UobikpCisgICAgICAgIGRbbi8vMl0gPSBNdXRhdGVDbXAoZCwgRmFsc2UpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIG4gaW4gZAorCisgICAgICAgICMgVGVzdCBkZXRlY3Rpb24gb2YgY29tcGFyaXNvbiBleGNlcHRpb25zCisgICAgICAgIGQgPSBkZXF1ZShyYW5nZShuKSkKKyAgICAgICAgZFtuLy8yXSA9IEJhZENtcCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIG4gaW4gZAorCiAgICAgZGVmIHRlc3RfZXh0ZW5kKHNlbGYpOgogICAgICAgICBkID0gZGVxdWUoJ2EnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGQuZXh0ZW5kLCAxKQpAQCAtMTcyLDYgKzE5MiwyNiBAQAogICAgICAgICBkLmV4dGVuZChkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoJ2FiY2RhYmNkJykpCiAKKyAgICBkZWYgdGVzdF9hZGQoc2VsZik6CisgICAgICAgIGQgPSBkZXF1ZSgpCisgICAgICAgIGUgPSBkZXF1ZSgnYWJjJykKKyAgICAgICAgZiA9IGRlcXVlKCdkZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQgKyBkLCBkZXF1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUgKyBmLCBkZXF1ZSgnYWJjZGVmJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSArIGUsIGRlcXVlKCdhYmNhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlICsgZCwgZGVxdWUoJ2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQgKyBlLCBkZXF1ZSgnYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoZCArIGQsIGRlcXVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoZSArIGQsIGRlcXVlKCdhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChkICsgZSwgZGVxdWUoJ2FiYycpKQorCisgICAgICAgIGcgPSBkZXF1ZSgnYWJjZGVmJywgbWF4bGVuPTQpCisgICAgICAgIGggPSBkZXF1ZSgnZ2gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcgKyBoLCBkZXF1ZSgnZWZnaCcpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGRlcXVlKCdhYmMnKSArICdkZWYnCisKICAgICBkZWYgdGVzdF9pYWRkKHNlbGYpOgogICAgICAgICBkID0gZGVxdWUoJ2EnKQogICAgICAgICBkICs9ICdiY2QnCkBAIC0yMTEsNiArMjUxLDExNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBkLl9fZ2V0aXRlbV9fLCAwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBkLl9fZ2V0aXRlbV9fLCAtMSkKIAorICAgIGRlZiB0ZXN0X2luZGV4KHNlbGYpOgorICAgICAgICBmb3IgbiBpbiAxLCAyLCAzMCwgNDAsIDIwMDoKKworICAgICAgICAgICAgZCA9IGRlcXVlKHJhbmdlKG4pKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmluZGV4KGkpLCBpKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgIGQuaW5kZXgobisxKQorCisgICAgICAgICAgICAjIFRlc3QgZGV0ZWN0aW9uIG9mIG11dGF0aW9uIGR1cmluZyBpdGVyYXRpb24KKyAgICAgICAgICAgIGQgPSBkZXF1ZShyYW5nZShuKSkKKyAgICAgICAgICAgIGRbbi8vMl0gPSBNdXRhdGVDbXAoZCwgRmFsc2UpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICAgICAgZC5pbmRleChuKQorCisgICAgICAgICAgICAjIFRlc3QgZGV0ZWN0aW9uIG9mIGNvbXBhcmlzb24gZXhjZXB0aW9ucworICAgICAgICAgICAgZCA9IGRlcXVlKHJhbmdlKG4pKQorICAgICAgICAgICAgZFtuLy8yXSA9IEJhZENtcCgpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICAgICAgZC5pbmRleChuKQorCisgICAgICAgICMgVGVzdCBzdGFydCBhbmQgc3RvcCBhcmd1bWVudHMgYmVoYXZpb3IgbWF0Y2hlcyBsaXN0LmluZGV4KCkKKyAgICAgICAgZWxlbWVudHMgPSAnQUJDREVGR0hJJworICAgICAgICBub25lbGVtZW50ID0gJ1onCisgICAgICAgIGQgPSBkZXF1ZShlbGVtZW50cyAqIDIpCisgICAgICAgIHMgPSBsaXN0KGVsZW1lbnRzICogMikKKyAgICAgICAgZm9yIHN0YXJ0IGluIHJhbmdlKC01IC0gbGVuKHMpKjIsIDUgKyBsZW4ocykgKiAyKToKKyAgICAgICAgICAgIGZvciBzdG9wIGluIHJhbmdlKC01IC0gbGVuKHMpKjIsIDUgKyBsZW4ocykgKiAyKToKKyAgICAgICAgICAgICAgICBmb3IgZWxlbWVudCBpbiBlbGVtZW50cyArICdaJzoKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gcy5pbmRleChlbGVtZW50LCBzdGFydCwgc3RvcCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuaW5kZXgoZWxlbWVudCwgc3RhcnQsIHN0b3ApCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuaW5kZXgoZWxlbWVudCwgc3RhcnQsIHN0b3ApLCB0YXJnZXQpCisKKyAgICBkZWYgdGVzdF9pbnNlcnRfYnVnXzI0OTEzKHNlbGYpOgorICAgICAgICBkID0gZGVxdWUoJ0EnICogMykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGkgPSBkLmluZGV4KCJIZWxsbyB3b3JsZCIsIDAsIDQpCisKKyAgICBkZWYgdGVzdF9pbnNlcnQoc2VsZik6CisgICAgICAgICMgVGVzdCB0byBtYWtlIHN1cmUgaW5zZXJ0IGJlaGF2ZXMgbGlrZSBsaXN0cworICAgICAgICBlbGVtZW50cyA9ICdBQkNERUZHSEknCisgICAgICAgIGZvciBpIGluIHJhbmdlKC01IC0gbGVuKGVsZW1lbnRzKSoyLCA1ICsgbGVuKGVsZW1lbnRzKSAqIDIpOgorICAgICAgICAgICAgZCA9IGRlcXVlKCdBQkNERUZHSEknKQorICAgICAgICAgICAgcyA9IGxpc3QoJ0FCQ0RFRkdISScpCisgICAgICAgICAgICBkLmluc2VydChpLCAnWicpCisgICAgICAgICAgICBzLmluc2VydChpLCAnWicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIHMpCisKKyAgICBkZWYgdGVzdF9pbXVsKHNlbGYpOgorICAgICAgICBmb3IgbiBpbiAoLTEwLCAtMSwgMCwgMSwgMiwgMTAsIDEwMDApOgorICAgICAgICAgICAgZCA9IGRlcXVlKCkKKyAgICAgICAgICAgIGQgKj0gbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBkZXF1ZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZC5tYXhsZW4pCisKKyAgICAgICAgZm9yIG4gaW4gKC0xMCwgLTEsIDAsIDEsIDIsIDEwLCAxMDAwKToKKyAgICAgICAgICAgIGQgPSBkZXF1ZSgnYScpCisgICAgICAgICAgICBkICo9IG4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZGVxdWUoJ2EnICogbikpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShkLm1heGxlbikKKworICAgICAgICBmb3IgbiBpbiAoLTEwLCAtMSwgMCwgMSwgMiwgMTAsIDQ5OSwgNTAwLCA1MDEsIDEwMDApOgorICAgICAgICAgICAgZCA9IGRlcXVlKCdhJywgNTAwKQorICAgICAgICAgICAgZCAqPSBuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGRlcXVlKCdhJyAqIG1pbihuLCA1MDApKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5tYXhsZW4sIDUwMCkKKworICAgICAgICBmb3IgbiBpbiAoLTEwLCAtMSwgMCwgMSwgMiwgMTAsIDEwMDApOgorICAgICAgICAgICAgZCA9IGRlcXVlKCdhYmNkZWYnKQorICAgICAgICAgICAgZCAqPSBuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGRlcXVlKCdhYmNkZWYnICogbikpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShkLm1heGxlbikKKworICAgICAgICBmb3IgbiBpbiAoLTEwLCAtMSwgMCwgMSwgMiwgMTAsIDQ5OSwgNTAwLCA1MDEsIDEwMDApOgorICAgICAgICAgICAgZCA9IGRlcXVlKCdhYmNkZWYnLCA1MDApCisgICAgICAgICAgICBkICo9IG4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZGVxdWUoKCdhYmNkZWYnICogbilbLTUwMDpdKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5tYXhsZW4sIDUwMCkKKworICAgIGRlZiB0ZXN0X211bChzZWxmKToKKyAgICAgICAgZCA9IGRlcXVlKCdhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQgKiAtNSwgZGVxdWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkICogMCwgZGVxdWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkICogMSwgZGVxdWUoJ2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQgKiAyLCBkZXF1ZSgnYWJjYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCAqIDMsIGRlcXVlKCdhYmNhYmNhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChkICogMSwgZCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlcXVlKCkgKiAwLCBkZXF1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlcXVlKCkgKiAxLCBkZXF1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlcXVlKCkgKiA1LCBkZXF1ZSgpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTUgKiBkLCBkZXF1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAgKiBkLCBkZXF1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEgKiBkLCBkZXF1ZSgnYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiAqIGQsIGRlcXVlKCdhYmNhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzICogZCwgZGVxdWUoJ2FiY2FiY2FiYycpKQorCisgICAgICAgIGQgPSBkZXF1ZSgnYWJjJywgbWF4bGVuPTUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCAqIC01LCBkZXF1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQgKiAwLCBkZXF1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQgKiAxLCBkZXF1ZSgnYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCAqIDIsIGRlcXVlKCdiY2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQgKiAzMCwgZGVxdWUoJ2JjYWJjJykpCisKICAgICBkZWYgdGVzdF9zZXRpdGVtKHNlbGYpOgogICAgICAgICBuID0gMjAwCiAgICAgICAgIGQgPSBkZXF1ZShyYW5nZShuKSkKQEAgLTUwNCwxMCArNjU0LDI0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCiAKKyAgICBkZWYgdGVzdF9jb3B5X21ldGhvZChzZWxmKToKKyAgICAgICAgbXV0ID0gWzEwXQorICAgICAgICBkID0gZGVxdWUoW211dF0pCisgICAgICAgIGUgPSBkLmNvcHkoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCisgICAgICAgIG11dFswXSA9IDExCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCisKICAgICBkZWYgdGVzdF9yZXZlcnNlZChzZWxmKToKICAgICAgICAgZm9yIHMgaW4gKCdhYmNkJywgcmFuZ2UoMjAwMCkpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJldmVyc2VkKGRlcXVlKHMpKSksIGxpc3QocmV2ZXJzZWQocykpKQogCisgICAgZGVmIHRlc3RfcmV2ZXJzZWRfbmV3KHNlbGYpOgorICAgICAgICBrbGFzcyA9IHR5cGUocmV2ZXJzZWQoZGVxdWUoKSkpCisgICAgICAgIGZvciBzIGluICgnYWJjZCcsIHJhbmdlKDIwMDApKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChrbGFzcyhkZXF1ZShzKSkpLCBsaXN0KHJldmVyc2VkKHMpKSkKKwogICAgIGRlZiB0ZXN0X2djX2RvZXNudF9ibG93dXAoc2VsZik6CiAgICAgICAgIGltcG9ydCBnYwogICAgICAgICAjIFRoaXMgdXNlZCB0byBhc3NlcnQtZmFpbCBpbiBkZXF1ZV90cmF2ZXJzZSgpIHVuZGVyIGEgZGVidWcKQEAgLTUzNyw3ICs3MDEsNyBAQAogCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc2l6ZW9mKHNlbGYpOgotICAgICAgICBCTE9DS0xFTiA9IDYyCisgICAgICAgIEJMT0NLTEVOID0gNjQKICAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCcyUDRubFAnKQogICAgICAgICBibG9ja3NpemUgPSBzdHJ1Y3QuY2FsY3NpemUoJzJQJWRQJyAlIEJMT0NLTEVOKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iamVjdC5fX3NpemVvZl9fKGRlcXVlKCkpLCBiYXNlc2l6ZSkKQEAgLTY4NCw2ICs4NDgsMjEgQEAKICAgICAgICAgIyBTRiBidWcgIzE0ODY2NjMgLS0gdGhpcyB1c2VkIHRvIGVycm9uZW91c2x5IHJhaXNlIGEgVHlwZUVycm9yCiAgICAgICAgIFN1YmNsYXNzV2l0aEt3YXJncyhuZXdhcmc9MSkKIAorY2xhc3MgVGVzdFNlcXVlbmNlKHNlcV90ZXN0cy5Db21tb25UZXN0KToKKyAgICB0eXBlMnRlc3QgPSBkZXF1ZQorCisgICAgZGVmIHRlc3RfZ2V0aXRlbShzZWxmKToKKyAgICAgICAgIyBGb3Igbm93LCBieXBhc3MgdGVzdHMgdGhhdCByZXF1aXJlIHNsaWNpbmcKKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfZ2V0c2xpY2Uoc2VsZik6CisgICAgICAgICMgRm9yIG5vdywgYnlwYXNzIHRlc3RzIHRoYXQgcmVxdWlyZSBzbGljaW5nCisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X3N1YnNjcmlwdChzZWxmKToKKyAgICAgICAgIyBGb3Igbm93LCBieXBhc3MgdGVzdHMgdGhhdCByZXF1aXJlIHNsaWNpbmcKKyAgICAgICAgcGFzcworCiAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIGxpYnJlZnRlc3QgPSAiIiIKQEAgLTc5OCw2ICs5NzcsNyBAQAogICAgICAgICBUZXN0VmFyaW91c0l0ZXJhdG9yQXJncywKICAgICAgICAgVGVzdFN1YmNsYXNzLAogICAgICAgICBUZXN0U3ViY2xhc3NXaXRoS3dhcmdzLAorICAgICAgICBUZXN0U2VxdWVuY2UsCiAgICAgKQogCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkgYi9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CmluZGV4IDY0YTRhMzYuLmY1ZTRiMDIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXNjci5weQpAQCAtMjEsNiArMjEsNyBAQAogICAgICAgICAgICAgJ2FkZCc6ICcrJywKICAgICAgICAgICAgICdzdWInOiAnLScsCiAgICAgICAgICAgICAnbXVsJzogJyonLAorICAgICAgICAgICAgJ21hdG11bCc6ICdAJywKICAgICAgICAgICAgICd0cnVlZGl2JzogJy8nLAogICAgICAgICAgICAgJ2Zsb29yZGl2JzogJy8vJywKICAgICAgICAgICAgICdkaXZtb2QnOiAnZGl2bW9kJywKQEAgLTEwMTksNiArMTAyMCw2NyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZm9vLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguX19kaWN0X18sIHsnZm9vJzogMX0pCiAKKyAgICBkZWYgdGVzdF9vYmplY3RfY2xhc3NfYXNzaWdubWVudF9iZXR3ZWVuX2hlYXB0eXBlc19hbmRfbm9uaGVhcHR5cGVzKHNlbGYpOgorICAgICAgICBjbGFzcyBTdWJUeXBlKHR5cGVzLk1vZHVsZVR5cGUpOgorICAgICAgICAgICAgYSA9IDEKKworICAgICAgICBtID0gdHlwZXMuTW9kdWxlVHlwZSgibSIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLl9fY2xhc3NfXyBpcyB0eXBlcy5Nb2R1bGVUeXBlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobSwgImEiKSkKKworICAgICAgICBtLl9fY2xhc3NfXyA9IFN1YlR5cGUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uX19jbGFzc19fIGlzIFN1YlR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG0sICJhIikpCisKKyAgICAgICAgbS5fX2NsYXNzX18gPSB0eXBlcy5Nb2R1bGVUeXBlCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLl9fY2xhc3NfXyBpcyB0eXBlcy5Nb2R1bGVUeXBlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobSwgImEiKSkKKworICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IGJ1aWx0aW4gaW1tdXRhYmxlIG9iamVjdHMgZG9uJ3Qgc3VwcG9ydCBfX2NsYXNzX18KKyAgICAgICAgIyBhc3NpZ25tZW50LCBiZWNhdXNlIHRoZSBvYmplY3QgaW5zdGFuY2VzIG1heSBiZSBpbnRlcm5lZC4KKyAgICAgICAgIyBXZSBzZXQgX19zbG90c19fID0gKCkgdG8gZW5zdXJlIHRoYXQgdGhlIHN1YmNsYXNzZXMgYXJlCisgICAgICAgICMgbWVtb3J5LWxheW91dCBjb21wYXRpYmxlLCBhbmQgdGh1cyBvdGhlcndpc2UgcmVhc29uYWJsZSBjYW5kaWRhdGVzCisgICAgICAgICMgZm9yIF9fY2xhc3NfXyBhc3NpZ25tZW50LgorCisgICAgICAgICMgVGhlIGZvbGxvd2luZyB0eXBlcyBoYXZlIGltbXV0YWJsZSBpbnN0YW5jZXMsIGJ1dCBhcmUgbm90CisgICAgICAgICMgc3ViY2xhc3NhYmxlIGFuZCB0aHVzIGRvbid0IG5lZWQgdG8gYmUgY2hlY2tlZDoKKyAgICAgICAgIyAgIE5vbmVUeXBlLCBib29sCisKKyAgICAgICAgY2xhc3MgTXlJbnQoaW50KToKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICgxKS5fX2NsYXNzX18gPSBNeUludAorCisgICAgICAgIGNsYXNzIE15RmxvYXQoZmxvYXQpOgorICAgICAgICAgICAgX19zbG90c19fID0gKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgKDEuMCkuX19jbGFzc19fID0gTXlGbG9hdAorCisgICAgICAgIGNsYXNzIE15Q29tcGxleChjb21wbGV4KToKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICgxICsgMmopLl9fY2xhc3NfXyA9IE15Q29tcGxleAorCisgICAgICAgIGNsYXNzIE15U3RyKHN0cik6CisgICAgICAgICAgICBfX3Nsb3RzX18gPSAoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAiYSIuX19jbGFzc19fID0gTXlTdHIKKworICAgICAgICBjbGFzcyBNeUJ5dGVzKGJ5dGVzKToKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGIiYSIuX19jbGFzc19fID0gTXlCeXRlcworCisgICAgICAgIGNsYXNzIE15VHVwbGUodHVwbGUpOgorICAgICAgICAgICAgX19zbG90c19fID0gKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgKCkuX19jbGFzc19fID0gTXlUdXBsZQorCisgICAgICAgIGNsYXNzIE15RnJvemVuU2V0KGZyb3plbnNldCk6CisgICAgICAgICAgICBfX3Nsb3RzX18gPSAoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBmcm96ZW5zZXQoKS5fX2NsYXNzX18gPSBNeUZyb3plblNldAorCiAgICAgZGVmIHRlc3Rfc2xvdHMoc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBfX3Nsb3RzX18uLi4KICAgICAgICAgY2xhc3MgQzAob2JqZWN0KToKQEAgLTIwMDUsNyArMjA2Nyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXMocmF3LmZzZXQsIEMuX19kaWN0X19bJ3NldHgnXSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyhyYXcuZmRlbCwgQy5fX2RpY3RfX1snZGVseCddKQogCi0gICAgICAgIGZvciBhdHRyIGluICJfX2RvY19fIiwgImZnZXQiLCAiZnNldCIsICJmZGVsIjoKKyAgICAgICAgZm9yIGF0dHIgaW4gImZnZXQiLCAiZnNldCIsICJmZGVsIjoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZXRhdHRyKHJhdywgYXR0ciwgNDIpCiAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgbXNnOgpAQCAtMjAxNiw2ICsyMDc4LDkgQEAKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImV4cGVjdGVkIEF0dHJpYnV0ZUVycm9yIGZyb20gdHJ5aW5nIHRvIHNldCByZWFkb25seSAlciAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRyIG9uIGEgcHJvcGVydHkiICUgYXR0cikKIAorICAgICAgICByYXcuX19kb2NfXyA9IDQyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmF3Ll9fZG9jX18sIDQyKQorCiAgICAgICAgIGNsYXNzIEQob2JqZWN0KToKICAgICAgICAgICAgIF9fZ2V0aXRlbV9fID0gcHJvcGVydHkobGFtYmRhIHM6IDEvMCkKIApAQCAtMzAwMyw4ICszMDY4LDYgQEAKICAgICAgICAgY2FudChvYmplY3QoKSwgbGlzdCkKICAgICAgICAgY2FudChsaXN0KCksIG9iamVjdCkKICAgICAgICAgY2xhc3MgSW50KGludCk6IF9fc2xvdHNfXyA9IFtdCi0gICAgICAgIGNhbnQoMiwgSW50KQotICAgICAgICBjYW50KEludCgpLCBpbnQpCiAgICAgICAgIGNhbnQoVHJ1ZSwgaW50KQogICAgICAgICBjYW50KDIsIGJvb2wpCiAgICAgICAgIG8gPSBvYmplY3QoKQpAQCAtMzMyNCw3ICszMzg3LDcgQEAKICAgICAgICAgQS5fX2NhbGxfXyA9IEEoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBBKCkoKQotICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICBleGNlcHQgUmVjdXJzaW9uRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIlJlY3Vyc2lvbiBsaW1pdCBzaG91bGQgaGF2ZSBiZWVuIHJlYWNoZWQgZm9yIF9fY2FsbF9fKCkiKQpAQCAtNDE4NCw2ICs0MjQ3LDcgQEAKICAgICAgICAgICAgICAgICAoJ19fYWRkX18nLCAgICAgICd4ICsgeScsICAgICAgICAgICAgICAgICAgICd4ICs9IHknKSwKICAgICAgICAgICAgICAgICAoJ19fc3ViX18nLCAgICAgICd4IC0geScsICAgICAgICAgICAgICAgICAgICd4IC09IHknKSwKICAgICAgICAgICAgICAgICAoJ19fbXVsX18nLCAgICAgICd4ICogeScsICAgICAgICAgICAgICAgICAgICd4ICo9IHknKSwKKyAgICAgICAgICAgICAgICAoJ19fbWF0bXVsX18nLCAgICd4IEAgeScsICAgICAgICAgICAgICAgICAgICd4IEA9IHknKSwKICAgICAgICAgICAgICAgICAoJ19fdHJ1ZWRpdl9fJywgICd4IC8geScsICAgICAgICAgICAgICAgICAgICd4IC89IHknKSwKICAgICAgICAgICAgICAgICAoJ19fZmxvb3JkaXZfXycsICd4IC8vIHknLCAgICAgICAgICAgICAgICAgICd4IC8vPSB5JyksCiAgICAgICAgICAgICAgICAgKCdfX21vZF9fJywgICAgICAneCAlIHknLCAgICAgICAgICAgICAgICAgICAneCAlPSB5JyksCkBAIC00MzI5LDggKzQzOTMsOCBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBGb28uX19yZXByX18gPSBGb28uX19zdHJfXwogICAgICAgICBmb28gPSBGb28oKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHN0ciwgZm9vKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHJlcHIsIGZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIHN0ciwgZm9vKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgcmVwciwgZm9vKQogCiAgICAgZGVmIHRlc3RfbWl4aW5nX3Nsb3Rfd3JhcHBlcnMoc2VsZik6CiAgICAgICAgIGNsYXNzIFgoZGljdCk6CkBAIC00NDQ1LDYgKzQ1MDksNjEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbigiX19kaWN0X18iLCBCYXNlLl9fZGljdF9fKQogICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJfX2RpY3RfXyIsIFN1Yi5fX2RpY3RfXykKIAorICAgIGRlZiB0ZXN0X2JvdW5kX21ldGhvZF9yZXByKHNlbGYpOgorICAgICAgICBjbGFzcyBGb286CisgICAgICAgICAgICBkZWYgbWV0aG9kKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKEZvbygpLm1ldGhvZCksCisgICAgICAgICAgICByIjxib3VuZCBtZXRob2QgLipGb29cLm1ldGhvZCBvZiA8LipGb28gb2JqZWN0IGF0IC4qPj4iKQorCisKKyAgICAgICAgY2xhc3MgQmFzZToKKyAgICAgICAgICAgIGRlZiBtZXRob2Qoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBjbGFzcyBEZXJpdmVkMShCYXNlKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY2xhc3MgRGVyaXZlZDIoQmFzZSk6CisgICAgICAgICAgICBkZWYgbWV0aG9kKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYmFzZSA9IEJhc2UoKQorICAgICAgICBkZXJpdmVkMSA9IERlcml2ZWQxKCkKKyAgICAgICAgZGVyaXZlZDIgPSBEZXJpdmVkMigpCisgICAgICAgIHN1cGVyX2QyID0gc3VwZXIoRGVyaXZlZDIsIGRlcml2ZWQyKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoYmFzZS5tZXRob2QpLAorICAgICAgICAgICAgciI8Ym91bmQgbWV0aG9kIC4qQmFzZVwubWV0aG9kIG9mIDwuKkJhc2Ugb2JqZWN0IGF0IC4qPj4iKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoZGVyaXZlZDEubWV0aG9kKSwKKyAgICAgICAgICAgIHIiPGJvdW5kIG1ldGhvZCAuKkJhc2VcLm1ldGhvZCBvZiA8LipEZXJpdmVkMSBvYmplY3QgYXQgLio+PiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihkZXJpdmVkMi5tZXRob2QpLAorICAgICAgICAgICAgciI8Ym91bmQgbWV0aG9kIC4qRGVyaXZlZDJcLm1ldGhvZCBvZiA8LipEZXJpdmVkMiBvYmplY3QgYXQgLio+PiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihzdXBlcl9kMi5tZXRob2QpLAorICAgICAgICAgICAgciI8Ym91bmQgbWV0aG9kIC4qQmFzZVwubWV0aG9kIG9mIDwuKkRlcml2ZWQyIG9iamVjdCBhdCAuKj4+IikKKworICAgICAgICBjbGFzcyBGb286CisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBtZXRob2QoY2xzKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGZvbyA9IEZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihmb28ubWV0aG9kKSwgIyBhY2Nlc3MgdmlhIGluc3RhbmNlCisgICAgICAgICAgICByIjxib3VuZCBtZXRob2QgLipGb29cLm1ldGhvZCBvZiA8Y2xhc3MgJy4qRm9vJz4+IikKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKEZvby5tZXRob2QpLCAjIGFjY2VzcyB2aWEgdGhlIGNsYXNzCisgICAgICAgICAgICByIjxib3VuZCBtZXRob2QgLipGb29cLm1ldGhvZCBvZiA8Y2xhc3MgJy4qRm9vJz4+IikKKworCisgICAgICAgIGNsYXNzIE15Q2FsbGFibGU6CisgICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZiwgYXJnKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGZ1bmMgPSBNeUNhbGxhYmxlKCkgIyBmdW5jIGhhcyBubyBfX25hbWVfXyBvciBfX3F1YWxuYW1lX18gYXR0cmlidXRlcworICAgICAgICBpbnN0YW5jZSA9IG9iamVjdCgpCisgICAgICAgIG1ldGhvZCA9IHR5cGVzLk1ldGhvZFR5cGUoZnVuYywgaW5zdGFuY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihtZXRob2QpLAorICAgICAgICAgICAgciI8Ym91bmQgbWV0aG9kIFw/IG9mIDxvYmplY3Qgb2JqZWN0IGF0IC4qPj4iKQorICAgICAgICBmdW5jLl9fbmFtZV9fID0gIm5hbWUiCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihtZXRob2QpLAorICAgICAgICAgICAgciI8Ym91bmQgbWV0aG9kIG5hbWUgb2YgPG9iamVjdCBvYmplY3QgYXQgLio+PiIpCisgICAgICAgIGZ1bmMuX19xdWFsbmFtZV9fID0gInF1YWxuYW1lIgorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIobWV0aG9kKSwKKyAgICAgICAgICAgIHIiPGJvdW5kIG1ldGhvZCBxdWFsbmFtZSBvZiA8b2JqZWN0IG9iamVjdCBhdCAuKj4+IikKKwogCiBjbGFzcyBEaWN0UHJveHlUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtNDU1OSwyNiArNDY3OCwxNSBAQAogCiAgICAgZGVmIF9jaGVja19yZWR1Y2Uoc2VsZiwgcHJvdG8sIG9iaiwgYXJncz0oKSwga3dhcmdzPXt9LCBzdGF0ZT1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgIGxpc3RpdGVtcz1Ob25lLCBkaWN0aXRlbXM9Tm9uZSk6Ci0gICAgICAgIGlmIHByb3RvID49IDQ6CisgICAgICAgIGlmIHByb3RvID49IDI6CiAgICAgICAgICAgICByZWR1Y2VfdmFsdWUgPSBvYmouX19yZWR1Y2VfZXhfXyhwcm90bykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVkdWNlX3ZhbHVlWzozXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvcHlyZWcuX19uZXdvYmpfZXhfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlKG9iaiksIGFyZ3MsIGt3YXJncyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSkpCi0gICAgICAgICAgICBpZiBsaXN0aXRlbXMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGlzdChyZWR1Y2VfdmFsdWVbM10pLCBsaXN0aXRlbXMpCisgICAgICAgICAgICBpZiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWR1Y2VfdmFsdWVbMF0sIGNvcHlyZWcuX19uZXdvYmpfZXhfXykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZHVjZV92YWx1ZVsxXSwgKHR5cGUob2JqKSwgYXJncywga3dhcmdzKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVkdWNlX3ZhbHVlWzNdKQotICAgICAgICAgICAgaWYgZGljdGl0ZW1zIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RGljdEVxdWFsKGRpY3QocmVkdWNlX3ZhbHVlWzRdKSwgZGljdGl0ZW1zKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZWR1Y2VfdmFsdWVbNF0pCi0gICAgICAgIGVsaWYgcHJvdG8gPj0gMjoKLSAgICAgICAgICAgIHJlZHVjZV92YWx1ZSA9IG9iai5fX3JlZHVjZV9leF9fKHByb3RvKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWR1Y2VfdmFsdWVbOjNdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29weXJlZy5fX25ld29ial9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGUob2JqKSwpICsgYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZHVjZV92YWx1ZVswXSwgY29weXJlZy5fX25ld29ial9fKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVkdWNlX3ZhbHVlWzFdLCAodHlwZShvYmopLCkgKyBhcmdzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWR1Y2VfdmFsdWVbMl0sIHN0YXRlKQogICAgICAgICAgICAgaWYgbGlzdGl0ZW1zIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGxpc3QocmVkdWNlX3ZhbHVlWzNdKSwgbGlzdGl0ZW1zKQogICAgICAgICAgICAgZWxzZToKQEAgLTQ5NzMsMTAgKzUwODEsNiBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY2xzPWNscyk6CiAgICAgICAgICAgICAgICAga3dhcmdzID0gZ2V0YXR0cihjbHMsICdLV0FSR1MnLCB7fSkKICAgICAgICAgICAgICAgICBvYmogPSBjbHMoKmNscy5BUkdTLCAqKmt3YXJncykKLSAgICAgICAgICAgICAgICAjIFhYWDogV2UgbmVlZCB0byBtb2RpZnkgdGhlIGNvcHkgbW9kdWxlIHRvIHN1cHBvcnQgUEVQIDMxNTQncwotICAgICAgICAgICAgICAgICMgcmVkdWNlIHByb3RvY29sIDQuCi0gICAgICAgICAgICAgICAgaWYgaGFzYXR0cihjbHMsICdfX2dldG5ld2FyZ3NfZXhfXycpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIG9iamNvcHkgPSBkZWVwY29weShvYmopCiAgICAgICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2lzX2NvcHkob2JqLCBvYmpjb3B5KQogICAgICAgICAgICAgICAgICMgRm9yIHRlc3QgY2xhc3NlcyB0aGF0IHN1cHBvcnRzIHRoaXMsIG1ha2Ugc3VyZSB3ZSBkaWRuJ3QgZ28KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdC5weSBiL0xpYi90ZXN0L3Rlc3RfZGljdC5weQppbmRleCA4MGZlYjkwLi4zYjQyNDE0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0LnB5CkBAIC05NjMsMTIgKzk2Myw1IEBACiBjbGFzcyBTdWJjbGFzc01hcHBpbmdUZXN0cyhtYXBwaW5nX3Rlc3RzLkJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCk6CiAgICAgdHlwZTJ0ZXN0ID0gRGljdAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCi0gICAgICAgIERpY3RUZXN0LAotICAgICAgICBHZW5lcmFsTWFwcGluZ1Rlc3RzLAotICAgICAgICBTdWJjbGFzc01hcHBpbmdUZXN0cywKLSAgICApCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdHZpZXdzLnB5IGIvTGliL3Rlc3QvdGVzdF9kaWN0dmlld3MucHkKaW5kZXggYzc3MTRjZi4uNzg3ZWYyMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaWN0dmlld3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0dmlld3MucHkKQEAgLTEsNyArMSw2IEBACiBpbXBvcnQgY29weQogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogY2xhc3MgRGljdFNldFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xOTgsNyArMTk3LDcgQEAKICAgICBkZWYgdGVzdF9yZWN1cnNpdmVfcmVwcihzZWxmKToKICAgICAgICAgZCA9IHt9CiAgICAgICAgIGRbNDJdID0gZC52YWx1ZXMoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHJlcHIsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCByZXByLCBkKQogCiAgICAgZGVmIHRlc3RfY29weShzZWxmKToKICAgICAgICAgZCA9IHsxOiAxMCwgImEiOiAiQUJDIn0KQEAgLTIxNyw4ICsyMTYsNSBAQAogICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wcywgZC5pdGVtcygpLCBwcm90bykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRGljdFNldFRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weQppbmRleCAwYmE4ZjBlLi5hYjlkZWJmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpZmZsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5CkBAIC0xMDcsNiArMTA3LDIwIEBACiAgICA1LiBGbGF0IGlzIGJldHRlciB0aGFuIG5lc3RlZC4KICIiIgogCitwYXRjaDkxNDU3NV9ub25hc2NpaV9mcm9tMSA9ICIiIgorICAgMS4gQmVhdXRpZnVsIGlzIGJlVFRlciB0aGFuIHVnbHkuCisgICAyLiBFeHBsaWNpdCBpcyBiZXR0ZXIgdGhhbiDEsW1wbMSxY8SxdC4KKyAgIDMuIFNpbXBsZSBpcyBiZXR0ZXIgdGhhbiBjb21wbGV4LgorICAgNC4gQ29tcGxleCBpcyBiZXR0ZXIgdGhhbiBjb21wbGljYXRlZC4KKyIiIgorCitwYXRjaDkxNDU3NV9ub25hc2NpaV90bzEgPSAiIiIKKyAgIDEuIEJlYXV0aWZ1bCBpcyBiZXR0ZXIgdGhhbiDDvGdseS4KKyAgIDMuICAgU8SxbXBsZSBpcyBiZXR0ZXIgdGhhbiBjb21wbGV4LgorICAgNC4gQ29tcGxpY2F0ZWQgaXMgYmV0dGVyIHRoYW4gY8O2bXBsZXguCisgICA1LiBGbGF0IGlzIGJldHRlciB0aGFuIG5lc3RlZC4KKyIiIgorCiBwYXRjaDkxNDU3NV9mcm9tMiA9ICIiIgogXHRcdExpbmUgMTogcHJlY2VlZGVkIGJ5IGZyb206W3R0XSB0bzpbc3Nzc10KICAgXHRcdExpbmUgMjogcHJlY2VlZGVkIGJ5IGZyb206W3NzdHRdIHRvOltzc3NzdF0KQEAgLTIyMyw2ICsyMzcsMjcgQEAKICAgICAgICAgbmV3ID0gWyhpJTIgYW5kICJLOiVkIiBvciAiVjpCOiVkIikgJSBpIGZvciBpIGluIHJhbmdlKGxpbWl0KjIpXQogICAgICAgICBkaWZmbGliLlNlcXVlbmNlTWF0Y2hlcihOb25lLCBvbGQsIG5ldykuZ2V0X29wY29kZXMoKQogCisgICAgZGVmIHRlc3RfbWFrZV9maWxlX2RlZmF1bHRfY2hhcnNldChzZWxmKToKKyAgICAgICAgaHRtbF9kaWZmID0gZGlmZmxpYi5IdG1sRGlmZigpCisgICAgICAgIG91dHB1dCA9IGh0bWxfZGlmZi5tYWtlX2ZpbGUocGF0Y2g5MTQ1NzVfZnJvbTEuc3BsaXRsaW5lcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoOTE0NTc1X3RvMS5zcGxpdGxpbmVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCInLCBvdXRwdXQpCisKKyAgICBkZWYgdGVzdF9tYWtlX2ZpbGVfaXNvODg1OTFfY2hhcnNldChzZWxmKToKKyAgICAgICAgaHRtbF9kaWZmID0gZGlmZmxpYi5IdG1sRGlmZigpCisgICAgICAgIG91dHB1dCA9IGh0bWxfZGlmZi5tYWtlX2ZpbGUocGF0Y2g5MTQ1NzVfZnJvbTEuc3BsaXRsaW5lcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoOTE0NTc1X3RvMS5zcGxpdGxpbmVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNldD0naXNvLTg4NTktMScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIicsIG91dHB1dCkKKworICAgIGRlZiB0ZXN0X21ha2VfZmlsZV91c2FzY2lpX2NoYXJzZXRfd2l0aF9ub25hc2NpaV9pbnB1dChzZWxmKToKKyAgICAgICAgaHRtbF9kaWZmID0gZGlmZmxpYi5IdG1sRGlmZigpCisgICAgICAgIG91dHB1dCA9IGh0bWxfZGlmZi5tYWtlX2ZpbGUocGF0Y2g5MTQ1NzVfbm9uYXNjaWlfZnJvbTEuc3BsaXRsaW5lcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoOTE0NTc1X25vbmFzY2lpX3RvMS5zcGxpdGxpbmVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNldD0ndXMtYXNjaWknKQorICAgICAgICBzZWxmLmFzc2VydEluKCdjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiJywgb3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCcmIzMwNTttcGwmIzMwNTtjJiMzMDU7dCcsIG91dHB1dCkKKwogCiBjbGFzcyBUZXN0T3V0cHV0Rm9ybWF0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF90YWJfZGVsaW1pdGVyKHNlbGYpOgpAQCAtMjg3LDEyICszMjIsMTU3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10KDAsMCksICcwJykKIAogCitjbGFzcyBUZXN0Qnl0ZXModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgZG9uJ3QgcmVhbGx5IGNhcmUgYWJvdXQgdGhlIGNvbnRlbnQgb2YgdGhlIG91dHB1dCwganVzdCB0aGUgZmFjdAorICAgICMgdGhhdCBpdCdzIGJ5dGVzIGFuZCB3ZSBkb24ndCBjcmFzaAorICAgIGRlZiBjaGVjayhzZWxmLCBkaWZmKToKKyAgICAgICAgZGlmZiA9IGxpc3QoZGlmZikgICAjIHRyaWdnZXIgZXhjZXB0aW9ucyBmaXJzdAorICAgICAgICBmb3IgbGluZSBpbiBkaWZmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKAorICAgICAgICAgICAgICAgIGxpbmUsIGJ5dGVzLAorICAgICAgICAgICAgICAgICJhbGwgbGluZXMgb2YgZGlmZiBzaG91bGQgYmUgYnl0ZXMsIGJ1dCBnb3Q6ICVyIiAlIGxpbmUpCisKKyAgICBkZWYgdGVzdF9ieXRlX2NvbnRlbnQoc2VsZik6CisgICAgICAgICMgaWYgd2UgcmVjZWl2ZSBieXRlIHN0cmluZ3MsIHdlIHJldHVybiBieXRlIHN0cmluZ3MKKyAgICAgICAgYSA9IFtiJ2hlbGxvJywgYidhbmRyXHhlOSddICAgICAjIGlzby04ODU5LTEgYnl0ZXMKKyAgICAgICAgYiA9IFtiJ2hlbGxvJywgYidhbmRyXHhjM1x4YTknXSAjIHV0Zi04IGJ5dGVzCisKKyAgICAgICAgdW5pZmllZCA9IGRpZmZsaWIudW5pZmllZF9kaWZmCisgICAgICAgIGNvbnRleHQgPSBkaWZmbGliLmNvbnRleHRfZGlmZgorCisgICAgICAgIGNoZWNrID0gc2VsZi5jaGVjaworICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXModW5pZmllZCwgYSwgYSkpCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyh1bmlmaWVkLCBhLCBiKSkKKworICAgICAgICAjIG5vdyB3aXRoIGZpbGVuYW1lcyAoY29udGVudCBhbmQgZmlsZW5hbWVzIGFyZSBhbGwgYnl0ZXMhKQorICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXModW5pZmllZCwgYSwgYSwgYidhJywgYidhJykpCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyh1bmlmaWVkLCBhLCBiLCBiJ2EnLCBiJ2InKSkKKworICAgICAgICAjIGFuZCB3aXRoIGZpbGVuYW1lcyBhbmQgZGF0ZXMKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKHVuaWZpZWQsIGEsIGEsIGInYScsIGInYScsIGInMjAwNScsIGInMjAxMycpKQorICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXModW5pZmllZCwgYSwgYiwgYidhJywgYidiJywgYicyMDA1JywgYicyMDEzJykpCisKKyAgICAgICAgIyBzYW1lIGFsbCBvdmVyIGFnYWluLCB3aXRoIGNvbnRleHQgZGlmZgorICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXMoY29udGV4dCwgYSwgYSkpCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyhjb250ZXh0LCBhLCBiKSkKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKGNvbnRleHQsIGEsIGEsIGInYScsIGInYScpKQorICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXMoY29udGV4dCwgYSwgYiwgYidhJywgYidiJykpCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyhjb250ZXh0LCBhLCBhLCBiJ2EnLCBiJ2EnLCBiJzIwMDUnLCBiJzIwMTMnKSkKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKGNvbnRleHQsIGEsIGIsIGInYScsIGInYicsIGInMjAwNScsIGInMjAxMycpKQorCisgICAgZGVmIHRlc3RfYnl0ZV9maWxlbmFtZXMoc2VsZik6CisgICAgICAgICMgc29tZWJvZHkgcmVuYW1lZCBhIGZpbGUgZnJvbSBJU08tODg1OS0yIHRvIFVURi04CisgICAgICAgIGZuYSA9IGInXHhiM29kei50eHQnICAgICMgIsWCb2R6LnR4dCIKKyAgICAgICAgZm5iID0gYidceGM1XHg4Mm9kei50eHQnCisKKyAgICAgICAgIyB0aGV5IHRyYW5zY29kZWQgdGhlIGNvbnRlbnQgYXQgdGhlIHNhbWUgdGltZQorICAgICAgICBhID0gW2InXHhhM29keiBpcyBhIGNpdHkgaW4gUG9sYW5kLiddCisgICAgICAgIGIgPSBbYidceGM1XHg4MW9keiBpcyBhIGNpdHkgaW4gUG9sYW5kLiddCisKKyAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrCisgICAgICAgIHVuaWZpZWQgPSBkaWZmbGliLnVuaWZpZWRfZGlmZgorICAgICAgICBjb250ZXh0ID0gZGlmZmxpYi5jb250ZXh0X2RpZmYKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKHVuaWZpZWQsIGEsIGIsIGZuYSwgZm5iKSkKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKGNvbnRleHQsIGEsIGIsIGZuYSwgZm5iKSkKKworICAgICAgICBkZWYgYXNzZXJ0RGlmZihleHBlY3QsIGFjdHVhbCk6CisgICAgICAgICAgICAjIGRvIG5vdCBjb21wYXJlIGV4cGVjdCBhbmQgZXF1YWwgYXMgbGlzdHMsIGJlY2F1c2UgdW5pdHRlc3QKKyAgICAgICAgICAgICMgdXNlcyBkaWZmbGliIHRvIHJlcG9ydCBkaWZmZXJlbmNlIGJldHdlZW4gbGlzdHMKKyAgICAgICAgICAgIGFjdHVhbCA9IGxpc3QoYWN0dWFsKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0KSwgbGVuKGFjdHVhbCkpCisgICAgICAgICAgICBmb3IgZSwgYSBpbiB6aXAoZXhwZWN0LCBhY3R1YWwpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgYSkKKworICAgICAgICBleHBlY3QgPSBbCisgICAgICAgICAgICBiJy0tLSBceGIzb2R6LnR4dCcsCisgICAgICAgICAgICBiJysrKyBceGM1XHg4Mm9kei50eHQnLAorICAgICAgICAgICAgYidAQCAtMSArMSBAQCcsCisgICAgICAgICAgICBiJy1ceGEzb2R6IGlzIGEgY2l0eSBpbiBQb2xhbmQuJywKKyAgICAgICAgICAgIGInK1x4YzVceDgxb2R6IGlzIGEgY2l0eSBpbiBQb2xhbmQuJywKKyAgICAgICAgXQorICAgICAgICBhY3R1YWwgPSBkaWZmbGliLmRpZmZfYnl0ZXModW5pZmllZCwgYSwgYiwgZm5hLCBmbmIsIGxpbmV0ZXJtPWInJykKKyAgICAgICAgYXNzZXJ0RGlmZihleHBlY3QsIGFjdHVhbCkKKworICAgICAgICAjIHdpdGggZGF0ZXMgKHBsYWluIEFTQ0lJKQorICAgICAgICBkYXRlYSA9IGInMjAwNS0wMy0xOCcKKyAgICAgICAgZGF0ZWIgPSBiJzIwMDUtMDMtMTknCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyh1bmlmaWVkLCBhLCBiLCBmbmEsIGZuYiwgZGF0ZWEsIGRhdGViKSkKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKGNvbnRleHQsIGEsIGIsIGZuYSwgZm5iLCBkYXRlYSwgZGF0ZWIpKQorCisgICAgICAgIGV4cGVjdCA9IFsKKyAgICAgICAgICAgICMgbm90ZSB0aGUgbWl4ZWQgZW5jb2RpbmdzIGhlcmU6IHRoaXMgaXMgZGVlcGx5IHdyb25nIGJ5IGV2ZXJ5CisgICAgICAgICAgICAjIHRlbmV0IG9mIFVuaWNvZGUsIGJ1dCBpdCBkb2Vzbid0IGNyYXNoLCBpdCdzIHBhcnNlYWJsZSBieQorICAgICAgICAgICAgIyBwYXRjaCwgYW5kIGl0J3MgaG93IFVOSVgodG0pIGRpZmYgYmVoYXZlcworICAgICAgICAgICAgYictLS0gXHhiM29kei50eHRcdDIwMDUtMDMtMTgnLAorICAgICAgICAgICAgYicrKysgXHhjNVx4ODJvZHoudHh0XHQyMDA1LTAzLTE5JywKKyAgICAgICAgICAgIGInQEAgLTEgKzEgQEAnLAorICAgICAgICAgICAgYictXHhhM29keiBpcyBhIGNpdHkgaW4gUG9sYW5kLicsCisgICAgICAgICAgICBiJytceGM1XHg4MW9keiBpcyBhIGNpdHkgaW4gUG9sYW5kLicsCisgICAgICAgIF0KKyAgICAgICAgYWN0dWFsID0gZGlmZmxpYi5kaWZmX2J5dGVzKHVuaWZpZWQsIGEsIGIsIGZuYSwgZm5iLCBkYXRlYSwgZGF0ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5ldGVybT1iJycpCisgICAgICAgIGFzc2VydERpZmYoZXhwZWN0LCBhY3R1YWwpCisKKyAgICBkZWYgdGVzdF9taXhlZF90eXBlc19jb250ZW50KHNlbGYpOgorICAgICAgICAjIHR5cGUgb2YgaW5wdXQgY29udGVudCBtdXN0IGJlIGNvbnNpc3RlbnQ6IGFsbCBzdHIgb3IgYWxsIGJ5dGVzCisgICAgICAgIGEgPSBbYidoZWxsbyddCisgICAgICAgIGIgPSBbJ2hlbGxvJ10KKworICAgICAgICB1bmlmaWVkID0gZGlmZmxpYi51bmlmaWVkX2RpZmYKKyAgICAgICAgY29udGV4dCA9IGRpZmZsaWIuY29udGV4dF9kaWZmCisKKyAgICAgICAgZXhwZWN0ID0gImxpbmVzIHRvIGNvbXBhcmUgbXVzdCBiZSBzdHIsIG5vdCBieXRlcyAoYidoZWxsbycpIgorICAgICAgICBzZWxmLl9hc3NlcnRfdHlwZV9lcnJvcihleHBlY3QsIHVuaWZpZWQsIGEsIGIpCisgICAgICAgIHNlbGYuX2Fzc2VydF90eXBlX2Vycm9yKGV4cGVjdCwgdW5pZmllZCwgYiwgYSkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3R5cGVfZXJyb3IoZXhwZWN0LCBjb250ZXh0LCBhLCBiKQorICAgICAgICBzZWxmLl9hc3NlcnRfdHlwZV9lcnJvcihleHBlY3QsIGNvbnRleHQsIGIsIGEpCisKKyAgICAgICAgZXhwZWN0ID0gImFsbCBhcmd1bWVudHMgbXVzdCBiZSBieXRlcywgbm90IHN0ciAoJ2hlbGxvJykiCisgICAgICAgIHNlbGYuX2Fzc2VydF90eXBlX2Vycm9yKGV4cGVjdCwgZGlmZmxpYi5kaWZmX2J5dGVzLCB1bmlmaWVkLCBhLCBiKQorICAgICAgICBzZWxmLl9hc3NlcnRfdHlwZV9lcnJvcihleHBlY3QsIGRpZmZsaWIuZGlmZl9ieXRlcywgdW5pZmllZCwgYiwgYSkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3R5cGVfZXJyb3IoZXhwZWN0LCBkaWZmbGliLmRpZmZfYnl0ZXMsIGNvbnRleHQsIGEsIGIpCisgICAgICAgIHNlbGYuX2Fzc2VydF90eXBlX2Vycm9yKGV4cGVjdCwgZGlmZmxpYi5kaWZmX2J5dGVzLCBjb250ZXh0LCBiLCBhKQorCisgICAgZGVmIHRlc3RfbWl4ZWRfdHlwZXNfZmlsZW5hbWVzKHNlbGYpOgorICAgICAgICAjIGNhbm5vdCBwYXNzIGZpbGVuYW1lcyBhcyBieXRlcyBpZiBjb250ZW50IGlzIHN0ciAodGhpcyBtYXkgbm90IGJlCisgICAgICAgICMgdGhlIHJpZ2h0IGJlaGF2aW91ciwgYnV0IGF0IGxlYXN0IHRoZSB0ZXN0IGRlbW9uc3RyYXRlcyBob3cKKyAgICAgICAgIyB0aGluZ3Mgd29yaykKKyAgICAgICAgYSA9IFsnaGVsbG9cbiddCisgICAgICAgIGIgPSBbJ29oZWxsXG4nXQorICAgICAgICBmbmEgPSBiJ29sXHhlOS50eHQnICAgICAjIGZpbGVuYW1lIHRyYW5zY29kZWQgZnJvbSBJU08tODg1OS0xCisgICAgICAgIGZuYiA9IGInb2xceGMzYTkudHh0JyAgICMgdG8gVVRGLTgKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3R5cGVfZXJyb3IoCisgICAgICAgICAgICAiYWxsIGFyZ3VtZW50cyBtdXN0IGJlIHN0ciwgbm90OiBiJ29sXFx4ZTkudHh0JyIsCisgICAgICAgICAgICBkaWZmbGliLnVuaWZpZWRfZGlmZiwgYSwgYiwgZm5hLCBmbmIpCisKKyAgICBkZWYgdGVzdF9taXhlZF90eXBlc19kYXRlcyhzZWxmKToKKyAgICAgICAgIyB0eXBlIG9mIGRhdGVzIG11c3QgYmUgY29uc2lzdGVudCB3aXRoIHR5cGUgb2YgY29udGVudHMKKyAgICAgICAgYSA9IFtiJ2Zvb1xuJ10KKyAgICAgICAgYiA9IFtiJ2JhclxuJ10KKyAgICAgICAgZGF0ZWEgPSAnMSBmw6l2JworICAgICAgICBkYXRlYiA9ICczIGbDqXYnCisgICAgICAgIHNlbGYuX2Fzc2VydF90eXBlX2Vycm9yKAorICAgICAgICAgICAgImFsbCBhcmd1bWVudHMgbXVzdCBiZSBieXRlcywgbm90IHN0ciAoJzEgZsOpdicpIiwKKyAgICAgICAgICAgIGRpZmZsaWIuZGlmZl9ieXRlcywgZGlmZmxpYi51bmlmaWVkX2RpZmYsCisgICAgICAgICAgICBhLCBiLCBiJ2EnLCBiJ2InLCBkYXRlYSwgZGF0ZWIpCisKKyAgICAgICAgIyBpZiBpbnB1dCBpcyBzdHIsIG5vbi1BU0NJSSBkYXRlcyBhcmUgZmluZQorICAgICAgICBhID0gWydmb29cbiddCisgICAgICAgIGIgPSBbJ2JhclxuJ10KKyAgICAgICAgbGlzdChkaWZmbGliLnVuaWZpZWRfZGlmZihhLCBiLCAnYScsICdiJywgZGF0ZWEsIGRhdGViKSkKKworICAgIGRlZiBfYXNzZXJ0X3R5cGVfZXJyb3Ioc2VsZiwgbXNnLCBnZW5lcmF0b3IsICphcmdzKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGN0eDoKKyAgICAgICAgICAgIGxpc3QoZ2VuZXJhdG9yKCphcmdzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIHN0cihjdHguZXhjZXB0aW9uKSkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgZGlmZmxpYi5IdG1sRGlmZi5fZGVmYXVsdF9wcmVmaXggPSAwCiAgICAgRG9jdGVzdHMgPSBkb2N0ZXN0LkRvY1Rlc3RTdWl0ZShkaWZmbGliKQogICAgIHJ1bl91bml0dGVzdCgKICAgICAgICAgVGVzdFdpdGhBc2NpaSwgVGVzdEF1dG9qdW5rLCBUZXN0U0ZwYXRjaGVzLCBUZXN0U0ZidWdzLAotICAgICAgICBUZXN0T3V0cHV0Rm9ybWF0LCBEb2N0ZXN0cykKKyAgICAgICAgVGVzdE91dHB1dEZvcm1hdCwgVGVzdEJ5dGVzLCBEb2N0ZXN0cykKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWZmbGliX2V4cGVjdC5odG1sIGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliX2V4cGVjdC5odG1sCmluZGV4IDcxYjZkN2EuLmVhN2EyNGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYl9leHBlY3QuaHRtbAorKysgYi9MaWIvdGVzdC90ZXN0X2RpZmZsaWJfZXhwZWN0Lmh0bWwKQEAgLTYsNyArNiw3IEBACiAKIDxoZWFkPgogICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIKLSAgICAgICAgICBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KKyAgICAgICAgICBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CiAgICAgPHRpdGxlPjwvdGl0bGU+CiAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KICAgICAgICAgdGFibGUuZGlmZiB7Zm9udC1mYW1pbHk6Q291cmllcjsgYm9yZGVyOm1lZGl1bTt9CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Rpcy5weSBiL0xpYi90ZXN0L3Rlc3RfZGlzLnB5CmluZGV4IGI4ZGFmZjcuLjQyMWJiYWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGlzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGlzLnB5CkBAIC0xLDYgKzEsNiBAQAogIyBNaW5pbWFsIHRlc3RzIGZvciBkaXMgbW9kdWxlCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGNhcHR1cmVkX3N0ZG91dAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZG91dAogZnJvbSB0ZXN0LmJ5dGVjb2RlX2hlbHBlciBpbXBvcnQgQnl0ZWNvZGVUZXN0Q2FzZQogaW1wb3J0IGRpZmZsaWIKIGltcG9ydCB1bml0dGVzdApAQCAtMjMwLDYgKzIzMCw5IEBACiAgICAgICAgVFJBQ0VCQUNLX0NPREUuY29fZmlyc3RsaW5lbm8gKyA0LAogICAgICAgIFRSQUNFQkFDS19DT0RFLmNvX2ZpcnN0bGluZW5vICsgNSkKIAorZGVmIF9nKHgpOgorICAgIHlpZWxkIHgKKwogY2xhc3MgRGlzVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIGdldF9kaXNhc3NlbWJseShzZWxmLCBmdW5jLCBsYXN0aT0tMSwgd3JhcHBlcj1UcnVlKToKQEAgLTMxNSw2ICszMTgsMTEgQEAKICAgICAgICAgbWV0aG9kX2J5dGVjb2RlID0gX0MoMSkuX19pbml0X18uX19jb2RlX18uY29fY29kZQogICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QobWV0aG9kX2J5dGVjb2RlLCBkaXNfY19pbnN0YW5jZV9tZXRob2RfYnl0ZXMpCiAKKyAgICBkZWYgdGVzdF9kaXNhc3NlbWJsZV9nZW5lcmF0b3Ioc2VsZik6CisgICAgICAgIGdlbl9mdW5jX2Rpc2FzID0gc2VsZi5nZXRfZGlzYXNzZW1ibHkoX2cpICAjIERpc2Fzc2VtYmxlIGdlbmVyYXRvciBmdW5jdGlvbgorICAgICAgICBnZW5fZGlzYXMgPSBzZWxmLmdldF9kaXNhc3NlbWJseShfZygxKSkgICMgRGlzYXNzZW1ibGUgZ2VuZXJhdG9yIGl0c2VsZgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdlbl9kaXNhcywgZ2VuX2Z1bmNfZGlzYXMpCisKICAgICBkZWYgdGVzdF9kaXNfbm9uZShzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZGVsIHN5cy5sYXN0X3RyYWNlYmFjawpAQCAtNDcyLDYgKzQ4MCwyNCBAQAogTmFtZXM6CiAgICAwOiB4IiIiCiAKKworYXN5bmMgZGVmIGFzeW5jX2RlZigpOgorICAgIGF3YWl0IDEKKyAgICBhc3luYyBmb3IgYSBpbiBiOiBwYXNzCisgICAgYXN5bmMgd2l0aCBjIGFzIGQ6IHBhc3MKKworY29kZV9pbmZvX2FzeW5jX2RlZiA9ICIiIlwKK05hbWU6ICAgICAgICAgICAgICBhc3luY19kZWYKK0ZpbGVuYW1lOiAgICAgICAgICAoLiopCitBcmd1bWVudCBjb3VudDogICAgMAorS3ctb25seSBhcmd1bWVudHM6IDAKK051bWJlciBvZiBsb2NhbHM6ICAyCitTdGFjayBzaXplOiAgICAgICAgMTcKK0ZsYWdzOiAgICAgICAgICAgICBPUFRJTUlaRUQsIE5FV0xPQ0FMUywgR0VORVJBVE9SLCBOT0ZSRUUsIENPUk9VVElORQorQ29uc3RhbnRzOgorICAgMDogTm9uZQorICAgMTogMSIiIgorCiBjbGFzcyBDb2RlSW5mb1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0ZXN0X3BhaXJzID0gWwogICAgICAgKGRpcy5jb2RlX2luZm8sIGNvZGVfaW5mb19jb2RlX2luZm8pLApAQCAtNDgwLDYgKzUwNiw3IEBACiAgICAgICAoZXhwcl9zdHIsIGNvZGVfaW5mb19leHByX3N0ciksCiAgICAgICAoc2ltcGxlX3N0bXRfc3RyLCBjb2RlX2luZm9fc2ltcGxlX3N0bXRfc3RyKSwKICAgICAgIChjb21wb3VuZF9zdG10X3N0ciwgY29kZV9pbmZvX2NvbXBvdW5kX3N0bXRfc3RyKSwKKyAgICAgIChhc3luY19kZWYsIGNvZGVfaW5mb19hc3luY19kZWYpCiAgICAgXQogCiAgICAgZGVmIHRlc3RfY29kZV9pbmZvKHNlbGYpOgpAQCAtNTYxLDEwICs1ODgsMTAgQEAKICNfaW5zdHJ1Y3Rpb25zID0gZGlzLmdldF9pbnN0cnVjdGlvbnMob3V0ZXIsIGZpcnN0X2xpbmU9ZXhwZWN0ZWRfb3V0ZXJfbGluZSkKICNwcmludCgnZXhwZWN0ZWRfb3BpbmZvX291dGVyID0gW1xuICAnLAogICAgICAgIycsXG4gICcuam9pbihtYXAoc3RyLCBfaW5zdHJ1Y3Rpb25zKSksICcsXG5dJywgc2VwPScnKQotI19pbnN0cnVjdGlvbnMgPSBkaXMuZ2V0X2luc3RydWN0aW9ucyhvdXRlcigpLCBmaXJzdF9saW5lPWV4cGVjdGVkX291dGVyX2xpbmUpCisjX2luc3RydWN0aW9ucyA9IGRpcy5nZXRfaW5zdHJ1Y3Rpb25zKG91dGVyKCksIGZpcnN0X2xpbmU9ZXhwZWN0ZWRfZl9saW5lKQogI3ByaW50KCdleHBlY3RlZF9vcGluZm9fZiA9IFtcbiAgJywKICAgICAgICMnLFxuICAnLmpvaW4obWFwKHN0ciwgX2luc3RydWN0aW9ucykpLCAnLFxuXScsIHNlcD0nJykKLSNfaW5zdHJ1Y3Rpb25zID0gZGlzLmdldF9pbnN0cnVjdGlvbnMob3V0ZXIoKSgpLCBmaXJzdF9saW5lPWV4cGVjdGVkX291dGVyX2xpbmUpCisjX2luc3RydWN0aW9ucyA9IGRpcy5nZXRfaW5zdHJ1Y3Rpb25zKG91dGVyKCkoKSwgZmlyc3RfbGluZT1leHBlY3RlZF9pbm5lcl9saW5lKQogI3ByaW50KCdleHBlY3RlZF9vcGluZm9faW5uZXIgPSBbXG4gICcsCiAgICAgICAjJyxcbiAgJy5qb2luKG1hcChzdHIsIF9pbnN0cnVjdGlvbnMpKSwgJyxcbl0nLCBzZXA9JycpCiAjX2luc3RydWN0aW9ucyA9IGRpcy5nZXRfaW5zdHJ1Y3Rpb25zKGp1bXB5LCBmaXJzdF9saW5lPWV4cGVjdGVkX2p1bXB5X2xpbmUpCkBAIC02MzUsMTIgKzY2MiwxMiBAQAogXQogCiBleHBlY3RlZF9vcGluZm9fanVtcHkgPSBbCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfTE9PUCcsIG9wY29kZT0xMjAsIGFyZz03NCwgYXJndmFsPTc3LCBhcmdyZXByPSd0byA3NycsIG9mZnNldD0wLCBzdGFydHNfbGluZT0zLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfTE9PUCcsIG9wY29kZT0xMjAsIGFyZz02OCwgYXJndmFsPTcxLCBhcmdyZXByPSd0byA3MScsIG9mZnNldD0wLCBzdGFydHNfbGluZT0zLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiAgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MCwgYXJndmFsPSdyYW5nZScsIGFyZ3JlcHI9J3JhbmdlJywgb2Zmc2V0PTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEsIGFyZ3ZhbD0xMCwgYXJncmVwcj0nMTAnLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogICBJbnN0cnVjdGlvbihvcG5hbWU9J0dFVF9JVEVSJywgb3Bjb2RlPTY4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0ZPUl9JVEVSJywgb3Bjb2RlPTkzLCBhcmc9NTAsIGFyZ3ZhbD02NiwgYXJncmVwcj0ndG8gNjYnLCBvZmZzZXQ9MTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0ZPUl9JVEVSJywgb3Bjb2RlPTkzLCBhcmc9NDQsIGFyZ3ZhbD02MCwgYXJncmVwcj0ndG8gNjAnLCBvZmZzZXQ9MTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAogICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xOSwgc3RhcnRzX2xpbmU9NCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTIyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCkBAIC02NDksOTIgKzY3Niw4OSBAQAogICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTI5LCBzdGFydHNfbGluZT01LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiAgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0yLCBhcmd2YWw9NCwgYXJncmVwcj0nNCcsIG9mZnNldD0zMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9MCwgYXJndmFsPSc8JywgYXJncmVwcj0nPCcsIG9mZnNldD0zNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTQ3LCBhcmd2YWw9NDcsIGFyZ3JlcHI9JycsIG9mZnNldD0zOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTQ0LCBhcmd2YWw9NDQsIGFyZ3JlcHI9JycsIG9mZnNldD0zOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9MTMsIGFyZ3ZhbD0xMywgYXJncmVwcj0nJywgb2Zmc2V0PTQxLCBzdGFydHNfbGluZT02LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9GT1JXQVJEJywgb3Bjb2RlPTExMCwgYXJnPTAsIGFyZ3ZhbD00NywgYXJncmVwcj0ndG8gNDcnLCBvZmZzZXQ9NDQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD00Nywgc3RhcnRzX2xpbmU9NywgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9NiwgYXJncmVwcj0nNicsIG9mZnNldD01MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9NCwgYXJndmFsPSc+JywgYXJncmVwcj0nPicsIG9mZnNldD01Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTEzLCBhcmd2YWw9MTMsIGFyZ3JlcHI9JycsIG9mZnNldD01Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0JSRUFLX0xPT1AnLCBvcGNvZGU9ODAsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTU5LCBzdGFydHNfbGluZT04LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz0xMywgYXJndmFsPTEzLCBhcmdyZXByPScnLCBvZmZzZXQ9NjAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTEzLCBhcmd2YWw9MTMsIGFyZ3JlcHI9JycsIG9mZnNldD02Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NjYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD02Nywgc3RhcnRzX2xpbmU9MTAsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTQsIGFyZ3ZhbD0nSSBjYW4gaGF6IGVsc2UgY2xhdXNlPycsIGFyZ3JlcHI9IidJIGNhbiBoYXogZWxzZSBjbGF1c2U/JyIsIG9mZnNldD03MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9NzMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTc2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfTE9PUCcsIG9wY29kZT0xMjAsIGFyZz03NCwgYXJndmFsPTE1NCwgYXJncmVwcj0ndG8gMTU0Jywgb2Zmc2V0PTc3LCBzdGFydHNfbGluZT0xMSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9ODAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTE0MywgYXJndmFsPTE0MywgYXJncmVwcj0nJywgb2Zmc2V0PTgzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTg2LCBzdGFydHNfbGluZT0xMiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTg5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD05Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9OTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD05Niwgc3RhcnRzX2xpbmU9MTMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTk5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSU5QTEFDRV9TVUJUUkFDVCcsIG9wY29kZT01NiwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTAyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTEwMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTEwNiwgc3RhcnRzX2xpbmU9MTQsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTEwOSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9NCwgYXJndmFsPSc+JywgYXJncmVwcj0nPicsIG9mZnNldD0xMTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xMjQsIGFyZ3ZhbD0xMjQsIGFyZ3JlcHI9JycsIG9mZnNldD0xMTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTgwLCBhcmd2YWw9ODAsIGFyZ3JlcHI9JycsIG9mZnNldD0xMTgsIHN0YXJ0c19saW5lPTE1LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9GT1JXQVJEJywgb3Bjb2RlPTExMCwgYXJnPTAsIGFyZ3ZhbD0xMjQsIGFyZ3JlcHI9J3RvIDEyNCcsIG9mZnNldD0xMjEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xMjQsIHN0YXJ0c19saW5lPTE2LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTIsIGFyZ3ZhbD00LCBhcmdyZXByPSc0Jywgb2Zmc2V0PTEyNywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9MCwgYXJndmFsPSc8JywgYXJncmVwcj0nPCcsIG9mZnNldD0xMzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz04MCwgYXJndmFsPTgwLCBhcmdyZXByPScnLCBvZmZzZXQ9MTMzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQlJFQUtfTE9PUCcsIG9wY29kZT04MCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTM2LCBzdGFydHNfbGluZT0xNywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9ODAsIGFyZ3ZhbD04MCwgYXJncmVwcj0nJywgb2Zmc2V0PTEzNywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9ODAsIGFyZ3ZhbD04MCwgYXJncmVwcj0nJywgb2Zmc2V0PTE0MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTQzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTQ0LCBzdGFydHNfbGluZT0xOSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NiwgYXJndmFsPSdXaG8gbGV0IGxvbGNhdHogaW50byB0aGlzIHRlc3Qgc3VpdGU/JywgYXJncmVwcj0iJ1dobyBsZXQgbG9sY2F0eiBpbnRvIHRoaXMgdGVzdCBzdWl0ZT8nIiwgb2Zmc2V0PTE0Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MTUwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9GSU5BTExZJywgb3Bjb2RlPTEyMiwgYXJnPTcyLCBhcmd2YWw9MjI5LCBhcmdyZXByPSd0byAyMjknLCBvZmZzZXQ9MTU0LCBzdGFydHNfbGluZT0yMCwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfRVhDRVBUJywgb3Bjb2RlPTEyMSwgYXJnPTEyLCBhcmd2YWw9MTcyLCBhcmdyZXByPSd0byAxNzInLCBvZmZzZXQ9MTU3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9MSwgYXJncmVwcj0nMScsIG9mZnNldD0xNjAsIHN0YXJ0c19saW5lPTIxLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz03LCBhcmd2YWw9MCwgYXJncmVwcj0nMCcsIG9mZnNldD0xNjMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCSU5BUllfVFJVRV9ESVZJREUnLCBvcGNvZGU9MjcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE2Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTY3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0ZPUldBUkQnLCBvcGNvZGU9MTEwLCBhcmc9MjgsIGFyZ3ZhbD0yMDAsIGFyZ3JlcHI9J3RvIDIwMCcsIG9mZnNldD0xNjksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdEVVBfVE9QJywgb3Bjb2RlPTQsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3Miwgc3RhcnRzX2xpbmU9MjIsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTIsIGFyZ3ZhbD0nWmVyb0RpdmlzaW9uRXJyb3InLCBhcmdyZXByPSdaZXJvRGl2aXNpb25FcnJvcicsIG9mZnNldD0xNzMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTEwLCBhcmd2YWw9J2V4Y2VwdGlvbiBtYXRjaCcsIGFyZ3JlcHI9J2V4Y2VwdGlvbiBtYXRjaCcsIG9mZnNldD0xNzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xOTksIGFyZ3ZhbD0xOTksIGFyZ3JlcHI9JycsIG9mZnNldD0xNzksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD00NCwgc3RhcnRzX2xpbmU9NywgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9NiwgYXJncmVwcj0nNicsIG9mZnNldD00Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9NCwgYXJndmFsPSc+JywgYXJncmVwcj0nPicsIG9mZnNldD01MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTEzLCBhcmd2YWw9MTMsIGFyZ3JlcHI9JycsIG9mZnNldD01Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JSRUFLX0xPT1AnLCBvcGNvZGU9ODAsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTU2LCBzdGFydHNfbGluZT04LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz0xMywgYXJndmFsPTEzLCBhcmdyZXByPScnLCBvZmZzZXQ9NTcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTYwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9NjEsIHN0YXJ0c19saW5lPTEwLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz00LCBhcmd2YWw9J0kgY2FuIGhheiBlbHNlIGNsYXVzZT8nLCBhcmdyZXByPSInSSBjYW4gaGF6IGVsc2UgY2xhdXNlPyciLCBvZmZzZXQ9NjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTY3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD03MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0xPT1AnLCBvcGNvZGU9MTIwLCBhcmc9NjgsIGFyZ3ZhbD0xNDIsIGFyZ3JlcHI9J3RvIDE0MicsIG9mZnNldD03MSwgc3RhcnRzX2xpbmU9MTEsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTc0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xMzEsIGFyZ3ZhbD0xMzEsIGFyZ3JlcHI9JycsIG9mZnNldD03Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD04MCwgc3RhcnRzX2xpbmU9MTIsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD04Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9ODYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTg5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9OTAsIHN0YXJ0c19saW5lPTEzLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9MSwgYXJncmVwcj0nMScsIG9mZnNldD05Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0lOUExBQ0VfU1VCVFJBQ1QnLCBvcGNvZGU9NTYsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTk2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTk3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTAwLCBzdGFydHNfbGluZT0xNCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPTYsIGFyZ3JlcHI9JzYnLCBvZmZzZXQ9MTAzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz00LCBhcmd2YWw9Jz4nLCBhcmdyZXByPSc+Jywgb2Zmc2V0PTEwNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTExNSwgYXJndmFsPTExNSwgYXJncmVwcj0nJywgb2Zmc2V0PTEwOSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9NzQsIGFyZ3ZhbD03NCwgYXJncmVwcj0nJywgb2Zmc2V0PTExMiwgc3RhcnRzX2xpbmU9MTUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xMTUsIHN0YXJ0c19saW5lPTE2LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTIsIGFyZ3ZhbD00LCBhcmdyZXByPSc0Jywgb2Zmc2V0PTExOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9MCwgYXJndmFsPSc8JywgYXJncmVwcj0nPCcsIG9mZnNldD0xMjEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz03NCwgYXJndmFsPTc0LCBhcmdyZXByPScnLCBvZmZzZXQ9MTI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQlJFQUtfTE9PUCcsIG9wY29kZT04MCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTI3LCBzdGFydHNfbGluZT0xNywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9NzQsIGFyZ3ZhbD03NCwgYXJncmVwcj0nJywgb2Zmc2V0PTEyOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTMxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTMyLCBzdGFydHNfbGluZT0xOSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NiwgYXJndmFsPSdXaG8gbGV0IGxvbGNhdHogaW50byB0aGlzIHRlc3Qgc3VpdGU/JywgYXJncmVwcj0iJ1dobyBsZXQgbG9sY2F0eiBpbnRvIHRoaXMgdGVzdCBzdWl0ZT8nIiwgb2Zmc2V0PTEzNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MTM4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNDEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9GSU5BTExZJywgb3Bjb2RlPTEyMiwgYXJnPTczLCBhcmd2YWw9MjE4LCBhcmdyZXByPSd0byAyMTgnLCBvZmZzZXQ9MTQyLCBzdGFydHNfbGluZT0yMCwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfRVhDRVBUJywgb3Bjb2RlPTEyMSwgYXJnPTEyLCBhcmd2YWw9MTYwLCBhcmdyZXByPSd0byAxNjAnLCBvZmZzZXQ9MTQ1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9MSwgYXJncmVwcj0nMScsIG9mZnNldD0xNDgsIHN0YXJ0c19saW5lPTIxLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz03LCBhcmd2YWw9MCwgYXJncmVwcj0nMCcsIG9mZnNldD0xNTEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCSU5BUllfVFJVRV9ESVZJREUnLCBvcGNvZGU9MjcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE1NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTU1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0ZPUldBUkQnLCBvcGNvZGU9MTEwLCBhcmc9MjgsIGFyZ3ZhbD0xODgsIGFyZ3JlcHI9J3RvIDE4OCcsIG9mZnNldD0xNTcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdEVVBfVE9QJywgb3Bjb2RlPTQsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE2MCwgc3RhcnRzX2xpbmU9MjIsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTIsIGFyZ3ZhbD0nWmVyb0RpdmlzaW9uRXJyb3InLCBhcmdyZXByPSdaZXJvRGl2aXNpb25FcnJvcicsIG9mZnNldD0xNjEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTEwLCBhcmd2YWw9J2V4Y2VwdGlvbiBtYXRjaCcsIGFyZ3JlcHI9J2V4Y2VwdGlvbiBtYXRjaCcsIG9mZnNldD0xNjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xODcsIGFyZ3ZhbD0xODcsIGFyZ3JlcHI9JycsIG9mZnNldD0xNjcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTcxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTczLCBzdGFydHNfbGluZT0yMywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9OCwgYXJndmFsPSdIZXJlIHdlIGdvLCBoZXJlIHdlIGdvLCBoZXJlIHdlIGdvLi4uJywgYXJncmVwcj0iJ0hlcmUgd2UgZ28sIGhlcmUgd2UgZ28sIGhlcmUgd2UgZ28uLi4nIiwgb2Zmc2V0PTE3Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MTc5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiAgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xODIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTg0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE4NSwgc3RhcnRzX2xpbmU9MjMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTgsIGFyZ3ZhbD0nSGVyZSB3ZSBnbywgaGVyZSB3ZSBnbywgaGVyZSB3ZSBnby4uLicsIGFyZ3JlcHI9IidIZXJlIHdlIGdvLCBoZXJlIHdlIGdvLCBoZXJlIHdlIGdvLi4uJyIsIG9mZnNldD0xODgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTE5MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTk0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0VYQ0VQVCcsIG9wY29kZT04OSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTk1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9GT1JXQVJEJywgb3Bjb2RlPTExMCwgYXJnPTI2LCBhcmd2YWw9MjI1LCBhcmdyZXByPSd0byAyMjUnLCBvZmZzZXQ9MTk2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE5OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MjAwLCBzdGFydHNfbGluZT0yNSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfV0lUSCcsIG9wY29kZT0xNDMsIGFyZz0xNywgYXJndmFsPTIyMywgYXJncmVwcj0ndG8gMjIzJywgb2Zmc2V0PTIwMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MSwgYXJndmFsPSdkb2RneScsIGFyZ3JlcHI9J2RvZGd5Jywgb2Zmc2V0PTIwNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0yMDksIHN0YXJ0c19saW5lPTI2LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz05LCBhcmd2YWw9J05ldmVyIHJlYWNoIHRoaXMnLCBhcmdyZXByPSInTmV2ZXIgcmVhY2ggdGhpcyciLCBvZmZzZXQ9MjEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0yMTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjE5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0yMjAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdXSVRIX0NMRUFOVVAnLCBvcGNvZGU9ODEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIyMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIyNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjI1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTIyNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0yMjksIHN0YXJ0c19saW5lPTI4LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEwLCBhcmd2YWw9Ik9LLCBub3cgd2UncmUgZG9uZSIsIGFyZ3JlcHI9JyJPSywgbm93IHdlXCdyZSBkb25lIicsIG9mZnNldD0yMzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTIzNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjM4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIzOSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MjQwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yNDMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfRVhDRVBUJywgb3Bjb2RlPTg5LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xODMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0ZPUldBUkQnLCBvcGNvZGU9MTEwLCBhcmc9MjcsIGFyZ3ZhbD0yMTQsIGFyZ3JlcHI9J3RvIDIxNCcsIG9mZnNldD0xODQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdFTkRfRklOQUxMWScsIG9wY29kZT04OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTg3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xODgsIHN0YXJ0c19saW5lPTI1LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9XSVRIJywgb3Bjb2RlPTE0MywgYXJnPTE3LCBhcmd2YWw9MjExLCBhcmdyZXByPSd0byAyMTEnLCBvZmZzZXQ9MTkxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0xLCBhcmd2YWw9J2RvZGd5JywgYXJncmVwcj0nZG9kZ3knLCBvZmZzZXQ9MTk0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE5Nywgc3RhcnRzX2xpbmU9MjYsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTksIGFyZ3ZhbD0nTmV2ZXIgcmVhY2ggdGhpcycsIGFyZ3JlcHI9IidOZXZlciByZWFjaCB0aGlzJyIsIG9mZnNldD0yMDAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTIwMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjA2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMDcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTIwOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1dJVEhfQ0xFQU5VUF9TVEFSVCcsIG9wY29kZT04MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjExLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdXSVRIX0NMRUFOVVBfRklOSVNIJywgb3Bjb2RlPTgyLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdFTkRfRklOQUxMWScsIG9wY29kZT04OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjEzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MjE1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTIxOCwgc3RhcnRzX2xpbmU9MjgsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MTAsIGFyZ3ZhbD0iT0ssIG5vdyB3ZSdyZSBkb25lIiwgYXJncmVwcj0nIk9LLCBub3cgd2VcJ3JlIGRvbmUiJywgb2Zmc2V0PTIyMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MjI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMjcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdFTkRfRklOQUxMWScsIG9wY29kZT04OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0yMjksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIzMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogXQogCiAjIE9uZSBsYXN0IHBpZWNlIG9mIGluc3BlY3QgZm9kZGVyIHRvIGNoZWNrIHRoZSBkZWZhdWx0IGxpbmUgbnVtYmVyIGhhbmRsaW5nCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkgYi9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkKaW5kZXggOTI5MmQ5Mi4uMzc5ZTMxNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weQpAQCAtNCw2ICs0LDcgQEAKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgZG9jdGVzdAoraW1wb3J0IGZ1bmN0b29scwogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiAKQEAgLTQzNCw3ICs0MzUsNyBAQAogICAgID4+PiB0ZXN0cyA9IGZpbmRlci5maW5kKHNhbXBsZV9mdW5jKQogCiAgICAgPj4+IHByaW50KHRlc3RzKSAgIyBkb2N0ZXN0OiArRUxMSVBTSVMKLSAgICBbPERvY1Rlc3Qgc2FtcGxlX2Z1bmMgZnJvbSAuLi46MTggKDEgZXhhbXBsZSk+XQorICAgIFs8RG9jVGVzdCBzYW1wbGVfZnVuYyBmcm9tIC4uLjoxOSAoMSBleGFtcGxlKT5dCiAKIFRoZSBleGFjdCBuYW1lIGRlcGVuZHMgb24gaG93IHRlc3RfZG9jdGVzdCB3YXMgaW52b2tlZCwgc28gYWxsb3cgZm9yCiBsZWFkaW5nIHBhdGggY29tcG9uZW50cy4KQEAgLTY1OCw3ICs2NTksNyBAQAogCiAgICAgPj4+IGltcG9ydCBidWlsdGlucwogICAgID4+PiB0ZXN0cyA9IGRvY3Rlc3QuRG9jVGVzdEZpbmRlcigpLmZpbmQoYnVpbHRpbnMpCi0gICAgPj4+IDc5MCA8IGxlbih0ZXN0cykgPCA4MDAgIyBhcHByb3hpbWF0ZSBudW1iZXIgb2Ygb2JqZWN0cyB3aXRoIGRvY3N0cmluZ3MKKyAgICA+Pj4gNzkwIDwgbGVuKHRlc3RzKSA8IDgxMCAjIGFwcHJveGltYXRlIG51bWJlciBvZiBvYmplY3RzIHdpdGggZG9jc3RyaW5ncwogICAgIFRydWUKICAgICA+Pj4gcmVhbF90ZXN0cyA9IFt0IGZvciB0IGluIHRlc3RzIGlmIGxlbih0LmV4YW1wbGVzKSA+IDBdCiAgICAgPj4+IGxlbihyZWFsX3Rlc3RzKSAjIG9iamVjdHMgdGhhdCBhY3R1YWxseSBoYXZlIGRvY3Rlc3RzCkBAIC0yMDk2LDIyICsyMDk3LDkgQEAKICAgICAgICAgID4+PiBzdWl0ZS5ydW4odW5pdHRlc3QuVGVzdFJlc3VsdCgpKQogICAgICAgICAgPHVuaXR0ZXN0LnJlc3VsdC5UZXN0UmVzdWx0IHJ1bj0wIGVycm9ycz0wIGZhaWx1cmVzPTA+CiAKLSAgICAgICBIb3dldmVyLCBpZiBEb2NUZXN0U3VpdGUgZmluZHMgbm8gZG9jc3RyaW5ncywgaXQgcmFpc2VzIGFuIGVycm9yOgorICAgICAgIFRoZSBtb2R1bGUgbmVlZCBub3QgY29udGFpbiBhbnkgZG9jc3RyaW5ncyBlaXRoZXI6CiAKLSAgICAgICAgID4+PiB0cnk6Ci0gICAgICAgICAuLi4gICAgIGRvY3Rlc3QuRG9jVGVzdFN1aXRlKCd0ZXN0LnNhbXBsZV9kb2N0ZXN0X25vX2RvY3N0cmluZ3MnKQotICAgICAgICAgLi4uIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgICAgICAuLi4gICAgIGVycm9yID0gZQotCi0gICAgICAgICA+Pj4gcHJpbnQoZXJyb3IuYXJnc1sxXSkKLSAgICAgICAgIGhhcyBubyBkb2NzdHJpbmdzCi0KLSAgICAgICBZb3UgY2FuIHByZXZlbnQgdGhpcyBlcnJvciBieSBwYXNzaW5nIGEgRG9jVGVzdEZpbmRlciBpbnN0YW5jZSB3aXRoCi0gICAgICAgdGhlIGBleGNsdWRlX2VtcHR5YCBrZXl3b3JkIGFyZ3VtZW50IHNldCB0byBGYWxzZToKLQotICAgICAgICAgPj4+IGZpbmRlciA9IGRvY3Rlc3QuRG9jVGVzdEZpbmRlcihleGNsdWRlX2VtcHR5PUZhbHNlKQotICAgICAgICAgPj4+IHN1aXRlID0gZG9jdGVzdC5Eb2NUZXN0U3VpdGUoJ3Rlc3Quc2FtcGxlX2RvY3Rlc3Rfbm9fZG9jc3RyaW5ncycsCi0gICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2ZpbmRlcj1maW5kZXIpCisgICAgICAgICA+Pj4gc3VpdGUgPSBkb2N0ZXN0LkRvY1Rlc3RTdWl0ZSgndGVzdC5zYW1wbGVfZG9jdGVzdF9ub19kb2NzdHJpbmdzJykKICAgICAgICAgID4+PiBzdWl0ZS5ydW4odW5pdHRlc3QuVGVzdFJlc3VsdCgpKQogICAgICAgICAgPHVuaXR0ZXN0LnJlc3VsdC5UZXN0UmVzdWx0IHJ1bj0wIGVycm9ycz0wIGZhaWx1cmVzPTA+CiAKQEAgLTIxMjEsNiArMjEwOSwyMiBAQAogICAgICAgICAgPj4+IHN1aXRlLnJ1bih1bml0dGVzdC5UZXN0UmVzdWx0KCkpCiAgICAgICAgICA8dW5pdHRlc3QucmVzdWx0LlRlc3RSZXN1bHQgcnVuPTkgZXJyb3JzPTAgZmFpbHVyZXM9ND4KIAorICAgICAgIFdlIGNhbiBhbHNvIHByb3ZpZGUgYSBEb2NUZXN0RmluZGVyOgorCisgICAgICAgICA+Pj4gZmluZGVyID0gZG9jdGVzdC5Eb2NUZXN0RmluZGVyKCkKKyAgICAgICAgID4+PiBzdWl0ZSA9IGRvY3Rlc3QuRG9jVGVzdFN1aXRlKCd0ZXN0LnNhbXBsZV9kb2N0ZXN0JywKKyAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9maW5kZXI9ZmluZGVyKQorICAgICAgICAgPj4+IHN1aXRlLnJ1bih1bml0dGVzdC5UZXN0UmVzdWx0KCkpCisgICAgICAgICA8dW5pdHRlc3QucmVzdWx0LlRlc3RSZXN1bHQgcnVuPTkgZXJyb3JzPTAgZmFpbHVyZXM9ND4KKworICAgICAgIFRoZSBEb2NUZXN0RmluZGVyIG5lZWQgbm90IHJldHVybiBhbnkgdGVzdHM6CisKKyAgICAgICAgID4+PiBmaW5kZXIgPSBkb2N0ZXN0LkRvY1Rlc3RGaW5kZXIoKQorICAgICAgICAgPj4+IHN1aXRlID0gZG9jdGVzdC5Eb2NUZXN0U3VpdGUoJ3Rlc3Quc2FtcGxlX2RvY3Rlc3Rfbm9fZG9jc3RyaW5ncycsCisgICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZmluZGVyPWZpbmRlcikKKyAgICAgICAgID4+PiBzdWl0ZS5ydW4odW5pdHRlc3QuVGVzdFJlc3VsdCgpKQorICAgICAgICAgPHVuaXR0ZXN0LnJlc3VsdC5UZXN0UmVzdWx0IHJ1bj0wIGVycm9ycz0wIGZhaWx1cmVzPTA+CisKICAgICAgICBXZSBjYW4gc3VwcGx5IGdsb2JhbCB2YXJpYWJsZXMuICBJZiB3ZSBwYXNzIGdsb2JzLCB0aGV5IHdpbGwgYmUKICAgICAgICB1c2VkIGluc3RlYWQgb2YgdGhlIG1vZHVsZSBnbG9iYWxzLiAgSGVyZSB3ZSdsbCBwYXNzIGFuIGVtcHR5CiAgICAgICAgZ2xvYmFscywgdHJpZ2dlcmluZyBhbiBleHRyYSBlcnJvcjoKQEAgLTIxNjgsNyArMjE3Miw3IEBACiAgICAgICAgICA+Pj4gdGVzdC50ZXN0X2RvY3Rlc3Quc2lsbHlTZXR1cAogICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgICAgLi4uCi0gICAgICAgICBBdHRyaWJ1dGVFcnJvcjogJ21vZHVsZScgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ3NpbGx5U2V0dXAnCisgICAgICAgICBBdHRyaWJ1dGVFcnJvcjogbW9kdWxlICd0ZXN0LnRlc3RfZG9jdGVzdCcgaGFzIG5vIGF0dHJpYnV0ZSAnc2lsbHlTZXR1cCcKIAogICAgICAgIFRoZSBzZXRVcCBhbmQgdGVhckRvd24gZnVuY3Rpb25zIGFyZSBwYXNzZWQgdGVzdCBvYmplY3RzLiBIZXJlCiAgICAgICAgd2UnbGwgdXNlIHRoZSBzZXRVcCBmdW5jdGlvbiB0byBzdXBwbHkgdGhlIG1pc3NpbmcgdmFyaWFibGUgeToKQEAgLTIzMTQsNyArMjMxOCw3IEBACiAgICAgICAgICA+Pj4gdGVzdC50ZXN0X2RvY3Rlc3Quc2lsbHlTZXR1cAogICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgICAgLi4uCi0gICAgICAgICBBdHRyaWJ1dGVFcnJvcjogJ21vZHVsZScgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ3NpbGx5U2V0dXAnCisgICAgICAgICBBdHRyaWJ1dGVFcnJvcjogbW9kdWxlICd0ZXN0LnRlc3RfZG9jdGVzdCcgaGFzIG5vIGF0dHJpYnV0ZSAnc2lsbHlTZXR1cCcKIAogICAgICAgIFRoZSBzZXRVcCBhbmQgdGVhckRvd24gZnVuY3Rpb25zIGFyZSBwYXNzZWQgdGVzdCBvYmplY3RzLgogICAgICAgIEhlcmUsIHdlJ2xsIHVzZSBhIHNldFVwIGZ1bmN0aW9uIHRvIHNldCB0aGUgZmF2b3JpdGUgY29sb3IgaW4KQEAgLTIzNjEsNiArMjM2NSwyMiBAQAogICAgICAgZm9vIFxuCiAgICAgIiIiCiAKK2NsYXNzIFdyYXBwZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmMpOgorICAgICAgICBzZWxmLmZ1bmMgPSBmdW5jCisgICAgICAgIGZ1bmN0b29scy51cGRhdGVfd3JhcHBlcihzZWxmLCBmdW5jKQorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuZnVuYygqYXJncywgKiprd2FyZ3MpCisKK0BXcmFwcGVyCitkZWYgdGVzdF9sb29rX2luX3Vud3JhcHBlZCgpOgorICAgICIiIgorICAgIERvY3N0cmluZ3MgaW4gd3JhcHBlZCBmdW5jdGlvbnMgbXVzdCBiZSBkZXRlY3RlZCBhcyB3ZWxsLgorCisgICAgPj4+ICdvbmUgb3RoZXIgdGVzdCcKKyAgICAnb25lIG90aGVyIHRlc3QnCisgICAgIiIiCiAKIGRlZiB0ZXN0X3VuaXR0ZXN0X3JlcG9ydGZsYWdzKCk6CiAgICAgIiIiRGVmYXVsdCB1bml0dGVzdCByZXBvcnRpbmcgZmxhZ3MgY2FuIGJlIHNldCB0byBjb250cm9sIHJlcG9ydGluZwpAQCAtMjYyNyw3ICsyNjQ3LDcgQEAKICAgICA+Pj4gd2l0aCBvcGVuKGZuLCAnd2InKSBhcyBmOgogICAgIC4uLiAgICBmLndyaXRlKGInVGVzdDpcclxuXHJcbiAgPj4+IHggPSAxICsgMVxyXG5cclxuRG9uZS5cclxuJykKICAgICAzNQotICAgID4+PiBkb2N0ZXN0LnRlc3RmaWxlKGZuLCBGYWxzZSkKKyAgICA+Pj4gZG9jdGVzdC50ZXN0ZmlsZShmbiwgbW9kdWxlX3JlbGF0aXZlPUZhbHNlLCB2ZXJib3NlPUZhbHNlKQogICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MSkKICAgICA+Pj4gb3MucmVtb3ZlKGZuKQogCkBAIC0yNjM3LDcgKzI2NTcsNyBAQAogICAgID4+PiB3aXRoIG9wZW4oZm4sICd3YicpIGFzIGY6CiAgICAgLi4uICAgICBmLndyaXRlKGInVGVzdDpcblxuICA+Pj4geCA9IDEgKyAxXG5cbkRvbmUuXG4nKQogICAgIDMwCi0gICAgPj4+IGRvY3Rlc3QudGVzdGZpbGUoZm4sIEZhbHNlKQorICAgID4+PiBkb2N0ZXN0LnRlc3RmaWxlKGZuLCBtb2R1bGVfcmVsYXRpdmU9RmFsc2UsIHZlcmJvc2U9RmFsc2UpCiAgICAgVGVzdFJlc3VsdHMoZmFpbGVkPTAsIGF0dGVtcHRlZD0xKQogICAgID4+PiBvcy5yZW1vdmUoZm4pCiAKQEAgLTI3MDksOCArMjcyOSw4IEBACiBzaW1wbGUgdGVzdHMgYW5kIG5vIGVycm9ycy4gIFdlJ2xsIHJ1biBib3RoIHRoZSB1bmFkb3JuZWQgZG9jdGVzdCBjb21tYW5kLCBhbmQKIHRoZSB2ZXJib3NlIHZlcnNpb24sIGFuZCB0aGVuIGNoZWNrIHRoZSBvdXRwdXQ6CiAKLSAgICA+Pj4gZnJvbSB0ZXN0IGltcG9ydCBzY3JpcHRfaGVscGVyCi0gICAgPj4+IHdpdGggc2NyaXB0X2hlbHBlci50ZW1wX2RpcigpIGFzIHRtcGRpcjoKKyAgICA+Pj4gZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIsIHRlbXBfZGlyCisgICAgPj4+IHdpdGggdGVtcF9kaXIoKSBhcyB0bXBkaXI6CiAgICAgLi4uICAgICBmbiA9IG9zLnBhdGguam9pbih0bXBkaXIsICdteWZpbGUuZG9jJykKICAgICAuLi4gICAgIHdpdGggb3BlbihmbiwgJ3cnKSBhcyBmOgogICAgIC4uLiAgICAgICAgIF8gPSBmLndyaXRlKCdUaGlzIGlzIGEgdmVyeSBzaW1wbGUgdGVzdCBmaWxlLlxuJykKQEAgLTI3NjAsOCArMjc4MCw4IEBACiBmaWxlIGVuZHMgaW4gJy5weScsIGl0cyBoYW5kbGluZyBvZiBweXRob24gbW9kdWxlIGZpbGVzIChhcyBvcHBvc2VkIHRvIHN0cmFpZ2h0CiB0ZXh0IGZpbGVzKS4KIAotICAgID4+PiBmcm9tIHRlc3QgaW1wb3J0IHNjcmlwdF9oZWxwZXIKLSAgICA+Pj4gd2l0aCBzY3JpcHRfaGVscGVyLnRlbXBfZGlyKCkgYXMgdG1wZGlyOgorICAgID4+PiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlciwgdGVtcF9kaXIKKyAgICA+Pj4gd2l0aCB0ZW1wX2RpcigpIGFzIHRtcGRpcjoKICAgICAuLi4gICAgIGZuID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ215ZmlsZS5kb2MnKQogICAgIC4uLiAgICAgd2l0aCBvcGVuKGZuLCAndycpIGFzIGY6CiAgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoJ1RoaXMgaXMgYW5vdGhlciBzaW1wbGUgdGVzdCBmaWxlLlxuJykKQEAgLTI5MjcsNyArMjk0Nyw3IEBACiAKIGRlZiB0ZXN0X21haW4oKToKICAgICAjIENoZWNrIHRoZSBkb2N0ZXN0IGNhc2VzIGluIGRvY3Rlc3QgaXRzZWxmOgotICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QoZG9jdGVzdCwgdmVyYm9zaXR5PVRydWUpCisgICAgcmV0ID0gc3VwcG9ydC5ydW5fZG9jdGVzdChkb2N0ZXN0LCB2ZXJib3NpdHk9VHJ1ZSkKICAgICAjIENoZWNrIHRoZSBkb2N0ZXN0IGNhc2VzIGRlZmluZWQgaGVyZToKICAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfZG9jdGVzdAogICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QodGVzdF9kb2N0ZXN0LCB2ZXJib3NpdHk9VHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZG9jeG1scnBjLnB5IGIvTGliL3Rlc3QvdGVzdF9kb2N4bWxycGMucHkKaW5kZXggMDYxNjFmMi4uZTZjYTk2MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kb2N4bWxycGMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kb2N4bWxycGMucHkKQEAgLTg3LDEwICs4NywxMSBAQAogICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZXJ2ZXIsIGFyZ3M9KHNlbGYuZXZ0LCAxKSkuc3RhcnQoKQogCiAgICAgICAgICMgd2FpdCBmb3IgcG9ydCB0byBiZSBhc3NpZ25lZAotICAgICAgICBuID0gMTAwMAotICAgICAgICB3aGlsZSBuID4gMCBhbmQgUE9SVCBpcyBOb25lOgotICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAwMSkKLSAgICAgICAgICAgIG4gLT0gMQorICAgICAgICBkZWFkbGluZSA9IHRpbWUubW9ub3RvbmljKCkgKyAxMC4wCisgICAgICAgIHdoaWxlIFBPUlQgaXMgTm9uZToKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMTApCisgICAgICAgICAgICBpZiB0aW1lLm1vbm90b25pYygpID4gZGVhZGxpbmU6CisgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICBzZWxmLmNsaWVudCA9IGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uKCJsb2NhbGhvc3Q6JWQiICUgUE9SVCkKIApAQCAtMjEyLDggKzIxMyw1IEBACiAgICAgICAgICAgICByZXNwb25zZS5yZWFkKCkpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KERvY1hNTFJQQ0hUVFBHRVRTZXJ2ZXIpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9kdW1teV90aHJlYWRpbmcucHkKaW5kZXggNmVjNWRhMy4uYTBjMjk3MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kdW1teV90aHJlYWRpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kdW1teV90aHJlYWRpbmcucHkKQEAgLTU2LDkgKzU2LDUgQEAKICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgcHJpbnQoJ2FsbCB0YXNrcyBkb25lJykKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KER1bW15VGhyZWFkaW5nVGVzdENhc2UpCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9keW5hbWljLnB5IGIvTGliL3Rlc3QvdGVzdF9keW5hbWljLnB5CmluZGV4IGJlYjdiMWMuLjUwODBlYzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZHluYW1pYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2R5bmFtaWMucHkKQEAgLTQsNyArNCw3IEBACiBpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIHN3YXBfaXRlbSwgc3dhcF9hdHRyCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc3dhcF9pdGVtLCBzd2FwX2F0dHIKIAogCiBjbGFzcyBSZWJpbmRCdWlsdGluc1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTEzNSw5ICsxMzUsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygpLCA3KQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoUmViaW5kQnVpbHRpbnNUZXN0cykKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2R5bmFtaWNjbGFzc2F0dHJpYnV0ZS5weSBiL0xpYi90ZXN0L3Rlc3RfZHluYW1pY2NsYXNzYXR0cmlidXRlLnB5CmluZGV4IGJjNmEzOWIuLjlmNjk0ZDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZHluYW1pY2NsYXNzYXR0cmlidXRlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZHluYW1pY2NsYXNzYXR0cmlidXRlLnB5CkBAIC00LDcgKzQsNiBAQAogaW1wb3J0IGFiYwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiBmcm9tIHR5cGVzIGltcG9ydCBEeW5hbWljQ2xhc3NBdHRyaWJ1dGUKIAogY2xhc3MgUHJvcGVydHlCYXNlKEV4Y2VwdGlvbik6CkBAIC0yOTcsOCArMjk2LDUgQEAKIAogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoUHJvcGVydHlUZXN0cywgUHJvcGVydHlTdWJjbGFzc1Rlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VpbnRyLnB5IGIvTGliL3Rlc3QvdGVzdF9laW50ci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWJhZDgzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9laW50ci5weQpAQCAtMCwwICsxLDMwIEBACitpbXBvcnQgb3MKK2ltcG9ydCBzaWduYWwKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gInBvc2l4IiwgIm9ubHkgc3VwcG9ydGVkIG9uIFVuaXgiKQorY2xhc3MgRUlOVFJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgInNldGl0aW1lciIpLCAicmVxdWlyZXMgc2V0aXRpbWVyKCkiKQorICAgIGRlZiB0ZXN0X2FsbChzZWxmKToKKyAgICAgICAgIyBSdW4gdGhlIHRlc3RlciBpbiBhIHN1Yi1wcm9jZXNzLCB0byBtYWtlIHN1cmUgdGhlcmUgaXMgb25seSBvbmUKKyAgICAgICAgIyB0aHJlYWQgKGZvciByZWxpYWJsZSBzaWduYWwgZGVsaXZlcnkpLgorICAgICAgICB0ZXN0ZXIgPSBzdXBwb3J0LmZpbmRmaWxlKCJlaW50cl90ZXN0ZXIucHkiLCBzdWJkaXI9ImVpbnRyZGF0YSIpCisKKyAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgdGVzdGVyXQorICAgICAgICAgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MpIGFzIHByb2M6CisgICAgICAgICAgICAgICAgZXhpdGNvZGUgPSBwcm9jLndhaXQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vayh0ZXN0ZXIpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQppbmRleCA4NGY0ZTM4Li44OTRiODAwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2VtYWlsLnB5CkBAIC01OTAsNiArNTkwLDE3IEBACiAgICAgICAgIGVxKG1zZy52YWx1ZXMoKSwgWydPbmUgSHVuZHJlZCcsICdUd2VudHknLCAnVGhyZWUnLCAnRWxldmVuJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBtc2cucmVwbGFjZV9oZWFkZXIsICdGb3VydGgnLCAnTWlzc2luZycpCiAKKyAgICBkZWYgdGVzdF9nZXRfY29udGVudF9kaXNwb3NpdGlvbihzZWxmKToKKyAgICAgICAgbXNnID0gTWVzc2FnZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1zZy5nZXRfY29udGVudF9kaXNwb3NpdGlvbigpKQorICAgICAgICBtc2cuYWRkX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdhdHRhY2htZW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9J3JhbmRvbS5hdmknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfY29udGVudF9kaXNwb3NpdGlvbigpLCAnYXR0YWNobWVudCcpCisgICAgICAgIG1zZy5yZXBsYWNlX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdpbmxpbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfY29udGVudF9kaXNwb3NpdGlvbigpLCAnaW5saW5lJykKKyAgICAgICAgbXNnLnJlcGxhY2VfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ0lubGluRScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9jb250ZW50X2Rpc3Bvc2l0aW9uKCksICdpbmxpbmUnKQorCiAgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZzp0ZXN0X2ludmFsaWRfY2hhcnNfaW5fYmFzZTY0X3BheWxvYWQKICAgICBkZWYgdGVzdF9icm9rZW5fYmFzZTY0X3BheWxvYWQoc2VsZik6CiAgICAgICAgIHggPSAnQXdEcDBQNy8veTZMd0tFQWNQYS82UT05JwpAQCAtMTY0MCw2ICsxNjUxLDEwIEBACiAgICAgICAgIG1zZyA9IE1JTUVUZXh0KCdoZWxsbyB0aGVyZScsIF9jaGFyc2V0PSd1cy1hc2NpaScpCiAgICAgICAgIGVxKG1zZy5nZXRfY2hhcnNldCgpLmlucHV0X2NoYXJzZXQsICd1cy1hc2NpaScpCiAgICAgICAgIGVxKG1zZ1snY29udGVudC10eXBlJ10sICd0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSInKQorICAgICAgICAjIEFsc28gYWNjZXB0IGEgQ2hhcnNldCBpbnN0YW5jZQorICAgICAgICBtc2cgPSBNSU1FVGV4dCgnaGVsbG8gdGhlcmUnLCBfY2hhcnNldD1DaGFyc2V0KCd1dGYtOCcpKQorICAgICAgICBlcShtc2cuZ2V0X2NoYXJzZXQoKS5pbnB1dF9jaGFyc2V0LCAndXRmLTgnKQorICAgICAgICBlcShtc2dbJ2NvbnRlbnQtdHlwZSddLCAndGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiJykKIAogICAgIGRlZiB0ZXN0XzdiaXRfaW5wdXQoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbApAQCAtMzE2NCwxMCArMzE3OSw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5tc2dpZHMgPSBbXQogICAgICAgICAgICAgICAgIGFwcGVuZCA9IHNlbGYubXNnaWRzLmFwcGVuZAogICAgICAgICAgICAgICAgIG1ha2VfbXNnaWQgPSB1dGlscy5tYWtlX21zZ2lkCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBjbG9jayA9IHRpbWUubW9ub3RvbmljCi0gICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICBjbG9jayA9IHRpbWUudGltZQorICAgICAgICAgICAgICAgIGNsb2NrID0gdGltZS5tb25vdG9uaWMKICAgICAgICAgICAgICAgICB0ZmluID0gY2xvY2soKSArIDMuMAogICAgICAgICAgICAgICAgIHdoaWxlIGNsb2NrKCkgPCB0ZmluOgogICAgICAgICAgICAgICAgICAgICBhcHBlbmQobWFrZV9tc2dpZChkb21haW49J3Rlc3Rkb21haW4tc3RyaW5nJykpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZ2VuZXJhdG9yLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weQppbmRleCA4OTE3NDA4Li5iMWNiY2UyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZ2VuZXJhdG9yLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkKQEAgLTIsNiArMiw3IEBACiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB1bml0dGVzdAogZnJvbSBlbWFpbCBpbXBvcnQgbWVzc2FnZV9mcm9tX3N0cmluZywgbWVzc2FnZV9mcm9tX2J5dGVzCitmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IEVtYWlsTWVzc2FnZQogZnJvbSBlbWFpbC5nZW5lcmF0b3IgaW1wb3J0IEdlbmVyYXRvciwgQnl0ZXNHZW5lcmF0b3IKIGZyb20gZW1haWwgaW1wb3J0IHBvbGljeQogZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UsIHBhcmFtZXRlcml6ZQpAQCAtMTM5LDYgKzE0MCwyOCBAQAogICAgICAgICBnLmZsYXR0ZW4obXNnLCBsaW5lc2VwPSdcbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBzZWxmLnR5cChleHBlY3RlZCkpCiAKKyAgICBkZWYgdGVzdF9zZXRfbWFuZ2xlX2Zyb21fdmlhX3BvbGljeShzZWxmKToKKyAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIFN1YmplY3Q6IHRlc3QgdGhhdAorICAgICAgICAgICAgIGZyb20gaXMgbWFuZ2VsZCBpbiB0aGUgYm9keSEKKworICAgICAgICAgICAgRnJvbSB0aW1lIHRvIHRpbWUgSSB3cml0ZSBhIHJoeW1lLgorICAgICAgICAgICAgIiIiKQorICAgICAgICB2YXJpYW50cyA9ICgKKyAgICAgICAgICAgIChOb25lLCBUcnVlKSwKKyAgICAgICAgICAgIChwb2xpY3kuY29tcGF0MzIsIFRydWUpLAorICAgICAgICAgICAgKHBvbGljeS5kZWZhdWx0LCBGYWxzZSksCisgICAgICAgICAgICAocG9saWN5LmRlZmF1bHQuY2xvbmUobWFuZ2xlX2Zyb21fPVRydWUpLCBUcnVlKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgZm9yIHAsIG1hbmdsZSBpbiB2YXJpYW50czoKKyAgICAgICAgICAgIGV4cGVjdGVkID0gc291cmNlLnJlcGxhY2UoJ0Zyb20gJywgJz5Gcm9tICcpIGlmIG1hbmdsZSBlbHNlIHNvdXJjZQorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocG9saWN5PXAsIG1hbmdsZV9mcm9tXz1tYW5nbGUpOgorICAgICAgICAgICAgICAgIG1zZyA9IHNlbGYubXNnbWFrZXIoc2VsZi50eXAoc291cmNlKSkKKyAgICAgICAgICAgICAgICBzID0gc2VsZi5pb2NsYXNzKCkKKyAgICAgICAgICAgICAgICBnID0gc2VsZi5nZW5jbGFzcyhzLCBwb2xpY3k9cCkKKyAgICAgICAgICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBzZWxmLnR5cChleHBlY3RlZCkpCisKIAogY2xhc3MgVGVzdEdlbmVyYXRvcihUZXN0R2VuZXJhdG9yQmFzZSwgVGVzdEVtYWlsQmFzZSk6CiAKQEAgLTE5NCw2ICsyMTcsMjcgQEAKICAgICAgICAgZy5mbGF0dGVuKG1zZykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIGV4cGVjdGVkKQogCisgICAgZGVmIHRlc3Rfc210cHV0ZjhfcG9saWN5KHNlbGYpOgorICAgICAgICBtc2cgPSBFbWFpbE1lc3NhZ2UoKQorICAgICAgICBtc2dbJ0Zyb20nXSA9ICJQw6FvbG8gPGbFkW9AYmFyLmNvbT4iCisgICAgICAgIG1zZ1snVG8nXSA9ICdEaW5zZGFsZScKKyAgICAgICAgbXNnWydTdWJqZWN0J10gPSAnTnVkZ2UgbnVkZ2UsIHdpbmssIHdpbmsgXHUxRjYwOScKKyAgICAgICAgbXNnLnNldF9jb250ZW50KCJvaCBsw6AgbMOgLCBrbm93IHdoYXQgSSBtZWFuLCBrbm93IHdoYXQgSSBtZWFuPyIpCisgICAgICAgIGV4cGVjdGVkID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIEZyb206IFDDoW9sbyA8ZsWRb0BiYXIuY29tPgorICAgICAgICAgICAgVG86IERpbnNkYWxlCisgICAgICAgICAgICBTdWJqZWN0OiBOdWRnZSBudWRnZSwgd2luaywgd2luayBcdTFGNjA5CisgICAgICAgICAgICBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04IgorICAgICAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorICAgICAgICAgICAgTUlNRS1WZXJzaW9uOiAxLjAKKworICAgICAgICAgICAgb2ggbMOgIGzDoCwga25vdyB3aGF0IEkgbWVhbiwga25vdyB3aGF0IEkgbWVhbj8KKyAgICAgICAgICAgICIiIikuZW5jb2RlKCd1dGYtOCcpLnJlcGxhY2UoYidcbicsIGInXHJcbicpCisgICAgICAgIHMgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgZyA9IEJ5dGVzR2VuZXJhdG9yKHMsIHBvbGljeT1wb2xpY3kuU01UUFVURjgpCisgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weQppbmRleCA1MGUxYTYzLi5kNzgwNDllIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weQpAQCAtNzIzLDI0ICs3MjMsMTQgQEAKICAgICBkZWYgdGVzdF9pc19hdHRhY2htZW50KHNlbGYpOgogICAgICAgICBtID0gc2VsZi5fbWFrZV9tZXNzYWdlKCkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtLmlzX2F0dGFjaG1lbnQoKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG0uaXNfYXR0YWNobWVudCkKICAgICAgICAgbVsnQ29udGVudC1EaXNwb3NpdGlvbiddID0gJ2lubGluZScKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtLmlzX2F0dGFjaG1lbnQoKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG0uaXNfYXR0YWNobWVudCkKICAgICAgICAgbS5yZXBsYWNlX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdhdHRhY2htZW50JykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uaXNfYXR0YWNobWVudCgpKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmlzX2F0dGFjaG1lbnQpCiAgICAgICAgIG0ucmVwbGFjZV9oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCAnQXRUYWNoTWVudCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmlzX2F0dGFjaG1lbnQoKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobS5pc19hdHRhY2htZW50KQogICAgICAgICBtLnNldF9wYXJhbSgnZmlsZW5hbWUnLCAnYWJjLnBuZycsICdDb250ZW50LURpc3Bvc2l0aW9uJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uaXNfYXR0YWNobWVudCgpKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmlzX2F0dGFjaG1lbnQpCiAKIAogY2xhc3MgVGVzdEVtYWlsTWVzc2FnZShUZXN0RW1haWxNZXNzYWdlQmFzZSwgVGVzdEVtYWlsQmFzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weQppbmRleCBlNzk3ZjM2Li45YmIzMmYwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKQEAgLTIyLDE1ICsyMiwxOCBAQAogICAgICAgICAnbGluZXNlcCc6ICAgICAgICAgICAgICAgICAgJ1xuJywKICAgICAgICAgJ2N0ZV90eXBlJzogICAgICAgICAgICAgICAgICc4Yml0JywKICAgICAgICAgJ3JhaXNlX29uX2RlZmVjdCc6ICAgICAgICAgIEZhbHNlLAorICAgICAgICAnbWFuZ2xlX2Zyb21fJzogICAgICAgICAgICAgVHJ1ZSwKICAgICAgICAgfQogICAgICMgVGhlc2UgZGVmYXVsdCB2YWx1ZXMgYXJlIHRoZSBvbmVzIHNldCBvbiBlbWFpbC5wb2xpY3kuZGVmYXVsdC4KICAgICAjIElmIGFueSBvZiB0aGVzZSBkZWZhdWx0cyBjaGFuZ2UsIHRoZSBkb2NzIG11c3QgYmUgdXBkYXRlZC4KICAgICBwb2xpY3lfZGVmYXVsdHMgPSBjb21wYXQzMl9kZWZhdWx0cy5jb3B5KCkKICAgICBwb2xpY3lfZGVmYXVsdHMudXBkYXRlKHsKKyAgICAgICAgJ3V0ZjgnOiAgICAgICAgICAgICAgICAgICAgIEZhbHNlLAogICAgICAgICAncmFpc2Vfb25fZGVmZWN0JzogICAgICAgICAgRmFsc2UsCiAgICAgICAgICdoZWFkZXJfZmFjdG9yeSc6ICAgICAgICAgICBlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kuaGVhZGVyX2ZhY3RvcnksCiAgICAgICAgICdyZWZvbGRfc291cmNlJzogICAgICAgICAgICAnbG9uZycsCiAgICAgICAgICdjb250ZW50X21hbmFnZXInOiAgICAgICAgICBlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kuY29udGVudF9tYW5hZ2VyLAorICAgICAgICAnbWFuZ2xlX2Zyb21fJzogICAgICAgICAgICAgRmFsc2UsCiAgICAgICAgIH0pCiAKICAgICAjIEZvciBlYWNoIHBvbGljeSB1bmRlciB0ZXN0LCB3ZSBnaXZlIGhlcmUgd2hhdCB3ZSBleHBlY3QgdGhlIGRlZmF1bHRzIHRvCkBAIC00Miw2ICs0NSw5IEBACiAgICAgICAgIGVtYWlsLnBvbGljeS5kZWZhdWx0OiBtYWtlX2RlZmF1bHRzKHBvbGljeV9kZWZhdWx0cywge30pLAogICAgICAgICBlbWFpbC5wb2xpY3kuU01UUDogbWFrZV9kZWZhdWx0cyhwb2xpY3lfZGVmYXVsdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnbGluZXNlcCc6ICdcclxuJ30pLAorICAgICAgICBlbWFpbC5wb2xpY3kuU01UUFVURjg6IG1ha2VfZGVmYXVsdHMocG9saWN5X2RlZmF1bHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydsaW5lc2VwJzogJ1xyXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1dGY4JzogVHJ1ZX0pLAogICAgICAgICBlbWFpbC5wb2xpY3kuSFRUUDogbWFrZV9kZWZhdWx0cyhwb2xpY3lfZGVmYXVsdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnbGluZXNlcCc6ICdcclxuJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhfbGluZV9sZW5ndGgnOiBOb25lfSksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Vuc3VyZXBpcC5weSBiL0xpYi90ZXN0L3Rlc3RfZW5zdXJlcGlwLnB5CmluZGV4IDZkYzc2NGIuLmE3OGNhMTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW5zdXJlcGlwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW5zdXJlcGlwLnB5CkBAIC0zNTcsNCArMzU3LDQgQEAKIAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VudW0ucHkgYi9MaWIvdGVzdC90ZXN0X2VudW0ucHkKaW5kZXggNWRiNDA0MC4uNGI1ZDBkMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbnVtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW51bS5weQpAQCAtNjYsMTggKzY2LDE0IEBACiBleGNlcHQgRXhjZXB0aW9uOgogICAgIHBhc3MKIAotZGVmIHRlc3RfcGlja2xlX2R1bXBfbG9hZChhc3NlcnRpb24sIHNvdXJjZSwgdGFyZ2V0PU5vbmUsCi0gICAgICAgICosIHByb3RvY29sPSgwLCBISUdIRVNUX1BST1RPQ09MKSk6Ci0gICAgc3RhcnQsIHN0b3AgPSBwcm90b2NvbAorZGVmIHRlc3RfcGlja2xlX2R1bXBfbG9hZChhc3NlcnRpb24sIHNvdXJjZSwgdGFyZ2V0PU5vbmUpOgogICAgIGlmIHRhcmdldCBpcyBOb25lOgogICAgICAgICB0YXJnZXQgPSBzb3VyY2UKLSAgICBmb3IgcHJvdG9jb2wgaW4gcmFuZ2Uoc3RhcnQsIHN0b3ArMSk6CisgICAgZm9yIHByb3RvY29sIGluIHJhbmdlKEhJR0hFU1RfUFJPVE9DT0wgKyAxKToKICAgICAgICAgYXNzZXJ0aW9uKGxvYWRzKGR1bXBzKHNvdXJjZSwgcHJvdG9jb2w9cHJvdG9jb2wpKSwgdGFyZ2V0KQogCi1kZWYgdGVzdF9waWNrbGVfZXhjZXB0aW9uKGFzc2VydGlvbiwgZXhjZXB0aW9uLCBvYmosCi0gICAgICAgICosIHByb3RvY29sPSgwLCBISUdIRVNUX1BST1RPQ09MKSk6Ci0gICAgc3RhcnQsIHN0b3AgPSBwcm90b2NvbAotICAgIGZvciBwcm90b2NvbCBpbiByYW5nZShzdGFydCwgc3RvcCsxKToKK2RlZiB0ZXN0X3BpY2tsZV9leGNlcHRpb24oYXNzZXJ0aW9uLCBleGNlcHRpb24sIG9iaik6CisgICAgZm9yIHByb3RvY29sIGluIHJhbmdlKEhJR0hFU1RfUFJPVE9DT0wgKyAxKToKICAgICAgICAgd2l0aCBhc3NlcnRpb24oZXhjZXB0aW9uKToKICAgICAgICAgICAgIGR1bXBzKG9iaiwgcHJvdG9jb2w9cHJvdG9jb2wpCiAKQEAgLTU3NSwxMSArNTcxLDcgQEAKIAogICAgICAgICBzZWxmLl9fY2xhc3NfXy5OZXN0ZWRFbnVtID0gTmVzdGVkRW51bQogICAgICAgICBzZWxmLk5lc3RlZEVudW0uX19xdWFsbmFtZV9fID0gJyVzLk5lc3RlZEVudW0nICUgc2VsZi5fX2NsYXNzX18uX19uYW1lX18KLSAgICAgICAgdGVzdF9waWNrbGVfZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzLCBQaWNrbGluZ0Vycm9yLCBzZWxmLk5lc3RlZEVudW0udHdpZ3MsCi0gICAgICAgICAgICAgICAgcHJvdG9jb2w9KDAsIDMpKQotICAgICAgICB0ZXN0X3BpY2tsZV9kdW1wX2xvYWQoc2VsZi5hc3NlcnRJcywgc2VsZi5OZXN0ZWRFbnVtLnR3aWdzLAotICAgICAgICAgICAgICAgIHByb3RvY29sPSg0LCBISUdIRVNUX1BST1RPQ09MKSkKKyAgICAgICAgdGVzdF9waWNrbGVfZHVtcF9sb2FkKHNlbGYuYXNzZXJ0SXMsIHNlbGYuTmVzdGVkRW51bS50d2lncykKIAogICAgIGRlZiB0ZXN0X3BpY2tsZV9ieV9uYW1lKHNlbGYpOgogICAgICAgICBjbGFzcyBSZXBsYWNlR2xvYmFsSW50KEludEVudW0pOgpAQCAtNjU0LDYgKzY0NiwyMyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBTdW1tZXJNb250aCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgU3VtbWVyTW9udGgpCiAKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9zdHJpbmdfd2l0aF9zdGFydChzZWxmKToKKyAgICAgICAgU3VtbWVyTW9udGggPSBFbnVtKCdTdW1tZXJNb250aCcsICdqdW5lIGp1bHkgYXVndXN0Jywgc3RhcnQ9MTApCisgICAgICAgIGxzdCA9IGxpc3QoU3VtbWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihTdW1tZXJNb250aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFN1bW1lck1vbnRoKSwgMywgU3VtbWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW1N1bW1lck1vbnRoLmp1bmUsIFN1bW1lck1vbnRoLmp1bHksIFN1bW1lck1vbnRoLmF1Z3VzdF0sCisgICAgICAgICAgICAgICAgbHN0LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgZm9yIGksIG1vbnRoIGluIGVudW1lcmF0ZSgnanVuZSBqdWx5IGF1Z3VzdCcuc3BsaXQoKSwgMTApOgorICAgICAgICAgICAgZSA9IFN1bW1lck1vbnRoKGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChlLnZhbHVlKSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBtb250aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgU3VtbWVyTW9udGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFN1bW1lck1vbnRoKQorCiAgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nX2xpc3Qoc2VsZik6CiAgICAgICAgIFN1bW1lck1vbnRoID0gRW51bSgnU3VtbWVyTW9udGgnLCBbJ2p1bmUnLCAnanVseScsICdhdWd1c3QnXSkKICAgICAgICAgbHN0ID0gbGlzdChTdW1tZXJNb250aCkKQEAgLTY3MSw2ICs2ODAsMjMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgU3VtbWVyTW9udGgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFN1bW1lck1vbnRoKQogCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nX2xpc3Rfd2l0aF9zdGFydChzZWxmKToKKyAgICAgICAgU3VtbWVyTW9udGggPSBFbnVtKCdTdW1tZXJNb250aCcsIFsnanVuZScsICdqdWx5JywgJ2F1Z3VzdCddLCBzdGFydD0yMCkKKyAgICAgICAgbHN0ID0gbGlzdChTdW1tZXJNb250aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFN1bW1lck1vbnRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oU3VtbWVyTW9udGgpLCAzLCBTdW1tZXJNb250aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBbU3VtbWVyTW9udGguanVuZSwgU3VtbWVyTW9udGguanVseSwgU3VtbWVyTW9udGguYXVndXN0XSwKKyAgICAgICAgICAgICAgICBsc3QsCisgICAgICAgICAgICAgICAgKQorICAgICAgICBmb3IgaSwgbW9udGggaW4gZW51bWVyYXRlKCdqdW5lIGp1bHkgYXVndXN0Jy5zcGxpdCgpLCAyMCk6CisgICAgICAgICAgICBlID0gU3VtbWVyTW9udGgoaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGUudmFsdWUpLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChlLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG1vbnRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBTdW1tZXJNb250aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgU3VtbWVyTW9udGgpCisKICAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9pdGVyYWJsZShzZWxmKToKICAgICAgICAgU3VtbWVyTW9udGggPSBFbnVtKAogICAgICAgICAgICAgICAgICdTdW1tZXJNb250aCcsCkBAIC03MjcsNiArNzUzLDIyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFN1bW1lck1vbnRoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBTdW1tZXJNb250aCkKIAorICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3R5cGVfd2l0aF9zdGFydChzZWxmKToKKyAgICAgICAgU3VtbWVyTW9udGggPSBFbnVtKCdTdW1tZXJNb250aCcsICdqdW5lIGp1bHkgYXVndXN0JywgdHlwZT1pbnQsIHN0YXJ0PTMwKQorICAgICAgICBsc3QgPSBsaXN0KFN1bW1lck1vbnRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oU3VtbWVyTW9udGgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihTdW1tZXJNb250aCksIDMsIFN1bW1lck1vbnRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIFtTdW1tZXJNb250aC5qdW5lLCBTdW1tZXJNb250aC5qdWx5LCBTdW1tZXJNb250aC5hdWd1c3RdLAorICAgICAgICAgICAgICAgIGxzdCwKKyAgICAgICAgICAgICAgICApCisgICAgICAgIGZvciBpLCBtb250aCBpbiBlbnVtZXJhdGUoJ2p1bmUganVseSBhdWd1c3QnLnNwbGl0KCksIDMwKToKKyAgICAgICAgICAgIGUgPSBTdW1tZXJNb250aChpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG1vbnRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBTdW1tZXJNb250aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgU3VtbWVyTW9udGgpCisKICAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl90eXBlX2Zyb21fc3ViY2xhc3Moc2VsZik6CiAgICAgICAgIFN1bW1lck1vbnRoID0gSW50RW51bSgnU3VtbWVyTW9udGgnLCAnanVuZSBqdWx5IGF1Z3VzdCcpCiAgICAgICAgIGxzdCA9IGxpc3QoU3VtbWVyTW9udGgpCkBAIC03NDMsNiArNzg1LDIyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFN1bW1lck1vbnRoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBTdW1tZXJNb250aCkKIAorICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3R5cGVfZnJvbV9zdWJjbGFzc193aXRoX3N0YXJ0KHNlbGYpOgorICAgICAgICBTdW1tZXJNb250aCA9IEludEVudW0oJ1N1bW1lck1vbnRoJywgJ2p1bmUganVseSBhdWd1c3QnLCBzdGFydD00MCkKKyAgICAgICAgbHN0ID0gbGlzdChTdW1tZXJNb250aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFN1bW1lck1vbnRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oU3VtbWVyTW9udGgpLCAzLCBTdW1tZXJNb250aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBbU3VtbWVyTW9udGguanVuZSwgU3VtbWVyTW9udGguanVseSwgU3VtbWVyTW9udGguYXVndXN0XSwKKyAgICAgICAgICAgICAgICBsc3QsCisgICAgICAgICAgICAgICAgKQorICAgICAgICBmb3IgaSwgbW9udGggaW4gZW51bWVyYXRlKCdqdW5lIGp1bHkgYXVndXN0Jy5zcGxpdCgpLCA0MCk6CisgICAgICAgICAgICBlID0gU3VtbWVyTW9udGgoaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBtb250aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgU3VtbWVyTW9udGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFN1bW1lck1vbnRoKQorCiAgICAgZGVmIHRlc3Rfc3ViY2xhc3Npbmcoc2VsZik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UoTmFtZSwgRXhjZXB0aW9uKToKICAgICAgICAgICAgIHJhaXNlIE5hbWUKQEAgLTEwMzAsOSArMTA4OCw5IEBACiAgICAgICAgIGdsb2JhbHMoKVsnTkVJJ10gPSBORUkKICAgICAgICAgTkk1ID0gTmFtZWRJbnQoJ3Rlc3QnLCA1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5JNSwgNSkKLSAgICAgICAgdGVzdF9waWNrbGVfZHVtcF9sb2FkKHNlbGYuYXNzZXJ0RXF1YWwsIE5JNSwgNSwgcHJvdG9jb2w9KDQsIDQpKQorICAgICAgICB0ZXN0X3BpY2tsZV9kdW1wX2xvYWQoc2VsZi5hc3NlcnRFcXVhbCwgTkk1LCA1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5FSS55LnZhbHVlLCAyKQotICAgICAgICB0ZXN0X3BpY2tsZV9kdW1wX2xvYWQoc2VsZi5hc3NlcnRJcywgTkVJLnksIHByb3RvY29sPSg0LCA0KSkKKyAgICAgICAgdGVzdF9waWNrbGVfZHVtcF9sb2FkKHNlbGYuYXNzZXJ0SXMsIE5FSS55KQogICAgICAgICB0ZXN0X3BpY2tsZV9kdW1wX2xvYWQoc2VsZi5hc3NlcnRJcywgTkVJKQogCiAgICAgZGVmIHRlc3Rfc3ViY2xhc3Nlc193aXRoX3JlZHVjZShzZWxmKToKQEAgLTE0OTgsMTAgKzE1NTYsMTIgQEAKICAgICAgICAgICAgICAgICB0dXJrZXkgPSAzCiAKIAotZXhwZWN0ZWRfaGVscF9vdXRwdXQgPSAiIiIKK2V4cGVjdGVkX2hlbHBfb3V0cHV0X3dpdGhfZG9jcyA9ICIiIlwKIEhlbHAgb24gY2xhc3MgQ29sb3IgaW4gbW9kdWxlICVzOgogCiBjbGFzcyBDb2xvcihlbnVtLkVudW0pCisgfCAgQW4gZW51bWVyYXRpb24uCisgfFx4MjBceDIwCiAgfCAgTWV0aG9kIHJlc29sdXRpb24gb3JkZXI6CiAgfCAgICAgIENvbG9yCiAgfCAgICAgIGVudW0uRW51bQpAQCAtMTUzMSwxMSArMTU5MSw0MSBAQAogIHwgICAgICBSZXR1cm5zIGEgbWFwcGluZyBvZiBtZW1iZXIgbmFtZS0+dmFsdWUuCiAgfFx4MjBceDIwXHgyMFx4MjBceDIwXHgyMAogIHwgICAgICBUaGlzIG1hcHBpbmcgbGlzdHMgYWxsIGVudW0gbWVtYmVycywgaW5jbHVkaW5nIGFsaWFzZXMuIE5vdGUgdGhhdCB0aGlzCi0gfCAgICAgIGlzIGEgcmVhZC1vbmx5IHZpZXcgb2YgdGhlIGludGVybmFsIG1hcHBpbmcuCi0iIiIuc3RyaXAoKQorIHwgICAgICBpcyBhIHJlYWQtb25seSB2aWV3IG9mIHRoZSBpbnRlcm5hbCBtYXBwaW5nLiIiIgorCitleHBlY3RlZF9oZWxwX291dHB1dF93aXRob3V0X2RvY3MgPSAiIiJcCitIZWxwIG9uIGNsYXNzIENvbG9yIGluIG1vZHVsZSAlczoKKworY2xhc3MgQ29sb3IoZW51bS5FbnVtKQorIHwgIE1ldGhvZCByZXNvbHV0aW9uIG9yZGVyOgorIHwgICAgICBDb2xvcgorIHwgICAgICBlbnVtLkVudW0KKyB8ICAgICAgYnVpbHRpbnMub2JqZWN0CisgfFx4MjBceDIwCisgfCAgRGF0YSBhbmQgb3RoZXIgYXR0cmlidXRlcyBkZWZpbmVkIGhlcmU6CisgfFx4MjBceDIwCisgfCAgYmx1ZSA9IDxDb2xvci5ibHVlOiAzPgorIHxceDIwXHgyMAorIHwgIGdyZWVuID0gPENvbG9yLmdyZWVuOiAyPgorIHxceDIwXHgyMAorIHwgIHJlZCA9IDxDb2xvci5yZWQ6IDE+CisgfFx4MjBceDIwCisgfCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHwgIERhdGEgZGVzY3JpcHRvcnMgaW5oZXJpdGVkIGZyb20gZW51bS5FbnVtOgorIHxceDIwXHgyMAorIHwgIG5hbWUKKyB8XHgyMFx4MjAKKyB8ICB2YWx1ZQorIHxceDIwXHgyMAorIHwgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB8ICBEYXRhIGRlc2NyaXB0b3JzIGluaGVyaXRlZCBmcm9tIGVudW0uRW51bU1ldGE6CisgfFx4MjBceDIwCisgfCAgX19tZW1iZXJzX18iIiIKIAogY2xhc3MgVGVzdFN0ZExpYih1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICBtYXhEaWZmID0gTm9uZQorCiAgICAgY2xhc3MgQ29sb3IoRW51bSk6CiAgICAgICAgIHJlZCA9IDEKICAgICAgICAgZ3JlZW4gPSAyCkBAIC0xNTQzLDcgKzE2MzMsMTAgQEAKIAogICAgIGRlZiB0ZXN0X3B5ZG9jKHNlbGYpOgogICAgICAgICAjIGluZGlyZWN0bHkgdGVzdCBfX29iamNsYXNzX18KLSAgICAgICAgZXhwZWN0ZWRfdGV4dCA9IGV4cGVjdGVkX2hlbHBfb3V0cHV0ICUgX19uYW1lX18KKyAgICAgICAgaWYgU3RyRW51bS5fX2RvY19fIGlzIE5vbmU6CisgICAgICAgICAgICBleHBlY3RlZF90ZXh0ID0gZXhwZWN0ZWRfaGVscF9vdXRwdXRfd2l0aG91dF9kb2NzICUgX19uYW1lX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4cGVjdGVkX3RleHQgPSBleHBlY3RlZF9oZWxwX291dHB1dF93aXRoX2RvY3MgJSBfX25hbWVfXwogICAgICAgICBvdXRwdXQgPSBTdHJpbmdJTygpCiAgICAgICAgIGhlbHBlciA9IHB5ZG9jLkhlbHBlcihvdXRwdXQ9b3V0cHV0KQogICAgICAgICBoZWxwZXIoc2VsZi5Db2xvcikKQEAgLTE1NTMsNyArMTY0Niw3IEBACiAgICAgZGVmIHRlc3RfaW5zcGVjdF9nZXRtZW1iZXJzKHNlbGYpOgogICAgICAgICB2YWx1ZXMgPSBkaWN0KCgKICAgICAgICAgICAgICAgICAoJ19fY2xhc3NfXycsIEVudW1NZXRhKSwKLSAgICAgICAgICAgICAgICAoJ19fZG9jX18nLCBOb25lKSwKKyAgICAgICAgICAgICAgICAoJ19fZG9jX18nLCAnQW4gZW51bWVyYXRpb24uJyksCiAgICAgICAgICAgICAgICAgKCdfX21lbWJlcnNfXycsIHNlbGYuQ29sb3IuX19tZW1iZXJzX18pLAogICAgICAgICAgICAgICAgICgnX19tb2R1bGVfXycsIF9fbmFtZV9fKSwKICAgICAgICAgICAgICAgICAoJ2JsdWUnLCBzZWxmLkNvbG9yLmJsdWUpLApAQCAtMTU4MSw3ICsxNjc0LDcgQEAKICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUobmFtZT0nX19jbGFzc19fJywga2luZD0nZGF0YScsCiAgICAgICAgICAgICAgICAgICAgIGRlZmluaW5nX2NsYXNzPW9iamVjdCwgb2JqZWN0PUVudW1NZXRhKSwKICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUobmFtZT0nX19kb2NfXycsIGtpbmQ9J2RhdGEnLAotICAgICAgICAgICAgICAgICAgICBkZWZpbmluZ19jbGFzcz1zZWxmLkNvbG9yLCBvYmplY3Q9Tm9uZSksCisgICAgICAgICAgICAgICAgICAgIGRlZmluaW5nX2NsYXNzPXNlbGYuQ29sb3IsIG9iamVjdD0nQW4gZW51bWVyYXRpb24uJyksCiAgICAgICAgICAgICAgICAgQXR0cmlidXRlKG5hbWU9J19fbWVtYmVyc19fJywga2luZD0ncHJvcGVydHknLAogICAgICAgICAgICAgICAgICAgICBkZWZpbmluZ19jbGFzcz1FbnVtTWV0YSwgb2JqZWN0PUVudW1NZXRhLl9fbWVtYmVyc19fKSwKICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUobmFtZT0nX19tb2R1bGVfXycsIGtpbmQ9J2RhdGEnLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkgYi9MaWIvdGVzdC90ZXN0X2VudW1lcmF0ZS5weQppbmRleCBlODUyNTRjLi4yNjMwY2YyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VudW1lcmF0ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VudW1lcmF0ZS5weQpAQCAtMjU4LDE2ICsyNTgsNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAoc3lzLm1heHNpemUrMywnYycpXQogCiAKLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQotICAgICMgdmVyaWZ5IHJlZmVyZW5jZSBjb3VudGluZwotICAgIGlmIHZlcmJvc2UgYW5kIGhhc2F0dHIoc3lzLCAiZ2V0dG90YWxyZWZjb3VudCIpOgotICAgICAgICBjb3VudHMgPSBbTm9uZV0gKiA1Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihjb3VudHMpKToKLSAgICAgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotICAgICAgICAgICAgY291bnRzW2ldID0gc3lzLmdldHRvdGFscmVmY291bnQoKQotICAgICAgICBwcmludChjb3VudHMpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKHZlcmJvc2U9VHJ1ZSkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW9mLnB5IGIvTGliL3Rlc3QvdGVzdF9lb2YucHkKaW5kZXggNTJlNzkzMi4uN2JhYTdhZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lb2YucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lb2YucHkKQEAgLTI0LDggKzI0LDUgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRU9GVGVzdENhc2UpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkgYi9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5CmluZGV4IGIzN2YwMzMuLmE3MzU5ZTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lcG9sbC5weQpAQCAtNDQsNyArNDQsNyBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5zZXJ2ZXJTb2NrZXQgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgc2VsZi5zZXJ2ZXJTb2NrZXQuYmluZCgoJzEyNy4wLjAuMScsIDApKQotICAgICAgICBzZWxmLnNlcnZlclNvY2tldC5saXN0ZW4oMSkKKyAgICAgICAgc2VsZi5zZXJ2ZXJTb2NrZXQubGlzdGVuKCkKICAgICAgICAgc2VsZi5jb25uZWN0aW9ucyA9IFtzZWxmLnNlcnZlclNvY2tldF0KIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKQEAgLTI1Miw4ICsyNTIsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmdldF9pbmhlcml0YWJsZShlcG9sbC5maWxlbm8oKSksIEZhbHNlKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0RVBvbGwpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZXJybm8ucHkgYi9MaWIvdGVzdC90ZXN0X2Vycm5vLnB5CmluZGV4IDA1OGRjYjkuLjVjNDM3ZTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZXJybm8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lcnJuby5weQpAQCAtMyw3ICszLDYgQEAKICIiIgogCiBpbXBvcnQgZXJybm8KLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKIHN0ZF9jX2Vycm9ycyA9IGZyb3plbnNldChbJ0VET00nLCAnRVJBTkdFJ10pCkBAIC0zMiw5ICszMSw1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm8gJXMgYXR0ciBpbiBlcnJuby5lcnJvcmNvZGUnICUgYXR0cmlidXRlKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChFcnJub0F0dHJpYnV0ZVRlc3RzLCBFcnJvcmNvZGVUZXN0cykKLQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbl92YXJpYXRpb25zLnB5IGIvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25fdmFyaWF0aW9ucy5weQppbmRleCAxMWY1ZTVjLi5kODc0YjBlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbl92YXJpYXRpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9uX3ZhcmlhdGlvbnMucHkKQEAgLTEsNSArMSw0IEBACiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIGltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBFeGNlcHRpb25UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xNzMsOCArMTcyLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhpdF9maW5hbGx5KQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGl0X2V4Y2VwdCkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChFeGNlcHRpb25UZXN0Q2FzZSkKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5IGIvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5CmluZGV4IGQ5NTQzMDIuLjhhNDkwNDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkKQEAgLTg0LDYgKzg0LDcgQEAKICAgICAgICAgICAgIHggKz0geCAgIyB0aGlzIHNpbXBseSBzaG91bGRuJ3QgYmxvdyB1cAogCiAgICAgICAgIHNlbGYucmFpc2VfY2F0Y2goUnVudGltZUVycm9yLCAiUnVudGltZUVycm9yIikKKyAgICAgICAgc2VsZi5yYWlzZV9jYXRjaChSZWN1cnNpb25FcnJvciwgIlJlY3Vyc2lvbkVycm9yIikKIAogICAgICAgICBzZWxmLnJhaXNlX2NhdGNoKFN5bnRheEVycm9yLCAiU3ludGF4RXJyb3IiKQogICAgICAgICB0cnk6IGV4ZWMoJy9cbicpCkBAIC0xMTcsNiArMTE4LDggQEAKICAgICAgICAgdHJ5OiB4ID0gMS8wCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZTogcGFzcwogCisgICAgICAgIHNlbGYucmFpc2VfY2F0Y2goU3RvcEFzeW5jSXRlcmF0aW9uLCAiU3RvcEFzeW5jSXRlcmF0aW9uIikKKwogICAgIGRlZiB0ZXN0U3ludGF4RXJyb3JNZXNzYWdlKHNlbGYpOgogICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgcmlnaHQgZXhjZXB0aW9uIG1lc3NhZ2UgaXMgcmFpc2VkIGZvciBlYWNoIG9mCiAgICAgICAgICMgdGhlc2UgY29kZSBmcmFnbWVudHMKQEAgLTQ4MSwxNCArNDg0LDE0IEBACiAgICAgZGVmIHRlc3RJbmZpbml0ZVJlY3Vyc2lvbihzZWxmKToKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgIHJldHVybiBmKCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBmKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgZikKIAogICAgICAgICBkZWYgZygpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHJldHVybiBnKCkKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgIHJldHVybiAtMQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBnKQogCiAgICAgZGVmIHRlc3Rfc3RyKHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSBib3RoIGluc3RhbmNlcyBhbmQgY2xhc3NlcyBoYXZlIGEgc3RyIHJlcHJlc2VudGF0aW9uLgpAQCAtODk0LDEwICs4OTcsMTAgQEAKICAgICAgICAgZGVmIGcoKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXR1cm4gZygpCi0gICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgZXhjZXB0IFJlY3Vyc2lvbkVycm9yOgogICAgICAgICAgICAgICAgIHJldHVybiBzeXMuZXhjX2luZm8oKQogICAgICAgICBlLCB2LCB0YiA9IGcoKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZSh2LCBSdW50aW1lRXJyb3IpLCB0eXBlKHYpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZSh2LCBSZWN1cnNpb25FcnJvciksIHR5cGUodikpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2VlZGVkIiwgc3RyKHYpKQogCiAKQEAgLTk5NiwxMCArOTk5LDEwIEBACiAgICAgICAgICMgV2UgY2Fubm90IHVzZSBhc3NlcnRSYWlzZXMgc2luY2UgaXQgbWFudWFsbHkgZGVsZXRlcyB0aGUgdHJhY2ViYWNrCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlubmVyKCkKLSAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgUmVjdXJzaW9uRXJyb3IgYXMgZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwod3IoKSwgTm9uZSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiUnVudGltZUVycm9yIG5vdCByYWlzZWQiKQorICAgICAgICAgICAgc2VsZi5mYWlsKCJSZWN1cnNpb25FcnJvciBub3QgcmFpc2VkIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cigpLCBOb25lKQogCiAgICAgZGVmIHRlc3RfZXJybm9fRU5PVERJUihzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weSBiL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weQppbmRleCA2YjZjMTJkLi42NTQyNThlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5CkBAIC0zNCwxNyArMzQsMzcgQEAKICAgICAoMSwgMiwgMywgNCwgNSkge30KICAgICA+Pj4gZigxLCAyLCAzLCAqWzQsIDVdKQogICAgICgxLCAyLCAzLCA0LCA1KSB7fQorICAgID4+PiBmKCpbMSwgMiwgM10sIDQsIDUpCisgICAgKDEsIDIsIDMsIDQsIDUpIHt9CiAgICAgPj4+IGYoMSwgMiwgMywgKlVzZXJMaXN0KFs0LCA1XSkpCiAgICAgKDEsIDIsIDMsIDQsIDUpIHt9CisgICAgPj4+IGYoMSwgMiwgMywgKls0LCA1XSwgKls2LCA3XSkKKyAgICAoMSwgMiwgMywgNCwgNSwgNiwgNykge30KKyAgICA+Pj4gZigxLCAqWzIsIDNdLCA0LCAqWzUsIDZdLCA3KQorICAgICgxLCAyLCAzLCA0LCA1LCA2LCA3KSB7fQorICAgID4+PiBmKCpVc2VyTGlzdChbMSwgMl0pLCAqVXNlckxpc3QoWzMsIDRdKSwgNSwgKlVzZXJMaXN0KFs2LCA3XSkpCisgICAgKDEsIDIsIDMsIDQsIDUsIDYsIDcpIHt9CiAKIEhlcmUgd2UgYWRkIGtleXdvcmQgYXJndW1lbnRzCiAKICAgICA+Pj4gZigxLCAyLCAzLCAqKnsnYSc6NCwgJ2InOjV9KQogICAgICgxLCAyLCAzKSB7J2EnOiA0LCAnYic6IDV9CisgICAgPj4+IGYoMSwgMiwgKip7J2EnOiAtMSwgJ2InOiA1fSwgKip7J2EnOiA0LCAnYyc6IDZ9KQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCBhcmd1bWVudCAnYScKKyAgICA+Pj4gZigxLCAyLCAqKnsnYSc6IC0xLCAnYic6IDV9LCBhPTQsIGM9NikKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgJ2EnCiAgICAgPj4+IGYoMSwgMiwgMywgKls0LCA1XSwgKip7J2EnOjYsICdiJzo3fSkKICAgICAoMSwgMiwgMywgNCwgNSkgeydhJzogNiwgJ2InOiA3fQogICAgID4+PiBmKDEsIDIsIDMsIHg9NCwgeT01LCAqKDYsIDcpLCAqKnsnYSc6OCwgJ2InOiA5fSkKICAgICAoMSwgMiwgMywgNiwgNykgeydhJzogOCwgJ2InOiA5LCAneCc6IDQsICd5JzogNX0KKyAgICA+Pj4gZigxLCAyLCAzLCAqWzQsIDVdLCAqKnsnYyc6IDh9LCAqKnsnYSc6NiwgJ2InOjd9KQorICAgICgxLCAyLCAzLCA0LCA1KSB7J2EnOiA2LCAnYic6IDcsICdjJzogOH0KKyAgICA+Pj4gZigxLCAyLCAzLCAqKDQsIDUpLCB4PTYsIHk9NywgKip7J2EnOjgsICdiJzogOX0pCisgICAgKDEsIDIsIDMsIDQsIDUpIHsnYSc6IDgsICdiJzogOSwgJ3gnOiA2LCAneSc6IDd9CiAKICAgICA+Pj4gZigxLCAyLCAzLCAqKlVzZXJEaWN0KGE9NCwgYj01KSkKICAgICAoMSwgMiwgMykgeydhJzogNCwgJ2InOiA1fQpAQCAtNTIsNiArNzIsOCBAQAogICAgICgxLCAyLCAzLCA0LCA1KSB7J2EnOiA2LCAnYic6IDd9CiAgICAgPj4+IGYoMSwgMiwgMywgeD00LCB5PTUsICooNiwgNyksICoqVXNlckRpY3QoYT04LCBiPTkpKQogICAgICgxLCAyLCAzLCA2LCA3KSB7J2EnOiA4LCAnYic6IDksICd4JzogNCwgJ3knOiA1fQorICAgID4+PiBmKDEsIDIsIDMsICooNCwgNSksIHg9NiwgeT03LCAqKlVzZXJEaWN0KGE9OCwgYj05KSkKKyAgICAoMSwgMiwgMywgNCwgNSkgeydhJzogOCwgJ2InOiA5LCAneCc6IDYsICd5JzogN30KIAogRXhhbXBsZXMgd2l0aCBpbnZhbGlkIGFyZ3VtZW50cyAoVHlwZUVycm9ycykuIFdlJ3JlIGFsc28gdGVzdGluZyB0aGUgZnVuY3Rpb24KIG5hbWVzIGluIHRoZSBleGNlcHRpb24gbWVzc2FnZXMuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weSBiL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5CmluZGV4IGU2OGEwOWUuLjBkODZjYjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5CkBAIC02LDggKzYsOCBAQAogaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgc2NyaXB0X2hlbHBlcgotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKQEAgLTE3LDYgKzE3LDEwIEBACiAgICAgSEFWRV9USFJFQURTID0gVHJ1ZQogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIEhBVkVfVEhSRUFEUyA9IEZhbHNlCit0cnk6CisgICAgaW1wb3J0IF90ZXN0Y2FwaQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF90ZXN0Y2FwaSA9IE5vbmUKIAogVElNRU9VVCA9IDAuNQogCkBAIC0zOCw3ICs0Miw3IEBACiAgICAgICAgIHN1cHBvcnQudW5saW5rKGZpbGVuYW1lKQogCiBjbGFzcyBGYXVsdEhhbmRsZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIGdldF9vdXRwdXQoc2VsZiwgY29kZSwgZmlsZW5hbWU9Tm9uZSk6CisgICAgZGVmIGdldF9vdXRwdXQoc2VsZiwgY29kZSwgZmlsZW5hbWU9Tm9uZSwgZmQ9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBSdW4gdGhlIHNwZWNpZmllZCBjb2RlIGluIFB5dGhvbiAoaW4gYSBuZXcgY2hpbGQgcHJvY2VzcykgYW5kIHJlYWQgdGhlCiAgICAgICAgIG91dHB1dCBmcm9tIHRoZSBzdGFuZGFyZCBlcnJvciBvciBmcm9tIGEgZmlsZSAoaWYgZmlsZW5hbWUgaXMgc2V0KS4KQEAgLTQ5LDggKzUzLDExIEBACiAgICAgICAgIHRocmVhZCBYWFgiLgogICAgICAgICAiIiIKICAgICAgICAgY29kZSA9IGRlZGVudChjb2RlKS5zdHJpcCgpCisgICAgICAgIHBhc3NfZmRzID0gW10KKyAgICAgICAgaWYgZmQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwYXNzX2Zkcy5hcHBlbmQoZmQpCiAgICAgICAgIHdpdGggc3VwcG9ydC5TdXBwcmVzc0NyYXNoUmVwb3J0KCk6Ci0gICAgICAgICAgICBwcm9jZXNzID0gc2NyaXB0X2hlbHBlci5zcGF3bl9weXRob24oJy1jJywgY29kZSkKKyAgICAgICAgICAgIHByb2Nlc3MgPSBzY3JpcHRfaGVscGVyLnNwYXduX3B5dGhvbignLWMnLCBjb2RlLCBwYXNzX2Zkcz1wYXNzX2ZkcykKICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKICAgICAgICAgZXhpdGNvZGUgPSBwcm9jZXNzLndhaXQoKQogICAgICAgICBvdXRwdXQgPSBzdXBwb3J0LnN0cmlwX3B5dGhvbl9zdGRlcnIoc3Rkb3V0KQpAQCAtNjAsMTMgKzY3LDIwIEBACiAgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGZwOgogICAgICAgICAgICAgICAgIG91dHB1dCA9IGZwLnJlYWQoKQogICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmRlY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpCisgICAgICAgIGVsaWYgZmQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgJycpCisgICAgICAgICAgICBvcy5sc2VlayhmZCwgb3MuU0VFS19TRVQsIDApCisgICAgICAgICAgICB3aXRoIG9wZW4oZmQsICJyYiIsIGNsb3NlZmQ9RmFsc2UpIGFzIGZwOgorICAgICAgICAgICAgICAgIG91dHB1dCA9IGZwLnJlYWQoKQorICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmRlY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpCiAgICAgICAgIG91dHB1dCA9IHJlLnN1YignQ3VycmVudCB0aHJlYWQgMHhbMC05YS1mXSsnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ0N1cnJlbnQgdGhyZWFkIFhYWCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQpCiAgICAgICAgIHJldHVybiBvdXRwdXQuc3BsaXRsaW5lcygpLCBleGl0Y29kZQogCiAgICAgZGVmIGNoZWNrX2ZhdGFsX2Vycm9yKHNlbGYsIGNvZGUsIGxpbmVfbnVtYmVyLCBuYW1lX3JlZ2V4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT1Ob25lLCBhbGxfdGhyZWFkcz1UcnVlLCBvdGhlcl9yZWdleD1Ob25lKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9Tm9uZSwgYWxsX3RocmVhZHM9VHJ1ZSwgb3RoZXJfcmVnZXg9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmQ9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBDaGVjayB0aGF0IHRoZSBmYXVsdCBoYW5kbGVyIGZvciBmYXRhbCBlcnJvcnMgaXMgZW5hYmxlZCBhbmQgY2hlY2sgdGhlCiAgICAgICAgIHRyYWNlYmFjayBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzIG91dHB1dC4KQEAgLTg5LDcgKzEwMyw3IEBACiAgICAgICAgICAgICBoZWFkZXI9cmUuZXNjYXBlKGhlYWRlcikpKS5zdHJpcCgpCiAgICAgICAgIGlmIG90aGVyX3JlZ2V4OgogICAgICAgICAgICAgcmVnZXggKz0gJ3wnICsgb3RoZXJfcmVnZXgKLSAgICAgICAgb3V0cHV0LCBleGl0Y29kZSA9IHNlbGYuZ2V0X291dHB1dChjb2RlLCBmaWxlbmFtZSkKKyAgICAgICAgb3V0cHV0LCBleGl0Y29kZSA9IHNlbGYuZ2V0X291dHB1dChjb2RlLCBmaWxlbmFtZT1maWxlbmFtZSwgZmQ9ZmQpCiAgICAgICAgIG91dHB1dCA9ICdcbicuam9pbihvdXRwdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0cHV0LCByZWdleCkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChleGl0Y29kZSwgMCkKQEAgLTEzNSwyNiArMTQ5LDMyIEBACiAgICAgICAgICAgICAzLAogICAgICAgICAgICAgJ0Zsb2F0aW5nIHBvaW50IGV4Y2VwdGlvbicpCiAKLSAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ19zaWdidXMnKSwKLSAgICAgICAgICAgICAgICAgICAgICJuZWVkIGZhdWx0aGFuZGxlci5fc2lnYnVzKCkiKQorICAgIEB1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIF90ZXN0Y2FwaScpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdTSUdCVVMnKSwgJ25lZWQgc2lnbmFsLlNJR0JVUycpCiAgICAgZGVmIHRlc3Rfc2lnYnVzKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgorICAgICAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQogICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorICAgICAgICAgICAgaW1wb3J0IHNpZ25hbAorCiAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKLSAgICAgICAgICAgIGZhdWx0aGFuZGxlci5fc2lnYnVzKCkKKyAgICAgICAgICAgIF90ZXN0Y2FwaS5yYWlzZV9zaWduYWwoc2lnbmFsLlNJR0JVUykKICAgICAgICAgICAgICIiIiwKLSAgICAgICAgICAgIDMsCisgICAgICAgICAgICA2LAogICAgICAgICAgICAgJ0J1cyBlcnJvcicpCiAKLSAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ19zaWdpbGwnKSwKLSAgICAgICAgICAgICAgICAgICAgICJuZWVkIGZhdWx0aGFuZGxlci5fc2lnaWxsKCkiKQorICAgIEB1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIF90ZXN0Y2FwaScpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdTSUdJTEwnKSwgJ25lZWQgc2lnbmFsLlNJR0lMTCcpCiAgICAgZGVmIHRlc3Rfc2lnaWxsKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgorICAgICAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQogICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorICAgICAgICAgICAgaW1wb3J0IHNpZ25hbAorCiAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKLSAgICAgICAgICAgIGZhdWx0aGFuZGxlci5fc2lnaWxsKCkKKyAgICAgICAgICAgIF90ZXN0Y2FwaS5yYWlzZV9zaWduYWwoc2lnbmFsLlNJR0lMTCkKICAgICAgICAgICAgICIiIiwKLSAgICAgICAgICAgIDMsCisgICAgICAgICAgICA2LAogICAgICAgICAgICAgJ0lsbGVnYWwgaW5zdHJ1Y3Rpb24nKQogCiAgICAgZGVmIHRlc3RfZmF0YWxfZXJyb3Ioc2VsZik6CkBAIC0yMDEsNiArMjIxLDIxIEBACiAgICAgICAgICAgICAgICAgJ1NlZ21lbnRhdGlvbiBmYXVsdCcsCiAgICAgICAgICAgICAgICAgZmlsZW5hbWU9ZmlsZW5hbWUpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAorICAgICAgICAgICAgICAgICAgICAgInN1YnByb2Nlc3MgZG9lc24ndCBzdXBwb3J0IHBhc3NfZmRzIG9uIFdpbmRvd3MiKQorICAgIGRlZiB0ZXN0X2VuYWJsZV9mZChzZWxmKToKKyAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCd3YisnKSBhcyBmcDoKKyAgICAgICAgICAgIGZkID0gZnAuZmlsZW5vKCkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCisgICAgICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorICAgICAgICAgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCVzKQorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5fc2lnc2VndigpCisgICAgICAgICAgICAgICAgIiIiICUgZmQsCisgICAgICAgICAgICAgICAgNCwKKyAgICAgICAgICAgICAgICAnU2VnbWVudGF0aW9uIGZhdWx0JywKKyAgICAgICAgICAgICAgICBmZD1mZCkKKwogICAgIGRlZiB0ZXN0X2VuYWJsZV9zaW5nbGVfdGhyZWFkKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgogICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgpAQCAtMjg3LDcgKzMyMiw3IEBACiAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGFyZ3MsIGVudj1lbnYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LnJzdHJpcCgpLCBiIlRydWUiKQogCi0gICAgZGVmIGNoZWNrX2R1bXBfdHJhY2ViYWNrKHNlbGYsIGZpbGVuYW1lKToKKyAgICBkZWYgY2hlY2tfZHVtcF90cmFjZWJhY2soc2VsZiwgKiwgZmlsZW5hbWU9Tm9uZSwgZmQ9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBFeHBsaWNpdGx5IGNhbGwgZHVtcF90cmFjZWJhY2soKSBmdW5jdGlvbiBhbmQgY2hlY2sgaXRzIG91dHB1dC4KICAgICAgICAgUmFpc2UgYW4gZXJyb3IgaWYgdGhlIG91dHB1dCBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuCkBAIC0yOTUsMTAgKzMzMCwxNiBAQAogICAgICAgICBjb2RlID0gIiIiCiAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCiAKKyAgICAgICAgICAgIGZpbGVuYW1lID0ge2ZpbGVuYW1lIXJ9CisgICAgICAgICAgICBmZCA9IHtmZH0KKwogICAgICAgICAgICAgZGVmIGZ1bmNCKCk6Ci0gICAgICAgICAgICAgICAgaWYge2hhc19maWxlbmFtZX06Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggb3Blbih7ZmlsZW5hbWV9LCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAid2IiKSBhcyBmcDoKICAgICAgICAgICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFjayhmcCwgYWxsX3RocmVhZHM9RmFsc2UpCisgICAgICAgICAgICAgICAgZWxpZiBmZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrKGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsX3RocmVhZHM9RmFsc2UpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrKGFsbF90aHJlYWRzPUZhbHNlKQogCkBAIC0zMDgsMjkgKzM0OSwzNyBAQAogICAgICAgICAgICAgZnVuY0EoKQogICAgICAgICAgICAgIiIiCiAgICAgICAgIGNvZGUgPSBjb2RlLmZvcm1hdCgKLSAgICAgICAgICAgIGZpbGVuYW1lPXJlcHIoZmlsZW5hbWUpLAotICAgICAgICAgICAgaGFzX2ZpbGVuYW1lPWJvb2woZmlsZW5hbWUpLAorICAgICAgICAgICAgZmlsZW5hbWU9ZmlsZW5hbWUsCisgICAgICAgICAgICBmZD1mZCwKICAgICAgICAgKQogICAgICAgICBpZiBmaWxlbmFtZToKLSAgICAgICAgICAgIGxpbmVubyA9IDYKKyAgICAgICAgICAgIGxpbmVubyA9IDkKKyAgICAgICAgZWxpZiBmZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGxpbmVubyA9IDEyCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsaW5lbm8gPSA4CisgICAgICAgICAgICBsaW5lbm8gPSAxNAogICAgICAgICBleHBlY3RlZCA9IFsKICAgICAgICAgICAgICdTdGFjayAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6JywKICAgICAgICAgICAgICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAlcyBpbiBmdW5jQicgJSBsaW5lbm8sCi0gICAgICAgICAgICAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgMTEgaW4gZnVuY0EnLAotICAgICAgICAgICAgJyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDEzIGluIDxtb2R1bGU+JworICAgICAgICAgICAgJyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDE3IGluIGZ1bmNBJywKKyAgICAgICAgICAgICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAxOSBpbiA8bW9kdWxlPicKICAgICAgICAgXQotICAgICAgICB0cmFjZSwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWUpCisgICAgICAgIHRyYWNlLCBleGl0Y29kZSA9IHNlbGYuZ2V0X291dHB1dChjb2RlLCBmaWxlbmFtZSwgZmQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIGV4cGVjdGVkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCAwKQogCiAgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2soc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2soTm9uZSkKKyAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFjaygpCiAKICAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19maWxlKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgotICAgICAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFjayhmaWxlbmFtZSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2soZmlsZW5hbWU9ZmlsZW5hbWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAorICAgICAgICAgICAgICAgICAgICAgInN1YnByb2Nlc3MgZG9lc24ndCBzdXBwb3J0IHBhc3NfZmRzIG9uIFdpbmRvd3MiKQorICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX2ZkKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoJ3diKycpIGFzIGZwOgorICAgICAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFjayhmZD1mcC5maWxlbm8oKSkKIAogICAgIGRlZiB0ZXN0X3RydW5jYXRlKHNlbGYpOgogICAgICAgICBtYXhsZW4gPSA1MDAKQEAgLTQyMyw3ICs0NzIsMTAgQEAKICAgICAgICAgd2l0aCB0ZW1wb3JhcnlfZmlsZW5hbWUoKSBhcyBmaWxlbmFtZToKICAgICAgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfdGhyZWFkcyhmaWxlbmFtZSkKIAotICAgIGRlZiBfY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoc2VsZiwgcmVwZWF0LCBjYW5jZWwsIGZpbGVuYW1lLCBsb29wcyk6CisgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdkdW1wX3RyYWNlYmFja19sYXRlcicpLAorICAgICAgICAgICAgICAgICAgICAgJ25lZWQgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKCknKQorICAgIGRlZiBjaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihzZWxmLCByZXBlYXQ9RmFsc2UsIGNhbmNlbD1GYWxzZSwgbG9vcHM9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiwgZmlsZW5hbWU9Tm9uZSwgZmQ9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBDaGVjayBob3cgbWFueSB0aW1lcyB0aGUgdHJhY2ViYWNrIGlzIHdyaXR0ZW4gaW4gdGltZW91dCB4IDIuNSBzZWNvbmRzLAogICAgICAgICBvciB0aW1lb3V0IHggMy41IHNlY29uZHMgaWYgY2FuY2VsIGlzIFRydWU6IDEsIDIgb3IgMyB0aW1lcyBkZXBlbmRpbmcKQEAgLTQzNSw2ICs0ODcsMTQgQEAKICAgICAgICAgY29kZSA9ICIiIgogICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgogICAgICAgICAgICAgaW1wb3J0IHRpbWUKKyAgICAgICAgICAgIGltcG9ydCBzeXMKKworICAgICAgICAgICAgdGltZW91dCA9IHt0aW1lb3V0fQorICAgICAgICAgICAgcmVwZWF0ID0ge3JlcGVhdH0KKyAgICAgICAgICAgIGNhbmNlbCA9IHtjYW5jZWx9CisgICAgICAgICAgICBsb29wcyA9IHtsb29wc30KKyAgICAgICAgICAgIGZpbGVuYW1lID0ge2ZpbGVuYW1lIXJ9CisgICAgICAgICAgICBmZCA9IHtmZH0KIAogICAgICAgICAgICAgZGVmIGZ1bmModGltZW91dCwgcmVwZWF0LCBjYW5jZWwsIGZpbGUsIGxvb3BzKToKICAgICAgICAgICAgICAgICBmb3IgbG9vcCBpbiByYW5nZShsb29wcyk6CkBAIC00NDQsMTYgKzUwNCwxNCBAQAogICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKHRpbWVvdXQgKiA1KQogICAgICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKIAotICAgICAgICAgICAgdGltZW91dCA9IHt0aW1lb3V0fQotICAgICAgICAgICAgcmVwZWF0ID0ge3JlcGVhdH0KLSAgICAgICAgICAgIGNhbmNlbCA9IHtjYW5jZWx9Ci0gICAgICAgICAgICBsb29wcyA9IHtsb29wc30KLSAgICAgICAgICAgIGlmIHtoYXNfZmlsZW5hbWV9OgotICAgICAgICAgICAgICAgIGZpbGUgPSBvcGVuKHtmaWxlbmFtZX0sICJ3YiIpCisgICAgICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgICAgICBmaWxlID0gb3BlbihmaWxlbmFtZSwgIndiIikKKyAgICAgICAgICAgIGVsaWYgZmQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZmlsZSA9IHN5cy5zdGRlcnIuZmlsZW5vKCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZmlsZSA9IE5vbmUKICAgICAgICAgICAgIGZ1bmModGltZW91dCwgcmVwZWF0LCBjYW5jZWwsIGZpbGUsIGxvb3BzKQotICAgICAgICAgICAgaWYgZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lOgogICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQogICAgICAgICAgICAgIiIiCiAgICAgICAgIGNvZGUgPSBjb2RlLmZvcm1hdCgKQEAgLTQ2MSw4ICs1MTksOCBAQAogICAgICAgICAgICAgcmVwZWF0PXJlcGVhdCwKICAgICAgICAgICAgIGNhbmNlbD1jYW5jZWwsCiAgICAgICAgICAgICBsb29wcz1sb29wcywKLSAgICAgICAgICAgIGhhc19maWxlbmFtZT1ib29sKGZpbGVuYW1lKSwKLSAgICAgICAgICAgIGZpbGVuYW1lPXJlcHIoZmlsZW5hbWUpLAorICAgICAgICAgICAgZmlsZW5hbWU9ZmlsZW5hbWUsCisgICAgICAgICAgICBmZD1mZCwKICAgICAgICAgKQogICAgICAgICB0cmFjZSwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWUpCiAgICAgICAgIHRyYWNlID0gJ1xuJy5qb2luKHRyYWNlKQpAQCAtNDcyLDI3ICs1MzAsMTIgQEAKICAgICAgICAgICAgIGlmIHJlcGVhdDoKICAgICAgICAgICAgICAgICBjb3VudCAqPSAyCiAgICAgICAgICAgICBoZWFkZXIgPSByJ1RpbWVvdXQgXCglc1wpIVxuVGhyZWFkIDB4WzAtOWEtZl0rIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOlxuJyAlIHRpbWVvdXRfc3RyCi0gICAgICAgICAgICByZWdleCA9IGV4cGVjdGVkX3RyYWNlYmFjayg5LCAyMCwgaGVhZGVyLCBtaW5fY291bnQ9Y291bnQpCisgICAgICAgICAgICByZWdleCA9IGV4cGVjdGVkX3RyYWNlYmFjaygxNywgMjYsIGhlYWRlciwgbWluX2NvdW50PWNvdW50KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCh0cmFjZSwgcmVnZXgpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKIAotICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnZHVtcF90cmFjZWJhY2tfbGF0ZXInKSwKLSAgICAgICAgICAgICAgICAgICAgICduZWVkIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcigpJykKLSAgICBkZWYgY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoc2VsZiwgcmVwZWF0PUZhbHNlLCBjYW5jZWw9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPUZhbHNlLCB0d2ljZT1GYWxzZSk6Ci0gICAgICAgIGlmIHR3aWNlOgotICAgICAgICAgICAgbG9vcHMgPSAyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb29wcyA9IDEKLSAgICAgICAgaWYgZmlsZToKLSAgICAgICAgICAgIHdpdGggdGVtcG9yYXJ5X2ZpbGVuYW1lKCkgYXMgZmlsZW5hbWU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIocmVwZWF0LCBjYW5jZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBsb29wcykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHJlcGVhdCwgY2FuY2VsLCBOb25lLCBsb29wcykKLQogICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX2xhdGVyKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKIApAQCAtNTAzLDE1ICs1NDYsMjIgQEAKICAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihjYW5jZWw9VHJ1ZSkKIAogICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX2xhdGVyX2ZpbGUoc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoZmlsZT1UcnVlKQorICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgorICAgICAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihmaWxlbmFtZT1maWxlbmFtZSkKKworICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsCisgICAgICAgICAgICAgICAgICAgICAic3VicHJvY2VzcyBkb2Vzbid0IHN1cHBvcnQgcGFzc19mZHMgb24gV2luZG93cyIpCisgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2tfbGF0ZXJfZmQoc2VsZik6CisgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgnd2IrJykgYXMgZnA6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKGZkPWZwLmZpbGVubygpKQogCiAgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2tfbGF0ZXJfdHdpY2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIodHdpY2U9VHJ1ZSkKKyAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihsb29wcz0yKQogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihmYXVsdGhhbmRsZXIsICJyZWdpc3RlciIpLAogICAgICAgICAgICAgICAgICAgICAgIm5lZWQgZmF1bHRoYW5kbGVyLnJlZ2lzdGVyIikKICAgICBkZWYgY2hlY2tfcmVnaXN0ZXIoc2VsZiwgZmlsZW5hbWU9RmFsc2UsIGFsbF90aHJlYWRzPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICB1bnJlZ2lzdGVyPUZhbHNlLCBjaGFpbj1GYWxzZSk6CisgICAgICAgICAgICAgICAgICAgICAgIHVucmVnaXN0ZXI9RmFsc2UsIGNoYWluPUZhbHNlLCBmZD1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAgIFJlZ2lzdGVyIGEgaGFuZGxlciBkaXNwbGF5aW5nIHRoZSB0cmFjZWJhY2sgb24gYSB1c2VyIHNpZ25hbC4gUmFpc2UgdGhlCiAgICAgICAgIHNpZ25hbCBhbmQgY2hlY2sgdGhlIHdyaXR0ZW4gdHJhY2ViYWNrLgpAQCAtNTI3LDYgKzU3NywxMyBAQAogICAgICAgICAgICAgaW1wb3J0IHNpZ25hbAogICAgICAgICAgICAgaW1wb3J0IHN5cwogCisgICAgICAgICAgICBhbGxfdGhyZWFkcyA9IHthbGxfdGhyZWFkc30KKyAgICAgICAgICAgIHNpZ251bSA9IHtzaWdudW19CisgICAgICAgICAgICB1bnJlZ2lzdGVyID0ge3VucmVnaXN0ZXJ9CisgICAgICAgICAgICBjaGFpbiA9IHtjaGFpbn0KKyAgICAgICAgICAgIGZpbGVuYW1lID0ge2ZpbGVuYW1lIXJ9CisgICAgICAgICAgICBmZCA9IHtmZH0KKwogICAgICAgICAgICAgZGVmIGZ1bmMoc2lnbnVtKToKICAgICAgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0pCiAKQEAgLTUzNCwxOSArNTkxLDE2IEBACiAgICAgICAgICAgICAgICAgaGFuZGxlci5jYWxsZWQgPSBUcnVlCiAgICAgICAgICAgICBoYW5kbGVyLmNhbGxlZCA9IEZhbHNlCiAKLSAgICAgICAgICAgIGV4aXRjb2RlID0gMAotICAgICAgICAgICAgc2lnbnVtID0ge3NpZ251bX0KLSAgICAgICAgICAgIHVucmVnaXN0ZXIgPSB7dW5yZWdpc3Rlcn0KLSAgICAgICAgICAgIGNoYWluID0ge2NoYWlufQotCi0gICAgICAgICAgICBpZiB7aGFzX2ZpbGVuYW1lfToKLSAgICAgICAgICAgICAgICBmaWxlID0gb3Blbih7ZmlsZW5hbWV9LCAid2IiKQorICAgICAgICAgICAgaWYgZmlsZW5hbWU6CisgICAgICAgICAgICAgICAgZmlsZSA9IG9wZW4oZmlsZW5hbWUsICJ3YiIpCisgICAgICAgICAgICBlbGlmIGZkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyLmZpbGVubygpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZpbGUgPSBOb25lCiAgICAgICAgICAgICBpZiBjaGFpbjoKICAgICAgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ251bSwgaGFuZGxlcikKICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5yZWdpc3RlcihzaWdudW0sIGZpbGU9ZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxfdGhyZWFkcz17YWxsX3RocmVhZHN9LCBjaGFpbj17Y2hhaW59KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbF90aHJlYWRzPWFsbF90aHJlYWRzLCBjaGFpbj17Y2hhaW59KQogICAgICAgICAgICAgaWYgdW5yZWdpc3RlcjoKICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIudW5yZWdpc3RlcihzaWdudW0pCiAgICAgICAgICAgICBmdW5jKHNpZ251bSkKQEAgLTU1NywxNyArNjExLDE5IEBACiAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHN5cy5zdGRlcnIKICAgICAgICAgICAgICAgICBwcmludCgiRXJyb3I6IHNpZ25hbCBoYW5kbGVyIG5vdCBjYWxsZWQhIiwgZmlsZT1vdXRwdXQpCiAgICAgICAgICAgICAgICAgZXhpdGNvZGUgPSAxCi0gICAgICAgICAgICBpZiBmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleGl0Y29kZSA9IDAKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lOgogICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQogICAgICAgICAgICAgc3lzLmV4aXQoZXhpdGNvZGUpCiAgICAgICAgICAgICAiIiIKICAgICAgICAgY29kZSA9IGNvZGUuZm9ybWF0KAotICAgICAgICAgICAgZmlsZW5hbWU9cmVwcihmaWxlbmFtZSksCi0gICAgICAgICAgICBoYXNfZmlsZW5hbWU9Ym9vbChmaWxlbmFtZSksCiAgICAgICAgICAgICBhbGxfdGhyZWFkcz1hbGxfdGhyZWFkcywKICAgICAgICAgICAgIHNpZ251bT1zaWdudW0sCiAgICAgICAgICAgICB1bnJlZ2lzdGVyPXVucmVnaXN0ZXIsCiAgICAgICAgICAgICBjaGFpbj1jaGFpbiwKKyAgICAgICAgICAgIGZpbGVuYW1lPWZpbGVuYW1lLAorICAgICAgICAgICAgZmQ9ZmQsCiAgICAgICAgICkKICAgICAgICAgdHJhY2UsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lKQogICAgICAgICB0cmFjZSA9ICdcbicuam9pbih0cmFjZSkKQEAgLTU3Niw3ICs2MzIsNyBAQAogICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ0N1cnJlbnQgdGhyZWFkIFhYWCBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKTpcbicKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmVnZXggPSAnU3RhY2sgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6XG4nCi0gICAgICAgICAgICByZWdleCA9IGV4cGVjdGVkX3RyYWNlYmFjayg3LCAyOCwgcmVnZXgpCisgICAgICAgICAgICByZWdleCA9IGV4cGVjdGVkX3RyYWNlYmFjaygxNCwgMzIsIHJlZ2V4KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCh0cmFjZSwgcmVnZXgpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCAnJykKQEAgLTU5NSw2ICs2NTEsMTIgQEAKICAgICAgICAgd2l0aCB0ZW1wb3JhcnlfZmlsZW5hbWUoKSBhcyBmaWxlbmFtZToKICAgICAgICAgICAgIHNlbGYuY2hlY2tfcmVnaXN0ZXIoZmlsZW5hbWU9ZmlsZW5hbWUpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAorICAgICAgICAgICAgICAgICAgICAgInN1YnByb2Nlc3MgZG9lc24ndCBzdXBwb3J0IHBhc3NfZmRzIG9uIFdpbmRvd3MiKQorICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX2ZkKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoJ3diKycpIGFzIGZwOgorICAgICAgICAgICAgc2VsZi5jaGVja19yZWdpc3RlcihmZD1mcC5maWxlbm8oKSkKKwogICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX3RocmVhZHMoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfcmVnaXN0ZXIoYWxsX3RocmVhZHM9VHJ1ZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9maWxlX2VpbnRyLnB5IGIvTGliL3Rlc3QvdGVzdF9maWxlX2VpbnRyLnB5CmluZGV4IGI0ZTE4Y2UuLmYxZWZkMjYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmlsZV9laW50ci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZpbGVfZWludHIucHkKQEAgLTEzLDE2ICsxMywxNiBAQAogaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKIAogIyBUZXN0IGltcG9ydCBhbGwgb2YgdGhlIHRoaW5ncyB3ZSdyZSBhYm91dCB0byB0cnkgdGVzdGluZyB1cCBmcm9udC4KLWZyb20gX2lvIGltcG9ydCBGaWxlSU8KK2ltcG9ydCBfaW8KK2ltcG9ydCBfcHlpbwogCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gJ3Bvc2l4JywgJ3Rlc3RzIHJlcXVpcmVzIGEgcG9zaXggc3lzdGVtLicpCi1jbGFzcyBUZXN0RmlsZUlPU2lnbmFsSW50ZXJydXB0KHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RGaWxlSU9TaWduYWxJbnRlcnJ1cHQ6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLl9wcm9jZXNzID0gTm9uZQogCkBAIC0zOCw4ICszOCw5IEBACiAKICAgICAgICAgc3ViY2xhc3Nlc2VzIHNob3VsZCBvdmVycmlkZSB0aGlzIHRvIHRlc3QgZGlmZmVyZW50IElPIG9iamVjdHMuCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gKCdpbXBvcnQgX2lvIDsnCi0gICAgICAgICAgICAgICAgJ2luZmlsZSA9IF9pby5GaWxlSU8oc3lzLnN0ZGluLmZpbGVubygpLCAicmIiKScpCisgICAgICAgIHJldHVybiAoJ2ltcG9ydCAlcyBhcyBpbyA7JworICAgICAgICAgICAgICAgICdpbmZpbGUgPSBpby5GaWxlSU8oc3lzLnN0ZGluLmZpbGVubygpLCAicmIiKScgJQorICAgICAgICAgICAgICAgIHNlbGYubW9kbmFtZSkKIAogICAgIGRlZiBmYWlsX3dpdGhfcHJvY2Vzc19pbmZvKHNlbGYsIHdoeSwgc3Rkb3V0PWInJywgc3RkZXJyPWInJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tdW5pY2F0ZT1UcnVlKToKQEAgLTE3OSwxMSArMTgwLDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZD1iJ2hlbGxvXG53b3JsZCFcbicpKQogCiAKK2NsYXNzIENUZXN0RmlsZUlPU2lnbmFsSW50ZXJydXB0KFRlc3RGaWxlSU9TaWduYWxJbnRlcnJ1cHQsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBtb2RuYW1lID0gJ19pbycKKworY2xhc3MgUHlUZXN0RmlsZUlPU2lnbmFsSW50ZXJydXB0KFRlc3RGaWxlSU9TaWduYWxJbnRlcnJ1cHQsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBtb2RuYW1lID0gJ19weWlvJworCisKIGNsYXNzIFRlc3RCdWZmZXJlZElPU2lnbmFsSW50ZXJydXB0KFRlc3RGaWxlSU9TaWduYWxJbnRlcnJ1cHQpOgogICAgIGRlZiBfZ2VuZXJhdGVfaW5maWxlX3NldHVwX2NvZGUoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGluZmlsZSA9IC4uLiBsaW5lIG9mIGNvZGUgdG8gbWFrZSBhIEJ1ZmZlcmVkUmVhZGVyLiIiIgotICAgICAgICByZXR1cm4gKCdpbmZpbGUgPSBvcGVuKHN5cy5zdGRpbi5maWxlbm8oKSwgInJiIikgOycKLSAgICAgICAgICAgICAgICAnaW1wb3J0IF9pbyA7YXNzZXJ0IGlzaW5zdGFuY2UoaW5maWxlLCBfaW8uQnVmZmVyZWRSZWFkZXIpJykKKyAgICAgICAgcmV0dXJuICgnaW1wb3J0ICVzIGFzIGlvIDtpbmZpbGUgPSBpby5vcGVuKHN5cy5zdGRpbi5maWxlbm8oKSwgInJiIikgOycKKyAgICAgICAgICAgICAgICAnYXNzZXJ0IGlzaW5zdGFuY2UoaW5maWxlLCBpby5CdWZmZXJlZFJlYWRlciknICUKKyAgICAgICAgICAgICAgICBzZWxmLm1vZG5hbWUpCiAKICAgICBkZWYgdGVzdF9yZWFkYWxsKHNlbGYpOgogICAgICAgICAiIiJCdWZmZXJlZFJlYWRlci5yZWFkKCkgbXVzdCBoYW5kbGUgc2lnbmFscyBhbmQgbm90IGxvc2UgZGF0YS4iIiIKQEAgLTE5MywxMiArMjAyLDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX21ldGhvZF9uYW1lPSdyZWFkJywKICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkPWInaGVsbG9cbndvcmxkIVxuJykpCiAKK2NsYXNzIENUZXN0QnVmZmVyZWRJT1NpZ25hbEludGVycnVwdChUZXN0QnVmZmVyZWRJT1NpZ25hbEludGVycnVwdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vZG5hbWUgPSAnX2lvJworCitjbGFzcyBQeVRlc3RCdWZmZXJlZElPU2lnbmFsSW50ZXJydXB0KFRlc3RCdWZmZXJlZElPU2lnbmFsSW50ZXJydXB0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kbmFtZSA9ICdfcHlpbycKKwogCiBjbGFzcyBUZXN0VGV4dElPU2lnbmFsSW50ZXJydXB0KFRlc3RGaWxlSU9TaWduYWxJbnRlcnJ1cHQpOgogICAgIGRlZiBfZ2VuZXJhdGVfaW5maWxlX3NldHVwX2NvZGUoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGluZmlsZSA9IC4uLiBsaW5lIG9mIGNvZGUgdG8gbWFrZSBhIFRleHRJT1dyYXBwZXIuIiIiCi0gICAgICAgIHJldHVybiAoJ2luZmlsZSA9IG9wZW4oc3lzLnN0ZGluLmZpbGVubygpLCAicnQiLCBuZXdsaW5lPU5vbmUpIDsnCi0gICAgICAgICAgICAgICAgJ2ltcG9ydCBfaW8gO2Fzc2VydCBpc2luc3RhbmNlKGluZmlsZSwgX2lvLlRleHRJT1dyYXBwZXIpJykKKyAgICAgICAgcmV0dXJuICgnaW1wb3J0ICVzIGFzIGlvIDsnCisgICAgICAgICAgICAgICAgJ2luZmlsZSA9IGlvLm9wZW4oc3lzLnN0ZGluLmZpbGVubygpLCAicnQiLCBuZXdsaW5lPU5vbmUpIDsnCisgICAgICAgICAgICAgICAgJ2Fzc2VydCBpc2luc3RhbmNlKGluZmlsZSwgaW8uVGV4dElPV3JhcHBlciknICUKKyAgICAgICAgICAgICAgICBzZWxmLm1vZG5hbWUpCiAKICAgICBkZWYgdGVzdF9yZWFkbGluZShzZWxmKToKICAgICAgICAgIiIicmVhZGxpbmUoKSBtdXN0IGhhbmRsZSBzaWduYWxzIGFuZCBub3QgbG9zZSBkYXRhLiIiIgpAQCAtMjI0LDEzICsyNDEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfbWV0aG9kX25hbWU9J3JlYWQnLAogICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ9ImhlbGxvXG53b3JsZCFcbiIpKQogCitjbGFzcyBDVGVzdFRleHRJT1NpZ25hbEludGVycnVwdChUZXN0VGV4dElPU2lnbmFsSW50ZXJydXB0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kbmFtZSA9ICdfaW8nCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0X2Nhc2VzID0gWwotICAgICAgICAgICAgdGMgZm9yIHRjIGluIGdsb2JhbHMoKS52YWx1ZXMoKQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0YywgdHlwZSkgYW5kIGlzc3ViY2xhc3ModGMsIHVuaXR0ZXN0LlRlc3RDYXNlKV0KLSAgICBydW5fdW5pdHRlc3QoKnRlc3RfY2FzZXMpCitjbGFzcyBQeVRlc3RUZXh0SU9TaWduYWxJbnRlcnJ1cHQoVGVzdFRleHRJT1NpZ25hbEludGVycnVwdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vZG5hbWUgPSAnX3B5aW8nCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9maWxlaW5wdXQucHkgYi9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weQppbmRleCA0NzY1YTA1Li45MWMxMTY2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weQpAQCAtMjQwLDYgKzI0MCwxNyBAQAogICAgICAgICAgICAgbGluZXMgPSBsaXN0KGZpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgW2Inc3BhbSwgYmFjb24sIHNhdXNhZ2UsIGFuZCBzcGFtJ10pCiAKKyAgICBkZWYgdGVzdF9kZXRhY2hlZF9zdGRpbl9iaW5hcnlfbW9kZShzZWxmKToKKyAgICAgICAgb3JpZ19zdGRpbiA9IHN5cy5zdGRpbgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzeXMuc3RkaW4gPSBCeXRlc0lPKGInc3BhbSwgYmFjb24sIHNhdXNhZ2UsIGFuZCBzcGFtJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihzeXMuc3RkaW4sICdidWZmZXInKSkKKyAgICAgICAgICAgIGZpID0gRmlsZUlucHV0KGZpbGVzPVsnLSddLCBtb2RlPSdyYicpCisgICAgICAgICAgICBsaW5lcyA9IGxpc3QoZmkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzLCBbYidzcGFtLCBiYWNvbiwgc2F1c2FnZSwgYW5kIHNwYW0nXSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN5cy5zdGRpbiA9IG9yaWdfc3RkaW4KKwogICAgIGRlZiB0ZXN0X2ZpbGVfb3BlbmluZ19ob29rKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIGNhbm5vdCB1c2Ugb3Blbmhvb2sgYW5kIGlucGxhY2UgbW9kZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkgYi9MaWIvdGVzdC90ZXN0X2ZpbGVpby5weQppbmRleCBhNGZkMjBkLi41OWNjMzhmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZpbGVpby5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZpbGVpby5weQpAQCAtMTIsMTMgKzEyLDE1IEBACiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBjaGVja193YXJuaW5ncywgcnVuX3VuaXR0ZXN0LCBtYWtlX2JhZF9mZCwgY3B5dGhvbl9vbmx5CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyTGlzdAogCi1mcm9tIF9pbyBpbXBvcnQgRmlsZUlPIGFzIF9GaWxlSU8KK2ltcG9ydCBfaW8gICMgQyBpbXBsZW1lbnRhdGlvbiBvZiBpbworaW1wb3J0IF9weWlvICMgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIGlvCiAKLWNsYXNzIEF1dG9GaWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCitjbGFzcyBBdXRvRmlsZVRlc3RzOgogICAgICMgZmlsZSB0ZXN0cyBmb3Igd2hpY2ggYSB0ZXN0IGZpbGUgaXMgYXV0b21hdGljYWxseSBzZXQgdXAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5mID0gX0ZpbGVJTyhURVNURk4sICd3JykKKyAgICAgICAgc2VsZi5mID0gc2VsZi5GaWxlSU8oVEVTVEZOLCAndycpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGlmIHNlbGYuZjoKQEAgLTYwLDIwICs2Miw2OSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKEF0dHJpYnV0ZUVycm9yLCBUeXBlRXJyb3IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0YXR0ciwgZiwgYXR0ciwgJ29vcHMnKQogCi0gICAgZGVmIHRlc3RSZWFkaW50byhzZWxmKToKLSAgICAgICAgIyB2ZXJpZnkgcmVhZGludG8KLSAgICAgICAgc2VsZi5mLndyaXRlKGJ5dGVzKFsxLCAyXSkpCisgICAgZGVmIHRlc3RCbGtzaXplKHNlbGYpOgorICAgICAgICAjIHRlc3QgcHJpdmF0ZSBfYmxrc2l6ZSBhdHRyaWJ1dGUKKyAgICAgICAgYmxrc2l6ZSA9IGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUKKyAgICAgICAgIyB0cnkgdG8gZ2V0IHByZWZlcnJlZCBibGtzaXplIGZyb20gc3RhdC5zdF9ibGtzaXplLCBpZiBhdmFpbGFibGUKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2ZzdGF0Jyk6CisgICAgICAgICAgICBmc3QgPSBvcy5mc3RhdChzZWxmLmYuZmlsZW5vKCkpCisgICAgICAgICAgICBibGtzaXplID0gZ2V0YXR0cihmc3QsICdzdF9ibGtzaXplJywgYmxrc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmYuX2Jsa3NpemUsIGJsa3NpemUpCisKKyAgICAjIHZlcmlmeSByZWFkaW50bworICAgIGRlZiB0ZXN0UmVhZGludG9CeXRlQXJyYXkoc2VsZik6CisgICAgICAgIHNlbGYuZi53cml0ZShieXRlcyhbMSwgMiwgMCwgMjU1XSkpCiAgICAgICAgIHNlbGYuZi5jbG9zZSgpCi0gICAgICAgIGEgPSBhcnJheSgnYicsIGIneCcqMTApCi0gICAgICAgIHNlbGYuZiA9IF9GaWxlSU8oVEVTVEZOLCAncicpCi0gICAgICAgIG4gPSBzZWxmLmYucmVhZGludG8oYSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcnJheSgnYicsIFsxLCAyXSksIGFbOm5dKQorCisgICAgICAgIGJhID0gYnl0ZWFycmF5KGInYWJjZGVmZ2gnKQorICAgICAgICB3aXRoIHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3InKSBhcyBmOgorICAgICAgICAgICAgbiA9IGYucmVhZGludG8oYmEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEsIGInXHgwMVx4MDJceDAwXHhmZmVmZ2gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDQpCisKKyAgICBkZWYgX3Rlc3RSZWFkaW50b01lbW9yeXZpZXcoc2VsZik6CisgICAgICAgIHNlbGYuZi53cml0ZShieXRlcyhbMSwgMiwgMCwgMjU1XSkpCisgICAgICAgIHNlbGYuZi5jbG9zZSgpCisKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYnl0ZWFycmF5KGInYWJjZGVmZ2gnKSkKKyAgICAgICAgd2l0aCBzZWxmLkZpbGVJTyhURVNURk4sICdyJykgYXMgZjoKKyAgICAgICAgICAgIG4gPSBmLnJlYWRpbnRvKG0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgYidceDAxXHgwMlx4MDBceGZmZWZnaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgNCkKKworICAgICAgICBtID0gbWVtb3J5dmlldyhieXRlYXJyYXkoYidhYmNkZWZnaCcpKS5jYXN0KCdIJywgc2hhcGU9WzIsIDJdKQorICAgICAgICB3aXRoIHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3InKSBhcyBmOgorICAgICAgICAgICAgbiA9IGYucmVhZGludG8obSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhtKSwgYidceDAxXHgwMlx4MDBceGZmZWZnaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgNCkKKworICAgIGRlZiBfdGVzdFJlYWRpbnRvQXJyYXkoc2VsZik6CisgICAgICAgIHNlbGYuZi53cml0ZShieXRlcyhbMSwgMiwgMCwgMjU1XSkpCisgICAgICAgIHNlbGYuZi5jbG9zZSgpCisKKyAgICAgICAgYSA9IGFycmF5KCdCJywgYidhYmNkZWZnaCcpCisgICAgICAgIHdpdGggc2VsZi5GaWxlSU8oVEVTVEZOLCAncicpIGFzIGY6CisgICAgICAgICAgICBuID0gZi5yZWFkaW50byhhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGFycmF5KCdCJywgWzEsIDIsIDAsIDI1NSwgMTAxLCAxMDIsIDEwMywgMTA0XSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgNCkKKworICAgICAgICBhID0gYXJyYXkoJ2InLCBiJ2FiY2RlZmdoJykKKyAgICAgICAgd2l0aCBzZWxmLkZpbGVJTyhURVNURk4sICdyJykgYXMgZjoKKyAgICAgICAgICAgIG4gPSBmLnJlYWRpbnRvKGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYXJyYXkoJ2InLCBbMSwgMiwgMCwgLTEsIDEwMSwgMTAyLCAxMDMsIDEwNF0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDQpCisKKyAgICAgICAgYSA9IGFycmF5KCdJJywgYidhYmNkZWZnaCcpCisgICAgICAgIHdpdGggc2VsZi5GaWxlSU8oVEVTVEZOLCAncicpIGFzIGY6CisgICAgICAgICAgICBuID0gZi5yZWFkaW50byhhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGFycmF5KCdJJywgYidceDAxXHgwMlx4MDBceGZmZWZnaCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDQpCiAKICAgICBkZWYgdGVzdFdyaXRlbGluZXNMaXN0KHNlbGYpOgogICAgICAgICBsID0gW2InMTIzJywgYic0NTYnXQogICAgICAgICBzZWxmLmYud3JpdGVsaW5lcyhsKQogICAgICAgICBzZWxmLmYuY2xvc2UoKQotICAgICAgICBzZWxmLmYgPSBfRmlsZUlPKFRFU1RGTiwgJ3JiJykKKyAgICAgICAgc2VsZi5mID0gc2VsZi5GaWxlSU8oVEVTVEZOLCAncmInKQogICAgICAgICBidWYgPSBzZWxmLmYucmVhZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBiJzEyMzQ1NicpCiAKQEAgLTgxLDcgKzEzMiw3IEBACiAgICAgICAgIGwgPSBVc2VyTGlzdChbYicxMjMnLCBiJzQ1NiddKQogICAgICAgICBzZWxmLmYud3JpdGVsaW5lcyhsKQogICAgICAgICBzZWxmLmYuY2xvc2UoKQotICAgICAgICBzZWxmLmYgPSBfRmlsZUlPKFRFU1RGTiwgJ3JiJykKKyAgICAgICAgc2VsZi5mID0gc2VsZi5GaWxlSU8oVEVTVEZOLCAncmInKQogICAgICAgICBidWYgPSBzZWxmLmYucmVhZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBiJzEyMzQ1NicpCiAKQEAgLTkzLDcgKzE0NCw3IEBACiAgICAgZGVmIHRlc3Rfbm9uZV9hcmdzKHNlbGYpOgogICAgICAgICBzZWxmLmYud3JpdGUoYiJoaVxuYnllXG5hYmMiKQogICAgICAgICBzZWxmLmYuY2xvc2UoKQotICAgICAgICBzZWxmLmYgPSBfRmlsZUlPKFRFU1RGTiwgJ3InKQorICAgICAgICBzZWxmLmYgPSBzZWxmLkZpbGVJTyhURVNURk4sICdyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmYucmVhZChOb25lKSwgYiJoaVxuYnllXG5hYmMiKQogICAgICAgICBzZWxmLmYuc2VlaygwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZi5yZWFkbGluZShOb25lKSwgYiJoaVxuIikKQEAgLTEwMywxMyArMTU0LDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mLndyaXRlLCAiSGVsbG8hIikKIAogICAgIGRlZiB0ZXN0UmVwcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHNlbGYuZiksICI8X2lvLkZpbGVJTyBuYW1lPSVyIG1vZGU9JXI+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNlbGYuZi5uYW1lLCBzZWxmLmYubW9kZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihzZWxmLmYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICI8JXMuRmlsZUlPIG5hbWU9JXIgbW9kZT0lciBjbG9zZWZkPVRydWU+IiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubW9kdWxlbmFtZSwgc2VsZi5mLm5hbWUsIHNlbGYuZi5tb2RlKSkKICAgICAgICAgZGVsIHNlbGYuZi5uYW1lCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihzZWxmLmYpLCAiPF9pby5GaWxlSU8gZmQ9JXIgbW9kZT0lcj4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc2VsZi5mLmZpbGVubygpLCBzZWxmLmYubW9kZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihzZWxmLmYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICI8JXMuRmlsZUlPIGZkPSVyIG1vZGU9JXIgY2xvc2VmZD1UcnVlPiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLm1vZHVsZW5hbWUsIHNlbGYuZi5maWxlbm8oKSwgc2VsZi5mLm1vZGUpKQogICAgICAgICBzZWxmLmYuY2xvc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoc2VsZi5mKSwgIjxfaW8uRmlsZUlPIFtjbG9zZWRdPiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihzZWxmLmYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICI8JXMuRmlsZUlPIFtjbG9zZWRdPiIgJSAoc2VsZi5tb2R1bGVuYW1lLCkpCisKKyAgICBkZWYgdGVzdFJlcHJOb0Nsb3NlRkQoc2VsZik6CisgICAgICAgIGZkID0gb3Mub3BlbihURVNURk4sIG9zLk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNlbGYuRmlsZUlPKGZkLCAncicsIGNsb3NlZmQ9RmFsc2UpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwlcy5GaWxlSU8gbmFtZT0lciBtb2RlPSVyIGNsb3NlZmQ9RmFsc2U+IiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5tb2R1bGVuYW1lLCBmLm5hbWUsIGYubW9kZSkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKIAogICAgIGRlZiB0ZXN0RXJyb3JzKHNlbGYpOgogICAgICAgICBmID0gc2VsZi5mCkBAIC0xMTksNyArMTgzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkLCAxMCkgIyBPcGVuIGZvciByZWFkaW5nCiAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5jbG9zZWQpCi0gICAgICAgIGYgPSBfRmlsZUlPKFRFU1RGTiwgJ3InKQorICAgICAgICBmID0gc2VsZi5GaWxlSU8oVEVTVEZOLCAncicpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZi5yZWFkaW50bywgIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jbG9zZWQpCiAgICAgICAgIGYuY2xvc2UoKQpAQCAtMTM4LDExICsyMDIsMTEgQEAKICAgICAgICAgICAgICMgc2hvdWxkIHJhaXNlIG9uIGNsb3NlZCBmaWxlCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZXRob2QpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5mLnJlYWRpbnRvKSAjIFhYWCBzaG91bGQgYmUgVHlwZUVycm9yPworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZi5yZWFkaW50bykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5mLnJlYWRpbnRvLCBieXRlYXJyYXkoMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuZi5zZWVrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZi5zZWVrKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmYuc2VlaywgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5mLndyaXRlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZi53cml0ZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5mLndyaXRlLCBiJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mLndyaXRlbGluZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuZi53cml0ZWxpbmVzLCBiJycpCkBAIC0xNTAsOSArMjE0LDkgQEAKICAgICBkZWYgdGVzdE9wZW5kaXIoc2VsZik6CiAgICAgICAgICMgSXNzdWUgMzcwMzogb3BlbmluZyBhIGRpcmVjdG9yeSBzaG91bGQgZmlsbCB0aGUgZXJybm8KICAgICAgICAgIyBXaW5kb3dzIGFsd2F5cyByZXR1cm5zICJbRXJybm8gMTNdOiBQZXJtaXNzaW9uIGRlbmllZAotICAgICAgICAjIFVuaXggY2FsbHMgZGlyY2hlY2soKSBhbmQgcmV0dXJucyAiW0Vycm5vIDIxXTogSXMgYSBkaXJlY3RvcnkiCisgICAgICAgICMgVW5peCB1c2VzIGZzdGF0IGFuZCByZXR1cm5zICJbRXJybm8gMjFdOiBJcyBhIGRpcmVjdG9yeSIKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgX0ZpbGVJTygnLicsICdyJykKKyAgICAgICAgICAgIHNlbGYuRmlsZUlPKCcuJywgJ3InKQogICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChlLmVycm5vLCAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbGVuYW1lLCAiLiIpCkBAIC0xNjMsNyArMjI3LDcgQEAKICAgICBkZWYgdGVzdE9wZW5EaXJGRChzZWxmKToKICAgICAgICAgZmQgPSBvcy5vcGVuKCcuJywgb3MuT19SRE9OTFkpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206Ci0gICAgICAgICAgICBfRmlsZUlPKGZkLCAncicpCisgICAgICAgICAgICBzZWxmLkZpbGVJTyhmZCwgJ3InKQogICAgICAgICBvcy5jbG9zZShmZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVJU0RJUikKIApAQCAtMjQ4LDcgKzMxMiw3IEBACiAgICAgICAgICAgICBzZWxmLmYuY2xvc2UoKQogICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgc2VsZi5mID0gX0ZpbGVJTyhURVNURk4sICdyJykKKyAgICAgICAgc2VsZi5mID0gc2VsZi5GaWxlSU8oVEVTVEZOLCAncicpCiAgICAgICAgIG9zLmNsb3NlKHNlbGYuZi5maWxlbm8oKSkKICAgICAgICAgcmV0dXJuIHNlbGYuZgogCkBAIC0yNjgsMjMgKzMzMiwzMiBAQAogICAgICAgICBhID0gYXJyYXkoJ2InLCBiJ3gnKjEwKQogICAgICAgICBmLnJlYWRpbnRvKGEpCiAKLWNsYXNzIE90aGVyRmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIENBdXRvRmlsZVRlc3RzKEF1dG9GaWxlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBGaWxlSU8gPSBfaW8uRmlsZUlPCisgICAgbW9kdWxlbmFtZSA9ICdfaW8nCisKK2NsYXNzIFB5QXV0b0ZpbGVUZXN0cyhBdXRvRmlsZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgRmlsZUlPID0gX3B5aW8uRmlsZUlPCisgICAgbW9kdWxlbmFtZSA9ICdfcHlpbycKKworCitjbGFzcyBPdGhlckZpbGVUZXN0czoKIAogICAgIGRlZiB0ZXN0QWJsZXMoc2VsZik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGYgPSBfRmlsZUlPKFRFU1RGTiwgInciKQorICAgICAgICAgICAgZiA9IHNlbGYuRmlsZUlPKFRFU1RGTiwgInciKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWRhYmxlKCksIEZhbHNlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLndyaXRhYmxlKCksIFRydWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuc2Vla2FibGUoKSwgVHJ1ZSkKICAgICAgICAgICAgIGYuY2xvc2UoKQogCi0gICAgICAgICAgICBmID0gX0ZpbGVJTyhURVNURk4sICJyIikKKyAgICAgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhURVNURk4sICJyIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkYWJsZSgpLCBUcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLndyaXRhYmxlKCksIEZhbHNlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnNlZWthYmxlKCksIFRydWUpCiAgICAgICAgICAgICBmLmNsb3NlKCkKIAotICAgICAgICAgICAgZiA9IF9GaWxlSU8oVEVTVEZOLCAiYSsiKQorICAgICAgICAgICAgZiA9IHNlbGYuRmlsZUlPKFRFU1RGTiwgImErIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkYWJsZSgpLCBUcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLndyaXRhYmxlKCksIFRydWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuc2Vla2FibGUoKSwgVHJ1ZSkKQEAgLTI5Myw3ICszNjYsNyBAQAogCiAgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gIndpbjMyIjoKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGYgPSBfRmlsZUlPKCIvZGV2L3R0eSIsICJhIikKKyAgICAgICAgICAgICAgICAgICAgZiA9IHNlbGYuRmlsZUlPKCIvZGV2L3R0eSIsICJhIikKICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgIyBXaGVuIHJ1biBpbiBhIGNyb24gam9iIHRoZXJlIGp1c3QgYXJlbid0IGFueQogICAgICAgICAgICAgICAgICAgICAjIHR0eXMsIHNvIHNraXAgdGhlIHRlc3QuICBUaGlzIGFsc28gaGFuZGxlcyBvdGhlcgpAQCAtMzE2LDcgKzM4OSw3IEBACiAgICAgICAgICMgY2hlY2sgaW52YWxpZCBtb2RlIHN0cmluZ3MKICAgICAgICAgZm9yIG1vZGUgaW4gKCIiLCAiYVUiLCAid1UrIiwgInJ3IiwgInJ0Iik6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZiA9IF9GaWxlSU8oVEVTVEZOLCBtb2RlKQorICAgICAgICAgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhURVNURk4sIG1vZGUpCiAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBlbHNlOgpAQCAtMzMyLDcgKzQwNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYWIrJywgJ2FiKycpLCAoJ2ErYicsICdhYisnKSwgKCdyJywgJ3JiJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICgncmInLCAncmInKSwgKCdyYisnLCAncmIrJyksICgncitiJywgJ3JiKycpXToKICAgICAgICAgICAgICAgICAjIHJlYWQgbW9kZXMgYXJlIGxhc3Qgc28gdGhhdCBURVNURk4gd2lsbCBleGlzdCBmaXJzdAotICAgICAgICAgICAgICAgIHdpdGggX0ZpbGVJTyhURVNURk4sIG1vZGVzWzBdKSBhcyBmOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5GaWxlSU8oVEVTVEZOLCBtb2Rlc1swXSkgYXMgZjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLm1vZGUsIG1vZGVzWzFdKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoVEVTVEZOKToKQEAgLTM0MCw3ICs0MTMsNyBAQAogCiAgICAgZGVmIHRlc3RVbmljb2RlT3BlbihzZWxmKToKICAgICAgICAgIyB2ZXJpZnkgcmVwciB3b3JrcyBmb3IgdW5pY29kZSB0b28KLSAgICAgICAgZiA9IF9GaWxlSU8oc3RyKFRFU1RGTiksICJ3IikKKyAgICAgICAgZiA9IHNlbGYuRmlsZUlPKHN0cihURVNURk4pLCAidyIpCiAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICBvcy51bmxpbmsoVEVTVEZOKQogCkBAIC0zNTAsNyArNDIzLDcgQEAKICAgICAgICAgICAgIGZuID0gVEVTVEZOLmVuY29kZSgiYXNjaWkiKQogICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnY291bGQgbm90IGVuY29kZSAlciB0byBhc2NpaScgJSBURVNURk4pCi0gICAgICAgIGYgPSBfRmlsZUlPKGZuLCAidyIpCisgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhmbiwgInciKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmLndyaXRlKGIiYWJjIikKICAgICAgICAgICAgIGYuY2xvc2UoKQpAQCAtMzYxLDI4ICs0MzQsMjEgQEAKIAogICAgIGRlZiB0ZXN0Q29uc3RydWN0b3JIYW5kbGVzTlVMQ2hhcnMoc2VsZik6CiAgICAgICAgIGZuX3dpdGhfTlVMID0gJ2Zvb1wwYmFyJwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9GaWxlSU8sIGZuX3dpdGhfTlVMLCAndycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX0ZpbGVJTywgYnl0ZXMoZm5fd2l0aF9OVUwsICdhc2NpaScpLCAndycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuRmlsZUlPLCBmbl93aXRoX05VTCwgJ3cnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLkZpbGVJTywgYnl0ZXMoZm5fd2l0aF9OVUwsICdhc2NpaScpLCAndycpCiAKICAgICBkZWYgdGVzdEludmFsaWRGZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgX0ZpbGVJTywgLTEwKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBfRmlsZUlPLCBtYWtlX2JhZF9mZCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLkZpbGVJTywgLTEwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzZWxmLkZpbGVJTywgbWFrZV9iYWRfZmQoKSkKICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAgICAgICAgICBpbXBvcnQgbXN2Y3J0CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBtc3ZjcnQuZ2V0X29zZmhhbmRsZSwgbWFrZV9iYWRfZmQoKSkKIAotICAgIEBjcHl0aG9uX29ubHkKLSAgICBkZWYgdGVzdEludmFsaWRGZF9vdmVyZmxvdyhzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAxNTk4OQotICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX0ZpbGVJTywgX3Rlc3RjYXBpLklOVF9NQVggKyAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9GaWxlSU8sIF90ZXN0Y2FwaS5JTlRfTUlOIC0gMSkKLQogICAgIGRlZiB0ZXN0QmFkTW9kZUFyZ3VtZW50KHNlbGYpOgogICAgICAgICAjIHZlcmlmeSB0aGF0IHdlIGdldCBhIHNlbnNpYmxlIGVycm9yIG1lc3NhZ2UgZm9yIGJhZCBtb2RlIGFyZ3VtZW50CiAgICAgICAgIGJhZF9tb2RlID0gInF3ZXJ0eSIKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZiA9IF9GaWxlSU8oVEVTVEZOLCBiYWRfbW9kZSkKKyAgICAgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhURVNURk4sIGJhZF9tb2RlKQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBtc2c6CiAgICAgICAgICAgICBpZiBtc2cuYXJnc1swXSAhPSAwOgogICAgICAgICAgICAgICAgIHMgPSBzdHIobXNnKQpAQCAtMzk1LDcgKzQ2MSw3IEBACiAgICAgICAgICAgICBzZWxmLmZhaWwoIm5vIGVycm9yIGZvciBpbnZhbGlkIG1vZGU6ICVzIiAlIGJhZF9tb2RlKQogCiAgICAgZGVmIHRlc3RUcnVuY2F0ZShzZWxmKToKLSAgICAgICAgZiA9IF9GaWxlSU8oVEVTVEZOLCAndycpCisgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhURVNURk4sICd3JykKICAgICAgICAgZi53cml0ZShieXRlcyhieXRlYXJyYXkocmFuZ2UoMTApKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIDEwKQogICAgICAgICBmLnRydW5jYXRlKDUpCkBAIC00MTAsMTEgKzQ3NiwxMSBAQAogICAgICAgICBkZWYgYnVnODAxNjMxKCk6CiAgICAgICAgICAgICAjIFNGIGJ1ZyA8aHR0cDovL3d3dy5weXRob24ub3JnL3NmLzgwMTYzMT4KICAgICAgICAgICAgICMgImZpbGUudHJ1bmNhdGUgZmF1bHQgb24gd2luZG93cyIKLSAgICAgICAgICAgIGYgPSBfRmlsZUlPKFRFU1RGTiwgJ3cnKQorICAgICAgICAgICAgZiA9IHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3cnKQogICAgICAgICAgICAgZi53cml0ZShieXRlcyhyYW5nZSgxMSkpKQogICAgICAgICAgICAgZi5jbG9zZSgpCiAKLSAgICAgICAgICAgIGYgPSBfRmlsZUlPKFRFU1RGTiwncisnKQorICAgICAgICAgICAgZiA9IHNlbGYuRmlsZUlPKFRFU1RGTiwncisnKQogICAgICAgICAgICAgZGF0YSA9IGYucmVhZCg1KQogICAgICAgICAgICAgaWYgZGF0YSAhPSBieXRlcyhyYW5nZSg1KSk6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJSZWFkIG9uIGZpbGUgb3BlbmVkIGZvciB1cGRhdGUgZmFpbGVkICVyIiAlIGRhdGEpCkBAIC00NTQsMTkgKzUyMCwxOSBAQAogICAgICAgICAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0SW52YWxpZEluaXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX0ZpbGVJTywgIjEiLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuRmlsZUlPLCAiMSIsIDAsIDApCiAKICAgICBkZWYgdGVzdFdhcm5pbmdzKHNlbGYpOgogICAgICAgICB3aXRoIGNoZWNrX3dhcm5pbmdzKHF1aWV0PVRydWUpIGFzIHc6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcud2FybmluZ3MsIFtdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBfRmlsZUlPLCBbXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5GaWxlSU8sIFtdKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3Lndhcm5pbmdzLCBbXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF9GaWxlSU8sICIvc29tZS9pbnZhbGlkL25hbWUiLCAicnQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5GaWxlSU8sICIvc29tZS9pbnZhbGlkL25hbWUiLCAicnQiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3Lndhcm5pbmdzLCBbXSkKIAogICAgIGRlZiB0ZXN0VW5jbG9zZWRGRE9uRXhjZXB0aW9uKHNlbGYpOgogICAgICAgICBjbGFzcyBNeUV4Y2VwdGlvbihFeGNlcHRpb24pOiBwYXNzCi0gICAgICAgIGNsYXNzIE15RmlsZUlPKF9GaWxlSU8pOgorICAgICAgICBjbGFzcyBNeUZpbGVJTyhzZWxmLkZpbGVJTyk6CiAgICAgICAgICAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgogICAgICAgICAgICAgICAgIGlmIG5hbWUgPT0gIm5hbWUiOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBNeUV4Y2VwdGlvbigiYmxvY2tlZCBzZXR0aW5nIG5hbWUiKQpAQCAtNDc1LDEyICs1NDEsMjggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTXlFeGNlcHRpb24sIE15RmlsZUlPLCBmZCkKICAgICAgICAgb3MuY2xvc2UoZmQpICAjIHNob3VsZCBub3QgcmFpc2UgT1NFcnJvcihFQkFERikKIAorY2xhc3MgQ090aGVyRmlsZVRlc3RzKE90aGVyRmlsZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgRmlsZUlPID0gX2lvLkZpbGVJTworICAgIG1vZHVsZW5hbWUgPSAnX2lvJworCisgICAgQGNweXRob25fb25seQorICAgIGRlZiB0ZXN0SW52YWxpZEZkX292ZXJmbG93KHNlbGYpOgorICAgICAgICAjIElzc3VlIDE1OTg5CisgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLkZpbGVJTywgX3Rlc3RjYXBpLklOVF9NQVggKyAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuRmlsZUlPLCBfdGVzdGNhcGkuSU5UX01JTiAtIDEpCisKK2NsYXNzIFB5T3RoZXJGaWxlVGVzdHMoT3RoZXJGaWxlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBGaWxlSU8gPSBfcHlpby5GaWxlSU8KKyAgICBtb2R1bGVuYW1lID0gJ19weWlvJworCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICAjIEhpc3RvcmljYWxseSwgdGhlc2UgdGVzdHMgaGF2ZSBiZWVuIHNsb3BweSBhYm91dCByZW1vdmluZyBURVNURk4uCiAgICAgIyBTbyBnZXQgcmlkIG9mIGl0IG5vIG1hdHRlciB3aGF0LgogICAgIHRyeToKLSAgICAgICAgcnVuX3VuaXR0ZXN0KEF1dG9GaWxlVGVzdHMsIE90aGVyRmlsZVRlc3RzKQorICAgICAgICBydW5fdW5pdHRlc3QoQ0F1dG9GaWxlVGVzdHMsIFB5QXV0b0ZpbGVUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgIENPdGhlckZpbGVUZXN0cywgUHlPdGhlckZpbGVUZXN0cykKICAgICBmaW5hbGx5OgogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhURVNURk4pOgogICAgICAgICAgICAgb3MudW5saW5rKFRFU1RGTikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmluYWxpemF0aW9uLnB5IGIvTGliL3Rlc3QvdGVzdF9maW5hbGl6YXRpb24ucHkKaW5kZXggMDNhYzFhYS4uMzVkNzkxMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9maW5hbGl6YXRpb24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9maW5hbGl6YXRpb24ucHkKQEAgLTUxNSw4ICs1MTUsNSBAQAogICAgICAgICBzZWxmLmFzc2VydElzKHdyKCksIE5vbmUpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5IGIvTGliL3Rlc3QvdGVzdF9mbG9hdC5weQppbmRleCAyNGZlMTI4Li40OGY3YTcwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkKQEAgLTgyMiw2ICs4MjIsMTQgQEAKICAgICAgICAgICAgIHRlc3Qoc2ZtdCwgTkFOLCAnIG5hbicpCiAgICAgICAgICAgICB0ZXN0KHNmbXQsIC1OQU4sICcgbmFuJykKIAorICAgIGRlZiB0ZXN0X05vbmVfbmRpZ2l0cyhzZWxmKToKKyAgICAgICAgZm9yIHggaW4gcm91bmQoMS4yMyksIHJvdW5kKDEuMjMsIE5vbmUpLCByb3VuZCgxLjIzLCBuZGlnaXRzPU5vbmUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHgsIGludCkKKyAgICAgICAgZm9yIHggaW4gcm91bmQoMS43OCksIHJvdW5kKDEuNzgsIE5vbmUpLCByb3VuZCgxLjc4LCBuZGlnaXRzPU5vbmUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHgsIGludCkKKwogCiAjIEJlZ2lubmluZyB3aXRoIFB5dGhvbiAyLjYgZmxvYXQgaGFzIGNyb3NzIHBsYXRmb3JtIGNvbXBhdGlibGUKICMgd2F5cyB0byBjcmVhdGUgYW5kIHJlcHJlc2VudCBpbmYgYW5kIG5hbgpAQCAtMTM0OCwxOCArMTM1Niw1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5pZGVudGljYWwoeCwgZnJvbUhleCh0b0hleCh4KSkpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICBHZW5lcmFsRmxvYXRDYXNlcywKLSAgICAgICAgRm9ybWF0RnVuY3Rpb25zVGVzdENhc2UsCi0gICAgICAgIFVua25vd25Gb3JtYXRUZXN0Q2FzZSwKLSAgICAgICAgSUVFRUZvcm1hdFRlc3RDYXNlLAotICAgICAgICBGb3JtYXRUZXN0Q2FzZSwKLSAgICAgICAgUmVwclRlc3RDYXNlLAotICAgICAgICBSb3VuZFRlc3RDYXNlLAotICAgICAgICBJbmZOYW5UZXN0LAotICAgICAgICBIZXhGbG9hdFRlc3RDYXNlLAotICAgICAgICApCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmx1ZmwucHkgYi9MaWIvdGVzdC90ZXN0X2ZsdWZsLnB5CmluZGV4IDVhNzA5YmMuLjk4YjViZDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmx1ZmwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mbHVmbC5weQpAQCAtMTgsMTAgKzE4LDUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPEZMVUZMIHRlc3Q+JywgJ2V4ZWMnKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KEZMVUZMVGVzdHMpCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mbm1hdGNoLnB5IGIvTGliL3Rlc3QvdGVzdF9mbm1hdGNoLnB5CmluZGV4IDQ4MjgzNWQuLmZhMzdmOTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZm5tYXRjaC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZubWF0Y2gucHkKQEAgLTEsNiArMSw1IEBACiAiIiJUZXN0IGNhc2VzIGZvciB0aGUgZm5tYXRjaCBtb2R1bGUuIiIiCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gZm5tYXRjaCBpbXBvcnQgZm5tYXRjaCwgZm5tYXRjaGNhc2UsIHRyYW5zbGF0ZSwgZmlsdGVyCkBAIC03OSwxMSArNzgsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbHRlcihbJ2EnLCAnYiddLCAnYScpLCBbJ2EnXSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRm5tYXRjaFRlc3RDYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZVRlc3RDYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRlc3RDYXNlKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZm9yazEucHkgYi9MaWIvdGVzdC90ZXN0X2ZvcmsxLnB5CmluZGV4IGUwNjI2ZGYuLmRhNDZmZTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZm9yazEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mb3JrMS5weQpAQCAtNiw5ICs2LDEwIEBACiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQoraW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdC5mb3JrX3dhaXQgaW1wb3J0IEZvcmtXYWl0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHJ1bl91bml0dGVzdCwgcmVhcF9jaGlsZHJlbiwgZ2V0X2F0dHJpYnV0ZSwKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAocmVhcF9jaGlsZHJlbiwgZ2V0X2F0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0X21vZHVsZSwgdmVyYm9zZSkKIAogdGhyZWFkaW5nID0gaW1wb3J0X21vZHVsZSgndGhyZWFkaW5nJykKQEAgLTE4LDEzICsxOSwxNCBAQAogCiBjbGFzcyBGb3JrVGVzdChGb3JrV2FpdCk6CiAgICAgZGVmIHdhaXRfaW1wbChzZWxmLCBjcGlkKToKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICBkZWFkbGluZSA9IHRpbWUubW9ub3RvbmljKCkgKyAxMC4wCisgICAgICAgIHdoaWxlIHRpbWUubW9ub3RvbmljKCkgPD0gZGVhZGxpbmU6CiAgICAgICAgICAgICAjIHdhaXRwaWQoKSBzaG91bGRuJ3QgaGFuZywgYnV0IHNvbWUgb2YgdGhlIGJ1aWxkYm90cyBzZWVtIHRvIGhhbmcKICAgICAgICAgICAgICMgaW4gdGhlIGZvcmtpbmcgdGVzdHMuICBUaGlzIGlzIGFuIGF0dGVtcHQgdG8gZml4IHRoZSBwcm9ibGVtLgogICAgICAgICAgICAgc3BpZCwgc3RhdHVzID0gb3Mud2FpdHBpZChjcGlkLCBvcy5XTk9IQU5HKQogICAgICAgICAgICAgaWYgc3BpZCA9PSBjcGlkOgogICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDEuMCkKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4xKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BpZCwgY3BpZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsICJjYXVzZSA9ICVkLCBleGl0ID0gJWQiICUgKHN0YXR1cyYweGZmLCBzdGF0dXM+PjgpKQpAQCAtMTAzLDkgKzEwNSw4IEBACiAgICAgICAgICAgICBmb3JrX3dpdGhfaW1wb3J0X2xvY2sobGV2ZWwpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChGb3JrVGVzdCkKK2RlZiB0ZWFyRG93bk1vZHVsZSgpOgogICAgIHJlYXBfY2hpbGRyZW4oKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weSBiL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CmluZGV4IGZjNzFlNDguLjliMTM2MzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CkBAIC05LDcgKzksNyBAQAogIyB0ZXN0IHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdG9yIChJIGFtIG5vdCBzdXJlIGlmIHRoaXMgaXMgYmVpbmcgdGVzdGVkCiAjIGVsc2V3aGVyZSBidXQsIHN1cmVseSwgc29tZSBvZiB0aGUgZ2l2ZW4gY2FzZXMgYXJlICpub3QqIHRlc3RlZCBiZWNhdXNlCiAjIHRoZXkgY3Jhc2ggcHl0aG9uKQotIyB0ZXN0IG9uIHVuaWNvZGUgc3RyaW5ncyBhcyB3ZWxsCisjIHRlc3Qgb24gYnl0ZXMgb2JqZWN0IGFzIHdlbGwKIAogZGVmIHRlc3Rmb3JtYXQoZm9ybWF0c3RyLCBhcmdzLCBvdXRwdXQ9Tm9uZSwgbGltaXQ9Tm9uZSwgb3ZlcmZsb3dvaz1GYWxzZSk6CiAgICAgaWYgdmVyYm9zZToKQEAgLTQ2LDE5MSArNDYsMjA5IEBACiAgICAgICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgICAgIHByaW50KCd5ZXMnKQogCitkZWYgdGVzdGNvbW1vbihmb3JtYXRzdHIsIGFyZ3MsIG91dHB1dD1Ob25lLCBsaW1pdD1Ob25lLCBvdmVyZmxvd29rPUZhbHNlKToKKyAgICAjIGlmIGZvcm1hdHN0ciBpcyBhIHN0ciwgdGVzdCBzdHIsIGJ5dGVzLCBhbmQgYnl0ZWFycmF5OworICAgICMgb3RoZXJ3aXNlLCB0ZXN0IGJ5dGVzIGFuZCBieXRlYXJyeQorICAgIGlmIGlzaW5zdGFuY2UoZm9ybWF0c3RyLCBzdHIpOgorICAgICAgICB0ZXN0Zm9ybWF0KGZvcm1hdHN0ciwgYXJncywgb3V0cHV0LCBsaW1pdCwgb3ZlcmZsb3dvaykKKyAgICAgICAgYl9mb3JtYXQgPSBmb3JtYXRzdHIuZW5jb2RlKCdhc2NpaScpCisgICAgZWxzZToKKyAgICAgICAgYl9mb3JtYXQgPSBmb3JtYXRzdHIKKyAgICBiYV9mb3JtYXQgPSBieXRlYXJyYXkoYl9mb3JtYXQpCisgICAgYl9hcmdzID0gW10KKyAgICBpZiBub3QgaXNpbnN0YW5jZShhcmdzLCB0dXBsZSk6CisgICAgICAgIGFyZ3MgPSAoYXJncywgKQorICAgIGJfYXJncyA9IHR1cGxlKGFyZ3MpCisgICAgaWYgb3V0cHV0IGlzIE5vbmU6CisgICAgICAgIGJfb3V0cHV0ID0gYmFfb3V0cHV0ID0gTm9uZQorICAgIGVsc2U6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uob3V0cHV0LCBzdHIpOgorICAgICAgICAgICAgYl9vdXRwdXQgPSBvdXRwdXQuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiX291dHB1dCA9IG91dHB1dAorICAgICAgICBiYV9vdXRwdXQgPSBieXRlYXJyYXkoYl9vdXRwdXQpCisgICAgdGVzdGZvcm1hdChiX2Zvcm1hdCwgYl9hcmdzLCBiX291dHB1dCwgbGltaXQsIG92ZXJmbG93b2spCisgICAgdGVzdGZvcm1hdChiYV9mb3JtYXQsIGJfYXJncywgYmFfb3V0cHV0LCBsaW1pdCwgb3ZlcmZsb3dvaykKKwogCiBjbGFzcyBGb3JtYXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9mb3JtYXQoc2VsZik6Ci0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMWQiLCAoMSwpLCAiMSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuKmQiLCAoc3lzLm1heHNpemUsMSksIG92ZXJmbG93b2s9VHJ1ZSkgICMgZXhwZWN0IG92ZXJmbG93Ci0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMTAwZCIsICgxLCksICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcKKworICAgIGRlZiB0ZXN0X2NvbW1vbl9mb3JtYXQoc2VsZik6CisgICAgICAgICMgdGVzdCB0aGUgZm9ybWF0IGlkZW50aWZpZXJzIHRoYXQgd29yayB0aGUgc2FtZSBhY3Jvc3MKKyAgICAgICAgIyBzdHIsIGJ5dGVzLCBhbmQgYnl0ZWFycmF5cyAoaW50ZWdlciwgZmxvYXQsIG9jdCwgaGV4KQorICAgICAgICB0ZXN0Y29tbW9uKCIlLjFkIiwgKDEsKSwgIjEiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLipkIiwgKHN5cy5tYXhzaXplLDEpLCBvdmVyZmxvd29rPVRydWUpICAjIGV4cGVjdCBvdmVyZmxvdworICAgICAgICB0ZXN0Y29tbW9uKCIlLjEwMGQiLCAoMSwpLCAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnCiAgICAgICAgICAgICAgICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnCiAgICAgICAgICAgICAgICAgICcwMDAwMDAwMScsIG92ZXJmbG93b2s9VHJ1ZSkKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuMTE3eCIsICgxLCksICcweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJworICAgICAgICB0ZXN0Y29tbW9uKCIlIy4xMTd4IiwgKDEsKSwgJzB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnCiAgICAgICAgICAgICAgICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnCiAgICAgICAgICAgICAgICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxJywKICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dvaz1UcnVlKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIy4xMTh4IiwgKDEsKSwgJzB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnCisgICAgICAgIHRlc3Rjb21tb24oIiUjLjExOHgiLCAoMSwpLCAnMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcKICAgICAgICAgICAgICAgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcKICAgICAgICAgICAgICAgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxJywKICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dvaz1UcnVlKQogCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVmIiwgKDEuMCwpLCAiMS4wMDAwMDAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlZiIsICgxLjAsKSwgIjEuMDAwMDAwIikKICAgICAgICAgIyB0aGVzZSBhcmUgdHJ5aW5nIHRvIHRlc3QgdGhlIGxpbWl0cyBvZiB0aGUgaW50ZXJuYWwgbWFnaWMtbnVtYmVyLWxlbmd0aAogICAgICAgICAjIGZvcm1hdHRpbmcgYnVmZmVyLCBpZiB0aGF0IG51bWJlciBjaGFuZ2VzIHRoZW4gdGhlc2UgdGVzdHMgYXJlIGxlc3MKICAgICAgICAgIyBlZmZlY3RpdmUKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuKmciLCAoMTA5LCAtMS5lKzQ5LzMuKSkKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuKmciLCAoMTEwLCAtMS5lKzQ5LzMuKSkKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuKmciLCAoMTEwLCAtMS5lKzEwMC8zLikpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLipnIiwgKDEwOSwgLTEuZSs0OS8zLikpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLipnIiwgKDExMCwgLTEuZSs0OS8zLikpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLipnIiwgKDExMCwgLTEuZSsxMDAvMy4pKQogICAgICAgICAjIHRlc3Qgc29tZSByaWRpY3Vsb3VzbHkgbGFyZ2UgcHJlY2lzaW9uLCBleHBlY3Qgb3ZlcmZsb3cKLSAgICAgICAgdGVzdGZvcm1hdCgnJTEyLipmJywgKDEyMzQ1NiwgMS4wKSkKKyAgICAgICAgdGVzdGNvbW1vbignJTEyLipmJywgKDEyMzQ1NiwgMS4wKSkKIAogICAgICAgICAjIGNoZWNrIGZvciBpbnRlcm5hbCBvdmVyZmxvdyB2YWxpZGF0aW9uIG9uIGxlbmd0aCBvZiBwcmVjaXNpb24KICAgICAgICAgIyB0aGVzZSB0ZXN0cyBzaG91bGQgbm8gbG9uZ2VyIGNhdXNlIG92ZXJmbG93IGluIFB5dGhvbgogICAgICAgICAjIDIuNy8zLjEgYW5kIGxhdGVyLgotICAgICAgICB0ZXN0Zm9ybWF0KCIlIy4qZyIsICgxMTAsIC0xLmUrMTAwLzMuKSkKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuKkciLCAoMTEwLCAtMS5lKzEwMC8zLikpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLipmIiwgKDExMCwgLTEuZSsxMDAvMy4pKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIy4qRiIsICgxMTAsIC0xLmUrMTAwLzMuKSkKKyAgICAgICAgdGVzdGNvbW1vbigiJSMuKmciLCAoMTEwLCAtMS5lKzEwMC8zLikpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLipHIiwgKDExMCwgLTEuZSsxMDAvMy4pKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy4qZiIsICgxMTAsIC0xLmUrMTAwLzMuKSkKKyAgICAgICAgdGVzdGNvbW1vbigiJSMuKkYiLCAoMTEwLCAtMS5lKzEwMC8zLikpCiAgICAgICAgICMgRm9ybWF0dGluZyBvZiBpbnRlZ2Vycy4gT3ZlcmZsb3cgaXMgbm90IG9rCi0gICAgICAgIHRlc3Rmb3JtYXQoIiV4IiwgMTAsICJhIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJXgiLCAxMDAwMDAwMDAwMDAsICIxNzQ4NzZlODAwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJW8iLCAxMCwgIjEyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJW8iLCAxMDAwMDAwMDAwMDAsICIxMzUxMDM1NTY0MDAwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJWQiLCAxMCwgIjEwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJWQiLCAxMDAwMDAwMDAwMDAsICIxMDAwMDAwMDAwMDAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIleCIsIDEwLCAiYSIpCisgICAgICAgIHRlc3Rjb21tb24oIiV4IiwgMTAwMDAwMDAwMDAwLCAiMTc0ODc2ZTgwMCIpCisgICAgICAgIHRlc3Rjb21tb24oIiVvIiwgMTAsICIxMiIpCisgICAgICAgIHRlc3Rjb21tb24oIiVvIiwgMTAwMDAwMDAwMDAwLCAiMTM1MTAzNTU2NDAwMCIpCisgICAgICAgIHRlc3Rjb21tb24oIiVkIiwgMTAsICIxMCIpCisgICAgICAgIHRlc3Rjb21tb24oIiVkIiwgMTAwMDAwMDAwMDAwLCAiMTAwMDAwMDAwMDAwIikKICAgICAgICAgYmlnID0gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgYmlnLCAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJWQiLCAtYmlnLCAiLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiU1ZCIsIC1iaWcsICItMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTMxZCIsIC1iaWcsICItMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTMyZCIsIC1iaWcsICIgLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUtMzJkIiwgLWJpZywgIi0xMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAgIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTAzMmQiLCAtYmlnLCAiLTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLTAzMmQiLCAtYmlnLCAiLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlMDM0ZCIsIC1iaWcsICItMDAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTAzNGQiLCBiaWcsICIwMDAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTArMzRkIiwgYmlnLCAiKzAwMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUrMzRkIiwgYmlnLCAiICAgKzEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUzNGQiLCBiaWcsICIgICAgMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS4yZCIsIGJpZywgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMzBkIiwgYmlnLCAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS4zMWQiLCBiaWcsICIwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTMyLjMxZCIsIGJpZywgIiAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJWQiLCBmbG9hdChiaWcpLCAiMTIzNDU2X19fX19fX19fX19fX19fX19fX19fX19fIiwgNikKKyAgICAgICAgdGVzdGNvbW1vbigiJWQiLCBiaWcsICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlZCIsIC1iaWcsICItMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTVkIiwgLWJpZywgIi0xMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMzFkIiwgLWJpZywgIi0xMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMzJkIiwgLWJpZywgIiAtMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJS0zMmQiLCAtYmlnLCAiLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMDMyZCIsIC1iaWcsICItMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUtMDMyZCIsIC1iaWcsICItMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwICIpCisgICAgICAgIHRlc3Rjb21tb24oIiUwMzRkIiwgLWJpZywgIi0wMDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMDM0ZCIsIGJpZywgIjAwMDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMCszNGQiLCBiaWcsICIrMDAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSszNGQiLCBiaWcsICIgICArMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTM0ZCIsIGJpZywgIiAgICAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLjJkIiwgYmlnLCAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJS4zMGQiLCBiaWcsICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLjMxZCIsIGJpZywgIjAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMzIuMzFkIiwgYmlnLCAiIDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlZCIsIGZsb2F0KGJpZyksICIxMjM0NTZfX19fX19fX19fX19fX19fX19fX19fX18iLCA2KQogICAgICAgICBiaWcgPSAweDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSAgIyAyMSBoZXggZGlnaXRzCi0gICAgICAgIHRlc3Rmb3JtYXQoIiV4IiwgYmlnLCAiMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJXgiLCAtYmlnLCAiLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiU1eCIsIC1iaWcsICItMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTIyeCIsIC1iaWcsICItMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTIzeCIsIC1iaWcsICIgLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUtMjN4IiwgLWJpZywgIi0xMjM0NTY3ODkwYWJjZGVmMTIzNDUgIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTAyM3giLCAtYmlnLCAiLTAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLTAyM3giLCAtYmlnLCAiLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlMDI1eCIsIC1iaWcsICItMDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTAyNXgiLCBiaWcsICIwMDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTArMjV4IiwgYmlnLCAiKzAwMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUrMjV4IiwgYmlnLCAiICAgKzEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUyNXgiLCBiaWcsICIgICAgMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS4yeCIsIGJpZywgIjEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMjF4IiwgYmlnLCAiMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS4yMngiLCBiaWcsICIwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTIzLjIyeCIsIGJpZywgIiAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS0yMy4yMngiLCBiaWcsICIwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1ICIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVYIiwgYmlnLCAiMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSNYIiwgYmlnLCAiMFgxMjM0NTY3ODkwQUJDREVGMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI3giLCBiaWcsICIweDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjeCIsIC1iaWcsICItMHgxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIy4yM3giLCAtYmlnLCAiLTB4MDAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIysuMjN4IiwgYmlnLCAiKzB4MDAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIyAuMjN4IiwgYmlnLCAiIDB4MDAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIysuMjNYIiwgYmlnLCAiKzBYMDAxMjM0NTY3ODkwQUJDREVGMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIy0rLjIzWCIsIGJpZywgIiswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMtKzI2LjIzWCIsIGJpZywgIiswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMtKzI3LjIzWCIsIGJpZywgIiswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1ICIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjKzI3LjIzWCIsIGJpZywgIiArMFgwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiV4IiwgYmlnLCAiMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJXgiLCAtYmlnLCAiLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiU1eCIsIC1iaWcsICItMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJTIyeCIsIC1iaWcsICItMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJTIzeCIsIC1iaWcsICIgLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUtMjN4IiwgLWJpZywgIi0xMjM0NTY3ODkwYWJjZGVmMTIzNDUgIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAyM3giLCAtYmlnLCAiLTAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLTAyM3giLCAtYmlnLCAiLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMDI1eCIsIC1iaWcsICItMDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAyNXgiLCBiaWcsICIwMDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJTArMjV4IiwgYmlnLCAiKzAwMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUrMjV4IiwgYmlnLCAiICAgKzEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUyNXgiLCBiaWcsICIgICAgMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJS4yeCIsIGJpZywgIjEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUuMjF4IiwgYmlnLCAiMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJS4yMngiLCBiaWcsICIwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJTIzLjIyeCIsIGJpZywgIiAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJS0yMy4yMngiLCBiaWcsICIwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1ICIpCisgICAgICAgIHRlc3Rjb21tb24oIiVYIiwgYmlnLCAiMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJSNYIiwgYmlnLCAiMFgxMjM0NTY3ODkwQUJDREVGMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI3giLCBiaWcsICIweDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjeCIsIC1iaWcsICItMHgxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy4yM3giLCAtYmlnLCAiLTB4MDAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIysuMjN4IiwgYmlnLCAiKzB4MDAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIyAuMjN4IiwgYmlnLCAiIDB4MDAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIysuMjNYIiwgYmlnLCAiKzBYMDAxMjM0NTY3ODkwQUJDREVGMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy0rLjIzWCIsIGJpZywgIiswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMtKzI2LjIzWCIsIGJpZywgIiswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMtKzI3LjIzWCIsIGJpZywgIiswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1ICIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjKzI3LjIzWCIsIGJpZywgIiArMFgwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCiAgICAgICAgICMgbmV4dCBvbmUgZ2V0cyB0d28gbGVhZGluZyB6ZXJvZXMgZnJvbSBwcmVjaXNpb24sIGFuZCBhbm90aGVyIGZyb20gdGhlCiAgICAgICAgICMgMCBmbGFnIGFuZCB0aGUgd2lkdGgKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMrMDI3LjIzWCIsIGJpZywgIiswWDAwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjKzAyNy4yM1giLCBiaWcsICIrMFgwMDAxMjM0NTY3ODkwQUJDREVGMTIzNDUiKQogICAgICAgICAjIHNhbWUsIGV4Y2VwdCBubyAwIGZsYWcKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMrMjcuMjNYIiwgYmlnLCAiICswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0ZXN0Zm9ybWF0KCIleCIsIGZsb2F0KGJpZyksICIxMjM0NTZfX19fX19fX19fX19fX18iLCA2KQorICAgICAgICB0ZXN0Y29tbW9uKCIlIysyNy4yM1giLCBiaWcsICIgKzBYMDAxMjM0NTY3ODkwQUJDREVGMTIzNDUiKQogICAgICAgICBiaWcgPSAwbzEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwICAjIDMyIG9jdGFsIGRpZ2l0cwotICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIGJpZywgIjEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJW8iLCAtYmlnLCAiLTEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTVvIiwgLWJpZywgIi0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUzM28iLCAtYmlnLCAiLTEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTM0byIsIC1iaWcsICIgLTEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS0zNG8iLCAtYmlnLCAiLTEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwICIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwMzRvIiwgLWJpZywgIi0wMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLTAzNG8iLCAtYmlnLCAiLTEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwICIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwMzZvIiwgLWJpZywgIi0wMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwMzZvIiwgYmlnLCAiMDAwMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTArMzZvIiwgYmlnLCAiKzAwMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSszNm8iLCBiaWcsICIgICArMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlMzZvIiwgYmlnLCAiICAgIDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS4ybyIsIGJpZywgIjEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS4zMm8iLCBiaWcsICIxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMzNvIiwgYmlnLCAiMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTM0LjMzbyIsIGJpZywgIiAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLTM0LjMzbyIsIGJpZywgIjAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIGJpZywgIjEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSNvIiwgYmlnLCAiMG8xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjbyIsIC1iaWcsICItMG8xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLjM0byIsIC1iaWcsICItMG8wMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMrLjM0byIsIGJpZywgIiswbzAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIyAuMzRvIiwgYmlnLCAiIDBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjKy4zNG8iLCBiaWcsICIrMG8wMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMtKy4zNG8iLCBiaWcsICIrMG8wMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMtKzM3LjM0byIsIGJpZywgIiswbzAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIyszNy4zNG8iLCBiaWcsICIrMG8wMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJW8iLCBiaWcsICIxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiVvIiwgLWJpZywgIi0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiU1byIsIC1iaWcsICItMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMzNvIiwgLWJpZywgIi0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUzNG8iLCAtYmlnLCAiIC0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUtMzRvIiwgLWJpZywgIi0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMDM0byIsIC1iaWcsICItMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJS0wMzRvIiwgLWJpZywgIi0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMDM2byIsIC1iaWcsICItMDAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMDM2byIsIGJpZywgIjAwMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUwKzM2byIsIGJpZywgIiswMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUrMzZvIiwgYmlnLCAiICAgKzEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTM2byIsIGJpZywgIiAgICAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUuMm8iLCBiaWcsICIxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUuMzJvIiwgYmlnLCAiMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLjMzbyIsIGJpZywgIjAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUzNC4zM28iLCBiaWcsICIgMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJS0zNC4zM28iLCBiaWcsICIwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAgIikKKyAgICAgICAgdGVzdGNvbW1vbigiJW8iLCBiaWcsICIxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjbyIsIGJpZywgIjBvMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI28iLCAtYmlnLCAiLTBvMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy4zNG8iLCAtYmlnLCAiLTBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjKy4zNG8iLCBiaWcsICIrMG8wMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMgLjM0byIsIGJpZywgIiAwbzAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIysuMzRvIiwgYmlnLCAiKzBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLSsuMzRvIiwgYmlnLCAiKzBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLSszNy4zNG8iLCBiaWcsICIrMG8wMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMrMzcuMzRvIiwgYmlnLCAiKzBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCiAgICAgICAgICMgbmV4dCBvbmUgZ2V0cyBvbmUgbGVhZGluZyB6ZXJvIGZyb20gcHJlY2lzaW9uCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMzNvIiwgYmlnLCAiMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJS4zM28iLCBiaWcsICIwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQogICAgICAgICAjIGJhc2UgbWFya2VyIHNob3VsZG4ndCBjaGFuZ2UgdGhhdCwgc2luY2UgIjAiIGlzIHJlZHVuZGFudAotICAgICAgICB0ZXN0Zm9ybWF0KCIlIy4zM28iLCBiaWcsICIwbzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLjMzbyIsIGJpZywgIjBvMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKICAgICAgICAgIyBidXQgcmVkdWNlIHByZWNpc2lvbiwgYW5kIGJhc2UgbWFya2VyIHNob3VsZCBhZGQgYSB6ZXJvCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLjMybyIsIGJpZywgIjBvMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy4zMm8iLCBiaWcsICIwbzEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKICAgICAgICAgIyBvbmUgbGVhZGluZyB6ZXJvIGZyb20gcHJlY2lzaW9uLCBhbmQgYW5vdGhlciBmcm9tICIwIiBmbGFnICYgd2lkdGgKLSAgICAgICAgdGVzdGZvcm1hdCgiJTAzNC4zM28iLCBiaWcsICIwMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAzNC4zM28iLCBiaWcsICIwMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKICAgICAgICAgIyBiYXNlIG1hcmtlciBzaG91bGRuJ3QgY2hhbmdlIHRoYXQKLSAgICAgICAgdGVzdGZvcm1hdCgiJTAjMzQuMzNvIiwgYmlnLCAiMG8wMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHRlc3Rmb3JtYXQoIiVvIiwgZmxvYXQoYmlnKSwgIjEyMzQ1Nl9fX19fX19fX19fX19fX19fX19fX19fX19fIiwgNikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAjMzQuMzNvIiwgYmlnLCAiMG8wMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQogICAgICAgICAjIFNvbWUgc21hbGwgaW50cywgaW4gYm90aCBQeXRob24gaW50IGFuZCBmbGF2b3JzKS4KLSAgICAgICAgdGVzdGZvcm1hdCgiJWQiLCA0MiwgIjQyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJWQiLCAtNDIsICItNDIiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlZCIsIDQyLCAiNDIiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlZCIsIC00MiwgIi00MiIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgNDIuMCwgIjQyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSN4IiwgMSwgIjB4MSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjeCIsIDEsICIweDEiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI1giLCAxLCAiMFgxIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSNYIiwgMSwgIjBYMSIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgdGVzdGZvcm1hdCgiJSN4IiwgMS4wLCAiMHgxIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSNvIiwgMSwgIjBvMSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjbyIsIDEsICIwbzEiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI28iLCAwLCAiMG8wIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSNvIiwgMCwgIjBvMCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVvIiwgMCwgIjAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIDAsICIwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJWQiLCAwLCAiMCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgMCwgIjAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI3giLCAwLCAiMHgwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSN4IiwgMCwgIjB4MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjWCIsIDAsICIwWDAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI1giLCAwLCAiMFgwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJXgiLCAweDQyLCAiNDIiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIleCIsIC0weDQyLCAiLTQyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJXgiLCAweDQyLCAiNDIiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIleCIsIC0weDQyLCAiLTQyIikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0ZXN0Zm9ybWF0KCIleCIsIGZsb2F0KDB4NDIpLCAiNDIiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIDBvNDIsICI0MiIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVvIiwgLTBvNDIsICItNDIiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIDBvNDIsICI0MiIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVvIiwgLTBvNDIsICItNDIiKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHRlc3Rmb3JtYXQoIiVvIiwgZmxvYXQoMG80MiksICI0MiIpCisgICAgICAgIHRlc3Rjb21tb24oIiVkIiwgNDIsICI0MiIpCisgICAgICAgIHRlc3Rjb21tb24oIiVkIiwgLTQyLCAiLTQyIikKKyAgICAgICAgdGVzdGNvbW1vbigiJWQiLCA0MiwgIjQyIikKKyAgICAgICAgdGVzdGNvbW1vbigiJWQiLCAtNDIsICItNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlZCIsIDQyLjAsICI0MiIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjeCIsIDEsICIweDEiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI3giLCAxLCAiMHgxIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSNYIiwgMSwgIjBYMSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjWCIsIDEsICIwWDEiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI28iLCAxLCAiMG8xIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSNvIiwgMSwgIjBvMSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjbyIsIDAsICIwbzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI28iLCAwLCAiMG8wIikKKyAgICAgICAgdGVzdGNvbW1vbigiJW8iLCAwLCAiMCIpCisgICAgICAgIHRlc3Rjb21tb24oIiVvIiwgMCwgIjAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlZCIsIDAsICIwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJWQiLCAwLCAiMCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjeCIsIDAsICIweDAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI3giLCAwLCAiMHgwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSNYIiwgMCwgIjBYMCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjWCIsIDAsICIwWDAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIleCIsIDB4NDIsICI0MiIpCisgICAgICAgIHRlc3Rjb21tb24oIiV4IiwgLTB4NDIsICItNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIleCIsIDB4NDIsICI0MiIpCisgICAgICAgIHRlc3Rjb21tb24oIiV4IiwgLTB4NDIsICItNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlbyIsIDBvNDIsICI0MiIpCisgICAgICAgIHRlc3Rjb21tb24oIiVvIiwgLTBvNDIsICItNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlbyIsIDBvNDIsICI0MiIpCisgICAgICAgIHRlc3Rjb21tb24oIiVvIiwgLTBvNDIsICItNDIiKQorICAgICAgICAjIGFsdGVybmF0ZSBmbG9hdCBmb3JtYXR0aW5nCisgICAgICAgIHRlc3Rjb21tb24oJyVnJywgMS4xLCAnMS4xJykKKyAgICAgICAgdGVzdGNvbW1vbignJSNnJywgMS4xLCAnMS4xMDAwMCcpCisKKyAgICBkZWYgdGVzdF9zdHJfZm9ybWF0KHNlbGYpOgogICAgICAgICB0ZXN0Zm9ybWF0KCIlciIsICJcdTAzNzgiLCAiJ1xcdTAzNzgnIikgICMgbm9uIHByaW50YWJsZQogICAgICAgICB0ZXN0Zm9ybWF0KCIlYSIsICJcdTAzNzgiLCAiJ1xcdTAzNzgnIikgICMgbm9uIHByaW50YWJsZQogICAgICAgICB0ZXN0Zm9ybWF0KCIlciIsICJcdTAzNzQiLCAiJ1x1MDM3NCciKSAgICMgcHJpbnRhYmxlCiAgICAgICAgIHRlc3Rmb3JtYXQoIiVhIiwgIlx1MDM3NCIsICInXFx1MDM3NCciKSAgIyBwcmludGFibGUKIAotICAgICAgICAjIGFsdGVybmF0ZSBmbG9hdCBmb3JtYXR0aW5nCi0gICAgICAgIHRlc3Rmb3JtYXQoJyVnJywgMS4xLCAnMS4xJykKLSAgICAgICAgdGVzdGZvcm1hdCgnJSNnJywgMS4xLCAnMS4xMDAwMCcpCi0KLSAgICAgICAgIyBUZXN0IGV4Y2VwdGlvbiBmb3IgdW5rbm93biBmb3JtYXQgY2hhcmFjdGVycworICAgICAgICAjIFRlc3QgZXhjZXB0aW9uIGZvciB1bmtub3duIGZvcm1hdCBjaGFyYWN0ZXJzLCBldGMuCiAgICAgICAgIGlmIHZlcmJvc2U6CiAgICAgICAgICAgICBwcmludCgnVGVzdGluZyBleGNlcHRpb25zJykKICAgICAgICAgZGVmIHRlc3RfZXhjKGZvcm1hdHN0ciwgYXJncywgZXhjZXB0aW9uLCBleGNtc2cpOgpAQCAtMjU0LDExICsyNzIsMTA4IEBACiAgICAgICAgICN0ZXN0X2V4Yyh1bmljb2RlKCdhYmMgJVx1MzAwMCcsJ3Jhdy11bmljb2RlLWVzY2FwZScpLCAxLCBWYWx1ZUVycm9yLAogICAgICAgICAjICAgICAgICAgInVuc3VwcG9ydGVkIGZvcm1hdCBjaGFyYWN0ZXIgJz8nICgweDMwMDApIGF0IGluZGV4IDUiKQogICAgICAgICB0ZXN0X2V4YygnJWQnLCAnMScsIFR5cGVFcnJvciwgIiVkIGZvcm1hdDogYSBudW1iZXIgaXMgcmVxdWlyZWQsIG5vdCBzdHIiKQorICAgICAgICB0ZXN0X2V4YygnJXgnLCAnMScsIFR5cGVFcnJvciwgIiV4IGZvcm1hdDogYW4gaW50ZWdlciBpcyByZXF1aXJlZCwgbm90IHN0ciIpCisgICAgICAgIHRlc3RfZXhjKCcleCcsIDMuMTQsIFR5cGVFcnJvciwgIiV4IGZvcm1hdDogYW4gaW50ZWdlciBpcyByZXF1aXJlZCwgbm90IGZsb2F0IikKICAgICAgICAgdGVzdF9leGMoJyVnJywgJzEnLCBUeXBlRXJyb3IsICJhIGZsb2F0IGlzIHJlcXVpcmVkIikKICAgICAgICAgdGVzdF9leGMoJ25vIGZvcm1hdCcsICcxJywgVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAibm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBzdHJpbmcgZm9ybWF0dGluZyIpCi0gICAgICAgIHRlc3RfZXhjKCdubyBmb3JtYXQnLCAnMScsIFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgc3RyaW5nIGZvcm1hdHRpbmciKQorICAgICAgICB0ZXN0X2V4YygnJWMnLCAtMSwgT3ZlcmZsb3dFcnJvciwgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApIikKKyAgICAgICAgdGVzdF9leGMoJyVjJywgc3lzLm1heHVuaWNvZGUrMSwgT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApIikKKyAgICAgICAgI3Rlc3RfZXhjKCclYycsIDIqKjEyOCwgT3ZlcmZsb3dFcnJvciwgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApIikKKyAgICAgICAgdGVzdF9leGMoJyVjJywgMy4xNCwgVHlwZUVycm9yLCAiJWMgcmVxdWlyZXMgaW50IG9yIGNoYXIiKQorICAgICAgICB0ZXN0X2V4YygnJWMnLCAnYWInLCBUeXBlRXJyb3IsICIlYyByZXF1aXJlcyBpbnQgb3IgY2hhciIpCisgICAgICAgIHRlc3RfZXhjKCclYycsIGIneCcsIFR5cGVFcnJvciwgIiVjIHJlcXVpcmVzIGludCBvciBjaGFyIikKKworICAgICAgICBpZiBtYXhzaXplID09IDIqKjMxLTE6CisgICAgICAgICAgICAjIGNyYXNoZXMgMi4yLjEgYW5kIGVhcmxpZXI6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIiUqZCIlKG1heHNpemUsIC0xMjcpCisgICAgICAgICAgICBleGNlcHQgTWVtb3J5RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBUZXN0RmFpbGVkKCciJSpkIiUobWF4c2l6ZSwgLTEyNykgc2hvdWxkIGZhaWwnKQorCisgICAgZGVmIHRlc3RfYnl0ZXNfYW5kX2J5dGVhcnJheV9mb3JtYXQoc2VsZik6CisgICAgICAgICMgJWMgd2lsbCBpbnNlcnQgYSBzaW5nbGUgYnl0ZSwgZWl0aGVyIGZyb20gYW4gaW50IGluIHJhbmdlKDI1NiksIG9yCisgICAgICAgICMgZnJvbSBhIGJ5dGVzIGFyZ3VtZW50IG9mIGxlbmd0aCAxLCBub3QgZnJvbSBhIHN0ci4KKyAgICAgICAgdGVzdGNvbW1vbihiIiVjIiwgNywgYiJceDA3IikKKyAgICAgICAgdGVzdGNvbW1vbihiIiVjIiwgYiJaIiwgYiJaIikKKyAgICAgICAgdGVzdGNvbW1vbihiIiVjIiwgYnl0ZWFycmF5KGIiWiIpLCBiIloiKQorICAgICAgICAjICViIHdpbGwgaW5zZXJ0IGEgc2VyaWVzIG9mIGJ5dGVzLCBlaXRoZXIgZnJvbSBhIHR5cGUgdGhhdCBzdXBwb3J0cworICAgICAgICAjIHRoZSBQeV9idWZmZXIgcHJvdG9jb2wsIG9yIHNvbWV0aGluZyB0aGF0IGhhcyBhIF9fYnl0ZXNfXyBtZXRob2QKKyAgICAgICAgY2xhc3MgRmFrZUJ5dGVzKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19ieXRlc19fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBiJzEyMycKKyAgICAgICAgZmIgPSBGYWtlQnl0ZXMoKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJWIiLCBiImFiYyIsIGIiYWJjIikKKyAgICAgICAgdGVzdGNvbW1vbihiIiViIiwgYnl0ZWFycmF5KGIiZGVmIiksIGIiZGVmIikKKyAgICAgICAgdGVzdGNvbW1vbihiIiViIiwgZmIsIGIiMTIzIikKKyAgICAgICAgIyAjICVzIGlzIGFuIGFsaWFzIGZvciAlYiAtLSBzaG91bGQgb25seSBiZSB1c2VkIGZvciBQeTIvMyBjb2RlCisgICAgICAgIHRlc3Rjb21tb24oYiIlcyIsIGIiYWJjIiwgYiJhYmMiKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJXMiLCBieXRlYXJyYXkoYiJkZWYiKSwgYiJkZWYiKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJXMiLCBmYiwgYiIxMjMiKQorICAgICAgICAjICVhIHdpbGwgZ2l2ZSB0aGUgZXF1aXZhbGVudCBvZgorICAgICAgICAjIHJlcHIoc29tZV9vYmopLmVuY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpCisgICAgICAgIHRlc3Rjb21tb24oYiIlYSIsIDMuMTQsIGIiMy4xNCIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlYSIsIGIiZ2hpIiwgYiJiJ2doaSciKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJWEiLCAiamtsIiwgYiInamtsJyIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlYSIsICJcdTA1NDQiLCBiIidcXHUwNTQ0JyIpCisgICAgICAgICMgJXIgaXMgYW4gYWxpYXMgZm9yICVhCisgICAgICAgIHRlc3Rjb21tb24oYiIlciIsIDMuMTQsIGIiMy4xNCIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlciIsIGIiZ2hpIiwgYiJiJ2doaSciKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJXIiLCAiamtsIiwgYiInamtsJyIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlciIsICJcdTA1NDQiLCBiIidcXHUwNTQ0JyIpCisKKyAgICAgICAgIyBUZXN0IGV4Y2VwdGlvbiBmb3IgdW5rbm93biBmb3JtYXQgY2hhcmFjdGVycywgZXRjLgorICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoJ1Rlc3RpbmcgZXhjZXB0aW9ucycpCisgICAgICAgIGRlZiB0ZXN0X2V4Yyhmb3JtYXRzdHIsIGFyZ3MsIGV4Y2VwdGlvbiwgZXhjbXNnKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0ZXN0Zm9ybWF0KGZvcm1hdHN0ciwgYXJncykKKyAgICAgICAgICAgIGV4Y2VwdCBleGNlcHRpb24gYXMgZXhjOgorICAgICAgICAgICAgICAgIGlmIHN0cihleGMpID09IGV4Y21zZzoKKyAgICAgICAgICAgICAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJ5ZXMiKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIHZlcmJvc2U6IHByaW50KCdubycpCisgICAgICAgICAgICAgICAgICAgIHByaW50KCdVbmV4cGVjdGVkICcsIGV4Y2VwdGlvbiwgJzonLCByZXByKHN0cihleGMpKSkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBpZiB2ZXJib3NlOiBwcmludCgnbm8nKQorICAgICAgICAgICAgICAgIHByaW50KCdVbmV4cGVjdGVkIGV4Y2VwdGlvbicpCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVGVzdEZhaWxlZCgnZGlkIG5vdCBnZXQgZXhwZWN0ZWQgZXhjZXB0aW9uOiAlcycgJSBleGNtc2cpCisgICAgICAgIHRlc3RfZXhjKGInJWQnLCAnMScsIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiJWQgZm9ybWF0OiBhIG51bWJlciBpcyByZXF1aXJlZCwgbm90IHN0ciIpCisgICAgICAgIHRlc3RfZXhjKGInJWQnLCBiJzEnLCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIiVkIGZvcm1hdDogYSBudW1iZXIgaXMgcmVxdWlyZWQsIG5vdCBieXRlcyIpCisgICAgICAgIHRlc3RfZXhjKGInJXgnLCAzLjE0LCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIiV4IGZvcm1hdDogYW4gaW50ZWdlciBpcyByZXF1aXJlZCwgbm90IGZsb2F0IikKKyAgICAgICAgdGVzdF9leGMoYiclZycsICcxJywgVHlwZUVycm9yLCAiZmxvYXQgYXJndW1lbnQgcmVxdWlyZWQsIG5vdCBzdHIiKQorICAgICAgICB0ZXN0X2V4YyhiJyVnJywgYicxJywgVHlwZUVycm9yLCAiZmxvYXQgYXJndW1lbnQgcmVxdWlyZWQsIG5vdCBieXRlcyIpCisgICAgICAgIHRlc3RfZXhjKGInbm8gZm9ybWF0JywgNywgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAibm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBieXRlcyBmb3JtYXR0aW5nIikKKyAgICAgICAgdGVzdF9leGMoYidubyBmb3JtYXQnLCBiJzEnLCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIGJ5dGVzIGZvcm1hdHRpbmciKQorICAgICAgICB0ZXN0X2V4YyhiJ25vIGZvcm1hdCcsIGJ5dGVhcnJheShiJzEnKSwgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAibm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBieXRlcyBmb3JtYXR0aW5nIikKKyAgICAgICAgdGVzdF9leGMoYiIlYyIsIC0xLCBPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICIlYyBhcmcgbm90IGluIHJhbmdlKDI1NikiKQorICAgICAgICB0ZXN0X2V4YyhiIiVjIiwgMjU2LCBPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICIlYyBhcmcgbm90IGluIHJhbmdlKDI1NikiKQorICAgICAgICB0ZXN0X2V4YyhiIiVjIiwgMioqMTI4LCBPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICIlYyBhcmcgbm90IGluIHJhbmdlKDI1NikiKQorICAgICAgICB0ZXN0X2V4YyhiIiVjIiwgYiJaYSIsIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiJWMgcmVxdWlyZXMgYW4gaW50ZWdlciBpbiByYW5nZSgyNTYpIG9yIGEgc2luZ2xlIGJ5dGUiKQorICAgICAgICB0ZXN0X2V4YyhiIiVjIiwgIlkiLCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIiVjIHJlcXVpcmVzIGFuIGludGVnZXIgaW4gcmFuZ2UoMjU2KSBvciBhIHNpbmdsZSBieXRlIikKKyAgICAgICAgdGVzdF9leGMoYiIlYyIsIDMuMTQsIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiJWMgcmVxdWlyZXMgYW4gaW50ZWdlciBpbiByYW5nZSgyNTYpIG9yIGEgc2luZ2xlIGJ5dGUiKQorICAgICAgICB0ZXN0X2V4YyhiIiViIiwgIlhjIiwgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICIlYiByZXF1aXJlcyBieXRlcywgb3IgYW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBfX2J5dGVzX18sIG5vdCAnc3RyJyIpCisgICAgICAgIHRlc3RfZXhjKGIiJXMiLCAiV2QiLCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIiViIHJlcXVpcmVzIGJ5dGVzLCBvciBhbiBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIF9fYnl0ZXNfXywgbm90ICdzdHInIikKIAogICAgICAgICBpZiBtYXhzaXplID09IDIqKjMxLTE6CiAgICAgICAgICAgICAjIGNyYXNoZXMgMi4yLjEgYW5kIGVhcmxpZXI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CmluZGV4IDMzMzY1MzIuLjE2OTk4NTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CkBAIC0xLDEzICsxLDE0IEBACiAiIiJUZXN0cyBmb3IgTGliL2ZyYWN0aW9ucy5weS4iIiIKIAogZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCByZXF1aXJlc19JRUVFXzc1NAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzX0lFRUVfNzU0CiBpbXBvcnQgbWF0aAogaW1wb3J0IG51bWJlcnMKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IGZyYWN0aW9ucwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIGZyb20gY29weSBpbXBvcnQgY29weSwgZGVlcGNvcHkKIGZyb20gcGlja2xlIGltcG9ydCBkdW1wcywgbG9hZHMKIEYgPSBmcmFjdGlvbnMuRnJhY3Rpb24KQEAgLTQ5LDcgKzUwLDcgQEAKICAgICAiIiJUZXN0IGNvbXBhcmlzb24gb2YgRnJhY3Rpb24gd2l0aCBhIG5haXZlIHJhdGlvbmFsIGltcGxlbWVudGF0aW9uLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG51bSwgZGVuKToKLSAgICAgICAgZyA9IGdjZChudW0sIGRlbikKKyAgICAgICAgZyA9IG1hdGguZ2NkKG51bSwgZGVuKQogICAgICAgICBzZWxmLm51bSA9IG51bSAvLyBnCiAgICAgICAgIHNlbGYuZGVuID0gZGVuIC8vIGcKIApAQCAtODMsMTYgKzg0LDI2IEBACiBjbGFzcyBHY2RUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0TWlzYyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnY2QoMCwgMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2NkKDEsIDApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xLCBnY2QoLTEsIDApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdjZCgwLCAxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgZ2NkKDAsIC0xKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnY2QoNywgMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEsIGdjZCg3LCAtMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2NkKC0yMywgMTUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyLCBnY2QoMTIwLCA4NCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEyLCBnY2QoODQsIC0xMjApKQorICAgICAgICAjIGZyYWN0aW9ucy5nY2QoKSBpcyBkZXByZWNhdGVkCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgcidmcmFjdGlvbnNcLmdjZCcpOgorICAgICAgICAgICAgZ2NkKDEsIDEpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCdpZ25vcmUnLCByJ2ZyYWN0aW9uc1wuZ2NkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2NkKDAsIDApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnY2QoMSwgMCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xLCBnY2QoLTEsIDApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnY2QoMCwgMSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xLCBnY2QoMCwgLTEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnY2QoNywgMSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xLCBnY2QoNywgLTEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnY2QoLTIzLCAxNSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyLCBnY2QoMTIwLCA4NCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMiwgZ2NkKDg0LCAtMTIwKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKDEyMC4wLCA4NCksIDEyLjApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgxMjAsIDg0LjApLCAxMi4wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoRigxMjApLCBGKDg0KSksIEYoMTIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoRigxMjAsIDc3KSwgRig4NCwgNTUpKSwgRigxMiwgMzg1KSkKIAogCiBkZWYgX2NvbXBvbmVudHMocik6CkBAIC0zMzAsNyArMzQxLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFscyhGKC0yLCAxMCksIHJvdW5kKEYoLTE1LCAxMDApLCAxKSkKICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFscyhGKC0yLCAxMCksIHJvdW5kKEYoLTI1LCAxMDApLCAxKSkKIAotCiAgICAgZGVmIHRlc3RBcml0aG1ldGljKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEYoMSwgMiksIEYoMSwgMTApICsgRigyLCA1KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGKC0zLCAxMCksIEYoMSwgMTApIC0gRigyLCA1KSkKQEAgLTQwMiw2ICs0MTIsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWxzKDIuMCAsIDQgKiogRigxLCAyKSkKICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFscygwLjI1LCAyLjAgKiogRigtMiwgMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbHMoMS4wICsgMGosICgxLjAgKyAwaikgKiogRigxLCAxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCBvcGVyYXRvci5wb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgIEYoMCwgMSksIC0yKQogCiAgICAgZGVmIHRlc3RNaXhpbmdXaXRoRGVjaW1hbChzZWxmKToKICAgICAgICAgIyBEZWNpbWFsIHJlZnVzZXMgbWl4ZWQgYXJpdGhtZXRpYyAoYnV0IG5vdCBtaXhlZCBjb21wYXJpc29ucykKQEAgLTYwNSw4ICs2MTcsNSBAQAogICAgICAgICByID0gRigxMywgNykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHIsICdhJywgMTApCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoRnJhY3Rpb25UZXN0LCBHY2RUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZyYW1lLnB5IGIvTGliL3Rlc3QvdGVzdF9mcmFtZS5weQppbmRleCBjNDAyZWMzLi4xODlmY2E5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZyYW1lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnJhbWUucHkKQEAgLTE2MSw4ICsxNjEsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlubmVyLmZfbG9jYWxzLCB7fSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKaW5kZXggZDNiZTdkNi4uYWVmNjZkYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKQEAgLTczLDcgKzczLDcgQEAKICAgICAgICAgc3VwZXIoRHVtbXlEVFBIYW5kbGVyLCBzZWxmKS5wdXNoKHdoYXQuZW5jb2RlKCdhc2NpaScpKQogCiAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmKToKLSAgICAgICAgcmFpc2UKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uCiAKIAogY2xhc3MgRHVtbXlGVFBIYW5kbGVyKGFzeW5jaGF0LmFzeW5jX2NoYXQpOgpAQCAtMTE4LDcgKzExOCw3IEBACiAgICAgICAgICAgICBzZWxmLnB1c2goJzU1MCBjb21tYW5kICIlcyIgbm90IHVuZGVyc3Rvb2QuJyAlY21kKQogCiAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmKToKLSAgICAgICAgcmFpc2UKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uCiAKICAgICBkZWYgcHVzaChzZWxmLCBkYXRhKToKICAgICAgICAgYXN5bmNoYXQuYXN5bmNfY2hhdC5wdXNoKHNlbGYsIGRhdGEuZW5jb2RlKCdhc2NpaScpICsgYidcclxuJykKQEAgLTEzNCw3ICsxMzQsNyBAQAogICAgIGRlZiBjbWRfcGFzdihzZWxmLCBhcmcpOgogICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoKSBhcyBzb2NrOgogICAgICAgICAgICAgc29jay5iaW5kKChzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzBdLCAwKSkKLSAgICAgICAgICAgIHNvY2subGlzdGVuKDUpCisgICAgICAgICAgICBzb2NrLmxpc3RlbigpCiAgICAgICAgICAgICBzb2NrLnNldHRpbWVvdXQoVElNRU9VVCkKICAgICAgICAgICAgIGlwLCBwb3J0ID0gc29jay5nZXRzb2NrbmFtZSgpWzoyXQogICAgICAgICAgICAgaXAgPSBpcC5yZXBsYWNlKCcuJywgJywnKTsgcDEgPSBwb3J0IC8gMjU2OyBwMiA9IHBvcnQgJSAyNTYKQEAgLTE1Miw3ICsxNTIsNyBAQAogICAgIGRlZiBjbWRfZXBzdihzZWxmLCBhcmcpOgogICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQ2KSBhcyBzb2NrOgogICAgICAgICAgICAgc29jay5iaW5kKChzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzBdLCAwKSkKLSAgICAgICAgICAgIHNvY2subGlzdGVuKDUpCisgICAgICAgICAgICBzb2NrLmxpc3RlbigpCiAgICAgICAgICAgICBzb2NrLnNldHRpbWVvdXQoVElNRU9VVCkKICAgICAgICAgICAgIHBvcnQgPSBzb2NrLmdldHNvY2tuYW1lKClbMV0KICAgICAgICAgICAgIHNlbGYucHVzaCgnMjI5IGVudGVyaW5nIGV4dGVuZGVkIHBhc3NpdmUgbW9kZSAofHx8JWR8KScgJXBvcnQpCkBAIC0yOTYsNyArMjk2LDcgQEAKICAgICAgICAgcmV0dXJuIDAKIAogICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHJhaXNlCisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbgogCiAKIGlmIHNzbCBpcyBub3QgTm9uZToKQEAgLTM5NCw3ICszOTQsNyBAQAogICAgICAgICAgICAgICAgIHJhaXNlCiAKICAgICAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmKToKLSAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24KIAogICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgICAgICBpZiAoaXNpbnN0YW5jZShzZWxmLnNvY2tldCwgc3NsLlNTTFNvY2tldCkgYW5kCkBAIC02NzAsNyArNjcwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgc2VsZi5jbGllbnQubWxzZCgpKQogICAgICAgICBzZXRfZGF0YSgnJykKICAgICAgICAgZm9yIHggaW4gc2VsZi5jbGllbnQubWxzZCgpOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJ1bmV4cGVjdGVkIGRhdGEgJXMiICUgZGF0YSkKKyAgICAgICAgICAgIHNlbGYuZmFpbCgidW5leHBlY3RlZCBkYXRhICVzIiAlIHgpCiAKICAgICBkZWYgdGVzdF9tYWtlcG9ydChzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmNsaWVudC5tYWtlcG9ydCgpOgpAQCAtOTc5LDcgKzk3OSw3IEBACiAgICAgICAgICMgIDEpIHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgcmVhZHkgdG8gYmUgYWNjZXB0ZWQuCiAgICAgICAgICMgIDIpIHdoZW4gaXQgaXMgc2FmZSBmb3IgdGhlIGNhbGxlciB0byBjbG9zZSB0aGUgY29ubmVjdGlvbgogICAgICAgICAjICAzKSB3aGVuIHdlIGhhdmUgY2xvc2VkIHRoZSBzb2NrZXQKLSAgICAgICAgc2VsZi5zb2NrLmxpc3Rlbig1KQorICAgICAgICBzZWxmLnNvY2subGlzdGVuKCkKICAgICAgICAgIyAoMSkgU2lnbmFsIHRoZSBjYWxsZXIgdGhhdCB3ZSBhcmUgcmVhZHkgdG8gYWNjZXB0IHRoZSBjb25uZWN0aW9uLgogICAgICAgICBzZWxmLmV2dC5zZXQoKQogICAgICAgICB0cnk6CkBAIC0xMDQ5LDE5ICsxMDQ5LDggQEAKICAgICAgICAgZnRwLmNsb3NlKCkKIAogCi1jbGFzcyBUZXN0TmV0cmNEZXByZWNhdGlvbihUZXN0Q2FzZSk6Ci0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGlvbihzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKCksIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKLSAgICAgICAgICAgIGVudlsnSE9NRSddID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgICAgIG9wZW4oJy5uZXRyYycsICd3JykuY2xvc2UoKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICAgICAgZnRwbGliLk5ldHJjKCkKLQotCi0KIGRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0cyA9IFtUZXN0RlRQQ2xhc3MsIFRlc3RUaW1lb3V0cywgVGVzdE5ldHJjRGVwcmVjYXRpb24sCisgICAgdGVzdHMgPSBbVGVzdEZUUENsYXNzLCBUZXN0VGltZW91dHMsCiAgICAgICAgICAgICAgVGVzdElQdjZFbnZpcm9ubWVudCwKICAgICAgICAgICAgICBUZXN0VExTX0ZUUENsYXNzTWl4aW4sIFRlc3RUTFNfRlRQQ2xhc3NdCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnVuY2F0dHJzLnB5IGIvTGliL3Rlc3QvdGVzdF9mdW5jYXR0cnMucHkKaW5kZXggNTA5NGY3Yi4uOGY0ODFiYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdW5jYXR0cnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdW5jYXR0cnMucHkKQEAgLTEsNCArMSwzIEBACi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB0eXBlcwogaW1wb3J0IHVuaXR0ZXN0CiAKQEAgLTM3NCwxMiArMzczLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7J2Zvbyc6ICdiYXInfS5wb3AuX19xdWFsbmFtZV9fLCAnZGljdC5wb3AnKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChGdW5jdGlvblByb3BlcnRpZXNUZXN0LCBJbnN0YW5jZW1ldGhvZEF0dHJUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJiaXRyYXJ5RnVuY3Rpb25BdHRyVGVzdCwgRnVuY3Rpb25EaWN0c1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbkRvY3N0cmluZ1Rlc3QsIENlbGxUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGljTWV0aG9kQXR0cnNUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbHRpbkZ1bmN0aW9uUHJvcGVydGllc1Rlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKaW5kZXggYzBkMjRkOGMuLmNmMGI5NWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IGFiYwogaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgY29weQogZnJvbSBpdGVydG9vbHMgaW1wb3J0IHBlcm11dGF0aW9ucwogaW1wb3J0IHBpY2tsZQogZnJvbSByYW5kb20gaW1wb3J0IGNob2ljZQpAQCAtNyw2ICs4LDEwIEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWFrcmVmIGltcG9ydCBwcm94eQordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB0aHJlYWRpbmcgPSBOb25lCiAKIGltcG9ydCBmdW5jdG9vbHMKIApAQCAtMTMzLDYgKzEzOCwyNSBAQAogICAgICAgICBqb2luID0gc2VsZi5wYXJ0aWFsKCcnLmpvaW4pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoam9pbihkYXRhKSwgJzAxMjM0NTY3ODknKQogCisgICAgZGVmIHRlc3RfbmVzdGVkX29wdGltaXphdGlvbihzZWxmKToKKyAgICAgICAgcGFydGlhbCA9IHNlbGYucGFydGlhbAorICAgICAgICBpbm5lciA9IHBhcnRpYWwoc2lnbmF0dXJlLCAnYXNkZicpCisgICAgICAgIG5lc3RlZCA9IHBhcnRpYWwoaW5uZXIsIGJhcj1UcnVlKQorICAgICAgICBmbGF0ID0gcGFydGlhbChzaWduYXR1cmUsICdhc2RmJywgYmFyPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmF0dXJlKG5lc3RlZCksIHNpZ25hdHVyZShmbGF0KSkKKworICAgIGRlZiB0ZXN0X25lc3RlZF9wYXJ0aWFsX3dpdGhfYXR0cmlidXRlKHNlbGYpOgorICAgICAgICAjIHNlZSBpc3N1ZSAyNTEzNworICAgICAgICBwYXJ0aWFsID0gc2VsZi5wYXJ0aWFsCisKKyAgICAgICAgZGVmIGZvbyhiYXIpOgorICAgICAgICAgICAgcmV0dXJuIGJhcgorCisgICAgICAgIHAgPSBwYXJ0aWFsKGZvbywgJ2ZpcnN0JykKKyAgICAgICAgcDIgPSBwYXJ0aWFsKHAsICdzZWNvbmQnKQorICAgICAgICBwMi5uZXdfYXR0ciA9ICdzcGFtJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLm5ld19hdHRyLCAnc3BhbScpCisKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19mdW5jdG9vbHMsICdyZXF1aXJlcyB0aGUgQyBfZnVuY3Rvb2xzIG1vZHVsZScpCiBjbGFzcyBUZXN0UGFydGlhbEMoVGVzdFBhcnRpYWwsIHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTIyNCw2ICsyNDgsOSBAQAogICAgIGlmIGNfZnVuY3Rvb2xzOgogICAgICAgICBwYXJ0aWFsID0gUGFydGlhbFN1YmNsYXNzCiAKKyAgICAjIHBhcnRpYWwgc3ViY2xhc3NlcyBhcmUgbm90IG9wdGltaXplZCBmb3IgbmVzdGVkIGNhbGxzCisgICAgdGVzdF9uZXN0ZWRfb3B0aW1pemF0aW9uID0gTm9uZQorCiAKIGNsYXNzIFRlc3RQYXJ0aWFsTWV0aG9kKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtODg0LDEyICs5MTEsMzAgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgICAgICBhIDw9IGIKIAotY2xhc3MgVGVzdExSVSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UoNCwgcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIGZvciBuYW1lIGluICdfX2x0X18nLCAnX19ndF9fJywgJ19fbGVfXycsICdfX2dlX18nOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG1ldGhvZD1uYW1lLCBwcm90bz1wcm90byk6CisgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIoT3JkZXJhYmxlX0xULCBuYW1lKQorICAgICAgICAgICAgICAgICAgICBtZXRob2RfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMobWV0aG9kLCBwcm90bykpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobWV0aG9kX2NvcHksIG1ldGhvZCkKKworQGZ1bmN0b29scy50b3RhbF9vcmRlcmluZworY2xhc3MgT3JkZXJhYmxlX0xUOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQorICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi52YWx1ZSA8IG90aGVyLnZhbHVlCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLnZhbHVlID09IG90aGVyLnZhbHVlCisKKworY2xhc3MgVGVzdExSVToKIAogICAgIGRlZiB0ZXN0X2xydShzZWxmKToKICAgICAgICAgZGVmIG9yaWcoeCwgeSk6CiAgICAgICAgICAgICByZXR1cm4gMyAqIHggKyB5Ci0gICAgICAgIGYgPSBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9MjApKG9yaWcpCisgICAgICAgIGYgPSBzZWxmLm1vZHVsZS5scnVfY2FjaGUobWF4c2l6ZT0yMCkob3JpZykKICAgICAgICAgaGl0cywgbWlzc2VzLCBtYXhzaXplLCBjdXJyc2l6ZSA9IGYuY2FjaGVfaW5mbygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF4c2l6ZSwgMjApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VycnNpemUsIDApCkBAIC05MjcsNyArOTcyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXJyc2l6ZSwgMSkKIAogICAgICAgICAjIHRlc3Qgc2l6ZSB6ZXJvICh3aGljaCBtZWFucyAibmV2ZXItY2FjaGUiKQotICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZSgwKQorICAgICAgICBAc2VsZi5tb2R1bGUubHJ1X2NhY2hlKDApCiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICBub25sb2NhbCBmX2NudAogICAgICAgICAgICAgZl9jbnQgKz0gMQpAQCAtOTQzLDcgKzk4OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VycnNpemUsIDApCiAKICAgICAgICAgIyB0ZXN0IHNpemUgb25lCi0gICAgICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKDEpCisgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUoMSkKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgIG5vbmxvY2FsIGZfY250CiAgICAgICAgICAgICBmX2NudCArPSAxCkBAIC05NTksNyArMTAwNCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VycnNpemUsIDEpCiAKICAgICAgICAgIyB0ZXN0IHNpemUgdHdvCi0gICAgICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKDIpCisgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUoMikKICAgICAgICAgZGVmIGYoeCk6CiAgICAgICAgICAgICBub25sb2NhbCBmX2NudAogICAgICAgICAgICAgZl9jbnQgKz0gMQpAQCAtOTc2LDcgKzEwMjEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1cnJzaXplLCAyKQogCiAgICAgZGVmIHRlc3RfbHJ1X3dpdGhfbWF4c2l6ZV9ub25lKHNlbGYpOgotICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplPU5vbmUpCisgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUobWF4c2l6ZT1Ob25lKQogICAgICAgICBkZWYgZmliKG4pOgogICAgICAgICAgICAgaWYgbiA8IDI6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG4KQEAgLTk4NCwxNyArMTAyOSwyNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtmaWIobikgZm9yIG4gaW4gcmFuZ2UoMTYpXSwKICAgICAgICAgICAgIFswLCAxLCAxLCAyLCAzLCA1LCA4LCAxMywgMjEsIDM0LCA1NSwgODksIDE0NCwgMjMzLCAzNzcsIDYxMF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmliLmNhY2hlX2luZm8oKSwKLSAgICAgICAgICAgIGZ1bmN0b29scy5fQ2FjaGVJbmZvKGhpdHM9MjgsIG1pc3Nlcz0xNiwgbWF4c2l6ZT1Ob25lLCBjdXJyc2l6ZT0xNikpCisgICAgICAgICAgICBzZWxmLm1vZHVsZS5fQ2FjaGVJbmZvKGhpdHM9MjgsIG1pc3Nlcz0xNiwgbWF4c2l6ZT1Ob25lLCBjdXJyc2l6ZT0xNikpCiAgICAgICAgIGZpYi5jYWNoZV9jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmliLmNhY2hlX2luZm8oKSwKLSAgICAgICAgICAgIGZ1bmN0b29scy5fQ2FjaGVJbmZvKGhpdHM9MCwgbWlzc2VzPTAsIG1heHNpemU9Tm9uZSwgY3VycnNpemU9MCkpCisgICAgICAgICAgICBzZWxmLm1vZHVsZS5fQ2FjaGVJbmZvKGhpdHM9MCwgbWlzc2VzPTAsIG1heHNpemU9Tm9uZSwgY3VycnNpemU9MCkpCisKKyAgICBkZWYgdGVzdF9scnVfd2l0aF9tYXhzaXplX25lZ2F0aXZlKHNlbGYpOgorICAgICAgICBAc2VsZi5tb2R1bGUubHJ1X2NhY2hlKG1heHNpemU9LTEwKQorICAgICAgICBkZWYgZXEobik6CisgICAgICAgICAgICByZXR1cm4gbgorICAgICAgICBmb3IgaSBpbiAoMCwgMSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtlcShuKSBmb3IgbiBpbiByYW5nZSgxNTApXSwgbGlzdChyYW5nZSgxNTApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcS5jYWNoZV9pbmZvKCksCisgICAgICAgICAgICBzZWxmLm1vZHVsZS5fQ2FjaGVJbmZvKGhpdHM9MCwgbWlzc2VzPTMwMCwgbWF4c2l6ZT0tMTAsIGN1cnJzaXplPTEpKQogCiAgICAgZGVmIHRlc3RfbHJ1X3dpdGhfZXhjZXB0aW9ucyhzZWxmKToKICAgICAgICAgIyBWZXJpZnkgdGhhdCB1c2VyX2Z1bmN0aW9uIGV4Y2VwdGlvbnMgZ2V0IHBhc3NlZCB0aHJvdWdoIHdpdGhvdXQKICAgICAgICAgIyBjcmVhdGluZyBhIGhhcmQtdG8tcmVhZCBjaGFpbmVkIGV4Y2VwdGlvbi4KICAgICAgICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTMxNzcKICAgICAgICAgZm9yIG1heHNpemUgaW4gKE5vbmUsIDEyOCk6Ci0gICAgICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplKQorICAgICAgICAgICAgQHNlbGYubW9kdWxlLmxydV9jYWNoZShtYXhzaXplKQogICAgICAgICAgICAgZGVmIGZ1bmMoaSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuICdhYmMnW2ldCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoMCksICdhJykKQEAgLTEwMDcsNyArMTA2MSw3IEBACiAKICAgICBkZWYgdGVzdF9scnVfd2l0aF90eXBlcyhzZWxmKToKICAgICAgICAgZm9yIG1heHNpemUgaW4gKE5vbmUsIDEyOCk6Ci0gICAgICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplPW1heHNpemUsIHR5cGVkPVRydWUpCisgICAgICAgICAgICBAc2VsZi5tb2R1bGUubHJ1X2NhY2hlKG1heHNpemU9bWF4c2l6ZSwgdHlwZWQ9VHJ1ZSkKICAgICAgICAgICAgIGRlZiBzcXVhcmUoeCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHggKiB4CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNxdWFyZSgzKSwgOSkKQEAgLTEwMjIsNyArMTA3Niw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNxdWFyZS5jYWNoZV9pbmZvKCkubWlzc2VzLCA0KQogCiAgICAgZGVmIHRlc3RfbHJ1X3dpdGhfa2V5d29yZF9hcmdzKHNlbGYpOgotICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZSgpCisgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUoKQogICAgICAgICBkZWYgZmliKG4pOgogICAgICAgICAgICAgaWYgbiA8IDI6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG4KQEAgLTEwMzIsMTMgKzEwODYsMTMgQEAKICAgICAgICAgICAgIFswLCAxLCAxLCAyLCAzLCA1LCA4LCAxMywgMjEsIDM0LCA1NSwgODksIDE0NCwgMjMzLCAzNzcsIDYxMF0KICAgICAgICAgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpYi5jYWNoZV9pbmZvKCksCi0gICAgICAgICAgICBmdW5jdG9vbHMuX0NhY2hlSW5mbyhoaXRzPTI4LCBtaXNzZXM9MTYsIG1heHNpemU9MTI4LCBjdXJyc2l6ZT0xNikpCisgICAgICAgICAgICBzZWxmLm1vZHVsZS5fQ2FjaGVJbmZvKGhpdHM9MjgsIG1pc3Nlcz0xNiwgbWF4c2l6ZT0xMjgsIGN1cnJzaXplPTE2KSkKICAgICAgICAgZmliLmNhY2hlX2NsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWIuY2FjaGVfaW5mbygpLAotICAgICAgICAgICAgZnVuY3Rvb2xzLl9DYWNoZUluZm8oaGl0cz0wLCBtaXNzZXM9MCwgbWF4c2l6ZT0xMjgsIGN1cnJzaXplPTApKQorICAgICAgICAgICAgc2VsZi5tb2R1bGUuX0NhY2hlSW5mbyhoaXRzPTAsIG1pc3Nlcz0wLCBtYXhzaXplPTEyOCwgY3VycnNpemU9MCkpCiAKICAgICBkZWYgdGVzdF9scnVfd2l0aF9rZXl3b3JkX2FyZ3NfbWF4c2l6ZV9ub25lKHNlbGYpOgotICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplPU5vbmUpCisgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUobWF4c2l6ZT1Ob25lKQogICAgICAgICBkZWYgZmliKG4pOgogICAgICAgICAgICAgaWYgbiA8IDI6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG4KQEAgLTEwNDYsMTUgKzExMDAsMTAwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2ZpYihuPW51bWJlcikgZm9yIG51bWJlciBpbiByYW5nZSgxNildLAogICAgICAgICAgICAgWzAsIDEsIDEsIDIsIDMsIDUsIDgsIDEzLCAyMSwgMzQsIDU1LCA4OSwgMTQ0LCAyMzMsIDM3NywgNjEwXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWIuY2FjaGVfaW5mbygpLAotICAgICAgICAgICAgZnVuY3Rvb2xzLl9DYWNoZUluZm8oaGl0cz0yOCwgbWlzc2VzPTE2LCBtYXhzaXplPU5vbmUsIGN1cnJzaXplPTE2KSkKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLl9DYWNoZUluZm8oaGl0cz0yOCwgbWlzc2VzPTE2LCBtYXhzaXplPU5vbmUsIGN1cnJzaXplPTE2KSkKICAgICAgICAgZmliLmNhY2hlX2NsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWIuY2FjaGVfaW5mbygpLAotICAgICAgICAgICAgZnVuY3Rvb2xzLl9DYWNoZUluZm8oaGl0cz0wLCBtaXNzZXM9MCwgbWF4c2l6ZT1Ob25lLCBjdXJyc2l6ZT0wKSkKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLl9DYWNoZUluZm8oaGl0cz0wLCBtaXNzZXM9MCwgbWF4c2l6ZT1Ob25lLCBjdXJyc2l6ZT0wKSkKKworICAgIGRlZiB0ZXN0X2xydV9jYWNoZV9kZWNvcmF0aW9uKHNlbGYpOgorICAgICAgICBkZWYgZih6b21nOiAnem9tZ19hbm5vdGF0aW9uJyk6CisgICAgICAgICAgICAiIiJmIGRvYyBzdHJpbmciIiIKKyAgICAgICAgICAgIHJldHVybiA0MgorICAgICAgICBnID0gc2VsZi5tb2R1bGUubHJ1X2NhY2hlKCkoZikKKyAgICAgICAgZm9yIGF0dHIgaW4gc2VsZi5tb2R1bGUuV1JBUFBFUl9BU1NJR05NRU5UUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihnLCBhdHRyKSwgZ2V0YXR0cihmLCBhdHRyKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RoaXMgdGVzdCByZXF1aXJlcyB0aHJlYWRpbmcuJykKKyAgICBkZWYgdGVzdF9scnVfY2FjaGVfdGhyZWFkZWQoc2VsZik6CisgICAgICAgIG4sIG0gPSA1LCAxMQorICAgICAgICBkZWYgb3JpZyh4LCB5KToKKyAgICAgICAgICAgIHJldHVybiAzICogeCArIHkKKyAgICAgICAgZiA9IHNlbGYubW9kdWxlLmxydV9jYWNoZShtYXhzaXplPW4qbSkob3JpZykKKyAgICAgICAgaGl0cywgbWlzc2VzLCBtYXhzaXplLCBjdXJyc2l6ZSA9IGYuY2FjaGVfaW5mbygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VycnNpemUsIDApCisKKyAgICAgICAgc3RhcnQgPSB0aHJlYWRpbmcuRXZlbnQoKQorICAgICAgICBkZWYgZnVsbChrKToKKyAgICAgICAgICAgIHN0YXJ0LndhaXQoMTApCisgICAgICAgICAgICBmb3IgXyBpbiByYW5nZShtKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoaywgMCksIG9yaWcoaywgMCkpCisKKyAgICAgICAgZGVmIGNsZWFyKCk6CisgICAgICAgICAgICBzdGFydC53YWl0KDEwKQorICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2UoMiptKToKKyAgICAgICAgICAgICAgICBmLmNhY2hlX2NsZWFyKCkKKworICAgICAgICBvcmlnX3NpID0gc3lzLmdldHN3aXRjaGludGVydmFsKCkKKyAgICAgICAgc3lzLnNldHN3aXRjaGludGVydmFsKDFlLTYpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgY3JlYXRlIG4gdGhyZWFkcyBpbiBvcmRlciB0byBmaWxsIGNhY2hlCisgICAgICAgICAgICB0aHJlYWRzID0gW3RocmVhZGluZy5UaHJlYWQodGFyZ2V0PWZ1bGwsIGFyZ3M9W2tdKQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgayBpbiByYW5nZShuKV0KKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5zdGFydF90aHJlYWRzKHRocmVhZHMpOgorICAgICAgICAgICAgICAgIHN0YXJ0LnNldCgpCisKKyAgICAgICAgICAgIGhpdHMsIG1pc3NlcywgbWF4c2l6ZSwgY3VycnNpemUgPSBmLmNhY2hlX2luZm8oKQorICAgICAgICAgICAgaWYgc2VsZi5tb2R1bGUgaXMgcHlfZnVuY3Rvb2xzOgorICAgICAgICAgICAgICAgICMgWFhYOiBXaHkgY2FuIGJlIG5vdCBlcXVhbD8KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChtaXNzZXMsIG4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoaGl0cywgbSpuIC0gbWlzc2VzKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pc3NlcywgbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhpdHMsIG0qbiAtIG1pc3NlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VycnNpemUsIG4pCisKKyAgICAgICAgICAgICMgY3JlYXRlIG4gdGhyZWFkcyBpbiBvcmRlciB0byBmaWxsIGNhY2hlIGFuZCAxIHRvIGNsZWFyIGl0CisgICAgICAgICAgICB0aHJlYWRzID0gW3RocmVhZGluZy5UaHJlYWQodGFyZ2V0PWNsZWFyKV0KKyAgICAgICAgICAgIHRocmVhZHMgKz0gW3RocmVhZGluZy5UaHJlYWQodGFyZ2V0PWZ1bGwsIGFyZ3M9W2tdKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGsgaW4gcmFuZ2UobildCisgICAgICAgICAgICBzdGFydC5jbGVhcigpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuc3RhcnRfdGhyZWFkcyh0aHJlYWRzKToKKyAgICAgICAgICAgICAgICBzdGFydC5zZXQoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3lzLnNldHN3aXRjaGludGVydmFsKG9yaWdfc2kpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaGlzIHRlc3QgcmVxdWlyZXMgdGhyZWFkaW5nLicpCisgICAgZGVmIHRlc3RfbHJ1X2NhY2hlX3RocmVhZGVkMihzZWxmKToKKyAgICAgICAgIyBTaW11bHRhbmVvdXMgY2FsbCB3aXRoIHRoZSBzYW1lIGFyZ3VtZW50cworICAgICAgICBuLCBtID0gNSwgNworICAgICAgICBzdGFydCA9IHRocmVhZGluZy5CYXJyaWVyKG4rMSkKKyAgICAgICAgcGF1c2UgPSB0aHJlYWRpbmcuQmFycmllcihuKzEpCisgICAgICAgIHN0b3AgPSB0aHJlYWRpbmcuQmFycmllcihuKzEpCisgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUobWF4c2l6ZT1tKm4pCisgICAgICAgIGRlZiBmKHgpOgorICAgICAgICAgICAgcGF1c2Uud2FpdCgxMCkKKyAgICAgICAgICAgIHJldHVybiAzICogeAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuY2FjaGVfaW5mbygpLCAoMCwgMCwgbSpuLCAwKSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKG0pOgorICAgICAgICAgICAgICAgIHN0YXJ0LndhaXQoMTApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKGkpLCAzICogaSkKKyAgICAgICAgICAgICAgICBzdG9wLndhaXQoMTApCisgICAgICAgIHRocmVhZHMgPSBbdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9dGVzdCkgZm9yIGsgaW4gcmFuZ2UobildCisgICAgICAgIHdpdGggc3VwcG9ydC5zdGFydF90aHJlYWRzKHRocmVhZHMpOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobSk6CisgICAgICAgICAgICAgICAgc3RhcnQud2FpdCgxMCkKKyAgICAgICAgICAgICAgICBzdG9wLnJlc2V0KCkKKyAgICAgICAgICAgICAgICBwYXVzZS53YWl0KDEwKQorICAgICAgICAgICAgICAgIHN0YXJ0LnJlc2V0KCkKKyAgICAgICAgICAgICAgICBzdG9wLndhaXQoMTApCisgICAgICAgICAgICAgICAgcGF1c2UucmVzZXQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5jYWNoZV9pbmZvKCksICgwLCAoaSsxKSpuLCBtKm4sIGkrMSkpCiAKICAgICBkZWYgdGVzdF9uZWVkX2Zvcl9ybG9jayhzZWxmKToKICAgICAgICAgIyBUaGlzIHdpbGwgZGVhZGxvY2sgb24gYW4gTFJVIGNhY2hlIHRoYXQgdXNlcyBhIHJlZ3VsYXIgbG9jawogCi0gICAgICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9MTApCisgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUobWF4c2l6ZT0xMCkKICAgICAgICAgZGVmIHRlc3RfZnVuYyh4KToKICAgICAgICAgICAgICdVc2VkIHRvIGRlbW9uc3RyYXRlIGEgcmVlbnRyYW50IGxydV9jYWNoZSBjYWxsIHdpdGhpbiBhIHNpbmdsZSB0aHJlYWQnCiAgICAgICAgICAgICByZXR1cm4geApAQCAtMTA4Miw2ICsxMjIxLDEwNiBAQAogICAgICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgICAgICBwYXNzCiAKKyAgICBkZWYgdGVzdF9scnVfbWV0aG9kKHNlbGYpOgorICAgICAgICBjbGFzcyBYKGludCk6CisgICAgICAgICAgICBmX2NudCA9IDAKKyAgICAgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUoMikKKyAgICAgICAgICAgIGRlZiBmKHNlbGYsIHgpOgorICAgICAgICAgICAgICAgIHNlbGYuZl9jbnQgKz0gMQorICAgICAgICAgICAgICAgIHJldHVybiB4KjEwK3NlbGYKKyAgICAgICAgYSA9IFgoNSkKKyAgICAgICAgYiA9IFgoNSkKKyAgICAgICAgYyA9IFgoNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChYLmYuY2FjaGVfaW5mbygpLCAoMCwgMCwgMiwgMCkpCisKKyAgICAgICAgZm9yIHggaW4gMSwgMiwgMiwgMywgMSwgMSwgMSwgMiwgMywgMzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5mKHgpLCB4KjEwICsgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYS5mX2NudCwgYi5mX2NudCwgYy5mX2NudCksICg2LCAwLCAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChYLmYuY2FjaGVfaW5mbygpLCAoNCwgNiwgMiwgMikpCisKKyAgICAgICAgZm9yIHggaW4gMSwgMiwgMSwgMSwgMSwgMSwgMywgMiwgMiwgMjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5mKHgpLCB4KjEwICsgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYS5mX2NudCwgYi5mX2NudCwgYy5mX2NudCksICg2LCA0LCAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChYLmYuY2FjaGVfaW5mbygpLCAoMTAsIDEwLCAyLCAyKSkKKworICAgICAgICBmb3IgeCBpbiAyLCAxLCAxLCAxLCAxLCAyLCAxLCAzLCAyLCAxOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmYoeCksIHgqMTAgKyA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChhLmZfY250LCBiLmZfY250LCBjLmZfY250KSwgKDYsIDQsIDUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFguZi5jYWNoZV9pbmZvKCksICgxNSwgMTUsIDIsIDIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5mLmNhY2hlX2luZm8oKSwgWC5mLmNhY2hlX2luZm8oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmYuY2FjaGVfaW5mbygpLCBYLmYuY2FjaGVfaW5mbygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZi5jYWNoZV9pbmZvKCksIFguZi5jYWNoZV9pbmZvKCkpCisKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIGNscyA9IHNlbGYuX19jbGFzc19fCisgICAgICAgIGZvciBmIGluIGNscy5jYWNoZWRfZnVuY1swXSwgY2xzLmNhY2hlZF9tZXRoLCBjbHMuY2FjaGVkX3N0YXRpY21ldGg6CisgICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90bywgZnVuYz1mKToKKyAgICAgICAgICAgICAgICAgICAgZl9jb3B5ID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhmLCBwcm90bykpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZl9jb3B5LCBmKQorCisgICAgZGVmIHRlc3RfY29weShzZWxmKToKKyAgICAgICAgY2xzID0gc2VsZi5fX2NsYXNzX18KKyAgICAgICAgZGVmIG9yaWcoeCwgeSk6CisgICAgICAgICAgICByZXR1cm4gMyAqIHggKyB5CisgICAgICAgIHBhcnQgPSBzZWxmLm1vZHVsZS5wYXJ0aWFsKG9yaWcsIDIpCisgICAgICAgIGZ1bmNzID0gKGNscy5jYWNoZWRfZnVuY1swXSwgY2xzLmNhY2hlZF9tZXRoLCBjbHMuY2FjaGVkX3N0YXRpY21ldGgsCisgICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlLmxydV9jYWNoZSgyKShwYXJ0KSkKKyAgICAgICAgZm9yIGYgaW4gZnVuY3M6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChmdW5jPWYpOgorICAgICAgICAgICAgICAgIGZfY29weSA9IGNvcHkuY29weShmKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZl9jb3B5LCBmKQorCisgICAgZGVmIHRlc3RfZGVlcGNvcHkoc2VsZik6CisgICAgICAgIGNscyA9IHNlbGYuX19jbGFzc19fCisgICAgICAgIGRlZiBvcmlnKHgsIHkpOgorICAgICAgICAgICAgcmV0dXJuIDMgKiB4ICsgeQorICAgICAgICBwYXJ0ID0gc2VsZi5tb2R1bGUucGFydGlhbChvcmlnLCAyKQorICAgICAgICBmdW5jcyA9IChjbHMuY2FjaGVkX2Z1bmNbMF0sIGNscy5jYWNoZWRfbWV0aCwgY2xzLmNhY2hlZF9zdGF0aWNtZXRoLAorICAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZS5scnVfY2FjaGUoMikocGFydCkpCisgICAgICAgIGZvciBmIGluIGZ1bmNzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZnVuYz1mKToKKyAgICAgICAgICAgICAgICBmX2NvcHkgPSBjb3B5LmRlZXBjb3B5KGYpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhmX2NvcHksIGYpCisKKworQHB5X2Z1bmN0b29scy5scnVfY2FjaGUoKQorZGVmIHB5X2NhY2hlZF9mdW5jKHgsIHkpOgorICAgIHJldHVybiAzICogeCArIHkKKworQGNfZnVuY3Rvb2xzLmxydV9jYWNoZSgpCitkZWYgY19jYWNoZWRfZnVuYyh4LCB5KToKKyAgICByZXR1cm4gMyAqIHggKyB5CisKKworY2xhc3MgVGVzdExSVVB5KFRlc3RMUlUsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBtb2R1bGUgPSBweV9mdW5jdG9vbHMKKyAgICBjYWNoZWRfZnVuYyA9IHB5X2NhY2hlZF9mdW5jLAorCisgICAgQG1vZHVsZS5scnVfY2FjaGUoKQorICAgIGRlZiBjYWNoZWRfbWV0aChzZWxmLCB4LCB5KToKKyAgICAgICAgcmV0dXJuIDMgKiB4ICsgeQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIEBtb2R1bGUubHJ1X2NhY2hlKCkKKyAgICBkZWYgY2FjaGVkX3N0YXRpY21ldGgoeCwgeSk6CisgICAgICAgIHJldHVybiAzICogeCArIHkKKworCitjbGFzcyBUZXN0TFJVQyhUZXN0TFJVLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kdWxlID0gY19mdW5jdG9vbHMKKyAgICBjYWNoZWRfZnVuYyA9IGNfY2FjaGVkX2Z1bmMsCisKKyAgICBAbW9kdWxlLmxydV9jYWNoZSgpCisgICAgZGVmIGNhY2hlZF9tZXRoKHNlbGYsIHgsIHkpOgorICAgICAgICByZXR1cm4gMyAqIHggKyB5CisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgQG1vZHVsZS5scnVfY2FjaGUoKQorICAgIGRlZiBjYWNoZWRfc3RhdGljbWV0aCh4LCB5KToKKyAgICAgICAgcmV0dXJuIDMgKiB4ICsgeQorCiAKIGNsYXNzIFRlc3RTaW5nbGVEaXNwYXRjaCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc2ltcGxlX292ZXJsb2FkcyhzZWxmKToKQEAgLTE1NzYsMzIgKzE4MTUsNSBAQAogICAgICAgICBmdW5jdG9vbHMuV2Vha0tleURpY3Rpb25hcnkgPSBfb3JpZ193a2QKIAogCi1kZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgdGVzdF9jbGFzc2VzID0gKAotICAgICAgICBUZXN0UGFydGlhbEMsCi0gICAgICAgIFRlc3RQYXJ0aWFsUHksCi0gICAgICAgIFRlc3RQYXJ0aWFsQ1N1YmNsYXNzLAotICAgICAgICBUZXN0UGFydGlhbE1ldGhvZCwKLSAgICAgICAgVGVzdFVwZGF0ZVdyYXBwZXIsCi0gICAgICAgIFRlc3RUb3RhbE9yZGVyaW5nLAotICAgICAgICBUZXN0Q21wVG9LZXlDLAotICAgICAgICBUZXN0Q21wVG9LZXlQeSwKLSAgICAgICAgVGVzdFdyYXBzLAotICAgICAgICBUZXN0UmVkdWNlLAotICAgICAgICBUZXN0TFJVLAotICAgICAgICBUZXN0U2luZ2xlRGlzcGF0Y2gsCi0gICAgKQotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCi0KLSAgICAjIHZlcmlmeSByZWZlcmVuY2UgY291bnRpbmcKLSAgICBpZiB2ZXJib3NlIGFuZCBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKLSAgICAgICAgaW1wb3J0IGdjCi0gICAgICAgIGNvdW50cyA9IFtOb25lXSAqIDUKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGNvdW50cykpOgotICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKLSAgICAgICAgICAgIGdjLmNvbGxlY3QoKQotICAgICAgICAgICAgY291bnRzW2ldID0gc3lzLmdldHRvdGFscmVmY291bnQoKQotICAgICAgICBwcmludChjb3VudHMpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKHZlcmJvc2U9VHJ1ZSkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2MucHkgYi9MaWIvdGVzdC90ZXN0X2djLnB5CmluZGV4IDJhYzFkNGIuLjFmMDg2N2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nYy5weQpAQCAtMSw3ICsxLDggQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICh2ZXJib3NlLCByZWZjb3VudF90ZXN0LCBydW5fdW5pdHRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBfcHl0aG9uX3N0ZGVyciwgY3B5dGhvbl9vbmx5LCBzdGFydF90aHJlYWRzKQotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIG1ha2Vfc2NyaXB0LCB0ZW1wX2RpcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwX3B5dGhvbl9zdGRlcnIsIGNweXRob25fb25seSwgc3RhcnRfdGhyZWFkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wX2RpcikKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIG1ha2Vfc2NyaXB0CiAKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCkBAIC01NDYsMTEgKzU0NywzMSBAQAogCiAgICAgICAgIGNsYXNzIFVzZXJDbGFzczoKICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBVc2VySW50KGludCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgIyBCYXNlIGNsYXNzIGlzIG9iamVjdDsgbm8gZXh0cmEgZmllbGRzLgorICAgICAgICBjbGFzcyBVc2VyQ2xhc3NTbG90czoKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICAgICAgIyBCYXNlIGNsYXNzIGlzIGZpeGVkIHNpemUgbGFyZ2VyIHRoYW4gb2JqZWN0OyBubyBleHRyYSBmaWVsZHMuCisgICAgICAgIGNsYXNzIFVzZXJGbG9hdFNsb3RzKGZsb2F0KToKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICAgICAgIyBCYXNlIGNsYXNzIGlzIHZhcmlhYmxlIHNpemU7IG5vIGV4dHJhIGZpZWxkcy4KKyAgICAgICAgY2xhc3MgVXNlckludFNsb3RzKGludCk6CisgICAgICAgICAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnYy5pc190cmFja2VkKGdjKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdjLmlzX3RyYWNrZWQoVXNlckNsYXNzKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdjLmlzX3RyYWNrZWQoVXNlckNsYXNzKCkpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2MuaXNfdHJhY2tlZChVc2VySW50KCkpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2MuaXNfdHJhY2tlZChbXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnYy5pc190cmFja2VkKHNldCgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnYy5pc190cmFja2VkKFVzZXJDbGFzc1Nsb3RzKCkpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdjLmlzX3RyYWNrZWQoVXNlckZsb2F0U2xvdHMoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2MuaXNfdHJhY2tlZChVc2VySW50U2xvdHMoKSkpCiAKICAgICBkZWYgdGVzdF9idWcxMDU1ODIwYihzZWxmKToKICAgICAgICAgIyBDb3JyZXNwb25kcyB0byB0ZW1wMmIucHkgaW4gdGhlIGJ1ZyByZXBvcnQuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dkYi5weSBiL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CmluZGV4IGI1MDE3YjkuLjE2ZmIzODkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CkBAIC04OSw3ICs4OSw2IEBACiAKICMgVmVyaWZ5IHRoYXQgImdkYiIgY2FuIGxvYWQgb3VyIGN1c3RvbSBob29rcywgYXMgT1Mgc2VjdXJpdHkgc2V0dGluZ3MgbWF5CiAjIGRpc2FsbG93IHRoaXMgd2l0aG91dCBhIGN1c3RvbWlzZWQgLmdkYmluaXQuCi1jbWQgPSBbJy0tYXJncycsIHN5cy5leGVjdXRhYmxlXQogXywgZ2RicHlfZXJyb3JzID0gcnVuX2dkYignLS1hcmdzJywgc3lzLmV4ZWN1dGFibGUpCiBpZiAiYXV0by1sb2FkaW5nIGhhcyBiZWVuIGRlY2xpbmVkIiBpbiBnZGJweV9lcnJvcnM6CiAgICAgbXNnID0gImdkYiBzZWN1cml0eSBzZXR0aW5ncyBwcmV2ZW50IHVzZSBvZiBjdXN0b20gaG9va3M6ICIKQEAgLTE3MSw4ICsxNzAsNyBAQAogICAgICAgICAjIHByaW50IGNvbW1hbmRzCiAKICAgICAgICAgIyBVc2UgImNvbW1hbmRzIiB0byBnZW5lcmF0ZSB0aGUgYXJndW1lbnRzIHdpdGggd2hpY2ggdG8gaW52b2tlICJnZGIiOgotICAgICAgICBhcmdzID0gWyJnZGIiLCAiLS1iYXRjaCIsICItbngiXQotICAgICAgICBhcmdzICs9IFsnLS1ldmFsLWNvbW1hbmQ9JXMnICUgY21kIGZvciBjbWQgaW4gY29tbWFuZHNdCisgICAgICAgIGFyZ3MgPSBbJy0tZXZhbC1jb21tYW5kPSVzJyAlIGNtZCBmb3IgY21kIGluIGNvbW1hbmRzXQogICAgICAgICBhcmdzICs9IFsiLS1hcmdzIiwKICAgICAgICAgICAgICAgICAgc3lzLmV4ZWN1dGFibGVdCiAKQEAgLTgyMCwyNSArODE4LDI3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aG91dCB0aHJlYWQgc3VwcG9ydCIpCiAgICAgZGVmIHRlc3RfcHljZnVuY3Rpb24oc2VsZik6CiAgICAgICAgICdWZXJpZnkgdGhhdCAicHktYnQiIGRpc3BsYXlzIGludm9jYXRpb25zIG9mIFB5Q0Z1bmN0aW9uIGluc3RhbmNlcycKLSAgICAgICAgY21kID0gKCdmcm9tIHRpbWUgaW1wb3J0IHNsZWVwXG4nCisgICAgICAgICMgVGVzdGVkIGZ1bmN0aW9uIG11c3Qgbm90IGJlIGRlZmluZWQgd2l0aCBNRVRIX05PQVJHUyBvciBNRVRIX08sCisgICAgICAgICMgb3RoZXJ3aXNlIGNhbGxfZnVuY3Rpb24oKSBkb2Vzbid0IGNhbGwgUHlDRnVuY3Rpb25fQ2FsbCgpCisgICAgICAgIGNtZCA9ICgnZnJvbSB0aW1lIGltcG9ydCBnbXRpbWVcbicKICAgICAgICAgICAgICAgICdkZWYgZm9vKCk6XG4nCi0gICAgICAgICAgICAgICAnICAgIHNsZWVwKDEpXG4nCisgICAgICAgICAgICAgICAnICAgIGdtdGltZSgxKVxuJwogICAgICAgICAgICAgICAgJ2RlZiBiYXIoKTpcbicKICAgICAgICAgICAgICAgICcgICAgZm9vKClcbicKICAgICAgICAgICAgICAgICdiYXIoKVxuJykKICAgICAgICAgIyBWZXJpZnkgd2l0aCAicHktYnQiOgogICAgICAgICBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2UoY21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludD0ndGltZV9zbGVlcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50PSd0aW1lX2dtdGltZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydidCcsICdweS1idCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEluKCc8YnVpbHQtaW4gbWV0aG9kIHNsZWVwJywgZ2RiX291dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignPGJ1aWx0LWluIG1ldGhvZCBnbXRpbWUnLCBnZGJfb3V0cHV0KQogCiAgICAgICAgICMgVmVyaWZ5IHdpdGggInB5LWJ0LWZ1bGwiOgogICAgICAgICBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2UoY21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludD0ndGltZV9zbGVlcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50PSd0aW1lX2dtdGltZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS1idC1mdWxsJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJyMwIDxidWlsdC1pbiBtZXRob2Qgc2xlZXAnLCBnZGJfb3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCcjMCA8YnVpbHQtaW4gbWV0aG9kIGdtdGltZScsIGdkYl9vdXRwdXQpCiAKIAogY2xhc3MgUHlQcmludFRlc3RzKERlYnVnZ2VyVGVzdHMpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5IGIvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CmluZGV4IDYwNGUxMmQuLmI5MmQ1Y2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKQEAgLTMsNyArMywxMCBAQAogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIGltcG9ydCB3ZWFrcmVmCitpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHR5cGVzCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCkBAIC03NCw2ICs3Nyw0MiBAQAogCiBjbGFzcyBHZW5lcmF0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAorICAgIGRlZiB0ZXN0X25hbWUoc2VsZik6CisgICAgICAgIGRlZiBmdW5jKCk6CisgICAgICAgICAgICB5aWVsZCAxCisKKyAgICAgICAgIyBjaGVjayBnZW5lcmF0b3IgbmFtZXMKKyAgICAgICAgZ2VuID0gZnVuYygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuLl9fbmFtZV9fLCAiZnVuYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiR2VuZXJhdG9yVGVzdC50ZXN0X25hbWUuPGxvY2Fscz4uZnVuYyIpCisKKyAgICAgICAgIyBtb2RpZnkgZ2VuZXJhdG9yIG5hbWVzCisgICAgICAgIGdlbi5fX25hbWVfXyA9ICJuYW1lIgorICAgICAgICBnZW4uX19xdWFsbmFtZV9fID0gInF1YWxuYW1lIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdlbi5fX25hbWVfXywgIm5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdlbi5fX3F1YWxuYW1lX18sICJxdWFsbmFtZSIpCisKKyAgICAgICAgIyBnZW5lcmF0b3IgbmFtZXMgbXVzdCBiZSBhIHN0cmluZyBhbmQgY2Fubm90IGJlIGRlbGV0ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBnZW4sICdfX25hbWVfXycsIDEyMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBnZW4sICdfX3F1YWxuYW1lX18nLCAxMjMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZGVsYXR0ciwgZ2VuLCAnX19uYW1lX18nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRlbGF0dHIsIGdlbiwgJ19fcXVhbG5hbWVfXycpCisKKyAgICAgICAgIyBtb2RpZnkgbmFtZXMgb2YgdGhlIGZ1bmN0aW9uIGNyZWF0aW5nIHRoZSBnZW5lcmF0b3IKKyAgICAgICAgZnVuYy5fX3F1YWxuYW1lX18gPSAiZnVuY19xdWFsbmFtZSIKKyAgICAgICAgZnVuYy5fX25hbWVfXyA9ICJmdW5jX25hbWUiCisgICAgICAgIGdlbiA9IGZ1bmMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdlbi5fX25hbWVfXywgImZ1bmNfbmFtZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuLl9fcXVhbG5hbWVfXywgImZ1bmNfcXVhbG5hbWUiKQorCisgICAgICAgICMgdW5uYW1lZCBnZW5lcmF0b3IKKyAgICAgICAgZ2VuID0gKHggZm9yIHggaW4gcmFuZ2UoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdlbi5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiPGdlbmV4cHI+IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZW4uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICJHZW5lcmF0b3JUZXN0LnRlc3RfbmFtZS48bG9jYWxzPi48Z2VuZXhwcj4iKQorCiAgICAgZGVmIHRlc3RfY29weShzZWxmKToKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgIHlpZWxkIDEKQEAgLTE5OCw2ICsyMzcsNzkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGcpLCAiZG9uZSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmV4Y19pbmZvKCksIChOb25lLCBOb25lLCBOb25lKSkKIAorICAgIGRlZiB0ZXN0X3N0b3BpdGVyYXRpb25fd2FybmluZyhzZWxmKToKKyAgICAgICAgIyBTZWUgYWxzbyBQRVAgNDc5LgorCisgICAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgIHlpZWxkCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKSwgXAorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgorCisgICAgICAgICAgICBuZXh0KGdlbigpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdlbmVyYXRvciAuKiByYWlzZWQgU3RvcEl0ZXJhdGlvbiIpLCBcCisgICAgICAgICAgICAgd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKworICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdlcnJvcicpCisgICAgICAgICAgICBuZXh0KGdlbigpKQorCisKKyAgICBkZWYgdGVzdF90dXRvcmlhbF9zdG9waXRlcmF0aW9uKHNlbGYpOgorICAgICAgICAjIFJhaXNlIFN0b3BJdGVyYXRpb24iIHN0b3BzIHRoZSBnZW5lcmF0b3IgdG9vOgorCisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisgICAgICAgICAgICB5aWVsZCAyICMgbmV2ZXIgcmVhY2hlZAorCisgICAgICAgIGcgPSBmKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGcpLCAxKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIG5leHQoZykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pOgorICAgICAgICAgICAgIyBUaGlzIHRpbWUgU3RvcEl0ZXJhdGlvbiBpc24ndCByYWlzZWQgZnJvbSB0aGUgZ2VuZXJhdG9yJ3MgYm9keSwKKyAgICAgICAgICAgICMgaGVuY2Ugbm8gd2FybmluZy4KKyAgICAgICAgICAgIG5leHQoZykKKworCitjbGFzcyBZaWVsZEZyb21UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZ2VuZXJhdG9yX2dpX3lpZWxkZnJvbShzZWxmKToKKyAgICAgICAgZGVmIGEoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3JzdGF0ZShnZW5fYiksIGluc3BlY3QuR0VOX1JVTk5JTkcpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnZW5fYi5naV95aWVsZGZyb20pCisgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcnN0YXRlKGdlbl9iKSwgaW5zcGVjdC5HRU5fUlVOTklORykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGdlbl9iLmdpX3lpZWxkZnJvbSkKKworICAgICAgICBkZWYgYigpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZ2VuX2IuZ2lfeWllbGRmcm9tKQorICAgICAgICAgICAgeWllbGQgZnJvbSBhKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGdlbl9iLmdpX3lpZWxkZnJvbSkKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnZW5fYi5naV95aWVsZGZyb20pCisKKyAgICAgICAgZ2VuX2IgPSBiKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcnN0YXRlKGdlbl9iKSwgaW5zcGVjdC5HRU5fQ1JFQVRFRCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZ2VuX2IuZ2lfeWllbGRmcm9tKQorCisgICAgICAgIGdlbl9iLnNlbmQoTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcnN0YXRlKGdlbl9iKSwgaW5zcGVjdC5HRU5fU1VTUEVOREVEKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdlbl9iLmdpX3lpZWxkZnJvbS5naV9jb2RlLmNvX25hbWUsICdhJykKKworICAgICAgICBnZW5fYi5zZW5kKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3JzdGF0ZShnZW5fYiksIGluc3BlY3QuR0VOX1NVU1BFTkRFRCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZ2VuX2IuZ2lfeWllbGRmcm9tKQorCisgICAgICAgIFtdID0gZ2VuX2IgICMgRXhoYXVzdCBnZW5lcmF0b3IKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcnN0YXRlKGdlbl9iKSwgaW5zcGVjdC5HRU5fQ0xPU0VEKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnZW5fYi5naV95aWVsZGZyb20pCisKIAogdHV0b3JpYWxfdGVzdHMgPSAiIiIKIExldCdzIHRyeSBhIHNpbXBsZSBnZW5lcmF0b3I6CkBAIC0yNDQsMjYgKzM1Niw3IEBACiAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/CiAgICAgU3RvcEl0ZXJhdGlvbgogCi0icmFpc2UgU3RvcEl0ZXJhdGlvbiIgc3RvcHMgdGhlIGdlbmVyYXRvciB0b286Ci0KLSAgICA+Pj4gZGVmIGYoKToKLSAgICAuLi4gICAgIHlpZWxkIDEKLSAgICAuLi4gICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KLSAgICAuLi4gICAgIHlpZWxkIDIgIyBuZXZlciByZWFjaGVkCi0gICAgLi4uCi0gICAgPj4+IGcgPSBmKCkKLSAgICA+Pj4gbmV4dChnKQotICAgIDEKLSAgICA+Pj4gbmV4dChnKQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID8KLSAgICBTdG9wSXRlcmF0aW9uCi0gICAgPj4+IG5leHQoZykKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/Ci0gICAgU3RvcEl0ZXJhdGlvbgotCi1Ib3dldmVyLCB0aGV5IGFyZSBub3QgZXhhY3RseSBlcXVpdmFsZW50OgorSG93ZXZlciwgInJldHVybiIgYW5kIFN0b3BJdGVyYXRpb24gYXJlIG5vdCBleGFjdGx5IGVxdWl2YWxlbnQ6CiAKICAgICA+Pj4gZGVmIGcxKCk6CiAgICAgLi4uICAgICB0cnk6CkBAIC01ODMsNyArNjc2LDcgQEAKID4+PiB0eXBlKGkpCiA8Y2xhc3MgJ2dlbmVyYXRvcic+CiA+Pj4gW3MgZm9yIHMgaW4gZGlyKGkpIGlmIG5vdCBzLnN0YXJ0c3dpdGgoJ18nKV0KLVsnY2xvc2UnLCAnZ2lfY29kZScsICdnaV9mcmFtZScsICdnaV9ydW5uaW5nJywgJ3NlbmQnLCAndGhyb3cnXQorWydjbG9zZScsICdnaV9jb2RlJywgJ2dpX2ZyYW1lJywgJ2dpX3J1bm5pbmcnLCAnZ2lfeWllbGRmcm9tJywgJ3NlbmQnLCAndGhyb3cnXQogPj4+IGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBIQVZFX0RPQ1NUUklOR1MKID4+PiBwcmludChpLl9fbmV4dF9fLl9fZG9jX18gaWYgSEFWRV9ET0NTVFJJTkdTIGVsc2UgJ0ltcGxlbWVudCBuZXh0KHNlbGYpLicpCiBJbXBsZW1lbnQgbmV4dChzZWxmKS4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5CmluZGV4IGU1OWVkNGQuLjZiYTU1ZGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weQpAQCAtNDM0LDYgKzQzNCw0NCBAQAogICAgICAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKG5hbWUpOgogICAgICAgICAgICAgICAgIHNlbGYudGVzdF9hYnNwYXRoKCkKIAorICAgIGRlZiB0ZXN0X2pvaW5fZXJyb3JzKHNlbGYpOgorICAgICAgICAjIENoZWNrIGpvaW4oKSByYWlzZXMgZnJpZW5kbHkgVHlwZUVycm9ycy4KKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgQnl0ZXNXYXJuaW5nKSwgcXVpZXQ9VHJ1ZSk6CisgICAgICAgICAgICBlcnJtc2cgPSAiQ2FuJ3QgbWl4IHN0cmluZ3MgYW5kIGJ5dGVzIGluIHBhdGggY29tcG9uZW50cyIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oYidieXRlcycsICdzdHInKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbignc3RyJywgYidieXRlcycpCisgICAgICAgICAgICAjIHJlZ3Jlc3Npb24sIHNlZSAjMTUzNzcKKyAgICAgICAgICAgIGVycm1zZyA9IHInam9pblwoXCkgYXJndW1lbnQgbXVzdCBiZSBzdHIgb3IgYnl0ZXMsIG5vdCAlcicKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdpbnQnKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbig0MiwgJ3N0cicpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oJ3N0cicsIDQyKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKDQyKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2xpc3QnKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbihbXSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdieXRlYXJyYXknKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbihieXRlYXJyYXkoYidmb28nKSwgYnl0ZWFycmF5KGInYmFyJykpCisKKyAgICBkZWYgdGVzdF9yZWxwYXRoX2Vycm9ycyhzZWxmKToKKyAgICAgICAgIyBDaGVjayByZWxwYXRoKCkgcmFpc2VzIGZyaWVuZGx5IFR5cGVFcnJvcnMuCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIChCeXRlc1dhcm5pbmcsIERlcHJlY2F0aW9uV2FybmluZykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpZXQ9VHJ1ZSk6CisgICAgICAgICAgICBlcnJtc2cgPSAiQ2FuJ3QgbWl4IHN0cmluZ3MgYW5kIGJ5dGVzIGluIHBhdGggY29tcG9uZW50cyIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoYidieXRlcycsICdzdHInKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aCgnc3RyJywgYidieXRlcycpCisgICAgICAgICAgICBlcnJtc2cgPSByJ3JlbHBhdGhcKFwpIGFyZ3VtZW50IG11c3QgYmUgc3RyIG9yIGJ5dGVzLCBub3QgJXInCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoNDIsICdzdHInKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5yZWxwYXRoKCdzdHInLCA0MikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdieXRlYXJyYXknKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aChieXRlYXJyYXkoYidmb28nKSwgYnl0ZWFycmF5KGInYmFyJykpCisKIAogaWYgX19uYW1lX189PSJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5IGIvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQppbmRleCAxODUzYTJkLi43MTQ3MmNkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKQEAgLTM0LDggKzM0LDggQEAKICMgPiAqKiBDaGFuZ2VkIGZyb20gcHJldmlvdXMgInJhbmdlLWFuZC1hLWhhbGYiIHRvICJub25lIjsgdGhlCiAjID4gcmFuZ2UtYW5kLWEtaGFsZiBjaGVja2luZyB3YXNuJ3QgcGFydGljdWxhcmx5IHVzZWZ1bC4KICMKLSMgUGx1cyBhIEMgQVBJIG9yIHR3bywgZS5nLiBQeUludF9Bc0xvbmdNYXNrKCkgLT4KLSMgdW5zaWduZWQgbG9uZyBhbmQgUHlJbnRfQXNMb25nTG9uZ01hc2soKSAtPiB1bnNpZ25lZAorIyBQbHVzIGEgQyBBUEkgb3IgdHdvLCBlLmcuIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2soKSAtPgorIyB1bnNpZ25lZCBsb25nIGFuZCBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzaygpIC0+IHVuc2lnbmVkCiAjIGxvbmcgbG9uZyAoaWYgdGhhdCBleGlzdHMpLgogCiBMQVJHRSA9IDB4N0ZGRkZGRkYKQEAgLTQ4Miw3ICs0ODIsNyBAQAogICAgIGRlZiB0ZXN0X3Moc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX3MoJ2FiY1x4ZTknKSwgYidhYmNceGMzXHhhOScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19zLCAnbnVsOlwwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXJnc19zLCAnbnVsOlwwJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3MsIGInYnl0ZXMnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfcywgYnl0ZWFycmF5KGInYnl0ZWFycmF5JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19zLCBtZW1vcnl2aWV3KGInbWVtb3J5dmlldycpKQpAQCAtNTA5LDcgKzUwOSw3IEBACiAgICAgZGVmIHRlc3RfeihzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfegogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfeignYWJjXHhlOScpLCBiJ2FiY1x4YzNceGE5JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3osICdudWw6XDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhcmdzX3osICdudWw6XDAnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfeiwgYidieXRlcycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc196LCBieXRlYXJyYXkoYidieXRlYXJyYXknKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3osIG1lbW9yeXZpZXcoYidtZW1vcnl2aWV3JykpCkBAIC01MzcsNyArNTM3LDcgQEAKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfeQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfeSwgJ2FiY1x4ZTknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfeShiJ2J5dGVzJyksIGInYnl0ZXMnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfeSwgYidudWw6XDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhcmdzX3ksIGInbnVsOlwwJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3ksIGJ5dGVhcnJheShiJ2J5dGVhcnJheScpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfeSwgbWVtb3J5dmlldyhiJ21lbW9yeXZpZXcnKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3ksIE5vbmUpCkBAIC01NzcsNyArNTc3LDcgQEAKICAgICBkZWYgdGVzdF91KHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc191CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc191KCdhYmNceGU5JyksICdhYmNceGU5JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3UsICdudWw6XDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhcmdzX3UsICdudWw6XDAnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfdSwgYidieXRlcycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc191LCBieXRlYXJyYXkoYidieXRlYXJyYXknKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3UsIG1lbW9yeXZpZXcoYidtZW1vcnl2aWV3JykpCkBAIC01OTUsNyArNTk1LDcgQEAKICAgICBkZWYgdGVzdF9aKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19aCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19aKCdhYmNceGU5JyksICdhYmNceGU5JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX1osICdudWw6XDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhcmdzX1osICdudWw6XDAnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfWiwgYidieXRlcycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19aLCBieXRlYXJyYXkoYidieXRlYXJyYXknKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX1osIG1lbW9yeXZpZXcoYidtZW1vcnl2aWV3JykpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dldG9wdC5weSBiL0xpYi90ZXN0L3Rlc3RfZ2V0b3B0LnB5CmluZGV4IGZhNTcwMWYuLjkyNzVkYzQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2V0b3B0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2V0b3B0LnB5CkBAIC0xLDcgKzEsNyBAQAogIyB0ZXN0X2dldG9wdC5weQogIyBEYXZpZCBHb29kZ2VyIDxkZ29vZGdlckBiaWdmb290LmNvbT4gMjAwMC0wOC0xOQogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgcnVuX2RvY3Rlc3QsIHJ1bl91bml0dGVzdCwgRW52aXJvbm1lbnRWYXJHdWFyZAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIHJ1bl9kb2N0ZXN0LCBFbnZpcm9ubWVudFZhckd1YXJkCiBpbXBvcnQgdW5pdHRlc3QKIAogaW1wb3J0IGdldG9wdApAQCAtMTgwLDggKzE4MCw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9uZ29wdHMsIFsoJy0taGVscCcsICd4JyldKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhnZXRvcHQuR2V0b3B0RXJyb3IsIGdldG9wdC5nZXRvcHQsIFsnLS1oZWxwPSddLCAnJywgWydoZWxwJ10pCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoR2V0b3B0VGVzdHMpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2V0dGV4dC5weSBiL0xpYi90ZXN0L3Rlc3RfZ2V0dGV4dC5weQppbmRleCAyNzM3ZTgxLi5kZTYxMGM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dldHRleHQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZXR0ZXh0LnB5CkBAIC0zMyw2ICszMyw1NSBAQAogY2lCVVFVZ0tkSEpuWjNKclp5QjZjbVptYm5SeUlIQnVaMjU1WW5RZ2VYWnZaVzVsYkM0QVltRmpiMjRBZDJsdWF5QjNhVzVyQUE9PQogJycnCiAKKyMgVGhpcyBkYXRhIGNvbnRhaW5zIGFuIGludmFsaWQgbWFqb3IgdmVyc2lvbiBudW1iZXIgKDUpCisjIEFuIHVuZXhwZWN0ZWQgbWFqb3IgdmVyc2lvbiBudW1iZXIgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gZXJyb3Igd2hlbgorIyBwYXJzaW5nIGEgLm1vIGZpbGUKKworR05VX01PX0RBVEFfQkFEX01BSk9SX1ZFUlNJT04gPSBiJycnXAorM2hJRWxRQUFCUUFHQUFBQUhBQUFBRXdBQUFBTEFBQUFmQUFBQUFBQUFBQ29BQUFBRlFBQUFLa0FBQUFqQUFBQXZ3QUFBS0VBQUFEagorQUFBQUJ3QUFBSVVCQUFBTEFBQUFqUUVBQUVVQkFBQ1pBUUFBRmdBQUFOOENBQUFlQUFBQTlnSUFBS0VBQUFBVkF3QUFCUUFBQUxjRAorQUFBSkFBQUF2UU1BQUFFQUFBQURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFCUUFBQUFZQUFBQUNBQUFBQUZKaAorZVcxdmJtUWdUSFY0ZFhKNUlGbGhZMmd0ZEFCVWFHVnlaU0JwY3lBbGN5Qm1hV3hsQUZSb1pYSmxJR0Z5WlNBbGN5Qm1hV3hsY3dCVQorYUdseklHMXZaSFZzWlNCd2NtOTJhV1JsY3lCcGJuUmxjbTVoZEdsdmJtRnNhWHBoZEdsdmJpQmhibVFnYkc5allXeHBlbUYwYVc5dQorQ25OMWNIQnZjblFnWm05eUlIbHZkWElnVUhsMGFHOXVJSEJ5YjJkeVlXMXpJR0o1SUhCeWIzWnBaR2x1WnlCaGJpQnBiblJsY21aaAorWTJVZ2RHOGdkR2hsSUVkT1ZRcG5aWFIwWlhoMElHMWxjM05oWjJVZ1kyRjBZV3h2WnlCc2FXSnlZWEo1TGdCdGRXeHNkWE5yQUc1MQorWkdkbElHNTFaR2RsQUZCeWIycGxZM1F0U1dRdFZtVnljMmx2YmpvZ01pNHdDbEJQTFZKbGRtbHphVzl1TFVSaGRHVTZJREl3TURBdAorTURndE1qa2dNVEk2TVRrdE1EUTZNREFLVEdGemRDMVVjbUZ1YzJ4aGRHOXlPaUJLTGlCRVlYWnBaQ0JKWXNPaHc3RmxlaUE4YWkxaworWVhacFpFQnViMjl6TG1aeVBncE1ZVzVuZFdGblpTMVVaV0Z0T2lCWVdDQThjSGwwYUc5dUxXUmxka0J3ZVhSb2IyNHViM0puUGdwTgorU1UxRkxWWmxjbk5wYjI0NklERXVNQXBEYjI1MFpXNTBMVlI1Y0dVNklIUmxlSFF2Y0d4aGFXNDdJR05vWVhKelpYUTlhWE52TFRnNAorTlRrdE1RcERiMjUwWlc1MExWUnlZVzV6Wm1WeUxVVnVZMjlrYVc1bk9pQnViMjVsQ2tkbGJtVnlZWFJsWkMxQ2VUb2djSGxuWlhSMAorWlhoMExuQjVJREV1TVFwUWJIVnlZV3d0Um05eWJYTTZJRzV3YkhWeVlXeHpQVEk3SUhCc2RYSmhiRDF1SVQweE93b0FWR2h5YjJGMAorZDI5aVlteGxjaUJOWVc1bmNtOTJaUUJJWVhrZ0pYTWdabWxqYUdWeWJ3QklZWGtnSlhNZ1ptbGphR1Z5YjNNQVIzVjJaaUI2WW5GbworZVhJZ1kyVmlhWFp4Y21ZZ2RtRm5jbVZoYm1kMlltRnVlWFp0Ym1kMlltRWdibUZ4SUhsaWNHNTVkbTF1WjNaaVlRcG1hR05qWW1WbgorSUhOaVpTQnNZbWhsSUVOc1ozVmlZU0JqWldKMFpXNTZaaUJ2YkNCalpXSnBkbkYyWVhRZ2JtRWdkbUZuY21WemJuQnlJR2RpSUdkMQorY2lCVVFVZ0tkSEpuWjNKclp5QjZjbVptYm5SeUlIQnVaMjU1WW5RZ2VYWnZaVzVsYkM0QVltRmpiMjRBZDJsdWF5QjNhVzVyQUE9PQorJycnCisKKyMgVGhpcyBkYXRhIGNvbnRhaW5zIGFuIGludmFsaWQgbWlub3IgdmVyc2lvbiBudW1iZXIgKDcpCisjIEFuIHVuZXhwZWN0ZWQgbWlub3IgdmVyc2lvbiBudW1iZXIgb25seSBpbmRpY2F0ZXMgdGhhdCBzb21lIG9mIHRoZSBmaWxlJ3MKKyMgY29udGVudHMgbWF5IG5vdCBiZSBhYmxlIHRvIGJlIHJlYWQuIEl0IGRvZXMgbm90IGluZGljYXRlIGFuIGVycm9yLgorCitHTlVfTU9fREFUQV9CQURfTUlOT1JfVkVSU0lPTiA9IGInJydcCiszaElFbFFjQUFBQUdBQUFBSEFBQUFFd0FBQUFMQUFBQWZBQUFBQUFBQUFDb0FBQUFGUUFBQUtrQUFBQWpBQUFBdndBQUFLRUFBQURqCitBQUFBQndBQUFJVUJBQUFMQUFBQWpRRUFBRVVCQUFDWkFRQUFGZ0FBQU44Q0FBQWVBQUFBOWdJQUFLRUFBQUFWQXdBQUJRQUFBTGNECitBQUFKQUFBQXZRTUFBQUVBQUFBREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUJRQUFBQVlBQUFBQ0FBQUFBRkpoCitlVzF2Ym1RZ1RIVjRkWEo1SUZsaFkyZ3RkQUJVYUdWeVpTQnBjeUFsY3lCbWFXeGxBRlJvWlhKbElHRnlaU0FsY3lCbWFXeGxjd0JVCithR2x6SUcxdlpIVnNaU0J3Y205MmFXUmxjeUJwYm5SbGNtNWhkR2x2Ym1Gc2FYcGhkR2x2YmlCaGJtUWdiRzlqWVd4cGVtRjBhVzl1CitDbk4xY0hCdmNuUWdabTl5SUhsdmRYSWdVSGwwYUc5dUlIQnliMmR5WVcxeklHSjVJSEJ5YjNacFpHbHVaeUJoYmlCcGJuUmxjbVpoCitZMlVnZEc4Z2RHaGxJRWRPVlFwblpYUjBaWGgwSUcxbGMzTmhaMlVnWTJGMFlXeHZaeUJzYVdKeVlYSjVMZ0J0ZFd4c2RYTnJBRzUxCitaR2RsSUc1MVpHZGxBRkJ5YjJwbFkzUXRTV1F0Vm1WeWMybHZiam9nTWk0d0NsQlBMVkpsZG1semFXOXVMVVJoZEdVNklESXdNREF0CitNRGd0TWprZ01USTZNVGt0TURRNk1EQUtUR0Z6ZEMxVWNtRnVjMnhoZEc5eU9pQktMaUJFWVhacFpDQkpZc09odzdGbGVpQThhaTFrCitZWFpwWkVCdWIyOXpMbVp5UGdwTVlXNW5kV0ZuWlMxVVpXRnRPaUJZV0NBOGNIbDBhRzl1TFdSbGRrQndlWFJvYjI0dWIzSm5QZ3BOCitTVTFGTFZabGNuTnBiMjQ2SURFdU1BcERiMjUwWlc1MExWUjVjR1U2SUhSbGVIUXZjR3hoYVc0N0lHTm9ZWEp6WlhROWFYTnZMVGc0CitOVGt0TVFwRGIyNTBaVzUwTFZSeVlXNXpabVZ5TFVWdVkyOWthVzVuT2lCdWIyNWxDa2RsYm1WeVlYUmxaQzFDZVRvZ2NIbG5aWFIwCitaWGgwTG5CNUlERXVNUXBRYkhWeVlXd3RSbTl5YlhNNklHNXdiSFZ5WVd4elBUSTdJSEJzZFhKaGJEMXVJVDB4T3dvQVZHaHliMkYwCitkMjlpWW14bGNpQk5ZVzVuY205MlpRQklZWGtnSlhNZ1ptbGphR1Z5YndCSVlYa2dKWE1nWm1samFHVnliM01BUjNWMlppQjZZbkZvCitlWElnWTJWaWFYWnhjbVlnZG1GbmNtVmhibWQyWW1GdWVYWnRibWQyWW1FZ2JtRnhJSGxpY0c1NWRtMXVaM1ppWVFwbWFHTmpZbVZuCitJSE5pWlNCc1ltaGxJRU5zWjNWaVlTQmpaV0owWlc1NlppQnZiQ0JqWldKcGRuRjJZWFFnYm1FZ2RtRm5jbVZ6Ym5CeUlHZGlJR2QxCitjaUJVUVVnS2RISm5aM0pyWnlCNmNtWm1iblJ5SUhCdVoyNTVZblFnZVhadlpXNWxiQzRBWW1GamIyNEFkMmx1YXlCM2FXNXJBQT09CisnJycKKworCiBVTU9fREFUQSA9IGInJydcCiAzaElFbFFBQUFBQUNBQUFBSEFBQUFDd0FBQUFGQUFBQVBBQUFBQUFBQUFCUUFBQUFCQUFBQUZFQUFBQVBBUUFBVmdBQUFBUUFBQUJtCiBBUUFBQVFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlXTERuZ0JRY205cVpXTjBMVWxrTFZabGNuTnBiMjQ2SURJdU1BcFFUeTFTCkBAIC01Niw2ICsxMDUsOCBAQAogCiBMT0NBTEVESVIgPSBvcy5wYXRoLmpvaW4oJ3h4JywgJ0xDX01FU1NBR0VTJykKIE1PRklMRSA9IG9zLnBhdGguam9pbihMT0NBTEVESVIsICdnZXR0ZXh0Lm1vJykKK01PRklMRV9CQURfTUFKT1JfVkVSU0lPTiA9IG9zLnBhdGguam9pbihMT0NBTEVESVIsICdnZXR0ZXh0X2JhZF9tYWpvcl92ZXJzaW9uLm1vJykKK01PRklMRV9CQURfTUlOT1JfVkVSU0lPTiA9IG9zLnBhdGguam9pbihMT0NBTEVESVIsICdnZXR0ZXh0X2JhZF9taW5vcl92ZXJzaW9uLm1vJykKIFVNT0ZJTEUgPSBvcy5wYXRoLmpvaW4oTE9DQUxFRElSLCAndWdldHRleHQubW8nKQogTU1PRklMRSA9IG9zLnBhdGguam9pbihMT0NBTEVESVIsICdtZXRhZGF0YS5tbycpCiAKQEAgLTY2LDYgKzExNywxMCBAQAogICAgICAgICAgICAgb3MubWFrZWRpcnMoTE9DQUxFRElSKQogICAgICAgICB3aXRoIG9wZW4oTU9GSUxFLCAnd2InKSBhcyBmcDoKICAgICAgICAgICAgIGZwLndyaXRlKGJhc2U2NC5kZWNvZGVieXRlcyhHTlVfTU9fREFUQSkpCisgICAgICAgIHdpdGggb3BlbihNT0ZJTEVfQkFEX01BSk9SX1ZFUlNJT04sICd3YicpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUoYmFzZTY0LmRlY29kZWJ5dGVzKEdOVV9NT19EQVRBX0JBRF9NQUpPUl9WRVJTSU9OKSkKKyAgICAgICAgd2l0aCBvcGVuKE1PRklMRV9CQURfTUlOT1JfVkVSU0lPTiwgJ3diJykgYXMgZnA6CisgICAgICAgICAgICBmcC53cml0ZShiYXNlNjQuZGVjb2RlYnl0ZXMoR05VX01PX0RBVEFfQkFEX01JTk9SX1ZFUlNJT04pKQogICAgICAgICB3aXRoIG9wZW4oVU1PRklMRSwgJ3diJykgYXMgZnA6CiAgICAgICAgICAgICBmcC53cml0ZShiYXNlNjQuZGVjb2RlYnl0ZXMoVU1PX0RBVEEpKQogICAgICAgICB3aXRoIG9wZW4oTU1PRklMRSwgJ3diJykgYXMgZnA6CkBAIC0xNzIsNiArMjI3LDIxIEBACiAgICAgZGVmIHRlc3RfdGV4dGRvbWFpbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXR0ZXh0LnRleHRkb21haW4oKSwgJ2dldHRleHQnKQogCisgICAgZGVmIHRlc3RfYmFkX21ham9yX3ZlcnNpb24oc2VsZik6CisgICAgICAgIHdpdGggb3BlbihNT0ZJTEVfQkFEX01BSk9SX1ZFUlNJT04sICdyYicpIGFzIGZwOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBnZXR0ZXh0LkdOVVRyYW5zbGF0aW9ucyhmcCkKKworICAgICAgICAgICAgZXhjZXB0aW9uID0gY20uZXhjZXB0aW9uCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Y2VwdGlvbi5lcnJubywgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjZXB0aW9uLnN0cmVycm9yLCAiQmFkIHZlcnNpb24gbnVtYmVyIDUiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGNlcHRpb24uZmlsZW5hbWUsIE1PRklMRV9CQURfTUFKT1JfVkVSU0lPTikKKworICAgIGRlZiB0ZXN0X2JhZF9taW5vcl92ZXJzaW9uKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4oTU9GSUxFX0JBRF9NSU5PUl9WRVJTSU9OLCAncmInKSBhcyBmcDoKKyAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBubyBlcnJvciBpcyB0aHJvd24gd2l0aCBhIGJhZCBtaW5vciB2ZXJzaW9uIG51bWJlcgorICAgICAgICAgICAgZ2V0dGV4dC5HTlVUcmFuc2xhdGlvbnMoZnApCisKICAgICBkZWYgdGVzdF9zb21lX3RyYW5zbGF0aW9ucyhzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgICMgdGVzdCBzb21lIHRyYW5zbGF0aW9ucwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nbG9iLnB5IGIvTGliL3Rlc3QvdGVzdF9nbG9iLnB5CmluZGV4IGE1YWI4ZDYuLmRjZTY0ZjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2xvYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dsb2IucHkKQEAgLTQsOCArNCw4IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChydW5fdW5pdHRlc3QsIFRFU1RGTiwgc2tpcF91bmxlc3Nfc3ltbGluaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuX3N5bWxpbmssIGNyZWF0ZV9lbXB0eV9maWxlKQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChURVNURk4sIHNraXBfdW5sZXNzX3N5bWxpbmssCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbl9zeW1saW5rLCBjcmVhdGVfZW1wdHlfZmlsZSwgY2hhbmdlX2N3ZCkKIAogCiBjbGFzcyBHbG9iVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTMsNiArMTMsOSBAQAogICAgIGRlZiBub3JtKHNlbGYsICpwYXJ0cyk6CiAgICAgICAgIHJldHVybiBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICpwYXJ0cykpCiAKKyAgICBkZWYgam9pbnMoc2VsZiwgKnR1cGxlcyk6CisgICAgICAgIHJldHVybiBbb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgKnBhcnRzKSBmb3IgcGFydHMgaW4gdHVwbGVzXQorCiAgICAgZGVmIG1rdGVtcChzZWxmLCAqcGFydHMpOgogICAgICAgICBmaWxlbmFtZSA9IHNlbGYubm9ybSgqcGFydHMpCiAgICAgICAgIGJhc2UsIGZpbGUgPSBvcy5wYXRoLnNwbGl0KGZpbGVuYW1lKQpAQCAtMjgsNiArMzEsNyBAQAogICAgICAgICBzZWxmLm1rdGVtcCgnLmJiJywgJ0gnKQogICAgICAgICBzZWxmLm1rdGVtcCgnYWFhJywgJ3p6ekYnKQogICAgICAgICBzZWxmLm1rdGVtcCgnWlpaJykKKyAgICAgICAgc2VsZi5ta3RlbXAoJ0VGJykKICAgICAgICAgc2VsZi5ta3RlbXAoJ2EnLCAnYmNkJywgJ0VGJykKICAgICAgICAgc2VsZi5ta3RlbXAoJ2EnLCAnYmNkJywgJ2VmZycsICdoYScpCiAgICAgICAgIGlmIGNhbl9zeW1saW5rKCk6CkBAIC0zOCwxNyArNDIsMTcgQEAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi50ZW1wZGlyKQogCi0gICAgZGVmIGdsb2Ioc2VsZiwgKnBhcnRzKToKKyAgICBkZWYgZ2xvYihzZWxmLCAqcGFydHMsICoqa3dhcmdzKToKICAgICAgICAgaWYgbGVuKHBhcnRzKSA9PSAxOgogICAgICAgICAgICAgcGF0dGVybiA9IHBhcnRzWzBdCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwYXR0ZXJuID0gb3MucGF0aC5qb2luKCpwYXJ0cykKICAgICAgICAgcCA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsIHBhdHRlcm4pCi0gICAgICAgIHJlcyA9IGdsb2IuZ2xvYihwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZ2xvYi5pZ2xvYihwKSksIHJlcykKKyAgICAgICAgcmVzID0gZ2xvYi5nbG9iKHAsICoqa3dhcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZ2xvYi5pZ2xvYihwLCAqKmt3YXJncykpLCByZXMpCiAgICAgICAgIGJyZXMgPSBbb3MuZnNlbmNvZGUoeCkgZm9yIHggaW4gcmVzXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2IuZ2xvYihvcy5mc2VuY29kZShwKSksIGJyZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChnbG9iLmlnbG9iKG9zLmZzZW5jb2RlKHApKSksIGJyZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2xvYi5nbG9iKG9zLmZzZW5jb2RlKHApLCAqKmt3YXJncyksIGJyZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChnbG9iLmlnbG9iKG9zLmZzZW5jb2RlKHApLCAqKmt3YXJncykpLCBicmVzKQogICAgICAgICByZXR1cm4gcmVzCiAKICAgICBkZWYgYXNzZXJ0U2VxdWVuY2VzRXF1YWxfbm9vcmRlcihzZWxmLCBsMSwgbDIpOgpAQCAtMTkyLDkgKzE5NiwxMjIgQEAKICAgICAgICAgY2hlY2soJy8vPy9jOi8/JywgJy8vPy9jOi9bP10nKQogICAgICAgICBjaGVjaygnLy8qLyovKicsICcvLyovKi9bKl0nKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEdsb2JUZXN0cykKKyAgICBkZWYgcmdsb2Ioc2VsZiwgKnBhcnRzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLmdsb2IoKnBhcnRzLCByZWN1cnNpdmU9VHJ1ZSwgKiprd2FyZ3MpCisKKyAgICBkZWYgdGVzdF9yZWN1cnNpdmVfZ2xvYihzZWxmKToKKyAgICAgICAgZXEgPSBzZWxmLmFzc2VydFNlcXVlbmNlc0VxdWFsX25vb3JkZXIKKyAgICAgICAgZnVsbCA9IFsoJ0VGJywpLCAoJ1paWicsKSwKKyAgICAgICAgICAgICAgICAoJ2EnLCksICgnYScsICdEJyksCisgICAgICAgICAgICAgICAgKCdhJywgJ2JjZCcpLAorICAgICAgICAgICAgICAgICgnYScsICdiY2QnLCAnRUYnKSwKKyAgICAgICAgICAgICAgICAoJ2EnLCAnYmNkJywgJ2VmZycpLAorICAgICAgICAgICAgICAgICgnYScsICdiY2QnLCAnZWZnJywgJ2hhJyksCisgICAgICAgICAgICAgICAgKCdhYWEnLCksICgnYWFhJywgJ3p6ekYnKSwKKyAgICAgICAgICAgICAgICAoJ2FhYicsKSwgKCdhYWInLCAnRicpLAorICAgICAgICAgICAgICAgXQorICAgICAgICBpZiBjYW5fc3ltbGluaygpOgorICAgICAgICAgICAgZnVsbCArPSBbKCdzeW0xJywpLCAoJ3N5bTInLCksCisgICAgICAgICAgICAgICAgICAgICAoJ3N5bTMnLCksCisgICAgICAgICAgICAgICAgICAgICAoJ3N5bTMnLCAnRUYnKSwKKyAgICAgICAgICAgICAgICAgICAgICgnc3ltMycsICdlZmcnKSwKKyAgICAgICAgICAgICAgICAgICAgICgnc3ltMycsICdlZmcnLCAnaGEnKSwKKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICBlcShzZWxmLnJnbG9iKCcqKicpLCBzZWxmLmpvaW5zKCgnJywpLCAqZnVsbCkpCisgICAgICAgIGVxKHNlbGYucmdsb2Iob3MuY3VyZGlyLCAnKionKSwKKyAgICAgICAgICAgIHNlbGYuam9pbnMoKG9zLmN1cmRpciwgJycpLCAqKChvcy5jdXJkaXIsKSArIGkgZm9yIGkgaW4gZnVsbCkpKQorICAgICAgICBkaXJzID0gWygnYScsICcnKSwgKCdhJywgJ2JjZCcsICcnKSwgKCdhJywgJ2JjZCcsICdlZmcnLCAnJyksCisgICAgICAgICAgICAgICAgKCdhYWEnLCAnJyksICgnYWFiJywgJycpXQorICAgICAgICBpZiBjYW5fc3ltbGluaygpOgorICAgICAgICAgICAgZGlycyArPSBbKCdzeW0zJywgJycpLCAoJ3N5bTMnLCAnZWZnJywgJycpXQorICAgICAgICBlcShzZWxmLnJnbG9iKCcqKicsICcnKSwgc2VsZi5qb2lucygoJycsKSwgKmRpcnMpKQorCisgICAgICAgIGVxKHNlbGYucmdsb2IoJ2EnLCAnKionKSwgc2VsZi5qb2lucygKKyAgICAgICAgICAgICgnYScsICcnKSwgKCdhJywgJ0QnKSwgKCdhJywgJ2JjZCcpLCAoJ2EnLCAnYmNkJywgJ0VGJyksCisgICAgICAgICAgICAoJ2EnLCAnYmNkJywgJ2VmZycpLCAoJ2EnLCAnYmNkJywgJ2VmZycsICdoYScpKSkKKyAgICAgICAgZXEoc2VsZi5yZ2xvYignYSoqJyksIHNlbGYuam9pbnMoKCdhJywpLCAoJ2FhYScsKSwgKCdhYWInLCkpKQorICAgICAgICBleHBlY3QgPSBbKCdhJywgJ2JjZCcsICdFRicpLCAoJ0VGJywpXQorICAgICAgICBpZiBjYW5fc3ltbGluaygpOgorICAgICAgICAgICAgZXhwZWN0ICs9IFsoJ3N5bTMnLCAnRUYnKV0KKyAgICAgICAgZXEoc2VsZi5yZ2xvYignKionLCAnRUYnKSwgc2VsZi5qb2lucygqZXhwZWN0KSkKKyAgICAgICAgZXhwZWN0ID0gWygnYScsICdiY2QnLCAnRUYnKSwgKCdhYWEnLCAnenp6RicpLCAoJ2FhYicsICdGJyksICgnRUYnLCldCisgICAgICAgIGlmIGNhbl9zeW1saW5rKCk6CisgICAgICAgICAgICBleHBlY3QgKz0gWygnc3ltMycsICdFRicpXQorICAgICAgICBlcShzZWxmLnJnbG9iKCcqKicsICcqRicpLCBzZWxmLmpvaW5zKCpleHBlY3QpKQorICAgICAgICBlcShzZWxmLnJnbG9iKCcqKicsICcqRicsICcnKSwgW10pCisgICAgICAgIGVxKHNlbGYucmdsb2IoJyoqJywgJ2JjZCcsICcqJyksIHNlbGYuam9pbnMoCisgICAgICAgICAgICAoJ2EnLCAnYmNkJywgJ0VGJyksICgnYScsICdiY2QnLCAnZWZnJykpKQorICAgICAgICBlcShzZWxmLnJnbG9iKCdhJywgJyoqJywgJ2JjZCcpLCBzZWxmLmpvaW5zKCgnYScsICdiY2QnKSkpCisKKyAgICAgICAgd2l0aCBjaGFuZ2VfY3dkKHNlbGYudGVtcGRpcik6CisgICAgICAgICAgICBqb2luID0gb3MucGF0aC5qb2luCisgICAgICAgICAgICBlcShnbG9iLmdsb2IoJyoqJywgcmVjdXJzaXZlPVRydWUpLCBbam9pbigqaSkgZm9yIGkgaW4gZnVsbF0pCisgICAgICAgICAgICBlcShnbG9iLmdsb2Ioam9pbignKionLCAnJyksIHJlY3Vyc2l2ZT1UcnVlKSwKKyAgICAgICAgICAgICAgICBbam9pbigqaSkgZm9yIGkgaW4gZGlyc10pCisgICAgICAgICAgICBlcShnbG9iLmdsb2Ioam9pbignKionLCAnKicpLCByZWN1cnNpdmU9VHJ1ZSksCisgICAgICAgICAgICAgICAgW2pvaW4oKmkpIGZvciBpIGluIGZ1bGxdKQorICAgICAgICAgICAgZXEoZ2xvYi5nbG9iKGpvaW4ob3MuY3VyZGlyLCAnKionKSwgcmVjdXJzaXZlPVRydWUpLAorICAgICAgICAgICAgICAgIFtqb2luKG9zLmN1cmRpciwgJycpXSArIFtqb2luKG9zLmN1cmRpciwgKmkpIGZvciBpIGluIGZ1bGxdKQorICAgICAgICAgICAgZXEoZ2xvYi5nbG9iKGpvaW4ob3MuY3VyZGlyLCAnKionLCAnJyksIHJlY3Vyc2l2ZT1UcnVlKSwKKyAgICAgICAgICAgICAgICBbam9pbihvcy5jdXJkaXIsICcnKV0gKyBbam9pbihvcy5jdXJkaXIsICppKSBmb3IgaSBpbiBkaXJzXSkKKyAgICAgICAgICAgIGVxKGdsb2IuZ2xvYihqb2luKG9zLmN1cmRpciwgJyoqJywgJyonKSwgcmVjdXJzaXZlPVRydWUpLAorICAgICAgICAgICAgICAgIFtqb2luKG9zLmN1cmRpciwgKmkpIGZvciBpIGluIGZ1bGxdKQorICAgICAgICAgICAgZXEoZ2xvYi5nbG9iKGpvaW4oJyoqJywnenoqRicpLCByZWN1cnNpdmU9VHJ1ZSksCisgICAgICAgICAgICAgICAgW2pvaW4oJ2FhYScsICd6enpGJyldKQorICAgICAgICAgICAgZXEoZ2xvYi5nbG9iKCcqKnp6KkYnLCByZWN1cnNpdmU9VHJ1ZSksIFtdKQorICAgICAgICAgICAgZXhwZWN0ID0gW2pvaW4oJ2EnLCAnYmNkJywgJ0VGJyksICdFRiddCisgICAgICAgICAgICBpZiBjYW5fc3ltbGluaygpOgorICAgICAgICAgICAgICAgIGV4cGVjdCArPSBbam9pbignc3ltMycsICdFRicpXQorICAgICAgICAgICAgZXEoZ2xvYi5nbG9iKGpvaW4oJyoqJywgJ0VGJyksIHJlY3Vyc2l2ZT1UcnVlKSwgZXhwZWN0KQorCisKK0Bza2lwX3VubGVzc19zeW1saW5rCitjbGFzcyBTeW1saW5rTG9vcEdsb2JUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9zZWxmbGluayhzZWxmKToKKyAgICAgICAgdGVtcGRpciA9IFRFU1RGTiArICJfZGlyIgorICAgICAgICBvcy5tYWtlZGlycyh0ZW1wZGlyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2h1dGlsLnJtdHJlZSwgdGVtcGRpcikKKyAgICAgICAgd2l0aCBjaGFuZ2VfY3dkKHRlbXBkaXIpOgorICAgICAgICAgICAgb3MubWFrZWRpcnMoJ2RpcicpCisgICAgICAgICAgICBjcmVhdGVfZW1wdHlfZmlsZShvcy5wYXRoLmpvaW4oJ2RpcicsICdmaWxlJykpCisgICAgICAgICAgICBvcy5zeW1saW5rKG9zLmN1cmRpciwgb3MucGF0aC5qb2luKCdkaXInLCAnbGluaycpKQorCisgICAgICAgICAgICByZXN1bHRzID0gZ2xvYi5nbG9iKCcqKicsIHJlY3Vyc2l2ZT1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIGxlbihzZXQocmVzdWx0cykpKQorICAgICAgICAgICAgcmVzdWx0cyA9IHNldChyZXN1bHRzKQorICAgICAgICAgICAgZGVwdGggPSAwCisgICAgICAgICAgICB3aGlsZSByZXN1bHRzOgorICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oKihbJ2RpciddICsgWydsaW5rJ10gKiBkZXB0aCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihwYXRoLCByZXN1bHRzKQorICAgICAgICAgICAgICAgIHJlc3VsdHMucmVtb3ZlKHBhdGgpCisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdHM6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoLCAnZmlsZScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihwYXRoLCByZXN1bHRzKQorICAgICAgICAgICAgICAgIHJlc3VsdHMucmVtb3ZlKHBhdGgpCisgICAgICAgICAgICAgICAgZGVwdGggKz0gMQorCisgICAgICAgICAgICByZXN1bHRzID0gZ2xvYi5nbG9iKG9zLnBhdGguam9pbignKionLCAnZmlsZScpLCByZWN1cnNpdmU9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCBsZW4oc2V0KHJlc3VsdHMpKSkKKyAgICAgICAgICAgIHJlc3VsdHMgPSBzZXQocmVzdWx0cykKKyAgICAgICAgICAgIGRlcHRoID0gMAorICAgICAgICAgICAgd2hpbGUgcmVzdWx0czoKKyAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCooWydkaXInXSArIFsnbGluayddICogZGVwdGggKyBbJ2ZpbGUnXSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihwYXRoLCByZXN1bHRzKQorICAgICAgICAgICAgICAgIHJlc3VsdHMucmVtb3ZlKHBhdGgpCisgICAgICAgICAgICAgICAgZGVwdGggKz0gMQorCisgICAgICAgICAgICByZXN1bHRzID0gZ2xvYi5nbG9iKG9zLnBhdGguam9pbignKionLCAnJyksIHJlY3Vyc2l2ZT1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIGxlbihzZXQocmVzdWx0cykpKQorICAgICAgICAgICAgcmVzdWx0cyA9IHNldChyZXN1bHRzKQorICAgICAgICAgICAgZGVwdGggPSAwCisgICAgICAgICAgICB3aGlsZSByZXN1bHRzOgorICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oKihbJ2RpciddICsgWydsaW5rJ10gKiBkZXB0aCArIFsnJ10pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0aCwgcmVzdWx0cykKKyAgICAgICAgICAgICAgICByZXN1bHRzLnJlbW92ZShwYXRoKQorICAgICAgICAgICAgICAgIGRlcHRoICs9IDEKIAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkgYi9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkKaW5kZXggMjUwNDUyMy4uZWMzZDc4MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weQpAQCAtMSw3ICsxLDggQEAKICMgUHl0aG9uIHRlc3Qgc2V0IC0tIHBhcnQgMSwgZ3JhbW1hci4KICMgVGhpcyBqdXN0IHRlc3RzIHdoZXRoZXIgdGhlIHBhcnNlciBhY2NlcHRzIHRoZW0gYWxsLgogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBjaGVja19zeW50YXhfZXJyb3IKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjaGVja19zeW50YXhfZXJyb3IKK2ltcG9ydCBpbnNwZWN0CiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKICMgdGVzdGluZyBpbXBvcnQgKgpAQCAtMjA1LDYgKzIwNiw3IEBACiAgICAgICAgIGQwMSgxKQogICAgICAgICBkMDEoKigxLCkpCiAgICAgICAgIGQwMSgqW10gb3IgWzJdKQorICAgICAgICBkMDEoKigpIG9yICgpLCAqe30gYW5kICgpLCAqKigpIG9yIHt9KQogICAgICAgICBkMDEoKip7J2EnOjJ9KQogICAgICAgICBkMDEoKip7J2EnOjJ9IG9yIHt9KQogICAgICAgICBkZWYgZDExKGEsIGI9MSk6IHBhc3MKQEAgLTI5OCw4ICszMDAsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBhcmdzLCBrd2FyZ3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKDEsIHg9MiwgKlszLCA0XSwgeT01KSwgKCgxLCAzLCA0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J3gnOjIsICd5Jzo1fSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiZigxLCAqKDIsMyksIDQpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKDEsICooMiwzKSwgNCksICgoMSwgMiwgMywgNCksIHt9KSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICJmKDEsIHg9MiwgKigzLDQpLCB4PTUpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKCoqeydlZ2dzJzonc2NyYW1ibGVkJywgJ3NwYW0nOidmcmllZCd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCksIHsnZWdncyc6J3NjcmFtYmxlZCcsICdzcGFtJzonZnJpZWQnfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZihzcGFtPSdmcmllZCcsICoqeydlZ2dzJzonc2NyYW1ibGVkJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKSwgeydlZ2dzJzonc2NyYW1ibGVkJywgJ3NwYW0nOidmcmllZCd9KSkKIAogICAgICAgICAjIGFyZ3VtZW50IGFubm90YXRpb24gdGVzdHMKICAgICAgICAgZGVmIGYoeCkgLT4gbGlzdDogcGFzcwpAQCAtNTMwLDcgKzUzNiw4IEBACiAgICAgICAgICMgTm90IGFsbG93ZWQgYXQgY2xhc3Mgc2NvcGUKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJjbGFzcyBmb286eWllbGQgMSIpCiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiY2xhc3MgZm9vOnlpZWxkIGZyb20gKCkiKQotCisgICAgICAgICMgQ2hlY2sgYW5ub3RhdGlvbiByZWZsZWFrIG9uIFN5bnRheEVycm9yCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoYTooeWllbGQpKTogcGFzcyIpCiAKICAgICBkZWYgdGVzdF9yYWlzZShzZWxmKToKICAgICAgICAgIyAncmFpc2UnIHRlc3QgWycsJyB0ZXN0XQpAQCAtMTAxOCw5ICsxMDI1LDEwMyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKChGYWxzZSBpcyAyKSBpcyAzKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKEZhbHNlIGlzIDIgaXMgMykKIAorICAgIGRlZiB0ZXN0X21hdHJpeF9tdWwoc2VsZik6CisgICAgICAgICMgVGhpcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgYSBjb21wcmVoZW5zaXZlIHRlc3QsIHJhdGhlciBqdXN0IHRvIGJlIGZldworICAgICAgICAjIHNhbXBsZXMgb2YgdGhlIEAgb3BlcmF0b3IgaW4gdGVzdF9ncmFtbWFyLnB5LgorICAgICAgICBjbGFzcyBNOgorICAgICAgICAgICAgZGVmIF9fbWF0bXVsX18oc2VsZiwgbyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIDQKKyAgICAgICAgICAgIGRlZiBfX2ltYXRtdWxfXyhzZWxmLCBvKToKKyAgICAgICAgICAgICAgICBzZWxmLm90aGVyID0gbworICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgIG0gPSBNKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtIEAgbSwgNCkKKyAgICAgICAgbSBAPSA0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ub3RoZXIsIDQyKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFRva2VuVGVzdHMsIEdyYW1tYXJUZXN0cykKKyAgICBkZWYgdGVzdF9hc3luY19hd2FpdChzZWxmKToKKyAgICAgICAgYXN5bmMgPSAxCisgICAgICAgIGF3YWl0ID0gMgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzeW5jLCAxKQorCisgICAgICAgIGRlZiBhc3luYygpOgorICAgICAgICAgICAgbm9ubG9jYWwgYXdhaXQKKyAgICAgICAgICAgIGF3YWl0ID0gMTAKKyAgICAgICAgYXN5bmMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0LCAxMCkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJvb2woYXN5bmMuX19jb2RlX18uY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0NPUk9VVElORSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIGRlZiBzdW0oKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBpZiAxOgorICAgICAgICAgICAgICAgIGF3YWl0IHNvbWVvYmooKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdC5fX25hbWVfXywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYm9vbCh0ZXN0Ll9fY29kZV9fLmNvX2ZsYWdzICYgaW5zcGVjdC5DT19DT1JPVVRJTkUpKQorCisgICAgICAgIGRlZiBkZWNvcmF0b3IoZnVuYyk6CisgICAgICAgICAgICBzZXRhdHRyKGZ1bmMsICdfbWFya2VkJywgVHJ1ZSkKKyAgICAgICAgICAgIHJldHVybiBmdW5jCisKKyAgICAgICAgQGRlY29yYXRvcgorICAgICAgICBhc3luYyBkZWYgdGVzdDIoKToKKyAgICAgICAgICAgIHJldHVybiAyMgorICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdDIuX21hcmtlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0Mi5fX25hbWVfXywgJ3Rlc3QyJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJvb2wodGVzdDIuX19jb2RlX18uY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0NPUk9VVElORSkpCisKKyAgICBkZWYgdGVzdF9hc3luY19mb3Ioc2VsZik6CisgICAgICAgIGNsYXNzIERvbmUoRXhjZXB0aW9uKTogcGFzcworCisgICAgICAgIGNsYXNzIEFJdGVyOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWl0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYW5leHRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24KKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBBSXRlcigpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGFzeW5jIGZvciBpLCBqIGluIEFJdGVyKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gQUl0ZXIoKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHJhaXNlIERvbmUKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKERvbmUpOgorICAgICAgICAgICAgZm9vKCkuc2VuZChOb25lKQorCisgICAgZGVmIHRlc3RfYXN5bmNfd2l0aChzZWxmKToKKyAgICAgICAgY2xhc3MgRG9uZShFeGNlcHRpb24pOiBwYXNzCisKKyAgICAgICAgY2xhc3MgbWFuYWdlcjoKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAoMSwgMikKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2VsZiwgKmV4Yyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXN5bmMgd2l0aCBtYW5hZ2VyKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgYXN5bmMgd2l0aCBtYW5hZ2VyKCkgYXMgeDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBhc3luYyB3aXRoIG1hbmFnZXIoKSBhcyAoeCwgeSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgYXN5bmMgd2l0aCBtYW5hZ2VyKCksIG1hbmFnZXIoKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBhc3luYyB3aXRoIG1hbmFnZXIoKSBhcyB4LCBtYW5hZ2VyKCkgYXMgeToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBhc3luYyB3aXRoIG1hbmFnZXIoKSBhcyB4LCBtYW5hZ2VyKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgcmFpc2UgRG9uZQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRG9uZSk6CisgICAgICAgICAgICBmb28oKS5zZW5kKE5vbmUpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ncnAucHkgYi9MaWIvdGVzdC90ZXN0X2dycC5weQppbmRleCA3NDkwNDFjLi4yNzJiMDg2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dycC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dycC5weQpAQCAtOTIsOCArOTIsNSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBncnAuZ2V0Z3JnaWQsIGZha2VnaWQpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChHcm91cERhdGFiYXNlVGVzdENhc2UpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weSBiL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQppbmRleCBiNDE3MDQ0Li4zYzUxNjczIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2d6aXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nemlwLnB5CkBAIC0zLDkgKzMsMTEgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBiaWdtZW10ZXN0LCBfNEcKIGltcG9ydCBvcwogaW1wb3J0IGlvCiBpbXBvcnQgc3RydWN0CitpbXBvcnQgYXJyYXkKIGd6aXAgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ2d6aXAnKQogCiBkYXRhMSA9IGIiIiIgIGludCBsZW5ndGg9REVGQVVMVEFMTE9DLCBlcnIgPSBaX09LOwpAQCAtNzcsMTUgKzc5LDE4IEBACiAgICAgZGVmIHRlc3Rfd3JpdGVfYnl0ZWFycmF5KHNlbGYpOgogICAgICAgICBzZWxmLndyaXRlX2FuZF9yZWFkX2JhY2soYnl0ZWFycmF5KGRhdGExICogNTApKQogCisgICAgZGVmIHRlc3Rfd3JpdGVfYXJyYXkoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfYW5kX3JlYWRfYmFjayhhcnJheS5hcnJheSgnSScsIGRhdGExICogNDApKQorCiAgICAgZGVmIHRlc3Rfd3JpdGVfaW5jb21wYXRpYmxlX3R5cGUoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IG5vbi1ieXRlcy1saWtlIHR5cGVzIHJhaXNlIFR5cGVFcnJvci4KICAgICAgICAgIyBJc3N1ZSAjMjE1NjA6IGF0dGVtcHRzIHRvIHdyaXRlIGluY29tcGF0aWJsZSB0eXBlcwogICAgICAgICAjIHNob3VsZCBub3QgYWZmZWN0IHRoZSBzdGF0ZSBvZiB0aGUgZmlsZW9iamVjdAogICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgJ3diJykgYXMgZjoKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKLSAgICAgICAgICAgICAgICBmLndyaXRlKCdhJykKKyAgICAgICAgICAgICAgICBmLndyaXRlKCcnKQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgotICAgICAgICAgICAgICAgIGYud3JpdGUoWzFdKQorICAgICAgICAgICAgICAgIGYud3JpdGUoW10pCiAgICAgICAgICAgICBmLndyaXRlKGRhdGExKQogICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgJ3JiJykgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGRhdGExKQpAQCAtMTEyLDYgKzExNywxNCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIG5yZWFkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJy5qb2luKGJsb2NrcyksIGRhdGExICogNTApCiAKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RywgbWVtdXNlPTEpCisgICAgZGVmIHRlc3RfcmVhZF9sYXJnZShzZWxmLCBzaXplKToKKyAgICAgICAgIyBSZWFkIGNodW5rIHNpemUgb3ZlciBVSU5UX01BWCBzaG91bGQgYmUgc3VwcG9ydGVkLCBkZXNwaXRlIHpsaWIncworICAgICAgICAjIGxpbWl0YXRpb24gcGVyIGxvdy1sZXZlbCBjYWxsCisgICAgICAgIGNvbXByZXNzZWQgPSBnemlwLmNvbXByZXNzKGRhdGExLCBjb21wcmVzc2xldmVsPTEpCisgICAgICAgIGYgPSBnemlwLkd6aXBGaWxlKGZpbGVvYmo9aW8uQnl0ZXNJTyhjb21wcmVzc2VkKSwgbW9kZT0ncmInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZChzaXplKSwgZGF0YTEpCisKICAgICBkZWYgdGVzdF9pb19vbl9jbG9zZWRfb2JqZWN0KHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBJL08gb3BlcmF0aW9ucyBvbiBjbG9zZWQgR3ppcEZpbGUgb2JqZWN0cyByYWlzZSBhCiAgICAgICAgICMgVmFsdWVFcnJvciwganVzdCBsaWtlIHRoZSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9ucyBvbiBmaWxlIG9iamVjdHMuCkBAIC0xMTksNyArMTMyLDEwIEBACiAgICAgICAgICMgV3JpdGUgdG8gYSBmaWxlLCBvcGVuIGl0IGZvciByZWFkaW5nLCB0aGVuIGNsb3NlIGl0LgogICAgICAgICBzZWxmLnRlc3Rfd3JpdGUoKQogICAgICAgICBmID0gZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAncicpCisgICAgICAgIGZpbGVvYmogPSBmLmZpbGVvYmoKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmaWxlb2JqLmNsb3NlZCkKICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlb2JqLmNsb3NlZCkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgIGYucmVhZCgxKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgpAQCAtMTI4LDcgKzE0NCwxMCBAQAogICAgICAgICAgICAgZi50ZWxsKCkKICAgICAgICAgIyBPcGVuIHRoZSBmaWxlIGZvciB3cml0aW5nLCB0aGVuIGNsb3NlIGl0LgogICAgICAgICBmID0gZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAndycpCisgICAgICAgIGZpbGVvYmogPSBmLmZpbGVvYmoKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmaWxlb2JqLmNsb3NlZCkKICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlb2JqLmNsb3NlZCkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgIGYud3JpdGUoYicnKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgpAQCAtMjY3LDkgKzI4NiwxMCBAQAogICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgJ3cnLCBtdGltZSA9IG10aW1lKSBhcyBmV3JpdGU6CiAgICAgICAgICAgICBmV3JpdGUud3JpdGUoZGF0YTEpCiAgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBmUmVhZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGZSZWFkLCAnbXRpbWUnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZSZWFkLm10aW1lKQogICAgICAgICAgICAgZGF0YVJlYWQgPSBmUmVhZC5yZWFkKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YVJlYWQsIGRhdGExKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZlJlYWQsICdtdGltZScpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmUmVhZC5tdGltZSwgbXRpbWUpCiAKICAgICBkZWYgdGVzdF9tZXRhZGF0YShzZWxmKToKQEAgLTQxMiw2ICs0MzIsMTggQEAKICAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKHN0cl9maWxlbmFtZSwgInJiIikgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGRhdGExICogNTApCiAKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzX2xpbWl0ZWQoc2VsZik6CisgICAgICAgICIiIkRlY29tcHJlc3NlZCBkYXRhIGJ1ZmZlcmluZyBzaG91bGQgYmUgbGltaXRlZCIiIgorICAgICAgICBib21iID0gZ3ppcC5jb21wcmVzcyhieXRlcyhpbnQoMmU2KSksIGNvbXByZXNzbGV2ZWw9OSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihib21iKSwgaW8uREVGQVVMVF9CVUZGRVJfU0laRSkKKworICAgICAgICBib21iID0gaW8uQnl0ZXNJTyhib21iKQorICAgICAgICBkZWNvbXAgPSBnemlwLkd6aXBGaWxlKGZpbGVvYmo9Ym9tYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcygxKSwgZGVjb21wLnJlYWQoMSkpCisgICAgICAgIG1heF9kZWNvbXAgPSAxICsgaW8uREVGQVVMVF9CVUZGRVJfU0laRQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChkZWNvbXAuX2J1ZmZlci5yYXcudGVsbCgpLCBtYXhfZGVjb21wLAorICAgICAgICAgICAgIkV4Y2Vzc2l2ZSBhbW91bnQgb2YgZGF0YSB3YXMgZGVjb21wcmVzc2VkIikKKwogICAgICMgVGVzdGluZyBjb21wcmVzcy9kZWNvbXByZXNzIHNob3J0Y3V0IGZ1bmN0aW9ucwogCiAgICAgZGVmIHRlc3RfY29tcHJlc3Moc2VsZik6CkBAIC00NTksNyArNDkxLDcgQEAKICAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgIndiIikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoZGF0YTEpCiAgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6Ci0gICAgICAgICAgICBmLmZpbGVvYmoucHJlcGVuZCgpCisgICAgICAgICAgICBmLl9idWZmZXIucmF3Ll9mcC5wcmVwZW5kKCkKIAogY2xhc3MgVGVzdE9wZW4oQmFzZVRlc3QpOgogICAgIGRlZiB0ZXN0X2JpbmFyeV9tb2RlcyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaGFzaC5weSBiL0xpYi90ZXN0L3Rlc3RfaGFzaC5weQppbmRleCBmNjQ3YzZmLi5hYTRlZmJmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2hhc2gucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9oYXNoLnB5CkBAIC03LDcgKzcsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBIYXNoYWJsZQogCiBJU182NEJJVCA9IHN5cy5tYXhzaXplID4gMioqMzIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaGVhcHEucHkgYi9MaWIvdGVzdC90ZXN0X2hlYXBxLnB5CmluZGV4IGI1YTJmZDguLmI3ZTgyNTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaGVhcHEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9oZWFwcS5weQpAQCAtNiwxNCArNiwxNSBAQAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlLCBza2lwVW5sZXNzCitmcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyCiAKIHB5X2hlYXBxID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCdoZWFwcScsIGJsb2NrZWQ9WydfaGVhcHEnXSkKIGNfaGVhcHEgPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoJ2hlYXBxJywgZnJlc2g9WydfaGVhcHEnXSkKIAogIyBfaGVhcHEubmxhcmdlc3QvbnNtYWxsZXN0IGFyZSBzYXZlZCBpbiBoZWFwcS5fbmxhcmdlc3QvX3NtYWxsZXN0IHdoZW4KICMgX2hlYXBxIGlzIGltcG9ydGVkLCBzbyBjaGVjayB0aGVtIHRoZXJlCi1mdW5jX25hbWVzID0gWydoZWFwaWZ5JywgJ2hlYXBwb3AnLCAnaGVhcHB1c2gnLCAnaGVhcHB1c2hwb3AnLAotICAgICAgICAgICAgICAnaGVhcHJlcGxhY2UnLCAnX25sYXJnZXN0JywgJ19uc21hbGxlc3QnXQorZnVuY19uYW1lcyA9IFsnaGVhcGlmeScsICdoZWFwcG9wJywgJ2hlYXBwdXNoJywgJ2hlYXBwdXNocG9wJywgJ2hlYXByZXBsYWNlJywKKyAgICAgICAgICAgICAgJ19oZWFwcG9wX21heCcsICdfaGVhcHJlcGxhY2VfbWF4JywgJ19oZWFwaWZ5X21heCddCiAKIGNsYXNzIFRlc3RNb2R1bGVzKFRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9weV9mdW5jdGlvbnMoc2VsZik6CkBAIC02NCw3ICs2NSw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhlYXBbcGFyZW50cG9zXSA8PSBpdGVtKQogCiAgICAgZGVmIHRlc3RfaGVhcGlmeShzZWxmKToKLSAgICAgICAgZm9yIHNpemUgaW4gcmFuZ2UoMzApOgorICAgICAgICBmb3Igc2l6ZSBpbiBsaXN0KHJhbmdlKDMwKSkgKyBbMjAwMDBdOgogICAgICAgICAgICAgaGVhcCA9IFtyYW5kb20ucmFuZG9tKCkgZm9yIGR1bW15IGluIHJhbmdlKHNpemUpXQogICAgICAgICAgICAgc2VsZi5tb2R1bGUuaGVhcGlmeShoZWFwKQogICAgICAgICAgICAgc2VsZi5jaGVja19pbnZhcmlhbnQoaGVhcCkKQEAgLTE1MiwxMSArMTUzLDIxIEBACiAKICAgICBkZWYgdGVzdF9tZXJnZShzZWxmKToKICAgICAgICAgaW5wdXRzID0gW10KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UocmFuZG9tLnJhbmRyYW5nZSg1KSk6Ci0gICAgICAgICAgICByb3cgPSBzb3J0ZWQocmFuZG9tLnJhbmRyYW5nZSgxMDAwKSBmb3IgaiBpbiByYW5nZShyYW5kb20ucmFuZHJhbmdlKDEwKSkpCisgICAgICAgIGZvciBpIGluIHJhbmdlKHJhbmRvbS5yYW5kcmFuZ2UoMjUpKToKKyAgICAgICAgICAgIHJvdyA9IFtdCisgICAgICAgICAgICBmb3IgaiBpbiByYW5nZShyYW5kb20ucmFuZHJhbmdlKDEwMCkpOgorICAgICAgICAgICAgICAgIHR1cCA9IHJhbmRvbS5jaG9pY2UoJ0FCQycpLCByYW5kb20ucmFuZHJhbmdlKC01MDAsIDUwMCkKKyAgICAgICAgICAgICAgICByb3cuYXBwZW5kKHR1cCkKICAgICAgICAgICAgIGlucHV0cy5hcHBlbmQocm93KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChjaGFpbigqaW5wdXRzKSksIGxpc3Qoc2VsZi5tb2R1bGUubWVyZ2UoKmlucHV0cykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2VsZi5tb2R1bGUubWVyZ2UoKSksIFtdKQorCisgICAgICAgIGZvciBrZXkgaW4gW05vbmUsIGl0ZW1nZXR0ZXIoMCksIGl0ZW1nZXR0ZXIoMSksIGl0ZW1nZXR0ZXIoMSwgMCldOgorICAgICAgICAgICAgZm9yIHJldmVyc2UgaW4gW0ZhbHNlLCBUcnVlXToKKyAgICAgICAgICAgICAgICBzZXFzID0gW10KKyAgICAgICAgICAgICAgICBmb3Igc2VxIGluIGlucHV0czoKKyAgICAgICAgICAgICAgICAgICAgc2Vxcy5hcHBlbmQoc29ydGVkKHNlcSwga2V5PWtleSwgcmV2ZXJzZT1yZXZlcnNlKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChjaGFpbigqaW5wdXRzKSwga2V5PWtleSwgcmV2ZXJzZT1yZXZlcnNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qoc2VsZi5tb2R1bGUubWVyZ2UoKnNlcXMsIGtleT1rZXksIHJldmVyc2U9cmV2ZXJzZSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLm1vZHVsZS5tZXJnZSgpKSwgW10pCiAKICAgICBkZWYgdGVzdF9tZXJnZV9kb2VzX25vdF9zdXBwcmVzc19pbmRleF9lcnJvcihzZWxmKToKICAgICAgICAgIyBJc3N1ZSAxOTAxODogSGVhcHEubWVyZ2Ugc3VwcHJlc3NlcyBJbmRleEVycm9yIGZyb20gdXNlciBnZW5lcmF0b3IKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaG1hYy5weSBiL0xpYi90ZXN0L3Rlc3RfaG1hYy5weQppbmRleCBjZGU1NmZkLi45ODgyNmI1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2htYWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9obWFjLnB5CkBAIC00OTMsMTQgKzQ5Myw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCi0gICAgICAgIFRlc3RWZWN0b3JzVGVzdENhc2UsCi0gICAgICAgIENvbnN0cnVjdG9yVGVzdENhc2UsCi0gICAgICAgIFNhbml0eVRlc3RDYXNlLAotICAgICAgICBDb3B5VGVzdENhc2UsCi0gICAgICAgIENvbXBhcmVEaWdlc3RUZXN0Q2FzZQotICAgICkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odG1sLnB5IGIvTGliL3Rlc3QvdGVzdF9odG1sLnB5CmluZGV4IGQ2ZjBhZTguLjgzOWUwYTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHRtbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0bWwucHkKQEAgLTQsNyArNCw2IEBACiAKIGltcG9ydCBodG1sCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIAogCiBjbGFzcyBIdG1sVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5CmluZGV4IDE0NGY4MjAuLjExNDIwYjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkKQEAgLTgyLDcgKzgyLDcgQEAKIGNsYXNzIFRlc3RDYXNlQmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgZ2V0X2NvbGxlY3RvcihzZWxmKToKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICByZXR1cm4gRXZlbnRDb2xsZWN0b3IoY29udmVydF9jaGFycmVmcz1GYWxzZSkKIAogICAgIGRlZiBfcnVuX2NoZWNrKHNlbGYsIHNvdXJjZSwgZXhwZWN0ZWRfZXZlbnRzLCBjb2xsZWN0b3I9Tm9uZSk6CiAgICAgICAgIGlmIGNvbGxlY3RvciBpcyBOb25lOgpAQCAtMTAyLDIxICsxMDIsOCBAQAogICAgICAgICBzZWxmLl9ydW5fY2hlY2soc291cmNlLCBldmVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudENvbGxlY3RvckV4dHJhKGNvbnZlcnRfY2hhcnJlZnM9RmFsc2UpKQogCi0gICAgZGVmIF9wYXJzZV9lcnJvcihzZWxmLCBzb3VyY2UpOgotICAgICAgICBkZWYgcGFyc2Uoc291cmNlPXNvdXJjZSk6Ci0gICAgICAgICAgICBwYXJzZXIgPSBzZWxmLmdldF9jb2xsZWN0b3IoKQotICAgICAgICAgICAgcGFyc2VyLmZlZWQoc291cmNlKQotICAgICAgICAgICAgcGFyc2VyLmNsb3NlKCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhodG1sLnBhcnNlci5IVE1MUGFyc2VFcnJvcik6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgICAgICBwYXJzZSgpCiAKLQotY2xhc3MgSFRNTFBhcnNlclN0cmljdFRlc3RDYXNlKFRlc3RDYXNlQmFzZSk6Ci0KLSAgICBkZWYgZ2V0X2NvbGxlY3RvcihzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgiIiwgRGVwcmVjYXRpb25XYXJuaW5nKSwgcXVpdGU9RmFsc2UpOgotICAgICAgICAgICAgcmV0dXJuIEV2ZW50Q29sbGVjdG9yKHN0cmljdD1UcnVlLCBjb252ZXJ0X2NoYXJyZWZzPUZhbHNlKQorY2xhc3MgSFRNTFBhcnNlclRlc3RDYXNlKFRlc3RDYXNlQmFzZSk6CiAKICAgICBkZWYgdGVzdF9wcm9jZXNzaW5nX2luc3RydWN0aW9uX29ubHkoc2VsZik6CiAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygiPD9wcm9jZXNzaW5nIGluc3RydWN0aW9uPiIsIFsKQEAgLTE5OCw5ICsxODUsNiBAQAogICAgICAgICAgICAgKCJkYXRhIiwgInRoaXMgPCB0ZXh0ID4gY29udGFpbnMgPCBiYXJlPnBvaW50eTwgYnJhY2tldHMiKSwKICAgICAgICAgICAgIF0pCiAKLSAgICBkZWYgdGVzdF9pbGxlZ2FsX2RlY2xhcmF0aW9ucyhzZWxmKToKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoJzwhc3BhY2VyIHR5cGU9ImJsb2NrIiBoZWlnaHQ9IjI1Ij4nKQotCiAgICAgZGVmIHRlc3Rfc3RhcnR0YWdfZW5kX2JvdW5kYXJ5KHNlbGYpOgogICAgICAgICBzZWxmLl9ydW5fY2hlY2soIiIiPGEgYj0nPCc+IiIiLCBbKCJzdGFydHRhZyIsICJhIiwgWygiYiIsICI8IildKV0pCiAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygiIiI8YSBiPSc+Jz4iIiIsIFsoInN0YXJ0dGFnIiwgImEiLCBbKCJiIiwgIj4iKV0pXSkKQEAgLTIzNSwyNSArMjE5LDYgQEAKICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKFsiPCEtLWFiYy0tIiwgIj4iXSwgb3V0cHV0KQogICAgICAgICBzZWxmLl9ydW5fY2hlY2soWyI8IS0tYWJjLS0+IiwgIiJdLCBvdXRwdXQpCiAKLSAgICBkZWYgdGVzdF9zdGFydHRhZ19qdW5rX2NoYXJzKHNlbGYpOgotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPC8+IikKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjwvJD4iKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPC8iKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPC9hIikKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjxhPGE+IikKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjwvYTxhPiIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8ISIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8YSIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8YSBmb289J2JhciciKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPGEgZm9vPSdiYXIiKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPGEgZm9vPSc+JyIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8YSBmb289Jz4iKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPGEkPiIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8YSRiPiIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8YSRiLz4iKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPGEkYiAgPiIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8YSRiICAvPiIpCi0KICAgICBkZWYgdGVzdF92YWxpZF9kb2N0eXBlcyhzZWxmKToKICAgICAgICAgIyBmcm9tIGh0dHA6Ly93d3cudzMub3JnL1FBLzIwMDIvMDQvdmFsaWQtZHRkLWxpc3QuaHRtbAogICAgICAgICBkdGRzID0gWydIVE1MJywgICMgSFRNTDUgZG9jdHlwZQpAQCAtMjc4LDkgKzI0Myw2IEBACiAgICAgICAgICAgICBzZWxmLl9ydW5fY2hlY2soIjwhRE9DVFlQRSAlcz4iICUgZHRkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2RlY2wnLCAnRE9DVFlQRSAnICsgZHRkKV0pCiAKLSAgICBkZWYgdGVzdF9kZWNsYXJhdGlvbl9qdW5rX2NoYXJzKHNlbGYpOgotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPCFET0NUWVBFIGZvbyAkID4iKQotCiAgICAgZGVmIHRlc3Rfc3RhcnRlbmR0YWcoc2VsZik6CiAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygiPHAvPiIsIFsKICAgICAgICAgICAgICgic3RhcnRlbmR0YWciLCAicCIsIFtdKSwKQEAgLTM4MSw3ICszNDMsOCBAQAogICAgICAgICBzZWxmLl9ydW5fY2hlY2soaHRtbCwgZXhwZWN0ZWQpCiAKICAgICBkZWYgdGVzdF9jb252ZXJ0X2NoYXJyZWZzKHNlbGYpOgotICAgICAgICBjb2xsZWN0b3IgPSBsYW1iZGE6IEV2ZW50Q29sbGVjdG9yQ2hhcnJlZnMoY29udmVydF9jaGFycmVmcz1UcnVlKQorICAgICAgICAjIGRlZmF1bHQgdmFsdWUgZm9yIGNvbnZlcnRfY2hhcnJlZnMgaXMgbm93IFRydWUKKyAgICAgICAgY29sbGVjdG9yID0gbGFtYmRhOiBFdmVudENvbGxlY3RvckNoYXJyZWZzKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbGxlY3RvcigpLmNvbnZlcnRfY2hhcnJlZnMpCiAgICAgICAgIGNoYXJyZWZzID0gWycmcXVvdDsnLCAnJiMzNDsnLCAnJiN4MjI7JywgJyZxdW90JywgJyYjMzQnLCAnJiN4MjInXQogICAgICAgICAjIGNoZWNrIGNoYXJyZWZzIGluIHRoZSBtaWRkbGUgb2YgdGhlIHRleHQvYXR0cmlidXRlcwpAQCAtNDE4LDIzICszODEsOCBAQAogICAgICAgICBzZWxmLl9ydW5fY2hlY2soJ25vIGNoYXJyZWZzIGhlcmUnLCBbKCdkYXRhJywgJ25vIGNoYXJyZWZzIGhlcmUnKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0b3I9Y29sbGVjdG9yKCkpCiAKLQotY2xhc3MgSFRNTFBhcnNlclRvbGVyYW50VGVzdENhc2UoSFRNTFBhcnNlclN0cmljdFRlc3RDYXNlKToKLQotICAgIGRlZiBnZXRfY29sbGVjdG9yKHNlbGYpOgotICAgICAgICByZXR1cm4gRXZlbnRDb2xsZWN0b3IoY29udmVydF9jaGFycmVmcz1GYWxzZSkKLQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0aW9uX3dhcm5pbmdzKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIEV2ZW50Q29sbGVjdG9yKCkgICMgY29udmVydF9jaGFycmVmcyBub3QgcGFzc2VkIGV4cGxpY2l0bHkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBFdmVudENvbGxlY3RvcihzdHJpY3Q9VHJ1ZSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBFdmVudENvbGxlY3RvcihzdHJpY3Q9RmFsc2UpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoaHRtbC5wYXJzZXIuSFRNTFBhcnNlRXJyb3IpOgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICAgICAgRXZlbnRDb2xsZWN0b3IoKS5lcnJvcigndGVzdCcpCi0KKyAgICAjIHRoZSByZW1haW5pbmcgdGVzdHMgd2VyZSBmb3IgdGhlICJ0b2xlcmFudCIgcGFyc2VyICh3aGljaCBpcyBub3cKKyAgICAjIHRoZSBkZWZhdWx0KSwgYW5kIGNoZWNrIHZhcmlvdXMga2luZCBvZiBicm9rZW4gbWFya3VwCiAgICAgZGVmIHRlc3RfdG9sZXJhbnRfcGFyc2luZyhzZWxmKToKICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKCc8aHRtbCA8aHRtbD50ZT4+eHQmYTw8YmM8L2E+PC9odG1sPlxuJwogICAgICAgICAgICAgICAgICAgICAgICAgJzxpbWcgc3JjPSJVUkw+PC8vaW1nPjwvaHRtbDwvaHRtbD4nLCBbCkBAIC02OTUsMTEgKzY0Myw3IEBACiAgICAgICAgICkKIAogCi1jbGFzcyBBdHRyaWJ1dGVzU3RyaWN0VGVzdENhc2UoVGVzdENhc2VCYXNlKToKLQotICAgIGRlZiBnZXRfY29sbGVjdG9yKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCIiLCBEZXByZWNhdGlvbldhcm5pbmcpLCBxdWl0ZT1GYWxzZSk6Ci0gICAgICAgICAgICByZXR1cm4gRXZlbnRDb2xsZWN0b3Ioc3RyaWN0PVRydWUsIGNvbnZlcnRfY2hhcnJlZnM9RmFsc2UpCitjbGFzcyBBdHRyaWJ1dGVzVGVzdENhc2UoVGVzdENhc2VCYXNlKToKIAogICAgIGRlZiB0ZXN0X2F0dHJfc3ludGF4KHNlbGYpOgogICAgICAgICBvdXRwdXQgPSBbCkBAIC03NTYsMTIgKzcwMCw2IEBACiAgICAgICAgICAgICBbKCJzdGFydHRhZyIsICJodG1sIiwgWygiZm9vIiwgIlx1MjBBQyZhYSZ1bnN1cHBvcnRlZDsiKV0pXSkKIAogCi0KLWNsYXNzIEF0dHJpYnV0ZXNUb2xlcmFudFRlc3RDYXNlKEF0dHJpYnV0ZXNTdHJpY3RUZXN0Q2FzZSk6Ci0KLSAgICBkZWYgZ2V0X2NvbGxlY3RvcihzZWxmKToKLSAgICAgICAgcmV0dXJuIEV2ZW50Q29sbGVjdG9yKGNvbnZlcnRfY2hhcnJlZnM9RmFsc2UpCi0KICAgICBkZWYgdGVzdF9hdHRyX2Z1bmt5X25hbWVzMihzZWxmKToKICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKAogICAgICAgICAgICAgIjxhICQ+PGIgJD0lPjxjIFw9Lz4iLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZXMucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llcy5weQppbmRleCBjN2I2ODBiLi5kM2UwNmE0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llcy5weQpAQCAtMSw1ICsxLDYgQEAKICMgU2ltcGxlIHRlc3Qgc3VpdGUgZm9yIGh0dHAvY29va2llcy5weQogCitpbXBvcnQgY29weQogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgcnVuX2RvY3Rlc3QsIGNoZWNrX3dhcm5pbmdzCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gaHR0cCBpbXBvcnQgY29va2llcwpAQCAtMTU0LDEzICsxNTUsNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENbJ2VnZ3MnXVsnaHR0cG9ubHknXSwgJ2ZvbycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ1snZWdncyddWydzZWN1cmUnXSwgJ2JhcicpCiAKLSAgICBkZWYgdGVzdF9iYWRfYXR0cnMoc2VsZik6Ci0gICAgICAgICMgaXNzdWUgMTY2MTE6IG1ha2Ugc3VyZSB3ZSBkb24ndCBicmVhayBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgotICAgICAgICBDID0gY29va2llcy5TaW1wbGVDb29raWUoKQotICAgICAgICBDLmxvYWQoJ2Nvb2tpZT13aXRoOyBpbnZhbGlkOyB2ZXJzaW9uOyBzZWNvbmQ9Y29va2llOycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5vdXRwdXQoKSwKLSAgICAgICAgICAgICdTZXQtQ29va2llOiBjb29raWU9d2l0aFxyXG5TZXQtQ29va2llOiBzZWNvbmQ9Y29va2llJykKLQogICAgIGRlZiB0ZXN0X2V4dHJhX3NwYWNlcyhzZWxmKToKICAgICAgICAgQyA9IGNvb2tpZXMuU2ltcGxlQ29va2llKCkKICAgICAgICAgQy5sb2FkKCdlZ2dzICA9ICBzY3JhbWJsZWQgIDsgIHNlY3VyZSAgOyAgcGF0aCAgPSAgYmFyICAgOyBmb289Zm9vICAgJykKQEAgLTE5NSw3ICsxODksMTAgQEAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2Nvb2tpZXMoc2VsZik6CiAgICAgICAgICMgQWNjZXB0aW5nIHRoZXNlIGNvdWxkIGJlIGEgc2VjdXJpdHkgaXNzdWUKICAgICAgICAgQyA9IGNvb2tpZXMuU2ltcGxlQ29va2llKCkKLSAgICAgICAgZm9yIHMgaW4gKCddZm9vPXgnLCAnW2Zvbz14JywgJ2JsYWhdZm9vPXgnLCAnYmxhaFtmb289eCcpOgorICAgICAgICBmb3IgcyBpbiAoJ11mb289eCcsICdbZm9vPXgnLCAnYmxhaF1mb289eCcsICdibGFoW2Zvbz14JywKKyAgICAgICAgICAgICAgICAgICdTZXQtQ29va2llOiBmb289YmFyJywgJ1NldC1Db29raWU6IGZvbycsCisgICAgICAgICAgICAgICAgICAnZm9vPWJhcjsgYmF6JywgJ2JhejsgZm9vPWJhcicsCisgICAgICAgICAgICAgICAgICAnc2VjdXJlO2Zvbz1iYXInLCAnVmVyc2lvbj0xO2Zvbz1iYXInKToKICAgICAgICAgICAgIEMubG9hZChzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0KEMpLCB7fSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5vdXRwdXQoKSwgJycpCkBAIC0yMTcsNiArMjE0LDE1IEBACiBjbGFzcyBNb3JzZWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdHMgZm9yIHRoZSBNb3JzZWwgb2JqZWN0LiIiIgogCisgICAgZGVmIHRlc3RfZGVmYXVsdHMoc2VsZik6CisgICAgICAgIG1vcnNlbCA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobW9yc2VsLmtleSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobW9yc2VsLnZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtb3JzZWwuY29kZWRfdmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsLmtleXMoKSwgY29va2llcy5Nb3JzZWwuX3Jlc2VydmVkLmtleXMoKSkKKyAgICAgICAgZm9yIGtleSwgdmFsIGluIG1vcnNlbC5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWwsICcnLCBrZXkpCisKICAgICBkZWYgdGVzdF9yZXNlcnZlZF9rZXlzKHNlbGYpOgogICAgICAgICBNID0gY29va2llcy5Nb3JzZWwoKQogICAgICAgICAjIHRlc3RzIHZhbGlkIGFuZCBpbnZhbGlkIHJlc2VydmVkIGtleXMgZm9yIE1vcnNlbHMKQEAgLTI2MCw2ICsyNjYsMTk3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhjb29raWVzLkNvb2tpZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTS5zZXQsIGksICclc192YWx1ZScgJSBpLCAnJXNfdmFsdWUnICUgaSkKIAorICAgIGRlZiB0ZXN0X2RlcHJlY2F0aW9uKHNlbGYpOgorICAgICAgICBtb3JzZWwgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgcidcYmtleVxiJyk6CisgICAgICAgICAgICBtb3JzZWwua2V5ID0gJycKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCByJ1xidmFsdWVcYicpOgorICAgICAgICAgICAgbW9yc2VsLnZhbHVlID0gJycKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCByJ1xiY29kZWRfdmFsdWVcYicpOgorICAgICAgICAgICAgbW9yc2VsLmNvZGVkX3ZhbHVlID0gJycKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCByJ1xiTGVnYWxDaGFyc1xiJyk6CisgICAgICAgICAgICBtb3JzZWwuc2V0KCdrZXknLCAndmFsdWUnLCAnY29kZWRfdmFsdWUnLCBMZWdhbENoYXJzPScuKicpCisKKyAgICBkZWYgdGVzdF9lcShzZWxmKToKKyAgICAgICAgYmFzZV9jYXNlID0gKCdrZXknLCAndmFsdWUnLCAnInZhbHVlIicpCisgICAgICAgIGF0dHJpYnMgPSB7CisgICAgICAgICAgICAncGF0aCc6ICcvJywKKyAgICAgICAgICAgICdjb21tZW50JzogJ2ZvbycsCisgICAgICAgICAgICAnZG9tYWluJzogJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICd2ZXJzaW9uJzogMiwKKyAgICAgICAgfQorICAgICAgICBtb3JzZWxfYSA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgbW9yc2VsX2EudXBkYXRlKGF0dHJpYnMpCisgICAgICAgIG1vcnNlbF9hLnNldCgqYmFzZV9jYXNlKQorICAgICAgICBtb3JzZWxfYiA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgbW9yc2VsX2IudXBkYXRlKGF0dHJpYnMpCisgICAgICAgIG1vcnNlbF9iLnNldCgqYmFzZV9jYXNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9yc2VsX2EgPT0gbW9yc2VsX2IpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9yc2VsX2EgIT0gbW9yc2VsX2IpCisgICAgICAgIGNhc2VzID0gKAorICAgICAgICAgICAgKCdrZXknLCAndmFsdWUnLCAnbWlzbWF0Y2gnKSwKKyAgICAgICAgICAgICgna2V5JywgJ21pc21hdGNoJywgJyJ2YWx1ZSInKSwKKyAgICAgICAgICAgICgnbWlzbWF0Y2gnLCAndmFsdWUnLCAnInZhbHVlIicpLAorICAgICAgICApCisgICAgICAgIGZvciBjYXNlX2IgaW4gY2FzZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjYXNlX2IpOgorICAgICAgICAgICAgICAgIG1vcnNlbF9iID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICAgICAgICAgIG1vcnNlbF9iLnVwZGF0ZShhdHRyaWJzKQorICAgICAgICAgICAgICAgIG1vcnNlbF9iLnNldCgqY2FzZV9iKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9yc2VsX2EgPT0gbW9yc2VsX2IpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vcnNlbF9hICE9IG1vcnNlbF9iKQorCisgICAgICAgIG1vcnNlbF9iID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBtb3JzZWxfYi51cGRhdGUoYXR0cmlicykKKyAgICAgICAgbW9yc2VsX2Iuc2V0KCpiYXNlX2Nhc2UpCisgICAgICAgIG1vcnNlbF9iWydjb21tZW50J10gPSAnYmFyJworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vcnNlbF9hID09IG1vcnNlbF9iKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9yc2VsX2EgIT0gbW9yc2VsX2IpCisKKyAgICAgICAgIyB0ZXN0IG1pc21hdGNoZWQgdHlwZXMKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjb29raWVzLk1vcnNlbCgpID09IDEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb29raWVzLk1vcnNlbCgpICE9IDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29va2llcy5Nb3JzZWwoKSA9PSAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvb2tpZXMuTW9yc2VsKCkgIT0gJycpCisgICAgICAgIGl0ZW1zID0gbGlzdChjb29raWVzLk1vcnNlbCgpLml0ZW1zKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29va2llcy5Nb3JzZWwoKSA9PSBpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvb2tpZXMuTW9yc2VsKCkgIT0gaXRlbXMpCisKKyAgICAgICAgIyBtb3JzZWwvZGljdAorICAgICAgICBtb3JzZWwgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIG1vcnNlbC5zZXQoKmJhc2VfY2FzZSkKKyAgICAgICAgbW9yc2VsLnVwZGF0ZShhdHRyaWJzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9yc2VsID09IGRpY3QobW9yc2VsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb3JzZWwgIT0gZGljdChtb3JzZWwpKQorCisgICAgZGVmIHRlc3RfY29weShzZWxmKToKKyAgICAgICAgbW9yc2VsX2EgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIG1vcnNlbF9hLnNldCgnZm9vJywgJ2JhcicsICdiYXonKQorICAgICAgICBtb3JzZWxfYS51cGRhdGUoeworICAgICAgICAgICAgJ3ZlcnNpb24nOiAyLAorICAgICAgICAgICAgJ2NvbW1lbnQnOiAnZm9vJywKKyAgICAgICAgfSkKKyAgICAgICAgbW9yc2VsX2IgPSBtb3JzZWxfYS5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vcnNlbF9iLCBjb29raWVzLk1vcnNlbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChtb3JzZWxfYSwgbW9yc2VsX2IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsX2EsIG1vcnNlbF9iKQorCisgICAgICAgIG1vcnNlbF9iID0gY29weS5jb3B5KG1vcnNlbF9hKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9yc2VsX2IsIGNvb2tpZXMuTW9yc2VsKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KG1vcnNlbF9hLCBtb3JzZWxfYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxfYSwgbW9yc2VsX2IpCisKKyAgICBkZWYgdGVzdF9zZXRpdGVtKHNlbGYpOgorICAgICAgICBtb3JzZWwgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIG1vcnNlbFsnZXhwaXJlcyddID0gMAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsnZXhwaXJlcyddLCAwKQorICAgICAgICBtb3JzZWxbJ1ZlcnNpb24nXSA9IDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxbJ3ZlcnNpb24nXSwgMikKKyAgICAgICAgbW9yc2VsWydET01BSU4nXSA9ICdleGFtcGxlLmNvbScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxbJ2RvbWFpbiddLCAnZXhhbXBsZS5jb20nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoY29va2llcy5Db29raWVFcnJvcik6CisgICAgICAgICAgICBtb3JzZWxbJ2ludmFsaWQnXSA9ICd2YWx1ZScKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignaW52YWxpZCcsIG1vcnNlbCkKKworICAgIGRlZiB0ZXN0X3NldGRlZmF1bHQoc2VsZik6CisgICAgICAgIG1vcnNlbCA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgbW9yc2VsLnVwZGF0ZSh7CisgICAgICAgICAgICAnZG9tYWluJzogJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICd2ZXJzaW9uJzogMiwKKyAgICAgICAgfSkKKyAgICAgICAgIyB0aGlzIHNob3VsZG4ndCBvdmVycmlkZSB0aGUgZGVmYXVsdCB2YWx1ZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbC5zZXRkZWZhdWx0KCdleHBpcmVzJywgJ3ZhbHVlJyksICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsnZXhwaXJlcyddLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWwuc2V0ZGVmYXVsdCgnVmVyc2lvbicsIDEpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsndmVyc2lvbiddLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbC5zZXRkZWZhdWx0KCdET01BSU4nLCAndmFsdWUnKSwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxbJ2RvbWFpbiddLCAnZXhhbXBsZS5jb20nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoY29va2llcy5Db29raWVFcnJvcik6CisgICAgICAgICAgICBtb3JzZWwuc2V0ZGVmYXVsdCgnaW52YWxpZCcsICd2YWx1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2ludmFsaWQnLCBtb3JzZWwpCisKKyAgICBkZWYgdGVzdF91cGRhdGUoc2VsZik6CisgICAgICAgIGF0dHJpYnMgPSB7J2V4cGlyZXMnOiAxLCAnVmVyc2lvbic6IDIsICdET01BSU4nOiAnZXhhbXBsZS5jb20nfQorICAgICAgICAjIHRlc3QgZGljdCB1cGRhdGUKKyAgICAgICAgbW9yc2VsID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBtb3JzZWwudXBkYXRlKGF0dHJpYnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWydleHBpcmVzJ10sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWyd2ZXJzaW9uJ10sIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWydkb21haW4nXSwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgIyB0ZXN0IGl0ZXJhYmxlIHVwZGF0ZQorICAgICAgICBtb3JzZWwgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIG1vcnNlbC51cGRhdGUobGlzdChhdHRyaWJzLml0ZW1zKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsnZXhwaXJlcyddLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsndmVyc2lvbiddLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsnZG9tYWluJ10sICdleGFtcGxlLmNvbScpCisgICAgICAgICMgdGVzdCBpdGVyYXRvciB1cGRhdGUKKyAgICAgICAgbW9yc2VsID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBtb3JzZWwudXBkYXRlKChrLCB2KSBmb3IgaywgdiBpbiBhdHRyaWJzLml0ZW1zKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWydleHBpcmVzJ10sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWyd2ZXJzaW9uJ10sIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWydkb21haW4nXSwgJ2V4YW1wbGUuY29tJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNvb2tpZXMuQ29va2llRXJyb3IpOgorICAgICAgICAgICAgbW9yc2VsLnVwZGF0ZSh7J2ludmFsaWQnOiAndmFsdWUnfSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignaW52YWxpZCcsIG1vcnNlbCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb3JzZWwudXBkYXRlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vcnNlbC51cGRhdGUsIDApCisKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIG1vcnNlbF9hID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBtb3JzZWxfYS5zZXQoJ2ZvbycsICdiYXInLCAnYmF6JykKKyAgICAgICAgbW9yc2VsX2EudXBkYXRlKHsKKyAgICAgICAgICAgICd2ZXJzaW9uJzogMiwKKyAgICAgICAgICAgICdjb21tZW50JzogJ2ZvbycsCisgICAgICAgIH0pCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8pOgorICAgICAgICAgICAgICAgIG1vcnNlbF9iID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhtb3JzZWxfYSwgcHJvdG8pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb3JzZWxfYiwgY29va2llcy5Nb3JzZWwpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxfYiwgbW9yc2VsX2EpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobW9yc2VsX2IpLCBzdHIobW9yc2VsX2EpKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgbW9yc2VsID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobW9yc2VsKSwgJzxNb3JzZWw6IE5vbmU9Tm9uZT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtb3JzZWwpLCAnU2V0LUNvb2tpZTogTm9uZT1Ob25lJykKKyAgICAgICAgbW9yc2VsLnNldCgna2V5JywgJ3ZhbCcsICdjb2RlZF92YWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobW9yc2VsKSwgJzxNb3JzZWw6IGtleT1jb2RlZF92YWw+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobW9yc2VsKSwgJ1NldC1Db29raWU6IGtleT1jb2RlZF92YWwnKQorICAgICAgICBtb3JzZWwudXBkYXRlKHsKKyAgICAgICAgICAgICdwYXRoJzogJy8nLAorICAgICAgICAgICAgJ2NvbW1lbnQnOiAnZm9vJywKKyAgICAgICAgICAgICdkb21haW4nOiAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ21heC1hZ2UnOiAwLAorICAgICAgICAgICAgJ3NlY3VyZSc6IDAsCisgICAgICAgICAgICAndmVyc2lvbic6IDEsCisgICAgICAgIH0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtb3JzZWwpLAorICAgICAgICAgICAgICAgICc8TW9yc2VsOiBrZXk9Y29kZWRfdmFsOyBDb21tZW50PWZvbzsgRG9tYWluPWV4YW1wbGUuY29tOyAnCisgICAgICAgICAgICAgICAgJ01heC1BZ2U9MDsgUGF0aD0vOyBWZXJzaW9uPTE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobW9yc2VsKSwKKyAgICAgICAgICAgICAgICAnU2V0LUNvb2tpZToga2V5PWNvZGVkX3ZhbDsgQ29tbWVudD1mb287IERvbWFpbj1leGFtcGxlLmNvbTsgJworICAgICAgICAgICAgICAgICdNYXgtQWdlPTA7IFBhdGg9LzsgVmVyc2lvbj0xJykKKyAgICAgICAgbW9yc2VsWydzZWN1cmUnXSA9IFRydWUKKyAgICAgICAgbW9yc2VsWydodHRwb25seSddID0gMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobW9yc2VsKSwKKyAgICAgICAgICAgICAgICAnPE1vcnNlbDoga2V5PWNvZGVkX3ZhbDsgQ29tbWVudD1mb287IERvbWFpbj1leGFtcGxlLmNvbTsgJworICAgICAgICAgICAgICAgICdIdHRwT25seTsgTWF4LUFnZT0wOyBQYXRoPS87IFNlY3VyZTsgVmVyc2lvbj0xPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG1vcnNlbCksCisgICAgICAgICAgICAgICAgJ1NldC1Db29raWU6IGtleT1jb2RlZF92YWw7IENvbW1lbnQ9Zm9vOyBEb21haW49ZXhhbXBsZS5jb207ICcKKyAgICAgICAgICAgICAgICAnSHR0cE9ubHk7IE1heC1BZ2U9MDsgUGF0aD0vOyBTZWN1cmU7IFZlcnNpb249MScpCisKKyAgICAgICAgbW9yc2VsID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBtb3JzZWwuc2V0KCdrZXknLCAndmFsJywgJ2NvZGVkX3ZhbCcpCisgICAgICAgIG1vcnNlbFsnZXhwaXJlcyddID0gMAorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIobW9yc2VsKSwKKyAgICAgICAgICAgICAgICByJzxNb3JzZWw6IGtleT1jb2RlZF92YWw7ICcKKyAgICAgICAgICAgICAgICByJ2V4cGlyZXM9XHcrLCBcZCsgXHcrIFxkKyBcZCs6XGQrOlxkKyBcdys+JykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzdHIobW9yc2VsKSwKKyAgICAgICAgICAgICAgICByJ1NldC1Db29raWU6IGtleT1jb2RlZF92YWw7ICcKKyAgICAgICAgICAgICAgICByJ2V4cGlyZXM9XHcrLCBcZCsgXHcrIFxkKyBcZCs6XGQrOlxkKyBcdysnKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KENvb2tpZVRlc3RzLCBNb3JzZWxUZXN0cykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQppbmRleCBkZjlhOWUzLi5kODA5NDE0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CkBAIC0xOSw2ICsxOSwyNiBAQAogIyBTZWxmLXNpZ25lZCBjZXJ0IGZpbGUgZm9yIHNlbGYtc2lnbmVkLnB5dGhvbnRlc3QubmV0CiBDRVJUX3NlbGZzaWduZWRfcHl0aG9udGVzdGRvdG5ldCA9IG9zLnBhdGguam9pbihoZXJlLCAnc2VsZnNpZ25lZF9weXRob250ZXN0ZG90bmV0LnBlbScpCiAKKyMgY29uc3RhbnRzIGZvciB0ZXN0aW5nIGNodW5rZWQgZW5jb2RpbmcKK2NodW5rZWRfc3RhcnQgPSAoCisgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nCisgICAgJ1RyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXHJcblxyXG4nCisgICAgJ2FcclxuJworICAgICdoZWxsbyB3b3JsXHJcbicKKyAgICAnM1xyXG4nCisgICAgJ2QhIFxyXG4nCisgICAgJzhcclxuJworICAgICdhbmQgbm93IFxyXG4nCisgICAgJzIyXHJcbicKKyAgICAnZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudFxyXG4nCispCitjaHVua2VkX2V4cGVjdGVkID0gYidoZWxsbyB3b3JsZCEgYW5kIG5vdyBmb3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50JworY2h1bmtfZXh0ZW5zaW9uID0gIjtmb289YmFyIgorbGFzdF9jaHVuayA9ICIwXHJcbiIKK2xhc3RfY2h1bmtfZXh0ZW5kZWQgPSAiMCIgKyBjaHVua19leHRlbnNpb24gKyAiXHJcbiIKK3RyYWlsZXJzID0gIlgtRHVtbXk6IGZvb1xyXG5YLUR1bW0yOiBiYXJcclxuIgorY2h1bmtlZF9lbmQgPSAiXHJcbiIKKwogSE9TVCA9IHN1cHBvcnQuSE9TVAogCiBjbGFzcyBGYWtlU29ja2V0OgpAQCAtNTEsNiArNzEsOSBAQAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgcGFzcwogCisgICAgZGVmIHNldHNvY2tvcHQoc2VsZiwgbGV2ZWwsIG9wdG5hbWUsIHZhbHVlKToKKyAgICAgICAgcGFzcworCiBjbGFzcyBFUGlwZVNvY2tldChGYWtlU29ja2V0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0LCBwaXBlX3RyaWdnZXIpOgpAQCAtODQsNiArMTA3LDIzIEBACiAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignY2FsbGVyIHRyaWVkIHRvIHJlYWQgcGFzdCBFT0YnKQogICAgICAgICByZXR1cm4gZGF0YQogCitjbGFzcyBGYWtlU29ja2V0SFRUUENvbm5lY3Rpb24oY2xpZW50LkhUVFBDb25uZWN0aW9uKToKKyAgICAiIiJIVFRQQ29ubmVjdGlvbiBzdWJjbGFzcyB1c2luZyBGYWtlU29ja2V0OyBjb3VudHMgY29ubmVjdCgpIGNhbGxzIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICBzZWxmLmNvbm5lY3Rpb25zID0gMAorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuZmFrZV9zb2NrZXRfYXJncyA9IGFyZ3MKKyAgICAgICAgc2VsZi5fY3JlYXRlX2Nvbm5lY3Rpb24gPSBzZWxmLmNyZWF0ZV9jb25uZWN0aW9uCisKKyAgICBkZWYgY29ubmVjdChzZWxmKToKKyAgICAgICAgIiIiQ291bnQgdGhlIG51bWJlciBvZiB0aW1lcyBjb25uZWN0KCkgaXMgaW52b2tlZCIiIgorICAgICAgICBzZWxmLmNvbm5lY3Rpb25zICs9IDEKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuY29ubmVjdCgpCisKKyAgICBkZWYgY3JlYXRlX2Nvbm5lY3Rpb24oc2VsZiwgKnBvcywgKiprdyk6CisgICAgICAgIHJldHVybiBGYWtlU29ja2V0KCpzZWxmLmZha2Vfc29ja2V0X2FyZ3MpCisKIGNsYXNzIEhlYWRlclRlc3RzKFRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9hdXRvX2hlYWRlcnMoc2VsZik6CiAgICAgICAgICMgU29tZSBoZWFkZXJzIGFyZSBhZGRlZCBhdXRvbWF0aWNhbGx5LCBidXQgc2hvdWxkIG5vdCBiZSBhZGRlZCBieQpAQCAtNTQ4LDIwICs1ODgsOCBAQAogICAgICAgICAgICAgY29ubi5yZXF1ZXN0KCdQT1NUJywgJ3Rlc3QnLCBjb25uKQogCiAgICAgZGVmIHRlc3RfY2h1bmtlZChzZWxmKToKLSAgICAgICAgY2h1bmtlZF9zdGFydCA9ICgKLSAgICAgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJwotICAgICAgICAgICAgJ1RyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXHJcblxyXG4nCi0gICAgICAgICAgICAnYVxyXG4nCi0gICAgICAgICAgICAnaGVsbG8gd29ybFxyXG4nCi0gICAgICAgICAgICAnM1xyXG4nCi0gICAgICAgICAgICAnZCEgXHJcbicKLSAgICAgICAgICAgICc4XHJcbicKLSAgICAgICAgICAgICdhbmQgbm93IFxyXG4nCi0gICAgICAgICAgICAnMjJcclxuJwotICAgICAgICAgICAgJ2ZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnRcclxuJwotICAgICAgICApCi0gICAgICAgIGV4cGVjdGVkID0gYidoZWxsbyB3b3JsZCEgYW5kIG5vdyBmb3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50JwotICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgJzBcclxuJykKKyAgICAgICAgZXhwZWN0ZWQgPSBjaHVua2VkX2V4cGVjdGVkCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyBsYXN0X2NodW5rICsgY2h1bmtlZF9lbmQpCiAgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKICAgICAgICAgcmVzcC5iZWdpbigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKCksIGV4cGVjdGVkKQpAQCAtNTY5LDcgKzU5Nyw3IEBACiAKICAgICAgICAgIyBWYXJpb3VzIHJlYWQgc2l6ZXMKICAgICAgICAgZm9yIG4gaW4gcmFuZ2UoMSwgMTIpOgotICAgICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCisgICAgICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgbGFzdF9jaHVuayArIGNodW5rZWRfZW5kKQogICAgICAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQogICAgICAgICAgICAgcmVzcC5iZWdpbigpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZChuKSArIHJlc3AucmVhZChuKSArIHJlc3AucmVhZCgpLCBleHBlY3RlZCkKQEAgLTU5MiwyMyArNjIwLDEyIEBACiAgICAgICAgICAgICAgICAgcmVzcC5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9yZWFkaW50b19jaHVua2VkKHNlbGYpOgotICAgICAgICBjaHVua2VkX3N0YXJ0ID0gKAotICAgICAgICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nCi0gICAgICAgICAgICAnVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuXHJcbicKLSAgICAgICAgICAgICdhXHJcbicKLSAgICAgICAgICAgICdoZWxsbyB3b3JsXHJcbicKLSAgICAgICAgICAgICczXHJcbicKLSAgICAgICAgICAgICdkISBcclxuJwotICAgICAgICAgICAgJzhcclxuJwotICAgICAgICAgICAgJ2FuZCBub3cgXHJcbicKLSAgICAgICAgICAgICcyMlxyXG4nCi0gICAgICAgICAgICAnZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudFxyXG4nCi0gICAgICAgICkKLSAgICAgICAgZXhwZWN0ZWQgPSBiJ2hlbGxvIHdvcmxkISBhbmQgbm93IGZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQnCisKKyAgICAgICAgZXhwZWN0ZWQgPSBjaHVua2VkX2V4cGVjdGVkCiAgICAgICAgIG5leHBlY3RlZCA9IGxlbihleHBlY3RlZCkKICAgICAgICAgYiA9IGJ5dGVhcnJheSgxMjgpCiAKLSAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyBsYXN0X2NodW5rICsgY2h1bmtlZF9lbmQpCiAgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKICAgICAgICAgcmVzcC5iZWdpbigpCiAgICAgICAgIG4gPSByZXNwLnJlYWRpbnRvKGIpCkBAIC02MTgsNyArNjM1LDcgQEAKIAogICAgICAgICAjIFZhcmlvdXMgcmVhZCBzaXplcwogICAgICAgICBmb3IgbiBpbiByYW5nZSgxLCAxMik6Ci0gICAgICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgJzBcclxuJykKKyAgICAgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyBsYXN0X2NodW5rICsgY2h1bmtlZF9lbmQpCiAgICAgICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCiAgICAgICAgICAgICByZXNwLmJlZ2luKCkKICAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGIpCkBAIC02NTQsNyArNjcxLDcgQEAKICAgICAgICAgICAgICcxXHJcbicKICAgICAgICAgICAgICdkXHJcbicKICAgICAgICAgKQotICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgJzBcclxuJykKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArIGxhc3RfY2h1bmsgKyBjaHVua2VkX2VuZCkKICAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJIRUFEIikKICAgICAgICAgcmVzcC5iZWdpbigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKCksIGInJykKQEAgLTY3NCw3ICs2OTEsNyBAQAogICAgICAgICAgICAgJzFcclxuJwogICAgICAgICAgICAgJ2RcclxuJwogICAgICAgICApCi0gICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyAnMFxyXG4nKQorICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgbGFzdF9jaHVuayArIGNodW5rZWRfZW5kKQogICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkhFQUQiKQogICAgICAgICByZXNwLmJlZ2luKCkKICAgICAgICAgYiA9IGJ5dGVhcnJheSg1KQpAQCAtNzQ5LDYgKzc2Niw3IEBACiAgICAgICAgICAgICArICcwJyAqIDY1NTM2ICsgJ2FcclxuJwogICAgICAgICAgICAgJ2hlbGxvIHdvcmxkXHJcbicKICAgICAgICAgICAgICcwXHJcbicKKyAgICAgICAgICAgICdcclxuJwogICAgICAgICApCiAgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKEZha2VTb2NrZXQoYm9keSkpCiAgICAgICAgIHJlc3AuYmVnaW4oKQpAQCAtNzY2LDI4ICs3ODQsNiBAQAogICAgICAgICByZXNwLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3AuY2xvc2VkKQogCi0gICAgZGVmIHRlc3RfZGVsYXllZF9hY2tfb3B0KHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBOYWdsZS9kZWxheWVkX2FjayBvcHRpbWlzdGFpb24gd29ya3MgY29ycmVjdGx5LgotCi0gICAgICAgICMgRm9yIHNtYWxsIHBheWxvYWRzLCBpdCBzaG91bGQgY29hbGVzY2UgdGhlIGJvZHkgd2l0aAotICAgICAgICAjIGhlYWRlcnMsIHJlc3VsdGluZyBpbiBhIHNpbmdsZSBzZW5kYWxsKCkgY2FsbAotICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCi0gICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KE5vbmUpCi0gICAgICAgIGNvbm4uc29jayA9IHNvY2sKLSAgICAgICAgYm9keSA9IGIneCcgKiAoY29ubi5tc3MgLSAxKQotICAgICAgICBjb25uLnJlcXVlc3QoJ1BPU1QnLCAnLycsIGJvZHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29jay5zZW5kYWxsX2NhbGxzLCAxKQotCi0gICAgICAgICMgRm9yIGxhcmdlIHBheWxvYWRzLCBpdCBzaG91bGQgc2VuZCB0aGUgaGVhZGVycyBhbmQKLSAgICAgICAgIyB0aGVuIHRoZSBib2R5LCByZXN1bHRpbmcgaW4gbW9yZSB0aGFuIG9uZSBzZW5kYWxsKCkKLSAgICAgICAgIyBjYWxsCi0gICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKLSAgICAgICAgc29jayA9IEZha2VTb2NrZXQoTm9uZSkKLSAgICAgICAgY29ubi5zb2NrID0gc29jawotICAgICAgICBib2R5ID0gYid4JyAqIGNvbm4ubXNzCi0gICAgICAgIGNvbm4ucmVxdWVzdCgnUE9TVCcsICcvJywgYm9keSkKLSAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHNvY2suc2VuZGFsbF9jYWxscywgMSkKLQogICAgIGRlZiB0ZXN0X2Vycm9yX2xlYWsoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IHRoZSBzb2NrZXQgaXMgbm90IGxlYWtlZCBpZiBnZXRyZXNwb25zZSgpIGZhaWxzCiAgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKQEAgLTc5OCwxMiArNzk0LDI0NSBAQAogICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZiAgIyBBdm9pZCBnYXJiYWdlIGNvbGxlY3RvciBjbG9zaW5nIHRoZSBzb2NrZXQKICAgICAgICAgICAgICAgICBjbGllbnQuSFRUUFJlc3BvbnNlLl9faW5pdF9fKHNlbGYsICpwb3MsICoqa3cpCiAgICAgICAgIGNvbm4ucmVzcG9uc2VfY2xhc3MgPSBSZXNwb25zZQotICAgICAgICBjb25uLnNvY2sgPSBGYWtlU29ja2V0KCcnKSAgIyBFbXVsYXRlIHNlcnZlciBkcm9wcGluZyBjb25uZWN0aW9uCisgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoJ0ludmFsaWQgc3RhdHVzIGxpbmUnKQogICAgICAgICBjb25uLnJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoY2xpZW50LkJhZFN0YXR1c0xpbmUsIGNvbm4uZ2V0cmVzcG9uc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwb25zZS5jbG9zZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb25uLnNvY2suZmlsZV9jbG9zZWQpCiAKKyAgICBkZWYgdGVzdF9jaHVua2VkX2V4dGVuc2lvbihzZWxmKToKKyAgICAgICAgZXh0cmEgPSAnMztmb289YmFyXHJcbicgKyAnYWJjXHJcbicKKyAgICAgICAgZXhwZWN0ZWQgPSBjaHVua2VkX2V4cGVjdGVkICsgYidhYmMnCisKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArIGV4dHJhICsgbGFzdF9jaHVua19leHRlbmRlZCArIGNodW5rZWRfZW5kKQorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCisgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgpLCBleHBlY3RlZCkKKyAgICAgICAgcmVzcC5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9jaHVua2VkX21pc3NpbmdfZW5kKHNlbGYpOgorICAgICAgICAiIiJzb21lIHNlcnZlcnMgbWF5IHNlcnZlIHVwIGEgc2hvcnQgY2h1bmtlZCBlbmNvZGluZyBzdHJlYW0iIiIKKyAgICAgICAgZXhwZWN0ZWQgPSBjaHVua2VkX2V4cGVjdGVkCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyBsYXN0X2NodW5rKSAgI25vIHRlcm1pbmF0aW5nIGNybGYKKyAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQorICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgZXhwZWN0ZWQpCisgICAgICAgIHJlc3AuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfY2h1bmtlZF90cmFpbGVycyhzZWxmKToKKyAgICAgICAgIiIiU2VlIHRoYXQgdHJhaWxlcnMgYXJlIHJlYWQgYW5kIGlnbm9yZWQiIiIKKyAgICAgICAgZXhwZWN0ZWQgPSBjaHVua2VkX2V4cGVjdGVkCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyBsYXN0X2NodW5rICsgdHJhaWxlcnMgKyBjaHVua2VkX2VuZCkKKyAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQorICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgZXhwZWN0ZWQpCisgICAgICAgICMgd2Ugc2hvdWxkIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBmaWxlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29jay5maWxlLnJlYWQoMTAwKSwgYiIiKSAjd2UgcmVhZCB0byB0aGUgZW5kCisgICAgICAgIHJlc3AuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfY2h1bmtlZF9zeW5jKHNlbGYpOgorICAgICAgICAiIiJDaGVjayB0aGF0IHdlIGRvbid0IHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBjaHVua2VkLWVuY29kaW5nIHN0cmVhbSIiIgorICAgICAgICBleHBlY3RlZCA9IGNodW5rZWRfZXhwZWN0ZWQKKyAgICAgICAgZXh0cmFkYXRhID0gImV4dHJhZGF0YSIKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArIGxhc3RfY2h1bmsgKyB0cmFpbGVycyArIGNodW5rZWRfZW5kICsgZXh0cmFkYXRhKQorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCisgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgpLCBleHBlY3RlZCkKKyAgICAgICAgIyB0aGUgZmlsZSBzaG91bGQgbm93IGhhdmUgb3VyIGV4dHJhZGF0YSByZWFkeSB0byBiZSByZWFkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29jay5maWxlLnJlYWQoMTAwKSwgZXh0cmFkYXRhLmVuY29kZSgiYXNjaWkiKSkgI3dlIHJlYWQgdG8gdGhlIGVuZAorICAgICAgICByZXNwLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2NvbnRlbnRfbGVuZ3RoX3N5bmMoc2VsZik6CisgICAgICAgICIiIkNoZWNrIHRoYXQgd2UgZG9uJ3QgcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIENvbnRlbnQtTGVuZ3RoIHN0cmVhbSIiIgorICAgICAgICBleHRyYWRhdGEgPSAiZXh0cmFkYXRhIgorICAgICAgICBleHBlY3RlZCA9IGIiSGVsbG8xMjNcclxuIgorICAgICAgICBzb2NrID0gRmFrZVNvY2tldCgnSFRUUC8xLjEgMjAwIE9LXHJcbkNvbnRlbnQtTGVuZ3RoOiAxMFxyXG5cclxuSGVsbG8xMjNcclxuJyArIGV4dHJhZGF0YSkKKyAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQorICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgZXhwZWN0ZWQpCisgICAgICAgICMgdGhlIGZpbGUgc2hvdWxkIG5vdyBoYXZlIG91ciBleHRyYWRhdGEgcmVhZHkgdG8gYmUgcmVhZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvY2suZmlsZS5yZWFkKDEwMCksIGV4dHJhZGF0YS5lbmNvZGUoImFzY2lpIikpICN3ZSByZWFkIHRvIHRoZSBlbmQKKyAgICAgICAgcmVzcC5jbG9zZSgpCisKK2NsYXNzIEV4dGVuZGVkUmVhZFRlc3QoVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3QgcGVlaygpLCByZWFkMSgpLCByZWFkbGluZSgpCisgICAgIiIiCisgICAgbGluZXMgPSAoCisgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJworICAgICAgICAnXHJcbicKKyAgICAgICAgJ2hlbGxvIHdvcmxkIVxuJworICAgICAgICAnYW5kIG5vdyBcbicKKyAgICAgICAgJ2ZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnRcbicKKyAgICAgICAgJ2ZvbycKKyAgICAgICAgKQorICAgIGxpbmVzX2V4cGVjdGVkID0gbGluZXNbbGluZXMuZmluZCgnaGVsbG8nKTpdLmVuY29kZSgiYXNjaWkiKQorICAgIGxpbmVzX2NodW5rZWQgPSAoCisgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJworICAgICAgICAnVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuXHJcbicKKyAgICAgICAgJ2FcclxuJworICAgICAgICAnaGVsbG8gd29ybFxyXG4nCisgICAgICAgICczXHJcbicKKyAgICAgICAgJ2QhXG5cclxuJworICAgICAgICAnOVxyXG4nCisgICAgICAgICdhbmQgbm93IFxuXHJcbicKKyAgICAgICAgJzIzXHJcbicKKyAgICAgICAgJ2ZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnRcblxyXG4nCisgICAgICAgICczXHJcbicKKyAgICAgICAgJ2Zvb1xyXG4nCisgICAgICAgICcwXHJcbicgIyB0ZXJtaW5hdGluZyBjaHVuaworICAgICAgICAnXHJcbicgICMgZW5kIG9mIHRyYWlsZXJzCisgICAgKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzb2NrID0gRmFrZVNvY2tldChzZWxmLmxpbmVzKQorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCisgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICByZXNwLmZwID0gaW8uQnVmZmVyZWRSZWFkZXIocmVzcC5mcCkKKyAgICAgICAgc2VsZi5yZXNwID0gcmVzcAorCisKKworICAgIGRlZiB0ZXN0X3BlZWsoc2VsZik6CisgICAgICAgIHJlc3AgPSBzZWxmLnJlc3AKKyAgICAgICAgIyBwYXRjaCB1cCB0aGUgYnVmZmVyZWQgcGVlayBzbyB0aGF0IGl0IHJldHVybnMgbm90IHRvbyBtdWNoIHN0dWZmCisgICAgICAgIG9sZHBlZWsgPSByZXNwLmZwLnBlZWsKKyAgICAgICAgZGVmIG15cGVlayhuPS0xKToKKyAgICAgICAgICAgIHAgPSBvbGRwZWVrKG4pCisgICAgICAgICAgICBpZiBuID49IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIHBbOm5dCisgICAgICAgICAgICByZXR1cm4gcFs6MTBdCisgICAgICAgIHJlc3AuZnAucGVlayA9IG15cGVlaworCisgICAgICAgIGFsbCA9IFtdCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAjIHRyeSBhIHNob3J0IHBlZWsKKyAgICAgICAgICAgIHAgPSByZXNwLnBlZWsoMykKKyAgICAgICAgICAgIGlmIHA6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihwKSwgMCkKKyAgICAgICAgICAgICAgICAjIHRoZW4gdW5ib3VuZGVkIHBlZWsKKyAgICAgICAgICAgICAgICBwMiA9IHJlc3AucGVlaygpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKHAyKSwgbGVuKHApKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwMi5zdGFydHN3aXRoKHApKQorICAgICAgICAgICAgICAgIG5leHQgPSByZXNwLnJlYWQobGVuKHAyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQsIHAyKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuZXh0ID0gcmVzcC5yZWFkKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5leHQpCisgICAgICAgICAgICBhbGwuYXBwZW5kKG5leHQpCisgICAgICAgICAgICBpZiBub3QgbmV4dDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiIi5qb2luKGFsbCksIHNlbGYubGluZXNfZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9yZWFkbGluZShzZWxmKToKKyAgICAgICAgcmVzcCA9IHNlbGYucmVzcAorICAgICAgICBzZWxmLl92ZXJpZnlfcmVhZGxpbmUoc2VsZi5yZXNwLnJlYWRsaW5lLCBzZWxmLmxpbmVzX2V4cGVjdGVkKQorCisgICAgZGVmIF92ZXJpZnlfcmVhZGxpbmUoc2VsZiwgcmVhZGxpbmUsIGV4cGVjdGVkKToKKyAgICAgICAgYWxsID0gW10KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICMgc2hvcnQgcmVhZGxpbmVzCisgICAgICAgICAgICBsaW5lID0gcmVhZGxpbmUoNSkKKyAgICAgICAgICAgIGlmIGxpbmUgYW5kIGxpbmUgIT0gYiJmb28iOgorICAgICAgICAgICAgICAgIGlmIGxlbihsaW5lKSA8IDU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lLmVuZHN3aXRoKGIiXG4iKSkKKyAgICAgICAgICAgIGFsbC5hcHBlbmQobGluZSkKKyAgICAgICAgICAgIGlmIG5vdCBsaW5lOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiIiLmpvaW4oYWxsKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9yZWFkMShzZWxmKToKKyAgICAgICAgcmVzcCA9IHNlbGYucmVzcAorICAgICAgICBkZWYgcigpOgorICAgICAgICAgICAgcmVzID0gcmVzcC5yZWFkMSg0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKHJlcyksIDQpCisgICAgICAgICAgICByZXR1cm4gcmVzCisgICAgICAgIHJlYWRsaW5lciA9IFJlYWRsaW5lcihyKQorICAgICAgICBzZWxmLl92ZXJpZnlfcmVhZGxpbmUocmVhZGxpbmVyLnJlYWRsaW5lLCBzZWxmLmxpbmVzX2V4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfcmVhZDFfdW5ib3VuZGVkKHNlbGYpOgorICAgICAgICByZXNwID0gc2VsZi5yZXNwCisgICAgICAgIGFsbCA9IFtdCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBkYXRhID0gcmVzcC5yZWFkMSgpCisgICAgICAgICAgICBpZiBub3QgZGF0YToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgYWxsLmFwcGVuZChkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiIi5qb2luKGFsbCksIHNlbGYubGluZXNfZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9yZWFkMV9ib3VuZGVkKHNlbGYpOgorICAgICAgICByZXNwID0gc2VsZi5yZXNwCisgICAgICAgIGFsbCA9IFtdCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBkYXRhID0gcmVzcC5yZWFkMSgxMCkKKyAgICAgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oZGF0YSksIDEwKQorICAgICAgICAgICAgYWxsLmFwcGVuZChkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiIi5qb2luKGFsbCksIHNlbGYubGluZXNfZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9yZWFkMV8wKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucmVzcC5yZWFkMSgwKSwgYiIiKQorCisgICAgZGVmIHRlc3RfcGVla18wKHNlbGYpOgorICAgICAgICBwID0gc2VsZi5yZXNwLnBlZWsoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoMCwgbGVuKHApKQorCitjbGFzcyBFeHRlbmRlZFJlYWRUZXN0Q2h1bmtlZChFeHRlbmRlZFJlYWRUZXN0KToKKyAgICAiIiIKKyAgICBUZXN0IHBlZWsoKSwgcmVhZDEoKSwgcmVhZGxpbmUoKSBpbiBjaHVua2VkIG1vZGUKKyAgICAiIiIKKyAgICBsaW5lcyA9ICgKKyAgICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nCisgICAgICAgICdUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxyXG5cclxuJworICAgICAgICAnYVxyXG4nCisgICAgICAgICdoZWxsbyB3b3JsXHJcbicKKyAgICAgICAgJzNcclxuJworICAgICAgICAnZCFcblxyXG4nCisgICAgICAgICc5XHJcbicKKyAgICAgICAgJ2FuZCBub3cgXG5cclxuJworICAgICAgICAnMjNcclxuJworICAgICAgICAnZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudFxuXHJcbicKKyAgICAgICAgJzNcclxuJworICAgICAgICAnZm9vXHJcbicKKyAgICAgICAgJzBcclxuJyAjIHRlcm1pbmF0aW5nIGNodW5rCisgICAgICAgICdcclxuJyAgIyBlbmQgb2YgdHJhaWxlcnMKKyAgICApCisKKworY2xhc3MgUmVhZGxpbmVyOgorICAgICIiIgorICAgIGEgc2ltcGxlIHJlYWRsaW5lIGNsYXNzIHRoYXQgdXNlcyBhbiBhcmJpdHJhcnkgcmVhZCBmdW5jdGlvbiBhbmQgYnVmZmVyaW5nCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlYWRmdW5jKToKKyAgICAgICAgc2VsZi5yZWFkZnVuYyA9IHJlYWRmdW5jCisgICAgICAgIHNlbGYucmVtYWluZGVyID0gYiIiCisKKyAgICBkZWYgcmVhZGxpbmUoc2VsZiwgbGltaXQpOgorICAgICAgICBkYXRhID0gW10KKyAgICAgICAgZGF0YWxlbiA9IDAKKyAgICAgICAgcmVhZCA9IHNlbGYucmVtYWluZGVyCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgaWR4ID0gcmVhZC5maW5kKGInXG4nKQorICAgICAgICAgICAgICAgIGlmIGlkeCAhPSAtMToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBkYXRhbGVuICsgbGVuKHJlYWQpID49IGxpbWl0OgorICAgICAgICAgICAgICAgICAgICBpZHggPSBsaW1pdCAtIGRhdGFsZW4gLSAxCisgICAgICAgICAgICAgICAgIyByZWFkIG1vcmUgZGF0YQorICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKHJlYWQpCisgICAgICAgICAgICAgICAgcmVhZCA9IHNlbGYucmVhZGZ1bmMoKQorICAgICAgICAgICAgICAgIGlmIG5vdCByZWFkOgorICAgICAgICAgICAgICAgICAgICBpZHggPSAwICNlb2YgY29uZGl0aW9uCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZHggKz0gMQorICAgICAgICAgICAgZGF0YS5hcHBlbmQocmVhZFs6aWR4XSkKKyAgICAgICAgICAgIHNlbGYucmVtYWluZGVyID0gcmVhZFtpZHg6XQorICAgICAgICAgICAgcmV0dXJuIGIiIi5qb2luKGRhdGEpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHNlbGYucmVtYWluZGVyID0gYiIiLmpvaW4oZGF0YSkKKyAgICAgICAgICAgIHJhaXNlCisKIAogY2xhc3MgT2ZmbGluZVRlc3QoVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2FsbChzZWxmKToKQEAgLTgyMywxMyArMTA1Miw3NCBAQAogICAgIGRlZiB0ZXN0X3Jlc3BvbnNlcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQucmVzcG9uc2VzW2NsaWVudC5OT1RfRk9VTkRdLCAiTm90IEZvdW5kIikKIAorICAgIGRlZiB0ZXN0X2NsaWVudF9jb25zdGFudHMoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIHdlIGRvbid0IGJyZWFrIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCAzLjQKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAnQ09OVElOVUUnLAorICAgICAgICAgICAgJ1NXSVRDSElOR19QUk9UT0NPTFMnLAorICAgICAgICAgICAgJ1BST0NFU1NJTkcnLAorICAgICAgICAgICAgJ09LJywKKyAgICAgICAgICAgICdDUkVBVEVEJywKKyAgICAgICAgICAgICdBQ0NFUFRFRCcsCisgICAgICAgICAgICAnTk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04nLAorICAgICAgICAgICAgJ05PX0NPTlRFTlQnLAorICAgICAgICAgICAgJ1JFU0VUX0NPTlRFTlQnLAorICAgICAgICAgICAgJ1BBUlRJQUxfQ09OVEVOVCcsCisgICAgICAgICAgICAnTVVMVElfU1RBVFVTJywKKyAgICAgICAgICAgICdJTV9VU0VEJywKKyAgICAgICAgICAgICdNVUxUSVBMRV9DSE9JQ0VTJywKKyAgICAgICAgICAgICdNT1ZFRF9QRVJNQU5FTlRMWScsCisgICAgICAgICAgICAnRk9VTkQnLAorICAgICAgICAgICAgJ1NFRV9PVEhFUicsCisgICAgICAgICAgICAnTk9UX01PRElGSUVEJywKKyAgICAgICAgICAgICdVU0VfUFJPWFknLAorICAgICAgICAgICAgJ1RFTVBPUkFSWV9SRURJUkVDVCcsCisgICAgICAgICAgICAnQkFEX1JFUVVFU1QnLAorICAgICAgICAgICAgJ1VOQVVUSE9SSVpFRCcsCisgICAgICAgICAgICAnUEFZTUVOVF9SRVFVSVJFRCcsCisgICAgICAgICAgICAnRk9SQklEREVOJywKKyAgICAgICAgICAgICdOT1RfRk9VTkQnLAorICAgICAgICAgICAgJ01FVEhPRF9OT1RfQUxMT1dFRCcsCisgICAgICAgICAgICAnTk9UX0FDQ0VQVEFCTEUnLAorICAgICAgICAgICAgJ1BST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEJywKKyAgICAgICAgICAgICdSRVFVRVNUX1RJTUVPVVQnLAorICAgICAgICAgICAgJ0NPTkZMSUNUJywKKyAgICAgICAgICAgICdHT05FJywKKyAgICAgICAgICAgICdMRU5HVEhfUkVRVUlSRUQnLAorICAgICAgICAgICAgJ1BSRUNPTkRJVElPTl9GQUlMRUQnLAorICAgICAgICAgICAgJ1JFUVVFU1RfRU5USVRZX1RPT19MQVJHRScsCisgICAgICAgICAgICAnUkVRVUVTVF9VUklfVE9PX0xPTkcnLAorICAgICAgICAgICAgJ1VOU1VQUE9SVEVEX01FRElBX1RZUEUnLAorICAgICAgICAgICAgJ1JFUVVFU1RFRF9SQU5HRV9OT1RfU0FUSVNGSUFCTEUnLAorICAgICAgICAgICAgJ0VYUEVDVEFUSU9OX0ZBSUxFRCcsCisgICAgICAgICAgICAnVU5QUk9DRVNTQUJMRV9FTlRJVFknLAorICAgICAgICAgICAgJ0xPQ0tFRCcsCisgICAgICAgICAgICAnRkFJTEVEX0RFUEVOREVOQ1knLAorICAgICAgICAgICAgJ1VQR1JBREVfUkVRVUlSRUQnLAorICAgICAgICAgICAgJ1BSRUNPTkRJVElPTl9SRVFVSVJFRCcsCisgICAgICAgICAgICAnVE9PX01BTllfUkVRVUVTVFMnLAorICAgICAgICAgICAgJ1JFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UnLAorICAgICAgICAgICAgJ0lOVEVSTkFMX1NFUlZFUl9FUlJPUicsCisgICAgICAgICAgICAnTk9UX0lNUExFTUVOVEVEJywKKyAgICAgICAgICAgICdCQURfR0FURVdBWScsCisgICAgICAgICAgICAnU0VSVklDRV9VTkFWQUlMQUJMRScsCisgICAgICAgICAgICAnR0FURVdBWV9USU1FT1VUJywKKyAgICAgICAgICAgICdIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRCcsCisgICAgICAgICAgICAnSU5TVUZGSUNJRU5UX1NUT1JBR0UnLAorICAgICAgICAgICAgJ05PVF9FWFRFTkRFRCcsCisgICAgICAgICAgICAnTkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRCcsCisgICAgICAgIF0KKyAgICAgICAgZm9yIGNvbnN0IGluIGV4cGVjdGVkOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY29uc3RhbnQ9Y29uc3QpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGNsaWVudCwgY29uc3QpKQorCiAKIGNsYXNzIFNvdXJjZUFkZHJlc3NUZXN0KFRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydiA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKICAgICAgICAgc2VsZi5wb3J0ID0gc3VwcG9ydC5iaW5kX3BvcnQoc2VsZi5zZXJ2KQogICAgICAgICBzZWxmLnNvdXJjZV9wb3J0ID0gc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0KCkKLSAgICAgICAgc2VsZi5zZXJ2Lmxpc3Rlbig1KQorICAgICAgICBzZWxmLnNlcnYubGlzdGVuKCkKICAgICAgICAgc2VsZi5jb25uID0gTm9uZQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgpAQCAtODYxLDcgKzExNTEsNyBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5zZXJ2ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQogICAgICAgICBUaW1lb3V0VGVzdC5QT1JUID0gc3VwcG9ydC5iaW5kX3BvcnQoc2VsZi5zZXJ2KQotICAgICAgICBzZWxmLnNlcnYubGlzdGVuKDUpCisgICAgICAgIHNlbGYuc2Vydi5saXN0ZW4oKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzZWxmLnNlcnYuY2xvc2UoKQpAQCAtOTAxLDYgKzExOTEsNzggQEAKICAgICAgICAgaHR0cENvbm4uY2xvc2UoKQogCiAKK2NsYXNzIFBlcnNpc3RlbmNlVGVzdChUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9yZXVzZV9yZWNvbm5lY3Qoc2VsZik6CisgICAgICAgICMgU2hvdWxkIHJldXNlIG9yIHJlY29ubmVjdCBkZXBlbmRpbmcgb24gaGVhZGVyIGZyb20gc2VydmVyCisgICAgICAgIHRlc3RzID0gKAorICAgICAgICAgICAgKCcxLjAnLCAnJywgRmFsc2UpLAorICAgICAgICAgICAgKCcxLjAnLCAnQ29ubmVjdGlvbjoga2VlcC1hbGl2ZVxyXG4nLCBUcnVlKSwKKyAgICAgICAgICAgICgnMS4xJywgJycsIFRydWUpLAorICAgICAgICAgICAgKCcxLjEnLCAnQ29ubmVjdGlvbjogY2xvc2VcclxuJywgRmFsc2UpLAorICAgICAgICAgICAgKCcxLjAnLCAnQ29ubmVjdGlvbjoga2VlcC1BTElWRVxyXG4nLCBUcnVlKSwKKyAgICAgICAgICAgICgnMS4xJywgJ0Nvbm5lY3Rpb246IGNsb1NFXHJcbicsIEZhbHNlKSwKKyAgICAgICAgKQorICAgICAgICBmb3IgdmVyc2lvbiwgaGVhZGVyLCByZXVzZSBpbiB0ZXN0czoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHZlcnNpb249dmVyc2lvbiwgaGVhZGVyPWhlYWRlcik6CisgICAgICAgICAgICAgICAgbXNnID0gKAorICAgICAgICAgICAgICAgICAgICAnSFRUUC97fSAyMDAgT0tcclxuJworICAgICAgICAgICAgICAgICAgICAne30nCisgICAgICAgICAgICAgICAgICAgICdDb250ZW50LUxlbmd0aDogMTJcclxuJworICAgICAgICAgICAgICAgICAgICAnXHJcbicKKyAgICAgICAgICAgICAgICAgICAgJ0R1bW15IGJvZHlcclxuJworICAgICAgICAgICAgICAgICkuZm9ybWF0KHZlcnNpb24sIGhlYWRlcikKKyAgICAgICAgICAgICAgICBjb25uID0gRmFrZVNvY2tldEhUVFBDb25uZWN0aW9uKG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb25uLnNvY2spCisgICAgICAgICAgICAgICAgY29ubi5yZXF1ZXN0KCdHRVQnLCAnL29wZW4tY29ubmVjdGlvbicpCisgICAgICAgICAgICAgICAgd2l0aCBjb25uLmdldHJlc3BvbnNlKCkgYXMgcmVzcG9uc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29ubi5zb2NrIGlzIE5vbmUsIG5vdCByZXVzZSkKKyAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVhZCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25uLnNvY2sgaXMgTm9uZSwgbm90IHJldXNlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29ubi5jb25uZWN0aW9ucywgMSkKKyAgICAgICAgICAgICAgICBjb25uLnJlcXVlc3QoJ0dFVCcsICcvc3Vic2VxdWVudC1yZXF1ZXN0JykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbm4uY29ubmVjdGlvbnMsIDEgaWYgcmV1c2UgZWxzZSAyKQorCisgICAgZGVmIHRlc3RfZGlzY29ubmVjdGVkKHNlbGYpOgorCisgICAgICAgIGRlZiBtYWtlX3Jlc2V0X3JlYWRlcih0ZXh0KToKKyAgICAgICAgICAgICIiIlJldHVybiBCdWZmZXJlZFJlYWRlciB0aGF0IHJhaXNlcyBFQ09OTlJFU0VUIGF0IEVPRiIiIgorICAgICAgICAgICAgc3RyZWFtID0gaW8uQnl0ZXNJTyh0ZXh0KQorICAgICAgICAgICAgZGVmIHJlYWRpbnRvKGJ1ZmZlcik6CisgICAgICAgICAgICAgICAgc2l6ZSA9IGlvLkJ5dGVzSU8ucmVhZGludG8oc3RyZWFtLCBidWZmZXIpCisgICAgICAgICAgICAgICAgaWYgc2l6ZSA9PSAwOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uUmVzZXRFcnJvcigpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNpemUKKyAgICAgICAgICAgIHN0cmVhbS5yZWFkaW50byA9IHJlYWRpbnRvCisgICAgICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRSZWFkZXIoc3RyZWFtKQorCisgICAgICAgIHRlc3RzID0gKAorICAgICAgICAgICAgKGlvLkJ5dGVzSU8sIGNsaWVudC5SZW1vdGVEaXNjb25uZWN0ZWQpLAorICAgICAgICAgICAgKG1ha2VfcmVzZXRfcmVhZGVyLCBDb25uZWN0aW9uUmVzZXRFcnJvciksCisgICAgICAgICkKKyAgICAgICAgZm9yIHN0cmVhbV9mYWN0b3J5LCBleGNlcHRpb24gaW4gdGVzdHM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChleGNlcHRpb249ZXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICBjb25uID0gRmFrZVNvY2tldEhUVFBDb25uZWN0aW9uKGInJywgc3RyZWFtX2ZhY3RvcnkpCisgICAgICAgICAgICAgICAgY29ubi5yZXF1ZXN0KCdHRVQnLCAnL2VvZi1yZXNwb25zZScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXhjZXB0aW9uLCBjb25uLmdldHJlc3BvbnNlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNvbm4uc29jaykKKyAgICAgICAgICAgICAgICAjIEhUVFBDb25uZWN0aW9uLmNvbm5lY3QoKSBzaG91bGQgYmUgYXV0b21hdGljYWxseSBpbnZva2VkCisgICAgICAgICAgICAgICAgY29ubi5yZXF1ZXN0KCdHRVQnLCAnL3JlY29ubmVjdCcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25uLmNvbm5lY3Rpb25zLCAyKQorCisgICAgZGVmIHRlc3RfMTAwX2Nsb3NlKHNlbGYpOgorICAgICAgICBjb25uID0gRmFrZVNvY2tldEhUVFBDb25uZWN0aW9uKAorICAgICAgICAgICAgYidIVFRQLzEuMSAxMDAgQ29udGludWVcclxuJworICAgICAgICAgICAgYidcclxuJworICAgICAgICAgICAgIyBNaXNzaW5nIGZpbmFsIHJlc3BvbnNlCisgICAgICAgICkKKyAgICAgICAgY29ubi5yZXF1ZXN0KCdHRVQnLCAnLycsIGhlYWRlcnM9eydFeHBlY3QnOiAnMTAwLWNvbnRpbnVlJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGNsaWVudC5SZW1vdGVEaXNjb25uZWN0ZWQsIGNvbm4uZ2V0cmVzcG9uc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNvbm4uc29jaykKKyAgICAgICAgY29ubi5yZXF1ZXN0KCdHRVQnLCAnL3JlY29ubmVjdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29ubi5jb25uZWN0aW9ucywgMikKKworCiBjbGFzcyBIVFRQU1Rlc3QoVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMTE3MSwxNyArMTUzMywxOCBAQAogICAgICAgICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nICMgUmVwbHkgdG8gSEVBRAogICAgICAgICAgICAgJ0NvbnRlbnQtTGVuZ3RoOiA0MlxyXG5cclxuJwogICAgICAgICApCi0KLSAgICAgICAgZGVmIGNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MsIHRpbWVvdXQ9Tm9uZSwgc291cmNlX2FkZHJlc3M9Tm9uZSk6Ci0gICAgICAgICAgICByZXR1cm4gRmFrZVNvY2tldChyZXNwb25zZV90ZXh0LCBob3N0PWFkZHJlc3NbMF0sIHBvcnQ9YWRkcmVzc1sxXSkKLQogICAgICAgICBzZWxmLmhvc3QgPSAncHJveHkuY29tJwogICAgICAgICBzZWxmLmNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oc2VsZi5ob3N0KQotICAgICAgICBzZWxmLmNvbm4uX2NyZWF0ZV9jb25uZWN0aW9uID0gY3JlYXRlX2Nvbm5lY3Rpb24KKyAgICAgICAgc2VsZi5jb25uLl9jcmVhdGVfY29ubmVjdGlvbiA9IHNlbGYuX2NyZWF0ZV9jb25uZWN0aW9uKHJlc3BvbnNlX3RleHQpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYuY29ubi5jbG9zZSgpCiAKKyAgICBkZWYgX2NyZWF0ZV9jb25uZWN0aW9uKHNlbGYsIHJlc3BvbnNlX3RleHQpOgorICAgICAgICBkZWYgY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcmVzcywgdGltZW91dD1Ob25lLCBzb3VyY2VfYWRkcmVzcz1Ob25lKToKKyAgICAgICAgICAgIHJldHVybiBGYWtlU29ja2V0KHJlc3BvbnNlX3RleHQsIGhvc3Q9YWRkcmVzc1swXSwgcG9ydD1hZGRyZXNzWzFdKQorICAgICAgICByZXR1cm4gY3JlYXRlX2Nvbm5lY3Rpb24KKwogICAgIGRlZiB0ZXN0X3NldF90dW5uZWxfaG9zdF9wb3J0X2hlYWRlcnMoc2VsZik6CiAgICAgICAgIHR1bm5lbF9ob3N0ID0gJ2Rlc3RpbmF0aW9uLmNvbScKICAgICAgICAgdHVubmVsX3BvcnQgPSA4ODg4CkBAIC0xMjIyLDEzICsxNTg1LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidDT05ORUNUIGRlc3RpbmF0aW9uLmNvbScsIHNlbGYuY29ubi5zb2NrLmRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidIb3N0OiBkZXN0aW5hdGlvbi5jb20nLCBzZWxmLmNvbm4uc29jay5kYXRhKQogCisgICAgZGVmIHRlc3RfdHVubmVsX2RlYnVnbG9nKHNlbGYpOgorICAgICAgICBleHBlY3RlZF9oZWFkZXIgPSAnWC1EdW1teTogMScKKyAgICAgICAgcmVzcG9uc2VfdGV4dCA9ICdIVFRQLzEuMCAyMDAgT0tcclxue31cclxuXHJcbicuZm9ybWF0KGV4cGVjdGVkX2hlYWRlcikKKworICAgICAgICBzZWxmLmNvbm4uc2V0X2RlYnVnbGV2ZWwoMSkKKyAgICAgICAgc2VsZi5jb25uLl9jcmVhdGVfY29ubmVjdGlvbiA9IHNlbGYuX2NyZWF0ZV9jb25uZWN0aW9uKHJlc3BvbnNlX3RleHQpCisgICAgICAgIHNlbGYuY29ubi5zZXRfdHVubmVsKCdkZXN0aW5hdGlvbi5jb20nKQorCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgICAgICBzZWxmLmNvbm4ucmVxdWVzdCgnUFVUJywgJy8nLCAnJykKKyAgICAgICAgbGluZXMgPSBvdXRwdXQuZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignaGVhZGVyOiB7fScuZm9ybWF0KGV4cGVjdGVkX2hlYWRlciksIGxpbmVzKQogCiAKIEBzdXBwb3J0LnJlYXBfdGhyZWFkcwogZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEhlYWRlclRlc3RzLCBPZmZsaW5lVGVzdCwgQmFzaWNUZXN0LCBUaW1lb3V0VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzaXN0ZW5jZVRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUFNUZXN0LCBSZXF1ZXN0Qm9keVRlc3QsIFNvdXJjZUFkZHJlc3NUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFBSZXNwb25zZVRlc3QsIFR1bm5lbFRlc3RzKQorICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFBSZXNwb25zZVRlc3QsIEV4dGVuZGVkUmVhZFRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZW5kZWRSZWFkVGVzdENodW5rZWQsIFR1bm5lbFRlc3RzKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5IGIvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQppbmRleCA2ZTVmMmRiLi5kNGM4ZWFiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKQEAgLTYsNyArNiw3IEBACiAKIGZyb20gaHR0cC5zZXJ2ZXIgaW1wb3J0IEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIsIEhUVFBTZXJ2ZXIsIFwKICAgICAgU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyLCBDR0lIVFRQUmVxdWVzdEhhbmRsZXIKLWZyb20gaHR0cCBpbXBvcnQgc2VydmVyCitmcm9tIGh0dHAgaW1wb3J0IHNlcnZlciwgSFRUUFN0YXR1cwogCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKQEAgLTc5LDEzICs3OSwxMyBAQAogICAgICAgICBkZWZhdWx0X3JlcXVlc3RfdmVyc2lvbiA9ICdIVFRQLzEuMScKIAogICAgICAgICBkZWYgZG9fVEVTVChzZWxmKToKLSAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSgyMDQpCisgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoSFRUUFN0YXR1cy5OT19DT05URU5UKQogICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcignQ29udGVudC1UeXBlJywgJ3RleHQvaHRtbCcpCiAgICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdDb25uZWN0aW9uJywgJ2Nsb3NlJykKICAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQogCiAgICAgICAgIGRlZiBkb19LRUVQKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDIwNCkKKyAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZShIVFRQU3RhdHVzLk5PX0NPTlRFTlQpCiAgICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9odG1sJykKICAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ0Nvbm5lY3Rpb24nLCAna2VlcC1hbGl2ZScpCiAgICAgICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKQEAgLTk0LDcgKzk0LDcgQEAKICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig5OTkpCiAKICAgICAgICAgZGVmIGRvX05PVEZPVU5EKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQwNCkKKyAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcihIVFRQU3RhdHVzLk5PVF9GT1VORCkKIAogICAgICAgICBkZWYgZG9fRVhQTEFJTkVSUk9SKHNlbGYpOgogICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDk5OSwgIlNob3J0IE1lc3NhZ2UiLApAQCAtMTIyLDM1ICsxMjIsMzUgQEAKICAgICBkZWYgdGVzdF9jb21tYW5kKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi5yZXF1ZXN0KCdHRVQnLCAnLycpCiAgICAgICAgIHJlcyA9IHNlbGYuY29uLmdldHJlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCA1MDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQpCiAKICAgICBkZWYgdGVzdF9yZXF1ZXN0X2xpbmVfdHJpbW1pbmcoc2VsZik6CiAgICAgICAgIHNlbGYuY29uLl9odHRwX3Zzbl9zdHIgPSAnSFRUUC8xLjFcbicKICAgICAgICAgc2VsZi5jb24ucHV0cmVxdWVzdCgnWFlaQk9HVVMnLCAnLycpCiAgICAgICAgIHNlbGYuY29uLmVuZGhlYWRlcnMoKQogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgNTAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIEhUVFBTdGF0dXMuTk9UX0lNUExFTUVOVEVEKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbl9ib2d1cyhzZWxmKToKICAgICAgICAgc2VsZi5jb24uX2h0dHBfdnNuX3N0ciA9ICdGVUJBUicKICAgICAgICAgc2VsZi5jb24ucHV0cmVxdWVzdCgnR0VUJywgJy8nKQogICAgICAgICBzZWxmLmNvbi5lbmRoZWFkZXJzKCkKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDQwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLkJBRF9SRVFVRVNUKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbl9kaWdpdHMoc2VsZik6CiAgICAgICAgIHNlbGYuY29uLl9odHRwX3Zzbl9zdHIgPSAnSFRUUC85LjkuOScKICAgICAgICAgc2VsZi5jb24ucHV0cmVxdWVzdCgnR0VUJywgJy8nKQogICAgICAgICBzZWxmLmNvbi5lbmRoZWFkZXJzKCkKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDQwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLkJBRF9SRVFVRVNUKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbl9ub25lX2dldChzZWxmKToKICAgICAgICAgc2VsZi5jb24uX2h0dHBfdnNuX3N0ciA9ICcnCiAgICAgICAgIHNlbGYuY29uLnB1dHJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgc2VsZi5jb24uZW5kaGVhZGVycygpCiAgICAgICAgIHJlcyA9IHNlbGYuY29uLmdldHJlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCA1MDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQpCiAKICAgICBkZWYgdGVzdF92ZXJzaW9uX25vbmUoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IGEgdmFsaWQgbWV0aG9kIGlzIHJlamVjdGVkIHdoZW4gbm90IEhUVFAvMS54CkBAIC0xNTgsNyArMTU4LDcgQEAKICAgICAgICAgc2VsZi5jb24ucHV0cmVxdWVzdCgnQ1VTVE9NJywgJy8nKQogICAgICAgICBzZWxmLmNvbi5lbmRoZWFkZXJzKCkKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDQwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLkJBRF9SRVFVRVNUKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbl9pbnZhbGlkKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi5faHR0cF92c24gPSA5OQpAQCAtMTY2LDIxICsxNjYsMjEgQEAKICAgICAgICAgc2VsZi5jb24ucHV0cmVxdWVzdCgnR0VUJywgJy8nKQogICAgICAgICBzZWxmLmNvbi5lbmRoZWFkZXJzKCkKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDUwNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLkhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEKQogCiAgICAgZGVmIHRlc3Rfc2VuZF9ibGFuayhzZWxmKToKICAgICAgICAgc2VsZi5jb24uX2h0dHBfdnNuX3N0ciA9ICcnCiAgICAgICAgIHNlbGYuY29uLnB1dHJlcXVlc3QoJycsICcnKQogICAgICAgICBzZWxmLmNvbi5lbmRoZWFkZXJzKCkKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDQwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLkJBRF9SRVFVRVNUKQogCiAgICAgZGVmIHRlc3RfaGVhZGVyX2Nsb3NlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi5wdXRyZXF1ZXN0KCdHRVQnLCAnLycpCiAgICAgICAgIHNlbGYuY29uLnB1dGhlYWRlcignQ29ubmVjdGlvbicsICdjbG9zZScpCiAgICAgICAgIHNlbGYuY29uLmVuZGhlYWRlcnMoKQogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgNTAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIEhUVFBTdGF0dXMuTk9UX0lNUExFTUVOVEVEKQogCiAgICAgZGVmIHRlc3RfaGVhZF9rZWVwX2FsaXZlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi5faHR0cF92c25fc3RyID0gJ0hUVFAvMS4xJwpAQCAtMTg4LDEyICsxODgsMTIgQEAKICAgICAgICAgc2VsZi5jb24ucHV0aGVhZGVyKCdDb25uZWN0aW9uJywgJ2tlZXAtYWxpdmUnKQogICAgICAgICBzZWxmLmNvbi5lbmRoZWFkZXJzKCkKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDUwMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLk5PVF9JTVBMRU1FTlRFRCkKIAogICAgIGRlZiB0ZXN0X2hhbmRsZXIoc2VsZik6CiAgICAgICAgIHNlbGYuY29uLnJlcXVlc3QoJ1RFU1QnLCAnLycpCiAgICAgICAgIHJlcyA9IHNlbGYuY29uLmdldHJlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCAyMDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5OT19DT05URU5UKQogCiAgICAgZGVmIHRlc3RfcmV0dXJuX2hlYWRlcl9rZWVwX2FsaXZlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi5yZXF1ZXN0KCdLRUVQJywgJy8nKQpAQCAtMjMwLDExICsyMzAsNDggQEAKICAgICAgICAgIyBJc3N1ZSAjMTYwODg6IHN0YW5kYXJkIGVycm9yIHJlc3BvbnNlcyBzaG91bGQgaGF2ZSBhIGNvbnRlbnQtbGVuZ3RoCiAgICAgICAgIHNlbGYuY29uLnJlcXVlc3QoJ05PVEZPVU5EJywgJy8nKQogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgNDA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIEhUVFBTdGF0dXMuTk9UX0ZPVU5EKQorCiAgICAgICAgIGRhdGEgPSByZXMucmVhZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJykpLCBsZW4oZGF0YSkpCiAKIAorY2xhc3MgUmVxdWVzdEhhbmRsZXJMb2dnaW5nVGVzdENhc2UoQmFzZVRlc3RDYXNlKToKKyAgICBjbGFzcyByZXF1ZXN0X2hhbmRsZXIoQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcik6CisgICAgICAgIHByb3RvY29sX3ZlcnNpb24gPSAnSFRUUC8xLjEnCisgICAgICAgIGRlZmF1bHRfcmVxdWVzdF92ZXJzaW9uID0gJ0hUVFAvMS4xJworCisgICAgICAgIGRlZiBkb19HRVQoc2VsZik6CisgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoSFRUUFN0YXR1cy5PSykKKyAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQorCisgICAgICAgIGRlZiBkb19FUlJPUihzZWxmKToKKyAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcihIVFRQU3RhdHVzLk5PVF9GT1VORCwgJ0ZpbGUgbm90IGZvdW5kJykKKworICAgIGRlZiB0ZXN0X2dldChzZWxmKToKKyAgICAgICAgc2VsZi5jb24gPSBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbihzZWxmLkhPU1QsIHNlbGYuUE9SVCkKKyAgICAgICAgc2VsZi5jb24uY29ubmVjdCgpCisKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIGVycjoKKyAgICAgICAgICAgIHNlbGYuY29uLnJlcXVlc3QoJ0dFVCcsICcvJykKKyAgICAgICAgICAgIHNlbGYuY29uLmdldHJlc3BvbnNlKCkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgICAgICBlcnIuZ2V0dmFsdWUoKS5lbmRzd2l0aCgnIkdFVCAvIEhUVFAvMS4xIiAyMDAgLVxuJykpCisKKyAgICBkZWYgdGVzdF9lcnIoc2VsZik6CisgICAgICAgIHNlbGYuY29uID0gaHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24oc2VsZi5IT1NULCBzZWxmLlBPUlQpCisgICAgICAgIHNlbGYuY29uLmNvbm5lY3QoKQorCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBlcnI6CisgICAgICAgICAgICBzZWxmLmNvbi5yZXF1ZXN0KCdFUlJPUicsICcvJykKKyAgICAgICAgICAgIHNlbGYuY29uLmdldHJlc3BvbnNlKCkKKworICAgICAgICBsaW5lcyA9IGVyci5nZXR2YWx1ZSgpLnNwbGl0KCdcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lc1swXS5lbmRzd2l0aCgnY29kZSA0MDQsIG1lc3NhZ2UgRmlsZSBub3QgZm91bmQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzWzFdLmVuZHN3aXRoKCciRVJST1IgLyBIVFRQLzEuMSIgNDA0IC0nKSkKKworCiBjbGFzcyBTaW1wbGVIVFRQU2VydmVyVGVzdENhc2UoQmFzZVRlc3RDYXNlKToKICAgICBjbGFzcyByZXF1ZXN0X2hhbmRsZXIoTm9Mb2dSZXF1ZXN0SGFuZGxlciwgU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyKToKICAgICAgICAgcGFzcwpAQCAtMjYxLDEyICsyOTgsMjggQEAKICAgICAgICAgICAgIEJhc2VUZXN0Q2FzZS50ZWFyRG93bihzZWxmKQogCiAgICAgZGVmIGNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHNlbGYsIHJlc3BvbnNlLCBzdGF0dXMsIGRhdGE9Tm9uZSk6CisgICAgICAgIGRlZiBjbG9zZV9jb25uKCk6CisgICAgICAgICAgICAiIiJEb24ndCBjbG9zZSByZWFkZXIgeWV0IHNvIHdlIGNhbiBjaGVjayBpZiB0aGVyZSB3YXMgbGVmdG92ZXIKKyAgICAgICAgICAgIGJ1ZmZlcmVkIGlucHV0IiIiCisgICAgICAgICAgICBub25sb2NhbCByZWFkZXIKKyAgICAgICAgICAgIHJlYWRlciA9IHJlc3BvbnNlLmZwCisgICAgICAgICAgICByZXNwb25zZS5mcCA9IE5vbmUKKyAgICAgICAgcmVhZGVyID0gTm9uZQorICAgICAgICByZXNwb25zZS5fY2xvc2VfY29ubiA9IGNsb3NlX2Nvbm4KKwogICAgICAgICBib2R5ID0gcmVzcG9uc2UucmVhZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwb25zZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXMsIHN0YXR1cykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmVzcG9uc2UucmVhc29uKQogICAgICAgICBpZiBkYXRhOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBib2R5KQorICAgICAgICAjIEVuc3VyZSB0aGUgc2VydmVyIGhhcyBub3Qgc2V0IHVwIGEgcGVyc2lzdGVudCBjb25uZWN0aW9uLCBhbmQgaGFzCisgICAgICAgICMgbm90IHNlbnQgYW55IGV4dHJhIGRhdGEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS52ZXJzaW9uLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5tc2cuZ2V0KCJDb25uZWN0aW9uIiwgImNsb3NlIiksICJjbG9zZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZGVyLnJlYWQoMzApLCBiJycsICdDb25uZWN0aW9uIHNob3VsZCBiZSBjbG9zZWQnKQorCisgICAgICAgIHJlYWRlci5jbG9zZSgpCiAgICAgICAgIHJldHVybiBib2R5CiAKICAgICBAc3VwcG9ydC5yZXF1aXJlc19tYWNfdmVyKDEwLCA1KQpAQCAtMjg1LDUyICszMzgsNTggQEAKICAgICAgICAgICAgICAgICBpZiBuYW1lICE9ICd0ZXN0JzogIyBJZ25vcmUgYSBmaWxlbmFtZSBjcmVhdGVkIGluIHNldFVwKCkuCiAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gbmFtZQogICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBib2R5ID0gc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgMjAwKQorICAgICAgICBib2R5ID0gc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5PSykKICAgICAgICAgcXVvdGVkbmFtZSA9IHVybGxpYi5wYXJzZS5xdW90ZShmaWxlbmFtZSwgZXJyb3JzPSdzdXJyb2dhdGVwYXNzJykKICAgICAgICAgc2VsZi5hc3NlcnRJbigoJ2hyZWY9IiVzIicgJSBxdW90ZWRuYW1lKQogICAgICAgICAgICAgICAgICAgICAgIC5lbmNvZGUoZW5jLCAnc3Vycm9nYXRlZXNjYXBlJyksIGJvZHkpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oKCc+JXM8JyAlIGh0bWwuZXNjYXBlKGZpbGVuYW1lKSkKICAgICAgICAgICAgICAgICAgICAgICAuZW5jb2RlKGVuYywgJ3N1cnJvZ2F0ZWVzY2FwZScpLCBib2R5KQogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChzZWxmLnRlbXBkaXJfbmFtZSArICcvJyArIHF1b3RlZG5hbWUpCi0gICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIDIwMCwKKyAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5PSywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXN1cHBvcnQuVEVTVEZOX1VOREVDT0RBQkxFKQogCiAgICAgZGVmIHRlc3RfZ2V0KHNlbGYpOgogICAgICAgICAjY29uc3RydWN0cyB0aGUgcGF0aCByZWxhdGl2ZSB0byB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIEhUVFBTZXJ2ZXIKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi50ZW1wZGlyX25hbWUgKyAnL3Rlc3QnKQotICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCAyMDAsIGRhdGE9c2VsZi5kYXRhKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk9LLCBkYXRhPXNlbGYuZGF0YSkKICAgICAgICAgIyBjaGVjayBmb3IgdHJhaWxpbmcgIi8iIHdoaWNoIHNob3VsZCByZXR1cm4gNDA0LiBTZWUgSXNzdWUxNzMyNAogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChzZWxmLnRlbXBkaXJfbmFtZSArICcvdGVzdC8nKQotICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCA0MDQpCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuTk9UX0ZPVU5EKQogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChzZWxmLnRlbXBkaXJfbmFtZSArICcvJykKLSAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgMjAwKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk9LKQogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChzZWxmLnRlbXBkaXJfbmFtZSkKLSAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgMzAxKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk1PVkVEX1BFUk1BTkVOVExZKQogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChzZWxmLnRlbXBkaXJfbmFtZSArICcvP2hpPTInKQotICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCAyMDApCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuT0spCiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KHNlbGYudGVtcGRpcl9uYW1lICsgJz9oaT0xJykKLSAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgMzAxKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk1PVkVEX1BFUk1BTkVOVExZKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmdldGhlYWRlcigiTG9jYXRpb24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRlbXBkaXJfbmFtZSArICIvP2hpPTEiKQogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdCgnL1RoaXNEb2VzTm90RXhpc3QnKQotICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCA0MDQpCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuTk9UX0ZPVU5EKQogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdCgnLycgKyAnVGhpc0RvZXNOb3RFeGlzdCcgKyAnLycpCi0gICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIDQwNCkKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXJfbmFtZSwgJ2luZGV4Lmh0bWwnKSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3QoJy8nICsgc2VsZi50ZW1wZGlyX25hbWUgKyAnLycpCi0gICAgICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCAyMDApCi0gICAgICAgICAgICAjIGNobW9kKCkgZG9lc24ndCB3b3JrIGFzIGV4cGVjdGVkIG9uIFdpbmRvd3MsIGFuZCBmaWxlc3lzdGVtCi0gICAgICAgICAgICAjIHBlcm1pc3Npb25zIGFyZSBpZ25vcmVkIGJ5IHJvb3Qgb24gVW5peC4KLSAgICAgICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQgb3MuZ2V0ZXVpZCgpICE9IDA6Ci0gICAgICAgICAgICAgICAgb3MuY2htb2Qoc2VsZi50ZW1wZGlyLCAwKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk5PVF9GT1VORCkKKworICAgICAgICBkYXRhID0gYiJEdW1teSBpbmRleCBmaWxlXHJcbiIKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXJfbmFtZSwgJ2luZGV4Lmh0bWwnKSwgJ3diJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoZGF0YSkKKyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3QoJy8nICsgc2VsZi50ZW1wZGlyX25hbWUgKyAnLycpCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuT0ssIGRhdGEpCisKKyAgICAgICAgIyBjaG1vZCgpIGRvZXNuJ3Qgd29yayBhcyBleHBlY3RlZCBvbiBXaW5kb3dzLCBhbmQgZmlsZXN5c3RlbQorICAgICAgICAjIHBlcm1pc3Npb25zIGFyZSBpZ25vcmVkIGJ5IHJvb3Qgb24gVW5peC4KKyAgICAgICAgaWYgb3MubmFtZSA9PSAncG9zaXgnIGFuZCBvcy5nZXRldWlkKCkgIT0gMDoKKyAgICAgICAgICAgIG9zLmNobW9kKHNlbGYudGVtcGRpciwgMCkKKyAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChzZWxmLnRlbXBkaXJfbmFtZSArICcvJykKLSAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCA0MDQpCisgICAgICAgICAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5OT1RfRk9VTkQpCisgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIG9zLmNobW9kKHNlbGYudGVtcGRpciwgMG83NTUpCiAKICAgICBkZWYgdGVzdF9oZWFkKHNlbGYpOgogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdCgKICAgICAgICAgICAgIHNlbGYudGVtcGRpcl9uYW1lICsgJy90ZXN0JywgbWV0aG9kPSdIRUFEJykKLSAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgMjAwKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk9LKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmdldGhlYWRlcignY29udGVudC1sZW5ndGgnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIobGVuKHNlbGYuZGF0YSkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmdldGhlYWRlcignY29udGVudC10eXBlJyksCkBAIC0zMzgsMTIgKzM5NywxMiBAQAogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9yZXF1ZXN0cyhzZWxmKToKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3QoJy8nLCBtZXRob2Q9J0ZPTycpCi0gICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIDUwMSkKKyAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQpCiAgICAgICAgICMgcmVxdWVzdHMgbXVzdCBiZSBjYXNlIHNlbnNpdGl2ZSxzbyB0aGlzIHNob3VsZCBmYWlsIHRvbwogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdCgnLycsIG1ldGhvZD0nY3VzdG9tJykKLSAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgNTAxKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk5PVF9JTVBMRU1FTlRFRCkKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3QoJy8nLCBtZXRob2Q9J0dFVHMnKQotICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCA1MDEpCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuTk9UX0lNUExFTUVOVEVEKQogCiAKIGNnaV9maWxlMSA9ICIiIlwKQEAgLTUwOCwxMiArNTY3LDEzIEBACiAKICAgICBkZWYgdGVzdF9oZWFkZXJzX2FuZF9jb250ZW50KHNlbGYpOgogICAgICAgICByZXMgPSBzZWxmLnJlcXVlc3QoJy9jZ2ktYmluL2ZpbGUxLnB5JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCAyMDApLAotICAgICAgICAgICAgKHJlcy5yZWFkKCksIHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtdHlwZScpLCByZXMuc3RhdHVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIChyZXMucmVhZCgpLCByZXMuZ2V0aGVhZGVyKCdDb250ZW50LXR5cGUnKSwgcmVzLnN0YXR1cyksCisgICAgICAgICAgICAoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCBIVFRQU3RhdHVzLk9LKSkKIAogICAgIGRlZiB0ZXN0X2lzc3VlMTk0MzUoc2VsZik6CiAgICAgICAgIHJlcyA9IHNlbGYucmVxdWVzdCgnLy8vLy8vLy8vLy9ub2NnaS5weS8uLi9jZ2ktYmluL25vdGhlcmUuc2gnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDQwNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLk5PVF9GT1VORCkKIAogICAgIGRlZiB0ZXN0X3Bvc3Qoc2VsZik6CiAgICAgICAgIHBhcmFtcyA9IHVybGxpYi5wYXJzZS51cmxlbmNvZGUoCkBAIC01MjYsNTAgKzU4Niw1NSBAQAogICAgIGRlZiB0ZXN0X2ludmFsaWR1cmkoc2VsZik6CiAgICAgICAgIHJlcyA9IHNlbGYucmVxdWVzdCgnL2NnaS1iaW4vaW52YWxpZCcpCiAgICAgICAgIHJlcy5yZWFkKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCA0MDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5OT1RfRk9VTkQpCiAKICAgICBkZWYgdGVzdF9hdXRob3JpemF0aW9uKHNlbGYpOgogICAgICAgICBoZWFkZXJzID0ge2InQXV0aG9yaXphdGlvbicgOiBiJ0Jhc2ljICcgKwogICAgICAgICAgICAgICAgICAgIGJhc2U2NC5iNjRlbmNvZGUoYid1c2VybmFtZTpwYXNzJyl9CiAgICAgICAgIHJlcyA9IHNlbGYucmVxdWVzdCgnL2NnaS1iaW4vZmlsZTEucHknLCAnR0VUJywgaGVhZGVycz1oZWFkZXJzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChiJ0hlbGxvIFdvcmxkJyArIHNlbGYubGluZXNlcCwgJ3RleHQvaHRtbCcsIDIwMCksCi0gICAgICAgICAgICAgICAgKHJlcy5yZWFkKCksIHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtdHlwZScpLCByZXMuc3RhdHVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIChiJ0hlbGxvIFdvcmxkJyArIHNlbGYubGluZXNlcCwgJ3RleHQvaHRtbCcsIEhUVFBTdGF0dXMuT0spLAorICAgICAgICAgICAgKHJlcy5yZWFkKCksIHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtdHlwZScpLCByZXMuc3RhdHVzKSkKIAogICAgIGRlZiB0ZXN0X25vX2xlYWRpbmdfc2xhc2goc2VsZik6CiAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIyNTQKICAgICAgICAgcmVzID0gc2VsZi5yZXF1ZXN0KCdjZ2ktYmluL2ZpbGUxLnB5JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCAyMDApLAotICAgICAgICAgICAgIChyZXMucmVhZCgpLCByZXMuZ2V0aGVhZGVyKCdDb250ZW50LXR5cGUnKSwgcmVzLnN0YXR1cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCBIVFRQU3RhdHVzLk9LKSwKKyAgICAgICAgICAgIChyZXMucmVhZCgpLCByZXMuZ2V0aGVhZGVyKCdDb250ZW50LXR5cGUnKSwgcmVzLnN0YXR1cykpCiAKICAgICBkZWYgdGVzdF9vc19lbnZpcm9uX2lzX25vdF9hbHRlcmVkKHNlbGYpOgogICAgICAgICBzaWduYXR1cmUgPSAiVGVzdCBDR0kgU2VydmVyIgogICAgICAgICBvcy5lbnZpcm9uWydTRVJWRVJfU09GVFdBUkUnXSA9IHNpZ25hdHVyZQogICAgICAgICByZXMgPSBzZWxmLnJlcXVlc3QoJy9jZ2ktYmluL2ZpbGUxLnB5JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCAyMDApLAotICAgICAgICAgICAgICAgIChyZXMucmVhZCgpLCByZXMuZ2V0aGVhZGVyKCdDb250ZW50LXR5cGUnKSwgcmVzLnN0YXR1cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCBIVFRQU3RhdHVzLk9LKSwKKyAgICAgICAgICAgIChyZXMucmVhZCgpLCByZXMuZ2V0aGVhZGVyKCdDb250ZW50LXR5cGUnKSwgcmVzLnN0YXR1cykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZW52aXJvblsnU0VSVkVSX1NPRlRXQVJFJ10sIHNpZ25hdHVyZSkKIAogICAgIGRlZiB0ZXN0X3VybHF1b3RlX2RlY29kaW5nX2luX2NnaV9jaGVjayhzZWxmKToKICAgICAgICAgcmVzID0gc2VsZi5yZXF1ZXN0KCcvY2dpLWJpbiUyZmZpbGUxLnB5JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCAyMDApLAotICAgICAgICAgICAgICAgIChyZXMucmVhZCgpLCByZXMuZ2V0aGVhZGVyKCdDb250ZW50LXR5cGUnKSwgcmVzLnN0YXR1cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCBIVFRQU3RhdHVzLk9LKSwKKyAgICAgICAgICAgIChyZXMucmVhZCgpLCByZXMuZ2V0aGVhZGVyKCdDb250ZW50LXR5cGUnKSwgcmVzLnN0YXR1cykpCiAKICAgICBkZWYgdGVzdF9uZXN0ZWRfY2dpX3BhdGhfaXNzdWUyMTMyMyhzZWxmKToKICAgICAgICAgcmVzID0gc2VsZi5yZXF1ZXN0KCcvY2dpLWJpbi9jaGlsZC1kaXIvZmlsZTMucHknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChiJ0hlbGxvIFdvcmxkJyArIHNlbGYubGluZXNlcCwgJ3RleHQvaHRtbCcsIDIwMCksCi0gICAgICAgICAgICAgICAgKHJlcy5yZWFkKCksIHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtdHlwZScpLCByZXMuc3RhdHVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIChiJ0hlbGxvIFdvcmxkJyArIHNlbGYubGluZXNlcCwgJ3RleHQvaHRtbCcsIEhUVFBTdGF0dXMuT0spLAorICAgICAgICAgICAgKHJlcy5yZWFkKCksIHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtdHlwZScpLCByZXMuc3RhdHVzKSkKIAogICAgIGRlZiB0ZXN0X3F1ZXJ5X3dpdGhfbXVsdGlwbGVfcXVlc3Rpb25fbWFyayhzZWxmKToKICAgICAgICAgcmVzID0gc2VsZi5yZXF1ZXN0KCcvY2dpLWJpbi9maWxlNC5weT9hPWI/Yz1kJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIChiJ2E9Yj9jPWQnICsgc2VsZi5saW5lc2VwLCAndGV4dC9odG1sJywgMjAwKSwKKyAgICAgICAgICAgIChiJ2E9Yj9jPWQnICsgc2VsZi5saW5lc2VwLCAndGV4dC9odG1sJywgSFRUUFN0YXR1cy5PSyksCiAgICAgICAgICAgICAocmVzLnJlYWQoKSwgcmVzLmdldGhlYWRlcignQ29udGVudC10eXBlJyksIHJlcy5zdGF0dXMpKQogCiAgICAgZGVmIHRlc3RfcXVlcnlfd2l0aF9jb250aW51b3VzX3NsYXNoZXMoc2VsZik6CiAgICAgICAgIHJlcyA9IHNlbGYucmVxdWVzdCgnL2NnaS1iaW4vZmlsZTQucHk/az1hYSUyRiUyRmJiJi8vcS8vcC8vPS8vYS8vYi8vJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgIChiJ2s9YWElMkYlMkZiYiYvL3EvL3AvLz0vL2EvL2IvLycgKyBzZWxmLmxpbmVzZXAsCi0gICAgICAgICAgICAgJ3RleHQvaHRtbCcsIDIwMCksCisgICAgICAgICAgICAgJ3RleHQvaHRtbCcsIEhUVFBTdGF0dXMuT0spLAogICAgICAgICAgICAgKHJlcy5yZWFkKCksIHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtdHlwZScpLCByZXMuc3RhdHVzKSkKIAogCkBAIC01ODAsNyArNjQ1LDcgQEAKIAogICAgIGRlZiBkb19HRVQoc2VsZik6CiAgICAgICAgIHNlbGYuZ2V0X2NhbGxlZCA9IFRydWUKLSAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDIwMCkKKyAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKEhUVFBTdGF0dXMuT0spCiAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L2h0bWwnKQogICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKICAgICAgICAgc2VsZi53ZmlsZS53cml0ZShiJzxodG1sPjxib2R5PkRhdGE8L2JvZHk+PC9odG1sPlxyXG4nKQpAQCAtNTkwLDcgKzY1NSw3IEBACiAKIGNsYXNzIFJlamVjdGluZ1NvY2tldGxlc3NSZXF1ZXN0SGFuZGxlcihTb2NrZXRsZXNzUmVxdWVzdEhhbmRsZXIpOgogICAgIGRlZiBoYW5kbGVfZXhwZWN0XzEwMChzZWxmKToKLSAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQxNykKKyAgICAgICAgc2VsZi5zZW5kX2Vycm9yKEhUVFBTdGF0dXMuRVhQRUNUQVRJT05fRkFJTEVEKQogICAgICAgICByZXR1cm4gRmFsc2UKIAogCkBAIC04NDcsNiArOTEyLDcgQEAKICAgICBjd2QgPSBvcy5nZXRjd2QoKQogICAgIHRyeToKICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCisgICAgICAgICAgICBSZXF1ZXN0SGFuZGxlckxvZ2dpbmdUZXN0Q2FzZSwKICAgICAgICAgICAgIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXJUZXN0Q2FzZSwKICAgICAgICAgICAgIEJhc2VIVFRQU2VydmVyVGVzdENhc2UsCiAgICAgICAgICAgICBTaW1wbGVIVFRQU2VydmVyVGVzdENhc2UsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2lkbGUucHkgYi9MaWIvdGVzdC90ZXN0X2lkbGUucHkKaW5kZXggMTMyNjU3Yi4uMTQxZTg5ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pZGxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaWRsZS5weQpAQCAtMSwxMyArMSwxMSBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZSwgaW1wb3J0X2ZyZXNoX21vZHVsZQorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZQogCiAjIFNraXAgdGVzdCBpZiBfdGhyZWFkIG9yIF90a2ludGVyIHdhc24ndCBidWlsdCBvciBpZGxlbGliIHdhcyBkZWxldGVkLgogaW1wb3J0X21vZHVsZSgndGhyZWFkaW5nJykgICMgaW1wb3J0ZWQgYnkgUHlTaGVsbCwgaW1wb3J0cyBfdGhyZWFkCiB0ayA9IGltcG9ydF9tb2R1bGUoJ3RraW50ZXInKSAgIyBpbXBvcnRzIF90a2ludGVyCiBpZGxldGVzdCA9IGltcG9ydF9tb2R1bGUoJ2lkbGVsaWIuaWRsZV90ZXN0JykKLSMgTWFrZSBzdXJlIFRDTF9MSUJSQVJZIGlzIHNldCBwcm9wZXJseSBvbiBXaW5kb3dzLiAgTm90ZSB0aGF0IHRoaXMgd2lsbAotIyBjYXVzZSBhIHdhcm5pbmcgYWJvdXQgdGVzdF9pZGxlIG1vZGlmeWluZyB0aGUgZW52aXJvbm1lbnQKLWltcG9ydF9mcmVzaF9tb2R1bGUoJ3RraW50ZXIuX2ZpeCcpCiAKICMgV2l0aG91dCB0ZXN0X21haW4gcHJlc2VudCwgcmVncnRlc3QucnVudGVzdF9pbm5lciAobGluZTEyMTkpIGNhbGxzCiAjIHVuaXR0ZXN0LlRlc3RMb2FkZXIoKS5sb2FkVGVzdHNGcm9tTW9kdWxlKHRoaXNfbW9kdWxlKSB3aGljaCBjYWxscwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5CmluZGV4IDgzODQxMWUuLjA3MTU3ZjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkKQEAgLTExLDcgKzExLDggQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgY2FsZW5kYXIKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlYXBfdGhyZWFkcywgdmVyYm9zZSwgdHJhbnNpZW50X2ludGVybmV0LCBydW5fd2l0aF90eiwgcnVuX3dpdGhfbG9jYWxlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHJlYXBfdGhyZWFkcywgdmVyYm9zZSwgdHJhbnNpZW50X2ludGVybmV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBydW5fd2l0aF90eiwgcnVuX3dpdGhfbG9jYWxlKQogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZXpvbmUsIHRpbWVkZWx0YQogdHJ5OgpAQCAtMTksOCArMjAsOCBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIHNzbCA9IE5vbmUKIAotQ0VSVEZJTEUgPSBOb25lCi1DQUZJTEUgPSBOb25lCitDRVJURklMRSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pIG9yIG9zLmN1cmRpciwgImtleWNlcnQzLnBlbSIpCitDQUZJTEUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSBvciBvcy5jdXJkaXIsICJweWNhY2VydC5wZW0iKQogCiAKIGNsYXNzIFRlc3RJbWFwbGliKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTQxLDE3ICs0MiwxNSBAQAogICAgIGRlZiB0ZXN0X0ludGVybmFsZGF0ZTJ0dXBsZV9pc3N1ZTEwOTQxKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGltYXBsaWIuSW50ZXJuYWxkYXRlMnR1cGxlKAogICAgICAgICAgICAgYicyNSAoSU5URVJOQUxEQVRFICIwMi1BcHItMjAwMCAwMjozMDowMCArMDAwMCIpJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hcGxpYi5JbnRlcm5hbGRhdGUydHVwbGUoCi0gICAgICAgICAgICBiJzI1IChJTlRFUk5BTERBVEUgIjAyLUFwci0yMDAwIDAzOjMwOjAwICswMDAwIiknKSkKLQotCisgICAgICAgICAgICBpbWFwbGliLkludGVybmFsZGF0ZTJ0dXBsZSgKKyAgICAgICAgICAgICAgICBiJzI1IChJTlRFUk5BTERBVEUgIjAyLUFwci0yMDAwIDAzOjMwOjAwICswMDAwIiknKSkKIAogICAgIGRlZiB0aW1ldmFsdWVzKHNlbGYpOgogICAgICAgICByZXR1cm4gWzIwMDAwMDAwMDAsIDIwMDAwMDAwMDAuMCwgdGltZS5sb2NhbHRpbWUoMjAwMDAwMDAwMCksCiAgICAgICAgICAgICAgICAgKDIwMzMsIDUsIDE4LCA1LCAzMywgMjAsIC0xLCAtMSwgLTEpLAogICAgICAgICAgICAgICAgICgyMDMzLCA1LCAxOCwgNSwgMzMsIDIwLCAtMSwgLTEsIDEpLAogICAgICAgICAgICAgICAgIGRhdGV0aW1lLmZyb210aW1lc3RhbXAoMjAwMDAwMDAwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWV6b25lKHRpbWVkZWx0YSgwLCAyKjYwKjYwKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXpvbmUodGltZWRlbHRhKDAsIDIgKiA2MCAqIDYwKSkpLAogICAgICAgICAgICAgICAgICciMTgtTWF5LTIwMzMgMDU6MzM6MjAgKzAyMDAiJ10KIAogICAgIEBydW5fd2l0aF9sb2NhbGUoJ0xDX0FMTCcsICdkZV9ERScsICdmcl9GUicpCkBAIC03NCw3ICs3Myw2IEBACiAKIAogaWYgc3NsOgotCiAgICAgY2xhc3MgU2VjdXJlVENQU2VydmVyKHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIpOgogCiAgICAgICAgIGRlZiBnZXRfcmVxdWVzdChzZWxmKToKQEAgLTk1LDEzICs5MywxNyBAQAogCiAKIGNsYXNzIFNpbXBsZUlNQVBIYW5kbGVyKHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlcik6Ci0KICAgICB0aW1lb3V0ID0gMQogICAgIGNvbnRpbnVhdGlvbiA9IE5vbmUKICAgICBjYXBhYmlsaXRpZXMgPSAnJwogCisgICAgZGVmIHNldHVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldHVwKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIubG9nZ2VkID0gTm9uZQorCiAgICAgZGVmIF9zZW5kKHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICBpZiB2ZXJib3NlOiBwcmludCgiU0VOVDogJXIiICUgbWVzc2FnZS5zdHJpcCgpKQorICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoIlNFTlQ6ICVyIiAlIG1lc3NhZ2Uuc3RyaXAoKSkKICAgICAgICAgc2VsZi53ZmlsZS53cml0ZShtZXNzYWdlKQogCiAgICAgZGVmIF9zZW5kX2xpbmUoc2VsZiwgbWVzc2FnZSk6CkBAIC0xMzQsNyArMTM2LDggQEAKICAgICAgICAgICAgICAgICBpZiBsaW5lLmVuZHN3aXRoKGInXHJcbicpOgogICAgICAgICAgICAgICAgICAgICBicmVhawogCi0gICAgICAgICAgICBpZiB2ZXJib3NlOiBwcmludCgnR09UOiAlcicgJSBsaW5lLnN0cmlwKCkpCisgICAgICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgICAgIHByaW50KCdHT1Q6ICVyJyAlIGxpbmUuc3RyaXAoKSkKICAgICAgICAgICAgIGlmIHNlbGYuY29udGludWF0aW9uOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250aW51YXRpb24uc2VuZChsaW5lKQpAQCAtMTQ2LDggKzE0OSw4IEBACiAgICAgICAgICAgICBjbWQgPSBzcGxpdGxpbmVbMV0KICAgICAgICAgICAgIGFyZ3MgPSBzcGxpdGxpbmVbMjpdCiAKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ2NtZF8nK2NtZCk6Ci0gICAgICAgICAgICAgICAgY29udGludWF0aW9uID0gZ2V0YXR0cihzZWxmLCAnY21kXycrY21kKSh0YWcsIGFyZ3MpCisgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdjbWRfJyArIGNtZCk6CisgICAgICAgICAgICAgICAgY29udGludWF0aW9uID0gZ2V0YXR0cihzZWxmLCAnY21kXycgKyBjbWQpKHRhZywgYXJncykKICAgICAgICAgICAgICAgICBpZiBjb250aW51YXRpb246CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udGludWF0aW9uID0gY29udGludWF0aW9uCiAgICAgICAgICAgICAgICAgICAgIG5leHQoY29udGludWF0aW9uKQpAQCAtMTU1LDE2ICsxNTgsMjUgQEAKICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdCQUQnLCBjbWQgKyAnIHVua25vd24nKQogCiAgICAgZGVmIGNtZF9DQVBBQklMSVRZKHNlbGYsIHRhZywgYXJncyk6Ci0gICAgICAgIGNhcHMgPSAnSU1BUDRyZXYxICcgKyBzZWxmLmNhcGFiaWxpdGllcyBpZiBzZWxmLmNhcGFiaWxpdGllcyBlbHNlICdJTUFQNHJldjEnCisgICAgICAgIGNhcHMgPSAoJ0lNQVA0cmV2MSAnICsgc2VsZi5jYXBhYmlsaXRpZXMKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmNhcGFiaWxpdGllcworICAgICAgICAgICAgICAgIGVsc2UgJ0lNQVA0cmV2MScpCiAgICAgICAgIHNlbGYuX3NlbmRfdGV4dGxpbmUoJyogQ0FQQUJJTElUWSAnICsgY2FwcykKICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnT0snLCAnQ0FQQUJJTElUWSBjb21wbGV0ZWQnKQogCiAgICAgZGVmIGNtZF9MT0dPVVQoc2VsZiwgdGFnLCBhcmdzKToKKyAgICAgICAgc2VsZi5zZXJ2ZXIubG9nZ2VkID0gTm9uZQogICAgICAgICBzZWxmLl9zZW5kX3RleHRsaW5lKCcqIEJZRSBJTUFQNHJlZjEgU2VydmVyIGxvZ2dpbmcgb3V0JykKICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnT0snLCAnTE9HT1VUIGNvbXBsZXRlZCcpCiAKKyAgICBkZWYgY21kX0xPR0lOKHNlbGYsIHRhZywgYXJncyk6CisgICAgICAgIHNlbGYuc2VydmVyLmxvZ2dlZCA9IGFyZ3NbMF0KKyAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnT0snLCAnTE9HSU4gY29tcGxldGVkJykKIAotY2xhc3MgQmFzZVRocmVhZGVkTmV0d29ya2VkVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCitjbGFzcyBUaHJlYWRlZE5ldHdvcmtlZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBzZXJ2ZXJfY2xhc3MgPSBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyCisgICAgaW1hcF9jbGFzcyA9IGltYXBsaWIuSU1BUDQKIAogICAgIGRlZiBtYWtlX3NlcnZlcihzZWxmLCBhZGRyLCBoZGxyKToKIApAQCAtMTc0LDcgKzE4Niw4IEBACiAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQogICAgICAgICAgICAgICAgIHJhaXNlCiAKLSAgICAgICAgaWYgdmVyYm9zZTogcHJpbnQoImNyZWF0aW5nIHNlcnZlciIpCisgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICBwcmludCgiY3JlYXRpbmcgc2VydmVyIikKICAgICAgICAgc2VydmVyID0gTXlTZXJ2ZXIoYWRkciwgaGRscikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuc2VydmVyX2FkZHJlc3MsIHNlcnZlci5zb2NrZXQuZ2V0c29ja25hbWUoKSkKIApAQCAtMTkwLDE4ICsyMDMsMjEgQEAKICAgICAgICAgICAgICMgU2hvcnQgcG9sbCBpbnRlcnZhbCB0byBtYWtlIHRoZSB0ZXN0IGZpbmlzaCBxdWlja2x5LgogICAgICAgICAgICAgIyBUaW1lIGJldHdlZW4gcmVxdWVzdHMgaXMgc2hvcnQgZW5vdWdoIHRoYXQgd2Ugd29uJ3Qgd2FrZQogICAgICAgICAgICAgIyB1cCBzcHVyaW91c2x5IHRvbyBtYW55IHRpbWVzLgotICAgICAgICAgICAga3dhcmdzPXsncG9sbF9pbnRlcnZhbCc6MC4wMX0pCisgICAgICAgICAgICBrd2FyZ3M9eydwb2xsX2ludGVydmFsJzogMC4wMX0pCiAgICAgICAgIHQuZGFlbW9uID0gVHJ1ZSAgIyBJbiBjYXNlIHRoaXMgZnVuY3Rpb24gcmFpc2VzLgogICAgICAgICB0LnN0YXJ0KCkKLSAgICAgICAgaWYgdmVyYm9zZTogcHJpbnQoInNlcnZlciBydW5uaW5nIikKKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIHByaW50KCJzZXJ2ZXIgcnVubmluZyIpCiAgICAgICAgIHJldHVybiBzZXJ2ZXIsIHQKIAogICAgIGRlZiByZWFwX3NlcnZlcihzZWxmLCBzZXJ2ZXIsIHRocmVhZCk6Ci0gICAgICAgIGlmIHZlcmJvc2U6IHByaW50KCJ3YWl0aW5nIGZvciBzZXJ2ZXIiKQorICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoIndhaXRpbmcgZm9yIHNlcnZlciIpCiAgICAgICAgIHNlcnZlci5zaHV0ZG93bigpCiAgICAgICAgIHNlcnZlci5zZXJ2ZXJfY2xvc2UoKQogICAgICAgICB0aHJlYWQuam9pbigpCi0gICAgICAgIGlmIHZlcmJvc2U6IHByaW50KCJkb25lIikKKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIHByaW50KCJkb25lIikKIAogICAgIEBjb250ZXh0bWFuYWdlcgogICAgIGRlZiByZWFwZWRfc2VydmVyKHNlbGYsIGhkbHIpOgpAQCAtMjUxLDYgKzI2Nyw4NCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoaW1hcGxpYi5JTUFQNC5hYm9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW1hcF9jbGFzcywgKnNlcnZlci5zZXJ2ZXJfYWRkcmVzcykKIAorICAgIGNsYXNzIFVURjhTZXJ2ZXIoU2ltcGxlSU1BUEhhbmRsZXIpOgorICAgICAgICBjYXBhYmlsaXRpZXMgPSAnQVVUSCBFTkFCTEUgVVRGOD1BQ0NFUFQnCisKKyAgICAgICAgZGVmIGNtZF9FTkFCTEUoc2VsZiwgdGFnLCBhcmdzKToKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ09LJywgJ0VOQUJMRSBzdWNjZXNzZnVsJykKKworICAgICAgICBkZWYgY21kX0FVVEhFTlRJQ0FURShzZWxmLCB0YWcsIGFyZ3MpOgorICAgICAgICAgICAgc2VsZi5fc2VuZF90ZXh0bGluZSgnKycpCisgICAgICAgICAgICBzZWxmLnNlcnZlci5yZXNwb25zZSA9IHlpZWxkCisgICAgICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdPSycsICdGQUtFQVVUSCBzdWNjZXNzZnVsJykKKworICAgIEByZWFwX3RocmVhZHMKKyAgICBkZWYgdGVzdF9lbmFibGVfcmFpc2VzX2Vycm9yX2lmX25vdF9BVVRIKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYucmVhcGVkX3BhaXIoc2VsZi5VVEY4U2VydmVyKSBhcyAoc2VydmVyLCBjbGllbnQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbGllbnQudXRmOF9lbmFibGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoaW1hcGxpYi5JTUFQNC5lcnJvciwgY2xpZW50LmVuYWJsZSwgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudC51dGY4X2VuYWJsZWQpCisKKyAgICAjIFhYWCBBbHNvIG5lZWQgYSB0ZXN0IHRoYXQgZW5hYmxlIGFmdGVyIFNFTEVDVCByYWlzZXMgYW4gZXJyb3IuCisKKyAgICBAcmVhcF90aHJlYWRzCisgICAgZGVmIHRlc3RfZW5hYmxlX3JhaXNlc19lcnJvcl9pZl9ub19jYXBhYmlsaXR5KHNlbGYpOgorICAgICAgICBjbGFzcyBOb0VuYWJsZVNlcnZlcihzZWxmLlVURjhTZXJ2ZXIpOgorICAgICAgICAgICAgY2FwYWJpbGl0aWVzID0gJ0FVVEgnCisgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfcGFpcihOb0VuYWJsZVNlcnZlcikgYXMgKHNlcnZlciwgY2xpZW50KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGltYXBsaWIuSU1BUDQuZXJyb3IsIGNsaWVudC5lbmFibGUsICdmb28nKQorCisgICAgQHJlYXBfdGhyZWFkcworICAgIGRlZiB0ZXN0X2VuYWJsZV9VVEY4X3JhaXNlc19lcnJvcl9pZl9ub3Rfc3VwcG9ydGVkKHNlbGYpOgorICAgICAgICBjbGFzcyBOb25VVEY4U2VydmVyKFNpbXBsZUlNQVBIYW5kbGVyKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhpbWFwbGliLklNQVA0LmVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfcGFpcihOb25VVEY4U2VydmVyKSBhcyAoc2VydmVyLCBjbGllbnQpOgorICAgICAgICAgICAgICAgIHR5cCwgZGF0YSA9IGNsaWVudC5sb2dpbigndXNlcicsICdwYXNzJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cCwgJ09LJykKKyAgICAgICAgICAgICAgICBjbGllbnQuZW5hYmxlKCdVVEY4PUFDQ0VQVCcpCisgICAgICAgICAgICAgICAgcGFzcworCisgICAgQHJlYXBfdGhyZWFkcworICAgIGRlZiB0ZXN0X2VuYWJsZV9VVEY4X1RydWVfYXBwZW5kKHNlbGYpOgorCisgICAgICAgIGNsYXNzIFVURjhBcHBlbmRTZXJ2ZXIoc2VsZi5VVEY4U2VydmVyKToKKyAgICAgICAgICAgIGRlZiBjbWRfQVBQRU5EKHNlbGYsIHRhZywgYXJncyk6CisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90ZXh0bGluZSgnKycpCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIucmVzcG9uc2UgPSB5aWVsZAorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ09LJywgJ29rYXknKQorCisgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfcGFpcihVVEY4QXBwZW5kU2VydmVyKSBhcyAoc2VydmVyLCBjbGllbnQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX2VuY29kaW5nLCAnYXNjaWknKQorICAgICAgICAgICAgY29kZSwgXyA9IGNsaWVudC5hdXRoZW50aWNhdGUoJ01ZQVVUSCcsIGxhbWJkYSB4OiBiJ2Zha2UnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLCAnT0snKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIucmVzcG9uc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInWm1GclpRPT1cclxuJykgICMgYjY0IGVuY29kZWQgJ2Zha2UnCisgICAgICAgICAgICBjb2RlLCBfID0gY2xpZW50LmVuYWJsZSgnVVRGOD1BQ0NFUFQnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLCAnT0snKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX2VuY29kaW5nLCAndXRmLTgnKQorICAgICAgICAgICAgbXNnX3N0cmluZyA9ICdTdWJqZWN0OiDDvMOxw63CqcO2w7DDqScKKyAgICAgICAgICAgIHR5cCwgZGF0YSA9IGNsaWVudC5hcHBlbmQoCisgICAgICAgICAgICAgICAgTm9uZSwgTm9uZSwgTm9uZSwgbXNnX3N0cmluZy5lbmNvZGUoJ3V0Zi04JykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cCwgJ09LJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VydmVyLnJlc3BvbnNlLAorICAgICAgICAgICAgICAgICgnVVRGOCAoJXMpXHJcbicgJSBtc2dfc3RyaW5nKS5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgICkKKworICAgICMgWFhYIGFsc28gbmVlZCBhIHRlc3QgdGhhdCBtYWtlcyBzdXJlIHRoYXQgdGhlIExpdGVyYWwgYW5kIFVudGFnZ2VkX3N0YXR1cworICAgICMgcmVnZXhlcyB1c2VzIHVuaWNvZGUgaW4gVVRGOCBtb2RlIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgQVNDSUkuCisKKyAgICBAcmVhcF90aHJlYWRzCisgICAgZGVmIHRlc3Rfc2VhcmNoX2Rpc2FsbG93c19jaGFyc2V0X2luX3V0ZjhfbW9kZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLnJlYXBlZF9wYWlyKHNlbGYuVVRGOFNlcnZlcikgYXMgKHNlcnZlciwgY2xpZW50KToKKyAgICAgICAgICAgIHR5cCwgXyA9IGNsaWVudC5hdXRoZW50aWNhdGUoJ01ZQVVUSCcsIGxhbWJkYSB4OiBiJ2Zha2UnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXAsICdPSycpCisgICAgICAgICAgICB0eXAsIF8gPSBjbGllbnQuZW5hYmxlKCdVVEY4PUFDQ0VQVCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cCwgJ09LJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbGllbnQudXRmOF9lbmFibGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoaW1hcGxpYi5JTUFQNC5lcnJvciwgY2xpZW50LnNlYXJjaCwgJ2ZvbycsICdiYXInKQorCiAgICAgQHJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0X2JhZF9hdXRoX25hbWUoc2VsZik6CiAKQEAgLTI1OCw3ICszNTIsNyBAQAogCiAgICAgICAgICAgICBkZWYgY21kX0FVVEhFTlRJQ0FURShzZWxmLCB0YWcsIGFyZ3MpOgogICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ05PJywgJ3VucmVjb2duaXplZCBhdXRoZW50aWNhdGlvbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAndHlwZSB7fScuZm9ybWF0KGFyZ3NbMF0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlIHt9Jy5mb3JtYXQoYXJnc1swXSkpCiAKICAgICAgICAgd2l0aCBzZWxmLnJlYXBlZF9wYWlyKE15U2VydmVyKSBhcyAoc2VydmVyLCBjbGllbnQpOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhpbWFwbGliLklNQVA0LmVycm9yKToKQEAgLTI5MiwxMyArMzg2LDEzIEBACiAgICAgICAgICAgICBjb2RlLCBkYXRhID0gY2xpZW50LmF1dGhlbnRpY2F0ZSgnTVlBVVRIJywgbGFtYmRhIHg6IGInZmFrZScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUsICdPSycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5yZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidabUZyWlE9PVxyXG4nKSAjYjY0IGVuY29kZWQgJ2Zha2UnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInWm1GclpRPT1cclxuJykgICMgYjY0IGVuY29kZWQgJ2Zha2UnCiAKICAgICAgICAgd2l0aCBzZWxmLnJlYXBlZF9wYWlyKE15U2VydmVyKSBhcyAoc2VydmVyLCBjbGllbnQpOgogICAgICAgICAgICAgY29kZSwgZGF0YSA9IGNsaWVudC5hdXRoZW50aWNhdGUoJ01ZQVVUSCcsIGxhbWJkYSB4OiAnZmFrZScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUsICdPSycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5yZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidabUZyWlE9PVxyXG4nKSAjYjY0IGVuY29kZWQgJ2Zha2UnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInWm1GclpRPT1cclxuJykgICMgYjY0IGVuY29kZWQgJ2Zha2UnCiAKICAgICBAcmVhcF90aHJlYWRzCiAgICAgZGVmIHRlc3RfbG9naW5fY3JhbV9tZDUoc2VsZik6CkBAIC0zMDksOSArNDAzLDEwIEBACiAKICAgICAgICAgICAgIGRlZiBjbWRfQVVUSEVOVElDQVRFKHNlbGYsIHRhZywgYXJncyk6CiAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90ZXh0bGluZSgnKyBQREU0T1RZdU5qazNNVGN3T1RVeVFIQnZjM1J2Wm1acFkyVXVjbScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWemRHOXVMbTFqYVM1dVpYUT0nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Z6ZEc5dUxtMWphUzV1WlhRPScpCiAgICAgICAgICAgICAgICAgciA9IHlpZWxkCi0gICAgICAgICAgICAgICAgaWYgciA9PSAgYidkR2x0SUdZeFkyRTJZbVUwTmpSaU9XVm1ZVEZqWTJFMlptWmtObU5tTW1RNVpqTXlcclxuJzoKKyAgICAgICAgICAgICAgICBpZiAociA9PSBiJ2RHbHRJR1l4WTJFMlltVTBOalJpT1dWbVlUJworICAgICAgICAgICAgICAgICAgICAgICAgIGInRmpZMkUyWm1aa05tTm1NbVE1WmpNeVxyXG4nKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnT0snLCAnQ1JBTS1NRDUgc3VjY2Vzc2Z1bCcpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnTk8nLCAnTm8gYWNjZXNzJykKQEAgLTMyNyw3ICs0MjIsNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQsICJPSyIpCiAKIAotCiAgICAgQHJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0X2Fib3J0ZWRfYXV0aGVudGljYXRpb24oc2VsZik6CiAKQEAgLTM0NiwyNiArNDQwLDQ2IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGltYXBsaWIuSU1BUDQuZXJyb3IpOgogICAgICAgICAgICAgICAgIGNvZGUsIGRhdGEgPSBjbGllbnQuYXV0aGVudGljYXRlKCdNWUFVVEgnLCBsYW1iZGEgeDogTm9uZSkKIAorCiAgICAgZGVmIHRlc3RfbGluZXRvb2xvbmcoc2VsZik6CiAgICAgICAgIGNsYXNzIFRvb0xvbmdIYW5kbGVyKFNpbXBsZUlNQVBIYW5kbGVyKToKICAgICAgICAgICAgIGRlZiBoYW5kbGUoc2VsZik6CiAgICAgICAgICAgICAgICAgIyBTZW5kIGEgdmVyeSBsb25nIHJlc3BvbnNlIGxpbmUKLSAgICAgICAgICAgICAgICBzZWxmLndmaWxlLndyaXRlKGInKiBPSyAnICsgaW1hcGxpYi5fTUFYTElORSpiJ3gnICsgYidcclxuJykKKyAgICAgICAgICAgICAgICBzZWxmLndmaWxlLndyaXRlKGInKiBPSyAnICsgaW1hcGxpYi5fTUFYTElORSAqIGIneCcgKyBiJ1xyXG4nKQogCiAgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfc2VydmVyKFRvb0xvbmdIYW5kbGVyKSBhcyBzZXJ2ZXI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhpbWFwbGliLklNQVA0LmVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbWFwX2NsYXNzLCAqc2VydmVyLnNlcnZlcl9hZGRyZXNzKQogCisgICAgQHJlYXBfdGhyZWFkcworICAgIGRlZiB0ZXN0X3NpbXBsZV93aXRoX3N0YXRlbWVudChzZWxmKToKKyAgICAgICAgIyBzaW1wbGVzdCBjYWxsCisgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfc2VydmVyKFNpbXBsZUlNQVBIYW5kbGVyKSBhcyBzZXJ2ZXI6CisgICAgICAgICAgICB3aXRoIHNlbGYuaW1hcF9jbGFzcygqc2VydmVyLnNlcnZlcl9hZGRyZXNzKToKKyAgICAgICAgICAgICAgICBwYXNzCiAKLWNsYXNzIFRocmVhZGVkTmV0d29ya2VkVGVzdHMoQmFzZVRocmVhZGVkTmV0d29ya2VkVGVzdHMpOgorICAgIEByZWFwX3RocmVhZHMKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLnJlYXBlZF9zZXJ2ZXIoU2ltcGxlSU1BUEhhbmRsZXIpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgIHdpdGggc2VsZi5pbWFwX2NsYXNzKCpzZXJ2ZXIuc2VydmVyX2FkZHJlc3MpIGFzIGltYXA6CisgICAgICAgICAgICAgICAgaW1hcC5sb2dpbigndXNlcicsICdwYXNzJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5sb2dnZWQsICd1c2VyJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlcnZlci5sb2dnZWQpCiAKLSAgICBzZXJ2ZXJfY2xhc3MgPSBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyCi0gICAgaW1hcF9jbGFzcyA9IGltYXBsaWIuSU1BUDQKKyAgICBAcmVhcF90aHJlYWRzCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRfbG9nb3V0KHNlbGYpOgorICAgICAgICAjIHdoYXQgaGFwcGVucyBpZiBhbHJlYWR5IGxvZ291dCBpbiB0aGUgYmxvY2s/CisgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfc2VydmVyKFNpbXBsZUlNQVBIYW5kbGVyKSBhcyBzZXJ2ZXI6CisgICAgICAgICAgICB3aXRoIHNlbGYuaW1hcF9jbGFzcygqc2VydmVyLnNlcnZlcl9hZGRyZXNzKSBhcyBpbWFwOgorICAgICAgICAgICAgICAgIGltYXAubG9naW4oJ3VzZXInLCAncGFzcycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIubG9nZ2VkLCAndXNlcicpCisgICAgICAgICAgICAgICAgaW1hcC5sb2dvdXQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlcnZlci5sb2dnZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZXJ2ZXIubG9nZ2VkKQogCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHNzbCwgIlNTTCBub3QgYXZhaWxhYmxlIikKLWNsYXNzIFRocmVhZGVkTmV0d29ya2VkVGVzdHNTU0woQmFzZVRocmVhZGVkTmV0d29ya2VkVGVzdHMpOgotCitjbGFzcyBUaHJlYWRlZE5ldHdvcmtlZFRlc3RzU1NMKFRocmVhZGVkTmV0d29ya2VkVGVzdHMpOgogICAgIHNlcnZlcl9jbGFzcyA9IFNlY3VyZVRDUFNlcnZlcgogICAgIGltYXBfY2xhc3MgPSBJTUFQNF9TU0wKIApAQCAtMzc2LDggKzQ5MCw5IEBACiAgICAgICAgIHNzbF9jb250ZXh0LmNoZWNrX2hvc3RuYW1lID0gVHJ1ZQogICAgICAgICBzc2xfY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoQ0FGSUxFKQogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzc2wuQ2VydGlmaWNhdGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJob3N0bmFtZSAnMTI3LjAuMC4xJyBkb2Vzbid0IG1hdGNoICdsb2NhbGhvc3QnIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBzc2wuQ2VydGlmaWNhdGVFcnJvciwKKyAgICAgICAgICAgICAgICAiaG9zdG5hbWUgJzEyNy4wLjAuMScgZG9lc24ndCBtYXRjaCAnbG9jYWxob3N0JyIpOgogICAgICAgICAgICAgd2l0aCBzZWxmLnJlYXBlZF9zZXJ2ZXIoU2ltcGxlSU1BUEhhbmRsZXIpIGFzIHNlcnZlcjoKICAgICAgICAgICAgICAgICBjbGllbnQgPSBzZWxmLmltYXBfY2xhc3MoKnNlcnZlci5zZXJ2ZXJfYWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX2NvbnRleHQ9c3NsX2NvbnRleHQpCkBAIC0zODksNiArNTA0LDggQEAKICAgICAgICAgICAgIGNsaWVudC5zaHV0ZG93bigpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoCisgICAgc3VwcG9ydC5pc19yZXNvdXJjZV9lbmFibGVkKCduZXR3b3JrJyksICduZXR3b3JrIHJlc291cmNlIGRpc2FibGVkJykKIGNsYXNzIFJlbW90ZUlNQVBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBob3N0ID0gJ2N5cnVzLmFuZHJldy5jbXUuZWR1JwogICAgIHBvcnQgPSAxNDMKQEAgLTQyMiw2ICs1MzksOCBAQAogCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHNzbCwgIlNTTCBub3QgYXZhaWxhYmxlIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKAorICAgIHN1cHBvcnQuaXNfcmVzb3VyY2VfZW5hYmxlZCgnbmV0d29yaycpLCAnbmV0d29yayByZXNvdXJjZSBkaXNhYmxlZCcpCiBjbGFzcyBSZW1vdGVJTUFQX1NUQVJUVExTVGVzdChSZW1vdGVJTUFQVGVzdCk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC00NzUsNyArNTk0LDggQEAKIAogICAgIGRlZiB0ZXN0X2xvZ2luY2FwYV93aXRoX2NsaWVudF9zc2xfY29udGV4dChzZWxmKToKICAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKLSAgICAgICAgICAgIF9zZXJ2ZXIgPSBzZWxmLmltYXBfY2xhc3Moc2VsZi5ob3N0LCBzZWxmLnBvcnQsIHNzbF9jb250ZXh0PXNlbGYuY3JlYXRlX3NzbF9jb250ZXh0KCkpCisgICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKAorICAgICAgICAgICAgICAgIHNlbGYuaG9zdCwgc2VsZi5wb3J0LCBzc2xfY29udGV4dD1zZWxmLmNyZWF0ZV9zc2xfY29udGV4dCgpKQogICAgICAgICAgICAgc2VsZi5jaGVja19sb2dpbmNhcGEoX3NlcnZlcikKIAogICAgIGRlZiB0ZXN0X2xvZ291dChzZWxmKToKQEAgLTQ4NiwzNSArNjA2LDE1IEBACiAKICAgICBkZWYgdGVzdF9zc2xfY29udGV4dF9jZXJ0ZmlsZV9leGNsdXNpdmUoc2VsZik6CiAgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmltYXBfY2xhc3MsIHNlbGYuaG9zdCwgc2VsZi5wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsIHNzbF9jb250ZXh0PXNlbGYuY3JlYXRlX3NzbF9jb250ZXh0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICBWYWx1ZUVycm9yLCBzZWxmLmltYXBfY2xhc3MsIHNlbGYuaG9zdCwgc2VsZi5wb3J0LAorICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLCBzc2xfY29udGV4dD1zZWxmLmNyZWF0ZV9zc2xfY29udGV4dCgpKQogCiAgICAgZGVmIHRlc3Rfc3NsX2NvbnRleHRfa2V5ZmlsZV9leGNsdXNpdmUoc2VsZik6CiAgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmltYXBfY2xhc3MsIHNlbGYuaG9zdCwgc2VsZi5wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ZmlsZT1DRVJURklMRSwgc3NsX2NvbnRleHQ9c2VsZi5jcmVhdGVfc3NsX2NvbnRleHQoKSkKLQotCi1kZWYgbG9hZF90ZXN0cygqYXJncyk6Ci0gICAgdGVzdHMgPSBbVGVzdEltYXBsaWJdCi0KLSAgICBpZiBzdXBwb3J0LmlzX3Jlc291cmNlX2VuYWJsZWQoJ25ldHdvcmsnKToKLSAgICAgICAgaWYgc3NsOgotICAgICAgICAgICAgZ2xvYmFsIENFUlRGSUxFLCBDQUZJTEUKLSAgICAgICAgICAgIENFUlRGSUxFID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3Igb3MuY3VyZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleWNlcnQzLnBlbSIpCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoQ0VSVEZJTEUpOgotICAgICAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZCgiQ2FuJ3QgcmVhZCBjZXJ0aWZpY2F0ZSBmaWxlcyEiKQotICAgICAgICAgICAgQ0FGSUxFID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3Igb3MuY3VyZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5Y2FjZXJ0LnBlbSIpCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoQ0FGSUxFKToKLSAgICAgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQoIkNhbid0IHJlYWQgQ0EgZmlsZSEiKQotICAgICAgICB0ZXN0cy5leHRlbmQoWwotICAgICAgICAgICAgVGhyZWFkZWROZXR3b3JrZWRUZXN0cywgVGhyZWFkZWROZXR3b3JrZWRUZXN0c1NTTCwKLSAgICAgICAgICAgIFJlbW90ZUlNQVBUZXN0LCBSZW1vdGVJTUFQX1NTTFRlc3QsIFJlbW90ZUlNQVBfU1RBUlRUTFNUZXN0LAotICAgICAgICBdKQotCi0gICAgcmV0dXJuIHVuaXR0ZXN0LlRlc3RTdWl0ZShbdW5pdHRlc3QubWFrZVN1aXRlKHRlc3QpIGZvciB0ZXN0IGluIHRlc3RzXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgIFZhbHVlRXJyb3IsIHNlbGYuaW1hcF9jbGFzcywgc2VsZi5ob3N0LCBzZWxmLnBvcnQsCisgICAgICAgICAgICAgICAga2V5ZmlsZT1DRVJURklMRSwgc3NsX2NvbnRleHQ9c2VsZi5jcmVhdGVfc3NsX2NvbnRleHQoKSkKIAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbWdoZHIucHkgYi9MaWIvdGVzdC90ZXN0X2ltZ2hkci5weQppbmRleCAwYWQ0MzQzLi5iNTRkYWY4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltZ2hkci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltZ2hkci5weQpAQCAtMTYsNyArMTYsOSBAQAogICAgICgncHl0aG9uLnJhcycsICdyYXN0JyksCiAgICAgKCdweXRob24uc2dpJywgJ3JnYicpLAogICAgICgncHl0aG9uLnRpZmYnLCAndGlmZicpLAotICAgICgncHl0aG9uLnhibScsICd4Ym0nKQorICAgICgncHl0aG9uLnhibScsICd4Ym0nKSwKKyAgICAoJ3B5dGhvbi53ZWJwJywgJ3dlYnAnKSwKKyAgICAoJ3B5dGhvbi5leHInLCAnZXhyJyksCiApCiAKIGNsYXNzIFVuc2Vla2FibGVJTyhpby5GaWxlSU8pOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXAucHkgYi9MaWIvdGVzdC90ZXN0X2ltcC5weQppbmRleCA4MGI5ZWMzLi5lZTllZTFhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcC5weQpAQCAtMyw2ICszLDcgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBfdGhyZWFkID0gTm9uZQogaW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IGltcG9ydGxpYi51dGlsCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgc2h1dGlsCkBAIC0xMTEsNyArMTEyLDYgQEAKICAgICAgICAgICAgIGRlbCBzeXMucGF0aFswXQogICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsodGVtcF9tb2RfbmFtZSArICcucHknKQogICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsodGVtcF9tb2RfbmFtZSArICcucHljJykKLSAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHRlbXBfbW9kX25hbWUgKyAnLnB5bycpCiAKICAgICBkZWYgdGVzdF9pc3N1ZTU2MDQoc2VsZik6CiAgICAgICAgICMgVGVzdCBjYW5ub3QgY292ZXIgaW1wLmxvYWRfY29tcGlsZWQgZnVuY3Rpb24uCkBAIC0xOTQsNyArMTk0LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2FnZS5iLCAyKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCi0gICAgICAgICAgICBmb3IgZXh0IGluICgnLnB5JywgJy5weWMnLCAnLnB5bycpOgorICAgICAgICAgICAgZm9yIGV4dCBpbiAoJy5weScsICcucHljJyk6CiAgICAgICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsodGVtcF9tb2RfbmFtZSArIGV4dCkKICAgICAgICAgICAgICAgICBzdXBwb3J0LnVubGluayhpbml0X2ZpbGVfbmFtZSArIGV4dCkKICAgICAgICAgICAgIHN1cHBvcnQucm10cmVlKHRlc3RfcGFja2FnZV9uYW1lKQpAQCAtMjc2LDYgKzI3NiwyOSBAQAogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiZm91bmQgbW9kdWxlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgQyBleHRlbnNpb24iKQogICAgICAgICBpbXAubG9hZF9tb2R1bGUobmFtZSwgTm9uZSwgKmZvdW5kWzE6XSkKIAorICAgIEByZXF1aXJlc19sb2FkX2R5bmFtaWMKKyAgICBkZWYgdGVzdF9pc3N1ZTI0NzQ4X2xvYWRfbW9kdWxlX3NraXBzX3N5c19tb2R1bGVzX2NoZWNrKHNlbGYpOgorICAgICAgICBuYW1lID0gJ3Rlc3QuaW1wX2R1bW15JworICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbmFtZV0KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lKQorICAgICAgICAgICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLmZpbmRfc3BlYygnX3Rlc3RtdWx0aXBoYXNlJykKKyAgICAgICAgICAgIG1vZHVsZSA9IGltcC5sb2FkX2R5bmFtaWMobmFtZSwgc3BlYy5vcmlnaW4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fc3BlY19fLm5hbWUsIG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3NwZWNfXy5vcmlnaW4sIHNwZWMub3JpZ2luKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vZHVsZSwgJ2R1bW15X25hbWUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuaW50X2NvbnN0LCAxOTY5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzeXMubW9kdWxlc1tuYW1lXSwgbW9kdWxlKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tuYW1lXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKwogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUsCiAgICAgICAgICJ0ZXN0IG1lYW5pbmdmdWwgb25seSB3aGVuIHdyaXRpbmcgYnl0ZWNvZGUiKQogICAgIGRlZiB0ZXN0X2J1Zzc3MzIoc2VsZik6CkBAIC0zNDYsNTYgKzM2OSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgVHJ1ZSksIGV4cGVjdCkKIAotICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX25vX2NhY2hlX3RhZyhzZWxmKToKLSAgICAgICAgIyBOb24gY2FjaGUgdGFnIG1lYW5zIE5vdEltcGxlbWVudGVkRXJyb3IuCi0gICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAnY2FjaGVfdGFnJywgTm9uZSk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IpOgotICAgICAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnd2hhdGV2ZXIucHknKQotCi0gICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfbm9fZG90KHNlbGYpOgotICAgICAgICAjIERpcmVjdG9yeSB3aXRoIGEgZG90LCBmaWxlbmFtZSB3aXRob3V0IGRvdC4KLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vLmJhcicsICdmaWxlJykKLSAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28uYmFyJywgJ19fcHljYWNoZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxle30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBUcnVlKSwgZXhwZWN0KQotCi0gICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfb3B0aW1pemVkKHNlbGYpOgotICAgICAgICAjIEdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5IGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgUEVQIDMxNDcKLSAgICAgICAgIyBkZWZpbmVkIC5weW8gZmlsZSAoaS5lLiB1bmRlciBfX3B5Y2FjaGVfXykuCi0gICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ3F1eC5weScpCi0gICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAnX19weWNhY2hlX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1eC57fS5weW8nLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIEZhbHNlKSwgZXhwZWN0KQotCi0gICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2VfY3dkKHNlbGYpOgotICAgICAgICBwYXRoID0gJ2Zvby5weScKLSAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdfX3B5Y2FjaGVfXycsICdmb28ue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBUcnVlKSwgZXhwZWN0KQotCi0gICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfb3ZlcnJpZGUoc2VsZik6Ci0gICAgICAgICMgV2hlbiBkZWJ1Z19vdmVycmlkZSBpcyBub3QgTm9uZSwgaXQgY2FuIGJlIGFueSB0cnVlLWlzaCBvciBmYWxzZS1pc2gKLSAgICAgICAgIyB2YWx1ZS4KLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXoucHknKQotICAgICAgICBwYXJ0aWFsX2V4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdfX3B5Y2FjaGVfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXoue30ucHknLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFtdKSwgcGFydGlhbF9leHBlY3QgKyAnbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFsxN10pLAotICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxfZXhwZWN0ICsgJ2MnKQotICAgICAgICAjIEhvd2V2ZXIgaWYgdGhlIGJvb2wtaXNobmVzcyBjYW4ndCBiZSBkZXRlcm1pbmVkLCB0aGUgZXhjZXB0aW9uCi0gICAgICAgICMgcHJvcGFnYXRlcy4KLSAgICAgICAgY2xhc3MgQmVhcmlzaDoKLSAgICAgICAgICAgIGRlZiBfX2Jvb2xfXyhzZWxmKTogcmFpc2UgUnVudGltZUVycm9yCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnL2Zvby9iYXIvYmF6LnB5JywgQmVhcmlzaCgpKQotCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3Muc2VwID09ICdcXCcgYW5kIG9zLmFsdHNlcCA9PSAnLycsCi0gICAgICAgICAgICAgICAgICAgICAndGVzdCBtZWFuaW5nZnVsIG9ubHkgd2hlcmUgb3MuYWx0c2VwIGlzIGRlZmluZWQnKQotICAgIGRlZiB0ZXN0X3NlcF9hbHRzZXBfYW5kX3NlcF9jYWNoZV9mcm9tX3NvdXJjZShzZWxmKToKLSAgICAgICAgIyBXaW5kb3dzIHBhdGggYW5kIFBFUCAzMTQ3IHdoZXJlIHNlcCBpcyByaWdodCBvZiBhbHRzZXAuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJ1xcZm9vXFxiYXJcXGJhei9xdXgucHknLCBUcnVlKSwKLSAgICAgICAgICAgICdcXGZvb1xcYmFyXFxiYXpcXF9fcHljYWNoZV9fXFxxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQotCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBub3QgTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyB0byBub3QgYmUgJwogICAgICAgICAgICAgICAgICAgICAgICAgICdOb25lJykKQEAgLTQwNyw2OCArMzgwLDYgQEAKICAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5zb3VyY2VfZnJvbV9jYWNoZShwYXRoKSwgZXhwZWN0KQogCi0gICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfbm9fY2FjaGVfdGFnKHNlbGYpOgotICAgICAgICAjIElmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZSwgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvci4KLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignYmxhaCcsICdfX3B5Y2FjaGVfXycsICd3aGF0ZXZlci5weWMnKQotICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ2NhY2hlX3RhZycsIE5vbmUpOgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yKToKLSAgICAgICAgICAgICAgICBpbXAuc291cmNlX2Zyb21fY2FjaGUocGF0aCkKLQotICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX2JhZF9wYXRoKHNlbGYpOgotICAgICAgICAjIFdoZW4gdGhlIHBhdGggdG8gYSBweWMgZmlsZSBpcyBub3QgaW4gUEVQIDMxNDcgZm9ybWF0LCBhIFZhbHVlRXJyb3IKLSAgICAgICAgIyBpcyByYWlzZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgVmFsdWVFcnJvciwgaW1wLnNvdXJjZV9mcm9tX2NhY2hlLCAnL2Zvby9iYXIvYmF6cXV4LnB5YycpCi0KLSAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV9ub19zbGFzaChzZWxmKToKLSAgICAgICAgIyBObyBzbGFzaGVzIGF0IGFsbCBpbiBwYXRoIC0+IFZhbHVlRXJyb3IKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICBWYWx1ZUVycm9yLCBpbXAuc291cmNlX2Zyb21fY2FjaGUsICdmb28uY3B5dGhvbi0zMi5weWMnKQotCi0gICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfdG9vX2Zld19kb3RzKHNlbGYpOgotICAgICAgICAjIFRvbyBmZXcgZG90cyBpbiBmaW5hbCBwYXRoIGNvbXBvbmVudCAtPiBWYWx1ZUVycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgVmFsdWVFcnJvciwgaW1wLnNvdXJjZV9mcm9tX2NhY2hlLCAnX19weWNhY2hlX18vZm9vLnB5YycpCi0KLSAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV90b29fbWFueV9kb3RzKHNlbGYpOgotICAgICAgICAjIFRvbyBtYW55IGRvdHMgaW4gZmluYWwgcGF0aCBjb21wb25lbnQgLT4gVmFsdWVFcnJvcgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIFZhbHVlRXJyb3IsIGltcC5zb3VyY2VfZnJvbV9jYWNoZSwKLSAgICAgICAgICAgICdfX3B5Y2FjaGVfXy9mb28uY3B5dGhvbi0zMi5mb28ucHljJykKLQotICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX25vX19weWNhY2hlX18oc2VsZik6Ci0gICAgICAgICMgQW5vdGhlciBwcm9ibGVtIHdpdGggdGhlIHBhdGggLT4gVmFsdWVFcnJvcgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIFZhbHVlRXJyb3IsIGltcC5zb3VyY2VfZnJvbV9jYWNoZSwKLSAgICAgICAgICAgICcvZm9vL2Jhci9mb28uY3B5dGhvbi0zMi5mb28ucHljJykKLQotICAgIGRlZiB0ZXN0X3BhY2thZ2VfX19maWxlX18oc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3JykKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJwZXAzMTQ3IG1vZHVsZSBhbHJlYWR5IGV4aXN0czogJXIiICUgKG0sKSkKLSAgICAgICAgIyBUZXN0IHRoYXQgYSBwYWNrYWdlJ3MgX19maWxlX18gcG9pbnRzIHRvIHRoZSByaWdodCBzb3VyY2UgZGlyZWN0b3J5LgotICAgICAgICBvcy5ta2RpcigncGVwMzE0NycpCi0gICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCi0gICAgICAgIGRlZiBjbGVhbnVwKCk6Ci0gICAgICAgICAgICBpZiBzeXMucGF0aFswXSA9PSBvcy5jdXJkaXI6Ci0gICAgICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCi0gICAgICAgICAgICBzaHV0aWwucm10cmVlKCdwZXAzMTQ3JykKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNsZWFudXApCi0gICAgICAgICMgVG91Y2ggdGhlIF9faW5pdF9fLnB5IGZpbGUuCi0gICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoJ3BlcDMxNDcvX19pbml0X18ucHknKQotICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQotICAgICAgICBleHBlY3RlZF9fX2ZpbGVfXyA9IG9zLnNlcC5qb2luKCgnLicsICdwZXAzMTQ3JywgJ19faW5pdF9fLnB5JykpCi0gICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9fZmlsZV9fLCBleHBlY3RlZF9fX2ZpbGVfXywgKG0uX19maWxlX18sIG0uX19wYXRoX18sIHN5cy5wYXRoLCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSkpCi0gICAgICAgICMgRW5zdXJlIHdlIGxvYWQgdGhlIHB5YyBmaWxlLgotICAgICAgICBzdXBwb3J0LnVubG9hZCgncGVwMzE0NycpCi0gICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3JykKLSAgICAgICAgc3VwcG9ydC51bmxvYWQoJ3BlcDMxNDcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19maWxlX18sIGV4cGVjdGVkX19fZmlsZV9fLCAobS5fX2ZpbGVfXywgbS5fX3BhdGhfXywgc3lzLnBhdGgsIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKSkKLQogCiBjbGFzcyBOdWxsSW1wb3J0ZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgQHVuaXR0ZXN0LnNraXBJZihzdXBwb3J0LlRFU1RGTl9VTkVOQ09EQUJMRSBpcyBOb25lLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X2ltcG9ydC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkKaW5kZXggYjQ4NDJjNS4uMTRhNjg4ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkKQEAgLTEsNyArMSw3IEBACiAjIFdlIGltcG9ydCBpbXBvcnRsaWIgKkFTQVAqIGluIG9yZGVyIHRvIHRlc3QgIzE1Mzg2CiBpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKLWZyb20gaW1wb3J0bGliLl9ib290c3RyYXAgaW1wb3J0IF9nZXRfc291cmNlZmlsZQorZnJvbSBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgX2dldF9zb3VyY2VmaWxlCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBtYXJzaGFsCiBpbXBvcnQgb3MKQEAgLTIxLDggKzIxLDkgQEAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoCiAgICAgRW52aXJvbm1lbnRWYXJHdWFyZCwgVEVTVEZOLCBjaGVja193YXJuaW5ncywgZm9yZ2V0LCBpc19qeXRob24sCiAgICAgbWFrZV9sZWdhY3lfcHljLCBybXRyZWUsIHJ1bl91bml0dGVzdCwgc3dhcF9hdHRyLCBzd2FwX2l0ZW0sIHRlbXBfdW1hc2ssCi0gICAgdW5saW5rLCB1bmxvYWQsIGNyZWF0ZV9lbXB0eV9maWxlLCBjcHl0aG9uX29ubHksIFRFU1RGTl9VTkVOQ09EQUJMRSkKLWZyb20gdGVzdCBpbXBvcnQgc2NyaXB0X2hlbHBlcgorICAgIHVubGluaywgdW5sb2FkLCBjcmVhdGVfZW1wdHlfZmlsZSwgY3B5dGhvbl9vbmx5LCBURVNURk5fVU5FTkNPREFCTEUsCisgICAgdGVtcF9kaXIpCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgogCiAKIHNraXBfaWZfZG9udF93cml0ZV9ieXRlY29kZSA9IHVuaXR0ZXN0LnNraXBJZigKQEAgLTMyLDcgKzMzLDYgQEAKIGRlZiByZW1vdmVfZmlsZXMobmFtZSk6CiAgICAgZm9yIGYgaW4gKG5hbWUgKyAiLnB5IiwKICAgICAgICAgICAgICAgbmFtZSArICIucHljIiwKLSAgICAgICAgICAgICAgbmFtZSArICIucHlvIiwKICAgICAgICAgICAgICAgbmFtZSArICIucHl3IiwKICAgICAgICAgICAgICAgbmFtZSArICIkcHkuY2xhc3MiKToKICAgICAgICAgdW5saW5rKGYpCkBAIC00Niw3ICs0Niw3IEBACiAgICAgIyB0ZW1wb3JhcmlseSBjbGVhcnMgdGhlIG1vZHVsZSBmcm9tIHN5cy5tb2R1bGVzIChpZiBhbnkpCiAgICAgIyByZXZlcnRzIG9yIHJlbW92ZXMgdGhlIG1vZHVsZSB3aGVuIGNsZWFuaW5nIHVwCiAgICAgbmFtZSA9IG5hbWUgb3IgInNwYW0iCi0gICAgd2l0aCBzY3JpcHRfaGVscGVyLnRlbXBfZGlyKCkgYXMgdGVtcGRpcjoKKyAgICB3aXRoIHRlbXBfZGlyKCkgYXMgdGVtcGRpcjoKICAgICAgICAgcGF0aCA9IHNjcmlwdF9oZWxwZXIubWFrZV9zY3JpcHQodGVtcGRpciwgbmFtZSwgc291cmNlKQogICAgICAgICBvbGRfbW9kdWxlID0gc3lzLm1vZHVsZXMucG9wKG5hbWUsIE5vbmUpCiAgICAgICAgIHRyeToKQEAgLTg0LDcgKzg0LDYgQEAKICAgICAgICAgZGVmIHRlc3Rfd2l0aF9leHRlbnNpb24oZXh0KToKICAgICAgICAgICAgICMgVGhlIGV4dGVuc2lvbiBpcyBub3JtYWxseSAiLnB5IiwgcGVyaGFwcyAiLnB5dyIuCiAgICAgICAgICAgICBzb3VyY2UgPSBURVNURk4gKyBleHQKLSAgICAgICAgICAgIHB5byA9IFRFU1RGTiArICIucHlvIgogICAgICAgICAgICAgaWYgaXNfanl0aG9uOgogICAgICAgICAgICAgICAgIHB5YyA9IFRFU1RGTiArICIkcHkuY2xhc3MiCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTE1LDcgKzExNCw2IEBACiAgICAgICAgICAgICAgICAgZm9yZ2V0KFRFU1RGTikKICAgICAgICAgICAgICAgICB1bmxpbmsoc291cmNlKQogICAgICAgICAgICAgICAgIHVubGluayhweWMpCi0gICAgICAgICAgICAgICAgdW5saW5rKHB5bykKIAogICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQogICAgICAgICB0cnk6CkBAIC0xMzgsNyArMTM2LDcgQEAKICAgICAgICAgICAgIGYud3JpdGUoJ10nKQogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgICMgQ29tcGlsZSAmIHJlbW92ZSAucHkgZmlsZTsgd2Ugb25seSBuZWVkIC5weWMgKG9yIC5weW8pLgorICAgICAgICAgICAgIyBDb21waWxlICYgcmVtb3ZlIC5weSBmaWxlOyB3ZSBvbmx5IG5lZWQgLnB5Yy4KICAgICAgICAgICAgICMgQnl0ZWNvZGUgbXVzdCBiZSByZWxvY2F0ZWQgZnJvbSB0aGUgUEVQIDMxNDcgYnl0ZWNvZGUtb25seSBsb2NhdGlvbi4KICAgICAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShmaWxlbmFtZSkKICAgICAgICAgZmluYWxseToKQEAgLTI1Miw3ICsyNTAsNyBAQAogICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIG1vZCA9IF9faW1wb3J0X18oVEVTVEZOKQogICAgICAgICAgICAgYmFzZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChtb2QuX19maWxlX18pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKGV4dCwgKCcucHljJywgJy5weW8nKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0LCAnLnB5YycpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBkZWwgc3lzLnBhdGhbMF0KICAgICAgICAgICAgIHJlbW92ZV9maWxlcyhURVNURk4pCkBAIC0yOTQsNyArMjkyLDggQEAKICAgICAgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCBzZXQgbW9kaWZpY2F0aW9uIHRpbWUgdG8gbGFyZ2UgaW50ZWdlciIpCiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZ2V0YXR0cihlcnJubywgJ0VPVkVSRkxPVycsIE5vbmUpOgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gbm90IGluIChnZXRhdHRyKGVycm5vLCAnRU9WRVJGTE9XJywgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoZXJybm8sICdFSU5WQUwnLCBOb25lKSk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY2Fubm90IHNldCBtb2RpZmljYXRpb24gdGltZSB0byBsYXJnZSBpbnRlZ2VyICh7fSkiLmZvcm1hdChlKSkKICAgICAgICAgICAgIF9faW1wb3J0X18oVEVTVEZOKQpAQCAtMzI1LDEwICszMjQsMjMgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEltcG9ydEVycm9yLCAiXmNhbm5vdCBpbXBvcnQgbmFtZSAnYm9ndXMnIik6CiAgICAgICAgICAgICBmcm9tIHJlIGltcG9ydCBib2d1cwogCisgICAgZGVmIHRlc3RfZnJvbV9pbXBvcnRfQXR0cmlidXRlRXJyb3Ioc2VsZik6CisgICAgICAgICMgSXNzdWUgIzI0NDkyOiB0cnlpbmcgdG8gaW1wb3J0IGFuIGF0dHJpYnV0ZSB0aGF0IHJhaXNlcyBhbgorICAgICAgICAjIEF0dHJpYnV0ZUVycm9yIHNob3VsZCBsZWFkIHRvIGFuIEltcG9ydEVycm9yLgorICAgICAgICBjbGFzcyBBbHdheXNBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBfKToKKyAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcgorCisgICAgICAgIG1vZHVsZV9uYW1lID0gJ3Rlc3RfZnJvbV9pbXBvcnRfQXR0cmlidXRlRXJyb3InCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh1bmxvYWQsIG1vZHVsZV9uYW1lKQorICAgICAgICBzeXMubW9kdWxlc1ttb2R1bGVfbmFtZV0gPSBBbHdheXNBdHRyaWJ1dGVFcnJvcigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgZnJvbSB0ZXN0X2Zyb21faW1wb3J0X0F0dHJpYnV0ZUVycm9yIGltcG9ydCBkb2VzX25vdF9leGlzdAorCiAKIEBza2lwX2lmX2RvbnRfd3JpdGVfYnl0ZWNvZGUKIGNsYXNzIEZpbGVQZXJtaXNzaW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgICMgdGVzdHMgZm9yIGZpbGUgbW9kZSBvbiBjYWNoZWQgLnB5Yy8ucHlvIGZpbGVzCisgICAgIyB0ZXN0cyBmb3IgZmlsZSBtb2RlIG9uIGNhY2hlZCAucHljIGZpbGVzCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICdwb3NpeCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgbWVhbmluZ2Z1bCBvbmx5IG9uIHBvc2l4IHN5c3RlbXMiKQpAQCAtMzM5LDcgKzM1MSw3IEBACiAgICAgICAgICAgICBtb2R1bGUgPSBfX2ltcG9ydF9fKG5hbWUpCiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY2FjaGVkX3BhdGgpOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiX19pbXBvcnRfXyBkaWQgbm90IHJlc3VsdCBpbiBjcmVhdGlvbiBvZiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgYSAucHljIG9yIC5weW8gZmlsZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICJhIC5weWMgZmlsZSIpCiAgICAgICAgICAgICBzdGF0X2luZm8gPSBvcy5zdGF0KGNhY2hlZF9wYXRoKQogCiAgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgdW1hc2sgaXMgcmVzcGVjdGVkLCBhbmQgdGhlIGV4ZWN1dGFibGUgYml0cwpAQCAtMzU4LDcgKzM3MCw3IEBACiAgICAgICAgICAgICBfX2ltcG9ydF9fKG5hbWUpCiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY2FjaGVkX3BhdGgpOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiX19pbXBvcnRfXyBkaWQgbm90IHJlc3VsdCBpbiBjcmVhdGlvbiBvZiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgYSAucHljIG9yIC5weW8gZmlsZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICJhIC5weWMgZmlsZSIpCiAgICAgICAgICAgICBzdGF0X2luZm8gPSBvcy5zdGF0KGNhY2hlZF9wYXRoKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2N0KHN0YXQuU19JTU9ERShzdGF0X2luZm8uc3RfbW9kZSkpLCBvY3QobW9kZSkpCkBAIC0zNzMsNyArMzg1LDcgQEAKICAgICAgICAgICAgIF9faW1wb3J0X18obmFtZSkKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjYWNoZWRfcGF0aCk6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJfX2ltcG9ydF9fIGRpZCBub3QgcmVzdWx0IGluIGNyZWF0aW9uIG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImVpdGhlciBhIC5weWMgb3IgLnB5byBmaWxlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImEgLnB5YyBmaWxlIikKICAgICAgICAgICAgIHN0YXRfaW5mbyA9IG9zLnN0YXQoY2FjaGVkX3BhdGgpCiAKICAgICAgICAgZXhwZWN0ZWQgPSBtb2RlIHwgMG8yMDAgIyBBY2NvdW50IGZvciBmaXggZm9yIGlzc3VlICM2MDc0CkBAIC00MDQsMTAgKzQxNiw3IEBACiAgICAgICAgICAgICB1bmxpbmsocGF0aCkKICAgICAgICAgICAgIHVubG9hZChuYW1lKQogICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBieXRlY29kZV9vbmx5ID0gcGF0aCArICJjIgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBieXRlY29kZV9vbmx5ID0gcGF0aCArICJvIgorICAgICAgICAgICAgYnl0ZWNvZGVfb25seSA9IHBhdGggKyAiYyIKICAgICAgICAgICAgIG9zLnJlbmFtZShpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoKSwgYnl0ZWNvZGVfb25seSkKICAgICAgICAgICAgIG0gPSBfX2ltcG9ydF9fKG5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ueCwgJ3Jld3JpdHRlbicpCkBAIC01NjgsNyArNTc3LDcgQEAKIAogICAgIGRlZiB0ZXN0X3JlbGltcG9ydF9zdGFyKHNlbGYpOgogICAgICAgICAjIFRoaXMgd2lsbCBpbXBvcnQgKiBmcm9tIC50ZXN0X2ltcG9ydC4KLSAgICAgICAgZnJvbSAuIGltcG9ydCByZWxpbXBvcnQKKyAgICAgICAgZnJvbSAuLiBpbXBvcnQgcmVsaW1wb3J0CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHJlbGltcG9ydCwgIlJlbGF0aXZlSW1wb3J0VGVzdHMiKSkKIAogICAgIGRlZiB0ZXN0X2lzc3VlMzIyMShzZWxmKToKQEAgLTYzMSw5ICs2NDAsNyBAQAogCiAKIGNsYXNzIFB5Y2FjaGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIyBUZXN0IHRoZSB2YXJpb3VzIFBFUCAzMTQ3IHJlbGF0ZWQgYmVoYXZpb3JzLgotCi0gICAgdGFnID0gc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZworICAgICMgVGVzdCB0aGUgdmFyaW91cyBQRVAgMzE0Ny80ODgtcmVsYXRlZCBiZWhhdmlvcnMuCiAKICAgICBkZWYgX2NsZWFuKHNlbGYpOgogICAgICAgICBmb3JnZXQoVEVTVEZOKQpAQCAtNjU4LDkgKzY2NSwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKCdfX3B5Y2FjaGVfXycpKQogICAgICAgICBfX2ltcG9ydF9fKFRFU1RGTikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKCdfX3B5Y2FjaGVfXycpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKAotICAgICAgICAgICAgJ19fcHljYWNoZV9fJywgJ3t9Lnt9LnB5e30nLmZvcm1hdCgKLSAgICAgICAgICAgIFRFU1RGTiwgc2VsZi50YWcsICdjJyBpZiBfX2RlYnVnX18gZWxzZSAnbycpKSkpCisgICAgICAgIHB5Y19wYXRoID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5zb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhweWNfcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAnYnl0ZWNvZGUgZmlsZSB7IXJ9IGZvciB7IXJ9IGRvZXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdleGlzdCcuZm9ybWF0KHB5Y19wYXRoLCBURVNURk4pKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAncG9zaXgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IG1lYW5pbmdmdWwgb25seSBvbiBwb3NpeCBzeXN0ZW1zIikKQEAgLTY3Myw4ICs2ODEsMTAgQEAKICAgICAgICAgd2l0aCB0ZW1wX3VtYXNrKDBvMjIyKToKICAgICAgICAgICAgIF9faW1wb3J0X18oVEVTVEZOKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoJ19fcHljYWNoZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKAotICAgICAgICAgICAgJ19fcHljYWNoZV9fJywgJ3t9Lnt9LnB5YycuZm9ybWF0KFRFU1RGTiwgc2VsZi50YWcpKSkpCisgICAgICAgIHB5Y19wYXRoID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5zb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMocHljX3BhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2J5dGVjb2RlIGZpbGUgeyFyfSBmb3IgeyFyfSAnCisgICAgICAgICAgICAgICAgICAgICAgICAnZXhpc3RzJy5mb3JtYXQocHljX3BhdGgsIFRFU1RGTikpCiAKICAgICBAc2tpcF9pZl9kb250X3dyaXRlX2J5dGVjb2RlCiAgICAgZGVmIHRlc3RfbWlzc2luZ19zb3VyY2Uoc2VsZik6CkBAIC04NDksMTkgKzg1OSwyNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX3BhY2thZ2VfXywgJ2ltcG9ydGxpYicpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2QuX19maWxlX18uZW5kc3dpdGgoJ19ib290c3RyYXAucHknKSwgbW9kLl9fZmlsZV9fKQogCisgICAgZGVmIHRlc3RfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbF9pc19ib290c3RyYXBfZXh0ZXJuYWwoc2VsZik6CisgICAgICAgIGZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwX2V4dGVybmFsCisgICAgICAgIG1vZCA9IHN5cy5tb2R1bGVzWydfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbCddCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kLCBfYm9vdHN0cmFwX2V4dGVybmFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX25hbWVfXywgJ2ltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19wYWNrYWdlX18sICdpbXBvcnRsaWInKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kLl9fZmlsZV9fLmVuZHN3aXRoKCdfYm9vdHN0cmFwX2V4dGVybmFsLnB5JyksIG1vZC5fX2ZpbGVfXykKKwogICAgIGRlZiB0ZXN0X3RoZXJlX2Nhbl9iZV9vbmx5X29uZShzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMTUzODYgcmV2ZWFsZWQgYSB0cmlja3kgbG9vcGhvbGUgaW4gdGhlIGJvb3RzdHJhcHBpbmcKICAgICAgICAgIyBUaGlzIHRlc3QgaXMgdGVjaG5pY2FsbHkgcmVkdW5kYW50LCBzaW5jZSB0aGUgYnVnIGNhdXNlZCBpbXBvcnRpbmcKICAgICAgICAgIyB0aGlzIHRlc3QgbW9kdWxlIHRvIGNyYXNoIGNvbXBsZXRlbHksIGJ1dCBpdCBoZWxwcyBwcm92ZSB0aGUgcG9pbnQKICAgICAgICAgZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogICAgICAgICBtb2QgPSBzeXMubW9kdWxlc1snX2Zyb3plbl9pbXBvcnRsaWInXQotICAgICAgICBzZWxmLmFzc2VydElzKG1hY2hpbmVyeS5GaWxlRmluZGVyLCBtb2QuRmlsZUZpbmRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYWNoaW5lcnkuTW9kdWxlU3BlYywgbW9kLk1vZHVsZVNwZWMpCiAKIAogQGNweXRob25fb25seQogY2xhc3MgR2V0U291cmNlZmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgICIiIlRlc3QgaW1wb3J0bGliLl9ib290c3RyYXAuX2dldF9zb3VyY2VmaWxlKCkgYXMgdXNlZCBieSB0aGUgQyBBUEkuCisgICAgIiIiVGVzdCBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fZ2V0X3NvdXJjZWZpbGUoKSBhcyB1c2VkIGJ5IHRoZSBDIEFQSS4KIAogICAgIEJlY2F1c2Ugb2YgdGhlIHBlY3VsaWFyaXRpZXMgb2YgdGhlIG5lZWQgb2YgdGhpcyBmdW5jdGlvbiwgdGhlIHRlc3RzIGFyZQogICAgIGtub3dpbmdseSB3aGl0ZWJveCB0ZXN0cy4KQEAgLTg3MSw3ICs4ODksNyBAQAogICAgIGRlZiB0ZXN0X2dldF9zb3VyY2VmaWxlKHNlbGYpOgogICAgICAgICAjIEdpdmVuIGEgdmFsaWQgYnl0ZWNvZGUgcGF0aCwgcmV0dXJuIHRoZSBwYXRoIHRvIHRoZSBjb3JyZXNwb25kaW5nCiAgICAgICAgICMgc291cmNlIGZpbGUgaWYgaXQgZXhpc3RzLgotICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ2ltcG9ydGxpYi5fYm9vdHN0cmFwLl9wYXRoX2lzZmlsZScpIGFzIF9wYXRoX2lzZmlsZToKKyAgICAgICAgd2l0aCBtb2NrLnBhdGNoKCdpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fcGF0aF9pc2ZpbGUnKSBhcyBfcGF0aF9pc2ZpbGU6CiAgICAgICAgICAgICBfcGF0aF9pc2ZpbGUucmV0dXJuX3ZhbHVlID0gVHJ1ZTsKICAgICAgICAgICAgIHBhdGggPSBURVNURk4gKyAnLnB5YycKICAgICAgICAgICAgIGV4cGVjdCA9IFRFU1RGTiArICcucHknCkBAIC04ODAsNyArODk4LDcgQEAKICAgICBkZWYgdGVzdF9nZXRfc291cmNlZmlsZV9ub19zb3VyY2Uoc2VsZik6CiAgICAgICAgICMgR2l2ZW4gYSB2YWxpZCBieXRlY29kZSBwYXRoIHdpdGhvdXQgYSBjb3JyZXNwb25kaW5nIHNvdXJjZSBwYXRoLAogICAgICAgICAjIHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZWNvZGUgcGF0aC4KLSAgICAgICAgd2l0aCBtb2NrLnBhdGNoKCdpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fcGF0aF9pc2ZpbGUnKSBhcyBfcGF0aF9pc2ZpbGU6CisgICAgICAgIHdpdGggbW9jay5wYXRjaCgnaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwuX3BhdGhfaXNmaWxlJykgYXMgX3BhdGhfaXNmaWxlOgogICAgICAgICAgICAgX3BhdGhfaXNmaWxlLnJldHVybl92YWx1ZSA9IEZhbHNlOwogICAgICAgICAgICAgcGF0aCA9IFRFU1RGTiArICcucHljJwogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZ2V0X3NvdXJjZWZpbGUocGF0aCksIHBhdGgpCkBAIC0xMDM1LDcgKzEwNTMsNyBAQAogICAgICAgICAjIFdlIHNpbXVsYXRlIGEgYnVnIGluIGltcG9ydGxpYiBhbmQgY2hlY2sgdGhhdCBpdCdzIG5vdCBzdHJpcHBlZAogICAgICAgICAjIGF3YXkgZnJvbSB0aGUgdHJhY2ViYWNrLgogICAgICAgICBzZWxmLmNyZWF0ZV9tb2R1bGUoImZvbyIsICIiKQotICAgICAgICBpbXBvcnRsaWIgPSBzeXMubW9kdWxlc1snX2Zyb3plbl9pbXBvcnRsaWInXQorICAgICAgICBpbXBvcnRsaWIgPSBzeXMubW9kdWxlc1snX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwnXQogICAgICAgICBpZiAnbG9hZF9tb2R1bGUnIGluIHZhcnMoaW1wb3J0bGliLlNvdXJjZUxvYWRlcik6CiAgICAgICAgICAgICBvbGRfZXhlY19tb2R1bGUgPSBpbXBvcnRsaWIuU291cmNlTG9hZGVyLmV4ZWNfbW9kdWxlCiAgICAgICAgIGVsc2U6CkBAIC0xMDY4LDYgKzEwODYsNDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faXNvbGF0ZWQ9RmFsc2UpCiAKIAorY2xhc3MgQ2lyY3VsYXJJbXBvcnRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJTZWUgdGhlIGRvY3N0cmluZ3Mgb2YgdGhlIG1vZHVsZXMgYmVpbmcgaW1wb3J0ZWQgZm9yIHRoZSBwdXJwb3NlIG9mIHRoZQorICAgIHRlc3QuIiIiCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICIiIk1ha2Ugc3VyZSBubyBtb2R1bGVzIHByZS1leGlzdCBpbiBzeXMubW9kdWxlcyB3aGljaCBhcmUgYmVpbmcgdXNlZCB0bworICAgICAgICB0ZXN0LiIiIgorICAgICAgICBmb3Iga2V5IGluIGxpc3Qoc3lzLm1vZHVsZXMua2V5cygpKToKKyAgICAgICAgICAgIGlmIGtleS5zdGFydHN3aXRoKCd0ZXN0LnRlc3RfaW1wb3J0LmRhdGEuY2lyY3VsYXJfaW1wb3J0cycpOgorICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1trZXldCisKKyAgICBkZWYgdGVzdF9kaXJlY3Qoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCB0ZXN0LnRlc3RfaW1wb3J0LmRhdGEuY2lyY3VsYXJfaW1wb3J0cy5iYXNpYworICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ2NpcmN1bGFyIGltcG9ydCB0aHJvdWdoIHJlbGF0aXZlIGltcG9ydHMgZmFpbGVkJykKKworICAgIGRlZiB0ZXN0X2luZGlyZWN0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgdGVzdC50ZXN0X2ltcG9ydC5kYXRhLmNpcmN1bGFyX2ltcG9ydHMuaW5kaXJlY3QKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdyZWxhdGl2ZSBpbXBvcnQgaW4gbW9kdWxlIGNvbnRyaWJ1dGluZyB0byBjaXJjdWxhciAnCisgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBmYWlsZWQnKQorCisgICAgZGVmIHRlc3Rfc3VicGFja2FnZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHRlc3QudGVzdF9pbXBvcnQuZGF0YS5jaXJjdWxhcl9pbXBvcnRzLnN1YnBhY2thZ2UKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdjaXJjdWxhciBpbXBvcnQgaW52b2x2aW5nIGEgc3VicGFja2FnZSBmYWlsZWQnKQorCisgICAgZGVmIHRlc3RfcmViaW5kaW5nKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgdGVzdC50ZXN0X2ltcG9ydC5kYXRhLmNpcmN1bGFyX2ltcG9ydHMucmViaW5kaW5nIGFzIHJlYmluZGluZworICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ2NpcmN1bGFyIGltcG9ydCB3aXRoIHJlYmluZGluZyBvZiBtb2R1bGUgYXR0cmlidXRlIGZhaWxlZCcpCisgICAgICAgIGZyb20gdGVzdC50ZXN0X2ltcG9ydC5kYXRhLmNpcmN1bGFyX2ltcG9ydHMuc3VicGtnIGltcG9ydCB1dGlsCisgICAgICAgIHNlbGYuYXNzZXJ0SXModXRpbC51dGlsLCByZWJpbmRpbmcudXRpbCkKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICMgVGVzdCBuZWVkcyB0byBiZSBhIHBhY2thZ2UsIHNvIHdlIGNhbiBkbyByZWxhdGl2ZSBpbXBvcnRzLgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19tYWluX18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9fX21haW5fXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGYwMmExCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19tYWluX18ucHkKQEAgLTAsMCArMSwzIEBACitpbXBvcnQgdW5pdHRlc3QKKwordW5pdHRlc3QubWFpbigndGVzdC50ZXN0X2ltcG9ydCcpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvYmFzaWMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvYmFzaWMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U0MWUzOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9iYXNpYy5weQpAQCAtMCwwICsxLDIgQEAKKyIiIkNpcmN1bGFyIGltcG9ydHMgdGhyb3VnaCBkaXJlY3QsIHJlbGF0aXZlIGltcG9ydHMuIiIiCitmcm9tIC4gaW1wb3J0IGJhc2ljMgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL2Jhc2ljMi5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9iYXNpYzIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBiZDJmMgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9iYXNpYzIucHkKQEAgLTAsMCArMSBAQAorZnJvbSAuIGltcG9ydCBiYXNpYwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL2luZGlyZWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL2luZGlyZWN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5MjU3ODgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvaW5kaXJlY3QucHkKQEAgLTAsMCArMSBAQAorZnJvbSAuIGltcG9ydCBiYXNpYywgYmFzaWMyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvcmViaW5kaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3JlYmluZGluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjc3Mzc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3JlYmluZGluZy5weQpAQCAtMCwwICsxLDMgQEAKKyIiIlRlc3QgdGhlIGJpbmRpbmcgb2YgbmFtZXMgd2hlbiBhIGNpcmN1bGFyIGltcG9ydCBzaGFyZXMgdGhlIHNhbWUgbmFtZSBhcyBhbgorYXR0cmlidXRlLiIiIgorZnJvbSAucmViaW5kaW5nMiBpbXBvcnQgdXRpbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3JlYmluZGluZzIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvcmViaW5kaW5nMi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2E5ZTY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3JlYmluZGluZzIucHkKQEAgLTAsMCArMSwzIEBACitmcm9tIC5zdWJwa2cgaW1wb3J0IHV0aWwKK2Zyb20gLiBpbXBvcnQgcmViaW5kaW5nCit1dGlsID0gdXRpbC51dGlsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvc3VicGFja2FnZS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9zdWJwYWNrYWdlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiNDEyZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvc3VicGFja2FnZS5weQpAQCAtMCwwICsxLDIgQEAKKyIiIkNpcmN1bGFyIGltcG9ydCBpbnZvbHZpbmcgYSBzdWItcGFja2FnZS4iIiIKK2Zyb20gLnN1YnBrZyBpbXBvcnQgc3VicGFja2FnZTIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9zdWJwa2cvc3VicGFja2FnZTIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvc3VicGtnL3N1YnBhY2thZ2UyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3Yjg5M2EKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvc3VicGtnL3N1YnBhY2thZ2UyLnB5CkBAIC0wLDAgKzEsMiBAQAorI2Zyb20gLnV0aWwgaW1wb3J0IHV0aWwKK2Zyb20gLi4gaW1wb3J0IHN1YnBhY2thZ2UKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9zdWJwa2cvdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9zdWJwa2cvdXRpbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDNiZDg0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3N1YnBrZy91dGlsLnB5CkBAIC0wLDAgKzEsMiBAQAorZGVmIHV0aWwoKToKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy91dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0M2JkODQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvdXRpbC5weQpAQCAtMCwwICsxLDIgQEAKK2RlZiB1dGlsKCk6CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9maW5kZXIucHkKaW5kZXggOTM0NTYyZi4uYTJlNmUxZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfZmluZGVyLnB5CkBAIC0xLDIxICsxLDIxIEBACiBmcm9tIC4uIGltcG9ydCBhYmMKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBidWlsdGluX3V0aWwKIAotZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCittYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogCitAdW5pdHRlc3Quc2tpcElmKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lIGlzIE5vbmUsICdubyByZWFzb25hYmxlIGJ1aWx0aW4gbW9kdWxlJykKIGNsYXNzIEZpbmRTcGVjVGVzdHMoYWJjLkZpbmRlclRlc3RzKToKIAogICAgICIiIlRlc3QgZmluZF9zcGVjKCkgZm9yIGJ1aWx0LWluIG1vZHVsZXMuIiIiCiAKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CiAgICAgICAgICMgQ29tbW9uIGNhc2UuCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGJ1aWx0aW5fdXRpbC5OQU1FKToKLSAgICAgICAgICAgIGZvdW5kID0gc2VsZi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmZpbmRfc3BlYyhidWlsdGluX3V0aWwuTkFNRSkKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUodXRpbC5CVUlMVElOUy5nb29kX25hbWUpOgorICAgICAgICAgICAgZm91bmQgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZmluZF9zcGVjKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3VuZC5vcmlnaW4sICdidWlsdC1pbicpCiAKQEAgLTM5LDIzICszOSwyNiBAQAogCiAgICAgZGVmIHRlc3RfaWdub3JlX3BhdGgoc2VsZik6CiAgICAgICAgICMgVGhlIHZhbHVlIGZvciAncGF0aCcgc2hvdWxkIGFsd2F5cyB0cmlnZ2VyIGEgZmFpbGVkIGltcG9ydC4KLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoYnVpbHRpbl91dGlsLk5BTUUpOgotICAgICAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5maW5kX3NwZWMoYnVpbHRpbl91dGlsLk5BTUUsCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKToKKyAgICAgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZmluZF9zcGVjKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydwa2cnXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNwZWMpCiAKLUZyb3plbl9GaW5kU3BlY1Rlc3RzLCBTb3VyY2VfRmluZFNwZWNUZXN0cyA9IHV0aWwudGVzdF9ib3RoKEZpbmRTcGVjVGVzdHMsCi0gICAgICAgIG1hY2hpbmVyeT1bZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeV0pCisKKyhGcm96ZW5fRmluZFNwZWNUZXN0cywKKyBTb3VyY2VfRmluZFNwZWNUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChGaW5kU3BlY1Rlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKK0B1bml0dGVzdC5za2lwSWYodXRpbC5CVUlMVElOUy5nb29kX25hbWUgaXMgTm9uZSwgJ25vIHJlYXNvbmFibGUgYnVpbHRpbiBtb2R1bGUnKQogY2xhc3MgRmluZGVyVGVzdHMoYWJjLkZpbmRlclRlc3RzKToKIAogICAgICIiIlRlc3QgZmluZF9tb2R1bGUoKSBmb3IgYnVpbHQtaW4gbW9kdWxlcy4iIiIKIAogICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKICAgICAgICAgIyBDb21tb24gY2FzZS4KLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoYnVpbHRpbl91dGlsLk5BTUUpOgotICAgICAgICAgICAgZm91bmQgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZmluZF9tb2R1bGUoYnVpbHRpbl91dGlsLk5BTUUpCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKToKKyAgICAgICAgICAgIGZvdW5kID0gc2VsZi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmZpbmRfbW9kdWxlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZm91bmQsICdsb2FkX21vZHVsZScpKQogCkBAIC03MiwxMyArNzUsMTUgQEAKIAogICAgIGRlZiB0ZXN0X2lnbm9yZV9wYXRoKHNlbGYpOgogICAgICAgICAjIFRoZSB2YWx1ZSBmb3IgJ3BhdGgnIHNob3VsZCBhbHdheXMgdHJpZ2dlciBhIGZhaWxlZCBpbXBvcnQuCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGJ1aWx0aW5fdXRpbC5OQU1FKToKLSAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5maW5kX21vZHVsZShidWlsdGluX3V0aWwuTkFNRSwKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUodXRpbC5CVUlMVElOUy5nb29kX25hbWUpOgorICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmZpbmRfbW9kdWxlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydwa2cnXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGxvYWRlcikKIAotRnJvemVuX0ZpbmRlclRlc3RzLCBTb3VyY2VfRmluZGVyVGVzdHMgPSB1dGlsLnRlc3RfYm90aChGaW5kZXJUZXN0cywKLSAgICAgICAgbWFjaGluZXJ5PVtmcm96ZW5fbWFjaGluZXJ5LCBzb3VyY2VfbWFjaGluZXJ5XSkKKworKEZyb3plbl9GaW5kZXJUZXN0cywKKyBTb3VyY2VfRmluZGVyVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoRmluZGVyVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfbG9hZGVyLnB5CmluZGV4IDFmODM1NzQuLmIxMzQ5ZWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2xvYWRlci5weQpAQCAtMSwxNCArMSwxMyBAQAogZnJvbSAuLiBpbXBvcnQgYWJjCiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgYnVpbHRpbl91dGlsCiAKLWZyb3plbl9tYWNoaW5lcnksIHNvdXJjZV9tYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQorbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKIAogaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKIAotCitAdW5pdHRlc3Quc2tpcElmKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lIGlzIE5vbmUsICdubyByZWFzb25hYmxlIGJ1aWx0aW4gbW9kdWxlJykKIGNsYXNzIExvYWRlclRlc3RzKGFiYy5Mb2FkZXJUZXN0cyk6CiAKICAgICAiIiJUZXN0IGxvYWRfbW9kdWxlKCkgZm9yIGJ1aWx0LWluIG1vZHVsZXMuIiIiCkBAIC0yOSw4ICsyOCw4IEBACiAKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CiAgICAgICAgICMgQ29tbW9uIGNhc2UuCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGJ1aWx0aW5fdXRpbC5OQU1FKToKLSAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZF9tb2R1bGUoYnVpbHRpbl91dGlsLk5BTUUpCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKToKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZF9tb2R1bGUodXRpbC5CVUlMVElOUy5nb29kX25hbWUpCiAgICAgICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUpCiAKICAgICAjIEJ1aWx0LWluIG1vZHVsZXMgY2Fubm90IGJlIGEgcGFja2FnZS4KQEAgLTQxLDkgKzQwLDkgQEAKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9yZXVzZShzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgdGhlIHNhbWUgbW9kdWxlIGlzIHVzZWQgaW4gYSByZWxvYWQuCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGJ1aWx0aW5fdXRpbC5OQU1FKToKLSAgICAgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlKGJ1aWx0aW5fdXRpbC5OQU1FKQotICAgICAgICAgICAgbW9kdWxlMiA9IHNlbGYubG9hZF9tb2R1bGUoYnVpbHRpbl91dGlsLk5BTUUpCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKToKKyAgICAgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKQorICAgICAgICAgICAgbW9kdWxlMiA9IHNlbGYubG9hZF9tb2R1bGUodXRpbC5CVUlMVElOUy5nb29kX25hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZTEsIG1vZHVsZTIpCiAKICAgICBkZWYgdGVzdF91bmxvYWRhYmxlKHNlbGYpOgpAQCAtNjYsNDAgKzY1LDQzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsIG1vZHVsZV9uYW1lKQogCiAKLUZyb3plbl9Mb2FkZXJUZXN0cywgU291cmNlX0xvYWRlclRlc3RzID0gdXRpbC50ZXN0X2JvdGgoTG9hZGVyVGVzdHMsCi0gICAgICAgIG1hY2hpbmVyeT1bZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeV0pCisoRnJvemVuX0xvYWRlclRlc3RzLAorIFNvdXJjZV9Mb2FkZXJUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChMb2FkZXJUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCitAdW5pdHRlc3Quc2tpcElmKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lIGlzIE5vbmUsICdubyByZWFzb25hYmxlIGJ1aWx0aW4gbW9kdWxlJykKIGNsYXNzIEluc3BlY3RMb2FkZXJUZXN0czoKIAogICAgICIiIlRlc3RzIGZvciBJbnNwZWN0TG9hZGVyIG1ldGhvZHMgZm9yIEJ1aWx0aW5JbXBvcnRlci4iIiIKIAogICAgIGRlZiB0ZXN0X2dldF9jb2RlKHNlbGYpOgogICAgICAgICAjIFRoZXJlIGlzIG5vIGNvZGUgb2JqZWN0LgotICAgICAgICByZXN1bHQgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZ2V0X2NvZGUoYnVpbHRpbl91dGlsLk5BTUUpCisgICAgICAgIHJlc3VsdCA9IHNlbGYubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5nZXRfY29kZSh1dGlsLkJVSUxUSU5TLmdvb2RfbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVzdWx0KQogCiAgICAgZGVmIHRlc3RfZ2V0X3NvdXJjZShzZWxmKToKICAgICAgICAgIyBUaGVyZSBpcyBubyBzb3VyY2UuCi0gICAgICAgIHJlc3VsdCA9IHNlbGYubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5nZXRfc291cmNlKGJ1aWx0aW5fdXRpbC5OQU1FKQorICAgICAgICByZXN1bHQgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZ2V0X3NvdXJjZSh1dGlsLkJVSUxUSU5TLmdvb2RfbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVzdWx0KQogCiAgICAgZGVmIHRlc3RfaXNfcGFja2FnZShzZWxmKToKICAgICAgICAgIyBDYW5ub3QgYmUgYSBwYWNrYWdlLgotICAgICAgICByZXN1bHQgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuaXNfcGFja2FnZShidWlsdGluX3V0aWwuTkFNRSkKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmlzX3BhY2thZ2UodXRpbC5CVUlMVElOUy5nb29kX25hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVzdWx0KQogCisgICAgQHVuaXR0ZXN0LnNraXBJZih1dGlsLkJVSUxUSU5TLmJhZF9uYW1lIGlzIE5vbmUsICdhbGwgbW9kdWxlcyBhcmUgYnVpbHQgaW4nKQogICAgIGRlZiB0ZXN0X25vdF9idWlsdGluKHNlbGYpOgogICAgICAgICAjIE1vZHVsZXMgbm90IGJ1aWx0LWluIHNob3VsZCByYWlzZSBJbXBvcnRFcnJvci4KICAgICAgICAgZm9yIG1ldGhfbmFtZSBpbiAoJ2dldF9jb2RlJywgJ2dldF9zb3VyY2UnLCAnaXNfcGFja2FnZScpOgogICAgICAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIsIG1ldGhfbmFtZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206Ci0gICAgICAgICAgICBtZXRob2QoYnVpbHRpbl91dGlsLkJBRF9OQU1FKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhidWlsdGluX3V0aWwuQkFEX05BTUUpCisgICAgICAgICAgICBtZXRob2QodXRpbC5CVUlMVElOUy5iYWRfbmFtZSkKIAotRnJvemVuX0luc3BlY3RMb2FkZXJUZXN0cywgU291cmNlX0luc3BlY3RMb2FkZXJUZXN0cyA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBJbnNwZWN0TG9hZGVyVGVzdHMsCi0gICAgICAgIG1hY2hpbmVyeT1bZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeV0pCisKKyhGcm96ZW5fSW5zcGVjdExvYWRlclRlc3RzLAorIFNvdXJjZV9JbnNwZWN0TG9hZGVyVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoSW5zcGVjdExvYWRlclRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MDQ2OTkuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi91dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1pbXBvcnQgc3lzCi0KLWFzc2VydCAnZXJybm8nIGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lcwotTkFNRSA9ICdlcnJubycKLQotYXNzZXJ0ICdpbXBvcnRsaWInIG5vdCBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMKLUJBRF9OQU1FID0gJ2ltcG9ydGxpYicKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CmluZGV4IGJiMjUyOGUuLjcwNmMzZTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQpAQCAtMSwyNSArMSwyNCBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwX2V4dGVybmFsCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgZXh0X3V0aWwKIAotZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCittYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCiAKICMgWFhYIGZpbmRfc3BlYyB0ZXN0cwogCi1AdW5pdHRlc3Quc2tpcElmKGV4dF91dGlsLkZJTEVOQU1FIGlzIE5vbmUsICdfdGVzdGNhcGkgbm90IGF2YWlsYWJsZScpCitAdW5pdHRlc3Quc2tpcElmKHV0aWwuRVhURU5TSU9OUy5maWxlbmFtZSBpcyBOb25lLCAnX3Rlc3RjYXBpIG5vdCBhdmFpbGFibGUnKQogQHV0aWwuY2FzZV9pbnNlbnNpdGl2ZV90ZXN0cwogY2xhc3MgRXh0ZW5zaW9uTW9kdWxlQ2FzZVNlbnNpdGl2aXR5VGVzdDoKIAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmKToKLSAgICAgICAgZ29vZF9uYW1lID0gZXh0X3V0aWwuTkFNRQorICAgICAgICBnb29kX25hbWUgPSB1dGlsLkVYVEVOU0lPTlMubmFtZQogICAgICAgICBiYWRfbmFtZSA9IGdvb2RfbmFtZS51cHBlcigpCiAgICAgICAgIGFzc2VydCBnb29kX25hbWUgIT0gYmFkX25hbWUKLSAgICAgICAgZmluZGVyID0gc2VsZi5tYWNoaW5lcnkuRmlsZUZpbmRlcihleHRfdXRpbC5QQVRILAorICAgICAgICBmaW5kZXIgPSBzZWxmLm1hY2hpbmVyeS5GaWxlRmluZGVyKHV0aWwuRVhURU5TSU9OUy5wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTKSkKICAgICAgICAgcmV0dXJuIGZpbmRlci5maW5kX21vZHVsZShiYWRfbmFtZSkKQEAgLTI3LDcgKzI2LDcgQEAKICAgICBkZWYgdGVzdF9jYXNlX3NlbnNpdGl2ZShzZWxmKToKICAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CiAgICAgICAgICAgICBlbnYudW5zZXQoJ1BZVEhPTkNBU0VPSycpCi0gICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgaW4gX2Jvb3RzdHJhcC5fb3MuZW52aXJvbjoKKyAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBpbiBfYm9vdHN0cmFwX2V4dGVybmFsLl9vcy5lbnZpcm9uOgogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ29zLmVudmlyb24gY2hhbmdlcyBub3QgcmVmbGVjdGVkIGluICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfb3MuZW52aXJvbicpCiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLmZpbmRfbW9kdWxlKCkKQEAgLTM2LDE1ICszNSwxNiBAQAogICAgIGRlZiB0ZXN0X2Nhc2VfaW5zZW5zaXRpdml0eShzZWxmKToKICAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CiAgICAgICAgICAgICBlbnYuc2V0KCdQWVRIT05DQVNFT0snLCAnMScpCi0gICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgbm90IGluIF9ib290c3RyYXAuX29zLmVudmlyb246CisgICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgbm90IGluIF9ib290c3RyYXBfZXh0ZXJuYWwuX29zLmVudmlyb246CiAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnb3MuZW52aXJvbiBjaGFuZ2VzIG5vdCByZWZsZWN0ZWQgaW4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19vcy5lbnZpcm9uJykKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuZmluZF9tb2R1bGUoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobG9hZGVyLCAnbG9hZF9tb2R1bGUnKSkKIAotRnJvemVuX0V4dGVuc2lvbkNhc2VTZW5zaXRpdml0eSwgU291cmNlX0V4dGVuc2lvbkNhc2VTZW5zaXRpdml0eSA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBFeHRlbnNpb25Nb2R1bGVDYXNlU2Vuc2l0aXZpdHlUZXN0LAotICAgICAgICBtYWNoaW5lcnk9W2Zyb3plbl9tYWNoaW5lcnksIHNvdXJjZV9tYWNoaW5lcnldKQorCisoRnJvemVuX0V4dGVuc2lvbkNhc2VTZW5zaXRpdml0eSwKKyBTb3VyY2VfRXh0ZW5zaW9uQ2FzZVNlbnNpdGl2aXR5CisgKSA9IHV0aWwudGVzdF9ib3RoKEV4dGVuc2lvbk1vZHVsZUNhc2VTZW5zaXRpdml0eVRlc3QsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQppbmRleCA5OTBmMjljLi43MWJmNjdmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CkBAIC0xLDggKzEsNyBAQAogZnJvbSAuLiBpbXBvcnQgYWJjCi1mcm9tIC4uIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsCitmcm9tIC4uIGltcG9ydCB1dGlsCiAKLW1hY2hpbmVyeSA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKK21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCkBAIC0xNCw3ICsxMyw3IEBACiAgICAgIiIiVGVzdCB0aGUgZmluZGVyIGZvciBleHRlbnNpb24gbW9kdWxlcy4iIiIKIAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgIGltcG9ydGVyID0gc2VsZi5tYWNoaW5lcnkuRmlsZUZpbmRlcih1dGlsLlBBVEgsCisgICAgICAgIGltcG9ydGVyID0gc2VsZi5tYWNoaW5lcnkuRmlsZUZpbmRlcih1dGlsLkVYVEVOU0lPTlMucGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVMpKQogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CkBAIC0yMiw3ICsyMSw3IEBACiAgICAgICAgICAgICByZXR1cm4gaW1wb3J0ZXIuZmluZF9tb2R1bGUoZnVsbG5hbWUpCiAKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmZpbmRfbW9kdWxlKHV0aWwuTkFNRSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmZpbmRfbW9kdWxlKHV0aWwuRVhURU5TSU9OUy5uYW1lKSkKIAogICAgICMgTm8gZXh0ZW5zaW9uIG1vZHVsZSBhcyBhbiBfX2luaXRfXyBhdmFpbGFibGUgZm9yIHRlc3RpbmcuCiAgICAgdGVzdF9wYWNrYWdlID0gdGVzdF9wYWNrYWdlX2luX3BhY2thZ2UgPSBOb25lCkBAIC0zNiw4ICszNSwxMCBAQAogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuZmluZF9tb2R1bGUoJ2FzZGZqa2w7JykpCiAKLUZyb3plbl9GaW5kZXJUZXN0cywgU291cmNlX0ZpbmRlclRlc3RzID0gdGVzdF91dGlsLnRlc3RfYm90aCgKLSAgICAgICAgRmluZGVyVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fRmluZGVyVGVzdHMsCisgU291cmNlX0ZpbmRlclRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKEZpbmRlclRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkKaW5kZXggZmQ5YWJmMi4uMTU0YTc5MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2xvYWRlci5weQpAQCAtMSw0ICsxLDMgQEAKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBleHRfdXRpbAogZnJvbSAuLiBpbXBvcnQgYWJjCiBmcm9tIC4uIGltcG9ydCB1dGlsCiAKQEAgLTgsNiArNyw4IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IGltcG9ydGxpYi51dGlsCitpbXBvcnQgaW1wb3J0bGliCiAKIAogY2xhc3MgTG9hZGVyVGVzdHMoYWJjLkxvYWRlclRlc3RzKToKQEAgLTE1LDggKzE2LDggQEAKICAgICAiIiJUZXN0IGxvYWRfbW9kdWxlKCkgZm9yIGV4dGVuc2lvbiBtb2R1bGVzLiIiIgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvYWRlciA9IHNlbGYubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIoZXh0X3V0aWwuTkFNRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dF91dGlsLkZJTEVQQVRIKQorICAgICAgICBzZWxmLmxvYWRlciA9IHNlbGYubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIodXRpbC5FWFRFTlNJT05TLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLkVYVEVOU0lPTlMuZmlsZV9wYXRoKQogCiAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgcmV0dXJuIHNlbGYubG9hZGVyLmxvYWRfbW9kdWxlKGZ1bGxuYW1lKQpAQCAtMjksMjMgKzMwLDIzIEBACiAgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlKCdYWFgnKQogCiAgICAgZGVmIHRlc3RfZXF1YWxpdHkoc2VsZik6Ci0gICAgICAgIG90aGVyID0gc2VsZi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcihleHRfdXRpbC5OQU1FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X3V0aWwuRklMRVBBVEgpCisgICAgICAgIG90aGVyID0gc2VsZi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcih1dGlsLkVYVEVOU0lPTlMubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuRVhURU5TSU9OUy5maWxlX3BhdGgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2FkZXIsIG90aGVyKQogCiAgICAgZGVmIHRlc3RfaW5lcXVhbGl0eShzZWxmKToKLSAgICAgICAgb3RoZXIgPSBzZWxmLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKCdfJyArIGV4dF91dGlsLk5BTUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRfdXRpbC5GSUxFUEFUSCkKKyAgICAgICAgb3RoZXIgPSBzZWxmLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKCdfJyArIHV0aWwuRVhURU5TSU9OUy5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5FWFRFTlNJT05TLmZpbGVfcGF0aCkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzZWxmLmxvYWRlciwgb3RoZXIpCiAKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6Ci0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGV4dF91dGlsLk5BTUUpOgotICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQotICAgICAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIFsoJ19fbmFtZV9fJywgZXh0X3V0aWwuTkFNRSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnX19maWxlX18nLCBleHRfdXRpbC5GSUxFUEFUSCksCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHV0aWwuRVhURU5TSU9OUy5uYW1lKToKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZF9tb2R1bGUodXRpbC5FWFRFTlNJT05TLm5hbWUpCisgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gWygnX19uYW1lX18nLCB1dGlsLkVYVEVOU0lPTlMubmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnX19maWxlX18nLCB1dGlsLkVYVEVOU0lPTlMuZmlsZV9wYXRoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX3BhY2thZ2VfXycsICcnKV06CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihleHRfdXRpbC5OQU1FLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4odXRpbC5FWFRFTlNJT05TLm5hbWUsIHN5cy5tb2R1bGVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZS5fX2xvYWRlcl9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIpCiAKQEAgLTU2LDkgKzU3LDkgQEAKICAgICB0ZXN0X2xhY2tpbmdfcGFyZW50ID0gTm9uZQogCiAgICAgZGVmIHRlc3RfbW9kdWxlX3JldXNlKHNlbGYpOgotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShleHRfdXRpbC5OQU1FKToKLSAgICAgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCi0gICAgICAgICAgICBtb2R1bGUyID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSh1dGlsLkVYVEVOU0lPTlMubmFtZSk6CisgICAgICAgICAgICBtb2R1bGUxID0gc2VsZi5sb2FkX21vZHVsZSh1dGlsLkVYVEVOU0lPTlMubmFtZSkKKyAgICAgICAgICAgIG1vZHVsZTIgPSBzZWxmLmxvYWRfbW9kdWxlKHV0aWwuRVhURU5TSU9OUy5uYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUxLCBtb2R1bGUyKQogCiAgICAgIyBObyBlYXN5IHdheSB0byB0cmlnZ2VyIGEgZmFpbHVyZSBhZnRlciBhIHN1Y2Nlc3NmdWwgaW1wb3J0LgpAQCAtNzEsMTUgKzcyLDE5NiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQogCiAgICAgZGVmIHRlc3RfaXNfcGFja2FnZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvYWRlci5pc19wYWNrYWdlKGV4dF91dGlsLk5BTUUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYubG9hZGVyLmlzX3BhY2thZ2UodXRpbC5FWFRFTlNJT05TLm5hbWUpKQogICAgICAgICBmb3Igc3VmZml4IGluIHNlbGYubWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUzoKICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ3NvbWUnLCAncGF0aCcsICdwa2cnLCAnX19pbml0X18nICsgc3VmZml4KQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcigncGtnJywgcGF0aCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIuaXNfcGFja2FnZSgncGtnJykpCiAKLUZyb3plbl9Mb2FkZXJUZXN0cywgU291cmNlX0xvYWRlclRlc3RzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIExvYWRlclRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorKEZyb3plbl9Mb2FkZXJUZXN0cywKKyBTb3VyY2VfTG9hZGVyVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoTG9hZGVyVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKK2NsYXNzIE11bHRpUGhhc2VFeHRlbnNpb25Nb2R1bGVUZXN0cyhhYmMuTG9hZGVyVGVzdHMpOgorICAgICIiIlRlc3QgbG9hZGluZyBleHRlbnNpb24gbW9kdWxlcyB3aXRoIG11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uIChQRVAgNDg5KQorICAgICIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLm5hbWUgPSAnX3Rlc3RtdWx0aXBoYXNlJworICAgICAgICBmaW5kZXIgPSBzZWxmLm1hY2hpbmVyeS5GaWxlRmluZGVyKE5vbmUpCisgICAgICAgIHNlbGYuc3BlYyA9IGltcG9ydGxpYi51dGlsLmZpbmRfc3BlYyhzZWxmLm5hbWUpCisgICAgICAgIGFzc2VydCBzZWxmLnNwZWMKKyAgICAgICAgc2VsZi5sb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKAorICAgICAgICAgICAgc2VsZi5uYW1lLCBzZWxmLnNwZWMub3JpZ2luKQorCisgICAgIyBObyBleHRlbnNpb24gbW9kdWxlIGFzIF9faW5pdF9fIGF2YWlsYWJsZSBmb3IgdGVzdGluZy4KKyAgICB0ZXN0X3BhY2thZ2UgPSBOb25lCisKKyAgICAjIE5vIGV4dGVuc2lvbiBtb2R1bGUgaW4gYSBwYWNrYWdlIGF2YWlsYWJsZSBmb3IgdGVzdGluZy4KKyAgICB0ZXN0X2xhY2tpbmdfcGFyZW50ID0gTm9uZQorCisgICAgIyBIYW5kbGluZyBmYWlsdXJlIG9uIHJlbG9hZCBpcyB0aGUgdXAgdG8gdGhlIG1vZHVsZS4KKyAgICB0ZXN0X3N0YXRlX2FmdGVyX2ZhaWx1cmUgPSBOb25lCisKKyAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CisgICAgICAgICcnJ1Rlc3QgbG9hZGluZyBhbiBleHRlbnNpb24gbW9kdWxlJycnCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHNlbGYubmFtZSk6CisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlKCkKKyAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBbKCdfX25hbWVfXycsIHNlbGYubmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnX19maWxlX18nLCBzZWxmLnNwZWMub3JpZ2luKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX3BhY2thZ2VfXycsICcnKV06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZSwgc3lzLm1vZHVsZXNbc2VsZi5uYW1lXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUuX19sb2FkZXJfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKQorCisgICAgZGVmIHRlc3RfZnVuY3Rpb25hbGl0eShzZWxmKToKKyAgICAgICAgJycnVGVzdCBiYXNpYyBmdW5jdGlvbmFsaXR5IG9mIHN0dWZmIGRlZmluZWQgaW4gYW4gZXh0ZW5zaW9uIG1vZHVsZScnJworICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShzZWxmLm5hbWUpOgorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlLCB0eXBlcy5Nb2R1bGVUeXBlKQorICAgICAgICAgICAgZXggPSBtb2R1bGUuRXhhbXBsZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmRlbW8oJ2FiY2QnKSwgJ2FiY2QnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5kZW1vKCksIE5vbmUpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICBleC5hYmMKKyAgICAgICAgICAgIGV4LmFiYyA9IDAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYWJjLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuZm9vKDksIDkpLCAxOCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUuU3RyKCksIHN0cikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLlN0cigxKSArICcyMycsICcxMjMnKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhtb2R1bGUuZXJyb3IpOgorICAgICAgICAgICAgICAgIHJhaXNlIG1vZHVsZS5lcnJvcigpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5pbnRfY29uc3QsIDE5NjkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5zdHJfY29uc3QsICdzb21ldGhpbmcgZGlmZmVyZW50JykKKworICAgIGRlZiB0ZXN0X3JlbG9hZChzZWxmKToKKyAgICAgICAgJycnVGVzdCB0aGF0IHJlbG9hZCBkaWRuJ3QgcmUtc2V0IHRoZSBtb2R1bGUncyBhdHRyaWJ1dGVzJycnCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHNlbGYubmFtZSk6CisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlKCkKKyAgICAgICAgICAgIGV4X2NsYXNzID0gbW9kdWxlLkV4YW1wbGUKKyAgICAgICAgICAgIGltcG9ydGxpYi5yZWxvYWQobW9kdWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhleF9jbGFzcywgbW9kdWxlLkV4YW1wbGUpCisKKyAgICBkZWYgdGVzdF90cnlfcmVnaXN0cmF0aW9uKHNlbGYpOgorICAgICAgICAnJydBc3NlcnQgdGhhdCB0aGUgUHlTdGF0ZV97RmluZCxBZGQsUmVtb3ZlfU1vZHVsZSBDIEFQSSBkb2Vzbid0IHdvcmsnJycKKyAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZSgpCisgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCdQeVN0YXRlX0ZpbmRNb2R1bGUnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLmNhbGxfc3RhdGVfcmVnaXN0cmF0aW9uX2Z1bmMoMCksIE5vbmUpCisgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCdQeVN0YXRlX0FkZE1vZHVsZScpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FcnJvcik6CisgICAgICAgICAgICAgICAgbW9kdWxlLmNhbGxfc3RhdGVfcmVnaXN0cmF0aW9uX2Z1bmMoMSkKKyAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoJ1B5U3RhdGVfUmVtb3ZlTW9kdWxlJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUVycm9yKToKKyAgICAgICAgICAgICAgICBtb2R1bGUuY2FsbF9zdGF0ZV9yZWdpc3RyYXRpb25fZnVuYygyKQorCisgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYpOgorICAgICAgICAnJydMb2FkIHRoZSBtb2R1bGUgZnJvbSB0aGUgdGVzdCBleHRlbnNpb24nJycKKyAgICAgICAgcmV0dXJuIHNlbGYubG9hZGVyLmxvYWRfbW9kdWxlKHNlbGYubmFtZSkKKworICAgIGRlZiBsb2FkX21vZHVsZV9ieV9uYW1lKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgJycnTG9hZCBhIG1vZHVsZSBmcm9tIHRoZSB0ZXN0IGV4dGVuc2lvbiBieSBuYW1lJycnCisgICAgICAgIG9yaWdpbiA9IHNlbGYuc3BlYy5vcmlnaW4KKyAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcihmdWxsbmFtZSwgb3JpZ2luKQorICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuc3BlY19mcm9tX2xvYWRlcihmdWxsbmFtZSwgbG9hZGVyKQorICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICAgIGxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCisgICAgICAgIHJldHVybiBtb2R1bGUKKworICAgIGRlZiB0ZXN0X2xvYWRfc3VibW9kdWxlKHNlbGYpOgorICAgICAgICAnJydUZXN0IGxvYWRpbmcgYSBzaW11bGF0ZWQgc3VibW9kdWxlJycnCisgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZF9tb2R1bGVfYnlfbmFtZSgncGtnLicgKyBzZWxmLm5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAncGtnLicgKyBzZWxmLm5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLnN0cl9jb25zdCwgJ3NvbWV0aGluZyBkaWZmZXJlbnQnKQorCisgICAgZGVmIHRlc3RfbG9hZF9zaG9ydF9uYW1lKHNlbGYpOgorICAgICAgICAnJydUZXN0IGxvYWRpbmcgbW9kdWxlIHdpdGggYSBvbmUtY2hhcmFjdGVyIG5hbWUnJycKKyAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZV9ieV9uYW1lKCd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuc3RyX2NvbnN0LCAnc29tZXRoaW5nIGRpZmZlcmVudCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3gnLCBzeXMubW9kdWxlcykKKworICAgIGRlZiB0ZXN0X2xvYWRfdHdpY2Uoc2VsZik6CisgICAgICAgICcnJ1Rlc3QgdGhhdCAyIGxvYWRzIHJlc3VsdCBpbiAyIG1vZHVsZSBvYmplY3RzJycnCisgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlX2J5X25hbWUoc2VsZi5uYW1lKQorICAgICAgICBtb2R1bGUyID0gc2VsZi5sb2FkX21vZHVsZV9ieV9uYW1lKHNlbGYubmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChtb2R1bGUxLCBtb2R1bGUyKQorCisgICAgZGVmIHRlc3RfdW5sb2FkYWJsZShzZWxmKToKKyAgICAgICAgJycnVGVzdCBub25leGlzdGVudCBtb2R1bGUnJycKKyAgICAgICAgbmFtZSA9ICdhc2RmamtsOycKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlX2J5X25hbWUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKworICAgIGRlZiB0ZXN0X3VubG9hZGFibGVfbm9uYXNjaWkoc2VsZik6CisgICAgICAgICcnJ1Rlc3QgYmVoYXZpb3Igd2l0aCBub25leGlzdGVudCBtb2R1bGUgd2l0aCBub24tQVNDSUkgbmFtZScnJworICAgICAgICBuYW1lID0gJ2ZvXHhmMycKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlX2J5X25hbWUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKworICAgIGRlZiB0ZXN0X25vbm1vZHVsZShzZWxmKToKKyAgICAgICAgJycnVGVzdCByZXR1cm5pbmcgYSBub24tbW9kdWxlIG9iamVjdCBmcm9tIGNyZWF0ZSB3b3JrcycnJworICAgICAgICBuYW1lID0gc2VsZi5uYW1lICsgJ19ub25tb2R1bGUnCisgICAgICAgIG1vZCA9IHNlbGYubG9hZF9tb2R1bGVfYnlfbmFtZShuYW1lKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHR5cGUobW9kKSwgdHlwZSh1bml0dGVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLnRocmVlLCAzKQorCisgICAgZGVmIHRlc3RfbnVsbF9zbG90cyhzZWxmKToKKyAgICAgICAgJycnVGVzdCB0aGF0IE5VTEwgc2xvdHMgYXJlbid0IGEgcHJvYmxlbScnJworICAgICAgICBuYW1lID0gc2VsZi5uYW1lICsgJ19udWxsX3Nsb3RzJworICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlX2J5X25hbWUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCisKKyAgICBkZWYgdGVzdF9iYWRfbW9kdWxlcyhzZWxmKToKKyAgICAgICAgJycnVGVzdCBTeXN0ZW1FcnJvciBpcyByYWlzZWQgZm9yIG1pc2JlaGF2aW5nIGV4dGVuc2lvbnMnJycKKyAgICAgICAgZm9yIG5hbWVfYmFzZSBpbiBbCisgICAgICAgICAgICAgICAgJ2JhZF9zbG90X2xhcmdlJywKKyAgICAgICAgICAgICAgICAnYmFkX3Nsb3RfbmVnYXRpdmUnLAorICAgICAgICAgICAgICAgICdjcmVhdGVfaW50X3dpdGhfc3RhdGUnLAorICAgICAgICAgICAgICAgICduZWdhdGl2ZV9zaXplJywKKyAgICAgICAgICAgICAgICAnZXhwb3J0X251bGwnLAorICAgICAgICAgICAgICAgICdleHBvcnRfdW5pbml0aWFsaXplZCcsCisgICAgICAgICAgICAgICAgJ2V4cG9ydF9yYWlzZScsCisgICAgICAgICAgICAgICAgJ2V4cG9ydF91bnJlcG9ydGVkX2V4Y2VwdGlvbicsCisgICAgICAgICAgICAgICAgJ2NyZWF0ZV9udWxsJywKKyAgICAgICAgICAgICAgICAnY3JlYXRlX3JhaXNlJywKKyAgICAgICAgICAgICAgICAnY3JlYXRlX3VucmVwb3J0ZWRfZXhjZXB0aW9uJywKKyAgICAgICAgICAgICAgICAnbm9ubW9kdWxlX3dpdGhfZXhlY19zbG90cycsCisgICAgICAgICAgICAgICAgJ2V4ZWNfZXJyJywKKyAgICAgICAgICAgICAgICAnZXhlY19yYWlzZScsCisgICAgICAgICAgICAgICAgJ2V4ZWNfdW5yZXBvcnRlZF9leGNlcHRpb24nLAorICAgICAgICAgICAgICAgIF06CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW1lX2Jhc2UpOgorICAgICAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUgKyAnXycgKyBuYW1lX2Jhc2UKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkX21vZHVsZV9ieV9uYW1lKG5hbWUpCisKKyAgICBkZWYgdGVzdF9ub25hc2NpaShzZWxmKToKKyAgICAgICAgJycnVGVzdCB0aGF0IG1vZHVsZXMgd2l0aCBub24tQVNDSUkgbmFtZXMgY2FuIGJlIGxvYWRlZCcnJworICAgICAgICAjIHB1bnljb2RlIGJlaGF2ZXMgc2xpZ2h0bHkgZGlmZmVyZW50bHkgaW4gc29tZS1BU0NJSSBhbmQgbm8tQVNDSUkKKyAgICAgICAgIyBjYXNlcywgc28gdGVzdCBib3RoCisgICAgICAgIGNhc2VzID0gWworICAgICAgICAgICAgKHNlbGYubmFtZSArICdfemtvdVx1MDE2MWthX25hXHUwMTBkdGVuXHhlZCcsICdDemVjaCcpLAorICAgICAgICAgICAgKCdcdWZmM2ZcdTMwYTRcdTMwZjNcdTMwZGRcdTMwZmNcdTMwYzhcdTMwYzZcdTMwYjlcdTMwYzgnLAorICAgICAgICAgICAgICdKYXBhbmVzZScpLAorICAgICAgICAgICAgXQorICAgICAgICBmb3IgbmFtZSwgbGFuZyBpbiBjYXNlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbWUpOgorICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZF9tb2R1bGVfYnlfbmFtZShuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fZG9jX18sICJNb2R1bGUgbmFtZWQgaW4gJXMiICUgbGFuZykKKworCisoRnJvemVuX011bHRpUGhhc2VFeHRlbnNpb25Nb2R1bGVUZXN0cywKKyBTb3VyY2VfTXVsdGlQaGFzZUV4dGVuc2lvbk1vZHVsZVRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKE11bHRpUGhhc2VFeHRlbnNpb25Nb2R1bGVUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CmluZGV4IDQ5ZDY3MzQuLjhmNGI4YmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKQEAgLTEsNyArMSw2IEBACi1mcm9tIC4uIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsCitmcm9tIC4uIGltcG9ydCB1dGlsCiAKLW1hY2hpbmVyeSA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKK21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IHN5cwpAQCAtMjIsMTAgKzIxLDEyIEBACiAgICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKICAgICAgICAgIyBQYXRoIGhvb2sgc2hvdWxkIGhhbmRsZSBhIGRpcmVjdG9yeSB3aGVyZSBhIGtub3duIGV4dGVuc2lvbiBtb2R1bGUKICAgICAgICAgIyBleGlzdHMuCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYuaG9vayh1dGlsLlBBVEgpLCAnZmluZF9tb2R1bGUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5ob29rKHV0aWwuRVhURU5TSU9OUy5wYXRoKSwgJ2ZpbmRfbW9kdWxlJykpCiAKLUZyb3plbl9QYXRoSG9va3NUZXN0cywgU291cmNlX1BhdGhIb29rc1Rlc3RzID0gdGVzdF91dGlsLnRlc3RfYm90aCgKLSAgICAgICAgUGF0aEhvb2tUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKworKEZyb3plbl9QYXRoSG9va3NUZXN0cywKKyBTb3VyY2VfUGF0aEhvb2tzVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoUGF0aEhvb2tUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdXRpbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQwODlmMC4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdXRpbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi1QQVRIID0gTm9uZQotRVhUID0gTm9uZQotRklMRU5BTUUgPSBOb25lCi1OQU1FID0gJ190ZXN0Y2FwaScKLXRyeToKLSAgICBmb3IgUEFUSCBpbiBzeXMucGF0aDoKLSAgICAgICAgZm9yIEVYVCBpbiBtYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTOgotICAgICAgICAgICAgRklMRU5BTUUgPSBOQU1FICsgRVhUCi0gICAgICAgICAgICBGSUxFUEFUSCA9IG9zLnBhdGguam9pbihQQVRILCBGSUxFTkFNRSkKLSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihQQVRILCBGSUxFTkFNRSkpOgotICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KLSAgICBlbHNlOgotICAgICAgICBQQVRIID0gRVhUID0gRklMRU5BTUUgPSBGSUxFUEFUSCA9IE5vbmUKLWV4Y2VwdCBTdG9wSXRlcmF0aW9uOgotICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2ZpbmRlci5weQppbmRleCBmOWY5N2YzLi41MTlhYTAyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9maW5kZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfZmluZGVyLnB5CkBAIC0zNyw4ICszNywxMCBAQAogICAgICAgICBzcGVjID0gc2VsZi5maW5kKCc8bm90IHJlYWw+JykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3BlYykKIAotRnJvemVuX0ZpbmRTcGVjVGVzdHMsIFNvdXJjZV9GaW5kU3BlY1Rlc3RzID0gdXRpbC50ZXN0X2JvdGgoRmluZFNwZWNUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fRmluZFNwZWNUZXN0cywKKyBTb3VyY2VfRmluZFNwZWNUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChGaW5kU3BlY1Rlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIEZpbmRlclRlc3RzKGFiYy5GaW5kZXJUZXN0cyk6CkBAIC03Miw4ICs3NCwxMCBAQAogICAgICAgICBsb2FkZXIgPSBzZWxmLmZpbmQoJzxub3QgcmVhbD4nKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShsb2FkZXIpCiAKLUZyb3plbl9GaW5kZXJUZXN0cywgU291cmNlX0ZpbmRlclRlc3RzID0gdXRpbC50ZXN0X2JvdGgoRmluZGVyVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fRmluZGVyVGVzdHMsCisgU291cmNlX0ZpbmRlclRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKEZpbmRlclRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkKaW5kZXggN2MwMTQ2NC4uNjAzYzdkNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQpAQCAtODUsOCArODUsMTAgQEAKICAgICAgICAgICAgIHNlbGYuZXhlY19tb2R1bGUoJ19ub3RfcmVhbCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsICdfbm90X3JlYWwnKQogCi1Gcm96ZW5fRXhlY01vZHVsZVRlc3RzLCBTb3VyY2VfRXhlY01vZHVsZVRlc3RzID0gdXRpbC50ZXN0X2JvdGgoRXhlY01vZHVsZVRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0V4ZWNNb2R1bGVUZXN0cywKKyBTb3VyY2VfRXhlY01vZHVsZVRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKEV4ZWNNb2R1bGVUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBMb2FkZXJUZXN0cyhhYmMuTG9hZGVyVGVzdHMpOgpAQCAtMTc1LDggKzE3NywxMCBAQAogICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ19ub3RfcmVhbCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsICdfbm90X3JlYWwnKQogCi1Gcm96ZW5fTG9hZGVyVGVzdHMsIFNvdXJjZV9Mb2FkZXJUZXN0cyA9IHV0aWwudGVzdF9ib3RoKExvYWRlclRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0xvYWRlclRlc3RzLAorIFNvdXJjZV9Mb2FkZXJUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChMb2FkZXJUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBJbnNwZWN0TG9hZGVyVGVzdHM6CkBAIC0yMTQsOCArMjE4LDkgQEAKICAgICAgICAgICAgICAgICBtZXRob2QoJ2ltcG9ydGxpYicpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCAnaW1wb3J0bGliJykKIAotRnJvemVuX0lMVGVzdHMsIFNvdXJjZV9JTFRlc3RzID0gdXRpbC50ZXN0X2JvdGgoSW5zcGVjdExvYWRlclRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKyhGcm96ZW5fSUxUZXN0cywKKyBTb3VyY2VfSUxUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChJbnNwZWN0TG9hZGVyVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX2xvYWRlcl9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fbG9hZGVyX18ucHkKaW5kZXggNmRmODAxMC4uNGIxODA5MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fbG9hZGVyX18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fbG9hZGVyX18ucHkKQEAgLTQsNyArNCw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCiAKIAogY2xhc3MgU3BlY0xvYWRlck1vY2s6CkBAIC0xMiw2ICsxMSw5IEBACiAgICAgZGVmIGZpbmRfc3BlYyhzZWxmLCBmdWxsbmFtZSwgcGF0aD1Ob25lLCB0YXJnZXQ9Tm9uZSk6CiAgICAgICAgIHJldHVybiBtYWNoaW5lcnkuTW9kdWxlU3BlYyhmdWxsbmFtZSwgc2VsZikKIAorICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIHNwZWMpOgorICAgICAgICByZXR1cm4gTm9uZQorCiAgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgIHBhc3MKIApAQCAtMjQsOCArMjYsMTAgQEAKICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuX19pbXBvcnRfXygnYmxhaCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVyLCBtb2R1bGUuX19sb2FkZXJfXykKIAotRnJvemVuX1NwZWNUZXN0cywgU291cmNlX1NwZWNUZXN0cyA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBTcGVjTG9hZGVyQXR0cmlidXRlVGVzdHMsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9TcGVjVGVzdHMsCisgU291cmNlX1NwZWNUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChTcGVjTG9hZGVyQXR0cmlidXRlVGVzdHMsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGNsYXNzIExvYWRlck1vY2s6CkBAIC02Miw4ICs2Niw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVyLCBtb2R1bGUuX19sb2FkZXJfXykKIAogCi1Gcm96ZW5fVGVzdHMsIFNvdXJjZV9UZXN0cyA9IHV0aWwudGVzdF9ib3RoKExvYWRlckF0dHJpYnV0ZVRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ltcG9ydF9fPWltcG9ydF91dGlsLl9faW1wb3J0X18pCisoRnJvemVuX1Rlc3RzLAorIFNvdXJjZV9UZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChMb2FkZXJBdHRyaWJ1dGVUZXN0cywgX19pbXBvcnRfXz11dGlsLl9faW1wb3J0X18pCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQppbmRleCAyZTE5NzI1Li5jN2QzYTJhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CkBAIC02LDcgKzYsNiBAQAogIiIiCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAogCiAKIGNsYXNzIFVzaW5nX19wYWNrYWdlX186CkBAIC03MCwxNyArNjksMjMgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCcnLCBnbG9iYWxzLCB7fSwgWydyZWxpbXBvcnQnXSwgMSkKIAorCiBjbGFzcyBVc2luZ19fcGFja2FnZV9fUEVQMzAyKFVzaW5nX19wYWNrYWdlX18pOgogICAgIG1vY2tfbW9kdWxlcyA9IHV0aWwubW9ja19tb2R1bGVzCiAKLUZyb3plbl9Vc2luZ1BhY2thZ2VQRVAzMDIsIFNvdXJjZV9Vc2luZ1BhY2thZ2VQRVAzMDIgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgVXNpbmdfX3BhY2thZ2VfX1BFUDMwMiwgX19pbXBvcnRfXz1pbXBvcnRfdXRpbC5fX2ltcG9ydF9fKQogCi1jbGFzcyBVc2luZ19fcGFja2FnZV9fUEVQMzAyKFVzaW5nX19wYWNrYWdlX18pOgorKEZyb3plbl9Vc2luZ1BhY2thZ2VQRVAzMDIsCisgU291cmNlX1VzaW5nUGFja2FnZVBFUDMwMgorICkgPSB1dGlsLnRlc3RfYm90aChVc2luZ19fcGFja2FnZV9fUEVQMzAyLCBfX2ltcG9ydF9fPXV0aWwuX19pbXBvcnRfXykKKworCitjbGFzcyBVc2luZ19fcGFja2FnZV9fUEVQNDUxKFVzaW5nX19wYWNrYWdlX18pOgogICAgIG1vY2tfbW9kdWxlcyA9IHV0aWwubW9ja19zcGVjCiAKLUZyb3plbl9Vc2luZ1BhY2thZ2VQRVA0NTEsIFNvdXJjZV9Vc2luZ1BhY2thZ2VQRVA0NTEgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgVXNpbmdfX3BhY2thZ2VfX1BFUDMwMiwgX19pbXBvcnRfXz1pbXBvcnRfdXRpbC5fX2ltcG9ydF9fKQorCisoRnJvemVuX1VzaW5nUGFja2FnZVBFUDQ1MSwKKyBTb3VyY2VfVXNpbmdQYWNrYWdlUEVQNDUxCisgKSA9IHV0aWwudGVzdF9ib3RoKFVzaW5nX19wYWNrYWdlX19QRVA0NTEsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGNsYXNzIFNldHRpbmdfX3BhY2thZ2VfXzoKQEAgLTk1LDcgKzEwMCw3IEBACiAKICAgICAiIiIKIAotICAgIF9faW1wb3J0X18gPSBpbXBvcnRfdXRpbC5fX2ltcG9ydF9fWzFdCisgICAgX19pbXBvcnRfXyA9IHV0aWwuX19pbXBvcnRfX1snU291cmNlJ10KIAogICAgICMgW3RvcC1sZXZlbF0KICAgICBkZWYgdGVzdF90b3BfbGV2ZWwoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQppbmRleCA0MzljMTA1Li43MDY5ZDllIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9hcGkucHkKQEAgLTEsNSArMSw0IEBACiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKIAogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogaW1wb3J0IHN5cwpAQCAtMTgsNiArMTcsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBzcGVjCiAKICAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc3BlYyk6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIGV4ZWNfbW9kdWxlKG1vZHVsZSk6CiAgICAgICAgIGlmIG1vZHVsZS5fX25hbWVfXyA9PSBTVUJNT0RfTkFNRToKICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdJIGNhbm5vdCBiZSBsb2FkZWQhJykKQEAgLTc5LDE1ICs4MiwxOSBAQAogY2xhc3MgT2xkQVBJVGVzdHMoQVBJVGVzdCk6CiAgICAgYmFkX2ZpbmRlcl9sb2FkZXIgPSBCYWRMb2FkZXJGaW5kZXIKIAotRnJvemVuX09sZEFQSVRlc3RzLCBTb3VyY2VfT2xkQVBJVGVzdHMgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgT2xkQVBJVGVzdHMsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9PbGRBUElUZXN0cywKKyBTb3VyY2VfT2xkQVBJVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoT2xkQVBJVGVzdHMsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGNsYXNzIFNwZWNBUElUZXN0cyhBUElUZXN0KToKICAgICBiYWRfZmluZGVyX2xvYWRlciA9IEJhZFNwZWNGaW5kZXJMb2FkZXIKIAotRnJvemVuX1NwZWNBUElUZXN0cywgU291cmNlX1NwZWNBUElUZXN0cyA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBTcGVjQVBJVGVzdHMsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9TcGVjQVBJVGVzdHMsCisgU291cmNlX1NwZWNBUElUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChTcGVjQVBJVGVzdHMsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfY2FjaGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CmluZGV4IGMyOTJlZTQuLjgwNzlhZGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVGVzdCB0aGF0IHN5cy5tb2R1bGVzIGlzIHVzZWQgcHJvcGVybHkgYnkgaW1wb3J0LiIiIgogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCiBpbXBvcnQgc3lzCiBmcm9tIHR5cGVzIGltcG9ydCBNZXRob2RUeXBlCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTM5LDE1ICszOCwxNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXyhuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKIAotRnJvemVuX1VzZUNhY2hlLCBTb3VyY2VfVXNlQ2FjaGUgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgVXNlQ2FjaGUsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9Vc2VDYWNoZSwKKyBTb3VyY2VfVXNlQ2FjaGUKKyApID0gdXRpbC50ZXN0X2JvdGgoVXNlQ2FjaGUsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGNsYXNzIEltcG9ydGxpYlVzZUNhY2hlKFVzZUNhY2hlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIFBlcnRpbmVudCBvbmx5IHRvIFBFUCAzMDI7IGV4ZWNfbW9kdWxlKCkgZG9lc24ndCByZXR1cm4gYSBtb2R1bGUuCiAKLSAgICBfX2ltcG9ydF9fID0gaW1wb3J0X3V0aWwuX19pbXBvcnRfX1sxXQorICAgIF9faW1wb3J0X18gPSB1dGlsLl9faW1wb3J0X19bJ1NvdXJjZSddCiAKICAgICBkZWYgY3JlYXRlX21vY2soc2VsZiwgKm5hbWVzLCByZXR1cm5fPU5vbmUpOgogICAgICAgICBtb2NrID0gdXRpbC5tb2NrX21vZHVsZXMoKm5hbWVzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CmluZGV4IGE3NTViNzUuLjgwNDU0NjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKQEAgLTEsNiArMSw1IEBACiAiIiJUZXN0IHRoYXQgdGhlIHNlbWFudGljcyByZWxhdGluZyB0byB0aGUgJ2Zyb21saXN0JyBhcmd1bWVudCBhcmUgY29ycmVjdC4iIiIKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAogaW1wb3J0IHVuaXR0ZXN0CiAKIApAQCAtMjksOCArMjgsMTAgQEAKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLl9faW1wb3J0X18oJ3BrZy5tb2R1bGUnLCBmcm9tbGlzdD1bJ2F0dHInXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3BrZy5tb2R1bGUnKQogCi1Gcm96ZW5fUmV0dXJuVmFsdWUsIFNvdXJjZV9SZXR1cm5WYWx1ZSA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBSZXR1cm5WYWx1ZSwgX19pbXBvcnRfXz1pbXBvcnRfdXRpbC5fX2ltcG9ydF9fKQorCisoRnJvemVuX1JldHVyblZhbHVlLAorIFNvdXJjZV9SZXR1cm5WYWx1ZQorICkgPSB1dGlsLnRlc3RfYm90aChSZXR1cm5WYWx1ZSwgX19pbXBvcnRfXz11dGlsLl9faW1wb3J0X18pCiAKIAogY2xhc3MgSGFuZGxpbmdGcm9tbGlzdDoKQEAgLTEyMSw4ICsxMjIsMTAgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5tb2R1bGUxLl9fbmFtZV9fLCAncGtnLm1vZHVsZTEnKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLm1vZHVsZTIuX19uYW1lX18sICdwa2cubW9kdWxlMicpCiAKLUZyb3plbl9Gcm9tTGlzdCwgU291cmNlX0Zyb21MaXN0ID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIEhhbmRsaW5nRnJvbWxpc3QsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9Gcm9tTGlzdCwKKyBTb3VyY2VfRnJvbUxpc3QKKyApID0gdXRpbC50ZXN0X2JvdGgoSGFuZGxpbmdGcm9tbGlzdCwgX19pbXBvcnRfXz11dGlsLl9faW1wb3J0X18pCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfbWV0YV9wYXRoLnB5CmluZGV4IDVlZWIxNDUuLmM0NTJjZGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X21ldGFfcGF0aC5weQpAQCAtMSw1ICsxLDQgQEAKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAogaW1wb3J0IGltcG9ydGxpYi5fYm9vdHN0cmFwCiBpbXBvcnQgc3lzCiBmcm9tIHR5cGVzIGltcG9ydCBNZXRob2RUeXBlCkBAIC00Niw4ICs0NSwxMCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAxKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHdbLTFdLmNhdGVnb3J5LCBJbXBvcnRXYXJuaW5nKSkKIAotRnJvemVuX0NhbGxpbmdPcmRlciwgU291cmNlX0NhbGxpbmdPcmRlciA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBDYWxsaW5nT3JkZXIsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9DYWxsaW5nT3JkZXIsCisgU291cmNlX0NhbGxpbmdPcmRlcgorICkgPSB1dGlsLnRlc3RfYm90aChDYWxsaW5nT3JkZXIsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGNsYXNzIENhbGxTaWduYXR1cmU6CkBAIC0xMDAsMTkgKzEwMSwyNSBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJnc1swXSwgbW9kX25hbWUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhhcmdzWzFdLCBwYXRoKQogCisKIGNsYXNzIENhbGxTaWduYXR1cmVQRVAzMDIoQ2FsbFNpZ25hdHVyZSk6CiAgICAgbW9ja19tb2R1bGVzID0gdXRpbC5tb2NrX21vZHVsZXMKICAgICBmaW5kZXJfbmFtZSA9ICdmaW5kX21vZHVsZScKIAotRnJvemVuX0NhbGxTaWduYXR1cmVQRVAzMDIsIFNvdXJjZV9DYWxsU2lnbmF0dXJlUEVQMzAyID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIENhbGxTaWduYXR1cmVQRVAzMDIsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9DYWxsU2lnbmF0dXJlUEVQMzAyLAorIFNvdXJjZV9DYWxsU2lnbmF0dXJlUEVQMzAyCisgKSA9IHV0aWwudGVzdF9ib3RoKENhbGxTaWduYXR1cmVQRVAzMDIsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQorCiAKIGNsYXNzIENhbGxTaWduYXR1cmVQRVA0NTEoQ2FsbFNpZ25hdHVyZSk6CiAgICAgbW9ja19tb2R1bGVzID0gdXRpbC5tb2NrX3NwZWMKICAgICBmaW5kZXJfbmFtZSA9ICdmaW5kX3NwZWMnCiAKLUZyb3plbl9DYWxsU2lnbmF0dXJlUEVQNDUxLCBTb3VyY2VfQ2FsbFNpZ25hdHVyZVBFUDQ1MSA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBDYWxsU2lnbmF0dXJlUEVQNDUxLCBfX2ltcG9ydF9fPWltcG9ydF91dGlsLl9faW1wb3J0X18pCisKKyhGcm96ZW5fQ2FsbFNpZ25hdHVyZVBFUDQ1MSwKKyBTb3VyY2VfQ2FsbFNpZ25hdHVyZVBFUDQ1MQorICkgPSB1dGlsLnRlc3RfYm90aChDYWxsU2lnbmF0dXJlUEVQNDUxLCBfX2ltcG9ydF9fPXV0aWwuX19pbXBvcnRfXykKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5CmluZGV4IDU1YTVkMTQuLjM3NTViODQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkKQEAgLTEsNSArMSw0IEBACiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGltcG9ydGxpYgpAQCAtMTAyLDggKzEwMSwxMCBAQAogICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQudW5sb2FkKHN1Ym5hbWUpCiAKLUZyb3plbl9QYXJlbnRUZXN0cywgU291cmNlX1BhcmVudFRlc3RzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFBhcmVudE1vZHVsZVRlc3RzLCBfX2ltcG9ydF9fPWltcG9ydF91dGlsLl9faW1wb3J0X18pCisKKyhGcm96ZW5fUGFyZW50VGVzdHMsCisgU291cmNlX1BhcmVudFRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKFBhcmVudE1vZHVsZVRlc3RzLCBfX2ltcG9ydF9fPXV0aWwuX19pbXBvcnRfXykKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weQppbmRleCAxMjc0ZjhjLi5iMzJhODc2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weQpAQCAtMSwxMSArMSwxMSBAQAogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCiAKIGltcG9ydGxpYiA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKIGltcG9ydCBvcwogaW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxlCiBmcm9tIHR5cGVzIGltcG9ydCBNb2R1bGVUeXBlCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3YXJuaW5ncwpAQCAtNTgsNyArNTgsNyBAQAogICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKICAgICAgICAgcGF0aCA9ICc8dGVzdCBwYXRoPicKICAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfc3BlYyhtb2R1bGUpCi0gICAgICAgIGhvb2sgPSBpbXBvcnRfdXRpbC5tb2NrX3BhdGhfaG9vayhwYXRoLCBpbXBvcnRlcj1pbXBvcnRlcikKKyAgICAgICAgaG9vayA9IHV0aWwubW9ja19wYXRoX2hvb2socGF0aCwgaW1wb3J0ZXI9aW1wb3J0ZXIpCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9ob29rcz1baG9va10pOgogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUsIFtwYXRoXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVyLCBpbXBvcnRlcikKQEAgLTgzLDcgKzgzLDcgQEAKICAgICAgICAgcGF0aCA9ICcnCiAgICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JwogICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19zcGVjKG1vZHVsZSkKLSAgICAgICAgaG9vayA9IGltcG9ydF91dGlsLm1vY2tfcGF0aF9ob29rKG9zLmdldGN3ZCgpLCBpbXBvcnRlcj1pbXBvcnRlcikKKyAgICAgICAgaG9vayA9IHV0aWwubW9ja19wYXRoX2hvb2sob3MuZ2V0Y3dkKCksIGltcG9ydGVyPWltcG9ydGVyKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W3BhdGhdLCBwYXRoX2hvb2tzPVtob29rXSk6CiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVyLCBpbXBvcnRlcikKQEAgLTk4LDcgKzk4LDcgQEAKICAgICAgICAgbmV3X3BhdGhfaW1wb3J0ZXJfY2FjaGUucG9wKE5vbmUsIE5vbmUpCiAgICAgICAgIG5ld19wYXRoX2hvb2tzID0gW3ppcGltcG9ydC56aXBpbXBvcnRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuRmlsZUZpbmRlci5wYXRoX2hvb2soCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc2VsZi5pbXBvcnRsaWIuX2Jvb3RzdHJhcC5fZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKSldCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc2VsZi5pbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKSldCiAgICAgICAgIG1pc3NpbmcgPSBvYmplY3QoKQogICAgICAgICBlbWFpbCA9IHN5cy5tb2R1bGVzLnBvcCgnZW1haWwnLCBtaXNzaW5nKQogICAgICAgICB0cnk6CkBAIC0xMTIsOCArMTEyLDgxIEBACiAgICAgICAgICAgICBpZiBlbWFpbCBpcyBub3QgbWlzc2luZzoKICAgICAgICAgICAgICAgICBzeXMubW9kdWxlc1snZW1haWwnXSA9IGVtYWlsCiAKLUZyb3plbl9GaW5kZXJUZXN0cywgU291cmNlX0ZpbmRlclRlc3RzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIEZpbmRlclRlc3RzLCBpbXBvcnRsaWI9aW1wb3J0bGliLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorICAgIGRlZiB0ZXN0X2ZpbmRlcl93aXRoX2ZpbmRfbW9kdWxlKHNlbGYpOgorICAgICAgICBjbGFzcyBUZXN0RmluZGVyOgorICAgICAgICAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50b19yZXR1cm4KKyAgICAgICAgZmFpbGluZ19maW5kZXIgPSBUZXN0RmluZGVyKCkKKyAgICAgICAgZmFpbGluZ19maW5kZXIudG9fcmV0dXJuID0gTm9uZQorICAgICAgICBwYXRoID0gJ3Rlc3RpbmcgcGF0aCcKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBmYWlsaW5nX2ZpbmRlcn0pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCd3aGF0ZXZlcicsIFtwYXRoXSkpCisgICAgICAgIHN1Y2Nlc3NfZmluZGVyID0gVGVzdEZpbmRlcigpCisgICAgICAgIHN1Y2Nlc3NfZmluZGVyLnRvX3JldHVybiA9IF9fbG9hZGVyX18KKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBzdWNjZXNzX2ZpbmRlcn0pOgorICAgICAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCd3aGF0ZXZlcicsIFtwYXRoXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGVjLmxvYWRlciwgX19sb2FkZXJfXykKKworICAgIGRlZiB0ZXN0X2ZpbmRlcl93aXRoX2ZpbmRfbG9hZGVyKHNlbGYpOgorICAgICAgICBjbGFzcyBUZXN0RmluZGVyOgorICAgICAgICAgICAgbG9hZGVyID0gTm9uZQorICAgICAgICAgICAgcG9ydGlvbnMgPSBbXQorICAgICAgICAgICAgZGVmIGZpbmRfbG9hZGVyKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5sb2FkZXIsIHNlbGYucG9ydGlvbnMKKyAgICAgICAgcGF0aCA9ICd0ZXN0aW5nIHBhdGgnCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogVGVzdEZpbmRlcigpfSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZSgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ3doYXRldmVyJywgW3BhdGhdKSkKKyAgICAgICAgc3VjY2Vzc19maW5kZXIgPSBUZXN0RmluZGVyKCkKKyAgICAgICAgc3VjY2Vzc19maW5kZXIubG9hZGVyID0gX19sb2FkZXJfXworICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IHN1Y2Nlc3NfZmluZGVyfSk6CisgICAgICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ3doYXRldmVyJywgW3BhdGhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwZWMubG9hZGVyLCBfX2xvYWRlcl9fKQorCisgICAgZGVmIHRlc3RfZmluZGVyX3dpdGhfZmluZF9zcGVjKHNlbGYpOgorICAgICAgICBjbGFzcyBUZXN0RmluZGVyOgorICAgICAgICAgICAgc3BlYyA9IE5vbmUKKyAgICAgICAgICAgIGRlZiBmaW5kX3NwZWMoc2VsZiwgZnVsbG5hbWUsIHRhcmdldD1Ob25lKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zcGVjCisgICAgICAgIHBhdGggPSAndGVzdGluZyBwYXRoJworICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IFRlc3RGaW5kZXIoKX0pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCd3aGF0ZXZlcicsIFtwYXRoXSkpCisgICAgICAgIHN1Y2Nlc3NfZmluZGVyID0gVGVzdEZpbmRlcigpCisgICAgICAgIHN1Y2Nlc3NfZmluZGVyLnNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCd3aGF0ZXZlcicsIF9fbG9hZGVyX18pCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogc3VjY2Vzc19maW5kZXJ9KToKKyAgICAgICAgICAgIGdvdCA9IHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCd3aGF0ZXZlcicsIFtwYXRoXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnb3QsIHN1Y2Nlc3NfZmluZGVyLnNwZWMpCisKKyAgICBkZWYgdGVzdF9kZWxldGVkX2N3ZChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjI4MzQKKyAgICAgICAgb2xkX2RpciA9IG9zLmdldGN3ZCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jaGRpciwgb2xkX2RpcikKKyAgICAgICAgbmV3X2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5jaGRpcihuZXdfZGlyKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnJtZGlyKG5ld19kaXIpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAjIEVJTlZBTCBvbiBTb2xhcmlzLCBFQlVTWSBvbiBBSVgsIEVOT1RFTVBUWSBvbiBXaW5kb3dzCisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgicGxhdGZvcm0gZG9lcyBub3QgYWxsb3cgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBkZWxldGlvbiBvZiB0aGUgY3dkIikKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgb3MuY2hkaXIob2xkX2RpcikKKyAgICAgICAgICAgIG9zLnJtZGlyKG5ld19kaXIpCisgICAgICAgICAgICByYWlzZQorCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aD1bJyddKToKKyAgICAgICAgICAgICMgRG8gbm90IHdhbnQgRmlsZU5vdEZvdW5kRXJyb3IgcmFpc2VkLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ3doYXRldmVyJykpCisKKworCisKKyhGcm96ZW5fRmluZGVyVGVzdHMsCisgU291cmNlX0ZpbmRlclRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKEZpbmRlclRlc3RzLCBpbXBvcnRsaWI9aW1wb3J0bGliLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIFBhdGhFbnRyeUZpbmRlclRlc3RzOgpAQCAtMTM2LDggKzIwOSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfaG9va3M9W0ZpbmRlcl0pOgogICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ2ltcG9ydGxpYicpCiAKLUZyb3plbl9QRUZUZXN0cywgU291cmNlX1BFRlRlc3RzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFBhdGhFbnRyeUZpbmRlclRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX1BFRlRlc3RzLAorIFNvdXJjZV9QRUZUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChQYXRoRW50cnlGaW5kZXJUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weQppbmRleCBiMjE2ZTljLi4yOGJiNmY3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weQpAQCAtMSw2ICsxLDUgQEAKICIiIlRlc3QgcmVsYXRpdmUgaW1wb3J0cyAoUEVQIDMyOCkuIiIiCiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCkBAIC0yMDgsOCArMjA3LDEwIEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgogICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCdzeXMnLCBsZXZlbD0xKQogCi1Gcm96ZW5fUmVsYXRpdmVJbXBvcnRzLCBTb3VyY2VfUmVsYXRpdmVJbXBvcnRzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFJlbGF0aXZlSW1wb3J0cywgX19pbXBvcnRfXz1pbXBvcnRfdXRpbC5fX2ltcG9ydF9fKQorCisoRnJvemVuX1JlbGF0aXZlSW1wb3J0cywKKyBTb3VyY2VfUmVsYXRpdmVJbXBvcnRzCisgKSA9IHV0aWwudGVzdF9ib3RoKFJlbGF0aXZlSW1wb3J0cywgX19pbXBvcnRfXz11dGlsLl9faW1wb3J0X18pCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdXRpbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNiNDkwZi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3V0aWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1mcm9tIC4uIGltcG9ydCB1dGlsCi0KLWZyb3plbl9pbXBvcnRsaWIsIHNvdXJjZV9pbXBvcnRsaWIgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpCi0KLWltcG9ydCBidWlsdGlucwotaW1wb3J0IGZ1bmN0b29scwotaW1wb3J0IGltcG9ydGxpYgotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotX19pbXBvcnRfXyA9IHN0YXRpY21ldGhvZChidWlsdGlucy5fX2ltcG9ydF9fKSwgc3RhdGljbWV0aG9kKHNvdXJjZV9pbXBvcnRsaWIuX19pbXBvcnRfXykKLQotCi1kZWYgbW9ja19wYXRoX2hvb2soKmVudHJpZXMsIGltcG9ydGVyKToKLSAgICAiIiJBIG1vY2sgc3lzLnBhdGhfaG9va3MgZW50cnkuIiIiCi0gICAgZGVmIGhvb2soZW50cnkpOgotICAgICAgICBpZiBlbnRyeSBub3QgaW4gZW50cmllczoKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCi0gICAgICAgIHJldHVybiBpbXBvcnRlcgotICAgIHJldHVybiBob29rCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQppbmRleCBlZmQzMTQ2Li5jMjc0YjM4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKQEAgLTEsNiArMSw1IEBACiAiIiJUZXN0IGNhc2Utc2Vuc2l0aXZpdHkgKFBFUCAyMzUpLiIiIgogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCiAKIGltcG9ydGxpYiA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCkBAIC0zMiw3ICszMSw3IEBACiAgICAgICAgICIiIkxvb2sgZm9yIGEgbW9kdWxlIHdpdGggbWF0Y2hpbmcgYW5kIG5vbi1tYXRjaGluZyBzZW5zaXRpdml0eS4iIiIKICAgICAgICAgc2Vuc2l0aXZlX3BrZyA9ICdzZW5zaXRpdmUuezB9Jy5mb3JtYXQoc2VsZi5uYW1lKQogICAgICAgICBpbnNlbnNpdGl2ZV9wa2cgPSAnaW5zZW5zaXRpdmUuezB9Jy5mb3JtYXQoc2VsZi5uYW1lLmxvd2VyKCkpCi0gICAgICAgIGNvbnRleHQgPSBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhpbnNlbnNpdGl2ZV9wa2csIHNlbnNpdGl2ZV9wa2cpCisgICAgICAgIGNvbnRleHQgPSB1dGlsLmNyZWF0ZV9tb2R1bGVzKGluc2Vuc2l0aXZlX3BrZywgc2Vuc2l0aXZlX3BrZykKICAgICAgICAgd2l0aCBjb250ZXh0IGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBzZW5zaXRpdmVfcGF0aCA9IG9zLnBhdGguam9pbihtYXBwaW5nWycucm9vdCddLCAnc2Vuc2l0aXZlJykKICAgICAgICAgICAgIGluc2Vuc2l0aXZlX3BhdGggPSBvcy5wYXRoLmpvaW4obWFwcGluZ1snLnJvb3QnXSwgJ2luc2Vuc2l0aXZlJykKQEAgLTQzLDcgKzQyLDcgQEAKICAgICBkZWYgdGVzdF9zZW5zaXRpdmUoc2VsZik6CiAgICAgICAgIHdpdGggdGVzdF9zdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CiAgICAgICAgICAgICBlbnYudW5zZXQoJ1BZVEhPTkNBU0VPSycpCi0gICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgaW4gc2VsZi5pbXBvcnRsaWIuX2Jvb3RzdHJhcC5fb3MuZW52aXJvbjoKKyAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBpbiBzZWxmLmltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLl9vcy5lbnZpcm9uOgogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ29zLmVudmlyb24gY2hhbmdlcyBub3QgcmVmbGVjdGVkIGluICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfb3MuZW52aXJvbicpCiAgICAgICAgICAgICBzZW5zaXRpdmUsIGluc2Vuc2l0aXZlID0gc2VsZi5zZW5zaXRpdml0eV90ZXN0KCkKQEAgLTU0LDcgKzUzLDcgQEAKICAgICBkZWYgdGVzdF9pbnNlbnNpdGl2ZShzZWxmKToKICAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKICAgICAgICAgICAgIGVudi5zZXQoJ1BZVEhPTkNBU0VPSycsICcxJykKLSAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBub3QgaW4gc2VsZi5pbXBvcnRsaWIuX2Jvb3RzdHJhcC5fb3MuZW52aXJvbjoKKyAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBub3QgaW4gc2VsZi5pbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fb3MuZW52aXJvbjoKICAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdvcy5lbnZpcm9uIGNoYW5nZXMgbm90IHJlZmxlY3RlZCBpbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX29zLmVudmlyb24nKQogICAgICAgICAgICAgc2Vuc2l0aXZlLCBpbnNlbnNpdGl2ZSA9IHNlbGYuc2Vuc2l0aXZpdHlfdGVzdCgpCkBAIC02MywyMCArNjIsMjggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGluc2Vuc2l0aXZlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLm5hbWUsIGluc2Vuc2l0aXZlLmdldF9maWxlbmFtZShzZWxmLm5hbWUpKQogCisKIGNsYXNzIENhc2VTZW5zaXRpdml0eVRlc3RQRVAzMDIoQ2FzZVNlbnNpdGl2aXR5VGVzdCk6CiAgICAgZGVmIGZpbmQoc2VsZiwgZmluZGVyKToKICAgICAgICAgcmV0dXJuIGZpbmRlci5maW5kX21vZHVsZShzZWxmLm5hbWUpCiAKLUZyb3plbl9DYXNlU2Vuc2l0aXZpdHlUZXN0UEVQMzAyLCBTb3VyY2VfQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDMwMiA9IHV0aWwudGVzdF9ib3RoKAotICAgIENhc2VTZW5zaXRpdml0eVRlc3RQRVAzMDIsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDMwMiwKKyBTb3VyY2VfQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDMwMgorICkgPSB1dGlsLnRlc3RfYm90aChDYXNlU2Vuc2l0aXZpdHlUZXN0UEVQMzAyLCBpbXBvcnRsaWI9aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCiAKIGNsYXNzIENhc2VTZW5zaXRpdml0eVRlc3RQRVA0NTEoQ2FzZVNlbnNpdGl2aXR5VGVzdCk6CiAgICAgZGVmIGZpbmQoc2VsZiwgZmluZGVyKToKICAgICAgICAgZm91bmQgPSBmaW5kZXIuZmluZF9zcGVjKHNlbGYubmFtZSkKICAgICAgICAgcmV0dXJuIGZvdW5kLmxvYWRlciBpZiBmb3VuZCBpcyBub3QgTm9uZSBlbHNlIGZvdW5kCiAKLUZyb3plbl9DYXNlU2Vuc2l0aXZpdHlUZXN0UEVQNDUxLCBTb3VyY2VfQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDQ1MSA9IHV0aWwudGVzdF9ib3RoKAotICAgIENhc2VTZW5zaXRpdml0eVRlc3RQRVA0NTEsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDQ1MSwKKyBTb3VyY2VfQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDQ1MQorICkgPSB1dGlsLnRlc3RfYm90aChDYXNlU2Vuc2l0aXZpdHlUZXN0UEVQNDUxLCBpbXBvcnRsaWI9aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CmluZGV4IDJkNDE1ZjkuLjczZjRjNjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CkBAIC0xLDYgKzEsNSBAQAogZnJvbSAuLiBpbXBvcnQgYWJjCiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKIAogaW1wb3J0bGliID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKQogaW1wb3J0bGliX2FiYyA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLmFiYycpCkBAIC03MSw3ICs3MCw3IEBACiAKICAgICAjIFtiYXNpY10KICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCkBAIC04Myw3ICs4Miw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQogCiAgICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3BrZy5fX2luaXRfXycpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3BrZy5fX2luaXRfXycpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfcGtnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nWydfcGtnLl9faW5pdF9fJ10pCiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CkBAIC05OCw3ICs5Nyw3IEBACiAKIAogICAgIGRlZiB0ZXN0X2xhY2tpbmdfcGFyZW50KHNlbGYpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfcGtnLl9faW5pdF9fJywgJ19wa2cubW9kJylhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ19wa2cuX19pbml0X18nLCAnX3BrZy5tb2QnKWFzIG1hcHBpbmc6CiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfcGtnLm1vZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1snX3BrZy5tb2QnXSkKICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKQEAgLTExNSw3ICsxMTQsNyBAQAogICAgICAgICByZXR1cm4gbGFtYmRhIG5hbWU6IGZ4bihuYW1lKSArIDEKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9yZXVzZShzZWxmKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKQEAgLTEzOSw3ICsxMzgsNyBAQAogICAgICAgICBhdHRyaWJ1dGVzID0gKCdfX2ZpbGVfXycsICdfX3BhdGhfXycsICdfX3BhY2thZ2VfXycpCiAgICAgICAgIHZhbHVlID0gJzx0ZXN0PicKICAgICAgICAgbmFtZSA9ICdfdGVtcCcKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhuYW1lKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMobmFtZSkgYXMgbWFwcGluZzoKICAgICAgICAgICAgIG9yaWdfbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICAgICAgZm9yIGF0dHIgaW4gYXR0cmlidXRlczoKICAgICAgICAgICAgICAgICBzZXRhdHRyKG9yaWdfbW9kdWxlLCBhdHRyLCB2YWx1ZSkKQEAgLTE1OSw3ICsxNTgsNyBAQAogCiAgICAgIyBbc3ludGF4IGVycm9yXQogICAgIGRlZiB0ZXN0X2JhZF9zeW50YXgoc2VsZik6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1snX3RlbXAnXSwgJ3cnKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoJz0nKQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQpAQCAtMTkwLDExICsxODksMTEgQEAKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHB5Y2FjaGUpOgogICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUocHljYWNoZSkKIAotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF90aW1lc3RhbXBfb3ZlcmZsb3coc2VsZik6CiAgICAgICAgICMgV2hlbiBhIG1vZGlmaWNhdGlvbiB0aW1lc3RhbXAgaXMgbGFyZ2VyIHRoYW4gMioqMzIsIGl0IHNob3VsZCBiZQogICAgICAgICAjIHRydW5jYXRlZCByYXRoZXIgdGhhbiByYWlzZSBhbiBPdmVyZmxvd0Vycm9yLgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgc291cmNlID0gbWFwcGluZ1snX3RlbXAnXQogICAgICAgICAgICAgY29tcGlsZWQgPSBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc291cmNlKQogICAgICAgICAgICAgd2l0aCBvcGVuKHNvdXJjZSwgJ3cnKSBhcyBmOgpAQCAtMjM2LDkgKzIzNSwxMSBAQAogICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgICAgIGxvYWRlci5sb2FkX21vZHVsZSgnYmFkIG5hbWUnKQogCi1Gcm96ZW5fU2ltcGxlVGVzdCwgU291cmNlX1NpbXBsZVRlc3QgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgU2ltcGxlVGVzdCwgaW1wb3J0bGliPWltcG9ydGxpYiwgbWFjaGluZXJ5PW1hY2hpbmVyeSwgYWJjPWltcG9ydGxpYl9hYmMsCi0gICAgICAgIHV0aWw9aW1wb3J0bGliX3V0aWwpCisKKyhGcm96ZW5fU2ltcGxlVGVzdCwKKyBTb3VyY2VfU2ltcGxlVGVzdAorICkgPSB1dGlsLnRlc3RfYm90aChTaW1wbGVUZXN0LCBpbXBvcnRsaWI9aW1wb3J0bGliLCBtYWNoaW5lcnk9bWFjaGluZXJ5LAorICAgICAgICAgICAgICAgICAgICBhYmM9aW1wb3J0bGliX2FiYywgdXRpbD1pbXBvcnRsaWJfdXRpbCkKIAogCiBjbGFzcyBCYWRCeXRlY29kZVRlc3Q6CkBAIC0yNzUsNDUgKzI3Niw0NSBAQAogICAgICAgICByZXR1cm4gYnl0ZWNvZGVfcGF0aAogCiAgICAgZGVmIF90ZXN0X2VtcHR5X2ZpbGUoc2VsZiwgdGVzdCwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBiY19wYXRoID0gc2VsZi5tYW5pcHVsYXRlX2J5dGVjb2RlKCdfdGVtcCcsIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGInJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIHRlc3QoJ190ZW1wJywgbWFwcGluZywgYmNfcGF0aCkKIAotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgX3Rlc3RfcGFydGlhbF9tYWdpYyhzZWxmLCB0ZXN0LCAqLCBkZWxfc291cmNlPUZhbHNlKToKICAgICAgICAgIyBXaGVuIHRoZWlyIGFyZSBsZXNzIHRoYW4gNCBieXRlcyB0byBhIC5weWMsIHJlZ2VuZXJhdGUgaXQgaWYKICAgICAgICAgIyBwb3NzaWJsZSwgZWxzZSByYWlzZSBJbXBvcnRFcnJvci4KLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJjX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsX3NvdXJjZT1kZWxfc291cmNlKQogICAgICAgICAgICAgdGVzdCgnX3RlbXAnLCBtYXBwaW5nLCBiY19wYXRoKQogCiAgICAgZGVmIF90ZXN0X21hZ2ljX29ubHkoc2VsZiwgdGVzdCwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBiY19wYXRoID0gc2VsZi5tYW5pcHVsYXRlX2J5dGVjb2RlKCdfdGVtcCcsIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGJjWzo0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIHRlc3QoJ190ZW1wJywgbWFwcGluZywgYmNfcGF0aCkKIAogICAgIGRlZiBfdGVzdF9wYXJ0aWFsX3RpbWVzdGFtcChzZWxmLCB0ZXN0LCAqLCBkZWxfc291cmNlPUZhbHNlKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJjX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsX3NvdXJjZT1kZWxfc291cmNlKQogICAgICAgICAgICAgdGVzdCgnX3RlbXAnLCBtYXBwaW5nLCBiY19wYXRoKQogCiAgICAgZGVmIF90ZXN0X3BhcnRpYWxfc2l6ZShzZWxmLCB0ZXN0LCAqLCBkZWxfc291cmNlPUZhbHNlKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJjX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjExXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIHRlc3QoJ190ZW1wJywgbWFwcGluZywgYmNfcGF0aCkKIAogICAgIGRlZiBfdGVzdF9ub19tYXJzaGFsKHNlbGYsICosIGRlbF9zb3VyY2U9RmFsc2UpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgYmNfcGF0aCA9IHNlbGYubWFuaXB1bGF0ZV9ieXRlY29kZSgnX3RlbXAnLCBtYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6MTJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsX3NvdXJjZT1kZWxfc291cmNlKQpAQCAtMzIyLDcgKzMyMyw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRfKGZpbGVfcGF0aCwgJ190ZW1wJykKIAogICAgIGRlZiBfdGVzdF9ub25fY29kZV9tYXJzaGFsKHNlbGYsICosIGRlbF9zb3VyY2U9RmFsc2UpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IHNlbGYubWFuaXB1bGF0ZV9ieXRlY29kZSgnX3RlbXAnLCBtYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6MTJdICsgbWFyc2hhbC5kdW1wcyhiJ2FiY2QnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKQEAgLTMzMyw3ICszMzQsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucGF0aCwgYnl0ZWNvZGVfcGF0aCkKIAogICAgIGRlZiBfdGVzdF9iYWRfbWFyc2hhbChzZWxmLCAqLCBkZWxfc291cmNlPUZhbHNlKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjEyXSArIGInPHRlc3Q+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKQEAgLTM0MiwxMSArMzQzLDEyIEBACiAgICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRfKGZpbGVfcGF0aCwgJ190ZW1wJykKIAogICAgIGRlZiBfdGVzdF9iYWRfbWFnaWMoc2VsZiwgdGVzdCwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBiY19wYXRoID0gc2VsZi5tYW5pcHVsYXRlX2J5dGVjb2RlKCdfdGVtcCcsIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGInXHgwMFx4MDBceDAwXHgwMCcgKyBiY1s0Ol0pCiAgICAgICAgICAgICB0ZXN0KCdfdGVtcCcsIG1hcHBpbmcsIGJjX3BhdGgpCiAKKwogY2xhc3MgQmFkQnl0ZWNvZGVUZXN0UEVQNDUxKEJhZEJ5dGVjb2RlVGVzdCk6CiAKICAgICBkZWYgaW1wb3J0XyhzZWxmLCBmaWxlLCBtb2R1bGVfbmFtZSk6CkBAIC0zNTUsNiArMzU3LDcgQEAKICAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gc2VsZi51dGlsLnNwZWNfZnJvbV9sb2FkZXIobW9kdWxlX25hbWUsIGxvYWRlcikKICAgICAgICAgbG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKIAorCiBjbGFzcyBCYWRCeXRlY29kZVRlc3RQRVAzMDIoQmFkQnl0ZWNvZGVUZXN0KToKIAogICAgIGRlZiBpbXBvcnRfKHNlbGYsIGZpbGUsIG1vZHVsZV9uYW1lKToKQEAgLTM3MSw3ICszNzQsNyBAQAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAgIGNscy5sb2FkZXIgPSBjbHMubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIKIAotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9lbXB0eV9maWxlKHNlbGYpOgogICAgICAgICAjIFdoZW4gYSAucHljIGlzIGVtcHR5LCByZWdlbmVyYXRlIGl0IGlmIHBvc3NpYmxlLCBlbHNlIHJhaXNlCiAgICAgICAgICMgSW1wb3J0RXJyb3IuCkBAIC0zOTAsNyArMzkzLDcgQEAKIAogICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfbWFnaWModGVzdCkKIAotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9tYWdpY19vbmx5KHNlbGYpOgogICAgICAgICAjIFdoZW4gdGhlcmUgaXMgb25seSB0aGUgbWFnaWMgbnVtYmVyLCByZWdlbmVyYXRlIHRoZSAucHljIGlmIHBvc3NpYmxlLAogICAgICAgICAjIGVsc2UgcmFpc2UgRU9GRXJyb3IuCkBAIC00MDEsNyArNDA0LDcgQEAKIAogICAgICAgICBzZWxmLl90ZXN0X21hZ2ljX29ubHkodGVzdCkKIAotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9iYWRfbWFnaWMoc2VsZik6CiAgICAgICAgICMgV2hlbiB0aGUgbWFnaWMgbnVtYmVyIGlzIGRpZmZlcmVudCwgdGhlIGJ5dGVjb2RlIHNob3VsZCBiZQogICAgICAgICAjIHJlZ2VuZXJhdGVkLgpAQCAtNDEzLDcgKzQxNiw3IEBACiAKICAgICAgICAgc2VsZi5fdGVzdF9iYWRfbWFnaWModGVzdCkKIAotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9wYXJ0aWFsX3RpbWVzdGFtcChzZWxmKToKICAgICAgICAgIyBXaGVuIHRoZSB0aW1lc3RhbXAgaXMgcGFydGlhbCwgcmVnZW5lcmF0ZSB0aGUgLnB5YywgZWxzZQogICAgICAgICAjIHJhaXNlIEVPRkVycm9yLgpAQCAtNDI0LDcgKzQyNyw3IEBACiAKICAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX3RpbWVzdGFtcCh0ZXN0KQogCi0gICAgQHNvdXJjZV91dGlsLndyaXRlc19ieXRlY29kZV9maWxlcworICAgIEB1dGlsLndyaXRlc19ieXRlY29kZV9maWxlcwogICAgIGRlZiB0ZXN0X3BhcnRpYWxfc2l6ZShzZWxmKToKICAgICAgICAgIyBXaGVuIHRoZSBzaXplIGlzIHBhcnRpYWwsIHJlZ2VuZXJhdGUgdGhlIC5weWMsIGVsc2UKICAgICAgICAgIyByYWlzZSBFT0ZFcnJvci4KQEAgLTQzNSwyOSArNDM4LDI5IEBACiAKICAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX3NpemUodGVzdCkKIAotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9ub19tYXJzaGFsKHNlbGYpOgogICAgICAgICAjIFdoZW4gdGhlcmUgaXMgb25seSB0aGUgbWFnaWMgbnVtYmVyIGFuZCB0aW1lc3RhbXAsIHJhaXNlIEVPRkVycm9yLgogICAgICAgICBzZWxmLl90ZXN0X25vX21hcnNoYWwoKQogCi0gICAgQHNvdXJjZV91dGlsLndyaXRlc19ieXRlY29kZV9maWxlcworICAgIEB1dGlsLndyaXRlc19ieXRlY29kZV9maWxlcwogICAgIGRlZiB0ZXN0X25vbl9jb2RlX21hcnNoYWwoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3Rfbm9uX2NvZGVfbWFyc2hhbCgpCiAgICAgICAgICMgWFhYIEltcG9ydEVycm9yIHdoZW4gc291cmNlbGVzcwogCiAgICAgIyBbYmFkIG1hcnNoYWxdCi0gICAgQHNvdXJjZV91dGlsLndyaXRlc19ieXRlY29kZV9maWxlcworICAgIEB1dGlsLndyaXRlc19ieXRlY29kZV9maWxlcwogICAgIGRlZiB0ZXN0X2JhZF9tYXJzaGFsKHNlbGYpOgogICAgICAgICAjIEJhZCBtYXJzaGFsIGRhdGEgc2hvdWxkIHJhaXNlIGEgVmFsdWVFcnJvci4KICAgICAgICAgc2VsZi5fdGVzdF9iYWRfbWFyc2hhbCgpCiAKICAgICAjIFtiYWQgdGltZXN0YW1wXQotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9vbGRfdGltZXN0YW1wKHNlbGYpOgogICAgICAgICAjIFdoZW4gdGhlIHRpbWVzdGFtcCBpcyBvbGRlciB0aGFuIHRoZSBzb3VyY2UsIGJ5dGVjb2RlIHNob3VsZCBiZQogICAgICAgICAjIHJlZ2VuZXJhdGVkLgogICAgICAgICB6ZXJvcyA9IGInXHgwMFx4MDBceDAwXHgwMCcKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgd2l0aCBvcGVuKGJ5dGVjb2RlX3BhdGgsICdyK2InKSBhcyBieXRlY29kZV9maWxlOgpAQCAtNDcxLDEwICs0NzQsMTAgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVjb2RlX2ZpbGUucmVhZCg0KSwgc291cmNlX3RpbWVzdGFtcCkKIAogICAgICMgW2J5dGVjb2RlIHJlYWQtb25seV0KLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgQHV0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3RfcmVhZF9vbmx5X2J5dGVjb2RlKHNlbGYpOgogICAgICAgICAjIFdoZW4gYnl0ZWNvZGUgaXMgcmVhZC1vbmx5IGJ1dCBzaG91bGQgYmUgcmV3cml0dGVuLCBmYWlsIHNpbGVudGx5LgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgIyBDcmVhdGUgYnl0ZWNvZGUgdGhhdCB3aWxsIG5lZWQgdG8gYmUgcmUtY3JlYXRlZC4KICAgICAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nWydfdGVtcCddKQpAQCAtNDkxLDIxICs0OTQsMjkgQEAKICAgICAgICAgICAgICAgICAjIE1ha2Ugd3JpdGFibGUgZm9yIGV2ZW50dWFsIGNsZWFuLXVwLgogICAgICAgICAgICAgICAgIG9zLmNobW9kKGJ5dGVjb2RlX3BhdGgsIHN0YXQuU19JV1VTUikKIAorCiBjbGFzcyBTb3VyY2VMb2FkZXJCYWRCeXRlY29kZVRlc3RQRVA0NTEoCiAgICAgICAgIFNvdXJjZUxvYWRlckJhZEJ5dGVjb2RlVGVzdCwgQmFkQnl0ZWNvZGVUZXN0UEVQNDUxKToKICAgICBwYXNzCiAKLUZyb3plbl9Tb3VyY2VCYWRCeXRlY29kZVBFUDQ1MSwgU291cmNlX1NvdXJjZUJhZEJ5dGVjb2RlUEVQNDUxID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFNvdXJjZUxvYWRlckJhZEJ5dGVjb2RlVGVzdFBFUDQ1MSwgaW1wb3J0bGliPWltcG9ydGxpYiwgbWFjaGluZXJ5PW1hY2hpbmVyeSwKLSAgICAgICAgYWJjPWltcG9ydGxpYl9hYmMsIHV0aWw9aW1wb3J0bGliX3V0aWwpCisKKyhGcm96ZW5fU291cmNlQmFkQnl0ZWNvZGVQRVA0NTEsCisgU291cmNlX1NvdXJjZUJhZEJ5dGVjb2RlUEVQNDUxCisgKSA9IHV0aWwudGVzdF9ib3RoKFNvdXJjZUxvYWRlckJhZEJ5dGVjb2RlVGVzdFBFUDQ1MSwgaW1wb3J0bGliPWltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSwgYWJjPWltcG9ydGxpYl9hYmMsCisgICAgICAgICAgICAgICAgICAgIHV0aWw9aW1wb3J0bGliX3V0aWwpCisKIAogY2xhc3MgU291cmNlTG9hZGVyQmFkQnl0ZWNvZGVUZXN0UEVQMzAyKAogICAgICAgICBTb3VyY2VMb2FkZXJCYWRCeXRlY29kZVRlc3QsIEJhZEJ5dGVjb2RlVGVzdFBFUDMwMik6CiAgICAgcGFzcwogCi1Gcm96ZW5fU291cmNlQmFkQnl0ZWNvZGVQRVAzMDIsIFNvdXJjZV9Tb3VyY2VCYWRCeXRlY29kZVBFUDMwMiA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBTb3VyY2VMb2FkZXJCYWRCeXRlY29kZVRlc3RQRVAzMDIsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnksCi0gICAgICAgIGFiYz1pbXBvcnRsaWJfYWJjLCB1dGlsPWltcG9ydGxpYl91dGlsKQorCisoRnJvemVuX1NvdXJjZUJhZEJ5dGVjb2RlUEVQMzAyLAorIFNvdXJjZV9Tb3VyY2VCYWRCeXRlY29kZVBFUDMwMgorICkgPSB1dGlsLnRlc3RfYm90aChTb3VyY2VMb2FkZXJCYWRCeXRlY29kZVRlc3RQRVAzMDIsIGltcG9ydGxpYj1pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnksIGFiYz1pbXBvcnRsaWJfYWJjLAorICAgICAgICAgICAgICAgICAgICB1dGlsPWltcG9ydGxpYl91dGlsKQogCiAKIGNsYXNzIFNvdXJjZWxlc3NMb2FkZXJCYWRCeXRlY29kZVRlc3Q6CkBAIC01NjcsMjEgKzU3OCwyOSBAQAogICAgIGRlZiB0ZXN0X25vbl9jb2RlX21hcnNoYWwoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3Rfbm9uX2NvZGVfbWFyc2hhbChkZWxfc291cmNlPVRydWUpCiAKKwogY2xhc3MgU291cmNlbGVzc0xvYWRlckJhZEJ5dGVjb2RlVGVzdFBFUDQ1MShTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0LAogICAgICAgICBCYWRCeXRlY29kZVRlc3RQRVA0NTEpOgogICAgIHBhc3MKIAotRnJvemVuX1NvdXJjZWxlc3NCYWRCeXRlY29kZVBFUDQ1MSwgU291cmNlX1NvdXJjZWxlc3NCYWRCeXRlY29kZVBFUDQ1MSA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0UEVQNDUxLCBpbXBvcnRsaWI9aW1wb3J0bGliLAotICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5LCBhYmM9aW1wb3J0bGliX2FiYywgdXRpbD1pbXBvcnRsaWJfdXRpbCkKKworKEZyb3plbl9Tb3VyY2VsZXNzQmFkQnl0ZWNvZGVQRVA0NTEsCisgU291cmNlX1NvdXJjZWxlc3NCYWRCeXRlY29kZVBFUDQ1MQorICkgPSB1dGlsLnRlc3RfYm90aChTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0UEVQNDUxLCBpbXBvcnRsaWI9aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5LCBhYmM9aW1wb3J0bGliX2FiYywKKyAgICAgICAgICAgICAgICAgICAgdXRpbD1pbXBvcnRsaWJfdXRpbCkKKwogCiBjbGFzcyBTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0UEVQMzAyKFNvdXJjZWxlc3NMb2FkZXJCYWRCeXRlY29kZVRlc3QsCiAgICAgICAgIEJhZEJ5dGVjb2RlVGVzdFBFUDMwMik6CiAgICAgcGFzcwogCi1Gcm96ZW5fU291cmNlbGVzc0JhZEJ5dGVjb2RlUEVQMzAyLCBTb3VyY2VfU291cmNlbGVzc0JhZEJ5dGVjb2RlUEVQMzAyID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFNvdXJjZWxlc3NMb2FkZXJCYWRCeXRlY29kZVRlc3RQRVAzMDIsIGltcG9ydGxpYj1pbXBvcnRsaWIsCi0gICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnksIGFiYz1pbXBvcnRsaWJfYWJjLCB1dGlsPWltcG9ydGxpYl91dGlsKQorCisoRnJvemVuX1NvdXJjZWxlc3NCYWRCeXRlY29kZVBFUDMwMiwKKyBTb3VyY2VfU291cmNlbGVzc0JhZEJ5dGVjb2RlUEVQMzAyCisgKSA9IHV0aWwudGVzdF9ib3RoKFNvdXJjZWxlc3NMb2FkZXJCYWRCeXRlY29kZVRlc3RQRVAzMDIsIGltcG9ydGxpYj1pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnksIGFiYz1pbXBvcnRsaWJfYWJjLAorICAgICAgICAgICAgICAgICAgICB1dGlsPWltcG9ydGxpYl91dGlsKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maW5kZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maW5kZXIucHkKaW5kZXggNDczMjk3Yi4uZjM3MmI4NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmluZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbmRlci5weQpAQCAtMSw2ICsxLDUgQEAKIGZyb20gLi4gaW1wb3J0IGFiYwogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCiAKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKQEAgLTYwLDcgKzU5LDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGlmIGNyZWF0ZSBpcyBOb25lOgogICAgICAgICAgICAgY3JlYXRlID0ge3Rlc3R9Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoKmNyZWF0ZSkgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCpjcmVhdGUpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBpZiBjb21waWxlXzoKICAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBjb21waWxlXzoKICAgICAgICAgICAgICAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKG1hcHBpbmdbbmFtZV0pCkBAIC0xMDAsMTQgKzk5LDE0IEBACiAKICAgICAjIFtzdWIgbW9kdWxlXQogICAgIGRlZiB0ZXN0X21vZHVsZV9pbl9wYWNrYWdlKHNlbGYpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLnN1YicpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5zdWInKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgcGtnX2RpciA9IG9zLnBhdGguZGlybmFtZShtYXBwaW5nWydwa2cuX19pbml0X18nXSkKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuaW1wb3J0Xyhwa2dfZGlyLCAncGtnLnN1YicpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihsb2FkZXIsICdsb2FkX21vZHVsZScpKQogCiAgICAgIyBbc3ViIHBhY2thZ2VdCiAgICAgZGVmIHRlc3RfcGFja2FnZV9pbl9wYWNrYWdlKHNlbGYpOgotICAgICAgICBjb250ZXh0ID0gc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cuc3ViLl9faW5pdF9fJykKKyAgICAgICAgY29udGV4dCA9IHV0aWwuY3JlYXRlX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cuc3ViLl9faW5pdF9fJykKICAgICAgICAgd2l0aCBjb250ZXh0IGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5kaXJuYW1lKG1hcHBpbmdbJ3BrZy5fX2luaXRfXyddKQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5pbXBvcnRfKHBrZ19kaXIsICdwa2cuc3ViJykKQEAgLTEyMCw3ICsxMTksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCdfX2luaXRfXycsIGxvYWRlci5nZXRfZmlsZW5hbWUobmFtZSkpCiAKICAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdibGFoJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdibGFoJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIG5vdGhpbmcgPSBzZWxmLmltcG9ydF8obWFwcGluZ1snLnJvb3QnXSwgJ3NkZnNhZHNhZGYnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobm90aGluZykKIApAQCAtMTQ3LDcgKzE0Niw3IEBACiAgICAgIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNDg0NgogICAgIGRlZiB0ZXN0X2Rpcl9yZW1vdmFsX2hhbmRsaW5nKHNlbGYpOgogICAgICAgICBtb2QgPSAnbW9kJwotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG1vZCkgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKG1vZCkgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGZpbmRlciA9IHNlbGYuZ2V0X2ZpbmRlcihtYXBwaW5nWycucm9vdCddKQogICAgICAgICAgICAgZm91bmQgPSBzZWxmLl9maW5kKGZpbmRlciwgJ21vZCcsIGxvYWRlcl9vbmx5PVRydWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmb3VuZCkKQEAgLTE5Niw4ICsxOTUsMTAgQEAKICAgICAgICAgc3BlYyA9IGZpbmRlci5maW5kX3NwZWMobmFtZSkKICAgICAgICAgcmV0dXJuIHNwZWMubG9hZGVyIGlmIHNwZWMgaXMgbm90IE5vbmUgZWxzZSBzcGVjCiAKLUZyb3plbl9GaW5kZXJUZXN0c1BFUDQ1MSwgU291cmNlX0ZpbmRlclRlc3RzUEVQNDUxID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIEZpbmRlclRlc3RzUEVQNDUxLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0ZpbmRlclRlc3RzUEVQNDUxLAorIFNvdXJjZV9GaW5kZXJUZXN0c1BFUDQ1MQorICkgPSB1dGlsLnRlc3RfYm90aChGaW5kZXJUZXN0c1BFUDQ1MSwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBGaW5kZXJUZXN0c1BFUDQyMChGaW5kZXJUZXN0cyk6CkBAIC0yMTAsOCArMjExLDEwIEBACiAgICAgICAgICAgICBsb2FkZXJfcG9ydGlvbnMgPSBmaW5kZXIuZmluZF9sb2FkZXIobmFtZSkKICAgICAgICAgICAgIHJldHVybiBsb2FkZXJfcG9ydGlvbnNbMF0gaWYgbG9hZGVyX29ubHkgZWxzZSBsb2FkZXJfcG9ydGlvbnMKIAotRnJvemVuX0ZpbmRlclRlc3RzUEVQNDIwLCBTb3VyY2VfRmluZGVyVGVzdHNQRVA0MjAgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgRmluZGVyVGVzdHNQRVA0MjAsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fRmluZGVyVGVzdHNQRVA0MjAsCisgU291cmNlX0ZpbmRlclRlc3RzUEVQNDIwCisgKSA9IHV0aWwudGVzdF9ib3RoKEZpbmRlclRlc3RzUEVQNDIwLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIEZpbmRlclRlc3RzUEVQMzAyKEZpbmRlclRlc3RzKToKQEAgLTIyMyw5ICsyMjYsMTAgQEAKICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgcmV0dXJuIGZpbmRlci5maW5kX21vZHVsZShuYW1lKQogCi1Gcm96ZW5fRmluZGVyVGVzdHNQRVAzMDIsIFNvdXJjZV9GaW5kZXJUZXN0c1BFUDMwMiA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBGaW5kZXJUZXN0c1BFUDMwMiwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAorKEZyb3plbl9GaW5kZXJUZXN0c1BFUDMwMiwKKyBTb3VyY2VfRmluZGVyVGVzdHNQRVAzMDIKKyApID0gdXRpbC50ZXN0X2JvdGgoRmluZGVyVGVzdHNQRVAzMDIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQppbmRleCA5MmRhNzcyLi5lNmEyNDE1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5CkBAIC0xLDUgKzEsNCBAQAogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCiAKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKQEAgLTE1LDcgKzE0LDcgQEAKICAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUykpCiAKICAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdkdW1teScpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnZHVtbXknKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKShtYXBwaW5nWycucm9vdCddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaW5kX21vZHVsZScpKQogCkBAIC0yMyw3ICsyMiwxMCBAQAogICAgICAgICAjIFRoZSBlbXB0eSBzdHJpbmcgcmVwcmVzZW50cyB0aGUgY3dkLgogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzZWxmLnBhdGhfaG9vaygpKCcnKSwgJ2ZpbmRfbW9kdWxlJykpCiAKLUZyb3plbl9QYXRoSG9va1Rlc3QsIFNvdXJjZV9QYXRoSG9va3Rlc3QgPSB1dGlsLnRlc3RfYm90aChQYXRoSG9va1Rlc3QsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fUGF0aEhvb2tUZXN0LAorIFNvdXJjZV9QYXRoSG9va3Rlc3QKKyApID0gdXRpbC50ZXN0X2JvdGgoUGF0aEhvb2tUZXN0LCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKaW5kZXggYzYyZGZhMS4uYjYwNGFmYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQpAQCAtMSw1ICsxLDQgQEAKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAogCiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCkBAIC0zNyw3ICszNiw3IEBACiAgICAgbW9kdWxlX25hbWUgPSAnX3RlbXAnCiAKICAgICBkZWYgcnVuX3Rlc3Qoc2VsZiwgc291cmNlKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhzZWxmLm1vZHVsZV9uYW1lKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoc2VsZi5tb2R1bGVfbmFtZSkgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHdpdGggb3BlbihtYXBwaW5nW3NlbGYubW9kdWxlX25hbWVdLCAnd2InKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoc291cmNlKQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcihzZWxmLm1vZHVsZV9uYW1lLApAQCAtODksNiArODgsNyBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKICAgICAgICAgICAgIHNlbGYucnVuX3Rlc3Qoc291cmNlKQogCisKIGNsYXNzIEVuY29kaW5nVGVzdFBFUDQ1MShFbmNvZGluZ1Rlc3QpOgogCiAgICAgZGVmIGxvYWQoc2VsZiwgbG9hZGVyKToKQEAgLTk3LDggKzk3LDExIEBACiAgICAgICAgIGxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCiAgICAgICAgIHJldHVybiBtb2R1bGUKIAotRnJvemVuX0VuY29kaW5nVGVzdFBFUDQ1MSwgU291cmNlX0VuY29kaW5nVGVzdFBFUDQ1MSA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBFbmNvZGluZ1Rlc3RQRVA0NTEsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fRW5jb2RpbmdUZXN0UEVQNDUxLAorIFNvdXJjZV9FbmNvZGluZ1Rlc3RQRVA0NTEKKyApID0gdXRpbC50ZXN0X2JvdGgoRW5jb2RpbmdUZXN0UEVQNDUxLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCiAKIGNsYXNzIEVuY29kaW5nVGVzdFBFUDMwMihFbmNvZGluZ1Rlc3QpOgogCkBAIC0xMDcsOCArMTEwLDEwIEBACiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHJldHVybiBsb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5tb2R1bGVfbmFtZSkKIAotRnJvemVuX0VuY29kaW5nVGVzdFBFUDMwMiwgU291cmNlX0VuY29kaW5nVGVzdFBFUDMwMiA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBFbmNvZGluZ1Rlc3RQRVAzMDIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fRW5jb2RpbmdUZXN0UEVQMzAyLAorIFNvdXJjZV9FbmNvZGluZ1Rlc3RQRVAzMDIKKyApID0gdXRpbC50ZXN0X2JvdGgoRW5jb2RpbmdUZXN0UEVQMzAyLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIExpbmVFbmRpbmdUZXN0OgpAQCAtMTIwLDcgKzEyNSw3IEBACiAgICAgICAgIG1vZHVsZV9uYW1lID0gJ190ZW1wJwogICAgICAgICBzb3VyY2VfbGluZXMgPSBbYiJhID0gNDIiLCBiImIgPSAtMTMiLCBiJyddCiAgICAgICAgIHNvdXJjZSA9IGxpbmVfZW5kaW5nLmpvaW4oc291cmNlX2xpbmVzKQotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG1vZHVsZV9uYW1lKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMobW9kdWxlX25hbWUpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1ttb2R1bGVfbmFtZV0sICd3YicpIGFzIGZpbGU6CiAgICAgICAgICAgICAgICAgZmlsZS53cml0ZShzb3VyY2UpCiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKG1vZHVsZV9uYW1lLApAQCAtMTM5LDYgKzE0NCw3IEBACiAgICAgZGVmIHRlc3RfbGYoc2VsZik6CiAgICAgICAgIHNlbGYucnVuX3Rlc3QoYidcbicpCiAKKwogY2xhc3MgTGluZUVuZGluZ1Rlc3RQRVA0NTEoTGluZUVuZGluZ1Rlc3QpOgogCiAgICAgZGVmIGxvYWQoc2VsZiwgbG9hZGVyLCBtb2R1bGVfbmFtZSk6CkBAIC0xNDcsOCArMTUzLDExIEBACiAgICAgICAgIGxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCiAgICAgICAgIHJldHVybiBtb2R1bGUKIAotRnJvemVuX0xpbmVFbmRpbmdUZXN0UEVQNDUxLCBTb3VyY2VfTGluZUVuZGluZ1Rlc3RQRVA0NTEgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgTGluZUVuZGluZ1Rlc3RQRVA0NTEsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fTGluZUVuZGluZ1Rlc3RQRVA0NTEsCisgU291cmNlX0xpbmVFbmRpbmdUZXN0UEVQNDUxCisgKSA9IHV0aWwudGVzdF9ib3RoKExpbmVFbmRpbmdUZXN0UEVQNDUxLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCiAKIGNsYXNzIExpbmVFbmRpbmdUZXN0UEVQMzAyKExpbmVFbmRpbmdUZXN0KToKIApAQCAtMTU3LDggKzE2NiwxMCBAQAogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICByZXR1cm4gbG9hZGVyLmxvYWRfbW9kdWxlKG1vZHVsZV9uYW1lKQogCi1Gcm96ZW5fTGluZUVuZGluZ1Rlc3RQRVAzMDIsIFNvdXJjZV9MaW5lRW5kaW5nVGVzdFBFUDMwMiA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBMaW5lRW5kaW5nVGVzdFBFUDMwMiwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKworKEZyb3plbl9MaW5lRW5kaW5nVGVzdFBFUDMwMiwKKyBTb3VyY2VfTGluZUVuZGluZ1Rlc3RQRVAzMDIKKyApID0gdXRpbC50ZXN0X2JvdGgoTGluZUVuZGluZ1Rlc3RQRVAzMDIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzY2QyNWEuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3V0aWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi1mcm9tIC4uIGltcG9ydCB1dGlsCi1pbXBvcnQgY29udGV4dGxpYgotaW1wb3J0IGVycm5vCi1pbXBvcnQgZnVuY3Rvb2xzCi1pbXBvcnQgb3MKLWltcG9ydCBvcy5wYXRoCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGVtcGZpbGUKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCi0KLWRlZiB3cml0ZXNfYnl0ZWNvZGVfZmlsZXMoZnhuKToKLSAgICAiIiJEZWNvcmF0b3IgdG8gcHJvdGVjdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBmcm9tIG11dGF0aW9uIGFuZCB0byBza2lwCi0gICAgdGVzdHMgdGhhdCByZXF1aXJlIGl0IHRvIGJlIHNldCB0byBGYWxzZS4iIiIKLSAgICBpZiBzeXMuZG9udF93cml0ZV9ieXRlY29kZToKLSAgICAgICAgcmV0dXJuIGxhbWJkYSAqYXJncywgKiprd2FyZ3M6IE5vbmUKLSAgICBAZnVuY3Rvb2xzLndyYXBzKGZ4bikKLSAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBvcmlnaW5hbCA9IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCi0gICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gRmFsc2UKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdG9fcmV0dXJuID0gZnhuKCphcmdzLCAqKmt3YXJncykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gb3JpZ2luYWwKLSAgICAgICAgcmV0dXJuIHRvX3JldHVybgotICAgIHJldHVybiB3cmFwcGVyCi0KLQotZGVmIGVuc3VyZV9ieXRlY29kZV9wYXRoKGJ5dGVjb2RlX3BhdGgpOgotICAgICIiIkVuc3VyZSB0aGF0IHRoZSBfX3B5Y2FjaGVfXyBkaXJlY3RvcnkgZm9yIFBFUCAzMTQ3IHB5YyBmaWxlIGV4aXN0cy4KLQotICAgIDpwYXJhbSBieXRlY29kZV9wYXRoOiBGaWxlIHN5c3RlbSBwYXRoIHRvIFBFUCAzMTQ3IHB5YyBmaWxlLgotICAgICIiIgotICAgIHRyeToKLSAgICAgICAgb3MubWtkaXIob3MucGF0aC5kaXJuYW1lKGJ5dGVjb2RlX3BhdGgpKQotICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOgotICAgICAgICBpZiBlcnJvci5lcnJubyAhPSBlcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICByYWlzZQotCi0KLUBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCi1kZWYgY3JlYXRlX21vZHVsZXMoKm5hbWVzKToKLSAgICAiIiJUZW1wb3JhcmlseSBjcmVhdGUgZWFjaCBuYW1lZCBtb2R1bGUgd2l0aCBhbiBhdHRyaWJ1dGUgKG5hbWVkICdhdHRyJykKLSAgICB0aGF0IGNvbnRhaW5zIHRoZSBuYW1lIHBhc3NlZCBpbnRvIHRoZSBjb250ZXh0IG1hbmFnZXIgdGhhdCBjYXVzZWQgdGhlCi0gICAgY3JlYXRpb24gb2YgdGhlIG1vZHVsZS4KLQotICAgIEFsbCBmaWxlcyBhcmUgY3JlYXRlZCBpbiBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgcmV0dXJuZWQgYnkKLSAgICB0ZW1wZmlsZS5ta2R0ZW1wKCkuIFRoaXMgZGlyZWN0b3J5IGlzIGluc2VydGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YKLSAgICBzeXMucGF0aC4gV2hlbiB0aGUgY29udGV4dCBtYW5hZ2VyIGV4aXRzIGFsbCBjcmVhdGVkIGZpbGVzIChzb3VyY2UgYW5kCi0gICAgYnl0ZWNvZGUpIGFyZSBleHBsaWNpdGx5IGRlbGV0ZWQuCi0KLSAgICBObyBtYWdpYyBpcyBwZXJmb3JtZWQgd2hlbiBjcmVhdGluZyBwYWNrYWdlcyEgVGhpcyBtZWFucyB0aGF0IGlmIHlvdSBjcmVhdGUKLSAgICBhIG1vZHVsZSB3aXRoaW4gYSBwYWNrYWdlIHlvdSBtdXN0IGFsc28gY3JlYXRlIHRoZSBwYWNrYWdlJ3MgX19pbml0X18gYXMKLSAgICB3ZWxsLgotCi0gICAgIiIiCi0gICAgc291cmNlID0gJ2F0dHIgPSB7MCFyfScKLSAgICBjcmVhdGVkX3BhdGhzID0gW10KLSAgICBtYXBwaW5nID0ge30KLSAgICBzdGF0ZV9tYW5hZ2VyID0gTm9uZQotICAgIHVuY2FjaGVfbWFuYWdlciA9IE5vbmUKLSAgICB0cnk6Ci0gICAgICAgIHRlbXBfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCi0gICAgICAgIG1hcHBpbmdbJy5yb290J10gPSB0ZW1wX2RpcgotICAgICAgICBpbXBvcnRfbmFtZXMgPSBzZXQoKQotICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKLSAgICAgICAgICAgIGlmIG5vdCBuYW1lLmVuZHN3aXRoKCdfX2luaXRfXycpOgotICAgICAgICAgICAgICAgIGltcG9ydF9uYW1lID0gbmFtZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpbXBvcnRfbmFtZSA9IG5hbWVbOi1sZW4oJy5fX2luaXRfXycpXQotICAgICAgICAgICAgaW1wb3J0X25hbWVzLmFkZChpbXBvcnRfbmFtZSkKLSAgICAgICAgICAgIGlmIGltcG9ydF9uYW1lIGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tpbXBvcnRfbmFtZV0KLSAgICAgICAgICAgIG5hbWVfcGFydHMgPSBuYW1lLnNwbGl0KCcuJykKLSAgICAgICAgICAgIGZpbGVfcGF0aCA9IHRlbXBfZGlyCi0gICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIG5hbWVfcGFydHNbOi0xXToKLSAgICAgICAgICAgICAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oZmlsZV9wYXRoLCBkaXJlY3RvcnkpCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZpbGVfcGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLm1rZGlyKGZpbGVfcGF0aCkKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlZF9wYXRocy5hcHBlbmQoZmlsZV9wYXRoKQotICAgICAgICAgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKGZpbGVfcGF0aCwgbmFtZV9wYXJ0c1stMV0gKyAnLnB5JykKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlX3BhdGgsICd3JykgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBmaWxlLndyaXRlKHNvdXJjZS5mb3JtYXQobmFtZSkpCi0gICAgICAgICAgICBjcmVhdGVkX3BhdGhzLmFwcGVuZChmaWxlX3BhdGgpCi0gICAgICAgICAgICBtYXBwaW5nW25hbWVdID0gZmlsZV9wYXRoCi0gICAgICAgIHVuY2FjaGVfbWFuYWdlciA9IHV0aWwudW5jYWNoZSgqaW1wb3J0X25hbWVzKQotICAgICAgICB1bmNhY2hlX21hbmFnZXIuX19lbnRlcl9fKCkKLSAgICAgICAgc3RhdGVfbWFuYWdlciA9IHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W3RlbXBfZGlyXSkKLSAgICAgICAgc3RhdGVfbWFuYWdlci5fX2VudGVyX18oKQotICAgICAgICB5aWVsZCBtYXBwaW5nCi0gICAgZmluYWxseToKLSAgICAgICAgaWYgc3RhdGVfbWFuYWdlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHN0YXRlX21hbmFnZXIuX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSkKLSAgICAgICAgaWYgdW5jYWNoZV9tYW5hZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgdW5jYWNoZV9tYW5hZ2VyLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCi0gICAgICAgIHN1cHBvcnQucm10cmVlKHRlbXBfZGlyKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQppbmRleCBhMWY4ZTc2Li5kNGJmOTE1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQpAQCAtMTAsMTIgKzEwLDEzIEBACiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiBpbXBvcnQgd2FybmluZ3MKIAotZnJvbSAuIGltcG9ydCB1dGlsCitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgdGVzdF91dGlsCiAKLWZyb3plbl9pbml0LCBzb3VyY2VfaW5pdCA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKLWZyb3plbl9hYmMsIHNvdXJjZV9hYmMgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5hYmMnKQotbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKLWZyb3plbl91dGlsLCBzb3VyY2VfdXRpbCA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLnV0aWwnKQoraW5pdCA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKQorYWJjID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5hYmMnKQorbWFjaGluZXJ5ID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQordXRpbCA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIudXRpbCcpCisKIAogIyMjIyMgSW5oZXJpdGFuY2UgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIGNsYXNzIEluaGVyaXRhbmNlVGVzdHM6CkBAIC0yNiw4ICsyNyw3IEBACiAgICAgc3ViY2xhc3NlcyA9IFtdCiAgICAgc3VwZXJjbGFzc2VzID0gW10KIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3VwZXJjbGFzc2VzID0gW2dldGF0dHIoc2VsZi5hYmMsIGNsYXNzX25hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBjbGFzc19uYW1lIGluIHNlbGYuc3VwZXJjbGFzc19uYW1lc10KICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnc3ViY2xhc3NfbmFtZXMnKToKQEAgLTM2LDExICszNiwxMSBAQAogICAgICAgICAgICAgIyBjaGVja2luZyBhY3Jvc3MgbW9kdWxlIGJvdW5kYXJpZXMgKGkuZS4gdGhlIF9ib290c3RyYXAgaW4gYWJjIGlzCiAgICAgICAgICAgICAjIG5vdCB0aGUgc2FtZSBhcyB0aGUgb25lIGluIG1hY2hpbmVyeSkuIFRoYXQgbWVhbnMgc3RlYWxpbmcgb25lIG9mCiAgICAgICAgICAgICAjIHRoZSBtb2R1bGVzIGZyb20gdGhlIG90aGVyIHRvIG1ha2Ugc3VyZSB0aGUgc2FtZSBpbnN0YW5jZSBpcyB1c2VkLgotICAgICAgICAgICAgc2VsZi5zdWJjbGFzc2VzID0gW2dldGF0dHIoc2VsZi5hYmMubWFjaGluZXJ5LCBjbGFzc19uYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgY2xhc3NfbmFtZSBpbiBzZWxmLnN1YmNsYXNzX25hbWVzXQorICAgICAgICAgICAgbWFjaGluZXJ5ID0gc2VsZi5hYmMubWFjaGluZXJ5CisgICAgICAgICAgICBzZWxmLnN1YmNsYXNzZXMgPSBbZ2V0YXR0cihtYWNoaW5lcnksIGNsYXNzX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNsYXNzX25hbWUgaW4gc2VsZi5zdWJjbGFzc19uYW1lc10KICAgICAgICAgYXNzZXJ0IHNlbGYuc3ViY2xhc3NlcyBvciBzZWxmLnN1cGVyY2xhc3Nlcywgc2VsZi5fX2NsYXNzX18KLSAgICAgICAgdGVzdGluZyA9IHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLnBhcnRpdGlvbignXycpWzJdCi0gICAgICAgIHNlbGYuX190ZXN0ID0gZ2V0YXR0cihzZWxmLmFiYywgdGVzdGluZykKKyAgICAgICAgc2VsZi5fX3Rlc3QgPSBnZXRhdHRyKHNlbGYuYWJjLCBzZWxmLl9OQU1FKQogCiAgICAgZGVmIHRlc3Rfc3ViY2xhc3NlcyhzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgdGhlIGV4cGVjdGVkIHN1YmNsYXNzZXMgaW5oZXJpdC4KQEAgLTU0LDk0ICs1NCw5NyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Moc2VsZi5fX3Rlc3QsIHN1cGVyY2xhc3MpLAogICAgICAgICAgICAgICAgInswfSBpcyBub3QgYSBzdXBlcmNsYXNzIG9mIHsxfSIuZm9ybWF0KHN1cGVyY2xhc3MsIHNlbGYuX190ZXN0KSkKIAotZGVmIGNyZWF0ZV9pbmhlcml0YW5jZV90ZXN0cyhiYXNlX2NsYXNzKToKLSAgICBkZWYgc2V0X2Zyb3plbihucyk6Ci0gICAgICAgIG5zWydhYmMnXSA9IGZyb3plbl9hYmMKLSAgICBkZWYgc2V0X3NvdXJjZShucyk6Ci0gICAgICAgIG5zWydhYmMnXSA9IHNvdXJjZV9hYmMKLQotICAgIGNsYXNzZXMgPSBbXQotICAgIGZvciBwcmVmaXgsIG5zX3NldCBpbiBbKCdGcm96ZW4nLCBzZXRfZnJvemVuKSwgKCdTb3VyY2UnLCBzZXRfc291cmNlKV06Ci0gICAgICAgIGNsYXNzZXMuYXBwZW5kKHR5cGVzLm5ld19jbGFzcygnXycuam9pbihbcHJlZml4LCBiYXNlX2NsYXNzLl9fbmFtZV9fXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFzZV9jbGFzcywgdW5pdHRlc3QuVGVzdENhc2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY19ib2R5PW5zX3NldCkpCi0gICAgcmV0dXJuIGNsYXNzZXMKLQogCiBjbGFzcyBNZXRhUGF0aEZpbmRlcihJbmhlcml0YW5jZVRlc3RzKToKICAgICBzdXBlcmNsYXNzX25hbWVzID0gWydGaW5kZXInXQogICAgIHN1YmNsYXNzX25hbWVzID0gWydCdWlsdGluSW1wb3J0ZXInLCAnRnJvemVuSW1wb3J0ZXInLCAnUGF0aEZpbmRlcicsCiAgICAgICAgICAgICAgICAgICAgICAgJ1dpbmRvd3NSZWdpc3RyeUZpbmRlciddCiAKLXRlc3RzID0gY3JlYXRlX2luaGVyaXRhbmNlX3Rlc3RzKE1ldGFQYXRoRmluZGVyKQotRnJvemVuX01ldGFQYXRoRmluZGVySW5oZXJpdGFuY2VUZXN0cywgU291cmNlX01ldGFQYXRoRmluZGVySW5oZXJpdGFuY2VUZXN0cyA9IHRlc3RzCisKKyhGcm96ZW5fTWV0YVBhdGhGaW5kZXJJbmhlcml0YW5jZVRlc3RzLAorIFNvdXJjZV9NZXRhUGF0aEZpbmRlckluaGVyaXRhbmNlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChNZXRhUGF0aEZpbmRlciwgYWJjPWFiYykKIAogCiBjbGFzcyBQYXRoRW50cnlGaW5kZXIoSW5oZXJpdGFuY2VUZXN0cyk6CiAgICAgc3VwZXJjbGFzc19uYW1lcyA9IFsnRmluZGVyJ10KICAgICBzdWJjbGFzc19uYW1lcyA9IFsnRmlsZUZpbmRlciddCiAKLXRlc3RzID0gY3JlYXRlX2luaGVyaXRhbmNlX3Rlc3RzKFBhdGhFbnRyeUZpbmRlcikKLUZyb3plbl9QYXRoRW50cnlGaW5kZXJJbmhlcml0YW5jZVRlc3RzLCBTb3VyY2VfUGF0aEVudHJ5RmluZGVySW5oZXJpdGFuY2VUZXN0cyA9IHRlc3RzCisKKyhGcm96ZW5fUGF0aEVudHJ5RmluZGVySW5oZXJpdGFuY2VUZXN0cywKKyBTb3VyY2VfUGF0aEVudHJ5RmluZGVySW5oZXJpdGFuY2VUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFBhdGhFbnRyeUZpbmRlciwgYWJjPWFiYykKIAogCiBjbGFzcyBSZXNvdXJjZUxvYWRlcihJbmhlcml0YW5jZVRlc3RzKToKICAgICBzdXBlcmNsYXNzX25hbWVzID0gWydMb2FkZXInXQogCi10ZXN0cyA9IGNyZWF0ZV9pbmhlcml0YW5jZV90ZXN0cyhSZXNvdXJjZUxvYWRlcikKLUZyb3plbl9SZXNvdXJjZUxvYWRlckluaGVyaXRhbmNlVGVzdHMsIFNvdXJjZV9SZXNvdXJjZUxvYWRlckluaGVyaXRhbmNlVGVzdHMgPSB0ZXN0cworCisoRnJvemVuX1Jlc291cmNlTG9hZGVySW5oZXJpdGFuY2VUZXN0cywKKyBTb3VyY2VfUmVzb3VyY2VMb2FkZXJJbmhlcml0YW5jZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoUmVzb3VyY2VMb2FkZXIsIGFiYz1hYmMpCiAKIAogY2xhc3MgSW5zcGVjdExvYWRlcihJbmhlcml0YW5jZVRlc3RzKToKICAgICBzdXBlcmNsYXNzX25hbWVzID0gWydMb2FkZXInXQogICAgIHN1YmNsYXNzX25hbWVzID0gWydCdWlsdGluSW1wb3J0ZXInLCAnRnJvemVuSW1wb3J0ZXInLCAnRXh0ZW5zaW9uRmlsZUxvYWRlciddCiAKLXRlc3RzID0gY3JlYXRlX2luaGVyaXRhbmNlX3Rlc3RzKEluc3BlY3RMb2FkZXIpCi1Gcm96ZW5fSW5zcGVjdExvYWRlckluaGVyaXRhbmNlVGVzdHMsIFNvdXJjZV9JbnNwZWN0TG9hZGVySW5oZXJpdGFuY2VUZXN0cyA9IHRlc3RzCisKKyhGcm96ZW5fSW5zcGVjdExvYWRlckluaGVyaXRhbmNlVGVzdHMsCisgU291cmNlX0luc3BlY3RMb2FkZXJJbmhlcml0YW5jZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoSW5zcGVjdExvYWRlciwgYWJjPWFiYykKIAogCiBjbGFzcyBFeGVjdXRpb25Mb2FkZXIoSW5oZXJpdGFuY2VUZXN0cyk6CiAgICAgc3VwZXJjbGFzc19uYW1lcyA9IFsnSW5zcGVjdExvYWRlciddCiAgICAgc3ViY2xhc3NfbmFtZXMgPSBbJ0V4dGVuc2lvbkZpbGVMb2FkZXInXQogCi10ZXN0cyA9IGNyZWF0ZV9pbmhlcml0YW5jZV90ZXN0cyhFeGVjdXRpb25Mb2FkZXIpCi1Gcm96ZW5fRXhlY3V0aW9uTG9hZGVySW5oZXJpdGFuY2VUZXN0cywgU291cmNlX0V4ZWN1dGlvbkxvYWRlckluaGVyaXRhbmNlVGVzdHMgPSB0ZXN0cworCisoRnJvemVuX0V4ZWN1dGlvbkxvYWRlckluaGVyaXRhbmNlVGVzdHMsCisgU291cmNlX0V4ZWN1dGlvbkxvYWRlckluaGVyaXRhbmNlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChFeGVjdXRpb25Mb2FkZXIsIGFiYz1hYmMpCiAKIAogY2xhc3MgRmlsZUxvYWRlcihJbmhlcml0YW5jZVRlc3RzKToKICAgICBzdXBlcmNsYXNzX25hbWVzID0gWydSZXNvdXJjZUxvYWRlcicsICdFeGVjdXRpb25Mb2FkZXInXQogICAgIHN1YmNsYXNzX25hbWVzID0gWydTb3VyY2VGaWxlTG9hZGVyJywgJ1NvdXJjZWxlc3NGaWxlTG9hZGVyJ10KIAotdGVzdHMgPSBjcmVhdGVfaW5oZXJpdGFuY2VfdGVzdHMoRmlsZUxvYWRlcikKLUZyb3plbl9GaWxlTG9hZGVySW5oZXJpdGFuY2VUZXN0cywgU291cmNlX0ZpbGVMb2FkZXJJbmhlcml0YW5jZVRlc3RzID0gdGVzdHMKKworKEZyb3plbl9GaWxlTG9hZGVySW5oZXJpdGFuY2VUZXN0cywKKyBTb3VyY2VfRmlsZUxvYWRlckluaGVyaXRhbmNlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChGaWxlTG9hZGVyLCBhYmM9YWJjKQogCiAKIGNsYXNzIFNvdXJjZUxvYWRlcihJbmhlcml0YW5jZVRlc3RzKToKICAgICBzdXBlcmNsYXNzX25hbWVzID0gWydSZXNvdXJjZUxvYWRlcicsICdFeGVjdXRpb25Mb2FkZXInXQogICAgIHN1YmNsYXNzX25hbWVzID0gWydTb3VyY2VGaWxlTG9hZGVyJ10KIAotdGVzdHMgPSBjcmVhdGVfaW5oZXJpdGFuY2VfdGVzdHMoU291cmNlTG9hZGVyKQotRnJvemVuX1NvdXJjZUxvYWRlckluaGVyaXRhbmNlVGVzdHMsIFNvdXJjZV9Tb3VyY2VMb2FkZXJJbmhlcml0YW5jZVRlc3RzID0gdGVzdHMKKworKEZyb3plbl9Tb3VyY2VMb2FkZXJJbmhlcml0YW5jZVRlc3RzLAorIFNvdXJjZV9Tb3VyY2VMb2FkZXJJbmhlcml0YW5jZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoU291cmNlTG9hZGVyLCBhYmM9YWJjKQorCiAKICMjIyMjIERlZmF1bHQgcmV0dXJuIHZhbHVlcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1kZWYgbWFrZV9hYmNfc3ViY2xhc3NlcyhiYXNlX2NsYXNzKToKLSAgICBjbGFzc2VzID0gW10KLSAgICBmb3Iga2luZCwgYWJjIGluIFsoJ0Zyb3plbicsIGZyb3plbl9hYmMpLCAoJ1NvdXJjZScsIHNvdXJjZV9hYmMpXToKLSAgICAgICAgbmFtZSA9ICdfJy5qb2luKFtraW5kLCBiYXNlX2NsYXNzLl9fbmFtZV9fXSkKLSAgICAgICAgYmFzZV9jbGFzc2VzID0gYmFzZV9jbGFzcywgZ2V0YXR0cihhYmMsIGJhc2VfY2xhc3MuX19uYW1lX18pCi0gICAgICAgIGNsYXNzZXMuYXBwZW5kKHR5cGVzLm5ld19jbGFzcyhuYW1lLCBiYXNlX2NsYXNzZXMpKQotICAgIHJldHVybiBjbGFzc2VzCiAKLWRlZiBtYWtlX3JldHVybl92YWx1ZV90ZXN0cyhiYXNlX2NsYXNzLCB0ZXN0X2NsYXNzKToKLSAgICBmcm96ZW5fY2xhc3MsIHNvdXJjZV9jbGFzcyA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoYmFzZV9jbGFzcykKLSAgICB0ZXN0cyA9IFtdCi0gICAgZm9yIHByZWZpeCwgY2xhc3NfaW5fdGVzdCBpbiBbKCdGcm96ZW4nLCBmcm96ZW5fY2xhc3MpLCAoJ1NvdXJjZScsIHNvdXJjZV9jbGFzcyldOgotICAgICAgICBkZWYgc2V0X25zKG5zKToKLSAgICAgICAgICAgIG5zWydpbnMnXSA9IGNsYXNzX2luX3Rlc3QoKQotICAgICAgICB0ZXN0cy5hcHBlbmQodHlwZXMubmV3X2NsYXNzKCdfJy5qb2luKFtwcmVmaXgsIHRlc3RfY2xhc3MuX19uYW1lX19dKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGVzdF9jbGFzcywgdW5pdHRlc3QuVGVzdENhc2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNfYm9keT1zZXRfbnMpKQotICAgIHJldHVybiB0ZXN0cworZGVmIG1ha2VfYWJjX3N1YmNsYXNzZXMoYmFzZV9jbGFzcywgbmFtZT1Ob25lLCBpbnN0PUZhbHNlLCAqKmt3YXJncyk6CisgICAgaWYgbmFtZSBpcyBOb25lOgorICAgICAgICBuYW1lID0gYmFzZV9jbGFzcy5fX25hbWVfXworICAgIGJhc2UgPSB7a2luZDogZ2V0YXR0cihzcGxpdGFiYywgbmFtZSkKKyAgICAgICAgICAgIGZvciBraW5kLCBzcGxpdGFiYyBpbiBhYmMuaXRlbXMoKX0KKyAgICByZXR1cm4ge2Nscy5fS0lORDogY2xzKCkgaWYgaW5zdCBlbHNlIGNscworICAgICAgICAgICAgZm9yIGNscyBpbiB0ZXN0X3V0aWwuc3BsaXRfZnJvemVuKGJhc2VfY2xhc3MsIGJhc2UsICoqa3dhcmdzKX0KKworCitjbGFzcyBBQkNUZXN0SGFybmVzczoKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpbnMoc2VsZik6CisgICAgICAgICMgTGF6aWx5IHNldCBpbnMgb24gdGhlIGNsYXNzLgorICAgICAgICBjbHMgPSBzZWxmLlNQTElUW3NlbGYuX0tJTkRdCisgICAgICAgIGlucyA9IGNscygpCisgICAgICAgIHNlbGYuX19jbGFzc19fLmlucyA9IGlucworICAgICAgICByZXR1cm4gaW5zCiAKIAogY2xhc3MgTWV0YVBhdGhGaW5kZXI6CkBAIC0xNDksMTAgKzE1MiwxMCBAQAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aCk6CiAgICAgICAgIHJldHVybiBzdXBlcigpLmZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoKQogCi1Gcm96ZW5fTVBGLCBTb3VyY2VfTVBGID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhNZXRhUGF0aEZpbmRlcikKIAorY2xhc3MgTWV0YVBhdGhGaW5kZXJEZWZhdWx0c1Rlc3RzKEFCQ1Rlc3RIYXJuZXNzKToKIAotY2xhc3MgTWV0YVBhdGhGaW5kZXJEZWZhdWx0c1Rlc3RzOgorICAgIFNQTElUID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhNZXRhUGF0aEZpbmRlcikKIAogICAgIGRlZiB0ZXN0X2ZpbmRfbW9kdWxlKHNlbGYpOgogICAgICAgICAjIERlZmF1bHQgc2hvdWxkIHJldHVybiBOb25lLgpAQCAtMTYzLDggKzE2Niw5IEBACiAgICAgICAgIHNlbGYuaW5zLmludmFsaWRhdGVfY2FjaGVzKCkKIAogCi10ZXN0cyA9IG1ha2VfcmV0dXJuX3ZhbHVlX3Rlc3RzKE1ldGFQYXRoRmluZGVyLCBNZXRhUGF0aEZpbmRlckRlZmF1bHRzVGVzdHMpCi1Gcm96ZW5fTVBGRGVmYXVsdFRlc3RzLCBTb3VyY2VfTVBGRGVmYXVsdFRlc3RzID0gdGVzdHMKKyhGcm96ZW5fTVBGRGVmYXVsdFRlc3RzLAorIFNvdXJjZV9NUEZEZWZhdWx0VGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChNZXRhUGF0aEZpbmRlckRlZmF1bHRzVGVzdHMpCiAKIAogY2xhc3MgUGF0aEVudHJ5RmluZGVyOgpAQCAtMTcyLDEwICsxNzYsMTAgQEAKICAgICBkZWYgZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICByZXR1cm4gc3VwZXIoKS5maW5kX2xvYWRlcihmdWxsbmFtZSkKIAotRnJvemVuX1BFRiwgU291cmNlX1BFRiA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoUGF0aEVudHJ5RmluZGVyKQogCitjbGFzcyBQYXRoRW50cnlGaW5kZXJEZWZhdWx0c1Rlc3RzKEFCQ1Rlc3RIYXJuZXNzKToKIAotY2xhc3MgUGF0aEVudHJ5RmluZGVyRGVmYXVsdHNUZXN0czoKKyAgICBTUExJVCA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoUGF0aEVudHJ5RmluZGVyKQogCiAgICAgZGVmIHRlc3RfZmluZF9sb2FkZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKE5vbmUsIFtdKSwgc2VsZi5pbnMuZmluZF9sb2FkZXIoJ3NvbWV0aGluZycpKQpAQCAtMTg4LDggKzE5Miw5IEBACiAgICAgICAgIHNlbGYuaW5zLmludmFsaWRhdGVfY2FjaGVzKCkKIAogCi10ZXN0cyA9IG1ha2VfcmV0dXJuX3ZhbHVlX3Rlc3RzKFBhdGhFbnRyeUZpbmRlciwgUGF0aEVudHJ5RmluZGVyRGVmYXVsdHNUZXN0cykKLUZyb3plbl9QRUZEZWZhdWx0VGVzdHMsIFNvdXJjZV9QRUZEZWZhdWx0VGVzdHMgPSB0ZXN0cworKEZyb3plbl9QRUZEZWZhdWx0VGVzdHMsCisgU291cmNlX1BFRkRlZmF1bHRUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFBhdGhFbnRyeUZpbmRlckRlZmF1bHRzVGVzdHMpCiAKIAogY2xhc3MgTG9hZGVyOgpAQCAtMTk4LDEwICsyMDMsOSBAQAogICAgICAgICByZXR1cm4gc3VwZXIoKS5sb2FkX21vZHVsZShmdWxsbmFtZSkKIAogCi1Gcm96ZW5fTCwgU291cmNlX0wgPSBtYWtlX2FiY19zdWJjbGFzc2VzKExvYWRlcikKK2NsYXNzIExvYWRlckRlZmF1bHRzVGVzdHMoQUJDVGVzdEhhcm5lc3MpOgogCi0KLWNsYXNzIExvYWRlckRlZmF1bHRzVGVzdHM6CisgICAgU1BMSVQgPSBtYWtlX2FiY19zdWJjbGFzc2VzKExvYWRlcikKIAogICAgIGRlZiB0ZXN0X2xvYWRfbW9kdWxlKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKQEAgLTIxNyw4ICsyMjEsOSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihtb2QpKQogCiAKLXRlc3RzID0gbWFrZV9yZXR1cm5fdmFsdWVfdGVzdHMoTG9hZGVyLCBMb2FkZXJEZWZhdWx0c1Rlc3RzKQotRnJvemVuX0xEZWZhdWx0VGVzdHMsIFNvdXJjZUxEZWZhdWx0VGVzdHMgPSB0ZXN0cworKEZyb3plbl9MRGVmYXVsdFRlc3RzLAorIFNvdXJjZUxEZWZhdWx0VGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChMb2FkZXJEZWZhdWx0c1Rlc3RzKQogCiAKIGNsYXNzIFJlc291cmNlTG9hZGVyKExvYWRlcik6CkBAIC0yMjcsMTggKzIzMiwxOCBAQAogICAgICAgICByZXR1cm4gc3VwZXIoKS5nZXRfZGF0YShwYXRoKQogCiAKLUZyb3plbl9STCwgU291cmNlX1JMID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhSZXNvdXJjZUxvYWRlcikKK2NsYXNzIFJlc291cmNlTG9hZGVyRGVmYXVsdHNUZXN0cyhBQkNUZXN0SGFybmVzcyk6CiAKLQotY2xhc3MgUmVzb3VyY2VMb2FkZXJEZWZhdWx0c1Rlc3RzOgorICAgIFNQTElUID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhSZXNvdXJjZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2dldF9kYXRhKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IpOgogICAgICAgICAgICAgc2VsZi5pbnMuZ2V0X2RhdGEoJy9zb21lL3BhdGgnKQogCiAKLXRlc3RzID0gbWFrZV9yZXR1cm5fdmFsdWVfdGVzdHMoUmVzb3VyY2VMb2FkZXIsIFJlc291cmNlTG9hZGVyRGVmYXVsdHNUZXN0cykKLUZyb3plbl9STERlZmF1bHRUZXN0cywgU291cmNlX1JMRGVmYXVsdFRlc3RzID0gdGVzdHMKKyhGcm96ZW5fUkxEZWZhdWx0VGVzdHMsCisgU291cmNlX1JMRGVmYXVsdFRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoUmVzb3VyY2VMb2FkZXJEZWZhdWx0c1Rlc3RzKQogCiAKIGNsYXNzIEluc3BlY3RMb2FkZXIoTG9hZGVyKToKQEAgLTI1MCwxMCArMjU1LDEyIEBACiAgICAgICAgIHJldHVybiBzdXBlcigpLmdldF9zb3VyY2UoZnVsbG5hbWUpCiAKIAotRnJvemVuX0lMLCBTb3VyY2VfSUwgPSBtYWtlX2FiY19zdWJjbGFzc2VzKEluc3BlY3RMb2FkZXIpCitTUExJVF9JTCA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoSW5zcGVjdExvYWRlcikKIAogCi1jbGFzcyBJbnNwZWN0TG9hZGVyRGVmYXVsdHNUZXN0czoKK2NsYXNzIEluc3BlY3RMb2FkZXJEZWZhdWx0c1Rlc3RzKEFCQ1Rlc3RIYXJuZXNzKToKKworICAgIFNQTElUID0gU1BMSVRfSUwKIAogICAgIGRlZiB0ZXN0X2lzX3BhY2thZ2Uoc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgpAQCAtMjY0LDggKzI3MSw5IEBACiAgICAgICAgICAgICBzZWxmLmlucy5nZXRfc291cmNlKCdibGFoJykKIAogCi10ZXN0cyA9IG1ha2VfcmV0dXJuX3ZhbHVlX3Rlc3RzKEluc3BlY3RMb2FkZXIsIEluc3BlY3RMb2FkZXJEZWZhdWx0c1Rlc3RzKQotRnJvemVuX0lMRGVmYXVsdFRlc3RzLCBTb3VyY2VfSUxEZWZhdWx0VGVzdHMgPSB0ZXN0cworKEZyb3plbl9JTERlZmF1bHRUZXN0cywKKyBTb3VyY2VfSUxEZWZhdWx0VGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChJbnNwZWN0TG9hZGVyRGVmYXVsdHNUZXN0cykKIAogCiBjbGFzcyBFeGVjdXRpb25Mb2FkZXIoSW5zcGVjdExvYWRlcik6CkBAIC0yNzMsMjEgKzI4MSwyNSBAQAogICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICByZXR1cm4gc3VwZXIoKS5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpCiAKLUZyb3plbl9FTCwgU291cmNlX0VMID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhFeGVjdXRpb25Mb2FkZXIpCisKK1NQTElUX0VMID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhFeGVjdXRpb25Mb2FkZXIpCiAKIAotY2xhc3MgRXhlY3V0aW9uTG9hZGVyRGVmYXVsdHNUZXN0czoKK2NsYXNzIEV4ZWN1dGlvbkxvYWRlckRlZmF1bHRzVGVzdHMoQUJDVGVzdEhhcm5lc3MpOgorCisgICAgU1BMSVQgPSBTUExJVF9FTAogCiAgICAgZGVmIHRlc3RfZ2V0X2ZpbGVuYW1lKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgIHNlbGYuaW5zLmdldF9maWxlbmFtZSgnYmxhaCcpCiAKIAotdGVzdHMgPSBtYWtlX3JldHVybl92YWx1ZV90ZXN0cyhFeGVjdXRpb25Mb2FkZXIsIEluc3BlY3RMb2FkZXJEZWZhdWx0c1Rlc3RzKQotRnJvemVuX0VMRGVmYXVsdFRlc3RzLCBTb3VyY2VfRUxEZWZhdWx0c1Rlc3RzID0gdGVzdHMKKyhGcm96ZW5fRUxEZWZhdWx0VGVzdHMsCisgU291cmNlX0VMRGVmYXVsdHNUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEluc3BlY3RMb2FkZXJEZWZhdWx0c1Rlc3RzKQorCiAKICMjIyMjIE1ldGFQYXRoRmluZGVyIGNvbmNyZXRlIG1ldGhvZHMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KIGNsYXNzIE1ldGFQYXRoRmluZGVyRmluZE1vZHVsZVRlc3RzOgogCiAgICAgQGNsYXNzbWV0aG9kCkBAIC0zMTcsMTMgKzMyOSwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydElzKGZvdW5kLCBzcGVjLmxvYWRlcikKIAogCi1Gcm96ZW5fTVBGRmluZE1vZHVsZVRlc3RzLCBTb3VyY2VfTVBGRmluZE1vZHVsZVRlc3RzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIE1ldGFQYXRoRmluZGVyRmluZE1vZHVsZVRlc3RzLAotICAgICAgICBhYmM9KGZyb3plbl9hYmMsIHNvdXJjZV9hYmMpLAotICAgICAgICB1dGlsPShmcm96ZW5fdXRpbCwgc291cmNlX3V0aWwpKQorKEZyb3plbl9NUEZGaW5kTW9kdWxlVGVzdHMsCisgU291cmNlX01QRkZpbmRNb2R1bGVUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKE1ldGFQYXRoRmluZGVyRmluZE1vZHVsZVRlc3RzLCBhYmM9YWJjLCB1dGlsPXV0aWwpCisKIAogIyMjIyMgUGF0aEVudHJ5RmluZGVyIGNvbmNyZXRlIG1ldGhvZHMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQogY2xhc3MgUGF0aEVudHJ5RmluZGVyRmluZExvYWRlclRlc3RzOgogCiAgICAgQGNsYXNzbWV0aG9kCkBAIC0zNjEsMTEgKzM3MiwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGhzLCBmb3VuZFsxXSkKIAogCi1Gcm96ZW5fUEVGRmluZExvYWRlclRlc3RzLCBTb3VyY2VfUEVGRmluZExvYWRlclRlc3RzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFBhdGhFbnRyeUZpbmRlckZpbmRMb2FkZXJUZXN0cywKLSAgICAgICAgYWJjPShmcm96ZW5fYWJjLCBzb3VyY2VfYWJjKSwKLSAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSwKLSAgICAgICAgdXRpbD0oZnJvemVuX3V0aWwsIHNvdXJjZV91dGlsKSkKKyhGcm96ZW5fUEVGRmluZExvYWRlclRlc3RzLAorIFNvdXJjZV9QRUZGaW5kTG9hZGVyVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChQYXRoRW50cnlGaW5kZXJGaW5kTG9hZGVyVGVzdHMsIGFiYz1hYmMsIHV0aWw9dXRpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKICMjIyMjIExvYWRlciBjb25jcmV0ZSBtZXRob2RzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0zODYsNyArMzk2LDcgQEAKICAgICBkZWYgdGVzdF9mcmVzaChzZWxmKToKICAgICAgICAgbG9hZGVyID0gc2VsZi5sb2FkZXIoKQogICAgICAgICBuYW1lID0gJ2JsYWgnCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCiAgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIuZm91bmQKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLm1vZHVsZXNbbmFtZV0sIG1vZHVsZSkKQEAgLTQwNCw3ICs0MTQsNyBAQAogICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG5hbWUpCiAgICAgICAgIG1vZHVsZS5fX3NwZWNfXyA9IHNlbGYudXRpbC5zcGVjX2Zyb21fbG9hZGVyKG5hbWUsIGxvYWRlcikKICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBsb2FkZXIKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQogICAgICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCiAgICAgICAgICAgICBmb3VuZCA9IGxvYWRlci5mb3VuZApAQCAtNDEyLDEwICs0MjIsOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUsIHN5cy5tb2R1bGVzW25hbWVdKQogCiAKLUZyb3plbl9Mb2FkZXJMb2FkTW9kdWxlVGVzdHMsIFNvdXJjZV9Mb2FkZXJMb2FkTW9kdWxlVGVzdHMgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgTG9hZGVyTG9hZE1vZHVsZVRlc3RzLAotICAgICAgICBhYmM9KGZyb3plbl9hYmMsIHNvdXJjZV9hYmMpLAotICAgICAgICB1dGlsPShmcm96ZW5fdXRpbCwgc291cmNlX3V0aWwpKQorKEZyb3plbl9Mb2FkZXJMb2FkTW9kdWxlVGVzdHMsCisgU291cmNlX0xvYWRlckxvYWRNb2R1bGVUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKExvYWRlckxvYWRNb2R1bGVUZXN0cywgYWJjPWFiYywgdXRpbD11dGlsKQogCiAKICMjIyMjIEluc3BlY3RMb2FkZXIgY29uY3JldGUgbWV0aG9kcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC00NjEsMTEgKzQ3MCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICc8c3RyaW5nPicpCiAKIAotY2xhc3MgRnJvemVuX0lMU291cmNlVG9Db2RlVGVzdHMoSW5zcGVjdExvYWRlclNvdXJjZVRvQ29kZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgSW5zcGVjdExvYWRlclN1YmNsYXNzID0gRnJvemVuX0lMCi0KLWNsYXNzIFNvdXJjZV9JTFNvdXJjZVRvQ29kZVRlc3RzKEluc3BlY3RMb2FkZXJTb3VyY2VUb0NvZGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIEluc3BlY3RMb2FkZXJTdWJjbGFzcyA9IFNvdXJjZV9JTAorKEZyb3plbl9JTFNvdXJjZVRvQ29kZVRlc3RzLAorIFNvdXJjZV9JTFNvdXJjZVRvQ29kZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoSW5zcGVjdExvYWRlclNvdXJjZVRvQ29kZVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RMb2FkZXJTdWJjbGFzcz1TUExJVF9JTCkKIAogCiBjbGFzcyBJbnNwZWN0TG9hZGVyR2V0Q29kZVRlc3RzOgpAQCAtNDk1LDExICs1MDMsMTAgQEAKICAgICAgICAgICAgIGxvYWRlci5nZXRfY29kZSgnYmxhaCcpCiAKIAotY2xhc3MgRnJvemVuX0lMR2V0Q29kZVRlc3RzKEluc3BlY3RMb2FkZXJHZXRDb2RlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3MgPSBGcm96ZW5fSUwKLQotY2xhc3MgU291cmNlX0lMR2V0Q29kZVRlc3RzKEluc3BlY3RMb2FkZXJHZXRDb2RlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3MgPSBTb3VyY2VfSUwKKyhGcm96ZW5fSUxHZXRDb2RlVGVzdHMsCisgU291cmNlX0lMR2V0Q29kZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoSW5zcGVjdExvYWRlckdldENvZGVUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3M9U1BMSVRfSUwpCiAKIAogY2xhc3MgSW5zcGVjdExvYWRlckxvYWRNb2R1bGVUZXN0czoKQEAgLTU0MywxMSArNTUwLDEwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZSwgc3lzLm1vZHVsZXNbc2VsZi5tb2R1bGVfbmFtZV0pCiAKIAotY2xhc3MgRnJvemVuX0lMTG9hZE1vZHVsZVRlc3RzKEluc3BlY3RMb2FkZXJMb2FkTW9kdWxlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3MgPSBGcm96ZW5fSUwKLQotY2xhc3MgU291cmNlX0lMTG9hZE1vZHVsZVRlc3RzKEluc3BlY3RMb2FkZXJMb2FkTW9kdWxlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3MgPSBTb3VyY2VfSUwKKyhGcm96ZW5fSUxMb2FkTW9kdWxlVGVzdHMsCisgU291cmNlX0lMTG9hZE1vZHVsZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoSW5zcGVjdExvYWRlckxvYWRNb2R1bGVUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3M9U1BMSVRfSUwpCiAKIAogIyMjIyMgRXhlY3V0aW9uTG9hZGVyIGNvbmNyZXRlIG1ldGhvZHMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTYwOCwxNSArNjE0LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLmF0dHIsIDQyKQogCiAKLWNsYXNzIEZyb3plbl9FTEdldENvZGVUZXN0cyhFeGVjdXRpb25Mb2FkZXJHZXRDb2RlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBFeGVjdXRpb25Mb2FkZXJTdWJjbGFzcyA9IEZyb3plbl9FTAotCi1jbGFzcyBTb3VyY2VfRUxHZXRDb2RlVGVzdHMoRXhlY3V0aW9uTG9hZGVyR2V0Q29kZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgRXhlY3V0aW9uTG9hZGVyU3ViY2xhc3MgPSBTb3VyY2VfRUwKKyhGcm96ZW5fRUxHZXRDb2RlVGVzdHMsCisgU291cmNlX0VMR2V0Q29kZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoRXhlY3V0aW9uTG9hZGVyR2V0Q29kZVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGlvbkxvYWRlclN1YmNsYXNzPVNQTElUX0VMKQogCiAKICMjIyMjIFNvdXJjZUxvYWRlciBjb25jcmV0ZSBtZXRob2RzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1jbGFzcyBTb3VyY2VMb2FkZXI6CitjbGFzcyBTb3VyY2VPbmx5TG9hZGVyOgogCiAgICAgIyBHbG9iYWxzIHRoYXQgc2hvdWxkIGJlIGRlZmluZWQgZm9yIGFsbCBtb2R1bGVzLgogICAgIHNvdXJjZSA9IChiIl8gPSAnOjonLmpvaW4oW19fbmFtZV9fLCBfX2ZpbGVfXywgX19jYWNoZWRfXywgX19wYWNrYWdlX18sICIKQEAgLTYzNywxMCArNjQyLDEwIEBACiAgICAgICAgIHJldHVybiAnPG1vZHVsZT4nCiAKIAotRnJvemVuX1NvdXJjZU9ubHlMLCBTb3VyY2VfU291cmNlT25seUwgPSBtYWtlX2FiY19zdWJjbGFzc2VzKFNvdXJjZUxvYWRlcikKK1NQTElUX1NPTCA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoU291cmNlT25seUxvYWRlciwgJ1NvdXJjZUxvYWRlcicpCiAKIAotY2xhc3MgU291cmNlTG9hZGVyKFNvdXJjZUxvYWRlcik6CitjbGFzcyBTb3VyY2VMb2FkZXIoU291cmNlT25seUxvYWRlcik6CiAKICAgICBzb3VyY2VfbXRpbWUgPSAxCiAKQEAgLTY3NywxMSArNjgyLDcgQEAKICAgICAgICAgcmV0dXJuIHBhdGggPT0gc2VsZi5ieXRlY29kZV9wYXRoCiAKIAotRnJvemVuX1NMLCBTb3VyY2VfU0wgPSBtYWtlX2FiY19zdWJjbGFzc2VzKFNvdXJjZUxvYWRlcikKLUZyb3plbl9TTC51dGlsID0gZnJvemVuX3V0aWwKLVNvdXJjZV9TTC51dGlsID0gc291cmNlX3V0aWwKLUZyb3plbl9TTC5pbml0ID0gZnJvemVuX2luaXQKLVNvdXJjZV9TTC5pbml0ID0gc291cmNlX2luaXQKK1NQTElUX1NMID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhTb3VyY2VMb2FkZXIsIHV0aWw9dXRpbCwgaW5pdD1pbml0KQogCiAKIGNsYXNzIFNvdXJjZUxvYWRlclRlc3RIYXJuZXNzOgpAQCAtNzY1LDcgKzc2Niw3IEBACiAgICAgICAgICMgTG9hZGluZyBhIG1vZHVsZSBzaG91bGQgc2V0IF9fbmFtZV9fLCBfX2xvYWRlcl9fLCBfX3BhY2thZ2VfXywKICAgICAgICAgIyBfX3BhdGhfXyAoZm9yIHBhY2thZ2VzKSwgX19maWxlX18sIGFuZCBfX2NhY2hlZF9fLgogICAgICAgICAjIFRoZSBtb2R1bGUgc2hvdWxkIGFsc28gYmUgcHV0IGludG8gc3lzLm1vZHVsZXMuCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHNlbGYubmFtZSk6CisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUoc2VsZi5uYW1lKToKICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRlci5sb2FkX21vZHVsZShzZWxmLm5hbWUpCkBAIC03NzgsNyArNzc5LDcgQEAKICAgICAgICAgIyBpcyBhIHBhY2thZ2UuCiAgICAgICAgICMgVGVzdGluZyB0aGUgdmFsdWVzIGZvciBhIHBhY2thZ2UgYXJlIGNvdmVyZWQgYnkgdGVzdF9sb2FkX21vZHVsZS4KICAgICAgICAgc2VsZi5zZXRVcChpc19wYWNrYWdlPUZhbHNlKQotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShzZWxmLm5hbWUpOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKHNlbGYubmFtZSk6CiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5uYW1lKQpAQCAtNzk4LDEzICs3OTksMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXR1cm5lZF9zb3VyY2UsIHNvdXJjZSkKIAogCi1jbGFzcyBGcm96ZW5fU291cmNlT25seUxUZXN0cyhTb3VyY2VPbmx5TG9hZGVyVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBsb2FkZXJfbW9jayA9IEZyb3plbl9Tb3VyY2VPbmx5TAotICAgIHV0aWwgPSBmcm96ZW5fdXRpbAotCi1jbGFzcyBTb3VyY2VfU291cmNlT25seUxUZXN0cyhTb3VyY2VPbmx5TG9hZGVyVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBsb2FkZXJfbW9jayA9IFNvdXJjZV9Tb3VyY2VPbmx5TAotICAgIHV0aWwgPSBzb3VyY2VfdXRpbAorKEZyb3plbl9Tb3VyY2VPbmx5TG9hZGVyVGVzdHMsCisgU291cmNlX1NvdXJjZU9ubHlMb2FkZXJUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFNvdXJjZU9ubHlMb2FkZXJUZXN0cywgdXRpbD11dGlsLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlcl9tb2NrPVNQTElUX1NPTCkKIAogCiBAdW5pdHRlc3Quc2tpcElmKHN5cy5kb250X3dyaXRlX2J5dGVjb2RlLCAic3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgaXMgdHJ1ZSIpCkBAIC04OTYsMTUgKzg5NCwxMCBAQAogICAgICAgICBzZWxmLnZlcmlmeV9jb2RlKGNvZGVfb2JqZWN0KQogCiAKLWNsYXNzIEZyb3plbl9TTEJ5dGVjb2RlVGVzdHMoU291cmNlTG9hZGVyQnl0ZWNvZGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGxvYWRlcl9tb2NrID0gRnJvemVuX1NMCi0gICAgaW5pdCA9IGZyb3plbl9pbml0Ci0gICAgdXRpbCA9IGZyb3plbl91dGlsCi0KLWNsYXNzIFNvdXJjZVNMQnl0ZWNvZGVUZXN0cyhTb3VyY2VMb2FkZXJCeXRlY29kZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgbG9hZGVyX21vY2sgPSBTb3VyY2VfU0wKLSAgICBpbml0ID0gc291cmNlX2luaXQKLSAgICB1dGlsID0gc291cmNlX3V0aWwKKyhGcm96ZW5fU0xCeXRlY29kZVRlc3RzLAorIFNvdXJjZVNMQnl0ZWNvZGVUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFNvdXJjZUxvYWRlckJ5dGVjb2RlVGVzdHMsIGluaXQ9aW5pdCwgdXRpbD11dGlsLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlcl9tb2NrPVNQTElUX1NMKQogCiAKIGNsYXNzIFNvdXJjZUxvYWRlckdldFNvdXJjZVRlc3RzOgpAQCAtOTQwLDExICs5MzMsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmdldF9zb3VyY2UobmFtZSksIGV4cGVjdCkKIAogCi1jbGFzcyBGcm96ZW5fU291cmNlT25seUxHZXRTb3VyY2VUZXN0cyhTb3VyY2VMb2FkZXJHZXRTb3VyY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIFNvdXJjZU9ubHlMb2FkZXJNb2NrID0gRnJvemVuX1NvdXJjZU9ubHlMCi0KLWNsYXNzIFNvdXJjZV9Tb3VyY2VPbmx5TEdldFNvdXJjZVRlc3RzKFNvdXJjZUxvYWRlckdldFNvdXJjZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgU291cmNlT25seUxvYWRlck1vY2sgPSBTb3VyY2VfU291cmNlT25seUwKKyhGcm96ZW5fU291cmNlT25seUxvYWRlckdldFNvdXJjZVRlc3RzLAorIFNvdXJjZV9Tb3VyY2VPbmx5TG9hZGVyR2V0U291cmNlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChTb3VyY2VMb2FkZXJHZXRTb3VyY2VUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VPbmx5TG9hZGVyTW9jaz1TUExJVF9TT0wpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkKaW5kZXggMmEyZDQyYi4uNmJjM2M1NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkKQEAgLTEsOCArMSw4IEBACi1mcm9tIC4gaW1wb3J0IHV0aWwKK2Zyb20gLiBpbXBvcnQgdXRpbCBhcyB0ZXN0X3V0aWwKIAotZnJvemVuX2luaXQsIHNvdXJjZV9pbml0ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKQotZnJvemVuX3V0aWwsIHNvdXJjZV91dGlsID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIudXRpbCcpCi1mcm96ZW5fbWFjaGluZXJ5LCBzb3VyY2VfbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKK2luaXQgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKK3V0aWwgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLnV0aWwnKQorbWFjaGluZXJ5ID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHN5cwpAQCAtMTgsOCArMTgsOCBAQAogCiAgICAgZGVmIHRlc3RfbW9kdWxlX2ltcG9ydChzZWxmKToKICAgICAgICAgIyBUZXN0IGltcG9ydGluZyBhIHRvcC1sZXZlbCBtb2R1bGUuCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3RvcF9sZXZlbCcpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC5tb2NrX21vZHVsZXMoJ3RvcF9sZXZlbCcpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHRlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CiAgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5pbml0LmltcG9ydF9tb2R1bGUoJ3RvcF9sZXZlbCcpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICd0b3BfbGV2ZWwnKQogCkBAIC0yOCw4ICsyOCw4IEBACiAgICAgICAgIHBrZ19uYW1lID0gJ3BrZycKICAgICAgICAgcGtnX2xvbmdfbmFtZSA9ICd7MH0uX19pbml0X18nLmZvcm1hdChwa2dfbmFtZSkKICAgICAgICAgbmFtZSA9ICd7MH0ubW9kJy5mb3JtYXQocGtnX25hbWUpCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMocGtnX2xvbmdfbmFtZSwgbmFtZSkgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgIHdpdGggdGVzdF91dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBuYW1lKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB0ZXN0X3V0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgogICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuaW5pdC5pbXBvcnRfbW9kdWxlKG5hbWUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCiAKQEAgLTQwLDE2ICs0MCwxNiBAQAogICAgICAgICBtb2R1bGVfbmFtZSA9ICdtb2QnCiAgICAgICAgIGFic29sdXRlX25hbWUgPSAnezB9LnsxfScuZm9ybWF0KHBrZ19uYW1lLCBtb2R1bGVfbmFtZSkKICAgICAgICAgcmVsYXRpdmVfbmFtZSA9ICcuezB9Jy5mb3JtYXQobW9kdWxlX25hbWUpCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMocGtnX2xvbmdfbmFtZSwgYWJzb2x1dGVfbmFtZSkgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgIHdpdGggdGVzdF91dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBhYnNvbHV0ZV9uYW1lKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB0ZXN0X3V0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgogICAgICAgICAgICAgICAgIHNlbGYuaW5pdC5pbXBvcnRfbW9kdWxlKHBrZ19uYW1lKQogICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuaW5pdC5pbXBvcnRfbW9kdWxlKHJlbGF0aXZlX25hbWUsIHBrZ19uYW1lKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBhYnNvbHV0ZV9uYW1lKQogCiAgICAgZGVmIHRlc3RfZGVlcF9yZWxhdGl2ZV9wYWNrYWdlX2ltcG9ydChzZWxmKToKICAgICAgICAgbW9kdWxlcyA9IFsnYS5fX2luaXRfXycsICdhLmIuX19pbml0X18nLCAnYS5jJ10KLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygqbW9kdWxlcykgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgIHdpdGggdGVzdF91dGlsLm1vY2tfbW9kdWxlcygqbW9kdWxlcykgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKICAgICAgICAgICAgICAgICBzZWxmLmluaXQuaW1wb3J0X21vZHVsZSgnYScpCiAgICAgICAgICAgICAgICAgc2VsZi5pbml0LmltcG9ydF9tb2R1bGUoJ2EuYicpCiAgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5pbml0LmltcG9ydF9tb2R1bGUoJy4uYycsICdhLmInKQpAQCAtNjEsOCArNjEsOCBAQAogICAgICAgICBwa2dfbmFtZSA9ICdwa2cnCiAgICAgICAgIHBrZ19sb25nX25hbWUgPSAnezB9Ll9faW5pdF9fJy5mb3JtYXQocGtnX25hbWUpCiAgICAgICAgIG5hbWUgPSAnezB9Lm1vZCcuZm9ybWF0KHBrZ19uYW1lKQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIG5hbWUpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC5tb2NrX21vZHVsZXMocGtnX2xvbmdfbmFtZSwgbmFtZSkgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKICAgICAgICAgICAgICAgICBzZWxmLmluaXQuaW1wb3J0X21vZHVsZShwa2dfbmFtZSkKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmluaXQuaW1wb3J0X21vZHVsZShuYW1lLCBwa2dfbmFtZSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbmFtZSkKQEAgLTg2LDE2ICs4NiwxNSBAQAogICAgICAgICAgICAgYl9sb2FkX2NvdW50ICs9IDEKICAgICAgICAgY29kZSA9IHsnYSc6IGxvYWRfYSwgJ2EuYic6IGxvYWRfYn0KICAgICAgICAgbW9kdWxlcyA9IFsnYS5fX2luaXRfXycsICdhLmInXQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCptb2R1bGVzLCBtb2R1bGVfY29kZT1jb2RlKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwubW9ja19tb2R1bGVzKCptb2R1bGVzLCBtb2R1bGVfY29kZT1jb2RlKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB0ZXN0X3V0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgogICAgICAgICAgICAgICAgIHNlbGYuaW5pdC5pbXBvcnRfbW9kdWxlKCdhLmInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJfbG9hZF9jb3VudCwgMSkKIAotY2xhc3MgRnJvemVuX0ltcG9ydE1vZHVsZVRlc3RzKEltcG9ydE1vZHVsZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgaW5pdCA9IGZyb3plbl9pbml0CiAKLWNsYXNzIFNvdXJjZV9JbXBvcnRNb2R1bGVUZXN0cyhJbXBvcnRNb2R1bGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGluaXQgPSBzb3VyY2VfaW5pdAorKEZyb3plbl9JbXBvcnRNb2R1bGVUZXN0cywKKyBTb3VyY2VfSW1wb3J0TW9kdWxlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChJbXBvcnRNb2R1bGVUZXN0cywgaW5pdD1pbml0KQogCiAKIGNsYXNzIEZpbmRMb2FkZXJUZXN0czoKQEAgLTEwNyw3ICsxMDYsNyBAQAogICAgIGRlZiB0ZXN0X3N5c19tb2R1bGVzKHNlbGYpOgogICAgICAgICAjIElmIGEgbW9kdWxlIHdpdGggX19sb2FkZXJfXyBpcyBpbiBzeXMubW9kdWxlcywgdGhlbiByZXR1cm4gaXQuCiAgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICAgICAgbG9hZGVyID0gJ2EgbG9hZGVyIScKICAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gbG9hZGVyCkBAIC0xMjAsNyArMTE5LDcgQEAKICAgICBkZWYgdGVzdF9zeXNfbW9kdWxlc19sb2FkZXJfaXNfTm9uZShzZWxmKToKICAgICAgICAgIyBJZiBzeXMubW9kdWxlc1tuYW1lXS5fX2xvYWRlcl9fIGlzIE5vbmUsIHJhaXNlIFZhbHVlRXJyb3IuCiAgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBOb25lCiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQpAQCAtMTMzLDcgKzEzMiw3IEBACiAgICAgICAgICMgU2hvdWxkIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgIyBJc3N1ZSAjMTcwOTkKICAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG5hbWUpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZGVsIG1vZHVsZS5fX2xvYWRlcl9fCkBAIC0xNDgsOCArMTQ3LDggQEAKICAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgogICAgICAgICAjIFJldHVybiB0aGUgbG9hZGVyIGZvdW5kIG9uIHN5cy5tZXRhX3BhdGguCiAgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W3NlbGYuRmFrZU1ldGFGaW5kZXJdKToKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W3NlbGYuRmFrZU1ldGFGaW5kZXJdKToKICAgICAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChuYW1lLCBOb25lKSwgc2VsZi5pbml0LmZpbmRfbG9hZGVyKG5hbWUpKQpAQCAtMTU4LDggKzE1Nyw4IEBACiAgICAgICAgICMgU2VhcmNoaW5nIG9uIGEgcGF0aCBzaG91bGQgd29yay4KICAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKICAgICAgICAgcGF0aCA9ICdwYXRoIHRvIHNvbWUgcGxhY2UnCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W3NlbGYuRmFrZU1ldGFGaW5kZXJdKToKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W3NlbGYuRmFrZU1ldGFGaW5kZXJdKToKICAgICAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChuYW1lLCBwYXRoKSwKQEAgLTE3MSwxMSArMTcwLDEwIEBACiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuaW5pdC5maW5kX2xvYWRlcignbmV2ZXJnb2luZ3RvZmluZHRoaXNtb2R1bGUnKSkKIAotY2xhc3MgRnJvemVuX0ZpbmRMb2FkZXJUZXN0cyhGaW5kTG9hZGVyVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBpbml0ID0gZnJvemVuX2luaXQKIAotY2xhc3MgU291cmNlX0ZpbmRMb2FkZXJUZXN0cyhGaW5kTG9hZGVyVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBpbml0ID0gc291cmNlX2luaXQKKyhGcm96ZW5fRmluZExvYWRlclRlc3RzLAorIFNvdXJjZV9GaW5kTG9hZGVyVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChGaW5kTG9hZGVyVGVzdHMsIGluaXQ9aW5pdCkKIAogCiBjbGFzcyBSZWxvYWRUZXN0czoKQEAgLTE5NSwxMCArMTkzLDEwIEBACiAgICAgICAgICAgICBtb2R1bGUgPSB0eXBlKHN5cykoJ3RvcF9sZXZlbCcpCiAgICAgICAgICAgICBtb2R1bGUuc3BhbSA9IDMKICAgICAgICAgICAgIHN5cy5tb2R1bGVzWyd0b3BfbGV2ZWwnXSA9IG1vZHVsZQotICAgICAgICBtb2NrID0gdXRpbC5tb2NrX21vZHVsZXMoJ3RvcF9sZXZlbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfY29kZT17J3RvcF9sZXZlbCc6IGNvZGV9KQorICAgICAgICBtb2NrID0gdGVzdF91dGlsLm1vY2tfbW9kdWxlcygndG9wX2xldmVsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX2NvZGU9eyd0b3BfbGV2ZWwnOiBjb2RlfSkKICAgICAgICAgd2l0aCBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmluaXQuaW1wb3J0X21vZHVsZSgndG9wX2xldmVsJykKICAgICAgICAgICAgICAgICByZWxvYWRlZCA9IHNlbGYuaW5pdC5yZWxvYWQobW9kdWxlKQogICAgICAgICAgICAgICAgIGFjdHVhbCA9IHN5cy5tb2R1bGVzWyd0b3BfbGV2ZWwnXQpAQCAtMjMwLDcgKzIyOCw3IEBACiAgICAgZGVmIHRlc3RfcmVsb2FkX2xvY2F0aW9uX2NoYW5nZWQoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnc3BhbScKICAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKE5vbmUpIGFzIGN3ZDoKLSAgICAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCdzcGFtJyk6CisgICAgICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKCdzcGFtJyk6CiAgICAgICAgICAgICAgICAgd2l0aCBzdXBwb3J0LkRpcnNPblN5c1BhdGgoY3dkKToKICAgICAgICAgICAgICAgICAgICAgIyBTdGFydCBhcyBhIHBsYWluIG1vZHVsZS4KICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbml0LmludmFsaWRhdGVfY2FjaGVzKCkKQEAgLTI4MSw3ICsyNzksNyBAQAogICAgIGRlZiB0ZXN0X3JlbG9hZF9uYW1lc3BhY2VfY2hhbmdlZChzZWxmKToKICAgICAgICAgbmFtZSA9ICdzcGFtJwogICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QoTm9uZSkgYXMgY3dkOgotICAgICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoJ3NwYW0nKToKKyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUoJ3NwYW0nKToKICAgICAgICAgICAgICAgICB3aXRoIHN1cHBvcnQuRGlyc09uU3lzUGF0aChjd2QpOgogICAgICAgICAgICAgICAgICAgICAjIFN0YXJ0IGFzIGEgbmFtZXNwYWNlIHBhY2thZ2UuCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5pdC5pbnZhbGlkYXRlX2NhY2hlcygpCkBAIC0zMzgsMjAgKzMzNiwxNiBAQAogICAgICAgICAjIFNlZSAjMTk4NTEuCiAgICAgICAgIG5hbWUgPSAnc3BhbScKICAgICAgICAgc3VibmFtZSA9ICdoYW0nCi0gICAgICAgIHdpdGggdXRpbC50ZW1wX21vZHVsZShuYW1lLCBwa2c9VHJ1ZSkgYXMgcGtnX2RpcjoKLSAgICAgICAgICAgIGZ1bGxuYW1lLCBfID0gdXRpbC5zdWJtb2R1bGUobmFtZSwgc3VibmFtZSwgcGtnX2RpcikKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudGVtcF9tb2R1bGUobmFtZSwgcGtnPVRydWUpIGFzIHBrZ19kaXI6CisgICAgICAgICAgICBmdWxsbmFtZSwgXyA9IHRlc3RfdXRpbC5zdWJtb2R1bGUobmFtZSwgc3VibmFtZSwgcGtnX2RpcikKICAgICAgICAgICAgIGhhbSA9IHNlbGYuaW5pdC5pbXBvcnRfbW9kdWxlKGZ1bGxuYW1lKQogICAgICAgICAgICAgcmVsb2FkZWQgPSBzZWxmLmluaXQucmVsb2FkKGhhbSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocmVsb2FkZWQsIGhhbSkKIAogCi1jbGFzcyBGcm96ZW5fUmVsb2FkVGVzdHMoUmVsb2FkVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBpbml0ID0gZnJvemVuX2luaXQKLSAgICB1dGlsID0gZnJvemVuX3V0aWwKLQotY2xhc3MgU291cmNlX1JlbG9hZFRlc3RzKFJlbG9hZFRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgaW5pdCA9IHNvdXJjZV9pbml0Ci0gICAgdXRpbCA9IHNvdXJjZV91dGlsCisoRnJvemVuX1JlbG9hZFRlc3RzLAorIFNvdXJjZV9SZWxvYWRUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFJlbG9hZFRlc3RzLCBpbml0PWluaXQsIHV0aWw9dXRpbCkKIAogCiBjbGFzcyBJbnZhbGlkYXRlQ2FjaGVUZXN0czoKQEAgLTM4NCwxMSArMzc4LDEwIEBACiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsYW1iZGE6IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLl9fZGVsaXRlbV9fKGtleSkpCiAgICAgICAgIHNlbGYuaW5pdC5pbnZhbGlkYXRlX2NhY2hlcygpICAjIFNob3VsZG4ndCB0cmlnZ2VyIGFuIGV4Y2VwdGlvbi4KIAotY2xhc3MgRnJvemVuX0ludmFsaWRhdGVDYWNoZVRlc3RzKEludmFsaWRhdGVDYWNoZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgaW5pdCA9IGZyb3plbl9pbml0CiAKLWNsYXNzIFNvdXJjZV9JbnZhbGlkYXRlQ2FjaGVUZXN0cyhJbnZhbGlkYXRlQ2FjaGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGluaXQgPSBzb3VyY2VfaW5pdAorKEZyb3plbl9JbnZhbGlkYXRlQ2FjaGVUZXN0cywKKyBTb3VyY2VfSW52YWxpZGF0ZUNhY2hlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChJbnZhbGlkYXRlQ2FjaGVUZXN0cywgaW5pdD1pbml0KQogCiAKIGNsYXNzIEZyb3plbkltcG9ydGxpYlRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTM5OCw2ICszOTEsNyBAQAogICAgICAgICAjIENhbid0IGRvIGFuIGlzaW5zdGFuY2UoKSBjaGVjayBzaW5jZSBzZXBhcmF0ZSBjb3BpZXMgb2YgaW1wb3J0bGliCiAgICAgICAgICMgbWF5IGhhdmUgYmVlbiB1c2VkIGZvciBpbXBvcnQsIHNvIGp1c3QgY2hlY2sgdGhlIG5hbWUgaXMgbm90IGZvciB0aGUKICAgICAgICAgIyBmcm96ZW4gbG9hZGVyLgorICAgICAgICBzb3VyY2VfaW5pdCA9IGluaXRbJ1NvdXJjZSddCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc291cmNlX2luaXQuX19sb2FkZXJfXy5fX2NsYXNzX18uX19uYW1lX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Zyb3plbkltcG9ydGVyJykKIApAQCAtNDI2LDExICs0MjAsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgZWxpZiBzZWxmLm1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5maW5kX21vZHVsZShuYW1lKToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobW9kdWxlLl9fc3BlY19fLCBOb25lKQogCi1jbGFzcyBGcm96ZW5fU3RhcnR1cFRlc3RzKFN0YXJ0dXBUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIG1hY2hpbmVyeSA9IGZyb3plbl9tYWNoaW5lcnkKIAotY2xhc3MgU291cmNlX1N0YXJ0dXBUZXN0cyhTdGFydHVwVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBtYWNoaW5lcnkgPSBzb3VyY2VfbWFjaGluZXJ5CisoRnJvemVuX1N0YXJ0dXBUZXN0cywKKyBTb3VyY2VfU3RhcnR1cFRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoU3RhcnR1cFRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xhenkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xhenkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUxOTFiYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbGF6eS5weQpAQCAtMCwwICsxLDEzMiBAQAoraW1wb3J0IGltcG9ydGxpYgorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IGFiYworZnJvbSBpbXBvcnRsaWIgaW1wb3J0IHV0aWwKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgdGVzdF91dGlsCisKKworY2xhc3MgQ29sbGVjdEluaXQ6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworICAgICAgICBzZWxmLmt3YXJncyA9IGt3YXJncworCisgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgIHJldHVybiBzZWxmCisKKworY2xhc3MgTGF6eUxvYWRlckZhY3RvcnlUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0gdXRpbC5MYXp5TG9hZGVyLmZhY3RvcnkoQ29sbGVjdEluaXQpCisgICAgICAgICMgRS5nLiB3aGF0IGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlciBpbnN0YW50aWF0ZXMgbG9hZGVycyB3aXRoCisgICAgICAgICMgcGx1cyBrZXl3b3JkIGFyZ3VtZW50cy4KKyAgICAgICAgbGF6eV9sb2FkZXIgPSBmYWN0b3J5KCdtb2R1bGUgbmFtZScsICdtb2R1bGUgcGF0aCcsIGt3PSdrdycpCisgICAgICAgIGxvYWRlciA9IGxhenlfbG9hZGVyLmxvYWRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgnbW9kdWxlIG5hbWUnLCAnbW9kdWxlIHBhdGgnKSwgbG9hZGVyLmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeydrdyc6ICdrdyd9LCBsb2FkZXIua3dhcmdzKQorCisgICAgZGVmIHRlc3RfdmFsaWRhdGlvbihzZWxmKToKKyAgICAgICAgIyBObyBleGVjX21vZHVsZSgpLCBubyBsYXp5IGxvYWRpbmcuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHV0aWwuTGF6eUxvYWRlci5mYWN0b3J5KG9iamVjdCkKKworCitjbGFzcyBUZXN0aW5nSW1wb3J0ZXIoYWJjLk1ldGFQYXRoRmluZGVyLCBhYmMuTG9hZGVyKToKKworICAgIG1vZHVsZV9uYW1lID0gJ2xhenlfbG9hZGVyX3Rlc3QnCisgICAgbXV0YXRlZF9uYW1lID0gJ2NoYW5nZWQnCisgICAgbG9hZGVkID0gTm9uZQorICAgIHNvdXJjZV9jb2RlID0gJ2F0dHIgPSA0MjsgX19uYW1lX18gPSB7IXJ9Jy5mb3JtYXQobXV0YXRlZF9uYW1lKQorCisgICAgZGVmIGZpbmRfc3BlYyhzZWxmLCBuYW1lLCBwYXRoLCB0YXJnZXQ9Tm9uZSk6CisgICAgICAgIGlmIG5hbWUgIT0gc2VsZi5tb2R1bGVfbmFtZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiB1dGlsLnNwZWNfZnJvbV9sb2FkZXIobmFtZSwgdXRpbC5MYXp5TG9hZGVyKHNlbGYpKQorCisgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgIGV4ZWMoc2VsZi5zb3VyY2VfY29kZSwgbW9kdWxlLl9fZGljdF9fKQorICAgICAgICBzZWxmLmxvYWRlZCA9IG1vZHVsZQorCisKK2NsYXNzIExhenlMb2FkZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB1dGlsLkxhenlMb2FkZXIob2JqZWN0KQorCisgICAgZGVmIG5ld19tb2R1bGUoc2VsZiwgc291cmNlX2NvZGU9Tm9uZSk6CisgICAgICAgIGxvYWRlciA9IFRlc3RpbmdJbXBvcnRlcigpCisgICAgICAgIGlmIHNvdXJjZV9jb2RlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbG9hZGVyLnNvdXJjZV9jb2RlID0gc291cmNlX2NvZGUKKyAgICAgICAgc3BlYyA9IHV0aWwuc3BlY19mcm9tX2xvYWRlcihUZXN0aW5nSW1wb3J0ZXIubW9kdWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5MYXp5TG9hZGVyKGxvYWRlcikpCisgICAgICAgIG1vZHVsZSA9IHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoc3BlYykKKyAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gc3BlYworICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNwZWMubG9hZGVyCisgICAgICAgIHNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKKyAgICAgICAgIyBNb2R1bGUgaXMgbm93IGxhenkuCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGxvYWRlci5sb2FkZWQpCisgICAgICAgIHJldHVybiBtb2R1bGUKKworICAgIGRlZiB0ZXN0X2UyZShzZWxmKToKKyAgICAgICAgIyBFbmQtdG8tZW5kIHRlc3QgdG8gdmVyaWZ5IHRoZSBsb2FkIGlzIGluIGZhY3QgbGF6eS4KKyAgICAgICAgaW1wb3J0ZXIgPSBUZXN0aW5nSW1wb3J0ZXIoKQorICAgICAgICBhc3NlcnQgaW1wb3J0ZXIubG9hZGVkIGlzIE5vbmUKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShpbXBvcnRlci5tb2R1bGVfbmFtZSk6CisgICAgICAgICAgICB3aXRoIHRlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtpbXBvcnRlcl0pOgorICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKGltcG9ydGVyLm1vZHVsZV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShpbXBvcnRlci5sb2FkZWQpCisgICAgICAgICMgVHJpZ2dlciBsb2FkLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX2xvYWRlcl9fLCBpbXBvcnRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoaW1wb3J0ZXIubG9hZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZSwgaW1wb3J0ZXIubG9hZGVkKQorCisgICAgZGVmIHRlc3RfYXR0cl91bmNoYW5nZWQoc2VsZik6CisgICAgICAgICMgQW4gYXR0cmlidXRlIG9ubHkgbXV0YXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIGltcG9ydCBzaG91bGQgbm90IGJlCisgICAgICAgICMgY2hhbmdlZCBuZWVkbGVzc2x5LgorICAgICAgICBtb2R1bGUgPSBzZWxmLm5ld19tb2R1bGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRlc3RpbmdJbXBvcnRlci5tdXRhdGVkX25hbWUsIG1vZHVsZS5fX25hbWVfXykKKworICAgIGRlZiB0ZXN0X25ld19hdHRyKHNlbGYpOgorICAgICAgICAjIEEgbmV3IGF0dHJpYnV0ZSBzaG91bGQgcGVyc2lzdC4KKyAgICAgICAgbW9kdWxlID0gc2VsZi5uZXdfbW9kdWxlKCkKKyAgICAgICAgbW9kdWxlLm5ld19hdHRyID0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0MiwgbW9kdWxlLm5ld19hdHRyKQorCisgICAgZGVmIHRlc3RfbXV0YXRlZF9wcmVleGlzdGluZ19hdHRyKHNlbGYpOgorICAgICAgICAjIENoYW5naW5nIGFuIGF0dHJpYnV0ZSB0aGF0IGFscmVhZHkgZXhpc3RlZCBvbiB0aGUgbW9kdWxlIC0tCisgICAgICAgICMgZS5nLiBfX25hbWVfXyAtLSBzaG91bGQgcGVyc2lzdC4KKyAgICAgICAgbW9kdWxlID0gc2VsZi5uZXdfbW9kdWxlKCkKKyAgICAgICAgbW9kdWxlLl9fbmFtZV9fID0gJ2JvZ3VzJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdib2d1cycsIG1vZHVsZS5fX25hbWVfXykKKworICAgIGRlZiB0ZXN0X211dGF0ZWRfYXR0cihzZWxmKToKKyAgICAgICAgIyBDaGFuZ2luZyBhbiBhdHRyaWJ1dGUgdGhhdCBjb21lcyBpbnRvIGV4aXN0ZW5jZSBhZnRlciBhbiBpbXBvcnQKKyAgICAgICAgIyBzaG91bGQgcGVyc2lzdC4KKyAgICAgICAgbW9kdWxlID0gc2VsZi5uZXdfbW9kdWxlKCkKKyAgICAgICAgbW9kdWxlLmF0dHIgPSA2CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNiwgbW9kdWxlLmF0dHIpCisKKyAgICBkZWYgdGVzdF9kZWxldGVfZXZlbnR1YWxfYXR0cihzZWxmKToKKyAgICAgICAgIyBEZWxldGluZyBhbiBhdHRyaWJ1dGUgc2hvdWxkIHN0YXkgZGVsZXRlZC4KKyAgICAgICAgbW9kdWxlID0gc2VsZi5uZXdfbW9kdWxlKCkKKyAgICAgICAgZGVsIG1vZHVsZS5hdHRyCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdhdHRyJykpCisKKyAgICBkZWYgdGVzdF9kZWxldGVfcHJlZXhpc3RpbmdfYXR0cihzZWxmKToKKyAgICAgICAgbW9kdWxlID0gc2VsZi5uZXdfbW9kdWxlKCkKKyAgICAgICAgZGVsIG1vZHVsZS5fX25hbWVfXworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19uYW1lX18nKSkKKworICAgIGRlZiB0ZXN0X21vZHVsZV9zdWJzdGl0dXRpb25fZXJyb3Ioc2VsZik6CisgICAgICAgIHNvdXJjZV9jb2RlID0gJ2ltcG9ydCBzeXM7IHN5cy5tb2R1bGVzW19fbmFtZV9fXSA9IDQyJworICAgICAgICBtb2R1bGUgPSBzZWxmLm5ld19tb2R1bGUoc291cmNlX2NvZGUpCisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUoVGVzdGluZ0ltcG9ydGVyLm1vZHVsZV9uYW1lKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fbmFtZV9fCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5CmluZGV4IGRjOTdiYTEuLmRmMGFmMTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weQpAQCAtMSw3ICsxLDYgQEAKLWZyb20gLiBpbXBvcnQgdXRpbAotZnJvemVuX2luaXQsIHNvdXJjZV9pbml0ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKQotZnJvemVuX2Jvb3RzdHJhcCA9IGZyb3plbl9pbml0Ll9ib290c3RyYXAKLXNvdXJjZV9ib290c3RyYXAgPSBzb3VyY2VfaW5pdC5fYm9vdHN0cmFwCitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgdGVzdF91dGlsCisKK2luaXQgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKIAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKQEAgLTMyLDE0ICszMSwyMCBAQAogICAgICAgICB0ZXN0X3RpbWVvdXQgPSBOb25lCiAgICAgICAgICMgX3JlbGVhc2Vfc2F2ZSgpIHVuc3VwcG9ydGVkCiAgICAgICAgIHRlc3RfcmVsZWFzZV9zYXZlX3VuYWNxdWlyZWQgPSBOb25lCisgICAgICAgICMgbG9jayBzdGF0dXMgaW4gcmVwciB1bnN1cHBvcnRlZAorICAgICAgICB0ZXN0X3JlcHIgPSBOb25lCisgICAgICAgIHRlc3RfbG9ja2VkX3JlcHIgPSBOb25lCiAKLSAgICBjbGFzcyBGcm96ZW5fTW9kdWxlTG9ja0FzUkxvY2tUZXN0cyhNb2R1bGVMb2NrQXNSTG9ja1Rlc3RzLCBsb2NrX3Rlc3RzLlJMb2NrVGVzdHMpOgotICAgICAgICBMb2NrVHlwZSA9IGZyb3plbl9ib290c3RyYXAuX01vZHVsZUxvY2sKKyAgICBMT0NLX1RZUEVTID0ge2tpbmQ6IHNwbGl0aW5pdC5fYm9vdHN0cmFwLl9Nb2R1bGVMb2NrCisgICAgICAgICAgICAgICAgICBmb3Iga2luZCwgc3BsaXRpbml0IGluIGluaXQuaXRlbXMoKX0KIAotICAgIGNsYXNzIFNvdXJjZV9Nb2R1bGVMb2NrQXNSTG9ja1Rlc3RzKE1vZHVsZUxvY2tBc1JMb2NrVGVzdHMsIGxvY2tfdGVzdHMuUkxvY2tUZXN0cyk6Ci0gICAgICAgIExvY2tUeXBlID0gc291cmNlX2Jvb3RzdHJhcC5fTW9kdWxlTG9jawotCisgICAgKEZyb3plbl9Nb2R1bGVMb2NrQXNSTG9ja1Rlc3RzLAorICAgICBTb3VyY2VfTW9kdWxlTG9ja0FzUkxvY2tUZXN0cworICAgICApID0gdGVzdF91dGlsLnRlc3RfYm90aChNb2R1bGVMb2NrQXNSTG9ja1Rlc3RzLCBsb2NrX3Rlc3RzLlJMb2NrVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2tUeXBlPUxPQ0tfVFlQRVMpCiBlbHNlOgorICAgIExPQ0tfVFlQRVMgPSB7fQorCiAgICAgY2xhc3MgRnJvemVuX01vZHVsZUxvY2tBc1JMb2NrVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBwYXNzCiAKQEAgLTQ3LDc4ICs1Miw5NCBAQAogICAgICAgICBwYXNzCiAKIAotY2xhc3MgRGVhZGxvY2tBdm9pZGFuY2VUZXN0czoKK2lmIHRocmVhZGluZyBpcyBub3QgTm9uZToKKyAgICBjbGFzcyBEZWFkbG9ja0F2b2lkYW5jZVRlc3RzOgogCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCA9IHN5cy5nZXRzd2l0Y2hpbnRlcnZhbCgpCi0gICAgICAgICAgICBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwoMC4wMDAwMDEpCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHNlbGYub2xkX3N3aXRjaGludGVydmFsID0gTm9uZQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBpZiBzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbChzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCkKLQotICAgIGRlZiBydW5fZGVhZGxvY2tfYXZvaWRhbmNlX3Rlc3Qoc2VsZiwgY3JlYXRlX2RlYWRsb2NrKToKLSAgICAgICAgTkxPQ0tTID0gMTAKLSAgICAgICAgbG9ja3MgPSBbc2VsZi5Mb2NrVHlwZShzdHIoaSkpIGZvciBpIGluIHJhbmdlKE5MT0NLUyldCi0gICAgICAgIHBhaXJzID0gWyhsb2Nrc1tpXSwgbG9ja3NbKGkrMSklTkxPQ0tTXSkgZm9yIGkgaW4gcmFuZ2UoTkxPQ0tTKV0KLSAgICAgICAgaWYgY3JlYXRlX2RlYWRsb2NrOgotICAgICAgICAgICAgTlRIUkVBRFMgPSBOTE9DS1MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIE5USFJFQURTID0gTkxPQ0tTIC0gMQotICAgICAgICBiYXJyaWVyID0gdGhyZWFkaW5nLkJhcnJpZXIoTlRIUkVBRFMpCi0gICAgICAgIHJlc3VsdHMgPSBbXQotICAgICAgICBkZWYgX2FjcXVpcmUobG9jayk6Ci0gICAgICAgICAgICAiIiJUcnkgdG8gYWNxdWlyZSB0aGUgbG9jay4gUmV0dXJuIFRydWUgb24gc3VjY2VzcywgRmFsc2Ugb24gZGVhZGxvY2suIiIiCisgICAgICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBsb2NrLmFjcXVpcmUoKQotICAgICAgICAgICAgZXhjZXB0IHNlbGYuRGVhZGxvY2tFcnJvcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICBzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCA9IHN5cy5nZXRzd2l0Y2hpbnRlcnZhbCgpCisgICAgICAgICAgICAgICAgc3lzLnNldHN3aXRjaGludGVydmFsKDAuMDAwMDAxKQorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgIHNlbGYub2xkX3N3aXRjaGludGVydmFsID0gTm9uZQorCisgICAgICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgICAgIGlmIHNlbGYub2xkX3N3aXRjaGludGVydmFsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbChzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCkKKworICAgICAgICBkZWYgcnVuX2RlYWRsb2NrX2F2b2lkYW5jZV90ZXN0KHNlbGYsIGNyZWF0ZV9kZWFkbG9jayk6CisgICAgICAgICAgICBOTE9DS1MgPSAxMAorICAgICAgICAgICAgbG9ja3MgPSBbc2VsZi5Mb2NrVHlwZShzdHIoaSkpIGZvciBpIGluIHJhbmdlKE5MT0NLUyldCisgICAgICAgICAgICBwYWlycyA9IFsobG9ja3NbaV0sIGxvY2tzWyhpKzEpJU5MT0NLU10pIGZvciBpIGluIHJhbmdlKE5MT0NLUyldCisgICAgICAgICAgICBpZiBjcmVhdGVfZGVhZGxvY2s6CisgICAgICAgICAgICAgICAgTlRIUkVBRFMgPSBOTE9DS1MKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgZGVmIGYoKToKLSAgICAgICAgICAgIGEsIGIgPSBwYWlycy5wb3AoKQotICAgICAgICAgICAgcmEgPSBfYWNxdWlyZShhKQotICAgICAgICAgICAgYmFycmllci53YWl0KCkKLSAgICAgICAgICAgIHJiID0gX2FjcXVpcmUoYikKLSAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKChyYSwgcmIpKQotICAgICAgICAgICAgaWYgcmI6Ci0gICAgICAgICAgICAgICAgYi5yZWxlYXNlKCkKLSAgICAgICAgICAgIGlmIHJhOgotICAgICAgICAgICAgICAgIGEucmVsZWFzZSgpCi0gICAgICAgIGxvY2tfdGVzdHMuQnVuY2goZiwgTlRIUkVBRFMpLndhaXRfZm9yX2ZpbmlzaGVkKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIE5USFJFQURTKQotICAgICAgICByZXR1cm4gcmVzdWx0cworICAgICAgICAgICAgICAgIE5USFJFQURTID0gTkxPQ0tTIC0gMQorICAgICAgICAgICAgYmFycmllciA9IHRocmVhZGluZy5CYXJyaWVyKE5USFJFQURTKQorICAgICAgICAgICAgcmVzdWx0cyA9IFtdCiAKLSAgICBkZWYgdGVzdF9kZWFkbG9jayhzZWxmKToKLSAgICAgICAgcmVzdWx0cyA9IHNlbGYucnVuX2RlYWRsb2NrX2F2b2lkYW5jZV90ZXN0KFRydWUpCi0gICAgICAgICMgQXQgbGVhc3Qgb25lIG9mIHRoZSB0aHJlYWRzIGRldGVjdGVkIGEgcG90ZW50aWFsIGRlYWRsb2NrIG9uIGl0cwotICAgICAgICAjIHNlY29uZCBhY3F1aXJlKCkgY2FsbC4gIEl0IG1heSBiZSBzZXZlcmFsIG9mIHRoZW0sIGJlY2F1c2UgdGhlCi0gICAgICAgICMgZGVhZGxvY2sgYXZvaWRhbmNlIG1lY2hhbmlzbSBpcyBjb25zZXJ2YXRpdmUuCi0gICAgICAgIG5iX2RlYWRsb2NrcyA9IHJlc3VsdHMuY291bnQoKFRydWUsIEZhbHNlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobmJfZGVhZGxvY2tzLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMuY291bnQoKFRydWUsIFRydWUpKSwgbGVuKHJlc3VsdHMpIC0gbmJfZGVhZGxvY2tzKQorICAgICAgICAgICAgZGVmIF9hY3F1aXJlKGxvY2spOgorICAgICAgICAgICAgICAgICIiIlRyeSB0byBhY3F1aXJlIHRoZSBsb2NrLiBSZXR1cm4gVHJ1ZSBvbiBzdWNjZXNzLAorICAgICAgICAgICAgICAgIEZhbHNlIG9uIGRlYWRsb2NrLiIiIgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgbG9jay5hY3F1aXJlKCkKKyAgICAgICAgICAgICAgICBleGNlcHQgc2VsZi5EZWFkbG9ja0Vycm9yOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAgZGVmIHRlc3Rfbm9fZGVhZGxvY2soc2VsZik6Ci0gICAgICAgIHJlc3VsdHMgPSBzZWxmLnJ1bl9kZWFkbG9ja19hdm9pZGFuY2VfdGVzdChGYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBGYWxzZSkpLCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMuY291bnQoKFRydWUsIFRydWUpKSwgbGVuKHJlc3VsdHMpKQorICAgICAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgICAgICBhLCBiID0gcGFpcnMucG9wKCkKKyAgICAgICAgICAgICAgICByYSA9IF9hY3F1aXJlKGEpCisgICAgICAgICAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgICAgICAgICByYiA9IF9hY3F1aXJlKGIpCisgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoKHJhLCByYikpCisgICAgICAgICAgICAgICAgaWYgcmI6CisgICAgICAgICAgICAgICAgICAgIGIucmVsZWFzZSgpCisgICAgICAgICAgICAgICAgaWYgcmE6CisgICAgICAgICAgICAgICAgICAgIGEucmVsZWFzZSgpCisgICAgICAgICAgICBsb2NrX3Rlc3RzLkJ1bmNoKGYsIE5USFJFQURTKS53YWl0X2Zvcl9maW5pc2hlZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgTlRIUkVBRFMpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0cwogCi1AdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICJ0aHJlYWRzIG5lZWRlZCBmb3IgdGhpcyB0ZXN0IikKLWNsYXNzIEZyb3plbl9EZWFkbG9ja0F2b2lkYW5jZVRlc3RzKERlYWRsb2NrQXZvaWRhbmNlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBMb2NrVHlwZSA9IGZyb3plbl9ib290c3RyYXAuX01vZHVsZUxvY2sKLSAgICBEZWFkbG9ja0Vycm9yID0gZnJvemVuX2Jvb3RzdHJhcC5fRGVhZGxvY2tFcnJvcgorICAgICAgICBkZWYgdGVzdF9kZWFkbG9jayhzZWxmKToKKyAgICAgICAgICAgIHJlc3VsdHMgPSBzZWxmLnJ1bl9kZWFkbG9ja19hdm9pZGFuY2VfdGVzdChUcnVlKQorICAgICAgICAgICAgIyBBdCBsZWFzdCBvbmUgb2YgdGhlIHRocmVhZHMgZGV0ZWN0ZWQgYSBwb3RlbnRpYWwgZGVhZGxvY2sgb24gaXRzCisgICAgICAgICAgICAjIHNlY29uZCBhY3F1aXJlKCkgY2FsbC4gIEl0IG1heSBiZSBzZXZlcmFsIG9mIHRoZW0sIGJlY2F1c2UgdGhlCisgICAgICAgICAgICAjIGRlYWRsb2NrIGF2b2lkYW5jZSBtZWNoYW5pc20gaXMgY29uc2VydmF0aXZlLgorICAgICAgICAgICAgbmJfZGVhZGxvY2tzID0gcmVzdWx0cy5jb3VudCgoVHJ1ZSwgRmFsc2UpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobmJfZGVhZGxvY2tzLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBUcnVlKSksIGxlbihyZXN1bHRzKSAtIG5iX2RlYWRsb2NrcykKIAotQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAidGhyZWFkcyBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCi1jbGFzcyBTb3VyY2VfRGVhZGxvY2tBdm9pZGFuY2VUZXN0cyhEZWFkbG9ja0F2b2lkYW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgTG9ja1R5cGUgPSBzb3VyY2VfYm9vdHN0cmFwLl9Nb2R1bGVMb2NrCi0gICAgRGVhZGxvY2tFcnJvciA9IHNvdXJjZV9ib290c3RyYXAuX0RlYWRsb2NrRXJyb3IKKyAgICAgICAgZGVmIHRlc3Rfbm9fZGVhZGxvY2soc2VsZik6CisgICAgICAgICAgICByZXN1bHRzID0gc2VsZi5ydW5fZGVhZGxvY2tfYXZvaWRhbmNlX3Rlc3QoRmFsc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMuY291bnQoKFRydWUsIEZhbHNlKSksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMuY291bnQoKFRydWUsIFRydWUpKSwgbGVuKHJlc3VsdHMpKQorCisKKyAgICBERUFETE9DS19FUlJPUlMgPSB7a2luZDogc3BsaXRpbml0Ll9ib290c3RyYXAuX0RlYWRsb2NrRXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIGtpbmQsIHNwbGl0aW5pdCBpbiBpbml0Lml0ZW1zKCl9CisKKyAgICAoRnJvemVuX0RlYWRsb2NrQXZvaWRhbmNlVGVzdHMsCisgICAgIFNvdXJjZV9EZWFkbG9ja0F2b2lkYW5jZVRlc3RzCisgICAgICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKERlYWRsb2NrQXZvaWRhbmNlVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2tUeXBlPUxPQ0tfVFlQRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlYWRsb2NrRXJyb3I9REVBRExPQ0tfRVJST1JTKQorZWxzZToKKyAgICBERUFETE9DS19FUlJPUlMgPSB7fQorCisgICAgY2xhc3MgRnJvemVuX0RlYWRsb2NrQXZvaWRhbmNlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICBwYXNzCisKKyAgICBjbGFzcyBTb3VyY2VfRGVhZGxvY2tBdm9pZGFuY2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgIHBhc3MKIAogCiBjbGFzcyBMaWZldGltZVRlc3RzOgogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGJvb3RzdHJhcChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuaW5pdC5fYm9vdHN0cmFwCisKICAgICBkZWYgdGVzdF9sb2NrX2xpZmV0aW1lKHNlbGYpOgogICAgICAgICBuYW1lID0gInh5enp5IgogICAgICAgICBzZWxmLmFzc2VydE5vdEluKG5hbWUsIHNlbGYuYm9vdHN0cmFwLl9tb2R1bGVfbG9ja3MpCkBAIC0xMzUsMTEgKzE1NiwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihzZWxmLmJvb3RzdHJhcC5fbW9kdWxlX2xvY2tzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJvb3RzdHJhcC5fbW9kdWxlX2xvY2tzKQogCi1jbGFzcyBGcm96ZW5fTGlmZXRpbWVUZXN0cyhMaWZldGltZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgYm9vdHN0cmFwID0gZnJvemVuX2Jvb3RzdHJhcAogCi1jbGFzcyBTb3VyY2VfTGlmZXRpbWVUZXN0cyhMaWZldGltZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgYm9vdHN0cmFwID0gc291cmNlX2Jvb3RzdHJhcAorKEZyb3plbl9MaWZldGltZVRlc3RzLAorIFNvdXJjZV9MaWZldGltZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoTGlmZXRpbWVUZXN0cywgaW5pdD1pbml0KQogCiAKIEBzdXBwb3J0LnJlYXBfdGhyZWFkcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9zcGVjLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9zcGVjLnB5CmluZGV4IDcxNTQxZjYuLjhiMzMzZTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfc3BlYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3NwZWMucHkKQEAgLTEsMTAgKzEsOCBAQAotZnJvbSAuIGltcG9ydCB1dGlsCitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgdGVzdF91dGlsCiAKLWZyb3plbl9pbml0LCBzb3VyY2VfaW5pdCA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKLWZyb3plbl9ib290c3RyYXAgPSBmcm96ZW5faW5pdC5fYm9vdHN0cmFwCi1zb3VyY2VfYm9vdHN0cmFwID0gc291cmNlX2luaXQuX2Jvb3RzdHJhcAotZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCi1mcm96ZW5fdXRpbCwgc291cmNlX3V0aWwgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi51dGlsJykKK2luaXQgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKK21hY2hpbmVyeSA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKK3V0aWwgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLnV0aWwnKQogCiBpbXBvcnQgb3MucGF0aAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IENsZWFuSW1wb3J0CkBAIC0zNiw2ICszNCw5IEBACiAgICAgZGVmIF9pc19wYWNrYWdlKHNlbGYsIG5hbWUpOgogICAgICAgICByZXR1cm4gc2VsZi5wYWNrYWdlCiAKKyAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKwogCiBjbGFzcyBOZXdMb2FkZXIoVGVzdExvYWRlcik6CiAKQEAgLTUyLDYgKzUzLDggQEAKICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQogCisgICAgICAgIGZyb3plbl91dGlsID0gdXRpbFsnRnJvemVuJ10KKwogICAgICAgICBAZnJvemVuX3V0aWwubW9kdWxlX2Zvcl9sb2FkZXIKICAgICAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgICAgICBtb2R1bGUuaGFtID0gc2VsZi5IQU0KQEAgLTIyMSwxOCArMjI0LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2Nfc3BlYy5jYWNoZWQsICdzcGFtLnB5YycpCiAKIAotY2xhc3MgRnJvemVuX01vZHVsZVNwZWNUZXN0cyhNb2R1bGVTcGVjVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICB1dGlsID0gZnJvemVuX3V0aWwKLSAgICBtYWNoaW5lcnkgPSBmcm96ZW5fbWFjaGluZXJ5Ci0KLQotY2xhc3MgU291cmNlX01vZHVsZVNwZWNUZXN0cyhNb2R1bGVTcGVjVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICB1dGlsID0gc291cmNlX3V0aWwKLSAgICBtYWNoaW5lcnkgPSBzb3VyY2VfbWFjaGluZXJ5CisoRnJvemVuX01vZHVsZVNwZWNUZXN0cywKKyBTb3VyY2VfTW9kdWxlU3BlY1Rlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoTW9kdWxlU3BlY1Rlc3RzLCB1dGlsPXV0aWwsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogY2xhc3MgTW9kdWxlU3BlY01ldGhvZHNUZXN0czoKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBib290c3RyYXAoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmluaXQuX2Jvb3RzdHJhcAorCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLm5hbWUgPSAnc3BhbScKICAgICAgICAgc2VsZi5wYXRoID0gJ3NwYW0ucHknCkBAIC0yNDMsMTUyICsyNDUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luPXNlbGYucGF0aCkKICAgICAgICAgc2VsZi5sb2Nfc3BlYy5fc2V0X2ZpbGVhdHRyID0gVHJ1ZQogCi0gICAgIyBpbml0X21vZHVsZV9hdHRycwotCi0gICAgZGVmIHRlc3RfaW5pdF9tb2R1bGVfYXR0cnMoc2VsZik6Ci0gICAgICAgIG1vZHVsZSA9IHR5cGUoc3lzKShzZWxmLm5hbWUpCi0gICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKHNlbGYubmFtZSwgc2VsZi5sb2FkZXIpCi0gICAgICAgIHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzcGVjKS5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIHNwZWMubmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19sb2FkZXJfXywgc3BlYy5sb2FkZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGFja2FnZV9fLCBzcGVjLnBhcmVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19zcGVjX18sIHNwZWMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fY2FjaGVkX18nKSkKLQotICAgIGRlZiB0ZXN0X2luaXRfbW9kdWxlX2F0dHJzX3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgIG1vZHVsZSA9IHR5cGUoc3lzKShzZWxmLm5hbWUpCi0gICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKHNlbGYubmFtZSwgc2VsZi5sb2FkZXIpCi0gICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBbJ3NwYW0nLCAnaGFtJ10KLSAgICAgICAgc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNwZWMpLmluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgc3BlYy5uYW1lKQotICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX2xvYWRlcl9fLCBzcGVjLmxvYWRlcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19wYWNrYWdlX18sIHNwZWMucGFyZW50KQotICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX3NwZWNfXywgc3BlYykKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19wYXRoX18sIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX2ZpbGVfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19jYWNoZWRfXycpKQotCi0gICAgZGVmIHRlc3RfaW5pdF9tb2R1bGVfYXR0cnNfbG9jYXRpb24oc2VsZik6Ci0gICAgICAgIG1vZHVsZSA9IHR5cGUoc3lzKShzZWxmLm5hbWUpCi0gICAgICAgIHNwZWMgPSBzZWxmLmxvY19zcGVjCi0gICAgICAgIHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzcGVjKS5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIHNwZWMubmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19sb2FkZXJfXywgc3BlYy5sb2FkZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGFja2FnZV9fLCBzcGVjLnBhcmVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19zcGVjX18sIHNwZWMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX2ZpbGVfXywgc3BlYy5vcmlnaW4pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fY2FjaGVkX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHNwZWMub3JpZ2luKSkKLQotICAgIGRlZiB0ZXN0X2luaXRfbW9kdWxlX2F0dHJzX2RpZmZlcmVudF9uYW1lKHNlbGYpOgotICAgICAgICBtb2R1bGUgPSB0eXBlKHN5cykoJ2VnZ3MnKQotICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYyhzZWxmLm5hbWUsIHNlbGYubG9hZGVyKQotICAgICAgICBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykuaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBzcGVjLm5hbWUpCi0KLSAgICBkZWYgdGVzdF9pbml0X21vZHVsZV9hdHRyc19kaWZmZXJlbnRfc3BlYyhzZWxmKToKLSAgICAgICAgbW9kdWxlID0gdHlwZShzeXMpKHNlbGYubmFtZSkKLSAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygnZWdncycsIG9iamVjdCgpKQotICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYyhzZWxmLm5hbWUsIHNlbGYubG9hZGVyKQotICAgICAgICBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykuaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBzcGVjLm5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fbG9hZGVyX18sIHNwZWMubG9hZGVyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgc3BlYy5wYXJlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fc3BlY19fLCBzcGVjKQotCi0gICAgZGVmIHRlc3RfaW5pdF9tb2R1bGVfYXR0cnNfYWxyZWFkeV9zZXQoc2VsZik6Ci0gICAgICAgIG1vZHVsZSA9IHR5cGUoc3lzKSgnaGFtLmVnZ3MnKQotICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IG9iamVjdCgpCi0gICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9ICdoYW0nCi0gICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IFsnZWdncyddCi0gICAgICAgIG1vZHVsZS5fX2ZpbGVfXyA9ICdoYW0vZWdncy9fX2luaXRfXy5weScKLSAgICAgICAgbW9kdWxlLl9fY2FjaGVkX18gPSBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UobW9kdWxlLl9fZmlsZV9fKQotICAgICAgICBvcmlnaW5hbCA9IHZhcnMobW9kdWxlKS5jb3B5KCkKLSAgICAgICAgc3BlYyA9IHNlbGYubG9jX3NwZWMKLSAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IFsnJ10KLSAgICAgICAgc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNwZWMpLmluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSkKLQotICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX2xvYWRlcl9fLCBvcmlnaW5hbFsnX19sb2FkZXJfXyddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgb3JpZ2luYWxbJ19fcGFja2FnZV9fJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fcGF0aF9fLCBvcmlnaW5hbFsnX19wYXRoX18nXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19maWxlX18sIG9yaWdpbmFsWydfX2ZpbGVfXyddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX2NhY2hlZF9fLCBvcmlnaW5hbFsnX19jYWNoZWRfXyddKQotCi0gICAgZGVmIHRlc3RfaW5pdF9tb2R1bGVfYXR0cnNfaW1tdXRhYmxlKHNlbGYpOgotICAgICAgICBtb2R1bGUgPSBvYmplY3QoKQotICAgICAgICBzcGVjID0gc2VsZi5sb2Nfc3BlYwotICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gWycnXQotICAgICAgICBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykuaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX25hbWVfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19sb2FkZXJfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fc3BlY19fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fY2FjaGVkX18nKSkKLQotICAgICMgY3JlYXRlKCkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZShzZWxmKToKLSAgICAgICAgY3JlYXRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmNyZWF0ZSgpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcmVhdGVkLl9fbmFtZV9fLCBzZWxmLnNwZWMubmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhjcmVhdGVkLl9fbG9hZGVyX18sIHNlbGYuc3BlYy5sb2FkZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3JlYXRlZC5fX3BhY2thZ2VfXywgc2VsZi5zcGVjLnBhcmVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhjcmVhdGVkLl9fc3BlY19fLCBzZWxmLnNwZWMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihjcmVhdGVkLCAnX19wYXRoX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGNyZWF0ZWQsICdfX2ZpbGVfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoY3JlYXRlZCwgJ19fY2FjaGVkX18nKSkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9mcm9tX2xvYWRlcihzZWxmKToKLSAgICAgICAgbW9kdWxlID0gdHlwZShzeXMuaW1wbGVtZW50YXRpb24pKCkKLSAgICAgICAgY2xhc3MgQ3JlYXRpbmdMb2FkZXIoVGVzdExvYWRlcik6Ci0gICAgICAgICAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKLSAgICAgICAgICAgICAgICByZXR1cm4gbW9kdWxlCi0gICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBDcmVhdGluZ0xvYWRlcigpCi0gICAgICAgIGNyZWF0ZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5jcmVhdGUoKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoY3JlYXRlZCwgbW9kdWxlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWF0ZWQuX19uYW1lX18sIHNlbGYuc3BlYy5uYW1lKQotICAgICAgICBzZWxmLmFzc2VydElzKGNyZWF0ZWQuX19sb2FkZXJfXywgc2VsZi5zcGVjLmxvYWRlcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcmVhdGVkLl9fcGFja2FnZV9fLCBzZWxmLnNwZWMucGFyZW50KQotICAgICAgICBzZWxmLmFzc2VydElzKGNyZWF0ZWQuX19zcGVjX18sIHNlbGYuc3BlYykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGNyZWF0ZWQsICdfX3BhdGhfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoY3JlYXRlZCwgJ19fZmlsZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihjcmVhdGVkLCAnX19jYWNoZWRfXycpKQotCi0gICAgZGVmIHRlc3RfY3JlYXRlX2Zyb21fbG9hZGVyX25vdF9oYW5kbGVkKHNlbGYpOgotICAgICAgICBjbGFzcyBDcmVhdGluZ0xvYWRlcihUZXN0TG9hZGVyKToKLSAgICAgICAgICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIHNwZWMpOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBDcmVhdGluZ0xvYWRlcigpCi0gICAgICAgIGNyZWF0ZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5jcmVhdGUoKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3JlYXRlZC5fX25hbWVfXywgc2VsZi5zcGVjLm5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoY3JlYXRlZC5fX2xvYWRlcl9fLCBzZWxmLnNwZWMubG9hZGVyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWF0ZWQuX19wYWNrYWdlX18sIHNlbGYuc3BlYy5wYXJlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoY3JlYXRlZC5fX3NwZWNfXywgc2VsZi5zcGVjKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoY3JlYXRlZCwgJ19fcGF0aF9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihjcmVhdGVkLCAnX19maWxlX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGNyZWF0ZWQsICdfX2NhY2hlZF9fJykpCi0KICAgICAjIGV4ZWMoKQogCiAgICAgZGVmIHRlc3RfZXhlYyhzZWxmKToKICAgICAgICAgc2VsZi5zcGVjLmxvYWRlciA9IE5ld0xvYWRlcigpCi0gICAgICAgIG1vZHVsZSA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmNyZWF0ZSgpCisgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNlbGYuc3BlYykKICAgICAgICAgc3lzLm1vZHVsZXNbc2VsZi5uYW1lXSA9IG1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnZWdncycpKQotICAgICAgICBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5leGVjKG1vZHVsZSkKKyAgICAgICAgc2VsZi5ib290c3RyYXAuX2V4ZWMoc2VsZi5zcGVjLCBtb2R1bGUpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuZWdncywgMSkKIApAQCAtMzk3LDcgKzI2MSw3IEBACiAgICAgZGVmIHRlc3RfbG9hZChzZWxmKToKICAgICAgICAgc2VsZi5zcGVjLmxvYWRlciA9IE5ld0xvYWRlcigpCiAgICAgICAgIHdpdGggQ2xlYW5JbXBvcnQoc2VsZi5zcGVjLm5hbWUpOgotICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykubG9hZCgpCisgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fbG9hZChzZWxmLnNwZWMpCiAgICAgICAgICAgICBpbnN0YWxsZWQgPSBzeXMubW9kdWxlc1tzZWxmLnNwZWMubmFtZV0KIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRlZC5lZ2dzLCAxKQpAQCAtNDEwLDcgKzI3NCw3IEBACiAgICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbbW9kdWxlLl9fbmFtZV9fXSA9IHJlcGxhY2VtZW50CiAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBSZXBsYWNpbmdMb2FkZXIoKQogICAgICAgICB3aXRoIENsZWFuSW1wb3J0KHNlbGYuc3BlYy5uYW1lKToKLSAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmxvYWQoKQorICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2xvYWQoc2VsZi5zcGVjKQogICAgICAgICAgICAgaW5zdGFsbGVkID0gc3lzLm1vZHVsZXNbc2VsZi5zcGVjLm5hbWVdCiAKICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZWQsIHJlcGxhY2VtZW50KQpAQCAtNDIzLDcgKzI4Nyw3IEBACiAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBGYWlsZWRMb2FkZXIoKQogICAgICAgICB3aXRoIENsZWFuSW1wb3J0KHNlbGYuc3BlYy5uYW1lKToKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKLSAgICAgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5sb2FkKCkKKyAgICAgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fbG9hZChzZWxmLnNwZWMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKHNlbGYuc3BlYy5uYW1lLCBzeXMubW9kdWxlcykKIAogICAgIGRlZiB0ZXN0X2xvYWRfZmFpbGVkX3JlbW92ZWQoc2VsZik6CkBAIC00MzQsMjAgKzI5OCwyMCBAQAogICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gRmFpbGVkTG9hZGVyKCkKICAgICAgICAgd2l0aCBDbGVhbkltcG9ydChzZWxmLnNwZWMubmFtZSk6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6Ci0gICAgICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykubG9hZCgpCisgICAgICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2xvYWQoc2VsZi5zcGVjKQogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihzZWxmLnNwZWMubmFtZSwgc3lzLm1vZHVsZXMpCiAKICAgICBkZWYgdGVzdF9sb2FkX2xlZ2FjeShzZWxmKToKICAgICAgICAgc2VsZi5zcGVjLmxvYWRlciA9IExlZ2FjeUxvYWRlcigpCiAgICAgICAgIHdpdGggQ2xlYW5JbXBvcnQoc2VsZi5zcGVjLm5hbWUpOgotICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykubG9hZCgpCisgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fbG9hZChzZWxmLnNwZWMpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2FkZWQuaGFtLCAtMSkKIAogICAgIGRlZiB0ZXN0X2xvYWRfbGVnYWN5X2F0dHJpYnV0ZXMoc2VsZik6CiAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBMZWdhY3lMb2FkZXIoKQogICAgICAgICB3aXRoIENsZWFuSW1wb3J0KHNlbGYuc3BlYy5uYW1lKToKLSAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmxvYWQoKQorICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2xvYWQoc2VsZi5zcGVjKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVkLl9fbG9hZGVyX18sIHNlbGYuc3BlYy5sb2FkZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVkLl9fcGFja2FnZV9fLCBzZWxmLnNwZWMucGFyZW50KQpAQCAtNDYxLDcgKzMyNSw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZHVsZQogICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gSW1tdXRhYmxlTG9hZGVyKCkKICAgICAgICAgd2l0aCBDbGVhbkltcG9ydChzZWxmLnNwZWMubmFtZSk6Ci0gICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5sb2FkKCkKKyAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9sb2FkKHNlbGYuc3BlYykKIAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzeXMubW9kdWxlc1tzZWxmLnNwZWMubmFtZV0sIG1vZHVsZSkKIApAQCAtNDcwLDggKzMzNCw4IEBACiAgICAgZGVmIHRlc3RfcmVsb2FkKHNlbGYpOgogICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gTmV3TG9hZGVyKCkKICAgICAgICAgd2l0aCBDbGVhbkltcG9ydChzZWxmLnNwZWMubmFtZSk6Ci0gICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5sb2FkKCkKLSAgICAgICAgICAgIHJlbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykuZXhlYyhsb2FkZWQpCisgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fbG9hZChzZWxmLnNwZWMpCisgICAgICAgICAgICByZWxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9leGVjKHNlbGYuc3BlYywgbG9hZGVkKQogICAgICAgICAgICAgaW5zdGFsbGVkID0gc3lzLm1vZHVsZXNbc2VsZi5zcGVjLm5hbWVdCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2FkZWQuZWdncywgMSkKQEAgLTQ4MSw5ICszNDUsOSBAQAogICAgIGRlZiB0ZXN0X3JlbG9hZF9tb2RpZmllZChzZWxmKToKICAgICAgICAgc2VsZi5zcGVjLmxvYWRlciA9IE5ld0xvYWRlcigpCiAgICAgICAgIHdpdGggQ2xlYW5JbXBvcnQoc2VsZi5zcGVjLm5hbWUpOgotICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykubG9hZCgpCisgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fbG9hZChzZWxmLnNwZWMpCiAgICAgICAgICAgICBsb2FkZWQuZWdncyA9IDIKLSAgICAgICAgICAgIHJlbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykuZXhlYyhsb2FkZWQpCisgICAgICAgICAgICByZWxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9leGVjKHNlbGYuc3BlYywgbG9hZGVkKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVkLmVnZ3MsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMocmVsb2FkZWQsIGxvYWRlZCkKQEAgLTQ5MSw5ICszNTUsOSBAQAogICAgIGRlZiB0ZXN0X3JlbG9hZF9leHRyYV9hdHRyaWJ1dGVzKHNlbGYpOgogICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gTmV3TG9hZGVyKCkKICAgICAgICAgd2l0aCBDbGVhbkltcG9ydChzZWxmLnNwZWMubmFtZSk6Ci0gICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5sb2FkKCkKKyAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9sb2FkKHNlbGYuc3BlYykKICAgICAgICAgICAgIGxvYWRlZC5hdmFpbGFibGUgPSBGYWxzZQotICAgICAgICAgICAgcmVsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5leGVjKGxvYWRlZCkKKyAgICAgICAgICAgIHJlbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2V4ZWMoc2VsZi5zcGVjLCBsb2FkZWQpCiAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2FkZWQuYXZhaWxhYmxlKQogICAgICAgICBzZWxmLmFzc2VydElzKHJlbG9hZGVkLCBsb2FkZWQpCkBAIC01MDEsMTIgKzM2NSwxMiBAQAogICAgIGRlZiB0ZXN0X3JlbG9hZF9pbml0X21vZHVsZV9hdHRycyhzZWxmKToKICAgICAgICAgc2VsZi5zcGVjLmxvYWRlciA9IE5ld0xvYWRlcigpCiAgICAgICAgIHdpdGggQ2xlYW5JbXBvcnQoc2VsZi5zcGVjLm5hbWUpOgotICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykubG9hZCgpCisgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fbG9hZChzZWxmLnNwZWMpCiAgICAgICAgICAgICBsb2FkZWQuX19uYW1lX18gPSAnaGFtJwogICAgICAgICAgICAgZGVsIGxvYWRlZC5fX2xvYWRlcl9fCiAgICAgICAgICAgICBkZWwgbG9hZGVkLl9fcGFja2FnZV9fCiAgICAgICAgICAgICBkZWwgbG9hZGVkLl9fc3BlY19fCi0gICAgICAgICAgICBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5leGVjKGxvYWRlZCkKKyAgICAgICAgICAgIHNlbGYuYm9vdHN0cmFwLl9leGVjKHNlbGYuc3BlYywgbG9hZGVkKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVkLl9fbmFtZV9fLCBzZWxmLnNwZWMubmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZWQuX19sb2FkZXJfXywgc2VsZi5zcGVjLmxvYWRlcikKQEAgLTUxOSw4ICszODMsOCBAQAogICAgIGRlZiB0ZXN0X3JlbG9hZF9sZWdhY3koc2VsZik6CiAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBMZWdhY3lMb2FkZXIoKQogICAgICAgICB3aXRoIENsZWFuSW1wb3J0KHNlbGYuc3BlYy5uYW1lKToKLSAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmxvYWQoKQotICAgICAgICAgICAgcmVsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5leGVjKGxvYWRlZCkKKyAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9sb2FkKHNlbGYuc3BlYykKKyAgICAgICAgICAgIHJlbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2V4ZWMoc2VsZi5zcGVjLCBsb2FkZWQpCiAgICAgICAgICAgICBpbnN0YWxsZWQgPSBzeXMubW9kdWxlc1tzZWxmLnNwZWMubmFtZV0KIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRlZC5oYW0sIC0xKQpAQCAtNTI4LDIwICszOTIsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRJcyhpbnN0YWxsZWQsIGxvYWRlZCkKIAogCi1jbGFzcyBGcm96ZW5fTW9kdWxlU3BlY01ldGhvZHNUZXN0cyhNb2R1bGVTcGVjTWV0aG9kc1Rlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgYm9vdHN0cmFwID0gZnJvemVuX2Jvb3RzdHJhcAotICAgIG1hY2hpbmVyeSA9IGZyb3plbl9tYWNoaW5lcnkKLSAgICB1dGlsID0gZnJvemVuX3V0aWwKLQotCi1jbGFzcyBTb3VyY2VfTW9kdWxlU3BlY01ldGhvZHNUZXN0cyhNb2R1bGVTcGVjTWV0aG9kc1Rlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgYm9vdHN0cmFwID0gc291cmNlX2Jvb3RzdHJhcAotICAgIG1hY2hpbmVyeSA9IHNvdXJjZV9tYWNoaW5lcnkKLSAgICB1dGlsID0gc291cmNlX3V0aWwKKyhGcm96ZW5fTW9kdWxlU3BlY01ldGhvZHNUZXN0cywKKyBTb3VyY2VfTW9kdWxlU3BlY01ldGhvZHNUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKE1vZHVsZVNwZWNNZXRob2RzVGVzdHMsIGluaXQ9aW5pdCwgdXRpbD11dGlsLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogY2xhc3MgTW9kdWxlUmVwclRlc3RzOgogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGJvb3RzdHJhcChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuaW5pdC5fYm9vdHN0cmFwCisKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYubW9kdWxlID0gdHlwZShvcykoJ3NwYW0nKQogICAgICAgICBzZWxmLnNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCdzcGFtJywgVGVzdExvYWRlcigpKQpAQCAtNjI1LDE2ICs0ODcsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2RyZXByLCAnPG1vZHVsZSB7IXJ9PicuZm9ybWF0KCdzcGFtJykpCiAKIAotY2xhc3MgRnJvemVuX01vZHVsZVJlcHJUZXN0cyhNb2R1bGVSZXByVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBib290c3RyYXAgPSBmcm96ZW5fYm9vdHN0cmFwCi0gICAgbWFjaGluZXJ5ID0gZnJvemVuX21hY2hpbmVyeQotICAgIHV0aWwgPSBmcm96ZW5fdXRpbAotCi0KLWNsYXNzIFNvdXJjZV9Nb2R1bGVSZXByVGVzdHMoTW9kdWxlUmVwclRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgYm9vdHN0cmFwID0gc291cmNlX2Jvb3RzdHJhcAotICAgIG1hY2hpbmVyeSA9IHNvdXJjZV9tYWNoaW5lcnkKLSAgICB1dGlsID0gc291cmNlX3V0aWwKKyhGcm96ZW5fTW9kdWxlUmVwclRlc3RzLAorIFNvdXJjZV9Nb2R1bGVSZXByVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChNb2R1bGVSZXByVGVzdHMsIGluaXQ9aW5pdCwgdXRpbD11dGlsLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogY2xhc3MgRmFjdG9yeVRlc3RzOgpAQCAtNzg3LDEzICs2NDMsMTQgQEAKICAgICAjIHNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKCkKIAogICAgIGRlZiB0ZXN0X3NwZWNfZnJvbV9maWxlX2xvY2F0aW9uX2RlZmF1bHQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYubWFjaGluZXJ5IGlzIHNvdXJjZV9tYWNoaW5lcnk6Ci0gICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnbm90IHN1cmUgd2h5IHRoaXMgaXMgYnJlYWtpbmcuLi4nKQogICAgICAgICBzcGVjID0gc2VsZi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKHNlbGYubmFtZSwgc2VsZi5wYXRoKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYy5uYW1lLCBzZWxmLm5hbWUpCisgICAgICAgICMgTmVlZCB0byB1c2UgYSBjaXJjdWl0b3VzIHJvdXRlIHRvIGdldCBhdCBpbXBvcnRsaWIubWFjaGluZXJ5IHRvIG1ha2UKKyAgICAgICAgIyBzdXJlIHRoZSBzYW1lIGNsYXNzIG9iamVjdCBpcyB1c2VkIGluIHRoZSBpc2luc3RhbmNlKCkgY2hlY2sgYXMKKyAgICAgICAgIyB3b3VsZCBoYXZlIGJlZW4gdXNlZCB0byBjcmVhdGUgdGhlIGxvYWRlci4KICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNwZWMubG9hZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudXRpbC5hYmMubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYy5sb2FkZXIubmFtZSwgc2VsZi5uYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwZWMubG9hZGVyLnBhdGgsIHNlbGYucGF0aCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGVjLm9yaWdpbiwgc2VsZi5wYXRoKQpAQCAtOTQ3LDExICs4MDQsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNwZWMuaGFzX2xvY2F0aW9uKQogCiAKLWNsYXNzIEZyb3plbl9GYWN0b3J5VGVzdHMoRmFjdG9yeVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgdXRpbCA9IGZyb3plbl91dGlsCi0gICAgbWFjaGluZXJ5ID0gZnJvemVuX21hY2hpbmVyeQorKEZyb3plbl9GYWN0b3J5VGVzdHMsCisgU291cmNlX0ZhY3RvcnlUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEZhY3RvcnlUZXN0cywgdXRpbD11dGlsLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKLWNsYXNzIFNvdXJjZV9GYWN0b3J5VGVzdHMoRmFjdG9yeVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgdXRpbCA9IHNvdXJjZV91dGlsCi0gICAgbWFjaGluZXJ5ID0gc291cmNlX21hY2hpbmVyeQoraWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weQppbmRleCBiMjgyM2M2Li42OTQ2NmIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5CkBAIC0xLDEwICsxLDExIEBACi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAotZnJvemVuX2luaXQsIHNvdXJjZV9pbml0ID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpCi1mcm96ZW5fbWFjaGluZXJ5LCBzb3VyY2VfbWFjaGluZXJ5ID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQotZnJvemVuX3V0aWwsIHNvdXJjZV91dGlsID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi51dGlsJykKK2Zyb20gLiBpbXBvcnQgdXRpbAorYWJjID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIuYWJjJykKK2luaXQgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpCittYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQoraW1wb3J0bGliX3V0aWwgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi51dGlsJykKIAogaW1wb3J0IG9zCitpbXBvcnQgc3RyaW5nCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB0eXBlcwpAQCAtMzIsOCArMzMsOTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuZGVjb2RlX3NvdXJjZShzb3VyY2VfYnl0ZXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdcbicuam9pbihbc2VsZi5zb3VyY2UsIHNlbGYuc291cmNlXSkpCiAKLUZyb3plbl9EZWNvZGVTb3VyY2VCeXRlc1Rlc3RzLCBTb3VyY2VfRGVjb2RlU291cmNlQnl0ZXNUZXN0cyA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIERlY29kZVNvdXJjZUJ5dGVzVGVzdHMsIHV0aWw9W2Zyb3plbl91dGlsLCBzb3VyY2VfdXRpbF0pCisKKyhGcm96ZW5fRGVjb2RlU291cmNlQnl0ZXNUZXN0cywKKyBTb3VyY2VfRGVjb2RlU291cmNlQnl0ZXNUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChEZWNvZGVTb3VyY2VCeXRlc1Rlc3RzLCB1dGlsPWltcG9ydGxpYl91dGlsKQorCisKK2NsYXNzIE1vZHVsZUZyb21TcGVjVGVzdHM6CisKKyAgICBkZWYgdGVzdF9ub19jcmVhdGVfbW9kdWxlKHNlbGYpOgorICAgICAgICBjbGFzcyBMb2FkZXI6CisgICAgICAgICAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCd0ZXN0JywgTG9hZGVyKCkpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpCisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbih3KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Mod1swXS5jYXRlZ29yeSwgRGVwcmVjYXRpb25XYXJuaW5nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignY3JlYXRlX21vZHVsZScsIHN0cih3WzBdLm1lc3NhZ2UpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlLCB0eXBlcy5Nb2R1bGVUeXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgc3BlYy5uYW1lKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX21vZHVsZV9yZXR1cm5zX05vbmUoc2VsZik6CisgICAgICAgIGNsYXNzIExvYWRlcihzZWxmLmFiYy5Mb2FkZXIpOgorICAgICAgICAgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc2VsZiwgc3BlYyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoJ3Rlc3QnLCBMb2FkZXIoKSkKKyAgICAgICAgbW9kdWxlID0gc2VsZi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIHNwZWMubmFtZSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9tb2R1bGUoc2VsZik6CisgICAgICAgIG5hbWUgPSAnYWxyZWFkeSBzZXQnCisgICAgICAgIGNsYXNzIEN1c3RvbU1vZHVsZSh0eXBlcy5Nb2R1bGVUeXBlKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY2xhc3MgTG9hZGVyKHNlbGYuYWJjLkxvYWRlcik6CisgICAgICAgICAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBDdXN0b21Nb2R1bGUoc3BlYy5uYW1lKQorICAgICAgICAgICAgICAgIG1vZHVsZS5fX25hbWVfXyA9IG5hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gbW9kdWxlCisgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCd0ZXN0JywgTG9hZGVyKCkpCisgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIEN1c3RvbU1vZHVsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCisKKyAgICBkZWYgdGVzdF9fX25hbWVfXyhzZWxmKToKKyAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoJ3Rlc3QnLCBvYmplY3QoKSkKKyAgICAgICAgbW9kdWxlID0gc2VsZi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIHNwZWMubmFtZSkKKworICAgIGRlZiB0ZXN0X19fc3BlY19fKHNlbGYpOgorICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygndGVzdCcsIG9iamVjdCgpKQorICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3NwZWNfXywgc3BlYykKKworICAgIGRlZiB0ZXN0X19fbG9hZGVyX18oc2VsZik6CisgICAgICAgIGxvYWRlciA9IG9iamVjdCgpCisgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCd0ZXN0JywgbG9hZGVyKQorICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX2xvYWRlcl9fLCBsb2FkZXIpCisKKyAgICBkZWYgdGVzdF9fX3BhY2thZ2VfXyhzZWxmKToKKyAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoJ3Rlc3QucGtnJywgb2JqZWN0KCkpCisgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGFja2FnZV9fLCBzcGVjLnBhcmVudCkKKworICAgIGRlZiB0ZXN0X19fcGF0aF9fKHNlbGYpOgorICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygndGVzdCcsIG9iamVjdCgpLCBpc19wYWNrYWdlPVRydWUpCisgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGF0aF9fLCBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zKQorCisgICAgZGVmIHRlc3RfX19maWxlX18oc2VsZik6CisgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCd0ZXN0Jywgb2JqZWN0KCksIG9yaWdpbj0nc29tZS9wYXRoJykKKyAgICAgICAgc3BlYy5oYXNfbG9jYXRpb24gPSBUcnVlCisgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fZmlsZV9fLCBzcGVjLm9yaWdpbikKKworICAgIGRlZiB0ZXN0X19fY2FjaGVkX18oc2VsZik6CisgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCd0ZXN0Jywgb2JqZWN0KCkpCisgICAgICAgIHNwZWMuY2FjaGVkID0gJ3NvbWUvcGF0aCcKKyAgICAgICAgc3BlYy5oYXNfbG9jYXRpb24gPSBUcnVlCisgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fY2FjaGVkX18sIHNwZWMuY2FjaGVkKQorCisoRnJvemVuX01vZHVsZUZyb21TcGVjVGVzdHMsCisgU291cmNlX01vZHVsZUZyb21TcGVjVGVzdHMKKykgPSB1dGlsLnRlc3RfYm90aChNb2R1bGVGcm9tU3BlY1Rlc3RzLCBhYmM9YWJjLCBtYWNoaW5lcnk9bWFjaGluZXJ5LAorICAgICAgICAgICAgICAgICAgIHV0aWw9aW1wb3J0bGliX3V0aWwpCiAKIAogY2xhc3MgTW9kdWxlRm9yTG9hZGVyVGVzdHM6CkBAIC03MCw3ICsxNTcsNyBAQAogICAgICAgICAjIFRlc3QgdGhhdCB3aGVuIG5vIG1vZHVsZSBleGlzdHMgaW4gc3lzLm1vZHVsZXMgYSBuZXcgbW9kdWxlIGlzCiAgICAgICAgICMgY3JlYXRlZC4KICAgICAgICAgbW9kdWxlX25hbWUgPSAnYS5iLmMnCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobW9kdWxlX25hbWUpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShtb2R1bGVfbmFtZSk6CiAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLnJldHVybl9tb2R1bGUobW9kdWxlX25hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZV9uYW1lLCBzeXMubW9kdWxlcykKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkKQEAgLTg4LDcgKzE3NSw3IEBACiAgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUoJ2EuYi5jJykKICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSA0MgogICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSA0MgotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCiAgICAgICAgICAgICBsb2FkZXIgPSBGYWtlTG9hZGVyKCkKICAgICAgICAgICAgIHJldHVybmVkX21vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShuYW1lKQpAQCAtMTAwLDcgKzE4Nyw3IEBACiAgICAgICAgICMgVGVzdCB0aGF0IGEgbW9kdWxlIGlzIHJlbW92ZWQgZnJvbSBzeXMubW9kdWxlcyBpZiBhZGRlZCBidXQgYW4KICAgICAgICAgIyBleGNlcHRpb24gaXMgcmFpc2VkLgogICAgICAgICBuYW1lID0gJ2EuYi5jJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIHNlbGYucmFpc2VfZXhjZXB0aW9uKG5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKG5hbWUsIHN5cy5tb2R1bGVzKQogCkBAIC0xMDgsNyArMTk1LDcgQEAKICAgICAgICAgIyBUZXN0IHRoYXQgYSBmYWlsdXJlIG9uIHJlbG9hZCBsZWF2ZXMgdGhlIG1vZHVsZSBpbi1wbGFjZS4KICAgICAgICAgbmFtZSA9ICdhLmIuYycKICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCiAgICAgICAgICAgICBzZWxmLnJhaXNlX2V4Y2VwdGlvbihuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUsIHN5cy5tb2R1bGVzW25hbWVdKQpAQCAtMTI3LDcgKzIxNCw3IEBACiAKICAgICAgICAgbmFtZSA9ICdtb2QnCiAgICAgICAgIG1vZHVsZSA9IEZhbHNlTW9kdWxlKG5hbWUpCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2R1bGUpCiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQogICAgICAgICAgICAgZ2l2ZW4gPSBzZWxmLnJldHVybl9tb2R1bGUobmFtZSkKQEAgLTE0Niw3ICsyMzMsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBtb2R1bGUKIAogICAgICAgICBuYW1lID0gJ3BrZy5tb2QnCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbG9hZGVyID0gRmFrZUxvYWRlcihGYWxzZSkKICAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCkBAIC0xNTQsMTUgKzI0MSwxNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19wYWNrYWdlX18sICdwa2cnKQogCiAgICAgICAgIG5hbWUgPSAncGtnLnN1YicKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBsb2FkZXIgPSBGYWtlTG9hZGVyKFRydWUpCiAgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19sb2FkZXJfXywgbG9hZGVyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19wYWNrYWdlX18sIG5hbWUpCiAKLUZyb3plbl9Nb2R1bGVGb3JMb2FkZXJUZXN0cywgU291cmNlX01vZHVsZUZvckxvYWRlclRlc3RzID0gdGVzdF91dGlsLnRlc3RfYm90aCgKLSAgICAgICAgTW9kdWxlRm9yTG9hZGVyVGVzdHMsIHV0aWw9W2Zyb3plbl91dGlsLCBzb3VyY2VfdXRpbF0pCisKKyhGcm96ZW5fTW9kdWxlRm9yTG9hZGVyVGVzdHMsCisgU291cmNlX01vZHVsZUZvckxvYWRlclRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKE1vZHVsZUZvckxvYWRlclRlc3RzLCB1dGlsPWltcG9ydGxpYl91dGlsKQogCiAKIGNsYXNzIFNldFBhY2thZ2VUZXN0czoKQEAgLTIyMiwxOCArMzExLDI1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlZC5fX25hbWVfXywgZnhuLl9fbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZWQuX19xdWFsbmFtZV9fLCBmeG4uX19xdWFsbmFtZV9fKQogCi1Gcm96ZW5fU2V0UGFja2FnZVRlc3RzLCBTb3VyY2VfU2V0UGFja2FnZVRlc3RzID0gdGVzdF91dGlsLnRlc3RfYm90aCgKLSAgICAgICAgU2V0UGFja2FnZVRlc3RzLCB1dGlsPVtmcm96ZW5fdXRpbCwgc291cmNlX3V0aWxdKQorCisoRnJvemVuX1NldFBhY2thZ2VUZXN0cywKKyBTb3VyY2VfU2V0UGFja2FnZVRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKFNldFBhY2thZ2VUZXN0cywgdXRpbD1pbXBvcnRsaWJfdXRpbCkKIAogCiBjbGFzcyBTZXRMb2FkZXJUZXN0czoKIAogICAgICIiIlRlc3RzIGltcG9ydGxpYi51dGlsLnNldF9sb2FkZXIoKS4iIiIKIAotICAgIGNsYXNzIER1bW15TG9hZGVyOgotICAgICAgICBAdXRpbC5zZXRfbG9hZGVyCi0gICAgICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBtb2R1bGUpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYubW9kdWxlCisgICAgQHByb3BlcnR5CisgICAgZGVmIER1bW15TG9hZGVyKHNlbGYpOgorICAgICAgICAjIFNldCBEdW1teUxvYWRlciBvbiB0aGUgY2xhc3MgbGF6aWx5LgorICAgICAgICBjbGFzcyBEdW1teUxvYWRlcjoKKyAgICAgICAgICAgIEBzZWxmLnV0aWwuc2V0X2xvYWRlcgorICAgICAgICAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubW9kdWxlCisgICAgICAgIHNlbGYuX19jbGFzc19fLkR1bW15TG9hZGVyID0gRHVtbXlMb2FkZXIKKyAgICAgICAgcmV0dXJuIER1bW15TG9hZGVyCiAKICAgICBkZWYgdGVzdF9ub19hdHRyaWJ1dGUoc2VsZik6CiAgICAgICAgIGxvYWRlciA9IHNlbGYuRHVtbXlMb2FkZXIoKQpAQCAtMjYyLDE3ICszNTgsMTAgQEAKICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0MiwgbG9hZGVyLmxvYWRfbW9kdWxlKCdibGFoJykuX19sb2FkZXJfXykKIAotY2xhc3MgRnJvemVuX1NldExvYWRlclRlc3RzKFNldExvYWRlclRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgY2xhc3MgRHVtbXlMb2FkZXI6Ci0gICAgICAgIEBmcm96ZW5fdXRpbC5zZXRfbG9hZGVyCi0gICAgICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBtb2R1bGUpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYubW9kdWxlCiAKLWNsYXNzIFNvdXJjZV9TZXRMb2FkZXJUZXN0cyhTZXRMb2FkZXJUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGNsYXNzIER1bW15TG9hZGVyOgotICAgICAgICBAc291cmNlX3V0aWwuc2V0X2xvYWRlcgotICAgICAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgbW9kdWxlKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLm1vZHVsZQorKEZyb3plbl9TZXRMb2FkZXJUZXN0cywKKyBTb3VyY2VfU2V0TG9hZGVyVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoU2V0TG9hZGVyVGVzdHMsIHV0aWw9aW1wb3J0bGliX3V0aWwpCiAKIAogY2xhc3MgUmVzb2x2ZU5hbWVUZXN0czoKQEAgLTMwNyw5ICszOTYsMTAgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgIHNlbGYudXRpbC5yZXNvbHZlX25hbWUoJy4uYmFjb24nLCAnc3BhbScpCiAKLUZyb3plbl9SZXNvbHZlTmFtZVRlc3RzLCBTb3VyY2VfUmVzb2x2ZU5hbWVUZXN0cyA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFJlc29sdmVOYW1lVGVzdHMsCi0gICAgICAgIHV0aWw9W2Zyb3plbl91dGlsLCBzb3VyY2VfdXRpbF0pCisKKyhGcm96ZW5fUmVzb2x2ZU5hbWVUZXN0cywKKyBTb3VyY2VfUmVzb2x2ZU5hbWVUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChSZXNvbHZlTmFtZVRlc3RzLCB1dGlsPWltcG9ydGxpYl91dGlsKQogCiAKIGNsYXNzIEZpbmRTcGVjVGVzdHM6CkBAIC0zMjAsNyArNDEwLDcgQEAKIAogICAgIGRlZiB0ZXN0X3N5c19tb2R1bGVzKHNlbGYpOgogICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUobmFtZSkKICAgICAgICAgICAgIGxvYWRlciA9ICdhIGxvYWRlciEnCiAgICAgICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYyhuYW1lLCBsb2FkZXIpCkBAIC0zMzIsNyArNDIyLDcgQEAKIAogICAgIGRlZiB0ZXN0X3N5c19tb2R1bGVzX3dpdGhvdXRfX19sb2FkZXJfXyhzZWxmKToKICAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG5hbWUpCiAgICAgICAgICAgICBkZWwgbW9kdWxlLl9fbG9hZGVyX18KICAgICAgICAgICAgIGxvYWRlciA9ICdhIGxvYWRlciEnCkBAIC0zNDQsNyArNDM0LDcgQEAKIAogICAgIGRlZiB0ZXN0X3N5c19tb2R1bGVzX3NwZWNfaXNfTm9uZShzZWxmKToKICAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG5hbWUpCiAgICAgICAgICAgICBtb2R1bGUuX19zcGVjX18gPSBOb25lCiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQpAQCAtMzUzLDcgKzQ0Myw3IEBACiAKICAgICBkZWYgdGVzdF9zeXNfbW9kdWxlc19sb2FkZXJfaXNfTm9uZShzZWxmKToKICAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG5hbWUpCiAgICAgICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYyhuYW1lLCBOb25lKQogICAgICAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gc3BlYwpAQCAtMzYzLDcgKzQ1Myw3IEBACiAKICAgICBkZWYgdGVzdF9zeXNfbW9kdWxlc19zcGVjX2lzX25vdF9zZXQoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGRlbCBtb2R1bGUuX19zcGVjX18KQEAgLTM3NSwyMCArNDY1LDExIEBACiAKICAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgogICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgotICAgICAgICAgICAgd2l0aCB0ZXN0X3V0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bc2VsZi5GYWtlTWV0YUZpbmRlcl0pOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtzZWxmLkZha2VNZXRhRmluZGVyXSk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgobmFtZSwgTm9uZSwgTm9uZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnV0aWwuZmluZF9zcGVjKG5hbWUpKQogCi0jICAgIGRlZiB0ZXN0X3N1Y2Nlc3NfcGF0aChzZWxmKToKLSMgICAgICAgICMgU2VhcmNoaW5nIG9uIGEgcGF0aCBzaG91bGQgd29yay4KLSMgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCi0jICAgICAgICBwYXRoID0gJ3BhdGggdG8gc29tZSBwbGFjZScKLSMgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6Ci0jICAgICAgICAgICAgd2l0aCB0ZXN0X3V0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bc2VsZi5GYWtlTWV0YUZpbmRlcl0pOgotIyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChuYW1lLCBwYXRoLCBOb25lKSwKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnV0aWwuZmluZF9zcGVjKG5hbWUsIHBhdGgpKQotCiAgICAgZGVmIHRlc3Rfbm90aGluZyhzZWxmKToKICAgICAgICAgIyBOb25lIGlzIHJldHVybmVkIHVwb24gZmFpbHVyZSB0byBmaW5kIGEgbG9hZGVyLgogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnV0aWwuZmluZF9zcGVjKCduZXZlcmdvaW5ndG9maW5kdGhpc21vZHVsZScpKQpAQCAtMzk2LDggKzQ3Nyw4IEBACiAgICAgZGVmIHRlc3RfZmluZF9zdWJtb2R1bGUoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnc3BhbScKICAgICAgICAgc3VibmFtZSA9ICdoYW0nCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnRlbXBfbW9kdWxlKG5hbWUsIHBrZz1UcnVlKSBhcyBwa2dfZGlyOgotICAgICAgICAgICAgZnVsbG5hbWUsIF8gPSB0ZXN0X3V0aWwuc3VibW9kdWxlKG5hbWUsIHN1Ym5hbWUsIHBrZ19kaXIpCisgICAgICAgIHdpdGggdXRpbC50ZW1wX21vZHVsZShuYW1lLCBwa2c9VHJ1ZSkgYXMgcGtnX2RpcjoKKyAgICAgICAgICAgIGZ1bGxuYW1lLCBfID0gdXRpbC5zdWJtb2R1bGUobmFtZSwgc3VibmFtZSwgcGtnX2RpcikKICAgICAgICAgICAgIHNwZWMgPSBzZWxmLnV0aWwuZmluZF9zcGVjKGZ1bGxuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChzcGVjLCBOb25lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBzb3J0ZWQoc3lzLm1vZHVsZXMpKQpAQCAtNDA5LDkgKzQ5MCw5IEBACiAgICAgZGVmIHRlc3RfZmluZF9zdWJtb2R1bGVfcGFyZW50X2FscmVhZHlfaW1wb3J0ZWQoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnc3BhbScKICAgICAgICAgc3VibmFtZSA9ICdoYW0nCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnRlbXBfbW9kdWxlKG5hbWUsIHBrZz1UcnVlKSBhcyBwa2dfZGlyOgorICAgICAgICB3aXRoIHV0aWwudGVtcF9tb2R1bGUobmFtZSwgcGtnPVRydWUpIGFzIHBrZ19kaXI6CiAgICAgICAgICAgICBzZWxmLmluaXQuaW1wb3J0X21vZHVsZShuYW1lKQotICAgICAgICAgICAgZnVsbG5hbWUsIF8gPSB0ZXN0X3V0aWwuc3VibW9kdWxlKG5hbWUsIHN1Ym5hbWUsIHBrZ19kaXIpCisgICAgICAgICAgICBmdWxsbmFtZSwgXyA9IHV0aWwuc3VibW9kdWxlKG5hbWUsIHN1Ym5hbWUsIHBrZ19kaXIpCiAgICAgICAgICAgICBzcGVjID0gc2VsZi51dGlsLmZpbmRfc3BlYyhmdWxsbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qoc3BlYywgTm9uZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgc29ydGVkKHN5cy5tb2R1bGVzKSkKQEAgLTQyMyw4ICs1MDQsOCBAQAogICAgIGRlZiB0ZXN0X2ZpbmRfcmVsYXRpdmVfbW9kdWxlKHNlbGYpOgogICAgICAgICBuYW1lID0gJ3NwYW0nCiAgICAgICAgIHN1Ym5hbWUgPSAnaGFtJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC50ZW1wX21vZHVsZShuYW1lLCBwa2c9VHJ1ZSkgYXMgcGtnX2RpcjoKLSAgICAgICAgICAgIGZ1bGxuYW1lLCBfID0gdGVzdF91dGlsLnN1Ym1vZHVsZShuYW1lLCBzdWJuYW1lLCBwa2dfZGlyKQorICAgICAgICB3aXRoIHV0aWwudGVtcF9tb2R1bGUobmFtZSwgcGtnPVRydWUpIGFzIHBrZ19kaXI6CisgICAgICAgICAgICBmdWxsbmFtZSwgXyA9IHV0aWwuc3VibW9kdWxlKG5hbWUsIHN1Ym5hbWUsIHBrZ19kaXIpCiAgICAgICAgICAgICByZWxuYW1lID0gJy4nICsgc3VibmFtZQogICAgICAgICAgICAgc3BlYyA9IHNlbGYudXRpbC5maW5kX3NwZWMocmVsbmFtZSwgbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qoc3BlYywgTm9uZSkKQEAgLTQzNyw4ICs1MTgsOCBAQAogICAgIGRlZiB0ZXN0X2ZpbmRfcmVsYXRpdmVfbW9kdWxlX21pc3NpbmdfcGFja2FnZShzZWxmKToKICAgICAgICAgbmFtZSA9ICdzcGFtJwogICAgICAgICBzdWJuYW1lID0gJ2hhbScKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudGVtcF9tb2R1bGUobmFtZSwgcGtnPVRydWUpIGFzIHBrZ19kaXI6Ci0gICAgICAgICAgICBmdWxsbmFtZSwgXyA9IHRlc3RfdXRpbC5zdWJtb2R1bGUobmFtZSwgc3VibmFtZSwgcGtnX2RpcikKKyAgICAgICAgd2l0aCB1dGlsLnRlbXBfbW9kdWxlKG5hbWUsIHBrZz1UcnVlKSBhcyBwa2dfZGlyOgorICAgICAgICAgICAgZnVsbG5hbWUsIF8gPSB1dGlsLnN1Ym1vZHVsZShuYW1lLCBzdWJuYW1lLCBwa2dfZGlyKQogICAgICAgICAgICAgcmVsbmFtZSA9ICcuJyArIHN1Ym5hbWUKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICAgICAgc2VsZi51dGlsLmZpbmRfc3BlYyhyZWxuYW1lKQpAQCAtNDQ2LDE1ICs1MjcsMTAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oZnVsbG5hbWUsIHNvcnRlZChzeXMubW9kdWxlcykpCiAKIAotY2xhc3MgRnJvemVuX0ZpbmRTcGVjVGVzdHMoRmluZFNwZWNUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGluaXQgPSBmcm96ZW5faW5pdAotICAgIG1hY2hpbmVyeSA9IGZyb3plbl9tYWNoaW5lcnkKLSAgICB1dGlsID0gZnJvemVuX3V0aWwKLQotY2xhc3MgU291cmNlX0ZpbmRTcGVjVGVzdHMoRmluZFNwZWNUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGluaXQgPSBzb3VyY2VfaW5pdAotICAgIG1hY2hpbmVyeSA9IHNvdXJjZV9tYWNoaW5lcnkKLSAgICB1dGlsID0gc291cmNlX3V0aWwKKyhGcm96ZW5fRmluZFNwZWNUZXN0cywKKyBTb3VyY2VfRmluZFNwZWNUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChGaW5kU3BlY1Rlc3RzLCBpbml0PWluaXQsIHV0aWw9aW1wb3J0bGliX3V0aWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBNYWdpY051bWJlclRlc3RzOgpAQCAtNDY3LDggKzU0MywxMCBAQAogICAgICAgICAjIFRoZSBtYWdpYyBudW1iZXIgdXNlcyBcclxuIHRvIGNvbWUgb3V0IHdyb25nIHdoZW4gc3BsaXR0aW5nIG9uIGxpbmVzLgogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi51dGlsLk1BR0lDX05VTUJFUi5lbmRzd2l0aChiJ1xyXG4nKSkKIAotRnJvemVuX01hZ2ljTnVtYmVyVGVzdHMsIFNvdXJjZV9NYWdpY051bWJlclRlc3RzID0gdGVzdF91dGlsLnRlc3RfYm90aCgKLSAgICAgICAgTWFnaWNOdW1iZXJUZXN0cywgdXRpbD1bZnJvemVuX3V0aWwsIHNvdXJjZV91dGlsXSkKKworKEZyb3plbl9NYWdpY051bWJlclRlc3RzLAorIFNvdXJjZV9NYWdpY051bWJlclRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKE1hZ2ljTnVtYmVyVGVzdHMsIHV0aWw9aW1wb3J0bGliX3V0aWwpCiAKIAogY2xhc3MgUEVQMzE0N1Rlc3RzOgpAQCAtNDg1LDcgKzU2Myw4IEBACiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ3F1eC5weScpCiAgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAnX19weWNhY2hlX18nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFRydWUpLCBleHBlY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIG9wdGltaXphdGlvbj0nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0KQogCiAgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfbm9fY2FjaGVfdGFnKHNlbGYpOgogICAgICAgICAjIE5vIGNhY2hlIHRhZyBtZWFucyBOb3RJbXBsZW1lbnRlZEVycm9yLgpAQCAtNDk4LDQzICs1NzcsMTAzIEBACiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2Zvby5iYXInLCAnZmlsZScpCiAgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vLmJhcicsICdfX3B5Y2FjaGVfXycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZXt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgVHJ1ZSksIGV4cGVjdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgb3B0aW1pemF0aW9uPScnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3QpCiAKLSAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9vcHRpbWl6ZWQoc2VsZik6Ci0gICAgICAgICMgR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyBQRVAgMzE0NwotICAgICAgICAjIGRlZmluZWQgLnB5byBmaWxlIChpLmUuIHVuZGVyIF9fcHljYWNoZV9fKS4KKyAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9kZWJ1Z19vdmVycmlkZShzZWxmKToKKyAgICAgICAgIyBHaXZlbiB0aGUgcGF0aCB0byBhIC5weSBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIFBFUCAzMTQ3L1BFUCA0ODgKKyAgICAgICAgIyBkZWZpbmVkIC5weWMgZmlsZSAoaS5lLiB1bmRlciBfX3B5Y2FjaGVfXykuCiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ3F1eC5weScpCi0gICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAnX19weWNhY2hlX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1eC57fS5weW8nLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIEZhbHNlKSwgZXhwZWN0KQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBGYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249MSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBUcnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIG9wdGltaXphdGlvbj0nJykpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignZXJyb3InKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBGYWxzZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgVHJ1ZSkKIAogICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX2N3ZChzZWxmKToKICAgICAgICAgcGF0aCA9ICdmb28ucHknCiAgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignX19weWNhY2hlX18nLCAnZm9vLnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgVHJ1ZSksIGV4cGVjdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgb3B0aW1pemF0aW9uPScnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3QpCiAKICAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9vdmVycmlkZShzZWxmKToKICAgICAgICAgIyBXaGVuIGRlYnVnX292ZXJyaWRlIGlzIG5vdCBOb25lLCBpdCBjYW4gYmUgYW55IHRydWUtaXNoIG9yIGZhbHNlLWlzaAogICAgICAgICAjIHZhbHVlLgogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2Jhei5weScpCi0gICAgICAgIHBhcnRpYWxfZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ19fcHljYWNoZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhei57fS5weScuZm9ybWF0KHNlbGYudGFnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgW10pLCBwYXJ0aWFsX2V4cGVjdCArICdvJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgWzE3XSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbF9leHBlY3QgKyAnYycpCiAgICAgICAgICMgSG93ZXZlciBpZiB0aGUgYm9vbC1pc2huZXNzIGNhbid0IGJlIGRldGVybWluZWQsIHRoZSBleGNlcHRpb24KICAgICAgICAgIyBwcm9wYWdhdGVzLgogICAgICAgICBjbGFzcyBCZWFyaXNoOgogICAgICAgICAgICAgZGVmIF9fYm9vbF9fKHNlbGYpOiByYWlzZSBSdW50aW1lRXJyb3IKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgotICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKCcvZm9vL2Jhci9iYXoucHknLCBCZWFyaXNoKCkpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFtdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIG9wdGltaXphdGlvbj0xKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFsxN10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgb3B0aW1pemF0aW9uPScnKSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgICAgICBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoJy9mb28vYmFyL2Jhei5weScsIEJlYXJpc2goKSkKKworCisgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfb3B0aW1pemF0aW9uX2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgIyBTZXR0aW5nICdvcHRpbWl6YXRpb24nIHRvICcnIGxlYWRzIHRvIG5vIG9wdGltaXphdGlvbiB0YWcgKFBFUCA0ODgpLgorICAgICAgICBwYXRoID0gJ2Zvby5weScKKyAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdfX3B5Y2FjaGVfXycsICdmb28ue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249JycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdCkKKworICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX29wdGltaXphdGlvbl9Ob25lKHNlbGYpOgorICAgICAgICAjIFNldHRpbmcgJ29wdGltaXphdGlvbicgdG8gTm9uZSB1c2VzIHRoZSBpbnRlcnByZXRlcidzIG9wdGltaXphdGlvbi4KKyAgICAgICAgIyAoUEVQIDQ4OCkKKyAgICAgICAgcGF0aCA9ICdmb28ucHknCisgICAgICAgIG9wdGltaXphdGlvbl9sZXZlbCA9IHN5cy5mbGFncy5vcHRpbWl6ZQorICAgICAgICBhbG1vc3RfZXhwZWN0ID0gb3MucGF0aC5qb2luKCdfX3B5Y2FjaGVfXycsICdmb28ue30nLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIGlmIG9wdGltaXphdGlvbl9sZXZlbCA9PSAwOgorICAgICAgICAgICAgZXhwZWN0ID0gYWxtb3N0X2V4cGVjdCArICcucHljJworICAgICAgICBlbGlmIG9wdGltaXphdGlvbl9sZXZlbCA8PSAyOgorICAgICAgICAgICAgZXhwZWN0ID0gYWxtb3N0X2V4cGVjdCArICcub3B0LXt9LnB5YycuZm9ybWF0KG9wdGltaXphdGlvbl9sZXZlbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1zZyA9ICd7IXJ9IGlzIGEgbm9uLXN0YW5kYXJkIG9wdGltaXphdGlvbiBsZXZlbCcuZm9ybWF0KG9wdGltaXphdGlvbl9sZXZlbCkKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QobXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249Tm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0KQorCisgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfb3B0aW1pemF0aW9uX3NldChzZWxmKToKKyAgICAgICAgIyBUaGUgJ29wdGltaXphdGlvbicgcGFyYW1ldGVyIGFjY2VwdHMgYW55dGhpbmcgdGhhdCBoYXMgYSBzdHJpbmcgcmVwcgorICAgICAgICAjIHRoYXQgcGFzc2VzIHN0ci5hbG51bSgpLgorICAgICAgICBwYXRoID0gJ2Zvby5weScKKyAgICAgICAgdmFsaWRfY2hhcmFjdGVycyA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cworICAgICAgICBhbG1vc3RfZXhwZWN0ID0gb3MucGF0aC5qb2luKCdfX3B5Y2FjaGVfXycsICdmb28ue30nLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIGdvdCA9IHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249dmFsaWRfY2hhcmFjdGVycykKKyAgICAgICAgIyBUZXN0IGFsbCB2YWxpZCBjaGFyYWN0ZXJzIGFyZSBhY2NlcHRlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWxtb3N0X2V4cGVjdCArICcub3B0LXt9LnB5YycuZm9ybWF0KHZhbGlkX2NoYXJhY3RlcnMpKQorICAgICAgICAjIHN0cigpIHNob3VsZCBiZSBjYWxsZWQgb24gYXJndW1lbnQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIG9wdGltaXphdGlvbj00MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgYWxtb3N0X2V4cGVjdCArICcub3B0LTQyLnB5YycpCisgICAgICAgICMgSW52YWxpZCBjaGFyYWN0ZXJzIHJhaXNlIFZhbHVlRXJyb3IuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgb3B0aW1pemF0aW9uPSdwYXRoL2lzL2JhZCcpCisKKyAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9kZWJ1Z19vdmVycmlkZV9vcHRpbWl6YXRpb25fYm90aF9zZXQoc2VsZik6CisgICAgICAgICMgQ2FuIG9ubHkgc2V0IG9uZSBvZiB0aGUgb3B0aW1pemF0aW9uLXJlbGF0ZWQgcGFyYW1ldGVycy4KKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgnZm9vLnB5JywgRmFsc2UsIG9wdGltaXphdGlvbj0nJykKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnNlcCA9PSAnXFwnIGFuZCBvcy5hbHRzZXAgPT0gJy8nLAogICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QgbWVhbmluZ2Z1bCBvbmx5IHdoZXJlIG9zLmFsdHNlcCBpcyBkZWZpbmVkJykKICAgICBkZWYgdGVzdF9zZXBfYWx0c2VwX2FuZF9zZXBfY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZik6CiAgICAgICAgICMgV2luZG93cyBwYXRoIGFuZCBQRVAgMzE0NyB3aGVyZSBzZXAgaXMgcmlnaHQgb2YgYWx0c2VwLgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKCdcXGZvb1xcYmFyXFxiYXovcXV4LnB5JywgVHJ1ZSksCisgICAgICAgICAgICBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoJ1xcZm9vXFxiYXJcXGJhei9xdXgucHknLCBvcHRpbWl6YXRpb249JycpLAogICAgICAgICAgICAgJ1xcZm9vXFxiYXJcXGJhelxcX19weWNhY2hlX19cXHF1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIG5vdCBOb25lLApAQCAtNTcyLDcgKzcxMSwxMiBAQAogICAgICAgICAgICAgVmFsdWVFcnJvciwgc2VsZi51dGlsLnNvdXJjZV9mcm9tX2NhY2hlLCAnX19weWNhY2hlX18vZm9vLnB5YycpCiAKICAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV90b29fbWFueV9kb3RzKHNlbGYpOgotICAgICAgICAjIFRvbyBtYW55IGRvdHMgaW4gZmluYWwgcGF0aCBjb21wb25lbnQgLT4gVmFsdWVFcnJvcgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi51dGlsLnNvdXJjZV9mcm9tX2NhY2hlKAorICAgICAgICAgICAgICAgICAgICAnX19weWNhY2hlX18vZm9vLmNweXRob24tMzIub3B0LTEuZm9vLnB5YycpCisKKyAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV9ub3Rfb3B0KHNlbGYpOgorICAgICAgICAjIE5vbi1gb3B0LWAgcGF0aCBjb21wb25lbnQgLT4gVmFsdWVFcnJvcgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKICAgICAgICAgICAgIFZhbHVlRXJyb3IsIHNlbGYudXRpbC5zb3VyY2VfZnJvbV9jYWNoZSwKICAgICAgICAgICAgICdfX3B5Y2FjaGVfXy9mb28uY3B5dGhvbi0zMi5mb28ucHljJykKQEAgLTU4Myw5ICs3MjcsMjEgQEAKICAgICAgICAgICAgIFZhbHVlRXJyb3IsIHNlbGYudXRpbC5zb3VyY2VfZnJvbV9jYWNoZSwKICAgICAgICAgICAgICcvZm9vL2Jhci9mb28uY3B5dGhvbi0zMi5mb28ucHljJykKIAotRnJvemVuX1BFUDMxNDdUZXN0cywgU291cmNlX1BFUDMxNDdUZXN0cyA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFBFUDMxNDdUZXN0cywKLSAgICAgICAgdXRpbD1bZnJvemVuX3V0aWwsIHNvdXJjZV91dGlsXSkKKyAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV9vcHRpbWl6ZWRfYnl0ZWNvZGUoc2VsZik6CisgICAgICAgICMgT3B0aW1pemVkIGJ5dGVjb2RlIGlzIG5vdCBhbiBpc3N1ZS4KKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignX19weWNhY2hlX18nLCAnZm9vLnt9Lm9wdC0xLnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuc291cmNlX2Zyb21fY2FjaGUocGF0aCksICdmb28ucHknKQorCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfbWlzc2luZ19vcHRpbWl6YXRpb24oc2VsZik6CisgICAgICAgICMgQW4gZW1wdHkgb3B0aW1pemF0aW9uIGxldmVsIGlzIGEgbm8tbm8uCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ19fcHljYWNoZV9fJywgJ2Zvby57fS5vcHQtLnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYudXRpbC5zb3VyY2VfZnJvbV9jYWNoZShwYXRoKQorCisKKyhGcm96ZW5fUEVQMzE0N1Rlc3RzLAorIFNvdXJjZV9QRVAzMTQ3VGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoUEVQMzE0N1Rlc3RzLCB1dGlsPWltcG9ydGxpYl91dGlsKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3dpbmRvd3MucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3dpbmRvd3MucHkKaW5kZXggOTZiNGFkYy4uYzg5M2JjZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF93aW5kb3dzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfd2luZG93cy5weQpAQCAtMSwxNCArMSw2NCBAQAotZnJvbSAuIGltcG9ydCB1dGlsCi1mcm96ZW5fbWFjaGluZXJ5LCBzb3VyY2VfbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKK2Zyb20gLiBpbXBvcnQgdXRpbCBhcyB0ZXN0X3V0aWwKK21hY2hpbmVyeSA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKIAoraW1wb3J0IG9zCitpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIGRpc3R1dGlscy51dGlsIGltcG9ydCBnZXRfcGxhdGZvcm0KK2Zyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIKK2Zyb20gLnV0aWwgaW1wb3J0IHRlbXBfbW9kdWxlCisKK3N1cHBvcnQuaW1wb3J0X21vZHVsZSgnd2lucmVnJywgcmVxdWlyZWRfb249Wyd3aW4nXSkKK2Zyb20gd2lucmVnIGltcG9ydCAoCisgICAgQ3JlYXRlS2V5LCBIS0VZX0NVUlJFTlRfVVNFUiwKKyAgICBTZXRWYWx1ZSwgUkVHX1NaLCBLRVlfQUxMX0FDQ0VTUywKKyAgICBFbnVtS2V5LCBDbG9zZUtleSwgRGVsZXRlS2V5LCBPcGVuS2V5CispCisKK2RlZiBkZWxldGVfcmVnaXN0cnlfdHJlZShyb290LCBzdWJrZXkpOgorICAgIHRyeToKKyAgICAgICAgaGtleSA9IE9wZW5LZXkocm9vdCwgc3Via2V5LCBhY2Nlc3M9S0VZX0FMTF9BQ0NFU1MpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICMgc3Via2V5IGRvZXMgbm90IGV4aXN0CisgICAgICAgIHJldHVybgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN1YnN1YmtleSA9IEVudW1LZXkoaGtleSwgMCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAjIG5vIG1vcmUgc3Via2V5cworICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZGVsZXRlX3JlZ2lzdHJ5X3RyZWUoaGtleSwgc3Vic3Via2V5KQorICAgIENsb3NlS2V5KGhrZXkpCisgICAgRGVsZXRlS2V5KHJvb3QsIHN1YmtleSkKKworQGNvbnRleHRtYW5hZ2VyCitkZWYgc2V0dXBfbW9kdWxlKG1hY2hpbmVyeSwgbmFtZSwgcGF0aD1Ob25lKToKKyAgICBpZiBtYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLkRFQlVHX0JVSUxEOgorICAgICAgICByb290ID0gbWFjaGluZXJ5LldpbmRvd3NSZWdpc3RyeUZpbmRlci5SRUdJU1RSWV9LRVlfREVCVUcKKyAgICBlbHNlOgorICAgICAgICByb290ID0gbWFjaGluZXJ5LldpbmRvd3NSZWdpc3RyeUZpbmRlci5SRUdJU1RSWV9LRVkKKyAgICBrZXkgPSByb290LmZvcm1hdChmdWxsbmFtZT1uYW1lLAorICAgICAgICAgICAgICAgICAgICAgIHN5c192ZXJzaW9uPXN5cy52ZXJzaW9uWzozXSkKKyAgICB0cnk6CisgICAgICAgIHdpdGggdGVtcF9tb2R1bGUobmFtZSwgImEgPSAxIikgYXMgbG9jYXRpb246CisgICAgICAgICAgICBzdWJrZXkgPSBDcmVhdGVLZXkoSEtFWV9DVVJSRU5UX1VTRVIsIGtleSkKKyAgICAgICAgICAgIGlmIHBhdGggaXMgTm9uZToKKyAgICAgICAgICAgICAgICBwYXRoID0gbG9jYXRpb24gKyAiLnB5IgorICAgICAgICAgICAgU2V0VmFsdWUoc3Via2V5LCAiIiwgUkVHX1NaLCBwYXRoKQorICAgICAgICAgICAgeWllbGQKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiBtYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLkRFQlVHX0JVSUxEOgorICAgICAgICAgICAga2V5ID0gb3MucGF0aC5kaXJuYW1lKGtleSkKKyAgICAgICAgZGVsZXRlX3JlZ2lzdHJ5X3RyZWUoSEtFWV9DVVJSRU5UX1VTRVIsIGtleSkKIAogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyksICdyZXF1aXJlcyBXaW5kb3dzJykKIGNsYXNzIFdpbmRvd3NSZWdpc3RyeUZpbmRlclRlc3RzOgotCi0gICAgIyBYWFggTmVlZCBhIHRlc3QgdGhhdCBmaW5kcyB0aGUgc3BlYyB2aWEgdGhlIHJlZ2lzdHJ5LgorICAgICMgVGhlIG1vZHVsZSBuYW1lIGlzIHByb2Nlc3Mtc3BlY2lmaWMsIGFsbG93aW5nIGZvcgorICAgICMgc2ltdWx0YW5lb3VzIHJ1bnMgb2YgdGhlIHNhbWUgdGVzdCBvbiBhIHNpbmdsZSBtYWNoaW5lLgorICAgIHRlc3RfbW9kdWxlID0gInNwYW1oYW17fSIuZm9ybWF0KG9zLmdldHBpZCgpKQogCiAgICAgZGVmIHRlc3RfZmluZF9zcGVjX21pc3Npbmcoc2VsZik6CiAgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXIuZmluZF9zcGVjKCdzcGFtJykKQEAgLTE4LDEyICs2OCw0MiBAQAogICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXIuZmluZF9tb2R1bGUoJ3NwYW0nKQogICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgTm9uZSkKIAorICAgIGRlZiB0ZXN0X21vZHVsZV9mb3VuZChzZWxmKToKKyAgICAgICAgd2l0aCBzZXR1cF9tb2R1bGUoc2VsZi5tYWNoaW5lcnksIHNlbGYudGVzdF9tb2R1bGUpOgorICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLmZpbmRfbW9kdWxlKHNlbGYudGVzdF9tb2R1bGUpCisgICAgICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLmZpbmRfc3BlYyhzZWxmLnRlc3RfbW9kdWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChsb2FkZXIsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KHNwZWMsIE5vbmUpCiAKLWNsYXNzIEZyb3plbl9XaW5kb3dzUmVnaXN0cnlGaW5kZXJUZXN0cyhXaW5kb3dzUmVnaXN0cnlGaW5kZXJUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgbWFjaGluZXJ5ID0gZnJvemVuX21hY2hpbmVyeQorICAgIGRlZiB0ZXN0X21vZHVsZV9ub3RfZm91bmQoc2VsZik6CisgICAgICAgIHdpdGggc2V0dXBfbW9kdWxlKHNlbGYubWFjaGluZXJ5LCBzZWxmLnRlc3RfbW9kdWxlLCBwYXRoPSIuIik6CisgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXIuZmluZF9tb2R1bGUoc2VsZi50ZXN0X21vZHVsZSkKKyAgICAgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXIuZmluZF9zcGVjKHNlbGYudGVzdF9tb2R1bGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShsb2FkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzcGVjKQogCisoRnJvemVuX1dpbmRvd3NSZWdpc3RyeUZpbmRlclRlc3RzLAorIFNvdXJjZV9XaW5kb3dzUmVnaXN0cnlGaW5kZXJUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFdpbmRvd3NSZWdpc3RyeUZpbmRlclRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCi1jbGFzcyBTb3VyY2VfV2luZG93c1JlZ2lzdHJ5RmluZGVyVGVzdHMoV2luZG93c1JlZ2lzdHJ5RmluZGVyVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIG1hY2hpbmVyeSA9IHNvdXJjZV9tYWNoaW5lcnkKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKSwgJ3JlcXVpcmVzIFdpbmRvd3MnKQorY2xhc3MgV2luZG93c0V4dGVuc2lvblN1ZmZpeFRlc3RzOgorICAgIGRlZiB0ZXN0X3RhZ2dlZF9zdWZmaXgoc2VsZik6CisgICAgICAgIHN1ZmZpeGVzID0gc2VsZi5tYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTCisgICAgICAgIGV4cGVjdGVkX3RhZyA9ICIuY3B7MC5tYWpvcn17MC5taW5vcn0tezF9LnB5ZCIuZm9ybWF0KHN5cy52ZXJzaW9uX2luZm8sCisgICAgICAgICAgICByZS5zdWIoJ1teYS16QS1aMC05XScsICdfJywgZ2V0X3BsYXRmb3JtKCkpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB1bnRhZ2dlZF9pID0gc3VmZml4ZXMuaW5kZXgoIi5weWQiKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHVudGFnZ2VkX2kgPSBzdWZmaXhlcy5pbmRleCgiX2QucHlkIikKKyAgICAgICAgICAgIGV4cGVjdGVkX3RhZyA9ICJfZCIgKyBleHBlY3RlZF90YWcKKworICAgICAgICBzZWxmLmFzc2VydEluKGV4cGVjdGVkX3RhZywgc3VmZml4ZXMpCisKKyAgICAgICAgIyBFbnN1cmUgdGhlIHRhZ3MgYXJlIGluIHRoZSBjb3JyZWN0IG9yZGVyCisgICAgICAgIHRhZ2dlZF9pID0gc3VmZml4ZXMuaW5kZXgoZXhwZWN0ZWRfdGFnKQorICAgICAgICBzZWxmLmFzc2VydExlc3ModGFnZ2VkX2ksIHVudGFnZ2VkX2kpCisKKyhGcm96ZW5fV2luZG93c0V4dGVuc2lvblN1ZmZpeFRlc3RzLAorIFNvdXJjZV9XaW5kb3dzRXh0ZW5zaW9uU3VmZml4VGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChXaW5kb3dzRXh0ZW5zaW9uU3VmZml4VGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdXRpbC5weQppbmRleCA4ODVjZWMzLi5jZTIwMzc3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi91dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3V0aWwucHkKQEAgLTEsMzEgKzEsODUgQEAKLWZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIKLWZyb20gaW1wb3J0bGliIGltcG9ydCB1dGlsLCBpbnZhbGlkYXRlX2NhY2hlcworaW1wb3J0IGJ1aWx0aW5zCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IGVycm5vCitpbXBvcnQgZnVuY3Rvb2xzCitpbXBvcnQgaW1wb3J0bGliCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5LCB1dGlsLCBpbnZhbGlkYXRlX2NhY2hlcworaW1wb3J0IG9zCiBpbXBvcnQgb3MucGF0aAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHR5cGVzCiAKIAorQlVJTFRJTlMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorQlVJTFRJTlMuZ29vZF9uYW1lID0gTm9uZQorQlVJTFRJTlMuYmFkX25hbWUgPSBOb25lCitpZiAnZXJybm8nIGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lczoKKyAgICBCVUlMVElOUy5nb29kX25hbWUgPSAnZXJybm8nCitpZiAnaW1wb3J0bGliJyBub3QgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgorICAgIEJVSUxUSU5TLmJhZF9uYW1lID0gJ2ltcG9ydGxpYicKKworRVhURU5TSU9OUyA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpCitFWFRFTlNJT05TLnBhdGggPSBOb25lCitFWFRFTlNJT05TLmV4dCA9IE5vbmUKK0VYVEVOU0lPTlMuZmlsZW5hbWUgPSBOb25lCitFWFRFTlNJT05TLmZpbGVfcGF0aCA9IE5vbmUKK0VYVEVOU0lPTlMubmFtZSA9ICdfdGVzdGNhcGknCisKK2RlZiBfZXh0ZW5zaW9uX2RldGFpbHMoKToKKyAgICBnbG9iYWwgRVhURU5TSU9OUworICAgIGZvciBwYXRoIGluIHN5cy5wYXRoOgorICAgICAgICBmb3IgZXh0IGluIG1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVM6CisgICAgICAgICAgICBmaWxlbmFtZSA9IEVYVEVOU0lPTlMubmFtZSArIGV4dAorICAgICAgICAgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKHBhdGgsIGZpbGVuYW1lKQorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZmlsZV9wYXRoKToKKyAgICAgICAgICAgICAgICBFWFRFTlNJT05TLnBhdGggPSBwYXRoCisgICAgICAgICAgICAgICAgRVhURU5TSU9OUy5leHQgPSBleHQKKyAgICAgICAgICAgICAgICBFWFRFTlNJT05TLmZpbGVuYW1lID0gZmlsZW5hbWUKKyAgICAgICAgICAgICAgICBFWFRFTlNJT05TLmZpbGVfcGF0aCA9IGZpbGVfcGF0aAorICAgICAgICAgICAgICAgIHJldHVybgorCitfZXh0ZW5zaW9uX2RldGFpbHMoKQorCisKIGRlZiBpbXBvcnRfaW1wb3J0bGliKG1vZHVsZV9uYW1lKToKICAgICAiIiJJbXBvcnQgYSBtb2R1bGUgZnJvbSBpbXBvcnRsaWIgYm90aCB3LyBhbmQgdy9vIF9mcm96ZW5faW1wb3J0bGliLiIiIgogICAgIGZyZXNoID0gKCdpbXBvcnRsaWInLCkgaWYgJy4nIGluIG1vZHVsZV9uYW1lIGVsc2UgKCkKICAgICBmcm96ZW4gPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUobW9kdWxlX25hbWUpCiAgICAgc291cmNlID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKG1vZHVsZV9uYW1lLCBmcmVzaD1mcmVzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZD0oJ19mcm96ZW5faW1wb3J0bGliJywpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkPSgnX2Zyb3plbl9pbXBvcnRsaWInLCAnX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwnKSkKKyAgICByZXR1cm4geydGcm96ZW4nOiBmcm96ZW4sICdTb3VyY2UnOiBzb3VyY2V9CisKKworZGVmIHNwZWNpYWxpemVfY2xhc3MoY2xzLCBraW5kLCBiYXNlPU5vbmUsICoqa3dhcmdzKToKKyAgICAjIFhYWCBTdXBwb3J0IHBhc3NpbmcgaW4gc3VibW9kdWxlIG5hbWVzLS1sb2FkIChhbmQgY2FjaGUpIHRoZW0/CisgICAgIyBUaGF0IHdvdWxkIGNsZWFuIHVwIHRoZSB0ZXN0IG1vZHVsZXMgYSBiaXQgbW9yZS4KKyAgICBpZiBiYXNlIGlzIE5vbmU6CisgICAgICAgIGJhc2UgPSB1bml0dGVzdC5UZXN0Q2FzZQorICAgIGVsaWYgbm90IGlzaW5zdGFuY2UoYmFzZSwgdHlwZSk6CisgICAgICAgIGJhc2UgPSBiYXNlW2tpbmRdCisgICAgbmFtZSA9ICd7fV97fScuZm9ybWF0KGtpbmQsIGNscy5fX25hbWVfXykKKyAgICBiYXNlcyA9IChjbHMsIGJhc2UpCisgICAgc3BlY2lhbGl6ZWQgPSB0eXBlcy5uZXdfY2xhc3MobmFtZSwgYmFzZXMpCisgICAgc3BlY2lhbGl6ZWQuX19tb2R1bGVfXyA9IGNscy5fX21vZHVsZV9fCisgICAgc3BlY2lhbGl6ZWQuX05BTUUgPSBjbHMuX19uYW1lX18KKyAgICBzcGVjaWFsaXplZC5fS0lORCA9IGtpbmQKKyAgICBmb3IgYXR0ciwgdmFsdWVzIGluIGt3YXJncy5pdGVtcygpOgorICAgICAgICB2YWx1ZSA9IHZhbHVlc1traW5kXQorICAgICAgICBzZXRhdHRyKHNwZWNpYWxpemVkLCBhdHRyLCB2YWx1ZSkKKyAgICByZXR1cm4gc3BlY2lhbGl6ZWQKKworCitkZWYgc3BsaXRfZnJvemVuKGNscywgYmFzZT1Ob25lLCAqKmt3YXJncyk6CisgICAgZnJvemVuID0gc3BlY2lhbGl6ZV9jbGFzcyhjbHMsICdGcm96ZW4nLCBiYXNlLCAqKmt3YXJncykKKyAgICBzb3VyY2UgPSBzcGVjaWFsaXplX2NsYXNzKGNscywgJ1NvdXJjZScsIGJhc2UsICoqa3dhcmdzKQogICAgIHJldHVybiBmcm96ZW4sIHNvdXJjZQogCiAKLWRlZiB0ZXN0X2JvdGgodGVzdF9jbGFzcywgKiprd2FyZ3MpOgotICAgIGZyb3plbl90ZXN0cyA9IHR5cGVzLm5ld19jbGFzcygnRnJvemVuXycrdGVzdF9jbGFzcy5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3RfY2xhc3MsIHVuaXR0ZXN0LlRlc3RDYXNlKSkKLSAgICBzb3VyY2VfdGVzdHMgPSB0eXBlcy5uZXdfY2xhc3MoJ1NvdXJjZV8nK3Rlc3RfY2xhc3MuX19uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0X2NsYXNzLCB1bml0dGVzdC5UZXN0Q2FzZSkpCi0gICAgZnJvemVuX3Rlc3RzLl9fbW9kdWxlX18gPSBzb3VyY2VfdGVzdHMuX19tb2R1bGVfXyA9IHRlc3RfY2xhc3MuX19tb2R1bGVfXwotICAgIGZvciBhdHRyLCAoZnJvemVuX3ZhbHVlLCBzb3VyY2VfdmFsdWUpIGluIGt3YXJncy5pdGVtcygpOgotICAgICAgICBzZXRhdHRyKGZyb3plbl90ZXN0cywgYXR0ciwgZnJvemVuX3ZhbHVlKQotICAgICAgICBzZXRhdHRyKHNvdXJjZV90ZXN0cywgYXR0ciwgc291cmNlX3ZhbHVlKQotICAgIHJldHVybiBmcm96ZW5fdGVzdHMsIHNvdXJjZV90ZXN0cworZGVmIHRlc3RfYm90aCh0ZXN0X2NsYXNzLCBiYXNlPU5vbmUsICoqa3dhcmdzKToKKyAgICByZXR1cm4gc3BsaXRfZnJvemVuKHRlc3RfY2xhc3MsIGJhc2UsICoqa3dhcmdzKQogCiAKIENBU0VfSU5TRU5TSVRJVkVfRlMgPSBUcnVlCkBAIC0zOCw2ICs5MiwxMCBAQAogICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjaGFuZ2VkX25hbWUpOgogICAgICAgICBDQVNFX0lOU0VOU0lUSVZFX0ZTID0gRmFsc2UKIAorc291cmNlX2ltcG9ydGxpYiA9IGltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpWydTb3VyY2UnXQorX19pbXBvcnRfXyA9IHsnRnJvemVuJzogc3RhdGljbWV0aG9kKGJ1aWx0aW5zLl9faW1wb3J0X18pLAorICAgICAgICAgICAgICAnU291cmNlJzogc3RhdGljbWV0aG9kKHNvdXJjZV9pbXBvcnRsaWIuX19pbXBvcnRfXyl9CisKIAogZGVmIGNhc2VfaW5zZW5zaXRpdmVfdGVzdHModGVzdCk6CiAgICAgIiIiQ2xhc3MgZGVjb3JhdG9yIHRoYXQgbnVsbGlmaWVzIHRlc3RzIHJlcXVpcmluZyBhIGNhc2UtaW5zZW5zaXRpdmUKQEAgLTUzLDcgKzExMSw3IEBACiAgICAgcmV0dXJuICd7fS57fScuZm9ybWF0KHBhcmVudCwgbmFtZSksIHBhdGgKIAogCi1AY29udGV4dG1hbmFnZXIKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCiBkZWYgdW5jYWNoZSgqbmFtZXMpOgogICAgICIiIlVuY2FjaGUgYSBtb2R1bGUgZnJvbSBzeXMubW9kdWxlcy4KIApAQCAtNzksNyArMTM3LDcgQEAKICAgICAgICAgICAgICAgICBwYXNzCiAKIAotQGNvbnRleHRtYW5hZ2VyCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogZGVmIHRlbXBfbW9kdWxlKG5hbWUsIGNvbnRlbnQ9JycsICosIHBrZz1GYWxzZSk6CiAgICAgY29uZmxpY3RzID0gW24gZm9yIG4gaW4gc3lzLm1vZHVsZXMgaWYgbi5wYXJ0aXRpb24oJy4nKVswXSA9PSBuYW1lXQogICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZChOb25lKSBhcyBjd2Q6CkBAIC0xMDMsNyArMTYxLDcgQEAKICAgICAgICAgICAgICAgICB5aWVsZCBsb2NhdGlvbgogCiAKLUBjb250ZXh0bWFuYWdlcgorQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKIGRlZiBpbXBvcnRfc3RhdGUoKiprd2FyZ3MpOgogICAgICIiIkNvbnRleHQgbWFuYWdlciB0byBtYW5hZ2UgdGhlIHZhcmlvdXMgaW1wb3J0ZXJzIGFuZCBzdG9yZWQgc3RhdGUgaW4gdGhlCiAgICAgc3lzIG1vZHVsZS4KQEAgLTE5OCw2ICsyNTYsNyBAQAogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgcmV0dXJuIHNlbGYubW9kdWxlc1tmdWxsbmFtZV0KIAorCiBjbGFzcyBtb2NrX3NwZWMoX0ltcG9ydGVyTW9jayk6CiAKICAgICAiIiJJbXBvcnRlciBtb2NrIHVzaW5nIFBFUCA0NTEgQVBJcy4iIiIKQEAgLTIyMywzICsyODIsOTkgQEAKICAgICAgICAgICAgIHNlbGYubW9kdWxlX2NvZGVbbW9kdWxlLl9fc3BlY19fLm5hbWVdKCkKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgcGFzcworCisKK2RlZiB3cml0ZXNfYnl0ZWNvZGVfZmlsZXMoZnhuKToKKyAgICAiIiJEZWNvcmF0b3IgdG8gcHJvdGVjdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBmcm9tIG11dGF0aW9uIGFuZCB0byBza2lwCisgICAgdGVzdHMgdGhhdCByZXF1aXJlIGl0IHRvIGJlIHNldCB0byBGYWxzZS4iIiIKKyAgICBpZiBzeXMuZG9udF93cml0ZV9ieXRlY29kZToKKyAgICAgICAgcmV0dXJuIGxhbWJkYSAqYXJncywgKiprd2FyZ3M6IE5vbmUKKyAgICBAZnVuY3Rvb2xzLndyYXBzKGZ4bikKKyAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBvcmlnaW5hbCA9IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCisgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gRmFsc2UKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9fcmV0dXJuID0gZnhuKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gb3JpZ2luYWwKKyAgICAgICAgcmV0dXJuIHRvX3JldHVybgorICAgIHJldHVybiB3cmFwcGVyCisKKworZGVmIGVuc3VyZV9ieXRlY29kZV9wYXRoKGJ5dGVjb2RlX3BhdGgpOgorICAgICIiIkVuc3VyZSB0aGF0IHRoZSBfX3B5Y2FjaGVfXyBkaXJlY3RvcnkgZm9yIFBFUCAzMTQ3IHB5YyBmaWxlIGV4aXN0cy4KKworICAgIDpwYXJhbSBieXRlY29kZV9wYXRoOiBGaWxlIHN5c3RlbSBwYXRoIHRvIFBFUCAzMTQ3IHB5YyBmaWxlLgorICAgICIiIgorICAgIHRyeToKKyAgICAgICAgb3MubWtkaXIob3MucGF0aC5kaXJuYW1lKGJ5dGVjb2RlX3BhdGgpKQorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOgorICAgICAgICBpZiBlcnJvci5lcnJubyAhPSBlcnJuby5FRVhJU1Q6CisgICAgICAgICAgICByYWlzZQorCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgY3JlYXRlX21vZHVsZXMoKm5hbWVzKToKKyAgICAiIiJUZW1wb3JhcmlseSBjcmVhdGUgZWFjaCBuYW1lZCBtb2R1bGUgd2l0aCBhbiBhdHRyaWJ1dGUgKG5hbWVkICdhdHRyJykKKyAgICB0aGF0IGNvbnRhaW5zIHRoZSBuYW1lIHBhc3NlZCBpbnRvIHRoZSBjb250ZXh0IG1hbmFnZXIgdGhhdCBjYXVzZWQgdGhlCisgICAgY3JlYXRpb24gb2YgdGhlIG1vZHVsZS4KKworICAgIEFsbCBmaWxlcyBhcmUgY3JlYXRlZCBpbiBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgcmV0dXJuZWQgYnkKKyAgICB0ZW1wZmlsZS5ta2R0ZW1wKCkuIFRoaXMgZGlyZWN0b3J5IGlzIGluc2VydGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YKKyAgICBzeXMucGF0aC4gV2hlbiB0aGUgY29udGV4dCBtYW5hZ2VyIGV4aXRzIGFsbCBjcmVhdGVkIGZpbGVzIChzb3VyY2UgYW5kCisgICAgYnl0ZWNvZGUpIGFyZSBleHBsaWNpdGx5IGRlbGV0ZWQuCisKKyAgICBObyBtYWdpYyBpcyBwZXJmb3JtZWQgd2hlbiBjcmVhdGluZyBwYWNrYWdlcyEgVGhpcyBtZWFucyB0aGF0IGlmIHlvdSBjcmVhdGUKKyAgICBhIG1vZHVsZSB3aXRoaW4gYSBwYWNrYWdlIHlvdSBtdXN0IGFsc28gY3JlYXRlIHRoZSBwYWNrYWdlJ3MgX19pbml0X18gYXMKKyAgICB3ZWxsLgorCisgICAgIiIiCisgICAgc291cmNlID0gJ2F0dHIgPSB7MCFyfScKKyAgICBjcmVhdGVkX3BhdGhzID0gW10KKyAgICBtYXBwaW5nID0ge30KKyAgICBzdGF0ZV9tYW5hZ2VyID0gTm9uZQorICAgIHVuY2FjaGVfbWFuYWdlciA9IE5vbmUKKyAgICB0cnk6CisgICAgICAgIHRlbXBfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgIG1hcHBpbmdbJy5yb290J10gPSB0ZW1wX2RpcgorICAgICAgICBpbXBvcnRfbmFtZXMgPSBzZXQoKQorICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgICAgIGlmIG5vdCBuYW1lLmVuZHN3aXRoKCdfX2luaXRfXycpOgorICAgICAgICAgICAgICAgIGltcG9ydF9uYW1lID0gbmFtZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpbXBvcnRfbmFtZSA9IG5hbWVbOi1sZW4oJy5fX2luaXRfXycpXQorICAgICAgICAgICAgaW1wb3J0X25hbWVzLmFkZChpbXBvcnRfbmFtZSkKKyAgICAgICAgICAgIGlmIGltcG9ydF9uYW1lIGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tpbXBvcnRfbmFtZV0KKyAgICAgICAgICAgIG5hbWVfcGFydHMgPSBuYW1lLnNwbGl0KCcuJykKKyAgICAgICAgICAgIGZpbGVfcGF0aCA9IHRlbXBfZGlyCisgICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIG5hbWVfcGFydHNbOi0xXToKKyAgICAgICAgICAgICAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oZmlsZV9wYXRoLCBkaXJlY3RvcnkpCisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZpbGVfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIG9zLm1rZGlyKGZpbGVfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlZF9wYXRocy5hcHBlbmQoZmlsZV9wYXRoKQorICAgICAgICAgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKGZpbGVfcGF0aCwgbmFtZV9wYXJ0c1stMV0gKyAnLnB5JykKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlX3BhdGgsICd3JykgYXMgZmlsZToKKyAgICAgICAgICAgICAgICBmaWxlLndyaXRlKHNvdXJjZS5mb3JtYXQobmFtZSkpCisgICAgICAgICAgICBjcmVhdGVkX3BhdGhzLmFwcGVuZChmaWxlX3BhdGgpCisgICAgICAgICAgICBtYXBwaW5nW25hbWVdID0gZmlsZV9wYXRoCisgICAgICAgIHVuY2FjaGVfbWFuYWdlciA9IHVuY2FjaGUoKmltcG9ydF9uYW1lcykKKyAgICAgICAgdW5jYWNoZV9tYW5hZ2VyLl9fZW50ZXJfXygpCisgICAgICAgIHN0YXRlX21hbmFnZXIgPSBpbXBvcnRfc3RhdGUocGF0aD1bdGVtcF9kaXJdKQorICAgICAgICBzdGF0ZV9tYW5hZ2VyLl9fZW50ZXJfXygpCisgICAgICAgIHlpZWxkIG1hcHBpbmcKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiBzdGF0ZV9tYW5hZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3RhdGVfbWFuYWdlci5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKQorICAgICAgICBpZiB1bmNhY2hlX21hbmFnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB1bmNhY2hlX21hbmFnZXIuX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSkKKyAgICAgICAgc3VwcG9ydC5ybXRyZWUodGVtcF9kaXIpCisKKworZGVmIG1vY2tfcGF0aF9ob29rKCplbnRyaWVzLCBpbXBvcnRlcik6CisgICAgIiIiQSBtb2NrIHN5cy5wYXRoX2hvb2tzIGVudHJ5LiIiIgorICAgIGRlZiBob29rKGVudHJ5KToKKyAgICAgICAgaWYgZW50cnkgbm90IGluIGVudHJpZXM6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgorICAgICAgICByZXR1cm4gaW1wb3J0ZXIKKyAgICByZXR1cm4gaG9vawpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CmluZGV4IDFhMTI0YjUuLjY5ZGRiNTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKQEAgLTEsMyArMSw0IEBACitpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgZnVuY3Rvb2xzCkBAIC04LDYgKzksNyBAQAogaW1wb3J0IG9zCiBmcm9tIG9zLnBhdGggaW1wb3J0IG5vcm1jYXNlCiBpbXBvcnQgX3BpY2tsZQoraW1wb3J0IHBpY2tsZQogaW1wb3J0IHJlCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3lzCkBAIC0xNiw2ICsxOCw3IEBACiBpbXBvcnQgdW5pY29kZWRhdGEKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHVuaXR0ZXN0Lm1vY2sKK2ltcG9ydCB3YXJuaW5ncwogCiB0cnk6CiAgICAgZnJvbSBjb25jdXJyZW50LmZ1dHVyZXMgaW1wb3J0IFRocmVhZFBvb2xFeGVjdXRvcgpAQCAtMjMsOCArMjYsOCBAQAogICAgIFRocmVhZFBvb2xFeGVjdXRvciA9IE5vbmUKIAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgVEVTVEZOLCBEaXJzT25TeXNQYXRoLCBjcHl0aG9uX29ubHkKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBNSVNTSU5HX0NfRE9DU1RSSU5HUwotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IE1JU1NJTkdfQ19ET0NTVFJJTkdTLCBjcHl0aG9uX29ubHkKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogZnJvbSB0ZXN0IGltcG9ydCBpbnNwZWN0X2ZvZGRlciBhcyBtb2QKIGZyb20gdGVzdCBpbXBvcnQgaW5zcGVjdF9mb2RkZXIyIGFzIG1vZDIKIApAQCAtNjAsMTQgKzYzLDE2IEBACiAgICAgcHJlZGljYXRlcyA9IHNldChbaW5zcGVjdC5pc2J1aWx0aW4sIGluc3BlY3QuaXNjbGFzcywgaW5zcGVjdC5pc2NvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2ZyYW1lLCBpbnNwZWN0LmlzZnVuY3Rpb24sIGluc3BlY3QuaXNtZXRob2QsCiAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc21vZHVsZSwgaW5zcGVjdC5pc3RyYWNlYmFjaywKLSAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0LmlzZ2VuZXJhdG9yLCBpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb25dKQorICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNnZW5lcmF0b3IsIGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0LmlzY29yb3V0aW5lLCBpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb25dKQogCiAgICAgZGVmIGlzdGVzdChzZWxmLCBwcmVkaWNhdGUsIGV4cCk6CiAgICAgICAgIG9iaiA9IGV2YWwoZXhwKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocHJlZGljYXRlKG9iaiksICclcyglcyknICUgKHByZWRpY2F0ZS5fX25hbWVfXywgZXhwKSkKIAogICAgICAgICBmb3Igb3RoZXIgaW4gc2VsZi5wcmVkaWNhdGVzIC0gc2V0KFtwcmVkaWNhdGVdKToKLSAgICAgICAgICAgIGlmIHByZWRpY2F0ZSA9PSBpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24gYW5kXAorICAgICAgICAgICAgaWYgKHByZWRpY2F0ZSA9PSBpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24gb3IgXAorICAgICAgICAgICAgICAgcHJlZGljYXRlID09IGluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbikgYW5kIFwKICAgICAgICAgICAgICAgIG90aGVyID09IGluc3BlY3QuaXNmdW5jdGlvbjoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvdGhlcihvYmopLCAnbm90ICVzKCVzKScgJSAob3RoZXIuX19uYW1lX18sIGV4cCkpCkBAIC03NiwxOSArODEsMTkgQEAKICAgICBmb3IgaSBpbiByYW5nZSgyKToKICAgICAgICAgeWllbGQgaQogCithc3luYyBkZWYgY29yb3V0aW5lX2Z1bmN0aW9uX2V4YW1wbGUoc2VsZik6CisgICAgcmV0dXJuICdzcGFtJworCitAdHlwZXMuY29yb3V0aW5lCitkZWYgZ2VuX2Nvcm91dGluZV9mdW5jdGlvbl9leGFtcGxlKHNlbGYpOgorICAgIHlpZWxkCisgICAgcmV0dXJuICdzcGFtJworCiBjbGFzcyBFcXVhbHNUb0FsbDoKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgcmV0dXJuIFRydWUKIAogY2xhc3MgVGVzdFByZWRpY2F0ZXMoSXNUZXN0QmFzZSk6Ci0gICAgZGVmIHRlc3Rfc2l4dGVlbihzZWxmKToKLSAgICAgICAgY291bnQgPSBsZW4oW3ggZm9yIHggaW4gZGlyKGluc3BlY3QpIGlmIHguc3RhcnRzd2l0aCgnaXMnKV0pCi0gICAgICAgICMgVGhpcyB0ZXN0IGlzIGhlcmUgZm9yIHJlbWVtYmVyIHlvdSB0byB1cGRhdGUgRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QKLSAgICAgICAgIyB3aGljaCBjbGFpbXMgdGhlcmUgYXJlIDE2IHN1Y2ggZnVuY3Rpb25zCi0gICAgICAgIGV4cGVjdGVkID0gMTYKLSAgICAgICAgZXJyX21zZyA9ICJUaGVyZSBhcmUgJWQgKG5vdCAlZCkgaXMqIGZ1bmN0aW9ucyIgJSAoY291bnQsIGV4cGVjdGVkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvdW50LCBleHBlY3RlZCwgZXJyX21zZykKLQogCiAgICAgZGVmIHRlc3RfZXhjbHVkaW5nX3ByZWRpY2F0ZXMoc2VsZik6CiAgICAgICAgIGdsb2JhbCB0YgpAQCAtMTE2LDExICsxMjEsNjIgQEAKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2RhdGFkZXNjcmlwdG9yLCAnY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QuZGVmYXVsdF9mYWN0b3J5JykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2dlbmVyYXRvciwgJyh4IGZvciB4IGluIHJhbmdlKDIpKScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbiwgJ2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlJykKKworICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCisgICAgICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzY29yb3V0aW5lLCAnY29yb3V0aW5lX2Z1bmN0aW9uX2V4YW1wbGUoMSknKQorICAgICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uLCAnY29yb3V0aW5lX2Z1bmN0aW9uX2V4YW1wbGUnKQorCiAgICAgICAgIGlmIGhhc2F0dHIodHlwZXMsICdNZW1iZXJEZXNjcmlwdG9yVHlwZScpOgogICAgICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc21lbWJlcmRlc2NyaXB0b3IsICdkYXRldGltZS50aW1lZGVsdGEuZGF5cycpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3QuaXNtZW1iZXJkZXNjcmlwdG9yKGRhdGV0aW1lLnRpbWVkZWx0YS5kYXlzKSkKIAorICAgIGRlZiB0ZXN0X2lzY29yb3V0aW5lKHNlbGYpOgorICAgICAgICBnZW5fY29ybyA9IGdlbl9jb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZSgxKQorICAgICAgICBjb3JvID0gY29yb3V0aW5lX2Z1bmN0aW9uX2V4YW1wbGUoMSkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKAorICAgICAgICAgICAgaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uKGdlbl9jb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5pc2Nvcm91dGluZShnZW5fY29ybykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAgaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uKGdlbl9jb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LmlzZ2VuZXJhdG9yKGdlbl9jb3JvKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgICAgICBpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24oY29yb3V0aW5lX2Z1bmN0aW9uX2V4YW1wbGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5pc2Nvcm91dGluZShjb3JvKSkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKAorICAgICAgICAgICAgaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uKGNvcm91dGluZV9mdW5jdGlvbl9leGFtcGxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LmlzZ2VuZXJhdG9yKGNvcm8pKQorCisgICAgICAgIGNvcm8uY2xvc2UoKTsgZ2VuX2Nvcm8uY2xvc2UoKSAjIHNpbGVuY2Ugd2FybmluZ3MKKworICAgIGRlZiB0ZXN0X2lzYXdhaXRhYmxlKHNlbGYpOgorICAgICAgICBkZWYgZ2VuKCk6IHlpZWxkCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5pc2F3YWl0YWJsZShnZW4oKSkpCisKKyAgICAgICAgY29ybyA9IGNvcm91dGluZV9mdW5jdGlvbl9leGFtcGxlKDEpCisgICAgICAgIGdlbl9jb3JvID0gZ2VuX2Nvcm91dGluZV9mdW5jdGlvbl9leGFtcGxlKDEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3QuaXNhd2FpdGFibGUoY29ybykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LmlzYXdhaXRhYmxlKGdlbl9jb3JvKSkKKworICAgICAgICBjbGFzcyBGdXR1cmU6CisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5pc2F3YWl0YWJsZShGdXR1cmUoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5pc2F3YWl0YWJsZShGdXR1cmUpKQorCisgICAgICAgIGNsYXNzIE5vdEZ1dHVyZTogcGFzcworICAgICAgICBub3RfZnV0ID0gTm90RnV0dXJlKCkKKyAgICAgICAgbm90X2Z1dC5fX2F3YWl0X18gPSBsYW1iZGE6IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LmlzYXdhaXRhYmxlKG5vdF9mdXQpKQorCisgICAgICAgIGNvcm8uY2xvc2UoKTsgZ2VuX2Nvcm8uY2xvc2UoKSAjIHNpbGVuY2Ugd2FybmluZ3MKKwogICAgIGRlZiB0ZXN0X2lzcm91dGluZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3QuaXNyb3V0aW5lKG1vZC5zcGFtKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3QuaXNyb3V0aW5lKFtdLmNvdW50KSkKQEAgLTE4Niw2ICsyNDIsMTQgQEAKICAgICAgICAgICAgICAobW9kZmlsZSwgNDMsICdhcmd1ZScsIFsnICAgICAgICAgICAgc3BhbShhLCBiLCBjKVxuJ10sIDApKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldmlzZSgqbW9kLnN0WzNdWzE6XSksCiAgICAgICAgICAgICAgKG1vZGZpbGUsIDM5LCAnYWJ1c2UnLCBbJyAgICAgICAgc2VsZi5hcmd1ZShhLCBiLCBjKVxuJ10sIDApKQorICAgICAgICAjIFRlc3QgbmFtZWQgdHVwbGUgZmllbGRzCisgICAgICAgIHJlY29yZCA9IG1vZC5zdFswXQorICAgICAgICBzZWxmLmFzc2VydElzKHJlY29yZC5mcmFtZSwgbW9kLmZyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5saW5lbm8sIDE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5maWxlbmFtZSwgbW9kLl9fZmlsZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5mdW5jdGlvbiwgJ2VnZ3MnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdpbnNwZWN0LnN0YWNrKCknLCByZWNvcmQuY29kZV9jb250ZXh0WzBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5pbmRleCwgMCkKIAogICAgIGRlZiB0ZXN0X3RyYWNlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihnaXQudHIpLCAzKQpAQCAtMjE3LDkgKzI4MSw3IEBACiAgICAgIyBTdWJjbGFzc2VzIG11c3Qgb3ZlcnJpZGUuCiAgICAgZm9kZGVyTW9kdWxlID0gTm9uZQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKLQorICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKGluc3BlY3QuZ2V0c291cmNlZmlsZShzZWxmLmZvZGRlck1vZHVsZSkpIGFzIGZwOgogICAgICAgICAgICAgc2VsZi5zb3VyY2UgPSBmcC5yZWFkKCkKIApAQCAtMjc0LDYgKzMzNiw3IEBACiAgICAgZGVmIHRlc3RfZ2V0ZnVuY3Rpb25zKHNlbGYpOgogICAgICAgICBmdW5jdGlvbnMgPSBpbnNwZWN0LmdldG1lbWJlcnMobW9kLCBpbnNwZWN0LmlzZnVuY3Rpb24pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuY3Rpb25zLCBbKCdlZ2dzJywgbW9kLmVnZ3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnbG9iYmVzdCcsIG1vZC5sb2JiZXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3NwYW0nLCBtb2Quc3BhbSldKQogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKQEAgLTI4NSw2ICszNDgsMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGRvYyhnaXQuYWJ1c2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdBbm90aGVyXG5cbmRvY3N0cmluZ1xuXG5jb250YWluaW5nXG5cbnRhYnMnKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKKyAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCisgICAgZGVmIHRlc3RfZ2V0ZG9jX2luaGVyaXRlZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGRvYyhtb2QuRmVzdGVyaW5nR29iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQSBsb25nZXIsXG5cbmluZGVudGVkXG5cbmRvY3N0cmluZy4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0ZG9jKG1vZC5GZXN0ZXJpbmdHb2IuYWJ1c2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdBbm90aGVyXG5cbmRvY3N0cmluZ1xuXG5jb250YWluaW5nXG5cbnRhYnMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0ZG9jKG1vZC5GZXN0ZXJpbmdHb2IoKS5hYnVzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0Fub3RoZXJcblxuZG9jc3RyaW5nXG5cbmNvbnRhaW5pbmdcblxudGFicycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRkb2MobW9kLkZlc3RlcmluZ0dvYi5jb250cmFkaWN0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIGF1dG9tYXRpYyBnYWluc2F5aW5nLicpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKE1JU1NJTkdfQ19ET0NTVFJJTkdTLCAidGVzdCByZXF1aXJlcyBkb2NzdHJpbmdzIikKKyAgICBkZWYgdGVzdF9maW5kZG9jKHNlbGYpOgorICAgICAgICBmaW5kZG9jID0gaW5zcGVjdC5fZmluZGRvYworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbmRkb2MoaW50KSwgaW50Ll9fZG9jX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluZGRvYyhpbnQudG9fYnl0ZXMpLCBpbnQudG9fYnl0ZXMuX19kb2NfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaW5kZG9jKGludCgpLnRvX2J5dGVzKSwgaW50LnRvX2J5dGVzLl9fZG9jX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluZGRvYyhpbnQuZnJvbV9ieXRlcyksIGludC5mcm9tX2J5dGVzLl9fZG9jX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluZGRvYyhpbnQucmVhbCksIGludC5yZWFsLl9fZG9jX18pCisKICAgICBkZWYgdGVzdF9jbGVhbmRvYyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmNsZWFuZG9jKCdBblxuICAgIGluZGVudGVkXG4gICAgZG9jc3RyaW5nLicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdBblxuaW5kZW50ZWRcbmRvY3N0cmluZy4nKQpAQCAtMzA5LDcgKzM5Myw4IEBACiAKICAgICBkZWYgdGVzdF9nZXRzb3VyY2Uoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0U291cmNlRXF1YWwoZ2l0LmFidXNlLCAyOSwgMzkpCi0gICAgICAgIHNlbGYuYXNzZXJ0U291cmNlRXF1YWwobW9kLlN0dXBpZEdpdCwgMjEsIDQ2KQorICAgICAgICBzZWxmLmFzc2VydFNvdXJjZUVxdWFsKG1vZC5TdHVwaWRHaXQsIDIxLCA1MSkKKyAgICAgICAgc2VsZi5hc3NlcnRTb3VyY2VFcXVhbChtb2QubG9iYmVzdCwgNzUsIDc2KQogCiAgICAgZGVmIHRlc3RfZ2V0c291cmNlZmlsZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtY2FzZShpbnNwZWN0LmdldHNvdXJjZWZpbGUobW9kLnNwYW0pKSwgbW9kZmlsZSkKQEAgLTM2NCw2ICs0NDksOSBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgbGluZWNhY2hlLmdldGxpbmVzID0gZ2V0bGluZXMKIAorICAgIGRlZiB0ZXN0X2dldHNvdXJjZV9vbl9jb2RlX29iamVjdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRTb3VyY2VFcXVhbChtb2QuZWdncy5fX2NvZGVfXywgMTIsIDE4KQorCiBjbGFzcyBUZXN0RGVjb3JhdG9ycyhHZXRTb3VyY2VCYXNlKToKICAgICBmb2RkZXJNb2R1bGUgPSBtb2QyCiAKQEAgLTM3Myw2ICs0NjEsMTIgQEAKICAgICBkZWYgdGVzdF9yZXBsYWNpbmdfZGVjb3JhdG9yKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFNvdXJjZUVxdWFsKG1vZDIuZ29uZSwgOSwgMTApCiAKKyAgICBkZWYgdGVzdF9nZXRzb3VyY2VfdW53cmFwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFNvdXJjZUVxdWFsKG1vZDIucmVhbCwgMTMwLCAxMzIpCisKKyAgICBkZWYgdGVzdF9kZWNvcmF0b3Jfd2l0aF9sYW1iZGEoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0U291cmNlRXF1YWwobW9kMi5mdW5jMTE0LCAxMTMsIDExNSkKKwogY2xhc3MgVGVzdE9uZWxpbmVycyhHZXRTb3VyY2VCYXNlKToKICAgICBmb2RkZXJNb2R1bGUgPSBtb2QyCiAgICAgZGVmIHRlc3Rfb25lbGluZV9sYW1iZGEoc2VsZik6CkBAIC00NjYsOCArNTYwLDE1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBpbnNwZWN0LmZpbmRzb3VyY2UsIGNvKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgaW5zcGVjdC5nZXRzb3VyY2UsIGNvKQogCisgICAgZGVmIHRlc3RfZ2V0c291cmNlX29uX21ldGhvZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRTb3VyY2VFcXVhbChtb2QyLkNsYXNzV2l0aE1ldGhvZC5tZXRob2QsIDExOCwgMTE5KQorCisgICAgZGVmIHRlc3RfbmVzdGVkX2Z1bmMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0U291cmNlRXF1YWwobW9kMi5jbHMxMzUuZnVuYzEzNiwgMTM2LCAxMzkpCisKKwogY2xhc3MgVGVzdE5vRU9MKEdldFNvdXJjZUJhc2UpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi50ZW1wZGlyID0gVEVTVEZOICsgJ19kaXInCiAgICAgICAgIG9zLm1rZGlyKHNlbGYudGVtcGRpcikKICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsCkBAIC00NzYsNyArNTc3LDcgQEAKICAgICAgICAgd2l0aCBEaXJzT25TeXNQYXRoKHNlbGYudGVtcGRpcik6CiAgICAgICAgICAgICBpbXBvcnQgaW5zcGVjdF9mb2RkZXIzIGFzIG1vZDMKICAgICAgICAgc2VsZi5mb2RkZXJNb2R1bGUgPSBtb2QzCi0gICAgICAgIEdldFNvdXJjZUJhc2UuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzdXBlcigpLnNldFVwKCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnRlbXBkaXIpCkBAIC01MjksNyArNjMwLDggQEAKIAogICAgIGRlZiBhc3NlcnRBcmdTcGVjRXF1YWxzKHNlbGYsIHJvdXRpbmUsIGFyZ3NfZSwgdmFyYXJnc19lPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFya3dfZT1Ob25lLCBkZWZhdWx0c19lPU5vbmUsIGZvcm1hdHRlZD1Ob25lKToKLSAgICAgICAgYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzID0gaW5zcGVjdC5nZXRhcmdzcGVjKHJvdXRpbmUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzID0gaW5zcGVjdC5nZXRhcmdzcGVjKHJvdXRpbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgYXJnc19lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcmFyZ3MsIHZhcmFyZ3NfZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJrdywgdmFya3dfZSkKQEAgLTE2MzQsMTAgKzE3MzYsODYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscywgKDIsMykpCiAKIAorY2xhc3MgVGVzdEdldENvcm91dGluZVN0YXRlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgbnVtYmVyX2Nvcm91dGluZSgpOgorICAgICAgICAgICAgZm9yIG51bWJlciBpbiByYW5nZSg1KToKKyAgICAgICAgICAgICAgICB5aWVsZCBudW1iZXIKKyAgICAgICAgYXN5bmMgZGVmIGNvcm91dGluZSgpOgorICAgICAgICAgICAgYXdhaXQgbnVtYmVyX2Nvcm91dGluZSgpCisgICAgICAgIHNlbGYuY29yb3V0aW5lID0gY29yb3V0aW5lKCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5jb3JvdXRpbmUuY2xvc2UoKQorCisgICAgZGVmIF9jb3JvdXRpbmVzdGF0ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIGluc3BlY3QuZ2V0Y29yb3V0aW5lc3RhdGUoc2VsZi5jb3JvdXRpbmUpCisKKyAgICBkZWYgdGVzdF9jcmVhdGVkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2Nvcm91dGluZXN0YXRlKCksIGluc3BlY3QuQ09ST19DUkVBVEVEKQorCisgICAgZGVmIHRlc3Rfc3VzcGVuZGVkKHNlbGYpOgorICAgICAgICBzZWxmLmNvcm91dGluZS5zZW5kKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fY29yb3V0aW5lc3RhdGUoKSwgaW5zcGVjdC5DT1JPX1NVU1BFTkRFRCkKKworICAgIGRlZiB0ZXN0X2Nsb3NlZF9hZnRlcl9leGhhdXN0aW9uKHNlbGYpOgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuY29yb3V0aW5lLnNlbmQoTm9uZSkKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9jb3JvdXRpbmVzdGF0ZSgpLCBpbnNwZWN0LkNPUk9fQ0xPU0VEKQorCisgICAgZGVmIHRlc3RfY2xvc2VkX2FmdGVyX2ltbWVkaWF0ZV9leGNlcHRpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuY29yb3V0aW5lLnRocm93KFJ1bnRpbWVFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9jb3JvdXRpbmVzdGF0ZSgpLCBpbnNwZWN0LkNPUk9fQ0xPU0VEKQorCisgICAgZGVmIHRlc3RfZWFzeV9kZWJ1Z2dpbmcoc2VsZik6CisgICAgICAgICMgcmVwcigpIGFuZCBzdHIoKSBvZiBhIGNvcm91dGluZSBzdGF0ZSBzaG91bGQgY29udGFpbiB0aGUgc3RhdGUgbmFtZQorICAgICAgICBuYW1lcyA9ICdDT1JPX0NSRUFURUQgQ09ST19SVU5OSU5HIENPUk9fU1VTUEVOREVEIENPUk9fQ0xPU0VEJy5zcGxpdCgpCisgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgorICAgICAgICAgICAgc3RhdGUgPSBnZXRhdHRyKGluc3BlY3QsIG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUsIHJlcHIoc3RhdGUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBzdHIoc3RhdGUpKQorCisgICAgZGVmIHRlc3RfZ2V0Y29yb3V0aW5lbG9jYWxzKHNlbGYpOgorICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBnZW5jb3JvKCk6CisgICAgICAgICAgICB5aWVsZAorCisgICAgICAgIGdlbmNvcm8gPSBnZW5jb3JvKCkKKyAgICAgICAgYXN5bmMgZGVmIGZ1bmMoYT1Ob25lKToKKyAgICAgICAgICAgIGIgPSAnc3BhbScKKyAgICAgICAgICAgIGF3YWl0IGdlbmNvcm8KKworICAgICAgICBjb3JvID0gZnVuYygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjb3JvdXRpbmVsb2NhbHMoY29ybyksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogTm9uZSwgJ2dlbmNvcm8nOiBnZW5jb3JvfSkKKyAgICAgICAgY29yby5zZW5kKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjb3JvdXRpbmVsb2NhbHMoY29ybyksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogTm9uZSwgJ2dlbmNvcm8nOiBnZW5jb3JvLCAnYic6ICdzcGFtJ30pCisKKworY2xhc3MgTXlTaWduYXR1cmUoaW5zcGVjdC5TaWduYXR1cmUpOgorICAgICMgVG9wLWxldmVsIHRvIG1ha2UgaXQgcGlja2xhYmxlOworICAgICMgdXNlZCBpbiB0ZXN0X3NpZ25hdHVyZV9vYmplY3RfcGlja2xlCisgICAgcGFzcworCitjbGFzcyBNeVBhcmFtZXRlcihpbnNwZWN0LlBhcmFtZXRlcik6CisgICAgIyBUb3AtbGV2ZWwgdG8gbWFrZSBpdCBwaWNrbGFibGU7CisgICAgIyB1c2VkIGluIHRlc3Rfc2lnbmF0dXJlX29iamVjdF9waWNrbGUKKyAgICBwYXNzCisKKworCiBjbGFzcyBUZXN0U2lnbmF0dXJlT2JqZWN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHNpZ25hdHVyZShmdW5jKToKLSAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZnVuYykKKyAgICBkZWYgc2lnbmF0dXJlKGZ1bmMsICoqa3cpOgorICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmdW5jLCAqKmt3KQogICAgICAgICByZXR1cm4gKHR1cGxlKChwYXJhbS5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAoLi4uIGlmIHBhcmFtLmRlZmF1bHQgaXMgcGFyYW0uZW1wdHkgZWxzZSBwYXJhbS5kZWZhdWx0KSwKICAgICAgICAgICAgICAgICAgICAgICAgKC4uLiBpZiBwYXJhbS5hbm5vdGF0aW9uIGlzIHBhcmFtLmVtcHR5CkBAIC0xNjkxLDYgKzE4NjksMzcgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdmb2xsb3dzIGRlZmF1bHQgYXJndW1lbnQnKToKICAgICAgICAgICAgIFMoKHBrZCwgcGspKQogCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXByKHNpZykuc3RhcnRzd2l0aCgnPFNpZ25hdHVyZScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJyhwbywgcGsnIGluIHJlcHIoc2lnKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vYmplY3RfcGlja2xlKHNlbGYpOgorICAgICAgICBkZWYgZm9vKGEsIGIsICosIGM6MT17fSwgKiprdykgLT4gezQyOidoYW0nfTogcGFzcworICAgICAgICBmb29fcGFydGlhbCA9IGZ1bmN0b29scy5wYXJ0aWFsKGZvbywgYT0xKQorCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZvb19wYXJ0aWFsKQorCisgICAgICAgIGZvciB2ZXIgaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBpY2tsZV92ZXI9dmVyLCBzdWJjbGFzcz1GYWxzZSk6CisgICAgICAgICAgICAgICAgc2lnX3BpY2tsZWQgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKHNpZywgdmVyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZywgc2lnX3BpY2tsZWQpCisKKyAgICAgICAgIyBUZXN0IHRoYXQgYmFzaWMgc3ViLWNsYXNzaW5nIHdvcmtzCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZvbykKKyAgICAgICAgbXlwYXJhbSA9IE15UGFyYW1ldGVyKG5hbWU9J3onLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKyAgICAgICAgbXlwYXJhbXMgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdChzaWcucGFyYW1ldGVycywgYT1teXBhcmFtKQorICAgICAgICBteXNpZyA9IE15U2lnbmF0dXJlKCkucmVwbGFjZShwYXJhbWV0ZXJzPW15cGFyYW1zLnZhbHVlcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fYW5ub3RhdGlvbj1zaWcucmV0dXJuX2Fubm90YXRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG15c2lnLCBNeVNpZ25hdHVyZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG15c2lnLnBhcmFtZXRlcnNbJ3onXSwgTXlQYXJhbWV0ZXIpKQorCisgICAgICAgIGZvciB2ZXIgaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBpY2tsZV92ZXI9dmVyLCBzdWJjbGFzcz1UcnVlKToKKyAgICAgICAgICAgICAgICBzaWdfcGlja2xlZCA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMobXlzaWcsIHZlcikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteXNpZywgc2lnX3BpY2tsZWQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2lnX3BpY2tsZWQsIE15U2lnbmF0dXJlKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzaWdfcGlja2xlZC5wYXJhbWV0ZXJzWyd6J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXlQYXJhbWV0ZXIpKQorCiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2ltbXV0YWJpbGl0eShzZWxmKToKICAgICAgICAgZGVmIHRlc3QoYSk6CiAgICAgICAgICAgICBwYXNzCkBAIC0xODA1LDYgKzIwMTQsOCBAQAogICAgICAgICB0ZXN0X3VuYm91bmRfbWV0aG9kKGRpY3QuX19kZWxpdGVtX18pCiAgICAgICAgIHRlc3RfdW5ib3VuZF9tZXRob2QocHJvcGVydHkuX19kZWxldGVfXykKIAorICAgICAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaXNzdWUgIzIwNTg2CisgICAgICAgIHRlc3RfY2FsbGFibGUoX3Rlc3RjYXBpLmRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9idXRfbm9fZG9jKQogCiAgICAgQGNweXRob25fb25seQogICAgIEB1bml0dGVzdC5za2lwSWYoTUlTU0lOR19DX0RPQ1NUUklOR1MsCkBAIC0xODI0LDIzICsyMDM1LDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZnVuYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUoZGVjb3JhdGVkX2Z1bmMpKQogCisgICAgICAgIGRlZiB3cmFwcGVyX2xpa2UoKmFyZ3MsICoqa3dhcmdzKSAtPiBpbnQ6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShkZWNvcmF0ZWRfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlZD1GYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUod3JhcHBlcl9saWtlKSkKKwogICAgIEBjcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fYnVpbHRpbnNfbm9fc2lnbmF0dXJlKHNlbGYpOgogICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnbm8gc2lnbmF0dXJlIGZvdW5kIGZvciBidWlsdGluJyk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vIHNpZ25hdHVyZSBmb3VuZCBmb3IgYnVpbHRpbicpOgogICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUoX3Rlc3RjYXBpLmRvY3N0cmluZ19ub19zaWduYXR1cmUpCiAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm8gc2lnbmF0dXJlIGZvdW5kIGZvciBidWlsdGluJyk6CisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZShzdHIpCisKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fbm9uX2Z1bmN0aW9uKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaXMgbm90IGEgY2FsbGFibGUgb2JqZWN0Jyk6CiAgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZSg0MikKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaXMgbm90IGEgUHl0aG9uIGZ1bmN0aW9uJyk6Ci0gICAgICAgICAgICBpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2Z1bmN0aW9uKDQyKQotCi0gICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2Zyb21fYnVpbHRpbl9lcnJvcnMoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpcyBub3QgYSBQeXRob24gYnVpbHRpbicpOgotICAgICAgICAgICAgaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9idWlsdGluKDQyKQotCiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2Zyb21fZnVuY3Rpb25saWtlX29iamVjdChzZWxmKToKICAgICAgICAgZGVmIGZ1bmMoYSxiLCAqYXJncywga3dvbmx5PVRydWUsIGt3b25seXJlcSwgKiprd2FyZ3MpOgogICAgICAgICAgICAgcGFzcwpAQCAtMTg2MSw5ICsyMDc1LDkgQEAKICAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmZ1bmMoKmFyZ3MsICoqa3dhcmdzKQogCi0gICAgICAgIHNpZ19mdW5jID0gaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9mdW5jdGlvbihmdW5jKQorICAgICAgICBzaWdfZnVuYyA9IGluc3BlY3QuU2lnbmF0dXJlLmZyb21fY2FsbGFibGUoZnVuYykKIAotICAgICAgICBzaWdfZnVuY2xpa2UgPSBpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2Z1bmN0aW9uKGZ1bmNsaWtlKGZ1bmMpKQorICAgICAgICBzaWdfZnVuY2xpa2UgPSBpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlKGZ1bmNsaWtlKGZ1bmMpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ19mdW5jbGlrZSwgc2lnX2Z1bmMpCiAKICAgICAgICAgc2lnX2Z1bmNsaWtlID0gaW5zcGVjdC5zaWduYXR1cmUoZnVuY2xpa2UoZnVuYykpCkBAIC0xOTExLDkgKzIxMjUsNiBAQAogICAgICAgICAgICAgX19kZWZhdWx0c19fID0gZnVuYy5fX2RlZmF1bHRzX18KICAgICAgICAgICAgIF9fa3dkZWZhdWx0c19fID0gZnVuYy5fX2t3ZGVmYXVsdHNfXwogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpcyBub3QgYSBQeXRob24gZnVuY3Rpb24nKToKLSAgICAgICAgICAgIGluc3BlY3QuU2lnbmF0dXJlLmZyb21fZnVuY3Rpb24oZnVuY2xpa2UpCi0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaW5zcGVjdC5zaWduYXR1cmUoZnVuY2xpa2UpKSwgJyhtYXJrZXIpJykKIAogICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9tZXRob2Qoc2VsZik6CkBAIC0yMjY1LDYgKzI0NzYsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoRm9vLmJhciwgZm9sbG93X3dyYXBwZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhcmdzJywgLi4uLCAuLi4sICJ2YXJfcG9zaXRpb25hbCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdrd2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKSAjIGZ1bmN0b29scy53cmFwcyB3aWxsIGNvcHkgX19hbm5vdGF0aW9uc19fCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZnJvbSAiZnVuYyIgdG8gIndyYXBwZXIiLCBoZW5jZSBubworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJldHVybl9hbm5vdGF0aW9uCisKICAgICAgICAgIyBUZXN0IHRoYXQgd2UgaGFuZGxlIG1ldGhvZCB3cmFwcGVycyBjb3JyZWN0bHkKICAgICAgICAgZGVmIGRlY29yYXRvcihmdW5jKToKICAgICAgICAgICAgIEBmdW5jdG9vbHMud3JhcHMoZnVuYykKQEAgLTI0NzEsNjAgKzI2ODksMTAyIEBACiAgICAgICAgIGRlZiBiYXIoYSwgKiwgYjppbnQpIC0+IGZsb2F0OiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LnNpZ25hdHVyZShmb28pID09IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSAhPSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShmb28pKSwgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShiYXIpKSkKIAogICAgICAgICBkZWYgYmFyKGEsICosIGI6aW50KSAtPiBpbnQ6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LnNpZ25hdHVyZShmb28pID09IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LnNpZ25hdHVyZShmb28pICE9IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoCisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLCBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGJhcikpKQogCiAgICAgICAgIGRlZiBiYXIoYSwgKiwgYjppbnQpOiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSA9PSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSAhPSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKAorICAgICAgICAgICAgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShmb28pKSwgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShiYXIpKSkKIAogICAgICAgICBkZWYgYmFyKGEsICosIGI6aW50PTQyKSAtPiBmbG9hdDogcGFzcwogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgPT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgIT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkpCiAKICAgICAgICAgZGVmIGJhcihhLCAqLCBjKSAtPiBmbG9hdDogcGFzcwogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgPT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgIT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkpCiAKICAgICAgICAgZGVmIGJhcihhLCBiOmludCkgLT4gZmxvYXQ6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LnNpZ25hdHVyZShmb28pID09IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LnNpZ25hdHVyZShmb28pICE9IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoCisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLCBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGJhcikpKQogICAgICAgICBkZWYgc3BhbShiOmludCwgYSkgLT4gZmxvYXQ6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LnNpZ25hdHVyZShzcGFtKSA9PSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5zaWduYXR1cmUoc3BhbSkgIT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoc3BhbSkpLCBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGJhcikpKQogCiAgICAgICAgIGRlZiBmb28oKiwgYSwgYiwgYyk6IHBhc3MKICAgICAgICAgZGVmIGJhcigqLCBjLCBiLCBhKTogcGFzcwogICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSA9PSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgIT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkpCiAKICAgICAgICAgZGVmIGZvbygqLCBhPTEsIGIsIGMpOiBwYXNzCiAgICAgICAgIGRlZiBiYXIoKiwgYywgYiwgYT0xKTogcGFzcwogICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSA9PSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgIT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkpCiAKICAgICAgICAgZGVmIGZvbyhwb3MsICosIGE9MSwgYiwgYyk6IHBhc3MKICAgICAgICAgZGVmIGJhcihwb3MsICosIGMsIGIsIGE9MSk6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgPT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LnNpZ25hdHVyZShmb28pICE9IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLCBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGJhcikpKQogCiAgICAgICAgIGRlZiBmb28ocG9zLCAqLCBhLCBiLCBjKTogcGFzcwogICAgICAgICBkZWYgYmFyKHBvcywgKiwgYywgYiwgYT0xKTogcGFzcwogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgPT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgIT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkpCiAKICAgICAgICAgZGVmIGZvbyhwb3MsICphcmdzLCBhPTQyLCBiLCBjLCAqKmt3YXJnczppbnQpOiBwYXNzCiAgICAgICAgIGRlZiBiYXIocG9zLCAqYXJncywgYywgYiwgYT00MiwgKiprd2FyZ3M6aW50KTogcGFzcwogICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSA9PSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgIT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkpCiAKLSAgICBkZWYgdGVzdF9zaWduYXR1cmVfdW5oYXNoYWJsZShzZWxmKToKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfaGFzaGFibGUoc2VsZik6CisgICAgICAgIFMgPSBpbnNwZWN0LlNpZ25hdHVyZQorICAgICAgICBQID0gaW5zcGVjdC5QYXJhbWV0ZXIKKwogICAgICAgICBkZWYgZm9vKGEpOiBwYXNzCi0gICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZvbykKKyAgICAgICAgZm9vX3NpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZvbykKKworICAgICAgICBtYW51YWxfc2lnID0gUyhwYXJhbWV0ZXJzPVtQKCdhJywgUC5QT1NJVElPTkFMX09SX0tFWVdPUkQpXSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goZm9vX3NpZyksIGhhc2gobWFudWFsX3NpZykpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaGFzaChmb29fc2lnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoKG1hbnVhbF9zaWcucmVwbGFjZShyZXR1cm5fYW5ub3RhdGlvbj0nc3BhbScpKSkKKworICAgICAgICBkZWYgYmFyKGEpIC0+IDE6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChoYXNoKGZvb19zaWcpLCBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGJhcikpKQorCisgICAgICAgIGRlZiBmb28oYT17fSk6IHBhc3MKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3VuaGFzaGFibGUgdHlwZScpOgotICAgICAgICAgICAgaGFzaChzaWcpCisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpCisKKyAgICAgICAgZGVmIGZvbyhhKSAtPiB7fTogcGFzcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndW5oYXNoYWJsZSB0eXBlJyk6CisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpCiAKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfc3RyKHNlbGYpOgogICAgICAgICBkZWYgZm9vKGE6aW50PTEsICosIGIsIGM9Tm9uZSwgKiprd2FyZ3MpIC0+IDQyOgpAQCAtMjU5OCw2ICsyODU4LDE5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoU3BhbS5mb28pLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2lnbmF0dXJlKEhhbS5mb28pKQogCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2Zyb21fY2FsbGFibGVfcHl0aG9uX29iaihzZWxmKToKKyAgICAgICAgY2xhc3MgTXlTaWduYXR1cmUoaW5zcGVjdC5TaWduYXR1cmUpOiBwYXNzCisgICAgICAgIGRlZiBmb28oYSwgKiwgYjoxKTogcGFzcworICAgICAgICBmb29fc2lnID0gTXlTaWduYXR1cmUuZnJvbV9jYWxsYWJsZShmb28pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGZvb19zaWcsIE15U2lnbmF0dXJlKSkKKworICAgIEB1bml0dGVzdC5za2lwSWYoTUlTU0lOR19DX0RPQ1NUUklOR1MsCisgICAgICAgICAgICAgICAgICAgICAiU2lnbmF0dXJlIGluZm9ybWF0aW9uIGZvciBidWlsdGlucyByZXF1aXJlcyBkb2NzdHJpbmdzIikKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfZnJvbV9jYWxsYWJsZV9idWlsdGluX29iaihzZWxmKToKKyAgICAgICAgY2xhc3MgTXlTaWduYXR1cmUoaW5zcGVjdC5TaWduYXR1cmUpOiBwYXNzCisgICAgICAgIHNpZyA9IE15U2lnbmF0dXJlLmZyb21fY2FsbGFibGUoX3BpY2tsZS5QaWNrbGVyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzaWcsIE15U2lnbmF0dXJlKSkKKwogCiBjbGFzcyBUZXN0UGFyYW1ldGVyT2JqZWN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX2tpbmRzKHNlbGYpOgpAQCAtMjY0Myw2ICsyOTE2LDE2IEBACiAgICAgICAgICAgICBwLnJlcGxhY2Uoa2luZD1pbnNwZWN0LlBhcmFtZXRlci5WQVJfUE9TSVRJT05BTCkKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihwKS5zdGFydHN3aXRoKCc8UGFyYW1ldGVyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnImE9NDIiJyBpbiByZXByKHApKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9oYXNoYWJsZShzZWxmKToKKyAgICAgICAgUCA9IGluc3BlY3QuUGFyYW1ldGVyCisgICAgICAgIGZvbyA9IFAoJ2ZvbycsIGtpbmQ9UC5QT1NJVElPTkFMX09OTFkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChmb28pLCBoYXNoKFAoJ2ZvbycsIGtpbmQ9UC5QT1NJVElPTkFMX09OTFkpKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChoYXNoKGZvbyksIGhhc2goUCgnZm9vJywga2luZD1QLlBPU0lUSU9OQUxfT05MWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PTQyKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaGFzaChmb28pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2goZm9vLnJlcGxhY2Uoa2luZD1QLlZBUl9QT1NJVElPTkFMKSkpCiAKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX2VxdWFsaXR5KHNlbGYpOgogICAgICAgICBQID0gaW5zcGVjdC5QYXJhbWV0ZXIKQEAgLTI2NjAsMTMgKzI5NDMsNiBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHAgIT0gUCgnZm9vJywgZGVmYXVsdD00MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1pbnNwZWN0LlBhcmFtZXRlci5LRVlXT1JEX09OTFkpKQogCi0gICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl91bmhhc2hhYmxlKHNlbGYpOgotICAgICAgICBwID0gaW5zcGVjdC5QYXJhbWV0ZXIoJ2ZvbycsIGRlZmF1bHQ9NDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLktFWVdPUkRfT05MWSkKLQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndW5oYXNoYWJsZSB0eXBlJyk6Ci0gICAgICAgICAgICBoYXNoKHApCi0KICAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX3JlcGxhY2Uoc2VsZik6CiAgICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcignZm9vJywgZGVmYXVsdD00MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuS0VZV09SRF9PTkxZKQpAQCAtMjczNSw3ICszMDExLDkgQEAKICAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKToKICAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCBzcGFtPTEwKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndG9vIG1hbnkga2V5d29yZCBhcmd1bWVudHMnKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgVHlwZUVycm9yLCAiZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCAnc3BhbSciKToKKwogICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIHNwYW09MSkKIAogICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX3ZhcihzZWxmKToKQEAgLTI3NjAsMTAgKzMwMzgsMTIgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJyk6CiAgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSwgMiwgMywgNCkKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAiJ2InIHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQiKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaXNzaW5nIGEgcmVxdWlyZWQgYXJndW1lbnQ6ICdiJyIpOgogICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgIidhJyBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0Iik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlzc2luZyBhIHJlcXVpcmVkIGFyZ3VtZW50OiAnYSciKToKICAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0KQogCiAgICAgICAgIGRlZiB0ZXN0KGEsIGIsIGM9MTApOgpAQCAtMjgzNiw3ICszMTE2LDcgQEAKICAgICAgICAgZGVmIHRlc3QoYSwgKiwgZm9vPTEsIGJhcik6CiAgICAgICAgICAgICByZXR1cm4gZm9vCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidiYXInIHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQgdmFsdWUiKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlzc2luZyBhIHJlcXVpcmVkIGFyZ3VtZW50OiAnYmFyJyIpOgogICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCiAKICAgICAgICAgZGVmIHRlc3QoZm9vLCAqLCBiYXIpOgpAQCAtMjg0NCw4ICszMTI0LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYmFyPTIpLCAoMSwgMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGJhcj0yLCBmb289MSksICgxLCAyKSkKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b28gbWFueSBrZXl3b3JkIGFyZ3VtZW50cycpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBUeXBlRXJyb3IsICJnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50ICdzcGFtJyIpOgorCiAgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgYmFyPTIsIGZvbz0xLCBzcGFtPTEwKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCkBAIC0yODU2LDEyICszMTM3LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJyk6CiAgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSwgMiwgYmFyPTIpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9vIG1hbnkga2V5d29yZCBhcmd1bWVudHMnKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgVHlwZUVycm9yLCAiZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCAnc3BhbSciKToKKwogICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIGJhcj0yLCBzcGFtPSdoYW0nKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidiYXInIHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQgdmFsdWUiKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlzc2luZyBhIHJlcXVpcmVkIGFyZ3VtZW50OiAnYmFyJyIpOgogICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCiAKICAgICAgICAgZGVmIHRlc3QoZm9vLCAqLCBiYXIsICoqYmluKToKQEAgLTI4NzMsNyArMzE1NSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIHNwYW09J2hhbScsIGZvbz0xLCBiYXI9MiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIHsnc3BhbSc6ICdoYW0nfSkpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidmb28nIHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQgdmFsdWUiKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaXNzaW5nIGEgcmVxdWlyZWQgYXJndW1lbnQ6ICdmb28nIik6CiAgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgc3BhbT0naGFtJywgYmFyPTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIGJhcj0yLCBiaW49MSwgc3BhbT0xMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIHsnYmluJzogMSwgJ3NwYW0nOiAxMH0pKQpAQCAtMjkzOCw3ICszMjIwLDkgQEAKICAgICAgICAgICAgIHJldHVybiBhLCBhcmdzCiAgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgInRvbyBtYW55IGtleXdvcmQgYXJndW1lbnRzIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwgImdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJ2FyZ3MnIik6CisKICAgICAgICAgICAgIHNpZy5iaW5kKGE9MCwgYXJncz0xKQogCiAgICAgICAgIGRlZiB0ZXN0KCphcmdzLCAqKmt3YXJncyk6CkBAIC0yOTgyLDYgKzMyNjYsNjQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiYSA9PSBiYTQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiYSAhPSBiYTQpCiAKKyAgICAgICAgZGVmIGZvbygqLCBhLCBiKTogcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pCisgICAgICAgIGJhMSA9IHNpZy5iaW5kKGE9MSwgYj0yKQorICAgICAgICBiYTIgPSBzaWcuYmluZChiPTIsIGE9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJhMSA9PSBiYTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYmExICE9IGJhMikKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9ib3VuZF9hcmd1bWVudHNfcGlja2xlKHNlbGYpOgorICAgICAgICBkZWYgZm9vKGEsIGIsICosIGM6MT17fSwgKiprdykgLT4gezQyOidoYW0nfTogcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pCisgICAgICAgIGJhID0gc2lnLmJpbmQoMjAsIDMwLCB6PXt9KQorCisgICAgICAgIGZvciB2ZXIgaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBpY2tsZV92ZXI9dmVyKToKKyAgICAgICAgICAgICAgICBiYV9waWNrbGVkID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhiYSwgdmVyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhLCBiYV9waWNrbGVkKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JvdW5kX2FyZ3VtZW50c19yZXByKHNlbGYpOgorICAgICAgICBkZWYgZm9vKGEsIGIsICosIGM6MT17fSwgKiprdykgLT4gezQyOidoYW0nfTogcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pCisgICAgICAgIGJhID0gc2lnLmJpbmQoMjAsIDMwLCB6PXt9KQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoYmEpLCByJzxCb3VuZEFyZ3VtZW50cyBcKGE9MjAsLipcfVx9XCk+JykKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9ib3VuZF9hcmd1bWVudHNfYXBwbHlfZGVmYXVsdHMoc2VsZik6CisgICAgICAgIGRlZiBmb28oYSwgYj0xLCAqYXJncywgYzoxPXt9LCAqKmt3KTogcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pCisKKyAgICAgICAgYmEgPSBzaWcuYmluZCgyMCkKKyAgICAgICAgYmEuYXBwbHlfZGVmYXVsdHMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgbGlzdChiYS5hcmd1bWVudHMuaXRlbXMoKSksCisgICAgICAgICAgICBbKCdhJywgMjApLCAoJ2InLCAxKSwgKCdhcmdzJywgKCkpLCAoJ2MnLCB7fSksICgna3cnLCB7fSldKQorCisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgd2UgcHJlc2VydmUgdGhlIG9yZGVyOgorICAgICAgICAjIGkuZS4gJ2MnIHNob3VsZCBiZSAqYmVmb3JlKiAna3cnLgorICAgICAgICBiYSA9IHNpZy5iaW5kKDEwLCAyMCwgMzAsIGQ9MSkKKyAgICAgICAgYmEuYXBwbHlfZGVmYXVsdHMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgbGlzdChiYS5hcmd1bWVudHMuaXRlbXMoKSksCisgICAgICAgICAgICBbKCdhJywgMTApLCAoJ2InLCAyMCksICgnYXJncycsICgzMCwpKSwgKCdjJywge30pLCAoJ2t3JywgeydkJzoxfSldKQorCisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgQm91bmRBcmd1bWVudHMgcHJvZHVjZWQgYnkgYmluZF9wYXJ0aWFsKCkKKyAgICAgICAgIyBhcmUgc3VwcG9ydGVkLgorICAgICAgICBkZWYgZm9vKGEsIGIpOiBwYXNzCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZvbykKKyAgICAgICAgYmEgPSBzaWcuYmluZF9wYXJ0aWFsKDIwKQorICAgICAgICBiYS5hcHBseV9kZWZhdWx0cygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBsaXN0KGJhLmFyZ3VtZW50cy5pdGVtcygpKSwKKyAgICAgICAgICAgIFsoJ2EnLCAyMCldKQorCisgICAgICAgICMgVGVzdCBubyBhcmdzCisgICAgICAgIGRlZiBmb28oKTogcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pCisgICAgICAgIGJhID0gc2lnLmJpbmQoKQorICAgICAgICBiYS5hcHBseV9kZWZhdWx0cygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiYS5hcmd1bWVudHMuaXRlbXMoKSksIFtdKQorCiAKIGNsYXNzIFRlc3RTaWduYXR1cmVQcml2YXRlSGVscGVycyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2dldF9ib3VuZF9wYXJhbShzZWxmKToKQEAgLTMwNDYsNiArMzM4OCw2MSBAQAogICAgICAgICAgICAgTm9uZSwKICAgICAgICAgICAgIE5vbmUpCiAKK2NsYXNzIFRlc3RTaWduYXR1cmVEZWZpbml0aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBUaGlzIHRlc3QgY2FzZSBwcm92aWRlcyBhIGhvbWUgZm9yIGNoZWNraW5nIHRoYXQgcGFydGljdWxhciBBUElzCisgICAgIyBoYXZlIHNpZ25hdHVyZXMgYXZhaWxhYmxlIGZvciBpbnRyb3NwZWN0aW9uCisKKyAgICBAY3B5dGhvbl9vbmx5CisgICAgQHVuaXR0ZXN0LnNraXBJZihNSVNTSU5HX0NfRE9DU1RSSU5HUywKKyAgICAgICAgICAgICAgICAgICAgICJTaWduYXR1cmUgaW5mb3JtYXRpb24gZm9yIGJ1aWx0aW5zIHJlcXVpcmVzIGRvY3N0cmluZ3MiKQorICAgIGRlZiB0ZXN0X2J1aWx0aW5zX2hhdmVfc2lnbmF0dXJlcyhzZWxmKToKKyAgICAgICAgIyBUaGlzIGNoZWNrcyBhbGwgYnVpbHRpbiBjYWxsYWJsZXMgaW4gQ1B5dGhvbiBoYXZlIHNpZ25hdHVyZXMKKyAgICAgICAgIyBBIGZldyBoYXZlIHNpZ25hdHVyZXMgU2lnbmF0dXJlIGNhbid0IHlldCBoYW5kbGUsIHNvIHdlIHNraXAgdGhvc2UKKyAgICAgICAgIyBzaW5jZSB0aGV5IHdpbGwgaGF2ZSB0byB3YWl0IHVudGlsIFBFUCA0NTcgYWRkcyB0aGUgcmVxdWlyZWQKKyAgICAgICAgIyBpbnRyb3NwZWN0aW9uIHN1cHBvcnQgdG8gdGhlIGluc3BlY3QgbW9kdWxlCisgICAgICAgICMgU29tZSBvdGhlcnMgYWxzbyBoYXZlbid0IGJlZW4gY29udmVydGVkIHlldCBmb3IgdmFyaW91cyBvdGhlcgorICAgICAgICAjIHJlYXNvbnMsIHNvIHdlIGFsc28gc2tpcCB0aG9zZSBmb3IgdGhlIHRpbWUgYmVpbmcsIGJ1dCBkZXNpZ24KKyAgICAgICAgIyB0aGUgdGVzdCB0byBmYWlsIGluIG9yZGVyIHRvIGluZGljYXRlIHdoZW4gaXQgbmVlZHMgdG8gYmUKKyAgICAgICAgIyB1cGRhdGVkLgorICAgICAgICBub19zaWduYXR1cmUgPSBzZXQoKQorICAgICAgICAjIFRoZXNlIG5lZWQgUEVQIDQ1NyBncm91cHMKKyAgICAgICAgbmVlZHNfZ3JvdXBzID0geyJyYW5nZSIsICJzbGljZSIsICJkaXIiLCAiZ2V0YXR0ciIsCisgICAgICAgICAgICAgICAgICAgICAgICAibmV4dCIsICJpdGVyIiwgInZhcnMifQorICAgICAgICBub19zaWduYXR1cmUgfD0gbmVlZHNfZ3JvdXBzCisgICAgICAgICMgVGhlc2UgbmVlZCBQRVAgNDU3IGdyb3VwcyBvciBhIHNpZ25hdHVyZSBjaGFuZ2UgdG8gYWNjZXB0IE5vbmUKKyAgICAgICAgbmVlZHNfc2VtYW50aWNfdXBkYXRlID0geyJyb3VuZCJ9CisgICAgICAgIG5vX3NpZ25hdHVyZSB8PSBuZWVkc19zZW1hbnRpY191cGRhdGUKKyAgICAgICAgIyBUaGVzZSBuZWVkICphcmdzIHN1cHBvcnQgaW4gQXJndW1lbnQgQ2xpbmljCisgICAgICAgIG5lZWRzX3ZhcmFyZ3MgPSB7Im1pbiIsICJtYXgiLCAicHJpbnQiLCAiX19idWlsZF9jbGFzc19fIn0KKyAgICAgICAgbm9fc2lnbmF0dXJlIHw9IG5lZWRzX3ZhcmFyZ3MKKyAgICAgICAgIyBUaGVzZSBzaW1wbHkgd2VyZW4ndCBjb3ZlcmVkIGluIHRoZSBpbml0aWFsIEFDIGNvbnZlcnNpb24KKyAgICAgICAgIyBmb3IgYnVpbHRpbiBjYWxsYWJsZXMKKyAgICAgICAgbm90X2NvbnZlcnRlZF95ZXQgPSB7Im9wZW4iLCAiX19pbXBvcnRfXyJ9CisgICAgICAgIG5vX3NpZ25hdHVyZSB8PSBub3RfY29udmVydGVkX3lldAorICAgICAgICAjIFRoZXNlIGJ1aWx0aW4gdHlwZXMgYXJlIGV4cGVjdGVkIHRvIHByb3ZpZGUgaW50cm9zcGVjdGlvbiBpbmZvCisgICAgICAgIHR5cGVzX3dpdGhfc2lnbmF0dXJlcyA9IHNldCgpCisgICAgICAgICMgQ2hlY2sgdGhlIHNpZ25hdHVyZXMgd2UgZXhwZWN0IHRvIGJlIHRoZXJlCisgICAgICAgIG5zID0gdmFycyhidWlsdGlucykKKyAgICAgICAgZm9yIG5hbWUsIG9iaiBpbiBzb3J0ZWQobnMuaXRlbXMoKSk6CisgICAgICAgICAgICBpZiBub3QgY2FsbGFibGUob2JqKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBUaGUgYnVpbHRpbiB0eXBlcyBoYXZlbid0IGJlZW4gY29udmVydGVkIHRvIEFDIHlldAorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGUpIGFuZCAobmFtZSBub3QgaW4gdHlwZXNfd2l0aF9zaWduYXR1cmVzKToKKyAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCB0aGlzIGFsc28gc2tpcHMgYWxsIHRoZSBleGNlcHRpb24gdHlwZXMKKyAgICAgICAgICAgICAgICBub19zaWduYXR1cmUuYWRkKG5hbWUpCisgICAgICAgICAgICBpZiAobmFtZSBpbiBub19zaWduYXR1cmUpOgorICAgICAgICAgICAgICAgICMgTm90IHlldCBjb252ZXJ0ZWQKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYnVpbHRpbj1uYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShpbnNwZWN0LnNpZ25hdHVyZShvYmopKQorICAgICAgICAjIENoZWNrIGNhbGxhYmxlcyB0aGF0IGhhdmVuJ3QgYmVlbiBjb252ZXJ0ZWQgZG9uJ3QgY2xhaW0gYSBzaWduYXR1cmUKKyAgICAgICAgIyBUaGlzIGVuc3VyZXMgdGhpcyB0ZXN0IHdpbGwgc3RhcnQgZmFpbGluZyBhcyBtb3JlIHNpZ25hdHVyZXMgYXJlCisgICAgICAgICMgYWRkZWQsIHNvIHRoZSBhZmZlY3RlZCBpdGVtcyBjYW4gYmUgbW92ZWQgaW50byB0aGUgc2NvcGUgb2YgdGhlCisgICAgICAgICMgcmVncmVzc2lvbiB0ZXN0IGFib3ZlCisgICAgICAgIGZvciBuYW1lIGluIG5vX3NpZ25hdHVyZToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGJ1aWx0aW49bmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob2JqLl9fdGV4dF9zaWduYXR1cmVfXykKKwogCiBjbGFzcyBUZXN0VW53cmFwKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMzE4Nyw4ICszNTg0LDEwIEBACiAgICAgICAgIFRlc3RHZXRjYWxsYXJnc0Z1bmN0aW9ucywgVGVzdEdldGNhbGxhcmdzTWV0aG9kcywKICAgICAgICAgVGVzdEdldGNhbGxhcmdzVW5ib3VuZE1ldGhvZHMsIFRlc3RHZXRhdHRyU3RhdGljLCBUZXN0R2V0R2VuZXJhdG9yU3RhdGUsCiAgICAgICAgIFRlc3ROb0VPTCwgVGVzdFNpZ25hdHVyZU9iamVjdCwgVGVzdFNpZ25hdHVyZUJpbmQsIFRlc3RQYXJhbWV0ZXJPYmplY3QsCi0gICAgICAgIFRlc3RCb3VuZEFyZ3VtZW50cywgVGVzdFNpZ25hdHVyZVByaXZhdGVIZWxwZXJzLCBUZXN0R2V0Q2xvc3VyZVZhcnMsCi0gICAgICAgIFRlc3RVbndyYXAsIFRlc3RNYWluLCBUZXN0UmVsb2FkCisgICAgICAgIFRlc3RCb3VuZEFyZ3VtZW50cywgVGVzdFNpZ25hdHVyZVByaXZhdGVIZWxwZXJzLAorICAgICAgICBUZXN0U2lnbmF0dXJlRGVmaW5pdGlvbnMsCisgICAgICAgIFRlc3RHZXRDbG9zdXJlVmFycywgVGVzdFVud3JhcCwgVGVzdE1haW4sIFRlc3RSZWxvYWQsCisgICAgICAgIFRlc3RHZXRDb3JvdXRpbmVTdGF0ZQogICAgICkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW50LnB5IGIvTGliL3Rlc3QvdGVzdF9pbnQucHkKaW5kZXggNDkwNmU0Ni4uYjY2YzVkNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbnQucHkKQEAgLTQ4Miw4ICs0ODIsNSBAQAogICAgICAgICBjaGVjaygnMTIzXHVkODAwJykKICAgICAgICAgY2hlY2soJzEyM1x1ZDgwMCcsIDEwKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoSW50VGVzdENhc2VzKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ludF9saXRlcmFsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbnRfbGl0ZXJhbC5weQppbmRleCAxZDU3OGE3Li5iZjcyNTcxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ludF9saXRlcmFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW50X2xpdGVyYWwucHkKQEAgLTQsNyArNCw2IEBACiAiIiIKIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogY2xhc3MgVGVzdEhleE9jdEJpbih1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTE0MCw4ICsxMzksNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0wYjEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAsIC05MjIzMzcyMDM2ODU0Nzc1ODA4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0wYjExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEsIC0xODQ0Njc0NDA3MzcwOTU1MTYxNSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RIZXhPY3RCaW4pCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkgYi9MaWIvdGVzdC90ZXN0X2lvLnB5CmluZGV4IDg2Y2Y4ZTEuLjI4ZjQ0MGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pby5weQpAQCAtMzUsNyArMzUsNyBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUsIFVzZXJMaXN0CiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY3ljbGUsIGNvdW50CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBydW5fcHl0aG9uX3VudGlsX2VuZAorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgcnVuX3B5dGhvbl91bnRpbF9lbmQKIAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGlvICAjIEMgaW1wbGVtZW50YXRpb24gb2YgaW8KQEAgLTQ0LDEwICs0NCw2IEBACiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIHRocmVhZGluZyA9IE5vbmUKLXRyeToKLSAgICBpbXBvcnQgZmNudGwKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBmY250bCA9IE5vbmUKIAogZGVmIF9kZWZhdWx0X2NodW5rX3NpemUoKToKICAgICAiIiJHZXQgdGhlIGRlZmF1bHQgVGV4dElPV3JhcHBlciBjaHVuayBzaXplIiIiCkBAIC0zNjcsOCArMzYzLDggQEAKIAogICAgIGRlZiB0ZXN0X29wZW5faGFuZGxlc19OVUxfY2hhcnMoc2VsZik6CiAgICAgICAgIGZuX3dpdGhfTlVMID0gJ2Zvb1wwYmFyJwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYub3BlbiwgZm5fd2l0aF9OVUwsICd3JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLm9wZW4sIGJ5dGVzKGZuX3dpdGhfTlVMLCAnYXNjaWknKSwgJ3cnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLm9wZW4sIGZuX3dpdGhfTlVMLCAndycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYub3BlbiwgYnl0ZXMoZm5fd2l0aF9OVUwsICdhc2NpaScpLCAndycpCiAKICAgICBkZWYgdGVzdF9yYXdfZmlsZV9pbyhzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIsIGJ1ZmZlcmluZz0wKSBhcyBmOgpAQCAtNzIzLDYgKzcxOSwyMSBAQAogICAgIHBhc3MKIAogCitAc3VwcG9ydC5jcHl0aG9uX29ubHkKK2NsYXNzIEFQSU1pc21hdGNoVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9SYXdJT0Jhc2VfaW9faW5fcHlpb19tYXRjaChzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IHB5aW8gUmF3SU9CYXNlIGNsYXNzIGhhcyBhbGwgYyBSYXdJT0Jhc2UgbWV0aG9kcyIiIgorICAgICAgICBtaXNtYXRjaCA9IHN1cHBvcnQuZGV0ZWN0X2FwaV9taXNtYXRjaChweWlvLlJhd0lPQmFzZSwgaW8uUmF3SU9CYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmU9KCdfX3dlYWtyZWZfXycsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtaXNtYXRjaCwgc2V0KCksIG1zZz0nUHl0aG9uIFJhd0lPQmFzZSBkb2VzIG5vdCBoYXZlIGFsbCBDIFJhd0lPQmFzZSBtZXRob2RzJykKKworICAgIGRlZiB0ZXN0X1Jhd0lPQmFzZV9weWlvX2luX2lvX21hdGNoKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgYyBSYXdJT0Jhc2UgY2xhc3MgaGFzIGFsbCBweWlvIFJhd0lPQmFzZSBtZXRob2RzIiIiCisgICAgICAgIG1pc21hdGNoID0gc3VwcG9ydC5kZXRlY3RfYXBpX21pc21hdGNoKGlvLlJhd0lPQmFzZSwgcHlpby5SYXdJT0Jhc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWlzbWF0Y2gsIHNldCgpLCBtc2c9J0MgUmF3SU9CYXNlIGRvZXMgbm90IGhhdmUgYWxsIFB5dGhvbiBSYXdJT0Jhc2UgbWV0aG9kcycpCisKKwogY2xhc3MgQ29tbW9uQnVmZmVyZWRUZXN0czoKICAgICAjIFRlc3RzIGNvbW1vbiB0byBCdWZmZXJlZFJlYWRlciwgQnVmZmVyZWRXcml0ZXIgYW5kIEJ1ZmZlcmVkUmFuZG9tCiAKQEAgLTgxMSw3ICs4MjIsNyBAQAogICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CiAgICAgICAgIHJhdyA9IHNlbGYuTW9ja1Jhd0lPKCkKICAgICAgICAgYiA9IHNlbGYudHAocmF3KQotICAgICAgICBjbHNuYW1lID0gIiVzLiVzIiAlIChzZWxmLnRwLl9fbW9kdWxlX18sIHNlbGYudHAuX19uYW1lX18pCisgICAgICAgIGNsc25hbWUgPSAiJXMuJXMiICUgKHNlbGYudHAuX19tb2R1bGVfXywgc2VsZi50cC5fX3F1YWxuYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihiKSwgIjwlcz4iICUgY2xzbmFtZSkKICAgICAgICAgcmF3Lm5hbWUgPSAiZHVtbXkiCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihiKSwgIjwlcyBuYW1lPSdkdW1teSc+IiAlIGNsc25hbWUpCkBAIC05ODUsNiArOTk2LDcxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmaW8ucmVhZGludG8oYiksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYiJjYiIpCiAKKyAgICBkZWYgdGVzdF9yZWFkaW50bzEoc2VsZik6CisgICAgICAgIGJ1ZmZlcl9zaXplID0gMTAKKyAgICAgICAgcmF3aW8gPSBzZWxmLk1vY2tSYXdJTygoYiJhYmMiLCBiImRlIiwgYiJmZ2giLCBiImprbCIpKQorICAgICAgICBidWZpbyA9IHNlbGYudHAocmF3aW8sIGJ1ZmZlcl9zaXplPWJ1ZmZlcl9zaXplKQorICAgICAgICBiID0gYnl0ZWFycmF5KDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmaW8ucGVlaygzKSwgYidhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhd2lvLl9yZWFkcywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZpby5yZWFkaW50bzEoYiksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYiJhYiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmF3aW8uX3JlYWRzLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmlvLnJlYWRpbnRvMShiKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiWzoxXSwgYiJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYXdpby5fcmVhZHMsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmaW8ucmVhZGludG8xKGIpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGIiZGUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhd2lvLl9yZWFkcywgMikKKyAgICAgICAgYiA9IGJ5dGVhcnJheSgyKmJ1ZmZlcl9zaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmlvLnBlZWsoMyksIGInZmdoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYXdpby5fcmVhZHMsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmaW8ucmVhZGludG8xKGIpLCA2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJbOjZdLCBiImZnaGprbCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmF3aW8uX3JlYWRzLCA0KQorCisgICAgZGVmIHRlc3RfcmVhZGludG9fYXJyYXkoc2VsZik6CisgICAgICAgIGJ1ZmZlcl9zaXplID0gNjAKKyAgICAgICAgZGF0YSA9IGIiYSIgKiAyNgorICAgICAgICByYXdpbyA9IHNlbGYuTW9ja1Jhd0lPKChkYXRhLCkpCisgICAgICAgIGJ1ZmlvID0gc2VsZi50cChyYXdpbywgYnVmZmVyX3NpemU9YnVmZmVyX3NpemUpCisKKyAgICAgICAgIyBDcmVhdGUgYW4gYXJyYXkgd2l0aCBlbGVtZW50IHNpemUgPiAxIGJ5dGUKKyAgICAgICAgYiA9IGFycmF5LmFycmF5KCdpJywgYid4JyAqIDMyKQorICAgICAgICBhc3NlcnQgbGVuKGIpICE9IDE2CisKKyAgICAgICAgIyBSZWFkIGludG8gaXQuIFdlIHNob3VsZCBnZXQgYXMgbWFueSAqYnl0ZXMqIGFzIHdlIGNhbiBmaXQgaW50byBiCisgICAgICAgICMgKHdoaWNoIGlzIG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzKQorICAgICAgICBuID0gYnVmaW8ucmVhZGludG8oYikKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKG4sIGxlbihiKSkKKworICAgICAgICAjIENoZWNrIHRoYXQgb2xkIGNvbnRlbnRzIG9mIGIgYXJlIHByZXNlcnZlZAorICAgICAgICBibSA9IG1lbW9yeXZpZXcoYikuY2FzdCgnQicpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhuLCBsZW4oYm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJtWzpuXSwgZGF0YVs6bl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm1bbjpdLCBiJ3gnICogKGxlbihibVtuOl0pKSkKKworICAgIGRlZiB0ZXN0X3JlYWRpbnRvMV9hcnJheShzZWxmKToKKyAgICAgICAgYnVmZmVyX3NpemUgPSA2MAorICAgICAgICBkYXRhID0gYiJhIiAqIDI2CisgICAgICAgIHJhd2lvID0gc2VsZi5Nb2NrUmF3SU8oKGRhdGEsKSkKKyAgICAgICAgYnVmaW8gPSBzZWxmLnRwKHJhd2lvLCBidWZmZXJfc2l6ZT1idWZmZXJfc2l6ZSkKKworICAgICAgICAjIENyZWF0ZSBhbiBhcnJheSB3aXRoIGVsZW1lbnQgc2l6ZSA+IDEgYnl0ZQorICAgICAgICBiID0gYXJyYXkuYXJyYXkoJ2knLCBiJ3gnICogMzIpCisgICAgICAgIGFzc2VydCBsZW4oYikgIT0gMTYKKworICAgICAgICAjIFJlYWQgaW50byBpdC4gV2Ugc2hvdWxkIGdldCBhcyBtYW55ICpieXRlcyogYXMgd2UgY2FuIGZpdCBpbnRvIGIKKyAgICAgICAgIyAod2hpY2ggaXMgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMpCisgICAgICAgIG4gPSBidWZpby5yZWFkaW50bzEoYikKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKG4sIGxlbihiKSkKKworICAgICAgICAjIENoZWNrIHRoYXQgb2xkIGNvbnRlbnRzIG9mIGIgYXJlIHByZXNlcnZlZAorICAgICAgICBibSA9IG1lbW9yeXZpZXcoYikuY2FzdCgnQicpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhuLCBsZW4oYm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJtWzpuXSwgZGF0YVs6bl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm1bbjpdLCBiJ3gnICogKGxlbihibVtuOl0pKSkKKwogICAgIGRlZiB0ZXN0X3JlYWRsaW5lcyhzZWxmKToKICAgICAgICAgZGVmIGJ1ZmlvKCk6CiAgICAgICAgICAgICByYXdpbyA9IHNlbGYuTW9ja1Jhd0lPKChiImFiY1xuIiwgYiJkXG4iLCBiImVmIikpCkBAIC0yOTEzLDYgKzI5ODksMTcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlcnIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIm9rIiwgb3V0LmRlY29kZSgpLnN0cmlwKCkpCiAKKyAgICBkZWYgdGVzdF9yZWFkX2J5dGVzbGlrZShzZWxmKToKKyAgICAgICAgciA9IE1lbXZpZXdCeXRlc0lPKGInSnVzdCBzb21lIHJhbmRvbSBzdHJpbmdcbicpCisgICAgICAgIHQgPSBzZWxmLlRleHRJT1dyYXBwZXIociwgJ3V0Zi04JykKKworICAgICAgICAjIFRleHRJT3dyYXBwZXIgd2lsbCBub3QgcmVhZCB0aGUgZnVsbCBzdHJpbmcsIGJlY2F1c2UKKyAgICAgICAgIyB3ZSB0cnVuY2F0ZSBpdCB0byBhIG11bHRpcGxlIG9mIHRoZSBuYXRpdmUgaW50IHNpemUKKyAgICAgICAgIyBzbyB0aGF0IHdlIGNhbiBjb25zdHJ1Y3QgYSBtb3JlIGNvbXBsZXggbWVtb3J5dmlldy4KKyAgICAgICAgYnl0ZXNfdmFsID0gIF90b19tZW1vcnl2aWV3KHIuZ2V0dmFsdWUoKSkudG9ieXRlcygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnJlYWQoMjAwKSwgYnl0ZXNfdmFsLmRlY29kZSgndXRmLTgnKSkKKwogICAgIGRlZiB0ZXN0X2lzc3VlMjI4NDkoc2VsZik6CiAgICAgICAgIGNsYXNzIEYob2JqZWN0KToKICAgICAgICAgICAgIGRlZiByZWFkYWJsZShzZWxmKTogcmV0dXJuIFRydWUKQEAgLTI5MjksNiArMzAxNiwyNSBAQAogICAgICAgICB0ID0gc2VsZi5UZXh0SU9XcmFwcGVyKEYoKSwgZW5jb2Rpbmc9J3V0Zi04JykKIAogCitjbGFzcyBNZW12aWV3Qnl0ZXNJTyhpby5CeXRlc0lPKToKKyAgICAnJydBIEJ5dGVzSU8gb2JqZWN0IHdob3NlIHJlYWQgbWV0aG9kIHJldHVybnMgbWVtb3J5dmlld3MKKyAgICAgICByYXRoZXIgdGhhbiBieXRlcycnJworCisgICAgZGVmIHJlYWQxKHNlbGYsIGxlbl8pOgorICAgICAgICByZXR1cm4gX3RvX21lbW9yeXZpZXcoc3VwZXIoKS5yZWFkMShsZW5fKSkKKworICAgIGRlZiByZWFkKHNlbGYsIGxlbl8pOgorICAgICAgICByZXR1cm4gX3RvX21lbW9yeXZpZXcoc3VwZXIoKS5yZWFkKGxlbl8pKQorCitkZWYgX3RvX21lbW9yeXZpZXcoYnVmKToKKyAgICAnJydDb252ZXJ0IGJ5dGVzLW9iamVjdCAqYnVmKiB0byBhIG5vbi10cml2aWFsIG1lbW9yeXZpZXcnJycKKworICAgIGFyciA9IGFycmF5LmFycmF5KCdpJykKKyAgICBpZHggPSBsZW4oYnVmKSAtIGxlbihidWYpICUgYXJyLml0ZW1zaXplCisgICAgYXJyLmZyb21ieXRlcyhidWZbOmlkeF0pCisgICAgcmV0dXJuIG1lbW9yeXZpZXcoYXJyKQorCisKIGNsYXNzIENUZXh0SU9XcmFwcGVyVGVzdChUZXh0SU9XcmFwcGVyVGVzdCk6CiAgICAgaW8gPSBpbwogICAgIHNodXRkb3duX2Vycm9yID0gIlJ1bnRpbWVFcnJvcjogY291bGQgbm90IGZpbmQgaW8gbW9kdWxlIHN0YXRlIgpAQCAtMjkzNyw4ICszMDQzLDYgQEAKICAgICAgICAgciA9IHNlbGYuQnl0ZXNJTyhiIlx4YzNceGE5XG5cbiIpCiAgICAgICAgIGIgPSBzZWxmLkJ1ZmZlcmVkUmVhZGVyKHIsIDEwMDApCiAgICAgICAgIHQgPSBzZWxmLlRleHRJT1dyYXBwZXIoYikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0Ll9faW5pdF9fLCBiLCBuZXdsaW5lPTQyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0LnJlYWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQuX19pbml0X18sIGIsIG5ld2xpbmU9J3h5enp5JykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdC5yZWFkKQogCkBAIC0zMTc1LDYgKzMyNzksOCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGFsbCkKICAgICAgICAgICAgIGlmIGhhc2F0dHIoZiwgInJlYWRpbnRvIik6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkaW50bywgYnl0ZWFycmF5KDEwMjQpKQorICAgICAgICAgICAgaWYgaGFzYXR0cihmLCAicmVhZGludG8xIik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkaW50bzEsIGJ5dGVhcnJheSgxMDI0KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGxpbmUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWRsaW5lcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2VlaywgMCkKQEAgLTMyODgsMjYgKzMzOTQsMjAgQEAKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgKiprd2FyZ3MpIGFzIGY6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBmLCBwcm90b2NvbCkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGZjbnRsLCAnZmNudGwgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCcpCiAgICAgZGVmIHRlc3Rfbm9uYmxvY2tfcGlwZV93cml0ZV9iaWdidWYoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3Rfbm9uYmxvY2tfcGlwZV93cml0ZSgxNioxMDI0KQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoZmNudGwsICdmY250bCByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0JykKICAgICBkZWYgdGVzdF9ub25ibG9ja19waXBlX3dyaXRlX3NtYWxsYnVmKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X25vbmJsb2NrX3BpcGVfd3JpdGUoMTAyNCkKIAotICAgIGRlZiBfc2V0X25vbl9ibG9ja2luZyhzZWxmLCBmZCk6Ci0gICAgICAgIGZsYWdzID0gZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfR0VURkwpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZmxhZ3MsIC0xKQotICAgICAgICByZXMgPSBmY250bC5mY250bChmZCwgZmNudGwuRl9TRVRGTCwgZmxhZ3MgfCBvcy5PX05PTkJMT0NLKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgMCkKLQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdzZXRfYmxvY2tpbmcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnb3Muc2V0X2Jsb2NraW5nKCkgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCcpCiAgICAgZGVmIF90ZXN0X25vbmJsb2NrX3BpcGVfd3JpdGUoc2VsZiwgYnVmc2l6ZSk6CiAgICAgICAgIHNlbnQgPSBbXQogICAgICAgICByZWNlaXZlZCA9IFtdCiAgICAgICAgIHIsIHcgPSBvcy5waXBlKCkKLSAgICAgICAgc2VsZi5fc2V0X25vbl9ibG9ja2luZyhyKQotICAgICAgICBzZWxmLl9zZXRfbm9uX2Jsb2NraW5nKHcpCisgICAgICAgIG9zLnNldF9ibG9ja2luZyhyLCBGYWxzZSkKKyAgICAgICAgb3Muc2V0X2Jsb2NraW5nKHcsIEZhbHNlKQogCiAgICAgICAgICMgVG8gZXhlcmNpc2UgYWxsIGNvZGUgcGF0aHMgaW4gdGhlIEMgaW1wbGVtZW50YXRpb24gd2UgbmVlZAogICAgICAgICAjIHRvIHBsYXkgd2l0aCBidWZmZXIgc2l6ZXMuICBGb3IgaW5zdGFuY2UsIGlmIHdlIGNob29zZSBhCkBAIC0zNDU2LDYgKzM1NTYsNyBAQAogICAgICAgICB0LmRhZW1vbiA9IFRydWUKICAgICAgICAgciwgdyA9IG9zLnBpcGUoKQogICAgICAgICBmZG9wZW5fa3dhcmdzWyJjbG9zZWZkIl0gPSBGYWxzZQorICAgICAgICBsYXJnZV9kYXRhID0gaXRlbSAqIChzdXBwb3J0LlBJUEVfTUFYX1NJWkUgLy8gbGVuKGl0ZW0pICsgMSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2lvID0gc2VsZi5pby5vcGVuKHcsICoqZmRvcGVuX2t3YXJncykKICAgICAgICAgICAgIHQuc3RhcnQoKQpAQCAtMzQ2Nyw4ICszNTY4LDcgQEAKICAgICAgICAgICAgICMgaGFuZGxlcnMsIHdoaWNoIGluIHRoaXMgY2FzZSB3aWxsIGludm9rZSBhbGFybV9pbnRlcnJ1cHQoKS4KICAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICB3aW8ud3JpdGUoaXRlbSAqIChzdXBwb3J0LlBJUEVfTUFYX1NJWkUgLy8gbGVuKGl0ZW0pICsgMSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsIHdpby53cml0ZSwgbGFyZ2VfZGF0YSkKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDApCiAgICAgICAgICAgICAgICAgdC5qb2luKCkKQEAgLTM1NjksMTEgKzM2NjksMTMgQEAKICAgICAgICAgcmV0dXJuaW5nIGEgcGFydGlhbCByZXN1bHQgb3IgRUlOVFIpLCBwcm9wZXJseSBpbnZva2VzIHRoZSBzaWduYWwKICAgICAgICAgaGFuZGxlciBhbmQgcmV0cmllcyBpZiB0aGUgbGF0dGVyIHJldHVybmVkIHN1Y2Nlc3NmdWxseS4iIiIKICAgICAgICAgc2VsZWN0ID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCJzZWxlY3QiKQorCiAgICAgICAgICMgQSBxdWFudGl0eSB0aGF0IGV4Y2VlZHMgdGhlIGJ1ZmZlciBzaXplIG9mIGFuIGFub255bW91cyBwaXBlJ3MKICAgICAgICAgIyB3cml0ZSBlbmQuCiAgICAgICAgIE4gPSBzdXBwb3J0LlBJUEVfTUFYX1NJWkUKICAgICAgICAgciwgdyA9IG9zLnBpcGUoKQogICAgICAgICBmZG9wZW5fa3dhcmdzWyJjbG9zZWZkIl0gPSBGYWxzZQorCiAgICAgICAgICMgV2UgbmVlZCBhIHNlcGFyYXRlIHRocmVhZCB0byByZWFkIGZyb20gdGhlIHBpcGUgYW5kIGFsbG93IHRoZQogICAgICAgICAjIHdyaXRlKCkgdG8gZmluaXNoLiAgVGhpcyB0aHJlYWQgaXMgc3RhcnRlZCBhZnRlciB0aGUgU0lHQUxSTSBpcwogICAgICAgICAjIHJlY2VpdmVkIChmb3JjaW5nIGEgZmlyc3QgRUlOVFIgaW4gd3JpdGUoKSkuCkBAIC0zNTk2LDYgKzM2OTgsOCBAQAogICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCiAgICAgICAgIGRlZiBhbGFybTIoc2lnLCBmcmFtZSk6CiAgICAgICAgICAgICB0LnN0YXJ0KCkKKworICAgICAgICBsYXJnZV9kYXRhID0gaXRlbSAqIE4KICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgYWxhcm0xKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICB3aW8gPSBzZWxmLmlvLm9wZW4odywgKipmZG9wZW5fa3dhcmdzKQpAQCAtMzYwNSw3ICszNzA5LDkgQEAKICAgICAgICAgICAgICMgICBhbmQgdGhlIGZpcnN0IGFsYXJtKQogICAgICAgICAgICAgIyAtIHNlY29uZCByYXcgd3JpdGUoKSByZXR1cm5zIEVJTlRSIChiZWNhdXNlIG9mIHRoZSBzZWNvbmQgYWxhcm0pCiAgICAgICAgICAgICAjIC0gc3Vic2VxdWVudCB3cml0ZSgpcyBhcmUgc3VjY2Vzc2Z1bCAoZWl0aGVyIHBhcnRpYWwgb3IgY29tcGxldGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE4sIHdpby53cml0ZShpdGVtICogTikpCisgICAgICAgICAgICB3cml0dGVuID0gd2lvLndyaXRlKGxhcmdlX2RhdGEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE4sIHdyaXR0ZW4pCisKICAgICAgICAgICAgIHdpby5mbHVzaCgpCiAgICAgICAgICAgICB3cml0ZV9maW5pc2hlZCA9IFRydWUKICAgICAgICAgICAgIHQuam9pbigpCkBAIC0zNjQ1LDcgKzM3NTEsNyBAQAogCiAKIGRlZiBsb2FkX3Rlc3RzKCphcmdzKToKLSAgICB0ZXN0cyA9IChDSU9UZXN0LCBQeUlPVGVzdCwKKyAgICB0ZXN0cyA9IChDSU9UZXN0LCBQeUlPVGVzdCwgQVBJTWlzbWF0Y2hUZXN0LAogICAgICAgICAgICAgIENCdWZmZXJlZFJlYWRlclRlc3QsIFB5QnVmZmVyZWRSZWFkZXJUZXN0LAogICAgICAgICAgICAgIENCdWZmZXJlZFdyaXRlclRlc3QsIFB5QnVmZmVyZWRXcml0ZXJUZXN0LAogICAgICAgICAgICAgIENCdWZmZXJlZFJXUGFpclRlc3QsIFB5QnVmZmVyZWRSV1BhaXJUZXN0LApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pb2N0bC5weSBiL0xpYi90ZXN0L3Rlc3RfaW9jdGwucHkKaW5kZXggZWZlOWY1MS4uYjgyYjY1MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pb2N0bC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2lvY3RsLnB5CkBAIC0xLDYgKzEsNiBAQAogaW1wb3J0IGFycmF5CiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGltcG9ydF9tb2R1bGUsIGdldF9hdHRyaWJ1dGUKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBpbXBvcnRfbW9kdWxlLCBnZXRfYXR0cmlidXRlCiBpbXBvcnQgb3MsIHN0cnVjdAogZmNudGwgPSBpbXBvcnRfbW9kdWxlKCdmY250bCcpCiB0ZXJtaW9zID0gaW1wb3J0X21vZHVsZSgndGVybWlvcycpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weSBiL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5CmluZGV4IDk1ZTNmMDQuLjU2ZjBiZTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5CkBAIC05LDcgKzksOSBAQAogaW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBvcGVyYXRvcgoraW1wb3J0IHBpY2tsZQogaW1wb3J0IGlwYWRkcmVzcworaW1wb3J0IHdlYWtyZWYKIAogCiBjbGFzcyBCYXNlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtODMsNiArODUsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBoZXgsIHNlbGYuZmFjdG9yeSgxKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBieXRlcywgc2VsZi5mYWN0b3J5KDEpKQogCisgICAgZGVmIHBpY2tsZV90ZXN0KHNlbGYsIGFkZHIpOgorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvKToKKyAgICAgICAgICAgICAgICB4ID0gc2VsZi5mYWN0b3J5KGFkZHIpCisgICAgICAgICAgICAgICAgeSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoeCwgcHJvdG8pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKKwogCiBjbGFzcyBDb21tb25UZXN0TWl4aW5fdjQoQ29tbW9uVGVzdE1peGluKToKIApAQCAtMjQ4LDYgKzI1NywxMiBAQAogICAgICAgICBhc3NlcnRCYWRPY3RldCgiMjU3LjAuMC4wIiwgMjU3KQogICAgICAgICBhc3NlcnRCYWRPY3RldCgiMTkyLjE2OC4wLjk5OSIsIDk5OSkKIAorICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgc2VsZi5waWNrbGVfdGVzdCgnMTkyLjAuMi4xJykKKworICAgIGRlZiB0ZXN0X3dlYWtyZWYoc2VsZik6CisgICAgICAgIHdlYWtyZWYucmVmKHNlbGYuZmFjdG9yeSgnMTkyLjAuMi4xJykpCisKIAogY2xhc3MgQWRkcmVzc1Rlc3RDYXNlX3Y2KEJhc2VUZXN0Q2FzZSwgQ29tbW9uVGVzdE1peGluX3Y2KToKICAgICBmYWN0b3J5ID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzCkBAIC0zODAsNiArMzk1LDEyIEBACiAgICAgICAgIGFzc2VydEJhZFBhcnQoIjAyMDAxOmRiODo6IiwgIjAyMDAxIikKICAgICAgICAgYXNzZXJ0QmFkUGFydCgnMjAwMTo4ODg4ODg6OjEnLCAiODg4ODg4IikKIAorICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgc2VsZi5waWNrbGVfdGVzdCgnMjAwMTpkYjg6OicpCisKKyAgICBkZWYgdGVzdF93ZWFrcmVmKHNlbGYpOgorICAgICAgICB3ZWFrcmVmLnJlZihzZWxmLmZhY3RvcnkoJzIwMDE6ZGI4OjonKSkKKwogCiBjbGFzcyBOZXRtYXNrVGVzdE1peGluX3Y0KENvbW1vblRlc3RNaXhpbl92NCk6CiAgICAgIiIiSW5wdXQgdmFsaWRhdGlvbiBvbiBpbnRlcmZhY2VzIGFuZCBuZXR3b3JrcyBpcyB2ZXJ5IHNpbWlsYXIiIiIKQEAgLTQ0Myw2ICs0NjQsMTEgQEAKICAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiMS4xLjEuMSIsICJwdWRkaW5nIikKICAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiMS4xLjEuMSIsICI6OiIpCiAKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIHNlbGYucGlja2xlX3Rlc3QoJzE5Mi4wLjIuMC8yNycpCisgICAgICAgIHNlbGYucGlja2xlX3Rlc3QoJzE5Mi4wLjIuMC8zMScpICAjIElQVjRMRU5HVEggLSAxCisgICAgICAgIHNlbGYucGlja2xlX3Rlc3QoJzE5Mi4wLjIuMCcpICAgICAjIElQVjRMRU5HVEgKKwogCiBjbGFzcyBJbnRlcmZhY2VUZXN0Q2FzZV92NChCYXNlVGVzdENhc2UsIE5ldG1hc2tUZXN0TWl4aW5fdjQpOgogICAgIGZhY3RvcnkgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZQpAQCAtNTAxLDYgKzUyNywxMSBAQAogICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCI6OjEiLCAicHVkZGluZyIpCiAgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjo6IiwgIjo6IikKIAorICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgc2VsZi5waWNrbGVfdGVzdCgnMjAwMTpkYjg6OjEwMDAvMTI0JykKKyAgICAgICAgc2VsZi5waWNrbGVfdGVzdCgnMjAwMTpkYjg6OjEwMDAvMTI3JykgICMgSVBWNkxFTkdUSCAtIDEKKyAgICAgICAgc2VsZi5waWNrbGVfdGVzdCgnMjAwMTpkYjg6OjEwMDAnKSAgICAgICMgSVBWNkxFTkdUSAorCiAKIGNsYXNzIEludGVyZmFjZVRlc3RDYXNlX3Y2KEJhc2VUZXN0Q2FzZSwgTmV0bWFza1Rlc3RNaXhpbl92Nik6CiAgICAgZmFjdG9yeSA9IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlCkBAIC02NzAsNiArNzAxLDExOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJJUHY2SW50ZXJmYWNlKCc6OjEvMTI4JykiLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6MScpKSkKIAorICAgICMgaXNzdWUgIzE2NTMxOiBjb25zdHJ1Y3RpbmcgSVB2NE5ldHdvcmsgZnJvbSBhIChhZGRyZXNzLCBtYXNrKSB0dXBsZQorICAgIGRlZiB0ZXN0SVB2NFR1cGxlKHNlbGYpOgorICAgICAgICAjIC8zMgorICAgICAgICBpcCA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTkyLjAuMi4xJykKKyAgICAgICAgbmV0ID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxOTIuMC4yLjEvMzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzE5Mi4wLjIuMScsIDMyKSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKGlwLCAzMikpLCBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjROZXR3b3JrKCgzMjIxMjI1OTg1LCAzMikpLCBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjROZXR3b3JrKCgnMTkyLjAuMi4xJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyNTUuMjU1LjI1NS4yNTUnKSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKGlwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzI1NS4yNTUuMjU1LjI1NScpKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoMzIyMTIyNTk4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyNTUuMjU1LjI1NS4yNTUnKSksIG5ldCkKKyAgICAgICAgIyBzdHJpY3Q9VHJ1ZSBhbmQgaG9zdCBiaXRzIHNldAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjROZXR3b3JrKCgnMTkyLjAuMi4xJywgMjQpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjROZXR3b3JrKChpcCwgMjQpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjROZXR3b3JrKCgzMjIxMjI1OTg1LCAyNCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKCcxOTIuMC4yLjEnLCAnMjU1LjI1NS4yNTUuMCcpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjROZXR3b3JrKChpcCwgJzI1NS4yNTUuMjU1LjAnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0TmV0d29yaygoMzIyMTIyNTk4NSwgJzI1NS4yNTUuMjU1LjAnKSkKKyAgICAgICAgIyBzdHJpY3Q9RmFsc2UgYW5kIGhvc3QgYml0cyBzZXQKKyAgICAgICAgbmV0ID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzE5Mi4wLjIuMScsIDI0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0PUZhbHNlKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoaXAsIDI0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0PUZhbHNlKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoMzIyMTIyNTk4NSwgMjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3Q9RmFsc2UpLCBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjROZXR3b3JrKCgnMTkyLjAuMi4xJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyNTUuMjU1LjI1NS4wJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdD1GYWxzZSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKGlwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzI1NS4yNTUuMjU1LjAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0PUZhbHNlKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoMzIyMTIyNTk4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyNTUuMjU1LjI1NS4wJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdD1GYWxzZSksIG5ldCkKKworICAgICAgICAjIC8yNAorICAgICAgICBpcCA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTkyLjAuMi4wJykKKyAgICAgICAgbmV0ID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzE5Mi4wLjIuMCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMjU1LjI1NS4yNTUuMCcpKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoaXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMjU1LjI1NS4yNTUuMCcpKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoMzIyMTIyNTk4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyNTUuMjU1LjI1NS4wJykpLCBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjROZXR3b3JrKCgnMTkyLjAuMi4wJywgMjQpKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoaXAsIDI0KSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKDMyMjEyMjU5ODQsIDI0KSksIG5ldCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCgnMTkyLjAuMi4xJywgMjQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMTkyLjAuMi4xLzI0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoKDMyMjEyMjU5ODUsIDI0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzE5Mi4wLjIuMS8yNCcpKQorCisgICAgIyBpc3N1ZSAjMTY1MzE6IGNvbnN0cnVjdGluZyBJUHY2TmV0d29yayBmcm9tIGEgKGFkZHJlc3MsIG1hc2spIHR1cGxlCisgICAgZGVmIHRlc3RJUHY2VHVwbGUoc2VsZik6CisgICAgICAgICMgLzEyOAorICAgICAgICBpcCA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTpkYjg6OicpCisgICAgICAgIG5ldCA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpkYjg6Oi8xMjgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2TmV0d29yaygoJzIwMDE6ZGI4OjonLCAnMTI4JykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoCisgICAgICAgICAgICAgICAgKDQyNTQwNzY2NDExMjgyNTkyODU2OTAzOTg0OTUxNjUzODI2NTYwLCAxMjgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZOZXR3b3JrKChpcCwgJzEyOCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXQpCisgICAgICAgIGlwID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOmRiODo6JykKKyAgICAgICAgbmV0ID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoKCcyMDAxOmRiODo6JywgJzk2JykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoCisgICAgICAgICAgICAgICAgKDQyNTQwNzY2NDExMjgyNTkyODU2OTAzOTg0OTUxNjUzODI2NTYwLCA5NikpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoKGlwLCAnOTYnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0KQorCisgICAgICAgICMgc3RyaWN0PVRydWUgYW5kIGhvc3QgYml0cyBzZXQKKyAgICAgICAgaXAgPSBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2TmV0d29yaygoJzIwMDE6ZGI4OjoxJywgOTYpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZOZXR3b3JrKCgKKyAgICAgICAgICAgICAgICA0MjU0MDc2NjQxMTI4MjU5Mjg1NjkwMzk4NDk1MTY1MzgyNjU2MSwgOTYpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZOZXR3b3JrKChpcCwgOTYpKQorICAgICAgICAjIHN0cmljdD1GYWxzZSBhbmQgaG9zdCBiaXRzIHNldAorICAgICAgICBuZXQgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2TmV0d29yaygoJzIwMDE6ZGI4OjoxJywgOTYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3Q9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg0MjU0MDc2NjQxMTI4MjU5Mjg1NjkwMzk4NDk1MTY1MzgyNjU2MSwgOTYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3Q9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoKGlwLCA5NiksIHN0cmljdD1GYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0KQorCisgICAgICAgICMgLzk2CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoKCcyMDAxOmRiODo6MScsICc5NicpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnMjAwMTpkYjg6OjEvOTYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgKKyAgICAgICAgICAgICAgICAoNDI1NDA3NjY0MTEyODI1OTI4NTY5MDM5ODQ5NTE2NTM4MjY1NjEsICc5NicpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnMjAwMTpkYjg6OjEvOTYnKSkKKwogICAgICMgaXNzdWU1NwogICAgIGRlZiB0ZXN0QWRkcmVzc0ludE1hdGgoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4xJykgKyAyNTUsCkBAIC02OTAsMjAgKzgzNCwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAyICoqIGlwYWRkcmVzcy5JUFY2TEVOR1RIKQogCiAgICAgZGVmIHRlc3RJbnRlcm5hbHMoc2VsZik6Ci0gICAgICAgIGZpcnN0LCBsYXN0ID0gaXBhZGRyZXNzLl9maW5kX2FkZHJlc3NfcmFuZ2UoWwotICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxMC4xMC4xMC4xMCcpLAotICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxMC4xMC4xMC4xMicpXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXJzdCwgbGFzdCkKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxMC4xMC4xMC4xMCcpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTAuMTAuMTAuMTEnKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEwLjEwLjEwLjEyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGlwYWRkcmVzcy5fZmluZF9hZGRyZXNzX3JhbmdlKFtpcDFdKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgWyhpcDEsIGlwMSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXBhZGRyZXNzLl9maW5kX2FkZHJlc3NfcmFuZ2UoW2lwMSwgaXAzXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsoaXAxLCBpcDEpLCAoaXAzLCBpcDMpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGlwYWRkcmVzcy5fZmluZF9hZGRyZXNzX3JhbmdlKFtpcDEsIGlwMiwgaXAzXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsoaXAxLCBpcDMpXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMjgsIGlwYWRkcmVzcy5fY291bnRfcmlnaHRoYW5kX3plcm9fYml0cygwLCAxMjgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJJUHY0TmV0d29yaygnMS4yLjMuMC8yNCcpIiwgcmVwcihzZWxmLmlwdjRfbmV0d29yaykpCiAKLSAgICBkZWYgdGVzdE1pc3NpbmdBZGRyZXNzVmVyc2lvbihzZWxmKToKLSAgICAgICAgY2xhc3MgQnJva2VuKGlwYWRkcmVzcy5fQmFzZUFkZHJlc3MpOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBicm9rZW4gPSBCcm9rZW4oJzEyNy4wLjAuMScpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChOb3RJbXBsZW1lbnRlZEVycm9yLCAiQnJva2VuLip2ZXJzaW9uIik6Ci0gICAgICAgICAgICBicm9rZW4udmVyc2lvbgotCiAgICAgZGVmIHRlc3RNaXNzaW5nTmV0d29ya1ZlcnNpb24oc2VsZik6CiAgICAgICAgIGNsYXNzIEJyb2tlbihpcGFkZHJlc3MuX0Jhc2VOZXR3b3JrKToKICAgICAgICAgICAgIHBhc3MKQEAgLTE1OTgsNyArMTc0MCw2IEBACiAgICAgICAgICAgICAnMjAwMTowOjA6NDowOjA6MDo4JzogJzIwMDE6MDowOjQ6OjgvMTI4JywKICAgICAgICAgICAgICcyMDAxOjA6MDo0OjU6Njo3OjgnOiAnMjAwMTo6NDo1OjY6Nzo4LzEyOCcsCiAgICAgICAgICAgICAnMjAwMTowOjM6NDo1OjY6Nzo4JzogJzIwMDE6MDozOjQ6NTo2Ojc6OC8xMjgnLAotICAgICAgICAgICAgJzIwMDE6MDozOjQ6NTo2Ojc6OCc6ICcyMDAxOjA6Mzo0OjU6Njo3OjgvMTI4JywKICAgICAgICAgICAgICcwOjA6MzowOjA6MDowOmZmZmYnOiAnMDowOjM6OmZmZmYvMTI4JywKICAgICAgICAgICAgICcwOjA6MDo0OjA6MDowOmZmZmYnOiAnOjo0OjA6MDowOmZmZmYvMTI4JywKICAgICAgICAgICAgICcwOjA6MDowOjU6MDowOmZmZmYnOiAnOjo1OjA6MDpmZmZmLzEyOCcsCkBAIC0xNjM1LDYgKzE3NzYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyMy5leHBsb2RlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTkyLjE2OC4xNzguMScsIGFkZHI0LmV4cGxvZGVkKQogCisgICAgZGVmIHRlc3RSZXZlcnNlUG9pbnRlcihzZWxmKToKKyAgICAgICAgYWRkcjEgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEyNy4wLjAuMScpCisgICAgICAgIGFkZHIyID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOmRiODo6MScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMC4wLjEyNy5pbi1hZGRyLmFycGEnLCBhZGRyMS5yZXZlcnNlX3BvaW50ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjguJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2IuZC4wLjEuMC4wLjIuaXA2LmFycGEnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIyLnJldmVyc2VfcG9pbnRlcikKKwogICAgIGRlZiB0ZXN0SW50UmVwcmVzZW50YXRpb24oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTY5MDkwNjAsIGludChzZWxmLmlwdjRfYWRkcmVzcykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDI1NDA2MTY4MjkxODI0Njk0MzM1NDc3NjI0ODIwOTc5NDY2MjUsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2lzaW5zdGFuY2UucHkgYi9MaWIvdGVzdC90ZXN0X2lzaW5zdGFuY2UucHkKaW5kZXggN2E2NzMwZS4uZTYzZDU5YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pc2luc3RhbmNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXNpbnN0YW5jZS5weQpAQCAtMyw3ICszLDYgQEAKICMgdGVzdGluZyBvZiBlcnJvciBjb25kaXRpb25zIHVuY292ZXJlZCB3aGVuIHVzaW5nIGV4dGVuc2lvbiB0eXBlcy4KIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCBzeXMKIAogCkBAIC0yNTksMzEgKzI1OCwyMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlzc3ViY2xhc3Moc3RyLCAoc3RyLCAoQ2hpbGQsIE5ld0NoaWxkLCBzdHIpKSkpCiAKICAgICBkZWYgdGVzdF9zdWJjbGFzc19yZWN1cnNpb25fbGltaXQoc2VsZik6Ci0gICAgICAgICMgbWFrZSBzdXJlIHRoYXQgaXNzdWJjbGFzcyByYWlzZXMgUnVudGltZUVycm9yIGJlZm9yZSB0aGUgQyBzdGFjayBpcworICAgICAgICAjIG1ha2Ugc3VyZSB0aGF0IGlzc3ViY2xhc3MgcmFpc2VzIFJlY3Vyc2lvbkVycm9yIGJlZm9yZSB0aGUgQyBzdGFjayBpcwogICAgICAgICAjIGJsb3duCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgYmxvd3N0YWNrLCBpc3N1YmNsYXNzLCBzdHIsIHN0cikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIGJsb3dzdGFjaywgaXNzdWJjbGFzcywgc3RyLCBzdHIpCiAKICAgICBkZWYgdGVzdF9pc2luc3RhbmNlX3JlY3Vyc2lvbl9saW1pdChzZWxmKToKLSAgICAgICAgIyBtYWtlIHN1cmUgdGhhdCBpc3N1YmNsYXNzIHJhaXNlcyBSdW50aW1lRXJyb3IgYmVmb3JlIHRoZSBDIHN0YWNrIGlzCisgICAgICAgICMgbWFrZSBzdXJlIHRoYXQgaXNzdWJjbGFzcyByYWlzZXMgUmVjdXJzaW9uRXJyb3IgYmVmb3JlIHRoZSBDIHN0YWNrIGlzCiAgICAgICAgICMgYmxvd24KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBibG93c3RhY2ssIGlzaW5zdGFuY2UsICcnLCBzdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBibG93c3RhY2ssIGlzaW5zdGFuY2UsICcnLCBzdHIpCiAKIGRlZiBibG93c3RhY2soZnhuLCBhcmcsIGNvbXBhcmVfdG8pOgogICAgICMgTWFrZSBzdXJlIHRoYXQgY2FsbGluZyBpc2luc3RhbmNlIHdpdGggYSBkZWVwbHkgbmVzdGVkIHR1cGxlIGZvciBpdHMKLSAgICAjIGFyZ3VtZW50IHdpbGwgcmFpc2UgUnVudGltZUVycm9yIGV2ZW50dWFsbHkuCisgICAgIyBhcmd1bWVudCB3aWxsIHJhaXNlIFJlY3Vyc2lvbkVycm9yIGV2ZW50dWFsbHkuCiAgICAgdHVwbGVfYXJnID0gKGNvbXBhcmVfdG8sKQogICAgIGZvciBjbnQgaW4gcmFuZ2Uoc3lzLmdldHJlY3Vyc2lvbmxpbWl0KCkrNSk6CiAgICAgICAgIHR1cGxlX2FyZyA9ICh0dXBsZV9hcmcsKQogICAgICAgICBmeG4oYXJnLCB0dXBsZV9hcmcpCiAKIAwKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgVGVzdElzSW5zdGFuY2VFeGNlcHRpb25zLAotICAgICAgICBUZXN0SXNTdWJjbGFzc0V4Y2VwdGlvbnMsCi0gICAgICAgIFRlc3RJc0luc3RhbmNlSXNTdWJjbGFzcwotICAgICkKLQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2l0ZXJ0b29scy5weSBiL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5CmluZGV4IDk5MzQzOGMuLjViM2JhN2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5CkBAIC0xODcwLDggKzE4NzAsNiBAQAogICAgICAgICAgICAgaGlzdC5hcHBlbmQoMykKICAgICAgICAgICAgIHlpZWxkIDIKICAgICAgICAgICAgIGhpc3QuYXBwZW5kKDQpCi0gICAgICAgICAgICBpZiB4OgotICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KIAogICAgICAgICBoaXN0ID0gW10KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIGxpc3QsIGNoYWluKGdlbjEoKSwgZ2VuMihGYWxzZSkpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL19faW5pdF9fLnB5CmluZGV4IDJjZjEwMzIuLjA4MDdlNmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vX19pbml0X18ucHkKQEAgLTksMTIgKzksMTUgQEAKICMgaW1wb3J0IGpzb24gd2l0aCBhbmQgd2l0aG91dCBhY2NlbGVyYXRpb25zCiBjanNvbiA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgnanNvbicsIGZyZXNoPVsnX2pzb24nXSkKIHB5anNvbiA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgnanNvbicsIGJsb2NrZWQ9WydfanNvbiddKQorIyBKU09ORGVjb2RlRXJyb3IgaXMgY2FjaGVkIGluc2lkZSB0aGUgX2pzb24gbW9kdWxlCitjanNvbi5KU09ORGVjb2RlRXJyb3IgPSBjanNvbi5kZWNvZGVyLkpTT05EZWNvZGVFcnJvciA9IGpzb24uSlNPTkRlY29kZUVycm9yCiAKICMgY3JlYXRlIHR3byBiYXNlIGNsYXNzZXMgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdGhlIG90aGVyIHRlc3RzCiBjbGFzcyBQeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGpzb24gPSBweWpzb24KICAgICBsb2FkcyA9IHN0YXRpY21ldGhvZChweWpzb24ubG9hZHMpCiAgICAgZHVtcHMgPSBzdGF0aWNtZXRob2QocHlqc29uLmR1bXBzKQorICAgIEpTT05EZWNvZGVFcnJvciA9IHN0YXRpY21ldGhvZChweWpzb24uSlNPTkRlY29kZUVycm9yKQogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhjanNvbiwgJ3JlcXVpcmVzIF9qc29uJykKIGNsYXNzIENUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTIyLDYgKzI1LDcgQEAKICAgICAgICAganNvbiA9IGNqc29uCiAgICAgICAgIGxvYWRzID0gc3RhdGljbWV0aG9kKGNqc29uLmxvYWRzKQogICAgICAgICBkdW1wcyA9IHN0YXRpY21ldGhvZChjanNvbi5kdW1wcykKKyAgICAgICAgSlNPTkRlY29kZUVycm9yID0gc3RhdGljbWV0aG9kKGNqc29uLkpTT05EZWNvZGVFcnJvcikKIAogIyB0ZXN0IFB5VGVzdCBhbmQgQ1Rlc3QgY2hlY2tpbmcgaWYgdGhlIGZ1bmN0aW9ucyBjb21lIGZyb20gdGhlIHJpZ2h0IG1vZHVsZQogY2xhc3MgVGVzdFB5VGVzdChQeVRlc3QpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZGVjb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZGVjb2RlLnB5CmluZGV4IDU5MWIyZTIuLmNjODNiNDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2RlY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9kZWNvZGUucHkKQEAgLTYzLDEyICs2MywxMiBAQAogICAgIGRlZiB0ZXN0X2V4dHJhX2RhdGEoc2VsZik6CiAgICAgICAgIHMgPSAnWzEsIDIsIDNdNScKICAgICAgICAgbXNnID0gJ0V4dHJhIGRhdGEnCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgbXNnLCBzZWxmLmxvYWRzLCBzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNlbGYuSlNPTkRlY29kZUVycm9yLCBtc2csIHNlbGYubG9hZHMsIHMpCiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2VzY2FwZShzZWxmKToKICAgICAgICAgcyA9ICdbImFiY1xceSJdJwogICAgICAgICBtc2cgPSAnZXNjYXBlJwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsIG1zZywgc2VsZi5sb2FkcywgcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzZWxmLkpTT05EZWNvZGVFcnJvciwgbXNnLCBzZWxmLmxvYWRzLCBzKQogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9pbnB1dF90eXBlKHNlbGYpOgogICAgICAgICBtc2cgPSAndGhlIEpTT04gb2JqZWN0IG11c3QgYmUgc3RyJwpAQCAtODAsMTAgKzgwLDEwIEBACiAgICAgZGVmIHRlc3Rfc3RyaW5nX3dpdGhfdXRmOF9ib20oc2VsZik6CiAgICAgICAgICMgc2VlICMxODk1OAogICAgICAgICBib21fanNvbiA9ICJbMSwyLDNdIi5lbmNvZGUoJ3V0Zi04LXNpZycpLmRlY29kZSgndXRmLTgnKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuSlNPTkRlY29kZUVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHNlbGYubG9hZHMoYm9tX2pzb24pCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JPTScsIHN0cihjbS5leGNlcHRpb24pKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuSlNPTkRlY29kZUVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHNlbGYuanNvbi5sb2FkKFN0cmluZ0lPKGJvbV9qc29uKSkKICAgICAgICAgc2VsZi5hc3NlcnRJbignQk9NJywgc3RyKGNtLmV4Y2VwdGlvbikpCiAgICAgICAgICMgbWFrZSBzdXJlIHRoYXQgdGhlIEJPTSBpcyBub3QgZGV0ZWN0ZWQgaW4gdGhlIG1pZGRsZSBvZiBhIHN0cmluZwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9lbmNvZGVfYmFzZXN0cmluZ19hc2NpaS5weQppbmRleCAyMTIyZGExLi40YmJjNmM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9lbmNvZGVfYmFzZXN0cmluZ19hc2NpaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9lbmNvZGVfYmFzZXN0cmluZ19hc2NpaS5weQpAQCAtMTIsOSArMTIsNiBAQAogICAgICgnIHMgcCBhIGMgZSBkICcsICciIHMgcCBhIGMgZSBkICInKSwKICAgICAoJ1xVMDAwMWQxMjAnLCAnIlxcdWQ4MzRcXHVkZDIwIicpLAogICAgICgnXHUwM2IxXHUwM2E5JywgJyJcXHUwM2IxXFx1MDNhOSInKSwKLSAgICAoJ1x1MDNiMVx1MDNhOScsICciXFx1MDNiMVxcdTAzYTkiJyksCi0gICAgKCdcdTAzYjFcdTAzYTknLCAnIlxcdTAzYjFcXHUwM2E5IicpLAotICAgICgnXHUwM2IxXHUwM2E5JywgJyJcXHUwM2IxXFx1MDNhOSInKSwKICAgICAoImAxfiFAIyQlXiYqKClfKy09eyc6WyxdfXw7LjwvPj8iLCAnImAxfiFAIyQlXiYqKClfKy09e1wnOlssXX18Oy48Lz4/IicpLAogICAgICgnXHgwOFx4MGNcblxyXHQnLCAnIlxcYlxcZlxcblxcclxcdCInKSwKICAgICAoJ1x1MDEyM1x1NDU2N1x1ODlhYlx1Y2RlZlx1YWJjZFx1ZWY0YScsICciXFx1MDEyM1xcdTQ1NjdcXHU4OWFiXFx1Y2RlZlxcdWFiY2RcXHVlZjRhIicpLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZmFpbC5weSBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2ZhaWwucHkKaW5kZXggN2NhYWZkYi4uOTVmZjViOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZmFpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9mYWlsLnB5CkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmxvYWRzKGRvYykKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgZXhjZXB0IHNlbGYuSlNPTkRlY29kZUVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJFeHBlY3RlZCBmYWlsdXJlIGZvciBmYWlsezB9Lmpzb246IHsxIXJ9Ii5mb3JtYXQoaWR4LCBkb2MpKQpAQCAtMTI0LDEwICsxMjQsMTYgQEAKICAgICAgICAgICAgICgnInNwYW0nLCAnVW50ZXJtaW5hdGVkIHN0cmluZyBzdGFydGluZyBhdCcsIDApLAogICAgICAgICBdCiAgICAgICAgIGZvciBkYXRhLCBtc2csIGlkeCBpbiB0ZXN0X2Nhc2VzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgIHInXnswfTogbGluZSAxIGNvbHVtbiB7MX0gXChjaGFyIHsyfVwpJy5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIHJlLmVzY2FwZShtc2cpLCBpZHggKyAxLCBpZHgpLAotICAgICAgICAgICAgICAgIHNlbGYubG9hZHMsIGRhdGEpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuSlNPTkRlY29kZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLmxvYWRzKGRhdGEpCisgICAgICAgICAgICBlcnIgPSBjbS5leGNlcHRpb24KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLm1zZywgbXNnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucG9zLCBpZHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5saW5lbm8sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5jb2xubywgaWR4ICsgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVyciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclczogbGluZSAxIGNvbHVtbiAlZCAoY2hhciAlZCknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1zZywgaWR4ICsgMSwgaWR4KSkKIAogICAgIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfZGF0YShzZWxmKToKICAgICAgICAgdGVzdF9jYXNlcyA9IFsKQEAgLTE1NCwxMCArMTYwLDE2IEBACiAgICAgICAgICAgICAoJ3sic3BhbSI6NDIsfScsICdFeHBlY3RpbmcgcHJvcGVydHkgbmFtZSBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzJywgMTEpLAogICAgICAgICBdCiAgICAgICAgIGZvciBkYXRhLCBtc2csIGlkeCBpbiB0ZXN0X2Nhc2VzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgIHInXnswfTogbGluZSAxIGNvbHVtbiB7MX0gXChjaGFyIHsyfVwpJy5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIHJlLmVzY2FwZShtc2cpLCBpZHggKyAxLCBpZHgpLAotICAgICAgICAgICAgICAgIHNlbGYubG9hZHMsIGRhdGEpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuSlNPTkRlY29kZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLmxvYWRzKGRhdGEpCisgICAgICAgICAgICBlcnIgPSBjbS5leGNlcHRpb24KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLm1zZywgbXNnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucG9zLCBpZHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5saW5lbm8sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5jb2xubywgaWR4ICsgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVyciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclczogbGluZSAxIGNvbHVtbiAlZCAoY2hhciAlZCknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1zZywgaWR4ICsgMSwgaWR4KSkKIAogICAgIGRlZiB0ZXN0X2V4dHJhX2RhdGEoc2VsZik6CiAgICAgICAgIHRlc3RfY2FzZXMgPSBbCkBAIC0xNzEsMTEgKzE4MywxNiBAQAogICAgICAgICAgICAgKCcic3BhbSIsNDInLCAnRXh0cmEgZGF0YScsIDYpLAogICAgICAgICBdCiAgICAgICAgIGZvciBkYXRhLCBtc2csIGlkeCBpbiB0ZXN0X2Nhc2VzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgIHInXnswfTogbGluZSAxIGNvbHVtbiB7MX0gLSBsaW5lIDEgY29sdW1uIHsyfScKLSAgICAgICAgICAgICAgICByJyBcKGNoYXIgezN9IC0gezR9XCknLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgcmUuZXNjYXBlKG1zZyksIGlkeCArIDEsIGxlbihkYXRhKSArIDEsIGlkeCwgbGVuKGRhdGEpKSwKLSAgICAgICAgICAgICAgICBzZWxmLmxvYWRzLCBkYXRhKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzZWxmLkpTT05EZWNvZGVFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi5sb2FkcyhkYXRhKQorICAgICAgICAgICAgZXJyID0gY20uZXhjZXB0aW9uCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5tc2csIG1zZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLnBvcywgaWR4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIubGluZW5vLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuY29sbm8sIGlkeCArIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlcnIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJXM6IGxpbmUgMSBjb2x1bW4gJWQgKGNoYXIgJWQpJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtc2csIGlkeCArIDEsIGlkeCkpCiAKICAgICBkZWYgdGVzdF9saW5lY29sKHNlbGYpOgogICAgICAgICB0ZXN0X2Nhc2VzID0gWwpAQCAtMTg1LDEwICsyMDIsMTYgQEAKICAgICAgICAgICAgICgnXG4gIFxuXG4gICAgICEnLCA0LCA2LCAxMCksCiAgICAgICAgIF0KICAgICAgICAgZm9yIGRhdGEsIGxpbmUsIGNvbCwgaWR4IGluIHRlc3RfY2FzZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgcideRXhwZWN0aW5nIHZhbHVlOiBsaW5lIHswfSBjb2x1bW4gezF9JwotICAgICAgICAgICAgICAgIHInIFwoY2hhciB7Mn1cKSQnLmZvcm1hdChsaW5lLCBjb2wsIGlkeCksCi0gICAgICAgICAgICAgICAgc2VsZi5sb2FkcywgZGF0YSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc2VsZi5KU09ORGVjb2RlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYubG9hZHMoZGF0YSkKKyAgICAgICAgICAgIGVyciA9IGNtLmV4Y2VwdGlvbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIubXNnLCAnRXhwZWN0aW5nIHZhbHVlJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLnBvcywgaWR4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIubGluZW5vLCBsaW5lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuY29sbm8sIGNvbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVyciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFeHBlY3RpbmcgdmFsdWU6IGxpbmUgJXMgY29sdW1uICVkIChjaGFyICVkKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluZSwgY29sLCBpZHgpKQogCiBjbGFzcyBUZXN0UHlGYWlsKFRlc3RGYWlsLCBQeVRlc3QpOiBwYXNzCiBjbGFzcyBUZXN0Q0ZhaWwoVGVzdEZhaWwsIENUZXN0KTogcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfcmVjdXJzaW9uLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfcmVjdXJzaW9uLnB5CmluZGV4IDFhNzYyNTQuLjg3N2RjNDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3JlY3Vyc2lvbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9yZWN1cnNpb24ucHkKQEAgLTY4LDExICs2OCwxMSBAQAogICAgIGRlZiB0ZXN0X2hpZ2hseV9uZXN0ZWRfb2JqZWN0c19kZWNvZGluZyhzZWxmKToKICAgICAgICAgIyB0ZXN0IHRoYXQgbG9hZGluZyBoaWdobHktbmVzdGVkIG9iamVjdHMgZG9lc24ndCBzZWdmYXVsdCB3aGVuIEMKICAgICAgICAgIyBhY2NlbGVyYXRpb25zIGFyZSB1c2VkLiBTZWUgIzEyMDE3Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvcik6CiAgICAgICAgICAgICBzZWxmLmxvYWRzKCd7ImEiOicgKiAxMDAwMDAgKyAnMScgKyAnfScgKiAxMDAwMDApCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvcik6CiAgICAgICAgICAgICBzZWxmLmxvYWRzKCd7ImEiOicgKiAxMDAwMDAgKyAnWzFdJyArICd9JyAqIDEwMDAwMCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yKToKICAgICAgICAgICAgIHNlbGYubG9hZHMoJ1snICogMTAwMDAwICsgJzEnICsgJ10nICogMTAwMDAwKQogCiAgICAgZGVmIHRlc3RfaGlnaGx5X25lc3RlZF9vYmplY3RzX2VuY29kaW5nKHNlbGYpOgpAQCAtODAsOSArODAsOSBAQAogICAgICAgICBsLCBkID0gW10sIHt9CiAgICAgICAgIGZvciB4IGluIHJhbmdlKDEwMDAwMCk6CiAgICAgICAgICAgICBsLCBkID0gW2xdLCB7J2snOmR9Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvcik6CiAgICAgICAgICAgICBzZWxmLmR1bXBzKGwpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvcik6CiAgICAgICAgICAgICBzZWxmLmR1bXBzKGQpCiAKICAgICBkZWYgdGVzdF9lbmRsZXNzX3JlY3Vyc2lvbihzZWxmKToKQEAgLTkyLDcgKzkyLDcgQEAKICAgICAgICAgICAgICAgICAiIiJJZiBjaGVja19jaXJjdWxhciBpcyBGYWxzZSwgdGhpcyB3aWxsIGtlZXAgYWRkaW5nIGFub3RoZXIgbGlzdC4iIiIKICAgICAgICAgICAgICAgICByZXR1cm4gW29dCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yKToKICAgICAgICAgICAgIEVuZGxlc3NKU09ORW5jb2RlcihjaGVja19jaXJjdWxhcj1GYWxzZSkuZW5jb2RlKDVqKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3NjYW5zdHJpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9zY2Fuc3RyaW5nLnB5CmluZGV4IDA3ZjQzNTguLjJkM2VlOGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3NjYW5zdHJpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3Rfc2NhbnN0cmluZy5weQpAQCAtMTI5LDcgKzEyOSw3IEBACiAgICAgICAgICAgICAnIlxcdWQ4MzRcXHUwWDIwIicsCiAgICAgICAgIF0KICAgICAgICAgZm9yIHMgaW4gYmFkX2VzY2FwZXM6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1zZz1zKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc2VsZi5KU09ORGVjb2RlRXJyb3IsIG1zZz1zKToKICAgICAgICAgICAgICAgICBzY2Fuc3RyaW5nKHMsIDEsIFRydWUpCiAKICAgICBkZWYgdGVzdF9vdmVyZmxvdyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3Rvb2wucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF90b29sLnB5CmluZGV4IDBjMzllNTYuLjE1ZjM3MzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3Rvb2wucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfdG9vbC5weQpAQCAtNCw3ICs0LDggQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN1YnByb2Nlc3MKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKKwogCiBjbGFzcyBUZXN0VG9vbCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGF0YSA9ICIiIgpAQCAtMTUsNyArMTYsNyBAQAogICAgICAgICAgICAgOiJ5ZXMifSAgXQogICAgICAgICAgICAiIiIKIAotICAgIGV4cGVjdCA9IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgZXhwZWN0X3dpdGhvdXRfc29ydF9rZXlzID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKICAgICBbCiAgICAgICAgIFsKICAgICAgICAgICAgICJibG9ycGllIgpAQCAtMzcsNiArMzgsMjggQEAKICAgICBdCiAgICAgIiIiKQogCisgICAgZXhwZWN0ID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICBbCisgICAgICAgIFsKKyAgICAgICAgICAgICJibG9ycGllIgorICAgICAgICBdLAorICAgICAgICBbCisgICAgICAgICAgICAid2hvb3BzIgorICAgICAgICBdLAorICAgICAgICBbXSwKKyAgICAgICAgImQtc2h0YWVvdSIsCisgICAgICAgICJkLW50aGlvdWgiLAorICAgICAgICAiaS12aGJqa2hudGgiLAorICAgICAgICB7CisgICAgICAgICAgICAibmlmdHkiOiA4NworICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibW9yZWZpZWxkIjogZmFsc2UsCisgICAgICAgICAgICAiZmllbGQiOiAieWVzIgorICAgICAgICB9CisgICAgXQorICAgICIiIikKKwogICAgIGRlZiB0ZXN0X3N0ZGluX3N0ZG91dChzZWxmKToKICAgICAgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKAogICAgICAgICAgICAgICAgIChzeXMuZXhlY3V0YWJsZSwgJy1tJywgJ2pzb24udG9vbCcpLApAQCAtNTUsNiArNzgsNyBAQAogICAgIGRlZiB0ZXN0X2luZmlsZV9zdGRvdXQoc2VsZik6CiAgICAgICAgIGluZmlsZSA9IHNlbGYuX2NyZWF0ZV9pbmZpbGUoKQogICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctbScsICdqc29uLnRvb2wnLCBpbmZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LnNwbGl0bGluZXMoKSwgc2VsZi5leHBlY3QuZW5jb2RlKCkuc3BsaXRsaW5lcygpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyciwgYicnKQogCkBAIC02NSw1ICs4OSwyMCBAQAogICAgICAgICBzZWxmLmFkZENsZWFudXAob3MucmVtb3ZlLCBvdXRmaWxlKQogICAgICAgICB3aXRoIG9wZW4ob3V0ZmlsZSwgInIiKSBhcyBmcDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnAucmVhZCgpLCBzZWxmLmV4cGVjdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsIGInJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIsIGInJykKKworICAgIGRlZiB0ZXN0X2hlbHBfZmxhZyhzZWxmKToKKyAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLW0nLCAnanNvbi50b29sJywgJy1oJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG91dC5zdGFydHN3aXRoKGIndXNhZ2U6ICcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyciwgYicnKQorCisgICAgZGVmIHRlc3Rfc29ydF9rZXlzX2ZsYWcoc2VsZik6CisgICAgICAgIGluZmlsZSA9IHNlbGYuX2NyZWF0ZV9pbmZpbGUoKQorICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctbScsICdqc29uLnRvb2wnLCAnLS1zb3J0LWtleXMnLCBpbmZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LnNwbGl0bGluZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdF93aXRob3V0X3NvcnRfa2V5cy5lbmNvZGUoKS5zcGxpdGxpbmVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLCBiJycpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2tleXdvcmRvbmx5YXJnLnB5IGIvTGliL3Rlc3QvdGVzdF9rZXl3b3Jkb25seWFyZy5weQppbmRleCA3ZjMxNWQ0Li5kODJlMzNkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2tleXdvcmRvbmx5YXJnLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfa2V5d29yZG9ubHlhcmcucHkKQEAgLTQsNyArNCw2IEBACiBfX2VtYWlsX18gPSAic2Vvaml3b24gYXQgZ21haWwgZG90IGNvbSIKIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIGRlZiBwb3Nvbmx5X3N1bShwb3NfYXJnMSwgKmFyZywgKiprd2FyZyk6CiAgICAgcmV0dXJuIHBvc19hcmcxICsgc3VtKGFyZykgKyBzdW0oa3dhcmcudmFsdWVzKCkpCkBAIC0xODYsOCArMTg1LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXJyLmV4Y2VwdGlvbiksICJuYW1lICdiJyBpcyBub3QgZGVmaW5lZCIpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChLZXl3b3JkT25seUFyZ1Rlc3RDYXNlKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weSBiL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CmluZGV4IGY3OWJkODkuLmY4MjIwMjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CkBAIC05LDcgKzksNiBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGlmIG5vdCBoYXNhdHRyKHNlbGVjdCwgImtxdWV1ZSIpOgogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IHdvcmtzIG9ubHkgb24gQlNEIikKIApAQCAtMTE0LDcgKzExMyw3IEBACiAgICAgZGVmIHRlc3RfcXVldWVfZXZlbnQoc2VsZik6CiAgICAgICAgIHNlcnZlclNvY2tldCA9IHNvY2tldC5zb2NrZXQoKQogICAgICAgICBzZXJ2ZXJTb2NrZXQuYmluZCgoJzEyNy4wLjAuMScsIDApKQotICAgICAgICBzZXJ2ZXJTb2NrZXQubGlzdGVuKDEpCisgICAgICAgIHNlcnZlclNvY2tldC5saXN0ZW4oKQogICAgICAgICBjbGllbnQgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgY2xpZW50LnNldGJsb2NraW5nKEZhbHNlKQogICAgICAgICB0cnk6CkBAIC0yMzcsOCArMjM2LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXRfaW5oZXJpdGFibGUoa3F1ZXVlLmZpbGVubygpKSwgRmFsc2UpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RLUXVldWUpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5IGIvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkKaW5kZXggNzkxNTdkZS4uMjFlZjczOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkKQEAgLTcsNiArNyw3IEBACiAKIAogRklMRU5BTUUgPSBsaW5lY2FjaGUuX19maWxlX18KK05PTkVYSVNURU5UX0ZJTEVOQU1FID0gRklMRU5BTUUgKyAnLm1pc3NpbmcnCiBJTlZBTElEX05BTUUgPSAnIUAkKSghQCNfMScKIEVNUFRZID0gJycKIFRFU1RTID0gJ2luc3BlY3RfZm9kZGVyIGluc3BlY3RfZm9kZGVyMiBtYXBwaW5nX3Rlc3RzJwpAQCAtMTI2LDYgKzEyNyw0OCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZSwgZ2V0bGluZShzb3VyY2VfbmFtZSwgaW5kZXggKyAxKSkKICAgICAgICAgICAgICAgICBzb3VyY2VfbGlzdC5hcHBlbmQobGluZSkKIAorICAgIGRlZiB0ZXN0X2xhenljYWNoZV9ub19nbG9iYWxzKHNlbGYpOgorICAgICAgICBsaW5lcyA9IGxpbmVjYWNoZS5nZXRsaW5lcyhGSUxFTkFNRSkKKyAgICAgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBsaW5lY2FjaGUubGF6eWNhY2hlKEZJTEVOQU1FLCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgbGluZWNhY2hlLmdldGxpbmVzKEZJTEVOQU1FKSkKKworICAgIGRlZiB0ZXN0X2xhenljYWNoZV9zbW9rZShzZWxmKToKKyAgICAgICAgbGluZXMgPSBsaW5lY2FjaGUuZ2V0bGluZXMoTk9ORVhJU1RFTlRfRklMRU5BTUUsIGdsb2JhbHMoKSkKKyAgICAgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgVHJ1ZSwgbGluZWNhY2hlLmxhenljYWNoZShOT05FWElTVEVOVF9GSUxFTkFNRSwgZ2xvYmFscygpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obGluZWNhY2hlLmNhY2hlW05PTkVYSVNURU5UX0ZJTEVOQU1FXSkpCisgICAgICAgICMgTm90ZSBoZXJlIHRoYXQgd2UncmUgbG9va2luZyB1cCBhIG5vbiBleGlzdGFudCBmaWxlbmFtZSB3aXRoIG5vCisgICAgICAgICMgZ2xvYmFsczogdGhpcyB3b3VsZCBlcnJvciBpZiB0aGUgbGF6eSB2YWx1ZSB3YXNuJ3QgcmVzb2x2ZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMsIGxpbmVjYWNoZS5nZXRsaW5lcyhOT05FWElTVEVOVF9GSUxFTkFNRSkpCisKKyAgICBkZWYgdGVzdF9sYXp5Y2FjaGVfcHJvdmlkZV9hZnRlcl9mYWlsZWRfbG9va3VwKHNlbGYpOgorICAgICAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCisgICAgICAgIGxpbmVzID0gbGluZWNhY2hlLmdldGxpbmVzKE5PTkVYSVNURU5UX0ZJTEVOQU1FLCBnbG9iYWxzKCkpCisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgbGluZWNhY2hlLmdldGxpbmVzKE5PTkVYSVNURU5UX0ZJTEVOQU1FKQorICAgICAgICBsaW5lY2FjaGUubGF6eWNhY2hlKE5PTkVYSVNURU5UX0ZJTEVOQU1FLCBnbG9iYWxzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMsIGxpbmVjYWNoZS51cGRhdGVjYWNoZShOT05FWElTVEVOVF9GSUxFTkFNRSkpCisKKyAgICBkZWYgdGVzdF9sYXp5Y2FjaGVfY2hlY2soc2VsZik6CisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgbGluZWNhY2hlLmxhenljYWNoZShOT05FWElTVEVOVF9GSUxFTkFNRSwgZ2xvYmFscygpKQorICAgICAgICBsaW5lY2FjaGUuY2hlY2tjYWNoZSgpCisKKyAgICBkZWYgdGVzdF9sYXp5Y2FjaGVfYmFkX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGxpbmVjYWNoZS5sYXp5Y2FjaGUoJycsIGdsb2JhbHMoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGxpbmVjYWNoZS5sYXp5Y2FjaGUoJzxmb28+JywgZ2xvYmFscygpKSkKKworICAgIGRlZiB0ZXN0X2xhenljYWNoZV9hbHJlYWR5X2NhY2hlZChzZWxmKToKKyAgICAgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQorICAgICAgICBsaW5lcyA9IGxpbmVjYWNoZS5nZXRsaW5lcyhOT05FWElTVEVOVF9GSUxFTkFNRSwgZ2xvYmFscygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgRmFsc2UsCisgICAgICAgICAgICBsaW5lY2FjaGUubGF6eWNhY2hlKE5PTkVYSVNURU5UX0ZJTEVOQU1FLCBnbG9iYWxzKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQsIGxlbihsaW5lY2FjaGUuY2FjaGVbTk9ORVhJU1RFTlRfRklMRU5BTUVdKSkKKwogICAgIGRlZiB0ZXN0X21lbW9yeWVycm9yKHNlbGYpOgogICAgICAgICBsaW5lcyA9IGxpbmVjYWNoZS5nZXRsaW5lcyhGSUxFTkFNRSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9saXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9saXN0LnB5CmluZGV4IDNiOTQ3MDAuLjc1MGQ2Y2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xpc3QucHkKQEAgLTEsNiArMSw3IEBACiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIGxpc3RfdGVzdHMKIGltcG9ydCBwaWNrbGUKK2ltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBMaXN0VGVzdChsaXN0X3Rlc3RzLkNvbW1vblRlc3QpOgogICAgIHR5cGUydGVzdCA9IGxpc3QKQEAgLTEwOCwyMCArMTA5LDUgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgKDMsKSArIEwoWzEsMl0pCiAKLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChMaXN0VGVzdCkKLQotICAgICMgdmVyaWZ5IHJlZmVyZW5jZSBjb3VudGluZwotICAgIGltcG9ydCBzeXMKLSAgICBpZiB2ZXJib3NlIGFuZCBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKLSAgICAgICAgaW1wb3J0IGdjCi0gICAgICAgIGNvdW50cyA9IFtOb25lXSAqIDUKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGNvdW50cykpOgotICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTGlzdFRlc3QpCi0gICAgICAgICAgICBnYy5jb2xsZWN0KCkKLSAgICAgICAgICAgIGNvdW50c1tpXSA9IHN5cy5nZXR0b3RhbHJlZmNvdW50KCkKLSAgICAgICAgcHJpbnQoY291bnRzKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKHZlcmJvc2U9VHJ1ZSkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbG9jYWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9sb2NhbGUucHkKaW5kZXggOTM2OWEyNS4uZmFlMmMzZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sb2NhbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sb2NhbGUucHkKQEAgLTUyNCw1ICs1MjQsNTkgQEAKICAgICAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCwgKGInbm90JywgYid2YWxpZCcpKQogCiAKK2NsYXNzIEJhc2VEZWxvY2FsaXplVGVzdChCYXNlTG9jYWxpemVkVGVzdCk6CisKKyAgICBkZWYgX3Rlc3RfZGVsb2NhbGl6ZShzZWxmLCB2YWx1ZSwgb3V0KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbGUuZGVsb2NhbGl6ZSh2YWx1ZSksIG91dCkKKworICAgIGRlZiBfdGVzdF9hdG9mKHNlbGYsIHZhbHVlLCBvdXQpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsZS5hdG9mKHZhbHVlKSwgb3V0KQorCisgICAgZGVmIF90ZXN0X2F0b2koc2VsZiwgdmFsdWUsIG91dCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxlLmF0b2kodmFsdWUpLCBvdXQpCisKKworY2xhc3MgVGVzdEVuVVNEZWxvY2FsaXplKEVuVVNDb29rZWRUZXN0LCBCYXNlRGVsb2NhbGl6ZVRlc3QpOgorCisgICAgZGVmIHRlc3RfZGVsb2NhbGl6ZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9kZWxvY2FsaXplKCc1MDAwMC4wMCcsICc1MDAwMC4wMCcpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVsb2NhbGl6ZSgnNTAsMDAwLjAwJywgJzUwMDAwLjAwJykKKworICAgIGRlZiB0ZXN0X2F0b2Yoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXRvZignNTAwMDAuMDAnLCA1MDAwMC4pCisgICAgICAgIHNlbGYuX3Rlc3RfYXRvZignNTAsMDAwLjAwJywgNTAwMDAuKQorCisgICAgZGVmIHRlc3RfYXRvaShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hdG9pKCc1MDAwMCcsIDUwMDAwKQorICAgICAgICBzZWxmLl90ZXN0X2F0b2koJzUwLDAwMCcsIDUwMDAwKQorCisKK2NsYXNzIFRlc3RDRGVsb2NhbGl6ZVRlc3QoQ0Nvb2tlZFRlc3QsIEJhc2VEZWxvY2FsaXplVGVzdCk6CisKKyAgICBkZWYgdGVzdF9kZWxvY2FsaXplKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2RlbG9jYWxpemUoJzUwMDAwLjAwJywgJzUwMDAwLjAwJykKKworICAgIGRlZiB0ZXN0X2F0b2Yoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXRvZignNTAwMDAuMDAnLCA1MDAwMC4pCisKKyAgICBkZWYgdGVzdF9hdG9pKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0b2koJzUwMDAwJywgNTAwMDApCisKKworY2xhc3MgVGVzdGZyRlJEZWxvY2FsaXplVGVzdChGckZSQ29va2VkVGVzdCwgQmFzZURlbG9jYWxpemVUZXN0KToKKworICAgIGRlZiB0ZXN0X2RlbG9jYWxpemUoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZGVsb2NhbGl6ZSgnNTAwMDAsMDAnLCAnNTAwMDAuMDAnKQorICAgICAgICBzZWxmLl90ZXN0X2RlbG9jYWxpemUoJzUwIDAwMCwwMCcsICc1MDAwMC4wMCcpCisKKyAgICBkZWYgdGVzdF9hdG9mKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0b2YoJzUwMDAwLDAwJywgNTAwMDAuKQorICAgICAgICBzZWxmLl90ZXN0X2F0b2YoJzUwIDAwMCwwMCcsIDUwMDAwLikKKworICAgIGRlZiB0ZXN0X2F0b2koc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXRvaSgnNTAwMDAnLCA1MDAwMCkKKyAgICAgICAgc2VsZi5fdGVzdF9hdG9pKCc1MCAwMDAnLCA1MDAwMCkKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5CmluZGV4IGIxN2Y1ZTUuLjk1NTc1YmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAyMDAxLTIwMTMgYnkgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjIENvcHlyaWdodCAyMDAxLTIwMTQgYnkgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAjCiAjIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kIGl0cwogIyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsCkBAIC0xNiw3ICsxNiw3IEBACiAKICIiIlRlc3QgaGFybmVzcyBmb3IgdGhlIGxvZ2dpbmcgbW9kdWxlLiBSdW4gYWxsIHRlc3RzLgogCi1Db3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBWaW5heSBTYWppcC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoQykgMjAwMS0yMDE0IFZpbmF5IFNhamlwLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogIiIiCiAKIGltcG9ydCBsb2dnaW5nCkBAIC0zNCwxNSArMzQsMTIgQEAKIGltcG9ydCBxdWV1ZQogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHJlCi1pbXBvcnQgc2VsZWN0CiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKGNhcHR1cmVkX3N0ZG91dCwgcnVuX3dpdGhfbG9jYWxlLCBydW5fdW5pdHRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoLCByZXF1aXJlc196bGliLCBUZXN0SGFuZGxlciwgTWF0Y2hlciwgSE9TVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3dhcF9hdHRyKQorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTUyLDE2ICs0OSwxMiBAQAogICAgIGltcG9ydCB0aHJlYWRpbmcKICAgICAjIFRoZSBmb2xsb3dpbmcgaW1wb3J0cyBhcmUgbmVlZGVkIG9ubHkgZm9yIHRlc3RzIHdoaWNoCiAgICAgIyByZXF1aXJlIHRocmVhZGluZwotICAgIGltcG9ydCBhc3luY2hhdAogICAgIGltcG9ydCBhc3luY29yZQotICAgIGltcG9ydCBlcnJubwogICAgIGZyb20gaHR0cC5zZXJ2ZXIgaW1wb3J0IEhUVFBTZXJ2ZXIsIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIKICAgICBpbXBvcnQgc210cGQKICAgICBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJscGFyc2UsIHBhcnNlX3FzCiAgICAgZnJvbSBzb2NrZXRzZXJ2ZXIgaW1wb3J0IChUaHJlYWRpbmdVRFBTZXJ2ZXIsIERhdGFncmFtUmVxdWVzdEhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRpbmdUQ1BTZXJ2ZXIsIFN0cmVhbVJlcXVlc3RIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkaW5nVW5peFN0cmVhbVNlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGluZ1VuaXhEYXRhZ3JhbVNlcnZlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGluZ1RDUFNlcnZlciwgU3RyZWFtUmVxdWVzdEhhbmRsZXIpCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgdGhyZWFkaW5nID0gTm9uZQogdHJ5OgpAQCAtNjQyLDIyICs2MzUsMjMgQEAKICAgICAgICAgaCA9IFRlc3RTdHJlYW1IYW5kbGVyKEJhZFN0cmVhbSgpKQogICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHt9KQogICAgICAgICBvbGRfcmFpc2UgPSBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucwotICAgICAgICBvbGRfc3RkZXJyID0gc3lzLnN0ZGVycgorCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGguaGFuZGxlKHIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGguZXJyb3JfcmVjb3JkLCByKQorCiAgICAgICAgICAgICBoID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKEJhZFN0cmVhbSgpKQotICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHNpbyA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgICAgIGguaGFuZGxlKHIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCdcblJ1bnRpbWVFcnJvcjogZGVsaWJlcmF0ZSBtaXN0YWtlXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaW8uZ2V0dmFsdWUoKSkKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgICAgICAgICBtc2cgPSAnXG5SdW50aW1lRXJyb3I6IGRlbGliZXJhdGUgbWlzdGFrZVxuJworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obXNnLCBzdGRlcnIuZ2V0dmFsdWUoKSkKKwogICAgICAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBGYWxzZQotICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHNpbyA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgICAgIGguaGFuZGxlKHIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBzaW8uZ2V0dmFsdWUoKSkKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBzdGRlcnIuZ2V0dmFsdWUoKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gb2xkX3JhaXNlCi0gICAgICAgICAgICBzeXMuc3RkZXJyID0gb2xkX3N0ZGVycgogCiAjIC0tIFRoZSBmb2xsb3dpbmcgc2VjdGlvbiBjb3VsZCBiZSBtb3ZlZCBpbnRvIGEgc2VydmVyX2hlbHBlci5weSBtb2R1bGUKICMgLS0gaWYgaXQgcHJvdmVzIHRvIGJlIG9mIHdpZGVyIHV0aWxpdHkgdGhhbiBqdXN0IHRlc3RfbG9nZ2luZwpAQCAtNjg1LDcgKzY3OSw4IEBACiAgICAgICAgICIiIgogCiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyLCBoYW5kbGVyLCBwb2xsX2ludGVydmFsLCBzb2NrbWFwKToKLSAgICAgICAgICAgIHNtdHBkLlNNVFBTZXJ2ZXIuX19pbml0X18oc2VsZiwgYWRkciwgTm9uZSwgbWFwPXNvY2ttYXApCisgICAgICAgICAgICBzbXRwZC5TTVRQU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsIE5vbmUsIG1hcD1zb2NrbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1UcnVlKQogICAgICAgICAgICAgc2VsZi5wb3J0ID0gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKVsxXQogICAgICAgICAgICAgc2VsZi5faGFuZGxlciA9IGhhbmRsZXIKICAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKQEAgLTkyNywxMCArOTIyLDEwIEBACiAgICAgVElNRU9VVCA9IDguMAogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgogICAgICAgICBzb2NrbWFwID0ge30KLSAgICAgICAgc2VydmVyID0gVGVzdFNNVFBTZXJ2ZXIoKEhPU1QsIDApLCBzZWxmLnByb2Nlc3NfbWVzc2FnZSwgMC4wMDEsCisgICAgICAgIHNlcnZlciA9IFRlc3RTTVRQU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCBzZWxmLnByb2Nlc3NfbWVzc2FnZSwgMC4wMDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2ttYXApCiAgICAgICAgIHNlcnZlci5zdGFydCgpCi0gICAgICAgIGFkZHIgPSAoSE9TVCwgc2VydmVyLnBvcnQpCisgICAgICAgIGFkZHIgPSAoc3VwcG9ydC5IT1NULCBzZXJ2ZXIucG9ydCkKICAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuU01UUEhhbmRsZXIoYWRkciwgJ21lJywgJ3lvdScsICdMb2cnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNlbGYuVElNRU9VVCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLnRvYWRkcnMsIFsneW91J10pCkBAIC0xMjQ2LDcgKzEyNDEsNyBAQAogCiAgICAgZGVmIHRlc3RfY29uZmlnMF9vayhzZWxmKToKICAgICAgICAgIyBBIHNpbXBsZSBjb25maWcgZmlsZSB3aGljaCBvdmVycmlkZXMgdGhlIGRlZmF1bHQgc2V0dGluZ3MuCi0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5hcHBseV9jb25maWcoc2VsZi5jb25maWcwKQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQogICAgICAgICAgICAgIyBXb24ndCBvdXRwdXQgYW55dGhpbmcKQEAgLTEyNjEsNyArMTI1Niw3IEBACiAKICAgICBkZWYgdGVzdF9jb25maWcwX3VzaW5nX2NwX29rKHNlbGYpOgogICAgICAgICAjIEEgc2ltcGxlIGNvbmZpZyBmaWxlIHdoaWNoIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBzZXR0aW5ncy4KLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBmaWxlID0gaW8uU3RyaW5nSU8odGV4dHdyYXAuZGVkZW50KHNlbGYuY29uZmlnMCkpCiAgICAgICAgICAgICBjcCA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoKQogICAgICAgICAgICAgY3AucmVhZF9maWxlKGZpbGUpCkBAIC0xMjc5LDcgKzEyNzQsNyBAQAogCiAgICAgZGVmIHRlc3RfY29uZmlnMV9vayhzZWxmLCBjb25maWc9Y29uZmlnMSk6CiAgICAgICAgICMgQSBjb25maWcgZmlsZSBkZWZpbmluZyBhIHN1Yi1wYXJzZXIgYXMgd2VsbC4KLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhjb25maWcpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgICMgQm90aCB3aWxsIG91dHB1dCBhIG1lc3NhZ2UKQEAgLTEzMDIsNyArMTI5Nyw3IEBACiAKICAgICBkZWYgdGVzdF9jb25maWc0X29rKHNlbGYpOgogICAgICAgICAjIEEgY29uZmlnIGZpbGUgc3BlY2lmeWluZyBhIGN1c3RvbSBmb3JtYXR0ZXIgY2xhc3MuCi0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5hcHBseV9jb25maWcoc2VsZi5jb25maWc0KQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQogICAgICAgICAgICAgdHJ5OgpAQCAtMTMyMiw3ICsxMzE3LDcgQEAKICAgICAgICAgc2VsZi50ZXN0X2NvbmZpZzFfb2soY29uZmlnPXNlbGYuY29uZmlnNikKIAogICAgIGRlZiB0ZXN0X2NvbmZpZzdfb2soc2VsZik6Ci0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5hcHBseV9jb25maWcoc2VsZi5jb25maWcxYSkKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgIyBTZWUgaXNzdWUgIzExNDI0LiBjb21waWxlci1oeXBoZW5hdGVkIHNvcnRzCkBAIC0xMzQyLDcgKzEzMzcsNyBAQAogICAgICAgICAgICAgXSwgc3RyZWFtPW91dHB1dCkKICAgICAgICAgICAgICMgT3JpZ2luYWwgbG9nZ2VyIG91dHB1dCBpcyBlbXB0eS4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzcpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9nZ2VyLmRpc2FibGVkKQpAQCAtMjQ4OSw3ICsyNDg0LDcgQEAKIAogICAgIGRlZiB0ZXN0X2NvbmZpZzBfb2soc2VsZik6CiAgICAgICAgICMgQSBzaW1wbGUgY29uZmlnIHdoaWNoIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBzZXR0aW5ncy4KLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzApCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCiAgICAgICAgICAgICAjIFdvbid0IG91dHB1dCBhbnl0aGluZwpAQCAtMjUwNCw3ICsyNDk5LDcgQEAKIAogICAgIGRlZiB0ZXN0X2NvbmZpZzFfb2soc2VsZiwgY29uZmlnPWNvbmZpZzEpOgogICAgICAgICAjIEEgY29uZmlnIGRlZmluaW5nIGEgc3ViLXBhcnNlciBhcyB3ZWxsLgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKGNvbmZpZykKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgIyBCb3RoIHdpbGwgb3V0cHV0IGEgbWVzc2FnZQpAQCAtMjUzNSw3ICsyNTMwLDcgQEAKIAogICAgIGRlZiB0ZXN0X2NvbmZpZzRfb2soc2VsZik6CiAgICAgICAgICMgQSBjb25maWcgc3BlY2lmeWluZyBhIGN1c3RvbSBmb3JtYXR0ZXIgY2xhc3MuCi0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5hcHBseV9jb25maWcoc2VsZi5jb25maWc0KQogICAgICAgICAgICAgI2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKICAgICAgICAgICAgIHRyeToKQEAgLTI1NTAsNyArMjU0NSw3IEBACiAKICAgICBkZWYgdGVzdF9jb25maWc0YV9vayhzZWxmKToKICAgICAgICAgIyBBIGNvbmZpZyBzcGVjaWZ5aW5nIGEgY3VzdG9tIGZvcm1hdHRlciBjbGFzcy4KLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzRhKQogICAgICAgICAgICAgI2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKICAgICAgICAgICAgIHRyeToKQEAgLTI1NzAsNyArMjU2NSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbiwgc2VsZi5hcHBseV9jb25maWcsIHNlbGYuY29uZmlnNikKIAogICAgIGRlZiB0ZXN0X2NvbmZpZzdfb2soc2VsZik6Ci0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5hcHBseV9jb25maWcoc2VsZi5jb25maWcxKQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICAjIEJvdGggd2lsbCBvdXRwdXQgYSBtZXNzYWdlCkBAIC0yNTgyLDcgKzI1NzcsNyBAQAogICAgICAgICAgICAgXSwgc3RyZWFtPW91dHB1dCkKICAgICAgICAgICAgICMgT3JpZ2luYWwgbG9nZ2VyIG91dHB1dCBpcyBlbXB0eS4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzcpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2dnZXIuZGlzYWJsZWQpCkBAIC0yNTk5LDcgKzI1OTQsNyBAQAogCiAgICAgI1NhbWUgYXMgdGVzdF9jb25maWdfN19vayBidXQgZG9uJ3QgZGlzYWJsZSBvbGQgbG9nZ2Vycy4KICAgICBkZWYgdGVzdF9jb25maWdfOF9vayhzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzEpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgICMgQWxsIHdpbGwgb3V0cHV0IGEgbWVzc2FnZQpAQCAtMjYxMSw3ICsyNjA2LDcgQEAKICAgICAgICAgICAgIF0sIHN0cmVhbT1vdXRwdXQpCiAgICAgICAgICAgICAjIE9yaWdpbmFsIGxvZ2dlciBvdXRwdXQgaXMgZW1wdHkuCiAgICAgICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10pCi0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5hcHBseV9jb25maWcoc2VsZi5jb25maWc4KQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvZ2dlci5kaXNhYmxlZCkKQEAgLTI2MzIsNyArMjYyNyw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10pCiAKICAgICBkZWYgdGVzdF9jb25maWdfOGFfb2soc2VsZik6Ci0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5hcHBseV9jb25maWcoc2VsZi5jb25maWcxYSkKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgIyBTZWUgaXNzdWUgIzExNDI0LiBjb21waWxlci1oeXBoZW5hdGVkIHNvcnRzCkBAIC0yNjUyLDcgKzI2NDcsNyBAQAogICAgICAgICAgICAgXSwgc3RyZWFtPW91dHB1dCkKICAgICAgICAgICAgICMgT3JpZ2luYWwgbG9nZ2VyIG91dHB1dCBpcyBlbXB0eS4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzhhKQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvZ2dlci5kaXNhYmxlZCkKQEAgLTI2NzUsNyArMjY3MCw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10pCiAKICAgICBkZWYgdGVzdF9jb25maWdfOV9vayhzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzkpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgICNOb3RoaW5nIHdpbGwgYmUgb3V0cHV0IHNpbmNlIGJvdGggaGFuZGxlciBhbmQgbG9nZ2VyIGFyZSBzZXQgdG8gV0FSTklORwpAQCAtMjY5Myw3ICsyNjg4LDcgQEAKICAgICAgICAgICAgIF0sIHN0cmVhbT1vdXRwdXQpCiAKICAgICBkZWYgdGVzdF9jb25maWdfMTBfb2soc2VsZik6Ci0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5hcHBseV9jb25maWcoc2VsZi5jb25maWcxMCkKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoc2VsZi5uZXh0X21lc3NhZ2UoKSkKQEAgLTI3MjEsNyArMjcxNiw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbiwgc2VsZi5hcHBseV9jb25maWcsIHNlbGYuY29uZmlnMTMpCiAKICAgICBkZWYgdGVzdF9jb25maWcxNF9vayhzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzE0KQogICAgICAgICAgICAgaCA9IGxvZ2dpbmcuX2hhbmRsZXJzWydoYW5kMSddCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9vLCAnYmFyJykKQEAgLTI3NjAsNyArMjc1NSw3IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogICAgIGRlZiB0ZXN0X2xpc3Rlbl9jb25maWdfMTBfb2soc2VsZik6Ci0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5zZXR1cF92aWFfbGlzdGVuZXIoanNvbi5kdW1wcyhzZWxmLmNvbmZpZzEwKSkKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoc2VsZi5uZXh0X21lc3NhZ2UoKSkKQEAgLTI3ODAsNyArMjc3NSw3IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogICAgIGRlZiB0ZXN0X2xpc3Rlbl9jb25maWdfMV9vayhzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLnNldHVwX3ZpYV9saXN0ZW5lcih0ZXh0d3JhcC5kZWRlbnQoQ29uZmlnRmlsZVRlc3QuY29uZmlnMSkpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgICMgQm90aCB3aWxsIG91dHB1dCBhIG1lc3NhZ2UKQEAgLTI4MDcsNyArMjgwMiw3IEBACiAgICAgICAgICMgRmlyc3QsIHNwZWNpZnkgYSB2ZXJpZmljYXRpb24gZnVuY3Rpb24gdGhhdCB3aWxsIGZhaWwuCiAgICAgICAgICMgV2UgZXhwZWN0IHRvIHNlZSBubyBvdXRwdXQsIHNpbmNlIG91ciBjb25maWd1cmF0aW9uCiAgICAgICAgICMgbmV2ZXIgdG9vayBlZmZlY3QuCi0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5zZXR1cF92aWFfbGlzdGVuZXIodG9fc2VuZCwgdmVyaWZ5X2ZhaWwpCiAgICAgICAgICAgICAjIEJvdGggd2lsbCBvdXRwdXQgYSBtZXNzYWdlCiAgICAgICAgICAgICBsb2dnZXIuaW5mbyhzZWxmLm5leHRfbWVzc2FnZSgpKQpAQCAtMjgyMiw3ICsyODE3LDcgQEAKICAgICAgICAgIyBOb3csIHBlcmZvcm0gbm8gdmVyaWZpY2F0aW9uLiBPdXIgY29uZmlndXJhdGlvbgogICAgICAgICAjIHNob3VsZCB0YWtlIGVmZmVjdC4KIAotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuc2V0dXBfdmlhX2xpc3RlbmVyKHRvX3NlbmQpICAgICMgbm8gdmVyaWZ5IGNhbGxhYmxlIHNwZWNpZmllZAogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICAjIEJvdGggd2lsbCBvdXRwdXQgYSBtZXNzYWdlCkBAIC0yODQwLDcgKzI4MzUsNyBAQAogCiAgICAgICAgICMgTm93LCBwZXJmb3JtIHZlcmlmaWNhdGlvbiB3aGljaCB0cmFuc2Zvcm1zIHRoZSBieXRlcy4KIAotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuc2V0dXBfdmlhX2xpc3RlbmVyKHRvX3NlbmRbOjotMV0sIHZlcmlmeV9yZXZlcnNlKQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICAjIEJvdGggd2lsbCBvdXRwdXQgYSBtZXNzYWdlCkBAIC0yOTk1LDcgKzI5OTAsNyBAQAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIobG9nZ2luZy5oYW5kbGVycywgJ1F1ZXVlTGlzdGVuZXInKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9nZ2luZy5oYW5kbGVycy5RdWV1ZUxpc3RlbmVyIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QnKQogICAgIGRlZiB0ZXN0X3F1ZXVlX2xpc3RlbmVyKHNlbGYpOgotICAgICAgICBoYW5kbGVyID0gVGVzdEhhbmRsZXIoTWF0Y2hlcigpKQorICAgICAgICBoYW5kbGVyID0gc3VwcG9ydC5UZXN0SGFuZGxlcihzdXBwb3J0Lk1hdGNoZXIoKSkKICAgICAgICAgbGlzdGVuZXIgPSBsb2dnaW5nLmhhbmRsZXJzLlF1ZXVlTGlzdGVuZXIoc2VsZi5xdWV1ZSwgaGFuZGxlcikKICAgICAgICAgbGlzdGVuZXIuc3RhcnQoKQogICAgICAgICB0cnk6CkBAIC0zMDA3LDYgKzMwMDIsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhbmRsZXIubWF0Y2hlcyhsZXZlbG5vPWxvZ2dpbmcuV0FSTklORywgbWVzc2FnZT0nMScpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFuZGxlci5tYXRjaGVzKGxldmVsbm89bG9nZ2luZy5FUlJPUiwgbWVzc2FnZT0nMicpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFuZGxlci5tYXRjaGVzKGxldmVsbm89bG9nZ2luZy5DUklUSUNBTCwgbWVzc2FnZT0nMycpKQorICAgICAgICBoYW5kbGVyLmNsb3NlKCkKKworICAgICAgICAjIE5vdyB0ZXN0IHdpdGggcmVzcGVjdF9oYW5kbGVyX2xldmVsIHNldAorCisgICAgICAgIGhhbmRsZXIgPSBzdXBwb3J0LlRlc3RIYW5kbGVyKHN1cHBvcnQuTWF0Y2hlcigpKQorICAgICAgICBoYW5kbGVyLnNldExldmVsKGxvZ2dpbmcuQ1JJVElDQUwpCisgICAgICAgIGxpc3RlbmVyID0gbG9nZ2luZy5oYW5kbGVycy5RdWV1ZUxpc3RlbmVyKHNlbGYucXVldWUsIGhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BlY3RfaGFuZGxlcl9sZXZlbD1UcnVlKQorICAgICAgICBsaXN0ZW5lci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYucXVlX2xvZ2dlci53YXJuaW5nKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgICAgICBzZWxmLnF1ZV9sb2dnZXIuZXJyb3Ioc2VsZi5uZXh0X21lc3NhZ2UoKSkKKyAgICAgICAgICAgIHNlbGYucXVlX2xvZ2dlci5jcml0aWNhbChzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgbGlzdGVuZXIuc3RvcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFuZGxlci5tYXRjaGVzKGxldmVsbm89bG9nZ2luZy5XQVJOSU5HLCBtZXNzYWdlPSc0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFuZGxlci5tYXRjaGVzKGxldmVsbm89bG9nZ2luZy5FUlJPUiwgbWVzc2FnZT0nNScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFuZGxlci5tYXRjaGVzKGxldmVsbm89bG9nZ2luZy5DUklUSUNBTCwgbWVzc2FnZT0nNicpKQorCiAKIFpFUk8gPSBkYXRldGltZS50aW1lZGVsdGEoMCkKIApAQCAtMzE2MywzMiArMzE3NywzNSBAQAogICAgICAgICAjIFRlc3QgdGhlIGxhc3QgcmVzb3J0IGhhbmRsZXIKICAgICAgICAgcm9vdCA9IHNlbGYucm9vdF9sb2dnZXIKICAgICAgICAgcm9vdC5yZW1vdmVIYW5kbGVyKHNlbGYucm9vdF9oZGxyKQotICAgICAgICBvbGRfc3RkZXJyID0gc3lzLnN0ZGVycgogICAgICAgICBvbGRfbGFzdHJlc29ydCA9IGxvZ2dpbmcubGFzdFJlc29ydAogICAgICAgICBvbGRfcmFpc2VfZXhjZXB0aW9ucyA9IGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zCisKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHNpbyA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgICAgIHJvb3QuZGVidWcoJ1RoaXMgc2hvdWxkIG5vdCBhcHBlYXInKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW8uZ2V0dmFsdWUoKSwgJycpCi0gICAgICAgICAgICByb290Lndhcm5pbmcoJ1RoaXMgaXMgeW91ciBmaW5hbCBjaGFuY2UhJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lvLmdldHZhbHVlKCksICdUaGlzIGlzIHlvdXIgZmluYWwgY2hhbmNlIVxuJykKLSAgICAgICAgICAgICNObyBoYW5kbGVycyBhbmQgbm8gbGFzdCByZXNvcnQsIHNvICdObyBoYW5kbGVycycgbWVzc2FnZQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgICAgICByb290LmRlYnVnKCdUaGlzIHNob3VsZCBub3QgYXBwZWFyJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgICAgICAgICByb290Lndhcm5pbmcoJ0ZpbmFsIGNoYW5jZSEnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RkZXJyLmdldHZhbHVlKCksICdGaW5hbCBjaGFuY2UhXG4nKQorCisgICAgICAgICAgICAjIE5vIGhhbmRsZXJzIGFuZCBubyBsYXN0IHJlc29ydCwgc28gJ05vIGhhbmRsZXJzJyBtZXNzYWdlCiAgICAgICAgICAgICBsb2dnaW5nLmxhc3RSZXNvcnQgPSBOb25lCi0gICAgICAgICAgICBzeXMuc3RkZXJyID0gc2lvID0gaW8uU3RyaW5nSU8oKQotICAgICAgICAgICAgcm9vdC53YXJuaW5nKCdUaGlzIGlzIHlvdXIgZmluYWwgY2hhbmNlIScpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpby5nZXR2YWx1ZSgpLCAnTm8gaGFuZGxlcnMgY291bGQgYmUgZm91bmQgZm9yIGxvZ2dlciAicm9vdCJcbicpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgICAgIHJvb3Qud2FybmluZygnRmluYWwgY2hhbmNlIScpCisgICAgICAgICAgICAgICAgbXNnID0gJ05vIGhhbmRsZXJzIGNvdWxkIGJlIGZvdW5kIGZvciBsb2dnZXIgInJvb3QiXG4nCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgbXNnKQorCiAgICAgICAgICAgICAjICdObyBoYW5kbGVycycgbWVzc2FnZSBvbmx5IHByaW50ZWQgb25jZQotICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHNpbyA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgICAgIHJvb3Qud2FybmluZygnVGhpcyBpcyB5b3VyIGZpbmFsIGNoYW5jZSEnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW8uZ2V0dmFsdWUoKSwgJycpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgICAgIHJvb3Qud2FybmluZygnRmluYWwgY2hhbmNlIScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgJycpCisKKyAgICAgICAgICAgICMgSWYgcmFpc2VFeGNlcHRpb25zIGlzIEZhbHNlLCBubyBtZXNzYWdlIGlzIHByaW50ZWQKICAgICAgICAgICAgIHJvb3QubWFuYWdlci5lbWl0dGVkTm9IYW5kbGVyV2FybmluZyA9IEZhbHNlCi0gICAgICAgICAgICAjSWYgcmFpc2VFeGNlcHRpb25zIGlzIEZhbHNlLCBubyBtZXNzYWdlIGlzIHByaW50ZWQKICAgICAgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gRmFsc2UKLSAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzaW8gPSBpby5TdHJpbmdJTygpCi0gICAgICAgICAgICByb290Lndhcm5pbmcoJ1RoaXMgaXMgeW91ciBmaW5hbCBjaGFuY2UhJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lvLmdldHZhbHVlKCksICcnKQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgICAgICByb290Lndhcm5pbmcoJ0ZpbmFsIGNoYW5jZSEnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RkZXJyLmdldHZhbHVlKCksICcnKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc3lzLnN0ZGVyciA9IG9sZF9zdGRlcnIKICAgICAgICAgICAgIHJvb3QuYWRkSGFuZGxlcihzZWxmLnJvb3RfaGRscikKICAgICAgICAgICAgIGxvZ2dpbmcubGFzdFJlc29ydCA9IG9sZF9sYXN0cmVzb3J0CiAgICAgICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IG9sZF9yYWlzZV9leGNlcHRpb25zCkBAIC0zMzE5LDggKzMzMzYsOCBAQAogCiAgICAgZGVmIF90ZXN0X2xvZyhzZWxmLCBtZXRob2QsIGxldmVsPU5vbmUpOgogICAgICAgICBjYWxsZWQgPSBbXQotICAgICAgICBwYXRjaChzZWxmLCBsb2dnaW5nLCAnYmFzaWNDb25maWcnLAotICAgICAgICAgICAgICBsYW1iZGEgKmEsICoqa3c6IGNhbGxlZC5hcHBlbmQoKGEsIGt3KSkpCisgICAgICAgIHN1cHBvcnQucGF0Y2goc2VsZiwgbG9nZ2luZywgJ2Jhc2ljQ29uZmlnJywKKyAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgKmEsICoqa3c6IGNhbGxlZC5hcHBlbmQoKGEsIGt3KSkpCiAKICAgICAgICAgcmVjb3JkaW5nID0gUmVjb3JkaW5nSGFuZGxlcigpCiAgICAgICAgIGxvZ2dpbmcucm9vdC5hZGRIYW5kbGVyKHJlY29yZGluZykKQEAgLTM0OTEsNyArMzUwOCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2luZy5yb290LmxldmVsLCBzZWxmLm9yaWdpbmFsX2xvZ2dpbmdfbGV2ZWwpCiAKICAgICBkZWYgdGVzdF9zdHJmb3JtYXRzdHlsZShzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKHN0cmVhbT1zeXMuc3Rkb3V0LCBzdHlsZT0ieyIpCiAgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCJMb2cgYW4gZXJyb3IiKQogICAgICAgICAgICAgc3lzLnN0ZG91dC5zZWVrKDApCkBAIC0zNDk5LDcgKzM1MTYsNyBAQAogICAgICAgICAgICAgICAgICJFUlJPUjpyb290OkxvZyBhbiBlcnJvciIpCiAKICAgICBkZWYgdGVzdF9zdHJpbmd0ZW1wbGF0ZXN0eWxlKHNlbGYpOgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoc3RyZWFtPXN5cy5zdGRvdXQsIHN0eWxlPSIkIikKICAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoIkxvZyBhbiBlcnJvciIpCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LnNlZWsoMCkKQEAgLTM2MjAsNyArMzYzNyw3IEBACiAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAobG9nZ2luZy5yb290LnNldExldmVsLCBvbGRfbGV2ZWwpCiAgICAgICAgICAgICBjYWxsZWQuYXBwZW5kKChhLCBrdykpCiAKLSAgICAgICAgcGF0Y2goc2VsZiwgbG9nZ2luZywgJ2Jhc2ljQ29uZmlnJywgbXlfYmFzaWNfY29uZmlnKQorICAgICAgICBzdXBwb3J0LnBhdGNoKHNlbGYsIGxvZ2dpbmcsICdiYXNpY0NvbmZpZycsIG15X2Jhc2ljX2NvbmZpZykKIAogICAgICAgICBsb2dfbWV0aG9kID0gZ2V0YXR0cihsb2dnaW5nLCBtZXRob2QpCiAgICAgICAgIGlmIGxldmVsIGlzIG5vdCBOb25lOgpAQCAtMzY4Niw2ICszNzAzLDE5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmV4Y19pbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgIChleGMuX19jbGFzc19fLCBleGMsIGV4Yy5fX3RyYWNlYmFja19fKSkKIAorICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl9leGNpbmZvKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICAxIC8gMAorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4YyA9IGUKKworICAgICAgICBzZWxmLmFkYXB0ZXIuZXhjZXB0aW9uKCdleGNfaW5mbyB0ZXN0JywgZXhjX2luZm89ZXhjKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYucmVjb3JkaW5nLnJlY29yZHMpLCAxKQorICAgICAgICByZWNvcmQgPSBzZWxmLnJlY29yZGluZy5yZWNvcmRzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmV4Y19pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgIChleGMuX19jbGFzc19fLCBleGMsIGV4Yy5fX3RyYWNlYmFja19fKSkKKwogICAgIGRlZiB0ZXN0X2NyaXRpY2FsKHNlbGYpOgogICAgICAgICBtc2cgPSAnY3JpdGljYWwgdGVzdCEgJXInCiAgICAgICAgIHNlbGYuYWRhcHRlci5jcml0aWNhbChtc2csIHNlbGYucmVjb3JkaW5nKQpAQCAtMzc0NSwxNyArMzc3NSwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIChleGMuX19jbGFzc19fLCBleGMsIGV4Yy5fX3RyYWNlYmFja19fKSkKIAogICAgIGRlZiB0ZXN0X2xvZ19pbnZhbGlkX2xldmVsX3dpdGhfcmFpc2Uoc2VsZik6Ci0gICAgICAgIHdpdGggc3dhcF9hdHRyKGxvZ2dpbmcsICdyYWlzZUV4Y2VwdGlvbnMnLCBUcnVlKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfYXR0cihsb2dnaW5nLCAncmFpc2VFeGNlcHRpb25zJywgVHJ1ZSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubG9nZ2VyLmxvZywgJzEwJywgJ3Rlc3QgbWVzc2FnZScpCiAKICAgICBkZWYgdGVzdF9sb2dfaW52YWxpZF9sZXZlbF9ub19yYWlzZShzZWxmKToKLSAgICAgICAgd2l0aCBzd2FwX2F0dHIobG9nZ2luZywgJ3JhaXNlRXhjZXB0aW9ucycsIEZhbHNlKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfYXR0cihsb2dnaW5nLCAncmFpc2VFeGNlcHRpb25zJywgRmFsc2UpOgogICAgICAgICAgICAgc2VsZi5sb2dnZXIubG9nKCcxMCcsICd0ZXN0IG1lc3NhZ2UnKSAgIyBubyBleGNlcHRpb24gaGFwcGVucwogCiAgICAgZGVmIHRlc3RfZmluZF9jYWxsZXJfd2l0aF9zdGFja19pbmZvKHNlbGYpOgogICAgICAgICBjYWxsZWQgPSBbXQotICAgICAgICBwYXRjaChzZWxmLCBsb2dnaW5nLnRyYWNlYmFjaywgJ3ByaW50X3N0YWNrJywKLSAgICAgICAgICAgICAgbGFtYmRhIGYsIGZpbGU6IGNhbGxlZC5hcHBlbmQoZmlsZS5nZXR2YWx1ZSgpKSkKKyAgICAgICAgc3VwcG9ydC5wYXRjaChzZWxmLCBsb2dnaW5nLnRyYWNlYmFjaywgJ3ByaW50X3N0YWNrJywKKyAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgZiwgZmlsZTogY2FsbGVkLmFwcGVuZChmaWxlLmdldHZhbHVlKCkpKQogCiAgICAgICAgIHNlbGYubG9nZ2VyLmZpbmRDYWxsZXIoc3RhY2tfaW5mbz1UcnVlKQogCkBAIC0zODkyLDcgKzM5MjIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG5hbWVyKHNlbGYuZm4gKyAiLjMiKSkpCiAgICAgICAgIHJoLmNsb3NlKCkKIAotICAgIEByZXF1aXJlc196bGliCisgICAgQHN1cHBvcnQucmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JvdGF0b3Ioc2VsZik6CiAgICAgICAgIGRlZiBuYW1lcihuYW1lKToKICAgICAgICAgICAgIHJldHVybiBuYW1lICsgIi5neiIKQEAgLTQxMzIsMjIgKzQxNjIsMjAgQEAKICMgU2V0IHRoZSBsb2NhbGUgdG8gdGhlIHBsYXRmb3JtLWRlcGVuZGVudCBkZWZhdWx0LiAgSSBoYXZlIG5vIGlkZWEKICMgd2h5IHRoZSB0ZXN0IGRvZXMgdGhpcywgYnV0IGluIGFueSBjYXNlIHdlIHNhdmUgdGhlIGN1cnJlbnQgbG9jYWxlCiAjIGZpcnN0IGFuZCByZXN0b3JlIGl0IGF0IHRoZSBlbmQuCi1AcnVuX3dpdGhfbG9jYWxlKCdMQ19BTEwnLCAnJykKK0BzdXBwb3J0LnJ1bl93aXRoX2xvY2FsZSgnTENfQUxMJywgJycpCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEJ1aWx0aW5MZXZlbHNUZXN0LCBCYXNpY0ZpbHRlclRlc3QsCi0gICAgICAgICAgICAgICAgIEN1c3RvbUxldmVsc0FuZEZpbHRlcnNUZXN0LCBIYW5kbGVyVGVzdCwgTWVtb3J5SGFuZGxlclRlc3QsCi0gICAgICAgICAgICAgICAgIENvbmZpZ0ZpbGVUZXN0LCBTb2NrZXRIYW5kbGVyVGVzdCwgRGF0YWdyYW1IYW5kbGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgTWVtb3J5VGVzdCwgRW5jb2RpbmdUZXN0LCBXYXJuaW5nc1Rlc3QsIENvbmZpZ0RpY3RUZXN0LAotICAgICAgICAgICAgICAgICBNYW5hZ2VyVGVzdCwgRm9ybWF0dGVyVGVzdCwgQnVmZmVyaW5nRm9ybWF0dGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgU3RyZWFtSGFuZGxlclRlc3QsIExvZ1JlY29yZEZhY3RvcnlUZXN0LCBDaGlsZExvZ2dlclRlc3QsCi0gICAgICAgICAgICAgICAgIFF1ZXVlSGFuZGxlclRlc3QsIFNodXRkb3duVGVzdCwgTW9kdWxlTGV2ZWxNaXNjVGVzdCwKLSAgICAgICAgICAgICAgICAgQmFzaWNDb25maWdUZXN0LCBMb2dnZXJBZGFwdGVyVGVzdCwgTG9nZ2VyVGVzdCwKLSAgICAgICAgICAgICAgICAgU01UUEhhbmRsZXJUZXN0LCBGaWxlSGFuZGxlclRlc3QsIFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LAotICAgICAgICAgICAgICAgICBMYXN0UmVzb3J0VGVzdCwgTG9nUmVjb3JkVGVzdCwgRXhjZXB0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgU3lzTG9nSGFuZGxlclRlc3QsIEhUVFBIYW5kbGVyVGVzdCwgTlRFdmVudExvZ0hhbmRsZXJUZXN0LAotICAgICAgICAgICAgICAgICBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LCBVbml4U29ja2V0SGFuZGxlclRlc3QsCi0gICAgICAgICAgICAgICAgIFVuaXhEYXRhZ3JhbUhhbmRsZXJUZXN0LCBVbml4U3lzTG9nSGFuZGxlclRlc3QKLSAgICAgICAgICAgICAgICApCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCisgICAgICAgIEJ1aWx0aW5MZXZlbHNUZXN0LCBCYXNpY0ZpbHRlclRlc3QsIEN1c3RvbUxldmVsc0FuZEZpbHRlcnNUZXN0LAorICAgICAgICBIYW5kbGVyVGVzdCwgTWVtb3J5SGFuZGxlclRlc3QsIENvbmZpZ0ZpbGVUZXN0LCBTb2NrZXRIYW5kbGVyVGVzdCwKKyAgICAgICAgRGF0YWdyYW1IYW5kbGVyVGVzdCwgTWVtb3J5VGVzdCwgRW5jb2RpbmdUZXN0LCBXYXJuaW5nc1Rlc3QsCisgICAgICAgIENvbmZpZ0RpY3RUZXN0LCBNYW5hZ2VyVGVzdCwgRm9ybWF0dGVyVGVzdCwgQnVmZmVyaW5nRm9ybWF0dGVyVGVzdCwKKyAgICAgICAgU3RyZWFtSGFuZGxlclRlc3QsIExvZ1JlY29yZEZhY3RvcnlUZXN0LCBDaGlsZExvZ2dlclRlc3QsCisgICAgICAgIFF1ZXVlSGFuZGxlclRlc3QsIFNodXRkb3duVGVzdCwgTW9kdWxlTGV2ZWxNaXNjVGVzdCwgQmFzaWNDb25maWdUZXN0LAorICAgICAgICBMb2dnZXJBZGFwdGVyVGVzdCwgTG9nZ2VyVGVzdCwgU01UUEhhbmRsZXJUZXN0LCBGaWxlSGFuZGxlclRlc3QsCisgICAgICAgIFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LCAgTGFzdFJlc29ydFRlc3QsIExvZ1JlY29yZFRlc3QsCisgICAgICAgIEV4Y2VwdGlvblRlc3QsIFN5c0xvZ0hhbmRsZXJUZXN0LCBIVFRQSGFuZGxlclRlc3QsCisgICAgICAgIE5URXZlbnRMb2dIYW5kbGVyVGVzdCwgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdCwKKyAgICAgICAgVW5peFNvY2tldEhhbmRsZXJUZXN0LCBVbml4RGF0YWdyYW1IYW5kbGVyVGVzdCwgVW5peFN5c0xvZ0hhbmRsZXJUZXN0KQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xvbmcucHkgYi9MaWIvdGVzdC90ZXN0X2xvbmcucHkKaW5kZXggNWI5ZTM3YS4uNjJlNjlhOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sb25nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbG9uZy5weQpAQCAtNTgyLDggKzU4Miw2IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuICh4ID4geSkgLSAoeCA8IHkpCiAgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wX18ob3RoZXIpID09IDAKLSAgICAgICAgICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXBfXyhvdGhlcikgIT0gMAogICAgICAgICAgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcF9fKG90aGVyKSA+PSAwCiAgICAgICAgICAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyKToKQEAgLTEyMjcsOCArMTIyNSw1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHZhbHVlID4+IHNoaWZ0KSwgaW50KQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChMb25nVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb25nZXhwLnB5IGIvTGliL3Rlc3QvdGVzdF9sb25nZXhwLnB5CmluZGV4IDFiNDBkMDIuLmY0YzQ2M2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbG9uZ2V4cC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvbmdleHAucHkKQEAgLTEsNSArMSw0IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBjbGFzcyBMb25nRXhwVGV4dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfbG9uZ2V4cChzZWxmKToKQEAgLTcsOCArNiw1IEBACiAgICAgICAgIGwgPSBldmFsKCJbIiArICIyLCIgKiBSRVBTICsgIl0iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsKSwgUkVQUykKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KExvbmdFeHBUZXh0KQotCi1pZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQoraWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbHptYS5weSBiL0xpYi90ZXN0L3Rlc3RfbHptYS5weQppbmRleCAwN2ZhZGJkLi4yZDM5MDk5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2x6bWEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sem1hLnB5CkBAIC0xLDQgKzEsNSBAQAotZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTywgVW5zdXBwb3J0ZWRPcGVyYXRpb24KK2ltcG9ydCBfY29tcHJlc3Npb24KK2Zyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFVuc3VwcG9ydGVkT3BlcmF0aW9uLCBERUZBVUxUX0JVRkZFUl9TSVpFCiBpbXBvcnQgb3MKIGltcG9ydCBwaWNrbGUKIGltcG9ydCByYW5kb20KQEAgLTEzNSw2ICsxMzYsOTcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGx6ZC5lb2YpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLnVudXNlZF9kYXRhLCBiIiIpCiAKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfY2h1bmtzX21heHNpemUoc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBtYXhfbGVuZ3RoID0gMTAwCisgICAgICAgIG91dCA9IFtdCisKKyAgICAgICAgIyBGZWVkIGZpcnN0IGhhbGYgdGhlIGlucHV0CisgICAgICAgIGxlbl8gPSBsZW4oQ09NUFJFU1NFRF9YWikgLy8gMgorICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFpbOmxlbl9dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9sZW5ndGg9bWF4X2xlbmd0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobHpkLm5lZWRzX2lucHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihvdXRbLTFdKSwgbWF4X2xlbmd0aCkKKworICAgICAgICAjIFJldHJpZXZlIG1vcmUgZGF0YSB3aXRob3V0IHByb3ZpZGluZyBtb3JlIGlucHV0CisgICAgICAgIG91dC5hcHBlbmQobHpkLmRlY29tcHJlc3MoYicnLCBtYXhfbGVuZ3RoPW1heF9sZW5ndGgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGx6ZC5uZWVkc19pbnB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ob3V0Wy0xXSksIG1heF9sZW5ndGgpCisKKyAgICAgICAgIyBSZXRyaWV2ZSBtb3JlIGRhdGEgd2hpbGUgcHJvdmlkaW5nIG1vcmUgaW5wdXQKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haW2xlbl86XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbGVuZ3RoPW1heF9sZW5ndGgpKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4ob3V0Wy0xXSksIG1heF9sZW5ndGgpCisKKyAgICAgICAgIyBSZXRyaWV2ZSByZW1haW5pbmcgdW5jb21wcmVzc2VkIGRhdGEKKyAgICAgICAgd2hpbGUgbm90IGx6ZC5lb2Y6CisgICAgICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKGInJywgbWF4X2xlbmd0aD1tYXhfbGVuZ3RoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihvdXRbLTFdKSwgbWF4X2xlbmd0aCkKKworICAgICAgICBvdXQgPSBiIiIuam9pbihvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LCBJTlBVVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemQuY2hlY2ssIGx6bWEuQ0hFQ0tfQ1JDNjQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLnVudXNlZF9kYXRhLCBiIiIpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfaW5wdXRidWZfMShzZWxmKToKKyAgICAgICAgIyBUZXN0IHJldXNpbmcgaW5wdXQgYnVmZmVyIGFmdGVyIG1vdmluZyBleGlzdGluZworICAgICAgICAjIGNvbnRlbnRzIHRvIGJlZ2lubmluZworICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgb3V0ID0gW10KKworICAgICAgICAjIENyZWF0ZSBpbnB1dCBidWZmZXIgYW5kIGZpbGwgaXQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haWzoxMDBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9sZW5ndGg9MCksIGInJykKKworICAgICAgICAjIFJldHJpZXZlIHNvbWUgcmVzdWx0cywgZnJlZWluZyBjYXBhY2l0eSBhdCBiZWdpbm5pbmcKKyAgICAgICAgIyBvZiBpbnB1dCBidWZmZXIKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhiJycsIDIpKQorCisgICAgICAgICMgQWRkIG1vcmUgZGF0YSB0aGF0IGZpdHMgaW50byBpbnB1dCBidWZmZXIgYWZ0ZXIKKyAgICAgICAgIyBtb3ZpbmcgZXhpc3RpbmcgZGF0YSB0byBiZWdpbm5pbmcKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haWzEwMDoxMDVdLCAxNSkpCisKKyAgICAgICAgIyBEZWNvbXByZXNzIHJlc3Qgb2YgZGF0YQorICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFpbMTA1Ol0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJy5qb2luKG91dCksIElOUFVUKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX2lucHV0YnVmXzIoc2VsZik6CisgICAgICAgICMgVGVzdCByZXVzaW5nIGlucHV0IGJ1ZmZlciBieSBhcHBlbmRpbmcgZGF0YSBhdCB0aGUKKyAgICAgICAgIyBlbmQgcmlnaHQgYXdheQorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgb3V0ID0gW10KKworICAgICAgICAjIENyZWF0ZSBpbnB1dCBidWZmZXIgYW5kIGVtcHR5IGl0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWls6MjAwXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbGVuZ3RoPTApLCBiJycpCisgICAgICAgIG91dC5hcHBlbmQobHpkLmRlY29tcHJlc3MoYicnKSkKKworICAgICAgICAjIEZpbGwgYnVmZmVyIHdpdGggbmV3IGRhdGEKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haWzIwMDoyODBdLCAyKSkKKworICAgICAgICAjIEFwcGVuZCBzb21lIG1vcmUgZGF0YSwgbm90IGVub3VnaCB0byByZXF1aXJlIHJlc2l6ZQorICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFpbMjgwOjMwMF0sIDIpKQorCisgICAgICAgICMgRGVjb21wcmVzcyByZXN0IG9mIGRhdGEKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haWzMwMDpdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycuam9pbihvdXQpLCBJTlBVVCkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9pbnB1dGJ1Zl8zKHNlbGYpOgorICAgICAgICAjIFRlc3QgcmV1c2luZyBpbnB1dCBidWZmZXIgYWZ0ZXIgZXh0ZW5kaW5nIGl0CisKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIG91dCA9IFtdCisKKyAgICAgICAgIyBDcmVhdGUgYWxtb3N0IGZ1bGwgaW5wdXQgYnVmZmVyCisgICAgICAgIG91dC5hcHBlbmQobHpkLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWls6MjAwXSwgNSkpCisKKyAgICAgICAgIyBBZGQgZXZlbiBtb3JlIGRhdGEgdG8gaXQsIHJlcXVpcmluZyByZXNpemUKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haWzIwMDozMDBdLCA1KSkKKworICAgICAgICAjIERlY29tcHJlc3MgcmVzdCBvZiBkYXRhCisgICAgICAgIG91dC5hcHBlbmQobHpkLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWlszMDA6XSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLmpvaW4ob3V0KSwgSU5QVVQpCisKICAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfdW51c2VkX2RhdGEoc2VsZik6CiAgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQogICAgICAgICBleHRyYSA9IGIiZm9vYmxpYmFyIgpAQCAtNjgxLDEzICs3NzMsMTMgQEAKICAgICBkZWYgdGVzdF9yZWFkX211bHRpc3RyZWFtX2J1ZmZlcl9zaXplX2FsaWduZWQoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGUgY2FzZSB3aGVyZSBhIHN0cmVhbSBib3VuZGFyeSBjb2luY2lkZXMgd2l0aCB0aGUgZW5kCiAgICAgICAgICMgb2YgdGhlIHJhdyByZWFkIGJ1ZmZlci4KLSAgICAgICAgc2F2ZWRfYnVmZmVyX3NpemUgPSBsem1hLl9CVUZGRVJfU0laRQotICAgICAgICBsem1hLl9CVUZGRVJfU0laRSA9IGxlbihDT01QUkVTU0VEX1haKQorICAgICAgICBzYXZlZF9idWZmZXJfc2l6ZSA9IF9jb21wcmVzc2lvbi5CVUZGRVJfU0laRQorICAgICAgICBfY29tcHJlc3Npb24uQlVGRkVSX1NJWkUgPSBsZW4oQ09NUFJFU1NFRF9YWikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKiAgNSkpIGFzIGY6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQgKiA1KQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgbHptYS5fQlVGRkVSX1NJWkUgPSBzYXZlZF9idWZmZXJfc2l6ZQorICAgICAgICAgICAgX2NvbXByZXNzaW9uLkJVRkZFUl9TSVpFID0gc2F2ZWRfYnVmZmVyX3NpemUKIAogICAgIGRlZiB0ZXN0X3JlYWRfdHJhaWxpbmdfanVuayhzZWxmKToKICAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKyBDT01QUkVTU0VEX0JPR1VTKSkgYXMgZjoKQEAgLTczOCw3ICs4MzAsNyBAQAogICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkKQogICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYucmVhZCwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZi5yZWFkLCBmbG9hdCgpKQogCiAgICAgZGVmIHRlc3RfcmVhZF9iYWRfZGF0YShzZWxmKToKICAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfQk9HVVMpKSBhcyBmOgpAQCAtODM0LDYgKzkyNiwxNyBAQAogICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChmLnJlYWRsaW5lcygpLCBsaW5lcykKIAorICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfbGltaXRlZChzZWxmKToKKyAgICAgICAgIiIiRGVjb21wcmVzc2VkIGRhdGEgYnVmZmVyaW5nIHNob3VsZCBiZSBsaW1pdGVkIiIiCisgICAgICAgIGJvbWIgPSBsem1hLmNvbXByZXNzKGJ5dGVzKGludCgyZTYpKSwgcHJlc2V0PTYpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsZW4oYm9tYiksIF9jb21wcmVzc2lvbi5CVUZGRVJfU0laRSkKKworICAgICAgICBkZWNvbXAgPSBMWk1BRmlsZShCeXRlc0lPKGJvbWIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKDEpLCBkZWNvbXAucmVhZCgxKSkKKyAgICAgICAgbWF4X2RlY29tcCA9IDEgKyBERUZBVUxUX0JVRkZFUl9TSVpFCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGRlY29tcC5fYnVmZmVyLnJhdy50ZWxsKCksIG1heF9kZWNvbXAsCisgICAgICAgICAgICAiRXhjZXNzaXZlIGFtb3VudCBvZiBkYXRhIHdhcyBkZWNvbXByZXNzZWQiKQorCiAgICAgZGVmIHRlc3Rfd3JpdGUoc2VsZik6CiAgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGRzdDoKICAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAidyIpIGFzIGY6CkBAIC05OTksNyArMTEwMiw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnNlZWssIDApCiAgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2VlaywgMCwgMykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2VlaywgOSwgKCkpCisgICAgICAgICAgICAjIGlvLkJ1ZmZlcmVkUmVhZGVyIHJhaXNlcyBUeXBlRXJyb3IgaW5zdGVhZCBvZiBWYWx1ZUVycm9yCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVHlwZUVycm9yLCBWYWx1ZUVycm9yKSwgZi5zZWVrLCA5LCAoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZi5zZWVrLCBOb25lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLnNlZWssIGIiZGVycCIpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weQppbmRleCAyMmY4NDkxLi44MGJlYzdhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21hY3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5CkBAIC0xNDIsNiArMTQyLDggQEAKIGNsYXNzIE1hY0NvbW1vblRlc3QodGVzdF9nZW5lcmljcGF0aC5Db21tb25UZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgcGF0aG1vZHVsZSA9IG1hY3BhdGgKIAorICAgIHRlc3RfcmVscGF0aF9lcnJvcnMgPSBOb25lCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weQppbmRleCBhNGNkMDljLi4yMmIyZmNjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21haWxjYXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5CkBAIC0yMTMsOSArMjEzLDUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGNhcC5maW5kbWF0Y2goKmNbMF0sICoqY1sxXSksIGNbMl0pCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoSGVscGVyRnVuY3Rpb25UZXN0LCBHZXRjYXBzVGVzdCwgRmluZG1hdGNoVGVzdCkKLQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkgYi9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKaW5kZXggOTAzZTEyYy4uYzdkZWY5YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQpAQCAtMTkzLDcgKzE5Myw3IEBACiAgICAgICAgIGhlYWQgPSBsYXN0ID0gW10KICAgICAgICAgIyBUaGUgbWF4IHN0YWNrIGRlcHRoIHNob3VsZCBtYXRjaCB0aGUgdmFsdWUgaW4gUHl0aG9uL21hcnNoYWwuYy4KICAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnIGFuZCBoYXNhdHRyKHN5cywgJ2dldHRvdGFscmVmY291bnQnKToKLSAgICAgICAgICAgIE1BWF9NQVJTSEFMX1NUQUNLX0RFUFRIID0gMTUwMAorICAgICAgICAgICAgTUFYX01BUlNIQUxfU1RBQ0tfREVQVEggPSAxMDAwCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBNQVhfTUFSU0hBTF9TVEFDS19ERVBUSCA9IDIwMDAKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoTUFYX01BUlNIQUxfU1RBQ0tfREVQVEggLSAyKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbWF0aC5weQppbmRleCA0OGY4NGJhLi42YzdiOTlkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21hdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYXRoLnB5CkBAIC0xNzUsNiArMTc1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgZmxhZ3MKICAgICAgICAgICAgICAgICAgICkKIAorIyBDbGFzcyBwcm92aWRpbmcgYW4gX19pbmRleF9fIG1ldGhvZC4KK2NsYXNzIE15SW5kZXhhYmxlKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCisKKyAgICBkZWYgX19pbmRleF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQorCiBjbGFzcyBNYXRoVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIGZ0ZXN0KHNlbGYsIG5hbWUsIHZhbHVlLCBleHBlY3RlZCk6CkBAIC00MjIsOSArNDMwLDE3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGguZmFjdG9yaWFsKGkpLCBweV9mYWN0b3JpYWwoaSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguZmFjdG9yaWFsLCAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5mYWN0b3JpYWwsIC0xLjApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguZmFjdG9yaWFsLCAtMTAqKjEwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5mYWN0b3JpYWwsIC0xZTEwMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5mYWN0b3JpYWwsIG1hdGgucGkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIG1hdGguZmFjdG9yaWFsLCBzeXMubWF4c2l6ZSsxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtYXRoLmZhY3RvcmlhbCwgMTBlMTAwKQorCisgICAgIyBPdGhlciBpbXBsZW1lbnRhdGlvbnMgbWF5IHBsYWNlIGRpZmZlcmVudCB1cHBlciBib3VuZHMuCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RGYWN0b3JpYWxIdWdlSW5wdXRzKHNlbGYpOgorICAgICAgICAjIEN1cnJlbnRseSByYWlzZXMgVmFsdWVFcnJvciBmb3IgaW5wdXRzIHRoYXQgYXJlIHRvbyBsYXJnZQorICAgICAgICAjIHRvIGZpdCBpbnRvIGEgQyBsb25nLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtYXRoLmZhY3RvcmlhbCwgMTAqKjEwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbWF0aC5mYWN0b3JpYWwsIDFlMTAwKQogCiAgICAgZGVmIHRlc3RGbG9vcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmZsb29yKQpAQCAtNTg3LDYgKzYwMyw0OSBAQAogICAgICAgICAgICAgcyA9IG1zdW0odmFscykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXN1bSh2YWxzKSwgbWF0aC5mc3VtKHZhbHMpKQogCisgICAgZGVmIHRlc3RHY2Qoc2VsZik6CisgICAgICAgIGdjZCA9IG1hdGguZ2NkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKDAsIDApLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgxLCAwKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoLTEsIDApLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgwLCAxKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoMCwgLTEpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCg3LCAxKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoNywgLTEpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgtMjMsIDE1KSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoMTIwLCA4NCksIDEyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCg4NCwgLTEyMCksIDEyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgxMjE2MzQyNjgzNTU3NjAxNTM1NTA2MzExNzEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MzY1MjI2ODE4NDkxMTAxMjQ2MTY0NTg3ODQpLCAzMikKKyAgICAgICAgYyA9IDY1MjU2MAorICAgICAgICB4ID0gNDM0NjEwNDU2NTcwMzk5OTAyMzc4ODgwNjc5MjMzMDk4ODE5MDE5ODUzMjI5NDcwMjg2OTk0MzY3ODM2NjAwNTY2CisgICAgICAgIHkgPSAxMDY0NTAyMjQ1ODI1MTE1MzI3NzU0ODQ3MjQ0OTE0OTIxNTUzOTc3CisgICAgICAgIGEgPSB4ICogYworICAgICAgICBiID0geSAqIGMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoYSwgYiksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKGIsIGEpLCBjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgtYSwgYiksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKGIsIC1hKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoYSwgLWIpLCBjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgtYiwgYSksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKC1hLCAtYiksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKC1iLCAtYSksIGMpCisgICAgICAgIGMgPSA1NzY1NTkyMzA4NzE2NTQ5NTk4MTYxMzA1NTE4ODQ4NTY5MTIwMDMxNDE0NDY3ODE2NDY2MDI3OTAyMTY0MDY4NzQKKyAgICAgICAgYSA9IHggKiBjCisgICAgICAgIGIgPSB5ICogYworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZChhLCBiKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoYiwgYSksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKC1hLCBiKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoYiwgLWEpLCBjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZChhLCAtYiksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKC1iLCBhKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoLWEsIC1iKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoLWIsIC1hKSwgYykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdjZCwgMTIwLjAsIDg0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdjZCwgMTIwLCA4NC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZChNeUluZGV4YWJsZSgxMjApLCBNeUluZGV4YWJsZSg4NCkpLCAxMikKKwogICAgIGRlZiB0ZXN0SHlwb3Qoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5oeXBvdCkKICAgICAgICAgc2VsZi5mdGVzdCgnaHlwb3QoMCwwKScsIG1hdGguaHlwb3QoMCwwKSwgMCkKQEAgLTk3NSw2ICsxMDM0LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0aC5pc2luZigwLikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0aC5pc2luZigxLikpCiAKKyAgICBAcmVxdWlyZXNfSUVFRV83NTQKKyAgICBkZWYgdGVzdF9uYW5fY29uc3RhbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGgubmFuKSkKKworICAgIEByZXF1aXJlc19JRUVFXzc1NAorICAgIGRlZiB0ZXN0X2luZl9jb25zdGFudChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNpbmYobWF0aC5pbmYpKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobWF0aC5pbmYsIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmluZiwgZmxvYXQoImluZiIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC1tYXRoLmluZiwgZmxvYXQoIi1pbmYiKSkKKwogICAgICMgUkVEX0ZMQUcgMTYtT2N0LTIwMDAgVGltCiAgICAgIyBXaGlsZSAyLjAgaXMgbW9yZSBjb25zaXN0ZW50IGFib3V0IGV4Y2VwdGlvbnMgdGhhbiBwcmV2aW91cyByZWxlYXNlcywgaXQKICAgICAjIHN0aWxsIGZhaWxzIHRoaXMgcGFydCBvZiB0aGUgdGVzdCBvbiBzb21lIHBsYXRmb3Jtcy4gIEZvciBub3csIHdlIG9ubHkKQEAgLTEwOTYsMTAgKzExNjYsMTMxIEBACiAgICAgICAgICAgICAgICAgICAgICAgJ1xuICAnLmpvaW4oZmFpbHVyZXMpKQogCiAKK2NsYXNzIElzQ2xvc2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgaXNjbG9zZSA9IG1hdGguaXNjbG9zZSAjIHN1YmxjYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRoaXMKKworICAgIGRlZiBhc3NlcnRJc0Nsb3NlKHNlbGYsIGEsIGIsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlzY2xvc2UoYSwgYiwgKmFyZ3MsICoqa3dhcmdzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iJXMgYW5kICVzIHNob3VsZCBiZSBjbG9zZSEiICUgKGEsIGIpKQorCisgICAgZGVmIGFzc2VydElzTm90Q2xvc2Uoc2VsZiwgYSwgYiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlzY2xvc2UoYSwgYiwgKmFyZ3MsICoqa3dhcmdzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9IiVzIGFuZCAlcyBzaG91bGQgbm90IGJlIGNsb3NlISIgJSAoYSwgYikpCisKKyAgICBkZWYgYXNzZXJ0QWxsQ2xvc2Uoc2VsZiwgZXhhbXBsZXMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGZvciBhLCBiIGluIGV4YW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0Nsb3NlKGEsIGIsICphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBhc3NlcnRBbGxOb3RDbG9zZShzZWxmLCBleGFtcGxlcywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgZm9yIGEsIGIgaW4gZXhhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Q2xvc2UoYSwgYiwgKmFyZ3MsICoqa3dhcmdzKQorCisgICAgZGVmIHRlc3RfbmVnYXRpdmVfdG9sZXJhbmNlcyhzZWxmKToKKyAgICAgICAgIyBWYWx1ZUVycm9yIHNob3VsZCBiZSByYWlzZWQgaWYgZWl0aGVyIHRvbGVyYW5jZSBpcyBsZXNzIHRoYW4gemVybworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0Nsb3NlKDEsIDEsIHJlbF90b2w9LTFlLTEwMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNDbG9zZSgxLCAxLCByZWxfdG9sPTFlLTEwMCwgYWJzX3RvbD0tMWUxMCkKKworICAgIGRlZiB0ZXN0X2lkZW50aWNhbChzZWxmKToKKyAgICAgICAgIyBpZGVudGljYWwgdmFsdWVzIG11c3QgdGVzdCBhcyBjbG9zZQorICAgICAgICBpZGVudGljYWxfZXhhbXBsZXMgPSBbKDIuMCwgMi4wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLjFlMjAwLCAwLjFlMjAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxLjEyM2UtMzAwLCAxLjEyM2UtMzAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMjM0NSwgMTIzNDUuMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMC4wLCAtMC4wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgzNDU2NzgsIDM0NTY3OCldCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UoaWRlbnRpY2FsX2V4YW1wbGVzLCByZWxfdG9sPTAuMCwgYWJzX3RvbD0wLjApCisKKyAgICBkZWYgdGVzdF9laWdodF9kZWNpbWFsX3BsYWNlcyhzZWxmKToKKyAgICAgICAgIyBleGFtcGxlcyB0aGF0IGFyZSBjbG9zZSB0byAxZS04LCBidXQgbm90IDFlLTkKKyAgICAgICAgZWlnaHRfZGVjaW1hbF9wbGFjZXNfZXhhbXBsZXMgPSBbKDFlOCwgMWU4ICsgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMWUtOCwgLTEuMDAwMDAwMDA5ZS04KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEuMTIzNDU2NzgsIDEuMTIzNDU2NzkpXQorICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKGVpZ2h0X2RlY2ltYWxfcGxhY2VzX2V4YW1wbGVzLCByZWxfdG9sPTFlLTgpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsTm90Q2xvc2UoZWlnaHRfZGVjaW1hbF9wbGFjZXNfZXhhbXBsZXMsIHJlbF90b2w9MWUtOSkKKworICAgIGRlZiB0ZXN0X25lYXJfemVybyhzZWxmKToKKyAgICAgICAgIyB2YWx1ZXMgY2xvc2UgdG8gemVybworICAgICAgICBuZWFyX3plcm9fZXhhbXBsZXMgPSBbKDFlLTksIDAuMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTFlLTksIDAuMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTFlLTE1MCwgMC4wKV0KKyAgICAgICAgIyB0aGVzZSBzaG91bGQgbm90IGJlIGNsb3NlIHRvIGFueSByZWxfdG9sCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsTm90Q2xvc2UobmVhcl96ZXJvX2V4YW1wbGVzLCByZWxfdG9sPTAuOSkKKyAgICAgICAgIyB0aGVzZSBzaG91bGQgYmUgY2xvc2UgdG8gYWJzX3RvbD0xZS04CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UobmVhcl96ZXJvX2V4YW1wbGVzLCBhYnNfdG9sPTFlLTgpCisKKyAgICBkZWYgdGVzdF9pZGVudGljYWxfaW5maW5pdGUoc2VsZik6CisgICAgICAgICMgdGhlc2UgYXJlIGNsb3NlIHJlZ2FyZGxlc3Mgb2YgdG9sZXJhbmNlIC0tIGkuZS4gdGhleSBhcmUgZXF1YWwKKyAgICAgICAgc2VsZi5hc3NlcnRJc0Nsb3NlKElORiwgSU5GKQorICAgICAgICBzZWxmLmFzc2VydElzQ2xvc2UoSU5GLCBJTkYsIGFic190b2w9MC4wKQorICAgICAgICBzZWxmLmFzc2VydElzQ2xvc2UoTklORiwgTklORikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0Nsb3NlKE5JTkYsIE5JTkYsIGFic190b2w9MC4wKQorCisgICAgZGVmIHRlc3RfaW5mX25pbmZfbmFuKHNlbGYpOgorICAgICAgICAjIHRoZXNlIHNob3VsZCBuZXZlciBiZSBjbG9zZSAoZm9sbG93aW5nIElFRUUgNzU0IHJ1bGVzIGZvciBlcXVhbGl0eSkKKyAgICAgICAgbm90X2Nsb3NlX2V4YW1wbGVzID0gWyhOQU4sIE5BTiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTkFOLCAxZS0xMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDFlLTEwMCwgTkFOKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJTkYsIE5BTiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTkFOLCBJTkYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKElORiwgTklORiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSU5GLCAxLjApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEuMCwgSU5GKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJTkYsIDFlMzA4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxZTMwOCwgSU5GKV0KKyAgICAgICAgIyB1c2UgbGFyZ2VzdCByZWFzb25hYmxlIHRvbGVyYW5jZQorICAgICAgICBzZWxmLmFzc2VydEFsbE5vdENsb3NlKG5vdF9jbG9zZV9leGFtcGxlcywgYWJzX3RvbD0wLjk5OTk5OTk5OTk5OTk5OSkKKworICAgIGRlZiB0ZXN0X3plcm9fdG9sZXJhbmNlKHNlbGYpOgorICAgICAgICAjIHRlc3Qgd2l0aCB6ZXJvIHRvbGVyYW5jZQorICAgICAgICB6ZXJvX3RvbGVyYW5jZV9jbG9zZV9leGFtcGxlcyA9IFsoMS4wLCAxLjApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTMuNCwgLTMuNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMWUtMzAwLCAtMWUtMzAwKV0KKyAgICAgICAgc2VsZi5hc3NlcnRBbGxDbG9zZSh6ZXJvX3RvbGVyYW5jZV9jbG9zZV9leGFtcGxlcywgcmVsX3RvbD0wLjApCisKKyAgICAgICAgemVyb190b2xlcmFuY2Vfbm90X2Nsb3NlX2V4YW1wbGVzID0gWygxLjAsIDEuMDAwMDAwMDAwMDAwMDAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLjk5OTk5OTk5OTk5OTk5LCAxLjApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEuMGUyMDAsIC45OTk5OTk5OTk5OTk5OTllMjAwKV0KKyAgICAgICAgc2VsZi5hc3NlcnRBbGxOb3RDbG9zZSh6ZXJvX3RvbGVyYW5jZV9ub3RfY2xvc2VfZXhhbXBsZXMsIHJlbF90b2w9MC4wKQorCisgICAgZGVmIHRlc3RfYXNzeW1ldHJ5KHNlbGYpOgorICAgICAgICAjIHRlc3QgdGhlIGFzc3ltZXRyeSBleGFtcGxlIGZyb20gUEVQIDQ4NQorICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKFsoOSwgMTApLCAoMTAsIDkpXSwgcmVsX3RvbD0wLjEpCisKKyAgICBkZWYgdGVzdF9pbnRlZ2VycyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IHdpdGggaW50ZWdlciB2YWx1ZXMKKyAgICAgICAgaW50ZWdlcl9leGFtcGxlcyA9IFsoMTAwMDAwMDAxLCAxMDAwMDAwMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMjM0NTY3ODksIDEyMzQ1Njc4OCldCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxDbG9zZShpbnRlZ2VyX2V4YW1wbGVzLCByZWxfdG9sPTFlLTgpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsTm90Q2xvc2UoaW50ZWdlcl9leGFtcGxlcywgcmVsX3RvbD0xZS05KQorCisgICAgZGVmIHRlc3RfZGVjaW1hbHMoc2VsZik6CisgICAgICAgICMgdGVzdCB3aXRoIERlY2ltYWwgdmFsdWVzCisgICAgICAgIGZyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbAorCisgICAgICAgIGRlY2ltYWxfZXhhbXBsZXMgPSBbKERlY2ltYWwoJzEuMDAwMDAwMDEnKSwgRGVjaW1hbCgnMS4wJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWNpbWFsKCcxLjAwMDAwMDAxZS0yMCcpLCBEZWNpbWFsKCcxLjBlLTIwJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWNpbWFsKCcxLjAwMDAwMDAxZS0xMDAnKSwgRGVjaW1hbCgnMS4wZS0xMDAnKSldCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UoZGVjaW1hbF9leGFtcGxlcywgcmVsX3RvbD0xZS04KQorICAgICAgICBzZWxmLmFzc2VydEFsbE5vdENsb3NlKGRlY2ltYWxfZXhhbXBsZXMsIHJlbF90b2w9MWUtOSkKKworICAgIGRlZiB0ZXN0X2ZyYWN0aW9ucyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IHdpdGggRnJhY3Rpb24gdmFsdWVzCisgICAgICAgIGZyb20gZnJhY3Rpb25zIGltcG9ydCBGcmFjdGlvbgorCisgICAgICAgICMgY291bGQgdXNlIHNvbWUgbW9yZSBleGFtcGxlcyBoZXJlIQorICAgICAgICBmcmFjdGlvbl9leGFtcGxlcyA9IFsoRnJhY3Rpb24oMSwgMTAwMDAwMDAwKSArIDEsIEZyYWN0aW9uKDEpKV0KKyAgICAgICAgc2VsZi5hc3NlcnRBbGxDbG9zZShmcmFjdGlvbl9leGFtcGxlcywgcmVsX3RvbD0xZS04KQorICAgICAgICBzZWxmLmFzc2VydEFsbE5vdENsb3NlKGZyYWN0aW9uX2V4YW1wbGVzLCByZWxfdG9sPTFlLTkpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIGZyb20gZG9jdGVzdCBpbXBvcnQgRG9jRmlsZVN1aXRlCiAgICAgc3VpdGUgPSB1bml0dGVzdC5UZXN0U3VpdGUoKQogICAgIHN1aXRlLmFkZFRlc3QodW5pdHRlc3QubWFrZVN1aXRlKE1hdGhUZXN0cykpCisgICAgc3VpdGUuYWRkVGVzdCh1bml0dGVzdC5tYWtlU3VpdGUoSXNDbG9zZVRlc3RzKSkKICAgICBzdWl0ZS5hZGRUZXN0KERvY0ZpbGVTdWl0ZSgiaWVlZTc1NC50eHQiKSkKICAgICBydW5fdW5pdHRlc3Qoc3VpdGUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5aW8ucHkgYi9MaWIvdGVzdC90ZXN0X21lbW9yeWlvLnB5CmluZGV4IDdjZTk1YjkuLjQ0ZDY2YzMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5aW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tZW1vcnlpby5weQpAQCAtOSw2ICs5LDcgQEAKIGltcG9ydCBpbwogaW1wb3J0IF9weWlvIGFzIHB5aW8KIGltcG9ydCBwaWNrbGUKK2ltcG9ydCBzeXMKIAogY2xhc3MgTWVtb3J5U2Vla1Rlc3RNaXhpbjoKIApAQCAtMTY1LDYgKzE2NiwxMCBAQAogICAgICAgICBtZW1pby5zZWVrKDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtaW8ucmVhZChOb25lKSwgYnVmKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1lbWlvLnJlYWQsICcnKQorICAgICAgICBtZW1pby5zZWVrKGxlbihidWYpICsgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1pby5yZWFkKDEpLCBzZWxmLkVPRikKKyAgICAgICAgbWVtaW8uc2VlayhsZW4oYnVmKSArIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtaW8ucmVhZCgpLCBzZWxmLkVPRikKICAgICAgICAgbWVtaW8uY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZW1pby5yZWFkKQogCkBAIC0xODQsNiArMTg5LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1pby5yZWFkbGluZSgtMSksIGJ1ZikKICAgICAgICAgbWVtaW8uc2VlaygwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbWlvLnJlYWRsaW5lKDApLCBzZWxmLkVPRikKKyAgICAgICAgIyBJc3N1ZSAjMjQ5ODk6IEJ1ZmZlciBvdmVycmVhZAorICAgICAgICBtZW1pby5zZWVrKGxlbihidWYpICogMiArIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtaW8ucmVhZGxpbmUoKSwgc2VsZi5FT0YpCiAKICAgICAgICAgYnVmID0gc2VsZi5idWZ0eXBlKCIxMjM0NTY3ODkwXG4iKQogICAgICAgICBtZW1pbyA9IHNlbGYuaW9jbGFzcygoYnVmICogMylbOi0xXSkKQEAgLTIxNiw2ICsyMjQsOSBAQAogICAgICAgICBtZW1pby5zZWVrKDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtaW8ucmVhZGxpbmVzKE5vbmUpLCBbYnVmXSAqIDEwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1lbWlvLnJlYWRsaW5lcywgJycpCisgICAgICAgICMgSXNzdWUgIzI0OTg5OiBCdWZmZXIgb3ZlcnJlYWQKKyAgICAgICAgbWVtaW8uc2VlayhsZW4oYnVmKSAqIDEwICsgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1pby5yZWFkbGluZXMoKSwgW10pCiAgICAgICAgIG1lbWlvLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWVtaW8ucmVhZGxpbmVzKQogCkBAIC0yMzcsNiArMjQ4LDkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZSwgYnVmKQogICAgICAgICAgICAgaSArPSAxCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSwgMTApCisgICAgICAgICMgSXNzdWUgIzI0OTg5OiBCdWZmZXIgb3ZlcnJlYWQKKyAgICAgICAgbWVtaW8uc2VlayhsZW4oYnVmKSAqIDEwICsgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1lbWlvKSwgW10pCiAgICAgICAgIG1lbWlvID0gc2VsZi5pb2NsYXNzKGJ1ZiAqIDIpCiAgICAgICAgIG1lbWlvLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWVtaW8uX19uZXh0X18pCkBAIC03MTgsMTIgKzczMiw1NiBAQAogCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc2l6ZW9mKHNlbGYpOgotICAgICAgICBiYXNlc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJ1Aybk4yUG4nKQorICAgICAgICBiYXNlc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJ1AybjJQbicpCiAgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19zaXplb2YKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmplY3QuX19zaXplb2ZfXyhpby5CeXRlc0lPKCkpLCBiYXNlc2l6ZSkKICAgICAgICAgY2hlY2soaW8uQnl0ZXNJTygpLCBiYXNlc2l6ZSApCi0gICAgICAgIGNoZWNrKGlvLkJ5dGVzSU8oYidhJyksIGJhc2VzaXplICsgMSArIDEgKQotICAgICAgICBjaGVjayhpby5CeXRlc0lPKGInYScgKiAxMDAwKSwgYmFzZXNpemUgKyAxMDAwICsgMSApCisgICAgICAgIGNoZWNrKGlvLkJ5dGVzSU8oYidhJyAqIDEwMDApLCBiYXNlc2l6ZSArIHN5cy5nZXRzaXplb2YoYidhJyAqIDEwMDApKQorCisgICAgIyBWYXJpb3VzIHRlc3RzIG9mIGNvcHktb24td3JpdGUgYmVoYXZpb3VyIGZvciBCeXRlc0lPLgorCisgICAgZGVmIF90ZXN0X2Nvd19tdXRhdGlvbihzZWxmLCBtdXRhdGlvbik6CisgICAgICAgICMgQ29tbW9uIGNvZGUgZm9yIGFsbCBCeXRlc0lPIGNvcHktb24td3JpdGUgbXV0YXRpb24gdGVzdHMuCisgICAgICAgIGltbSA9IGInICcgKiAxMDI0CisgICAgICAgIG9sZF9yYyA9IHN5cy5nZXRyZWZjb3VudChpbW0pCisgICAgICAgIG1lbWlvID0gc2VsZi5pb2NsYXNzKGltbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0cmVmY291bnQoaW1tKSwgb2xkX3JjICsgMSkKKyAgICAgICAgbXV0YXRpb24obWVtaW8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHJlZmNvdW50KGltbSksIG9sZF9yYykKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2Nvd190cnVuY2F0ZShzZWxmKToKKyAgICAgICAgIyBFbnN1cmUgdHJ1bmNhdGUgY2F1c2VzIGEgY29weS4KKyAgICAgICAgZGVmIG11dGF0aW9uKG1lbWlvKToKKyAgICAgICAgICAgIG1lbWlvLnRydW5jYXRlKDEpCisgICAgICAgIHNlbGYuX3Rlc3RfY293X211dGF0aW9uKG11dGF0aW9uKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfY293X3dyaXRlKHNlbGYpOgorICAgICAgICAjIEVuc3VyZSB3cml0ZSB0aGF0IHdvdWxkIG5vdCBjYXVzZSBhIHJlc2l6ZSBzdGlsbCByZXN1bHRzIGluIGEgY29weS4KKyAgICAgICAgZGVmIG11dGF0aW9uKG1lbWlvKToKKyAgICAgICAgICAgIG1lbWlvLnNlZWsoMCkKKyAgICAgICAgICAgIG1lbWlvLndyaXRlKGInZm9vJykKKyAgICAgICAgc2VsZi5fdGVzdF9jb3dfbXV0YXRpb24obXV0YXRpb24pCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9jb3dfc2V0c3RhdGUoc2VsZik6CisgICAgICAgICMgX19zZXRzdGF0ZV9fIHNob3VsZCBjYXVzZSBidWZmZXIgdG8gYmUgcmVsZWFzZWQuCisgICAgICAgIG1lbWlvID0gc2VsZi5pb2NsYXNzKGInZm9vb29vbycpCisgICAgICAgIHN0YXRlID0gbWVtaW8uX19nZXRzdGF0ZV9fKCkKKyAgICAgICAgZGVmIG11dGF0aW9uKG1lbWlvKToKKyAgICAgICAgICAgIG1lbWlvLl9fc2V0c3RhdGVfXyhzdGF0ZSkKKyAgICAgICAgc2VsZi5fdGVzdF9jb3dfbXV0YXRpb24obXV0YXRpb24pCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9jb3dfbXV0YWJsZShzZWxmKToKKyAgICAgICAgIyBCeXRlc0lPIHNob3VsZCBhY2NlcHQgb25seSBCeXRlcyBmb3IgY29weS1vbi13cml0ZSBzaGFyaW5nLCBzaW5jZQorICAgICAgICAjIGFyYml0cmFyeSBidWZmZXItZXhwb3J0aW5nIG9iamVjdHMgbGlrZSBieXRlYXJyYXkoKSBhcmVuJ3QgZ3VhcmFudGVlZAorICAgICAgICAjIHRvIGJlIGltbXV0YWJsZS4KKyAgICAgICAgYmEgPSBieXRlYXJyYXkoMTAyNCkKKyAgICAgICAgb2xkX3JjID0gc3lzLmdldHJlZmNvdW50KGJhKQorICAgICAgICBtZW1pbyA9IHNlbGYuaW9jbGFzcyhiYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0cmVmY291bnQoYmEpLCBvbGRfcmMpCiAKIGNsYXNzIENTdHJpbmdJT1Rlc3QoUHlTdHJpbmdJT1Rlc3QpOgogICAgIGlvY2xhc3MgPSBpby5TdHJpbmdJTwpAQCAtNzgzLDEwICs4NDEsNSBAQAogICAgICAgICAgICAgcGFzcwogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0cyA9IFtQeUJ5dGVzSU9UZXN0LCBQeVN0cmluZ0lPVGVzdCwgQ0J5dGVzSU9UZXN0LCBDU3RyaW5nSU9UZXN0LAotICAgICAgICAgICAgIFB5U3RyaW5nSU9QaWNrbGVUZXN0LCBDU3RyaW5nSU9QaWNrbGVUZXN0XQotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0cykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tZW1vcnl2aWV3LnB5IGIvTGliL3Rlc3QvdGVzdF9tZW1vcnl2aWV3LnB5CmluZGV4IDRiYzMxMzMuLmRkZDViOWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5dmlldy5weQorKysgYi9MaWIvdGVzdC90ZXN0X21lbW9yeXZpZXcucHkKQEAgLTExLDYgKzExLDggQEAKIGltcG9ydCB3ZWFrcmVmCiBpbXBvcnQgYXJyYXkKIGltcG9ydCBpbworaW1wb3J0IGNvcHkKK2ltcG9ydCBwaWNrbGUKIAogCiBjbGFzcyBBYnN0cmFjdE1lbW9yeVRlc3RzOgpAQCAtMzY5LDEyICszNzEsMTIgQEAKICAgICAgICAgZCA9IG1lbW9yeXZpZXcoYikKIAogICAgICAgICBkZWwgYgotIAorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY1swXSwgMjU2KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbMF0sIDI1NikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZvcm1hdCwgIkgiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuZm9ybWF0LCAiSCIpCi0gCisKICAgICAgICAgXyA9IG0uY2FzdCgnSScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY1swXSwgMjU2KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbMF0sIDI1NikKQEAgLTQ5Miw4ICs0OTQsNDQgQEAKICAgICBwYXNzCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCitjbGFzcyBPdGhlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2N0eXBlc19jYXN0KHNlbGYpOgorICAgICAgICAjIElzc3VlIDE1OTQ0OiBBbGxvdyBhbGwgc291cmNlIGZvcm1hdHMgd2hlbiBjYXN0aW5nIHRvIGJ5dGVzLgorICAgICAgICBjdHlwZXMgPSB0ZXN0LnN1cHBvcnQuaW1wb3J0X21vZHVsZSgiY3R5cGVzIikKKyAgICAgICAgcDYgPSBieXRlcyhjdHlwZXMuY19kb3VibGUoMC42KSkKKworICAgICAgICBkID0gY3R5cGVzLmNfZG91YmxlKCkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZCkuY2FzdCgiQiIpCisgICAgICAgIG1bOjJdID0gcDZbOjJdCisgICAgICAgIG1bMjpdID0gcDZbMjpdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC52YWx1ZSwgMC42KQorCisgICAgICAgIGZvciBmb3JtYXQgaW4gIkJiYyI6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChmb3JtYXQpOgorICAgICAgICAgICAgICAgIGQgPSBjdHlwZXMuY19kb3VibGUoKQorICAgICAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGQpLmNhc3QoZm9ybWF0KQorICAgICAgICAgICAgICAgIG1bOjJdID0gbWVtb3J5dmlldyhwNikuY2FzdChmb3JtYXQpWzoyXQorICAgICAgICAgICAgICAgIG1bMjpdID0gbWVtb3J5dmlldyhwNikuY2FzdChmb3JtYXQpWzI6XQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC52YWx1ZSwgMC42KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19oZXgoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzk5NTE6IG1lbW9yeXZpZXcuaGV4KCkgc2VnZmF1bHRzIHdpdGggbm9uLWNvbnRpZ3VvdXMgYnVmZmVycy4KKyAgICAgICAgeCA9IGInMCcgKiAyMDAwMDAKKyAgICAgICAgbTEgPSBtZW1vcnl2aWV3KHgpCisgICAgICAgIG0yID0gbTFbOjotMV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMi5oZXgoKSwgJzMwJyAqIDIwMDAwMCkKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGInYWJjJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY29weS5jb3B5KG0pCisKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGInYWJjJykKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgcGlja2xlLmR1bXBzKG0sIHByb3RvKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5IGIvTGliL3Rlc3QvdGVzdF9taW1ldHlwZXMucHkKaW5kZXggMGI1MzAzMi4uNjg1NjU5MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9taW1ldHlwZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9taW1ldHlwZXMucHkKQEAgLTEwMSwxMSArMTAxLDUgQEAKICAgICAgICAgZXEoc2VsZi5kYi5ndWVzc190eXBlKCJpbWFnZS5qcGciKSwgKCJpbWFnZS9qcGVnIiwgTm9uZSkpCiAgICAgICAgIGVxKHNlbGYuZGIuZ3Vlc3NfdHlwZSgiaW1hZ2UucG5nIiksICgiaW1hZ2UvcG5nIiwgTm9uZSkpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChNaW1lVHlwZXNUZXN0Q2FzZSwKLSAgICAgICAgV2luMzJNaW1lVHlwZXNUZXN0Q2FzZQotICAgICAgICApCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9taW5pZG9tLnB5IGIvTGliL3Rlc3QvdGVzdF9taW5pZG9tLnB5CmluZGV4IGY2NGY0MzguLmVlOGMwNDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWluaWRvbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X21pbmlkb20ucHkKQEAgLTIsNyArMiw3IEBACiAKIGltcG9ydCBjb3B5CiBpbXBvcnQgcGlja2xlCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBmaW5kZmlsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlCiBpbXBvcnQgdW5pdHRlc3QKIAogaW1wb3J0IHhtbC5kb20ubWluaWRvbQpAQCAtNTcsNiArNTcsMjEgQEAKICAgICAgICAgdCA9IG5vZGUud2hvbGVUZXh0CiAgICAgICAgIHNlbGYuY29uZmlybSh0ID09IHMsICJsb29raW5nIGZvciAlciwgZm91bmQgJXIiICUgKHMsIHQpKQogCisgICAgZGVmIHRlc3REb2N1bWVudEFzeW5jQXR0cihzZWxmKToKKyAgICAgICAgZG9jID0gRG9jdW1lbnQoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRvYy5hc3luY18pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnZXRhdHRyKGRvYywgJ2FzeW5jJywgVHJ1ZSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2V0YXR0cihkb2MsICdhc3luYycsIFRydWUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdldGF0dHIoZG9jLCAnYXN5bmMnLCBGYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkb2MuYXN5bmNfKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoRG9jdW1lbnQuYXN5bmNfKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2V0YXR0cihEb2N1bWVudCwgJ2FzeW5jJywgVHJ1ZSkpCisKICAgICBkZWYgdGVzdFBhcnNlRnJvbUJpbmFyeUZpbGUoc2VsZik6CiAgICAgICAgIHdpdGggb3Blbih0c3RmaWxlLCAncmInKSBhcyBmaWxlOgogICAgICAgICAgICAgZG9tID0gcGFyc2UoZmlsZSkKQEAgLTE1NTUsOCArMTU3MCw1IEBACiAgICAgICAgIHBpID0gZG9jLmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbigieSIsICJ6IikKICAgICAgICAgcGkubm9kZVZhbHVlID0gImNyYXNoIgogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KE1pbmlkb21UZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21tYXAucHkgYi9MaWIvdGVzdC90ZXN0X21tYXAucHkKaW5kZXggYWQ5M2E1OS4uMGYyNTc0MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQpAQCAtMjgyLDYgKzI4Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5maW5kKGInb25lJywgMSksIDgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5maW5kKGInb25lJywgMSwgLTEpLCA4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZmluZChiJ29uZScsIDEsIC0yKSwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5maW5kKGJ5dGVhcnJheShiJ29uZScpKSwgMCkKIAogCiAgICAgZGVmIHRlc3RfcmZpbmQoc2VsZik6CkBAIC0zMDAsNiArMzAxLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJmaW5kKGInb25lJywgMCwgLTIpLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmZpbmQoYidvbmUnLCAxLCAtMSksIDgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZmluZChiJ29uZScsIDEsIC0yKSwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZmluZChieXRlYXJyYXkoYidvbmUnKSksIDgpCiAKIAogICAgIGRlZiB0ZXN0X2RvdWJsZV9jbG9zZShzZWxmKToKQEAgLTYwMSw4ICs2MDMsMTAgQEAKICAgICAgICAgbS53cml0ZShiImJhciIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50ZWxsKCksIDYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVs6XSwgYiIwMTJiYXI2Nzg5IikKLSAgICAgICAgbS5zZWVrKDgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0ud3JpdGUsIGIiYmFyIikKKyAgICAgICAgbS53cml0ZShieXRlYXJyYXkoYiJiYXoiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRlbGwoKSwgOSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzpdLCBiIjAxMmJhcmJhejkiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLndyaXRlLCBiImJhIikKIAogICAgIGRlZiB0ZXN0X25vbl9hc2NpaV9ieXRlKHNlbGYpOgogICAgICAgICBmb3IgYiBpbiAoMTI5LCAyMDAsIDI1NSk6ICMgPiAxMjgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbW9kdWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9tb2R1bGUucHkKaW5kZXggMTIzMDI5My4uNDhhYjBiNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tb2R1bGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tb2R1bGUucHkKQEAgLTEsOCArMSw4IEBACiAjIFRlc3QgdGhlIG1vZHVsZSB0eXBlCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3ZWFrcmVmCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBnY19jb2xsZWN0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGdjX2NvbGxlY3QKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKIAogaW1wb3J0IHN5cwogTW9kdWxlVHlwZSA9IHR5cGUoc3lzKQpAQCAtMzAsNiArMzAsMjIgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uX19kb2NfXywgTW9kdWxlVHlwZS5fX2RvY19fKQogCisgICAgZGVmIHRlc3RfdW5pbnRpYWxpemVkX21pc3NpbmdfZ2V0YXR0cihzZWxmKToKKyAgICAgICAgIyBJc3N1ZSA4Mjk3CisgICAgICAgICMgdGVzdCB0aGUgdGV4dCBpbiB0aGUgQXR0cmlidXRlRXJyb3Igb2YgYW4gdW5pbml0aWFsaXplZCBtb2R1bGUKKyAgICAgICAgZm9vID0gTW9kdWxlVHlwZS5fX25ld19fKE1vZHVsZVR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsICJtb2R1bGUgaGFzIG5vIGF0dHJpYnV0ZSAnbm90X2hlcmUnIiwKKyAgICAgICAgICAgICAgICBnZXRhdHRyLCBmb28sICJub3RfaGVyZSIpCisKKyAgICBkZWYgdGVzdF9taXNzaW5nX2dldGF0dHIoc2VsZik6CisgICAgICAgICMgSXNzdWUgODI5NworICAgICAgICAjIHRlc3QgdGhlIHRleHQgaW4gdGhlIEF0dHJpYnV0ZUVycm9yCisgICAgICAgIGZvbyA9IE1vZHVsZVR5cGUoImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsICJtb2R1bGUgJ2ZvbycgaGFzIG5vIGF0dHJpYnV0ZSAnbm90X2hlcmUnIiwKKyAgICAgICAgICAgICAgICBnZXRhdHRyLCBmb28sICJub3RfaGVyZSIpCisKICAgICBkZWYgdGVzdF9ub19kb2NzdHJpbmcoc2VsZik6CiAgICAgICAgICMgUmVndWxhcmx5IGluaXRpYWxpemVkIG1vZHVsZSwgbm8gZG9jc3RyaW5nCiAgICAgICAgIGZvbyA9IE1vZHVsZVR5cGUoImZvbyIpCkBAIC0yMTEsMTIgKzIyNywxNiBAQAogICAgICAgICAgICAgYiJsZW4gPSBsZW4iLAogICAgICAgICAgICAgYiJzaHV0aWwucm10cmVlID0gcm10cmVlIn0pCiAKKyAgICBkZWYgdGVzdF9kZXNjcmlwdG9yX2Vycm9yc19wcm9wb2dhdGUoc2VsZik6CisgICAgICAgIGNsYXNzIERlc2NyOgorICAgICAgICAgICAgZGVmIF9fZ2V0X18oc2VsZiwgbywgdCk6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisgICAgICAgIGNsYXNzIE0oTW9kdWxlVHlwZSk6CisgICAgICAgICAgICBtZWxvbiA9IERlc2NyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBnZXRhdHRyLCBNKCJteW1vZCIpLCAibWVsb24iKQorCiAgICAgIyBmcm96ZW4gYW5kIG5hbWVzcGFjZSBtb2R1bGUgcmVwcnMgYXJlIHRlc3RlZCBpbiBpbXBvcnRsaWIuCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChNb2R1bGVUZXN0cykKLQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21zaWxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfbXNpbGliLnB5CmluZGV4IGNjZGFlYzcuLjhlZjMzNGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXNpbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXNpbGliLnB5CkBAIC0xLDcgKzEsNyBAQAogIiIiIFRlc3Qgc3VpdGUgZm9yIHRoZSBjb2RlIGluIG1zaWxpYiAiIiIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBpbXBvcnRfbW9kdWxlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZQogbXNpbGliID0gaW1wb3J0X21vZHVsZSgnbXNpbGliJykKIAogY2xhc3MgVGVzdF9tYWtlX2lkKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTM5LDggKzM5LDUgQEAKICAgICAgICAgICAgIG1zaWxpYi5tYWtlX2lkKCIuc1x4ODJvPyorcnQiKSwgIl8uc19vX19fcnQiKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX21haW5faGFuZGxpbmcucHkgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19tYWluX2hhbmRsaW5nLnB5CmluZGV4IGRlNWY3ODIuLjUyMjczZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX21haW5faGFuZGxpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZy5weQpAQCAtMTMsMTAgKzEzLDkgQEAKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgcHlfY29tcGlsZQogCi1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgKAorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgKAogICAgIG1ha2VfcGtnLCBtYWtlX3NjcmlwdCwgbWFrZV96aXBfcGtnLCBtYWtlX3ppcF9zY3JpcHQsCi0gICAgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlLCB0ZW1wX2RpciwKLSAgICBzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uKQorICAgIGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZSwgc3Bhd25fcHl0aG9uLCBraWxsX3B5dGhvbikKIAogIyBMb29rIHVwIHdoaWNoIHN0YXJ0IG1ldGhvZHMgYXJlIGF2YWlsYWJsZSB0byB0ZXN0CiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCkBAIC0xNTcsMTIgKzE1NiwxMiBAQAogICAgICAgICBzZWxmLl9jaGVja19vdXRwdXQoc2NyaXB0X25hbWUsIHJjLCBvdXQsIGVycikKIAogICAgIGRlZiB0ZXN0X2Jhc2ljX3NjcmlwdChzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdzY3JpcHQnKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHNjcmlwdF9uYW1lKQogCiAgICAgZGVmIHRlc3RfYmFzaWNfc2NyaXB0X25vX3N1ZmZpeChzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdzY3JpcHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbWl0X3N1ZmZpeD1UcnVlKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHNjcmlwdF9uYW1lKQpAQCAtMTczLDcgKzE3Miw3IEBACiAgICAgICAgICMgYSB3b3JrYXJvdW5kIGZvciB0aGF0IGNhc2UKICAgICAgICAgIyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2lweXRob24vaXB5dGhvbi9pc3N1ZXMvNDY5OAogICAgICAgICBzb3VyY2UgPSB0ZXN0X3NvdXJjZV9tYWluX3NraXBwZWRfaW5fY2hpbGRyZW4KLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdpcHl0aG9uJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNvdXJjZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfbmFtZSkKQEAgLTE4Myw3ICsxODIsNyBAQAogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHNjcmlwdF9ub19zdWZmaXgpCiAKICAgICBkZWYgdGVzdF9zY3JpcHRfY29tcGlsZWQoc2VsZik6Ci0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0JykKICAgICAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShzY3JpcHRfbmFtZSwgZG9yYWlzZT1UcnVlKQogICAgICAgICAgICAgb3MucmVtb3ZlKHNjcmlwdF9uYW1lKQpAQCAtMTkyLDE0ICsxOTEsMTQgQEAKIAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeShzZWxmKToKICAgICAgICAgc291cmNlID0gc2VsZi5tYWluX2luX2NoaWxkcmVuX3NvdXJjZQotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ19fbWFpbl9fJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNvdXJjZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfZGlyKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5X2NvbXBpbGVkKHNlbGYpOgogICAgICAgICBzb3VyY2UgPSBzZWxmLm1haW5faW5fY2hpbGRyZW5fc291cmNlCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnX19tYWluX18nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c291cmNlKQogICAgICAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKHNjcmlwdF9uYW1lLCBkb3JhaXNlPVRydWUpCkBAIC0yMDksNyArMjA4LDcgQEAKIAogICAgIGRlZiB0ZXN0X3ppcGZpbGUoc2VsZik6CiAgICAgICAgIHNvdXJjZSA9IHNlbGYubWFpbl9pbl9jaGlsZHJlbl9zb3VyY2UKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zb3VyY2UpCiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBtYWtlX3ppcF9zY3JpcHQoc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgc2NyaXB0X25hbWUpCkBAIC0yMTcsNyArMjE2LDcgQEAKIAogICAgIGRlZiB0ZXN0X3ppcGZpbGVfY29tcGlsZWQoc2VsZik6CiAgICAgICAgIHNvdXJjZSA9IHNlbGYubWFpbl9pbl9jaGlsZHJlbl9zb3VyY2UKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zb3VyY2UpCiAgICAgICAgICAgICBjb21waWxlZF9uYW1lID0gcHlfY29tcGlsZS5jb21waWxlKHNjcmlwdF9uYW1lLCBkb3JhaXNlPVRydWUpCkBAIC0yMjUsNyArMjI0LDcgQEAKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdCh6aXBfbmFtZSkKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9pbl9wYWNrYWdlKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHBrZ19kaXIgPSBvcy5wYXRoLmpvaW4oc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHBrZ19kaXIsICdjaGVja19zaWJsaW5nJykKQEAgLTIzNCwyMCArMjMzLDIwIEBACiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQobGF1bmNoX25hbWUpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fcGFja2FnZV9pbl96aXBmaWxlKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IF9tYWtlX3Rlc3RfemlwX3BrZyhzY3JpcHRfZGlyLCAndGVzdF96aXAnLCAndGVzdF9wa2cnLCAnc2NyaXB0JykKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnLnNjcmlwdCcsIHppcF9uYW1lKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlX2luX3N1YnBhY2thZ2VfaW5femlwZmlsZShzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBfbWFrZV90ZXN0X3ppcF9wa2coc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgJ3Rlc3RfcGtnJywgJ3NjcmlwdCcsIGRlcHRoPTIpCiAgICAgICAgICAgICBsYXVuY2hfbmFtZSA9IF9tYWtlX2xhdW5jaF9zY3JpcHQoc2NyaXB0X2RpciwgJ2xhdW5jaCcsICd0ZXN0X3BrZy50ZXN0X3BrZy5zY3JpcHQnLCB6aXBfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSkKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6CiAgICAgICAgIHNvdXJjZSA9IHNlbGYubWFpbl9pbl9jaGlsZHJlbl9zb3VyY2UKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCiAgICAgICAgICAgICBtYWtlX3BrZyhwa2dfZGlyKQogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChwa2dfZGlyLCAnX19tYWluX18nLApAQCAtMjU3LDcgKzI1Niw3IEBACiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX2NvbXBpbGVkKHNlbGYpOgogICAgICAgICBzb3VyY2UgPSBzZWxmLm1haW5faW5fY2hpbGRyZW5fc291cmNlCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgcGtnX2RpciA9IG9zLnBhdGguam9pbihzY3JpcHRfZGlyLCAndGVzdF9wa2cnKQogICAgICAgICAgICAgbWFrZV9wa2cocGtnX2RpcikKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQocGtnX2RpciwgJ19fbWFpbl9fJywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbmlzLnB5IGIvTGliL3Rlc3QvdGVzdF9uaXMucHkKaW5kZXggYTNhM2MyNi4uMzg3YTRlNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9uaXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9uaXMucHkKQEAgLTM2LDggKzM2LDUgQEAKICAgICAgICAgICAgIGlmIGRvbmU6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KE5pc1Rlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X25vcm1hbGl6YXRpb24ucHkgYi9MaWIvdGVzdC90ZXN0X25vcm1hbGl6YXRpb24ucHkKaW5kZXggNWRhYzVkYi4uMzBmYTYxMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ub3JtYWxpemF0aW9uLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfbm9ybWFsaXphdGlvbi5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIG9wZW5fdXJscmVzb3VyY2UKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBvcGVuX3VybHJlc291cmNlCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSBodHRwLmNsaWVudCBpbXBvcnQgSFRUUEV4Y2VwdGlvbgpAQCAtOTcsOCArOTcsNSBAQAogICAgICAgICBub3JtYWxpemUoJ05GQycsICdcdWQ1NWNcdWFlMDAnKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoTm9ybWFsaXphdGlvblRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkKaW5kZXggZGFjZGRkZS4uNTgwZjIwMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkKQEAgLTMzMCw2ICszMzAsNzUgQEAKICAgICAgICAgdGVzdGVyKCdudHBhdGgucmVscGF0aCgiL2EvYiIsICIvYS9iIiknLCAnLicpCiAgICAgICAgIHRlc3RlcignbnRwYXRoLnJlbHBhdGgoImM6L2ZvbyIsICJDOi9GT08iKScsICcuJykKIAorICAgIGRlZiB0ZXN0X2NvbW1vbnBhdGgoc2VsZik6CisgICAgICAgIGRlZiBjaGVjayhwYXRocywgZXhwZWN0ZWQpOgorICAgICAgICAgICAgdGVzdGVyKCgnbnRwYXRoLmNvbW1vbnBhdGgoJXIpJyAlIHBhdGhzKS5yZXBsYWNlKCdcXFxcJywgJ1xcJyksCisgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisgICAgICAgIGRlZiBjaGVja19lcnJvcihleGMsIHBhdGhzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGV4YywgbnRwYXRoLmNvbW1vbnBhdGgsIHBhdGhzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXhjLCBudHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcy5mc2VuY29kZShwKSBmb3IgcCBpbiBwYXRoc10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbnRwYXRoLmNvbW1vbnBhdGgsIFtdKQorICAgICAgICBjaGVja19lcnJvcihWYWx1ZUVycm9yLCBbJ0M6XFxQcm9ncmFtIEZpbGVzJywgJ1Byb2dyYW0gRmlsZXMnXSkKKyAgICAgICAgY2hlY2tfZXJyb3IoVmFsdWVFcnJvciwgWydDOlxcUHJvZ3JhbSBGaWxlcycsICdDOlByb2dyYW0gRmlsZXMnXSkKKyAgICAgICAgY2hlY2tfZXJyb3IoVmFsdWVFcnJvciwgWydcXFByb2dyYW0gRmlsZXMnLCAnUHJvZ3JhbSBGaWxlcyddKQorICAgICAgICBjaGVja19lcnJvcihWYWx1ZUVycm9yLCBbJ1Byb2dyYW0gRmlsZXMnLCAnQzpcXFByb2dyYW0gRmlsZXMnXSkKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlcyddLCAnQzpcXFByb2dyYW0gRmlsZXMnKQorICAgICAgICBjaGVjayhbJ0M6XFxQcm9ncmFtIEZpbGVzJywgJ0M6XFxQcm9ncmFtIEZpbGVzJ10sICdDOlxcUHJvZ3JhbSBGaWxlcycpCisgICAgICAgIGNoZWNrKFsnQzpcXFByb2dyYW0gRmlsZXNcXCcsICdDOlxcUHJvZ3JhbSBGaWxlcyddLAorICAgICAgICAgICAgICAnQzpcXFByb2dyYW0gRmlsZXMnKQorICAgICAgICBjaGVjayhbJ0M6XFxQcm9ncmFtIEZpbGVzXFwnLCAnQzpcXFByb2dyYW0gRmlsZXNcXCddLAorICAgICAgICAgICAgICAnQzpcXFByb2dyYW0gRmlsZXMnKQorICAgICAgICBjaGVjayhbJ0M6XFxcXFByb2dyYW0gRmlsZXMnLCAnQzpcXFByb2dyYW0gRmlsZXNcXFxcJ10sCisgICAgICAgICAgICAgICdDOlxcUHJvZ3JhbSBGaWxlcycpCisgICAgICAgIGNoZWNrKFsnQzpcXC5cXFByb2dyYW0gRmlsZXMnLCAnQzpcXFByb2dyYW0gRmlsZXNcXC4nXSwKKyAgICAgICAgICAgICAgJ0M6XFxQcm9ncmFtIEZpbGVzJykKKyAgICAgICAgY2hlY2soWydDOlxcJywgJ0M6XFxiaW4nXSwgJ0M6XFwnKQorICAgICAgICBjaGVjayhbJ0M6XFxQcm9ncmFtIEZpbGVzJywgJ0M6XFxiaW4nXSwgJ0M6XFwnKQorICAgICAgICBjaGVjayhbJ0M6XFxQcm9ncmFtIEZpbGVzJywgJ0M6XFxQcm9ncmFtIEZpbGVzXFxCYXInXSwKKyAgICAgICAgICAgICAgJ0M6XFxQcm9ncmFtIEZpbGVzJykKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlc1xcRm9vJywgJ0M6XFxQcm9ncmFtIEZpbGVzXFxCYXInXSwKKyAgICAgICAgICAgICAgJ0M6XFxQcm9ncmFtIEZpbGVzJykKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlcycsICdDOlxcUHJvamVjdHMnXSwgJ0M6XFwnKQorICAgICAgICBjaGVjayhbJ0M6XFxQcm9ncmFtIEZpbGVzXFwnLCAnQzpcXFByb2plY3RzJ10sICdDOlxcJykKKworICAgICAgICBjaGVjayhbJ0M6XFxQcm9ncmFtIEZpbGVzXFxGb28nLCAnQzovUHJvZ3JhbSBGaWxlcy9CYXInXSwKKyAgICAgICAgICAgICAgJ0M6XFxQcm9ncmFtIEZpbGVzJykKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlc1xcRm9vJywgJ2M6L3Byb2dyYW0gZmlsZXMvYmFyJ10sCisgICAgICAgICAgICAgICdDOlxcUHJvZ3JhbSBGaWxlcycpCisgICAgICAgIGNoZWNrKFsnYzovcHJvZ3JhbSBmaWxlcy9iYXInLCAnQzpcXFByb2dyYW0gRmlsZXNcXEZvbyddLAorICAgICAgICAgICAgICAnYzpcXHByb2dyYW0gZmlsZXMnKQorCisgICAgICAgIGNoZWNrX2Vycm9yKFZhbHVlRXJyb3IsIFsnQzpcXFByb2dyYW0gRmlsZXMnLCAnRDpcXFByb2dyYW0gRmlsZXMnXSkKKworICAgICAgICBjaGVjayhbJ3NwYW0nXSwgJ3NwYW0nKQorICAgICAgICBjaGVjayhbJ3NwYW0nLCAnc3BhbSddLCAnc3BhbScpCisgICAgICAgIGNoZWNrKFsnc3BhbScsICdhbG90J10sICcnKQorICAgICAgICBjaGVjayhbJ2FuZFxcamFtJywgJ2FuZFxcc3BhbSddLCAnYW5kJykKKyAgICAgICAgY2hlY2soWydhbmRcXFxcamFtJywgJ2FuZFxcc3BhbVxcXFwnXSwgJ2FuZCcpCisgICAgICAgIGNoZWNrKFsnYW5kXFwuXFxqYW0nLCAnLlxcYW5kXFxzcGFtJ10sICdhbmQnKQorICAgICAgICBjaGVjayhbJ2FuZFxcamFtJywgJ2FuZFxcc3BhbScsICdhbG90J10sICcnKQorICAgICAgICBjaGVjayhbJ2FuZFxcamFtJywgJ2FuZFxcc3BhbScsICdhbmQnXSwgJ2FuZCcpCisgICAgICAgIGNoZWNrKFsnQzphbmRcXGphbScsICdDOmFuZFxcc3BhbSddLCAnQzphbmQnKQorCisgICAgICAgIGNoZWNrKFsnJ10sICcnKQorICAgICAgICBjaGVjayhbJycsICdzcGFtXFxhbG90J10sICcnKQorICAgICAgICBjaGVja19lcnJvcihWYWx1ZUVycm9yLCBbJycsICdcXHNwYW1cXGFsb3QnXSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG50cGF0aC5jb21tb25wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYidDOlxcUHJvZ3JhbSBGaWxlcycsICdDOlxcUHJvZ3JhbSBGaWxlc1xcRm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbnRwYXRoLmNvbW1vbnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtiJ0M6XFxQcm9ncmFtIEZpbGVzJywgJ1Byb2dyYW0gRmlsZXNcXEZvbyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG50cGF0aC5jb21tb25wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYidQcm9ncmFtIEZpbGVzJywgJ0M6XFxQcm9ncmFtIEZpbGVzXFxGb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBudHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWydDOlxcUHJvZ3JhbSBGaWxlcycsIGInQzpcXFByb2dyYW0gRmlsZXNcXEZvbyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG50cGF0aC5jb21tb25wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0M6XFxQcm9ncmFtIEZpbGVzJywgYidQcm9ncmFtIEZpbGVzXFxGb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBudHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWydQcm9ncmFtIEZpbGVzJywgYidDOlxcUHJvZ3JhbSBGaWxlc1xcRm9vJ10pCisKICAgICBkZWYgdGVzdF9zYW1lb3BlbmZpbGUoc2VsZik6CiAgICAgICAgIHdpdGggVGVtcG9yYXJ5RmlsZSgpIGFzIHRmMSwgVGVtcG9yYXJ5RmlsZSgpIGFzIHRmMjoKICAgICAgICAgICAgICMgTWFrZSBzdXJlIHRoZSBzYW1lIGZpbGUgaXMgcmVhbGx5IHRoZSBzYW1lCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X251bWVyaWNfdG93ZXIucHkgYi9MaWIvdGVzdC90ZXN0X251bWVyaWNfdG93ZXIucHkKaW5kZXggMzQyM2Q0ZS4uYzU0ZGVkYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9udW1lcmljX3Rvd2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbnVtZXJpY190b3dlci5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCBtYXRoCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3BlcmF0b3IKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIAogZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsIGFzIEQKIGZyb20gZnJhY3Rpb25zIGltcG9ydCBGcmFjdGlvbiBhcyBGCkBAIC0xOTksOCArMTk4LDUgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wLCB2LCB6KQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoSGFzaFRlc3QsIENvbXBhcmlzb25UZXN0KQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29wY29kZXMucHkgYi9MaWIvdGVzdC90ZXN0X29wY29kZXMucHkKaW5kZXggZjUxMGJhYy4uNmVmOTNkOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcGNvZGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3Bjb2Rlcy5weQpAQCAtMSw2ICsxLDUgQEAKICMgUHl0aG9uIHRlc3Qgc2V0IC0tIHBhcnQgMiwgb3Bjb2RlcwogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiBpbXBvcnQgdW5pdHRlc3QKIAogY2xhc3MgT3Bjb2RlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xMDUsOCArMTA0LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNeVN0cmluZygpICUgMywgNDIpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChPcGNvZGVUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29wZW5wdHkucHkgYi9MaWIvdGVzdC90ZXN0X29wZW5wdHkucHkKaW5kZXggNDc4NTEwNy4uM2Y0NmE2MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcGVucHR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3BlbnB0eS5weQpAQCAtMSw3ICsxLDYgQEAKICMgVGVzdCB0byBzZWUgaWYgb3BlbnB0eSB3b3Jrcy4gKEJ1dCBkb24ndCB3b3JyeSBpZiBpdCBpc24ndCBhdmFpbGFibGUuKQogCiBpbXBvcnQgb3MsIHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIGlmIG5vdCBoYXNhdHRyKG9zLCAib3BlbnB0eSIpOgogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJvcy5vcGVucHR5KCkgbm90IGF2YWlsYWJsZS4iKQpAQCAtMTgsOCArMTcsNSBAQAogICAgICAgICBvcy53cml0ZShzbGF2ZSwgYidQaW5nIScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucmVhZChtYXN0ZXIsIDEwMjQpLCBiJ1BpbmchJykKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChPcGVucHR5VGVzdCkKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcGVyYXRvci5weSBiL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkKaW5kZXggYWI1OGE5OC4uZGE5YzhlZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcGVyYXRvci5weQorKysgYi9MaWIvdGVzdC90ZXN0X29wZXJhdG9yLnB5CkBAIC0xLDQgKzEsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgcGlja2xlCitpbXBvcnQgc3lzCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCkBAIC0yMDMsNiArMjA1LDE1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubXVsLCBOb25lLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IubXVsKDUsIDIpID09IDEwKQogCisgICAgZGVmIHRlc3RfbWF0bXVsKHNlbGYpOgorICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubWF0bXVsKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm1hdG11bCwgNDIsIDQyKQorICAgICAgICBjbGFzcyBNOgorICAgICAgICAgICAgZGVmIF9fbWF0bXVsX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBvdGhlciAtIDEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNKCkgQCA0MiwgNDEpCisKICAgICBkZWYgdGVzdF9uZWcoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5uZWcpCkBAIC0zODcsNiArMzk4LDcgQEAKICAgICBkZWYgdGVzdF9tZXRob2RjYWxsZXIoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5tZXRob2RjYWxsZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubWV0aG9kY2FsbGVyLCAxMikKICAgICAgICAgY2xhc3MgQToKICAgICAgICAgICAgIGRlZiBmb28oc2VsZiwgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3NbMF0gKyBhcmdzWzFdCkBAIC00MTYsNiArNDI4LDcgQEAKICAgICAgICAgICAgIGRlZiBfX2lsc2hpZnRfXyAgKHNlbGYsIG90aGVyKTogcmV0dXJuICJpbHNoaWZ0IgogICAgICAgICAgICAgZGVmIF9faW1vZF9fICAgICAoc2VsZiwgb3RoZXIpOiByZXR1cm4gImltb2QiCiAgICAgICAgICAgICBkZWYgX19pbXVsX18gICAgIChzZWxmLCBvdGhlcik6IHJldHVybiAiaW11bCIKKyAgICAgICAgICAgIGRlZiBfX2ltYXRtdWxfXyAgKHNlbGYsIG90aGVyKTogcmV0dXJuICJpbWF0bXVsIgogICAgICAgICAgICAgZGVmIF9faW9yX18gICAgICAoc2VsZiwgb3RoZXIpOiByZXR1cm4gImlvciIKICAgICAgICAgICAgIGRlZiBfX2lwb3dfXyAgICAgKHNlbGYsIG90aGVyKTogcmV0dXJuICJpcG93IgogICAgICAgICAgICAgZGVmIF9faXJzaGlmdF9fICAoc2VsZiwgb3RoZXIpOiByZXR1cm4gImlyc2hpZnQiCkBAIC00MzAsNiArNDQzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5pbHNoaWZ0ICAoYywgNSksICJpbHNoaWZ0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5pbW9kICAgICAoYywgNSksICJpbW9kIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5pbXVsICAgICAoYywgNSksICJpbXVsIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5pbWF0bXVsICAoYywgNSksICJpbWF0bXVsIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5pb3IgICAgICAoYywgNSksICJpb3IiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmlwb3cgICAgIChjLCA1KSwgImlwb3ciKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmlyc2hpZnQgIChjLCA1KSwgImlyc2hpZnQiKQpAQCAtNDgwLDUgKzQ5NCwxMDcgQEAKIGNsYXNzIENPcGVyYXRvclRlc3RDYXNlKE9wZXJhdG9yVGVzdENhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBjX29wZXJhdG9yCiAKKworY2xhc3MgT3BlcmF0b3JQaWNrbGVUZXN0Q2FzZToKKyAgICBkZWYgY29weShzZWxmLCBvYmosIHByb3RvKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfaXRlbShzeXMubW9kdWxlcywgJ29wZXJhdG9yJywgc2VsZi5tb2R1bGUpOgorICAgICAgICAgICAgcGlja2xlZCA9IHBpY2tsZS5kdW1wcyhvYmosIHByb3RvKQorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9pdGVtKHN5cy5tb2R1bGVzLCAnb3BlcmF0b3InLCBzZWxmLm1vZHVsZTIpOgorICAgICAgICAgICAgcmV0dXJuIHBpY2tsZS5sb2FkcyhwaWNrbGVkKQorCisgICAgZGVmIHRlc3RfYXR0cmdldHRlcihzZWxmKToKKyAgICAgICAgYXR0cmdldHRlciA9IHNlbGYubW9kdWxlLmF0dHJnZXR0ZXIKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYSA9IEEoKQorICAgICAgICBhLnggPSAnWCcKKyAgICAgICAgYS55ID0gJ1knCisgICAgICAgIGEueiA9ICdaJworICAgICAgICBhLnQgPSBBKCkKKyAgICAgICAgYS50LnUgPSBBKCkKKyAgICAgICAgYS50LnUudiA9ICdWJworICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvKToKKyAgICAgICAgICAgICAgICBmID0gYXR0cmdldHRlcigneCcpCisgICAgICAgICAgICAgICAgZjIgPSBzZWxmLmNvcHkoZiwgcHJvdG8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYyKSwgcmVwcihmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYyKGEpLCBmKGEpKQorICAgICAgICAgICAgICAgICMgbXVsdGlwbGUgZ2V0cworICAgICAgICAgICAgICAgIGYgPSBhdHRyZ2V0dGVyKCd4JywgJ3knLCAneicpCisgICAgICAgICAgICAgICAgZjIgPSBzZWxmLmNvcHkoZiwgcHJvdG8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYyKSwgcmVwcihmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYyKGEpLCBmKGEpKQorICAgICAgICAgICAgICAgICMgcmVjdXJzaXZlIGdldHMKKyAgICAgICAgICAgICAgICBmID0gYXR0cmdldHRlcigndC51LnYnKQorICAgICAgICAgICAgICAgIGYyID0gc2VsZi5jb3B5KGYsIHByb3RvKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmMiksIHJlcHIoZikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMihhKSwgZihhKSkKKworICAgIGRlZiB0ZXN0X2l0ZW1nZXR0ZXIoc2VsZik6CisgICAgICAgIGl0ZW1nZXR0ZXIgPSBzZWxmLm1vZHVsZS5pdGVtZ2V0dGVyCisgICAgICAgIGEgPSAnQUJDREUnCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8pOgorICAgICAgICAgICAgICAgIGYgPSBpdGVtZ2V0dGVyKDIpCisgICAgICAgICAgICAgICAgZjIgPSBzZWxmLmNvcHkoZiwgcHJvdG8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYyKSwgcmVwcihmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYyKGEpLCBmKGEpKQorICAgICAgICAgICAgICAgICMgbXVsdGlwbGUgZ2V0cworICAgICAgICAgICAgICAgIGYgPSBpdGVtZ2V0dGVyKDIsIDAsIDQpCisgICAgICAgICAgICAgICAgZjIgPSBzZWxmLmNvcHkoZiwgcHJvdG8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYyKSwgcmVwcihmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYyKGEpLCBmKGEpKQorCisgICAgZGVmIHRlc3RfbWV0aG9kY2FsbGVyKHNlbGYpOgorICAgICAgICBtZXRob2RjYWxsZXIgPSBzZWxmLm1vZHVsZS5tZXRob2RjYWxsZXIKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZiwgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3NbMF0gKyBhcmdzWzFdCisgICAgICAgICAgICBkZWYgYmFyKHNlbGYsIGY9NDIpOgorICAgICAgICAgICAgICAgIHJldHVybiBmCisgICAgICAgICAgICBkZWYgYmF6KCphcmdzLCAqKmt3ZHMpOgorICAgICAgICAgICAgICAgIHJldHVybiBrd2RzWyduYW1lJ10sIGt3ZHNbJ3NlbGYnXQorICAgICAgICBhID0gQSgpCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8pOgorICAgICAgICAgICAgICAgIGYgPSBtZXRob2RjYWxsZXIoJ2JhcicpCisgICAgICAgICAgICAgICAgZjIgPSBzZWxmLmNvcHkoZiwgcHJvdG8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYyKSwgcmVwcihmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYyKGEpLCBmKGEpKQorICAgICAgICAgICAgICAgICMgcG9zaXRpb25hbCBhcmdzCisgICAgICAgICAgICAgICAgZiA9IG1ldGhvZGNhbGxlcignZm9vJywgMSwgMikKKyAgICAgICAgICAgICAgICBmMiA9IHNlbGYuY29weShmLCBwcm90bykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZjIpLCByZXByKGYpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZjIoYSksIGYoYSkpCisgICAgICAgICAgICAgICAgIyBrZXl3b3JkIGFyZ3MKKyAgICAgICAgICAgICAgICBmID0gbWV0aG9kY2FsbGVyKCdiYXInLCBmPTUpCisgICAgICAgICAgICAgICAgZjIgPSBzZWxmLmNvcHkoZiwgcHJvdG8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYyKSwgcmVwcihmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYyKGEpLCBmKGEpKQorICAgICAgICAgICAgICAgIGYgPSBtZXRob2RjYWxsZXIoJ2JheicsIHNlbGY9J2VnZ3MnLCBuYW1lPSdzcGFtJykKKyAgICAgICAgICAgICAgICBmMiA9IHNlbGYuY29weShmLCBwcm90bykKKyAgICAgICAgICAgICAgICAjIENhbid0IHRlc3QgcmVwciBjb25zaXN0ZW50bHkgd2l0aCBtdWx0aXBsZSBrZXl3b3JkIGFyZ3MKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYyKGEpLCBmKGEpKQorCitjbGFzcyBQeVB5T3BlcmF0b3JQaWNrbGVUZXN0Q2FzZShPcGVyYXRvclBpY2tsZVRlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kdWxlID0gcHlfb3BlcmF0b3IKKyAgICBtb2R1bGUyID0gcHlfb3BlcmF0b3IKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19vcGVyYXRvciwgJ3JlcXVpcmVzIF9vcGVyYXRvcicpCitjbGFzcyBQeUNPcGVyYXRvclBpY2tsZVRlc3RDYXNlKE9wZXJhdG9yUGlja2xlVGVzdENhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBtb2R1bGUgPSBweV9vcGVyYXRvcgorICAgIG1vZHVsZTIgPSBjX29wZXJhdG9yCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGNfb3BlcmF0b3IsICdyZXF1aXJlcyBfb3BlcmF0b3InKQorY2xhc3MgQ1B5T3BlcmF0b3JQaWNrbGVUZXN0Q2FzZShPcGVyYXRvclBpY2tsZVRlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kdWxlID0gY19vcGVyYXRvcgorICAgIG1vZHVsZTIgPSBweV9vcGVyYXRvcgorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjX29wZXJhdG9yLCAncmVxdWlyZXMgX29wZXJhdG9yJykKK2NsYXNzIENDT3BlcmF0b3JQaWNrbGVUZXN0Q2FzZShPcGVyYXRvclBpY2tsZVRlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kdWxlID0gY19vcGVyYXRvcgorICAgIG1vZHVsZTIgPSBjX29wZXJhdG9yCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3JkZXJlZF9kaWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9vcmRlcmVkX2RpY3QucHkKaW5kZXggNmQzZTMwOS4uOWQ2YzZmZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcmRlcmVkX2RpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcmRlcmVkX2RpY3QucHkKQEAgLTEsMTcgKzEsMzIgQEAKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgY29weQogaW1wb3J0IHBpY2tsZQotZnJvbSByYW5kb20gaW1wb3J0IHNodWZmbGUKK2Zyb20gcmFuZG9tIGltcG9ydCByYW5kcmFuZ2UsIHNodWZmbGUKK2ltcG9ydCBzdHJ1Y3QKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBNdXRhYmxlTWFwcGluZwogZnJvbSB0ZXN0IGltcG9ydCBtYXBwaW5nX3Rlc3RzLCBzdXBwb3J0CiAKIAotY2xhc3MgVGVzdE9yZGVyZWREaWN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKK3B5X2NvbGwgPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoJ2NvbGxlY3Rpb25zJywgYmxvY2tlZD1bJ19jb2xsZWN0aW9ucyddKQorY19jb2xsID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCdjb2xsZWN0aW9ucycsIGZyZXNoPVsnX2NvbGxlY3Rpb25zJ10pCisKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiByZXBsYWNlZF9tb2R1bGUobmFtZSwgcmVwbGFjZW1lbnQpOgorICAgIG9yaWdpbmFsX21vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCisgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSByZXBsYWNlbWVudAorICAgIHRyeToKKyAgICAgICAgeWllbGQKKyAgICBmaW5hbGx5OgorICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG9yaWdpbmFsX21vZHVsZQorCisKK2NsYXNzIE9yZGVyZWREaWN0VGVzdHM6CiAKICAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnYScsIDEpLCAoJ2InLCAyKV0sIE5vbmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0b28gbWFueSBhcmdzCiAgICAgICAgIHBhaXJzID0gWygnYScsIDEpLCAoJ2InLCAyKSwgKCdjJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KV0KQEAgLTM1LDYgKzUwLDcgQEAKICAgICAgICAgICAgIFsoJ2EnLCAxKSwgKCdiJywgMiksICgnYycsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpLCAoJ2cnLCA3KV0pCiAKICAgICBkZWYgdGVzdF91cGRhdGUoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBPcmRlcmVkRGljdCgpLnVwZGF0ZShbKCdhJywgMSksICgnYicsIDIpXSwgTm9uZSkgICAgICAgICAgICAgICAgICAgICAgICAjIHRvbyBtYW55IGFyZ3MKICAgICAgICAgcGFpcnMgPSBbKCdhJywgMSksICgnYicsIDIpLCAoJ2MnLCAzKSwgKCdkJywgNCksICgnZScsIDUpXQpAQCAtNzUsMTEgKzkxLDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgT3JkZXJlZERpY3QoKS51cGRhdGUsICgpLCAoKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBPcmRlcmVkRGljdC51cGRhdGUpCiAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBPcmRlcmVkRGljdCgpLnVwZGF0ZSwgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgT3JkZXJlZERpY3QoKS51cGRhdGUsICgpLCAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBPcmRlcmVkRGljdC51cGRhdGUpCisKKyAgICBkZWYgdGVzdF9mcm9ta2V5cyhzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CisgICAgICAgIG9kID0gT3JkZXJlZERpY3QuZnJvbWtleXMoJ2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5pdGVtcygpKSwgWyhjLCBOb25lKSBmb3IgYyBpbiAnYWJjJ10pCisgICAgICAgIG9kID0gT3JkZXJlZERpY3QuZnJvbWtleXMoJ2FiYycsIHZhbHVlPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5pdGVtcygpKSwgWyhjLCBOb25lKSBmb3IgYyBpbiAnYWJjJ10pCisgICAgICAgIG9kID0gT3JkZXJlZERpY3QuZnJvbWtleXMoJ2FiYycsIHZhbHVlPTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5pdGVtcygpKSwgWyhjLCAwKSBmb3IgYyBpbiAnYWJjJ10pCisKICAgICBkZWYgdGVzdF9hYmMoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoT3JkZXJlZERpY3QoKSwgTXV0YWJsZU1hcHBpbmcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE9yZGVyZWREaWN0LCBNdXRhYmxlTWFwcGluZykpCiAKICAgICBkZWYgdGVzdF9jbGVhcihzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CiAgICAgICAgIHBhaXJzID0gWygnYycsIDEpLCAoJ2InLCAyKSwgKCdhJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNildCiAgICAgICAgIHNodWZmbGUocGFpcnMpCiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QocGFpcnMpCkBAIC04OCw2ICsxMTksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihvZCksIDApCiAKICAgICBkZWYgdGVzdF9kZWxpdGVtKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKICAgICAgICAgcGFpcnMgPSBbKCdjJywgMSksICgnYicsIDIpLCAoJ2EnLCAzKSwgKCdkJywgNCksICgnZScsIDUpLCAoJ2YnLCA2KV0KICAgICAgICAgb2QgPSBPcmRlcmVkRGljdChwYWlycykKICAgICAgICAgZGVsIG9kWydhJ10KQEAgLTk3LDYgKzEyOSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5pdGVtcygpKSwgcGFpcnNbOjJdICsgcGFpcnNbMzpdKQogCiAgICAgZGVmIHRlc3Rfc2V0aXRlbShzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QoWygnZCcsIDEpLCAoJ2InLCAyKSwgKCdjJywgMyksICgnYScsIDQpLCAoJ2UnLCA1KV0pCiAgICAgICAgIG9kWydjJ10gPSAxMCAgICAgICAgICAgIyBleGlzdGluZyBlbGVtZW50CiAgICAgICAgIG9kWydmJ10gPSAyMCAgICAgICAgICAgIyBuZXcgZWxlbWVudApAQCAtMTA0LDYgKzEzNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgWygnZCcsIDEpLCAoJ2InLCAyKSwgKCdjJywgMTApLCAoJ2EnLCA0KSwgKCdlJywgNSksICgnZicsIDIwKV0pCiAKICAgICBkZWYgdGVzdF9pdGVyYXRvcnMoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQogICAgICAgICBzaHVmZmxlKHBhaXJzKQogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KHBhaXJzKQpAQCAtMTEzLDggKzE0Nyw1MSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QuaXRlbXMoKSksIHBhaXJzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmV2ZXJzZWQob2QpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbdFswXSBmb3IgdCBpbiByZXZlcnNlZChwYWlycyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmV2ZXJzZWQob2Qua2V5cygpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgW3RbMF0gZm9yIHQgaW4gcmV2ZXJzZWQocGFpcnMpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJldmVyc2VkKG9kLnZhbHVlcygpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgW3RbMV0gZm9yIHQgaW4gcmV2ZXJzZWQocGFpcnMpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJldmVyc2VkKG9kLml0ZW1zKCkpKSwgbGlzdChyZXZlcnNlZChwYWlycykpKQorCisgICAgZGVmIHRlc3RfZGV0ZWN0X2RlbGV0aW9uX2R1cmluZ19pdGVyYXRpb24oc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAorICAgICAgICBvZCA9IE9yZGVyZWREaWN0LmZyb21rZXlzKCdhYmMnKQorICAgICAgICBpdCA9IGl0ZXIob2QpCisgICAgICAgIGtleSA9IG5leHQoaXQpCisgICAgICAgIGRlbCBvZFtrZXldCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKToKKyAgICAgICAgICAgICMgTm90ZSwgdGhlIGV4YWN0IGV4Y2VwdGlvbiByYWlzZWQgaXMgbm90IGd1YXJhbnRlZWQKKyAgICAgICAgICAgICMgVGhlIG9ubHkgZ3VhcmFudGVlIHRoYXQgdGhlIG5leHQoKSB3aWxsIG5vdCBzdWNjZWVkCisgICAgICAgICAgICBuZXh0KGl0KQorCisgICAgZGVmIHRlc3Rfc29ydGVkX2l0ZXJhdG9ycyhzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ2EnLCAxKSwgKCdiJywgMildLCBOb25lKQorICAgICAgICBwYWlycyA9IFsoJ2EnLCAxKSwgKCdiJywgMiksICgnYycsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSldCisgICAgICAgIG9kID0gT3JkZXJlZERpY3QocGFpcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKG9kKSwgW3RbMF0gZm9yIHQgaW4gcGFpcnNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChvZC5rZXlzKCkpLCBbdFswXSBmb3IgdCBpbiBwYWlyc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKG9kLnZhbHVlcygpKSwgW3RbMV0gZm9yIHQgaW4gcGFpcnNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChvZC5pdGVtcygpKSwgcGFpcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHJldmVyc2VkKG9kKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkKFt0WzBdIGZvciB0IGluIHJldmVyc2VkKHBhaXJzKV0pKQorCisgICAgZGVmIHRlc3RfaXRlcmF0b3JzX2VtcHR5KHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdCgpCisgICAgICAgIGVtcHR5ID0gW10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kKSwgZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5rZXlzKCkpLCBlbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kLnZhbHVlcygpKSwgZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5pdGVtcygpKSwgZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyZXZlcnNlZChvZCkpLCBlbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJldmVyc2VkKG9kLmtleXMoKSkpLCBlbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJldmVyc2VkKG9kLnZhbHVlcygpKSksIGVtcHR5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmV2ZXJzZWQob2QuaXRlbXMoKSkpLCBlbXB0eSkKIAogICAgIGRlZiB0ZXN0X3BvcGl0ZW0oc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQogICAgICAgICBzaHVmZmxlKHBhaXJzKQogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KHBhaXJzKQpAQCAtMTI0LDcgKzIwMSwxOSBAQAogICAgICAgICAgICAgb2QucG9waXRlbSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG9kKSwgMCkKIAorICAgIGRlZiB0ZXN0X3BvcGl0ZW1fbGFzdChzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CisgICAgICAgIHBhaXJzID0gWyhpLCBpKSBmb3IgaSBpbiByYW5nZSgzMCldCisKKyAgICAgICAgb2JqID0gT3JkZXJlZERpY3QocGFpcnMpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDgpOgorICAgICAgICAgICAgb2JqLnBvcGl0ZW0oVHJ1ZSkKKyAgICAgICAgb2JqLnBvcGl0ZW0oVHJ1ZSkKKyAgICAgICAgb2JqLnBvcGl0ZW0obGFzdD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihvYmopLCAyMCkKKwogICAgIGRlZiB0ZXN0X3BvcChzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CiAgICAgICAgIHBhaXJzID0gWygnYycsIDEpLCAoJ2InLCAyKSwgKCdhJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNildCiAgICAgICAgIHNodWZmbGUocGFpcnMpCiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QocGFpcnMpCkBAIC0xNDUsMTAgKzIzNCwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucG9wKCdiJywgNSksIDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5wb3AoJ2EnLCA2KSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnBvcCgnYScsIDYpLCA2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucG9wKCdhJywgZGVmYXVsdD02KSwgNikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CiAgICAgICAgICAgICBtLnBvcCgnYScpCiAKICAgICBkZWYgdGVzdF9lcXVhbGl0eShzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CiAgICAgICAgIHBhaXJzID0gWygnYycsIDEpLCAoJ2InLCAyKSwgKCdhJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNildCiAgICAgICAgIHNodWZmbGUocGFpcnMpCiAgICAgICAgIG9kMSA9IE9yZGVyZWREaWN0KHBhaXJzKQpAQCAtMTY0LDYgKzI1NSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob2QxLCBPcmRlcmVkRGljdChwYWlyc1s6LTFdKSkKIAogICAgIGRlZiB0ZXN0X2NvcHlpbmcoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAogICAgICAgICAjIENoZWNrIHRoYXQgb3JkZXJlZCBkaWN0cyBhcmUgY29weWFibGUsIGRlZXBjb3B5YWJsZSwgcGlja2xhYmxlLAogICAgICAgICAjIGFuZCBoYXZlIGEgcmVwci9ldmFsIHJvdW5kLXRyaXAKICAgICAgICAgcGFpcnMgPSBbKCdjJywgMSksICgnYicsIDIpLCAoJ2EnLCAzKSwgKCdkJywgNCksICgnZScsIDUpLCAoJ2YnLCA2KV0KQEAgLTE3MiwxMiArMjY0LDE3IEBACiAgICAgICAgICAgICBtc2cgPSAiXG5jb3B5OiAlc1xub2Q6ICVzIiAlIChkdXAsIG9kKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChkdXAsIG9kLCBtc2cpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR1cCwgb2QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZHVwLml0ZW1zKCkpLCBsaXN0KG9kLml0ZW1zKCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZHVwKSwgbGVuKG9kKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShkdXApLCB0eXBlKG9kKSkKICAgICAgICAgY2hlY2sob2QuY29weSgpKQogICAgICAgICBjaGVjayhjb3B5LmNvcHkob2QpKQogICAgICAgICBjaGVjayhjb3B5LmRlZXBjb3B5KG9kKSkKLSAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90byk6Ci0gICAgICAgICAgICAgICAgY2hlY2socGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhvZCwgcHJvdG8pKSkKKyAgICAgICAgIyBwaWNrbGUgZGlyZWN0bHkgcHVsbHMgdGhlIG1vZHVsZSwgc28gd2UgaGF2ZSB0byBmYWtlIGl0CisgICAgICAgIHdpdGggcmVwbGFjZWRfbW9kdWxlKCdjb2xsZWN0aW9ucycsIHNlbGYubW9kdWxlKToKKyAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvKToKKyAgICAgICAgICAgICAgICAgICAgY2hlY2socGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhvZCwgcHJvdG8pKSkKICAgICAgICAgY2hlY2soZXZhbChyZXByKG9kKSkpCiAgICAgICAgIHVwZGF0ZV90ZXN0ID0gT3JkZXJlZERpY3QoKQogICAgICAgICB1cGRhdGVfdGVzdC51cGRhdGUob2QpCkBAIC0xODUsNiArMjgyLDcgQEAKICAgICAgICAgY2hlY2soT3JkZXJlZERpY3Qob2QpKQogCiAgICAgZGVmIHRlc3RfeWFtbF9saW5rYWdlKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKICAgICAgICAgIyBWZXJpZnkgdGhhdCBfX3JlZHVjZV9fIGlzIHNldHVwIGluIGEgd2F5IHRoYXQgc3VwcG9ydHMgUHlZQU1MJ3MgZHVtcCgpIGZlYXR1cmUuCiAgICAgICAgICMgSW4geWFtbCwgbGlzdHMgYXJlIG5hdGl2ZSBidXQgdHVwbGVzIGFyZSBub3QuCiAgICAgICAgIHBhaXJzID0gWygnYycsIDEpLCAoJ2InLCAyKSwgKCdhJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNildCkBAIC0xOTQsNiArMjkyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFsbCh0eXBlKHBhaXIpPT1saXN0IGZvciBwYWlyIGluIG9kLl9fcmVkdWNlX18oKVsxXSkpCiAKICAgICBkZWYgdGVzdF9yZWR1Y2Vfbm90X3Rvb19mYXQoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAogICAgICAgICAjIGRvIG5vdCBzYXZlIGluc3RhbmNlIGRpY3Rpb25hcnkgaWYgbm90IG5lZWRlZAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KHBhaXJzKQpAQCAtMjAyLDE1ICszMDEsMjAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUob2QuX19yZWR1Y2VfXygpWzJdKQogCiAgICAgZGVmIHRlc3RfcGlja2xlX3JlY3Vyc2l2ZShzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKQogICAgICAgICBvZFsxXSA9IG9kCi0gICAgICAgIGZvciBwcm90byBpbiByYW5nZSgtMSwgcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAgICAgICAgIGR1cCA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMob2QsIHByb3RvKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoZHVwLCBvZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkdXAua2V5cygpKSwgWzFdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhkdXBbMV0sIGR1cCkKKworICAgICAgICAjIHBpY2tsZSBkaXJlY3RseSBwdWxscyB0aGUgbW9kdWxlLCBzbyB3ZSBoYXZlIHRvIGZha2UgaXQKKyAgICAgICAgd2l0aCByZXBsYWNlZF9tb2R1bGUoJ2NvbGxlY3Rpb25zJywgc2VsZi5tb2R1bGUpOgorICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKC0xLCBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIGR1cCA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMob2QsIHByb3RvKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KGR1cCwgb2QpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGR1cC5rZXlzKCkpLCBbMV0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhkdXBbMV0sIGR1cCkKIAogICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG9kKSwKICAgICAgICAgICAgICJPcmRlcmVkRGljdChbKCdjJywgMSksICgnYicsIDIpLCAoJ2EnLCAzKSwgKCdkJywgNCksICgnZScsIDUpLCAoJ2YnLCA2KV0pIikKQEAgLTIxOCw2ICszMjIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3JkZXJlZERpY3QoKSksICJPcmRlcmVkRGljdCgpIikKIAogICAgIGRlZiB0ZXN0X3JlcHJfcmVjdXJzaXZlKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKICAgICAgICAgIyBTZWUgaXNzdWUgIzk4MjYKICAgICAgICAgb2QgPSBPcmRlcmVkRGljdC5mcm9ta2V5cygnYWJjJykKICAgICAgICAgb2RbJ3gnXSA9IG9kCkBAIC0yMjUsNiArMzMwLDcgQEAKICAgICAgICAgICAgICJPcmRlcmVkRGljdChbKCdhJywgTm9uZSksICgnYicsIE5vbmUpLCAoJ2MnLCBOb25lKSwgKCd4JywgLi4uKV0pIikKIAogICAgIGRlZiB0ZXN0X3NldGRlZmF1bHQoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQogICAgICAgICBzaHVmZmxlKHBhaXJzKQogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KHBhaXJzKQpAQCAtMjM1LDYgKzM0MSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2Quc2V0ZGVmYXVsdCgneCcsIDEwKSwgMTApCiAgICAgICAgICMgbWFrZSBzdXJlICd4JyBpcyBhZGRlZCB0byB0aGUgZW5kCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5pdGVtcygpKVstMV0sICgneCcsIDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZC5zZXRkZWZhdWx0KCdnJywgZGVmYXVsdD05KSwgOSkKIAogICAgICAgICAjIG1ha2Ugc3VyZSBzZXRkZWZhdWx0IHN0aWxsIHdvcmtzIHdoZW4gX19taXNzaW5nX18gaXMgZGVmaW5lZAogICAgICAgICBjbGFzcyBNaXNzaW5nKE9yZGVyZWREaWN0KToKQEAgLTI0MywxNiArMzUwLDE5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTWlzc2luZygpLnNldGRlZmF1bHQoNSwgOSksIDkpCiAKICAgICBkZWYgdGVzdF9yZWluc2VydChzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CiAgICAgICAgICMgR2l2ZW4gaW5zZXJ0IGEsIGluc2VydCBiLCBkZWxldGUgYSwgcmUtaW5zZXJ0IGEsCiAgICAgICAgICMgdmVyaWZ5IHRoYXQgYSBpcyBub3cgbGF0ZXIgdGhhbiBiLgogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCkKICAgICAgICAgb2RbJ2EnXSA9IDEKICAgICAgICAgb2RbJ2InXSA9IDIKICAgICAgICAgZGVsIG9kWydhJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kLml0ZW1zKCkpLCBbKCdiJywgMildKQogICAgICAgICBvZFsnYSddID0gMQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QuaXRlbXMoKSksIFsoJ2InLCAyKSwgKCdhJywgMSldKQogCiAgICAgZGVmIHRlc3RfbW92ZV90b19lbmQoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAogICAgICAgICBvZCA9IE9yZGVyZWREaWN0LmZyb21rZXlzKCdhYmNkZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZCksIGxpc3QoJ2FiY2RlJykpCiAgICAgICAgIG9kLm1vdmVfdG9fZW5kKCdjJykKQEAgLTI2MywxNiArMzczLDM2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZCksIGxpc3QoJ2NhYmRlJykpCiAgICAgICAgIG9kLm1vdmVfdG9fZW5kKCdlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kKSwgbGlzdCgnY2FiZGUnKSkKKyAgICAgICAgb2QubW92ZV90b19lbmQoJ2InLCBsYXN0PUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QpLCBsaXN0KCdiY2FkZScpKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKICAgICAgICAgICAgIG9kLm1vdmVfdG9fZW5kKCd4JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBvZC5tb3ZlX3RvX2VuZCgneCcsIDApCisKKyAgICBkZWYgdGVzdF9tb3ZlX3RvX2VuZF9pc3N1ZTI1NDA2KHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdC5mcm9ta2V5cygnYWJjJykKKyAgICAgICAgb2QubW92ZV90b19lbmQoJ2MnLCBsYXN0PUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QpLCBsaXN0KCdjYWInKSkKKyAgICAgICAgb2QubW92ZV90b19lbmQoJ2EnLCBsYXN0PUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QpLCBsaXN0KCdhY2InKSkKKworICAgICAgICBvZCA9IE9yZGVyZWREaWN0LmZyb21rZXlzKCdhYmMnKQorICAgICAgICBvZC5tb3ZlX3RvX2VuZCgnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZCksIGxpc3QoJ2JjYScpKQorICAgICAgICBvZC5tb3ZlX3RvX2VuZCgnYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZCksIGxpc3QoJ2JhYycpKQogCiAgICAgZGVmIHRlc3Rfc2l6ZW9mKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKICAgICAgICAgIyBXaW1weSB0ZXN0OiBKdXN0IHZlcmlmeSB0aGUgcmVwb3J0ZWQgc2l6ZSBpcyBsYXJnZXIgdGhhbiBhIHJlZ3VsYXIgZGljdAogICAgICAgICBkID0gZGljdChhPTEpCiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKipkKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc3lzLmdldHNpemVvZihvZCksIHN5cy5nZXRzaXplb2YoZCkpCiAKICAgICBkZWYgdGVzdF9vdmVycmlkZV91cGRhdGUoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAogICAgICAgICAjIFZlcmlmeSB0aGF0IHN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIHVwZGF0ZSgpIHdpdGhvdXQgYnJlYWtpbmcgX19pbml0X18oKQogICAgICAgICBjbGFzcyBNeU9EKE9yZGVyZWREaWN0KToKICAgICAgICAgICAgIGRlZiB1cGRhdGUoc2VsZiwgKmFyZ3MsICoqa3dkcyk6CkBAIC0yODAsMTggKzQxMCwzMDEgQEAKICAgICAgICAgaXRlbXMgPSBbKCdhJywgMSksICgnYycsIDMpLCAoJ2InLCAyKV0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KE15T0QoaXRlbXMpLml0ZW1zKCkpLCBpdGVtcykKIAotY2xhc3MgR2VuZXJhbE1hcHBpbmdUZXN0cyhtYXBwaW5nX3Rlc3RzLkJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCk6Ci0gICAgdHlwZTJ0ZXN0ID0gT3JkZXJlZERpY3QKKyAgICBkZWYgdGVzdF9oaWdobHlfbmVzdGVkKHNlbGYpOgorICAgICAgICAjIElzc3VlIDI1Mzk1OiBjcmFzaGVzIGR1cmluZyBnYXJiYWdlIGNvbGxlY3Rpb24KKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CisgICAgICAgIG9iaiA9IE5vbmUKKyAgICAgICAgZm9yIF8gaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgICAgICBvYmogPSBPcmRlcmVkRGljdChbKE5vbmUsIG9iaildKQorICAgICAgICBkZWwgb2JqCisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisKKyAgICBkZWYgdGVzdF9oaWdobHlfbmVzdGVkX3N1YmNsYXNzKHNlbGYpOgorICAgICAgICAjIElzc3VlIDI1Mzk1OiBjcmFzaGVzIGR1cmluZyBnYXJiYWdlIGNvbGxlY3Rpb24KKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CisgICAgICAgIGRlbGV0ZWQgPSBbXQorICAgICAgICBjbGFzcyBNeU9EKE9yZGVyZWREaWN0KToKKyAgICAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIGRlbGV0ZWQuYXBwZW5kKHNlbGYuaSkKKyAgICAgICAgb2JqID0gTm9uZQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMDApOgorICAgICAgICAgICAgb2JqID0gTXlPRChbKE5vbmUsIG9iaildKQorICAgICAgICAgICAgb2JqLmkgPSBpCisgICAgICAgIGRlbCBvYmoKKyAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWxldGVkLCBsaXN0KHJldmVyc2VkKHJhbmdlKDEwMCkpKSkKKworICAgIGRlZiB0ZXN0X2RlbGl0ZW1faGFzaF9jb2xsaXNpb24oc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAorCisgICAgICAgIGNsYXNzIEtleToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYXNoKToKKyAgICAgICAgICAgICAgICBzZWxmLl9oYXNoID0gaGFzaAorICAgICAgICAgICAgICAgIHNlbGYudmFsdWUgPSBzdHIoaWQoc2VsZikpCisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2hhc2gKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUgPT0gb3RoZXIudmFsdWUKKyAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCisKKyAgICAgICAgZGVmIGJsb2NraW5nX2hhc2goaGFzaCk6CisgICAgICAgICAgICAjIFNlZSB0aGUgY29sbGlzaW9uLWhhbmRsaW5nIGluIGxvb2tkaWN0IChpbiBPYmplY3RzL2RpY3RvYmplY3QuYykuCisgICAgICAgICAgICBNSU5TSVpFID0gOAorICAgICAgICAgICAgaSA9IChoYXNoICYgTUlOU0laRS0xKQorICAgICAgICAgICAgcmV0dXJuIChpIDw8IDIpICsgaSArIGhhc2ggKyAxCisKKyAgICAgICAgQ09MTElESU5HID0gMQorCisgICAgICAgIGtleSA9IEtleShDT0xMSURJTkcpCisgICAgICAgIGNvbGxpZGluZyA9IEtleShDT0xMSURJTkcpCisgICAgICAgIGJsb2NraW5nID0gS2V5KGJsb2NraW5nX2hhc2goQ09MTElESU5HKSkKKworICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgb2Rba2V5XSA9IC4uLgorICAgICAgICBvZFtibG9ja2luZ10gPSAuLi4KKyAgICAgICAgb2RbY29sbGlkaW5nXSA9IC4uLgorICAgICAgICBvZFsnYWZ0ZXInXSA9IC4uLgorCisgICAgICAgIGRlbCBvZFtibG9ja2luZ10KKyAgICAgICAgZGVsIG9kW2NvbGxpZGluZ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kLml0ZW1zKCkpLCBbKGtleSwgLi4uKSwgKCdhZnRlcicsIC4uLildKQorCisgICAgZGVmIHRlc3RfaXNzdWUyNDM0NyhzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CisKKyAgICAgICAgY2xhc3MgS2V5OgorICAgICAgICAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiByYW5kcmFuZ2UoMTAwMDAwKQorCisgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMDApOgorICAgICAgICAgICAga2V5ID0gS2V5KCkKKyAgICAgICAgICAgIG9kW2tleV0gPSBpCisKKyAgICAgICAgIyBUaGVzZSBzaG91bGQgbm90IGNyYXNoLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGxpc3Qob2QudmFsdWVzKCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgbGlzdChvZC5pdGVtcygpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIHJlcHIob2QpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgb2QuY29weSgpCisKKyAgICBkZWYgdGVzdF9pc3N1ZTI0MzQ4KHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKKworICAgICAgICBjbGFzcyBLZXk6CisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDEKKworICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgb2RbS2V5KCldID0gMAorICAgICAgICAjIFRoaXMgc2hvdWxkIG5vdCBjcmFzaC4KKyAgICAgICAgb2QucG9waXRlbSgpCisKKyAgICBkZWYgdGVzdF9pc3N1ZTI0NjY3KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgZGljdCByZXNpemVzIGFmdGVyIGEgY2VydGFpbiBudW1iZXIgb2YgaW5zZXJ0aW9uIG9wZXJhdGlvbnMsCisgICAgICAgIHdoZXRoZXIgb3Igbm90IHRoZXJlIHdlcmUgZGVsZXRpb25zIHRoYXQgZnJlZWQgdXAgc2xvdHMgaW4gdGhlCisgICAgICAgIGhhc2ggdGFibGUuICBEdXJpbmcgZmFzdCBub2RlIGxvb2t1cCwgT3JkZXJlZERpY3QgbXVzdCBjb3JyZWN0bHkKKyAgICAgICAgcmVzcG9uZCB0byBhbGwgcmVzaXplcywgZXZlbiBpZiB0aGUgY3VycmVudCAic2l6ZSIgaXMgdGhlIHNhbWUKKyAgICAgICAgYXMgdGhlIG9sZCBvbmUuICBXZSB2ZXJpZnkgdGhhdCBoZXJlIGJ5IGZvcmNpbmcgYSBkaWN0IHJlc2l6ZQorICAgICAgICBvbiBhIHNwYXJzZSBvZGljdCBhbmQgdGhlbiBwZXJmb3JtIGFuIG9wZXJhdGlvbiB0aGF0IHNob3VsZAorICAgICAgICB0cmlnZ2VyIGFuIG9kaWN0IHJlc2l6ZSAoZS5nLiBwb3BpdGVtKS4gIE9uZSBrZXkgYXNwZWN0IGhlcmUgaXMKKyAgICAgICAgdGhhdCB3ZSB3aWxsIGtlZXAgdGhlIHNpemUgb2YgdGhlIG9kaWN0IHRoZSBzYW1lIGF0IGVhY2ggcG9waXRlbQorICAgICAgICBjYWxsLiAgVGhpcyB2ZXJpZmllcyB0aGF0IHdlIGhhbmRsZWQgdGhlIGRpY3QgcmVzaXplIHByb3Blcmx5LgorICAgICAgICAiIiIKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CisKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdCgpCisgICAgICAgIGZvciBjMCBpbiAnMDEyMzQ1Njc4OUFCQ0RFRic6CisgICAgICAgICAgICBmb3IgYzEgaW4gJzAxMjM0NTY3ODlBQkNERUYnOgorICAgICAgICAgICAgICAgIGlmIGxlbihvZCkgPT0gNDoKKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBub3QgcmFpc2UgYSBLZXlFcnJvci4KKyAgICAgICAgICAgICAgICAgICAgb2QucG9waXRlbShsYXN0PUZhbHNlKQorICAgICAgICAgICAgICAgIGtleSA9IGMwICsgYzEKKyAgICAgICAgICAgICAgICBvZFtrZXldID0ga2V5CisKKyAgICAjIERpcmVjdCB1c2Ugb2YgZGljdCBtZXRob2RzCisKKyAgICBkZWYgdGVzdF9kaWN0X3NldGl0ZW0oc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAorICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgZGljdC5fX3NldGl0ZW1fXyhvZCwgJ3NwYW0nLCAxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdOVUxMJywgcmVwcihvZCkpCisKKyAgICBkZWYgdGVzdF9kaWN0X2RlbGl0ZW0oc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAorICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgb2RbJ3NwYW0nXSA9IDEKKyAgICAgICAgb2RbJ2hhbSddID0gMgorICAgICAgICBkaWN0Ll9fZGVsaXRlbV9fKG9kLCAnc3BhbScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgcmVwcihvZCkKKworICAgIGRlZiB0ZXN0X2RpY3RfY2xlYXIoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAorICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgb2RbJ3NwYW0nXSA9IDEKKyAgICAgICAgb2RbJ2hhbSddID0gMgorICAgICAgICBkaWN0LmNsZWFyKG9kKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdOVUxMJywgcmVwcihvZCkpCisKKyAgICBkZWYgdGVzdF9kaWN0X3BvcChzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CisgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKQorICAgICAgICBvZFsnc3BhbSddID0gMQorICAgICAgICBvZFsnaGFtJ10gPSAyCisgICAgICAgIGRpY3QucG9wKG9kLCAnc3BhbScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgcmVwcihvZCkKKworICAgIGRlZiB0ZXN0X2RpY3RfcG9waXRlbShzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CisgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKQorICAgICAgICBvZFsnc3BhbSddID0gMQorICAgICAgICBvZFsnaGFtJ10gPSAyCisgICAgICAgIGRpY3QucG9waXRlbShvZCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICByZXByKG9kKQorCisgICAgZGVmIHRlc3RfZGljdF9zZXRkZWZhdWx0KHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdCgpCisgICAgICAgIGRpY3Quc2V0ZGVmYXVsdChvZCwgJ3NwYW0nLCAxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdOVUxMJywgcmVwcihvZCkpCisKKyAgICBkZWYgdGVzdF9kaWN0X3VwZGF0ZShzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CisgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKQorICAgICAgICBkaWN0LnVwZGF0ZShvZCwgWygnc3BhbScsIDEpXSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignTlVMTCcsIHJlcHIob2QpKQorCisKK2NsYXNzIFB1cmVQeXRob25PcmRlcmVkRGljdFRlc3RzKE9yZGVyZWREaWN0VGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIG1vZHVsZSA9IHB5X2NvbGwKKyAgICBPcmRlcmVkRGljdCA9IHB5X2NvbGwuT3JkZXJlZERpY3QKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjX2NvbGwsICdyZXF1aXJlcyB0aGUgQyB2ZXJzaW9uIG9mIHRoZSBjb2xsZWN0aW9ucyBtb2R1bGUnKQorY2xhc3MgQ1B5dGhvbk9yZGVyZWREaWN0VGVzdHMoT3JkZXJlZERpY3RUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgbW9kdWxlID0gY19jb2xsCisgICAgT3JkZXJlZERpY3QgPSBjX2NvbGwuT3JkZXJlZERpY3QKKyAgICBjaGVja19zaXplb2YgPSBzdXBwb3J0LmNoZWNrX3NpemVvZgorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc2l6ZW9mX2V4YWN0KHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKKyAgICAgICAgY2FsY3NpemUgPSBzdHJ1Y3QuY2FsY3NpemUKKyAgICAgICAgc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUKKyAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrX3NpemVvZgorCisgICAgICAgIGJhc2ljc2l6ZSA9IHNpemUoJ24yUCcgKyAnM1BuUG4yUCcpICsgY2FsY3NpemUoJzJuUG4nKQorICAgICAgICBlbnRyeXNpemUgPSBjYWxjc2l6ZSgnbjJQJykgKyBjYWxjc2l6ZSgnUCcpCisgICAgICAgIG5vZGVzaXplID0gY2FsY3NpemUoJ1BuMlAnKQorCisgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKQorICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCplbnRyeXNpemUpCisgICAgICAgIG9kLnggPSAxCisgICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyA4KmVudHJ5c2l6ZSkKKyAgICAgICAgb2QudXBkYXRlKFsoaSwgaSkgZm9yIGkgaW4gcmFuZ2UoMyldKQorICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCplbnRyeXNpemUgKyAzKm5vZGVzaXplKQorICAgICAgICBvZC51cGRhdGUoWyhpLCBpKSBmb3IgaSBpbiByYW5nZSgzLCAxMCldKQorICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgMTYqZW50cnlzaXplICsgMTAqbm9kZXNpemUpCisKKyAgICAgICAgY2hlY2sob2Qua2V5cygpLCBzaXplKCdQJykpCisgICAgICAgIGNoZWNrKG9kLml0ZW1zKCksIHNpemUoJ1AnKSkKKyAgICAgICAgY2hlY2sob2QudmFsdWVzKCksIHNpemUoJ1AnKSkKKworICAgICAgICBpdGVyc2l6ZSA9IHNpemUoJ2lQMm4yUCcpCisgICAgICAgIGNoZWNrKGl0ZXIob2QpLCBpdGVyc2l6ZSkKKyAgICAgICAgY2hlY2soaXRlcihvZC5rZXlzKCkpLCBpdGVyc2l6ZSkKKyAgICAgICAgY2hlY2soaXRlcihvZC5pdGVtcygpKSwgaXRlcnNpemUpCisgICAgICAgIGNoZWNrKGl0ZXIob2QudmFsdWVzKCkpLCBpdGVyc2l6ZSkKKworICAgIGRlZiB0ZXN0X2tleV9jaGFuZ2VfZHVyaW5nX2l0ZXJhdGlvbihzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CisKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdC5mcm9ta2V5cygnYWJjZGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QpLCBsaXN0KCdhYmNkZScpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBmb3IgaSwgayBpbiBlbnVtZXJhdGUob2QpOgorICAgICAgICAgICAgICAgIG9kLm1vdmVfdG9fZW5kKGspCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGksIDUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIGZvciBrIGluIG9kOgorICAgICAgICAgICAgICAgIG9kWydmJ10gPSBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIGZvciBrIGluIG9kOgorICAgICAgICAgICAgICAgIGRlbCBvZFsnYyddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZCksIGxpc3QoJ2JkZWFmJykpCisKKworY2xhc3MgUHVyZVB5dGhvbk9yZGVyZWREaWN0U3ViY2xhc3NUZXN0cyhQdXJlUHl0aG9uT3JkZXJlZERpY3RUZXN0cyk6CisKKyAgICBtb2R1bGUgPSBweV9jb2xsCisgICAgY2xhc3MgT3JkZXJlZERpY3QocHlfY29sbC5PcmRlcmVkRGljdCk6CisgICAgICAgIHBhc3MKKworCitjbGFzcyBDUHl0aG9uT3JkZXJlZERpY3RTdWJjbGFzc1Rlc3RzKENQeXRob25PcmRlcmVkRGljdFRlc3RzKToKKworICAgIG1vZHVsZSA9IGNfY29sbAorICAgIGNsYXNzIE9yZGVyZWREaWN0KGNfY29sbC5PcmRlcmVkRGljdCk6CisgICAgICAgIHBhc3MKKworCitjbGFzcyBQdXJlUHl0aG9uR2VuZXJhbE1hcHBpbmdUZXN0cyhtYXBwaW5nX3Rlc3RzLkJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBjbHMudHlwZTJ0ZXN0ID0gcHlfY29sbC5PcmRlcmVkRGljdAogCiAgICAgZGVmIHRlc3RfcG9waXRlbShzZWxmKToKICAgICAgICAgZCA9IHNlbGYuX2VtcHR5X21hcHBpbmcoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgZC5wb3BpdGVtKQogCi1jbGFzcyBNeU9yZGVyZWREaWN0KE9yZGVyZWREaWN0KToKLSAgICBwYXNzCiAKLWNsYXNzIFN1YmNsYXNzTWFwcGluZ1Rlc3RzKG1hcHBpbmdfdGVzdHMuQmFzaWNUZXN0TWFwcGluZ1Byb3RvY29sKToKLSAgICB0eXBlMnRlc3QgPSBNeU9yZGVyZWREaWN0CitAdW5pdHRlc3Quc2tpcFVubGVzcyhjX2NvbGwsICdyZXF1aXJlcyB0aGUgQyB2ZXJzaW9uIG9mIHRoZSBjb2xsZWN0aW9ucyBtb2R1bGUnKQorY2xhc3MgQ1B5dGhvbkdlbmVyYWxNYXBwaW5nVGVzdHMobWFwcGluZ190ZXN0cy5CYXNpY1Rlc3RNYXBwaW5nUHJvdG9jb2wpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnR5cGUydGVzdCA9IGNfY29sbC5PcmRlcmVkRGljdAorCisgICAgZGVmIHRlc3RfcG9waXRlbShzZWxmKToKKyAgICAgICAgZCA9IHNlbGYuX2VtcHR5X21hcHBpbmcoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgZC5wb3BpdGVtKQorCisKK2NsYXNzIFB1cmVQeXRob25TdWJjbGFzc01hcHBpbmdUZXN0cyhtYXBwaW5nX3Rlc3RzLkJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBjbGFzcyBNeU9yZGVyZWREaWN0KHB5X2NvbGwuT3JkZXJlZERpY3QpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBjbHMudHlwZTJ0ZXN0ID0gTXlPcmRlcmVkRGljdAorCisgICAgZGVmIHRlc3RfcG9waXRlbShzZWxmKToKKyAgICAgICAgZCA9IHNlbGYuX2VtcHR5X21hcHBpbmcoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgZC5wb3BpdGVtKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGNfY29sbCwgJ3JlcXVpcmVzIHRoZSBDIHZlcnNpb24gb2YgdGhlIGNvbGxlY3Rpb25zIG1vZHVsZScpCitjbGFzcyBDUHl0aG9uU3ViY2xhc3NNYXBwaW5nVGVzdHMobWFwcGluZ190ZXN0cy5CYXNpY1Rlc3RNYXBwaW5nUHJvdG9jb2wpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xhc3MgTXlPcmRlcmVkRGljdChjX2NvbGwuT3JkZXJlZERpY3QpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBjbHMudHlwZTJ0ZXN0ID0gTXlPcmRlcmVkRGljdAogCiAgICAgZGVmIHRlc3RfcG9waXRlbShzZWxmKToKICAgICAgICAgZCA9IHNlbGYuX2VtcHR5X21hcHBpbmcoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcy5weSBiL0xpYi90ZXN0L3Rlc3Rfb3MucHkKaW5kZXggZTI5YjBkNS4uYWRlNzVhNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X29zLnB5CkBAIC05LDYgKzksNyBAQAogaW1wb3J0IGRlY2ltYWwKIGltcG9ydCBlcnJubwogaW1wb3J0IGZyYWN0aW9ucworaW1wb3J0IGdldHBhc3MKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBsb2NhbGUKIGltcG9ydCBtbWFwCkBAIC00MCw4ICs0MSwzNCBAQAogICAgIGltcG9ydCBmY250bAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGZjbnRsID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBfd2luYXBpCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX3dpbmFwaSA9IE5vbmUKK3RyeToKKyAgICBpbXBvcnQgZ3JwCisgICAgZ3JvdXBzID0gW2cuZ3JfZ2lkIGZvciBnIGluIGdycC5nZXRncmFsbCgpIGlmIGdldHBhc3MuZ2V0dXNlcigpIGluIGcuZ3JfbWVtXQorICAgIGlmIGhhc2F0dHIob3MsICdnZXRnaWQnKToKKyAgICAgICAgcHJvY2Vzc19naWQgPSBvcy5nZXRnaWQoKQorICAgICAgICBpZiBwcm9jZXNzX2dpZCBub3QgaW4gZ3JvdXBzOgorICAgICAgICAgICAgZ3JvdXBzLmFwcGVuZChwcm9jZXNzX2dpZCkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBncm91cHMgPSBbXQordHJ5OgorICAgIGltcG9ydCBwd2QKKyAgICBhbGxfdXNlcnMgPSBbdS5wd191aWQgZm9yIHUgaW4gcHdkLmdldHB3YWxsKCldCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgYWxsX3VzZXJzID0gW10KK3RyeToKKyAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgSU5UX01BWCwgUFlfU1NJWkVfVF9NQVgKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBJTlRfTUFYID0gUFlfU1NJWkVfVF9NQVggPSBzeXMubWF4c2l6ZQogCi1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworCityb290X2luX3Bvc2l4ID0gRmFsc2UKK2lmIGhhc2F0dHIob3MsICdnZXRldWlkJyk6CisgICAgcm9vdF9pbl9wb3NpeCA9IChvcy5nZXRldWlkKCkgPT0gMCkKIAogIyBEZXRlY3Qgd2hldGhlciB3ZSdyZSBvbiBhIExpbnV4IHN5c3RlbSB0aGF0IHVzZXMgdGhlIChub3cgb3V0ZGF0ZWQKICMgYW5kIHVubWFpbnRhaW5lZCkgbGludXh0aHJlYWRzIHRocmVhZGluZyBsaWJyYXJ5LiAgVGhlcmUncyBhbiBpc3N1ZQpAQCAtMTA2LDYgKzEzMywyNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHMpLCBieXRlcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgYiJzcGFtIikKIAorICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgICMgU2tpcCB0aGUgdGVzdCBvbiAzMi1iaXQgcGxhdGZvcm1zOiB0aGUgbnVtYmVyIG9mIGJ5dGVzIG11c3QgZml0IGluIGEKKyAgICAjIFB5X3NzaXplX3QgdHlwZQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKElOVF9NQVggPCBQWV9TU0laRV9UX01BWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAibmVlZHMgSU5UX01BWCA8IFBZX1NTSVpFX1RfTUFYIikKKyAgICBAc3VwcG9ydC5iaWdtZW10ZXN0KHNpemU9SU5UX01BWCArIDEwLCBtZW11c2U9MSwgZHJ5X3J1bj1GYWxzZSkKKyAgICBkZWYgdGVzdF9sYXJnZV9yZWFkKHNlbGYsIHNpemUpOgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUoYid0ZXN0JykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKworICAgICAgICAjIElzc3VlICMyMTkzMjogTWFrZSBzdXJlIHRoYXQgb3MucmVhZCgpIGRvZXMgbm90IHJhaXNlIGFuCisgICAgICAgICMgT3ZlcmZsb3dFcnJvciBmb3Igc2l6ZSBsYXJnZXIgdGhhbiBJTlRfTUFYCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgInJiIikgYXMgZnA6CisgICAgICAgICAgICBkYXRhID0gb3MucmVhZChmcC5maWxlbm8oKSwgc2l6ZSkKKworICAgICAgICAjIFRoZSB0ZXN0IGRvZXMgbm90IHRyeSB0byByZWFkIG1vcmUgdGhhbiAyIEdCIGF0IG9uY2UgYmVjYXVzZSB0aGUKKyAgICAgICAgIyBvcGVyYXRpbmcgc3lzdGVtIGlzIGZyZWUgdG8gcmV0dXJuIGxlc3MgYnl0ZXMgdGhhbiByZXF1ZXN0ZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYid0ZXN0JykKKwogICAgIGRlZiB0ZXN0X3dyaXRlKHNlbGYpOgogICAgICAgICAjIG9zLndyaXRlKCkgYWNjZXB0cyBieXRlcy0gYW5kIGJ1ZmZlci1saWtlIG9iamVjdHMgYnV0IG5vdCBzdHJpbmdzCiAgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19DUkVBVCB8IG9zLk9fV1JPTkxZKQpAQCAtMzYzLDYgKzQxMCwyOCBAQAogICAgICAgICAgICAgb3Muc3RhdChyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5leGNlcHRpb24uZXJybm8sIGVycm5vLkVCQURGKQogCisgICAgZGVmIGNoZWNrX2ZpbGVfYXR0cmlidXRlcyhzZWxmLCByZXN1bHQpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihyZXN1bHQsICdzdF9maWxlX2F0dHJpYnV0ZXMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UocmVzdWx0LnN0X2ZpbGVfYXR0cmlidXRlcywgaW50KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDAgPD0gcmVzdWx0LnN0X2ZpbGVfYXR0cmlidXRlcyA8PSAweEZGRkZGRkZGKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgInN0X2ZpbGVfYXR0cmlidXRlcyBpcyBXaW4zMiBzcGVjaWZpYyIpCisgICAgZGVmIHRlc3RfZmlsZV9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICAjIHRlc3QgZmlsZSBzdF9maWxlX2F0dHJpYnV0ZXMgKEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSBub3Qgc2V0KQorICAgICAgICByZXN1bHQgPSBvcy5zdGF0KHNlbGYuZm5hbWUpCisgICAgICAgIHNlbGYuY2hlY2tfZmlsZV9hdHRyaWJ1dGVzKHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlc3VsdC5zdF9maWxlX2F0dHJpYnV0ZXMgJiBzdGF0LkZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSwKKyAgICAgICAgICAgIDApCisKKyAgICAgICAgIyB0ZXN0IGRpcmVjdG9yeSBzdF9maWxlX2F0dHJpYnV0ZXMgKEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSBzZXQpCisgICAgICAgIHJlc3VsdCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuY2hlY2tfZmlsZV9hdHRyaWJ1dGVzKHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlc3VsdC5zdF9maWxlX2F0dHJpYnV0ZXMgJiBzdGF0LkZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSwKKyAgICAgICAgICAgIHN0YXQuRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQorCiAKIGNsYXNzIFV0aW1lVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTcyMiwxMiArNzkxLDEwIEBACiAKICAgICAjIFdyYXBwZXIgdG8gaGlkZSBtaW5vciBkaWZmZXJlbmNlcyBiZXR3ZWVuIG9zLndhbGsgYW5kIG9zLmZ3YWxrCiAgICAgIyB0byB0ZXN0cyBib3RoIGZ1bmN0aW9ucyB3aXRoIHRoZSBzYW1lIGNvZGUgYmFzZQotICAgIGRlZiB3YWxrKHNlbGYsIGRpcmVjdG9yeSwgdG9wZG93bj1UcnVlLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpOgotICAgICAgICB3YWxrX2l0ID0gb3Mud2FsayhkaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRvcGRvd249dG9wZG93biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93bGlua3M9Zm9sbG93X3N5bWxpbmtzKQotICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gd2Fsa19pdDoKLSAgICAgICAgICAgIHlpZWxkIChyb290LCBkaXJzLCBmaWxlcykKKyAgICBkZWYgd2FsayhzZWxmLCBkaXJlY3RvcnksICoqa3dhcmdzKToKKyAgICAgICAgaWYgJ2ZvbGxvd19zeW1saW5rcycgaW4ga3dhcmdzOgorICAgICAgICAgICAga3dhcmdzWydmb2xsb3dsaW5rcyddID0ga3dhcmdzLnBvcCgnZm9sbG93X3N5bWxpbmtzJykKKyAgICAgICAgcmV0dXJuIG9zLndhbGsoZGlyZWN0b3J5LCAqKmt3YXJncykKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgam9pbiA9IG9zLnBhdGguam9pbgpAQCAtODU3LDE2ICs5MjQsMjkgQEAKICAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGRpcm5hbWUpCiAgICAgICAgIG9zLnJtZGlyKHN1cHBvcnQuVEVTVEZOKQogCisgICAgZGVmIHRlc3Rfd2Fsa19iYWRfZGlyKHNlbGYpOgorICAgICAgICAjIFdhbGsgdG9wLWRvd24uCisgICAgICAgIGVycm9ycyA9IFtdCisgICAgICAgIHdhbGtfaXQgPSBzZWxmLndhbGsoc2VsZi53YWxrX3BhdGgsIG9uZXJyb3I9ZXJyb3JzLmFwcGVuZCkKKyAgICAgICAgcm9vdCwgZGlycywgZmlsZXMgPSBuZXh0KHdhbGtfaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXJyb3JzKQorICAgICAgICBkaXIxID0gZGlyc1swXQorICAgICAgICBkaXIxbmV3ID0gZGlyMSArICcubmV3JworICAgICAgICBvcy5yZW5hbWUob3MucGF0aC5qb2luKHJvb3QsIGRpcjEpLCBvcy5wYXRoLmpvaW4ocm9vdCwgZGlyMW5ldykpCisgICAgICAgIHJvb3RzID0gW3IgZm9yIHIsIGQsIGYgaW4gd2Fsa19pdF0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVycm9ycykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihvcy5wYXRoLmpvaW4ocm9vdCwgZGlyMSksIHJvb3RzKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG9zLnBhdGguam9pbihyb290LCBkaXIxbmV3KSwgcm9vdHMpCisgICAgICAgIGZvciBkaXIyIGluIGRpcnNbMTpdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4ocm9vdCwgZGlyMiksIHJvb3RzKQorCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdmd2FsaycpLCAiVGVzdCBuZWVkcyBvcy5md2FsaygpIikKIGNsYXNzIEZ3YWxrVGVzdHMoV2Fsa1Rlc3RzKToKICAgICAiIiJUZXN0cyBmb3Igb3MuZndhbGsoKS4iIiIKIAotICAgIGRlZiB3YWxrKHNlbGYsIGRpcmVjdG9yeSwgdG9wZG93bj1UcnVlLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpOgotICAgICAgICB3YWxrX2l0ID0gb3MuZndhbGsoZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wZG93bj10b3Bkb3duLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcykKLSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzLCByb290X2ZkIGluIHdhbGtfaXQ6CisgICAgZGVmIHdhbGsoc2VsZiwgZGlyZWN0b3J5LCAqKmt3YXJncyk6CisgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcywgcm9vdF9mZCBpbiBvcy5md2FsayhkaXJlY3RvcnksICoqa3dhcmdzKToKICAgICAgICAgICAgIHlpZWxkIChyb290LCBkaXJzLCBmaWxlcykKIAogCkBAIC05NzQsMTcgKzEwNTQsNiBAQAogICAgICAgICAjIElzc3VlICMyNTU4MzogQSBkcml2ZSByb290IGNvdWxkIHJhaXNlIFBlcm1pc3Npb25FcnJvciBvbiBXaW5kb3dzCiAgICAgICAgIG9zLm1ha2VkaXJzKG9zLnBhdGguYWJzcGF0aCgnLycpLCBleGlzdF9vaz1UcnVlKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2Nob3duJyksICd0ZXN0IG5lZWRzIG9zLmNob3duJykKLSAgICBkZWYgdGVzdF9jaG93bl91aWRfZ2lkX2FyZ3VtZW50c19tdXN0X2JlX2luZGV4KHNlbGYpOgotICAgICAgICBzdGF0ID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgdWlkID0gc3RhdC5zdF91aWQKLSAgICAgICAgZ2lkID0gc3RhdC5zdF9naWQKLSAgICAgICAgZm9yIHZhbHVlIGluICgtMS4wLCAtMWosIGRlY2ltYWwuRGVjaW1hbCgtMSksIGZyYWN0aW9ucy5GcmFjdGlvbigtMiwgMikpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcy5jaG93biwgc3VwcG9ydC5URVNURk4sIHZhbHVlLCBnaWQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLmNob3duLCBzdXBwb3J0LlRFU1RGTiwgdWlkLCB2YWx1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob3MuY2hvd24oc3VwcG9ydC5URVNURk4sIHVpZCwgZ2lkKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob3MuY2hvd24oc3VwcG9ydC5URVNURk4sIC0xLCAtMSkpCi0KICAgICBkZWYgdGVzdF9leGlzdF9va19zX2lzZ2lkX2RpcmVjdG9yeShzZWxmKToKICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzdXBwb3J0LlRFU1RGTiwgJ2RpcjEnKQogICAgICAgICBTX0lTR0lEID0gc3RhdC5TX0lTR0lECkBAIC0xMDM1LDYgKzExMDQsNjAgQEAKICAgICAgICAgb3MucmVtb3ZlZGlycyhwYXRoKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdjaG93bicpLCAiVGVzdCBuZWVkcyBjaG93biIpCitjbGFzcyBDaG93bkZpbGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBvcy5ta2RpcihzdXBwb3J0LlRFU1RGTikKKworICAgIGRlZiB0ZXN0X2Nob3duX3VpZF9naWRfYXJndW1lbnRzX211c3RfYmVfaW5kZXgoc2VsZik6CisgICAgICAgIHN0YXQgPSBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKQorICAgICAgICB1aWQgPSBzdGF0LnN0X3VpZAorICAgICAgICBnaWQgPSBzdGF0LnN0X2dpZAorICAgICAgICBmb3IgdmFsdWUgaW4gKC0xLjAsIC0xaiwgZGVjaW1hbC5EZWNpbWFsKC0xKSwgZnJhY3Rpb25zLkZyYWN0aW9uKC0yLCAyKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLmNob3duLCBzdXBwb3J0LlRFU1RGTiwgdmFsdWUsIGdpZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3MuY2hvd24sIHN1cHBvcnQuVEVTVEZOLCB1aWQsIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShvcy5jaG93bihzdXBwb3J0LlRFU1RGTiwgdWlkLCBnaWQpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShvcy5jaG93bihzdXBwb3J0LlRFU1RGTiwgLTEsIC0xKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGxlbihncm91cHMpID4gMSwgInRlc3QgbmVlZHMgbW9yZSB0aGFuIG9uZSBncm91cCIpCisgICAgZGVmIHRlc3RfY2hvd24oc2VsZik6CisgICAgICAgIGdpZF8xLCBnaWRfMiA9IGdyb3Vwc1s6Ml0KKyAgICAgICAgdWlkID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikuc3RfdWlkCisgICAgICAgIG9zLmNob3duKHN1cHBvcnQuVEVTVEZOLCB1aWQsIGdpZF8xKQorICAgICAgICBnaWQgPSBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKS5zdF9naWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnaWQsIGdpZF8xKQorICAgICAgICBvcy5jaG93bihzdXBwb3J0LlRFU1RGTiwgdWlkLCBnaWRfMikKKyAgICAgICAgZ2lkID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikuc3RfZ2lkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2lkLCBnaWRfMikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHJvb3RfaW5fcG9zaXggYW5kIGxlbihhbGxfdXNlcnMpID4gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdCBuZWVkcyByb290IHByaXZpbGVnZSBhbmQgbW9yZSB0aGFuIG9uZSB1c2VyIikKKyAgICBkZWYgdGVzdF9jaG93bl93aXRoX3Jvb3Qoc2VsZik6CisgICAgICAgIHVpZF8xLCB1aWRfMiA9IGFsbF91c2Vyc1s6Ml0KKyAgICAgICAgZ2lkID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikuc3RfZ2lkCisgICAgICAgIG9zLmNob3duKHN1cHBvcnQuVEVTVEZOLCB1aWRfMSwgZ2lkKQorICAgICAgICB1aWQgPSBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKS5zdF91aWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1aWQsIHVpZF8xKQorICAgICAgICBvcy5jaG93bihzdXBwb3J0LlRFU1RGTiwgdWlkXzIsIGdpZCkKKyAgICAgICAgdWlkID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikuc3RfdWlkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodWlkLCB1aWRfMikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG5vdCByb290X2luX3Bvc2l4IGFuZCBsZW4oYWxsX3VzZXJzKSA+IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgbmVlZHMgbm9uLXJvb3QgYWNjb3VudCBhbmQgbW9yZSB0aGFuIG9uZSB1c2VyIikKKyAgICBkZWYgdGVzdF9jaG93bl93aXRob3V0X3Blcm1pc3Npb24oc2VsZik6CisgICAgICAgIHVpZF8xLCB1aWRfMiA9IGFsbF91c2Vyc1s6Ml0KKyAgICAgICAgZ2lkID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikuc3RfZ2lkCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUGVybWlzc2lvbkVycm9yKToKKyAgICAgICAgICAgIG9zLmNob3duKHN1cHBvcnQuVEVTVEZOLCB1aWRfMSwgZ2lkKQorICAgICAgICAgICAgb3MuY2hvd24oc3VwcG9ydC5URVNURk4sIHVpZF8yLCBnaWQpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKKworCiBjbGFzcyBSZW1vdmVEaXJzVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgb3MubWFrZWRpcnMoc3VwcG9ydC5URVNURk4pCkBAIC0xMTE3LDEwICsxMjQwLDE1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZGF0YTEsIGRhdGEyKQogCiAKLUhBVkVfR0VURU5UUk9QWSA9IChzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfR0VURU5UUk9QWScpID09IDEpCisjIG9zLnVyYW5kb20oKSBkb2Vzbid0IHVzZSBhIGZpbGUgZGVzY3JpcHRvciB3aGVuIGl0IGlzIGltcGxlbWVudGVkIHdpdGggdGhlCisjIGdldGVudHJvcHkoKSBmdW5jdGlvbiwgdGhlIGdldHJhbmRvbSgpIGZ1bmN0aW9uIG9yIHRoZSBnZXRyYW5kb20oKSBzeXNjYWxsCitPU19VUkFORE9NX0RPTlRfVVNFX0ZEID0gKAorICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9HRVRFTlRST1BZJykgPT0gMQorICAgIG9yIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9HRVRSQU5ET00nKSA9PSAxCisgICAgb3Igc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdIQVZFX0dFVFJBTkRPTV9TWVNDQUxMJykgPT0gMSkKIAotQHVuaXR0ZXN0LnNraXBJZihIQVZFX0dFVEVOVFJPUFksCi0gICAgICAgICAgICAgICAgICJnZXRlbnRyb3B5KCkgZG9lcyBub3QgdXNlIGEgZmlsZSBkZXNjcmlwdG9yIikKK0B1bml0dGVzdC5za2lwSWYoT1NfVVJBTkRPTV9ET05UX1VTRV9GRCAsCisgICAgICAgICAgICAgICAgICJvcy5yYW5kb20oKSBkb2VzIG5vdCB1c2UgYSBmaWxlIGRlc2NyaXB0b3IiKQogY2xhc3MgVVJhbmRvbUZEVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHJlc291cmNlLCAidGVzdCByZXF1aXJlcyB0aGUgcmVzb3VyY2UgbW9kdWxlIikKICAgICBkZWYgdGVzdF91cmFuZG9tX2ZhaWx1cmUoc2VsZik6CkBAIC0xMTUxLDggKzEyNzksMTAgQEAKICAgICAgICAgY29kZSA9ICIiImlmIDE6CiAgICAgICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgICAgIGltcG9ydCB0ZXN0LnN1cHBvcnQKICAgICAgICAgICAgIG9zLnVyYW5kb20oNCkKLSAgICAgICAgICAgIG9zLmNsb3NlcmFuZ2UoMywgMjU2KQorICAgICAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpOgorICAgICAgICAgICAgICAgIG9zLmNsb3NlcmFuZ2UoMywgMjU2KQogICAgICAgICAgICAgc3lzLnN0ZG91dC5idWZmZXIud3JpdGUob3MudXJhbmRvbSg0KSkKICAgICAgICAgICAgICIiIgogICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctU2MnLCBjb2RlKQpAQCAtMTE2NiwxNiArMTI5NiwxOCBAQAogICAgICAgICBjb2RlID0gIiIiaWYgMToKICAgICAgICAgICAgIGltcG9ydCBvcwogICAgICAgICAgICAgaW1wb3J0IHN5cworICAgICAgICAgICAgaW1wb3J0IHRlc3Quc3VwcG9ydAogICAgICAgICAgICAgb3MudXJhbmRvbSg0KQotICAgICAgICAgICAgZm9yIGZkIGluIHJhbmdlKDMsIDI1Nik6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShmZCkKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICMgRm91bmQgdGhlIHVyYW5kb20gZmQgKFhYWCBob3BlZnVsbHkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBvcy5jbG9zZXJhbmdlKDMsIDI1NikKKyAgICAgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LlN1cHByZXNzQ3Jhc2hSZXBvcnQoKToKKyAgICAgICAgICAgICAgICBmb3IgZmQgaW4gcmFuZ2UoMywgMjU2KToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBGb3VuZCB0aGUgdXJhbmRvbSBmZCAoWFhYIGhvcGVmdWxseSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgb3MuY2xvc2VyYW5nZSgzLCAyNTYpCiAgICAgICAgICAgICB3aXRoIG9wZW4oe1RFU1RGTiFyfSwgJ3JiJykgYXMgZjoKICAgICAgICAgICAgICAgICBvcy5kdXAyKGYuZmlsZW5vKCksIGZkKQogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKG9zLnVyYW5kb20oNCkpCkBAIC0xNDAxLDYgKzE1MzMsMTYgQEAKICAgICBkZWYgdGVzdF93cml0ZXYoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2sob3Mud3JpdGV2LCBbYidhYmMnXSkKIAorICAgIGRlZiB0ZXN0X2luaGVyaXRhYmxlKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKG9zLmdldF9pbmhlcml0YWJsZSkKKyAgICAgICAgc2VsZi5jaGVjayhvcy5zZXRfaW5oZXJpdGFibGUsIFRydWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0X2Jsb2NraW5nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWRzIG9zLmdldF9ibG9ja2luZygpIGFuZCBvcy5zZXRfYmxvY2tpbmcoKScpCisgICAgZGVmIHRlc3RfYmxvY2tpbmcoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2sob3MuZ2V0X2Jsb2NraW5nKQorICAgICAgICBzZWxmLmNoZWNrKG9zLnNldF9ibG9ja2luZywgVHJ1ZSkKKwogCiBjbGFzcyBMaW5rVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTE4NDgsNiArMTk5MCwzNyBAQAogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShsZXZlbDEpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJXaW4zMiBzcGVjaWZpYyB0ZXN0cyIpCitjbGFzcyBXaW4zMkp1bmN0aW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGp1bmN0aW9uID0gJ2p1bmN0aW9udGVzdCcKKyAgICBqdW5jdGlvbl90YXJnZXQgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKHNlbGYuanVuY3Rpb25fdGFyZ2V0KQorICAgICAgICBhc3NlcnQgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuanVuY3Rpb24pCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYuanVuY3Rpb24pOgorICAgICAgICAgICAgIyBvcy5ybWRpciBkZWxlZ2F0ZXMgdG8gV2luZG93cycgUmVtb3ZlRGlyZWN0b3J5VywKKyAgICAgICAgICAgICMgd2hpY2ggcmVtb3ZlcyBqdW5jdGlvbiBwb2ludHMgc2FmZWx5LgorICAgICAgICAgICAgb3Mucm1kaXIoc2VsZi5qdW5jdGlvbikKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9qdW5jdGlvbihzZWxmKToKKyAgICAgICAgX3dpbmFwaS5DcmVhdGVKdW5jdGlvbihzZWxmLmp1bmN0aW9uX3RhcmdldCwgc2VsZi5qdW5jdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHNlbGYuanVuY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2RpcihzZWxmLmp1bmN0aW9uKSkKKworICAgICAgICAjIEp1bmN0aW9ucyBhcmUgbm90IHJlY29nbml6ZWQgYXMgbGlua3MuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2xpbmsoc2VsZi5qdW5jdGlvbikpCisKKyAgICBkZWYgdGVzdF91bmxpbmtfcmVtb3Zlc19qdW5jdGlvbihzZWxmKToKKyAgICAgICAgX3dpbmFwaS5DcmVhdGVKdW5jdGlvbihzZWxmLmp1bmN0aW9uX3RhcmdldCwgc2VsZi5qdW5jdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHNlbGYuanVuY3Rpb24pKQorCisgICAgICAgIG9zLnVubGluayhzZWxmLmp1bmN0aW9uKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHNlbGYuanVuY3Rpb24pKQorCisKIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKIGNsYXNzIE5vbkxvY2FsU3ltbGlua1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMTkyMSw2ICsyMDk0LDEyIEBACiAgICAgICAgICMgV2UgYXJlIHRoZSBwYXJlbnQgb2Ygb3VyIHN1YnByb2Nlc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoc3Rkb3V0KSwgb3MuZ2V0cGlkKCkpCiAKKyAgICBkZWYgdGVzdF93YWl0cGlkKHNlbGYpOgorICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAncGFzcyddCisgICAgICAgIHBpZCA9IG9zLnNwYXdudihvcy5QX05PV0FJVCwgYXJnc1swXSwgYXJncykKKyAgICAgICAgc3RhdHVzID0gb3Mud2FpdHBpZChwaWQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAocGlkLCAwKSkKKwogCiAjIFRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhpcyBUZXN0Q2FzZSBjYXVzZWQgYXQgbGVhc3QgdHdvIGRpZmZlcmVudCBlcnJvcnMgb24KICMgKm5peCBidWlsZGJvdHMuIFRlbXBvcmFyaWx5IHNraXAgdGhpcyB0byBsZXQgdGhlIGJ1aWxkYm90cyBtb3ZlIGFsb25nLgpAQCAtMjA1NCwxMSArMjIzMywxMyBAQAogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLmtleSA9IHN1cHBvcnQudGhyZWFkaW5nX3NldHVwKCkKICAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShjbHMuREFUQSkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIHN1cHBvcnQudGhyZWFkaW5nX2NsZWFudXAoKmNscy5rZXkpCiAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMjU5Myw0MyArMjc3NCwyNTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXRfaW5oZXJpdGFibGUoc2xhdmVfZmQpLCBGYWxzZSkKIAogCi1Ac3VwcG9ydC5yZWFwX3RocmVhZHMKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgRmlsZVRlc3RzLAotICAgICAgICBTdGF0QXR0cmlidXRlVGVzdHMsCi0gICAgICAgIFV0aW1lVGVzdHMsCi0gICAgICAgIEVudmlyb25UZXN0cywKLSAgICAgICAgV2Fsa1Rlc3RzLAotICAgICAgICBGd2Fsa1Rlc3RzLAotICAgICAgICBNYWtlZGlyVGVzdHMsCi0gICAgICAgIERldk51bGxUZXN0cywKLSAgICAgICAgVVJhbmRvbVRlc3RzLAotICAgICAgICBVUmFuZG9tRkRUZXN0cywKLSAgICAgICAgRXhlY1Rlc3RzLAotICAgICAgICBXaW4zMkVycm9yVGVzdHMsCi0gICAgICAgIFRlc3RJbnZhbGlkRkQsCi0gICAgICAgIFBvc2l4VWlkR2lkVGVzdHMsCi0gICAgICAgIFBlcDM4M1Rlc3RzLAotICAgICAgICBXaW4zMktpbGxUZXN0cywKLSAgICAgICAgV2luMzJMaXN0ZGlyVGVzdHMsCi0gICAgICAgIFdpbjMyU3ltbGlua1Rlc3RzLAotICAgICAgICBOb25Mb2NhbFN5bWxpbmtUZXN0cywKLSAgICAgICAgRlNFbmNvZGluZ1Rlc3RzLAotICAgICAgICBEZXZpY2VFbmNvZGluZ1Rlc3RzLAotICAgICAgICBQaWRUZXN0cywKLSAgICAgICAgTG9naW5UZXN0cywKLSAgICAgICAgTGlua1Rlc3RzLAotICAgICAgICBUZXN0U2VuZGZpbGUsCi0gICAgICAgIFByb2dyYW1Qcmlvcml0eVRlc3RzLAotICAgICAgICBFeHRlbmRlZEF0dHJpYnV0ZVRlc3RzLAotICAgICAgICBXaW4zMkRlcHJlY2F0ZWRCeXRlc0FQSSwKLSAgICAgICAgVGVybXNpemVUZXN0cywKLSAgICAgICAgT1NFcnJvclRlc3RzLAotICAgICAgICBSZW1vdmVEaXJzVGVzdHMsCi0gICAgICAgIENQVUNvdW50VGVzdHMsCi0gICAgICAgIEZESW5oZXJpdGFuY2VUZXN0cywKLSAgICApCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0X2Jsb2NraW5nJyksCisgICAgICAgICAgICAgICAgICAgICAnbmVlZHMgb3MuZ2V0X2Jsb2NraW5nKCkgYW5kIG9zLnNldF9ibG9ja2luZygpJykKK2NsYXNzIEJsb2NraW5nVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2Jsb2NraW5nKHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oX19maWxlX18sIG9zLk9fUkRPTkxZKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIGZkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmdldF9ibG9ja2luZyhmZCksIFRydWUpCisKKyAgICAgICAgb3Muc2V0X2Jsb2NraW5nKGZkLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXRfYmxvY2tpbmcoZmQpLCBGYWxzZSkKKworICAgICAgICBvcy5zZXRfYmxvY2tpbmcoZmQsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZ2V0X2Jsb2NraW5nKGZkKSwgVHJ1ZSkKKworCisKK2NsYXNzIEV4cG9ydHNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rfb3NfYWxsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEluKCdvcGVuJywgb3MuX19hbGxfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignd2FsaycsIG9zLl9fYWxsX18pCisKKworY2xhc3MgVGVzdFNjYW5kaXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5wYXRoID0gb3MucGF0aC5yZWFscGF0aChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm10cmVlLCBzZWxmLnBhdGgpCisgICAgICAgIG9zLm1rZGlyKHNlbGYucGF0aCkKKworICAgIGRlZiBjcmVhdGVfZmlsZShzZWxmLCBuYW1lPSJmaWxlLnR4dCIpOgorICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLnBhdGgsIG5hbWUpCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgIndiIikgYXMgZnA6CisgICAgICAgICAgICBmcC53cml0ZShiJ3B5dGhvbicpCisgICAgICAgIHJldHVybiBmaWxlbmFtZQorCisgICAgZGVmIGdldF9lbnRyaWVzKHNlbGYsIG5hbWVzKToKKyAgICAgICAgZW50cmllcyA9IGRpY3QoKGVudHJ5Lm5hbWUsIGVudHJ5KQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgZW50cnkgaW4gb3Muc2NhbmRpcihzZWxmLnBhdGgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChlbnRyaWVzLmtleXMoKSksIG5hbWVzKQorICAgICAgICByZXR1cm4gZW50cmllcworCisgICAgZGVmIGFzc2VydF9zdGF0X2VxdWFsKHNlbGYsIHN0YXQxLCBzdGF0Miwgc2tpcF9maWVsZHMpOgorICAgICAgICBpZiBza2lwX2ZpZWxkczoKKyAgICAgICAgICAgIGZvciBhdHRyIGluIGRpcihzdGF0MSk6CisgICAgICAgICAgICAgICAgaWYgbm90IGF0dHIuc3RhcnRzd2l0aCgic3RfIik6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgYXR0ciBpbiAoInN0X2RldiIsICJzdF9pbm8iLCAic3RfbmxpbmsiKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIoc3RhdDEsIGF0dHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihzdGF0MiwgYXR0ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhdDEsIHN0YXQyLCBhdHRyKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdDEsIHN0YXQyKQorCisgICAgZGVmIGNoZWNrX2VudHJ5KHNlbGYsIGVudHJ5LCBuYW1lLCBpc19kaXIsIGlzX2ZpbGUsIGlzX3N5bWxpbmspOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5Lm5hbWUsIG5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkucGF0aCwgb3MucGF0aC5qb2luKHNlbGYucGF0aCwgbmFtZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkuaW5vZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0KGVudHJ5LnBhdGgsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuc3RfaW5vKQorCisgICAgICAgIGVudHJ5X3N0YXQgPSBvcy5zdGF0KGVudHJ5LnBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkuaXNfZGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdC5TX0lTRElSKGVudHJ5X3N0YXQuc3RfbW9kZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkuaXNfZmlsZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXQuU19JU1JFRyhlbnRyeV9zdGF0LnN0X21vZGUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5LmlzX3N5bWxpbmsoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmlzbGluayhlbnRyeS5wYXRoKSkKKworICAgICAgICBlbnRyeV9sc3RhdCA9IG9zLnN0YXQoZW50cnkucGF0aCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5LmlzX2Rpcihmb2xsb3dfc3ltbGlua3M9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXQuU19JU0RJUihlbnRyeV9sc3RhdC5zdF9tb2RlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5pc19maWxlKGZvbGxvd19zeW1saW5rcz1GYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdC5TX0lTUkVHKGVudHJ5X2xzdGF0LnN0X21vZGUpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X3N0YXRfZXF1YWwoZW50cnkuc3RhdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5X3N0YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MubmFtZSA9PSAnbnQnIGFuZCBub3QgaXNfc3ltbGluaykKKyAgICAgICAgc2VsZi5hc3NlcnRfc3RhdF9lcXVhbChlbnRyeS5zdGF0KGZvbGxvd19zeW1saW5rcz1GYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlfbHN0YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MubmFtZSA9PSAnbnQnKQorCisgICAgZGVmIHRlc3RfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgbGluayA9IGhhc2F0dHIob3MsICdsaW5rJykKKyAgICAgICAgc3ltbGluayA9IHN1cHBvcnQuY2FuX3N5bWxpbmsoKQorCisgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAiZGlyIikKKyAgICAgICAgb3MubWtkaXIoZGlybmFtZSkKKyAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlLnR4dCIpCisgICAgICAgIGlmIGxpbms6CisgICAgICAgICAgICBvcy5saW5rKGZpbGVuYW1lLCBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAibGlua19maWxlLnR4dCIpKQorICAgICAgICBpZiBzeW1saW5rOgorICAgICAgICAgICAgb3Muc3ltbGluayhkaXJuYW1lLCBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAic3ltbGlua19kaXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeT1UcnVlKQorICAgICAgICAgICAgb3Muc3ltbGluayhmaWxlbmFtZSwgb3MucGF0aC5qb2luKHNlbGYucGF0aCwgInN5bWxpbmtfZmlsZS50eHQiKSkKKworICAgICAgICBuYW1lcyA9IFsnZGlyJywgJ2ZpbGUudHh0J10KKyAgICAgICAgaWYgbGluazoKKyAgICAgICAgICAgIG5hbWVzLmFwcGVuZCgnbGlua19maWxlLnR4dCcpCisgICAgICAgIGlmIHN5bWxpbms6CisgICAgICAgICAgICBuYW1lcy5leHRlbmQoKCdzeW1saW5rX2RpcicsICdzeW1saW5rX2ZpbGUudHh0JykpCisgICAgICAgIGVudHJpZXMgPSBzZWxmLmdldF9lbnRyaWVzKG5hbWVzKQorCisgICAgICAgIGVudHJ5ID0gZW50cmllc1snZGlyJ10KKyAgICAgICAgc2VsZi5jaGVja19lbnRyeShlbnRyeSwgJ2RpcicsIFRydWUsIEZhbHNlLCBGYWxzZSkKKworICAgICAgICBlbnRyeSA9IGVudHJpZXNbJ2ZpbGUudHh0J10KKyAgICAgICAgc2VsZi5jaGVja19lbnRyeShlbnRyeSwgJ2ZpbGUudHh0JywgRmFsc2UsIFRydWUsIEZhbHNlKQorCisgICAgICAgIGlmIGxpbms6CisgICAgICAgICAgICBlbnRyeSA9IGVudHJpZXNbJ2xpbmtfZmlsZS50eHQnXQorICAgICAgICAgICAgc2VsZi5jaGVja19lbnRyeShlbnRyeSwgJ2xpbmtfZmlsZS50eHQnLCBGYWxzZSwgVHJ1ZSwgRmFsc2UpCisKKyAgICAgICAgaWYgc3ltbGluazoKKyAgICAgICAgICAgIGVudHJ5ID0gZW50cmllc1snc3ltbGlua19kaXInXQorICAgICAgICAgICAgc2VsZi5jaGVja19lbnRyeShlbnRyeSwgJ3N5bWxpbmtfZGlyJywgVHJ1ZSwgRmFsc2UsIFRydWUpCisKKyAgICAgICAgICAgIGVudHJ5ID0gZW50cmllc1snc3ltbGlua19maWxlLnR4dCddCisgICAgICAgICAgICBzZWxmLmNoZWNrX2VudHJ5KGVudHJ5LCAnc3ltbGlua19maWxlLnR4dCcsIEZhbHNlLCBUcnVlLCBUcnVlKQorCisgICAgZGVmIGdldF9lbnRyeShzZWxmLCBuYW1lKToKKyAgICAgICAgZW50cmllcyA9IGxpc3Qob3Muc2NhbmRpcihzZWxmLnBhdGgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlbnRyaWVzKSwgMSkKKworICAgICAgICBlbnRyeSA9IGVudHJpZXNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5uYW1lLCBuYW1lKQorICAgICAgICByZXR1cm4gZW50cnkKKworICAgIGRlZiBjcmVhdGVfZmlsZV9lbnRyeShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmNyZWF0ZV9maWxlKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X2VudHJ5KG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpKQorCisgICAgZGVmIHRlc3RfY3VycmVudF9kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gc2VsZi5jcmVhdGVfZmlsZSgpCisgICAgICAgIG9sZF9kaXIgPSBvcy5nZXRjd2QoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5jaGRpcihzZWxmLnBhdGgpCisKKyAgICAgICAgICAgICMgY2FsbCBzY2FuZGlyKCkgd2l0aG91dCBwYXJhbWV0ZXI6IGl0IG11c3QgbGlzdCB0aGUgY29udGVudAorICAgICAgICAgICAgIyBvZiB0aGUgY3VycmVudCBkaXJlY3RvcnkKKyAgICAgICAgICAgIGVudHJpZXMgPSBkaWN0KChlbnRyeS5uYW1lLCBlbnRyeSkgZm9yIGVudHJ5IGluIG9zLnNjYW5kaXIoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGVudHJpZXMua2V5cygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpXSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNoZGlyKG9sZF9kaXIpCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBlbnRyeSA9IHNlbGYuY3JlYXRlX2ZpbGVfZW50cnkoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZW50cnkpLCAiPERpckVudHJ5ICdmaWxlLnR4dCc+IikKKworICAgIGRlZiB0ZXN0X3JlbW92ZWRfZGlyKHNlbGYpOgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNlbGYucGF0aCwgJ2RpcicpCisKKyAgICAgICAgb3MubWtkaXIocGF0aCkKKyAgICAgICAgZW50cnkgPSBzZWxmLmdldF9lbnRyeSgnZGlyJykKKyAgICAgICAgb3Mucm1kaXIocGF0aCkKKworICAgICAgICAjIE9uIFBPU0lYLCBpc19kaXIoKSByZXN1bHQgZGVwZW5kcyBpZiBzY2FuZGlyKCkgZmlsbGVkIGRfdHlwZSBvciBub3QKKyAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVudHJ5LmlzX2RpcigpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVudHJ5LmlzX2ZpbGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlbnRyeS5pc19zeW1saW5rKCkpCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBlbnRyeS5pbm9kZSkKKyAgICAgICAgICAgICMgZG9uJ3QgZmFpbAorICAgICAgICAgICAgZW50cnkuc3RhdCgpCisgICAgICAgICAgICBlbnRyeS5zdGF0KGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihlbnRyeS5pbm9kZSgpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIGVudHJ5LnN0YXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgZW50cnkuc3RhdCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorCisgICAgZGVmIHRlc3RfcmVtb3ZlZF9maWxlKHNlbGYpOgorICAgICAgICBlbnRyeSA9IHNlbGYuY3JlYXRlX2ZpbGVfZW50cnkoKQorICAgICAgICBvcy51bmxpbmsoZW50cnkucGF0aCkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVudHJ5LmlzX2RpcigpKQorICAgICAgICAjIE9uIFBPU0lYLCBpc19kaXIoKSByZXN1bHQgZGVwZW5kcyBpZiBzY2FuZGlyKCkgZmlsbGVkIGRfdHlwZSBvciBub3QKKyAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVudHJ5LmlzX2ZpbGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlbnRyeS5pc19zeW1saW5rKCkpCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBlbnRyeS5pbm9kZSkKKyAgICAgICAgICAgICMgZG9uJ3QgZmFpbAorICAgICAgICAgICAgZW50cnkuc3RhdCgpCisgICAgICAgICAgICBlbnRyeS5zdGF0KGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihlbnRyeS5pbm9kZSgpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIGVudHJ5LnN0YXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgZW50cnkuc3RhdCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorCisgICAgZGVmIHRlc3RfYnJva2VuX3N5bWxpbmsoc2VsZik6CisgICAgICAgIGlmIG5vdCBzdXBwb3J0LmNhbl9zeW1saW5rKCk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5za2lwVGVzdCgnY2Fubm90IGNyZWF0ZSBzeW1ib2xpYyBsaW5rJykKKworICAgICAgICBmaWxlbmFtZSA9IHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKKyAgICAgICAgb3Muc3ltbGluayhmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAic3ltbGluay50eHQiKSkKKyAgICAgICAgZW50cmllcyA9IHNlbGYuZ2V0X2VudHJpZXMoWydmaWxlLnR4dCcsICdzeW1saW5rLnR4dCddKQorICAgICAgICBlbnRyeSA9IGVudHJpZXNbJ3N5bWxpbmsudHh0J10KKyAgICAgICAgb3MudW5saW5rKGZpbGVuYW1lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihlbnRyeS5pbm9kZSgpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVudHJ5LmlzX2RpcigpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVudHJ5LmlzX2ZpbGUoKSkgICMgYnJva2VuIHN5bWxpbmsgcmV0dXJucyBGYWxzZQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVudHJ5LmlzX2Rpcihmb2xsb3dfc3ltbGlua3M9RmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVudHJ5LmlzX2ZpbGUoZm9sbG93X3N5bWxpbmtzPUZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVudHJ5LmlzX3N5bWxpbmsoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIGVudHJ5LnN0YXQpCisgICAgICAgICMgZG9uJ3QgZmFpbAorICAgICAgICBlbnRyeS5zdGF0KGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKworICAgIGRlZiB0ZXN0X2J5dGVzKHNlbGYpOgorICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6CisgICAgICAgICAgICAjIE9uIFdpbmRvd3MsIG9zLnNjYW5kaXIoYnl0ZXMpIG11c3QgcmFpc2UgYW4gZXhjZXB0aW9uCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLnNjYW5kaXIsIGInLicpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlLnR4dCIpCisKKyAgICAgICAgcGF0aF9ieXRlcyA9IG9zLmZzZW5jb2RlKHNlbGYucGF0aCkKKyAgICAgICAgZW50cmllcyA9IGxpc3Qob3Muc2NhbmRpcihwYXRoX2J5dGVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZW50cmllcyksIDEsIGVudHJpZXMpCisgICAgICAgIGVudHJ5ID0gZW50cmllc1swXQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkubmFtZSwgYidmaWxlLnR4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcy5mc2VuY29kZShvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAnZmlsZS50eHQnKSkpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9wYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgb3Muc2NhbmRpciwgJycpCisKKyAgICBkZWYgdGVzdF9jb25zdW1lX2l0ZXJhdG9yX3R3aWNlKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlLnR4dCIpCisgICAgICAgIGl0ZXJhdG9yID0gb3Muc2NhbmRpcihzZWxmLnBhdGgpCisKKyAgICAgICAgZW50cmllcyA9IGxpc3QoaXRlcmF0b3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVudHJpZXMpLCAxLCBlbnRyaWVzKQorCisgICAgICAgICMgY2hlY2sgdGhhbiBjb25zdW1pbmcgdGhlIGl0ZXJhdG9yIHR3aWNlIGRvZXNuJ3QgcmFpc2UgZXhjZXB0aW9uCisgICAgICAgIGVudHJpZXMyID0gbGlzdChpdGVyYXRvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZW50cmllczIpLCAwLCBlbnRyaWVzMikKKworICAgIGRlZiB0ZXN0X2JhZF9wYXRoX3R5cGUoc2VsZik6CisgICAgICAgIGZvciBvYmogaW4gWzEyMzQsIDEuMjM0LCB7fSwgW11dOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcy5zY2FuZGlyLCBvYmopCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vc3hfZW52LnB5IGIvTGliL3Rlc3QvdGVzdF9vc3hfZW52LnB5CmluZGV4IGQ4ZWI5ODEuLjhhM2JjNWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3N4X2Vudi5weQorKysgYi9MaWIvdGVzdC90ZXN0X29zeF9lbnYucHkKQEAgLTIsNyArMiw3IEBACiBUZXN0IHN1aXRlIGZvciBPUyBYIGludGVycHJldGVyIGVudmlyb25tZW50IHZhcmlhYmxlcy4KICIiIgogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgRW52aXJvbm1lbnRWYXJHdWFyZCwgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgRW52aXJvbm1lbnRWYXJHdWFyZAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIGltcG9ydCBzeXNjb25maWcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkKaW5kZXggZTc5NjhjYy4uM2QzMDFiNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkKQEAgLTQsNyArNCw3IEBACiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBzdHJ1Y3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fZmFpbHVyZQorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCiAKICMKICMgIEZpcnN0LCB3ZSB0ZXN0IHRoYXQgd2UgY2FuIGdlbmVyYXRlIHRyZWVzIGZyb20gdmFsaWQgc291cmNlIGZyYWdtZW50cywKQEAgLTYzLDYgKzYzLDIyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoeWllbGQpOlxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIHlpZWxkIHhcbiIpCiAKKyAgICBkZWYgdGVzdF9hd2FpdF9zdGF0ZW1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImFzeW5jIGRlZiBmKCk6XG4gYXdhaXQgc210aCgpIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiYXN5bmMgZGVmIGYoKTpcbiBmb28gPSBhd2FpdCBzbXRoKCkiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhc3luYyBkZWYgZigpOlxuIGZvbywgYmFyID0gYXdhaXQgc210aCgpIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiYXN5bmMgZGVmIGYoKTpcbiAoYXdhaXQgc210aCgpKSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImFzeW5jIGRlZiBmKCk6XG4gZm9vKChhd2FpdCBzbXRoKCkpKSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImFzeW5jIGRlZiBmKCk6XG4gYXdhaXQgZm9vKCk7IHJldHVybiA0MiIpCisKKyAgICBkZWYgdGVzdF9hc3luY193aXRoX3N0YXRlbWVudChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiYXN5bmMgZGVmIGYoKTpcbiBhc3luYyB3aXRoIDE6IHBhc3MiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhc3luYyBkZWYgZigpOlxuIGFzeW5jIHdpdGggYSBhcyBiLCBjIGFzIGQ6IHBhc3MiKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZm9yX3N0YXRlbWVudChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiYXN5bmMgZGVmIGYoKTpcbiBhc3luYyBmb3IgaSBpbiAoKTogcGFzcyIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImFzeW5jIGRlZiBmKCk6XG4gYXN5bmMgZm9yIGksIGIgaW4gKCk6IHBhc3MiKQorCiAgICAgZGVmIHRlc3Rfbm9ubG9jYWxfc3RhdGVtZW50KHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOlxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeCA9IDBcbiIKQEAgLTMxMyw3ICszMjksMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOlxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmFpc2UgVmFsdWVFcnJvciBmcm9tIGVcbiIpCiAKKyAgICBkZWYgdGVzdF9saXN0X2Rpc3BsYXlzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ1tdJykKKyAgICAgICAgc2VsZi5jaGVja19leHByKCdbKnsyfSwgMywgKls0XV0nKQorCiAgICAgZGVmIHRlc3Rfc2V0X2Rpc3BsYXlzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ3sqezJ9LCAzLCAqWzRdfScpCiAgICAgICAgIHNlbGYuY2hlY2tfZXhwcignezJ9JykKICAgICAgICAgc2VsZi5jaGVja19leHByKCd7Mix9JykKICAgICAgICAgc2VsZi5jaGVja19leHByKCd7MiwgM30nKQpAQCAtMzI1LDYgKzM0NiwxNSBAQAogICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ3thOmIsfScpCiAgICAgICAgIHNlbGYuY2hlY2tfZXhwcigne2E6YiwgYzpkfScpCiAgICAgICAgIHNlbGYuY2hlY2tfZXhwcigne2E6YiwgYzpkLH0nKQorICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ3sqKnt9fScpCisgICAgICAgIHNlbGYuY2hlY2tfZXhwcigneyoqe30sIDM6NCwgKip7NTo2LCA3Ojh9fScpCisKKyAgICBkZWYgdGVzdF9hcmd1bWVudF91bnBhY2tpbmcoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZXhwcigiZigqYSwgKipiKSIpCisgICAgICAgIHNlbGYuY2hlY2tfZXhwcignZihhLCAqYiwgKmMsICpkKScpCisgICAgICAgIHNlbGYuY2hlY2tfZXhwcignZigqKmEsICoqYiknKQorICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ2YoMiwgKmEsICpiLCAqKmIsICoqYywgKipkKScpCisgICAgICAgIHNlbGYuY2hlY2tfZXhwcigiZigqYiwgKigpIG9yICgpIGFuZCAoKSwgKip7fSBhbmQge30sICoqKCkgb3Ige30pIikKIAogICAgIGRlZiB0ZXN0X3NldF9jb21wcmVoZW5zaW9ucyhzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19leHByKCd7eCBmb3IgeCBpbiBzZXF9JykKQEAgLTczMCwxNiArNzYwLDUgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgcGFyc2VyLmV4cHIoImEiLCAiYiIpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgUm91bmR0cmlwTGVnYWxTeW50YXhUZXN0Q2FzZSwKLSAgICAgICAgSWxsZWdhbFN5bnRheFRlc3RDYXNlLAotICAgICAgICBDb21waWxlVGVzdENhc2UsCi0gICAgICAgIFBhcnNlclN0YWNrTGltaXRUZXN0Q2FzZSwKLSAgICAgICAgU1RPYmplY3RUZXN0Q2FzZSwKLSAgICAgICAgT3RoZXJQYXJzZXJDYXNlLAotICAgICkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BhdGhsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3BhdGhsaWIucHkKaW5kZXggNmIzYzcwZC4uNDkwZDQyMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wYXRobGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGF0aGxpYi5weQpAQCAtNCwxMyArNCwxMCBAQAogaW1wb3J0IGVycm5vCiBpbXBvcnQgcGF0aGxpYgogaW1wb3J0IHBpY2tsZQotaW1wb3J0IHNodXRpbAogaW1wb3J0IHNvY2tldAogaW1wb3J0IHN0YXQKLWltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogVEVTVEZOID0gc3VwcG9ydC5URVNURk4KQEAgLTc2Myw3ICs3NjAsNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy8vU29tZS9TSEFSRS9hL0InKSwgUCgnLy9zb21FL3NoYXJlL0EvYicpKQogCiAgICAgZGVmIHRlc3RfYXNfdXJpKHNlbGYpOgotICAgICAgICBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgcXVvdGVfZnJvbV9ieXRlcwogICAgICAgICBQID0gc2VsZi5jbHMKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgIFAoJy9hL2InKS5hc191cmkoKQpAQCAtMTMwNCwxMSArMTMwMCw1NSBAQAogICAgICAgICBwID0gc2VsZi5jbHMuY3dkKCkKICAgICAgICAgc2VsZi5fdGVzdF9jd2QocCkKIAorICAgIGRlZiBfdGVzdF9ob21lKHNlbGYsIHApOgorICAgICAgICBxID0gc2VsZi5jbHMob3MucGF0aC5leHBhbmR1c2VyKCd+JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCwgcSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocCksIHN0cihxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKHApLCB0eXBlKHEpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5pc19hYnNvbHV0ZSgpKQorCisgICAgZGVmIHRlc3RfaG9tZShzZWxmKToKKyAgICAgICAgcCA9IHNlbGYuY2xzLmhvbWUoKQorICAgICAgICBzZWxmLl90ZXN0X2hvbWUocCkKKworICAgIGRlZiB0ZXN0X3NhbWVmaWxlKHNlbGYpOgorICAgICAgICBmaWxlQV9wYXRoID0gb3MucGF0aC5qb2luKEJBU0UsICdmaWxlQScpCisgICAgICAgIGZpbGVCX3BhdGggPSBvcy5wYXRoLmpvaW4oQkFTRSwgJ2RpckInLCAnZmlsZUInKQorICAgICAgICBwID0gc2VsZi5jbHMoZmlsZUFfcGF0aCkKKyAgICAgICAgcHAgPSBzZWxmLmNscyhmaWxlQV9wYXRoKQorICAgICAgICBxID0gc2VsZi5jbHMoZmlsZUJfcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuc2FtZWZpbGUoZmlsZUFfcGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLnNhbWVmaWxlKHBwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwLnNhbWVmaWxlKGZpbGVCX3BhdGgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHAuc2FtZWZpbGUocSkpCisgICAgICAgICMgVGVzdCB0aGUgbm9uLWV4aXN0ZW50IGZpbGUgY2FzZQorICAgICAgICBub25fZXhpc3RlbnQgPSBvcy5wYXRoLmpvaW4oQkFTRSwgJ2ZvbycpCisgICAgICAgIHIgPSBzZWxmLmNscyhub25fZXhpc3RlbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBwLnNhbWVmaWxlLCByKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgcC5zYW1lZmlsZSwgbm9uX2V4aXN0ZW50KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgci5zYW1lZmlsZSwgcCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHIuc2FtZWZpbGUsIG5vbl9leGlzdGVudCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHIuc2FtZWZpbGUsIHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCByLnNhbWVmaWxlLCBub25fZXhpc3RlbnQpCisKICAgICBkZWYgdGVzdF9lbXB0eV9wYXRoKHNlbGYpOgogICAgICAgICAjIFRoZSBlbXB0eSBwYXRoIHBvaW50cyB0byAnLicKICAgICAgICAgcCA9IHNlbGYuY2xzKCcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3RhdCgpLCBvcy5zdGF0KCcuJykpCiAKKyAgICBkZWYgdGVzdF9leHBhbmR1c2VyX2NvbW1vbihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHAgPSBQKCd+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmV4cGFuZHVzZXIoKSwgUChvcy5wYXRoLmV4cGFuZHVzZXIoJ34nKSkpCisgICAgICAgIHAgPSBQKCdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZXhwYW5kdXNlcigpLCBwKQorICAgICAgICBwID0gUCgnL34nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZXhwYW5kdXNlcigpLCBwKQorICAgICAgICBwID0gUCgnLi4vficpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5leHBhbmR1c2VyKCksIHApCisgICAgICAgIHAgPSBQKFAoJycpLmFic29sdXRlKCkuYW5jaG9yKSAvICd+JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZXhwYW5kdXNlcigpLCBwKQorCiAgICAgZGVmIHRlc3RfZXhpc3RzKHNlbGYpOgogICAgICAgICBQID0gc2VsZi5jbHMKICAgICAgICAgcCA9IFAoQkFTRSkKQEAgLTEzMzYsNiArMTM3NiwyMyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGYsIGlvLlJhd0lPQmFzZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCkuc3RyaXAoKSwgYiJ0aGlzIGlzIGZpbGUgQSIpCiAKKyAgICBkZWYgdGVzdF9yZWFkX3dyaXRlX2J5dGVzKHNlbGYpOgorICAgICAgICBwID0gc2VsZi5jbHMoQkFTRSkKKyAgICAgICAgKHAgLyAnZmlsZUEnKS53cml0ZV9ieXRlcyhiJ2FiY2RlZmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChwIC8gJ2ZpbGVBJykucmVhZF9ieXRlcygpLCBiJ2FiY2RlZmcnKQorICAgICAgICAjIGNoZWNrIHRoYXQgdHJ5aW5nIHRvIHdyaXRlIHN0ciBkb2VzIG5vdCB0cnVuY2F0ZSB0aGUgZmlsZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIChwIC8gJ2ZpbGVBJykud3JpdGVfYnl0ZXMsICdzb21lc3RyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgocCAvICdmaWxlQScpLnJlYWRfYnl0ZXMoKSwgYidhYmNkZWZnJykKKworICAgIGRlZiB0ZXN0X3JlYWRfd3JpdGVfdGV4dChzZWxmKToKKyAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0UpCisgICAgICAgIChwIC8gJ2ZpbGVBJykud3JpdGVfdGV4dCgnw6RiY2RlZmcnLCBlbmNvZGluZz0nbGF0aW4tMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHAgLyAnZmlsZUEnKS5yZWFkX3RleHQoCisgICAgICAgICAgICBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J2lnbm9yZScpLCAnYmNkZWZnJykKKyAgICAgICAgIyBjaGVjayB0aGF0IHRyeWluZyB0byB3cml0ZSBieXRlcyBkb2VzIG5vdCB0cnVuY2F0ZSB0aGUgZmlsZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIChwIC8gJ2ZpbGVBJykud3JpdGVfdGV4dCwgYidzb21lYnl0ZXMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChwIC8gJ2ZpbGVBJykucmVhZF90ZXh0KGVuY29kaW5nPSdsYXRpbi0xJyksICfDpGJjZGVmZycpCisKICAgICBkZWYgdGVzdF9pdGVyZGlyKHNlbGYpOgogICAgICAgICBQID0gc2VsZi5jbHMKICAgICAgICAgcCA9IFAoQkFTRSkKQEAgLTE2NTksNiArMTcxNiw1OSBAQAogICAgICAgICAjIHRoZSBwYXJlbnQncyBwZXJtaXNzaW9ucyBmb2xsb3cgdGhlIGRlZmF1bHQgcHJvY2VzcyBzZXR0aW5ncwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXQuU19JTU9ERShwLnBhcmVudC5zdGF0KCkuc3RfbW9kZSksIG1vZGUpCiAKKyAgICBkZWYgdGVzdF9ta2Rpcl9leGlzdF9vayhzZWxmKToKKyAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0UsICdkaXJCJykKKyAgICAgICAgc3RfY3RpbWVfZmlyc3QgPSBwLnN0YXQoKS5zdF9jdGltZQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5leGlzdHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuaXNfZGlyKCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHAubWtkaXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorICAgICAgICBwLm1rZGlyKGV4aXN0X29rPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLmV4aXN0cygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3RhdCgpLnN0X2N0aW1lLCBzdF9jdGltZV9maXJzdCkKKworICAgIGRlZiB0ZXN0X21rZGlyX2V4aXN0X29rX3dpdGhfcGFyZW50KHNlbGYpOgorICAgICAgICBwID0gc2VsZi5jbHMoQkFTRSwgJ2RpckMnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5leGlzdHMoKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlRXhpc3RzRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcC5ta2RpcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FRVhJU1QpCisgICAgICAgIHAgPSBwIC8gJ25ld2RpckMnCisgICAgICAgIHAubWtkaXIocGFyZW50cz1UcnVlKQorICAgICAgICBzdF9jdGltZV9maXJzdCA9IHAuc3RhdCgpLnN0X2N0aW1lCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLmV4aXN0cygpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVFeGlzdHNFcnJvcikgYXMgY206CisgICAgICAgICAgICBwLm1rZGlyKHBhcmVudHM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVFWElTVCkKKyAgICAgICAgcC5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLmV4aXN0cygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3RhdCgpLnN0X2N0aW1lLCBzdF9jdGltZV9maXJzdCkKKworICAgIGRlZiB0ZXN0X21rZGlyX3dpdGhfY2hpbGRfZmlsZShzZWxmKToKKyAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0UsICdkaXJCJywgJ2ZpbGVCJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuZXhpc3RzKCkpCisgICAgICAgICMgQW4gZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIHRoZSBsYXN0IHBhdGggY29tcG9uZW50IGlzIGFuIGV4aXN0aW5nCisgICAgICAgICMgcmVndWxhciBmaWxlLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgZXhpc3Rfb2sgaXMgdHJ1ZSBvciBub3QuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHAubWtkaXIocGFyZW50cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVFeGlzdHNFcnJvcikgYXMgY206CisgICAgICAgICAgICBwLm1rZGlyKHBhcmVudHM9VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVFWElTVCkKKworICAgIGRlZiB0ZXN0X21rZGlyX25vX3BhcmVudHNfZmlsZShzZWxmKToKKyAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0UsICdmaWxlQScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLmV4aXN0cygpKQorICAgICAgICAjIEFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiB0aGUgbGFzdCBwYXRoIGNvbXBvbmVudCBpcyBhbiBleGlzdGluZworICAgICAgICAjIHJlZ3VsYXIgZmlsZSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGV4aXN0X29rIGlzIHRydWUgb3Igbm90LgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVFeGlzdHNFcnJvcikgYXMgY206CisgICAgICAgICAgICBwLm1rZGlyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVFWElTVCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlRXhpc3RzRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcC5ta2RpcihleGlzdF9vaz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorCiAgICAgQHdpdGhfc3ltbGlua3MKICAgICBkZWYgdGVzdF9zeW1saW5rX3RvKHNlbGYpOgogICAgICAgICBQID0gc2VsZi5jbHMoQkFTRSkKQEAgLTE5MDEsNyArMjAxMSw2IEBACiAgICAgQHdpdGhfc3ltbGlua3MKICAgICBkZWYgdGVzdF9yZXNvbHZlX2xvb3Aoc2VsZik6CiAgICAgICAgICMgTG9vcCBkZXRlY3Rpb24gZm9yIGJyb2tlbiBzeW1saW5rcyB1bmRlciBQT1NJWAotICAgICAgICBQID0gc2VsZi5jbHMKICAgICAgICAgIyBMb29wcyB3aXRoIHJlbGF0aXZlIHN5bWxpbmtzCiAgICAgICAgIG9zLnN5bWxpbmsoJ2xpbmtYL2luc2lkZScsIGpvaW4oJ2xpbmtYJykpCiAgICAgICAgIHNlbGYuX2NoZWNrX3N5bWxpbmtfbG9vcChCQVNFLCAnbGlua1gnKQpAQCAtMTkzMyw2ICsyMDQyLDQ4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2l2ZW4sIGV4cGVjdCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQocC5yZ2xvYigiRklMRWQqIikpLCBzZXQoKSkKIAorICAgIGRlZiB0ZXN0X2V4cGFuZHVzZXIoc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3B3ZCcpCisgICAgICAgIGltcG9ydCBwd2QKKyAgICAgICAgcHdkZW50ID0gcHdkLmdldHB3dWlkKG9zLmdldHVpZCgpKQorICAgICAgICB1c2VybmFtZSA9IHB3ZGVudC5wd19uYW1lCisgICAgICAgIHVzZXJob21lID0gcHdkZW50LnB3X2Rpci5yc3RyaXAoJy8nKQorICAgICAgICAjIGZpbmQgYXJiaXRyYXJ5IGRpZmZlcmVudCB1c2VyIChpZiBleGlzdHMpCisgICAgICAgIGZvciBwd2RlbnQgaW4gcHdkLmdldHB3YWxsKCk6CisgICAgICAgICAgICBvdGhlcm5hbWUgPSBwd2RlbnQucHdfbmFtZQorICAgICAgICAgICAgb3RoZXJob21lID0gcHdkZW50LnB3X2Rpci5yc3RyaXAoJy8nKQorICAgICAgICAgICAgaWYgb3RoZXJuYW1lICE9IHVzZXJuYW1lIGFuZCBvdGhlcmhvbWU6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICBwMSA9IFAoJ34vRG9jdW1lbnRzJykKKyAgICAgICAgcDIgPSBQKCd+JyArIHVzZXJuYW1lICsgJy9Eb2N1bWVudHMnKQorICAgICAgICBwMyA9IFAoJ34nICsgb3RoZXJuYW1lICsgJy9Eb2N1bWVudHMnKQorICAgICAgICBwNCA9IFAoJy4uL34nICsgdXNlcm5hbWUgKyAnL0RvY3VtZW50cycpCisgICAgICAgIHA1ID0gUCgnL34nICsgdXNlcm5hbWUgKyAnL0RvY3VtZW50cycpCisgICAgICAgIHA2ID0gUCgnJykKKyAgICAgICAgcDcgPSBQKCd+ZmFrZXVzZXIvRG9jdW1lbnRzJykKKworICAgICAgICB3aXRoIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKKyAgICAgICAgICAgIGVudi5wb3AoJ0hPTUUnLCBOb25lKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAxLmV4cGFuZHVzZXIoKSwgUCh1c2VyaG9tZSkgLyAnRG9jdW1lbnRzJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDIuZXhwYW5kdXNlcigpLCBQKHVzZXJob21lKSAvICdEb2N1bWVudHMnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMy5leHBhbmR1c2VyKCksIFAob3RoZXJob21lKSAvICdEb2N1bWVudHMnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNC5leHBhbmR1c2VyKCksIHA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNS5leHBhbmR1c2VyKCksIHA1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNi5leHBhbmR1c2VyKCksIHA2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBwNy5leHBhbmR1c2VyKQorCisgICAgICAgICAgICBlbnZbJ0hPTUUnXSA9ICcvdG1wJworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMS5leHBhbmR1c2VyKCksIFAoJy90bXAvRG9jdW1lbnRzJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLmV4cGFuZHVzZXIoKSwgUCh1c2VyaG9tZSkgLyAnRG9jdW1lbnRzJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDMuZXhwYW5kdXNlcigpLCBQKG90aGVyaG9tZSkgLyAnRG9jdW1lbnRzJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDQuZXhwYW5kdXNlcigpLCBwNCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDUuZXhwYW5kdXNlcigpLCBwNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDYuZXhwYW5kdXNlcigpLCBwNikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcDcuZXhwYW5kdXNlcikKKwogCiBAb25seV9udAogY2xhc3MgV2luZG93c1BhdGhUZXN0KF9CYXNlUGF0aFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTE5NDgsNiArMjA5OSw2MSBAQAogICAgICAgICBwID0gUChCQVNFLCAiZGlyQyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHAucmdsb2IoIkZJTEVkIikpLCB7IFAoQkFTRSwgImRpckMvZGlyRC9maWxlRCIpIH0pCiAKKyAgICBkZWYgdGVzdF9leHBhbmR1c2VyKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CisgICAgICAgICAgICBlbnYucG9wKCdIT01FJywgTm9uZSkKKyAgICAgICAgICAgIGVudi5wb3AoJ1VTRVJQUk9GSUxFJywgTm9uZSkKKyAgICAgICAgICAgIGVudi5wb3AoJ0hPTUVQQVRIJywgTm9uZSkKKyAgICAgICAgICAgIGVudi5wb3AoJ0hPTUVEUklWRScsIE5vbmUpCisgICAgICAgICAgICBlbnZbJ1VTRVJOQU1FJ10gPSAnYWxpY2UnCisKKyAgICAgICAgICAgICMgdGVzdCB0aGF0IHRoZSBwYXRoIHJldHVybnMgdW5jaGFuZ2VkCisgICAgICAgICAgICBwMSA9IFAoJ34vTXkgRG9jdW1lbnRzJykKKyAgICAgICAgICAgIHAyID0gUCgnfmFsaWNlL015IERvY3VtZW50cycpCisgICAgICAgICAgICBwMyA9IFAoJ35ib2IvTXkgRG9jdW1lbnRzJykKKyAgICAgICAgICAgIHA0ID0gUCgnL34vTXkgRG9jdW1lbnRzJykKKyAgICAgICAgICAgIHA1ID0gUCgnZDp+L015IERvY3VtZW50cycpCisgICAgICAgICAgICBwNiA9IFAoJycpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHAxLmV4cGFuZHVzZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHAyLmV4cGFuZHVzZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHAzLmV4cGFuZHVzZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA0LmV4cGFuZHVzZXIoKSwgcDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA1LmV4cGFuZHVzZXIoKSwgcDUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA2LmV4cGFuZHVzZXIoKSwgcDYpCisKKyAgICAgICAgICAgIGRlZiBjaGVjaygpOgorICAgICAgICAgICAgICAgIGVudi5wb3AoJ1VTRVJOQU1FJywgTm9uZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAxLmV4cGFuZHVzZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAoJ0M6L1VzZXJzL2FsaWNlL015IERvY3VtZW50cycpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBwMi5leHBhbmR1c2VyKQorICAgICAgICAgICAgICAgIGVudlsnVVNFUk5BTUUnXSA9ICdhbGljZScKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLmV4cGFuZHVzZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAoJ0M6L1VzZXJzL2FsaWNlL015IERvY3VtZW50cycpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDMuZXhwYW5kdXNlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUCgnQzovVXNlcnMvYm9iL015IERvY3VtZW50cycpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDQuZXhwYW5kdXNlcigpLCBwNCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA1LmV4cGFuZHVzZXIoKSwgcDUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNi5leHBhbmR1c2VyKCksIHA2KQorCisgICAgICAgICAgICAjIHRlc3QgdGhlIGZpcnN0IGxvb2t1cCBrZXkgaW4gdGhlIGVudiB2YXJzCisgICAgICAgICAgICBlbnZbJ0hPTUUnXSA9ICdDOlxcVXNlcnNcXGFsaWNlJworICAgICAgICAgICAgY2hlY2soKQorCisgICAgICAgICAgICAjIHRlc3QgdGhhdCBIT01FUEFUSCBpcyBhdmFpbGFibGUgaW5zdGVhZAorICAgICAgICAgICAgZW52LnBvcCgnSE9NRScsIE5vbmUpCisgICAgICAgICAgICBlbnZbJ0hPTUVQQVRIJ10gPSAnQzpcXFVzZXJzXFxhbGljZScKKyAgICAgICAgICAgIGNoZWNrKCkKKworICAgICAgICAgICAgZW52WydIT01FRFJJVkUnXSA9ICdDOlxcJworICAgICAgICAgICAgZW52WydIT01FUEFUSCddID0gJ1VzZXJzXFxhbGljZScKKyAgICAgICAgICAgIGNoZWNrKCkKKworICAgICAgICAgICAgZW52LnBvcCgnSE9NRURSSVZFJywgTm9uZSkKKyAgICAgICAgICAgIGVudi5wb3AoJ0hPTUVQQVRIJywgTm9uZSkKKyAgICAgICAgICAgIGVudlsnVVNFUlBST0ZJTEUnXSA9ICdDOlxcVXNlcnNcXGFsaWNlJworICAgICAgICAgICAgY2hlY2soKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weSBiL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CmluZGV4IDUwMjU3OTIuLjQxZTUwOTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CkBAIC0zMTksMjEgKzMxOSw1IEBACiAgICAgICAgICAgICBmKCkKIAogCi1kZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgaW1wb3J0IHN5cwotICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotICAgIHRlc3RfY2xhc3NlcyA9IChUZXN0VHJhbmZvcm1zLCBUZXN0QnVnbGV0cykKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQotCi0gICAgIyB2ZXJpZnkgcmVmZXJlbmNlIGNvdW50aW5nCi0gICAgaWYgdmVyYm9zZSBhbmQgaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50Jyk6Ci0gICAgICAgIGltcG9ydCBnYwotICAgICAgICBjb3VudHMgPSBbTm9uZV0gKiA1Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihjb3VudHMpKToKLSAgICAgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCi0gICAgICAgICAgICBnYy5jb2xsZWN0KCkKLSAgICAgICAgICAgIGNvdW50c1tpXSA9IHN5cy5nZXR0b3RhbHJlZmNvdW50KCkKLSAgICAgICAgcHJpbnQoY291bnRzKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbih2ZXJib3NlPVRydWUpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDI0Ny5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMjQ3LnB5CmluZGV4IGI4NWEyNmEuLmFiNWY0MTg5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlcDI0Ny5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlcDI0Ny5weQpAQCAtNiw3ICs2LDYgQEAKIGltcG9ydCBobWFjCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gaGFzaGxpYiBpbXBvcnQgbWQ1LCBzaGExLCBzaGEyMjQsIHNoYTI1Niwgc2hhMzg0LCBzaGE1MTIKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBjbGFzcyBQZXAyNDdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNjMsOCArNjIsNSBAQAogICAgIGRlZiB0ZXN0X2htYWMoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfbW9kdWxlKGhtYWMsIGtleT1iJ2FiYycpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChQZXAyNDdUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDI5Mi5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMjkyLnB5CmluZGV4IGZkNTI1NmMuLjFlNWUyMjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMjkyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMjkyLnB5CkBAIC0yNDQsMTEgKzI0NCw1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbSBsaWtlcyB0byBlYXQgYSBiYWcgb2YgaGFtIHdvcnRoICQxMDAnKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLSAgICB0ZXN0X2NsYXNzZXMgPSBbVGVzdFRlbXBsYXRlLF0KLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQotCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzEyMC5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMzEyMC5weQppbmRleCA1YjYzOTk4Li45N2RjZWQ4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlcDMxMjAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXAzMTIwLnB5CkBAIC0xLDcgKzEsNiBAQAogIyBUaGlzIGZpbGUgaXMgbWFya2VkIGFzIGJpbmFyeSBpbiB0aGUgQ1ZTLCB0byBwcmV2ZW50IE1hY0NWUyBmcm9tIHJlY29kaW5nIGl0LgogCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBjbGFzcyBQRVAzMTIwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTQwLDggKzM5LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnw4cnLCBuc1sndSddKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChQRVAzMTIwVGVzdCwgQnVpbHRpbkNvbXBpbGVUZXN0cykKLQotaWYgX19uYW1lX189PSJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkKaW5kZXggMmU2YjkwYS4uMDY3OTg0NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAzMTMxLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMzEzMS5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIFBFUDMxMzFUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMjgsOCArMjcsNSBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCJleHBlY3RlZCBleGNlcHRpb24gZGlkbid0IG9jY3VyIikKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBFUDMxMzFUZXN0KQotCi1pZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQoraWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzE1MS5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMzE1MS5weQppbmRleCA3ZDRhNWQ4Li44ZDU2MGNkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXAzMTUxLnB5CkBAIC03LDcgKzcsNiBAQAogaW1wb3J0IGVycm5vCiBmcm9tIGVycm5vIGltcG9ydCBFRVhJU1QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIFN1Yk9TRXJyb3IoT1NFcnJvcik6CiAgICAgcGFzcwpAQCAtMjAyLDggKzIwMSw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnJykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KLWlmIF9fbmFtZV9fPT0iX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzODAucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDM4MC5weQppbmRleCA2OTE5NGRmLi4yM2ZmYmVkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlcDM4MC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlcDM4MC5weQpAQCAtMTAxMywxMSArMTAxMyw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgKDEsIDIsIDMsIDQpKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLSAgICB0ZXN0X2NsYXNzZXMgPSBbVGVzdFBFUDM4ME9wZXJhdGlvbl0KLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQotCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwNDc5LnB5IGIvTGliL3Rlc3QvdGVzdF9wZXA0NzkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMyMzVjZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwNDc5LnB5CkBAIC0wLDAgKzEsMzQgQEAKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgZ2VuZXJhdG9yX3N0b3AKKworaW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgVGVzdFBFUDQ3OSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rfc3RvcGl0ZXJhdGlvbl93cmFwcGluZyhzZWxmKToKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHlpZWxkIGYoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdlbmVyYXRvciByYWlzZWQgU3RvcEl0ZXJhdGlvbiIpOgorICAgICAgICAgICAgbmV4dChnKCkpCisKKyAgICBkZWYgdGVzdF9zdG9waXRlcmF0aW9uX3dyYXBwaW5nX2NvbnRleHQoc2VsZik6CisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB5aWVsZCBmKCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXh0KGcoKSkKKyAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBleGM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZXhjLl9fY2F1c2VfXyksIFN0b3BJdGVyYXRpb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZXhjLl9fY29udGV4dF9fKSwgU3RvcEl0ZXJhdGlvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleGMuX19zdXBwcmVzc19jb250ZXh0X18pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ19fY2F1c2VfXywgX19jb250ZXh0X18sIG9yIF9fc3VwcHJlc3NfY29udGV4dF9fICcKKyAgICAgICAgICAgICAgICAgICAgICAnd2VyZSBub3QgcHJvcGVybHkgc2V0JykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkgYi9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weQppbmRleCBmNmQ5Y2MwLi5iZDM4Y2ZiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weQpAQCAtMzgyLDcgKzM4MiwxMCBAQAogCiAgICAgICAgIGZvciBuYW1lLCBleGMgaW4gZ2V0X2V4Y2VwdGlvbnMoYnVpbHRpbnMpOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFtZSk6Ci0gICAgICAgICAgICAgICAgaWYgZXhjIGluIChCbG9ja2luZ0lPRXJyb3IsIFJlc291cmNlV2FybmluZyk6CisgICAgICAgICAgICAgICAgaWYgZXhjIGluIChCbG9ja2luZ0lPRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9wQXN5bmNJdGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWN1cnNpb25FcnJvcik6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgaWYgZXhjIGlzIG5vdCBPU0Vycm9yIGFuZCBpc3N1YmNsYXNzKGV4YywgT1NFcnJvcik6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV2ZXJzZV9tYXBwaW5nKCdidWlsdGlucycsIG5hbWUpLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wa2cucHkgYi9MaWIvdGVzdC90ZXN0X3BrZy5weQppbmRleCA5ODgzMDAwLi41MzJlOGZlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BrZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BrZy5weQpAQCAtMjkxLDkgKzI5MSw1IEBACiAgICAgICAgIGltcG9ydCB0OAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQ4Ll9fZG9jX18sICJkb2MgZm9yIHQ4IikKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGtnaW1wb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF9wa2dpbXBvcnQucHkKaW5kZXggMzcwYjJhYS4uNWQ5YTQ1MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wa2dpbXBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wa2dpbXBvcnQucHkKQEAgLTcsNyArNyw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSBpbXBvcnRsaWIudXRpbCBpbXBvcnQgY2FjaGVfZnJvbV9zb3VyY2UKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGNyZWF0ZV9lbXB0eV9maWxlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY3JlYXRlX2VtcHR5X2ZpbGUKIAogY2xhc3MgVGVzdEltcG9ydCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTc2LDkgKzc2LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgdmFyKSwgMSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFRlc3RJbXBvcnQpCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5CmluZGV4IGUwYzg2MzVkZS4uNTdlYmYxZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weQpAQCAtMTA0LDYgKzEwNCw5IEBACiBjbGFzcyBQa2d1dGlsUEVQMzAyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgY2xhc3MgTXlUZXN0TG9hZGVyKG9iamVjdCk6CisgICAgICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIHNwZWMpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKwogICAgICAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kKToKICAgICAgICAgICAgICMgQ291bnQgaG93IG1hbnkgdGltZXMgdGhlIG1vZHVsZSBpcyByZWxvYWRlZAogICAgICAgICAgICAgbW9kLl9fZGljdF9fWydsb2FkcyddID0gbW9kLl9fZGljdF9fLmdldCgnbG9hZHMnLCAwKSArIDEKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkgYi9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5CmluZGV4IGIzZGU0M2IuLjNlYTcxZjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weQpAQCAtMjM2LDcgKzIzNiwxNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHMsIDApCiAKICAgICBkZWYgdGVzdF9kaXN0KHNlbGYpOgotICAgICAgICByZXMgPSBwbGF0Zm9ybS5kaXN0KCkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCisgICAgICAgICAgICAgICAgJ2lnbm9yZScsCisgICAgICAgICAgICAgICAgJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKKyAgICAgICAgICAgICAgICAnZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIC4qJywKKyAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgcmVzID0gcGxhdGZvcm0uZGlzdCgpCiAKICAgICBkZWYgdGVzdF9saWJjX3ZlcihzZWxmKToKICAgICAgICAgaW1wb3J0IG9zCkBAIC0zMDUsMTYgKzMxMiwzNyBAQAogICAgICAgICAgICAgICAgIGYud3JpdGUoJ0ZlZG9yYSByZWxlYXNlIDE5IChTY2hyXHhmNmRpbmdlclx1MjAxOXMgQ2F0KVxuJykKIAogICAgICAgICAgICAgd2l0aCBtb2NrLnBhdGNoKCdwbGF0Zm9ybS5fVU5JWENPTkZESVInLCB0ZW1wZGlyKToKLSAgICAgICAgICAgICAgICBkaXN0bmFtZSwgdmVyc2lvbiwgZGlzdGlkID0gcGxhdGZvcm0ubGludXhfZGlzdHJpYnV0aW9uKCkKKyAgICAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKAorICAgICAgICAgICAgICAgICAgICAgICAgJ2lnbm9yZScsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJworICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCAuKicsCisgICAgICAgICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGRpc3RuYW1lLCB2ZXJzaW9uLCBkaXN0aWQgPSBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKQogCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3RuYW1lLCAnRmVkb3JhJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3RuYW1lLCAnRmVkb3JhJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmVyc2lvbiwgJzE5JykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzdGlkLCAnU2Noclx4ZjZkaW5nZXJcdTIwMTlzIENhdCcpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgUGxhdGZvcm1UZXN0Ci0gICAgKQorCitjbGFzcyBEZXByZWNhdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZGlzdF9kZXByZWNhdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpIGFzIGNtOgorICAgICAgICAgICAgcGxhdGZvcm0uZGlzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLndhcm5pbmcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkaXN0KCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvbigpIGZ1bmN0aW9ucyBhcmUgJworICAgICAgICAgICAgICAgICAgICAgICAgICdkZXByZWNhdGVkIGluIFB5dGhvbiAzLjUgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1B5dGhvbiAzLjcnKQorCisgICAgZGVmIHRlc3RfbGludXhfZGlzdHJpYnV0aW9uX2RlcHJlY2F0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykgYXMgY206CisgICAgICAgICAgICBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS53YXJuaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzdCgpIGFuZCBsaW51eF9kaXN0cmlidXRpb24oKSBmdW5jdGlvbnMgYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZGVwcmVjYXRlZCBpbiBQeXRob24gMy41IGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICdQeXRob24gMy43JykKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3Blbi5weSBiL0xpYi90ZXN0L3Rlc3RfcG9wZW4ucHkKaW5kZXggMTE2YjNkZC4uZGEwMWE4NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3Blbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BvcGVuLnB5CkBAIC02MSw4ICs2MSw1IEBACiAgICAgICAgIHdpdGggb3MucG9wZW4oY21kPSJleGl0IDAiLCBtb2RlPSJ3IiwgYnVmZmVyaW5nPS0xKToKICAgICAgICAgICAgIHBhc3MKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBvcGVuVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQppbmRleCA4YTNjOWY0Li5iY2VlYjkzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQpAQCAtNDQsNiArNDQsNyBAQAogY2xhc3MgRHVtbXlQT1AzSGFuZGxlcihhc3luY2hhdC5hc3luY19jaGF0KToKIAogICAgIENBUEFTID0geydVSURMJzogW10sICdJTVBMRU1FTlRBVElPTic6IFsncHl0aG9uLXRlc3RsaWItcG9wLXNlcnZlciddfQorICAgIGVuYWJsZV9VVEY4ID0gRmFsc2UKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25uKToKICAgICAgICAgYXN5bmNoYXQuYXN5bmNfY2hhdC5fX2luaXRfXyhzZWxmLCBjb25uKQpAQCAtMTQyLDYgKzE0MywxMSBAQAogICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnICcuam9pbihfbG4pKQogICAgICAgICBzZWxmLnB1c2goJy4nKQogCisgICAgZGVmIGNtZF91dGY4KHNlbGYsIGFyZyk6CisgICAgICAgIHNlbGYucHVzaCgnK09LIEkga25vdyBSRkM2ODU2JworICAgICAgICAgICAgICAgICAgaWYgc2VsZi5lbmFibGVfVVRGOAorICAgICAgICAgICAgICAgICAgZWxzZSAnLUVSUiBXaGF0IGlzIFVURjg/IScpCisKICAgICBpZiBTVVBQT1JUU19TU0w6CiAKICAgICAgICAgZGVmIGNtZF9zdGxzKHNlbGYsIGFyZyk6CkBAIC0zMDksNiArMzE1LDE2IEBACiAgICAgICAgIHNlbGYuY2xpZW50LnVpZGwoKQogICAgICAgICBzZWxmLmNsaWVudC51aWRsKCdmb28nKQogCisgICAgZGVmIHRlc3RfdXRmOF9yYWlzZXNfaWZfdW5zdXBwb3J0ZWQoc2VsZik6CisgICAgICAgIHNlbGYuc2VydmVyLmhhbmRsZXIuZW5hYmxlX1VURjggPSBGYWxzZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhwb3BsaWIuZXJyb3JfcHJvdG8sIHNlbGYuY2xpZW50LnV0ZjgpCisKKyAgICBkZWYgdGVzdF91dGY4KHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZlci5oYW5kbGVyLmVuYWJsZV9VVEY4ID0gVHJ1ZQorICAgICAgICBleHBlY3RlZCA9IGInK09LIEkga25vdyBSRkM2ODU2JworICAgICAgICByZXN1bHQgPSBzZWxmLmNsaWVudC51dGY4KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RfY2FwYShzZWxmKToKICAgICAgICAgY2FwYSA9IHNlbGYuY2xpZW50LmNhcGEoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ0lNUExFTUVOVEFUSU9OJyBpbiBjYXBhLmtleXMoKSkKQEAgLTM0NSwyMyArMzYxLDE4IEBACiAKIAogaWYgU1VQUE9SVFNfU1NMOgorICAgIGZyb20gdGVzdC50ZXN0X2Z0cGxpYiBpbXBvcnQgU1NMQ29ubmVjdGlvbgogCi0gICAgY2xhc3MgRHVtbXlQT1AzX1NTTEhhbmRsZXIoRHVtbXlQT1AzSGFuZGxlcik6CisgICAgY2xhc3MgRHVtbXlQT1AzX1NTTEhhbmRsZXIoU1NMQ29ubmVjdGlvbiwgRHVtbXlQT1AzSGFuZGxlcik6CiAKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbm4pOgogICAgICAgICAgICAgYXN5bmNoYXQuYXN5bmNfY2hhdC5fX2luaXRfXyhzZWxmLCBjb25uKQotICAgICAgICAgICAgc3NsX3NvY2tldCA9IHNzbC53cmFwX3NvY2tldChzZWxmLnNvY2tldCwgY2VydGZpbGU9Q0VSVEZJTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCi0gICAgICAgICAgICBzZWxmLmRlbF9jaGFubmVsKCkKLSAgICAgICAgICAgIHNlbGYuc2V0X3NvY2tldChzc2xfc29ja2V0KQotICAgICAgICAgICAgIyBNdXN0IHRyeSBoYW5kc2hha2UgYmVmb3JlIGNhbGxpbmcgcHVzaCgpCi0gICAgICAgICAgICBzZWxmLnRsc19hY3RpdmUgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLnRsc19zdGFydGluZyA9IFRydWUKLSAgICAgICAgICAgIHNlbGYuX2RvX3Rsc19oYW5kc2hha2UoKQorICAgICAgICAgICAgc2VsZi5zZWN1cmVfY29ubmVjdGlvbigpCiAgICAgICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGIiXHJcbiIpCiAgICAgICAgICAgICBzZWxmLmluX2J1ZmZlciA9IFtdCiAgICAgICAgICAgICBzZWxmLnB1c2goJytPSyBkdW1teSBwb3AzIHNlcnZlciByZWFkeS4gPHRpbWVzdGFtcD4nKQorICAgICAgICAgICAgc2VsZi50bHNfYWN0aXZlID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi50bHNfc3RhcnRpbmcgPSBGYWxzZQogCiAKIEByZXF1aXJlc19zc2wKQEAgLTQ1Miw3ICs0NjMsNyBAQAogICAgICAgICBkZWwgc2VsZi50aHJlYWQgICMgQ2xlYXIgb3V0IGFueSBkYW5nbGluZyBUaHJlYWQgb2JqZWN0cy4KIAogICAgIGRlZiBzZXJ2ZXIoc2VsZiwgZXZ0LCBzZXJ2KToKLSAgICAgICAgc2Vydi5saXN0ZW4oNSkKKyAgICAgICAgc2Vydi5saXN0ZW4oKQogICAgICAgICBldnQuc2V0KCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgY29ubiwgYWRkciA9IHNlcnYuYWNjZXB0KCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CmluZGV4IGQ3Njc5ODkuLjJhNTljMzggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQpAQCAtOSw3ICs5LDYgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgb3MKLWltcG9ydCBmY250bAogaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgcHdkCiBpbXBvcnQgc2h1dGlsCkBAIC0zNTUsNyArMzU0LDcgQEAKICAgICBkZWYgdGVzdF9vc2Nsb2V4ZWMoc2VsZik6CiAgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19SRE9OTFl8b3MuT19DTE9FWEVDKQogICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIGZkKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfR0VURkQpICYgZmNudGwuRkRfQ0xPRVhFQykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5nZXRfaW5oZXJpdGFibGUoZmQpKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ09fRVhMT0NLJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QgbmVlZHMgcG9zaXguT19FWExPQ0snKQpAQCAtNjQzLDggKzY0Miw4IEBACiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgdykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5nZXRfaW5oZXJpdGFibGUocikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MuZ2V0X2luaGVyaXRhYmxlKHcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZmNudGwuZmNudGwociwgZmNudGwuRl9HRVRGTCkgJiBvcy5PX05PTkJMT0NLKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZmNudGwuZmNudGwodywgZmNudGwuRl9HRVRGTCkgJiBvcy5PX05PTkJMT0NLKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLmdldF9ibG9ja2luZyhyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5nZXRfYmxvY2tpbmcodykpCiAgICAgICAgICMgdHJ5IHJlYWRpbmcgZnJvbSBhbiBlbXB0eSBwaXBlOiB0aGlzIHNob3VsZCBmYWlsLCBub3QgYmxvY2sKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MucmVhZCwgciwgMSkKICAgICAgICAgIyB0cnkgYSB3cml0ZSBiaWcgZW5vdWdoIHRvIGZpbGwtdXAgdGhlIHBpcGU6IHRoaXMgc2hvdWxkIGVpdGhlcgpAQCAtMTE4NCwxNiArMTE4MywxNiBAQAogICAgICAgICBzdXBwb3J0LnVubGluayhmbikKICAgICAgICAgZmQgPSBOb25lCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICAgICAgZmQgPSBvcy5vcGVuKGZuX3dpdGhfTlVMLCBvcy5PX1dST05MWSB8IG9zLk9fQ1JFQVQpICMgcmFpc2VzCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBpZiBmZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBvcy5jbG9zZShmZCkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhmbikpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3MubWtkaXIsIGZuX3dpdGhfTlVMKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcy5ta2RpciwgZm5fd2l0aF9OVUwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZm4pKQogICAgICAgICBvcGVuKGZuLCAnd2InKS5jbG9zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3Muc3RhdCwgZm5fd2l0aF9OVUwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9zLnN0YXQsIGZuX3dpdGhfTlVMKQogCiAgICAgZGVmIHRlc3RfcGF0aF93aXRoX251bGxfYnl0ZShzZWxmKToKICAgICAgICAgZm4gPSBvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkKaW5kZXggMWQ0NTk2ZS4uOWQyMDQ3MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkKQEAgLTU3LDE4ICs1Nyw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9zaXhwYXRoLmpvaW4oYiIvZm9vLyIsIGIiYmFyLyIsIGIiYmF6LyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGIiL2Zvby9iYXIvYmF6LyIpCiAKLSAgICBkZWYgdGVzdF9qb2luX2Vycm9ycyhzZWxmKToKLSAgICAgICAgIyBDaGVjayBwb3NpeHBhdGguam9pbiByYWlzZXMgZnJpZW5kbHkgVHlwZUVycm9ycy4KLSAgICAgICAgZXJybXNnID0gIkNhbid0IG1peCBzdHJpbmdzIGFuZCBieXRlcyBpbiBwYXRoIGNvbXBvbmVudHMiCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyk6Ci0gICAgICAgICAgICBwb3NpeHBhdGguam9pbihiJ2J5dGVzJywgJ3N0cicpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyk6Ci0gICAgICAgICAgICBwb3NpeHBhdGguam9pbignc3RyJywgYidieXRlcycpCi0gICAgICAgICMgcmVncmVzc2lvbiwgc2VlICMxNTM3NwotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206Ci0gICAgICAgICAgICBwb3NpeHBhdGguam9pbihOb25lLCAnc3RyJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjbS5leGNlcHRpb24uYXJnc1swXSwgZXJybXNnKQotCiAgICAgZGVmIHRlc3Rfc3BsaXQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9zaXhwYXRoLnNwbGl0KCIvZm9vL2JhciIpLCAoIi9mb28iLCAiYmFyIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9zaXhwYXRoLnNwbGl0KCIvIiksICgiLyIsICIiKSkKQEAgLTUyMyw2ICs1MTEsNjAgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIG9zLmdldGN3ZGIgPSByZWFsX2dldGN3ZGIKIAorICAgIGRlZiB0ZXN0X2NvbW1vbnBhdGgoc2VsZik6CisgICAgICAgIGRlZiBjaGVjayhwYXRocywgZXhwZWN0ZWQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeHBhdGguY29tbW9ucGF0aChwYXRocyksIGV4cGVjdGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeHBhdGguY29tbW9ucGF0aChbb3MuZnNlbmNvZGUocCkgZm9yIHAgaW4gcGF0aHNdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuZnNlbmNvZGUoZXhwZWN0ZWQpKQorICAgICAgICBkZWYgY2hlY2tfZXJyb3IoZXhjLCBwYXRocyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhleGMsIHBvc2l4cGF0aC5jb21tb25wYXRoLCBwYXRocykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGV4YywgcG9zaXhwYXRoLmNvbW1vbnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3MuZnNlbmNvZGUocCkgZm9yIHAgaW4gcGF0aHNdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBvc2l4cGF0aC5jb21tb25wYXRoLCBbXSkKKyAgICAgICAgY2hlY2tfZXJyb3IoVmFsdWVFcnJvciwgWycvdXNyJywgJ3VzciddKQorICAgICAgICBjaGVja19lcnJvcihWYWx1ZUVycm9yLCBbJ3VzcicsICcvdXNyJ10pCisKKyAgICAgICAgY2hlY2soWycvdXNyL2xvY2FsJ10sICcvdXNyL2xvY2FsJykKKyAgICAgICAgY2hlY2soWycvdXNyL2xvY2FsJywgJy91c3IvbG9jYWwnXSwgJy91c3IvbG9jYWwnKQorICAgICAgICBjaGVjayhbJy91c3IvbG9jYWwvJywgJy91c3IvbG9jYWwnXSwgJy91c3IvbG9jYWwnKQorICAgICAgICBjaGVjayhbJy91c3IvbG9jYWwvJywgJy91c3IvbG9jYWwvJ10sICcvdXNyL2xvY2FsJykKKyAgICAgICAgY2hlY2soWycvdXNyLy9sb2NhbCcsICcvL3Vzci9sb2NhbCddLCAnL3Vzci9sb2NhbCcpCisgICAgICAgIGNoZWNrKFsnL3Vzci8uL2xvY2FsJywgJy8uL3Vzci9sb2NhbCddLCAnL3Vzci9sb2NhbCcpCisgICAgICAgIGNoZWNrKFsnLycsICcvZGV2J10sICcvJykKKyAgICAgICAgY2hlY2soWycvdXNyJywgJy9kZXYnXSwgJy8nKQorICAgICAgICBjaGVjayhbJy91c3IvbGliLycsICcvdXNyL2xpYi9weXRob24zJ10sICcvdXNyL2xpYicpCisgICAgICAgIGNoZWNrKFsnL3Vzci9saWIvJywgJy91c3IvbGliNjQvJ10sICcvdXNyJykKKworICAgICAgICBjaGVjayhbJy91c3IvbGliJywgJy91c3IvbGliNjQnXSwgJy91c3InKQorICAgICAgICBjaGVjayhbJy91c3IvbGliLycsICcvdXNyL2xpYjY0J10sICcvdXNyJykKKworICAgICAgICBjaGVjayhbJ3NwYW0nXSwgJ3NwYW0nKQorICAgICAgICBjaGVjayhbJ3NwYW0nLCAnc3BhbSddLCAnc3BhbScpCisgICAgICAgIGNoZWNrKFsnc3BhbScsICdhbG90J10sICcnKQorICAgICAgICBjaGVjayhbJ2FuZC9qYW0nLCAnYW5kL3NwYW0nXSwgJ2FuZCcpCisgICAgICAgIGNoZWNrKFsnYW5kLy9qYW0nLCAnYW5kL3NwYW0vLyddLCAnYW5kJykKKyAgICAgICAgY2hlY2soWydhbmQvLi9qYW0nLCAnLi9hbmQvc3BhbSddLCAnYW5kJykKKyAgICAgICAgY2hlY2soWydhbmQvamFtJywgJ2FuZC9zcGFtJywgJ2Fsb3QnXSwgJycpCisgICAgICAgIGNoZWNrKFsnYW5kL2phbScsICdhbmQvc3BhbScsICdhbmQnXSwgJ2FuZCcpCisKKyAgICAgICAgY2hlY2soWycnXSwgJycpCisgICAgICAgIGNoZWNrKFsnJywgJ3NwYW0vYWxvdCddLCAnJykKKyAgICAgICAgY2hlY2tfZXJyb3IoVmFsdWVFcnJvciwgWycnLCAnL3NwYW0vYWxvdCddKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXhwYXRoLmNvbW1vbnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtiJy91c3IvbGliLycsICcvdXNyL2xpYi9weXRob24zJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXhwYXRoLmNvbW1vbnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtiJy91c3IvbGliLycsICd1c3IvbGliL3B5dGhvbjMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW2IndXNyL2xpYi8nLCAnL3Vzci9saWIvcHl0aG9uMyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4cGF0aC5jb21tb25wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbJy91c3IvbGliLycsIGInL3Vzci9saWIvcHl0aG9uMyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4cGF0aC5jb21tb25wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbJy91c3IvbGliLycsIGIndXNyL2xpYi9weXRob24zJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXhwYXRoLmNvbW1vbnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsndXNyL2xpYi8nLCBiJy91c3IvbGliL3B5dGhvbjMnXSkKKwogCiBjbGFzcyBQb3NpeENvbW1vblRlc3QodGVzdF9nZW5lcmljcGF0aC5Db21tb25UZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgcGF0aG1vZHVsZSA9IHBvc2l4cGF0aApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3cucHkgYi9MaWIvdGVzdC90ZXN0X3Bvdy5weQppbmRleCAyMGIxMDY2Li42ZmVhYzQwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Bvdy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvdy5weQpAQCAtMTIyLDggKzEyMiw1IEBACiAgICAgICAgICAgICBlcShwb3coYSwgLWZpdmV0byksIGV4cGVjdGVkKQogICAgICAgICBlcShleHBlY3RlZCwgMS4wKSAgICMgZWxzZSB3ZSBkaWRuJ3QgcHVzaCBmaXZldG8gdG8gZXZlbm5lc3MKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoUG93VGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wcHJpbnQucHkgYi9MaWIvdGVzdC90ZXN0X3BwcmludC5weQppbmRleCAxODBkZGIwLi43ZWJjMjk4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BwcmludC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BwcmludC5weQpAQCAtMSwxMiArMSwxNCBAQAogIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KIAotaW1wb3J0IHBwcmludAotaW1wb3J0IHRlc3Quc3VwcG9ydAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdGVzdC50ZXN0X3NldAotaW1wb3J0IHJhbmRvbQogaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgaW8KIGltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCBwcHJpbnQKK2ltcG9ydCByYW5kb20KK2ltcG9ydCB0ZXN0LnN1cHBvcnQKK2ltcG9ydCB0ZXN0LnRlc3Rfc2V0CitpbXBvcnQgdHlwZXMKK2ltcG9ydCB1bml0dGVzdAogCiAjIGxpc3QsIHR1cGxlIGFuZCBkaWN0IHN1YmNsYXNzZXMgdGhhdCBkbyBvciBkb24ndCBvdmVyd3JpdGUgX19yZXByX18KIGNsYXNzIGxpc3QyKGxpc3QpOgpAQCAtNDgsNiArNTAsMjUgQEAKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIHJldHVybiBzdHIoaWQoc2VsZikpCiAKKyMgQ2xhc3MgT3JkZXJhYmxlIGlzIG9yZGVyYWJsZSB3aXRoIGFueSB0eXBlCitjbGFzcyBPcmRlcmFibGU6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhhc2gpOgorICAgICAgICBzZWxmLl9oYXNoID0gaGFzaAorICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYgIT0gb3RoZXIKKyAgICBkZWYgX19sZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYgPT0gb3RoZXIKKyAgICBkZWYgX19nZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYgaXMgb3RoZXIKKyAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYgaXMgbm90IG90aGVyCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5faGFzaAorCiBjbGFzcyBRdWVyeVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTU1LDYgKzc2LDE4IEBACiAgICAgICAgIHNlbGYuYiA9IGxpc3QocmFuZ2UoMjAwKSkKICAgICAgICAgc2VsZi5hWy0xMl0gPSBzZWxmLmIKIAorICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgIHBwID0gcHByaW50LlByZXR0eVByaW50ZXIoKQorICAgICAgICBwcCA9IHBwcmludC5QcmV0dHlQcmludGVyKGluZGVudD00LCB3aWR0aD00MCwgZGVwdGg9NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW09aW8uU3RyaW5nSU8oKSwgY29tcGFjdD1UcnVlKQorICAgICAgICBwcCA9IHBwcmludC5QcmV0dHlQcmludGVyKDQsIDQwLCA1LCBpby5TdHJpbmdJTygpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBwcCA9IHBwcmludC5QcmV0dHlQcmludGVyKDQsIDQwLCA1LCBpby5TdHJpbmdJTygpLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwcHJpbnQuUHJldHR5UHJpbnRlciwgaW5kZW50PS0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwcHJpbnQuUHJldHR5UHJpbnRlciwgZGVwdGg9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcHByaW50LlByZXR0eVByaW50ZXIsIGRlcHRoPS0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwcHJpbnQuUHJldHR5UHJpbnRlciwgd2lkdGg9MCkKKwogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgogICAgICAgICAjIFZlcmlmeSAuaXNyZWN1cnNpdmUoKSBhbmQgLmlzcmVhZGFibGUoKSB3L28gcmVjdXJzaW9uCiAgICAgICAgIHBwID0gcHByaW50LlByZXR0eVByaW50ZXIoKQpAQCAtMTk1LDEwICsyMjgsNTIgQEAKICAgICAgICAgbyA9IFtvMSwgbzJdCiAgICAgICAgIGV4cGVjdGVkID0gIiIiXAogWyAgIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XSwKKyAgICB7J2ZpcnN0JzogMSwgJ3NlY29uZCc6IDIsICd0aGlyZCc6IDN9XSIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KG8sIGluZGVudD00LCB3aWR0aD00MiksIGV4cGVjdGVkKQorICAgICAgICBleHBlY3RlZCA9ICIiIlwKK1sgICBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV0sCiAgICAgeyAgICdmaXJzdCc6IDEsCiAgICAgICAgICdzZWNvbmQnOiAyLAogICAgICAgICAndGhpcmQnOiAzfV0iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChvLCBpbmRlbnQ9NCwgd2lkdGg9NDIpLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChvLCBpbmRlbnQ9NCwgd2lkdGg9NDEpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3dpZHRoKHNlbGYpOgorICAgICAgICBleHBlY3RlZCA9ICIiIlwKK1tbW1tbWzEsIDIsIDNdLAorICAgICAnMSAyJ11dXV0sCisgezE6IFsxLCAyLCAzXSwKKyAgMjogWzEyLCAzNF19LAorICdhYmMgZGVmIGdoaScsCisgKCdhYiBjZCBlZicsKSwKKyBzZXQyKHsxLCAyM30pLAorIFtbW1tbMSwgMiwgM10sCisgICAgICcxIDInXV1dXV0iIiIKKyAgICAgICAgbyA9IGV2YWwoZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobywgd2lkdGg9MTUpLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChvLCB3aWR0aD0xNiksIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KG8sIHdpZHRoPTI1KSwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobywgd2lkdGg9MTQpLCAiIiJcCitbW1tbW1sxLAorICAgICAgMiwKKyAgICAgIDNdLAorICAgICAnMSAnCisgICAgICcyJ11dXV0sCisgezE6IFsxLAorICAgICAgMiwKKyAgICAgIDNdLAorICAyOiBbMTIsCisgICAgICAzNF19LAorICdhYmMgZGVmICcKKyAnZ2hpJywKKyAoJ2FiIGNkICcKKyAgJ2VmJywpLAorIHNldDIoezEsCisgICAgICAgMjN9KSwKKyBbW1tbWzEsCisgICAgICAyLAorICAgICAgM10sCisgICAgICcxICcKKyAgICAgJzInXV1dXV0iIiIpCiAKICAgICBkZWYgdGVzdF9zb3J0ZWRfZGljdChzZWxmKToKICAgICAgICAgIyBTdGFydGluZyBpbiBQeXRob24gMi41LCBwcHJpbnQgc29ydHMgZGljdCBkaXNwbGF5cyBieSBrZXkgcmVnYXJkbGVzcwpAQCAtMjE5LDE5ICsyOTQsNTEgQEAKICAgICAgICAgICAgIHIiezU6IFtbXV0sICd4eVx0YWJcbic6ICgzLCksICgpOiB7fX0iKQogCiAgICAgZGVmIHRlc3Rfb3JkZXJlZF9kaWN0KHNlbGYpOgorICAgICAgICBkID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQsIHdpZHRoPTEpLCAnT3JkZXJlZERpY3QoKScpCisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdChbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkLCB3aWR0aD0xKSwgJ09yZGVyZWREaWN0KCknKQogICAgICAgICB3b3JkcyA9ICd0aGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVyIGEgbGF6eSBkb2cnLnNwbGl0KCkKICAgICAgICAgZCA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KHppcCh3b3JkcywgaXRlcnRvb2xzLmNvdW50KCkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQpLAogIiIiXAoteyd0aGUnOiAwLAotICdxdWljayc6IDEsCi0gJ2Jyb3duJzogMiwKLSAnZm94JzogMywKLSAnanVtcGVkJzogNCwKLSAnb3Zlcic6IDUsCi0gJ2EnOiA2LAotICdsYXp5JzogNywKLSAnZG9nJzogOH0iIiIpCitPcmRlcmVkRGljdChbKCd0aGUnLCAwKSwKKyAgICAgICAgICAgICAoJ3F1aWNrJywgMSksCisgICAgICAgICAgICAgKCdicm93bicsIDIpLAorICAgICAgICAgICAgICgnZm94JywgMyksCisgICAgICAgICAgICAgKCdqdW1wZWQnLCA0KSwKKyAgICAgICAgICAgICAoJ292ZXInLCA1KSwKKyAgICAgICAgICAgICAoJ2EnLCA2KSwKKyAgICAgICAgICAgICAoJ2xhenknLCA3KSwKKyAgICAgICAgICAgICAoJ2RvZycsIDgpXSkiIiIpCisKKyAgICBkZWYgdGVzdF9tYXBwaW5nX3Byb3h5KHNlbGYpOgorICAgICAgICB3b3JkcyA9ICd0aGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVyIGEgbGF6eSBkb2cnLnNwbGl0KCkKKyAgICAgICAgZCA9IGRpY3QoemlwKHdvcmRzLCBpdGVydG9vbHMuY291bnQoKSkpCisgICAgICAgIG0gPSB0eXBlcy5NYXBwaW5nUHJveHlUeXBlKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobSksICIiIlwKK21hcHBpbmdwcm94eSh7J2EnOiA2LAorICAgICAgICAgICAgICAnYnJvd24nOiAyLAorICAgICAgICAgICAgICAnZG9nJzogOCwKKyAgICAgICAgICAgICAgJ2ZveCc6IDMsCisgICAgICAgICAgICAgICdqdW1wZWQnOiA0LAorICAgICAgICAgICAgICAnbGF6eSc6IDcsCisgICAgICAgICAgICAgICdvdmVyJzogNSwKKyAgICAgICAgICAgICAgJ3F1aWNrJzogMSwKKyAgICAgICAgICAgICAgJ3RoZSc6IDB9KSIiIikKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KHppcCh3b3JkcywgaXRlcnRvb2xzLmNvdW50KCkpKQorICAgICAgICBtID0gdHlwZXMuTWFwcGluZ1Byb3h5VHlwZShkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KG0pLCAiIiJcCittYXBwaW5ncHJveHkoT3JkZXJlZERpY3QoWygndGhlJywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgncXVpY2snLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCdicm93bicsIDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2ZveCcsIDMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2p1bXBlZCcsIDQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ292ZXInLCA1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhJywgNiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgnbGF6eScsIDcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2RvZycsIDgpXSkpIiIiKQorCiAgICAgZGVmIHRlc3Rfc3ViY2xhc3Npbmcoc2VsZik6CiAgICAgICAgIG8gPSB7J25hbWVzIHdpdGggc3BhY2VzJzogJ3Nob3VsZCBiZSBwcmVzZW50ZWQgdXNpbmcgcmVwcigpJywKICAgICAgICAgICAgICAnb3RoZXJzLnNob3VsZC5ub3QuYmUnOiAnbGlrZS50aGlzJ30KQEAgLTUzNSwxNiArNjQyLDM1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZGljdC5mcm9ta2V5cyhrZXlzLCAwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3slcjogMCwgJXI6IDB9JyAlIHR1cGxlKHNvcnRlZChrZXlzLCBrZXk9aWQpKSkKIAorICAgIGRlZiB0ZXN0X3NvcnRfb3JkZXJhYmxlX2FuZF91bm9yZGVyYWJsZV92YWx1ZXMoc2VsZik6CisgICAgICAgICMgSXNzdWUgMjI3MjE6ICBzb3J0ZWQgcHByaW50cyBpcyBub3Qgc3RhYmxlCisgICAgICAgIGEgPSBVbm9yZGVyYWJsZSgpCisgICAgICAgIGIgPSBPcmRlcmFibGUoaGFzaChhKSkgICMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgaGFzaCB2YWx1ZQorICAgICAgICAjIHNlbGYtdGVzdAorICAgICAgICBzZWxmLmFzc2VydExlc3MoYSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHN0cih0eXBlKGIpKSwgc3RyKHR5cGUoYSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChbYiwgYV0pLCBbYSwgYl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKFthLCBiXSksIFthLCBiXSkKKyAgICAgICAgIyBzZXQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzZXQoW2IsIGFdKSwgd2lkdGg9MSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3slcixcbiAlcn0nICUgKGEsIGIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNldChbYSwgYl0pLCB3aWR0aD0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAneyVyLFxuICVyfScgJSAoYSwgYikpCisgICAgICAgICMgZGljdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGRpY3QuZnJvbWtleXMoW2IsIGFdKSwgd2lkdGg9MSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3slcjogTm9uZSxcbiAlcjogTm9uZX0nICUgKGEsIGIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGRpY3QuZnJvbWtleXMoW2EsIGJdKSwgd2lkdGg9MSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3slcjogTm9uZSxcbiAlcjogTm9uZX0nICUgKGEsIGIpKQorCiAgICAgZGVmIHRlc3Rfc3RyX3dyYXAoc2VsZik6CiAgICAgICAgICMgcHByaW50IHRyaWVzIHRvIHdyYXAgc3RyaW5ncyBpbnRlbGxpZ2VudGx5CiAgICAgICAgIGZveCA9ICd0aGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVyIGEgbGF6eSBkb2cnCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZm94LCB3aWR0aD0yMCksICIiIlwKLSgndGhlIHF1aWNrICcKLSAnYnJvd24gZm94ICcKLSAnanVtcGVkIG92ZXIgYSAnCi0gJ2xhenkgZG9nJykiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZm94LCB3aWR0aD0xOSksICIiIlwKKygndGhlIHF1aWNrIGJyb3duICcKKyAnZm94IGp1bXBlZCBvdmVyICcKKyAnYSBsYXp5IGRvZycpIiIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHsnYSc6IDEsICdiJzogZm94LCAnYyc6IDJ9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPTI2KSwgIiIiXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPTI1KSwgIiIiXAogeydhJzogMSwKICAnYic6ICd0aGUgcXVpY2sgYnJvd24gJwogICAgICAgJ2ZveCBqdW1wZWQgb3ZlciAnCkBAIC01NTYsMTIgKzY4MiwzNCBAQAogICAgICAgICAjIC0gbm9uLUFTQ0lJIGlzIGFsbG93ZWQKICAgICAgICAgIyAtIGFuIGFwb3N0cm9waGUgZG9lc24ndCBkaXNydXB0IHRoZSBwcHJpbnQKICAgICAgICAgc3BlY2lhbCA9ICJQb3J0b25zIGRpeCBib25zIFwid2hpc2t5c1wiXG7DoCBsJ2F2b2NhdCBnb3VqYXRcdCBxdWkgZnVtYWl0IGF1IHpvbyIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzcGVjaWFsLCB3aWR0aD0yMSksICIiIlwKLSgnUG9ydG9ucyBkaXggJwotICdib25zICJ3aGlza3lzIlxcbicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzcGVjaWFsLCB3aWR0aD02OCksIHJlcHIoc3BlY2lhbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc3BlY2lhbCwgd2lkdGg9MzEpLCAiIiJcCisoJ1BvcnRvbnMgZGl4IGJvbnMgIndoaXNreXMiXFxuJworICLDoCBsJ2F2b2NhdCBnb3VqYXRcXHQgcXVpICIKKyAnZnVtYWl0IGF1IHpvbycpIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNwZWNpYWwsIHdpZHRoPTIwKSwgIiIiXAorKCdQb3J0b25zIGRpeCBib25zICcKKyAnIndoaXNreXMiXFxuJwogICLDoCBsJ2F2b2NhdCAiCiAgJ2dvdWphdFxcdCBxdWkgJwogICdmdW1haXQgYXUgem9vJykiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoW1tbW1tzcGVjaWFsXV1dXV0sIHdpZHRoPTM1KSwgIiIiXAorW1tbW1snUG9ydG9ucyBkaXggYm9ucyAid2hpc2t5cyJcXG4nCisgICAgICLDoCBsJ2F2b2NhdCBnb3VqYXRcXHQgcXVpICIKKyAgICAgJ2Z1bWFpdCBhdSB6b28nXV1dXV0iIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoW1tbW1tzcGVjaWFsXV1dXV0sIHdpZHRoPTI1KSwgIiIiXAorW1tbW1snUG9ydG9ucyBkaXggYm9ucyAnCisgICAgICcid2hpc2t5cyJcXG4nCisgICAgICLDoCBsJ2F2b2NhdCAiCisgICAgICdnb3VqYXRcXHQgcXVpICcKKyAgICAgJ2Z1bWFpdCBhdSB6b28nXV1dXV0iIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoW1tbW1tzcGVjaWFsXV1dXV0sIHdpZHRoPTIzKSwgIiIiXAorW1tbW1snUG9ydG9ucyBkaXggJworICAgICAnYm9ucyAid2hpc2t5cyJcXG4nCisgICAgICLDoCBsJ2F2b2NhdCAiCisgICAgICdnb3VqYXRcXHQgcXVpICcKKyAgICAgJ2Z1bWFpdCBhdSAnCisgICAgICd6b28nXV1dXV0iIiIpCiAgICAgICAgICMgQW4gdW53cmFwcGFibGUgc3RyaW5nIGlzIGZvcm1hdHRlZCBhcyBpdHMgcmVwcgogICAgICAgICB1bndyYXBwYWJsZSA9ICJ4IiAqIDEwMAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHVud3JhcHBhYmxlLCB3aWR0aD04MCksIHJlcHIodW53cmFwcGFibGUpKQpAQCAtNTg0LDcgKzczMiwyNjcgQEAKICAgMTQsIDE1XSwKICBbXSwgWzBdLCBbMCwgMV0sIFswLCAxLCAyXSwgWzAsIDEsIDIsIDNdLAogIFswLCAxLCAyLCAzLCA0XV0iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChvLCB3aWR0aD00OCwgY29tcGFjdD1UcnVlKSwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobywgd2lkdGg9NDcsIGNvbXBhY3Q9VHJ1ZSksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfY29tcGFjdF93aWR0aChzZWxmKToKKyAgICAgICAgbGV2ZWxzID0gMjAKKyAgICAgICAgbnVtYmVyID0gMTAKKyAgICAgICAgbyA9IFswXSAqIG51bWJlcgorICAgICAgICBmb3IgaSBpbiByYW5nZShsZXZlbHMgLSAxKToKKyAgICAgICAgICAgIG8gPSBbb10KKyAgICAgICAgZm9yIHcgaW4gcmFuZ2UobGV2ZWxzICogMiArIDEsIGxldmVscyArIDMgKiBudW1iZXIgLSAxKToKKyAgICAgICAgICAgIGxpbmVzID0gcHByaW50LnBmb3JtYXQobywgd2lkdGg9dywgY29tcGFjdD1UcnVlKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgICAgIG1heHdpZHRoID0gbWF4KG1hcChsZW4sIGxpbmVzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKG1heHdpZHRoLCB3KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKG1heHdpZHRoLCB3IC0gMykKKworICAgIGRlZiB0ZXN0X2J5dGVzX3dyYXAoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoYicnLCB3aWR0aD0xKSwgImInJyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoYidhYmNkJywgd2lkdGg9MSksICJiJ2FiY2QnIikKKyAgICAgICAgbGV0dGVycyA9IGInYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobGV0dGVycywgd2lkdGg9MjkpLCByZXByKGxldHRlcnMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGxldHRlcnMsIHdpZHRoPTE5KSwgIiIiXAorKGInYWJjZGVmZ2hpamtsJworIGInbW5vcHFyc3R1dnd4eXonKSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChsZXR0ZXJzLCB3aWR0aD0xOCksICIiIlwKKyhiJ2FiY2RlZmdoaWprbCcKKyBiJ21ub3BxcnN0dXZ3eCcKKyBiJ3l6JykiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobGV0dGVycywgd2lkdGg9MTYpLCAiIiJcCisoYidhYmNkZWZnaGlqa2wnCisgYidtbm9wcXJzdHV2d3gnCisgYid5eicpIiIiKQorICAgICAgICBzcGVjaWFsID0gYnl0ZXMocmFuZ2UoMTYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNwZWNpYWwsIHdpZHRoPTYxKSwgcmVwcihzcGVjaWFsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzcGVjaWFsLCB3aWR0aD00OCksICIiIlwKKyhiJ1xceDAwXFx4MDFcXHgwMlxceDAzXFx4MDRcXHgwNVxceDA2XFx4MDdcXHgwOFxcdFxcblxceDBiJworIGInXFx4MGNcXHJcXHgwZVxceDBmJykiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc3BlY2lhbCwgd2lkdGg9MzIpLCAiIiJcCisoYidcXHgwMFxceDAxXFx4MDJcXHgwMycKKyBiJ1xceDA0XFx4MDVcXHgwNlxceDA3XFx4MDhcXHRcXG5cXHgwYicKKyBiJ1xceDBjXFxyXFx4MGVcXHgwZicpIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNwZWNpYWwsIHdpZHRoPTEpLCAiIiJcCisoYidcXHgwMFxceDAxXFx4MDJcXHgwMycKKyBiJ1xceDA0XFx4MDVcXHgwNlxceDA3JworIGInXFx4MDhcXHRcXG5cXHgwYicKKyBiJ1xceDBjXFxyXFx4MGVcXHgwZicpIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHsnYSc6IDEsICdiJzogbGV0dGVycywgJ2MnOiAyfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0yMSksICIiIlwKK3snYSc6IDEsCisgJ2InOiBiJ2FiY2RlZmdoaWprbCcKKyAgICAgIGInbW5vcHFyc3R1dnd4JworICAgICAgYid5eicsCisgJ2MnOiAyfSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdCh7J2EnOiAxLCAnYic6IGxldHRlcnMsICdjJzogMn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9MjApLCAiIiJcCit7J2EnOiAxLAorICdiJzogYidhYmNkZWZnaCcKKyAgICAgIGInaWprbG1ub3AnCisgICAgICBiJ3Fyc3R1dnd4eXonLAorICdjJzogMn0iIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoW1tbW1tbbGV0dGVyc11dXV1dXSwgd2lkdGg9MjUpLCAiIiJcCitbW1tbW1tiJ2FiY2RlZmdoaWprbG1ub3AnCisgICAgICBiJ3Fyc3R1dnd4eXonXV1dXV1dIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KFtbW1tbW3NwZWNpYWxdXV1dXV0sIHdpZHRoPTQxKSwgIiIiXAorW1tbW1tbYidcXHgwMFxceDAxXFx4MDJcXHgwM1xceDA0XFx4MDVcXHgwNlxceDA3JworICAgICAgYidcXHgwOFxcdFxcblxceDBiXFx4MGNcXHJcXHgwZVxceDBmJ11dXV1dXSIiIikKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBwcHJpbnQgaXMgYSB1c2FibGUgcmVwcgorICAgICAgICBmb3Igd2lkdGggaW4gcmFuZ2UoMSwgNjQpOgorICAgICAgICAgICAgZm9ybWF0dGVkID0gcHByaW50LnBmb3JtYXQoc3BlY2lhbCwgd2lkdGg9d2lkdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoZm9ybWF0dGVkKSwgc3BlY2lhbCkKKyAgICAgICAgICAgIGZvcm1hdHRlZCA9IHBwcmludC5wZm9ybWF0KFtzcGVjaWFsXSAqIDIsIHdpZHRoPXdpZHRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKGZvcm1hdHRlZCksIFtzcGVjaWFsXSAqIDIpCisKKyAgICBkZWYgdGVzdF9ieXRlYXJyYXlfd3JhcChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChieXRlYXJyYXkoKSwgd2lkdGg9MSksICJieXRlYXJyYXkoYicnKSIpCisgICAgICAgIGxldHRlcnMgPSBieXRlYXJyYXkoYidhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobGV0dGVycywgd2lkdGg9NDApLCByZXByKGxldHRlcnMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGxldHRlcnMsIHdpZHRoPTI4KSwgIiIiXAorYnl0ZWFycmF5KGInYWJjZGVmZ2hpamtsJworICAgICAgICAgIGInbW5vcHFyc3R1dnd4eXonKSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChsZXR0ZXJzLCB3aWR0aD0yNyksICIiIlwKK2J5dGVhcnJheShiJ2FiY2RlZmdoaWprbCcKKyAgICAgICAgICBiJ21ub3BxcnN0dXZ3eCcKKyAgICAgICAgICBiJ3l6JykiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobGV0dGVycywgd2lkdGg9MjUpLCAiIiJcCitieXRlYXJyYXkoYidhYmNkZWZnaGlqa2wnCisgICAgICAgICAgYidtbm9wcXJzdHV2d3gnCisgICAgICAgICAgYid5eicpIiIiKQorICAgICAgICBzcGVjaWFsID0gYnl0ZWFycmF5KHJhbmdlKDE2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzcGVjaWFsLCB3aWR0aD03MiksIHJlcHIoc3BlY2lhbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc3BlY2lhbCwgd2lkdGg9NTcpLCAiIiJcCitieXRlYXJyYXkoYidcXHgwMFxceDAxXFx4MDJcXHgwM1xceDA0XFx4MDVcXHgwNlxceDA3XFx4MDhcXHRcXG5cXHgwYicKKyAgICAgICAgICBiJ1xceDBjXFxyXFx4MGVcXHgwZicpIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNwZWNpYWwsIHdpZHRoPTQxKSwgIiIiXAorYnl0ZWFycmF5KGInXFx4MDBcXHgwMVxceDAyXFx4MDMnCisgICAgICAgICAgYidcXHgwNFxceDA1XFx4MDZcXHgwN1xceDA4XFx0XFxuXFx4MGInCisgICAgICAgICAgYidcXHgwY1xcclxceDBlXFx4MGYnKSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzcGVjaWFsLCB3aWR0aD0xKSwgIiIiXAorYnl0ZWFycmF5KGInXFx4MDBcXHgwMVxceDAyXFx4MDMnCisgICAgICAgICAgYidcXHgwNFxceDA1XFx4MDZcXHgwNycKKyAgICAgICAgICBiJ1xceDA4XFx0XFxuXFx4MGInCisgICAgICAgICAgYidcXHgwY1xcclxceDBlXFx4MGYnKSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdCh7J2EnOiAxLCAnYic6IGxldHRlcnMsICdjJzogMn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9MzEpLCAiIiJcCit7J2EnOiAxLAorICdiJzogYnl0ZWFycmF5KGInYWJjZGVmZ2hpamtsJworICAgICAgICAgICAgICAgIGInbW5vcHFyc3R1dnd4JworICAgICAgICAgICAgICAgIGIneXonKSwKKyAnYyc6IDJ9IiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KFtbW1tbbGV0dGVyc11dXV1dLCB3aWR0aD0zNyksICIiIlwKK1tbW1tbYnl0ZWFycmF5KGInYWJjZGVmZ2hpamtsbW5vcCcKKyAgICAgICAgICAgICAgIGIncXJzdHV2d3h5eicpXV1dXV0iIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoW1tbW1tzcGVjaWFsXV1dXV0sIHdpZHRoPTUwKSwgIiIiXAorW1tbW1tieXRlYXJyYXkoYidcXHgwMFxceDAxXFx4MDJcXHgwM1xceDA0XFx4MDVcXHgwNlxceDA3JworICAgICAgICAgICAgICAgYidcXHgwOFxcdFxcblxceDBiXFx4MGNcXHJcXHgwZVxceDBmJyldXV1dXSIiIikKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRfZGljdChzZWxmKToKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0KGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkLCB3aWR0aD0xKSwgImRlZmF1bHRkaWN0KDxjbGFzcyAnaW50Jz4sIHt9KSIpCisgICAgICAgIHdvcmRzID0gJ3RoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgYSBsYXp5IGRvZycuc3BsaXQoKQorICAgICAgICBkID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QoaW50LCB6aXAod29yZHMsIGl0ZXJ0b29scy5jb3VudCgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkKSwKKyIiIlwKK2RlZmF1bHRkaWN0KDxjbGFzcyAnaW50Jz4sCisgICAgICAgICAgICB7J2EnOiA2LAorICAgICAgICAgICAgICdicm93bic6IDIsCisgICAgICAgICAgICAgJ2RvZyc6IDgsCisgICAgICAgICAgICAgJ2ZveCc6IDMsCisgICAgICAgICAgICAgJ2p1bXBlZCc6IDQsCisgICAgICAgICAgICAgJ2xhenknOiA3LAorICAgICAgICAgICAgICdvdmVyJzogNSwKKyAgICAgICAgICAgICAncXVpY2snOiAxLAorICAgICAgICAgICAgICd0aGUnOiAwfSkiIiIpCisKKyAgICBkZWYgdGVzdF9jb3VudGVyKHNlbGYpOgorICAgICAgICBkID0gY29sbGVjdGlvbnMuQ291bnRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCwgd2lkdGg9MSksICJDb3VudGVyKCkiKQorICAgICAgICBkID0gY29sbGVjdGlvbnMuQ291bnRlcignc2Vuc2VsZXNzbmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCwgd2lkdGg9NDApLAorIiIiXAorQ291bnRlcih7J3MnOiA2LAorICAgICAgICAgJ2UnOiA0LAorICAgICAgICAgJ24nOiAyLAorICAgICAgICAgJ2wnOiAxfSkiIiIpCisKKyAgICBkZWYgdGVzdF9jaGFpbm1hcChzZWxmKToKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLkNoYWluTWFwKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkLCB3aWR0aD0xKSwgIkNoYWluTWFwKHt9KSIpCisgICAgICAgIHdvcmRzID0gJ3RoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgYSBsYXp5IGRvZycuc3BsaXQoKQorICAgICAgICBpdGVtcyA9IGxpc3QoemlwKHdvcmRzLCBpdGVydG9vbHMuY291bnQoKSkpCisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5DaGFpbk1hcChkaWN0KGl0ZW1zKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkKSwKKyIiIlwKK0NoYWluTWFwKHsnYSc6IDYsCisgICAgICAgICAgJ2Jyb3duJzogMiwKKyAgICAgICAgICAnZG9nJzogOCwKKyAgICAgICAgICAnZm94JzogMywKKyAgICAgICAgICAnanVtcGVkJzogNCwKKyAgICAgICAgICAnbGF6eSc6IDcsCisgICAgICAgICAgJ292ZXInOiA1LAorICAgICAgICAgICdxdWljayc6IDEsCisgICAgICAgICAgJ3RoZSc6IDB9KSIiIikKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLkNoYWluTWFwKGRpY3QoaXRlbXMpLCBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdChpdGVtcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCksCisiIiJcCitDaGFpbk1hcCh7J2EnOiA2LAorICAgICAgICAgICdicm93bic6IDIsCisgICAgICAgICAgJ2RvZyc6IDgsCisgICAgICAgICAgJ2ZveCc6IDMsCisgICAgICAgICAgJ2p1bXBlZCc6IDQsCisgICAgICAgICAgJ2xhenknOiA3LAorICAgICAgICAgICdvdmVyJzogNSwKKyAgICAgICAgICAncXVpY2snOiAxLAorICAgICAgICAgICd0aGUnOiAwfSwKKyAgICAgICAgIE9yZGVyZWREaWN0KFsoJ3RoZScsIDApLAorICAgICAgICAgICAgICAgICAgICAgICgncXVpY2snLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAoJ2Jyb3duJywgMiksCisgICAgICAgICAgICAgICAgICAgICAgKCdmb3gnLCAzKSwKKyAgICAgICAgICAgICAgICAgICAgICAoJ2p1bXBlZCcsIDQpLAorICAgICAgICAgICAgICAgICAgICAgICgnb3ZlcicsIDUpLAorICAgICAgICAgICAgICAgICAgICAgICgnYScsIDYpLAorICAgICAgICAgICAgICAgICAgICAgICgnbGF6eScsIDcpLAorICAgICAgICAgICAgICAgICAgICAgICgnZG9nJywgOCldKSkiIiIpCisKKyAgICBkZWYgdGVzdF9kZXF1ZShzZWxmKToKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLmRlcXVlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkLCB3aWR0aD0xKSwgImRlcXVlKFtdKSIpCisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5kZXF1ZShtYXhsZW49NykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkLCB3aWR0aD0xKSwgImRlcXVlKFtdLCBtYXhsZW49NykiKQorICAgICAgICB3b3JkcyA9ICd0aGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVyIGEgbGF6eSBkb2cnLnNwbGl0KCkKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLmRlcXVlKHppcCh3b3JkcywgaXRlcnRvb2xzLmNvdW50KCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQpLAorIiIiXAorZGVxdWUoWygndGhlJywgMCksCisgICAgICAgKCdxdWljaycsIDEpLAorICAgICAgICgnYnJvd24nLCAyKSwKKyAgICAgICAoJ2ZveCcsIDMpLAorICAgICAgICgnanVtcGVkJywgNCksCisgICAgICAgKCdvdmVyJywgNSksCisgICAgICAgKCdhJywgNiksCisgICAgICAgKCdsYXp5JywgNyksCisgICAgICAgKCdkb2cnLCA4KV0pIiIiKQorICAgICAgICBkID0gY29sbGVjdGlvbnMuZGVxdWUoemlwKHdvcmRzLCBpdGVydG9vbHMuY291bnQoKSksIG1heGxlbj03KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQpLAorIiIiXAorZGVxdWUoWygnYnJvd24nLCAyKSwKKyAgICAgICAoJ2ZveCcsIDMpLAorICAgICAgICgnanVtcGVkJywgNCksCisgICAgICAgKCdvdmVyJywgNSksCisgICAgICAgKCdhJywgNiksCisgICAgICAgKCdsYXp5JywgNyksCisgICAgICAgKCdkb2cnLCA4KV0sCisgICAgICBtYXhsZW49NykiIiIpCisKKyAgICBkZWYgdGVzdF91c2VyX2RpY3Qoc2VsZik6CisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5Vc2VyRGljdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCwgd2lkdGg9MSksICJ7fSIpCisgICAgICAgIHdvcmRzID0gJ3RoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgYSBsYXp5IGRvZycuc3BsaXQoKQorICAgICAgICBkID0gY29sbGVjdGlvbnMuVXNlckRpY3QoemlwKHdvcmRzLCBpdGVydG9vbHMuY291bnQoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCksCisiIiJcCit7J2EnOiA2LAorICdicm93bic6IDIsCisgJ2RvZyc6IDgsCisgJ2ZveCc6IDMsCisgJ2p1bXBlZCc6IDQsCisgJ2xhenknOiA3LAorICdvdmVyJzogNSwKKyAncXVpY2snOiAxLAorICd0aGUnOiAwfSIiIikKKworICAgIGRlZiB0ZXN0X3VzZXJfbGlzdChzZWxmKToKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLlVzZXJMaXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkLCB3aWR0aD0xKSwgIltdIikKKyAgICAgICAgd29yZHMgPSAndGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciBhIGxhenkgZG9nJy5zcGxpdCgpCisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5Vc2VyTGlzdCh6aXAod29yZHMsIGl0ZXJ0b29scy5jb3VudCgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkKSwKKyIiIlwKK1soJ3RoZScsIDApLAorICgncXVpY2snLCAxKSwKKyAoJ2Jyb3duJywgMiksCisgKCdmb3gnLCAzKSwKKyAoJ2p1bXBlZCcsIDQpLAorICgnb3ZlcicsIDUpLAorICgnYScsIDYpLAorICgnbGF6eScsIDcpLAorICgnZG9nJywgOCldIiIiKQorCisgICAgZGVmIHRlc3RfdXNlcl9zdHJpbmcoc2VsZik6CisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5Vc2VyU3RyaW5nKCcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQsIHdpZHRoPTEpLCAiJyciKQorICAgICAgICBkID0gY29sbGVjdGlvbnMuVXNlclN0cmluZygndGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciBhIGxhenkgZG9nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkLCB3aWR0aD0yMCksCisiIiJcCisoJ3RoZSBxdWljayBicm93biAnCisgJ2ZveCBqdW1wZWQgb3ZlciAnCisgJ2EgbGF6eSBkb2cnKSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdCh7MTogZH0sIHdpZHRoPTIwKSwKKyIiIlwKK3sxOiAndGhlIHF1aWNrICcKKyAgICAnYnJvd24gZm94ICcKKyAgICAnanVtcGVkIG92ZXIgYSAnCisgICAgJ2xhenkgZG9nJ30iIiIpCiAKIAogY2xhc3MgRG90dGVkUHJldHR5UHJpbnRlcihwcHJpbnQuUHJldHR5UHJpbnRlcik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Byb3BlcnR5LnB5IGIvTGliL3Rlc3QvdGVzdF9wcm9wZXJ0eS5weQppbmRleCBjZWU3MjAzLi4yNmI3ZDUyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Byb3BlcnR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHJvcGVydHkucHkKQEAgLTMsNyArMyw2IEBACiAKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiBjbGFzcyBQcm9wZXJ0eUJhc2UoRXhjZXB0aW9uKToKICAgICBwYXNzCkBAIC0xNTEsNiArMTUwLDI4IEBACiAgICAgICAgICAgICAgICAgZm9vID0gcHJvcGVydHkoZm9vKQogICAgICAgICAgICAgQy5mb28uX19pc2Fic3RyYWN0bWV0aG9kX18KIAorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCisgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUiKQorICAgIGRlZiB0ZXN0X3Byb3BlcnR5X2J1aWx0aW5fZG9jX3dyaXRhYmxlKHNlbGYpOgorICAgICAgICBwID0gcHJvcGVydHkoZG9jPSdiYXNpYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5fX2RvY19fLCAnYmFzaWMnKQorICAgICAgICBwLl9fZG9jX18gPSAnZXh0ZW5kZWQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5fX2RvY19fLCAnZXh0ZW5kZWQnKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKKyAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCisgICAgZGVmIHRlc3RfcHJvcGVydHlfZGVjb3JhdG9yX2RvY193cml0YWJsZShzZWxmKToKKyAgICAgICAgY2xhc3MgUHJvcGVydHlXcml0YWJsZURvYyhvYmplY3QpOgorCisgICAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICAgIGRlZiBzcGFtKHNlbGYpOgorICAgICAgICAgICAgICAgICIiIkVnZ3MiIiIKKyAgICAgICAgICAgICAgICByZXR1cm4gImVnZ3MiCisKKyAgICAgICAgc3ViID0gUHJvcGVydHlXcml0YWJsZURvYygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ViLl9fY2xhc3NfXy5zcGFtLl9fZG9jX18sICdFZ2dzJykKKyAgICAgICAgc3ViLl9fY2xhc3NfXy5zcGFtLl9fZG9jX18gPSAnU3BhbScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWIuX19jbGFzc19fLnNwYW0uX19kb2NfXywgJ1NwYW0nKQogCiAjIElzc3VlIDU4OTA6IHN1YmNsYXNzZXMgb2YgcHJvcGVydHkgZG8gbm90IHByZXNlcnZlIG1ldGhvZCBfX2RvY19fIHN0cmluZ3MKIGNsYXNzIFByb3BlcnR5U3ViKHByb3BlcnR5KToKQEAgLTI0Nyw4ICsyNjgsNSBAQAogCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChQcm9wZXJ0eVRlc3RzLCBQcm9wZXJ0eVN1YmNsYXNzVGVzdHMpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHN0YXRzLnB5IGIvTGliL3Rlc3QvdGVzdF9wc3RhdHMucHkKaW5kZXggOWViZWViYi4uNTY2YjNlYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wc3RhdHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wc3RhdHMucHkKQEAgLTM0LDEyICszNCw1IEBACiAgICAgICAgIHN0YXRzLmFkZChzZWxmLnN0YXRzLCBzZWxmLnN0YXRzKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgQWRkQ2FsbGVyc1Rlc3RDYXNlLAotICAgICAgICBTdGF0c1Rlc3RDYXNlLAotICAgICkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B0eS5weSBiL0xpYi90ZXN0L3Rlc3RfcHR5LnB5CmluZGV4IDg5MTY4NjEuLmVmNWU5OWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHR5LnB5CkBAIC0xLDcgKzEsNiBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIHJ1bl91bml0dGVzdCwgaW1wb3J0X21vZHVsZSwgcmVhcF9jaGlsZHJlbgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIGltcG9ydF9tb2R1bGUsIHJlYXBfY2hpbGRyZW4KIAotI1NraXAgdGhlc2UgdGVzdHMgaWYgZWl0aGVyIGZjbnRsIG9yIHRlcm1pb3MgaXMgbm90IGF2YWlsYWJsZQotZmNudGwgPSBpbXBvcnRfbW9kdWxlKCdmY250bCcpCisjIFNraXAgdGhlc2UgdGVzdHMgaWYgdGVybWlvcyBpcyBub3QgYXZhaWxhYmxlCiBpbXBvcnRfbW9kdWxlKCd0ZXJtaW9zJykKIAogaW1wb3J0IGVycm5vCkBAIC04NCwxNiArODMsMTggQEAKICAgICAgICAgIyBpbiBtYXN0ZXJfb3BlbigpLCB3ZSBuZWVkIHRvIHJlYWQgdGhlIEVPRi4KIAogICAgICAgICAjIEVuc3VyZSB0aGUgZmQgaXMgbm9uLWJsb2NraW5nIGluIGNhc2UgdGhlcmUncyBub3RoaW5nIHRvIHJlYWQuCi0gICAgICAgIG9yaWdfZmxhZ3MgPSBmY250bC5mY250bChtYXN0ZXJfZmQsIGZjbnRsLkZfR0VURkwpCi0gICAgICAgIGZjbnRsLmZjbnRsKG1hc3Rlcl9mZCwgZmNudGwuRl9TRVRGTCwgb3JpZ19mbGFncyB8IG9zLk9fTk9OQkxPQ0spCisgICAgICAgIGJsb2NraW5nID0gb3MuZ2V0X2Jsb2NraW5nKG1hc3Rlcl9mZCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgczEgPSBvcy5yZWFkKG1hc3Rlcl9mZCwgMTAyNCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBzMSkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUFHQUlOOgotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICMgUmVzdG9yZSB0aGUgb3JpZ2luYWwgZmxhZ3MuCi0gICAgICAgIGZjbnRsLmZjbnRsKG1hc3Rlcl9mZCwgZmNudGwuRl9TRVRGTCwgb3JpZ19mbGFncykKKyAgICAgICAgICAgIG9zLnNldF9ibG9ja2luZyhtYXN0ZXJfZmQsIEZhbHNlKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHMxID0gb3MucmVhZChtYXN0ZXJfZmQsIDEwMjQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIHMxKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVBR0FJTjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgUmVzdG9yZSB0aGUgb3JpZ2luYWwgZmxhZ3MuCisgICAgICAgICAgICBvcy5zZXRfYmxvY2tpbmcobWFzdGVyX2ZkLCBibG9ja2luZykKIAogICAgICAgICBkZWJ1ZygiV3JpdGluZyB0byBzbGF2ZV9mZCIpCiAgICAgICAgIG9zLndyaXRlKHNsYXZlX2ZkLCBURVNUX1NUUklOR18xKQpAQCAtMjkyLDExICsyOTMsOCBAQAogICAgICAgICAgICAgcHR5Ll9jb3B5KG1hc3RlcnNbMF0pCiAKIAotZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgotICAgIHRyeToKLSAgICAgICAgcnVuX3VuaXR0ZXN0KFNtYWxsUHR5VGVzdHMsIFB0eVRlc3QpCi0gICAgZmluYWxseToKLSAgICAgICAgcmVhcF9jaGlsZHJlbigpCitkZWYgdGVhckRvd25Nb2R1bGUoKToKKyAgICByZWFwX2NoaWxkcmVuKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5IGIvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5CmluZGV4IGI4MWE1OTUuLjE5MzJjNmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkKQEAgLTYsNyArNiw3IEBACiBmcm9tIHhtbC5zYXgueG1scmVhZGVyIGltcG9ydCBBdHRyaWJ1dGVzSW1wbAogZnJvbSB4bWwuZG9tIGltcG9ydCBwdWxsZG9tCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGZpbmRmaWxlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUKIAogCiB0c3RmaWxlID0gZmluZGZpbGUoInRlc3QueG1sIiwgc3ViZGlyPSJ4bWx0ZXN0ZGF0YSIpCkBAIC0zMzksOSArMzM5LDUgQEAKICAgICAgICAgZG9jLnVubGluaygpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChQdWxsRE9NVGVzdENhc2UsIFRob3JvdWdoVGVzdENhc2UsIFNBWDJET01UZXN0Q2FzZSkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B3ZC5weSBiL0xpYi90ZXN0L3Rlc3RfcHdkLnB5CmluZGV4IDM3YTFiY2IuLmI3YjFhNGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHdkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHdkLnB5CkBAIC0xMDcsOCArMTA3LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHB3ZC5nZXRwd3VpZCwgMioqMTI4KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgcHdkLmdldHB3dWlkLCAtMioqMTI4KQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUHdkVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9weV9jb21waWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9weV9jb21waWxlLnB5CmluZGV4IGMxZmQ0ZjYuLjRhNmNhYTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHlfY29tcGlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B5X2NvbXBpbGUucHkKQEAgLTk4LDYgKzk4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cygKICAgICAgICAgICAgIGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGJhZF9jb2RpbmcpKSkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID4gMCwgJ3Rlc3QgZG9lcyBub3Qgd29yayB3aXRoIC1PJykKICAgICBkZWYgdGVzdF9kb3VibGVfZG90X25vX2Nsb2JiZXIoc2VsZik6CiAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIyOTY2CiAgICAgICAgICMgcHlfY29tcGlsZSBmb28uYmFyLnB5IC0+IF9fcHljYWNoZV9fL2Zvby5jcHl0aG9uLTM0LnB5YwpAQCAtMTE3LDYgKzExOCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoY2FjaGVfcGF0aCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMocHljX3BhdGgpKQogCisgICAgZGVmIHRlc3Rfb3B0aW1pemF0aW9uX3BhdGgoc2VsZik6CisgICAgICAgICMgU3BlY2lmeWluZyBvcHRpbWl6ZWQgYnl0ZWNvZGUgc2hvdWxkIGxlYWQgdG8gYSBwYXRoIHJlZmxlY3RpbmcgdGhhdC4KKyAgICAgICAgc2VsZi5hc3NlcnRJbignb3B0LTInLCBweV9jb21waWxlLmNvbXBpbGUoc2VsZi5zb3VyY2VfcGF0aCwgb3B0aW1pemU9MikpCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHljbGJyLnB5IGIvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKaW5kZXggMzllYjY1Zi4uNmZmYmJiZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKQEAgLTIsMTEgKzIsMTAgQEAKICAgIFRlc3QgY2FzZXMgZm9yIHB5Y2xici5weQogICAgTmljayBNYXRoZXdzb24KICcnJwotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogaW1wb3J0IHN5cwogZnJvbSB0eXBlcyBpbXBvcnQgRnVuY3Rpb25UeXBlLCBNZXRob2RUeXBlLCBCdWlsdGluRnVuY3Rpb25UeXBlCiBpbXBvcnQgcHljbGJyCi1mcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UsIG1haW4gYXMgdW5pdHRlc3RfbWFpbgogCiBTdGF0aWNNZXRob2RUeXBlID0gdHlwZShzdGF0aWNtZXRob2QobGFtYmRhOiBOb25lKSkKIENsYXNzTWV0aG9kVHlwZSA9IHR5cGUoY2xhc3NtZXRob2QobGFtYmRhIGM6IE5vbmUpKQpAQCAtMTczLDkgKzE3Miw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yLCBweWNsYnIucmVhZG1vZHVsZV9leCwgJ2FzeW5jb3JlLmZvbycpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChQeWNsYnJUZXN0KQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkgYi9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CmluZGV4IDM0M2RkMjEuLjhhZDU3MDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9weWRvYy5weQpAQCAtMiw3ICsyLDYgQEAKIGltcG9ydCBzeXMKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IGNvbnRleHRsaWIKLWltcG9ydCBkaWZmbGliCiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBpbnNwZWN0CiBpbXBvcnQgcHlkb2MKQEAgLTIyLDcgKzIxLDcgQEAKIGltcG9ydCB0ZXh0d3JhcAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKAogICAgIFRFU1RGTiwgcm10cmVlLAogICAgIHJlYXBfY2hpbGRyZW4sIHJlYXBfdGhyZWFkcywgY2FwdHVyZWRfb3V0cHV0LCBjYXB0dXJlZF9zdGRvdXQsCkBAIC0yNTcsNyArMjU2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzIGluIGV4cGVjdGVkX2RhdGFfZG9jc3RyaW5ncykKIAogIyBvdXRwdXQgcGF0dGVybiBmb3IgbWlzc2luZyBtb2R1bGUKLW1pc3NpbmdfcGF0dGVybiA9ICJubyBQeXRob24gZG9jdW1lbnRhdGlvbiBmb3VuZCBmb3IgJyVzJyIKK21pc3NpbmdfcGF0dGVybiA9ICcnJ1wKK05vIFB5dGhvbiBkb2N1bWVudGF0aW9uIGZvdW5kIGZvciAlci4KK1VzZSBoZWxwKCkgdG8gZ2V0IHRoZSBpbnRlcmFjdGl2ZSBoZWxwIHV0aWxpdHkuCitVc2UgaGVscChzdHIpIGZvciBoZWxwIG9uIHRoZSBzdHIgY2xhc3MuJycnLnJlcGxhY2UoJ1xuJywgb3MubGluZXNlcCkKIAogIyBvdXRwdXQgcGF0dGVybiBmb3IgbW9kdWxlIHdpdGggYmFkIGltcG9ydHMKIGJhZGltcG9ydF9wYXR0ZXJuID0gInByb2JsZW0gaW4gJXMgLSBJbXBvcnRFcnJvcjogTm8gbW9kdWxlIG5hbWVkICVyIgpAQCAtMzY0LDE1ICszNjYsNiBAQAogICAgIG91dHB1dCA9IHBhdHQuc3ViKCcnLCBvdXRwdXQpCiAgICAgcmV0dXJuIG91dHB1dC5zdHJpcCgpLCBsb2MKIAotZGVmIHByaW50X2RpZmZzKHRleHQxLCB0ZXh0Mik6Ci0gICAgIlByaW50cyB1bmlmaWVkIGRpZmZzIGZvciB0d28gdGV4dHMiCi0gICAgIyBYWFggbm93IG9ic29sZXRlLCB1c2UgdW5pdHRlc3QgYnVpbHQtaW4gc3VwcG9ydAotICAgIGxpbmVzMSA9IHRleHQxLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKLSAgICBsaW5lczIgPSB0ZXh0Mi5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCi0gICAgZGlmZnMgPSBkaWZmbGliLnVuaWZpZWRfZGlmZihsaW5lczEsIGxpbmVzMiwgbj0wLCBmcm9tZmlsZT0nZXhwZWN0ZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9maWxlPSdnb3QnKQotICAgIHByaW50KCdcbicgKyAnJy5qb2luKGRpZmZzKSkKLQogZGVmIGdldF9odG1sX3RpdGxlKHRleHQpOgogICAgICMgQml0IG9mIGhhY2ssIGJ1dCBnb29kIGVub3VnaCBmb3IgdGVzdCBwdXJwb3NlcwogICAgIGhlYWRlciwgXywgXyA9IHRleHQucGFydGl0aW9uKCI8L2hlYWQ+IikKQEAgLTQyNSw5ICs0MTgsNyBAQAogICAgICAgICBleHBlY3RlZF9odG1sID0gZXhwZWN0ZWRfaHRtbF9wYXR0ZXJuICUgKAogICAgICAgICAgICAgICAgICAgICAgICAgKG1vZF91cmwsIG1vZF9maWxlLCBkb2NfbG9jKSArCiAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9odG1sX2RhdGFfZG9jc3RyaW5ncykKLSAgICAgICAgaWYgcmVzdWx0ICE9IGV4cGVjdGVkX2h0bWw6Ci0gICAgICAgICAgICBwcmludF9kaWZmcyhleHBlY3RlZF9odG1sLCByZXN1bHQpCi0gICAgICAgICAgICBzZWxmLmZhaWwoIm91dHB1dHMgYXJlIG5vdCBlcXVhbCwgc2VlIGRpZmYgYWJvdmUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWRfaHRtbCkKIAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCiAgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUiKQpAQCAtNDQwLDkgKzQzMSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAoZG9jX2xvYywpICsKICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3RleHRfZGF0YV9kb2NzdHJpbmdzICsKICAgICAgICAgICAgICAgICAgICAgICAgIChpbnNwZWN0LmdldGFic2ZpbGUocHlkb2NfbW9kKSwpKQotICAgICAgICBpZiByZXN1bHQgIT0gZXhwZWN0ZWRfdGV4dDoKLSAgICAgICAgICAgIHByaW50X2RpZmZzKGV4cGVjdGVkX3RleHQsIHJlc3VsdCkKLSAgICAgICAgICAgIHNlbGYuZmFpbCgib3V0cHV0cyBhcmUgbm90IGVxdWFsLCBzZWUgZGlmZiBhYm92ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGV4dCwgcmVzdWx0KQogCiAgICAgZGVmIHRlc3RfdGV4dF9lbnVtX21lbWJlcl93aXRoX3ZhbHVlX3plcm8oc2VsZik6CiAgICAgICAgICMgVGVzdCBpc3N1ZSAjMjA2NTQgdG8gZW5zdXJlIGVudW0gbWVtYmVyIHdpdGggdmFsdWUgMCBjYW4gYmUKQEAgLTk1Nyw5ICs5NDYsNyBAQAogICAgICAgICBleHBlY3RlZF90ZXh0ID0gZXhwZWN0ZWRfZHluYW1pY2F0dHJpYnV0ZV9wYXR0ZXJuICUgKAogICAgICAgICAgICAgICAgIChfX25hbWVfXywpICsgZXhwZWN0ZWRfdGV4dF9kYXRhX2RvY3N0cmluZ3NbOjJdKQogICAgICAgICByZXN1bHQgPSBvdXRwdXQuZ2V0dmFsdWUoKS5zdHJpcCgpCi0gICAgICAgIGlmIHJlc3VsdCAhPSBleHBlY3RlZF90ZXh0OgotICAgICAgICAgICAgcHJpbnRfZGlmZnMoZXhwZWN0ZWRfdGV4dCwgcmVzdWx0KQotICAgICAgICAgICAgc2VsZi5mYWlsKCJvdXRwdXRzIGFyZSBub3QgZXF1YWwsIHNlZSBkaWZmIGFib3ZlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXh0LCByZXN1bHQpCiAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAogICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtTzIgYW5kIGFib3ZlIikKQEAgLTk4MCw5ICs5NjcsNyBAQAogICAgICAgICBoZWxwZXIoQ2xhc3MpCiAgICAgICAgIGV4cGVjdGVkX3RleHQgPSBleHBlY3RlZF92aXJ0dWFsYXR0cmlidXRlX3BhdHRlcm4xICUgX19uYW1lX18KICAgICAgICAgcmVzdWx0ID0gb3V0cHV0LmdldHZhbHVlKCkuc3RyaXAoKQotICAgICAgICBpZiByZXN1bHQgIT0gZXhwZWN0ZWRfdGV4dDoKLSAgICAgICAgICAgIHByaW50X2RpZmZzKGV4cGVjdGVkX3RleHQsIHJlc3VsdCkKLSAgICAgICAgICAgIHNlbGYuZmFpbCgib3V0cHV0cyBhcmUgbm90IGVxdWFsLCBzZWUgZGlmZiBhYm92ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGV4dCwgcmVzdWx0KQogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKICAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCkBAIC0xMDIyLDE5ICsxMDA3LDEzIEBACiAgICAgICAgIGhlbHBlcihDbGFzczEpCiAgICAgICAgIGV4cGVjdGVkX3RleHQxID0gZXhwZWN0ZWRfdmlydHVhbGF0dHJpYnV0ZV9wYXR0ZXJuMiAlIF9fbmFtZV9fCiAgICAgICAgIHJlc3VsdDEgPSBvdXRwdXQuZ2V0dmFsdWUoKS5zdHJpcCgpCi0gICAgICAgIGlmIHJlc3VsdDEgIT0gZXhwZWN0ZWRfdGV4dDE6Ci0gICAgICAgICAgICBwcmludF9kaWZmcyhleHBlY3RlZF90ZXh0MSwgcmVzdWx0MSkKLSAgICAgICAgICAgIGZhaWwxID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3RleHQxLCByZXN1bHQxKQogICAgICAgICBvdXRwdXQgPSBTdHJpbmdJTygpCiAgICAgICAgIGhlbHBlciA9IHB5ZG9jLkhlbHBlcihvdXRwdXQ9b3V0cHV0KQogICAgICAgICBoZWxwZXIoQ2xhc3MyKQogICAgICAgICBleHBlY3RlZF90ZXh0MiA9IGV4cGVjdGVkX3ZpcnR1YWxhdHRyaWJ1dGVfcGF0dGVybjMgJSBfX25hbWVfXwogICAgICAgICByZXN1bHQyID0gb3V0cHV0LmdldHZhbHVlKCkuc3RyaXAoKQotICAgICAgICBpZiByZXN1bHQyICE9IGV4cGVjdGVkX3RleHQyOgotICAgICAgICAgICAgcHJpbnRfZGlmZnMoZXhwZWN0ZWRfdGV4dDIsIHJlc3VsdDIpCi0gICAgICAgICAgICBmYWlsMiA9IFRydWUKLSAgICAgICAgaWYgZmFpbDEgb3IgZmFpbDI6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIm91dHB1dHMgYXJlIG5vdCBlcXVhbCwgc2VlIGRpZmYgYWJvdmUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3RleHQyLCByZXN1bHQyKQogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKICAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCkBAIC0xMDUxLDkgKzEwMzAsNyBAQAogICAgICAgICBoZWxwZXIoQykKICAgICAgICAgZXhwZWN0ZWRfdGV4dCA9IGV4cGVjdGVkX21pc3NpbmdhdHRyaWJ1dGVfcGF0dGVybiAlIF9fbmFtZV9fCiAgICAgICAgIHJlc3VsdCA9IG91dHB1dC5nZXR2YWx1ZSgpLnN0cmlwKCkKLSAgICAgICAgaWYgcmVzdWx0ICE9IGV4cGVjdGVkX3RleHQ6Ci0gICAgICAgICAgICBwcmludF9kaWZmcyhleHBlY3RlZF90ZXh0LCByZXN1bHQpCi0gICAgICAgICAgICBzZWxmLmZhaWwoIm91dHB1dHMgYXJlIG5vdCBlcXVhbCwgc2VlIGRpZmYgYWJvdmUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3RleHQsIHJlc3VsdCkKIAogICAgIGRlZiB0ZXN0X3Jlc29sdmVfZmFsc2Uoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzIzMDA4OiBweWRvYyBlbnVtLnssSW50fUVudW0gZmFpbGVkCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B5ZXhwYXQucHkgYi9MaWIvdGVzdC90ZXN0X3B5ZXhwYXQucHkKaW5kZXggMjE2YTQ2Yi4uNTUwYWViZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9weWV4cGF0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHlleHBhdC5weQpAQCAtMTEsNyArMTEsNyBAQAogZnJvbSB4bWwucGFyc2VycyBpbXBvcnQgZXhwYXQKIGZyb20geG1sLnBhcnNlcnMuZXhwYXQgaW1wb3J0IGVycm9ycwogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc29ydGRpY3QsIHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNvcnRkaWN0CiAKIAogY2xhc3MgU2V0QXR0cmlidXRlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC03MzcsMTkgKzczNyw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFuZGxlcl9jYWxsX2FyZ3MsIFsoImJhciIsICJiYXoiKV0pCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChTZXRBdHRyaWJ1dGVUZXN0LAotICAgICAgICAgICAgICAgICBQYXJzZVRlc3QsCi0gICAgICAgICAgICAgICAgIE5hbWVzcGFjZVNlcGFyYXRvclRlc3QsCi0gICAgICAgICAgICAgICAgIEludGVybmluZ1Rlc3QsCi0gICAgICAgICAgICAgICAgIEJ1ZmZlclRleHRUZXN0LAotICAgICAgICAgICAgICAgICBIYW5kbGVyRXhjZXB0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgUG9zaXRpb25UZXN0LAotICAgICAgICAgICAgICAgICBzZjEyOTY0MzNUZXN0LAotICAgICAgICAgICAgICAgICBDaGFyZGF0YUJ1ZmZlclRlc3QsCi0gICAgICAgICAgICAgICAgIE1hbGZvcm1lZElucHV0VGVzdCwKLSAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlVGVzdCwKLSAgICAgICAgICAgICAgICAgRm9yZWlnbkRURFRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3F1ZXVlLnB5IGIvTGliL3Rlc3QvdGVzdF9xdWV1ZS5weQppbmRleCAyY2RmZWU0Li40Y2NhYTM5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3F1ZXVlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcXVldWUucHkKQEAgLTM1NCwxMCArMzU0LDUgQEAKICAgICAgICAgc2VsZi5mYWlsaW5nX3F1ZXVlX3Rlc3QocSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUXVldWVUZXN0LCBMaWZvUXVldWVUZXN0LCBQcmlvcml0eVF1ZXVlVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhaWxpbmdRdWV1ZVRlc3QpCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkgYi9MaWIvdGVzdC90ZXN0X3F1b3ByaS5weQppbmRleCA5MjUxMWZhLi43Y2FjMDEzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3F1b3ByaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3F1b3ByaS5weQpAQCAtMSw0ICsxLDMgQEAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCBzeXMsIG9zLCBpbywgc3VicHJvY2VzcwpAQCAtMjA3LDkgKzIwNiw1IEBACiAgICAgICAgIHAgPSBwLmRlY29kZSgnbGF0aW4tMScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY291dC5zcGxpdGxpbmVzKCksIHAuc3BsaXRsaW5lcygpKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUXVvcHJpVGVzdENhc2UpCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yYWlzZS5weSBiL0xpYi90ZXN0L3Rlc3RfcmFpc2UucHkKaW5kZXggYmU1YzFjNi4uYTQxYjM1MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yYWlzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JhaXNlLnB5CkBAIC00MTUsOCArNDE1LDUgQEAKICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gZXhjZXB0aW9uIHJhaXNlZCIpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yYW5nZS5weSBiL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkKaW5kZXggMmRiY2ViYy4uMTA2YzczMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yYW5nZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5CkBAIC02NDcsOCArNjQ3LDUgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CiAgICAgICAgICAgICBkZWwgcmFuZ2VvYmouc3RlcAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChSYW5nZVRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmUucHkgYi9MaWIvdGVzdC90ZXN0X3JlLnB5CmluZGV4IDczNDhhZjMuLjdhNzQxNDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yZS5weQpAQCAtMzgsNiArMzgsMjQgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoYWN0dWFsKSwgdHlwZShleHBlY3QpLCBtc2cpCiAgICAgICAgIHJlY3Vyc2UoYWN0dWFsLCBleHBlY3QpCiAKKyAgICBkZWYgY2hlY2tQYXR0ZXJuRXJyb3Ioc2VsZiwgcGF0dGVybiwgZXJybXNnLCBwb3M9Tm9uZSk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcmUuY29tcGlsZShwYXR0ZXJuKQorICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwYXR0ZXJuPXBhdHRlcm4pOgorICAgICAgICAgICAgZXJyID0gY20uZXhjZXB0aW9uCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5tc2csIGVycm1zZykKKyAgICAgICAgICAgIGlmIHBvcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5wb3MsIHBvcykKKworICAgIGRlZiBjaGVja1RlbXBsYXRlRXJyb3Ioc2VsZiwgcGF0dGVybiwgcmVwbCwgc3RyaW5nLCBlcnJtc2csIHBvcz1Ob25lKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvcikgYXMgY206CisgICAgICAgICAgICByZS5zdWIocGF0dGVybiwgcmVwbCwgc3RyaW5nKQorICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwYXR0ZXJuPXBhdHRlcm4sIHJlcGw9cmVwbCk6CisgICAgICAgICAgICBlcnIgPSBjbS5leGNlcHRpb24KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLm1zZywgZXJybXNnKQorICAgICAgICAgICAgaWYgcG9zIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLnBvcywgcG9zKQorCiAgICAgZGVmIHRlc3Rfa2VlcF9idWZmZXIoc2VsZik6CiAgICAgICAgICMgU2VlIGJ1ZyAxNDIxMgogICAgICAgICBiID0gYnl0ZWFycmF5KGIneCcpCkBAIC04NCw3ICsxMDIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YigiKD9pKWIrIiwgIngiLCAiYmJiYiBCQkJCIiksICd4IHgnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihyJ1xkKycsIHNlbGYuYnVtcF9udW0sICcwOC4yIC0yIDIzeDk5eScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICc5LjMgLTMgMjR4MTAweScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKHInXGQrJywgc2VsZi5idW1wX251bSwgJzA4LjIgLTIgMjN4OTl5JywgMyksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKHInXGQrJywgc2VsZi5idW1wX251bSwgJzA4LjIgLTIgMjN4OTl5JywgY291bnQ9MyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzkuMyAtMyAyM3g5OXknKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcuJywgbGFtYmRhIG06IHIiXG4iLCAneCcpLCAnXFxuJykKQEAgLTEwMCwxMSArMTE4LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8dW5rPngpJywgJ1xnPHVuaz5cZzx1bms+JywgJ3h4JyksICd4eHh4JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDx1bms+eCknLCAnXGc8MT5cZzwxPicsICd4eCcpLCAneHh4eCcpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLHInXHRcblx2XHJcZlxhXGJcQlxaXGFcQVx3XFdcc1xTXGRcRCcsJ2EnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXHRcblx2XHJcZlxhXGJcXEJcXFpcYVxcQVxcd1xcV1xcc1xcU1xcZFxcRCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJywgJ1x0XG5cdlxyXGZcYScsICdhJyksICdcdFxuXHZcclxmXGEnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsICdcdFxuXHZcclxmXGEnLCAnYScpLAotICAgICAgICAgICAgICAgICAgICAgICAgIChjaHIoOSkrY2hyKDEwKStjaHIoMTEpK2NocigxMykrY2hyKDEyKStjaHIoNykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsIHInXHRcblx2XHJcZlxhXGInLCAnYScpLCAnXHRcblx2XHJcZlxhXGInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsICdcdFxuXHZcclxmXGFcYicsICdhJyksICdcdFxuXHZcclxmXGFcYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJywgJ1x0XG5cdlxyXGZcYVxiJywgJ2EnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoY2hyKDkpK2NocigxMCkrY2hyKDExKStjaHIoMTMpK2NocigxMikrY2hyKDcpK2Nocig4KSkpCisgICAgICAgIGZvciBjIGluICdjZGVoaWprbG1vcHFzdXd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWic6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCAnXFwnICsgYywgJ2EnKSwgJ1xcJyArIGMpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ15ccyonLCAnWCcsICd0ZXN0JyksICdYdGVzdCcpCiAKQEAgLTE0NSw2ICsxNjYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YigneCcsIHInXDAwOScsICd4JyksICdcMCcgKyAnOScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCd4JywgcidcMTExJywgJ3gnKSwgJ1wxMTEnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YigneCcsIHInXDExNycsICd4JyksICdcMTE3JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ3gnLCByJ1wzNzcnLCAneCcpLCAnXDM3NycpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ3gnLCByJ1wxMTExJywgJ3gnKSwgJ1wxMTExJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ3gnLCByJ1wxMTExJywgJ3gnKSwgJ1wxMTEnICsgJzEnKQpAQCAtMTU1LDIxICsxNzcsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ3gnLCByJ1wwOScsICd4JyksICdcMCcgKyAnOScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCd4JywgcidcMGEnLCAneCcpLCAnXDAnICsgJ2EnKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCd4JywgcidcNDAwJywgJ3gnKSwgJ1wwJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ3gnLCByJ1w3NzcnLCAneCcpLCAnXDM3NycpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcNDAwJywgJ3gnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ29jdGFsIGVzY2FwZSB2YWx1ZSBcNDAwIG91dHNpZGUgb2YgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ3JhbmdlIDAtMG8zNzcnLCAwKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDc3NycsICd4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidvY3RhbCBlc2NhcGUgdmFsdWUgXDc3NyBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidyYW5nZSAwLTBvMzc3JywgMCkKIAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAneCcsIHInXDEnLCAneCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICd4JywgcidcOCcsICd4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1w5JywgJ3gnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAneCcsIHInXDExJywgJ3gnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAneCcsIHInXDE4JywgJ3gnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAneCcsIHInXDFhJywgJ3gnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAneCcsIHInXDkwJywgJ3gnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAneCcsIHInXDk5JywgJ3gnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAneCcsIHInXDExOCcsICd4JykgIyByJ1wxMScgKyAnOCcKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1wxMWEnLCAneCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICd4JywgcidcMTgxJywgJ3gnKSAjIHInXDE4JyArICcxJwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAneCcsIHInXDgwMCcsICd4JykgIyByJ1w4MCcgKyAnMCcKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDgnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcOScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxMScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxOCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxYScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w5MCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w5OScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxMTgnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpICMgcidcMTEnICsgJzgnCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTFhJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDE4MScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykgIyByJ1wxOCcgKyAnMScKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w4MDAnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpICMgcidcODAnICsgJzAnCiAKICAgICAgICAgIyBpbiBweXRob24yLjMgKGV0YyksIHRoZXNlIGxvb3AgZW5kbGVzc2x5IGluIHNyZV9wYXJzZXIucHkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJygoKCgoKCgoKCgoeCkpKSkpKSkpKSkpJywgcidcMTEnLCAneCcpLCAneCcpCkBAIC0xODAsNyArMjA2LDcgQEAKIAogICAgIGRlZiB0ZXN0X3F1YWxpZmllZF9yZV9zdWIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJywgJ2InLCAnYWFhYWEnKSwgJ2JiYmJiJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCAnYicsICdhYWFhYScsIDEpLCAnYmFhYWEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsICdiJywgJ2FhYWFhJywgY291bnQ9MSksICdiYWFhYScpCiAKICAgICBkZWYgdGVzdF9idWdfMTE0NjYwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihyJyhcUylccysoXFMpJywgcidcMSBcMicsICdoZWxsbyAgdGhlcmUnKSwKQEAgLTE5NCw3NSArMjIwLDEwNSBAQAogICAgIGRlZiB0ZXN0X3N5bWJvbGljX2dyb3VwcyhzZWxmKToKICAgICAgICAgcmUuY29tcGlsZSgnKD9QPGE+eCkoP1A9YSkoPyhhKXkpJykKICAgICAgICAgcmUuY29tcGlsZSgnKD9QPGExPngpKD9QPWExKSg/KGExKXkpJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoP1A8YT4pKD9QPGE+KScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnKD9QeCknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/UD0pJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoP1A9MSknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/UD1hKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnKD9QPWExKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnKD9QPWEuKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnKD9QPCknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/UDw+KScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnKD9QPDE+KScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnKD9QPGEuPiknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/KCkpJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoPyhhKSknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/KDFhKSknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/KGEuKSknKQorICAgICAgICByZS5jb21waWxlKCcoP1A8YTE+eClcMSg/KDEpeSknKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8YT4pKD9QPGE+KScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZGVmaW5pdGlvbiBvZiBncm91cCBuYW1lICdhJyBhcyBncm91cCAyOyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndhcyBncm91cCAxIikKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPGE+KD9QPWEpKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCByZWZlciB0byBhbiBvcGVuIGdyb3VwIiwgMTApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UHh5KScsICd1bmtub3duIGV4dGVuc2lvbiA/UHgnKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8YT4pKD9QPWEnLCAnbWlzc2luZyApLCB1bnRlcm1pbmF0ZWQgbmFtZScsIDExKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9JywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD0pJywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD0xKScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJzEnIiwgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPWEpJywgInVua25vd24gZ3JvdXAgbmFtZSAnYSciKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9YTEpJywgInVua25vd24gZ3JvdXAgbmFtZSAnYTEnIikKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPWEuKScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ2EuJyIsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDwpJywgJ21pc3NpbmcgPiwgdW50ZXJtaW5hdGVkIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8YScsICdtaXNzaW5nID4sIHVudGVybWluYXRlZCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPCcsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8PiknLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDwxPiknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICcxJyIsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YS4+KScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ2EuJyIsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPygnLCAnbWlzc2luZyBncm91cCBuYW1lJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/KCkpJywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPyhhKSknLCAidW5rbm93biBncm91cCBuYW1lICdhJyIsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPygtMSkpJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnLTEnIiwgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/KDFhKSknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICcxYSciLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8oYS4pKScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ2EuJyIsIDMpCiAgICAgICAgICMgTmV3IHZhbGlkL2ludmFsaWQgaWRlbnRpZmllcnMgaW4gUHl0aG9uIDMKICAgICAgICAgcmUuY29tcGlsZSgnKD9QPMK1PngpKD9QPcK1KSg/KMK1KXkpJykKICAgICAgICAgcmUuY29tcGlsZSgnKD9QPPCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKI+eCkoP1A98J2UmPCdlKvwnZSm8J2UoPCdlKzwnZSh8J2UoikoPyjwnZSY8J2Uq/CdlKbwnZSg8J2UrPCdlKHwnZSiKXkpJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoP1A8wqk+eCknKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8wqk+eCknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICfCqSciLCA0KQorICAgICAgICAjIFN1cHBvcnQgPiAxMDAgZ3JvdXBzLgorICAgICAgICBwYXQgPSAnfCcuam9pbigneCg/UDxhJWQ+JXgpeScgJSAoaSwgaSkgZm9yIGkgaW4gcmFuZ2UoMSwgMjAwICsgMSkpCisgICAgICAgIHBhdCA9ICcoPzolcykoPygyMDApenx0KScgJSBwYXQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChwYXQsICd4Yzh5eicpLnNwYW4oKSwgKDAsIDUpKQogCiAgICAgZGVmIHRlc3Rfc3ltYm9saWNfcmVmcyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJyg/UDxhPngpJywgJ1xnPGEnLCAneHgnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAnKD9QPGE+eCknLCAnXGc8JywgJ3h4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJyg/UDxhPngpJywgJ1xnJywgJ3h4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJyg/UDxhPngpJywgJ1xnPGEgYT4nLCAneHgnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAnKD9QPGE+eCknLCAnXGc8PicsICd4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICcoP1A8YT54KScsICdcZzwxYTE+JywgJ3h4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgcmUuc3ViLCAnKD9QPGE+eCknLCAnXGc8YWI+JywgJ3h4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJyg/UDxhPngpfCg/UDxiPnkpJywgJ1xnPGI+JywgJ3h4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJyg/UDxhPngpfCg/UDxiPnkpJywgJ1xcMicsICd4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICcoP1A8YT54KScsICdcZzwtMT4nLCAneHgnKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8YScsICd4eCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nID4sIHVudGVybWluYXRlZCBuYW1lJywgMykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPCcsICd4eCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nIGdyb3VwIG5hbWUnLCAzKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGcnLCAneHgnLCAnbWlzc2luZyA8JywgMikKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPGEgYT4nLCAneHgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICdhIGEnIiwgMykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPD4nLCAneHgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc2luZyBncm91cCBuYW1lJywgMykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPDFhMT4nLCAneHgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICcxYTEnIiwgMykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzwyPicsICd4eCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXDInLCAneHgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgInVua25vd24gZ3JvdXAgbmFtZSAnYWInIik6CisgICAgICAgICAgICByZS5zdWIoJyg/UDxhPngpJywgJ1xnPGFiPicsICd4eCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KXwoP1A8Yj55KScsIHInXGc8Yj4nLCAneHgnKSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KXwoP1A8Yj55KScsIHInXDInLCAneHgnKSwgJycpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzwtMT4nLCAneHgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICctMSciLCAzKQogICAgICAgICAjIE5ldyB2YWxpZC9pbnZhbGlkIGlkZW50aWZpZXJzIGluIFB5dGhvbiAzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8wrU+eCknLCByJ1xnPMK1PicsICd4eCcpLCAneHgnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPPCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKI+eCknLCByJ1xnPPCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKI+JywgJ3h4JyksICd4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICcoP1A8YT54KScsIHInXGc8wqk+JywgJ3h4JykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPMKpPicsICd4eCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ8KpJyIsIDMpCisgICAgICAgICMgU3VwcG9ydCA+IDEwMCBncm91cHMuCisgICAgICAgIHBhdCA9ICd8Jy5qb2luKCd4KD9QPGElZD4leCl5JyAlIChpLCBpKSBmb3IgaSBpbiByYW5nZSgxLCAyMDAgKyAxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocGF0LCAnXGc8MjAwPicsICd4Yzh5enhjOHknKSwgJ2M4emM4JykKIAogICAgIGRlZiB0ZXN0X3JlX3N1Ym4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3VibigiKD9pKWIrIiwgIngiLCAiYmJiYiBCQkJCIiksICgneCB4JywgMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3VibigiYisiLCAieCIsICJiYmJiIEJCQkIiKSwgKCd4IEJCQkInLCAxKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWJuKCJiKyIsICJ4IiwgInh5eiIpLCAoJ3h5eicsIDApKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1Ym4oImIqIiwgIngiLCAieHl6IiksICgneHh4eXh6eCcsIDQpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1Ym4oImIqIiwgIngiLCAieHl6IiwgMiksICgneHh4eXonLCAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWJuKCJiKiIsICJ4IiwgInh5eiIsIGNvdW50PTIpLCAoJ3h4eHl6JywgMikpCiAKICAgICBkZWYgdGVzdF9yZV9zcGxpdChzZWxmKToKICAgICAgICAgZm9yIHN0cmluZyBpbiAiOmE6Yjo6YyIsIFMoIjphOmI6OmMiKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbChyZS5zcGxpdCgiOiIsIHN0cmluZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycnLCAnYScsICdiJywgJycsICdjJ10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWwocmUuc3BsaXQoIjoqIiwgc3RyaW5nKSwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbChyZS5zcGxpdCgiOisiLCBzdHJpbmcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnJywgJ2EnLCAnYicsICdjJ10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWwocmUuc3BsaXQoIig6KikiLCBzdHJpbmcpLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFsKHJlLnNwbGl0KCIoOispIiwgc3RyaW5nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJycsICc6JywgJ2EnLCAnOicsICdiJywgJzo6JywgJ2MnXSkKICAgICAgICAgZm9yIHN0cmluZyBpbiAoYiI6YTpiOjpjIiwgQihiIjphOmI6OmMiKSwgYnl0ZWFycmF5KGIiOmE6Yjo6YyIpLAogICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnl2aWV3KGIiOmE6Yjo6YyIpKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbChyZS5zcGxpdChiIjoiLCBzdHJpbmcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiJycsIGInYScsIGInYicsIGInJywgYidjJ10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWwocmUuc3BsaXQoYiI6KiIsIHN0cmluZyksCisgICAgICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWwocmUuc3BsaXQoYiI6KyIsIHN0cmluZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2InJywgYidhJywgYidiJywgYidjJ10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWwocmUuc3BsaXQoYiIoOiopIiwgc3RyaW5nKSwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbChyZS5zcGxpdChiIig6KykiLCBzdHJpbmcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiJycsIGInOicsIGInYScsIGInOicsIGInYicsIGInOjonLCBiJ2MnXSkKICAgICAgICAgZm9yIGEsIGIsIGMgaW4gKCJceGUwXHhkZlx4ZTciLCAiXHUwNDMwXHUwNDMxXHUwNDMyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJcVTAwMDFkNDljXFUwMDAxZDQ5ZVxVMDAwMWQ0YjUiKToKICAgICAgICAgICAgIHN0cmluZyA9ICI6JXM6JXM6OiVzIiAlIChhLCBiLCBjKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiOiIsIHN0cmluZyksIFsnJywgYSwgYiwgJycsIGNdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiOioiLCBzdHJpbmcpLCBbJycsIGEsIGIsIGNdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKDoqKSIsIHN0cmluZyksCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCI6KyIsIHN0cmluZyksIFsnJywgYSwgYiwgY10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoOispIiwgc3RyaW5nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycnLCAnOicsIGEsICc6JywgYiwgJzo6JywgY10pCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKD86OiopIiwgIjphOmI6OmMiKSwgWycnLCAnYScsICdiJywgJ2MnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKDopKiIsICI6YTpiOjpjIiksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig/OjorKSIsICI6YTpiOjpjIiksIFsnJywgJ2EnLCAnYicsICdjJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig6KSsiLCAiOmE6Yjo6YyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnJywgJzonLCAnYScsICc6JywgJ2InLCAnOicsICdjJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIihbYjpdKykiLCAiOmE6Yjo6YyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnJywgJzonLCAnYScsICc6Yjo6JywgJ2MnXSkKQEAgLTI3MiwxMyArMzI4LDM0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig/OmIpfCg/OjorKSIsICI6YTpiOjpjIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWycnLCAnYScsICcnLCAnJywgJ2MnXSkKIAorICAgICAgICBmb3Igc2VwLCBleHBlY3RlZCBpbiBbCisgICAgICAgICAgICAoJzoqJywgWycnLCAnYScsICdiJywgJ2MnXSksCisgICAgICAgICAgICAoJyg/OjoqKScsIFsnJywgJ2EnLCAnYicsICdjJ10pLAorICAgICAgICAgICAgKCcoOiopJywgWycnLCAnOicsICdhJywgJzonLCAnYicsICc6OicsICdjJ10pLAorICAgICAgICAgICAgKCcoOikqJywgWycnLCAnOicsICdhJywgJzonLCAnYicsICc6JywgJ2MnXSksCisgICAgICAgIF06CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzZXA9c2VwKSwgc2VsZi5hc3NlcnRXYXJucyhGdXR1cmVXYXJuaW5nKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWwocmUuc3BsaXQoc2VwLCAnOmE6Yjo6YycpLCBleHBlY3RlZCkKKworICAgICAgICBmb3Igc2VwLCBleHBlY3RlZCBpbiBbCisgICAgICAgICAgICAoJycsIFsnOmE6Yjo6YyddKSwKKyAgICAgICAgICAgIChyJ1xiJywgWyc6YTpiOjpjJ10pLAorICAgICAgICAgICAgKHInKD89OiknLCBbJzphOmI6OmMnXSksCisgICAgICAgICAgICAocicoPzw9OiknLCBbJzphOmI6OmMnXSksCisgICAgICAgIF06CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzZXA9c2VwKSwgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFsKHJlLnNwbGl0KHNlcCwgJzphOmI6OmMnKSwgZXhwZWN0ZWQpCisKICAgICBkZWYgdGVzdF9xdWFsaWZpZWRfcmVfc3BsaXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIjoiLCAiOmE6Yjo6YyIsIDIpLCBbJycsICdhJywgJ2I6OmMnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgnOicsICdhOmI6YzpkJywgMiksIFsnYScsICdiJywgJ2M6ZCddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoOikiLCAiOmE6Yjo6YyIsIDIpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCI6IiwgIjphOmI6OmMiLCBtYXhzcGxpdD0yKSwgWycnLCAnYScsICdiOjpjJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoJzonLCAnYTpiOmM6ZCcsIG1heHNwbGl0PTIpLCBbJ2EnLCAnYicsICdjOmQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKDopIiwgIjphOmI6OmMiLCBtYXhzcGxpdD0yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbJycsICc6JywgJ2EnLCAnOicsICdiOjpjJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig6KikiLCAiOmE6Yjo6YyIsIDIpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoOispIiwgIjphOmI6OmMiLCBtYXhzcGxpdD0yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbJycsICc6JywgJ2EnLCAnOicsICdiOjpjJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhGdXR1cmVXYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig6KikiLCAiOmE6Yjo6YyIsIG1heHNwbGl0PTIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJycsICc6JywgJ2EnLCAnOicsICdiOjpjJ10pCiAKICAgICBkZWYgdGVzdF9yZV9maW5kYWxsKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZpbmRhbGwoIjorIiwgImFiYyIpLCBbXSkKQEAgLTQwNSw2ICs0ODIsMjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocC5tYXRjaCgnYWJkJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHAubWF0Y2goJ2FjJykpCiAKKyAgICAgICAgIyBTdXBwb3J0ID4gMTAwIGdyb3Vwcy4KKyAgICAgICAgcGF0ID0gJ3wnLmpvaW4oJ3goP1A8YSVkPiV4KXknICUgKGksIGkpIGZvciBpIGluIHJhbmdlKDEsIDIwMCArIDEpKQorICAgICAgICBwYXQgPSAnKD86JXMpKD8oMjAwKXopJyAlIHBhdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHBhdCwgJ3hjOHl6Jykuc3BhbigpLCAoMCwgNSkpCisKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhPikoPygwKSknLCAnYmFkIGdyb3VwIG51bWJlcicsIDEwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKCkoPygxKWF8YicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIHN1YnBhdHRlcm4nLCAyKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKCkoPygxKWF8YnxjKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbmFsIGJhY2tyZWYgd2l0aCBtb3JlIHRoYW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0d28gYnJhbmNoZXMnLCAxMCkKKworICAgIGRlZiB0ZXN0X3JlX2dyb3VwcmVmX292ZXJmbG93KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKCknLCAnXGc8JXM+JyAlIHNyZV9jb25zdGFudHMuTUFYR1JPVVBTLCAneHgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGE+KSg/KCVkKSknICUgc3JlX2NvbnN0YW50cy5NQVhHUk9VUFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJywgMTApCiAKICAgICBkZWYgdGVzdF9yZV9ncm91cHJlZihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oXHwpPyhbXigpXSspXDEkJywgJ3xhfCcpLmdyb3VwcygpLApAQCAtNDE4LDYgKzUxMiw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocideKD86KGEpfGMpKFwxKT8kJywgJ2MnKS5ncm91cHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgTm9uZSkpCiAKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyhhYmNcMSknLCAnY2Fubm90IHJlZmVyIHRvIGFuIG9wZW4gZ3JvdXAnLCA0KQorCiAgICAgZGVmIHRlc3RfZ3JvdXBkaWN0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCcoP1A8Zmlyc3Q+Zmlyc3QpICg/UDxzZWNvbmQ+c2Vjb25kKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpcnN0IHNlY29uZCcpLmdyb3VwZGljdCgpLApAQCAtNDI4LDYgKzUyNCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaXJzdCBzZWNvbmQiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5leHBhbmQociJcMiBcMSBcZzxzZWNvbmQ+IFxnPGZpcnN0PiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzZWNvbmQgZmlyc3Qgc2Vjb25kIGZpcnN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKD9QPGZpcnN0PmZpcnN0KXwoP1A8c2Vjb25kPnNlY29uZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaXJzdCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmV4cGFuZChyIlwyIFxnPHNlY29uZD4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICIpCiAKICAgICBkZWYgdGVzdF9yZXBlYXRfbWlubWF4KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXihcdyl7MX0kIiwgImFiYyIpKQpAQCAtNDUxLDYgKzU1MSw3IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHszfSQiLCAieHh4IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MSwzfSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MywzfSQiLCAieHh4IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MSw0fSQiLCAieHh4IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7Myw0fT8kIiwgInh4eCIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezN9PyQiLCAieHh4IikpCkBAIC00NjEsNiArNTYyLDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl54e30kIiwgInh4eCIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54e30kIiwgInh7fSIpKQogCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3Iocid4ezIsMX0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaW4gcmVwZWF0IGdyZWF0ZXIgdGhhbiBtYXggcmVwZWF0JywgMikKKwogICAgIGRlZiB0ZXN0X2dldGF0dHIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuY29tcGlsZSgiKD9pKShhKShiKSIpLnBhdHRlcm4sICIoP2kpKGEpKGIpIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5jb21waWxlKCIoP2kpKGEpKGIpIikuZmxhZ3MsIHJlLkkgfCByZS5VKQpAQCAtNDc1LDYgKzU3OSwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCIoYSkiLCAiYSIpLnJlZ3MsICgoMCwgMSksICgwLCAxKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiKGEpIiwgImEiKS5yZSkKIAorICAgICAgICAjIElzc3VlIDE0MjYwLiBncm91cGluZGV4IHNob3VsZCBiZSBub24tbW9kaWZpYWJsZSBtYXBwaW5nLgorICAgICAgICBwID0gcmUuY29tcGlsZShyJyg/aSkoP1A8Zmlyc3Q+YSkoP1A8b3RoZXI+YiknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChwLmdyb3VwaW5kZXgpLCBbJ2ZpcnN0JywgJ290aGVyJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5ncm91cGluZGV4WydvdGhlciddLCAyKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBwLmdyb3VwaW5kZXhbJ290aGVyJ10gPSAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5ncm91cGluZGV4WydvdGhlciddLCAyKQorCiAgICAgZGVmIHRlc3Rfc3BlY2lhbF9lc2NhcGVzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxiKGIuKVxiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFiY2QgYWJjIGJjZCBieCIpLmdyb3VwKDEpLCAiYngiKQpAQCAtNDg0LDEwICs1OTYsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjZCBhYmMgYmNkIGJ4IiwgcmUuQVNDSUkpLmdyb3VwKDEpLCAiYngiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxCKGIuKVxCIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFiYyBiY2QgYmMgYWJ4ZCIsIHJlLkFTQ0lJKS5ncm91cCgxKSwgImJ4IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJcYihiLilcYiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhYmNkIGFiYyBiY2QgYngiLCByZS5MT0NBTEUpLmdyb3VwKDEpLCAiYngiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxCKGIuKVxCIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFiYyBiY2QgYmMgYWJ4ZCIsIHJlLkxPQ0FMRSkuZ3JvdXAoMSksICJieCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiXmFiYyQiLCAiXG5hYmNcbiIsIHJlLk0pLmdyb3VwKDApLCAiYWJjIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJeXEFhYmNcWiQiLCAiYWJjIiwgcmUuTSkuZ3JvdXAoMCksICJhYmMiKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5zZWFyY2gociJeXEFhYmNcWiQiLCAiXG5hYmNcbiIsIHJlLk0pKQpAQCAtNTA4LDExICs2MTYsMzIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiIxYWEhIGEiKS5ncm91cCgwKSwgYiIxYWEhIGEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxkXERcd1xXXHNcUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxYWEhIGEiLCByZS5BU0NJSSkuZ3JvdXAoMCksICIxYWEhIGEiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxkXERcd1xXXHNcUyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxYWEhIGEiLCByZS5MT0NBTEUpLmdyb3VwKDApLCAiMWFhISBhIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2goYnIiXGRcRFx3XFdcc1xTIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiIxYWEhIGEiLCByZS5MT0NBTEUpLmdyb3VwKDApLCBiIjFhYSEgYSIpCiAKKyAgICBkZWYgdGVzdF9vdGhlcl9lc2NhcGVzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCJcXCIsICdiYWQgZXNjYXBlIChlbmQgb2YgcGF0dGVybiknLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXCgiLCAnKCcpLmdyb3VwKCksICcoJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJcKCIsICcpJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJcXCIsICdcXCcpLmdyb3VwKCksICdcXCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJbXF1dIiwgJ10nKS5ncm91cCgpLCAnXScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiW1xdXSIsICdbJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJbYVwtY10iLCAnLScpLmdyb3VwKCksICctJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJbYVwtY10iLCAnYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiW1xeYV0rIiwgJ2FeJykuZ3JvdXAoKSwgJ2FeJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJbXF5hXSsiLCAnYicpKQorICAgICAgICByZS5wdXJnZSgpICAjIGZvciB3YXJuaW5ncworICAgICAgICBmb3IgYyBpbiAnY2VnaGlqa2xtb3BxeXpDRUZHSElKS0xNTk9QUVJUVlhZJzoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGMpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZ1bGxtYXRjaCgnXFwlYycgJSBjLCBjKS5ncm91cCgpLCBjKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgnXFwlYycgJSBjLCAnYScpKQorICAgICAgICBmb3IgYyBpbiAnY2VnaGlqa2xtb3BxeXpBQkNFRkdISUpLTE1OT1BRUlRWWFlaJzoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGMpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZ1bGxtYXRjaCgnW1xcJWNdJyAlIGMsIGMpLmdyb3VwKCksIGMpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCdbXFwlY10nICUgYywgJ2EnKSkKKwogICAgIGRlZiB0ZXN0X3N0cmluZ19ib3VuZGFyaWVzKHNlbGYpOgogICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTA3MTMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJcYihhYmMpXGIiLCAiYWJjIikuZ3JvdXAoMSksCkBAIC01NzQsOSArNzAzLDYgQEAKICAgICAgICAgIyBHcm91cCByZWZlcmVuY2UuCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyhhKWIoPz1cMSlhJywgJ2FiYScpKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyhhKWIoPz1cMSljJywgJ2FiYWMnKSkKLSAgICAgICAgIyBOYW1lZCBncm91cCByZWZlcmVuY2UuCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyg/UDxnPmEpYig/PSg/UD1nKSlhJywgJ2FiYScpKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/UDxnPmEpYig/PSg/UD1nKSljJywgJ2FiYWMnKSkKICAgICAgICAgIyBDb25kaXRpb25hbCBncm91cCByZWZlcmVuY2UuCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyg/OihhKXwoeCkpYig/PSg/KDIpeHxjKSljJywgJ2FiYycpKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/OihhKXwoeCkpYig/PSg/KDIpY3x4KSljJywgJ2FiYycpKQpAQCAtNTk0LDEzICs3MjAsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocidhYig/PCFiKWMnLCAnYWJjJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJ2FiKD88IWMpYycsICdhYmMnKSkKICAgICAgICAgIyBHcm91cCByZWZlcmVuY2UuCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoUnVudGltZVdhcm5pbmcsIHJlLmNvbXBpbGUsIHInKGEpYSg/PD1cMSljJykKLSAgICAgICAgIyBOYW1lZCBncm91cCByZWZlcmVuY2UuCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoUnVudGltZVdhcm5pbmcsIHJlLmNvbXBpbGUsIHInKD9QPGc+YSlhKD88PSg/UD1nKSljJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKGEpYSg/PD1cMSljJywgJ2FhYycpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyhhKWIoPzw9XDEpYScsICdhYmFhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKGEpYSg/PCFcMSljJywgJ2FhYycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoYSliKD88IVwxKWEnLCAnYWJhYScpKQogICAgICAgICAjIENvbmRpdGlvbmFsIGdyb3VwIHJlZmVyZW5jZS4KLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhSdW50aW1lV2FybmluZywgcmUuY29tcGlsZSwgcicoYSliKD88PSg/KDEpYnx4KSljJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoPzooYSl8KHgpKWIoPzw9KD8oMil4fGMpKWMnLCAnYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD86KGEpfCh4KSliKD88PSg/KDIpYnx4KSljJywgJ2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoPzooYSl8KHgpKWIoPzw9KD8oMil4fGIpKWMnLCAnYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD86KGEpfCh4KSliKD88PSg/KDEpY3x4KSljJywgJ2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoPzooYSl8KHgpKWIoPzw9KD8oMSlifHgpKWMnLCAnYWJjJykpCiAgICAgICAgICMgR3JvdXAgdXNlZCBiZWZvcmUgZGVmaW5lZC4KLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhSdW50aW1lV2FybmluZywgcmUuY29tcGlsZSwgcicoYSliKD88PSg/KDIpYnx4KSkoYyknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgcicoYSliKD88PSg/KDIpYnx4KSkoYyknKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyhhKWIoPzw9KD8oMSljfHgpKShjKScsICdhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKGEpYig/PD0oPygxKWJ8eCkpKGMpJywgJ2FiYycpKQorICAgICAgICAjIEdyb3VwIGRlZmluZWQgaW4gdGhlIHNhbWUgbG9va2JlaGluZCBwYXR0ZXJuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCByJyhhKWIoPzw9KC4pXDIpKGMpJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsIHInKGEpYig/PD0oP1A8YT4uKSg/UD1hKSkoYyknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgcicoYSliKD88PShhKSg/KDIpYnx4KSkoYyknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgcicoYSliKD88PSguKSg/PD1cMikpKGMpJykKIAogICAgIGRlZiB0ZXN0X2lnbm9yZV9jYXNlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJhYmMiLCAiQUJDIiwgcmUuSSkuZ3JvdXAoMCksICJBQkMiKQpAQCAtNjkyLDkgKzgzMCwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9zcmUuZ2V0bG93ZXIob3JkKCdBJyksIDApLCBvcmQoJ2EnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfc3JlLmdldGxvd2VyKG9yZCgnQScpLCByZS5MT0NBTEUpLCBvcmQoJ2EnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfc3JlLmdldGxvd2VyKG9yZCgnQScpLCByZS5VTklDT0RFKSwgb3JkKCdhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3NyZS5nZXRsb3dlcihvcmQoJ0EnKSwgcmUuQVNDSUkpLCBvcmQoJ2EnKSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJhYmMiLCAiQUJDIiwgcmUuSSkuZ3JvdXAoMCksICJBQkMiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKGIiYWJjIiwgYiJBQkMiLCByZS5JKS5ncm91cCgwKSwgYiJBQkMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJhYmMiLCAiQUJDIiwgcmUuSXxyZS5BKS5ncm91cCgwKSwgIkFCQyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goYiJhYmMiLCBiIkFCQyIsIHJlLkl8cmUuTCkuZ3JvdXAoMCksIGIiQUJDIikKIAogICAgIGRlZiB0ZXN0X25vdF9saXRlcmFsKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaCgiXHMoW15hXSkiLCAiIGIiKS5ncm91cCgxKSwgImIiKQpAQCAtNzc5LDggKzkyMCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLlgsIHJlLlZFUkJPU0UpCiAKICAgICBkZWYgdGVzdF9mbGFncyhzZWxmKToKLSAgICAgICAgZm9yIGZsYWcgaW4gW3JlLkksIHJlLk0sIHJlLlgsIHJlLlMsIHJlLkxdOgorICAgICAgICBmb3IgZmxhZyBpbiBbcmUuSSwgcmUuTSwgcmUuWCwgcmUuUywgcmUuQSwgcmUuVV06CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuY29tcGlsZSgnXnBhdHRlcm4kJywgZmxhZykpCisgICAgICAgIGZvciBmbGFnIGluIFtyZS5JLCByZS5NLCByZS5YLCByZS5TLCByZS5BLCByZS5MXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5jb21waWxlKGInXnBhdHRlcm4kJywgZmxhZykpCiAKICAgICBkZWYgdGVzdF9zcmVfY2hhcmFjdGVyX2xpdGVyYWxzKHNlbGYpOgogICAgICAgICBmb3IgaSBpbiBbMCwgOCwgMTYsIDMyLCA2NCwgMTI3LCAxMjgsIDI1NSwgMjU2LCAweEZGRkYsIDB4MTAwMDAsIDB4MTBGRkZGXToKQEAgLTgwMiwxNSArOTQ1LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIlwwOCIsICJcMDAwOCIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJcMDEiLCAiXDAwMSIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJcMDE4IiwgIlwwMDE4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIlw1NjciLCBjaHIoMG8xNjcpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlw5MTEiLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlx4MSIsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXHgxeiIsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXHUxMjMiLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlx1MTIzeiIsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXFUwMDAxMjM0IiwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcVTAwMDEyMzR6IiwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcVTAwMTEwMDAwIiwgIiIpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJcNTY3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ29jdGFsIGVzY2FwZSB2YWx1ZSBcNTY3IG91dHNpZGUgb2YgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIncmFuZ2UgMC0wbzM3NycsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJcOTExIiwgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlx4MSIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHgxJywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlx4MXoiLCByJ2luY29tcGxldGUgZXNjYXBlIFx4MScsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJcdTEyMyIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHUxMjMnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXHUxMjN6IiwgcidpbmNvbXBsZXRlIGVzY2FwZSBcdTEyMycsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJcVTAwMDEyMzQiLCByJ2luY29tcGxldGUgZXNjYXBlIFxVMDAwMTIzNCcsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJcVTAwMDEyMzR6IiwgcidpbmNvbXBsZXRlIGVzY2FwZSBcVTAwMDEyMzQnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXFUwMDExMDAwMCIsIHInYmFkIGVzY2FwZSBcVTAwMTEwMDAwJywgMCkKIAogICAgIGRlZiB0ZXN0X3NyZV9jaGFyYWN0ZXJfY2xhc3NfbGl0ZXJhbHMoc2VsZik6CiAgICAgICAgIGZvciBpIGluIFswLCA4LCAxNiwgMzIsIDY0LCAxMjcsIDEyOCwgMjU1LCAyNTYsIDB4RkZGRiwgMHgxMDAwMCwgMHgxMEZGRkZdOgpAQCAtODMwLDEyICs5NzUsMTUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIltcVSUwOHhdIiAlIGksIGNocihpKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJbXFUlMDh4MF0iICUgaSwgY2hyKGkpKyIwIikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJbXFUlMDh4el0iICUgaSwgY2hyKGkpKyJ6IikpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJbXDU2N10iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInb2N0YWwgZXNjYXBlIHZhbHVlIFw1Njcgb3V0c2lkZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidyYW5nZSAwLTBvMzc3JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIltcOTExXSIsIHInYmFkIGVzY2FwZSBcOScsIDEpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJbXHgxel0iLCByJ2luY29tcGxldGUgZXNjYXBlIFx4MScsIDEpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJbXHUxMjN6XSIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHUxMjMnLCAxKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiW1xVMDAwMTIzNHpdIiwgcidpbmNvbXBsZXRlIGVzY2FwZSBcVTAwMDEyMzQnLCAxKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiW1xVMDAxMTAwMDBdIiwgcidiYWQgZXNjYXBlIFxVMDAxMTAwMDAnLCAxKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJbXFUwMDAxZDQ5Yy1cVTAwMDFkNGI1XSIsICJcVTAwMDFkNDllIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJbXDkxMV0iLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIltceDF6XSIsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiW1x1MTIzel0iLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIltcVTAwMDEyMzR6XSIsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiW1xVMDAxMTAwMDBdIiwgIiIpCiAKICAgICBkZWYgdGVzdF9zcmVfYnl0ZV9saXRlcmFscyhzZWxmKToKICAgICAgICAgZm9yIGkgaW4gWzAsIDgsIDE2LCAzMiwgNjQsIDEyNywgMTI4LCAyNTVdOgpAQCAtODQ1LDE2ICs5OTMsMjAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJceCUwMngiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIlx4JTAyeDAiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkrYiIwIikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiXHglMDJ4eiIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKStiInoiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlx1IiwgYid1JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcVSIsIGInVScpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcdTEyMzQiLCBiJ3UxMjM0JykpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlxVMDAwMTIzNDUiLCBiJ1UwMDAxMjM0NScpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXDAiLCBiIlwwMDAiKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlwwOCIsIGIiXDAwMDgiKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlwwMSIsIGIiXDAwMSIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXDAxOCIsIGIiXDAwMTgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlw1NjciLCBieXRlcyhbMG8xNjddKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgYnIiXDkxMSIsIGIiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCBiciJceDEiLCBiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgYnIiXHgxeiIsIGIiIikKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJcNTY3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ29jdGFsIGVzY2FwZSB2YWx1ZSBcNTY3IG91dHNpZGUgb2YgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIncmFuZ2UgMC0wbzM3NycsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoYnIiXDkxMSIsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoYnIiXHgxIiwgcidpbmNvbXBsZXRlIGVzY2FwZSBceDEnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIlx4MXoiLCByJ2luY29tcGxldGUgZXNjYXBlIFx4MScsIDApCiAKICAgICBkZWYgdGVzdF9zcmVfYnl0ZV9jbGFzc19saXRlcmFscyhzZWxmKToKICAgICAgICAgZm9yIGkgaW4gWzAsIDgsIDE2LCAzMiwgNjQsIDEyNywgMTI4LCAyNTVdOgpAQCAtODY2LDEwICsxMDE4LDI2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiW1x4JTAyeF0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIltceCUwMngwXSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiW1x4JTAyeHpdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIltcdV0iLCBiJ3UnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIltcVV0iLCBiJ1UnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCBiciJbXDkxMV0iLCBiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgYnIiW1x4MXpdIiwgYiIiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJbXHUxMjM0XSIsIGIndScpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJbXFUwMDAxMjM0NV0iLCBiJ1UnKSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJbXDU2N10iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInb2N0YWwgZXNjYXBlIHZhbHVlIFw1Njcgb3V0c2lkZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidyYW5nZSAwLTBvMzc3JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJbXDkxMV0iLCByJ2JhZCBlc2NhcGUgXDknLCAxKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIltceDF6XSIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHgxJywgMSkKKworICAgIGRlZiB0ZXN0X2NoYXJhY3Rlcl9zZXRfZXJyb3JzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInWycsICd1bnRlcm1pbmF0ZWQgY2hhcmFjdGVyIHNldCcsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocidbXicsICd1bnRlcm1pbmF0ZWQgY2hhcmFjdGVyIHNldCcsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocidbYScsICd1bnRlcm1pbmF0ZWQgY2hhcmFjdGVyIHNldCcsIDApCisgICAgICAgICMgYnVnIDU0NTg1NSAtLSBUaGlzIHBhdHRlcm4gZmFpbGVkIHRvIGNhdXNlIGEgY29tcGlsZSBlcnJvciBhcyBpdAorICAgICAgICAjIHNob3VsZCwgaW5zdGVhZCBwcm92b2tpbmcgYSBUeXBlRXJyb3IuCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJbYS0iLCAndW50ZXJtaW5hdGVkIGNoYXJhY3RlciBzZXQnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiW1x3LWJdIiwgcidiYWQgY2hhcmFjdGVyIHJhbmdlIFx3LWInLCAxKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiW2EtXHddIiwgcidiYWQgY2hhcmFjdGVyIHJhbmdlIGEtXHcnLCAxKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiW2ItYV0iLCAnYmFkIGNoYXJhY3RlciByYW5nZSBiLWEnLCAxKQogCiAgICAgZGVmIHRlc3RfYnVnXzExMzI1NChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJyhhKXwoYiknLCAnYicpLnN0YXJ0KDEpLCAtMSkKQEAgLTg4NCwxMSArMTA1Miw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIig/UDxhPmEoYikpIiwgImFiIikubGFzdGdyb3VwLCAnYScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIigoYSkpIiwgImEiKS5sYXN0aW5kZXgsIDEpCiAKLSAgICBkZWYgdGVzdF9idWdfNTQ1ODU1KHNlbGYpOgotICAgICAgICAjIGJ1ZyA1NDU4NTUgLS0gVGhpcyBwYXR0ZXJuIGZhaWxlZCB0byBjYXVzZSBhIGNvbXBpbGUgZXJyb3IgYXMgaXQKLSAgICAgICAgIyBzaG91bGQsIGluc3RlYWQgcHJvdm9raW5nIGEgVHlwZUVycm9yLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJ2Zvb1thLScpCi0KICAgICBkZWYgdGVzdF9idWdfNDE4NjI2KHNlbGYpOgogICAgICAgICAjIGJ1Z3MgNDE4NjI2IGF0IGFsLiAtLSBUZXN0aW5nIEdyZWcgQ2hhcG1hbidzIGFkZGl0aW9uIG9mIG9wIGNvZGUKICAgICAgICAgIyBTUkVfT1BfTUlOX1JFUEVBVF9PTkUgZm9yIGVsaW1pbmF0aW5nIHJlY3Vyc2lvbiBvbiBzaW1wbGUgdXNlcyBvZgpAQCAtOTEyLDYgKzEwNzUsMjQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnKHgpKnknLCA1MDAwMConeCcrJ3knKS5ncm91cCgxKSwgJ3gnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCcoeCkqP3knLCA1MDAwMConeCcrJ3knKS5ncm91cCgxKSwgJ3gnKQogCisgICAgZGVmIHRlc3Rfbm90aGluZ190b19yZXBlYXQoc2VsZik6CisgICAgICAgIGZvciByZXBzIGluICcqJywgJysnLCAnPycsICd7MSwyfSc6CisgICAgICAgICAgICBmb3IgbW9kIGluICcnLCAnPyc6CisgICAgICAgICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignJXMlcycgJSAocmVwcywgbW9kKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub3RoaW5nIHRvIHJlcGVhdCcsIDApCisgICAgICAgICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD86JXMlcyknICUgKHJlcHMsIG1vZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm90aGluZyB0byByZXBlYXQnLCAzKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfcmVwZWF0KHNlbGYpOgorICAgICAgICBmb3Igb3V0ZXJfcmVwcyBpbiAnKicsICcrJywgJ3sxLDJ9JzoKKyAgICAgICAgICAgIGZvciBvdXRlcl9tb2QgaW4gJycsICc/JzoKKyAgICAgICAgICAgICAgICBvdXRlcl9vcCA9IG91dGVyX3JlcHMgKyBvdXRlcl9tb2QKKyAgICAgICAgICAgICAgICBmb3IgaW5uZXJfcmVwcyBpbiAnKicsICcrJywgJz8nLCAnezEsMn0nOgorICAgICAgICAgICAgICAgICAgICBmb3IgaW5uZXJfbW9kIGluICcnLCAnPyc6CisgICAgICAgICAgICAgICAgICAgICAgICBpbm5lcl9vcCA9IGlubmVyX3JlcHMgKyBpbm5lcl9tb2QKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3Iocid4JXMlcycgJSAoaW5uZXJfb3AsIG91dGVyX29wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ211bHRpcGxlIHJlcGVhdCcsIDEgKyBsZW4oaW5uZXJfb3ApKQorCiAgICAgZGVmIHRlc3RfdW5saW1pdGVkX3plcm9fd2lkdGhfcmVwZWF0KHNlbGYpOgogICAgICAgICAjIElzc3VlICM5NjY5CiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD86YT8pKnknLCAneicpKQpAQCAtMTA2Miw4ICsxMjQzLDggQEAKIAogICAgIGRlZiB0ZXN0X2lubGluZV9mbGFncyhzZWxmKToKICAgICAgICAgIyBCdWcgIzE3MDAKLSAgICAgICAgdXBwZXJfY2hhciA9IGNocigweDFlYTApICMgTGF0aW4gQ2FwaXRhbCBMZXR0ZXIgQSB3aXRoIERvdCBCZWxsb3cKLSAgICAgICAgbG93ZXJfY2hhciA9IGNocigweDFlYTEpICMgTGF0aW4gU21hbGwgTGV0dGVyIEEgd2l0aCBEb3QgQmVsbG93CisgICAgICAgIHVwcGVyX2NoYXIgPSAnXHUxZWEwJyAjIExhdGluIENhcGl0YWwgTGV0dGVyIEEgd2l0aCBEb3QgQmVsb3cKKyAgICAgICAgbG93ZXJfY2hhciA9ICdcdTFlYTEnICMgTGF0aW4gU21hbGwgTGV0dGVyIEEgd2l0aCBEb3QgQmVsb3cKIAogICAgICAgICBwID0gcmUuY29tcGlsZSh1cHBlcl9jaGFyLCByZS5JIHwgcmUuVSkKICAgICAgICAgcSA9IHAubWF0Y2gobG93ZXJfY2hhcikKQEAgLTExNDMsNiArMTMyNCw1MiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCAnKD9hKVx3JywgcmUuVU5JQ09ERSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJyg/YXUpXHcnKQogCisgICAgZGVmIHRlc3RfbG9jYWxlX2ZsYWcoc2VsZik6CisgICAgICAgIGltcG9ydCBsb2NhbGUKKyAgICAgICAgXywgZW5jID0gbG9jYWxlLmdldGxvY2FsZShsb2NhbGUuTENfQ1RZUEUpCisgICAgICAgICMgU2VhcmNoIG5vbi1BU0NJSSBsZXR0ZXIKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTI4LCAyNTYpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGMgPSBieXRlcyhbaV0pLmRlY29kZShlbmMpCisgICAgICAgICAgICAgICAgc2xldHRlciA9IGMubG93ZXIoKQorICAgICAgICAgICAgICAgIGlmIHNsZXR0ZXIgPT0gYzogY29udGludWUKKyAgICAgICAgICAgICAgICBibGV0dGVyID0gc2xldHRlci5lbmNvZGUoZW5jKQorICAgICAgICAgICAgICAgIGlmIGxlbihibGV0dGVyKSAhPSAxOiBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIGJsZXR0ZXIuZGVjb2RlKGVuYykgIT0gc2xldHRlcjogY29udGludWUKKyAgICAgICAgICAgICAgICBicGF0ID0gcmUuZXNjYXBlKGJ5dGVzKFtpXSkpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGV4Y2VwdCAoVW5pY29kZUVycm9yLCBUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJsZXR0ZXIgPSBOb25lCisgICAgICAgICAgICBicGF0ID0gYidBJworICAgICAgICAjIEJ5dGVzIHBhdHRlcm5zCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnBhdCwgcmUuTE9DQUxFIHwgcmUuSUdOT1JFQ0FTRSkKKyAgICAgICAgaWYgYmxldHRlcjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXQubWF0Y2goYmxldHRlcikpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYicoP0wpJyArIGJwYXQsIHJlLklHTk9SRUNBU0UpCisgICAgICAgIGlmIGJsZXR0ZXI6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0Lm1hdGNoKGJsZXR0ZXIpKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKGJwYXQsIHJlLklHTk9SRUNBU0UpCisgICAgICAgIGlmIGJsZXR0ZXI6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goYmxldHRlcikpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidcdycsIHJlLkxPQ0FMRSkKKyAgICAgICAgaWYgYmxldHRlcjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXQubWF0Y2goYmxldHRlcikpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYicoP0wpXHcnKQorICAgICAgICBpZiBibGV0dGVyOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdC5tYXRjaChibGV0dGVyKSkKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJ1x3JykKKyAgICAgICAgaWYgYmxldHRlcjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaChibGV0dGVyKSkKKyAgICAgICAgIyBJbmNvbXBhdGliaWxpdGllcworICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgJycsIHJlLkxPQ0FMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsICcoP0wpJykKKyAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsIGInJywgcmUuTE9DQUxFIHwgcmUuQVNDSUkpCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCBiJyg/TCknLCByZS5BU0NJSSkKKyAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsIGInKD9hKScsIHJlLkxPQ0FMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsIGInKD9hTCknKQorCiAgICAgZGVmIHRlc3RfYnVnXzY1MDkoc2VsZik6CiAgICAgICAgICMgUmVwbGFjZW1lbnQgc3RyaW5ncyBvZiBib3RoIHR5cGVzIG11c3QgcGFyc2UgcHJvcGVybHkuCiAgICAgICAgICMgYWxsIHN0cmluZ3MKQEAgLTExNzAsOCArMTM5NywxMCBAQAogICAgICAgICAjIGEgUnVudGltZUVycm9yIGlzIHJhaXNlZCBpbnN0ZWFkIG9mIE92ZXJmbG93RXJyb3IuCiAgICAgICAgIGxvbmdfb3ZlcmZsb3cgPSAyKioxMjgKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByZS5maW5kaXRlciwgImEiLCB7fSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgX3NyZS5jb21waWxlLCAiYWJjIiwgMCwgW2xvbmdfb3ZlcmZsb3ddKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9zcmUuY29tcGlsZSwge30sIDAsIFtdKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IpOgorICAgICAgICAgICAgX3NyZS5jb21waWxlKCJhYmMiLCAwLCBbbG9uZ19vdmVyZmxvd10sIDAsIFtdLCBbXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgX3NyZS5jb21waWxlKHt9LCAwLCBbXSwgMCwgW10sIFtdKQogCiAgICAgZGVmIHRlc3Rfc2VhcmNoX2RvdF91bmljb2RlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKCIxMjMuKi0iLCAnMTIzYWJjLScpKQpAQCAtMTE5Myw4ICsxNDIyLDkgQEAKICAgICBkZWYgdGVzdF9idWdfMTM4OTkoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzEzODk5OiByZSBwYXR0ZXJuIHIiW1xBXSIgc2hvdWxkIHdvcmsgbGlrZSAiQSIgYnV0IG1hdGNoZXMKICAgICAgICAgIyBub3RoaW5nLiBEaXR0byBCIGFuZCBaLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZpbmRhbGwocidbXEFcQlxiXENcWl0nLCAnQUJcYkNaJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydBJywgJ0InLCAnXGInLCAnQycsICdaJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5maW5kYWxsKHInW1xBXEJcYlxDXFpdJywgJ0FCXGJDWicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0EnLCAnQicsICdcYicsICdDJywgJ1onXSkKIAogICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MSkKICAgICBkZWYgdGVzdF9sYXJnZV9zZWFyY2goc2VsZiwgc2l6ZSk6CkBAIC0xMjUzLDEzICsxNDgzLDEzIEBACiAKICAgICBkZWYgdGVzdF9iYWNrcmVmX2dyb3VwX25hbWVfaW5fZXhjZXB0aW9uKHNlbGYpOgogICAgICAgICAjIElzc3VlIDE3MzQxOiBQb29yIGVycm9yIG1lc3NhZ2Ugd2hlbiBjb21waWxpbmcgaW52YWxpZCByZWdleAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3JlX2NvbnN0YW50cy5lcnJvciwgJzxmb28+Jyk6Ci0gICAgICAgICAgICByZS5jb21waWxlKCcoP1A9PGZvbz4pJykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPTxmb28+KScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnPGZvbz4nIiwgNCkKIAogICAgIGRlZiB0ZXN0X2dyb3VwX25hbWVfaW5fZXhjZXB0aW9uKHNlbGYpOgogICAgICAgICAjIElzc3VlIDE3MzQxOiBQb29yIGVycm9yIG1lc3NhZ2Ugd2hlbiBjb21waWxpbmcgaW52YWxpZCByZWdleAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3JlX2NvbnN0YW50cy5lcnJvciwgJ1w/Zm9vJyk6Ci0gICAgICAgICAgICByZS5jb21waWxlKCcoP1A8P2Zvbz4pJykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPD9mb28+KScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnP2ZvbyciLCA0KQogCiAgICAgZGVmIHRlc3RfaXNzdWUxNzk5OChzZWxmKToKICAgICAgICAgZm9yIHJlcHMgaW4gJyonLCAnKycsICc/JywgJ3sxfSc6CkBAIC0xMzA5LDIyICsxNTM5LDIyIEBACiAgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0OgogICAgICAgICAgICAgcmUuY29tcGlsZShwYXQsIHJlLkRFQlVHKQogICAgICAgICBkdW1wID0gJycnXAotc3VicGF0dGVybiAxCi0gIGxpdGVyYWwgNDYKLXN1YnBhdHRlcm4gTm9uZQotICBicmFuY2gKLSAgICBpbgotICAgICAgbGl0ZXJhbCA5OQotICAgICAgbGl0ZXJhbCAxMDQKLSAgb3IKLSAgICBsaXRlcmFsIDExMgotICAgIGxpdGVyYWwgMTIxCi1zdWJwYXR0ZXJuIE5vbmUKLSAgZ3JvdXByZWZfZXhpc3RzIDEKLSAgICBhdCBhdF9lbmQKLSAgZWxzZQotICAgIGxpdGVyYWwgNTgKLSAgICBsaXRlcmFsIDMyCitTVUJQQVRURVJOIDEKKyAgTElURVJBTCA0NgorU1VCUEFUVEVSTiBOb25lCisgIEJSQU5DSAorICAgIElOCisgICAgICBMSVRFUkFMIDk5CisgICAgICBMSVRFUkFMIDEwNAorICBPUgorICAgIExJVEVSQUwgMTEyCisgICAgTElURVJBTCAxMjEKK1NVQlBBVFRFUk4gTm9uZQorICBHUk9VUFJFRl9FWElTVFMgMQorICAgIEFUIEFUX0VORAorICBFTFNFCisgICAgTElURVJBTCA1OAorICAgIExJVEVSQUwgMzIKICcnJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dC5nZXR2YWx1ZSgpLCBkdW1wKQogICAgICAgICAjIERlYnVnIG91dHB1dCBpcyBvdXRwdXQgYWdhaW4gZXZlbiBhIHNlY29uZCB0aW1lIChieXBhc3NpbmcKQEAgLTEzOTIsNiArMTYyMiw1NSBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChiJyg/TGkpXHhjNScsIGInXHhlNScpKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChiJyg/TGkpXHhlNScsIGInXHhjNScpKQogCisgICAgZGVmIHRlc3RfZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcmUuY29tcGlsZSgnKFx1MjBhYykpJykKKyAgICAgICAgZXJyID0gY20uZXhjZXB0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlcnIucGF0dGVybiwgc3RyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5wYXR0ZXJuLCAnKFx1MjBhYykpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucG9zLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5saW5lbm8sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLmNvbG5vLCA0KQorICAgICAgICBzZWxmLmFzc2VydEluKGVyci5tc2csIHN0cihlcnIpKQorICAgICAgICBzZWxmLmFzc2VydEluKCcgYXQgcG9zaXRpb24gMycsIHN0cihlcnIpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCcgYXQgcG9zaXRpb24gMycsIGVyci5tc2cpCisgICAgICAgICMgQnl0ZXMgcGF0dGVybgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHJlLmNvbXBpbGUoYicoXHhhNCkpJykKKyAgICAgICAgZXJyID0gY20uZXhjZXB0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlcnIucGF0dGVybiwgYnl0ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLnBhdHRlcm4sIGInKFx4YTQpKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLnBvcywgMykKKyAgICAgICAgIyBNdWx0aWxpbmUgcGF0dGVybgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHJlLmNvbXBpbGUoIiIiCisgICAgICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICAgICBhYmMKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAiIiIsIHJlLlZFUkJPU0UpCisgICAgICAgIGVyciA9IGNtLmV4Y2VwdGlvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5wb3MsIDc3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5saW5lbm8sIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLmNvbG5vLCAxNykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihlcnIubXNnLCBzdHIoZXJyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignIGF0IHBvc2l0aW9uIDc3Jywgc3RyKGVycikpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyhsaW5lIDUsIGNvbHVtbiAxNyknLCBzdHIoZXJyKSkKKworICAgIGRlZiB0ZXN0X21pc2NfZXJyb3JzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKCcsICdtaXNzaW5nICksIHVudGVybWluYXRlZCBzdWJwYXR0ZXJuJywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJygoYXxiKScsICdtaXNzaW5nICksIHVudGVybWluYXRlZCBzdWJwYXR0ZXJuJywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyhhfGIpKScsICd1bmJhbGFuY2VkIHBhcmVudGhlc2lzJywgNSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UCcsICd1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/eiknLCAndW5rbm93biBleHRlbnNpb24gP3onLCAxKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9peiknLCAndW5rbm93biBmbGFnJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aScsICdtaXNzaW5nICknLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8jYWJjJywgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIGNvbW1lbnQnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD88JywgJ3VuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4nLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD88PiknLCAndW5rbm93biBleHRlbnNpb24gPzw+JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/JywgJ3VuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4nLCAyKQorCiAKIGNsYXNzIFBhdHRlcm5SZXByVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBjaGVjayhzZWxmLCBwYXR0ZXJuLCBleHBlY3RlZCk6CkBAIC0xNDM2LDYgKzE3MTUsMTAgQEAKICAgICAgICAgc2VsZi5jaGVja19mbGFncyhiJ2J5dGVzIHBhdHRlcm4nLCByZS5BLAogICAgICAgICAgICAgICAgICAgICAgICAgICJyZS5jb21waWxlKGInYnl0ZXMgcGF0dGVybicsIHJlLkFTQ0lJKSIpCiAKKyAgICBkZWYgdGVzdF9sb2NhbGUoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmxhZ3MoYidieXRlcyBwYXR0ZXJuJywgcmUuTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicmUuY29tcGlsZShiJ2J5dGVzIHBhdHRlcm4nLCByZS5MT0NBTEUpIikKKwogICAgIGRlZiB0ZXN0X3F1b3RlcyhzZWxmKToKICAgICAgICAgc2VsZi5jaGVjaygncmFuZG9tICJkb3VibGUgcXVvdGVkIiBwYXR0ZXJuJywKICAgICAgICAgICAgICcnJ3JlLmNvbXBpbGUoJ3JhbmRvbSAiZG91YmxlIHF1b3RlZCIgcGF0dGVybicpJycnKQpAQCAtMTU0OSw4ICsxODMyLDE2IEBACiAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgnYnl0ZXMgcGF0dGVybiBtYXRjaCcpOgotICAgICAgICAgICAgICAgICAgICAgICAgYnBhdCA9IHJlLmNvbXBpbGUoYnBhdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShicGF0LnNlYXJjaChicykpCisgICAgICAgICAgICAgICAgICAgICAgICBvYmogPSByZS5jb21waWxlKGJwYXQpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob2JqLnNlYXJjaChicykpCisKKyAgICAgICAgICAgICAgICAgICAgIyBUcnkgdGhlIG1hdGNoIHdpdGggTE9DQUxFIGVuYWJsZWQsIGFuZCBjaGVjayB0aGF0IGl0CisgICAgICAgICAgICAgICAgICAgICMgc3RpbGwgc3VjY2VlZHMuCisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCdsb2NhbGUtc2Vuc2l0aXZlIG1hdGNoJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBvYmogPSByZS5jb21waWxlKGJwYXQsIHJlLkxPQ0FMRSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9iai5zZWFyY2goYnMpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiByZXN1bHQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnPT09IEZhaWxzIG9uIGxvY2FsZS1zZW5zaXRpdmUgbWF0Y2gnLCB0KQogCiAgICAgICAgICAgICAgICAgIyBUcnkgdGhlIG1hdGNoIHdpdGggdGhlIHNlYXJjaCBhcmVhIGxpbWl0ZWQgdG8gdGhlIGV4dGVudAogICAgICAgICAgICAgICAgICMgb2YgdGhlIG1hdGNoIGFuZCBzZWUgaWYgaXQgc3RpbGwgc3VjY2VlZHMuICBcQiB3aWxsCkBAIC0xNTY4LDEzICsxODU5LDYgQEAKICAgICAgICAgICAgICAgICAgICAgb2JqID0gcmUuY29tcGlsZShwYXR0ZXJuLCByZS5JR05PUkVDQVNFKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob2JqLnNlYXJjaChzKSkKIAotICAgICAgICAgICAgICAgICMgVHJ5IHRoZSBtYXRjaCB3aXRoIExPQ0FMRSBlbmFibGVkLCBhbmQgY2hlY2sgdGhhdCBpdAotICAgICAgICAgICAgICAgICMgc3RpbGwgc3VjY2VlZHMuCi0gICAgICAgICAgICAgICAgaWYgJyg/dSknIG5vdCBpbiBwYXR0ZXJuOgotICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgnbG9jYWxlLXNlbnNpdGl2ZSBtYXRjaCcpOgotICAgICAgICAgICAgICAgICAgICAgICAgb2JqID0gcmUuY29tcGlsZShwYXR0ZXJuLCByZS5MT0NBTEUpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob2JqLnNlYXJjaChzKSkKLQogICAgICAgICAgICAgICAgICMgVHJ5IHRoZSBtYXRjaCB3aXRoIFVOSUNPREUgbG9jYWxlIGVuYWJsZWQsIGFuZCBjaGVjawogICAgICAgICAgICAgICAgICMgdGhhdCBpdCBzdGlsbCBzdWNjZWVkcy4KICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgndW5pY29kZS1zZW5zaXRpdmUgbWF0Y2gnKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmVhZGxpbmUucHkgYi9MaWIvdGVzdC90ZXN0X3JlYWRsaW5lLnB5CmluZGV4IDBiMmIwYTUuLjM1MzMwYWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmVhZGxpbmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yZWFkbGluZS5weQpAQCAtMiw5ICsyLDEwIEBACiBWZXJ5IG1pbmltYWwgdW5pdHRlc3RzIGZvciBwYXJ0cyBvZiB0aGUgcmVhZGxpbmUgbW9kdWxlLgogIiIiCiBpbXBvcnQgb3MKK2ltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBpbXBvcnRfbW9kdWxlCi1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9tb2R1bGUsIHVubGluaworZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogCiAjIFNraXAgdGVzdHMgaWYgdGhlcmUgaXMgbm8gcmVhZGxpbmUgbW9kdWxlCiByZWFkbGluZSA9IGltcG9ydF9tb2R1bGUoJ3JlYWRsaW5lJykKQEAgLTQyLDYgKzQzLDQ1IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkbGluZS5nZXRfY3VycmVudF9oaXN0b3J5X2xlbmd0aCgpLCAxKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihyZWFkbGluZSwgImFwcGVuZF9oaXN0b3J5X2ZpbGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYXBwZW5kX2hpc3Rvcnkgbm90IGF2YWlsYWJsZSIpCisgICAgZGVmIHRlc3Rfd3JpdGVfcmVhZF9hcHBlbmQoc2VsZik6CisgICAgICAgIGhmaWxlID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKGRlbGV0ZT1GYWxzZSkKKyAgICAgICAgaGZpbGUuY2xvc2UoKQorICAgICAgICBoZmlsZW5hbWUgPSBoZmlsZS5uYW1lCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh1bmxpbmssIGhmaWxlbmFtZSkKKworICAgICAgICAjIHRlc3Qgd3JpdGUtY2xlYXItcmVhZCA9PSBub3AKKyAgICAgICAgcmVhZGxpbmUuY2xlYXJfaGlzdG9yeSgpCisgICAgICAgIHJlYWRsaW5lLmFkZF9oaXN0b3J5KCJmaXJzdCBsaW5lIikKKyAgICAgICAgcmVhZGxpbmUuYWRkX2hpc3RvcnkoInNlY29uZCBsaW5lIikKKyAgICAgICAgcmVhZGxpbmUud3JpdGVfaGlzdG9yeV9maWxlKGhmaWxlbmFtZSkKKworICAgICAgICByZWFkbGluZS5jbGVhcl9oaXN0b3J5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkbGluZS5nZXRfY3VycmVudF9oaXN0b3J5X2xlbmd0aCgpLCAwKQorCisgICAgICAgIHJlYWRsaW5lLnJlYWRfaGlzdG9yeV9maWxlKGhmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkbGluZS5nZXRfY3VycmVudF9oaXN0b3J5X2xlbmd0aCgpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRsaW5lLmdldF9oaXN0b3J5X2l0ZW0oMSksICJmaXJzdCBsaW5lIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkbGluZS5nZXRfaGlzdG9yeV9pdGVtKDIpLCAic2Vjb25kIGxpbmUiKQorCisgICAgICAgICMgdGVzdCBhcHBlbmQKKyAgICAgICAgcmVhZGxpbmUuYXBwZW5kX2hpc3RvcnlfZmlsZSgxLCBoZmlsZW5hbWUpCisgICAgICAgIHJlYWRsaW5lLmNsZWFyX2hpc3RvcnkoKQorICAgICAgICByZWFkbGluZS5yZWFkX2hpc3RvcnlfZmlsZShoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZGxpbmUuZ2V0X2N1cnJlbnRfaGlzdG9yeV9sZW5ndGgoKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkbGluZS5nZXRfaGlzdG9yeV9pdGVtKDEpLCAiZmlyc3QgbGluZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZGxpbmUuZ2V0X2hpc3RvcnlfaXRlbSgyKSwgInNlY29uZCBsaW5lIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkbGluZS5nZXRfaGlzdG9yeV9pdGVtKDMpLCAic2Vjb25kIGxpbmUiKQorCisgICAgICAgICMgdGVzdCAnbm8gc3VjaCBmaWxlJyBiZWhhdmlvdXIKKyAgICAgICAgb3MudW5saW5rKGhmaWxlbmFtZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvcik6CisgICAgICAgICAgICByZWFkbGluZS5hcHBlbmRfaGlzdG9yeV9maWxlKDEsIGhmaWxlbmFtZSkKKworICAgICAgICAjIHdyaXRlX2hpc3RvcnlfZmlsZSBjYW4gY3JlYXRlIHRoZSB0YXJnZXQKKyAgICAgICAgcmVhZGxpbmUud3JpdGVfaGlzdG9yeV9maWxlKGhmaWxlbmFtZSkKKwogCiBjbGFzcyBUZXN0UmVhZGxpbmUodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC01Nyw4ICs5Nyw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCBiJycpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChUZXN0SGlzdG9yeU1hbmlwdWxhdGlvbiwgVGVzdFJlYWRsaW5lKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JlcHJsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3JlcHJsaWIucHkKaW5kZXggYWU2N2YwNi4uYTUxYzRkNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yZXBybGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmVwcmxpYi5weQpAQCAtMTAsNyArMTAsNyBAQAogaW1wb3J0IGltcG9ydGxpYi51dGlsCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgY3JlYXRlX2VtcHR5X2ZpbGUsIHZlcmJvc2UKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjcmVhdGVfZW1wdHlfZmlsZSwgdmVyYm9zZQogZnJvbSByZXBybGliIGltcG9ydCByZXByIGFzIHIgIyBEb24ndCBzaGFkb3cgYnVpbHRpbiByZXByCiBmcm9tIHJlcHJsaWIgaW1wb3J0IFJlcHIKIGZyb20gcmVwcmxpYiBpbXBvcnQgcmVjdXJzaXZlX3JlcHIKQEAgLTcwLDE4ICs3MCwxOCBAQAogICAgICAgICBlcShyKFsxLCAyLCAzLCA0LCA1LCA2LCA3XSksICJbMSwgMiwgMywgNCwgNSwgNiwgLi4uXSIpCiAKICAgICAgICAgIyBTZXRzIGdpdmUgdXAgYWZ0ZXIgNiBhcyB3ZWxsCi0gICAgICAgIGVxKHIoc2V0KFtdKSksICJzZXQoW10pIikKLSAgICAgICAgZXEocihzZXQoWzFdKSksICJzZXQoWzFdKSIpCi0gICAgICAgIGVxKHIoc2V0KFsxLCAyLCAzXSkpLCAic2V0KFsxLCAyLCAzXSkiKQotICAgICAgICBlcShyKHNldChbMSwgMiwgMywgNCwgNSwgNl0pKSwgInNldChbMSwgMiwgMywgNCwgNSwgNl0pIikKLSAgICAgICAgZXEocihzZXQoWzEsIDIsIDMsIDQsIDUsIDYsIDddKSksICJzZXQoWzEsIDIsIDMsIDQsIDUsIDYsIC4uLl0pIikKKyAgICAgICAgZXEocihzZXQoW10pKSwgInNldCgpIikKKyAgICAgICAgZXEocihzZXQoWzFdKSksICJ7MX0iKQorICAgICAgICBlcShyKHNldChbMSwgMiwgM10pKSwgInsxLCAyLCAzfSIpCisgICAgICAgIGVxKHIoc2V0KFsxLCAyLCAzLCA0LCA1LCA2XSkpLCAiezEsIDIsIDMsIDQsIDUsIDZ9IikKKyAgICAgICAgZXEocihzZXQoWzEsIDIsIDMsIDQsIDUsIDYsIDddKSksICJ7MSwgMiwgMywgNCwgNSwgNiwgLi4ufSIpCiAKICAgICAgICAgIyBGcm96ZW5zZXRzIGdpdmUgdXAgYWZ0ZXIgNiBhcyB3ZWxsCi0gICAgICAgIGVxKHIoZnJvemVuc2V0KFtdKSksICJmcm96ZW5zZXQoW10pIikKLSAgICAgICAgZXEocihmcm96ZW5zZXQoWzFdKSksICJmcm96ZW5zZXQoWzFdKSIpCi0gICAgICAgIGVxKHIoZnJvemVuc2V0KFsxLCAyLCAzXSkpLCAiZnJvemVuc2V0KFsxLCAyLCAzXSkiKQotICAgICAgICBlcShyKGZyb3plbnNldChbMSwgMiwgMywgNCwgNSwgNl0pKSwgImZyb3plbnNldChbMSwgMiwgMywgNCwgNSwgNl0pIikKLSAgICAgICAgZXEocihmcm96ZW5zZXQoWzEsIDIsIDMsIDQsIDUsIDYsIDddKSksICJmcm96ZW5zZXQoWzEsIDIsIDMsIDQsIDUsIDYsIC4uLl0pIikKKyAgICAgICAgZXEocihmcm96ZW5zZXQoW10pKSwgImZyb3plbnNldCgpIikKKyAgICAgICAgZXEocihmcm96ZW5zZXQoWzFdKSksICJmcm96ZW5zZXQoezF9KSIpCisgICAgICAgIGVxKHIoZnJvemVuc2V0KFsxLCAyLCAzXSkpLCAiZnJvemVuc2V0KHsxLCAyLCAzfSkiKQorICAgICAgICBlcShyKGZyb3plbnNldChbMSwgMiwgMywgNCwgNSwgNl0pKSwgImZyb3plbnNldCh7MSwgMiwgMywgNCwgNSwgNn0pIikKKyAgICAgICAgZXEocihmcm96ZW5zZXQoWzEsIDIsIDMsIDQsIDUsIDYsIDddKSksICJmcm96ZW5zZXQoezEsIDIsIDMsIDQsIDUsIDYsIC4uLn0pIikKIAogICAgICAgICAjIGNvbGxlY3Rpb25zLmRlcXVlIGFmdGVyIDYKICAgICAgICAgZXEocihkZXF1ZShbMSwgMiwgMywgNCwgNSwgNiwgN10pKSwgImRlcXVlKFsxLCAyLCAzLCA0LCA1LCA2LCAuLi5dKSIpCkBAIC05NCw3ICs5NCw3IEBACiAgICAgICAgIGVxKHIoZCksICJ7J2FsaWNlJzogMSwgJ2FydGh1cic6IDEsICdib2InOiAyLCAnY2hhcmxlcyc6IDMsIC4uLn0iKQogCiAgICAgICAgICMgYXJyYXkuYXJyYXkgYWZ0ZXIgNS4KLSAgICAgICAgZXEocihhcnJheSgnaScpKSwgImFycmF5KCdpJywgW10pIikKKyAgICAgICAgZXEocihhcnJheSgnaScpKSwgImFycmF5KCdpJykiKQogICAgICAgICBlcShyKGFycmF5KCdpJywgWzFdKSksICJhcnJheSgnaScsIFsxXSkiKQogICAgICAgICBlcShyKGFycmF5KCdpJywgWzEsIDJdKSksICJhcnJheSgnaScsIFsxLCAyXSkiKQogICAgICAgICBlcShyKGFycmF5KCdpJywgWzEsIDIsIDNdKSksICJhcnJheSgnaScsIFsxLCAyLCAzXSkiKQpAQCAtMTAzLDYgKzEwMywyMCBAQAogICAgICAgICBlcShyKGFycmF5KCdpJywgWzEsIDIsIDMsIDQsIDUsIDZdKSksCiAgICAgICAgICAgICAgICAgICAgImFycmF5KCdpJywgWzEsIDIsIDMsIDQsIDUsIC4uLl0pIikKIAorICAgIGRlZiB0ZXN0X3NldF9saXRlcmFsKHNlbGYpOgorICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgZXEocih7MX0pLCAiezF9IikKKyAgICAgICAgZXEocih7MSwgMiwgM30pLCAiezEsIDIsIDN9IikKKyAgICAgICAgZXEocih7MSwgMiwgMywgNCwgNSwgNn0pLCAiezEsIDIsIDMsIDQsIDUsIDZ9IikKKyAgICAgICAgZXEocih7MSwgMiwgMywgNCwgNSwgNiwgN30pLCAiezEsIDIsIDMsIDQsIDUsIDYsIC4uLn0iKQorCisgICAgZGVmIHRlc3RfZnJvemVuc2V0KHNlbGYpOgorICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgZXEocihmcm96ZW5zZXQoezF9KSksICJmcm96ZW5zZXQoezF9KSIpCisgICAgICAgIGVxKHIoZnJvemVuc2V0KHsxLCAyLCAzfSkpLCAiZnJvemVuc2V0KHsxLCAyLCAzfSkiKQorICAgICAgICBlcShyKGZyb3plbnNldCh7MSwgMiwgMywgNCwgNSwgNn0pKSwgImZyb3plbnNldCh7MSwgMiwgMywgNCwgNSwgNn0pIikKKyAgICAgICAgZXEocihmcm96ZW5zZXQoezEsIDIsIDMsIDQsIDUsIDYsIDd9KSksICJmcm96ZW5zZXQoezEsIDIsIDMsIDQsIDUsIDYsIC4uLn0pIikKKwogICAgIGRlZiB0ZXN0X251bWJlcnMoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBlcShyKDEyMyksIHJlcHIoMTIzKSkKQEAgLTEyMyw3ICsxMzcsNyBAQAogICAgICAgICBlcShyKGkyKSwgZXhwZWN0ZWQpCiAKICAgICAgICAgaTMgPSBDbGFzc1dpdGhGYWlsaW5nUmVwcigpCi0gICAgICAgIGVxKHIoaTMpLCAoIjxDbGFzc1dpdGhGYWlsaW5nUmVwciBpbnN0YW5jZSBhdCAleD4iJWlkKGkzKSkpCisgICAgICAgIGVxKHIoaTMpLCAoIjxDbGFzc1dpdGhGYWlsaW5nUmVwciBpbnN0YW5jZSBhdCAlI3g+IiVpZChpMykpKQogCiAgICAgICAgIHMgPSByKENsYXNzV2l0aEZhaWxpbmdSZXByKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocy5zdGFydHN3aXRoKCI8Y2xhc3MgIikpCkBAIC0zNzMsMTEgKzM4Nyw1IEBACiAgICAgICAgIG0uYXBwZW5kKG0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgJzxhLCBiLCBjLCBkLCBlLCArKyssIHgsICsrKz4nKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFJlcHJUZXN0cykKLSAgICBydW5fdW5pdHRlc3QoTG9uZ1JlcHJUZXN0KQotICAgIHJ1bl91bml0dGVzdChUZXN0UmVjdXJzaXZlUmVwcikKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkgYi9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkKaW5kZXggMGI2MjlkYy4uMTU4MmNhYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weQpAQCAtMjI4LDI1ICsyMjgsMjUgQEAKICAgICAgICAgYiA9IFVzZXJMaXN0KCkKICAgICAgICAgYS5hcHBlbmQoYikKICAgICAgICAgYi5hcHBlbmQoYSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcGVyYXRvci5lcSwgYSwgYikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcGVyYXRvci5uZSwgYSwgYikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcGVyYXRvci5sdCwgYSwgYikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcGVyYXRvci5sZSwgYSwgYikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcGVyYXRvci5ndCwgYSwgYikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcGVyYXRvci5nZSwgYSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIG9wZXJhdG9yLmVxLCBhLCBiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgb3BlcmF0b3IubmUsIGEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBvcGVyYXRvci5sdCwgYSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIG9wZXJhdG9yLmxlLCBhLCBiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgb3BlcmF0b3IuZ3QsIGEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBvcGVyYXRvci5nZSwgYSwgYikKIAogICAgICAgICBiLmFwcGVuZCgxNykKICAgICAgICAgIyBFdmVuIHJlY3Vyc2l2ZSBsaXN0cyBvZiBkaWZmZXJlbnQgbGVuZ3RocyBhcmUgZGlmZmVyZW50LAogICAgICAgICAjIGJ1dCB0aGV5IGNhbm5vdCBiZSBvcmRlcmVkCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgKGEgPT0gYikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhICE9IGIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgb3BlcmF0b3IubHQsIGEsIGIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgb3BlcmF0b3IubGUsIGEsIGIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgb3BlcmF0b3IuZ3QsIGEsIGIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgb3BlcmF0b3IuZ2UsIGEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBvcGVyYXRvci5sdCwgYSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIG9wZXJhdG9yLmxlLCBhLCBiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgb3BlcmF0b3IuZ3QsIGEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBvcGVyYXRvci5nZSwgYSwgYikKICAgICAgICAgYS5hcHBlbmQoMTcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgb3BlcmF0b3IuZXEsIGEsIGIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgb3BlcmF0b3IubmUsIGEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBvcGVyYXRvci5lcSwgYSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIG9wZXJhdG9yLm5lLCBhLCBiKQogICAgICAgICBhLmluc2VydCgwLCAxMSkKICAgICAgICAgYi5pbnNlcnQoMCwgMTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgKGEgPT0gYikpCkBAIC0zMjYsOCArMzI2LDUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob3AoeCwgeSksIFRydWUpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFZlY3RvclRlc3QsIE51bWJlclRlc3QsIE1pc2NUZXN0LCBEaWN0VGVzdCwgTGlzdFRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfcmxjb21wbGV0ZXIucHkgYi9MaWIvdGVzdC90ZXN0X3JsY29tcGxldGVyLnB5CmluZGV4IDBiMzkxOGIuLjJkNWQ5YzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfcmxjb21wbGV0ZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ybGNvbXBsZXRlci5weQpAQCAtMTA2LDYgKzEwNiw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdFbGxpcHNpcycsIDApLCAnRWxsaXBzaXMoJykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29tcGxldGVyLmNvbXBsZXRlKCdFbGxpcHNpcycsIDEpKQogCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5IGIvTGliL3Rlc3QvdGVzdF9ydW5weS5weQppbmRleCA3ODZiODEzLi44N2M4M2VjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkKQEAgLTgsMTAgKzgsMTAgQEAKIGltcG9ydCBpbXBvcnRsaWIsIGltcG9ydGxpYi5tYWNoaW5lcnksIGltcG9ydGxpYi51dGlsCiBpbXBvcnQgcHlfY29tcGlsZQogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICgKLSAgICBmb3JnZXQsIG1ha2VfbGVnYWN5X3B5YywgcnVuX3VuaXR0ZXN0LCB1bmxvYWQsIHZlcmJvc2UsIG5vX3RyYWNpbmcsCi0gICAgY3JlYXRlX2VtcHR5X2ZpbGUpCi1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgKAotICAgIG1ha2VfcGtnLCBtYWtlX3NjcmlwdCwgbWFrZV96aXBfcGtnLCBtYWtlX3ppcF9zY3JpcHQsIHRlbXBfZGlyKQorICAgIGZvcmdldCwgbWFrZV9sZWdhY3lfcHljLCB1bmxvYWQsIHZlcmJvc2UsIG5vX3RyYWNpbmcsCisgICAgY3JlYXRlX2VtcHR5X2ZpbGUsIHRlbXBfZGlyKQorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgKAorICAgIG1ha2VfcGtnLCBtYWtlX3NjcmlwdCwgbWFrZV96aXBfcGtnLCBtYWtlX3ppcF9zY3JpcHQpCiAKIAogaW1wb3J0IHJ1bnB5CkBAIC0xOTcsOCArMTk3LDExIEBACiAgICAgICAgIHNlbGYuZXhwZWN0X2ltcG9ydF9lcnJvcigic3lzLmltcC5lcmljIikKICAgICAgICAgc2VsZi5leHBlY3RfaW1wb3J0X2Vycm9yKCJvcy5wYXRoLmhhbGYiKQogICAgICAgICBzZWxmLmV4cGVjdF9pbXBvcnRfZXJyb3IoImEuYmVlIikKKyAgICAgICAgIyBSZWxhdGl2ZSBuYW1lcyBub3QgYWxsb3dlZAogICAgICAgICBzZWxmLmV4cGVjdF9pbXBvcnRfZXJyb3IoIi5ob3dhcmQiKQogICAgICAgICBzZWxmLmV4cGVjdF9pbXBvcnRfZXJyb3IoIi4uZWF0ZW4iKQorICAgICAgICBzZWxmLmV4cGVjdF9pbXBvcnRfZXJyb3IoIi50ZXN0X3J1bnB5IikKKyAgICAgICAgc2VsZi5leHBlY3RfaW1wb3J0X2Vycm9yKCIudW5pdHRlc3QiKQogICAgICAgICAjIFBhY2thZ2Ugd2l0aG91dCBfX21haW5fXy5weQogICAgICAgICBzZWxmLmV4cGVjdF9pbXBvcnRfZXJyb3IoIm11bHRpcHJvY2Vzc2luZyIpCiAKQEAgLTI2OSw3ICsyNzIsNyBAQAogICAgICAgICAgICAgaWYgdmVyYm9zZSA+IDE6IHByaW50KGV4KSAjIFBlcnNpc3Qgd2l0aCBjbGVhbmluZyB1cAogCiAgICAgZGVmIF9maXhfbnNfZm9yX2xlZ2FjeV9weWMoc2VsZiwgbnMsIGFsdGVyX3N5cyk6Ci0gICAgICAgIGNoYXJfdG9fYWRkID0gImMiIGlmIF9fZGVidWdfXyBlbHNlICJvIgorICAgICAgICBjaGFyX3RvX2FkZCA9ICJjIgogICAgICAgICBuc1siX19maWxlX18iXSArPSBjaGFyX3RvX2FkZAogICAgICAgICBuc1siX19jYWNoZWRfXyJdID0gbnNbIl9fZmlsZV9fIl0KICAgICAgICAgc3BlYyA9IG5zWyJfX3NwZWNfXyJdCkBAIC00MzksNiArNDQyLDM0IEBACiAgICAgICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIlRlc3RpbmcgcGFja2FnZSBkZXB0aDoiLCBkZXB0aCkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3BhY2thZ2UoZGVwdGgpCiAKKyAgICBkZWYgdGVzdF9ydW5fcGFja2FnZV9pbml0X2V4Y2VwdGlvbnMoc2VsZik6CisgICAgICAgICMgVGhlc2Ugd2VyZSBwcmV2aW91c2x5IHdyYXBwZWQgaW4gYW4gSW1wb3J0RXJyb3I7IHNlZSBJc3N1ZSAxNDI4NQorICAgICAgICByZXN1bHQgPSBzZWxmLl9tYWtlX3BrZygiIiwgMSwgIl9fbWFpbl9fIikKKyAgICAgICAgcGtnX2RpciwgXywgbW9kX25hbWUsIF8gPSByZXN1bHQKKyAgICAgICAgbW9kX25hbWUgPSBtb2RfbmFtZS5yZXBsYWNlKCIuX19tYWluX18iLCAiIikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuX2RlbF9wa2csIHBrZ19kaXIsIDEsIG1vZF9uYW1lKQorICAgICAgICBpbml0ID0gb3MucGF0aC5qb2luKHBrZ19kaXIsICJfX3J1bnB5X3BrZ19fIiwgIl9faW5pdF9fLnB5IikKKworICAgICAgICBleGNlcHRpb25zID0gKEltcG9ydEVycm9yLCBBdHRyaWJ1dGVFcnJvciwgVHlwZUVycm9yLCBWYWx1ZUVycm9yKQorICAgICAgICBmb3IgZXhjZXB0aW9uIGluIGV4Y2VwdGlvbnM6CisgICAgICAgICAgICBuYW1lID0gZXhjZXB0aW9uLl9fbmFtZV9fCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW1lKToKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSAicmFpc2UgezB9KCd7MH0gaW4gX19pbml0X18ucHkuJykiLmZvcm1hdChuYW1lKQorICAgICAgICAgICAgICAgIHdpdGggb3Blbihpbml0LCAid3QiLCBlbmNvZGluZz0iYXNjaWkiKSBhcyBtb2RfZmlsZToKKyAgICAgICAgICAgICAgICAgICAgbW9kX2ZpbGUud3JpdGUoc291cmNlKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcnVuX21vZHVsZShtb2RfbmFtZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgZXhjZXB0aW9uIGFzIGVycjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiZmluZGluZyBzcGVjIiwgZm9ybWF0KGVycikpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJOb3RoaW5nIHJhaXNlZDsgZXhwZWN0ZWQge30iLmZvcm1hdChuYW1lKSkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJ1bl9tb2R1bGUobW9kX25hbWUgKyAiLnN1Ym1vZHVsZSIpCisgICAgICAgICAgICAgICAgZXhjZXB0IGV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oImZpbmRpbmcgc3BlYyIsIGZvcm1hdChlcnIpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm90aGluZyByYWlzZWQ7IGV4cGVjdGVkIHt9Ii5mb3JtYXQobmFtZSkpCisKICAgICBkZWYgdGVzdF9ydW5fcGFja2FnZV9pbl9uYW1lc3BhY2VfcGFja2FnZShzZWxmKToKICAgICAgICAgZm9yIGRlcHRoIGluIHJhbmdlKDEsIDQpOgogICAgICAgICAgICAgaWYgdmVyYm9zZSA+IDE6IHByaW50KCJUZXN0aW5nIHBhY2thZ2UgZGVwdGg6IiwgZGVwdGgpCkBAIC02NzMsNyArNzA0LDcgQEAKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gc2VsZi5fbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCBtb2RfbmFtZSwgc291cmNlKQogICAgICAgICAgICAgemlwX25hbWUsIGZuYW1lID0gbWFrZV96aXBfc2NyaXB0KHNjcmlwdF9kaXIsICd0ZXN0X3ppcCcsIHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgbXNnID0gInJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZCIKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoUnVudGltZUVycm9yLCBtc2csIHJ1bl9wYXRoLCB6aXBfbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoUmVjdXJzaW9uRXJyb3IsIG1zZywgcnVuX3BhdGgsIHppcF9uYW1lKQogCiAgICAgZGVmIHRlc3RfZW5jb2Rpbmcoc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zYXgucHkgYi9MaWIvdGVzdC90ZXN0X3NheC5weQppbmRleCA5MGYzMDE2Li4yNDExODk1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NheC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NheC5weQpAQCAtMjAwLDYgKzIwMCwxMyBAQAogICAgICAgICBwYXJzZVN0cmluZyhzLCBYTUxHZW5lcmF0b3IocmVzdWx0LCAndXRmLTgnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuZ2V0dmFsdWUoKSwgeG1sX3N0cihzZWxmLmRhdGEsICd1dGYtOCcpKQogCisgICAgZGVmIHRlc3RfcGFyc2VTdHJpbmdfdGV4dChzZWxmKToKKyAgICAgICAgZW5jb2RpbmdzID0gKCd1cy1hc2NpaScsICdpc28tODg1OS0xJywgJ3V0Zi04JywKKyAgICAgICAgICAgICAgICAgICAgICd1dGYtMTYnLCAndXRmLTE2bGUnLCAndXRmLTE2YmUnKQorICAgICAgICBmb3IgZW5jb2RpbmcgaW4gZW5jb2RpbmdzOgorICAgICAgICAgICAgc2VsZi5jaGVja19wYXJzZVN0cmluZyh4bWxfc3RyKHNlbGYuZGF0YSwgZW5jb2RpbmcpKQorICAgICAgICBzZWxmLmNoZWNrX3BhcnNlU3RyaW5nKHNlbGYuZGF0YSkKKwogICAgIGRlZiB0ZXN0X3BhcnNlU3RyaW5nX2J5dGVzKHNlbGYpOgogICAgICAgICAjIFVURi04IGlzIGRlZmF1bHQgZW5jb2RpbmcsIFVTLUFTQ0lJIGlzIGNvbXBhdGlibGUgd2l0aCBVVEYtOCwKICAgICAgICAgIyBVVEYtMTYgaXMgYXV0b2RldGVjdGVkCkBAIC0zMDYsMTIgKzMxMywyNCBAQAogICAgIGRlZiBtYWtlX2J5dGVfc3RyZWFtKHNlbGYpOgogICAgICAgICByZXR1cm4gQnl0ZXNJTyhiIlRoaXMgaXMgYSBieXRlIHN0cmVhbS4iKQogCisgICAgZGVmIG1ha2VfY2hhcmFjdGVyX3N0cmVhbShzZWxmKToKKyAgICAgICAgcmV0dXJuIFN0cmluZ0lPKCJUaGlzIGlzIGEgY2hhcmFjdGVyIHN0cmVhbS4iKQorCiAgICAgZGVmIGNoZWNrQ29udGVudChzZWxmLCBzdHJlYW0sIGNvbnRlbnQpOgogICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShzdHJlYW0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLnJlYWQoKSwgY29udGVudCkKICAgICAgICAgc3RyZWFtLmNsb3NlKCkKIAogCisgICAgZGVmIHRlc3RfY2hhcmFjdGVyX3N0cmVhbShzZWxmKToKKyAgICAgICAgIyBJZiB0aGUgc291cmNlIGlzIGFuIElucHV0U291cmNlIHdpdGggYSBjaGFyYWN0ZXIgc3RyZWFtLCB1c2UgaXQuCisgICAgICAgIHNyYyA9IElucHV0U291cmNlKHNlbGYuZmlsZSkKKyAgICAgICAgc3JjLnNldENoYXJhY3RlclN0cmVhbShzZWxmLm1ha2VfY2hhcmFjdGVyX3N0cmVhbSgpKQorICAgICAgICBwcmVwID0gcHJlcGFyZV9pbnB1dF9zb3VyY2Uoc3JjKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwcmVwLmdldEJ5dGVTdHJlYW0oKSkKKyAgICAgICAgc2VsZi5jaGVja0NvbnRlbnQocHJlcC5nZXRDaGFyYWN0ZXJTdHJlYW0oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgaXMgYSBjaGFyYWN0ZXIgc3RyZWFtLiIpCisKICAgICBkZWYgdGVzdF9ieXRlX3N0cmVhbShzZWxmKToKICAgICAgICAgIyBJZiB0aGUgc291cmNlIGlzIGFuIElucHV0U291cmNlIHRoYXQgZG9lcyBub3QgaGF2ZSBhIGNoYXJhY3RlcgogICAgICAgICAjIHN0cmVhbSBidXQgZG9lcyBoYXZlIGEgYnl0ZSBzdHJlYW0sIHVzZSB0aGUgYnl0ZSBzdHJlYW0uCkBAIC0zNDYsNiArMzY1LDE0IEBACiAgICAgICAgIHNlbGYuY2hlY2tDb250ZW50KHByZXAuZ2V0Qnl0ZVN0cmVhbSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBiIlRoaXMgaXMgYSBieXRlIHN0cmVhbS4iKQogCisgICAgZGVmIHRlc3RfdGV4dF9maWxlKHNlbGYpOgorICAgICAgICAjIElmIHRoZSBzb3VyY2UgaXMgYSB0ZXh0IGZpbGUtbGlrZSBvYmplY3QsIHVzZSBpdCBhcyBhIGNoYXJhY3RlcgorICAgICAgICAjIHN0cmVhbS4KKyAgICAgICAgcHJlcCA9IHByZXBhcmVfaW5wdXRfc291cmNlKHNlbGYubWFrZV9jaGFyYWN0ZXJfc3RyZWFtKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByZXAuZ2V0Qnl0ZVN0cmVhbSgpKQorICAgICAgICBzZWxmLmNoZWNrQ29udGVudChwcmVwLmdldENoYXJhY3RlclN0cmVhbSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBpcyBhIGNoYXJhY3RlciBzdHJlYW0uIikKKwogCiAjID09PT09IFhNTEdlbmVyYXRvcgogCkBAIC0xMDI1LDYgKzEwNTIsMTkgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5nZXR2YWx1ZSgpLCB4bWxfdGVzdF9vdXQpCiAKKyAgICBkZWYgdGVzdF9leHBhdF9pbnBzb3VyY2VfY2hhcmFjdGVyX3N0cmVhbShzZWxmKToKKyAgICAgICAgcGFyc2VyID0gY3JlYXRlX3BhcnNlcigpCisgICAgICAgIHJlc3VsdCA9IEJ5dGVzSU8oKQorICAgICAgICB4bWxnZW4gPSBYTUxHZW5lcmF0b3IocmVzdWx0KQorCisgICAgICAgIHBhcnNlci5zZXRDb250ZW50SGFuZGxlcih4bWxnZW4pCisgICAgICAgIGlucHNyYyA9IElucHV0U291cmNlKCkKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RfWE1MRklMRSwgJ3J0JywgZW5jb2Rpbmc9J2lzby04ODU5LTEnKSBhcyBmOgorICAgICAgICAgICAgaW5wc3JjLnNldENoYXJhY3RlclN0cmVhbShmKQorICAgICAgICAgICAgcGFyc2VyLnBhcnNlKGlucHNyYykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5nZXR2YWx1ZSgpLCB4bWxfdGVzdF9vdXQpCisKICAgICAjID09PT09IEluY3JlbWVudGFsUGFyc2VyIHN1cHBvcnQKIAogICAgIGRlZiB0ZXN0X2V4cGF0X2luY3JlbWVudGFsKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zY29wZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc2NvcGUucHkKaW5kZXggYjMyNTU0NS4uNDIzOWIyNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zY29wZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Njb3BlLnB5CkBAIC0xLDcgKzEsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2Vha3JlZgogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2hlY2tfc3ludGF4X2Vycm9yLCBjcHl0aG9uX29ubHksIHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNoZWNrX3N5bnRheF9lcnJvciwgY3B5dGhvbl9vbmx5CiAKIAogY2xhc3MgU2NvcGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC03NTcsOCArNzU3LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVmKCkpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChTY29wZVRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NjcmlwdF9oZWxwZXIucHkgYi9MaWIvdGVzdC90ZXN0X3NjcmlwdF9oZWxwZXIucHkKaW5kZXggMzcyZDZhNy4uYTc2ODBmOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zY3JpcHRfaGVscGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2NyaXB0X2hlbHBlci5weQpAQCAtMSw4ICsxLDggQEAKLSIiIlVuaXR0ZXN0cyBmb3IgdGVzdC5zY3JpcHRfaGVscGVyLiAgV2hvIHRlc3RzIHRoZSB0ZXN0IGhlbHBlcj8iIiIKKyIiIlVuaXR0ZXN0cyBmb3IgdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIuICBXaG8gdGVzdHMgdGhlIHRlc3QgaGVscGVyPyIiIgogCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwotZnJvbSB0ZXN0IGltcG9ydCBzY3JpcHRfaGVscGVyCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiAKQEAgLTIzLDIxICsyMywyMSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKSBhcyBlcnJvcl9jb250ZXh0OgogICAgICAgICAgICAgc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX29rKCctYycsICdzeXMuZXhpdCgwKScpCiAgICAgICAgIGVycm9yX21zZyA9IHN0cihlcnJvcl9jb250ZXh0LmV4Y2VwdGlvbikKLSAgICAgICAgc2VsZi5hc3NlcnRJbignY29tbWFuZCBsaW5lIHdhczonLCBlcnJvcl9tc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NvbW1hbmQgbGluZTonLCBlcnJvcl9tc2cpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3N5cy5leGl0KDApJywgZXJyb3JfbXNnLCBtc2c9J3VuZXhwZWN0ZWQgY29tbWFuZCBsaW5lJykKIAogICAgIGRlZiB0ZXN0X2Fzc2VydF9weXRob25fZmFpbHVyZV9yYWlzZXMoc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpIGFzIGVycm9yX2NvbnRleHQ6CiAgICAgICAgICAgICBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fZmFpbHVyZSgnLWMnLCAnaW1wb3J0IHN5czsgc3lzLmV4aXQoMCknKQogICAgICAgICBlcnJvcl9tc2cgPSBzdHIoZXJyb3JfY29udGV4dC5leGNlcHRpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1Byb2Nlc3MgcmV0dXJuIGNvZGUgaXMgMCwnLCBlcnJvcl9tc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1Byb2Nlc3MgcmV0dXJuIGNvZGUgaXMgMFxuJywgZXJyb3JfbXNnKQogICAgICAgICBzZWxmLmFzc2VydEluKCdpbXBvcnQgc3lzOyBzeXMuZXhpdCgwKScsIGVycm9yX21zZywKICAgICAgICAgICAgICAgICAgICAgICBtc2c9J3VuZXhwZWN0ZWQgY29tbWFuZCBsaW5lLicpCiAKICAgICBAbW9jay5wYXRjaCgnc3VicHJvY2Vzcy5Qb3BlbicpCiAgICAgZGVmIHRlc3RfYXNzZXJ0X3B5dGhvbl9pc29sYXRlZF93aGVuX2Vudl9ub3RfcmVxdWlyZWQoc2VsZiwgbW9ja19wb3Blbik6CiAgICAgICAgIHdpdGggbW9jay5wYXRjaC5vYmplY3Qoc2NyaXB0X2hlbHBlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl92YWx1ZT1GYWxzZSkgYXMgbW9ja19pcmVfZnVuYzoKICAgICAgICAgICAgIG1vY2tfcG9wZW4uc2lkZV9lZmZlY3QgPSBSdW50aW1lRXJyb3IoJ2JhaWwgb3V0IG9mIHVuaXR0ZXN0JykKICAgICAgICAgICAgIHRyeToKQEAgLTU2LDcgKzU2LDcgQEAKICAgICBkZWYgdGVzdF9hc3NlcnRfcHl0aG9uX25vdF9pc29sYXRlZF93aGVuX2Vudl9pc19yZXF1aXJlZChzZWxmLCBtb2NrX3BvcGVuKToKICAgICAgICAgIiIiRW5zdXJlIHRoYXQgLUkgaXMgbm90IHBhc3NlZCB3aGVuIHRoZSBlbnZpcm9ubWVudCBpcyByZXF1aXJlZC4iIiIKICAgICAgICAgd2l0aCBtb2NrLnBhdGNoLm9iamVjdChzY3JpcHRfaGVscGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPVRydWUpIGFzIG1vY2tfaXJlX2Z1bmM6CiAgICAgICAgICAgICBtb2NrX3BvcGVuLnNpZGVfZWZmZWN0ID0gUnVudGltZUVycm9yKCdiYWlsIG91dCBvZiB1bml0dGVzdCcpCiAgICAgICAgICAgICB0cnk6CkBAIC02OSw3ICs2OSw3IEBACiAKIAogY2xhc3MgVGVzdFNjcmlwdEhlbHBlckVudmlyb25tZW50KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJDb2RlIGNvdmVyYWdlIGZvciBfaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKS4iIiIKKyAgICAiIiJDb2RlIGNvdmVyYWdlIGZvciBpbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpLiIiIgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoCkBAIC04NCwyMiArODQsMjIgQEAKICAgICBAbW9jay5wYXRjaCgnc3VicHJvY2Vzcy5jaGVja19jYWxsJykKICAgICBkZWYgdGVzdF9pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudF90cnVlKHNlbGYsIG1vY2tfY2hlY2tfY2FsbCk6CiAgICAgICAgIG1vY2tfY2hlY2tfY2FsbC5zaWRlX2VmZmVjdCA9IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKCcnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNjcmlwdF9oZWxwZXIuX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzY3JpcHRfaGVscGVyLl9pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2NyaXB0X2hlbHBlci5pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2NyaXB0X2hlbHBlci5pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIG1vY2tfY2hlY2tfY2FsbC5jYWxsX2NvdW50KQogCiAgICAgQG1vY2sucGF0Y2goJ3N1YnByb2Nlc3MuY2hlY2tfY2FsbCcpCiAgICAgZGVmIHRlc3RfaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnRfZmFsc2Uoc2VsZiwgbW9ja19jaGVja19jYWxsKToKICAgICAgICAgIyBUaGUgbW9ja2VkIHN1YnByb2Nlc3MuY2hlY2tfY2FsbCBmYWtlcyBhIG5vLWVycm9yIHByb2Nlc3MuCi0gICAgICAgIHNjcmlwdF9oZWxwZXIuX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzY3JpcHRfaGVscGVyLl9pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpKQorICAgICAgICBzY3JpcHRfaGVscGVyLmludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzY3JpcHRfaGVscGVyLmludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbW9ja19jaGVja19jYWxsLmNhbGxfY291bnQpCiAKICAgICBAbW9jay5wYXRjaCgnc3VicHJvY2Vzcy5jaGVja19jYWxsJykKICAgICBkZWYgdGVzdF9pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudF9kZXRhaWxzKHNlbGYsIG1vY2tfY2hlY2tfY2FsbCk6Ci0gICAgICAgIHNjcmlwdF9oZWxwZXIuX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzY3JpcHRfaGVscGVyLl9pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNjcmlwdF9oZWxwZXIuX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkpCisgICAgICAgIHNjcmlwdF9oZWxwZXIuaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNjcmlwdF9oZWxwZXIuaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzY3JpcHRfaGVscGVyLmludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbW9ja19jaGVja19jYWxsLmNhbGxfY291bnQpCiAgICAgICAgIGNoZWNrX2NhbGxfY29tbWFuZCA9IG1vY2tfY2hlY2tfY2FsbC5jYWxsX2FyZ3NbMF1bMF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZXhlY3V0YWJsZSwgY2hlY2tfY2FsbF9jb21tYW5kWzBdKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zZWxlY3QucHkgYi9MaWIvdGVzdC90ZXN0X3NlbGVjdC5weQppbmRleCA4ZjlhMWM5Li5hOTczZjNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NlbGVjdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NlbGVjdC5weQpAQCAtNzUsOSArNzUsOCBAQAogICAgICAgICBhWzpdID0gW0YoKV0gKiAxMAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGVjdC5zZWxlY3QoW10sIGEsIFtdKSwgKFtdLCBhWzo1XSwgW10pKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoU2VsZWN0VGVzdENhc2UpCitkZWYgdGVhckRvd25Nb2R1bGUoKToKICAgICBzdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NlbGVjdG9ycy5weSBiL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0b3JzLnB5CmluZGV4IDk1MmZkYTYuLjQ1NGMxN2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0b3JzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0b3JzLnB5CkBAIC05LDEwICs5LDcgQEAKIGZyb20gdGltZSBpbXBvcnQgc2xlZXAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHVuaXR0ZXN0Lm1vY2sKLXRyeToKLSAgICBmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyB0aW1lCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIHRpbWUKK2Zyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIHRpbWUKIHRyeToKICAgICBpbXBvcnQgcmVzb3VyY2UKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTI1LDcgKzIyLDcgQEAKICAgICBkZWYgc29ja2V0cGFpcihmYW1pbHk9c29ja2V0LkFGX0lORVQsIHR5cGU9c29ja2V0LlNPQ0tfU1RSRUFNLCBwcm90bz0wKToKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KGZhbWlseSwgdHlwZSwgcHJvdG8pIGFzIGw6CiAgICAgICAgICAgICBsLmJpbmQoKHN1cHBvcnQuSE9TVCwgMCkpCi0gICAgICAgICAgICBsLmxpc3RlbigzKQorICAgICAgICAgICAgbC5saXN0ZW4oKQogICAgICAgICAgICAgYyA9IHNvY2tldC5zb2NrZXQoZmFtaWx5LCB0eXBlLCBwcm90bykKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBjLmNvbm5lY3QobC5nZXRzb2NrbmFtZSgpKQpAQCAtMTg4LDggKzE4NSw4IEBACiAgICAgICAgIHMucmVnaXN0ZXIod3IsIHNlbGVjdG9ycy5FVkVOVF9XUklURSkKIAogICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHMuZ2V0X2tleSwgcmQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzLmdldF9rZXksIHdyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHMuZ2V0X2tleSwgcmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcy5nZXRfa2V5LCB3cikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIG1hcHBpbmcuX19nZXRpdGVtX18sIHJkKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbWFwcGluZy5fX2dldGl0ZW1fXywgd3IpCiAKQEAgLTI1OCw4ICsyNTUsOCBAQAogICAgICAgICAgICAgc2VsLnJlZ2lzdGVyKHJkLCBzZWxlY3RvcnMuRVZFTlRfUkVBRCkKICAgICAgICAgICAgIHNlbC5yZWdpc3Rlcih3ciwgc2VsZWN0b3JzLkVWRU5UX1dSSVRFKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzLmdldF9rZXksIHJkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgcy5nZXRfa2V5LCB3cikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzLmdldF9rZXksIHJkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHMuZ2V0X2tleSwgd3IpCiAKICAgICBkZWYgdGVzdF9maWxlbm8oc2VsZik6CiAgICAgICAgIHMgPSBzZWxmLlNFTEVDVE9SKCkKQEAgLTM2MCw3ICszNTcsMzUgQEAKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAiYWxhcm0iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsLmFsYXJtKCkgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCIpCi0gICAgZGVmIHRlc3Rfc2VsZWN0X2ludGVycnVwdChzZWxmKToKKyAgICBkZWYgdGVzdF9zZWxlY3RfaW50ZXJydXB0X2V4YyhzZWxmKToKKyAgICAgICAgcyA9IHNlbGYuU0VMRUNUT1IoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKworICAgICAgICByZCwgd3IgPSBzZWxmLm1ha2Vfc29ja2V0cGFpcigpCisKKyAgICAgICAgY2xhc3MgSW50ZXJydXB0U2VsZWN0KEV4Y2VwdGlvbik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGVmIGhhbmRsZXIoKmFyZ3MpOgorICAgICAgICAgICAgcmFpc2UgSW50ZXJydXB0U2VsZWN0CisKKyAgICAgICAgb3JpZ19hbHJtX2hhbmRsZXIgPSBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBoYW5kbGVyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2lnbmFsLnNpZ25hbCwgc2lnbmFsLlNJR0FMUk0sIG9yaWdfYWxybV9oYW5kbGVyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2lnbmFsLmFsYXJtLCAwKQorCisgICAgICAgIHNpZ25hbC5hbGFybSgxKQorCisgICAgICAgIHMucmVnaXN0ZXIocmQsIHNlbGVjdG9ycy5FVkVOVF9SRUFEKQorICAgICAgICB0ID0gdGltZSgpCisgICAgICAgICMgc2VsZWN0KCkgaXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgd2hpY2ggcmFpc2VzIGFuIGV4Y2VwdGlvbgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludGVycnVwdFNlbGVjdCk6CisgICAgICAgICAgICBzLnNlbGVjdCgzMCkKKyAgICAgICAgIyBzZWxlY3QoKSB3YXMgaW50ZXJydXB0ZWQgYmVmb3JlIHRoZSB0aW1lb3V0IG9mIDMwIHNlY29uZHMKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHRpbWUoKSAtIHQsIDUuMCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAiYWxhcm0iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsLmFsYXJtKCkgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCIpCisgICAgZGVmIHRlc3Rfc2VsZWN0X2ludGVycnVwdF9ub3JhaXNlKHNlbGYpOgogICAgICAgICBzID0gc2VsZi5TRUxFQ1RPUigpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQogCkBAIC0zNzQsOCArMzk5LDExIEBACiAKICAgICAgICAgcy5yZWdpc3RlcihyZCwgc2VsZWN0b3JzLkVWRU5UX1JFQUQpCiAgICAgICAgIHQgPSB0aW1lKCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzLnNlbGVjdCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHRpbWUoKSAtIHQsIDIuNSkKKyAgICAgICAgIyBzZWxlY3QoKSBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCwgYnV0IHRoZSBzaWduYWwgaGFuZGxlciBkb2Vzbid0CisgICAgICAgICMgcmFpc2UgYW4gZXhjZXB0aW9uLCBzbyBzZWxlY3QoKSBzaG91bGQgYnkgcmV0cmllcyB3aXRoIGEgcmVjb21wdXRlZAorICAgICAgICAjIHRpbWVvdXQKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzLnNlbGVjdCgxLjUpKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbCh0aW1lKCkgLSB0LCAxLjApCiAKIAogY2xhc3MgU2NhbGFibGVTZWxlY3Rvck1peEluOgpAQCAtNDU1LDEwICs0ODMsMTggQEAKICAgICBTRUxFQ1RPUiA9IGdldGF0dHIoc2VsZWN0b3JzLCAnS3F1ZXVlU2VsZWN0b3InLCBOb25lKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2VsZWN0b3JzLCAnRGV2cG9sbFNlbGVjdG9yJyksCisgICAgICAgICAgICAgICAgICAgICAiVGVzdCBuZWVkcyBzZWxlY3RvcnMuRGV2cG9sbFNlbGVjdG9yIikKK2NsYXNzIERldnBvbGxTZWxlY3RvclRlc3RDYXNlKEJhc2VTZWxlY3RvclRlc3RDYXNlLCBTY2FsYWJsZVNlbGVjdG9yTWl4SW4pOgorCisgICAgU0VMRUNUT1IgPSBnZXRhdHRyKHNlbGVjdG9ycywgJ0RldnBvbGxTZWxlY3RvcicsIE5vbmUpCisKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdHMgPSBbRGVmYXVsdFNlbGVjdG9yVGVzdENhc2UsIFNlbGVjdFNlbGVjdG9yVGVzdENhc2UsCiAgICAgICAgICAgICAgUG9sbFNlbGVjdG9yVGVzdENhc2UsIEVwb2xsU2VsZWN0b3JUZXN0Q2FzZSwKLSAgICAgICAgICAgICBLcXVldWVTZWxlY3RvclRlc3RDYXNlXQorICAgICAgICAgICAgIEtxdWV1ZVNlbGVjdG9yVGVzdENhc2UsIERldnBvbGxTZWxlY3RvclRlc3RDYXNlXQogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0cykKICAgICBzdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NldC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5CmluZGV4IGYwODRlYmUuLjU0ZGU1MDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5CkBAIC05MzEsNyArOTMxLDcgQEAKIAogY2xhc3MgVGVzdEJhc2ljT3BzQnl0ZXMoVGVzdEJhc2ljT3BzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmNhc2UgICA9ICJzdHJpbmcgc2V0IgorICAgICAgICBzZWxmLmNhc2UgICA9ICJieXRlcyBzZXQiCiAgICAgICAgIHNlbGYudmFsdWVzID0gW2IiYSIsIGIiYiIsIGIiYyJdCiAgICAgICAgIHNlbGYuc2V0ICAgID0gc2V0KHNlbGYudmFsdWVzKQogICAgICAgICBzZWxmLmR1cCAgICA9IHNldChzZWxmLnZhbHVlcykKQEAgLTE3NDIsNiArMTc0MiwxOSBAQAogICAgICAgICBzLnVwZGF0ZShyYW5nZSgxMDApKQogICAgICAgICBsaXN0KHNpKQogCisgICAgZGVmIHRlc3RfbWVyZ2VfYW5kX211dGF0ZShzZWxmKToKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaGFzaCgwKQorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvKToKKyAgICAgICAgICAgICAgICBvdGhlci5jbGVhcigpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgb3RoZXIgPSBzZXQoKQorICAgICAgICBvdGhlciA9IHtYKCkgZm9yIGkgaW4gcmFuZ2UoMTApfQorICAgICAgICBzID0gezB9CisgICAgICAgIHMudXBkYXRlKG90aGVyKQorCiAjIEFwcGxpY2F0aW9uIHRlc3RzIChiYXNlZCBvbiBEYXZpZCBFcHBzdGVpbidzIGdyYXBoIHJlY2lwZXMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIGRlZiBwb3dlcnNldChVKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkgYi9MaWIvdGVzdC90ZXN0X3NobGV4LnB5CmluZGV4IGQyODA5YWUuLjRmYWZkZDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaGxleC5weQpAQCAtMyw3ICszLDYgQEAKIGltcG9ydCBzdHJpbmcKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiAjIFRoZSBvcmlnaW5hbCB0ZXN0IGRhdGEgc2V0IHdhcyBmcm9tIHNoZWxsd29yZHMsIGJ5IEhhcnRtdXQgR29lYmVsLgpAQCAtMTk1LDggKzE5NCw1IEBACiAgICAgICAgIGlmIG1ldGhuYW1lLnN0YXJ0c3dpdGgoInRlc3QiKSBhbmQgbWV0aG5hbWUgIT0gInRlc3RDb21wYXQiOgogICAgICAgICAgICAgZGVsYXR0cihTaGxleFRlc3QsIG1ldGhuYW1lKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoU2hsZXhUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NodXRpbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5CmluZGV4IGQyZDRkMDMuLmNhMWQwMDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5CkBAIC0zMCw2ICszMCwxMiBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIEJaMl9TVVBQT1JURUQgPSBGYWxzZQogCit0cnk6CisgICAgaW1wb3J0IGx6bWEKKyAgICBMWk1BX1NVUFBPUlRFRCA9IFRydWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBMWk1BX1NVUFBPUlRFRCA9IEZhbHNlCisKIFRFU1RGTjIgPSBURVNURk4gKyAiMiIKIAogdHJ5OgpAQCAtMTIyOSw2ICsxMjM1LDggQEAKICAgICAgICAgZm9ybWF0cyA9IFsndGFyJywgJ2d6dGFyJywgJ3ppcCddCiAgICAgICAgIGlmIEJaMl9TVVBQT1JURUQ6CiAgICAgICAgICAgICBmb3JtYXRzLmFwcGVuZCgnYnp0YXInKQorICAgICAgICBpZiBMWk1BX1NVUFBPUlRFRDoKKyAgICAgICAgICAgIGZvcm1hdHMuYXBwZW5kKCd4enRhcicpCiAKICAgICAgICAgcm9vdF9kaXIsIGJhc2VfZGlyID0gc2VsZi5fY3JlYXRlX2ZpbGVzKCkKICAgICAgICAgZXhwZWN0ZWQgPSBybGlzdGRpcihyb290X2RpcikKQEAgLTE2NjUsNiArMTY3MywyNCBAQAogICAgICAgICBydiA9IHNodXRpbC5tb3ZlKHNlbGYuc3JjX2ZpbGUsIG9zLnBhdGguam9pbihzZWxmLmRzdF9kaXIsICdiYXInKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydiwgb3MucGF0aC5qb2luKHNlbGYuZHN0X2RpciwgJ2JhcicpKQogCisgICAgQG1vY2tfcmVuYW1lCisgICAgZGVmIHRlc3RfbW92ZV9maWxlX3NwZWNpYWxfZnVuY3Rpb24oc2VsZik6CisgICAgICAgIG1vdmVkID0gW10KKyAgICAgICAgZGVmIF9jb3B5KHNyYywgZHN0KToKKyAgICAgICAgICAgIG1vdmVkLmFwcGVuZCgoc3JjLCBkc3QpKQorICAgICAgICBzaHV0aWwubW92ZShzZWxmLnNyY19maWxlLCBzZWxmLmRzdF9kaXIsIGNvcHlfZnVuY3Rpb249X2NvcHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vdmVkKSwgMSkKKworICAgIEBtb2NrX3JlbmFtZQorICAgIGRlZiB0ZXN0X21vdmVfZGlyX3NwZWNpYWxfZnVuY3Rpb24oc2VsZik6CisgICAgICAgIG1vdmVkID0gW10KKyAgICAgICAgZGVmIF9jb3B5KHNyYywgZHN0KToKKyAgICAgICAgICAgIG1vdmVkLmFwcGVuZCgoc3JjLCBkc3QpKQorICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKG9zLnBhdGguam9pbihzZWxmLnNyY19kaXIsICdjaGlsZCcpKQorICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKG9zLnBhdGguam9pbihzZWxmLnNyY19kaXIsICdjaGlsZDEnKSkKKyAgICAgICAgc2h1dGlsLm1vdmUoc2VsZi5zcmNfZGlyLCBzZWxmLmRzdF9kaXIsIGNvcHlfZnVuY3Rpb249X2NvcHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vdmVkKSwgMykKKwogCiBjbGFzcyBUZXN0Q29weUZpbGUodW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CmluZGV4IDc0Zjc0YWYuLjFiODBmZjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CkBAIC0xLDE5ICsxLDI1IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBjb250ZXh0bGliIGltcG9ydCBjbG9zaW5nCitpbXBvcnQgZW51bQogaW1wb3J0IGdjCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc2lnbmFsCitpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IHN5cywgb3MsIHRpbWUsIGVycm5vCi1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgc3Bhd25fcHl0aG9uCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBzcGF3bl9weXRob24KIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgdGhyZWFkaW5nID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBfdGVzdGNhcGkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfdGVzdGNhcGkgPSBOb25lCiAKIAogY2xhc3MgSGFuZGxlckJDYWxsZWQoRXhjZXB0aW9uKToKQEAgLTM5LDYgKzQ1LDIzIEBACiAgICAgICAgIHJldHVybiBOb25lCiAKIAorY2xhc3MgR2VuZXJpY1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEB1bml0dGVzdC5za2lwSWYodGhyZWFkaW5nIGlzIE5vbmUsICJ0ZXN0IG5lZWRzIHRocmVhZGluZyBtb2R1bGUiKQorICAgIGRlZiB0ZXN0X2VudW1zKHNlbGYpOgorICAgICAgICBmb3IgbmFtZSBpbiBkaXIoc2lnbmFsKToKKyAgICAgICAgICAgIHNpZyA9IGdldGF0dHIoc2lnbmFsLCBuYW1lKQorICAgICAgICAgICAgaWYgbmFtZSBpbiB7J1NJR19ERkwnLCAnU0lHX0lHTid9OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzaWcsIHNpZ25hbC5IYW5kbGVycykKKyAgICAgICAgICAgIGVsaWYgbmFtZSBpbiB7J1NJR19CTE9DSycsICdTSUdfVU5CTE9DSycsICdTSUdfU0VUTUFTSyd9OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzaWcsIHNpZ25hbC5TaWdtYXNrcykKKyAgICAgICAgICAgIGVsaWYgbmFtZS5zdGFydHN3aXRoKCdTSUcnKSBhbmQgbm90IG5hbWUuc3RhcnRzd2l0aCgnU0lHXycpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzaWcsIHNpZ25hbC5TaWduYWxzKQorICAgICAgICAgICAgZWxpZiBuYW1lLnN0YXJ0c3dpdGgoJ0NUUkxfJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNpZywgc2lnbmFsLlNpZ25hbHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMucGxhdGZvcm0sICJ3aW4zMiIpCisKKwogQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIk5vdCB2YWxpZCBvbiBXaW5kb3dzIikKIGNsYXNzIEludGVyUHJvY2Vzc1NpZ25hbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBNQVhfRFVSQVRJT04gPSAyMCAgICMgRW50aXJlIHRlc3Qgc2hvdWxkIGxhc3QgYXQgbW9zdCAyMCBzZWMuCkBAIC0xOTUsNiArMjE4LDcgQEAKIAogICAgIGRlZiB0ZXN0X2dldHNpZ25hbChzZWxmKToKICAgICAgICAgaHVwID0gc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHSFVQLCBzZWxmLnRyaXZpYWxfc2lnbmFsX2hhbmRsZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShodXAsIHNpZ25hbC5IYW5kbGVycykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYWwuZ2V0c2lnbmFsKHNpZ25hbC5TSUdIVVApLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudHJpdmlhbF9zaWduYWxfaGFuZGxlcikKICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHSFVQLCBodXApCkBAIC0yMjksMTUgKzI1Myw3NyBAQAogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9mZChzZWxmKToKICAgICAgICAgZmQgPSBzdXBwb3J0Lm1ha2VfYmFkX2ZkKCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2lnbmFsLnNldF93YWtldXBfZmQsIGZkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgT1NFcnJvciksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkLCBmZCkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfc29ja2V0KHNlbGYpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIGZkID0gc29jay5maWxlbm8oKQorICAgICAgICBzb2NrLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIE9TRXJyb3IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZCwgZmQpCisKKyAgICBkZWYgdGVzdF9zZXRfd2FrZXVwX2ZkX3Jlc3VsdChzZWxmKToKKyAgICAgICAgcjEsIHcxID0gb3MucGlwZSgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgcjEpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgdzEpCisgICAgICAgIHIyLCB3MiA9IG9zLnBpcGUoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIHIyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIHcyKQorCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdzZXRfYmxvY2tpbmcnKToKKyAgICAgICAgICAgIG9zLnNldF9ibG9ja2luZyh3MSwgRmFsc2UpCisgICAgICAgICAgICBvcy5zZXRfYmxvY2tpbmcodzIsIEZhbHNlKQorCisgICAgICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKHcxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hbC5zZXRfd2FrZXVwX2ZkKHcyKSwgdzEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmFsLnNldF93YWtldXBfZmQoLTEpLCB3MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYWwuc2V0X3dha2V1cF9mZCgtMSksIC0xKQorCisgICAgZGVmIHRlc3Rfc2V0X3dha2V1cF9mZF9zb2NrZXRfcmVzdWx0KHNlbGYpOgorICAgICAgICBzb2NrMSA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc29jazEuY2xvc2UpCisgICAgICAgIHNvY2sxLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICBmZDEgPSBzb2NrMS5maWxlbm8oKQorCisgICAgICAgIHNvY2syID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzb2NrMi5jbG9zZSkKKyAgICAgICAgc29jazIuc2V0YmxvY2tpbmcoRmFsc2UpCisgICAgICAgIGZkMiA9IHNvY2syLmZpbGVubygpCisKKyAgICAgICAgc2lnbmFsLnNldF93YWtldXBfZmQoZmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hbC5zZXRfd2FrZXVwX2ZkKGZkMiksIGZkMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYWwuc2V0X3dha2V1cF9mZCgtMSksIGZkMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYWwuc2V0X3dha2V1cF9mZCgtMSksIC0xKQorCisgICAgIyBPbiBXaW5kb3dzLCBmaWxlcyBhcmUgYWx3YXlzIGJsb2NraW5nIGFuZCBXaW5kb3dzIGRvZXMgbm90IHByb3ZpZGUgYQorICAgICMgZnVuY3Rpb24gdG8gdGVzdCBpZiBhIHNvY2tldCBpcyBpbiBub24tYmxvY2tpbmcgbW9kZS4KKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAidGVzdHMgc3BlY2lmaWMgdG8gUE9TSVgiKQorICAgIGRlZiB0ZXN0X3NldF93YWtldXBfZmRfYmxvY2tpbmcoc2VsZik6CisgICAgICAgIHJmZCwgd2ZkID0gb3MucGlwZSgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgcmZkKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIHdmZCkKKworICAgICAgICAjIGZkIG11c3QgYmUgbm9uLWJsb2NraW5nCisgICAgICAgIG9zLnNldF9ibG9ja2luZyh3ZmQsIFRydWUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZCh3ZmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBmZCAlcyBtdXN0IGJlIGluIG5vbi1ibG9ja2luZyBtb2RlIiAlIHdmZCkKKworICAgICAgICAjIG5vbi1ibG9ja2luZyBpcyBvaworICAgICAgICBvcy5zZXRfYmxvY2tpbmcod2ZkLCBGYWxzZSkKKyAgICAgICAgc2lnbmFsLnNldF93YWtldXBfZmQod2ZkKQorICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZCgtMSkKIAogCiBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiTm90IHZhbGlkIG9uIFdpbmRvd3MiKQogY2xhc3MgV2FrZXVwU2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEB1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIF90ZXN0Y2FwaScpCiAgICAgZGVmIGNoZWNrX3dha2V1cChzZWxmLCB0ZXN0X2JvZHksICpzaWduYWxzLCBvcmRlcmVkPVRydWUpOgogICAgICAgICAjIHVzZSBhIHN1YnByb2Nlc3MgdG8gaGF2ZSBvbmx5IG9uZSB0aHJlYWQKICAgICAgICAgY29kZSA9ICIiImlmIDE6Ci0gICAgICAgIGltcG9ydCBmY250bAorICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCiAgICAgICAgIGltcG9ydCBvcwogICAgICAgICBpbXBvcnQgc2lnbmFsCiAgICAgICAgIGltcG9ydCBzdHJ1Y3QKQEAgLTI2MCwxMCArMzQ2LDcgQEAKIAogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBoYW5kbGVyKQogICAgICAgICByZWFkLCB3cml0ZSA9IG9zLnBpcGUoKQotICAgICAgICBmb3IgZmQgaW4gKHJlYWQsIHdyaXRlKToKLSAgICAgICAgICAgIGZsYWdzID0gZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfR0VURkwsIDApCi0gICAgICAgICAgICBmbGFncyA9IGZsYWdzIHwgb3MuT19OT05CTE9DSwotICAgICAgICAgICAgZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfU0VURkwsIGZsYWdzKQorICAgICAgICBvcy5zZXRfYmxvY2tpbmcod3JpdGUsIEZhbHNlKQogICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZCh3cml0ZSkKIAogICAgICAgICB0ZXN0KCkKQEAgLTI3MSwyMSArMzU0LDIxIEBACiAKICAgICAgICAgb3MuY2xvc2UocmVhZCkKICAgICAgICAgb3MuY2xvc2Uod3JpdGUpCi0gICAgICAgICIiIi5mb3JtYXQoc2lnbmFscywgb3JkZXJlZCwgdGVzdF9ib2R5KQorICAgICAgICAiIiIuZm9ybWF0KHR1cGxlKG1hcChpbnQsIHNpZ25hbHMpKSwgb3JkZXJlZCwgdGVzdF9ib2R5KQogCiAgICAgICAgIGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIF90ZXN0Y2FwaScpCiAgICAgZGVmIHRlc3Rfd2FrZXVwX3dyaXRlX2Vycm9yKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxNjEwNTogd3JpdGUoKSBlcnJvcnMgaW4gdGhlIEMgc2lnbmFsIGhhbmRsZXIgc2hvdWxkIG5vdAogICAgICAgICAjIHBhc3Mgc2lsZW50bHkuCiAgICAgICAgICMgVXNlIGEgc3VicHJvY2VzcyB0byBoYXZlIG9ubHkgb25lIHRocmVhZC4KICAgICAgICAgY29kZSA9ICIiImlmIDE6CisgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKICAgICAgICAgaW1wb3J0IGVycm5vCi0gICAgICAgIGltcG9ydCBmY250bAogICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgaW1wb3J0IHNpZ25hbAogICAgICAgICBpbXBvcnQgc3lzCi0gICAgICAgIGltcG9ydCB0aW1lCiAgICAgICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRlcnIKIAogICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKQEAgLTI5MywxNSArMzc2LDEzIEBACiAKICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgaGFuZGxlcikKICAgICAgICAgciwgdyA9IG9zLnBpcGUoKQotICAgICAgICBmbGFncyA9IGZjbnRsLmZjbnRsKHIsIGZjbnRsLkZfR0VURkwsIDApCi0gICAgICAgIGZjbnRsLmZjbnRsKHIsIGZjbnRsLkZfU0VURkwsIGZsYWdzIHwgb3MuT19OT05CTE9DSykKKyAgICAgICAgb3Muc2V0X2Jsb2NraW5nKHIsIEZhbHNlKQogCiAgICAgICAgICMgU2V0IHdha2V1cF9mZCBhIHJlYWQtb25seSBmaWxlIGRlc2NyaXB0b3IgdG8gdHJpZ2dlciB0aGUgZXJyb3IKICAgICAgICAgc2lnbmFsLnNldF93YWtldXBfZmQocikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCi0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCg1LjApCisgICAgICAgICAgICAgICAgX3Rlc3RjYXBpLnJhaXNlX3NpZ25hbChzaWduYWwuU0lHQUxSTSkKICAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgogICAgICAgICAgICAgIyBBbiBpZ25vcmVkIGV4Y2VwdGlvbiBzaG91bGQgaGF2ZSBiZWVuIHByaW50ZWQgb3V0IG9uIHN0ZGVycgogICAgICAgICAgICAgZXJyID0gZXJyLmdldHZhbHVlKCkKQEAgLTMxMiw2ICszOTMsOSBAQAogICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKGVycikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJaZXJvRGl2aXNpb25FcnJvciBub3QgcmFpc2VkIikKKworICAgICAgICBvcy5jbG9zZShyKQorICAgICAgICBvcy5jbG9zZSh3KQogICAgICAgICAiIiIKICAgICAgICAgciwgdyA9IG9zLnBpcGUoKQogICAgICAgICB0cnk6CkBAIC0zMzQsMTggKzQxOCwyOCBAQAogICAgICAgICAgICAgVElNRU9VVF9GVUxMID0gMTAKICAgICAgICAgICAgIFRJTUVPVVRfSEFMRiA9IDUKIAorICAgICAgICAgICAgY2xhc3MgSW50ZXJydXB0U2VsZWN0KEV4Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgICAgICByYWlzZSBJbnRlcnJ1cHRTZWxlY3QKKyAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGhhbmRsZXIpCisKICAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQotICAgICAgICAgICAgYmVmb3JlX3RpbWUgPSB0aW1lLnRpbWUoKQorCiAgICAgICAgICAgICAjIFdlIGF0dGVtcHQgdG8gZ2V0IGEgc2lnbmFsIGR1cmluZyB0aGUgc2xlZXAsCiAgICAgICAgICAgICAjIGJlZm9yZSBzZWxlY3QgaXMgY2FsbGVkCi0gICAgICAgICAgICB0aW1lLnNsZWVwKFRJTUVPVVRfRlVMTCkKLSAgICAgICAgICAgIG1pZF90aW1lID0gdGltZS50aW1lKCkKLSAgICAgICAgICAgIGR0ID0gbWlkX3RpbWUgLSBiZWZvcmVfdGltZQotICAgICAgICAgICAgaWYgZHQgPj0gVElNRU9VVF9IQUxGOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgPj0gJXMiICUgKGR0LCBUSU1FT1VUX0hBTEYpKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtdLCBbXSwgVElNRU9VVF9GVUxMKQorICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdFNlbGVjdDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigic2VsZWN0KCkgd2FzIG5vdCBpbnRlcnJ1cHRlZCIpCisKKyAgICAgICAgICAgIGJlZm9yZV90aW1lID0gdGltZS5tb25vdG9uaWMoKQogICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbcmVhZF0sIFtdLCBbXSwgVElNRU9VVF9GVUxMKQotICAgICAgICAgICAgYWZ0ZXJfdGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgICAgICBkdCA9IGFmdGVyX3RpbWUgLSBtaWRfdGltZQorICAgICAgICAgICAgYWZ0ZXJfdGltZSA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgICAgIGR0ID0gYWZ0ZXJfdGltZSAtIGJlZm9yZV90aW1lCiAgICAgICAgICAgICBpZiBkdCA+PSBUSU1FT1VUX0hBTEY6CiAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyA+PSAlcyIgJSAoZHQsIFRJTUVPVVRfSEFMRikpCiAgICAgICAgICIiIiwgc2lnbmFsLlNJR0FMUk0pCkBAIC0zNTgsMTYgKzQ1MiwyMyBAQAogICAgICAgICAgICAgVElNRU9VVF9GVUxMID0gMTAKICAgICAgICAgICAgIFRJTUVPVVRfSEFMRiA9IDUKIAorICAgICAgICAgICAgY2xhc3MgSW50ZXJydXB0U2VsZWN0KEV4Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgICAgICByYWlzZSBJbnRlcnJ1cHRTZWxlY3QKKyAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGhhbmRsZXIpCisKICAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQotICAgICAgICAgICAgYmVmb3JlX3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgYmVmb3JlX3RpbWUgPSB0aW1lLm1vbm90b25pYygpCiAgICAgICAgICAgICAjIFdlIGF0dGVtcHQgdG8gZ2V0IGEgc2lnbmFsIGR1cmluZyB0aGUgc2VsZWN0IGNhbGwKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtyZWFkXSwgW10sIFtdLCBUSU1FT1VUX0ZVTEwpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRTZWxlY3Q6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk9TRXJyb3Igbm90IHJhaXNlZCIpCi0gICAgICAgICAgICBhZnRlcl90aW1lID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oInNlbGVjdCgpIHdhcyBub3QgaW50ZXJydXB0ZWQiKQorICAgICAgICAgICAgYWZ0ZXJfdGltZSA9IHRpbWUubW9ub3RvbmljKCkKICAgICAgICAgICAgIGR0ID0gYWZ0ZXJfdGltZSAtIGJlZm9yZV90aW1lCiAgICAgICAgICAgICBpZiBkdCA+PSBUSU1FT1VUX0hBTEY6CiAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyA+PSAlcyIgJSAoZHQsIFRJTUVPVVRfSEFMRikpCkBAIC0zNzUsOSArNDc2LDEwIEBACiAKICAgICBkZWYgdGVzdF9zaWdudW0oc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfd2FrZXVwKCIiImRlZiB0ZXN0KCk6CisgICAgICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCiAgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdVU1IxLCBoYW5kbGVyKQotICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbmFsLlNJR1VTUjEpCi0gICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWduYWwuU0lHQUxSTSkKKyAgICAgICAgICAgIF90ZXN0Y2FwaS5yYWlzZV9zaWduYWwoc2lnbmFsLlNJR1VTUjEpCisgICAgICAgICAgICBfdGVzdGNhcGkucmFpc2Vfc2lnbmFsKHNpZ25hbC5TSUdBTFJNKQogICAgICAgICAiIiIsIHNpZ25hbC5TSUdVU1IxLCBzaWduYWwuU0lHQUxSTSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9zaWdtYXNrJyksCkBAIC0zOTEsMTMgKzQ5Myw5NyBAQAogICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWdudW0yLCBoYW5kbGVyKQogCiAgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIChzaWdudW0xLCBzaWdudW0yKSkKLSAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bTEpCi0gICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0yKQorICAgICAgICAgICAgX3Rlc3RjYXBpLnJhaXNlX3NpZ25hbChzaWdudW0xKQorICAgICAgICAgICAgX3Rlc3RjYXBpLnJhaXNlX3NpZ25hbChzaWdudW0yKQogICAgICAgICAgICAgIyBVbmJsb2NraW5nIHRoZSAyIHNpZ25hbHMgY2FsbHMgdGhlIEMgc2lnbmFsIGhhbmRsZXIgdHdpY2UKICAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19VTkJMT0NLLCAoc2lnbnVtMSwgc2lnbnVtMikpCiAgICAgICAgICIiIiwgIHNpZ25hbC5TSUdVU1IxLCBzaWduYWwuU0lHVVNSMiwgb3JkZXJlZD1GYWxzZSkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNvY2tldCwgJ3NvY2tldHBhaXInKSwgJ25lZWQgc29ja2V0LnNvY2tldHBhaXInKQorY2xhc3MgV2FrZXVwU29ja2V0U2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQHVuaXR0ZXN0LnNraXBJZihfdGVzdGNhcGkgaXMgTm9uZSwgJ25lZWQgX3Rlc3RjYXBpJykKKyAgICBkZWYgdGVzdF9zb2NrZXQoc2VsZik6CisgICAgICAgICMgdXNlIGEgc3VicHJvY2VzcyB0byBoYXZlIG9ubHkgb25lIHRocmVhZAorICAgICAgICBjb2RlID0gIiIiaWYgMToKKyAgICAgICAgaW1wb3J0IHNpZ25hbAorICAgICAgICBpbXBvcnQgc29ja2V0CisgICAgICAgIGltcG9ydCBzdHJ1Y3QKKyAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQorCisgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdJTlQKKyAgICAgICAgc2lnbmFscyA9IChzaWdudW0sKQorCisgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbnVtLCBoYW5kbGVyKQorCisgICAgICAgIHJlYWQsIHdyaXRlID0gc29ja2V0LnNvY2tldHBhaXIoKQorICAgICAgICByZWFkLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICB3cml0ZS5zZXRibG9ja2luZyhGYWxzZSkKKyAgICAgICAgc2lnbmFsLnNldF93YWtldXBfZmQod3JpdGUuZmlsZW5vKCkpCisKKyAgICAgICAgX3Rlc3RjYXBpLnJhaXNlX3NpZ25hbChzaWdudW0pCisKKyAgICAgICAgZGF0YSA9IHJlYWQucmVjdigxKQorICAgICAgICBpZiBub3QgZGF0YToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigibm8gc2lnbnVtIHdyaXR0ZW4iKQorICAgICAgICByYWlzZWQgPSBzdHJ1Y3QudW5wYWNrKCdCJywgZGF0YSkKKyAgICAgICAgaWYgcmFpc2VkICE9IHNpZ25hbHM6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVyICE9ICVyIiAlIChyYWlzZWQsIHNpZ25hbHMpKQorCisgICAgICAgIHJlYWQuY2xvc2UoKQorICAgICAgICB3cml0ZS5jbG9zZSgpCisgICAgICAgICIiIgorCisgICAgICAgIGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKKworICAgIEB1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIF90ZXN0Y2FwaScpCisgICAgZGVmIHRlc3Rfc2VuZF9lcnJvcihzZWxmKToKKyAgICAgICAgIyBVc2UgYSBzdWJwcm9jZXNzIHRvIGhhdmUgb25seSBvbmUgdGhyZWFkLgorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICBhY3Rpb24gPSAnc2VuZCcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFjdGlvbiA9ICd3cml0ZScKKyAgICAgICAgY29kZSA9ICIiImlmIDE6CisgICAgICAgIGltcG9ydCBlcnJubworICAgICAgICBpbXBvcnQgc2lnbmFsCisgICAgICAgIGltcG9ydCBzb2NrZXQKKyAgICAgICAgaW1wb3J0IHN5cworICAgICAgICBpbXBvcnQgdGltZQorICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCisgICAgICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRlcnIKKworICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHSU5UCisKKyAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2lnbmFsLnNpZ25hbChzaWdudW0sIGhhbmRsZXIpCisKKyAgICAgICAgcmVhZCwgd3JpdGUgPSBzb2NrZXQuc29ja2V0cGFpcigpCisgICAgICAgIHJlYWQuc2V0YmxvY2tpbmcoRmFsc2UpCisgICAgICAgIHdyaXRlLnNldGJsb2NraW5nKEZhbHNlKQorCisgICAgICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKHdyaXRlLmZpbGVubygpKQorCisgICAgICAgICMgQ2xvc2Ugc29ja2V0czogc2VuZCgpIHdpbGwgZmFpbAorICAgICAgICByZWFkLmNsb3NlKCkKKyAgICAgICAgd3JpdGUuY2xvc2UoKQorCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgZXJyOgorICAgICAgICAgICAgX3Rlc3RjYXBpLnJhaXNlX3NpZ25hbChzaWdudW0pCisKKyAgICAgICAgZXJyID0gZXJyLmdldHZhbHVlKCkKKyAgICAgICAgaWYgKCdFeGNlcHRpb24gaWdub3JlZCB3aGVuIHRyeWluZyB0byB7YWN0aW9ufSB0byB0aGUgc2lnbmFsIHdha2V1cCBmZCcKKyAgICAgICAgICAgIG5vdCBpbiBlcnIpOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoZXJyKQorICAgICAgICAiIiIuZm9ybWF0KGFjdGlvbj1hY3Rpb24pCisgICAgICAgIGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKKworCiBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiTm90IHZhbGlkIG9uIFdpbmRvd3MiKQogY2xhc3MgU2lnaW50ZXJydXB0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTQxOCw3ICs2MDQsNyBAQAogICAgICAgICAgICAgciwgdyA9IG9zLnBpcGUoKQogCiAgICAgICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKLSAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgMSAvIDAKIAogICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgaGFuZGxlcikKICAgICAgICAgICAgIGlmIGludGVycnVwdCBpcyBub3QgTm9uZToKQEAgLTQyOCwxOCArNjE0LDIxIEBACiAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKIAogICAgICAgICAgICAgIyBydW4gdGhlIHRlc3QgdHdpY2UKLSAgICAgICAgICAgIGZvciBsb29wIGluIHJhbmdlKDIpOgotICAgICAgICAgICAgICAgICMgc2VuZCBhIFNJR0FMUk0gaW4gYSBzZWNvbmQgKGR1cmluZyB0aGUgcmVhZCkKLSAgICAgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICMgYmxvY2tpbmcgY2FsbDogcmVhZCBmcm9tIGEgcGlwZSB3aXRob3V0IGRhdGEKLSAgICAgICAgICAgICAgICAgICAgb3MucmVhZChyLCAxKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKLSAgICAgICAgICAgICAgICAgICAgaWYgZXJyLmVycm5vICE9IGVycm5vLkVJTlRSOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzeXMuZXhpdCgyKQotICAgICAgICAgICAgc3lzLmV4aXQoMykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmb3IgbG9vcCBpbiByYW5nZSgyKToKKyAgICAgICAgICAgICAgICAgICAgIyBzZW5kIGEgU0lHQUxSTSBpbiBhIHNlY29uZCAoZHVyaW5nIHRoZSByZWFkKQorICAgICAgICAgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgIyBibG9ja2luZyBjYWxsOiByZWFkIGZyb20gYSBwaXBlIHdpdGhvdXQgZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgb3MucmVhZChyLCAxKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzeXMuZXhpdCgyKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDMpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIG9zLmNsb3NlKHIpCisgICAgICAgICAgICAgICAgb3MuY2xvc2UodykKICAgICAgICAgIiIiICUgKGludGVycnVwdCwpCiAgICAgICAgIHdpdGggc3Bhd25fcHl0aG9uKCctYycsIGNvZGUpIGFzIHByb2Nlc3M6CiAgICAgICAgICAgICB0cnk6CkBAIC01MzcsOCArNzI2LDggQEAKICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVlRBTFJNLCBzZWxmLnNpZ192dGFscm0pCiAgICAgICAgIHNpZ25hbC5zZXRpdGltZXIoc2VsZi5pdGltZXIsIDAuMywgMC4yKQogCi0gICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQotICAgICAgICB3aGlsZSB0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUgPCA2MC4wOgorICAgICAgICBzdGFydF90aW1lID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICB3aGlsZSB0aW1lLm1vbm90b25pYygpIC0gc3RhcnRfdGltZSA8IDYwLjA6CiAgICAgICAgICAgICAjIHVzZSB1cCBzb21lIHZpcnR1YWwgdGltZSBieSBkb2luZyByZWFsIHdvcmsKICAgICAgICAgICAgIF8gPSBwb3coMTIzNDUsIDY3ODkwLCAxMDAwMDAxOSkKICAgICAgICAgICAgIGlmIHNpZ25hbC5nZXRpdGltZXIoc2VsZi5pdGltZXIpID09ICgwLjAsIDAuMCk6CkBAIC01NjAsOCArNzQ5LDggQEAKICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHUFJPRiwgc2VsZi5zaWdfcHJvZikKICAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzZWxmLml0aW1lciwgMC4yLCAwLjIpCiAKLSAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgIHdoaWxlIHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSA8IDYwLjA6CisgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgIHdoaWxlIHRpbWUubW9ub3RvbmljKCkgLSBzdGFydF90aW1lIDwgNjAuMDoKICAgICAgICAgICAgICMgZG8gc29tZSB3b3JrCiAgICAgICAgICAgICBfID0gcG93KDEyMzQ1LCA2Nzg5MCwgMTAwMDAwMTkpCiAgICAgICAgICAgICBpZiBzaWduYWwuZ2V0aXRpbWVyKHNlbGYuaXRpbWVyKSA9PSAoMC4wLCAwLjApOgpAQCAtNjA0LDYgKzc5Myw4IEBACiAgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIFtzaWdudW1dKQogICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtKQogICAgICAgICAgICAgcGVuZGluZyA9IHNpZ25hbC5zaWdwZW5kaW5nKCkKKyAgICAgICAgICAgIGZvciBzaWcgaW4gcGVuZGluZzoKKyAgICAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzaWcsIHNpZ25hbC5TaWduYWxzKSwgcmVwcihwZW5kaW5nKQogICAgICAgICAgICAgaWYgcGVuZGluZyAhPSB7c2lnbnVtfToKICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJyVzICE9IHslc30nICUgKHBlbmRpbmcsIHNpZ251bSkpCiAgICAgICAgICAgICB0cnk6CkBAIC02NjAsNiArODUxLDcgQEAKICAgICAgICAgY29kZSA9ICcnJ2lmIDE6CiAgICAgICAgIGltcG9ydCBzaWduYWwKICAgICAgICAgaW1wb3J0IHN5cworICAgICAgICBmcm9tIHNpZ25hbCBpbXBvcnQgU2lnbmFscwogCiAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgogICAgICAgICAgICAgMS8wCkBAIC03MDIsNiArODk0LDcgQEAKICAgICAgICAgZGVmIHRlc3Qoc2lnbnVtKToKICAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQogICAgICAgICAgICAgcmVjZWl2ZWQgPSBzaWduYWwuc2lnd2FpdChbc2lnbnVtXSkKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHJlY2VpdmVkLCBzaWduYWwuU2lnbmFscyksIHJlY2VpdmVkCiAgICAgICAgICAgICBpZiByZWNlaXZlZCAhPSBzaWdudW06CiAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdyZWNlaXZlZCAlcywgbm90ICVzJyAlIChyZWNlaXZlZCwgc2lnbnVtKSkKICAgICAgICAgJycnKQpAQCAtNzU3LDM1ICs5NTAsNiBAQAogICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHQUxSTQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzaWduYWwuc2lndGltZWR3YWl0LCBbc2lnbnVtXSwgLTEuMCkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lnd2FpdGluZm8nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lnd2FpdGluZm8oKScpCi0gICAgIyBJc3N1ZSAjMTgyMzg6IHNpZ3dhaXRpbmZvKCkgY2FuIGJlIGludGVycnVwdGVkIG9uIExpbnV4IChyYWlzZXMKLSAgICAjIEludGVycnVwdGVkRXJyb3IpLCBidXQgbm90IG9uIEFJWAotICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImFpeCIpLAotICAgICAgICAgICAgICAgICAgICAgJ3NpZ25hbC5zaWd3YWl0aW5mbygpIGNhbm5vdCBiZSBpbnRlcnJ1cHRlZCBvbiBBSVgnKQotICAgIGRlZiB0ZXN0X3NpZ3dhaXRpbmZvX2ludGVycnVwdGVkKHNlbGYpOgotICAgICAgICBzZWxmLndhaXRfaGVscGVyKHNpZ25hbC5TSUdVU1IxLCAnJycKLSAgICAgICAgZGVmIHRlc3Qoc2lnbnVtKToKLSAgICAgICAgICAgIGltcG9ydCBlcnJubwotCi0gICAgICAgICAgICBobmRsX2NhbGxlZCA9IFRydWUKLSAgICAgICAgICAgIGRlZiBhbGFybV9oYW5kbGVyKHNpZ251bSwgZnJhbWUpOgotICAgICAgICAgICAgICAgIGhuZGxfY2FsbGVkID0gRmFsc2UKLQotICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgYWxhcm1faGFuZGxlcikKLSAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNpZ25hbC5zaWd3YWl0aW5mbyhbc2lnbmFsLlNJR1VTUjFdKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVJTlRSOgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgaG5kbF9jYWxsZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlNJR0FMUk0gaGFuZGxlciBub3QgY2FsbGVkIikKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkV4cGVjdGVkIEVJTlRSIHRvIGJlIHJhaXNlZCBieSBzaWd3YWl0aW5mbyIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRXhwZWN0ZWQgRUlOVFIgdG8gYmUgcmFpc2VkIGJ5IHNpZ3dhaXRpbmZvIikKLSAgICAgICAgJycnKQotCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd3YWl0JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3dhaXQoKScpCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKSwKQEAgLTg0Miw4ICsxMDA2LDE0IEBACiAgICAgICAgIGRlZiBraWxsKHNpZ251bSk6CiAgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0pCiAKKyAgICAgICAgZGVmIGNoZWNrX21hc2sobWFzayk6CisgICAgICAgICAgICBmb3Igc2lnIGluIG1hc2s6CisgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc2lnLCBzaWduYWwuU2lnbmFscyksIHJlcHIoc2lnKQorCiAgICAgICAgIGRlZiByZWFkX3NpZ21hc2soKToKLSAgICAgICAgICAgIHJldHVybiBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIFtdKQorICAgICAgICAgICAgc2lnbWFzayA9IHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgW10pCisgICAgICAgICAgICBjaGVja19tYXNrKHNpZ21hc2spCisgICAgICAgICAgICByZXR1cm4gc2lnbWFzawogCiAgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdVU1IxCiAKQEAgLTg1Miw2ICsxMDIyLDcgQEAKIAogICAgICAgICAjIFVuYmxvY2sgU0lHVVNSMSAoYW5kIGNvcHkgdGhlIG9sZCBtYXNrKSB0byB0ZXN0IG91ciBzaWduYWwgaGFuZGxlcgogICAgICAgICBvbGRfbWFzayA9IHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19VTkJMT0NLLCBbc2lnbnVtXSkKKyAgICAgICAgY2hlY2tfbWFzayhvbGRfbWFzaykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAga2lsbChzaWdudW0pCiAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKQEAgLTg2MSwxMSArMTAzMiwxMyBAQAogCiAgICAgICAgICMgQmxvY2sgYW5kIHRoZW4gcmFpc2UgU0lHVVNSMS4gVGhlIHNpZ25hbCBpcyBibG9ja2VkOiB0aGUgc2lnbmFsCiAgICAgICAgICMgaGFuZGxlciBpcyBub3QgY2FsbGVkLCBhbmQgdGhlIHNpZ25hbCBpcyBub3cgcGVuZGluZwotICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIFtzaWdudW1dKQorICAgICAgICBtYXNrID0gc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbc2lnbnVtXSkKKyAgICAgICAgY2hlY2tfbWFzayhtYXNrKQogICAgICAgICBraWxsKHNpZ251bSkKIAogICAgICAgICAjIENoZWNrIHRoZSBuZXcgbWFzawogICAgICAgICBibG9ja2VkID0gcmVhZF9zaWdtYXNrKCkKKyAgICAgICAgY2hlY2tfbWFzayhibG9ja2VkKQogICAgICAgICBpZiBzaWdudW0gbm90IGluIGJsb2NrZWQ6CiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzIG5vdCBpbiAlcyIgJSAoc2lnbnVtLCBibG9ja2VkKSkKICAgICAgICAgaWYgb2xkX21hc2sgXiBibG9ja2VkICE9IHtzaWdudW19OgpAQCAtOTI2LDE1ICsxMDk5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4aXRjb2RlLCBzdGRvdXQpKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICB0cnk6Ci0gICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBvc2l4VGVzdHMsIEludGVyUHJvY2Vzc1NpZ25hbFRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXYWtldXBGRFRlc3RzLCBXYWtldXBTaWduYWxUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2lnaW50ZXJydXB0VGVzdCwgSXRpbWVyVGVzdCwgV2luZG93c1NpZ25hbFRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZW5kaW5nU2lnbmFsc1Rlc3RzKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIHN1cHBvcnQucmVhcF9jaGlsZHJlbigpCi0KK2RlZiB0ZWFyRG93bk1vZHVsZSgpOgorICAgIHN1cHBvcnQucmVhcF9jaGlsZHJlbigpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQppbmRleCBmNzFjZjczLi42NjE1MDgwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NpdGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CkBAIC0xNDcsNyArMTQ3LDcgQEAKICAgICAgICAgICAgIHJlLmVzY2FwZShvcy5wYXRoLmpvaW4ocHRoX2RpciwgcHRoX2ZuKSkpCiAgICAgICAgICMgWFhYOiBkaXR0byBwcmV2aW91cyBYWFggY29tbWVudC4KICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnJfb3V0LmdldHZhbHVlKCksICdUcmFjZWJhY2snKQotICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVycl9vdXQuZ2V0dmFsdWUoKSwgJ1R5cGVFcnJvcicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyX291dC5nZXR2YWx1ZSgpLCAnVmFsdWVFcnJvcicpCiAKICAgICBkZWYgdGVzdF9hZGRzaXRlZGlyKHNlbGYpOgogICAgICAgICAjIFNhbWUgdGVzdHMgZm9yIHRlc3RfYWRkcGFja2FnZSBzaW5jZSBhZGRzaXRlZGlyKCkgZXNzZW50aWFsbHkganVzdApAQCAtMjM1LDIwICsyMzUsMTggQEAKICAgICAgICAgICAgICMgT1MgWCBmcmFtZXdvcmsgYnVpbGRzCiAgICAgICAgICAgICBzaXRlLlBSRUZJWEVTID0gWydQeXRob24uZnJhbWV3b3JrJ10KICAgICAgICAgICAgIGRpcnMgPSBzaXRlLmdldHNpdGVwYWNrYWdlcygpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXJzKSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcnMpLCAyKQogICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCcvTGlicmFyeScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJQWVRIT05GUkFNRVdPUksiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMudmVyc2lvbls6M10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdGUtcGFja2FnZXMnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXJzWzJdLCB3YW50ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcnNbMV0sIHdhbnRlZCkKICAgICAgICAgZWxpZiBvcy5zZXAgPT0gJy8nOgogICAgICAgICAgICAgIyBPUyBYIG5vbi1mcmFtd2V3b3JrIGJ1aWxkcywgTGludXgsIEZyZWVCU0QsIGV0YwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlycyksIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXJzKSwgMSkKICAgICAgICAgICAgIHdhbnRlZCA9IG9zLnBhdGguam9pbigneG94bycsICdsaWInLCAncHl0aG9uJyArIHN5cy52ZXJzaW9uWzozXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0ZS1wYWNrYWdlcycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcnNbMF0sIHdhbnRlZCkKLSAgICAgICAgICAgIHdhbnRlZCA9IG9zLnBhdGguam9pbigneG94bycsICdsaWInLCAnc2l0ZS1weXRob24nKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXJzWzFdLCB3YW50ZWQpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIG90aGVyIHBsYXRmb3JtcwogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlycyksIDIpCkBAIC0zNTcsOCArMzU1LDEyIEBACiAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvYy5jb21tdW5pY2F0ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvYy5yZXR1cm5jb2RlLCAwKQogICAgICAgICBvc19fZmlsZV9fLCBvc19fY2FjaGVkX18gPSBzdGRvdXQuc3BsaXRsaW5lcygpWzoyXQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2Ficyhvc19fZmlsZV9fKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNhYnMob3NfX2NhY2hlZF9fKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNhYnMob3NfX2ZpbGVfXyksCisgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYWJzb2x1dGUgcGF0aCwgZ290IHt9IgorICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChvc19fZmlsZV9fLmRlY29kZSgnYXNjaWknKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzYWJzKG9zX19jYWNoZWRfXyksCisgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYWJzb2x1dGUgcGF0aCwgZ290IHt9IgorICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChvc19fY2FjaGVkX18uZGVjb2RlKCdhc2NpaScpKSkKIAogICAgIGRlZiB0ZXN0X25vX2R1cGxpY2F0ZV9wYXRocyhzZWxmKToKICAgICAgICAgIyBObyBkdXBsaWNhdGUgcGF0aHMgc2hvdWxkIGV4aXN0IGluIHN5cy5wYXRoCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NsaWNlLnB5IGIvTGliL3Rlc3QvdGVzdF9zbGljZS5weQppbmRleCAxZWQ3MWY5Li44YzRlNjcwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NsaWNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2xpY2UucHkKQEAgLTEsNyArMSw2IEBACiAjIHRlc3RzIGZvciBzbGljZSBvYmplY3RzOyBpbiBwYXJ0aWN1bGFyIHRoZSBpbmRpY2VzIG1ldGhvZC4KIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gcGlja2xlIGltcG9ydCBsb2FkcywgZHVtcHMKIAogaW1wb3J0IGl0ZXJ0b29scwpAQCAtMjQxLDggKzI0MCw1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuaW5kaWNlcygxNSksIHQuaW5kaWNlcygxNSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKHMpLCBpZCh0KSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFNsaWNlVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zbXRwZC5weSBiL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkKaW5kZXggOTNmMTRjNC4uODhkYmZkZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zbXRwZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5CkBAIC0xLDQgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdGV4dHdyYXAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgbW9ja19zb2NrZXQKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBpbwpAQCAtNywxNCArOCwyMCBAQAogCiAKIGNsYXNzIER1bW15U2VydmVyKHNtdHBkLlNNVFBTZXJ2ZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NhbGFkZHIsIHJlbW90ZWFkZHIpOgotICAgICAgICBzbXRwZC5TTVRQU2VydmVyLl9faW5pdF9fKHNlbGYsIGxvY2FsYWRkciwgcmVtb3RlYWRkcikKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc210cGQuU01UUFNlcnZlci5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYubWVzc2FnZXMgPSBbXQorICAgICAgICBpZiBzZWxmLl9kZWNvZGVfZGF0YToKKyAgICAgICAgICAgIHNlbGYucmV0dXJuX3N0YXR1cyA9ICdyZXR1cm4gc3RhdHVzJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5yZXR1cm5fc3RhdHVzID0gYidyZXR1cm4gc3RhdHVzJwogCi0gICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CisgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSwgKiprdyk6CiAgICAgICAgIHNlbGYubWVzc2FnZXMuYXBwZW5kKChwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSkpCi0gICAgICAgIGlmIGRhdGEgPT0gJ3JldHVybiBzdGF0dXMnOgorICAgICAgICBpZiBkYXRhID09IHNlbGYucmV0dXJuX3N0YXR1czoKICAgICAgICAgICAgIHJldHVybiAnMjUwIE9raXNoJworICAgICAgICBpZiAnbWFpbF9vcHRpb25zJyBpbiBrdyBhbmQgJ1NNVFBVVEY4JyBpbiBrd1snbWFpbF9vcHRpb25zJ106CisgICAgICAgICAgICByZXR1cm4gJzI1MCBTTVRQVVRGOCBtZXNzYWdlIG9raXNoJwogCiAKIGNsYXNzIER1bW15RGlzcGF0Y2hlckJyb2tlbihFeGNlcHRpb24pOgpAQCAtMzEsOSArMzgsMTAgQEAKICAgICAgICAgc210cGQuc29ja2V0ID0gYXN5bmNvcmUuc29ja2V0ID0gbW9ja19zb2NrZXQKIAogICAgIGRlZiB0ZXN0X3Byb2Nlc3NfbWVzc2FnZV91bmltcGxlbWVudGVkKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5TTVRQU2VydmVyKCdhJywgJ2InKQorICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5TTVRQU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1UcnVlKQogICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCi0gICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPVRydWUpCiAKICAgICAgICAgZGVmIHdyaXRlX2xpbmUobGluZSk6CiAgICAgICAgICAgICBjaGFubmVsLnNvY2tldC5xdWV1ZV9yZWN2KGxpbmUpCkBAIC00NSwxOSArNTMsMjUxIEBACiAgICAgICAgIHdyaXRlX2xpbmUoYidEQVRBJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgd3JpdGVfbGluZSwgYidzcGFtXHJcbi5cclxuJykKIAorICAgIGRlZiB0ZXN0X2RlY29kZV9kYXRhX2RlZmF1bHRfd2FybnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc210cGQuU01UUFNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCisKKyAgICBkZWYgdGVzdF9kZWNvZGVfZGF0YV9hbmRfZW5hYmxlX1NNVFBVVEY4X3JhaXNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBWYWx1ZUVycm9yLAorICAgICAgICAgICAgc210cGQuU01UUFNlcnZlciwKKyAgICAgICAgICAgIChzdXBwb3J0LkhPU1QsIDApLAorICAgICAgICAgICAgKCdiJywgMCksCisgICAgICAgICAgICBlbmFibGVfU01UUFVURjg9VHJ1ZSwKKyAgICAgICAgICAgIGRlY29kZV9kYXRhPVRydWUpCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCiAgICAgICAgIGFzeW5jb3JlLnNvY2tldCA9IHNtdHBkLnNvY2tldCA9IHNvY2tldAogCiAKK2NsYXNzIERlYnVnZ2luZ1NlcnZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAorCisgICAgZGVmIHNlbmRfZGF0YShzZWxmLCBjaGFubmVsLCBkYXRhLCBlbmFibGVfU01UUFVURjg9RmFsc2UpOgorICAgICAgICBkZWYgd3JpdGVfbGluZShsaW5lKToKKyAgICAgICAgICAgIGNoYW5uZWwuc29ja2V0LnF1ZXVlX3JlY3YobGluZSkKKyAgICAgICAgICAgIGNoYW5uZWwuaGFuZGxlX3JlYWQoKQorICAgICAgICB3cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgaWYgZW5hYmxlX1NNVFBVVEY4OgorICAgICAgICAgICAgd3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUgQk9EWT04QklUTUlNRSBTTVRQVVRGOCcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCisgICAgICAgIHdyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCisgICAgICAgIHdyaXRlX2xpbmUoYidEQVRBJykKKyAgICAgICAgd3JpdGVfbGluZShkYXRhKQorICAgICAgICB3cml0ZV9saW5lKGInLicpCisKKyAgICBkZWYgdGVzdF9wcm9jZXNzX21lc3NhZ2Vfd2l0aF9kZWNvZGVfZGF0YV90cnVlKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5EZWJ1Z2dpbmdTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9VHJ1ZSkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlcnZlci5hY2NlcHQoKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBkZWNvZGVfZGF0YT1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgICAgIHNlbGYuc2VuZF9kYXRhKGNoYW5uZWwsIGInRnJvbTogdGVzdFxuXG5oZWxsb1xuJykKKyAgICAgICAgc3Rkb3V0ID0gcy5nZXR2YWx1ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgIC0tLS0tLS0tLS0gTUVTU0FHRSBGT0xMT1dTIC0tLS0tLS0tLS0KKyAgICAgICAgICAgICBGcm9tOiB0ZXN0CisgICAgICAgICAgICAgWC1QZWVyOiBwZWVyLWFkZHJlc3MKKworICAgICAgICAgICAgIGhlbGxvCisgICAgICAgICAgICAgLS0tLS0tLS0tLS0tIEVORCBNRVNTQUdFIC0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICIiIikpCisKKyAgICBkZWYgdGVzdF9wcm9jZXNzX21lc3NhZ2Vfd2l0aF9kZWNvZGVfZGF0YV9mYWxzZShzZWxmKToKKyAgICAgICAgc2VydmVyID0gc210cGQuRGVidWdnaW5nU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgICAgIHNlbGYuc2VuZF9kYXRhKGNoYW5uZWwsIGInRnJvbTogdGVzdFxuXG5oXHhjM1x4YTlsbG9ceGZmXG4nKQorICAgICAgICBzdGRvdXQgPSBzLmdldHZhbHVlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsIHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICAgLS0tLS0tLS0tLSBNRVNTQUdFIEZPTExPV1MgLS0tLS0tLS0tLQorICAgICAgICAgICAgIGInRnJvbTogdGVzdCcKKyAgICAgICAgICAgICBiJ1gtUGVlcjogcGVlci1hZGRyZXNzJworICAgICAgICAgICAgIGInJworICAgICAgICAgICAgIGInaFxceGMzXFx4YTlsbG9cXHhmZicKKyAgICAgICAgICAgICAtLS0tLS0tLS0tLS0gRU5EIE1FU1NBR0UgLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIiIiKSkKKworICAgIGRlZiB0ZXN0X3Byb2Nlc3NfbWVzc2FnZV93aXRoX2VuYWJsZV9TTVRQVVRGOF90cnVlKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5EZWJ1Z2dpbmdTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PVRydWUpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZW5hYmxlX1NNVFBVVEY4PVRydWUpCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBzOgorICAgICAgICAgICAgc2VsZi5zZW5kX2RhdGEoY2hhbm5lbCwgYidGcm9tOiB0ZXN0XG5cbmhceGMzXHhhOWxsb1x4ZmZcbicpCisgICAgICAgIHN0ZG91dCA9IHMuZ2V0dmFsdWUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgICAtLS0tLS0tLS0tIE1FU1NBR0UgRk9MTE9XUyAtLS0tLS0tLS0tCisgICAgICAgICAgICAgYidGcm9tOiB0ZXN0JworICAgICAgICAgICAgIGInWC1QZWVyOiBwZWVyLWFkZHJlc3MnCisgICAgICAgICAgICAgYicnCisgICAgICAgICAgICAgYidoXFx4YzNcXHhhOWxsb1xceGZmJworICAgICAgICAgICAgIC0tLS0tLS0tLS0tLSBFTkQgTUVTU0FHRSAtLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAiIiIpKQorCisgICAgZGVmIHRlc3RfcHJvY2Vzc19TTVRQVVRGOF9tZXNzYWdlX3dpdGhfZW5hYmxlX1NNVFBVVEY4X3RydWUoc2VsZik6CisgICAgICAgIHNlcnZlciA9IHNtdHBkLkRlYnVnZ2luZ1NlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVfU01UUFVURjg9VHJ1ZSkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlcnZlci5hY2NlcHQoKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBlbmFibGVfU01UUFVURjg9VHJ1ZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIHM6CisgICAgICAgICAgICBzZWxmLnNlbmRfZGF0YShjaGFubmVsLCBiJ0Zyb206IHRlc3RcblxuaFx4YzNceGE5bGxvXHhmZlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9TTVRQVVRGOD1UcnVlKQorICAgICAgICBzdGRvdXQgPSBzLmdldHZhbHVlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsIHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICAgLS0tLS0tLS0tLSBNRVNTQUdFIEZPTExPV1MgLS0tLS0tLS0tLQorICAgICAgICAgICAgIG1haWwgb3B0aW9uczogWydCT0RZPThCSVRNSU1FJywgJ1NNVFBVVEY4J10KKyAgICAgICAgICAgICBiJ0Zyb206IHRlc3QnCisgICAgICAgICAgICAgYidYLVBlZXI6IHBlZXItYWRkcmVzcycKKyAgICAgICAgICAgICBiJycKKyAgICAgICAgICAgICBiJ2hcXHhjM1xceGE5bGxvXFx4ZmYnCisgICAgICAgICAgICAgLS0tLS0tLS0tLS0tIEVORCBNRVNTQUdFIC0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICIiIikpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCisgICAgICAgIGFzeW5jb3JlLnNvY2tldCA9IHNtdHBkLnNvY2tldCA9IHNvY2tldAorCisKK2NsYXNzIFRlc3RGYW1pbHlEZXRlY3Rpb24odW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc210cGQuc29ja2V0ID0gYXN5bmNvcmUuc29ja2V0ID0gbW9ja19zb2NrZXQKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKKyAgICAgICAgYXN5bmNvcmUuc29ja2V0ID0gc210cGQuc29ja2V0ID0gc29ja2V0CisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgIklQdjYgbm90IGVuYWJsZWQiKQorICAgIGRlZiB0ZXN0X3NvY2tldF91c2VzX0lQdjYoc2VsZik6CisgICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVHY2LCAwKSwgKHN1cHBvcnQuSE9TVCwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNvY2tldC5mYW1pbHksIHNvY2tldC5BRl9JTkVUNikKKworICAgIGRlZiB0ZXN0X3NvY2tldF91c2VzX0lQdjQoc2VsZik6CisgICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksIChzdXBwb3J0LkhPU1R2NiwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNvY2tldC5mYW1pbHksIHNvY2tldC5BRl9JTkVUKQorCisKK2NsYXNzIFRlc3RSY3B0T3B0aW9uUGFyc2luZyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZXJyb3JfcmVzcG9uc2UgPSAoYic1NTUgUkNQVCBUTyBwYXJhbWV0ZXJzIG5vdCByZWNvZ25pemVkIG9yIG5vdCAnCisgICAgICAgICAgICAgICAgICAgICAgYidpbXBsZW1lbnRlZFxyXG4nKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAorICAgICAgICBzZWxmLm9sZF9kZWJ1Z3N0cmVhbSA9IHNtdHBkLkRFQlVHU1RSRUFNCisgICAgICAgIHNlbGYuZGVidWcgPSBzbXRwZC5ERUJVR1NUUkVBTSA9IGlvLlN0cmluZ0lPKCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKKyAgICAgICAgYXN5bmNvcmUuc29ja2V0ID0gc210cGQuc29ja2V0ID0gc29ja2V0CisgICAgICAgIHNtdHBkLkRFQlVHU1RSRUFNID0gc2VsZi5vbGRfZGVidWdzdHJlYW0KKworICAgIGRlZiB3cml0ZV9saW5lKHNlbGYsIGNoYW5uZWwsIGxpbmUpOgorICAgICAgICBjaGFubmVsLnNvY2tldC5xdWV1ZV9yZWN2KGxpbmUpCisgICAgICAgIGNoYW5uZWwuaGFuZGxlX3JlYWQoKQorCisgICAgZGVmIHRlc3RfcGFyYW1zX3JlamVjdGVkKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidSQ1BUIHRvOiA8Zm9vQGV4YW1wbGUuY29tPiBmb289YmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFubmVsLnNvY2tldC5sYXN0LCBzZWxmLmVycm9yX3Jlc3BvbnNlKQorCisgICAgZGVmIHRlc3Rfbm90aGluZ19hY2NlcHRlZChzZWxmKToKKyAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlcnZlci5hY2NlcHQoKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInUkNQVCB0bzogPGZvb0BleGFtcGxlLmNvbT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKworY2xhc3MgVGVzdE1haWxPcHRpb25QYXJzaW5nKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBlcnJvcl9yZXNwb25zZSA9IChiJzU1NSBNQUlMIEZST00gcGFyYW1ldGVycyBub3QgcmVjb2duaXplZCBvciBub3QgJworICAgICAgICAgICAgICAgICAgICAgIGInaW1wbGVtZW50ZWRcclxuJykKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc210cGQuc29ja2V0ID0gYXN5bmNvcmUuc29ja2V0ID0gbW9ja19zb2NrZXQKKyAgICAgICAgc2VsZi5vbGRfZGVidWdzdHJlYW0gPSBzbXRwZC5ERUJVR1NUUkVBTQorICAgICAgICBzZWxmLmRlYnVnID0gc210cGQuREVCVUdTVFJFQU0gPSBpby5TdHJpbmdJTygpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCisgICAgICAgIGFzeW5jb3JlLnNvY2tldCA9IHNtdHBkLnNvY2tldCA9IHNvY2tldAorICAgICAgICBzbXRwZC5ERUJVR1NUUkVBTSA9IHNlbGYub2xkX2RlYnVnc3RyZWFtCisKKyAgICBkZWYgd3JpdGVfbGluZShzZWxmLCBjaGFubmVsLCBsaW5lKToKKyAgICAgICAgY2hhbm5lbC5zb2NrZXQucXVldWVfcmVjdihsaW5lKQorICAgICAgICBjaGFubmVsLmhhbmRsZV9yZWFkKCkKKworICAgIGRlZiB0ZXN0X3dpdGhfZGVjb2RlX2RhdGFfdHJ1ZShzZWxmKToKKyAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLCBkZWNvZGVfZGF0YT1UcnVlKQorICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPVRydWUpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIGZvciBsaW5lIGluIFsKKyAgICAgICAgICAgIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwIFNNVFBVVEY4JywKKyAgICAgICAgICAgIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwIFNNVFBVVEY4IEJPRFk9OEJJVE1JTUUnLAorICAgICAgICAgICAgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAgQk9EWT1VTktOT1dOJywKKyAgICAgICAgICAgIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwIGJvZHk9OGJpdG1pbWUnLAorICAgICAgICBdOgorICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGxpbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5uZWwuc29ja2V0Lmxhc3QsIHNlbGYuZXJyb3JfcmVzcG9uc2UpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworICAgIGRlZiB0ZXN0X3dpdGhfZGVjb2RlX2RhdGFfZmFsc2Uoc2VsZik6CisgICAgICAgIHNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIGZvciBsaW5lIGluIFsKKyAgICAgICAgICAgIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwIFNNVFBVVEY4JywKKyAgICAgICAgICAgIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwIFNNVFBVVEY4IEJPRFk9OEJJVE1JTUUnLAorICAgICAgICBdOgorICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGxpbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5uZWwuc29ja2V0Lmxhc3QsIHNlbGYuZXJyb3JfcmVzcG9uc2UpCisgICAgICAgIHNlbGYud3JpdGVfbGluZSgKKyAgICAgICAgICAgIGNoYW5uZWwsCisgICAgICAgICAgICBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCBTTVRQVVRGOCBCT0RZPVVOS05PV04nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgIGInNTAxIEVycm9yOiBCT0RZIGNhbiBvbmx5IGJlIG9uZSBvZiA3QklULCA4QklUTUlNRVxyXG4nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoCisgICAgICAgICAgICBjaGFubmVsLCBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCBib2R5PThiaXRtaW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCisgICAgZGVmIHRlc3Rfd2l0aF9lbmFibGVfc210cHV0ZjhfdHJ1ZShzZWxmKToKKyAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLCBlbmFibGVfU01UUFVURjg9VHJ1ZSkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlcnZlci5hY2NlcHQoKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBlbmFibGVfU01UUFVURjg9VHJ1ZSkKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKAorICAgICAgICAgICAgY2hhbm5lbCwKKyAgICAgICAgICAgIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwIGJvZHk9OGJpdG1pbWUgc210cHV0ZjgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKwogY2xhc3MgU01UUERDaGFubmVsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAogICAgICAgICBzZWxmLm9sZF9kZWJ1Z3N0cmVhbSA9IHNtdHBkLkRFQlVHU1RSRUFNCiAgICAgICAgIHNlbGYuZGVidWcgPSBzbXRwZC5ERUJVR1NUUkVBTSA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVNlcnZlcignYScsICdiJykKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9VHJ1ZSkKICAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuc2VydmVyLmFjY2VwdCgpCi0gICAgICAgIHNlbGYuY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlbGYuc2VydmVyLCBjb25uLCBhZGRyKQorICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9VHJ1ZSkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKQEAgLTY5LDcgKzMwOSwxNSBAQAogICAgICAgICBzZWxmLmNoYW5uZWwuaGFuZGxlX3JlYWQoKQogCiAgICAgZGVmIHRlc3RfYnJva2VuX2Nvbm5lY3Qoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKER1bW15RGlzcGF0Y2hlckJyb2tlbiwgQnJva2VuRHVtbXlTZXJ2ZXIsICdhJywgJ2InKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIER1bW15RGlzcGF0Y2hlckJyb2tlbiwgQnJva2VuRHVtbXlTZXJ2ZXIsCisgICAgICAgICAgICAoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPVRydWUpCisKKyAgICBkZWYgdGVzdF9kZWNvZGVfZGF0YV9hbmRfZW5hYmxlX1NNVFBVVEY4X3JhaXNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBWYWx1ZUVycm9yLCBzbXRwZC5TTVRQQ2hhbm5lbCwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLCBzZWxmLmNoYW5uZWwuY29ubiwgc2VsZi5jaGFubmVsLmFkZHIsCisgICAgICAgICAgICBlbmFibGVfU01UUFVURjg9VHJ1ZSwgZGVjb2RlX2RhdGE9VHJ1ZSkKIAogICAgIGRlZiB0ZXN0X3NlcnZlcl9hY2NlcHQoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydmVyLmhhbmRsZV9hY2NlcHQoKQpAQCAtMjE0LDYgKzQ2MiwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMCBFcnJvcjogbGluZSB0b28gbG9uZ1xyXG4nKQogCisgICAgZGVmIHRlc3RfTUFJTF9jb21tYW5kX3JlamVjdHNfU01UUFVURjhfYnlfZGVmYXVsdChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKAorICAgICAgICAgICAgYidNQUlMIGZyb206IDxuYWl2ZUBleGFtcGxlLmNvbT4gQk9EWT04QklUTUlNRSBTTVRQVVRGOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6MV0sIGInNScpCisKICAgICBkZWYgdGVzdF9kYXRhX2xvbmdlcl90aGFuX2RlZmF1bHRfZGF0YV9zaXplX2xpbWl0KHNlbGYpOgogICAgICAgICAjIEhhY2sgdGhlIGRlZmF1bHQgc28gd2UgZG9uJ3QgaGF2ZSB0byBnZW5lcmF0ZSBzbyBtdWNoIGRhdGEuCiAgICAgICAgIHNlbGYuY2hhbm5lbC5kYXRhX3NpemVfbGltaXQgPSAxMDQ4CkBAIC0zODcsNyArNjQxLDEwIEBACiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ2RhdGFcclxubW9yZVxyXG4uJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2ZXIubWVzc2FnZXMsCi0gICAgICAgICAgICBbKCdwZWVyJywgJ2VnZ3NAZXhhbXBsZScsIFsnc3BhbUBleGFtcGxlJ10sICdkYXRhXG5tb3JlJyldKQorICAgICAgICAgICAgWygoJ3BlZXItYWRkcmVzcycsICdwZWVyLXBvcnQnKSwKKyAgICAgICAgICAgICAgJ2VnZ3NAZXhhbXBsZScsCisgICAgICAgICAgICAgIFsnc3BhbUBleGFtcGxlJ10sCisgICAgICAgICAgICAgICdkYXRhXG5tb3JlJyldKQogCiAgICAgZGVmIHRlc3RfREFUQV9zeW50YXgoc2VsZik6CiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCkBAIC00MTcsNyArNjc0LDEwIEBACiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidkYXRhXHJcbi4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLm1lc3NhZ2VzLAotICAgICAgICAgICAgWygncGVlcicsICdlZ2dzQGV4YW1wbGUnLCBbJ3NwYW1AZXhhbXBsZScsJ2hhbUBleGFtcGxlJ10sICdkYXRhJyldKQorICAgICAgICAgICAgWygoJ3BlZXItYWRkcmVzcycsICdwZWVyLXBvcnQnKSwKKyAgICAgICAgICAgICAgJ2VnZ3NAZXhhbXBsZScsCisgICAgICAgICAgICAgIFsnc3BhbUBleGFtcGxlJywnaGFtQGV4YW1wbGUnXSwKKyAgICAgICAgICAgICAgJ2RhdGEnKV0pCiAKICAgICBkZWYgdGVzdF9tYW51YWxfc3RhdHVzKHNlbGYpOgogICAgICAgICAjIGNoZWNrcyB0aGF0IHRoZSBDaGFubmVsIGlzIGFibGUgdG8gcmV0dXJuIGEgY3VzdG9tIHN0YXR1cyBtZXNzYWdlCkBAIC00MzksNyArNjk5LDEwIEBACiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidkYXRhXHJcbi4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLm1lc3NhZ2VzLAotICAgICAgICAgICAgWygncGVlcicsICdmb29AZXhhbXBsZScsIFsnZWdnc0BleGFtcGxlJ10sICdkYXRhJyldKQorICAgICAgICAgICAgWygoJ3BlZXItYWRkcmVzcycsICdwZWVyLXBvcnQnKSwKKyAgICAgICAgICAgICAgICdmb29AZXhhbXBsZScsCisgICAgICAgICAgICAgICBbJ2VnZ3NAZXhhbXBsZSddLAorICAgICAgICAgICAgICAgJ2RhdGEnKV0pCiAKICAgICBkZWYgdGVzdF9IRUxPX1JTRVQoc2VsZik6CiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCkBAIC01MDIsNiArNzY1LDI0IEBACiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fYWRkciA9ICdzcGFtJwogCisgICAgZGVmIHRlc3RfZGVjb2RlX2RhdGFfZGVmYXVsdF93YXJuaW5nKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuc2VydmVyLmFjY2VwdCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyKQorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgIklQdjYgbm90IGVuYWJsZWQiKQorY2xhc3MgU01UUERDaGFubmVsSVB2NlRlc3QoU01UUERDaGFubmVsVGVzdCk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAorICAgICAgICBzZWxmLm9sZF9kZWJ1Z3N0cmVhbSA9IHNtdHBkLkRFQlVHU1RSRUFNCisgICAgICAgIHNlbGYuZGVidWcgPSBzbXRwZC5ERUJVR1NUUkVBTSA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NUdjYsIDApLCAoJ2InLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1UcnVlKQorICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgc2VsZi5jaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VsZi5zZXJ2ZXIsIGNvbm4sIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPVRydWUpCiAKIGNsYXNzIFNNVFBEQ2hhbm5lbFdpdGhEYXRhU2l6ZUxpbWl0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTUwOSwxMCArNzkwLDEyIEBACiAgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CiAgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KICAgICAgICAgc2VsZi5kZWJ1ZyA9IHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQotICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKCdhJywgJ2InKQorICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1UcnVlKQogICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2ZXIuYWNjZXB0KCkKICAgICAgICAgIyBTZXQgREFUQSBzaXplIGxpbWl0IHRvIDMyIGJ5dGVzIGZvciBlYXN5IHRlc3RpbmcKLSAgICAgICAgc2VsZi5jaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VsZi5zZXJ2ZXIsIGNvbm4sIGFkZHIsIDMyKQorICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkciwgMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPVRydWUpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCkBAIC01MzYsNyArODE5LDEwIEBACiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ2RhdGFcclxubW9yZVxyXG4uJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2ZXIubWVzc2FnZXMsCi0gICAgICAgICAgICBbKCdwZWVyJywgJ2VnZ3NAZXhhbXBsZScsIFsnc3BhbUBleGFtcGxlJ10sICdkYXRhXG5tb3JlJyldKQorICAgICAgICAgICAgWygoJ3BlZXItYWRkcmVzcycsICdwZWVyLXBvcnQnKSwKKyAgICAgICAgICAgICAgJ2VnZ3NAZXhhbXBsZScsCisgICAgICAgICAgICAgIFsnc3BhbUBleGFtcGxlJ10sCisgICAgICAgICAgICAgICdkYXRhXG5tb3JlJyldKQogCiAgICAgZGVmIHRlc3RfZGF0YV9saW1pdF9kaWFsb2dfdG9vX211Y2hfZGF0YShzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKQEAgLTU1Myw1ICs4MzksMTgxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgYic1NTIgRXJyb3I6IFRvbyBtdWNoIG1haWwgZGF0YVxyXG4nKQogCiAKK2NsYXNzIFNNVFBEQ2hhbm5lbFdpdGhEZWNvZGVEYXRhRmFsc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAorICAgICAgICBzZWxmLm9sZF9kZWJ1Z3N0cmVhbSA9IHNtdHBkLkRFQlVHU1RSRUFNCisgICAgICAgIHNlbGYuZGVidWcgPSBzbXRwZC5ERUJVR1NUUkVBTSA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnZlci5hY2NlcHQoKQorICAgICAgICAjIFNldCBkZWNvZGVfZGF0YSB0byBGYWxzZQorICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkciwKKyAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKKyAgICAgICAgYXN5bmNvcmUuc29ja2V0ID0gc210cGQuc29ja2V0ID0gc29ja2V0CisgICAgICAgIHNtdHBkLkRFQlVHU1RSRUFNID0gc2VsZi5vbGRfZGVidWdzdHJlYW0KKworICAgIGRlZiB3cml0ZV9saW5lKHNlbGYsIGxpbmUpOgorICAgICAgICBzZWxmLmNoYW5uZWwuc29ja2V0LnF1ZXVlX3JlY3YobGluZSkKKyAgICAgICAgc2VsZi5jaGFubmVsLmhhbmRsZV9yZWFkKCkKKworICAgIGRlZiB0ZXN0X2FzY2lpX2RhdGEoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidwbGFpbiBhc2NpaSB0ZXh0JykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnJlY2VpdmVkX2RhdGEsIGIncGxhaW4gYXNjaWkgdGV4dCcpCisKKyAgICBkZWYgdGVzdF91dGY4X2RhdGEoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYid1dGY4IGVucmljaGVkIHRleHQ6IFx4YzVceGJjXHhjNVx4YmFceGM0XHg4NycpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ2FuZCBzb21lIHBsYWluIGFzY2lpJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLmNoYW5uZWwucmVjZWl2ZWRfZGF0YSwKKyAgICAgICAgICAgIGIndXRmOCBlbnJpY2hlZCB0ZXh0OiBceGM1XHhiY1x4YzVceGJhXHhjNFx4ODdcbicKKyAgICAgICAgICAgICAgICBiJ2FuZCBzb21lIHBsYWluIGFzY2lpJykKKworCitjbGFzcyBTTVRQRENoYW5uZWxXaXRoRGVjb2RlRGF0YVRydWUodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAorICAgICAgICBzZWxmLm9sZF9kZWJ1Z3N0cmVhbSA9IHNtdHBkLkRFQlVHU1RSRUFNCisgICAgICAgIHNlbGYuZGVidWcgPSBzbXRwZC5ERUJVR1NUUkVBTSA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9VHJ1ZSkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuc2VydmVyLmFjY2VwdCgpCisgICAgICAgICMgU2V0IGRlY29kZV9kYXRhIHRvIFRydWUKKyAgICAgICAgc2VsZi5jaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VsZi5zZXJ2ZXIsIGNvbm4sIGFkZHIsCisgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9VHJ1ZSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKKyAgICAgICAgYXN5bmNvcmUuc29ja2V0ID0gc210cGQuc29ja2V0ID0gc29ja2V0CisgICAgICAgIHNtdHBkLkRFQlVHU1RSRUFNID0gc2VsZi5vbGRfZGVidWdzdHJlYW0KKworICAgIGRlZiB3cml0ZV9saW5lKHNlbGYsIGxpbmUpOgorICAgICAgICBzZWxmLmNoYW5uZWwuc29ja2V0LnF1ZXVlX3JlY3YobGluZSkKKyAgICAgICAgc2VsZi5jaGFubmVsLmhhbmRsZV9yZWFkKCkKKworICAgIGRlZiB0ZXN0X2FzY2lpX2RhdGEoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidwbGFpbiBhc2NpaSB0ZXh0JykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnJlY2VpdmVkX2RhdGEsICdwbGFpbiBhc2NpaSB0ZXh0JykKKworICAgIGRlZiB0ZXN0X3V0ZjhfZGF0YShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ3V0ZjggZW5yaWNoZWQgdGV4dDogXHhjNVx4YmNceGM1XHhiYVx4YzRceDg3JykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInYW5kIHNvbWUgcGxhaW4gYXNjaWknKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYicuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5yZWNlaXZlZF9kYXRhLAorICAgICAgICAgICAgJ3V0ZjggZW5yaWNoZWQgdGV4dDogxbzFusSHXG5hbmQgc29tZSBwbGFpbiBhc2NpaScpCisKKworY2xhc3MgU01UUERDaGFubmVsVGVzdFdpdGhFbmFibGVTTVRQVVRGOFRydWUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc210cGQuc29ja2V0ID0gYXN5bmNvcmUuc29ja2V0ID0gbW9ja19zb2NrZXQKKyAgICAgICAgc2VsZi5vbGRfZGVidWdzdHJlYW0gPSBzbXRwZC5ERUJVR1NUUkVBTQorICAgICAgICBzZWxmLmRlYnVnID0gc210cGQuREVCVUdTVFJFQU0gPSBpby5TdHJpbmdJTygpCisgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9TTVRQVVRGOD1UcnVlKQorICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgc2VsZi5jaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VsZi5zZXJ2ZXIsIGNvbm4sIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9TTVRQVVRGOD1UcnVlKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQorICAgICAgICBhc3luY29yZS5zb2NrZXQgPSBzbXRwZC5zb2NrZXQgPSBzb2NrZXQKKyAgICAgICAgc210cGQuREVCVUdTVFJFQU0gPSBzZWxmLm9sZF9kZWJ1Z3N0cmVhbQorCisgICAgZGVmIHdyaXRlX2xpbmUoc2VsZiwgbGluZSk6CisgICAgICAgIHNlbGYuY2hhbm5lbC5zb2NrZXQucXVldWVfcmVjdihsaW5lKQorICAgICAgICBzZWxmLmNoYW5uZWwuaGFuZGxlX3JlYWQoKQorCisgICAgZGVmIHRlc3RfTUFJTF9jb21tYW5kX2FjY2VwdHNfU01UUFVURjhfd2hlbl9hbm5vdW5jZWQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZSgKKyAgICAgICAgICAgICdNQUlMIGZyb206IDxuYWnMiHZlQGV4YW1wbGUuY29tPiBCT0RZPThCSVRNSU1FIFNNVFBVVEY4Jy5lbmNvZGUoCisgICAgICAgICAgICAgICAgJ3V0Zi04JykKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworICAgIGRlZiB0ZXN0X3Byb2Nlc3Nfc210cHV0ZjhfbWVzc2FnZShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgZm9yIG1haWxfcGFyYW1ldGVycyBpbiBbYicnLCBiJ0JPRFk9OEJJVE1JTUUgU01UUFVURjgnXToKKyAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTogPGFAZXhhbXBsZT4gJyArIG1haWxfcGFyYW1ldGVycykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInMjUwJykKKyAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ3JjcHQgdG86PGJAZXhhbXBsZS5jb20+JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInMjUwJykKKyAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ2RhdGEnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3RbMDozXSwgYiczNTQnKQorICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInY1xyXG4uJykKKyAgICAgICAgICAgIGlmIG1haWxfcGFyYW1ldGVycyA9PSBiJyc6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYicyNTAgU01UUFVURjggbWVzc2FnZSBva2lzaFxyXG4nKQorCisgICAgZGVmIHRlc3RfdXRmOF9kYXRhKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoCisgICAgICAgICAgICAnTUFJTCBGcm9tOiBuYWnMiHZlQGV4YW1wbMOpIEJPRFk9OEJJVE1JTUUgU01UUFVURjgnLmVuY29kZSgndXRmLTgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3RbMDozXSwgYicyNTAnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoJ1JDUFQgVG86c3DDpG1AZXhhbXBsw6knLmVuY29kZSgndXRmLTgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3RbMDozXSwgYicyNTAnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3RbMDozXSwgYiczNTQnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYid1dGY4IGVucmljaGVkIHRleHQ6IFx4YzVceGJjXHhjNVx4YmFceGM0XHg4NycpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJy4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5jaGFubmVsLnJlY2VpdmVkX2RhdGEsCisgICAgICAgICAgICBiJ3V0ZjggZW5yaWNoZWQgdGV4dDogXHhjNVx4YmNceGM1XHhiYVx4YzRceDg3JykKKworICAgIGRlZiB0ZXN0X01BSUxfY29tbWFuZF9saW1pdF9leHRlbmRlZF93aXRoX1NJWkVfYW5kX1NNVFBVVEY4KHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidlaGxvIGV4YW1wbGUnKQorICAgICAgICBmaWxsX2xlbiA9ICg1MTIgKyAyNiArIDEwKSAtIGxlbignbWFpbCBmcm9tOjxAZXhhbXBsZT4nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206PCcgKworICAgICAgICAgICAgICAgICAgICAgICAgYidhJyAqIChmaWxsX2xlbiArIDEpICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGInQGV4YW1wbGU+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDAgRXJyb3I6IGxpbmUgdG9vIGxvbmdcclxuJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOjwnICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGInYScgKiBmaWxsX2xlbiArCisgICAgICAgICAgICAgICAgICAgICAgICBiJ0BleGFtcGxlPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfZW1haWxzX3dpdGhfZXh0ZW5kZWRfY29tbWFuZF9sZW5ndGgoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ2VobG8gZXhhbXBsZScpCisgICAgICAgIGZpbGxfbGVuID0gKDUxMiArIDI2ICsgMTApIC0gbGVuKCdtYWlsIGZyb206PEBleGFtcGxlPicpCisgICAgICAgIGZvciBjaGFyIGluIFtiJ2EnLCBiJ2InLCBiJ2MnXToKKyAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTo8JyArIGNoYXIgKiBmaWxsX2xlbiArIGInYUBleGFtcGxlPicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdFswOjNdLCBiJzUwMCcpCisgICAgICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206PCcgKyBjaGFyICogZmlsbF9sZW4gKyBiJ0BleGFtcGxlPicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdFswOjNdLCBiJzI1MCcpCisgICAgICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidyY3B0IHRvOjxoYW5zQGV4YW1wbGUuY29tPicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdFswOjNdLCBiJzI1MCcpCisgICAgICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidkYXRhJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInMzU0JykKKyAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ3Rlc3RcclxuLicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdFswOjNdLCBiJzI1MCcpCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NtdHBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3NtdHBsaWIucHkKaW5kZXggOTVhOWRiZS4uMjg1MzlmMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zbXRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc210cGxpYi5weQpAQCAtMSw2ICsxLDEwIEBACiBpbXBvcnQgYXN5bmNvcmUKK2ltcG9ydCBiYXNlNjQKIGltcG9ydCBlbWFpbC5taW1lLnRleHQKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCitmcm9tIGVtYWlsLmJhc2U2NG1pbWUgaW1wb3J0IGJvZHlfZW5jb2RlIGFzIGVuY29kZV9iYXNlNjQKIGltcG9ydCBlbWFpbC51dGlscworaW1wb3J0IGhtYWMKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzbXRwZAogaW1wb3J0IHNtdHBsaWIKQEAgLTEwLDYgKzE0LDcgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgZXJybm8KK2ltcG9ydCB0ZXh0d3JhcAogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgbW9ja19zb2NrZXQKQEAgLTMwLDcgKzM1LDcgQEAKIAogCiBkZWYgc2VydmVyKGV2dCwgYnVmLCBzZXJ2KToKLSAgICBzZXJ2Lmxpc3Rlbig1KQorICAgIHNlcnYubGlzdGVuKCkKICAgICBldnQuc2V0KCkKICAgICB0cnk6CiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2LmFjY2VwdCgpCkBAIC0xMjMsNiArMTI4LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5zb2NrLmdldHRpbWVvdXQoKSwgMzApCiAgICAgICAgIHNtdHAuY2xvc2UoKQogCisgICAgZGVmIHRlc3RfZGVidWdsZXZlbChzZWxmKToKKyAgICAgICAgbW9ja19zb2NrZXQucmVwbHlfd2l0aChiIjIyMCBIZWxsbyB3b3JsZCIpCisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoKQorICAgICAgICBzbXRwLnNldF9kZWJ1Z2xldmVsKDEpCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICBzbXRwLmNvbm5lY3QoSE9TVCwgc2VsZi5wb3J0KQorICAgICAgICBzbXRwLmNsb3NlKCkKKyAgICAgICAgZXhwZWN0ZWQgPSByZS5jb21waWxlKHIiXmNvbm5lY3Q6IiwgcmUuTVVMVElMSU5FKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0ZGVyci5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2RlYnVnbGV2ZWxfMihzZWxmKToKKyAgICAgICAgbW9ja19zb2NrZXQucmVwbHlfd2l0aChiIjIyMCBIZWxsbyB3b3JsZCIpCisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoKQorICAgICAgICBzbXRwLnNldF9kZWJ1Z2xldmVsKDIpCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICBzbXRwLmNvbm5lY3QoSE9TVCwgc2VsZi5wb3J0KQorICAgICAgICBzbXRwLmNsb3NlKCkKKyAgICAgICAgZXhwZWN0ZWQgPSByZS5jb21waWxlKHIiXlxkezJ9OlxkezJ9OlxkezJ9XC5cZHs2fSBjb25uZWN0OiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmUuTVVMVElMSU5FKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0ZGVyci5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKwogCiAjIFRlc3Qgc2VydmVyIHRocmVhZCB1c2luZyB0aGUgc3BlY2lmaWVkIFNNVFAgc2VydmVyIGNsYXNzCiBkZWYgZGVidWdnaW5nX3NlcnZlcihzZXJ2LCBzZXJ2X2V2dCwgY2xpZW50X2V2dCk6CkBAIC0xODQsNyArMjEwLDggQEAKICAgICAgICAgc2VsZi5vbGRfREVCVUdTVFJFQU0gPSBzbXRwZC5ERUJVR1NUUkVBTQogICAgICAgICBzbXRwZC5ERUJVR1NUUkVBTSA9IGlvLlN0cmluZ0lPKCkKICAgICAgICAgIyBQaWNrIGEgcmFuZG9tIHVudXNlZCBwb3J0IGJ5IHBhc3NpbmcgMCBmb3IgdGhlIHBvcnQgbnVtYmVyCi0gICAgICAgIHNlbGYuc2VydiA9IHNtdHBkLkRlYnVnZ2luZ1NlcnZlcigoSE9TVCwgMCksICgnbm93aGVyZScsIC0xKSkKKyAgICAgICAgc2VsZi5zZXJ2ID0gc210cGQuRGVidWdnaW5nU2VydmVyKChIT1NULCAwKSwgKCdub3doZXJlJywgLTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9VHJ1ZSkKICAgICAgICAgIyBLZWVwIGEgbm90ZSBvZiB3aGF0IHBvcnQgd2FzIGFzc2lnbmVkCiAgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc2Vydi5zb2NrZXQuZ2V0c29ja25hbWUoKVsxXQogICAgICAgICBzZXJ2X2FyZ3MgPSAoc2VsZi5zZXJ2LCBzZWxmLnNlcnZfZXZ0LCBzZWxmLmNsaWVudF9ldnQpCkBAIC01OTgsMTkgKzYyNSwxMiBAQAogc2ltX2F1dGggPSAoJ01yLkFAc29tZXdoZXJlLmNvbScsICdzb21lcGFzc3dvcmQnKQogc2ltX2NyYW1fbWQ1X2NoYWxsZW5nZSA9ICgnUEVOQ2VVeEZSRUpvVTBObmJtaE5XaXRPTWpOR05uJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnZEFaV3gzYjI5a0xtbHVibTl6YjJaMExtTnZiVDQ9JykKLXNpbV9hdXRoX2NyZWRlbnRpYWxzID0gewotICAgICdsb2dpbic6ICdUWEl1UVVCemIyMWxkMmhsY21VdVkyOXQnLAotICAgICdwbGFpbic6ICdBRTF5TGtGQWMyOXRaWGRvWlhKbExtTnZiUUJ6YjIxbGNHRnpjM2R2Y21RPScsCi0gICAgJ2NyYW0tbWQ1JzogKCdUWElVUVVCWkIyMUxEMkhMQ01VVVkyOVRJREc0T1dRME1KJwotICAgICAgICAgICAgICAgICAnS1daR1E0T0ROTU5EQTROVEdYTURSTFpXTVlaSkRNT0RHMScpLAotICAgIH0KLXNpbV9hdXRoX2xvZ2luX3Bhc3N3b3JkID0gJ0MyOVRaWEJIQzNOM0IzSksnCi0KIHNpbV9saXN0cyA9IHsnbGlzdC0xJzpbJ01yLkFAc29tZXdoZXJlLmNvbScsJ01ycy5DQHNvbWV3aGVyZWVzbGUuY29tJ10sCiAgICAgICAgICAgICAgJ2xpc3QtMic6WydNcy5CQHhuLS1mby1ma2EuY29tJyxdLAogICAgICAgICAgICAgfQogCiAjIFNpbXVsYXRlZCBTTVRQIGNoYW5uZWwgJiBzZXJ2ZXIKK2NsYXNzIFJlc3BvbnNlRXhjZXB0aW9uKEV4Y2VwdGlvbik6IHBhc3MKIGNsYXNzIFNpbVNNVFBDaGFubmVsKHNtdHBkLlNNVFBDaGFubmVsKToKIAogICAgIHF1aXRfcmVzcG9uc2UgPSBOb25lCkBAIC02MjAsMTIgKzY0MCwxMDkgQEAKICAgICByY3B0X2NvdW50ID0gMAogICAgIHJzZXRfY291bnQgPSAwCiAgICAgZGlzY29ubmVjdCA9IDAKKyAgICBBVVRIID0gOTkgICAgIyBBZGQgcHJvdG9jb2wgc3RhdGUgdG8gZW5hYmxlIGF1dGggdGVzdGluZy4KKyAgICBhdXRoZW50aWNhdGVkX3VzZXIgPSBOb25lCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZXh0cmFfZmVhdHVyZXMsICphcmdzLCAqKmt3KToKICAgICAgICAgc2VsZi5fZXh0cmFmZWF0dXJlcyA9ICcnLmpvaW4oCiAgICAgICAgICAgICBbICIyNTAtezB9XHJcbiIuZm9ybWF0KHgpIGZvciB4IGluIGV4dHJhX2ZlYXR1cmVzIF0pCiAgICAgICAgIHN1cGVyKFNpbVNNVFBDaGFubmVsLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprdykKIAorICAgICMgQVVUSCByZWxhdGVkIHN0dWZmLiAgSXQgd291bGQgYmUgbmljZSBpZiBzdXBwb3J0IGZvciB0aGlzIHdlcmUgaW4gc210cGQuCisgICAgZGVmIGZvdW5kX3Rlcm1pbmF0b3Ioc2VsZik6CisgICAgICAgIGlmIHNlbGYuc210cF9zdGF0ZSA9PSBzZWxmLkFVVEg6CisgICAgICAgICAgICBsaW5lID0gc2VsZi5fZW1wdHlzdHJpbmcuam9pbihzZWxmLnJlY2VpdmVkX2xpbmVzKQorICAgICAgICAgICAgcHJpbnQoJ0RhdGE6JywgcmVwcihsaW5lKSwgZmlsZT1zbXRwZC5ERUJVR1NUUkVBTSkKKyAgICAgICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMgPSBbXQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuYXV0aF9vYmplY3QobGluZSkKKyAgICAgICAgICAgIGV4Y2VwdCBSZXNwb25zZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHNlbGYuc210cF9zdGF0ZSA9IHNlbGYuQ09NTUFORAorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnJXMgJXMnICUgKGUuc210cF9jb2RlLCBlLnNtdHBfZXJyb3IpKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBzdXBlcigpLmZvdW5kX3Rlcm1pbmF0b3IoKQorCisKKyAgICBkZWYgc210cF9BVVRIKHNlbGYsIGFyZyk6CisgICAgICAgIGlmIG5vdCBzZWxmLnNlZW5fZ3JlZXRpbmc6CisgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBFcnJvcjogc2VuZCBFSExPIGZpcnN0JykKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBub3Qgc2VsZi5leHRlbmRlZF9zbXRwIG9yICdBVVRIJyBub3QgaW4gc2VsZi5fZXh0cmFmZWF0dXJlczoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTAwIEVycm9yOiBjb21tYW5kICJBVVRIIiBub3QgcmVjb2duaXplZCcpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgc2VsZi5hdXRoZW50aWNhdGVkX3VzZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnB1c2goCisgICAgICAgICAgICAgICAgJzUwMyBCYWQgc2VxdWVuY2Ugb2YgY29tbWFuZHM6IGFscmVhZHkgYXV0aGVudGljYXRlZCcpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgYXJncyA9IGFyZy5zcGxpdCgpCisgICAgICAgIGlmIGxlbihhcmdzKSBub3QgaW4gWzEsIDJdOgorICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgU3ludGF4OiBBVVRIIDxtZWNoYW5pc20+IFtpbml0aWFsLXJlc3BvbnNlXScpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgYXV0aF9vYmplY3RfbmFtZSA9ICdfYXV0aF8lcycgJSBhcmdzWzBdLmxvd2VyKCkucmVwbGFjZSgnLScsICdfJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hdXRoX29iamVjdCA9IGdldGF0dHIoc2VsZiwgYXV0aF9vYmplY3RfbmFtZSkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDQgQ29tbWFuZCBwYXJhbWV0ZXIgbm90IGltcGxlbWVudGVkOiB1bnN1cHBvcnRlZCAnCisgICAgICAgICAgICAgICAgICAgICAgJyBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20geyFyfScuZm9ybWF0KGF1dGhfb2JqZWN0X25hbWUpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuc210cF9zdGF0ZSA9IHNlbGYuQVVUSAorICAgICAgICBzZWxmLmF1dGhfb2JqZWN0KGFyZ3NbMV0gaWYgbGVuKGFyZ3MpID09IDIgZWxzZSBOb25lKQorCisgICAgZGVmIF9hdXRoZW50aWNhdGVkKHNlbGYsIHVzZXIsIHZhbGlkKToKKyAgICAgICAgaWYgdmFsaWQ6CisgICAgICAgICAgICBzZWxmLmF1dGhlbnRpY2F0ZWRfdXNlciA9IHVzZXIKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMjM1IEF1dGhlbnRpY2F0aW9uIFN1Y2NlZWRlZCcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnB1c2goJzUzNSBBdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyBpbnZhbGlkJykKKyAgICAgICAgc2VsZi5zbXRwX3N0YXRlID0gc2VsZi5DT01NQU5ECisKKyAgICBkZWYgX2RlY29kZV9iYXNlNjQoc2VsZiwgc3RyaW5nKToKKyAgICAgICAgcmV0dXJuIGJhc2U2NC5kZWNvZGVieXRlcyhzdHJpbmcuZW5jb2RlKCdhc2NpaScpKS5kZWNvZGUoJ3V0Zi04JykKKworICAgIGRlZiBfYXV0aF9wbGFpbihzZWxmLCBhcmc9Tm9uZSk6CisgICAgICAgIGlmIGFyZyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5wdXNoKCczMzQgJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvZ3Bhc3MgPSBzZWxmLl9kZWNvZGVfYmFzZTY0KGFyZykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAqXywgdXNlciwgcGFzc3dvcmQgPSBsb2dwYXNzLnNwbGl0KCdcMCcpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTM1IFNwbGl0dGluZyByZXNwb25zZSB7IXJ9IGludG8gdXNlciBhbmQgcGFzc3dvcmQnCisgICAgICAgICAgICAgICAgICAgICAgICAgICcgZmFpbGVkOiB7fScuZm9ybWF0KGxvZ3Bhc3MsIGUpKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgc2VsZi5fYXV0aGVudGljYXRlZCh1c2VyLCBwYXNzd29yZCA9PSBzaW1fYXV0aFsxXSkKKworICAgIGRlZiBfYXV0aF9sb2dpbihzZWxmLCBhcmc9Tm9uZSk6CisgICAgICAgIGlmIGFyZyBpcyBOb25lOgorICAgICAgICAgICAgIyBiYXNlNjQgZW5jb2RlZCAnVXNlcm5hbWU6JworICAgICAgICAgICAgc2VsZi5wdXNoKCczMzQgVlhObGNtNWhiV1U2JykKKyAgICAgICAgZWxpZiBub3QgaGFzYXR0cihzZWxmLCAnX2F1dGhfbG9naW5fdXNlcicpOgorICAgICAgICAgICAgc2VsZi5fYXV0aF9sb2dpbl91c2VyID0gc2VsZi5fZGVjb2RlX2Jhc2U2NChhcmcpCisgICAgICAgICAgICAjIGJhc2U2NCBlbmNvZGVkICdQYXNzd29yZDonCisgICAgICAgICAgICBzZWxmLnB1c2goJzMzNCBVR0Z6YzNkdmNtUTYnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcGFzc3dvcmQgPSBzZWxmLl9kZWNvZGVfYmFzZTY0KGFyZykKKyAgICAgICAgICAgIHNlbGYuX2F1dGhlbnRpY2F0ZWQoc2VsZi5fYXV0aF9sb2dpbl91c2VyLCBwYXNzd29yZCA9PSBzaW1fYXV0aFsxXSkKKyAgICAgICAgICAgIGRlbCBzZWxmLl9hdXRoX2xvZ2luX3VzZXIKKworICAgIGRlZiBfYXV0aF9jcmFtX21kNShzZWxmLCBhcmc9Tm9uZSk6CisgICAgICAgIGlmIGFyZyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5wdXNoKCczMzQge30nLmZvcm1hdChzaW1fY3JhbV9tZDVfY2hhbGxlbmdlKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvZ3Bhc3MgPSBzZWxmLl9kZWNvZGVfYmFzZTY0KGFyZykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB1c2VyLCBoYXNoZWRfcGFzcyA9IGxvZ3Bhc3Muc3BsaXQoKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUzNSBTcGxpdHRpbmcgcmVzcG9uc2UgeyFyfSBpbnRvIHVzZXIgYW5kIHBhc3N3b3JkJworICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbGVkOiB7fScuZm9ybWF0KGxvZ3Bhc3MsIGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgdmFsaWRfaGFzaGVkX3Bhc3MgPSBobWFjLkhNQUMoCisgICAgICAgICAgICAgICAgc2ltX2F1dGhbMV0uZW5jb2RlKCdhc2NpaScpLAorICAgICAgICAgICAgICAgIHNlbGYuX2RlY29kZV9iYXNlNjQoc2ltX2NyYW1fbWQ1X2NoYWxsZW5nZSkuZW5jb2RlKCdhc2NpaScpLAorICAgICAgICAgICAgICAgICdtZDUnKS5oZXhkaWdlc3QoKQorICAgICAgICAgICAgc2VsZi5fYXV0aGVudGljYXRlZCh1c2VyLCBoYXNoZWRfcGFzcyA9PSB2YWxpZF9oYXNoZWRfcGFzcykKKyAgICAjIGVuZCBBVVRIIHJlbGF0ZWQgc3R1ZmYuCisKICAgICBkZWYgc210cF9FSExPKHNlbGYsIGFyZyk6CiAgICAgICAgIHJlc3AgPSAoJzI1MC10ZXN0aG9zdFxyXG4nCiAgICAgICAgICAgICAgICAgJzI1MC1FWFBOXHJcbicKQEAgLTY1NywyMiArNzc0LDYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTUwIE5vIGFjY2VzcyBmb3IgeW91IScpCiAKLSAgICBkZWYgc210cF9BVVRIKHNlbGYsIGFyZyk6Ci0gICAgICAgIGlmIGFyZy5zdHJpcCgpLmxvd2VyKCk9PSdjcmFtLW1kNSc6Ci0gICAgICAgICAgICBzZWxmLnB1c2goJzMzNCB7fScuZm9ybWF0KHNpbV9jcmFtX21kNV9jaGFsbGVuZ2UpKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIG1lY2gsIGF1dGggPSBhcmcuc3BsaXQoKQotICAgICAgICBtZWNoID0gbWVjaC5sb3dlcigpCi0gICAgICAgIGlmIG1lY2ggbm90IGluIHNpbV9hdXRoX2NyZWRlbnRpYWxzOgotICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDQgYXV0aCB0eXBlIHVuaW1wbGVtZW50ZWQnKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIG1lY2ggPT0gJ3BsYWluJyBhbmQgYXV0aD09c2ltX2F1dGhfY3JlZGVudGlhbHNbJ3BsYWluJ106Ci0gICAgICAgICAgICBzZWxmLnB1c2goJzIzNSBwbGFpbiBhdXRoIG9rJykKLSAgICAgICAgZWxpZiBtZWNoPT0nbG9naW4nIGFuZCBhdXRoPT1zaW1fYXV0aF9jcmVkZW50aWFsc1snbG9naW4nXToKLSAgICAgICAgICAgIHNlbGYucHVzaCgnMzM0IFBhc3N3b3JkOicpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnB1c2goJzU1MCBObyBhY2Nlc3MgZm9yIHlvdSEnKQotCiAgICAgZGVmIHNtdHBfUVVJVChzZWxmLCBhcmcpOgogICAgICAgICBpZiBzZWxmLnF1aXRfcmVzcG9uc2UgaXMgTm9uZToKICAgICAgICAgICAgIHN1cGVyKFNpbVNNVFBDaGFubmVsLCBzZWxmKS5zbXRwX1FVSVQoYXJnKQpAQCAtNzE5LDcgKzgyMCw4IEBACiAKICAgICBkZWYgaGFuZGxlX2FjY2VwdGVkKHNlbGYsIGNvbm4sIGFkZHIpOgogICAgICAgICBzZWxmLl9TTVRQY2hhbm5lbCA9IHNlbGYuY2hhbm5lbF9jbGFzcygKLSAgICAgICAgICAgIHNlbGYuX2V4dHJhX2ZlYXR1cmVzLCBzZWxmLCBjb25uLCBhZGRyKQorICAgICAgICAgICAgc2VsZi5fZXh0cmFfZmVhdHVyZXMsIHNlbGYsIGNvbm4sIGFkZHIsCisgICAgICAgICAgICBkZWNvZGVfZGF0YT1zZWxmLl9kZWNvZGVfZGF0YSkKIAogICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEpOgogICAgICAgICBwYXNzCkBAIC03NDIsNyArODQ0LDcgQEAKICAgICAgICAgc2VsZi5zZXJ2X2V2dCA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgIHNlbGYuY2xpZW50X2V2dCA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgICMgUGljayBhIHJhbmRvbSB1bnVzZWQgcG9ydCBieSBwYXNzaW5nIDAgZm9yIHRoZSBwb3J0IG51bWJlcgotICAgICAgICBzZWxmLnNlcnYgPSBTaW1TTVRQU2VydmVyKChIT1NULCAwKSwgKCdub3doZXJlJywgLTEpKQorICAgICAgICBzZWxmLnNlcnYgPSBTaW1TTVRQU2VydmVyKChIT1NULCAwKSwgKCdub3doZXJlJywgLTEpLCBkZWNvZGVfZGF0YT1UcnVlKQogICAgICAgICAjIEtlZXAgYSBub3RlIG9mIHdoYXQgcG9ydCB3YXMgYXNzaWduZWQKICAgICAgICAgc2VsZi5wb3J0ID0gc2VsZi5zZXJ2LnNvY2tldC5nZXRzb2NrbmFtZSgpWzFdCiAgICAgICAgIHNlcnZfYXJncyA9IChzZWxmLnNlcnYsIHNlbGYuc2Vydl9ldnQsIHNlbGYuY2xpZW50X2V2dCkKQEAgLTc5MCwxMSArODkyLDExIEBACiAgICAgZGVmIHRlc3RWUkZZKHNlbGYpOgogICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MTUpCiAKLSAgICAgICAgZm9yIGVtYWlsLCBuYW1lIGluIHNpbV91c2Vycy5pdGVtcygpOgorICAgICAgICBmb3IgYWRkcl9zcGVjLCBuYW1lIGluIHNpbV91c2Vycy5pdGVtcygpOgogICAgICAgICAgICAgZXhwZWN0ZWRfa25vd24gPSAoMjUwLCBieXRlcygnJXMgJXMnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUsIHNtdHBsaWIucXVvdGVhZGRyKGVtYWlsKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lLCBzbXRwbGliLnF1b3RlYWRkcihhZGRyX3NwZWMpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzY2lpIikpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAudnJmeShlbWFpbCksIGV4cGVjdGVkX2tub3duKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnZyZnkoYWRkcl9zcGVjKSwgZXhwZWN0ZWRfa25vd24pCiAKICAgICAgICAgdSA9ICdub2JvZHlAbm93aGVyZS5jb20nCiAgICAgICAgIGV4cGVjdGVkX3Vua25vd24gPSAoNTUwLCAoJ05vIHN1Y2ggdXNlcjogJXMnICUgdSkuZW5jb2RlKCdhc2NpaScpKQpAQCAtODE5LDQ1ICs5MjEsNDcgQEAKICAgICBkZWYgdGVzdEFVVEhfUExBSU4oc2VsZik6CiAgICAgICAgIHNlbGYuc2Vydi5hZGRfZmVhdHVyZSgiQVVUSCBQTEFJTiIpCiAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0xNSkKLQotICAgICAgICBleHBlY3RlZF9hdXRoX29rID0gKDIzNSwgYidwbGFpbiBhdXRoIG9rJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLmxvZ2luKHNpbV9hdXRoWzBdLCBzaW1fYXV0aFsxXSksIGV4cGVjdGVkX2F1dGhfb2spCisgICAgICAgIHJlc3AgPSBzbXRwLmxvZ2luKHNpbV9hdXRoWzBdLCBzaW1fYXV0aFsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLCAoMjM1LCBiJ0F1dGhlbnRpY2F0aW9uIFN1Y2NlZWRlZCcpKQogICAgICAgICBzbXRwLmNsb3NlKCkKIAotICAgICMgU2ltU01UUENoYW5uZWwgZG9lc24ndCBmdWxseSBzdXBwb3J0IExPR0lOIG9yIENSQU0tTUQ1IGF1dGggYmVjYXVzZSB0aGV5Ci0gICAgIyByZXF1aXJlIGEgc3luY2hyb25vdXMgcmVhZCB0byBvYnRhaW4gdGhlIGNyZWRlbnRpYWxzLi4uc28gaW5zdGVhZCBzbXRwZAotICAgICMgc2VlcyB0aGUgY3JlZGVudGlhbCBzZW50IGJ5IHNtdHBsaWIncyBsb2dpbiBtZXRob2QgYXMgYW4gdW5rbm93biBjb21tYW5kLAotICAgICMgd2hpY2ggcmVzdWx0cyBpbiBzbXRwbGliIHJhaXNpbmcgYW4gYXV0aCBlcnJvci4gIEZvcnR1bmF0ZWx5IHRoZSBlcnJvcgotICAgICMgbWVzc2FnZSBjb250YWlucyB0aGUgZW5jb2RlZCBjcmVkZW50aWFsLCBzbyB3ZSBjYW4gcGFydGlhbGx5IGNoZWNrIHRoYXQgaXQKLSAgICAjIHdhcyBnZW5lcmF0ZWQgY29ycmVjdGx5IChwYXJ0aWFsbHksIGJlY2F1c2UgdGhlICd3b3JkJyBpcyB1cHBlcmNhc2VkIGluCi0gICAgIyB0aGUgZXJyb3IgbWVzc2FnZSkuCi0KICAgICBkZWYgdGVzdEFVVEhfTE9HSU4oc2VsZik6CiAgICAgICAgIHNlbGYuc2Vydi5hZGRfZmVhdHVyZSgiQVVUSCBMT0dJTiIpCiAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0xNSkKLSAgICAgICAgdHJ5OiBzbXRwLmxvZ2luKHNpbV9hdXRoWzBdLCBzaW1fYXV0aFsxXSkKLSAgICAgICAgZXhjZXB0IHNtdHBsaWIuU01UUEF1dGhlbnRpY2F0aW9uRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzaW1fYXV0aF9sb2dpbl9wYXNzd29yZCwgc3RyKGVycikpCisgICAgICAgIHJlc3AgPSBzbXRwLmxvZ2luKHNpbV9hdXRoWzBdLCBzaW1fYXV0aFsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLCAoMjM1LCBiJ0F1dGhlbnRpY2F0aW9uIFN1Y2NlZWRlZCcpKQogICAgICAgICBzbXRwLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0QVVUSF9DUkFNX01ENShzZWxmKToKICAgICAgICAgc2VsZi5zZXJ2LmFkZF9mZWF0dXJlKCJBVVRIIENSQU0tTUQ1IikKICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTE1KQotCi0gICAgICAgIHRyeTogc210cC5sb2dpbihzaW1fYXV0aFswXSwgc2ltX2F1dGhbMV0pCi0gICAgICAgIGV4Y2VwdCBzbXRwbGliLlNNVFBBdXRoZW50aWNhdGlvbkVycm9yIGFzIGVycjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2ltX2F1dGhfY3JlZGVudGlhbHNbJ2NyYW0tbWQ1J10sIHN0cihlcnIpKQorICAgICAgICByZXNwID0gc210cC5sb2dpbihzaW1fYXV0aFswXSwgc2ltX2F1dGhbMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcCwgKDIzNSwgYidBdXRoZW50aWNhdGlvbiBTdWNjZWVkZWQnKSkKICAgICAgICAgc210cC5jbG9zZSgpCiAKICAgICBkZWYgdGVzdEFVVEhfbXVsdGlwbGUoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IG11bHRpcGxlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgYXJlIHRyaWVkLgogICAgICAgICBzZWxmLnNlcnYuYWRkX2ZlYXR1cmUoIkFVVEggQk9HVVMgUExBSU4gTE9HSU4gQ1JBTS1NRDUiKQogICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MTUpCi0gICAgICAgIHRyeTogc210cC5sb2dpbihzaW1fYXV0aFswXSwgc2ltX2F1dGhbMV0pCi0gICAgICAgIGV4Y2VwdCBzbXRwbGliLlNNVFBBdXRoZW50aWNhdGlvbkVycm9yIGFzIGVycjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2ltX2F1dGhfbG9naW5fcGFzc3dvcmQsIHN0cihlcnIpKQorICAgICAgICByZXNwID0gc210cC5sb2dpbihzaW1fYXV0aFswXSwgc2ltX2F1dGhbMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcCwgKDIzNSwgYidBdXRoZW50aWNhdGlvbiBTdWNjZWVkZWQnKSkKICAgICAgICAgc210cC5jbG9zZSgpCiAKKyAgICBkZWYgdGVzdF9hdXRoX2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICBzdXBwb3J0ZWQgPSB7J0NSQU0tTUQ1JywgJ1BMQUlOJywgJ0xPR0lOJ30KKyAgICAgICAgZm9yIG1lY2hhbmlzbSBpbiBzdXBwb3J0ZWQ6CisgICAgICAgICAgICBzZWxmLnNlcnYuYWRkX2ZlYXR1cmUoIkFVVEgge30iLmZvcm1hdChtZWNoYW5pc20pKQorICAgICAgICBmb3IgbWVjaGFuaXNtIGluIHN1cHBvcnRlZDoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG1lY2hhbmlzbT1tZWNoYW5pc20pOgorICAgICAgICAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MTUpCisgICAgICAgICAgICAgICAgc210cC5laGxvKCdmb28nKQorICAgICAgICAgICAgICAgIHNtdHAudXNlciwgc210cC5wYXNzd29yZCA9IHNpbV9hdXRoWzBdLCBzaW1fYXV0aFsxXQorICAgICAgICAgICAgICAgIG1ldGhvZCA9ICdhdXRoXycgKyBtZWNoYW5pc20ubG93ZXIoKS5yZXBsYWNlKCctJywgJ18nKQorICAgICAgICAgICAgICAgIHJlc3AgPSBzbXRwLmF1dGgobWVjaGFuaXNtLCBnZXRhdHRyKHNtdHAsIG1ldGhvZCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLCAoMjM1LCBiJ0F1dGhlbnRpY2F0aW9uIFN1Y2NlZWRlZCcpKQorICAgICAgICAgICAgICAgIHNtdHAuY2xvc2UoKQorCiAgICAgZGVmIHRlc3RfcXVpdF9yZXNldHNfZ3JlZXRpbmcoc2VsZik6CiAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLApAQCAtOTM4LDEzICsxMDQyLDI0OSBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzbXRwLnNvY2spCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2Ll9TTVRQY2hhbm5lbC5yY3B0X2NvdW50LCAwKQogCisgICAgZGVmIHRlc3Rfc210cHV0ZjhfTm90U3VwcG9ydGVkRXJyb3JfaWZfbm9fc2VydmVyX3N1cHBvcnQoc2VsZik6CisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoCisgICAgICAgICAgICBIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzbXRwLmNsb3NlKQorICAgICAgICBzbXRwLmVobG8oKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc210cC5kb2VzX2VzbXRwKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNtdHAuaGFzX2V4dG4oJ3NtdHB1dGY4JykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgc210cGxpYi5TTVRQTm90U3VwcG9ydGVkRXJyb3IsCisgICAgICAgICAgICBzbXRwLnNlbmRtYWlsLAorICAgICAgICAgICAgJ0pvaG4nLCAnU2FsbHknLCAnJywgbWFpbF9vcHRpb25zPVsnQk9EWT04QklUTUlNRScsICdTTVRQVVRGOCddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIHNtdHBsaWIuU01UUE5vdFN1cHBvcnRlZEVycm9yLAorICAgICAgICAgICAgc210cC5tYWlsLCAnSm9obicsIG9wdGlvbnM9WydCT0RZPThCSVRNSU1FJywgJ1NNVFBVVEY4J10pCisKKyAgICBkZWYgdGVzdF9zZW5kX3VuaWNvZGVfd2l0aG91dF9TTVRQVVRGOChzZWxmKToKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUCgKKyAgICAgICAgICAgIEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNtdHAuY2xvc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgc210cC5zZW5kbWFpbCwgJ0FsaWNlJywgJ0LDtmInLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCBzbXRwLm1haWwsICfDhGxpY2UnKQorCisKK2NsYXNzIFNpbVNNVFBVVEY4U2VydmVyKFNpbVNNVFBTZXJ2ZXIpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgIyBUaGUgYmFzZSBTTVRQIHNlcnZlciB0dXJucyB0aGVzZSBvbiBhdXRvbWF0aWNhbGx5LCBidXQgb3VyIHRlc3QKKyAgICAgICAgIyBzZXJ2ZXIgaXMgc2V0IHVwIHRvIG11bmdlIHRoZSBFSExPIHJlc3BvbnNlLCBzbyB3ZSBuZWVkIHRvIHByb3ZpZGUKKyAgICAgICAgIyB0aGVtIGFzIHdlbGwuICBBbmQgeWVzLCB0aGUgY2FsbCBpcyB0byBTTVRQU2VydmVyIG5vdCBTaW1TTVRQU2VydmVyLgorICAgICAgICBzZWxmLl9leHRyYV9mZWF0dXJlcyA9IFsnU01UUFVURjgnLCAnOEJJVE1JTUUnXQorICAgICAgICBzbXRwZC5TTVRQU2VydmVyLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KQorCisgICAgZGVmIGhhbmRsZV9hY2NlcHRlZChzZWxmLCBjb25uLCBhZGRyKToKKyAgICAgICAgc2VsZi5fU01UUGNoYW5uZWwgPSBzZWxmLmNoYW5uZWxfY2xhc3MoCisgICAgICAgICAgICBzZWxmLl9leHRyYV9mZWF0dXJlcywgc2VsZiwgY29ubiwgYWRkciwKKyAgICAgICAgICAgIGRlY29kZV9kYXRhPXNlbGYuX2RlY29kZV9kYXRhLAorICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PXNlbGYuZW5hYmxlX1NNVFBVVEY4LAorICAgICAgICApCisKKyAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhLCBtYWlsX29wdGlvbnM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByY3B0X29wdGlvbnM9Tm9uZSk6CisgICAgICAgIHNlbGYubGFzdF9wZWVyID0gcGVlcgorICAgICAgICBzZWxmLmxhc3RfbWFpbGZyb20gPSBtYWlsZnJvbQorICAgICAgICBzZWxmLmxhc3RfcmNwdHRvcyA9IHJjcHR0b3MKKyAgICAgICAgc2VsZi5sYXN0X21lc3NhZ2UgPSBkYXRhCisgICAgICAgIHNlbGYubGFzdF9tYWlsX29wdGlvbnMgPSBtYWlsX29wdGlvbnMKKyAgICAgICAgc2VsZi5sYXN0X3JjcHRfb3B0aW9ucyA9IHJjcHRfb3B0aW9ucworCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBTTVRQVVRGOFNpbVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIG1heERpZmYgPSBOb25lCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYucmVhbF9nZXRmcWRuID0gc29ja2V0LmdldGZxZG4KKyAgICAgICAgc29ja2V0LmdldGZxZG4gPSBtb2NrX3NvY2tldC5nZXRmcWRuCisgICAgICAgIHNlbGYuc2Vydl9ldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQorICAgICAgICBzZWxmLmNsaWVudF9ldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQorICAgICAgICAjIFBpY2sgYSByYW5kb20gdW51c2VkIHBvcnQgYnkgcGFzc2luZyAwIGZvciB0aGUgcG9ydCBudW1iZXIKKyAgICAgICAgc2VsZi5zZXJ2ID0gU2ltU01UUFVURjhTZXJ2ZXIoKEhPU1QsIDApLCAoJ25vd2hlcmUnLCAtMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVfU01UUFVURjg9VHJ1ZSkKKyAgICAgICAgIyBLZWVwIGEgbm90ZSBvZiB3aGF0IHBvcnQgd2FzIGFzc2lnbmVkCisgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc2Vydi5zb2NrZXQuZ2V0c29ja25hbWUoKVsxXQorICAgICAgICBzZXJ2X2FyZ3MgPSAoc2VsZi5zZXJ2LCBzZWxmLnNlcnZfZXZ0LCBzZWxmLmNsaWVudF9ldnQpCisgICAgICAgIHNlbGYudGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9ZGVidWdnaW5nX3NlcnZlciwgYXJncz1zZXJ2X2FyZ3MpCisgICAgICAgIHNlbGYudGhyZWFkLnN0YXJ0KCkKKworICAgICAgICAjIHdhaXQgdW50aWwgc2VydmVyIHRocmVhZCBoYXMgYXNzaWduZWQgYSBwb3J0IG51bWJlcgorICAgICAgICBzZWxmLnNlcnZfZXZ0LndhaXQoKQorICAgICAgICBzZWxmLnNlcnZfZXZ0LmNsZWFyKCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc29ja2V0LmdldGZxZG4gPSBzZWxmLnJlYWxfZ2V0ZnFkbgorICAgICAgICAjIGluZGljYXRlIHRoYXQgdGhlIGNsaWVudCBpcyBmaW5pc2hlZAorICAgICAgICBzZWxmLmNsaWVudF9ldnQuc2V0KCkKKyAgICAgICAgIyB3YWl0IGZvciB0aGUgc2VydmVyIHRocmVhZCB0byB0ZXJtaW5hdGUKKyAgICAgICAgc2VsZi5zZXJ2X2V2dC53YWl0KCkKKyAgICAgICAgc2VsZi50aHJlYWQuam9pbigpCisKKyAgICBkZWYgdGVzdF90ZXN0X3NlcnZlcl9zdXBwb3J0c19leHRlbnNpb25zKHNlbGYpOgorICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKAorICAgICAgICAgICAgSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc210cC5jbG9zZSkKKyAgICAgICAgc210cC5laGxvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNtdHAuZG9lc19lc210cCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNtdHAuaGFzX2V4dG4oJ3NtdHB1dGY4JykpCisKKyAgICBkZWYgdGVzdF9zZW5kX3VuaWNvZGVfd2l0aF9TTVRQVVRGOF92aWFfc2VuZG1haWwoc2VsZik6CisgICAgICAgIG0gPSAnwqFhIHRlc3QgbWVzc2FnZSBjb250YWluaW5nIHVuaWNvZGUhJy5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUCgKKyAgICAgICAgICAgIEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNtdHAuY2xvc2UpCisgICAgICAgIHNtdHAuc2VuZG1haWwoJ0rFkWhuJywgJ1PDoWxseScsIG0sCisgICAgICAgICAgICAgICAgICAgICAgbWFpbF9vcHRpb25zPVsnQk9EWT04QklUTUlNRScsICdTTVRQVVRGOCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X21haWxmcm9tLCAnSsWRaG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X3JjcHR0b3MsIFsnU8OhbGx5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2Lmxhc3RfbWVzc2FnZSwgbSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQk9EWT04QklUTUlNRScsIHNlbGYuc2Vydi5sYXN0X21haWxfb3B0aW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignU01UUFVURjgnLCBzZWxmLnNlcnYubGFzdF9tYWlsX29wdGlvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2Lmxhc3RfcmNwdF9vcHRpb25zLCBbXSkKKworICAgIGRlZiB0ZXN0X3NlbmRfdW5pY29kZV93aXRoX1NNVFBVVEY4X3ZpYV9sb3dfbGV2ZWxfQVBJKHNlbGYpOgorICAgICAgICBtID0gJ8KhYSB0ZXN0IG1lc3NhZ2UgY29udGFpbmluZyB1bmljb2RlIScuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoCisgICAgICAgICAgICBIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzbXRwLmNsb3NlKQorICAgICAgICBzbXRwLmVobG8oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc210cC5tYWlsKCdKxZEnLCBvcHRpb25zPVsnQk9EWT04QklUTUlNRScsICdTTVRQVVRGOCddKSwKKyAgICAgICAgICAgICgyNTAsIGInT0snKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnJjcHQoJ0rDoW5vcycpLCAoMjUwLCBiJ09LJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5kYXRhKG0pLCAoMjUwLCBiJ09LJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2Lmxhc3RfbWFpbGZyb20sICdKxZEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X3JjcHR0b3MsIFsnSsOhbm9zJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2Lmxhc3RfbWVzc2FnZSwgbSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQk9EWT04QklUTUlNRScsIHNlbGYuc2Vydi5sYXN0X21haWxfb3B0aW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignU01UUFVURjgnLCBzZWxmLnNlcnYubGFzdF9tYWlsX29wdGlvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2Lmxhc3RfcmNwdF9vcHRpb25zLCBbXSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV91c2VzX3NtdHB1dGY4X2lmX2FkZHJzX25vbl9hc2NpaShzZWxmKToKKyAgICAgICAgbXNnID0gRW1haWxNZXNzYWdlKCkKKyAgICAgICAgbXNnWydGcm9tJ10gPSAiUMOhb2xvIDxmxZFvQGJhci5jb20+IgorICAgICAgICBtc2dbJ1RvJ10gPSAnRGluc2RhbGUnCisgICAgICAgIG1zZ1snU3ViamVjdCddID0gJ051ZGdlIG51ZGdlLCB3aW5rLCB3aW5rIFx1MUY2MDknCisgICAgICAgICMgWFhYIEkgZG9uJ3Qga25vdyB3aHkgSSBuZWVkIHR3byBcbidzIGhlcmUsIGJ1dCB0aGlzIGlzIGFuIGV4aXN0aW5nCisgICAgICAgICMgYnVnIChpZiBpdCBpcyBvbmUpIGFuZCBub3QgYSBwcm9ibGVtIHdpdGggdGhlIG5ldyBmdW5jdGlvbmFsaXR5LgorICAgICAgICBtc2cuc2V0X2NvbnRlbnQoIm9oIGzDoCBsw6AsIGtub3cgd2hhdCBJIG1lYW4sIGtub3cgd2hhdCBJIG1lYW4/XG5cbiIpCisgICAgICAgICMgWFhYIHNtdHBkIGNvbnZlcnRzIHJlY2VpdmVkIC9yL24gdG8gL24sIHNvIHdlIGNhbid0IGVhc2lseSB0ZXN0IHRoYXQKKyAgICAgICAgIyB3ZSBhcmUgc3VjY2Vzc2Z1bGx5IHNlbmRpbmcgL3IvbiA6KC4KKyAgICAgICAgZXhwZWN0ZWQgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgRnJvbTogUMOhb2xvIDxmxZFvQGJhci5jb20+CisgICAgICAgICAgICBUbzogRGluc2RhbGUKKyAgICAgICAgICAgIFN1YmplY3Q6IE51ZGdlIG51ZGdlLCB3aW5rLCB3aW5rIFx1MUY2MDkKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCisgICAgICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisgICAgICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorCisgICAgICAgICAgICBvaCBsw6AgbMOgLCBrbm93IHdoYXQgSSBtZWFuLCBrbm93IHdoYXQgSSBtZWFuPworICAgICAgICAgICAgIiIiKQorICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKAorICAgICAgICAgICAgSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc210cC5jbG9zZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnNlbmRfbWVzc2FnZShtc2cpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnYubGFzdF9tYWlsZnJvbSwgJ2bFkW9AYmFyLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2Lmxhc3RfcmNwdHRvcywgWydEaW5zZGFsZSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X21lc3NhZ2UuZGVjb2RlKCksIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEluKCdCT0RZPThCSVRNSU1FJywgc2VsZi5zZXJ2Lmxhc3RfbWFpbF9vcHRpb25zKQorICAgICAgICBzZWxmLmFzc2VydEluKCdTTVRQVVRGOCcsIHNlbGYuc2Vydi5sYXN0X21haWxfb3B0aW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnYubGFzdF9yY3B0X29wdGlvbnMsIFtdKQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2Vycm9yX29uX25vbl9hc2NpaV9hZGRyc19pZl9ub19zbXRwdXRmOChzZWxmKToKKyAgICAgICAgbXNnID0gRW1haWxNZXNzYWdlKCkKKyAgICAgICAgbXNnWydGcm9tJ10gPSAiUMOhb2xvIDxmxZFvQGJhci5jb20+IgorICAgICAgICBtc2dbJ1RvJ10gPSAnRGluc2RhbGUnCisgICAgICAgIG1zZ1snU3ViamVjdCddID0gJ051ZGdlIG51ZGdlLCB3aW5rLCB3aW5rIFx1MUY2MDknCisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoCisgICAgICAgICAgICBIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzbXRwLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzbXRwbGliLlNNVFBOb3RTdXBwb3J0ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc210cC5zZW5kX21lc3NhZ2UobXNnKSkKKworCitFWFBFQ1RFRF9SRVNQT05TRSA9IGVuY29kZV9iYXNlNjQoYidcMHBzdVwwZG9lc25vdGV4aXN0JywgZW9sPScnKQorCitjbGFzcyBTaW1TTVRQQVVUSEluaXRpYWxSZXNwb25zZUNoYW5uZWwoU2ltU01UUENoYW5uZWwpOgorICAgIGRlZiBzbXRwX0FVVEgoc2VsZiwgYXJnKToKKyAgICAgICAgIyBSRkMgNDk1NCdzIEFVVEggY29tbWFuZCBhbGxvd3MgZm9yIGFuIG9wdGlvbmFsIGluaXRpYWwtcmVzcG9uc2UuCisgICAgICAgICMgTm90IGFsbCBBVVRIIG1ldGhvZHMgc3VwcG9ydCB0aGlzOyBzb21lIHJlcXVpcmUgYSBjaGFsbGVuZ2UuICBBVVRICisgICAgICAgICMgUExBSU4gZG9lcyB0aG9zZSwgc28gdGVzdCB0aGF0IGhlcmUuICBTZWUgaXNzdWUgIzE1MDE0LgorICAgICAgICBhcmdzID0gYXJnLnNwbGl0KCkKKyAgICAgICAgaWYgYXJnc1swXS5sb3dlcigpID09ICdwbGFpbic6CisgICAgICAgICAgICBpZiBsZW4oYXJncykgPT0gMjoKKyAgICAgICAgICAgICAgICAjIEFVVEggUExBSU4gPGluaXRpYWwtcmVzcG9uc2U+IHdpdGggdGhlIHJlc3BvbnNlIGJhc2UgNjQKKyAgICAgICAgICAgICAgICAjIGVuY29kZWQuICBIYXJkIGNvZGUgdGhlIGV4cGVjdGVkIHJlc3BvbnNlIGZvciB0aGUgdGVzdC4KKyAgICAgICAgICAgICAgICBpZiBhcmdzWzFdID09IEVYUEVDVEVEX1JFU1BPTlNFOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzIzNSBPaycpCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLnB1c2goJzU3MSBCYWQgYXV0aGVudGljYXRpb24nKQorCitjbGFzcyBTaW1TTVRQQVVUSEluaXRpYWxSZXNwb25zZVNlcnZlcihTaW1TTVRQU2VydmVyKToKKyAgICBjaGFubmVsX2NsYXNzID0gU2ltU01UUEFVVEhJbml0aWFsUmVzcG9uc2VDaGFubmVsCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFNNVFBBVVRISW5pdGlhbFJlc3BvbnNlU2ltVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5yZWFsX2dldGZxZG4gPSBzb2NrZXQuZ2V0ZnFkbgorICAgICAgICBzb2NrZXQuZ2V0ZnFkbiA9IG1vY2tfc29ja2V0LmdldGZxZG4KKyAgICAgICAgc2VsZi5zZXJ2X2V2dCA9IHRocmVhZGluZy5FdmVudCgpCisgICAgICAgIHNlbGYuY2xpZW50X2V2dCA9IHRocmVhZGluZy5FdmVudCgpCisgICAgICAgICMgUGljayBhIHJhbmRvbSB1bnVzZWQgcG9ydCBieSBwYXNzaW5nIDAgZm9yIHRoZSBwb3J0IG51bWJlcgorICAgICAgICBzZWxmLnNlcnYgPSBTaW1TTVRQQVVUSEluaXRpYWxSZXNwb25zZVNlcnZlcigKKyAgICAgICAgICAgIChIT1NULCAwKSwgKCdub3doZXJlJywgLTEpLCBkZWNvZGVfZGF0YT1UcnVlKQorICAgICAgICAjIEtlZXAgYSBub3RlIG9mIHdoYXQgcG9ydCB3YXMgYXNzaWduZWQKKyAgICAgICAgc2VsZi5wb3J0ID0gc2VsZi5zZXJ2LnNvY2tldC5nZXRzb2NrbmFtZSgpWzFdCisgICAgICAgIHNlcnZfYXJncyA9IChzZWxmLnNlcnYsIHNlbGYuc2Vydl9ldnQsIHNlbGYuY2xpZW50X2V2dCkKKyAgICAgICAgc2VsZi50aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1kZWJ1Z2dpbmdfc2VydmVyLCBhcmdzPXNlcnZfYXJncykKKyAgICAgICAgc2VsZi50aHJlYWQuc3RhcnQoKQorCisgICAgICAgICMgd2FpdCB1bnRpbCBzZXJ2ZXIgdGhyZWFkIGhhcyBhc3NpZ25lZCBhIHBvcnQgbnVtYmVyCisgICAgICAgIHNlbGYuc2Vydl9ldnQud2FpdCgpCisgICAgICAgIHNlbGYuc2Vydl9ldnQuY2xlYXIoKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzb2NrZXQuZ2V0ZnFkbiA9IHNlbGYucmVhbF9nZXRmcWRuCisgICAgICAgICMgaW5kaWNhdGUgdGhhdCB0aGUgY2xpZW50IGlzIGZpbmlzaGVkCisgICAgICAgIHNlbGYuY2xpZW50X2V2dC5zZXQoKQorICAgICAgICAjIHdhaXQgZm9yIHRoZSBzZXJ2ZXIgdGhyZWFkIHRvIHRlcm1pbmF0ZQorICAgICAgICBzZWxmLnNlcnZfZXZ0LndhaXQoKQorICAgICAgICBzZWxmLnRocmVhZC5qb2luKCkKKworICAgIGRlZiB0ZXN0QVVUSF9QTEFJTl9pbml0aWFsX3Jlc3BvbnNlX2xvZ2luKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnYuYWRkX2ZlYXR1cmUoJ0FVVEggUExBSU4nKQorICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0xNSkKKyAgICAgICAgc210cC5sb2dpbigncHN1JywgJ2RvZXNub3RleGlzdCcpCisgICAgICAgIHNtdHAuY2xvc2UoKQorCisgICAgZGVmIHRlc3RBVVRIX1BMQUlOX2luaXRpYWxfcmVzcG9uc2VfYXV0aChzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2LmFkZF9mZWF0dXJlKCdBVVRIIFBMQUlOJykKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MTUpCisgICAgICAgIHNtdHAudXNlciA9ICdwc3UnCisgICAgICAgIHNtdHAucGFzc3dvcmQgPSAnZG9lc25vdGV4aXN0JworICAgICAgICBjb2RlLCByZXNwb25zZSA9IHNtdHAuYXV0aCgncGxhaW4nLCBzbXRwLmF1dGhfcGxhaW4pCisgICAgICAgIHNtdHAuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUsIDIzNSkKKwogCiBAc3VwcG9ydC5yZWFwX3RocmVhZHMKIGRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChHZW5lcmFsVGVzdHMsIERlYnVnZ2luZ1NlcnZlclRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uQ29ubmVjdGluZ1Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFkSEVMT1NlcnZlclRlc3RzLCBTTVRQU2ltVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb29Mb25nTGluZVRlc3RzKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAorICAgICAgICBCYWRIRUxPU2VydmVyVGVzdHMsCisgICAgICAgIERlYnVnZ2luZ1NlcnZlclRlc3RzLAorICAgICAgICBHZW5lcmFsVGVzdHMsCisgICAgICAgIE5vbkNvbm5lY3RpbmdUZXN0cywKKyAgICAgICAgU01UUEFVVEhJbml0aWFsUmVzcG9uc2VTaW1UZXN0cywKKyAgICAgICAgU01UUFNpbVRlc3RzLAorICAgICAgICBUb29Mb25nTGluZVRlc3RzLAorICAgICAgICApCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zbXRwbmV0LnB5IGIvTGliL3Rlc3QvdGVzdF9zbXRwbmV0LnB5CmluZGV4IDE1NjU0ZjIuLmNjOWJhYjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc210cG5ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NtdHBuZXQucHkKQEAgLTc5LDggKzc5LDUgQEAKICAgICAgICAgICAgIHNlcnZlci5xdWl0KCkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoU210cFRlc3QsIFNtdHBTU0xUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NuZGhkci5weSBiL0xpYi90ZXN0L3Rlc3Rfc25kaGRyLnB5CmluZGV4IDVlMGFiZTAuLjQyNjQxN2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc25kaGRyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc25kaGRyLnB5CkBAIC0xLDQgKzEsNSBAQAogaW1wb3J0IHNuZGhkcgoraW1wb3J0IHBpY2tsZQogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUKIApAQCAtMTgsNiArMTksMTkgQEAKICAgICAgICAgICAgIHdoYXQgPSBzbmRoZHIud2hhdChmaWxlbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwod2hhdCwgTm9uZSwgZmlsZW5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFNlcXVlbmNlRXF1YWwod2hhdCwgZXhwZWN0ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdoYXQuZmlsZXR5cGUsIGV4cGVjdGVkWzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3aGF0LmZyYW1lcmF0ZSwgZXhwZWN0ZWRbMV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdoYXQubmNoYW5uZWxzLCBleHBlY3RlZFsyXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2hhdC5uZnJhbWVzLCBleHBlY3RlZFszXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2hhdC5zYW1wd2lkdGgsIGV4cGVjdGVkWzRdKQorCisgICAgZGVmIHRlc3RfcGlja2xlYWJsZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBmaW5kZmlsZSgnc25kaGRyLmFpZmMnLCBzdWJkaXI9InNuZGhkcmRhdGEiKQorICAgICAgICB3aGF0ID0gc25kaGRyLndoYXQoZmlsZW5hbWUpCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgZHVtcCA9IHBpY2tsZS5kdW1wcyh3aGF0LCBwcm90bykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGlja2xlLmxvYWRzKGR1bXApLCB3aGF0KQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NvY2tldC5weSBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CmluZGV4IDE0MGI0YmUuLjFlMzU1ZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CkBAIC0yMCw2ICsyMCw4IEBACiBpbXBvcnQgbWF0aAogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHN0cnVjdAoraW1wb3J0IHJhbmRvbQoraW1wb3J0IHN0cmluZwogdHJ5OgogICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTc2LDcgKzc4LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydiA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKICAgICAgICAgc2VsZi5wb3J0ID0gc3VwcG9ydC5iaW5kX3BvcnQoc2VsZi5zZXJ2KQotICAgICAgICBzZWxmLnNlcnYubGlzdGVuKDEpCisgICAgICAgIHNlbGYuc2Vydi5saXN0ZW4oKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzZWxmLnNlcnYuY2xvc2UoKQpAQCAtNDQ1LDcgKzQ0Nyw3IEBACiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cGVyKCkuc2V0VXAoKQotICAgICAgICBzZWxmLnNlcnYubGlzdGVuKDEpCisgICAgICAgIHNlbGYuc2Vydi5saXN0ZW4oKQogCiAKIGNsYXNzIFRocmVhZGVkU29ja2V0VGVzdE1peGluKFRocmVhZFNhZmVDbGVhbnVwVGVzdENhc2UsIFNvY2tldFRlc3RCYXNlLApAQCAtNzE2LDExICs3MTgsMTEgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgcy5zZW5kdG8oJ1x1MjYyMCcsIHNvY2tuYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAotICAgICAgICAgICAgICAgICAgICAgICAgICInc3RyJyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBidWZmZXIgaW50ZXJmYWNlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYSBieXRlcy1saWtlIG9iamVjdCBpcyByZXF1aXJlZCwgbm90ICdzdHInIikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgcy5zZW5kdG8oNWosIHNvY2tuYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAotICAgICAgICAgICAgICAgICAgICAgICAgICInY29tcGxleCcgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYnVmZmVyIGludGVyZmFjZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgImEgYnl0ZXMtbGlrZSBvYmplY3QgaXMgcmVxdWlyZWQsIG5vdCAnY29tcGxleCciKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzLnNlbmR0byhiJ2ZvbycsIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vdCBOb25lVHlwZScsc3RyKGNtLmV4Y2VwdGlvbikpCkBAIC03MjgsMTEgKzczMCwxMSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzLnNlbmR0bygnXHUyNjIwJywgMCwgc29ja25hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIidzdHInIGRvZXMgbm90IHN1cHBvcnQgdGhlIGJ1ZmZlciBpbnRlcmZhY2UiKQorICAgICAgICAgICAgICAgICAgICAgICAgICJhIGJ5dGVzLWxpa2Ugb2JqZWN0IGlzIHJlcXVpcmVkLCBub3QgJ3N0ciciKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzLnNlbmR0byg1aiwgMCwgc29ja25hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIidjb21wbGV4JyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBidWZmZXIgaW50ZXJmYWNlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYSBieXRlcy1saWtlIG9iamVjdCBpcyByZXF1aXJlZCwgbm90ICdjb21wbGV4JyIpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHMuc2VuZHRvKGInZm9vJywgMCwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRJbignbm90IE5vbmVUeXBlJywgc3RyKGNtLmV4Y2VwdGlvbikpCkBAIC0xMDcyLDYgKzEwNzQsNyBAQAogICAgICAgICBhc3NlcnRJbnZhbGlkKGYsIGInXHgwMCcgKiAzKQogICAgICAgICBhc3NlcnRJbnZhbGlkKGYsIGInXHgwMCcgKiA1KQogICAgICAgICBhc3NlcnRJbnZhbGlkKGYsIGInXHgwMCcgKiAxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTcwLjg1LjE3MC44NScsIGYoYnl0ZWFycmF5KGInXHhhYVx4NTVceGFhXHg1NScpKSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxLjAuMS4wJywgZyhiJ1x4MDFceDAwXHgwMVx4MDAnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTcwLjg1LjE3MC44NScsIGcoYidceGFhXHg1NVx4YWFceDU1JykpCkBAIC0xMDc5LDYgKzEwODIsNyBAQAogICAgICAgICBhc3NlcnRJbnZhbGlkKGcsIGInXHgwMCcgKiAzKQogICAgICAgICBhc3NlcnRJbnZhbGlkKGcsIGInXHgwMCcgKiA1KQogICAgICAgICBhc3NlcnRJbnZhbGlkKGcsIGInXHgwMCcgKiAxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTcwLjg1LjE3MC44NScsIGcoYnl0ZWFycmF5KGInXHhhYVx4NTVceGFhXHg1NScpKSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAnaW5ldF9udG9wJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QgbmVlZHMgc29ja2V0LmluZXRfbnRvcCgpJykKQEAgLTExMDgsNiArMTExMiw3IEBACiAgICAgICAgICAgICAnYWVmOmIwMTo1MDY6MTAwMTpmZmZmOjk5OTc6NTU6MTcwJywKICAgICAgICAgICAgIGYoYidceDBhXHhlZlx4MGJceDAxXHgwNVx4MDZceDEwXHgwMVx4ZmZceGZmXHg5OVx4OTdceDAwXHg1NVx4MDFceDcwJykKICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCc6OjEnLCBmKGJ5dGVhcnJheShiJ1x4MDAnICogMTUgKyBiJ1x4MDEnKSkpCiAKICAgICAgICAgYXNzZXJ0SW52YWxpZChiJ1x4MTInICogMTUpCiAgICAgICAgIGFzc2VydEludmFsaWQoYidceDEyJyAqIDE3KQpAQCAtMTM4MiwxMCArMTM4NywxMyBAQAogCiAgICAgZGVmIHRlc3RfbGlzdGVuX2JhY2tsb2coc2VsZik6CiAgICAgICAgIGZvciBiYWNrbG9nIGluIDAsIC0xOgotICAgICAgICAgICAgc3J2ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHNydjoKKyAgICAgICAgICAgICAgICBzcnYuYmluZCgoSE9TVCwgMCkpCisgICAgICAgICAgICAgICAgc3J2Lmxpc3RlbihiYWNrbG9nKQorCisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzcnY6CiAgICAgICAgICAgICBzcnYuYmluZCgoSE9TVCwgMCkpCi0gICAgICAgICAgICBzcnYubGlzdGVuKGJhY2tsb2cpCi0gICAgICAgICAgICBzcnYuY2xvc2UoKQorICAgICAgICAgICAgc3J2Lmxpc3RlbigpCiAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9saXN0ZW5fYmFja2xvZ19vdmVyZmxvdyhzZWxmKToKQEAgLTE0OTEsNiArMTQ5OSw3IEBACiAgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9DQU5fUkFXLCBzb2NrZXQuQ0FOX1JBV19GSUxURVIsIGNhbl9maWx0ZXIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbl9maWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgIHMuZ2V0c29ja29wdChzb2NrZXQuU09MX0NBTl9SQVcsIHNvY2tldC5DQU5fUkFXX0ZJTFRFUiwgOCkpCisgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9DQU5fUkFXLCBzb2NrZXQuQ0FOX1JBV19GSUxURVIsIGJ5dGVhcnJheShjYW5fZmlsdGVyKSkKIAogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVZFX1NPQ0tFVF9DQU4sICdTb2NrZXRDYW4gcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQpAQCAtMzU5Myw3ICszNjAyLDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cGVyKCkuc2V0VXAoKQogICAgICAgICBvcmlnX2Fscm1faGFuZGxlciA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgc2lnbnVtLCBmcmFtZTogTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBzaWdudW0sIGZyYW1lOiAxIC8gMCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNpZ25hbC5zaWduYWwsIHNpZ25hbC5TSUdBTFJNLCBvcmlnX2Fscm1faGFuZGxlcikKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuc2V0QWxhcm0sIDApCiAKQEAgLTM2MzAsMTMgKzM2MzksMTEgQEAKICAgICAgICAgc2VsZi5zZXJ2LnNldHRpbWVvdXQoc2VsZi50aW1lb3V0KQogCiAgICAgZGVmIGNoZWNrSW50ZXJydXB0ZWRSZWN2KHNlbGYsIGZ1bmMsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICMgQ2hlY2sgdGhhdCBmdW5jKCphcmdzLCAqKmt3YXJncykgcmFpc2VzIE9TRXJyb3Igd2l0aCBhbgorICAgICAgICAjIENoZWNrIHRoYXQgZnVuYygqYXJncywgKiprd2FyZ3MpIHJhaXNlcwogICAgICAgICAjIGVycm5vIG9mIEVJTlRSIHdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuCiAgICAgICAgIHNlbGYuc2V0QWxhcm0oc2VsZi5hbGFybV90aW1lKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKSBhcyBjbToKICAgICAgICAgICAgIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoY20uZXhjZXB0aW9uLCBzb2NrZXQudGltZW91dCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVJTlRSKQogCiAgICAgZGVmIHRlc3RJbnRlcnJ1cHRlZFJlY3ZUaW1lb3V0KHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrSW50ZXJydXB0ZWRSZWN2KHNlbGYuc2Vydi5yZWN2LCAxMDI0KQpAQCAtMzY5MiwxMiArMzY5OSwxMCBAQAogICAgICAgICAjIENoZWNrIHRoYXQgZnVuYygqYXJncywgKiprd2FyZ3MpLCBydW4gaW4gYSBsb29wLCByYWlzZXMKICAgICAgICAgIyBPU0Vycm9yIHdpdGggYW4gZXJybm8gb2YgRUlOVFIgd2hlbiBpbnRlcnJ1cHRlZCBieSBhCiAgICAgICAgICMgc2lnbmFsLgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgc2VsZi5zZXRBbGFybShzZWxmLmFsYXJtX3RpbWUpCiAgICAgICAgICAgICAgICAgZnVuYygqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShjbS5leGNlcHRpb24sIHNvY2tldC50aW1lb3V0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUlOVFIpCiAKICAgICAjIElzc3VlICMxMjk1ODogVGhlIGZvbGxvd2luZyB0ZXN0cyBoYXZlIHByb2JsZW1zIG9uIE9TIFggcHJpb3IgdG8gMTAuNwogICAgIEBzdXBwb3J0LnJlcXVpcmVzX21hY192ZXIoMTAsIDcpCkBAIC0zNzM5LDggKzM3NDQsNiBAQAogICAgICAgICBzZWxmLmNsaS5jb25uZWN0KChIT1NULCBzZWxmLnBvcnQpKQogICAgICAgICB0aW1lLnNsZWVwKDEuMCkKIAotQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdzb2NrZXRwYWlyJyksCi0gICAgICAgICAgICAgICAgICAgICAndGVzdCBuZWVkcyBzb2NrZXQuc29ja2V0cGFpcigpJykKIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiBjbGFzcyBCYXNpY1NvY2tldFBhaXJUZXN0KFNvY2tldFBhaXJUZXN0KToKIApAQCAtMzgyMSw3ICszODI0LDcgQEAKICAgICAgICAgc2VsZi5zZXJ2ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNPQ0tfTk9OQkxPQ0spCiAgICAgICAgIHNlbGYucG9ydCA9IHN1cHBvcnQuYmluZF9wb3J0KHNlbGYuc2VydikKLSAgICAgICAgc2VsZi5zZXJ2Lmxpc3RlbigxKQorICAgICAgICBzZWxmLnNlcnYubGlzdGVuKCkKICAgICAgICAgIyBhY3R1YWwgdGVzdGluZwogICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCiAgICAgICAgIHRyeToKQEAgLTQwNjgsMTE3ICs0MDcxLDYgQEAKICAgICAgICAgcGFzcwogCiAKLWNsYXNzIEZpbGVPYmplY3RJbnRlcnJ1cHRlZFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJUZXN0IHRoYXQgdGhlIGZpbGUgb2JqZWN0IGNvcnJlY3RseSBoYW5kbGVzIEVJTlRSIGludGVybmFsbHkuIiIiCi0KLSAgICBjbGFzcyBNb2NrU29ja2V0KG9iamVjdCk6Ci0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZWN2X2Z1bmNzPSgpKToKLSAgICAgICAgICAgICMgQSBnZW5lcmF0b3IgdGhhdCByZXR1cm5zIGNhbGxhYmxlcyB0aGF0IHdlJ2xsIGNhbGwgZm9yIGVhY2gKLSAgICAgICAgICAgICMgY2FsbCB0byByZWN2KCkuCi0gICAgICAgICAgICBzZWxmLl9yZWN2X3N0ZXAgPSBpdGVyKHJlY3ZfZnVuY3MpCi0KLSAgICAgICAgZGVmIHJlY3ZfaW50byhzZWxmLCBidWZmZXIpOgotICAgICAgICAgICAgZGF0YSA9IG5leHQoc2VsZi5fcmVjdl9zdGVwKSgpCi0gICAgICAgICAgICBhc3NlcnQgbGVuKGJ1ZmZlcikgPj0gbGVuKGRhdGEpCi0gICAgICAgICAgICBidWZmZXJbOmxlbihkYXRhKV0gPSBkYXRhCi0gICAgICAgICAgICByZXR1cm4gbGVuKGRhdGEpCi0KLSAgICAgICAgZGVmIF9kZWNyZWZfc29ja2V0aW9zKHNlbGYpOgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIGRlZiBfdGV4dGlvd3JhcF9mb3JfdGVzdChzZWxmLCBidWZmZXJpbmc9LTEpOgotICAgICAgICAgICAgcmF3ID0gc29ja2V0LlNvY2tldElPKHNlbGYsICJyIikKLSAgICAgICAgICAgIGlmIGJ1ZmZlcmluZyA8IDA6Ci0gICAgICAgICAgICAgICAgYnVmZmVyaW5nID0gaW8uREVGQVVMVF9CVUZGRVJfU0laRQotICAgICAgICAgICAgaWYgYnVmZmVyaW5nID09IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJhdwotICAgICAgICAgICAgYnVmZmVyID0gaW8uQnVmZmVyZWRSZWFkZXIocmF3LCBidWZmZXJpbmcpCi0gICAgICAgICAgICB0ZXh0ID0gaW8uVGV4dElPV3JhcHBlcihidWZmZXIsIE5vbmUsIE5vbmUpCi0gICAgICAgICAgICB0ZXh0Lm1vZGUgPSAicmIiCi0gICAgICAgICAgICByZXR1cm4gdGV4dAotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfcmFpc2VfZWludHIoKToKLSAgICAgICAgcmFpc2UgT1NFcnJvcihlcnJuby5FSU5UUiwgImludGVycnVwdGVkIikKLQotICAgIGRlZiBfdGV4dGlvd3JhcF9tb2NrX3NvY2tldChzZWxmLCBtb2NrLCBidWZmZXJpbmc9LTEpOgotICAgICAgICByYXcgPSBzb2NrZXQuU29ja2V0SU8obW9jaywgInIiKQotICAgICAgICBpZiBidWZmZXJpbmcgPCAwOgotICAgICAgICAgICAgYnVmZmVyaW5nID0gaW8uREVGQVVMVF9CVUZGRVJfU0laRQotICAgICAgICBpZiBidWZmZXJpbmcgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiByYXcKLSAgICAgICAgYnVmZmVyID0gaW8uQnVmZmVyZWRSZWFkZXIocmF3LCBidWZmZXJpbmcpCi0gICAgICAgIHRleHQgPSBpby5UZXh0SU9XcmFwcGVyKGJ1ZmZlciwgTm9uZSwgTm9uZSkKLSAgICAgICAgdGV4dC5tb2RlID0gInJiIgotICAgICAgICByZXR1cm4gdGV4dAotCi0gICAgZGVmIF90ZXN0X3JlYWRsaW5lKHNlbGYsIHNpemU9LTEsIGJ1ZmZlcmluZz0tMSk6Ci0gICAgICAgIG1vY2tfc29jayA9IHNlbGYuTW9ja1NvY2tldChyZWN2X2Z1bmNzPVsKLSAgICAgICAgICAgICAgICBsYW1iZGEgOiBiIlRoaXMgaXMgdGhlIGZpcnN0IGxpbmVcbkFuZCB0aGUgc2VjIiwKLSAgICAgICAgICAgICAgICBzZWxmLl9yYWlzZV9laW50ciwKLSAgICAgICAgICAgICAgICBsYW1iZGEgOiBiIm9uZCBsaW5lIGlzIGhlcmVcbiIsCi0gICAgICAgICAgICAgICAgbGFtYmRhIDogYiIiLAotICAgICAgICAgICAgICAgIGxhbWJkYSA6IGIiIiwgICMgWFhYKGdwcyk6IGlvIGxpYnJhcnkgZG9lcyBhbiBleHRyYSBFT0YgcmVhZAotICAgICAgICAgICAgXSkKLSAgICAgICAgZm8gPSBtb2NrX3NvY2suX3RleHRpb3dyYXBfZm9yX3Rlc3QoYnVmZmVyaW5nPWJ1ZmZlcmluZykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmby5yZWFkbGluZShzaXplKSwgIlRoaXMgaXMgdGhlIGZpcnN0IGxpbmVcbiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm8ucmVhZGxpbmUoc2l6ZSksICJBbmQgdGhlIHNlY29uZCBsaW5lIGlzIGhlcmVcbiIpCi0KLSAgICBkZWYgX3Rlc3RfcmVhZChzZWxmLCBzaXplPS0xLCBidWZmZXJpbmc9LTEpOgotICAgICAgICBtb2NrX3NvY2sgPSBzZWxmLk1vY2tTb2NrZXQocmVjdl9mdW5jcz1bCi0gICAgICAgICAgICAgICAgbGFtYmRhIDogYiJUaGlzIGlzIHRoZSBmaXJzdCBsaW5lXG5BbmQgdGhlIHNlYyIsCi0gICAgICAgICAgICAgICAgc2VsZi5fcmFpc2VfZWludHIsCi0gICAgICAgICAgICAgICAgbGFtYmRhIDogYiJvbmQgbGluZSBpcyBoZXJlXG4iLAotICAgICAgICAgICAgICAgIGxhbWJkYSA6IGIiIiwKLSAgICAgICAgICAgICAgICBsYW1iZGEgOiBiIiIsICAjIFhYWChncHMpOiBpbyBsaWJyYXJ5IGRvZXMgYW4gZXh0cmEgRU9GIHJlYWQKLSAgICAgICAgICAgIF0pCi0gICAgICAgIGV4cGVjdGluZyA9IChiIlRoaXMgaXMgdGhlIGZpcnN0IGxpbmVcbiIKLSAgICAgICAgICAgICAgICAgICAgIGIiQW5kIHRoZSBzZWNvbmQgbGluZSBpcyBoZXJlXG4iKQotICAgICAgICBmbyA9IG1vY2tfc29jay5fdGV4dGlvd3JhcF9mb3JfdGVzdChidWZmZXJpbmc9YnVmZmVyaW5nKQotICAgICAgICBpZiBidWZmZXJpbmcgPT0gMDoKLSAgICAgICAgICAgIGRhdGEgPSBiJycKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRhdGEgPSAnJwotICAgICAgICAgICAgZXhwZWN0aW5nID0gZXhwZWN0aW5nLmRlY29kZSgndXRmLTgnKQotICAgICAgICB3aGlsZSBsZW4oZGF0YSkgIT0gbGVuKGV4cGVjdGluZyk6Ci0gICAgICAgICAgICBwYXJ0ID0gZm8ucmVhZChzaXplKQotICAgICAgICAgICAgaWYgbm90IHBhcnQ6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGRhdGEgKz0gcGFydAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGV4cGVjdGluZykKLQotICAgIGRlZiB0ZXN0X2RlZmF1bHQoc2VsZik6Ci0gICAgICAgIHNlbGYuX3Rlc3RfcmVhZGxpbmUoKQotICAgICAgICBzZWxmLl90ZXN0X3JlYWRsaW5lKHNpemU9MTAwKQotICAgICAgICBzZWxmLl90ZXN0X3JlYWQoKQotICAgICAgICBzZWxmLl90ZXN0X3JlYWQoc2l6ZT0xMDApCi0KLSAgICBkZWYgdGVzdF93aXRoXzFrX2J1ZmZlcihzZWxmKToKLSAgICAgICAgc2VsZi5fdGVzdF9yZWFkbGluZShidWZmZXJpbmc9MTAyNCkKLSAgICAgICAgc2VsZi5fdGVzdF9yZWFkbGluZShzaXplPTEwMCwgYnVmZmVyaW5nPTEwMjQpCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVhZChidWZmZXJpbmc9MTAyNCkKLSAgICAgICAgc2VsZi5fdGVzdF9yZWFkKHNpemU9MTAwLCBidWZmZXJpbmc9MTAyNCkKLQotICAgIGRlZiBfdGVzdF9yZWFkbGluZV9ub19idWZmZXIoc2VsZiwgc2l6ZT0tMSk6Ci0gICAgICAgIG1vY2tfc29jayA9IHNlbGYuTW9ja1NvY2tldChyZWN2X2Z1bmNzPVsKLSAgICAgICAgICAgICAgICBsYW1iZGEgOiBiImEiLAotICAgICAgICAgICAgICAgIGxhbWJkYSA6IGIiXG4iLAotICAgICAgICAgICAgICAgIGxhbWJkYSA6IGIiQiIsCi0gICAgICAgICAgICAgICAgc2VsZi5fcmFpc2VfZWludHIsCi0gICAgICAgICAgICAgICAgbGFtYmRhIDogYiJiIiwKLSAgICAgICAgICAgICAgICBsYW1iZGEgOiBiIiIsCi0gICAgICAgICAgICBdKQotICAgICAgICBmbyA9IG1vY2tfc29jay5fdGV4dGlvd3JhcF9mb3JfdGVzdChidWZmZXJpbmc9MCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmby5yZWFkbGluZShzaXplKSwgYiJhXG4iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvLnJlYWRsaW5lKHNpemUpLCBiIkJiIikKLQotICAgIGRlZiB0ZXN0X25vX2J1ZmZlcihzZWxmKToKLSAgICAgICAgc2VsZi5fdGVzdF9yZWFkbGluZV9ub19idWZmZXIoKQotICAgICAgICBzZWxmLl90ZXN0X3JlYWRsaW5lX25vX2J1ZmZlcihzaXplPTQpCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVhZChidWZmZXJpbmc9MCkKLSAgICAgICAgc2VsZi5fdGVzdF9yZWFkKHNpemU9MTAwLCBidWZmZXJpbmc9MCkKLQotCiBjbGFzcyBVbmJ1ZmZlcmVkRmlsZU9iamVjdENsYXNzVGVzdENhc2UoRmlsZU9iamVjdENsYXNzVGVzdENhc2UpOgogCiAgICAgIiIiUmVwZWF0IHRoZSB0ZXN0cyBmcm9tIEZpbGVPYmplY3RDbGFzc1Rlc3RDYXNlIHdpdGggYnVmc2l6ZT09MC4KQEAgLTQ1OTcsNyArNDQ4OSw3IEBACiAgICAgICAgIGFkZHJlc3MgPSBiIlx4MDBweXRob24tdGVzdC1oZWxsb1x4MDBceGZmIgogICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgczE6CiAgICAgICAgICAgICBzMS5iaW5kKGFkZHJlc3MpCi0gICAgICAgICAgICBzMS5saXN0ZW4oMSkKKyAgICAgICAgICAgIHMxLmxpc3RlbigpCiAgICAgICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgczI6CiAgICAgICAgICAgICAgICAgczIuY29ubmVjdChzMS5nZXRzb2NrbmFtZSgpKQogICAgICAgICAgICAgICAgIHdpdGggczEuYWNjZXB0KClbMF0gYXMgczM6CkBAIC00NjI0LDYgKzQ1MTYsMTIgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHMuY2xvc2UoKQogCisgICAgZGVmIHRlc3RCeXRlYXJyYXlOYW1lKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgYW4gYWJzdHJhY3QgbmFtZSBjYW4gYmUgcGFzc2VkIGFzIGEgYnl0ZWFycmF5LgorICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgczoKKyAgICAgICAgICAgIHMuYmluZChieXRlYXJyYXkoYiJceDAwcHl0aG9uXHgwMHRlc3RceDAwIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0c29ja25hbWUoKSwgYiJceDAwcHl0aG9uXHgwMHRlc3RceDAwIikKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdBRl9VTklYJyksICd0ZXN0IG5lZWRzIHNvY2tldC5BRl9VTklYJykKIGNsYXNzIFRlc3RVbml4RG9tYWluKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNDgyOSw3ICs0NzI3LDcgQEAKICAgICAgICAgc3J2YWRkciA9IChzb2NrZXQuVElQQ19BRERSX05BTUVTRVEsIFRJUENfU1RZUEUsCiAgICAgICAgICAgICAgICAgVElQQ19MT1dFUiwgVElQQ19VUFBFUikKICAgICAgICAgc2VsZi5zcnYuYmluZChzcnZhZGRyKQotICAgICAgICBzZWxmLnNydi5saXN0ZW4oNSkKKyAgICAgICAgc2VsZi5zcnYubGlzdGVuKCkKICAgICAgICAgc2VsZi5zZXJ2ZXJFeHBsaWNpdFJlYWR5KCkKICAgICAgICAgc2VsZi5jb25uLCBzZWxmLmNvbm5hZGRyID0gc2VsZi5zcnYuYWNjZXB0KCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuY29ubi5jbG9zZSkKQEAgLTUxMTgsNiArNTAxNiwyNzUgQEAKICAgICAgICAgICAgICAgICAgICAgc291cmNlLmNsb3NlKCkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgU2VuZGZpbGVVc2luZ1NlbmRUZXN0KFRocmVhZGVkVENQU29ja2V0VGVzdCk6CisgICAgIiIiCisgICAgVGVzdCB0aGUgc2VuZCgpIGltcGxlbWVudGF0aW9uIG9mIHNvY2tldC5zZW5kZmlsZSgpLgorICAgICIiIgorCisgICAgRklMRVNJWkUgPSAoMTAgKiAxMDI0ICogMTAyNCkgICMgMTBNQgorICAgIEJVRlNJWkUgPSA4MTkyCisgICAgRklMRURBVEEgPSBiIiIKKyAgICBUSU1FT1VUID0gMgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgZGVmIGNodW5rcyh0b3RhbCwgc3RlcCk6CisgICAgICAgICAgICBhc3NlcnQgdG90YWwgPj0gc3RlcAorICAgICAgICAgICAgd2hpbGUgdG90YWwgPiBzdGVwOgorICAgICAgICAgICAgICAgIHlpZWxkIHN0ZXAKKyAgICAgICAgICAgICAgICB0b3RhbCAtPSBzdGVwCisgICAgICAgICAgICBpZiB0b3RhbDoKKyAgICAgICAgICAgICAgICB5aWVsZCB0b3RhbAorCisgICAgICAgIGNodW5rID0gYiIiLmpvaW4oW3JhbmRvbS5jaG9pY2Uoc3RyaW5nLmFzY2lpX2xldHRlcnMpLmVuY29kZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGNscy5CVUZTSVpFKV0pCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3diJykgYXMgZjoKKyAgICAgICAgICAgIGZvciBjc2l6ZSBpbiBjaHVua3MoY2xzLkZJTEVTSVpFLCBjbHMuQlVGU0laRSk6CisgICAgICAgICAgICAgICAgZi53cml0ZShjaHVuaykKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncmInKSBhcyBmOgorICAgICAgICAgICAgY2xzLkZJTEVEQVRBID0gZi5yZWFkKCkKKyAgICAgICAgICAgIGFzc2VydCBsZW4oY2xzLkZJTEVEQVRBKSA9PSBjbHMuRklMRVNJWkUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorCisgICAgZGVmIGFjY2VwdF9jb25uKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnYuc2V0dGltZW91dChzZWxmLlRJTUVPVVQpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnYuYWNjZXB0KCkKKyAgICAgICAgY29ubi5zZXR0aW1lb3V0KHNlbGYuVElNRU9VVCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNvbm4uY2xvc2UpCisgICAgICAgIHJldHVybiBjb25uCisKKyAgICBkZWYgcmVjdl9kYXRhKHNlbGYsIGNvbm4pOgorICAgICAgICByZWNlaXZlZCA9IFtdCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBjaHVuayA9IGNvbm4ucmVjdihzZWxmLkJVRlNJWkUpCisgICAgICAgICAgICBpZiBub3QgY2h1bms6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHJlY2VpdmVkLmFwcGVuZChjaHVuaykKKyAgICAgICAgcmV0dXJuIGInJy5qb2luKHJlY2VpdmVkKQorCisgICAgZGVmIG1ldGhfZnJvbV9zb2NrKHNlbGYsIHNvY2spOgorICAgICAgICAjIERlcGVuZGluZyBvbiB0aGUgbWl4aW4gY2xhc3MgYmVpbmcgcnVuIHJldHVybiBlaXRoZXIgc2VuZCgpCisgICAgICAgICMgb3Igc2VuZGZpbGUoKSBtZXRob2QgaW1wbGVtZW50YXRpb24uCisgICAgICAgIHJldHVybiBnZXRhdHRyKHNvY2ssICJfc2VuZGZpbGVfdXNlX3NlbmQiKQorCisgICAgIyByZWd1bGFyIGZpbGUKKworICAgIGRlZiBfdGVzdFJlZ3VsYXJGaWxlKHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5zZXJ2LmdldHNvY2tuYW1lKCkKKyAgICAgICAgZmlsZSA9IG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpCisgICAgICAgIHdpdGggc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MpIGFzIHNvY2ssIGZpbGUgYXMgZmlsZToKKyAgICAgICAgICAgIG1ldGggPSBzZWxmLm1ldGhfZnJvbV9zb2NrKHNvY2spCisgICAgICAgICAgICBzZW50ID0gbWV0aChmaWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50LCBzZWxmLkZJTEVTSVpFKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlLnRlbGwoKSwgc2VsZi5GSUxFU0laRSkKKworICAgIGRlZiB0ZXN0UmVndWxhckZpbGUoc2VsZik6CisgICAgICAgIGNvbm4gPSBzZWxmLmFjY2VwdF9jb25uKCkKKyAgICAgICAgZGF0YSA9IHNlbGYucmVjdl9kYXRhKGNvbm4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCBzZWxmLkZJTEVTSVpFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIHNlbGYuRklMRURBVEEpCisKKyAgICAjIG5vbiByZWd1bGFyIGZpbGUKKworICAgIGRlZiBfdGVzdE5vblJlZ3VsYXJGaWxlKHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5zZXJ2LmdldHNvY2tuYW1lKCkKKyAgICAgICAgZmlsZSA9IGlvLkJ5dGVzSU8oc2VsZi5GSUxFREFUQSkKKyAgICAgICAgd2l0aCBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcmVzcykgYXMgc29jaywgZmlsZSBhcyBmaWxlOgorICAgICAgICAgICAgc2VudCA9IHNvY2suc2VuZGZpbGUoZmlsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudCwgc2VsZi5GSUxFU0laRSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZS50ZWxsKCksIHNlbGYuRklMRVNJWkUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuX0dpdmV1cE9uU2VuZGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrLl9zZW5kZmlsZV91c2Vfc2VuZGZpbGUsIGZpbGUpCisKKyAgICBkZWYgdGVzdE5vblJlZ3VsYXJGaWxlKHNlbGYpOgorICAgICAgICBjb25uID0gc2VsZi5hY2NlcHRfY29ubigpCisgICAgICAgIGRhdGEgPSBzZWxmLnJlY3ZfZGF0YShjb25uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgc2VsZi5GSUxFU0laRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBzZWxmLkZJTEVEQVRBKQorCisgICAgIyBlbXB0eSBmaWxlCisKKyAgICBkZWYgX3Rlc3RFbXB0eUZpbGVTZW5kKHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5zZXJ2LmdldHNvY2tuYW1lKCkKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTiArICIyIgorICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd3YicpOgorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKyAgICAgICAgZmlsZSA9IG9wZW4oZmlsZW5hbWUsICdyYicpCisgICAgICAgIHdpdGggc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MpIGFzIHNvY2ssIGZpbGUgYXMgZmlsZToKKyAgICAgICAgICAgIG1ldGggPSBzZWxmLm1ldGhfZnJvbV9zb2NrKHNvY2spCisgICAgICAgICAgICBzZW50ID0gbWV0aChmaWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50LCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlLnRlbGwoKSwgMCkKKworICAgIGRlZiB0ZXN0RW1wdHlGaWxlU2VuZChzZWxmKToKKyAgICAgICAgY29ubiA9IHNlbGYuYWNjZXB0X2Nvbm4oKQorICAgICAgICBkYXRhID0gc2VsZi5yZWN2X2RhdGEoY29ubikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBiIiIpCisKKyAgICAjIG9mZnNldAorCisgICAgZGVmIF90ZXN0T2Zmc2V0KHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5zZXJ2LmdldHNvY2tuYW1lKCkKKyAgICAgICAgZmlsZSA9IG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpCisgICAgICAgIHdpdGggc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MpIGFzIHNvY2ssIGZpbGUgYXMgZmlsZToKKyAgICAgICAgICAgIG1ldGggPSBzZWxmLm1ldGhfZnJvbV9zb2NrKHNvY2spCisgICAgICAgICAgICBzZW50ID0gbWV0aChmaWxlLCBvZmZzZXQ9NTAwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudCwgc2VsZi5GSUxFU0laRSAtIDUwMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGUudGVsbCgpLCBzZWxmLkZJTEVTSVpFKQorCisgICAgZGVmIHRlc3RPZmZzZXQoc2VsZik6CisgICAgICAgIGNvbm4gPSBzZWxmLmFjY2VwdF9jb25uKCkKKyAgICAgICAgZGF0YSA9IHNlbGYucmVjdl9kYXRhKGNvbm4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCBzZWxmLkZJTEVTSVpFIC0gNTAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBzZWxmLkZJTEVEQVRBWzUwMDA6XSkKKworICAgICMgY291bnQKKworICAgIGRlZiBfdGVzdENvdW50KHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5zZXJ2LmdldHNvY2tuYW1lKCkKKyAgICAgICAgZmlsZSA9IG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpCisgICAgICAgIHdpdGggc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MsIHRpbWVvdXQ9MikgYXMgc29jaywgZmlsZSBhcyBmaWxlOgorICAgICAgICAgICAgY291bnQgPSA1MDAwMDA3CisgICAgICAgICAgICBtZXRoID0gc2VsZi5tZXRoX2Zyb21fc29jayhzb2NrKQorICAgICAgICAgICAgc2VudCA9IG1ldGgoZmlsZSwgY291bnQ9Y291bnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbnQsIGNvdW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlLnRlbGwoKSwgY291bnQpCisKKyAgICBkZWYgdGVzdENvdW50KHNlbGYpOgorICAgICAgICBjb3VudCA9IDUwMDAwMDcKKyAgICAgICAgY29ubiA9IHNlbGYuYWNjZXB0X2Nvbm4oKQorICAgICAgICBkYXRhID0gc2VsZi5yZWN2X2RhdGEoY29ubikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIGNvdW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIHNlbGYuRklMRURBVEFbOmNvdW50XSkKKworICAgICMgY291bnQgc21hbGwKKworICAgIGRlZiBfdGVzdENvdW50U21hbGwoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLnNlcnYuZ2V0c29ja25hbWUoKQorICAgICAgICBmaWxlID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykKKyAgICAgICAgd2l0aCBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcmVzcywgdGltZW91dD0yKSBhcyBzb2NrLCBmaWxlIGFzIGZpbGU6CisgICAgICAgICAgICBjb3VudCA9IDEKKyAgICAgICAgICAgIG1ldGggPSBzZWxmLm1ldGhfZnJvbV9zb2NrKHNvY2spCisgICAgICAgICAgICBzZW50ID0gbWV0aChmaWxlLCBjb3VudD1jb3VudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudCwgY291bnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGUudGVsbCgpLCBjb3VudCkKKworICAgIGRlZiB0ZXN0Q291bnRTbWFsbChzZWxmKToKKyAgICAgICAgY291bnQgPSAxCisgICAgICAgIGNvbm4gPSBzZWxmLmFjY2VwdF9jb25uKCkKKyAgICAgICAgZGF0YSA9IHNlbGYucmVjdl9kYXRhKGNvbm4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCBjb3VudCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBzZWxmLkZJTEVEQVRBWzpjb3VudF0pCisKKyAgICAjIGNvdW50ICsgb2Zmc2V0CisKKyAgICBkZWYgX3Rlc3RDb3VudFdpdGhPZmZzZXQoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLnNlcnYuZ2V0c29ja25hbWUoKQorICAgICAgICBmaWxlID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykKKyAgICAgICAgd2l0aCBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcmVzcywgdGltZW91dD0yKSBhcyBzb2NrLCBmaWxlIGFzIGZpbGU6CisgICAgICAgICAgICBjb3VudCA9IDEwMDAwNworICAgICAgICAgICAgbWV0aCA9IHNlbGYubWV0aF9mcm9tX3NvY2soc29jaykKKyAgICAgICAgICAgIHNlbnQgPSBtZXRoKGZpbGUsIG9mZnNldD0yMDA3LCBjb3VudD1jb3VudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudCwgY291bnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGUudGVsbCgpLCBjb3VudCArIDIwMDcpCisKKyAgICBkZWYgdGVzdENvdW50V2l0aE9mZnNldChzZWxmKToKKyAgICAgICAgY291bnQgPSAxMDAwMDcKKyAgICAgICAgY29ubiA9IHNlbGYuYWNjZXB0X2Nvbm4oKQorICAgICAgICBkYXRhID0gc2VsZi5yZWN2X2RhdGEoY29ubikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIGNvdW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIHNlbGYuRklMRURBVEFbMjAwNzpjb3VudCsyMDA3XSkKKworICAgICMgbm9uIGJsb2NraW5nIHNvY2tldHMgYXJlIG5vdCBzdXBwb3NlZCB0byB3b3JrCisKKyAgICBkZWYgX3Rlc3ROb25CbG9ja2luZyhzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuc2Vydi5nZXRzb2NrbmFtZSgpCisgICAgICAgIGZpbGUgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncmInKQorICAgICAgICB3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzKSBhcyBzb2NrLCBmaWxlIGFzIGZpbGU6CisgICAgICAgICAgICBzb2NrLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICAgICAgbWV0aCA9IHNlbGYubWV0aF9mcm9tX3NvY2soc29jaykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1ldGgsIGZpbGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzb2NrLnNlbmRmaWxlLCBmaWxlKQorCisgICAgZGVmIHRlc3ROb25CbG9ja2luZyhzZWxmKToKKyAgICAgICAgY29ubiA9IHNlbGYuYWNjZXB0X2Nvbm4oKQorICAgICAgICBpZiBjb25uLnJlY3YoODE5Mik6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ3dhcyBub3Qgc3VwcG9zZWQgdG8gcmVjZWl2ZSBhbnkgZGF0YScpCisKKyAgICAjIHRpbWVvdXQgKG5vbi10cmlnZ2VyZWQpCisKKyAgICBkZWYgX3Rlc3RXaXRoVGltZW91dChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuc2Vydi5nZXRzb2NrbmFtZSgpCisgICAgICAgIGZpbGUgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncmInKQorICAgICAgICB3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzLCB0aW1lb3V0PTIpIGFzIHNvY2ssIGZpbGUgYXMgZmlsZToKKyAgICAgICAgICAgIG1ldGggPSBzZWxmLm1ldGhfZnJvbV9zb2NrKHNvY2spCisgICAgICAgICAgICBzZW50ID0gbWV0aChmaWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50LCBzZWxmLkZJTEVTSVpFKQorCisgICAgZGVmIHRlc3RXaXRoVGltZW91dChzZWxmKToKKyAgICAgICAgY29ubiA9IHNlbGYuYWNjZXB0X2Nvbm4oKQorICAgICAgICBkYXRhID0gc2VsZi5yZWN2X2RhdGEoY29ubikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIHNlbGYuRklMRVNJWkUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgc2VsZi5GSUxFREFUQSkKKworICAgICMgdGltZW91dCAodHJpZ2dlcmVkKQorCisgICAgZGVmIF90ZXN0V2l0aFRpbWVvdXRUcmlnZ2VyZWRTZW5kKHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5zZXJ2LmdldHNvY2tuYW1lKCkKKyAgICAgICAgZmlsZSA9IG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpCisgICAgICAgIHdpdGggc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MsIHRpbWVvdXQ9MC4wMSkgYXMgc29jaywgXAorICAgICAgICAgICAgICAgIGZpbGUgYXMgZmlsZToKKyAgICAgICAgICAgIG1ldGggPSBzZWxmLm1ldGhfZnJvbV9zb2NrKHNvY2spCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQudGltZW91dCwgbWV0aCwgZmlsZSkKKworICAgIGRlZiB0ZXN0V2l0aFRpbWVvdXRUcmlnZ2VyZWRTZW5kKHNlbGYpOgorICAgICAgICBjb25uID0gc2VsZi5hY2NlcHRfY29ubigpCisgICAgICAgIGNvbm4ucmVjdig4ODE5MikKKworICAgICMgZXJyb3JzCisKKyAgICBkZWYgX3Rlc3RfZXJyb3JzKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykgYXMgZmlsZToKKyAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldCh0eXBlPXNvY2tldC5TT0NLX0RHUkFNKSBhcyBzOgorICAgICAgICAgICAgICAgIG1ldGggPSBzZWxmLm1ldGhfZnJvbV9zb2NrKHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICAgICAgVmFsdWVFcnJvciwgIlNPQ0tfU1RSRUFNIiwgbWV0aCwgZmlsZSkKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncnQnKSBhcyBmaWxlOgorICAgICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KCkgYXMgczoKKyAgICAgICAgICAgICAgICBtZXRoID0gc2VsZi5tZXRoX2Zyb21fc29jayhzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgICAgIFZhbHVlRXJyb3IsICJiaW5hcnkgbW9kZSIsIG1ldGgsIGZpbGUpCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykgYXMgZmlsZToKKyAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldCgpIGFzIHM6CisgICAgICAgICAgICAgICAgbWV0aCA9IHNlbGYubWV0aF9mcm9tX3NvY2socykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgInBvc2l0aXZlIGludGVnZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aCwgZmlsZSwgY291bnQ9JzInKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAicG9zaXRpdmUgaW50ZWdlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRoLCBmaWxlLCBjb3VudD0wLjEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAicG9zaXRpdmUgaW50ZWdlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRoLCBmaWxlLCBjb3VudD0wKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgInBvc2l0aXZlIGludGVnZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aCwgZmlsZSwgY291bnQ9LTEpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICJzZW5kZmlsZSIpLAorICAgICAgICAgICAgICAgICAgICAgJ29zLnNlbmRmaWxlKCkgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgU2VuZGZpbGVVc2luZ1NlbmRmaWxlVGVzdChTZW5kZmlsZVVzaW5nU2VuZFRlc3QpOgorICAgICIiIgorICAgIFRlc3QgdGhlIHNlbmRmaWxlKCkgaW1wbGVtZW50YXRpb24gb2Ygc29ja2V0LnNlbmRmaWxlKCkuCisgICAgIiIiCisgICAgZGVmIG1ldGhfZnJvbV9zb2NrKHNlbGYsIHNvY2spOgorICAgICAgICByZXR1cm4gZ2V0YXR0cihzb2NrLCAiX3NlbmRmaWxlX3VzZV9zZW5kZmlsZSIpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3RzID0gW0dlbmVyYWxNb2R1bGVUZXN0cywgQmFzaWNUQ1BUZXN0LCBUQ1BDbG9zZXJUZXN0LCBUQ1BUaW1lb3V0VGVzdCwKICAgICAgICAgICAgICBUZXN0RXhjZXB0aW9ucywgQnVmZmVySU9UZXN0LCBCYXNpY1RDUFRlc3QyLCBCYXNpY1VEUFRlc3QsIFVEUFRpbWVvdXRUZXN0IF0KQEAgLTUxMjUsNyArNTI5Miw2IEBACiAgICAgdGVzdHMuZXh0ZW5kKFsKICAgICAgICAgTm9uQmxvY2tpbmdUQ1BUZXN0cywKICAgICAgICAgRmlsZU9iamVjdENsYXNzVGVzdENhc2UsCi0gICAgICAgIEZpbGVPYmplY3RJbnRlcnJ1cHRlZFRlc3RDYXNlLAogICAgICAgICBVbmJ1ZmZlcmVkRmlsZU9iamVjdENsYXNzVGVzdENhc2UsCiAgICAgICAgIExpbmVCdWZmZXJlZEZpbGVPYmplY3RDbGFzc1Rlc3RDYXNlLAogICAgICAgICBTbWFsbEJ1ZmZlcmVkRmlsZU9iamVjdENsYXNzVGVzdENhc2UsCkBAIC01MTcwLDYgKzUzMzYsOCBAQAogICAgICAgICBJbnRlcnJ1cHRlZFJlY3ZUaW1lb3V0VGVzdCwKICAgICAgICAgSW50ZXJydXB0ZWRTZW5kVGltZW91dFRlc3QsCiAgICAgICAgIFRlc3RTb2NrZXRTaGFyaW5nLAorICAgICAgICBTZW5kZmlsZVVzaW5nU2VuZFRlc3QsCisgICAgICAgIFNlbmRmaWxlVXNpbmdTZW5kZmlsZVRlc3QsCiAgICAgXSkKIAogICAgIHRocmVhZF9pbmZvID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQppbmRleCAzMjVkNDg1Li4xZWE2NmE2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQpAQCAtMjIyLDM4ICsyMjIsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldHNlcnZlci5EYXRhZ3JhbVJlcXVlc3RIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGdyYW1fZXhhbWluZSkKIAotICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCi0gICAgZGVmIG1vY2tlZF9zZWxlY3RfbW9kdWxlKHNlbGYpOgotICAgICAgICAiIiJNb2NrcyB0aGUgc2VsZWN0LnNlbGVjdCgpIGNhbGwgdG8gcmFpc2UgRUlOVFIgZm9yIGZpcnN0IGNhbGwiIiIKLSAgICAgICAgb2xkX3NlbGVjdCA9IHNlbGVjdC5zZWxlY3QKLQotICAgICAgICBjbGFzcyBNb2NrU2VsZWN0OgotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICAgICAgICAgIHNlbGYuY2FsbGVkID0gMAotCi0gICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MpOgotICAgICAgICAgICAgICAgIHNlbGYuY2FsbGVkICs9IDEKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmNhbGxlZCA9PSAxOgotICAgICAgICAgICAgICAgICAgICAjIHJhaXNlIHRoZSBleGNlcHRpb24gb24gZmlyc3QgY2FsbAotICAgICAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKGVycm5vLkVJTlRSLCBvcy5zdHJlcnJvcihlcnJuby5FSU5UUikpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIyBSZXR1cm4gcmVhbCBzZWxlY3QgdmFsdWUgZm9yIGNvbnNlY3V0aXZlIGNhbGxzCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBvbGRfc2VsZWN0KCphcmdzKQotCi0gICAgICAgIHNlbGVjdC5zZWxlY3QgPSBNb2NrU2VsZWN0KCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgeWllbGQgc2VsZWN0LnNlbGVjdAotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZWN0LnNlbGVjdCA9IG9sZF9zZWxlY3QKLQotICAgIGRlZiB0ZXN0X0ludGVycnVwdFNlcnZlclNlbGVjdENhbGwoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5tb2NrZWRfc2VsZWN0X21vZHVsZSgpIGFzIG1vY2tfc2VsZWN0OgotICAgICAgICAgICAgcGlkID0gc2VsZi5ydW5fc2VydmVyKHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtX2V4YW1pbmUpCi0gICAgICAgICAgICAjIE1ha2Ugc3VyZSBzZWxlY3Qgd2FzIGNhbGxlZCBhZ2FpbjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihtb2NrX3NlbGVjdC5jYWxsZWQsIDEpCi0KICAgICAjIEFsYXMsIG9uIExpbnV4IChhdCBsZWFzdCkgcmVjdmZyb20oKSBkb2Vzbid0IHJldHVybiBhIG1lYW5pbmdmdWwKICAgICAjIGNsaWVudCBhZGRyZXNzIHNvIHRoaXMgY2Fubm90IHdvcms6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc29ydC5weSBiL0xpYi90ZXN0L3Rlc3Rfc29ydC5weQppbmRleCA4ZjZhZjY0Li5hNWQwZWJmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zb3J0LnB5CkBAIC0yNjIsMjQgKzI2Miw1IEBACiAKICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgotICAgIHRlc3RfY2xhc3NlcyA9ICgKLSAgICAgICAgVGVzdEJhc2UsCi0gICAgICAgIFRlc3REZWNvcmF0ZVNvcnRVbmRlY29yYXRlLAotICAgICAgICBUZXN0QnVncywKLSAgICApCi0KLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQotCi0gICAgIyB2ZXJpZnkgcmVmZXJlbmNlIGNvdW50aW5nCi0gICAgaWYgdmVyYm9zZSBhbmQgaGFzYXR0cihzeXMsICJnZXR0b3RhbHJlZmNvdW50Iik6Ci0gICAgICAgIGltcG9ydCBnYwotICAgICAgICBjb3VudHMgPSBbTm9uZV0gKiA1Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihjb3VudHMpKToKLSAgICAgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCi0gICAgICAgICAgICBnYy5jb2xsZWN0KCkKLSAgICAgICAgICAgIGNvdW50c1tpXSA9IHN5cy5nZXR0b3RhbHJlZmNvdW50KCkKLSAgICAgICAgcHJpbnQoY291bnRzKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbih2ZXJib3NlPVRydWUpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NzbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CmluZGV4IGMxOTM5YjUuLmE0ODBiNzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CkBAIC04Niw2ICs4NiwxMiBAQAogICAgICMgMC45Ljggb3IgaGlnaGVyCiAgICAgcmV0dXJuIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA+PSAoMCwgOSwgOCwgMCwgMTUpCiAKK2RlZiB1dGNfb2Zmc2V0KCk6ICNOT1RFOiBpZ25vcmUgaXNzdWVzIGxpa2UgIzE2NDc2NTQKKyAgICAjIGxvY2FsIHRpbWUgPSB1dGMgdGltZSArIHV0YyBvZmZzZXQKKyAgICBpZiB0aW1lLmRheWxpZ2h0IGFuZCB0aW1lLmxvY2FsdGltZSgpLnRtX2lzZHN0ID4gMDoKKyAgICAgICAgcmV0dXJuIC10aW1lLmFsdHpvbmUgICMgc2Vjb25kcworICAgIHJldHVybiAtdGltZS50aW1lem9uZQorCiBkZWYgYXNuMXRpbWUoY2VydF90aW1lKToKICAgICAjIFNvbWUgdmVyc2lvbnMgb2YgT3BlblNTTCBpZ25vcmUgc2Vjb25kcywgc2VlICMxODIwNwogICAgICMgMC45LjguaQpAQCAtMTM0LDYgKzE0MCwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEluKHNzbC5IQVNfU05JLCB7VHJ1ZSwgRmFsc2V9KQogICAgICAgICBzZWxmLmFzc2VydEluKHNzbC5IQVNfRUNESCwge1RydWUsIEZhbHNlfSkKIAorICAgIGRlZiB0ZXN0X3N0cl9mb3JfZW51bXMoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgdGhlIFBST1RPQ09MXyogY29uc3RhbnRzIGhhdmUgZW51bS1saWtlIHN0cmluZworICAgICAgICAjIHJlcHJzLgorICAgICAgICBwcm90byA9IHNzbC5QUk9UT0NPTF9TU0x2MjMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocHJvdG8pLCAnX1NTTE1ldGhvZC5QUk9UT0NPTF9TU0x2MjMnKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChwcm90bykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhjdHgucHJvdG9jb2wsIHByb3RvKQorCiAgICAgZGVmIHRlc3RfcmFuZG9tKHNlbGYpOgogICAgICAgICB2ID0gc3NsLlJBTkRfc3RhdHVzKCkKICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgpAQCAtMTU4LDYgKzE3Miw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNzbC5SQU5EX2VnZCwgMSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3NsLlJBTkRfZWdkLCAnZm9vJywgMSkKICAgICAgICAgc3NsLlJBTkRfYWRkKCJ0aGlzIGlzIGEgcmFuZG9tIHN0cmluZyIsIDc1LjApCisgICAgICAgIHNzbC5SQU5EX2FkZChiInRoaXMgaXMgYSByYW5kb20gYnl0ZXMgb2JqZWN0IiwgNzUuMCkKKyAgICAgICAgc3NsLlJBTkRfYWRkKGJ5dGVhcnJheShiInRoaXMgaXMgYSByYW5kb20gYnl0ZWFycmF5IG9iamVjdCIpLCA3NS4wKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAncG9zaXgnLCAncmVxdWlyZXMgcG9zaXgnKQogICAgIGRlZiB0ZXN0X3JhbmRvbV9mb3JrKHNlbGYpOgpAQCAtMjk4LDEwICszMTQsMTAgQEAKICAgICAgICAgIyBWZXJzaW9uIHN0cmluZyBhcyByZXR1cm5lZCBieSB7T3BlbixMaWJyZX1TU0wsIHRoZSBmb3JtYXQgbWlnaHQgY2hhbmdlCiAgICAgICAgIGlmICJMaWJyZVNTTCIgaW4gczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLnN0YXJ0c3dpdGgoIkxpYnJlU1NMIHs6ZH0uezpkfSIuZm9ybWF0KG1ham9yLCBtaW5vcikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzLCB0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocywgdCwgaGV4KG4pKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLnN0YXJ0c3dpdGgoIk9wZW5TU0wgezpkfS57OmR9Lns6ZH0iLmZvcm1hdChtYWpvciwgbWlub3IsIGZpeCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzLCB0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocywgdCwgaGV4KG4pKSkKIAogICAgIEBzdXBwb3J0LmNweXRob25fb25seQogICAgIGRlZiB0ZXN0X3JlZmN5Y2xlKHNlbGYpOgpAQCAtMzY5LDYgKzM4NSw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzc2wuQ2VydGlmaWNhdGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC5tYXRjaF9ob3N0bmFtZSwgY2VydCwgaG9zdG5hbWUpCiAKKyAgICAgICAgIyAtLSBIb3N0bmFtZSBtYXRjaGluZyAtLQorCiAgICAgICAgIGNlcnQgPSB7J3N1YmplY3QnOiAoKCgnY29tbW9uTmFtZScsICdleGFtcGxlLmNvbScpLCksKX0KICAgICAgICAgb2soY2VydCwgJ2V4YW1wbGUuY29tJykKICAgICAgICAgb2soY2VydCwgJ0V4QW1wbGUuY09tJykKQEAgLTQ1NCw2ICs0NzIsMjggQEAKICAgICAgICAgIyBPbmx5IGNvbW1vbk5hbWUgaXMgY29uc2lkZXJlZAogICAgICAgICBmYWlsKGNlcnQsICdDYWxpZm9ybmlhJykKIAorICAgICAgICAjIC0tIElQdjQgbWF0Y2hpbmcgLS0KKyAgICAgICAgY2VydCA9IHsnc3ViamVjdCc6ICgoKCdjb21tb25OYW1lJywgJ2V4YW1wbGUuY29tJyksKSwpLAorICAgICAgICAgICAgICAgICdzdWJqZWN0QWx0TmFtZSc6ICgoJ0ROUycsICdleGFtcGxlLmNvbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ0lQIEFkZHJlc3MnLCAnMTAuMTEuMTIuMTMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdJUCBBZGRyZXNzJywgJzE0LjE1LjE2LjE3JykpfQorICAgICAgICBvayhjZXJ0LCAnMTAuMTEuMTIuMTMnKQorICAgICAgICBvayhjZXJ0LCAnMTQuMTUuMTYuMTcnKQorICAgICAgICBmYWlsKGNlcnQsICcxNC4xNS4xNi4xOCcpCisgICAgICAgIGZhaWwoY2VydCwgJ2V4YW1wbGUubmV0JykKKworICAgICAgICAjIC0tIElQdjYgbWF0Y2hpbmcgLS0KKyAgICAgICAgY2VydCA9IHsnc3ViamVjdCc6ICgoKCdjb21tb25OYW1lJywgJ2V4YW1wbGUuY29tJyksKSwpLAorICAgICAgICAgICAgICAgICdzdWJqZWN0QWx0TmFtZSc6ICgoJ0ROUycsICdleGFtcGxlLmNvbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ0lQIEFkZHJlc3MnLCAnMjAwMTowOjA6MDowOjA6MDpDQUZFXG4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdJUCBBZGRyZXNzJywgJzIwMDM6MDowOjA6MDowOjA6QkFCQVxuJykpfQorICAgICAgICBvayhjZXJ0LCAnMjAwMTo6Y2FmZScpCisgICAgICAgIG9rKGNlcnQsICcyMDAzOjpiYWJhJykKKyAgICAgICAgZmFpbChjZXJ0LCAnMjAwMzo6YmViZScpCisgICAgICAgIGZhaWwoY2VydCwgJ2V4YW1wbGUubmV0JykKKworICAgICAgICAjIC0tIE1pc2NlbGxhbmVvdXMgLS0KKwogICAgICAgICAjIE5laXRoZXIgY29tbW9uTmFtZSBub3Igc3ViamVjdEFsdE5hbWUKICAgICAgICAgY2VydCA9IHsnbm90QWZ0ZXInOiAnRGVjIDE4IDIzOjU5OjU5IDIwMTEgR01UJywKICAgICAgICAgICAgICAgICAnc3ViamVjdCc6ICgoKCdjb3VudHJ5TmFtZScsICdVUycpLCksCkBAIC01MDUsOSArNTQ1LDE0IEBACiAgICAgZGVmIHRlc3RfdW5rbm93bl9jaGFubmVsX2JpbmRpbmcoc2VsZik6CiAgICAgICAgICMgc2hvdWxkIHJhaXNlIFZhbHVlRXJyb3IgZm9yIHVua25vd24gdHlwZQogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQocykgYXMgc3M6CisgICAgICAgIHMuYmluZCgoJzEyNy4wLjAuMScsIDApKQorICAgICAgICBzLmxpc3RlbigpCisgICAgICAgIGMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQorICAgICAgICBjLmNvbm5lY3Qocy5nZXRzb2NrbmFtZSgpKQorICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChjLCBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkgYXMgc3M6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgICAgIHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInVua25vd24tdHlwZSIpCisgICAgICAgIHMuY2xvc2UoKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoInRscy11bmlxdWUiIGluIHNzbC5DSEFOTkVMX0JJTkRJTkdfVFlQRVMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIid0bHMtdW5pcXVlJyBjaGFubmVsIGJpbmRpbmcgbm90IGF2YWlsYWJsZSIpCkBAIC02NDgsNiArNjkzLDcxIEBACiAgICAgICAgICAgICBjdHgud3JhcF9zb2NrZXQocykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY3guZXhjZXB0aW9uKSwgIm9ubHkgc3RyZWFtIHNvY2tldHMgYXJlIHN1cHBvcnRlZCIpCiAKKyAgICBkZWYgY2VydF90aW1lX29rKHNlbGYsIHRpbWVzdHJpbmcsIHRpbWVzdGFtcCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3NsLmNlcnRfdGltZV90b19zZWNvbmRzKHRpbWVzdHJpbmcpLCB0aW1lc3RhbXApCisKKyAgICBkZWYgY2VydF90aW1lX2ZhaWwoc2VsZiwgdGltZXN0cmluZyk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBzc2wuY2VydF90aW1lX3RvX3NlY29uZHModGltZXN0cmluZykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHV0Y19vZmZzZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbG9jYWwgdGltZSBuZWVkcyB0byBiZSBkaWZmZXJlbnQgZnJvbSBVVEMnKQorICAgIGRlZiB0ZXN0X2NlcnRfdGltZV90b19zZWNvbmRzX3RpbWV6b25lKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxOTk0MDogc3NsLmNlcnRfdGltZV90b19zZWNvbmRzKCkgcmV0dXJucyB3cm9uZworICAgICAgICAjICAgICAgICAgICAgICAgcmVzdWx0cyBpZiBsb2NhbCB0aW1lem9uZSBpcyBub3QgVVRDCisgICAgICAgIHNlbGYuY2VydF90aW1lX29rKCJNYXkgIDkgMDA6MDA6MDAgMjAwNyBHTVQiLCAxMTc4NjY4ODAwLjApCisgICAgICAgIHNlbGYuY2VydF90aW1lX29rKCJKYW4gIDUgMDk6MzQ6NDMgMjAxOCBHTVQiLCAxNTE1MTQ0ODgzLjApCisKKyAgICBkZWYgdGVzdF9jZXJ0X3RpbWVfdG9fc2Vjb25kcyhzZWxmKToKKyAgICAgICAgdGltZXN0cmluZyA9ICJKYW4gIDUgMDk6MzQ6NDMgMjAxOCBHTVQiCisgICAgICAgIHRzID0gMTUxNTE0NDg4My4wCisgICAgICAgIHNlbGYuY2VydF90aW1lX29rKHRpbWVzdHJpbmcsIHRzKQorICAgICAgICAjIGFjY2VwdCBrZXl3b3JkIHBhcmFtZXRlciwgYXNzZXJ0IGl0cyBuYW1lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3NsLmNlcnRfdGltZV90b19zZWNvbmRzKGNlcnRfdGltZT10aW1lc3RyaW5nKSwgdHMpCisgICAgICAgICMgYWNjZXB0IGJvdGggJWUgYW5kICVkIChzcGFjZSBvciB6ZXJvIGdlbmVyYXRlZCBieSBzdHJmdGltZSkKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfb2soIkphbiAwNSAwOTozNDo0MyAyMDE4IEdNVCIsIHRzKQorICAgICAgICAjIGNhc2UtaW5zZW5zaXRpdmUKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfb2soIkphTiAgNSAwOTozNDo0MyAyMDE4IEdtVCIsIHRzKQorICAgICAgICBzZWxmLmNlcnRfdGltZV9mYWlsKCJKYW4gIDUgMDk6MzQgMjAxOCBHTVQiKSAgICAgIyBubyBzZWNvbmRzCisgICAgICAgIHNlbGYuY2VydF90aW1lX2ZhaWwoIkphbiAgNSAwOTozNDo0MyAyMDE4IikgICAgICAjIG5vIEdNVAorICAgICAgICBzZWxmLmNlcnRfdGltZV9mYWlsKCJKYW4gIDUgMDk6MzQ6NDMgMjAxOCBVVEMiKSAgIyBub3QgR01UIHRpbWV6b25lCisgICAgICAgIHNlbGYuY2VydF90aW1lX2ZhaWwoIkphbiAzNSAwOTozNDo0MyAyMDE4IEdNVCIpICAjIGludmFsaWQgZGF5CisgICAgICAgIHNlbGYuY2VydF90aW1lX2ZhaWwoIkpvbiAgNSAwOTozNDo0MyAyMDE4IEdNVCIpICAjIGludmFsaWQgbW9udGgKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfZmFpbCgiSmFuICA1IDI0OjAwOjAwIDIwMTggR01UIikgICMgaW52YWxpZCBob3VyCisgICAgICAgIHNlbGYuY2VydF90aW1lX2ZhaWwoIkphbiAgNSAwOTo2MDo0MyAyMDE4IEdNVCIpICAjIGludmFsaWQgbWludXRlCisKKyAgICAgICAgbmV3eWVhcl90cyA9IDEyMzA3NjgwMDAuMAorICAgICAgICAjIGxlYXAgc2Vjb25kcworICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiRGVjIDMxIDIzOjU5OjYwIDIwMDggR01UIiwgbmV3eWVhcl90cykKKyAgICAgICAgIyBzYW1lIHRpbWVzdGFtcAorICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiSmFuICAxIDAwOjAwOjAwIDIwMDkgR01UIiwgbmV3eWVhcl90cykKKworICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiSmFuICA1IDA5OjM0OjU5IDIwMTggR01UIiwgMTUxNTE0NDg5OSkKKyAgICAgICAgIyAgYWxsb3cgNjB0aCBzZWNvbmQgKGV2ZW4gaWYgaXQgaXMgbm90IGEgbGVhcCBzZWNvbmQpCisgICAgICAgIHNlbGYuY2VydF90aW1lX29rKCJKYW4gIDUgMDk6MzQ6NjAgMjAxOCBHTVQiLCAxNTE1MTQ0OTAwKQorICAgICAgICAjICBhbGxvdyAybmQgbGVhcCBzZWNvbmQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aW1lLnN0cnB0aW1lKCkKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfb2soIkphbiAgNSAwOTozNDo2MSAyMDE4IEdNVCIsIDE1MTUxNDQ5MDEpCisgICAgICAgIHNlbGYuY2VydF90aW1lX2ZhaWwoIkphbiAgNSAwOTozNDo2MiAyMDE4IEdNVCIpICAjIGludmFsaWQgc2Vjb25kcworCisgICAgICAgICMgbm8gc3BlY2lhbCB0cmVhdGVtZW50IGZvciB0aGUgc3BlY2lhbCB2YWx1ZToKKyAgICAgICAgIyAgIDk5OTkxMjMxMjM1OTU5WiAocmZjIDUyODApCisgICAgICAgIHNlbGYuY2VydF90aW1lX29rKCJEZWMgMzEgMjM6NTk6NTkgOTk5OSBHTVQiLCAyNTM0MDIzMDA3OTkuMCkKKworICAgIEBzdXBwb3J0LnJ1bl93aXRoX2xvY2FsZSgnTENfQUxMJywgJycpCisgICAgZGVmIHRlc3RfY2VydF90aW1lX3RvX3NlY29uZHNfbG9jYWxlKHNlbGYpOgorICAgICAgICAjIGBjZXJ0X3RpbWVfdG9fc2Vjb25kcygpYCBzaG91bGQgYmUgbG9jYWxlIGluZGVwZW5kZW50CisKKyAgICAgICAgZGVmIGxvY2FsX2ZlYnJ1YXJ5X25hbWUoKToKKyAgICAgICAgICAgIHJldHVybiB0aW1lLnN0cmZ0aW1lKCclYicsICgxLCAyLCAzLCA0LCA1LCA2LCAwLCAwLCAwKSkKKworICAgICAgICBpZiBsb2NhbF9mZWJydWFyeV9uYW1lKCkubG93ZXIoKSA9PSAnZmViJzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImxvY2FsZS1zcGVjaWZpYyBtb250aCBuYW1lIG5lZWRzIHRvIGJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImRpZmZlcmVudCBmcm9tIEMgbG9jYWxlIikKKworICAgICAgICAjIGxvY2FsZS1pbmRlcGVuZGVudAorICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiRmViICA5IDAwOjAwOjAwIDIwMDcgR01UIiwgMTE3MDk3OTIwMC4wKQorICAgICAgICBzZWxmLmNlcnRfdGltZV9mYWlsKGxvY2FsX2ZlYnJ1YXJ5X25hbWUoKSArICIgIDkgMDA6MDA6MDAgMjAwNyBHTVQiKQorCiAKIGNsYXNzIENvbnRleHRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTExNTcsNyArMTI2Nyw3IEBACiAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KCkgYXMgczoKICAgICAgICAgICAgIHMuYmluZCgoIjEyNy4wLjAuMSIsIDApKQotICAgICAgICAgICAgcy5saXN0ZW4oNSkKKyAgICAgICAgICAgIHMubGlzdGVuKCkKICAgICAgICAgICAgIGMgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgICAgIGMuY29ubmVjdChzLmdldHNvY2tuYW1lKCkpCiAgICAgICAgICAgICBjLnNldGJsb2NraW5nKEZhbHNlKQpAQCAtMTE3MCw2ICsxMjgwLDY5IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIHNzbC5TU0xfRVJST1JfV0FOVF9SRUFEKQogCiAKK2NsYXNzIE1lbW9yeUJJT1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3JlYWRfd3JpdGUoc2VsZik6CisgICAgICAgIGJpbyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICBiaW8ud3JpdGUoYidmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKCksIGInZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucmVhZCgpLCBiJycpCisgICAgICAgIGJpby53cml0ZShiJ2ZvbycpCisgICAgICAgIGJpby53cml0ZShiJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnJlYWQoKSwgYidmb29iYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKCksIGInJykKKyAgICAgICAgYmlvLndyaXRlKGInYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucmVhZCgyKSwgYidiYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnJlYWQoMSksIGIneicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnJlYWQoMSksIGInJykKKworICAgIGRlZiB0ZXN0X2VvZihzZWxmKToKKyAgICAgICAgYmlvID0gc3NsLk1lbW9yeUJJTygpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYmlvLmVvZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucmVhZCgpLCBiJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYmlvLmVvZikKKyAgICAgICAgYmlvLndyaXRlKGInZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiaW8uZW9mKQorICAgICAgICBiaW8ud3JpdGVfZW9mKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiaW8uZW9mKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKDIpLCBiJ2ZvJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiaW8uZW9mKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKDEpLCBiJ28nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYmlvLmVvZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucmVhZCgpLCBiJycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiaW8uZW9mKQorCisgICAgZGVmIHRlc3RfcGVuZGluZyhzZWxmKToKKyAgICAgICAgYmlvID0gc3NsLk1lbW9yeUJJTygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnBlbmRpbmcsIDApCisgICAgICAgIGJpby53cml0ZShiJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnBlbmRpbmcsIDMpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDMpOgorICAgICAgICAgICAgYmlvLnJlYWQoMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnBlbmRpbmcsIDMtaS0xKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgzKToKKyAgICAgICAgICAgIGJpby53cml0ZShiJ3gnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucGVuZGluZywgaSsxKQorICAgICAgICBiaW8ucmVhZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnBlbmRpbmcsIDApCisKKyAgICBkZWYgdGVzdF9idWZmZXJfdHlwZXMoc2VsZik6CisgICAgICAgIGJpbyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICBiaW8ud3JpdGUoYidmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKCksIGInZm9vJykKKyAgICAgICAgYmlvLndyaXRlKGJ5dGVhcnJheShiJ2JhcicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKCksIGInYmFyJykKKyAgICAgICAgYmlvLndyaXRlKG1lbW9yeXZpZXcoYidiYXonKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucmVhZCgpLCBiJ2JheicpCisKKyAgICBkZWYgdGVzdF9lcnJvcl90eXBlcyhzZWxmKToKKyAgICAgICAgYmlvID0gc3NsLk1lbW9yeUJJTygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmlvLndyaXRlLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiaW8ud3JpdGUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmlvLndyaXRlLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJpby53cml0ZSwgMSkKKworCiBjbGFzcyBOZXR3b3JrZWRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9jb25uZWN0KHNlbGYpOgpAQCAtMTQwMSwxNCArMTU3NCwxMiBAQAogICAgIGRlZiB0ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoc2VsZik6CiAgICAgICAgIGRlZiBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKGhvc3QsIHBvcnQsIGNlcnQ9Tm9uZSk6CiAgICAgICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KGhvc3QpOgotICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSkKICAgICAgICAgICAgICAgICBpZiBub3QgcGVtOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiAlczolcyEiICUgKGhvc3QsIHBvcnQpKQogCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC5QUk9UT0NPTF9TU0x2MjMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPUNFUlRGSUxFKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgeDoKICAgICAgICAgICAgICAgICAgICAgI3Nob3VsZCBmYWlsCkBAIC0xNDE4LDcgKzE1ODksNiBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIkdvdCBzZXJ2ZXIgY2VydGlmaWNhdGUgJXMgZm9yICVzOiVzISIgJSAocGVtLCBob3N0LCBwb3J0KSkKIAogICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wuUFJPVE9DT0xfU1NMdjIzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPWNlcnQpCiAgICAgICAgICAgICAgICAgaWYgbm90IHBlbToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBzZXJ2ZXIgY2VydGlmaWNhdGUgb24gJXM6JXMhIiAlIChob3N0LCBwb3J0KSkKQEAgLTE1MDQsNiArMTY3NCw5NCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuY29udGV4dCwgY3R4MikKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLl9zc2xvYmouY29udGV4dCwgY3R4MikKIAorCitjbGFzcyBOZXR3b3JrZWRCSU9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc3NsX2lvX2xvb3Aoc2VsZiwgc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBmdW5jLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIEEgc2ltcGxlIElPIGxvb3AuIENhbGwgZnVuYygqYXJncykgZGVwZW5kaW5nIG9uIHRoZSBlcnJvciB3ZSBnZXQKKyAgICAgICAgIyAoV0FOVF9SRUFEIG9yIFdBTlRfV1JJVEUpIG1vdmUgZGF0YSBiZXR3ZWVuIHRoZSBzb2NrZXQgYW5kIHRoZSBCSU9zLgorICAgICAgICB0aW1lb3V0ID0ga3dhcmdzLmdldCgndGltZW91dCcsIDEwKQorICAgICAgICBjb3VudCA9IDAKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGVycm5vID0gTm9uZQorICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldCA9IGZ1bmMoKmFyZ3MpCisgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyBub3QgaW4gKHNzbC5TU0xfRVJST1JfV0FOVF9SRUFELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wuU1NMX0VSUk9SX1dBTlRfV1JJVEUpOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIGVycm5vID0gZS5lcnJubworICAgICAgICAgICAgIyBHZXQgYW55IGRhdGEgZnJvbSB0aGUgb3V0Z29pbmcgQklPIGlycmVzcGVjdGl2ZSBvZiBhbnkgZXJyb3IsIGFuZAorICAgICAgICAgICAgIyBzZW5kIGl0IHRvIHRoZSBzb2NrZXQuCisgICAgICAgICAgICBidWYgPSBvdXRnb2luZy5yZWFkKCkKKyAgICAgICAgICAgIHNvY2suc2VuZGFsbChidWYpCisgICAgICAgICAgICAjIElmIHRoZXJlJ3Mgbm8gZXJyb3IsIHdlJ3JlIGRvbmUuIEZvciBXQU5UX1JFQUQsIHdlIG5lZWQgdG8gZ2V0CisgICAgICAgICAgICAjIGRhdGEgZnJvbSB0aGUgc29ja2V0IGFuZCBwdXQgaXQgaW4gdGhlIGluY29taW5nIEJJTy4KKyAgICAgICAgICAgIGlmIGVycm5vIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsaWYgZXJybm8gPT0gc3NsLlNTTF9FUlJPUl9XQU5UX1JFQUQ6CisgICAgICAgICAgICAgICAgYnVmID0gc29jay5yZWN2KDMyNzY4KQorICAgICAgICAgICAgICAgIGlmIGJ1ZjoKKyAgICAgICAgICAgICAgICAgICAgaW5jb21pbmcud3JpdGUoYnVmKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGluY29taW5nLndyaXRlX2VvZigpCisgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIk5lZWRlZCAlZCBjYWxscyB0byBjb21wbGV0ZSAlcygpLlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChjb3VudCwgZnVuYy5fX25hbWVfXykpCisgICAgICAgIHJldHVybiByZXQKKworICAgIGRlZiB0ZXN0X2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6CisgICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgICAgIHNvY2suY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCisgICAgICAgICAgICBpbmNvbWluZyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICAgICAgb3V0Z29pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhSRU1PVEVfUk9PVF9DRVJUKQorICAgICAgICAgICAgY3R4LmNoZWNrX2hvc3RuYW1lID0gVHJ1ZQorICAgICAgICAgICAgc3Nsb2JqID0gY3R4LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgRmFsc2UsIFJFTU9URV9IT1NUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzc2xvYmouX3NzbG9iai5vd25lciwgc3Nsb2JqKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLmNpcGhlcigpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLnNoYXJlZF9jaXBoZXJzKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzc2xvYmouZ2V0cGVlcmNlcnQpCisgICAgICAgICAgICBpZiAndGxzLXVuaXF1ZScgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzc2xvYmouZ2V0X2NoYW5uZWxfYmluZGluZygndGxzLXVuaXF1ZScpKQorICAgICAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5kb19oYW5kc2hha2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmNpcGhlcigpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLnNoYXJlZF9jaXBoZXJzKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldHBlZXJjZXJ0KCkpCisgICAgICAgICAgICBpZiAndGxzLXVuaXF1ZScgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldF9jaGFubmVsX2JpbmRpbmcoJ3Rscy11bmlxdWUnKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnVud3JhcCkKKyAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMU3lzY2FsbEVycm9yOgorICAgICAgICAgICAgICAgICMgc2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQgcHJvYmFibHkgc2h1dHMgZG93biB0aGUgVENQCisgICAgICAgICAgICAgICAgIyBjb25uZWN0aW9uIHdpdGhvdXQgc2VuZGluZyBhIHNlY3VyZSBzaHV0ZG93biBtZXNzYWdlLCBhbmQKKyAgICAgICAgICAgICAgICAjIHRoaXMgaXMgcmVwb3J0ZWQgYXMgU1NMX0VSUk9SX1NZU0NBTEwKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IsIHNzbG9iai53cml0ZSwgYidmb28nKQorICAgICAgICAgICAgc29jay5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9yZWFkX3dyaXRlX2RhdGEoc2VsZik6CisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgorICAgICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgICAgICBzb2NrLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQorICAgICAgICAgICAgaW5jb21pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgICAgIG91dGdvaW5nID0gc3NsLk1lbW9yeUJJTygpCisgICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfTk9ORQorICAgICAgICAgICAgc3Nsb2JqID0gY3R4LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgRmFsc2UpCisgICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLmRvX2hhbmRzaGFrZSkKKyAgICAgICAgICAgIHJlcSA9IGInR0VUIC8gSFRUUC8xLjBcclxuXHJcbicKKyAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoud3JpdGUsIHJlcSkKKyAgICAgICAgICAgIGJ1ZiA9IHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoucmVhZCwgMTAyNCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmWzo1XSwgYidIVFRQLycpCisgICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnVud3JhcCkKKyAgICAgICAgICAgIHNvY2suY2xvc2UoKQorCisKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0xNTM1LDcgKzE3OTMsOCBAQAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zc2xjb25uID0gc2VsZi5zZXJ2ZXIuY29udGV4dC53cmFwX3NvY2tldCgKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc29jaywgc2VydmVyX3NpZGU9VHJ1ZSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc2VsZWN0ZWRfcHJvdG9jb2xzLmFwcGVuZChzZWxmLnNzbGNvbm4uc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnNlbGVjdGVkX25wbl9wcm90b2NvbHMuYXBwZW5kKHNlbGYuc3NsY29ubi5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbHMuYXBwZW5kKHNlbGYuc3NsY29ubi5zZWxlY3RlZF9hbHBuX3Byb3RvY29sKCkpCiAgICAgICAgICAgICAgICAgZXhjZXB0IChzc2wuU1NMRXJyb3IsIENvbm5lY3Rpb25SZXNldEVycm9yKSBhcyBlOgogICAgICAgICAgICAgICAgICAgICAjIFdlIHRyZWF0IENvbm5lY3Rpb25SZXNldEVycm9yIGFzIHRob3VnaCBpdCB3ZXJlIGFuCiAgICAgICAgICAgICAgICAgICAgICMgU1NMRXJyb3IgLSBPcGVuU1NMIG9uIFVidW50dSBhYnJ1cHRseSBjbG9zZXMgdGhlCkBAIC0xNTUyLDYgKzE4MTEsNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc2hhcmVkX2NpcGhlcnMuYXBwZW5kKHNlbGYuc3NsY29ubi5zaGFyZWRfY2lwaGVycygpKQogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnNlcnZlci5jb250ZXh0LnZlcmlmeV9tb2RlID09IHNzbC5DRVJUX1JFUVVJUkVEOgogICAgICAgICAgICAgICAgICAgICAgICAgY2VydCA9IHNlbGYuc3NsY29ubi5nZXRwZWVyY2VydCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2UgYW5kIHNlbGYuc2VydmVyLmNoYXR0eToKQEAgLTE2NDIsNyArMTkwMiw4IEBACiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjZXJ0aWZpY2F0ZT1Ob25lLCBzc2xfdmVyc2lvbj1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgY2VydHJlcXM9Tm9uZSwgY2FjZXJ0cz1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UsIHN0YXJ0dGxzX3NlcnZlcj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgIG5wbl9wcm90b2NvbHM9Tm9uZSwgY2lwaGVycz1Ob25lLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAgICAgICAgICAgICAgbnBuX3Byb3RvY29scz1Ob25lLCBhbHBuX3Byb3RvY29scz1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgY2lwaGVycz1Ob25lLCBjb250ZXh0PU5vbmUpOgogICAgICAgICAgICAgaWYgY29udGV4dDoKICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQgPSBjb250ZXh0CiAgICAgICAgICAgICBlbHNlOgpAQCAtMTY1Nyw2ICsxOTE4LDggQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0aWZpY2F0ZSkKICAgICAgICAgICAgICAgICBpZiBucG5fcHJvdG9jb2xzOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQuc2V0X25wbl9wcm90b2NvbHMobnBuX3Byb3RvY29scykKKyAgICAgICAgICAgICAgICBpZiBhbHBuX3Byb3RvY29sczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LnNldF9hbHBuX3Byb3RvY29scyhhbHBuX3Byb3RvY29scykKICAgICAgICAgICAgICAgICBpZiBjaXBoZXJzOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQuc2V0X2NpcGhlcnMoY2lwaGVycykKICAgICAgICAgICAgIHNlbGYuY2hhdHR5ID0gY2hhdHR5CkBAIC0xNjY2LDcgKzE5MjksOSBAQAogICAgICAgICAgICAgc2VsZi5wb3J0ID0gc3VwcG9ydC5iaW5kX3BvcnQoc2VsZi5zb2NrKQogICAgICAgICAgICAgc2VsZi5mbGFnID0gTm9uZQogICAgICAgICAgICAgc2VsZi5hY3RpdmUgPSBGYWxzZQotICAgICAgICAgICAgc2VsZi5zZWxlY3RlZF9wcm90b2NvbHMgPSBbXQorICAgICAgICAgICAgc2VsZi5zZWxlY3RlZF9ucG5fcHJvdG9jb2xzID0gW10KKyAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbHMgPSBbXQorICAgICAgICAgICAgc2VsZi5zaGFyZWRfY2lwaGVycyA9IFtdCiAgICAgICAgICAgICBzZWxmLmNvbm5fZXJyb3JzID0gW10KICAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKICAgICAgICAgICAgIHNlbGYuZGFlbW9uID0gVHJ1ZQpAQCAtMTY4Niw3ICsxOTUxLDcgQEAKIAogICAgICAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICAgICAgc2VsZi5zb2NrLnNldHRpbWVvdXQoMC4wNSkKLSAgICAgICAgICAgIHNlbGYuc29jay5saXN0ZW4oNSkKKyAgICAgICAgICAgIHNlbGYuc29jay5saXN0ZW4oKQogICAgICAgICAgICAgc2VsZi5hY3RpdmUgPSBUcnVlCiAgICAgICAgICAgICBpZiBzZWxmLmZsYWc6CiAgICAgICAgICAgICAgICAgIyBzaWduYWwgYW4gZXZlbnQKQEAgLTE4OTIsMTQgKzIxNTcsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgJ2NvbXByZXNzaW9uJzogcy5jb21wcmVzc2lvbigpLAogICAgICAgICAgICAgICAgICAgICAnY2lwaGVyJzogcy5jaXBoZXIoKSwKICAgICAgICAgICAgICAgICAgICAgJ3BlZXJjZXJ0Jzogcy5nZXRwZWVyY2VydCgpLAotICAgICAgICAgICAgICAgICAgICAnY2xpZW50X25wbl9wcm90b2NvbCc6IHMuc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkKKyAgICAgICAgICAgICAgICAgICAgJ2NsaWVudF9hbHBuX3Byb3RvY29sJzogcy5zZWxlY3RlZF9hbHBuX3Byb3RvY29sKCksCisgICAgICAgICAgICAgICAgICAgICdjbGllbnRfbnBuX3Byb3RvY29sJzogcy5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKSwKKyAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiBzLnZlcnNpb24oKSwKICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgc3RhdHNbJ3NlcnZlcl9ucG5fcHJvdG9jb2xzJ10gPSBzZXJ2ZXIuc2VsZWN0ZWRfcHJvdG9jb2xzCisgICAgICAgICAgICBzdGF0c1snc2VydmVyX2FscG5fcHJvdG9jb2xzJ10gPSBzZXJ2ZXIuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbHMKKyAgICAgICAgICAgIHN0YXRzWydzZXJ2ZXJfbnBuX3Byb3RvY29scyddID0gc2VydmVyLnNlbGVjdGVkX25wbl9wcm90b2NvbHMKKyAgICAgICAgICAgIHN0YXRzWydzZXJ2ZXJfc2hhcmVkX2NpcGhlcnMnXSA9IHNlcnZlci5zaGFyZWRfY2lwaGVycwogICAgICAgICByZXR1cm4gc3RhdHMKIAogICAgIGRlZiB0cnlfcHJvdG9jb2xfY29tYm8oc2VydmVyX3Byb3RvY29sLCBjbGllbnRfcHJvdG9jb2wsIGV4cGVjdF9zdWNjZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydHNyZXFzPU5vbmUsIHNlcnZlcl9vcHRpb25zPTAsIGNsaWVudF9vcHRpb25zPTApOgorICAgICAgICAiIiIKKyAgICAgICAgVHJ5IHRvIFNTTC1jb25uZWN0IHVzaW5nICpjbGllbnRfcHJvdG9jb2wqIHRvICpzZXJ2ZXJfcHJvdG9jb2wqLgorICAgICAgICBJZiAqZXhwZWN0X3N1Y2Nlc3MqIGlzIHRydWUsIGFzc2VydCB0aGF0IHRoZSBjb25uZWN0aW9uIHN1Y2NlZWRzLAorICAgICAgICBpZiBpdCdzIGZhbHNlLCBhc3NlcnQgdGhhdCB0aGUgY29ubmVjdGlvbiBmYWlscy4KKyAgICAgICAgQWxzbywgaWYgKmV4cGVjdF9zdWNjZXNzKiBpcyBhIHN0cmluZywgYXNzZXJ0IHRoYXQgaXQgaXMgdGhlIHByb3RvY29sCisgICAgICAgIHZlcnNpb24gYWN0dWFsbHkgdXNlZCBieSB0aGUgY29ubmVjdGlvbi4KKyAgICAgICAgIiIiCiAgICAgICAgIGlmIGNlcnRzcmVxcyBpcyBOb25lOgogICAgICAgICAgICAgY2VydHNyZXFzID0gc3NsLkNFUlRfTk9ORQogICAgICAgICBjZXJ0dHlwZSA9IHsKQEAgLTE5MjksOCArMjIwNSw4IEBACiAgICAgICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQogICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJURklMRSkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9RmFsc2UsIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9RmFsc2UsIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCiAgICAgICAgICMgUHJvdG9jb2wgbWlzbWF0Y2ggY2FuIHJlc3VsdCBpbiBlaXRoZXIgYW4gU1NMRXJyb3IsIG9yIGEKICAgICAgICAgIyAiQ29ubmVjdGlvbiByZXNldCBieSBwZWVyIiBlcnJvci4KICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvcjoKQEAgLTE5NDUsNiArMjIyMSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAiQ2xpZW50IHByb3RvY29sICVzIHN1Y2NlZWRlZCB3aXRoIHNlcnZlciBwcm90b2NvbCAlcyEiCiAgICAgICAgICAgICAgICAgICAgICUgKHNzbC5nZXRfcHJvdG9jb2xfbmFtZShjbGllbnRfcHJvdG9jb2wpLAogICAgICAgICAgICAgICAgICAgICAgICBzc2wuZ2V0X3Byb3RvY29sX25hbWUoc2VydmVyX3Byb3RvY29sKSkpCisgICAgICAgICAgICBlbGlmIChleHBlY3Rfc3VjY2VzcyBpcyBub3QgVHJ1ZQorICAgICAgICAgICAgICAgICAgYW5kIGV4cGVjdF9zdWNjZXNzICE9IHN0YXRzWyd2ZXJzaW9uJ10pOgorICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJ2ZXJzaW9uIG1pc21hdGNoOiBleHBlY3RlZCAlciwgZ290ICVyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGV4cGVjdF9zdWNjZXNzLCBzdGF0c1sndmVyc2lvbiddKSkKIAogCiAgICAgY2xhc3MgVGhyZWFkZWRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yMTEyLDcgKzIzOTIsNyBAQAogICAgICAgICAgICAgIyBhbmQgc2V0cyBFdmVudCBgbGlzdGVuZXJfZ29uZWAgdG8gbGV0IHRoZSBtYWluIHRocmVhZCBrbm93CiAgICAgICAgICAgICAjIHRoZSBzb2NrZXQgaXMgZ29uZS4KICAgICAgICAgICAgIGRlZiBsaXN0ZW5lcigpOgotICAgICAgICAgICAgICAgIHMubGlzdGVuKDUpCisgICAgICAgICAgICAgICAgcy5saXN0ZW4oKQogICAgICAgICAgICAgICAgIGxpc3RlbmVyX3JlYWR5LnNldCgpCiAgICAgICAgICAgICAgICAgbmV3c29jaywgYWRkciA9IHMuYWNjZXB0KCkKICAgICAgICAgICAgICAgICBuZXdzb2NrLmNsb3NlKCkKQEAgLTIxNzksMTcgKzI0NTksMTcgQEAKICAgICAgICAgICAgIGlmIGhhc2F0dHIoc3NsLCAnUFJPVE9DT0xfU1NMdjMnKToKICAgICAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1NTTHYzLCBGYWxzZSkKICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfU1NMdjIzLCBUcnVlKQotICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9UTFN2MSwgVHJ1ZSkKKyAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfVExTdjEsICdUTFN2MScpCiAKICAgICAgICAgICAgIGlmIGhhc2F0dHIoc3NsLCAnUFJPVE9DT0xfU1NMdjMnKToKICAgICAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1NTTHYzLCBGYWxzZSwgc3NsLkNFUlRfT1BUSU9OQUwpCiAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1NTTHYyMywgVHJ1ZSwgc3NsLkNFUlRfT1BUSU9OQUwpCi0gICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1RMU3YxLCBUcnVlLCBzc2wuQ0VSVF9PUFRJT05BTCkKKyAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfVExTdjEsICdUTFN2MScsIHNzbC5DRVJUX09QVElPTkFMKQogCiAgICAgICAgICAgICBpZiBoYXNhdHRyKHNzbCwgJ1BST1RPQ09MX1NTTHYzJyk6CiAgICAgICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9TU0x2MywgRmFsc2UsIHNzbC5DRVJUX1JFUVVJUkVEKQogICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9TU0x2MjMsIFRydWUsIHNzbC5DRVJUX1JFUVVJUkVEKQotICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9UTFN2MSwgVHJ1ZSwgc3NsLkNFUlRfUkVRVUlSRUQpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1RMU3YxLCAnVExTdjEnLCBzc2wuQ0VSVF9SRVFVSVJFRCkKIAogICAgICAgICAgICAgIyBTZXJ2ZXIgd2l0aCBzcGVjaWZpYyBTU0wgb3B0aW9ucwogICAgICAgICAgICAgaWYgaGFzYXR0cihzc2wsICdQUk9UT0NPTF9TU0x2MycpOgpAQCAtMjIwOSw5ICsyNDg5LDkgQEAKICAgICAgICAgICAgICIiIkNvbm5lY3RpbmcgdG8gYW4gU1NMdjMgc2VydmVyIHdpdGggdmFyaW91cyBjbGllbnQgb3B0aW9ucyIiIgogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIikKLSAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjMsIHNzbC5QUk9UT0NPTF9TU0x2MywgVHJ1ZSkKLSAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjMsIHNzbC5QUk9UT0NPTF9TU0x2MywgVHJ1ZSwgc3NsLkNFUlRfT1BUSU9OQUwpCi0gICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYzLCBzc2wuUFJPVE9DT0xfU1NMdjMsIFRydWUsIHNzbC5DRVJUX1JFUVVJUkVEKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2Mywgc3NsLlBST1RPQ09MX1NTTHYzLCAnU1NMdjMnKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2Mywgc3NsLlBST1RPQ09MX1NTTHYzLCAnU1NMdjMnLCBzc2wuQ0VSVF9PUFRJT05BTCkKKyAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjMsIHNzbC5QUk9UT0NPTF9TU0x2MywgJ1NTTHYzJywgc3NsLkNFUlRfUkVRVUlSRUQpCiAgICAgICAgICAgICBpZiBoYXNhdHRyKHNzbCwgJ1BST1RPQ09MX1NTTHYyJyk6CiAgICAgICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2Mywgc3NsLlBST1RPQ09MX1NTTHYyLCBGYWxzZSkKICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjMsIHNzbC5QUk9UT0NPTF9TU0x2MjMsIEZhbHNlLApAQCAtMjIyNyw5ICsyNTA3LDkgQEAKICAgICAgICAgICAgICIiIkNvbm5lY3RpbmcgdG8gYSBUTFN2MSBzZXJ2ZXIgd2l0aCB2YXJpb3VzIGNsaWVudCBvcHRpb25zIiIiCiAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG4iKQotICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MSwgc3NsLlBST1RPQ09MX1RMU3YxLCBUcnVlKQotICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MSwgc3NsLlBST1RPQ09MX1RMU3YxLCBUcnVlLCBzc2wuQ0VSVF9PUFRJT05BTCkKLSAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjEsIHNzbC5QUk9UT0NPTF9UTFN2MSwgVHJ1ZSwgc3NsLkNFUlRfUkVRVUlSRUQpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxLCBzc2wuUFJPVE9DT0xfVExTdjEsICdUTFN2MScpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxLCBzc2wuUFJPVE9DT0xfVExTdjEsICdUTFN2MScsIHNzbC5DRVJUX09QVElPTkFMKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MSwgc3NsLlBST1RPQ09MX1RMU3YxLCAnVExTdjEnLCBzc2wuQ0VSVF9SRVFVSVJFRCkKICAgICAgICAgICAgIGlmIGhhc2F0dHIoc3NsLCAnUFJPVE9DT0xfU1NMdjInKToKICAgICAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxLCBzc2wuUFJPVE9DT0xfU1NMdjIsIEZhbHNlKQogICAgICAgICAgICAgaWYgaGFzYXR0cihzc2wsICdQUk9UT0NPTF9TU0x2MycpOgpAQCAtMjI0NSw3ICsyNTI1LDcgQEAKICAgICAgICAgICAgICAgIFRlc3RpbmcgYWdhaW5zdCBvbGRlciBUTFMgdmVyc2lvbnMuIiIiCiAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG4iKQotICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MV8xLCBzc2wuUFJPVE9DT0xfVExTdjFfMSwgVHJ1ZSkKKyAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjFfMSwgc3NsLlBST1RPQ09MX1RMU3YxXzEsICdUTFN2MS4xJykKICAgICAgICAgICAgIGlmIGhhc2F0dHIoc3NsLCAnUFJPVE9DT0xfU1NMdjInKToKICAgICAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzEsIHNzbC5QUk9UT0NPTF9TU0x2MiwgRmFsc2UpCiAgICAgICAgICAgICBpZiBoYXNhdHRyKHNzbCwgJ1BST1RPQ09MX1NTTHYzJyk6CkBAIC0yMjUzLDcgKzI1MzMsNyBAQAogICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MV8xLCBzc2wuUFJPVE9DT0xfU1NMdjIzLCBGYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfb3B0aW9ucz1zc2wuT1BfTk9fVExTdjFfMSkKIAotICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9UTFN2MV8xLCBUcnVlKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9UTFN2MV8xLCAnVExTdjEuMScpCiAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzEsIHNzbC5QUk9UT0NPTF9UTFN2MSwgRmFsc2UpCiAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxLCBzc2wuUFJPVE9DT0xfVExTdjFfMSwgRmFsc2UpCiAKQEAgLTIyNjYsNyArMjU0Niw3IEBACiAgICAgICAgICAgICAgICBUZXN0aW5nIGFnYWluc3Qgb2xkZXIgVExTIHZlcnNpb25zLiIiIgogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIikKLSAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjFfMiwgc3NsLlBST1RPQ09MX1RMU3YxXzIsIFRydWUsCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzIsIHNzbC5QUk9UT0NPTF9UTFN2MV8yLCAnVExTdjEuMicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX29wdGlvbnM9c3NsLk9QX05PX1NTTHYzfHNzbC5PUF9OT19TU0x2MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfb3B0aW9ucz1zc2wuT1BfTk9fU1NMdjN8c3NsLk9QX05PX1NTTHYyLCkKICAgICAgICAgICAgIGlmIGhhc2F0dHIoc3NsLCAnUFJPVE9DT0xfU1NMdjInKToKQEAgLTIyNzYsNyArMjU1Niw3IEBACiAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzIsIHNzbC5QUk9UT0NPTF9TU0x2MjMsIEZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9vcHRpb25zPXNzbC5PUF9OT19UTFN2MV8yKQogCi0gICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1RMU3YxXzIsIFRydWUpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1RMU3YxXzIsICdUTFN2MS4yJykKICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjFfMiwgc3NsLlBST1RPQ09MX1RMU3YxLCBGYWxzZSkKICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjEsIHNzbC5QUk9UT0NPTF9UTFN2MV8yLCBGYWxzZSkKICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjFfMiwgc3NsLlBST1RPQ09MX1RMU3YxXzEsIEZhbHNlKQpAQCAtMjUxMiw2ICsyNzkyLDM2IEBACiAgICAgICAgICAgICAgICAgcy53cml0ZShiIm92ZXJcbiIpCiAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCiAKKyAgICAgICAgZGVmIHRlc3Rfbm9uYmxvY2tpbmdfc2VuZChzZWxmKToKKyAgICAgICAgICAgIHNlcnZlciA9IFRocmVhZGVkRWNob1NlcnZlcihDRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0cmVxcz1zc2wuQ0VSVF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNlcnRzPUNFUlRGSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCisgICAgICAgICAgICB3aXRoIHNlcnZlcjoKKyAgICAgICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQorICAgICAgICAgICAgICAgIHMuc2V0YmxvY2tpbmcoRmFsc2UpCisKKyAgICAgICAgICAgICAgICAjIElmIHdlIGtlZXAgc2VuZGluZyBkYXRhLCBhdCBzb21lIHBvaW50IHRoZSBidWZmZXJzCisgICAgICAgICAgICAgICAgIyB3aWxsIGJlIGZ1bGwgYW5kIHRoZSBjYWxsIHdpbGwgYmxvY2sKKyAgICAgICAgICAgICAgICBidWYgPSBieXRlYXJyYXkoODE5MikKKyAgICAgICAgICAgICAgICBkZWYgZmlsbF9idWZmZXIoKToKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHMuc2VuZChidWYpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKHNzbC5TU0xXYW50V3JpdGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsLlNTTFdhbnRSZWFkRXJyb3IpLCBmaWxsX2J1ZmZlcikKKworICAgICAgICAgICAgICAgICMgTm93IHJlYWQgYWxsIHRoZSBvdXRwdXQgYW5kIGRpc2NhcmQgaXQKKyAgICAgICAgICAgICAgICBzLnNldGJsb2NraW5nKFRydWUpCisgICAgICAgICAgICAgICAgcy5jbG9zZSgpCisKICAgICAgICAgZGVmIHRlc3RfaGFuZHNoYWtlX3RpbWVvdXQoc2VsZik6CiAgICAgICAgICAgICAjIElzc3VlICM1MTAzOiBTU0wgaGFuZHNoYWtlIG11c3QgcmVzcGVjdCB0aGUgc29ja2V0IHRpbWVvdXQKICAgICAgICAgICAgIHNlcnZlciA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCkBAIC0yNTIxLDcgKzI4MzEsNyBAQAogICAgICAgICAgICAgZmluaXNoID0gRmFsc2UKIAogICAgICAgICAgICAgZGVmIHNlcnZlKCk6Ci0gICAgICAgICAgICAgICAgc2VydmVyLmxpc3Rlbig1KQorICAgICAgICAgICAgICAgIHNlcnZlci5saXN0ZW4oKQogICAgICAgICAgICAgICAgIHN0YXJ0ZWQuc2V0KCkKICAgICAgICAgICAgICAgICBjb25ucyA9IFtdCiAgICAgICAgICAgICAgICAgd2hpbGUgbm90IGZpbmlzaDoKQEAgLTI1NzgsNyArMjg4OCw3IEBACiAgICAgICAgICAgICBwZWVyID0gTm9uZQogICAgICAgICAgICAgZGVmIHNlcnZlKCk6CiAgICAgICAgICAgICAgICAgbm9ubG9jYWwgcmVtb3RlLCBwZWVyCi0gICAgICAgICAgICAgICAgc2VydmVyLmxpc3Rlbig1KQorICAgICAgICAgICAgICAgIHNlcnZlci5saXN0ZW4oKQogICAgICAgICAgICAgICAgICMgQmxvY2sgb24gdGhlIGFjY2VwdCBhbmQgd2FpdCBvbiB0aGUgY29ubmVjdGlvbiB0byBjbG9zZS4KICAgICAgICAgICAgICAgICBldnQuc2V0KCkKICAgICAgICAgICAgICAgICByZW1vdGUsIHBlZXIgPSBzZXJ2ZXIuYWNjZXB0KCkKQEAgLTI2MjgsNiArMjkzOCwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJubyBzaGFyZWQgY2lwaGVyIiwgc3RyKHNlcnZlci5jb25uX2Vycm9yc1swXSkpCiAKKyAgICAgICAgZGVmIHRlc3RfdmVyc2lvbl9iYXNpYyhzZWxmKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgQmFzaWMgdGVzdHMgZm9yIFNTTFNvY2tldC52ZXJzaW9uKCkuCisgICAgICAgICAgICBNb3JlIHRlc3RzIGFyZSBkb25lIGluIHRoZSB0ZXN0X3Byb3RvY29sXyooKSBtZXRob2RzLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgd2l0aCBUaHJlYWRlZEVjaG9TZXJ2ZXIoQ0VSVEZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9RmFsc2UpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgICAgICB3aXRoIGNvbnRleHQud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpKSBhcyBzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHMudmVyc2lvbigpLCBOb25lKQorICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnZlcnNpb24oKSwgIlRMU3YxIikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHMudmVyc2lvbigpLCBOb25lKQorCiAgICAgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHNzbC5IQVNfRUNESCwgInRlc3QgcmVxdWlyZXMgRUNESC1lbmFibGVkIE9wZW5TU0wiKQogICAgICAgICBkZWYgdGVzdF9kZWZhdWx0X2VjZGhfY3VydmUoc2VsZik6CiAgICAgICAgICAgICAjIElzc3VlICMyMTAxNTogZWxsaXB0aWMgY3VydmUtYmFzZWQgRGlmZmllIEhlbGxtYW4ga2V5IGV4Y2hhbmdlCkBAIC0yNzM3LDYgKzMwNjIsNTUgQEAKICAgICAgICAgICAgIGlmICJBREgiIG5vdCBpbiBwYXJ0cyBhbmQgIkVESCIgbm90IGluIHBhcnRzIGFuZCAiREhFIiBub3QgaW4gcGFydHM6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJOb24tREggY2lwaGVyOiAiICsgY2lwaGVyWzBdKQogCisgICAgICAgIGRlZiB0ZXN0X3NlbGVjdGVkX2FscG5fcHJvdG9jb2woc2VsZik6CisgICAgICAgICAgICAjIHNlbGVjdGVkX2FscG5fcHJvdG9jb2woKSBpcyBOb25lIHVubGVzcyBBTFBOIGlzIHVzZWQuCisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjb250ZXh0LCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhdHNbJ2NsaWVudF9hbHBuX3Byb3RvY29sJ10sIE5vbmUpCisKKyAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLkhBU19BTFBOLCAiQUxQTiBzdXBwb3J0IHJlcXVpcmVkIikKKyAgICAgICAgZGVmIHRlc3Rfc2VsZWN0ZWRfYWxwbl9wcm90b2NvbF9pZl9zZXJ2ZXJfdXNlc19hbHBuKHNlbGYpOgorICAgICAgICAgICAgIyBzZWxlY3RlZF9hbHBuX3Byb3RvY29sKCkgaXMgTm9uZSB1bmxlc3MgQUxQTiBpcyB1c2VkIGJ5IHRoZSBjbGllbnQuCisgICAgICAgICAgICBjbGllbnRfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJURklMRSkKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQuc2V0X2FscG5fcHJvdG9jb2xzKFsnZm9vJywgJ2JhciddKQorICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhdHNbJ2NsaWVudF9hbHBuX3Byb3RvY29sJ10sIE5vbmUpCisKKyAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLkhBU19BTFBOLCAiQUxQTiBzdXBwb3J0IG5lZWRlZCBmb3IgdGhpcyB0ZXN0IikKKyAgICAgICAgZGVmIHRlc3RfYWxwbl9wcm90b2NvbHMoc2VsZik6CisgICAgICAgICAgICBzZXJ2ZXJfcHJvdG9jb2xzID0gWydmb28nLCAnYmFyJywgJ21pbGtzaGFrZSddCisgICAgICAgICAgICBwcm90b2NvbF90ZXN0cyA9IFsKKyAgICAgICAgICAgICAgICAoWydmb28nLCAnYmFyJ10sICdmb28nKSwKKyAgICAgICAgICAgICAgICAoWydiYXInLCAnZm9vJ10sICdmb28nKSwKKyAgICAgICAgICAgICAgICAoWydtaWxrc2hha2UnXSwgJ21pbGtzaGFrZScpLAorICAgICAgICAgICAgICAgIChbJ2h0dHAvMy4wJywgJ2h0dHAvNC4wJ10sIE5vbmUpCisgICAgICAgICAgICBdCisgICAgICAgICAgICBmb3IgY2xpZW50X3Byb3RvY29scywgZXhwZWN0ZWQgaW4gcHJvdG9jb2xfdGVzdHM6CisgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LnNldF9hbHBuX3Byb3RvY29scyhzZXJ2ZXJfcHJvdG9jb2xzKQorICAgICAgICAgICAgICAgIGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgICAgICBjbGllbnRfY29udGV4dC5zZXRfYWxwbl9wcm90b2NvbHMoY2xpZW50X3Byb3RvY29scykKKyAgICAgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKworICAgICAgICAgICAgICAgIG1zZyA9ICJmYWlsZWQgdHJ5aW5nICVzIChzKSBhbmQgJXMgKGMpLlxuIiBcCisgICAgICAgICAgICAgICAgICAgICAgIndhcyBleHBlY3RpbmcgJXMsIGJ1dCBnb3QgJSVzIGZyb20gdGhlICUlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzdHIoc2VydmVyX3Byb3RvY29scyksIHN0cihjbGllbnRfcHJvdG9jb2xzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGV4cGVjdGVkKSkKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVzdWx0ID0gc3RhdHNbJ2NsaWVudF9hbHBuX3Byb3RvY29sJ10KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudF9yZXN1bHQsIGV4cGVjdGVkLCBtc2cgJSAoY2xpZW50X3Jlc3VsdCwgImNsaWVudCIpKQorICAgICAgICAgICAgICAgIHNlcnZlcl9yZXN1bHQgPSBzdGF0c1snc2VydmVyX2FscG5fcHJvdG9jb2xzJ11bLTFdIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHN0YXRzWydzZXJ2ZXJfYWxwbl9wcm90b2NvbHMnXSkgZWxzZSAnbm90aGluZycKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlcl9yZXN1bHQsIGV4cGVjdGVkLCBtc2cgJSAoc2VydmVyX3Jlc3VsdCwgInNlcnZlciIpKQorCiAgICAgICAgIGRlZiB0ZXN0X3NlbGVjdGVkX25wbl9wcm90b2NvbChzZWxmKToKICAgICAgICAgICAgICMgc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkgaXMgTm9uZSB1bmxlc3MgTlBOIGlzIHVzZWQKICAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCkBAIC0yODc3LDYgKzMyNTEsMjAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNvbiwgJ1RMU1YxX0FMRVJUX0lOVEVSTkFMX0VSUk9SJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIlR5cGVFcnJvciIsIHN0ZGVyci5nZXR2YWx1ZSgpKQogCisgICAgICAgIGRlZiB0ZXN0X3NoYXJlZF9jaXBoZXJzKHNlbGYpOgorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oU0lHTkVEX0NFUlRGSUxFKQorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICBjbGllbnRfY29udGV4dC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgICAgICBjbGllbnRfY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoU0lHTklOR19DQSkKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LnNldF9jaXBoZXJzKCJSQzQiKQorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQuc2V0X2NpcGhlcnMoIkFFUzpSQzQiKQorICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0KQorICAgICAgICAgICAgY2lwaGVycyA9IHN0YXRzWydzZXJ2ZXJfc2hhcmVkX2NpcGhlcnMnXVswXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihjaXBoZXJzKSwgMCkKKyAgICAgICAgICAgIGZvciBuYW1lLCB0bHNfdmVyc2lvbiwgYml0cyBpbiBjaXBoZXJzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIlJDNCIsIG5hbWUuc3BsaXQoIi0iKSkKKwogICAgICAgICBkZWYgdGVzdF9yZWFkX3dyaXRlX2FmdGVyX2Nsb3NlX3JhaXNlc192YWx1ZXJyb3Ioc2VsZik6CiAgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKICAgICAgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRApAQCAtMjg5MiwyMSArMzI4MCw0NiBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHMucmVhZCwgMTAyNCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzLndyaXRlLCBiJ2hlbGxvJykKIAorICAgICAgICBkZWYgdGVzdF9zZW5kZmlsZShzZWxmKToKKyAgICAgICAgICAgIFRFU1RfREFUQSA9IGIieCIgKiA1MTIKKyAgICAgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3diJykgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKFRFU1RfREFUQSkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICAgICAgY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoQ0VSVEZJTEUpCisgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgIHNlcnZlciA9IFRocmVhZGVkRWNob1NlcnZlcihjb250ZXh0PWNvbnRleHQsIGNoYXR0eT1GYWxzZSkKKyAgICAgICAgICAgIHdpdGggc2VydmVyOgorICAgICAgICAgICAgICAgIHdpdGggY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpIGFzIGZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzLnNlbmRmaWxlKGZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMucmVjdigxMDI0KSwgVEVTVF9EQVRBKQorCiAKIGRlZiB0ZXN0X21haW4odmVyYm9zZT1GYWxzZSk6CiAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgcGxhdHMgPSB7CiAgICAgICAgICAgICAnTGludXgnOiBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24sCiAgICAgICAgICAgICAnTWFjJzogcGxhdGZvcm0ubWFjX3ZlciwKICAgICAgICAgICAgICdXaW5kb3dzJzogcGxhdGZvcm0ud2luMzJfdmVyLAogICAgICAgICB9Ci0gICAgICAgIGZvciBuYW1lLCBmdW5jIGluIHBsYXRzLml0ZW1zKCk6Ci0gICAgICAgICAgICBwbGF0ID0gZnVuYygpCi0gICAgICAgICAgICBpZiBwbGF0IGFuZCBwbGF0WzBdOgotICAgICAgICAgICAgICAgIHBsYXQgPSAnJXMgJXInICUgKG5hbWUsIHBsYXQpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBsYXQgPSByZXByKHBsYXRmb3JtLnBsYXRmb3JtKCkpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKAorICAgICAgICAgICAgICAgICdpZ25vcmUnLAorICAgICAgICAgICAgICAgICdkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCisgICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCAuKicsCisgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGZvciBuYW1lLCBmdW5jIGluIHBsYXRzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgcGxhdCA9IGZ1bmMoKQorICAgICAgICAgICAgICAgIGlmIHBsYXQgYW5kIHBsYXRbMF06CisgICAgICAgICAgICAgICAgICAgIHBsYXQgPSAnJXMgJXInICUgKG5hbWUsIHBsYXQpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHBsYXQgPSByZXByKHBsYXRmb3JtLnBsYXRmb3JtKCkpCiAgICAgICAgIHByaW50KCJ0ZXN0X3NzbDogdGVzdGluZyB3aXRoICVyICVyIiAlCiAgICAgICAgICAgICAoc3NsLk9QRU5TU0xfVkVSU0lPTiwgc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPKSkKICAgICAgICAgcHJpbnQoIiAgICAgICAgICB1bmRlciAlcyIgJSBwbGF0KQpAQCAtMjkyNSwxMCArMzMzOCwxMSBAQAogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZmlsZW5hbWUpOgogICAgICAgICAgICAgcmFpc2Ugc3VwcG9ydC5UZXN0RmFpbGVkKCJDYW4ndCByZWFkIGNlcnRpZmljYXRlIGZpbGUgJXIiICUgZmlsZW5hbWUpCiAKLSAgICB0ZXN0cyA9IFtDb250ZXh0VGVzdHMsIEJhc2ljU29ja2V0VGVzdHMsIFNTTEVycm9yVGVzdHNdCisgICAgdGVzdHMgPSBbQ29udGV4dFRlc3RzLCBCYXNpY1NvY2tldFRlc3RzLCBTU0xFcnJvclRlc3RzLCBNZW1vcnlCSU9UZXN0c10KIAogICAgIGlmIHN1cHBvcnQuaXNfcmVzb3VyY2VfZW5hYmxlZCgnbmV0d29yaycpOgogICAgICAgICB0ZXN0cy5hcHBlbmQoTmV0d29ya2VkVGVzdHMpCisgICAgICAgIHRlc3RzLmFwcGVuZChOZXR3b3JrZWRCSU9UZXN0cykKIAogICAgIGlmIF9oYXZlX3RocmVhZHM6CiAgICAgICAgIHRocmVhZF9pbmZvID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdGFydGZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3N0YXJ0ZmlsZS5weQppbmRleCA0M2FiZjliLi5mNTkyNTJlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0YXJ0ZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0YXJ0ZmlsZS5weQpAQCAtMzAsOCArMzAsNSBAQAogICAgICAgICAgICAgc3RhcnRmaWxlKGVtcHR5KQogICAgICAgICAgICAgc3RhcnRmaWxlKGVtcHR5LCAib3BlbiIpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0Q2FzZSkKLQotaWYgX19uYW1lX189PSJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0YXQucHkgYi9MaWIvdGVzdC90ZXN0X3N0YXQucHkKaW5kZXggYWY2Y2VkNC4uZjFhNTkzOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdGF0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RhdC5weQpAQCAtMSw1ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBpbXBvcnRfZnJlc2hfbW9kdWxlCiAKIGNfc3RhdCA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ3N0YXQnLCBmcmVzaD1bJ19zdGF0J10pCkBAIC01Miw2ICs1MywyNiBAQAogICAgICAgICAnU19JV09USCc6IDBvMDAyLAogICAgICAgICAnU19JWE9USCc6IDBvMDAxfQogCisgICAgIyBkZWZpbmVkIGJ5IHRoZSBXaW5kb3dzIEFQSSBkb2N1bWVudGF0aW9uCisgICAgZmlsZV9hdHRyaWJ1dGVzID0geworICAgICAgICAnRklMRV9BVFRSSUJVVEVfQVJDSElWRSc6IDMyLAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfQ09NUFJFU1NFRCc6IDIwNDgsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9ERVZJQ0UnOiA2NCwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSc6IDE2LAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfRU5DUllQVEVEJzogMTYzODQsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9ISURERU4nOiAyLAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfSU5URUdSSVRZX1NUUkVBTSc6IDMyNzY4LAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfTk9STUFMJzogMTI4LAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfTk9UX0NPTlRFTlRfSU5ERVhFRCc6IDgxOTIsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9OT19TQ1JVQl9EQVRBJzogMTMxMDcyLAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfT0ZGTElORSc6IDQwOTYsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9SRUFET05MWSc6IDEsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5UJzogMTAyNCwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX1NQQVJTRV9GSUxFJzogNTEyLAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfU1lTVEVNJzogNCwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX1RFTVBPUkFSWSc6IDI1NiwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX1ZJUlRVQUwnOiA2NTUzNn0KKwogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MucmVtb3ZlKFRFU1RGTikKQEAgLTE4NSw2ICsyMDYsMTQgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjYWxsYWJsZShmdW5jKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYygwKSwgMCkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICJGSUxFX0FUVFJJQlVURV8qIGNvbnN0YW50cyBhcmUgV2luMzIgc3BlY2lmaWMiKQorICAgIGRlZiB0ZXN0X2ZpbGVfYXR0cmlidXRlX2NvbnN0YW50cyhzZWxmKToKKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc29ydGVkKHNlbGYuZmlsZV9hdHRyaWJ1dGVzLml0ZW1zKCkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5zdGF0bW9kLCBrZXkpLCBrZXkpCisgICAgICAgICAgICBtb2R2YWx1ZSA9IGdldGF0dHIoc2VsZi5zdGF0bW9kLCBrZXkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBtb2R2YWx1ZSwga2V5KQorCiAKIGNsYXNzIFRlc3RGaWxlbW9kZUNTdGF0KFRlc3RGaWxlbW9kZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHN0YXRtb2QgPSBjX3N0YXQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJpbmcucHkKaW5kZXggNTc5NjNiZi4uMGNkMmI4NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJpbmcucHkKQEAgLTEsMTkgKzEsMjIgQEAKIGltcG9ydCB1bml0dGVzdCwgc3RyaW5nCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBjbGFzcyBNb2R1bGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2F0dHJzKHNlbGYpOgotICAgICAgICBzdHJpbmcud2hpdGVzcGFjZQotICAgICAgICBzdHJpbmcuYXNjaWlfbG93ZXJjYXNlCi0gICAgICAgIHN0cmluZy5hc2NpaV91cHBlcmNhc2UKLSAgICAgICAgc3RyaW5nLmFzY2lpX2xldHRlcnMKLSAgICAgICAgc3RyaW5nLmRpZ2l0cwotICAgICAgICBzdHJpbmcuaGV4ZGlnaXRzCi0gICAgICAgIHN0cmluZy5vY3RkaWdpdHMKLSAgICAgICAgc3RyaW5nLnB1bmN0dWF0aW9uCi0gICAgICAgIHN0cmluZy5wcmludGFibGUKKyAgICAgICAgIyBXaGlsZSB0aGUgZXhhY3Qgb3JkZXIgb2YgdGhlIGl0ZW1zIGluIHRoZXNlIGF0dHJpYnV0ZXMgaXMgbm90CisgICAgICAgICMgdGVjaG5pY2FsbHkgcGFydCBvZiB0aGUgImxhbmd1YWdlIHNwZWMiLCBpbiBwcmFjdGljZSB0aGVyZSBpcyBhbG1vc3QKKyAgICAgICAgIyBjZXJ0YWlubHkgdXNlciBjb2RlIHRoYXQgZGVwZW5kcyBvbiB0aGUgb3JkZXIsIHNvIGRlLWZhY3RvIGl0ICppcyoKKyAgICAgICAgIyBwYXJ0IG9mIHRoZSBzcGVjLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy53aGl0ZXNwYWNlLCAnIFx0XG5cclx4MGJceDBjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmcuYXNjaWlfbG93ZXJjYXNlLCAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy5hc2NpaV91cHBlcmNhc2UsICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nLmFzY2lpX2xldHRlcnMsIHN0cmluZy5hc2NpaV9sb3dlcmNhc2UgKyBzdHJpbmcuYXNjaWlfdXBwZXJjYXNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy5kaWdpdHMsICcwMTIzNDU2Nzg5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmcuaGV4ZGlnaXRzLCBzdHJpbmcuZGlnaXRzICsgJ2FiY2RlZkFCQ0RFRicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nLm9jdGRpZ2l0cywgJzAxMjM0NTY3JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmcucHVuY3R1YXRpb24sICchIiMkJSZcJygpKissLS4vOjs8PT4/QFtcXF1eX2B7fH1+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmcucHJpbnRhYmxlLCBzdHJpbmcuZGlnaXRzICsgc3RyaW5nLmFzY2lpX2xvd2VyY2FzZSArIHN0cmluZy5hc2NpaV91cHBlcmNhc2UgKyBzdHJpbmcucHVuY3R1YXRpb24gKyBzdHJpbmcud2hpdGVzcGFjZSkKIAogICAgIGRlZiB0ZXN0X2NhcHdvcmRzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy5jYXB3b3JkcygnYWJjIGRlZiBnaGknKSwgJ0FiYyBEZWYgR2hpJykKQEAgLTQzLDggKzQ2LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCIte2Zvcm1hdF9zdHJpbmd9LSIsIGZvcm1hdF9zdHJpbmc9J3Rlc3QnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnLXRlc3QtJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGZtdC5mb3JtYXQsICIte2Zvcm1hdF9zdHJpbmd9LSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdChhcmc9J3Rlc3QnLCBmb3JtYXRfc3RyaW5nPSIte2FyZ30tIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJy10ZXN0LScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgImZvcm1hdF9zdHJpbmciKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdChhcmc9J3Rlc3QnLCBmb3JtYXRfc3RyaW5nPSIte2FyZ30tIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctdGVzdC0nKQogCiAgICAgZGVmIHRlc3RfYXV0b19udW1iZXJpbmcoc2VsZik6CiAgICAgICAgIGZtdCA9IHN0cmluZy5Gb3JtYXR0ZXIoKQpAQCAtMTgzLDggKzE4Nyw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInJlY3Vyc2lvbiIsIHN0cihlcnIuZXhjZXB0aW9uKSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTW9kdWxlVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJpbmdwcmVwLnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJpbmdwcmVwLnB5CmluZGV4IGU3NjM2MzUuLmQ0YjRhMTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RyaW5ncHJlcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cmluZ3ByZXAucHkKQEAgLTIsNyArMiw2IEBACiAjIFNpbmNlIHdlIGRvbid0IGhhdmUgdGhlbSwgdGhpcyB0ZXN0IGNoZWNrcyBvbmx5IGEgZmV3IGNvZGUgcG9pbnRzLgogCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBmcm9tIHN0cmluZ3ByZXAgaW1wb3J0ICoKIApAQCAtODksOCArODgsNSBAQAogICAgICAgICAjICAgICBoLnVwZGF0ZShkYXRhKQogICAgICAgICAjICAgICBwcmludCBwLCBoLmhleGRpZ2VzdCgpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTdHJpbmdwcmVwVGVzdHMpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKaW5kZXggZDAxMzIyZi4uODdjZmZlOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKQEAgLTMyLDcgKzMyLDYgQEAKIGltcG9ydCBzaHV0aWwKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdGVzdC5zdXBwb3J0CiAKIAogVEVNUExBVEUgPSByIiIiIyBjb2Rpbmc6ICVzCkBAIC0xOTksOCArMTk4LDUgQEAKICAgICAgICAgc2VsZi5jaGVja19lbmNvZGluZygibGF0aW45IikKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJwdGltZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RycHRpbWUucHkKaW5kZXggYzFkZDE5NS4uMWJmMTc0OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJwdGltZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cnB0aW1lLnB5CkBAIC02MDQsMTggKzYwNCw1IEBACiAgICAgICAgICAgICBfc3RycHRpbWUuX3N0cnB0aW1lX3RpbWUob2xkdHpuYW1lWzFdLCAnJVonKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgZ2V0bGFuZ19UZXN0cywKLSAgICAgICAgTG9jYWxlVGltZV9UZXN0cywKLSAgICAgICAgVGltZVJFVGVzdHMsCi0gICAgICAgIFN0cnB0aW1lVGVzdHMsCi0gICAgICAgIFN0cnB0aW1lMTJBTVBNVGVzdHMsCi0gICAgICAgIEp1bGlhblRlc3RzLAotICAgICAgICBDYWxjdWxhdGlvblRlc3RzLAotICAgICAgICBDYWNoZVRlc3RzCi0gICAgKQotCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RydG9kLnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJ0b2QucHkKaW5kZXggNDFiNmU1Zi4uMjcyNzUxNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJ0b2QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJ0b2QucHkKQEAgLTQyOSw4ICs0MjksNSBAQAogICAgICAgICBmb3IgcyBpbiB0ZXN0X3N0cmluZ3M6CiAgICAgICAgICAgICBzZWxmLmNoZWNrX3N0cnRvZChzKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChTdHJ0b2RUZXN0cykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkgYi9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weQppbmRleCAwMTA3ZWViLi5lZmJkYmZjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weQpAQCAtNjYwLDggKzY2MCw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGl0KQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RtZW1iZXJzLnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RtZW1iZXJzLnB5CmluZGV4IDFjOTMxYWUuLjU3ZWM0NWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0bWVtYmVycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cnVjdG1lbWJlcnMucHkKQEAgLTE0MCw4ICsxNDAsNSBAQAogICAgICAgICAgICAgdHMuVF9VU0hPUlQgPSBVU0hSVF9NQVgrMQogCiAKLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4odmVyYm9zZT1UcnVlKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RzZXEucHkgYi9MaWIvdGVzdC90ZXN0X3N0cnVjdHNlcS5weQppbmRleCAzNTNkMGVhLi4zZWNiMjdkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cnVjdHNlcS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cnVjdHNlcS5weQpAQCAtMSw3ICsxLDYgQEAKIGltcG9ydCBvcwogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAogY2xhc3MgU3RydWN0U2VxVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xMjMsOCArMTIyLDUgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHRbc3RhcnQ6c3RvcDpzdGVwXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFtzdGFydDpzdG9wOnN0ZXBdKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoU3RydWN0U2VxVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5IGIvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CmluZGV4IDQ3MTljYzAuLjY2Mjg1MTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc2NyaXB0X2hlbHBlcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKQEAgLTM4MSw3ICszODEsNyBAQAogICAgICAgICBweXRob25fZGlyLCBweXRob25fYmFzZSA9IHNlbGYuX3NwbGl0X3B5dGhvbl9wYXRoKCkKICAgICAgICAgYWJzX3B5dGhvbiA9IG9zLnBhdGguam9pbihweXRob25fZGlyLCBweXRob25fYmFzZSkKICAgICAgICAgcmVsX3B5dGhvbiA9IG9zLnBhdGguam9pbihvcy5jdXJkaXIsIHB5dGhvbl9iYXNlKQotICAgICAgICB3aXRoIHNjcmlwdF9oZWxwZXIudGVtcF9kaXIoKSBhcyB3cm9uZ19kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHdyb25nX2RpcjoKICAgICAgICAgICAgICMgQmVmb3JlIGNhbGxpbmcgd2l0aCBhbiBhYnNvbHV0ZSBwYXRoLCBjb25maXJtIHRoYXQgdXNpbmcgYQogICAgICAgICAgICAgIyByZWxhdGl2ZSBwYXRoIGZhaWxzLgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCkBAIC0xMjE5LDYgKzEyMTksMTAyIEBACiAgICAgICAgIGZkc19hZnRlcl9leGNlcHRpb24gPSBvcy5saXN0ZGlyKGZkX2RpcmVjdG9yeSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmZHNfYmVmb3JlX3BvcGVuLCBmZHNfYWZ0ZXJfZXhjZXB0aW9uKQogCisKK2NsYXNzIFJ1bkZ1bmNUZXN0Q2FzZShCYXNlVGVzdENhc2UpOgorICAgIGRlZiBydW5fcHl0aG9uKHNlbGYsIGNvZGUsICoqa3dhcmdzKToKKyAgICAgICAgIiIiUnVuIFB5dGhvbiBjb2RlIGluIGEgc3VicHJvY2VzcyB1c2luZyBzdWJwcm9jZXNzLnJ1biIiIgorICAgICAgICBhcmd2ID0gW3N5cy5leGVjdXRhYmxlLCAiLWMiLCBjb2RlXQorICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5ydW4oYXJndiwgKiprd2FyZ3MpCisKKyAgICBkZWYgdGVzdF9yZXR1cm5jb2RlKHNlbGYpOgorICAgICAgICAjIGNhbGwoKSBmdW5jdGlvbiB3aXRoIHNlcXVlbmNlIGFyZ3VtZW50CisgICAgICAgIGNwID0gc2VsZi5ydW5fcHl0aG9uKCJpbXBvcnQgc3lzOyBzeXMuZXhpdCg0NykiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNwLnJldHVybmNvZGUsIDQ3KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKToKKyAgICAgICAgICAgIGNwLmNoZWNrX3JldHVybmNvZGUoKQorCisgICAgZGVmIHRlc3RfY2hlY2soc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IpIGFzIGM6CisgICAgICAgICAgICBzZWxmLnJ1bl9weXRob24oImltcG9ydCBzeXM7IHN5cy5leGl0KDQ3KSIsIGNoZWNrPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5leGNlcHRpb24ucmV0dXJuY29kZSwgNDcpCisKKyAgICBkZWYgdGVzdF9jaGVja196ZXJvKHNlbGYpOgorICAgICAgICAjIGNoZWNrX3JldHVybmNvZGUgc2hvdWxkbid0IHJhaXNlIHdoZW4gcmV0dXJuY29kZSBpcyB6ZXJvCisgICAgICAgIGNwID0gc2VsZi5ydW5fcHl0aG9uKCJpbXBvcnQgc3lzOyBzeXMuZXhpdCgwKSIsIGNoZWNrPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3AucmV0dXJuY29kZSwgMCkKKworICAgIGRlZiB0ZXN0X3RpbWVvdXQoc2VsZik6CisgICAgICAgICMgcnVuKCkgZnVuY3Rpb24gd2l0aCB0aW1lb3V0IGFyZ3VtZW50OyB3ZSB3YW50IHRvIHRlc3QgdGhhdCB0aGUgY2hpbGQKKyAgICAgICAgIyBwcm9jZXNzIGdldHMga2lsbGVkIHdoZW4gdGhlIHRpbWVvdXQgZXhwaXJlcy4gIElmIHRoZSBjaGlsZCBpc24ndAorICAgICAgICAjIGtpbGxlZCwgdGhpcyBjYWxsIHdpbGwgZGVhZGxvY2sgc2luY2Ugc3VicHJvY2Vzcy5ydW4gd2FpdHMgZm9yIHRoZQorICAgICAgICAjIGNoaWxkLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQpOgorICAgICAgICAgICAgc2VsZi5ydW5fcHl0aG9uKCJ3aGlsZSBUcnVlOiBwYXNzIiwgdGltZW91dD0wLjAwMDEpCisKKyAgICBkZWYgdGVzdF9jYXB0dXJlX3N0ZG91dChzZWxmKToKKyAgICAgICAgIyBjYXB0dXJlIHN0ZG91dCB3aXRoIHplcm8gcmV0dXJuIGNvZGUKKyAgICAgICAgY3AgPSBzZWxmLnJ1bl9weXRob24oInByaW50KCdCREZMJykiLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzZWxmLmFzc2VydEluKGInQkRGTCcsIGNwLnN0ZG91dCkKKworICAgIGRlZiB0ZXN0X2NhcHR1cmVfc3RkZXJyKHNlbGYpOgorICAgICAgICBjcCA9IHNlbGYucnVuX3B5dGhvbigiaW1wb3J0IHN5czsgc3lzLnN0ZGVyci53cml0ZSgnQkRGTCcpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiJ0JERkwnLCBjcC5zdGRlcnIpCisKKyAgICBkZWYgdGVzdF9jaGVja19vdXRwdXRfc3RkaW5fYXJnKHNlbGYpOgorICAgICAgICAjIHJ1bigpIGNhbiBiZSBjYWxsZWQgd2l0aCBzdGRpbiBzZXQgdG8gYSBmaWxlCisgICAgICAgIHRmID0gdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0Zi5jbG9zZSkKKyAgICAgICAgdGYud3JpdGUoYidwZWFyJykKKyAgICAgICAgdGYuc2VlaygwKQorICAgICAgICBjcCA9IHNlbGYucnVuX3B5dGhvbigKKyAgICAgICAgICAgICAgICAgImltcG9ydCBzeXM7IHN5cy5zdGRvdXQud3JpdGUoc3lzLnN0ZGluLnJlYWQoKS51cHBlcigpKSIsCisgICAgICAgICAgICAgICAgc3RkaW49dGYsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidQRUFSJywgY3Auc3Rkb3V0KQorCisgICAgZGVmIHRlc3RfY2hlY2tfb3V0cHV0X2lucHV0X2FyZyhzZWxmKToKKyAgICAgICAgIyBjaGVja19vdXRwdXQoKSBjYW4gYmUgY2FsbGVkIHdpdGggaW5wdXQgc2V0IHRvIGEgc3RyaW5nCisgICAgICAgIGNwID0gc2VsZi5ydW5fcHl0aG9uKAorICAgICAgICAgICAgICAgICJpbXBvcnQgc3lzOyBzeXMuc3Rkb3V0LndyaXRlKHN5cy5zdGRpbi5yZWFkKCkudXBwZXIoKSkiLAorICAgICAgICAgICAgICAgIGlucHV0PWIncGVhcicsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidQRUFSJywgY3Auc3Rkb3V0KQorCisgICAgZGVmIHRlc3RfY2hlY2tfb3V0cHV0X3N0ZGluX3dpdGhfaW5wdXRfYXJnKHNlbGYpOgorICAgICAgICAjIHJ1bigpIHJlZnVzZXMgdG8gYWNjZXB0ICdzdGRpbicgd2l0aCAnaW5wdXQnCisgICAgICAgIHRmID0gdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0Zi5jbG9zZSkKKyAgICAgICAgdGYud3JpdGUoYidwZWFyJykKKyAgICAgICAgdGYuc2VlaygwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgIG1zZz0iRXhwZWN0ZWQgVmFsdWVFcnJvciB3aGVuIHN0ZGluIGFuZCBpbnB1dCBhcmdzIHN1cHBsaWVkLiIpIGFzIGM6CisgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl9weXRob24oInByaW50KCd3aWxsIG5vdCBiZSBydW4nKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49dGYsIGlucHV0PWInaGFyZScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3N0ZGluJywgYy5leGNlcHRpb24uYXJnc1swXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignaW5wdXQnLCBjLmV4Y2VwdGlvbi5hcmdzWzBdKQorCisgICAgZGVmIHRlc3RfY2hlY2tfb3V0cHV0X3RpbWVvdXQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZCkgYXMgYzoKKyAgICAgICAgICAgIGNwID0gc2VsZi5ydW5fcHl0aG9uKCgKKyAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgc3lzLCB0aW1lXG4iCisgICAgICAgICAgICAgICAgICAgICAic3lzLnN0ZG91dC53cml0ZSgnQkRGTCcpXG4iCisgICAgICAgICAgICAgICAgICAgICAic3lzLnN0ZG91dC5mbHVzaCgpXG4iCisgICAgICAgICAgICAgICAgICAgICAidGltZS5zbGVlcCgzNjAwKSIpLAorICAgICAgICAgICAgICAgICAgICAjIFNvbWUgaGVhdmlseSBsb2FkZWQgYnVpbGRib3RzIChzcGFyYyBEZWJpYW4gMy54KSByZXF1aXJlCisgICAgICAgICAgICAgICAgICAgICMgdGhpcyBtdWNoIHRpbWUgdG8gc3RhcnQgYW5kIHByaW50LgorICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTMsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5leGNlcHRpb24ub3V0cHV0LCBiJ0JERkwnKQorICAgICAgICAjIG91dHB1dCBpcyBhbGlhc2VkIHRvIHN0ZG91dAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZXhjZXB0aW9uLnN0ZG91dCwgYidCREZMJykKKworICAgIGRlZiB0ZXN0X3J1bl9rd2FyZ3Moc2VsZik6CisgICAgICAgIG5ld2VudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgIG5ld2VudlsiRlJVSVQiXSA9ICJiYW5hbmEiCisgICAgICAgIGNwID0gc2VsZi5ydW5fcHl0aG9uKCgnaW1wb3J0IHN5cywgb3M7JworICAgICAgICAgICAgICAgICAgICAgICdzeXMuZXhpdCgzMyBpZiBvcy5nZXRlbnYoIkZSVUlUIik9PSJiYW5hbmEiIGVsc2UgMzEpJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1uZXdlbnYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3AucmV0dXJuY29kZSwgMzMpCisKKwogQHVuaXR0ZXN0LnNraXBJZihtc3dpbmRvd3MsICJQT1NJWCBzcGVjaWZpYyB0ZXN0cyIpCiBjbGFzcyBQT1NJWFByb2Nlc3NUZXN0Q2FzZShCYXNlVGVzdENhc2UpOgogCkBAIC0xNDI5LDEwICsxNTI1LDE0IEBACiAgICAgICAgIFtfLCBoYXJkXSA9IGxpbWl0cwogICAgICAgICBzZXRybGltaXQoUkxJTUlUX05QUk9DLCAoMCwgaGFyZCkpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXRybGltaXQsIFJMSU1JVF9OUFJPQywgbGltaXRzKQotICAgICAgICAjIEZvcmtpbmcgc2hvdWxkIHJhaXNlIEVBR0FJTiwgdHJhbnNsYXRlZCB0byBCbG9ja2luZ0lPRXJyb3IKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCbG9ja2luZ0lPRXJyb3IpOgorICAgICAgICB0cnk6CiAgICAgICAgICAgICBzdWJwcm9jZXNzLmNhbGwoW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAnJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZXhlY19mbj1sYW1iZGE6IE5vbmUpCisgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CisgICAgICAgICAgICAjIEZvcmtpbmcgc2hvdWxkIHJhaXNlIEVBR0FJTiwgdHJhbnNsYXRlZCB0byBCbG9ja2luZ0lPRXJyb3IKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ1JMSU1JVF9OUFJPQyBoYWQgbm8gZWZmZWN0OyBwcm9iYWJseSBzdXBlcnVzZXInKQogCiAgICAgZGVmIHRlc3RfYXJnc19zdHJpbmcoc2VsZik6CiAgICAgICAgICMgYXJncyBpcyBhIHN0cmluZwpAQCAtMjIzNCw4ICsyMzM0LDYgQEAKICAgICAgICAgICAgIGZ1bmMgPSBsYW1iZGE6IE5vbmUKICAgICAgICAgICAgIGdjLmVuYWJsZSgpCiAKLSAgICAgICAgICAgIGV4ZWN1dGFibGVfbGlzdCA9ICJleGVjIiAgICMgZXJyb3I6IG11c3QgYmUgYSBzZXF1ZW5jZQotCiAgICAgICAgICAgICBmb3IgYXJncywgZXhlX2xpc3QsIGN3ZCwgZW52X2xpc3QgaW4gKAogICAgICAgICAgICAgICAgICgxMjMsICAgICAgW2IiZXhlIl0sIE5vbmUsIFtiImVudiJdKSwKICAgICAgICAgICAgICAgICAoW2IiYXJnIl0sIDEyMywgICAgICBOb25lLCBbYiJlbnYiXSksCkBAIC0yMjUzLDYgKzIzNTEsMzQgQEAKICAgICAgICAgICAgIGlmIG5vdCBnY19lbmFibGVkOgogICAgICAgICAgICAgICAgIGdjLmRpc2FibGUoKQogCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfZm9ya19leGVjX3NvcnRlZF9mZF9zYW5pdHlfY2hlY2soc2VsZik6CisgICAgICAgICMgSXNzdWUgIzIzNTY0OiBzYW5pdHkgY2hlY2sgdGhlIGZvcmtfZXhlYygpIGZkc190b19rZWVwIHNhbml0eSBjaGVjay4KKyAgICAgICAgaW1wb3J0IF9wb3NpeHN1YnByb2Nlc3MKKyAgICAgICAgZ2NfZW5hYmxlZCA9IGdjLmlzZW5hYmxlZCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGdjLmVuYWJsZSgpCisKKyAgICAgICAgICAgIGZvciBmZHNfdG9fa2VlcCBpbiAoCisgICAgICAgICAgICAgICAgKC0xLCAyLCAzLCA0LCA1KSwgICMgTmVnYXRpdmUgbnVtYmVyLgorICAgICAgICAgICAgICAgICgnc3RyJywgNCksICAjIE5vdCBhbiBpbnQuCisgICAgICAgICAgICAgICAgKDE4LCAyMywgNDIsIDIqKjYzKSwgICMgT3V0IG9mIHJhbmdlLgorICAgICAgICAgICAgICAgICg1LCA0KSwgICMgTm90IHNvcnRlZC4KKyAgICAgICAgICAgICAgICAoNiwgNywgNywgOCksICAjIER1cGxpY2F0ZS4KKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICBtc2c9J2Zkc190b19rZWVwPXt9Jy5mb3JtYXQoZmRzX3RvX2tlZXApKSBhcyBjOgorICAgICAgICAgICAgICAgICAgICBfcG9zaXhzdWJwcm9jZXNzLmZvcmtfZXhlYygKKyAgICAgICAgICAgICAgICAgICAgICAgIFtiImZhbHNlIl0sIFtiImZhbHNlIl0sCisgICAgICAgICAgICAgICAgICAgICAgICBUcnVlLCBmZHNfdG9fa2VlcCwgTm9uZSwgW2IiZW52Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAtMSwgLTEsIC0xLCAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIDEsIDIsIDMsIDQsCisgICAgICAgICAgICAgICAgICAgICAgICBUcnVlLCBUcnVlLCBOb25lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Zkc190b19rZWVwJywgc3RyKGMuZXhjZXB0aW9uKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIG5vdCBnY19lbmFibGVkOgorICAgICAgICAgICAgICAgIGdjLmRpc2FibGUoKQogCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKG1zd2luZG93cywgIldpbmRvd3Mgc3BlY2lmaWMgdGVzdHMiKQpAQCAtMjQyNSwyNCArMjU1MSwyMCBAQAogICAgICAgICBzdWJwcm9jZXNzLl9Qb3BlblNlbGVjdG9yID0gc2VsZi5vcmlnX3NlbGVjdG9yCiAgICAgICAgIFByb2Nlc3NUZXN0Q2FzZS50ZWFyRG93bihzZWxmKQogCisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICAiIiJFbnN1cmUgdGhhdCBfX2FsbF9fIGlzIHBvcHVsYXRlZCBwcm9wZXJseS4iIiIKKyAgICAgICAgaW50ZW50aW9uYWxseV9leGNsdWRlZCA9IHNldCgoImxpc3QyY21kbGluZSIsKSkKKyAgICAgICAgZXhwb3J0ZWQgPSBzZXQoc3VicHJvY2Vzcy5fX2FsbF9fKQorICAgICAgICBwb3NzaWJsZV9leHBvcnRzID0gc2V0KCkKKyAgICAgICAgaW1wb3J0IHR5cGVzCisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzdWJwcm9jZXNzLl9fZGljdF9fLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ18nKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgKHR5cGVzLk1vZHVsZVR5cGUsKSk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHBvc3NpYmxlX2V4cG9ydHMuYWRkKG5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwb3J0ZWQsIHBvc3NpYmxlX2V4cG9ydHMgLSBpbnRlbnRpb25hbGx5X2V4Y2x1ZGVkKQogCi1jbGFzcyBIZWxwZXJGdW5jdGlvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBAdW5pdHRlc3Quc2tpcElmKG1zd2luZG93cywgImVycm5vIGFuZCBFSU5UUiBtYWtlIG5vIHNlbnNlIG9uIHdpbmRvd3MiKQotICAgIGRlZiB0ZXN0X2VpbnRyX3JldHJ5X2NhbGwoc2VsZik6Ci0gICAgICAgIHJlY29yZF9jYWxscyA9IFtdCi0gICAgICAgIGRlZiBmYWtlX29zX2Z1bmMoKmFyZ3MpOgotICAgICAgICAgICAgcmVjb3JkX2NhbGxzLmFwcGVuZChhcmdzKQotICAgICAgICAgICAgaWYgbGVuKHJlY29yZF9jYWxscykgPT0gMjoKLSAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKGVycm5vLkVJTlRSLCAiZmFrZSBpbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbCIpCi0gICAgICAgICAgICByZXR1cm4gdHVwbGUocmV2ZXJzZWQoYXJncykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoOTk5LCAyNTYpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuX2VpbnRyX3JldHJ5X2NhbGwoZmFrZV9vc19mdW5jLCAyNTYsIDk5OSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygyNTYsIDk5OSldLCByZWNvcmRfY2FsbHMpCi0gICAgICAgICMgVGhpcyB0aW1lIHRoZXJlIHdpbGwgYmUgYW4gRUlOVFIgc28gaXQgd2lsbCBsb29wIG9uY2UuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKDY2NiwpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuX2VpbnRyX3JldHJ5X2NhbGwoZmFrZV9vc19mdW5jLCA2NjYpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoMjU2LCA5OTkpLCAoNjY2LCksICg2NjYsKV0sIHJlY29yZF9jYWxscykKIAogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhtc3dpbmRvd3MsICJXaW5kb3dzLXNwZWNpZmljIHRlc3RzIikKQEAgLTI1NDksOSArMjY3MSw5IEBACiAgICAgICAgICAgICAgICAgICBXaW4zMlByb2Nlc3NUZXN0Q2FzZSwKICAgICAgICAgICAgICAgICAgIENvbW1hbmRUZXN0cywKICAgICAgICAgICAgICAgICAgIFByb2Nlc3NUZXN0Q2FzZU5vUG9sbCwKLSAgICAgICAgICAgICAgICAgIEhlbHBlckZ1bmN0aW9uVGVzdHMsCiAgICAgICAgICAgICAgICAgICBDb21tYW5kc1dpdGhTcGFjZXMsCiAgICAgICAgICAgICAgICAgICBDb250ZXh0TWFuYWdlclRlc3RzLAorICAgICAgICAgICAgICAgICAgUnVuRnVuY1Rlc3RDYXNlLAogICAgICAgICAgICAgICAgICAgKQogCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnVuaXRfdGVzdHMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1bmRyeS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VuZHJ5LnB5CmluZGV4IGU5OWNhOWUuLjFmYjk5NjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3VuZHJ5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VuZHJ5LnB5CkBAIC0yMiw4ICsyMiw2IEBACiAgICAgICAgICAgICBpbXBvcnQgZGlzdHV0aWxzLmNjb21waWxlcgogICAgICAgICAgICAgaW1wb3J0IGRpc3R1dGlscy5jeWd3aW5jY29tcGlsZXIKICAgICAgICAgICAgIGltcG9ydCBkaXN0dXRpbHMuZmlsZWxpc3QKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKLSAgICAgICAgICAgICAgICBpbXBvcnQgZGlzdHV0aWxzLm1zdmNjb21waWxlcgogICAgICAgICAgICAgaW1wb3J0IGRpc3R1dGlscy50ZXh0X2ZpbGUKICAgICAgICAgICAgIGltcG9ydCBkaXN0dXRpbHMudW5peGNjb21waWxlcgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9zdXBlci5weQppbmRleCAzN2ZjMmQ5Li5kYzNhMTVmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkKQEAgLTIsNyArMiw2IEBACiAKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAogY2xhc3MgQToKQEAgLTE3Myw5ICsxNzIsNSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIFgubWV0aCwgYykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFN1cGVyKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkKaW5kZXggMDNjZTlkMS4uMmMwMDQxNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weQpAQCAtODUsNyArODUsNyBAQAogICAgIGRlZiB0ZXN0X2JpbmRfcG9ydChzZWxmKToKICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKQogICAgICAgICBzdXBwb3J0LmJpbmRfcG9ydChzKQotICAgICAgICBzLmxpc3RlbigxKQorICAgICAgICBzLmxpc3RlbigpCiAgICAgICAgIHMuY2xvc2UoKQogCiAgICAgIyBUZXN0cyBmb3IgdGVtcF9kaXIoKQpAQCAtMjgwLDYgKzI4MCwzOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEWyJpdGVtIl0sIDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRFsiaXRlbSJdLCAxKQogCisgICAgY2xhc3MgUmVmQ2xhc3M6CisgICAgICAgIGF0dHJpYnV0ZTEgPSBOb25lCisgICAgICAgIGF0dHJpYnV0ZTIgPSBOb25lCisgICAgICAgIF9oaWRkZW5fYXR0cmlidXRlMSA9IE5vbmUKKyAgICAgICAgX19tYWdpY18xX18gPSBOb25lCisKKyAgICBjbGFzcyBPdGhlckNsYXNzOgorICAgICAgICBhdHRyaWJ1dGUyID0gTm9uZQorICAgICAgICBhdHRyaWJ1dGUzID0gTm9uZQorICAgICAgICBfX21hZ2ljXzFfXyA9IE5vbmUKKyAgICAgICAgX19tYWdpY18yX18gPSBOb25lCisKKyAgICBkZWYgdGVzdF9kZXRlY3RfYXBpX21pc21hdGNoKHNlbGYpOgorICAgICAgICBtaXNzaW5nX2l0ZW1zID0gc3VwcG9ydC5kZXRlY3RfYXBpX21pc21hdGNoKHNlbGYuUmVmQ2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5PdGhlckNsYXNzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHsnYXR0cmlidXRlMSd9LCBtaXNzaW5nX2l0ZW1zKQorCisgICAgICAgIG1pc3NpbmdfaXRlbXMgPSBzdXBwb3J0LmRldGVjdF9hcGlfbWlzbWF0Y2goc2VsZi5PdGhlckNsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuUmVmQ2xhc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeydhdHRyaWJ1dGUzJywgJ19fbWFnaWNfMl9fJ30sIG1pc3NpbmdfaXRlbXMpCisKKyAgICBkZWYgdGVzdF9kZXRlY3RfYXBpX21pc21hdGNoX19pZ25vcmUoc2VsZik6CisgICAgICAgIGlnbm9yZSA9IFsnYXR0cmlidXRlMScsICdhdHRyaWJ1dGUzJywgJ19fbWFnaWNfMl9fJywgJ25vdF9pbl9laXRoZXInXQorCisgICAgICAgIG1pc3NpbmdfaXRlbXMgPSBzdXBwb3J0LmRldGVjdF9hcGlfbWlzbWF0Y2goCisgICAgICAgICAgICAgICAgc2VsZi5SZWZDbGFzcywgc2VsZi5PdGhlckNsYXNzLCBpZ25vcmU9aWdub3JlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCgpLCBtaXNzaW5nX2l0ZW1zKQorCisgICAgICAgIG1pc3NpbmdfaXRlbXMgPSBzdXBwb3J0LmRldGVjdF9hcGlfbWlzbWF0Y2goCisgICAgICAgICAgICAgICAgc2VsZi5PdGhlckNsYXNzLCBzZWxmLlJlZkNsYXNzLCBpZ25vcmU9aWdub3JlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCgpLCBtaXNzaW5nX2l0ZW1zKQorCiAgICAgIyBYWFggLWZvbGxvd3MgYSBsaXN0IG9mIHVudGVzdGVkIEFQSQogICAgICMgbWFrZV9sZWdhY3lfcHljCiAgICAgIyBpc19yZXNvdXJjZV9lbmFibGVkCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5bXRhYmxlLnB5IGIvTGliL3Rlc3QvdGVzdF9zeW10YWJsZS5weQppbmRleCAzMzViNGRjLi5lNWU3YjgzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5bXRhYmxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3ltdGFibGUucHkKQEAgLTQsNyArNCw2IEBACiBpbXBvcnQgc3ltdGFibGUKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBURVNUX0NPREUgPSAiIiIKQEAgLTE2OSw4ICsxNjgsNSBAQAogICAgICAgICBzeW1ib2xzID0gc3ltdGFibGUuc3ltdGFibGUoImRlZiBmKHgpOiByZXR1cm4geCIsICI/IiwgImV4ZWMiKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTeW10YWJsZVRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3ludGF4LnB5IGIvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKaW5kZXggYTlkMzYyOC4uMDU3NDQxYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKQEAgLTE0MSw2ICsxNDEsOSBAQAogPj4+IGYoeCBmb3IgeCBpbiBMLCAxKQogVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogU3ludGF4RXJyb3I6IEdlbmVyYXRvciBleHByZXNzaW9uIG11c3QgYmUgcGFyZW50aGVzaXplZCBpZiBub3Qgc29sZSBhcmd1bWVudAorPj4+IGYoeCBmb3IgeCBpbiBMLCB5IGZvciB5IGluIEwpCitUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CitTeW50YXhFcnJvcjogR2VuZXJhdG9yIGV4cHJlc3Npb24gbXVzdCBiZSBwYXJlbnRoZXNpemVkIGlmIG5vdCBzb2xlIGFyZ3VtZW50CiA+Pj4gZigoeCBmb3IgeCBpbiBMKSwgMSkKIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XQogCkBAIC00MTMsNiArNDE2LDE0IEBACiAjIyAgICAgLi4uCiAjIyAgIFN5bnRheFdhcm5pbmc6IG5hbWUgJ3gnIGlzIGFzc2lnbmVkIHRvIGJlZm9yZSBub25sb2NhbCBkZWNsYXJhdGlvbgogCisgRnJvbSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI1OTczCisgICA+Pj4gY2xhc3MgQToKKyAgIC4uLiAgICAgZGVmIGYoc2VsZik6CisgICAuLi4gICAgICAgICBub25sb2NhbCBfX3gKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICBTeW50YXhFcnJvcjogbm8gYmluZGluZyBmb3Igbm9ubG9jYWwgJ19BX194JyBmb3VuZAorCiAKIFRoaXMgdGVzdHMgYXNzaWdubWVudC1jb250ZXh0OyB0aGVyZSB3YXMgYSBidWcgaW4gUHl0aG9uIDIuNSB3aGVyZSBjb21waWxpbmcKIGEgY29tcGxleCAnaWYnIChvbmUgd2l0aCAnZWxpZicpIHdvdWxkIGZhaWwgdG8gbm90aWNlIGFuIGludmFsaWQgc3VpdGUsCkBAIC01ODIsNyArNTkzLDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmNsYXNzPUluZGVudGF0aW9uRXJyb3IpCiAKICAgICBkZWYgdGVzdF9rd2FyZ3NfbGFzdChzZWxmKToKLSAgICAgICAgc2VsZi5fY2hlY2tfZXJyb3IoImludChiYXNlPTEwLCAnMicpIiwgIm5vbi1rZXl3b3JkIGFyZyIpCisgICAgICAgIHNlbGYuX2NoZWNrX2Vycm9yKCJpbnQoYmFzZT0xMCwgJzInKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3NpdGlvbmFsIGFyZ3VtZW50IGZvbGxvd3Mga2V5d29yZCBhcmd1bWVudCIpCisKKyAgICBkZWYgdGVzdF9rd2FyZ3NfbGFzdDIoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX2Vycm9yKCJpbnQoKip7YmFzZTogMTB9LCAnMicpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInBvc2l0aW9uYWwgYXJndW1lbnQgZm9sbG93cyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50IHVucGFja2luZyIpCisKKyAgICBkZWYgdGVzdF9rd2FyZ3NfbGFzdDMoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX2Vycm9yKCJpbnQoKip7YmFzZTogMTB9LCAqWycyJ10pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhYmxlIGFyZ3VtZW50IHVucGFja2luZyBmb2xsb3dzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nIikKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFN5bnRheFRlc3RDYXNlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXMucHkgYi9MaWIvdGVzdC90ZXN0X3N5cy5weQppbmRleCBiN2RkYmU5Li42MDQ2NjcxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5cy5weQpAQCAtMSw1ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdCwgdGVzdC5zdXBwb3J0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIGltcG9ydCBzeXMsIGlvLCBvcwogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHN1YnByb2Nlc3MKQEAgLTIwMSwxOSArMjAxLDU3IEBACiAgICAgICAgIGlmIGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCk6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdmYXRhbCBlcnJvciBpZiBydW4gd2l0aCBhIHRyYWNlIGZ1bmN0aW9uJykKIAotICAgICAgICAjIE5PVEU6IHRoaXMgdGVzdCBpcyBzbGlnaHRseSBmcmFnaWxlIGluIHRoYXQgaXQgZGVwZW5kcyBvbiB0aGUgY3VycmVudAotICAgICAgICAjIHJlY3Vyc2lvbiBjb3VudCB3aGVuIGV4ZWN1dGluZyB0aGUgdGVzdCBiZWluZyBsb3cgZW5vdWdoIHNvIGFzIHRvCi0gICAgICAgICMgdHJpZ2dlciB0aGUgcmVjdXJzaW9uIHJlY292ZXJ5IGRldGVjdGlvbiBpbiB0aGUgX1B5X01ha2VFbmRSZWNDaGVjawotICAgICAgICAjIG1hY3JvIChzZWUgY2V2YWwuaCkuCiAgICAgICAgIG9sZGxpbWl0ID0gc3lzLmdldHJlY3Vyc2lvbmxpbWl0KCkKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgIGYoKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmb3IgaSBpbiAoNTAsIDEwMDApOgotICAgICAgICAgICAgICAgICMgSXNzdWUgIzUzOTI6IHN0YWNrIG92ZXJmbG93IGFmdGVyIGhpdHRpbmcgcmVjdXJzaW9uIGxpbWl0IHR3aWNlCi0gICAgICAgICAgICAgICAgc3lzLnNldHJlY3Vyc2lvbmxpbWl0KGkpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBmKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgZikKKyAgICAgICAgICAgIGZvciBkZXB0aCBpbiAoMTAsIDI1LCA1MCwgNzUsIDEwMCwgMjUwLCAxMDAwKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHN5cy5zZXRyZWN1cnNpb25saW1pdChkZXB0aCkKKyAgICAgICAgICAgICAgICBleGNlcHQgUmVjdXJzaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICMgSXNzdWUgIzI1Mjc0OiBUaGUgcmVjdXJzaW9uIGxpbWl0IGlzIHRvbyBsb3cgYXQgdGhlCisgICAgICAgICAgICAgICAgICAgICMgY3VycmVudCByZWN1cnNpb24gZGVwdGgKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICMgSXNzdWUgIzUzOTI6IHRlc3Qgc3RhY2sgb3ZlcmZsb3cgYWZ0ZXIgaGl0dGluZyByZWN1cnNpb24KKyAgICAgICAgICAgICAgICAjIGxpbWl0IHR3aWNlCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIGYpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIGYpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzeXMuc2V0cmVjdXJzaW9ubGltaXQob2xkbGltaXQpCisKKyAgICBAdGVzdC5zdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NldHJlY3Vyc2lvbmxpbWl0X3JlY3Vyc2lvbl9kZXB0aChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjUyNzQ6IFNldHRpbmcgYSBsb3cgcmVjdXJzaW9uIGxpbWl0IG11c3QgYmUgYmxvY2tlZCBpZiB0aGUKKyAgICAgICAgIyBjdXJyZW50IHJlY3Vyc2lvbiBkZXB0aCBpcyBhbHJlYWR5IGhpZ2hlciB0aGFuIHRoZSAibG93ZXItd2F0ZXIKKyAgICAgICAgIyBtYXJrIi4gT3RoZXJ3aXNlLCBpdCBtYXkgbm90IGJlIHBvc3NpYmxlIGFueW1vcmUgdG8KKyAgICAgICAgIyByZXNldCB0aGUgb3ZlcmZsb3dlZCBmbGFnIHRvIDAuCisKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldF9yZWN1cnNpb25fZGVwdGgKKworICAgICAgICBkZWYgc2V0X3JlY3Vyc2lvbl9saW1pdF9hdF9kZXB0aChkZXB0aCwgbGltaXQpOgorICAgICAgICAgICAgcmVjdXJzaW9uX2RlcHRoID0gZ2V0X3JlY3Vyc2lvbl9kZXB0aCgpCisgICAgICAgICAgICBpZiByZWN1cnNpb25fZGVwdGggPj0gZGVwdGg6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgICAgIHN5cy5zZXRyZWN1cnNpb25saW1pdChsaW1pdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBzZXQgdGhlIHJlY3Vyc2lvbiBsaW1pdCB0byBbMC05XSsgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0IHRoZSByZWN1cnNpb24gZGVwdGggWzAtOV0rOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIGxpbWl0IGlzIHRvbyBsb3ciKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZXRfcmVjdXJzaW9uX2xpbWl0X2F0X2RlcHRoKGRlcHRoLCBsaW1pdCkKKworICAgICAgICBvbGRsaW1pdCA9IHN5cy5nZXRyZWN1cnNpb25saW1pdCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN5cy5zZXRyZWN1cnNpb25saW1pdCgxMDAwKQorCisgICAgICAgICAgICBmb3IgbGltaXQgaW4gKDEwLCAyNSwgNTAsIDc1LCAxMDAsIDE1MCwgMjAwKToKKyAgICAgICAgICAgICAgICAjIGZvcm11bGEgZXh0cmFjdGVkIGZyb20gX1B5X1JlY3Vyc2lvbkxpbWl0TG93ZXJXYXRlck1hcmsoKQorICAgICAgICAgICAgICAgIGlmIGxpbWl0ID4gMjAwOgorICAgICAgICAgICAgICAgICAgICBkZXB0aCA9IGxpbWl0IC0gNTAKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBkZXB0aCA9IGxpbWl0ICogMyAvLyA0CisgICAgICAgICAgICAgICAgc2V0X3JlY3Vyc2lvbl9saW1pdF9hdF9kZXB0aChkZXB0aCwgbGltaXQpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzeXMuc2V0cmVjdXJzaW9ubGltaXQob2xkbGltaXQpCiAKQEAgLTIyNiw3ICsyNjQsNyBAQAogICAgICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGYoKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAgICAgICAgICAgZXhjZXB0IFJlY3Vyc2lvbkVycm9yOgogICAgICAgICAgICAgICAgICAgICBmKCkKIAogICAgICAgICAgICAgc3lzLnNldHJlY3Vyc2lvbmxpbWl0KCVkKQpAQCAtNjM3LDYgKzY3NSw1MyBAQAogICAgICAgICAgICAgZXhwZWN0ZWQgPSBOb25lCiAgICAgICAgIHNlbGYuY2hlY2tfZnNlbmNvZGluZyhmc19lbmNvZGluZywgZXhwZWN0ZWQpCiAKKyAgICBkZWYgY19sb2NhbGVfZ2V0X2Vycm9yX2hhbmRsZXIoc2VsZiwgaXNvbGF0ZWQ9RmFsc2UsIGVuY29kaW5nPU5vbmUpOgorICAgICAgICAjIEZvcmNlIHRoZSBQT1NJWCBsb2NhbGUKKyAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICAgICAgZW52WyJMQ19BTEwiXSA9ICJDIgorICAgICAgICBjb2RlID0gJ1xuJy5qb2luKCgKKyAgICAgICAgICAgICdpbXBvcnQgc3lzJywKKyAgICAgICAgICAgICdkZWYgZHVtcChuYW1lKTonLAorICAgICAgICAgICAgJyAgICBzdGQgPSBnZXRhdHRyKHN5cywgbmFtZSknLAorICAgICAgICAgICAgJyAgICBwcmludCgiJXM6ICVzIiAlIChuYW1lLCBzdGQuZXJyb3JzKSknLAorICAgICAgICAgICAgJ2R1bXAoInN0ZGluIiknLAorICAgICAgICAgICAgJ2R1bXAoInN0ZG91dCIpJywKKyAgICAgICAgICAgICdkdW1wKCJzdGRlcnIiKScsCisgICAgICAgICkpCisgICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGUsICItYyIsIGNvZGVdCisgICAgICAgIGlmIGlzb2xhdGVkOgorICAgICAgICAgICAgYXJncy5hcHBlbmQoIi1JIikKKyAgICAgICAgZWxpZiBlbmNvZGluZzoKKyAgICAgICAgICAgIGVudlsnUFlUSE9OSU9FTkNPRElORyddID0gZW5jb2RpbmcKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCisgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgIHJldHVybiBzdGRvdXQKKworICAgIGRlZiB0ZXN0X2NfbG9jYWxlX3N1cnJvZ2F0ZWVzY2FwZShzZWxmKToKKyAgICAgICAgb3V0ID0gc2VsZi5jX2xvY2FsZV9nZXRfZXJyb3JfaGFuZGxlcihpc29sYXRlZD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3RkaW46IHN1cnJvZ2F0ZWVzY2FwZVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdzdGRvdXQ6IHN1cnJvZ2F0ZWVzY2FwZVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdzdGRlcnI6IGJhY2tzbGFzaHJlcGxhY2VcbicpCisKKyAgICAgICAgIyByZXBsYWNlIHRoZSBkZWZhdWx0IGVycm9yIGhhbmRsZXIKKyAgICAgICAgb3V0ID0gc2VsZi5jX2xvY2FsZV9nZXRfZXJyb3JfaGFuZGxlcihlbmNvZGluZz0nOnN0cmljdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICdzdGRpbjogc3RyaWN0XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0ZG91dDogc3RyaWN0XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0ZGVycjogYmFja3NsYXNocmVwbGFjZVxuJykKKworICAgICAgICAjIGZvcmNlIHRoZSBlbmNvZGluZworICAgICAgICBvdXQgPSBzZWxmLmNfbG9jYWxlX2dldF9lcnJvcl9oYW5kbGVyKGVuY29kaW5nPSdpc284ODU5LTEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3RkaW46IHN1cnJvZ2F0ZWVzY2FwZVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdzdGRvdXQ6IHN1cnJvZ2F0ZWVzY2FwZVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdzdGRlcnI6IGJhY2tzbGFzaHJlcGxhY2VcbicpCisKICAgICBkZWYgdGVzdF9pbXBsZW1lbnRhdGlvbihzZWxmKToKICAgICAgICAgIyBUaGlzIHRlc3QgYXBwbGllcyB0byBhbGwgaW1wbGVtZW50YXRpb25zIGVxdWFsbHkuCiAKQEAgLTY2Miw3ICs3NDcsNyBAQAogICAgIEB0ZXN0LnN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3RfZGVidWdtYWxsb2NzdGF0cyhzZWxmKToKICAgICAgICAgIyBUZXN0IHN5cy5fZGVidWdtYWxsb2NzdGF0cygpCi0gICAgICAgIGZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCisgICAgICAgIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKICAgICAgICAgYXJncyA9IFsnLWMnLCAnaW1wb3J0IHN5czsgc3lzLl9kZWJ1Z21hbGxvY3N0YXRzKCknXQogICAgICAgICByZXQsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygqYXJncykKICAgICAgICAgc2VsZi5hc3NlcnRJbihiImZyZWUgUHlEaWN0T2JqZWN0cyIsIGVycikKQEAgLTY5OSw2ICs3ODQsMjcgQEAKICAgICAgICAgYyA9IHN5cy5nZXRhbGxvY2F0ZWRibG9ja3MoKQogICAgICAgICBzZWxmLmFzc2VydEluKGMsIHJhbmdlKGIgLSA1MCwgYiArIDUwKSkKIAorICAgIGRlZiB0ZXN0X2lzX2ZpbmFsaXppbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLmlzX2ZpbmFsaXppbmcoKSwgRmFsc2UpCisgICAgICAgICMgRG9uJ3QgdXNlIHRoZSBhdGV4aXQgbW9kdWxlIGJlY2F1c2UgX1B5X0ZpbmFsaXppbmcgaXMgb25seSBzZXQKKyAgICAgICAgIyBhZnRlciBjYWxsaW5nIGF0ZXhpdCBjYWxsYmFja3MKKyAgICAgICAgY29kZSA9ICIiImlmIDE6CisgICAgICAgICAgICBpbXBvcnQgc3lzCisKKyAgICAgICAgICAgIGNsYXNzIEF0RXhpdDoKKyAgICAgICAgICAgICAgICBpc19maW5hbGl6aW5nID0gc3lzLmlzX2ZpbmFsaXppbmcKKyAgICAgICAgICAgICAgICBwcmludCA9IHByaW50CisKKyAgICAgICAgICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmludChzZWxmLmlzX2ZpbmFsaXppbmcoKSwgZmx1c2g9VHJ1ZSkKKworICAgICAgICAgICAgIyBLZWVwIGEgcmVmZXJlbmNlIGluIHRoZSBfX21haW5fXyBtb2R1bGUgbmFtZXNwYWNlLCBzbyB0aGUKKyAgICAgICAgICAgICMgQXRFeGl0IGRlc3RydWN0b3Igd2lsbCBiZSBjYWxsZWQgYXQgUHl0aG9uIGV4aXQKKyAgICAgICAgICAgIHJlZiA9IEF0RXhpdCgpCisgICAgICAgICIiIgorICAgICAgICByYywgc3Rkb3V0LCBzdGRlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LnJzdHJpcCgpLCBiJ1RydWUnKQorCiAKIEB0ZXN0LnN1cHBvcnQuY3B5dGhvbl9vbmx5CiBjbGFzcyBTaXplb2ZUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTcwOCwxMSArODE0LDYgQEAKICAgICAgICAgc2VsZi5sb25nZGlnaXQgPSBzeXMuaW50X2luZm8uc2l6ZW9mX2RpZ2l0CiAgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKICAgICAgICAgc2VsZi5nY19oZWFkc2l6ZSA9IF90ZXN0Y2FwaS5TSVpFT0ZfUFlHQ19IRUFECi0gICAgICAgIHNlbGYuZmlsZSA9IG9wZW4odGVzdC5zdXBwb3J0LlRFU1RGTiwgJ3diJykKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgc2VsZi5maWxlLmNsb3NlKCkKLSAgICAgICAgdGVzdC5zdXBwb3J0LnVubGluayh0ZXN0LnN1cHBvcnQuVEVTVEZOKQogCiAgICAgY2hlY2tfc2l6ZW9mID0gdGVzdC5zdXBwb3J0LmNoZWNrX3NpemVvZgogCkBAIC03NjMsNiArODY0LDcgQEAKIAogICAgIGRlZiB0ZXN0X29iamVjdHR5cGVzKHNlbGYpOgogICAgICAgICAjIGNoZWNrIGFsbCB0eXBlcyBkZWZpbmVkIGluIE9iamVjdHMvCisgICAgICAgIGNhbGNzaXplID0gc3RydWN0LmNhbGNzaXplCiAgICAgICAgIHNpemUgPSB0ZXN0LnN1cHBvcnQuY2FsY29ianNpemUKICAgICAgICAgdnNpemUgPSB0ZXN0LnN1cHBvcnQuY2FsY3ZvYmpzaXplCiAgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19zaXplb2YKQEAgLTc3MSw3ICs4NzMsNyBAQAogICAgICAgICAjIGJ1ZmZlcgogICAgICAgICAjIFhYWAogICAgICAgICAjIGJ1aWx0aW5fZnVuY3Rpb25fb3JfbWV0aG9kCi0gICAgICAgIGNoZWNrKGxlbiwgc2l6ZSgnM1AnKSkgIyBYWFggY2hlY2sgbGF5b3V0CisgICAgICAgIGNoZWNrKGxlbiwgc2l6ZSgnNFAnKSkgIyBYWFggY2hlY2sgbGF5b3V0CiAgICAgICAgICMgYnl0ZWFycmF5CiAgICAgICAgIHNhbXBsZXMgPSBbYicnLCBiJ3UnKjEwMDAwMF0KICAgICAgICAgZm9yIHNhbXBsZSBpbiBzYW1wbGVzOgpAQCAtODE0LDE3ICs5MTYsMjMgQEAKICAgICAgICAgIyBtZXRob2Qtd3JhcHBlciAoZGVzY3JpcHRvciBvYmplY3QpCiAgICAgICAgIGNoZWNrKHt9Ll9faXRlcl9fLCBzaXplKCcyUCcpKQogICAgICAgICAjIGRpY3QKLSAgICAgICAgY2hlY2soe30sIHNpemUoJ24yUCcgKyAnMm5QbicgKyA4KiduMlAnKSkKKyAgICAgICAgY2hlY2soe30sIHNpemUoJ24yUCcpICsgY2FsY3NpemUoJzJuUG4nKSArIDgqY2FsY3NpemUoJ24yUCcpKQogICAgICAgICBsb25nZGljdCA9IHsxOjEsIDI6MiwgMzozLCA0OjQsIDU6NSwgNjo2LCA3OjcsIDg6OH0KLSAgICAgICAgY2hlY2sobG9uZ2RpY3QsIHNpemUoJ24yUCcgKyAnMm5QbicpICsgMTYqc3RydWN0LmNhbGNzaXplKCduMlAnKSkKLSAgICAgICAgIyBkaWN0aW9uYXJ5LWtleWl0ZXJhdG9yCisgICAgICAgIGNoZWNrKGxvbmdkaWN0LCBzaXplKCduMlAnKSArIGNhbGNzaXplKCcyblBuJykgKyAxNipjYWxjc2l6ZSgnbjJQJykpCisgICAgICAgICMgZGljdGlvbmFyeS1rZXl2aWV3CiAgICAgICAgIGNoZWNrKHt9LmtleXMoKSwgc2l6ZSgnUCcpKQotICAgICAgICAjIGRpY3Rpb25hcnktdmFsdWVpdGVyYXRvcgorICAgICAgICAjIGRpY3Rpb25hcnktdmFsdWV2aWV3CiAgICAgICAgIGNoZWNrKHt9LnZhbHVlcygpLCBzaXplKCdQJykpCi0gICAgICAgICMgZGljdGlvbmFyeS1pdGVtaXRlcmF0b3IKKyAgICAgICAgIyBkaWN0aW9uYXJ5LWl0ZW12aWV3CiAgICAgICAgIGNoZWNrKHt9Lml0ZW1zKCksIHNpemUoJ1AnKSkKICAgICAgICAgIyBkaWN0aW9uYXJ5IGl0ZXJhdG9yCiAgICAgICAgIGNoZWNrKGl0ZXIoe30pLCBzaXplKCdQMm5QbicpKQorICAgICAgICAjIGRpY3Rpb25hcnkta2V5aXRlcmF0b3IKKyAgICAgICAgY2hlY2soaXRlcih7fS5rZXlzKCkpLCBzaXplKCdQMm5QbicpKQorICAgICAgICAjIGRpY3Rpb25hcnktdmFsdWVpdGVyYXRvcgorICAgICAgICBjaGVjayhpdGVyKHt9LnZhbHVlcygpKSwgc2l6ZSgnUDJuUG4nKSkKKyAgICAgICAgIyBkaWN0aW9uYXJ5LWl0ZW1pdGVyYXRvcgorICAgICAgICBjaGVjayhpdGVyKHt9Lml0ZW1zKCkpLCBzaXplKCdQMm5QbicpKQogICAgICAgICAjIGRpY3Rwcm94eQogICAgICAgICBjbGFzcyBDKG9iamVjdCk6IHBhc3MKICAgICAgICAgY2hlY2soQy5fX2RpY3RfXywgc2l6ZSgnUCcpKQpAQCAtODc1LDcgKzk4Myw3IEBACiAgICAgICAgICAgICBjaGVjayhiYXIsIHNpemUoJ1BQJykpCiAgICAgICAgICMgZ2VuZXJhdG9yCiAgICAgICAgIGRlZiBnZXRfZ2VuKCk6IHlpZWxkIDEKLSAgICAgICAgY2hlY2soZ2V0X2dlbigpLCBzaXplKCdQYjJQJykpCisgICAgICAgIGNoZWNrKGdldF9nZW4oKSwgc2l6ZSgnUGIyUFBQJykpCiAgICAgICAgICMgaXRlcmF0b3IKICAgICAgICAgY2hlY2soaXRlcignYWJjJyksIHNpemUoJ2xQJykpCiAgICAgICAgICMgY2FsbGFibGUtaXRlcmF0b3IKQEAgLTkyOSw3ICsxMDM3LDcgQEAKICAgICAgICAgIyBmcm96ZW5zZXQKICAgICAgICAgUHlTZXRfTUlOU0laRSA9IDgKICAgICAgICAgc2FtcGxlcyA9IFtbXSwgcmFuZ2UoMTApLCByYW5nZSg1MCldCi0gICAgICAgIHMgPSBzaXplKCczbjJQJyArIFB5U2V0X01JTlNJWkUqJ25QJyArICduUCcpCisgICAgICAgIHMgPSBzaXplKCczblAnICsgUHlTZXRfTUlOU0laRSonblAnICsgJzJuUCcpCiAgICAgICAgIGZvciBzYW1wbGUgaW4gc2FtcGxlczoKICAgICAgICAgICAgIG1pbnVzZWQgPSBsZW4oc2FtcGxlKQogICAgICAgICAgICAgaWYgbWludXNlZCA9PSAwOiB0bXAgPSAxCkBAIC05NDMsOCArMTA1MSw4IEBACiAgICAgICAgICAgICAgICAgY2hlY2soc2V0KHNhbXBsZSksIHMpCiAgICAgICAgICAgICAgICAgY2hlY2soZnJvemVuc2V0KHNhbXBsZSksIHMpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNoZWNrKHNldChzYW1wbGUpLCBzICsgbmV3c2l6ZSpzdHJ1Y3QuY2FsY3NpemUoJ25QJykpCi0gICAgICAgICAgICAgICAgY2hlY2soZnJvemVuc2V0KHNhbXBsZSksIHMgKyBuZXdzaXplKnN0cnVjdC5jYWxjc2l6ZSgnblAnKSkKKyAgICAgICAgICAgICAgICBjaGVjayhzZXQoc2FtcGxlKSwgcyArIG5ld3NpemUqY2FsY3NpemUoJ25QJykpCisgICAgICAgICAgICAgICAgY2hlY2soZnJvemVuc2V0KHNhbXBsZSksIHMgKyBuZXdzaXplKmNhbGNzaXplKCduUCcpKQogICAgICAgICAjIHNldGl0ZXJhdG9yCiAgICAgICAgIGNoZWNrKGl0ZXIoc2V0KCkpLCBzaXplKCdQM24nKSkKICAgICAgICAgIyBzbGljZQpAQCAtOTU4LDExICsxMDY2LDE1IEBACiAgICAgICAgICMgc3RhdGljIHR5cGU6IFB5VHlwZU9iamVjdAogICAgICAgICBzID0gdnNpemUoJ1AybjE1UGw0UG45UG4xMVBJUCcpCiAgICAgICAgIGNoZWNrKGludCwgcykKLSAgICAgICAgIyAoUHlUeXBlT2JqZWN0ICsgUHlOdW1iZXJNZXRob2RzICsgUHlNYXBwaW5nTWV0aG9kcyArCi0gICAgICAgICMgIFB5U2VxdWVuY2VNZXRob2RzICsgUHlCdWZmZXJQcm9jcyArIDRQKQotICAgICAgICBzID0gdnNpemUoJ1AybjE1UGw0UG45UG4xMVBJUCcpICsgc3RydWN0LmNhbGNzaXplKCczNFAgM1AgMTBQIDJQIDRQJykKKyAgICAgICAgcyA9IHZzaXplKCdQMm4xNVBsNFBuOVBuMTFQSVAnICAjIFB5VHlwZU9iamVjdAorICAgICAgICAgICAgICAgICAgJzNQJyAgICAgICAgICAgICAgICAgICMgUHlBc3luY01ldGhvZHMKKyAgICAgICAgICAgICAgICAgICczNlAnICAgICAgICAgICAgICAgICAjIFB5TnVtYmVyTWV0aG9kcworICAgICAgICAgICAgICAgICAgJzNQJyAgICAgICAgICAgICAgICAgICMgUHlNYXBwaW5nTWV0aG9kcworICAgICAgICAgICAgICAgICAgJzEwUCcgICAgICAgICAgICAgICAgICMgUHlTZXF1ZW5jZU1ldGhvZHMKKyAgICAgICAgICAgICAgICAgICcyUCcgICAgICAgICAgICAgICAgICAjIFB5QnVmZmVyUHJvY3MKKyAgICAgICAgICAgICAgICAgICc0UCcpCiAgICAgICAgICMgU2VwYXJhdGUgYmxvY2sgZm9yIFB5RGljdEtleXNPYmplY3Qgd2l0aCA0IGVudHJpZXMKLSAgICAgICAgcyArPSBzdHJ1Y3QuY2FsY3NpemUoIjJuUG4iKSArIDQqc3RydWN0LmNhbGNzaXplKCJuMlAiKQorICAgICAgICBzICs9IGNhbGNzaXplKCIyblBuIikgKyA0KmNhbGNzaXplKCJuMlAiKQogICAgICAgICAjIGNsYXNzCiAgICAgICAgIGNsYXNzIG5ld3N0eWxlY2xhc3Mob2JqZWN0KTogcGFzcwogICAgICAgICBjaGVjayhuZXdzdHlsZWNsYXNzLCBzKQpAQCAtMTAwNiw2ICsxMTE4LDM2IEBACiAgICAgICAgICMgd2Vha2NhbGxhYmxlcHJveHkKICAgICAgICAgY2hlY2sod2Vha3JlZi5wcm94eShpbnQpLCBzaXplKCcyUG4yUCcpKQogCisgICAgZGVmIGNoZWNrX3Nsb3RzKHNlbGYsIG9iaiwgYmFzZSwgZXh0cmEpOgorICAgICAgICBleHBlY3RlZCA9IHN5cy5nZXRzaXplb2YoYmFzZSkgKyBzdHJ1Y3QuY2FsY3NpemUoZXh0cmEpCisgICAgICAgIGlmIGdjLmlzX3RyYWNrZWQob2JqKSBhbmQgbm90IGdjLmlzX3RyYWNrZWQoYmFzZSk6CisgICAgICAgICAgICBleHBlY3RlZCArPSBzZWxmLmdjX2hlYWRzaXplCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHNpemVvZihvYmopLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3Nsb3RzKHNlbGYpOgorICAgICAgICAjIGNoZWNrIGFsbCBzdWJjbGFzc2FibGUgdHlwZXMgZGVmaW5lZCBpbiBPYmplY3RzLyB0aGF0IGFsbG93CisgICAgICAgICMgbm9uLWVtcHR5IF9fc2xvdHNfXworICAgICAgICBjaGVjayA9IHNlbGYuY2hlY2tfc2xvdHMKKyAgICAgICAgY2xhc3MgQkEoYnl0ZWFycmF5KToKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICdhJywgJ2InLCAnYycKKyAgICAgICAgY2hlY2soQkEoKSwgYnl0ZWFycmF5KCksICczUCcpCisgICAgICAgIGNsYXNzIEQoZGljdCk6CisgICAgICAgICAgICBfX3Nsb3RzX18gPSAnYScsICdiJywgJ2MnCisgICAgICAgIGNoZWNrKEQoeD1bXSksIHsneCc6IFtdfSwgJzNQJykKKyAgICAgICAgY2xhc3MgTChsaXN0KToKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICdhJywgJ2InLCAnYycKKyAgICAgICAgY2hlY2soTCgpLCBbXSwgJzNQJykKKyAgICAgICAgY2xhc3MgUyhzZXQpOgorICAgICAgICAgICAgX19zbG90c19fID0gJ2EnLCAnYicsICdjJworICAgICAgICBjaGVjayhTKCksIHNldCgpLCAnM1AnKQorICAgICAgICBjbGFzcyBGUyhmcm96ZW5zZXQpOgorICAgICAgICAgICAgX19zbG90c19fID0gJ2EnLCAnYicsICdjJworICAgICAgICBjaGVjayhGUygpLCBmcm96ZW5zZXQoKSwgJzNQJykKKyAgICAgICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKKyAgICAgICAgY2xhc3MgT0QoT3JkZXJlZERpY3QpOgorICAgICAgICAgICAgX19zbG90c19fID0gJ2EnLCAnYicsICdjJworICAgICAgICBjaGVjayhPRCh4PVtdKSwgT3JkZXJlZERpY3QoeD1bXSksICczUCcpCisKICAgICBkZWYgdGVzdF9weXRob250eXBlcyhzZWxmKToKICAgICAgICAgIyBjaGVjayBhbGwgdHlwZXMgZGVmaW5lZCBpbiBQeXRob24vCiAgICAgICAgIHNpemUgPSB0ZXN0LnN1cHBvcnQuY2FsY29ianNpemUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHByb2ZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3N5c19zZXRwcm9maWxlLnB5CmluZGV4IDk4MTZlM2UuLmJiNzFhY2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHByb2ZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeXNfc2V0cHJvZmlsZS5weQpAQCAtMyw3ICszLDYgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogY2xhc3MgVGVzdEdldFByb2ZpbGUodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTI2MCw3ICsyNTksNiBAQAogICAgICAgICBkZWYgZigpOgogICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CiAgICAgICAgICAgICAgICAgeWllbGQgaQotICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgogICAgICAgICBkZWYgZyhwKToKICAgICAgICAgICAgIGZvciBpIGluIGYoKToKICAgICAgICAgICAgICAgICBwYXNzCkBAIC0zNzQsMTMgKzM3Miw1IEBACiAgICAgcHByaW50LnBwcmludChjYXB0dXJlX2V2ZW50cyhjYWxsYWJsZSkpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICBUZXN0R2V0UHJvZmlsZSwKLSAgICAgICAgUHJvZmlsZUhvb2tUZXN0Q2FzZSwKLSAgICAgICAgUHJvZmlsZVNpbXVsYXRvclRlc3RDYXNlCi0gICAgKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkKaW5kZXggOGVkNzI5YS4uMDkxN2MzZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkKQEAgLTM4NSw2ICszODUsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUodmFyc1snU08nXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzWydTTyddLCB2YXJzWydFWFRfU1VGRklYJ10pCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ2xpbnV4JywgJ0xpbnV4LXNwZWNpZmljIHRlc3QnKQorICAgIGRlZiB0ZXN0X3RyaXBsZXRfaW5fZXh0X3N1ZmZpeChzZWxmKToKKyAgICAgICAgaW1wb3J0IGN0eXBlcywgcGxhdGZvcm0sIHJlCisgICAgICAgIG1hY2hpbmUgPSBwbGF0Zm9ybS5tYWNoaW5lKCkKKyAgICAgICAgc3VmZml4ID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdFWFRfU1VGRklYJykKKyAgICAgICAgaWYgcmUubWF0Y2goJyhhYXJjaDY0fGFybXxtaXBzfHBwY3xwb3dlcnBjfHMzOTB8c3BhcmMpJywgbWFjaGluZSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2xpbnV4JyBpbiBzdWZmaXgsIHN1ZmZpeCkKKyAgICAgICAgaWYgcmUubWF0Y2goJyhpWzMtNl04Nnx4ODZfNjQpJCcsIG1hY2hpbmUpOgorICAgICAgICAgICAgaWYgY3R5cGVzLnNpemVvZihjdHlwZXMuY19jaGFyX3AoKSkgPT0gNDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VmZml4LmVuZHN3aXRoKCdpMzg2LWxpbnV4LWdudS5zbycpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Igc3VmZml4LmVuZHN3aXRoKCd4ODZfNjQtbGludXgtZ251eDMyLnNvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCkKKyAgICAgICAgICAgIGVsc2U6ICMgOCBieXRlIHBvaW50ZXIgc2l6ZQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdWZmaXguZW5kc3dpdGgoJ3g4Nl82NC1saW51eC1nbnUuc28nKSwgc3VmZml4KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nLCAnT1MgWC1zcGVjaWZpYyB0ZXN0JykKKyAgICBkZWYgdGVzdF9vc3hfZXh0X3N1ZmZpeChzZWxmKToKKyAgICAgICAgc3VmZml4ID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdFWFRfU1VGRklYJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1ZmZpeC5lbmRzd2l0aCgnLWRhcndpbi5zbycpLCBzdWZmaXgpCiAKIGNsYXNzIE1ha2VmaWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5c2xvZy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzbG9nLnB5CmluZGV4IGI3ZmQyYmQuLjZmOTAyZjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzbG9nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzbG9nLnB5CkBAIC0zNiw4ICszNiw1IEBACiAgICAgICAgIHN5c2xvZy5vcGVubG9nKCkKICAgICAgICAgc3lzbG9nLnN5c2xvZygndGVzdCBtZXNzYWdlIGZyb20gcHl0aG9uIHRlc3Rfc3lzbG9nJykKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkKaW5kZXggMzA5MWNlNy4uMTQxMmNhZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weQpAQCAtMiwxMSArMiwxNCBAQAogaW1wb3J0IG9zCiBpbXBvcnQgaW8KIGZyb20gaGFzaGxpYiBpbXBvcnQgbWQ1Citmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyCiAKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0Lm1vY2sKIGltcG9ydCB0YXJmaWxlCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgc2NyaXB0X2hlbHBlcgorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgogCiAjIENoZWNrIGZvciBvdXIgY29tcHJlc3Npb24gbW9kdWxlcy4KIHRyeToKQEAgLTI4NSw2ICsyODgsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ3BheCcgKyAoYicvMTIzJyAqIDEyNSkgKyBiJy9sb25nbGluayBsaW5rIHRvIHBheCcgKwogICAgICAgICAgICAgICAgICAgICAgIChiJy8xMjMnICogMTI1KSArIGInL2xvbmduYW1lJywgb3V0KQogCisgICAgZGVmIHRlc3RfbGlzdF9tZW1iZXJzKHNlbGYpOgorICAgICAgICB0aW8gPSBpby5UZXh0SU9XcmFwcGVyKGlvLkJ5dGVzSU8oKSwgJ2FzY2lpJywgbmV3bGluZT0nXG4nKQorICAgICAgICBkZWYgbWVtYmVycyh0YXIpOgorICAgICAgICAgICAgZm9yIHRhcmluZm8gaW4gdGFyLmdldG1lbWJlcnMoKToKKyAgICAgICAgICAgICAgICBpZiAncmVnJyBpbiB0YXJpbmZvLm5hbWU6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRhcmluZm8KKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfYXR0cihzeXMsICdzdGRvdXQnLCB0aW8pOgorICAgICAgICAgICAgc2VsZi50YXIubGlzdCh2ZXJib3NlPUZhbHNlLCBtZW1iZXJzPW1lbWJlcnMoc2VsZi50YXIpKQorICAgICAgICBvdXQgPSB0aW8uZGV0YWNoKCkuZ2V0dmFsdWUoKQorICAgICAgICBzZWxmLmFzc2VydEluKGIndXN0YXIvcmVndHlwZScsIG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihiJ3VzdGFyL2NvbnR0eXBlJywgb3V0KQorCiAKIGNsYXNzIEd6aXBMaXN0VGVzdChHemlwVGVzdCwgTGlzdFRlc3QpOgogICAgIHBhc3MKQEAgLTk5MCw2ICsxMDA1LDE5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm9iai5jbG9zZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgZm9iai5nZXR2YWx1ZSgpKQogCisgICAgZGVmIHRlc3RfZW9mX21hcmtlcihzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgYW4gZW5kIG9mIGFyY2hpdmUgbWFya2VyIGlzIHdyaXR0ZW4gKHR3byB6ZXJvIGJsb2NrcykuCisgICAgICAgICMgdGFyZmlsZSBpbnNpc3RzIG9uIGFsaWduaW5nIGFyY2hpdmVzIHRvIGEgMjAgKiA1MTIgYnl0ZSByZWNvcmRzaXplLgorICAgICAgICAjIFNvLCB3ZSBjcmVhdGUgYW4gYXJjaGl2ZSB0aGF0IGhhcyBleGFjdGx5IDEwMjQwIGJ5dGVzIHdpdGhvdXQgdGhlCisgICAgICAgICMgbWFya2VyLCBhbmQgaGFzIDIwNDgwIGJ5dGVzIG9uY2UgdGhlIG1hcmtlciBpcyB3cml0dGVuLgorICAgICAgICB3aXRoIHRhcmZpbGUub3Blbih0bXBuYW1lLCBzZWxmLm1vZGUpIGFzIHRhcjoKKyAgICAgICAgICAgIHQgPSB0YXJmaWxlLlRhckluZm8oImZvbyIpCisgICAgICAgICAgICB0LnNpemUgPSB0YXJmaWxlLlJFQ09SRFNJWkUgLSB0YXJmaWxlLkJMT0NLU0laRQorICAgICAgICAgICAgdGFyLmFkZGZpbGUodCwgaW8uQnl0ZXNJTyhiImEiICogdC5zaXplKSkKKworICAgICAgICB3aXRoIHNlbGYub3Blbih0bXBuYW1lLCAicmIiKSBhcyBmb2JqOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZm9iai5yZWFkKCkpLCB0YXJmaWxlLlJFQ09SRFNJWkUgKiAyKQorCiAKIGNsYXNzIFdyaXRlVGVzdChXcml0ZVRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTE0MzMsNiArMTQ2MSw4OCBAQAogICAgICAgICAgICAgICAgICAgICgibG9uZ2xuay8iICogMTI3KSArICJsb25nbGlua18iKQogCiAKK2NsYXNzIENyZWF0ZVRlc3QoV3JpdGVUZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgcHJlZml4ID0gIng6IgorCisgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKFRFTVBESVIsICJzcGFtZWdnczQyIikKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsodG1wbmFtZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHdpdGggb3BlbihjbHMuZmlsZV9wYXRoLCAid2IiKSBhcyBmb2JqOgorICAgICAgICAgICAgZm9iai53cml0ZShiImFhYSIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBzdXBwb3J0LnVubGluayhjbHMuZmlsZV9wYXRoKQorCisgICAgZGVmIHRlc3RfY3JlYXRlKHNlbGYpOgorICAgICAgICB3aXRoIHRhcmZpbGUub3Blbih0bXBuYW1lLCBzZWxmLm1vZGUpIGFzIHRvYmo6CisgICAgICAgICAgICB0b2JqLmFkZChzZWxmLmZpbGVfcGF0aCkKKworICAgICAgICB3aXRoIHNlbGYudGFyb3Blbih0bXBuYW1lKSBhcyB0b2JqOgorICAgICAgICAgICAgbmFtZXMgPSB0b2JqLmdldG5hbWVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEluKCdzcGFtZWdnczQyJywgbmFtZXNbMF0pCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfZXhpc3Rpbmcoc2VsZik6CisgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHRtcG5hbWUsIHNlbGYubW9kZSkgYXMgdG9iajoKKyAgICAgICAgICAgIHRvYmouYWRkKHNlbGYuZmlsZV9wYXRoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yKToKKyAgICAgICAgICAgIHRvYmogPSB0YXJmaWxlLm9wZW4odG1wbmFtZSwgc2VsZi5tb2RlKQorCisgICAgICAgIHdpdGggc2VsZi50YXJvcGVuKHRtcG5hbWUpIGFzIHRvYmo6CisgICAgICAgICAgICBuYW1lcyA9IHRvYmouZ2V0bmFtZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuYW1lcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3NwYW1lZ2dzNDInLCBuYW1lc1swXSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV90YXJvcGVuKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYudGFyb3Blbih0bXBuYW1lLCAieCIpIGFzIHRvYmo6CisgICAgICAgICAgICB0b2JqLmFkZChzZWxmLmZpbGVfcGF0aCkKKworICAgICAgICB3aXRoIHNlbGYudGFyb3Blbih0bXBuYW1lKSBhcyB0b2JqOgorICAgICAgICAgICAgbmFtZXMgPSB0b2JqLmdldG5hbWVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEluKCdzcGFtZWdnczQyJywgbmFtZXNbMF0pCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfZXhpc3RpbmdfdGFyb3BlbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLnRhcm9wZW4odG1wbmFtZSwgIngiKSBhcyB0b2JqOgorICAgICAgICAgICAgdG9iai5hZGQoc2VsZi5maWxlX3BhdGgpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlRXhpc3RzRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnRhcm9wZW4odG1wbmFtZSwgIngiKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLnRhcm9wZW4odG1wbmFtZSkgYXMgdG9iajoKKyAgICAgICAgICAgIG5hbWVzID0gdG9iai5nZXRuYW1lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5hbWVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigic3BhbWVnZ3M0MiIsIG5hbWVzWzBdKQorCisKK2NsYXNzIEd6aXBDcmVhdGVUZXN0KEd6aXBUZXN0LCBDcmVhdGVUZXN0KToKKyAgICBwYXNzCisKKworY2xhc3MgQnoyQ3JlYXRlVGVzdChCejJUZXN0LCBDcmVhdGVUZXN0KToKKyAgICBwYXNzCisKKworY2xhc3MgTHptYUNyZWF0ZVRlc3QoTHptYVRlc3QsIENyZWF0ZVRlc3QpOgorICAgIHBhc3MKKworCitjbGFzcyBDcmVhdGVXaXRoWE1vZGVUZXN0KENyZWF0ZVRlc3QpOgorCisgICAgcHJlZml4ID0gIngiCisKKyAgICB0ZXN0X2NyZWF0ZV90YXJvcGVuID0gTm9uZQorICAgIHRlc3RfY3JlYXRlX2V4aXN0aW5nX3Rhcm9wZW4gPSBOb25lCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgImxpbmsiKSwgIk1pc3NpbmcgaGFyZGxpbmsgaW1wbGVtZW50YXRpb24iKQogY2xhc3MgSGFyZGxpbmtUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAjIFRlc3QgdGhlIGNyZWF0aW9uIG9mIExOS1RZUEUgKGhhcmRsaW5rKSBtZW1iZXJzIGluIGFuIGFyY2hpdmUuCkBAIC0yMTkxLDYgKzIzMDEsMTM4IEBACiAgICAgICAgIHNlbGYuX3Rlc3RfcGFydGlhbF9pbnB1dCgicjpiejIiKQogCiAKK2RlZiByb290X2lzX3VpZF9naWRfMCgpOgorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IHB3ZCwgZ3JwCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBpZiBwd2QuZ2V0cHd1aWQoMClbMF0gIT0gJ3Jvb3QnOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBpZiBncnAuZ2V0Z3JnaWQoMClbMF0gIT0gJ3Jvb3QnOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gVHJ1ZQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdjaG93bicpLCAibWlzc2luZyBvcy5jaG93biIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0ZXVpZCcpLCAibWlzc2luZyBvcy5nZXRldWlkIikKK2NsYXNzIE51bWVyaWNPd25lclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgbW9jayB0aGUgZm9sbG93aW5nOgorICAgICMgIG9zLmNob3duOiBzbyB3ZSBjYW4gdGVzdCB3aGF0J3MgYmVpbmcgY2FsbGVkCisgICAgIyAgb3MuY2htb2Q6IHNvIHRoZSBtb2RlcyBhcmUgbm90IGFjdHVhbGx5IGNoYW5nZWQuIGlmIHRoZXkgYXJlLCB3ZSBjYW4ndAorICAgICMgICAgICAgICAgICAgZGVsZXRlIHRoZSBmaWxlcy9kaXJlY3RvcmllcworICAgICMgIG9zLmdldGV1aWQ6IHNvIHdlIGNhbiBsaWUgYW5kIHNheSB3ZSdyZSByb290ICh1aWQgPSAwKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfbWFrZV90ZXN0X2FyY2hpdmUoZmlsZW5hbWVfMSwgZGlybmFtZV8xLCBmaWxlbmFtZV8yKToKKyAgICAgICAgIyB0aGUgZmlsZSBjb250ZW50cyB0byB3cml0ZQorICAgICAgICBmb2JqID0gaW8uQnl0ZXNJTyhiImNvbnRlbnQiKQorCisgICAgICAgICMgY3JlYXRlIGEgdGFyIGZpbGUgd2l0aCBhIGZpbGUsIGEgZGlyZWN0b3J5LCBhbmQgYSBmaWxlIHdpdGhpbiB0aGF0CisgICAgICAgICMgIGRpcmVjdG9yeS4gQXNzaWduIHZhcmlvdXMgLnVpZC8uZ2lkIHZhbHVlcyB0byB0aGVtCisgICAgICAgIGl0ZW1zID0gWyhmaWxlbmFtZV8xLCA5OSwgOTgsIHRhcmZpbGUuUkVHVFlQRSwgZm9iaiksCisgICAgICAgICAgICAgICAgIChkaXJuYW1lXzEsICA3NywgNzYsIHRhcmZpbGUuRElSVFlQRSwgTm9uZSksCisgICAgICAgICAgICAgICAgIChmaWxlbmFtZV8yLCA4OCwgODcsIHRhcmZpbGUuUkVHVFlQRSwgZm9iaiksCisgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4odG1wbmFtZSwgJ3cnKSBhcyB0YXJmbDoKKyAgICAgICAgICAgIGZvciBuYW1lLCB1aWQsIGdpZCwgdHlwLCBjb250ZW50cyBpbiBpdGVtczoKKyAgICAgICAgICAgICAgICB0ID0gdGFyZmlsZS5UYXJJbmZvKG5hbWUpCisgICAgICAgICAgICAgICAgdC51aWQgPSB1aWQKKyAgICAgICAgICAgICAgICB0LmdpZCA9IGdpZAorICAgICAgICAgICAgICAgIHQudW5hbWUgPSAncm9vdCcKKyAgICAgICAgICAgICAgICB0LmduYW1lID0gJ3Jvb3QnCisgICAgICAgICAgICAgICAgdC50eXBlID0gdHlwCisgICAgICAgICAgICAgICAgdGFyZmwuYWRkZmlsZSh0LCBjb250ZW50cykKKworICAgICAgICAjIHJldHVybiB0aGUgZnVsbCBwYXRobmFtZSB0byB0aGUgdGFyIGZpbGUKKyAgICAgICAgcmV0dXJuIHRtcG5hbWUKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBAY29udGV4dG1hbmFnZXIKKyAgICBkZWYgX3NldHVwX3Rlc3QobW9ja19nZXRldWlkKToKKyAgICAgICAgbW9ja19nZXRldWlkLnJldHVybl92YWx1ZSA9IDAgICMgbGllIGFuZCBzYXkgd2UncmUgcm9vdAorICAgICAgICBmbmFtZSA9ICdudW1lcmljLW93bmVyLXRlc3RmaWxlJworICAgICAgICBkaXJuYW1lID0gJ2RpcicKKworICAgICAgICAjIHRoZSBuYW1lcyB3ZSB3YW50IHN0b3JlZCBpbiB0aGUgdGFyZmlsZQorICAgICAgICBmaWxlbmFtZV8xID0gZm5hbWUKKyAgICAgICAgZGlybmFtZV8xID0gZGlybmFtZQorICAgICAgICBmaWxlbmFtZV8yID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIGZuYW1lKQorCisgICAgICAgICMgY3JlYXRlIHRoZSB0YXJmaWxlIHdpdGggdGhlIGNvbnRlbnRzIHdlJ3JlIGFmdGVyCisgICAgICAgIHRhcl9maWxlbmFtZSA9IE51bWVyaWNPd25lclRlc3QuX21ha2VfdGVzdF9hcmNoaXZlKGZpbGVuYW1lXzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcm5hbWVfMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWVfMikKKworICAgICAgICAjIG9wZW4gdGhlIHRhcmZpbGUgZm9yIHJlYWRpbmcuIHlpZWxkIGl0IGFuZCB0aGUgbmFtZXMgb2YgdGhlIGl0ZW1zCisgICAgICAgICMgIHdlIHN0b3JlZCBpbnRvIHRoZSBmaWxlCisgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHRhcl9maWxlbmFtZSkgYXMgdGFyZmw6CisgICAgICAgICAgICB5aWVsZCB0YXJmbCwgZmlsZW5hbWVfMSwgZGlybmFtZV8xLCBmaWxlbmFtZV8yCisKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgnb3MuY2hvd24nKQorICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCdvcy5jaG1vZCcpCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goJ29zLmdldGV1aWQnKQorICAgIGRlZiB0ZXN0X2V4dHJhY3Rfd2l0aF9udW1lcmljX293bmVyKHNlbGYsIG1vY2tfZ2V0ZXVpZCwgbW9ja19jaG1vZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrX2Nob3duKToKKyAgICAgICAgd2l0aCBzZWxmLl9zZXR1cF90ZXN0KG1vY2tfZ2V0ZXVpZCkgYXMgKHRhcmZsLCBmaWxlbmFtZV8xLCBfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWVfMik6CisgICAgICAgICAgICB0YXJmbC5leHRyYWN0KGZpbGVuYW1lXzEsIFRFTVBESVIsIG51bWVyaWNfb3duZXI9VHJ1ZSkKKyAgICAgICAgICAgIHRhcmZsLmV4dHJhY3QoZmlsZW5hbWVfMiAsIFRFTVBESVIsIG51bWVyaWNfb3duZXI9VHJ1ZSkKKworICAgICAgICAjIGNvbnZlcnQgdG8gZmlsZXN5c3RlbSBwYXRocworICAgICAgICBmX2ZpbGVuYW1lXzEgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgZmlsZW5hbWVfMSkKKyAgICAgICAgZl9maWxlbmFtZV8yID0gb3MucGF0aC5qb2luKFRFTVBESVIsIGZpbGVuYW1lXzIpCisKKyAgICAgICAgbW9ja19jaG93bi5hc3NlcnRfaGFzX2NhbGxzKFt1bml0dGVzdC5tb2NrLmNhbGwoZl9maWxlbmFtZV8xLCA5OSwgOTgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0Lm1vY2suY2FsbChmX2ZpbGVuYW1lXzIsIDg4LCA4NyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueV9vcmRlcj1UcnVlKQorCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goJ29zLmNob3duJykKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgnb3MuY2htb2QnKQorICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCdvcy5nZXRldWlkJykKKyAgICBkZWYgdGVzdF9leHRyYWN0YWxsX3dpdGhfbnVtZXJpY19vd25lcihzZWxmLCBtb2NrX2dldGV1aWQsIG1vY2tfY2htb2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ja19jaG93bik6CisgICAgICAgIHdpdGggc2VsZi5fc2V0dXBfdGVzdChtb2NrX2dldGV1aWQpIGFzICh0YXJmbCwgZmlsZW5hbWVfMSwgZGlybmFtZV8xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWVfMik6CisgICAgICAgICAgICB0YXJmbC5leHRyYWN0YWxsKFRFTVBESVIsIG51bWVyaWNfb3duZXI9VHJ1ZSkKKworICAgICAgICAjIGNvbnZlcnQgdG8gZmlsZXN5c3RlbSBwYXRocworICAgICAgICBmX2ZpbGVuYW1lXzEgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgZmlsZW5hbWVfMSkKKyAgICAgICAgZl9kaXJuYW1lXzEgID0gb3MucGF0aC5qb2luKFRFTVBESVIsIGRpcm5hbWVfMSkKKyAgICAgICAgZl9maWxlbmFtZV8yID0gb3MucGF0aC5qb2luKFRFTVBESVIsIGZpbGVuYW1lXzIpCisKKyAgICAgICAgbW9ja19jaG93bi5hc3NlcnRfaGFzX2NhbGxzKFt1bml0dGVzdC5tb2NrLmNhbGwoZl9maWxlbmFtZV8xLCA5OSwgOTgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0Lm1vY2suY2FsbChmX2Rpcm5hbWVfMSwgNzcsIDc2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5tb2NrLmNhbGwoZl9maWxlbmFtZV8yLCA4OCwgODcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnlfb3JkZXI9VHJ1ZSkKKworICAgICMgdGhpcyB0ZXN0IHJlcXVpcmVzIHRoYXQgdWlkPTAgYW5kIGdpZD0wIHJlYWxseSBiZSBuYW1lZCAncm9vdCcuIHRoYXQncworICAgICMgIGJlY2F1c2UgdGhlIHVuYW1lIGFuZCBnbmFtZSBpbiB0aGUgdGVzdCBmaWxlIGFyZSAncm9vdCcsIGFuZCBleHRyYWN0KCkKKyAgICAjICB3aWxsIGxvb2sgdGhlbSB1cCB1c2luZyBwd2QgYW5kIGdycCB0byBmaW5kIHRoZWlyIHVpZCBhbmQgZ2lkLCB3aGljaCB3ZQorICAgICMgIHRlc3QgaGVyZSB0byBiZSAwLgorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHJvb3RfaXNfdWlkX2dpZF8wKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3VpZD0wLGdpZD0wIG11c3QgYmUgbmFtZWQgInJvb3QiJykKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgnb3MuY2hvd24nKQorICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCdvcy5jaG1vZCcpCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goJ29zLmdldGV1aWQnKQorICAgIGRlZiB0ZXN0X2V4dHJhY3Rfd2l0aG91dF9udW1lcmljX293bmVyKHNlbGYsIG1vY2tfZ2V0ZXVpZCwgbW9ja19jaG1vZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrX2Nob3duKToKKyAgICAgICAgd2l0aCBzZWxmLl9zZXR1cF90ZXN0KG1vY2tfZ2V0ZXVpZCkgYXMgKHRhcmZsLCBmaWxlbmFtZV8xLCBfLCBfKToKKyAgICAgICAgICAgIHRhcmZsLmV4dHJhY3QoZmlsZW5hbWVfMSwgVEVNUERJUiwgbnVtZXJpY19vd25lcj1GYWxzZSkKKworICAgICAgICAjIGNvbnZlcnQgdG8gZmlsZXN5c3RlbSBwYXRocworICAgICAgICBmX2ZpbGVuYW1lXzEgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgZmlsZW5hbWVfMSkKKworICAgICAgICBtb2NrX2Nob3duLmFzc2VydF9jYWxsZWRfd2l0aChmX2ZpbGVuYW1lXzEsIDAsIDApCisKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgnb3MuZ2V0ZXVpZCcpCisgICAgZGVmIHRlc3Rfa2V5d29yZF9vbmx5KHNlbGYsIG1vY2tfZ2V0ZXVpZCk6CisgICAgICAgIHdpdGggc2VsZi5fc2V0dXBfdGVzdChtb2NrX2dldGV1aWQpIGFzICh0YXJmbCwgZmlsZW5hbWVfMSwgXywgXyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJmbC5leHRyYWN0LCBmaWxlbmFtZV8xLCBURU1QRElSLCBGYWxzZSwgVHJ1ZSkKKworCiBkZWYgc2V0VXBNb2R1bGUoKToKICAgICBzdXBwb3J0LnVubGluayhURU1QRElSKQogICAgIG9zLm1ha2VkaXJzKFRFTVBESVIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RjbC5weSBiL0xpYi90ZXN0L3Rlc3RfdGNsLnB5CmluZGV4IGI2NTY1NjMuLjI1ZjZlZGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGNsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGNsLnB5CkBAIC04LDkgKzgsNyBAQAogIyBTa2lwIHRoaXMgdGVzdCBpZiB0aGUgX3RraW50ZXIgbW9kdWxlIHdhc24ndCBidWlsdC4KIF90a2ludGVyID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfdGtpbnRlcicpCiAKLSMgTWFrZSBzdXJlIHRraW50ZXIuX2ZpeCBydW5zIHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQKLXRraW50ZXIgPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoJ3RraW50ZXInKQotCitpbXBvcnQgdGtpbnRlcgogZnJvbSB0a2ludGVyIGltcG9ydCBUY2wKIGZyb20gX3RraW50ZXIgaW1wb3J0IFRjbEVycm9yCiAKQEAgLTEzMSw5ICsxMjksNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUY2xFcnJvcix0Y2wudW5zZXR2YXIsJ2EnKQogCiAgICAgZGVmIGdldF9pbnRlZ2VycyhzZWxmKToKLSAgICAgICAgaW50ZWdlcnMgPSAoMCwgMSwgLTEsIDIqKjMxLTEsIC0yKiozMSkKLSAgICAgICAgaWYgdGNsX3ZlcnNpb24gPj0gKDgsIDQpOiAgIyB3aWRlSW50IHdhcyBhZGRlZCBpbiBUY2wgOC40Ci0gICAgICAgICAgICBpbnRlZ2VycyArPSAoMioqMzEsIC0yKiozMS0xLCAyKio2My0xLCAtMioqNjMpCisgICAgICAgIGludGVnZXJzID0gKDAsIDEsIC0xLCAyKiozMS0xLCAtMioqMzEsIDIqKjMxLCAtMioqMzEtMSwgMioqNjMtMSwgLTIqKjYzKQogICAgICAgICAjIGJpZ251bSB3YXMgYWRkZWQgaW4gVGNsIDguNSwgYnV0IGl0cyBzdXBwb3J0IGlzIGFibGUgb25seSBzaW5jZSA4LjUuOAogICAgICAgICBpZiAoZ2V0X3RrX3BhdGNobGV2ZWwoKSA+PSAoOCwgNiwgMCwgJ2ZpbmFsJykgb3IKICAgICAgICAgICAgICg4LCA1LCA4KSA8PSBnZXRfdGtfcGF0Y2hsZXZlbCgpIDwgKDgsIDYpKToKQEAgLTE2NiwxMCArMTYyLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGNsLmdldGRvdWJsZSgnIDQyICcpLCA0Mi4wKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRjbC5nZXRkb3VibGUoJyA0Mi41ICcpLCA0Mi41KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRjbC5nZXRkb3VibGUoNDIuNSksIDQyLjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGNsLmdldGRvdWJsZSg0MiksIDQyLjApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdGNsLmdldGRvdWJsZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0Y2wuZ2V0ZG91YmxlLCAnNDIuNScsICcxMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdGNsLmdldGRvdWJsZSwgYic0Mi41JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0Y2wuZ2V0ZG91YmxlLCA0MikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVGNsRXJyb3IsIHRjbC5nZXRkb3VibGUsICdhJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFR5cGVFcnJvciwgVmFsdWVFcnJvciwgVGNsRXJyb3IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICB0Y2wuZ2V0ZG91YmxlLCAnNDIuNVwwJykKQEAgLTQ2NCw2ICs0NjAsOCBAQAogICAgICAgICAgICAgIyBYWFggTmFOIHJlcHJlc2VudGF0aW9uIGNhbiBiZSBub3QgcGFyc2FibGUgYnkgZmxvYXQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhc3NWYWx1ZSgoMSwgJzInLCAoMy40LCkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgJzInLCAoMy40LCkpIGlmIHNlbGYud2FudG9iamVjdHMgZWxzZSAnMSAyIDMuNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFzc1ZhbHVlKFsnYScsIFsnYicsICdjJ11dKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EnLCAoJ2InLCAnYycpKSBpZiBzZWxmLndhbnRvYmplY3RzIGVsc2UgJ2Ege2IgY30nKQogCiAgICAgZGVmIHRlc3RfdXNlcl9jb21tYW5kKHNlbGYpOgogICAgICAgICByZXN1bHQgPSBOb25lCkBAIC01MTcsNiArNTE1LDcgQEAKICAgICAgICAgIyBYWFggTmFOIHJlcHJlc2VudGF0aW9uIGNhbiBiZSBub3QgcGFyc2FibGUgYnkgZmxvYXQoKQogICAgICAgICBjaGVjaygoKSwgJycpCiAgICAgICAgIGNoZWNrKCgxLCAoMiwpLCAoMywgNCksICc1IDYnLCAoKSksICcxIDIgezMgNH0gezUgNn0ge30nKQorICAgICAgICBjaGVjayhbMSwgWzIsXSwgWzMsIDRdLCAnNSA2JywgW11dLCAnMSAyIHszIDR9IHs1IDZ9IHt9JykKIAogICAgIGRlZiB0ZXN0X3NwbGl0bGlzdChzZWxmKToKICAgICAgICAgc3BsaXRsaXN0ID0gc2VsZi5pbnRlcnAudGsuc3BsaXRsaXN0CkBAIC01NDIsMTIgKzU0MSwxNSBAQAogICAgICAgICAgICAgKCdhIDMuNCcsICgnYScsICczLjQnKSksCiAgICAgICAgICAgICAoKCdhJywgMy40KSwgKCdhJywgMy40KSksCiAgICAgICAgICAgICAoKCksICgpKSwKKyAgICAgICAgICAgIChbXSwgKCkpLAorICAgICAgICAgICAgKFsnYScsIFsnYicsICdjJ11dLCAoJ2EnLCBbJ2InLCAnYyddKSksCiAgICAgICAgICAgICAoY2FsbCgnbGlzdCcsIDEsICcyJywgKDMuNCwpKSwKICAgICAgICAgICAgICAgICAoMSwgJzInLCAoMy40LCkpIGlmIHNlbGYud2FudG9iamVjdHMgZWxzZQogICAgICAgICAgICAgICAgICgnMScsICcyJywgJzMuNCcpKSwKICAgICAgICAgXQorICAgICAgICB0a19wYXRjaGxldmVsID0gZ2V0X3RrX3BhdGNobGV2ZWwoKQogICAgICAgICBpZiB0Y2xfdmVyc2lvbiA+PSAoOCwgNSk6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi53YW50b2JqZWN0cyBvciBnZXRfdGtfcGF0Y2hsZXZlbCgpIDwgKDgsIDUsIDUpOgorICAgICAgICAgICAgaWYgbm90IHNlbGYud2FudG9iamVjdHMgb3IgdGtfcGF0Y2hsZXZlbCA8ICg4LCA1LCA1KToKICAgICAgICAgICAgICAgICAjIEJlZm9yZSA4LjUuNSBkaWN0cyB3ZXJlIGNvbnZlcnRlZCB0byBsaXN0cyB0aHJvdWdoIHN0cmluZwogICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gKCcxMicsICdcdTIwYWMnLCAnXHhlMlx4ODJceGFjJywgJzMuNCcpCiAgICAgICAgICAgICBlbHNlOgpAQCAtNTU2LDggKzU1OCwxMSBAQAogICAgICAgICAgICAgICAgIChjYWxsKCdkaWN0JywgJ2NyZWF0ZScsIDEyLCAnXHUyMGFjJywgYidceGUyXHg4Mlx4YWMnLCAoMy40LCkpLAogICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCksCiAgICAgICAgICAgICBdCisgICAgICAgIGRiZ19pbmZvID0gKCd3YW50IG9iamVjdHM/ICVzLCBUY2wgdmVyc2lvbjogJXMsIFRrIHBhdGNobGV2ZWw6ICVzJworICAgICAgICAgICAgICAgICAgICAlIChzZWxmLndhbnRvYmplY3RzLCB0Y2xfdmVyc2lvbiwgdGtfcGF0Y2hsZXZlbCkpCiAgICAgICAgIGZvciBhcmcsIHJlcyBpbiB0ZXN0Y2FzZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwbGl0bGlzdChhcmcpLCByZXMsIG1zZz1hcmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwbGl0bGlzdChhcmcpLCByZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmc9JWEsICVzJyAlIChhcmcsIGRiZ19pbmZvKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVGNsRXJyb3IsIHNwbGl0bGlzdCwgJ3snKQogCiAgICAgZGVmIHRlc3Rfc3BsaXQoc2VsZik6CkBAIC01ODksNiArNTk0LDkgQEAKICAgICAgICAgICAgICgoJ2EnLCAzLjQpLCAoJ2EnLCAzLjQpKSwKICAgICAgICAgICAgICgoJ2EnLCAoMiwgMy40KSksICgnYScsICgyLCAzLjQpKSksCiAgICAgICAgICAgICAoKCksICgpKSwKKyAgICAgICAgICAgIChbXSwgKCkpLAorICAgICAgICAgICAgKFsnYScsICdiIGMnXSwgKCdhJywgKCdiJywgJ2MnKSkpLAorICAgICAgICAgICAgKFsnYScsIFsnYicsICdjJ11dLCAoJ2EnLCAoJ2InLCAnYycpKSksCiAgICAgICAgICAgICAoY2FsbCgnbGlzdCcsIDEsICcyJywgKDMuNCwpKSwKICAgICAgICAgICAgICAgICAoMSwgJzInLCAoMy40LCkpIGlmIHNlbGYud2FudG9iamVjdHMgZWxzZQogICAgICAgICAgICAgICAgICgnMScsICcyJywgJzMuNCcpKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKaW5kZXggZWUxYzM1Ny4uNmMyN2MxNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKQEAgLTQsMTQgKzQsMTQgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgY29udGV4dGxpYgogCi1mcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgdW5pdHRlc3QKIHRocmVhZGluZyA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgndGhyZWFkaW5nJykKIAogSE9TVCA9IHN1cHBvcnQuSE9TVAogCiBkZWYgc2VydmVyKGV2dCwgc2Vydik6Ci0gICAgc2Vydi5saXN0ZW4oNSkKKyAgICBzZXJ2Lmxpc3RlbigpCiAgICAgZXZ0LnNldCgpCiAgICAgdHJ5OgogICAgICAgICBjb25uLCBhZGRyID0gc2Vydi5hY2NlcHQoKQpAQCAtMjEsNyArMjEsNyBAQAogICAgIGZpbmFsbHk6CiAgICAgICAgIHNlcnYuY2xvc2UoKQogCi1jbGFzcyBHZW5lcmFsVGVzdHMoVGVzdENhc2UpOgorY2xhc3MgR2VuZXJhbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5ldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQpAQCAtMTY1LDcgKzE2NSw3IEBACiAgICAgICAgIHRlbG5ldC5fbWVzc2FnZXMgPSAnJyAjIGRlYnVnbGV2ZWwgb3V0cHV0CiAgICAgcmV0dXJuIHRlbG5ldAogCi1jbGFzcyBFeHBlY3RBbmRSZWFkVGVzdENhc2UoVGVzdENhc2UpOgorY2xhc3MgRXhwZWN0QW5kUmVhZFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYub2xkX3NlbGVjdG9yID0gdGVsbmV0bGliLl9UZWxuZXRTZWxlY3RvcgogICAgICAgICB0ZWxuZXRsaWIuX1RlbG5ldFNlbGVjdG9yID0gTW9ja1NlbGVjdG9yCkBAIC0yODQsNyArMjg0LDcgQEAKIAogdGwgPSB0ZWxuZXRsaWIKIAotY2xhc3MgV3JpdGVUZXN0cyhUZXN0Q2FzZSk6CitjbGFzcyBXcml0ZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAnJydUaGUgb25seSB0aGluZyB0aGF0IHdyaXRlIGRvZXMgaXMgcmVwbGFjZSBlYWNoIHRsLklBQyBmb3IKICAgICB0bC5JQUMrdGwuSUFDJycnCiAKQEAgLTMwMCw3ICszMDAsNyBAQAogICAgICAgICAgICAgd3JpdHRlbiA9IGInJy5qb2luKHRlbG5ldC5zb2NrLndyaXRlcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5yZXBsYWNlKHRsLklBQyx0bC5JQUMrdGwuSUFDKSwgd3JpdHRlbikKIAotY2xhc3MgT3B0aW9uVGVzdHMoVGVzdENhc2UpOgorY2xhc3MgT3B0aW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgUkZDIDg1NCBjb21tYW5kcwogICAgIGNtZHMgPSBbdGwuQU8sIHRsLkFZVCwgdGwuQlJLLCB0bC5FQywgdGwuRUwsIHRsLkdBLCB0bC5JUCwgdGwuTk9QXQogCkBAIC0zOTMsOSArMzkzLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBiJycuam9pbih3YW50WzotMV0pKQogCiAKLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChHZW5lcmFsVGVzdHMsIFJlYWRUZXN0cywgV3JpdGVUZXN0cywgT3B0aW9uVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRXhwZWN0VGVzdHMpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGVtcGZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3RlbXBmaWxlLnB5CmluZGV4IDY2NDEyOTguLjRhMDc3Y2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGVtcGZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90ZW1wZmlsZS5weQpAQCAtMTIsNyArMTIsOCBAQAogZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jawogCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgc2NyaXB0X2hlbHBlcgorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgogCiAKIGlmIGhhc2F0dHIob3MsICdzdGF0Jyk6CkBAIC0zNSwxMCArMzYsMzggQEAKICMgaW4gb3JkZXIgb2YgdGhlaXIgYXBwZWFyYW5jZSBpbiB0aGUgZmlsZS4gIFRlc3Rpbmcgd2hpY2ggcmVxdWlyZXMKICMgdGhyZWFkcyBpcyBub3QgZG9uZSBoZXJlLgogCitjbGFzcyBUZXN0TG93TGV2ZWxJbnRlcm5hbHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2luZmVyX3JldHVybl90eXBlX3NpbmdsZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RyLCB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoJycpKQorICAgICAgICBzZWxmLmFzc2VydElzKGJ5dGVzLCB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoYicnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzdHIsIHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZShOb25lKSkKKworICAgIGRlZiB0ZXN0X2luZmVyX3JldHVybl90eXBlX211bHRpcGxlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzdHIsIHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZSgnJywgJycpKQorICAgICAgICBzZWxmLmFzc2VydElzKGJ5dGVzLCB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoYicnLCBiJycpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoJycsIGInJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKGInJywgJycpCisKKyAgICBkZWYgdGVzdF9pbmZlcl9yZXR1cm5fdHlwZV9tdWx0aXBsZXNfYW5kX25vbmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RyLCB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoTm9uZSwgJycpKQorICAgICAgICBzZWxmLmFzc2VydElzKHN0ciwgdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKCcnLCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzdHIsIHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZShOb25lLCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhieXRlcywgdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKGInJywgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYnl0ZXMsIHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZShOb25lLCBiJycpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoJycsIE5vbmUsIGInJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKGInJywgTm9uZSwgJycpCisKKwogIyBDb21tb24gZnVuY3Rpb25hbGl0eS4KKwogY2xhc3MgQmFzZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIHN0cl9jaGVjayA9IHJlLmNvbXBpbGUociJeW2EtejAtOV8tXXs4fSQiKQorICAgIGJfY2hlY2sgPSByZS5jb21waWxlKGJyIl5bYS16MC05Xy1dezh9JCIpCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuX3dhcm5pbmdzX21hbmFnZXIgPSBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCkKQEAgLTU1LDE4ICs4NCwzMSBAQAogICAgICAgICBucHJlICA9IG5iYXNlWzpsZW4ocHJlKV0KICAgICAgICAgbnN1ZiAgPSBuYmFzZVtsZW4obmJhc2UpLWxlbihzdWYpOl0KIAorICAgICAgICBpZiBkaXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmFtZSksIHN0ciBpZiB0eXBlKGRpcikgaXMgc3RyIGVsc2UgYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIHJldHVybiB0eXBlIikKKyAgICAgICAgaWYgcHJlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5hbWUpLCBzdHIgaWYgdHlwZShwcmUpIGlzIHN0ciBlbHNlIGJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCByZXR1cm4gdHlwZSIpCisgICAgICAgIGlmIHN1ZiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuYW1lKSwgc3RyIGlmIHR5cGUoc3VmKSBpcyBzdHIgZWxzZSBieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgcmV0dXJuIHR5cGUiKQorICAgICAgICBpZiAoZGlyLCBwcmUsIHN1ZikgPT0gKE5vbmUsIE5vbmUsIE5vbmUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5hbWUpLCBzdHIsICJkZWZhdWx0IHJldHVybiB0eXBlIG11c3QgYmUgc3RyIikKKwogICAgICAgICAjIGNoZWNrIGZvciBlcXVhbGl0eSBvZiB0aGUgYWJzb2x1dGUgcGF0aHMhCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5hYnNwYXRoKG5kaXIpLCBvcy5wYXRoLmFic3BhdGgoZGlyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSAnJXMnIG5vdCBpbiBkaXJlY3RvcnkgJyVzJyIgJSAobmFtZSwgZGlyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSAlciBub3QgaW4gZGlyZWN0b3J5ICVyIiAlIChuYW1lLCBkaXIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5wcmUsIHByZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSAnJXMnIGRvZXMgbm90IGJlZ2luIHdpdGggJyVzJyIgJSAobmJhc2UsIHByZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgJXIgZG9lcyBub3QgYmVnaW4gd2l0aCAlciIgJSAobmJhc2UsIHByZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnN1Ziwgc3VmLAotICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlICclcycgZG9lcyBub3QgZW5kIHdpdGggJyVzJyIgJSAobmJhc2UsIHN1ZikpCisgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgJXIgZG9lcyBub3QgZW5kIHdpdGggJXIiICUgKG5iYXNlLCBzdWYpKQogCiAgICAgICAgIG5iYXNlID0gbmJhc2VbbGVuKHByZSk6bGVuKG5iYXNlKS1sZW4oc3VmKV0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuc3RyX2NoZWNrLm1hdGNoKG5iYXNlKSwKLSAgICAgICAgICAgICAgICAgICAgICJyYW5kb20gc3RyaW5nICclcycgZG9lcyBub3QgbWF0Y2ggXlthLXowLTlfLV17OH0kIgotICAgICAgICAgICAgICAgICAgICAgJSBuYmFzZSkKKyAgICAgICAgY2hlY2sgPSBzZWxmLnN0cl9jaGVjayBpZiBpc2luc3RhbmNlKG5iYXNlLCBzdHIpIGVsc2Ugc2VsZi5iX2NoZWNrCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjaGVjay5tYXRjaChuYmFzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAicmFuZG9tIGNoYXJhY3RlcnMgJXIgZG8gbm90IG1hdGNoICVyIgorICAgICAgICAgICAgICAgICAgICAgICAgJSAobmJhc2UsIGNoZWNrLnBhdHRlcm4pKQogCiAKIGNsYXNzIFRlc3RFeHBvcnRzKEJhc2VUZXN0Q2FzZSk6CkBAIC04Miw3ICsxMjQsOSBAQAogICAgICAgICAgICAgIm1rdGVtcCIgOiAxLAogICAgICAgICAgICAgIlRNUF9NQVgiIDogMSwKICAgICAgICAgICAgICJnZXR0ZW1wcHJlZml4IiA6IDEsCisgICAgICAgICAgICAiZ2V0dGVtcHByZWZpeGIiIDogMSwKICAgICAgICAgICAgICJnZXR0ZW1wZGlyIiA6IDEsCisgICAgICAgICAgICAiZ2V0dGVtcGRpcmIiIDogMSwKICAgICAgICAgICAgICJ0ZW1wZGlyIiA6IDEsCiAgICAgICAgICAgICAidGVtcGxhdGUiIDogMSwKICAgICAgICAgICAgICJTcG9vbGVkVGVtcG9yYXJ5RmlsZSIgOiAxLApAQCAtMzE5LDcgKzM2Myw4IEBACiAgICAgICAgICAgICBpZiBiaW46IGZsYWdzID0gc2VsZi5fYmZsYWdzCiAgICAgICAgICAgICBlbHNlOiAgIGZsYWdzID0gc2VsZi5fdGZsYWdzCiAKLSAgICAgICAgICAgIChzZWxmLmZkLCBzZWxmLm5hbWUpID0gdGVtcGZpbGUuX21rc3RlbXBfaW5uZXIoZGlyLCBwcmUsIHN1ZiwgZmxhZ3MpCisgICAgICAgICAgICBvdXRwdXRfdHlwZSA9IHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZShkaXIsIHByZSwgc3VmKQorICAgICAgICAgICAgKHNlbGYuZmQsIHNlbGYubmFtZSkgPSB0ZW1wZmlsZS5fbWtzdGVtcF9pbm5lcihkaXIsIHByZSwgc3VmLCBmbGFncywgb3V0cHV0X3R5cGUpCiAKICAgICAgICAgZGVmIHdyaXRlKHNlbGYsIHN0cik6CiAgICAgICAgICAgICBvcy53cml0ZShzZWxmLmZkLCBzdHIpCkBAIC0zMjgsOSArMzczLDE3IEBACiAgICAgICAgICAgICBzZWxmLl9jbG9zZShzZWxmLmZkKQogICAgICAgICAgICAgc2VsZi5fdW5saW5rKHNlbGYubmFtZSkKIAotICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT0iIiwgc3VmPSIiLCBiaW49MSk6CisgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBkaXI9Tm9uZSwgcHJlPU5vbmUsIHN1Zj1Ob25lLCBiaW49MSk6CisgICAgICAgIG91dHB1dF90eXBlID0gdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKGRpciwgcHJlLCBzdWYpCiAgICAgICAgIGlmIGRpciBpcyBOb25lOgotICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCisgICAgICAgICAgICBpZiBvdXRwdXRfdHlwZSBpcyBzdHI6CisgICAgICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXJiKCkKKyAgICAgICAgaWYgcHJlIGlzIE5vbmU6CisgICAgICAgICAgICBwcmUgPSBvdXRwdXRfdHlwZSgpCisgICAgICAgIGlmIHN1ZiBpcyBOb25lOgorICAgICAgICAgICAgc3VmID0gb3V0cHV0X3R5cGUoKQogICAgICAgICBmaWxlID0gc2VsZi5ta3N0ZW1wZWQoZGlyLCBwcmUsIHN1ZiwgYmluKQogCiAgICAgICAgIHNlbGYubmFtZUNoZWNrKGZpbGUubmFtZSwgZGlyLCBwcmUsIHN1ZikKQEAgLTM0NCw2ICszOTcsMjMgQEAKICAgICAgICAgc2VsZi5kb19jcmVhdGUocHJlPSJhIiwgc3VmPSJiIikud3JpdGUoYiJibGF0IikKICAgICAgICAgc2VsZi5kb19jcmVhdGUocHJlPSJhYSIsIHN1Zj0iLnR4dCIpLndyaXRlKGIiYmxhdCIpCiAKKyAgICBkZWYgdGVzdF9iYXNpY193aXRoX2J5dGVzX25hbWVzKHNlbGYpOgorICAgICAgICAjIF9ta3N0ZW1wX2lubmVyIGNhbiBjcmVhdGUgZmlsZXMgd2hlbiBnaXZlbiBuYW1lIHBhcnRzIGFsbAorICAgICAgICAjIHNwZWNpZmllZCBhcyBieXRlcy4KKyAgICAgICAgZGlyX2IgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyYigpCisgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1kaXJfYiwgc3VmPWIiIikud3JpdGUoYiJibGF0IikKKyAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWRpcl9iLCBwcmU9YiJhIikud3JpdGUoYiJibGF0IikKKyAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWRpcl9iLCBzdWY9YiJiIikud3JpdGUoYiJibGF0IikKKyAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWRpcl9iLCBwcmU9YiJhIiwgc3VmPWIiYiIpLndyaXRlKGIiYmxhdCIpCisgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1kaXJfYiwgcHJlPWIiYWEiLCBzdWY9YiIudHh0Iikud3JpdGUoYiJibGF0IikKKyAgICAgICAgIyBDYW4ndCBtaXggc3RyICYgYmluYXJ5IHR5cGVzIGluIHRoZSBhcmdzLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9IiIsIHN1Zj1iIiIpLndyaXRlKGIiYmxhdCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1kaXJfYiwgcHJlPSIiKS53cml0ZShiImJsYXQiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9ZGlyX2IsIHByZT1iIiIsIHN1Zj0iIikud3JpdGUoYiJibGF0IikKKwogICAgIGRlZiB0ZXN0X2Jhc2ljX21hbnkoc2VsZik6CiAgICAgICAgICMgX21rc3RlbXBfaW5uZXIgY2FuIGNyZWF0ZSBtYW55IGZpbGVzIChzdG9jaGFzdGljKQogICAgICAgICBleHRhbnQgPSBsaXN0KHJhbmdlKFRFU1RfRklMRVMpKQpAQCAtNDIzLDkgKzQ5MywxMCBAQAogCiAgICAgZGVmIG1ha2VfdGVtcChzZWxmKToKICAgICAgICAgcmV0dXJuIHRlbXBmaWxlLl9ta3N0ZW1wX2lubmVyKHRlbXBmaWxlLmdldHRlbXBkaXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBmaWxlLnRlbXBsYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGZpbGUuZ2V0dGVtcHByZWZpeCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wZmlsZS5fYmluX29wZW5mbGFncykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBmaWxlLl9iaW5fb3BlbmZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKQogCiAgICAgZGVmIHRlc3RfY29sbGlzaW9uX3dpdGhfZXhpc3RpbmdfZmlsZShzZWxmKToKICAgICAgICAgIyBfbWtzdGVtcF9pbm5lciB0cmllcyBhbm90aGVyIG5hbWUgd2hlbiBhIGZpbGUgd2l0aApAQCAtNDYxLDcgKzUzMiwxMiBAQAogICAgICAgICBwID0gdGVtcGZpbGUuZ2V0dGVtcHByZWZpeCgpCiAKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHAsIHN0cikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihwKSA+IDApCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4ocCksIDApCisKKyAgICAgICAgcGIgPSB0ZW1wZmlsZS5nZXR0ZW1wcHJlZml4YigpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHBiLCBieXRlcykKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihwYiksIDApCiAKICAgICBkZWYgdGVzdF91c2FibGVfdGVtcGxhdGUoc2VsZik6CiAgICAgICAgICMgZ2V0dGVtcHByZWZpeCByZXR1cm5zIGEgdXNhYmxlIHByZWZpeCBzdHJpbmcKQEAgLTQ4NiwxMSArNTYyLDExIEBACiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5X2V4aXN0cyhzZWxmKToKICAgICAgICAgIyBnZXR0ZW1wZGlyIHJldHVybnMgYSBkaXJlY3Rvcnkgd2hpY2ggZXhpc3RzCiAKLSAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzYWJzKGRpcikgb3IgZGlyID09IG9zLmN1cmRpciwKLSAgICAgICAgICAgICAgICAgICAgICIlcyBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aCIgJSBkaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKGRpciksCi0gICAgICAgICAgICAgICAgICAgICAiJXMgaXMgbm90IGEgZGlyZWN0b3J5IiAlIGRpcikKKyAgICAgICAgZm9yIGQgaW4gKHRlbXBmaWxlLmdldHRlbXBkaXIoKSwgdGVtcGZpbGUuZ2V0dGVtcGRpcmIoKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2FicyhkKSBvciBkID09IG9zLmN1cmRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXIgaXMgbm90IGFuIGFic29sdXRlIHBhdGgiICUgZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKGQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlciBpcyBub3QgYSBkaXJlY3RvcnkiICUgZCkKIAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeV93cml0YWJsZShzZWxmKToKICAgICAgICAgIyBnZXR0ZW1wZGlyIHJldHVybnMgYSBkaXJlY3Rvcnkgd3JpdGFibGUgYnkgdGhlIHVzZXIKQEAgLTUwNiw4ICs1ODIsMTEgQEAKICAgICAgICAgIyBnZXR0ZW1wZGlyIGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIG9iamVjdAogICAgICAgICBhID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCiAgICAgICAgIGIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKKyAgICAgICAgYyA9IHRlbXBmaWxlLmdldHRlbXBkaXJiKCkKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUoYSBpcyBiKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHR5cGUoYSksIHR5cGUoYykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgb3MuZnNkZWNvZGUoYykpCiAKICAgICBkZWYgdGVzdF9jYXNlX3NlbnNpdGl2ZShzZWxmKToKICAgICAgICAgIyBnZXR0ZW1wZGlyIHNob3VsZCBub3QgZmxhdHRlbiBpdHMgY2FzZQpAQCAtNTI3LDkgKzYwNiwxNyBAQAogY2xhc3MgVGVzdE1rc3RlbXAoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IG1rc3RlbXAoKS4iIiIKIAotICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT0iIiwgc3VmPSIiKToKKyAgICBkZWYgZG9fY3JlYXRlKHNlbGYsIGRpcj1Ob25lLCBwcmU9Tm9uZSwgc3VmPU5vbmUpOgorICAgICAgICBvdXRwdXRfdHlwZSA9IHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZShkaXIsIHByZSwgc3VmKQogICAgICAgICBpZiBkaXIgaXMgTm9uZToKLSAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQorICAgICAgICAgICAgaWYgb3V0cHV0X3R5cGUgaXMgc3RyOgorICAgICAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyYigpCisgICAgICAgIGlmIHByZSBpcyBOb25lOgorICAgICAgICAgICAgcHJlID0gb3V0cHV0X3R5cGUoKQorICAgICAgICBpZiBzdWYgaXMgTm9uZToKKyAgICAgICAgICAgIHN1ZiA9IG91dHB1dF90eXBlKCkKICAgICAgICAgKGZkLCBuYW1lKSA9IHRlbXBmaWxlLm1rc3RlbXAoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKICAgICAgICAgKG5kaXIsIG5iYXNlKSA9IG9zLnBhdGguc3BsaXQobmFtZSkKICAgICAgICAgYWRpciA9IG9zLnBhdGguYWJzcGF0aChkaXIpCkBAIC01NTEsNiArNjM4LDI0IEBACiAgICAgICAgIHNlbGYuZG9fY3JlYXRlKHByZT0iYWEiLCBzdWY9Ii50eHQiKQogICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9Ii4iKQogCisgICAgZGVmIHRlc3RfYmFzaWNfd2l0aF9ieXRlc19uYW1lcyhzZWxmKToKKyAgICAgICAgIyBta3N0ZW1wIGNhbiBjcmVhdGUgZmlsZXMgd2hlbiBnaXZlbiBuYW1lIHBhcnRzIGFsbAorICAgICAgICAjIHNwZWNpZmllZCBhcyBieXRlcy4KKyAgICAgICAgZCA9IHRlbXBmaWxlLmdldHRlbXBkaXJiKCkKKyAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWQsIHN1Zj1iIiIpCisgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1kLCBwcmU9YiJhIikKKyAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWQsIHN1Zj1iImIiKQorICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9ZCwgcHJlPWIiYSIsIHN1Zj1iImIiKQorICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9ZCwgcHJlPWIiYWEiLCBzdWY9YiIudHh0IikKKyAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWIiLiIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj0iLiIsIHByZT1iImFhIiwgc3VmPWIiLnR4dCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1iIi4iLCBwcmU9ImFhIiwgc3VmPWIiLnR4dCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1iIi4iLCBwcmU9YiJhYSIsIHN1Zj0iLnR4dCIpCisKKwogICAgIGRlZiB0ZXN0X2Nob29zZV9kaXJlY3Rvcnkoc2VsZik6CiAgICAgICAgICMgbWtzdGVtcCBjYW4gY3JlYXRlIGRpcmVjdG9yaWVzIGluIGEgdXNlci1zZWxlY3RlZCBkaXJlY3RvcnkKICAgICAgICAgZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCkBAIC01NjYsOSArNjcxLDE3IEBACiAgICAgZGVmIG1ha2VfdGVtcChzZWxmKToKICAgICAgICAgcmV0dXJuIHRlbXBmaWxlLm1rZHRlbXAoKQogCi0gICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBkaXI9Tm9uZSwgcHJlPSIiLCBzdWY9IiIpOgorICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT1Ob25lLCBzdWY9Tm9uZSk6CisgICAgICAgIG91dHB1dF90eXBlID0gdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKGRpciwgcHJlLCBzdWYpCiAgICAgICAgIGlmIGRpciBpcyBOb25lOgotICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCisgICAgICAgICAgICBpZiBvdXRwdXRfdHlwZSBpcyBzdHI6CisgICAgICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXJiKCkKKyAgICAgICAgaWYgcHJlIGlzIE5vbmU6CisgICAgICAgICAgICBwcmUgPSBvdXRwdXRfdHlwZSgpCisgICAgICAgIGlmIHN1ZiBpcyBOb25lOgorICAgICAgICAgICAgc3VmID0gb3V0cHV0X3R5cGUoKQogICAgICAgICBuYW1lID0gdGVtcGZpbGUubWtkdGVtcChkaXI9ZGlyLCBwcmVmaXg9cHJlLCBzdWZmaXg9c3VmKQogCiAgICAgICAgIHRyeToKQEAgLTU4Niw2ICs2OTksMjEgQEAKICAgICAgICAgb3Mucm1kaXIoc2VsZi5kb19jcmVhdGUocHJlPSJhIiwgc3VmPSJiIikpCiAgICAgICAgIG9zLnJtZGlyKHNlbGYuZG9fY3JlYXRlKHByZT0iYWEiLCBzdWY9Ii50eHQiKSkKIAorICAgIGRlZiB0ZXN0X2Jhc2ljX3dpdGhfYnl0ZXNfbmFtZXMoc2VsZik6CisgICAgICAgICMgbWtkdGVtcCBjYW4gY3JlYXRlIGRpcmVjdG9yaWVzIHdoZW4gZ2l2ZW4gYWxsIGJpbmFyeSBwYXJ0cworICAgICAgICBkID0gdGVtcGZpbGUuZ2V0dGVtcGRpcmIoKQorICAgICAgICBvcy5ybWRpcihzZWxmLmRvX2NyZWF0ZShkaXI9ZCkpCisgICAgICAgIG9zLnJtZGlyKHNlbGYuZG9fY3JlYXRlKGRpcj1kLCBwcmU9YiJhIikpCisgICAgICAgIG9zLnJtZGlyKHNlbGYuZG9fY3JlYXRlKGRpcj1kLCBzdWY9YiJiIikpCisgICAgICAgIG9zLnJtZGlyKHNlbGYuZG9fY3JlYXRlKGRpcj1kLCBwcmU9YiJhIiwgc3VmPWIiYiIpKQorICAgICAgICBvcy5ybWRpcihzZWxmLmRvX2NyZWF0ZShkaXI9ZCwgcHJlPWIiYWEiLCBzdWY9YiIudHh0IikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIG9zLnJtZGlyKHNlbGYuZG9fY3JlYXRlKGRpcj1kLCBwcmU9ImFhIiwgc3VmPWIiLnR4dCIpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBvcy5ybWRpcihzZWxmLmRvX2NyZWF0ZShkaXI9ZCwgcHJlPWIiYWEiLCBzdWY9Ii50eHQiKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgb3Mucm1kaXIoc2VsZi5kb19jcmVhdGUoZGlyPSIiLCBwcmU9YiJhYSIsIHN1Zj1iIi50eHQiKSkKKwogICAgIGRlZiB0ZXN0X2Jhc2ljX21hbnkoc2VsZik6CiAgICAgICAgICMgbWtkdGVtcCBjYW4gY3JlYXRlIG1hbnkgZGlyZWN0b3JpZXMgKHN0b2NoYXN0aWMpCiAgICAgICAgIGV4dGFudCA9IGxpc3QocmFuZ2UoVEVTVF9GSUxFUykpCkBAIC0xMzEzLDggKzE0NDEsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG5hbWUpKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90ZXh0d3JhcC5weSBiL0xpYi90ZXN0L3Rlc3RfdGV4dHdyYXAucHkKaW5kZXggZWE3YzA4OS4uYTQ0MTg0ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90ZXh0d3JhcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RleHR3cmFwLnB5CkBAIC0xODQsNiArMTg0LDE2IEBACiAgICAgICAgIHNlbGYuY2hlY2tfd3JhcCh0ZXh0LCA0MiwKICAgICAgICAgICAgICAgICAgICAgICAgIFsidGhpcy1pcy1hLXVzZWZ1bC1mZWF0dXJlLWZvci1yZWZvcm1hdHRpbmctIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAicG9zdHMtZnJvbS10aW0tcGV0ZXJzJ2x5Il0pCisgICAgICAgICMgVGhlIHRlc3QgdGVzdHMgY3VycmVudCBiZWhhdmlvciBidXQgaXMgbm90IHRlc3RpbmcgcGFydHMgb2YgdGhlIEFQSS4KKyAgICAgICAgZXhwZWN0ID0gKCJ0aGlzLXxpcy18YS18dXNlZnVsLXxmZWF0dXJlLXxmb3ItfCIKKyAgICAgICAgICAgICAgICAgICJyZWZvcm1hdHRpbmctfHBvc3RzLXxmcm9tLXx0aW0tfHBldGVycydseSIpLnNwbGl0KCd8JykKKyAgICAgICAgc2VsZi5jaGVja193cmFwKHRleHQsIDEsIGV4cGVjdCwgYnJlYWtfbG9uZ193b3Jkcz1GYWxzZSkKKyAgICAgICAgc2VsZi5jaGVja19zcGxpdCh0ZXh0LCBleHBlY3QpCisKKyAgICAgICAgc2VsZi5jaGVja19zcGxpdCgnZS1tYWlsJywgWydlLW1haWwnXSkKKyAgICAgICAgc2VsZi5jaGVja19zcGxpdCgnSmVsbHktTycsIFsnSmVsbHktTyddKQorICAgICAgICAjIFRoZSB0ZXN0IHRlc3RzIGN1cnJlbnQgYmVoYXZpb3IgYnV0IGlzIG5vdCB0ZXN0aW5nIHBhcnRzIG9mIHRoZSBBUEkuCisgICAgICAgIHNlbGYuY2hlY2tfc3BsaXQoJ2hhbGYtYS1jcm93bicsICdoYWxmLXxhLXxjcm93bicuc3BsaXQoJ3wnKSkKIAogICAgIGRlZiB0ZXN0X2h5cGhlbmF0ZWRfbnVtYmVycyhzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgaHlwaGVuYXRlZCBudW1iZXJzIChlZy4gZGF0ZXMpIGFyZSBub3QgYnJva2VuIGxpa2Ugd29yZHMuCkBAIC0xOTUsNiArMjA1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbGVhc2VkIG9uIDE5OTQtMDItMTUuJ10pCiAgICAgICAgIHNlbGYuY2hlY2tfd3JhcCh0ZXh0LCA0MCwgWydQeXRob24gMS4wLjAgd2FzIHJlbGVhc2VkIG9uIDE5OTQtMDEtMjYuJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1B5dGhvbiAxLjAuMSB3YXMgcmVsZWFzZWQgb24gMTk5NC0wMi0xNS4nXSkKKyAgICAgICAgc2VsZi5jaGVja193cmFwKHRleHQsIDEsIHRleHQuc3BsaXQoKSwgYnJlYWtfbG9uZ193b3Jkcz1GYWxzZSkKIAogICAgICAgICB0ZXh0ID0gIkkgZG8gYWxsIG15IHNob3BwaW5nIGF0IDctMTEuIgogICAgICAgICBzZWxmLmNoZWNrX3dyYXAodGV4dCwgMjUsIFsiSSBkbyBhbGwgbXkgc2hvcHBpbmcgYXQiLApAQCAtMjAyLDYgKzIxMyw3IEBACiAgICAgICAgIHNlbGYuY2hlY2tfd3JhcCh0ZXh0LCAyNywgWyJJIGRvIGFsbCBteSBzaG9wcGluZyBhdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI3LTExLiJdKQogICAgICAgICBzZWxmLmNoZWNrX3dyYXAodGV4dCwgMjksIFsiSSBkbyBhbGwgbXkgc2hvcHBpbmcgYXQgNy0xMS4iXSkKKyAgICAgICAgc2VsZi5jaGVja193cmFwKHRleHQsIDEsIHRleHQuc3BsaXQoKSwgYnJlYWtfbG9uZ193b3Jkcz1GYWxzZSkKIAogICAgIGRlZiB0ZXN0X2VtX2Rhc2goc2VsZik6CiAgICAgICAgICMgVGVzdCB0ZXh0IHdpdGggZW0tZGFzaGVzCkBAIC0zMjYsNiArMzM4LDEwIEBACiAgICAgICAgIHNlbGYuY2hlY2tfc3BsaXQoInRoZSBbJ3dpYmJsZS13b2JibGUnXSB3aWRnZXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsndGhlJywgJyAnLCAiWyd3aWJibGUtIiwgIndvYmJsZSddIiwgJyAnLCAnd2lkZ2V0J10pCiAKKyAgICAgICAgIyBUaGUgdGVzdCB0ZXN0cyBjdXJyZW50IGJlaGF2aW9yIGJ1dCBpcyBub3QgdGVzdGluZyBwYXJ0cyBvZiB0aGUgQVBJLgorICAgICAgICBzZWxmLmNoZWNrX3NwbGl0KCJ3aGF0LWQneW91LWNhbGwtaXQuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAid2hhdC1kJ3lvdS18Y2FsbC18aXQuIi5zcGxpdCgnfCcpKQorCiAgICAgZGVmIHRlc3RfZnVua3lfcGFyZW5zIChzZWxmKToKICAgICAgICAgIyBTZWNvbmQgcGFydCBvZiBTRiBidWcgIzU5NjQzNDogbG9uZyBvcHRpb24gc3RyaW5ncyBpbnNpZGUKICAgICAgICAgIyBwYXJlbnRoZXNlcy4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkLnB5IGIvTGliL3Rlc3QvdGVzdF90aHJlYWQucHkKaW5kZXggNjE0NDkwMS4uZWYzMDU5YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aHJlYWQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aHJlYWQucHkKQEAgLTI1Miw5ICsyNTIsNSBAQAogICAgICAgICAgICAgcGFzcwogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUaHJlYWRSdW5uaW5nVGVzdHMsIEJhcnJpZXJUZXN0LCBMb2NrVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgVGVzdEZvcmtJblRocmVhZCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aHJlYWRlZF9pbXBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGVkX2ltcG9ydC5weQppbmRleCA0YmU2MTVhLi45YjJkOWE2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RocmVhZGVkX2ltcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGVkX2ltcG9ydC5weQpAQCAtMTE1LDEyICsxMTUsMTggQEAKICAgICAgICAgICAgIGVycm9ycyA9IFtdCiAgICAgICAgICAgICBkb25lX3Rhc2tzID0gW10KICAgICAgICAgICAgIGRvbmUuY2xlYXIoKQorICAgICAgICAgICAgdDAgPSB0aW1lLm1vbm90b25pYygpCiAgICAgICAgICAgICB3aXRoIHN0YXJ0X3RocmVhZHModGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9dGFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KE4sIGRvbmUsIGRvbmVfdGFza3MsIGVycm9ycywpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKE4pKToKICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZG9uZS53YWl0KDYwKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXJyb3JzKQorICAgICAgICAgICAgY29tcGxldGVkID0gZG9uZS53YWl0KDEwICogNjApCisgICAgICAgICAgICBkdCA9IHRpbWUubW9ub3RvbmljKCkgLSB0MAorICAgICAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgICAgICBwcmludCgiJS4xZiBtcyIgJSAoZHQqMWUzKSwgZmx1c2g9VHJ1ZSwgZW5kPSIgIikKKyAgICAgICAgICAgIGRiZ19pbmZvID0gJ2RvbmU6ICVzLyVzJyAlIChsZW4oZG9uZV90YXNrcyksIE4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVycm9ycywgZGJnX2luZm8pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tcGxldGVkLCBkYmdfaW5mbykKICAgICAgICAgICAgIGlmIHZlcmJvc2U6CiAgICAgICAgICAgICAgICAgcHJpbnQoIk9LLiIpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkKaW5kZXggNGI3NWVhNi4uM2IxMWJmNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkKQEAgLTQsNyArNCw3IEBACiAKIGltcG9ydCB0ZXN0LnN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBzdHJpcF9weXRob25fc3RkZXJyLCBpbXBvcnRfbW9kdWxlLCBjcHl0aG9uX29ubHkKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgcmUKQEAgLTk0NSw3ICs5NDUsNyBAQAogICAgICAgICAgICAgZGVmIG91dGVyKCk6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICByZWN1cnNlKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBSZWN1cnNpb25FcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgICAgICAgICB3ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9b3V0ZXIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RpbWUucHkgYi9MaWIvdGVzdC90ZXN0X3RpbWUucHkKaW5kZXggYmU3ZGRjYy4uNzZiODk0ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aW1lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGltZS5weQpAQCAtMSwyMSArMSwzNyBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgZW51bQoraW1wb3J0IGxvY2FsZQoraW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgbG9jYWxlCi1pbXBvcnQgc3lzY29uZmlnCi1pbXBvcnQgc3lzCi1pbXBvcnQgcGxhdGZvcm0KIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgdGhyZWFkaW5nID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBfdGVzdGNhcGkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfdGVzdGNhcGkgPSBOb25lCisKIAogIyBNYXggeWVhciBpcyBvbmx5IGxpbWl0ZWQgYnkgdGhlIHNpemUgb2YgQyBpbnQuCiBTSVpFT0ZfSU5UID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdTSVpFT0ZfSU5UJykgb3IgNAogVElNRV9NQVhZRUFSID0gKDEgPDwgOCAqIFNJWkVPRl9JTlQgLSAxKSAtIDEKIFRJTUVfTUlOWUVBUiA9IC1USU1FX01BWFlFQVIgLSAxCi1fUHlUaW1lX1JPVU5EX0RPV04gPSAwCi1fUHlUaW1lX1JPVU5EX1VQID0gMQorCitVU19UT19OUyA9IDEwICoqIDMKK01TX1RPX05TID0gMTAgKiogNgorU0VDX1RPX05TID0gMTAgKiogOQorCitjbGFzcyBfUHlUaW1lKGVudW0uSW50RW51bSk6CisgICAgIyBSb3VuZCB0b3dhcmRzIG1pbnVzIGluZmluaXR5ICgtaW5mKQorICAgIFJPVU5EX0ZMT09SID0gMAorICAgICMgUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikKKyAgICBST1VORF9DRUlMSU5HID0gMQorCitBTExfUk9VTkRJTkdfTUVUSE9EUyA9IChfUHlUaW1lLlJPVU5EX0ZMT09SLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpCiAKIAogY2xhc3MgVGltZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTk4LDEzICsxMTQsNiBAQAogICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdjb252ZXJzaW9uIHNwZWNpZmllcjogJXIgZmFpbGVkLicgJSBmb3JtYXQpCiAKLSAgICAgICAgIyBJc3N1ZSAjMTA3NjI6IEd1YXJkIGFnYWluc3QgaW52YWxpZC9ub24tc3VwcG9ydGVkIGZvcm1hdCBzdHJpbmcKLSAgICAgICAgIyBzbyB0aGF0IFB5dGhvbiBkb24ndCBjcmFzaCAoV2luZG93cyBjcmFzaGVzIHdoZW4gdGhlIGZvcm1hdCBzdHJpbmcKLSAgICAgICAgIyBpbnB1dCB0byBbd11zdHJmdGltZSBpcyBub3Qga29zaGVyLgotICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgICAgIHRpbWUuc3RyZnRpbWUoJyVmJykKLQogICAgIGRlZiBfYm91bmRzX2NoZWNraW5nKHNlbGYsIGZ1bmMpOgogICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHN0cmZ0aW1lKCkgY2hlY2tzIHRoZSBib3VuZHMgb2YgdGhlIHZhcmlvdXMgcGFydHMKICAgICAgICAgIyBvZiB0aGUgdGltZSB0dXBsZSAoMCBpcyB2YWxpZCBmb3IgKmFsbCogdmFsdWVzKS4KQEAgLTE2NSw2ICsxNzQsMTkgQEAKICAgICBkZWYgdGVzdF9zdHJmdGltZV9ib3VuZGluZ19jaGVjayhzZWxmKToKICAgICAgICAgc2VsZi5fYm91bmRzX2NoZWNraW5nKGxhbWJkYSB0dXA6IHRpbWUuc3RyZnRpbWUoJycsIHR1cCkpCiAKKyAgICBkZWYgdGVzdF9zdHJmdGltZV9mb3JtYXRfY2hlY2soc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHN0cmZ0aW1lIGRvZXMgbm90IGNyYXNoIG9uIGludmFsaWQgZm9ybWF0IHN0cmluZ3MKKyAgICAgICAgIyB0aGF0IG1heSB0cmlnZ2VyIGEgYnVmZmVyIG92ZXJyZWFkLiBXaGVuIG5vdCB0cmlnZ2VyZWQsCisgICAgICAgICMgc3RyZnRpbWUgbWF5IHN1Y2NlZWQgb3IgcmFpc2UgVmFsdWVFcnJvciBkZXBlbmRpbmcgb24KKyAgICAgICAgIyB0aGUgcGxhdGZvcm0uCisgICAgICAgIGZvciB4IGluIFsgJycsICdBJywgJyVBJywgJyVBQScgXToKKyAgICAgICAgICAgIGZvciB5IGluIHJhbmdlKDB4MCwgMHgxMCk6CisgICAgICAgICAgICAgICAgZm9yIHogaW4gWyAnJScsICdBJScsICdBQSUnLCAnJUElJywgJ0ElQSUnLCAnJSMnIF06CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUuc3RyZnRpbWUoeCAqIHkgKyB6KQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKwogICAgIGRlZiB0ZXN0X2RlZmF1bHRfdmFsdWVzX2Zvcl96ZXJvKHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHVzaW5nIGFsbCB6ZXJvcyB1c2VzIHRoZSBwcm9wZXIgZGVmYXVsdAogICAgICAgICAjIHZhbHVlcy4gIE5vIHRlc3QgZm9yIGRheWxpZ2h0IHNhdmluZ3Mgc2luY2Ugc3RyZnRpbWUoKSBkb2VzCkBAIC01OTUsMTEyICs2MTcsNjUgQEAKICAgICBkZWYgdGVzdF90aW1lX3Qoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWVfdAogICAgICAgICBmb3Igb2JqLCB0aW1lX3QsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIFJvdW5kIHRvd2FyZHMgemVybwotICAgICAgICAgICAgKDAsIDAsIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTEsIC0xLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLjAsIC0xLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLjksIC0xLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKDEuMCwgMSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgxLjksIDEsIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAjIFJvdW5kIGF3YXkgZnJvbSB6ZXJvCi0gICAgICAgICAgICAoMCwgMCwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTEsIC0xLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgtMS4wLCAtMSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTEuOSwgLTIsIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDEuMCwgMSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoMS45LCAyLCBfUHlUaW1lX1JPVU5EX1VQKSwKKyAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoLWluZikKKyAgICAgICAgICAgICgwLCAwLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgtMSwgLTEsIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKC0xLjAsIC0xLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgtMS45LCAtMiwgX1B5VGltZS5ST1VORF9GTE9PUiksCisgICAgICAgICAgICAoMS4wLCAxLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgxLjksIDEsIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgIyBSb3VuZCB0b3dhcmRzIGluZmluaXR5ICgraW5mKQorICAgICAgICAgICAgKDAsIDAsIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoLTEsIC0xLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKC0xLjAsIC0xLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKC0xLjksIC0xLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKDEuMCwgMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgxLjksIDIsIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCiAgICAgICAgICk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB5dGltZV9vYmplY3RfdG9fdGltZV90KG9iaiwgcm5kKSwgdGltZV90KQogCi0gICAgICAgIHJuZCA9IF9QeVRpbWVfUk9VTkRfRE9XTgorICAgICAgICBybmQgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCiAgICAgICAgIGZvciBpbnZhbGlkIGluIHNlbGYuaW52YWxpZF92YWx1ZXM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aW1lX29iamVjdF90b190aW1lX3QsIGludmFsaWQsIHJuZCkKIAogICAgIEBzdXBwb3J0LmNweXRob25fb25seQotICAgIGRlZiB0ZXN0X3RpbWV2YWwoc2VsZik6Ci0gICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwKLSAgICAgICAgZm9yIG9iaiwgdGltZXZhbCwgcm5kIGluICgKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyB6ZXJvCi0gICAgICAgICAgICAoMCwgKDAsIDApLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLCAoLTEsIDApLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLjAsICgtMSwgMCksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoMWUtNiwgKDAsIDEpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKDFlLTcsICgwLCAwKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMWUtNiwgKC0xLCA5OTk5OTkpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xZS03LCAoLTEsIDk5OTk5OSksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTEuMiwgKC0yLCA4MDAwMDApLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKDAuOTk5OTk5OSwgKDAsIDk5OTk5OSksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoMC4wMDAwMDQxLCAoMCwgNCksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoMS4xMjM0NTYwLCAoMSwgMTIzNDU2KSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgxLjEyMzQ1NjksICgxLCAxMjM0NTYpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0wLjAwMDAwNDAsICgtMSwgOTk5OTk2KSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMC4wMDAwMDQxLCAoLTEsIDk5OTk5NSksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2MCwgKC0yLCA4NzY1NDQpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLjEyMzQ1NjEsICgtMiwgODc2NTQzKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICMgUm91bmQgYXdheSBmcm9tIHplcm8KLSAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLCAoLTEsIDApLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgtMS4wLCAoLTEsIDApLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgxZS02LCAoMCwgMSksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDFlLTcsICgwLCAxKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTFlLTYsICgtMSwgOTk5OTk5KSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTFlLTcsICgtMSwgOTk5OTk5KSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTEuMiwgKC0yLCA4MDAwMDApLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgwLjk5OTk5OTksICgxLCAwKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoMC4wMDAwMDQxLCAoMCwgNSksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDEuMTIzNDU2MCwgKDEsIDEyMzQ1NyksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDEuMTIzNDU2OSwgKDEsIDEyMzQ1NyksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0wLjAwMDAwNDAsICgtMSwgOTk5OTk2KSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTAuMDAwMDA0MSwgKC0xLCA5OTk5OTUpLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgtMS4xMjM0NTYwLCAoLTIsIDg3NjU0NCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLjEyMzQ1NjEsICgtMiwgODc2NTQzKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvYmo9b2JqLCByb3VuZD1ybmQsIHRpbWV2YWw9dGltZXZhbCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwob2JqLCBybmQpLCB0aW1ldmFsKQotCi0gICAgICAgIHJuZCA9IF9QeVRpbWVfUk9VTkRfRE9XTgotICAgICAgICBmb3IgaW52YWxpZCBpbiBzZWxmLmludmFsaWRfdmFsdWVzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGltZV9vYmplY3RfdG9fdGltZXZhbCwgaW52YWxpZCwgcm5kKQotCi0gICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3RfdGltZXNwZWMoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjCiAgICAgICAgIGZvciBvYmosIHRpbWVzcGVjLCBybmQgaW4gKAotICAgICAgICAgICAgIyBSb3VuZCB0b3dhcmRzIHplcm8KLSAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTEsICgtMSwgMCksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTEuMCwgKC0xLCAwKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoMWUtMTAsICgwLCAwKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMWUtOSwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xZS0xMCwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwMDAwKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgwLjk5OTk5OTk5OTksICgwLCA5OTk5OTk5OTkpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5MCwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoMS4xMjM0NTY3ODk5LCAoMSwgMTIzNDU2Nzg5KSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMS4xMjM0NTY3ODkwLCAoLTIsIDg3NjU0MzIxMSksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MSwgKC0yLCA4NzY1NDMyMTApLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgIyBSb3VuZCBhd2F5IGZyb20gemVybwotICAgICAgICAgICAgKDAsICgwLCAwKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTEsICgtMSwgMCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLjAsICgtMSwgMCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDFlLTksICgwLCAxKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoMWUtMTAsICgwLCAxKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTFlLTksICgtMSwgOTk5OTk5OTk5KSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTFlLTEwLCAoLTEsIDk5OTk5OTk5OSksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwMDAwKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoMC45OTk5OTk5OTk5LCAoMSwgMCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5MCwgKDEsIDEyMzQ1Njc5MCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc5MCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTAsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MSwgKC0yLCA4NzY1NDMyMTApLCBfUHlUaW1lX1JPVU5EX1VQKSwKKyAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoLWluZikKKyAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKC0xLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgtMS4wLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKDFlLTEwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKC0xZS05LCAoLTEsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKC0xZS0xMCwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgtMS4yLCAoLTIsIDgwMDAwMDAwMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKDAuOTk5OTk5OTk5OSwgKDAsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKDEuMTIzNDU2Nzg5MCwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTAsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9GTE9PUiksCisgICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MSwgKC0yLCA4NzY1NDMyMTApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikKKyAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoLTEsICgtMSwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoLTEuMCwgKC0xLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoMWUtMTAsICgwLCAxKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgtMWUtOSwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKC0xZS0xMCwgKDAsIDApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwMDAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgwLjk5OTk5OTk5OTksICgxLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgxLjEyMzQ1Njc4OTAsICgxLCAxMjM0NTY3OTApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc5MCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MCwgKC0yLCA4NzY1NDMyMTEpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTEsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKICAgICAgICAgKToKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9iaj1vYmosIHJvdW5kPXJuZCwgdGltZXNwZWM9dGltZXNwZWMpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHl0aW1lX29iamVjdF90b190aW1lc3BlYyhvYmosIHJuZCksIHRpbWVzcGVjKQogCi0gICAgICAgIHJuZCA9IF9QeVRpbWVfUk9VTkRfRE9XTgorICAgICAgICBybmQgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCiAgICAgICAgIGZvciBpbnZhbGlkIGluIHNlbGYuaW52YWxpZF92YWx1ZXM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aW1lX29iamVjdF90b190aW1lc3BlYywgaW52YWxpZCwgcm5kKQpAQCAtNzU5LDUgKzczNCwyNjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJcyhsdC50bV96b25lLCBOb25lKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKF90ZXN0Y2FwaSBpcyBub3QgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICduZWVkIHRoZSBfdGVzdGNhcGkgbW9kdWxlJykKK2NsYXNzIFRlc3RQeVRpbWVfdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfRnJvbVNlY29uZHMoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfRnJvbVNlY29uZHMKKyAgICAgICAgZm9yIHNlY29uZHMgaW4gKDAsIDMsIC00NTYsIF90ZXN0Y2FwaS5JTlRfTUFYLCBfdGVzdGNhcGkuSU5UX01JTik6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0Zyb21TZWNvbmRzKHNlY29uZHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcyAqIFNFQ19UT19OUykKKworICAgIGRlZiB0ZXN0X0Zyb21TZWNvbmRzT2JqZWN0KHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0CisKKyAgICAgICAgIyBDb252ZXJzaW9uIGdpdmluZyB0aGUgc2FtZSByZXN1bHQgZm9yIGFsbCByb3VuZGluZyBtZXRob2RzCisgICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6CisgICAgICAgICAgICBmb3Igb2JqLCB0cyBpbiAoCisgICAgICAgICAgICAgICAgIyBpbnRlZ2VycworICAgICAgICAgICAgICAgICgwLCAwKSwKKyAgICAgICAgICAgICAgICAoMSwgU0VDX1RPX05TKSwKKyAgICAgICAgICAgICAgICAoLTMsIC0zICogU0VDX1RPX05TKSwKKworICAgICAgICAgICAgICAgICMgZmxvYXQ6IHN1YnNlY29uZHMKKyAgICAgICAgICAgICAgICAoMC4wLCAwKSwKKyAgICAgICAgICAgICAgICAoMWUtOSwgMSksCisgICAgICAgICAgICAgICAgKDFlLTYsIDEwICoqIDMpLAorICAgICAgICAgICAgICAgICgxZS0zLCAxMCAqKiA2KSwKKworICAgICAgICAgICAgICAgICMgZmxvYXQ6IHNlY29uZHMKKyAgICAgICAgICAgICAgICAoMi4wLCAyICogU0VDX1RPX05TKSwKKyAgICAgICAgICAgICAgICAoMTIzLjAsIDEyMyAqIFNFQ19UT19OUyksCisgICAgICAgICAgICAgICAgKC03LjAsIC03ICogU0VDX1RPX05TKSwKKworICAgICAgICAgICAgICAgICMgbmFub3NlY29uZCBhcmUga2VwdCBmb3IgdmFsdWUgPD0gMl4yMyBzZWNvbmRzCisgICAgICAgICAgICAgICAgKDIqKjIyIC0gMWUtOSwgIDQxOTQzMDM5OTk5OTk5OTkpLAorICAgICAgICAgICAgICAgICgyKioyMiwgICAgICAgICA0MTk0MzA0MDAwMDAwMDAwKSwKKyAgICAgICAgICAgICAgICAoMioqMjIgKyAxZS05LCAgNDE5NDMwNDAwMDAwMDAwMSksCisgICAgICAgICAgICAgICAgKDIqKjIzIC0gMWUtOSwgIDgzODg2MDc5OTk5OTk5OTkpLAorICAgICAgICAgICAgICAgICgyKioyMywgICAgICAgICA4Mzg4NjA4MDAwMDAwMDAwKSwKKworICAgICAgICAgICAgICAgICMgc3RhcnQgbG9zaW5nIHByZWNpc2lvbiBmb3IgdmFsdWUgPiAyXjIzIHNlY29uZHMKKyAgICAgICAgICAgICAgICAoMioqMjMgKyAxZS05LCAgODM4ODYwODAwMDAwMDAwMiksCisKKyAgICAgICAgICAgICAgICAjIG5hbm9zZWNvbmRzIGFyZSBsb3N0IGZvciB2YWx1ZSA+IDJeMjMgc2Vjb25kcworICAgICAgICAgICAgICAgICgyKioyNCAtIDFlLTksIDE2Nzc3MjE1OTk5OTk5OTk4KSwKKyAgICAgICAgICAgICAgICAoMioqMjQsICAgICAgICAxNjc3NzIxNjAwMDAwMDAwMCksCisgICAgICAgICAgICAgICAgKDIqKjI0ICsgMWUtOSwgMTY3NzcyMTYwMDAwMDAwMDApLAorICAgICAgICAgICAgICAgICgyKioyNSAtIDFlLTksIDMzNTU0NDMyMDAwMDAwMDAwKSwKKyAgICAgICAgICAgICAgICAoMioqMjUgICAgICAgLCAzMzU1NDQzMjAwMDAwMDAwMCksCisgICAgICAgICAgICAgICAgKDIqKjI1ICsgMWUtOSwgMzM1NTQ0MzIwMDAwMDAwMDApLAorCisgICAgICAgICAgICAgICAgIyBjbG9zZSB0byAyXjYzIG5hbm9zZWNvbmRzIChfUHlUaW1lX3QgbGltaXQpCisgICAgICAgICAgICAgICAgKDkyMjMzNzIwMzYsIDkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAorICAgICAgICAgICAgICAgICg5MjIzMzcyMDM2LjAsIDkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAorICAgICAgICAgICAgICAgICgtOTIyMzM3MjAzNiwgLTkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAorICAgICAgICAgICAgICAgICgtOTIyMzM3MjAzNi4wLCAtOTIyMzM3MjAzNiAqIFNFQ19UT19OUyksCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9iaj1vYmosIHJvdW5kPXJuZCwgdGltZXN0YW1wPXRzKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfRnJvbVNlY29uZHNPYmplY3Qob2JqLCBybmQpLCB0cykKKworICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qocm91bmQ9cm5kKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoOTIyMzM3MjAzNywgcm5kKQorICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoOTIyMzM3MjAzNy4wLCBybmQpCisgICAgICAgICAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCgtOTIyMzM3MjAzNywgcm5kKQorICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoLTkyMjMzNzIwMzcuMCwgcm5kKQorCisgICAgICAgICMgQ29udmVyc2lvbiBnaXZpbmcgZGlmZmVyZW50IHJlc3VsdHMgZGVwZW5kaW5nIG9uIHRoZSByb3VuZGluZyBtZXRob2QKKyAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCisgICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKKyAgICAgICAgZm9yIG9iaiwgdHMsIHJuZCBpbiAoCisgICAgICAgICAgICAjIGNsb3NlIHRvIHplcm8KKyAgICAgICAgICAgICggMWUtMTAsICAwLCBGTE9PUiksCisgICAgICAgICAgICAoIDFlLTEwLCAgMSwgQ0VJTElORyksCisgICAgICAgICAgICAoLTFlLTEwLCAtMSwgRkxPT1IpLAorICAgICAgICAgICAgKC0xZS0xMCwgIDAsIENFSUxJTkcpLAorCisgICAgICAgICAgICAjIHRlc3Qgcm91bmRpbmcgb2YgdGhlIGxhc3QgbmFub3NlY29uZAorICAgICAgICAgICAgKCAxLjEyMzQ1Njc4OTksICAxMTIzNDU2Nzg5LCBGTE9PUiksCisgICAgICAgICAgICAoIDEuMTIzNDU2Nzg5OSwgIDExMjM0NTY3OTAsIENFSUxJTkcpLAorICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTksIC0xMTIzNDU2NzkwLCBGTE9PUiksCisgICAgICAgICAgICAoLTEuMTIzNDU2Nzg5OSwgLTExMjM0NTY3ODksIENFSUxJTkcpLAorCisgICAgICAgICAgICAjIGNsb3NlIHRvIDEgc2Vjb25kCisgICAgICAgICAgICAoIDAuOTk5OTk5OTk5OSwgICA5OTk5OTk5OTksIEZMT09SKSwKKyAgICAgICAgICAgICggMC45OTk5OTk5OTk5LCAgMTAwMDAwMDAwMCwgQ0VJTElORyksCisgICAgICAgICAgICAoLTAuOTk5OTk5OTk5OSwgLTEwMDAwMDAwMDAsIEZMT09SKSwKKyAgICAgICAgICAgICgtMC45OTk5OTk5OTk5LCAgLTk5OTk5OTk5OSwgQ0VJTElORyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvYmo9b2JqLCByb3VuZD1ybmQsIHRpbWVzdGFtcD10cyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfRnJvbVNlY29uZHNPYmplY3Qob2JqLCBybmQpLCB0cykKKworICAgIGRlZiB0ZXN0X0FzU2Vjb25kc0RvdWJsZShzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IFB5VGltZV9Bc1NlY29uZHNEb3VibGUKKworICAgICAgICBmb3IgbmFub3NlY29uZHMsIHNlY29uZHMgaW4gKAorICAgICAgICAgICAgIyBuZWFyIDEgbmFub3NlY29uZAorICAgICAgICAgICAgKCAwLCAgMC4wKSwKKyAgICAgICAgICAgICggMSwgIDFlLTkpLAorICAgICAgICAgICAgKC0xLCAtMWUtOSksCisKKyAgICAgICAgICAgICMgbmVhciAxIHNlY29uZAorICAgICAgICAgICAgKFNFQ19UT19OUyArIDEsIDEuMCArIDFlLTkpLAorICAgICAgICAgICAgKFNFQ19UT19OUywgICAgIDEuMCksCisgICAgICAgICAgICAoU0VDX1RPX05TIC0gMSwgMS4wIC0gMWUtOSksCisKKyAgICAgICAgICAgICMgYSBmZXcgc2Vjb25kcworICAgICAgICAgICAgKDEyMyAqIFNFQ19UT19OUywgMTIzLjApLAorICAgICAgICAgICAgKC01NjcgKiBTRUNfVE9fTlMsIC01NjcuMCksCisKKyAgICAgICAgICAgICMgbmFub3NlY29uZCBhcmUga2VwdCBmb3IgdmFsdWUgPD0gMl4yMyBzZWNvbmRzCisgICAgICAgICAgICAoNDE5NDMwMzk5OTk5OTk5OSwgMioqMjIgLSAxZS05KSwKKyAgICAgICAgICAgICg0MTk0MzA0MDAwMDAwMDAwLCAyKioyMiksCisgICAgICAgICAgICAoNDE5NDMwNDAwMDAwMDAwMSwgMioqMjIgKyAxZS05KSwKKworICAgICAgICAgICAgIyBzdGFydCBsb3NpbmcgcHJlY2lzaW9uIGZvciB2YWx1ZSA+IDJeMjMgc2Vjb25kcworICAgICAgICAgICAgKDgzODg2MDgwMDAwMDAwMDIsIDIqKjIzICsgMWUtOSksCisKKyAgICAgICAgICAgICMgbmFub3NlY29uZHMgYXJlIGxvc3QgZm9yIHZhbHVlID4gMl4yMyBzZWNvbmRzCisgICAgICAgICAgICAoMTY3NzcyMTU5OTk5OTk5OTgsIDIqKjI0IC0gMWUtOSksCisgICAgICAgICAgICAoMTY3NzcyMTU5OTk5OTk5OTksIDIqKjI0IC0gMWUtOSksCisgICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDAsIDIqKjI0ICAgICAgICksCisgICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDEsIDIqKjI0ICAgICAgICksCisgICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDIsIDIqKjI0ICsgMmUtOSksCisKKyAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwMCwgMioqMjUgICAgICAgKSwKKyAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwMiwgMioqMjUgICAgICAgKSwKKyAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwNCwgMioqMjUgKyA0ZS05KSwKKworICAgICAgICAgICAgIyBjbG9zZSB0byAyXjYzIG5hbm9zZWNvbmRzIChfUHlUaW1lX3QgbGltaXQpCisgICAgICAgICAgICAoOTIyMzM3MjAzNiAqIFNFQ19UT19OUywgOTIyMzM3MjAzNi4wKSwKKyAgICAgICAgICAgICgtOTIyMzM3MjAzNiAqIFNFQ19UT19OUywgLTkyMjMzNzIwMzYuMCksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1uYW5vc2Vjb25kcywgc2Vjb25kcz1zZWNvbmRzKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1NlY29uZHNEb3VibGUobmFub3NlY29uZHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcykKKworICAgIGRlZiB0ZXN0X3RpbWV2YWwoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfQXNUaW1ldmFsCisgICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6CisgICAgICAgICAgICBmb3IgbnMsIHR2IGluICgKKyAgICAgICAgICAgICAgICAjIG1pY3Jvc2Vjb25kcworICAgICAgICAgICAgICAgICgwLCAoMCwgMCkpLAorICAgICAgICAgICAgICAgICgxMDAwLCAoMCwgMSkpLAorICAgICAgICAgICAgICAgICgtMTAwMCwgKC0xLCA5OTk5OTkpKSwKKworICAgICAgICAgICAgICAgICMgc2Vjb25kcworICAgICAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAoMiwgMCkpLAorICAgICAgICAgICAgICAgICgtMyAqIFNFQ19UT19OUywgKC0zLCAwKSksCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1RpbWV2YWwobnMsIHJuZCksIHR2KQorCisgICAgICAgIEZMT09SID0gX1B5VGltZS5ST1VORF9GTE9PUgorICAgICAgICBDRUlMSU5HID0gX1B5VGltZS5ST1VORF9DRUlMSU5HCisgICAgICAgIGZvciBucywgdHYsIHJuZCBpbiAoCisgICAgICAgICAgICAjIG5hbm9zZWNvbmRzCisgICAgICAgICAgICAoMSwgKDAsIDApLCBGTE9PUiksCisgICAgICAgICAgICAoMSwgKDAsIDEpLCBDRUlMSU5HKSwKKyAgICAgICAgICAgICgtMSwgKC0xLCA5OTk5OTkpLCBGTE9PUiksCisgICAgICAgICAgICAoLTEsICgwLCAwKSwgQ0VJTElORyksCisKKyAgICAgICAgICAgICMgc2Vjb25kcyArIG5hbm9zZWNvbmRzCisgICAgICAgICAgICAoMTIzNDU2NzAwMSwgKDEsIDIzNDU2NyksIEZMT09SKSwKKyAgICAgICAgICAgICgxMjM0NTY3MDAxLCAoMSwgMjM0NTY4KSwgQ0VJTElORyksCisgICAgICAgICAgICAoLTEyMzQ1NjcwMDEsICgtMiwgNzY1NDMyKSwgRkxPT1IpLAorICAgICAgICAgICAgKC0xMjM0NTY3MDAxLCAoLTIsIDc2NTQzMyksIENFSUxJTkcpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWV2YWw9dHYsIHJvdW5kPXJuZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNUaW1ldmFsKG5zLCBybmQpLCB0dikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoX3Rlc3RjYXBpLCAnUHlUaW1lX0FzVGltZXNwZWMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBfdGVzdGNhcGkuUHlUaW1lX0FzVGltZXNwZWMnKQorICAgIGRlZiB0ZXN0X3RpbWVzcGVjKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzVGltZXNwZWMKKyAgICAgICAgZm9yIG5zLCB0cyBpbiAoCisgICAgICAgICAgICAjIG5hbm9zZWNvbmRzCisgICAgICAgICAgICAoMCwgKDAsIDApKSwKKyAgICAgICAgICAgICgxLCAoMCwgMSkpLAorICAgICAgICAgICAgKC0xLCAoLTEsIDk5OTk5OTk5OSkpLAorCisgICAgICAgICAgICAjIHNlY29uZHMKKyAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAoMiwgMCkpLAorICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAoLTMsIDApKSwKKworICAgICAgICAgICAgIyBzZWNvbmRzICsgbmFub3NlY29uZHMKKyAgICAgICAgICAgICgxMjM0NTY3ODkwLCAoMSwgMjM0NTY3ODkwKSksCisgICAgICAgICAgICAoLTEyMzQ1Njc4OTAsICgtMiwgNzY1NDMyMTEwKSksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgdGltZXNwZWM9dHMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzVGltZXNwZWMobnMpLCB0cykKKworICAgIGRlZiB0ZXN0X21pbGxpc2Vjb25kcyhzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IFB5VGltZV9Bc01pbGxpc2Vjb25kcworICAgICAgICBmb3Igcm5kIGluIEFMTF9ST1VORElOR19NRVRIT0RTOgorICAgICAgICAgICAgZm9yIG5zLCB0diBpbiAoCisgICAgICAgICAgICAgICAgIyBtaWxsaXNlY29uZHMKKyAgICAgICAgICAgICAgICAoMSAqIE1TX1RPX05TLCAxKSwKKyAgICAgICAgICAgICAgICAoLTIgKiBNU19UT19OUywgLTIpLAorCisgICAgICAgICAgICAgICAgIyBzZWNvbmRzCisgICAgICAgICAgICAgICAgKDIgKiBTRUNfVE9fTlMsIDIwMDApLAorICAgICAgICAgICAgICAgICgtMyAqIFNFQ19UT19OUywgLTMwMDApLAorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgdGltZXZhbD10diwgcm91bmQ9cm5kKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNNaWxsaXNlY29uZHMobnMsIHJuZCksIHR2KQorCisgICAgICAgIEZMT09SID0gX1B5VGltZS5ST1VORF9GTE9PUgorICAgICAgICBDRUlMSU5HID0gX1B5VGltZS5ST1VORF9DRUlMSU5HCisgICAgICAgIGZvciBucywgbXMsIHJuZCBpbiAoCisgICAgICAgICAgICAjIG5hbm9zZWNvbmRzCisgICAgICAgICAgICAoMSwgMCwgRkxPT1IpLAorICAgICAgICAgICAgKDEsIDEsIENFSUxJTkcpLAorICAgICAgICAgICAgKC0xLCAtMSwgRkxPT1IpLAorICAgICAgICAgICAgKC0xLCAwLCBDRUlMSU5HKSwKKworICAgICAgICAgICAgIyBzZWNvbmRzICsgbmFub3NlY29uZHMKKyAgICAgICAgICAgICgxMjM0ICogTVNfVE9fTlMgKyAxLCAxMjM0LCBGTE9PUiksCisgICAgICAgICAgICAoMTIzNCAqIE1TX1RPX05TICsgMSwgMTIzNSwgQ0VJTElORyksCisgICAgICAgICAgICAoLTEyMzQgKiBNU19UT19OUyAtIDEsIC0xMjM1LCBGTE9PUiksCisgICAgICAgICAgICAoLTEyMzQgKiBNU19UT19OUyAtIDEsIC0xMjM0LCBDRUlMSU5HKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCBtaWxsaXNlY29uZHM9bXMsIHJvdW5kPXJuZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNNaWxsaXNlY29uZHMobnMsIHJuZCksIG1zKQorCisgICAgZGVmIHRlc3RfbWljcm9zZWNvbmRzKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzTWljcm9zZWNvbmRzCisgICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6CisgICAgICAgICAgICBmb3IgbnMsIHR2IGluICgKKyAgICAgICAgICAgICAgICAjIG1pY3Jvc2Vjb25kcworICAgICAgICAgICAgICAgICgxICogVVNfVE9fTlMsIDEpLAorICAgICAgICAgICAgICAgICgtMiAqIFVTX1RPX05TLCAtMiksCisKKyAgICAgICAgICAgICAgICAjIG1pbGxpc2Vjb25kcworICAgICAgICAgICAgICAgICgxICogTVNfVE9fTlMsIDEwMDApLAorICAgICAgICAgICAgICAgICgtMiAqIE1TX1RPX05TLCAtMjAwMCksCisKKyAgICAgICAgICAgICAgICAjIHNlY29uZHMKKyAgICAgICAgICAgICAgICAoMiAqIFNFQ19UT19OUywgMjAwMDAwMCksCisgICAgICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAtMzAwMDAwMCksCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pY3Jvc2Vjb25kcyhucywgcm5kKSwgdHYpCisKKyAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCisgICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKKyAgICAgICAgZm9yIG5zLCBtcywgcm5kIGluICgKKyAgICAgICAgICAgICMgbmFub3NlY29uZHMKKyAgICAgICAgICAgICgxLCAwLCBGTE9PUiksCisgICAgICAgICAgICAoMSwgMSwgQ0VJTElORyksCisgICAgICAgICAgICAoLTEsIC0xLCBGTE9PUiksCisgICAgICAgICAgICAoLTEsIDAsIENFSUxJTkcpLAorCisgICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcworICAgICAgICAgICAgKDEyMzQgKiBVU19UT19OUyArIDEsIDEyMzQsIEZMT09SKSwKKyAgICAgICAgICAgICgxMjM0ICogVVNfVE9fTlMgKyAxLCAxMjM1LCBDRUlMSU5HKSwKKyAgICAgICAgICAgICgtMTIzNCAqIFVTX1RPX05TIC0gMSwgLTEyMzUsIEZMT09SKSwKKyAgICAgICAgICAgICgtMTIzNCAqIFVTX1RPX05TIC0gMSwgLTEyMzQsIENFSUxJTkcpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIG1pbGxpc2Vjb25kcz1tcywgcm91bmQ9cm5kKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pY3Jvc2Vjb25kcyhucywgcm5kKSwgbXMpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGltZWl0LnB5IGIvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKaW5kZXggOTE4YTI5NC4uMmRiM2MxYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKQEAgLTUsNyArNSw2IEBACiBpbXBvcnQgdGltZQogZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50CiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRvdXQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRlcnIKIApAQCAtODksOCArODgsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgdGltZWl0LlRpbWVyLCBzZXR1cD0nY29udGludWUnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgdGltZWl0LlRpbWVyLCBzZXR1cD0nZnJvbSB0aW1laXQgaW1wb3J0IConKQogCi0gICAgZmFrZV9zZXR1cCA9ICJpbXBvcnQgdGltZWl0OyB0aW1laXQuX2Zha2VfdGltZXIuc2V0dXAoKSIKLSAgICBmYWtlX3N0bXQgPSAiaW1wb3J0IHRpbWVpdDsgdGltZWl0Ll9mYWtlX3RpbWVyLmluYygpIgorICAgIGZha2Vfc2V0dXAgPSAiaW1wb3J0IHRpbWVpdFxudGltZWl0Ll9mYWtlX3RpbWVyLnNldHVwKCkiCisgICAgZmFrZV9zdG10ID0gImltcG9ydCB0aW1laXRcbnRpbWVpdC5fZmFrZV90aW1lci5pbmMoKSIKIAogICAgIGRlZiBmYWtlX2NhbGxhYmxlX3NldHVwKHNlbGYpOgogICAgICAgICBzZWxmLmZha2VfdGltZXIuc2V0dXAoKQpAQCAtOTgsOSArOTcsMTAgQEAKICAgICBkZWYgZmFrZV9jYWxsYWJsZV9zdG10KHNlbGYpOgogICAgICAgICBzZWxmLmZha2VfdGltZXIuaW5jKCkKIAotICAgIGRlZiB0aW1laXQoc2VsZiwgc3RtdCwgc2V0dXAsIG51bWJlcj1Ob25lKToKKyAgICBkZWYgdGltZWl0KHNlbGYsIHN0bXQsIHNldHVwLCBudW1iZXI9Tm9uZSwgZ2xvYmFscz1Ob25lKToKICAgICAgICAgc2VsZi5mYWtlX3RpbWVyID0gRmFrZVRpbWVyKCkKLSAgICAgICAgdCA9IHRpbWVpdC5UaW1lcihzdG10PXN0bXQsIHNldHVwPXNldHVwLCB0aW1lcj1zZWxmLmZha2VfdGltZXIpCisgICAgICAgIHQgPSB0aW1laXQuVGltZXIoc3RtdD1zdG10LCBzZXR1cD1zZXR1cCwgdGltZXI9c2VsZi5mYWtlX3RpbWVyLAorICAgICAgICAgICAgICAgIGdsb2JhbHM9Z2xvYmFscykKICAgICAgICAga3dhcmdzID0ge30KICAgICAgICAgaWYgbnVtYmVyIGlzIE5vbmU6CiAgICAgICAgICAgICBudW1iZXIgPSBERUZBVUxUX05VTUJFUgpAQCAtMTQyLDYgKzE0MiwxNyBAQAogICAgICAgICAgICAgICAgIHRpbWVyPUZha2VUaW1lcigpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlbHRhX3RpbWUsIDApCiAKKyAgICBkZWYgdGVzdF90aW1laXRfZ2xvYmFsc19hcmdzKHNlbGYpOgorICAgICAgICBnbG9iYWwgX2dsb2JhbF90aW1lcgorICAgICAgICBfZ2xvYmFsX3RpbWVyID0gRmFrZVRpbWVyKCkKKyAgICAgICAgdCA9IHRpbWVpdC5UaW1lcihzdG10PSdfZ2xvYmFsX3RpbWVyLmluYygpJywgdGltZXI9X2dsb2JhbF90aW1lcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yLCB0LnRpbWVpdCwgbnVtYmVyPTMpCisgICAgICAgIHRpbWVpdC50aW1laXQoc3RtdD0nX2dsb2JhbF90aW1lci5pbmMoKScsIHRpbWVyPV9nbG9iYWxfdGltZXIsCisgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscz1nbG9iYWxzKCksIG51bWJlcj0zKQorICAgICAgICBsb2NhbF90aW1lciA9IEZha2VUaW1lcigpCisgICAgICAgIHRpbWVpdC50aW1laXQoc3RtdD0nbG9jYWxfdGltZXIuaW5jKCknLCB0aW1lcj1sb2NhbF90aW1lciwKKyAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzPWxvY2FscygpLCBudW1iZXI9MykKKwogICAgIGRlZiByZXBlYXQoc2VsZiwgc3RtdCwgc2V0dXAsIHJlcGVhdD1Ob25lLCBudW1iZXI9Tm9uZSk6CiAgICAgICAgIHNlbGYuZmFrZV90aW1lciA9IEZha2VUaW1lcigpCiAgICAgICAgIHQgPSB0aW1laXQuVGltZXIoc3RtdD1zdG10LCBzZXR1cD1zZXR1cCwgdGltZXI9c2VsZi5mYWtlX3RpbWVyKQpAQCAtMjYxLDYgKzI3MiwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsICJDdXN0b21TZXR1cFxuIiAqIDMgKwogICAgICAgICAgICAgICAgICIzNSBsb29wcywgYmVzdCBvZiAzOiAyIHNlYyBwZXIgbG9vcFxuIikKIAorICAgIGRlZiB0ZXN0X21haW5fbXVsdGlwbGVfc2V0dXBzKHNlbGYpOgorICAgICAgICBzID0gc2VsZi5ydW5fbWFpbihzZWNvbmRzX3Blcl9pbmNyZW1lbnQ9Mi4wLAorICAgICAgICAgICAgICAgIHN3aXRjaGVzPVsnLW4zNScsICctcycsICdhID0gIkN1c3RvbVNldHVwIicsICctcycsICdwcmludChhKSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsICJDdXN0b21TZXR1cFxuIiAqIDMgKworICAgICAgICAgICAgICAgICIzNSBsb29wcywgYmVzdCBvZiAzOiAyIHNlYyBwZXIgbG9vcFxuIikKKwogICAgIGRlZiB0ZXN0X21haW5fZml4ZWRfcmVwcyhzZWxmKToKICAgICAgICAgcyA9IHNlbGYucnVuX21haW4oc2Vjb25kc19wZXJfaW5jcmVtZW50PTYwLjAsIHN3aXRjaGVzPVsnLXI5J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgIjEwIGxvb3BzLCBiZXN0IG9mIDk6IDYwIHNlYyBwZXIgbG9vcFxuIikKQEAgLTMwNyw2ICszMjQsMjYgQEAKICAgICAgICAgICAgICAgICAxMDAwMCBsb29wcywgYmVzdCBvZiAzOiA1MCB1c2VjIHBlciBsb29wCiAgICAgICAgICAgICAiIiIpKQogCisgICAgZGVmIHRlc3RfbWFpbl93aXRoX3RpbWVfdW5pdChzZWxmKToKKyAgICAgICAgdW5pdF9zZWMgPSBzZWxmLnJ1bl9tYWluKHNlY29uZHNfcGVyX2luY3JlbWVudD0wLjAwMiwKKyAgICAgICAgICAgICAgICBzd2l0Y2hlcz1bJy11JywgJ3NlYyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaXRfc2VjLAorICAgICAgICAgICAgICAgICIxMDAwIGxvb3BzLCBiZXN0IG9mIDM6IDAuMDAyIHNlYyBwZXIgbG9vcFxuIikKKyAgICAgICAgdW5pdF9tc2VjID0gc2VsZi5ydW5fbWFpbihzZWNvbmRzX3Blcl9pbmNyZW1lbnQ9MC4wMDIsCisgICAgICAgICAgICAgICAgc3dpdGNoZXM9WyctdScsICdtc2VjJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pdF9tc2VjLAorICAgICAgICAgICAgICAgICIxMDAwIGxvb3BzLCBiZXN0IG9mIDM6IDIgbXNlYyBwZXIgbG9vcFxuIikKKyAgICAgICAgdW5pdF91c2VjID0gc2VsZi5ydW5fbWFpbihzZWNvbmRzX3Blcl9pbmNyZW1lbnQ9MC4wMDIsCisgICAgICAgICAgICAgICAgc3dpdGNoZXM9WyctdScsICd1c2VjJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pdF91c2VjLAorICAgICAgICAgICAgICAgICIxMDAwIGxvb3BzLCBiZXN0IG9mIDM6IDJlKzAzIHVzZWMgcGVyIGxvb3BcbiIpCisgICAgICAgICMgVGVzdCBpbnZhbGlkIHVuaXQgaW5wdXQKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBlcnJvcl9zdHJpbmdpbzoKKyAgICAgICAgICAgIGludmFsaWQgPSBzZWxmLnJ1bl9tYWluKHNlY29uZHNfcGVyX2luY3JlbWVudD0wLjAwMiwKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoZXM9WyctdScsICdwYXJzZWMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJvcl9zdHJpbmdpby5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAiVW5yZWNvZ25pemVkIHVuaXQuIFBsZWFzZSBzZWxlY3QgdXNlYywgbXNlYywgb3Igc2VjLlxuIikKKwogICAgIGRlZiB0ZXN0X21haW5fZXhjZXB0aW9uKHNlbGYpOgogICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZGVycigpIGFzIGVycm9yX3N0cmluZ2lvOgogICAgICAgICAgICAgcyA9IHNlbGYucnVuX21haW4oc3dpdGNoZXM9WycxLzAnXSkKQEAgLTMxOCw4ICszNTUsNSBAQAogICAgICAgICBzZWxmLmFzc2VydF9leGNfc3RyaW5nKGVycm9yX3N0cmluZ2lvLmdldHZhbHVlKCksICdaZXJvRGl2aXNpb25FcnJvcicpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChUZXN0VGltZWl0KQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RpbWVvdXQucHkgYi9MaWIvdGVzdC90ZXN0X3RpbWVvdXQucHkKaW5kZXggNzAzYzQzYS4uM2M3NWRjYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aW1lb3V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGltZW91dC5weQpAQCAtMjQzLDE0ICsyNDMsMTQgQEAKICAgICBkZWYgdGVzdEFjY2VwdFRpbWVvdXQoc2VsZik6CiAgICAgICAgICMgVGVzdCBhY2NlcHQoKSB0aW1lb3V0CiAgICAgICAgIHN1cHBvcnQuYmluZF9wb3J0KHNlbGYuc29jaywgc2VsZi5sb2NhbGhvc3QpCi0gICAgICAgIHNlbGYuc29jay5saXN0ZW4oNSkKKyAgICAgICAgc2VsZi5zb2NrLmxpc3RlbigpCiAgICAgICAgIHNlbGYuX3NvY2tfb3BlcmF0aW9uKDEsIDEuNSwgJ2FjY2VwdCcpCiAKICAgICBkZWYgdGVzdFNlbmQoc2VsZik6CiAgICAgICAgICMgVGVzdCBzZW5kKCkgdGltZW91dAogICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgc2VydjoKICAgICAgICAgICAgIHN1cHBvcnQuYmluZF9wb3J0KHNlcnYsIHNlbGYubG9jYWxob3N0KQotICAgICAgICAgICAgc2Vydi5saXN0ZW4oNSkKKyAgICAgICAgICAgIHNlcnYubGlzdGVuKCkKICAgICAgICAgICAgIHNlbGYuc29jay5jb25uZWN0KHNlcnYuZ2V0c29ja25hbWUoKSkKICAgICAgICAgICAgICMgU2VuZCBhIGxvdCBvZiBkYXRhIGluIG9yZGVyIHRvIGJ5cGFzcyBidWZmZXJpbmcgaW4gdGhlIFRDUCBzdGFjay4KICAgICAgICAgICAgIHNlbGYuX3NvY2tfb3BlcmF0aW9uKDEwMCwgMS41LCAnc2VuZCcsIGIiWCIgKiAyMDAwMDApCkBAIC0yNTksNyArMjU5LDcgQEAKICAgICAgICAgIyBUZXN0IHNlbmR0bygpIHRpbWVvdXQKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHNlcnY6CiAgICAgICAgICAgICBzdXBwb3J0LmJpbmRfcG9ydChzZXJ2LCBzZWxmLmxvY2FsaG9zdCkKLSAgICAgICAgICAgIHNlcnYubGlzdGVuKDUpCisgICAgICAgICAgICBzZXJ2Lmxpc3RlbigpCiAgICAgICAgICAgICBzZWxmLnNvY2suY29ubmVjdChzZXJ2LmdldHNvY2tuYW1lKCkpCiAgICAgICAgICAgICAjIFRoZSBhZGRyZXNzIGFyZ3VtZW50IGlzIGlnbm9yZWQgc2luY2Ugd2UgYWxyZWFkeSBjb25uZWN0ZWQuCiAgICAgICAgICAgICBzZWxmLl9zb2NrX29wZXJhdGlvbigxMDAsIDEuNSwgJ3NlbmR0bycsIGIiWCIgKiAyMDAwMDAsCkBAIC0yNjksNyArMjY5LDcgQEAKICAgICAgICAgIyBUZXN0IHNlbmRhbGwoKSB0aW1lb3V0CiAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzZXJ2OgogICAgICAgICAgICAgc3VwcG9ydC5iaW5kX3BvcnQoc2Vydiwgc2VsZi5sb2NhbGhvc3QpCi0gICAgICAgICAgICBzZXJ2Lmxpc3Rlbig1KQorICAgICAgICAgICAgc2Vydi5saXN0ZW4oKQogICAgICAgICAgICAgc2VsZi5zb2NrLmNvbm5lY3Qoc2Vydi5nZXRzb2NrbmFtZSgpKQogICAgICAgICAgICAgIyBTZW5kIGEgbG90IG9mIGRhdGEgaW4gb3JkZXIgdG8gYnlwYXNzIGJ1ZmZlcmluZyBpbiB0aGUgVENQIHN0YWNrLgogICAgICAgICAgICAgc2VsZi5fc29ja19vcGVyYXRpb24oMTAwLCAxLjUsICdzZW5kYWxsJywgYiJYIiAqIDIwMDAwMCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGl4LnB5IGIvTGliL3Rlc3QvdGVzdF90aXgucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZlYTNkMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfdGl4LnB5CkBAIC0wLDAgKzEsMzIgQEAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgc3lzCisKKyMgU2tpcCB0aGlzIHRlc3QgaWYgdGhlIF90a2ludGVyIG1vZHVsZSB3YXNuJ3QgYnVpbHQuCitfdGtpbnRlciA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnX3RraW50ZXInKQorCisjIFNraXAgdGVzdCBpZiB0ayBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQuCitzdXBwb3J0LnJlcXVpcmVzKCdndWknKQorCitmcm9tIHRraW50ZXIgaW1wb3J0IHRpeCwgVGNsRXJyb3IKKworCitjbGFzcyBUZXN0VGl4KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5yb290ID0gdGl4LlRrKCkKKyAgICAgICAgZXhjZXB0IFRjbEVycm9yOgorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVGl4IHNob3VsZCBhbHdheXMgYmUgYXZhaWxhYmxlIG9uIFdpbmRvd3MnKQorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnVGl4IG5vdCBhdmFpbGFibGUnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYucm9vdC5kZXN0cm95KQorCisgICAgZGVmIHRlc3RfdGl4X2F2YWlsYWJsZShzZWxmKToKKyAgICAgICAgIyB0aGlzIHRlc3QgaXMganVzdCBoZXJlIHRvIG1ha2Ugc2V0VXAgcnVuCisgICAgICAgIHBhc3MKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90ay5weSBiL0xpYi90ZXN0L3Rlc3RfdGsucHkKaW5kZXggNjI3MjlmMC4uNDhjZWZkOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90ay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RrLnB5CkBAIC0yLDkgKzIsNiBAQAogIyBTa2lwIHRlc3QgaWYgX3RraW50ZXIgd2Fzbid0IGJ1aWx0Lgogc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfdGtpbnRlcicpCiAKLSMgTWFrZSBzdXJlIHRraW50ZXIuX2ZpeCBydW5zIHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQKLXN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgndGtpbnRlcicpCi0KICMgU2tpcCB0ZXN0IGlmIHRrIGNhbm5vdCBiZSBpbml0aWFsaXplZC4KIHN1cHBvcnQucmVxdWlyZXMoJ2d1aScpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkgYi9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5CmluZGV4IDQwYjBjOTAuLjNiMTdjYTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weQpAQCAtNDI0LDcgKzQyNCw3IEBACiAKICAgICBkZWYgdGVzdF9tdWx0aXBsaWNhdGl2ZShzZWxmKToKICAgICAgICAgIyBNdWx0aXBsaWNhdGl2ZQotICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gMS8vMSoxLzUqMTIlMHgxMiIsICIiIlwKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgieCA9IDEvLzEqMS81KjEyJTB4MTJANDIiLCAiIiJcCiAgICAgTkFNRSAgICAgICAneCcgICAgICAgICAgICgxLCAwKSAoMSwgMSkKICAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDEsIDIpICgxLCAzKQogICAgIE5VTUJFUiAgICAgJzEnICAgICAgICAgICAoMSwgNCkgKDEsIDUpCkBAIC00MzgsNiArNDM4LDggQEAKICAgICBOVU1CRVIgICAgICcxMicgICAgICAgICAgKDEsIDEzKSAoMSwgMTUpCiAgICAgT1AgICAgICAgICAnJScgICAgICAgICAgICgxLCAxNSkgKDEsIDE2KQogICAgIE5VTUJFUiAgICAgJzB4MTInICAgICAgICAoMSwgMTYpICgxLCAyMCkKKyAgICBPUCAgICAgICAgICdAJyAgICAgICAgICAgKDEsIDIwKSAoMSwgMjEpCisgICAgTlVNQkVSICAgICAnNDInICAgICAgICAgICgxLCAyMSkgKDEsIDIzKQogICAgICIiIikKIAogICAgIGRlZiB0ZXN0X3VuYXJ5KHNlbGYpOgpAQCAtNTYxLDYgKzU2MywyODAgQEAKICAgICBTVFJJTkcgICAgICJVJ2dyZWVuJyIgICAgKDIsIDcpICgyLCAxNSkKICAgICAiIiIpCiAKKyAgICBkZWYgdGVzdF9hc3luYyhzZWxmKToKKyAgICAgICAgIyBBc3luYy9hd2FpdCBleHRlbnNpb246CisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoImFzeW5jID0gMSIsICIiIlwKKyAgICBOQU1FICAgICAgICdhc3luYycgICAgICAgKDEsIDApICgxLCA1KQorICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMSwgNikgKDEsIDcpCisgICAgTlVNQkVSICAgICAnMScgICAgICAgICAgICgxLCA4KSAoMSwgOSkKKyAgICAiIiIpCisKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgiYSA9IChhc3luYyA9IDEpIiwgIiIiXAorICAgIE5BTUUgICAgICAgJ2EnICAgICAgICAgICAoMSwgMCkgKDEsIDEpCisgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCAyKSAoMSwgMykKKyAgICBPUCAgICAgICAgICcoJyAgICAgICAgICAgKDEsIDQpICgxLCA1KQorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgNSkgKDEsIDEwKQorICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMSwgMTEpICgxLCAxMikKKyAgICBOVU1CRVIgICAgICcxJyAgICAgICAgICAgKDEsIDEzKSAoMSwgMTQpCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICgxLCAxNCkgKDEsIDE1KQorICAgICIiIikKKworICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJhc3luYygpIiwgIiIiXAorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgT1AgICAgICAgICAnKCcgICAgICAgICAgICgxLCA1KSAoMSwgNikKKyAgICBPUCAgICAgICAgICcpJyAgICAgICAgICAgKDEsIDYpICgxLCA3KQorICAgICIiIikKKworICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJjbGFzcyBhc3luYyhCYXIpOnBhc3MiLCAiIiJcCisgICAgTkFNRSAgICAgICAnY2xhc3MnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBOQU1FICAgICAgICdhc3luYycgICAgICAgKDEsIDYpICgxLCAxMSkKKyAgICBPUCAgICAgICAgICcoJyAgICAgICAgICAgKDEsIDExKSAoMSwgMTIpCisgICAgTkFNRSAgICAgICAnQmFyJyAgICAgICAgICgxLCAxMikgKDEsIDE1KQorICAgIE9QICAgICAgICAgJyknICAgICAgICAgICAoMSwgMTUpICgxLCAxNikKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDEsIDE2KSAoMSwgMTcpCisgICAgTkFNRSAgICAgICAncGFzcycgICAgICAgICgxLCAxNykgKDEsIDIxKQorICAgICIiIikKKworICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJjbGFzcyBhc3luYzpwYXNzIiwgIiIiXAorICAgIE5BTUUgICAgICAgJ2NsYXNzJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgTkFNRSAgICAgICAnYXN5bmMnICAgICAgICgxLCA2KSAoMSwgMTEpCisgICAgT1AgICAgICAgICAnOicgICAgICAgICAgICgxLCAxMSkgKDEsIDEyKQorICAgIE5BTUUgICAgICAgJ3Bhc3MnICAgICAgICAoMSwgMTIpICgxLCAxNikKKyAgICAiIiIpCisKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgiYXdhaXQgPSAxIiwgIiIiXAorICAgIE5BTUUgICAgICAgJ2F3YWl0JyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCA2KSAoMSwgNykKKyAgICBOVU1CRVIgICAgICcxJyAgICAgICAgICAgKDEsIDgpICgxLCA5KQorICAgICIiIikKKworICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJmb28uYXN5bmMiLCAiIiJcCisgICAgTkFNRSAgICAgICAnZm9vJyAgICAgICAgICgxLCAwKSAoMSwgMykKKyAgICBPUCAgICAgICAgICcuJyAgICAgICAgICAgKDEsIDMpICgxLCA0KQorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgNCkgKDEsIDkpCisgICAgIiIiKQorCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoImFzeW5jIGZvciBhIGluIGI6IHBhc3MiLCAiIiJcCisgICAgTkFNRSAgICAgICAnYXN5bmMnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBOQU1FICAgICAgICdmb3InICAgICAgICAgKDEsIDYpICgxLCA5KQorICAgIE5BTUUgICAgICAgJ2EnICAgICAgICAgICAoMSwgMTApICgxLCAxMSkKKyAgICBOQU1FICAgICAgICdpbicgICAgICAgICAgKDEsIDEyKSAoMSwgMTQpCisgICAgTkFNRSAgICAgICAnYicgICAgICAgICAgICgxLCAxNSkgKDEsIDE2KQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMSwgMTYpICgxLCAxNykKKyAgICBOQU1FICAgICAgICdwYXNzJyAgICAgICAgKDEsIDE4KSAoMSwgMjIpCisgICAgIiIiKQorCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoImFzeW5jIHdpdGggYSBhcyBiOiBwYXNzIiwgIiIiXAorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgTkFNRSAgICAgICAnd2l0aCcgICAgICAgICgxLCA2KSAoMSwgMTApCisgICAgTkFNRSAgICAgICAnYScgICAgICAgICAgICgxLCAxMSkgKDEsIDEyKQorICAgIE5BTUUgICAgICAgJ2FzJyAgICAgICAgICAoMSwgMTMpICgxLCAxNSkKKyAgICBOQU1FICAgICAgICdiJyAgICAgICAgICAgKDEsIDE2KSAoMSwgMTcpCisgICAgT1AgICAgICAgICAnOicgICAgICAgICAgICgxLCAxNykgKDEsIDE4KQorICAgIE5BTUUgICAgICAgJ3Bhc3MnICAgICAgICAoMSwgMTkpICgxLCAyMykKKyAgICAiIiIpCisKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgiYXN5bmMuZm9vIiwgIiIiXAorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgT1AgICAgICAgICAnLicgICAgICAgICAgICgxLCA1KSAoMSwgNikKKyAgICBOQU1FICAgICAgICdmb28nICAgICAgICAgKDEsIDYpICgxLCA5KQorICAgICIiIikKKworICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJhc3luYyIsICIiIlwKKyAgICBOQU1FICAgICAgICdhc3luYycgICAgICAgKDEsIDApICgxLCA1KQorICAgICIiIikKKworICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJhc3luY1xuI2NvbW1lbnRcbmF3YWl0IiwgIiIiXAorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMSwgNSkgKDEsIDYpCisgICAgQ09NTUVOVCAgICAnI2NvbW1lbnQnICAgICgyLCAwKSAoMiwgOCkKKyAgICBOTCAgICAgICAgICdcXG4nICAgICAgICAgICgyLCA4KSAoMiwgOSkKKyAgICBOQU1FICAgICAgICdhd2FpdCcgICAgICAgKDMsIDApICgzLCA1KQorICAgICIiIikKKworICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJhc3luY1xuLi4uXG5hd2FpdCIsICIiIlwKKyAgICBOQU1FICAgICAgICdhc3luYycgICAgICAgKDEsIDApICgxLCA1KQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDEsIDUpICgxLCA2KQorICAgIE9QICAgICAgICAgJy4uLicgICAgICAgICAoMiwgMCkgKDIsIDMpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMiwgMykgKDIsIDQpCisgICAgTkFNRSAgICAgICAnYXdhaXQnICAgICAgICgzLCAwKSAoMywgNSkKKyAgICAiIiIpCisKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgiYXN5bmNcbmF3YWl0IiwgIiIiXAorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMSwgNSkgKDEsIDYpCisgICAgTkFNRSAgICAgICAnYXdhaXQnICAgICAgICgyLCAwKSAoMiwgNSkKKyAgICAiIiIpCisKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgiZm9vLmFzeW5jICsgMSIsICIiIlwKKyAgICBOQU1FICAgICAgICdmb28nICAgICAgICAgKDEsIDApICgxLCAzKQorICAgIE9QICAgICAgICAgJy4nICAgICAgICAgICAoMSwgMykgKDEsIDQpCisgICAgTkFNRSAgICAgICAnYXN5bmMnICAgICAgICgxLCA0KSAoMSwgOSkKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDEwKSAoMSwgMTEpCisgICAgTlVNQkVSICAgICAnMScgICAgICAgICAgICgxLCAxMikgKDEsIDEzKQorICAgICIiIikKKworICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJhc3luYyBkZWYgZm9vKCk6IHBhc3MiLCAiIiJcCisgICAgQVNZTkMgICAgICAnYXN5bmMnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBOQU1FICAgICAgICdkZWYnICAgICAgICAgKDEsIDYpICgxLCA5KQorICAgIE5BTUUgICAgICAgJ2ZvbycgICAgICAgICAoMSwgMTApICgxLCAxMykKKyAgICBPUCAgICAgICAgICcoJyAgICAgICAgICAgKDEsIDEzKSAoMSwgMTQpCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICgxLCAxNCkgKDEsIDE1KQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMSwgMTUpICgxLCAxNikKKyAgICBOQU1FICAgICAgICdwYXNzJyAgICAgICAgKDEsIDE3KSAoMSwgMjEpCisgICAgIiIiKQorCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoJycnXAorYXN5bmMgZGVmIGZvbygpOgorICBkZWYgZm9vKGF3YWl0KToKKyAgICBhd2FpdCA9IDEKKyAgaWYgMToKKyAgICBhd2FpdAorYXN5bmMgKz0gMQorJycnLCAiIiJcCisgICAgQVNZTkMgICAgICAnYXN5bmMnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBOQU1FICAgICAgICdkZWYnICAgICAgICAgKDEsIDYpICgxLCA5KQorICAgIE5BTUUgICAgICAgJ2ZvbycgICAgICAgICAoMSwgMTApICgxLCAxMykKKyAgICBPUCAgICAgICAgICcoJyAgICAgICAgICAgKDEsIDEzKSAoMSwgMTQpCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICgxLCAxNCkgKDEsIDE1KQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMSwgMTUpICgxLCAxNikKKyAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgxLCAxNikgKDEsIDE3KQorICAgIElOREVOVCAgICAgJyAgJyAgICAgICAgICAoMiwgMCkgKDIsIDIpCisgICAgTkFNRSAgICAgICAnZGVmJyAgICAgICAgICgyLCAyKSAoMiwgNSkKKyAgICBOQU1FICAgICAgICdmb28nICAgICAgICAgKDIsIDYpICgyLCA5KQorICAgIE9QICAgICAgICAgJygnICAgICAgICAgICAoMiwgOSkgKDIsIDEwKQorICAgIEFXQUlUICAgICAgJ2F3YWl0JyAgICAgICAoMiwgMTApICgyLCAxNSkKKyAgICBPUCAgICAgICAgICcpJyAgICAgICAgICAgKDIsIDE1KSAoMiwgMTYpCisgICAgT1AgICAgICAgICAnOicgICAgICAgICAgICgyLCAxNikgKDIsIDE3KQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDIsIDE3KSAoMiwgMTgpCisgICAgSU5ERU5UICAgICAnICAgICcgICAgICAgICgzLCAwKSAoMywgNCkKKyAgICBBV0FJVCAgICAgICdhd2FpdCcgICAgICAgKDMsIDQpICgzLCA5KQorICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMywgMTApICgzLCAxMSkKKyAgICBOVU1CRVIgICAgICcxJyAgICAgICAgICAgKDMsIDEyKSAoMywgMTMpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMywgMTMpICgzLCAxNCkKKyAgICBERURFTlQgICAgICcnICAgICAgICAgICAgKDQsIDIpICg0LCAyKQorICAgIE5BTUUgICAgICAgJ2lmJyAgICAgICAgICAoNCwgMikgKDQsIDQpCisgICAgTlVNQkVSICAgICAnMScgICAgICAgICAgICg0LCA1KSAoNCwgNikKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDQsIDYpICg0LCA3KQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDQsIDcpICg0LCA4KQorICAgIElOREVOVCAgICAgJyAgICAnICAgICAgICAoNSwgMCkgKDUsIDQpCisgICAgQVdBSVQgICAgICAnYXdhaXQnICAgICAgICg1LCA0KSAoNSwgOSkKKyAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICg1LCA5KSAoNSwgMTApCisgICAgREVERU5UICAgICAnJyAgICAgICAgICAgICg2LCAwKSAoNiwgMCkKKyAgICBERURFTlQgICAgICcnICAgICAgICAgICAgKDYsIDApICg2LCAwKQorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoNiwgMCkgKDYsIDUpCisgICAgT1AgICAgICAgICAnKz0nICAgICAgICAgICg2LCA2KSAoNiwgOCkKKyAgICBOVU1CRVIgICAgICcxJyAgICAgICAgICAgKDYsIDkpICg2LCAxMCkKKyAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICg2LCAxMCkgKDYsIDExKQorICAgICIiIikKKworICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCcnJ1wKK2FzeW5jIGRlZiBmb28oKToKKyAgYXN5bmMgZm9yIGkgaW4gMTogcGFzcycnJywgIiIiXAorICAgIEFTWU5DICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgTkFNRSAgICAgICAnZGVmJyAgICAgICAgICgxLCA2KSAoMSwgOSkKKyAgICBOQU1FICAgICAgICdmb28nICAgICAgICAgKDEsIDEwKSAoMSwgMTMpCisgICAgT1AgICAgICAgICAnKCcgICAgICAgICAgICgxLCAxMykgKDEsIDE0KQorICAgIE9QICAgICAgICAgJyknICAgICAgICAgICAoMSwgMTQpICgxLCAxNSkKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDEsIDE1KSAoMSwgMTYpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMSwgMTYpICgxLCAxNykKKyAgICBJTkRFTlQgICAgICcgICcgICAgICAgICAgKDIsIDApICgyLCAyKQorICAgIEFTWU5DICAgICAgJ2FzeW5jJyAgICAgICAoMiwgMikgKDIsIDcpCisgICAgTkFNRSAgICAgICAnZm9yJyAgICAgICAgICgyLCA4KSAoMiwgMTEpCisgICAgTkFNRSAgICAgICAnaScgICAgICAgICAgICgyLCAxMikgKDIsIDEzKQorICAgIE5BTUUgICAgICAgJ2luJyAgICAgICAgICAoMiwgMTQpICgyLCAxNikKKyAgICBOVU1CRVIgICAgICcxJyAgICAgICAgICAgKDIsIDE3KSAoMiwgMTgpCisgICAgT1AgICAgICAgICAnOicgICAgICAgICAgICgyLCAxOCkgKDIsIDE5KQorICAgIE5BTUUgICAgICAgJ3Bhc3MnICAgICAgICAoMiwgMjApICgyLCAyNCkKKyAgICBERURFTlQgICAgICcnICAgICAgICAgICAgKDMsIDApICgzLCAwKQorICAgICIiIikKKworICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCcnJ2FzeW5jIGRlZiBmb28oYXN5bmMpOiBhd2FpdCcnJywgIiIiXAorICAgIEFTWU5DICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgTkFNRSAgICAgICAnZGVmJyAgICAgICAgICgxLCA2KSAoMSwgOSkKKyAgICBOQU1FICAgICAgICdmb28nICAgICAgICAgKDEsIDEwKSAoMSwgMTMpCisgICAgT1AgICAgICAgICAnKCcgICAgICAgICAgICgxLCAxMykgKDEsIDE0KQorICAgIEFTWU5DICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMTQpICgxLCAxOSkKKyAgICBPUCAgICAgICAgICcpJyAgICAgICAgICAgKDEsIDE5KSAoMSwgMjApCisgICAgT1AgICAgICAgICAnOicgICAgICAgICAgICgxLCAyMCkgKDEsIDIxKQorICAgIEFXQUlUICAgICAgJ2F3YWl0JyAgICAgICAoMSwgMjIpICgxLCAyNykKKyAgICAiIiIpCisKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgnJydcCitkZWYgZigpOgorCisgIGRlZiBiYXooKTogcGFzcworICBhc3luYyBkZWYgYmFyKCk6IHBhc3MKKworICBhd2FpdCA9IDInJycsICIiIlwKKyAgICBOQU1FICAgICAgICdkZWYnICAgICAgICAgKDEsIDApICgxLCAzKQorICAgIE5BTUUgICAgICAgJ2YnICAgICAgICAgICAoMSwgNCkgKDEsIDUpCisgICAgT1AgICAgICAgICAnKCcgICAgICAgICAgICgxLCA1KSAoMSwgNikKKyAgICBPUCAgICAgICAgICcpJyAgICAgICAgICAgKDEsIDYpICgxLCA3KQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMSwgNykgKDEsIDgpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMSwgOCkgKDEsIDkpCisgICAgTkwgICAgICAgICAnXFxuJyAgICAgICAgICAoMiwgMCkgKDIsIDEpCisgICAgSU5ERU5UICAgICAnICAnICAgICAgICAgICgzLCAwKSAoMywgMikKKyAgICBOQU1FICAgICAgICdkZWYnICAgICAgICAgKDMsIDIpICgzLCA1KQorICAgIE5BTUUgICAgICAgJ2JheicgICAgICAgICAoMywgNikgKDMsIDkpCisgICAgT1AgICAgICAgICAnKCcgICAgICAgICAgICgzLCA5KSAoMywgMTApCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICgzLCAxMCkgKDMsIDExKQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMywgMTEpICgzLCAxMikKKyAgICBOQU1FICAgICAgICdwYXNzJyAgICAgICAgKDMsIDEzKSAoMywgMTcpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMywgMTcpICgzLCAxOCkKKyAgICBBU1lOQyAgICAgICdhc3luYycgICAgICAgKDQsIDIpICg0LCA3KQorICAgIE5BTUUgICAgICAgJ2RlZicgICAgICAgICAoNCwgOCkgKDQsIDExKQorICAgIE5BTUUgICAgICAgJ2JhcicgICAgICAgICAoNCwgMTIpICg0LCAxNSkKKyAgICBPUCAgICAgICAgICcoJyAgICAgICAgICAgKDQsIDE1KSAoNCwgMTYpCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICg0LCAxNikgKDQsIDE3KQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoNCwgMTcpICg0LCAxOCkKKyAgICBOQU1FICAgICAgICdwYXNzJyAgICAgICAgKDQsIDE5KSAoNCwgMjMpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoNCwgMjMpICg0LCAyNCkKKyAgICBOTCAgICAgICAgICdcXG4nICAgICAgICAgICg1LCAwKSAoNSwgMSkKKyAgICBOQU1FICAgICAgICdhd2FpdCcgICAgICAgKDYsIDIpICg2LCA3KQorICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoNiwgOCkgKDYsIDkpCisgICAgTlVNQkVSICAgICAnMicgICAgICAgICAgICg2LCAxMCkgKDYsIDExKQorICAgIERFREVOVCAgICAgJycgICAgICAgICAgICAoNywgMCkgKDcsIDApCisgICAgIiIiKQorCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoJycnXAorYXN5bmMgZGVmIGYoKToKKworICBkZWYgYmF6KCk6IHBhc3MKKyAgYXN5bmMgZGVmIGJhcigpOiBwYXNzCisKKyAgYXdhaXQgPSAyJycnLCAiIiJcCisgICAgQVNZTkMgICAgICAnYXN5bmMnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBOQU1FICAgICAgICdkZWYnICAgICAgICAgKDEsIDYpICgxLCA5KQorICAgIE5BTUUgICAgICAgJ2YnICAgICAgICAgICAoMSwgMTApICgxLCAxMSkKKyAgICBPUCAgICAgICAgICcoJyAgICAgICAgICAgKDEsIDExKSAoMSwgMTIpCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICgxLCAxMikgKDEsIDEzKQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMSwgMTMpICgxLCAxNCkKKyAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgxLCAxNCkgKDEsIDE1KQorICAgIE5MICAgICAgICAgJ1xcbicgICAgICAgICAgKDIsIDApICgyLCAxKQorICAgIElOREVOVCAgICAgJyAgJyAgICAgICAgICAoMywgMCkgKDMsIDIpCisgICAgTkFNRSAgICAgICAnZGVmJyAgICAgICAgICgzLCAyKSAoMywgNSkKKyAgICBOQU1FICAgICAgICdiYXonICAgICAgICAgKDMsIDYpICgzLCA5KQorICAgIE9QICAgICAgICAgJygnICAgICAgICAgICAoMywgOSkgKDMsIDEwKQorICAgIE9QICAgICAgICAgJyknICAgICAgICAgICAoMywgMTApICgzLCAxMSkKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDMsIDExKSAoMywgMTIpCisgICAgTkFNRSAgICAgICAncGFzcycgICAgICAgICgzLCAxMykgKDMsIDE3KQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDMsIDE3KSAoMywgMTgpCisgICAgQVNZTkMgICAgICAnYXN5bmMnICAgICAgICg0LCAyKSAoNCwgNykKKyAgICBOQU1FICAgICAgICdkZWYnICAgICAgICAgKDQsIDgpICg0LCAxMSkKKyAgICBOQU1FICAgICAgICdiYXInICAgICAgICAgKDQsIDEyKSAoNCwgMTUpCisgICAgT1AgICAgICAgICAnKCcgICAgICAgICAgICg0LCAxNSkgKDQsIDE2KQorICAgIE9QICAgICAgICAgJyknICAgICAgICAgICAoNCwgMTYpICg0LCAxNykKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDQsIDE3KSAoNCwgMTgpCisgICAgTkFNRSAgICAgICAncGFzcycgICAgICAgICg0LCAxOSkgKDQsIDIzKQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDQsIDIzKSAoNCwgMjQpCisgICAgTkwgICAgICAgICAnXFxuJyAgICAgICAgICAoNSwgMCkgKDUsIDEpCisgICAgQVdBSVQgICAgICAnYXdhaXQnICAgICAgICg2LCAyKSAoNiwgNykKKyAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDYsIDgpICg2LCA5KQorICAgIE5VTUJFUiAgICAgJzInICAgICAgICAgICAoNiwgMTApICg2LCAxMSkKKyAgICBERURFTlQgICAgICcnICAgICAgICAgICAgKDcsIDApICg3LCAwKQorICAgICIiIikKKwogCiBkZWYgZGVjaXN0bXQocyk6CiAgICAgcmVzdWx0ID0gW10KQEAgLTk3MSw2ICsxMjQ3LDE3IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVuY29kaW5nX3VzZWQsIGVuY29kaW5nKQogCisgICAgZGVmIHRlc3Rfb25lbGluZV9kZWZzKHNlbGYpOgorICAgICAgICBidWYgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZSg1MDApOgorICAgICAgICAgICAgYnVmLmFwcGVuZCgnZGVmIGl7aX0oKTogcmV0dXJuIHtpfScuZm9ybWF0KGk9aSkpCisgICAgICAgIGJ1Zi5hcHBlbmQoJ09LJykKKyAgICAgICAgYnVmID0gJ1xuJy5qb2luKGJ1ZikKKworICAgICAgICAjIFRlc3QgdGhhdCA1MDAgY29uc2VxdWVudCwgb25lLWxpbmUgZGVmcyBpcyBPSworICAgICAgICB0b2tzID0gbGlzdCh0b2tlbml6ZShCeXRlc0lPKGJ1Zi5lbmNvZGUoJ3V0Zi04JykpLnJlYWRsaW5lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b2tzWy0yXS5zdHJpbmcsICdPSycpICMgWy0xXSBpcyBhbHdheXMgRU5ETUFSS0VSCisKICAgICBkZWYgYXNzZXJ0RXhhY3RUeXBlRXF1YWwoc2VsZiwgb3BzdHIsICpvcHR5cGVzKToKICAgICAgICAgdG9rZW5zID0gbGlzdCh0b2tlbml6ZShCeXRlc0lPKG9wc3RyLmVuY29kZSgndXRmLTgnKSkucmVhZGxpbmUpKQogICAgICAgICBudW1fb3B0eXBlcyA9IGxlbihvcHR5cGVzKQpAQCAtMTAyNSw2ICsxMzEyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLy8nLCB0b2tlbi5ET1VCTEVTTEFTSCkKICAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLy89JywgdG9rZW4uRE9VQkxFU0xBU0hFUVVBTCkKICAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnQCcsIHRva2VuLkFUKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCdAPScsIHRva2VuLkFURVFVQUwpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnYSoqMitiKioyPT1jKioyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FLCB0b2tlbi5ET1VCTEVTVEFSLCBOVU1CRVIsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfaTE4bi5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9pMThuLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlYWE4ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfaTE4bi5weQpAQCAtMCwwICsxLDY4IEBACisiIiJUZXN0cyB0byBjb3ZlciB0aGUgVG9vbHMvaTE4biBwYWNrYWdlIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2Zyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCB0b29sc2RpcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHRlbXBfY3dkCisKK2NsYXNzIFRlc3RfcHlnZXR0ZXh0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBmb3IgdGhlIHB5Z2V0dGV4dC5weSB0b29sIiIiCisKKyAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4odG9vbHNkaXIsJ2kxOG4nLCAncHlnZXR0ZXh0LnB5JykKKworICAgIGRlZiBnZXRfaGVhZGVyKHNlbGYsIGRhdGEpOgorICAgICAgICAiIiIgdXRpbGl0eTogcmV0dXJuIHRoZSBoZWFkZXIgb2YgYSAucG8gZmlsZSBhcyBhIGRpY3Rpb25hcnkgIiIiCisgICAgICAgIGhlYWRlcnMgPSB7fQorICAgICAgICBmb3IgbGluZSBpbiBkYXRhLnNwbGl0KCdcbicpOgorICAgICAgICAgICAgaWYgbm90IGxpbmUgb3IgbGluZS5zdGFydHN3aXRoKCgnIycsICdtc2dpZCcsJ21zZ3N0cicpKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoJyInKQorICAgICAgICAgICAga2V5LCB2YWwgPSBsaW5lLnNwbGl0KCc6JywxKQorICAgICAgICAgICAgaGVhZGVyc1trZXldID0gdmFsLnN0cmlwKCkKKyAgICAgICAgcmV0dXJuIGhlYWRlcnMKKworICAgIGRlZiB0ZXN0X2hlYWRlcihzZWxmKToKKyAgICAgICAgIiIiTWFrZSBzdXJlIHRoZSByZXF1aXJlZCBmaWVsZHMgYXJlIGluIHRoZSBoZWFkZXIsIGFjY29yZGluZyB0bzoKKyAgICAgICAgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dldHRleHQvbWFudWFsL2dldHRleHQuaHRtbCNIZWFkZXItRW50cnkKKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggdGVtcF9jd2QoTm9uZSkgYXMgY3dkOgorICAgICAgICAgICAgYXNzZXJ0X3B5dGhvbl9vayhzZWxmLnNjcmlwdCkKKyAgICAgICAgICAgIHdpdGggb3BlbignbWVzc2FnZXMucG90JykgYXMgZnA6CisgICAgICAgICAgICAgICAgZGF0YSA9IGZwLnJlYWQoKQorICAgICAgICAgICAgaGVhZGVyID0gc2VsZi5nZXRfaGVhZGVyKGRhdGEpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIlByb2plY3QtSWQtVmVyc2lvbiIsIGhlYWRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIlBPVC1DcmVhdGlvbi1EYXRlIiwgaGVhZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiUE8tUmV2aXNpb24tRGF0ZSIsIGhlYWRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIkxhc3QtVHJhbnNsYXRvciIsIGhlYWRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIkxhbmd1YWdlLVRlYW0iLCBoZWFkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJNSU1FLVZlcnNpb24iLCBoZWFkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJDb250ZW50LVR5cGUiLCBoZWFkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIiwgaGVhZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiR2VuZXJhdGVkLUJ5IiwgaGVhZGVyKQorCisgICAgICAgICAgICAjIG5vdCBjbGVhciBpZiB0aGVzZSBzaG91bGQgYmUgcmVxdWlyZWQgaW4gUE9UICh0ZW1wbGF0ZSkgZmlsZXMKKyAgICAgICAgICAgICNzZWxmLmFzc2VydEluKCJSZXBvcnQtTXNnaWQtQnVncy1UbyIsIGhlYWRlcikKKyAgICAgICAgICAgICNzZWxmLmFzc2VydEluKCJMYW5ndWFnZSIsIGhlYWRlcikKKworICAgICAgICAgICAgIyJQbHVyYWwtRm9ybXMiIGlzIG9wdGlvbmFsCisKKworICAgIGRlZiB0ZXN0X1BPVF9DcmVhdGlvbl9EYXRlKHNlbGYpOgorICAgICAgICAiIiIgTWF0Y2ggdGhlIGRhdGUgZm9ybWF0IGZyb20geGdldHRleHQgZm9yIFBPVC1DcmVhdGlvbi1EYXRlICIiIgorICAgICAgICBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorICAgICAgICB3aXRoIHRlbXBfY3dkKE5vbmUpIGFzIGN3ZDoKKyAgICAgICAgICAgIGFzc2VydF9weXRob25fb2soc2VsZi5zY3JpcHQpCisgICAgICAgICAgICB3aXRoIG9wZW4oJ21lc3NhZ2VzLnBvdCcpIGFzIGZwOgorICAgICAgICAgICAgICAgIGRhdGEgPSBmcC5yZWFkKCkKKyAgICAgICAgICAgIGhlYWRlciA9IHNlbGYuZ2V0X2hlYWRlcihkYXRhKQorICAgICAgICAgICAgY3JlYXRpb25EYXRlID0gaGVhZGVyWydQT1QtQ3JlYXRpb24tRGF0ZSddCisKKyAgICAgICAgICAgICMgcGVlbCBvZmYgdGhlIGVzY2FwZWQgbmV3bGluZSBhdCB0aGUgZW5kIG9mIHN0cmluZworICAgICAgICAgICAgaWYgY3JlYXRpb25EYXRlLmVuZHN3aXRoKCdcXG4nKToKKyAgICAgICAgICAgICAgICBjcmVhdGlvbkRhdGUgPSBjcmVhdGlvbkRhdGVbOi1sZW4oJ1xcbicpXQorCisgICAgICAgICAgICAjIFRoaXMgd2lsbCByYWlzZSBpZiB0aGUgZGF0ZSBmb3JtYXQgZG9lcyBub3QgZXhhY3RseSBtYXRjaC4KKyAgICAgICAgICAgIGRhdGV0aW1lLnN0cnB0aW1lKGNyZWF0aW9uRGF0ZSwgJyVZLSVtLSVkICVIOiVNJXonKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X21kNXN1bS5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9tZDVzdW0ucHkKaW5kZXggNTllYTE0OS4uMTMwNTI5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X21kNXN1bS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfbWQ1c3VtLnB5CkBAIC00LDcgKzQsNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogCiBmcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2NyaXB0c2RpciwgaW1wb3J0X3Rvb2wsIHNraXBfaWZfbWlzc2luZwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcGluZGVudC5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9waW5kZW50LnB5CmluZGV4IDE0YTBhYTIuLmUyOTNiYzggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9waW5kZW50LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9waW5kZW50LnB5CkBAIC02LDcgKzYsNyBAQAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0ZXh0d3JhcAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogCiBmcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2NyaXB0c2Rpciwgc2tpcF9pZl9taXNzaW5nCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9yZWluZGVudC5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9yZWluZGVudC5weQppbmRleCA0NWNlYmY3Li5kN2MyMGUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcmVpbmRlbnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3JlaW5kZW50LnB5CkBAIC02LDcgKzYsNyBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKIAogZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHNjcmlwdHNkaXIsIHNraXBfaWZfbWlzc2luZwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5IGIvTGliL3Rlc3QvdGVzdF90cmFjZS5weQppbmRleCBlZTMzOTg2Li4wM2RmZjg0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkKQEAgLTksMTIgKzksMTEgQEAKIAogZnJvbSB0ZXN0LnRyYWNlZG1vZHVsZXMgaW1wb3J0IHRlc3Rtb2QKIAotCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVdGlsaXRpZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jCiAKIGRlZiBmaXhfZXh0X3B5KGZpbGVuYW1lKToKLSAgICAiIiJHaXZlbiBhIC5weWMvLnB5byBmaWxlbmFtZSBjb252ZXJ0cyBpdCB0byB0aGUgYXBwcm9wcmlhdGUgLnB5IiIiCi0gICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoKCcucHljJywgJy5weW8nKSk6CisgICAgIiIiR2l2ZW4gYSAucHljIGZpbGVuYW1lIGNvbnZlcnRzIGl0IHRvIHRoZSBhcHByb3ByaWF0ZSAucHkiIiIKKyAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgnLnB5YycpOgogICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lWzotMV0KICAgICByZXR1cm4gZmlsZW5hbWUKIApAQCAtMjIzLDYgKzIyMiwxMSBAQAogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKICAgICAgICAgc2VsZi50cmFjZXIgPSBUcmFjZShjb3VudD0wLCB0cmFjZT0wLCBjb3VudGZ1bmNzPTEpCiAgICAgICAgIHNlbGYuZmlsZW1vZCA9IG15X2ZpbGVfYW5kX21vZG5hbWUoKQorICAgICAgICBzZWxmLl9zYXZlZF90cmFjZWZ1bmMgPSBzeXMuZ2V0dHJhY2UoKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9zYXZlZF90cmFjZWZ1bmMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzeXMuc2V0dHJhY2Uoc2VsZi5fc2F2ZWRfdHJhY2VmdW5jKQogCiAgICAgZGVmIHRlc3Rfc2ltcGxlX2NhbGxlcihzZWxmKToKICAgICAgICAgc2VsZi50cmFjZXIucnVuZnVuYyh0cmFjZWRfZnVuY19zaW1wbGVfY2FsbGVyLCAxKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQppbmRleCBkNmM5ZGYyLi5iNzY5NWQ2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQpAQCAtMSwxNSArMSwyNCBAQAogIiIiVGVzdCBjYXNlcyBmb3IgdHJhY2ViYWNrIG1vZHVsZSIiIgogCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgcmUKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIEVycm9yLCBjYXB0dXJlZF9vdXRwdXQKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHVubGluaywgY3B5dGhvbl9vbmx5Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIEVycm9yLCBjYXB0dXJlZF9vdXRwdXQsIHVubGluaywgY3B5dGhvbl9vbmx5Citmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitpbXBvcnQgdGV4dHdyYXAKIAogaW1wb3J0IHRyYWNlYmFjawogCiAKK3Rlc3RfY29kZSA9IG5hbWVkdHVwbGUoJ2NvZGUnLCBbJ2NvX2ZpbGVuYW1lJywgJ2NvX25hbWUnXSkKK3Rlc3RfZnJhbWUgPSBuYW1lZHR1cGxlKCdmcmFtZScsIFsnZl9jb2RlJywgJ2ZfZ2xvYmFscycsICdmX2xvY2FscyddKQordGVzdF90YiA9IG5hbWVkdHVwbGUoJ3RiJywgWyd0Yl9mcmFtZScsICd0Yl9saW5lbm8nLCAndGJfbmV4dCddKQorCisKIGNsYXNzIFN5bnRheFRyYWNlYmFja0Nhc2VzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAjIEZvciBub3csIGEgdmVyeSBtaW5pbWFsIHNldCBvZiB0ZXN0cy4gIEkgd2FudCB0byBiZSBzdXJlIHRoYXQKICAgICAjIGZvcm1hdHRpbmcgb2YgU3ludGF4RXJyb3JzIHdvcmtzIGJhc2VkIG9uIGNoYW5nZXMgZm9yIDIuMS4KQEAgLTkyLDkgKzEwMSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVyciksIDEpCiAgICAgICAgIHN0cl92YWx1ZSA9ICc8dW5wcmludGFibGUgJXMgb2JqZWN0PicgJSBYLl9fbmFtZV9fCiAgICAgICAgIGlmIFguX19tb2R1bGVfXyBpbiAoJ19fbWFpbl9fJywgJ2J1aWx0aW5zJyk6Ci0gICAgICAgICAgICBzdHJfbmFtZSA9IFguX19uYW1lX18KKyAgICAgICAgICAgIHN0cl9uYW1lID0gWC5fX3F1YWxuYW1lX18KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN0cl9uYW1lID0gJy4nLmpvaW4oW1guX19tb2R1bGVfXywgWC5fX25hbWVfX10pCisgICAgICAgICAgICBzdHJfbmFtZSA9ICcuJy5qb2luKFtYLl9fbW9kdWxlX18sIFguX19xdWFsbmFtZV9fXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJbMF0sICIlczogJXNcbiIgJSAoc3RyX25hbWUsIHN0cl92YWx1ZSkpCiAKICAgICBkZWYgdGVzdF93aXRob3V0X2V4Y2VwdGlvbihzZWxmKToKQEAgLTE2OSw2ICsxNzgsNDQgQEAKICAgICAgICAgIyBJc3N1ZSAjMTg5NjA6IGNvZGluZyBzcGVjIHNob3VsZCBoYXMgbm8gZWZmZWN0CiAgICAgICAgIGRvX3Rlc3QoIjBcbiMgY29kaW5nOiBHQktcbiIsICJoXHhlOSBobyIsICd1dGYtOCcsIDUpCiAKKyAgICBkZWYgdGVzdF9wcmludF90cmFjZWJhY2tfYXRfZXhpdChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjI1OTk6IEVuc3VyZSB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIHVzZSB0aGUgdHJhY2ViYWNrIG1vZHVsZQorICAgICAgICAjIHRvIGRpc3BsYXkgYW4gZXhjZXB0aW9uIGF0IFB5dGhvbiBleGl0CisgICAgICAgIGNvZGUgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCisKKyAgICAgICAgICAgIGNsYXNzIFByaW50RXhjZXB0aW9uQXRFeGl0KG9iamVjdCk6CisgICAgICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gMSAvIDAKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgICAgICAgICAgICAgIyBzZWxmLmV4Y19pbmZvWzFdICh0cmFjZWJhY2spIGNvbnRhaW5zIGZyYW1lczoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgZXhwbGljaXRseSBjbGVhciB0aGUgcmVmZXJlbmNlIHRvIHNlbGYgaW4gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICMgZnJhbWUgdG8gYnJlYWsgYSByZWZlcmVuY2UgY3ljbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYgPSBOb25lCisKKyAgICAgICAgICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4Y2VwdGlvbigqc2VsZi5leGNfaW5mbykKKworICAgICAgICAgICAgIyBLZWVwIGEgcmVmZXJlbmNlIGluIHRoZSBtb2R1bGUgbmFtZXNwYWNlIHRvIGNhbGwgdGhlIGRlc3RydWN0b3IKKyAgICAgICAgICAgICMgd2hlbiB0aGUgbW9kdWxlIGlzIHVubG9hZGVkCisgICAgICAgICAgICBvYmogPSBQcmludEV4Y2VwdGlvbkF0RXhpdCgpCisgICAgICAgICIiIikKKyAgICAgICAgcmMsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorICAgICAgICBleHBlY3RlZCA9IFtiJ1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTonLAorICAgICAgICAgICAgICAgICAgICBiJyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDgsIGluIF9faW5pdF9fJywKKyAgICAgICAgICAgICAgICAgICAgYidaZXJvRGl2aXNpb25FcnJvcjogZGl2aXNpb24gYnkgemVybyddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RkZXJyLnNwbGl0bGluZXMoKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9wcmludF9leGNlcHRpb24oc2VsZik6CisgICAgICAgIG91dHB1dCA9IFN0cmluZ0lPKCkKKyAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4Y2VwdGlvbigKKyAgICAgICAgICAgIEV4Y2VwdGlvbiwgRXhjZXB0aW9uKCJwcm9qZWN0b3IiKSwgTm9uZSwgZmlsZT1vdXRwdXQKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5nZXR2YWx1ZSgpLCAiRXhjZXB0aW9uOiBwcm9qZWN0b3JcbiIpCisKIAogY2xhc3MgVHJhY2ViYWNrRm9ybWF0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC00MzksNiArNDg2LDEyNiBAQAogICAgICAgICByZXR1cm4gcy5nZXR2YWx1ZSgpCiAKIAorY2xhc3MgTGltaXRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAnJycgVGVzdHMgZm9yIGxpbWl0IGFyZ3VtZW50LgorICAgICAgICBJdCdzIGVub3VnaCB0byB0ZXN0IGV4dGFjdF90YiwgZXh0cmFjdF9zdGFjayBhbmQgZm9ybWF0X2V4Y2VwdGlvbiAnJycKKworICAgIGRlZiBsYXN0X3JhaXNlczEoc2VsZik6CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignTGFzdCByYWlzZWQnKQorCisgICAgZGVmIGxhc3RfcmFpc2VzMihzZWxmKToKKyAgICAgICAgc2VsZi5sYXN0X3JhaXNlczEoKQorCisgICAgZGVmIGxhc3RfcmFpc2VzMyhzZWxmKToKKyAgICAgICAgc2VsZi5sYXN0X3JhaXNlczIoKQorCisgICAgZGVmIGxhc3RfcmFpc2VzNChzZWxmKToKKyAgICAgICAgc2VsZi5sYXN0X3JhaXNlczMoKQorCisgICAgZGVmIGxhc3RfcmFpc2VzNShzZWxmKToKKyAgICAgICAgc2VsZi5sYXN0X3JhaXNlczQoKQorCisgICAgZGVmIGxhc3RfcmV0dXJuc19mcmFtZTEoc2VsZik6CisgICAgICAgIHJldHVybiBzeXMuX2dldGZyYW1lKCkKKworICAgIGRlZiBsYXN0X3JldHVybnNfZnJhbWUyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5sYXN0X3JldHVybnNfZnJhbWUxKCkKKworICAgIGRlZiBsYXN0X3JldHVybnNfZnJhbWUzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5sYXN0X3JldHVybnNfZnJhbWUyKCkKKworICAgIGRlZiBsYXN0X3JldHVybnNfZnJhbWU0KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5sYXN0X3JldHVybnNfZnJhbWUzKCkKKworICAgIGRlZiBsYXN0X3JldHVybnNfZnJhbWU1KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5sYXN0X3JldHVybnNfZnJhbWU0KCkKKworICAgIGRlZiB0ZXN0X2V4dHJhY3Rfc3RhY2soc2VsZik6CisgICAgICAgIGZyYW1lID0gc2VsZi5sYXN0X3JldHVybnNfZnJhbWU1KCkKKyAgICAgICAgZGVmIGV4dHJhY3QoKiprd2FyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIHRyYWNlYmFjay5leHRyYWN0X3N0YWNrKGZyYW1lLCAqKmt3YXJncykKKyAgICAgICAgZGVmIGFzc2VydEVxdWFsRXhjZXB0KGFjdHVhbCwgZXhwZWN0ZWQsIGlnbm9yZSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbFs6aWdub3JlXSwgZXhwZWN0ZWRbOmlnbm9yZV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbFtpZ25vcmUrMTpdLCBleHBlY3RlZFtpZ25vcmUrMTpdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWN0dWFsKSwgbGVuKGV4cGVjdGVkKSkKKworICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHN5cywgJ3RyYWNlYmFja2xpbWl0JywgMTAwMCk6CisgICAgICAgICAgICBub2xpbSA9IGV4dHJhY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihub2xpbSksIDUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9MiksIG5vbGltWy0yOl0pCisgICAgICAgICAgICBhc3NlcnRFcXVhbEV4Y2VwdChleHRyYWN0KGxpbWl0PTEwMCksIG5vbGltWy0xMDA6XSwgLTUtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0tMiksIG5vbGltWzoyXSkKKyAgICAgICAgICAgIGFzc2VydEVxdWFsRXhjZXB0KGV4dHJhY3QobGltaXQ9LTEwMCksIG5vbGltWzoxMDBdLCBsZW4obm9saW0pLTUtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0wKSwgW10pCisgICAgICAgICAgICBkZWwgc3lzLnRyYWNlYmFja2xpbWl0CisgICAgICAgICAgICBhc3NlcnRFcXVhbEV4Y2VwdChleHRyYWN0KCksIG5vbGltLCAtNS0xKQorICAgICAgICAgICAgc3lzLnRyYWNlYmFja2xpbWl0ID0gMgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KCksIG5vbGltWy0yOl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9MyksIG5vbGltWy0zOl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9LTMpLCBub2xpbVs6M10pCisgICAgICAgICAgICBzeXMudHJhY2ViYWNrbGltaXQgPSAwCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QoKSwgW10pCisgICAgICAgICAgICBzeXMudHJhY2ViYWNrbGltaXQgPSAtMQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KCksIFtdKQorCisgICAgZGVmIHRlc3RfZXh0cmFjdF90YihzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5sYXN0X3JhaXNlczUoKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdGIgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICBkZWYgZXh0cmFjdCgqKmt3YXJncyk6CisgICAgICAgICAgICByZXR1cm4gdHJhY2ViYWNrLmV4dHJhY3RfdGIodGIsICoqa3dhcmdzKQorCisgICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIoc3lzLCAndHJhY2ViYWNrbGltaXQnLCAxMDAwKToKKyAgICAgICAgICAgIG5vbGltID0gZXh0cmFjdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihub2xpbSksIDUrMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0yKSwgbm9saW1bOjJdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PTEwKSwgbm9saW0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9LTIpLCBub2xpbVstMjpdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PS0xMCksIG5vbGltKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PTApLCBbXSkKKyAgICAgICAgICAgIGRlbCBzeXMudHJhY2ViYWNrbGltaXQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdCgpLCBub2xpbSkKKyAgICAgICAgICAgIHN5cy50cmFjZWJhY2tsaW1pdCA9IDIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdCgpLCBub2xpbVs6Ml0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9MyksIG5vbGltWzozXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0tMyksIG5vbGltWy0zOl0pCisgICAgICAgICAgICBzeXMudHJhY2ViYWNrbGltaXQgPSAwCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QoKSwgW10pCisgICAgICAgICAgICBzeXMudHJhY2ViYWNrbGltaXQgPSAtMQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KCksIFtdKQorCisgICAgZGVmIHRlc3RfZm9ybWF0X2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5sYXN0X3JhaXNlczUoKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdGIgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAjIFsxOi0xXSB0byBleGNsdWRlICJUcmFjZWJhY2sgKC4uLikiIGhlYWRlciBhbmQKKyAgICAgICAgIyBleGNlcHRpb24gdHlwZSBhbmQgdmFsdWUKKyAgICAgICAgZGVmIGV4dHJhY3QoKiprd2FyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uKGV4Y190eXBlLCBleGNfdmFsdWUsIHRiLCAqKmt3YXJncylbMTotMV0KKworICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHN5cywgJ3RyYWNlYmFja2xpbWl0JywgMTAwMCk6CisgICAgICAgICAgICBub2xpbSA9IGV4dHJhY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obm9saW0pLCA1KzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9MiksIG5vbGltWzoyXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0xMCksIG5vbGltKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PS0yKSwgbm9saW1bLTI6XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0tMTApLCBub2xpbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0wKSwgW10pCisgICAgICAgICAgICBkZWwgc3lzLnRyYWNlYmFja2xpbWl0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QoKSwgbm9saW0pCisgICAgICAgICAgICBzeXMudHJhY2ViYWNrbGltaXQgPSAyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QoKSwgbm9saW1bOjJdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PTMpLCBub2xpbVs6M10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9LTMpLCBub2xpbVstMzpdKQorICAgICAgICAgICAgc3lzLnRyYWNlYmFja2xpbWl0ID0gMAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KCksIFtdKQorICAgICAgICAgICAgc3lzLnRyYWNlYmFja2xpbWl0ID0gLTEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdCgpLCBbXSkKKworCiBjbGFzcyBNaXNjVHJhY2ViYWNrQ2FzZXModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMKICAgICAjIENoZWNrIG5vbi1wcmludGluZyBmdW5jdGlvbnMgaW4gdHJhY2ViYWNrIG1vZHVsZQpAQCAtNDc2LDExICs2NDMsMjc5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Wy0yOl0sIFsKICAgICAgICAgICAgIChfX2ZpbGVfXywgbGluZW5vKzIsICd0ZXN0X2V4dHJhY3Rfc3RhY2snLCAncmVzdWx0ID0gZXh0cmFjdCgpJyksCiAgICAgICAgICAgICAoX19maWxlX18sIGxpbmVubysxLCAnZXh0cmFjdCcsICdyZXR1cm4gdHJhY2ViYWNrLmV4dHJhY3Rfc3RhY2soKScpLAotICAgICAgICBdKQorICAgICAgICAgICAgXSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQorY2xhc3MgVGVzdEZyYW1lKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKKyAgICAgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQorICAgICAgICBsaW5lY2FjaGUubGF6eWNhY2hlKCJmIiwgZ2xvYmFscygpKQorICAgICAgICBmID0gdHJhY2ViYWNrLkZyYW1lU3VtbWFyeSgiZiIsIDEsICJkdW1teSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiwKKyAgICAgICAgICAgICgiZiIsIDEsICJkdW1teSIsICciIiJUZXN0IGNhc2VzIGZvciB0cmFjZWJhY2sgbW9kdWxlIiIiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUoZiksCisgICAgICAgICAgICAoImYiLCAxLCAiZHVtbXkiLCAnIiIiVGVzdCBjYXNlcyBmb3IgdHJhY2ViYWNrIG1vZHVsZSIiIicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYsIHRyYWNlYmFjay5GcmFtZVN1bW1hcnkoImYiLCAxLCAiZHVtbXkiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCB0dXBsZShmKSkKKyAgICAgICAgIyBTaW5jZSB0dXBsZS5fX2VxX18gZG9lc24ndCBzdXBwb3J0IEZyYW1lU3VtbWFyeSwgdGhlIGVxdWFsaXR5CisgICAgICAgICMgb3BlcmF0b3IgZmFsbGJhY2tzIHRvIEZyYW1lU3VtbWFyeS5fX2VxX18uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUoZiksIGYpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGYubG9jYWxzKQorCisgICAgZGVmIHRlc3RfbGF6eV9saW5lcyhzZWxmKToKKyAgICAgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQorICAgICAgICBmID0gdHJhY2ViYWNrLkZyYW1lU3VtbWFyeSgiZiIsIDEsICJkdW1teSIsIGxvb2t1cF9saW5lPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIGYuX2xpbmUpCisgICAgICAgIGxpbmVjYWNoZS5sYXp5Y2FjaGUoImYiLCBnbG9iYWxzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAnIiIiVGVzdCBjYXNlcyBmb3IgdHJhY2ViYWNrIG1vZHVsZSIiIicsCisgICAgICAgICAgICBmLmxpbmUpCisKKyAgICBkZWYgdGVzdF9leHBsaWNpdF9saW5lKHNlbGYpOgorICAgICAgICBmID0gdHJhY2ViYWNrLkZyYW1lU3VtbWFyeSgiZiIsIDEsICJkdW1teSIsIGxpbmU9ImxpbmUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJsaW5lIiwgZi5saW5lKQorCisKK2NsYXNzIFRlc3RTdGFjayh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF93YWxrX3N0YWNrKHNlbGYpOgorICAgICAgICBzID0gbGlzdCh0cmFjZWJhY2sud2Fsa19zdGFjayhOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihzKSwgMTApCisKKyAgICBkZWYgdGVzdF93YWxrX3RiKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICAxLzAKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIF8sIF8sIHRiID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgcyA9IGxpc3QodHJhY2ViYWNrLndhbGtfdGIodGIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzKSwgMSkKKworICAgIGRlZiB0ZXN0X2V4dHJhY3Rfc3RhY2soc2VsZik6CisgICAgICAgIHMgPSB0cmFjZWJhY2suU3RhY2tTdW1tYXJ5LmV4dHJhY3QodHJhY2ViYWNrLndhbGtfc3RhY2soTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzLCB0cmFjZWJhY2suU3RhY2tTdW1tYXJ5KQorCisgICAgZGVmIHRlc3RfZXh0cmFjdF9zdGFja19saW1pdChzZWxmKToKKyAgICAgICAgcyA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZXh0cmFjdCh0cmFjZWJhY2sud2Fsa19zdGFjayhOb25lKSwgbGltaXQ9NSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocyksIDUpCisKKyAgICBkZWYgdGVzdF9leHRyYWN0X3N0YWNrX2xvb2t1cF9saW5lcyhzZWxmKToKKyAgICAgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQorICAgICAgICBsaW5lY2FjaGUudXBkYXRlY2FjaGUoJy9mb28ucHknLCBnbG9iYWxzKCkpCisgICAgICAgIGMgPSB0ZXN0X2NvZGUoJy9mb28ucHknLCAnbWV0aG9kJykKKyAgICAgICAgZiA9IHRlc3RfZnJhbWUoYywgTm9uZSwgTm9uZSkKKyAgICAgICAgcyA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZXh0cmFjdChpdGVyKFsoZiwgNildKSwgbG9va3VwX2xpbmVzPVRydWUpCisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWzBdLmxpbmUsICJpbXBvcnQgc3lzIikKKworICAgIGRlZiB0ZXN0X2V4dHJhY3Rfc3RhY2t1cF9kZWZlcnJlZF9sb29rdXBfbGluZXMoc2VsZik6CisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgYyA9IHRlc3RfY29kZSgnL2Zvby5weScsICdtZXRob2QnKQorICAgICAgICBmID0gdGVzdF9mcmFtZShjLCBOb25lLCBOb25lKQorICAgICAgICBzID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5leHRyYWN0KGl0ZXIoWyhmLCA2KV0pLCBsb29rdXBfbGluZXM9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoe30sIGxpbmVjYWNoZS5jYWNoZSkKKyAgICAgICAgbGluZWNhY2hlLnVwZGF0ZWNhY2hlKCcvZm9vLnB5JywgZ2xvYmFscygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbMF0ubGluZSwgImltcG9ydCBzeXMiKQorCisgICAgZGVmIHRlc3RfZnJvbV9saXN0KHNlbGYpOgorICAgICAgICBzID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5mcm9tX2xpc3QoWygnZm9vLnB5JywgMSwgJ2ZyZWQnLCAnbGluZScpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFsnICBGaWxlICJmb28ucHkiLCBsaW5lIDEsIGluIGZyZWRcbiAgICBsaW5lXG4nXSwKKyAgICAgICAgICAgIHMuZm9ybWF0KCkpCisKKyAgICBkZWYgdGVzdF9mcm9tX2xpc3RfZWRpdGVkX3N0YWNrKHNlbGYpOgorICAgICAgICBzID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5mcm9tX2xpc3QoWygnZm9vLnB5JywgMSwgJ2ZyZWQnLCAnbGluZScpXSkKKyAgICAgICAgc1swXSA9ICgnZm9vLnB5JywgMiwgJ2ZyZWQnLCAnbGluZScpCisgICAgICAgIHMyID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5mcm9tX2xpc3QocykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFsnICBGaWxlICJmb28ucHkiLCBsaW5lIDIsIGluIGZyZWRcbiAgICBsaW5lXG4nXSwKKyAgICAgICAgICAgIHMyLmZvcm1hdCgpKQorCisgICAgZGVmIHRlc3RfZm9ybWF0X3Ntb2tlKHNlbGYpOgorICAgICAgICAjIEZvciBkZXRhaWxlZCB0ZXN0cyBzZWUgdGhlIGZvcm1hdF9saXN0IHRlc3RzLCB3aGljaCBjb25zdW1lIHRoZSBzYW1lCisgICAgICAgICMgY29kZS4KKyAgICAgICAgcyA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZnJvbV9saXN0KFsoJ2Zvby5weScsIDEsICdmcmVkJywgJ2xpbmUnKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBbJyAgRmlsZSAiZm9vLnB5IiwgbGluZSAxLCBpbiBmcmVkXG4gICAgbGluZVxuJ10sCisgICAgICAgICAgICBzLmZvcm1hdCgpKQorCisgICAgZGVmIHRlc3RfbG9jYWxzKHNlbGYpOgorICAgICAgICBsaW5lY2FjaGUudXBkYXRlY2FjaGUoJy9mb28ucHknLCBnbG9iYWxzKCkpCisgICAgICAgIGMgPSB0ZXN0X2NvZGUoJy9mb28ucHknLCAnbWV0aG9kJykKKyAgICAgICAgZiA9IHRlc3RfZnJhbWUoYywgZ2xvYmFscygpLCB7J3NvbWV0aGluZyc6IDF9KQorICAgICAgICBzID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5leHRyYWN0KGl0ZXIoWyhmLCA2KV0pLCBjYXB0dXJlX2xvY2Fscz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbMF0ubG9jYWxzLCB7J3NvbWV0aGluZyc6ICcxJ30pCisKKyAgICBkZWYgdGVzdF9ub19sb2NhbHMoc2VsZik6CisgICAgICAgIGxpbmVjYWNoZS51cGRhdGVjYWNoZSgnL2Zvby5weScsIGdsb2JhbHMoKSkKKyAgICAgICAgYyA9IHRlc3RfY29kZSgnL2Zvby5weScsICdtZXRob2QnKQorICAgICAgICBmID0gdGVzdF9mcmFtZShjLCBnbG9iYWxzKCksIHsnc29tZXRoaW5nJzogMX0pCisgICAgICAgIHMgPSB0cmFjZWJhY2suU3RhY2tTdW1tYXJ5LmV4dHJhY3QoaXRlcihbKGYsIDYpXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1swXS5sb2NhbHMsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9mb3JtYXRfbG9jYWxzKHNlbGYpOgorICAgICAgICBkZWYgc29tZV9pbm5lcihrLCB2KToKKyAgICAgICAgICAgIGEgPSAxCisgICAgICAgICAgICBiID0gMgorICAgICAgICAgICAgcmV0dXJuIHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZXh0cmFjdCgKKyAgICAgICAgICAgICAgICB0cmFjZWJhY2sud2Fsa19zdGFjayhOb25lKSwgY2FwdHVyZV9sb2NhbHM9VHJ1ZSwgbGltaXQ9MSkKKyAgICAgICAgcyA9IHNvbWVfaW5uZXIoMywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFsnICBGaWxlICIlcyIsIGxpbmUgJWQsIGluIHNvbWVfaW5uZXJcbicKKyAgICAgICAgICAgICAnICAgIHRyYWNlYmFjay53YWxrX3N0YWNrKE5vbmUpLCBjYXB0dXJlX2xvY2Fscz1UcnVlLCBsaW1pdD0xKVxuJworICAgICAgICAgICAgICcgICAgYSA9IDFcbicKKyAgICAgICAgICAgICAnICAgIGIgPSAyXG4nCisgICAgICAgICAgICAgJyAgICBrID0gM1xuJworICAgICAgICAgICAgICcgICAgdiA9IDRcbicgJSAoX19maWxlX18sIHNvbWVfaW5uZXIuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyA0KQorICAgICAgICAgICAgXSwgcy5mb3JtYXQoKSkKKworY2xhc3MgVGVzdFRyYWNlYmFja0V4Y2VwdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9zbW9rZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgMS8wCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBleGNfaW5mbyA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICBleGMgPSB0cmFjZWJhY2suVHJhY2ViYWNrRXhjZXB0aW9uKCpleGNfaW5mbykKKyAgICAgICAgICAgIGV4cGVjdGVkX3N0YWNrID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5leHRyYWN0KAorICAgICAgICAgICAgICAgIHRyYWNlYmFjay53YWxrX3RiKGV4Y19pbmZvWzJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBleGMuX19jYXVzZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIGV4Yy5fX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgZXhjLl9fc3VwcHJlc3NfY29udGV4dF9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3N0YWNrLCBleGMuc3RhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjX2luZm9bMF0sIGV4Yy5leGNfdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXhjX2luZm9bMV0pLCBzdHIoZXhjKSkKKworICAgIGRlZiB0ZXN0X2Zyb21fZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICAjIENoZWNrIGFsbCB0aGUgcGFyYW1ldGVycyBhcmUgYWNjZXB0ZWQuCisgICAgICAgIGRlZiBmb28oKToKKyAgICAgICAgICAgIDEvMAorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb28oKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBleGNfaW5mbyA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICBzZWxmLmV4cGVjdGVkX3N0YWNrID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5leHRyYWN0KAorICAgICAgICAgICAgICAgIHRyYWNlYmFjay53YWxrX3RiKGV4Y19pbmZvWzJdKSwgbGltaXQ9MSwgbG9va3VwX2xpbmVzPUZhbHNlLAorICAgICAgICAgICAgICAgIGNhcHR1cmVfbG9jYWxzPVRydWUpCisgICAgICAgICAgICBzZWxmLmV4YyA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24uZnJvbV9leGNlcHRpb24oCisgICAgICAgICAgICAgICAgZSwgbGltaXQ9MSwgbG9va3VwX2xpbmVzPUZhbHNlLCBjYXB0dXJlX2xvY2Fscz1UcnVlKQorICAgICAgICBleHBlY3RlZF9zdGFjayA9IHNlbGYuZXhwZWN0ZWRfc3RhY2sKKyAgICAgICAgZXhjID0gc2VsZi5leGMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBleGMuX19jYXVzZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIGV4Yy5fX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgZXhjLl9fc3VwcHJlc3NfY29udGV4dF9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3N0YWNrLCBleGMuc3RhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjX2luZm9bMF0sIGV4Yy5leGNfdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXhjX2luZm9bMV0pLCBzdHIoZXhjKSkKKworICAgIGRlZiB0ZXN0X2NhdXNlKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgMS8wCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGV4Y19pbmZvX2NvbnRleHQgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgICAgIGV4Y19jb250ZXh0ID0gdHJhY2ViYWNrLlRyYWNlYmFja0V4Y2VwdGlvbigqZXhjX2luZm9fY29udGV4dCkKKyAgICAgICAgICAgICAgICBjYXVzZSA9IEV4Y2VwdGlvbigiY2F1c2UiKQorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigidWggb2giKSBmcm9tIGNhdXNlCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBleGNfaW5mbyA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICBleGMgPSB0cmFjZWJhY2suVHJhY2ViYWNrRXhjZXB0aW9uKCpleGNfaW5mbykKKyAgICAgICAgICAgIGV4cGVjdGVkX3N0YWNrID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5leHRyYWN0KAorICAgICAgICAgICAgICAgIHRyYWNlYmFjay53YWxrX3RiKGV4Y19pbmZvWzJdKSkKKyAgICAgICAgZXhjX2NhdXNlID0gdHJhY2ViYWNrLlRyYWNlYmFja0V4Y2VwdGlvbihFeGNlcHRpb24sIGNhdXNlLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Y19jYXVzZSwgZXhjLl9fY2F1c2VfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGNfY29udGV4dCwgZXhjLl9fY29udGV4dF9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGV4Yy5fX3N1cHByZXNzX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9zdGFjaywgZXhjLnN0YWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Y19pbmZvWzBdLCBleGMuZXhjX3R5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGV4Y19pbmZvWzFdKSwgc3RyKGV4YykpCisKKyAgICBkZWYgdGVzdF9jb250ZXh0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgMS8wCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGV4Y19pbmZvX2NvbnRleHQgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgICAgIGV4Y19jb250ZXh0ID0gdHJhY2ViYWNrLlRyYWNlYmFja0V4Y2VwdGlvbigqZXhjX2luZm9fY29udGV4dCkKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oInVoIG9oIikKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIGV4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgIGV4YyA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oKmV4Y19pbmZvKQorICAgICAgICAgICAgZXhwZWN0ZWRfc3RhY2sgPSB0cmFjZWJhY2suU3RhY2tTdW1tYXJ5LmV4dHJhY3QoCisgICAgICAgICAgICAgICAgdHJhY2ViYWNrLndhbGtfdGIoZXhjX2luZm9bMl0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIGV4Yy5fX2NhdXNlX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjX2NvbnRleHQsIGV4Yy5fX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgZXhjLl9fc3VwcHJlc3NfY29udGV4dF9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3N0YWNrLCBleGMuc3RhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjX2luZm9bMF0sIGV4Yy5leGNfdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXhjX2luZm9bMV0pLCBzdHIoZXhjKSkKKworICAgIGRlZiB0ZXN0X2xpbWl0KHNlbGYpOgorICAgICAgICBkZWYgcmVjdXJzZShuKToKKyAgICAgICAgICAgIGlmIG46CisgICAgICAgICAgICAgICAgcmVjdXJzZShuLTEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIDEvMAorICAgICAgICB0cnk6CisgICAgICAgICAgICByZWN1cnNlKDEwKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgZXhjID0gdHJhY2ViYWNrLlRyYWNlYmFja0V4Y2VwdGlvbigqZXhjX2luZm8sIGxpbWl0PTUpCisgICAgICAgICAgICBleHBlY3RlZF9zdGFjayA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZXh0cmFjdCgKKyAgICAgICAgICAgICAgICB0cmFjZWJhY2sud2Fsa190YihleGNfaW5mb1syXSksIGxpbWl0PTUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfc3RhY2ssIGV4Yy5zdGFjaykKKworICAgIGRlZiB0ZXN0X2xvb2t1cF9saW5lcyhzZWxmKToKKyAgICAgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQorICAgICAgICBlID0gRXhjZXB0aW9uKCJ1aCBvaCIpCisgICAgICAgIGMgPSB0ZXN0X2NvZGUoJy9mb28ucHknLCAnbWV0aG9kJykKKyAgICAgICAgZiA9IHRlc3RfZnJhbWUoYywgTm9uZSwgTm9uZSkKKyAgICAgICAgdGIgPSB0ZXN0X3RiKGYsIDYsIE5vbmUpCisgICAgICAgIGV4YyA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oRXhjZXB0aW9uLCBlLCB0YiwgbG9va3VwX2xpbmVzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBsaW5lY2FjaGUuY2FjaGUpCisgICAgICAgIGxpbmVjYWNoZS51cGRhdGVjYWNoZSgnL2Zvby5weScsIGdsb2JhbHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMuc3RhY2tbMF0ubGluZSwgImltcG9ydCBzeXMiKQorCisgICAgZGVmIHRlc3RfbG9jYWxzKHNlbGYpOgorICAgICAgICBsaW5lY2FjaGUudXBkYXRlY2FjaGUoJy9mb28ucHknLCBnbG9iYWxzKCkpCisgICAgICAgIGUgPSBFeGNlcHRpb24oInVoIG9oIikKKyAgICAgICAgYyA9IHRlc3RfY29kZSgnL2Zvby5weScsICdtZXRob2QnKQorICAgICAgICBmID0gdGVzdF9mcmFtZShjLCBnbG9iYWxzKCksIHsnc29tZXRoaW5nJzogMSwgJ290aGVyJzogJ3N0cmluZyd9KQorICAgICAgICB0YiA9IHRlc3RfdGIoZiwgNiwgTm9uZSkKKyAgICAgICAgZXhjID0gdHJhY2ViYWNrLlRyYWNlYmFja0V4Y2VwdGlvbigKKyAgICAgICAgICAgIEV4Y2VwdGlvbiwgZSwgdGIsIGNhcHR1cmVfbG9jYWxzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBleGMuc3RhY2tbMF0ubG9jYWxzLCB7J3NvbWV0aGluZyc6ICcxJywgJ290aGVyJzogIidzdHJpbmcnIn0pCisKKyAgICBkZWYgdGVzdF9ub19sb2NhbHMoc2VsZik6CisgICAgICAgIGxpbmVjYWNoZS51cGRhdGVjYWNoZSgnL2Zvby5weScsIGdsb2JhbHMoKSkKKyAgICAgICAgZSA9IEV4Y2VwdGlvbigidWggb2giKQorICAgICAgICBjID0gdGVzdF9jb2RlKCcvZm9vLnB5JywgJ21ldGhvZCcpCisgICAgICAgIGYgPSB0ZXN0X2ZyYW1lKGMsIGdsb2JhbHMoKSwgeydzb21ldGhpbmcnOiAxfSkKKyAgICAgICAgdGIgPSB0ZXN0X3RiKGYsIDYsIE5vbmUpCisgICAgICAgIGV4YyA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oRXhjZXB0aW9uLCBlLCB0YikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMuc3RhY2tbMF0ubG9jYWxzLCBOb25lKQorCisgICAgZGVmIHRlc3RfdHJhY2ViYWNrX2hlYWRlcihzZWxmKToKKyAgICAgICAgIyBkbyBub3QgcHJpbnQgYSB0cmFjZWJhY2sgaGVhZGVyIGlmIGV4Y190cmFjZWJhY2sgaXMgTm9uZQorICAgICAgICAjIHNlZSBpc3N1ZSAjMjQ2OTUKKyAgICAgICAgZXhjID0gdHJhY2ViYWNrLlRyYWNlYmFja0V4Y2VwdGlvbihFeGNlcHRpb24sIEV4Y2VwdGlvbigiaGF2ZW4iKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGV4Yy5mb3JtYXQoKSksIFsiRXhjZXB0aW9uOiBoYXZlblxuIl0pCisKKworY2xhc3MgTWlzY1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYWxsKHNlbGYpOgorICAgICAgICBleHBlY3RlZCA9IHNldCgpCisgICAgICAgIGJsYWNrbGlzdCA9IHsncHJpbnRfbGlzdCd9CisgICAgICAgIGZvciBuYW1lIGluIGRpcih0cmFjZWJhY2spOgorICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdfJykgb3IgbmFtZSBpbiBibGFja2xpc3Q6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG1vZHVsZV9vYmplY3QgPSBnZXRhdHRyKHRyYWNlYmFjaywgbmFtZSkKKyAgICAgICAgICAgIGlmIGdldGF0dHIobW9kdWxlX29iamVjdCwgJ19fbW9kdWxlX18nLCBOb25lKSA9PSAndHJhY2ViYWNrJzoKKyAgICAgICAgICAgICAgICBleHBlY3RlZC5hZGQobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRDb3VudEVxdWFsKHRyYWNlYmFjay5fX2FsbF9fLCBleHBlY3RlZCkKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RyYWNlbWFsbG9jLnB5IGIvTGliL3Rlc3QvdGVzdF90cmFjZW1hbGxvYy5weQppbmRleCA0OGNjYWIyLi5mNjVlMzYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlbWFsbG9jLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHJhY2VtYWxsb2MucHkKQEAgLTQsOCArNCw5IEBACiBpbXBvcnQgdHJhY2VtYWxsb2MKIGltcG9ydCB1bml0dGVzdAogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQotZnJvbSB0ZXN0IGltcG9ydCBzY3JpcHRfaGVscGVyLCBzdXBwb3J0Citmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCAoYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KQorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtNjYwLDExICs2NjEsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZubWF0Y2goJ2FiY2RkJywgJ2EqYyplJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm5tYXRjaCgnYWJjYmRlZmVmJywgJ2EqYmQqZWcnKSkKIAotICAgICAgICAjIHJlcGxhY2UgLnB5YyBhbmQgLnB5byBzdWZmaXggd2l0aCAucHkKKyAgICAgICAgIyByZXBsYWNlIC5weWMgc3VmZml4IHdpdGggLnB5CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmbm1hdGNoKCdhLnB5YycsICdhLnB5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmbm1hdGNoKCdhLnB5bycsICdhLnB5JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmbm1hdGNoKCdhLnB5JywgJ2EucHljJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmbm1hdGNoKCdhLnB5JywgJ2EucHlvJykpCiAKICAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgogICAgICAgICAgICAgIyBjYXNlIGluc2Vuc2l0aXZlCkBAIC02NzIsMTggKzY3MSwxNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZubWF0Y2goJ2FCY0RlJywgJ0FiKmRFJykpCiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmbm1hdGNoKCdhLnB5YycsICdhLlBZJykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZm5tYXRjaCgnYS5QWU8nLCAnYS5weScpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZubWF0Y2goJ2EucHknLCAnYS5QWUMnKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmbm1hdGNoKCdhLlBZJywgJ2EucHlvJykpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIGNhc2Ugc2Vuc2l0aXZlCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZubWF0Y2goJ2FCQycsICdBQmMnKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm5tYXRjaCgnYUJjRGUnLCAnQWIqZEUnKSkKIAogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmbm1hdGNoKCdhLnB5YycsICdhLlBZJykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZubWF0Y2goJ2EuUFlPJywgJ2EucHknKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm5tYXRjaCgnYS5weScsICdhLlBZQycpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmbm1hdGNoKCdhLlBZJywgJ2EucHlvJykpCiAKICAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgogICAgICAgICAgICAgIyBub3JtYWxpemUgYWx0ZXJuYXRlIHNlcGFyYXRvciAiLyIgdG8gdGhlIHN0YW5kYXJkIHNlcGFyYXRvciAiXCIKQEAgLTY5OCw2ICs2OTMsOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmbm1hdGNoKHInYS9iXGMnLCByJ2FcYi9jJykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZubWF0Y2gocidhL2IvYycsIHInYVxiXGMnKSkKIAorICAgICAgICAjIGFzIG9mIDMuNSwgLnB5byBpcyBubyBsb25nZXIgbXVuZ2VkIHRvIC5weQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZubWF0Y2goJ2EucHlvJywgJ2EucHknKSkKKwogICAgIGRlZiB0ZXN0X2ZpbHRlcl9tYXRjaF90cmFjZShzZWxmKToKICAgICAgICAgdDEgPSAoKCJhLnB5IiwgMiksICgiYi5weSIsIDMpKQogICAgICAgICB0MiA9ICgoImIucHkiLCA0KSwgKCJiLnB5IiwgNSkpCkBAIC03NTUsNyArNzUzLDcgQEAKICAgICAgICAgc3Rkb3V0ID0gc3Rkb3V0LnJzdHJpcCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCBiJ0ZhbHNlJykKIAotICAgIEB1bml0dGVzdC5za2lwSWYoc2NyaXB0X2hlbHBlci5faW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKSwKKyAgICBAdW5pdHRlc3Quc2tpcElmKGludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAnQ2Fubm90IHJ1biAtRSB0ZXN0cyB3aGVuIFBZVEhPTiBlbnYgdmFycyBhcmUgcmVxdWlyZWQuJykKICAgICBkZWYgdGVzdF9lbnZfdmFyX2lnbm9yZWRfd2l0aF9FKHNlbGYpOgogICAgICAgICAiIiJQWVRIT04qIGVudmlyb25tZW50IHZhcmlhYmxlcyBtdXN0IGJlIGlnbm9yZWQgd2hlbiAtRSBpcyBwcmVzZW50LiIiIgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90dGtfZ3Vpb25seS5weSBiL0xpYi90ZXN0L3Rlc3RfdHRrX2d1aW9ubHkucHkKaW5kZXggZmNkZWRhYy4uNDkwZTcyMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90dGtfZ3Vpb25seS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3R0a19ndWlvbmx5LnB5CkBAIC01LDEyICs1LDEwIEBACiAjIFNraXAgdGhpcyB0ZXN0IGlmIF90a2ludGVyIHdhc24ndCBidWlsdC4KIHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnX3RraW50ZXInKQogCi0jIE1ha2Ugc3VyZSB0a2ludGVyLl9maXggcnVucyB0byBzZXQgdXAgdGhlIGVudmlyb25tZW50Ci10a2ludGVyID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCd0a2ludGVyJykKLQogIyBTa2lwIHRlc3QgaWYgdGsgY2Fubm90IGJlIGluaXRpYWxpemVkLgogc3VwcG9ydC5yZXF1aXJlcygnZ3VpJykKIAoraW1wb3J0IHRraW50ZXIKIGZyb20gX3RraW50ZXIgaW1wb3J0IFRjbEVycm9yCiBmcm9tIHRraW50ZXIgaW1wb3J0IHR0awogZnJvbSB0a2ludGVyLnRlc3QgaW1wb3J0IHJ1bnRrdGVzdHMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5IGIvTGliL3Rlc3QvdGVzdF90dGtfdGV4dG9ubHkucHkKaW5kZXggMWNmZWIxNS4uNTY2ZmM5ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90dGtfdGV4dG9ubHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90dGtfdGV4dG9ubHkucHkKQEAgLTQsOSArNCw2IEBACiAjIFNraXAgdGhpcyB0ZXN0IGlmIF90a2ludGVyIGRvZXMgbm90IGV4aXN0Lgogc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfdGtpbnRlcicpCiAKLSMgTWFrZSBzdXJlIHRraW50ZXIuX2ZpeCBydW5zIHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQKLXN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgndGtpbnRlcicpCi0KIGZyb20gdGtpbnRlci50ZXN0IGltcG9ydCBydW50a3Rlc3RzCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHVwbGUucHkgYi9MaWIvdGVzdC90ZXN0X3R1cGxlLnB5CmluZGV4IDUxODc1YTEuLjVkMWZjZjYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHVwbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90dXBsZS5weQpAQCAtMSw0ICsxLDUgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgc2VxX3Rlc3RzCitpbXBvcnQgdW5pdHRlc3QKIAogaW1wb3J0IGdjCiBpbXBvcnQgcGlja2xlCkBAIC02LDYgKzcsMTEgQEAKIGNsYXNzIFR1cGxlVGVzdChzZXFfdGVzdHMuQ29tbW9uVGVzdCk6CiAgICAgdHlwZTJ0ZXN0ID0gdHVwbGUKIAorICAgIGRlZiB0ZXN0X2dldGl0ZW1fZXJyb3Ioc2VsZik6CisgICAgICAgIG1zZyA9ICJ0dXBsZSBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMgb3Igc2xpY2VzIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2cpOgorICAgICAgICAgICAgKClbJ2EnXQorCiAgICAgZGVmIHRlc3RfY29uc3RydWN0b3JzKHNlbGYpOgogICAgICAgICBzdXBlcigpLnRlc3RfY29uc3RydWN0b3JzKCkKICAgICAgICAgIyBjYWxsaW5nIGJ1aWx0LWluIHR5cGVzIHdpdGhvdXQgYXJndW1lbnQgbXVzdCByZXR1cm4gZW1wdHkKQEAgLTIwMyw4ICsyMDksMTMgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgWzMsXSArIFQoKDEsMikpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUdXBsZVRlc3QpCisgICAgZGVmIHRlc3RfbGV4aWNvZ3JhcGhpY19vcmRlcmluZyhzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAyMTEwMAorICAgICAgICBhID0gc2VsZi50eXBlMnRlc3QoWzEsIDJdKQorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoWzEsIDIsIDBdKQorICAgICAgICBjID0gc2VsZi50eXBlMnRlc3QoWzEsIDNdKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoYSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGIsIGMpCiAKLWlmIF9fbmFtZV9fPT0iX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90eXBlY2hlY2tzLnB5IGIvTGliL3Rlc3QvdGVzdF90eXBlY2hlY2tzLnB5CmluZGV4IDE3Y2Q1ZDMuLmEwZTYxN2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHlwZWNoZWNrcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3R5cGVjaGVja3MucHkKQEAgLTEsNyArMSw2IEBACiAiIiJVbml0IHRlc3RzIGZvciBfX2luc3RhbmNlY2hlY2tfXyBhbmQgX19zdWJjbGFzc2NoZWNrX18uIiIiCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAogY2xhc3MgQUJDKHR5cGUpOgpAQCAtNjgsOSArNjcsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlzaW5zdGFuY2UoNDIsIChTdWJJbnQsKSksIEZhbHNlKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUeXBlQ2hlY2tzVGVzdCkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90eXBlcy5weSBiL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkKaW5kZXggODQ5Y2JhOS4uNWU3NDExNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90eXBlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5CkBAIC0xLDEyICsxLDE0IEBACiAjIFB5dGhvbiB0ZXN0IHNldCAtLSBwYXJ0IDYsIGJ1aWx0LWluIHR5cGVzCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIHJ1bl93aXRoX2xvY2FsZQotaW1wb3J0IGNvbGxlY3Rpb25zCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3dpdGhfbG9jYWxlCitpbXBvcnQgY29sbGVjdGlvbnMuYWJjCitpbXBvcnQgaW5zcGVjdAogaW1wb3J0IHBpY2tsZQogaW1wb3J0IGxvY2FsZQogaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCi1pbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdC5tb2NrCitpbXBvcnQgd2Vha3JlZgogCiBjbGFzcyBUeXBlc1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMzQzLDYgKzM0NSw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIDMgLl9fZm9ybWF0X18sICIsbiIpCiAgICAgICAgICMgY2FuJ3QgaGF2ZSAnLCcgd2l0aCAnYycKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgMyAuX19mb3JtYXRfXywgIixjIikKKyAgICAgICAgIyBjYW4ndCBoYXZlICcjJyB3aXRoICdjJworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCAzIC5fX2Zvcm1hdF9fLCAiI2MiKQogCiAgICAgICAgICMgZW5zdXJlIHRoYXQgb25seSBpbnQgYW5kIGZsb2F0IHR5cGUgc3BlY2lmaWVycyB3b3JrCiAgICAgICAgIGZvciBmb3JtYXRfc3BlYyBpbiAoW2Nocih4KSBmb3IgeCBpbiByYW5nZShvcmQoJ2EnKSwgb3JkKCd6JykrMSldICsKQEAgLTExODYsOSArMTE5MCwzMTggQEAKICAgICAgICAgICAgIHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpID49IEZha2VTaW1wbGVOYW1lc3BhY2UoKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVHlwZXNUZXN0cywgTWFwcGluZ1Byb3h5VGVzdHMsIENsYXNzQ3JlYXRpb25UZXN0cywKLSAgICAgICAgICAgICAgICAgU2ltcGxlTmFtZXNwYWNlVGVzdHMpCitjbGFzcyBDb3JvdXRpbmVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rfd3JvbmdfYXJncyhzZWxmKToKKyAgICAgICAgc2FtcGxlcyA9IFtOb25lLCAxLCBvYmplY3QoKV0KKyAgICAgICAgZm9yIHNhbXBsZSBpbiBzYW1wbGVzOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZXMuY29yb3V0aW5lLipleHBlY3RzIGEgY2FsbGFibGUnKToKKyAgICAgICAgICAgICAgICB0eXBlcy5jb3JvdXRpbmUoc2FtcGxlKQorCisgICAgZGVmIHRlc3Rfbm9uX2dlbl92YWx1ZXMoc2VsZik6CisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuICdzcGFtJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygpLCAnc3BhbScpCisKKyAgICAgICAgY2xhc3MgQXdhaXRhYmxlOgorICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gKCkKKyAgICAgICAgYXcgPSBBd2FpdGFibGUoKQorICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiBhdworICAgICAgICBzZWxmLmFzc2VydElzKGF3LCBmb28oKSkKKworICAgICAgICAjIGRlY29yYXRlIGZvbyBzZWNvbmQgdGltZQorICAgICAgICBmb28gPSB0eXBlcy5jb3JvdXRpbmUoZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzKGF3LCBmb28oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2RlZihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgdHlwZXMuY29yb3V0aW5lIHBhc3NlcyAnYXN5bmMgZGVmJyBjb3JvdXRpbmVzCisgICAgICAgICMgd2l0aG91dCBtb2RpZmljYXRpb24KKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgZm9vX2NvZGUgPSBmb28uX19jb2RlX18KKyAgICAgICAgZm9vX2ZsYWdzID0gZm9vLl9fY29kZV9fLmNvX2ZsYWdzCisgICAgICAgIGRlY29yYXRlZF9mb28gPSB0eXBlcy5jb3JvdXRpbmUoZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzKGZvbywgZGVjb3JhdGVkX2ZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uX19jb2RlX18uY29fZmxhZ3MsIGZvb19mbGFncykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhkZWNvcmF0ZWRfZm9vLl9fY29kZV9fLCBmb29fY29kZSkKKworICAgICAgICBmb29fY29ybyA9IGZvbygpCisgICAgICAgIGRlZiBiYXIoKTogcmV0dXJuIGZvb19jb3JvCisgICAgICAgIGZvciBfIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgYmFyID0gdHlwZXMuY29yb3V0aW5lKGJhcikKKyAgICAgICAgICAgIGNvcm8gPSBiYXIoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhmb29fY29ybywgY29ybykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29yby5jcl9jb2RlLmNvX2ZsYWdzLCBmb29fZmxhZ3MpCisgICAgICAgICAgICBjb3JvLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2R1Y2tfY29ybyhzZWxmKToKKyAgICAgICAgY2xhc3MgQ29yb0xpa2U6CisgICAgICAgICAgICBkZWYgc2VuZChzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIHRocm93KHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBfX2F3YWl0X18oc2VsZik6IHJldHVybiBzZWxmCisKKyAgICAgICAgY29ybyA9IENvcm9MaWtlKCkKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gY29ybworICAgICAgICBzZWxmLmFzc2VydElzKGZvbygpLCBjb3JvKQorICAgICAgICBzZWxmLmFzc2VydElzKGZvbygpLl9fYXdhaXRfXygpLCBjb3JvKQorCisgICAgZGVmIHRlc3RfZHVja19jb3JvZ2VuKHNlbGYpOgorICAgICAgICBjbGFzcyBDb3JvR2VuTGlrZToKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKTogcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX25leHRfXyhzZWxmKTogcGFzcworCisgICAgICAgIGNvcm8gPSBDb3JvR2VuTGlrZSgpCisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuIGNvcm8KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmb28oKSwgY29ybykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmb28oKS5fX2F3YWl0X18oKSwgY29ybykKKworICAgIGRlZiB0ZXN0X2R1Y2tfZ2VuKHNlbGYpOgorICAgICAgICBjbGFzcyBHZW5MaWtlOgorICAgICAgICAgICAgZGVmIHNlbmQoc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiB0aHJvdyhzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBfX25leHRfXyhzZWxmKTogcGFzcworCisgICAgICAgICMgU2V0dXAgZ2VuZXJhdG9yIG1vY2sgb2JqZWN0CisgICAgICAgIGdlbiA9IHVuaXR0ZXN0Lm1vY2suTWFnaWNNb2NrKEdlbkxpa2UpCisgICAgICAgIGdlbi5fX2l0ZXJfXyA9IGxhbWJkYSBnZW46IGdlbgorICAgICAgICBnZW4uX19uYW1lX18gPSAnZ2VuJworICAgICAgICBnZW4uX19xdWFsbmFtZV9fID0gJ3Rlc3QuZ2VuJworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZ2VuLCBjb2xsZWN0aW9ucy5hYmMuR2VuZXJhdG9yKQorICAgICAgICBzZWxmLmFzc2VydElzKGdlbiwgaXRlcihnZW4pKQorCisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGZvbygpOiByZXR1cm4gZ2VuCisKKyAgICAgICAgd3JhcHBlciA9IGZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh3cmFwcGVyLCB0eXBlcy5fR2VuZXJhdG9yV3JhcHBlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3cmFwcGVyLl9fYXdhaXRfXygpLCB3cmFwcGVyKQorICAgICAgICAjIFdyYXBwZXIgcHJveGllcyBkdWNrIGdlbmVyYXRvcnMgY29tcGxldGVseToKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhpdGVyKHdyYXBwZXIpLCB3cmFwcGVyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh3cmFwcGVyLCBjb2xsZWN0aW9ucy5hYmMuQ29yb3V0aW5lKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uod3JhcHBlciwgY29sbGVjdGlvbnMuYWJjLkF3YWl0YWJsZSkKKworICAgICAgICBzZWxmLmFzc2VydElzKHdyYXBwZXIuX19xdWFsbmFtZV9fLCBnZW4uX19xdWFsbmFtZV9fKQorICAgICAgICBzZWxmLmFzc2VydElzKHdyYXBwZXIuX19uYW1lX18sIGdlbi5fX25hbWVfXykKKworICAgICAgICAjIFRlc3QgQXR0cmlidXRlRXJyb3JzCisgICAgICAgIGZvciBuYW1lIGluIHsnZ2lfcnVubmluZycsICdnaV9mcmFtZScsICdnaV9jb2RlJywgJ2dpX3lpZWxkZnJvbScsCisgICAgICAgICAgICAgICAgICAgICAnY3JfcnVubmluZycsICdjcl9mcmFtZScsICdjcl9jb2RlJywgJ2NyX2F3YWl0J306CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICBnZXRhdHRyKHdyYXBwZXIsIG5hbWUpCisKKyAgICAgICAgIyBUZXN0IGF0dHJpYnV0ZXMgcGFzcy10aHJvdWdoCisgICAgICAgIGdlbi5naV9ydW5uaW5nID0gb2JqZWN0KCkKKyAgICAgICAgZ2VuLmdpX2ZyYW1lID0gb2JqZWN0KCkKKyAgICAgICAgZ2VuLmdpX2NvZGUgPSBvYmplY3QoKQorICAgICAgICBnZW4uZ2lfeWllbGRmcm9tID0gb2JqZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3cmFwcGVyLmdpX3J1bm5pbmcsIGdlbi5naV9ydW5uaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzKHdyYXBwZXIuZ2lfZnJhbWUsIGdlbi5naV9mcmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3cmFwcGVyLmdpX2NvZGUsIGdlbi5naV9jb2RlKQorICAgICAgICBzZWxmLmFzc2VydElzKHdyYXBwZXIuZ2lfeWllbGRmcm9tLCBnZW4uZ2lfeWllbGRmcm9tKQorICAgICAgICBzZWxmLmFzc2VydElzKHdyYXBwZXIuY3JfcnVubmluZywgZ2VuLmdpX3J1bm5pbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMod3JhcHBlci5jcl9mcmFtZSwgZ2VuLmdpX2ZyYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHdyYXBwZXIuY3JfY29kZSwgZ2VuLmdpX2NvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMod3JhcHBlci5jcl9hd2FpdCwgZ2VuLmdpX3lpZWxkZnJvbSkKKworICAgICAgICB3cmFwcGVyLmNsb3NlKCkKKyAgICAgICAgZ2VuLmNsb3NlLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworICAgICAgICB3cmFwcGVyLnNlbmQoMSkKKyAgICAgICAgZ2VuLnNlbmQuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSkKKyAgICAgICAgZ2VuLnJlc2V0X21vY2soKQorCisgICAgICAgIG5leHQod3JhcHBlcikKKyAgICAgICAgZ2VuLl9fbmV4dF9fLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKyAgICAgICAgZ2VuLnJlc2V0X21vY2soKQorCisgICAgICAgIHdyYXBwZXIudGhyb3coMSwgMiwgMykKKyAgICAgICAgZ2VuLnRocm93LmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEsIDIsIDMpCisgICAgICAgIGdlbi5yZXNldF9tb2NrKCkKKworICAgICAgICB3cmFwcGVyLnRocm93KDEsIDIpCisgICAgICAgIGdlbi50aHJvdy5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyKQorICAgICAgICBnZW4ucmVzZXRfbW9jaygpCisKKyAgICAgICAgd3JhcHBlci50aHJvdygxKQorICAgICAgICBnZW4udGhyb3cuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSkKKyAgICAgICAgZ2VuLnJlc2V0X21vY2soKQorCisgICAgICAgICMgVGVzdCBleGNlcHRpb25zIHByb3BhZ2F0aW9uCisgICAgICAgIGVycm9yID0gRXhjZXB0aW9uKCkKKyAgICAgICAgZ2VuLnRocm93LnNpZGVfZWZmZWN0ID0gZXJyb3IKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd3JhcHBlci50aHJvdygxKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhleCwgZXJyb3IpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ3dyYXBwZXIgZGlkIG5vdCBwcm9wYWdhdGUgYW4gZXhjZXB0aW9uJykKKworICAgICAgICAjIFRlc3QgaW52YWxpZCBhcmdzCisgICAgICAgIGdlbi5yZXNldF9tb2NrKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgd3JhcHBlci50aHJvdygpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2VuLnRocm93LmNhbGxlZCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgd3JhcHBlci5jbG9zZSgxKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdlbi5jbG9zZS5jYWxsZWQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHdyYXBwZXIuc2VuZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2VuLnNlbmQuY2FsbGVkKQorCisgICAgICAgICMgVGVzdCB0aGF0IHdlIGRvIG5vdCBkb3VibGUgd3JhcAorICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBiYXIoKTogcmV0dXJuIHdyYXBwZXIKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3cmFwcGVyLCBiYXIoKSkKKworICAgICAgICAjIFRlc3Qgd2Vha3JlZnMgc3VwcG9ydAorICAgICAgICByZWYgPSB3ZWFrcmVmLnJlZih3cmFwcGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKHJlZigpLCB3cmFwcGVyKQorCisgICAgZGVmIHRlc3RfZHVja19mdW5jdGlvbmFsX2dlbihzZWxmKToKKyAgICAgICAgY2xhc3MgR2VuZXJhdG9yOgorICAgICAgICAgICAgIiIiRW11bGF0ZXMgdGhlIGZvbGxvd2luZyBnZW5lcmF0b3IgKHZlcnkgY2x1bXN5KToKKworICAgICAgICAgICAgICBkZWYgZ2VuKGZ1dCk6CisgICAgICAgICAgICAgICAgICByZXN1bHQgPSB5aWVsZCBmdXQKKyAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKiAyCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdXQpOgorICAgICAgICAgICAgICAgIHNlbGYuX2kgPSAwCisgICAgICAgICAgICAgICAgc2VsZi5fZnV0ID0gZnV0CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX25leHRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zZW5kKE5vbmUpCisgICAgICAgICAgICBkZWYgc2VuZChzZWxmLCB2KToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2kgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCB2IGlzIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9mdXQKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5faSA9PSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbih2ICogMikKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5faSA+IDE6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faSArPSAxCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZiwgdHAsICpleGMpOgorICAgICAgICAgICAgICAgIHNlbGYuX2kgPSAxMDAKKyAgICAgICAgICAgICAgICBpZiB0cCBpcyBub3QgR2VuZXJhdG9yRXhpdDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgdHAKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLnRocm93KEdlbmVyYXRvckV4aXQpCisKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgZm9vKCk6IHJldHVybiBHZW5lcmF0b3IoJ3NwYW0nKQorCisgICAgICAgIHdyYXBwZXIgPSBmb28oKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uod3JhcHBlciwgdHlwZXMuX0dlbmVyYXRvcldyYXBwZXIpCisKKyAgICAgICAgYXN5bmMgZGVmIGNvcm9mdW5jKCk6CisgICAgICAgICAgICByZXR1cm4gYXdhaXQgZm9vKCkgKyAxMDAKKyAgICAgICAgY29ybyA9IGNvcm9mdW5jKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcm8uc2VuZChOb25lKSwgJ3NwYW0nKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBjb3JvLnNlbmQoMjApCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5hcmdzWzBdLCAxNDApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BJdGVyYXRpb24gd2FzIGV4cGVjdGVkJykKKworICAgIGRlZiB0ZXN0X2dlbihzZWxmKToKKyAgICAgICAgZGVmIGdlbl9mdW5jKCk6CisgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICByZXR1cm4gKHlpZWxkIDIpCisgICAgICAgIGdlbiA9IGdlbl9mdW5jKCkKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgZm9vKCk6IHJldHVybiBnZW4KKyAgICAgICAgd3JhcHBlciA9IGZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh3cmFwcGVyLCB0eXBlcy5fR2VuZXJhdG9yV3JhcHBlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3cmFwcGVyLl9fYXdhaXRfXygpLCBnZW4pCisKKyAgICAgICAgZm9yIG5hbWUgaW4gKCdfX25hbWVfXycsICdfX3F1YWxuYW1lX18nLCAnZ2lfY29kZScsCisgICAgICAgICAgICAgICAgICAgICAnZ2lfcnVubmluZycsICdnaV9mcmFtZScpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhnZXRhdHRyKGZvbygpLCBuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihnZW4sIG5hbWUpKQorICAgICAgICBzZWxmLmFzc2VydElzKGZvbygpLmNyX2NvZGUsIGdlbi5naV9jb2RlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dCh3cmFwcGVyKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLnNlbmQoTm9uZSksIDIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTdG9wSXRlcmF0aW9uLCAnc3BhbScpOgorICAgICAgICAgICAgd3JhcHBlci5zZW5kKCdzcGFtJykKKworICAgICAgICBnZW4gPSBnZW5fZnVuYygpCisgICAgICAgIHdyYXBwZXIgPSBmb28oKQorICAgICAgICB3cmFwcGVyLnNlbmQoTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgJ2hhbScpOgorICAgICAgICAgICAgd3JhcHBlci50aHJvdyhFeGNlcHRpb24sIEV4Y2VwdGlvbignaGFtJykpCisKKyAgICAgICAgIyBkZWNvcmF0ZSBmb28gc2Vjb25kIHRpbWUKKyAgICAgICAgZm9vID0gdHlwZXMuY29yb3V0aW5lKGZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmb28oKS5fX2F3YWl0X18oKSwgZ2VuKQorCisgICAgZGVmIHRlc3RfcmV0dXJuaW5nX2l0ZXJjb3JvKHNlbGYpOgorICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkCisKKyAgICAgICAgZ2VuY29ybyA9IGdlbigpCisKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gZ2VuY29ybworCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZm9vKCksIGdlbmNvcm8pCisKKyAgICAgICAgIyBkZWNvcmF0ZSBmb28gc2Vjb25kIHRpbWUKKyAgICAgICAgZm9vID0gdHlwZXMuY29yb3V0aW5lKGZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmb28oKSwgZ2VuY29ybykKKworICAgIGRlZiB0ZXN0X2dlbmZ1bmMoc2VsZik6CisgICAgICAgIGRlZiBnZW4oKTogeWllbGQKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlcy5jb3JvdXRpbmUoZ2VuKSwgZ2VuKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGVzLmNvcm91dGluZSh0eXBlcy5jb3JvdXRpbmUoZ2VuKSksIGdlbikKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2VuLl9fY29kZV9fLmNvX2ZsYWdzICYgaW5zcGVjdC5DT19JVEVSQUJMRV9DT1JPVVRJTkUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2VuLl9fY29kZV9fLmNvX2ZsYWdzICYgaW5zcGVjdC5DT19DT1JPVVRJTkUpCisKKyAgICAgICAgZyA9IGdlbigpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnLmdpX2NvZGUuY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0lURVJBQkxFX0NPUk9VVElORSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnLmdpX2NvZGUuY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0NPUk9VVElORSkKKworICAgICAgICBzZWxmLmFzc2VydElzKHR5cGVzLmNvcm91dGluZShnZW4pLCBnZW4pCisKKyAgICBkZWYgdGVzdF93cmFwcGVyX29iamVjdChzZWxmKToKKyAgICAgICAgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgY29ybygpOgorICAgICAgICAgICAgcmV0dXJuIGdlbigpCisKKyAgICAgICAgd3JhcHBlciA9IGNvcm8oKQorICAgICAgICBzZWxmLmFzc2VydEluKCdHZW5lcmF0b3JXcmFwcGVyJywgcmVwcih3cmFwcGVyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHdyYXBwZXIpLCBzdHIod3JhcHBlcikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoZGlyKHdyYXBwZXIpKS5pc3N1cGVyc2V0KHsKKyAgICAgICAgICAgICdfX2F3YWl0X18nLCAnX19pdGVyX18nLCAnX19uZXh0X18nLCAnY3JfY29kZScsICdjcl9ydW5uaW5nJywKKyAgICAgICAgICAgICdjcl9mcmFtZScsICdnaV9jb2RlJywgJ2dpX2ZyYW1lJywgJ2dpX3J1bm5pbmcnLCAnc2VuZCcsCisgICAgICAgICAgICAnY2xvc2UnLCAndGhyb3cnfSkpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90eXBpbmcucHkgYi9MaWIvdGVzdC90ZXN0X3R5cGluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWNhNjQyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF90eXBpbmcucHkKQEAgLTAsMCArMSwxMzU3IEBACitpbXBvcnQgYXN5bmNpbworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHJlCitpbXBvcnQgc3lzCitmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZSwgbWFpbgorCitmcm9tIHR5cGluZyBpbXBvcnQgQW55Citmcm9tIHR5cGluZyBpbXBvcnQgVHlwZVZhciwgQW55U3RyCitmcm9tIHR5cGluZyBpbXBvcnQgVCwgS1QsIFZUICAjIE5vdCBpbiBfX2FsbF9fLgorZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uLCBPcHRpb25hbAorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCitmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBHZW5lcmljCitmcm9tIHR5cGluZyBpbXBvcnQgY2FzdAorZnJvbSB0eXBpbmcgaW1wb3J0IGdldF90eXBlX2hpbnRzCitmcm9tIHR5cGluZyBpbXBvcnQgbm9fdHlwZV9jaGVjaywgbm9fdHlwZV9jaGVja19kZWNvcmF0b3IKK2Zyb20gdHlwaW5nIGltcG9ydCBOYW1lZFR1cGxlCitmcm9tIHR5cGluZyBpbXBvcnQgSU8sIFRleHRJTywgQmluYXJ5SU8KK2Zyb20gdHlwaW5nIGltcG9ydCBQYXR0ZXJuLCBNYXRjaAoraW1wb3J0IHR5cGluZworCisKK2NsYXNzIEVtcGxveWVlOgorICAgIHBhc3MKKworCitjbGFzcyBNYW5hZ2VyKEVtcGxveWVlKToKKyAgICBwYXNzCisKKworY2xhc3MgRm91bmRlcihFbXBsb3llZSk6CisgICAgcGFzcworCisKK2NsYXNzIE1hbmFnaW5nRm91bmRlcihNYW5hZ2VyLCBGb3VuZGVyKToKKyAgICBwYXNzCisKKworY2xhc3MgQW55VGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYW55X2luc3RhbmNlX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGlzaW5zdGFuY2UoNDIsIEFueSkKKworICAgIGRlZiB0ZXN0X2FueV9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRW1wbG95ZWUsIEFueSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGludCwgQW55KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZShOb25lKSwgQW55KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Mob2JqZWN0LCBBbnkpKQorCisgICAgZGVmIHRlc3Rfb3RoZXJzX2FueShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKEFueSwgRW1wbG95ZWUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQW55LCBpbnQpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQW55LCB0eXBlKE5vbmUpKSkKKyAgICAgICAgIyBIb3dldmVyLCBBbnkgaXMgYSBzdWJjbGFzcyBvZiBvYmplY3QgKHRoaXMgY2FuJ3QgYmUgaGVscGVkKS4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQW55LCBvYmplY3QpKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKEFueSksICd0eXBpbmcuQW55JykKKworICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaXNzdWJjbGFzcyg0MiwgQW55KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBBbnlbaW50XSAgIyBBbnkgaXMgbm90IGEgZ2VuZXJpYyB0eXBlLgorCisgICAgZGVmIHRlc3RfY2Fubm90X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBBKEFueSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfY2Fubm90X2luc3RhbnRpYXRlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBBbnkoKQorCisgICAgZGVmIHRlc3RfY2Fubm90X3N1YnNjcmlwdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgQW55W2ludF0KKworICAgIGRlZiB0ZXN0X2FueV9pc19zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgIyBBbnkgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSBzdWJjbGFzcyBvZiBldmVyeXRoaW5nLgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIEFueSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCB0eXBpbmcuTGlzdCkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCB0eXBpbmcuTGlzdFtpbnRdKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIHR5cGluZy5MaXN0W1RdKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIHR5cGluZy5NYXBwaW5nKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIHR5cGluZy5NYXBwaW5nW3N0ciwgaW50XSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCB0eXBpbmcuTWFwcGluZ1tLVCwgVlRdKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIEdlbmVyaWMpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEFueSwgR2VuZXJpY1tUXSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCBHZW5lcmljW0tULCBWVF0pCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEFueSwgQW55U3RyKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIFVuaW9uKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIFVuaW9uW2ludCwgc3RyXSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCB0eXBpbmcuTWF0Y2gpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEFueSwgdHlwaW5nLk1hdGNoW3N0cl0pCisgICAgICAgICMgVGhlc2UgZXhwcmVzc2lvbnMgbXVzdCBzaW1wbHkgbm90IGZhaWwuCisgICAgICAgIHR5cGluZy5NYXRjaFtBbnldCisgICAgICAgIHR5cGluZy5QYXR0ZXJuW0FueV0KKyAgICAgICAgdHlwaW5nLklPW0FueV0KKworCitjbGFzcyBUeXBlVmFyVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFzaWNfcGxhaW4oc2VsZik6CisgICAgICAgIFQgPSBUeXBlVmFyKCdUJykKKyAgICAgICAgIyBFdmVyeSBjbGFzcyBpcyBhIHN1YmNsYXNzIG9mIFQuCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGludCwgVCkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3Moc3RyLCBUKQorICAgICAgICAjIFQgZXF1YWxzIGl0c2VsZi4KKyAgICAgICAgYXNzZXJ0IFQgPT0gVAorICAgICAgICAjIFQgaXMgYSBzdWJjbGFzcyBvZiBpdHNlbGYuCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKFQsIFQpCisgICAgICAgICMgVCBpcyBhbiBpbnN0YW5jZSBvZiBUeXBlVmFyCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKFQsIFR5cGVWYXIpCisKKyAgICBkZWYgdGVzdF90eXBldmFyX2luc3RhbmNlX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAgIFQgPSBUeXBlVmFyKCdUJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaXNpbnN0YW5jZSg0MiwgVCkKKworICAgIGRlZiB0ZXN0X2Jhc2ljX2NvbnN0cmFpbmVkKHNlbGYpOgorICAgICAgICBBID0gVHlwZVZhcignQScsIHN0ciwgYnl0ZXMpCisgICAgICAgICMgT25seSBzdHIgYW5kIGJ5dGVzIGFyZSBzdWJjbGFzc2VzIG9mIEEuCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHN0ciwgQSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoYnl0ZXMsIEEpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhpbnQsIEEpCisgICAgICAgICMgQSBlcXVhbHMgaXRzZWxmLgorICAgICAgICBhc3NlcnQgQSA9PSBBCisgICAgICAgICMgQSBpcyBhIHN1YmNsYXNzIG9mIGl0c2VsZi4KKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQSwgQSkKKworICAgIGRlZiB0ZXN0X2NvbnN0cmFpbmVkX2Vycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBYID0gVHlwZVZhcignWCcsIGludCkKKworICAgIGRlZiB0ZXN0X3VuaW9uX3VuaXF1ZShzZWxmKToKKyAgICAgICAgWCA9IFR5cGVWYXIoJ1gnKQorICAgICAgICBZID0gVHlwZVZhcignWScpCisgICAgICAgIGFzc2VydCBYICE9IFkKKyAgICAgICAgYXNzZXJ0IFVuaW9uW1hdID09IFgKKyAgICAgICAgYXNzZXJ0IFVuaW9uW1hdICE9IFVuaW9uW1gsIFldCisgICAgICAgIGFzc2VydCBVbmlvbltYLCBYXSA9PSBYCisgICAgICAgIGFzc2VydCBVbmlvbltYLCBpbnRdICE9IFVuaW9uW1hdCisgICAgICAgIGFzc2VydCBVbmlvbltYLCBpbnRdICE9IFVuaW9uW2ludF0KKyAgICAgICAgYXNzZXJ0IFVuaW9uW1gsIGludF0uX191bmlvbl9wYXJhbXNfXyA9PSAoWCwgaW50KQorICAgICAgICBhc3NlcnQgVW5pb25bWCwgaW50XS5fX3VuaW9uX3NldF9wYXJhbXNfXyA9PSB7WCwgaW50fQorCisgICAgZGVmIHRlc3RfdW5pb25fY29uc3RyYWluZWQoc2VsZik6CisgICAgICAgIEEgPSBUeXBlVmFyKCdBJywgc3RyLCBieXRlcykKKyAgICAgICAgYXNzZXJ0IFVuaW9uW0EsIHN0cl0gIT0gVW5pb25bQV0KKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihUKSwgJ35UJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKEtUKSwgJ35LVCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihWVCksICd+VlQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoQW55U3RyKSwgJ35BbnlTdHInKQorICAgICAgICBUX2NvID0gVHlwZVZhcignVF9jbycsIGNvdmFyaWFudD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoVF9jbyksICcrVF9jbycpCisgICAgICAgIFRfY29udHJhID0gVHlwZVZhcignVF9jb250cmEnLCBjb250cmF2YXJpYW50PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihUX2NvbnRyYSksICctVF9jb250cmEnKQorCisgICAgZGVmIHRlc3Rfbm9fcmVkZWZpbml0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKFR5cGVWYXIoJ1QnKSwgVHlwZVZhcignVCcpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKFR5cGVWYXIoJ1QnLCBpbnQsIHN0ciksIFR5cGVWYXIoJ1QnLCBpbnQsIHN0cikpCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzc19hc191bmlvbnMoc2VsZik6CisgICAgICAgICMgTm9uZSBvZiB0aGVzZSBhcmUgdHJ1ZSAtLSBlYWNoIHR5cGUgdmFyIGlzIGl0cyBvd24gd29ybGQuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhUeXBlVmFyKCdUJywgaW50LCBzdHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZVZhcignVCcsIGludCwgc3RyKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhUeXBlVmFyKCdUJywgaW50LCBmbG9hdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlVmFyKCdUJywgaW50LCBmbG9hdCwgc3RyKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhUeXBlVmFyKCdUJywgaW50LCBzdHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZVZhcignVCcsIHN0ciwgaW50KSkpCisgICAgICAgIEEgPSBUeXBlVmFyKCdBJywgaW50LCBzdHIpCisgICAgICAgIEIgPSBUeXBlVmFyKCdCJywgaW50LCBzdHIsIGZsb2F0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQSwgQikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhCLCBBKSkKKworICAgIGRlZiB0ZXN0X2Nhbm5vdF9zdWJjbGFzc192YXJzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBWKFR5cGVWYXIoJ1QnKSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfY2Fubm90X3N1YmNsYXNzX3Zhcl9pdHNlbGYoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIFYoVHlwZVZhcik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfY2Fubm90X2luc3RhbnRpYXRlX3ZhcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFR5cGVWYXIoJ0EnKSgpCisKKyAgICBkZWYgdGVzdF9ib3VuZChzZWxmKToKKyAgICAgICAgWCA9IFR5cGVWYXIoJ1gnLCBib3VuZD1FbXBsb3llZSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoRW1wbG95ZWUsIFgpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKE1hbmFnZXIsIFgpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhpbnQsIFgpCisKKyAgICBkZWYgdGVzdF9ib3VuZF9lcnJvcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFR5cGVWYXIoJ1gnLCBib3VuZD00MikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgVHlwZVZhcignWCcsIHN0ciwgZmxvYXQsIGJvdW5kPUVtcGxveWVlKQorCisKK2NsYXNzIFVuaW9uVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgorICAgICAgICB1ID0gVW5pb25baW50LCBmbG9hdF0KKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh1LCBVbmlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoaW50LCB1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoZmxvYXQsIHUpKQorCisgICAgZGVmIHRlc3RfdW5pb25fYW55KHNlbGYpOgorICAgICAgICB1ID0gVW5pb25bQW55XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIEFueSkKKyAgICAgICAgdSA9IFVuaW9uW2ludCwgQW55XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIEFueSkKKyAgICAgICAgdSA9IFVuaW9uW0FueSwgaW50XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIEFueSkKKworICAgIGRlZiB0ZXN0X3VuaW9uX29iamVjdChzZWxmKToKKyAgICAgICAgdSA9IFVuaW9uW29iamVjdF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBvYmplY3QpCisgICAgICAgIHUgPSBVbmlvbltpbnQsIG9iamVjdF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBvYmplY3QpCisgICAgICAgIHUgPSBVbmlvbltvYmplY3QsIGludF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBvYmplY3QpCisKKyAgICBkZWYgdGVzdF91bmlvbl9hbnlfb2JqZWN0KHNlbGYpOgorICAgICAgICB1ID0gVW5pb25bb2JqZWN0LCBBbnldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgQW55KQorICAgICAgICB1ID0gVW5pb25bQW55LCBvYmplY3RdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgQW55KQorCisgICAgZGVmIHRlc3RfdW5vcmRlcmVkKHNlbGYpOgorICAgICAgICB1MSA9IFVuaW9uW2ludCwgZmxvYXRdCisgICAgICAgIHUyID0gVW5pb25bZmxvYXQsIGludF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1MSwgdTIpCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgdSA9IFVuaW9uW2ludCwgRW1wbG95ZWVdCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE1hbmFnZXIsIHUpKQorCisgICAgZGVmIHRlc3Rfc2VsZl9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoVW5pb25bS1QsIFZUXSwgVW5pb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoVW5pb24sIFVuaW9uW0tULCBWVF0pKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfaW5oZXJpdGFuY2Uoc2VsZik6CisgICAgICAgIHUgPSBVbmlvbltpbnQsIEVtcGxveWVlXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNYW5hZ2luZ0ZvdW5kZXIsIHUpKQorCisgICAgZGVmIHRlc3Rfc2luZ2xlX2NsYXNzX2Rpc2FwcGVhcnMoc2VsZik6CisgICAgICAgIHQgPSBVbmlvbltFbXBsb3llZV0KKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0LCBFbXBsb3llZSkKKworICAgIGRlZiB0ZXN0X2Jhc2VfY2xhc3NfZGlzYXBwZWFycyhzZWxmKToKKyAgICAgICAgdSA9IFVuaW9uW0VtcGxveWVlLCBNYW5hZ2VyLCBpbnRdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgVW5pb25baW50LCBFbXBsb3llZV0pCisgICAgICAgIHUgPSBVbmlvbltNYW5hZ2VyLCBpbnQsIEVtcGxveWVlXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIFVuaW9uW2ludCwgRW1wbG95ZWVdKQorICAgICAgICB1ID0gVW5pb25bRW1wbG95ZWUsIE1hbmFnZXJdCisgICAgICAgIHNlbGYuYXNzZXJ0SXModSwgRW1wbG95ZWUpCisKKyAgICBkZWYgdGVzdF93ZWlyZF9zdWJjbGFzc2VzKHNlbGYpOgorICAgICAgICB1ID0gVW5pb25bRW1wbG95ZWUsIGludCwgZmxvYXRdCisgICAgICAgIHYgPSBVbmlvbltpbnQsIGZsb2F0XQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh2LCB1KSkKKyAgICAgICAgdyA9IFVuaW9uW2ludCwgTWFuYWdlcl0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModywgdSkpCisKKyAgICBkZWYgdGVzdF91bmlvbl91bmlvbihzZWxmKToKKyAgICAgICAgdSA9IFVuaW9uW2ludCwgZmxvYXRdCisgICAgICAgIHYgPSBVbmlvblt1LCBFbXBsb3llZV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBVbmlvbltpbnQsIGZsb2F0LCBFbXBsb3llZV0pCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoVW5pb24pLCAndHlwaW5nLlVuaW9uJykKKyAgICAgICAgdSA9IFVuaW9uW0VtcGxveWVlLCBpbnRdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih1KSwgJ3R5cGluZy5Vbmlvblslcy5FbXBsb3llZSwgaW50XScgJSBfX25hbWVfXykKKyAgICAgICAgdSA9IFVuaW9uW2ludCwgRW1wbG95ZWVdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih1KSwgJ3R5cGluZy5VbmlvbltpbnQsICVzLkVtcGxveWVlXScgJSBfX25hbWVfXykKKworICAgIGRlZiB0ZXN0X2Nhbm5vdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQyhVbmlvbik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBDKFVuaW9uW2ludCwgc3RyXSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfY2Fubm90X2luc3RhbnRpYXRlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBVbmlvbigpCisgICAgICAgIHUgPSBVbmlvbltpbnQsIGZsb2F0XQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB1KCkKKworICAgIGRlZiB0ZXN0X29wdGlvbmFsKHNlbGYpOgorICAgICAgICBvID0gT3B0aW9uYWxbaW50XQorICAgICAgICB1ID0gVW5pb25baW50LCBOb25lXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG8sIHUpCisKKyAgICBkZWYgdGVzdF9lbXB0eShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgVW5pb25bKCldCisKKyAgICBkZWYgdGVzdF9pc3N1YmNsYXNzX3VuaW9uKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhVbmlvbltpbnQsIHN0cl0sIFVuaW9uKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoaW50LCBVbmlvbikKKworICAgIGRlZiB0ZXN0X3VuaW9uX2luc3RhbmNlX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGlzaW5zdGFuY2UoNDIsIFVuaW9uW2ludCwgc3RyXSkKKworICAgIGRlZiB0ZXN0X3VuaW9uX3N0cl9wYXR0ZXJuKHNlbGYpOgorICAgICAgICAjIFNob3VsZG4ndCBjcmFzaDsgc2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNTM5MAorICAgICAgICBBID0gVW5pb25bc3RyLCBQYXR0ZXJuXQorCisKK2NsYXNzIFR5cGVWYXJVbmlvblRlc3RzKFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3NpbXBsZXIoc2VsZik6CisgICAgICAgIEEgPSBUeXBlVmFyKCdBJywgaW50LCBzdHIsIGZsb2F0KQorICAgICAgICBCID0gVHlwZVZhcignQicsIGludCwgc3RyKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBLCBBKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhCLCBCKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoQiwgQSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQSwgVW5pb25baW50LCBzdHIsIGZsb2F0XSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKFVuaW9uW2ludCwgc3RyLCBmbG9hdF0sIEEpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhVbmlvbltpbnQsIHN0cl0sIEIpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEIsIFVuaW9uW2ludCwgc3RyXSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKEEsIEIpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhVbmlvbltpbnQsIHN0ciwgZmxvYXRdLCBCKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoQSwgVW5pb25baW50LCBzdHJdKQorCisgICAgZGVmIHRlc3RfdmFyX3VuaW9uX3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhULCBVbmlvbltpbnQsIFRdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoS1QsIFVuaW9uW0tULCBWVF0pKQorCisgICAgZGVmIHRlc3RfdmFyX3VuaW9uKHNlbGYpOgorICAgICAgICBUVSA9IFR5cGVWYXIoJ1RVJywgVW5pb25baW50LCBmbG9hdF0sIE5vbmUpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGludCwgVFUpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGZsb2F0LCBUVSkKKworCitjbGFzcyBUdXBsZVRlc3RzKFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoVHVwbGVbaW50LCBzdHJdLCBUdXBsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFR1cGxlW2ludCwgc3RyXSwgVHVwbGVbaW50LCBzdHJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGludCwgVHVwbGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoVHVwbGVbZmxvYXQsIHN0cl0sIFR1cGxlW2ludCwgc3RyXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhUdXBsZVtpbnQsIHN0ciwgaW50XSwgVHVwbGVbaW50LCBzdHJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKFR1cGxlW2ludCwgc3RyXSwgVHVwbGVbaW50LCBzdHIsIGludF0pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh0dXBsZSwgVHVwbGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoVHVwbGUsIHR1cGxlKSkgICMgQ2FuJ3QgaGF2ZSBpdCBib3RoIHdheXMuCisKKyAgICBkZWYgdGVzdF90dXBsZV9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTXlUdXBsZSh0dXBsZSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE15VHVwbGUsIFR1cGxlKSkKKworICAgIGRlZiB0ZXN0X3R1cGxlX2luc3RhbmNlX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGlzaW5zdGFuY2UoKDAsIDApLCBUdXBsZVtpbnQsIGludF0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGlzaW5zdGFuY2UoKDAsIDApLCBUdXBsZSkKKworICAgIGRlZiB0ZXN0X3R1cGxlX2VsbGlwc2lzX3N1YmNsYXNzKHNlbGYpOgorCisgICAgICAgIGNsYXNzIEI6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgQyhCKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoVHVwbGVbQl0sIFR1cGxlW0IsIC4uLl0pCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKFR1cGxlW0MsIC4uLl0sIFR1cGxlW0IsIC4uLl0pCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhUdXBsZVtDLCAuLi5dLCBUdXBsZVtCXSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKFR1cGxlW0NdLCBUdXBsZVtCLCAuLi5dKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFR1cGxlKSwgJ3R5cGluZy5UdXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihUdXBsZVsoKV0pLCAndHlwaW5nLlR1cGxlW10nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoVHVwbGVbaW50LCBmbG9hdF0pLCAndHlwaW5nLlR1cGxlW2ludCwgZmxvYXRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFR1cGxlW2ludCwgLi4uXSksICd0eXBpbmcuVHVwbGVbaW50LCAuLi5dJykKKworICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaXNzdWJjbGFzcyg0MiwgVHVwbGUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGlzc3ViY2xhc3MoNDIsIFR1cGxlW2ludF0pCisKKworY2xhc3MgQ2FsbGFibGVUZXN0cyhUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9zZWxmX3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDYWxsYWJsZVtbaW50XSwgaW50XSwgQ2FsbGFibGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ2FsbGFibGUsIENhbGxhYmxlW1tpbnRdLCBpbnRdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQ2FsbGFibGVbW2ludF0sIGludF0sIENhbGxhYmxlW1tpbnRdLCBpbnRdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENhbGxhYmxlW1tFbXBsb3llZV0sIGludF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsYWJsZVtbTWFuYWdlcl0sIGludF0pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ2FsbGFibGVbW01hbmFnZXJdLCBpbnRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbGFibGVbW0VtcGxveWVlXSwgaW50XSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDYWxsYWJsZVtbaW50XSwgRW1wbG95ZWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbGFibGVbW2ludF0sIE1hbmFnZXJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENhbGxhYmxlW1tpbnRdLCBNYW5hZ2VyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxhYmxlW1tpbnRdLCBFbXBsb3llZV0pKQorCisgICAgZGVmIHRlc3RfZXFfaGFzaChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDYWxsYWJsZVtbaW50XSwgaW50XSwgQ2FsbGFibGVbW2ludF0sIGludF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHtDYWxsYWJsZVtbaW50XSwgaW50XSwgQ2FsbGFibGVbW2ludF0sIGludF19KSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChDYWxsYWJsZVtbaW50XSwgaW50XSwgQ2FsbGFibGVbW2ludF0sIHN0cl0pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoQ2FsbGFibGVbW2ludF0sIGludF0sIENhbGxhYmxlW1tzdHJdLCBpbnRdKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKENhbGxhYmxlW1tpbnRdLCBpbnRdLCBDYWxsYWJsZVtbaW50LCBpbnRdLCBpbnRdKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKENhbGxhYmxlW1tpbnRdLCBpbnRdLCBDYWxsYWJsZVtbXSwgaW50XSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChDYWxsYWJsZVtbaW50XSwgaW50XSwgQ2FsbGFibGUpCisKKyAgICBkZWYgdGVzdF9jYW5ub3Rfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKworICAgICAgICAgICAgY2xhc3MgQyhDYWxsYWJsZSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKworICAgICAgICAgICAgY2xhc3MgQyhDYWxsYWJsZVtbaW50XSwgaW50XSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfY2Fubm90X2luc3RhbnRpYXRlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBDYWxsYWJsZSgpCisgICAgICAgIGMgPSBDYWxsYWJsZVtbaW50XSwgc3RyXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjKCkKKworICAgIGRlZiB0ZXN0X2NhbGxhYmxlX2luc3RhbmNlX3dvcmtzKHNlbGYpOgorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShmLCBDYWxsYWJsZSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKE5vbmUsIENhbGxhYmxlKQorCisgICAgZGVmIHRlc3RfY2FsbGFibGVfaW5zdGFuY2VfdHlwZV9lcnJvcihzZWxmKToKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZiwgQ2FsbGFibGVbW10sIE5vbmVdKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShmLCBDYWxsYWJsZVtbXSwgQW55XSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKE5vbmUsIENhbGxhYmxlW1tdLCBOb25lXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKE5vbmUsIENhbGxhYmxlW1tdLCBBbnldKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgY3QwID0gQ2FsbGFibGVbW10sIGJvb2xdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjdDApLCAndHlwaW5nLkNhbGxhYmxlW1tdLCBib29sXScpCisgICAgICAgIGN0MiA9IENhbGxhYmxlW1tzdHIsIGZsb2F0XSwgaW50XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY3QyKSwgJ3R5cGluZy5DYWxsYWJsZVtbc3RyLCBmbG9hdF0sIGludF0nKQorICAgICAgICBjdHYgPSBDYWxsYWJsZVsuLi4sIHN0cl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGN0diksICd0eXBpbmcuQ2FsbGFibGVbLi4uLCBzdHJdJykKKworICAgIGRlZiB0ZXN0X2NhbGxhYmxlX3dpdGhfZWxsaXBzaXMoc2VsZik6CisKKyAgICAgICAgZGVmIGZvbyhhOiBDYWxsYWJsZVsuLi4sIFRdKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF90eXBlX2hpbnRzKGZvbywgZ2xvYmFscygpLCBsb2NhbHMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogQ2FsbGFibGVbLi4uLCBUXX0pCisKKworWEsgPSBUeXBlVmFyKCdYSycsIHN0ciwgYnl0ZXMpCitYViA9IFR5cGVWYXIoJ1hWJykKKworCitjbGFzcyBTaW1wbGVNYXBwaW5nKEdlbmVyaWNbWEssIFhWXSk6CisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5OiBYSykgLT4gWFY6CisgICAgICAgIC4uLgorCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleTogWEssIHZhbHVlOiBYVik6CisgICAgICAgIC4uLgorCisgICAgZGVmIGdldChzZWxmLCBrZXk6IFhLLCBkZWZhdWx0OiBYViA9IE5vbmUpIC0+IFhWOgorICAgICAgICAuLi4KKworCitjbGFzcyBNeVNpbXBsZU1hcHBpbmcoU2ltcGxlTWFwcGluZyk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuc3RvcmUgPSB7fQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleTogc3RyKToKKyAgICAgICAgcmV0dXJuIHNlbGYuc3RvcmVba2V5XQorCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleTogc3RyLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuc3RvcmVba2V5XSA9IHZhbHVlCisKKyAgICBkZWYgZ2V0KHNlbGYsIGtleTogc3RyLCBkZWZhdWx0PU5vbmUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5zdG9yZVtrZXldCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBkZWZhdWx0CisKKworY2xhc3MgUHJvdG9jb2xUZXN0cyhUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9zdXBwb3J0c19pbnQoc2VsZik6CisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGludCwgdHlwaW5nLlN1cHBvcnRzSW50KQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3Moc3RyLCB0eXBpbmcuU3VwcG9ydHNJbnQpCisKKyAgICBkZWYgdGVzdF9zdXBwb3J0c19mbG9hdChzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoZmxvYXQsIHR5cGluZy5TdXBwb3J0c0Zsb2F0KQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3Moc3RyLCB0eXBpbmcuU3VwcG9ydHNGbG9hdCkKKworICAgIGRlZiB0ZXN0X3N1cHBvcnRzX2NvbXBsZXgoc2VsZik6CisKKyAgICAgICAgIyBOb3RlOiBjb21wbGV4IGl0c2VsZiBkb2Vzbid0IGhhdmUgX19jb21wbGV4X18uCisgICAgICAgIGNsYXNzIEM6CisgICAgICAgICAgICBkZWYgX19jb21wbGV4X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDBqCisKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQywgdHlwaW5nLlN1cHBvcnRzQ29tcGxleCkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKHN0ciwgdHlwaW5nLlN1cHBvcnRzQ29tcGxleCkKKworICAgIGRlZiB0ZXN0X3N1cHBvcnRzX2J5dGVzKHNlbGYpOgorCisgICAgICAgICMgTm90ZTogYnl0ZXMgaXRzZWxmIGRvZXNuJ3QgaGF2ZSBfX2J5dGVzX18uCisgICAgICAgIGNsYXNzIEI6CisgICAgICAgICAgICBkZWYgX19ieXRlc19fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBiJycKKworICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhCLCB0eXBpbmcuU3VwcG9ydHNCeXRlcykKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKHN0ciwgdHlwaW5nLlN1cHBvcnRzQnl0ZXMpCisKKyAgICBkZWYgdGVzdF9zdXBwb3J0c19hYnMoc2VsZik6CisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGZsb2F0LCB0eXBpbmcuU3VwcG9ydHNBYnMpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGludCwgdHlwaW5nLlN1cHBvcnRzQWJzKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3Moc3RyLCB0eXBpbmcuU3VwcG9ydHNBYnMpCisKKyAgICBkZWYgdGVzdF9zdXBwb3J0c19yb3VuZChzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoZmxvYXQsIHR5cGluZy5TdXBwb3J0c1JvdW5kKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhpbnQsIHR5cGluZy5TdXBwb3J0c1JvdW5kKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3Moc3RyLCB0eXBpbmcuU3VwcG9ydHNSb3VuZCkKKworICAgIGRlZiB0ZXN0X3JldmVyc2libGUoc2VsZik6CisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGxpc3QsIHR5cGluZy5SZXZlcnNpYmxlKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoaW50LCB0eXBpbmcuUmV2ZXJzaWJsZSkKKworICAgIGRlZiB0ZXN0X3Byb3RvY29sX2luc3RhbmNlX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGlzaW5zdGFuY2UoW10sIHR5cGluZy5SZXZlcnNpYmxlKQorCisKK2NsYXNzIEdlbmVyaWNUZXN0cyhUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9iYXNpY3Moc2VsZik6CisgICAgICAgIFggPSBTaW1wbGVNYXBwaW5nW3N0ciwgQW55XQorICAgICAgICBZID0gU2ltcGxlTWFwcGluZ1tYSywgc3RyXQorICAgICAgICBYW3N0ciwgc3RyXQorICAgICAgICBZW3N0ciwgc3RyXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBYW2ludCwgc3RyXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBZW3N0ciwgYnl0ZXNdCisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBUID0gVHlwZVZhcignVCcpCisgICAgICAgIFMgPSBUeXBlVmFyKCdTJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgR2VuZXJpY1tULCBUXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBHZW5lcmljW1QsIFMsIFRdCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoU2ltcGxlTWFwcGluZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgX19uYW1lX18gKyAnLicgKyAnU2ltcGxlTWFwcGluZ1t+WEssIH5YVl0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoTXlTaW1wbGVNYXBwaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBfX25hbWVfXyArICcuJyArICdNeVNpbXBsZU1hcHBpbmdbflhLLCB+WFZdJykKKworICAgIGRlZiB0ZXN0X2RpY3Qoc2VsZik6CisgICAgICAgIFQgPSBUeXBlVmFyKCdUJykKKyAgICAgICAgY2xhc3MgQihHZW5lcmljW1RdKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYiA9IEIoKQorICAgICAgICBiLmZvbyA9IDQyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5fX2RpY3RfXywgeydmb28nOiA0Mn0pCisgICAgICAgIGNsYXNzIEMoQltpbnRdKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYyA9IEMoKQorICAgICAgICBjLmJhciA9ICdhYmMnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5fX2RpY3RfXywgeydiYXInOiAnYWJjJ30pCisKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIFQgPSBUeXBlVmFyKCdUJykKKyAgICAgICAgY2xhc3MgQihHZW5lcmljW1RdKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZ2xvYmFsIEMgICMgcGlja2xlIHdhbnRzIHRvIHJlZmVyZW5jZSB0aGUgY2xhc3MgYnkgbmFtZQorICAgICAgICBjbGFzcyBDKEJbaW50XSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGMgPSBDKCkKKyAgICAgICAgYy5mb28gPSA0MgorICAgICAgICBjLmJhciA9ICdhYmMnCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgeiA9IHBpY2tsZS5kdW1wcyhjLCBwcm90bykKKyAgICAgICAgICAgIHggPSBwaWNrbGUubG9hZHMoeikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5mb28sIDQyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmJhciwgJ2FiYycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguX19kaWN0X18sIHsnZm9vJzogNDIsICdiYXInOiAnYWJjJ30pCisKKyAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIEIgPSBTaW1wbGVNYXBwaW5nW1hLLCBBbnldCisKKyAgICAgICAgICAgIGNsYXNzIEMoR2VuZXJpY1tCXSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfcmVwcl8yKHNlbGYpOgorICAgICAgICBQWTMyID0gc3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMywgMykKKworICAgICAgICBjbGFzcyBDKEdlbmVyaWNbVF0pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGFzc2VydCBDLl9fbW9kdWxlX18gPT0gX19uYW1lX18KKyAgICAgICAgaWYgbm90IFBZMzI6CisgICAgICAgICAgICBhc3NlcnQgQy5fX3F1YWxuYW1lX18gPT0gJ0dlbmVyaWNUZXN0cy50ZXN0X3JlcHJfMi48bG9jYWxzPi5DJworICAgICAgICBhc3NlcnQgcmVwcihDKS5zcGxpdCgnLicpWy0xXSA9PSAnQ1t+VF0nCisgICAgICAgIFggPSBDW2ludF0KKyAgICAgICAgYXNzZXJ0IFguX19tb2R1bGVfXyA9PSBfX25hbWVfXworICAgICAgICBpZiBub3QgUFkzMjoKKyAgICAgICAgICAgIGFzc2VydCBYLl9fcXVhbG5hbWVfXyA9PSAnQycKKyAgICAgICAgYXNzZXJ0IHJlcHIoWCkuc3BsaXQoJy4nKVstMV0gPT0gJ0NbaW50XScKKworICAgICAgICBjbGFzcyBZKENbaW50XSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYXNzZXJ0IFkuX19tb2R1bGVfXyA9PSBfX25hbWVfXworICAgICAgICBpZiBub3QgUFkzMjoKKyAgICAgICAgICAgIGFzc2VydCBZLl9fcXVhbG5hbWVfXyA9PSAnR2VuZXJpY1Rlc3RzLnRlc3RfcmVwcl8yLjxsb2NhbHM+LlknCisgICAgICAgIGFzc2VydCByZXByKFkpLnNwbGl0KCcuJylbLTFdID09ICdZW2ludF0nCisKKyAgICBkZWYgdGVzdF9lcV8xKHNlbGYpOgorICAgICAgICBhc3NlcnQgR2VuZXJpYyA9PSBHZW5lcmljCisgICAgICAgIGFzc2VydCBHZW5lcmljW1RdID09IEdlbmVyaWNbVF0KKyAgICAgICAgYXNzZXJ0IEdlbmVyaWNbS1RdICE9IEdlbmVyaWNbVlRdCisKKyAgICBkZWYgdGVzdF9lcV8yKHNlbGYpOgorCisgICAgICAgIGNsYXNzIEEoR2VuZXJpY1tUXSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgQihHZW5lcmljW1RdKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3NlcnQgQSA9PSBBCisgICAgICAgIGFzc2VydCBBICE9IEIKKyAgICAgICAgYXNzZXJ0IEFbVF0gPT0gQVtUXQorICAgICAgICBhc3NlcnQgQVtUXSAhPSBCW1RdCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV9pbmhlcml0YW5jZShzZWxmKToKKworICAgICAgICBjbGFzcyBBKEdlbmVyaWNbVCwgVlRdKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBCKEdlbmVyaWNbS1QsIFRdKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBDKEEsIEdlbmVyaWNbS1QsIFZUXSwgQik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYXNzZXJ0IEMuX19wYXJhbWV0ZXJzX18gPT0gKFQsIFZULCBLVCkKKworICAgIGRlZiB0ZXN0X25lc3RlZChzZWxmKToKKworICAgICAgICBjbGFzcyBHKEdlbmVyaWMpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIFZpc2l0b3IoR1tUXSk6CisKKyAgICAgICAgICAgIGEgPSBOb25lCisKKyAgICAgICAgICAgIGRlZiBzZXQoc2VsZiwgYTogVCk6CisgICAgICAgICAgICAgICAgc2VsZi5hID0gYQorCisgICAgICAgICAgICBkZWYgZ2V0KHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmEKKworICAgICAgICAgICAgZGVmIHZpc2l0KHNlbGYpIC0+IFQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuYQorCisgICAgICAgIFYgPSBWaXNpdG9yW3R5cGluZy5MaXN0W2ludF1dCisKKyAgICAgICAgY2xhc3MgSW50TGlzdFZpc2l0b3IoVik6CisKKyAgICAgICAgICAgIGRlZiBhcHBlbmQoc2VsZiwgeDogaW50KToKKyAgICAgICAgICAgICAgICBzZWxmLmEuYXBwZW5kKHgpCisKKyAgICAgICAgYSA9IEludExpc3RWaXNpdG9yKCkKKyAgICAgICAgYS5zZXQoW10pCisgICAgICAgIGEuYXBwZW5kKDEpCisgICAgICAgIGEuYXBwZW5kKDQyKQorICAgICAgICBhc3NlcnQgYS5nZXQoKSA9PSBbMSwgNDJdCisKKyAgICBkZWYgdGVzdF90eXBlX2VyYXN1cmUoc2VsZik6CisgICAgICAgIFQgPSBUeXBlVmFyKCdUJykKKworICAgICAgICBjbGFzcyBOb2RlKEdlbmVyaWNbVF0pOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxhYmVsOiBULAorICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICdOb2RlW1RdJyA9IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6ICdOb2RlW1RdJyA9IE5vbmUpOgorICAgICAgICAgICAgICAgIHNlbGYubGFiZWwgPSBsYWJlbCAgIyB0eXBlOiBUCisgICAgICAgICAgICAgICAgc2VsZi5sZWZ0ID0gbGVmdCAgIyB0eXBlOiBPcHRpb25hbFtOb2RlW1RdXQorICAgICAgICAgICAgICAgIHNlbGYucmlnaHQgPSByaWdodCAgIyB0eXBlOiBPcHRpb25hbFtOb2RlW1RdXQorCisgICAgICAgIGRlZiBmb28oeDogVCk6CisgICAgICAgICAgICBhID0gTm9kZSh4KQorICAgICAgICAgICAgYiA9IE5vZGVbVF0oeCkKKyAgICAgICAgICAgIGMgPSBOb2RlW0FueV0oeCkKKyAgICAgICAgICAgIGFzc2VydCB0eXBlKGEpIGlzIE5vZGUKKyAgICAgICAgICAgIGFzc2VydCB0eXBlKGIpIGlzIE5vZGUKKyAgICAgICAgICAgIGFzc2VydCB0eXBlKGMpIGlzIE5vZGUKKworICAgICAgICBmb28oNDIpCisKKworY2xhc3MgVmFyaWFuY2VUZXN0cyhUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pbnZhcmlhbmNlKHNlbGYpOgorICAgICAgICAjIEJlY2F1c2Ugb2YgaW52YXJpYW5jZSwgTGlzdFtzdWJjbGFzcyBvZiBYXSBpcyBub3QgYSBzdWJjbGFzcworICAgICAgICAjIG9mIExpc3RbWF0sIGFuZCBkaXR0byBmb3IgTXV0YWJsZVNlcXVlbmNlLgorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3ModHlwaW5nLkxpc3RbTWFuYWdlcl0sIHR5cGluZy5MaXN0W0VtcGxveWVlXSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKHR5cGluZy5NdXRhYmxlU2VxdWVuY2VbTWFuYWdlcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBpbmcuTXV0YWJsZVNlcXVlbmNlW0VtcGxveWVlXSkKKyAgICAgICAgIyBJdCdzIHN0aWxsIHJlZmxleGl2ZS4KKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3ModHlwaW5nLkxpc3RbRW1wbG95ZWVdLCB0eXBpbmcuTGlzdFtFbXBsb3llZV0pCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHR5cGluZy5NdXRhYmxlU2VxdWVuY2VbRW1wbG95ZWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBpbmcuTXV0YWJsZVNlcXVlbmNlW0VtcGxveWVlXSkKKworICAgIGRlZiB0ZXN0X2NvdmFyaWFuY2VfdHVwbGUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgY292YXJpYWNlIGZvciBUdXBsZSAod2hpY2ggYXJlIHJlYWxseSBzcGVjaWFsIGNhc2VzKS4KKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoVHVwbGVbTWFuYWdlcl0sIFR1cGxlW0VtcGxveWVlXSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKFR1cGxlW0VtcGxveWVlXSwgVHVwbGVbTWFuYWdlcl0pCisgICAgICAgICMgQW5kIHBhaXJ3aXNlLgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhUdXBsZVtNYW5hZ2VyLCBNYW5hZ2VyXSwgVHVwbGVbRW1wbG95ZWUsIEVtcGxveWVlXSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKFR1cGxlW0VtcGxveWVlLCBFbXBsb3llZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUdXBsZVtNYW5hZ2VyLCBFbXBsb3llZV0pCisgICAgICAgICMgQW5kIHVzaW5nIGVsbGlwc2lzLgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhUdXBsZVtNYW5hZ2VyLCAuLi5dLCBUdXBsZVtFbXBsb3llZSwgLi4uXSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKFR1cGxlW0VtcGxveWVlLCAuLi5dLCBUdXBsZVtNYW5hZ2VyLCAuLi5dKQorCisgICAgZGVmIHRlc3RfY292YXJpYW5jZV9zZXF1ZW5jZShzZWxmKToKKyAgICAgICAgIyBDaGVjayBjb3ZhcmlhbmNlIGZvciBTZXF1ZW5jZSAod2hpY2ggaXMganVzdCBhIGdlbmVyaWMgY2xhc3MKKyAgICAgICAgIyBmb3IgdGhpcyBwdXJwb3NlLCBidXQgdXNpbmcgYSBjb3ZhcmlhbnQgdHlwZSB2YXJpYWJsZSkuCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHR5cGluZy5TZXF1ZW5jZVtNYW5hZ2VyXSwgdHlwaW5nLlNlcXVlbmNlW0VtcGxveWVlXSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKHR5cGluZy5TZXF1ZW5jZVtFbXBsb3llZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBpbmcuU2VxdWVuY2VbTWFuYWdlcl0pCisKKyAgICBkZWYgdGVzdF9jb3ZhcmlhbmNlX21hcHBpbmcoc2VsZik6CisgICAgICAgICMgRGl0dG8gZm9yIE1hcHBpbmcgKGNvdmFyaWFudCBpbiB0aGUgdmFsdWUsIGludmFyaWFudCBpbiB0aGUga2V5KS4KKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3ModHlwaW5nLk1hcHBpbmdbRW1wbG95ZWUsIE1hbmFnZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBpbmcuTWFwcGluZ1tFbXBsb3llZSwgRW1wbG95ZWVdKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3ModHlwaW5nLk1hcHBpbmdbTWFuYWdlciwgRW1wbG95ZWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwaW5nLk1hcHBpbmdbRW1wbG95ZWUsIEVtcGxveWVlXSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKHR5cGluZy5NYXBwaW5nW0VtcGxveWVlLCBNYW5hZ2VyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGluZy5NYXBwaW5nW01hbmFnZXIsIE1hbmFnZXJdKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3ModHlwaW5nLk1hcHBpbmdbTWFuYWdlciwgRW1wbG95ZWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwaW5nLk1hcHBpbmdbTWFuYWdlciwgTWFuYWdlcl0pCisKKworY2xhc3MgQ2FzdFRlc3RzKFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKKyAgICAgICAgYXNzZXJ0IGNhc3QoaW50LCA0MikgPT0gNDIKKyAgICAgICAgYXNzZXJ0IGNhc3QoZmxvYXQsIDQyKSA9PSA0MgorICAgICAgICBhc3NlcnQgdHlwZShjYXN0KGZsb2F0LCA0MikpIGlzIGludAorICAgICAgICBhc3NlcnQgY2FzdChBbnksIDQyKSA9PSA0MgorICAgICAgICBhc3NlcnQgY2FzdChsaXN0LCA0MikgPT0gNDIKKyAgICAgICAgYXNzZXJ0IGNhc3QoVW5pb25bc3RyLCBmbG9hdF0sIDQyKSA9PSA0MgorICAgICAgICBhc3NlcnQgY2FzdChBbnlTdHIsIDQyKSA9PSA0MgorICAgICAgICBhc3NlcnQgY2FzdChOb25lLCA0MikgPT0gNDIKKworICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgIyBCb2d1cyBjYWxscyBhcmUgbm90IGV4cGVjdGVkIHRvIGZhaWwuCisgICAgICAgIGNhc3QoNDIsIDQyKQorICAgICAgICBjYXN0KCdoZWxsbycsIDQyKQorCisKK2NsYXNzIEZvcndhcmRSZWZUZXN0cyhUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9iYXNpY3Moc2VsZik6CisKKyAgICAgICAgY2xhc3MgTm9kZShHZW5lcmljW1RdKToKKworICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxhYmVsOiBUKToKKyAgICAgICAgICAgICAgICBzZWxmLmxhYmVsID0gbGFiZWwKKyAgICAgICAgICAgICAgICBzZWxmLmxlZnQgPSBzZWxmLnJpZ2h0ID0gTm9uZQorCisgICAgICAgICAgICBkZWYgYWRkX2JvdGgoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAnT3B0aW9uYWxbTm9kZVtUXV0nLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAnTm9kZVtUXScgPSBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWZmOiBpbnQgPSBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWg9Tm9uZSk6CisgICAgICAgICAgICAgICAgc2VsZi5sZWZ0ID0gbGVmdAorICAgICAgICAgICAgICAgIHNlbGYucmlnaHQgPSByaWdodAorCisgICAgICAgICAgICBkZWYgYWRkX2xlZnQoc2VsZiwgbm9kZTogT3B0aW9uYWxbJ05vZGVbVF0nXSk6CisgICAgICAgICAgICAgICAgc2VsZi5hZGRfYm90aChub2RlLCBOb25lKQorCisgICAgICAgICAgICBkZWYgYWRkX3JpZ2h0KHNlbGYsIG5vZGU6ICdOb2RlW1RdJyA9IE5vbmUpOgorICAgICAgICAgICAgICAgIHNlbGYuYWRkX2JvdGgoTm9uZSwgbm9kZSkKKworICAgICAgICB0ID0gTm9kZVtpbnRdCisgICAgICAgIGJvdGhfaGludHMgPSBnZXRfdHlwZV9oaW50cyh0LmFkZF9ib3RoLCBnbG9iYWxzKCksIGxvY2FscygpKQorICAgICAgICBhc3NlcnQgYm90aF9oaW50c1snbGVmdCddID09IGJvdGhfaGludHNbJ3JpZ2h0J10gPT0gT3B0aW9uYWxbTm9kZVtUXV0KKyAgICAgICAgYXNzZXJ0IGJvdGhfaGludHNbJ3N0dWZmJ10gPT0gT3B0aW9uYWxbaW50XQorICAgICAgICBhc3NlcnQgJ2JsYWgnIG5vdCBpbiBib3RoX2hpbnRzCisKKyAgICAgICAgbGVmdF9oaW50cyA9IGdldF90eXBlX2hpbnRzKHQuYWRkX2xlZnQsIGdsb2JhbHMoKSwgbG9jYWxzKCkpCisgICAgICAgIGFzc2VydCBsZWZ0X2hpbnRzWydub2RlJ10gPT0gT3B0aW9uYWxbTm9kZVtUXV0KKworICAgICAgICByaWdodF9oaW50cyA9IGdldF90eXBlX2hpbnRzKHQuYWRkX3JpZ2h0LCBnbG9iYWxzKCksIGxvY2FscygpKQorICAgICAgICBhc3NlcnQgcmlnaHRfaGludHNbJ25vZGUnXSA9PSBPcHRpb25hbFtOb2RlW1RdXQorCisgICAgZGVmIHRlc3RfZm9yd2FyZHJlZl9pbnN0YW5jZV90eXBlX2Vycm9yKHNlbGYpOgorICAgICAgICBmciA9IHR5cGluZy5fRm9yd2FyZFJlZignaW50JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaXNpbnN0YW5jZSg0MiwgZnIpCisKKyAgICBkZWYgdGVzdF91bmlvbl9mb3J3YXJkKHNlbGYpOgorCisgICAgICAgIGRlZiBmb28oYTogVW5pb25bJ1QnXSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfdHlwZV9oaW50cyhmb28sIGdsb2JhbHMoKSwgbG9jYWxzKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYSc6IFVuaW9uW1RdfSkKKworICAgIGRlZiB0ZXN0X3R1cGxlX2ZvcndhcmQoc2VsZik6CisKKyAgICAgICAgZGVmIGZvbyhhOiBUdXBsZVsnVCddKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF90eXBlX2hpbnRzKGZvbywgZ2xvYmFscygpLCBsb2NhbHMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogVHVwbGVbVF19KQorCisgICAgZGVmIHRlc3RfY2FsbGFibGVfZm9yd2FyZChzZWxmKToKKworICAgICAgICBkZWYgZm9vKGE6IENhbGxhYmxlW1snVCddLCAnVCddKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF90eXBlX2hpbnRzKGZvbywgZ2xvYmFscygpLCBsb2NhbHMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogQ2FsbGFibGVbW1RdLCBUXX0pCisKKyAgICBkZWYgdGVzdF9jYWxsYWJsZV93aXRoX2VsbGlwc2lzX2ZvcndhcmQoc2VsZik6CisKKyAgICAgICAgZGVmIGZvbyhhOiAnQ2FsbGFibGVbLi4uLCBUXScpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3R5cGVfaGludHMoZm9vLCBnbG9iYWxzKCksIGxvY2FscygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB7J2EnOiBDYWxsYWJsZVsuLi4sIFRdfSkKKworICAgIGRlZiB0ZXN0X3N5bnRheF9lcnJvcihzZWxmKToKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIEdlbmVyaWNbJy9UJ10KKworICAgIGRlZiB0ZXN0X2RlbGF5ZWRfc3ludGF4X2Vycm9yKHNlbGYpOgorCisgICAgICAgIGRlZiBmb28oYTogJ05vZGVbVCcpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZ2V0X3R5cGVfaGludHMoZm9vKQorCisgICAgZGVmIHRlc3RfdHlwZV9lcnJvcihzZWxmKToKKworICAgICAgICBkZWYgZm9vKGE6IFR1cGxlWyc0MiddKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBnZXRfdHlwZV9oaW50cyhmb28pCisKKyAgICBkZWYgdGVzdF9uYW1lX2Vycm9yKHNlbGYpOgorCisgICAgICAgIGRlZiBmb28oYTogJ05vb2RlW1RdJyk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgZ2V0X3R5cGVfaGludHMoZm9vLCBsb2NhbHMoKSkKKworICAgIGRlZiB0ZXN0X25vX3R5cGVfY2hlY2soc2VsZik6CisKKyAgICAgICAgQG5vX3R5cGVfY2hlY2sKKyAgICAgICAgZGVmIGZvbyhhOiAnd2hhdGV2ZXJzJykgLT4ge306CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgdGggPSBnZXRfdHlwZV9oaW50cyhmb28pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGgsIHt9KQorCisgICAgZGVmIHRlc3Rfbm9fdHlwZV9jaGVja19jbGFzcyhzZWxmKToKKworICAgICAgICBAbm9fdHlwZV9jaGVjaworICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgZGVmIGZvbyhhOiAnd2hhdGV2ZXJzJykgLT4ge306CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGN0aCA9IGdldF90eXBlX2hpbnRzKEMuZm9vKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0aCwge30pCisgICAgICAgIGl0aCA9IGdldF90eXBlX2hpbnRzKEMoKS5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXRoLCB7fSkKKworICAgIGRlZiB0ZXN0X21ldGFfbm9fdHlwZV9jaGVjayhzZWxmKToKKworICAgICAgICBAbm9fdHlwZV9jaGVja19kZWNvcmF0b3IKKyAgICAgICAgZGVmIG1hZ2ljX2RlY29yYXRvcihkZWNvKToKKyAgICAgICAgICAgIHJldHVybiBkZWNvCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWdpY19kZWNvcmF0b3IuX19uYW1lX18sICdtYWdpY19kZWNvcmF0b3InKQorCisgICAgICAgIEBtYWdpY19kZWNvcmF0b3IKKyAgICAgICAgZGVmIGZvbyhhOiAnd2hhdGV2ZXJzJykgLT4ge306CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgQG1hZ2ljX2RlY29yYXRvcgorICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgZGVmIGZvbyhhOiAnd2hhdGV2ZXJzJykgLT4ge306CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLl9fbmFtZV9fLCAnZm9vJykKKyAgICAgICAgdGggPSBnZXRfdHlwZV9oaW50cyhmb28pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGgsIHt9KQorICAgICAgICBjdGggPSBnZXRfdHlwZV9oaW50cyhDLmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdGgsIHt9KQorICAgICAgICBpdGggPSBnZXRfdHlwZV9oaW50cyhDKCkuZm9vKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0aCwge30pCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0X2dsb2JhbHMoc2VsZik6CisgICAgICAgIGNvZGUgPSAoImNsYXNzIEM6XG4iCisgICAgICAgICAgICAgICAgIiAgICBkZWYgZm9vKHNlbGYsIGE6ICdDJykgLT4gJ0QnOiBwYXNzXG4iCisgICAgICAgICAgICAgICAgImNsYXNzIEQ6XG4iCisgICAgICAgICAgICAgICAgIiAgICBkZWYgYmFyKHNlbGYsIGI6ICdEJykgLT4gQzogcGFzc1xuIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgbnMgPSB7fQorICAgICAgICBleGVjKGNvZGUsIG5zKQorICAgICAgICBoaW50cyA9IGdldF90eXBlX2hpbnRzKG5zWydDJ10uZm9vKQorICAgICAgICBhc3NlcnQgaGludHMgPT0geydhJzogbnNbJ0MnXSwgJ3JldHVybic6IG5zWydEJ119CisKKworY2xhc3MgT3ZlcmxvYWRUZXN0cyhUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9vdmVybG9hZF9leGlzdHMoc2VsZik6CisgICAgICAgIGZyb20gdHlwaW5nIGltcG9ydCBvdmVybG9hZAorCisgICAgZGVmIHRlc3Rfb3ZlcmxvYWRfZmFpbHMoc2VsZik6CisgICAgICAgIGZyb20gdHlwaW5nIGltcG9ydCBvdmVybG9hZAorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIEBvdmVybG9hZAorICAgICAgICAgICAgZGVmIGJsYWgoKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKworVF9hID0gVHlwZVZhcignVCcpCisKKworY2xhc3MgQXdhaXRhYmxlV3JhcHBlcih0eXBpbmcuQXdhaXRhYmxlW1RfYV0pOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCisKKyAgICBkZWYgX19hd2FpdF9fKHNlbGYpIC0+IHR5cGluZy5JdGVyYXRvcltUX2FdOgorICAgICAgICB5aWVsZAorICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQorCisKK2NsYXNzIEFzeW5jSXRlcmF0b3JXcmFwcGVyKHR5cGluZy5Bc3luY0l0ZXJhdG9yW1RfYV0pOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlOiB0eXBpbmcuSXRlcmFibGVbVF9hXSk6CisgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQorCisgICAgZGVmIF9fYWl0ZXJfXyhzZWxmKSAtPiB0eXBpbmcuQXN5bmNJdGVyYXRvcltUX2FdOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgQGFzeW5jaW8uY29yb3V0aW5lCisgICAgZGVmIF9fYW5leHRfXyhzZWxmKSAtPiBUX2E6CisgICAgICAgIGRhdGEgPSB5aWVsZCBmcm9tIHNlbGYudmFsdWUKKyAgICAgICAgaWYgZGF0YToKKyAgICAgICAgICAgIHJldHVybiBkYXRhCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24KKworCitjbGFzcyBDb2xsZWN0aW9uc0FiY1Rlc3RzKFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2hhc2hhYmxlKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSg0MiwgdHlwaW5nLkhhc2hhYmxlKQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoW10sIHR5cGluZy5IYXNoYWJsZSkKKworICAgIGRlZiB0ZXN0X2l0ZXJhYmxlKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShbXSwgdHlwaW5nLkl0ZXJhYmxlKQorICAgICAgICAjIER1ZSB0byBBQkMgY2FjaGluZywgdGhlIHNlY29uZCB0aW1lIHRha2VzIGEgc2VwYXJhdGUgY29kZQorICAgICAgICAjIHBhdGggYW5kIGNvdWxkIGZhaWwuICBTbyBjYWxsIHRoaXMgYSBmZXcgdGltZXMuCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKFtdLCB0eXBpbmcuSXRlcmFibGUpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKFtdLCB0eXBpbmcuSXRlcmFibGUpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKFtdLCB0eXBpbmcuSXRlcmFibGVbaW50XSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKDQyLCB0eXBpbmcuSXRlcmFibGUpCisgICAgICAgICMgSnVzdCBpbiBjYXNlLCBhbHNvIHRlc3QgaXNzdWJjbGFzcygpIGEgZmV3IHRpbWVzLgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhsaXN0LCB0eXBpbmcuSXRlcmFibGUpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGxpc3QsIHR5cGluZy5JdGVyYWJsZSkKKworICAgIGRlZiB0ZXN0X2l0ZXJhdG9yKHNlbGYpOgorICAgICAgICBpdCA9IGl0ZXIoW10pCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGl0LCB0eXBpbmcuSXRlcmF0b3IpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGl0LCB0eXBpbmcuSXRlcmF0b3JbaW50XSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKDQyLCB0eXBpbmcuSXRlcmF0b3IpCisKKyAgICBkZWYgdGVzdF9hd2FpdGFibGUoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKSAtPiB0eXBpbmcuQXdhaXRhYmxlW2ludF06CisgICAgICAgICAgICByZXR1cm4gYXdhaXQgQXdhaXRhYmxlV3JhcHBlcig0MikKKyAgICAgICAgZyA9IGZvbygpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHR5cGUoZyksIHR5cGluZy5Bd2FpdGFibGVbaW50XSkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZywgdHlwaW5nLkF3YWl0YWJsZSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKGZvbywgdHlwaW5nLkF3YWl0YWJsZSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3ModHlwaW5nLkF3YWl0YWJsZVtNYW5hZ2VyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwaW5nLkF3YWl0YWJsZVtFbXBsb3llZV0pCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyh0eXBpbmcuQXdhaXRhYmxlW0VtcGxveWVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGluZy5Bd2FpdGFibGVbTWFuYWdlcl0pCisgICAgICAgIGcuc2VuZChOb25lKSAgIyBSdW4gZm9vKCkgdGlsbCBjb21wbGV0aW9uLCB0byBhdm9pZCB3YXJuaW5nLgorCisgICAgZGVmIHRlc3RfYXN5bmNfaXRlcmFibGUoc2VsZik6CisgICAgICAgIGJhc2VfaXQgPSByYW5nZSgxMCkgICMgdHlwZTogSXRlcmF0b3JbaW50XQorICAgICAgICBpdCA9IEFzeW5jSXRlcmF0b3JXcmFwcGVyKGJhc2VfaXQpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGl0LCB0eXBpbmcuQXN5bmNJdGVyYWJsZSkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaXQsIHR5cGluZy5Bc3luY0l0ZXJhYmxlKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh0eXBpbmcuQXN5bmNJdGVyYWJsZVtNYW5hZ2VyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwaW5nLkFzeW5jSXRlcmFibGVbRW1wbG95ZWVdKQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoNDIsIHR5cGluZy5Bc3luY0l0ZXJhYmxlKQorCisgICAgZGVmIHRlc3RfYXN5bmNfaXRlcmF0b3Ioc2VsZik6CisgICAgICAgIGJhc2VfaXQgPSByYW5nZSgxMCkgICMgdHlwZTogSXRlcmF0b3JbaW50XQorICAgICAgICBpdCA9IEFzeW5jSXRlcmF0b3JXcmFwcGVyKGJhc2VfaXQpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGl0LCB0eXBpbmcuQXN5bmNJdGVyYXRvcikKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3ModHlwaW5nLkFzeW5jSXRlcmF0b3JbTWFuYWdlcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGluZy5Bc3luY0l0ZXJhdG9yW0VtcGxveWVlXSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKDQyLCB0eXBpbmcuQXN5bmNJdGVyYXRvcikKKworICAgIGRlZiB0ZXN0X3NpemVkKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShbXSwgdHlwaW5nLlNpemVkKQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoNDIsIHR5cGluZy5TaXplZCkKKworICAgIGRlZiB0ZXN0X2NvbnRhaW5lcihzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoW10sIHR5cGluZy5Db250YWluZXIpCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZSg0MiwgdHlwaW5nLkNvbnRhaW5lcikKKworICAgIGRlZiB0ZXN0X2Fic3RyYWN0c2V0KHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzZXQoKSwgdHlwaW5nLkFic3RyYWN0U2V0KQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoNDIsIHR5cGluZy5BYnN0cmFjdFNldCkKKworICAgIGRlZiB0ZXN0X211dGFibGVzZXQoc2VsZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNldCgpLCB0eXBpbmcuTXV0YWJsZVNldCkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKGZyb3plbnNldCgpLCB0eXBpbmcuTXV0YWJsZVNldCkKKworICAgIGRlZiB0ZXN0X21hcHBpbmcoc2VsZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHt9LCB0eXBpbmcuTWFwcGluZykKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKDQyLCB0eXBpbmcuTWFwcGluZykKKworICAgIGRlZiB0ZXN0X211dGFibGVtYXBwaW5nKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh7fSwgdHlwaW5nLk11dGFibGVNYXBwaW5nKQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoNDIsIHR5cGluZy5NdXRhYmxlTWFwcGluZykKKworICAgIGRlZiB0ZXN0X3NlcXVlbmNlKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShbXSwgdHlwaW5nLlNlcXVlbmNlKQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoNDIsIHR5cGluZy5TZXF1ZW5jZSkKKworICAgIGRlZiB0ZXN0X211dGFibGVzZXF1ZW5jZShzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoW10sIHR5cGluZy5NdXRhYmxlU2VxdWVuY2UpCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZSgoKSwgdHlwaW5nLk11dGFibGVTZXF1ZW5jZSkKKworICAgIGRlZiB0ZXN0X2J5dGVzdHJpbmcoc2VsZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGInJywgdHlwaW5nLkJ5dGVTdHJpbmcpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGJ5dGVhcnJheShiJycpLCB0eXBpbmcuQnl0ZVN0cmluZykKKworICAgIGRlZiB0ZXN0X2xpc3Qoc2VsZik6CisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGxpc3QsIHR5cGluZy5MaXN0KQorCisgICAgZGVmIHRlc3Rfc2V0KHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhzZXQsIHR5cGluZy5TZXQpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhmcm96ZW5zZXQsIHR5cGluZy5TZXQpCisKKyAgICBkZWYgdGVzdF9mcm96ZW5zZXQoc2VsZik6CisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGZyb3plbnNldCwgdHlwaW5nLkZyb3plblNldCkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKHNldCwgdHlwaW5nLkZyb3plblNldCkKKworICAgIGRlZiB0ZXN0X2RpY3Qoc2VsZik6CisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGRpY3QsIHR5cGluZy5EaWN0KQorCisgICAgZGVmIHRlc3Rfbm9fbGlzdF9pbnN0YW50aWF0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBpbmcuTGlzdCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5MaXN0W1RdKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLkxpc3RbaW50XSgpCisKKyAgICBkZWYgdGVzdF9saXN0X3N1YmNsYXNzX2luc3RhbnRpYXRpb24oc2VsZik6CisKKyAgICAgICAgY2xhc3MgTXlMaXN0KHR5cGluZy5MaXN0W2ludF0pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGEgPSBNeUxpc3QoKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShhLCBNeUxpc3QpCisKKyAgICBkZWYgdGVzdF9ub19kaWN0X2luc3RhbnRpYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5EaWN0KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLkRpY3RbS1QsIFZUXSgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5EaWN0W3N0ciwgaW50XSgpCisKKyAgICBkZWYgdGVzdF9kaWN0X3N1YmNsYXNzX2luc3RhbnRpYXRpb24oc2VsZik6CisKKyAgICAgICAgY2xhc3MgTXlEaWN0KHR5cGluZy5EaWN0W3N0ciwgaW50XSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZCA9IE15RGljdCgpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGQsIE15RGljdCkKKworICAgIGRlZiB0ZXN0X25vX3NldF9pbnN0YW50aWF0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBpbmcuU2V0KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLlNldFtUXSgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5TZXRbaW50XSgpCisKKyAgICBkZWYgdGVzdF9zZXRfc3ViY2xhc3NfaW5zdGFudGlhdGlvbihzZWxmKToKKworICAgICAgICBjbGFzcyBNeVNldCh0eXBpbmcuU2V0W2ludF0pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGQgPSBNeVNldCgpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGQsIE15U2V0KQorCisgICAgZGVmIHRlc3Rfbm9fZnJvemVuc2V0X2luc3RhbnRpYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5Gcm96ZW5TZXQoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBpbmcuRnJvemVuU2V0W1RdKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLkZyb3plblNldFtpbnRdKCkKKworICAgIGRlZiB0ZXN0X2Zyb3plbnNldF9zdWJjbGFzc19pbnN0YW50aWF0aW9uKHNlbGYpOgorCisgICAgICAgIGNsYXNzIE15RnJvemVuU2V0KHR5cGluZy5Gcm96ZW5TZXRbaW50XSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZCA9IE15RnJvemVuU2V0KCkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZCwgTXlGcm96ZW5TZXQpCisKKyAgICBkZWYgdGVzdF9ub190dXBsZV9pbnN0YW50aWF0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBUdXBsZSgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFR1cGxlW1RdKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgVHVwbGVbaW50XSgpCisKKyAgICBkZWYgdGVzdF9nZW5lcmF0b3Ioc2VsZik6CisgICAgICAgIGRlZiBmb28oKToKKyAgICAgICAgICAgIHlpZWxkIDQyCisgICAgICAgIGcgPSBmb28oKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh0eXBlKGcpLCB0eXBpbmcuR2VuZXJhdG9yKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh0eXBpbmcuR2VuZXJhdG9yW01hbmFnZXIsIEVtcGxveWVlLCBNYW5hZ2VyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwaW5nLkdlbmVyYXRvcltFbXBsb3llZSwgTWFuYWdlciwgRW1wbG95ZWVdKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3ModHlwaW5nLkdlbmVyYXRvcltNYW5hZ2VyLCBNYW5hZ2VyLCBNYW5hZ2VyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGluZy5HZW5lcmF0b3JbRW1wbG95ZWUsIEVtcGxveWVlLCBFbXBsb3llZV0pCisKKyAgICBkZWYgdGVzdF9ub19nZW5lcmF0b3JfaW5zdGFudGlhdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLkdlbmVyYXRvcigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5HZW5lcmF0b3JbVCwgVCwgVF0oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBpbmcuR2VuZXJhdG9yW2ludCwgaW50LCBpbnRdKCkKKworICAgIGRlZiB0ZXN0X3N1YmNsYXNzaW5nKHNlbGYpOgorCisgICAgICAgIGNsYXNzIE1NQSh0eXBpbmcuTXV0YWJsZU1hcHBpbmcpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKTogICMgSXQncyBhYnN0cmFjdAorICAgICAgICAgICAgTU1BKCkKKworICAgICAgICBjbGFzcyBNTUMoTU1BKToKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAwCisKKyAgICAgICAgYXNzZXJ0IGxlbihNTUMoKSkgPT0gMAorCisgICAgICAgIGNsYXNzIE1NQih0eXBpbmcuTXV0YWJsZU1hcHBpbmdbS1QsIFZUXSk6CisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorCisgICAgICAgIGFzc2VydCBsZW4oTU1CKCkpID09IDAKKyAgICAgICAgYXNzZXJ0IGxlbihNTUJbc3RyLCBzdHJdKCkpID09IDAKKyAgICAgICAgYXNzZXJ0IGxlbihNTUJbS1QsIFZUXSgpKSA9PSAwCisKKworY2xhc3MgTmFtZWRUdXBsZVRlc3RzKFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKKyAgICAgICAgRW1wID0gTmFtZWRUdXBsZSgnRW1wJywgWygnbmFtZScsIHN0ciksICgnaWQnLCBpbnQpXSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoRW1wLCB0dXBsZSkKKyAgICAgICAgam9lID0gRW1wKCdKb2UnLCA0MikKKyAgICAgICAgamltID0gRW1wKG5hbWU9J0ppbScsIGlkPTEpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGpvZSwgRW1wKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShqb2UsIHR1cGxlKQorICAgICAgICBhc3NlcnQgam9lLm5hbWUgPT0gJ0pvZScKKyAgICAgICAgYXNzZXJ0IGpvZS5pZCA9PSA0MgorICAgICAgICBhc3NlcnQgamltLm5hbWUgPT0gJ0ppbScKKyAgICAgICAgYXNzZXJ0IGppbS5pZCA9PSAxCisgICAgICAgIGFzc2VydCBFbXAuX19uYW1lX18gPT0gJ0VtcCcKKyAgICAgICAgYXNzZXJ0IEVtcC5fZmllbGRzID09ICgnbmFtZScsICdpZCcpCisgICAgICAgIGFzc2VydCBFbXAuX2ZpZWxkX3R5cGVzID09IGRpY3QobmFtZT1zdHIsIGlkPWludCkKKworICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgZ2xvYmFsIEVtcCAgIyBwaWNrbGUgd2FudHMgdG8gcmVmZXJlbmNlIHRoZSBjbGFzcyBieSBuYW1lCisgICAgICAgIEVtcCA9IE5hbWVkVHVwbGUoJ0VtcCcsIFsoJ25hbWUnLCBzdHIpLCAoJ2lkJywgaW50KV0pCisgICAgICAgIGphbmUgPSBFbXAoJ2phbmUnLCAzNykKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICB6ID0gcGlja2xlLmR1bXBzKGphbmUsIHByb3RvKQorICAgICAgICAgICAgamFuZTIgPSBwaWNrbGUubG9hZHMoeikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoamFuZTIsIGphbmUpCisKKworY2xhc3MgSU9UZXN0cyhUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pbyhzZWxmKToKKworICAgICAgICBkZWYgc3R1ZmYoYTogSU8pIC0+IEFueVN0cjoKKyAgICAgICAgICAgIHJldHVybiBhLnJlYWRsaW5lKCkKKworICAgICAgICBhID0gc3R1ZmYuX19hbm5vdGF0aW9uc19fWydhJ10KKyAgICAgICAgYXNzZXJ0IGEuX19wYXJhbWV0ZXJzX18gPT0gKEFueVN0ciwpCisKKyAgICBkZWYgdGVzdF90ZXh0aW8oc2VsZik6CisKKyAgICAgICAgZGVmIHN0dWZmKGE6IFRleHRJTykgLT4gc3RyOgorICAgICAgICAgICAgcmV0dXJuIGEucmVhZGxpbmUoKQorCisgICAgICAgIGEgPSBzdHVmZi5fX2Fubm90YXRpb25zX19bJ2EnXQorICAgICAgICBhc3NlcnQgYS5fX3BhcmFtZXRlcnNfXyA9PSAoc3RyLCkKKworICAgIGRlZiB0ZXN0X2JpbmFyeWlvKHNlbGYpOgorCisgICAgICAgIGRlZiBzdHVmZihhOiBCaW5hcnlJTykgLT4gYnl0ZXM6CisgICAgICAgICAgICByZXR1cm4gYS5yZWFkbGluZSgpCisKKyAgICAgICAgYSA9IHN0dWZmLl9fYW5ub3RhdGlvbnNfX1snYSddCisgICAgICAgIGFzc2VydCBhLl9fcGFyYW1ldGVyc19fID09IChieXRlcywpCisKKyAgICBkZWYgdGVzdF9pb19zdWJtb2R1bGUoc2VsZik6CisgICAgICAgIGZyb20gdHlwaW5nLmlvIGltcG9ydCBJTywgVGV4dElPLCBCaW5hcnlJTywgX19hbGxfXywgX19uYW1lX18KKyAgICAgICAgYXNzZXJ0IElPIGlzIHR5cGluZy5JTworICAgICAgICBhc3NlcnQgVGV4dElPIGlzIHR5cGluZy5UZXh0SU8KKyAgICAgICAgYXNzZXJ0IEJpbmFyeUlPIGlzIHR5cGluZy5CaW5hcnlJTworICAgICAgICBhc3NlcnQgc2V0KF9fYWxsX18pID09IHNldChbJ0lPJywgJ1RleHRJTycsICdCaW5hcnlJTyddKQorICAgICAgICBhc3NlcnQgX19uYW1lX18gPT0gJ3R5cGluZy5pbycKKworCitjbGFzcyBSRVRlc3RzKFRlc3RDYXNlKToKKyAgICAjIE11Y2ggb2YgdGhpcyBpcyByZWFsbHkgdGVzdGluZyBfVHlwZUFsaWFzLgorCisgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgorICAgICAgICBwYXQgPSByZS5jb21waWxlKCdbYS16XSsnLCByZS5JKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhwYXQuX19jbGFzc19fLCBQYXR0ZXJuKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh0eXBlKHBhdCksIFBhdHRlcm4pCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHR5cGUocGF0KSwgUGF0dGVybltzdHJdKQorCisgICAgICAgIG1hdCA9IHBhdC5zZWFyY2goJzEyMzQ1YWJjZGUuLi4uLicpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKG1hdC5fX2NsYXNzX18sIE1hdGNoKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhtYXQuX19jbGFzc19fLCBNYXRjaFtzdHJdKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhtYXQuX19jbGFzc19fLCBNYXRjaFtieXRlc10pICAjIFNhZCBidXQgdHJ1ZS4KKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3ModHlwZShtYXQpLCBNYXRjaCkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3ModHlwZShtYXQpLCBNYXRjaFtzdHJdKQorCisgICAgICAgIHAgPSBQYXR0ZXJuW1VuaW9uW3N0ciwgYnl0ZXNdXQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhQYXR0ZXJuW3N0cl0sIFBhdHRlcm4pCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKFBhdHRlcm5bc3RyXSwgcCkKKworICAgICAgICBtID0gTWF0Y2hbVW5pb25bYnl0ZXMsIHN0cl1dCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKE1hdGNoW2J5dGVzXSwgTWF0Y2gpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKE1hdGNoW2J5dGVzXSwgbSkKKworICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgIyBEb2Vzbid0IGZpdCBBbnlTdHIuCisgICAgICAgICAgICBQYXR0ZXJuW2ludF0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgIyBDYW4ndCBjaGFuZ2UgdHlwZSB2YXJzPworICAgICAgICAgICAgTWF0Y2hbVF0KKyAgICAgICAgbSA9IE1hdGNoW1VuaW9uW3N0ciwgYnl0ZXNdXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAjIFRvbyBjb21wbGljYXRlZD8KKyAgICAgICAgICAgIG1bc3RyXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAjIFdlIGRvbid0IHN1cHBvcnQgaXNpbnN0YW5jZSgpLgorICAgICAgICAgICAgaXNpbnN0YW5jZSg0MiwgUGF0dGVybikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgIyBXZSBkb24ndCBzdXBwb3J0IGlzaW5zdGFuY2UoKS4KKyAgICAgICAgICAgIGlzaW5zdGFuY2UoNDIsIFBhdHRlcm5bc3RyXSkKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIGFzc2VydCByZXByKFBhdHRlcm4pID09ICdQYXR0ZXJuW35BbnlTdHJdJworICAgICAgICBhc3NlcnQgcmVwcihQYXR0ZXJuW3N0cl0pID09ICdQYXR0ZXJuW3N0cl0nCisgICAgICAgIGFzc2VydCByZXByKFBhdHRlcm5bYnl0ZXNdKSA9PSAnUGF0dGVybltieXRlc10nCisgICAgICAgIGFzc2VydCByZXByKE1hdGNoKSA9PSAnTWF0Y2hbfkFueVN0cl0nCisgICAgICAgIGFzc2VydCByZXByKE1hdGNoW3N0cl0pID09ICdNYXRjaFtzdHJdJworICAgICAgICBhc3NlcnQgcmVwcihNYXRjaFtieXRlc10pID09ICdNYXRjaFtieXRlc10nCisKKyAgICBkZWYgdGVzdF9yZV9zdWJtb2R1bGUoc2VsZik6CisgICAgICAgIGZyb20gdHlwaW5nLnJlIGltcG9ydCBNYXRjaCwgUGF0dGVybiwgX19hbGxfXywgX19uYW1lX18KKyAgICAgICAgYXNzZXJ0IE1hdGNoIGlzIHR5cGluZy5NYXRjaAorICAgICAgICBhc3NlcnQgUGF0dGVybiBpcyB0eXBpbmcuUGF0dGVybgorICAgICAgICBhc3NlcnQgc2V0KF9fYWxsX18pID09IHNldChbJ01hdGNoJywgJ1BhdHRlcm4nXSkKKyAgICAgICAgYXNzZXJ0IF9fbmFtZV9fID09ICd0eXBpbmcucmUnCisKKyAgICBkZWYgdGVzdF9jYW5ub3Rfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBleDoKKworICAgICAgICAgICAgY2xhc3MgQSh0eXBpbmcuTWF0Y2gpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3NlcnQgc3RyKGV4LmV4Y2VwdGlvbikgPT0gIkEgdHlwZSBhbGlhcyBjYW5ub3QgYmUgc3ViY2xhc3NlZCIKKworCitjbGFzcyBBbGxUZXN0cyhUZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgZm9yIF9fYWxsX18uIiIiCisKKyAgICBkZWYgdGVzdF9hbGwoc2VsZik6CisgICAgICAgIGZyb20gdHlwaW5nIGltcG9ydCBfX2FsbF9fIGFzIGEKKyAgICAgICAgIyBKdXN0IHNwb3QtY2hlY2sgdGhlIGZpcnN0IGFuZCBsYXN0IG9mIGV2ZXJ5IGNhdGVnb3J5LgorICAgICAgICBhc3NlcnQgJ0Fic3RyYWN0U2V0JyBpbiBhCisgICAgICAgIGFzc2VydCAnVmFsdWVzVmlldycgaW4gYQorICAgICAgICBhc3NlcnQgJ2Nhc3QnIGluIGEKKyAgICAgICAgYXNzZXJ0ICdvdmVybG9hZCcgaW4gYQorICAgICAgICBhc3NlcnQgJ2lvJyBpbiBhCisgICAgICAgIGFzc2VydCAncmUnIGluIGEKKyAgICAgICAgIyBTcG90LWNoZWNrIHRoYXQgc3RkbGliIG1vZHVsZXMgYXJlbid0IGV4cG9ydGVkLgorICAgICAgICBhc3NlcnQgJ29zJyBub3QgaW4gYQorICAgICAgICBhc3NlcnQgJ3N5cycgbm90IGluIGEKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91Y24ucHkgYi9MaWIvdGVzdC90ZXN0X3Vjbi5weQppbmRleCAxZTA3ZjY2Li44ZmViZjBhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Vjbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Vjbi5weQpAQCAtMjMzLDggKzIzMyw1IEBACiAgICAgICAgICkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVW5pY29kZU5hbWVzVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmFyeS5weSBiL0xpYi90ZXN0L3Rlc3RfdW5hcnkucHkKaW5kZXggYjgzNTU2NC4uYzNjMTdjYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bmFyeS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuYXJ5LnB5CkBAIC0xLDcgKzEsNiBAQAogIiIiVGVzdCBjb21waWxlciBjaGFuZ2VzIGZvciB1bmFyeSBvcHMgKCssIC0sIH4pIGludHJvZHVjZWQgaW4gUHl0aG9uIDIuMiIiIgogCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIAogY2xhc3MgVW5hcnlPcFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNTAsOSArNDksNSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV2YWwsICJ+Mi4wIikKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFVuYXJ5T3BUZXN0Q2FzZSkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKaW5kZXggZjA0NjkzOC4uZmFjOGI3YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQpAQCAtOCw2ICs4LDcgQEAKIGltcG9ydCBfc3RyaW5nCiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdApAQCAtMzE4LDYgKzMxOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtvcmQoJ2EnKTogTm9uZSwgb3JkKCdiJyk6ICcnfSkKICAgICAgICAgc2VsZi5jaGVja2VxdWFsbm9maXgoJ3h5eXgnLCAneHp4JywgJ3RyYW5zbGF0ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtvcmQoJ3onKTogJ3l5J30pCisKICAgICAgICAgIyB0aGlzIG5lZWRzIG1ha2V0cmFucygpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KCdhYmFiYWJjJywgJ2FiYWJhYmMnLCAndHJhbnNsYXRlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydiJzogJzxpPid9KQpAQCAtMzI3LDYgKzMyOSwzMyBAQAogICAgICAgICB0YmwgPSBzZWxmLnR5cGUydGVzdC5tYWtldHJhbnMoJ2FiYycsICd4eXonLCAnZCcpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KCd4eXp6eScsICdhYmRjZGNiZGRkZCcsICd0cmFuc2xhdGUnLCB0YmwpCiAKKyAgICAgICAgIyB2YXJpb3VzIHRlc3RzIHN3aXRjaGluZyBmcm9tIEFTQ0lJIHRvIGxhdGluMSBvciB0aGUgb3Bwb3NpdGU7CisgICAgICAgICMgc2FtZSBsZW5ndGgsIHJlbW92ZSBhIGxldHRlciwgb3IgcmVwbGFjZSB3aXRoIGEgbG9uZ2VyIHN0cmluZy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW2FdIi50cmFuc2xhdGUoc3RyLm1ha2V0cmFucygnYScsICdYJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJbWF0iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbYV0iLnRyYW5zbGF0ZShzdHIubWFrZXRyYW5zKHsnYSc6ICdYJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiW1hdIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW2FdIi50cmFuc2xhdGUoc3RyLm1ha2V0cmFucyh7J2EnOiBOb25lfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJbXSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlthXSIudHJhbnNsYXRlKHN0ci5tYWtldHJhbnMoeydhJzogJ1hYWCd9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIltYWFhdIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW2FdIi50cmFuc2xhdGUoc3RyLm1ha2V0cmFucyh7J2EnOiAnXHhlOSd9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIltceGU5XSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlthXSIudHJhbnNsYXRlKHN0ci5tYWtldHJhbnMoeydhJzogJzxceGU5Pid9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIls8XHhlOT5dIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x4ZTldIi50cmFuc2xhdGUoc3RyLm1ha2V0cmFucyh7J1x4ZTknOiAnYSd9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIlthXSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltceGU5XSIudHJhbnNsYXRlKHN0ci5tYWtldHJhbnMoeydceGU5JzogTm9uZX0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiW10iKQorCisgICAgICAgICMgaW52YWxpZCBVbmljb2RlIGNoYXJhY3RlcnMKKyAgICAgICAgaW52YWxpZF9jaGFyID0gMHgxMGZmZmYrMQorICAgICAgICBmb3IgYmVmb3JlIGluICJhXHhlOVx1MjBhY1xVMDAxMGZmZmYiOgorICAgICAgICAgICAgbWFwcGluZyA9IHN0ci5tYWtldHJhbnMoe2JlZm9yZTogaW52YWxpZF9jaGFyfSkKKyAgICAgICAgICAgIHRleHQgPSAiWyVzXSIgJSBiZWZvcmUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHRleHQudHJhbnNsYXRlLCBtYXBwaW5nKQorCisgICAgICAgICMgZXJyb3JzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QubWFrZXRyYW5zKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnR5cGUydGVzdC5tYWtldHJhbnMsICdhYmMnLCAnZGVmZycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QubWFrZXRyYW5zLCAyLCAnZGVmJykKQEAgLTEzMTcsMjAgKzEzNDYsMjAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJS4ycycgJSAiYVx4ZTlcdTIwYWMiLCAnYVx4ZTknKQogCiAgICAgICAgICNpc3N1ZSAxOTk5NQotICAgICAgICBjbGFzcyBQc3VlZG9JbnQ6CisgICAgICAgIGNsYXNzIFBzZXVkb0ludDoKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgICAgICAgICAgc2VsZi52YWx1ZSA9IGludCh2YWx1ZSkKICAgICAgICAgICAgIGRlZiBfX2ludF9fKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCiAgICAgICAgICAgICBkZWYgX19pbmRleF9fKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCi0gICAgICAgIGNsYXNzIFBzdWVkb0Zsb2F0OgorICAgICAgICBjbGFzcyBQc2V1ZG9GbG9hdDoKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgICAgICAgICAgc2VsZi52YWx1ZSA9IGZsb2F0KHZhbHVlKQogICAgICAgICAgICAgZGVmIF9faW50X18oc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGludChzZWxmLnZhbHVlKQotICAgICAgICBwaSA9IFBzdWVkb0Zsb2F0KDMuMTQxNSkKLSAgICAgICAgbGV0dGVyX20gPSBQc3VlZG9JbnQoMTA5KQorICAgICAgICBwaSA9IFBzZXVkb0Zsb2F0KDMuMTQxNSkKKyAgICAgICAgbGV0dGVyX20gPSBQc2V1ZG9JbnQoMTA5KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcleCcgJSA0MiwgJzJhJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJVgnICUgMTUsICdGJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJW8nICUgOSwgJzExJykKQEAgLTEzMzksMTEgKzEzNjgsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJVgnICUgbGV0dGVyX20sICc2RCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyVvJyAlIGxldHRlcl9tLCAnMTU1JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJWMnICUgbGV0dGVyX20sICdtJykKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsICcleCcuX19tb2RfXywgcGkpLAotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgJyV4Jy5fX21vZF9fLCAzLjE0KSwKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsICclWCcuX19tb2RfXywgMi4xMSksCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCAnJW8nLl9fbW9kX18sIDEuNzkpLAotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgJyVjJy5fX21vZF9fLCBwaSksCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnJXggZm9ybWF0OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkLCBub3QgZmxvYXQnLCBvcGVyYXRvci5tb2QsICcleCcsIDMuMTQpLAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJyVYIGZvcm1hdDogYW4gaW50ZWdlciBpcyByZXF1aXJlZCwgbm90IGZsb2F0Jywgb3BlcmF0b3IubW9kLCAnJVgnLCAyLjExKSwKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICclbyBmb3JtYXQ6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQsIG5vdCBmbG9hdCcsIG9wZXJhdG9yLm1vZCwgJyVvJywgMS43OSksCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnJXggZm9ybWF0OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkLCBub3QgUHNldWRvRmxvYXQnLCBvcGVyYXRvci5tb2QsICcleCcsIHBpKSwKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5tb2QsICclYycsIHBpKSwKIAogICAgIGRlZiB0ZXN0X2Zvcm1hdHRpbmdfd2l0aF9lbnVtKHNlbGYpOgogICAgICAgICAjIGlzc3VlMTg3ODAKQEAgLTIwNjEsNyArMjA5MCw4IEBACiAgICAgICAgICAgICAnY3A4NjMnLCAnY3A4NjUnLCAnY3A4NjYnLCAnY3AxMTI1JywKICAgICAgICAgICAgICdpc284ODU5XzEwJywgJ2lzbzg4NTlfMTMnLCAnaXNvODg1OV8xNCcsICdpc284ODU5XzE1JywKICAgICAgICAgICAgICdpc284ODU5XzInLCAnaXNvODg1OV8zJywgJ2lzbzg4NTlfNCcsICdpc284ODU5XzUnLCAnaXNvODg1OV82JywKLSAgICAgICAgICAgICdpc284ODU5XzcnLCAnaXNvODg1OV85JywgJ2tvaThfcicsICdsYXRpbl8xJywKKyAgICAgICAgICAgICdpc284ODU5XzcnLCAnaXNvODg1OV85JywKKyAgICAgICAgICAgICdrb2k4X3InLCAna29pOF90JywgJ2tvaThfdScsICdrejEwNDgnLCAnbGF0aW5fMScsCiAgICAgICAgICAgICAnbWFjX2N5cmlsbGljJywgJ21hY19sYXRpbjInLAogCiAgICAgICAgICAgICAnY3AxMjUwJywgJ2NwMTI1MScsICdjcDEyNTInLCAnY3AxMjUzJywgJ2NwMTI1NCcsICdjcDEyNTUnLApAQCAtMjA4OSwxNCArMjExOSwxNCBAQAogICAgICAgICAgICAgJ2NwODYzJywgJ2NwODY1JywgJ2NwODY2JywgJ2NwMTEyNScsCiAgICAgICAgICAgICAnaXNvODg1OV8xMCcsICdpc284ODU5XzEzJywgJ2lzbzg4NTlfMTQnLCAnaXNvODg1OV8xNScsCiAgICAgICAgICAgICAnaXNvODg1OV8yJywgJ2lzbzg4NTlfNCcsICdpc284ODU5XzUnLAotICAgICAgICAgICAgJ2lzbzg4NTlfOScsICdrb2k4X3InLCAnbGF0aW5fMScsCisgICAgICAgICAgICAnaXNvODg1OV85JywgJ2tvaThfcicsICdrb2k4X3UnLCAnbGF0aW5fMScsCiAgICAgICAgICAgICAnbWFjX2N5cmlsbGljJywgJ21hY19sYXRpbjInLAogCiAgICAgICAgICAgICAjIyMgVGhlc2UgaGF2ZSB1bmRlZmluZWQgbWFwcGluZ3M6CiAgICAgICAgICAgICAjJ2NwMTI1MCcsICdjcDEyNTEnLCAnY3AxMjUyJywgJ2NwMTI1MycsICdjcDEyNTQnLCAnY3AxMjU1JywKICAgICAgICAgICAgICMnY3AxMjU2JywgJ2NwMTI1NycsICdjcDEyNTgnLAogICAgICAgICAgICAgIydjcDQyNCcsICdjcDg1NicsICdjcDg1NycsICdjcDg2NCcsICdjcDg2OScsICdjcDg3NCcsCi0gICAgICAgICAgICAjJ2lzbzg4NTlfMycsICdpc284ODU5XzYnLCAnaXNvODg1OV83JywKKyAgICAgICAgICAgICMnaXNvODg1OV8zJywgJ2lzbzg4NTlfNicsICdpc284ODU5XzcnLCAna29pOF90JywgJ2t6MTA0OCcsCiAgICAgICAgICAgICAjJ21hY19ncmVlaycsICdtYWNfaWNlbGFuZCcsJ21hY19yb21hbicsICdtYWNfdHVya2lzaCcsCiAKICAgICAgICAgICAgICMjIyBUaGVzZSBmYWlsIHRoZSByb3VuZC10cmlwOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKaW5kZXggNzA3YjMwZS4uNmVjYzkxMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CkBAIC05LDggKzksNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgaGFzaGxpYgotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCB0ZXN0LnN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiAKIGVuY29kaW5nID0gJ3V0Zi04JwogZXJyb3JzID0gJ3N1cnJvZ2F0ZXBhc3MnCkBAIC0yMSw3ICsyMCw3IEBACiBjbGFzcyBVbmljb2RlTWV0aG9kc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIyB1cGRhdGUgdGhpcywgaWYgdGhlIGRhdGFiYXNlIGNoYW5nZXMKLSAgICBleHBlY3RlZGNoZWNrc3VtID0gJ2U3NGU4NzhkZTcxYjZlNzgwZmZhYzI3MTc4NWMzY2I1OGY2MjUxZjMnCisgICAgZXhwZWN0ZWRjaGVja3N1bSA9ICc1OTcxNzYwODcyYjJmOThiYjljNzAxZTZjMGRiMzI3M2Q3NTZiM2VjJwogCiAgICAgZGVmIHRlc3RfbWV0aG9kX2NoZWNrc3VtKHNlbGYpOgogICAgICAgICBoID0gaGFzaGxpYi5zaGExKCkKQEAgLTc5LDggKzc4LDkgQEAKIAogY2xhc3MgVW5pY29kZUZ1bmN0aW9uc1Rlc3QoVW5pY29kZURhdGFiYXNlVGVzdCk6CiAKLSAgICAjIHVwZGF0ZSB0aGlzLCBpZiB0aGUgZGF0YWJhc2UgY2hhbmdlcwotICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnZjBiNzRkMjY3NzYzMzFjYzdiZGMzYTQ2OThmMDM3ZDczZjJjZWUyYicKKyAgICAjIFVwZGF0ZSB0aGlzIGlmIHRoZSBkYXRhYmFzZSBjaGFuZ2VzLiBNYWtlIHN1cmUgdG8gZG8gYSBmdWxsIHJlYnVpbGQKKyAgICAjIChlLmcuICdtYWtlIGRpc3RjbGVhbiAmJiBtYWtlJykgdG8gZ2V0IHRoZSBjb3JyZWN0IGNoZWNrc3VtLgorICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnNWU3NDgyN2NkMDdmOWU1NDZhMzBmMzRiN2JjZjZjYzJlYWMzOGM4YycKICAgICBkZWYgdGVzdF9mdW5jdGlvbl9jaGVja3N1bShzZWxmKToKICAgICAgICAgZGF0YSA9IFtdCiAgICAgICAgIGggPSBoYXNobGliLnNoYTEoKQpAQCAtMjMzLDE2ICsyMzMsMTIgQEAKICAgICAgICAgY29kZSA9ICJpbXBvcnQgc3lzOyIgXAogICAgICAgICAgICAgInN5cy5tb2R1bGVzWyd1bmljb2RlZGF0YSddID0gTm9uZTsiIFwKICAgICAgICAgICAgICIiImV2YWwoIidcXFxcTntTT0ZUIEhZUEhFTn0nIikiIiIKLSAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwgY29kZV0KLSAgICAgICAgIyBXZSB1c2UgYSBzdWJwcm9jZXNzIGJlY2F1c2UgdGhlIHVuaWNvZGVkYXRhIG1vZHVsZSBtYXkgYWxyZWFkeSBoYXZlCi0gICAgICAgICMgYmVlbiBsb2FkZWQgaW4gdGhpcyBwcm9jZXNzLgotICAgICAgICBwb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgcG9wZW4ud2FpdCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9wZW4ucmV0dXJuY29kZSwgMSkKKyAgICAgICAgIyBXZSB1c2UgYSBzZXBhcmF0ZSBwcm9jZXNzIGJlY2F1c2UgdGhlIHVuaWNvZGVkYXRhIG1vZHVsZSBtYXkgYWxyZWFkeQorICAgICAgICAjIGhhdmUgYmVlbiBsb2FkZWQgaW4gdGhpcyBwcm9jZXNzLgorICAgICAgICByZXN1bHQgPSBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fZmFpbHVyZSgiLWMiLCBjb2RlKQogICAgICAgICBlcnJvciA9ICJTeW50YXhFcnJvcjogKHVuaWNvZGUgZXJyb3IpIFxcTiBlc2NhcGVzIG5vdCBzdXBwb3J0ZWQgIiBcCiAgICAgICAgICAgICAiKGNhbid0IGxvYWQgdW5pY29kZWRhdGEgbW9kdWxlKSIKLSAgICAgICAgc2VsZi5hc3NlcnRJbihlcnJvciwgcG9wZW4uc3RkZXJyLnJlYWQoKS5kZWNvZGUoImFzY2lpIikpCi0gICAgICAgIHBvcGVuLnN0ZGVyci5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXJyb3IsIHJlc3VsdC5lcnIuZGVjb2RlKCJhc2NpaSIpKQogCiAgICAgZGVmIHRlc3RfZGVjaW1hbF9udW1lcmljX2NvbnNpc3RlbnQoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IGRlY2ltYWwgYW5kIG51bWVyaWMgYXJlIGNvbnNpc3RlbnQsCkBAIC0zMTIsMTIgKzMwOCw1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGluZXMpLCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJcdSUuNHggc2hvdWxkIG5vdCBiZSBhIGxpbmVicmVhayIgJSBpKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgVW5pY29kZU1pc2NUZXN0LAotICAgICAgICBVbmljb2RlTWV0aG9kc1Rlc3QsCi0gICAgICAgIFVuaWNvZGVGdW5jdGlvbnNUZXN0Ci0gICAgKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VucGFjay5weSBiL0xpYi90ZXN0L3Rlc3RfdW5wYWNrLnB5CmluZGV4IGIxYzQ4M2QuLmQxY2NiMzggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5wYWNrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5wYWNrLnB5CkBAIC03Niw3ICs3Niw3IEBACiAgICAgPj4+IGEsIGIsIGMsIGQgPSBTZXEoKQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgotICAgIFZhbHVlRXJyb3I6IG5lZWQgbW9yZSB0aGFuIDMgdmFsdWVzIHRvIHVucGFjaworICAgIFZhbHVlRXJyb3I6IG5vdCBlbm91Z2ggdmFsdWVzIHRvIHVucGFjayAoZXhwZWN0ZWQgNCwgZ290IDMpCiAKIFVucGFja2luZyBzZXF1ZW5jZSB0b28gbG9uZwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VucGFja19leC5weSBiL0xpYi90ZXN0L3Rlc3RfdW5wYWNrX2V4LnB5CmluZGV4IGFlMmRjYmQuLmQyN2VlZjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5wYWNrX2V4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5wYWNrX2V4LnB5CkBAIC03MSw4ICs3MSwxODggQEAKICAgICA+Pj4gYSA9PSAwIGFuZCBiID09IFsxLCAyLCAzXSBhbmQgYyA9PSA0IGFuZCBkID09IFswLCAxLCAyLCAzXSBhbmQgZSA9PSA0CiAgICAgVHJ1ZQogCitBc3NpZ25tZW50IHVucGFja2luZworCisgICAgPj4+IGEsIGIsICpjID0gcmFuZ2UoNSkKKyAgICA+Pj4gYSwgYiwgYworICAgICgwLCAxLCBbMiwgMywgNF0pCisgICAgPj4+ICphLCBiLCBjID0gYSwgYiwgKmMKKyAgICA+Pj4gYSwgYiwgYworICAgIChbMCwgMSwgMl0sIDMsIDQpCisKK1NldCBkaXNwbGF5IGVsZW1lbnQgdW5wYWNraW5nCisKKyAgICA+Pj4gYSA9IFsxLCAyLCAzXQorICAgID4+PiBzb3J0ZWQoezEsICphLCAwLCA0fSkKKyAgICBbMCwgMSwgMiwgMywgNF0KKworICAgID4+PiB7MSwgKjEsIDAsIDR9CisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiAnaW50JyBvYmplY3QgaXMgbm90IGl0ZXJhYmxlCisKK0RpY3QgZGlzcGxheSBlbGVtZW50IHVucGFja2luZworCisgICAgPj4+IGt3ZHMgPSB7J3onOiAwLCAndyc6IDEyfQorICAgID4+PiBzb3J0ZWQoeyd4JzogMSwgJ3knOiAyLCAqKmt3ZHN9Lml0ZW1zKCkpCisgICAgWygndycsIDEyKSwgKCd4JywgMSksICgneScsIDIpLCAoJ3onLCAwKV0KKworICAgID4+PiBzb3J0ZWQoeyoqeyd4JzogMX0sICd5JzogMiwgKip7J3onOiAzfX0uaXRlbXMoKSkKKyAgICBbKCd4JywgMSksICgneScsIDIpLCAoJ3onLCAzKV0KKworICAgID4+PiBzb3J0ZWQoeyoqeyd4JzogMX0sICd5JzogMiwgKip7J3gnOiAzfX0uaXRlbXMoKSkKKyAgICBbKCd4JywgMyksICgneScsIDIpXQorCisgICAgPj4+IHNvcnRlZCh7Kip7J3gnOiAxfSwgKip7J3gnOiAzfSwgJ3gnOiA0fS5pdGVtcygpKQorICAgIFsoJ3gnLCA0KV0KKworICAgID4+PiB7Kip7fX0KKyAgICB7fQorCisgICAgPj4+IGEgPSB7fQorICAgID4+PiB7KiphfVswXSA9IDEKKyAgICA+Pj4gYQorICAgIHt9CisKKyAgICA+Pj4geyoqMX0KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgVHlwZUVycm9yOiAnaW50JyBvYmplY3QgaXMgbm90IGEgbWFwcGluZworCisgICAgPj4+IHsqKltdfQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAuLi4KKyAgICBUeXBlRXJyb3I6ICdsaXN0JyBvYmplY3QgaXMgbm90IGEgbWFwcGluZworCisgICAgPj4+IGxlbihldmFsKCJ7IiArICIsICIuam9pbigiKip7e3t9OiB7fX19Ii5mb3JtYXQoaSwgaSkKKyAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMDApKSArICJ9IikpCisgICAgMTAwMAorCisgICAgPj4+IHswOjEsICoqezA6Mn0sIDA6MywgMDo0fQorICAgIHswOiA0fQorCitMaXN0IGNvbXByZWhlbnNpb24gZWxlbWVudCB1bnBhY2tpbmcKKworICAgID4+PiBhLCBiLCBjID0gWzAsIDEsIDJdLCAzLCA0CisgICAgPj4+IFsqYSwgYiwgY10KKyAgICBbMCwgMSwgMiwgMywgNF0KKworICAgID4+PiBsID0gW2EsICgzLCA0KSwgezV9LCB7NjogTm9uZX0sIChpIGZvciBpIGluIHJhbmdlKDcsIDEwKSldCisgICAgPj4+IFsqaXRlbSBmb3IgaXRlbSBpbiBsXQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAuLi4KKyAgICBTeW50YXhFcnJvcjogaXRlcmFibGUgdW5wYWNraW5nIGNhbm5vdCBiZSB1c2VkIGluIGNvbXByZWhlbnNpb24KKworICAgID4+PiBbKlswLCAxXSBmb3IgaSBpbiByYW5nZSgxMCldCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgIFN5bnRheEVycm9yOiBpdGVyYWJsZSB1bnBhY2tpbmcgY2Fubm90IGJlIHVzZWQgaW4gY29tcHJlaGVuc2lvbgorCisgICAgPj4+IFsqJ2EnIGZvciBpIGluIHJhbmdlKDEwKV0KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgU3ludGF4RXJyb3I6IGl0ZXJhYmxlIHVucGFja2luZyBjYW5ub3QgYmUgdXNlZCBpbiBjb21wcmVoZW5zaW9uCisKKyAgICA+Pj4gWypbXSBmb3IgaSBpbiByYW5nZSgxMCldCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgIFN5bnRheEVycm9yOiBpdGVyYWJsZSB1bnBhY2tpbmcgY2Fubm90IGJlIHVzZWQgaW4gY29tcHJlaGVuc2lvbgorCitHZW5lcmF0b3IgZXhwcmVzc2lvbiBpbiBmdW5jdGlvbiBhcmd1bWVudHMKKworICAgID4+PiBsaXN0KCp4IGZvciB4IGluIChyYW5nZSg1KSBmb3IgaSBpbiByYW5nZSgzKSkpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgICAgICBsaXN0KCp4IGZvciB4IGluIChyYW5nZSg1KSBmb3IgaSBpbiByYW5nZSgzKSkpCisgICAgICAgICAgICAgICAgICBeCisgICAgU3ludGF4RXJyb3I6IGludmFsaWQgc3ludGF4CisKKyAgICA+Pj4gZGljdCgqKnggZm9yIHggaW4gW3sxOjJ9XSkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgICAgIGRpY3QoKip4IGZvciB4IGluIFt7MToyfV0pCisgICAgICAgICAgICAgICAgICAgXgorICAgIFN5bnRheEVycm9yOiBpbnZhbGlkIHN5bnRheAorCitJdGVyYWJsZSBhcmd1bWVudCB1bnBhY2tpbmcKKworICAgID4+PiBwcmludCgqWzFdLCAqWzJdLCAzKQorICAgIDEgMiAzCisKK01ha2Ugc3VyZSB0aGF0IHRoZXkgZG9uJ3QgY29ycnVwdCB0aGUgcGFzc2VkLWluIGRpY3RzLgorCisgICAgPj4+IGRlZiBmKHgsIHkpOgorICAgIC4uLiAgICAgcHJpbnQoeCwgeSkKKyAgICAuLi4KKyAgICA+Pj4gb3JpZ2luYWxfZGljdCA9IHsneCc6IDF9CisgICAgPj4+IGYoKipvcmlnaW5hbF9kaWN0LCB5PTIpCisgICAgMSAyCisgICAgPj4+IG9yaWdpbmFsX2RpY3QKKyAgICB7J3gnOiAxfQorCiBOb3cgZm9yIHNvbWUgZmFpbHVyZXMKIAorTWFrZSBzdXJlIHRoZSByYWlzZWQgZXJyb3JzIGFyZSByaWdodCBmb3Iga2V5d29yZCBhcmd1bWVudCB1bnBhY2tpbmdzCisKKyAgICA+Pj4gZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE11dGFibGVNYXBwaW5nCisgICAgPj4+IGNsYXNzIENyYXp5RGljdChNdXRhYmxlTWFwcGluZyk6CisgICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5kID0ge30KKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAuLi4gICAgICAgICBmb3IgeCBpbiBzZWxmLmQuX19pdGVyX18oKToKKyAgICAuLi4gICAgICAgICAgICAgaWYgeCA9PSAnYyc6CisgICAgLi4uICAgICAgICAgICAgICAgICBzZWxmLmRbJ3onXSA9IDEwCisgICAgLi4uICAgICAgICAgICAgIHlpZWxkIHgKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gc2VsZi5kW2tdCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gbGVuKHNlbGYuZCkKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrLCB2KToKKyAgICAuLi4gICAgICAgICBzZWxmLmRba10gPSB2CisgICAgLi4uCisgICAgLi4uICAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwgayk6CisgICAgLi4uICAgICAgICAgZGVsIHNlbGYuZFtrXQorICAgIC4uLgorICAgID4+PiBkID0gQ3JhenlEaWN0KCkKKyAgICA+Pj4gZC5kID0ge2NocihvcmQoJ2EnKSArIHgpOiB4IGZvciB4IGluIHJhbmdlKDUpfQorICAgID4+PiBlID0geyoqZH0KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgUnVudGltZUVycm9yOiBkaWN0aW9uYXJ5IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uCisKKyAgICA+Pj4gZC5kID0ge2NocihvcmQoJ2EnKSArIHgpOiB4IGZvciB4IGluIHJhbmdlKDUpfQorICAgID4+PiBkZWYgZigqKmt3YXJncyk6IHByaW50KGt3YXJncykKKyAgICA+Pj4gZigqKmQpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgIFJ1bnRpbWVFcnJvcjogZGljdGlvbmFyeSBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgorCitPdmVycmlkZGVuIHBhcmFtZXRlcnMKKworICAgID4+PiBmKHg9NSwgKip7J3gnOiAzfSwgeT0yKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgJ3gnCisKKyAgICA+Pj4gZigqKnsneCc6IDN9LCB4PTUsIHk9MikKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICd4JworCisgICAgPj4+IGYoKip7J3gnOiAzfSwgKip7J3gnOiA1fSwgeT0yKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgJ3gnCisKKyAgICA+Pj4gZigqKnsxOiAzfSwgKip7MTogNX0pCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkga2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzCisKIFVucGFja2luZyBub24tc2VxdWVuY2UKIAogICAgID4+PiBhLCAqYiA9IDcKQEAgLTg1LDcgKzI2NSwxNCBAQAogICAgID4+PiBhLCAqYiwgYywgZCwgZSA9IFNlcSgpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgVmFsdWVFcnJvcjogbmVlZCBtb3JlIHRoYW4gMyB2YWx1ZXMgdG8gdW5wYWNrCisgICAgVmFsdWVFcnJvcjogbm90IGVub3VnaCB2YWx1ZXMgdG8gdW5wYWNrIChleHBlY3RlZCBhdCBsZWFzdCA0LCBnb3QgMykKKworVW5wYWNraW5nIHNlcXVlbmNlIHRvbyBzaG9ydCBhbmQgdGFyZ2V0IGFwcGVhcnMgbGFzdAorCisgICAgPj4+IGEsIGIsIGMsIGQsICplID0gU2VxKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBWYWx1ZUVycm9yOiBub3QgZW5vdWdoIHZhbHVlcyB0byB1bnBhY2sgKGV4cGVjdGVkIGF0IGxlYXN0IDQsIGdvdCAzKQogCiBVbnBhY2tpbmcgYSBzZXF1ZW5jZSB3aGVyZSB0aGUgdGVzdCBmb3IgdG9vIGxvbmcgcmFpc2VzIGEgZGlmZmVyZW50IGtpbmQgb2YKIGVycm9yCkBAIC0xMzEsMTcgKzMxOCwxNyBAQAogICAgID4+PiAqYSAjIGRvY3Rlc3Q6K0VMTElQU0lTCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgU3ludGF4RXJyb3I6IGNhbiB1c2Ugc3RhcnJlZCBleHByZXNzaW9uIG9ubHkgYXMgYXNzaWdubWVudCB0YXJnZXQKKyAgICBTeW50YXhFcnJvcjogY2FuJ3QgdXNlIHN0YXJyZWQgZXhwcmVzc2lvbiBoZXJlCiAKICAgICA+Pj4gKjEgIyBkb2N0ZXN0OitFTExJUFNJUwogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgotICAgIFN5bnRheEVycm9yOiBjYW4gdXNlIHN0YXJyZWQgZXhwcmVzc2lvbiBvbmx5IGFzIGFzc2lnbm1lbnQgdGFyZ2V0CisgICAgU3ludGF4RXJyb3I6IGNhbid0IHVzZSBzdGFycmVkIGV4cHJlc3Npb24gaGVyZQogCiAgICAgPj4+IHggPSAqYSAjIGRvY3Rlc3Q6K0VMTElQU0lTCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgU3ludGF4RXJyb3I6IGNhbiB1c2Ugc3RhcnJlZCBleHByZXNzaW9uIG9ubHkgYXMgYXNzaWdubWVudCB0YXJnZXQKKyAgICBTeW50YXhFcnJvcjogY2FuJ3QgdXNlIHN0YXJyZWQgZXhwcmVzc2lvbiBoZXJlCiAKIFNvbWUgc2l6ZSBjb25zdHJhaW50cyAoYWxsIGZhaWwuKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5CmluZGV4IGUxMDAwMzkuLjU3ZWVlYWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5CkBAIC0xMCw3ICsxMCwxMCBAQAogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgb3MKLWltcG9ydCBzc2wKK3RyeToKKyAgICBpbXBvcnQgc3NsCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgc3NsID0gTm9uZQogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiBmcm9tIG50dXJsMnBhdGggaW1wb3J0IHVybDJwYXRobmFtZSwgcGF0aG5hbWUydXJsCkBAIC0zODAsNiArMzgzLDcgQEAKICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJyxEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHVybGxpYi5yZXF1ZXN0LlVSTG9wZW5lcigpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzc2wsICJzc2wgbW9kdWxlIHJlcXVpcmVkIikKICAgICBkZWYgdGVzdF9jYWZpbGVfYW5kX2NvbnRleHQoc2VsZik6CiAgICAgICAgIGNvbnRleHQgPSBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CkBAIC0xMzMxLDcgKzEzMzUsNyBAQAogIyAgICAgc2Vydi5zZXR0aW1lb3V0KDMpCiAjICAgICBzZXJ2LnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19SRVVTRUFERFIsIDEpCiAjICAgICBzZXJ2LmJpbmQoKCIiLCA5MDkzKSkKLSMgICAgIHNlcnYubGlzdGVuKDUpCisjICAgICBzZXJ2Lmxpc3RlbigpCiAjICAgICB0cnk6CiAjICAgICAgICAgY29ubiwgYWRkciA9IHNlcnYuYWNjZXB0KCkKICMgICAgICAgICBjb25uLnNlbmQoIjEgSG9sYSBtdW5kb1xuIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQppbmRleCA3ZDQxZWExLi5hNTI4MWQ4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CkBAIC0xMSw3ICsxMSw5IEBACiBpbXBvcnQgdXJsbGliLnJlcXVlc3QKICMgVGhlIHByb3h5IGJ5cGFzcyBtZXRob2QgaW1wb3J0ZWQgYmVsb3cgaGFzIGxvZ2ljIHNwZWNpZmljIHRvIHRoZSBPU1gKICMgcHJveHkgY29uZmlnIGRhdGEgc3RydWN0dXJlIGJ1dCBpcyB0ZXN0YWJsZSBvbiBhbGwgcGxhdGZvcm1zLgotZnJvbSB1cmxsaWIucmVxdWVzdCBpbXBvcnQgUmVxdWVzdCwgT3BlbmVyRGlyZWN0b3IsIF9wYXJzZV9wcm94eSwgX3Byb3h5X2J5cGFzc19tYWNvc3hfc3lzY29uZgorZnJvbSB1cmxsaWIucmVxdWVzdCBpbXBvcnQgKFJlcXVlc3QsIE9wZW5lckRpcmVjdG9yLCBIVFRQQmFzaWNBdXRoSGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoLCBfcGFyc2VfcHJveHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Byb3h5X2J5cGFzc19tYWNvc3hfc3lzY29uZikKIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQogaW1wb3J0IHVybGxpYi5lcnJvcgogaW1wb3J0IGh0dHAuY2xpZW50CkBAIC0yMSw2ICsyMyw3IEBACiAjIENhY2hlRlRQSGFuZGxlciAoaGFyZCB0byB3cml0ZSkKICMgcGFyc2Vfa2Vxdl9saXN0LCBwYXJzZV9odHRwX2xpc3QsIEhUVFBEaWdlc3RBdXRoSGFuZGxlcgogCisKIGNsYXNzIFRyaXZpYWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9fX2FsbF9fKHNlbGYpOgpAQCAtNzEsNiArNzQsNyBAQAogICAgICAgICBlcnIgPSB1cmxsaWIuZXJyb3IuVVJMRXJyb3IoJ3JlYXNvbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXJyLnJlYXNvbiwgc3RyKGVycikpCiAKKwogY2xhc3MgUmVxdWVzdEhkcnNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9yZXF1ZXN0X2hlYWRlcnNfZGljdChzZWxmKToKQEAgLTEzMCw3ICsxMzQsNiBAQAogICAgICAgICByZXEucmVtb3ZlX2hlYWRlcigiVW5yZWRpcmVjdGVkLXNwYW0iKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlcS5oYXNfaGVhZGVyKCJVbnJlZGlyZWN0ZWQtc3BhbSIpKQogCi0KICAgICBkZWYgdGVzdF9wYXNzd29yZF9tYW5hZ2VyKHNlbGYpOgogICAgICAgICBtZ3IgPSB1cmxsaWIucmVxdWVzdC5IVFRQUGFzc3dvcmRNZ3IoKQogICAgICAgICBhZGQgPSBtZ3IuYWRkX3Bhc3N3b3JkCkBAIC0yMzQsNDMgKzIzNyw2MCBAQAogCiBjbGFzcyBNb2NrT3BlbmVyOgogICAgIGFkZGhlYWRlcnMgPSBbXQorCiAgICAgZGVmIG9wZW4oc2VsZiwgcmVxLCBkYXRhPU5vbmUsIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VUKToKICAgICAgICAgc2VsZi5yZXEsIHNlbGYuZGF0YSwgc2VsZi50aW1lb3V0ID0gcmVxLCBkYXRhLCB0aW1lb3V0CisKICAgICBkZWYgZXJyb3Ioc2VsZiwgcHJvdG8sICphcmdzKToKICAgICAgICAgc2VsZi5wcm90bywgc2VsZi5hcmdzID0gcHJvdG8sIGFyZ3MKIAorCiBjbGFzcyBNb2NrRmlsZToKLSAgICBkZWYgcmVhZChzZWxmLCBjb3VudD1Ob25lKTogcGFzcwotICAgIGRlZiByZWFkbGluZShzZWxmLCBjb3VudD1Ob25lKTogcGFzcwotICAgIGRlZiBjbG9zZShzZWxmKTogcGFzcworICAgIGRlZiByZWFkKHNlbGYsIGNvdW50PU5vbmUpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgcmVhZGxpbmUoc2VsZiwgY291bnQ9Tm9uZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgcGFzcworCiAKIGNsYXNzIE1vY2tIZWFkZXJzKGRpY3QpOgogICAgIGRlZiBnZXRoZWFkZXJzKHNlbGYsIG5hbWUpOgogICAgICAgICByZXR1cm4gbGlzdChzZWxmLnZhbHVlcygpKQogCisKIGNsYXNzIE1vY2tSZXNwb25zZShpby5TdHJpbmdJTyk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvZGUsIG1zZywgaGVhZGVycywgZGF0YSwgdXJsPU5vbmUpOgogICAgICAgICBpby5TdHJpbmdJTy5fX2luaXRfXyhzZWxmLCBkYXRhKQogICAgICAgICBzZWxmLmNvZGUsIHNlbGYubXNnLCBzZWxmLmhlYWRlcnMsIHNlbGYudXJsID0gY29kZSwgbXNnLCBoZWFkZXJzLCB1cmwKKwogICAgIGRlZiBpbmZvKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5oZWFkZXJzCisKICAgICBkZWYgZ2V0dXJsKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi51cmwKIAorCiBjbGFzcyBNb2NrQ29va2llSmFyOgogICAgIGRlZiBhZGRfY29va2llX2hlYWRlcihzZWxmLCByZXF1ZXN0KToKICAgICAgICAgc2VsZi5hY2hfcmVxID0gcmVxdWVzdAorCiAgICAgZGVmIGV4dHJhY3RfY29va2llcyhzZWxmLCByZXNwb25zZSwgcmVxdWVzdCk6CiAgICAgICAgIHNlbGYuZWNfcmVxLCBzZWxmLmVjX3IgPSByZXF1ZXN0LCByZXNwb25zZQogCisKIGNsYXNzIEZha2VNZXRob2Q6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGhfbmFtZSwgYWN0aW9uLCBoYW5kbGUpOgogICAgICAgICBzZWxmLm1ldGhfbmFtZSA9IG1ldGhfbmFtZQogICAgICAgICBzZWxmLmhhbmRsZSA9IGhhbmRsZQogICAgICAgICBzZWxmLmFjdGlvbiA9IGFjdGlvbgorCiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzKToKICAgICAgICAgcmV0dXJuIHNlbGYuaGFuZGxlKHNlbGYubWV0aF9uYW1lLCBzZWxmLmFjdGlvbiwgKmFyZ3MpCiAKKwogY2xhc3MgTW9ja0hUVFBSZXNwb25zZShpby5JT0Jhc2UpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcCwgbXNnLCBzdGF0dXMsIHJlYXNvbik6CiAgICAgICAgIHNlbGYuZnAgPSBmcApAQCAtMzI0LDI0ICszNDQsMzEgQEAKICAgICAgICAgICAgIHNlbGYuZGF0YSA9IGJvZHkKICAgICAgICAgaWYgc2VsZi5yYWlzZV9vbl9lbmRoZWFkZXJzOgogICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigpCisKICAgICBkZWYgZ2V0cmVzcG9uc2Uoc2VsZik6CiAgICAgICAgIHJldHVybiBNb2NrSFRUUFJlc3BvbnNlKE1vY2tGaWxlKCksIHt9LCAyMDAsICJPSyIpCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIHBhc3MKIAorCiBjbGFzcyBNb2NrSGFuZGxlcjoKICAgICAjIHVzZWZ1bCBmb3IgdGVzdGluZyBoYW5kbGVyIG1hY2hpbmVyeQogICAgICMgc2VlIGFkZF9vcmRlcmVkX21vY2tfaGFuZGxlcnMoKSBkb2NzdHJpbmcKICAgICBoYW5kbGVyX29yZGVyID0gNTAwCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0aG9kcyk6CiAgICAgICAgIHNlbGYuX2RlZmluZV9tZXRob2RzKG1ldGhvZHMpCisKICAgICBkZWYgX2RlZmluZV9tZXRob2RzKHNlbGYsIG1ldGhvZHMpOgogICAgICAgICBmb3Igc3BlYyBpbiBtZXRob2RzOgotICAgICAgICAgICAgaWYgbGVuKHNwZWMpID09IDI6IG5hbWUsIGFjdGlvbiA9IHNwZWMKLSAgICAgICAgICAgIGVsc2U6IG5hbWUsIGFjdGlvbiA9IHNwZWMsIE5vbmUKKyAgICAgICAgICAgIGlmIGxlbihzcGVjKSA9PSAyOgorICAgICAgICAgICAgICAgIG5hbWUsIGFjdGlvbiA9IHNwZWMKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmFtZSwgYWN0aW9uID0gc3BlYywgTm9uZQogICAgICAgICAgICAgbWV0aCA9IEZha2VNZXRob2QobmFtZSwgYWN0aW9uLCBzZWxmLmhhbmRsZSkKICAgICAgICAgICAgIHNldGF0dHIoc2VsZi5fX2NsYXNzX18sIG5hbWUsIG1ldGgpCisKICAgICBkZWYgaGFuZGxlKHNlbGYsIGZuX25hbWUsIGFjdGlvbiwgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgIHNlbGYucGFyZW50LmNhbGxzLmFwcGVuZCgoc2VsZiwgZm5fbmFtZSwgYXJncywga3dkcykpCiAgICAgICAgIGlmIGFjdGlvbiBpcyBOb25lOgpAQCAtMzY0LDE2ICszOTEsMjEgQEAKICAgICAgICAgZWxpZiBhY3Rpb24gPT0gInJhaXNlIjoKICAgICAgICAgICAgIHJhaXNlIHVybGxpYi5lcnJvci5VUkxFcnJvcigiYmxhaCIpCiAgICAgICAgIGFzc2VydCBGYWxzZQotICAgIGRlZiBjbG9zZShzZWxmKTogcGFzcworCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBwYXNzCisKICAgICBkZWYgYWRkX3BhcmVudChzZWxmLCBwYXJlbnQpOgogICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAogICAgICAgICBzZWxmLnBhcmVudC5jYWxscyA9IFtdCisKICAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKICAgICAgICAgaWYgbm90IGhhc2F0dHIob3RoZXIsICJoYW5kbGVyX29yZGVyIik6CiAgICAgICAgICAgICAjIE5vIGhhbmRsZXJfb3JkZXIsIGxlYXZlIGluIG9yaWdpbmFsIG9yZGVyLiAgWXVjay4KICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBzZWxmLmhhbmRsZXJfb3JkZXIgPCBvdGhlci5oYW5kbGVyX29yZGVyCiAKKwogZGVmIGFkZF9vcmRlcmVkX21vY2tfaGFuZGxlcnMob3BlbmVyLCBtZXRoX3NwZWMpOgogICAgICIiIkNyZWF0ZSBNb2NrSGFuZGxlcnMgYW5kIGFkZCB0aGVtIHRvIGFuIE9wZW5lckRpcmVjdG9yLgogCkBAIC0zOTYsNyArNDI4LDkgQEAKICAgICBoYW5kbGVycyA9IFtdCiAgICAgY291bnQgPSAwCiAgICAgZm9yIG1ldGhzIGluIG1ldGhfc3BlYzoKLSAgICAgICAgY2xhc3MgTW9ja0hhbmRsZXJTdWJjbGFzcyhNb2NrSGFuZGxlcik6IHBhc3MKKyAgICAgICAgY2xhc3MgTW9ja0hhbmRsZXJTdWJjbGFzcyhNb2NrSGFuZGxlcik6CisgICAgICAgICAgICBwYXNzCisKICAgICAgICAgaCA9IE1vY2tIYW5kbGVyU3ViY2xhc3MobWV0aHMpCiAgICAgICAgIGguaGFuZGxlcl9vcmRlciArPSBjb3VudAogICAgICAgICBoLmFkZF9wYXJlbnQob3BlbmVyKQpAQCAtNDA1LDEyICs0MzksMTQgQEAKICAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGgpCiAgICAgcmV0dXJuIGhhbmRsZXJzCiAKKwogZGVmIGJ1aWxkX3Rlc3Rfb3BlbmVyKCpoYW5kbGVyX2luc3RhbmNlcyk6CiAgICAgb3BlbmVyID0gT3BlbmVyRGlyZWN0b3IoKQogICAgIGZvciBoIGluIGhhbmRsZXJfaW5zdGFuY2VzOgogICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoaCkKICAgICByZXR1cm4gb3BlbmVyCiAKKwogY2xhc3MgTW9ja0hUVFBIYW5kbGVyKHVybGxpYi5yZXF1ZXN0LkJhc2VIYW5kbGVyKToKICAgICAjIHVzZWZ1bCBmb3IgdGVzdGluZyByZWRpcmVjdGlvbnMgYW5kIGF1dGgKICAgICAjIHNlbmRzIHN1cHBsaWVkIGhlYWRlcnMgYW5kIGNvZGUgYXMgZmlyc3QgcmVzcG9uc2UKQEAgLTQxOSw5ICs0NTUsMTEgQEAKICAgICAgICAgc2VsZi5jb2RlID0gY29kZQogICAgICAgICBzZWxmLmhlYWRlcnMgPSBoZWFkZXJzCiAgICAgICAgIHNlbGYucmVzZXQoKQorCiAgICAgZGVmIHJlc2V0KHNlbGYpOgogICAgICAgICBzZWxmLl9jb3VudCA9IDAKICAgICAgICAgc2VsZi5yZXF1ZXN0cyA9IFtdCisKICAgICBkZWYgaHR0cF9vcGVuKHNlbGYsIHJlcSk6CiAgICAgICAgIGltcG9ydCBlbWFpbCwgaHR0cC5jbGllbnQsIGNvcHkKICAgICAgICAgc2VsZi5yZXF1ZXN0cy5hcHBlbmQoY29weS5kZWVwY29weShyZXEpKQpAQCAtNDM2LDYgKzQ3NCw3IEBACiAgICAgICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKCJcclxuXHJcbiIpCiAgICAgICAgICAgICByZXR1cm4gTW9ja1Jlc3BvbnNlKDIwMCwgIk9LIiwgbXNnLCAiIiwgcmVxLmdldF9mdWxsX3VybCgpKQogCisKIGNsYXNzIE1vY2tIVFRQU0hhbmRsZXIodXJsbGliLnJlcXVlc3QuQWJzdHJhY3RIVFRQSGFuZGxlcik6CiAgICAgIyBVc2VmdWwgZm9yIHRlc3RpbmcgdGhlIFByb3h5LUF1dGhvcml6YXRpb24gcmVxdWVzdCBieSB2ZXJpZnlpbmcgdGhlCiAgICAgIyBwcm9wZXJ0aWVzIG9mIGh0dHBjb24KQEAgLTQ0NywxMiArNDg2LDMzIEBACiAgICAgZGVmIGh0dHBzX29wZW4oc2VsZiwgcmVxKToKICAgICAgICAgcmV0dXJuIHNlbGYuZG9fb3BlbihzZWxmLmh0dHBjb25uLCByZXEpCiAKKworY2xhc3MgTW9ja0hUVFBIYW5kbGVyQ2hlY2tBdXRoKHVybGxpYi5yZXF1ZXN0LkJhc2VIYW5kbGVyKToKKyAgICAjIHVzZWZ1bCBmb3IgdGVzdGluZyBhdXRoCisgICAgIyBzZW5kcyBzdXBwbGllZCBjb2RlIHJlc3BvbnNlCisgICAgIyBjaGVja3MgaWYgYXV0aCBoZWFkZXIgaXMgc3BlY2lmaWVkIGluIHJlcXVlc3QKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY29kZSk6CisgICAgICAgIHNlbGYuY29kZSA9IGNvZGUKKyAgICAgICAgc2VsZi5oYXNfYXV0aF9oZWFkZXIgPSBGYWxzZQorCisgICAgZGVmIHJlc2V0KHNlbGYpOgorICAgICAgICBzZWxmLmhhc19hdXRoX2hlYWRlciA9IEZhbHNlCisKKyAgICBkZWYgaHR0cF9vcGVuKHNlbGYsIHJlcSk6CisgICAgICAgIGlmIHJlcS5oYXNfaGVhZGVyKCdBdXRob3JpemF0aW9uJyk6CisgICAgICAgICAgICBzZWxmLmhhc19hdXRoX2hlYWRlciA9IFRydWUKKyAgICAgICAgbmFtZSA9IGh0dHAuY2xpZW50LnJlc3BvbnNlc1tzZWxmLmNvZGVdCisgICAgICAgIHJldHVybiBNb2NrUmVzcG9uc2Uoc2VsZi5jb2RlLCBuYW1lLCBNb2NrRmlsZSgpLCAiIiwgcmVxLmdldF9mdWxsX3VybCgpKQorCisKKwogY2xhc3MgTW9ja1Bhc3N3b3JkTWFuYWdlcjoKICAgICBkZWYgYWRkX3Bhc3N3b3JkKHNlbGYsIHJlYWxtLCB1cmksIHVzZXIsIHBhc3N3b3JkKToKICAgICAgICAgc2VsZi5yZWFsbSA9IHJlYWxtCiAgICAgICAgIHNlbGYudXJsID0gdXJpCiAgICAgICAgIHNlbGYudXNlciA9IHVzZXIKICAgICAgICAgc2VsZi5wYXNzd29yZCA9IHBhc3N3b3JkCisKICAgICBkZWYgZmluZF91c2VyX3Bhc3N3b3JkKHNlbGYsIHJlYWxtLCBhdXRodXJpKToKICAgICAgICAgc2VsZi50YXJnZXRfcmVhbG0gPSByZWFsbQogICAgICAgICBzZWxmLnRhcmdldF91cmwgPSBhdXRodXJpCkBAIC01MTcsMTEgKzU3NywxMSBAQAogICAgIGRlZiB0ZXN0X2hhbmRsZXJfb3JkZXIoc2VsZik6CiAgICAgICAgIG8gPSBPcGVuZXJEaXJlY3RvcigpCiAgICAgICAgIGhhbmRsZXJzID0gW10KLSAgICAgICAgZm9yIG1ldGhzLCBoYW5kbGVyX29yZGVyIGluIFsKLSAgICAgICAgICAgIChbKCJodHRwX29wZW4iLCAicmV0dXJuIHNlbGYiKV0sIDUwMCksCi0gICAgICAgICAgICAoWyJodHRwX29wZW4iXSwgMCksCi0gICAgICAgICAgICBdOgotICAgICAgICAgICAgY2xhc3MgTW9ja0hhbmRsZXJTdWJjbGFzcyhNb2NrSGFuZGxlcik6IHBhc3MKKyAgICAgICAgZm9yIG1ldGhzLCBoYW5kbGVyX29yZGVyIGluIFsoWygiaHR0cF9vcGVuIiwgInJldHVybiBzZWxmIildLCA1MDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbImh0dHBfb3BlbiJdLCAwKV06CisgICAgICAgICAgICBjbGFzcyBNb2NrSGFuZGxlclN1YmNsYXNzKE1vY2tIYW5kbGVyKToKKyAgICAgICAgICAgICAgICBwYXNzCisKICAgICAgICAgICAgIGggPSBNb2NrSGFuZGxlclN1YmNsYXNzKG1ldGhzKQogICAgICAgICAgICAgaC5oYW5kbGVyX29yZGVyID0gaGFuZGxlcl9vcmRlcgogICAgICAgICAgICAgaGFuZGxlcnMuYXBwZW5kKGgpCkBAIC01NTksNyArNjE5LDggQEAKICAgICAgICAgaGFuZGxlcnMgPSBhZGRfb3JkZXJlZF9tb2NrX2hhbmRsZXJzKG8sIG1ldGhfc3BlYykKIAogICAgICAgICBjbGFzcyBVbmtub3duOgotICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6IHJldHVybiBUcnVlCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iKQogICAgICAgICBvLm9wZW4ocmVxKQpAQCAtNTcyLDcgKzYzMyw2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChoYW5kbGVyLCBtZXRob2RfbmFtZSksIGdvdFs6Ml0pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIGdvdFsyXSkKIAotCiAgICAgZGVmIHRlc3RfcHJvY2Vzc29ycyhzZWxmKToKICAgICAgICAgIyAqX3JlcXVlc3QgLyAqX3Jlc3BvbnNlIG1ldGhvZHMgZ2V0IGNhbGxlZCBhcHByb3ByaWF0ZWx5CiAgICAgICAgIG8gPSBPcGVuZXJEaXJlY3RvcigpCkBAIC02MDgsNiArNjY4LDcgQEAKICAgICAgICAgICAgICAgICBpZiBhcmdzWzFdIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYXJnc1sxXSwgTW9ja1Jlc3BvbnNlKQogCisKIGRlZiBzYW5lcGF0aG5hbWUydXJsKHBhdGgpOgogICAgIHRyeToKICAgICAgICAgcGF0aC5lbmNvZGUoInV0Zi04IikKQEAgLTYxOSwxOCArNjgwLDI1IEBACiAgICAgIyBYWFggZG9uJ3QgYXNrIG1lIGFib3V0IHRoZSBtYWMuLi4KICAgICByZXR1cm4gdXJscGF0aAogCisKIGNsYXNzIEhhbmRsZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9mdHAoc2VsZik6CiAgICAgICAgIGNsYXNzIE1vY2tGVFBXcmFwcGVyOgotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOiBzZWxmLmRhdGEgPSBkYXRhCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YSk6CisgICAgICAgICAgICAgICAgc2VsZi5kYXRhID0gZGF0YQorCiAgICAgICAgICAgICBkZWYgcmV0cmZpbGUoc2VsZiwgZmlsZW5hbWUsIGZpbGV0eXBlKToKICAgICAgICAgICAgICAgICBzZWxmLmZpbGVuYW1lLCBzZWxmLmZpbGV0eXBlID0gZmlsZW5hbWUsIGZpbGV0eXBlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGlvLlN0cmluZ0lPKHNlbGYuZGF0YSksIGxlbihzZWxmLmRhdGEpCi0gICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6IHBhc3MKKworICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKIAogICAgICAgICBjbGFzcyBOdWxsRlRQSGFuZGxlcih1cmxsaWIucmVxdWVzdC5GVFBIYW5kbGVyKToKLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhKTogc2VsZi5kYXRhID0gZGF0YQorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgorICAgICAgICAgICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKKwogICAgICAgICAgICAgZGVmIGNvbm5lY3RfZnRwKHNlbGYsIHVzZXIsIHBhc3N3ZCwgaG9zdCwgcG9ydCwgZGlycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCk6CiAgICAgICAgICAgICAgICAgc2VsZi51c2VyLCBzZWxmLnBhc3N3ZCA9IHVzZXIsIHBhc3N3ZApAQCAtODY4LDcgKzkzNiw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaC5kb19yZXF1ZXN0XywgcmVxKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSksMzApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpLCAzMCkKIAogICAgICAgICBmaWxlX29iai5jbG9zZSgpCiAKQEAgLTkwMSwxMiArOTY5LDEyIEBACiAKICAgICAgICAgICAgICMgQ2hlY2sgd2hldGhlciBob3N0IGlzIGRldGVybWluZWQgY29ycmVjdGx5IGlmIHRoZXJlIGlzIG5vIHByb3h5CiAgICAgICAgICAgICBucF9kc19yZXEgPSBoLmRvX3JlcXVlc3RfKGRzX3JlcSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnBfZHNfcmVxLnVucmVkaXJlY3RlZF9oZHJzWyJIb3N0Il0sImV4YW1wbGUuY29tIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnBfZHNfcmVxLnVucmVkaXJlY3RlZF9oZHJzWyJIb3N0Il0sICJleGFtcGxlLmNvbSIpCiAKICAgICAgICAgICAgICMgQ2hlY2sgd2hldGhlciBob3N0IGlzIGRldGVybWluZWQgY29ycmVjdGx5IGlmIHRoZXJlIGlzIGEgcHJveHkKLSAgICAgICAgICAgIGRzX3JlcS5zZXRfcHJveHkoInNvbWVwcm94eTozMTI4IixOb25lKQorICAgICAgICAgICAgZHNfcmVxLnNldF9wcm94eSgic29tZXByb3h5OjMxMjgiLCBOb25lKQogICAgICAgICAgICAgcF9kc19yZXEgPSBoLmRvX3JlcXVlc3RfKGRzX3JlcSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocF9kc19yZXEudW5yZWRpcmVjdGVkX2hkcnNbIkhvc3QiXSwiZXhhbXBsZS5jb20iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwX2RzX3JlcS51bnJlZGlyZWN0ZWRfaGRyc1siSG9zdCJdLCAiZXhhbXBsZS5jb20iKQogCiAgICAgZGVmIHRlc3RfZnVsbF91cmxfc2V0dGVyKHNlbGYpOgogICAgICAgICAjIENoZWNrcyB0byBlbnN1cmUgdGhhdCBjb21wb25lbnRzIGFyZSBzZXQgY29ycmVjdGx5IGFmdGVyIHNldHRpbmcgdGhlCkBAIC05NDgsMTUgKzEwMTYsMTQgQEAKICAgICAgICAgd2VpcmRfdXJsID0gJ2h0dHA6Ly93d3cucHl0aG9uLm9yZz9nZXRzcGFtJwogICAgICAgICByZXEgPSBSZXF1ZXN0KHdlaXJkX3VybCkKICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLmhvc3QsJ3d3dy5weXRob24ub3JnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuc2VsZWN0b3IsJy8/Z2V0c3BhbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLmhvc3QsICd3d3cucHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLnNlbGVjdG9yLCAnLz9nZXRzcGFtJykKIAogICAgICAgICB1cmxfd2l0aG91dF9wYXRoID0gJ2h0dHA6Ly93d3cucHl0aG9uLm9yZycKICAgICAgICAgcmVxID0gUmVxdWVzdCh1cmxfd2l0aG91dF9wYXRoKQogICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuaG9zdCwnd3d3LnB5dGhvbi5vcmcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5zZWxlY3RvciwnJykKLQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5ob3N0LCAnd3d3LnB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5zZWxlY3RvciwgJycpCiAKICAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CiAgICAgICAgIGggPSB1cmxsaWIucmVxdWVzdC5IVFRQRXJyb3JQcm9jZXNzb3IoKQpAQCAtMTA0Myw2ICsxMTEwLDcgQEAKICAgICAgICAgIyBsb29wIGRldGVjdGlvbgogICAgICAgICByZXEgPSBSZXF1ZXN0KGZyb21fdXJsKQogICAgICAgICByZXEudGltZW91dCA9IHNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVAorCiAgICAgICAgIGRlZiByZWRpcmVjdChoLCByZXEsIHVybD10b191cmwpOgogICAgICAgICAgICAgaC5odHRwX2Vycm9yXzMwMihyZXEsIE1vY2tGaWxlKCksIDMwMiwgIkJsYWgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2NrSGVhZGVycyh7ImxvY2F0aW9uIjogdXJsfSkpCkBAIC0xMDczLDcgKzExNDEsNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsbGliLnJlcXVlc3QuSFRUUFJlZGlyZWN0SGFuZGxlci5tYXhfcmVkaXJlY3Rpb25zKQogCi0KICAgICBkZWYgdGVzdF9pbnZhbGlkX3JlZGlyZWN0KHNlbGYpOgogICAgICAgICBmcm9tX3VybCA9ICJodHRwOi8vZXhhbXBsZS5jb20vYS5odG1sIgogICAgICAgICB2YWxpZF9zY2hlbWVzID0gWydodHRwJywnaHR0cHMnLCdmdHAnXQpAQCAtMTE3Niw3ICsxMjQzLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInd3dy5weXRob24ub3JnIikKICAgICAgICAgZGVsIG9zLmVudmlyb25bJ25vX3Byb3h5J10KIAotCiAgICAgZGVmIHRlc3RfcHJveHlfaHR0cHMoc2VsZik6CiAgICAgICAgIG8gPSBPcGVuZXJEaXJlY3RvcigpCiAgICAgICAgIHBoID0gdXJsbGliLnJlcXVlc3QuUHJveHlIYW5kbGVyKGRpY3QoaHR0cHM9InByb3h5LmV4YW1wbGUuY29tOjMxMjgiKSkKQEAgLTEyMDAsMjEgKzEyNjYsMjEgQEAKICAgICAgICAgaHR0cHNfaGFuZGxlciA9IE1vY2tIVFRQU0hhbmRsZXIoKQogICAgICAgICBvLmFkZF9oYW5kbGVyKGh0dHBzX2hhbmRsZXIpCiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tLyIpCi0gICAgICAgIHJlcS5hZGRfaGVhZGVyKCJQcm94eS1BdXRob3JpemF0aW9uIiwiRm9vQmFyIikKLSAgICAgICAgcmVxLmFkZF9oZWFkZXIoIlVzZXItQWdlbnQiLCJHcmFpbCIpCisgICAgICAgIHJlcS5hZGRfaGVhZGVyKCJQcm94eS1BdXRob3JpemF0aW9uIiwgIkZvb0JhciIpCisgICAgICAgIHJlcS5hZGRfaGVhZGVyKCJVc2VyLUFnZW50IiwgIkdyYWlsIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInd3dy5leGFtcGxlLmNvbSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlcS5fdHVubmVsX2hvc3QpCiAgICAgICAgIG8ub3BlbihyZXEpCiAgICAgICAgICMgVmVyaWZ5IFByb3h5LUF1dGhvcml6YXRpb24gZ2V0cyB0dW5uZWxlZCB0byByZXF1ZXN0LgogICAgICAgICAjIGh0dHBzY29ubiByZXFfaGVhZGVycyBkbyBub3QgaGF2ZSB0aGUgUHJveHktQXV0aG9yaXphdGlvbiBoZWFkZXIgYnV0CiAgICAgICAgICMgdGhlIHJlcSB3aWxsIGhhdmUuCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oKCJQcm94eS1BdXRob3JpemF0aW9uIiwiRm9vQmFyIiksCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oKCJQcm94eS1BdXRob3JpemF0aW9uIiwgIkZvb0JhciIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBzX2hhbmRsZXIuaHR0cGNvbm4ucmVxX2hlYWRlcnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oKCJVc2VyLUFnZW50IiwiR3JhaWwiKSwKKyAgICAgICAgc2VsZi5hc3NlcnRJbigoIlVzZXItQWdlbnQiLCAiR3JhaWwiKSwKICAgICAgICAgICAgICAgICAgICAgICBodHRwc19oYW5kbGVyLmh0dHBjb25uLnJlcV9oZWFkZXJzKQogICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZXEuX3R1bm5lbF9ob3N0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAicHJveHkuZXhhbXBsZS5jb206MzEyOCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9oZWFkZXIoIlByb3h5LWF1dGhvcml6YXRpb24iKSwiRm9vQmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hlYWRlcigiUHJveHktYXV0aG9yaXphdGlvbiIpLCAiRm9vQmFyIikKIAogICAgICMgVE9ETzogVGhpcyBzaG91bGQgYmUgb25seSBmb3IgT1NYCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nLCAib25seSByZWxldmFudCBmb3IgT1NYIikKQEAgLTEyNDYsNyArMTMxMiw3IEBACiAgICAgICAgIHJlYWxtID0gIkFDTUUgV2lkZ2V0IFN0b3JlIgogICAgICAgICBodHRwX2hhbmRsZXIgPSBNb2NrSFRUUEhhbmRsZXIoCiAgICAgICAgICAgICA0MDEsICdXV1ctQXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT0lcyVzJXNcclxuXHJcbicgJQotICAgICAgICAgICAgKHF1b3RlX2NoYXIsIHJlYWxtLCBxdW90ZV9jaGFyKSApCisgICAgICAgICAgICAocXVvdGVfY2hhciwgcmVhbG0sIHF1b3RlX2NoYXIpKQogICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoYXV0aF9oYW5kbGVyKQogICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoaHR0cF9oYW5kbGVyKQogICAgICAgICBzZWxmLl90ZXN0X2Jhc2ljX2F1dGgob3BlbmVyLCBhdXRoX2hhbmRsZXIsICJBdXRob3JpemF0aW9uIiwKQEAgLTEzMDQsMTMgKzEzNzAsMTYgQEAKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgICAgICAgICBPcGVuZXJEaXJlY3Rvci5fX2luaXRfXyhzZWxmKQogICAgICAgICAgICAgICAgIHNlbGYucmVjb3JkZWQgPSBbXQorCiAgICAgICAgICAgICBkZWYgcmVjb3JkKHNlbGYsIGluZm8pOgogICAgICAgICAgICAgICAgIHNlbGYucmVjb3JkZWQuYXBwZW5kKGluZm8pCisKICAgICAgICAgY2xhc3MgVGVzdERpZ2VzdEF1dGhIYW5kbGVyKHVybGxpYi5yZXF1ZXN0LkhUVFBEaWdlc3RBdXRoSGFuZGxlcik6CiAgICAgICAgICAgICBkZWYgaHR0cF9lcnJvcl80MDEoc2VsZiwgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXJlbnQucmVjb3JkKCJkaWdlc3QiKQogICAgICAgICAgICAgICAgIHVybGxpYi5yZXF1ZXN0LkhUVFBEaWdlc3RBdXRoSGFuZGxlci5odHRwX2Vycm9yXzQwMShzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICphcmdzLCAqKmt3ZHMpCisKICAgICAgICAgY2xhc3MgVGVzdEJhc2ljQXV0aEhhbmRsZXIodXJsbGliLnJlcXVlc3QuSFRUUEJhc2ljQXV0aEhhbmRsZXIpOgogICAgICAgICAgICAgZGVmIGh0dHBfZXJyb3JfNDAxKHNlbGYsICphcmdzLCAqKmt3ZHMpOgogICAgICAgICAgICAgICAgIHNlbGYucGFyZW50LnJlY29yZCgiYmFzaWMiKQpAQCAtMTM0Niw3ICsxNDE1LDcgQEAKICAgICAgICAgICAgIDQwMSwgJ1dXVy1BdXRoZW50aWNhdGU6IEtlcmJlcm9zXHJcblxyXG4nKQogICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoZGlnZXN0X2F1dGhfaGFuZGxlcikKICAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGh0dHBfaGFuZGxlcikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcixvcGVuZXIub3BlbiwiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9wZW5lci5vcGVuLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpCiAKICAgICBkZWYgdGVzdF91bnN1cHBvcnRlZF9hdXRoX2Jhc2ljX2hhbmRsZXIoc2VsZik6CiAgICAgICAgICMgV2hpbGUgdXNpbmcgQmFzaWNBdXRoSGFuZGxlcgpAQCAtMTM1Niw3ICsxNDI1LDcgQEAKICAgICAgICAgICAgIDQwMSwgJ1dXVy1BdXRoZW50aWNhdGU6IE5UTE1cclxuXHJcbicpCiAgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihiYXNpY19hdXRoX2hhbmRsZXIpCiAgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihodHRwX2hhbmRsZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3Isb3BlbmVyLm9wZW4sImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcGVuZXIub3BlbiwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKQogCiAgICAgZGVmIF90ZXN0X2Jhc2ljX2F1dGgoc2VsZiwgb3BlbmVyLCBhdXRoX2hhbmRsZXIsIGF1dGhfaGVhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxtLCBodHRwX2hhbmRsZXIsIHBhc3N3b3JkX21hbmFnZXIsCkBAIC0xMzk1LDYgKzE0NjQsNzIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaHR0cF9oYW5kbGVyLnJlcXVlc3RzKSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShodHRwX2hhbmRsZXIucmVxdWVzdHNbMF0uaGFzX2hlYWRlcihhdXRoX2hlYWRlcikpCiAKKyAgICBkZWYgdGVzdF9iYXNpY19wcmlvcl9hdXRoX2F1dG9fc2VuZChzZWxmKToKKyAgICAgICAgIyBBc3N1bWUgYWxyZWFkeSBhdXRoZW50aWNhdGVkIGlmIGlzX2F1dGhlbnRpY2F0ZWQ9VHJ1ZQorICAgICAgICAjIGZvciBBUElzIGxpa2UgR2l0aHViIHRoYXQgZG9uJ3QgcmV0dXJuIDQwMQorCisgICAgICAgIHVzZXIsIHBhc3N3b3JkID0gIndpbGUiLCAiY295b3RlIgorICAgICAgICByZXF1ZXN0X3VybCA9ICJodHRwOi8vYWNtZS5leGFtcGxlLmNvbS9wcm90ZWN0ZWQiCisKKyAgICAgICAgaHR0cF9oYW5kbGVyID0gTW9ja0hUVFBIYW5kbGVyQ2hlY2tBdXRoKDIwMCkKKworICAgICAgICBwd2RfbWFuYWdlciA9IEhUVFBQYXNzd29yZE1ncldpdGhQcmlvckF1dGgoKQorICAgICAgICBhdXRoX3ByaW9yX2hhbmRsZXIgPSBIVFRQQmFzaWNBdXRoSGFuZGxlcihwd2RfbWFuYWdlcikKKyAgICAgICAgYXV0aF9wcmlvcl9oYW5kbGVyLmFkZF9wYXNzd29yZCgKKyAgICAgICAgICAgIE5vbmUsIHJlcXVlc3RfdXJsLCB1c2VyLCBwYXNzd29yZCwgaXNfYXV0aGVudGljYXRlZD1UcnVlKQorCisgICAgICAgIGlzX2F1dGggPSBwd2RfbWFuYWdlci5pc19hdXRoZW50aWNhdGVkKHJlcXVlc3RfdXJsKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfYXV0aCkKKworICAgICAgICBvcGVuZXIgPSBPcGVuZXJEaXJlY3RvcigpCisgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihhdXRoX3ByaW9yX2hhbmRsZXIpCisgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihodHRwX2hhbmRsZXIpCisKKyAgICAgICAgb3BlbmVyLm9wZW4ocmVxdWVzdF91cmwpCisKKyAgICAgICAgIyBleHBlY3QgcmVxdWVzdCB0byBiZSBzZW50IHdpdGggYXV0aCBoZWFkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGh0dHBfaGFuZGxlci5oYXNfYXV0aF9oZWFkZXIpCisKKyAgICBkZWYgdGVzdF9iYXNpY19wcmlvcl9hdXRoX3NlbmRfYWZ0ZXJfZmlyc3Rfc3VjY2VzcyhzZWxmKToKKyAgICAgICAgIyBBdXRvIHNlbmQgYXV0aCBoZWFkZXIgYWZ0ZXIgYXV0aGVudGljYXRpb24gaXMgc3VjY2Vzc2Z1bCBvbmNlCisKKyAgICAgICAgdXNlciwgcGFzc3dvcmQgPSAnd2lsZScsICdjb3lvdGUnCisgICAgICAgIHJlcXVlc3RfdXJsID0gJ2h0dHA6Ly9hY21lLmV4YW1wbGUuY29tL3Byb3RlY3RlZCcKKyAgICAgICAgcmVhbG0gPSAnQUNNRScKKworICAgICAgICBwd2RfbWFuYWdlciA9IEhUVFBQYXNzd29yZE1ncldpdGhQcmlvckF1dGgoKQorICAgICAgICBhdXRoX3ByaW9yX2hhbmRsZXIgPSBIVFRQQmFzaWNBdXRoSGFuZGxlcihwd2RfbWFuYWdlcikKKyAgICAgICAgYXV0aF9wcmlvcl9oYW5kbGVyLmFkZF9wYXNzd29yZChyZWFsbSwgcmVxdWVzdF91cmwsIHVzZXIsIHBhc3N3b3JkKQorCisgICAgICAgIGlzX2F1dGggPSBwd2RfbWFuYWdlci5pc19hdXRoZW50aWNhdGVkKHJlcXVlc3RfdXJsKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzX2F1dGgpCisKKyAgICAgICAgb3BlbmVyID0gT3BlbmVyRGlyZWN0b3IoKQorICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoYXV0aF9wcmlvcl9oYW5kbGVyKQorCisgICAgICAgIGh0dHBfaGFuZGxlciA9IE1vY2tIVFRQSGFuZGxlcigKKyAgICAgICAgICAgIDQwMSwgJ1dXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPSIlcyJcclxuXHJcbicgJSBOb25lKQorICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoaHR0cF9oYW5kbGVyKQorCisgICAgICAgIG9wZW5lci5vcGVuKHJlcXVlc3RfdXJsKQorCisgICAgICAgIGlzX2F1dGggPSBwd2RfbWFuYWdlci5pc19hdXRoZW50aWNhdGVkKHJlcXVlc3RfdXJsKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfYXV0aCkKKworICAgICAgICBodHRwX2hhbmRsZXIgPSBNb2NrSFRUUEhhbmRsZXJDaGVja0F1dGgoMjAwKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGh0dHBfaGFuZGxlci5oYXNfYXV0aF9oZWFkZXIpCisKKyAgICAgICAgb3BlbmVyID0gT3BlbmVyRGlyZWN0b3IoKQorICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoYXV0aF9wcmlvcl9oYW5kbGVyKQorICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoaHR0cF9oYW5kbGVyKQorCisgICAgICAgICMgQWZ0ZXIgZ2V0dGluZyAyMDAgZnJvbSBNb2NrSFRUUEhhbmRsZXIKKyAgICAgICAgIyBOZXh0IHJlcXVlc3Qgc2VuZHMgaGVhZGVyIGluIHRoZSBmaXJzdCByZXF1ZXN0CisgICAgICAgIG9wZW5lci5vcGVuKHJlcXVlc3RfdXJsKQorCisgICAgICAgICMgZXhwZWN0IHJlcXVlc3QgdG8gYmUgc2VudCB3aXRoIGF1dGggaGVhZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShodHRwX2hhbmRsZXIuaGFzX2F1dGhfaGVhZGVyKQorCiAgICAgZGVmIHRlc3RfaHR0cF9jbG9zZWQoc2VsZik6CiAgICAgICAgICIiIlRlc3QgdGhlIGNvbm5lY3Rpb24gaXMgY2xlYW5lZCB1cCB3aGVuIHRoZSByZXNwb25zZSBpcyBjbG9zZWQiIiIKICAgICAgICAgZm9yICh0cmFuc2ZlciwgZGF0YSkgaW4gKApAQCAtMTQyMyw2ICsxNTU4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbm4uZmFrZXNvY2suY2xvc2VkLCAiQ29ubmVjdGlvbiBub3QgY2xvc2VkIikKIAogCisKIGNsYXNzIE1pc2NUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgb3BlbmVyX2hhc19oYW5kbGVyKHNlbGYsIG9wZW5lciwgaGFuZGxlcl9jbGFzcyk6CkBAIC0xNDMwLDExICsxNTY2LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGggaW4gb3BlbmVyLmhhbmRsZXJzKSkKIAogICAgIGRlZiB0ZXN0X2J1aWxkX29wZW5lcihzZWxmKToKLSAgICAgICAgY2xhc3MgTXlIVFRQSGFuZGxlcih1cmxsaWIucmVxdWVzdC5IVFRQSGFuZGxlcik6IHBhc3MKKyAgICAgICAgY2xhc3MgTXlIVFRQSGFuZGxlcih1cmxsaWIucmVxdWVzdC5IVFRQSGFuZGxlcik6CisgICAgICAgICAgICBwYXNzCisKICAgICAgICAgY2xhc3MgRm9vSGFuZGxlcih1cmxsaWIucmVxdWVzdC5CYXNlSGFuZGxlcik6Ci0gICAgICAgICAgICBkZWYgZm9vX29wZW4oc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBmb29fb3BlbihzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKICAgICAgICAgY2xhc3MgQmFySGFuZGxlcih1cmxsaWIucmVxdWVzdC5CYXNlSGFuZGxlcik6Ci0gICAgICAgICAgICBkZWYgYmFyX29wZW4oc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBiYXJfb3BlbihzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgYnVpbGRfb3BlbmVyID0gdXJsbGliLnJlcXVlc3QuYnVpbGRfb3BlbmVyCiAKQEAgLTE0NjEsNyArMTYwMiw5IEBACiAgICAgICAgIHNlbGYub3BlbmVyX2hhc19oYW5kbGVyKG8sIHVybGxpYi5yZXF1ZXN0LkhUVFBIYW5kbGVyKQogCiAgICAgICAgICMgSXNzdWUyNjcwOiBtdWx0aXBsZSBoYW5kbGVycyBzaGFyaW5nIHRoZSBzYW1lIGJhc2UgY2xhc3MKLSAgICAgICAgY2xhc3MgTXlPdGhlckhUVFBIYW5kbGVyKHVybGxpYi5yZXF1ZXN0LkhUVFBIYW5kbGVyKTogcGFzcworICAgICAgICBjbGFzcyBNeU90aGVySFRUUEhhbmRsZXIodXJsbGliLnJlcXVlc3QuSFRUUEhhbmRsZXIpOgorICAgICAgICAgICAgcGFzcworCiAgICAgICAgIG8gPSBidWlsZF9vcGVuZXIoTXlIVFRQSGFuZGxlciwgTXlPdGhlckhUVFBIYW5kbGVyKQogICAgICAgICBzZWxmLm9wZW5lcl9oYXNfaGFuZGxlcihvLCBNeUhUVFBIYW5kbGVyKQogICAgICAgICBzZWxmLm9wZW5lcl9oYXNfaGFuZGxlcihvLCBNeU90aGVySFRUUEhhbmRsZXIpCkBAIC0xNDk3LDYgKzE2NDAsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5oZWFkZXJzLCAnQ29udGVudC1MZW5ndGg6IDQyJykKICAgICAgICAgZXhwZWN0ZWRfZXJybXNnID0gJ0hUVFAgRXJyb3IgJXM6ICVzJyAlIChlcnIuY29kZSwgZXJyLm1zZykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXJyKSwgZXhwZWN0ZWRfZXJybXNnKQorICAgICAgICBleHBlY3RlZF9lcnJtc2cgPSAnPEhUVFBFcnJvciAlczogJXI+JyAlIChlcnIuY29kZSwgZXJyLm1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGVyciksIGV4cGVjdGVkX2Vycm1zZykKIAogICAgIGRlZiB0ZXN0X3BhcnNlX3Byb3h5KHNlbGYpOgogICAgICAgICBwYXJzZV9wcm94eV90ZXN0X2Nhc2VzID0gWwpAQCAtMTUzNSw5ICsxNjgwLDEwIEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgX3BhcnNlX3Byb3h5LCAnZmlsZTovZnRwLmV4YW1wbGUuY29tJyksCiAKKwogY2xhc3MgUmVxdWVzdFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBjbGFzcyBQdXRSZXF1ZXN0KFJlcXVlc3QpOgotICAgICAgICBtZXRob2Q9J1BVVCcKKyAgICAgICAgbWV0aG9kID0gJ1BVVCcKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5nZXQgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmcvfmplcmVteS8iKQpAQCAtMTYyNiw3ICsxNzcyLDcgQEAKICAgICBkZWYgdGVzdF91cmxfZnVsbHVybF9nZXRfZnVsbF91cmwoc2VsZik6CiAgICAgICAgIHVybHMgPSBbJ2h0dHA6Ly9kb2NzLnB5dGhvbi5vcmcnLAogICAgICAgICAgICAgICAgICdodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYnJhcnkvdXJsbGliMi5odG1sI09LJywKLSAgICAgICAgICAgICAgICAnaHR0cDovL3d3dy5weXRob24ub3JnLz9xcz1xdWVyeSNmcmFnbWVudD10cnVlJyBdCisgICAgICAgICAgICAgICAgJ2h0dHA6Ly93d3cucHl0aG9uLm9yZy8/cXM9cXVlcnkjZnJhZ21lbnQ9dHJ1ZSddCiAgICAgICAgIGZvciB1cmwgaW4gdXJsczoKICAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QodXJsKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2Z1bGxfdXJsKCksIHJlcS5mdWxsX3VybCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weQppbmRleCAwNjUwYWEyLi5jOGIzN2VlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5CkBAIC02MjYsMzUgKzYyNiw2IEBACiAgICAgICAgIHVybCA9IG9wZW5fdXJsLmdldHVybCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXJsLCAiaHR0cDovL2xvY2FsaG9zdDolcyIgJSBoYW5kbGVyLnBvcnQpCiAKLSAgICBkZWYgdGVzdF9iYWRfYWRkcmVzcyhzZWxmKToKLSAgICAgICAgIyBNYWtlIHN1cmUgcHJvcGVyIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiBjb25uZWN0aW5nIHRvIGEgYm9ndXMKLSAgICAgICAgIyBhZGRyZXNzLgotCi0gICAgICAgICMgYXMgaW5kaWNhdGVkIGJ5IHRoZSBjb21tZW50IGJlbG93LCB0aGlzIG1pZ2h0IGZhaWwgd2l0aCBzb21lIElTUCwKLSAgICAgICAgIyBzbyB3ZSBydW4gdGhlIHRlc3Qgb25seSB3aGVuIC11bmV0d29yay8tdWFsbCBpcyBzcGVjaWZpZWQgdG8KLSAgICAgICAgIyBtaXRpZ2F0ZSB0aGUgcHJvYmxlbSBhIGJpdCAoc2VlICMxNzU2NCkKLSAgICAgICAgc3VwcG9ydC5yZXF1aXJlcygnbmV0d29yaycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICMgR2l2ZW4gdGhhdCBib3RoIFZlcmlTaWduIGFuZCB2YXJpb3VzIElTUHMgaGF2ZSBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBwYXN0IG9yIGFyZSBwcmVzZW50bHkgaGlqYWNraW5nIHZhcmlvdXMgaW52YWxpZAotICAgICAgICAgICAgICAgICAgICAgICAgICAjIGRvbWFpbiBuYW1lIHJlcXVlc3RzIGluIGFuIGF0dGVtcHQgdG8gYm9vc3QgdHJhZmZpYwotICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvIHRoZWlyIG93biBzaXRlcywgZmluZGluZyBhIGRvbWFpbiBuYW1lIHRvIHVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZvciB0aGlzIHRlc3QgaXMgZGlmZmljdWx0LiAgUkZDMjYwNiBsZWFkcyBvbmUgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWxpZXZlIHRoYXQgJy5pbnZhbGlkJyBzaG91bGQgd29yaywgYnV0IGV4cGVyaWVuY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzZWVtZWQgdG8gaW5kaWNhdGUgb3RoZXJ3aXNlLiAgU2luZ2xlIGNoYXJhY3RlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRMRHMgYXJlIGxpa2VseSB0byByZW1haW4gaW52YWxpZCwgc28gdGhpcyBzZWVtcyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlIHRoZSBiZXN0IGNob2ljZS4gVGhlIHRyYWlsaW5nICcuJyBwcmV2ZW50cyBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVsYXRlZCBwcm9ibGVtOiBUaGUgbm9ybWFsIEROUyByZXNvbHZlciBhcHBlbmRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIGRvbWFpbiBuYW1lcyBmcm9tIHRoZSBzZWFyY2ggcGF0aCBpZiB0aGVyZSBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vICcuJyB0aGUgZW5kIGFuZCwgYW5kIGlmIG9uZSBvZiB0aG9zZSBkb21haW5zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICMgaW1wbGVtZW50cyBhICcqJyBydWxlIGEgcmVzdWx0IGlzIHJldHVybmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAjIEhvd2V2ZXIsIG5vbmUgb2YgdGhpcyB3aWxsIHByZXZlbnQgdGhlIHRlc3QgZnJvbQotICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZhaWxpbmcgaWYgdGhlIElTUCBoaWphY2tzIGFsbCBpbnZhbGlkIGRvbWFpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcXVlc3RzLiAgVGhlIHJlYWwgc29sdXRpb24gd291bGQgYmUgdG8gYmUgYWJsZSB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBhcmFtZXRlcml6ZSB0aGUgZnJhbWV3b3JrIHdpdGggYSBtb2NrIHJlc29sdmVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxsaWIucmVxdWVzdC51cmxvcGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3NhZGZsa2pzYXNmLmkubnZhbGkuZC4vIikKLQogICAgIGRlZiB0ZXN0X2l0ZXJhdGlvbihzZWxmKToKICAgICAgICAgZXhwZWN0ZWRfcmVzcG9uc2UgPSBiInB5Y29uIDIwMDguLi4iCiAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X3NlcnZlcihbKDIwMCwgW10sIGV4cGVjdGVkX3Jlc3BvbnNlKV0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJuZXQucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjJuZXQucHkKaW5kZXggMTdmOWQxYi4uY2FkODNmZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIybmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMm5ldC5weQpAQCAtMjAsOCArMjAsNiBAQAogICAgICAgICBleGNlcHQgZXhjIGFzIGU6CiAgICAgICAgICAgICBsYXN0X2V4YyA9IGUKICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHJhaXNlCiAgICAgcmFpc2UgbGFzdF9leGMKIAogZGVmIF93cmFwX3dpdGhfcmV0cnlfdGhyaWNlKGZ1bmMsIGV4Yyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYm5ldC5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGlibmV0LnB5CmluZGV4IDQyZWJiNmUuLmI5YjkyNjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGlibmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGlibmV0LnB5CkBAIC0xMTMsNyArMTEzLDI1IEBACiAgICAgZGVmIHRlc3RfYmFkX2FkZHJlc3Moc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIHByb3BlciBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gY29ubmVjdGluZyB0byBhIGJvZ3VzCiAgICAgICAgICMgYWRkcmVzcy4KLSAgICAgICAgYm9ndXNfZG9tYWluID0gInNhZGZsa2pzYXNmLmkubnZhbGkuZCIKKworICAgICAgICAjIEdpdmVuIHRoYXQgYm90aCBWZXJpU2lnbiBhbmQgdmFyaW91cyBJU1BzIGhhdmUgaW4KKyAgICAgICAgIyB0aGUgcGFzdCBvciBhcmUgcHJlc2VudGx5IGhpamFja2luZyB2YXJpb3VzIGludmFsaWQKKyAgICAgICAgIyBkb21haW4gbmFtZSByZXF1ZXN0cyBpbiBhbiBhdHRlbXB0IHRvIGJvb3N0IHRyYWZmaWMKKyAgICAgICAgIyB0byB0aGVpciBvd24gc2l0ZXMsIGZpbmRpbmcgYSBkb21haW4gbmFtZSB0byB1c2UKKyAgICAgICAgIyBmb3IgdGhpcyB0ZXN0IGlzIGRpZmZpY3VsdC4gIFJGQzI2MDYgbGVhZHMgb25lIHRvCisgICAgICAgICMgYmVsaWV2ZSB0aGF0ICcuaW52YWxpZCcgc2hvdWxkIHdvcmssIGJ1dCBleHBlcmllbmNlCisgICAgICAgICMgc2VlbWVkIHRvIGluZGljYXRlIG90aGVyd2lzZS4gIFNpbmdsZSBjaGFyYWN0ZXIKKyAgICAgICAgIyBUTERzIGFyZSBsaWtlbHkgdG8gcmVtYWluIGludmFsaWQsIHNvIHRoaXMgc2VlbXMgdG8KKyAgICAgICAgIyBiZSB0aGUgYmVzdCBjaG9pY2UuIFRoZSB0cmFpbGluZyAnLicgcHJldmVudHMgYQorICAgICAgICAjIHJlbGF0ZWQgcHJvYmxlbTogVGhlIG5vcm1hbCBETlMgcmVzb2x2ZXIgYXBwZW5kcworICAgICAgICAjIHRoZSBkb21haW4gbmFtZXMgZnJvbSB0aGUgc2VhcmNoIHBhdGggaWYgdGhlcmUgaXMKKyAgICAgICAgIyBubyAnLicgdGhlIGVuZCBhbmQsIGFuZCBpZiBvbmUgb2YgdGhvc2UgZG9tYWlucworICAgICAgICAjIGltcGxlbWVudHMgYSAnKicgcnVsZSBhIHJlc3VsdCBpcyByZXR1cm5lZC4KKyAgICAgICAgIyBIb3dldmVyLCBub25lIG9mIHRoaXMgd2lsbCBwcmV2ZW50IHRoZSB0ZXN0IGZyb20KKyAgICAgICAgIyBmYWlsaW5nIGlmIHRoZSBJU1AgaGlqYWNrcyBhbGwgaW52YWxpZCBkb21haW4KKyAgICAgICAgIyByZXF1ZXN0cy4gIFRoZSByZWFsIHNvbHV0aW9uIHdvdWxkIGJlIHRvIGJlIGFibGUgdG8KKyAgICAgICAgIyBwYXJhbWV0ZXJpemUgdGhlIGZyYW1ld29yayB3aXRoIGEgbW9jayByZXNvbHZlci4KKyAgICAgICAgYm9ndXNfZG9tYWluID0gInNhZGZsa2pzYXNmLmkubnZhbGkuZC4iCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNvY2tldC5nZXRob3N0YnluYW1lKGJvZ3VzX2RvbWFpbikKICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CkBAIC0xMjgsMTEgKzE0Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NhbiBiZSBjYXVzZWQgYnkgYSBicm9rZW4gRE5TIHNlcnZlciAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhlLmcuIHJldHVybnMgNDA0IG9yIGhpamFja3MgcGFnZSknKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG1zZz1mYWlsdXJlX2V4cGxhbmF0aW9uKToKLSAgICAgICAgICAgICMgU0YgcGF0Y2ggODA5OTE1OiAgSW4gU2VwIDIwMDMsIFZlcmlTaWduIHN0YXJ0ZWQgaGlnaGphY2tpbmcKLSAgICAgICAgICAgICMgaW52YWxpZCAuY29tIGFuZCAubmV0IGFkZHJlc3NlcyB0byBib29zdCB0cmFmZmljIHRvIHRoZWlyIG93bgotICAgICAgICAgICAgIyBzaXRlLiAgVGhpcyB0ZXN0IHN0YXJ0ZWQgZmFpbGluZyB0aGVuLiAgT25lIGhvcGVzIHRoZSAuaW52YWxpZAotICAgICAgICAgICAgIyBkb21haW4gd2lsbCBiZSBzcGFyZWQgdG8gc2VydmUgaXRzIGRlZmluZWQgcHVycG9zZS4KLSAgICAgICAgICAgIHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oImh0dHA6Ly9zYWRmbGtqc2FzZi5pLm52YWxpLmQvIikKKyAgICAgICAgICAgIHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oImh0dHA6Ly97fS8iLmZvcm1hdChib2d1c19kb21haW4pKQogCiAKIGNsYXNzIHVybHJldHJpZXZlTmV0d29ya1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJscGFyc2UucHkgYi9MaWIvdGVzdC90ZXN0X3VybHBhcnNlLnB5CmluZGV4IDE3NzVlZjMuLjA1NTJmOTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJscGFyc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxwYXJzZS5weQpAQCAtMjEwLDEwICsyMTAsNiBAQAogCiAgICAgICAgICMgImFibm9ybWFsIiBjYXNlcyBmcm9tIFJGQyAxODA4OgogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICcnLCAnaHR0cDovL2EvYi9jL2Q7cD9xI2YnKQotICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICcuLi8uLi8uLi9nJywgJ2h0dHA6Ly9hLy4uL2cnKQotICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICcuLi8uLi8uLi8uLi9nJywgJ2h0dHA6Ly9hLy4uLy4uL2cnKQotICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICcvLi9nJywgJ2h0dHA6Ly9hLy4vZycpCi0gICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzE4MDhfQkFTRSwgJy8uLi9nJywgJ2h0dHA6Ly9hLy4uL2cnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICdnLicsICdodHRwOi8vYS9iL2MvZy4nKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICcuZycsICdodHRwOi8vYS9iL2MvLmcnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICdnLi4nLCAnaHR0cDovL2EvYi9jL2cuLicpCkBAIC0yMjgsNiArMjI0LDEzIEBACiAgICAgICAgICNzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICdodHRwOmcnLCAnaHR0cDpnJykKICAgICAgICAgI3NlbGYuY2hlY2tKb2luKFJGQzE4MDhfQkFTRSwgJ2h0dHA6JywgJ2h0dHA6JykKIAorICAgICAgICAjIFhYWDogVGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgbm8gbG9uZ2VyIGNvbXBhdGlibGUgd2l0aCBSRkMzOTg2CisgICAgICAgICMgc2VsZi5jaGVja0pvaW4oUkZDMTgwOF9CQVNFLCAnLi4vLi4vLi4vZycsICdodHRwOi8vYS8uLi9nJykKKyAgICAgICAgIyBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICcuLi8uLi8uLi8uLi9nJywgJ2h0dHA6Ly9hLy4uLy4uL2cnKQorICAgICAgICAjIHNlbGYuY2hlY2tKb2luKFJGQzE4MDhfQkFTRSwgJy8uL2cnLCAnaHR0cDovL2EvLi9nJykKKyAgICAgICAgIyBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICcvLi4vZycsICdodHRwOi8vYS8uLi9nJykKKworCiAgICAgZGVmIHRlc3RfUkZDMjM2OChzZWxmKToKICAgICAgICAgIyBJc3N1ZSAxMTQ2NzogcGF0aCB0aGF0IHN0YXJ0cyB3aXRoIGEgbnVtYmVyIGlzIG5vdCBwYXJzZWQgY29ycmVjdGx5CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXJsbGliLnBhcnNlLnVybHBhcnNlKCdtYWlsdG86MTMzN0BleGFtcGxlLm9yZycpLApAQCAtMjU4LDEwICsyNjEsNiBAQAogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICcuLi8uLi8nLCAnaHR0cDovL2EvJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnLi4vLi4vZycsICdodHRwOi8vYS9nJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnJywgUkZDMjM5Nl9CQVNFKQotICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICcuLi8uLi8uLi9nJywgJ2h0dHA6Ly9hLy4uL2cnKQotICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICcuLi8uLi8uLi8uLi9nJywgJ2h0dHA6Ly9hLy4uLy4uL2cnKQotICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICcvLi9nJywgJ2h0dHA6Ly9hLy4vZycpCi0gICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJy8uLi9nJywgJ2h0dHA6Ly9hLy4uL2cnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICdnLicsICdodHRwOi8vYS9iL2MvZy4nKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICcuZycsICdodHRwOi8vYS9iL2MvLmcnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICdnLi4nLCAnaHR0cDovL2EvYi9jL2cuLicpCkBAIC0yNzcsMTAgKzI3NiwxNyBAQAogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICdnI3MvLi94JywgJ2h0dHA6Ly9hL2IvYy9nI3MvLi94JykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnZyNzLy4uL3gnLCAnaHR0cDovL2EvYi9jL2cjcy8uLi94JykKIAorICAgICAgICAjIFhYWDogVGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgbm8gbG9uZ2VyIGNvbXBhdGlibGUgd2l0aCBSRkMzOTg2CisgICAgICAgICMgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnLi4vLi4vLi4vZycsICdodHRwOi8vYS8uLi9nJykKKyAgICAgICAgIyBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICcuLi8uLi8uLi8uLi9nJywgJ2h0dHA6Ly9hLy4uLy4uL2cnKQorICAgICAgICAjIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJy8uL2cnLCAnaHR0cDovL2EvLi9nJykKKyAgICAgICAgIyBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICcvLi4vZycsICdodHRwOi8vYS8uLi9nJykKKworCiAgICAgZGVmIHRlc3RfUkZDMzk4NihzZWxmKToKICAgICAgICAgIyBUZXN0IGNhc2VzIGZyb20gUkZDMzk4NgogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICc/eScsJ2h0dHA6Ly9hL2IvYy9kO3A/eScpCi0gICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJzt4JywgJ2h0dHA6Ly9hL2IvYy87eCcpCisgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJzt4JywgJ2h0dHA6Ly9hL2IvYy87eCcpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJ2c6aCcsJ2c6aCcpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJ2cnLCdodHRwOi8vYS9iL2MvZycpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJy4vZycsJ2h0dHA6Ly9hL2IvYy9nJykKQEAgLTMwNCwxNyArMzEwLDE3IEBACiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJy4uLy4uJywnaHR0cDovL2EvJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnLi4vLi4vJywnaHR0cDovL2EvJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnLi4vLi4vZycsJ2h0dHA6Ly9hL2cnKQorICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcuLi8uLi8uLi9nJywgJ2h0dHA6Ly9hL2cnKQogCiAgICAgICAgICNBYm5vcm1hbCBFeGFtcGxlcwogCiAgICAgICAgICMgVGhlICdhYm5vcm1hbCBzY2VuYXJpb3MnIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBSRkMyOTg2IHBhcnNpbmcKICAgICAgICAgIyBUZXN0cyBhcmUgaGVyZSBmb3IgcmVmZXJlbmNlLgogCi0gICAgICAgICNzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcuLi8uLi8uLi9nJywnaHR0cDovL2EvZycpCi0gICAgICAgICNzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcuLi8uLi8uLi8uLi9nJywnaHR0cDovL2EvZycpCi0gICAgICAgICNzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcvLi9nJywnaHR0cDovL2EvZycpCi0gICAgICAgICNzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcvLi4vZycsJ2h0dHA6Ly9hL2cnKQotCisgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJy4uLy4uLy4uL2cnLCdodHRwOi8vYS9nJykKKyAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnLi4vLi4vLi4vLi4vZycsJ2h0dHA6Ly9hL2cnKQorICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcvLi9nJywnaHR0cDovL2EvZycpCisgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJy8uLi9nJywnaHR0cDovL2EvZycpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJ2cuJywnaHR0cDovL2EvYi9jL2cuJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnLmcnLCdodHRwOi8vYS9iL2MvLmcnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICdnLi4nLCdodHRwOi8vYS9iL2MvZy4uJykKQEAgLTM1NCwxMCArMzYwLDggQEAKICAgICAgICAgc2VsZi5jaGVja0pvaW4oU0lNUExFX0JBU0UsICcuLi9nJywnaHR0cDovL2EvYi9nJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oU0lNUExFX0JBU0UsICcuLi8uLicsJ2h0dHA6Ly9hLycpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFNJTVBMRV9CQVNFLCAnLi4vLi4vZycsJ2h0dHA6Ly9hL2cnKQotICAgICAgICBzZWxmLmNoZWNrSm9pbihTSU1QTEVfQkFTRSwgJy4uLy4uLy4uL2cnLCdodHRwOi8vYS8uLi9nJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oU0lNUExFX0JBU0UsICcuLy4uL2cnLCdodHRwOi8vYS9iL2cnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihTSU1QTEVfQkFTRSwgJy4vZy8uJywnaHR0cDovL2EvYi9jL2cvJykKLSAgICAgICAgc2VsZi5jaGVja0pvaW4oU0lNUExFX0JBU0UsICcvLi9nJywnaHR0cDovL2EvLi9nJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oU0lNUExFX0JBU0UsICdnLy4vaCcsJ2h0dHA6Ly9hL2IvYy9nL2gnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihTSU1QTEVfQkFTRSwgJ2cvLi4vaCcsJ2h0dHA6Ly9hL2IvYy9oJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oU0lNUExFX0JBU0UsICdodHRwOmcnLCdodHRwOi8vYS9iL2MvZycpCkBAIC0zNzEsNiArMzc1LDI1IEBACiAgICAgICAgIHNlbGYuY2hlY2tKb2luKCdzdm46Ly9wYXRodG9yZXBvL2RpcjEnLCAnZGlyMicsICdzdm46Ly9wYXRodG9yZXBvL2RpcjInKQogICAgICAgICBzZWxmLmNoZWNrSm9pbignc3ZuK3NzaDovL3BhdGh0b3JlcG8vZGlyMScsICdkaXIyJywgJ3N2bitzc2g6Ly9wYXRodG9yZXBvL2RpcjInKQogCisgICAgICAgICMgWFhYOiBUaGUgZm9sbG93aW5nIHRlc3RzIGFyZSBubyBsb25nZXIgY29tcGF0aWJsZSB3aXRoIFJGQzM5ODYKKyAgICAgICAgIyBzZWxmLmNoZWNrSm9pbihTSU1QTEVfQkFTRSwgJy4uLy4uLy4uL2cnLCdodHRwOi8vYS8uLi9nJykKKyAgICAgICAgIyBzZWxmLmNoZWNrSm9pbihTSU1QTEVfQkFTRSwgJy8uL2cnLCdodHRwOi8vYS8uL2cnKQorCisgICAgICAgICMgdGVzdCBmb3IgaXNzdWUyMjExOCBkdXBsaWNhdGUgc2xhc2hlcworICAgICAgICBzZWxmLmNoZWNrSm9pbihTSU1QTEVfQkFTRSArICcvJywgJ2ZvbycsIFNJTVBMRV9CQVNFICsgJy9mb28nKQorCisgICAgICAgICMgTm9uLVJGQy1kZWZpbmVkIHRlc3RzLCBjb3ZlcmluZyB2YXJpYXRpb25zIG9mIGJhc2UgYW5kIHRyYWlsaW5nCisgICAgICAgICMgc2xhc2hlcworICAgICAgICBzZWxmLmNoZWNrSm9pbignaHR0cDovL2EvYi9jL2QvZS8nLCAnLi4vLi4vZi9nLycsICdodHRwOi8vYS9iL2MvZi9nLycpCisgICAgICAgIHNlbGYuY2hlY2tKb2luKCdodHRwOi8vYS9iL2MvZC9lJywgJy4uLy4uL2YvZy8nLCAnaHR0cDovL2EvYi9mL2cvJykKKyAgICAgICAgc2VsZi5jaGVja0pvaW4oJ2h0dHA6Ly9hL2IvYy9kL2UvJywgJy8uLi8uLi9mL2cvJywgJ2h0dHA6Ly9hL2YvZy8nKQorICAgICAgICBzZWxmLmNoZWNrSm9pbignaHR0cDovL2EvYi9jL2QvZScsICcvLi4vLi4vZi9nLycsICdodHRwOi8vYS9mL2cvJykKKyAgICAgICAgc2VsZi5jaGVja0pvaW4oJ2h0dHA6Ly9hL2IvYy9kL2UvJywgJy4uLy4uL2YvZycsICdodHRwOi8vYS9iL2MvZi9nJykKKyAgICAgICAgc2VsZi5jaGVja0pvaW4oJ2h0dHA6Ly9hL2IvJywgJy4uLy4uL2YvZy8nLCAnaHR0cDovL2EvZi9nLycpCisKKyAgICAgICAgIyBpc3N1ZSAyMzcwMzogZG9uJ3QgZHVwbGljYXRlIGZpbGVuYW1lCisgICAgICAgIHNlbGYuY2hlY2tKb2luKCdhJywgJ2InLCAnYicpCisKICAgICBkZWYgdGVzdF9SRkMyNzMyKHNlbGYpOgogICAgICAgICBzdHJfY2FzZXMgPSBbCiAgICAgICAgICAgICAoJ2h0dHA6Ly9UZXN0LnB5dGhvbi5vcmc6NTQzMi9mb28vJywgJ3Rlc3QucHl0aG9uLm9yZycsIDU0MzIpLApAQCAtODAzLDYgKzgyNiwxNiBAQAogICAgICAgICByZXN1bHQgPSB1cmxsaWIucGFyc2UudXJsZW5jb2RlKHsnYSc6IFRyaXZpYWwoKX0sIFRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAnYT10cml2aWFsJykKIAorICAgIGRlZiB0ZXN0X3VybGVuY29kZV9xdW90ZV92aWEoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHVybGxpYi5wYXJzZS51cmxlbmNvZGUoeydhJzogJ3NvbWUgdmFsdWUnfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsICJhPXNvbWUrdmFsdWUiKQorICAgICAgICByZXN1bHQgPSB1cmxsaWIucGFyc2UudXJsZW5jb2RlKHsnYSc6ICdzb21lIHZhbHVlL2Fub3RoZXInfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZV92aWE9dXJsbGliLnBhcnNlLnF1b3RlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgImE9c29tZSUyMHZhbHVlJTJGYW5vdGhlciIpCisgICAgICAgIHJlc3VsdCA9IHVybGxpYi5wYXJzZS51cmxlbmNvZGUoeydhJzogJ3NvbWUgdmFsdWUvYW5vdGhlcid9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmU9Jy8nLCBxdW90ZV92aWE9dXJsbGliLnBhcnNlLnF1b3RlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgImE9c29tZSUyMHZhbHVlL2Fub3RoZXIiKQorCiAgICAgZGVmIHRlc3RfcXVvdGVfZnJvbV9ieXRlcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB1cmxsaWIucGFyc2UucXVvdGVfZnJvbV9ieXRlcywgJ2ZvbycpCiAgICAgICAgIHJlc3VsdCA9IHVybGxpYi5wYXJzZS5xdW90ZV9mcm9tX2J5dGVzKGInYXJjaGFlb2xvZ2ljYWwgYXJjYW5hJykKQEAgLTg2MSw2ICs4OTQsMjIgQEAKICAgICAgICAgcXVvdGVyID0gdXJsbGliLnBhcnNlLlF1b3Rlcih1cmxsaWIucGFyc2UuX0FMV0FZU19TQUZFKQogICAgICAgICBzZWxmLmFzc2VydEluKCdRdW90ZXInLCByZXByKHF1b3RlcikpCiAKKyAgICBkZWYgdGVzdF9hbGwoc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gW10KKyAgICAgICAgdW5kb2N1bWVudGVkID0geworICAgICAgICAgICAgJ3NwbGl0YXR0cicsICdzcGxpdGhvc3QnLCAnc3BsaXRucG9ydCcsICdzcGxpdHBhc3N3ZCcsCisgICAgICAgICAgICAnc3BsaXRwb3J0JywgJ3NwbGl0cXVlcnknLCAnc3BsaXR0YWcnLCAnc3BsaXR0eXBlJywgJ3NwbGl0dXNlcicsCisgICAgICAgICAgICAnc3BsaXR2YWx1ZScsCisgICAgICAgICAgICAnUXVvdGVyJywgJ1Jlc3VsdEJhc2UnLCAnY2xlYXJfY2FjaGUnLCAndG9fYnl0ZXMnLCAndW53cmFwJywKKyAgICAgICAgfQorICAgICAgICBmb3IgbmFtZSBpbiBkaXIodXJsbGliLnBhcnNlKToKKyAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnXycpIG9yIG5hbWUgaW4gdW5kb2N1bWVudGVkOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBvYmplY3QgPSBnZXRhdHRyKHVybGxpYi5wYXJzZSwgbmFtZSkKKyAgICAgICAgICAgIGlmIGdldGF0dHIob2JqZWN0LCAnX19tb2R1bGVfXycsIE5vbmUpID09ICd1cmxsaWIucGFyc2UnOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkLmFwcGVuZChuYW1lKQorICAgICAgICBzZWxmLmFzc2VydENvdW50RXF1YWwodXJsbGliLnBhcnNlLl9fYWxsX18sIGV4cGVjdGVkKQorCiAKIGNsYXNzIFV0aWxpdHlfVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIlRlc3RjYXNlIHRvIHRlc3QgdGhlIHZhcmlvdXMgdXRpbGl0eSBmdW5jdGlvbnMgaW4gdGhlIHVybGxpYi4iIiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXNlcmRpY3QucHkgYi9MaWIvdGVzdC90ZXN0X3VzZXJkaWN0LnB5CmluZGV4IDNlYjg4MDEuLjgzNTdmOGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXNlcmRpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91c2VyZGljdC5weQpAQCAtMSw2ICsxLDcgQEAKICMgQ2hlY2sgZXZlcnkgcGF0aCB0aHJvdWdoIGV2ZXJ5IG1ldGhvZCBvZiBVc2VyRGljdAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIG1hcHBpbmdfdGVzdHMKK2ltcG9ydCB1bml0dGVzdAogaW1wb3J0IGNvbGxlY3Rpb25zCiAKIGQwID0ge30KQEAgLTIxNSwxMCArMjE2LDUgQEAKIAogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgVXNlckRpY3RUZXN0LAotICAgICkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weSBiL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkKaW5kZXggNjM4MTA3MC4uZjkyZTRkMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5CkBAIC0yLDYgKzIsNyBAQAogCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyTGlzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBsaXN0X3Rlc3RzCitpbXBvcnQgdW5pdHRlc3QKIAogY2xhc3MgVXNlckxpc3RUZXN0KGxpc3RfdGVzdHMuQ29tbW9uVGVzdCk6CiAgICAgdHlwZTJ0ZXN0ID0gVXNlckxpc3QKQEAgLTU4LDggKzU5LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCB2KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUodSksIHR5cGUodikpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChVc2VyTGlzdFRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXVpZC5weSBiL0xpYi90ZXN0L3Rlc3RfdXVpZC5weQppbmRleCAxZThjYmEzLi5mY2I4NDU0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3V1aWQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91dWlkLnB5CkBAIC0xLDkgKzEsMTAgQEAKLWltcG9ydCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0Lm1vY2sKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgaW8KIGltcG9ydCBvcwogaW1wb3J0IHNodXRpbAoraW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB1dWlkCiAKIGRlZiBpbXBvcnRhYmxlKG5hbWUpOgpAQCAtNDEyLDI4ICs0MTMsMjcgQEAKIGNsYXNzIFRlc3RJbnRlcm5hbHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gJ3Bvc2l4JywgJ3JlcXVpcmVzIFBvc2l4JykKICAgICBkZWYgdGVzdF9maW5kX21hYyhzZWxmKToKLSAgICAgICAgZGF0YSA9ICcnJ1wKLQorICAgICAgICBkYXRhID0gJycnCiBmYWtlIGh3YWRkcgogY3Njb3R1bjAgIExpbmsgZW5jYXA6VU5TUEVDICBIV2FkZHIgMDAtMDAtMDAtMDAtMDAtMDAtMDAtMDAtMDAtMDAtMDAtMDAtMDAtMDAtMDAtMDAKIGV0aDAgICAgICBMaW5rIGVuY2FwOkV0aGVybmV0ICBIV2FkZHIgMTI6MzQ6NTY6Nzg6OTA6YWIKICcnJwotICAgICAgICBkZWYgbW9ja19wb3BlbihjbWQpOgotICAgICAgICAgICAgcmV0dXJuIGlvLlN0cmluZ0lPKGRhdGEpCiAKLSAgICAgICAgaWYgc2h1dGlsLndoaWNoKCdpZmNvbmZpZycpIGlzIE5vbmU6Ci0gICAgICAgICAgICBwYXRoID0gb3MucGF0aHNlcC5qb2luKCgnL3NiaW4nLCAnL3Vzci9zYmluJykpCi0gICAgICAgICAgICBpZiBzaHV0aWwud2hpY2goJ2lmY29uZmlnJywgcGF0aD1wYXRoKSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3JlcXVpcmVzIGlmY29uZmlnJykKKyAgICAgICAgcG9wZW4gPSB1bml0dGVzdC5tb2NrLk1hZ2ljTW9jaygpCisgICAgICAgIHBvcGVuLnN0ZG91dCA9IGlvLkJ5dGVzSU8oZGF0YS5lbmNvZGUoKSkKIAotICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKG9zLCAncG9wZW4nLCBtb2NrX3BvcGVuKToKLSAgICAgICAgICAgIG1hYyA9IHV1aWQuX2ZpbmRfbWFjKAotICAgICAgICAgICAgICAgIGNvbW1hbmQ9J2lmY29uZmlnJywKLSAgICAgICAgICAgICAgICBhcmdzPScnLAotICAgICAgICAgICAgICAgIGh3X2lkZW50aWZpZXJzPVsnaHdhZGRyJ10sCi0gICAgICAgICAgICAgICAgZ2V0X2luZGV4PWxhbWJkYSB4OiB4ICsgMSwKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFjLCAweDEyMzQ1Njc4OTBhYikKKyAgICAgICAgd2l0aCB1bml0dGVzdC5tb2NrLnBhdGNoLm9iamVjdChzaHV0aWwsICd3aGljaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPScvc2Jpbi9pZmNvbmZpZycpOgorICAgICAgICAgICAgd2l0aCB1bml0dGVzdC5tb2NrLnBhdGNoLm9iamVjdChzdWJwcm9jZXNzLCAnUG9wZW4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fdmFsdWU9cG9wZW4pOgorICAgICAgICAgICAgICAgIG1hYyA9IHV1aWQuX2ZpbmRfbWFjKAorICAgICAgICAgICAgICAgICAgICBjb21tYW5kPSdpZmNvbmZpZycsCisgICAgICAgICAgICAgICAgICAgIGFyZ3M9JycsCisgICAgICAgICAgICAgICAgICAgIGh3X2lkZW50aWZpZXJzPVtiJ2h3YWRkciddLAorICAgICAgICAgICAgICAgICAgICBnZXRfaW5kZXg9bGFtYmRhIHg6IHggKyAxLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hYywgMHgxMjM0NTY3ODkwYWIpCiAKICAgICBkZWYgY2hlY2tfbm9kZShzZWxmLCBub2RlLCByZXF1aXJlcz1Ob25lLCBuZXR3b3JrPUZhbHNlKToKICAgICAgICAgaWYgcmVxdWlyZXMgYW5kIG5vZGUgaXMgTm9uZToKQEAgLTQ1NCw2ICs0NTQsMTEgQEAKICAgICAgICAgc2VsZi5jaGVja19ub2RlKG5vZGUsICdpZmNvbmZpZycsIFRydWUpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICdwb3NpeCcsICdyZXF1aXJlcyBQb3NpeCcpCisgICAgZGVmIHRlc3RfaXBfZ2V0bm9kZShzZWxmKToKKyAgICAgICAgbm9kZSA9IHV1aWQuX2lwX2dldG5vZGUoKQorICAgICAgICBzZWxmLmNoZWNrX25vZGUobm9kZSwgJ2lwJywgVHJ1ZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gJ3Bvc2l4JywgJ3JlcXVpcmVzIFBvc2l4JykKICAgICBkZWYgdGVzdF9hcnBfZ2V0bm9kZShzZWxmKToKICAgICAgICAgbm9kZSA9IHV1aWQuX2FycF9nZXRub2RlKCkKICAgICAgICAgc2VsZi5jaGVja19ub2RlKG5vZGUsICdhcnAnLCBUcnVlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF92ZW52LnB5IGIvTGliL3Rlc3QvdGVzdF92ZW52LnB5CmluZGV4IGI0NjI1ODguLjkyMDdhNjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdmVudi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ZlbnYucHkKQEAgLTEyLDcgKzEyLDcgQEAKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoY2FwdHVyZWRfc3Rkb3V0LCBjYXB0dXJlZF9zdGRlcnIsIHJ1bl91bml0dGVzdCwKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoY2FwdHVyZWRfc3Rkb3V0LCBjYXB0dXJlZF9zdGRlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbl9zeW1saW5rLCBFbnZpcm9ubWVudFZhckd1YXJkLCBybXRyZWUpCiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB1bml0dGVzdApAQCAtMzk4LDggKzM5OCw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0X3BpcF9ub3RfaW5zdGFsbGVkKCkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEJhc2ljVGVzdCwgRW5zdXJlUGlwVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93YWl0My5weSBiL0xpYi90ZXN0L3Rlc3Rfd2FpdDMucHkKaW5kZXggZjZhMDY1ZC4uZWI1MWIyYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93YWl0My5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dhaXQzLnB5CkBAIC01LDcgKzUsNyBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LmZvcmtfd2FpdCBpbXBvcnQgRm9ya1dhaXQKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIHJlYXBfY2hpbGRyZW4KK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZWFwX2NoaWxkcmVuCiAKIGlmIG5vdCBoYXNhdHRyKG9zLCAnZm9yaycpOgogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJvcy5mb3JrIG5vdCBkZWZpbmVkIikKQEAgLTE4LDcgKzE4LDggQEAKICAgICAgICAgIyBUaGlzIG1hbnkgaXRlcmF0aW9ucyBjYW4gYmUgcmVxdWlyZWQsIHNpbmNlIHNvbWUgcHJldmlvdXNseSBydW4KICAgICAgICAgIyB0ZXN0cyAoZS5nLiB0ZXN0X2N0eXBlcykgY291bGQgaGF2ZSBzcGF3bmVkIGEgbG90IG9mIGNoaWxkcmVuCiAgICAgICAgICMgdmVyeSBxdWlja2x5LgotICAgICAgICBmb3IgaSBpbiByYW5nZSgzMCk6CisgICAgICAgIGRlYWRsaW5lID0gdGltZS5tb25vdG9uaWMoKSArIDEwLjAKKyAgICAgICAgd2hpbGUgdGltZS5tb25vdG9uaWMoKSA8PSBkZWFkbGluZToKICAgICAgICAgICAgICMgd2FpdDMoKSBzaG91bGRuJ3QgaGFuZywgYnV0IHNvbWUgb2YgdGhlIGJ1aWxkYm90cyBzZWVtIHRvIGhhbmcKICAgICAgICAgICAgICMgaW4gdGhlIGZvcmtpbmcgdGVzdHMuICBUaGlzIGlzIGFuIGF0dGVtcHQgdG8gZml4IHRoZSBwcm9ibGVtLgogICAgICAgICAgICAgc3BpZCwgc3RhdHVzLCBydXNhZ2UgPSBvcy53YWl0Myhvcy5XTk9IQU5HKQpAQCAtMzAsOSArMzEsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgImNhdXNlID0gJWQsIGV4aXQgPSAlZCIgJSAoc3RhdHVzJjB4ZmYsIHN0YXR1cz4+OCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShydXNhZ2UpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoV2FpdDNUZXN0KQorZGVmIHRlYXJEb3duTW9kdWxlKCk6CiAgICAgcmVhcF9jaGlsZHJlbigpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2FpdDQucHkgYi9MaWIvdGVzdC90ZXN0X3dhaXQ0LnB5CmluZGV4IDM1MmMxMWEuLjNlNmE3OWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2FpdDQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93YWl0NC5weQpAQCAtNCw4ICs0LDkgQEAKIGltcG9ydCBvcwogaW1wb3J0IHRpbWUKIGltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LmZvcmtfd2FpdCBpbXBvcnQgRm9ya1dhaXQKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIHJlYXBfY2hpbGRyZW4sIGdldF9hdHRyaWJ1dGUKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZWFwX2NoaWxkcmVuLCBnZXRfYXR0cmlidXRlCiAKICMgSWYgZWl0aGVyIG9mIHRoZXNlIGRvIG5vdCBleGlzdCwgc2tpcCB0aGlzIHRlc3QuCiBnZXRfYXR0cmlidXRlKG9zLCAnZm9yaycpCkBAIC0xOSwyMCArMjAsMjAgQEAKICAgICAgICAgICAgICMgSXNzdWUgIzExMTg1OiB3YWl0NCBpcyBicm9rZW4gb24gQUlYIGFuZCB3aWxsIGFsd2F5cyByZXR1cm4gMAogICAgICAgICAgICAgIyB3aXRoIFdOT0hBTkcuCiAgICAgICAgICAgICBvcHRpb24gPSAwCi0gICAgICAgIGZvciBpIGluIHJhbmdlKDEwKToKKyAgICAgICAgZGVhZGxpbmUgPSB0aW1lLm1vbm90b25pYygpICsgMTAuMAorICAgICAgICB3aGlsZSB0aW1lLm1vbm90b25pYygpIDw9IGRlYWRsaW5lOgogICAgICAgICAgICAgIyB3YWl0NCgpIHNob3VsZG4ndCBoYW5nLCBidXQgc29tZSBvZiB0aGUgYnVpbGRib3RzIHNlZW0gdG8gaGFuZwogICAgICAgICAgICAgIyBpbiB0aGUgZm9ya2luZyB0ZXN0cy4gIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBmaXggdGhlIHByb2JsZW0uCiAgICAgICAgICAgICBzcGlkLCBzdGF0dXMsIHJ1c2FnZSA9IG9zLndhaXQ0KGNwaWQsIG9wdGlvbikKICAgICAgICAgICAgIGlmIHNwaWQgPT0gY3BpZDoKICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgdGltZS5zbGVlcCgxLjApCisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGlkLCBjcGlkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgImNhdXNlID0gJWQsIGV4aXQgPSAlZCIgJSAoc3RhdHVzJjB4ZmYsIHN0YXR1cz4+OCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShydXNhZ2UpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoV2FpdDRUZXN0KQorZGVmIHRlYXJEb3duTW9kdWxlKCk6CiAgICAgcmVhcF9jaGlsZHJlbigpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MucHkgYi9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzL19faW5pdF9fLnB5CnNpbWlsYXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3Rfd2FybmluZ3MucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvX19pbml0X18ucHkKaW5kZXggYjUxOWYwYS4uY2VhOWM1NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzL19faW5pdF9fLnB5CkBAIC01LDkgKzUsOSBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIAotZnJvbSB0ZXN0IGltcG9ydCB3YXJuaW5nX3Rlc3RzCitmcm9tIHRlc3QudGVzdF93YXJuaW5ncy5kYXRhIGltcG9ydCBzdGFja2xldmVsIGFzIHdhcm5pbmdfdGVzdHMKIAogaW1wb3J0IHdhcm5pbmdzIGFzIG9yaWdpbmFsX3dhcm5pbmdzCiAKQEAgLTE5NCwxMSArMTk0LDExIEBACiAgICAgICAgICAgICBzZWxmLm1vZHVsZS5yZXNldHdhcm5pbmdzKCkKICAgICAgICAgICAgIHNlbGYubW9kdWxlLmZpbHRlcndhcm5pbmdzKCJvbmNlIiwgY2F0ZWdvcnk9VXNlcldhcm5pbmcpCiAgICAgICAgICAgICBtZXNzYWdlID0gVXNlcldhcm5pbmcoIkZpbHRlclRlc3RzLnRlc3Rfb25jZSIpCi0gICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuX2V4cGxpY2l0KG1lc3NhZ2UsIFVzZXJXYXJuaW5nLCAidGVzdF93YXJuaW5ncy5weSIsCisgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuX2V4cGxpY2l0KG1lc3NhZ2UsIFVzZXJXYXJuaW5nLCAiX19pbml0X18ucHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdbLTFdLm1lc3NhZ2UsIG1lc3NhZ2UpCiAgICAgICAgICAgICBkZWwgd1s6XQotICAgICAgICAgICAgc2VsZi5tb2R1bGUud2Fybl9leHBsaWNpdChtZXNzYWdlLCBVc2VyV2FybmluZywgInRlc3Rfd2FybmluZ3MucHkiLAorICAgICAgICAgICAgc2VsZi5tb2R1bGUud2Fybl9leHBsaWNpdChtZXNzYWdlLCBVc2VyV2FybmluZywgIl9faW5pdF9fLnB5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDApCiAgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuX2V4cGxpY2l0KG1lc3NhZ2UsIFVzZXJXYXJuaW5nLCAidGVzdF93YXJuaW5nczIucHkiLApAQCAtMzA0LDEwICszMDQsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgbW9kdWxlPXNlbGYubW9kdWxlKSBhcyB3OgogICAgICAgICAgICAgICAgIHdhcm5pbmdfdGVzdHMuaW5uZXIoInNwYW0xIikKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYmFzZW5hbWUod1stMV0uZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndhcm5pbmdfdGVzdHMucHkiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YWNrbGV2ZWwucHkiKQogICAgICAgICAgICAgICAgIHdhcm5pbmdfdGVzdHMub3V0ZXIoInNwYW0yIikKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYmFzZW5hbWUod1stMV0uZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndhcm5pbmdfdGVzdHMucHkiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YWNrbGV2ZWwucHkiKQogCiAgICAgZGVmIHRlc3Rfc3RhY2tsZXZlbChzZWxmKToKICAgICAgICAgIyBUZXN0IHN0YWNrbGV2ZWwgYXJndW1lbnQKQEAgLTMxNywyNSArMzE3LDM2IEBACiAgICAgICAgICAgICAgICAgICAgIG1vZHVsZT1zZWxmLm1vZHVsZSkgYXMgdzoKICAgICAgICAgICAgICAgICB3YXJuaW5nX3Rlc3RzLmlubmVyKCJzcGFtMyIsIHN0YWNrbGV2ZWw9MSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYmFzZW5hbWUod1stMV0uZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndhcm5pbmdfdGVzdHMucHkiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YWNrbGV2ZWwucHkiKQogICAgICAgICAgICAgICAgIHdhcm5pbmdfdGVzdHMub3V0ZXIoInNwYW00Iiwgc3RhY2tsZXZlbD0xKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5iYXNlbmFtZSh3Wy0xXS5maWxlbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2FybmluZ190ZXN0cy5weSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhY2tsZXZlbC5weSIpCiAKICAgICAgICAgICAgICAgICB3YXJuaW5nX3Rlc3RzLmlubmVyKCJzcGFtNSIsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYmFzZW5hbWUod1stMV0uZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3Rfd2FybmluZ3MucHkiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9faW5pdF9fLnB5IikKICAgICAgICAgICAgICAgICB3YXJuaW5nX3Rlc3RzLm91dGVyKCJzcGFtNiIsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYmFzZW5hbWUod1stMV0uZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndhcm5pbmdfdGVzdHMucHkiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YWNrbGV2ZWwucHkiKQogICAgICAgICAgICAgICAgIHdhcm5pbmdfdGVzdHMub3V0ZXIoInNwYW02LjUiLCBzdGFja2xldmVsPTMpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmJhc2VuYW1lKHdbLTFdLmZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X3dhcm5pbmdzLnB5IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2luaXRfXy5weSIpCiAKICAgICAgICAgICAgICAgICB3YXJuaW5nX3Rlc3RzLmlubmVyKCJzcGFtNyIsIHN0YWNrbGV2ZWw9OTk5OSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYmFzZW5hbWUod1stMV0uZmlsZW5hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN5cyIpCiAKKyAgICBkZWYgdGVzdF9zdGFja2xldmVsX2ltcG9ydChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjQzMDU6IFdpdGggc3RhY2tsZXZlbD0yLCBtb2R1bGUtbGV2ZWwgd2FybmluZ3Mgc2hvdWxkIHdvcmsuCisgICAgICAgIHN1cHBvcnQudW5sb2FkKCd0ZXN0LnRlc3Rfd2FybmluZ3MuZGF0YS5pbXBvcnRfd2FybmluZycpCisgICAgICAgIHdpdGggd2FybmluZ3Nfc3RhdGUoc2VsZi5tb2R1bGUpOgorICAgICAgICAgICAgd2l0aCBvcmlnaW5hbF93YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlPXNlbGYubW9kdWxlKSBhcyB3OgorICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlLnNpbXBsZWZpbHRlcignYWx3YXlzJykKKyAgICAgICAgICAgICAgICBpbXBvcnQgdGVzdC50ZXN0X3dhcm5pbmdzLmRhdGEuaW1wb3J0X3dhcm5pbmcKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3KSwgMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdbMF0uZmlsZW5hbWUsIF9fZmlsZV9fKQorCiAgICAgZGVmIHRlc3RfbWlzc2luZ19maWxlbmFtZV9ub3RfbWFpbihzZWxmKToKICAgICAgICAgIyBJZiBfX2ZpbGVfXyBpcyBub3Qgc3BlY2lmaWVkIGFuZCBfX21haW5fXyBpcyBub3QgdGhlIG1vZHVsZSBuYW1lLAogICAgICAgICAjIHRoZW4gX19maWxlX18gc2hvdWxkIGJlIHNldCB0byB0aGUgbW9kdWxlIG5hbWUuCkBAIC00NTAsNiArNDYxLDQ0IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuKEJhZFN0cldhcm5pbmcoKSkKIAorICAgIGRlZiB0ZXN0X3dhcm5pbmdfY2xhc3NlcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTXlXYXJuaW5nQ2xhc3MoV2FybmluZyk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgTm9uV2FybmluZ1N1YmNsYXNzOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgICMgcGFzc2luZyBhIG5vbi1zdWJjbGFzcyBvZiBXYXJuaW5nIHNob3VsZCByYWlzZSBhIFR5cGVFcnJvcgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuKCdiYWQgd2FybmluZyBjYXRlZ29yeScsICcnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdjYXRlZ29yeSBtdXN0IGJlIGEgV2FybmluZyBzdWJjbGFzcywgbm90ICcsCisgICAgICAgICAgICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlvbikpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgc2VsZi5tb2R1bGUud2FybignYmFkIHdhcm5pbmcgY2F0ZWdvcnknLCBOb25XYXJuaW5nU3ViY2xhc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NhdGVnb3J5IG11c3QgYmUgYSBXYXJuaW5nIHN1YmNsYXNzLCBub3QgJywKKyAgICAgICAgICAgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSkKKworICAgICAgICAjIGNoZWNrIHRoYXQgd2FybmluZyBpbnN0YW5jZXMgYWxzbyByYWlzZSBhIFR5cGVFcnJvcgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuKCdiYWQgd2FybmluZyBjYXRlZ29yeScsIE15V2FybmluZ0NsYXNzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NhdGVnb3J5IG11c3QgYmUgYSBXYXJuaW5nIHN1YmNsYXNzLCBub3QgJywKKyAgICAgICAgICAgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSkKKworICAgICAgICB3aXRoIG9yaWdpbmFsX3dhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKG1vZHVsZT1zZWxmLm1vZHVsZSk6CisgICAgICAgICAgICBzZWxmLm1vZHVsZS5yZXNldHdhcm5pbmdzKCkKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLmZpbHRlcndhcm5pbmdzKCdkZWZhdWx0JykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhNeVdhcm5pbmdDbGFzcykgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGUud2FybignZ29vZCB3YXJuaW5nIGNhdGVnb3J5JywgTXlXYXJuaW5nQ2xhc3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdnb29kIHdhcm5pbmcgY2F0ZWdvcnknLCBzdHIoY20ud2FybmluZykpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhVc2VyV2FybmluZykgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGUud2FybignZ29vZCB3YXJuaW5nIGNhdGVnb3J5JywgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2dvb2Qgd2FybmluZyBjYXRlZ29yeScsIHN0cihjbS53YXJuaW5nKSkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKE15V2FybmluZ0NsYXNzKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuKCdnb29kIHdhcm5pbmcgY2F0ZWdvcnknLCBNeVdhcm5pbmdDbGFzcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjbS53YXJuaW5nLCBXYXJuaW5nKQogCiBjbGFzcyBDV2FyblRlc3RzKFdhcm5UZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIG1vZHVsZSA9IGNfd2FybmluZ3MKQEAgLTgzOSw3ICs4ODgsMTkgQEAKICAgICAgICAgICAgICJpbXBvcnQgc3lzOyBzeXMuc3Rkb3V0LndyaXRlKHN0cihzeXMud2Fybm9wdGlvbnMpKSIsCiAgICAgICAgICAgICBQWVRIT05XQVJOSU5HUz0iaWdub3JlOjpEZXByZWNhdGlvbldhcm5pbmciKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwKLSAgICAgICAgICAgIGIiWydpZ25vcmU6OlVuaWNvZGVXYXJuaW5nJywgJ2lnbm9yZTo6RGVwcmVjYXRpb25XYXJuaW5nJ10iKQorICAgICAgICAgICAgYiJbJ2lnbm9yZTo6RGVwcmVjYXRpb25XYXJuaW5nJywgJ2lnbm9yZTo6VW5pY29kZVdhcm5pbmcnXSIpCisKKyAgICBkZWYgdGVzdF9jb25mbGljdGluZ19lbnZ2YXJfYW5kX2NvbW1hbmRfbGluZShzZWxmKToKKyAgICAgICAgcmMsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKCItV2Vycm9yOjpEZXByZWNhdGlvbldhcm5pbmciLCAiLWMiLAorICAgICAgICAgICAgImltcG9ydCBzeXMsIHdhcm5pbmdzOyBzeXMuc3Rkb3V0LndyaXRlKHN0cihzeXMud2Fybm9wdGlvbnMpKTsgIgorICAgICAgICAgICAgIndhcm5pbmdzLndhcm4oJ01lc3NhZ2UnLCBEZXByZWNhdGlvbldhcm5pbmcpIiwKKyAgICAgICAgICAgIFBZVEhPTldBUk5JTkdTPSJkZWZhdWx0OjpEZXByZWNhdGlvbldhcm5pbmciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwKKyAgICAgICAgICAgIGIiWydkZWZhdWx0OjpEZXByZWNhdGlvbldhcm5pbmcnLCAnZXJyb3I6OkRlcHJlY2F0aW9uV2FybmluZyddIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIuc3BsaXRsaW5lcygpLAorICAgICAgICAgICAgW2IiVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOiIsCisgICAgICAgICAgICAgYiIgIEZpbGUgXCI8c3RyaW5nPlwiLCBsaW5lIDEsIGluIDxtb2R1bGU+IiwKKyAgICAgICAgICAgICBiIkRlcHJlY2F0aW9uV2FybmluZzogTWVzc2FnZSJdKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpICE9ICdhc2NpaScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIG5vbi1hc2NpaSBmaWxlc3lzdGVtZW5jb2RpbmcnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9fX21haW5fXy5weSBiL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvX19tYWluX18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRlNTJlYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvX19tYWluX18ucHkKQEAgLTAsMCArMSwzIEBACitpbXBvcnQgdW5pdHRlc3QKKwordW5pdHRlc3QubWFpbigndGVzdC50ZXN0X3dhcm5pbmdzJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvZGF0YS9pbXBvcnRfd2FybmluZy5weSBiL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvZGF0YS9pbXBvcnRfd2FybmluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmVhMmNlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9kYXRhL2ltcG9ydF93YXJuaW5nLnB5CkBAIC0wLDAgKzEsMyBAQAoraW1wb3J0IHdhcm5pbmdzCisKK3dhcm5pbmdzLndhcm4oJ21vZHVsZS1sZXZlbCB3YXJuaW5nJywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvd2FybmluZ190ZXN0cy5weSBiL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvZGF0YS9zdGFja2xldmVsLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC93YXJuaW5nX3Rlc3RzLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X3dhcm5pbmdzL2RhdGEvc3RhY2tsZXZlbC5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5IGIvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5CmluZGV4IDQzMTNjMWQuLmYzN2YxZTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2Vha3JlZi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dlYWtyZWYucHkKQEAgLTcsNyArNyw4IEBACiBpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IGNvcHkKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBzY3JpcHRfaGVscGVyCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiAKICMgVXNlZCBpbiBSZWZlcmVuY2VzVGVzdENhc2UudGVzdF9yZWZfY3JlYXRlZF9kdXJpbmdfZGVsKCkgLgogcmVmX2Zyb21fZGVsID0gTm9uZQpAQCAtOTIsNiArOTMsMTggQEAKICAgICAgICAgc2VsZi5jaGVja19iYXNpY19jYWxsYmFjayhjcmVhdGVfZnVuY3Rpb24pCiAgICAgICAgIHNlbGYuY2hlY2tfYmFzaWNfY2FsbGJhY2soY3JlYXRlX2JvdW5kX21ldGhvZCkKIAorICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2NmdW5jdGlvbihzZWxmKToKKyAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQorICAgICAgICBjcmVhdGVfY2Z1bmN0aW9uID0gX3Rlc3RjYXBpLmNyZWF0ZV9jZnVuY3Rpb24KKyAgICAgICAgZiA9IGNyZWF0ZV9jZnVuY3Rpb24oKQorICAgICAgICB3ciA9IHdlYWtyZWYucmVmKGYpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMod3IoKSwgZikKKyAgICAgICAgZGVsIGYKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUod3IoKSkKKyAgICAgICAgc2VsZi5jaGVja19iYXNpY19yZWYoY3JlYXRlX2NmdW5jdGlvbikKKyAgICAgICAgc2VsZi5jaGVja19iYXNpY19jYWxsYmFjayhjcmVhdGVfY2Z1bmN0aW9uKQorCiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfY2FsbGJhY2tzKHNlbGYpOgogICAgICAgICBvID0gQygpCiAgICAgICAgIHJlZjEgPSB3ZWFrcmVmLnJlZihvLCBzZWxmLmNhbGxiYWNrKQpAQCAtMTU5OSw2ICsxNjEyLDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGQpLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvdW50LCAyKQogCisgICAgZGVmIHRlc3RfbWFrZV93ZWFrX3ZhbHVlZF9kaWN0X3JlcHIoc2VsZik6CisgICAgICAgIGRpY3QgPSB3ZWFrcmVmLldlYWtWYWx1ZURpY3Rpb25hcnkoKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoZGljdCksICc8V2Vha1ZhbHVlRGljdGlvbmFyeSBhdCAweC4qPicpCisKKyAgICBkZWYgdGVzdF9tYWtlX3dlYWtfa2V5ZWRfZGljdF9yZXByKHNlbGYpOgorICAgICAgICBkaWN0ID0gd2Vha3JlZi5XZWFrS2V5RGljdGlvbmFyeSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihkaWN0KSwgJzxXZWFrS2V5RGljdGlvbmFyeSBhdCAweC4qPicpCisKIGZyb20gdGVzdCBpbXBvcnQgbWFwcGluZ190ZXN0cwogCiBjbGFzcyBXZWFrVmFsdWVEaWN0aW9uYXJ5VGVzdENhc2UobWFwcGluZ190ZXN0cy5CYXNpY1Rlc3RNYXBwaW5nUHJvdG9jb2wpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93ZWFrc2V0LnB5IGIvTGliL3Rlc3QvdGVzdF93ZWFrc2V0LnB5CmluZGV4IGZiMjI4NzkuLjljZTY3MmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2Vha3NldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dlYWtzZXQucHkKQEAgLTEsNSArMSw0IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB3ZWFrcmVmIGltcG9ydCBwcm94eSwgcmVmLCBXZWFrU2V0CiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBjb3B5CkBAIC00NDMsOCArNDQyLDUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKG4yLCBuMSkKIAogCi1kZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFdlYWtTZXQpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKHZlcmJvc2U9VHJ1ZSkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkgYi9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5CmluZGV4IDgzNjE4YjYuLjdhZmIyNGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weQpAQCAtMjQ2LDggKzI0Niw1IEBACiAgICAgcmV0dXJuIF9faGF2ZV9zb3VuZGNhcmRfY2FjaGUKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQmVlcFRlc3QsIE1lc3NhZ2VCZWVwVGVzdCwgUGxheVNvdW5kVGVzdCkKLQotaWYgX19uYW1lX189PSJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dpdGgucHkgYi9MaWIvdGVzdC90ZXN0X3dpdGgucHkKaW5kZXggY2JhYWZjZi4uZThkNzg5YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93aXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2l0aC5weQpAQCAtOCw3ICs4LDYgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGZyb20gY29udGV4dGxpYiBpbXBvcnQgX0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyLCBjb250ZXh0bWFuYWdlcgotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiAKIGNsYXNzIE1vY2tDb250ZXh0TWFuYWdlcihfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXIpOgpAQCAtNDU1LDcgKzQ1NCw4IEBACiAgICAgICAgICAgICB3aXRoIGNtKCk6CiAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbigiZnJvbSB3aXRoIikKIAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBzaG91bGRUaHJvdykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIHNob3VsZFRocm93KQogCiAgICAgZGVmIHRlc3RSYWlzZWRTdG9wSXRlcmF0aW9uMihzZWxmKToKICAgICAgICAgIyBGcm9tIGJ1ZyAxNDYyNDg1CkBAIC00ODIsNyArNDgyLDggQEAKICAgICAgICAgICAgIHdpdGggY20oKToKICAgICAgICAgICAgICAgICByYWlzZSBuZXh0KGl0ZXIoW10pKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIHNob3VsZFRocm93KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgc2hvdWxkVGhyb3cpCiAKICAgICBkZWYgdGVzdFJhaXNlZEdlbmVyYXRvckV4aXQxKHNlbGYpOgogICAgICAgICAjIEZyb20gYnVnIDE0NjI0ODUKQEAgLTczNywxNCArNzM4LDUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAsIGIxKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMCwgYjIpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoRmFpbHVyZVRlc3RDYXNlLCBOb25leGNlcHRpb25hbFRlc3RDYXNlLAotICAgICAgICAgICAgICAgICBOZXN0ZWROb25leGNlcHRpb25hbFRlc3RDYXNlLCBFeGNlcHRpb25hbFRlc3RDYXNlLAotICAgICAgICAgICAgICAgICBOb25Mb2NhbEZsb3dDb250cm9sVGVzdENhc2UsCi0gICAgICAgICAgICAgICAgIEFzc2lnbm1lbnRUYXJnZXRUZXN0Q2FzZSwKLSAgICAgICAgICAgICAgICAgRXhpdFN3YWxsb3dzRXhjZXB0aW9uVGVzdENhc2UsCi0gICAgICAgICAgICAgICAgIE5lc3RlZFdpdGgpCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5IGIvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5CmluZGV4IDQwNzZiNjguLjhjY2E1OTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkKQEAgLTE1LDggKzE1LDYgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLQogCiBjbGFzcyBNb2NrU2VydmVyKFdTR0lTZXJ2ZXIpOgogICAgICIiIk5vbi1zb2NrZXQgSFRUUCBzZXJ2ZXIiIiIKQEAgLTM2OSw2ICszNjcsNyBAQAogCiAgICAgZGVmIHRlc3RNYXBwaW5nSW50ZXJmYWNlKHNlbGYpOgogICAgICAgICB0ZXN0ID0gWygneCcsJ3knKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oSGVhZGVycygpKSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oSGVhZGVycyhbXSkpLDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKEhlYWRlcnModGVzdFs6XSkpLDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoSGVhZGVycyh0ZXN0WzpdKS5rZXlzKCksIFsneCddKQpAQCAtMzc2LDcgKzM3NSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoSGVhZGVycyh0ZXN0WzpdKS5pdGVtcygpLCB0ZXN0KQogICAgICAgICBzZWxmLmFzc2VydElzTm90KEhlYWRlcnModGVzdCkuaXRlbXMoKSwgdGVzdCkgICMgbXVzdCBiZSBjb3B5IQogCi0gICAgICAgIGg9SGVhZGVycyhbXSkKKyAgICAgICAgaCA9IEhlYWRlcnMoKQogICAgICAgICBkZWwgaFsnZm9vJ10gICAjIHNob3VsZCBub3QgcmFpc2UgYW4gZXJyb3IKIAogICAgICAgICBoWydGb28nXSA9ICdiYXInCkBAIC00MDEsOSArNDAwLDggQEAKICAgICBkZWYgdGVzdFJlcXVpcmVMaXN0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEhlYWRlcnMsICJmb28iKQogCi0KICAgICBkZWYgdGVzdEV4dHJhcyhzZWxmKToKLSAgICAgICAgaCA9IEhlYWRlcnMoW10pCisgICAgICAgIGggPSBIZWFkZXJzKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaCksJ1xyXG4nKQogCiAgICAgICAgIGguYWRkX2hlYWRlcignZm9vJywnYmFyJyxiYXo9InNwYW0iKQpAQCAtNjU5LDggKzY1Nyw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lkZV9lZmZlY3RzWydjbG9zZV9jYWxsZWQnXSwgVHJ1ZSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeGRybGliLnB5IGIvTGliL3Rlc3QvdGVzdF94ZHJsaWIucHkKaW5kZXggNzA0OTZkNi4uM2RmNWYyNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94ZHJsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94ZHJsaWIucHkKQEAgLTEsNCArMSwzIEBACi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCiBpbXBvcnQgeGRybGliCkBAIC03NCw5ICs3Myw1IEBACiAgICAgZGVmIHRlc3RfdWh5cGVyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc0NvbnZlcnNpb24oc2VsZi5wYWNrZXIucGFja191aHlwZXIsICdzdHJpbmcnKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoWERSVGVzdCkKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChDb252ZXJzaW9uRXJyb3JUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weSBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5CmluZGV4IDVjMmEyYWYuLjM1ODQ4NGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5CkBAIC03NTgsNyArNzU4LDcgQEAKICAgICAgICAgICAgICdtYWMtcm9tYW4nLCAnbWFjLXR1cmtpc2gnLAogICAgICAgICAgICAgJ2lzbzIwMjItanAnLCAnaXNvMjAyMi1qcC0xJywgJ2lzbzIwMjItanAtMicsICdpc28yMDIyLWpwLTIwMDQnLAogICAgICAgICAgICAgJ2lzbzIwMjItanAtMycsICdpc28yMDIyLWpwLWV4dCcsCi0gICAgICAgICAgICAna29pOC1yJywgJ2tvaTgtdScsCisgICAgICAgICAgICAna29pOC1yJywgJ2tvaTgtdCcsICdrb2k4LXUnLCAna3oxMDQ4JywKICAgICAgICAgICAgICdoeicsICdwdGNwMTU0JywKICAgICAgICAgXQogICAgICAgICBmb3IgZW5jb2RpbmcgaW4gc3VwcG9ydGVkX2VuY29kaW5nczoKQEAgLTE2NjYsNiArMTY2Niw1NyBAQAogICAgICAgICBFVC5yZWdpc3Rlcl9uYW1lc3BhY2UoJ3Rlc3QxMDc3NycsICdodHRwOi8vbXl1cmkvJykKICAgICAgICAgRVQucmVnaXN0ZXJfbmFtZXNwYWNlKCd0ZXN0MTA3NzcnLCAnaHR0cDovL215dXJpLycpCiAKKyAgICBkZWYgdGVzdF9sb3N0X3RleHQoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzI1OTAyOiBCb3Jyb3dlZCB0ZXh0IGNhbiBkaXNhcHBlYXIKKyAgICAgICAgY2xhc3MgVGV4dDoKKyAgICAgICAgICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBlLnRleHQgPSAnY2hhbmdlZCcKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIGUgPSBFVC5FbGVtZW50KCd0YWcnKQorICAgICAgICBlLnRleHQgPSBUZXh0KCkKKyAgICAgICAgaSA9IGUuaXRlcnRleHQoKQorICAgICAgICB0ID0gbmV4dChpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodCwgVGV4dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUudGV4dCwgc3RyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudGV4dCwgJ2NoYW5nZWQnKQorCisgICAgZGVmIHRlc3RfbG9zdF90YWlsKHNlbGYpOgorICAgICAgICAjIElzc3VlICMyNTkwMjogQm9ycm93ZWQgdGFpbCBjYW4gZGlzYXBwZWFyCisgICAgICAgIGNsYXNzIFRleHQ6CisgICAgICAgICAgICBkZWYgX19ib29sX18oc2VsZik6CisgICAgICAgICAgICAgICAgZVswXS50YWlsID0gJ2NoYW5nZWQnCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBlID0gRVQuRWxlbWVudCgncm9vdCcpCisgICAgICAgIGUuYXBwZW5kKEVULkVsZW1lbnQoJ3RhZycpKQorICAgICAgICBlWzBdLnRhaWwgPSBUZXh0KCkKKyAgICAgICAgaSA9IGUuaXRlcnRleHQoKQorICAgICAgICB0ID0gbmV4dChpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodCwgVGV4dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGVbMF0udGFpbCwgc3RyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVbMF0udGFpbCwgJ2NoYW5nZWQnKQorCisgICAgZGVmIHRlc3RfbG9zdF9lbGVtKHNlbGYpOgorICAgICAgICAjIElzc3VlICMyNTkwMjogQm9ycm93ZWQgZWxlbWVudCBjYW4gZGlzYXBwZWFyCisgICAgICAgIGNsYXNzIFRhZzoKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIGVbMF0gPSBFVC5FbGVtZW50KCdjaGFuZ2VkJykKKyAgICAgICAgICAgICAgICBuZXh0KGkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBlID0gRVQuRWxlbWVudCgncm9vdCcpCisgICAgICAgIGUuYXBwZW5kKEVULkVsZW1lbnQoVGFnKCkpKQorICAgICAgICBlLmFwcGVuZChFVC5FbGVtZW50KCd0YWcnKSkKKyAgICAgICAgaSA9IGUuaXRlcigndGFnJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdCA9IG5leHQoaSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdnZW5lcmF0b3JzIGFyZSBub3QgcmVlbnRyYW50JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHQudGFnLCBUYWcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlWzBdLnRhZywgc3RyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVbMF0udGFnLCAnY2hhbmdlZCcpCisKIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQppbmRleCA0MDllYzZhLi45NmI0NDZlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKQEAgLTg3LDcgKzg3LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuZWxlbWVudHNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCc1UCcpCiAgICAgICAgICMgZXh0cmEKLSAgICAgICAgc2VsZi5leHRyYSA9IHN0cnVjdC5jYWxjc2l6ZSgnUGlpUDRQJykKKyAgICAgICAgc2VsZi5leHRyYSA9IHN0cnVjdC5jYWxjc2l6ZSgnUG5uUDRQJykKIAogICAgIGNoZWNrX3NpemVvZiA9IHN1cHBvcnQuY2hlY2tfc2l6ZW9mCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKaW5kZXggN2FlMGRjZS4uOTg4MGY0YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKQEAgLTI4Nyw3ICsyODcsNyBAQAogICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CiAgICAgICAgIGQgPSBkYXRldGltZS5kYXRldGltZSgyMDA3LDEsMiwzLDQsNSkKICAgICAgICAgdCA9IHhtbHJwY2xpYi5EYXRlVGltZShkKQotICAgICAgICB2YWwgPSI8RGF0ZVRpbWUgJzIwMDcwMTAyVDAzOjA0OjA1JyBhdCAleD4iICUgaWQodCkKKyAgICAgICAgdmFsID0iPERhdGVUaW1lICcyMDA3MDEwMlQwMzowNDowNScgYXQgJSN4PiIgJSBpZCh0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIodCksIHZhbCkKIAogICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKQEAgLTcxMyw2ICs3MTMsMjMgQEAKICAgICAgICAgY29ubi5yZXF1ZXN0KCdQT1NUJywgJy9SUEMyIEhUVFAvMS4wXHJcbkNvbnRlbnQtTGVuZ3RoOiAxMDBcclxuXHJcbmJ5ZScpCiAgICAgICAgIGNvbm4uY2xvc2UoKQogCisgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyKHNlbGYpOgorICAgICAgICB3aXRoIHhtbHJwY2xpYi5TZXJ2ZXJQcm94eShVUkwpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgIHNlcnZlci5hZGQoMiwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc2VydmVyKCd0cmFuc3BvcnQnKS5fY29ubmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsIE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlcigndHJhbnNwb3J0JykuX2Nvbm5lY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsIE5vbmUpKQorCisgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyX21ldGhvZF9lcnJvcihzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCB4bWxycGNsaWIuU2VydmVyUHJveHkoVVJMKSBhcyBzZXJ2ZXI6CisgICAgICAgICAgICAgICAgc2VydmVyLmFkZCgyLCAiYSIpCisgICAgICAgIGV4Y2VwdCB4bWxycGNsaWIuRmF1bHQ6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyKCd0cmFuc3BvcnQnKS5fY29ubmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgTm9uZSkpCisKIAogY2xhc3MgTXVsdGlQYXRoU2VydmVyVGVzdENhc2UoQmFzZVNlcnZlclRlc3RDYXNlKToKICAgICB0aHJlYWRGdW5jID0gc3RhdGljbWV0aG9kKGh0dHBfbXVsdGlfc2VydmVyKQpAQCAtOTE5LDYgKzkzNiw3IEBACiAgICAgICAgIHAgPSB4bWxycGNsaWIuU2VydmVyUHJveHkoc2VsZi51cmwsIHRyYW5zcG9ydD10KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAoJ3RyYW5zcG9ydCcpLCB0KQogCisKICMgVGhpcyBpcyBhIGNvbnRyaXZlZCB3YXkgdG8gbWFrZSBhIGZhaWx1cmUgb2NjdXIgb24gdGhlIHNlcnZlciBzaWRlCiAjIGluIG9yZGVyIHRvIHRlc3QgdGhlIF9zZW5kX3RyYWNlYmFja19oZWFkZXIgZmxhZyBvbiB0aGUgc2VydmVyCiBjbGFzcyBGYWlsaW5nTWVzc2FnZUNsYXNzKGh0dHAuY2xpZW50LkhUVFBNZXNzYWdlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwYXBwLnB5IGIvTGliL3Rlc3QvdGVzdF96aXBhcHAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTczNDM4MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwYXBwLnB5CkBAIC0wLDAgKzEsMzQ5IEBACisiIiJUZXN0IGhhcm5lc3MgZm9yIHRoZSB6aXBhcHAgbW9kdWxlLiIiIgorCitpbXBvcnQgaW8KK2ltcG9ydCBwYXRobGliCitpbXBvcnQgc3RhdAoraW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB6aXBhcHAKK2ltcG9ydCB6aXBmaWxlCisKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gKKworY2xhc3MgWmlwQXBwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0IHppcGFwcCBtb2R1bGUgZnVuY3Rpb25hbGl0eS4iIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgdG1wZGlyID0gdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRtcGRpci5jbGVhbnVwKQorICAgICAgICBzZWxmLnRtcGRpciA9IHBhdGhsaWIuUGF0aCh0bXBkaXIubmFtZSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9hcmNoaXZlKHNlbGYpOgorICAgICAgICAjIFRlc3QgcGFja2luZyBhIGRpcmVjdG9yeS4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGFyZ2V0LmlzX2ZpbGUoKSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9hcmNoaXZlX3dpdGhfcGF0aGxpYihzZWxmKToKKyAgICAgICAgIyBUZXN0IHBhY2tpbmcgYSBkaXJlY3RvcnkgdXNpbmcgUGF0aCBvYmplY3RzIGZvciBzb3VyY2UgYW5kIHRhcmdldC4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc291cmNlLCB0YXJnZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0YXJnZXQuaXNfZmlsZSgpKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX2FyY2hpdmVfd2l0aF9zdWJkaXJzKHNlbGYpOgorICAgICAgICAjIFRlc3QgcGFja2luZyBhIGRpcmVjdG9yeSBpbmNsdWRlcyBlbnRyaWVzIGZvciBzdWJkaXJlY3Rvcmllcy4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICAoc291cmNlIC8gJ2ZvbycpLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdiYXInKS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnZm9vJyAvICdfX2luaXRfXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gaW8uQnl0ZXNJTygpCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgdGFyZ2V0KQorICAgICAgICB0YXJnZXQuc2VlaygwKQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZSh0YXJnZXQsICdyJykgYXMgejoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Zvby8nLCB6Lm5hbWVsaXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdiYXIvJywgei5uYW1lbGlzdCgpKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX2FyY2hpdmVfZGVmYXVsdF90YXJnZXQoc2VsZik6CisgICAgICAgICMgVGVzdCBwYWNraW5nIGEgZGlyZWN0b3J5IHRvIHRoZSBkZWZhdWx0IG5hbWUuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpKQorICAgICAgICBleHBlY3RlZF90YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhwZWN0ZWRfdGFyZ2V0LmlzX2ZpbGUoKSkKKworICAgIGRlZiB0ZXN0X25vX21haW4oc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHBhY2tpbmcgYSBkaXJlY3Rvcnkgd2l0aCBubyBfX21haW5fXy5weSBmYWlscy4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ2Zvby5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh6aXBhcHAuWmlwQXBwRXJyb3IpOgorICAgICAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSkKKworICAgIGRlZiB0ZXN0X21haW5fYW5kX21haW5fcHkoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHN1cHBseWluZyBhIG1haW4gYXJndW1lbnQgd2l0aCBfX21haW5fXy5weSBmYWlscy4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHppcGFwcC5aaXBBcHBFcnJvcik6CisgICAgICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpLCBtYWluPSdwa2cubW9kOmZuJykKKworICAgIGRlZiB0ZXN0X21haW5fd3JpdHRlbihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgdGhlIF9fbWFpbl9fLnB5IGlzIHdyaXR0ZW4gY29ycmVjdGx5LgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnZm9vLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpLCBtYWluPSdwa2cubW9kOmZuJykKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoc3RyKHRhcmdldCksICdyJykgYXMgejoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19fbWFpbl9fLnB5Jywgei5uYW1lbGlzdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ3BrZy5tb2QuZm4oKScsIHoucmVhZCgnX19tYWluX18ucHknKSkKKworICAgIGRlZiB0ZXN0X21haW5fb25seV93cml0dGVuX29uY2Uoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdlIGRvbid0IHdyaXRlIG11bHRpcGxlIF9fbWFpbl9fLnB5IGZpbGVzLgorICAgICAgICAjIFRoZSBpbml0aWFsIGltcGxlbWVudGF0aW9uIGhhZCB0aGlzIGJ1ZzsgemlwIGZpbGVzIGFsbG93CisgICAgICAgICMgbXVsdGlwbGUgZW50cmllcyB3aXRoIHRoZSBzYW1lIG5hbWUKKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAjIFdyaXRlIDIgZmlsZXMsIGFzIHRoZSBvcmlnaW5hbCBidWcgd3JvdGUgX19tYWluX18ucHkKKyAgICAgICAgIyBvbmNlIGZvciBlYWNoIGZpbGUgd3JpdHRlbiA6LSgKKyAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9yZXZpZXcvMjM0OTEvZGlmZi8xMzk4Mi9MaWIvemlwYXBwLnB5I25ld2NvZGU2N0xpYi96aXBhcHAucHk6NjcKKyAgICAgICAgIyAobGluZSA2NykKKyAgICAgICAgKHNvdXJjZSAvICdmb28ucHknKS50b3VjaCgpCisgICAgICAgIChzb3VyY2UgLyAnYmFyLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpLCBtYWluPSdwa2cubW9kOmZuJykKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoc3RyKHRhcmdldCksICdyJykgYXMgejoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgei5uYW1lbGlzdCgpLmNvdW50KCdfX21haW5fXy5weScpKQorCisgICAgZGVmIHRlc3RfbWFpbl92YWxpZGF0aW9uKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBpbnZhbGlkIHZhbHVlcyBmb3IgbWFpbiBhcmUgcmVqZWN0ZWQuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgcHJvYmxlbXMgPSBbCisgICAgICAgICAgICAnJywgJ2ZvbycsICdmb286JywgJzpiYXInLCAnMTI6YmFyJywgJ2EuYi5jLjpkJywKKyAgICAgICAgICAgICcuYTpiJywgJ2E6Yi4nLCAnYTouYicsICdhOnNpbGx5IG5hbWUnCisgICAgICAgIF0KKyAgICAgICAgZm9yIG1haW4gaW4gcHJvYmxlbXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChtYWluPW1haW4pOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoemlwYXBwLlppcEFwcEVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSwgbWFpbj1tYWluKQorCisgICAgZGVmIHRlc3RfZGVmYXVsdF9ub19zaGViYW5nKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBubyBzaGViYW5nIGxpbmUgaXMgd3JpdHRlbiB0byB0aGUgdGFyZ2V0IGJ5IGRlZmF1bHQuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSkKKyAgICAgICAgd2l0aCB0YXJnZXQub3BlbigncmInKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChmLnJlYWQoMiksIGInIyEnKQorCisgICAgZGVmIHRlc3RfY3VzdG9tX2ludGVycHJldGVyKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBhIHNoZWJhbmcgbGluZSB3aXRoIGEgY3VzdG9tIGludGVycHJldGVyIGlzIHdyaXR0ZW4KKyAgICAgICAgIyBjb3JyZWN0bHkuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSwgaW50ZXJwcmV0ZXI9J3B5dGhvbicpCisgICAgICAgIHdpdGggdGFyZ2V0Lm9wZW4oJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKDIpLCBiJyMhJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidweXRob25cbicsIGYucmVhZGxpbmUoKSkKKworICAgIGRlZiB0ZXN0X3BhY2tfdG9fZmlsZW9iaihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2UgY2FuIHBhY2sgdG8gYSBmaWxlIG9iamVjdC4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCB0YXJnZXQsIGludGVycHJldGVyPSdweXRob24nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGFyZ2V0LmdldHZhbHVlKCkuc3RhcnRzd2l0aChiJyMhcHl0aG9uXG4nKSkKKworICAgIGRlZiB0ZXN0X3JlYWRfc2hlYmFuZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2UgY2FuIHJlYWQgdGhlIHNoZWJhbmcgbGluZSBjb3JyZWN0bHkuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSwgaW50ZXJwcmV0ZXI9J3B5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwYXBwLmdldF9pbnRlcnByZXRlcihzdHIodGFyZ2V0KSksICdweXRob24nKQorCisgICAgZGVmIHRlc3RfcmVhZF9taXNzaW5nX3NoZWJhbmcoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHJlYWRpbmcgdGhlIHNoZWJhbmcgbGluZSBvZiBhIGZpbGUgd2l0aG91dCBvbmUgcmV0dXJucyBOb25lLgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgc3RyKHRhcmdldCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwYXBwLmdldF9pbnRlcnByZXRlcihzdHIodGFyZ2V0KSksIE5vbmUpCisKKyAgICBkZWYgdGVzdF9tb2RpZnlfc2hlYmFuZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2UgY2FuIGNoYW5nZSB0aGUgc2hlYmFuZyBvZiBhIGZpbGUuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSwgaW50ZXJwcmV0ZXI9J3B5dGhvbicpCisgICAgICAgIG5ld190YXJnZXQgPSBzZWxmLnRtcGRpciAvICdjaGFuZ2VkLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cih0YXJnZXQpLCBzdHIobmV3X3RhcmdldCksIGludGVycHJldGVyPSdweXRob24yLjcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGFwcC5nZXRfaW50ZXJwcmV0ZXIoc3RyKG5ld190YXJnZXQpKSwgJ3B5dGhvbjIuNycpCisKKyAgICBkZWYgdGVzdF93cml0ZV9zaGViYW5nX3RvX2ZpbGVvYmooc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdlIGNhbiBjaGFuZ2UgdGhlIHNoZWJhbmcgb2YgYSBmaWxlLCB3cml0aW5nIHRoZSByZXN1bHQgdG8gYQorICAgICAgICAjIGZpbGUgb2JqZWN0LgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgc3RyKHRhcmdldCksIGludGVycHJldGVyPSdweXRob24nKQorICAgICAgICBuZXdfdGFyZ2V0ID0gaW8uQnl0ZXNJTygpCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIodGFyZ2V0KSwgbmV3X3RhcmdldCwgaW50ZXJwcmV0ZXI9J3B5dGhvbjIuNycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZXdfdGFyZ2V0LmdldHZhbHVlKCkuc3RhcnRzd2l0aChiJyMhcHl0aG9uMi43XG4nKSkKKworICAgIGRlZiB0ZXN0X3JlYWRfZnJvbV9wYXRob2JqKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB3ZSBjYW4gY29weSBhbiBhcmNoaXZlIHVzaW5nIGFuIHBhdGhsaWIuUGF0aCBvYmplY3QKKyAgICAgICAgIyBmb3IgdGhlIHNvdXJjZS4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQxID0gc2VsZi50bXBkaXIgLyAndGFyZ2V0MS5weXonCisgICAgICAgIHRhcmdldDIgPSBzZWxmLnRtcGRpciAvICd0YXJnZXQyLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHNvdXJjZSwgdGFyZ2V0MSwgaW50ZXJwcmV0ZXI9J3B5dGhvbicpCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZSh0YXJnZXQxLCB0YXJnZXQyLCBpbnRlcnByZXRlcj0ncHl0aG9uMi43JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBhcHAuZ2V0X2ludGVycHJldGVyKHRhcmdldDIpLCAncHl0aG9uMi43JykKKworICAgIGRlZiB0ZXN0X3JlYWRfZnJvbV9maWxlb2JqKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB3ZSBjYW4gY29weSBhbiBhcmNoaXZlIHVzaW5nIGFuIG9wZW4gZmlsZSBvYmplY3QuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgdGVtcF9hcmNoaXZlID0gaW8uQnl0ZXNJTygpCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgdGVtcF9hcmNoaXZlLCBpbnRlcnByZXRlcj0ncHl0aG9uJykKKyAgICAgICAgbmV3X3RhcmdldCA9IGlvLkJ5dGVzSU8oKQorICAgICAgICB0ZW1wX2FyY2hpdmUuc2VlaygwKQorICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUodGVtcF9hcmNoaXZlLCBuZXdfdGFyZ2V0LCBpbnRlcnByZXRlcj0ncHl0aG9uMi43JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5ld190YXJnZXQuZ2V0dmFsdWUoKS5zdGFydHN3aXRoKGInIyFweXRob24yLjdcbicpKQorCisgICAgZGVmIHRlc3RfcmVtb3ZlX3NoZWJhbmcoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdlIGNhbiByZW1vdmUgdGhlIHNoZWJhbmcgZnJvbSBhIGZpbGUuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSwgaW50ZXJwcmV0ZXI9J3B5dGhvbicpCisgICAgICAgIG5ld190YXJnZXQgPSBzZWxmLnRtcGRpciAvICdjaGFuZ2VkLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cih0YXJnZXQpLCBzdHIobmV3X3RhcmdldCksIGludGVycHJldGVyPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwYXBwLmdldF9pbnRlcnByZXRlcihzdHIobmV3X3RhcmdldCkpLCBOb25lKQorCisgICAgZGVmIHRlc3RfY29udGVudF9vZl9jb3BpZWRfYXJjaGl2ZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgY29weWluZyBhbiBhcmNoaXZlIGRvZXNuJ3QgY29ycnVwdCBpdC4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCB0YXJnZXQsIGludGVycHJldGVyPSdweXRob24nKQorICAgICAgICBuZXdfdGFyZ2V0ID0gaW8uQnl0ZXNJTygpCisgICAgICAgIHRhcmdldC5zZWVrKDApCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZSh0YXJnZXQsIG5ld190YXJnZXQsIGludGVycHJldGVyPU5vbmUpCisgICAgICAgIG5ld190YXJnZXQuc2VlaygwKQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShuZXdfdGFyZ2V0LCAncicpIGFzIHo6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh6Lm5hbWVsaXN0KCkpLCB7J19fbWFpbl9fLnB5J30pCisKKyAgICAjIChVbml4IG9ubHkpIHRlc3RzIHRoYXQgYXJjaGl2ZXMgd2l0aCBzaGViYW5nIGxpbmVzIGFyZSBtYWRlIGV4ZWN1dGFibGUKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLAorICAgICAgICAgICAgICAgICAgICAgJ1dpbmRvd3MgZG9lcyBub3Qgc3VwcG9ydCBhbiBleGVjdXRhYmxlIGJpdCcpCisgICAgZGVmIHRlc3Rfc2hlYmFuZ19pc19leGVjdXRhYmxlKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBhbiBhcmNoaXZlIHdpdGggYSBzaGViYW5nIGxpbmUgaXMgbWFkZSBleGVjdXRhYmxlLgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgc3RyKHRhcmdldCksIGludGVycHJldGVyPSdweXRob24nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGFyZ2V0LnN0YXQoKS5zdF9tb2RlICYgc3RhdC5TX0lFWEVDKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywKKyAgICAgICAgICAgICAgICAgICAgICdXaW5kb3dzIGRvZXMgbm90IHN1cHBvcnQgYW4gZXhlY3V0YWJsZSBiaXQnKQorICAgIGRlZiB0ZXN0X25vX3NoZWJhbmdfaXNfbm90X2V4ZWN1dGFibGUoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGFuIGFyY2hpdmUgd2l0aCBubyBzaGViYW5nIGxpbmUgaXMgbm90IG1hZGUgZXhlY3V0YWJsZS4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpLCBpbnRlcnByZXRlcj1Ob25lKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRhcmdldC5zdGF0KCkuc3RfbW9kZSAmIHN0YXQuU19JRVhFQykKKworCitjbGFzcyBaaXBBcHBDbWRsaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0IHppcGFwcCBtb2R1bGUgY29tbWFuZCBsaW5lIEFQSS4iIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgdG1wZGlyID0gdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRtcGRpci5jbGVhbnVwKQorICAgICAgICBzZWxmLnRtcGRpciA9IHBhdGhsaWIuUGF0aCh0bXBkaXIubmFtZSkKKworICAgIGRlZiBtYWtlX2FyY2hpdmUoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGFuIGFyY2hpdmUgd2l0aCBubyBzaGViYW5nIGxpbmUgaXMgbm90IG1hZGUgZXhlY3V0YWJsZS4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc291cmNlLCB0YXJnZXQpCisgICAgICAgIHJldHVybiB0YXJnZXQKKworICAgIGRlZiB0ZXN0X2NtZGxpbmVfY3JlYXRlKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhlIGJhc2ljIGNvbW1hbmQgbGluZSBBUEkuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgYXJncyA9IFtzdHIoc291cmNlKV0KKyAgICAgICAgemlwYXBwLm1haW4oYXJncykKKyAgICAgICAgdGFyZ2V0ID0gc291cmNlLndpdGhfc3VmZml4KCcucHl6JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRhcmdldC5pc19maWxlKCkpCisKKyAgICBkZWYgdGVzdF9jbWRsaW5lX2NvcHkoc2VsZik6CisgICAgICAgICMgVGVzdCBjb3B5aW5nIGFuIGFyY2hpdmUuCisgICAgICAgIG9yaWdpbmFsID0gc2VsZi5tYWtlX2FyY2hpdmUoKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICd0YXJnZXQucHl6JworICAgICAgICBhcmdzID0gW3N0cihvcmlnaW5hbCksICctbycsIHN0cih0YXJnZXQpXQorICAgICAgICB6aXBhcHAubWFpbihhcmdzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGFyZ2V0LmlzX2ZpbGUoKSkKKworICAgIGRlZiB0ZXN0X2NtZGxpbmVfY29weV9pbnBsYWNlKHNlbGYpOgorICAgICAgICAjIFRlc3QgY29weWluZyBhbiBhcmNoaXZlIGluIHBsYWNlIGZhaWxzLgorICAgICAgICBvcmlnaW5hbCA9IHNlbGYubWFrZV9hcmNoaXZlKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAndGFyZ2V0LnB5eicKKyAgICAgICAgYXJncyA9IFtzdHIob3JpZ2luYWwpLCAnLW8nLCBzdHIob3JpZ2luYWwpXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQpIGFzIGNtOgorICAgICAgICAgICAgemlwYXBwLm1haW4oYXJncykKKyAgICAgICAgIyBQcm9ncmFtIHNob3VsZCBleGl0IHdpdGggYSBub24temVybyByZXR1cm0gY29kZS4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNtLmV4Y2VwdGlvbi5jb2RlKQorCisgICAgZGVmIHRlc3RfY21kbGluZV9jb3B5X2NoYW5nZV9tYWluKHNlbGYpOgorICAgICAgICAjIFRlc3QgY29weWluZyBhbiBhcmNoaXZlIGRvZXNuJ3QgYWxsb3cgY2hhbmdpbmcgX19tYWluX18ucHkuCisgICAgICAgIG9yaWdpbmFsID0gc2VsZi5tYWtlX2FyY2hpdmUoKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICd0YXJnZXQucHl6JworICAgICAgICBhcmdzID0gW3N0cihvcmlnaW5hbCksICctbycsIHN0cih0YXJnZXQpLCAnLW0nLCAnZm9vOmJhciddCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCkgYXMgY206CisgICAgICAgICAgICB6aXBhcHAubWFpbihhcmdzKQorICAgICAgICAjIFByb2dyYW0gc2hvdWxkIGV4aXQgd2l0aCBhIG5vbi16ZXJvIHJldHVybSBjb2RlLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoY20uZXhjZXB0aW9uLmNvZGUpCisKKyAgICBAcGF0Y2goJ3N5cy5zdGRvdXQnLCBuZXdfY2FsbGFibGU9aW8uU3RyaW5nSU8pCisgICAgZGVmIHRlc3RfaW5mb19jb21tYW5kKHNlbGYsIG1vY2tfc3Rkb3V0KToKKyAgICAgICAgIyBUZXN0IHRoZSBvdXRwdXQgb2YgdGhlIGluZm8gY29tbWFuZC4KKyAgICAgICAgdGFyZ2V0ID0gc2VsZi5tYWtlX2FyY2hpdmUoKQorICAgICAgICBhcmdzID0gW3N0cih0YXJnZXQpLCAnLS1pbmZvJ10KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0KSBhcyBjbToKKyAgICAgICAgICAgIHppcGFwcC5tYWluKGFyZ3MpCisgICAgICAgICMgUHJvZ3JhbSBzaG91bGQgZXhpdCB3aXRoIGEgemVybyByZXR1cm0gY29kZS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uY29kZSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrX3N0ZG91dC5nZXR2YWx1ZSgpLCAiSW50ZXJwcmV0ZXI6IDxub25lPlxuIikKKworICAgIGRlZiB0ZXN0X2luZm9fZXJyb3Ioc2VsZik6CisgICAgICAgICMgVGVzdCB0aGUgaW5mbyBjb21tYW5kIGZhaWxzIHdoZW4gdGhlIGFyY2hpdmUgZG9lcyBub3QgZXhpc3QuCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ2R1bW15LnB5eicKKyAgICAgICAgYXJncyA9IFtzdHIodGFyZ2V0KSwgJy0taW5mbyddCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCkgYXMgY206CisgICAgICAgICAgICB6aXBhcHAubWFpbihhcmdzKQorICAgICAgICAjIFByb2dyYW0gc2hvdWxkIGV4aXQgd2l0aCBhIG5vbi16ZXJvIHJldHVybSBjb2RlLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoY20uZXhjZXB0aW9uLmNvZGUpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weQppbmRleCA0YmRmN2Q0Li4yYzEwODIxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5CkBAIC0zMzAsNiArMzMwLDM3IEBACiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHppcG9wZW4ucmVhZDEoMTAwKToKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKIAorICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIGZuYW1lID0gJ2ZpbGUubmFtZScKKyAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgorICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgJ3cnLCBzZWxmLmNvbXByZXNzaW9uKSBhcyB6aXBmcDoKKyAgICAgICAgICAgICAgICB6aXBmcC53cml0ZShURVNURk4sIGZuYW1lKQorICAgICAgICAgICAgICAgIHIgPSByZXByKHppcGZwKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm1vZGU9J3cnIiwgcikKKworICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgJ3InKSBhcyB6aXBmcDoKKyAgICAgICAgICAgICAgICByID0gcmVwcih6aXBmcCkKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGYsIHN0cik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2ZpbGVuYW1lPSVyJyAlIGYsIHIpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignZmlsZT0lcicgJSBmLCByKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm1vZGU9J3InIiwgcikKKyAgICAgICAgICAgICAgICByID0gcmVwcih6aXBmcC5nZXRpbmZvKGZuYW1lKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdmaWxlbmFtZT0lcicgJSBmbmFtZSwgcikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdmaWxlbW9kZT0nLCByKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2ZpbGVfc2l6ZT0nLCByKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuY29tcHJlc3Npb24gIT0gemlwZmlsZS5aSVBfU1RPUkVEOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdjb21wcmVzc190eXBlPScsIHIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NvbXByZXNzX3NpemU9JywgcikKKyAgICAgICAgICAgICAgICB3aXRoIHppcGZwLm9wZW4oZm5hbWUpIGFzIHppcG9wZW46CisgICAgICAgICAgICAgICAgICAgIHIgPSByZXByKHppcG9wZW4pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25hbWU9JXInICUgZm5hbWUsIHIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm1vZGU9J3InIiwgcikKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5jb21wcmVzc2lvbiAhPSB6aXBmaWxlLlpJUF9TVE9SRUQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdjb21wcmVzc190eXBlPScsIHIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignW2Nsb3NlZF0nLCByZXByKHppcG9wZW4pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignW2Nsb3NlZF0nLCByZXByKHppcGZwKSkKKwogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgdW5saW5rKFRFU1RGTikKICAgICAgICAgdW5saW5rKFRFU1RGTjIpCkBAIC02NjUsNyArNjk2LDcgQEAKICAgICAgICAgc2VsZi5yZXF1aXJlc1dyaXRlQWNjZXNzKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCiAgICAgICAgIHdpdGggVGVtcG9yYXJ5RmlsZSgpIGFzIHQsIHppcGZpbGUuUHlaaXBGaWxlKHQsICJ3IikgYXMgemlwZnA6CiAgICAgICAgICAgICBmbiA9IF9fZmlsZV9fCi0gICAgICAgICAgICBpZiBmbi5lbmRzd2l0aCgnLnB5YycpIG9yIGZuLmVuZHN3aXRoKCcucHlvJyk6CisgICAgICAgICAgICBpZiBmbi5lbmRzd2l0aCgnLnB5YycpOgogICAgICAgICAgICAgICAgIHBhdGhfc3BsaXQgPSBmbi5zcGxpdChvcy5zZXApCiAgICAgICAgICAgICAgICAgaWYgb3MuYWx0c2VwIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBwYXRoX3NwbGl0LmV4dGVuZChmbi5zcGxpdChvcy5hbHRzZXApKQpAQCAtNjgyLDcgKzcxMyw3IEBACiAKICAgICAgICAgd2l0aCBUZW1wb3JhcnlGaWxlKCkgYXMgdCwgemlwZmlsZS5QeVppcEZpbGUodCwgInciKSBhcyB6aXBmcDoKICAgICAgICAgICAgIGZuID0gX19maWxlX18KLSAgICAgICAgICAgIGlmIGZuLmVuZHN3aXRoKCgnLnB5YycsICcucHlvJykpOgorICAgICAgICAgICAgaWYgZm4uZW5kc3dpdGgoJy5weWMnKToKICAgICAgICAgICAgICAgICBmbiA9IGZuWzotMV0KIAogICAgICAgICAgICAgemlwZnAud3JpdGVweShmbiwgInRlc3RwYWNrYWdlIikKQEAgLTczOSwxMCArNzcwLDggQEAKICAgICAgICAgaW1wb3J0IGVtYWlsCiAgICAgICAgIHBhY2thZ2VkaXIgPSBvcy5wYXRoLmRpcm5hbWUoZW1haWwuX19maWxlX18pCiAgICAgICAgIHNlbGYucmVxdWlyZXNXcml0ZUFjY2VzcyhwYWNrYWdlZGlyKQotICAgICAgICAjIHVzZSAucHljIGlmIHJ1bm5pbmcgdGVzdCBpbiBvcHRpbWl6YXRpb24gbW9kZSwKLSAgICAgICAgIyB1c2UgLnB5byBpZiBydW5uaW5nIHRlc3QgaW4gZGVidWcgbW9kZQogICAgICAgICBvcHRsZXZlbCA9IDEgaWYgX19kZWJ1Z19fIGVsc2UgMAotICAgICAgICBleHQgPSAnLnB5bycgaWYgb3B0bGV2ZWwgPT0gMSBlbHNlICcucHljJworICAgICAgICBleHQgPSAnLnB5YycKIAogICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoKSBhcyB0LCBcCiAgICAgICAgICAgICAgemlwZmlsZS5QeVppcEZpbGUodCwgInciLCBvcHRpbWl6ZT1vcHRsZXZlbCkgYXMgemlwZnA6CkBAIC04MTYsMTEgKzg0NSwxMCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIlN5bnRheEVycm9yIiwgcy5nZXR2YWx1ZSgpKQogCiAgICAgICAgICAgICAgICAgIyBhcyBpdCB3aWxsIG5vdCBoYXZlIGNvbXBpbGVkIHRoZSBweXRob24gZmlsZSwgaXQgd2lsbAotICAgICAgICAgICAgICAgICMgaW5jbHVkZSB0aGUgLnB5IGZpbGUgbm90IC5weWMgb3IgLnB5bworICAgICAgICAgICAgICAgICMgaW5jbHVkZSB0aGUgLnB5IGZpbGUgbm90IC5weWMKICAgICAgICAgICAgICAgICBuYW1lcyA9IHppcGZwLm5hbWVsaXN0KCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdtb2QxLnB5JywgbmFtZXMpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbW9kMS5weWMnLCBuYW1lcykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdtb2QxLnB5bycsIG5hbWVzKQogCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBybXRyZWUoVEVTVEZOMikKQEAgLTEwODEsNiArMTEwOSwxOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6Zi5maWxlbGlzdFswXS5maWxlbmFtZSwgImZvby50eHQiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6Zi5maWxlbGlzdFsxXS5maWxlbmFtZSwgIlx4ZjYudHh0IikKIAorICAgIGRlZiB0ZXN0X2V4Y2x1c2l2ZV9jcmVhdGVfemlwX2ZpbGUoc2VsZik6CisgICAgICAgICIiIlRlc3QgZXhjbHVzaXZlIGNyZWF0aW5nIGEgbmV3IHppcGZpbGUuIiIiCisgICAgICAgIHVubGluayhURVNURk4yKQorICAgICAgICBmaWxlbmFtZSA9ICd0ZXN0ZmlsZS50eHQnCisgICAgICAgIGNvbnRlbnQgPSBiJ2hlbGxvLCB3b3JsZC4gdGhpcyBpcyBzb21lIGNvbnRlbnQuJworICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAieCIsIHppcGZpbGUuWklQX1NUT1JFRCkgYXMgemlwZnA6CisgICAgICAgICAgICB6aXBmcC53cml0ZXN0cihmaWxlbmFtZSwgY29udGVudCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlRXhpc3RzRXJyb3IpOgorICAgICAgICAgICAgemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ4IiwgemlwZmlsZS5aSVBfU1RPUkVEKQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAiciIpIGFzIHppcGZwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmcC5uYW1lbGlzdCgpLCBbZmlsZW5hbWVdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmcC5yZWFkKGZpbGVuYW1lKSwgY29udGVudCkKKwogICAgIGRlZiB0ZXN0X2NyZWF0ZV9ub25fZXhpc3RlbnRfZmlsZV9mb3JfYXBwZW5kKHNlbGYpOgogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhURVNURk4pOgogICAgICAgICAgICAgb3MudW5saW5rKFRFU1RGTikKQEAgLTE2NTUsNiArMTY5Niw3MiBAQAogICAgIGNvbXByZXNzaW9uID0gemlwZmlsZS5aSVBfTFpNQQogCiAKKyMgUHJpdmlkZSB0aGUgdGVsbCgpIG1ldGhvZCBidXQgbm90IHNlZWsoKQorY2xhc3MgVGVsbGFibGU6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZwKToKKyAgICAgICAgc2VsZi5mcCA9IGZwCisgICAgICAgIHNlbGYub2Zmc2V0ID0gMAorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgorICAgICAgICBuID0gc2VsZi5mcC53cml0ZShkYXRhKQorICAgICAgICBzZWxmLm9mZnNldCArPSBuCisgICAgICAgIHJldHVybiBuCisKKyAgICBkZWYgdGVsbChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYub2Zmc2V0CisKKyAgICBkZWYgZmx1c2goc2VsZik6CisgICAgICAgIHNlbGYuZnAuZmx1c2goKQorCitjbGFzcyBVbnNlZWthYmxlOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcCk6CisgICAgICAgIHNlbGYuZnAgPSBmcAorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgorICAgICAgICByZXR1cm4gc2VsZi5mcC53cml0ZShkYXRhKQorCisgICAgZGVmIGZsdXNoKHNlbGYpOgorICAgICAgICBzZWxmLmZwLmZsdXNoKCkKKworY2xhc3MgVW5zZWVrYWJsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF93cml0ZXN0cihzZWxmKToKKyAgICAgICAgZm9yIHdyYXBwZXIgaW4gKGxhbWJkYSBmOiBmKSwgVGVsbGFibGUsIFVuc2Vla2FibGU6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh3cmFwcGVyPXdyYXBwZXIpOgorICAgICAgICAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgICAgICAgICBmLndyaXRlKGInYWJjJykKKyAgICAgICAgICAgICAgICBiZiA9IGlvLkJ1ZmZlcmVkV3JpdGVyKGYpCisgICAgICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUod3JhcHBlcihiZiksICd3JywgemlwZmlsZS5aSVBfU1RPUkVEKSBhcyB6aXBmcDoKKyAgICAgICAgICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoJ29uZXMnLCBiJzExMScpCisgICAgICAgICAgICAgICAgICAgIHppcGZwLndyaXRlc3RyKCd0d29zJywgYicyMjInKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5nZXR2YWx1ZSgpWzo1XSwgYidhYmNQSycpCisgICAgICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgbW9kZT0ncicpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW46CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpvcGVuLnJlYWQoKSwgYicxMTEnKQorICAgICAgICAgICAgICAgICAgICB3aXRoIHppcGYub3BlbigndHdvcycpIGFzIHpvcGVuOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6b3Blbi5yZWFkKCksIGInMjIyJykKKworICAgIGRlZiB0ZXN0X3dyaXRlKHNlbGYpOgorICAgICAgICBmb3Igd3JhcHBlciBpbiAobGFtYmRhIGY6IGYpLCBUZWxsYWJsZSwgVW5zZWVrYWJsZToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHdyYXBwZXI9d3JhcHBlcik6CisgICAgICAgICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgICAgIGYud3JpdGUoYidhYmMnKQorICAgICAgICAgICAgICAgIGJmID0gaW8uQnVmZmVyZWRXcml0ZXIoZikKKyAgICAgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZSh3cmFwcGVyKGJmKSwgJ3cnLCB6aXBmaWxlLlpJUF9TVE9SRUQpIGFzIHppcGZwOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAodW5saW5rLCBURVNURk4pCisgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3YicpIGFzIGYyOgorICAgICAgICAgICAgICAgICAgICAgICAgZjIud3JpdGUoYicxMTEnKQorICAgICAgICAgICAgICAgICAgICB6aXBmcC53cml0ZShURVNURk4sICdvbmVzJykKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3diJykgYXMgZjI6CisgICAgICAgICAgICAgICAgICAgICAgICBmMi53cml0ZShiJzIyMicpCisgICAgICAgICAgICAgICAgICAgIHppcGZwLndyaXRlKFRFU1RGTiwgJ3R3b3MnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5nZXR2YWx1ZSgpWzo1XSwgYidhYmNQSycpCisgICAgICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgbW9kZT0ncicpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW46CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpvcGVuLnJlYWQoKSwgYicxMTEnKQorICAgICAgICAgICAgICAgICAgICB3aXRoIHppcGYub3BlbigndHdvcycpIGFzIHpvcGVuOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6b3Blbi5yZWFkKCksIGInMjIyJykKKworCiBAcmVxdWlyZXNfemxpYgogY2xhc3MgVGVzdHNXaXRoTXVsdGlwbGVPcGVucyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgQGNsYXNzbWV0aG9kCkBAIC0xNjcxLDM1ICsxNzc4LDUyIEBACiAgICAgZGVmIHRlc3Rfc2FtZV9maWxlKHNlbGYpOgogICAgICAgICAjIFZlcmlmeSB0aGF0ICh3aGVuIHRoZSBaaXBGaWxlIGlzIGluIGNvbnRyb2wgb2YgY3JlYXRpbmcgZmlsZSBvYmplY3RzKQogICAgICAgICAjIG11bHRpcGxlIG9wZW4oKSBjYWxscyBjYW4gYmUgbWFkZSB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggZWFjaCBvdGhlci4KLSAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShURVNURk4yKQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCBtb2RlPSJyIikgYXMgemlwZjoKLSAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW4xLCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjI6Ci0gICAgICAgICAgICAgICAgZGF0YTEgPSB6b3BlbjEucmVhZCg1MDApCi0gICAgICAgICAgICAgICAgZGF0YTIgPSB6b3BlbjIucmVhZCg1MDApCi0gICAgICAgICAgICAgICAgZGF0YTEgKz0gem9wZW4xLnJlYWQoKQotICAgICAgICAgICAgICAgIGRhdGEyICs9IHpvcGVuMi5yZWFkKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIGRhdGEyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKKyAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmKQorICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgbW9kZT0iciIpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjEsIHppcGYub3Blbignb25lcycpIGFzIHpvcGVuMjoKKyAgICAgICAgICAgICAgICAgICAgZGF0YTEgPSB6b3BlbjEucmVhZCg1MDApCisgICAgICAgICAgICAgICAgICAgIGRhdGEyID0gem9wZW4yLnJlYWQoNTAwKQorICAgICAgICAgICAgICAgICAgICBkYXRhMSArPSB6b3BlbjEucmVhZCgpCisgICAgICAgICAgICAgICAgICAgIGRhdGEyICs9IHpvcGVuMi5yZWFkKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBkYXRhMikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExKQogCiAgICAgZGVmIHRlc3RfZGlmZmVyZW50X2ZpbGUoc2VsZik6CiAgICAgICAgICMgVmVyaWZ5IHRoYXQgKHdoZW4gdGhlIFppcEZpbGUgaXMgaW4gY29udHJvbCBvZiBjcmVhdGluZyBmaWxlIG9iamVjdHMpCiAgICAgICAgICMgbXVsdGlwbGUgb3BlbigpIGNhbGxzIGNhbiBiZSBtYWRlIHdpdGhvdXQgaW50ZXJmZXJpbmcgd2l0aCBlYWNoIG90aGVyLgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKFRFU1RGTjIpCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsIG1vZGU9InIiKSBhcyB6aXBmOgotICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjEsIHppcGYub3BlbigndHdvcycpIGFzIHpvcGVuMjoKLSAgICAgICAgICAgICAgICBkYXRhMSA9IHpvcGVuMS5yZWFkKDUwMCkKLSAgICAgICAgICAgICAgICBkYXRhMiA9IHpvcGVuMi5yZWFkKDUwMCkKLSAgICAgICAgICAgICAgICBkYXRhMSArPSB6b3BlbjEucmVhZCgpCi0gICAgICAgICAgICAgICAgZGF0YTIgKz0gem9wZW4yLnJlYWQoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTIsIHNlbGYuZGF0YTIpCisgICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKKyAgICAgICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZikKKyAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsIG1vZGU9InIiKSBhcyB6aXBmOgorICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW4xLCB6aXBmLm9wZW4oJ3R3b3MnKSBhcyB6b3BlbjI6CisgICAgICAgICAgICAgICAgICAgIGRhdGExID0gem9wZW4xLnJlYWQoNTAwKQorICAgICAgICAgICAgICAgICAgICBkYXRhMiA9IHpvcGVuMi5yZWFkKDUwMCkKKyAgICAgICAgICAgICAgICAgICAgZGF0YTEgKz0gem9wZW4xLnJlYWQoKQorICAgICAgICAgICAgICAgICAgICBkYXRhMiArPSB6b3BlbjIucmVhZCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEyLCBzZWxmLmRhdGEyKQogCiAgICAgZGVmIHRlc3RfaW50ZXJsZWF2ZWQoc2VsZik6CiAgICAgICAgICMgVmVyaWZ5IHRoYXQgKHdoZW4gdGhlIFppcEZpbGUgaXMgaW4gY29udHJvbCBvZiBjcmVhdGluZyBmaWxlIG9iamVjdHMpCiAgICAgICAgICMgbXVsdGlwbGUgb3BlbigpIGNhbGxzIGNhbiBiZSBtYWRlIHdpdGhvdXQgaW50ZXJmZXJpbmcgd2l0aCBlYWNoIG90aGVyLgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKFRFU1RGTjIpCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsIG1vZGU9InIiKSBhcyB6aXBmOgotICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjEsIHppcGYub3BlbigndHdvcycpIGFzIHpvcGVuMjoKKyAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmKQorICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgbW9kZT0iciIpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjEsIHppcGYub3BlbigndHdvcycpIGFzIHpvcGVuMjoKKyAgICAgICAgICAgICAgICAgICAgZGF0YTEgPSB6b3BlbjEucmVhZCg1MDApCisgICAgICAgICAgICAgICAgICAgIGRhdGEyID0gem9wZW4yLnJlYWQoNTAwKQorICAgICAgICAgICAgICAgICAgICBkYXRhMSArPSB6b3BlbjEucmVhZCgpCisgICAgICAgICAgICAgICAgICAgIGRhdGEyICs9IHpvcGVuMi5yZWFkKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTIsIHNlbGYuZGF0YTIpCisKKyAgICBkZWYgdGVzdF9yZWFkX2FmdGVyX2Nsb3NlKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6CisgICAgICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYpCisgICAgICAgICAgICB3aXRoIGNvbnRleHRsaWIuRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgJ3InKSBhcyB6aXBmOgorICAgICAgICAgICAgICAgICAgICB6b3BlbjEgPSBzdGFjay5lbnRlcl9jb250ZXh0KHppcGYub3Blbignb25lcycpKQorICAgICAgICAgICAgICAgICAgICB6b3BlbjIgPSBzdGFjay5lbnRlcl9jb250ZXh0KHppcGYub3BlbigndHdvcycpKQogICAgICAgICAgICAgICAgIGRhdGExID0gem9wZW4xLnJlYWQoNTAwKQogICAgICAgICAgICAgICAgIGRhdGEyID0gem9wZW4yLnJlYWQoNTAwKQogICAgICAgICAgICAgICAgIGRhdGExICs9IHpvcGVuMS5yZWFkKCkKQEAgLTE3MDcsNDMgKzE4MzEsMzIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIHNlbGYuZGF0YTEpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEyLCBzZWxmLmRhdGEyKQogCi0gICAgZGVmIHRlc3RfcmVhZF9hZnRlcl9jbG9zZShzZWxmKToKLSAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShURVNURk4yKQotICAgICAgICB3aXRoIGNvbnRleHRsaWIuRXhpdFN0YWNrKCkgYXMgc3RhY2s6Ci0gICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAncicpIGFzIHppcGY6Ci0gICAgICAgICAgICAgICAgem9wZW4xID0gc3RhY2suZW50ZXJfY29udGV4dCh6aXBmLm9wZW4oJ29uZXMnKSkKLSAgICAgICAgICAgICAgICB6b3BlbjIgPSBzdGFjay5lbnRlcl9jb250ZXh0KHppcGYub3BlbigndHdvcycpKQotICAgICAgICAgICAgZGF0YTEgPSB6b3BlbjEucmVhZCg1MDApCi0gICAgICAgICAgICBkYXRhMiA9IHpvcGVuMi5yZWFkKDUwMCkKLSAgICAgICAgICAgIGRhdGExICs9IHpvcGVuMS5yZWFkKCkKLSAgICAgICAgICAgIGRhdGEyICs9IHpvcGVuMi5yZWFkKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMiwgc2VsZi5kYXRhMikKLQogICAgIGRlZiB0ZXN0X3JlYWRfYWZ0ZXJfd3JpdGUoc2VsZik6Ci0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICd3JywgemlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHppcGY6Ci0gICAgICAgICAgICB6aXBmLndyaXRlc3RyKCdvbmVzJywgc2VsZi5kYXRhMSkKLSAgICAgICAgICAgIHppcGYud3JpdGVzdHIoJ3R3b3MnLCBzZWxmLmRhdGEyKQotICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjE6Ci0gICAgICAgICAgICAgICAgZGF0YTEgPSB6b3BlbjEucmVhZCg1MDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIHNlbGYuZGF0YTFbOjUwMF0pCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICdyJykgYXMgemlwZjoKLSAgICAgICAgICAgIGRhdGExID0gemlwZi5yZWFkKCdvbmVzJykKLSAgICAgICAgICAgIGRhdGEyID0gemlwZi5yZWFkKCd0d29zJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMiwgc2VsZi5kYXRhMikKKyAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgorICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgJ3cnLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkgYXMgemlwZjoKKyAgICAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCdvbmVzJywgc2VsZi5kYXRhMSkKKyAgICAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCd0d29zJywgc2VsZi5kYXRhMikKKyAgICAgICAgICAgICAgICB3aXRoIHppcGYub3Blbignb25lcycpIGFzIHpvcGVuMToKKyAgICAgICAgICAgICAgICAgICAgZGF0YTEgPSB6b3BlbjEucmVhZCg1MDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExWzo1MDBdKQorICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgJ3InKSBhcyB6aXBmOgorICAgICAgICAgICAgICAgIGRhdGExID0gemlwZi5yZWFkKCdvbmVzJykKKyAgICAgICAgICAgICAgICBkYXRhMiA9IHppcGYucmVhZCgndHdvcycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMiwgc2VsZi5kYXRhMikKIAogICAgIGRlZiB0ZXN0X3dyaXRlX2FmdGVyX3JlYWQoc2VsZik6Ci0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IiwgemlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHppcGY6Ci0gICAgICAgICAgICB6aXBmLndyaXRlc3RyKCdvbmVzJywgc2VsZi5kYXRhMSkKLSAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW4xOgotICAgICAgICAgICAgICAgIHpvcGVuMS5yZWFkKDUwMCkKLSAgICAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCd0d29zJywgc2VsZi5kYXRhMikKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgJ3InKSBhcyB6aXBmOgotICAgICAgICAgICAgZGF0YTEgPSB6aXBmLnJlYWQoJ29uZXMnKQotICAgICAgICAgICAgZGF0YTIgPSB6aXBmLnJlYWQoJ3R3b3MnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEyLCBzZWxmLmRhdGEyKQorICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6CisgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAidyIsIHppcGZpbGUuWklQX0RFRkxBVEVEKSBhcyB6aXBmOgorICAgICAgICAgICAgICAgIHppcGYud3JpdGVzdHIoJ29uZXMnLCBzZWxmLmRhdGExKQorICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW4xOgorICAgICAgICAgICAgICAgICAgICB6b3BlbjEucmVhZCg1MDApCisgICAgICAgICAgICAgICAgICAgIHppcGYud3JpdGVzdHIoJ3R3b3MnLCBzZWxmLmRhdGEyKQorICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgJ3InKSBhcyB6aXBmOgorICAgICAgICAgICAgICAgIGRhdGExID0gemlwZi5yZWFkKCdvbmVzJykKKyAgICAgICAgICAgICAgICBkYXRhMiA9IHppcGYucmVhZCgndHdvcycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMiwgc2VsZi5kYXRhMikKIAogICAgIGRlZiB0ZXN0X21hbnlfb3BlbnMoc2VsZik6CiAgICAgICAgICMgVmVyaWZ5IHRoYXQgcmVhZCgpIGFuZCBvcGVuKCkgcHJvbXB0bHkgY2xvc2UgdGhlIGZpbGUgZGVzY3JpcHRvciwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwZmlsZTY0LnB5IGIvTGliL3Rlc3QvdGVzdF96aXBmaWxlNjQucHkKaW5kZXggN2RlYThhMy4uYjllOGUyOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBmaWxlNjQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBmaWxlNjQucHkKQEAgLTMsNyArMyw3IEBACiAjIGZyb20gdGVzdF96aXBmaWxlCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAotIyBYWFgobm5vcndpdHopOiBkaXNhYmxlIHRoaXMgdGVzdCBieSBsb29raW5nIGZvciBleHRyYSBsYXJnZmlsZSByZXNvdXJjZQorIyBYWFgobm5vcndpdHopOiBkaXNhYmxlIHRoaXMgdGVzdCBieSBsb29raW5nIGZvciBleHRyYWxhcmdlZmlsZSByZXNvdXJjZSwKICMgd2hpY2ggZG9lc24ndCBleGlzdC4gIFRoaXMgdGVzdCB0YWtlcyBvdmVyIDMwIG1pbnV0ZXMgdG8gcnVuIGluIGdlbmVyYWwKICMgYW5kIHJlcXVpcmVzIG1vcmUgZGlzayBzcGFjZSB0aGFuIG1vc3Qgb2YgdGhlIGJ1aWxkYm90cy4KIHN1cHBvcnQucmVxdWlyZXMoCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CmluZGV4IDFlMzUxYzguLmE5N2E3NzggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CkBAIC01MSw3ICs1MSw3IEBACiBURU1QX1pJUCA9IG9zLnBhdGguYWJzcGF0aCgianVuazk1MTQyLnppcCIpCiAKIHB5Y19maWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoVEVTVE1PRCArICcucHknKQotcHljX2V4dCA9ICgnLnB5YycgaWYgX19kZWJ1Z19fIGVsc2UgJy5weW8nKQorcHljX2V4dCA9ICcucHljJwogCiAKIGNsYXNzIEltcG9ydEhvb2tzQmFzZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTQ1MCw3ICs0NTAsOSBAQAogICAgICAgICBmZCA9IG9zLm9wZW4oVEVTVE1PRCwgb3MuT19DUkVBVCwgMDAwKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy5jbG9zZShmZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0WmlwRmFpbHVyZShURVNUTU9EKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHppcGltcG9ydC5aaXBJbXBvcnRFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKFRFU1RNT0QpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAjIElmIHdlIGxlYXZlICJ0aGUgcmVhZC1vbmx5IGJpdCIgc2V0IG9uIFdpbmRvd3MsIG5vdGhpbmcgY2FuCiAgICAgICAgICAgICAjIGRlbGV0ZSBURVNUTU9ELCBhbmQgbGF0ZXIgdGVzdHMgc3VmZmVyIGJvZ3VzIGZhaWx1cmVzLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkKaW5kZXggNjZjMzU1Ny4uNTkxMzYyMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5CkBAIC0xNCw4ICsxNCw4IEBACiBpbXBvcnQgbGluZWNhY2hlCiBpbXBvcnQgcGRiCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCAoc3Bhd25fcHl0aG9uLCBraWxsX3B5dGhvbiwgYXNzZXJ0X3B5dGhvbl9vaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcF9kaXIsIG1ha2Vfc2NyaXB0LCBtYWtlX3ppcF9zY3JpcHQpCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCAoc3Bhd25fcHl0aG9uLCBraWxsX3B5dGhvbiwgYXNzZXJ0X3B5dGhvbl9vaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3NjcmlwdCwgbWFrZV96aXBfc2NyaXB0KQogCiB2ZXJib3NlID0gdGVzdC5zdXBwb3J0LnZlcmJvc2UKIApAQCAtMzksNyArMzksNyBAQAogICAgICMgVXNlIHRoZSBvYmplY3QncyBmdWxseSBxdWFsaWZpZWQgbmFtZSBpZiBpdCBoYXMgb25lCiAgICAgIyBPdGhlcndpc2UsIHVzZSB0aGUgbW9kdWxlJ3MgbmFtZQogICAgIHRyeToKLSAgICAgICAgbmFtZSA9ICIlcy4lcyIgJSAob2JqLl9fbW9kdWxlX18sIG9iai5fX25hbWVfXykKKyAgICAgICAgbmFtZSA9ICIlcy4lcyIgJSAob2JqLl9fbW9kdWxlX18sIG9iai5fX3F1YWxuYW1lX18pCiAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICBuYW1lID0gbW9kdWxlLl9fbmFtZV9fCiAgICAgZm9yIGV4YW1wbGUgaW4gZmluZGVyLmZpbmQob2JqLCBuYW1lLCBtb2R1bGUpOgpAQCAtNzgsNyArNzgsNyBAQAogCiAgICAgZGVmIHRlc3RfaW5zcGVjdF9nZXRzb3VyY2VfaXNzdWU0MjIzKHNlbGYpOgogICAgICAgICB0ZXN0X3NyYyA9ICJkZWYgZm9vKCk6IHBhc3NcbiIKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIGQ6CisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LnRlbXBfZGlyKCkgYXMgZDoKICAgICAgICAgICAgIGluaXRfbmFtZSA9IG1ha2Vfc2NyaXB0KGQsICdfX2luaXRfXycsIHRlc3Rfc3JjKQogICAgICAgICAgICAgbmFtZV9pbl96aXAgPSBvcy5wYXRoLmpvaW4oJ3ppcF9wa2cnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShpbml0X25hbWUpKQpAQCAtMTE4LDcgKzExOCw3IEBACiAgICAgICAgICAgICBtb2RfbmFtZSA9IG1vZF9uYW1lLnJlcGxhY2UoInNhbXBsZV8iLCAic2FtcGxlX3ppcHBlZF8iKQogICAgICAgICAgICAgc2FtcGxlX3NvdXJjZXNbbW9kX25hbWVdID0gc3JjCiAKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIGQ6CisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LnRlbXBfZGlyKCkgYXMgZDoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gbWFrZV9zY3JpcHQoZCwgJ3Rlc3RfemlwcGVkX2RvY3Rlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3NyYykKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IG1ha2VfemlwX3NjcmlwdChkLCAndGVzdF96aXAnLApAQCAtMTk1LDcgKzE5NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGRvY3Rlc3QudGVzdG1vZCgpCiAgICAgICAgICAgICAgICAgICAgICIiIikKICAgICAgICAgcGF0dGVybiA9ICdGaWxlICIlcyIsIGxpbmUgMiwgaW4gJXMnCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBkOgorICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC50ZW1wX2RpcigpIGFzIGQ6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IG1ha2Vfc2NyaXB0KGQsICdzY3JpcHQnLCB0ZXN0X3NyYykKICAgICAgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soc2NyaXB0X25hbWUpCiAgICAgICAgICAgICBleHBlY3RlZCA9IHBhdHRlcm4gJSAoc2NyaXB0X25hbWUsICJfX21haW5fXy5UZXN0IikKQEAgLTIyMiw3ICsyMjIsNyBAQAogICAgICAgICAgICAgICAgICAgICBpbXBvcnQgcGRiCiAgICAgICAgICAgICAgICAgICAgIHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkucnVuY2FsbChmKQogICAgICAgICAgICAgICAgICAgICAiIiIpCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBkOgorICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC50ZW1wX2RpcigpIGFzIGQ6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IG1ha2Vfc2NyaXB0KGQsICdzY3JpcHQnLCB0ZXN0X3NyYykKICAgICAgICAgICAgIHAgPSBzcGF3bl9weXRob24oc2NyaXB0X25hbWUpCiAgICAgICAgICAgICBwLnN0ZGluLndyaXRlKGInbFxuJykKQEAgLTIzOCw5ICsyMzgsOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLm5vcm1jYXNlKHJ1bl9uYW1lLmVuY29kZSgndXRmLTgnKSksIGRhdGEpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoWmlwU3VwcG9ydFRlc3RzKQorZGVmIHRlYXJEb3duTW9kdWxlKCk6CiAgICAgdGVzdC5zdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3psaWIucHkgYi9MaWIvdGVzdC90ZXN0X3psaWIucHkKaW5kZXggZTE1NzVjNC4uZWNkYjVhNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemxpYi5weQpAQCAtNDcsMTYgKzQ3LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemxpYi5hZGxlcjMyKGIiIiwgMSksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemxpYi5hZGxlcjMyKGIiIiwgNDMyKSwgNDMyKQogCi0gICAgZGVmIGFzc2VydEVxdWFsMzIoc2VsZiwgc2VlbiwgZXhwZWN0ZWQpOgotICAgICAgICAjIDMyLWJpdCB2YWx1ZXMgbWFza2VkIC0tIGNoZWNrc3VtcyBvbiAzMi0gdnMgNjQtIGJpdCBtYWNoaW5lcwotICAgICAgICAjIFRoaXMgaXMgaW1wb3J0YW50IGlmIGJpdCAzMSAoMHgwODAwMDAwMEwpIGlzIHNldC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWVuICYgMHgwRkZGRkZGRkYsIGV4cGVjdGVkICYgMHgwRkZGRkZGRkYpCi0KICAgICBkZWYgdGVzdF9wZW5ndWlucyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbDMyKHpsaWIuY3JjMzIoYiJwZW5ndWluIiwgMCksIDB4MGU1YzFhMTIwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsMzIoemxpYi5jcmMzMihiInBlbmd1aW4iLCAxKSwgMHg0M2I2YWE5NCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbDMyKHpsaWIuYWRsZXIzMihiInBlbmd1aW4iLCAwKSwgMHgwYmNmMDJmNikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbDMyKHpsaWIuYWRsZXIzMihiInBlbmd1aW4iLCAxKSwgMHgwYmQ2MDJmNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6bGliLmNyYzMyKGIicGVuZ3VpbiIsIDApLCAweDBlNWMxYTEyMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6bGliLmNyYzMyKGIicGVuZ3VpbiIsIDEpLCAweDQzYjZhYTk0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpsaWIuYWRsZXIzMihiInBlbmd1aW4iLCAwKSwgMHgwYmNmMDJmNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6bGliLmFkbGVyMzIoYiJwZW5ndWluIiwgMSksIDB4MGJkNjAyZjcpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6bGliLmNyYzMyKGIicGVuZ3VpbiIpLCB6bGliLmNyYzMyKGIicGVuZ3VpbiIsIDApKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpsaWIuYWRsZXIzMihiInBlbmd1aW4iKSx6bGliLmFkbGVyMzIoYiJwZW5ndWluIiwxKSkKQEAgLTEyMiwxMSArMTE3LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHpsaWIuZGVjb21wcmVzc29iaigpLmZsdXNoLCAwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6bGliLmRlY29tcHJlc3NvYmooKS5mbHVzaCwgLTEpCiAKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9vdmVyZmxvdyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KE92ZXJmbG93RXJyb3IsICdpbnQgdG9vIGxhcmdlJyk6CisgICAgICAgICAgICB6bGliLmRlY29tcHJlc3MoYicnLCAxNSwgc3lzLm1heHNpemUgKyAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoT3ZlcmZsb3dFcnJvciwgJ2ludCB0b28gbGFyZ2UnKToKKyAgICAgICAgICAgIHpsaWIuZGVjb21wcmVzc29iaigpLmZsdXNoKHN5cy5tYXhzaXplICsgMSkKKwogCiBjbGFzcyBCYXNlQ29tcHJlc3NUZXN0Q2FzZShvYmplY3QpOgogICAgIGRlZiBjaGVja19iaWdfY29tcHJlc3NfYnVmZmVyKHNlbGYsIHNpemUsIGNvbXByZXNzX2Z1bmMpOgogICAgICAgICBfMU0gPSAxMDI0ICogMTAyNAotICAgICAgICBmbXQgPSAiJSUwJWR4IiAlICgyICogXzFNKQogICAgICAgICAjIEdlbmVyYXRlIDEwTUIgd29ydGggb2YgcmFuZG9tLCBhbmQgZXhwYW5kIGl0IGJ5IHJlcGVhdGluZyBpdC4KICAgICAgICAgIyBUaGUgYXNzdW1wdGlvbiBpcyB0aGF0IHpsaWIncyBtZW1vcnkgaXMgbm90IGJpZyBlbm91Z2ggdG8gZXhwbG9pdAogICAgICAgICAjIHN1Y2ggc3ByZWFkIG91dCByZWR1bmRhbmN5LgpAQCAtMTk2LDYgKzE5NywxOCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZGF0YSA9IE5vbmUKIAorICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHLCBtZW11c2U9MSkKKyAgICBkZWYgdGVzdF9sYXJnZV9idWZzaXplKHNlbGYsIHNpemUpOgorICAgICAgICAjIFRlc3QgZGVjb21wcmVzcyhidWZzaXplKSBwYXJhbWV0ZXIgZ3JlYXRlciB0aGFuIHRoZSBpbnRlcm5hbCBsaW1pdAorICAgICAgICBkYXRhID0gSEFNTEVUX1NDRU5FICogMTAKKyAgICAgICAgY29tcHJlc3NlZCA9IHpsaWIuY29tcHJlc3MoZGF0YSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6bGliLmRlY29tcHJlc3MoY29tcHJlc3NlZCwgMTUsIHNpemUpLCBkYXRhKQorCisgICAgZGVmIHRlc3RfY3VzdG9tX2J1ZnNpemUoc2VsZik6CisgICAgICAgIGRhdGEgPSBIQU1MRVRfU0NFTkUgKiAxMAorICAgICAgICBjb21wcmVzc2VkID0gemxpYi5jb21wcmVzcyhkYXRhLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpsaWIuZGVjb21wcmVzcyhjb21wcmVzc2VkLCAxNSwgQ3VzdG9tSW50KCkpLCBkYXRhKQorCiAKIGNsYXNzIENvbXByZXNzT2JqZWN0VGVzdENhc2UoQmFzZUNvbXByZXNzVGVzdENhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAjIFRlc3QgY29tcHJlc3Npb24gb2JqZWN0CkBAIC0zNjQsNiArMzc3LDIxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRjby5kZWNvbXByZXNzLCBiIiIsIC0xKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJywgZGNvLnVuY29uc3VtZWRfdGFpbCkKIAorICAgIGRlZiB0ZXN0X21heGxlbl9sYXJnZShzZWxmKToKKyAgICAgICAgIyBTaXplcyB1cCB0byBzeXMubWF4c2l6ZSBzaG91bGQgYmUgYWNjZXB0ZWQsIGFsdGhvdWdoIHpsaWIgaXMKKyAgICAgICAgIyBpbnRlcm5hbGx5IGxpbWl0ZWQgdG8gZXhwcmVzc2luZyBzaXplcyB3aXRoIHVuc2lnbmVkIGludAorICAgICAgICBkYXRhID0gSEFNTEVUX1NDRU5FICogMTAKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihkYXRhKSwgemxpYi5ERUZfQlVGX1NJWkUpCisgICAgICAgIGNvbXByZXNzZWQgPSB6bGliLmNvbXByZXNzKGRhdGEsIDEpCisgICAgICAgIGRjbyA9IHpsaWIuZGVjb21wcmVzc29iaigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGNvLmRlY29tcHJlc3MoY29tcHJlc3NlZCwgc3lzLm1heHNpemUpLCBkYXRhKQorCisgICAgZGVmIHRlc3RfbWF4bGVuX2N1c3RvbShzZWxmKToKKyAgICAgICAgZGF0YSA9IEhBTUxFVF9TQ0VORSAqIDEwCisgICAgICAgIGNvbXByZXNzZWQgPSB6bGliLmNvbXByZXNzKGRhdGEsIDEpCisgICAgICAgIGRjbyA9IHpsaWIuZGVjb21wcmVzc29iaigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGNvLmRlY29tcHJlc3MoY29tcHJlc3NlZCwgQ3VzdG9tSW50KCkpLCBkYXRhWzoxMDBdKQorCiAgICAgZGVmIHRlc3RfY2xlYXJfdW5jb25zdW1lZF90YWlsKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMjA1MDogY2FsbGluZyBkZWNvbXByZXNzKCkgd2l0aG91dCBwcm92aWRpbmcgbWF4X2xlbmd0aAogICAgICAgICAjIHNob3VsZCBjbGVhciB0aGUgdW5jb25zdW1lZF90YWlsIGF0dHJpYnV0ZS4KQEAgLTUzNyw2ICs1NjUsMjIgQEAKICAgICAgICAgZGF0YSA9IHpsaWIuY29tcHJlc3MoaW5wdXQyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRjby5mbHVzaCgpLCBpbnB1dDFbMTpdKQogCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcsIG1lbXVzZT0xKQorICAgIGRlZiB0ZXN0X2ZsdXNoX2xhcmdlX2xlbmd0aChzZWxmLCBzaXplKToKKyAgICAgICAgIyBUZXN0IGZsdXNoKGxlbmd0aCkgcGFyYW1ldGVyIGdyZWF0ZXIgdGhhbiBpbnRlcm5hbCBsaW1pdCBVSU5UX01BWAorICAgICAgICBpbnB1dCA9IEhBTUxFVF9TQ0VORSAqIDEwCisgICAgICAgIGRhdGEgPSB6bGliLmNvbXByZXNzKGlucHV0LCAxKQorICAgICAgICBkY28gPSB6bGliLmRlY29tcHJlc3NvYmooKQorICAgICAgICBkY28uZGVjb21wcmVzcyhkYXRhLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRjby5mbHVzaChzaXplKSwgaW5wdXRbMTpdKQorCisgICAgZGVmIHRlc3RfZmx1c2hfY3VzdG9tX2xlbmd0aChzZWxmKToKKyAgICAgICAgaW5wdXQgPSBIQU1MRVRfU0NFTkUgKiAxMAorICAgICAgICBkYXRhID0gemxpYi5jb21wcmVzcyhpbnB1dCwgMSkKKyAgICAgICAgZGNvID0gemxpYi5kZWNvbXByZXNzb2JqKCkKKyAgICAgICAgZGNvLmRlY29tcHJlc3MoZGF0YSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkY28uZmx1c2goQ3VzdG9tSW50KCkpLCBpbnB1dFsxOl0pCisKICAgICBAcmVxdWlyZXNfQ29tcHJlc3NfY29weQogICAgIGRlZiB0ZXN0X2NvbXByZXNzY29weShzZWxmKToKICAgICAgICAgIyBUZXN0IGNvcHlpbmcgYSBjb21wcmVzc2lvbiBvYmplY3QKQEAgLTcyNSwxNiArNzY5LDEwIEBACiAiIiIKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCi0gICAgICAgIFZlcnNpb25UZXN0Q2FzZSwKLSAgICAgICAgQ2hlY2tzdW1UZXN0Q2FzZSwKLSAgICAgICAgQ2hlY2tzdW1CaWdCdWZmZXJUZXN0Q2FzZSwKLSAgICAgICAgRXhjZXB0aW9uVGVzdENhc2UsCi0gICAgICAgIENvbXByZXNzVGVzdENhc2UsCi0gICAgICAgIENvbXByZXNzT2JqZWN0VGVzdENhc2UKLSAgICApCitjbGFzcyBDdXN0b21JbnQ6CisgICAgZGVmIF9faW50X18oc2VsZik6CisgICAgICAgIHJldHVybiAxMDAKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHVuaXR0ZXN0Lm1haW4oKSAjIFhYWAotICAgICMjI3Rlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90Zl9pbmhlcml0X2NoZWNrLnB5IGIvTGliL3Rlc3QvdGZfaW5oZXJpdF9jaGVjay5weQppbmRleCBhZmU1MGQyLi4xMzhmMjVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90Zl9pbmhlcml0X2NoZWNrLnB5CisrKyBiL0xpYi90ZXN0L3RmX2luaGVyaXRfY2hlY2sucHkKQEAgLTQsMjIgKzQsMjQgQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgU3VwcHJlc3NDcmFzaFJlcG9ydAogCi12ZXJib3NlID0gKHN5cy5hcmd2WzFdID09ICd2JykKLXRyeToKLSAgICBmZCA9IGludChzeXMuYXJndlsyXSkKLQord2l0aCBTdXBwcmVzc0NyYXNoUmVwb3J0KCk6CisgICAgdmVyYm9zZSA9IChzeXMuYXJndlsxXSA9PSAndicpCiAgICAgdHJ5OgotICAgICAgICBvcy53cml0ZShmZCwgYiJibGF0IikKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgIyBTdWNjZXNzIC0tIGNvdWxkIG5vdCB3cml0ZSB0byBmZC4KLSAgICAgICAgc3lzLmV4aXQoMCkKLSAgICBlbHNlOgotICAgICAgICBpZiB2ZXJib3NlOgotICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiZmQgJWQgaXMgb3BlbiBpbiBjaGlsZCIgJSBmZCkKLSAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgZmQgPSBpbnQoc3lzLmFyZ3ZbMl0pCiAKLWV4Y2VwdCBFeGNlcHRpb246Ci0gICAgaWYgdmVyYm9zZToKLSAgICAgICAgcmFpc2UKLSAgICBzeXMuZXhpdCgxKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy53cml0ZShmZCwgYiJibGF0IikKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAjIFN1Y2Nlc3MgLS0gY291bGQgbm90IHdyaXRlIHRvIGZkLgorICAgICAgICAgICAgc3lzLmV4aXQoMCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiZmQgJWQgaXMgb3BlbiBpbiBjaGlsZCIgJSBmZCkKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgc3lzLmV4aXQoMSkKZGlmZiAtLWdpdCBhL0xpYi90ZXh0d3JhcC5weSBiL0xpYi90ZXh0d3JhcC5weQppbmRleCAxNzU5YjBkLi4wNWUwMzA2IDEwMDY0NAotLS0gYS9MaWIvdGV4dHdyYXAucHkKKysrIGIvTGliL3RleHR3cmFwLnB5CkBAIC03OSwxMCArNzksMjUgQEAKICAgICAjIHNwbGl0cyBpbnRvCiAgICAgIyAgIEhlbGxvLyAvdGhlcmUvIC8tLS8gL3lvdS8gL2dvb2YtL2JhbGwsLyAvdXNlLyAvdGhlLyAvLWIvIC9vcHRpb24hCiAgICAgIyAoYWZ0ZXIgc3RyaXBwaW5nIG91dCBlbXB0eSBzdHJpbmdzKS4KLSAgICB3b3Jkc2VwX3JlID0gcmUuY29tcGlsZSgKLSAgICAgICAgcicoXHMrfCcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbnkgd2hpdGVzcGFjZQotICAgICAgICByJ1teXHNcd10qXHcrW14wLTlcV10tKD89XHcrW14wLTlcV10pfCcgICAjIGh5cGhlbmF0ZWQgd29yZHMKLSAgICAgICAgcicoPzw9W1x3XCFcIlwnXCZcLlwsXD9dKS17Mix9KD89XHcpKScpICAgIyBlbS1kYXNoCisgICAgd29yZF9wdW5jdCA9IHInW1x3ISJcJyYuLD9dJworICAgIGxldHRlciA9IHInW15cZFxXXScKKyAgICB3b3Jkc2VwX3JlID0gcmUuY29tcGlsZShyJycnCisgICAgICAgICggIyBhbnkgd2hpdGVzcGFjZQorICAgICAgICAgIFxzKworICAgICAgICB8ICMgZW0tZGFzaCBiZXR3ZWVuIHdvcmRzCisgICAgICAgICAgKD88PSUod3ApcykgLXsyLH0gKD89XHcpCisgICAgICAgIHwgIyB3b3JkLCBwb3NzaWJseSBoeXBoZW5hdGVkCisgICAgICAgICAgXFMrPyAoPzoKKyAgICAgICAgICAgICMgaHlwaGVuYXRlZCB3b3JkCisgICAgICAgICAgICAgIC0oPzogKD88PSUobHQpc3syfS0pIHwgKD88PSUobHQpcy0lKGx0KXMtKSkKKyAgICAgICAgICAgICAgKD89ICUobHQpcyAtPyAlKGx0KXMpCisgICAgICAgICAgICB8ICMgZW5kIG9mIHdvcmQKKyAgICAgICAgICAgICAgKD89XHN8XFopCisgICAgICAgICAgICB8ICMgZW0tZGFzaAorICAgICAgICAgICAgICAoPzw9JSh3cClzKSAoPz0tezIsfVx3KQorICAgICAgICAgICAgKQorICAgICAgICApJycnICUgeyd3cCc6IHdvcmRfcHVuY3QsICdsdCc6IGxldHRlcn0sIHJlLlZFUkJPU0UpCisgICAgZGVsIHdvcmRfcHVuY3QsIGxldHRlcgogCiAgICAgIyBUaGlzIGxlc3MgZnVua3kgbGl0dGxlIHJlZ2V4IGp1c3Qgc3BsaXQgb24gcmVjb2duaXplZCBzcGFjZXMuIEUuZy4KICAgICAjICAgIkhlbGxvIHRoZXJlIC0tIHlvdSBnb29mLWJhbGwsIHVzZSB0aGUgLWIgb3B0aW9uISIKZGlmZiAtLWdpdCBhL0xpYi90aHJlYWRpbmcucHkgYi9MaWIvdGhyZWFkaW5nLnB5CmluZGV4IDU2YTQwNjAuLjgyODAxOWQgMTAwNjQ0Ci0tLSBhL0xpYi90aHJlYWRpbmcucHkKKysrIGIvTGliL3RocmVhZGluZy5weQpAQCAtMywxMCArMyw3IEBACiBpbXBvcnQgc3lzIGFzIF9zeXMKIGltcG9ydCBfdGhyZWFkCiAKLXRyeToKLSAgICBmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGZyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZQorZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKIGZyb20gdHJhY2ViYWNrIGltcG9ydCBmb3JtYXRfZXhjIGFzIF9mb3JtYXRfZXhjCiBmcm9tIF93ZWFrcmVmc2V0IGltcG9ydCBXZWFrU2V0CiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgaXNsaWNlIGFzIF9pc2xpY2UsIGNvdW50IGFzIF9jb3VudApAQCAtMTA2LDggKzEwMywxNCBAQAogICAgICAgICAgICAgb3duZXIgPSBfYWN0aXZlW293bmVyXS5uYW1lCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgcmV0dXJuICI8JXMgb3duZXI9JXIgY291bnQ9JWQ+IiAlICgKLSAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgb3duZXIsIHNlbGYuX2NvdW50KQorICAgICAgICByZXR1cm4gIjwlcyAlcy4lcyBvYmplY3Qgb3duZXI9JXIgY291bnQ9JWQgYXQgJXM+IiAlICgKKyAgICAgICAgICAgICJsb2NrZWQiIGlmIHNlbGYuX2Jsb2NrLmxvY2tlZCgpIGVsc2UgInVubG9ja2VkIiwKKyAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICBvd25lciwKKyAgICAgICAgICAgIHNlbGYuX2NvdW50LAorICAgICAgICAgICAgaGV4KGlkKHNlbGYpKQorICAgICAgICApCiAKICAgICBkZWYgYWNxdWlyZShzZWxmLCBibG9ja2luZz1UcnVlLCB0aW1lb3V0PS0xKToKICAgICAgICAgIiIiQWNxdWlyZSBhIGxvY2ssIGJsb2NraW5nIG9yIG5vbi1ibG9ja2luZy4KZGlmZiAtLWdpdCBhL0xpYi90aW1laXQucHkgYi9MaWIvdGltZWl0LnB5CmluZGV4IDBiMWM2MDEuLjJkZTg4ZjcgMTAwNzU1Ci0tLSBhL0xpYi90aW1laXQucHkKKysrIGIvTGliL3RpbWVpdC5weQpAQCAtMjAsNiArMjAsNyBAQAogICAtdC8tLXRpbWU6IHVzZSB0aW1lLnRpbWUoKSAoZGVwcmVjYXRlZCkKICAgLWMvLS1jbG9jazogdXNlIHRpbWUuY2xvY2soKSAoZGVwcmVjYXRlZCkKICAgLXYvLS12ZXJib3NlOiBwcmludCByYXcgdGltaW5nIHJlc3VsdHM7IHJlcGVhdCBmb3IgbW9yZSBkaWdpdHMgcHJlY2lzaW9uCisgIC11Ly0tdW5pdDogc2V0IHRoZSBvdXRwdXQgdGltZSB1bml0ICh1c2VjLCBtc2VjLCBvciBzZWMpCiAgIC1oLy0taGVscDogcHJpbnQgdGhpcyB1c2FnZSBtZXNzYWdlIGFuZCBleGl0CiAgIC0tOiBzZXBhcmF0ZSBvcHRpb25zIGZyb20gc3RhdGVtZW50LCB1c2Ugd2hlbiBzdGF0ZW1lbnQgc3RhcnRzIHdpdGggLQogICBzdGF0ZW1lbnQ6IHN0YXRlbWVudCB0byBiZSB0aW1lZCAoZGVmYXVsdCAncGFzcycpCkBAIC02MSw2ICs2Miw4IEBACiBkZWZhdWx0X3JlcGVhdCA9IDMKIGRlZmF1bHRfdGltZXIgPSB0aW1lLnBlcmZfY291bnRlcgogCitfZ2xvYmFscyA9IGdsb2JhbHMKKwogIyBEb24ndCBjaGFuZ2UgdGhlIGluZGVudGF0aW9uIG9mIHRoZSB0ZW1wbGF0ZTsgdGhlIHJlaW5kZW50KCkgY2FsbHMKICMgaW4gVGltZXIuX19pbml0X18oKSBkZXBlbmQgb24gc2V0dXAgYmVpbmcgaW5kZW50ZWQgNCBzcGFjZXMgYW5kIHN0bXQKICMgYmVpbmcgaW5kZW50ZWQgOCBzcGFjZXMuCkBAIC03OCwyNCArODEsMTUgQEAKICAgICAiIiJIZWxwZXIgdG8gcmVpbmRlbnQgYSBtdWx0aS1saW5lIHN0YXRlbWVudC4iIiIKICAgICByZXR1cm4gc3JjLnJlcGxhY2UoIlxuIiwgIlxuIiArICIgIippbmRlbnQpCiAKLWRlZiBfdGVtcGxhdGVfZnVuYyhzZXR1cCwgZnVuYyk6Ci0gICAgIiIiQ3JlYXRlIGEgdGltZXIgZnVuY3Rpb24uIFVzZWQgaWYgdGhlICJzdGF0ZW1lbnQiIGlzIGEgY2FsbGFibGUuIiIiCi0gICAgZGVmIGlubmVyKF9pdCwgX3RpbWVyLCBfZnVuYz1mdW5jKToKLSAgICAgICAgc2V0dXAoKQotICAgICAgICBfdDAgPSBfdGltZXIoKQotICAgICAgICBmb3IgX2kgaW4gX2l0OgotICAgICAgICAgICAgX2Z1bmMoKQotICAgICAgICBfdDEgPSBfdGltZXIoKQotICAgICAgICByZXR1cm4gX3QxIC0gX3QwCi0gICAgcmV0dXJuIGlubmVyCi0KIGNsYXNzIFRpbWVyOgogICAgICIiIkNsYXNzIGZvciB0aW1pbmcgZXhlY3V0aW9uIHNwZWVkIG9mIHNtYWxsIGNvZGUgc25pcHBldHMuCiAKICAgICBUaGUgY29uc3RydWN0b3IgdGFrZXMgYSBzdGF0ZW1lbnQgdG8gYmUgdGltZWQsIGFuIGFkZGl0aW9uYWwKICAgICBzdGF0ZW1lbnQgdXNlZCBmb3Igc2V0dXAsIGFuZCBhIHRpbWVyIGZ1bmN0aW9uLiAgQm90aCBzdGF0ZW1lbnRzCiAgICAgZGVmYXVsdCB0byAncGFzcyc7IHRoZSB0aW1lciBmdW5jdGlvbiBpcyBwbGF0Zm9ybS1kZXBlbmRlbnQgKHNlZQotICAgIG1vZHVsZSBkb2Mgc3RyaW5nKS4KKyAgICBtb2R1bGUgZG9jIHN0cmluZykuICBJZiAnZ2xvYmFscycgaXMgc3BlY2lmaWVkLCB0aGUgY29kZSB3aWxsIGJlCisgICAgZXhlY3V0ZWQgd2l0aGluIHRoYXQgbmFtZXNwYWNlIChhcyBvcHBvc2VkIHRvIGluc2lkZSB0aW1laXQncworICAgIG5hbWVzcGFjZSkuCiAKICAgICBUbyBtZWFzdXJlIHRoZSBleGVjdXRpb24gdGltZSBvZiB0aGUgZmlyc3Qgc3RhdGVtZW50LCB1c2UgdGhlCiAgICAgdGltZWl0KCkgbWV0aG9kLiAgVGhlIHJlcGVhdCgpIG1ldGhvZCBpcyBhIGNvbnZlbmllbmNlIHRvIGNhbGwKQEAgLTEwNSw0MiArOTksNDAgQEAKICAgICBtdWx0aS1saW5lIHN0cmluZyBsaXRlcmFscy4KICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdG10PSJwYXNzIiwgc2V0dXA9InBhc3MiLCB0aW1lcj1kZWZhdWx0X3RpbWVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3RtdD0icGFzcyIsIHNldHVwPSJwYXNzIiwgdGltZXI9ZGVmYXVsdF90aW1lciwKKyAgICAgICAgICAgICAgICAgZ2xvYmFscz1Ob25lKToKICAgICAgICAgIiIiQ29uc3RydWN0b3IuICBTZWUgY2xhc3MgZG9jIHN0cmluZy4iIiIKICAgICAgICAgc2VsZi50aW1lciA9IHRpbWVyCi0gICAgICAgIG5zID0ge30KKyAgICAgICAgbG9jYWxfbnMgPSB7fQorICAgICAgICBnbG9iYWxfbnMgPSBfZ2xvYmFscygpIGlmIGdsb2JhbHMgaXMgTm9uZSBlbHNlIGdsb2JhbHMKKyAgICAgICAgaW5pdCA9ICcnCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2V0dXAsIHN0cik6CisgICAgICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGNvZGUgY2FuIGJlIGNvbXBpbGVkIG91dHNpZGUgYSBmdW5jdGlvbgorICAgICAgICAgICAgY29tcGlsZShzZXR1cCwgZHVtbXlfc3JjX25hbWUsICJleGVjIikKKyAgICAgICAgICAgIHN0bXRwcmVmaXggPSBzZXR1cCArICdcbicKKyAgICAgICAgICAgIHNldHVwID0gcmVpbmRlbnQoc2V0dXAsIDQpCisgICAgICAgIGVsaWYgY2FsbGFibGUoc2V0dXApOgorICAgICAgICAgICAgbG9jYWxfbnNbJ19zZXR1cCddID0gc2V0dXAKKyAgICAgICAgICAgIGluaXQgKz0gJywgX3NldHVwPV9zZXR1cCcKKyAgICAgICAgICAgIHN0bXRwcmVmaXggPSAnJworICAgICAgICAgICAgc2V0dXAgPSAnX3NldHVwKCknCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzZXR1cCBpcyBuZWl0aGVyIGEgc3RyaW5nIG5vciBjYWxsYWJsZSIpCiAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc3RtdCwgc3RyKToKICAgICAgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgY29kZSBjYW4gYmUgY29tcGlsZWQgb3V0c2lkZSBhIGZ1bmN0aW9uCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNldHVwLCBzdHIpOgotICAgICAgICAgICAgICAgIGNvbXBpbGUoc2V0dXAsIGR1bW15X3NyY19uYW1lLCAiZXhlYyIpCi0gICAgICAgICAgICAgICAgY29tcGlsZShzZXR1cCArICdcbicgKyBzdG10LCBkdW1teV9zcmNfbmFtZSwgImV4ZWMiKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjb21waWxlKHN0bXQsIGR1bW15X3NyY19uYW1lLCAiZXhlYyIpCisgICAgICAgICAgICBjb21waWxlKHN0bXRwcmVmaXggKyBzdG10LCBkdW1teV9zcmNfbmFtZSwgImV4ZWMiKQogICAgICAgICAgICAgc3RtdCA9IHJlaW5kZW50KHN0bXQsIDgpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNldHVwLCBzdHIpOgotICAgICAgICAgICAgICAgIHNldHVwID0gcmVpbmRlbnQoc2V0dXAsIDQpCi0gICAgICAgICAgICAgICAgc3JjID0gdGVtcGxhdGUuZm9ybWF0KHN0bXQ9c3RtdCwgc2V0dXA9c2V0dXAsIGluaXQ9JycpCi0gICAgICAgICAgICBlbGlmIGNhbGxhYmxlKHNldHVwKToKLSAgICAgICAgICAgICAgICBzcmMgPSB0ZW1wbGF0ZS5mb3JtYXQoc3RtdD1zdG10LCBzZXR1cD0nX3NldHVwKCknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0PScsIF9zZXR1cD1fc2V0dXAnKQotICAgICAgICAgICAgICAgIG5zWydfc2V0dXAnXSA9IHNldHVwCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNldHVwIGlzIG5laXRoZXIgYSBzdHJpbmcgbm9yIGNhbGxhYmxlIikKLSAgICAgICAgICAgIHNlbGYuc3JjID0gc3JjICMgU2F2ZSBmb3IgdHJhY2ViYWNrIGRpc3BsYXkKLSAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKHNyYywgZHVtbXlfc3JjX25hbWUsICJleGVjIikKLSAgICAgICAgICAgIGV4ZWMoY29kZSwgZ2xvYmFscygpLCBucykKLSAgICAgICAgICAgIHNlbGYuaW5uZXIgPSBuc1siaW5uZXIiXQogICAgICAgICBlbGlmIGNhbGxhYmxlKHN0bXQpOgotICAgICAgICAgICAgc2VsZi5zcmMgPSBOb25lCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNldHVwLCBzdHIpOgotICAgICAgICAgICAgICAgIF9zZXR1cCA9IHNldHVwCi0gICAgICAgICAgICAgICAgZGVmIHNldHVwKCk6Ci0gICAgICAgICAgICAgICAgICAgIGV4ZWMoX3NldHVwLCBnbG9iYWxzKCksIG5zKQotICAgICAgICAgICAgZWxpZiBub3QgY2FsbGFibGUoc2V0dXApOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNldHVwIGlzIG5laXRoZXIgYSBzdHJpbmcgbm9yIGNhbGxhYmxlIikKLSAgICAgICAgICAgIHNlbGYuaW5uZXIgPSBfdGVtcGxhdGVfZnVuYyhzZXR1cCwgc3RtdCkKKyAgICAgICAgICAgIGxvY2FsX25zWydfc3RtdCddID0gc3RtdAorICAgICAgICAgICAgaW5pdCArPSAnLCBfc3RtdD1fc3RtdCcKKyAgICAgICAgICAgIHN0bXQgPSAnX3N0bXQoKScKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInN0bXQgaXMgbmVpdGhlciBhIHN0cmluZyBub3IgY2FsbGFibGUiKQorICAgICAgICBzcmMgPSB0ZW1wbGF0ZS5mb3JtYXQoc3RtdD1zdG10LCBzZXR1cD1zZXR1cCwgaW5pdD1pbml0KQorICAgICAgICBzZWxmLnNyYyA9IHNyYyAgIyBTYXZlIGZvciB0cmFjZWJhY2sgZGlzcGxheQorICAgICAgICBjb2RlID0gY29tcGlsZShzcmMsIGR1bW15X3NyY19uYW1lLCAiZXhlYyIpCisgICAgICAgIGV4ZWMoY29kZSwgZ2xvYmFsX25zLCBsb2NhbF9ucykKKyAgICAgICAgc2VsZi5pbm5lciA9IGxvY2FsX25zWyJpbm5lciJdCiAKICAgICBkZWYgcHJpbnRfZXhjKHNlbGYsIGZpbGU9Tm9uZSk6CiAgICAgICAgICIiIkhlbHBlciB0byBwcmludCBhIHRyYWNlYmFjayBmcm9tIHRoZSB0aW1lZCBjb2RlLgpAQCAtMjE2LDE0ICsyMDgsMTQgQEAKICAgICAgICAgcmV0dXJuIHIKIAogZGVmIHRpbWVpdChzdG10PSJwYXNzIiwgc2V0dXA9InBhc3MiLCB0aW1lcj1kZWZhdWx0X3RpbWVyLAotICAgICAgICAgICBudW1iZXI9ZGVmYXVsdF9udW1iZXIpOgorICAgICAgICAgICBudW1iZXI9ZGVmYXVsdF9udW1iZXIsIGdsb2JhbHM9Tm9uZSk6CiAgICAgIiIiQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gY3JlYXRlIFRpbWVyIG9iamVjdCBhbmQgY2FsbCB0aW1laXQgbWV0aG9kLiIiIgotICAgIHJldHVybiBUaW1lcihzdG10LCBzZXR1cCwgdGltZXIpLnRpbWVpdChudW1iZXIpCisgICAgcmV0dXJuIFRpbWVyKHN0bXQsIHNldHVwLCB0aW1lciwgZ2xvYmFscykudGltZWl0KG51bWJlcikKIAogZGVmIHJlcGVhdChzdG10PSJwYXNzIiwgc2V0dXA9InBhc3MiLCB0aW1lcj1kZWZhdWx0X3RpbWVyLAotICAgICAgICAgICByZXBlYXQ9ZGVmYXVsdF9yZXBlYXQsIG51bWJlcj1kZWZhdWx0X251bWJlcik6CisgICAgICAgICAgIHJlcGVhdD1kZWZhdWx0X3JlcGVhdCwgbnVtYmVyPWRlZmF1bHRfbnVtYmVyLCBnbG9iYWxzPU5vbmUpOgogICAgICIiIkNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBUaW1lciBvYmplY3QgYW5kIGNhbGwgcmVwZWF0IG1ldGhvZC4iIiIKLSAgICByZXR1cm4gVGltZXIoc3RtdCwgc2V0dXAsIHRpbWVyKS5yZXBlYXQocmVwZWF0LCBudW1iZXIpCisgICAgcmV0dXJuIFRpbWVyKHN0bXQsIHNldHVwLCB0aW1lciwgZ2xvYmFscykucmVwZWF0KHJlcGVhdCwgbnVtYmVyKQogCiBkZWYgbWFpbihhcmdzPU5vbmUsICosIF93cmFwX3RpbWVyPU5vbmUpOgogICAgICIiIk1haW4gcHJvZ3JhbSwgdXNlZCB3aGVuIHJ1biBhcyBhIHNjcmlwdC4KQEAgLTI0NiwxMCArMjM4LDEwIEBACiAgICAgICAgIGFyZ3MgPSBzeXMuYXJndlsxOl0KICAgICBpbXBvcnQgZ2V0b3B0CiAgICAgdHJ5OgotICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChhcmdzLCAibjpzOnI6dGNwdmgiLAorICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChhcmdzLCAibjp1OnM6cjp0Y3B2aCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibnVtYmVyPSIsICJzZXR1cD0iLCAicmVwZWF0PSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZSIsICJjbG9jayIsICJwcm9jZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2ZXJib3NlIiwgImhlbHAiXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2ZXJib3NlIiwgInVuaXQ9IiwgImhlbHAiXSkKICAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIGVycjoKICAgICAgICAgcHJpbnQoZXJyKQogICAgICAgICBwcmludCgidXNlIC1oLy0taGVscCBmb3IgY29tbWFuZCBsaW5lIGhlbHAiKQpAQCAtMjYwLDEyICsyNTIsMjEgQEAKICAgICBzZXR1cCA9IFtdCiAgICAgcmVwZWF0ID0gZGVmYXVsdF9yZXBlYXQKICAgICB2ZXJib3NlID0gMAorICAgIHRpbWVfdW5pdCA9IE5vbmUKKyAgICB1bml0cyA9IHsidXNlYyI6IDEsICJtc2VjIjogMWUzLCAic2VjIjogMWU2fQogICAgIHByZWNpc2lvbiA9IDMKICAgICBmb3IgbywgYSBpbiBvcHRzOgogICAgICAgICBpZiBvIGluICgiLW4iLCAiLS1udW1iZXIiKToKICAgICAgICAgICAgIG51bWJlciA9IGludChhKQogICAgICAgICBpZiBvIGluICgiLXMiLCAiLS1zZXR1cCIpOgogICAgICAgICAgICAgc2V0dXAuYXBwZW5kKGEpCisgICAgICAgIGlmIG8gaW4gKCItdSIsICItLXVuaXQiKToKKyAgICAgICAgICAgIGlmIGEgaW4gdW5pdHM6CisgICAgICAgICAgICAgICAgdGltZV91bml0ID0gYQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmludCgiVW5yZWNvZ25pemVkIHVuaXQuIFBsZWFzZSBzZWxlY3QgdXNlYywgbXNlYywgb3Igc2VjLiIsCisgICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICByZXR1cm4gMgogICAgICAgICBpZiBvIGluICgiLXIiLCAiLS1yZXBlYXQiKToKICAgICAgICAgICAgIHJlcGVhdCA9IGludChhKQogICAgICAgICAgICAgaWYgcmVwZWF0IDw9IDA6CkBAIC0zMTUsMTUgKzMxNiwyMSBAQAogICAgICAgICBwcmludCgicmF3IHRpbWVzOiIsICIgIi5qb2luKFsiJS4qZyIgJSAocHJlY2lzaW9uLCB4KSBmb3IgeCBpbiByXSkpCiAgICAgcHJpbnQoIiVkIGxvb3BzLCIgJSBudW1iZXIsIGVuZD0nICcpCiAgICAgdXNlYyA9IGJlc3QgKiAxZTYgLyBudW1iZXIKLSAgICBpZiB1c2VjIDwgMTAwMDoKLSAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgdXNlYyBwZXIgbG9vcCIgJSAocmVwZWF0LCBwcmVjaXNpb24sIHVzZWMpKQorICAgIGlmIHRpbWVfdW5pdCBpcyBub3QgTm9uZToKKyAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgJXMgcGVyIGxvb3AiICUgKHJlcGVhdCwgcHJlY2lzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlYy91bml0c1t0aW1lX3VuaXRdLCB0aW1lX3VuaXQpKQogICAgIGVsc2U6Ci0gICAgICAgIG1zZWMgPSB1c2VjIC8gMTAwMAotICAgICAgICBpZiBtc2VjIDwgMTAwMDoKLSAgICAgICAgICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnIG1zZWMgcGVyIGxvb3AiICUgKHJlcGVhdCwgcHJlY2lzaW9uLCBtc2VjKSkKKyAgICAgICAgaWYgdXNlYyA8IDEwMDA6CisgICAgICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyB1c2VjIHBlciBsb29wIiAlIChyZXBlYXQsIHByZWNpc2lvbiwgdXNlYykpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWMgPSBtc2VjIC8gMTAwMAotICAgICAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgc2VjIHBlciBsb29wIiAlIChyZXBlYXQsIHByZWNpc2lvbiwgc2VjKSkKKyAgICAgICAgICAgIG1zZWMgPSB1c2VjIC8gMTAwMAorICAgICAgICAgICAgaWYgbXNlYyA8IDEwMDA6CisgICAgICAgICAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgbXNlYyBwZXIgbG9vcCIgJSAocmVwZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiwgbXNlYykpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlYyA9IG1zZWMgLyAxMDAwCisgICAgICAgICAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgc2VjIHBlciBsb29wIiAlIChyZXBlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb24sIHNlYykpCiAgICAgcmV0dXJuIE5vbmUKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL19faW5pdF9fLnB5IGIvTGliL3RraW50ZXIvX19pbml0X18ucHkKaW5kZXggNzVjNDBlNTYuLjEyMDg1YTkgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL19faW5pdF9fLnB5CisrKyBiL0xpYi90a2ludGVyL19faW5pdF9fLnB5CkBAIC0zMSw5ICszMSw2IEBACiAiIiIKIAogaW1wb3J0IHN5cwotaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgIyBBdHRlbXB0IHRvIGNvbmZpZ3VyZSBUY2wvVGsgd2l0aG91dCByZXF1aXJpbmcgUEFUSAotICAgIGZyb20gdGtpbnRlciBpbXBvcnQgX2ZpeAogCiBpbXBvcnQgX3RraW50ZXIgIyBJZiB0aGlzIGZhaWxzIHlvdXIgUHl0aG9uIG1heSBub3QgYmUgY29uZmlndXJlZCBmb3IgVGsKIFRjbEVycm9yID0gX3RraW50ZXIuVGNsRXJyb3IKQEAgLTM1NSw3ICszNTIsNyBAQAogCiAgICAgZGVmIGdldChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgYXMgYW4gaW50ZWdlci4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludChzZWxmLl90ay5nbG9iYWxnZXR2YXIoc2VsZi5fbmFtZSkpCisgICAgICAgIHJldHVybiBzZWxmLl90ay5nZXRpbnQoc2VsZi5fdGsuZ2xvYmFsZ2V0dmFyKHNlbGYuX25hbWUpKQogCiBjbGFzcyBEb3VibGVWYXIoVmFyaWFibGUpOgogICAgICIiIlZhbHVlIGhvbGRlciBmb3IgZmxvYXQgdmFyaWFibGVzLiIiIgpAQCAtMzc0LDcgKzM3MSw3IEBACiAKICAgICBkZWYgZ2V0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBhcyBhIGZsb2F0LiIiIgotICAgICAgICByZXR1cm4gZ2V0ZG91YmxlKHNlbGYuX3RrLmdsb2JhbGdldHZhcihzZWxmLl9uYW1lKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RrLmdldGRvdWJsZShzZWxmLl90ay5nbG9iYWxnZXR2YXIoc2VsZi5fbmFtZSkpCiAKIGNsYXNzIEJvb2xlYW5WYXIoVmFyaWFibGUpOgogICAgICIiIlZhbHVlIGhvbGRlciBmb3IgYm9vbGVhbiB2YXJpYWJsZXMuIiIiCkBAIC01MDUsMTQgKzUwMiwyNiBAQAogICAgIGRlZiBnZXR2YXIoc2VsZiwgbmFtZT0nUFlfVkFSJyk6CiAgICAgICAgICIiIlJldHVybiB2YWx1ZSBvZiBUY2wgdmFyaWFibGUgTkFNRS4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0dmFyKG5hbWUpCi0gICAgZ2V0aW50ID0gaW50Ci0gICAgZ2V0ZG91YmxlID0gZmxvYXQKKworICAgIGRlZiBnZXRpbnQoc2VsZiwgcyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChzKQorICAgICAgICBleGNlcHQgVGNsRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihzdHIoZXhjKSkKKworICAgIGRlZiBnZXRkb3VibGUoc2VsZiwgcyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGRvdWJsZShzKQorICAgICAgICBleGNlcHQgVGNsRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihzdHIoZXhjKSkKKwogICAgIGRlZiBnZXRib29sZWFuKHNlbGYsIHMpOgogICAgICAgICAiIiJSZXR1cm4gYSBib29sZWFuIHZhbHVlIGZvciBUY2wgYm9vbGVhbiB2YWx1ZXMgdHJ1ZSBhbmQgZmFsc2UgZ2l2ZW4gYXMgcGFyYW1ldGVyLiIiIgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRib29sZWFuKHMpCiAgICAgICAgIGV4Y2VwdCBUY2xFcnJvcjoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgbGl0ZXJhbCBmb3IgZ2V0Ym9vbGVhbigpIikKKwogICAgIGRlZiBmb2N1c19zZXQoc2VsZik6CiAgICAgICAgICIiIkRpcmVjdCBpbnB1dCBmb2N1cyB0byB0aGlzIHdpZGdldC4KIApAQCAtNzc1LDEzICs3ODQsMTAgQEAKICAgICAgICAgIiIiUmFpc2UgdGhpcyB3aWRnZXQgaW4gdGhlIHN0YWNraW5nIG9yZGVyLiIiIgogICAgICAgICBzZWxmLnRrLmNhbGwoJ3JhaXNlJywgc2VsZi5fdywgYWJvdmVUaGlzKQogICAgIGxpZnQgPSB0a3JhaXNlCi0gICAgZGVmIGNvbG9ybW9kZWwoc2VsZiwgdmFsdWU9Tm9uZSk6Ci0gICAgICAgICIiIlVzZWxlc3MuIE5vdCBpbXBsZW1lbnRlZCBpbiBUay4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbCgndGsnLCAnY29sb3Jtb2RlbCcsIHNlbGYuX3csIHZhbHVlKQogICAgIGRlZiB3aW5mb19hdG9tKHNlbGYsIG5hbWUsIGRpc3BsYXlvZj0wKToKICAgICAgICAgIiIiUmV0dXJuIGludGVnZXIgd2hpY2ggcmVwcmVzZW50cyBhdG9tIE5BTUUuIiIiCiAgICAgICAgIGFyZ3MgPSAoJ3dpbmZvJywgJ2F0b20nKSArIHNlbGYuX2Rpc3BsYXlvZihkaXNwbGF5b2YpICsgKG5hbWUsKQotICAgICAgICByZXR1cm4gZ2V0aW50KHNlbGYudGsuY2FsbChhcmdzKSkKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KHNlbGYudGsuY2FsbChhcmdzKSkKICAgICBkZWYgd2luZm9fYXRvbW5hbWUoc2VsZiwgaWQsIGRpc3BsYXlvZj0wKToKICAgICAgICAgIiIiUmV0dXJuIG5hbWUgb2YgYXRvbSB3aXRoIGlkZW50aWZpZXIgSUQuIiIiCiAgICAgICAgIGFyZ3MgPSAoJ3dpbmZvJywgJ2F0b21uYW1lJykgXApAQCAtNzg5LDcgKzc5NSw3IEBACiAgICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoYXJncykKICAgICBkZWYgd2luZm9fY2VsbHMoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBudW1iZXIgb2YgY2VsbHMgaW4gdGhlIGNvbG9ybWFwIGZvciB0aGlzIHdpZGdldC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdjZWxscycsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19jaGlsZHJlbihzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgd2lkZ2V0cyB3aGljaCBhcmUgY2hpbGRyZW4gb2YgdGhpcyB3aWRnZXQuIiIiCkBAIC04MjAsMjIgKzgyNiwyMiBAQAogICAgICAgICByZXR1cm4gc2VsZi5fbmFtZXRvd2lkZ2V0KG5hbWUpCiAgICAgZGVmIHdpbmZvX2RlcHRoKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiBiaXRzIHBlciBwaXhlbC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2RlcHRoJywgc2VsZi5fdykpCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2RlcHRoJywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX2V4aXN0cyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhpcyB3aWRnZXQgZXhpc3RzLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2V4aXN0cycsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19mcGl4ZWxzKHNlbGYsIG51bWJlcik6CiAgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIHBpeGVscyBmb3IgdGhlIGdpdmVuIGRpc3RhbmNlIE5VTUJFUgogICAgICAgICAoZS5nLiAiM2MiKSBhcyBmbG9hdC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGRvdWJsZShzZWxmLnRrLmNhbGwoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGRvdWJsZShzZWxmLnRrLmNhbGwoCiAgICAgICAgICAgICAnd2luZm8nLCAnZnBpeGVscycsIHNlbGYuX3csIG51bWJlcikpCiAgICAgZGVmIHdpbmZvX2dlb21ldHJ5KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gZ2VvbWV0cnkgc3RyaW5nIGZvciB0aGlzIHdpZGdldCBpbiB0aGUgZm9ybSAid2lkdGh4aGVpZ2h0K1grWSIuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2dlb21ldHJ5Jywgc2VsZi5fdykKICAgICBkZWYgd2luZm9faGVpZ2h0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gaGVpZ2h0IG9mIHRoaXMgd2lkZ2V0LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2hlaWdodCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19pZChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGlkZW50aWZpZXIgSUQgZm9yIHRoaXMgd2lkZ2V0LiIiIgpAQCAtODQ3LDcgKzg1Myw3IEBACiAgICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoYXJncykpCiAgICAgZGVmIHdpbmZvX2lzbWFwcGVkKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGlzIHdpZGdldCBpcyBtYXBwZWQuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnaXNtYXBwZWQnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fbWFuYWdlcihzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB3aW5kb3cgbWFuYW5nZXIgbmFtZSBmb3IgdGhpcyB3aWRnZXQuIiIiCkBAIC04NjUsMTEgKzg3MSwxMSBAQAogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKGFyZ3MpCiAgICAgZGVmIHdpbmZvX3BpeGVscyhzZWxmLCBudW1iZXIpOgogICAgICAgICAiIiJSb3VuZGVkIGludGVnZXIgdmFsdWUgb2Ygd2luZm9fZnBpeGVscy4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdwaXhlbHMnLCBzZWxmLl93LCBudW1iZXIpKQogICAgIGRlZiB3aW5mb19wb2ludGVyeChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB4IGNvb3JkaW5hdGUgb2YgdGhlIHBvaW50ZXIgb24gdGhlIHJvb3Qgd2luZG93LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3BvaW50ZXJ4Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3BvaW50ZXJ4eShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGEgdHVwbGUgb2YgeCBhbmQgeSBjb29yZGluYXRlcyBvZiB0aGUgcG9pbnRlciBvbiB0aGUgcm9vdCB3aW5kb3cuIiIiCkBAIC04NzcsMTUgKzg4MywxNSBAQAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdwb2ludGVyeHknLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fcG9pbnRlcnkoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgeSBjb29yZGluYXRlIG9mIHRoZSBwb2ludGVyIG9uIHRoZSByb290IHdpbmRvdy4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdwb2ludGVyeScsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19yZXFoZWlnaHQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiByZXF1ZXN0ZWQgaGVpZ2h0IG9mIHRoaXMgd2lkZ2V0LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3JlcWhlaWdodCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19yZXF3aWR0aChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHJlcXVlc3RlZCB3aWR0aCBvZiB0aGlzIHdpZGdldC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdyZXF3aWR0aCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19yZ2Ioc2VsZiwgY29sb3IpOgogICAgICAgICAiIiJSZXR1cm4gdHVwbGUgb2YgZGVjaW1hbCB2YWx1ZXMgZm9yIHJlZCwgZ3JlZW4sIGJsdWUgZm9yCkBAIC04OTUsMTIgKzkwMSwxMiBAQAogICAgIGRlZiB3aW5mb19yb290eChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHggY29vcmRpbmF0ZSBvZiB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGlzIHdpZGdldCBvbiB0aGUKICAgICAgICAgcm9vdCB3aW5kb3cuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAncm9vdHgnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fcm9vdHkoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB5IGNvb3JkaW5hdGUgb2YgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhpcyB3aWRnZXQgb24gdGhlCiAgICAgICAgIHJvb3Qgd2luZG93LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Jvb3R5Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3NjcmVlbihzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBzY3JlZW4gbmFtZSBvZiB0aGlzIHdpZGdldC4iIiIKQEAgLTkwOCwyNyArOTE0LDI3IEBACiAgICAgZGVmIHdpbmZvX3NjcmVlbmNlbGxzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiB0aGUgY2VsbHMgaW4gdGhlIGNvbG9ybWFwIG9mIHRoZSBzY3JlZW4KICAgICAgICAgb2YgdGhpcyB3aWRnZXQuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnc2NyZWVuY2VsbHMnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fc2NyZWVuZGVwdGgoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIGJpdHMgcGVyIHBpeGVsIG9mIHRoZSByb290IHdpbmRvdyBvZiB0aGUKICAgICAgICAgc2NyZWVuIG9mIHRoaXMgd2lkZ2V0LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3NjcmVlbmRlcHRoJywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3NjcmVlbmhlaWdodChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIgb2YgcGl4ZWxzIG9mIHRoZSBoZWlnaHQgb2YgdGhlIHNjcmVlbiBvZiB0aGlzIHdpZGdldAogICAgICAgICBpbiBwaXhlbC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdzY3JlZW5oZWlnaHQnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fc2NyZWVubW1oZWlnaHQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIHBpeGVscyBvZiB0aGUgaGVpZ2h0IG9mIHRoZSBzY3JlZW4gb2YKICAgICAgICAgdGhpcyB3aWRnZXQgaW4gbW0uIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnc2NyZWVubW1oZWlnaHQnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fc2NyZWVubW13aWR0aChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIgb2YgcGl4ZWxzIG9mIHRoZSB3aWR0aCBvZiB0aGUgc2NyZWVuIG9mCiAgICAgICAgIHRoaXMgd2lkZ2V0IGluIG1tLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3NjcmVlbm1td2lkdGgnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fc2NyZWVudmlzdWFsKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gb25lIG9mIHRoZSBzdHJpbmdzIGRpcmVjdGNvbG9yLCBncmF5c2NhbGUsIHBzZXVkb2NvbG9yLApAQCAtOTM4LDcgKzk0NCw3IEBACiAgICAgZGVmIHdpbmZvX3NjcmVlbndpZHRoKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiBwaXhlbHMgb2YgdGhlIHdpZHRoIG9mIHRoZSBzY3JlZW4gb2YKICAgICAgICAgdGhpcyB3aWRnZXQgaW4gcGl4ZWwuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnc2NyZWVud2lkdGgnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fc2VydmVyKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gaW5mb3JtYXRpb24gb2YgdGhlIFgtU2VydmVyIG9mIHRoZSBzY3JlZW4gb2YgdGhpcyB3aWRnZXQgaW4KQEAgLTk1MCw3ICs5NTYsNyBAQAogICAgICAgICAgICAgJ3dpbmZvJywgJ3RvcGxldmVsJywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3ZpZXdhYmxlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgd2lkZ2V0IGFuZCBhbGwgaXRzIGhpZ2hlciBhbmNlc3RvcnMgYXJlIG1hcHBlZC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICd2aWV3YWJsZScsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb192aXN1YWwoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBvbmUgb2YgdGhlIHN0cmluZ3MgZGlyZWN0Y29sb3IsIGdyYXlzY2FsZSwgcHNldWRvY29sb3IsCkBAIC05ODIsMzcgKzk4OCwzNyBAQAogICAgICAgICAiIiJSZXR1cm4gdGhlIGhlaWdodCBvZiB0aGUgdmlydHVhbCByb290IHdpbmRvdyBhc3NvY2lhdGVkIHdpdGggdGhpcwogICAgICAgICB3aWRnZXQgaW4gcGl4ZWxzLiBJZiB0aGVyZSBpcyBubyB2aXJ0dWFsIHJvb3Qgd2luZG93IHJldHVybiB0aGUKICAgICAgICAgaGVpZ2h0IG9mIHRoZSBzY3JlZW4uIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAndnJvb3RoZWlnaHQnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fdnJvb3R3aWR0aChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB3aWR0aCBvZiB0aGUgdmlydHVhbCByb290IHdpbmRvdyBhc3NvY2lhdGVkIHdpdGggdGhpcwogICAgICAgICB3aWRnZXQgaW4gcGl4ZWwuIElmIHRoZXJlIGlzIG5vIHZpcnR1YWwgcm9vdCB3aW5kb3cgcmV0dXJuIHRoZQogICAgICAgICB3aWR0aCBvZiB0aGUgc2NyZWVuLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Zyb290d2lkdGgnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fdnJvb3R4KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHggb2Zmc2V0IG9mIHRoZSB2aXJ0dWFsIHJvb3QgcmVsYXRpdmUgdG8gdGhlIHJvb3QKICAgICAgICAgd2luZG93IG9mIHRoZSBzY3JlZW4gb2YgdGhpcyB3aWRnZXQuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAndnJvb3R4Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3Zyb290eShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB5IG9mZnNldCBvZiB0aGUgdmlydHVhbCByb290IHJlbGF0aXZlIHRvIHRoZSByb290CiAgICAgICAgIHdpbmRvdyBvZiB0aGUgc2NyZWVuIG9mIHRoaXMgd2lkZ2V0LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Zyb290eScsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb193aWR0aChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB3aWR0aCBvZiB0aGlzIHdpZGdldC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICd3aWR0aCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb194KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHggY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhpcyB3aWRnZXQKICAgICAgICAgaW4gdGhlIHBhcmVudC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICd4Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3koc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgeSBjb29yZGluYXRlIG9mIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGlzIHdpZGdldAogICAgICAgICBpbiB0aGUgcGFyZW50LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3knLCBzZWxmLl93KSkKICAgICBkZWYgdXBkYXRlKHNlbGYpOgogICAgICAgICAiIiJFbnRlciBldmVudCBsb29wIHVudGlsIGFsbCBwZW5kaW5nIGV2ZW50cyBoYXZlIGJlZW4gcHJvY2Vzc2VkIGJ5IFRjbC4iIiIKQEAgLTExMjksMTEgKzExMzUsMTEgQEAKICAgICBkZWYgX2dldGludHMoc2VsZiwgc3RyaW5nKToKICAgICAgICAgIiIiSW50ZXJuYWwgZnVuY3Rpb24uIiIiCiAgICAgICAgIGlmIHN0cmluZzoKLSAgICAgICAgICAgIHJldHVybiB0dXBsZShtYXAoZ2V0aW50LCBzZWxmLnRrLnNwbGl0bGlzdChzdHJpbmcpKSkKKyAgICAgICAgICAgIHJldHVybiB0dXBsZShtYXAoc2VsZi50ay5nZXRpbnQsIHNlbGYudGsuc3BsaXRsaXN0KHN0cmluZykpKQogICAgIGRlZiBfZ2V0ZG91YmxlcyhzZWxmLCBzdHJpbmcpOgogICAgICAgICAiIiJJbnRlcm5hbCBmdW5jdGlvbi4iIiIKICAgICAgICAgaWYgc3RyaW5nOgotICAgICAgICAgICAgcmV0dXJuIHR1cGxlKG1hcChnZXRkb3VibGUsIHNlbGYudGsuc3BsaXRsaXN0KHN0cmluZykpKQorICAgICAgICAgICAgcmV0dXJuIHR1cGxlKG1hcChzZWxmLnRrLmdldGRvdWJsZSwgc2VsZi50ay5zcGxpdGxpc3Qoc3RyaW5nKSkpCiAgICAgZGVmIF9nZXRib29sZWFuKHNlbGYsIHN0cmluZyk6CiAgICAgICAgICIiIkludGVybmFsIGZ1bmN0aW9uLiIiIgogICAgICAgICBpZiBzdHJpbmc6CkBAIC0xMjMyLDEyICsxMjM4LDEyIEBACiAgICAgICAgIGlmIGxlbihhcmdzKSAhPSBsZW4oc2VsZi5fc3Vic3RfZm9ybWF0KTogcmV0dXJuIGFyZ3MKICAgICAgICAgZ2V0Ym9vbGVhbiA9IHNlbGYudGsuZ2V0Ym9vbGVhbgogCi0gICAgICAgIGdldGludCA9IGludAorICAgICAgICBnZXRpbnQgPSBzZWxmLnRrLmdldGludAogICAgICAgICBkZWYgZ2V0aW50X2V2ZW50KHMpOgogICAgICAgICAgICAgIiIiVGsgY2hhbmdlZCBiZWhhdmlvciBpbiA4LjQuMiwgcmV0dXJuaW5nICI/PyIgcmF0aGVyIG1vcmUgb2Z0ZW4uIiIiCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludChzKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdldGludChzKQorICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUY2xFcnJvcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHMKIAogICAgICAgICBuc2lnbiwgYiwgZiwgaCwgaywgcywgdCwgdywgeCwgeSwgQSwgRSwgSywgTiwgVywgVCwgWCwgWSwgRCA9IGFyZ3MKQEAgLTEyODEsNyArMTI4Nyw3IEBACiAgICAgICAgIGUueV9yb290ID0gZ2V0aW50X2V2ZW50KFkpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGUuZGVsdGEgPSBnZXRpbnQoRCkKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVGNsRXJyb3IpOgogICAgICAgICAgICAgZS5kZWx0YSA9IDAKICAgICAgICAgcmV0dXJuIChlLCkKICAgICBkZWYgX3JlcG9ydF9leGNlcHRpb24oc2VsZik6CkBAIC0xMzM2LDYgKzEzNDIsMTEgQEAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB3aW5kb3cgcGF0aCBuYW1lIG9mIHRoaXMgd2lkZ2V0LiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fdworCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJzwlcy4lcyBvYmplY3QgJXM+JyAlICgKKyAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywgc2VsZi5fdykKKwogICAgICMgUGFjayBtZXRob2RzIHRoYXQgYXBwbHkgdG8gdGhlIG1hc3RlcgogICAgIF9ub2FyZ18gPSBbJ19ub2FyZ18nXQogICAgIGRlZiBwYWNrX3Byb3BhZ2F0ZShzZWxmLCBmbGFnPV9ub2FyZ18pOgpAQCAtMTQwMSwxMCArMTQxMiwxMCBAQAogICAgICAgICAgICAgICAgIGlmIG5vdCBzdmFsdWU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICAgICAgZWxpZiAnLicgaW4gc3ZhbHVlOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0ZG91YmxlKHN2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0ZG91YmxlKHN2YWx1ZSkKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0aW50KHN2YWx1ZSkKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoc3ZhbHVlKQorICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUY2xFcnJvcik6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICByZXR1cm4gdmFsdWUKIApAQCAtMTg1MCw3ICsxODYxLDcgQEAKICAgICAgICAgICAgIGltcG9ydCBvcwogICAgICAgICAgICAgYmFzZU5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHN5cy5hcmd2WzBdKQogICAgICAgICAgICAgYmFzZU5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoYmFzZU5hbWUpCi0gICAgICAgICAgICBpZiBleHQgbm90IGluICgnLnB5JywgJy5weWMnLCAnLnB5bycpOgorICAgICAgICAgICAgaWYgZXh0IG5vdCBpbiAoJy5weScsICcucHljJyk6CiAgICAgICAgICAgICAgICAgYmFzZU5hbWUgPSBiYXNlTmFtZSArIGV4dAogICAgICAgICBpbnRlcmFjdGl2ZSA9IDAKICAgICAgICAgc2VsZi50ayA9IF90a2ludGVyLmNyZWF0ZShzY3JlZW5OYW1lLCBiYXNlTmFtZSwgY2xhc3NOYW1lLCBpbnRlcmFjdGl2ZSwgd2FudG9iamVjdHMsIHVzZVRrLCBzeW5jLCB1c2UpCkBAIC0yMTk2LDIxICsyMjA3LDYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIFdpZGdldC5fX2luaXRfXyhzZWxmLCBtYXN0ZXIsICdidXR0b24nLCBjbmYsIGt3KQogCi0gICAgZGVmIHRrQnV0dG9uRW50ZXIoc2VsZiwgKmR1bW15KToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a0J1dHRvbkVudGVyJywgc2VsZi5fdykKLQotICAgIGRlZiB0a0J1dHRvbkxlYXZlKHNlbGYsICpkdW1teSk6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtCdXR0b25MZWF2ZScsIHNlbGYuX3cpCi0KLSAgICBkZWYgdGtCdXR0b25Eb3duKHNlbGYsICpkdW1teSk6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtCdXR0b25Eb3duJywgc2VsZi5fdykKLQotICAgIGRlZiB0a0J1dHRvblVwKHNlbGYsICpkdW1teSk6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtCdXR0b25VcCcsIHNlbGYuX3cpCi0KLSAgICBkZWYgdGtCdXR0b25JbnZva2Uoc2VsZiwgKmR1bW15KToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a0J1dHRvbkludm9rZScsIHNlbGYuX3cpCi0KICAgICBkZWYgZmxhc2goc2VsZik6CiAgICAgICAgICIiIkZsYXNoIHRoZSBidXR0b24uCiAKQEAgLTIyOTcsMTcgKzIyOTMsMTcgQEAKICAgICBkZWYgY2FudmFzeChzZWxmLCBzY3JlZW54LCBncmlkc3BhY2luZz1Ob25lKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBjYW52YXMgeCBjb29yZGluYXRlIG9mIHBpeGVsIHBvc2l0aW9uIFNDUkVFTlggcm91bmRlZAogICAgICAgICB0byBuZWFyZXN0IG11bHRpcGxlIG9mIEdSSURTUEFDSU5HIHVuaXRzLiIiIgotICAgICAgICByZXR1cm4gZ2V0ZG91YmxlKHNlbGYudGsuY2FsbCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0ZG91YmxlKHNlbGYudGsuY2FsbCgKICAgICAgICAgICAgIHNlbGYuX3csICdjYW52YXN4Jywgc2NyZWVueCwgZ3JpZHNwYWNpbmcpKQogICAgIGRlZiBjYW52YXN5KHNlbGYsIHNjcmVlbnksIGdyaWRzcGFjaW5nPU5vbmUpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGNhbnZhcyB5IGNvb3JkaW5hdGUgb2YgcGl4ZWwgcG9zaXRpb24gU0NSRUVOWSByb3VuZGVkCiAgICAgICAgIHRvIG5lYXJlc3QgbXVsdGlwbGUgb2YgR1JJRFNQQUNJTkcgdW5pdHMuIiIiCi0gICAgICAgIHJldHVybiBnZXRkb3VibGUoc2VsZi50ay5jYWxsKAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRkb3VibGUoc2VsZi50ay5jYWxsKAogICAgICAgICAgICAgc2VsZi5fdywgJ2NhbnZhc3knLCBzY3JlZW55LCBncmlkc3BhY2luZykpCiAgICAgZGVmIGNvb3JkcyhzZWxmLCAqYXJncyk6CiAgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgY29vcmRpbmF0ZXMgZm9yIHRoZSBpdGVtIGdpdmVuIGluIEFSR1MuIiIiCiAgICAgICAgICMgWFhYIFNob3VsZCB1c2UgX2ZsYXR0ZW4gb24gYXJncwotICAgICAgICByZXR1cm4gW2dldGRvdWJsZSh4KSBmb3IgeCBpbgorICAgICAgICByZXR1cm4gW3NlbGYudGsuZ2V0ZG91YmxlKHgpIGZvciB4IGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRrLnNwbGl0bGlzdCgKICAgICAgICAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoKHNlbGYuX3csICdjb29yZHMnKSArIGFyZ3MpKV0KICAgICBkZWYgX2NyZWF0ZShzZWxmLCBpdGVtVHlwZSwgYXJncywga3cpOiAjIEFyZ3M6ICh2YWwsIHZhbCwgLi4uLCBjbmY9e30pCkBAIC0yMzE4LDcgKzIzMTQsNyBAQAogICAgICAgICAgICAgYXJncyA9IGFyZ3NbOi0xXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY25mID0ge30KLSAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChzZWxmLnRrLmNhbGwoCiAgICAgICAgICAgICBzZWxmLl93LCAnY3JlYXRlJywgaXRlbVR5cGUsCiAgICAgICAgICAgICAqKGFyZ3MgKyBzZWxmLl9vcHRpb25zKGNuZiwga3cpKSkpCiAgICAgZGVmIGNyZWF0ZV9hcmMoc2VsZiwgKmFyZ3MsICoqa3cpOgpAQCAtMjQwMiw3ICsyMzk4LDcgQEAKICAgICAgICAgc2VsZi50ay5jYWxsKChzZWxmLl93LCAnaWN1cnNvcicpICsgYXJncykKICAgICBkZWYgaW5kZXgoc2VsZiwgKmFyZ3MpOgogICAgICAgICAiIiJSZXR1cm4gcG9zaXRpb24gb2YgY3Vyc29yIGFzIGludGVnZXIgaW4gaXRlbSBzcGVjaWZpZWQgaW4gQVJHUy4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoKHNlbGYuX3csICdpbmRleCcpICsgYXJncykpCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChzZWxmLnRrLmNhbGwoKHNlbGYuX3csICdpbmRleCcpICsgYXJncykpCiAgICAgZGVmIGluc2VydChzZWxmLCAqYXJncyk6CiAgICAgICAgICIiIkluc2VydCBURVhUIGluIGl0ZW0gVEFHT1JJRCBhdCBwb3NpdGlvbiBQT1MuIEFSR1MgbXVzdAogICAgICAgICBiZSBUQUdPUklEIFBPUyBURVhULiIiIgpAQCAtMjUyOCw3ICsyNTI0LDcgQEAKICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICdpY3Vyc29yJywgaW5kZXgpCiAgICAgZGVmIGluZGV4KHNlbGYsIGluZGV4KToKICAgICAgICAgIiIiUmV0dXJuIHBvc2l0aW9uIG9mIGN1cnNvci4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChzZWxmLnRrLmNhbGwoCiAgICAgICAgICAgICBzZWxmLl93LCAnaW5kZXgnLCBpbmRleCkpCiAgICAgZGVmIGluc2VydChzZWxmLCBpbmRleCwgc3RyaW5nKToKICAgICAgICAgIiIiSW5zZXJ0IFNUUklORyBhdCBJTkRFWC4iIiIKQEAgLTI2NDMsMTMgKzI2MzksMTMgQEAKICAgICAgICAgIiIiUmV0dXJuIGluZGV4IG9mIGl0ZW0gaWRlbnRpZmllZCB3aXRoIElOREVYLiIiIgogICAgICAgICBpID0gc2VsZi50ay5jYWxsKHNlbGYuX3csICdpbmRleCcsIGluZGV4KQogICAgICAgICBpZiBpID09ICdub25lJzogcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIGdldGludChpKQorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoaSkKICAgICBkZWYgaW5zZXJ0KHNlbGYsIGluZGV4LCAqZWxlbWVudHMpOgogICAgICAgICAiIiJJbnNlcnQgRUxFTUVOVFMgYXQgSU5ERVguIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbCgoc2VsZi5fdywgJ2luc2VydCcsIGluZGV4KSArIGVsZW1lbnRzKQogICAgIGRlZiBuZWFyZXN0KHNlbGYsIHkpOgogICAgICAgICAiIiJHZXQgaW5kZXggb2YgaXRlbSB3aGljaCBpcyBuZWFyZXN0IHRvIHkgY29vcmRpbmF0ZSBZLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KHNlbGYudGsuY2FsbCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KHNlbGYudGsuY2FsbCgKICAgICAgICAgICAgIHNlbGYuX3csICduZWFyZXN0JywgeSkpCiAgICAgZGVmIHNjYW5fbWFyayhzZWxmLCB4LCB5KToKICAgICAgICAgIiIiUmVtZW1iZXIgdGhlIGN1cnJlbnQgWCwgWSBjb29yZGluYXRlcy4iIiIKQEAgLTI2ODMsNyArMjY3OSw3IEBACiAgICAgc2VsZWN0X3NldCA9IHNlbGVjdGlvbl9zZXQKICAgICBkZWYgc2l6ZShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGxpc3Rib3guIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoc2VsZi50ay5jYWxsKHNlbGYuX3csICdzaXplJykpCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3NpemUnKSkKICAgICBkZWYgaXRlbWNnZXQoc2VsZiwgaW5kZXgsIG9wdGlvbik6CiAgICAgICAgICIiIlJldHVybiB0aGUgcmVzb3VyY2UgdmFsdWUgZm9yIGFuIElURU0gYW5kIGFuIE9QVElPTi4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbCgKQEAgLTI3MDksMzUgKzI3MDUsMTUgQEAKICAgICAgICAgZGlzYWJsZWRmb3JlZ3JvdW5kLCBmZywgZm9udCwgZm9yZWdyb3VuZCwgcG9zdGNvbW1hbmQsIHJlbGllZiwKICAgICAgICAgc2VsZWN0Y29sb3IsIHRha2Vmb2N1cywgdGVhcm9mZiwgdGVhcm9mZmNvbW1hbmQsIHRpdGxlLCB0eXBlLiIiIgogICAgICAgICBXaWRnZXQuX19pbml0X18oc2VsZiwgbWFzdGVyLCAnbWVudScsIGNuZiwga3cpCisgICAgZGVmIHRrX3BvcHVwKHNlbGYsIHgsIHksIGVudHJ5PSIiKToKKyAgICAgICAgIiIiUG9zdCB0aGUgbWVudSBhdCBwb3NpdGlvbiBYLFkgd2l0aCBlbnRyeSBFTlRSWS4iIiIKKyAgICAgICAgc2VsZi50ay5jYWxsKCd0a19wb3B1cCcsIHNlbGYuX3csIHgsIHksIGVudHJ5KQogICAgIGRlZiB0a19iaW5kRm9yVHJhdmVyc2FsKHNlbGYpOgogICAgICAgICAjIG9ic29sZXRlIHNpbmNlIFRrIDQuMAogICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgd2FybmluZ3Mud2FybigndGtfYmluZEZvclRyYXZlcnNhbCgpIGRvZXMgbm90aGluZyBhbmQgJwogICAgICAgICAgICAgICAgICAgICAgICd3aWxsIGJlIHJlbW92ZWQgaW4gMy42JywKICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICBkZWYgdGtfbWJQb3N0KHNlbGYpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX21iUG9zdCcsIHNlbGYuX3cpCi0gICAgZGVmIHRrX21iVW5wb3N0KHNlbGYpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX21iVW5wb3N0JykKLSAgICBkZWYgdGtfdHJhdmVyc2VUb01lbnUoc2VsZiwgY2hhcik6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtfdHJhdmVyc2VUb01lbnUnLCBzZWxmLl93LCBjaGFyKQotICAgIGRlZiB0a190cmF2ZXJzZVdpdGhpbk1lbnUoc2VsZiwgY2hhcik6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtfdHJhdmVyc2VXaXRoaW5NZW51Jywgc2VsZi5fdywgY2hhcikKLSAgICBkZWYgdGtfZ2V0TWVudUJ1dHRvbnMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoJ3RrX2dldE1lbnVCdXR0b25zJywgc2VsZi5fdykKLSAgICBkZWYgdGtfbmV4dE1lbnUoc2VsZiwgY291bnQpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX25leHRNZW51JywgY291bnQpCi0gICAgZGVmIHRrX25leHRNZW51RW50cnkoc2VsZiwgY291bnQpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX25leHRNZW51RW50cnknLCBjb3VudCkKLSAgICBkZWYgdGtfaW52b2tlTWVudShzZWxmKToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a19pbnZva2VNZW51Jywgc2VsZi5fdykKLSAgICBkZWYgdGtfZmlyc3RNZW51KHNlbGYpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX2ZpcnN0TWVudScsIHNlbGYuX3cpCi0gICAgZGVmIHRrX21iQnV0dG9uRG93bihzZWxmKToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a19tYkJ1dHRvbkRvd24nLCBzZWxmLl93KQotICAgIGRlZiB0a19wb3B1cChzZWxmLCB4LCB5LCBlbnRyeT0iIik6Ci0gICAgICAgICIiIlBvc3QgdGhlIG1lbnUgYXQgcG9zaXRpb24gWCxZIHdpdGggZW50cnkgRU5UUlkuIiIiCi0gICAgICAgIHNlbGYudGsuY2FsbCgndGtfcG9wdXAnLCBzZWxmLl93LCB4LCB5LCBlbnRyeSkKICAgICBkZWYgYWN0aXZhdGUoc2VsZiwgaW5kZXgpOgogICAgICAgICAiIiJBY3RpdmF0ZSBlbnRyeSBhdCBJTkRFWC4iIiIKICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICdhY3RpdmF0ZScsIGluZGV4KQpAQCAtMjgwNSw3ICsyNzgxLDcgQEAKICAgICAgICAgIiIiUmV0dXJuIHRoZSBpbmRleCBvZiBhIG1lbnUgaXRlbSBpZGVudGlmaWVkIGJ5IElOREVYLiIiIgogICAgICAgICBpID0gc2VsZi50ay5jYWxsKHNlbGYuX3csICdpbmRleCcsIGluZGV4KQogICAgICAgICBpZiBpID09ICdub25lJzogcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIGdldGludChpKQorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoaSkKICAgICBkZWYgaW52b2tlKHNlbGYsIGluZGV4KToKICAgICAgICAgIiIiSW52b2tlIGEgbWVudSBpdGVtIGlkZW50aWZpZWQgYnkgSU5ERVggYW5kIGV4ZWN1dGUKICAgICAgICAgdGhlIGFzc29jaWF0ZWQgY29tbWFuZC4iIiIKQEAgLTI4MjIsMTAgKzI3OTgsMTAgQEAKICAgICBkZWYgeHBvc2l0aW9uKHNlbGYsIGluZGV4KTogIyBuZXcgaW4gVGsgOC41CiAgICAgICAgICIiIlJldHVybiB0aGUgeC1wb3NpdGlvbiBvZiB0aGUgbGVmdG1vc3QgcGl4ZWwgb2YgdGhlIG1lbnUgaXRlbQogICAgICAgICBhdCBJTkRFWC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3hwb3NpdGlvbicsIGluZGV4KSkKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KHNlbGYudGsuY2FsbChzZWxmLl93LCAneHBvc2l0aW9uJywgaW5kZXgpKQogICAgIGRlZiB5cG9zaXRpb24oc2VsZiwgaW5kZXgpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHktcG9zaXRpb24gb2YgdGhlIHRvcG1vc3QgcGl4ZWwgb2YgdGhlIG1lbnUgaXRlbSBhdCBJTkRFWC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChzZWxmLnRrLmNhbGwoCiAgICAgICAgICAgICBzZWxmLl93LCAneXBvc2l0aW9uJywgaW5kZXgpKQogCiBjbGFzcyBNZW51YnV0dG9uKFdpZGdldCk6CkBAIC0yODgxLDkgKzI4NTcsOSBAQAogICAgICAgICAiIiJHZXQgdGhlIGN1cnJlbnQgdmFsdWUgYXMgaW50ZWdlciBvciBmbG9hdC4iIiIKICAgICAgICAgdmFsdWUgPSBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2dldCcpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBnZXRpbnQodmFsdWUpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcmV0dXJuIGdldGRvdWJsZSh2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCh2YWx1ZSkKKyAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUY2xFcnJvcik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRkb3VibGUodmFsdWUpCiAgICAgZGVmIHNldChzZWxmLCB2YWx1ZSk6CiAgICAgICAgICIiIlNldCB0aGUgdmFsdWUgdG8gVkFMVUUuIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAnc2V0JywgdmFsdWUpCkBAIC0yOTEwLDE5ICsyODg2LDIzIEBACiAgICAgICAgIHJlbGllZiwgcmVwZWF0ZGVsYXksIHJlcGVhdGludGVydmFsLCB0YWtlZm9jdXMsCiAgICAgICAgIHRyb3VnaGNvbG9yLCB3aWR0aC4iIiIKICAgICAgICAgV2lkZ2V0Ll9faW5pdF9fKHNlbGYsIG1hc3RlciwgJ3Njcm9sbGJhcicsIGNuZiwga3cpCi0gICAgZGVmIGFjdGl2YXRlKHNlbGYsIGluZGV4KToKLSAgICAgICAgIiIiRGlzcGxheSB0aGUgZWxlbWVudCBhdCBJTkRFWCB3aXRoIGFjdGl2ZWJhY2tncm91bmQgYW5kIGFjdGl2ZXJlbGllZi4KLSAgICAgICAgSU5ERVggY2FuIGJlICJhcnJvdzEiLCJzbGlkZXIiIG9yICJhcnJvdzIiLiIiIgotICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2FjdGl2YXRlJywgaW5kZXgpCisgICAgZGVmIGFjdGl2YXRlKHNlbGYsIGluZGV4PU5vbmUpOgorICAgICAgICAiIiJNYXJrcyB0aGUgZWxlbWVudCBpbmRpY2F0ZWQgYnkgaW5kZXggYXMgYWN0aXZlLgorICAgICAgICBUaGUgb25seSBpbmRleCB2YWx1ZXMgdW5kZXJzdG9vZCBieSB0aGlzIG1ldGhvZCBhcmUgImFycm93MSIsCisgICAgICAgICJzbGlkZXIiLCBvciAiYXJyb3cyIi4gIElmIGFueSBvdGhlciB2YWx1ZSBpcyBzcGVjaWZpZWQgdGhlbiBubworICAgICAgICBlbGVtZW50IG9mIHRoZSBzY3JvbGxiYXIgd2lsbCBiZSBhY3RpdmUuICBJZiBpbmRleCBpcyBub3Qgc3BlY2lmaWVkLAorICAgICAgICB0aGUgbWV0aG9kIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGVsZW1lbnQgdGhhdCBpcyBjdXJyZW50bHkgYWN0aXZlLAorICAgICAgICBvciBOb25lIGlmIG5vIGVsZW1lbnQgaXMgYWN0aXZlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKHNlbGYuX3csICdhY3RpdmF0ZScsIGluZGV4KSBvciBOb25lCiAgICAgZGVmIGRlbHRhKHNlbGYsIGRlbHRheCwgZGVsdGF5KToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBmcmFjdGlvbmFsIGNoYW5nZSBvZiB0aGUgc2Nyb2xsYmFyIHNldHRpbmcgaWYgaXQKICAgICAgICAgd291bGQgYmUgbW92ZWQgYnkgREVMVEFYIG9yIERFTFRBWSBwaXhlbHMuIiIiCi0gICAgICAgIHJldHVybiBnZXRkb3VibGUoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGRvdWJsZSgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAnZGVsdGEnLCBkZWx0YXgsIGRlbHRheSkpCiAgICAgZGVmIGZyYWN0aW9uKHNlbGYsIHgsIHkpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGZyYWN0aW9uYWwgdmFsdWUgd2hpY2ggY29ycmVzcG9uZHMgdG8gYSBzbGlkZXIKICAgICAgICAgcG9zaXRpb24gb2YgWCxZLiIiIgotICAgICAgICByZXR1cm4gZ2V0ZG91YmxlKHNlbGYudGsuY2FsbChzZWxmLl93LCAnZnJhY3Rpb24nLCB4LCB5KSkKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0ZG91YmxlKHNlbGYudGsuY2FsbChzZWxmLl93LCAnZnJhY3Rpb24nLCB4LCB5KSkKICAgICBkZWYgaWRlbnRpZnkoc2VsZiwgeCwgeSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgZWxlbWVudCB1bmRlciBwb3NpdGlvbiBYLFkgYXMgb25lIG9mCiAgICAgICAgICJhcnJvdzEiLCJzbGlkZXIiLCJhcnJvdzIiIG9yICIiLiIiIgpAQCAtMjkzMSwxMCArMjkxMSwxMCBAQAogICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgZnJhY3Rpb25hbCB2YWx1ZXMgKHVwcGVyIGFuZCBsb3dlciBlbmQpCiAgICAgICAgIG9mIHRoZSBzbGlkZXIgcG9zaXRpb24uIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9nZXRkb3VibGVzKHNlbGYudGsuY2FsbChzZWxmLl93LCAnZ2V0JykpCi0gICAgZGVmIHNldChzZWxmLCAqYXJncyk6CisgICAgZGVmIHNldChzZWxmLCBmaXJzdCwgbGFzdCk6CiAgICAgICAgICIiIlNldCB0aGUgZnJhY3Rpb25hbCB2YWx1ZXMgb2YgdGhlIHNsaWRlciBwb3NpdGlvbiAodXBwZXIgYW5kCiAgICAgICAgIGxvd2VyIGVuZHMgYXMgdmFsdWUgYmV0d2VlbiAwIGFuZCAxKS4iIiIKLSAgICAgICAgc2VsZi50ay5jYWxsKChzZWxmLl93LCAnc2V0JykgKyBhcmdzKQorICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3NldCcsIGZpcnN0LCBsYXN0KQogCiAKIApAQCAtMjk2OSwxNCArMjk0OSw2IEBACiAgICAgICAgIGJveCBvZiB0aGUgdmlzaWJsZSBwYXJ0IG9mIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIGdpdmVuIGluZGV4LiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fZ2V0aW50cygKICAgICAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2Jib3gnLCBpbmRleCkpIG9yIE5vbmUKLSAgICBkZWYgdGtfdGV4dFNlbGVjdFRvKHNlbGYsIGluZGV4KToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a190ZXh0U2VsZWN0VG8nLCBzZWxmLl93LCBpbmRleCkKLSAgICBkZWYgdGtfdGV4dEJhY2tzcGFjZShzZWxmKToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a190ZXh0QmFja3NwYWNlJywgc2VsZi5fdykKLSAgICBkZWYgdGtfdGV4dEluZGV4Q2xvc2VyKHNlbGYsIGEsIGIsIGMpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX3RleHRJbmRleENsb3NlcicsIHNlbGYuX3csIGEsIGIsIGMpCi0gICAgZGVmIHRrX3RleHRSZXNldEFuY2hvcihzZWxmLCBpbmRleCk6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtfdGV4dFJlc2V0QW5jaG9yJywgc2VsZi5fdywgaW5kZXgpCiAgICAgZGVmIGNvbXBhcmUoc2VsZiwgaW5kZXgxLCBvcCwgaW5kZXgyKToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgYmV0d2VlbiBpbmRleCBJTkRFWDEgYW5kIGluZGV4IElOREVYMiB0aGUKICAgICAgICAgcmVsYXRpb24gT1AgaXMgc2F0aXNmaWVkLiBPUCBpcyBvbmUgb2YgPCwgPD0sID09LCA+PSwgPiwgb3IgIT0uIiIiCkBAIC0zNDAxLDE0ICszMzczLDE0IEBACiAgICAgY29uZmlnID0gY29uZmlndXJlCiAgICAgZGVmIGhlaWdodChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBoZWlnaHQgb2YgdGhlIGltYWdlLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ2ltYWdlJywgJ2hlaWdodCcsIHNlbGYubmFtZSkpCiAgICAgZGVmIHR5cGUoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgdHlwZSBvZiB0aGUgaW1nYWdlLCBlLmcuICJwaG90byIgb3IgImJpdG1hcCIuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoJ2ltYWdlJywgJ3R5cGUnLCBzZWxmLm5hbWUpCiAgICAgZGVmIHdpZHRoKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHdpZHRoIG9mIHRoZSBpbWFnZS4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCdpbWFnZScsICd3aWR0aCcsIHNlbGYubmFtZSkpCiAKIGNsYXNzIFBob3RvSW1hZ2UoSW1hZ2UpOgpAQCAtMzg1NCwzNSArMzgyNiwxMiBAQAogICAgICAgICAiIiJSZXR1cm5zIGFuIG9yZGVyZWQgbGlzdCBvZiB0aGUgY2hpbGQgcGFuZXMuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3BhbmVzJykpCiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgRXh0ZW5zaW9uczoKLQotY2xhc3MgU3R1ZGJ1dHRvbihCdXR0b24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSwgY25mPXt9LCAqKmt3KToKLSAgICAgICAgV2lkZ2V0Ll9faW5pdF9fKHNlbGYsIG1hc3RlciwgJ3N0dWRidXR0b24nLCBjbmYsIGt3KQotICAgICAgICBzZWxmLmJpbmQoJzxBbnktRW50ZXI+JywgICAgICAgc2VsZi50a0J1dHRvbkVudGVyKQotICAgICAgICBzZWxmLmJpbmQoJzxBbnktTGVhdmU+JywgICAgICAgc2VsZi50a0J1dHRvbkxlYXZlKQotICAgICAgICBzZWxmLmJpbmQoJzwxPicsICAgICAgICAgICAgICAgc2VsZi50a0J1dHRvbkRvd24pCi0gICAgICAgIHNlbGYuYmluZCgnPEJ1dHRvblJlbGVhc2UtMT4nLCBzZWxmLnRrQnV0dG9uVXApCi0KLWNsYXNzIFRyaWJ1dHRvbihCdXR0b24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSwgY25mPXt9LCAqKmt3KToKLSAgICAgICAgV2lkZ2V0Ll9faW5pdF9fKHNlbGYsIG1hc3RlciwgJ3RyaWJ1dHRvbicsIGNuZiwga3cpCi0gICAgICAgIHNlbGYuYmluZCgnPEFueS1FbnRlcj4nLCAgICAgICBzZWxmLnRrQnV0dG9uRW50ZXIpCi0gICAgICAgIHNlbGYuYmluZCgnPEFueS1MZWF2ZT4nLCAgICAgICBzZWxmLnRrQnV0dG9uTGVhdmUpCi0gICAgICAgIHNlbGYuYmluZCgnPDE+JywgICAgICAgICAgICAgICBzZWxmLnRrQnV0dG9uRG93bikKLSAgICAgICAgc2VsZi5iaW5kKCc8QnV0dG9uUmVsZWFzZS0xPicsIHNlbGYudGtCdXR0b25VcCkKLSAgICAgICAgc2VsZlsnZmcnXSAgICAgICAgICAgICAgID0gc2VsZlsnYmcnXQotICAgICAgICBzZWxmWydhY3RpdmViYWNrZ3JvdW5kJ10gPSBzZWxmWydiZyddCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgVGVzdDoKIAogZGVmIF90ZXN0KCk6CiAgICAgcm9vdCA9IFRrKCkKICAgICB0ZXh0ID0gIlRoaXMgaXMgVGNsL1RrIHZlcnNpb24gJXMiICUgVGNsVmVyc2lvbgotICAgIGlmIFRjbFZlcnNpb24gPj0gOC4xOgotICAgICAgICB0ZXh0ICs9ICJcblRoaXMgc2hvdWxkIGJlIGEgY2VkaWxsYTogXHhlNyIKKyAgICB0ZXh0ICs9ICJcblRoaXMgc2hvdWxkIGJlIGEgY2VkaWxsYTogXHhlNyIKICAgICBsYWJlbCA9IExhYmVsKHJvb3QsIHRleHQ9dGV4dCkKICAgICBsYWJlbC5wYWNrKCkKICAgICB0ZXN0ID0gQnV0dG9uKHJvb3QsIHRleHQ9IkNsaWNrIG1lISIsCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9fZml4LnB5IGIvTGliL3RraW50ZXIvX2ZpeC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE4ODczNC4uMDAwMDAwMAotLS0gYS9MaWIvdGtpbnRlci9fZml4LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotaW1wb3J0IHN5cywgb3MKLQotIyBEZWxheSBpbXBvcnQgX3RraW50ZXIgdW50aWwgd2UgaGF2ZSBzZXQgVENMX0xJQlJBUlksCi0jIHNvIHRoYXQgVGNsX0ZpbmRFeGVjdXRhYmxlIGhhcyBhIGNoYW5jZSB0byBsb2NhdGUgaXRzCi0jIGVuY29kaW5nIGRpcmVjdG9yeS4KLQotIyBVbmZvcnR1bmF0ZWx5LCB3ZSBjYW5ub3Qga25vdyB0aGUgVENMX0xJQlJBUlkgZGlyZWN0b3J5Ci0jIGlmIHdlIGRvbid0IGtub3cgdGhlIHRjbCB2ZXJzaW9uLCB3aGljaCB3ZSBjYW5ub3QgZmluZCBvdXQKLSMgd2l0aG91dCBpbXBvcnQgVGNsLiBGb3J0dW5hdGVseSwgVGNsIHdpbGwgaXRzZWxmIGxvb2sgaW4KLSMgPFRDTF9MSUJSQVJZPlwuLlx0Y2w8VENMX1ZFUlNJT04+LCBzbyBhbnl0aGluZyBjbG9zZSB0bwotIyB0aGUgcmVhbCBUY2wgbGlicmFyeSB3aWxsIGRvLgotCi0jIEV4cGFuZCBzeW1ib2xpYyBsaW5rcyBvbiBWaXN0YQotdHJ5OgotICAgIGltcG9ydCBjdHlwZXMKLSAgICBjdHlwZXMud2luZGxsLmtlcm5lbDMyLkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcKLWV4Y2VwdCAoSW1wb3J0RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKLSAgICBkZWYgY29udmVydF9wYXRoKHMpOgotICAgICAgICByZXR1cm4gcwotZWxzZToKLSAgICBkZWYgY29udmVydF9wYXRoKHMpOgotICAgICAgICBpZiBpc2luc3RhbmNlKHMsIGJ5dGVzKToKLSAgICAgICAgICAgIHMgPSBzLmRlY29kZSgibWJjcyIpCi0gICAgICAgIGhkaXIgPSBjdHlwZXMud2luZGxsLmtlcm5lbDMyLlwKLSAgICAgICAgICAgIENyZWF0ZUZpbGVXKHMsIDB4ODAsICAgICMgRklMRV9SRUFEX0FUVFJJQlVURVMKLSAgICAgICAgICAgICAgICAgICAgICAgIDEsICAgICAgICAgICMgRklMRV9TSEFSRV9SRUFECi0gICAgICAgICAgICAgICAgICAgICAgICBOb25lLCAzLCAgICAjIE9QRU5fRVhJU1RJTkcKLSAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwMDAwMDAsICMgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MKLSAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUpCi0gICAgICAgIGlmIGhkaXIgPT0gLTE6Ci0gICAgICAgICAgICAjIENhbm5vdCBvcGVuIGRpcmVjdG9yeSwgZ2l2ZSB1cAotICAgICAgICAgICAgcmV0dXJuIHMKLSAgICAgICAgYnVmID0gY3R5cGVzLmNyZWF0ZV91bmljb2RlX2J1ZmZlcigiIiwgMzI3NjgpCi0gICAgICAgIHJlcyA9IGN0eXBlcy53aW5kbGwua2VybmVsMzIuXAotICAgICAgICAgICAgR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoZGlyLCBidWYsIGxlbihidWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKSAjIFZPTFVNRV9OQU1FX0RPUwotICAgICAgICBjdHlwZXMud2luZGxsLmtlcm5lbDMyLkNsb3NlSGFuZGxlKGhkaXIpCi0gICAgICAgIGlmIHJlcyA9PSAwOgotICAgICAgICAgICAgIyBDb252ZXJzaW9uIGZhaWxlZCAoZS5nLiBuZXR3b3JrIGxvY2F0aW9uKQotICAgICAgICAgICAgcmV0dXJuIHMKLSAgICAgICAgcyA9IGJ1Zls6cmVzXQotICAgICAgICAjIElnbm9yZSBsZWFkaW5nIFxcP1wKLSAgICAgICAgaWYgcy5zdGFydHN3aXRoKCJcXFxcP1xcIik6Ci0gICAgICAgICAgICBzID0gc1s0Ol0KLSAgICAgICAgaWYgcy5zdGFydHN3aXRoKCJVTkMiKToKLSAgICAgICAgICAgIHMgPSAiXFwiICsgc1szOl0KLSAgICAgICAgcmV0dXJuIHMKLQotcHJlZml4ID0gb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwidGNsIikKLWlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwcmVmaXgpOgotICAgICMgZGV2ZGlyL2V4dGVybmFscy90Y2x0ay9saWIKLSAgICBwcmVmaXggPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCAiZXh0ZXJuYWxzIiwgInRjbHRrIiwgImxpYiIpCi0gICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKHByZWZpeCkKLSMgaWYgdGhpcyBkb2VzIG5vdCBleGlzdCwgbm8gZnVydGhlciBzZWFyY2ggaXMgbmVlZGVkCi1pZiBvcy5wYXRoLmV4aXN0cyhwcmVmaXgpOgotICAgIHByZWZpeCA9IGNvbnZlcnRfcGF0aChwcmVmaXgpCi0gICAgaWYgIlRDTF9MSUJSQVJZIiBub3QgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgZm9yIG5hbWUgaW4gb3MubGlzdGRpcihwcmVmaXgpOgotICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCJ0Y2wiKToKLSAgICAgICAgICAgICAgICB0Y2xkaXIgPSBvcy5wYXRoLmpvaW4ocHJlZml4LG5hbWUpCi0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcih0Y2xkaXIpOgotICAgICAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWyJUQ0xfTElCUkFSWSJdID0gdGNsZGlyCi0gICAgIyBDb21wdXRlIFRLX0xJQlJBUlksIGtub3dpbmcgdGhhdCBpdCBoYXMgdGhlIHNhbWUgdmVyc2lvbgotICAgICMgYXMgVGNsCi0gICAgaW1wb3J0IF90a2ludGVyCi0gICAgdmVyID0gc3RyKF90a2ludGVyLlRDTF9WRVJTSU9OKQotICAgIGlmICJUS19MSUJSQVJZIiBub3QgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgdiA9IG9zLnBhdGguam9pbihwcmVmaXgsICd0aycrdmVyKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odiwgInRjbEluZGV4IikpOgotICAgICAgICAgICAgb3MuZW52aXJvblsnVEtfTElCUkFSWSddID0gdgotICAgICMgV2UgZG9uJ3Qga25vdyB0aGUgVGl4IHZlcnNpb24sIHNvIHdlIG11c3Qgc2VhcmNoIHRoZSBlbnRpcmUKLSAgICAjIGRpcmVjdG9yeQotICAgIGlmICJUSVhfTElCUkFSWSIgbm90IGluIG9zLmVudmlyb246Ci0gICAgICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIocHJlZml4KToKLSAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgidGl4Iik6Ci0gICAgICAgICAgICAgICAgdGl4ZGlyID0gb3MucGF0aC5qb2luKHByZWZpeCxuYW1lKQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIodGl4ZGlyKToKLSAgICAgICAgICAgICAgICAgICAgb3MuZW52aXJvblsiVElYX0xJQlJBUlkiXSA9IHRpeGRpcgpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvZm9udC5weSBiL0xpYi90a2ludGVyL2ZvbnQucHkKaW5kZXggYjk2NjczMi4uMTM2NDI1NyAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvZm9udC5weQorKysgYi9MaWIvdGtpbnRlci9mb250LnB5CkBAIC0xMTIsOCArMTEyLDYgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgc2VsZi5kZWxldGVfZm9udDoKICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsKCJmb250IiwgImRlbGV0ZSIsIHNlbGYubmFtZSkKLSAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6Ci0gICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgcGFzcwogCkBAIC0xNTMsNyArMTUxLDcgQEAKICAgICAgICAgYXJncyA9ICh0ZXh0LCkKICAgICAgICAgaWYgZGlzcGxheW9mOgogICAgICAgICAgICAgYXJncyA9ICgnLWRpc3BsYXlvZicsIGRpc3BsYXlvZiwgdGV4dCkKLSAgICAgICAgcmV0dXJuIGludChzZWxmLl9jYWxsKCJmb250IiwgIm1lYXN1cmUiLCBzZWxmLm5hbWUsICphcmdzKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RrLmdldGludChzZWxmLl9jYWxsKCJmb250IiwgIm1lYXN1cmUiLCBzZWxmLm5hbWUsICphcmdzKSkKIAogICAgIGRlZiBtZXRyaWNzKHNlbGYsICpvcHRpb25zLCAqKmt3KToKICAgICAgICAgIiIiUmV0dXJuIGZvbnQgbWV0cmljcy4KQEAgLTE2NiwxMyArMTY0LDEzIEBACiAgICAgICAgICAgICBhcmdzID0gKCctZGlzcGxheW9mJywgZGlzcGxheW9mKQogICAgICAgICBpZiBvcHRpb25zOgogICAgICAgICAgICAgYXJncyA9IGFyZ3MgKyBzZWxmLl9nZXQob3B0aW9ucykKLSAgICAgICAgICAgIHJldHVybiBpbnQoCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fdGsuZ2V0aW50KAogICAgICAgICAgICAgICAgIHNlbGYuX2NhbGwoImZvbnQiLCAibWV0cmljcyIsIHNlbGYubmFtZSwgKmFyZ3MpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVzID0gc2VsZi5fc3BsaXQoc2VsZi5fY2FsbCgiZm9udCIsICJtZXRyaWNzIiwgc2VsZi5uYW1lLCAqYXJncykpCiAgICAgICAgICAgICBvcHRpb25zID0ge30KICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihyZXMpLCAyKToKLSAgICAgICAgICAgICAgICBvcHRpb25zW3Jlc1tpXVsxOl1dID0gaW50KHJlc1tpKzFdKQorICAgICAgICAgICAgICAgIG9wdGlvbnNbcmVzW2ldWzE6XV0gPSBzZWxmLl90ay5nZXRpbnQocmVzW2krMV0pCiAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucwogCiAKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3NpbXBsZWRpYWxvZy5weSBiL0xpYi90a2ludGVyL3NpbXBsZWRpYWxvZy5weQppbmRleCA0NTMwMmI0Li5hOTVmNTUxIDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci9zaW1wbGVkaWFsb2cucHkKKysrIGIvTGliL3RraW50ZXIvc2ltcGxlZGlhbG9nLnB5CkBAIC0zMjUsNyArMzI1LDcgQEAKIGNsYXNzIF9RdWVyeUludGVnZXIoX1F1ZXJ5RGlhbG9nKToKICAgICBlcnJvcm1lc3NhZ2UgPSAiTm90IGFuIGludGVnZXIuIgogICAgIGRlZiBnZXRyZXN1bHQoc2VsZik6Ci0gICAgICAgIHJldHVybiBpbnQoc2VsZi5lbnRyeS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuZ2V0aW50KHNlbGYuZW50cnkuZ2V0KCkpCiAKIGRlZiBhc2tpbnRlZ2VyKHRpdGxlLCBwcm9tcHQsICoqa3cpOgogICAgICcnJ2dldCBhbiBpbnRlZ2VyIGZyb20gdGhlIHVzZXIKQEAgLTM0NCw3ICszNDQsNyBAQAogY2xhc3MgX1F1ZXJ5RmxvYXQoX1F1ZXJ5RGlhbG9nKToKICAgICBlcnJvcm1lc3NhZ2UgPSAiTm90IGEgZmxvYXRpbmcgcG9pbnQgdmFsdWUuIgogICAgIGRlZiBnZXRyZXN1bHQoc2VsZik6Ci0gICAgICAgIHJldHVybiBmbG9hdChzZWxmLmVudHJ5LmdldCgpKQorICAgICAgICByZXR1cm4gc2VsZi5nZXRkb3VibGUoc2VsZi5lbnRyeS5nZXQoKSkKIAogZGVmIGFza2Zsb2F0KHRpdGxlLCBwcm9tcHQsICoqa3cpOgogICAgICcnJ2dldCBhIGZsb2F0IGZyb20gdGhlIHVzZXIKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvcnVudGt0ZXN0cy5weSBiL0xpYi90a2ludGVyL3Rlc3QvcnVudGt0ZXN0cy5weQppbmRleCBjY2IzNzU1Li5kYmU1ZTg4IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90ZXN0L3J1bnRrdGVzdHMucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC9ydW50a3Rlc3RzLnB5CkBAIC0xNiw3ICsxNiw3IEBACiAKIGRlZiBpc19wYWNrYWdlKHBhdGgpOgogICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIocGF0aCk6Ci0gICAgICAgIGlmIG5hbWUgaW4gKCdfX2luaXRfXy5weScsICdfX2luaXRfXy5weWMnLCAnX19pbml0LnB5bycpOgorICAgICAgICBpZiBuYW1lIGluICgnX19pbml0X18ucHknLCAnX19pbml0X18ucHljJyk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgIHJldHVybiBGYWxzZQogCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X21pc2MucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X21pc2MucHkKaW5kZXggZDhkZTk0OS4uODVlZTJjNyAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5CisrKyBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfbWlzYy5weQpAQCAtNyw2ICs3LDExIEBACiAKIGNsYXNzIE1pc2NUZXN0KEFic3RyYWN0VGtUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICB0ID0gdGtpbnRlci5Ub3BsZXZlbChzZWxmLnJvb3QsIG5hbWU9J3RvcCcpCisgICAgICAgIGYgPSB0a2ludGVyLkZyYW1lKHQsIG5hbWU9J2NoaWxkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnPHRraW50ZXIuRnJhbWUgb2JqZWN0IC50b3AuY2hpbGQ+JykKKwogICAgIGRlZiB0ZXN0X3RrX3NldFBhbGV0dGUoc2VsZik6CiAgICAgICAgIHJvb3QgPSBzZWxmLnJvb3QKICAgICAgICAgcm9vdC50a19zZXRQYWxldHRlKCdibGFjaycpCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weSBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5CmluZGV4IDRiNzI5NDMuLmFiZGNlOTYgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5CisrKyBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5CkBAIC0xMjIsMTAgKzEyMiwxMCBAQAogICAgIGRlZiB0ZXN0X2ludmFsaWRfdmFsdWUoc2VsZik6CiAgICAgICAgIHYgPSBJbnRWYXIoc2VsZi5yb290LCBuYW1lPSJuYW1lIikKICAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICJ2YWx1ZSIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIFRjbEVycm9yKSk6CiAgICAgICAgICAgICB2LmdldCgpCiAgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAiMzQ1LjAiKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBUY2xFcnJvcikpOgogICAgICAgICAgICAgdi5nZXQoKQogCiAKQEAgLTE1Miw3ICsxNTIsNyBAQAogICAgIGRlZiB0ZXN0X2ludmFsaWRfdmFsdWUoc2VsZik6CiAgICAgICAgIHYgPSBEb3VibGVWYXIoc2VsZi5yb290LCBuYW1lPSJuYW1lIikKICAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICJ2YWx1ZSIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIFRjbEVycm9yKSk6CiAgICAgICAgICAgICB2LmdldCgpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5CmluZGV4IDhiZTAzNzEuLjcxNzE2NjcgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3Rfd2lkZ2V0cy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3dpZGdldHMucHkKQEAgLTkyMCw4ICs5MjAsOSBAQAogICAgICAgICBzYiA9IHNlbGYuY3JlYXRlKCkKICAgICAgICAgZm9yIGUgaW4gKCdhcnJvdzEnLCAnc2xpZGVyJywgJ2Fycm93MicpOgogICAgICAgICAgICAgc2IuYWN0aXZhdGUoZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2IuYWN0aXZhdGUoKSwgZSkKICAgICAgICAgc2IuYWN0aXZhdGUoJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2IuYWN0aXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNiLmFjdGl2YXRlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2IuYWN0aXZhdGUsICdhcnJvdzEnLCAnYXJyb3cyJykKIAogICAgIGRlZiB0ZXN0X3NldChzZWxmKToKQEAgLTkzMSw4ICs5MzIsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUY2xFcnJvciwgc2Iuc2V0LCAnYWJjJywgJ2RlZicpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFRjbEVycm9yLCBzYi5zZXQsIDAuNiwgJ2RlZicpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFRjbEVycm9yLCBzYi5zZXQsIDAuNiwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVGNsRXJyb3IsIHNiLnNldCwgMC42KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUY2xFcnJvciwgc2Iuc2V0LCAwLjYsIDAuNywgMC44KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNiLnNldCwgMC42KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNiLnNldCwgMC42LCAwLjcsIDAuOCkKIAogCiBAYWRkX3N0YW5kYXJkX29wdGlvbnMoU3RhbmRhcmRPcHRpb25zVGVzdHMpCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3RfZXh0ZW5zaW9ucy5weSBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9leHRlbnNpb25zLnB5CmluZGV4IGMzYWYwNmMuLmYzMzk0NWMgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9leHRlbnNpb25zLnB5CisrKyBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9leHRlbnNpb25zLnB5CkBAIC03MCwxNyArNzAsMTUgQEAKICAgICAgICAgIyB2YXJpYWJsZSBpbml0aWFsaXphdGlvbi9wYXNzaW5nCiAgICAgICAgIHBhc3NlZF9leHBlY3RlZCA9ICgoJzAnLCAwKSwgKDAsIDApLCAoMTAsIDEwKSwKICAgICAgICAgICAgICgtMSwgLTEpLCAoc3lzLm1heHNpemUgKyAxLCBzeXMubWF4c2l6ZSArIDEpKQotICAgICAgICBpZiBzZWxmLndhbnRvYmplY3RzOgotICAgICAgICAgICAgcGFzc2VkX2V4cGVjdGVkICs9ICgoMi41LCAyKSwpCiAgICAgICAgIGZvciBwYWlyIGluIHBhc3NlZF9leHBlY3RlZDoKICAgICAgICAgICAgIHggPSB0dGsuTGFiZWxlZFNjYWxlKHNlbGYucm9vdCwgZnJvbV89cGFpclswXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC52YWx1ZSwgcGFpclsxXSkKICAgICAgICAgICAgIHguZGVzdHJveSgpCiAgICAgICAgIHggPSB0dGsuTGFiZWxlZFNjYWxlKHNlbGYucm9vdCwgZnJvbV89JzIuNScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHguX3ZhcmlhYmxlLmdldCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIHRraW50ZXIuVGNsRXJyb3IpLCB4Ll92YXJpYWJsZS5nZXQpCiAgICAgICAgIHguZGVzdHJveSgpCiAgICAgICAgIHggPSB0dGsuTGFiZWxlZFNjYWxlKHNlbGYucm9vdCwgZnJvbV89Tm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgeC5fdmFyaWFibGUuZ2V0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgdGtpbnRlci5UY2xFcnJvciksIHguX3ZhcmlhYmxlLmdldCkKICAgICAgICAgeC5kZXN0cm95KCkKICAgICAgICAgIyB2YXJpYWJsZSBzaG91bGQgaGF2ZSBpdHMgZGVmYXVsdCB2YWx1ZSBzZXQgdG8gdGhlIGZyb21fIHZhbHVlCiAgICAgICAgIG15dmFyID0gdGtpbnRlci5Eb3VibGVWYXIoc2VsZi5yb290LCB2YWx1ZT0yMCkKZGlmZiAtLWdpdCBhL0xpYi90b2tlbi5weSBiL0xpYi90b2tlbi5weQppbmRleCA3NDcwYzhjLi41ZmRiMjIyIDEwMDY0NAotLS0gYS9MaWIvdG9rZW4ucHkKKysrIGIvTGliL3Rva2VuLnB5CkBAIC02MCwxMSArNjAsMTQgQEAKIERPVUJMRVNMQVNIID0gNDcKIERPVUJMRVNMQVNIRVFVQUwgPSA0OAogQVQgPSA0OQotUkFSUk9XID0gNTAKLUVMTElQU0lTID0gNTEKLU9QID0gNTIKLUVSUk9SVE9LRU4gPSA1MwotTl9UT0tFTlMgPSA1NAorQVRFUVVBTCA9IDUwCitSQVJST1cgPSA1MQorRUxMSVBTSVMgPSA1MgorT1AgPSA1MworQVdBSVQgPSA1NAorQVNZTkMgPSA1NQorRVJST1JUT0tFTiA9IDU2CitOX1RPS0VOUyA9IDU3CiBOVF9PRkZTRVQgPSAyNTYKICMtLWVuZCBjb25zdGFudHMtLQogCkBAIC05Niw4ICs5OSw4IEBACiAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgogICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJJL08gZXJyb3I6ICVzXG4iICUgc3RyKGVycikpCiAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgbGluZXMgPSBmcC5yZWFkKCkuc3BsaXQoIlxuIikKLSAgICBmcC5jbG9zZSgpCisgICAgd2l0aCBmcDoKKyAgICAgICAgbGluZXMgPSBmcC5yZWFkKCkuc3BsaXQoIlxuIikKICAgICBwcm9nID0gcmUuY29tcGlsZSgKICAgICAgICAgIiNkZWZpbmVbIFx0XVsgXHRdKihbQS1aMC05XVtBLVowLTlfXSopWyBcdF1bIFx0XSooWzAtOV1bMC05XSopIiwKICAgICAgICAgcmUuSUdOT1JFQ0FTRSkKQEAgLTExNSw4ICsxMTgsOCBAQAogICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiSS9PIGVycm9yOiAlc1xuIiAlIHN0cihlcnIpKQogICAgICAgICBzeXMuZXhpdCgyKQotICAgIGZvcm1hdCA9IGZwLnJlYWQoKS5zcGxpdCgiXG4iKQotICAgIGZwLmNsb3NlKCkKKyAgICB3aXRoIGZwOgorICAgICAgICBmb3JtYXQgPSBmcC5yZWFkKCkuc3BsaXQoIlxuIikKICAgICB0cnk6CiAgICAgICAgIHN0YXJ0ID0gZm9ybWF0LmluZGV4KCIjLS1zdGFydCBjb25zdGFudHMtLSIpICsgMQogICAgICAgICBlbmQgPSBmb3JtYXQuaW5kZXgoIiMtLWVuZCBjb25zdGFudHMtLSIpCkBAIC0xMzIsOCArMTM1LDggQEAKICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkkvTyBlcnJvcjogJXNcbiIgJSBzdHIoZXJyKSkKICAgICAgICAgc3lzLmV4aXQoNCkKLSAgICBmcC53cml0ZSgiXG4iLmpvaW4oZm9ybWF0KSkKLSAgICBmcC5jbG9zZSgpCisgICAgd2l0aCBmcDoKKyAgICAgICAgZnAud3JpdGUoIlxuIi5qb2luKGZvcm1hdCkpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90b2tlbml6ZS5weSBiL0xpYi90b2tlbml6ZS5weQppbmRleCA0ZDkzYTgzLi45ZmQ2NzZjIDEwMDY0NAotLS0gYS9MaWIvdG9rZW5pemUucHkKKysrIGIvTGliL3Rva2VuaXplLnB5CkBAIC05MSw3ICs5MSw4IEBACiAgICAgJyoqPSc6IERPVUJMRVNUQVJFUVVBTCwKICAgICAnLy8nOiAgRE9VQkxFU0xBU0gsCiAgICAgJy8vPSc6IERPVUJMRVNMQVNIRVFVQUwsCi0gICAgJ0AnOiAgIEFUCisgICAgJ0AnOiAgIEFULAorICAgICdAPSc6ICBBVEVRVUFMLAogfQogCiBjbGFzcyBUb2tlbkluZm8oY29sbGVjdGlvbnMubmFtZWR0dXBsZSgnVG9rZW5JbmZvJywgJ3R5cGUgc3RyaW5nIHN0YXJ0IGVuZCBsaW5lJykpOgpAQCAtMTUwLDcgKzE1MSw3IEBACiAjIHJlY29nbml6ZWQgYXMgdHdvIGluc3RhbmNlcyBvZiA9KS4KIE9wZXJhdG9yID0gZ3JvdXAociJcKlwqPT8iLCByIj4+PT8iLCByIjw8PT8iLCByIiE9IiwKICAgICAgICAgICAgICAgICAgciIvLz0/IiwgciItPiIsCi0gICAgICAgICAgICAgICAgIHIiWytcLSovJSZ8Xj08Pl09PyIsCisgICAgICAgICAgICAgICAgIHIiWytcLSovJSZAfF49PD5dPT8iLAogICAgICAgICAgICAgICAgICByIn4iKQogCiBCcmFja2V0ID0gJ1tdWygpe31dJwpAQCAtMTg2LDcgKzE4Nyw2IEBACiAgICAgICAgICAgICJyQicnJyI6IFNpbmdsZTMsICdyQiIiIic6IERvdWJsZTMsCiAgICAgICAgICAgICJSQicnJyI6IFNpbmdsZTMsICdSQiIiIic6IERvdWJsZTMsCiAgICAgICAgICAgICJ1JycnIjogU2luZ2xlMywgJ3UiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiUicnJyI6IFNpbmdsZTMsICdSIiIiJzogRG91YmxlMywKICAgICAgICAgICAgIlUnJyciOiBTaW5nbGUzLCAnVSIiIic6IERvdWJsZTMsCiAgICAgICAgICAgICdyJzogTm9uZSwgJ1InOiBOb25lLCAnYic6IE5vbmUsICdCJzogTm9uZSwKICAgICAgICAgICAgJ3UnOiBOb25lLCAnVSc6IE5vbmV9CkBAIC0yOTEsNyArMjkxLDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmVuY29kaW5nID0gdG9rdmFsCiAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgaWYgdG9rbnVtIGluIChOQU1FLCBOVU1CRVIpOgorICAgICAgICAgICAgaWYgdG9rbnVtIGluIChOQU1FLCBOVU1CRVIsIEFTWU5DLCBBV0FJVCk6CiAgICAgICAgICAgICAgICAgdG9rdmFsICs9ICcgJwogCiAgICAgICAgICAgICAjIEluc2VydCBhIHNwYWNlIGJldHdlZW4gdHdvIGNvbnNlY3V0aXZlIHN0cmluZ3MKQEAgLTMyOCw4ICszMjgsOCBAQAogICAgIFJvdW5kLXRyaXAgaW52YXJpYW50IGZvciBmdWxsIGlucHV0OgogICAgICAgICBVbnRva2VuaXplZCBzb3VyY2Ugd2lsbCBtYXRjaCBpbnB1dCBzb3VyY2UgZXhhY3RseQogCi0gICAgUm91bmQtdHJpcCBpbnZhcmlhbnQgZm9yIGxpbWl0ZWQgaW50cHV0OgotICAgICAgICAjIE91dHB1dCBieXRlcyB3aWxsIHRva2VuaXplIHRoZSBiYWNrIHRvIHRoZSBpbnB1dAorICAgIFJvdW5kLXRyaXAgaW52YXJpYW50IGZvciBsaW1pdGVkIGlucHV0OgorICAgICAgICAjIE91dHB1dCBieXRlcyB3aWxsIHRva2VuaXplIGJhY2sgdG8gdGhlIGlucHV0CiAgICAgICAgIHQxID0gW3Rva1s6Ml0gZm9yIHRvayBpbiB0b2tlbml6ZShmLnJlYWRsaW5lKV0KICAgICAgICAgbmV3Y29kZSA9IHVudG9rZW5pemUodDEpCiAgICAgICAgIHJlYWRsaW5lID0gQnl0ZXNJTyhuZXdjb2RlKS5yZWFkbGluZQpAQCAtNDY1LDEwICs0NjUsMTAgQEAKIAogZGVmIHRva2VuaXplKHJlYWRsaW5lKToKICAgICAiIiIKLSAgICBUaGUgdG9rZW5pemUoKSBnZW5lcmF0b3IgcmVxdWlyZXMgb25lIGFyZ21lbnQsIHJlYWRsaW5lLCB3aGljaAorICAgIFRoZSB0b2tlbml6ZSgpIGdlbmVyYXRvciByZXF1aXJlcyBvbmUgYXJndW1lbnQsIHJlYWRsaW5lLCB3aGljaAogICAgIG11c3QgYmUgYSBjYWxsYWJsZSBvYmplY3Qgd2hpY2ggcHJvdmlkZXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIHRoZQogICAgIHJlYWRsaW5lKCkgbWV0aG9kIG9mIGJ1aWx0LWluIGZpbGUgb2JqZWN0cy4gIEVhY2ggY2FsbCB0byB0aGUgZnVuY3Rpb24KLSAgICBzaG91bGQgcmV0dXJuIG9uZSBsaW5lIG9mIGlucHV0IGFzIGJ5dGVzLiAgQWx0ZXJuYXRlbHksIHJlYWRsaW5lCisgICAgc2hvdWxkIHJldHVybiBvbmUgbGluZSBvZiBpbnB1dCBhcyBieXRlcy4gIEFsdGVybmF0aXZlbHksIHJlYWRsaW5lCiAgICAgY2FuIGJlIGEgY2FsbGFibGUgZnVuY3Rpb24gdGVybWluYXRpbmcgd2l0aCBTdG9wSXRlcmF0aW9uOgogICAgICAgICByZWFkbGluZSA9IG9wZW4obXlmaWxlLCAncmInKS5fX25leHRfXyAgIyBFeGFtcGxlIG9mIGFsdGVybmF0ZSByZWFkbGluZQogCkBAIC00OTgsNiArNDk4LDEyIEBACiAgICAgY29udGxpbmUgPSBOb25lCiAgICAgaW5kZW50cyA9IFswXQogCisgICAgIyAnc3Rhc2hlZCcgYW5kICdhc3luY18qJyBhcmUgdXNlZCBmb3IgYXN5bmMvYXdhaXQgcGFyc2luZworICAgIHN0YXNoZWQgPSBOb25lCisgICAgYXN5bmNfZGVmID0gRmFsc2UKKyAgICBhc3luY19kZWZfaW5kZW50ID0gMAorICAgIGFzeW5jX2RlZl9ubCA9IEZhbHNlCisKICAgICBpZiBlbmNvZGluZyBpcyBub3QgTm9uZToKICAgICAgICAgaWYgZW5jb2RpbmcgPT0gInV0Zi04LXNpZyI6CiAgICAgICAgICAgICAjIEJPTSB3aWxsIGFscmVhZHkgaGF2ZSBiZWVuIHN0cmlwcGVkLgpAQCAtNTczLDggKzU3OSwxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgInVuaW5kZW50IGRvZXMgbm90IG1hdGNoIGFueSBvdXRlciBpbmRlbnRhdGlvbiBsZXZlbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAoIjx0b2tlbml6ZT4iLCBsbnVtLCBwb3MsIGxpbmUpKQogICAgICAgICAgICAgICAgIGluZGVudHMgPSBpbmRlbnRzWzotMV0KKworICAgICAgICAgICAgICAgIGlmIGFzeW5jX2RlZiBhbmQgYXN5bmNfZGVmX2luZGVudCA+PSBpbmRlbnRzWy0xXToKKyAgICAgICAgICAgICAgICAgICAgYXN5bmNfZGVmID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgYXN5bmNfZGVmX25sID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgYXN5bmNfZGVmX2luZGVudCA9IDAKKwogICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhERURFTlQsICcnLCAobG51bSwgcG9zKSwgKGxudW0sIHBvcyksIGxpbmUpCiAKKyAgICAgICAgICAgIGlmIGFzeW5jX2RlZiBhbmQgYXN5bmNfZGVmX25sIGFuZCBhc3luY19kZWZfaW5kZW50ID49IGluZGVudHNbLTFdOgorICAgICAgICAgICAgICAgIGFzeW5jX2RlZiA9IEZhbHNlCisgICAgICAgICAgICAgICAgYXN5bmNfZGVmX25sID0gRmFsc2UKKyAgICAgICAgICAgICAgICBhc3luY19kZWZfaW5kZW50ID0gMAorCiAgICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY29udGludWVkIHN0YXRlbWVudAogICAgICAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVG9rZW5FcnJvcigiRU9GIGluIG11bHRpLWxpbmUgc3RhdGVtZW50IiwgKGxudW0sIDApKQpAQCAtNTkzLDEwICs2MTAsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgKGluaXRpYWwgPT0gJy4nIGFuZCB0b2tlbiAhPSAnLicgYW5kIHRva2VuICE9ICcuLi4nKSk6CiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhOVU1CRVIsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQogICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCBpbiAnXHJcbic6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhOTCBpZiBwYXJlbmxldiA+IDAgZWxzZSBORVdMSU5FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBpZiBwYXJlbmxldiA+IDA6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oTkwsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKE5FV0xJTkUsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXN5bmNfZGVmOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jX2RlZl9ubCA9IFRydWUKKwogICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCA9PSAnIyc6CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBub3QgdG9rZW4uZW5kc3dpdGgoIlxuIikKKyAgICAgICAgICAgICAgICAgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHN0YXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhDT01NRU5ULCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKICAgICAgICAgICAgICAgICBlbGlmIHRva2VuIGluIHRyaXBsZV9xdW90ZWQ6CiAgICAgICAgICAgICAgICAgICAgIGVuZHByb2cgPSBfY29tcGlsZShlbmRwYXRzW3Rva2VuXSkKQEAgLTYyNCw3ICs2NTIsMzYgQEAKICAgICAgICAgICAgICAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcmRpbmFyeSBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhTVFJJTkcsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQogICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbC5pc2lkZW50aWZpZXIoKTogICAgICAgICAgICAgICAjIG9yZGluYXJ5IG5hbWUKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKE5BTUUsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbiBpbiAoJ2FzeW5jJywgJ2F3YWl0Jyk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBhc3luY19kZWY6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1lOQyBpZiB0b2tlbiA9PSAnYXN5bmMnIGVsc2UgQVdBSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgdG9rID0gVG9rZW5JbmZvKE5BTUUsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbiA9PSAnYXN5bmMnIGFuZCBub3Qgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSB0b2sKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4gPT0gJ2RlZic6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Rhc2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3Rhc2hlZC50eXBlID09IE5BTUUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHN0YXNoZWQuc3RyaW5nID09ICdhc3luYycpOgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmNfZGVmID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jX2RlZl9pbmRlbnQgPSBpbmRlbnRzWy0xXQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKEFTWU5DLCBzdGFzaGVkLnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZC5zdGFydCwgc3Rhc2hlZC5lbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQubGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQorCisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQorCisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRvawogICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCA9PSAnXFwnOiAgICAgICAgICAgICAgICAgICAgICAjIGNvbnRpbnVlZCBzdG10CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlZCA9IDEKICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtNjMyLDEyICs2ODksMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVubGV2ICs9IDEKICAgICAgICAgICAgICAgICAgICAgZWxpZiBpbml0aWFsIGluICcpXX0nOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW5sZXYgLT0gMQorICAgICAgICAgICAgICAgICAgICBpZiBzdGFzaGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgc3Rhc2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZCA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKE9QLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKEVSUk9SVE9LRU4sIGxpbmVbcG9zXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsbnVtLCBwb3MpLCAobG51bSwgcG9zKzEpLCBsaW5lKQogICAgICAgICAgICAgICAgIHBvcyArPSAxCiAKKyAgICBpZiBzdGFzaGVkOgorICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgIHN0YXNoZWQgPSBOb25lCisKICAgICBmb3IgaW5kZW50IGluIGluZGVudHNbMTpdOiAgICAgICAgICAgICAgICAgIyBwb3AgcmVtYWluaW5nIGluZGVudCBsZXZlbHMKICAgICAgICAgeWllbGQgVG9rZW5JbmZvKERFREVOVCwgJycsIChsbnVtLCAwKSwgKGxudW0sIDApLCAnJykKICAgICB5aWVsZCBUb2tlbkluZm8oRU5ETUFSS0VSLCAnJywgKGxudW0sIDApLCAobG51bSwgMCksICcnKQpkaWZmIC0tZ2l0IGEvTGliL3RyYWNlLnB5IGIvTGliL3RyYWNlLnB5CmluZGV4IDA5ZmU5ZWUuLmYxMDgyNjYgMTAwNzU1Ci0tLSBhL0xpYi90cmFjZS5weQorKysgYi9MaWIvdHJhY2UucHkKQEAgLTU5LDEwICs1OSw3IEBACiBpbXBvcnQgZGlzCiBpbXBvcnQgcGlja2xlCiBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuIGFzIF93YXJuCi10cnk6Ci0gICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKK2Zyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCiAKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCkBAIC0yMzUsOCArMjMyLDggQEAKICAgICAgICAgaWYgc2VsZi5pbmZpbGU6CiAgICAgICAgICAgICAjIFRyeSB0byBtZXJnZSBleGlzdGluZyBjb3VudHMgZmlsZS4KICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjb3VudHMsIGNhbGxlZGZ1bmNzLCBjYWxsZXJzID0gXAotICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlLmxvYWQob3BlbihzZWxmLmluZmlsZSwgJ3JiJykpCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYuaW5maWxlLCAncmInKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBjb3VudHMsIGNhbGxlZGZ1bmNzLCBjYWxsZXJzID0gcGlja2xlLmxvYWQoZikKICAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZShzZWxmLl9fY2xhc3NfXyhjb3VudHMsIGNhbGxlZGZ1bmNzLCBjYWxsZXJzKSkKICAgICAgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgRU9GRXJyb3IsIFZhbHVlRXJyb3IpIGFzIGVycjoKICAgICAgICAgICAgICAgICBwcmludCgoIlNraXBwaW5nIGNvdW50cyBmaWxlICVyOiAlcyIKQEAgLTMwOCw3ICszMDUsNyBAQAogICAgICAgICAgICAgaWYgc2VsZi5pc19pZ25vcmVkX2ZpbGVuYW1lKGZpbGVuYW1lKToKICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgoIi5weWMiLCAiLnB5byIpKToKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKCIucHljIik6CiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZVs6LTFdCiAKICAgICAgICAgICAgIGlmIGNvdmVyZGlyIGlzIE5vbmU6CkBAIC0zMjYsMTYgKzMyMywxNyBAQAogICAgICAgICAgICAgICAgIGxub3RhYiA9IF9maW5kX2V4ZWN1dGFibGVfbGluZW5vcyhmaWxlbmFtZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbG5vdGFiID0ge30KKyAgICAgICAgICAgIGlmIGxub3RhYjoKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSBsaW5lY2FjaGUuZ2V0bGluZXMoZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgY292ZXJwYXRoID0gb3MucGF0aC5qb2luKGRpciwgbW9kdWxlbmFtZSArICIuY292ZXIiKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCBfID0gdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKGZwLnJlYWRsaW5lKQorICAgICAgICAgICAgICAgIG5faGl0cywgbl9saW5lcyA9IHNlbGYud3JpdGVfcmVzdWx0c19maWxlKGNvdmVycGF0aCwgc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxub3RhYiwgY291bnQsIGVuY29kaW5nKQorICAgICAgICAgICAgICAgIGlmIHN1bW1hcnkgYW5kIG5fbGluZXM6CisgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQgPSBpbnQoMTAwICogbl9oaXRzIC8gbl9saW5lcykKKyAgICAgICAgICAgICAgICAgICAgc3Vtc1ttb2R1bGVuYW1lXSA9IG5fbGluZXMsIHBlcmNlbnQsIG1vZHVsZW5hbWUsIGZpbGVuYW1lCiAKLSAgICAgICAgICAgIHNvdXJjZSA9IGxpbmVjYWNoZS5nZXRsaW5lcyhmaWxlbmFtZSkKLSAgICAgICAgICAgIGNvdmVycGF0aCA9IG9zLnBhdGguam9pbihkaXIsIG1vZHVsZW5hbWUgKyAiLmNvdmVyIikKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3JiJykgYXMgZnA6Ci0gICAgICAgICAgICAgICAgZW5jb2RpbmcsIF8gPSB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmcoZnAucmVhZGxpbmUpCi0gICAgICAgICAgICBuX2hpdHMsIG5fbGluZXMgPSBzZWxmLndyaXRlX3Jlc3VsdHNfZmlsZShjb3ZlcnBhdGgsIHNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxub3RhYiwgY291bnQsIGVuY29kaW5nKQotICAgICAgICAgICAgaWYgc3VtbWFyeSBhbmQgbl9saW5lczoKLSAgICAgICAgICAgICAgICBwZXJjZW50ID0gaW50KDEwMCAqIG5faGl0cyAvIG5fbGluZXMpCi0gICAgICAgICAgICAgICAgc3Vtc1ttb2R1bGVuYW1lXSA9IG5fbGluZXMsIHBlcmNlbnQsIG1vZHVsZW5hbWUsIGZpbGVuYW1lCiAKICAgICAgICAgaWYgc3VtbWFyeSBhbmQgc3VtczoKICAgICAgICAgICAgIHByaW50KCJsaW5lcyAgIGNvdiUgICBtb2R1bGUgICAocGF0aCkiKQpAQCAtMzYzLDI2ICszNjEsMjYgQEAKIAogICAgICAgICBuX2xpbmVzID0gMAogICAgICAgICBuX2hpdHMgPSAwCi0gICAgICAgIGZvciBsaW5lbm8sIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzLCAxKToKLSAgICAgICAgICAgICMgZG8gdGhlIGJsYW5rL2NvbW1lbnQgbWF0Y2ggdG8gdHJ5IHRvIG1hcmsgbW9yZSBsaW5lcwotICAgICAgICAgICAgIyAoaGVscCB0aGUgcmVhZGVyIGZpbmQgc3R1ZmYgdGhhdCBoYXNuJ3QgYmVlbiBjb3ZlcmVkKQotICAgICAgICAgICAgaWYgbGluZW5vIGluIGxpbmVzX2hpdDoKLSAgICAgICAgICAgICAgICBvdXRmaWxlLndyaXRlKCIlNWQ6ICIgJSBsaW5lc19oaXRbbGluZW5vXSkKLSAgICAgICAgICAgICAgICBuX2hpdHMgKz0gMQotICAgICAgICAgICAgICAgIG5fbGluZXMgKz0gMQotICAgICAgICAgICAgZWxpZiByeF9ibGFuay5tYXRjaChsaW5lKToKLSAgICAgICAgICAgICAgICBvdXRmaWxlLndyaXRlKCIgICAgICAgIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBsaW5lcyBwcmVjZWRlZCBieSBubyBtYXJrcyB3ZXJlbid0IGhpdAotICAgICAgICAgICAgICAgICMgSGlnaGxpZ2h0IHRoZW0gaWYgc28gaW5kaWNhdGVkLCB1bmxlc3MgdGhlIGxpbmUgY29udGFpbnMKLSAgICAgICAgICAgICAgICAjICNwcmFnbWE6IE5PIENPVkVSCi0gICAgICAgICAgICAgICAgaWYgbGluZW5vIGluIGxub3RhYiBhbmQgbm90IFBSQUdNQV9OT0NPVkVSIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGUoIj4+Pj4+PiAiKQorICAgICAgICB3aXRoIG91dGZpbGU6CisgICAgICAgICAgICBmb3IgbGluZW5vLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcywgMSk6CisgICAgICAgICAgICAgICAgIyBkbyB0aGUgYmxhbmsvY29tbWVudCBtYXRjaCB0byB0cnkgdG8gbWFyayBtb3JlIGxpbmVzCisgICAgICAgICAgICAgICAgIyAoaGVscCB0aGUgcmVhZGVyIGZpbmQgc3R1ZmYgdGhhdCBoYXNuJ3QgYmVlbiBjb3ZlcmVkKQorICAgICAgICAgICAgICAgIGlmIGxpbmVubyBpbiBsaW5lc19oaXQ6CisgICAgICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGUoIiU1ZDogIiAlIGxpbmVzX2hpdFtsaW5lbm9dKQorICAgICAgICAgICAgICAgICAgICBuX2hpdHMgKz0gMQogICAgICAgICAgICAgICAgICAgICBuX2xpbmVzICs9IDEKLSAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGVsaWYgcnhfYmxhbmsubWF0Y2gobGluZSk6CiAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGUoIiAgICAgICAiKQotICAgICAgICAgICAgb3V0ZmlsZS53cml0ZShsaW5lLmV4cGFuZHRhYnMoOCkpCi0gICAgICAgIG91dGZpbGUuY2xvc2UoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgbGluZXMgcHJlY2VkZWQgYnkgbm8gbWFya3Mgd2VyZW4ndCBoaXQKKyAgICAgICAgICAgICAgICAgICAgIyBIaWdobGlnaHQgdGhlbSBpZiBzbyBpbmRpY2F0ZWQsIHVubGVzcyB0aGUgbGluZSBjb250YWlucworICAgICAgICAgICAgICAgICAgICAjICNwcmFnbWE6IE5PIENPVkVSCisgICAgICAgICAgICAgICAgICAgIGlmIGxpbmVubyBpbiBsbm90YWIgYW5kIG5vdCBQUkFHTUFfTk9DT1ZFUiBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZmlsZS53cml0ZSgiPj4+Pj4+ICIpCisgICAgICAgICAgICAgICAgICAgICAgICBuX2xpbmVzICs9IDEKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGUoIiAgICAgICAiKQorICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGUobGluZS5leHBhbmR0YWJzKDgpKQogCiAgICAgICAgIHJldHVybiBuX2hpdHMsIG5fbGluZXMKIApkaWZmIC0tZ2l0IGEvTGliL3RyYWNlYmFjay5weSBiL0xpYi90cmFjZWJhY2sucHkKaW5kZXggZmFmNTkzYS4uOWI2OWRhMCAxMDA2NDQKLS0tIGEvTGliL3RyYWNlYmFjay5weQorKysgYi9MaWIvdHJhY2ViYWNrLnB5CkBAIC0xLDMyICsxLDI3IEBACiAiIiJFeHRyYWN0LCBmb3JtYXQgYW5kIHByaW50IGluZm9ybWF0aW9uIGFib3V0IFB5dGhvbiBzdGFjayB0cmFjZXMuIiIiCiAKK2ltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IHN5cwotaW1wb3J0IG9wZXJhdG9yCiAKIF9fYWxsX18gPSBbJ2V4dHJhY3Rfc3RhY2snLCAnZXh0cmFjdF90YicsICdmb3JtYXRfZXhjZXB0aW9uJywKICAgICAgICAgICAgJ2Zvcm1hdF9leGNlcHRpb25fb25seScsICdmb3JtYXRfbGlzdCcsICdmb3JtYXRfc3RhY2snLAogICAgICAgICAgICAnZm9ybWF0X3RiJywgJ3ByaW50X2V4YycsICdmb3JtYXRfZXhjJywgJ3ByaW50X2V4Y2VwdGlvbicsCi0gICAgICAgICAgICdwcmludF9sYXN0JywgJ3ByaW50X3N0YWNrJywgJ3ByaW50X3RiJywKLSAgICAgICAgICAgJ2NsZWFyX2ZyYW1lcyddCisgICAgICAgICAgICdwcmludF9sYXN0JywgJ3ByaW50X3N0YWNrJywgJ3ByaW50X3RiJywgJ2NsZWFyX2ZyYW1lcycsCisgICAgICAgICAgICdGcmFtZVN1bW1hcnknLCAnU3RhY2tTdW1tYXJ5JywgJ1RyYWNlYmFja0V4Y2VwdGlvbicsCisgICAgICAgICAgICd3YWxrX3N0YWNrJywgJ3dhbGtfdGInXQogCiAjCiAjIEZvcm1hdHRpbmcgYW5kIHByaW50aW5nIGxpc3RzIG9mIHRyYWNlYmFjayBsaW5lcy4KICMKIAotZGVmIF9mb3JtYXRfbGlzdF9pdGVyKGV4dHJhY3RlZF9saXN0KToKLSAgICBmb3IgZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbGluZSBpbiBleHRyYWN0ZWRfbGlzdDoKLSAgICAgICAgaXRlbSA9ICcgIEZpbGUgInt9IiwgbGluZSB7fSwgaW4ge31cbicuZm9ybWF0KGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUpCi0gICAgICAgIGlmIGxpbmU6Ci0gICAgICAgICAgICBpdGVtID0gaXRlbSArICcgICAge31cbicuZm9ybWF0KGxpbmUuc3RyaXAoKSkKLSAgICAgICAgeWllbGQgaXRlbQotCiBkZWYgcHJpbnRfbGlzdChleHRyYWN0ZWRfbGlzdCwgZmlsZT1Ob25lKToKICAgICAiIiJQcmludCB0aGUgbGlzdCBvZiB0dXBsZXMgYXMgcmV0dXJuZWQgYnkgZXh0cmFjdF90YigpIG9yCiAgICAgZXh0cmFjdF9zdGFjaygpIGFzIGEgZm9ybWF0dGVkIHN0YWNrIHRyYWNlIHRvIHRoZSBnaXZlbiBmaWxlLiIiIgogICAgIGlmIGZpbGUgaXMgTm9uZToKICAgICAgICAgZmlsZSA9IHN5cy5zdGRlcnIKLSAgICBmb3IgaXRlbSBpbiBfZm9ybWF0X2xpc3RfaXRlcihleHRyYWN0ZWRfbGlzdCk6CisgICAgZm9yIGl0ZW0gaW4gU3RhY2tTdW1tYXJ5LmZyb21fbGlzdChleHRyYWN0ZWRfbGlzdCkuZm9ybWF0KCk6CiAgICAgICAgIHByaW50KGl0ZW0sIGZpbGU9ZmlsZSwgZW5kPSIiKQogCiBkZWYgZm9ybWF0X2xpc3QoZXh0cmFjdGVkX2xpc3QpOgpAQCAtMzksNDUgKzM0LDEyIEBACiAgICAgdGhlIHN0cmluZ3MgbWF5IGNvbnRhaW4gaW50ZXJuYWwgbmV3bGluZXMgYXMgd2VsbCwgZm9yIHRob3NlIGl0ZW1zCiAgICAgd2hvc2Ugc291cmNlIHRleHQgbGluZSBpcyBub3QgTm9uZS4KICAgICAiIiIKLSAgICByZXR1cm4gbGlzdChfZm9ybWF0X2xpc3RfaXRlcihleHRyYWN0ZWRfbGlzdCkpCisgICAgcmV0dXJuIFN0YWNrU3VtbWFyeS5mcm9tX2xpc3QoZXh0cmFjdGVkX2xpc3QpLmZvcm1hdCgpCiAKICMKICMgUHJpbnRpbmcgYW5kIEV4dHJhY3RpbmcgVHJhY2ViYWNrcy4KICMKIAotIyBleHRyYWN0b3IgdGFrZXMgY3VyciBhbmQgbmVlZHMgdG8gcmV0dXJuIGEgdHVwbGUgb2Y6Ci0jIC0gRnJhbWUgb2JqZWN0Ci0jIC0gTGluZSBudW1iZXIKLSMgLSBOZXh0IGl0ZW0gKHNhbWUgdHlwZSBhcyBjdXJyKQotIyBJbiBwcmFjdGljZSwgY3VyciBpcyBlaXRoZXIgYSB0cmFjZWJhY2sgb3IgYSBmcmFtZS4KLWRlZiBfZXh0cmFjdF90Yl9vcl9zdGFja19pdGVyKGN1cnIsIGxpbWl0LCBleHRyYWN0b3IpOgotICAgIGlmIGxpbWl0IGlzIE5vbmU6Ci0gICAgICAgIGxpbWl0ID0gZ2V0YXR0cihzeXMsICd0cmFjZWJhY2tsaW1pdCcsIE5vbmUpCi0KLSAgICBuID0gMAotICAgIHdoaWxlIGN1cnIgaXMgbm90IE5vbmUgYW5kIChsaW1pdCBpcyBOb25lIG9yIG4gPCBsaW1pdCk6Ci0gICAgICAgIGYsIGxpbmVubywgbmV4dF9pdGVtID0gZXh0cmFjdG9yKGN1cnIpCi0gICAgICAgIGNvID0gZi5mX2NvZGUKLSAgICAgICAgZmlsZW5hbWUgPSBjby5jb19maWxlbmFtZQotICAgICAgICBuYW1lID0gY28uY29fbmFtZQotCi0gICAgICAgIGxpbmVjYWNoZS5jaGVja2NhY2hlKGZpbGVuYW1lKQotICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubywgZi5mX2dsb2JhbHMpCi0KLSAgICAgICAgaWYgbGluZToKLSAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxpbmUgPSBOb25lCi0KLSAgICAgICAgeWllbGQgKGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmUpCi0gICAgICAgIGN1cnIgPSBuZXh0X2l0ZW0KLSAgICAgICAgbiArPSAxCi0KLWRlZiBfZXh0cmFjdF90Yl9pdGVyKHRiLCBsaW1pdCk6Ci0gICAgcmV0dXJuIF9leHRyYWN0X3RiX29yX3N0YWNrX2l0ZXIoCi0gICAgICAgICAgICAgICAgdGIsIGxpbWl0LAotICAgICAgICAgICAgICAgIG9wZXJhdG9yLmF0dHJnZXR0ZXIoInRiX2ZyYW1lIiwgInRiX2xpbmVubyIsICJ0Yl9uZXh0IikpCi0KIGRlZiBwcmludF90Yih0YiwgbGltaXQ9Tm9uZSwgZmlsZT1Ob25lKToKICAgICAiIiJQcmludCB1cCB0byAnbGltaXQnIHN0YWNrIHRyYWNlIGVudHJpZXMgZnJvbSB0aGUgdHJhY2ViYWNrICd0YicuCiAKQEAgLTkwLDcgKzUyLDcgQEAKIAogZGVmIGZvcm1hdF90Yih0YiwgbGltaXQ9Tm9uZSk6CiAgICAgIiIiQSBzaG9ydGhhbmQgZm9yICdmb3JtYXRfbGlzdChleHRyYWN0X3RiKHRiLCBsaW1pdCkpJy4iIiIKLSAgICByZXR1cm4gZm9ybWF0X2xpc3QoZXh0cmFjdF90Yih0YiwgbGltaXQ9bGltaXQpKQorICAgIHJldHVybiBleHRyYWN0X3RiKHRiLCBsaW1pdD1saW1pdCkuZm9ybWF0KCkKIAogZGVmIGV4dHJhY3RfdGIodGIsIGxpbWl0PU5vbmUpOgogICAgICIiIlJldHVybiBsaXN0IG9mIHVwIHRvIGxpbWl0IHByZS1wcm9jZXNzZWQgZW50cmllcyBmcm9tIHRyYWNlYmFjay4KQEAgLTEwMyw3ICs2NSw3IEBACiAgICAgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBzdHJpcHBlZDsgaWYgdGhlIHNvdXJjZSBpcyBub3QKICAgICBhdmFpbGFibGUgaXQgaXMgTm9uZS4KICAgICAiIiIKLSAgICByZXR1cm4gbGlzdChfZXh0cmFjdF90Yl9pdGVyKHRiLCBsaW1pdD1saW1pdCkpCisgICAgcmV0dXJuIFN0YWNrU3VtbWFyeS5leHRyYWN0KHdhbGtfdGIodGIpLCBsaW1pdD1saW1pdCkKIAogIwogIyBFeGNlcHRpb24gZm9ybWF0dGluZyBhbmQgb3V0cHV0LgpAQCAtMTExLDQ3ICs3MywxMiBAQAogCiBfY2F1c2VfbWVzc2FnZSA9ICgKICAgICAiXG5UaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlICIKLSAgICAib2YgdGhlIGZvbGxvd2luZyBleGNlcHRpb246XG4iKQorICAgICJvZiB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjpcblxuIikKIAogX2NvbnRleHRfbWVzc2FnZSA9ICgKICAgICAiXG5EdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgIgotICAgICJhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDpcbiIpCisgICAgImFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOlxuXG4iKQogCi1kZWYgX2l0ZXJfY2hhaW4oZXhjLCBjdXN0b21fdGI9Tm9uZSwgc2Vlbj1Ob25lKToKLSAgICBpZiBzZWVuIGlzIE5vbmU6Ci0gICAgICAgIHNlZW4gPSBzZXQoKQotICAgIHNlZW4uYWRkKGV4YykKLSAgICBpdHMgPSBbXQotICAgIGNvbnRleHQgPSBleGMuX19jb250ZXh0X18KLSAgICBjYXVzZSA9IGV4Yy5fX2NhdXNlX18KLSAgICBpZiBjYXVzZSBpcyBub3QgTm9uZSBhbmQgY2F1c2Ugbm90IGluIHNlZW46Ci0gICAgICAgIGl0cy5hcHBlbmQoX2l0ZXJfY2hhaW4oY2F1c2UsIEZhbHNlLCBzZWVuKSkKLSAgICAgICAgaXRzLmFwcGVuZChbKF9jYXVzZV9tZXNzYWdlLCBOb25lKV0pCi0gICAgZWxpZiAoY29udGV4dCBpcyBub3QgTm9uZSBhbmQKLSAgICAgICAgICBub3QgZXhjLl9fc3VwcHJlc3NfY29udGV4dF9fIGFuZAotICAgICAgICAgIGNvbnRleHQgbm90IGluIHNlZW4pOgotICAgICAgICBpdHMuYXBwZW5kKF9pdGVyX2NoYWluKGNvbnRleHQsIE5vbmUsIHNlZW4pKQotICAgICAgICBpdHMuYXBwZW5kKFsoX2NvbnRleHRfbWVzc2FnZSwgTm9uZSldKQotICAgIGl0cy5hcHBlbmQoWyhleGMsIGN1c3RvbV90YiBvciBleGMuX190cmFjZWJhY2tfXyldKQotICAgICMgaXRlcnRvb2xzLmNoYWluIGlzIGluIGFuIGV4dGVuc2lvbiBtb2R1bGUgYW5kIG1heSBiZSB1bmF2YWlsYWJsZQotICAgIGZvciBpdCBpbiBpdHM6Ci0gICAgICAgIHlpZWxkIGZyb20gaXQKLQotZGVmIF9mb3JtYXRfZXhjZXB0aW9uX2l0ZXIoZXR5cGUsIHZhbHVlLCB0YiwgbGltaXQsIGNoYWluKToKLSAgICBpZiBjaGFpbjoKLSAgICAgICAgdmFsdWVzID0gX2l0ZXJfY2hhaW4odmFsdWUsIHRiKQotICAgIGVsc2U6Ci0gICAgICAgIHZhbHVlcyA9IFsodmFsdWUsIHRiKV0KLQotICAgIGZvciB2YWx1ZSwgdGIgaW4gdmFsdWVzOgotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgotICAgICAgICAgICAgIyBUaGlzIGlzIGEgY2F1c2UvY29udGV4dCBtZXNzYWdlIGxpbmUKLSAgICAgICAgICAgIHlpZWxkIHZhbHVlICsgJ1xuJwotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgdGI6Ci0gICAgICAgICAgICB5aWVsZCAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJwotICAgICAgICAgICAgeWllbGQgZnJvbSBfZm9ybWF0X2xpc3RfaXRlcihfZXh0cmFjdF90Yl9pdGVyKHRiLCBsaW1pdD1saW1pdCkpCi0gICAgICAgIHlpZWxkIGZyb20gX2Zvcm1hdF9leGNlcHRpb25fb25seV9pdGVyKHR5cGUodmFsdWUpLCB2YWx1ZSkKIAogZGVmIHByaW50X2V4Y2VwdGlvbihldHlwZSwgdmFsdWUsIHRiLCBsaW1pdD1Ob25lLCBmaWxlPU5vbmUsIGNoYWluPVRydWUpOgogICAgICIiIlByaW50IGV4Y2VwdGlvbiB1cCB0byAnbGltaXQnIHN0YWNrIHRyYWNlIGVudHJpZXMgZnJvbSAndGInIHRvICdmaWxlJy4KQEAgLTE2NCwxMSArOTEsMTYgQEAKICAgICBvY2N1cnJlZCB3aXRoIGEgY2FyZXQgb24gdGhlIG5leHQgbGluZSBpbmRpY2F0aW5nIHRoZSBhcHByb3hpbWF0ZQogICAgIHBvc2l0aW9uIG9mIHRoZSBlcnJvci4KICAgICAiIiIKKyAgICAjIGZvcm1hdF9leGNlcHRpb24gaGFzIGlnbm9yZWQgZXR5cGUgZm9yIHNvbWUgdGltZSwgYW5kIGNvZGUgc3VjaCBhcyBjZ2l0YgorICAgICMgcGFzc2VzIGluIGJvZ3VzIHZhbHVlcyBhcyBhIHJlc3VsdC4gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBzdWNoIGNvZGUgd2UKKyAgICAjIGlnbm9yZSBpdCBoZXJlIChyYXRoZXIgdGhhbiBpbiB0aGUgbmV3IFRyYWNlYmFja0V4Y2VwdGlvbiBBUEkpLgogICAgIGlmIGZpbGUgaXMgTm9uZToKICAgICAgICAgZmlsZSA9IHN5cy5zdGRlcnIKLSAgICBmb3IgbGluZSBpbiBfZm9ybWF0X2V4Y2VwdGlvbl9pdGVyKGV0eXBlLCB2YWx1ZSwgdGIsIGxpbWl0LCBjaGFpbik6CisgICAgZm9yIGxpbmUgaW4gVHJhY2ViYWNrRXhjZXB0aW9uKAorICAgICAgICAgICAgdHlwZSh2YWx1ZSksIHZhbHVlLCB0YiwgbGltaXQ9bGltaXQpLmZvcm1hdChjaGFpbj1jaGFpbik6CiAgICAgICAgIHByaW50KGxpbmUsIGZpbGU9ZmlsZSwgZW5kPSIiKQogCisKIGRlZiBmb3JtYXRfZXhjZXB0aW9uKGV0eXBlLCB2YWx1ZSwgdGIsIGxpbWl0PU5vbmUsIGNoYWluPVRydWUpOgogICAgICIiIkZvcm1hdCBhIHN0YWNrIHRyYWNlIGFuZCB0aGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uLgogCkBAIC0xNzgsNyArMTEwLDEyIEBACiAgICAgdGhlc2UgbGluZXMgYXJlIGNvbmNhdGVuYXRlZCBhbmQgcHJpbnRlZCwgZXhhY3RseSB0aGUgc2FtZSB0ZXh0IGlzCiAgICAgcHJpbnRlZCBhcyBkb2VzIHByaW50X2V4Y2VwdGlvbigpLgogICAgICIiIgotICAgIHJldHVybiBsaXN0KF9mb3JtYXRfZXhjZXB0aW9uX2l0ZXIoZXR5cGUsIHZhbHVlLCB0YiwgbGltaXQsIGNoYWluKSkKKyAgICAjIGZvcm1hdF9leGNlcHRpb24gaGFzIGlnbm9yZWQgZXR5cGUgZm9yIHNvbWUgdGltZSwgYW5kIGNvZGUgc3VjaCBhcyBjZ2l0YgorICAgICMgcGFzc2VzIGluIGJvZ3VzIHZhbHVlcyBhcyBhIHJlc3VsdC4gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBzdWNoIGNvZGUgd2UKKyAgICAjIGlnbm9yZSBpdCBoZXJlIChyYXRoZXIgdGhhbiBpbiB0aGUgbmV3IFRyYWNlYmFja0V4Y2VwdGlvbiBBUEkpLgorICAgIHJldHVybiBsaXN0KFRyYWNlYmFja0V4Y2VwdGlvbigKKyAgICAgICAgdHlwZSh2YWx1ZSksIHZhbHVlLCB0YiwgbGltaXQ9bGltaXQpLmZvcm1hdChjaGFpbj1jaGFpbikpCisKIAogZGVmIGZvcm1hdF9leGNlcHRpb25fb25seShldHlwZSwgdmFsdWUpOgogICAgICIiIkZvcm1hdCB0aGUgZXhjZXB0aW9uIHBhcnQgb2YgYSB0cmFjZWJhY2suCkBAIC0xOTYsNDYgKzEzMywxNCBAQAogICAgIHN0cmluZyBpbiB0aGUgbGlzdC4KIAogICAgICIiIgotICAgIHJldHVybiBsaXN0KF9mb3JtYXRfZXhjZXB0aW9uX29ubHlfaXRlcihldHlwZSwgdmFsdWUpKQorICAgIHJldHVybiBsaXN0KFRyYWNlYmFja0V4Y2VwdGlvbihldHlwZSwgdmFsdWUsIE5vbmUpLmZvcm1hdF9leGNlcHRpb25fb25seSgpKQogCi1kZWYgX2Zvcm1hdF9leGNlcHRpb25fb25seV9pdGVyKGV0eXBlLCB2YWx1ZSk6Ci0gICAgIyBHcmFjZWZ1bGx5IGhhbmRsZSAodGhlIHdheSBQeXRob24gMi40IGFuZCBlYXJsaWVyIGRpZCkgdGhlIGNhc2Ugb2YKLSAgICAjIGJlaW5nIGNhbGxlZCB3aXRoIChOb25lLCBOb25lKS4KLSAgICBpZiBldHlwZSBpcyBOb25lOgotICAgICAgICB5aWVsZCBfZm9ybWF0X2ZpbmFsX2V4Y19saW5lKGV0eXBlLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuCiAKLSAgICBzdHlwZSA9IGV0eXBlLl9fbmFtZV9fCi0gICAgc21vZCA9IGV0eXBlLl9fbW9kdWxlX18KLSAgICBpZiBzbW9kIG5vdCBpbiAoIl9fbWFpbl9fIiwgImJ1aWx0aW5zIik6Ci0gICAgICAgIHN0eXBlID0gc21vZCArICcuJyArIHN0eXBlCi0KLSAgICBpZiBub3QgaXNzdWJjbGFzcyhldHlwZSwgU3ludGF4RXJyb3IpOgotICAgICAgICB5aWVsZCBfZm9ybWF0X2ZpbmFsX2V4Y19saW5lKHN0eXBlLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuCi0KLSAgICAjIEl0IHdhcyBhIHN5bnRheCBlcnJvcjsgc2hvdyBleGFjdGx5IHdoZXJlIHRoZSBwcm9ibGVtIHdhcyBmb3VuZC4KLSAgICBmaWxlbmFtZSA9IHZhbHVlLmZpbGVuYW1lIG9yICI8c3RyaW5nPiIKLSAgICBsaW5lbm8gPSBzdHIodmFsdWUubGluZW5vKSBvciAnPycKLSAgICB5aWVsZCAnICBGaWxlICJ7fSIsIGxpbmUge31cbicuZm9ybWF0KGZpbGVuYW1lLCBsaW5lbm8pCi0KLSAgICBiYWRsaW5lID0gdmFsdWUudGV4dAotICAgIG9mZnNldCA9IHZhbHVlLm9mZnNldAotICAgIGlmIGJhZGxpbmUgaXMgbm90IE5vbmU6Ci0gICAgICAgIHlpZWxkICcgICAge31cbicuZm9ybWF0KGJhZGxpbmUuc3RyaXAoKSkKLSAgICAgICAgaWYgb2Zmc2V0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgY2FyZXRzcGFjZSA9IGJhZGxpbmUucnN0cmlwKCdcbicpCi0gICAgICAgICAgICBvZmZzZXQgPSBtaW4obGVuKGNhcmV0c3BhY2UpLCBvZmZzZXQpIC0gMQotICAgICAgICAgICAgY2FyZXRzcGFjZSA9IGNhcmV0c3BhY2VbOm9mZnNldF0ubHN0cmlwKCkKLSAgICAgICAgICAgICMgbm9uLXNwYWNlIHdoaXRlc3BhY2UgKGxpa2VzIHRhYnMpIG11c3QgYmUga2VwdCBmb3IgYWxpZ25tZW50Ci0gICAgICAgICAgICBjYXJldHNwYWNlID0gKChjLmlzc3BhY2UoKSBhbmQgYyBvciAnICcpIGZvciBjIGluIGNhcmV0c3BhY2UpCi0gICAgICAgICAgICB5aWVsZCAnICAgIHt9XlxuJy5mb3JtYXQoJycuam9pbihjYXJldHNwYWNlKSkKLSAgICBtc2cgPSB2YWx1ZS5tc2cgb3IgIjxubyBkZXRhaWwgYXZhaWxhYmxlPiIKLSAgICB5aWVsZCAie306IHt9XG4iLmZvcm1hdChzdHlwZSwgbXNnKQorIyAtLSBub3Qgb2ZmaWNhbCBBUEkgYnV0IGZvbGsgcHJvYmFibHkgdXNlIHRoZXNlIHR3byBmdW5jdGlvbnMuCiAKIGRlZiBfZm9ybWF0X2ZpbmFsX2V4Y19saW5lKGV0eXBlLCB2YWx1ZSk6CiAgICAgdmFsdWVzdHIgPSBfc29tZV9zdHIodmFsdWUpCi0gICAgaWYgdmFsdWUgaXMgTm9uZSBvciBub3QgdmFsdWVzdHI6CisgICAgaWYgdmFsdWUgPT0gJ05vbmUnIG9yIHZhbHVlIGlzIE5vbmUgb3Igbm90IHZhbHVlc3RyOgogICAgICAgICBsaW5lID0gIiVzXG4iICUgZXR5cGUKICAgICBlbHNlOgogICAgICAgICBsaW5lID0gIiVzOiAlc1xuIiAlIChldHlwZSwgdmFsdWVzdHIpCkBAIC0yNDcsNiArMTUyLDggQEAKICAgICBleGNlcHQ6CiAgICAgICAgIHJldHVybiAnPHVucHJpbnRhYmxlICVzIG9iamVjdD4nICUgdHlwZSh2YWx1ZSkuX19uYW1lX18KIAorIyAtLQorCiBkZWYgcHJpbnRfZXhjKGxpbWl0PU5vbmUsIGZpbGU9Tm9uZSwgY2hhaW49VHJ1ZSk6CiAgICAgIiIiU2hvcnRoYW5kIGZvciAncHJpbnRfZXhjZXB0aW9uKCpzeXMuZXhjX2luZm8oKSwgbGltaXQsIGZpbGUpJy4iIiIKICAgICBwcmludF9leGNlcHRpb24oKnN5cy5leGNfaW5mbygpLCBsaW1pdD1saW1pdCwgZmlsZT1maWxlLCBjaGFpbj1jaGFpbikKQEAgLTI2NywxNSArMTc0LDYgQEAKICMgUHJpbnRpbmcgYW5kIEV4dHJhY3RpbmcgU3RhY2tzLgogIwogCi1kZWYgX2V4dHJhY3Rfc3RhY2tfaXRlcihmLCBsaW1pdD1Ob25lKToKLSAgICByZXR1cm4gX2V4dHJhY3RfdGJfb3Jfc3RhY2tfaXRlcigKLSAgICAgICAgICAgICAgICBmLCBsaW1pdCwgbGFtYmRhIGY6IChmLCBmLmZfbGluZW5vLCBmLmZfYmFjaykpCi0KLWRlZiBfZ2V0X3N0YWNrKGYpOgotICAgIGlmIGYgaXMgTm9uZToKLSAgICAgICAgZiA9IHN5cy5fZ2V0ZnJhbWUoKS5mX2JhY2suZl9iYWNrCi0gICAgcmV0dXJuIGYKLQogZGVmIHByaW50X3N0YWNrKGY9Tm9uZSwgbGltaXQ9Tm9uZSwgZmlsZT1Ob25lKToKICAgICAiIiJQcmludCBhIHN0YWNrIHRyYWNlIGZyb20gaXRzIGludm9jYXRpb24gcG9pbnQuCiAKQEAgLTI4MywxMSArMTgxLDE3IEBACiAgICAgc3RhY2sgZnJhbWUgYXQgd2hpY2ggdG8gc3RhcnQuIFRoZSBvcHRpb25hbCAnbGltaXQnIGFuZCAnZmlsZScKICAgICBhcmd1bWVudHMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvciBwcmludF9leGNlcHRpb24oKS4KICAgICAiIiIKLSAgICBwcmludF9saXN0KGV4dHJhY3Rfc3RhY2soX2dldF9zdGFjayhmKSwgbGltaXQ9bGltaXQpLCBmaWxlPWZpbGUpCisgICAgaWYgZiBpcyBOb25lOgorICAgICAgICBmID0gc3lzLl9nZXRmcmFtZSgpLmZfYmFjaworICAgIHByaW50X2xpc3QoZXh0cmFjdF9zdGFjayhmLCBsaW1pdD1saW1pdCksIGZpbGU9ZmlsZSkKKwogCiBkZWYgZm9ybWF0X3N0YWNrKGY9Tm9uZSwgbGltaXQ9Tm9uZSk6CiAgICAgIiIiU2hvcnRoYW5kIGZvciAnZm9ybWF0X2xpc3QoZXh0cmFjdF9zdGFjayhmLCBsaW1pdCkpJy4iIiIKLSAgICByZXR1cm4gZm9ybWF0X2xpc3QoZXh0cmFjdF9zdGFjayhfZ2V0X3N0YWNrKGYpLCBsaW1pdD1saW1pdCkpCisgICAgaWYgZiBpcyBOb25lOgorICAgICAgICBmID0gc3lzLl9nZXRmcmFtZSgpLmZfYmFjaworICAgIHJldHVybiBmb3JtYXRfbGlzdChleHRyYWN0X3N0YWNrKGYsIGxpbWl0PWxpbWl0KSkKKwogCiBkZWYgZXh0cmFjdF9zdGFjayhmPU5vbmUsIGxpbWl0PU5vbmUpOgogICAgICIiIkV4dHJhY3QgdGhlIHJhdyB0cmFjZWJhY2sgZnJvbSB0aGUgY3VycmVudCBzdGFjayBmcmFtZS4KQEAgLTI5OCwxMCArMjAyLDEzIEBACiAgICAgbGluZSBudW1iZXIsIGZ1bmN0aW9uIG5hbWUsIHRleHQpLCBhbmQgdGhlIGVudHJpZXMgYXJlIGluIG9yZGVyCiAgICAgZnJvbSBvbGRlc3QgdG8gbmV3ZXN0IHN0YWNrIGZyYW1lLgogICAgICIiIgotICAgIHN0YWNrID0gbGlzdChfZXh0cmFjdF9zdGFja19pdGVyKF9nZXRfc3RhY2soZiksIGxpbWl0PWxpbWl0KSkKKyAgICBpZiBmIGlzIE5vbmU6CisgICAgICAgIGYgPSBzeXMuX2dldGZyYW1lKCkuZl9iYWNrCisgICAgc3RhY2sgPSBTdGFja1N1bW1hcnkuZXh0cmFjdCh3YWxrX3N0YWNrKGYpLCBsaW1pdD1saW1pdCkKICAgICBzdGFjay5yZXZlcnNlKCkKICAgICByZXR1cm4gc3RhY2sKIAorCiBkZWYgY2xlYXJfZnJhbWVzKHRiKToKICAgICAiQ2xlYXIgYWxsIHJlZmVyZW5jZXMgdG8gbG9jYWwgdmFyaWFibGVzIGluIHRoZSBmcmFtZXMgb2YgYSB0cmFjZWJhY2suIgogICAgIHdoaWxlIHRiIGlzIG5vdCBOb25lOgpAQCAtMzExLDMgKzIxOCwzNjEgQEAKICAgICAgICAgICAgICMgSWdub3JlIHRoZSBleGNlcHRpb24gcmFpc2VkIGlmIHRoZSBmcmFtZSBpcyBzdGlsbCBleGVjdXRpbmcuCiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHRiID0gdGIudGJfbmV4dAorCisKK2NsYXNzIEZyYW1lU3VtbWFyeToKKyAgICAiIiJBIHNpbmdsZSBmcmFtZSBmcm9tIGEgdHJhY2ViYWNrLgorCisgICAgLSA6YXR0cjpgZmlsZW5hbWVgIFRoZSBmaWxlbmFtZSBmb3IgdGhlIGZyYW1lLgorICAgIC0gOmF0dHI6YGxpbmVub2AgVGhlIGxpbmUgd2l0aGluIGZpbGVuYW1lIGZvciB0aGUgZnJhbWUgdGhhdCB3YXMKKyAgICAgIGFjdGl2ZSB3aGVuIHRoZSBmcmFtZSB3YXMgY2FwdHVyZWQuCisgICAgLSA6YXR0cjpgbmFtZWAgVGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIG9yIG1ldGhvZCB0aGF0IHdhcyBleGVjdXRpbmcKKyAgICAgIHdoZW4gdGhlIGZyYW1lIHdhcyBjYXB0dXJlZC4KKyAgICAtIDphdHRyOmBsaW5lYCBUaGUgdGV4dCBmcm9tIHRoZSBsaW5lY2FjaGUgbW9kdWxlIGZvciB0aGUKKyAgICAgIG9mIGNvZGUgdGhhdCB3YXMgcnVubmluZyB3aGVuIHRoZSBmcmFtZSB3YXMgY2FwdHVyZWQuCisgICAgLSA6YXR0cjpgbG9jYWxzYCBFaXRoZXIgTm9uZSBpZiBsb2NhbHMgd2VyZSBub3Qgc3VwcGxpZWQsIG9yIGEgZGljdAorICAgICAgbWFwcGluZyB0aGUgbmFtZSB0byB0aGUgcmVwcigpIG9mIHRoZSB2YXJpYWJsZS4KKyAgICAiIiIKKworICAgIF9fc2xvdHNfXyA9ICgnZmlsZW5hbWUnLCAnbGluZW5vJywgJ25hbWUnLCAnX2xpbmUnLCAnbG9jYWxzJykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbGluZW5vLCBuYW1lLCAqLCBsb29rdXBfbGluZT1UcnVlLAorICAgICAgICAgICAgbG9jYWxzPU5vbmUsIGxpbmU9Tm9uZSk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhIEZyYW1lU3VtbWFyeS4KKworICAgICAgICA6cGFyYW0gbG9va3VwX2xpbmU6IElmIFRydWUsIGBsaW5lY2FjaGVgIGlzIGNvbnN1bHRlZCBmb3IgdGhlIHNvdXJjZQorICAgICAgICAgICAgY29kZSBsaW5lLiBPdGhlcndpc2UsIHRoZSBsaW5lIHdpbGwgYmUgbG9va2VkIHVwIHdoZW4gZmlyc3QgbmVlZGVkLgorICAgICAgICA6cGFyYW0gbG9jYWxzOiBJZiBzdXBwbGllZCB0aGUgZnJhbWUgbG9jYWxzLCB3aGljaCB3aWxsIGJlIGNhcHR1cmVkIGFzCisgICAgICAgICAgICBvYmplY3QgcmVwcmVzZW50YXRpb25zLgorICAgICAgICA6cGFyYW0gbGluZTogSWYgcHJvdmlkZWQsIHVzZSB0aGlzIGluc3RlYWQgb2YgbG9va2luZyB1cCB0aGUgbGluZSBpbgorICAgICAgICAgICAgdGhlIGxpbmVjYWNoZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQorICAgICAgICBzZWxmLmxpbmVubyA9IGxpbmVubworICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYuX2xpbmUgPSBsaW5lCisgICAgICAgIGlmIGxvb2t1cF9saW5lOgorICAgICAgICAgICAgc2VsZi5saW5lCisgICAgICAgIHNlbGYubG9jYWxzID0gXAorICAgICAgICAgICAgZGljdCgoaywgcmVwcih2KSkgZm9yIGssIHYgaW4gbG9jYWxzLml0ZW1zKCkpIGlmIGxvY2FscyBlbHNlIE5vbmUKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBGcmFtZVN1bW1hcnkpOgorICAgICAgICAgICAgcmV0dXJuIChzZWxmLmZpbGVuYW1lID09IG90aGVyLmZpbGVuYW1lIGFuZAorICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyA9PSBvdGhlci5saW5lbm8gYW5kCisgICAgICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9PSBvdGhlci5uYW1lIGFuZAorICAgICAgICAgICAgICAgICAgICBzZWxmLmxvY2FscyA9PSBvdGhlci5sb2NhbHMpCisgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHR1cGxlKToKKyAgICAgICAgICAgIHJldHVybiAoc2VsZi5maWxlbmFtZSwgc2VsZi5saW5lbm8sIHNlbGYubmFtZSwgc2VsZi5saW5lKSA9PSBvdGhlcgorICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBwb3MpOgorICAgICAgICByZXR1cm4gKHNlbGYuZmlsZW5hbWUsIHNlbGYubGluZW5vLCBzZWxmLm5hbWUsIHNlbGYubGluZSlbcG9zXQorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaXRlcihbc2VsZi5maWxlbmFtZSwgc2VsZi5saW5lbm8sIHNlbGYubmFtZSwgc2VsZi5saW5lXSkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICI8RnJhbWVTdW1tYXJ5IGZpbGUge2ZpbGVuYW1lfSwgbGluZSB7bGluZW5vfSBpbiB7bmFtZX0+Ii5mb3JtYXQoCisgICAgICAgICAgICBmaWxlbmFtZT1zZWxmLmZpbGVuYW1lLCBsaW5lbm89c2VsZi5saW5lbm8sIG5hbWU9c2VsZi5uYW1lKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxpbmUoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2xpbmUgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShzZWxmLmZpbGVuYW1lLCBzZWxmLmxpbmVubykuc3RyaXAoKQorICAgICAgICByZXR1cm4gc2VsZi5fbGluZQorCisKK2RlZiB3YWxrX3N0YWNrKGYpOgorICAgICIiIldhbGsgYSBzdGFjayB5aWVsZGluZyB0aGUgZnJhbWUgYW5kIGxpbmUgbnVtYmVyIGZvciBlYWNoIGZyYW1lLgorCisgICAgVGhpcyB3aWxsIGZvbGxvdyBmLmZfYmFjayBmcm9tIHRoZSBnaXZlbiBmcmFtZS4gSWYgbm8gZnJhbWUgaXMgZ2l2ZW4sIHRoZQorICAgIGN1cnJlbnQgc3RhY2sgaXMgdXNlZC4gVXN1YWxseSB1c2VkIHdpdGggU3RhY2tTdW1tYXJ5LmV4dHJhY3QuCisgICAgIiIiCisgICAgaWYgZiBpcyBOb25lOgorICAgICAgICBmID0gc3lzLl9nZXRmcmFtZSgpLmZfYmFjay5mX2JhY2sKKyAgICB3aGlsZSBmIGlzIG5vdCBOb25lOgorICAgICAgICB5aWVsZCBmLCBmLmZfbGluZW5vCisgICAgICAgIGYgPSBmLmZfYmFjaworCisKK2RlZiB3YWxrX3RiKHRiKToKKyAgICAiIiJXYWxrIGEgdHJhY2ViYWNrIHlpZWxkaW5nIHRoZSBmcmFtZSBhbmQgbGluZSBudW1iZXIgZm9yIGVhY2ggZnJhbWUuCisKKyAgICBUaGlzIHdpbGwgZm9sbG93IHRiLnRiX25leHQgKGFuZCB0aHVzIGlzIGluIHRoZSBvcHBvc2l0ZSBvcmRlciB0bworICAgIHdhbGtfc3RhY2spLiBVc3VhbGx5IHVzZWQgd2l0aCBTdGFja1N1bW1hcnkuZXh0cmFjdC4KKyAgICAiIiIKKyAgICB3aGlsZSB0YiBpcyBub3QgTm9uZToKKyAgICAgICAgeWllbGQgdGIudGJfZnJhbWUsIHRiLnRiX2xpbmVubworICAgICAgICB0YiA9IHRiLnRiX25leHQKKworCitjbGFzcyBTdGFja1N1bW1hcnkobGlzdCk6CisgICAgIiIiQSBzdGFjayBvZiBmcmFtZXMuIiIiCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZXh0cmFjdChrbGFzcywgZnJhbWVfZ2VuLCAqLCBsaW1pdD1Ob25lLCBsb29rdXBfbGluZXM9VHJ1ZSwKKyAgICAgICAgICAgIGNhcHR1cmVfbG9jYWxzPUZhbHNlKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgU3RhY2tTdW1tYXJ5IGZyb20gYSB0cmFjZWJhY2sgb3Igc3RhY2sgb2JqZWN0LgorCisgICAgICAgIDpwYXJhbSBmcmFtZV9nZW46IEEgZ2VuZXJhdG9yIHRoYXQgeWllbGRzIChmcmFtZSwgbGluZW5vKSB0dXBsZXMgdG8KKyAgICAgICAgICAgIGluY2x1ZGUgaW4gdGhlIHN0YWNrLgorICAgICAgICA6cGFyYW0gbGltaXQ6IE5vbmUgdG8gaW5jbHVkZSBhbGwgZnJhbWVzIG9yIHRoZSBudW1iZXIgb2YgZnJhbWVzIHRvCisgICAgICAgICAgICBpbmNsdWRlLgorICAgICAgICA6cGFyYW0gbG9va3VwX2xpbmVzOiBJZiBUcnVlLCBsb29rdXAgbGluZXMgZm9yIGVhY2ggZnJhbWUgaW1tZWRpYXRlbHksCisgICAgICAgICAgICBvdGhlcndpc2UgbG9va3VwIGlzIGRlZmVycmVkIHVudGlsIHRoZSBmcmFtZSBpcyByZW5kZXJlZC4KKyAgICAgICAgOnBhcmFtIGNhcHR1cmVfbG9jYWxzOiBJZiBUcnVlLCB0aGUgbG9jYWwgdmFyaWFibGVzIGZyb20gZWFjaCBmcmFtZSB3aWxsCisgICAgICAgICAgICBiZSBjYXB0dXJlZCBhcyBvYmplY3QgcmVwcmVzZW50YXRpb25zIGludG8gdGhlIEZyYW1lU3VtbWFyeS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGxpbWl0IGlzIE5vbmU6CisgICAgICAgICAgICBsaW1pdCA9IGdldGF0dHIoc3lzLCAndHJhY2ViYWNrbGltaXQnLCBOb25lKQorICAgICAgICAgICAgaWYgbGltaXQgaXMgbm90IE5vbmUgYW5kIGxpbWl0IDwgMDoKKyAgICAgICAgICAgICAgICBsaW1pdCA9IDAKKyAgICAgICAgaWYgbGltaXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBsaW1pdCA+PSAwOgorICAgICAgICAgICAgICAgIGZyYW1lX2dlbiA9IGl0ZXJ0b29scy5pc2xpY2UoZnJhbWVfZ2VuLCBsaW1pdCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZnJhbWVfZ2VuID0gY29sbGVjdGlvbnMuZGVxdWUoZnJhbWVfZ2VuLCBtYXhsZW49LWxpbWl0KQorCisgICAgICAgIHJlc3VsdCA9IGtsYXNzKCkKKyAgICAgICAgZm5hbWVzID0gc2V0KCkKKyAgICAgICAgZm9yIGYsIGxpbmVubyBpbiBmcmFtZV9nZW46CisgICAgICAgICAgICBjbyA9IGYuZl9jb2RlCisgICAgICAgICAgICBmaWxlbmFtZSA9IGNvLmNvX2ZpbGVuYW1lCisgICAgICAgICAgICBuYW1lID0gY28uY29fbmFtZQorCisgICAgICAgICAgICBmbmFtZXMuYWRkKGZpbGVuYW1lKQorICAgICAgICAgICAgbGluZWNhY2hlLmxhenljYWNoZShmaWxlbmFtZSwgZi5mX2dsb2JhbHMpCisgICAgICAgICAgICAjIE11c3QgZGVmZXIgbGluZSBsb29rdXBzIHVudGlsIHdlIGhhdmUgY2FsbGVkIGNoZWNrY2FjaGUuCisgICAgICAgICAgICBpZiBjYXB0dXJlX2xvY2FsczoKKyAgICAgICAgICAgICAgICBmX2xvY2FscyA9IGYuZl9sb2NhbHMKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZl9sb2NhbHMgPSBOb25lCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKEZyYW1lU3VtbWFyeSgKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZW5vLCBuYW1lLCBsb29rdXBfbGluZT1GYWxzZSwgbG9jYWxzPWZfbG9jYWxzKSkKKyAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZuYW1lczoKKyAgICAgICAgICAgIGxpbmVjYWNoZS5jaGVja2NhY2hlKGZpbGVuYW1lKQorICAgICAgICAjIElmIGltbWVkaWF0ZSBsb29rdXAgd2FzIGRlc2lyZWQsIHRyaWdnZXIgbG9va3VwcyBub3cuCisgICAgICAgIGlmIGxvb2t1cF9saW5lczoKKyAgICAgICAgICAgIGZvciBmIGluIHJlc3VsdDoKKyAgICAgICAgICAgICAgICBmLmxpbmUKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fbGlzdChrbGFzcywgYV9saXN0KToKKyAgICAgICAgIiIiQ3JlYXRlIGEgU3RhY2tTdW1tYXJ5IGZyb20gYSBzaW1wbGUgbGlzdCBvZiB0dXBsZXMuCisKKyAgICAgICAgVGhpcyBtZXRob2Qgc3VwcG9ydHMgdGhlIG9sZGVyIFB5dGhvbiBBUEkuIEVhY2ggdHVwbGUgc2hvdWxkIGJlIGEKKyAgICAgICAgNC10dXBsZSB3aXRoIChmaWxlbmFtZSwgbGluZW5vLCBuYW1lLCBsaW5lKSBlbGVtZW50cy4KKyAgICAgICAgIiIiCisgICAgICAgICMgV2hpbGUgZG9pbmcgYSBmYXN0LXBhdGggY2hlY2sgZm9yIGlzaW5zdGFuY2UoYV9saXN0LCBTdGFja1N1bW1hcnkpIGlzCisgICAgICAgICMgYXBwZWFsaW5nLCBpZGxlbGliLnJ1bi5jbGVhbnVwX3RyYWNlYmFjayBhbmQgb3RoZXIgc2ltaWxhciBjb2RlIG1heQorICAgICAgICAjIGJyZWFrIHRoaXMgYnkgbWFraW5nIGFyYml0cmFyeSBmcmFtZXMgcGxhaW4gdHVwbGVzLCBzbyB3ZSBuZWVkIHRvCisgICAgICAgICMgY2hlY2sgb24gYSBmcmFtZSBieSBmcmFtZSBiYXNpcy4KKyAgICAgICAgcmVzdWx0ID0gU3RhY2tTdW1tYXJ5KCkKKyAgICAgICAgZm9yIGZyYW1lIGluIGFfbGlzdDoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZnJhbWUsIEZyYW1lU3VtbWFyeSk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChmcmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbGluZSA9IGZyYW1lCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChGcmFtZVN1bW1hcnkoZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbGluZT1saW5lKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIGZvcm1hdChzZWxmKToKKyAgICAgICAgIiIiRm9ybWF0IHRoZSBzdGFjayByZWFkeSBmb3IgcHJpbnRpbmcuCisKKyAgICAgICAgUmV0dXJucyBhIGxpc3Qgb2Ygc3RyaW5ncyByZWFkeSBmb3IgcHJpbnRpbmcuICBFYWNoIHN0cmluZyBpbiB0aGUKKyAgICAgICAgcmVzdWx0aW5nIGxpc3QgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgZnJhbWUgZnJvbSB0aGUgc3RhY2suCisgICAgICAgIEVhY2ggc3RyaW5nIGVuZHMgaW4gYSBuZXdsaW5lOyB0aGUgc3RyaW5ncyBtYXkgY29udGFpbiBpbnRlcm5hbAorICAgICAgICBuZXdsaW5lcyBhcyB3ZWxsLCBmb3IgdGhvc2UgaXRlbXMgd2l0aCBzb3VyY2UgdGV4dCBsaW5lcy4KKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIGZvciBmcmFtZSBpbiBzZWxmOgorICAgICAgICAgICAgcm93ID0gW10KKyAgICAgICAgICAgIHJvdy5hcHBlbmQoJyAgRmlsZSAie30iLCBsaW5lIHt9LCBpbiB7fVxuJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgZnJhbWUuZmlsZW5hbWUsIGZyYW1lLmxpbmVubywgZnJhbWUubmFtZSkpCisgICAgICAgICAgICBpZiBmcmFtZS5saW5lOgorICAgICAgICAgICAgICAgIHJvdy5hcHBlbmQoJyAgICB7fVxuJy5mb3JtYXQoZnJhbWUubGluZS5zdHJpcCgpKSkKKyAgICAgICAgICAgIGlmIGZyYW1lLmxvY2FsczoKKyAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc29ydGVkKGZyYW1lLmxvY2Fscy5pdGVtcygpKToKKyAgICAgICAgICAgICAgICAgICAgcm93LmFwcGVuZCgnICAgIHtuYW1lfSA9IHt2YWx1ZX1cbicuZm9ybWF0KG5hbWU9bmFtZSwgdmFsdWU9dmFsdWUpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJy5qb2luKHJvdykpCisgICAgICAgIHJldHVybiByZXN1bHQKKworCitjbGFzcyBUcmFjZWJhY2tFeGNlcHRpb246CisgICAgIiIiQW4gZXhjZXB0aW9uIHJlYWR5IGZvciByZW5kZXJpbmcuCisKKyAgICBUaGUgdHJhY2ViYWNrIG1vZHVsZSBjYXB0dXJlcyBlbm91Z2ggYXR0cmlidXRlcyBmcm9tIHRoZSBvcmlnaW5hbCBleGNlcHRpb24KKyAgICB0byB0aGlzIGludGVybWVkaWFyeSBmb3JtIHRvIGVuc3VyZSB0aGF0IG5vIHJlZmVyZW5jZXMgYXJlIGhlbGQsIHdoaWxlCisgICAgc3RpbGwgYmVpbmcgYWJsZSB0byBmdWxseSBwcmludCBvciBmb3JtYXQgaXQuCisKKyAgICBVc2UgYGZyb21fZXhjZXB0aW9uYCB0byBjcmVhdGUgVHJhY2ViYWNrRXhjZXB0aW9uIGluc3RhbmNlcyBmcm9tIGV4Y2VwdGlvbgorICAgIG9iamVjdHMsIG9yIHRoZSBjb25zdHJ1Y3RvciB0byBjcmVhdGUgVHJhY2ViYWNrRXhjZXB0aW9uIGluc3RhbmNlcyBmcm9tCisgICAgaW5kaXZpZHVhbCBjb21wb25lbnRzLgorCisgICAgLSA6YXR0cjpgX19jYXVzZV9fYCBBIFRyYWNlYmFja0V4Y2VwdGlvbiBvZiB0aGUgb3JpZ2luYWwgKl9fY2F1c2VfXyouCisgICAgLSA6YXR0cjpgX19jb250ZXh0X19gIEEgVHJhY2ViYWNrRXhjZXB0aW9uIG9mIHRoZSBvcmlnaW5hbCAqX19jb250ZXh0X18qLgorICAgIC0gOmF0dHI6YF9fc3VwcHJlc3NfY29udGV4dF9fYCBUaGUgKl9fc3VwcHJlc3NfY29udGV4dF9fKiB2YWx1ZSBmcm9tIHRoZQorICAgICAgb3JpZ2luYWwgZXhjZXB0aW9uLgorICAgIC0gOmF0dHI6YHN0YWNrYCBBIGBTdGFja1N1bW1hcnlgIHJlcHJlc2VudGluZyB0aGUgdHJhY2ViYWNrLgorICAgIC0gOmF0dHI6YGV4Y190eXBlYCBUaGUgY2xhc3Mgb2YgdGhlIG9yaWdpbmFsIHRyYWNlYmFjay4KKyAgICAtIDphdHRyOmBmaWxlbmFtZWAgRm9yIHN5bnRheCBlcnJvcnMgLSB0aGUgZmlsZW5hbWUgd2hlcmUgdGhlIGVycm9yCisgICAgICBvY2N1cmVkLgorICAgIC0gOmF0dHI6YGxpbmVub2AgRm9yIHN5bnRheCBlcnJvcnMgLSB0aGUgbGluZW51bWJlciB3aGVyZSB0aGUgZXJyb3IKKyAgICAgIG9jY3VyZWQuCisgICAgLSA6YXR0cjpgdGV4dGAgRm9yIHN5bnRheCBlcnJvcnMgLSB0aGUgdGV4dCB3aGVyZSB0aGUgZXJyb3IKKyAgICAgIG9jY3VyZWQuCisgICAgLSA6YXR0cjpgb2Zmc2V0YCBGb3Igc3ludGF4IGVycm9ycyAtIHRoZSBvZmZzZXQgaW50byB0aGUgdGV4dCB3aGVyZSB0aGUKKyAgICAgIGVycm9yIG9jY3VyZWQuCisgICAgLSA6YXR0cjpgbXNnYCBGb3Igc3ludGF4IGVycm9ycyAtIHRoZSBjb21waWxlciBlcnJvciBtZXNzYWdlLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190cmFjZWJhY2ssICosIGxpbWl0PU5vbmUsCisgICAgICAgICAgICBsb29rdXBfbGluZXM9VHJ1ZSwgY2FwdHVyZV9sb2NhbHM9RmFsc2UsIF9zZWVuPU5vbmUpOgorICAgICAgICAjIE5COiB3ZSBuZWVkIHRvIGFjY2VwdCBleGNfdHJhY2ViYWNrLCBleGNfdmFsdWUsIGV4Y190cmFjZWJhY2sgdG8KKyAgICAgICAgIyBwZXJtaXQgYmFja3dhcmRzIGNvbXBhdCB3aXRoIHRoZSBleGlzdGluZyBBUEksIG90aGVyd2lzZSB3ZQorICAgICAgICAjIG5lZWQgc3R1YiB0aHVuayBvYmplY3RzIGp1c3QgdG8gZ2x1ZSBpdCB0b2dldGhlci4KKyAgICAgICAgIyBIYW5kbGUgbG9vcHMgaW4gX19jYXVzZV9fIG9yIF9fY29udGV4dF9fLgorICAgICAgICBpZiBfc2VlbiBpcyBOb25lOgorICAgICAgICAgICAgX3NlZW4gPSBzZXQoKQorICAgICAgICBfc2Vlbi5hZGQoZXhjX3ZhbHVlKQorICAgICAgICAjIEdyYWNlZnVsbHkgaGFuZGxlICh0aGUgd2F5IFB5dGhvbiAyLjQgYW5kIGVhcmxpZXIgZGlkKSB0aGUgY2FzZSBvZgorICAgICAgICAjIGJlaW5nIGNhbGxlZCB3aXRoIG5vIHR5cGUgb3IgdmFsdWUgKE5vbmUsIE5vbmUsIE5vbmUpLgorICAgICAgICBpZiAoZXhjX3ZhbHVlIGFuZCBleGNfdmFsdWUuX19jYXVzZV9fIGlzIG5vdCBOb25lCisgICAgICAgICAgICBhbmQgZXhjX3ZhbHVlLl9fY2F1c2VfXyBub3QgaW4gX3NlZW4pOgorICAgICAgICAgICAgY2F1c2UgPSBUcmFjZWJhY2tFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgdHlwZShleGNfdmFsdWUuX19jYXVzZV9fKSwKKyAgICAgICAgICAgICAgICBleGNfdmFsdWUuX19jYXVzZV9fLAorICAgICAgICAgICAgICAgIGV4Y192YWx1ZS5fX2NhdXNlX18uX190cmFjZWJhY2tfXywKKyAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwKKyAgICAgICAgICAgICAgICBsb29rdXBfbGluZXM9RmFsc2UsCisgICAgICAgICAgICAgICAgY2FwdHVyZV9sb2NhbHM9Y2FwdHVyZV9sb2NhbHMsCisgICAgICAgICAgICAgICAgX3NlZW49X3NlZW4pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjYXVzZSA9IE5vbmUKKyAgICAgICAgaWYgKGV4Y192YWx1ZSBhbmQgZXhjX3ZhbHVlLl9fY29udGV4dF9fIGlzIG5vdCBOb25lCisgICAgICAgICAgICBhbmQgZXhjX3ZhbHVlLl9fY29udGV4dF9fIG5vdCBpbiBfc2Vlbik6CisgICAgICAgICAgICBjb250ZXh0ID0gVHJhY2ViYWNrRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgIHR5cGUoZXhjX3ZhbHVlLl9fY29udGV4dF9fKSwKKyAgICAgICAgICAgICAgICBleGNfdmFsdWUuX19jb250ZXh0X18sCisgICAgICAgICAgICAgICAgZXhjX3ZhbHVlLl9fY29udGV4dF9fLl9fdHJhY2ViYWNrX18sCisgICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCisgICAgICAgICAgICAgICAgbG9va3VwX2xpbmVzPUZhbHNlLAorICAgICAgICAgICAgICAgIGNhcHR1cmVfbG9jYWxzPWNhcHR1cmVfbG9jYWxzLAorICAgICAgICAgICAgICAgIF9zZWVuPV9zZWVuKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29udGV4dCA9IE5vbmUKKyAgICAgICAgc2VsZi5leGNfdHJhY2ViYWNrID0gZXhjX3RyYWNlYmFjaworICAgICAgICBzZWxmLl9fY2F1c2VfXyA9IGNhdXNlCisgICAgICAgIHNlbGYuX19jb250ZXh0X18gPSBjb250ZXh0CisgICAgICAgIHNlbGYuX19zdXBwcmVzc19jb250ZXh0X18gPSBcCisgICAgICAgICAgICBleGNfdmFsdWUuX19zdXBwcmVzc19jb250ZXh0X18gaWYgZXhjX3ZhbHVlIGVsc2UgRmFsc2UKKyAgICAgICAgIyBUT0RPOiBsb2NhbHMuCisgICAgICAgIHNlbGYuc3RhY2sgPSBTdGFja1N1bW1hcnkuZXh0cmFjdCgKKyAgICAgICAgICAgIHdhbGtfdGIoZXhjX3RyYWNlYmFjayksIGxpbWl0PWxpbWl0LCBsb29rdXBfbGluZXM9bG9va3VwX2xpbmVzLAorICAgICAgICAgICAgY2FwdHVyZV9sb2NhbHM9Y2FwdHVyZV9sb2NhbHMpCisgICAgICAgIHNlbGYuZXhjX3R5cGUgPSBleGNfdHlwZQorICAgICAgICAjIENhcHR1cmUgbm93IHRvIHBlcm1pdCBmcmVlaW5nIHJlc291cmNlczogb25seSBjb21wbGljYXRpb24gaXMgaW4gdGhlCisgICAgICAgICMgdW5vZmZpY2lhbCBBUEkgX2Zvcm1hdF9maW5hbF9leGNfbGluZQorICAgICAgICBzZWxmLl9zdHIgPSBfc29tZV9zdHIoZXhjX3ZhbHVlKQorICAgICAgICBpZiBleGNfdHlwZSBhbmQgaXNzdWJjbGFzcyhleGNfdHlwZSwgU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgIyBIYW5kbGUgU3ludGF4RXJyb3IncyBzcGVjaWFsbHkKKyAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBleGNfdmFsdWUuZmlsZW5hbWUKKyAgICAgICAgICAgIHNlbGYubGluZW5vID0gc3RyKGV4Y192YWx1ZS5saW5lbm8pCisgICAgICAgICAgICBzZWxmLnRleHQgPSBleGNfdmFsdWUudGV4dAorICAgICAgICAgICAgc2VsZi5vZmZzZXQgPSBleGNfdmFsdWUub2Zmc2V0CisgICAgICAgICAgICBzZWxmLm1zZyA9IGV4Y192YWx1ZS5tc2cKKyAgICAgICAgaWYgbG9va3VwX2xpbmVzOgorICAgICAgICAgICAgc2VsZi5fbG9hZF9saW5lcygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9leGNlcHRpb24oc2VsZiwgZXhjLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAiIiJDcmVhdGUgYSBUcmFjZWJhY2tFeGNlcHRpb24gZnJvbSBhbiBleGNlcHRpb24uIiIiCisgICAgICAgIHJldHVybiBUcmFjZWJhY2tFeGNlcHRpb24oCisgICAgICAgICAgICB0eXBlKGV4YyksIGV4YywgZXhjLl9fdHJhY2ViYWNrX18sICphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBfbG9hZF9saW5lcyhzZWxmKToKKyAgICAgICAgIiIiUHJpdmF0ZSBBUEkuIGZvcmNlIGFsbCBsaW5lcyBpbiB0aGUgc3RhY2sgdG8gYmUgbG9hZGVkLiIiIgorICAgICAgICBmb3IgZnJhbWUgaW4gc2VsZi5zdGFjazoKKyAgICAgICAgICAgIGZyYW1lLmxpbmUKKyAgICAgICAgaWYgc2VsZi5fX2NvbnRleHRfXzoKKyAgICAgICAgICAgIHNlbGYuX19jb250ZXh0X18uX2xvYWRfbGluZXMoKQorICAgICAgICBpZiBzZWxmLl9fY2F1c2VfXzoKKyAgICAgICAgICAgIHNlbGYuX19jYXVzZV9fLl9sb2FkX2xpbmVzKCkKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2RpY3RfXyA9PSBvdGhlci5fX2RpY3RfXworCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9zdHIKKworICAgIGRlZiBmb3JtYXRfZXhjZXB0aW9uX29ubHkoc2VsZik6CisgICAgICAgICIiIkZvcm1hdCB0aGUgZXhjZXB0aW9uIHBhcnQgb2YgdGhlIHRyYWNlYmFjay4KKworICAgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgZ2VuZXJhdG9yIG9mIHN0cmluZ3MsIGVhY2ggZW5kaW5nIGluIGEgbmV3bGluZS4KKworICAgICAgICBOb3JtYWxseSwgdGhlIGdlbmVyYXRvciBlbWl0cyBhIHNpbmdsZSBzdHJpbmc7IGhvd2V2ZXIsIGZvcgorICAgICAgICBTeW50YXhFcnJvciBleGNlcHRpb25zLCBpdCBlbWl0ZXMgc2V2ZXJhbCBsaW5lcyB0aGF0ICh3aGVuCisgICAgICAgIHByaW50ZWQpIGRpc3BsYXkgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgdGhlIHN5bnRheAorICAgICAgICBlcnJvciBvY2N1cnJlZC4KKworICAgICAgICBUaGUgbWVzc2FnZSBpbmRpY2F0aW5nIHdoaWNoIGV4Y2VwdGlvbiBvY2N1cnJlZCBpcyBhbHdheXMgdGhlIGxhc3QKKyAgICAgICAgc3RyaW5nIGluIHRoZSBvdXRwdXQuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLmV4Y190eXBlIGlzIE5vbmU6CisgICAgICAgICAgICB5aWVsZCBfZm9ybWF0X2ZpbmFsX2V4Y19saW5lKE5vbmUsIHNlbGYuX3N0cikKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHN0eXBlID0gc2VsZi5leGNfdHlwZS5fX3F1YWxuYW1lX18KKyAgICAgICAgc21vZCA9IHNlbGYuZXhjX3R5cGUuX19tb2R1bGVfXworICAgICAgICBpZiBzbW9kIG5vdCBpbiAoIl9fbWFpbl9fIiwgImJ1aWx0aW5zIik6CisgICAgICAgICAgICBzdHlwZSA9IHNtb2QgKyAnLicgKyBzdHlwZQorCisgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKHNlbGYuZXhjX3R5cGUsIFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIHlpZWxkIF9mb3JtYXRfZmluYWxfZXhjX2xpbmUoc3R5cGUsIHNlbGYuX3N0cikKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgSXQgd2FzIGEgc3ludGF4IGVycm9yOyBzaG93IGV4YWN0bHkgd2hlcmUgdGhlIHByb2JsZW0gd2FzIGZvdW5kLgorICAgICAgICBmaWxlbmFtZSA9IHNlbGYuZmlsZW5hbWUgb3IgIjxzdHJpbmc+IgorICAgICAgICBsaW5lbm8gPSBzdHIoc2VsZi5saW5lbm8pIG9yICc/JworICAgICAgICB5aWVsZCAnICBGaWxlICJ7fSIsIGxpbmUge31cbicuZm9ybWF0KGZpbGVuYW1lLCBsaW5lbm8pCisKKyAgICAgICAgYmFkbGluZSA9IHNlbGYudGV4dAorICAgICAgICBvZmZzZXQgPSBzZWxmLm9mZnNldAorICAgICAgICBpZiBiYWRsaW5lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgeWllbGQgJyAgICB7fVxuJy5mb3JtYXQoYmFkbGluZS5zdHJpcCgpKQorICAgICAgICAgICAgaWYgb2Zmc2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGNhcmV0c3BhY2UgPSBiYWRsaW5lLnJzdHJpcCgnXG4nKQorICAgICAgICAgICAgICAgIG9mZnNldCA9IG1pbihsZW4oY2FyZXRzcGFjZSksIG9mZnNldCkgLSAxCisgICAgICAgICAgICAgICAgY2FyZXRzcGFjZSA9IGNhcmV0c3BhY2VbOm9mZnNldF0ubHN0cmlwKCkKKyAgICAgICAgICAgICAgICAjIG5vbi1zcGFjZSB3aGl0ZXNwYWNlIChsaWtlcyB0YWJzKSBtdXN0IGJlIGtlcHQgZm9yIGFsaWdubWVudAorICAgICAgICAgICAgICAgIGNhcmV0c3BhY2UgPSAoKGMuaXNzcGFjZSgpIGFuZCBjIG9yICcgJykgZm9yIGMgaW4gY2FyZXRzcGFjZSkKKyAgICAgICAgICAgICAgICB5aWVsZCAnICAgIHt9XlxuJy5mb3JtYXQoJycuam9pbihjYXJldHNwYWNlKSkKKyAgICAgICAgbXNnID0gc2VsZi5tc2cgb3IgIjxubyBkZXRhaWwgYXZhaWxhYmxlPiIKKyAgICAgICAgeWllbGQgInt9OiB7fVxuIi5mb3JtYXQoc3R5cGUsIG1zZykKKworICAgIGRlZiBmb3JtYXQoc2VsZiwgKiwgY2hhaW49VHJ1ZSk6CisgICAgICAgICIiIkZvcm1hdCB0aGUgZXhjZXB0aW9uLgorCisgICAgICAgIElmIGNoYWluIGlzIG5vdCAqVHJ1ZSosICpfX2NhdXNlX18qIGFuZCAqX19jb250ZXh0X18qIHdpbGwgbm90IGJlIGZvcm1hdHRlZC4KKworICAgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgZ2VuZXJhdG9yIG9mIHN0cmluZ3MsIGVhY2ggZW5kaW5nIGluIGEgbmV3bGluZSBhbmQKKyAgICAgICAgc29tZSBjb250YWluaW5nIGludGVybmFsIG5ld2xpbmVzLiBgcHJpbnRfZXhjZXB0aW9uYCBpcyBhIHdyYXBwZXIgYXJvdW5kCisgICAgICAgIHRoaXMgbWV0aG9kIHdoaWNoIGp1c3QgcHJpbnRzIHRoZSBsaW5lcyB0byBhIGZpbGUuCisKKyAgICAgICAgVGhlIG1lc3NhZ2UgaW5kaWNhdGluZyB3aGljaCBleGNlcHRpb24gb2NjdXJyZWQgaXMgYWx3YXlzIHRoZSBsYXN0CisgICAgICAgIHN0cmluZyBpbiB0aGUgb3V0cHV0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgY2hhaW46CisgICAgICAgICAgICBpZiBzZWxmLl9fY2F1c2VfXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHNlbGYuX19jYXVzZV9fLmZvcm1hdChjaGFpbj1jaGFpbikKKyAgICAgICAgICAgICAgICB5aWVsZCBfY2F1c2VfbWVzc2FnZQorICAgICAgICAgICAgZWxpZiAoc2VsZi5fX2NvbnRleHRfXyBpcyBub3QgTm9uZSBhbmQKKyAgICAgICAgICAgICAgICBub3Qgc2VsZi5fX3N1cHByZXNzX2NvbnRleHRfXyk6CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBzZWxmLl9fY29udGV4dF9fLmZvcm1hdChjaGFpbj1jaGFpbikKKyAgICAgICAgICAgICAgICB5aWVsZCBfY29udGV4dF9tZXNzYWdlCisgICAgICAgIGlmIHNlbGYuZXhjX3RyYWNlYmFjayBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHlpZWxkICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgIHlpZWxkIGZyb20gc2VsZi5zdGFjay5mb3JtYXQoKQorICAgICAgICB5aWVsZCBmcm9tIHNlbGYuZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KCkKZGlmZiAtLWdpdCBhL0xpYi90cmFjZW1hbGxvYy5weSBiL0xpYi90cmFjZW1hbGxvYy5weQppbmRleCBhZGVkZmM1Li42Mjg4ZGE4IDEwMDY0NAotLS0gYS9MaWIvdHJhY2VtYWxsb2MucHkKKysrIGIvTGliL3RyYWNlbWFsbG9jLnB5CkBAIC0yOTcsNyArMjk3LDcgQEAKIAogZGVmIF9ub3JtYWxpemVfZmlsZW5hbWUoZmlsZW5hbWUpOgogICAgIGZpbGVuYW1lID0gb3MucGF0aC5ub3JtY2FzZShmaWxlbmFtZSkKLSAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgoJy5weWMnLCAnLnB5bycpKToKKyAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgnLnB5YycpOgogICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lWzotMV0KICAgICByZXR1cm4gZmlsZW5hbWUKIApkaWZmIC0tZ2l0IGEvTGliL3R1cnRsZWRlbW8vX19tYWluX18ucHkgYi9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmRpZmYgLS1naXQgYS9MaWIvdHVydGxlZGVtby9zb3J0aW5nX2FuaW1hdGUucHkgYi9MaWIvdHVydGxlZGVtby9zb3J0aW5nX2FuaW1hdGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI1YTBhYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90dXJ0bGVkZW1vL3NvcnRpbmdfYW5pbWF0ZS5weQpAQCAtMCwwICsxLDIwNCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIiIiCisKKyAgICAgICAgIHNvcnRpbmdfYW5pbWF0aW9uLnB5CisKK0EgbWluaW1hbCBzb3J0aW5nIGFsZ29yaXRobSBhbmltYXRpb246CitTb3J0cyBhIHNoZWxmIG9mIDEwIGJsb2NrcyB1c2luZyBpbnNlcnRpb24KK3NvcnQsIHNlbGVjdGlvbiBzb3J0IGFuZCBxdWlja3NvcnQuCisKK1NoZWxmcyBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgYnVpbHRpbiBsaXN0cy4KKworQmxvY2tzIGFyZSB0dXJ0bGVzIHdpdGggc2hhcGUgInNxdWFyZSIsIGJ1dAorc3RyZXRjaGVkIHRvIHJlY3RhbmdsZXMgYnkgc2hhcGVzaXplKCkKKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICBUbyBleGl0IHByZXNzIHNwYWNlIGJ1dHRvbgorIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiIiCitmcm9tIHR1cnRsZSBpbXBvcnQgKgoraW1wb3J0IHJhbmRvbQorCisKK2NsYXNzIEJsb2NrKFR1cnRsZSk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc2l6ZSk6CisgICAgICAgIHNlbGYuc2l6ZSA9IHNpemUKKyAgICAgICAgVHVydGxlLl9faW5pdF9fKHNlbGYsIHNoYXBlPSJzcXVhcmUiLCB2aXNpYmxlPUZhbHNlKQorICAgICAgICBzZWxmLnB1KCkKKyAgICAgICAgc2VsZi5zaGFwZXNpemUoc2l6ZSAqIDEuNSwgMS41LCAyKSAjIHNxdWFyZS0tPnJlY3RhbmdsZQorICAgICAgICBzZWxmLmZpbGxjb2xvcigiYmxhY2siKQorICAgICAgICBzZWxmLnN0KCkKKworICAgIGRlZiBnbG93KHNlbGYpOgorICAgICAgICBzZWxmLmZpbGxjb2xvcigicmVkIikKKworICAgIGRlZiB1bmdsb3coc2VsZik6CisgICAgICAgIHNlbGYuZmlsbGNvbG9yKCJibGFjayIpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiQmxvY2sgc2l6ZTogezB9Ii5mb3JtYXQoc2VsZi5zaXplKQorCisKK2NsYXNzIFNoZWxmKGxpc3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHkpOgorICAgICAgICAiY3JlYXRlIGEgc2hlbGYuIHkgaXMgeS1wb3NpdGlvbiBvZiBmaXJzdCBibG9jayIKKyAgICAgICAgc2VsZi55ID0geQorICAgICAgICBzZWxmLnggPSAtMTUwCisKKyAgICBkZWYgcHVzaChzZWxmLCBkKToKKyAgICAgICAgd2lkdGgsIF8sIF8gPSBkLnNoYXBlc2l6ZSgpCisgICAgICAgICMgYWxpZ24gYmxvY2tzIGJ5IHRoZSBib3R0b20gZWRnZQorICAgICAgICB5X29mZnNldCA9IHdpZHRoIC8gMiAqIDIwCisgICAgICAgIGQuc2V0eShzZWxmLnkgKyB5X29mZnNldCkKKyAgICAgICAgZC5zZXR4KHNlbGYueCArIDM0ICogbGVuKHNlbGYpKQorICAgICAgICBzZWxmLmFwcGVuZChkKQorCisgICAgZGVmIF9jbG9zZV9nYXBfZnJvbV9pKHNlbGYsIGkpOgorICAgICAgICBmb3IgYiBpbiBzZWxmW2k6XToKKyAgICAgICAgICAgIHhwb3MsIF8gPSBiLnBvcygpCisgICAgICAgICAgICBiLnNldHgoeHBvcyAtIDM0KQorCisgICAgZGVmIF9vcGVuX2dhcF9mcm9tX2koc2VsZiwgaSk6CisgICAgICAgIGZvciBiIGluIHNlbGZbaTpdOgorICAgICAgICAgICAgeHBvcywgXyA9IGIucG9zKCkKKyAgICAgICAgICAgIGIuc2V0eCh4cG9zICsgMzQpCisKKyAgICBkZWYgcG9wKHNlbGYsIGtleSk6CisgICAgICAgIGIgPSBsaXN0LnBvcChzZWxmLCBrZXkpCisgICAgICAgIGIuZ2xvdygpCisgICAgICAgIGIuc2V0eSgyMDApCisgICAgICAgIHNlbGYuX2Nsb3NlX2dhcF9mcm9tX2koa2V5KQorICAgICAgICByZXR1cm4gYgorCisgICAgZGVmIGluc2VydChzZWxmLCBrZXksIGIpOgorICAgICAgICBzZWxmLl9vcGVuX2dhcF9mcm9tX2koa2V5KQorICAgICAgICBsaXN0Lmluc2VydChzZWxmLCBrZXksIGIpCisgICAgICAgIGIuc2V0eChzZWxmLnggKyAzNCAqIGtleSkKKyAgICAgICAgd2lkdGgsIF8sIF8gPSBiLnNoYXBlc2l6ZSgpCisgICAgICAgICMgYWxpZ24gYmxvY2tzIGJ5IHRoZSBib3R0b20gZWRnZQorICAgICAgICB5X29mZnNldCA9IHdpZHRoIC8gMiAqIDIwCisgICAgICAgIGIuc2V0eShzZWxmLnkgKyB5X29mZnNldCkKKyAgICAgICAgYi51bmdsb3coKQorCitkZWYgaXNvcnQoc2hlbGYpOgorICAgIGxlbmd0aCA9IGxlbihzaGVsZikKKyAgICBmb3IgaSBpbiByYW5nZSgxLCBsZW5ndGgpOgorICAgICAgICBob2xlID0gaQorICAgICAgICB3aGlsZSBob2xlID4gMCBhbmQgc2hlbGZbaV0uc2l6ZSA8IHNoZWxmW2hvbGUgLSAxXS5zaXplOgorICAgICAgICAgICAgaG9sZSA9IGhvbGUgLSAxCisgICAgICAgIHNoZWxmLmluc2VydChob2xlLCBzaGVsZi5wb3AoaSkpCisgICAgcmV0dXJuCisKK2RlZiBzc29ydChzaGVsZik6CisgICAgbGVuZ3RoID0gbGVuKHNoZWxmKQorICAgIGZvciBqIGluIHJhbmdlKDAsIGxlbmd0aCAtIDEpOgorICAgICAgICBpbWluID0gagorICAgICAgICBmb3IgaSBpbiByYW5nZShqICsgMSwgbGVuZ3RoKToKKyAgICAgICAgICAgIGlmIHNoZWxmW2ldLnNpemUgPCBzaGVsZltpbWluXS5zaXplOgorICAgICAgICAgICAgICAgIGltaW4gPSBpCisgICAgICAgIGlmIGltaW4gIT0gajoKKyAgICAgICAgICAgIHNoZWxmLmluc2VydChqLCBzaGVsZi5wb3AoaW1pbikpCisKK2RlZiBwYXJ0aXRpb24oc2hlbGYsIGxlZnQsIHJpZ2h0LCBwaXZvdF9pbmRleCk6CisgICAgcGl2b3QgPSBzaGVsZltwaXZvdF9pbmRleF0KKyAgICBzaGVsZi5pbnNlcnQocmlnaHQsIHNoZWxmLnBvcChwaXZvdF9pbmRleCkpCisgICAgc3RvcmVfaW5kZXggPSBsZWZ0CisgICAgZm9yIGkgaW4gcmFuZ2UobGVmdCwgcmlnaHQpOiAjIHJhbmdlIGlzIG5vbi1pbmNsdXNpdmUgb2YgZW5kaW5nIHZhbHVlCisgICAgICAgIGlmIHNoZWxmW2ldLnNpemUgPCBwaXZvdC5zaXplOgorICAgICAgICAgICAgc2hlbGYuaW5zZXJ0KHN0b3JlX2luZGV4LCBzaGVsZi5wb3AoaSkpCisgICAgICAgICAgICBzdG9yZV9pbmRleCA9IHN0b3JlX2luZGV4ICsgMQorICAgIHNoZWxmLmluc2VydChzdG9yZV9pbmRleCwgc2hlbGYucG9wKHJpZ2h0KSkgIyBtb3ZlIHBpdm90IHRvIGNvcnJlY3QgcG9zaXRpb24KKyAgICByZXR1cm4gc3RvcmVfaW5kZXgKKworZGVmIHFzb3J0KHNoZWxmLCBsZWZ0LCByaWdodCk6CisgICAgaWYgbGVmdCA8IHJpZ2h0OgorICAgICAgICBwaXZvdF9pbmRleCA9IGxlZnQKKyAgICAgICAgcGl2b3RfbmV3X2luZGV4ID0gcGFydGl0aW9uKHNoZWxmLCBsZWZ0LCByaWdodCwgcGl2b3RfaW5kZXgpCisgICAgICAgIHFzb3J0KHNoZWxmLCBsZWZ0LCBwaXZvdF9uZXdfaW5kZXggLSAxKQorICAgICAgICBxc29ydChzaGVsZiwgcGl2b3RfbmV3X2luZGV4ICsgMSwgcmlnaHQpCisKK2RlZiByYW5kb21pemUoKToKKyAgICBkaXNhYmxlX2tleXMoKQorICAgIGNsZWFyKCkKKyAgICB0YXJnZXQgPSBsaXN0KHJhbmdlKDEwKSkKKyAgICByYW5kb20uc2h1ZmZsZSh0YXJnZXQpCisgICAgZm9yIGksIHQgaW4gZW51bWVyYXRlKHRhcmdldCk6CisgICAgICAgIGZvciBqIGluIHJhbmdlKGksIGxlbihzKSk6CisgICAgICAgICAgICBpZiBzW2pdLnNpemUgPT0gdCArIDE6CisgICAgICAgICAgICAgICAgcy5pbnNlcnQoaSwgcy5wb3AoaikpCisgICAgc2hvd190ZXh0KGluc3RydWN0aW9uczEpCisgICAgc2hvd190ZXh0KGluc3RydWN0aW9uczIsIGxpbmU9MSkKKyAgICBlbmFibGVfa2V5cygpCisKK2RlZiBzaG93X3RleHQodGV4dCwgbGluZT0wKToKKyAgICBsaW5lID0gMjAgKiBsaW5lCisgICAgZ290bygwLC0yNTAgLSBsaW5lKQorICAgIHdyaXRlKHRleHQsIGFsaWduPSJjZW50ZXIiLCBmb250PSgiQ291cmllciIsIDE2LCAiYm9sZCIpKQorCitkZWYgc3RhcnRfc3NvcnQoKToKKyAgICBkaXNhYmxlX2tleXMoKQorICAgIGNsZWFyKCkKKyAgICBzaG93X3RleHQoIlNlbGVjdGlvbiBTb3J0IikKKyAgICBzc29ydChzKQorICAgIGNsZWFyKCkKKyAgICBzaG93X3RleHQoaW5zdHJ1Y3Rpb25zMSkKKyAgICBzaG93X3RleHQoaW5zdHJ1Y3Rpb25zMiwgbGluZT0xKQorICAgIGVuYWJsZV9rZXlzKCkKKworZGVmIHN0YXJ0X2lzb3J0KCk6CisgICAgZGlzYWJsZV9rZXlzKCkKKyAgICBjbGVhcigpCisgICAgc2hvd190ZXh0KCJJbnNlcnRpb24gU29ydCIpCisgICAgaXNvcnQocykKKyAgICBjbGVhcigpCisgICAgc2hvd190ZXh0KGluc3RydWN0aW9uczEpCisgICAgc2hvd190ZXh0KGluc3RydWN0aW9uczIsIGxpbmU9MSkKKyAgICBlbmFibGVfa2V5cygpCisKK2RlZiBzdGFydF9xc29ydCgpOgorICAgIGRpc2FibGVfa2V5cygpCisgICAgY2xlYXIoKQorICAgIHNob3dfdGV4dCgiUXVpY2tzb3J0IikKKyAgICBxc29ydChzLCAwLCBsZW4ocykgLSAxKQorICAgIGNsZWFyKCkKKyAgICBzaG93X3RleHQoaW5zdHJ1Y3Rpb25zMSkKKyAgICBzaG93X3RleHQoaW5zdHJ1Y3Rpb25zMiwgbGluZT0xKQorICAgIGVuYWJsZV9rZXlzKCkKKworZGVmIGluaXRfc2hlbGYoKToKKyAgICBnbG9iYWwgcworICAgIHMgPSBTaGVsZigtMjAwKQorICAgIHZhbHMgPSAoNCwgMiwgOCwgOSwgMSwgNSwgMTAsIDMsIDcsIDYpCisgICAgZm9yIGkgaW4gdmFsczoKKyAgICAgICAgcy5wdXNoKEJsb2NrKGkpKQorCitkZWYgZGlzYWJsZV9rZXlzKCk6CisgICAgb25rZXkoTm9uZSwgInMiKQorICAgIG9ua2V5KE5vbmUsICJpIikKKyAgICBvbmtleShOb25lLCAicSIpCisgICAgb25rZXkoTm9uZSwgInIiKQorCitkZWYgZW5hYmxlX2tleXMoKToKKyAgICBvbmtleShzdGFydF9pc29ydCwgImkiKQorICAgIG9ua2V5KHN0YXJ0X3Nzb3J0LCAicyIpCisgICAgb25rZXkoc3RhcnRfcXNvcnQsICJxIikKKyAgICBvbmtleShyYW5kb21pemUsICJyIikKKyAgICBvbmtleShieWUsICJzcGFjZSIpCisKK2RlZiBtYWluKCk6CisgICAgZ2V0c2NyZWVuKCkuY2xlYXJzY3JlZW4oKQorICAgIGh0KCk7IHBlbnVwKCkKKyAgICBpbml0X3NoZWxmKCkKKyAgICBzaG93X3RleHQoaW5zdHJ1Y3Rpb25zMSkKKyAgICBzaG93X3RleHQoaW5zdHJ1Y3Rpb25zMiwgbGluZT0xKQorICAgIGVuYWJsZV9rZXlzKCkKKyAgICBsaXN0ZW4oKQorICAgIHJldHVybiAiRVZFTlRMT09QIgorCitpbnN0cnVjdGlvbnMxID0gInByZXNzIGkgZm9yIGluc2VydGlvbiBzb3J0LCBzIGZvciBzZWxlY3Rpb24gc29ydCwgcSBmb3IgcXVpY2tzb3J0IgoraW5zdHJ1Y3Rpb25zMiA9ICJzcGFjZWJhciB0byBxdWl0LCByIHRvIHJhbmRvbWl6ZSIKKworaWYgX19uYW1lX189PSJfX21haW5fXyI6CisgICAgbXNnID0gbWFpbigpCisgICAgbWFpbmxvb3AoKQpkaWZmIC0tZ2l0IGEvTGliL3R5cGVzLnB5IGIvTGliL3R5cGVzLnB5CmluZGV4IDRmYjJkZWYuLjQ4ODkxY2QgMTAwNjQ0Ci0tLSBhL0xpYi90eXBlcy5weQorKysgYi9MaWIvdHlwZXMucHkKQEAgLTE5LDYgKzE5LDExIEBACiAgICAgeWllbGQgMQogR2VuZXJhdG9yVHlwZSA9IHR5cGUoX2coKSkKIAorYXN5bmMgZGVmIF9jKCk6IHBhc3MKK19jID0gX2MoKQorQ29yb3V0aW5lVHlwZSA9IHR5cGUoX2MpCitfYy5jbG9zZSgpICAjIFByZXZlbnQgUmVzb3VyY2VXYXJuaW5nCisKIGNsYXNzIF9DOgogICAgIGRlZiBfbShzZWxmKTogcGFzcwogTWV0aG9kVHlwZSA9IHR5cGUoX0MoKS5fbSkKQEAgLTQwLDcgKzQ1LDcgQEAKIEdldFNldERlc2NyaXB0b3JUeXBlID0gdHlwZShGdW5jdGlvblR5cGUuX19jb2RlX18pCiBNZW1iZXJEZXNjcmlwdG9yVHlwZSA9IHR5cGUoRnVuY3Rpb25UeXBlLl9fZ2xvYmFsc19fKQogCi1kZWwgc3lzLCBfZiwgX2csIF9DLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90IGZvciBleHBvcnQKK2RlbCBzeXMsIF9mLCBfZywgX0MsIF9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90IGZvciBleHBvcnQKIAogCiAjIFByb3ZpZGUgYSBQRVAgMzExNSBjb21wbGlhbnQgbWVjaGFuaXNtIGZvciBjbGFzcyBjcmVhdGlvbgpAQCAtMTU4LDQgKzE2Myw5OSBAQAogICAgICAgICByZXR1cm4gcmVzdWx0CiAKIAoraW1wb3J0IGZ1bmN0b29scyBhcyBfZnVuY3Rvb2xzCitpbXBvcnQgY29sbGVjdGlvbnMuYWJjIGFzIF9jb2xsZWN0aW9uc19hYmMKKworY2xhc3MgX0dlbmVyYXRvcldyYXBwZXI6CisgICAgIyBUT0RPOiBJbXBsZW1lbnQgdGhpcyBpbiBDLgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBnZW4pOgorICAgICAgICBzZWxmLl9fd3JhcHBlZCA9IGdlbgorICAgICAgICBzZWxmLl9faXNnZW4gPSBnZW4uX19jbGFzc19fIGlzIEdlbmVyYXRvclR5cGUKKyAgICAgICAgc2VsZi5fX25hbWVfXyA9IGdldGF0dHIoZ2VuLCAnX19uYW1lX18nLCBOb25lKQorICAgICAgICBzZWxmLl9fcXVhbG5hbWVfXyA9IGdldGF0dHIoZ2VuLCAnX19xdWFsbmFtZV9fJywgTm9uZSkKKyAgICBkZWYgc2VuZChzZWxmLCB2YWwpOgorICAgICAgICByZXR1cm4gc2VsZi5fX3dyYXBwZWQuc2VuZCh2YWwpCisgICAgZGVmIHRocm93KHNlbGYsIHRwLCAqcmVzdCk6CisgICAgICAgIHJldHVybiBzZWxmLl9fd3JhcHBlZC50aHJvdyh0cCwgKnJlc3QpCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fX3dyYXBwZWQuY2xvc2UoKQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBnaV9jb2RlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fX3dyYXBwZWQuZ2lfY29kZQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBnaV9mcmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX193cmFwcGVkLmdpX2ZyYW1lCisgICAgQHByb3BlcnR5CisgICAgZGVmIGdpX3J1bm5pbmcoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fd3JhcHBlZC5naV9ydW5uaW5nCisgICAgQHByb3BlcnR5CisgICAgZGVmIGdpX3lpZWxkZnJvbShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX193cmFwcGVkLmdpX3lpZWxkZnJvbQorICAgIGNyX2NvZGUgPSBnaV9jb2RlCisgICAgY3JfZnJhbWUgPSBnaV9mcmFtZQorICAgIGNyX3J1bm5pbmcgPSBnaV9ydW5uaW5nCisgICAgY3JfYXdhaXQgPSBnaV95aWVsZGZyb20KKyAgICBkZWYgX19uZXh0X18oc2VsZik6CisgICAgICAgIHJldHVybiBuZXh0KHNlbGYuX193cmFwcGVkKQorICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fX2lzZ2VuOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX193cmFwcGVkCisgICAgICAgIHJldHVybiBzZWxmCisgICAgX19hd2FpdF9fID0gX19pdGVyX18KKworZGVmIGNvcm91dGluZShmdW5jKToKKyAgICAiIiJDb252ZXJ0IHJlZ3VsYXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHRvIGEgY29yb3V0aW5lLiIiIgorCisgICAgaWYgbm90IGNhbGxhYmxlKGZ1bmMpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3R5cGVzLmNvcm91dGluZSgpIGV4cGVjdHMgYSBjYWxsYWJsZScpCisKKyAgICBpZiAoZnVuYy5fX2NsYXNzX18gaXMgRnVuY3Rpb25UeXBlIGFuZAorICAgICAgICBnZXRhdHRyKGZ1bmMsICdfX2NvZGVfXycsIE5vbmUpLl9fY2xhc3NfXyBpcyBDb2RlVHlwZSk6CisKKyAgICAgICAgY29fZmxhZ3MgPSBmdW5jLl9fY29kZV9fLmNvX2ZsYWdzCisKKyAgICAgICAgIyBDaGVjayBpZiAnZnVuYycgaXMgYSBjb3JvdXRpbmUgZnVuY3Rpb24uCisgICAgICAgICMgKDB4MTgwID09IENPX0NPUk9VVElORSB8IENPX0lURVJBQkxFX0NPUk9VVElORSkKKyAgICAgICAgaWYgY29fZmxhZ3MgJiAweDE4MDoKKyAgICAgICAgICAgIHJldHVybiBmdW5jCisKKyAgICAgICAgIyBDaGVjayBpZiAnZnVuYycgaXMgYSBnZW5lcmF0b3IgZnVuY3Rpb24uCisgICAgICAgICMgKDB4MjAgPT0gQ09fR0VORVJBVE9SKQorICAgICAgICBpZiBjb19mbGFncyAmIDB4MjA6CisgICAgICAgICAgICAjIFRPRE86IEltcGxlbWVudCB0aGlzIGluIEMuCisgICAgICAgICAgICBjbyA9IGZ1bmMuX19jb2RlX18KKyAgICAgICAgICAgIGZ1bmMuX19jb2RlX18gPSBDb2RlVHlwZSgKKyAgICAgICAgICAgICAgICBjby5jb19hcmdjb3VudCwgY28uY29fa3dvbmx5YXJnY291bnQsIGNvLmNvX25sb2NhbHMsCisgICAgICAgICAgICAgICAgY28uY29fc3RhY2tzaXplLAorICAgICAgICAgICAgICAgIGNvLmNvX2ZsYWdzIHwgMHgxMDAsICAjIDB4MTAwID09IENPX0lURVJBQkxFX0NPUk9VVElORQorICAgICAgICAgICAgICAgIGNvLmNvX2NvZGUsCisgICAgICAgICAgICAgICAgY28uY29fY29uc3RzLCBjby5jb19uYW1lcywgY28uY29fdmFybmFtZXMsIGNvLmNvX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgIGNvLmNvX25hbWUsIGNvLmNvX2ZpcnN0bGluZW5vLCBjby5jb19sbm90YWIsIGNvLmNvX2ZyZWV2YXJzLAorICAgICAgICAgICAgICAgIGNvLmNvX2NlbGx2YXJzKQorICAgICAgICAgICAgcmV0dXJuIGZ1bmMKKworICAgICMgVGhlIGZvbGxvd2luZyBjb2RlIGlzIHByaW1hcmlseSB0byBzdXBwb3J0IGZ1bmN0aW9ucyB0aGF0CisgICAgIyByZXR1cm4gZ2VuZXJhdG9yLWxpa2Ugb2JqZWN0cyAoZm9yIGluc3RhbmNlIGdlbmVyYXRvcnMKKyAgICAjIGNvbXBpbGVkIHdpdGggQ3l0aG9uKS4KKworICAgIEBfZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCisgICAgZGVmIHdyYXBwZWQoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgY29ybyA9IGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBpZiAoY29yby5fX2NsYXNzX18gaXMgQ29yb3V0aW5lVHlwZSBvcgorICAgICAgICAgICAgY29yby5fX2NsYXNzX18gaXMgR2VuZXJhdG9yVHlwZSBhbmQgY29yby5naV9jb2RlLmNvX2ZsYWdzICYgMHgxMDApOgorICAgICAgICAgICAgIyAnY29ybycgaXMgYSBuYXRpdmUgY29yb3V0aW5lIG9iamVjdCBvciBhbiBpdGVyYWJsZSBjb3JvdXRpbmUKKyAgICAgICAgICAgIHJldHVybiBjb3JvCisgICAgICAgIGlmIChpc2luc3RhbmNlKGNvcm8sIF9jb2xsZWN0aW9uc19hYmMuR2VuZXJhdG9yKSBhbmQKKyAgICAgICAgICAgIG5vdCBpc2luc3RhbmNlKGNvcm8sIF9jb2xsZWN0aW9uc19hYmMuQ29yb3V0aW5lKSk6CisgICAgICAgICAgICAjICdjb3JvJyBpcyBlaXRoZXIgYSBwdXJlIFB5dGhvbiBnZW5lcmF0b3IgaXRlcmF0b3IsIG9yIGl0CisgICAgICAgICAgICAjIGltcGxlbWVudHMgY29sbGVjdGlvbnMuYWJjLkdlbmVyYXRvciAoYW5kIGRvZXMgbm90IGltcGxlbWVudAorICAgICAgICAgICAgIyBjb2xsZWN0aW9ucy5hYmMuQ29yb3V0aW5lKS4KKyAgICAgICAgICAgIHJldHVybiBfR2VuZXJhdG9yV3JhcHBlcihjb3JvKQorICAgICAgICAjICdjb3JvJyBpcyBlaXRoZXIgYW4gaW5zdGFuY2Ugb2YgY29sbGVjdGlvbnMuYWJjLkNvcm91dGluZSBvcgorICAgICAgICAjIHNvbWUgb3RoZXIgb2JqZWN0IC0tIHBhc3MgaXQgdGhyb3VnaC4KKyAgICAgICAgcmV0dXJuIGNvcm8KKworICAgIHJldHVybiB3cmFwcGVkCisKKwogX19hbGxfXyA9IFtuIGZvciBuIGluIGdsb2JhbHMoKSBpZiBuWzoxXSAhPSAnXyddCmRpZmYgLS1naXQgYS9MaWIvdHlwaW5nLnB5IGIvTGliL3R5cGluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjNmOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3R5cGluZy5weQpAQCAtMCwwICsxLDE2NzEgQEAKKyMgVE9ETyBuaXRzOgorIyBHZXQgcmlkIG9mIGFzc2VydHMgdGhhdCBhcmUgdGhlIGNhbGxlcidzIGZhdWx0LgorIyBEb2NzdHJpbmdzIChlLmcuIEFCQ3MpLgorCitpbXBvcnQgYWJjCitmcm9tIGFiYyBpbXBvcnQgYWJzdHJhY3RtZXRob2QsIGFic3RyYWN0cHJvcGVydHkKK2ltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGZ1bmN0b29scworaW1wb3J0IHJlIGFzIHN0ZGxpYl9yZSAgIyBBdm9pZCBjb25mdXNpb24gd2l0aCB0aGUgcmUgd2UgZXhwb3J0LgoraW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCit0cnk6CisgICAgaW1wb3J0IGNvbGxlY3Rpb25zLmFiYyBhcyBjb2xsZWN0aW9uc19hYmMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMgYXMgY29sbGVjdGlvbnNfYWJjICAjIEZhbGxiYWNrIGZvciBQWTMuMi4KKworCisjIFBsZWFzZSBrZWVwIF9fYWxsX18gYWxwaGFiZXRpemVkIHdpdGhpbiBlYWNoIGNhdGVnb3J5LgorX19hbGxfXyA9IFsKKyAgICAjIFN1cGVyLXNwZWNpYWwgdHlwaW5nIHByaW1pdGl2ZXMuCisgICAgJ0FueScsCisgICAgJ0NhbGxhYmxlJywKKyAgICAnR2VuZXJpYycsCisgICAgJ09wdGlvbmFsJywKKyAgICAnVHlwZVZhcicsCisgICAgJ1VuaW9uJywKKyAgICAnVHVwbGUnLAorCisgICAgIyBBQkNzIChmcm9tIGNvbGxlY3Rpb25zLmFiYykuCisgICAgJ0Fic3RyYWN0U2V0JywgICMgY29sbGVjdGlvbnMuYWJjLlNldC4KKyAgICAnQXdhaXRhYmxlJywKKyAgICAnQXN5bmNJdGVyYXRvcicsCisgICAgJ0FzeW5jSXRlcmFibGUnLAorICAgICdCeXRlU3RyaW5nJywKKyAgICAnQ29udGFpbmVyJywKKyAgICAnSGFzaGFibGUnLAorICAgICdJdGVtc1ZpZXcnLAorICAgICdJdGVyYWJsZScsCisgICAgJ0l0ZXJhdG9yJywKKyAgICAnS2V5c1ZpZXcnLAorICAgICdNYXBwaW5nJywKKyAgICAnTWFwcGluZ1ZpZXcnLAorICAgICdNdXRhYmxlTWFwcGluZycsCisgICAgJ011dGFibGVTZXF1ZW5jZScsCisgICAgJ011dGFibGVTZXQnLAorICAgICdTZXF1ZW5jZScsCisgICAgJ1NpemVkJywKKyAgICAnVmFsdWVzVmlldycsCisKKyAgICAjIFN0cnVjdHVyYWwgY2hlY2tzLCBhLmsuYS4gcHJvdG9jb2xzLgorICAgICdSZXZlcnNpYmxlJywKKyAgICAnU3VwcG9ydHNBYnMnLAorICAgICdTdXBwb3J0c0Zsb2F0JywKKyAgICAnU3VwcG9ydHNJbnQnLAorICAgICdTdXBwb3J0c1JvdW5kJywKKworICAgICMgQ29uY3JldGUgY29sbGVjdGlvbiB0eXBlcy4KKyAgICAnRGljdCcsCisgICAgJ0xpc3QnLAorICAgICdTZXQnLAorICAgICdOYW1lZFR1cGxlJywgICMgTm90IHJlYWxseSBhIHR5cGUuCisgICAgJ0dlbmVyYXRvcicsCisKKyAgICAjIE9uZS1vZmYgdGhpbmdzLgorICAgICdBbnlTdHInLAorICAgICdjYXN0JywKKyAgICAnZ2V0X3R5cGVfaGludHMnLAorICAgICdub190eXBlX2NoZWNrJywKKyAgICAnbm9fdHlwZV9jaGVja19kZWNvcmF0b3InLAorICAgICdvdmVybG9hZCcsCisKKyAgICAjIFN1Ym1vZHVsZXMuCisgICAgJ2lvJywKKyAgICAncmUnLAorXQorCisKK2RlZiBfcXVhbG5hbWUoeCk6CisgICAgaWYgc3lzLnZlcnNpb25faW5mb1s6Ml0gPj0gKDMsIDMpOgorICAgICAgICByZXR1cm4geC5fX3F1YWxuYW1lX18KKyAgICBlbHNlOgorICAgICAgICAjIEZhbGwgYmFjayB0byBqdXN0IG5hbWUuCisgICAgICAgIHJldHVybiB4Ll9fbmFtZV9fCisKKworY2xhc3MgVHlwaW5nTWV0YSh0eXBlKToKKyAgICAiIiJNZXRhY2xhc3MgZm9yIGV2ZXJ5IHR5cGUgZGVmaW5lZCBiZWxvdy4KKworICAgIFRoaXMgb3ZlcnJpZGVzIF9fbmV3X18oKSB0byByZXF1aXJlIGFuIGV4dHJhIGtleXdvcmQgcGFyYW1ldGVyCisgICAgJ19yb290Jywgd2hpY2ggc2VydmVzIGFzIGEgZ3VhcmQgYWdhaW5zdCBuYWl2ZSBzdWJjbGFzc2luZyBvZiB0aGUKKyAgICB0eXBpbmcgY2xhc3Nlcy4gIEFueSBsZWdpdGltYXRlIGNsYXNzIGRlZmluZWQgdXNpbmcgYSBtZXRhY2xhc3MKKyAgICBkZXJpdmVkIGZyb20gVHlwaW5nTWV0YSAoaW5jbHVkaW5nIGludGVybmFsIHN1YmNsYXNzZXMgY3JlYXRlZCBieQorICAgIGUuZy4gIFVuaW9uW1gsIFldKSBtdXN0IHBhc3MgX3Jvb3Q9VHJ1ZS4KKworICAgIFRoaXMgYWxzbyBkZWZpbmVzIGEgZHVtbXkgY29uc3RydWN0b3IgKGFsbCB0aGUgd29yayBpcyBkb25lIGluCisgICAgX19uZXdfXykgYW5kIGEgbmljZXIgcmVwcigpLgorICAgICIiIgorCisgICAgX2lzX3Byb3RvY29sID0gRmFsc2UKKworICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiwgX3Jvb3Q9RmFsc2UpOgorICAgICAgICBpZiBub3QgX3Jvb3Q6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbm5vdCBzdWJjbGFzcyAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnLCAnLmpvaW4obWFwKF90eXBlX3JlcHIsIGJhc2VzKSkgb3IgJygpJykpCisgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3ZHMpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgX2V2YWxfdHlwZShzZWxmLCBnbG9iYWxucywgbG9jYWxucyk6CisgICAgICAgICIiIk92ZXJyaWRlIHRoaXMgaW4gc3ViY2xhc3NlcyB0byBpbnRlcnByZXQgZm9yd2FyZCByZWZlcmVuY2VzLgorCisgICAgICAgIEZvciBleGFtcGxlLCBVbmlvblsnQyddIGlzIGludGVybmFsbHkgc3RvcmVkIGFzCisgICAgICAgIFVuaW9uW19Gb3J3YXJkUmVmKCdDJyldLCB3aGljaCBzaG91bGQgZXZhbHVhdGUgdG8gX1VuaW9uW0NdLAorICAgICAgICB3aGVyZSBDIGlzIGFuIG9iamVjdCBmb3VuZCBpbiBnbG9iYWxucyBvciBsb2NhbG5zIChzZWFyY2hpbmcKKyAgICAgICAgbG9jYWxucyBmaXJzdCwgb2YgY291cnNlKS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX2hhc190eXBlX3ZhcihzZWxmKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMuJXMnICUgKHNlbGYuX19tb2R1bGVfXywgX3F1YWxuYW1lKHNlbGYpKQorCisKK2NsYXNzIEZpbmFsOgorICAgICIiIk1peC1pbiBjbGFzcyB0byBwcmV2ZW50IGluc3RhbnRpYXRpb24uIiIiCisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgZGVmIF9fbmV3X18oc2VsZiwgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2Fubm90IGluc3RhbnRpYXRlICVyIiAlIHNlbGYuX19jbGFzc19fKQorCisKK2NsYXNzIF9Gb3J3YXJkUmVmKFR5cGluZ01ldGEpOgorICAgICIiIldyYXBwZXIgdG8gaG9sZCBhIGZvcndhcmQgcmVmZXJlbmNlLiIiIgorCisgICAgZGVmIF9fbmV3X18oY2xzLCBhcmcpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmcsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0ZvcndhcmRSZWYgbXVzdCBiZSBhIHN0cmluZyAtLSBnb3QgJXInICUgKGFyZywpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBjb2RlID0gY29tcGlsZShhcmcsICc8c3RyaW5nPicsICdldmFsJykKKyAgICAgICAgZXhjZXB0IFN5bnRheEVycm9yOgorICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IoJ0ZvcndhcmRSZWYgbXVzdCBiZSBhbiBleHByZXNzaW9uIC0tIGdvdCAlcicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFyZywpKQorICAgICAgICBzZWxmID0gc3VwZXIoKS5fX25ld19fKGNscywgYXJnLCAoKSwge30sIF9yb290PVRydWUpCisgICAgICAgIHNlbGYuX19mb3J3YXJkX2FyZ19fID0gYXJnCisgICAgICAgIHNlbGYuX19mb3J3YXJkX2NvZGVfXyA9IGNvZGUKKyAgICAgICAgc2VsZi5fX2ZvcndhcmRfZXZhbHVhdGVkX18gPSBGYWxzZQorICAgICAgICBzZWxmLl9fZm9yd2FyZF92YWx1ZV9fID0gTm9uZQorICAgICAgICB0eXBpbmdfZ2xvYmFscyA9IGdsb2JhbHMoKQorICAgICAgICBmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoMSkKKyAgICAgICAgd2hpbGUgZnJhbWUgaXMgbm90IE5vbmUgYW5kIGZyYW1lLmZfZ2xvYmFscyBpcyB0eXBpbmdfZ2xvYmFsczoKKyAgICAgICAgICAgIGZyYW1lID0gZnJhbWUuZl9iYWNrCisgICAgICAgIGFzc2VydCBmcmFtZSBpcyBub3QgTm9uZQorICAgICAgICBzZWxmLl9fZm9yd2FyZF9mcmFtZV9fID0gZnJhbWUKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfZXZhbF90eXBlKHNlbGYsIGdsb2JhbG5zLCBsb2NhbG5zKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobG9jYWxucywgZGljdCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0ZvcndhcmRSZWYgbG9jYWxucyBtdXN0IGJlIGEgZGljdCAtLSBnb3QgJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYWxucywpKQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShnbG9iYWxucywgZGljdCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0ZvcndhcmRSZWYgZ2xvYmFsbnMgbXVzdCBiZSBhIGRpY3QgLS0gZ290ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdsb2JhbG5zLCkpCisgICAgICAgIGlmIG5vdCBzZWxmLl9fZm9yd2FyZF9ldmFsdWF0ZWRfXzoKKyAgICAgICAgICAgIGlmIGdsb2JhbG5zIGlzIE5vbmUgYW5kIGxvY2FsbnMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBnbG9iYWxucyA9IGxvY2FsbnMgPSB7fQorICAgICAgICAgICAgZWxpZiBnbG9iYWxucyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGdsb2JhbG5zID0gbG9jYWxucworICAgICAgICAgICAgZWxpZiBsb2NhbG5zIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgbG9jYWxucyA9IGdsb2JhbG5zCisgICAgICAgICAgICBzZWxmLl9fZm9yd2FyZF92YWx1ZV9fID0gX3R5cGVfY2hlY2soCisgICAgICAgICAgICAgICAgZXZhbChzZWxmLl9fZm9yd2FyZF9jb2RlX18sIGdsb2JhbG5zLCBsb2NhbG5zKSwKKyAgICAgICAgICAgICAgICAiRm9yd2FyZCByZWZlcmVuY2VzIG11c3QgZXZhbHVhdGUgdG8gdHlwZXMuIikKKyAgICAgICAgICAgIHNlbGYuX19mb3J3YXJkX2V2YWx1YXRlZF9fID0gVHJ1ZQorICAgICAgICByZXR1cm4gc2VsZi5fX2ZvcndhcmRfdmFsdWVfXworCisgICAgZGVmIF9faW5zdGFuY2VjaGVja19fKHNlbGYsIG9iaik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiRm9yd2FyZCByZWZlcmVuY2VzIGNhbm5vdCBiZSB1c2VkIHdpdGggaXNpbnN0YW5jZSgpLiIpCisKKyAgICBkZWYgX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgY2xzKToKKyAgICAgICAgaWYgbm90IHNlbGYuX19mb3J3YXJkX2V2YWx1YXRlZF9fOgorICAgICAgICAgICAgZ2xvYmFsbnMgPSBzZWxmLl9fZm9yd2FyZF9mcmFtZV9fLmZfZ2xvYmFscworICAgICAgICAgICAgbG9jYWxucyA9IHNlbGYuX19mb3J3YXJkX2ZyYW1lX18uZl9sb2NhbHMKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLl9ldmFsX3R5cGUoZ2xvYmFsbnMsIGxvY2FsbnMpCisgICAgICAgICAgICBleGNlcHQgTmFtZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZSAgIyBUb28gZWFybHkuCisgICAgICAgIHJldHVybiBpc3N1YmNsYXNzKGNscywgc2VsZi5fX2ZvcndhcmRfdmFsdWVfXykKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICdfRm9yd2FyZFJlZiglciknICUgKHNlbGYuX19mb3J3YXJkX2FyZ19fLCkKKworCitjbGFzcyBfVHlwZUFsaWFzOgorICAgICIiIkludGVybmFsIGhlbHBlciBjbGFzcyBmb3IgZGVmaW5pbmcgZ2VuZXJpYyB2YXJpYW50cyBvZiBjb25jcmV0ZSB0eXBlcy4KKworICAgIE5vdGUgdGhhdCB0aGlzIGlzIG5vdCBhIHR5cGU7IGxldCdzIGNhbGwgaXQgYSBwc2V1ZG8tdHlwZS4gIEl0IGNhbgorICAgIGJlIHVzZWQgaW4gaW5zdGFuY2UgYW5kIHN1YmNsYXNzIGNoZWNrcywgZS5nLiBpc2luc3RhbmNlKG0sIE1hdGNoKQorICAgIG9yIGlzc3ViY2xhc3ModHlwZShtKSwgTWF0Y2gpLiAgSG93ZXZlciwgaXQgY2Fubm90IGJlIGl0c2VsZiB0aGUKKyAgICB0YXJnZXQgb2YgYW4gaXNzdWJjbGFzcygpIGNhbGw7IGUuZy4gaXNzdWJjbGFzcyhNYXRjaCwgQykgKGZvcgorICAgIHNvbWUgYXJiaXRyYXJ5IGNsYXNzIEMpIHJhaXNlcyBUeXBlRXJyb3IgcmF0aGVyIHRoYW4gcmV0dXJuaW5nCisgICAgRmFsc2UuCisgICAgIiIiCisKKyAgICBfX3Nsb3RzX18gPSAoJ25hbWUnLCAndHlwZV92YXInLCAnaW1wbF90eXBlJywgJ3R5cGVfY2hlY2tlcicpCisKKyAgICBkZWYgX19uZXdfXyhjbHMsICphcmdzLCAqKmt3ZHMpOgorICAgICAgICAiIiJDb25zdHJ1Y3Rvci4KKworICAgICAgICBUaGlzIG9ubHkgZXhpc3RzIHRvIGdpdmUgYSBiZXR0ZXIgZXJyb3IgbWVzc2FnZSBpbiBjYXNlCisgICAgICAgIHNvbWVvbmUgdHJpZXMgdG8gc3ViY2xhc3MgYSB0eXBlIGFsaWFzIChub3QgYSBnb29kIGlkZWEpLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgKGxlbihhcmdzKSA9PSAzIGFuZAorICAgICAgICAgICAgaXNpbnN0YW5jZShhcmdzWzBdLCBzdHIpIGFuZAorICAgICAgICAgICAgaXNpbnN0YW5jZShhcmdzWzFdLCB0dXBsZSkpOgorICAgICAgICAgICAgIyBDbG9zZSBlbm91Z2guCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkEgdHlwZSBhbGlhcyBjYW5ub3QgYmUgc3ViY2xhc3NlZCIpCisgICAgICAgIHJldHVybiBvYmplY3QuX19uZXdfXyhjbHMpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgdHlwZV92YXIsIGltcGxfdHlwZSwgdHlwZV9jaGVja2VyKToKKyAgICAgICAgIiIiSW5pdGlhbGl6ZXIuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG5hbWU6IFRoZSBuYW1lLCBlLmcuICdQYXR0ZXJuJy4KKyAgICAgICAgICAgIHR5cGVfdmFyOiBUaGUgdHlwZSBwYXJhbWV0ZXIsIGUuZy4gQW55U3RyLCBvciB0aGUKKyAgICAgICAgICAgICAgICBzcGVjaWZpYyB0eXBlLCBlLmcuIHN0ci4KKyAgICAgICAgICAgIGltcGxfdHlwZTogVGhlIGltcGxlbWVudGF0aW9uIHR5cGUuCisgICAgICAgICAgICB0eXBlX2NoZWNrZXI6IEZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4gaW1wbF90eXBlIGluc3RhbmNlLgorICAgICAgICAgICAgICAgIGFuZCByZXR1cm5zIGEgdmFsdWUgdGhhdCBzaG91bGQgYmUgYSB0eXBlX3ZhciBpbnN0YW5jZS4KKyAgICAgICAgIiIiCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG5hbWUsIHN0ciksIHJlcHIobmFtZSkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodHlwZV92YXIsIHR5cGUpLCByZXByKHR5cGVfdmFyKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpbXBsX3R5cGUsIHR5cGUpLCByZXByKGltcGxfdHlwZSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKGltcGxfdHlwZSwgVHlwaW5nTWV0YSksIHJlcHIoaW1wbF90eXBlKQorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYudHlwZV92YXIgPSB0eXBlX3ZhcgorICAgICAgICBzZWxmLmltcGxfdHlwZSA9IGltcGxfdHlwZQorICAgICAgICBzZWxmLnR5cGVfY2hlY2tlciA9IHR5cGVfY2hlY2tlcgorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzWyVzXSIgJSAoc2VsZi5uYW1lLCBfdHlwZV9yZXByKHNlbGYudHlwZV92YXIpKQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIHBhcmFtZXRlcik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHBhcmFtZXRlciwgdHlwZSksIHJlcHIocGFyYW1ldGVyKQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzZWxmLnR5cGVfdmFyLCBUeXBlVmFyKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgY2Fubm90IGJlIGZ1cnRoZXIgcGFyYW1ldGVyaXplZC4iICUgc2VsZikKKyAgICAgICAgaWYgc2VsZi50eXBlX3Zhci5fX2NvbnN0cmFpbnRzX186CisgICAgICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyhwYXJhbWV0ZXIsIFVuaW9uW3NlbGYudHlwZV92YXIuX19jb25zdHJhaW50c19fXSk6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBpcyBub3QgYSB2YWxpZCBzdWJzdGl0dXRpb24gZm9yICVzLiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1ldGVyLCBzZWxmLnR5cGVfdmFyKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYubmFtZSwgcGFyYW1ldGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbXBsX3R5cGUsIHNlbGYudHlwZV9jaGVja2VyKQorCisgICAgZGVmIF9faW5zdGFuY2VjaGVja19fKHNlbGYsIG9iaik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVHlwZSBhbGlhc2VzIGNhbm5vdCBiZSB1c2VkIHdpdGggaXNpbnN0YW5jZSgpLiIpCisKKyAgICBkZWYgX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgY2xzKToKKyAgICAgICAgaWYgY2xzIGlzIEFueToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIGlzaW5zdGFuY2UoY2xzLCBfVHlwZUFsaWFzKToKKyAgICAgICAgICAgICMgQ292YXJpYW5jZS4gIEZvciBub3csIHdlIGNvbXBhcmUgYnkgbmFtZS4KKyAgICAgICAgICAgIHJldHVybiAoY2xzLm5hbWUgPT0gc2VsZi5uYW1lIGFuZAorICAgICAgICAgICAgICAgICAgICBpc3N1YmNsYXNzKGNscy50eXBlX3Zhciwgc2VsZi50eXBlX3ZhcikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIE5vdGUgdGhhdCB0aGlzIGlzIHRvbyBsZW5pZW50LCBiZWNhdXNlIHRoZQorICAgICAgICAgICAgIyBpbXBsZW1lbnRhdGlvbiB0eXBlIGRvZXNuJ3QgY2FycnkgaW5mb3JtYXRpb24gYWJvdXQKKyAgICAgICAgICAgICMgd2hldGhlciBpdCBpcyBhYm91dCBieXRlcyBvciBzdHIgKGZvciBleGFtcGxlKS4KKyAgICAgICAgICAgIHJldHVybiBpc3N1YmNsYXNzKGNscywgc2VsZi5pbXBsX3R5cGUpCisKKworZGVmIF9oYXNfdHlwZV92YXIodCk6CisgICAgcmV0dXJuIHQgaXMgbm90IE5vbmUgYW5kIGlzaW5zdGFuY2UodCwgVHlwaW5nTWV0YSkgYW5kIHQuX2hhc190eXBlX3ZhcigpCisKKworZGVmIF9ldmFsX3R5cGUodCwgZ2xvYmFsbnMsIGxvY2FsbnMpOgorICAgIGlmIGlzaW5zdGFuY2UodCwgVHlwaW5nTWV0YSk6CisgICAgICAgIHJldHVybiB0Ll9ldmFsX3R5cGUoZ2xvYmFsbnMsIGxvY2FsbnMpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHQKKworCitkZWYgX3R5cGVfY2hlY2soYXJnLCBtc2cpOgorICAgICIiIkNoZWNrIHRoYXQgdGhlIGFyZ3VtZW50IGlzIGEgdHlwZSwgYW5kIHJldHVybiBpdC4KKworICAgIEFzIGEgc3BlY2lhbCBjYXNlLCBhY2NlcHQgTm9uZSBhbmQgcmV0dXJuIHR5cGUoTm9uZSkgaW5zdGVhZC4KKyAgICBBbHNvLCBfVHlwZUFsaWFzIGluc3RhbmNlcyAoZS5nLiBNYXRjaCwgUGF0dGVybikgYXJlIGFjY2VwdGFibGUuCisKKyAgICBUaGUgbXNnIGFyZ3VtZW50IGlzIGEgaHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZSwgZS5nLgorCisgICAgICAgICJVbmlvblthcmcsIC4uLl06IGFyZyBzaG91bGQgYmUgYSB0eXBlLiIKKworICAgIFdlIGFwcGVuZCB0aGUgcmVwcigpIG9mIHRoZSBhY3R1YWwgdmFsdWUgKHRydW5jYXRlZCB0byAxMDAgY2hhcnMpLgorICAgICIiIgorICAgIGlmIGFyZyBpcyBOb25lOgorICAgICAgICByZXR1cm4gdHlwZShOb25lKQorICAgIGlmIGlzaW5zdGFuY2UoYXJnLCBzdHIpOgorICAgICAgICBhcmcgPSBfRm9yd2FyZFJlZihhcmcpCisgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJnLCAodHlwZSwgX1R5cGVBbGlhcykpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnICsgIiBHb3QgJS4xMDByLiIgJSAoYXJnLCkpCisgICAgcmV0dXJuIGFyZworCisKK2RlZiBfdHlwZV9yZXByKG9iaik6CisgICAgIiIiUmV0dXJuIHRoZSByZXByKCkgb2YgYW4gb2JqZWN0LCBzcGVjaWFsLWNhc2luZyB0eXBlcy4KKworICAgIElmIG9iaiBpcyBhIHR5cGUsIHdlIHJldHVybiBhIHNob3J0ZXIgdmVyc2lvbiB0aGFuIHRoZSBkZWZhdWx0CisgICAgdHlwZS5fX3JlcHJfXywgYmFzZWQgb24gdGhlIG1vZHVsZSBhbmQgcXVhbGlmaWVkIG5hbWUsIHdoaWNoIGlzCisgICAgdHlwaWNhbGx5IGVub3VnaCB0byB1bmlxdWVseSBpZGVudGlmeSBhIHR5cGUuICBGb3IgZXZlcnl0aGluZworICAgIGVsc2UsIHdlIGZhbGwgYmFjayBvbiByZXByKG9iaikuCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGUpIGFuZCBub3QgaXNpbnN0YW5jZShvYmosIFR5cGluZ01ldGEpOgorICAgICAgICBpZiBvYmouX19tb2R1bGVfXyA9PSAnYnVpbHRpbnMnOgorICAgICAgICAgICAgcmV0dXJuIF9xdWFsbmFtZShvYmopCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gJyVzLiVzJyAlIChvYmouX19tb2R1bGVfXywgX3F1YWxuYW1lKG9iaikpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHJlcHIob2JqKQorCisKK2NsYXNzIEFueU1ldGEoVHlwaW5nTWV0YSk6CisgICAgIiIiTWV0YWNsYXNzIGZvciBBbnkuIiIiCisKKyAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIF9yb290PUZhbHNlKToKKyAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIF9yb290PV9yb290KQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9faW5zdGFuY2VjaGVja19fKHNlbGYsIG9iaik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQW55IGNhbm5vdCBiZSB1c2VkIHdpdGggaXNpbnN0YW5jZSgpLiIpCisKKyAgICBkZWYgX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgY2xzKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY2xzLCB0eXBlKToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fc3ViY2xhc3NjaGVja19fKGNscykgICMgVG8gVHlwZUVycm9yLgorICAgICAgICByZXR1cm4gVHJ1ZQorCisKK2NsYXNzIEFueShGaW5hbCwgbWV0YWNsYXNzPUFueU1ldGEsIF9yb290PVRydWUpOgorICAgICIiIlNwZWNpYWwgdHlwZSBpbmRpY2F0aW5nIGFuIHVuY29uc3RyYWluZWQgdHlwZS4KKworICAgIC0gQW55IG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBBbnkuCisgICAgLSBBbnkgY2xhc3MgaXMgYSBzdWJjbGFzcyBvZiBBbnkuCisgICAgLSBBcyBhIHNwZWNpYWwgY2FzZSwgQW55IGFuZCBvYmplY3QgYXJlIHN1YmNsYXNzZXMgb2YgZWFjaCBvdGhlci4KKyAgICAiIiIKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKworY2xhc3MgVHlwZVZhcihUeXBpbmdNZXRhLCBtZXRhY2xhc3M9VHlwaW5nTWV0YSwgX3Jvb3Q9VHJ1ZSk6CisgICAgIiIiVHlwZSB2YXJpYWJsZS4KKworICAgIFVzYWdlOjoKKworICAgICAgVCA9IFR5cGVWYXIoJ1QnKSAgIyBDYW4gYmUgYW55dGhpbmcKKyAgICAgIEEgPSBUeXBlVmFyKCdBJywgc3RyLCBieXRlcykgICMgTXVzdCBiZSBzdHIgb3IgYnl0ZXMKKworICAgIFR5cGUgdmFyaWFibGVzIGV4aXN0IHByaW1hcmlseSBmb3IgdGhlIGJlbmVmaXQgb2Ygc3RhdGljIHR5cGUKKyAgICBjaGVja2Vycy4gIFRoZXkgc2VydmUgYXMgdGhlIHBhcmFtZXRlcnMgZm9yIGdlbmVyaWMgdHlwZXMgYXMgd2VsbAorICAgIGFzIGZvciBnZW5lcmljIGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgU2VlIGNsYXNzIEdlbmVyaWMgZm9yIG1vcmUKKyAgICBpbmZvcm1hdGlvbiBvbiBnZW5lcmljIHR5cGVzLiAgR2VuZXJpYyBmdW5jdGlvbnMgd29yayBhcyBmb2xsb3dzOgorCisgICAgICBkZWYgcmVwZWF0KHg6IFQsIG46IGludCkgLT4gU2VxdWVuY2VbVF06CisgICAgICAgICAgJycnUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIG4gcmVmZXJlbmNlcyB0byB4LicnJworICAgICAgICAgIHJldHVybiBbeF0qbgorCisgICAgICBkZWYgbG9uZ2VzdCh4OiBBLCB5OiBBKSAtPiBBOgorICAgICAgICAgICcnJ1JldHVybiB0aGUgbG9uZ2VzdCBvZiB0d28gc3RyaW5ncy4nJycKKyAgICAgICAgICByZXR1cm4geCBpZiBsZW4oeCkgPj0gbGVuKHkpIGVsc2UgeQorCisgICAgVGhlIGxhdHRlciBleGFtcGxlJ3Mgc2lnbmF0dXJlIGlzIGVzc2VudGlhbGx5IHRoZSBvdmVybG9hZGluZworICAgIG9mIChzdHIsIHN0cikgLT4gc3RyIGFuZCAoYnl0ZXMsIGJ5dGVzKSAtPiBieXRlcy4gIEFsc28gbm90ZQorICAgIHRoYXQgaWYgdGhlIGFyZ3VtZW50cyBhcmUgaW5zdGFuY2VzIG9mIHNvbWUgc3ViY2xhc3Mgb2Ygc3RyLAorICAgIHRoZSByZXR1cm4gdHlwZSBpcyBzdGlsbCBwbGFpbiBzdHIuCisKKyAgICBBdCBydW50aW1lLCBpc2luc3RhbmNlKHgsIFQpIHdpbGwgcmFpc2UgVHlwZUVycm9yLiAgSG93ZXZlciwKKyAgICBpc3N1YmNsYXNzKEMsIFQpIGlzIHRydWUgZm9yIGFueSBjbGFzcyBDLCBhbmQgaXNzdWJjbGFzcyhzdHIsIEEpCisgICAgYW5kIGlzc3ViY2xhc3MoYnl0ZXMsIEEpIGFyZSB0cnVlLCBhbmQgaXNzdWJjbGFzcyhpbnQsIEEpIGlzCisgICAgZmFsc2UuCisKKyAgICBUeXBlIHZhcmlhYmxlcyBtYXkgYmUgbWFya2VkIGNvdmFyaWFudCBvciBjb250cmF2YXJpYW50IGJ5IHBhc3NpbmcKKyAgICBjb3ZhcmlhbnQ9VHJ1ZSBvciBjb250cmF2YXJpYW50PVRydWUuICBTZWUgUEVQIDQ4NCBmb3IgbW9yZQorICAgIGRldGFpbHMuICBCeSBkZWZhdWx0IHR5cGUgdmFyaWFibGVzIGFyZSBpbnZhcmlhbnQuCisKKyAgICBUeXBlIHZhcmlhYmxlcyBjYW4gYmUgaW50cm9zcGVjdGVkLiBlLmcuOgorCisgICAgICBULl9fbmFtZV9fID09ICdUJworICAgICAgVC5fX2NvbnN0cmFpbnRzX18gPT0gKCkKKyAgICAgIFQuX19jb3ZhcmlhbnRfXyA9PSBGYWxzZQorICAgICAgVC5fX2NvbnRyYXZhcmlhbnRfXyA9IEZhbHNlCisgICAgICBBLl9fY29uc3RyYWludHNfXyA9PSAoc3RyLCBieXRlcykKKyAgICAiIiIKKworICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgKmNvbnN0cmFpbnRzLCBib3VuZD1Ob25lLAorICAgICAgICAgICAgICAgIGNvdmFyaWFudD1GYWxzZSwgY29udHJhdmFyaWFudD1GYWxzZSk6CisgICAgICAgIHNlbGYgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCAoRmluYWwsKSwge30sIF9yb290PVRydWUpCisgICAgICAgIGlmIGNvdmFyaWFudCBhbmQgY29udHJhdmFyaWFudDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkJpdmFyaWFudCB0eXBlIHZhcmlhYmxlcyBhcmUgbm90IHN1cHBvcnRlZC4iKQorICAgICAgICBzZWxmLl9fY292YXJpYW50X18gPSBib29sKGNvdmFyaWFudCkKKyAgICAgICAgc2VsZi5fX2NvbnRyYXZhcmlhbnRfXyA9IGJvb2woY29udHJhdmFyaWFudCkKKyAgICAgICAgaWYgY29uc3RyYWludHMgYW5kIGJvdW5kIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDb25zdHJhaW50cyBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBib3VuZD0uLi4iKQorICAgICAgICBpZiBjb25zdHJhaW50cyBhbmQgbGVuKGNvbnN0cmFpbnRzKSA9PSAxOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJBIHNpbmdsZSBjb25zdHJhaW50IGlzIG5vdCBhbGxvd2VkIikKKyAgICAgICAgbXNnID0gIlR5cGVWYXIobmFtZSwgY29uc3RyYWludCwgLi4uKTogY29uc3RyYWludHMgbXVzdCBiZSB0eXBlcy4iCisgICAgICAgIHNlbGYuX19jb25zdHJhaW50c19fID0gdHVwbGUoX3R5cGVfY2hlY2sodCwgbXNnKSBmb3IgdCBpbiBjb25zdHJhaW50cykKKyAgICAgICAgaWYgYm91bmQ6CisgICAgICAgICAgICBzZWxmLl9fYm91bmRfXyA9IF90eXBlX2NoZWNrKGJvdW5kLCAiQm91bmQgbXVzdCBiZSBhIHR5cGUuIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX19ib3VuZF9fID0gTm9uZQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9oYXNfdHlwZV92YXIoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGlmIHNlbGYuX19jb3ZhcmlhbnRfXzoKKyAgICAgICAgICAgIHByZWZpeCA9ICcrJworICAgICAgICBlbGlmIHNlbGYuX19jb250cmF2YXJpYW50X186CisgICAgICAgICAgICBwcmVmaXggPSAnLScKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByZWZpeCA9ICd+JworICAgICAgICByZXR1cm4gcHJlZml4ICsgc2VsZi5fX25hbWVfXworCisgICAgZGVmIF9faW5zdGFuY2VjaGVja19fKHNlbGYsIGluc3RhbmNlKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJUeXBlIHZhcmlhYmxlcyBjYW5ub3QgYmUgdXNlZCB3aXRoIGlzaW5zdGFuY2UoKS4iKQorCisgICAgZGVmIF9fc3ViY2xhc3NjaGVja19fKHNlbGYsIGNscyk6CisgICAgICAgICMgVE9ETzogTWFrZSB0aGlzIHJhaXNlIFR5cGVFcnJvciB0b28/CisgICAgICAgIGlmIGNscyBpcyBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgY2xzIGlzIEFueToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIHNlbGYuX19ib3VuZF9fIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGlzc3ViY2xhc3MoY2xzLCBzZWxmLl9fYm91bmRfXykKKyAgICAgICAgaWYgc2VsZi5fX2NvbnN0cmFpbnRzX186CisgICAgICAgICAgICByZXR1cm4gYW55KGlzc3ViY2xhc3MoY2xzLCBjKSBmb3IgYyBpbiBzZWxmLl9fY29uc3RyYWludHNfXykKKyAgICAgICAgcmV0dXJuIFRydWUKKworCisjIFNvbWUgdW5jb25zdHJhaW5lZCB0eXBlIHZhcmlhYmxlcy4gIFRoZXNlIGFyZSB1c2VkIGJ5IHRoZSBjb250YWluZXIgdHlwZXMuCitUID0gVHlwZVZhcignVCcpICAjIEFueSB0eXBlLgorS1QgPSBUeXBlVmFyKCdLVCcpICAjIEtleSB0eXBlLgorVlQgPSBUeXBlVmFyKCdWVCcpICAjIFZhbHVlIHR5cGUuCitUX2NvID0gVHlwZVZhcignVF9jbycsIGNvdmFyaWFudD1UcnVlKSAgIyBBbnkgdHlwZSBjb3ZhcmlhbnQgY29udGFpbmVycy4KK1ZfY28gPSBUeXBlVmFyKCdWX2NvJywgY292YXJpYW50PVRydWUpICAjIEFueSB0eXBlIGNvdmFyaWFudCBjb250YWluZXJzLgorVlRfY28gPSBUeXBlVmFyKCdWVF9jbycsIGNvdmFyaWFudD1UcnVlKSAgIyBWYWx1ZSB0eXBlIGNvdmFyaWFudCBjb250YWluZXJzLgorVF9jb250cmEgPSBUeXBlVmFyKCdUX2NvbnRyYScsIGNvbnRyYXZhcmlhbnQ9VHJ1ZSkgICMgRGl0dG8gY29udHJhdmFyaWFudC4KKworIyBBIHVzZWZ1bCB0eXBlIHZhcmlhYmxlIHdpdGggY29uc3RyYWludHMuICBUaGlzIHJlcHJlc2VudHMgc3RyaW5nIHR5cGVzLgorIyBUT0RPOiBXaGF0IGFib3V0IGJ5dGVhcnJheSwgbWVtb3J5dmlldz8KK0FueVN0ciA9IFR5cGVWYXIoJ0FueVN0cicsIGJ5dGVzLCBzdHIpCisKKworY2xhc3MgVW5pb25NZXRhKFR5cGluZ01ldGEpOgorICAgICIiIk1ldGFjbGFzcyBmb3IgVW5pb24uIiIiCisKKyAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIHBhcmFtZXRlcnM9Tm9uZSwgX3Jvb3Q9RmFsc2UpOgorICAgICAgICBpZiBwYXJhbWV0ZXJzIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgX3Jvb3Q9X3Jvb3QpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhcmFtZXRlcnMsIHR1cGxlKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiRXhwZWN0ZWQgcGFyYW1ldGVycz08dHVwbGU+IikKKyAgICAgICAgIyBGbGF0dGVuIG91dCBVbmlvbltVbmlvblsuLi5dLCAuLi5dIGFuZCB0eXBlLWNoZWNrIG5vbi1VbmlvbiBhcmdzLgorICAgICAgICBwYXJhbXMgPSBbXQorICAgICAgICBtc2cgPSAiVW5pb25bYXJnLCAuLi5dOiBlYWNoIGFyZyBtdXN0IGJlIGEgdHlwZS4iCisgICAgICAgIGZvciBwIGluIHBhcmFtZXRlcnM6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHAsIFVuaW9uTWV0YSk6CisgICAgICAgICAgICAgICAgcGFyYW1zLmV4dGVuZChwLl9fdW5pb25fcGFyYW1zX18pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoX3R5cGVfY2hlY2socCwgbXNnKSkKKyAgICAgICAgIyBXZWVkIG91dCBzdHJpY3QgZHVwbGljYXRlcywgcHJlc2VydmluZyB0aGUgZmlyc3Qgb2YgZWFjaCBvY2N1cnJlbmNlLgorICAgICAgICBhbGxfcGFyYW1zID0gc2V0KHBhcmFtcykKKyAgICAgICAgaWYgbGVuKGFsbF9wYXJhbXMpIDwgbGVuKHBhcmFtcyk6CisgICAgICAgICAgICBuZXdfcGFyYW1zID0gW10KKyAgICAgICAgICAgIGZvciB0IGluIHBhcmFtczoKKyAgICAgICAgICAgICAgICBpZiB0IGluIGFsbF9wYXJhbXM6CisgICAgICAgICAgICAgICAgICAgIG5ld19wYXJhbXMuYXBwZW5kKHQpCisgICAgICAgICAgICAgICAgICAgIGFsbF9wYXJhbXMucmVtb3ZlKHQpCisgICAgICAgICAgICBwYXJhbXMgPSBuZXdfcGFyYW1zCisgICAgICAgICAgICBhc3NlcnQgbm90IGFsbF9wYXJhbXMsIGFsbF9wYXJhbXMKKyAgICAgICAgIyBXZWVkIG91dCBzdWJjbGFzc2VzLgorICAgICAgICAjIEUuZy4gVW5pb25baW50LCBFbXBsb3llZSwgTWFuYWdlcl0gPT0gVW5pb25baW50LCBFbXBsb3llZV0uCisgICAgICAgICMgSWYgQW55IG9yIG9iamVjdCBpcyBwcmVzZW50IGl0IHdpbGwgYmUgdGhlIHNvbGUgc3Vydml2b3IuCisgICAgICAgICMgSWYgYm90aCBBbnkgYW5kIG9iamVjdCBhcmUgcHJlc2VudCwgQW55IHdpbnMuCisgICAgICAgICMgTmV2ZXIgZGlzY2FyZCB0eXBlIHZhcmlhYmxlcywgZXhjZXB0IGFnYWluc3QgQW55LgorICAgICAgICAjIChJbiBwYXJ0aWN1bGFyLCBVbmlvbltzdHIsIEFueVN0cl0gIT0gQW55U3RyLikKKyAgICAgICAgYWxsX3BhcmFtcyA9IHNldChwYXJhbXMpCisgICAgICAgIGZvciB0MSBpbiBwYXJhbXM6CisgICAgICAgICAgICBpZiB0MSBpcyBBbnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEFueQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0MSwgVHlwZVZhcik6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodDEsIF9UeXBlQWxpYXMpOgorICAgICAgICAgICAgICAgICMgX1R5cGVBbGlhcyBpcyBub3QgYSByZWFsIGNsYXNzLgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBhbnkoaXNzdWJjbGFzcyh0MSwgdDIpCisgICAgICAgICAgICAgICAgICAgZm9yIHQyIGluIGFsbF9wYXJhbXMgLSB7dDF9IGlmIG5vdCBpc2luc3RhbmNlKHQyLCBUeXBlVmFyKSk6CisgICAgICAgICAgICAgICAgYWxsX3BhcmFtcy5yZW1vdmUodDEpCisgICAgICAgICMgSXQncyBub3QgYSB1bmlvbiBpZiB0aGVyZSdzIG9ubHkgb25lIHR5cGUgbGVmdC4KKyAgICAgICAgaWYgbGVuKGFsbF9wYXJhbXMpID09IDE6CisgICAgICAgICAgICByZXR1cm4gYWxsX3BhcmFtcy5wb3AoKQorICAgICAgICAjIENyZWF0ZSBhIG5ldyBjbGFzcyB3aXRoIHRoZXNlIHBhcmFtcy4KKyAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCB7fSwgX3Jvb3Q9VHJ1ZSkKKyAgICAgICAgc2VsZi5fX3VuaW9uX3BhcmFtc19fID0gdHVwbGUodCBmb3IgdCBpbiBwYXJhbXMgaWYgdCBpbiBhbGxfcGFyYW1zKQorICAgICAgICBzZWxmLl9fdW5pb25fc2V0X3BhcmFtc19fID0gZnJvemVuc2V0KHNlbGYuX191bmlvbl9wYXJhbXNfXykKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfZXZhbF90eXBlKHNlbGYsIGdsb2JhbG5zLCBsb2NhbG5zKToKKyAgICAgICAgcCA9IHR1cGxlKF9ldmFsX3R5cGUodCwgZ2xvYmFsbnMsIGxvY2FsbnMpCisgICAgICAgICAgICAgICAgICBmb3IgdCBpbiBzZWxmLl9fdW5pb25fcGFyYW1zX18pCisgICAgICAgIGlmIHAgPT0gc2VsZi5fX3VuaW9uX3BhcmFtc19fOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl9fbmFtZV9fLCBzZWxmLl9fYmFzZXNfXywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCwgX3Jvb3Q9VHJ1ZSkKKworICAgIGRlZiBfaGFzX3R5cGVfdmFyKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9fdW5pb25fcGFyYW1zX186CisgICAgICAgICAgICBmb3IgdCBpbiBzZWxmLl9fdW5pb25fcGFyYW1zX186CisgICAgICAgICAgICAgICAgaWYgX2hhc190eXBlX3Zhcih0KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHIgPSBzdXBlcigpLl9fcmVwcl9fKCkKKyAgICAgICAgaWYgc2VsZi5fX3VuaW9uX3BhcmFtc19fOgorICAgICAgICAgICAgciArPSAnWyVzXScgJSAoJywgJy5qb2luKF90eXBlX3JlcHIodCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdCBpbiBzZWxmLl9fdW5pb25fcGFyYW1zX18pKQorICAgICAgICByZXR1cm4gcgorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIHBhcmFtZXRlcnMpOgorICAgICAgICBpZiBzZWxmLl9fdW5pb25fcGFyYW1zX18gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgIkNhbm5vdCBzdWJzY3JpcHQgYW4gZXhpc3RpbmcgVW5pb24uIFVzZSBVbmlvblt1LCB0XSBpbnN0ZWFkLiIpCisgICAgICAgIGlmIHBhcmFtZXRlcnMgPT0gKCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbm5vdCB0YWtlIGEgVW5pb24gb2Ygbm8gdHlwZXMuIikKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGFyYW1ldGVycywgdHVwbGUpOgorICAgICAgICAgICAgcGFyYW1ldGVycyA9IChwYXJhbWV0ZXJzLCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX19uYW1lX18sIHNlbGYuX19iYXNlc19fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdChzZWxmLl9fZGljdF9fKSwgcGFyYW1ldGVycywgX3Jvb3Q9VHJ1ZSkKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgVW5pb25NZXRhKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX3VuaW9uX3NldF9wYXJhbXNfXyA9PSBvdGhlci5fX3VuaW9uX3NldF9wYXJhbXNfXworCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLl9fdW5pb25fc2V0X3BhcmFtc19fKQorCisgICAgZGVmIF9faW5zdGFuY2VjaGVja19fKHNlbGYsIG9iaik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5pb25zIGNhbm5vdCBiZSB1c2VkIHdpdGggaXNpbnN0YW5jZSgpLiIpCisKKyAgICBkZWYgX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgY2xzKToKKyAgICAgICAgaWYgY2xzIGlzIEFueToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIHNlbGYuX191bmlvbl9wYXJhbXNfXyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2UoY2xzLCBVbmlvbk1ldGEpCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShjbHMsIFVuaW9uTWV0YSk6CisgICAgICAgICAgICBpZiBjbHMuX191bmlvbl9wYXJhbXNfXyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgcmV0dXJuIGFsbChpc3N1YmNsYXNzKGMsIHNlbGYpIGZvciBjIGluIChjbHMuX191bmlvbl9wYXJhbXNfXykpCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShjbHMsIFR5cGVWYXIpOgorICAgICAgICAgICAgaWYgY2xzIGluIHNlbGYuX191bmlvbl9wYXJhbXNfXzoKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgaWYgY2xzLl9fY29uc3RyYWludHNfXzoKKyAgICAgICAgICAgICAgICByZXR1cm4gaXNzdWJjbGFzcyhVbmlvbltjbHMuX19jb25zdHJhaW50c19fXSwgc2VsZikKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGFueShpc3N1YmNsYXNzKGNscywgdCkgZm9yIHQgaW4gc2VsZi5fX3VuaW9uX3BhcmFtc19fKQorCisKK2NsYXNzIFVuaW9uKEZpbmFsLCBtZXRhY2xhc3M9VW5pb25NZXRhLCBfcm9vdD1UcnVlKToKKyAgICAiIiJVbmlvbiB0eXBlOyBVbmlvbltYLCBZXSBtZWFucyBlaXRoZXIgWCBvciBZLgorCisgICAgVG8gZGVmaW5lIGEgdW5pb24sIHVzZSBlLmcuIFVuaW9uW2ludCwgc3RyXS4gIERldGFpbHM6CisKKyAgICAtIFRoZSBhcmd1bWVudHMgbXVzdCBiZSB0eXBlcyBhbmQgdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUuCisKKyAgICAtIE5vbmUgYXMgYW4gYXJndW1lbnQgaXMgYSBzcGVjaWFsIGNhc2UgYW5kIGlzIHJlcGxhY2VkIGJ5CisgICAgICB0eXBlKE5vbmUpLgorCisgICAgLSBVbmlvbnMgb2YgdW5pb25zIGFyZSBmbGF0dGVuZWQsIGUuZy46OgorCisgICAgICAgIFVuaW9uW1VuaW9uW2ludCwgc3RyXSwgZmxvYXRdID09IFVuaW9uW2ludCwgc3RyLCBmbG9hdF0KKworICAgIC0gVW5pb25zIG9mIGEgc2luZ2xlIGFyZ3VtZW50IHZhbmlzaCwgZS5nLjo6CisKKyAgICAgICAgVW5pb25baW50XSA9PSBpbnQgICMgVGhlIGNvbnN0cnVjdG9yIGFjdHVhbGx5IHJldHVybnMgaW50CisKKyAgICAtIFJlZHVuZGFudCBhcmd1bWVudHMgYXJlIHNraXBwZWQsIGUuZy46OgorCisgICAgICAgIFVuaW9uW2ludCwgc3RyLCBpbnRdID09IFVuaW9uW2ludCwgc3RyXQorCisgICAgLSBXaGVuIGNvbXBhcmluZyB1bmlvbnMsIHRoZSBhcmd1bWVudCBvcmRlciBpcyBpZ25vcmVkLCBlLmcuOjoKKworICAgICAgICBVbmlvbltpbnQsIHN0cl0gPT0gVW5pb25bc3RyLCBpbnRdCisKKyAgICAtIFdoZW4gdHdvIGFyZ3VtZW50cyBoYXZlIGEgc3ViY2xhc3MgcmVsYXRpb25zaGlwLCB0aGUgbGVhc3QKKyAgICAgIGRlcml2ZWQgYXJndW1lbnQgaXMga2VwdCwgZS5nLjo6CisKKyAgICAgICAgY2xhc3MgRW1wbG95ZWU6IHBhc3MKKyAgICAgICAgY2xhc3MgTWFuYWdlcihFbXBsb3llZSk6IHBhc3MKKyAgICAgICAgVW5pb25baW50LCBFbXBsb3llZSwgTWFuYWdlcl0gPT0gVW5pb25baW50LCBFbXBsb3llZV0KKyAgICAgICAgVW5pb25bTWFuYWdlciwgaW50LCBFbXBsb3llZV0gPT0gVW5pb25baW50LCBFbXBsb3llZV0KKyAgICAgICAgVW5pb25bRW1wbG95ZWUsIE1hbmFnZXJdID09IEVtcGxveWVlCisKKyAgICAtIENvcm9sbGFyeTogaWYgQW55IGlzIHByZXNlbnQgaXQgaXMgdGhlIHNvbGUgc3Vydml2b3IsIGUuZy46OgorCisgICAgICAgIFVuaW9uW2ludCwgQW55XSA9PSBBbnkKKworICAgIC0gU2ltaWxhciBmb3Igb2JqZWN0OjoKKworICAgICAgICBVbmlvbltpbnQsIG9iamVjdF0gPT0gb2JqZWN0CisKKyAgICAtIFRvIGN1dCBhIHRpZTogVW5pb25bb2JqZWN0LCBBbnldID09IFVuaW9uW0FueSwgb2JqZWN0XSA9PSBBbnkuCisKKyAgICAtIFlvdSBjYW5ub3Qgc3ViY2xhc3Mgb3IgaW5zdGFudGlhdGUgYSB1bmlvbi4KKworICAgIC0gWW91IGNhbm5vdCB3cml0ZSBVbmlvbltYXVtZXSAod2hhdCB3b3VsZCBpdCBtZWFuPykuCisKKyAgICAtIFlvdSBjYW4gdXNlIE9wdGlvbmFsW1hdIGFzIGEgc2hvcnRoYW5kIGZvciBVbmlvbltYLCBOb25lXS4KKyAgICAiIiIKKworICAgICMgVW5zdWJzY3JpcHRlZCBVbmlvbiB0eXBlIGhhcyBwYXJhbXMgc2V0IHRvIE5vbmUuCisgICAgX191bmlvbl9wYXJhbXNfXyA9IE5vbmUKKyAgICBfX3VuaW9uX3NldF9wYXJhbXNfXyA9IE5vbmUKKworCitjbGFzcyBPcHRpb25hbE1ldGEoVHlwaW5nTWV0YSk6CisgICAgIiIiTWV0YWNsYXNzIGZvciBPcHRpb25hbC4iIiIKKworICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgX3Jvb3Q9RmFsc2UpOgorICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgX3Jvb3Q9X3Jvb3QpCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgYXJnKToKKyAgICAgICAgYXJnID0gX3R5cGVfY2hlY2soYXJnLCAiT3B0aW9uYWxbdF0gcmVxdWlyZXMgYSBzaW5nbGUgdHlwZS4iKQorICAgICAgICByZXR1cm4gVW5pb25bYXJnLCB0eXBlKE5vbmUpXQorCisKK2NsYXNzIE9wdGlvbmFsKEZpbmFsLCBtZXRhY2xhc3M9T3B0aW9uYWxNZXRhLCBfcm9vdD1UcnVlKToKKyAgICAiIiJPcHRpb25hbCB0eXBlLgorCisgICAgT3B0aW9uYWxbWF0gaXMgZXF1aXZhbGVudCB0byBVbmlvbltYLCB0eXBlKE5vbmUpXS4KKyAgICAiIiIKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKworY2xhc3MgVHVwbGVNZXRhKFR5cGluZ01ldGEpOgorICAgICIiIk1ldGFjbGFzcyBmb3IgVHVwbGUuIiIiCisKKyAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIHBhcmFtZXRlcnM9Tm9uZSwKKyAgICAgICAgICAgICAgICB1c2VfZWxsaXBzaXM9RmFsc2UsIF9yb290PUZhbHNlKToKKyAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIF9yb290PV9yb290KQorICAgICAgICBzZWxmLl9fdHVwbGVfcGFyYW1zX18gPSBwYXJhbWV0ZXJzCisgICAgICAgIHNlbGYuX190dXBsZV91c2VfZWxsaXBzaXNfXyA9IHVzZV9lbGxpcHNpcworICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9oYXNfdHlwZV92YXIoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX190dXBsZV9wYXJhbXNfXzoKKyAgICAgICAgICAgIGZvciB0IGluIHNlbGYuX190dXBsZV9wYXJhbXNfXzoKKyAgICAgICAgICAgICAgICBpZiBfaGFzX3R5cGVfdmFyKHQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfZXZhbF90eXBlKHNlbGYsIGdsb2JhbG5zLCBsb2NhbG5zKToKKyAgICAgICAgdHAgPSBzZWxmLl9fdHVwbGVfcGFyYW1zX18KKyAgICAgICAgaWYgdHAgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgIHAgPSB0dXBsZShfZXZhbF90eXBlKHQsIGdsb2JhbG5zLCBsb2NhbG5zKSBmb3IgdCBpbiB0cCkKKyAgICAgICAgaWYgcCA9PSBzZWxmLl9fdHVwbGVfcGFyYW1zX186CisgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX19uYW1lX18sIHNlbGYuX19iYXNlc19fLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLCBfcm9vdD1UcnVlKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByID0gc3VwZXIoKS5fX3JlcHJfXygpCisgICAgICAgIGlmIHNlbGYuX190dXBsZV9wYXJhbXNfXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHBhcmFtcyA9IFtfdHlwZV9yZXByKHApIGZvciBwIGluIHNlbGYuX190dXBsZV9wYXJhbXNfX10KKyAgICAgICAgICAgIGlmIHNlbGYuX190dXBsZV91c2VfZWxsaXBzaXNfXzoKKyAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCcuLi4nKQorICAgICAgICAgICAgciArPSAnWyVzXScgJSAoCisgICAgICAgICAgICAgICAgJywgJy5qb2luKHBhcmFtcykpCisgICAgICAgIHJldHVybiByCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgcGFyYW1ldGVycyk6CisgICAgICAgIGlmIHNlbGYuX190dXBsZV9wYXJhbXNfXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2Fubm90IHJlLXBhcmFtZXRlcml6ZSAlciIgJSAoc2VsZiwpKQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwYXJhbWV0ZXJzLCB0dXBsZSk6CisgICAgICAgICAgICBwYXJhbWV0ZXJzID0gKHBhcmFtZXRlcnMsKQorICAgICAgICBpZiBsZW4ocGFyYW1ldGVycykgPT0gMiBhbmQgcGFyYW1ldGVyc1sxXSA9PSBFbGxpcHNpczoKKyAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzWzoxXQorICAgICAgICAgICAgdXNlX2VsbGlwc2lzID0gVHJ1ZQorICAgICAgICAgICAgbXNnID0gIlR1cGxlW3QsIC4uLl06IHQgbXVzdCBiZSBhIHR5cGUuIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdXNlX2VsbGlwc2lzID0gRmFsc2UKKyAgICAgICAgICAgIG1zZyA9ICJUdXBsZVt0MCwgdDEsIC4uLl06IGVhY2ggdCBtdXN0IGJlIGEgdHlwZS4iCisgICAgICAgIHBhcmFtZXRlcnMgPSB0dXBsZShfdHlwZV9jaGVjayhwLCBtc2cpIGZvciBwIGluIHBhcmFtZXRlcnMpCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl9fbmFtZV9fLCBzZWxmLl9fYmFzZXNfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Qoc2VsZi5fX2RpY3RfXyksIHBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VfZWxsaXBzaXM9dXNlX2VsbGlwc2lzLCBfcm9vdD1UcnVlKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBUdXBsZU1ldGEpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBzZWxmLl9fdHVwbGVfcGFyYW1zX18gPT0gb3RoZXIuX190dXBsZV9wYXJhbXNfXworCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLl9fdHVwbGVfcGFyYW1zX18pCisKKyAgICBkZWYgX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgb2JqKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJUdXBsZXMgY2Fubm90IGJlIHVzZWQgd2l0aCBpc2luc3RhbmNlKCkuIikKKworICAgIGRlZiBfX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBjbHMpOgorICAgICAgICBpZiBjbHMgaXMgQW55OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY2xzLCB0eXBlKToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fc3ViY2xhc3NjaGVja19fKGNscykgICMgVG8gVHlwZUVycm9yLgorICAgICAgICBpZiBpc3N1YmNsYXNzKGNscywgdHVwbGUpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUgICMgU3BlY2lhbCBjYXNlLgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjbHMsIFR1cGxlTWV0YSk6CisgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX3N1YmNsYXNzY2hlY2tfXyhjbHMpICAjIEZhbHNlLgorICAgICAgICBpZiBzZWxmLl9fdHVwbGVfcGFyYW1zX18gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIGNscy5fX3R1cGxlX3BhcmFtc19fIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UgICMgPz8/CisgICAgICAgIGlmIGNscy5fX3R1cGxlX3VzZV9lbGxpcHNpc19fICE9IHNlbGYuX190dXBsZV91c2VfZWxsaXBzaXNfXzoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAjIENvdmFyaWFuY2UuCisgICAgICAgIHJldHVybiAobGVuKHNlbGYuX190dXBsZV9wYXJhbXNfXykgPT0gbGVuKGNscy5fX3R1cGxlX3BhcmFtc19fKSBhbmQKKyAgICAgICAgICAgICAgICBhbGwoaXNzdWJjbGFzcyh4LCBwKQorICAgICAgICAgICAgICAgICAgICBmb3IgeCwgcCBpbiB6aXAoY2xzLl9fdHVwbGVfcGFyYW1zX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fdHVwbGVfcGFyYW1zX18pKSkKKworCitjbGFzcyBUdXBsZShGaW5hbCwgbWV0YWNsYXNzPVR1cGxlTWV0YSwgX3Jvb3Q9VHJ1ZSk6CisgICAgIiIiVHVwbGUgdHlwZTsgVHVwbGVbWCwgWV0gaXMgdGhlIGNyb3NzLXByb2R1Y3QgdHlwZSBvZiBYIGFuZCBZLgorCisgICAgRXhhbXBsZTogVHVwbGVbVDEsIFQyXSBpcyBhIHR1cGxlIG9mIHR3byBlbGVtZW50cyBjb3JyZXNwb25kaW5nCisgICAgdG8gdHlwZSB2YXJpYWJsZXMgVDEgYW5kIFQyLiAgVHVwbGVbaW50LCBmbG9hdCwgc3RyXSBpcyBhIHR1cGxlCisgICAgb2YgYW4gaW50LCBhIGZsb2F0IGFuZCBhIHN0cmluZy4KKworICAgIFRvIHNwZWNpZnkgYSB2YXJpYWJsZS1sZW5ndGggdHVwbGUgb2YgaG9tb2dlbmVvdXMgdHlwZSwgdXNlIFNlcXVlbmNlW1RdLgorICAgICIiIgorCisgICAgX19zbG90c19fID0gKCkKKworCitjbGFzcyBDYWxsYWJsZU1ldGEoVHlwaW5nTWV0YSk6CisgICAgIiIiTWV0YWNsYXNzIGZvciBDYWxsYWJsZS4iIiIKKworICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgX3Jvb3Q9RmFsc2UsCisgICAgICAgICAgICAgICAgYXJncz1Ob25lLCByZXN1bHQ9Tm9uZSk6CisgICAgICAgIGlmIGFyZ3MgaXMgTm9uZSBhbmQgcmVzdWx0IGlzIE5vbmU6CisgICAgICAgICAgICBwYXNzICAjIE11c3QgYmUgJ2NsYXNzIENhbGxhYmxlJy4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGFyZ3MgaXMgbm90IEVsbGlwc2lzOgorICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ3MsIGxpc3QpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbGxhYmxlW2FyZ3MsIHJlc3VsdF06ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmdzIG11c3QgYmUgYSBsaXN0LiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgR290ICUuMTAwci4iICUgKGFyZ3MsKSkKKyAgICAgICAgICAgICAgICBtc2cgPSAiQ2FsbGFibGVbW2FyZywgLi4uXSwgcmVzdWx0XTogZWFjaCBhcmcgbXVzdCBiZSBhIHR5cGUuIgorICAgICAgICAgICAgICAgIGFyZ3MgPSB0dXBsZShfdHlwZV9jaGVjayhhcmcsIG1zZykgZm9yIGFyZyBpbiBhcmdzKQorICAgICAgICAgICAgbXNnID0gIkNhbGxhYmxlW2FyZ3MsIHJlc3VsdF06IHJlc3VsdCBtdXN0IGJlIGEgdHlwZS4iCisgICAgICAgICAgICByZXN1bHQgPSBfdHlwZV9jaGVjayhyZXN1bHQsIG1zZykKKyAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIF9yb290PV9yb290KQorICAgICAgICBzZWxmLl9fYXJnc19fID0gYXJncworICAgICAgICBzZWxmLl9fcmVzdWx0X18gPSByZXN1bHQKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfaGFzX3R5cGVfdmFyKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9fYXJnc19fOgorICAgICAgICAgICAgZm9yIHQgaW4gc2VsZi5fX2FyZ3NfXzoKKyAgICAgICAgICAgICAgICBpZiBfaGFzX3R5cGVfdmFyKHQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gX2hhc190eXBlX3ZhcihzZWxmLl9fcmVzdWx0X18pCisKKyAgICBkZWYgX2V2YWxfdHlwZShzZWxmLCBnbG9iYWxucywgbG9jYWxucyk6CisgICAgICAgIGlmIHNlbGYuX19hcmdzX18gaXMgTm9uZSBhbmQgc2VsZi5fX3Jlc3VsdF9fIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICBpZiBzZWxmLl9fYXJnc19fIGlzIEVsbGlwc2lzOgorICAgICAgICAgICAgYXJncyA9IHNlbGYuX19hcmdzX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFyZ3MgPSBbX2V2YWxfdHlwZSh0LCBnbG9iYWxucywgbG9jYWxucykgZm9yIHQgaW4gc2VsZi5fX2FyZ3NfX10KKyAgICAgICAgcmVzdWx0ID0gX2V2YWxfdHlwZShzZWxmLl9fcmVzdWx0X18sIGdsb2JhbG5zLCBsb2NhbG5zKQorICAgICAgICBpZiBhcmdzID09IHNlbGYuX19hcmdzX18gYW5kIHJlc3VsdCA9PSBzZWxmLl9fcmVzdWx0X186CisgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX19uYW1lX18sIHNlbGYuX19iYXNlc19fLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPWFyZ3MsIHJlc3VsdD1yZXN1bHQsIF9yb290PVRydWUpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHIgPSBzdXBlcigpLl9fcmVwcl9fKCkKKyAgICAgICAgaWYgc2VsZi5fX2FyZ3NfXyBpcyBub3QgTm9uZSBvciBzZWxmLl9fcmVzdWx0X18gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBzZWxmLl9fYXJnc19fIGlzIEVsbGlwc2lzOgorICAgICAgICAgICAgICAgIGFyZ3NfciA9ICcuLi4nCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFyZ3NfciA9ICdbJXNdJyAlICcsICcuam9pbihfdHlwZV9yZXByKHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0IGluIHNlbGYuX19hcmdzX18pCisgICAgICAgICAgICByICs9ICdbJXMsICVzXScgJSAoYXJnc19yLCBfdHlwZV9yZXByKHNlbGYuX19yZXN1bHRfXykpCisgICAgICAgIHJldHVybiByCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgcGFyYW1ldGVycyk6CisgICAgICAgIGlmIHNlbGYuX19hcmdzX18gaXMgbm90IE5vbmUgb3Igc2VsZi5fX3Jlc3VsdF9fIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJUaGlzIENhbGxhYmxlIHR5cGUgaXMgYWxyZWFkeSBwYXJhbWV0ZXJpemVkLiIpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhcmFtZXRlcnMsIHR1cGxlKSBvciBsZW4ocGFyYW1ldGVycykgIT0gMjoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAiQ2FsbGFibGUgbXVzdCBiZSB1c2VkIGFzIENhbGxhYmxlW1thcmcsIC4uLl0sIHJlc3VsdF0uIikKKyAgICAgICAgYXJncywgcmVzdWx0ID0gcGFyYW1ldGVycworICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fX25hbWVfXywgc2VsZi5fX2Jhc2VzX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0KHNlbGYuX19kaWN0X18pLCBfcm9vdD1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz1hcmdzLCByZXN1bHQ9cmVzdWx0KQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBDYWxsYWJsZU1ldGEpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiAoc2VsZi5fX2FyZ3NfXyA9PSBvdGhlci5fX2FyZ3NfXyBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9fcmVzdWx0X18gPT0gb3RoZXIuX19yZXN1bHRfXykKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fX2FyZ3NfXykgXiBoYXNoKHNlbGYuX19yZXN1bHRfXykKKworICAgIGRlZiBfX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBvYmopOgorICAgICAgICAjIEZvciB1bnBhcmFtZXRyaXplZCBDYWxsYWJsZSB3ZSBhbGxvdyB0aGlzLCBiZWNhdXNlCisgICAgICAgICMgdHlwaW5nLkNhbGxhYmxlIHNob3VsZCBiZSBlcXVpdmFsZW50IHRvCisgICAgICAgICMgY29sbGVjdGlvbnMuYWJjLkNhbGxhYmxlLgorICAgICAgICBpZiBzZWxmLl9fYXJnc19fIGlzIE5vbmUgYW5kIHNlbGYuX19yZXN1bHRfXyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9uc19hYmMuQ2FsbGFibGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbGxhYmxlW10gY2Fubm90IGJlIHVzZWQgd2l0aCBpc2luc3RhbmNlKCkuIikKKworICAgIGRlZiBfX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBjbHMpOgorICAgICAgICBpZiBjbHMgaXMgQW55OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY2xzLCBDYWxsYWJsZU1ldGEpOgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19zdWJjbGFzc2NoZWNrX18oY2xzKQorICAgICAgICBpZiBzZWxmLl9fYXJnc19fIGlzIE5vbmUgYW5kIHNlbGYuX19yZXN1bHRfXyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgIyBXZSdyZSBub3QgZG9pbmcgY292YXJpYW5jZSBvciBjb250cmF2YXJpYW5jZSAtLSB0aGlzIGlzICppbnZhcmlhbmNlKi4KKyAgICAgICAgcmV0dXJuIHNlbGYgPT0gY2xzCisKKworY2xhc3MgQ2FsbGFibGUoRmluYWwsIG1ldGFjbGFzcz1DYWxsYWJsZU1ldGEsIF9yb290PVRydWUpOgorICAgICIiIkNhbGxhYmxlIHR5cGU7IENhbGxhYmxlW1tpbnRdLCBzdHJdIGlzIGEgZnVuY3Rpb24gb2YgKGludCkgLT4gc3RyLgorCisgICAgVGhlIHN1YnNjcmlwdGlvbiBzeW50YXggbXVzdCBhbHdheXMgYmUgdXNlZCB3aXRoIGV4YWN0bHkgdHdvCisgICAgdmFsdWVzOiB0aGUgYXJndW1lbnQgbGlzdCBhbmQgdGhlIHJldHVybiB0eXBlLiAgVGhlIGFyZ3VtZW50IGxpc3QKKyAgICBtdXN0IGJlIGEgbGlzdCBvZiB0eXBlczsgdGhlIHJldHVybiB0eXBlIG11c3QgYmUgYSBzaW5nbGUgdHlwZS4KKworICAgIFRoZXJlIGlzIG5vIHN5bnRheCB0byBpbmRpY2F0ZSBvcHRpb25hbCBvciBrZXl3b3JkIGFyZ3VtZW50cywKKyAgICBzdWNoIGZ1bmN0aW9uIHR5cGVzIGFyZSByYXJlbHkgdXNlZCBhcyBjYWxsYmFjayB0eXBlcy4KKyAgICAiIiIKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKworZGVmIF9nb3JnKGEpOgorICAgICIiIlJldHVybiB0aGUgZmFydGhlc3Qgb3JpZ2luIG9mIGEgZ2VuZXJpYyBjbGFzcy4iIiIKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShhLCBHZW5lcmljTWV0YSkKKyAgICB3aGlsZSBhLl9fb3JpZ2luX18gaXMgbm90IE5vbmU6CisgICAgICAgIGEgPSBhLl9fb3JpZ2luX18KKyAgICByZXR1cm4gYQorCisKK2RlZiBfZ2VxdihhLCBiKToKKyAgICAiIiJSZXR1cm4gd2hldGhlciB0d28gZ2VuZXJpYyBjbGFzc2VzIGFyZSBlcXVpdmFsZW50LgorCisgICAgVGhlIGludGVudGlvbiBpcyB0byBjb25zaWRlciBnZW5lcmljIGNsYXNzIFggYW5kIGFueSBvZiBpdHMKKyAgICBwYXJhbWV0ZXJpemVkIGZvcm1zIChYW1RdLCBYW2ludF0sIGV0Yy4pICBhcyBlcXVpdmFsZW50LgorCisgICAgSG93ZXZlciwgWCBpcyBub3QgZXF1aXZhbGVudCB0byBhIHN1YmNsYXNzIG9mIFguCisKKyAgICBUaGUgcmVsYXRpb24gaXMgcmVmbGV4aXZlLCBzeW1tZXRyaWMgYW5kIHRyYW5zaXRpdmUuCisgICAgIiIiCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYSwgR2VuZXJpY01ldGEpIGFuZCBpc2luc3RhbmNlKGIsIEdlbmVyaWNNZXRhKQorICAgICMgUmVkdWNlIGVhY2ggdG8gaXRzIG9yaWdpbi4KKyAgICByZXR1cm4gX2dvcmcoYSkgaXMgX2dvcmcoYikKKworCitjbGFzcyBHZW5lcmljTWV0YShUeXBpbmdNZXRhLCBhYmMuQUJDTWV0YSk6CisgICAgIiIiTWV0YWNsYXNzIGZvciBnZW5lcmljIHR5cGVzLiIiIgorCisgICAgIyBUT0RPOiBDb25zdHJhaW4gbW9yZSBob3cgR2VuZXJpYyBpcyB1c2VkOyBvbmx5IGEgZmV3CisgICAgIyBzdGFuZGFyZCBwYXR0ZXJucyBzaG91bGQgYmUgYWxsb3dlZC4KKworICAgICMgVE9ETzogVXNlIGEgbW9yZSBwcmVjaXNlIHJ1bGUgdGhhbiBtYXRjaGluZyBfX25hbWVfXyB0byBkZWNpZGUKKyAgICAjIHdoZXRoZXIgdHdvIGNsYXNzZXMgYXJlIHRoZSBzYW1lLiAgQWxzbywgc2F2ZSB0aGUgZm9ybWFsCisgICAgIyBwYXJhbWV0ZXJzLiAgKFRoZXNlIHRoaW5ncyBhcmUgcmVsYXRlZCEgIEEgc29sdXRpb24gbGllcyBpbgorICAgICMgdXNpbmcgb3JpZ2luLikKKworICAgIF9fZXh0cmFfXyA9IE5vbmUKKworICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzPU5vbmUsIG9yaWdpbj1Ob25lLCBleHRyYT1Ob25lKToKKyAgICAgICAgaWYgcGFyYW1ldGVycyBpcyBOb25lOgorICAgICAgICAgICAgIyBFeHRyYWN0IHBhcmFtZXRlcnMgZnJvbSBkaXJlY3QgYmFzZSBjbGFzc2VzLiAgT25seQorICAgICAgICAgICAgIyBkaXJlY3QgYmFzZXMgYXJlIGNvbnNpZGVyZWQgYW5kIG9ubHkgdGhvc2UgdGhhdCBhcmUKKyAgICAgICAgICAgICMgdGhlbXNlbHZlcyBnZW5lcmljLCBhbmQgcGFyYW1ldGVyaXplZCB3aXRoIHR5cGUKKyAgICAgICAgICAgICMgdmFyaWFibGVzLiAgRG9uJ3QgdXNlIGJhc2VzIGxpa2UgQW55LCBVbmlvbiwgVHVwbGUsCisgICAgICAgICAgICAjIENhbGxhYmxlIG9yIHR5cGUgdmFyaWFibGVzLgorICAgICAgICAgICAgcGFyYW1zID0gTm9uZQorICAgICAgICAgICAgZm9yIGJhc2UgaW4gYmFzZXM6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShiYXNlLCBUeXBpbmdNZXRhKToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYmFzZSwgR2VuZXJpY01ldGEpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZb3UgY2Fubm90IGluaGVyaXQgZnJvbSBtYWdpYyBjbGFzcyAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoYmFzZSkpCisgICAgICAgICAgICAgICAgICAgIGlmIGJhc2UuX19wYXJhbWV0ZXJzX18gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICAjIFRoZSBiYXNlIGlzIHVucGFyYW1ldGVyaXplZC4KKyAgICAgICAgICAgICAgICAgICAgZm9yIGJwIGluIGJhc2UuX19wYXJhbWV0ZXJzX186CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBfaGFzX3R5cGVfdmFyKGJwKSBhbmQgbm90IGlzaW5zdGFuY2UoYnAsIFR5cGVWYXIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBpbmhlcml0IGZyb20gYSBnZW5lcmljIGNsYXNzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlcml6ZWQgd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub24tdHlwZS12YXJpYWJsZSAlcyIgJSBicCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtcyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyA9IFtdCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBicCBub3QgaW4gcGFyYW1zOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoYnApCisgICAgICAgICAgICBpZiBwYXJhbXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHR1cGxlKHBhcmFtcykKKyAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIF9yb290PVRydWUpCisgICAgICAgIHNlbGYuX19wYXJhbWV0ZXJzX18gPSBwYXJhbWV0ZXJzCisgICAgICAgIGlmIGV4dHJhIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fX2V4dHJhX18gPSBleHRyYQorICAgICAgICAjIEVsc2UgX19leHRyYV9fIGlzIGluaGVyaXRlZCwgZXZlbnR1YWxseSBmcm9tIHRoZQorICAgICAgICAjIChtZXRhLSljbGFzcyBkZWZhdWx0IGFib3ZlLgorICAgICAgICBzZWxmLl9fb3JpZ2luX18gPSBvcmlnaW4KKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfaGFzX3R5cGVfdmFyKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9fcGFyYW1ldGVyc19fOgorICAgICAgICAgICAgZm9yIHQgaW4gc2VsZi5fX3BhcmFtZXRlcnNfXzoKKyAgICAgICAgICAgICAgICBpZiBfaGFzX3R5cGVfdmFyKHQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgciA9IHN1cGVyKCkuX19yZXByX18oKQorICAgICAgICBpZiBzZWxmLl9fcGFyYW1ldGVyc19fIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgciArPSAnWyVzXScgJSAoCisgICAgICAgICAgICAgICAgJywgJy5qb2luKF90eXBlX3JlcHIocCkgZm9yIHAgaW4gc2VsZi5fX3BhcmFtZXRlcnNfXykpCisgICAgICAgIHJldHVybiByCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIEdlbmVyaWNNZXRhKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gKF9nZXF2KHNlbGYsIG90aGVyKSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9fcGFyYW1ldGVyc19fID09IG90aGVyLl9fcGFyYW1ldGVyc19fKQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaCgoc2VsZi5fX25hbWVfXywgc2VsZi5fX3BhcmFtZXRlcnNfXykpCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgcGFyYW1zKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGFyYW1zLCB0dXBsZSk6CisgICAgICAgICAgICBwYXJhbXMgPSAocGFyYW1zLCkKKyAgICAgICAgaWYgbm90IHBhcmFtczoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2Fubm90IGhhdmUgZW1wdHkgcGFyYW1ldGVyIGxpc3QiKQorICAgICAgICBtc2cgPSAiUGFyYW1ldGVycyB0byBnZW5lcmljIHR5cGVzIG11c3QgYmUgdHlwZXMuIgorICAgICAgICBwYXJhbXMgPSB0dXBsZShfdHlwZV9jaGVjayhwLCBtc2cpIGZvciBwIGluIHBhcmFtcykKKyAgICAgICAgaWYgc2VsZi5fX3BhcmFtZXRlcnNfXyBpcyBOb25lOgorICAgICAgICAgICAgZm9yIHAgaW4gcGFyYW1zOgorICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHAsIFR5cGVWYXIpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkluaXRpYWwgcGFyYW1ldGVycyBtdXN0IGJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIHZhcmlhYmxlczsgZ290ICVzIiAlIHApCisgICAgICAgICAgICBpZiBsZW4oc2V0KHBhcmFtcykpICE9IGxlbihwYXJhbXMpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIkFsbCB0eXBlIHZhcmlhYmxlcyBpbiBHZW5lcmljWy4uLl0gbXVzdCBiZSBkaXN0aW5jdC4iKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbGVuKHBhcmFtcykgIT0gbGVuKHNlbGYuX19wYXJhbWV0ZXJzX18pOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2Fubm90IGNoYW5nZSBwYXJhbWV0ZXIgY291bnQgZnJvbSAlZCB0byAlZCIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuKHNlbGYuX19wYXJhbWV0ZXJzX18pLCBsZW4ocGFyYW1zKSkpCisgICAgICAgICAgICBmb3IgbmV3LCBvbGQgaW4gemlwKHBhcmFtcywgc2VsZi5fX3BhcmFtZXRlcnNfXyk6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvbGQsIFR5cGVWYXIpOgorICAgICAgICAgICAgICAgICAgICBpZiBub3Qgb2xkLl9fY29uc3RyYWludHNfXzoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgU3Vic3RpdHV0aW5nIGZvciBhbiB1bmNvbnN0cmFpbmVkIFR5cGVWYXIgaXMgT0suCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBpZiBpc3N1YmNsYXNzKG5ldywgVW5pb25bb2xkLl9fY29uc3RyYWludHNfX10pOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBTcGVjaWFsaXppbmcgYSBjb25zdHJhaW5lZCB0eXBlIHZhcmlhYmxlIGlzIE9LLgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyhuZXcsIG9sZCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3Vic3RpdHV0ZSAlcyBmb3IgJXMgaW4gJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgIChfdHlwZV9yZXByKG5ldyksIF90eXBlX3JlcHIob2xkKSwgc2VsZikpCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX19uYW1lX18sIChzZWxmLCkgKyBzZWxmLl9fYmFzZXNfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Qoc2VsZi5fX2RpY3RfXyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzPXBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbj1zZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9c2VsZi5fX2V4dHJhX18pCisKKyAgICBkZWYgX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgaW5zdGFuY2UpOgorICAgICAgICAjIFNpbmNlIHdlIGV4dGVuZCBBQkMuX19zdWJjbGFzc2NoZWNrX18gYW5kCisgICAgICAgICMgQUJDLl9faW5zdGFuY2VjaGVja19fIGlubGluZXMgdGhlIGNhY2hlIGNoZWNraW5nIGRvbmUgYnkgdGhlCisgICAgICAgICMgbGF0dGVyLCB3ZSBtdXN0IGV4dGVuZCBfX2luc3RhbmNlY2hlY2tfXyB0b28uIEZvciBzaW1wbGljaXR5CisgICAgICAgICMgd2UganVzdCBza2lwIHRoZSBjYWNoZSBjaGVjayAtLSBpbnN0YW5jZSBjaGVja3MgZm9yIGdlbmVyaWMKKyAgICAgICAgIyBjbGFzc2VzIGFyZSBzdXBwb3NlZCB0byBiZSByYXJlIGFueXdheXMuCisgICAgICAgIHJldHVybiBzZWxmLl9fc3ViY2xhc3NjaGVja19fKGluc3RhbmNlLl9fY2xhc3NfXykKKworICAgIGRlZiBfX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBjbHMpOgorICAgICAgICBpZiBjbHMgaXMgQW55OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgaXNpbnN0YW5jZShjbHMsIEdlbmVyaWNNZXRhKToKKyAgICAgICAgICAgICMgRm9yIGEgY2xhc3MgQyhHZW5lcmljW1RdKSB3aGVyZSBUIGlzIGNvLXZhcmlhbnQsCisgICAgICAgICAgICAjIENbWF0gaXMgYSBzdWJjbGFzcyBvZiBDW1ldIGlmZiBYIGlzIGEgc3ViY2xhc3Mgb2YgWS4KKyAgICAgICAgICAgIG9yaWdpbiA9IHNlbGYuX19vcmlnaW5fXworICAgICAgICAgICAgaWYgb3JpZ2luIGlzIG5vdCBOb25lIGFuZCBvcmlnaW4gaXMgY2xzLl9fb3JpZ2luX186CisgICAgICAgICAgICAgICAgYXNzZXJ0IGxlbihzZWxmLl9fcGFyYW1ldGVyc19fKSA9PSBsZW4ob3JpZ2luLl9fcGFyYW1ldGVyc19fKQorICAgICAgICAgICAgICAgIGFzc2VydCBsZW4oY2xzLl9fcGFyYW1ldGVyc19fKSA9PSBsZW4ob3JpZ2luLl9fcGFyYW1ldGVyc19fKQorICAgICAgICAgICAgICAgIGZvciBwX3NlbGYsIHBfY2xzLCBwX29yaWdpbiBpbiB6aXAoc2VsZi5fX3BhcmFtZXRlcnNfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5fX3BhcmFtZXRlcnNfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbi5fX3BhcmFtZXRlcnNfXyk6CisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocF9vcmlnaW4sIFR5cGVWYXIpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcF9vcmlnaW4uX19jb3ZhcmlhbnRfXzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENvdmFyaWFudCAtLSBwX2NscyBtdXN0IGJlIGEgc3ViY2xhc3Mgb2YgcF9zZWxmLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKHBfY2xzLCBwX3NlbGYpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBwX29yaWdpbi5fX2NvbnRyYXZhcmlhbnRfXzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENvbnRyYXZhcmlhbnQuICBJIHRoaW5rIGl0J3MgdGhlIG9wcG9zaXRlLiA6LSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyhwX3NlbGYsIHBfY2xzKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJbnZhcmlhbnQgLS0gcF9jbHMgYW5kIHBfc2VsZiBtdXN0IGVxdWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBfc2VsZiAhPSBwX2NsczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgdGhlIG9yaWdpbidzIHBhcmFtZXRlciBpcyBub3QgYSB0eXBldmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgIyBpbnNpc3Qgb24gaW52YXJpYW5jZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBfc2VsZiAhPSBwX2NsczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICAgICAgIyBJZiB3ZSBicmVhayBvdXQgb2YgdGhlIGxvb3AsIHRoZSBzdXBlcmNsYXNzIGdldHMgYSBjaGFuY2UuCisgICAgICAgIGlmIHN1cGVyKCkuX19zdWJjbGFzc2NoZWNrX18oY2xzKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIHNlbGYuX19leHRyYV9fIGlzIE5vbmUgb3IgaXNpbnN0YW5jZShjbHMsIEdlbmVyaWNNZXRhKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gaXNzdWJjbGFzcyhjbHMsIHNlbGYuX19leHRyYV9fKQorCisKK2NsYXNzIEdlbmVyaWMobWV0YWNsYXNzPUdlbmVyaWNNZXRhKToKKyAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBnZW5lcmljIHR5cGVzLgorCisgICAgQSBnZW5lcmljIHR5cGUgaXMgdHlwaWNhbGx5IGRlY2xhcmVkIGJ5IGluaGVyaXRpbmcgZnJvbSBhbgorICAgIGluc3RhbnRpYXRpb24gb2YgdGhpcyBjbGFzcyB3aXRoIG9uZSBvciBtb3JlIHR5cGUgdmFyaWFibGVzLgorICAgIEZvciBleGFtcGxlLCBhIGdlbmVyaWMgbWFwcGluZyB0eXBlIG1pZ2h0IGJlIGRlZmluZWQgYXM6OgorCisgICAgICBjbGFzcyBNYXBwaW5nKEdlbmVyaWNbS1QsIFZUXSk6CisgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleTogS1QpIC0+IFZUOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAjIEV0Yy4KKworICAgIFRoaXMgY2xhc3MgY2FuIHRoZW4gYmUgdXNlZCBhcyBmb2xsb3dzOjoKKworICAgICAgZGVmIGxvb2t1cF9uYW1lKG1hcHBpbmc6IE1hcHBpbmcsIGtleTogS1QsIGRlZmF1bHQ6IFZUKSAtPiBWVDoKKyAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgIHJldHVybiBtYXBwaW5nW2tleV0KKyAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0CisKKyAgICBGb3IgY2xhcml0eSB0aGUgdHlwZSB2YXJpYWJsZXMgbWF5IGJlIHJlZGVmaW5lZCwgZS5nLjo6CisKKyAgICAgIFggPSBUeXBlVmFyKCdYJykKKyAgICAgIFkgPSBUeXBlVmFyKCdZJykKKyAgICAgIGRlZiBsb29rdXBfbmFtZShtYXBwaW5nOiBNYXBwaW5nW1gsIFldLCBrZXk6IFgsIGRlZmF1bHQ6IFkpIC0+IFk6CisgICAgICAgICAgIyBTYW1lIGJvZHkgYXMgYWJvdmUuCisgICAgIiIiCisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgZGVmIF9fbmV3X18oY2xzLCAqYXJncywgKiprd2RzKToKKyAgICAgICAgbmV4dF9pbl9tcm8gPSBvYmplY3QKKyAgICAgICAgIyBMb29rIGZvciB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIEdlbmVyaWMgb3IgR2VuZXJpY1suLi5dLgorICAgICAgICBmb3IgaSwgYyBpbiBlbnVtZXJhdGUoY2xzLl9fbXJvX19bOi0xXSk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGMsIEdlbmVyaWNNZXRhKSBhbmQgX2dvcmcoYykgaXMgR2VuZXJpYzoKKyAgICAgICAgICAgICAgICBuZXh0X2luX21ybyA9IGNscy5fX21yb19fW2krMV0KKyAgICAgICAgcmV0dXJuIG5leHRfaW5fbXJvLl9fbmV3X18oX2dvcmcoY2xzKSkKKworCitkZWYgY2FzdCh0eXAsIHZhbCk6CisgICAgIiIiQ2FzdCBhIHZhbHVlIHRvIGEgdHlwZS4KKworICAgIFRoaXMgcmV0dXJucyB0aGUgdmFsdWUgdW5jaGFuZ2VkLiAgVG8gdGhlIHR5cGUgY2hlY2tlciB0aGlzCisgICAgc2lnbmFscyB0aGF0IHRoZSByZXR1cm4gdmFsdWUgaGFzIHRoZSBkZXNpZ25hdGVkIHR5cGUsIGJ1dCBhdAorICAgIHJ1bnRpbWUgd2UgaW50ZW50aW9uYWxseSBkb24ndCBjaGVjayBhbnl0aGluZyAod2Ugd2FudCB0aGlzCisgICAgdG8gYmUgYXMgZmFzdCBhcyBwb3NzaWJsZSkuCisgICAgIiIiCisgICAgcmV0dXJuIHZhbAorCisKK2RlZiBfZ2V0X2RlZmF1bHRzKGZ1bmMpOgorICAgICIiIkludGVybmFsIGhlbHBlciB0byBleHRyYWN0IHRoZSBkZWZhdWx0IGFyZ3VtZW50cywgYnkgbmFtZS4iIiIKKyAgICBjb2RlID0gZnVuYy5fX2NvZGVfXworICAgIHBvc19jb3VudCA9IGNvZGUuY29fYXJnY291bnQKKyAgICBrd19jb3VudCA9IGNvZGUuY29fa3dvbmx5YXJnY291bnQKKyAgICBhcmdfbmFtZXMgPSBjb2RlLmNvX3Zhcm5hbWVzCisgICAga3dhcmdfbmFtZXMgPSBhcmdfbmFtZXNbcG9zX2NvdW50OnBvc19jb3VudCArIGt3X2NvdW50XQorICAgIGFyZ19uYW1lcyA9IGFyZ19uYW1lc1s6cG9zX2NvdW50XQorICAgIGRlZmF1bHRzID0gZnVuYy5fX2RlZmF1bHRzX18gb3IgKCkKKyAgICBrd2RlZmF1bHRzID0gZnVuYy5fX2t3ZGVmYXVsdHNfXworICAgIHJlcyA9IGRpY3Qoa3dkZWZhdWx0cykgaWYga3dkZWZhdWx0cyBlbHNlIHt9CisgICAgcG9zX29mZnNldCA9IHBvc19jb3VudCAtIGxlbihkZWZhdWx0cykKKyAgICBmb3IgbmFtZSwgdmFsdWUgaW4gemlwKGFyZ19uYW1lc1twb3Nfb2Zmc2V0Ol0sIGRlZmF1bHRzKToKKyAgICAgICAgYXNzZXJ0IG5hbWUgbm90IGluIHJlcworICAgICAgICByZXNbbmFtZV0gPSB2YWx1ZQorICAgIHJldHVybiByZXMKKworCitkZWYgZ2V0X3R5cGVfaGludHMob2JqLCBnbG9iYWxucz1Ob25lLCBsb2NhbG5zPU5vbmUpOgorICAgICIiIlJldHVybiB0eXBlIGhpbnRzIGZvciBhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QuCisKKyAgICBUaGlzIGlzIG9mdGVuIHRoZSBzYW1lIGFzIG9iai5fX2Fubm90YXRpb25zX18sIGJ1dCBpdCBoYW5kbGVzCisgICAgZm9yd2FyZCByZWZlcmVuY2VzIGVuY29kZWQgYXMgc3RyaW5nIGxpdGVyYWxzLCBhbmQgaWYgbmVjZXNzYXJ5CisgICAgYWRkcyBPcHRpb25hbFt0XSBpZiBhIGRlZmF1bHQgdmFsdWUgZXF1YWwgdG8gTm9uZSBpcyBzZXQuCisKKyAgICBCRVdBUkUgLS0gdGhlIGJlaGF2aW9yIG9mIGdsb2JhbG5zIGFuZCBsb2NhbG5zIGlzIGNvdW50ZXJpbnR1aXRpdmUKKyAgICAodW5sZXNzIHlvdSBhcmUgZmFtaWxpYXIgd2l0aCBob3cgZXZhbCgpIGFuZCBleGVjKCkgd29yaykuICBUaGUKKyAgICBzZWFyY2ggb3JkZXIgaXMgbG9jYWxzIGZpcnN0LCB0aGVuIGdsb2JhbHMuCisKKyAgICAtIElmIG5vIGRpY3QgYXJndW1lbnRzIGFyZSBwYXNzZWQsIGFuIGF0dGVtcHQgaXMgbWFkZSB0byB1c2UgdGhlCisgICAgICBnbG9iYWxzIGZyb20gb2JqLCBhbmQgdGhlc2UgYXJlIGFsc28gdXNlZCBhcyB0aGUgbG9jYWxzLiAgSWYgdGhlCisgICAgICBvYmplY3QgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgZ2xvYmFscywgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4KKworICAgIC0gSWYgb25lIGRpY3QgYXJndW1lbnQgaXMgcGFzc2VkLCBpdCBpcyB1c2VkIGZvciBib3RoIGdsb2JhbHMgYW5kCisgICAgICBsb2NhbHMuCisKKyAgICAtIElmIHR3byBkaWN0IGFyZ3VtZW50cyBhcmUgcGFzc2VkLCB0aGV5IHNwZWNpZnkgZ2xvYmFscyBhbmQKKyAgICAgIGxvY2FscywgcmVzcGVjdGl2ZWx5LgorICAgICIiIgorICAgIGlmIGdldGF0dHIob2JqLCAnX19ub190eXBlX2NoZWNrX18nLCBOb25lKToKKyAgICAgICAgcmV0dXJuIHt9CisgICAgaWYgZ2xvYmFsbnMgaXMgTm9uZToKKyAgICAgICAgZ2xvYmFsbnMgPSBnZXRhdHRyKG9iaiwgJ19fZ2xvYmFsc19fJywge30pCisgICAgICAgIGlmIGxvY2FsbnMgaXMgTm9uZToKKyAgICAgICAgICAgIGxvY2FsbnMgPSBnbG9iYWxucworICAgIGVsaWYgbG9jYWxucyBpcyBOb25lOgorICAgICAgICBsb2NhbG5zID0gZ2xvYmFsbnMKKyAgICBkZWZhdWx0cyA9IF9nZXRfZGVmYXVsdHMob2JqKQorICAgIGhpbnRzID0gZGljdChvYmouX19hbm5vdGF0aW9uc19fKQorICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBoaW50cy5pdGVtcygpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICAgICAgdmFsdWUgPSBfRm9yd2FyZFJlZih2YWx1ZSkKKyAgICAgICAgdmFsdWUgPSBfZXZhbF90eXBlKHZhbHVlLCBnbG9iYWxucywgbG9jYWxucykKKyAgICAgICAgaWYgbmFtZSBpbiBkZWZhdWx0cyBhbmQgZGVmYXVsdHNbbmFtZV0gaXMgTm9uZToKKyAgICAgICAgICAgIHZhbHVlID0gT3B0aW9uYWxbdmFsdWVdCisgICAgICAgIGhpbnRzW25hbWVdID0gdmFsdWUKKyAgICByZXR1cm4gaGludHMKKworCisjIFRPRE86IEFsc28gc3VwcG9ydCB0aGlzIGFzIGEgY2xhc3MgZGVjb3JhdG9yLgorZGVmIG5vX3R5cGVfY2hlY2soYXJnKToKKyAgICAiIiJEZWNvcmF0b3IgdG8gaW5kaWNhdGUgdGhhdCBhbm5vdGF0aW9ucyBhcmUgbm90IHR5cGUgaGludHMuCisKKyAgICBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIGNsYXNzIG9yIGZ1bmN0aW9uOyBpZiBpdCBpcyBhIGNsYXNzLCBpdAorICAgIGFwcGxpZXMgcmVjdXJzaXZlbHkgdG8gYWxsIG1ldGhvZHMgZGVmaW5lZCBpbiB0aGF0IGNsYXNzIChidXQgbm90CisgICAgdG8gbWV0aG9kcyBkZWZpbmVkIGluIGl0cyBzdXBlcmNsYXNzZXMgb3Igc3ViY2xhc3NlcykuCisKKyAgICBUaGlzIG11dGF0ZXMgdGhlIGZ1bmN0aW9uKHMpIGluIHBsYWNlLgorICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2UoYXJnLCB0eXBlKToKKyAgICAgICAgZm9yIG9iaiBpbiBhcmcuX19kaWN0X18udmFsdWVzKCk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuRnVuY3Rpb25UeXBlKToKKyAgICAgICAgICAgICAgICBvYmouX19ub190eXBlX2NoZWNrX18gPSBUcnVlCisgICAgZWxzZToKKyAgICAgICAgYXJnLl9fbm9fdHlwZV9jaGVja19fID0gVHJ1ZQorICAgIHJldHVybiBhcmcKKworCitkZWYgbm9fdHlwZV9jaGVja19kZWNvcmF0b3IoZGVjb3JhdG9yKToKKyAgICAiIiJEZWNvcmF0b3IgdG8gZ2l2ZSBhbm90aGVyIGRlY29yYXRvciB0aGUgQG5vX3R5cGVfY2hlY2sgZWZmZWN0LgorCisgICAgVGhpcyB3cmFwcyB0aGUgZGVjb3JhdG9yIHdpdGggc29tZXRoaW5nIHRoYXQgd3JhcHMgdGhlIGRlY29yYXRlZAorICAgIGZ1bmN0aW9uIGluIEBub190eXBlX2NoZWNrLgorICAgICIiIgorCisgICAgQGZ1bmN0b29scy53cmFwcyhkZWNvcmF0b3IpCisgICAgZGVmIHdyYXBwZWRfZGVjb3JhdG9yKCphcmdzLCAqKmt3ZHMpOgorICAgICAgICBmdW5jID0gZGVjb3JhdG9yKCphcmdzLCAqKmt3ZHMpCisgICAgICAgIGZ1bmMgPSBub190eXBlX2NoZWNrKGZ1bmMpCisgICAgICAgIHJldHVybiBmdW5jCisKKyAgICByZXR1cm4gd3JhcHBlZF9kZWNvcmF0b3IKKworCitkZWYgb3ZlcmxvYWQoZnVuYyk6CisgICAgcmFpc2UgUnVudGltZUVycm9yKCJPdmVybG9hZGluZyBpcyBvbmx5IHN1cHBvcnRlZCBpbiBsaWJyYXJ5IHN0dWJzIikKKworCitjbGFzcyBfUHJvdG9jb2xNZXRhKEdlbmVyaWNNZXRhKToKKyAgICAiIiJJbnRlcm5hbCBtZXRhY2xhc3MgZm9yIF9Qcm90b2NvbC4KKworICAgIFRoaXMgZXhpc3RzIHNvIF9Qcm90b2NvbCBjbGFzc2VzIGNhbiBiZSBnZW5lcmljIHdpdGhvdXQgZGVyaXZpbmcKKyAgICBmcm9tIEdlbmVyaWMuCisgICAgIiIiCisKKyAgICBkZWYgX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgb2JqKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJQcm90b2NvbHMgY2Fubm90IGJlIHVzZWQgd2l0aCBpc2luc3RhbmNlKCkuIikKKworICAgIGRlZiBfX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBjbHMpOgorICAgICAgICBpZiBub3Qgc2VsZi5faXNfcHJvdG9jb2w6CisgICAgICAgICAgICAjIE5vIHN0cnVjdHVyYWwgY2hlY2tzIHNpbmNlIHRoaXMgaXNuJ3QgYSBwcm90b2NvbC4KKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisgICAgICAgIGlmIHNlbGYgaXMgX1Byb3RvY29sOgorICAgICAgICAgICAgIyBFdmVyeSBjbGFzcyBpcyBhIHN1YmNsYXNzIG9mIHRoZSBlbXB0eSBwcm90b2NvbC4KKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgIyBGaW5kIGFsbCBhdHRyaWJ1dGVzIGRlZmluZWQgaW4gdGhlIHByb3RvY29sLgorICAgICAgICBhdHRycyA9IHNlbGYuX2dldF9wcm90b2NvbF9hdHRycygpCisKKyAgICAgICAgZm9yIGF0dHIgaW4gYXR0cnM6CisgICAgICAgICAgICBpZiBub3QgYW55KGF0dHIgaW4gZC5fX2RpY3RfXyBmb3IgZCBpbiBjbHMuX19tcm9fXyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgX2dldF9wcm90b2NvbF9hdHRycyhzZWxmKToKKyAgICAgICAgIyBHZXQgYWxsIFByb3RvY29sIGJhc2UgY2xhc3Nlcy4KKyAgICAgICAgcHJvdG9jb2xfYmFzZXMgPSBbXQorICAgICAgICBmb3IgYyBpbiBzZWxmLl9fbXJvX186CisgICAgICAgICAgICBpZiBnZXRhdHRyKGMsICdfaXNfcHJvdG9jb2wnLCBGYWxzZSkgYW5kIGMuX19uYW1lX18gIT0gJ19Qcm90b2NvbCc6CisgICAgICAgICAgICAgICAgcHJvdG9jb2xfYmFzZXMuYXBwZW5kKGMpCisKKyAgICAgICAgIyBHZXQgYXR0cmlidXRlcyBpbmNsdWRlZCBpbiBwcm90b2NvbC4KKyAgICAgICAgYXR0cnMgPSBzZXQoKQorICAgICAgICBmb3IgYmFzZSBpbiBwcm90b2NvbF9iYXNlczoKKyAgICAgICAgICAgIGZvciBhdHRyIGluIGJhc2UuX19kaWN0X18ua2V5cygpOgorICAgICAgICAgICAgICAgICMgSW5jbHVkZSBhdHRyaWJ1dGVzIG5vdCBkZWZpbmVkIGluIGFueSBub24tcHJvdG9jb2wgYmFzZXMuCisgICAgICAgICAgICAgICAgZm9yIGMgaW4gc2VsZi5fX21yb19fOgorICAgICAgICAgICAgICAgICAgICBpZiAoYyBpcyBub3QgYmFzZSBhbmQgYXR0ciBpbiBjLl9fZGljdF9fIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBnZXRhdHRyKGMsICdfaXNfcHJvdG9jb2wnLCBGYWxzZSkpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiAobm90IGF0dHIuc3RhcnRzd2l0aCgnX2FiY18nKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIgIT0gJ19fYWJzdHJhY3RtZXRob2RzX18nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgYXR0ciAhPSAnX2lzX3Byb3RvY29sJyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIgIT0gJ19fZGljdF9fJyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIgIT0gJ19fc2xvdHNfXycgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBhdHRyICE9ICdfZ2V0X3Byb3RvY29sX2F0dHJzJyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIgIT0gJ19fcGFyYW1ldGVyc19fJyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIgIT0gJ19fb3JpZ2luX18nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgYXR0ciAhPSAnX19tb2R1bGVfXycpOgorICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMuYWRkKGF0dHIpCisKKyAgICAgICAgcmV0dXJuIGF0dHJzCisKKworY2xhc3MgX1Byb3RvY29sKG1ldGFjbGFzcz1fUHJvdG9jb2xNZXRhKToKKyAgICAiIiJJbnRlcm5hbCBiYXNlIGNsYXNzIGZvciBwcm90b2NvbCBjbGFzc2VzLgorCisgICAgVGhpcyBpbXBsZW1lbnRzIGEgc2ltcGxlLW1pbmRlZCBzdHJ1Y3R1cmFsIGlzaW5zdGFuY2UgY2hlY2sKKyAgICAoc2ltaWxhciBidXQgbW9yZSBnZW5lcmFsIHRoYW4gdGhlIG9uZS1vZmZzIGluIGNvbGxlY3Rpb25zLmFiYworICAgIHN1Y2ggYXMgSGFzaGFibGUpLgorICAgICIiIgorCisgICAgX19zbG90c19fID0gKCkKKworICAgIF9pc19wcm90b2NvbCA9IFRydWUKKworCisjIFZhcmlvdXMgQUJDcyBtaW1pY2tpbmcgdGhvc2UgaW4gY29sbGVjdGlvbnMuYWJjLgorIyBBIGZldyBhcmUgc2ltcGx5IHJlLWV4cG9ydGVkIGZvciBjb21wbGV0ZW5lc3MuCisKK0hhc2hhYmxlID0gY29sbGVjdGlvbnNfYWJjLkhhc2hhYmxlICAjIE5vdCBnZW5lcmljLgorCisKK2NsYXNzIEF3YWl0YWJsZShHZW5lcmljW1RfY29dLCBleHRyYT1jb2xsZWN0aW9uc19hYmMuQXdhaXRhYmxlKToKKyAgICBfX3Nsb3RzX18gPSAoKQorCisKK2NsYXNzIEFzeW5jSXRlcmFibGUoR2VuZXJpY1tUX2NvXSwgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLkFzeW5jSXRlcmFibGUpOgorICAgIF9fc2xvdHNfXyA9ICgpCisKKworY2xhc3MgQXN5bmNJdGVyYXRvcihBc3luY0l0ZXJhYmxlW1RfY29dLCBleHRyYT1jb2xsZWN0aW9uc19hYmMuQXN5bmNJdGVyYXRvcik6CisgICAgX19zbG90c19fID0gKCkKKworCitjbGFzcyBJdGVyYWJsZShHZW5lcmljW1RfY29dLCBleHRyYT1jb2xsZWN0aW9uc19hYmMuSXRlcmFibGUpOgorICAgIF9fc2xvdHNfXyA9ICgpCisKKworY2xhc3MgSXRlcmF0b3IoSXRlcmFibGVbVF9jb10sIGV4dHJhPWNvbGxlY3Rpb25zX2FiYy5JdGVyYXRvcik6CisgICAgX19zbG90c19fID0gKCkKKworCitjbGFzcyBTdXBwb3J0c0ludChfUHJvdG9jb2wpOgorICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19pbnRfXyhzZWxmKSAtPiBpbnQ6CisgICAgICAgIHBhc3MKKworCitjbGFzcyBTdXBwb3J0c0Zsb2F0KF9Qcm90b2NvbCk6CisgICAgX19zbG90c19fID0gKCkKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX2Zsb2F0X18oc2VsZikgLT4gZmxvYXQ6CisgICAgICAgIHBhc3MKKworCitjbGFzcyBTdXBwb3J0c0NvbXBsZXgoX1Byb3RvY29sKToKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fY29tcGxleF9fKHNlbGYpIC0+IGNvbXBsZXg6CisgICAgICAgIHBhc3MKKworCitjbGFzcyBTdXBwb3J0c0J5dGVzKF9Qcm90b2NvbCk6CisgICAgX19zbG90c19fID0gKCkKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX2J5dGVzX18oc2VsZikgLT4gYnl0ZXM6CisgICAgICAgIHBhc3MKKworCitjbGFzcyBTdXBwb3J0c0FicyhfUHJvdG9jb2xbVF9jb10pOgorICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19hYnNfXyhzZWxmKSAtPiBUX2NvOgorICAgICAgICBwYXNzCisKKworY2xhc3MgU3VwcG9ydHNSb3VuZChfUHJvdG9jb2xbVF9jb10pOgorICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19yb3VuZF9fKHNlbGYsIG5kaWdpdHM6IGludCA9IDApIC0+IFRfY286CisgICAgICAgIHBhc3MKKworCitjbGFzcyBSZXZlcnNpYmxlKF9Qcm90b2NvbFtUX2NvXSk6CisgICAgX19zbG90c19fID0gKCkKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX3JldmVyc2VkX18oc2VsZikgLT4gJ0l0ZXJhdG9yW1RfY29dJzoKKyAgICAgICAgcGFzcworCisKK1NpemVkID0gY29sbGVjdGlvbnNfYWJjLlNpemVkICAjIE5vdCBnZW5lcmljLgorCisKK2NsYXNzIENvbnRhaW5lcihHZW5lcmljW1RfY29dLCBleHRyYT1jb2xsZWN0aW9uc19hYmMuQ29udGFpbmVyKToKKyAgICBfX3Nsb3RzX18gPSAoKQorCisKKyMgQ2FsbGFibGUgd2FzIGRlZmluZWQgZWFybGllci4KKworCitjbGFzcyBBYnN0cmFjdFNldChTaXplZCwgSXRlcmFibGVbVF9jb10sIENvbnRhaW5lcltUX2NvXSwKKyAgICAgICAgICAgICAgICAgIGV4dHJhPWNvbGxlY3Rpb25zX2FiYy5TZXQpOgorICAgIHBhc3MKKworCitjbGFzcyBNdXRhYmxlU2V0KEFic3RyYWN0U2V0W1RdLCBleHRyYT1jb2xsZWN0aW9uc19hYmMuTXV0YWJsZVNldCk6CisgICAgcGFzcworCisKKyMgTk9URTogT25seSB0aGUgdmFsdWUgdHlwZSBpcyBjb3ZhcmlhbnQuCitjbGFzcyBNYXBwaW5nKFNpemVkLCBJdGVyYWJsZVtLVF0sIENvbnRhaW5lcltLVF0sIEdlbmVyaWNbVlRfY29dLAorICAgICAgICAgICAgICBleHRyYT1jb2xsZWN0aW9uc19hYmMuTWFwcGluZyk6CisgICAgcGFzcworCisKK2NsYXNzIE11dGFibGVNYXBwaW5nKE1hcHBpbmdbS1QsIFZUXSwgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLk11dGFibGVNYXBwaW5nKToKKyAgICBwYXNzCisKKworY2xhc3MgU2VxdWVuY2UoU2l6ZWQsIEl0ZXJhYmxlW1RfY29dLCBDb250YWluZXJbVF9jb10sCisgICAgICAgICAgICAgICBleHRyYT1jb2xsZWN0aW9uc19hYmMuU2VxdWVuY2UpOgorICAgIHBhc3MKKworCitjbGFzcyBNdXRhYmxlU2VxdWVuY2UoU2VxdWVuY2VbVF0sIGV4dHJhPWNvbGxlY3Rpb25zX2FiYy5NdXRhYmxlU2VxdWVuY2UpOgorICAgIHBhc3MKKworCitjbGFzcyBCeXRlU3RyaW5nKFNlcXVlbmNlW2ludF0sIGV4dHJhPWNvbGxlY3Rpb25zX2FiYy5CeXRlU3RyaW5nKToKKyAgICBwYXNzCisKKworQnl0ZVN0cmluZy5yZWdpc3Rlcih0eXBlKG1lbW9yeXZpZXcoYicnKSkpCisKKworY2xhc3MgTGlzdChsaXN0LCBNdXRhYmxlU2VxdWVuY2VbVF0pOgorCisgICAgZGVmIF9fbmV3X18oY2xzLCAqYXJncywgKiprd2RzKToKKyAgICAgICAgaWYgX2dlcXYoY2xzLCBMaXN0KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVHlwZSBMaXN0IGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQ7ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlIGxpc3QoKSBpbnN0ZWFkIikKKyAgICAgICAgcmV0dXJuIGxpc3QuX19uZXdfXyhjbHMsICphcmdzLCAqKmt3ZHMpCisKKworY2xhc3MgU2V0KHNldCwgTXV0YWJsZVNldFtUXSk6CisKKyAgICBkZWYgX19uZXdfXyhjbHMsICphcmdzLCAqKmt3ZHMpOgorICAgICAgICBpZiBfZ2VxdihjbHMsIFNldCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlR5cGUgU2V0IGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQ7ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlIHNldCgpIGluc3RlYWQiKQorICAgICAgICByZXR1cm4gc2V0Ll9fbmV3X18oY2xzLCAqYXJncywgKiprd2RzKQorCisKK2NsYXNzIF9Gcm96ZW5TZXRNZXRhKEdlbmVyaWNNZXRhKToKKyAgICAiIiJUaGlzIG1ldGFjbGFzcyBlbnN1cmVzIHNldCBpcyBub3QgYSBzdWJjbGFzcyBvZiBGcm96ZW5TZXQuCisKKyAgICBXaXRob3V0IHRoaXMgbWV0YWNsYXNzLCBzZXQgd291bGQgYmUgY29uc2lkZXJlZCBhIHN1YmNsYXNzIG9mCisgICAgRnJvemVuU2V0LCBiZWNhdXNlIEZyb3plblNldC5fX2V4dHJhX18gaXMgY29sbGVjdGlvbnMuYWJjLlNldCwgYW5kCisgICAgc2V0IGlzIGEgc3ViY2xhc3Mgb2YgdGhhdC4KKyAgICAiIiIKKworICAgIGRlZiBfX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBjbHMpOgorICAgICAgICBpZiBpc3N1YmNsYXNzKGNscywgU2V0KToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gc3VwZXIoKS5fX3N1YmNsYXNzY2hlY2tfXyhjbHMpCisKKworY2xhc3MgRnJvemVuU2V0KGZyb3plbnNldCwgQWJzdHJhY3RTZXRbVF9jb10sIG1ldGFjbGFzcz1fRnJvemVuU2V0TWV0YSk6CisgICAgX19zbG90c19fID0gKCkKKworICAgIGRlZiBfX25ld19fKGNscywgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgIGlmIF9nZXF2KGNscywgRnJvemVuU2V0KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVHlwZSBGcm96ZW5TZXQgY2Fubm90IGJlIGluc3RhbnRpYXRlZDsgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgZnJvemVuc2V0KCkgaW5zdGVhZCIpCisgICAgICAgIHJldHVybiBmcm96ZW5zZXQuX19uZXdfXyhjbHMsICphcmdzLCAqKmt3ZHMpCisKKworY2xhc3MgTWFwcGluZ1ZpZXcoU2l6ZWQsIEl0ZXJhYmxlW1RfY29dLCBleHRyYT1jb2xsZWN0aW9uc19hYmMuTWFwcGluZ1ZpZXcpOgorICAgIHBhc3MKKworCitjbGFzcyBLZXlzVmlldyhNYXBwaW5nVmlld1tLVF0sIEFic3RyYWN0U2V0W0tUXSwKKyAgICAgICAgICAgICAgIGV4dHJhPWNvbGxlY3Rpb25zX2FiYy5LZXlzVmlldyk6CisgICAgcGFzcworCisKKyMgVE9ETzogRW5hYmxlIFNldFtUdXBsZVtLVCwgVlRfY29dXSBpbnN0ZWFkIG9mIEdlbmVyaWNbS1QsIFZUX2NvXS4KK2NsYXNzIEl0ZW1zVmlldyhNYXBwaW5nVmlldywgR2VuZXJpY1tLVCwgVlRfY29dLAorICAgICAgICAgICAgICAgIGV4dHJhPWNvbGxlY3Rpb25zX2FiYy5JdGVtc1ZpZXcpOgorICAgIHBhc3MKKworCitjbGFzcyBWYWx1ZXNWaWV3KE1hcHBpbmdWaWV3W1ZUX2NvXSwgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLlZhbHVlc1ZpZXcpOgorICAgIHBhc3MKKworCitjbGFzcyBEaWN0KGRpY3QsIE11dGFibGVNYXBwaW5nW0tULCBWVF0pOgorCisgICAgZGVmIF9fbmV3X18oY2xzLCAqYXJncywgKiprd2RzKToKKyAgICAgICAgaWYgX2dlcXYoY2xzLCBEaWN0KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVHlwZSBEaWN0IGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQ7ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlIGRpY3QoKSBpbnN0ZWFkIikKKyAgICAgICAgcmV0dXJuIGRpY3QuX19uZXdfXyhjbHMsICphcmdzLCAqKmt3ZHMpCisKKworIyBEZXRlcm1pbmUgd2hhdCBiYXNlIGNsYXNzIHRvIHVzZSBmb3IgR2VuZXJhdG9yLgoraWYgaGFzYXR0cihjb2xsZWN0aW9uc19hYmMsICdHZW5lcmF0b3InKToKKyAgICAjIFN1ZmZpY2llbnRseSByZWNlbnQgdmVyc2lvbnMgb2YgMy41IGhhdmUgYSBHZW5lcmF0b3IgQUJDLgorICAgIF9HX2Jhc2UgPSBjb2xsZWN0aW9uc19hYmMuR2VuZXJhdG9yCitlbHNlOgorICAgICMgRmFsbCBiYWNrIG9uIHRoZSBleGFjdCB0eXBlLgorICAgIF9HX2Jhc2UgPSB0eXBlcy5HZW5lcmF0b3JUeXBlCisKKworY2xhc3MgR2VuZXJhdG9yKEl0ZXJhdG9yW1RfY29dLCBHZW5lcmljW1RfY28sIFRfY29udHJhLCBWX2NvXSwKKyAgICAgICAgICAgICAgICBleHRyYT1fR19iYXNlKToKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgZGVmIF9fbmV3X18oY2xzLCAqYXJncywgKiprd2RzKToKKyAgICAgICAgaWYgX2dlcXYoY2xzLCBHZW5lcmF0b3IpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJUeXBlIEdlbmVyYXRvciBjYW5ub3QgYmUgaW5zdGFudGlhdGVkOyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNyZWF0ZSBhIHN1YmNsYXNzIGluc3RlYWQiKQorICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKGNscywgKmFyZ3MsICoqa3dkcykKKworCitkZWYgTmFtZWRUdXBsZSh0eXBlbmFtZSwgZmllbGRzKToKKyAgICAiIiJUeXBlZCB2ZXJzaW9uIG9mIG5hbWVkdHVwbGUuCisKKyAgICBVc2FnZTo6CisKKyAgICAgICAgRW1wbG95ZWUgPSB0eXBpbmcuTmFtZWRUdXBsZSgnRW1wbG95ZWUnLCBbKCduYW1lJywgc3RyKSwgJ2lkJywgaW50KV0pCisKKyAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG86OgorCisgICAgICAgIEVtcGxveWVlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgnRW1wbG95ZWUnLCBbJ25hbWUnLCAnaWQnXSkKKworICAgIFRoZSByZXN1bHRpbmcgY2xhc3MgaGFzIG9uZSBleHRyYSBhdHRyaWJ1dGU6IF9maWVsZF90eXBlcywKKyAgICBnaXZpbmcgYSBkaWN0IG1hcHBpbmcgZmllbGQgbmFtZXMgdG8gdHlwZXMuICAoVGhlIGZpZWxkIG5hbWVzCisgICAgYXJlIGluIHRoZSBfZmllbGRzIGF0dHJpYnV0ZSwgd2hpY2ggaXMgcGFydCBvZiB0aGUgbmFtZWR0dXBsZQorICAgIEFQSS4pCisgICAgIiIiCisgICAgZmllbGRzID0gWyhuLCB0KSBmb3IgbiwgdCBpbiBmaWVsZHNdCisgICAgY2xzID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSh0eXBlbmFtZSwgW24gZm9yIG4sIHQgaW4gZmllbGRzXSkKKyAgICBjbHMuX2ZpZWxkX3R5cGVzID0gZGljdChmaWVsZHMpCisgICAgIyBTZXQgdGhlIG1vZHVsZSB0byB0aGUgY2FsbGVyJ3MgbW9kdWxlIChvdGhlcndpc2UgaXQnZCBiZSAndHlwaW5nJykuCisgICAgdHJ5OgorICAgICAgICBjbHMuX19tb2R1bGVfXyA9IHN5cy5fZ2V0ZnJhbWUoMSkuZl9nbG9iYWxzLmdldCgnX19uYW1lX18nLCAnX19tYWluX18nKQorICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICBwYXNzCisgICAgcmV0dXJuIGNscworCisKK2NsYXNzIElPKEdlbmVyaWNbQW55U3RyXSk6CisgICAgIiIiR2VuZXJpYyBiYXNlIGNsYXNzIGZvciBUZXh0SU8gYW5kIEJpbmFyeUlPLgorCisgICAgVGhpcyBpcyBhbiBhYnN0cmFjdCwgZ2VuZXJpYyB2ZXJzaW9uIG9mIHRoZSByZXR1cm4gb2Ygb3BlbigpLgorCisgICAgTk9URTogVGhpcyBkb2VzIG5vdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgcG9zc2libGUKKyAgICBjbGFzc2VzICh0ZXh0IHZzLiBiaW5hcnksIHJlYWQgdnMuIHdyaXRlIHZzLiByZWFkL3dyaXRlLAorICAgIGFwcGVuZC1vbmx5LCB1bmJ1ZmZlcmVkKS4gIFRoZSBUZXh0SU8gYW5kIEJpbmFyeUlPIHN1YmNsYXNzZXMKKyAgICBiZWxvdyBjYXB0dXJlIHRoZSBkaXN0aW5jdGlvbnMgYmV0d2VlbiB0ZXh0IHZzLiBiaW5hcnksIHdoaWNoIGlzCisgICAgcGVydmFzaXZlIGluIHRoZSBpbnRlcmZhY2U7IGhvd2V2ZXIgd2UgY3VycmVudGx5IGRvIG5vdCBvZmZlciBhCisgICAgd2F5IHRvIHRyYWNrIHRoZSBvdGhlciBkaXN0aW5jdGlvbnMgaW4gdGhlIHR5cGUgc3lzdGVtLgorICAgICIiIgorCisgICAgX19zbG90c19fID0gKCkKKworICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgZGVmIG1vZGUoc2VsZikgLT4gc3RyOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3Rwcm9wZXJ0eQorICAgIGRlZiBuYW1lKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIGNsb3NlKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBjbG9zZWQoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIGZpbGVubyhzZWxmKSAtPiBpbnQ6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBmbHVzaChzZWxmKSAtPiBOb25lOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgaXNhdHR5KHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiByZWFkKHNlbGYsIG46IGludCA9IC0xKSAtPiBBbnlTdHI6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiByZWFkYWJsZShzZWxmKSAtPiBib29sOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgcmVhZGxpbmUoc2VsZiwgbGltaXQ6IGludCA9IC0xKSAtPiBBbnlTdHI6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiByZWFkbGluZXMoc2VsZiwgaGludDogaW50ID0gLTEpIC0+IExpc3RbQW55U3RyXToKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHNlZWsoc2VsZiwgb2Zmc2V0OiBpbnQsIHdoZW5jZTogaW50ID0gMCkgLT4gaW50OgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgc2Vla2FibGUoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHRlbGwoc2VsZikgLT4gaW50OgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgdHJ1bmNhdGUoc2VsZiwgc2l6ZTogaW50ID0gTm9uZSkgLT4gaW50OgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgd3JpdGFibGUoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHdyaXRlKHNlbGYsIHM6IEFueVN0cikgLT4gaW50OgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgd3JpdGVsaW5lcyhzZWxmLCBsaW5lczogTGlzdFtBbnlTdHJdKSAtPiBOb25lOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpIC0+ICdJT1tBbnlTdHJdJzoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spIC0+IE5vbmU6CisgICAgICAgIHBhc3MKKworCitjbGFzcyBCaW5hcnlJTyhJT1tieXRlc10pOgorICAgICIiIlR5cGVkIHZlcnNpb24gb2YgdGhlIHJldHVybiBvZiBvcGVuKCkgaW4gYmluYXJ5IG1vZGUuIiIiCisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHdyaXRlKHNlbGYsIHM6IFVuaW9uW2J5dGVzLCBieXRlYXJyYXldKSAtPiBpbnQ6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX2VudGVyX18oc2VsZikgLT4gJ0JpbmFyeUlPJzoKKyAgICAgICAgcGFzcworCisKK2NsYXNzIFRleHRJTyhJT1tzdHJdKToKKyAgICAiIiJUeXBlZCB2ZXJzaW9uIG9mIHRoZSByZXR1cm4gb2Ygb3BlbigpIGluIHRleHQgbW9kZS4iIiIKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAYWJzdHJhY3Rwcm9wZXJ0eQorICAgIGRlZiBidWZmZXIoc2VsZikgLT4gQmluYXJ5SU86CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgZGVmIGVuY29kaW5nKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBkZWYgZXJyb3JzKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBkZWYgbGluZV9idWZmZXJpbmcoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBkZWYgbmV3bGluZXMoc2VsZikgLT4gQW55OgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpIC0+ICdUZXh0SU8nOgorICAgICAgICBwYXNzCisKKworY2xhc3MgaW86CisgICAgIiIiV3JhcHBlciBuYW1lc3BhY2UgZm9yIElPIGdlbmVyaWMgY2xhc3Nlcy4iIiIKKworICAgIF9fYWxsX18gPSBbJ0lPJywgJ1RleHRJTycsICdCaW5hcnlJTyddCisgICAgSU8gPSBJTworICAgIFRleHRJTyA9IFRleHRJTworICAgIEJpbmFyeUlPID0gQmluYXJ5SU8KKworaW8uX19uYW1lX18gPSBfX25hbWVfXyArICcuaW8nCitzeXMubW9kdWxlc1tpby5fX25hbWVfX10gPSBpbworCisKK1BhdHRlcm4gPSBfVHlwZUFsaWFzKCdQYXR0ZXJuJywgQW55U3RyLCB0eXBlKHN0ZGxpYl9yZS5jb21waWxlKCcnKSksCisgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgcDogcC5wYXR0ZXJuKQorTWF0Y2ggPSBfVHlwZUFsaWFzKCdNYXRjaCcsIEFueVN0ciwgdHlwZShzdGRsaWJfcmUubWF0Y2goJycsICcnKSksCisgICAgICAgICAgICAgICAgICAgbGFtYmRhIG06IG0ucmUucGF0dGVybikKKworCitjbGFzcyByZToKKyAgICAiIiJXcmFwcGVyIG5hbWVzcGFjZSBmb3IgcmUgdHlwZSBhbGlhc2VzLiIiIgorCisgICAgX19hbGxfXyA9IFsnUGF0dGVybicsICdNYXRjaCddCisgICAgUGF0dGVybiA9IFBhdHRlcm4KKyAgICBNYXRjaCA9IE1hdGNoCisKK3JlLl9fbmFtZV9fID0gX19uYW1lX18gKyAnLnJlJworc3lzLm1vZHVsZXNbcmUuX19uYW1lX19dID0gcmUKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9fX2luaXRfXy5weSBiL0xpYi91bml0dGVzdC9fX2luaXRfXy5weQppbmRleCBhNWQ1MGFmLi5mNmQ3YWUyIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvX19pbml0X18ucHkKKysrIGIvTGliL3VuaXR0ZXN0L19faW5pdF9fLnB5CkBAIC02NywzICs2NywxMiBAQAogCiAjIGRlcHJlY2F0ZWQKIF9UZXh0VGVzdFJlc3VsdCA9IFRleHRUZXN0UmVzdWx0CisKKyMgVGhlcmUgYXJlIG5vIHRlc3RzIGhlcmUsIHNvIGRvbid0IHRyeSB0byBydW4gYW55dGhpbmcgZGlzY292ZXJlZCBmcm9tCisjIGludHJvc3BlY3RpbmcgdGhlIHN5bWJvbHMgKGUuZy4gRnVuY3Rpb25UZXN0Q2FzZSkuIEluc3RlYWQsIGFsbCBvdXIKKyMgdGVzdHMgY29tZSBmcm9tIHdpdGhpbiB1bml0dGVzdC50ZXN0LgorZGVmIGxvYWRfdGVzdHMobG9hZGVyLCB0ZXN0cywgcGF0dGVybik6CisgICAgaW1wb3J0IG9zLnBhdGgKKyAgICAjIHRvcCBsZXZlbCBkaXJlY3RvcnkgY2FjaGVkIG9uIGxvYWRlciBpbnN0YW5jZQorICAgIHRoaXNfZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgIHJldHVybiBsb2FkZXIuZGlzY292ZXIoc3RhcnRfZGlyPXRoaXNfZGlyLCBwYXR0ZXJuPXBhdHRlcm4pCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvY2FzZS5weSBiL0xpYi91bml0dGVzdC9jYXNlLnB5CmluZGV4IDhhOWYxYzAuLmFjOGQ2N2QgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9jYXNlLnB5CisrKyBiL0xpYi91bml0dGVzdC9jYXNlLnB5CkBAIC0xMTksNiArMTE5LDEwIEBACiAgICAgdGVzdF9pdGVtLl9fdW5pdHRlc3RfZXhwZWN0aW5nX2ZhaWx1cmVfXyA9IFRydWUKICAgICByZXR1cm4gdGVzdF9pdGVtCiAKK2RlZiBfaXNfc3VidHlwZShleHBlY3RlZCwgYmFzZXR5cGUpOgorICAgIGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIHR1cGxlKToKKyAgICAgICAgcmV0dXJuIGFsbChfaXNfc3VidHlwZShlLCBiYXNldHlwZSkgZm9yIGUgaW4gZXhwZWN0ZWQpCisgICAgcmV0dXJuIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIHR5cGUpIGFuZCBpc3N1YmNsYXNzKGV4cGVjdGVkLCBiYXNldHlwZSkKIAogY2xhc3MgX0Jhc2VUZXN0Q2FzZUNvbnRleHQ6CiAKQEAgLTEyOSwzNSArMTMzLDQ1IEBACiAgICAgICAgIG1zZyA9IHNlbGYudGVzdF9jYXNlLl9mb3JtYXRNZXNzYWdlKHNlbGYubXNnLCBzdGFuZGFyZE1zZykKICAgICAgICAgcmFpc2Ugc2VsZi50ZXN0X2Nhc2UuZmFpbHVyZUV4Y2VwdGlvbihtc2cpCiAKLQogY2xhc3MgX0Fzc2VydFJhaXNlc0Jhc2VDb250ZXh0KF9CYXNlVGVzdENhc2VDb250ZXh0KToKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleHBlY3RlZCwgdGVzdF9jYXNlLCBjYWxsYWJsZV9vYmo9Tm9uZSwKLSAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXg9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4cGVjdGVkLCB0ZXN0X2Nhc2UsIGV4cGVjdGVkX3JlZ2V4PU5vbmUpOgogICAgICAgICBfQmFzZVRlc3RDYXNlQ29udGV4dC5fX2luaXRfXyhzZWxmLCB0ZXN0X2Nhc2UpCiAgICAgICAgIHNlbGYuZXhwZWN0ZWQgPSBleHBlY3RlZAogICAgICAgICBzZWxmLnRlc3RfY2FzZSA9IHRlc3RfY2FzZQotICAgICAgICBpZiBjYWxsYWJsZV9vYmogaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5vYmpfbmFtZSA9IGNhbGxhYmxlX29iai5fX25hbWVfXwotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgIHNlbGYub2JqX25hbWUgPSBzdHIoY2FsbGFibGVfb2JqKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5vYmpfbmFtZSA9IE5vbmUKICAgICAgICAgaWYgZXhwZWN0ZWRfcmVnZXggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBleHBlY3RlZF9yZWdleCA9IHJlLmNvbXBpbGUoZXhwZWN0ZWRfcmVnZXgpCiAgICAgICAgIHNlbGYuZXhwZWN0ZWRfcmVnZXggPSBleHBlY3RlZF9yZWdleAorICAgICAgICBzZWxmLm9ial9uYW1lID0gTm9uZQogICAgICAgICBzZWxmLm1zZyA9IE5vbmUKIAotICAgIGRlZiBoYW5kbGUoc2VsZiwgbmFtZSwgY2FsbGFibGVfb2JqLCBhcmdzLCBrd2FyZ3MpOgorICAgIGRlZiBoYW5kbGUoc2VsZiwgbmFtZSwgYXJncywga3dhcmdzKToKICAgICAgICAgIiIiCi0gICAgICAgIElmIGNhbGxhYmxlX29iaiBpcyBOb25lLCBhc3NlcnRSYWlzZXMvV2FybnMgaXMgYmVpbmcgdXNlZCBhcyBhCisgICAgICAgIElmIGFyZ3MgaXMgZW1wdHksIGFzc2VydFJhaXNlcy9XYXJucyBpcyBiZWluZyB1c2VkIGFzIGEKICAgICAgICAgY29udGV4dCBtYW5hZ2VyLCBzbyBjaGVjayBmb3IgYSAnbXNnJyBrd2FyZyBhbmQgcmV0dXJuIHNlbGYuCi0gICAgICAgIElmIGNhbGxhYmxlX29iaiBpcyBub3QgTm9uZSwgY2FsbCBpdCBwYXNzaW5nIGFyZ3MgYW5kIGt3YXJncy4KKyAgICAgICAgSWYgYXJncyBpcyBub3QgZW1wdHksIGNhbGwgYSBjYWxsYWJsZSBwYXNzaW5nIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQKKyAgICAgICAgYXJndW1lbnRzLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgY2FsbGFibGVfb2JqIGlzIE5vbmU6CisgICAgICAgIGlmIG5vdCBfaXNfc3VidHlwZShzZWxmLmV4cGVjdGVkLCBzZWxmLl9iYXNlX3R5cGUpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclcygpIGFyZyAxIG11c3QgYmUgJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgc2VsZi5fYmFzZV90eXBlX3N0cikpCisgICAgICAgIGlmIGFyZ3MgYW5kIGFyZ3NbMF0gaXMgTm9uZToKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImNhbGxhYmxlIGlzIE5vbmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDMpCisgICAgICAgICAgICBhcmdzID0gKCkKKyAgICAgICAgaWYgbm90IGFyZ3M6CiAgICAgICAgICAgICBzZWxmLm1zZyA9IGt3YXJncy5wb3AoJ21zZycsIE5vbmUpCisgICAgICAgICAgICBpZiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybignJXIgaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50IGZvciAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhpcyBmdW5jdGlvbicgJSBuZXh0KGl0ZXIoa3dhcmdzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDMpCiAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIGNhbGxhYmxlX29iaiwgKmFyZ3MgPSBhcmdzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYub2JqX25hbWUgPSBjYWxsYWJsZV9vYmouX19uYW1lX18KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgc2VsZi5vYmpfbmFtZSA9IHN0cihjYWxsYWJsZV9vYmopCiAgICAgICAgIHdpdGggc2VsZjoKICAgICAgICAgICAgIGNhbGxhYmxlX29iaigqYXJncywgKiprd2FyZ3MpCiAKQEAgLTE2NSw2ICsxNzksOSBAQAogY2xhc3MgX0Fzc2VydFJhaXNlc0NvbnRleHQoX0Fzc2VydFJhaXNlc0Jhc2VDb250ZXh0KToKICAgICAiIiJBIGNvbnRleHQgbWFuYWdlciB1c2VkIHRvIGltcGxlbWVudCBUZXN0Q2FzZS5hc3NlcnRSYWlzZXMqIG1ldGhvZHMuIiIiCiAKKyAgICBfYmFzZV90eXBlID0gQmFzZUV4Y2VwdGlvbgorICAgIF9iYXNlX3R5cGVfc3RyID0gJ2FuIGV4Y2VwdGlvbiB0eXBlIG9yIHR1cGxlIG9mIGV4Y2VwdGlvbiB0eXBlcycKKwogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmCiAKQEAgLTE5OSw2ICsyMTYsOSBAQAogY2xhc3MgX0Fzc2VydFdhcm5zQ29udGV4dChfQXNzZXJ0UmFpc2VzQmFzZUNvbnRleHQpOgogICAgICIiIkEgY29udGV4dCBtYW5hZ2VyIHVzZWQgdG8gaW1wbGVtZW50IFRlc3RDYXNlLmFzc2VydFdhcm5zKiBtZXRob2RzLiIiIgogCisgICAgX2Jhc2VfdHlwZSA9IFdhcm5pbmcKKyAgICBfYmFzZV90eXBlX3N0ciA9ICdhIHdhcm5pbmcgdHlwZSBvciB0dXBsZSBvZiB3YXJuaW5nIHR5cGVzJworCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICAgIyBUaGUgX193YXJuaW5ncmVnaXN0cnlfXydzIG5lZWQgdG8gYmUgaW4gYSBwcmlzdGluZSBzdGF0ZSBmb3IgdGVzdHMKICAgICAgICAgIyB0byB3b3JrIHByb3Blcmx5LgpAQCAtNjc3LDE1ICs2OTcsMTUgQEAKICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKICAgICAgICAgICAgIHJldHVybiAgJyVzIDogJXMnICUgKHNhZmVfcmVwcihzdGFuZGFyZE1zZyksIHNhZmVfcmVwcihtc2cpKQogCi0gICAgZGVmIGFzc2VydFJhaXNlcyhzZWxmLCBleGNDbGFzcywgY2FsbGFibGVPYmo9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgIiIiRmFpbCB1bmxlc3MgYW4gZXhjZXB0aW9uIG9mIGNsYXNzIGV4Y0NsYXNzIGlzIHJhaXNlZAotICAgICAgICAgICBieSBjYWxsYWJsZU9iaiB3aGVuIGludm9rZWQgd2l0aCBhcmd1bWVudHMgYXJncyBhbmQga2V5d29yZAotICAgICAgICAgICBhcmd1bWVudHMga3dhcmdzLiBJZiBhIGRpZmZlcmVudCB0eXBlIG9mIGV4Y2VwdGlvbiBpcworICAgIGRlZiBhc3NlcnRSYWlzZXMoc2VsZiwgZXhwZWN0ZWRfZXhjZXB0aW9uLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAiIiJGYWlsIHVubGVzcyBhbiBleGNlcHRpb24gb2YgY2xhc3MgZXhwZWN0ZWRfZXhjZXB0aW9uIGlzIHJhaXNlZAorICAgICAgICAgICBieSB0aGUgY2FsbGFibGUgd2hlbiBpbnZva2VkIHdpdGggc3BlY2lmaWVkIHBvc2l0aW9uYWwgYW5kCisgICAgICAgICAgIGtleXdvcmQgYXJndW1lbnRzLiBJZiBhIGRpZmZlcmVudCB0eXBlIG9mIGV4Y2VwdGlvbiBpcwogICAgICAgICAgICByYWlzZWQsIGl0IHdpbGwgbm90IGJlIGNhdWdodCwgYW5kIHRoZSB0ZXN0IGNhc2Ugd2lsbCBiZQogICAgICAgICAgICBkZWVtZWQgdG8gaGF2ZSBzdWZmZXJlZCBhbiBlcnJvciwgZXhhY3RseSBhcyBmb3IgYW4KICAgICAgICAgICAgdW5leHBlY3RlZCBleGNlcHRpb24uCiAKLSAgICAgICAgICAgSWYgY2FsbGVkIHdpdGggY2FsbGFibGVPYmogb21pdHRlZCBvciBOb25lLCB3aWxsIHJldHVybiBhCisgICAgICAgICAgIElmIGNhbGxlZCB3aXRoIHRoZSBjYWxsYWJsZSBhbmQgYXJndW1lbnRzIG9taXR0ZWQsIHdpbGwgcmV0dXJuIGEKICAgICAgICAgICAgY29udGV4dCBvYmplY3QgdXNlZCBsaWtlIHRoaXM6OgogCiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTb21lRXhjZXB0aW9uKToKQEAgLTcwMywxOCArNzIzLDE4IEBACiAgICAgICAgICAgICAgICB0aGVfZXhjZXB0aW9uID0gY20uZXhjZXB0aW9uCiAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoZV9leGNlcHRpb24uZXJyb3JfY29kZSwgMykKICAgICAgICAgIiIiCi0gICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0UmFpc2VzQ29udGV4dChleGNDbGFzcywgc2VsZiwgY2FsbGFibGVPYmopCi0gICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0UmFpc2VzJywgY2FsbGFibGVPYmosIGFyZ3MsIGt3YXJncykKKyAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRSYWlzZXNDb250ZXh0KGV4cGVjdGVkX2V4Y2VwdGlvbiwgc2VsZikKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRSYWlzZXMnLCBhcmdzLCBrd2FyZ3MpCiAKLSAgICBkZWYgYXNzZXJ0V2FybnMoc2VsZiwgZXhwZWN0ZWRfd2FybmluZywgY2FsbGFibGVfb2JqPU5vbmUsICphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIGFzc2VydFdhcm5zKHNlbGYsIGV4cGVjdGVkX3dhcm5pbmcsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIkZhaWwgdW5sZXNzIGEgd2FybmluZyBvZiBjbGFzcyB3YXJuQ2xhc3MgaXMgdHJpZ2dlcmVkCi0gICAgICAgICAgIGJ5IGNhbGxhYmxlX29iaiB3aGVuIGludm9rZWQgd2l0aCBhcmd1bWVudHMgYXJncyBhbmQga2V5d29yZAotICAgICAgICAgICBhcmd1bWVudHMga3dhcmdzLiAgSWYgYSBkaWZmZXJlbnQgdHlwZSBvZiB3YXJuaW5nIGlzCisgICAgICAgICAgIGJ5IHRoZSBjYWxsYWJsZSB3aGVuIGludm9rZWQgd2l0aCBzcGVjaWZpZWQgcG9zaXRpb25hbCBhbmQKKyAgICAgICAgICAga2V5d29yZCBhcmd1bWVudHMuICBJZiBhIGRpZmZlcmVudCB0eXBlIG9mIHdhcm5pbmcgaXMKICAgICAgICAgICAgdHJpZ2dlcmVkLCBpdCB3aWxsIG5vdCBiZSBoYW5kbGVkOiBkZXBlbmRpbmcgb24gdGhlIG90aGVyCiAgICAgICAgICAgIHdhcm5pbmcgZmlsdGVyaW5nIHJ1bGVzIGluIGVmZmVjdCwgaXQgbWlnaHQgYmUgc2lsZW5jZWQsIHByaW50ZWQKICAgICAgICAgICAgb3V0LCBvciByYWlzZWQgYXMgYW4gZXhjZXB0aW9uLgogCi0gICAgICAgICAgIElmIGNhbGxlZCB3aXRoIGNhbGxhYmxlX29iaiBvbWl0dGVkIG9yIE5vbmUsIHdpbGwgcmV0dXJuIGEKKyAgICAgICAgICAgSWYgY2FsbGVkIHdpdGggdGhlIGNhbGxhYmxlIGFuZCBhcmd1bWVudHMgb21pdHRlZCwgd2lsbCByZXR1cm4gYQogICAgICAgICAgICBjb250ZXh0IG9iamVjdCB1c2VkIGxpa2UgdGhpczo6CiAKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoU29tZVdhcm5pbmcpOgpAQCAtNzM0LDggKzc1NCw4IEBACiAgICAgICAgICAgICAgICB0aGVfd2FybmluZyA9IGNtLndhcm5pbmcKICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGhlX3dhcm5pbmcuc29tZV9hdHRyaWJ1dGUsIDE0NykKICAgICAgICAgIiIiCi0gICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0V2FybnNDb250ZXh0KGV4cGVjdGVkX3dhcm5pbmcsIHNlbGYsIGNhbGxhYmxlX29iaikKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRXYXJucycsIGNhbGxhYmxlX29iaiwgYXJncywga3dhcmdzKQorICAgICAgICBjb250ZXh0ID0gX0Fzc2VydFdhcm5zQ29udGV4dChleHBlY3RlZF93YXJuaW5nLCBzZWxmKQorICAgICAgICByZXR1cm4gY29udGV4dC5oYW5kbGUoJ2Fzc2VydFdhcm5zJywgYXJncywga3dhcmdzKQogCiAgICAgZGVmIGFzc2VydExvZ3Moc2VsZiwgbG9nZ2VyPU5vbmUsIGxldmVsPU5vbmUpOgogICAgICAgICAiIiJGYWlsIHVubGVzcyBhIGxvZyBtZXNzYWdlIG9mIGxldmVsICpsZXZlbCogb3IgaGlnaGVyIGlzIGVtaXR0ZWQKQEAgLTEyMjIsMjYgKzEyNDIsMjMgQEAKICAgICAgICAgICAgIHNlbGYuZmFpbChzZWxmLl9mb3JtYXRNZXNzYWdlKG1zZywgc3RhbmRhcmRNc2cpKQogCiAgICAgZGVmIGFzc2VydFJhaXNlc1JlZ2V4KHNlbGYsIGV4cGVjdGVkX2V4Y2VwdGlvbiwgZXhwZWN0ZWRfcmVnZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxhYmxlX29iaj1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAiIiJBc3NlcnRzIHRoYXQgdGhlIG1lc3NhZ2UgaW4gYSByYWlzZWQgZXhjZXB0aW9uIG1hdGNoZXMgYSByZWdleC4KIAogICAgICAgICBBcmdzOgogICAgICAgICAgICAgZXhwZWN0ZWRfZXhjZXB0aW9uOiBFeGNlcHRpb24gY2xhc3MgZXhwZWN0ZWQgdG8gYmUgcmFpc2VkLgogICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXg6IFJlZ2V4IChyZSBwYXR0ZXJuIG9iamVjdCBvciBzdHJpbmcpIGV4cGVjdGVkCiAgICAgICAgICAgICAgICAgICAgIHRvIGJlIGZvdW5kIGluIGVycm9yIG1lc3NhZ2UuCi0gICAgICAgICAgICBjYWxsYWJsZV9vYmo6IEZ1bmN0aW9uIHRvIGJlIGNhbGxlZC4KKyAgICAgICAgICAgIGFyZ3M6IEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhbmQgZXh0cmEgcG9zaXRpb25hbCBhcmdzLgorICAgICAgICAgICAga3dhcmdzOiBFeHRyYSBrd2FyZ3MuCiAgICAgICAgICAgICBtc2c6IE9wdGlvbmFsIG1lc3NhZ2UgdXNlZCBpbiBjYXNlIG9mIGZhaWx1cmUuIENhbiBvbmx5IGJlIHVzZWQKICAgICAgICAgICAgICAgICAgICAgd2hlbiBhc3NlcnRSYWlzZXNSZWdleCBpcyB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgotICAgICAgICAgICAgYXJnczogRXh0cmEgYXJncy4KLSAgICAgICAgICAgIGt3YXJnczogRXh0cmEga3dhcmdzLgogICAgICAgICAiIiIKLSAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRSYWlzZXNDb250ZXh0KGV4cGVjdGVkX2V4Y2VwdGlvbiwgc2VsZiwgY2FsbGFibGVfb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXgpCi0KLSAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRSYWlzZXNSZWdleCcsIGNhbGxhYmxlX29iaiwgYXJncywga3dhcmdzKQorICAgICAgICBjb250ZXh0ID0gX0Fzc2VydFJhaXNlc0NvbnRleHQoZXhwZWN0ZWRfZXhjZXB0aW9uLCBzZWxmLCBleHBlY3RlZF9yZWdleCkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRSYWlzZXNSZWdleCcsIGFyZ3MsIGt3YXJncykKIAogICAgIGRlZiBhc3NlcnRXYXJuc1JlZ2V4KHNlbGYsIGV4cGVjdGVkX3dhcm5pbmcsIGV4cGVjdGVkX3JlZ2V4LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxhYmxlX29iaj1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgICAgICAgICAgICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIkFzc2VydHMgdGhhdCB0aGUgbWVzc2FnZSBpbiBhIHRyaWdnZXJlZCB3YXJuaW5nIG1hdGNoZXMgYSByZWdleHAuCiAgICAgICAgIEJhc2ljIGZ1bmN0aW9uaW5nIGlzIHNpbWlsYXIgdG8gYXNzZXJ0V2FybnMoKSB3aXRoIHRoZSBhZGRpdGlvbgogICAgICAgICB0aGF0IG9ubHkgd2FybmluZ3Mgd2hvc2UgbWVzc2FnZXMgYWxzbyBtYXRjaCB0aGUgcmVndWxhciBleHByZXNzaW9uCkBAIC0xMjUxLDE1ICsxMjY4LDEzIEBACiAgICAgICAgICAgICBleHBlY3RlZF93YXJuaW5nOiBXYXJuaW5nIGNsYXNzIGV4cGVjdGVkIHRvIGJlIHRyaWdnZXJlZC4KICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4OiBSZWdleCAocmUgcGF0dGVybiBvYmplY3Qgb3Igc3RyaW5nKSBleHBlY3RlZAogICAgICAgICAgICAgICAgICAgICB0byBiZSBmb3VuZCBpbiBlcnJvciBtZXNzYWdlLgotICAgICAgICAgICAgY2FsbGFibGVfb2JqOiBGdW5jdGlvbiB0byBiZSBjYWxsZWQuCisgICAgICAgICAgICBhcmdzOiBGdW5jdGlvbiB0byBiZSBjYWxsZWQgYW5kIGV4dHJhIHBvc2l0aW9uYWwgYXJncy4KKyAgICAgICAgICAgIGt3YXJnczogRXh0cmEga3dhcmdzLgogICAgICAgICAgICAgbXNnOiBPcHRpb25hbCBtZXNzYWdlIHVzZWQgaW4gY2FzZSBvZiBmYWlsdXJlLiBDYW4gb25seSBiZSB1c2VkCiAgICAgICAgICAgICAgICAgICAgIHdoZW4gYXNzZXJ0V2FybnNSZWdleCBpcyB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgotICAgICAgICAgICAgYXJnczogRXh0cmEgYXJncy4KLSAgICAgICAgICAgIGt3YXJnczogRXh0cmEga3dhcmdzLgogICAgICAgICAiIiIKLSAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRXYXJuc0NvbnRleHQoZXhwZWN0ZWRfd2FybmluZywgc2VsZiwgY2FsbGFibGVfb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9yZWdleCkKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRXYXJuc1JlZ2V4JywgY2FsbGFibGVfb2JqLCBhcmdzLCBrd2FyZ3MpCisgICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0V2FybnNDb250ZXh0KGV4cGVjdGVkX3dhcm5pbmcsIHNlbGYsIGV4cGVjdGVkX3JlZ2V4KQorICAgICAgICByZXR1cm4gY29udGV4dC5oYW5kbGUoJ2Fzc2VydFdhcm5zUmVnZXgnLCBhcmdzLCBrd2FyZ3MpCiAKICAgICBkZWYgYXNzZXJ0UmVnZXgoc2VsZiwgdGV4dCwgZXhwZWN0ZWRfcmVnZXgsIG1zZz1Ob25lKToKICAgICAgICAgIiIiRmFpbCB0aGUgdGVzdCB1bmxlc3MgdGhlIHRleHQgbWF0Y2hlcyB0aGUgcmVndWxhciBleHByZXNzaW9uLiIiIgpAQCAtMTI2Nyw4ICsxMjgyLDEwIEBACiAgICAgICAgICAgICBhc3NlcnQgZXhwZWN0ZWRfcmVnZXgsICJleHBlY3RlZF9yZWdleCBtdXN0IG5vdCBiZSBlbXB0eS4iCiAgICAgICAgICAgICBleHBlY3RlZF9yZWdleCA9IHJlLmNvbXBpbGUoZXhwZWN0ZWRfcmVnZXgpCiAgICAgICAgIGlmIG5vdCBleHBlY3RlZF9yZWdleC5zZWFyY2godGV4dCk6Ci0gICAgICAgICAgICBtc2cgPSBtc2cgb3IgIlJlZ2V4IGRpZG4ndCBtYXRjaCIKLSAgICAgICAgICAgIG1zZyA9ICclczogJXIgbm90IGZvdW5kIGluICVyJyAlIChtc2csIGV4cGVjdGVkX3JlZ2V4LnBhdHRlcm4sIHRleHQpCisgICAgICAgICAgICBzdGFuZGFyZE1zZyA9ICJSZWdleCBkaWRuJ3QgbWF0Y2g6ICVyIG5vdCBmb3VuZCBpbiAlciIgJSAoCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXgucGF0dGVybiwgdGV4dCkKKyAgICAgICAgICAgICMgX2Zvcm1hdE1lc3NhZ2UgZW5zdXJlcyB0aGUgbG9uZ01lc3NhZ2Ugb3B0aW9uIGlzIHJlc3BlY3RlZAorICAgICAgICAgICAgbXNnID0gc2VsZi5fZm9ybWF0TWVzc2FnZShtc2csIHN0YW5kYXJkTXNnKQogICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKG1zZykKIAogICAgIGRlZiBhc3NlcnROb3RSZWdleChzZWxmLCB0ZXh0LCB1bmV4cGVjdGVkX3JlZ2V4LCBtc2c9Tm9uZSk6CkBAIC0xMjc3LDExICsxMjk0LDEyIEBACiAgICAgICAgICAgICB1bmV4cGVjdGVkX3JlZ2V4ID0gcmUuY29tcGlsZSh1bmV4cGVjdGVkX3JlZ2V4KQogICAgICAgICBtYXRjaCA9IHVuZXhwZWN0ZWRfcmVnZXguc2VhcmNoKHRleHQpCiAgICAgICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgbXNnID0gbXNnIG9yICJSZWdleCBtYXRjaGVkIgotICAgICAgICAgICAgbXNnID0gJyVzOiAlciBtYXRjaGVzICVyIGluICVyJyAlIChtc2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRbbWF0Y2guc3RhcnQoKTptYXRjaC5lbmQoKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWRfcmVnZXgucGF0dGVybiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCkKKyAgICAgICAgICAgIHN0YW5kYXJkTXNnID0gJ1JlZ2V4IG1hdGNoZWQ6ICVyIG1hdGNoZXMgJXIgaW4gJXInICUgKAorICAgICAgICAgICAgICAgIHRleHRbbWF0Y2guc3RhcnQoKSA6IG1hdGNoLmVuZCgpXSwKKyAgICAgICAgICAgICAgICB1bmV4cGVjdGVkX3JlZ2V4LnBhdHRlcm4sCisgICAgICAgICAgICAgICAgdGV4dCkKKyAgICAgICAgICAgICMgX2Zvcm1hdE1lc3NhZ2UgZW5zdXJlcyB0aGUgbG9uZ01lc3NhZ2Ugb3B0aW9uIGlzIHJlc3BlY3RlZAorICAgICAgICAgICAgbXNnID0gc2VsZi5fZm9ybWF0TWVzc2FnZShtc2csIHN0YW5kYXJkTXNnKQogICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKG1zZykKIAogCkBAIC0xMzAzLDYgKzEzMjEsNyBAQAogICAgIGZhaWxJZiA9IF9kZXByZWNhdGUoYXNzZXJ0RmFsc2UpCiAgICAgYXNzZXJ0UmFpc2VzUmVnZXhwID0gX2RlcHJlY2F0ZShhc3NlcnRSYWlzZXNSZWdleCkKICAgICBhc3NlcnRSZWdleHBNYXRjaGVzID0gX2RlcHJlY2F0ZShhc3NlcnRSZWdleCkKKyAgICBhc3NlcnROb3RSZWdleHBNYXRjaGVzID0gX2RlcHJlY2F0ZShhc3NlcnROb3RSZWdleCkKIAogCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9sb2FkZXIucHkgYi9MaWIvdW5pdHRlc3QvbG9hZGVyLnB5CmluZGV4IGFmMzkyMTYuLmM3NzZmMTYgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9sb2FkZXIucHkKKysrIGIvTGliL3VuaXR0ZXN0L2xvYWRlci5weQpAQCAtNiw2ICs2LDcgQEAKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB0eXBlcwogaW1wb3J0IGZ1bmN0b29scworaW1wb3J0IHdhcm5pbmdzCiAKIGZyb20gZm5tYXRjaCBpbXBvcnQgZm5tYXRjaAogCkBAIC0xMyw5ICsxNCw5IEBACiAKIF9fdW5pdHRlc3QgPSBUcnVlCiAKLSMgd2hhdCBhYm91dCAucHljIG9yIC5weW8gKGV0YykKKyMgd2hhdCBhYm91dCAucHljIChldGMpCiAjIHdlIHdvdWxkIG5lZWQgdG8gYXZvaWQgbG9hZGluZyB0aGUgc2FtZSB0ZXN0cyBtdWx0aXBsZSB0aW1lcwotIyBmcm9tICcucHknLCAnLnB5YycgKmFuZCogJy5weW8nCisjIGZyb20gJy5weScsICphbmQqICcucHljJwogVkFMSURfTU9EVUxFX05BTUUgPSByZS5jb21waWxlKHInW19hLXpdXHcqXC5weSQnLCByZS5JR05PUkVDQVNFKQogCiAKQEAgLTM1LDE1ICszNiwxOCBAQAogCiAKIGRlZiBfbWFrZV9mYWlsZWRfaW1wb3J0X3Rlc3QobmFtZSwgc3VpdGVDbGFzcyk6Ci0gICAgbWVzc2FnZSA9ICdGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiAlc1xuJXMnICUgKG5hbWUsIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCi0gICAgcmV0dXJuIF9tYWtlX2ZhaWxlZF90ZXN0KG5hbWUsIEltcG9ydEVycm9yKG1lc3NhZ2UpLCBzdWl0ZUNsYXNzKQorICAgIG1lc3NhZ2UgPSAnRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogJXNcbiVzJyAlICgKKyAgICAgICAgbmFtZSwgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKKyAgICByZXR1cm4gX21ha2VfZmFpbGVkX3Rlc3QobmFtZSwgSW1wb3J0RXJyb3IobWVzc2FnZSksIHN1aXRlQ2xhc3MsIG1lc3NhZ2UpCiAKIGRlZiBfbWFrZV9mYWlsZWRfbG9hZF90ZXN0cyhuYW1lLCBleGNlcHRpb24sIHN1aXRlQ2xhc3MpOgotICAgIHJldHVybiBfbWFrZV9mYWlsZWRfdGVzdChuYW1lLCBleGNlcHRpb24sIHN1aXRlQ2xhc3MpCisgICAgbWVzc2FnZSA9ICdGYWlsZWQgdG8gY2FsbCBsb2FkX3Rlc3RzOlxuJXMnICUgKHRyYWNlYmFjay5mb3JtYXRfZXhjKCksKQorICAgIHJldHVybiBfbWFrZV9mYWlsZWRfdGVzdCgKKyAgICAgICAgbmFtZSwgZXhjZXB0aW9uLCBzdWl0ZUNsYXNzLCBtZXNzYWdlKQogCi1kZWYgX21ha2VfZmFpbGVkX3Rlc3QobWV0aG9kbmFtZSwgZXhjZXB0aW9uLCBzdWl0ZUNsYXNzKToKK2RlZiBfbWFrZV9mYWlsZWRfdGVzdChtZXRob2RuYW1lLCBleGNlcHRpb24sIHN1aXRlQ2xhc3MsIG1lc3NhZ2UpOgogICAgIHRlc3QgPSBfRmFpbGVkVGVzdChtZXRob2RuYW1lLCBleGNlcHRpb24pCi0gICAgcmV0dXJuIHN1aXRlQ2xhc3MoKHRlc3QsKSkKKyAgICByZXR1cm4gc3VpdGVDbGFzcygodGVzdCwpKSwgbWVzc2FnZQogCiBkZWYgX21ha2Vfc2tpcHBlZF90ZXN0KG1ldGhvZG5hbWUsIGV4Y2VwdGlvbiwgc3VpdGVDbGFzcyk6CiAgICAgQGNhc2Uuc2tpcChzdHIoZXhjZXB0aW9uKSkKQEAgLTY5LDYgKzczLDEzIEBACiAgICAgc3VpdGVDbGFzcyA9IHN1aXRlLlRlc3RTdWl0ZQogICAgIF90b3BfbGV2ZWxfZGlyID0gTm9uZQogCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzdXBlcihUZXN0TG9hZGVyLCBzZWxmKS5fX2luaXRfXygpCisgICAgICAgIHNlbGYuZXJyb3JzID0gW10KKyAgICAgICAgIyBUcmFja3MgcGFja2FnZXMgd2hpY2ggd2UgaGF2ZSBjYWxsZWQgaW50byB2aWEgbG9hZF90ZXN0cywgdG8KKyAgICAgICAgIyBhdm9pZCBpbmZpbml0ZSByZS1lbnRyYW5jeS4KKyAgICAgICAgc2VsZi5fbG9hZGluZ19wYWNrYWdlcyA9IHNldCgpCisKICAgICBkZWYgbG9hZFRlc3RzRnJvbVRlc3RDYXNlKHNlbGYsIHRlc3RDYXNlQ2xhc3MpOgogICAgICAgICAiIiJSZXR1cm4gYSBzdWl0ZSBvZiBhbGwgdGVzdHMgY2FzZXMgY29udGFpbmVkIGluIHRlc3RDYXNlQ2xhc3MiIiIKICAgICAgICAgaWYgaXNzdWJjbGFzcyh0ZXN0Q2FzZUNsYXNzLCBzdWl0ZS5UZXN0U3VpdGUpOgpAQCAtODEsOCArOTIsMzAgQEAKICAgICAgICAgbG9hZGVkX3N1aXRlID0gc2VsZi5zdWl0ZUNsYXNzKG1hcCh0ZXN0Q2FzZUNsYXNzLCB0ZXN0Q2FzZU5hbWVzKSkKICAgICAgICAgcmV0dXJuIGxvYWRlZF9zdWl0ZQogCi0gICAgZGVmIGxvYWRUZXN0c0Zyb21Nb2R1bGUoc2VsZiwgbW9kdWxlLCB1c2VfbG9hZF90ZXN0cz1UcnVlKToKKyAgICAjIFhYWCBBZnRlciBQeXRob24gMy41LCByZW1vdmUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBoYWNrcyBmb3IKKyAgICAjIHVzZV9sb2FkX3Rlc3RzIGRlcHJlY2F0aW9uIHZpYSAqYXJncyBhbmQgKiprd3MuICBTZWUgaXNzdWUgMTY2NjIuCisgICAgZGVmIGxvYWRUZXN0c0Zyb21Nb2R1bGUoc2VsZiwgbW9kdWxlLCAqYXJncywgcGF0dGVybj1Ob25lLCAqKmt3cyk6CiAgICAgICAgICIiIlJldHVybiBhIHN1aXRlIG9mIGFsbCB0ZXN0cyBjYXNlcyBjb250YWluZWQgaW4gdGhlIGdpdmVuIG1vZHVsZSIiIgorICAgICAgICAjIFRoaXMgbWV0aG9kIHVzZWQgdG8gdGFrZSBhbiB1bmRvY3VtZW50ZWQgYW5kIHVub2ZmaWNpYWwKKyAgICAgICAgIyB1c2VfbG9hZF90ZXN0cyBhcmd1bWVudC4gIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB3ZSBzdGlsbAorICAgICAgICAjIGFjY2VwdCB0aGUgYXJndW1lbnQgKHdoaWNoIGNhbiBhbHNvIGJlIHRoZSBmaXJzdCBwb3NpdGlvbikgYnV0IHdlCisgICAgICAgICMgaWdub3JlIGl0IGFuZCBpc3N1ZSBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgaWYgaXQncyBwcmVzZW50LgorICAgICAgICBpZiBsZW4oYXJncykgPiAwIG9yICd1c2VfbG9hZF90ZXN0cycgaW4ga3dzOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybigndXNlX2xvYWRfdGVzdHMgaXMgZGVwcmVjYXRlZCBhbmQgaWdub3JlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIGt3cy5wb3AoJ3VzZV9sb2FkX3Rlc3RzJywgTm9uZSkKKyAgICAgICAgaWYgbGVuKGFyZ3MpID4gMToKKyAgICAgICAgICAgICMgQ29tcGxhaW4gYWJvdXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMsIGJ1dCBkb24ndCBmb3JnZXQgdGhlCisgICAgICAgICAgICAjIHJlcXVpcmVkIGBtb2R1bGVgIGFyZ3VtZW50LgorICAgICAgICAgICAgY29tcGxhaW50ID0gbGVuKGFyZ3MpICsgMQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdsb2FkVGVzdHNGcm9tTW9kdWxlKCkgdGFrZXMgMSBwb3NpdGlvbmFsIGFyZ3VtZW50IGJ1dCB7fSB3ZXJlIGdpdmVuJy5mb3JtYXQoY29tcGxhaW50KSkKKyAgICAgICAgaWYgbGVuKGt3cykgIT0gMDoKKyAgICAgICAgICAgICMgU2luY2UgdGhlIGtleXdvcmQgYXJndW1lbnRzIGFyZSB1bnNvcnRlZCAoc2VlIFBFUCA0NjgpLCBqdXN0CisgICAgICAgICAgICAjIHBpY2sgdGhlIGFscGhhYmV0aWNhbGx5IHNvcnRlZCBmaXJzdCBhcmd1bWVudCB0byBjb21wbGFpbiBhYm91dCwKKyAgICAgICAgICAgICMgaWYgbXVsdGlwbGUgd2VyZSBnaXZlbi4gIEF0IGxlYXN0IHRoZSBlcnJvciBtZXNzYWdlIHdpbGwgYmUKKyAgICAgICAgICAgICMgcHJlZGljdGFibGUuCisgICAgICAgICAgICBjb21wbGFpbnQgPSBzb3J0ZWQoa3dzKVswXQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJsb2FkVGVzdHNGcm9tTW9kdWxlKCkgZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCAne30nIi5mb3JtYXQoY29tcGxhaW50KSkKICAgICAgICAgdGVzdHMgPSBbXQogICAgICAgICBmb3IgbmFtZSBpbiBkaXIobW9kdWxlKToKICAgICAgICAgICAgIG9iaiA9IGdldGF0dHIobW9kdWxlLCBuYW1lKQpAQCAtOTEsMTIgKzEyNCwxNCBAQAogCiAgICAgICAgIGxvYWRfdGVzdHMgPSBnZXRhdHRyKG1vZHVsZSwgJ2xvYWRfdGVzdHMnLCBOb25lKQogICAgICAgICB0ZXN0cyA9IHNlbGYuc3VpdGVDbGFzcyh0ZXN0cykKLSAgICAgICAgaWYgdXNlX2xvYWRfdGVzdHMgYW5kIGxvYWRfdGVzdHMgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIGxvYWRfdGVzdHMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRfdGVzdHMoc2VsZiwgdGVzdHMsIE5vbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRfdGVzdHMoc2VsZiwgdGVzdHMsIHBhdHRlcm4pCiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9tYWtlX2ZhaWxlZF9sb2FkX3Rlc3RzKG1vZHVsZS5fX25hbWVfXywgZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdWl0ZUNsYXNzKQorICAgICAgICAgICAgICAgIGVycm9yX2Nhc2UsIGVycm9yX21lc3NhZ2UgPSBfbWFrZV9mYWlsZWRfbG9hZF90ZXN0cygKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlLl9fbmFtZV9fLCBlLCBzZWxmLnN1aXRlQ2xhc3MpCisgICAgICAgICAgICAgICAgc2VsZi5lcnJvcnMuYXBwZW5kKGVycm9yX21lc3NhZ2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yX2Nhc2UKICAgICAgICAgcmV0dXJuIHRlc3RzCiAKICAgICBkZWYgbG9hZFRlc3RzRnJvbU5hbWUoc2VsZiwgbmFtZSwgbW9kdWxlPU5vbmUpOgpAQCAtMTA5LDIwICsxNDQsNDcgQEAKICAgICAgICAgVGhlIG1ldGhvZCBvcHRpb25hbGx5IHJlc29sdmVzIHRoZSBuYW1lcyByZWxhdGl2ZSB0byBhIGdpdmVuIG1vZHVsZS4KICAgICAgICAgIiIiCiAgICAgICAgIHBhcnRzID0gbmFtZS5zcGxpdCgnLicpCisgICAgICAgIGVycm9yX2Nhc2UsIGVycm9yX21lc3NhZ2UgPSBOb25lLCBOb25lCiAgICAgICAgIGlmIG1vZHVsZSBpcyBOb25lOgogICAgICAgICAgICAgcGFydHNfY29weSA9IHBhcnRzWzpdCiAgICAgICAgICAgICB3aGlsZSBwYXJ0c19jb3B5OgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgbW9kdWxlID0gX19pbXBvcnRfXygnLicuam9pbihwYXJ0c19jb3B5KSkKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlX25hbWUgPSAnLicuam9pbihwYXJ0c19jb3B5KQorICAgICAgICAgICAgICAgICAgICBtb2R1bGUgPSBfX2ltcG9ydF9fKG1vZHVsZV9uYW1lKQogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgZGVsIHBhcnRzX2NvcHlbLTFdCisgICAgICAgICAgICAgICAgICAgIG5leHRfYXR0cmlidXRlID0gcGFydHNfY29weS5wb3AoKQorICAgICAgICAgICAgICAgICAgICAjIExhc3QgZXJyb3Igc28gd2UgY2FuIGdpdmUgaXQgdG8gdGhlIHVzZXIgaWYgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICBlcnJvcl9jYXNlLCBlcnJvcl9tZXNzYWdlID0gX21ha2VfZmFpbGVkX2ltcG9ydF90ZXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9hdHRyaWJ1dGUsIHNlbGYuc3VpdGVDbGFzcykKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHBhcnRzX2NvcHk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgICAgICAgICAgIyBFdmVuIHRoZSB0b3AgbGV2ZWwgaW1wb3J0IGZhaWxlZDogcmVwb3J0IHRoYXQgZXJyb3IuCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9ycy5hcHBlbmQoZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcl9jYXNlCiAgICAgICAgICAgICBwYXJ0cyA9IHBhcnRzWzE6XQogICAgICAgICBvYmogPSBtb2R1bGUKICAgICAgICAgZm9yIHBhcnQgaW4gcGFydHM6Ci0gICAgICAgICAgICBwYXJlbnQsIG9iaiA9IG9iaiwgZ2V0YXR0cihvYmosIHBhcnQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcGFyZW50LCBvYmogPSBvYmosIGdldGF0dHIob2JqLCBwYXJ0KQorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgIyBXZSBjYW4ndCB0cmF2ZXJzZSBzb21lIHBhcnQgb2YgdGhlIG5hbWUuCisgICAgICAgICAgICAgICAgaWYgKGdldGF0dHIob2JqLCAnX19wYXRoX18nLCBOb25lKSBpcyBub3QgTm9uZQorICAgICAgICAgICAgICAgICAgICBhbmQgZXJyb3JfY2FzZSBpcyBub3QgTm9uZSk6CisgICAgICAgICAgICAgICAgICAgICMgVGhpcyBpcyBhIHBhY2thZ2UgKG5vIF9fcGF0aF9fIHBlciBpbXBvcnRsaWIgZG9jcyksIGFuZCB3ZQorICAgICAgICAgICAgICAgICAgICAjIGVuY291bnRlcmVkIGFuIGVycm9yIGltcG9ydGluZyBzb21ldGhpbmcuIFdlIGNhbm5vdCB0ZWxsCisgICAgICAgICAgICAgICAgICAgICMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwYWNrYWdlLldyb25nTmFtZVRlc3RDbGFzcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgIyBwYWNrYWdlLndyb25nX21vZHVsZV9uYW1lIHNvIHdlIGp1c3QgcmVwb3J0IHRoZQorICAgICAgICAgICAgICAgICAgICAjIEltcG9ydEVycm9yIC0gaXQgaXMgbW9yZSBpbmZvcm1hdGl2ZS4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcnMuYXBwZW5kKGVycm9yX21lc3NhZ2UpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcl9jYXNlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBPdGhlcndpc2UsIHdlIHNpZ25hbCB0aGF0IGFuIEF0dHJpYnV0ZUVycm9yIGhhcyBvY2N1cnJlZC4KKyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY2FzZSwgZXJyb3JfbWVzc2FnZSA9IF9tYWtlX2ZhaWxlZF90ZXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgcGFydCwgZSwgc2VsZi5zdWl0ZUNsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBhY2Nlc3MgYXR0cmlidXRlOlxuJXMnICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlYmFjay5mb3JtYXRfZXhjKCksKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcnMuYXBwZW5kKGVycm9yX21lc3NhZ2UpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcl9jYXNlCiAKICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGVzLk1vZHVsZVR5cGUpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYubG9hZFRlc3RzRnJvbU1vZHVsZShvYmopCkBAIC0xODEsOSArMjQzLDEzIEBACiAKICAgICAgICAgSWYgYSB0ZXN0IHBhY2thZ2UgbmFtZSAoZGlyZWN0b3J5IHdpdGggJ19faW5pdF9fLnB5JykgbWF0Y2hlcyB0aGUKICAgICAgICAgcGF0dGVybiB0aGVuIHRoZSBwYWNrYWdlIHdpbGwgYmUgY2hlY2tlZCBmb3IgYSAnbG9hZF90ZXN0cycgZnVuY3Rpb24uIElmCi0gICAgICAgIHRoaXMgZXhpc3RzIHRoZW4gaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuLgorICAgICAgICB0aGlzIGV4aXN0cyB0aGVuIGl0IHdpbGwgYmUgY2FsbGVkIHdpdGggKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pIHVubGVzcworICAgICAgICB0aGUgcGFja2FnZSBoYXMgYWxyZWFkeSBoYWQgbG9hZF90ZXN0cyBjYWxsZWQgZnJvbSB0aGUgc2FtZSBkaXNjb3ZlcnkKKyAgICAgICAgaW52b2NhdGlvbiwgaW4gd2hpY2ggY2FzZSB0aGUgcGFja2FnZSBtb2R1bGUgb2JqZWN0IGlzIG5vdCBzY2FubmVkIGZvcgorICAgICAgICB0ZXN0cyAtIHRoaXMgZW5zdXJlcyB0aGF0IHdoZW4gYSBwYWNrYWdlIHVzZXMgZGlzY292ZXIgdG8gZnVydGhlcgorICAgICAgICBkaXNjb3ZlciBjaGlsZCB0ZXN0cyB0aGF0IGluZmluaXRlIHJlY3Vyc2lvbiBkb2VzIG5vdCBoYXBwZW4uCiAKLSAgICAgICAgSWYgbG9hZF90ZXN0cyBleGlzdHMgdGhlbiBkaXNjb3ZlcnkgZG9lcyAgKm5vdCogcmVjdXJzZSBpbnRvIHRoZSBwYWNrYWdlLAorICAgICAgICBJZiBsb2FkX3Rlc3RzIGV4aXN0cyB0aGVuIGRpc2NvdmVyeSBkb2VzICpub3QqIHJlY3Vyc2UgaW50byB0aGUgcGFja2FnZSwKICAgICAgICAgbG9hZF90ZXN0cyBpcyByZXNwb25zaWJsZSBmb3IgbG9hZGluZyBhbGwgdGVzdHMgaW4gdGhlIHBhY2thZ2UuCiAKICAgICAgICAgVGhlIHBhdHRlcm4gaXMgZGVsaWJlcmF0ZWx5IG5vdCBzdG9yZWQgYXMgYSBsb2FkZXIgYXR0cmlidXRlIHNvIHRoYXQKQEAgLTI4OCw2ICszNTQsOCBAQAogICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShmdWxsX3BhdGgpCiAKICAgICBkZWYgX2dldF9uYW1lX2Zyb21fcGF0aChzZWxmLCBwYXRoKToKKyAgICAgICAgaWYgcGF0aCA9PSBzZWxmLl90b3BfbGV2ZWxfZGlyOgorICAgICAgICAgICAgcmV0dXJuICcuJwogICAgICAgICBwYXRoID0gX2p5dGhvbl9hd2FyZV9zcGxpdGV4dChvcy5wYXRoLm5vcm1wYXRoKHBhdGgpKQogCiAgICAgICAgIF9yZWxwYXRoID0gb3MucGF0aC5yZWxwYXRoKHBhdGgsIHNlbGYuX3RvcF9sZXZlbF9kaXIpCkBAIC0zMDcsNjMgKzM3NSwxMTEgQEAKIAogICAgIGRlZiBfZmluZF90ZXN0cyhzZWxmLCBzdGFydF9kaXIsIHBhdHRlcm4sIG5hbWVzcGFjZT1GYWxzZSk6CiAgICAgICAgICIiIlVzZWQgYnkgZGlzY292ZXJ5LiBZaWVsZHMgdGVzdCBzdWl0ZXMgaXQgbG9hZHMuIiIiCisgICAgICAgICMgSGFuZGxlIHRoZSBfX2luaXRfXyBpbiB0aGlzIHBhY2thZ2UKKyAgICAgICAgbmFtZSA9IHNlbGYuX2dldF9uYW1lX2Zyb21fcGF0aChzdGFydF9kaXIpCisgICAgICAgICMgbmFtZSBpcyAnLicgd2hlbiBzdGFydF9kaXIgPT0gdG9wX2xldmVsX2RpciAoYW5kIHRvcF9sZXZlbF9kaXIgaXMgYnkKKyAgICAgICAgIyBkZWZpbml0aW9uIG5vdCBhIHBhY2thZ2UpLgorICAgICAgICBpZiBuYW1lICE9ICcuJyBhbmQgbmFtZSBub3QgaW4gc2VsZi5fbG9hZGluZ19wYWNrYWdlczoKKyAgICAgICAgICAgICMgbmFtZSBpcyBpbiBzZWxmLl9sb2FkaW5nX3BhY2thZ2VzIHdoaWxlIHdlIGhhdmUgY2FsbGVkIGludG8KKyAgICAgICAgICAgICMgbG9hZFRlc3RzRnJvbU1vZHVsZSB3aXRoIG5hbWUuCisgICAgICAgICAgICB0ZXN0cywgc2hvdWxkX3JlY3Vyc2UgPSBzZWxmLl9maW5kX3Rlc3RfcGF0aCgKKyAgICAgICAgICAgICAgICBzdGFydF9kaXIsIHBhdHRlcm4sIG5hbWVzcGFjZSkKKyAgICAgICAgICAgIGlmIHRlc3RzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHlpZWxkIHRlc3RzCisgICAgICAgICAgICBpZiBub3Qgc2hvdWxkX3JlY3Vyc2U6CisgICAgICAgICAgICAgICAgIyBFaXRoZXIgYW4gZXJyb3Igb2NjdXJlZCwgb3IgbG9hZF90ZXN0cyB3YXMgdXNlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAjIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICMgSGFuZGxlIHRoZSBjb250ZW50cy4KICAgICAgICAgcGF0aHMgPSBzb3J0ZWQob3MubGlzdGRpcihzdGFydF9kaXIpKQotCiAgICAgICAgIGZvciBwYXRoIGluIHBhdGhzOgogICAgICAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5qb2luKHN0YXJ0X2RpciwgcGF0aCkKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZ1bGxfcGF0aCk6Ci0gICAgICAgICAgICAgICAgaWYgbm90IFZBTElEX01PRFVMRV9OQU1FLm1hdGNoKHBhdGgpOgotICAgICAgICAgICAgICAgICAgICAjIHZhbGlkIFB5dGhvbiBpZGVudGlmaWVycyBvbmx5Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX21hdGNoX3BhdGgocGF0aCwgZnVsbF9wYXRoLCBwYXR0ZXJuKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAjIGlmIHRoZSB0ZXN0IGZpbGUgbWF0Y2hlcywgbG9hZCBpdAorICAgICAgICAgICAgdGVzdHMsIHNob3VsZF9yZWN1cnNlID0gc2VsZi5fZmluZF90ZXN0X3BhdGgoCisgICAgICAgICAgICAgICAgZnVsbF9wYXRoLCBwYXR0ZXJuLCBuYW1lc3BhY2UpCisgICAgICAgICAgICBpZiB0ZXN0cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB5aWVsZCB0ZXN0cworICAgICAgICAgICAgaWYgc2hvdWxkX3JlY3Vyc2U6CisgICAgICAgICAgICAgICAgIyB3ZSBmb3VuZCBhIHBhY2thZ2UgdGhhdCBkaWRuJ3QgdXNlIGxvYWRfdGVzdHMuCiAgICAgICAgICAgICAgICAgbmFtZSA9IHNlbGYuX2dldF9uYW1lX2Zyb21fcGF0aChmdWxsX3BhdGgpCisgICAgICAgICAgICAgICAgc2VsZi5fbG9hZGluZ19wYWNrYWdlcy5hZGQobmFtZSkKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuX2dldF9tb2R1bGVfZnJvbV9uYW1lKG5hbWUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IGNhc2UuU2tpcFRlc3QgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgX21ha2Vfc2tpcHBlZF90ZXN0KG5hbWUsIGUsIHNlbGYuc3VpdGVDbGFzcykKLSAgICAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkIF9tYWtlX2ZhaWxlZF9pbXBvcnRfdGVzdChuYW1lLCBzZWxmLnN1aXRlQ2xhc3MpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbW9kX2ZpbGUgPSBvcy5wYXRoLmFic3BhdGgoZ2V0YXR0cihtb2R1bGUsICdfX2ZpbGVfXycsIGZ1bGxfcGF0aCkpCi0gICAgICAgICAgICAgICAgICAgIHJlYWxwYXRoID0gX2p5dGhvbl9hd2FyZV9zcGxpdGV4dChvcy5wYXRoLnJlYWxwYXRoKG1vZF9maWxlKSkKLSAgICAgICAgICAgICAgICAgICAgZnVsbHBhdGhfbm9leHQgPSBfanl0aG9uX2F3YXJlX3NwbGl0ZXh0KG9zLnBhdGgucmVhbHBhdGgoZnVsbF9wYXRoKSkKLSAgICAgICAgICAgICAgICAgICAgaWYgcmVhbHBhdGgubG93ZXIoKSAhPSBmdWxscGF0aF9ub2V4dC5sb3dlcigpOgotICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX2RpciA9IG9zLnBhdGguZGlybmFtZShyZWFscGF0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZF9uYW1lID0gX2p5dGhvbl9hd2FyZV9zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGZ1bGxfcGF0aCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoZnVsbF9wYXRoKQotICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gKCIlciBtb2R1bGUgaW5jb3JyZWN0bHkgaW1wb3J0ZWQgZnJvbSAlci4gRXhwZWN0ZWQgJXIuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSXMgdGhpcyBtb2R1bGUgZ2xvYmFsbHkgaW5zdGFsbGVkPyIpCi0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cgJSAobW9kX25hbWUsIG1vZHVsZV9kaXIsIGV4cGVjdGVkX2RpcikpCi0gICAgICAgICAgICAgICAgICAgIHlpZWxkIHNlbGYubG9hZFRlc3RzRnJvbU1vZHVsZShtb2R1bGUpCi0gICAgICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoZnVsbF9wYXRoKToKLSAgICAgICAgICAgICAgICBpZiAobm90IG5hbWVzcGFjZSBhbmQKLSAgICAgICAgICAgICAgICAgICAgbm90IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihmdWxsX3BhdGgsICdfX2luaXRfXy5weScpKSk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gc2VsZi5fZmluZF90ZXN0cyhmdWxsX3BhdGgsIHBhdHRlcm4sIG5hbWVzcGFjZSkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2FkaW5nX3BhY2thZ2VzLmRpc2NhcmQobmFtZSkKIAotICAgICAgICAgICAgICAgIGxvYWRfdGVzdHMgPSBOb25lCi0gICAgICAgICAgICAgICAgdGVzdHMgPSBOb25lCi0gICAgICAgICAgICAgICAgaWYgZm5tYXRjaChwYXRoLCBwYXR0ZXJuKToKLSAgICAgICAgICAgICAgICAgICAgIyBvbmx5IGNoZWNrIGxvYWRfdGVzdHMgaWYgdGhlIHBhY2thZ2UgZGlyZWN0b3J5IGl0c2VsZiBtYXRjaGVzIHRoZSBmaWx0ZXIKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHNlbGYuX2dldF9uYW1lX2Zyb21fcGF0aChmdWxsX3BhdGgpCi0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgPSBzZWxmLl9nZXRfbW9kdWxlX2Zyb21fbmFtZShuYW1lKQotICAgICAgICAgICAgICAgICAgICBsb2FkX3Rlc3RzID0gZ2V0YXR0cihwYWNrYWdlLCAnbG9hZF90ZXN0cycsIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RzID0gc2VsZi5sb2FkVGVzdHNGcm9tTW9kdWxlKHBhY2thZ2UsIHVzZV9sb2FkX3Rlc3RzPUZhbHNlKQorICAgIGRlZiBfZmluZF90ZXN0X3BhdGgoc2VsZiwgZnVsbF9wYXRoLCBwYXR0ZXJuLCBuYW1lc3BhY2U9RmFsc2UpOgorICAgICAgICAiIiJVc2VkIGJ5IGRpc2NvdmVyeS4KIAotICAgICAgICAgICAgICAgIGlmIGxvYWRfdGVzdHMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgaWYgdGVzdHMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIHRlc3RzIGxvYWRlZCBmcm9tIHBhY2thZ2UgZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgdGVzdHMKLSAgICAgICAgICAgICAgICAgICAgIyByZWN1cnNlIGludG8gdGhlIHBhY2thZ2UKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBzZWxmLl9maW5kX3Rlc3RzKGZ1bGxfcGF0aCwgcGF0dGVybiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZT1uYW1lc3BhY2UpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgbG9hZF90ZXN0cyhzZWxmLCB0ZXN0cywgcGF0dGVybikKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgX21ha2VfZmFpbGVkX2xvYWRfdGVzdHMocGFja2FnZS5fX25hbWVfXywgZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3VpdGVDbGFzcykKKyAgICAgICAgTG9hZHMgdGVzdHMgZnJvbSBhIHNpbmdsZSBmaWxlLCBvciBhIGRpcmVjdG9yaWVzJyBfX2luaXRfXy5weSB3aGVuCisgICAgICAgIHBhc3NlZCB0aGUgZGlyZWN0b3J5LgorCisgICAgICAgIFJldHVybnMgYSB0dXBsZSAoTm9uZV9vcl90ZXN0c19mcm9tX2ZpbGUsIHNob3VsZF9yZWN1cnNlKS4KKyAgICAgICAgIiIiCisgICAgICAgIGJhc2VuYW1lID0gb3MucGF0aC5iYXNlbmFtZShmdWxsX3BhdGgpCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZ1bGxfcGF0aCk6CisgICAgICAgICAgICBpZiBub3QgVkFMSURfTU9EVUxFX05BTUUubWF0Y2goYmFzZW5hbWUpOgorICAgICAgICAgICAgICAgICMgdmFsaWQgUHl0aG9uIGlkZW50aWZpZXJzIG9ubHkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgRmFsc2UKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9tYXRjaF9wYXRoKGJhc2VuYW1lLCBmdWxsX3BhdGgsIHBhdHRlcm4pOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBGYWxzZQorICAgICAgICAgICAgIyBpZiB0aGUgdGVzdCBmaWxlIG1hdGNoZXMsIGxvYWQgaXQKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9nZXRfbmFtZV9mcm9tX3BhdGgoZnVsbF9wYXRoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuX2dldF9tb2R1bGVfZnJvbV9uYW1lKG5hbWUpCisgICAgICAgICAgICBleGNlcHQgY2FzZS5Ta2lwVGVzdCBhcyBlOgorICAgICAgICAgICAgICAgIHJldHVybiBfbWFrZV9za2lwcGVkX3Rlc3QobmFtZSwgZSwgc2VsZi5zdWl0ZUNsYXNzKSwgRmFsc2UKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBlcnJvcl9jYXNlLCBlcnJvcl9tZXNzYWdlID0gXAorICAgICAgICAgICAgICAgICAgICBfbWFrZV9mYWlsZWRfaW1wb3J0X3Rlc3QobmFtZSwgc2VsZi5zdWl0ZUNsYXNzKQorICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JzLmFwcGVuZChlcnJvcl9tZXNzYWdlKQorICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcl9jYXNlLCBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtb2RfZmlsZSA9IG9zLnBhdGguYWJzcGF0aCgKKyAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihtb2R1bGUsICdfX2ZpbGVfXycsIGZ1bGxfcGF0aCkpCisgICAgICAgICAgICAgICAgcmVhbHBhdGggPSBfanl0aG9uX2F3YXJlX3NwbGl0ZXh0KAorICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLnJlYWxwYXRoKG1vZF9maWxlKSkKKyAgICAgICAgICAgICAgICBmdWxscGF0aF9ub2V4dCA9IF9qeXRob25fYXdhcmVfc3BsaXRleHQoCisgICAgICAgICAgICAgICAgICAgIG9zLnBhdGgucmVhbHBhdGgoZnVsbF9wYXRoKSkKKyAgICAgICAgICAgICAgICBpZiByZWFscGF0aC5sb3dlcigpICE9IGZ1bGxwYXRoX25vZXh0Lmxvd2VyKCk6CisgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9kaXIgPSBvcy5wYXRoLmRpcm5hbWUocmVhbHBhdGgpCisgICAgICAgICAgICAgICAgICAgIG1vZF9uYW1lID0gX2p5dGhvbl9hd2FyZV9zcGxpdGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUoZnVsbF9wYXRoKSkKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZGlyID0gb3MucGF0aC5kaXJuYW1lKGZ1bGxfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gKCIlciBtb2R1bGUgaW5jb3JyZWN0bHkgaW1wb3J0ZWQgZnJvbSAlci4gRXhwZWN0ZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVyLiBJcyB0aGlzIG1vZHVsZSBnbG9iYWxseSBpbnN0YWxsZWQ/IikKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgJSAobW9kX25hbWUsIG1vZHVsZV9kaXIsIGV4cGVjdGVkX2RpcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubG9hZFRlc3RzRnJvbU1vZHVsZShtb2R1bGUsIHBhdHRlcm49cGF0dGVybiksIEZhbHNlCisgICAgICAgIGVsaWYgb3MucGF0aC5pc2RpcihmdWxsX3BhdGgpOgorICAgICAgICAgICAgaWYgKG5vdCBuYW1lc3BhY2UgYW5kCisgICAgICAgICAgICAgICAgbm90IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihmdWxsX3BhdGgsICdfX2luaXRfXy5weScpKSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIEZhbHNlCisKKyAgICAgICAgICAgIGxvYWRfdGVzdHMgPSBOb25lCisgICAgICAgICAgICB0ZXN0cyA9IE5vbmUKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9nZXRfbmFtZV9mcm9tX3BhdGgoZnVsbF9wYXRoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHBhY2thZ2UgPSBzZWxmLl9nZXRfbW9kdWxlX2Zyb21fbmFtZShuYW1lKQorICAgICAgICAgICAgZXhjZXB0IGNhc2UuU2tpcFRlc3QgYXMgZToKKyAgICAgICAgICAgICAgICByZXR1cm4gX21ha2Vfc2tpcHBlZF90ZXN0KG5hbWUsIGUsIHNlbGYuc3VpdGVDbGFzcyksIEZhbHNlCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgZXJyb3JfY2FzZSwgZXJyb3JfbWVzc2FnZSA9IFwKKyAgICAgICAgICAgICAgICAgICAgX21ha2VfZmFpbGVkX2ltcG9ydF90ZXN0KG5hbWUsIHNlbGYuc3VpdGVDbGFzcykKKyAgICAgICAgICAgICAgICBzZWxmLmVycm9ycy5hcHBlbmQoZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JfY2FzZSwgRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbG9hZF90ZXN0cyA9IGdldGF0dHIocGFja2FnZSwgJ2xvYWRfdGVzdHMnLCBOb25lKQorICAgICAgICAgICAgICAgICMgTWFyayB0aGlzIHBhY2thZ2UgYXMgYmVpbmcgaW4gbG9hZF90ZXN0cyAocG9zc2libHkgOykpCisgICAgICAgICAgICAgICAgc2VsZi5fbG9hZGluZ19wYWNrYWdlcy5hZGQobmFtZSkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHRlc3RzID0gc2VsZi5sb2FkVGVzdHNGcm9tTW9kdWxlKHBhY2thZ2UsIHBhdHRlcm49cGF0dGVybikKKyAgICAgICAgICAgICAgICAgICAgaWYgbG9hZF90ZXN0cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgbG9hZFRlc3RzRnJvbU1vZHVsZShwYWNrYWdlKSBoYXMgbG9hZGVkIHRlc3RzIGZvciB1cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0cywgRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlc3RzLCBUcnVlCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9hZGluZ19wYWNrYWdlcy5kaXNjYXJkKG5hbWUpCisKIAogZGVmYXVsdFRlc3RMb2FkZXIgPSBUZXN0TG9hZGVyKCkKIApkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L21haW4ucHkgYi9MaWIvdW5pdHRlc3QvbWFpbi5weQppbmRleCBlNzUwY2E1Li4wOWZlZmUxIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvbWFpbi5weQorKysgYi9MaWIvdW5pdHRlc3QvbWFpbi5weQpAQCAtNTgsNyArNTgsNyBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2R1bGU9J19fbWFpbl9fJywgZGVmYXVsdFRlc3Q9Tm9uZSwgYXJndj1Ob25lLAogICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyPU5vbmUsIHRlc3RMb2FkZXI9bG9hZGVyLmRlZmF1bHRUZXN0TG9hZGVyLAogICAgICAgICAgICAgICAgICAgICBleGl0PVRydWUsIHZlcmJvc2l0eT0xLCBmYWlsZmFzdD1Ob25lLCBjYXRjaGJyZWFrPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlcj1Ob25lLCB3YXJuaW5ncz1Ob25lKToKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyPU5vbmUsIHdhcm5pbmdzPU5vbmUsICosIHRiX2xvY2Fscz1GYWxzZSk6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UobW9kdWxlLCBzdHIpOgogICAgICAgICAgICAgc2VsZi5tb2R1bGUgPSBfX2ltcG9ydF9fKG1vZHVsZSkKICAgICAgICAgICAgIGZvciBwYXJ0IGluIG1vZHVsZS5zcGxpdCgnLicpWzE6XToKQEAgLTczLDggKzczLDkgQEAKICAgICAgICAgc2VsZi5jYXRjaGJyZWFrID0gY2F0Y2hicmVhawogICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IHZlcmJvc2l0eQogICAgICAgICBzZWxmLmJ1ZmZlciA9IGJ1ZmZlcgorICAgICAgICBzZWxmLnRiX2xvY2FscyA9IHRiX2xvY2FscwogICAgICAgICBpZiB3YXJuaW5ncyBpcyBOb25lIGFuZCBub3Qgc3lzLndhcm5vcHRpb25zOgotICAgICAgICAgICAgIyBldmVuIGlmIERyZXByZWNhdGlvbldhcm5pbmdzIGFyZSBpZ25vcmVkIGJ5IGRlZmF1bHQKKyAgICAgICAgICAgICMgZXZlbiBpZiBEZXByZWNhdGlvbldhcm5pbmdzIGFyZSBpZ25vcmVkIGJ5IGRlZmF1bHQKICAgICAgICAgICAgICMgcHJpbnQgdGhlbSBhbnl3YXkgdW5sZXNzIG90aGVyIHdhcm5pbmdzIHNldHRpbmdzIGFyZQogICAgICAgICAgICAgIyBzcGVjaWZpZWQgYnkgdGhlIHdhcm5pbmdzIGFyZyBvciB0aGUgLVcgcHl0aG9uIGZsYWcKICAgICAgICAgICAgIHNlbGYud2FybmluZ3MgPSAnZGVmYXVsdCcKQEAgLTE1OSw3ICsxNjAsOSBAQAogICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcScsICctLXF1aWV0JywgZGVzdD0ndmVyYm9zaXR5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdRdWlldCBvdXRwdXQnKQotCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbG9jYWxzJywgZGVzdD0ndGJfbG9jYWxzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1Nob3cgbG9jYWwgdmFyaWFibGVzIGluIHRyYWNlYmFja3MnKQogICAgICAgICBpZiBzZWxmLmZhaWxmYXN0IGlzIE5vbmU6CiAgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZicsICctLWZhaWxmYXN0JywgZGVzdD0nZmFpbGZhc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLApAQCAtMjMxLDEwICsyMzQsMTggQEAKICAgICAgICAgICAgIHNlbGYudGVzdFJ1bm5lciA9IHJ1bm5lci5UZXh0VGVzdFJ1bm5lcgogICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYudGVzdFJ1bm5lciwgdHlwZSk6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lciA9IHNlbGYudGVzdFJ1bm5lcih2ZXJib3NpdHk9c2VsZi52ZXJib3NpdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZmFzdD1zZWxmLmZhaWxmYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyPXNlbGYuYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3M9c2VsZi53YXJuaW5ncykKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIgPSBzZWxmLnRlc3RSdW5uZXIodmVyYm9zaXR5PXNlbGYudmVyYm9zaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxmYXN0PXNlbGYuZmFpbGZhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyPXNlbGYuYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzPXNlbGYud2FybmluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGJfbG9jYWxzPXNlbGYudGJfbG9jYWxzKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICMgZGlkbid0IGFjY2VwdCB0aGUgdGJfbG9jYWxzIGFyZ3VtZW50CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIgPSBzZWxmLnRlc3RSdW5uZXIodmVyYm9zaXR5PXNlbGYudmVyYm9zaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxmYXN0PXNlbGYuZmFpbGZhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyPXNlbGYuYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzPXNlbGYud2FybmluZ3MpCiAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgICAgICMgZGlkbid0IGFjY2VwdCB0aGUgdmVyYm9zaXR5LCBidWZmZXIgb3IgZmFpbGZhc3QgYXJndW1lbnRzCiAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lciA9IHNlbGYudGVzdFJ1bm5lcigpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvbW9jay5weSBiL0xpYi91bml0dGVzdC9tb2NrLnB5CmluZGV4IDU3M2M3OTkuLjk3NmY2NjMgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9tb2NrLnB5CisrKyBiL0xpYi91bml0dGVzdC9tb2NrLnB5CkBAIC0yNyw5ICsyNywxMyBAQAogaW1wb3J0IGluc3BlY3QKIGltcG9ydCBwcHJpbnQKIGltcG9ydCBzeXMKK2ltcG9ydCBidWlsdGlucworZnJvbSB0eXBlcyBpbXBvcnQgTW9kdWxlVHlwZQogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzLCBwYXJ0aWFsCiAKIAorX2J1aWx0aW5zID0ge25hbWUgZm9yIG5hbWUgaW4gZGlyKGJ1aWx0aW5zKSBpZiBub3QgbmFtZS5zdGFydHN3aXRoKCdfJyl9CisKIEJhc2VFeGNlcHRpb25zID0gKEJhc2VFeGNlcHRpb24sKQogaWYgJ2phdmEnIGluIHN5cy5wbGF0Zm9ybToKICAgICAjIGp5dGhvbgpAQCAtMjcxLDEzICsyNzUsMTEgQEAKICAgICByZXR1cm4gdmFsdWUKIAogCi1fYWxsb3dlZF9uYW1lcyA9IHNldCgKLSAgICBbCi0gICAgICAgICdyZXR1cm5fdmFsdWUnLCAnX21vY2tfcmV0dXJuX3ZhbHVlJywgJ3NpZGVfZWZmZWN0JywKLSAgICAgICAgJ19tb2NrX3NpZGVfZWZmZWN0JywgJ19tb2NrX3BhcmVudCcsICdfbW9ja19uZXdfcGFyZW50JywKLSAgICAgICAgJ19tb2NrX25hbWUnLCAnX21vY2tfbmV3X25hbWUnCi0gICAgXQotKQorX2FsbG93ZWRfbmFtZXMgPSB7CisgICAgJ3JldHVybl92YWx1ZScsICdfbW9ja19yZXR1cm5fdmFsdWUnLCAnc2lkZV9lZmZlY3QnLAorICAgICdfbW9ja19zaWRlX2VmZmVjdCcsICdfbW9ja19wYXJlbnQnLCAnX21vY2tfbmV3X3BhcmVudCcsCisgICAgJ19tb2NrX25hbWUnLCAnX21vY2tfbmV3X25hbWUnCit9CiAKIAogZGVmIF9kZWxlZ2F0aW5nX3Byb3BlcnR5KG5hbWUpOgpAQCAtMzc1LDcgKzM3Nyw3IEBACiAgICAgZGVmIF9faW5pdF9fKAogICAgICAgICAgICAgc2VsZiwgc3BlYz1Ob25lLCB3cmFwcz1Ob25lLCBuYW1lPU5vbmUsIHNwZWNfc2V0PU5vbmUsCiAgICAgICAgICAgICBwYXJlbnQ9Tm9uZSwgX3NwZWNfc3RhdGU9Tm9uZSwgX25ld19uYW1lPScnLCBfbmV3X3BhcmVudD1Ob25lLAotICAgICAgICAgICAgX3NwZWNfYXNfaW5zdGFuY2U9RmFsc2UsIF9lYXRfc2VsZj1Ob25lLCAqKmt3YXJncworICAgICAgICAgICAgX3NwZWNfYXNfaW5zdGFuY2U9RmFsc2UsIF9lYXRfc2VsZj1Ob25lLCB1bnNhZmU9RmFsc2UsICoqa3dhcmdzCiAgICAgICAgICk6CiAgICAgICAgIGlmIF9uZXdfcGFyZW50IGlzIE5vbmU6CiAgICAgICAgICAgICBfbmV3X3BhcmVudCA9IHBhcmVudApAQCAtNDA1LDYgKzQwNyw3IEBACiAgICAgICAgIF9fZGljdF9fWydfbW9ja19tb2NrX2NhbGxzJ10gPSBfQ2FsbExpc3QoKQogCiAgICAgICAgIF9fZGljdF9fWydtZXRob2RfY2FsbHMnXSA9IF9DYWxsTGlzdCgpCisgICAgICAgIF9fZGljdF9fWydfbW9ja191bnNhZmUnXSA9IHVuc2FmZQogCiAgICAgICAgIGlmIGt3YXJnczoKICAgICAgICAgICAgIHNlbGYuY29uZmlndXJlX21vY2soKiprd2FyZ3MpCkBAIC01MDMsNyArNTA2LDggQEAKICAgICAgICAgaWYgZGVsZWdhdGVkIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fbW9ja19zaWRlX2VmZmVjdAogICAgICAgICBzZiA9IGRlbGVnYXRlZC5zaWRlX2VmZmVjdAotICAgICAgICBpZiBzZiBpcyBub3QgTm9uZSBhbmQgbm90IGNhbGxhYmxlKHNmKSBhbmQgbm90IGlzaW5zdGFuY2Uoc2YsIF9Nb2NrSXRlcik6CisgICAgICAgIGlmIChzZiBpcyBub3QgTm9uZSBhbmQgbm90IGNhbGxhYmxlKHNmKQorICAgICAgICAgICAgICAgIGFuZCBub3QgaXNpbnN0YW5jZShzZiwgX01vY2tJdGVyKSBhbmQgbm90IF9pc19leGNlcHRpb24oc2YpKToKICAgICAgICAgICAgIHNmID0gX01vY2tJdGVyKHNmKQogICAgICAgICAgICAgZGVsZWdhdGVkLnNpZGVfZWZmZWN0ID0gc2YKICAgICAgICAgcmV0dXJuIHNmCkBAIC01NjcsMTMgKzU3MSwxNiBAQAogCiAKICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIGlmIG5hbWUgPT0gJ19tb2NrX21ldGhvZHMnOgorICAgICAgICBpZiBuYW1lIGluIHsnX21vY2tfbWV0aG9kcycsICdfbW9ja191bnNhZmUnfToKICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCiAgICAgICAgIGVsaWYgc2VsZi5fbW9ja19tZXRob2RzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gc2VsZi5fbW9ja19tZXRob2RzIG9yIG5hbWUgaW4gX2FsbF9tYWdpY3M6CiAgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIk1vY2sgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJXIiICUgbmFtZSkKICAgICAgICAgZWxpZiBfaXNfbWFnaWMobmFtZSk6CiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihuYW1lKQorICAgICAgICBpZiBub3Qgc2VsZi5fbW9ja191bnNhZmU6CisgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoKCdhc3NlcnQnLCAnYXNzcmV0JykpOgorICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCiAKICAgICAgICAgcmVzdWx0ID0gc2VsZi5fbW9ja19jaGlsZHJlbi5nZXQobmFtZSkKICAgICAgICAgaWYgcmVzdWx0IGlzIF9kZWxldGVkOgpAQCAtNzU2LDYgKzc2MywxNCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIF9jYWxsCiAKKyAgICBkZWYgYXNzZXJ0X25vdF9jYWxsZWQoX21vY2tfc2VsZik6CisgICAgICAgICIiImFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBuZXZlciBjYWxsZWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmID0gX21vY2tfc2VsZgorICAgICAgICBpZiBzZWxmLmNhbGxfY291bnQgIT0gMDoKKyAgICAgICAgICAgIG1zZyA9ICgiRXhwZWN0ZWQgJyVzJyB0byBub3QgaGF2ZSBiZWVuIGNhbGxlZC4gQ2FsbGVkICVzIHRpbWVzLiIgJQorICAgICAgICAgICAgICAgICAgIChzZWxmLl9tb2NrX25hbWUgb3IgJ21vY2snLCBzZWxmLmNhbGxfY291bnQpKQorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IobXNnKQogCiAgICAgZGVmIGFzc2VydF9jYWxsZWRfd2l0aChfbW9ja19zZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAiIiJhc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIHdpdGggdGhlIHNwZWNpZmllZCBhcmd1bWVudHMuCkBAIC0xMTcyLDYgKzExODcsOSBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbG9jYWwgPSBUcnVlCiAKKyAgICAgICAgaWYgbmFtZSBpbiBfYnVpbHRpbnMgYW5kIGlzaW5zdGFuY2UodGFyZ2V0LCBNb2R1bGVUeXBlKToKKyAgICAgICAgICAgIHNlbGYuY3JlYXRlID0gVHJ1ZQorCiAgICAgICAgIGlmIG5vdCBzZWxmLmNyZWF0ZSBhbmQgb3JpZ2luYWwgaXMgREVGQVVMVDoKICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKAogICAgICAgICAgICAgICAgICIlcyBkb2VzIG5vdCBoYXZlIHRoZSBhdHRyaWJ1dGUgJXIiICUgKHRhcmdldCwgbmFtZSkKQEAgLTEzMTQsNyArMTMzMiwxMCBAQAogICAgICAgICAgICAgc2V0YXR0cihzZWxmLnRhcmdldCwgc2VsZi5hdHRyaWJ1dGUsIHNlbGYudGVtcF9vcmlnaW5hbCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGRlbGF0dHIoc2VsZi50YXJnZXQsIHNlbGYuYXR0cmlidXRlKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuY3JlYXRlIGFuZCBub3QgaGFzYXR0cihzZWxmLnRhcmdldCwgc2VsZi5hdHRyaWJ1dGUpOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY3JlYXRlIGFuZCAobm90IGhhc2F0dHIoc2VsZi50YXJnZXQsIHNlbGYuYXR0cmlidXRlKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hdHRyaWJ1dGUgaW4gKCdfX2RvY19fJywgJ19fbW9kdWxlX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX2RlZmF1bHRzX18nLCAnX19hbm5vdGF0aW9uc19fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19rd2RlZmF1bHRzX18nKSk6CiAgICAgICAgICAgICAgICAgIyBuZWVkZWQgZm9yIHByb3h5IG9iamVjdHMgbGlrZSBkamFuZ28gc2V0dGluZ3MKICAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYudGFyZ2V0LCBzZWxmLmF0dHJpYnV0ZSwgc2VsZi50ZW1wX29yaWdpbmFsKQogCkBAIC0xNjU5LDcgKzE2ODAsNyBAQAogKQogCiBudW1lcmljcyA9ICgKLSAgICAiYWRkIHN1YiBtdWwgZGl2IGZsb29yZGl2IG1vZCBsc2hpZnQgcnNoaWZ0IGFuZCB4b3Igb3IgcG93IHRydWVkaXYiCisgICAgImFkZCBzdWIgbXVsIG1hdG11bCBkaXYgZmxvb3JkaXYgbW9kIGxzaGlmdCByc2hpZnQgYW5kIHhvciBvciBwb3cgdHJ1ZWRpdiIKICkKIGlucGxhY2UgPSAnICcuam9pbignaSVzJyAlIG4gZm9yIG4gaW4gbnVtZXJpY3Muc3BsaXQoKSkKIHJpZ2h0ID0gJyAnLmpvaW4oJ3IlcycgJSBuIGZvciBuIGluIG51bWVyaWNzLnNwbGl0KCkpCkBAIC0xNjY4LDExICsxNjg5LDEyIEBACiAjIChhcyB0aGV5IGFyZSBtZXRhY2xhc3MgbWV0aG9kcykKICMgX19kZWxfXyBpcyBub3Qgc3VwcG9ydGVkIGF0IGFsbCBhcyBpdCBjYXVzZXMgcHJvYmxlbXMgaWYgaXQgZXhpc3RzCiAKLV9ub25fZGVmYXVsdHMgPSBzZXQoJ19fJXNfXycgJSBtZXRob2QgZm9yIG1ldGhvZCBpbiBbCi0gICAgJ2dldCcsICdzZXQnLCAnZGVsZXRlJywgJ3JldmVyc2VkJywgJ21pc3NpbmcnLCAncmVkdWNlJywgJ3JlZHVjZV9leCcsCi0gICAgJ2dldGluaXRhcmdzJywgJ2dldG5ld2FyZ3MnLCAnZ2V0c3RhdGUnLCAnc2V0c3RhdGUnLCAnZ2V0Zm9ybWF0JywKLSAgICAnc2V0Zm9ybWF0JywgJ3JlcHInLCAnZGlyJywgJ3N1YmNsYXNzZXMnLCAnZm9ybWF0JywKLV0pCitfbm9uX2RlZmF1bHRzID0geworICAgICdfX2dldF9fJywgJ19fc2V0X18nLCAnX19kZWxldGVfXycsICdfX3JldmVyc2VkX18nLCAnX19taXNzaW5nX18nLAorICAgICdfX3JlZHVjZV9fJywgJ19fcmVkdWNlX2V4X18nLCAnX19nZXRpbml0YXJnc19fJywgJ19fZ2V0bmV3YXJnc19fJywKKyAgICAnX19nZXRzdGF0ZV9fJywgJ19fc2V0c3RhdGVfXycsICdfX2dldGZvcm1hdF9fJywgJ19fc2V0Zm9ybWF0X18nLAorICAgICdfX3JlcHJfXycsICdfX2Rpcl9fJywgJ19fc3ViY2xhc3Nlc19fJywgJ19fZm9ybWF0X18nLAorfQogCiAKIGRlZiBfZ2V0X21ldGhvZChuYW1lLCBmdW5jKToKQEAgLTE2ODMsMTkgKzE3MDUsMTkgQEAKICAgICByZXR1cm4gbWV0aG9kCiAKIAotX21hZ2ljcyA9IHNldCgKK19tYWdpY3MgPSB7CiAgICAgJ19fJXNfXycgJSBtZXRob2QgZm9yIG1ldGhvZCBpbgogICAgICcgJy5qb2luKFttYWdpY19tZXRob2RzLCBudW1lcmljcywgaW5wbGFjZSwgcmlnaHRdKS5zcGxpdCgpCi0pCit9CiAKIF9hbGxfbWFnaWNzID0gX21hZ2ljcyB8IF9ub25fZGVmYXVsdHMKIAotX3Vuc3VwcG9ydGVkX21hZ2ljcyA9IHNldChbCitfdW5zdXBwb3J0ZWRfbWFnaWNzID0gewogICAgICdfX2dldGF0dHJfXycsICdfX3NldGF0dHJfXycsCiAgICAgJ19faW5pdF9fJywgJ19fbmV3X18nLCAnX19wcmVwYXJlX18nCiAgICAgJ19faW5zdGFuY2VjaGVja19fJywgJ19fc3ViY2xhc3NjaGVja19fJywKICAgICAnX19kZWxfXycKLV0pCit9CiAKIF9jYWxjdWxhdGVfcmV0dXJuX3ZhbHVlID0gewogICAgICdfX2hhc2hfXyc6IGxhbWJkYSBzZWxmOiBvYmplY3QuX19oYXNoX18oc2VsZiksCkBAIC0xODg0LDcgKzE5MDYsNyBAQAogICAgIGZvcm1hdHRlZF9hcmdzID0gJycKICAgICBhcmdzX3N0cmluZyA9ICcsICcuam9pbihbcmVwcihhcmcpIGZvciBhcmcgaW4gYXJnc10pCiAgICAga3dhcmdzX3N0cmluZyA9ICcsICcuam9pbihbCi0gICAgICAgICclcz0lcicgJSAoa2V5LCB2YWx1ZSkgZm9yIGtleSwgdmFsdWUgaW4ga3dhcmdzLml0ZW1zKCkKKyAgICAgICAgJyVzPSVyJyAlIChrZXksIHZhbHVlKSBmb3Iga2V5LCB2YWx1ZSBpbiBzb3J0ZWQoa3dhcmdzLml0ZW1zKCkpCiAgICAgXSkKICAgICBpZiBhcmdzX3N0cmluZzoKICAgICAgICAgZm9ybWF0dGVkX2FyZ3MgPSBhcmdzX3N0cmluZwpAQCAtMjAwNywxMCArMjAyOSw2IEBACiAgICAgICAgIHJldHVybiAob3RoZXJfYXJncywgb3RoZXJfa3dhcmdzKSA9PSAoc2VsZl9hcmdzLCBzZWxmX2t3YXJncykKIAogCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBub3Qgc2VsZi5fX2VxX18ob3RoZXIpCi0KLQogICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBpZiBzZWxmLm5hbWUgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBfQ2FsbCgoJycsIGFyZ3MsIGt3YXJncyksIG5hbWU9JygpJykKQEAgLTIwMjYsNiArMjA0NCwxMiBAQAogICAgICAgICByZXR1cm4gX0NhbGwobmFtZT1uYW1lLCBwYXJlbnQ9c2VsZiwgZnJvbV9rYWxsPUZhbHNlKQogCiAKKyAgICBkZWYgY291bnQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19nZXRhdHRyX18oJ2NvdW50JykoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgZGVmIGluZGV4KHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLl9fZ2V0YXR0cl9fKCdpbmRleCcpKCphcmdzLCAqKmt3YXJncykKKwogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuZnJvbV9rYWxsOgogICAgICAgICAgICAgbmFtZSA9IHNlbGYubmFtZSBvciAnY2FsbCcKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9yZXN1bHQucHkgYi9MaWIvdW5pdHRlc3QvcmVzdWx0LnB5CmluZGV4IDhlMGE2NDMuLmExOGYxMWIgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9yZXN1bHQucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Jlc3VsdC5weQpAQCAtNDUsNiArNDUsNyBAQAogICAgICAgICBzZWxmLnVuZXhwZWN0ZWRTdWNjZXNzZXMgPSBbXQogICAgICAgICBzZWxmLnNob3VsZFN0b3AgPSBGYWxzZQogICAgICAgICBzZWxmLmJ1ZmZlciA9IEZhbHNlCisgICAgICAgIHNlbGYudGJfbG9jYWxzID0gRmFsc2UKICAgICAgICAgc2VsZi5fc3Rkb3V0X2J1ZmZlciA9IE5vbmUKICAgICAgICAgc2VsZi5fc3RkZXJyX2J1ZmZlciA9IE5vbmUKICAgICAgICAgc2VsZi5fb3JpZ2luYWxfc3Rkb3V0ID0gc3lzLnN0ZG91dApAQCAtMTc5LDkgKzE4MCwxMSBAQAogICAgICAgICBpZiBleGN0eXBlIGlzIHRlc3QuZmFpbHVyZUV4Y2VwdGlvbjoKICAgICAgICAgICAgICMgU2tpcCBhc3NlcnQqKCkgdHJhY2ViYWNrIGxldmVscwogICAgICAgICAgICAgbGVuZ3RoID0gc2VsZi5fY291bnRfcmVsZXZhbnRfdGJfbGV2ZWxzKHRiKQotICAgICAgICAgICAgbXNnTGluZXMgPSB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbihleGN0eXBlLCB2YWx1ZSwgdGIsIGxlbmd0aCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1zZ0xpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oZXhjdHlwZSwgdmFsdWUsIHRiKQorICAgICAgICAgICAgbGVuZ3RoID0gTm9uZQorICAgICAgICB0Yl9lID0gdHJhY2ViYWNrLlRyYWNlYmFja0V4Y2VwdGlvbigKKyAgICAgICAgICAgIGV4Y3R5cGUsIHZhbHVlLCB0YiwgbGltaXQ9bGVuZ3RoLCBjYXB0dXJlX2xvY2Fscz1zZWxmLnRiX2xvY2FscykKKyAgICAgICAgbXNnTGluZXMgPSBsaXN0KHRiX2UuZm9ybWF0KCkpCiAKICAgICAgICAgaWYgc2VsZi5idWZmZXI6CiAgICAgICAgICAgICBvdXRwdXQgPSBzeXMuc3Rkb3V0LmdldHZhbHVlKCkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9ydW5uZXIucHkgYi9MaWIvdW5pdHRlc3QvcnVubmVyLnB5CmluZGV4IDI4Yjg4NjUuLjIxMTIyNjIgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9ydW5uZXIucHkKKysrIGIvTGliL3VuaXR0ZXN0L3J1bm5lci5weQpAQCAtMTI2LDcgKzEyNiwxMyBAQAogICAgIHJlc3VsdGNsYXNzID0gVGV4dFRlc3RSZXN1bHQKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW09Tm9uZSwgZGVzY3JpcHRpb25zPVRydWUsIHZlcmJvc2l0eT0xLAotICAgICAgICAgICAgICAgICBmYWlsZmFzdD1GYWxzZSwgYnVmZmVyPUZhbHNlLCByZXN1bHRjbGFzcz1Ob25lLCB3YXJuaW5ncz1Ob25lKToKKyAgICAgICAgICAgICAgICAgZmFpbGZhc3Q9RmFsc2UsIGJ1ZmZlcj1GYWxzZSwgcmVzdWx0Y2xhc3M9Tm9uZSwgd2FybmluZ3M9Tm9uZSwKKyAgICAgICAgICAgICAgICAgKiwgdGJfbG9jYWxzPUZhbHNlKToKKyAgICAgICAgIiIiQ29uc3RydWN0IGEgVGV4dFRlc3RSdW5uZXIuCisKKyAgICAgICAgU3ViY2xhc3NlcyBzaG91bGQgYWNjZXB0ICoqa3dhcmdzIHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IGFzIHRoZQorICAgICAgICBpbnRlcmZhY2UgY2hhbmdlcy4KKyAgICAgICAgIiIiCiAgICAgICAgIGlmIHN0cmVhbSBpcyBOb25lOgogICAgICAgICAgICAgc3RyZWFtID0gc3lzLnN0ZGVycgogICAgICAgICBzZWxmLnN0cmVhbSA9IF9Xcml0ZWxuRGVjb3JhdG9yKHN0cmVhbSkKQEAgLTEzNCw2ICsxNDAsNyBAQAogICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IHZlcmJvc2l0eQogICAgICAgICBzZWxmLmZhaWxmYXN0ID0gZmFpbGZhc3QKICAgICAgICAgc2VsZi5idWZmZXIgPSBidWZmZXIKKyAgICAgICAgc2VsZi50Yl9sb2NhbHMgPSB0Yl9sb2NhbHMKICAgICAgICAgc2VsZi53YXJuaW5ncyA9IHdhcm5pbmdzCiAgICAgICAgIGlmIHJlc3VsdGNsYXNzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5yZXN1bHRjbGFzcyA9IHJlc3VsdGNsYXNzCkBAIC0xNDcsNiArMTU0LDcgQEAKICAgICAgICAgcmVnaXN0ZXJSZXN1bHQocmVzdWx0KQogICAgICAgICByZXN1bHQuZmFpbGZhc3QgPSBzZWxmLmZhaWxmYXN0CiAgICAgICAgIHJlc3VsdC5idWZmZXIgPSBzZWxmLmJ1ZmZlcgorICAgICAgICByZXN1bHQudGJfbG9jYWxzID0gc2VsZi50Yl9sb2NhbHMKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgaWYgc2VsZi53YXJuaW5nczoKICAgICAgICAgICAgICAgICAjIGlmIHNlbGYud2FybmluZ3MgaXMgc2V0LCB1c2UgaXQgdG8gZmlsdGVyIGFsbCB0aGUgd2FybmluZ3MKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3N1cHBvcnQucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC9zdXBwb3J0LnB5CmluZGV4IDAyZThmM2EuLjUyOTI2NTMgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3N1cHBvcnQucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3Qvc3VwcG9ydC5weQpAQCAtMjUsOCArMjUsNiBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNoKG9ial8xKSA9PSBoYXNoKG9ial8yKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCIlciBhbmQgJXIgZG8gbm90IGhhc2ggZXF1YWwiICUgKG9ial8xLCBvYmpfMikpCi0gICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIlByb2JsZW0gaGFzaGluZyAlciBhbmQgJXI6ICVzIiAlIChvYmpfMSwgb2JqXzIsIGUpKQogCkBAIC0zNSw4ICszMyw2IEBACiAgICAgICAgICAgICAgICAgaWYgaGFzaChvYmpfMSkgPT0gaGFzaChvYmpfMik6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiJXMgYW5kICVzIGhhc2ggZXF1YWwsIGJ1dCBzaG91bGRuJ3QiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmpfMSwgb2JqXzIpKQotICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJQcm9ibGVtIGhhc2hpbmcgJXMgYW5kICVzOiAlcyIgJSAob2JqXzEsIG9ial8yLCBlKSkKIApkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5CmluZGV4IGMzNDlhOTUuLmU2ZTJiYzIgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Fzc2VydGlvbnMucHkKQEAgLTEzMyw3ICsxMzMsNiBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdFJlZ2V4KCdBbGEgbWEga290YScsIHInay50JywgJ01lc3NhZ2UnKQogICAgICAgICBleGNlcHQgc2VsZi5mYWlsdXJlRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCIna290JyIsIGUuYXJnc1swXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ01lc3NhZ2UnLCBlLmFyZ3NbMF0pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ2Fzc2VydE5vdFJlZ2V4IHNob3VsZCBoYXZlIGZhaWxlZC4nKQpAQCAtMzI5LDYgKzMyOCwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXnVuZXhwZWN0ZWRseSBpZGVudGljYWw6IE5vbmUkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl51bmV4cGVjdGVkbHkgaWRlbnRpY2FsOiBOb25lIDogb29wcyQiXSkKIAorICAgIGRlZiB0ZXN0QXNzZXJ0UmVnZXgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXMoJ2Fzc2VydFJlZ2V4JywgKCdmb28nLCAnYmFyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJeUmVnZXggZGlkbid0IG1hdGNoOiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJeb29wcyQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXlJlZ2V4IGRpZG4ndCBtYXRjaDoiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXlJlZ2V4IGRpZG4ndCBtYXRjaDogKC4qKSA6IG9vcHMkIl0pCisKKyAgICBkZWYgdGVzdEFzc2VydE5vdFJlZ2V4KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzKCdhc3NlcnROb3RSZWdleCcsICgnZm9vJywgJ2ZvbycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiXlJlZ2V4IG1hdGNoZWQ6IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl5vb3BzJCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJeUmVnZXggbWF0Y2hlZDoiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXlJlZ2V4IG1hdGNoZWQ6ICguKikgOiBvb3BzJCJdKQorCiAKICAgICBkZWYgYXNzZXJ0TWVzc2FnZXNDTShzZWxmLCBtZXRob2ROYW1lLCBhcmdzLCBmdW5jLCBlcnJvcnMpOgogICAgICAgICAiIiIKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYnJlYWsucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2JyZWFrLnB5CmluZGV4IDBiZjFhMjIuLjJjNzUwMTkgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYnJlYWsucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9icmVhay5weQpAQCAtMjExLDYgKzIxMSw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi52ZXJib3NpdHkgPSB2ZXJib3NpdHkKICAgICAgICAgICAgICAgICBzZWxmLmZhaWxmYXN0ID0gZmFpbGZhc3QKICAgICAgICAgICAgICAgICBzZWxmLmNhdGNoYnJlYWsgPSBjYXRjaGJyZWFrCisgICAgICAgICAgICAgICAgc2VsZi50Yl9sb2NhbHMgPSBGYWxzZQogICAgICAgICAgICAgICAgIHNlbGYudGVzdFJ1bm5lciA9IEZha2VSdW5uZXIKICAgICAgICAgICAgICAgICBzZWxmLnRlc3QgPSB0ZXN0CiAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBOb25lCkBAIC0yMjEsNiArMjIyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWtlUnVubmVyLmluaXRBcmdzLCBbKCgpLCB7J2J1ZmZlcic6IE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NpdHknOiB2ZXJib3NpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWlsZmFzdCc6IGZhaWxmYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGJfbG9jYWxzJzogRmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3YXJuaW5ncyc6IE5vbmV9KV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFrZVJ1bm5lci5ydW5BcmdzLCBbdGVzdF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZXN1bHQsIHJlc3VsdCkKQEAgLTIzNSw2ICsyMzcsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZha2VSdW5uZXIuaW5pdEFyZ3MsIFsoKCksIHsnYnVmZmVyJzogTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2l0eSc6IHZlcmJvc2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhaWxmYXN0JzogZmFpbGZhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0Yl9sb2NhbHMnOiBGYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dhcm5pbmdzJzogTm9uZX0pXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWtlUnVubmVyLnJ1bkFyZ3MsIFt0ZXN0XSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJlc3VsdCwgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9jYXNlLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9jYXNlLnB5CmluZGV4IDMyMWQ2N2EuLmFkYTczM2IgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfY2FzZS5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Nhc2UucHkKQEAgLTExMDMsMTIgKzExMDMsOSBAQAogICAgICAgICBleGNlcHQgc2VsZi5mYWlsdXJlRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAjIG5lZWQgdG8gcmVtb3ZlIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBlcnJvciBtZXNzYWdlCiAgICAgICAgICAgICBlcnJvciA9IHN0cihlKS5zcGxpdCgnXG4nLCAxKVsxXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzYW1wbGVfdGV4dF9lcnJvciwgZXJyb3IpCiAKLSAgICAgICAgICAgICMgbm8gZmFpciB0ZXN0aW5nIG91cnNlbGYgd2l0aCBvdXJzZWxmLCBhbmQgYXNzZXJ0RXF1YWwgaXMgdXNlZCBmb3Igc3RyaW5ncwotICAgICAgICAgICAgIyBzbyBjYW4ndCB1c2UgYXNzZXJ0RXF1YWwgZWl0aGVyLiBKdXN0IHVzZSBhc3NlcnRUcnVlLgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNhbXBsZV90ZXh0X2Vycm9yID09IGVycm9yKQotCi0gICAgZGVmIHRlc3RBc2VydEVxdWFsU2luZ2xlTGluZShzZWxmKToKKyAgICBkZWYgdGVzdEFzc2VydEVxdWFsU2luZ2xlTGluZShzZWxmKToKICAgICAgICAgc2FtcGxlX3RleHQgPSAibGFkZW4gc3dhbGxvd3MgZmx5IHNsb3dseSIKICAgICAgICAgcmV2aXNlZF9zYW1wbGVfdGV4dCA9ICJ1bmxhZGVuIHN3YWxsb3dzIGZseSBxdWlja2x5IgogICAgICAgICBzYW1wbGVfdGV4dF9lcnJvciA9ICIiIlwKQEAgLTExMjAsOCArMTExNyw5IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2FtcGxlX3RleHQsIHJldmlzZWRfc2FtcGxlX3RleHQpCiAgICAgICAgIGV4Y2VwdCBzZWxmLmZhaWx1cmVFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICMgbmVlZCB0byByZW1vdmUgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIGVycm9yIG1lc3NhZ2UKICAgICAgICAgICAgIGVycm9yID0gc3RyKGUpLnNwbGl0KCdcbicsIDEpWzFdCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2FtcGxlX3RleHRfZXJyb3IgPT0gZXJyb3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNhbXBsZV90ZXh0X2Vycm9yLCBlcnJvcikKIAogICAgIGRlZiB0ZXN0QXNzZXJ0SXNOb25lKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShOb25lKQpAQCAtMTE0Nyw2ICsxMTQ1LDkgQEAKICAgICAgICAgIyBGYWlsdXJlIHdoZW4gbm8gZXhjZXB0aW9uIGlzIHJhaXNlZAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuZmFpbHVyZUV4Y2VwdGlvbik6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb25Nb2NrLCBsYW1iZGE6IDApCisgICAgICAgICMgRmFpbHVyZSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uTW9jaywgTm9uZSkKICAgICAgICAgIyBGYWlsdXJlIHdoZW4gYW5vdGhlciBleGNlcHRpb24gaXMgcmFpc2VkCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uTW9jayk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBTdHViKQpAQCAtMTE3MSwxMCArMTE3MiwzMSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuZmFpbHVyZUV4Y2VwdGlvbik6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbk1vY2spOgogICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIyBDdXN0b20gbWVzc2FnZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZi5mYWlsdXJlRXhjZXB0aW9uLCAnZm9vYmFyJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbk1vY2ssIG1zZz0nZm9vYmFyJyk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAjIEludmFsaWQga2V5d29yZCBhcmd1bWVudAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICdmb29iYXInKSwgXAorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uTW9jaywgZm9vYmFyPTQyKToKKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMgRmFpbHVyZSB3aGVuIGFub3RoZXIgZXhjZXB0aW9uIGlzIHJhaXNlZAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbk1vY2spOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgU3R1YikKIAorICAgIGRlZiB0ZXN0QXNzZXJ0UmFpc2VzTm9FeGNlcHRpb25UeXBlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKDEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG9iamVjdCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIDEpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgb2JqZWN0KSkKKwogICAgIGRlZiB0ZXN0QXNzZXJ0UmFpc2VzUmVnZXgoc2VsZik6CiAgICAgICAgIGNsYXNzIEV4Y2VwdGlvbk1vY2soRXhjZXB0aW9uKToKICAgICAgICAgICAgIHBhc3MKQEAgLTExODQsNiArMTIwNiw4IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb25Nb2NrLCByZS5jb21waWxlKCdleHBlY3QkJyksIFN0dWIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uTW9jaywgJ2V4cGVjdCQnLCBTdHViKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uTW9jaywgJ2V4cGVjdCQnLCBOb25lKQogCiAgICAgZGVmIHRlc3RBc3NlcnROb3RSYWlzZXNSZWdleChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKQEAgLTExOTQsNiArMTIxOCwxNSBAQAogICAgICAgICAgICAgICAgIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbiwgJ15FeGNlcHRpb24gbm90IHJhaXNlZCBieSA8bGFtYmRhPiQnLAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgsIEV4Y2VwdGlvbiwgJ3gnLAogICAgICAgICAgICAgICAgIGxhbWJkYTogTm9uZSkKKyAgICAgICAgIyBDdXN0b20gbWVzc2FnZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZi5mYWlsdXJlRXhjZXB0aW9uLCAnZm9vYmFyJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAnZXhwZWN0JywgbXNnPSdmb29iYXInKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICMgSW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgJ2Zvb2JhcicpLCBcCisgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgJ2V4cGVjdCcsIGZvb2Jhcj00Mik6CisgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgZGVmIHRlc3RBc3NlcnRSYWlzZXNSZWdleEludmFsaWRSZWdleChzZWxmKToKICAgICAgICAgIyBJc3N1ZSAyMDE0NS4KQEAgLTEyMzcsNiArMTI3MCwyMCBAQAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZSwgRXhjZXB0aW9uTW9jaykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sIHYpCiAKKyAgICBkZWYgdGVzdEFzc2VydFJhaXNlc1JlZ2V4Tm9FeGNlcHRpb25UeXBlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KDEsICdleHBlY3QnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KG9iamVjdCwgJ2V4cGVjdCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoKFZhbHVlRXJyb3IsIDEpLCAnZXhwZWN0JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgoVmFsdWVFcnJvciwgb2JqZWN0KSwgJ2V4cGVjdCcpCisKICAgICBkZWYgdGVzdEFzc2VydFdhcm5zQ2FsbGFibGUoc2VsZik6CiAgICAgICAgIGRlZiBfcnVudGltZV93YXJuKCk6CiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJmb28iLCBSdW50aW1lV2FybmluZykKQEAgLTEyNTEsNiArMTI5OCw5IEBACiAgICAgICAgICMgRmFpbHVyZSB3aGVuIG5vIHdhcm5pbmcgaXMgdHJpZ2dlcmVkCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc2VsZi5mYWlsdXJlRXhjZXB0aW9uKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoUnVudGltZVdhcm5pbmcsIGxhbWJkYTogMCkKKyAgICAgICAgIyBGYWlsdXJlIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIE5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zKFJ1bnRpbWVXYXJuaW5nLCBOb25lKQogICAgICAgICAjIEZhaWx1cmUgd2hlbiBhbm90aGVyIHdhcm5pbmcgaXMgdHJpZ2dlcmVkCiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgICMgRm9yY2UgZGVmYXVsdCBmaWx0ZXIgKGluIGNhc2UgdGVzdHMgYXJlIHJ1biB3aXRoIC1XZSkKQEAgLTEyODksNiArMTMzOSwxNSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuZmFpbHVyZUV4Y2VwdGlvbik6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoUnVudGltZVdhcm5pbmcpOgogICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIyBDdXN0b20gbWVzc2FnZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZi5mYWlsdXJlRXhjZXB0aW9uLCAnZm9vYmFyJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoUnVudGltZVdhcm5pbmcsIG1zZz0nZm9vYmFyJyk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAjIEludmFsaWQga2V5d29yZCBhcmd1bWVudAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICdmb29iYXInKSwgXAorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhSdW50aW1lV2FybmluZywgZm9vYmFyPTQyKToKKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMgRmFpbHVyZSB3aGVuIGFub3RoZXIgd2FybmluZyBpcyB0cmlnZ2VyZWQKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgIyBGb3JjZSBkZWZhdWx0IGZpbHRlciAoaW4gY2FzZSB0ZXN0cyBhcmUgcnVuIHdpdGggLVdlKQpAQCAtMTMwMyw2ICsxMzYyLDIwIEBACiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CiAgICAgICAgICAgICAgICAgICAgIF9ydW50aW1lX3dhcm4oKQogCisgICAgZGVmIHRlc3RBc3NlcnRXYXJuc05vRXhjZXB0aW9uVHlwZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJucygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhvYmplY3QpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoKFVzZXJXYXJuaW5nLCAxKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJucygoVXNlcldhcm5pbmcsIG9iamVjdCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoKFVzZXJXYXJuaW5nLCBFeGNlcHRpb24pKQorCiAgICAgZGVmIHRlc3RBc3NlcnRXYXJuc1JlZ2V4Q2FsbGFibGUoc2VsZik6CiAgICAgICAgIGRlZiBfcnVudGltZV93YXJuKG1zZyk6CiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgUnVudGltZVdhcm5pbmcpCkBAIC0xMzEyLDYgKzEzODUsOSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuZmFpbHVyZUV4Y2VwdGlvbik6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUnVudGltZVdhcm5pbmcsICJvKyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiAwKQorICAgICAgICAjIEZhaWx1cmUgd2hlbiB0aGUgZnVuY3Rpb24gaXMgTm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleChSdW50aW1lV2FybmluZywgIm8rIiwgTm9uZSkKICAgICAgICAgIyBGYWlsdXJlIHdoZW4gYW5vdGhlciB3YXJuaW5nIGlzIHRyaWdnZXJlZAogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAjIEZvcmNlIGRlZmF1bHQgZmlsdGVyIChpbiBjYXNlIHRlc3RzIGFyZSBydW4gd2l0aCAtV2UpCkBAIC0xMzQ4LDYgKzE0MjQsMTUgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzZWxmLmZhaWx1cmVFeGNlcHRpb24pOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUnVudGltZVdhcm5pbmcsICJvKyIpOgogICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIyBDdXN0b20gbWVzc2FnZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZi5mYWlsdXJlRXhjZXB0aW9uLCAnZm9vYmFyJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChSdW50aW1lV2FybmluZywgJ28rJywgbXNnPSdmb29iYXInKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICMgSW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgJ2Zvb2JhcicpLCBcCisgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUnVudGltZVdhcm5pbmcsICdvKycsIGZvb2Jhcj00Mik6CisgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAjIEZhaWx1cmUgd2hlbiBhbm90aGVyIHdhcm5pbmcgaXMgdHJpZ2dlcmVkCiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgICMgRm9yY2UgZGVmYXVsdCBmaWx0ZXIgKGluIGNhc2UgdGVzdHMgYXJlIHJ1biB3aXRoIC1XZSkKQEAgLTEzNjksNiArMTQ1NCwyMiBAQAogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFJ1bnRpbWVXYXJuaW5nLCAibysiKToKICAgICAgICAgICAgICAgICAgICAgX3J1bnRpbWVfd2FybigiYmFyeiIpCiAKKyAgICBkZWYgdGVzdEFzc2VydFdhcm5zUmVnZXhOb0V4Y2VwdGlvblR5cGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleChVc2VyV2FybmluZykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KDEsICdleHBlY3QnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zUmVnZXgob2JqZWN0LCAnZXhwZWN0JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KChVc2VyV2FybmluZywgMSksICdleHBlY3QnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zUmVnZXgoKFVzZXJXYXJuaW5nLCBvYmplY3QpLCAnZXhwZWN0JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KChVc2VyV2FybmluZywgRXhjZXB0aW9uKSwgJ2V4cGVjdCcpCisKICAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogICAgIGRlZiBhc3NlcnROb1N0ZGVycihzZWxmKToKICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBidWY6CmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Rpc2NvdmVyeS5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfZGlzY292ZXJ5LnB5CmluZGV4IGYxMmU4OTguLjU1OTIxZmUgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfZGlzY292ZXJ5LnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfZGlzY292ZXJ5LnB5CkBAIC0xLDQgKzEsNSBAQAotaW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAorZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGltcG9ydCB0eXBlcwpAQCAtNjksNyArNzAsMTMgQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlc3RvcmVfaXNmaWxlKQogCiAgICAgICAgIGxvYWRlci5fZ2V0X21vZHVsZV9mcm9tX25hbWUgPSBsYW1iZGEgcGF0aDogcGF0aCArICcgbW9kdWxlJwotICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSA9IGxhbWJkYSBtb2R1bGU6IG1vZHVsZSArICcgdGVzdHMnCisgICAgICAgIG9yaWdfbG9hZF90ZXN0cyA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlCisgICAgICAgIGRlZiBsb2FkVGVzdHNGcm9tTW9kdWxlKG1vZHVsZSwgcGF0dGVybj1Ob25lKToKKyAgICAgICAgICAgICMgVGhpcyBpcyB3aGVyZSBsb2FkX3Rlc3RzIGlzIGNhbGxlZC4KKyAgICAgICAgICAgIGJhc2UgPSBvcmlnX2xvYWRfdGVzdHMobW9kdWxlLCBwYXR0ZXJuPXBhdHRlcm4pCisgICAgICAgICAgICByZXR1cm4gYmFzZSArIFttb2R1bGUgKyAnIHRlc3RzJ10KKyAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUgPSBsb2FkVGVzdHNGcm9tTW9kdWxlCisgICAgICAgIGxvYWRlci5zdWl0ZUNsYXNzID0gbGFtYmRhIHRoaW5nOiB0aGluZwogCiAgICAgICAgIHRvcF9sZXZlbCA9IG9zLnBhdGguYWJzcGF0aCgnL2ZvbycpCiAgICAgICAgIGxvYWRlci5fdG9wX2xldmVsX2RpciA9IHRvcF9sZXZlbApAQCAtNzcsOSArODQsOSBAQAogCiAgICAgICAgICMgVGhlIHRlc3Qgc3VpdGVzIGZvdW5kIHNob3VsZCBiZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkgZm9yIHJlbGlhYmxlCiAgICAgICAgICMgZXhlY3V0aW9uIG9yZGVyLgotICAgICAgICBleHBlY3RlZCA9IFtuYW1lICsgJyBtb2R1bGUgdGVzdHMnIGZvciBuYW1lIGluCi0gICAgICAgICAgICAgICAgICAgICgndGVzdDEnLCAndGVzdDInKV0KLSAgICAgICAgZXhwZWN0ZWQuZXh0ZW5kKFsoJ3Rlc3RfZGlyLiVzJyAlIG5hbWUpICsgJyBtb2R1bGUgdGVzdHMnIGZvciBuYW1lIGluCisgICAgICAgIGV4cGVjdGVkID0gW1tuYW1lICsgJyBtb2R1bGUgdGVzdHMnXSBmb3IgbmFtZSBpbgorICAgICAgICAgICAgICAgICAgICAoJ3Rlc3QxJywgJ3Rlc3QyJywgJ3Rlc3RfZGlyJyldCisgICAgICAgIGV4cGVjdGVkLmV4dGVuZChbWygndGVzdF9kaXIuJXMnICUgbmFtZSkgKyAnIG1vZHVsZSB0ZXN0cyddIGZvciBuYW1lIGluCiAgICAgICAgICAgICAgICAgICAgICgndGVzdDMnLCAndGVzdDQnKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VpdGUsIGV4cGVjdGVkKQogCkBAIC0xMTcsMzQgKzEyNCwyMDQgQEAKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpID09ICd0ZXN0X2RpcmVjdG9yeSc6CiAgICAgICAgICAgICAgICAgICAgIGRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rlc3RzX2FyZ3MuYXBwZW5kKChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnbG9hZF90ZXN0cycKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbc2VsZi5wYXRoICsgJyBsb2FkX3Rlc3RzJ10KICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rlc3RzID0gbG9hZF90ZXN0cwogCiAgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoID09IG90aGVyLnBhdGgKIAogICAgICAgICBsb2FkZXIuX2dldF9tb2R1bGVfZnJvbV9uYW1lID0gbGFtYmRhIG5hbWU6IE1vZHVsZShuYW1lKQotICAgICAgICBkZWYgbG9hZFRlc3RzRnJvbU1vZHVsZShtb2R1bGUsIHVzZV9sb2FkX3Rlc3RzKToKLSAgICAgICAgICAgIGlmIHVzZV9sb2FkX3Rlc3RzOgotICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbigndXNlX2xvYWRfdGVzdHMgc2hvdWxkIGJlIEZhbHNlIGZvciBwYWNrYWdlcycpCi0gICAgICAgICAgICByZXR1cm4gbW9kdWxlLnBhdGggKyAnIG1vZHVsZSB0ZXN0cycKKyAgICAgICAgb3JpZ19sb2FkX3Rlc3RzID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUKKyAgICAgICAgZGVmIGxvYWRUZXN0c0Zyb21Nb2R1bGUobW9kdWxlLCBwYXR0ZXJuPU5vbmUpOgorICAgICAgICAgICAgIyBUaGlzIGlzIHdoZXJlIGxvYWRfdGVzdHMgaXMgY2FsbGVkLgorICAgICAgICAgICAgYmFzZSA9IG9yaWdfbG9hZF90ZXN0cyhtb2R1bGUsIHBhdHRlcm49cGF0dGVybikKKyAgICAgICAgICAgIHJldHVybiBiYXNlICsgW21vZHVsZS5wYXRoICsgJyBtb2R1bGUgdGVzdHMnXQogICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSA9IGxvYWRUZXN0c0Zyb21Nb2R1bGUKKyAgICAgICAgbG9hZGVyLnN1aXRlQ2xhc3MgPSBsYW1iZGEgdGhpbmc6IHRoaW5nCiAKICAgICAgICAgbG9hZGVyLl90b3BfbGV2ZWxfZGlyID0gJy9mb28nCiAgICAgICAgICMgdGhpcyB0aW1lIG5vICcucHknIG9uIHRoZSBwYXR0ZXJuIHNvIHRoYXQgaXQgY2FuIG1hdGNoCiAgICAgICAgICMgYSB0ZXN0IHBhY2thZ2UKICAgICAgICAgc3VpdGUgPSBsaXN0KGxvYWRlci5fZmluZF90ZXN0cygnL2ZvbycsICd0ZXN0KicpKQogCi0gICAgICAgICMgV2Ugc2hvdWxkIGhhdmUgbG9hZGVkIHRlc3RzIGZyb20gdGhlIHRlc3RfZGlyZWN0b3J5IHBhY2thZ2UgYnkgY2FsbGluZyBsb2FkX3Rlc3RzCi0gICAgICAgICMgYW5kIGRpcmVjdGx5IGZyb20gdGhlIHRlc3RfZGlyZWN0b3J5MiBwYWNrYWdlCisgICAgICAgICMgV2Ugc2hvdWxkIGhhdmUgbG9hZGVkIHRlc3RzIGZyb20gdGhlIGFfZGlyZWN0b3J5IGFuZCB0ZXN0X2RpcmVjdG9yeTIKKyAgICAgICAgIyBkaXJlY3RseSBhbmQgdmlhIGxvYWRfdGVzdHMgZm9yIHRoZSB0ZXN0X2RpcmVjdG9yeSBwYWNrYWdlLCB3aGljaAorICAgICAgICAjIHN0aWxsIGNhbGxzIHRoZSBiYXNlbGluZSBtb2R1bGUgbG9hZGVyLgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1aXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnbG9hZF90ZXN0cycsICd0ZXN0X2RpcmVjdG9yeTInICsgJyBtb2R1bGUgdGVzdHMnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBbWydhX2RpcmVjdG9yeSBtb2R1bGUgdGVzdHMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyd0ZXN0X2RpcmVjdG9yeSBsb2FkX3Rlc3RzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0X2RpcmVjdG9yeSBtb2R1bGUgdGVzdHMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyd0ZXN0X2RpcmVjdG9yeTIgbW9kdWxlIHRlc3RzJ11dKQorCisKICAgICAgICAgIyBUaGUgdGVzdCBtb2R1bGUgcGF0aHMgc2hvdWxkIGJlIHNvcnRlZCBmb3IgcmVsaWFibGUgZXhlY3V0aW9uIG9yZGVyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9kdWxlLnBhdGhzLCBbJ3Rlc3RfZGlyZWN0b3J5JywgJ3Rlc3RfZGlyZWN0b3J5MiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE1vZHVsZS5wYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ2FfZGlyZWN0b3J5JywgJ3Rlc3RfZGlyZWN0b3J5JywgJ3Rlc3RfZGlyZWN0b3J5MiddKQorCisgICAgICAgICMgbG9hZF90ZXN0cyBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlIHdpdGggbG9hZGVyLCB0ZXN0cyBhbmQgcGF0dGVybgorICAgICAgICAjIChidXQgdGhlcmUgYXJlIG5vIHRlc3RzIGluIG91ciBzdHViIG1vZHVsZSBpdHNlbGYsIHNvIHRoYXRzIFtdIGF0IHRoZQorICAgICAgICAjIHRpbWUgb2YgY2FsbC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNb2R1bGUubG9hZF90ZXN0c19hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsobG9hZGVyLCBbXSwgJ3Rlc3QqJyldKQorCisgICAgZGVmIHRlc3RfZmluZF90ZXN0c19kZWZhdWx0X2NhbGxzX3BhY2thZ2VfbG9hZF90ZXN0cyhzZWxmKToKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisKKyAgICAgICAgb3JpZ2luYWxfbGlzdGRpciA9IG9zLmxpc3RkaXIKKyAgICAgICAgZGVmIHJlc3RvcmVfbGlzdGRpcigpOgorICAgICAgICAgICAgb3MubGlzdGRpciA9IG9yaWdpbmFsX2xpc3RkaXIKKyAgICAgICAgb3JpZ2luYWxfaXNmaWxlID0gb3MucGF0aC5pc2ZpbGUKKyAgICAgICAgZGVmIHJlc3RvcmVfaXNmaWxlKCk6CisgICAgICAgICAgICBvcy5wYXRoLmlzZmlsZSA9IG9yaWdpbmFsX2lzZmlsZQorICAgICAgICBvcmlnaW5hbF9pc2RpciA9IG9zLnBhdGguaXNkaXIKKyAgICAgICAgZGVmIHJlc3RvcmVfaXNkaXIoKToKKyAgICAgICAgICAgIG9zLnBhdGguaXNkaXIgPSBvcmlnaW5hbF9pc2RpcgorCisgICAgICAgIGRpcmVjdG9yaWVzID0gWydhX2RpcmVjdG9yeScsICd0ZXN0X2RpcmVjdG9yeScsICd0ZXN0X2RpcmVjdG9yeTInXQorICAgICAgICBwYXRoX2xpc3RzID0gW2RpcmVjdG9yaWVzLCBbXSwgW10sIFtdXQorICAgICAgICBvcy5saXN0ZGlyID0gbGFtYmRhIHBhdGg6IHBhdGhfbGlzdHMucG9wKDApCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZXN0b3JlX2xpc3RkaXIpCisKKyAgICAgICAgb3MucGF0aC5pc2RpciA9IGxhbWJkYSBwYXRoOiBUcnVlCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZXN0b3JlX2lzZGlyKQorCisgICAgICAgIG9zLnBhdGguaXNmaWxlID0gbGFtYmRhIHBhdGg6IG9zLnBhdGguYmFzZW5hbWUocGF0aCkgbm90IGluIGRpcmVjdG9yaWVzCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZXN0b3JlX2lzZmlsZSkKKworICAgICAgICBjbGFzcyBNb2R1bGUob2JqZWN0KToKKyAgICAgICAgICAgIHBhdGhzID0gW10KKyAgICAgICAgICAgIGxvYWRfdGVzdHNfYXJncyA9IFtdCisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisgICAgICAgICAgICAgICAgc2VsZi5wYXRocy5hcHBlbmQocGF0aCkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpID09ICd0ZXN0X2RpcmVjdG9yeSc6CisgICAgICAgICAgICAgICAgICAgIGRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rlc3RzX2FyZ3MuYXBwZW5kKChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbc2VsZi5wYXRoICsgJyBsb2FkX3Rlc3RzJ10KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rlc3RzID0gbG9hZF90ZXN0cworCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoID09IG90aGVyLnBhdGgKKworICAgICAgICBsb2FkZXIuX2dldF9tb2R1bGVfZnJvbV9uYW1lID0gbGFtYmRhIG5hbWU6IE1vZHVsZShuYW1lKQorICAgICAgICBvcmlnX2xvYWRfdGVzdHMgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZQorICAgICAgICBkZWYgbG9hZFRlc3RzRnJvbU1vZHVsZShtb2R1bGUsIHBhdHRlcm49Tm9uZSk6CisgICAgICAgICAgICAjIFRoaXMgaXMgd2hlcmUgbG9hZF90ZXN0cyBpcyBjYWxsZWQuCisgICAgICAgICAgICBiYXNlID0gb3JpZ19sb2FkX3Rlc3RzKG1vZHVsZSwgcGF0dGVybj1wYXR0ZXJuKQorICAgICAgICAgICAgcmV0dXJuIGJhc2UgKyBbbW9kdWxlLnBhdGggKyAnIG1vZHVsZSB0ZXN0cyddCisgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlID0gbG9hZFRlc3RzRnJvbU1vZHVsZQorICAgICAgICBsb2FkZXIuc3VpdGVDbGFzcyA9IGxhbWJkYSB0aGluZzogdGhpbmcKKworICAgICAgICBsb2FkZXIuX3RvcF9sZXZlbF9kaXIgPSAnL2ZvbycKKyAgICAgICAgIyB0aGlzIHRpbWUgbm8gJy5weScgb24gdGhlIHBhdHRlcm4gc28gdGhhdCBpdCBjYW4gbWF0Y2gKKyAgICAgICAgIyBhIHRlc3QgcGFja2FnZQorICAgICAgICBzdWl0ZSA9IGxpc3QobG9hZGVyLl9maW5kX3Rlc3RzKCcvZm9vJywgJ3Rlc3QqLnB5JykpCisKKyAgICAgICAgIyBXZSBzaG91bGQgaGF2ZSBsb2FkZWQgdGVzdHMgZnJvbSB0aGUgYV9kaXJlY3RvcnkgYW5kIHRlc3RfZGlyZWN0b3J5MgorICAgICAgICAjIGRpcmVjdGx5IGFuZCB2aWEgbG9hZF90ZXN0cyBmb3IgdGhlIHRlc3RfZGlyZWN0b3J5IHBhY2thZ2UsIHdoaWNoCisgICAgICAgICMgc3RpbGwgY2FsbHMgdGhlIGJhc2VsaW5lIG1vZHVsZSBsb2FkZXIuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgW1snYV9kaXJlY3RvcnkgbW9kdWxlIHRlc3RzJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsndGVzdF9kaXJlY3RvcnkgbG9hZF90ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdF9kaXJlY3RvcnkgbW9kdWxlIHRlc3RzJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsndGVzdF9kaXJlY3RvcnkyIG1vZHVsZSB0ZXN0cyddXSkKKyAgICAgICAgIyBUaGUgdGVzdCBtb2R1bGUgcGF0aHMgc2hvdWxkIGJlIHNvcnRlZCBmb3IgcmVsaWFibGUgZXhlY3V0aW9uIG9yZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9kdWxlLnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsnYV9kaXJlY3RvcnknLCAndGVzdF9kaXJlY3RvcnknLCAndGVzdF9kaXJlY3RvcnkyJ10pCisKIAogICAgICAgICAjIGxvYWRfdGVzdHMgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZSB3aXRoIGxvYWRlciwgdGVzdHMgYW5kIHBhdHRlcm4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNb2R1bGUubG9hZF90ZXN0c19hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsobG9hZGVyLCAndGVzdF9kaXJlY3RvcnknICsgJyBtb2R1bGUgdGVzdHMnLCAndGVzdConKV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgWyhsb2FkZXIsIFtdLCAndGVzdCoucHknKV0pCisKKyAgICBkZWYgdGVzdF9maW5kX3Rlc3RzX2N1c3RvbWlzZV92aWFfcGFja2FnZV9wYXR0ZXJuKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVzdCB1c2VzIHRoZSBleGFtcGxlICdkby1ub3RoaW5nJyBsb2FkX3Rlc3RzIGZyb20KKyAgICAgICAgIyBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvdW5pdHRlc3QuaHRtbCNsb2FkLXRlc3RzLXByb3RvY29sCisgICAgICAgICMgdG8gbWFrZSBzdXJlIHRoYXQgdGhhdCBhY3R1YWxseSB3b3Jrcy4KKyAgICAgICAgIyBIb3VzZWtlZXBpbmcKKyAgICAgICAgb3JpZ2luYWxfbGlzdGRpciA9IG9zLmxpc3RkaXIKKyAgICAgICAgZGVmIHJlc3RvcmVfbGlzdGRpcigpOgorICAgICAgICAgICAgb3MubGlzdGRpciA9IG9yaWdpbmFsX2xpc3RkaXIKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlc3RvcmVfbGlzdGRpcikKKyAgICAgICAgb3JpZ2luYWxfaXNmaWxlID0gb3MucGF0aC5pc2ZpbGUKKyAgICAgICAgZGVmIHJlc3RvcmVfaXNmaWxlKCk6CisgICAgICAgICAgICBvcy5wYXRoLmlzZmlsZSA9IG9yaWdpbmFsX2lzZmlsZQorICAgICAgICBzZWxmLmFkZENsZWFudXAocmVzdG9yZV9pc2ZpbGUpCisgICAgICAgIG9yaWdpbmFsX2lzZGlyID0gb3MucGF0aC5pc2RpcgorICAgICAgICBkZWYgcmVzdG9yZV9pc2RpcigpOgorICAgICAgICAgICAgb3MucGF0aC5pc2RpciA9IG9yaWdpbmFsX2lzZGlyCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZXN0b3JlX2lzZGlyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnBhdGgucmVtb3ZlLCBhYnNwYXRoKCcvZm9vJykpCisKKyAgICAgICAgIyBUZXN0IGRhdGE6IHdlIGV4cGVjdCB0aGUgZm9sbG93aW5nOgorICAgICAgICAjIGEgbGlzdGRpciB0byBmaW5kIG91ciBwYWNrYWdlLCBhbmQgaXNmaWxlIGFuZCBpc2RpciBjaGVja3Mgb24gaXQuCisgICAgICAgICMgYSBtb2R1bGUtZnJvbS1uYW1lIGNhbGwgdG8gdHVybiB0aGF0IGludG8gYSBtb2R1bGUKKyAgICAgICAgIyBmb2xsb3dlZCBieSBsb2FkX3Rlc3RzLgorICAgICAgICAjIHRoZW4gb3VyIGxvYWRfdGVzdHMgd2lsbCBjYWxsIGRpc2NvdmVyKCkgd2hpY2ggaXMgbWVzc3kKKyAgICAgICAgIyBidXQgdGhhdCBmaW5hbGx5IGNoYWlucyBpbnRvIGZpbmRfdGVzdHMgYWdhaW4gZm9yIHRoZSBjaGlsZCBkaXIgLQorICAgICAgICAjIHdoaWNoIGlzIHdoeSB3ZSBkb24ndCBoYXZlIGFuIGluZmluaXRlIGxvb3AuCisgICAgICAgICMgV2UgZXhwZWN0IHRvIHNlZToKKyAgICAgICAgIyB0aGUgbW9kdWxlIGxvYWQgdGVzdHMgZm9yIGJvdGggcGFja2FnZSBhbmQgcGxhaW4gbW9kdWxlIGNhbGxlZCwKKyAgICAgICAgIyBhbmQgdGhlIHBsYWluIG1vZHVsZSByZXN1bHQgbmVzdGVkIGJ5IHRoZSBwYWNrYWdlIG1vZHVsZSBsb2FkX3Rlc3RzCisgICAgICAgICMgaW5kaWNhdGluZyB0aGF0IGl0IHdhcyBwcm9jZXNzZWQgYW5kIGNvdWxkIGhhdmUgYmVlbiBtdXRhdGVkLgorICAgICAgICB2ZnMgPSB7YWJzcGF0aCgnL2ZvbycpOiBbJ215X3BhY2thZ2UnXSwKKyAgICAgICAgICAgICAgIGFic3BhdGgoJy9mb28vbXlfcGFja2FnZScpOiBbJ19faW5pdF9fLnB5JywgJ3Rlc3RfbW9kdWxlLnB5J119CisgICAgICAgIGRlZiBsaXN0X2RpcihwYXRoKToKKyAgICAgICAgICAgIHJldHVybiBsaXN0KHZmc1twYXRoXSkKKyAgICAgICAgb3MubGlzdGRpciA9IGxpc3RfZGlyCisgICAgICAgIG9zLnBhdGguaXNkaXIgPSBsYW1iZGEgcGF0aDogbm90IHBhdGguZW5kc3dpdGgoJy5weScpCisgICAgICAgIG9zLnBhdGguaXNmaWxlID0gbGFtYmRhIHBhdGg6IHBhdGguZW5kc3dpdGgoJy5weScpCisKKyAgICAgICAgY2xhc3MgTW9kdWxlKG9iamVjdCk6CisgICAgICAgICAgICBwYXRocyA9IFtdCisgICAgICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MgPSBbXQorCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICAgICAgICAgIHNlbGYucGF0aHMuYXBwZW5kKHBhdGgpCisgICAgICAgICAgICAgICAgaWYgcGF0aC5lbmRzd2l0aCgndGVzdF9tb2R1bGUnKToKKyAgICAgICAgICAgICAgICAgICAgZGVmIGxvYWRfdGVzdHMobG9hZGVyLCB0ZXN0cywgcGF0dGVybik6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvYWRfdGVzdHNfYXJncy5hcHBlbmQoKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtzZWxmLnBhdGggKyAnIGxvYWRfdGVzdHMnXQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rlc3RzX2FyZ3MuYXBwZW5kKChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdG9wIGxldmVsIGRpcmVjdG9yeSBjYWNoZWQgb24gbG9hZGVyIGluc3RhbmNlCisgICAgICAgICAgICAgICAgICAgICAgICBfX2ZpbGVfXyA9ICcvZm9vL215X3BhY2thZ2UvX19pbml0X18ucHknCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzX2RpciA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKKyAgICAgICAgICAgICAgICAgICAgICAgIHBrZ190ZXN0cyA9IGxvYWRlci5kaXNjb3ZlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9kaXI9dGhpc19kaXIsIHBhdHRlcm49cGF0dGVybikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbc2VsZi5wYXRoICsgJyBsb2FkX3Rlc3RzJywgdGVzdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdICsgcGtnX3Rlc3RzCisgICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rlc3RzID0gbG9hZF90ZXN0cworCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoID09IG90aGVyLnBhdGgKKworICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKKyAgICAgICAgbG9hZGVyLl9nZXRfbW9kdWxlX2Zyb21fbmFtZSA9IGxhbWJkYSBuYW1lOiBNb2R1bGUobmFtZSkKKyAgICAgICAgbG9hZGVyLnN1aXRlQ2xhc3MgPSBsYW1iZGEgdGhpbmc6IHRoaW5nCisKKyAgICAgICAgbG9hZGVyLl90b3BfbGV2ZWxfZGlyID0gYWJzcGF0aCgnL2ZvbycpCisgICAgICAgICMgdGhpcyB0aW1lIG5vICcucHknIG9uIHRoZSBwYXR0ZXJuIHNvIHRoYXQgaXQgY2FuIG1hdGNoCisgICAgICAgICMgYSB0ZXN0IHBhY2thZ2UKKyAgICAgICAgc3VpdGUgPSBsaXN0KGxvYWRlci5fZmluZF90ZXN0cyhhYnNwYXRoKCcvZm9vJyksICd0ZXN0Ki5weScpKQorCisgICAgICAgICMgV2Ugc2hvdWxkIGhhdmUgbG9hZGVkIHRlc3RzIGZyb20gYm90aCBteV9wYWNrYWdlIGFuZAorICAgICAgICAjIG15X3BhY2FrZ2UudGVzdF9tb2R1bGUsIGFuZCBhbHNvIHJ1biB0aGUgbG9hZF90ZXN0cyBob29rIGluIGJvdGguCisgICAgICAgICMgKG5vcm1hbGx5IHRoaXMgd291bGQgYmUgbmVzdGVkIFRlc3RTdWl0ZXMuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1aXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtbJ215X3BhY2thZ2UgbG9hZF90ZXN0cycsIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbJ215X3BhY2thZ2UudGVzdF9tb2R1bGUgbG9hZF90ZXN0cyddXV0pCisgICAgICAgICMgUGFyZW50cyBiZWZvcmUgY2hpbGRyZW4uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9kdWxlLnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsnbXlfcGFja2FnZScsICdteV9wYWNrYWdlLnRlc3RfbW9kdWxlJ10pCisKKyAgICAgICAgIyBsb2FkX3Rlc3RzIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHR3aWNlIHdpdGggbG9hZGVyLCB0ZXN0cyBhbmQgcGF0dGVybgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE1vZHVsZS5sb2FkX3Rlc3RzX2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgWyhsb2FkZXIsIFtdLCAndGVzdCoucHknKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvYWRlciwgW10sICd0ZXN0Ki5weScpXSkKIAogICAgIGRlZiB0ZXN0X2Rpc2NvdmVyKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKQEAgLTE5Miw2ICszNjksNTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZmluZF90ZXN0c19hcmdzLCBbKHN0YXJ0X2RpciwgJ3BhdHRlcm4nKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4odG9wX2xldmVsX2Rpciwgc3lzLnBhdGgpCiAKKyAgICBkZWYgdGVzdF9kaXNjb3Zlcl9zdGFydF9kaXJfaXNfcGFja2FnZV9jYWxsc19wYWNrYWdlX2xvYWRfdGVzdHMoc2VsZik6CisgICAgICAgICMgVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHBhY2thZ2UgbG9hZF90ZXN0cyBpbiBhIHBhY2thZ2UgaXMgaW5kZWVkCisgICAgICAgICMgaW52b2tlZCB3aGVuIHRoZSBzdGFydF9kaXIgaXMgYSBwYWNrYWdlIChhbmQgbm90IHRoZSB0b3AgbGV2ZWwpLgorICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMjQ1NworCisgICAgICAgICMgVGVzdCBkYXRhOiB3ZSBleHBlY3QgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgIyBhbiBpc2ZpbGUgdG8gdmVyaWZ5IHRoZSBwYWNrYWdlLCB0aGVuIGltcG9ydGluZyBhbmQgc2Nhbm5pbmcKKyAgICAgICAgIyBhcyBwZXIgX2ZpbmRfdGVzdHMnIG5vcm1hbCBiZWhhdmlvdXIuCisgICAgICAgICMgV2UgZXhwZWN0IHRvIHNlZSBvdXIgbG9hZF90ZXN0cyBob29rIGNhbGxlZCBvbmNlLgorICAgICAgICB2ZnMgPSB7YWJzcGF0aCgnL3RvcGxldmVsJyk6IFsnc3RhcnRkaXInXSwKKyAgICAgICAgICAgICAgIGFic3BhdGgoJy90b3BsZXZlbC9zdGFydGRpcicpOiBbJ19faW5pdF9fLnB5J119CisgICAgICAgIGRlZiBsaXN0X2RpcihwYXRoKToKKyAgICAgICAgICAgIHJldHVybiBsaXN0KHZmc1twYXRoXSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNldGF0dHIsIG9zLCAnbGlzdGRpcicsIG9zLmxpc3RkaXIpCisgICAgICAgIG9zLmxpc3RkaXIgPSBsaXN0X2RpcgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgb3MucGF0aCwgJ2lzZmlsZScsIG9zLnBhdGguaXNmaWxlKQorICAgICAgICBvcy5wYXRoLmlzZmlsZSA9IGxhbWJkYSBwYXRoOiBwYXRoLmVuZHN3aXRoKCcucHknKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgb3MucGF0aCwgJ2lzZGlyJywgb3MucGF0aC5pc2RpcikKKyAgICAgICAgb3MucGF0aC5pc2RpciA9IGxhbWJkYSBwYXRoOiBub3QgcGF0aC5lbmRzd2l0aCgnLnB5JykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5wYXRoLnJlbW92ZSwgYWJzcGF0aCgnL3RvcGxldmVsJykpCisKKyAgICAgICAgY2xhc3MgTW9kdWxlKG9iamVjdCk6CisgICAgICAgICAgICBwYXRocyA9IFtdCisgICAgICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MgPSBbXQorCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorCisgICAgICAgICAgICBkZWYgbG9hZF90ZXN0cyhzZWxmLCBsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKToKKyAgICAgICAgICAgICAgICByZXR1cm4gWydsb2FkX3Rlc3RzIGNhbGxlZCAnICsgc2VsZi5wYXRoXQorCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoID09IG90aGVyLnBhdGgKKworICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKKyAgICAgICAgbG9hZGVyLl9nZXRfbW9kdWxlX2Zyb21fbmFtZSA9IGxhbWJkYSBuYW1lOiBNb2R1bGUobmFtZSkKKyAgICAgICAgbG9hZGVyLnN1aXRlQ2xhc3MgPSBsYW1iZGEgdGhpbmc6IHRoaW5nCisKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIuZGlzY292ZXIoJy90b3BsZXZlbC9zdGFydGRpcicsIHRvcF9sZXZlbF9kaXI9Jy90b3BsZXZlbCcpCisKKyAgICAgICAgIyBXZSBzaG91bGQgaGF2ZSBsb2FkZWQgdGVzdHMgZnJvbSB0aGUgcGFja2FnZSBfX2luaXRfXy4KKyAgICAgICAgIyAobm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBuZXN0ZWQgVGVzdFN1aXRlcy4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgW1snbG9hZF90ZXN0cyBjYWxsZWQgc3RhcnRkaXInXV0pCisKICAgICBkZWYgc2V0dXBfaW1wb3J0X2lzc3VlX3Rlc3RzKHNlbGYsIGZha2VmaWxlKToKICAgICAgICAgbGlzdGRpciA9IG9zLmxpc3RkaXIKICAgICAgICAgb3MubGlzdGRpciA9IGxhbWJkYSBfOiBbZmFrZWZpbGVdCkBAIC0yMDQsNiArNDI2LDE3IEBACiAgICAgICAgICAgICBzeXMucGF0aFs6XSA9IG9yaWdfc3lzX3BhdGgKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlc3RvcmUpCiAKKyAgICBkZWYgc2V0dXBfaW1wb3J0X2lzc3VlX3BhY2thZ2VfdGVzdHMoc2VsZiwgdmZzKToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNldGF0dHIsIG9zLCAnbGlzdGRpcicsIG9zLmxpc3RkaXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXRhdHRyLCBvcy5wYXRoLCAnaXNmaWxlJywgb3MucGF0aC5pc2ZpbGUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXRhdHRyLCBvcy5wYXRoLCAnaXNkaXInLCBvcy5wYXRoLmlzZGlyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnBhdGguX19zZXRpdGVtX18sIHNsaWNlKE5vbmUpLCBsaXN0KHN5cy5wYXRoKSkKKyAgICAgICAgZGVmIGxpc3RfZGlyKHBhdGgpOgorICAgICAgICAgICAgcmV0dXJuIGxpc3QodmZzW3BhdGhdKQorICAgICAgICBvcy5saXN0ZGlyID0gbGlzdF9kaXIKKyAgICAgICAgb3MucGF0aC5pc2RpciA9IGxhbWJkYSBwYXRoOiBub3QgcGF0aC5lbmRzd2l0aCgnLnB5JykKKyAgICAgICAgb3MucGF0aC5pc2ZpbGUgPSBsYW1iZGEgcGF0aDogcGF0aC5lbmRzd2l0aCgnLnB5JykKKwogICAgIGRlZiB0ZXN0X2Rpc2NvdmVyX3dpdGhfbW9kdWxlc190aGF0X2ZhaWxfdG9faW1wb3J0KHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIApAQCAtMjEyLDExICs0NDUsNDQgQEAKICAgICAgICAgc3VpdGUgPSBsb2FkZXIuZGlzY292ZXIoJy4nKQogICAgICAgICBzZWxmLmFzc2VydEluKG9zLmdldGN3ZCgpLCBzeXMucGF0aCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWl0ZS5jb3VudFRlc3RDYXNlcygpLCAxKQorICAgICAgICAjIEVycm9ycyBsb2FkaW5nIHRoZSBzdWl0ZSBhcmUgYWxzbyBjYXB0dXJlZCBmb3IgaW50cm9zcGVjdGlvbi4KKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChbXSwgbG9hZGVyLmVycm9ycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obG9hZGVyLmVycm9ycykpCisgICAgICAgIGVycm9yID0gbG9hZGVyLmVycm9yc1swXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgICAgICAnRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogdGVzdF90aGlzX2RvZXNfbm90X2V4aXN0JyBpbiBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKICAgICAgICAgdGVzdCA9IGxpc3QobGlzdChzdWl0ZSlbMF0pWzBdICMgZXh0cmFjdCB0ZXN0IGZyb20gc3VpdGUKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgIHRlc3QudGVzdF90aGlzX2RvZXNfbm90X2V4aXN0KCkKIAorICAgIGRlZiB0ZXN0X2Rpc2NvdmVyX3dpdGhfaW5pdF9tb2R1bGVzX3RoYXRfZmFpbF90b19pbXBvcnQoc2VsZik6CisgICAgICAgIHZmcyA9IHthYnNwYXRoKCcvZm9vJyk6IFsnbXlfcGFja2FnZSddLAorICAgICAgICAgICAgICAgYWJzcGF0aCgnL2Zvby9teV9wYWNrYWdlJyk6IFsnX19pbml0X18ucHknLCAndGVzdF9tb2R1bGUucHknXX0KKyAgICAgICAgc2VsZi5zZXR1cF9pbXBvcnRfaXNzdWVfcGFja2FnZV90ZXN0cyh2ZnMpCisgICAgICAgIGltcG9ydF9jYWxscyA9IFtdCisgICAgICAgIGRlZiBfZ2V0X21vZHVsZV9mcm9tX25hbWUobmFtZSk6CisgICAgICAgICAgICBpbXBvcnRfY2FsbHMuYXBwZW5kKG5hbWUpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiQ2Fubm90IGltcG9ydCBOYW1lIikKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIGxvYWRlci5fZ2V0X21vZHVsZV9mcm9tX25hbWUgPSBfZ2V0X21vZHVsZV9mcm9tX25hbWUKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIuZGlzY292ZXIoYWJzcGF0aCgnL2ZvbycpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYWJzcGF0aCgnL2ZvbycpLCBzeXMucGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWl0ZS5jb3VudFRlc3RDYXNlcygpLCAxKQorICAgICAgICAjIEVycm9ycyBsb2FkaW5nIHRoZSBzdWl0ZSBhcmUgYWxzbyBjYXB0dXJlZCBmb3IgaW50cm9zcGVjdGlvbi4KKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChbXSwgbG9hZGVyLmVycm9ycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obG9hZGVyLmVycm9ycykpCisgICAgICAgIGVycm9yID0gbG9hZGVyLmVycm9yc1swXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgICAgICAnRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogbXlfcGFja2FnZScgaW4gZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHRlc3QgPSBsaXN0KGxpc3Qoc3VpdGUpWzBdKVswXSAjIGV4dHJhY3QgdGVzdCBmcm9tIHN1aXRlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgdGVzdC5teV9wYWNrYWdlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXBvcnRfY2FsbHMsIFsnbXlfcGFja2FnZSddKQorCiAgICAgICAgICMgQ2hlY2sgcGlja2xhYmlsaXR5CiAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgogICAgICAgICAgICAgcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyh0ZXN0LCBwcm90bykpCkBAIC0yNDEsNiArNTA3LDMwIEBACiAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgogICAgICAgICAgICAgcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhzdWl0ZSwgcHJvdG8pKQogCisgICAgZGVmIHRlc3RfZGlzY292ZXJfd2l0aF9pbml0X21vZHVsZV90aGF0X3JhaXNlc19Ta2lwVGVzdF9vbl9pbXBvcnQoc2VsZik6CisgICAgICAgIHZmcyA9IHthYnNwYXRoKCcvZm9vJyk6IFsnbXlfcGFja2FnZSddLAorICAgICAgICAgICAgICAgYWJzcGF0aCgnL2Zvby9teV9wYWNrYWdlJyk6IFsnX19pbml0X18ucHknLCAndGVzdF9tb2R1bGUucHknXX0KKyAgICAgICAgc2VsZi5zZXR1cF9pbXBvcnRfaXNzdWVfcGFja2FnZV90ZXN0cyh2ZnMpCisgICAgICAgIGltcG9ydF9jYWxscyA9IFtdCisgICAgICAgIGRlZiBfZ2V0X21vZHVsZV9mcm9tX25hbWUobmFtZSk6CisgICAgICAgICAgICBpbXBvcnRfY2FsbHMuYXBwZW5kKG5hbWUpCisgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnc2tpcHBlcm9vJykKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIGxvYWRlci5fZ2V0X21vZHVsZV9mcm9tX25hbWUgPSBfZ2V0X21vZHVsZV9mcm9tX25hbWUKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIuZGlzY292ZXIoYWJzcGF0aCgnL2ZvbycpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYWJzcGF0aCgnL2ZvbycpLCBzeXMucGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWl0ZS5jb3VudFRlc3RDYXNlcygpLCAxKQorICAgICAgICByZXN1bHQgPSB1bml0dGVzdC5UZXN0UmVzdWx0KCkKKyAgICAgICAgc3VpdGUucnVuKHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0LnNraXBwZWQpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC50ZXN0c1J1biwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXBvcnRfY2FsbHMsIFsnbXlfcGFja2FnZSddKQorCisgICAgICAgICMgQ2hlY2sgcGlja2xhYmlsaXR5CisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhzdWl0ZSwgcHJvdG8pKQorCiAgICAgZGVmIHRlc3RfY29tbWFuZF9saW5lX2hhbmRsaW5nX3BhcnNlQXJncyhzZWxmKToKICAgICAgICAgcHJvZ3JhbSA9IFRlc3RhYmxlVGVzdFByb2dyYW0oKQogCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2xvYWRlci5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CmluZGV4IGI2MmExYjUuLjY4ZjEwMzYgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CkBAIC0xLDEyICsxLDM2IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKLQoraW1wb3J0IHdhcm5pbmdzCiAKIGltcG9ydCB1bml0dGVzdAogCisjIERlY29yYXRvciB1c2VkIGluIHRoZSBkZXByZWNhdGlvbiB0ZXN0cyB0byByZXNldCB0aGUgd2FybmluZyByZWdpc3RyeSBmb3IKKyMgdGVzdCBpc29sYXRpb24gYW5kIHJlcHJvZHVjaWJpbGl0eS4KK2RlZiB3YXJuaW5ncmVnaXN0cnkoZnVuYyk6CisgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dzKToKKyAgICAgICAgbWlzc2luZyA9IG9iamVjdCgpCisgICAgICAgIHNhdmVkID0gZ2V0YXR0cih3YXJuaW5ncywgJ19fd2FybmluZ3JlZ2lzdHJ5X18nLCBtaXNzaW5nKS5jb3B5KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa3dzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgc2F2ZWQgaXMgbWlzc2luZzoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGRlbCB3YXJuaW5ncy5fX3dhcm5pbmdyZWdpc3RyeV9fCisgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLl9fd2FybmluZ3JlZ2lzdHJ5X18gPSBzYXZlZAorCiAKIGNsYXNzIFRlc3RfVGVzdExvYWRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICAjIyMgQmFzaWMgb2JqZWN0IHRlc3RzCisgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisgICAgZGVmIHRlc3RfX19pbml0X18oc2VsZik6CisgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBsb2FkZXIuZXJyb3JzKQorCiAgICAgIyMjIFRlc3RzIGZvciBUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21UZXN0Q2FzZQogICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIApAQCAtMTUwLDYgKzE3NCw3IEBACiAKICAgICAjIENoZWNrIHRoYXQgbG9hZFRlc3RzRnJvbU1vZHVsZSBob25vcnMgKG9yIG5vdCkgYSBtb2R1bGUKICAgICAjIHdpdGggYSBsb2FkX3Rlc3RzIGZ1bmN0aW9uLgorICAgIEB3YXJuaW5ncmVnaXN0cnkKICAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTW9kdWxlX19sb2FkX3Rlc3RzKHNlbGYpOgogICAgICAgICBtID0gdHlwZXMuTW9kdWxlVHlwZSgnbScpCiAgICAgICAgIGNsYXNzIE15VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTY4LDEwICsxOTMsMTQ0IEBACiAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN1aXRlLCB1bml0dGVzdC5UZXN0U3VpdGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZF90ZXN0c19hcmdzLCBbbG9hZGVyLCBzdWl0ZSwgTm9uZV0pCisgICAgICAgICMgV2l0aCBQeXRob24gMy41LCB0aGUgdW5kb2N1bWVudGVkIGFuZCB1bm9mZmljaWFsIHVzZV9sb2FkX3Rlc3RzIGlzCisgICAgICAgICMgaWdub3JlZCAoYW5kIGRlcHJlY2F0ZWQpLgorICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MgPSBbXQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1GYWxzZSk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ25ldmVyJykKKyAgICAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSwgdXNlX2xvYWRfdGVzdHM9RmFsc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRfdGVzdHNfYXJncywgW2xvYWRlciwgc3VpdGUsIE5vbmVdKQorCisgICAgQHdhcm5pbmdyZWdpc3RyeQorICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21Nb2R1bGVfX3VzZV9sb2FkX3Rlc3RzX2RlcHJlY2F0ZWRfcG9zaXRpb25hbChzZWxmKToKKyAgICAgICAgbSA9IHR5cGVzLk1vZHVsZVR5cGUoJ20nKQorICAgICAgICBjbGFzcyBNeVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbS50ZXN0Y2FzZV8xID0gTXlUZXN0Q2FzZQogCiAgICAgICAgIGxvYWRfdGVzdHNfYXJncyA9IFtdCi0gICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSwgdXNlX2xvYWRfdGVzdHM9RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZF90ZXN0c19hcmdzLCBbXSkKKyAgICAgICAgZGVmIGxvYWRfdGVzdHMobG9hZGVyLCB0ZXN0cywgcGF0dGVybik6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodGVzdHMsIHVuaXR0ZXN0LlRlc3RTdWl0ZSkKKyAgICAgICAgICAgIGxvYWRfdGVzdHNfYXJncy5leHRlbmQoKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pKQorICAgICAgICAgICAgcmV0dXJuIHRlc3RzCisgICAgICAgIG0ubG9hZF90ZXN0cyA9IGxvYWRfdGVzdHMKKyAgICAgICAgIyBUaGUgbWV0aG9kIHN0aWxsIHdvcmtzLgorICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKKyAgICAgICAgIyB1c2VfbG9hZF90ZXN0cz1UcnVlIGFzIGEgcG9zaXRpb25hbCBhcmd1bWVudC4KKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignYWx3YXlzJykKKyAgICAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSwgRmFsc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3VpdGUsIHVuaXR0ZXN0LlRlc3RTdWl0ZSkKKyAgICAgICAgICAgICMgbG9hZF90ZXN0cyB3YXMgc3RpbGwgY2FsbGVkIGJlY2F1c2UgdXNlX2xvYWRfdGVzdHMgaXMgZGVwcmVjYXRlZAorICAgICAgICAgICAgIyBhbmQgaWdub3JlZC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZF90ZXN0c19hcmdzLCBbbG9hZGVyLCBzdWl0ZSwgTm9uZV0pCisgICAgICAgICMgV2UgZ290IGEgd2FybmluZy4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3Wy0xXS5jYXRlZ29yeSwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih3Wy0xXS5tZXNzYWdlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZV9sb2FkX3Rlc3RzIGlzIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQnKQorCisgICAgQHdhcm5pbmdyZWdpc3RyeQorICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21Nb2R1bGVfX3VzZV9sb2FkX3Rlc3RzX2RlcHJlY2F0ZWRfa2V5d29yZChzZWxmKToKKyAgICAgICAgbSA9IHR5cGVzLk1vZHVsZVR5cGUoJ20nKQorICAgICAgICBjbGFzcyBNeVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbS50ZXN0Y2FzZV8xID0gTXlUZXN0Q2FzZQorCisgICAgICAgIGxvYWRfdGVzdHNfYXJncyA9IFtdCisgICAgICAgIGRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRlc3RzLCB1bml0dGVzdC5UZXN0U3VpdGUpCisgICAgICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MuZXh0ZW5kKChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSkKKyAgICAgICAgICAgIHJldHVybiB0ZXN0cworICAgICAgICBtLmxvYWRfdGVzdHMgPSBsb2FkX3Rlc3RzCisgICAgICAgICMgVGhlIG1ldGhvZCBzdGlsbCB3b3Jrcy4KKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpCisgICAgICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKG0sIHVzZV9sb2FkX3Rlc3RzPUZhbHNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN1aXRlLCB1bml0dGVzdC5UZXN0U3VpdGUpCisgICAgICAgICAgICAjIGxvYWRfdGVzdHMgd2FzIHN0aWxsIGNhbGxlZCBiZWNhdXNlIHVzZV9sb2FkX3Rlc3RzIGlzIGRlcHJlY2F0ZWQKKyAgICAgICAgICAgICMgYW5kIGlnbm9yZWQuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRfdGVzdHNfYXJncywgW2xvYWRlciwgc3VpdGUsIE5vbmVdKQorICAgICAgICAgICAgIyBXZSBnb3QgYSB3YXJuaW5nLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3Wy0xXS5jYXRlZ29yeSwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIod1stMV0ubWVzc2FnZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlX2xvYWRfdGVzdHMgaXMgZGVwcmVjYXRlZCBhbmQgaWdub3JlZCcpCisKKyAgICBAd2FybmluZ3JlZ2lzdHJ5CisgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU1vZHVsZV9fdG9vX21hbnlfcG9zaXRpb25hbF9hcmdzKHNlbGYpOgorICAgICAgICBtID0gdHlwZXMuTW9kdWxlVHlwZSgnbScpCisgICAgICAgIGNsYXNzIE15VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgZGVmIHRlc3Qoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBtLnRlc3RjYXNlXzEgPSBNeVRlc3RDYXNlCisKKyAgICAgICAgbG9hZF90ZXN0c19hcmdzID0gW10KKyAgICAgICAgZGVmIGxvYWRfdGVzdHMobG9hZGVyLCB0ZXN0cywgcGF0dGVybik6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodGVzdHMsIHVuaXR0ZXN0LlRlc3RTdWl0ZSkKKyAgICAgICAgICAgIGxvYWRfdGVzdHNfYXJncy5leHRlbmQoKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pKQorICAgICAgICAgICAgcmV0dXJuIHRlc3RzCisgICAgICAgIG0ubG9hZF90ZXN0cyA9IGxvYWRfdGVzdHMKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbSwgXAorICAgICAgICAgICAgIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmcocmVjb3JkPVRydWUpIGFzIHc6CisgICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZShtLCBGYWxzZSwgJ3Rlc3RtZS4qJykKKyAgICAgICAgICAgICMgV2Ugc3RpbGwgZ290IHRoZSBkZXByZWNhdGlvbiB3YXJuaW5nLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3Wy0xXS5jYXRlZ29yeSwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIod1stMV0ubWVzc2FnZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlX2xvYWRfdGVzdHMgaXMgZGVwcmVjYXRlZCBhbmQgaWdub3JlZCcpCisgICAgICAgICAgICAjIFdlIGFsc28gZ290IGEgVHlwZUVycm9yIGZvciB0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cy4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbS5leGNlcHRpb24pLCBUeXBlRXJyb3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICdsb2FkVGVzdHNGcm9tTW9kdWxlKCkgdGFrZXMgMSBwb3NpdGlvbmFsIGFyZ3VtZW50IGJ1dCAzIHdlcmUgZ2l2ZW4nKQorCisgICAgQHdhcm5pbmdyZWdpc3RyeQorICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21Nb2R1bGVfX3VzZV9sb2FkX3Rlc3RzX290aGVyX2JhZF9rZXl3b3JkKHNlbGYpOgorICAgICAgICBtID0gdHlwZXMuTW9kdWxlVHlwZSgnbScpCisgICAgICAgIGNsYXNzIE15VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgZGVmIHRlc3Qoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBtLnRlc3RjYXNlXzEgPSBNeVRlc3RDYXNlCisKKyAgICAgICAgbG9hZF90ZXN0c19hcmdzID0gW10KKyAgICAgICAgZGVmIGxvYWRfdGVzdHMobG9hZGVyLCB0ZXN0cywgcGF0dGVybik6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodGVzdHMsIHVuaXR0ZXN0LlRlc3RTdWl0ZSkKKyAgICAgICAgICAgIGxvYWRfdGVzdHNfYXJncy5leHRlbmQoKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pKQorICAgICAgICAgICAgcmV0dXJuIHRlc3RzCisgICAgICAgIG0ubG9hZF90ZXN0cyA9IGxvYWRfdGVzdHMKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignbmV2ZXInKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKAorICAgICAgICAgICAgICAgICAgICBtLCB1c2VfbG9hZF90ZXN0cz1GYWxzZSwgdmVyeV9iYWQ9VHJ1ZSwgd29yc2U9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbS5leGNlcHRpb24pLCBUeXBlRXJyb3IpCisgICAgICAgICMgVGhlIGVycm9yIG1lc3NhZ2UgbmFtZXMgdGhlIGZpcnN0IGJhZCBhcmd1bWVudCBhbHBoYWJldGljYWxseSwKKyAgICAgICAgIyBob3dldmVyIHVzZV9sb2FkX3Rlc3RzICh3aGljaCBzb3J0cyBmaXJzdCkgaXMgaWdub3JlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgImxvYWRUZXN0c0Zyb21Nb2R1bGUoKSBnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50ICd2ZXJ5X2JhZCciKQorCisgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU1vZHVsZV9fcGF0dGVybihzZWxmKToKKyAgICAgICAgbSA9IHR5cGVzLk1vZHVsZVR5cGUoJ20nKQorICAgICAgICBjbGFzcyBNeVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbS50ZXN0Y2FzZV8xID0gTXlUZXN0Q2FzZQorCisgICAgICAgIGxvYWRfdGVzdHNfYXJncyA9IFtdCisgICAgICAgIGRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRlc3RzLCB1bml0dGVzdC5UZXN0U3VpdGUpCisgICAgICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MuZXh0ZW5kKChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSkKKyAgICAgICAgICAgIHJldHVybiB0ZXN0cworICAgICAgICBtLmxvYWRfdGVzdHMgPSBsb2FkX3Rlc3RzCisKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSwgcGF0dGVybj0ndGVzdG1lLionKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3VpdGUsIHVuaXR0ZXN0LlRlc3RTdWl0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2FkX3Rlc3RzX2FyZ3MsIFtsb2FkZXIsIHN1aXRlLCAndGVzdG1lLionXSkKIAogICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21Nb2R1bGVfX2ZhdWx0eV9sb2FkX3Rlc3RzKHNlbGYpOgogICAgICAgICBtID0gdHlwZXMuTW9kdWxlVHlwZSgnbScpCkBAIC0xODQsNiArMzQzLDEzIEBACiAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN1aXRlLCB1bml0dGVzdC5UZXN0U3VpdGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VpdGUuY291bnRUZXN0Q2FzZXMoKSwgMSkKKyAgICAgICAgIyBFcnJvcnMgbG9hZGluZyB0aGUgc3VpdGUgYXJlIGFsc28gY2FwdHVyZWQgZm9yIGludHJvc3BlY3Rpb24uCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoW10sIGxvYWRlci5lcnJvcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGxvYWRlci5lcnJvcnMpKQorICAgICAgICBlcnJvciA9IGxvYWRlci5lcnJvcnNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAgJ0ZhaWxlZCB0byBjYWxsIGxvYWRfdGVzdHM6JyBpbiBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKICAgICAgICAgdGVzdCA9IGxpc3Qoc3VpdGUpWzBdCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICJzb21lIGZhaWx1cmUiLCB0ZXN0Lm0pCkBAIC0yMTksMTUgKzM4NSwxNSBAQAogICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21OYW1lX19tYWxmb3JtZWRfbmFtZShzZWxmKToKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKLSAgICAgICAgIyBYWFggU2hvdWxkIHRoaXMgcmFpc2UgVmFsdWVFcnJvciBvciBJbXBvcnRFcnJvcj8KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdhYmMgKCkgLy8nKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ2FiYyAoKSAvLycpCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIHN1aXRlKQorICAgICAgICBleHBlY3RlZCA9ICJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgKCkgLy8iCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyBcKFwpIC8vIgorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgSW1wb3J0RXJyb3IsIGV4cGVjdGVkX3JlZ2V4LCBnZXRhdHRyKHRlc3QsICdhYmMgKCkgLy8nKSkKIAogICAgICMgIlRoZSBzcGVjaWZpZXIgbmFtZSBpcyBhIGBgZG90dGVkIG5hbWUnJyB0aGF0IG1heSByZXNvbHZlIC4uLiB0byBhCiAgICAgIyBtb2R1bGUiCkBAIC0yMzYsMjggKzQwMiw0NyBAQAogICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21OYW1lX191bmtub3duX21vZHVsZV9uYW1lKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ3NkYXNmYXNmYXNkZicpCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJObyBtb2R1bGUgbmFtZWQgJ3NkYXNmYXNmYXNkZiciKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lIGZhaWxlZCB0byByYWlzZSBJbXBvcnRFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdzZGFzZmFzZmFzZGYnKQorICAgICAgICBleHBlY3RlZCA9ICJObyBtb2R1bGUgbmFtZWQgJ3NkYXNmYXNmYXNkZiciCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIHN1aXRlKQorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEltcG9ydEVycm9yLCBleHBlY3RlZCwgdGVzdC5zZGFzZmFzZmFzZGYpCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSBlaXRoZXIgdG8KICAgICAjIGEgbW9kdWxlLCBhIHRlc3QgY2FzZSBjbGFzcywgYSBUZXN0U3VpdGUgaW5zdGFuY2UsIGEgdGVzdCBtZXRob2QKICAgICAjIHdpdGhpbiBhIHRlc3QgY2FzZSBjbGFzcywgb3IgYSBjYWxsYWJsZSBvYmplY3Qgd2hpY2ggcmV0dXJucyBhCiAgICAgIyBUZXN0Q2FzZSBvciBUZXN0U3VpdGUgaW5zdGFuY2UuIgogICAgICMKLSAgICAjIFdoYXQgaGFwcGVucyB3aGVuIHRoZSBtb2R1bGUgaXMgZm91bmQsIGJ1dCB0aGUgYXR0cmlidXRlIGNhbid0PwotICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21OYW1lX191bmtub3duX2F0dHJfbmFtZShzZWxmKToKKyAgICAjIFdoYXQgaGFwcGVucyB3aGVuIHRoZSBtb2R1bGUgaXMgZm91bmQsIGJ1dCB0aGUgYXR0cmlidXRlIGlzbid0PworICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21OYW1lX191bmtub3duX2F0dHJfbmFtZV9vbl9tb2R1bGUoc2VsZik6CiAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgndW5pdHRlc3Quc2Rhc2Zhc2Zhc2RmJykKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIidtb2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSBmYWlsZWQgdG8gcmFpc2UgQXR0cmlidXRlRXJyb3IiKQorICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgndW5pdHRlc3QubG9hZGVyLnNkYXNmYXNmYXNkZicpCisgICAgICAgIGV4cGVjdGVkID0gIm1vZHVsZSAndW5pdHRlc3QubG9hZGVyJyBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIgorICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBzdWl0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgZXhwZWN0ZWQsIHRlc3Quc2Rhc2Zhc2Zhc2RmKQorCisgICAgIyAiVGhlIHNwZWNpZmllciBuYW1lIGlzIGEgYGBkb3R0ZWQgbmFtZScnIHRoYXQgbWF5IHJlc29sdmUgZWl0aGVyIHRvCisgICAgIyBhIG1vZHVsZSwgYSB0ZXN0IGNhc2UgY2xhc3MsIGEgVGVzdFN1aXRlIGluc3RhbmNlLCBhIHRlc3QgbWV0aG9kCisgICAgIyB3aXRoaW4gYSB0ZXN0IGNhc2UgY2xhc3MsIG9yIGEgY2FsbGFibGUgb2JqZWN0IHdoaWNoIHJldHVybnMgYQorICAgICMgVGVzdENhc2Ugb3IgVGVzdFN1aXRlIGluc3RhbmNlLiIKKyAgICAjCisgICAgIyBXaGF0IGhhcHBlbnMgd2hlbiB0aGUgbW9kdWxlIGlzIGZvdW5kLCBidXQgdGhlIGF0dHJpYnV0ZSBpc24ndD8KKyAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTmFtZV9fdW5rbm93bl9hdHRyX25hbWVfb25fcGFja2FnZShzZWxmKToKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ3VuaXR0ZXN0LnNkYXNmYXNmYXNkZicpCisgICAgICAgIGV4cGVjdGVkID0gIk5vIG1vZHVsZSBuYW1lZCAndW5pdHRlc3Quc2Rhc2Zhc2Zhc2RmJyIKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW1wb3J0RXJyb3IsIGV4cGVjdGVkLCB0ZXN0LnNkYXNmYXNmYXNkZikKIAogICAgICMgIlRoZSBzcGVjaWZpZXIgbmFtZSBpcyBhIGBgZG90dGVkIG5hbWUnJyB0aGF0IG1heSByZXNvbHZlIGVpdGhlciB0bwogICAgICMgYSBtb2R1bGUsIGEgdGVzdCBjYXNlIGNsYXNzLCBhIFRlc3RTdWl0ZSBpbnN0YW5jZSwgYSB0ZXN0IG1ldGhvZApAQCAtMjY5LDEyICs0NTQsMTMgQEAKICAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTmFtZV9fcmVsYXRpdmVfdW5rbm93bl9uYW1lKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ3NkYXNmYXNmYXNkZicsIHVuaXR0ZXN0KQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAiJ21vZHVsZScgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ3NkYXNmYXNmYXNkZiciKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lIGZhaWxlZCB0byByYWlzZSBBdHRyaWJ1dGVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdzZGFzZmFzZmFzZGYnLCB1bml0dGVzdCkKKyAgICAgICAgZXhwZWN0ZWQgPSAibW9kdWxlICd1bml0dGVzdCcgaGFzIG5vIGF0dHJpYnV0ZSAnc2Rhc2Zhc2Zhc2RmJyIKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsIGV4cGVjdGVkLCB0ZXN0LnNkYXNmYXNmYXNkZikKIAogICAgICMgIlRoZSBzcGVjaWZpZXIgbmFtZSBpcyBhIGBgZG90dGVkIG5hbWUnJyB0aGF0IG1heSByZXNvbHZlIGVpdGhlciB0bwogICAgICMgYSBtb2R1bGUsIGEgdGVzdCBjYXNlIGNsYXNzLCBhIFRlc3RTdWl0ZSBpbnN0YW5jZSwgYSB0ZXN0IG1ldGhvZApAQCAtMjkwLDEyICs0NzYsMTMgQEAKICAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTmFtZV9fcmVsYXRpdmVfZW1wdHlfbmFtZShzZWxmKToKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCcnLCB1bml0dGVzdCkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIkZhaWxlZCB0byByYWlzZSBBdHRyaWJ1dGVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCcnLCB1bml0dGVzdCkKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCisgICAgICAgIGV4cGVjdGVkID0gImhhcyBubyBhdHRyaWJ1dGUgJyciCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsIGV4cGVjdGVkLCBnZXRhdHRyKHRlc3QsICcnKSkKIAogICAgICMgIlRoZSBzcGVjaWZpZXIgbmFtZSBpcyBhIGBgZG90dGVkIG5hbWUnJyB0aGF0IG1heSByZXNvbHZlIGVpdGhlciB0bwogICAgICMgYSBtb2R1bGUsIGEgdGVzdCBjYXNlIGNsYXNzLCBhIFRlc3RTdWl0ZSBpbnN0YW5jZSwgYSB0ZXN0IG1ldGhvZApAQCAtMzEwLDE0ICs0OTcsMTUgQEAKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKICAgICAgICAgIyBYWFggU2hvdWxkIHRoaXMgcmFpc2UgQXR0cmlidXRlRXJyb3Igb3IgVmFsdWVFcnJvcj8KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdhYmMgKCkgLy8nLCB1bml0dGVzdCkKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdhYmMgKCkgLy8nLCB1bml0dGVzdCkKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCisgICAgICAgIGV4cGVjdGVkID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyAoKSAvLyciCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyBcKFwpIC8vJyIKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZF9yZWdleCwgZ2V0YXR0cih0ZXN0LCAnYWJjICgpIC8vJykpCiAKICAgICAjICJUaGUgbWV0aG9kIG9wdGlvbmFsbHkgcmVzb2x2ZXMgbmFtZSByZWxhdGl2ZSB0byB0aGUgZ2l2ZW4gbW9kdWxlIgogICAgICMKQEAgLTQyMywxMiArNjExLDEzIEBACiAgICAgICAgIG0udGVzdGNhc2VfMSA9IE15VGVzdENhc2UKIAogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCd0ZXN0Y2FzZV8xLnRlc3Rmb28nLCBtKQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAidHlwZSBvYmplY3QgJ015VGVzdENhc2UnIGhhcyBubyBhdHRyaWJ1dGUgJ3Rlc3Rmb28nIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiRmFpbGVkIHRvIHJhaXNlIEF0dHJpYnV0ZUVycm9yIikKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ3Rlc3RjYXNlXzEudGVzdGZvbycsIG0pCisgICAgICAgIGV4cGVjdGVkID0gInR5cGUgb2JqZWN0ICdNeVRlc3RDYXNlJyBoYXMgbm8gYXR0cmlidXRlICd0ZXN0Zm9vJyIKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsIGV4cGVjdGVkLCB0ZXN0LnRlc3Rmb28pCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSAuLi4gdG8KICAgICAjIC4uLiBhIGNhbGxhYmxlIG9iamVjdCB3aGljaCByZXR1cm5zIGEgLi4uIFRlc3RTdWl0ZSBpbnN0YW5jZSIKQEAgLTU0Niw2ICs3MzUsMjMgQEAKICAgICAjIyMgVGVzdHMgZm9yIFRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKCkKICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKKyAgICBkZWYgY2hlY2tfZGVmZXJyZWRfZXJyb3Ioc2VsZiwgbG9hZGVyLCBzdWl0ZSk6CisgICAgICAgICIiIkhlbHBlciBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgdGhhdCBlcnJvcnMgaW4gbG9hZGluZyBhcmUgcmVwb3J0ZWQuCisKKyAgICAgICAgOnBhcmFtIGxvYWRlcjogQSBsb2FkZXIgd2l0aCBzb21lIGVycm9ycy4KKyAgICAgICAgOnBhcmFtIHN1aXRlOiBBIHN1aXRlIHRoYXQgc2hvdWxkIGhhdmUgYSBsYXRlIGJvdW5kIGVycm9yLgorICAgICAgICA6cmV0dXJuOiBUaGUgZmlyc3QgZXJyb3IgbWVzc2FnZSBmcm9tIHRoZSBsb2FkZXIgYW5kIHRoZSB0ZXN0IG9iamVjdAorICAgICAgICAgICAgZnJvbSB0aGUgc3VpdGUuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3VpdGUsIHVuaXR0ZXN0LlRlc3RTdWl0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWl0ZS5jb3VudFRlc3RDYXNlcygpLCAxKQorICAgICAgICAjIEVycm9ycyBsb2FkaW5nIHRoZSBzdWl0ZSBhcmUgYWxzbyBjYXB0dXJlZCBmb3IgaW50cm9zcGVjdGlvbi4KKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChbXSwgbG9hZGVyLmVycm9ycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obG9hZGVyLmVycm9ycykpCisgICAgICAgIGVycm9yID0gbG9hZGVyLmVycm9yc1swXQorICAgICAgICB0ZXN0ID0gbGlzdChzdWl0ZSlbMF0KKyAgICAgICAgcmV0dXJuIGVycm9yLCB0ZXN0CisKICAgICAjICJTaW1pbGFyIHRvIGxvYWRUZXN0c0Zyb21OYW1lKCksIGJ1dCB0YWtlcyBhIHNlcXVlbmNlIG9mIG5hbWVzIHJhdGhlcgogICAgICMgdGhhbiBhIHNpbmdsZSBuYW1lLiIKICAgICAjCkBAIC01OTgsMTQgKzgwNCwxNSBAQAogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAogICAgICAgICAjIFhYWCBTaG91bGQgdGhpcyByYWlzZSBWYWx1ZUVycm9yIG9yIEltcG9ydEVycm9yPwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnYWJjICgpIC8vJ10pCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIlRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnYWJjICgpIC8vJ10pCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIGxpc3Qoc3VpdGUpWzBdKQorICAgICAgICBleHBlY3RlZCA9ICJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgKCkgLy8iCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyBcKFwpIC8vIgorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsICBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIEltcG9ydEVycm9yLCBleHBlY3RlZF9yZWdleCwgZ2V0YXR0cih0ZXN0LCAnYWJjICgpIC8vJykpCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSBlaXRoZXIgdG8KICAgICAjIGEgbW9kdWxlLCBhIHRlc3QgY2FzZSBjbGFzcywgYSBUZXN0U3VpdGUgaW5zdGFuY2UsIGEgdGVzdCBtZXRob2QKQEAgLTYxNiwxMiArODIzLDEzIEBACiAgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU5hbWVzX191bmtub3duX21vZHVsZV9uYW1lKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnc2Rhc2Zhc2Zhc2RmJ10pCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJObyBtb2R1bGUgbmFtZWQgJ3NkYXNmYXNmYXNkZiciKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyBmYWlsZWQgdG8gcmFpc2UgSW1wb3J0RXJyb3IiKQorICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWydzZGFzZmFzZmFzZGYnXSkKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgbGlzdChzdWl0ZSlbMF0pCisgICAgICAgIGV4cGVjdGVkID0gIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IHNkYXNmYXNmYXNkZiIKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbXBvcnRFcnJvciwgZXhwZWN0ZWQsIHRlc3Quc2Rhc2Zhc2Zhc2RmKQogCiAgICAgIyAiVGhlIHNwZWNpZmllciBuYW1lIGlzIGEgYGBkb3R0ZWQgbmFtZScnIHRoYXQgbWF5IHJlc29sdmUgZWl0aGVyIHRvCiAgICAgIyBhIG1vZHVsZSwgYSB0ZXN0IGNhc2UgY2xhc3MsIGEgVGVzdFN1aXRlIGluc3RhbmNlLCBhIHRlc3QgbWV0aG9kCkBAIC02MzIsMTIgKzg0MCwxNCBAQAogICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21OYW1lc19fdW5rbm93bl9hdHRyX25hbWUoc2VsZik6CiAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWyd1bml0dGVzdC5zZGFzZmFzZmFzZGYnLCAndW5pdHRlc3QnXSkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIidtb2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMgZmFpbGVkIHRvIHJhaXNlIEF0dHJpYnV0ZUVycm9yIikKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKAorICAgICAgICAgICAgWyd1bml0dGVzdC5sb2FkZXIuc2Rhc2Zhc2Zhc2RmJywgJ3VuaXR0ZXN0LnRlc3QuZHVtbXknXSkKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgbGlzdChzdWl0ZSlbMF0pCisgICAgICAgIGV4cGVjdGVkID0gIm1vZHVsZSAndW5pdHRlc3QubG9hZGVyJyBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIgorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZCwgdGVzdC5zZGFzZmFzZmFzZGYpCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSBlaXRoZXIgdG8KICAgICAjIGEgbW9kdWxlLCBhIHRlc3QgY2FzZSBjbGFzcywgYSBUZXN0U3VpdGUgaW5zdGFuY2UsIGEgdGVzdCBtZXRob2QKQEAgLTY1MSwxMiArODYxLDEzIEBACiAgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU5hbWVzX191bmtub3duX25hbWVfcmVsYXRpdmVfMShzZWxmKToKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ3NkYXNmYXNmYXNkZiddLCB1bml0dGVzdCkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIidtb2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSBmYWlsZWQgdG8gcmFpc2UgQXR0cmlidXRlRXJyb3IiKQorICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWydzZGFzZmFzZmFzZGYnXSwgdW5pdHRlc3QpCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIGxpc3Qoc3VpdGUpWzBdKQorICAgICAgICBleHBlY3RlZCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIgorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZCwgdGVzdC5zZGFzZmFzZmFzZGYpCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSBlaXRoZXIgdG8KICAgICAjIGEgbW9kdWxlLCBhIHRlc3QgY2FzZSBjbGFzcywgYSBUZXN0U3VpdGUgaW5zdGFuY2UsIGEgdGVzdCBtZXRob2QKQEAgLTY3MCwxMiArODgxLDEzIEBACiAgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU5hbWVzX191bmtub3duX25hbWVfcmVsYXRpdmVfMihzZWxmKToKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ1Rlc3RDYXNlJywgJ3NkYXNmYXNmYXNkZiddLCB1bml0dGVzdCkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIidtb2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSBmYWlsZWQgdG8gcmFpc2UgQXR0cmlidXRlRXJyb3IiKQorICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWydUZXN0Q2FzZScsICdzZGFzZmFzZmFzZGYnXSwgdW5pdHRlc3QpCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIGxpc3Qoc3VpdGUpWzFdKQorICAgICAgICBleHBlY3RlZCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIgorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZCwgdGVzdC5zZGFzZmFzZmFzZGYpCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSBlaXRoZXIgdG8KICAgICAjIGEgbW9kdWxlLCBhIHRlc3QgY2FzZSBjbGFzcywgYSBUZXN0U3VpdGUgaW5zdGFuY2UsIGEgdGVzdCBtZXRob2QKQEAgLTY5MSwxMiArOTAzLDEzIEBACiAgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU5hbWVzX19yZWxhdGl2ZV9lbXB0eV9uYW1lKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnJ10sIHVuaXR0ZXN0KQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIkZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnJ10sIHVuaXR0ZXN0KQorICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBsaXN0KHN1aXRlKVswXSkKKyAgICAgICAgZXhwZWN0ZWQgPSAiaGFzIG5vIGF0dHJpYnV0ZSAnJyIKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgZXhwZWN0ZWQsIGdldGF0dHIodGVzdCwgJycpKQogCiAgICAgIyAiVGhlIHNwZWNpZmllciBuYW1lIGlzIGEgYGBkb3R0ZWQgbmFtZScnIHRoYXQgbWF5IHJlc29sdmUgZWl0aGVyIHRvCiAgICAgIyBhIG1vZHVsZSwgYSB0ZXN0IGNhc2UgY2xhc3MsIGEgVGVzdFN1aXRlIGluc3RhbmNlLCBhIHRlc3QgbWV0aG9kCkBAIC03MTAsMTQgKzkyMywxNSBAQAogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAogICAgICAgICAjIFhYWCBTaG91bGQgdGhpcyByYWlzZSBBdHRyaWJ1dGVFcnJvciBvciBWYWx1ZUVycm9yPwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnYWJjICgpIC8vJ10sIHVuaXR0ZXN0KQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ2FiYyAoKSAvLyddLCB1bml0dGVzdCkKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgbGlzdChzdWl0ZSlbMF0pCisgICAgICAgIGV4cGVjdGVkID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyAoKSAvLyciCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyBcKFwpIC8vJyIKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZF9yZWdleCwgZ2V0YXR0cih0ZXN0LCAnYWJjICgpIC8vJykpCiAKICAgICAjICJUaGUgbWV0aG9kIG9wdGlvbmFsbHkgcmVzb2x2ZXMgbmFtZSByZWxhdGl2ZSB0byB0aGUgZ2l2ZW4gbW9kdWxlIgogICAgICMKQEAgLTgzNSwxMiArMTA0OSwxMyBAQAogICAgICAgICBtLnRlc3RjYXNlXzEgPSBNeVRlc3RDYXNlCiAKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWyd0ZXN0Y2FzZV8xLnRlc3Rmb28nXSwgbSkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgInR5cGUgb2JqZWN0ICdNeVRlc3RDYXNlJyBoYXMgbm8gYXR0cmlidXRlICd0ZXN0Zm9vJyIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIkZhaWxlZCB0byByYWlzZSBBdHRyaWJ1dGVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ3Rlc3RjYXNlXzEudGVzdGZvbyddLCBtKQorICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBsaXN0KHN1aXRlKVswXSkKKyAgICAgICAgZXhwZWN0ZWQgPSAidHlwZSBvYmplY3QgJ015VGVzdENhc2UnIGhhcyBubyBhdHRyaWJ1dGUgJ3Rlc3Rmb28nIgorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZCwgdGVzdC50ZXN0Zm9vKQogCiAgICAgIyAiVGhlIHNwZWNpZmllciBuYW1lIGlzIGEgYGBkb3R0ZWQgbmFtZScnIHRoYXQgbWF5IHJlc29sdmUgLi4uIHRvCiAgICAgIyAuLi4gYSBjYWxsYWJsZSBvYmplY3Qgd2hpY2ggcmV0dXJucyBhIC4uLiBUZXN0U3VpdGUgaW5zdGFuY2UiCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Byb2dyYW0ucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Byb2dyYW0ucHkKaW5kZXggNzI1ZDY3Zi4uMWNmYzE3OSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9wcm9ncmFtLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcHJvZ3JhbS5weQpAQCAtMTM0LDYgKzEzNCw3IEBACiAgICAgcmVzdWx0ID0gTm9uZQogICAgIHZlcmJvc2l0eSA9IDEKICAgICBkZWZhdWx0VGVzdCA9IE5vbmUKKyAgICB0Yl9sb2NhbHMgPSBGYWxzZQogICAgIHRlc3RSdW5uZXIgPSBOb25lCiAgICAgdGVzdExvYWRlciA9IHVuaXR0ZXN0LmRlZmF1bHRUZXN0TG9hZGVyCiAgICAgbW9kdWxlID0gJ19fbWFpbl9fJwpAQCAtMTQ3LDE4ICsxNDgsMTkgQEAKIGNsYXNzIEZha2VSdW5uZXIob2JqZWN0KToKICAgICBpbml0QXJncyA9IE5vbmUKICAgICB0ZXN0ID0gTm9uZQotICAgIHJhaXNlRXJyb3IgPSBGYWxzZQorICAgIHJhaXNlRXJyb3IgPSAwCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgogICAgICAgICBGYWtlUnVubmVyLmluaXRBcmdzID0ga3dhcmdzCiAgICAgICAgIGlmIEZha2VSdW5uZXIucmFpc2VFcnJvcjoKLSAgICAgICAgICAgIEZha2VSdW5uZXIucmFpc2VFcnJvciA9IEZhbHNlCisgICAgICAgICAgICBGYWtlUnVubmVyLnJhaXNlRXJyb3IgLT0gMQogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yCiAKICAgICBkZWYgcnVuKHNlbGYsIHRlc3QpOgogICAgICAgICBGYWtlUnVubmVyLnRlc3QgPSB0ZXN0CiAgICAgICAgIHJldHVybiBSRVNVTFQKIAorCiBjbGFzcyBUZXN0Q29tbWFuZExpbmVBcmdzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTE2Niw3ICsxNjgsNyBAQAogICAgICAgICBzZWxmLnByb2dyYW0uY3JlYXRlVGVzdHMgPSBsYW1iZGE6IE5vbmUKICAgICAgICAgRmFrZVJ1bm5lci5pbml0QXJncyA9IE5vbmUKICAgICAgICAgRmFrZVJ1bm5lci50ZXN0ID0gTm9uZQotICAgICAgICBGYWtlUnVubmVyLnJhaXNlRXJyb3IgPSBGYWxzZQorICAgICAgICBGYWtlUnVubmVyLnJhaXNlRXJyb3IgPSAwCiAKICAgICBkZWYgdGVzdFZlcmJvc2l0eShzZWxmKToKICAgICAgICAgcHJvZ3JhbSA9IHNlbGYucHJvZ3JhbQpAQCAtMjU2LDYgKzI1OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFrZVJ1bm5lci5pbml0QXJncywgeyd2ZXJib3NpdHknOiAndmVyYm9zaXR5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWlsZmFzdCc6ICdmYWlsZmFzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnVmZmVyJzogJ2J1ZmZlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGJfbG9jYWxzJzogRmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2FybmluZ3MnOiAnd2FybmluZ3MnfSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWtlUnVubmVyLnRlc3QsICd0ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnRJcyhwcm9ncmFtLnJlc3VsdCwgUkVTVUxUKQpAQCAtMjc0LDEwICsyNzcsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWtlUnVubmVyLnRlc3QsICd0ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnRJcyhwcm9ncmFtLnJlc3VsdCwgUkVTVUxUKQogCisgICAgZGVmIHRlc3RfbG9jYWxzKHNlbGYpOgorICAgICAgICBwcm9ncmFtID0gc2VsZi5wcm9ncmFtCisKKyAgICAgICAgcHJvZ3JhbS50ZXN0UnVubmVyID0gRmFrZVJ1bm5lcgorICAgICAgICBwcm9ncmFtLnBhcnNlQXJncyhbTm9uZSwgJy0tbG9jYWxzJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgcHJvZ3JhbS50Yl9sb2NhbHMpCisgICAgICAgIHByb2dyYW0ucnVuVGVzdHMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZha2VSdW5uZXIuaW5pdEFyZ3MsIHsnYnVmZmVyJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWlsZmFzdCc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGJfbG9jYWxzJzogVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2l0eSc6IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3YXJuaW5ncyc6IE5vbmV9KQorCiAgICAgZGVmIHRlc3RSdW5UZXN0c09sZFJ1bm5lckNsYXNzKHNlbGYpOgogICAgICAgICBwcm9ncmFtID0gc2VsZi5wcm9ncmFtCiAKLSAgICAgICAgRmFrZVJ1bm5lci5yYWlzZUVycm9yID0gVHJ1ZQorICAgICAgICAjIFR3byBUeXBlRXJyb3JzIGFyZSBuZWVkZWQgdG8gZmFsbCBhbGwgdGhlIHdheSBiYWNrIHRvIG9sZC1zdHlsZQorICAgICAgICAjIHJ1bm5lcnMgLSBvbmUgdG8gZmFpbCB0Yl9sb2NhbHMsIG9uZSB0byBmYWlsIGJ1ZmZlciBldGMuCisgICAgICAgIEZha2VSdW5uZXIucmFpc2VFcnJvciA9IDIKICAgICAgICAgcHJvZ3JhbS50ZXN0UnVubmVyID0gRmFrZVJ1bm5lcgogICAgICAgICBwcm9ncmFtLnZlcmJvc2l0eSA9ICd2ZXJib3NpdHknCiAgICAgICAgIHByb2dyYW0uZmFpbGZhc3QgPSAnZmFpbGZhc3QnCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Jlc3VsdC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcmVzdWx0LnB5CmluZGV4IDQ4OWZlMTcuLmUzOWUyZWEgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcmVzdWx0LnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcmVzdWx0LnB5CkBAIC04LDYgKzgsMjAgQEAKIGltcG9ydCB1bml0dGVzdAogCiAKK2NsYXNzIE1vY2tUcmFjZWJhY2sob2JqZWN0KToKKyAgICBjbGFzcyBUcmFjZWJhY2tFeGNlcHRpb246CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgc2VsZi5jYXB0dXJlX2xvY2FscyA9IGt3YXJncy5nZXQoJ2NhcHR1cmVfbG9jYWxzJywgRmFsc2UpCisgICAgICAgIGRlZiBmb3JtYXQoc2VsZik6CisgICAgICAgICAgICByZXN1bHQgPSBbJ0EgdHJhY2ViYWNrJ10KKyAgICAgICAgICAgIGlmIHNlbGYuY2FwdHVyZV9sb2NhbHM6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnbG9jYWxzJykKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworZGVmIHJlc3RvcmVfdHJhY2ViYWNrKCk6CisgICAgdW5pdHRlc3QucmVzdWx0LnRyYWNlYmFjayA9IHRyYWNlYmFjaworCisKIGNsYXNzIFRlc3RfVGVzdFJlc3VsdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBOb3RlOiB0aGVyZSBhcmUgbm90IHNlcGFyYXRlIHRlc3RzIGZvciBUZXN0UmVzdWx0Lndhc1N1Y2Nlc3NmdWwoKSwKICAgICAjIFRlc3RSZXN1bHQuZXJyb3JzLCBUZXN0UmVzdWx0LmZhaWx1cmVzLCBUZXN0UmVzdWx0LnRlc3RzUnVuIG9yCkBAIC0yMjcsNiArMjQxLDI1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXModGVzdF9jYXNlLCB0ZXN0KQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZm9ybWF0dGVkX2V4Yywgc3RyKQogCisgICAgZGVmIHRlc3RfYWRkRXJyb3JfbG9jYWxzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28odW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgZGVmIHRlc3RfMShzZWxmKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICB0ZXN0ID0gRm9vKCd0ZXN0XzEnKQorICAgICAgICByZXN1bHQgPSB1bml0dGVzdC5UZXN0UmVzdWx0KCkKKyAgICAgICAgcmVzdWx0LnRiX2xvY2FscyA9IFRydWUKKworICAgICAgICB1bml0dGVzdC5yZXN1bHQudHJhY2ViYWNrID0gTW9ja1RyYWNlYmFjaworICAgICAgICBzZWxmLmFkZENsZWFudXAocmVzdG9yZV90cmFjZWJhY2spCisgICAgICAgIHJlc3VsdC5zdGFydFRlc3RSdW4oKQorICAgICAgICB0ZXN0LnJ1bihyZXN1bHQpCisgICAgICAgIHJlc3VsdC5zdG9wVGVzdFJ1bigpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0LmVycm9ycyksIDEpCisgICAgICAgIHRlc3RfY2FzZSwgZm9ybWF0dGVkX2V4YyA9IHJlc3VsdC5lcnJvcnNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQSB0cmFjZWJhY2tsb2NhbHMnLCBmb3JtYXR0ZWRfZXhjKQorCiAgICAgZGVmIHRlc3RfYWRkU3ViVGVzdChzZWxmKToKICAgICAgICAgY2xhc3MgRm9vKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIGRlZiB0ZXN0XzEoc2VsZik6CkBAIC0zOTgsNiArNDMxLDcgQEAKICAgICBzZWxmLnRlc3RzUnVuID0gMAogICAgIHNlbGYuc2hvdWxkU3RvcCA9IEZhbHNlCiAgICAgc2VsZi5idWZmZXIgPSBGYWxzZQorICAgIHNlbGYudGJfbG9jYWxzID0gRmFsc2UKIAogY2xhc3NEaWN0WydfX2luaXRfXyddID0gX19pbml0X18KIE9sZFJlc3VsdCA9IHR5cGUoJ09sZFJlc3VsdCcsIChvYmplY3QsKSwgY2xhc3NEaWN0KQpAQCAtNDU0LDE1ICs0ODgsNiBAQAogICAgICAgICBydW5uZXIucnVuKFRlc3QoJ3Rlc3RGb28nKSkKIAogCi1jbGFzcyBNb2NrVHJhY2ViYWNrKG9iamVjdCk6Ci0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBmb3JtYXRfZXhjZXB0aW9uKCpfKToKLSAgICAgICAgcmV0dXJuIFsnQSB0cmFjZWJhY2snXQotCi1kZWYgcmVzdG9yZV90cmFjZWJhY2soKToKLSAgICB1bml0dGVzdC5yZXN1bHQudHJhY2ViYWNrID0gdHJhY2ViYWNrCi0KLQogY2xhc3MgVGVzdE91dHB1dEJ1ZmZlcmluZyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3J1bm5lci5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcnVubmVyLnB5CmluZGV4IDdjMGJkNTEuLjljYmMyNjAgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcnVubmVyLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcnVubmVyLnB5CkBAIC0xNTgsNyArMTU4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5uZXIud2FybmluZ3MsIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShydW5uZXIuZGVzY3JpcHRpb25zKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bm5lci5yZXN1bHRjbGFzcywgdW5pdHRlc3QuVGV4dFRlc3RSZXN1bHQpCi0KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShydW5uZXIudGJfbG9jYWxzKQogCiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfaW5oZXJpdGFuY2Uoc2VsZik6CiAgICAgICAgIGNsYXNzIEFSZXN1bHQodW5pdHRlc3QuVGVzdFJlc3VsdCk6CkBAIC0xNzIsMTQgKzE3MiwxMyBAQAogICAgICAgICAjIG9uIGFyZ3VtZW50cyBpbiBpdHMgX19pbml0X18gc3VwZXIgY2FsbAogICAgICAgICBBVGV4dFJlc3VsdChOb25lLCBOb25lLCAxKQogCi0KICAgICBkZWYgdGVzdEJ1ZmZlckFuZEZhaWxmYXN0KHNlbGYpOgogICAgICAgICBjbGFzcyBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIGRlZiB0ZXN0Rm9vKHNlbGYpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgcmVzdWx0ID0gdW5pdHRlc3QuVGVzdFJlc3VsdCgpCiAgICAgICAgIHJ1bm5lciA9IHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyKHN0cmVhbT1pby5TdHJpbmdJTygpLCBmYWlsZmFzdD1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcj1UcnVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXI9VHJ1ZSkKICAgICAgICAgIyBVc2Ugb3VyIHJlc3VsdCBvYmplY3QKICAgICAgICAgcnVubmVyLl9tYWtlUmVzdWx0ID0gbGFtYmRhOiByZXN1bHQKICAgICAgICAgcnVubmVyLnJ1bihUZXN0KCd0ZXN0Rm9vJykpCkBAIC0xODcsNiArMTg2LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXN1bHQuZmFpbGZhc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXN1bHQuYnVmZmVyKQogCisgICAgZGVmIHRlc3RfbG9jYWxzKHNlbGYpOgorICAgICAgICBydW5uZXIgPSB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcihzdHJlYW09aW8uU3RyaW5nSU8oKSwgdGJfbG9jYWxzPVRydWUpCisgICAgICAgIHJlc3VsdCA9IHJ1bm5lci5ydW4odW5pdHRlc3QuVGVzdFN1aXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgcmVzdWx0LnRiX2xvY2FscykKKwogICAgIGRlZiB0ZXN0UnVubmVyUmVnaXN0ZXJzUmVzdWx0KHNlbGYpOgogICAgICAgICBjbGFzcyBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIGRlZiB0ZXN0Rm9vKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9zZXR1cHMucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3NldHVwcy5weQppbmRleCAzOTJmOTVlLi4yZGY3MDNlIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3NldHVwcy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3NldHVwcy5weQpAQCAtMTExLDcgKzExMSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdC5lcnJvcnMpLCAxKQogICAgICAgICBlcnJvciwgXyA9IHJlc3VsdC5lcnJvcnNbMF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXJyb3IpLAotICAgICAgICAgICAgICAgICAgICAnc2V0VXBDbGFzcyAoJXMuQnJva2VuVGVzdCknICUgX19uYW1lX18pCisgICAgICAgICAgICAgICAgICAgICdzZXRVcENsYXNzICglcy4lcyknICUgKF9fbmFtZV9fLCBCcm9rZW5UZXN0Ll9fcXVhbG5hbWVfXykpCiAKICAgICBkZWYgdGVzdF9lcnJvcl9pbl90ZWFyZG93bl9jbGFzcyhzZWxmKToKICAgICAgICAgY2xhc3MgVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xNDQsNyArMTQ0LDcgQEAKIAogICAgICAgICBlcnJvciwgXyA9IHJlc3VsdC5lcnJvcnNbMF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXJyb3IpLAotICAgICAgICAgICAgICAgICAgICAndGVhckRvd25DbGFzcyAoJXMuVGVzdCknICUgX19uYW1lX18pCisgICAgICAgICAgICAgICAgICAgICd0ZWFyRG93bkNsYXNzICglcy4lcyknICUgKF9fbmFtZV9fLCBUZXN0Ll9fcXVhbG5hbWVfXykpCiAKICAgICBkZWYgdGVzdF9jbGFzc19ub3RfdG9ybmRvd25fd2hlbl9zZXR1cF9mYWlscyhzZWxmKToKICAgICAgICAgY2xhc3MgVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC00MTQsNyArNDE0LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0LmVycm9ycyksIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdC5za2lwcGVkKSwgMSkKICAgICAgICAgc2tpcHBlZCA9IHJlc3VsdC5za2lwcGVkWzBdWzBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNraXBwZWQpLCAnc2V0VXBDbGFzcyAoJXMuVGVzdCknICUgX19uYW1lX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNraXBwZWQpLAorICAgICAgICAgICAgICAgICAgICAnc2V0VXBDbGFzcyAoJXMuJXMpJyAlIChfX25hbWVfXywgVGVzdC5fX3F1YWxuYW1lX18pKQogCiAgICAgZGVmIHRlc3Rfc2tpcHRlc3RfaW5fc2V0dXBtb2R1bGUoc2VsZik6CiAgICAgICAgIGNsYXNzIFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkKaW5kZXggZTA1YzZlMC4uYmI5Yjk1NiAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bWFnaWNtZXRob2RzLnB5CkBAIC00MjQsNiArNDI0LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtKSwgW10pCiAKIAorICAgIGRlZiB0ZXN0X21hdG11bChzZWxmKToKKyAgICAgICAgbSA9IE1hZ2ljTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtIEAgMSwgTWFnaWNNb2NrKQorICAgICAgICBtLl9fbWF0bXVsX18ucmV0dXJuX3ZhbHVlID0gNDIKKyAgICAgICAgbS5fX3JtYXRtdWxfXy5yZXR1cm5fdmFsdWUgPSA2NjYKKyAgICAgICAgbS5fX2ltYXRtdWxfXy5yZXR1cm5fdmFsdWUgPSAyNAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0gQCAxLCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxIEAgbSwgNjY2KQorICAgICAgICBtIEA9IDI0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgMjQpCisKICAgICBkZWYgdGVzdF9kaXZtb2RfYW5kX3JkaXZtb2Qoc2VsZik6CiAgICAgICAgIG0gPSBNYWdpY01vY2soKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGl2bW9kKDUsIG0pLCBNYWdpY01vY2spCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5CmluZGV4IGNmMTY3M2MuLjJhNjA2OWYgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5CkBAIC0xNzQsNiArMTc0LDE1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW21vY2soKSwgbW9jaygpLCBtb2NrKCldLCBbMywgMiwgMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsYWJsZSBzaWRlIGVmZmVjdCBub3QgdXNlZCBjb3JyZWN0bHkiKQogCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfc2lkZV9lZmZlY3RfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICAjIFRlc3QgZm9yIGlzc3VlIDIzNjYxCisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhmKQorICAgICAgICBtb2NrLnNpZGVfZWZmZWN0ID0gVmFsdWVFcnJvcignQmF6aW5nYSEnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdCYXppbmdhIScsIG1vY2spCisKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcygnamF2YScgaW4gc3lzLnBsYXRmb3JtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyB0ZXN0IG9ubHkgYXBwbGllcyB0byBKeXRob24nKQogICAgIGRlZiB0ZXN0X2phdmFfZXhjZXB0aW9uX3NpZGVfZWZmZWN0KHNlbGYpOgpAQCAtMTE5NCw2ICsxMjAzLDQyIEBACiAgICAgICAgIG0gPSBtb2NrLmNyZWF0ZV9hdXRvc3BlYyhvYmplY3QoKSwgbmFtZT0nc3dlZXRfZnVuYycpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3N3ZWV0X2Z1bmMnLCByZXByKG0pKQogCisgICAgI0lzc3VlMjEyMzgKKyAgICBkZWYgdGVzdF9tb2NrX3Vuc2FmZShzZWxmKToKKyAgICAgICAgbSA9IE1vY2soKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIG0uYXNzZXJ0X2Zvb19jYWxsKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBtLmFzc3JldF9mb29fY2FsbCgpCisgICAgICAgIG0gPSBNb2NrKHVuc2FmZT1UcnVlKQorICAgICAgICBtLmFzc2VydF9mb29fY2FsbCgpCisgICAgICAgIG0uYXNzcmV0X2Zvb19jYWxsKCkKKworICAgICNJc3N1ZTIxMjYyCisgICAgZGVmIHRlc3RfYXNzZXJ0X25vdF9jYWxsZWQoc2VsZik6CisgICAgICAgIG0gPSBNb2NrKCkKKyAgICAgICAgbS5oZWxsby5hc3NlcnRfbm90X2NhbGxlZCgpCisgICAgICAgIG0uaGVsbG8oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIG0uaGVsbG8uYXNzZXJ0X25vdF9jYWxsZWQoKQorCisgICAgI0lzc3VlMjEyNTYgcHJpbnRvdXQgb2Yga2V5d29yZCBhcmdzIHNob3VsZCBiZSBpbiBkZXRlcm1pbmlzdGljIG9yZGVyCisgICAgZGVmIHRlc3Rfc29ydGVkX2NhbGxfc2lnbmF0dXJlKHNlbGYpOgorICAgICAgICBtID0gTW9jaygpCisgICAgICAgIG0uaGVsbG8obmFtZT0naGVsbG8nLCBkYWRkeT0naGVybycpCisgICAgICAgIHRleHQgPSAiY2FsbChkYWRkeT0naGVybycsIG5hbWU9J2hlbGxvJykiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtLmhlbGxvLmNhbGxfYXJncyksIHRleHQpCisKKyAgICAjSXNzdWUyMTI3MCBvdmVycmlkZXMgdHVwbGUgbWV0aG9kcyBmb3IgbW9jay5jYWxsIG9iamVjdHMKKyAgICBkZWYgdGVzdF9vdmVycmlkZV90dXBsZV9tZXRob2RzKHNlbGYpOgorICAgICAgICBjID0gY2FsbC5jb3VudCgpCisgICAgICAgIGkgPSBjYWxsLmluZGV4KDEzMiwnaGVsbG8nKQorICAgICAgICBtID0gTW9jaygpCisgICAgICAgIG0uY291bnQoKQorICAgICAgICBtLmluZGV4KDEzMiwiaGVsbG8iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubWV0aG9kX2NhbGxzWzBdLCBjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubWV0aG9kX2NhbGxzWzFdLCBpKQorCiAgICAgZGVmIHRlc3RfbW9ja19hZGRfc3BlYyhzZWxmKToKICAgICAgICAgY2xhc3MgX09uZShvYmplY3QpOgogICAgICAgICAgICAgb25lID0gMQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5CmluZGV4IGI1MTZmNDIuLmRmY2UzNjkgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RwYXRjaC5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkKQEAgLTM3Nyw3ICszNzcsNyBAQAogCiAgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3Rfd29udF9jcmVhdGVfYnlfZGVmYXVsdChzZWxmKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdmcm9vYmxlJywgc2VudGluZWwuRnJvb2JsZSkKKyAgICAgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnb3JkJywgc2VudGluZWwuRnJvb2JsZSkKICAgICAgICAgICAgIGRlZiB0ZXN0KCk6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdQYXRjaGluZyBub24gZXhpc3RlbnQgYXR0cmlidXRlcyBzaG91bGQgZmFpbCcpCiAKQEAgLTM4Niw3ICszODYsMjcgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgnUGF0Y2hpbmcgbm9uIGV4aXN0ZW50IGF0dHJpYnV0ZXMgc2hvdWxkIGZhaWwnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoU29tZUNsYXNzLCAnZnJvb2JsZScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoU29tZUNsYXNzLCAnb3JkJykpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2J1aWx0aW5zX3dpdGhvdXRfY3JlYXRlKHNlbGYpOgorICAgICAgICBAcGF0Y2goX19uYW1lX18rJy5vcmQnKQorICAgICAgICBkZWYgdGVzdF9vcmQobW9ja19vcmQpOgorICAgICAgICAgICAgbW9ja19vcmQucmV0dXJuX3ZhbHVlID0gMTAxCisgICAgICAgICAgICByZXR1cm4gb3JkKCdjJykKKworICAgICAgICBAcGF0Y2goX19uYW1lX18rJy5vcGVuJykKKyAgICAgICAgZGVmIHRlc3Rfb3Blbihtb2NrX29wZW4pOgorICAgICAgICAgICAgbSA9IG1vY2tfb3Blbi5yZXR1cm5fdmFsdWUKKyAgICAgICAgICAgIG0ucmVhZC5yZXR1cm5fdmFsdWUgPSAnYWJjZCcKKworICAgICAgICAgICAgZm9iaiA9IG9wZW4oJ2RvZXNub3RleGlzdHMudHh0JykKKyAgICAgICAgICAgIGRhdGEgPSBmb2JqLnJlYWQoKQorICAgICAgICAgICAgZm9iai5jbG9zZSgpCisgICAgICAgICAgICByZXR1cm4gZGF0YQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9vcmQoKSwgMTAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3Rfb3BlbigpLCAnYWJjZCcpCiAKIAogICAgIGRlZiB0ZXN0X3BhdGNoX3dpdGhfc3RhdGljX21ldGhvZHMoc2VsZik6CkBAIC0xNzk3LDUgKzE4MTcsMzEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdG9wcGVkLCBbInRocmVlIiwgInR3byIsICJvbmUiXSkKIAogCisgICAgZGVmIHRlc3Rfc3BlY2lhbF9hdHRycyhzZWxmKToKKyAgICAgICAgZGVmIGZvbyh4PTApOgorICAgICAgICAgICAgIiIiVEVTVCIiIgorICAgICAgICAgICAgcmV0dXJuIHgKKyAgICAgICAgd2l0aCBwYXRjaC5vYmplY3QoZm9vLCAnX19kZWZhdWx0c19fJywgKDEsICkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oKSwgMCkKKworICAgICAgICB3aXRoIHBhdGNoLm9iamVjdChmb28sICdfX2RvY19fJywgIkZVTiIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uX19kb2NfXywgIkZVTiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLl9fZG9jX18sICJURVNUIikKKworICAgICAgICB3aXRoIHBhdGNoLm9iamVjdChmb28sICdfX21vZHVsZV9fJywgInRlc3RwYXRjaDIiKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLl9fbW9kdWxlX18sICJ0ZXN0cGF0Y2gyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uX19tb2R1bGVfXywgJ3VuaXR0ZXN0LnRlc3QudGVzdG1vY2sudGVzdHBhdGNoJykKKworICAgICAgICB3aXRoIHBhdGNoLm9iamVjdChmb28sICdfX2Fubm90YXRpb25zX18nLCBkaWN0KFsoJ3MnLCAxLCApXSkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uX19hbm5vdGF0aW9uc19fLCBkaWN0KFsoJ3MnLCAxLCApXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLl9fYW5ub3RhdGlvbnNfXywgZGljdCgpKQorCisgICAgICAgIGRlZiBmb28oKmEsIHg9MCk6CisgICAgICAgICAgICByZXR1cm4geAorICAgICAgICB3aXRoIHBhdGNoLm9iamVjdChmb28sICdfX2t3ZGVmYXVsdHNfXycsIGRpY3QoWygneCcsIDEsICldKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygpLCAwKQorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3V0aWwucHkgYi9MaWIvdW5pdHRlc3QvdXRpbC5weQppbmRleCBhZWU0OThmLi40NTQ4NWRjIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdXRpbC5weQorKysgYi9MaWIvdW5pdHRlc3QvdXRpbC5weQpAQCAtNTIsNyArNTIsNyBAQAogICAgIHJldHVybiByZXN1bHRbOl9NQVhfTEVOR1RIXSArICcgW3RydW5jYXRlZF0uLi4nCiAKIGRlZiBzdHJjbGFzcyhjbHMpOgotICAgIHJldHVybiAiJXMuJXMiICUgKGNscy5fX21vZHVsZV9fLCBjbHMuX19uYW1lX18pCisgICAgcmV0dXJuICIlcy4lcyIgJSAoY2xzLl9fbW9kdWxlX18sIGNscy5fX3F1YWxuYW1lX18pCiAKIGRlZiBzb3J0ZWRfbGlzdF9kaWZmZXJlbmNlKGV4cGVjdGVkLCBhY3R1YWwpOgogICAgICIiIkZpbmRzIGVsZW1lbnRzIGluIG9ubHkgb25lIG9yIHRoZSBvdGhlciBvZiB0d28sIHNvcnRlZCBpbnB1dCBsaXN0cy4KZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvZXJyb3IucHkgYi9MaWIvdXJsbGliL2Vycm9yLnB5CmluZGV4IDQ1YjcxNjkuLmM1YjY3NWQgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvZXJyb3IucHkKKysrIGIvTGliL3VybGxpYi9lcnJvci5weQpAQCAtMzUsNiArMzUsNyBAQAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gJzx1cmxvcGVuIGVycm9yICVzPicgJSBzZWxmLnJlYXNvbgogCisKIGNsYXNzIEhUVFBFcnJvcihVUkxFcnJvciwgdXJsbGliLnJlc3BvbnNlLmFkZGluZm91cmwpOgogICAgICIiIlJhaXNlZCB3aGVuIEhUVFAgZXJyb3Igb2NjdXJzLCBidXQgYWxzbyBhY3RzIGxpa2Ugbm9uLWVycm9yIHJldHVybiIiIgogICAgIF9fc3VwZXJfaW5pdCA9IHVybGxpYi5yZXNwb25zZS5hZGRpbmZvdXJsLl9faW5pdF9fCkBAIC01NSw2ICs1Niw5IEBACiAgICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgIHJldHVybiAnSFRUUCBFcnJvciAlczogJXMnICUgKHNlbGYuY29kZSwgc2VsZi5tc2cpCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnPEhUVFBFcnJvciAlczogJXI+JyAlIChzZWxmLmNvZGUsIHNlbGYubXNnKQorCiAgICAgIyBzaW5jZSBVUkxFcnJvciBzcGVjaWZpZXMgYSAucmVhc29uIGF0dHJpYnV0ZSwgSFRUUEVycm9yIHNob3VsZCBhbHNvCiAgICAgIyAgcHJvdmlkZSB0aGlzIGF0dHJpYnV0ZS4gU2VlIGlzc3VlMTMyMTEgZm9yIGRpc2N1c3Npb24uCiAgICAgQHByb3BlcnR5CkBAIC02OSw4ICs3Myw5IEBACiAgICAgZGVmIGhlYWRlcnMoc2VsZiwgaGVhZGVycyk6CiAgICAgICAgIHNlbGYuaGRycyA9IGhlYWRlcnMKIAotIyBleGNlcHRpb24gcmFpc2VkIHdoZW4gZG93bmxvYWRlZCBzaXplIGRvZXMgbm90IG1hdGNoIGNvbnRlbnQtbGVuZ3RoCisKIGNsYXNzIENvbnRlbnRUb29TaG9ydEVycm9yKFVSTEVycm9yKToKKyAgICAiIiJFeGNlcHRpb24gcmFpc2VkIHdoZW4gZG93bmxvYWRlZCBzaXplIGRvZXMgbm90IG1hdGNoIGNvbnRlbnQtbGVuZ3RoLiIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlLCBjb250ZW50KToKICAgICAgICAgVVJMRXJyb3IuX19pbml0X18oc2VsZiwgbWVzc2FnZSkKICAgICAgICAgc2VsZi5jb250ZW50ID0gY29udGVudApkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9wYXJzZS5weSBiL0xpYi91cmxsaWIvcGFyc2UucHkKaW5kZXggZDM2ODMzMS4uMDFjOWU1OCAxMDA2NDQKLS0tIGEvTGliL3VybGxpYi9wYXJzZS5weQorKysgYi9MaWIvdXJsbGliL3BhcnNlLnB5CkBAIC0zNCw3ICszNCw5IEBACiBfX2FsbF9fID0gWyJ1cmxwYXJzZSIsICJ1cmx1bnBhcnNlIiwgInVybGpvaW4iLCAidXJsZGVmcmFnIiwKICAgICAgICAgICAgInVybHNwbGl0IiwgInVybHVuc3BsaXQiLCAidXJsZW5jb2RlIiwgInBhcnNlX3FzIiwKICAgICAgICAgICAgInBhcnNlX3FzbCIsICJxdW90ZSIsICJxdW90ZV9wbHVzIiwgInF1b3RlX2Zyb21fYnl0ZXMiLAotICAgICAgICAgICAidW5xdW90ZSIsICJ1bnF1b3RlX3BsdXMiLCAidW5xdW90ZV90b19ieXRlcyJdCisgICAgICAgICAgICJ1bnF1b3RlIiwgInVucXVvdGVfcGx1cyIsICJ1bnF1b3RlX3RvX2J5dGVzIiwKKyAgICAgICAgICAgIkRlZnJhZ1Jlc3VsdCIsICJQYXJzZVJlc3VsdCIsICJTcGxpdFJlc3VsdCIsCisgICAgICAgICAgICJEZWZyYWdSZXN1bHRCeXRlcyIsICJQYXJzZVJlc3VsdEJ5dGVzIiwgIlNwbGl0UmVzdWx0Qnl0ZXMiXQogCiAjIEEgY2xhc3NpZmljYXRpb24gb2Ygc2NoZW1lcyAoJycgbWVhbnMgYXBwbHkgYnkgZGVmYXVsdCkKIHVzZXNfcmVsYXRpdmUgPSBbJ2Z0cCcsICdodHRwJywgJ2dvcGhlcicsICdubnRwJywgJ2ltYXAnLApAQCAtNDA5LDExICs0MTEsMTMgQEAKICAgICAgICAgcmV0dXJuIHVybAogICAgIGlmIG5vdCB1cmw6CiAgICAgICAgIHJldHVybiBiYXNlCisKICAgICBiYXNlLCB1cmwsIF9jb2VyY2VfcmVzdWx0ID0gX2NvZXJjZV9hcmdzKGJhc2UsIHVybCkKICAgICBic2NoZW1lLCBibmV0bG9jLCBicGF0aCwgYnBhcmFtcywgYnF1ZXJ5LCBiZnJhZ21lbnQgPSBcCiAgICAgICAgICAgICB1cmxwYXJzZShiYXNlLCAnJywgYWxsb3dfZnJhZ21lbnRzKQogICAgIHNjaGVtZSwgbmV0bG9jLCBwYXRoLCBwYXJhbXMsIHF1ZXJ5LCBmcmFnbWVudCA9IFwKICAgICAgICAgICAgIHVybHBhcnNlKHVybCwgYnNjaGVtZSwgYWxsb3dfZnJhZ21lbnRzKQorCiAgICAgaWYgc2NoZW1lICE9IGJzY2hlbWUgb3Igc2NoZW1lIG5vdCBpbiB1c2VzX3JlbGF0aXZlOgogICAgICAgICByZXR1cm4gX2NvZXJjZV9yZXN1bHQodXJsKQogICAgIGlmIHNjaGVtZSBpbiB1c2VzX25ldGxvYzoKQEAgLTQyMSw5ICs0MjUsNyBAQAogICAgICAgICAgICAgcmV0dXJuIF9jb2VyY2VfcmVzdWx0KHVybHVucGFyc2UoKHNjaGVtZSwgbmV0bG9jLCBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgcXVlcnksIGZyYWdtZW50KSkpCiAgICAgICAgIG5ldGxvYyA9IGJuZXRsb2MKLSAgICBpZiBwYXRoWzoxXSA9PSAnLyc6Ci0gICAgICAgIHJldHVybiBfY29lcmNlX3Jlc3VsdCh1cmx1bnBhcnNlKChzY2hlbWUsIG5ldGxvYywgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgcXVlcnksIGZyYWdtZW50KSkpCisKICAgICBpZiBub3QgcGF0aCBhbmQgbm90IHBhcmFtczoKICAgICAgICAgcGF0aCA9IGJwYXRoCiAgICAgICAgIHBhcmFtcyA9IGJwYXJhbXMKQEAgLTQzMSwyOSArNDMzLDQ1IEBACiAgICAgICAgICAgICBxdWVyeSA9IGJxdWVyeQogICAgICAgICByZXR1cm4gX2NvZXJjZV9yZXN1bHQodXJsdW5wYXJzZSgoc2NoZW1lLCBuZXRsb2MsIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMsIHF1ZXJ5LCBmcmFnbWVudCkpKQotICAgIHNlZ21lbnRzID0gYnBhdGguc3BsaXQoJy8nKVs6LTFdICsgcGF0aC5zcGxpdCgnLycpCi0gICAgIyBYWFggVGhlIHN0dWZmIGJlbG93IGlzIGJvZ3VzIGluIHZhcmlvdXMgd2F5cy4uLgotICAgIGlmIHNlZ21lbnRzWy0xXSA9PSAnLic6Ci0gICAgICAgIHNlZ21lbnRzWy0xXSA9ICcnCi0gICAgd2hpbGUgJy4nIGluIHNlZ21lbnRzOgotICAgICAgICBzZWdtZW50cy5yZW1vdmUoJy4nKQotICAgIHdoaWxlIDE6Ci0gICAgICAgIGkgPSAxCi0gICAgICAgIG4gPSBsZW4oc2VnbWVudHMpIC0gMQotICAgICAgICB3aGlsZSBpIDwgbjoKLSAgICAgICAgICAgIGlmIChzZWdtZW50c1tpXSA9PSAnLi4nCi0gICAgICAgICAgICAgICAgYW5kIHNlZ21lbnRzW2ktMV0gbm90IGluICgnJywgJy4uJykpOgotICAgICAgICAgICAgICAgIGRlbCBzZWdtZW50c1tpLTE6aSsxXQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpID0gaSsxCisKKyAgICBiYXNlX3BhcnRzID0gYnBhdGguc3BsaXQoJy8nKQorICAgIGlmIGJhc2VfcGFydHNbLTFdICE9ICcnOgorICAgICAgICAjIHRoZSBsYXN0IGl0ZW0gaXMgbm90IGEgZGlyZWN0b3J5LCBzbyB3aWxsIG5vdCBiZSB0YWtlbiBpbnRvIGFjY291bnQKKyAgICAgICAgIyBpbiByZXNvbHZpbmcgdGhlIHJlbGF0aXZlIHBhdGgKKyAgICAgICAgZGVsIGJhc2VfcGFydHNbLTFdCisKKyAgICAjIGZvciByZmMzOTg2LCBpZ25vcmUgYWxsIGJhc2UgcGF0aCBzaG91bGQgdGhlIGZpcnN0IGNoYXJhY3RlciBiZSByb290LgorICAgIGlmIHBhdGhbOjFdID09ICcvJzoKKyAgICAgICAgc2VnbWVudHMgPSBwYXRoLnNwbGl0KCcvJykKKyAgICBlbHNlOgorICAgICAgICBzZWdtZW50cyA9IGJhc2VfcGFydHMgKyBwYXRoLnNwbGl0KCcvJykKKyAgICAgICAgIyBmaWx0ZXIgb3V0IGVsZW1lbnRzIHRoYXQgd291bGQgY2F1c2UgcmVkdW5kYW50IHNsYXNoZXMgb24gcmUtam9pbmluZworICAgICAgICAjIHRoZSByZXNvbHZlZF9wYXRoCisgICAgICAgIHNlZ21lbnRzWzE6LTFdID0gZmlsdGVyKE5vbmUsIHNlZ21lbnRzWzE6LTFdKQorCisgICAgcmVzb2x2ZWRfcGF0aCA9IFtdCisKKyAgICBmb3Igc2VnIGluIHNlZ21lbnRzOgorICAgICAgICBpZiBzZWcgPT0gJy4uJzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXNvbHZlZF9wYXRoLnBvcCgpCisgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgICAgICAjIGlnbm9yZSBhbnkgLi4gc2VnbWVudHMgdGhhdCB3b3VsZCBvdGhlcndpc2UgY2F1c2UgYW4gSW5kZXhFcnJvcgorICAgICAgICAgICAgICAgICMgd2hlbiBwb3BwZWQgZnJvbSByZXNvbHZlZF9wYXRoIGlmIHJlc29sdmluZyBmb3IgcmZjMzk4NgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxpZiBzZWcgPT0gJy4nOgorICAgICAgICAgICAgY29udGludWUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgaWYgc2VnbWVudHMgPT0gWycnLCAnLi4nXToKLSAgICAgICAgc2VnbWVudHNbLTFdID0gJycKLSAgICBlbGlmIGxlbihzZWdtZW50cykgPj0gMiBhbmQgc2VnbWVudHNbLTFdID09ICcuLic6Ci0gICAgICAgIHNlZ21lbnRzWy0yOl0gPSBbJyddCi0gICAgcmV0dXJuIF9jb2VyY2VfcmVzdWx0KHVybHVucGFyc2UoKHNjaGVtZSwgbmV0bG9jLCAnLycuam9pbihzZWdtZW50cyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgcXVlcnksIGZyYWdtZW50KSkpCisgICAgICAgICAgICByZXNvbHZlZF9wYXRoLmFwcGVuZChzZWcpCisKKyAgICBpZiBzZWdtZW50c1stMV0gaW4gKCcuJywgJy4uJyk6CisgICAgICAgICMgZG8gc29tZSBwb3N0LXByb2Nlc3NpbmcgaGVyZS4gaWYgdGhlIGxhc3Qgc2VnbWVudCB3YXMgYSByZWxhdGl2ZSBkaXIsCisgICAgICAgICMgdGhlbiB3ZSBuZWVkIHRvIGFwcGVuZCB0aGUgdHJhaWxpbmcgJy8nCisgICAgICAgIHJlc29sdmVkX3BhdGguYXBwZW5kKCcnKQorCisgICAgcmV0dXJuIF9jb2VyY2VfcmVzdWx0KHVybHVucGFyc2UoKHNjaGVtZSwgbmV0bG9jLCAnLycuam9pbigKKyAgICAgICAgcmVzb2x2ZWRfcGF0aCkgb3IgJy8nLCBwYXJhbXMsIHF1ZXJ5LCBmcmFnbWVudCkpKQorCiAKIGRlZiB1cmxkZWZyYWcodXJsKToKICAgICAiIiJSZW1vdmVzIGFueSBleGlzdGluZyBmcmFnbWVudCBmcm9tIFVSTC4KQEAgLTY0MSw3ICs2NTksNyBAQAogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICAjIFdpdGhvdXQgdGhpcywgd2lsbCBqdXN0IGRpc3BsYXkgYXMgYSBkZWZhdWx0ZGljdAotICAgICAgICByZXR1cm4gIjxRdW90ZXIgJXI+IiAlIGRpY3Qoc2VsZikKKyAgICAgICAgcmV0dXJuICI8JXMgJXI+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgZGljdChzZWxmKSkKIAogICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBiKToKICAgICAgICAgIyBIYW5kbGUgYSBjYWNoZSBtaXNzLiBTdG9yZSBxdW90ZWQgc3RyaW5nIGluIGNhY2hlIGFuZCByZXR1cm4uCkBAIC03MzIsNyArNzUwLDggQEAKICAgICAgICAgX3NhZmVfcXVvdGVyc1tzYWZlXSA9IHF1b3RlciA9IFF1b3RlcihzYWZlKS5fX2dldGl0ZW1fXwogICAgIHJldHVybiAnJy5qb2luKFtxdW90ZXIoY2hhcikgZm9yIGNoYXIgaW4gYnNdKQogCi1kZWYgdXJsZW5jb2RlKHF1ZXJ5LCBkb3NlcT1GYWxzZSwgc2FmZT0nJywgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpOgorZGVmIHVybGVuY29kZShxdWVyeSwgZG9zZXE9RmFsc2UsIHNhZmU9JycsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLAorICAgICAgICAgICAgICBxdW90ZV92aWE9cXVvdGVfcGx1cyk6CiAgICAgIiIiRW5jb2RlIGEgZGljdCBvciBzZXF1ZW5jZSBvZiB0d28tZWxlbWVudCB0dXBsZXMgaW50byBhIFVSTCBxdWVyeSBzdHJpbmcuCiAKICAgICBJZiBhbnkgdmFsdWVzIGluIHRoZSBxdWVyeSBhcmcgYXJlIHNlcXVlbmNlcyBhbmQgZG9zZXEgaXMgdHJ1ZSwgZWFjaApAQCAtNzQ0LDggKzc2Myw4IEBACiAKICAgICBUaGUgY29tcG9uZW50cyBvZiBhIHF1ZXJ5IGFyZyBtYXkgZWFjaCBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYSBieXRlcyB0eXBlLgogCi0gICAgVGhlIHNhZmUsIGVuY29kaW5nLCBhbmQgZXJyb3JzIHBhcmFtZXRlcnMgYXJlIHBhc3NlZCBkb3duIHRvIHF1b3RlX3BsdXMoKQotICAgIChlbmNvZGluZyBhbmQgZXJyb3JzIG9ubHkgaWYgYSBjb21wb25lbnQgaXMgYSBzdHIpLgorICAgIFRoZSBzYWZlLCBlbmNvZGluZywgYW5kIGVycm9ycyBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgZG93biB0byB0aGUgZnVuY3Rpb24KKyAgICBzcGVjaWZpZWQgYnkgcXVvdGVfdmlhIChlbmNvZGluZyBhbmQgZXJyb3JzIG9ubHkgaWYgYSBjb21wb25lbnQgaXMgYSBzdHIpLgogICAgICIiIgogCiAgICAgaWYgaGFzYXR0cihxdWVyeSwgIml0ZW1zIik6CkBAIC03NzEsMjcgKzc5MCwyNyBAQAogICAgIGlmIG5vdCBkb3NlcToKICAgICAgICAgZm9yIGssIHYgaW4gcXVlcnk6CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGssIGJ5dGVzKToKLSAgICAgICAgICAgICAgICBrID0gcXVvdGVfcGx1cyhrLCBzYWZlKQorICAgICAgICAgICAgICAgIGsgPSBxdW90ZV92aWEoaywgc2FmZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgayA9IHF1b3RlX3BsdXMoc3RyKGspLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQorICAgICAgICAgICAgICAgIGsgPSBxdW90ZV92aWEoc3RyKGspLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQogCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHYsIGJ5dGVzKToKLSAgICAgICAgICAgICAgICB2ID0gcXVvdGVfcGx1cyh2LCBzYWZlKQorICAgICAgICAgICAgICAgIHYgPSBxdW90ZV92aWEodiwgc2FmZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdiA9IHF1b3RlX3BsdXMoc3RyKHYpLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQorICAgICAgICAgICAgICAgIHYgPSBxdW90ZV92aWEoc3RyKHYpLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQogICAgICAgICAgICAgbC5hcHBlbmQoayArICc9JyArIHYpCiAgICAgZWxzZToKICAgICAgICAgZm9yIGssIHYgaW4gcXVlcnk6CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGssIGJ5dGVzKToKLSAgICAgICAgICAgICAgICBrID0gcXVvdGVfcGx1cyhrLCBzYWZlKQorICAgICAgICAgICAgICAgIGsgPSBxdW90ZV92aWEoaywgc2FmZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgayA9IHF1b3RlX3BsdXMoc3RyKGspLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQorICAgICAgICAgICAgICAgIGsgPSBxdW90ZV92aWEoc3RyKGspLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQogCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHYsIGJ5dGVzKToKLSAgICAgICAgICAgICAgICB2ID0gcXVvdGVfcGx1cyh2LCBzYWZlKQorICAgICAgICAgICAgICAgIHYgPSBxdW90ZV92aWEodiwgc2FmZSkKICAgICAgICAgICAgICAgICBsLmFwcGVuZChrICsgJz0nICsgdikKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2LCBzdHIpOgotICAgICAgICAgICAgICAgIHYgPSBxdW90ZV9wbHVzKHYsIHNhZmUsIGVuY29kaW5nLCBlcnJvcnMpCisgICAgICAgICAgICAgICAgdiA9IHF1b3RlX3ZpYSh2LCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQogICAgICAgICAgICAgICAgIGwuYXBwZW5kKGsgKyAnPScgKyB2KQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB0cnk6CkBAIC03OTksMTUgKzgxOCwxNSBAQAogICAgICAgICAgICAgICAgICAgICB4ID0gbGVuKHYpCiAgICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgIyBub3QgYSBzZXF1ZW5jZQotICAgICAgICAgICAgICAgICAgICB2ID0gcXVvdGVfcGx1cyhzdHIodiksIHNhZmUsIGVuY29kaW5nLCBlcnJvcnMpCisgICAgICAgICAgICAgICAgICAgIHYgPSBxdW90ZV92aWEoc3RyKHYpLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQogICAgICAgICAgICAgICAgICAgICBsLmFwcGVuZChrICsgJz0nICsgdikKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAjIGxvb3Agb3ZlciB0aGUgc2VxdWVuY2UKICAgICAgICAgICAgICAgICAgICAgZm9yIGVsdCBpbiB2OgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShlbHQsIGJ5dGVzKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHQgPSBxdW90ZV9wbHVzKGVsdCwgc2FmZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHQgPSBxdW90ZV92aWEoZWx0LCBzYWZlKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHQgPSBxdW90ZV9wbHVzKHN0cihlbHQpLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsdCA9IHF1b3RlX3ZpYShzdHIoZWx0KSwgc2FmZSwgZW5jb2RpbmcsIGVycm9ycykKICAgICAgICAgICAgICAgICAgICAgICAgIGwuYXBwZW5kKGsgKyAnPScgKyBlbHQpCiAgICAgcmV0dXJuICcmJy5qb2luKGwpCiAKQEAgLTg1MiwxMiArODcxLDEyIEBACiAgICAgIiIic3BsaXR0eXBlKCd0eXBlOm9wYXF1ZXN0cmluZycpIC0tPiAndHlwZScsICdvcGFxdWVzdHJpbmcnLiIiIgogICAgIGdsb2JhbCBfdHlwZXByb2cKICAgICBpZiBfdHlwZXByb2cgaXMgTm9uZToKLSAgICAgICAgX3R5cGVwcm9nID0gcmUuY29tcGlsZSgnXihbXi86XSspOicpCisgICAgICAgIF90eXBlcHJvZyA9IHJlLmNvbXBpbGUoJyhbXi86XSspOiguKiknLCByZS5ET1RBTEwpCiAKICAgICBtYXRjaCA9IF90eXBlcHJvZy5tYXRjaCh1cmwpCiAgICAgaWYgbWF0Y2g6Ci0gICAgICAgIHNjaGVtZSA9IG1hdGNoLmdyb3VwKDEpCi0gICAgICAgIHJldHVybiBzY2hlbWUubG93ZXIoKSwgdXJsW2xlbihzY2hlbWUpICsgMTpdCisgICAgICAgIHNjaGVtZSwgZGF0YSA9IG1hdGNoLmdyb3VwcygpCisgICAgICAgIHJldHVybiBzY2hlbWUubG93ZXIoKSwgZGF0YQogICAgIHJldHVybiBOb25lLCB1cmwKIAogX2hvc3Rwcm9nID0gTm9uZQpAQCAtODY1LDM4ICs4ODQsMjUgQEAKICAgICAiIiJzcGxpdGhvc3QoJy8vaG9zdFs6cG9ydF0vcGF0aCcpIC0tPiAnaG9zdFs6cG9ydF0nLCAnL3BhdGgnLiIiIgogICAgIGdsb2JhbCBfaG9zdHByb2cKICAgICBpZiBfaG9zdHByb2cgaXMgTm9uZToKLSAgICAgICAgX2hvc3Rwcm9nID0gcmUuY29tcGlsZSgnXi8vKFteLz9dKikoLiopJCcpCisgICAgICAgIF9ob3N0cHJvZyA9IHJlLmNvbXBpbGUoJy8vKFteLz9dKikoLiopJywgcmUuRE9UQUxMKQogCiAgICAgbWF0Y2ggPSBfaG9zdHByb2cubWF0Y2godXJsKQogICAgIGlmIG1hdGNoOgotICAgICAgICBob3N0X3BvcnQgPSBtYXRjaC5ncm91cCgxKQotICAgICAgICBwYXRoID0gbWF0Y2guZ3JvdXAoMikKLSAgICAgICAgaWYgcGF0aCBhbmQgbm90IHBhdGguc3RhcnRzd2l0aCgnLycpOgorICAgICAgICBob3N0X3BvcnQsIHBhdGggPSBtYXRjaC5ncm91cHMoKQorICAgICAgICBpZiBwYXRoIGFuZCBwYXRoWzBdICE9ICcvJzoKICAgICAgICAgICAgIHBhdGggPSAnLycgKyBwYXRoCiAgICAgICAgIHJldHVybiBob3N0X3BvcnQsIHBhdGgKICAgICByZXR1cm4gTm9uZSwgdXJsCiAKLV91c2VycHJvZyA9IE5vbmUKIGRlZiBzcGxpdHVzZXIoaG9zdCk6CiAgICAgIiIic3BsaXR1c2VyKCd1c2VyWzpwYXNzd2RdQGhvc3RbOnBvcnRdJykgLS0+ICd1c2VyWzpwYXNzd2RdJywgJ2hvc3RbOnBvcnRdJy4iIiIKLSAgICBnbG9iYWwgX3VzZXJwcm9nCi0gICAgaWYgX3VzZXJwcm9nIGlzIE5vbmU6Ci0gICAgICAgIF91c2VycHJvZyA9IHJlLmNvbXBpbGUoJ14oLiopQCguKikkJykKKyAgICB1c2VyLCBkZWxpbSwgaG9zdCA9IGhvc3QucnBhcnRpdGlvbignQCcpCisgICAgcmV0dXJuICh1c2VyIGlmIGRlbGltIGVsc2UgTm9uZSksIGhvc3QKIAotICAgIG1hdGNoID0gX3VzZXJwcm9nLm1hdGNoKGhvc3QpCi0gICAgaWYgbWF0Y2g6IHJldHVybiBtYXRjaC5ncm91cCgxLCAyKQotICAgIHJldHVybiBOb25lLCBob3N0Ci0KLV9wYXNzd2Rwcm9nID0gTm9uZQogZGVmIHNwbGl0cGFzc3dkKHVzZXIpOgogICAgICIiInNwbGl0cGFzc3dkKCd1c2VyOnBhc3N3ZCcpIC0+ICd1c2VyJywgJ3Bhc3N3ZCcuIiIiCi0gICAgZ2xvYmFsIF9wYXNzd2Rwcm9nCi0gICAgaWYgX3Bhc3N3ZHByb2cgaXMgTm9uZToKLSAgICAgICAgX3Bhc3N3ZHByb2cgPSByZS5jb21waWxlKCdeKFteOl0qKTooLiopJCcscmUuUykKLQotICAgIG1hdGNoID0gX3Bhc3N3ZHByb2cubWF0Y2godXNlcikKLSAgICBpZiBtYXRjaDogcmV0dXJuIG1hdGNoLmdyb3VwKDEsIDIpCi0gICAgcmV0dXJuIHVzZXIsIE5vbmUKKyAgICB1c2VyLCBkZWxpbSwgcGFzc3dkID0gdXNlci5wYXJ0aXRpb24oJzonKQorICAgIHJldHVybiB1c2VyLCAocGFzc3dkIGlmIGRlbGltIGVsc2UgTm9uZSkKIAogIyBzcGxpdHRhZygnL3BhdGgjdGFnJykgLS0+ICcvcGF0aCcsICd0YWcnCiBfcG9ydHByb2cgPSBOb25lCkBAIC05MDQsNyArOTEwLDcgQEAKICAgICAiIiJzcGxpdHBvcnQoJ2hvc3Q6cG9ydCcpIC0tPiAnaG9zdCcsICdwb3J0Jy4iIiIKICAgICBnbG9iYWwgX3BvcnRwcm9nCiAgICAgaWYgX3BvcnRwcm9nIGlzIE5vbmU6Ci0gICAgICAgIF9wb3J0cHJvZyA9IHJlLmNvbXBpbGUoJ14oLiopOihbMC05XSopJCcpCisgICAgICAgIF9wb3J0cHJvZyA9IHJlLmNvbXBpbGUoJyguKik6KFswLTldKikkJywgcmUuRE9UQUxMKQogCiAgICAgbWF0Y2ggPSBfcG9ydHByb2cubWF0Y2goaG9zdCkKICAgICBpZiBtYXRjaDoKQEAgLTkxMyw0NyArOTE5LDM0IEBACiAgICAgICAgICAgICByZXR1cm4gaG9zdCwgcG9ydAogICAgIHJldHVybiBob3N0LCBOb25lCiAKLV9ucG9ydHByb2cgPSBOb25lCiBkZWYgc3BsaXRucG9ydChob3N0LCBkZWZwb3J0PS0xKToKICAgICAiIiJTcGxpdCBob3N0IGFuZCBwb3J0LCByZXR1cm5pbmcgbnVtZXJpYyBwb3J0LgogICAgIFJldHVybiBnaXZlbiBkZWZhdWx0IHBvcnQgaWYgbm8gJzonIGZvdW5kOyBkZWZhdWx0cyB0byAtMS4KICAgICBSZXR1cm4gbnVtZXJpY2FsIHBvcnQgaWYgYSB2YWxpZCBudW1iZXIgYXJlIGZvdW5kIGFmdGVyICc6Jy4KICAgICBSZXR1cm4gTm9uZSBpZiAnOicgYnV0IG5vdCBhIHZhbGlkIG51bWJlci4iIiIKLSAgICBnbG9iYWwgX25wb3J0cHJvZwotICAgIGlmIF9ucG9ydHByb2cgaXMgTm9uZToKLSAgICAgICAgX25wb3J0cHJvZyA9IHJlLmNvbXBpbGUoJ14oLiopOiguKikkJykKLQotICAgIG1hdGNoID0gX25wb3J0cHJvZy5tYXRjaChob3N0KQotICAgIGlmIG1hdGNoOgotICAgICAgICBob3N0LCBwb3J0ID0gbWF0Y2guZ3JvdXAoMSwgMikKLSAgICAgICAgaWYgcG9ydDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBucG9ydCA9IGludChwb3J0KQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgbnBvcnQgPSBOb25lCi0gICAgICAgICAgICByZXR1cm4gaG9zdCwgbnBvcnQKKyAgICBob3N0LCBkZWxpbSwgcG9ydCA9IGhvc3QucnBhcnRpdGlvbignOicpCisgICAgaWYgbm90IGRlbGltOgorICAgICAgICBob3N0ID0gcG9ydAorICAgIGVsaWYgcG9ydDoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbnBvcnQgPSBpbnQocG9ydCkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBucG9ydCA9IE5vbmUKKyAgICAgICAgcmV0dXJuIGhvc3QsIG5wb3J0CiAgICAgcmV0dXJuIGhvc3QsIGRlZnBvcnQKIAotX3F1ZXJ5cHJvZyA9IE5vbmUKIGRlZiBzcGxpdHF1ZXJ5KHVybCk6CiAgICAgIiIic3BsaXRxdWVyeSgnL3BhdGg/cXVlcnknKSAtLT4gJy9wYXRoJywgJ3F1ZXJ5Jy4iIiIKLSAgICBnbG9iYWwgX3F1ZXJ5cHJvZwotICAgIGlmIF9xdWVyeXByb2cgaXMgTm9uZToKLSAgICAgICAgX3F1ZXJ5cHJvZyA9IHJlLmNvbXBpbGUoJ14oLiopXD8oW14/XSopJCcpCi0KLSAgICBtYXRjaCA9IF9xdWVyeXByb2cubWF0Y2godXJsKQotICAgIGlmIG1hdGNoOiByZXR1cm4gbWF0Y2guZ3JvdXAoMSwgMikKKyAgICBwYXRoLCBkZWxpbSwgcXVlcnkgPSB1cmwucnBhcnRpdGlvbignPycpCisgICAgaWYgZGVsaW06CisgICAgICAgIHJldHVybiBwYXRoLCBxdWVyeQogICAgIHJldHVybiB1cmwsIE5vbmUKIAotX3RhZ3Byb2cgPSBOb25lCiBkZWYgc3BsaXR0YWcodXJsKToKICAgICAiIiJzcGxpdHRhZygnL3BhdGgjdGFnJykgLS0+ICcvcGF0aCcsICd0YWcnLiIiIgotICAgIGdsb2JhbCBfdGFncHJvZwotICAgIGlmIF90YWdwcm9nIGlzIE5vbmU6Ci0gICAgICAgIF90YWdwcm9nID0gcmUuY29tcGlsZSgnXiguKikjKFteI10qKSQnKQotCi0gICAgbWF0Y2ggPSBfdGFncHJvZy5tYXRjaCh1cmwpCi0gICAgaWYgbWF0Y2g6IHJldHVybiBtYXRjaC5ncm91cCgxLCAyKQorICAgIHBhdGgsIGRlbGltLCB0YWcgPSB1cmwucnBhcnRpdGlvbignIycpCisgICAgaWYgZGVsaW06CisgICAgICAgIHJldHVybiBwYXRoLCB0YWcKICAgICByZXR1cm4gdXJsLCBOb25lCiAKIGRlZiBzcGxpdGF0dHIodXJsKToKQEAgLTk2MiwxMyArOTU1LDcgQEAKICAgICB3b3JkcyA9IHVybC5zcGxpdCgnOycpCiAgICAgcmV0dXJuIHdvcmRzWzBdLCB3b3Jkc1sxOl0KIAotX3ZhbHVlcHJvZyA9IE5vbmUKIGRlZiBzcGxpdHZhbHVlKGF0dHIpOgogICAgICIiInNwbGl0dmFsdWUoJ2F0dHI9dmFsdWUnKSAtLT4gJ2F0dHInLCAndmFsdWUnLiIiIgotICAgIGdsb2JhbCBfdmFsdWVwcm9nCi0gICAgaWYgX3ZhbHVlcHJvZyBpcyBOb25lOgotICAgICAgICBfdmFsdWVwcm9nID0gcmUuY29tcGlsZSgnXihbXj1dKik9KC4qKSQnKQotCi0gICAgbWF0Y2ggPSBfdmFsdWVwcm9nLm1hdGNoKGF0dHIpCi0gICAgaWYgbWF0Y2g6IHJldHVybiBtYXRjaC5ncm91cCgxLCAyKQotICAgIHJldHVybiBhdHRyLCBOb25lCisgICAgYXR0ciwgZGVsaW0sIHZhbHVlID0gYXR0ci5wYXJ0aXRpb24oJz0nKQorICAgIHJldHVybiBhdHRyLCAodmFsdWUgaWYgZGVsaW0gZWxzZSBOb25lKQpkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9yZXF1ZXN0LnB5IGIvTGliL3VybGxpYi9yZXF1ZXN0LnB5CmluZGV4IDM3NmJiYTQuLmE3ZmQwMTcgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvcmVxdWVzdC5weQorKysgYi9MaWIvdXJsbGliL3JlcXVlc3QucHkKQEAgLTEyMCw5ICsxMjAsMTAgQEAKICAgICAnUmVxdWVzdCcsICdPcGVuZXJEaXJlY3RvcicsICdCYXNlSGFuZGxlcicsICdIVFRQRGVmYXVsdEVycm9ySGFuZGxlcicsCiAgICAgJ0hUVFBSZWRpcmVjdEhhbmRsZXInLCAnSFRUUENvb2tpZVByb2Nlc3NvcicsICdQcm94eUhhbmRsZXInLAogICAgICdIVFRQUGFzc3dvcmRNZ3InLCAnSFRUUFBhc3N3b3JkTWdyV2l0aERlZmF1bHRSZWFsbScsCi0gICAgJ0Fic3RyYWN0QmFzaWNBdXRoSGFuZGxlcicsICdIVFRQQmFzaWNBdXRoSGFuZGxlcicsICdQcm94eUJhc2ljQXV0aEhhbmRsZXInLAotICAgICdBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyJywgJ0hUVFBEaWdlc3RBdXRoSGFuZGxlcicsICdQcm94eURpZ2VzdEF1dGhIYW5kbGVyJywKLSAgICAnSFRUUEhhbmRsZXInLCAnRmlsZUhhbmRsZXInLCAnRlRQSGFuZGxlcicsICdDYWNoZUZUUEhhbmRsZXInLCAnRGF0YUhhbmRsZXInLAorICAgICdIVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoJywgJ0Fic3RyYWN0QmFzaWNBdXRoSGFuZGxlcicsCisgICAgJ0hUVFBCYXNpY0F1dGhIYW5kbGVyJywgJ1Byb3h5QmFzaWNBdXRoSGFuZGxlcicsICdBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyJywKKyAgICAnSFRUUERpZ2VzdEF1dGhIYW5kbGVyJywgJ1Byb3h5RGlnZXN0QXV0aEhhbmRsZXInLCAnSFRUUEhhbmRsZXInLAorICAgICdGaWxlSGFuZGxlcicsICdGVFBIYW5kbGVyJywgJ0NhY2hlRlRQSGFuZGxlcicsICdEYXRhSGFuZGxlcicsCiAgICAgJ1Vua25vd25IYW5kbGVyJywgJ0hUVFBFcnJvclByb2Nlc3NvcicsCiAgICAgIyBGdW5jdGlvbnMKICAgICAndXJsb3BlbicsICdpbnN0YWxsX29wZW5lcicsICdidWlsZF9vcGVuZXInLApAQCAtODM2LDYgKzgzNywzNyBAQAogICAgICAgICByZXR1cm4gSFRUUFBhc3N3b3JkTWdyLmZpbmRfdXNlcl9wYXNzd29yZChzZWxmLCBOb25lLCBhdXRodXJpKQogCiAKK2NsYXNzIEhUVFBQYXNzd29yZE1ncldpdGhQcmlvckF1dGgoSFRUUFBhc3N3b3JkTWdyV2l0aERlZmF1bHRSZWFsbSk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5hdXRoZW50aWNhdGVkID0ge30KKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgYWRkX3Bhc3N3b3JkKHNlbGYsIHJlYWxtLCB1cmksIHVzZXIsIHBhc3N3ZCwgaXNfYXV0aGVudGljYXRlZD1GYWxzZSk6CisgICAgICAgIHNlbGYudXBkYXRlX2F1dGhlbnRpY2F0ZWQodXJpLCBpc19hdXRoZW50aWNhdGVkKQorICAgICAgICAjIEFkZCBhIGRlZmF1bHQgZm9yIHByaW9yIGF1dGggcmVxdWVzdHMKKyAgICAgICAgaWYgcmVhbG0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzdXBlcigpLmFkZF9wYXNzd29yZChOb25lLCB1cmksIHVzZXIsIHBhc3N3ZCkKKyAgICAgICAgc3VwZXIoKS5hZGRfcGFzc3dvcmQocmVhbG0sIHVyaSwgdXNlciwgcGFzc3dkKQorCisgICAgZGVmIHVwZGF0ZV9hdXRoZW50aWNhdGVkKHNlbGYsIHVyaSwgaXNfYXV0aGVudGljYXRlZD1GYWxzZSk6CisgICAgICAgICMgdXJpIGNvdWxkIGJlIGEgc2luZ2xlIFVSSSBvciBhIHNlcXVlbmNlCisgICAgICAgIGlmIGlzaW5zdGFuY2UodXJpLCBzdHIpOgorICAgICAgICAgICAgdXJpID0gW3VyaV0KKworICAgICAgICBmb3IgZGVmYXVsdF9wb3J0IGluIFRydWUsIEZhbHNlOgorICAgICAgICAgICAgZm9yIHUgaW4gdXJpOgorICAgICAgICAgICAgICAgIHJlZHVjZWRfdXJpID0gc2VsZi5yZWR1Y2VfdXJpKHUsIGRlZmF1bHRfcG9ydCkKKyAgICAgICAgICAgICAgICBzZWxmLmF1dGhlbnRpY2F0ZWRbcmVkdWNlZF91cmldID0gaXNfYXV0aGVudGljYXRlZAorCisgICAgZGVmIGlzX2F1dGhlbnRpY2F0ZWQoc2VsZiwgYXV0aHVyaSk6CisgICAgICAgIGZvciBkZWZhdWx0X3BvcnQgaW4gVHJ1ZSwgRmFsc2U6CisgICAgICAgICAgICByZWR1Y2VkX2F1dGh1cmkgPSBzZWxmLnJlZHVjZV91cmkoYXV0aHVyaSwgZGVmYXVsdF9wb3J0KQorICAgICAgICAgICAgZm9yIHVyaSBpbiBzZWxmLmF1dGhlbnRpY2F0ZWQ6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5pc19zdWJ1cmkodXJpLCByZWR1Y2VkX2F1dGh1cmkpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5hdXRoZW50aWNhdGVkW3VyaV0KKworCiBjbGFzcyBBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXI6CiAKICAgICAjIFhYWCB0aGlzIGFsbG93cyBmb3IgbXVsdGlwbGUgYXV0aC1zY2hlbWVzLCBidXQgd2lsbCBzdHVwaWRseSBwaWNrCkBAIC04OTAsNiArOTIyLDMxIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCisgICAgZGVmIGh0dHBfcmVxdWVzdChzZWxmLCByZXEpOgorICAgICAgICBpZiAobm90IGhhc2F0dHIoc2VsZi5wYXNzd2QsICdpc19hdXRoZW50aWNhdGVkJykgb3IKKyAgICAgICAgICAgbm90IHNlbGYucGFzc3dkLmlzX2F1dGhlbnRpY2F0ZWQocmVxLmZ1bGxfdXJsKSk6CisgICAgICAgICAgICByZXR1cm4gcmVxCisKKyAgICAgICAgaWYgbm90IHJlcS5oYXNfaGVhZGVyKCdBdXRob3JpemF0aW9uJyk6CisgICAgICAgICAgICB1c2VyLCBwYXNzd2QgPSBzZWxmLnBhc3N3ZC5maW5kX3VzZXJfcGFzc3dvcmQoTm9uZSwgcmVxLmZ1bGxfdXJsKQorICAgICAgICAgICAgY3JlZGVudGlhbHMgPSAnezB9OnsxfScuZm9ybWF0KHVzZXIsIHBhc3N3ZCkuZW5jb2RlKCkKKyAgICAgICAgICAgIGF1dGhfc3RyID0gYmFzZTY0LnN0YW5kYXJkX2I2NGVuY29kZShjcmVkZW50aWFscykuZGVjb2RlKCkKKyAgICAgICAgICAgIHJlcS5hZGRfdW5yZWRpcmVjdGVkX2hlYWRlcignQXV0aG9yaXphdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Jhc2ljIHt9Jy5mb3JtYXQoYXV0aF9zdHIuc3RyaXAoKSkpCisgICAgICAgIHJldHVybiByZXEKKworICAgIGRlZiBodHRwX3Jlc3BvbnNlKHNlbGYsIHJlcSwgcmVzcG9uc2UpOgorICAgICAgICBpZiBoYXNhdHRyKHNlbGYucGFzc3dkLCAnaXNfYXV0aGVudGljYXRlZCcpOgorICAgICAgICAgICAgaWYgMjAwIDw9IHJlc3BvbnNlLmNvZGUgPCAzMDA6CisgICAgICAgICAgICAgICAgc2VsZi5wYXNzd2QudXBkYXRlX2F1dGhlbnRpY2F0ZWQocmVxLmZ1bGxfdXJsLCBUcnVlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnBhc3N3ZC51cGRhdGVfYXV0aGVudGljYXRlZChyZXEuZnVsbF91cmwsIEZhbHNlKQorICAgICAgICByZXR1cm4gcmVzcG9uc2UKKworICAgIGh0dHBzX3JlcXVlc3QgPSBodHRwX3JlcXVlc3QKKyAgICBodHRwc19yZXNwb25zZSA9IGh0dHBfcmVzcG9uc2UKKworCiAKIGNsYXNzIEhUVFBCYXNpY0F1dGhIYW5kbGVyKEFic3RyYWN0QmFzaWNBdXRoSGFuZGxlciwgQmFzZUhhbmRsZXIpOgogCmRpZmYgLS1naXQgYS9MaWIvdXJsbGliL3JvYm90cGFyc2VyLnB5IGIvTGliL3VybGxpYi9yb2JvdHBhcnNlci5weQppbmRleCAxZDdiNzUxLi40ZmJiMGNiIDEwMDY0NAotLS0gYS9MaWIvdXJsbGliL3JvYm90cGFyc2VyLnB5CisrKyBiL0xpYi91cmxsaWIvcm9ib3RwYXJzZXIucHkKQEAgLTE3Miw3ICsxNzIsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi5wYXRoID09ICIqIiBvciBmaWxlbmFtZS5zdGFydHN3aXRoKHNlbGYucGF0aCkKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gKHNlbGYuYWxsb3dhbmNlIGFuZCAiQWxsb3ciIG9yICJEaXNhbGxvdyIpICsgIjogIiArIHNlbGYucGF0aAorICAgICAgICByZXR1cm4gKCJBbGxvdyIgaWYgc2VsZi5hbGxvd2FuY2UgZWxzZSAiRGlzYWxsb3ciKSArICI6ICIgKyBzZWxmLnBhdGgKIAogCiBjbGFzcyBFbnRyeToKZGlmZiAtLWdpdCBhL0xpYi91dWlkLnB5IGIvTGliL3V1aWQucHkKaW5kZXggMTA2MWJmZi4uNWIyNGUyYyAxMDA2NDQKLS0tIGEvTGliL3V1aWQucHkKKysrIGIvTGliL3V1aWQucHkKQEAgLTQ0LDYgKzQ0LDggQEAKICAgICBVVUlEKCcwMDAxMDIwMy0wNDA1LTA2MDctMDgwOS0wYTBiMGMwZDBlMGYnKQogIiIiCiAKK2ltcG9ydCBvcworCiBfX2F1dGhvcl9fID0gJ0thLVBpbmcgWWVlIDxwaW5nQHplc3R5LmNhPicKIAogUkVTRVJWRURfTkNTLCBSRkNfNDEyMiwgUkVTRVJWRURfTUlDUk9TT0ZULCBSRVNFUlZFRF9GVVRVUkUgPSBbCkBAIC0xMzksMTAgKzE0MSw4IEBACiAgICAgICAgIGlmIGJ5dGVzX2xlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaWYgbGVuKGJ5dGVzX2xlKSAhPSAxNjoKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdieXRlc19sZSBpcyBub3QgYSAxNi1jaGFyIHN0cmluZycpCi0gICAgICAgICAgICBieXRlcyA9IChieXRlc18ocmV2ZXJzZWQoYnl0ZXNfbGVbMDo0XSkpICsKLSAgICAgICAgICAgICAgICAgICAgIGJ5dGVzXyhyZXZlcnNlZChieXRlc19sZVs0OjZdKSkgKwotICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfKHJldmVyc2VkKGJ5dGVzX2xlWzY6OF0pKSArCi0gICAgICAgICAgICAgICAgICAgICBieXRlc19sZVs4Ol0pCisgICAgICAgICAgICBieXRlcyA9IChieXRlc19sZVs0LTE6Oi0xXSArIGJ5dGVzX2xlWzYtMTo0LTE6LTFdICsKKyAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX2xlWzgtMTo2LTE6LTFdICsgYnl0ZXNfbGVbODpdKQogICAgICAgICBpZiBieXRlcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIGxlbihieXRlcykgIT0gMTY6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignYnl0ZXMgaXMgbm90IGEgMTYtY2hhciBzdHJpbmcnKQpAQCAtMTg3LDExICsxODcsNiBAQAogICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW50ID09IG90aGVyLmludAogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBVVUlEKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmludCAhPSBvdGhlci5pbnQKLSAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCi0KICAgICAjIFEuIFdoYXQncyB0aGUgdmFsdWUgb2YgYmVpbmcgYWJsZSB0byBzb3J0IFVVSURzPwogICAgICMgQS4gVXNlIHRoZW0gYXMga2V5cyBpbiBhIEItVHJlZSBvciBzaW1pbGFyIG1hcHBpbmcuCiAKQEAgLTIyMiw3ICsyMTcsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi5pbnQKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICdVVUlEKCVyKScgJSBzdHIoc2VsZikKKyAgICAgICAgcmV0dXJuICclcyglciknICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzdHIoc2VsZikpCiAKICAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ1VVSUQgb2JqZWN0cyBhcmUgaW1tdXRhYmxlJykKQEAgLTIzNCwxNyArMjI5LDEyIEBACiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgYnl0ZXMoc2VsZik6Ci0gICAgICAgIGJ5dGVzID0gYnl0ZWFycmF5KCkKLSAgICAgICAgZm9yIHNoaWZ0IGluIHJhbmdlKDAsIDEyOCwgOCk6Ci0gICAgICAgICAgICBieXRlcy5pbnNlcnQoMCwgKHNlbGYuaW50ID4+IHNoaWZ0KSAmIDB4ZmYpCi0gICAgICAgIHJldHVybiBieXRlc18oYnl0ZXMpCisgICAgICAgIHJldHVybiBzZWxmLmludC50b19ieXRlcygxNiwgJ2JpZycpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgYnl0ZXNfbGUoc2VsZik6CiAgICAgICAgIGJ5dGVzID0gc2VsZi5ieXRlcwotICAgICAgICByZXR1cm4gKGJ5dGVzXyhyZXZlcnNlZChieXRlc1swOjRdKSkgKwotICAgICAgICAgICAgICAgIGJ5dGVzXyhyZXZlcnNlZChieXRlc1s0OjZdKSkgKwotICAgICAgICAgICAgICAgIGJ5dGVzXyhyZXZlcnNlZChieXRlc1s2OjhdKSkgKworICAgICAgICByZXR1cm4gKGJ5dGVzWzQtMTo6LTFdICsgYnl0ZXNbNi0xOjQtMTotMV0gKyBieXRlc1s4LTE6Ni0xOi0xXSArCiAgICAgICAgICAgICAgICAgYnl0ZXNbODpdKQogCiAgICAgQHByb3BlcnR5CkBAIC0zMTEsMzMgKzMwMSwzOCBAQAogICAgICAgICBpZiBzZWxmLnZhcmlhbnQgPT0gUkZDXzQxMjI6CiAgICAgICAgICAgICByZXR1cm4gaW50KChzZWxmLmludCA+PiA3NikgJiAweGYpCiAKLWRlZiBfcG9wZW4oY29tbWFuZCwgYXJncyk6Ci0gICAgaW1wb3J0IG9zLCBzaHV0aWwKK2RlZiBfcG9wZW4oY29tbWFuZCwgKmFyZ3MpOgorICAgIGltcG9ydCBvcywgc2h1dGlsLCBzdWJwcm9jZXNzCiAgICAgZXhlY3V0YWJsZSA9IHNodXRpbC53aGljaChjb21tYW5kKQogICAgIGlmIGV4ZWN1dGFibGUgaXMgTm9uZToKICAgICAgICAgcGF0aCA9IG9zLnBhdGhzZXAuam9pbigoJy9zYmluJywgJy91c3Ivc2JpbicpKQogICAgICAgICBleGVjdXRhYmxlID0gc2h1dGlsLndoaWNoKGNvbW1hbmQsIHBhdGg9cGF0aCkKICAgICAgICAgaWYgZXhlY3V0YWJsZSBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAjIExDX0FMTCB0byBlbnN1cmUgRW5nbGlzaCBvdXRwdXQsIDI+L2Rldi9udWxsIHRvIHByZXZlbnQgb3V0cHV0IG9uCi0gICAgIyBzdGRlcnIgKE5vdGU6IHdlIGRvbid0IGhhdmUgYW4gZXhhbXBsZSB3aGVyZSB0aGUgd29yZHMgd2Ugc2VhcmNoIGZvcgotICAgICMgYXJlIGFjdHVhbGx5IGxvY2FsaXplZCwgYnV0IGluIHRoZW9yeSBzb21lIHN5c3RlbSBjb3VsZCBkbyBzby4pCi0gICAgY21kID0gJ0xDX0FMTD1DICVzICVzIDI+L2Rldi9udWxsJyAlIChleGVjdXRhYmxlLCBhcmdzKQotICAgIHJldHVybiBvcy5wb3BlbihjbWQpCisgICAgIyBMQ19BTEw9QyB0byBlbnN1cmUgRW5nbGlzaCBvdXRwdXQsIHN0ZGVycj1ERVZOVUxMIHRvIHByZXZlbnQgb3V0cHV0CisgICAgIyBvbiBzdGRlcnIgKE5vdGU6IHdlIGRvbid0IGhhdmUgYW4gZXhhbXBsZSB3aGVyZSB0aGUgd29yZHMgd2Ugc2VhcmNoCisgICAgIyBmb3IgYXJlIGFjdHVhbGx5IGxvY2FsaXplZCwgYnV0IGluIHRoZW9yeSBzb21lIHN5c3RlbSBjb3VsZCBkbyBzby4pCisgICAgZW52ID0gZGljdChvcy5lbnZpcm9uKQorICAgIGVudlsnTENfQUxMJ10gPSAnQycKKyAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbigoZXhlY3V0YWJsZSwpICsgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudikKKyAgICByZXR1cm4gcHJvYwogCiBkZWYgX2ZpbmRfbWFjKGNvbW1hbmQsIGFyZ3MsIGh3X2lkZW50aWZpZXJzLCBnZXRfaW5kZXgpOgogICAgIHRyeToKLSAgICAgICAgcGlwZSA9IF9wb3Blbihjb21tYW5kLCBhcmdzKQotICAgICAgICBpZiBub3QgcGlwZToKKyAgICAgICAgcHJvYyA9IF9wb3Blbihjb21tYW5kLCAqYXJncy5zcGxpdCgpKQorICAgICAgICBpZiBub3QgcHJvYzoKICAgICAgICAgICAgIHJldHVybgotICAgICAgICB3aXRoIHBpcGU6Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiBwaXBlOgorICAgICAgICB3aXRoIHByb2M6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBwcm9jLnN0ZG91dDoKICAgICAgICAgICAgICAgICB3b3JkcyA9IGxpbmUubG93ZXIoKS5yc3RyaXAoKS5zcGxpdCgpCiAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHdvcmRzKSk6CiAgICAgICAgICAgICAgICAgICAgIGlmIHdvcmRzW2ldIGluIGh3X2lkZW50aWZpZXJzOgogICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmQgPSB3b3Jkc1tnZXRfaW5kZXgoaSldCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjID0gaW50KHdvcmQucmVwbGFjZSgnOicsICcnKSwgMTYpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjID0gaW50KHdvcmQucmVwbGFjZShiJzonLCBiJycpLCAxNikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBtYWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWMKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgSW5kZXhFcnJvcik6CkBAIC0zNTQsMTAgKzM0OSwxNyBAQAogICAgICIiIkdldCB0aGUgaGFyZHdhcmUgYWRkcmVzcyBvbiBVbml4IGJ5IHJ1bm5pbmcgaWZjb25maWcuIiIiCiAgICAgIyBUaGlzIHdvcmtzIG9uIExpbnV4ICgnJyBvciAnLWEnKSwgVHJ1NjQgKCctYXYnKSwgYnV0IG5vdCBhbGwgVW5peGVzLgogICAgIGZvciBhcmdzIGluICgnJywgJy1hJywgJy1hdicpOgotICAgICAgICBtYWMgPSBfZmluZF9tYWMoJ2lmY29uZmlnJywgYXJncywgWydod2FkZHInLCAnZXRoZXInXSwgbGFtYmRhIGk6IGkrMSkKKyAgICAgICAgbWFjID0gX2ZpbmRfbWFjKCdpZmNvbmZpZycsIGFyZ3MsIFtiJ2h3YWRkcicsIGInZXRoZXInXSwgbGFtYmRhIGk6IGkrMSkKICAgICAgICAgaWYgbWFjOgogICAgICAgICAgICAgcmV0dXJuIG1hYwogCitkZWYgX2lwX2dldG5vZGUoKToKKyAgICAiIiJHZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3Mgb24gVW5peCBieSBydW5uaW5nIGlwLiIiIgorICAgICMgVGhpcyB3b3JrcyBvbiBMaW51eCB3aXRoIGlwcm91dGUyLgorICAgIG1hYyA9IF9maW5kX21hYygnaXAnLCAnbGluayBsaXN0JywgW2InbGluay9ldGhlciddLCBsYW1iZGEgaTogaSsxKQorICAgIGlmIG1hYzoKKyAgICAgICAgcmV0dXJuIG1hYworCiBkZWYgX2FycF9nZXRub2RlKCk6CiAgICAgIiIiR2V0IHRoZSBoYXJkd2FyZSBhZGRyZXNzIG9uIFVuaXggYnkgcnVubmluZyBhcnAuIiIiCiAgICAgaW1wb3J0IG9zLCBzb2NrZXQKQEAgLTM2NywzMiArMzY5LDMyIEBACiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAjIFRyeSBnZXR0aW5nIHRoZSBNQUMgYWRkciBmcm9tIGFycCBiYXNlZCBvbiBvdXIgSVAgYWRkcmVzcyAoU29sYXJpcykuCi0gICAgcmV0dXJuIF9maW5kX21hYygnYXJwJywgJy1hbicsIFtpcF9hZGRyXSwgbGFtYmRhIGk6IC0xKQorICAgIHJldHVybiBfZmluZF9tYWMoJ2FycCcsICctYW4nLCBbb3MuZnNlbmNvZGUoaXBfYWRkcildLCBsYW1iZGEgaTogLTEpCiAKIGRlZiBfbGFuc2Nhbl9nZXRub2RlKCk6CiAgICAgIiIiR2V0IHRoZSBoYXJkd2FyZSBhZGRyZXNzIG9uIFVuaXggYnkgcnVubmluZyBsYW5zY2FuLiIiIgogICAgICMgVGhpcyBtaWdodCB3b3JrIG9uIEhQLVVYLgotICAgIHJldHVybiBfZmluZF9tYWMoJ2xhbnNjYW4nLCAnLWFpJywgWydsYW4wJ10sIGxhbWJkYSBpOiAwKQorICAgIHJldHVybiBfZmluZF9tYWMoJ2xhbnNjYW4nLCAnLWFpJywgW2InbGFuMCddLCBsYW1iZGEgaTogMCkKIAogZGVmIF9uZXRzdGF0X2dldG5vZGUoKToKICAgICAiIiJHZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3Mgb24gVW5peCBieSBydW5uaW5nIG5ldHN0YXQuIiIiCiAgICAgIyBUaGlzIG1pZ2h0IHdvcmsgb24gQUlYLCBUcnU2NCBVTklYIGFuZCBwcmVzdW1hYmx5IG9uIElSSVguCiAgICAgdHJ5OgotICAgICAgICBwaXBlID0gX3BvcGVuKCduZXRzdGF0JywgJy1pYScpCi0gICAgICAgIGlmIG5vdCBwaXBlOgorICAgICAgICBwcm9jID0gX3BvcGVuKCduZXRzdGF0JywgJy1pYScpCisgICAgICAgIGlmIG5vdCBwcm9jOgogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHdpdGggcGlwZToKLSAgICAgICAgICAgIHdvcmRzID0gcGlwZS5yZWFkbGluZSgpLnJzdHJpcCgpLnNwbGl0KCkKKyAgICAgICAgd2l0aCBwcm9jOgorICAgICAgICAgICAgd29yZHMgPSBwcm9jLnN0ZG91dC5yZWFkbGluZSgpLnJzdHJpcCgpLnNwbGl0KCkKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpID0gd29yZHMuaW5kZXgoJ0FkZHJlc3MnKQorICAgICAgICAgICAgICAgIGkgPSB3b3Jkcy5pbmRleChiJ0FkZHJlc3MnKQogICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBwaXBlOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gcHJvYy5zdGRvdXQ6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICB3b3JkcyA9IGxpbmUucnN0cmlwKCkuc3BsaXQoKQogICAgICAgICAgICAgICAgICAgICB3b3JkID0gd29yZHNbaV0KLSAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHdvcmQpID09IDE3IGFuZCB3b3JkLmNvdW50KCc6JykgPT0gNToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hYyA9IGludCh3b3JkLnJlcGxhY2UoJzonLCAnJyksIDE2KQorICAgICAgICAgICAgICAgICAgICBpZiBsZW4od29yZCkgPT0gMTcgYW5kIHdvcmQuY291bnQoYic6JykgPT0gNToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hYyA9IGludCh3b3JkLnJlcGxhY2UoYic6JywgYicnKSwgMTYpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBtYWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hYwogICAgICAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgSW5kZXhFcnJvcik6CkBAIC00NDcsMzEgKzQ0OSwzNCBAQAogICAgICAgICBpZiB3aW4zMnduZXQuTmV0YmlvcyhuY2IpICE9IDA6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBzdGF0dXMuX3VucGFjaygpCi0gICAgICAgIGJ5dGVzID0gc3RhdHVzLmFkYXB0ZXJfYWRkcmVzcwotICAgICAgICByZXR1cm4gKChieXRlc1swXTw8NDApICsgKGJ5dGVzWzFdPDwzMikgKyAoYnl0ZXNbMl08PDI0KSArCi0gICAgICAgICAgICAgICAgKGJ5dGVzWzNdPDwxNikgKyAoYnl0ZXNbNF08PDgpICsgYnl0ZXNbNV0pCisgICAgICAgIGJ5dGVzID0gc3RhdHVzLmFkYXB0ZXJfYWRkcmVzc1s6Nl0KKyAgICAgICAgaWYgbGVuKGJ5dGVzKSAhPSA2OgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcmV0dXJuIGludC5mcm9tX2J5dGVzKGJ5dGVzLCAnYmlnJykKIAogIyBUaGFua3MgdG8gVGhvbWFzIEhlbGxlciBmb3IgY3R5cGVzIGFuZCBmb3IgaGlzIGhlbHAgd2l0aCBpdHMgdXNlIGhlcmUuCiAKICMgSWYgY3R5cGVzIGlzIGF2YWlsYWJsZSwgdXNlIGl0IHRvIGZpbmQgc3lzdGVtIHJvdXRpbmVzIGZvciBVVUlEIGdlbmVyYXRpb24uCiAjIFhYWCBUaGlzIG1ha2VzIHRoZSBtb2R1bGUgbm9uLXRocmVhZC1zYWZlIQotX3V1aWRfZ2VuZXJhdGVfcmFuZG9tID0gX3V1aWRfZ2VuZXJhdGVfdGltZSA9IF9VdWlkQ3JlYXRlID0gTm9uZQorX3V1aWRfZ2VuZXJhdGVfdGltZSA9IF9VdWlkQ3JlYXRlID0gTm9uZQogdHJ5OgogICAgIGltcG9ydCBjdHlwZXMsIGN0eXBlcy51dGlsCisgICAgaW1wb3J0IHN5cwogCiAgICAgIyBUaGUgdXVpZF9nZW5lcmF0ZV8qIHJvdXRpbmVzIGFyZSBwcm92aWRlZCBieSBsaWJ1dWlkIG9uIGF0IGxlYXN0CiAgICAgIyBMaW51eCBhbmQgRnJlZUJTRCwgYW5kIHByb3ZpZGVkIGJ5IGxpYmMgb24gTWFjIE9TIFguCi0gICAgZm9yIGxpYm5hbWUgaW4gWyd1dWlkJywgJ2MnXToKKyAgICBfbGlibmFtZXMgPSBbJ3V1aWQnXQorICAgIGlmIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CisgICAgICAgIF9saWJuYW1lcy5hcHBlbmQoJ2MnKQorICAgIGZvciBsaWJuYW1lIGluIF9saWJuYW1lczoKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbGliID0gY3R5cGVzLkNETEwoY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5KGxpYm5hbWUpKQotICAgICAgICBleGNlcHQ6CisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBoYXNhdHRyKGxpYiwgJ3V1aWRfZ2VuZXJhdGVfcmFuZG9tJyk6Ci0gICAgICAgICAgICBfdXVpZF9nZW5lcmF0ZV9yYW5kb20gPSBsaWIudXVpZF9nZW5lcmF0ZV9yYW5kb20KICAgICAgICAgaWYgaGFzYXR0cihsaWIsICd1dWlkX2dlbmVyYXRlX3RpbWUnKToKICAgICAgICAgICAgIF91dWlkX2dlbmVyYXRlX3RpbWUgPSBsaWIudXVpZF9nZW5lcmF0ZV90aW1lCi0gICAgICAgICAgICBpZiBfdXVpZF9nZW5lcmF0ZV9yYW5kb20gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgYnJlYWsgICMgZm91bmQgZXZlcnl0aGluZyB3ZSB3ZXJlIGxvb2tpbmcgZm9yCisgICAgICAgICAgICBicmVhaworICAgIGRlbCBfbGlibmFtZXMKIAogICAgICMgVGhlIHV1aWRfZ2VuZXJhdGVfKiBmdW5jdGlvbnMgYXJlIGJyb2tlbiBvbiBNYWNPUyBYIDEwLjUsIGFzIG5vdGVkCiAgICAgIyBpbiBpc3N1ZSAjODYyMSB0aGUgZnVuY3Rpb24gZ2VuZXJhdGVzIHRoZSBzYW1lIHNlcXVlbmNlIG9mIHZhbHVlcwpAQCAtNDgwLDExICs0ODUsMTAgQEAKICAgICAjCiAgICAgIyBBc3N1bWUgdGhhdCB0aGUgdXVpZF9nZW5lcmF0ZSBmdW5jdGlvbnMgYXJlIGJyb2tlbiBmcm9tIDEwLjUgb253YXJkLAogICAgICMgdGhlIHRlc3QgY2FuIGJlIGFkanVzdGVkIHdoZW4gYSBsYXRlciB2ZXJzaW9uIGlzIGZpeGVkLgotICAgIGltcG9ydCBzeXMKICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgIGltcG9ydCBvcwogICAgICAgICBpZiBpbnQob3MudW5hbWUoKS5yZWxlYXNlLnNwbGl0KCcuJylbMF0pID49IDk6Ci0gICAgICAgICAgICBfdXVpZF9nZW5lcmF0ZV9yYW5kb20gPSBfdXVpZF9nZW5lcmF0ZV90aW1lID0gTm9uZQorICAgICAgICAgICAgX3V1aWRfZ2VuZXJhdGVfdGltZSA9IE5vbmUKIAogICAgICMgT24gV2luZG93cyBwcmlvciB0byAyMDAwLCBVdWlkQ3JlYXRlIGdpdmVzIGEgVVVJRCBjb250YWluaW5nIHRoZQogICAgICMgaGFyZHdhcmUgYWRkcmVzcy4gIE9uIFdpbmRvd3MgMjAwMCBhbmQgbGF0ZXIsIFV1aWRDcmVhdGUgbWFrZXMgYQpAQCAtNTE4LDcgKzUyMiw3IEBACiBkZWYgX3JhbmRvbV9nZXRub2RlKCk6CiAgICAgIiIiR2V0IGEgcmFuZG9tIG5vZGUgSUQsIHdpdGggZWlnaHRoIGJpdCBzZXQgYXMgc3VnZ2VzdGVkIGJ5IFJGQyA0MTIyLiIiIgogICAgIGltcG9ydCByYW5kb20KLSAgICByZXR1cm4gcmFuZG9tLnJhbmRyYW5nZSgwLCAxPDw0OCkgfCAweDAxMDAwMDAwMDAwMAorICAgIHJldHVybiByYW5kb20uZ2V0cmFuZGJpdHMoNDgpIHwgMHgwMTAwMDAwMDAwMDAKIAogX25vZGUgPSBOb25lCiAKQEAgLTUzOSw4ICs1NDMsOCBAQAogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICBnZXR0ZXJzID0gW193aW5kbGxfZ2V0bm9kZSwgX25ldGJpb3NfZ2V0bm9kZSwgX2lwY29uZmlnX2dldG5vZGVdCiAgICAgZWxzZToKLSAgICAgICAgZ2V0dGVycyA9IFtfdW5peGRsbF9nZXRub2RlLCBfaWZjb25maWdfZ2V0bm9kZSwgX2FycF9nZXRub2RlLAotICAgICAgICAgICAgICAgICAgIF9sYW5zY2FuX2dldG5vZGUsIF9uZXRzdGF0X2dldG5vZGVdCisgICAgICAgIGdldHRlcnMgPSBbX3VuaXhkbGxfZ2V0bm9kZSwgX2lmY29uZmlnX2dldG5vZGUsIF9pcF9nZXRub2RlLAorICAgICAgICAgICAgICAgICAgIF9hcnBfZ2V0bm9kZSwgX2xhbnNjYW5fZ2V0bm9kZSwgX25ldHN0YXRfZ2V0bm9kZV0KIAogICAgIGZvciBnZXR0ZXIgaW4gZ2V0dGVycyArIFtfcmFuZG9tX2dldG5vZGVdOgogICAgICAgICB0cnk6CkBAIC01NzYsNyArNTgwLDcgQEAKICAgICBfbGFzdF90aW1lc3RhbXAgPSB0aW1lc3RhbXAKICAgICBpZiBjbG9ja19zZXEgaXMgTm9uZToKICAgICAgICAgaW1wb3J0IHJhbmRvbQotICAgICAgICBjbG9ja19zZXEgPSByYW5kb20ucmFuZHJhbmdlKDE8PDE0KSAjIGluc3RlYWQgb2Ygc3RhYmxlIHN0b3JhZ2UKKyAgICAgICAgY2xvY2tfc2VxID0gcmFuZG9tLmdldHJhbmRiaXRzKDE0KSAjIGluc3RlYWQgb2Ygc3RhYmxlIHN0b3JhZ2UKICAgICB0aW1lX2xvdyA9IHRpbWVzdGFtcCAmIDB4ZmZmZmZmZmYKICAgICB0aW1lX21pZCA9ICh0aW1lc3RhbXAgPj4gMzIpICYgMHhmZmZmCiAgICAgdGltZV9oaV92ZXJzaW9uID0gKHRpbWVzdGFtcCA+PiA0OCkgJiAweDBmZmYKQEAgLTU5NSwyMSArNTk5LDcgQEAKIAogZGVmIHV1aWQ0KCk6CiAgICAgIiIiR2VuZXJhdGUgYSByYW5kb20gVVVJRC4iIiIKLQotICAgICMgV2hlbiB0aGUgc3lzdGVtIHByb3ZpZGVzIGEgdmVyc2lvbi00IFVVSUQgZ2VuZXJhdG9yLCB1c2UgaXQuCi0gICAgaWYgX3V1aWRfZ2VuZXJhdGVfcmFuZG9tOgotICAgICAgICBfYnVmZmVyID0gY3R5cGVzLmNyZWF0ZV9zdHJpbmdfYnVmZmVyKDE2KQotICAgICAgICBfdXVpZF9nZW5lcmF0ZV9yYW5kb20oX2J1ZmZlcikKLSAgICAgICAgcmV0dXJuIFVVSUQoYnl0ZXM9Ynl0ZXNfKF9idWZmZXIucmF3KSkKLQotICAgICMgT3RoZXJ3aXNlLCBnZXQgcmFuZG9tbmVzcyBmcm9tIHVyYW5kb20gb3IgdGhlICdyYW5kb20nIG1vZHVsZS4KLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBvcwotICAgICAgICByZXR1cm4gVVVJRChieXRlcz1vcy51cmFuZG9tKDE2KSwgdmVyc2lvbj00KQotICAgIGV4Y2VwdDoKLSAgICAgICAgaW1wb3J0IHJhbmRvbQotICAgICAgICBieXRlcyA9IGJ5dGVzXyhyYW5kb20ucmFuZHJhbmdlKDI1NikgZm9yIGkgaW4gcmFuZ2UoMTYpKQotICAgICAgICByZXR1cm4gVVVJRChieXRlcz1ieXRlcywgdmVyc2lvbj00KQorICAgIHJldHVybiBVVUlEKGJ5dGVzPW9zLnVyYW5kb20oMTYpLCB2ZXJzaW9uPTQpCiAKIGRlZiB1dWlkNShuYW1lc3BhY2UsIG5hbWUpOgogICAgICIiIkdlbmVyYXRlIGEgVVVJRCBmcm9tIHRoZSBTSEEtMSBoYXNoIG9mIGEgbmFtZXNwYWNlIFVVSUQgYW5kIGEgbmFtZS4iIiIKZGlmZiAtLWdpdCBhL0xpYi93YXJuaW5ncy5weSBiL0xpYi93YXJuaW5ncy5weQppbmRleCA3MGQwODdlLi4xZDRmYjIwIDEwMDY0NAotLS0gYS9MaWIvd2FybmluZ3MucHkKKysrIGIvTGliL3dhcm5pbmdzLnB5CkBAIC0xNjAsNiArMTYwLDIwIEBACiAgICAgcmV0dXJuIGNhdAogCiAKK2RlZiBfaXNfaW50ZXJuYWxfZnJhbWUoZnJhbWUpOgorICAgICIiIlNpZ25hbCB3aGV0aGVyIHRoZSBmcmFtZSBpcyBhbiBpbnRlcm5hbCBDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbC4iIiIKKyAgICBmaWxlbmFtZSA9IGZyYW1lLmZfY29kZS5jb19maWxlbmFtZQorICAgIHJldHVybiAnaW1wb3J0bGliJyBpbiBmaWxlbmFtZSBhbmQgJ19ib290c3RyYXAnIGluIGZpbGVuYW1lCisKKworZGVmIF9uZXh0X2V4dGVybmFsX2ZyYW1lKGZyYW1lKToKKyAgICAiIiJGaW5kIHRoZSBuZXh0IGZyYW1lIHRoYXQgZG9lc24ndCBpbnZvbHZlIENQeXRob24gaW50ZXJuYWxzLiIiIgorICAgIGZyYW1lID0gZnJhbWUuZl9iYWNrCisgICAgd2hpbGUgZnJhbWUgaXMgbm90IE5vbmUgYW5kIF9pc19pbnRlcm5hbF9mcmFtZShmcmFtZSk6CisgICAgICAgIGZyYW1lID0gZnJhbWUuZl9iYWNrCisgICAgcmV0dXJuIGZyYW1lCisKKwogIyBDb2RlIHR5cGljYWxseSByZXBsYWNlZCBieSBfd2FybmluZ3MKIGRlZiB3YXJuKG1lc3NhZ2UsIGNhdGVnb3J5PU5vbmUsIHN0YWNrbGV2ZWw9MSk6CiAgICAgIiIiSXNzdWUgYSB3YXJuaW5nLCBvciBtYXliZSBpZ25vcmUgaXQgb3IgcmFpc2UgYW4gZXhjZXB0aW9uLiIiIgpAQCAtMTY5LDE2ICsxODMsMjggQEAKICAgICAjIENoZWNrIGNhdGVnb3J5IGFyZ3VtZW50CiAgICAgaWYgY2F0ZWdvcnkgaXMgTm9uZToKICAgICAgICAgY2F0ZWdvcnkgPSBVc2VyV2FybmluZwotICAgIGFzc2VydCBpc3N1YmNsYXNzKGNhdGVnb3J5LCBXYXJuaW5nKQorICAgIGlmIG5vdCAoaXNpbnN0YW5jZShjYXRlZ29yeSwgdHlwZSkgYW5kIGlzc3ViY2xhc3MoY2F0ZWdvcnksIFdhcm5pbmcpKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjYXRlZ29yeSBtdXN0IGJlIGEgV2FybmluZyBzdWJjbGFzcywgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAnezpzfSciLmZvcm1hdCh0eXBlKGNhdGVnb3J5KS5fX25hbWVfXykpCiAgICAgIyBHZXQgY29udGV4dCBpbmZvcm1hdGlvbgogICAgIHRyeToKLSAgICAgICAgY2FsbGVyID0gc3lzLl9nZXRmcmFtZShzdGFja2xldmVsKQorICAgICAgICBpZiBzdGFja2xldmVsIDw9IDEgb3IgX2lzX2ludGVybmFsX2ZyYW1lKHN5cy5fZ2V0ZnJhbWUoMSkpOgorICAgICAgICAgICAgIyBJZiBmcmFtZSBpcyB0b28gc21hbGwgdG8gY2FyZSBvciBpZiB0aGUgd2FybmluZyBvcmlnaW5hdGVkIGluCisgICAgICAgICAgICAjIGludGVybmFsIGNvZGUsIHRoZW4gZG8gbm90IHRyeSB0byBoaWRlIGFueSBmcmFtZXMuCisgICAgICAgICAgICBmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoc3RhY2tsZXZlbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZSgxKQorICAgICAgICAgICAgIyBMb29rIGZvciBvbmUgZnJhbWUgbGVzcyBzaW5jZSB0aGUgYWJvdmUgbGluZSBzdGFydHMgdXMgb2ZmLgorICAgICAgICAgICAgZm9yIHggaW4gcmFuZ2Uoc3RhY2tsZXZlbC0xKToKKyAgICAgICAgICAgICAgICBmcmFtZSA9IF9uZXh0X2V4dGVybmFsX2ZyYW1lKGZyYW1lKQorICAgICAgICAgICAgICAgIGlmIGZyYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgZ2xvYmFscyA9IHN5cy5fX2RpY3RfXwogICAgICAgICBsaW5lbm8gPSAxCiAgICAgZWxzZToKLSAgICAgICAgZ2xvYmFscyA9IGNhbGxlci5mX2dsb2JhbHMKLSAgICAgICAgbGluZW5vID0gY2FsbGVyLmZfbGluZW5vCisgICAgICAgIGdsb2JhbHMgPSBmcmFtZS5mX2dsb2JhbHMKKyAgICAgICAgbGluZW5vID0gZnJhbWUuZl9saW5lbm8KICAgICBpZiAnX19uYW1lX18nIGluIGdsb2JhbHM6CiAgICAgICAgIG1vZHVsZSA9IGdsb2JhbHNbJ19fbmFtZV9fJ10KICAgICBlbHNlOgpAQCAtMTg2LDcgKzIxMiw3IEBACiAgICAgZmlsZW5hbWUgPSBnbG9iYWxzLmdldCgnX19maWxlX18nKQogICAgIGlmIGZpbGVuYW1lOgogICAgICAgICBmbmwgPSBmaWxlbmFtZS5sb3dlcigpCi0gICAgICAgIGlmIGZubC5lbmRzd2l0aCgoIi5weWMiLCAiLnB5byIpKToKKyAgICAgICAgaWYgZm5sLmVuZHN3aXRoKCIucHljIik6CiAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lWzotMV0KICAgICBlbHNlOgogICAgICAgICBpZiBtb2R1bGUgPT0gIl9fbWFpbl9fIjoKQEAgLTM3Miw3ICszOTgsNiBAQAogICAgIGRlZmF1bHRhY3Rpb24gPSBfZGVmYXVsdGFjdGlvbgogICAgIG9uY2VyZWdpc3RyeSA9IF9vbmNlcmVnaXN0cnkKICAgICBfd2FybmluZ3NfZGVmYXVsdHMgPSBUcnVlCi0KIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBmaWx0ZXJzID0gW10KICAgICBkZWZhdWx0YWN0aW9uID0gImRlZmF1bHQiCmRpZmYgLS1naXQgYS9MaWIvd2Vha3JlZi5weSBiL0xpYi93ZWFrcmVmLnB5CmluZGV4IDVkMDk0OTcuLjI5NjhmYjkgMTAwNjQ0Ci0tLSBhL0xpYi93ZWFrcmVmLnB5CisrKyBiL0xpYi93ZWFrcmVmLnB5CkBAIC0xNTAsNyArMTUwLDcgQEAKICAgICAgICAgcmV0dXJuIG8gaXMgbm90IE5vbmUKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8V2Vha1ZhbHVlRGljdGlvbmFyeSBhdCAlcz4iICUgaWQoc2VsZikKKyAgICAgICAgcmV0dXJuICI8JXMgYXQgJSN4PiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGlkKHNlbGYpKQogCiAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgogICAgICAgICBpZiBzZWxmLl9wZW5kaW5nX3JlbW92YWxzOgpAQCAtMzcyLDcgKzM3Miw3IEBACiAgICAgICAgIHJldHVybiBsZW4oc2VsZi5kYXRhKSAtIGxlbihzZWxmLl9wZW5kaW5nX3JlbW92YWxzKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxXZWFrS2V5RGljdGlvbmFyeSBhdCAlcz4iICUgaWQoc2VsZikKKyAgICAgICAgcmV0dXJuICI8JXMgYXQgJSN4PiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGlkKHNlbGYpKQogCiAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgogICAgICAgICBzZWxmLmRhdGFbcmVmKGtleSwgc2VsZi5fcmVtb3ZlKV0gPSB2YWx1ZQpkaWZmIC0tZ2l0IGEvTGliL3dzZ2lyZWYvaGVhZGVycy5weSBiL0xpYi93c2dpcmVmL2hlYWRlcnMucHkKaW5kZXggZDkzOTYyOC4uN2U2NzBiMyAxMDA2NDQKLS0tIGEvTGliL3dzZ2lyZWYvaGVhZGVycy5weQorKysgYi9MaWIvd3NnaXJlZi9oZWFkZXJzLnB5CkBAIC0yNiwxMCArMjYsMTAgQEAKIAogCiBjbGFzcyBIZWFkZXJzOgotCiAgICAgIiIiTWFuYWdlIGEgY29sbGVjdGlvbiBvZiBIVFRQIHJlc3BvbnNlIGhlYWRlcnMiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLGhlYWRlcnMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoZWFkZXJzPU5vbmUpOgorICAgICAgICBoZWFkZXJzID0gaGVhZGVycyBpZiBoZWFkZXJzIGlzIG5vdCBOb25lIGVsc2UgW10KICAgICAgICAgaWYgdHlwZShoZWFkZXJzKSBpcyBub3QgbGlzdDoKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiSGVhZGVycyBtdXN0IGJlIGEgbGlzdCBvZiBuYW1lL3ZhbHVlIHR1cGxlcyIpCiAgICAgICAgIHNlbGYuX2hlYWRlcnMgPSBoZWFkZXJzCkBAIC0xMzEsNyArMTMxLDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX2hlYWRlcnNbOl0KIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJIZWFkZXJzKCVyKSIgJSBzZWxmLl9oZWFkZXJzCisgICAgICAgIHJldHVybiAiJXMoJXIpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5faGVhZGVycykKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICAiIiJzdHIoKSByZXR1cm5zIHRoZSBmb3JtYXR0ZWQgaGVhZGVycywgY29tcGxldGUgd2l0aCBlbmQgbGluZSwKZGlmZiAtLWdpdCBhL0xpYi94bWwvZG9tL21pbmlkb20ucHkgYi9MaWIveG1sL2RvbS9taW5pZG9tLnB5CmluZGV4IGMzNzlhMzMuLmE1ZDgxM2YgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZG9tL21pbmlkb20ucHkKKysrIGIvTGliL3htbC9kb20vbWluaWRvbS5weQpAQCAtNTQ1LDkgKzU0NSw2IEBACiAgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpIDwgMAogCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpICE9IDAKLQogICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBhdHRuYW1lX29yX3R1cGxlKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShhdHRuYW1lX29yX3R1cGxlLCB0dXBsZSk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnNOU1thdHRuYW1lX29yX3R1cGxlXQpAQCAtNjQ4LDkgKzY0NSwxMCBAQAogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICBpZiBzZWxmLm5hbWVzcGFjZToKLSAgICAgICAgICAgIHJldHVybiAiPFR5cGVJbmZvICVyIChmcm9tICVyKT4iICUgKHNlbGYubmFtZSwgc2VsZi5uYW1lc3BhY2UpCisgICAgICAgICAgICByZXR1cm4gIjwlcyAlciAoZnJvbSAlcik+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uYW1lc3BhY2UpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gIjxUeXBlSW5mbyAlcj4iICUgc2VsZi5uYW1lCisgICAgICAgICAgICByZXR1cm4gIjwlcyAlcj4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLm5hbWUpCiAKICAgICBkZWYgX2dldF9uYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5uYW1lCmRpZmYgLS1naXQgYS9MaWIveG1sL2RvbS94bWxidWlsZGVyLnB5IGIvTGliL3htbC9kb20veG1sYnVpbGRlci5weQppbmRleCBkNzk4NjI0Li40NDRmMGIyIDEwMDY0NAotLS0gYS9MaWIveG1sL2RvbS94bWxidWlsZGVyLnB5CisrKyBiL0xpYi94bWwvZG9tL3htbGJ1aWxkZXIucHkKQEAgLTEsNiArMSw3IEBACiAiIiJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgRE9NIExldmVsIDMgJ0xTLUxvYWQnIGZlYXR1cmUuIiIiCiAKIGltcG9ydCBjb3B5CitpbXBvcnQgd2FybmluZ3MKIGltcG9ydCB4bWwuZG9tCiAKIGZyb20geG1sLmRvbS5Ob2RlRmlsdGVyIGltcG9ydCBOb2RlRmlsdGVyCkBAIC0zMzEsMTMgKzMzMiwzMyBAQAogZGVsIE5vZGVGaWx0ZXIKIAogCitjbGFzcyBfQXN5bmNEZXByZWNhdGVkUHJvcGVydHk6CisgICAgZGVmIHdhcm4oc2VsZiwgY2xzKToKKyAgICAgICAgY2xzbmFtZSA9IGNscy5fX25hbWVfXworICAgICAgICB3YXJuaW5ncy53YXJuKAorICAgICAgICAgICAgIntjbHN9LmFzeW5jIGlzIGRlcHJlY2F0ZWQ7IHVzZSB7Y2xzfS5hc3luY18iLmZvcm1hdChjbHM9Y2xzbmFtZSksCisgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCisKKyAgICBkZWYgX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgY2xzKToKKyAgICAgICAgc2VsZi53YXJuKGNscykKKyAgICAgICAgaWYgaW5zdGFuY2UgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2UuYXN5bmNfCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKToKKyAgICAgICAgc2VsZi53YXJuKHR5cGUoaW5zdGFuY2UpKQorICAgICAgICBzZXRhdHRyKGluc3RhbmNlLCAnYXN5bmNfJywgdmFsdWUpCisKKwogY2xhc3MgRG9jdW1lbnRMUzoKICAgICAiIiJNaXhpbiB0byBjcmVhdGUgZG9jdW1lbnRzIHRoYXQgY29uZm9ybSB0byB0aGUgbG9hZC9zYXZlIHNwZWMuIiIiCiAKLSAgICBhc3luYyA9IEZhbHNlCisgICAgYXN5bmMgPSBfQXN5bmNEZXByZWNhdGVkUHJvcGVydHkoKQorICAgIGFzeW5jXyA9IEZhbHNlCiAKICAgICBkZWYgX2dldF9hc3luYyhzZWxmKToKICAgICAgICAgcmV0dXJuIEZhbHNlCisKICAgICBkZWYgX3NldF9hc3luYyhzZWxmLCBhc3luYyk6CiAgICAgICAgIGlmIGFzeW5jOgogICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob3RTdXBwb3J0ZWRFcnIoCkBAIC0zNjMsNiArMzg0LDkgQEAKICAgICAgICAgcmV0dXJuIHNub2RlLnRveG1sKCkKIAogCitkZWwgX0FzeW5jRGVwcmVjYXRlZFByb3BlcnR5CisKKwogY2xhc3MgRE9NSW1wbGVtZW50YXRpb25MUzoKICAgICBNT0RFX1NZTkNIUk9OT1VTID0gMQogICAgIE1PREVfQVNZTkNIUk9OT1VTID0gMgpkaWZmIC0tZ2l0IGEvTGliL3htbC9ldHJlZS9FbGVtZW50UGF0aC5weSBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFBhdGgucHkKaW5kZXggZDkxNGRkYi4uNWRlNDIzMiAxMDA2NDQKLS0tIGEvTGliL3htbC9ldHJlZS9FbGVtZW50UGF0aC5weQorKysgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRQYXRoLnB5CkBAIC0xMTQsNyArMTE0LDEwIEBACiAgICAgcmV0dXJuIHNlbGVjdAogCiBkZWYgcHJlcGFyZV9kZXNjZW5kYW50KG5leHQsIHRva2VuKToKLSAgICB0b2tlbiA9IG5leHQoKQorICAgIHRyeToKKyAgICAgICAgdG9rZW4gPSBuZXh0KCkKKyAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgcmV0dXJuCiAgICAgaWYgdG9rZW5bMF0gPT0gIioiOgogICAgICAgICB0YWcgPSAiKiIKICAgICBlbGlmIG5vdCB0b2tlblswXToKQEAgLTE0OCw3ICsxNTEsMTAgQEAKICAgICBzaWduYXR1cmUgPSBbXQogICAgIHByZWRpY2F0ZSA9IFtdCiAgICAgd2hpbGUgMToKLSAgICAgICAgdG9rZW4gPSBuZXh0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4gPSBuZXh0KCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgdG9rZW5bMF0gPT0gIl0iOgogICAgICAgICAgICAgYnJlYWsKICAgICAgICAgaWYgdG9rZW5bMF0gYW5kIHRva2VuWzBdWzoxXSBpbiAiJ1wiIjoKQEAgLTI2MSw3ICsyNjcsMTAgQEAKICAgICAgICAgaWYgcGF0aFs6MV0gPT0gIi8iOgogICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IoImNhbm5vdCB1c2UgYWJzb2x1dGUgcGF0aCBvbiBlbGVtZW50IikKICAgICAgICAgbmV4dCA9IGl0ZXIoeHBhdGhfdG9rZW5pemVyKHBhdGgsIG5hbWVzcGFjZXMpKS5fX25leHRfXwotICAgICAgICB0b2tlbiA9IG5leHQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2tlbiA9IG5leHQoKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxlY3RvciA9IFtdCiAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICB0cnk6CkBAIC0yODYsMTAgKzI5NSw3IEBACiAjIEZpbmQgZmlyc3QgbWF0Y2hpbmcgb2JqZWN0LgogCiBkZWYgZmluZChlbGVtLCBwYXRoLCBuYW1lc3BhY2VzPU5vbmUpOgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIG5leHQoaXRlcmZpbmQoZWxlbSwgcGF0aCwgbmFtZXNwYWNlcykpCi0gICAgZXhjZXB0IFN0b3BJdGVyYXRpb246Ci0gICAgICAgIHJldHVybiBOb25lCisgICAgcmV0dXJuIG5leHQoaXRlcmZpbmQoZWxlbSwgcGF0aCwgbmFtZXNwYWNlcyksIE5vbmUpCiAKICMjCiAjIEZpbmQgYWxsIG1hdGNoaW5nIG9iamVjdHMuCmRpZmYgLS1naXQgYS9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5IGIvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weQppbmRleCA1YTA5YjM1Li5iNGUxMTBkIDEwMDY0NAotLS0gYS9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5CisrKyBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkKQEAgLTE3NCw3ICsxNzQsNyBAQAogICAgICAgICBzZWxmLl9jaGlsZHJlbiA9IFtdCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPEVsZW1lbnQgJXMgYXQgMHgleD4iICUgKHJlcHIoc2VsZi50YWcpLCBpZChzZWxmKSkKKyAgICAgICAgcmV0dXJuICI8JXMgJXIgYXQgJSN4PiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYudGFnLCBpZChzZWxmKSkKIAogICAgIGRlZiBtYWtlZWxlbWVudChzZWxmLCB0YWcsIGF0dHJpYik6CiAgICAgICAgICIiIkNyZWF0ZSBhIG5ldyBlbGVtZW50IHdpdGggdGhlIHNhbWUgdHlwZS4KQEAgLTQyOCwxMiArNDI4LDE0IEBACiAgICAgICAgIHRhZyA9IHNlbGYudGFnCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHRhZywgc3RyKSBhbmQgdGFnIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIHNlbGYudGV4dDoKLSAgICAgICAgICAgIHlpZWxkIHNlbGYudGV4dAorICAgICAgICB0ID0gc2VsZi50ZXh0CisgICAgICAgIGlmIHQ6CisgICAgICAgICAgICB5aWVsZCB0CiAgICAgICAgIGZvciBlIGluIHNlbGY6CiAgICAgICAgICAgICB5aWVsZCBmcm9tIGUuaXRlcnRleHQoKQotICAgICAgICAgICAgaWYgZS50YWlsOgotICAgICAgICAgICAgICAgIHlpZWxkIGUudGFpbAorICAgICAgICAgICAgdCA9IGUudGFpbAorICAgICAgICAgICAgaWYgdDoKKyAgICAgICAgICAgICAgICB5aWVsZCB0CiAKIAogZGVmIFN1YkVsZW1lbnQocGFyZW50LCB0YWcsIGF0dHJpYj17fSwgKipleHRyYSk6CkBAIC01MDksNyArNTExLDcgQEAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYudGV4dAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICc8UU5hbWUgJXI+JyAlIChzZWxmLnRleHQsKQorICAgICAgICByZXR1cm4gJzwlcyAlcj4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLnRleHQpCiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgICByZXR1cm4gaGFzaChzZWxmLnRleHQpCiAgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CkBAIC01MzIsMTAgKzUzNCw2IEBACiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIFFOYW1lKToKICAgICAgICAgICAgIHJldHVybiBzZWxmLnRleHQgPT0gb3RoZXIudGV4dAogICAgICAgICByZXR1cm4gc2VsZi50ZXh0ID09IG90aGVyCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIFFOYW1lKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnRleHQgIT0gb3RoZXIudGV4dAotICAgICAgICByZXR1cm4gc2VsZi50ZXh0ICE9IG90aGVyCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvTGliL3htbC9zYXgvX19pbml0X18ucHkgYi9MaWIveG1sL3NheC9fX2luaXRfXy5weQppbmRleCBiMTYxYjFmLi5lZjY3YWU2IDEwMDY0NAotLS0gYS9MaWIveG1sL3NheC9fX2luaXRfXy5weQorKysgYi9MaWIveG1sL3NheC9fX2luaXRfXy5weQpAQCAtMzMsOCArMzMsNyBAQAogICAgIHBhcnNlci5wYXJzZShzb3VyY2UpCiAKIGRlZiBwYXJzZVN0cmluZyhzdHJpbmcsIGhhbmRsZXIsIGVycm9ySGFuZGxlcj1FcnJvckhhbmRsZXIoKSk6Ci0gICAgZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwotCisgICAgaW1wb3J0IGlvCiAgICAgaWYgZXJyb3JIYW5kbGVyIGlzIE5vbmU6CiAgICAgICAgIGVycm9ySGFuZGxlciA9IEVycm9ySGFuZGxlcigpCiAgICAgcGFyc2VyID0gbWFrZV9wYXJzZXIoKQpAQCAtNDIsNyArNDEsMTAgQEAKICAgICBwYXJzZXIuc2V0RXJyb3JIYW5kbGVyKGVycm9ySGFuZGxlcikKIAogICAgIGlucHNyYyA9IElucHV0U291cmNlKCkKLSAgICBpbnBzcmMuc2V0Qnl0ZVN0cmVhbShCeXRlc0lPKHN0cmluZykpCisgICAgaWYgaXNpbnN0YW5jZShzdHJpbmcsIHN0cik6CisgICAgICAgIGlucHNyYy5zZXRDaGFyYWN0ZXJTdHJlYW0oaW8uU3RyaW5nSU8oc3RyaW5nKSkKKyAgICBlbHNlOgorICAgICAgICBpbnBzcmMuc2V0Qnl0ZVN0cmVhbShpby5CeXRlc0lPKHN0cmluZykpCiAgICAgcGFyc2VyLnBhcnNlKGlucHNyYykKIAogIyB0aGlzIGlzIHRoZSBwYXJzZXIgbGlzdCB1c2VkIGJ5IHRoZSBtYWtlX3BhcnNlciBmdW5jdGlvbiBpZiBubwpkaWZmIC0tZ2l0IGEvTGliL3htbC9zYXgvZXhwYXRyZWFkZXIucHkgYi9MaWIveG1sL3NheC9leHBhdHJlYWRlci5weQppbmRleCAzYjYzNzM3Li45OGI1Y2E5IDEwMDY0NAotLS0gYS9MaWIveG1sL3NheC9leHBhdHJlYWRlci5weQorKysgYi9MaWIveG1sL3NheC9leHBhdHJlYWRlci5weQpAQCAtMjMyLDkgKzIzMiwxNCBAQAogICAgICAgICAgICAgICAgIHBhcnNlci5FcnJvckNvbHVtbk51bWJlciA9IHNlbGYuX3BhcnNlci5FcnJvckNvbHVtbk51bWJlcgogICAgICAgICAgICAgICAgIHBhcnNlci5FcnJvckxpbmVOdW1iZXIgPSBzZWxmLl9wYXJzZXIuRXJyb3JMaW5lTnVtYmVyCiAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VyID0gcGFyc2VyCi0gICAgICAgICAgICBicyA9IHNlbGYuX3NvdXJjZS5nZXRCeXRlU3RyZWFtKCkKLSAgICAgICAgICAgIGlmIGJzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGJzLmNsb3NlKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmaWxlID0gc2VsZi5fc291cmNlLmdldENoYXJhY3RlclN0cmVhbSgpCisgICAgICAgICAgICAgICAgaWYgZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZmlsZS5jbG9zZSgpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGZpbGUgPSBzZWxmLl9zb3VyY2UuZ2V0Qnl0ZVN0cmVhbSgpCisgICAgICAgICAgICAgICAgaWYgZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZmlsZS5jbG9zZSgpCiAKICAgICBkZWYgX3Jlc2V0X2NvbnRfaGFuZGxlcihzZWxmKToKICAgICAgICAgc2VsZi5fcGFyc2VyLlByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIgPSBcCmRpZmYgLS1naXQgYS9MaWIveG1sL3NheC9zYXh1dGlscy5weSBiL0xpYi94bWwvc2F4L3NheHV0aWxzLnB5CmluZGV4IDFkM2QwZWMuLmE2OWM3ZjcgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvc2F4L3NheHV0aWxzLnB5CisrKyBiL0xpYi94bWwvc2F4L3NheHV0aWxzLnB5CkBAIC0zNDUsMTEgKzM0NSwxNCBAQAogICAgIGVsaWYgaGFzYXR0cihzb3VyY2UsICJyZWFkIik6CiAgICAgICAgIGYgPSBzb3VyY2UKICAgICAgICAgc291cmNlID0geG1scmVhZGVyLklucHV0U291cmNlKCkKLSAgICAgICAgc291cmNlLnNldEJ5dGVTdHJlYW0oZikKKyAgICAgICAgaWYgaXNpbnN0YW5jZShmLnJlYWQoMCksIHN0cik6CisgICAgICAgICAgICBzb3VyY2Uuc2V0Q2hhcmFjdGVyU3RyZWFtKGYpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzb3VyY2Uuc2V0Qnl0ZVN0cmVhbShmKQogICAgICAgICBpZiBoYXNhdHRyKGYsICJuYW1lIikgYW5kIGlzaW5zdGFuY2UoZi5uYW1lLCBzdHIpOgogICAgICAgICAgICAgc291cmNlLnNldFN5c3RlbUlkKGYubmFtZSkKIAotICAgIGlmIHNvdXJjZS5nZXRCeXRlU3RyZWFtKCkgaXMgTm9uZToKKyAgICBpZiBzb3VyY2UuZ2V0Q2hhcmFjdGVyU3RyZWFtKCkgaXMgTm9uZSBhbmQgc291cmNlLmdldEJ5dGVTdHJlYW0oKSBpcyBOb25lOgogICAgICAgICBzeXNpZCA9IHNvdXJjZS5nZXRTeXN0ZW1JZCgpCiAgICAgICAgIGJhc2VoZWFkID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGgubm9ybXBhdGgoYmFzZSkpCiAgICAgICAgIHN5c2lkZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oYmFzZWhlYWQsIHN5c2lkKQpkaWZmIC0tZ2l0IGEvTGliL3htbC9zYXgveG1scmVhZGVyLnB5IGIvTGliL3htbC9zYXgveG1scmVhZGVyLnB5CmluZGV4IDdlZjQ5N2YuLjcxNmYyMjggMTAwNjQ0Ci0tLSBhL0xpYi94bWwvc2F4L3htbHJlYWRlci5weQorKysgYi9MaWIveG1sL3NheC94bWxyZWFkZXIucHkKQEAgLTExNyw3ICsxMTcsOSBAQAogICAgICAgICBzb3VyY2UgPSBzYXh1dGlscy5wcmVwYXJlX2lucHV0X3NvdXJjZShzb3VyY2UpCiAKICAgICAgICAgc2VsZi5wcmVwYXJlUGFyc2VyKHNvdXJjZSkKLSAgICAgICAgZmlsZSA9IHNvdXJjZS5nZXRCeXRlU3RyZWFtKCkKKyAgICAgICAgZmlsZSA9IHNvdXJjZS5nZXRDaGFyYWN0ZXJTdHJlYW0oKQorICAgICAgICBpZiBmaWxlIGlzIE5vbmU6CisgICAgICAgICAgICBmaWxlID0gc291cmNlLmdldEJ5dGVTdHJlYW0oKQogICAgICAgICBidWZmZXIgPSBmaWxlLnJlYWQoc2VsZi5fYnVmc2l6ZSkKICAgICAgICAgd2hpbGUgYnVmZmVyOgogICAgICAgICAgICAgc2VsZi5mZWVkKGJ1ZmZlcikKZGlmZiAtLWdpdCBhL0xpYi94bWxycGMvY2xpZW50LnB5IGIvTGliL3htbHJwYy9jbGllbnQucHkKaW5kZXggOWRlNTExMS4uMjVlNjg0ZiAxMDA2NDQKLS0tIGEvTGliL3htbHJwYy9jbGllbnQucHkKKysrIGIvTGliL3htbHJwYy9jbGllbnQucHkKQEAgLTIwOCw4ICsyMDgsOCBAQAogICAgICAgICBzZWxmLmhlYWRlcnMgPSBoZWFkZXJzCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gKAotICAgICAgICAgICAgIjxQcm90b2NvbEVycm9yIGZvciAlczogJXMgJXM+IiAlCi0gICAgICAgICAgICAoc2VsZi51cmwsIHNlbGYuZXJyY29kZSwgc2VsZi5lcnJtc2cpCisgICAgICAgICAgICAiPCVzIGZvciAlczogJXMgJXM+IiAlCisgICAgICAgICAgICAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYudXJsLCBzZWxmLmVycmNvZGUsIHNlbGYuZXJybXNnKQogICAgICAgICAgICAgKQogCiAjIwpAQCAtMjM3LDcgKzIzNyw4IEBACiAgICAgICAgIHNlbGYuZmF1bHRDb2RlID0gZmF1bHRDb2RlCiAgICAgICAgIHNlbGYuZmF1bHRTdHJpbmcgPSBmYXVsdFN0cmluZwogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8RmF1bHQgJXM6ICVyPiIgJSAoc2VsZi5mYXVsdENvZGUsIHNlbGYuZmF1bHRTdHJpbmcpCisgICAgICAgIHJldHVybiAiPCVzICVzOiAlcj4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZhdWx0Q29kZSwgc2VsZi5mYXVsdFN0cmluZykKIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBTcGVjaWFsIHZhbHVlcwpAQCAtMzM5LDEwICszNDAsNiBAQAogICAgICAgICBzLCBvID0gc2VsZi5tYWtlX2NvbXBhcmFibGUob3RoZXIpCiAgICAgICAgIHJldHVybiBzID09IG8KIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBzLCBvID0gc2VsZi5tYWtlX2NvbXBhcmFibGUob3RoZXIpCi0gICAgICAgIHJldHVybiBzICE9IG8KLQogICAgIGRlZiB0aW1ldHVwbGUoc2VsZik6CiAgICAgICAgIHJldHVybiB0aW1lLnN0cnB0aW1lKHNlbGYudmFsdWUsICIlWSVtJWRUJUg6JU06JVMiKQogCkBAIC0zNTUsNyArMzUyLDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8RGF0ZVRpbWUgJXIgYXQgJXg+IiAlIChzZWxmLnZhbHVlLCBpZChzZWxmKSkKKyAgICAgICAgcmV0dXJuICI8JXMgJXIgYXQgJSN4PiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYudmFsdWUsIGlkKHNlbGYpKQogCiAgICAgZGVmIGRlY29kZShzZWxmLCBkYXRhKToKICAgICAgICAgc2VsZi52YWx1ZSA9IHN0cihkYXRhKS5zdHJpcCgpCkBAIC00MDYsMTEgKzQwMyw2IEBACiAgICAgICAgICAgICBvdGhlciA9IG90aGVyLmRhdGEKICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSA9PSBvdGhlcgogCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIEJpbmFyeSk6Ci0gICAgICAgICAgICBvdGhlciA9IG90aGVyLmRhdGEKLSAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSAhPSBvdGhlcgotCiAgICAgZGVmIGRlY29kZShzZWxmLCBkYXRhKToKICAgICAgICAgc2VsZi5kYXRhID0gYmFzZTY0LmRlY29kZWJ5dGVzKGRhdGEpCiAKQEAgLTg1Miw3ICs4NDQsNyBAQAogICAgICAgICBzZWxmLl9fY2FsbF9saXN0ID0gW10KIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8TXVsdGlDYWxsIGF0ICV4PiIgJSBpZChzZWxmKQorICAgICAgICByZXR1cm4gIjwlcyBhdCAlI3g+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgaWQoc2VsZikpCiAKICAgICBfX3N0cl9fID0gX19yZXByX18KIApAQCAtMTAyMywxMiArMTAxNSw5IEBACiAgICAgaWYgbm90IGd6aXA6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKICAgICBmID0gQnl0ZXNJTygpCi0gICAgZ3pmID0gZ3ppcC5HemlwRmlsZShtb2RlPSJ3YiIsIGZpbGVvYmo9ZiwgY29tcHJlc3NsZXZlbD0xKQotICAgIGd6Zi53cml0ZShkYXRhKQotICAgIGd6Zi5jbG9zZSgpCi0gICAgZW5jb2RlZCA9IGYuZ2V0dmFsdWUoKQotICAgIGYuY2xvc2UoKQotICAgIHJldHVybiBlbmNvZGVkCisgICAgd2l0aCBnemlwLkd6aXBGaWxlKG1vZGU9IndiIiwgZmlsZW9iaj1mLCBjb21wcmVzc2xldmVsPTEpIGFzIGd6ZjoKKyAgICAgICAgZ3pmLndyaXRlKGRhdGEpCisgICAgcmV0dXJuIGYuZ2V0dmFsdWUoKQogCiAjIwogIyBEZWNvZGUgYSBzdHJpbmcgdXNpbmcgdGhlIGd6aXAgY29udGVudCBlbmNvZGluZyBzdWNoIGFzIHNwZWNpZmllZCBieSB0aGUKQEAgLTEwNDksMTcgKzEwMzgsMTQgQEAKICAgICAiIiIKICAgICBpZiBub3QgZ3ppcDoKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgotICAgIGYgPSBCeXRlc0lPKGRhdGEpCi0gICAgZ3pmID0gZ3ppcC5HemlwRmlsZShtb2RlPSJyYiIsIGZpbGVvYmo9ZikKLSAgICB0cnk6Ci0gICAgICAgIGlmIG1heF9kZWNvZGUgPCAwOiAjIG5vIGxpbWl0Ci0gICAgICAgICAgICBkZWNvZGVkID0gZ3pmLnJlYWQoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGVjb2RlZCA9IGd6Zi5yZWFkKG1heF9kZWNvZGUgKyAxKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIGRhdGEiKQotICAgIGYuY2xvc2UoKQotICAgIGd6Zi5jbG9zZSgpCisgICAgd2l0aCBnemlwLkd6aXBGaWxlKG1vZGU9InJiIiwgZmlsZW9iaj1CeXRlc0lPKGRhdGEpKSBhcyBnemY6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIG1heF9kZWNvZGUgPCAwOiAjIG5vIGxpbWl0CisgICAgICAgICAgICAgICAgZGVjb2RlZCA9IGd6Zi5yZWFkKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGVjb2RlZCA9IGd6Zi5yZWFkKG1heF9kZWNvZGUgKyAxKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgZGF0YSIpCiAgICAgaWYgbWF4X2RlY29kZSA+PSAwIGFuZCBsZW4oZGVjb2RlZCkgPiBtYXhfZGVjb2RlOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtYXggZ3ppcHBlZCBwYXlsb2FkIGxlbmd0aCBleGNlZWRlZCIpCiAgICAgcmV0dXJuIGRlY29kZWQKQEAgLTExNDksNyArMTEzNSw3IEBACiAgICAgICAgICAgICAgICAgaWYgaSBvciBlLmVycm5vIG5vdCBpbiAoZXJybm8uRUNPTk5SRVNFVCwgZXJybm8uRUNPTk5BQk9SVEVELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vLkVQSVBFKToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGV4Y2VwdCBodHRwLmNsaWVudC5CYWRTdGF0dXNMaW5lOiAjY2xvc2UgYWZ0ZXIgd2Ugc2VudCByZXF1ZXN0CisgICAgICAgICAgICBleGNlcHQgaHR0cC5jbGllbnQuUmVtb3RlRGlzY29ubmVjdGVkOgogICAgICAgICAgICAgICAgIGlmIGk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAKQEAgLTE0NTIsOCArMTQzOCw4IEBACiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIHJldHVybiAoCi0gICAgICAgICAgICAiPFNlcnZlclByb3h5IGZvciAlcyVzPiIgJQotICAgICAgICAgICAgKHNlbGYuX19ob3N0LCBzZWxmLl9faGFuZGxlcikKKyAgICAgICAgICAgICI8JXMgZm9yICVzJXM+IiAlCisgICAgICAgICAgICAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuX19ob3N0LCBzZWxmLl9faGFuZGxlcikKICAgICAgICAgICAgICkKIAogICAgIF9fc3RyX18gPSBfX3JlcHJfXwpAQCAtMTQ3NSw2ICsxNDYxLDEyIEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fX3RyYW5zcG9ydAogICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiQXR0cmlidXRlICVyIG5vdCBmb3VuZCIgJSAoYXR0ciwpKQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuX19jbG9zZSgpCisKICMgY29tcGF0aWJpbGl0eQogCiBTZXJ2ZXIgPSBTZXJ2ZXJQcm94eQpkaWZmIC0tZ2l0IGEvTGliL3ppcGFwcC5weSBiL0xpYi96aXBhcHAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgzODBiZgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi96aXBhcHAucHkKQEAgLTAsMCArMSwyMDAgQEAKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgb3MKK2ltcG9ydCBwYXRobGliCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3RhdAoraW1wb3J0IHN5cworaW1wb3J0IHppcGZpbGUKKworX19hbGxfXyA9IFsnWmlwQXBwRXJyb3InLCAnY3JlYXRlX2FyY2hpdmUnLCAnZ2V0X2ludGVycHJldGVyJ10KKworCisjIFRoZSBfX21haW5fXy5weSB1c2VkIGlmIHRoZSB1c2VycyBzcGVjaWZpZXMgIi1tIG1vZHVsZTpmbiIuCisjIE5vdGUgdGhhdCB0aGlzIHdpbGwgYWx3YXlzIGJlIHdyaXR0ZW4gYXMgVVRGLTggKG1vZHVsZSBhbmQKKyMgZnVuY3Rpb24gbmFtZXMgY2FuIGJlIG5vbi1BU0NJSSBpbiBQeXRob24gMykuCisjIFdlIGFkZCBhIGNvZGluZyBjb29raWUgZXZlbiB0aG91Z2ggVVRGLTggaXMgdGhlIGRlZmF1bHQgaW4gUHl0aG9uIDMKKyMgYmVjYXVzZSB0aGUgcmVzdWx0aW5nIGFyY2hpdmUgbWF5IGJlIGludGVuZGVkIHRvIGJlIHJ1biB1bmRlciBQeXRob24gMi4KK01BSU5fVEVNUExBVEUgPSAiIiJcCisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQoraW1wb3J0IHttb2R1bGV9Cit7bW9kdWxlfS57Zm59KCkKKyIiIgorCisKKyMgVGhlIFdpbmRvd3MgbGF1bmNoZXIgZGVmYXVsdHMgdG8gVVRGLTggd2hlbiBwYXJzaW5nIHNoZWJhbmcgbGluZXMgaWYgdGhlCisjIGZpbGUgaGFzIG5vIEJPTS4gU28gdXNlIFVURi04IG9uIFdpbmRvd3MuCisjIE9uIFVuaXgsIHVzZSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZy4KK2lmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICBzaGViYW5nX2VuY29kaW5nID0gJ3V0Zi04JworZWxzZToKKyAgICBzaGViYW5nX2VuY29kaW5nID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpCisKKworY2xhc3MgWmlwQXBwRXJyb3IoVmFsdWVFcnJvcik6CisgICAgcGFzcworCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgX21heWJlX29wZW4oYXJjaGl2ZSwgbW9kZSk6CisgICAgaWYgaXNpbnN0YW5jZShhcmNoaXZlLCBwYXRobGliLlBhdGgpOgorICAgICAgICBhcmNoaXZlID0gc3RyKGFyY2hpdmUpCisgICAgaWYgaXNpbnN0YW5jZShhcmNoaXZlLCBzdHIpOgorICAgICAgICB3aXRoIG9wZW4oYXJjaGl2ZSwgbW9kZSkgYXMgZjoKKyAgICAgICAgICAgIHlpZWxkIGYKKyAgICBlbHNlOgorICAgICAgICB5aWVsZCBhcmNoaXZlCisKKworZGVmIF93cml0ZV9maWxlX3ByZWZpeChmLCBpbnRlcnByZXRlcik6CisgICAgIiIiV3JpdGUgYSBzaGViYW5nIGxpbmUuIiIiCisgICAgaWYgaW50ZXJwcmV0ZXI6CisgICAgICAgIHNoZWJhbmcgPSBiJyMhJyArIGludGVycHJldGVyLmVuY29kZShzaGViYW5nX2VuY29kaW5nKSArIGInXG4nCisgICAgICAgIGYud3JpdGUoc2hlYmFuZykKKworCitkZWYgX2NvcHlfYXJjaGl2ZShhcmNoaXZlLCBuZXdfYXJjaGl2ZSwgaW50ZXJwcmV0ZXI9Tm9uZSk6CisgICAgIiIiQ29weSBhbiBhcHBsaWNhdGlvbiBhcmNoaXZlLCBtb2RpZnlpbmcgdGhlIHNoZWJhbmcgbGluZS4iIiIKKyAgICB3aXRoIF9tYXliZV9vcGVuKGFyY2hpdmUsICdyYicpIGFzIHNyYzoKKyAgICAgICAgIyBTa2lwIHRoZSBzaGViYW5nIGxpbmUgZnJvbSB0aGUgc291cmNlLgorICAgICAgICAjIFJlYWQgMiBieXRlcyBvZiB0aGUgc291cmNlIGFuZCBjaGVjayBpZiB0aGV5IGFyZSAjIS4KKyAgICAgICAgZmlyc3RfMiA9IHNyYy5yZWFkKDIpCisgICAgICAgIGlmIGZpcnN0XzIgPT0gYicjISc6CisgICAgICAgICAgICAjIERpc2NhcmQgdGhlIGluaXRpYWwgMiBieXRlcyBhbmQgdGhlIHJlc3Qgb2YgdGhlIHNoZWJhbmcgbGluZS4KKyAgICAgICAgICAgIGZpcnN0XzIgPSBiJycKKyAgICAgICAgICAgIHNyYy5yZWFkbGluZSgpCisKKyAgICAgICAgd2l0aCBfbWF5YmVfb3BlbihuZXdfYXJjaGl2ZSwgJ3diJykgYXMgZHN0OgorICAgICAgICAgICAgX3dyaXRlX2ZpbGVfcHJlZml4KGRzdCwgaW50ZXJwcmV0ZXIpCisgICAgICAgICAgICAjIElmIHRoZXJlIHdhcyBubyBzaGViYW5nLCAiZmlyc3RfMiIgY29udGFpbnMgdGhlIGZpcnN0IDIgYnl0ZXMKKyAgICAgICAgICAgICMgb2YgdGhlIHNvdXJjZSBmaWxlLCBzbyB3cml0ZSB0aGVtIGJlZm9yZSBjb3B5aW5nIHRoZSByZXN0CisgICAgICAgICAgICAjIG9mIHRoZSBmaWxlLgorICAgICAgICAgICAgZHN0LndyaXRlKGZpcnN0XzIpCisgICAgICAgICAgICBzaHV0aWwuY29weWZpbGVvYmooc3JjLCBkc3QpCisKKyAgICBpZiBpbnRlcnByZXRlciBhbmQgaXNpbnN0YW5jZShuZXdfYXJjaGl2ZSwgc3RyKToKKyAgICAgICAgb3MuY2htb2QobmV3X2FyY2hpdmUsIG9zLnN0YXQobmV3X2FyY2hpdmUpLnN0X21vZGUgfCBzdGF0LlNfSUVYRUMpCisKKworZGVmIGNyZWF0ZV9hcmNoaXZlKHNvdXJjZSwgdGFyZ2V0PU5vbmUsIGludGVycHJldGVyPU5vbmUsIG1haW49Tm9uZSk6CisgICAgIiIiQ3JlYXRlIGFuIGFwcGxpY2F0aW9uIGFyY2hpdmUgZnJvbSBTT1VSQ0UuCisKKyAgICBUaGUgU09VUkNFIGNhbiBiZSB0aGUgbmFtZSBvZiBhIGRpcmVjdG9yeSwgb3IgYSBmaWxlbmFtZSBvciBhIGZpbGUtbGlrZQorICAgIG9iamVjdCByZWZlcnJpbmcgdG8gYW4gZXhpc3RpbmcgYXJjaGl2ZS4KKworICAgIFRoZSBjb250ZW50IG9mIFNPVVJDRSBpcyBwYWNrZWQgaW50byBhbiBhcHBsaWNhdGlvbiBhcmNoaXZlIGluIFRBUkdFVCwKKyAgICB3aGljaCBjYW4gYmUgYSBmaWxlbmFtZSBvciBhIGZpbGUtbGlrZSBvYmplY3QuICBJZiBTT1VSQ0UgaXMgYSBkaXJlY3RvcnksCisgICAgVEFSR0VUIGNhbiBiZSBvbWl0dGVkIGFuZCB3aWxsIGRlZmF1bHQgdG8gdGhlIG5hbWUgb2YgU09VUkNFIHdpdGggLnB5egorICAgIGFwcGVuZGVkLgorCisgICAgVGhlIGNyZWF0ZWQgYXBwbGljYXRpb24gYXJjaGl2ZSB3aWxsIGhhdmUgYSBzaGViYW5nIGxpbmUgc3BlY2lmeWluZworICAgIHRoYXQgaXQgc2hvdWxkIHJ1biB3aXRoIElOVEVSUFJFVEVSICh0aGVyZSB3aWxsIGJlIG5vIHNoZWJhbmcgbGluZSBpZgorICAgIElOVEVSUFJFVEVSIGlzIE5vbmUpLCBhbmQgYSBfX21haW5fXy5weSB3aGljaCBydW5zIE1BSU4gKGlmIE1BSU4gaXMKKyAgICBub3Qgc3BlY2lmaWVkLCBhbiBleGlzdGluZyBfX21haW5fXy5weSB3aWxsIGJlIHVzZWQpLiBJdCBpcyBhbiB0byBzcGVjaWZ5CisgICAgTUFJTiBmb3IgYW55dGhpbmcgb3RoZXIgdGhhbiBhIGRpcmVjdG9yeSBzb3VyY2Ugd2l0aCBubyBfX21haW5fXy5weSwgYW5kIGl0CisgICAgaXMgYW4gZXJyb3IgdG8gb21pdCBNQUlOIGlmIHRoZSBkaXJlY3RvcnkgaGFzIG5vIF9fbWFpbl9fLnB5LgorICAgICIiIgorICAgICMgQXJlIHdlIGNvcHlpbmcgYW4gZXhpc3RpbmcgYXJjaGl2ZT8KKyAgICBzb3VyY2VfaXNfZmlsZSA9IEZhbHNlCisgICAgaWYgaGFzYXR0cihzb3VyY2UsICdyZWFkJykgYW5kIGhhc2F0dHIoc291cmNlLCAncmVhZGxpbmUnKToKKyAgICAgICAgc291cmNlX2lzX2ZpbGUgPSBUcnVlCisgICAgZWxzZToKKyAgICAgICAgc291cmNlID0gcGF0aGxpYi5QYXRoKHNvdXJjZSkKKyAgICAgICAgaWYgc291cmNlLmlzX2ZpbGUoKToKKyAgICAgICAgICAgIHNvdXJjZV9pc19maWxlID0gVHJ1ZQorCisgICAgaWYgc291cmNlX2lzX2ZpbGU6CisgICAgICAgIF9jb3B5X2FyY2hpdmUoc291cmNlLCB0YXJnZXQsIGludGVycHJldGVyKQorICAgICAgICByZXR1cm4KKworICAgICMgV2UgYXJlIGNyZWF0aW5nIGEgbmV3IGFyY2hpdmUgZnJvbSBhIGRpcmVjdG9yeS4KKyAgICBpZiBub3Qgc291cmNlLmV4aXN0cygpOgorICAgICAgICByYWlzZSBaaXBBcHBFcnJvcigiU291cmNlIGRvZXMgbm90IGV4aXN0IikKKyAgICBoYXNfbWFpbiA9IChzb3VyY2UgLyAnX19tYWluX18ucHknKS5pc19maWxlKCkKKyAgICBpZiBtYWluIGFuZCBoYXNfbWFpbjoKKyAgICAgICAgcmFpc2UgWmlwQXBwRXJyb3IoCisgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgZW50cnkgcG9pbnQgaWYgdGhlIHNvdXJjZSBoYXMgX19tYWluX18ucHkiKQorICAgIGlmIG5vdCAobWFpbiBvciBoYXNfbWFpbik6CisgICAgICAgIHJhaXNlIFppcEFwcEVycm9yKCJBcmNoaXZlIGhhcyBubyBlbnRyeSBwb2ludCIpCisKKyAgICBtYWluX3B5ID0gTm9uZQorICAgIGlmIG1haW46CisgICAgICAgICMgQ2hlY2sgdGhhdCBtYWluIGhhcyB0aGUgcmlnaHQgZm9ybWF0LgorICAgICAgICBtb2QsIHNlcCwgZm4gPSBtYWluLnBhcnRpdGlvbignOicpCisgICAgICAgIG1vZF9vayA9IGFsbChwYXJ0LmlzaWRlbnRpZmllcigpIGZvciBwYXJ0IGluIG1vZC5zcGxpdCgnLicpKQorICAgICAgICBmbl9vayA9IGFsbChwYXJ0LmlzaWRlbnRpZmllcigpIGZvciBwYXJ0IGluIGZuLnNwbGl0KCcuJykpCisgICAgICAgIGlmIG5vdCAoc2VwID09ICc6JyBhbmQgbW9kX29rIGFuZCBmbl9vayk6CisgICAgICAgICAgICByYWlzZSBaaXBBcHBFcnJvcigiSW52YWxpZCBlbnRyeSBwb2ludDogIiArIG1haW4pCisgICAgICAgIG1haW5fcHkgPSBNQUlOX1RFTVBMQVRFLmZvcm1hdChtb2R1bGU9bW9kLCBmbj1mbikKKworICAgIGlmIHRhcmdldCBpcyBOb25lOgorICAgICAgICB0YXJnZXQgPSBzb3VyY2Uud2l0aF9zdWZmaXgoJy5weXonKQorICAgIGVsaWYgbm90IGhhc2F0dHIodGFyZ2V0LCAnd3JpdGUnKToKKyAgICAgICAgdGFyZ2V0ID0gcGF0aGxpYi5QYXRoKHRhcmdldCkKKworICAgIHdpdGggX21heWJlX29wZW4odGFyZ2V0LCAnd2InKSBhcyBmZDoKKyAgICAgICAgX3dyaXRlX2ZpbGVfcHJlZml4KGZkLCBpbnRlcnByZXRlcikKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZmQsICd3JykgYXMgejoKKyAgICAgICAgICAgIHJvb3QgPSBwYXRobGliLlBhdGgoc291cmNlKQorICAgICAgICAgICAgZm9yIGNoaWxkIGluIHJvb3Qucmdsb2IoJyonKToKKyAgICAgICAgICAgICAgICBhcmNuYW1lID0gc3RyKGNoaWxkLnJlbGF0aXZlX3RvKHJvb3QpKQorICAgICAgICAgICAgICAgIHoud3JpdGUoc3RyKGNoaWxkKSwgYXJjbmFtZSkKKyAgICAgICAgICAgIGlmIG1haW5fcHk6CisgICAgICAgICAgICAgICAgei53cml0ZXN0cignX19tYWluX18ucHknLCBtYWluX3B5LmVuY29kZSgndXRmLTgnKSkKKworICAgIGlmIGludGVycHJldGVyIGFuZCBub3QgaGFzYXR0cih0YXJnZXQsICd3cml0ZScpOgorICAgICAgICB0YXJnZXQuY2htb2QodGFyZ2V0LnN0YXQoKS5zdF9tb2RlIHwgc3RhdC5TX0lFWEVDKQorCisKK2RlZiBnZXRfaW50ZXJwcmV0ZXIoYXJjaGl2ZSk6CisgICAgd2l0aCBfbWF5YmVfb3BlbihhcmNoaXZlLCAncmInKSBhcyBmOgorICAgICAgICBpZiBmLnJlYWQoMikgPT0gYicjISc6CisgICAgICAgICAgICByZXR1cm4gZi5yZWFkbGluZSgpLnN0cmlwKCkuZGVjb2RlKHNoZWJhbmdfZW5jb2RpbmcpCisKKworZGVmIG1haW4oYXJncz1Ob25lKToKKyAgICAiIiJSdW4gdGhlIHppcGFwcCBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLgorCisgICAgVGhlIEFSR1MgcGFyYW1ldGVyIGxldHMgeW91IHNwZWNpZnkgdGhlIGFyZ3VtZW50IGxpc3QgZGlyZWN0bHkuCisgICAgT21pdHRpbmcgQVJHUyAob3Igc2V0dGluZyBpdCB0byBOb25lKSB3b3JrcyBhcyBmb3IgYXJncGFyc2UsIHVzaW5nCisgICAgc3lzLmFyZ3ZbMTpdIGFzIHRoZSBhcmd1bWVudCBsaXN0LgorICAgICIiIgorICAgIGltcG9ydCBhcmdwYXJzZQorCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tb3V0cHV0JywgJy1vJywgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgaGVscD0iVGhlIG5hbWUgb2YgdGhlIG91dHB1dCBhcmNoaXZlLiAiCisgICAgICAgICAgICAgICAgICJSZXF1aXJlZCBpZiBTT1VSQ0UgaXMgYW4gYXJjaGl2ZS4iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcHl0aG9uJywgJy1wJywgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgaGVscD0iVGhlIG5hbWUgb2YgdGhlIFB5dGhvbiBpbnRlcnByZXRlciB0byB1c2UgIgorICAgICAgICAgICAgICAgICAiKGRlZmF1bHQ6IG5vIHNoZWJhbmcgbGluZSkuIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW1haW4nLCAnLW0nLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICBoZWxwPSJUaGUgbWFpbiBmdW5jdGlvbiBvZiB0aGUgYXBwbGljYXRpb24gIgorICAgICAgICAgICAgICAgICAiKGRlZmF1bHQ6IHVzZSBhbiBleGlzdGluZyBfX21haW5fXy5weSkuIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWluZm8nLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0iRGlzcGxheSB0aGUgaW50ZXJwcmV0ZXIgZnJvbSB0aGUgYXJjaGl2ZS4iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3NvdXJjZScsCisgICAgICAgICAgICBoZWxwPSJTb3VyY2UgZGlyZWN0b3J5IChvciBleGlzdGluZyBhcmNoaXZlKS4iKQorCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCisKKyAgICAjIEhhbmRsZSBgcHl0aG9uIC1tIHppcGFwcCBhcmNoaXZlLnB5eiAtLWluZm9gLgorICAgIGlmIGFyZ3MuaW5mbzoKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGFyZ3Muc291cmNlKToKKyAgICAgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoIkNhbiBvbmx5IGdldCBpbmZvIGZvciBhbiBhcmNoaXZlIGZpbGUiKQorICAgICAgICBpbnRlcnByZXRlciA9IGdldF9pbnRlcnByZXRlcihhcmdzLnNvdXJjZSkKKyAgICAgICAgcHJpbnQoIkludGVycHJldGVyOiB7fSIuZm9ybWF0KGludGVycHJldGVyIG9yICI8bm9uZT4iKSkKKyAgICAgICAgc3lzLmV4aXQoMCkKKworICAgIGlmIG9zLnBhdGguaXNmaWxlKGFyZ3Muc291cmNlKToKKyAgICAgICAgaWYgYXJncy5vdXRwdXQgaXMgTm9uZSBvciAob3MucGF0aC5leGlzdHMoYXJncy5vdXRwdXQpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLnNhbWVmaWxlKGFyZ3Muc291cmNlLCBhcmdzLm91dHB1dCkpOgorICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXhpdCgiSW4tcGxhY2UgZWRpdGluZyBvZiBhcmNoaXZlcyBpcyBub3Qgc3VwcG9ydGVkIikKKyAgICAgICAgaWYgYXJncy5tYWluOgorICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXhpdCgiQ2Fubm90IGNoYW5nZSB0aGUgbWFpbiBmdW5jdGlvbiB3aGVuIGNvcHlpbmciKQorCisgICAgY3JlYXRlX2FyY2hpdmUoYXJncy5zb3VyY2UsIGFyZ3Mub3V0cHV0LAorICAgICAgICAgICAgICAgICAgIGludGVycHJldGVyPWFyZ3MucHl0aG9uLCBtYWluPWFyZ3MubWFpbikKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3ppcGZpbGUucHkgYi9MaWIvemlwZmlsZS5weQppbmRleCAxMWQ3Y2Y5Li41NmEyNDc5IDEwMDY0NAotLS0gYS9MaWIvemlwZmlsZS5weQorKysgYi9MaWIvemlwZmlsZS5weQpAQCAtMTQsNiArMTQsMTAgQEAKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBiaW5hc2NpaQogCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGltcG9ydCBkdW1teV90aHJlYWRpbmcgYXMgdGhyZWFkaW5nCiAKIHRyeToKICAgICBpbXBvcnQgemxpYiAjIFdlIG1heSBuZWVkIGl0cyBjb21wcmVzc2lvbiBtZXRob2QKQEAgLTM1NSw2ICszNTksMjggQEAKICAgICAgICAgIyBjb21wcmVzc19zaXplICAgICAgICAgU2l6ZSBvZiB0aGUgY29tcHJlc3NlZCBmaWxlCiAgICAgICAgICMgZmlsZV9zaXplICAgICAgICAgICAgIFNpemUgb2YgdGhlIHVuY29tcHJlc3NlZCBmaWxlCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJlc3VsdCA9IFsnPCVzIGZpbGVuYW1lPSVyJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5maWxlbmFtZSldCisgICAgICAgIGlmIHNlbGYuY29tcHJlc3NfdHlwZSAhPSBaSVBfU1RPUkVEOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGNvbXByZXNzX3R5cGU9JXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Nvcl9uYW1lcy5nZXQoc2VsZi5jb21wcmVzc190eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbXByZXNzX3R5cGUpKQorICAgICAgICBoaSA9IHNlbGYuZXh0ZXJuYWxfYXR0ciA+PiAxNgorICAgICAgICBsbyA9IHNlbGYuZXh0ZXJuYWxfYXR0ciAmIDB4RkZGRgorICAgICAgICBpZiBoaToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBmaWxlbW9kZT0lcicgJSBzdGF0LmZpbGVtb2RlKGhpKSkKKyAgICAgICAgaWYgbG86CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgZXh0ZXJuYWxfYXR0cj0lI3gnICUgbG8pCisgICAgICAgIGlzZGlyID0gc2VsZi5maWxlbmFtZVstMTpdID09ICcvJworICAgICAgICBpZiBub3QgaXNkaXIgb3Igc2VsZi5maWxlX3NpemU6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgZmlsZV9zaXplPSVyJyAlIHNlbGYuZmlsZV9zaXplKQorICAgICAgICBpZiAoKG5vdCBpc2RpciBvciBzZWxmLmNvbXByZXNzX3NpemUpIGFuZAorICAgICAgICAgICAgKHNlbGYuY29tcHJlc3NfdHlwZSAhPSBaSVBfU1RPUkVEIG9yCisgICAgICAgICAgICAgc2VsZi5maWxlX3NpemUgIT0gc2VsZi5jb21wcmVzc19zaXplKSk6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgY29tcHJlc3Nfc2l6ZT0lcicgJSBzZWxmLmNvbXByZXNzX3NpemUpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJz4nKQorICAgICAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCisKICAgICBkZWYgRmlsZUhlYWRlcihzZWxmLCB6aXA2ND1Ob25lKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBwZXItZmlsZSBoZWFkZXIgYXMgYSBzdHJpbmcuIiIiCiAgICAgICAgIGR0ID0gc2VsZi5kYXRlX3RpbWUKQEAgLTYyNCw2ICs2NTAsNDcgQEAKICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoImNvbXByZXNzaW9uIHR5cGUgJWQiICUgKGNvbXByZXNzX3R5cGUsKSkKIAogCitjbGFzcyBfU2hhcmVkRmlsZToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgcG9zLCBjbG9zZSwgbG9jayk6CisgICAgICAgIHNlbGYuX2ZpbGUgPSBmaWxlCisgICAgICAgIHNlbGYuX3BvcyA9IHBvcworICAgICAgICBzZWxmLl9jbG9zZSA9IGNsb3NlCisgICAgICAgIHNlbGYuX2xvY2sgPSBsb2NrCisKKyAgICBkZWYgcmVhZChzZWxmLCBuPS0xKToKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fZmlsZS5zZWVrKHNlbGYuX3BvcykKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9maWxlLnJlYWQobikKKyAgICAgICAgICAgIHNlbGYuX3BvcyA9IHNlbGYuX2ZpbGUudGVsbCgpCisgICAgICAgICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9maWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZmlsZW9iaiA9IHNlbGYuX2ZpbGUKKyAgICAgICAgICAgIHNlbGYuX2ZpbGUgPSBOb25lCisgICAgICAgICAgICBzZWxmLl9jbG9zZShmaWxlb2JqKQorCisjIFByb3ZpZGUgdGhlIHRlbGwgbWV0aG9kIGZvciB1bnNlZWthYmxlIHN0cmVhbQorY2xhc3MgX1RlbGxhYmxlOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcCk6CisgICAgICAgIHNlbGYuZnAgPSBmcAorICAgICAgICBzZWxmLm9mZnNldCA9IDAKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgbiA9IHNlbGYuZnAud3JpdGUoZGF0YSkKKyAgICAgICAgc2VsZi5vZmZzZXQgKz0gbgorICAgICAgICByZXR1cm4gbgorCisgICAgZGVmIHRlbGwoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm9mZnNldAorCisgICAgZGVmIGZsdXNoKHNlbGYpOgorICAgICAgICBzZWxmLmZwLmZsdXNoKCkKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5mcC5jbG9zZSgpCisKKwogY2xhc3MgWmlwRXh0RmlsZShpby5CdWZmZXJlZElPQmFzZSk6CiAgICAgIiIiRmlsZS1saWtlIG9iamVjdCBmb3IgcmVhZGluZyBhbiBhcmNoaXZlIG1lbWJlci4KICAgICAgICBJcyByZXR1cm5lZCBieSBaaXBGaWxlLm9wZW4oKS4KQEAgLTY2NywxMCArNzM0LDI0IEBACiAKICAgICAgICAgaWYgaGFzYXR0cih6aXBpbmZvLCAnQ1JDJyk6CiAgICAgICAgICAgICBzZWxmLl9leHBlY3RlZF9jcmMgPSB6aXBpbmZvLkNSQwotICAgICAgICAgICAgc2VsZi5fcnVubmluZ19jcmMgPSBjcmMzMihiJycpICYgMHhmZmZmZmZmZgorICAgICAgICAgICAgc2VsZi5fcnVubmluZ19jcmMgPSBjcmMzMihiJycpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9leHBlY3RlZF9jcmMgPSBOb25lCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJlc3VsdCA9IFsnPCVzLiVzJyAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fKV0KKyAgICAgICAgaWYgbm90IHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIG5hbWU9JXIgbW9kZT0lcicgJSAoc2VsZi5uYW1lLCBzZWxmLm1vZGUpKQorICAgICAgICAgICAgaWYgc2VsZi5fY29tcHJlc3NfdHlwZSAhPSBaSVBfU1RPUkVEOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBjb21wcmVzc190eXBlPSVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc29yX25hbWVzLmdldChzZWxmLl9jb21wcmVzc190eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NfdHlwZSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgW2Nsb3NlZF0nKQorICAgICAgICByZXN1bHQuYXBwZW5kKCc+JykKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQorCiAgICAgZGVmIHJlYWRsaW5lKHNlbGYsIGxpbWl0PS0xKToKICAgICAgICAgIiIiUmVhZCBhbmQgcmV0dXJuIGEgbGluZSBmcm9tIHRoZSBzdHJlYW0uCiAKQEAgLTc3NSw3ICs4NTYsNyBAQAogICAgICAgICBpZiBzZWxmLl9leHBlY3RlZF9jcmMgaXMgTm9uZToKICAgICAgICAgICAgICMgTm8gbmVlZCB0byBjb21wdXRlIHRoZSBDUkMgaWYgd2UgZG9uJ3QgaGF2ZSBhIHJlZmVyZW5jZSB2YWx1ZQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuX3J1bm5pbmdfY3JjID0gY3JjMzIobmV3ZGF0YSwgc2VsZi5fcnVubmluZ19jcmMpICYgMHhmZmZmZmZmZgorICAgICAgICBzZWxmLl9ydW5uaW5nX2NyYyA9IGNyYzMyKG5ld2RhdGEsIHNlbGYuX3J1bm5pbmdfY3JjKQogICAgICAgICAjIENoZWNrIHRoZSBDUkMgaWYgd2UncmUgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQogICAgICAgICBpZiBzZWxmLl9lb2YgYW5kIHNlbGYuX3J1bm5pbmdfY3JjICE9IHNlbGYuX2V4cGVjdGVkX2NyYzoKICAgICAgICAgICAgIHJhaXNlIEJhZFppcEZpbGUoIkJhZCBDUkMtMzIgZm9yIGZpbGUgJXIiICUgc2VsZi5uYW1lKQpAQCAtODg0LDcgKzk2NSw4IEBACiAKICAgICBmaWxlOiBFaXRoZXIgdGhlIHBhdGggdG8gdGhlIGZpbGUsIG9yIGEgZmlsZS1saWtlIG9iamVjdC4KICAgICAgICAgICBJZiBpdCBpcyBhIHBhdGgsIHRoZSBmaWxlIHdpbGwgYmUgb3BlbmVkIGFuZCBjbG9zZWQgYnkgWmlwRmlsZS4KLSAgICBtb2RlOiBUaGUgbW9kZSBjYW4gYmUgZWl0aGVyIHJlYWQgInIiLCB3cml0ZSAidyIgb3IgYXBwZW5kICJhIi4KKyAgICBtb2RlOiBUaGUgbW9kZSBjYW4gYmUgZWl0aGVyIHJlYWQgJ3InLCB3cml0ZSAndycsIGV4Y2x1c2l2ZSBjcmVhdGUgJ3gnLAorICAgICAgICAgIG9yIGFwcGVuZCAnYScuCiAgICAgY29tcHJlc3Npb246IFpJUF9TVE9SRUQgKG5vIGNvbXByZXNzaW9uKSwgWklQX0RFRkxBVEVEIChyZXF1aXJlcyB6bGliKSwKICAgICAgICAgICAgICAgICAgWklQX0JaSVAyIChyZXF1aXJlcyBiejIpIG9yIFpJUF9MWk1BIChyZXF1aXJlcyBsem1hKS4KICAgICBhbGxvd1ppcDY0OiBpZiBUcnVlIFppcEZpbGUgd2lsbCBjcmVhdGUgZmlsZXMgd2l0aCBaSVA2NCBleHRlbnNpb25zIHdoZW4KQEAgLTg5Nyw5ICs5NzksMTAgQEAKICAgICBfd2luZG93c19pbGxlZ2FsX25hbWVfdHJhbnNfdGFibGUgPSBOb25lCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgbW9kZT0iciIsIGNvbXByZXNzaW9uPVpJUF9TVE9SRUQsIGFsbG93WmlwNjQ9VHJ1ZSk6Ci0gICAgICAgICIiIk9wZW4gdGhlIFpJUCBmaWxlIHdpdGggbW9kZSByZWFkICJyIiwgd3JpdGUgInciIG9yIGFwcGVuZCAiYSIuIiIiCi0gICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJ3IiwgImEiKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignWmlwRmlsZSgpIHJlcXVpcmVzIG1vZGUgInIiLCAidyIsIG9yICJhIicpCisgICAgICAgICIiIk9wZW4gdGhlIFpJUCBmaWxlIHdpdGggbW9kZSByZWFkICdyJywgd3JpdGUgJ3cnLCBleGNsdXNpdmUgY3JlYXRlICd4JywKKyAgICAgICAgb3IgYXBwZW5kICdhJy4iIiIKKyAgICAgICAgaWYgbW9kZSBub3QgaW4gKCdyJywgJ3cnLCAneCcsICdhJyk6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlppcEZpbGUgcmVxdWlyZXMgbW9kZSAncicsICd3JywgJ3gnLCBvciAnYSciKQogCiAgICAgICAgIF9jaGVja19jb21wcmVzc2lvbihjb21wcmVzc2lvbikKIApAQCAtOTA5LDcgKzk5Miw3IEBACiAgICAgICAgIHNlbGYuTmFtZVRvSW5mbyA9IHt9ICAgICMgRmluZCBmaWxlIGluZm8gZ2l2ZW4gbmFtZQogICAgICAgICBzZWxmLmZpbGVsaXN0ID0gW10gICAgICAjIExpc3Qgb2YgWmlwSW5mbyBpbnN0YW5jZXMgZm9yIGFyY2hpdmUKICAgICAgICAgc2VsZi5jb21wcmVzc2lvbiA9IGNvbXByZXNzaW9uICAjIE1ldGhvZCBvZiBjb21wcmVzc2lvbgotICAgICAgICBzZWxmLm1vZGUgPSBrZXkgPSBtb2RlLnJlcGxhY2UoJ2InLCAnJylbMF0KKyAgICAgICAgc2VsZi5tb2RlID0gbW9kZQogICAgICAgICBzZWxmLnB3ZCA9IE5vbmUKICAgICAgICAgc2VsZi5fY29tbWVudCA9IGInJwogCkBAIC05MTgsMzMgKzEwMDEsNTEgQEAKICAgICAgICAgICAgICMgTm8sIGl0J3MgYSBmaWxlbmFtZQogICAgICAgICAgICAgc2VsZi5fZmlsZVBhc3NlZCA9IDAKICAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlCi0gICAgICAgICAgICBtb2RlRGljdCA9IHsncicgOiAncmInLCAndyc6ICd3YicsICdhJyA6ICdyK2InfQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuZnAgPSBpby5vcGVuKGZpbGUsIG1vZGVEaWN0W21vZGVdKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgaWYgbW9kZSA9PSAnYSc6Ci0gICAgICAgICAgICAgICAgICAgIG1vZGUgPSBrZXkgPSAndycKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mcCA9IGlvLm9wZW4oZmlsZSwgbW9kZURpY3RbbW9kZV0pCi0gICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1vZGVEaWN0ID0geydyJyA6ICdyYicsICd3JzogJ3crYicsICd4JzogJ3grYicsICdhJyA6ICdyK2InLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3IrYic6ICd3K2InLCAndytiJzogJ3diJywgJ3grYic6ICd4Yid9CisgICAgICAgICAgICBmaWxlbW9kZSA9IG1vZGVEaWN0W21vZGVdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mcCA9IGlvLm9wZW4oZmlsZSwgZmlsZW1vZGUpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVtb2RlIGluIG1vZGVEaWN0OgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW1vZGUgPSBtb2RlRGljdFtmaWxlbW9kZV0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX2ZpbGVQYXNzZWQgPSAxCiAgICAgICAgICAgICBzZWxmLmZwID0gZmlsZQogICAgICAgICAgICAgc2VsZi5maWxlbmFtZSA9IGdldGF0dHIoZmlsZSwgJ25hbWUnLCBOb25lKQorICAgICAgICBzZWxmLl9maWxlUmVmQ250ID0gMQorICAgICAgICBzZWxmLl9sb2NrID0gdGhyZWFkaW5nLlJMb2NrKCkKKyAgICAgICAgc2VsZi5fc2Vla2FibGUgPSBUcnVlCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYga2V5ID09ICdyJzoKKyAgICAgICAgICAgIGlmIG1vZGUgPT0gJ3InOgogICAgICAgICAgICAgICAgIHNlbGYuX1JlYWxHZXRDb250ZW50cygpCi0gICAgICAgICAgICBlbGlmIGtleSA9PSAndyc6CisgICAgICAgICAgICBlbGlmIG1vZGUgaW4gKCd3JywgJ3gnKToKICAgICAgICAgICAgICAgICAjIHNldCB0aGUgbW9kaWZpZWQgZmxhZyBzbyBjZW50cmFsIGRpcmVjdG9yeSBnZXRzIHdyaXR0ZW4KICAgICAgICAgICAgICAgICAjIGV2ZW4gaWYgbm8gZmlsZXMgYXJlIGFkZGVkIHRvIHRoZSBhcmNoaXZlCiAgICAgICAgICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQotICAgICAgICAgICAgZWxpZiBrZXkgPT0gJ2EnOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIE9TRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZwID0gX1RlbGxhYmxlKHNlbGYuZnApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gMAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZWVrYWJsZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBTb21lIGZpbGUtbGlrZSBvYmplY3RzIGNhbiBwcm92aWRlIHRlbGwoKSBidXQgbm90IHNlZWsoKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIE9TRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2Vla2FibGUgPSBGYWxzZQorICAgICAgICAgICAgZWxpZiBtb2RlID09ICdhJzoKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICMgU2VlIGlmIGZpbGUgaXMgYSB6aXAgZmlsZQogICAgICAgICAgICAgICAgICAgICBzZWxmLl9SZWFsR2V0Q29udGVudHMoKQogICAgICAgICAgICAgICAgICAgICAjIHNlZWsgdG8gc3RhcnQgb2YgZGlyZWN0b3J5IGFuZCBvdmVyd3JpdGUKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyLCAwKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCiAgICAgICAgICAgICAgICAgZXhjZXB0IEJhZFppcEZpbGU6CiAgICAgICAgICAgICAgICAgICAgICMgZmlsZSBpcyBub3QgYSB6aXAgZmlsZSwganVzdCBhcHBlbmQKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKDAsIDIpCkBAIC05NTIsMTMgKzEwNTMsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgIyBzZXQgdGhlIG1vZGlmaWVkIGZsYWcgc28gY2VudHJhbCBkaXJlY3RvcnkgZ2V0cyB3cml0dGVuCiAgICAgICAgICAgICAgICAgICAgICMgZXZlbiBpZiBubyBmaWxlcyBhcmUgYWRkZWQgdG8gdGhlIGFyY2hpdmUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X2RpciA9IHNlbGYuZnAudGVsbCgpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignTW9kZSBtdXN0IGJlICJyIiwgInciIG9yICJhIicpCisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJNb2RlIG11c3QgYmUgJ3InLCAndycsICd4Jywgb3IgJ2EnIikKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgZnAgPSBzZWxmLmZwCiAgICAgICAgICAgICBzZWxmLmZwID0gTm9uZQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVQYXNzZWQ6Ci0gICAgICAgICAgICAgICAgZnAuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5fZnBjbG9zZShmcCkKICAgICAgICAgICAgIHJhaXNlCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgpAQCAtOTY3LDYgKzEwNjgsMjAgQEAKICAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6CiAgICAgICAgIHNlbGYuY2xvc2UoKQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBbJzwlcy4lcycgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXyldCisgICAgICAgIGlmIHNlbGYuZnAgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBzZWxmLl9maWxlUGFzc2VkOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBmaWxlPSVyJyAlIHNlbGYuZnApCisgICAgICAgICAgICBlbGlmIHNlbGYuZmlsZW5hbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGZpbGVuYW1lPSVyJyAlIHNlbGYuZmlsZW5hbWUpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgbW9kZT0lcicgJSBzZWxmLm1vZGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgW2Nsb3NlZF0nKQorICAgICAgICByZXN1bHQuYXBwZW5kKCc+JykKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQorCiAgICAgZGVmIF9SZWFsR2V0Q29udGVudHMoc2VsZik6CiAgICAgICAgICIiIlJlYWQgaW4gdGhlIHRhYmxlIG9mIGNvbnRlbnRzIGZvciB0aGUgWklQIGZpbGUuIiIiCiAgICAgICAgIGZwID0gc2VsZi5mcApAQCAtMTEzMSwyMyArMTI0NiwxNyBAQAogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHJlYWQgWklQIGFyY2hpdmUgdGhhdCB3YXMgYWxyZWFkeSBjbG9zZWQiKQogCi0gICAgICAgICMgT25seSBvcGVuIGEgbmV3IGZpbGUgZm9yIGluc3RhbmNlcyB3aGVyZSB3ZSB3ZXJlIG5vdAotICAgICAgICAjIGdpdmVuIGEgZmlsZSBvYmplY3QgaW4gdGhlIGNvbnN0cnVjdG9yCi0gICAgICAgIGlmIHNlbGYuX2ZpbGVQYXNzZWQ6Ci0gICAgICAgICAgICB6ZWZfZmlsZSA9IHNlbGYuZnAKKyAgICAgICAgIyBNYWtlIHN1cmUgd2UgaGF2ZSBhbiBpbmZvIG9iamVjdAorICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWUsIFppcEluZm8pOgorICAgICAgICAgICAgIyAnbmFtZScgaXMgYWxyZWFkeSBhbiBpbmZvIG9iamVjdAorICAgICAgICAgICAgemluZm8gPSBuYW1lCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB6ZWZfZmlsZSA9IGlvLm9wZW4oc2VsZi5maWxlbmFtZSwgJ3JiJykKKyAgICAgICAgICAgICMgR2V0IGluZm8gb2JqZWN0IGZvciBuYW1lCisgICAgICAgICAgICB6aW5mbyA9IHNlbGYuZ2V0aW5mbyhuYW1lKQogCisgICAgICAgIHNlbGYuX2ZpbGVSZWZDbnQgKz0gMQorICAgICAgICB6ZWZfZmlsZSA9IF9TaGFyZWRGaWxlKHNlbGYuZnAsIHppbmZvLmhlYWRlcl9vZmZzZXQsIHNlbGYuX2ZwY2xvc2UsIHNlbGYuX2xvY2spCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgICMgTWFrZSBzdXJlIHdlIGhhdmUgYW4gaW5mbyBvYmplY3QKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobmFtZSwgWmlwSW5mbyk6Ci0gICAgICAgICAgICAgICAgIyAnbmFtZScgaXMgYWxyZWFkeSBhbiBpbmZvIG9iamVjdAotICAgICAgICAgICAgICAgIHppbmZvID0gbmFtZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIEdldCBpbmZvIG9iamVjdCBmb3IgbmFtZQotICAgICAgICAgICAgICAgIHppbmZvID0gc2VsZi5nZXRpbmZvKG5hbWUpCi0gICAgICAgICAgICB6ZWZfZmlsZS5zZWVrKHppbmZvLmhlYWRlcl9vZmZzZXQsIDApCi0KICAgICAgICAgICAgICMgU2tpcCB0aGUgZmlsZSBoZWFkZXI6CiAgICAgICAgICAgICBmaGVhZGVyID0gemVmX2ZpbGUucmVhZChzaXplRmlsZUhlYWRlcikKICAgICAgICAgICAgIGlmIGxlbihmaGVhZGVyKSAhPSBzaXplRmlsZUhlYWRlcjoKQEAgLTEyMDYsMTEgKzEzMTUsOSBAQAogICAgICAgICAgICAgICAgIGlmIGhbMTFdICE9IGNoZWNrX2J5dGU6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQmFkIHBhc3N3b3JkIGZvciBmaWxlIiwgbmFtZSkKIAotICAgICAgICAgICAgcmV0dXJuIFppcEV4dEZpbGUoemVmX2ZpbGUsIG1vZGUsIHppbmZvLCB6ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2ZpbGVvYmo9bm90IHNlbGYuX2ZpbGVQYXNzZWQpCisgICAgICAgICAgICByZXR1cm4gWmlwRXh0RmlsZSh6ZWZfZmlsZSwgbW9kZSwgemluZm8sIHpkLCBUcnVlKQogICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZVBhc3NlZDoKLSAgICAgICAgICAgICAgICB6ZWZfZmlsZS5jbG9zZSgpCisgICAgICAgICAgICB6ZWZfZmlsZS5jbG9zZSgpCiAgICAgICAgICAgICByYWlzZQogCiAgICAgZGVmIGV4dHJhY3Qoc2VsZiwgbWVtYmVyLCBwYXRoPU5vbmUsIHB3ZD1Ob25lKToKQEAgLTEyOTgsOCArMTQwNSw4IEBACiAgICAgICAgIGlmIHppbmZvLmZpbGVuYW1lIGluIHNlbGYuTmFtZVRvSW5mbzoKICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICAgd2FybmluZ3Mud2FybignRHVwbGljYXRlIG5hbWU6ICVyJyAlIHppbmZvLmZpbGVuYW1lLCBzdGFja2xldmVsPTMpCi0gICAgICAgIGlmIHNlbGYubW9kZSBub3QgaW4gKCJ3IiwgImEiKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignd3JpdGUoKSByZXF1aXJlcyBtb2RlICJ3IiBvciAiYSInKQorICAgICAgICBpZiBzZWxmLm1vZGUgbm90IGluICgndycsICd4JywgJ2EnKToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigid3JpdGUoKSByZXF1aXJlcyBtb2RlICd3JywgJ3gnLCBvciAnYSciKQogICAgICAgICBpZiBub3Qgc2VsZi5mcDoKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKICAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byB3cml0ZSBaSVAgYXJjaGl2ZSB0aGF0IHdhcyBhbHJlYWR5IGNsb3NlZCIpCkBAIC0xMzQ2LDY2ICsxNDUzLDc5IEBACiAKICAgICAgICAgemluZm8uZmlsZV9zaXplID0gc3Quc3Rfc2l6ZQogICAgICAgICB6aW5mby5mbGFnX2JpdHMgPSAweDAwCi0gICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgICAjIFN0YXJ0IG9mIGhlYWRlciBieXRlcwotICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgotICAgICAgICAgICAgIyBDb21wcmVzc2VkIGRhdGEgaW5jbHVkZXMgYW4gZW5kLW9mLXN0cmVhbSAoRU9TKSBtYXJrZXIKLSAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDAyCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYuX3NlZWthYmxlOgorICAgICAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpcikKKyAgICAgICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgICAjIFN0YXJ0IG9mIGhlYWRlciBieXRlcworICAgICAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgICAgICAgICAjIENvbXByZXNzZWQgZGF0YSBpbmNsdWRlcyBhbiBlbmQtb2Ytc3RyZWFtIChFT1MpIG1hcmtlcgorICAgICAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDAyCiAKLSAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKLSAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKKyAgICAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKIAotICAgICAgICBpZiBpc2RpcjoKLSAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IDAKLSAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSAwCi0gICAgICAgICAgICB6aW5mby5DUkMgPSAwCi0gICAgICAgICAgICB6aW5mby5leHRlcm5hbF9hdHRyIHw9IDB4MTAgICMgTVMtRE9TIGRpcmVjdG9yeSBmbGFnCisgICAgICAgICAgICBpZiBpc2RpcjoKKyAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUgPSAwCisgICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IDAKKyAgICAgICAgICAgICAgICB6aW5mby5DUkMgPSAwCisgICAgICAgICAgICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciB8PSAweDEwICAjIE1TLURPUyBkaXJlY3RvcnkgZmxhZworICAgICAgICAgICAgICAgIHNlbGYuZmlsZWxpc3QuYXBwZW5kKHppbmZvKQorICAgICAgICAgICAgICAgIHNlbGYuTmFtZVRvSW5mb1t6aW5mby5maWxlbmFtZV0gPSB6aW5mbworICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcihGYWxzZSkpCisgICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICBjbXByID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fc2Vla2FibGU6CisgICAgICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDgKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZnA6CisgICAgICAgICAgICAgICAgIyBNdXN0IG92ZXJ3cml0ZSBDUkMgYW5kIHNpemVzIHdpdGggY29ycmVjdCBkYXRhIGxhdGVyCisgICAgICAgICAgICAgICAgemluZm8uQ1JDID0gQ1JDID0gMAorICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplID0gMAorICAgICAgICAgICAgICAgICMgQ29tcHJlc3NlZCBzaXplIGNhbiBiZSBsYXJnZXIgdGhhbiB1bmNvbXByZXNzZWQgc2l6ZQorICAgICAgICAgICAgICAgIHppcDY0ID0gc2VsZi5fYWxsb3daaXA2NCBhbmQgXAorICAgICAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUgKiAxLjA1ID4gWklQNjRfTElNSVQKKyAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQorICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IDAKKyAgICAgICAgICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgICAgICAgICBidWYgPSBmcC5yZWFkKDEwMjQgKiA4KQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgYnVmOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZmlsZV9zaXplID0gZmlsZV9zaXplICsgbGVuKGJ1ZikKKyAgICAgICAgICAgICAgICAgICAgQ1JDID0gY3JjMzIoYnVmLCBDUkMpCisgICAgICAgICAgICAgICAgICAgIGlmIGNtcHI6CisgICAgICAgICAgICAgICAgICAgICAgICBidWYgPSBjbXByLmNvbXByZXNzKGJ1ZikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplICsgbGVuKGJ1ZikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShidWYpCisgICAgICAgICAgICBpZiBjbXByOgorICAgICAgICAgICAgICAgIGJ1ZiA9IGNtcHIuZmx1c2goKQorICAgICAgICAgICAgICAgIGNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplICsgbGVuKGJ1ZikKKyAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGJ1ZikKKyAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gZmlsZV9zaXplCisgICAgICAgICAgICB6aW5mby5DUkMgPSBDUkMKKyAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IGZpbGVfc2l6ZQorICAgICAgICAgICAgaWYgemluZm8uZmxhZ19iaXRzICYgMHgwODoKKyAgICAgICAgICAgICAgICAjIFdyaXRlIENSQyBhbmQgZmlsZSBzaXplcyBhZnRlciB0aGUgZmlsZSBkYXRhCisgICAgICAgICAgICAgICAgZm10ID0gJzxMUVEnIGlmIHppcDY0IGVsc2UgJzxMTEwnCisgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShzdHJ1Y3QucGFjayhmbXQsIHppbmZvLkNSQywgemluZm8uY29tcHJlc3Nfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSkpCisgICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBub3QgemlwNjQgYW5kIHNlbGYuX2FsbG93WmlwNjQ6CisgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdGaWxlIHNpemUgaGFzIGluY3JlYXNlZCBkdXJpbmcgY29tcHJlc3NpbmcnKQorICAgICAgICAgICAgICAgICAgICBpZiBjb21wcmVzc19zaXplID4gWklQNjRfTElNSVQ6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0NvbXByZXNzZWQgc2l6ZSBsYXJnZXIgdGhhbiB1bmNvbXByZXNzZWQgc2l6ZScpCisgICAgICAgICAgICAgICAgIyBTZWVrIGJhY2t3YXJkcyBhbmQgd3JpdGUgZmlsZSBoZWFkZXIgKHdoaWNoIHdpbGwgbm93IGluY2x1ZGUKKyAgICAgICAgICAgICAgICAjIGNvcnJlY3QgQ1JDIGFuZCBmaWxlIHNpemVzKQorICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkgIyBQcmVzZXJ2ZSBjdXJyZW50IHBvc2l0aW9uIGluIGZpbGUKKyAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoemluZm8uaGVhZGVyX29mZnNldCkKKyAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQorICAgICAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpcikKICAgICAgICAgICAgIHNlbGYuZmlsZWxpc3QuYXBwZW5kKHppbmZvKQogICAgICAgICAgICAgc2VsZi5OYW1lVG9JbmZvW3ppbmZvLmZpbGVuYW1lXSA9IHppbmZvCi0gICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoRmFsc2UpKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgY21wciA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQotICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGZwOgotICAgICAgICAgICAgIyBNdXN0IG92ZXJ3cml0ZSBDUkMgYW5kIHNpemVzIHdpdGggY29ycmVjdCBkYXRhIGxhdGVyCi0gICAgICAgICAgICB6aW5mby5DUkMgPSBDUkMgPSAwCi0gICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZSA9IDAKLSAgICAgICAgICAgICMgQ29tcHJlc3NlZCBzaXplIGNhbiBiZSBsYXJnZXIgdGhhbiB1bmNvbXByZXNzZWQgc2l6ZQotICAgICAgICAgICAgemlwNjQgPSBzZWxmLl9hbGxvd1ppcDY0IGFuZCBcCi0gICAgICAgICAgICAgICAgemluZm8uZmlsZV9zaXplICogMS4wNSA+IFpJUDY0X0xJTUlUCi0gICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQotICAgICAgICAgICAgZmlsZV9zaXplID0gMAotICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICBidWYgPSBmcC5yZWFkKDEwMjQgKiA4KQotICAgICAgICAgICAgICAgIGlmIG5vdCBidWY6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZmlsZV9zaXplID0gZmlsZV9zaXplICsgbGVuKGJ1ZikKLSAgICAgICAgICAgICAgICBDUkMgPSBjcmMzMihidWYsIENSQykgJiAweGZmZmZmZmZmCi0gICAgICAgICAgICAgICAgaWYgY21wcjoKLSAgICAgICAgICAgICAgICAgICAgYnVmID0gY21wci5jb21wcmVzcyhidWYpCi0gICAgICAgICAgICAgICAgICAgIGNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplICsgbGVuKGJ1ZikKLSAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGJ1ZikKLSAgICAgICAgaWYgY21wcjoKLSAgICAgICAgICAgIGJ1ZiA9IGNtcHIuZmx1c2goKQotICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IGNvbXByZXNzX3NpemUgKyBsZW4oYnVmKQotICAgICAgICAgICAgc2VsZi5mcC53cml0ZShidWYpCi0gICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGZpbGVfc2l6ZQotICAgICAgICB6aW5mby5DUkMgPSBDUkMKLSAgICAgICAgemluZm8uZmlsZV9zaXplID0gZmlsZV9zaXplCi0gICAgICAgIGlmIG5vdCB6aXA2NCBhbmQgc2VsZi5fYWxsb3daaXA2NDoKLSAgICAgICAgICAgIGlmIGZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUOgotICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmlsZSBzaXplIGhhcyBpbmNyZWFzZWQgZHVyaW5nIGNvbXByZXNzaW5nJykKLSAgICAgICAgICAgIGlmIGNvbXByZXNzX3NpemUgPiBaSVA2NF9MSU1JVDoKLSAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0NvbXByZXNzZWQgc2l6ZSBsYXJnZXIgdGhhbiB1bmNvbXByZXNzZWQgc2l6ZScpCi0gICAgICAgICMgU2VlayBiYWNrd2FyZHMgYW5kIHdyaXRlIGZpbGUgaGVhZGVyICh3aGljaCB3aWxsIG5vdyBpbmNsdWRlCi0gICAgICAgICMgY29ycmVjdCBDUkMgYW5kIGZpbGUgc2l6ZXMpCi0gICAgICAgIHBvc2l0aW9uID0gc2VsZi5mcC50ZWxsKCkgICAgICAgIyBQcmVzZXJ2ZSBjdXJyZW50IHBvc2l0aW9uIGluIGZpbGUKLSAgICAgICAgc2VsZi5mcC5zZWVrKHppbmZvLmhlYWRlcl9vZmZzZXQsIDApCi0gICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcih6aXA2NCkpCi0gICAgICAgIHNlbGYuZnAuc2Vlayhwb3NpdGlvbiwgMCkKLSAgICAgICAgc2VsZi5maWxlbGlzdC5hcHBlbmQoemluZm8pCi0gICAgICAgIHNlbGYuTmFtZVRvSW5mb1t6aW5mby5maWxlbmFtZV0gPSB6aW5mbwogCiAgICAgZGVmIHdyaXRlc3RyKHNlbGYsIHppbmZvX29yX2FyY25hbWUsIGRhdGEsIGNvbXByZXNzX3R5cGU9Tm9uZSk6CiAgICAgICAgICIiIldyaXRlIGEgZmlsZSBpbnRvIHRoZSBhcmNoaXZlLiAgVGhlIGNvbnRlbnRzIGlzICdkYXRhJywgd2hpY2gKQEAgLTE0MzIsMTU0ICsxNTUyLDE3MSBAQAogICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHdyaXRlIHRvIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKIAogICAgICAgICB6aW5mby5maWxlX3NpemUgPSBsZW4oZGF0YSkgICAgICAgICAgICAjIFVuY29tcHJlc3NlZCBzaXplCi0gICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgICAjIFN0YXJ0IG9mIGhlYWRlciBkYXRhCi0gICAgICAgIGlmIGNvbXByZXNzX3R5cGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gY29tcHJlc3NfdHlwZQotICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgotICAgICAgICAgICAgIyBDb21wcmVzc2VkIGRhdGEgaW5jbHVkZXMgYW4gZW5kLW9mLXN0cmVhbSAoRU9TKSBtYXJrZXIKLSAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDAyCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYuX3NlZWthYmxlOgorICAgICAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpcikKKyAgICAgICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgICAjIFN0YXJ0IG9mIGhlYWRlciBkYXRhCisgICAgICAgICAgICBpZiBjb21wcmVzc190eXBlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBjb21wcmVzc190eXBlCisgICAgICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICAgIyBTdGFydCBvZiBoZWFkZXIgZGF0YQorICAgICAgICAgICAgaWYgY29tcHJlc3NfdHlwZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gY29tcHJlc3NfdHlwZQorICAgICAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgICAgICAgICAjIENvbXByZXNzZWQgZGF0YSBpbmNsdWRlcyBhbiBlbmQtb2Ytc3RyZWFtIChFT1MpIG1hcmtlcgorICAgICAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDAyCiAKLSAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKLSAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQotICAgICAgICB6aW5mby5DUkMgPSBjcmMzMihkYXRhKSAmIDB4ZmZmZmZmZmYgICAgICAgIyBDUkMtMzIgY2hlY2tzdW0KLSAgICAgICAgY28gPSBfZ2V0X2NvbXByZXNzb3IoemluZm8uY29tcHJlc3NfdHlwZSkKLSAgICAgICAgaWYgY286Ci0gICAgICAgICAgICBkYXRhID0gY28uY29tcHJlc3MoZGF0YSkgKyBjby5mbHVzaCgpCi0gICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gbGVuKGRhdGEpICAgICMgQ29tcHJlc3NlZCBzaXplCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gemluZm8uZmlsZV9zaXplCi0gICAgICAgIHppcDY0ID0gemluZm8uZmlsZV9zaXplID4gWklQNjRfTElNSVQgb3IgXAotICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUCi0gICAgICAgIGlmIHppcDY0IGFuZCBub3Qgc2VsZi5fYWxsb3daaXA2NDoKLSAgICAgICAgICAgIHJhaXNlIExhcmdlWmlwRmlsZSgiRmlsZXNpemUgd291bGQgcmVxdWlyZSBaSVA2NCBleHRlbnNpb25zIikKLSAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKHppcDY0KSkKLSAgICAgICAgc2VsZi5mcC53cml0ZShkYXRhKQotICAgICAgICBpZiB6aW5mby5mbGFnX2JpdHMgJiAweDA4OgotICAgICAgICAgICAgIyBXcml0ZSBDUkMgYW5kIGZpbGUgc2l6ZXMgYWZ0ZXIgdGhlIGZpbGUgZGF0YQotICAgICAgICAgICAgZm10ID0gJzxMUVEnIGlmIHppcDY0IGVsc2UgJzxMTEwnCi0gICAgICAgICAgICBzZWxmLmZwLndyaXRlKHN0cnVjdC5wYWNrKGZtdCwgemluZm8uQ1JDLCB6aW5mby5jb21wcmVzc19zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUpKQotICAgICAgICBzZWxmLmZwLmZsdXNoKCkKLSAgICAgICAgc2VsZi5maWxlbGlzdC5hcHBlbmQoemluZm8pCi0gICAgICAgIHNlbGYuTmFtZVRvSW5mb1t6aW5mby5maWxlbmFtZV0gPSB6aW5mbworICAgICAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKKyAgICAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKKyAgICAgICAgICAgIHppbmZvLkNSQyA9IGNyYzMyKGRhdGEpICAgICAgICMgQ1JDLTMyIGNoZWNrc3VtCisgICAgICAgICAgICBjbyA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQorICAgICAgICAgICAgaWYgY286CisgICAgICAgICAgICAgICAgZGF0YSA9IGNvLmNvbXByZXNzKGRhdGEpICsgY28uZmx1c2goKQorICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBsZW4oZGF0YSkgICAgIyBDb21wcmVzc2VkIHNpemUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IHppbmZvLmZpbGVfc2l6ZQorICAgICAgICAgICAgemlwNjQgPSB6aW5mby5maWxlX3NpemUgPiBaSVA2NF9MSU1JVCBvciBcCisgICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUCisgICAgICAgICAgICBpZiB6aXA2NCBhbmQgbm90IHNlbGYuX2FsbG93WmlwNjQ6CisgICAgICAgICAgICAgICAgcmFpc2UgTGFyZ2VaaXBGaWxlKCJGaWxlc2l6ZSB3b3VsZCByZXF1aXJlIFpJUDY0IGV4dGVuc2lvbnMiKQorICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKHppcDY0KSkKKyAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoZGF0YSkKKyAgICAgICAgICAgIGlmIHppbmZvLmZsYWdfYml0cyAmIDB4MDg6CisgICAgICAgICAgICAgICAgIyBXcml0ZSBDUkMgYW5kIGZpbGUgc2l6ZXMgYWZ0ZXIgdGhlIGZpbGUgZGF0YQorICAgICAgICAgICAgICAgIGZtdCA9ICc8TFFRJyBpZiB6aXA2NCBlbHNlICc8TExMJworICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoc3RydWN0LnBhY2soZm10LCB6aW5mby5DUkMsIHppbmZvLmNvbXByZXNzX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUpKQorICAgICAgICAgICAgc2VsZi5mcC5mbHVzaCgpCisgICAgICAgICAgICBzZWxmLnN0YXJ0X2RpciA9IHNlbGYuZnAudGVsbCgpCisgICAgICAgICAgICBzZWxmLmZpbGVsaXN0LmFwcGVuZCh6aW5mbykKKyAgICAgICAgICAgIHNlbGYuTmFtZVRvSW5mb1t6aW5mby5maWxlbmFtZV0gPSB6aW5mbwogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICIiIkNhbGwgdGhlICJjbG9zZSgpIiBtZXRob2QgaW4gY2FzZSB0aGUgdXNlciBmb3Jnb3QuIiIiCiAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICAiIiJDbG9zZSB0aGUgZmlsZSwgYW5kIGZvciBtb2RlICJ3IiBhbmQgImEiIHdyaXRlIHRoZSBlbmRpbmcKKyAgICAgICAgIiIiQ2xvc2UgdGhlIGZpbGUsIGFuZCBmb3IgbW9kZSAndycsICd4JyBhbmQgJ2EnIHdyaXRlIHRoZSBlbmRpbmcKICAgICAgICAgcmVjb3Jkcy4iIiIKICAgICAgICAgaWYgc2VsZi5mcCBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgc2VsZi5tb2RlIGluICgidyIsICJhIikgYW5kIHNlbGYuX2RpZE1vZGlmeTogIyB3cml0ZSBlbmRpbmcgcmVjb3JkcwotICAgICAgICAgICAgICAgIHBvczEgPSBzZWxmLmZwLnRlbGwoKQotICAgICAgICAgICAgICAgIGZvciB6aW5mbyBpbiBzZWxmLmZpbGVsaXN0OiAgICAgICAgICMgd3JpdGUgY2VudHJhbCBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgZHQgPSB6aW5mby5kYXRlX3RpbWUKLSAgICAgICAgICAgICAgICAgICAgZG9zZGF0ZSA9IChkdFswXSAtIDE5ODApIDw8IDkgfCBkdFsxXSA8PCA1IHwgZHRbMl0KLSAgICAgICAgICAgICAgICAgICAgZG9zdGltZSA9IGR0WzNdIDw8IDExIHwgZHRbNF0gPDwgNSB8IChkdFs1XSAvLyAyKQotICAgICAgICAgICAgICAgICAgICBleHRyYSA9IFtdCi0gICAgICAgICAgICAgICAgICAgIGlmIHppbmZvLmZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUIFwKLSAgICAgICAgICAgICAgICAgICAgICAgb3IgemluZm8uY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUOgotICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmEuYXBwZW5kKHppbmZvLmZpbGVfc2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLmFwcGVuZCh6aW5mby5jb21wcmVzc19zaXplKQotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9zaXplID0gMHhmZmZmZmZmZgotICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IDB4ZmZmZmZmZmYKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IHppbmZvLmZpbGVfc2l6ZQotICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IHppbmZvLmNvbXByZXNzX3NpemUKLQotICAgICAgICAgICAgICAgICAgICBpZiB6aW5mby5oZWFkZXJfb2Zmc2V0ID4gWklQNjRfTElNSVQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYS5hcHBlbmQoemluZm8uaGVhZGVyX29mZnNldCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9vZmZzZXQgPSAweGZmZmZmZmZmCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfb2Zmc2V0ID0gemluZm8uaGVhZGVyX29mZnNldAotCi0gICAgICAgICAgICAgICAgICAgIGV4dHJhX2RhdGEgPSB6aW5mby5leHRyYQotICAgICAgICAgICAgICAgICAgICBtaW5fdmVyc2lvbiA9IDAKLSAgICAgICAgICAgICAgICAgICAgaWYgZXh0cmE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIEFwcGVuZCBhIFpJUDY0IGZpZWxkIHRvIHRoZSBleHRyYSdzCi0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9kYXRhID0gc3RydWN0LnBhY2soCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxISCcgKyAnUScqbGVuKGV4dHJhKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCA4KmxlbihleHRyYSksICpleHRyYSkgKyBleHRyYV9kYXRhCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gWklQNjRfVkVSU0lPTgotCi0gICAgICAgICAgICAgICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0JaSVAyOgotICAgICAgICAgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoQlpJUDJfVkVSU0lPTiwgbWluX3ZlcnNpb24pCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gbWF4KExaTUFfVkVSU0lPTiwgbWluX3ZlcnNpb24pCi0KLSAgICAgICAgICAgICAgICAgICAgZXh0cmFjdF92ZXJzaW9uID0gbWF4KG1pbl92ZXJzaW9uLCB6aW5mby5leHRyYWN0X3ZlcnNpb24pCi0gICAgICAgICAgICAgICAgICAgIGNyZWF0ZV92ZXJzaW9uID0gbWF4KG1pbl92ZXJzaW9uLCB6aW5mby5jcmVhdGVfdmVyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGZsYWdfYml0cyA9IHppbmZvLl9lbmNvZGVGaWxlbmFtZUZsYWdzKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRkaXIgPSBzdHJ1Y3QucGFjayhzdHJ1Y3RDZW50cmFsRGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0NlbnRyYWxEaXIsIGNyZWF0ZV92ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmNyZWF0ZV9zeXN0ZW0sIGV4dHJhY3RfdmVyc2lvbiwgemluZm8ucmVzZXJ2ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ19iaXRzLCB6aW5mby5jb21wcmVzc190eXBlLCBkb3N0aW1lLCBkb3NkYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLkNSQywgY29tcHJlc3Nfc2l6ZSwgZmlsZV9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihmaWxlbmFtZSksIGxlbihleHRyYV9kYXRhKSwgbGVuKHppbmZvLmNvbW1lbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHppbmZvLmludGVybmFsX2F0dHIsIHppbmZvLmV4dGVybmFsX2F0dHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX29mZnNldCkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IERlcHJlY2F0aW9uV2FybmluZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KChzdHJ1Y3RDZW50cmFsRGlyLCBzdHJpbmdDZW50cmFsRGlyLCBjcmVhdGVfdmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5jcmVhdGVfc3lzdGVtLCBleHRyYWN0X3ZlcnNpb24sIHppbmZvLnJlc2VydmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cywgemluZm8uY29tcHJlc3NfdHlwZSwgZG9zdGltZSwgZG9zZGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5DUkMsIGNvbXByZXNzX3NpemUsIGZpbGVfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oemluZm8uZmlsZW5hbWUpLCBsZW4oZXh0cmFfZGF0YSksIGxlbih6aW5mby5jb21tZW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCB6aW5mby5pbnRlcm5hbF9hdHRyLCB6aW5mby5leHRlcm5hbF9hdHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9vZmZzZXQpLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGNlbnRkaXIpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoZXh0cmFfZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5jb21tZW50KQotCi0gICAgICAgICAgICAgICAgcG9zMiA9IHNlbGYuZnAudGVsbCgpCi0gICAgICAgICAgICAgICAgIyBXcml0ZSBlbmQtb2YtemlwLWFyY2hpdmUgcmVjb3JkCi0gICAgICAgICAgICAgICAgY2VudERpckNvdW50ID0gbGVuKHNlbGYuZmlsZWxpc3QpCi0gICAgICAgICAgICAgICAgY2VudERpclNpemUgPSBwb3MyIC0gcG9zMQotICAgICAgICAgICAgICAgIGNlbnREaXJPZmZzZXQgPSBwb3MxCi0gICAgICAgICAgICAgICAgcmVxdWlyZXNfemlwNjQgPSBOb25lCi0gICAgICAgICAgICAgICAgaWYgY2VudERpckNvdW50ID4gWklQX0ZJTEVDT1VOVF9MSU1JVDoKLSAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNfemlwNjQgPSAiRmlsZXMgY291bnQiCi0gICAgICAgICAgICAgICAgZWxpZiBjZW50RGlyT2Zmc2V0ID4gWklQNjRfTElNSVQ6Ci0gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzX3ppcDY0ID0gIkNlbnRyYWwgZGlyZWN0b3J5IG9mZnNldCIKLSAgICAgICAgICAgICAgICBlbGlmIGNlbnREaXJTaXplID4gWklQNjRfTElNSVQ6Ci0gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzX3ppcDY0ID0gIkNlbnRyYWwgZGlyZWN0b3J5IHNpemUiCi0gICAgICAgICAgICAgICAgaWYgcmVxdWlyZXNfemlwNjQ6Ci0gICAgICAgICAgICAgICAgICAgICMgTmVlZCB0byB3cml0ZSB0aGUgWklQNjQgZW5kLW9mLWFyY2hpdmUgcmVjb3JkcwotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fYWxsb3daaXA2NDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIExhcmdlWmlwRmlsZShyZXF1aXJlc196aXA2NCArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiB3b3VsZCByZXF1aXJlIFpJUDY0IGV4dGVuc2lvbnMiKQotICAgICAgICAgICAgICAgICAgICB6aXA2NGVuZHJlYyA9IHN0cnVjdC5wYWNrKAotICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0RW5kQXJjaGl2ZTY0LCBzdHJpbmdFbmRBcmNoaXZlNjQsCi0gICAgICAgICAgICAgICAgICAgICAgICA0NCwgNDUsIDQ1LCAwLCAwLCBjZW50RGlyQ291bnQsIGNlbnREaXJDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNlbnREaXJTaXplLCBjZW50RGlyT2Zmc2V0KQotICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppcDY0ZW5kcmVjKQotCi0gICAgICAgICAgICAgICAgICAgIHppcDY0bG9jcmVjID0gc3RydWN0LnBhY2soCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3RFbmRBcmNoaXZlNjRMb2NhdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nRW5kQXJjaGl2ZTY0TG9jYXRvciwgMCwgcG9zMiwgMSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aXA2NGxvY3JlYykKLSAgICAgICAgICAgICAgICAgICAgY2VudERpckNvdW50ID0gbWluKGNlbnREaXJDb3VudCwgMHhGRkZGKQotICAgICAgICAgICAgICAgICAgICBjZW50RGlyU2l6ZSA9IG1pbihjZW50RGlyU2l6ZSwgMHhGRkZGRkZGRikKLSAgICAgICAgICAgICAgICAgICAgY2VudERpck9mZnNldCA9IG1pbihjZW50RGlyT2Zmc2V0LCAweEZGRkZGRkZGKQotCi0gICAgICAgICAgICAgICAgZW5kcmVjID0gc3RydWN0LnBhY2soc3RydWN0RW5kQXJjaGl2ZSwgc3RyaW5nRW5kQXJjaGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBjZW50RGlyQ291bnQsIGNlbnREaXJDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50RGlyU2l6ZSwgY2VudERpck9mZnNldCwgbGVuKHNlbGYuX2NvbW1lbnQpKQotICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoZW5kcmVjKQotICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoc2VsZi5fY29tbWVudCkKLSAgICAgICAgICAgICAgICBzZWxmLmZwLmZsdXNoKCkKKyAgICAgICAgICAgIGlmIHNlbGYubW9kZSBpbiAoJ3cnLCAneCcsICdhJykgYW5kIHNlbGYuX2RpZE1vZGlmeTogIyB3cml0ZSBlbmRpbmcgcmVjb3JkcworICAgICAgICAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fc2Vla2FibGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2VuZF9yZWNvcmQoKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZnAgPSBzZWxmLmZwCiAgICAgICAgICAgICBzZWxmLmZwID0gTm9uZQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVQYXNzZWQ6Ci0gICAgICAgICAgICAgICAgZnAuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5fZnBjbG9zZShmcCkKKworICAgIGRlZiBfd3JpdGVfZW5kX3JlY29yZChzZWxmKToKKyAgICAgICAgZm9yIHppbmZvIGluIHNlbGYuZmlsZWxpc3Q6ICAgICAgICAgIyB3cml0ZSBjZW50cmFsIGRpcmVjdG9yeQorICAgICAgICAgICAgZHQgPSB6aW5mby5kYXRlX3RpbWUKKyAgICAgICAgICAgIGRvc2RhdGUgPSAoZHRbMF0gLSAxOTgwKSA8PCA5IHwgZHRbMV0gPDwgNSB8IGR0WzJdCisgICAgICAgICAgICBkb3N0aW1lID0gZHRbM10gPDwgMTEgfCBkdFs0XSA8PCA1IHwgKGR0WzVdIC8vIDIpCisgICAgICAgICAgICBleHRyYSA9IFtdCisgICAgICAgICAgICBpZiB6aW5mby5maWxlX3NpemUgPiBaSVA2NF9MSU1JVCBcCisgICAgICAgICAgICAgICBvciB6aW5mby5jb21wcmVzc19zaXplID4gWklQNjRfTElNSVQ6CisgICAgICAgICAgICAgICAgZXh0cmEuYXBwZW5kKHppbmZvLmZpbGVfc2l6ZSkKKyAgICAgICAgICAgICAgICBleHRyYS5hcHBlbmQoemluZm8uY29tcHJlc3Nfc2l6ZSkKKyAgICAgICAgICAgICAgICBmaWxlX3NpemUgPSAweGZmZmZmZmZmCisgICAgICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IDB4ZmZmZmZmZmYKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZmlsZV9zaXplID0gemluZm8uZmlsZV9zaXplCisgICAgICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IHppbmZvLmNvbXByZXNzX3NpemUKKworICAgICAgICAgICAgaWYgemluZm8uaGVhZGVyX29mZnNldCA+IFpJUDY0X0xJTUlUOgorICAgICAgICAgICAgICAgIGV4dHJhLmFwcGVuZCh6aW5mby5oZWFkZXJfb2Zmc2V0KQorICAgICAgICAgICAgICAgIGhlYWRlcl9vZmZzZXQgPSAweGZmZmZmZmZmCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGhlYWRlcl9vZmZzZXQgPSB6aW5mby5oZWFkZXJfb2Zmc2V0CisKKyAgICAgICAgICAgIGV4dHJhX2RhdGEgPSB6aW5mby5leHRyYQorICAgICAgICAgICAgbWluX3ZlcnNpb24gPSAwCisgICAgICAgICAgICBpZiBleHRyYToKKyAgICAgICAgICAgICAgICAjIEFwcGVuZCBhIFpJUDY0IGZpZWxkIHRvIHRoZSBleHRyYSdzCisgICAgICAgICAgICAgICAgZXh0cmFfZGF0YSA9IHN0cnVjdC5wYWNrKAorICAgICAgICAgICAgICAgICAgICAnPEhIJyArICdRJypsZW4oZXh0cmEpLAorICAgICAgICAgICAgICAgICAgICAxLCA4KmxlbihleHRyYSksICpleHRyYSkgKyBleHRyYV9kYXRhCisKKyAgICAgICAgICAgICAgICBtaW5fdmVyc2lvbiA9IFpJUDY0X1ZFUlNJT04KKworICAgICAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfQlpJUDI6CisgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoQlpJUDJfVkVSU0lPTiwgbWluX3ZlcnNpb24pCisgICAgICAgICAgICBlbGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6CisgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoTFpNQV9WRVJTSU9OLCBtaW5fdmVyc2lvbikKKworICAgICAgICAgICAgZXh0cmFjdF92ZXJzaW9uID0gbWF4KG1pbl92ZXJzaW9uLCB6aW5mby5leHRyYWN0X3ZlcnNpb24pCisgICAgICAgICAgICBjcmVhdGVfdmVyc2lvbiA9IG1heChtaW5fdmVyc2lvbiwgemluZm8uY3JlYXRlX3ZlcnNpb24pCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGZsYWdfYml0cyA9IHppbmZvLl9lbmNvZGVGaWxlbmFtZUZsYWdzKCkKKyAgICAgICAgICAgICAgICBjZW50ZGlyID0gc3RydWN0LnBhY2soc3RydWN0Q2VudHJhbERpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nQ2VudHJhbERpciwgY3JlYXRlX3ZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmNyZWF0ZV9zeXN0ZW0sIGV4dHJhY3RfdmVyc2lvbiwgemluZm8ucmVzZXJ2ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfYml0cywgemluZm8uY29tcHJlc3NfdHlwZSwgZG9zdGltZSwgZG9zZGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemluZm8uQ1JDLCBjb21wcmVzc19zaXplLCBmaWxlX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihmaWxlbmFtZSksIGxlbihleHRyYV9kYXRhKSwgbGVuKHppbmZvLmNvbW1lbnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCB6aW5mby5pbnRlcm5hbF9hdHRyLCB6aW5mby5leHRlcm5hbF9hdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfb2Zmc2V0KQorICAgICAgICAgICAgZXhjZXB0IERlcHJlY2F0aW9uV2FybmluZzoKKyAgICAgICAgICAgICAgICBwcmludCgoc3RydWN0Q2VudHJhbERpciwgc3RyaW5nQ2VudHJhbERpciwgY3JlYXRlX3ZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmNyZWF0ZV9zeXN0ZW0sIGV4dHJhY3RfdmVyc2lvbiwgemluZm8ucmVzZXJ2ZWQsCisgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cywgemluZm8uY29tcHJlc3NfdHlwZSwgZG9zdGltZSwgZG9zZGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgemluZm8uQ1JDLCBjb21wcmVzc19zaXplLCBmaWxlX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgIGxlbih6aW5mby5maWxlbmFtZSksIGxlbihleHRyYV9kYXRhKSwgbGVuKHppbmZvLmNvbW1lbnQpLAorICAgICAgICAgICAgICAgICAgICAgICAwLCB6aW5mby5pbnRlcm5hbF9hdHRyLCB6aW5mby5leHRlcm5hbF9hdHRyLAorICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfb2Zmc2V0KSwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGNlbnRkaXIpCisgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGZpbGVuYW1lKQorICAgICAgICAgICAgc2VsZi5mcC53cml0ZShleHRyYV9kYXRhKQorICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5jb21tZW50KQorCisgICAgICAgIHBvczIgPSBzZWxmLmZwLnRlbGwoKQorICAgICAgICAjIFdyaXRlIGVuZC1vZi16aXAtYXJjaGl2ZSByZWNvcmQKKyAgICAgICAgY2VudERpckNvdW50ID0gbGVuKHNlbGYuZmlsZWxpc3QpCisgICAgICAgIGNlbnREaXJTaXplID0gcG9zMiAtIHNlbGYuc3RhcnRfZGlyCisgICAgICAgIGNlbnREaXJPZmZzZXQgPSBzZWxmLnN0YXJ0X2RpcgorICAgICAgICByZXF1aXJlc196aXA2NCA9IE5vbmUKKyAgICAgICAgaWYgY2VudERpckNvdW50ID4gWklQX0ZJTEVDT1VOVF9MSU1JVDoKKyAgICAgICAgICAgIHJlcXVpcmVzX3ppcDY0ID0gIkZpbGVzIGNvdW50IgorICAgICAgICBlbGlmIGNlbnREaXJPZmZzZXQgPiBaSVA2NF9MSU1JVDoKKyAgICAgICAgICAgIHJlcXVpcmVzX3ppcDY0ID0gIkNlbnRyYWwgZGlyZWN0b3J5IG9mZnNldCIKKyAgICAgICAgZWxpZiBjZW50RGlyU2l6ZSA+IFpJUDY0X0xJTUlUOgorICAgICAgICAgICAgcmVxdWlyZXNfemlwNjQgPSAiQ2VudHJhbCBkaXJlY3Rvcnkgc2l6ZSIKKyAgICAgICAgaWYgcmVxdWlyZXNfemlwNjQ6CisgICAgICAgICAgICAjIE5lZWQgdG8gd3JpdGUgdGhlIFpJUDY0IGVuZC1vZi1hcmNoaXZlIHJlY29yZHMKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9hbGxvd1ppcDY0OgorICAgICAgICAgICAgICAgIHJhaXNlIExhcmdlWmlwRmlsZShyZXF1aXJlc196aXA2NCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgd291bGQgcmVxdWlyZSBaSVA2NCBleHRlbnNpb25zIikKKyAgICAgICAgICAgIHppcDY0ZW5kcmVjID0gc3RydWN0LnBhY2soCisgICAgICAgICAgICAgICAgc3RydWN0RW5kQXJjaGl2ZTY0LCBzdHJpbmdFbmRBcmNoaXZlNjQsCisgICAgICAgICAgICAgICAgNDQsIDQ1LCA0NSwgMCwgMCwgY2VudERpckNvdW50LCBjZW50RGlyQ291bnQsCisgICAgICAgICAgICAgICAgY2VudERpclNpemUsIGNlbnREaXJPZmZzZXQpCisgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppcDY0ZW5kcmVjKQorCisgICAgICAgICAgICB6aXA2NGxvY3JlYyA9IHN0cnVjdC5wYWNrKAorICAgICAgICAgICAgICAgIHN0cnVjdEVuZEFyY2hpdmU2NExvY2F0b3IsCisgICAgICAgICAgICAgICAgc3RyaW5nRW5kQXJjaGl2ZTY0TG9jYXRvciwgMCwgcG9zMiwgMSkKKyAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemlwNjRsb2NyZWMpCisgICAgICAgICAgICBjZW50RGlyQ291bnQgPSBtaW4oY2VudERpckNvdW50LCAweEZGRkYpCisgICAgICAgICAgICBjZW50RGlyU2l6ZSA9IG1pbihjZW50RGlyU2l6ZSwgMHhGRkZGRkZGRikKKyAgICAgICAgICAgIGNlbnREaXJPZmZzZXQgPSBtaW4oY2VudERpck9mZnNldCwgMHhGRkZGRkZGRikKKworICAgICAgICBlbmRyZWMgPSBzdHJ1Y3QucGFjayhzdHJ1Y3RFbmRBcmNoaXZlLCBzdHJpbmdFbmRBcmNoaXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBjZW50RGlyQ291bnQsIGNlbnREaXJDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudERpclNpemUsIGNlbnREaXJPZmZzZXQsIGxlbihzZWxmLl9jb21tZW50KSkKKyAgICAgICAgc2VsZi5mcC53cml0ZShlbmRyZWMpCisgICAgICAgIHNlbGYuZnAud3JpdGUoc2VsZi5fY29tbWVudCkKKyAgICAgICAgc2VsZi5mcC5mbHVzaCgpCisKKyAgICBkZWYgX2ZwY2xvc2Uoc2VsZiwgZnApOgorICAgICAgICBhc3NlcnQgc2VsZi5fZmlsZVJlZkNudCA+IDAKKyAgICAgICAgc2VsZi5fZmlsZVJlZkNudCAtPSAxCisgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlUmVmQ250IGFuZCBub3Qgc2VsZi5fZmlsZVBhc3NlZDoKKyAgICAgICAgICAgIGZwLmNsb3NlKCkKIAogCiBjbGFzcyBQeVppcEZpbGUoWmlwRmlsZSk6CkBAIC0xNTk5LDcgKzE3MzYsNyBAQAogICAgICAgICB0aGUgbW9kdWxlcyBpbnRvIHRoZSBhcmNoaXZlLiAgSWYgcGF0aG5hbWUgaXMgYSBwbGFpbgogICAgICAgICBkaXJlY3RvcnksIGxpc3RkaXIgKi5weSBhbmQgZW50ZXIgYWxsIG1vZHVsZXMuICBFbHNlLCBwYXRobmFtZQogICAgICAgICBtdXN0IGJlIGEgUHl0aG9uICoucHkgZmlsZSBhbmQgdGhlIG1vZHVsZSB3aWxsIGJlIHB1dCBpbnRvIHRoZQotICAgICAgICBhcmNoaXZlLiAgQWRkZWQgbW9kdWxlcyBhcmUgYWx3YXlzIG1vZHVsZS5weW8gb3IgbW9kdWxlLnB5Yy4KKyAgICAgICAgYXJjaGl2ZS4gIEFkZGVkIG1vZHVsZXMgYXJlIGFsd2F5cyBtb2R1bGUucHljLgogICAgICAgICBUaGlzIG1ldGhvZCB3aWxsIGNvbXBpbGUgdGhlIG1vZHVsZS5weSBpbnRvIG1vZHVsZS5weWMgaWYKICAgICAgICAgbmVjZXNzYXJ5LgogICAgICAgICBJZiBmaWx0ZXJmdW5jKHBhdGhuYW1lKSBpcyBnaXZlbiwgaXQgaXMgY2FsbGVkIHdpdGggZXZlcnkgYXJndW1lbnQuCkBAIC0xNjkyLDQ2ICsxODI5LDU5IEBACiAKICAgICAgICAgZmlsZV9weSAgPSBwYXRobmFtZSArICIucHkiCiAgICAgICAgIGZpbGVfcHljID0gcGF0aG5hbWUgKyAiLnB5YyIKLSAgICAgICAgZmlsZV9weW8gPSBwYXRobmFtZSArICIucHlvIgotICAgICAgICBweWNhY2hlX3B5YyA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZpbGVfcHksIFRydWUpCi0gICAgICAgIHB5Y2FjaGVfcHlvID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoZmlsZV9weSwgRmFsc2UpCisgICAgICAgIHB5Y2FjaGVfb3B0MCA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZpbGVfcHksIG9wdGltaXphdGlvbj0nJykKKyAgICAgICAgcHljYWNoZV9vcHQxID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoZmlsZV9weSwgb3B0aW1pemF0aW9uPTEpCisgICAgICAgIHB5Y2FjaGVfb3B0MiA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZpbGVfcHksIG9wdGltaXphdGlvbj0yKQogICAgICAgICBpZiBzZWxmLl9vcHRpbWl6ZSA9PSAtMToKICAgICAgICAgICAgICMgbGVnYWN5IG1vZGU6IHVzZSB3aGF0ZXZlciBmaWxlIGlzIHByZXNlbnQKLSAgICAgICAgICAgIGlmIChvcy5wYXRoLmlzZmlsZShmaWxlX3B5bykgYW5kCi0gICAgICAgICAgICAgICAgb3Muc3RhdChmaWxlX3B5bykuc3RfbXRpbWUgPj0gb3Muc3RhdChmaWxlX3B5KS5zdF9tdGltZSk6Ci0gICAgICAgICAgICAgICAgIyBVc2UgLnB5byBmaWxlLgotICAgICAgICAgICAgICAgIGFyY25hbWUgPSBmbmFtZSA9IGZpbGVfcHlvCi0gICAgICAgICAgICBlbGlmIChvcy5wYXRoLmlzZmlsZShmaWxlX3B5YykgYW5kCisgICAgICAgICAgICBpZiAob3MucGF0aC5pc2ZpbGUoZmlsZV9weWMpIGFuZAogICAgICAgICAgICAgICAgICAgb3Muc3RhdChmaWxlX3B5Yykuc3RfbXRpbWUgPj0gb3Muc3RhdChmaWxlX3B5KS5zdF9tdGltZSk6CiAgICAgICAgICAgICAgICAgIyBVc2UgLnB5YyBmaWxlLgogICAgICAgICAgICAgICAgIGFyY25hbWUgPSBmbmFtZSA9IGZpbGVfcHljCi0gICAgICAgICAgICBlbGlmIChvcy5wYXRoLmlzZmlsZShweWNhY2hlX3B5YykgYW5kCi0gICAgICAgICAgICAgICAgICBvcy5zdGF0KHB5Y2FjaGVfcHljKS5zdF9tdGltZSA+PSBvcy5zdGF0KGZpbGVfcHkpLnN0X210aW1lKToKKyAgICAgICAgICAgIGVsaWYgKG9zLnBhdGguaXNmaWxlKHB5Y2FjaGVfb3B0MCkgYW5kCisgICAgICAgICAgICAgICAgICBvcy5zdGF0KHB5Y2FjaGVfb3B0MCkuc3RfbXRpbWUgPj0gb3Muc3RhdChmaWxlX3B5KS5zdF9tdGltZSk6CiAgICAgICAgICAgICAgICAgIyBVc2UgdGhlIF9fcHljYWNoZV9fLyoucHljIGZpbGUsIGJ1dCB3cml0ZSBpdCB0byB0aGUgbGVnYWN5IHB5YwogICAgICAgICAgICAgICAgICMgZmlsZSBuYW1lIGluIHRoZSBhcmNoaXZlLgotICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9weWMKKyAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfb3B0MAogICAgICAgICAgICAgICAgIGFyY25hbWUgPSBmaWxlX3B5YwotICAgICAgICAgICAgZWxpZiAob3MucGF0aC5pc2ZpbGUocHljYWNoZV9weW8pIGFuZAotICAgICAgICAgICAgICAgICAgb3Muc3RhdChweWNhY2hlX3B5bykuc3RfbXRpbWUgPj0gb3Muc3RhdChmaWxlX3B5KS5zdF9tdGltZSk6Ci0gICAgICAgICAgICAgICAgIyBVc2UgdGhlIF9fcHljYWNoZV9fLyoucHlvIGZpbGUsIGJ1dCB3cml0ZSBpdCB0byB0aGUgbGVnYWN5IHB5bworICAgICAgICAgICAgZWxpZiAob3MucGF0aC5pc2ZpbGUocHljYWNoZV9vcHQxKSBhbmQKKyAgICAgICAgICAgICAgICAgIG9zLnN0YXQocHljYWNoZV9vcHQxKS5zdF9tdGltZSA+PSBvcy5zdGF0KGZpbGVfcHkpLnN0X210aW1lKToKKyAgICAgICAgICAgICAgICAjIFVzZSB0aGUgX19weWNhY2hlX18vKi5weWMgZmlsZSwgYnV0IHdyaXRlIGl0IHRvIHRoZSBsZWdhY3kgcHljCiAgICAgICAgICAgICAgICAgIyBmaWxlIG5hbWUgaW4gdGhlIGFyY2hpdmUuCi0gICAgICAgICAgICAgICAgZm5hbWUgPSBweWNhY2hlX3B5bwotICAgICAgICAgICAgICAgIGFyY25hbWUgPSBmaWxlX3B5bworICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9vcHQxCisgICAgICAgICAgICAgICAgYXJjbmFtZSA9IGZpbGVfcHljCisgICAgICAgICAgICBlbGlmIChvcy5wYXRoLmlzZmlsZShweWNhY2hlX29wdDIpIGFuZAorICAgICAgICAgICAgICAgICAgb3Muc3RhdChweWNhY2hlX29wdDIpLnN0X210aW1lID49IG9zLnN0YXQoZmlsZV9weSkuc3RfbXRpbWUpOgorICAgICAgICAgICAgICAgICMgVXNlIHRoZSBfX3B5Y2FjaGVfXy8qLnB5YyBmaWxlLCBidXQgd3JpdGUgaXQgdG8gdGhlIGxlZ2FjeSBweWMKKyAgICAgICAgICAgICAgICAjIGZpbGUgbmFtZSBpbiB0aGUgYXJjaGl2ZS4KKyAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfb3B0MgorICAgICAgICAgICAgICAgIGFyY25hbWUgPSBmaWxlX3B5YwogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIENvbXBpbGUgcHkgaW50byBQRVAgMzE0NyBweWMgZmlsZS4KICAgICAgICAgICAgICAgICBpZiBfY29tcGlsZShmaWxlX3B5KToKLSAgICAgICAgICAgICAgICAgICAgZm5hbWUgPSAocHljYWNoZV9weWMgaWYgX19kZWJ1Z19fIGVsc2UgcHljYWNoZV9weW8pCi0gICAgICAgICAgICAgICAgICAgIGFyY25hbWUgPSAoZmlsZV9weWMgaWYgX19kZWJ1Z19fIGVsc2UgZmlsZV9weW8pCisgICAgICAgICAgICAgICAgICAgIGlmIHN5cy5mbGFncy5vcHRpbWl6ZSA9PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWUgPSBweWNhY2hlX29wdDAKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBzeXMuZmxhZ3Mub3B0aW1pemUgPT0gMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9vcHQxCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfb3B0MgorICAgICAgICAgICAgICAgICAgICBhcmNuYW1lID0gZmlsZV9weWMKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBmbmFtZSA9IGFyY25hbWUgPSBmaWxlX3B5CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIG5ldyBtb2RlOiB1c2UgZ2l2ZW4gb3B0aW1pemF0aW9uIGxldmVsCiAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpbWl6ZSA9PSAwOgotICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9weWMKKyAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfb3B0MAogICAgICAgICAgICAgICAgIGFyY25hbWUgPSBmaWxlX3B5YwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfcHlvCi0gICAgICAgICAgICAgICAgYXJjbmFtZSA9IGZpbGVfcHlvCisgICAgICAgICAgICAgICAgYXJjbmFtZSA9IGZpbGVfcHljCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW1pemUgPT0gMToKKyAgICAgICAgICAgICAgICAgICAgZm5hbWUgPSBweWNhY2hlX29wdDEKKyAgICAgICAgICAgICAgICBlbGlmIHNlbGYuX29wdGltaXplID09IDI6CisgICAgICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9vcHQyCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gImludmFsaWQgdmFsdWUgZm9yICdvcHRpbWl6ZSc6IHshcn0iLmZvcm1hdChzZWxmLl9vcHRpbWl6ZSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCiAgICAgICAgICAgICBpZiBub3QgKG9zLnBhdGguaXNmaWxlKGZuYW1lKSBhbmQKICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdChmbmFtZSkuc3RfbXRpbWUgPj0gb3Muc3RhdChmaWxlX3B5KS5zdF9tdGltZSk6CiAgICAgICAgICAgICAgICAgaWYgbm90IF9jb21waWxlKGZpbGVfcHksIG9wdGltaXplPXNlbGYuX29wdGltaXplKToKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0IGIvTWFjL0J1aWxkU2NyaXB0L1JFQURNRS50eHQKaW5kZXggZGI2ODdiZS4uZjhiMjVmYSAxMDA2NDQKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L1JFQURNRS50eHQKKysrIGIvTWFjL0J1aWxkU2NyaXB0L1JFQURNRS50eHQKQEAgLTEsMjUgKzEsMTUgQEAKIEJ1aWxkaW5nIGEgUHl0aG9uIE1hYyBPUyBYIGRpc3RyaWJ1dGlvbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLVRoZSBgYGJ1aWxkLWluc3RhbGxlci5weWBgIHNjcmlwdCBjcmVhdGVzIFB5dGhvbiBkaXN0cmlidXRpb25zLCBpbmNsdWRpbmcKLWNlcnRhaW4gdGhpcmQtcGFydHkgbGlicmFyaWVzIGFzIG5lY2Vzc2FyeS4gIEl0IGJ1aWxkcyBhIGNvbXBsZXRlIAotZnJhbWV3b3JrLWJhc2VkIFB5dGhvbiBvdXQtb2YtdHJlZSwgaW5zdGFsbHMgaXQgaW4gYSBmdW5ueSBwbGFjZSB3aXRoIAotJERFU1RST09ULCBtYXNzYWdlcyB0aGF0IGluc3RhbGxhdGlvbiB0byByZW1vdmUgLnB5YyBmaWxlcyBhbmQgc3VjaCwgY3JlYXRlcyAKLWFuIEluc3RhbGxlciBwYWNrYWdlIGZyb20gdGhlIGluc3RhbGxhdGlvbiBwbHVzIG90aGVyIGZpbGVzIGluIGBgcmVzb3VyY2VzYGAgCitUaGUgYGBidWlsZC1pbnN0YWxsLnB5YGAgc2NyaXB0IGNyZWF0ZXMgUHl0aG9uIGRpc3RyaWJ1dGlvbnMsIGluY2x1ZGluZworY2VydGFpbiB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgYXMgbmVjZXNzYXJ5LiAgSXQgYnVpbGRzIGEgY29tcGxldGUKK2ZyYW1ld29yay1iYXNlZCBQeXRob24gb3V0LW9mLXRyZWUsIGluc3RhbGxzIGl0IGluIGEgZnVubnkgcGxhY2Ugd2l0aAorJERFU1RST09ULCBtYXNzYWdlcyB0aGF0IGluc3RhbGxhdGlvbiB0byByZW1vdmUgLnB5YyBmaWxlcyBhbmQgc3VjaCwgY3JlYXRlcworYW4gSW5zdGFsbGVyIHBhY2thZ2UgZnJvbSB0aGUgaW5zdGFsbGF0aW9uIHBsdXMgb3RoZXIgZmlsZXMgaW4gYGByZXNvdXJjZXNgYAogYW5kIGBgc2NyaXB0c2BgIGFuZCBwbGFjZWQgdGhhdCBvbiBhIGBgLmRtZ2BgIGRpc2sgaW1hZ2UuCiAKLVRoaXMgaW5zdGFsbGVycyBidWlsdCBieSB0aGlzIHNjcmlwdCBhcmUgbGVnYWN5IGJ1bmRsZSBpbnN0YWxsZXJzIHRoYXQgaGF2ZQotYmVlbiBzdXBwb3J0ZWQgZnJvbSB0aGUgZWFybHkgZGF5cyBvZiBPUyBYLiAgSW4gcGFydGljdWxhciwgdGhleSBhcmUgc3VwcG9ydGVkCi1vbiBPUyBYIDEwLjMuOSwgdGhlIGVhcmxpZXN0IHN1cHBvcnRlZCByZWxlYXNlIGZvciBidWlsZHMgZnJvbSB0aGlzIHNjcmlwdC4KLQotQmVnaW5uaW5nIHdpdGggUHl0aG9uIDMuNC4yLCBQU0YgcHJhY3RpY2UgaXMgdG8gYnVpbGQgdHdvIGluc3RhbGxlciB2YXJpYW50cwotdXNpbmcgdGhlIG5ld2VyIGZsYXQgcGFja2FnZSBmb3JtYXQsIHN1cHBvcnRlZCBvbiAxMC41KywgYW5kIHNpZ25lZCB3aXRoIHRoZQotYnVpbGRlcidzIEFwcGxlIGRldmVsb3BlciBrZXksIGFsbG93aW5nIGRvd25sb2FkZWQgcGFja2FnZXMgdG8gc2F0aXNmeSBBcHBsZSdzCi1kZWZhdWx0IEdhdGVrZWVwZXIgcG9saWN5IChlLmcuIHN0YXJ0aW5nIHdpdGggMTAuOCwgQXBwbGUgc3RvcmUgZG93bmxvYWRzIGFuZAotQXBwbGUgZGV2ZWxvcGVyIElEIHNpZ25lZCBhcHBzIGFuZCBpbnN0YWxsZXIgcGFja2FnZXMpLiAgVGhlIHByb2Nlc3MgZm9yCi10cmFuc2Zvcm1pbmcgdGhlIG91dHB1dCBidWlsZCBhcnRpZmFjdHMgaW50byBzaWduZWQgZmxhdCBwYWNrYWdlcyBpcyBub3QKLXlldCBpbnRlZ3JhdGVkIGludG8gYGBidWlsZC1pbnN0YWxsZXIucHlgYC4gIFRoZSBzdGVwcyBwcmlvciB0byB0aGUgZmxhdAotcGFja2FnZSBjcmVhdGlvbiBhcmUgdGhlIHNhbWUgYXMgZm9yIDMuNC4xIGJlbG93LgorRm9yIFB5dGhvbiAzLjQuMCwgUFNGIHByYWN0aWNlIGlzIHRvIGJ1aWxkIHR3byBpbnN0YWxsZXIgdmFyaWFudHMKK2ZvciBlYWNoIHJlbGVhc2UuCiAKIDEuICAzMi1iaXQtb25seSwgaTM4NiBhbmQgUFBDIHVuaXZlcnNhbCwgY2FwYWJsZSBvbiBydW5uaW5nIG9uIGFsbCBtYWNoaW5lcwogICAgIHN1cHBvcnRlZCBieSBNYWMgT1MgWCAxMC41IHRocm91Z2ggKGF0IGxlYXN0KSAxMC45OjoKQEAgLTMxLDcgKzIxLDYgQEAKIAogICAgIC0gYnVpbGRzIHRoZSBmb2xsb3dpbmcgdGhpcmQtcGFydHkgbGlicmFyaWVzCiAKLSAgICAgICAgKiBsaWJjcnlwdG8gYW5kIGxpYnNzbCBmcm9tIE9wZW5TU0wgMS4wLjEgKG5ldywgYXMgb2YgMy40LjMpCiAgICAgICAgICogTkN1cnNlcyA1LjkgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNTAzNykKICAgICAgICAgKiBTUUxpdGUgMy44LjExCiAgICAgICAgICogWFogNS4wLjUKQEAgLTczLDcgKzYyLDYgQEAKIAogICAgIC0gdXNlcyBzeXN0ZW0tc3VwcGxpZWQgdmVyc2lvbnMgb2YgdGhpcmQtcGFydHkgbGlicmFyaWVzCiAKLSAgICAgICAgKiBsaWJjcnlwdG8gYW5kIGxpYnNzbCBmcm9tIEFwcGxlIE9wZW5TU0wgMC45LjgKICAgICAgICAgKiByZWFkbGluZSBtb2R1bGUgbGlua3Mgd2l0aCBBcHBsZSBCU0QgZWRpdGxpbmUgKGxpYmVkaXQpCiAKICAgICAtIHJlcXVpcmVzIEFjdGl2ZVN0YXRlIFRjbC9UayA4LjUuMTUuMSAob3IgbGF0ZXIpIHRvIGJlIGluc3RhbGxlZCBmb3IgYnVpbGRpbmcKQEAgLTEwMiw2ICs5MCw0NyBAQAogICAgICAgICAgIHRoYXQgdGhlIFhjb2RlIDMgZ2NjLTQuMiBjb21waWxlciBoYXMgaGFkLgogCiAKKyogICBGb3IgUHl0aG9uIDIuNy54IGFuZCAzLjIueCwgdGhlIDMyLWJpdC1vbmx5IGluc3RhbGxlciB3YXMgY29uZmlndXJlZCB0bworICAgIHN1cHBvcnQgTWFjIE9TIFggMTAuMy45IHRocm91Z2ggKGF0IGxlYXN0KSAxMC42LiAgQmVjYXVzZSBpdCBpcworICAgIGJlbGlldmVkIHRoYXQgdGhlcmUgYXJlIGZldyBzeXN0ZW1zIHN0aWxsIHJ1bm5pbmcgT1MgWCAxMC4zIG9yIDEwLjQKKyAgICBhbmQgYmVjYXVzZSBpdCBoYXMgYmVjb21lIGluY3JlYXNpbmdseSBkaWZmaWN1bHQgdG8gdGVzdCBhbmQKKyAgICBzdXBwb3J0IHRoZSBkaWZmZXJlbmNlcyBpbiB0aGVzZSBlYXJsaWVyIHN5c3RlbXMsIGFzIG9mIFB5dGhvbiAzLjMuMCB0aGUgUFNGCisgICAgMzItYml0IGluc3RhbGxlciBubyBsb25nZXIgc3VwcG9ydHMgdGhlbS4gIEZvciByZWZlcmVuY2UgaW4gYnVpbGRpbmcgc3VjaAorICAgIGFuIGluc3RhbGxlciB5b3Vyc2VsZiwgdGhlIGRldGFpbHMgYXJlOjoKKworICAgICAgICAvdXNyL2Jpbi9weXRob24gYnVpbGQtaW5zdGFsbGVyLnB5IFwKKyAgICAgICAgICAgIC0tc2RrLXBhdGg9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayBcCisgICAgICAgICAgICAtLXVuaXZlcnNhbC1hcmNocz0zMi1iaXQgXAorICAgICAgICAgICAgLS1kZXAtdGFyZ2V0PTEwLjMKKworICAgIC0gYnVpbGRzIHRoZSBmb2xsb3dpbmcgdGhpcmQtcGFydHkgbGlicmFyaWVzCisKKyAgICAgICAgKiBCemlwMgorICAgICAgICAqIE5DdXJzZXMKKyAgICAgICAgKiBHTlUgUmVhZGxpbmUgKEdQTCkKKyAgICAgICAgKiBTUUxpdGUgMworICAgICAgICAqIFhaCisgICAgICAgICogWmxpYiAxLjIuMworICAgICAgICAqIE9yYWNsZSBTbGVlcHljYXQgREIgNC44IChQeXRob24gMi54IG9ubHkpCisKKyAgICAtIHJlcXVpcmVzIEFjdGl2ZVN0YXRlIGBgVGNsL1RrIDguNGBgIChjdXJyZW50bHkgOC40LjIwKSB0byBiZSBpbnN0YWxsZWQgZm9yIGJ1aWxkaW5nCisKKyAgICAtIHJlY29tbWVuZGVkIGJ1aWxkIGVudmlyb25tZW50OgorCisgICAgICAgICogTWFjIE9TIFggMTAuNS44IFBQQyBvciBJbnRlbAorICAgICAgICAqIFhjb2RlIDMuMS40IChvciBsYXRlcikKKyAgICAgICAgKiBgYE1hY09TWDEwLjR1YGAgU0RLIChsYXRlciBTREtzIGRvIG5vdCBzdXBwb3J0IFBQQyBHMyBwcm9jZXNzb3JzKQorICAgICAgICAqIGBgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPTEwLjNgYAorICAgICAgICAqIEFwcGxlIGBgZ2NjLTQuMGBgCisgICAgICAgICogc3lzdGVtIFB5dGhvbiAyLjUgZm9yIGRvY3VtZW50YXRpb24gYnVpbGQgd2l0aCBTcGhpbngKKworICAgIC0gYWx0ZXJuYXRlIGJ1aWxkIGVudmlyb25tZW50czoKKworICAgICAgICAqIE1hYyBPUyBYIDEwLjYuOCB3aXRoIFhjb2RlIDMuMi42CisgICAgICAgICAgICAtIG5lZWQgdG8gY2hhbmdlIGBgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mve1RjbCxUa30uZnJhbWV3b3JrL1ZlcnNpb24vQ3VycmVudGBgIHRvIGBgOC40YGAKKworCisKIEdlbmVyYWwgUHJlcmVxdWlzaXRlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTE0NSw3ICsxNzQsNyBAQAogQnVpbGRpbmcgb3RoZXIgdW5pdmVyc2FsIGluc3RhbGxlcnMKIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAKLUl0IGlzIGFsc28gcG9zc2libGUgdG8gYnVpbGQgYSA0LXdheSB1bml2ZXJzYWwgaW5zdGFsbGVyIHRoYXQgcnVucyBvbiAKK0l0IGlzIGFsc28gcG9zc2libGUgdG8gYnVpbGQgYSA0LXdheSB1bml2ZXJzYWwgaW5zdGFsbGVyIHRoYXQgcnVucyBvbgogT1MgWCAxMC41IExlb3BhcmQgb3IgbGF0ZXI6OgogCiAgICAgL3Vzci9iaW4vcHl0aG9uIC9idWlsZC1pbnN0YWxsZXIucHkgXApAQCAtMTc5LDcgKzIwOCw3IEBACiAKICAgICAvdXNyL2xvY2FsL2Jpbi9weXRob25uLm4gLW0gdGVzdCAtdyAtdSBhbGwsLWxhcmdlZmlsZQogICAgIC91c3IvbG9jYWwvYmluL3B5dGhvbm4ubi0zMiAtbSB0ZXN0IC13IC11IGFsbAotICAgIAorCiBDZXJ0YWluIHRlc3RzIHdpbGwgYmUgc2tpcHBlZCBhbmQgc29tZSBjYXVzZSB0aGUgaW50ZXJwcmV0ZXIgdG8gZmFpbAogd2hpY2ggd2lsbCBsaWtlbHkgZ2VuZXJhdGUgYGBQeXRob24gcXVpdCB1bmV4cGVjdGVkbHlgYCBhbGVydCBtZXNzYWdlcwogdG8gYmUgZ2VuZXJhdGVkIGF0IHNldmVyYWwgcG9pbnRzIGR1cmluZyBhIHRlc3QgcnVuLiAgVGhlc2UgYXJlIG5vcm1hbApkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weSBiL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkKaW5kZXggMWQ0NjliYi4uOGJhYThjMyAxMDA3NTUKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weQorKysgYi9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5CkBAIC01NzIsNyArNTcyLDcgQEAKICAgICAiIiIKICAgICB0cnk6CiAgICAgICAgIGYgPSBvcGVuKGNvbmZpZ2ZpbGUsICJyIikKLSAgICBleGNlcHQ6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIGZhdGFsKCJGcmFtZXdvcmsgY29uZmlndXJhdGlvbiBmaWxlIG5vdCBmb3VuZDogJXMiICUgY29uZmlnZmlsZSkKIAogICAgIGZvciBsIGluIGY6CkBAIC04MTQsNyArODE0LDcgQEAKICAgICBleGNlcHQ6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLnVubGluayhmbmFtZSkKLSAgICAgICAgZXhjZXB0OgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKIAogZGVmIHZlcmlmeVRoaXJkUGFydHlGaWxlKHVybCwgY2hlY2tzdW0sIGZuYW1lKToKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZiBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZgppbmRleCA1MmQ4YjgwLi42NWUzZjE0IDEwMDY0NAotLS0gYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS5ydGYKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUucnRmCkBAIC0xLDQgKzEsNCBAQAote1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxMzQ3XGNvY29hc3VicnRmNTcwCit7XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjEzNDhcY29jb2FzdWJydGYxNzAKIHtcZm9udHRibFxmMFxmc3dpc3NcZmNoYXJzZXQwIEhlbHZldGljYTtcZjFcZm1vZGVyblxmY2hhcnNldDAgQ291cmllck5ld1BTTVQ7fQoge1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQogXG1hcmdsMTQ0MFxtYXJncjE0NDBcdmlld3cxMzM4MFx2aWV3aDE0NjAwXHZpZXdraW5kMApAQCAtMjQsNyArMjQsNyBAQAogXGkwICB2YXJpYW50LiAgVW5sZXNzIHlvdSBhcmUgaW5zdGFsbGluZyB0byBhbiAxMC41IHN5c3RlbSBvciB5b3UgbmVlZCB0byBidWlsZCBhcHBsaWNhdGlvbnMgdGhhdCBjYW4gcnVuIG9uIDEwLjUgc3lzdGVtcywgdXNlIHRoZSAxMC42IHZhcmlhbnQgaWYgcG9zc2libGUuICBUaGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIG9wZXJhdGluZyBzeXN0ZW0gZnVuY3Rpb25zIHRoYXQgYXJlIHN1cHBvcnRlZCBzdGFydGluZyB3aXRoIDEwLjYgYW5kIHlvdSBtYXkgc2VlIGJldHRlciBwZXJmb3JtYW5jZSB1c2luZyA2NC1iaXQgbW9kZS4gIEJ5IGRlZmF1bHQsIFB5dGhvbiB3aWxsIGF1dG9tYXRpY2FsbHkgcnVuIGluIDY0LWJpdCBtb2RlIGlmIHlvdXIgc3lzdGVtIHN1cHBvcnRzIGl0LiAgQWxzbyBzZWUgCiBcaSBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gYW5kIE9wZW5TU0wKIFxpMCAgYmVsb3cuICBUaGUgUHl0aG9ucyBpbnN0YWxsZWQgYnkgdGhlc2UgaW5zdGFsbGVycyBhcmUgYnVpbHQgd2l0aCBwcml2YXRlIGNvcGllcyBvZiBzb21lIHRoaXJkLXBhcnR5IGxpYnJhcmllcyBub3QgaW5jbHVkZWQgd2l0aCBvciBuZXdlciB0aGFuIHRob3NlIGluIE9TIFggaXRzZWxmLiAgVGhlIGxpc3Qgb2YgdGhlc2UgbGlicmFyaWVzIHZhcmllcyBieSBpbnN0YWxsZXIgdmFyaWFudCBhbmQgaXMgaW5jbHVkZWQgYXQgdGhlIGVuZCBvZiB0aGUgTGljZW5zZS5ydGYgZmlsZS4KLVxiIFx1bCBcdWxjMCBcCitcYiBcdWwgXAogXAogVXBkYXRlIHlvdXIgdmVyc2lvbiBvZiBUY2wvVGsgdG8gdXNlIElETEUgb3Igb3RoZXIgVGsgYXBwbGljYXRpb25zCiBcYjAgXHVsbm9uZSBcCkBAIC0zNiw3NSArMzYsMTYgQEAKIFxpMCAgZm9yIHRoaXMgdmVyc2lvbiBvZiBQeXRob24gYW5kIG9mIE1hYyBPUyBYLlwKIAogXGIgXHVsIFwKLUluc3RhbGxpbmcgb24gT1MgWCAxMC44IChNb3VudGFpbiBMaW9uKSBvciBsYXRlciBzeXN0ZW1zXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCi1cY2YwIFx1bG5vbmUgW0NIQU5HRUQgZm9yIFB5dGhvbiAzLjQuMl0KLVxiMCBcCi1cCi1BcyBvZiBQeXRob24gMy40LjIsIGluc3RhbGxlciBwYWNrYWdlcyBmcm9tIHB5dGhvbi5vcmcgYXJlIG5vdyBjb21wYXRpYmxlIHdpdGggdGhlIEdhdGVrZWVwZXIgc2VjdXJpdHkgZmVhdHVyZSBpbnRyb2R1Y2VkIGluIE9TIFggMTAuOC4gICBEb3dubG9hZGVkIHBhY2thZ2VzIGNhbiBub3cgYmUgZGlyZWN0bHkgaW5zdGFsbGVkIGJ5IGRvdWJsZS1jbGlja2luZyB3aXRoIHRoZSBkZWZhdWx0IHN5c3RlbSBzZWN1cml0eSBzZXR0aW5ncy4gIFB5dGhvbi5vcmcgaW5zdGFsbGVyIHBhY2thZ2VzIGZvciBPUyBYIGFyZSBzaWduZWQgd2l0aCB0aGUgRGV2ZWxvcGVyIElEIG9mIHRoZSBidWlsZGVyLCBhcyBpZGVudGlmaWVkIG9uIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzLyJ9fXtcZmxkcnNsdCB0aGUgZG93bmxvYWQgcGFnZX19IGZvciB0aGlzIHJlbGVhc2UuICBUbyBpbnNwZWN0IHRoZSBkaWdpdGFsIHNpZ25hdHVyZSBvZiB0aGUgcGFja2FnZSwgY2xpY2sgb24gdGhlIGxvY2sgaWNvbiBpbiB0aGUgdXBwZXIgcmlnaHQgY29ybmVyIG9mIHRoZSAKLVxpIEluc3RhbGwgUHl0aG9uCi1caTAgIGluc3RhbGxlciB3aW5kb3cuICBSZWZlciB0byBBcHBsZVwnOTJzIHN1cHBvcnQgcGFnZXMgZm9yIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHA6Ly9zdXBwb3J0LmFwcGxlLmNvbS9rYi9odDUyOTAifX17XGZsZHJzbHQgbW9yZSBpbmZvcm1hdGlvbiBvbiBHYXRla2VlcGVyfX0uXAotXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCitDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gYW5kIE9wZW5TU0xcCiAKLVxiIFxjZjAgXHVsIFNpbXBsaWZpZWQgd2ViLWJhc2VkIGluc3RhbGxzXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCi1cY2YwIFx1bG5vbmUgW05FVyBmb3IgUHl0aG9uIDMuNC4yXQotXGIwIFwKLVwKLVdpdGggdGhlIGNoYW5nZSB0byB0aGUgbmV3ZXIgZmxhdCBmb3JtYXQgaW5zdGFsbGVyIHBhY2thZ2UsIHRoZSBkb3dubG9hZCBmaWxlIG5vdyBoYXMgYSAKLVxmMSAucGtnCi1cZjAgIGV4dGVuc2lvbiBhcyBpdCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IHRvIGVtYmVkIHRoZSBpbnN0YWxsZXIgd2l0aGluIGEgZGlzayBpbWFnZSAoCi1cZjEgLmRtZwotXGYwICkgY29udGFpbmVyLiAgIElmIHlvdSBkb3dubG9hZCB0aGUgUHl0aG9uIGluc3RhbGxlciB0aHJvdWdoIGEgd2ViIGJyb3dzZXIsIHRoZSBPUyBYIGluc3RhbGxlciBhcHBsaWNhdGlvbiBtYXkgb3BlbiBhdXRvbWF0aWNhbGx5IHRvIGFsbG93IHlvdSB0byBwZXJmb3JtIHRoZSBpbnN0YWxsLiAgSWYgeW91ciBicm93c2VyIHNldHRpbmdzIGRvIG5vdCBhbGxvdyBhdXRvbWF0aWMgb3BlbiwgZG91YmxlIGNsaWNrIG9uIHRoZSBkb3dubG9hZGVkIGluc3RhbGxlciBmaWxlLlwKLVwKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAotCi1cYiBcY2YwIFx1bCBOZXcgSW5zdGFsbGF0aW9uIE9wdGlvbnMgYW5kIERlZmF1bHRzXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCi1cY2YwIFx1bG5vbmUgW05FVyBmb3IgUHl0aG9uIDMuNC4wXQotXGIwIFwKLVwKLVRoZSBQeXRob24gaW5zdGFsbGVyIG5vdyBpbmNsdWRlcyBhbiBvcHRpb24gdG8gYXV0b21hdGljYWxseSBpbnN0YWxsIG9yIHVwZ3JhZGUgCi1cZjEgcGlwCi1cZjAgLCBhIHRvb2wgZm9yIGluc3RhbGxpbmcgYW5kIG1hbmFnaW5nIFB5dGhvbiBwYWNrYWdlcy4gIFRoaXMgb3B0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBhbmQgbm8gSW50ZXJuZXQgYWNjZXNzIGlzIHJlcXVpcmVkLiAgSWYgeW91IGRvIG5vdCB3YW50IHRoZSBpbnN0YWxsZXIgdG8gZG8gdGhpcywgc2VsZWN0IHRoZSAKLVxpIEN1c3RvbWl6ZQotXGkwICBvcHRpb24gYXQgdGhlIAotXGkgSW5zdGFsbGF0aW9uIFR5cGUKLVxpMCAgc3RlcCBhbmQgdW5jaGVjayB0aGUgCi1caSBJbnN0YWxsIG9yIHVncHJhZGUgcGlwCi1caTAgIG9wdGlvbi5cCi1cCi1UbyBtYWtlIGl0IGVhc2llciB0byB1c2Ugc2NyaXB0cyBpbnN0YWxsZWQgYnkgdGhpcmQtcGFydHkgUHl0aG9uIHBhY2thZ2VzLCB3aXRoIAotXGYxIHBpcAotXGYwICBvciBieSBvdGhlciBtZWFucywgdGhlIAotXGkgU2hlbGwgcHJvZmlsZSB1cGRhdGVyCi1caTAgIG9wdGlvbiBpcyBub3cgZW5hYmxlZCBieSBkZWZhdWx0LCBhcyBoYXMgYmVlbiB0aGUgY2FzZSB3aXRoIFB5dGhvbiAyLjcueCBpbnN0YWxsZXJzLiBZb3UgY2FuIGFsc28gdHVybiB0aGlzIG9wdGlvbiBvZmYgYnkgc2VsZWN0aW5nIAotXGkgQ3VzdG9taXplCi1caTAgIGFuZCB1bmNoZWNraW5nIHRoZSAKLVxpIFNoZWxsIHByb2ZpbGUgdXBkYXRlcgotXGkwICBvcHRpb24uIFlvdSBjYW4gYWxzbyB1cGRhdGUgeW91ciBzaGVsbCBwcm9maWxlIGxhdGVyIGJ5IGxhdW5jaGluZyB0aGUgCi1caSBVcGRhdGUgU2hlbGwgUHJvZmlsZQotXGkwICBjb21tYW5kIGZvdW5kIGluIHRoZSAKLVxmMSAvQXBwbGljYXRpb25zL1B5dGhvbiAkVkVSU0lPTiAKLVxmMCBmb2xkZXIuICBZb3UgbWF5IG5lZWQgdG8gc3RhcnQgYSBuZXcgdGVybWluYWwgd2luZG93IGZvciB0aGUgY2hhbmdlcyB0byB0YWtlIGVmZmVjdC5cCi1cCi1Gb3Igb3RoZXIgY2hhbmdlcyBpbiB0aGlzIHJlbGVhc2UsIHNlZSB0aGUgUmVsZWFzZSBOb3RlcyBsaW5rIGZvciB0aGlzIHJlbGVhc2UgYXQge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZHMvIn19e1xmbGRyc2x0IGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzL319LlwKLVwKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAotCi1cYiBcY2YwIFx1bCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gYW5kIE9wZW5TU0xcCi1ccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWwKLVxjZjAgXHVsbm9uZSBbQ0hBTkdFRCBmb3IgUHl0aG9uIDMuNC4zXQotXGIwIFwKLVwKLVB5dGhvbiAzLjQuMyBpbmNsdWRlcyBhIG51bWJlciBvZiBuZXR3b3JrIHNlY3VyaXR5IGVuaGFuY2VtZW50cyB0aGF0IGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgaW5jbHVzaW9uIGluIFB5dGhvbiAzLjQgbWFpbnRlbmFuY2UgcmVsZWFzZXMuICB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wNDc2LyJ9fXtcZmxkcnNsdCBQRVAgNDc2fX0gY2hhbmdlcyBzZXZlcmFsIHN0YW5kYXJkIGxpYnJhcnkgbW9kdWxlcywgbGlrZSAKK1xiMCBcdWxub25lIFwKK1B5dGhvbiAzLjUgaW5jbHVkZXMgYSBudW1iZXIgb2YgbmV0d29yayBzZWN1cml0eSBlbmhhbmNlbWVudHMgdGhhdCB3ZXJlIHJlbGVhc2VkIGluIFB5dGhvbiAzLjQuMyBhbmQgUHl0aG9uIDIuNy4xMC4gIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0NzYvIn19e1xmbGRyc2x0IFBFUCA0NzZ9fSBjaGFuZ2VzIHNldmVyYWwgc3RhbmRhcmQgbGlicmFyeSBtb2R1bGVzLCBsaWtlIAogXGkgaHR0cGxpYgogXGkwICwgCiBcaSB1cmxsaWIKIFxpMCAsIGFuZCAKIFxpIHhtbHJwY2xpYgotXGkwICwgdG8gYnkgZGVmYXVsdCB2ZXJpZnkgY2VydGlmaWNhdGVzIHByZXNlbnRlZCBieSBzZXJ2ZXJzIG92ZXIgc2VjdXJlIChUTFMpIGNvbm5lY3Rpb25zLiAgVGhlIHZlcmlmaWNhdGlvbiBpcyBwZXJmb3JtZWQgYnkgdGhlIE9wZW5TU0wgbGlicmFyaWVzIHRoYXQgUHl0aG9uIGlzIGxpbmtlZCB0by4gIFByaW9yIHRvIDMuNC4zLCB0aGUgcHl0aG9uLm9yZyBpbnN0YWxsZXJzIGR5bmFtaWNhbGx5IGxpbmtlZCB3aXRoIEFwcGxlLXN1cHBsaWVkIE9wZW5TU0wgbGlicmFyaWVzIHNoaXBwZWQgd2l0aCBPUyBYLiAgT1MgWCBwcm92aWRlcyBhIG11bHRpcGxlIGxldmVsIHNlY3VyaXR5IGZyYW1ld29yayB0aGF0IHN0b3JlcyB0cnVzdCBjZXJ0aWZpY2F0ZXMgaW4gc3lzdGVtIGFuZCB1c2VyIGtleWNoYWlucyBtYW5hZ2VkIGJ5IHRoZSAKK1xpMCAsIHRvIGJ5IGRlZmF1bHQgdmVyaWZ5IGNlcnRpZmljYXRlcyBwcmVzZW50ZWQgYnkgc2VydmVycyBvdmVyIHNlY3VyZSAoVExTKSBjb25uZWN0aW9ucy4gIFRoZSB2ZXJpZmljYXRpb24gaXMgcGVyZm9ybWVkIGJ5IHRoZSBPcGVuU1NMIGxpYnJhcmllcyB0aGF0IFB5dGhvbiBpcyBsaW5rZWQgdG8uICBQcmlvciB0byAzLjQuMywgYm90aCBweXRob24ub3JnIGluc3RhbGxlcnMgZHluYW1pY2FsbHkgbGlua2VkIHdpdGggQXBwbGUtc3VwcGxpZWQgT3BlblNTTCBsaWJyYXJpZXMgc2hpcHBlZCB3aXRoIE9TIFguICBPUyBYIHByb3ZpZGVzIGEgbXVsdGlwbGUgbGV2ZWwgc2VjdXJpdHkgZnJhbWV3b3JrIHRoYXQgc3RvcmVzIHRydXN0IGNlcnRpZmljYXRlcyBpbiBzeXN0ZW0gYW5kIHVzZXIga2V5Y2hhaW5zIG1hbmFnZWQgYnkgdGhlIAogXGkgS2V5Y2hhaW4gQWNjZXNzIAogXGkwIGFwcGxpY2F0aW9uIGFuZCB0aGUgCiBcaSBzZWN1cml0eQpAQCAtMTIyLDEwICs2MywxMCBAQAogXGYxIC9TeXN0ZW0vTGlicmFyeS9PcGVuU1NMCiBcZjAgLiAgVGhlc2UgZGlyZWN0b3JpZXMgYXJlIHR5cGljYWxseSBlbXB0eSBhbmQgbm90IG1hbmFnZWQgYnkgT1MgWDsgeW91IG11c3QgbWFuYWdlIHRoZW0geW91cnNlbGYgb3Igc3VwcGx5IHlvdXIgb3duIFNTTCBjb250ZXh0cy4gIE9wZW5TU0wgMC45LjcgaXMgb2Jzb2xldGUgYnkgY3VycmVudCBzZWN1cml0eSBzdGFuZGFyZHMsIGxhY2tpbmcgYSBudW1iZXIgb2YgaW1wb3J0YW50IGZlYXR1cmVzIGZvdW5kIGluIGxhdGVyIHZlcnNpb25zLiAgQW1vbmcgdGhlIHByb2JsZW1zIHRoaXMgY2F1c2VzIGlzIHRoZSBpbmFiaWxpdHkgdG8gdmVyaWZ5IGhpZ2hlci1zZWN1cml0eSBjZXJ0aWZpY2F0ZXMgbm93IHVzZWQgYnkgcHl0aG9uLm9yZyBzZXJ2aWNlcywgaW5jbHVkaW5nIAogXGkgdHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkifX17XGZsZHJzbHQgaGUgUHl0aG9uIFBhY2thZ2UgSW5kZXgsIFB5UEl9fQotXGkwIC4gIFRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgYXMgb2YgMy40LjMgdGhlIAorXGkwIC4gIFRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgdGhlIAogXGkgMTAuNSsgMzItYml0LW9ubHkgcHl0aG9uLm9yZyB2YXJpYW50CiBcaTAgIGlzIGxpbmtlZCB3aXRoIGEgcHJpdmF0ZSBjb3B5IG9mIAotXGkgT3BlblNTTCAxLjAKK1xpIE9wZW5TU0wgMS4wLjIKIFxpMCA7IGl0IGNvbnN1bHRzIHRoZSBzYW1lIGRlZmF1bHQgY2VydGlmaWNhdGUgZGlyZWN0b3J5LCAKIFxmMSAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTAogXGYwIC4gICBBcyBiZWZvcmUsIGl0IGlzIHN0aWxsIG5lY2Vzc2FyeSB0byBtYW5hZ2UgY2VydGlmaWNhdGVzIHlvdXJzZWxmIHdoZW4geW91IHVzZSB0aGlzIFB5dGhvbiB2YXJpYW50IGFuZCwgd2l0aCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gbm93IGVuYWJsZWQgYnkgZGVmYXVsdCwgeW91IG1heSBub3cgbmVlZCB0byB0YWtlIGFkZGl0aW9uYWwgc3RlcHMgdG8gZW5zdXJlIHlvdXIgUHl0aG9uIHByb2dyYW1zIGhhdmUgYWNjZXNzIHRvIENBIGNlcnRpZmljYXRlcyB5b3UgdHJ1c3QuICBJZiB5b3UgdXNlIHRoaXMgUHl0aG9uIHZhcmlhbnQgdG8gYnVpbGQgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbnMgd2l0aCB0aGlyZC1wYXJ0eSB0b29scyBsaWtlIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHkyYXBwLyJ9fXtcZmxkcnNsdCAKQEAgLTEzNyw3ICs3OCw3IEBACiBcaSAwLjkuOCBsaWJyYXJpZXMKIFxpMCAuICBBcHBsZSdzIDAuOS44IHZlcnNpb24gaW5jbHVkZXMgYW4gaW1wb3J0YW50IGFkZGl0aW9uYWwgZmVhdHVyZTogaWYgYSBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgdmVyaWZpZWQgdXNpbmcgdGhlIG1hbnVhbGx5IGFkbWluaXN0ZXJlZCBjZXJ0aWZpY2F0ZXMgaW4gCiBcZjEgL1N5c3RlbS9MaWJyYXJ5L09wZW5TU0wKLVxmMCAsIHRoZSBjZXJ0aWZpY2F0ZXMgbWFuYWdlZCBieSB0aGUgc3lzdGVtIHNlY3VyaXR5IGZyYW1ld29yayBJbiB0aGUgdXNlciBhbmQgc3lzdGVtIGtleWNoYWlucyBhcmUgYWxzbyBjb25zdWx0ZWQgKHVzaW5nIEFwcGxlIHByaXZhdGUgQVBJcykuICBGb3IgdGhpcyByZWFzb24sIGZvciAzLjQuMyB0aGUgCitcZjAgLCB0aGUgY2VydGlmaWNhdGVzIG1hbmFnZWQgYnkgdGhlIHN5c3RlbSBzZWN1cml0eSBmcmFtZXdvcmsgSW4gdGhlIHVzZXIgYW5kIHN5c3RlbSBrZXljaGFpbnMgYXJlIGFsc28gY29uc3VsdGVkICh1c2luZyBBcHBsZSBwcml2YXRlIEFQSXMpLiAgRm9yIHRoaXMgcmVhc29uLCB0aGUgCiBcaSA2NC1iaXQvMzItYml0IDEwLjYrIHB5dGhvbi5vcmcgdmFyaWFudAogXGkwICBjb250aW51ZXMgdG8gYmUgZHluYW1pY2FsbHkgbGlua2VkIHdpdGggQXBwbGUncyBPcGVuU1NMIDAuOS44IHNpbmNlIGl0IHdhcyBmZWx0IHRoYXQgdGhlIGxvc3Mgb2YgdGhlIHN5c3RlbS1wcm92aWRlZCBjZXJ0aWZpY2F0ZXMgYW5kIG1hbmFnZW1lbnQgdG9vbHMgb3V0d2VpZ2hzIHRoZSBhZGRpdGlvbmFsIHNlY3VyaXR5IGZlYXR1cmVzIHByb3ZpZGVkIGJ5IG5ld2VyIHZlcnNpb25zIG9mIE9wZW5TU0wuICBUaGlzIHdpbGwgbGlrZWx5IGNoYW5nZSBpbiBmdXR1cmUgcmVsZWFzZXMgb2YgdGhlIHB5dGhvbi5vcmcgaW5zdGFsbGVycyBhcyBBcHBsZSBoYXMgZGVwcmVjYXRlZCB1c2Ugb2YgdGhlIHN5c3RlbS1zdXBwbGllZCBPcGVuU1NMIGxpYnJhcmllcy4gIElmIHlvdSBkbyBuZWVkIGZlYXR1cmVzIGZyb20gbmV3ZXIgdmVyc2lvbnMgb2YgT3BlblNTTCwgdGhlcmUgYXJlIHRoaXJkLXBhcnR5IE9wZW5TU0wgd3JhcHBlciBwYWNrYWdlcyBhdmFpbGFibGUgdGhyb3VnaCAKIFxpIFB5UEkKQEAgLTE0NSw3ICs4NiwxOCBAQAogXAogVGhlIGJ1bmRsZWQgCiBcZjEgcGlwCi1cZjAgIGluY2x1ZGVkIHdpdGggMy40LjMgaGFzIGl0cyBvd24gZGVmYXVsdCBjZXJ0aWZpY2F0ZSBzdG9yZSBmb3IgdmVyaWZ5aW5nIGRvd25sb2FkIGNvbm5lY3Rpb25zLlwKK1xmMCAgaW5jbHVkZWQgd2l0aCB0aGUgUHl0aG9uIDMuNSBpbnN0YWxsZXJzIGhhcyBpdHMgb3duIGRlZmF1bHQgY2VydGlmaWNhdGUgc3RvcmUgZm9yIHZlcmlmeWluZyBkb3dubG9hZCBjb25uZWN0aW9ucy5cCitcCisKK1xiIFx1bCBPdGhlciBjaGFuZ2VzXAorCitcYjAgXHVsbm9uZSBcCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWwKK1xjZjAgRm9yIG90aGVyIGNoYW5nZXMgaW4gdGhpcyByZWxlYXNlLCBzZWUgdGhlIAorXGkgV2hhdCdzIG5ldworXGkwICBzZWN0aW9uIGluIHRoZSB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3d3dy5weXRob24ub3JnL2RvYy8ifX17XGZsZHJzbHQgRG9jdW1lbnRhdGlvbiBTZXR9fSBmb3IgdGhpcyByZWxlYXNlIGFuZCBpdHMgCitcaSBSZWxlYXNlIE5vdGVzCitcaTAgIGxpbmsgYXQge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZHMvIn19e1xmbGRyc2x0IGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzL319LlwKIFxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAogCiBcYiBcY2YwIFx1bCBcCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZgppbmRleCAyNTI3Nzg3Li5kZmI3NWQ4IDEwMDY0NAotLS0gYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmCisrKyBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYKQEAgLTEsNSArMSw1IEBACiB7XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjEzNDNcY29jb2FzdWJydGYxNjAKLVxjb2NvYXNjcmVlbmZvbnRzMXtcZm9udHRibFxmMFxmc3dpc3NcZmNoYXJzZXQwIEhlbHZldGljYTtcZjFcZm1vZGVyblxmY2hhcnNldDAgQ291cmllck5ld1BTTVQ7fQorXGNvY29hc2NyZWVuZm9udHMxe1xmb250dGJsXGYwXGZzd2lzc1xmY2hhcnNldDAgSGVsdmV0aWNhO30KIHtcY29sb3J0Ymw7XHJlZDI1NVxncmVlbjI1NVxibHVlMjU1O30KIFxwYXBlcncxMTkwNVxwYXBlcmgxNjgzN1xtYXJnbDE0NDBcbWFyZ3IxNDQwXHZpZXd3MTIyMDBcdmlld2gxMDg4MFx2aWV3a2luZDAKIFxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDAKQEAgLTE3LDEyICsxNyw2IEBACiBcYjAgLlwKIFwKIAotXGIgTkVXIGZvciBQeXRob24gMy40LjM6IAotXGIwICAzLjQuMyBpbmNsdWRlcyBuZXR3b3JrIHNlY3VyaXR5IGVuaGFuY2VtZW50cyB0aGF0IG1heSByZXF1aXJlIGNoYW5nZXMgdG8geW91ciBQeXRob24gYXBwbGljYXRpb25zLiAgU2VlIHRoZSAKLVxmMSBSZWFkTWUKLVxmMCAgZmlsZSBhbmQge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy93aGF0c25ldy8zLjQuaHRtbCNjaGFuZ2VkLWluLTMtNC0zIn19e1xmbGRyc2x0IHRoZSBQeXRob24gZG9jdW1lbnRhdGlvbn19IGZvciBtb3JlIGluZm9ybWF0aW9uLlwKLVwKLQogXGIgSU1QT1JUQU5UOgogXGIwICAKIFxiIElETEUKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZW5zdXJlcGlwIGIvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5lbnN1cmVwaXAKaW5kZXggYmY4OTNkMS4uMzA3NGZhMyAxMDA3NTUKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5lbnN1cmVwaXAKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5lbnN1cmVwaXAKQEAgLTEwLDE1ICsxMCwxNSBAQAogCiB1bWFzayAwMjIKIAotIiR7RldLfS9iaW4vcHl0aG9uJHtQWVZFUn0iIC1tIGVuc3VyZXBpcCAtLXVwZ3JhZGUKKyIke0ZXS30vYmluL3B5dGhvbiR7UFlWRVJ9IiAtRSAtcyAtbSBlbnN1cmVwaXAgLS11cGdyYWRlCiAKLSIke0ZXS30vYmluL3B5dGhvbiR7UFlWRVJ9IiAtV2kgXAotICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L2NvbXBpbGVhbGwucHkiIFwKKyIke0ZXS30vYmluL3B5dGhvbiR7UFlWRVJ9IiAtRSAtcyAtV2kgXAorICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L2NvbXBpbGVhbGwucHkiIC1xIC1qMCBcCiAgICAgLWYgLXggYmFkc3ludGF4IFwKICAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9zaXRlLXBhY2thZ2VzIgogCi0iJHtGV0t9L2Jpbi9weXRob24ke1BZVkVSfSIgLVdpIC1PIFwKLSAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiBcCisiJHtGV0t9L2Jpbi9weXRob24ke1BZVkVSfSIgLUUgLXMgLVdpIC1PIFwKKyAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiAtcSAtajAgXAogICAgIC1mIC14IGJhZHN5bnRheCBcCiAgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vc2l0ZS1wYWNrYWdlcyIKIApkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5mcmFtZXdvcmsgYi9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmZyYW1ld29yawppbmRleCBlYjA4Mjk3Li4wZjJlNTJjIDEwMDc1NQotLS0gYS9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmZyYW1ld29yaworKysgYi9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmZyYW1ld29yawpAQCAtNiwyMyArNiwyMyBAQAogUFlWRVI9IkBQWVZFUkAiCiBGV0s9Ii9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy9AUFlWRVJAIgogCi0iJHtGV0t9L2Jpbi9weXRob25AUFlWRVJAIiAtV2kgXAotICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L2NvbXBpbGVhbGwucHkiIFwKKyIke0ZXS30vYmluL3B5dGhvbkBQWVZFUkAiIC1FIC1zIC1XaSBcCisgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vY29tcGlsZWFsbC5weSIgLXEgLWowIFwKICAgICAtZiAteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKICAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfSIKIAotIiR7RldLfS9iaW4vcHl0aG9uQFBZVkVSQCIgLVdpIC1PIFwKLSAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiBcCisiJHtGV0t9L2Jpbi9weXRob25AUFlWRVJAIiAtRSAtcyAtV2kgLU8gXAorICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L2NvbXBpbGVhbGwucHkiIC1xIC1qMCBcCiAgICAgLWYgLXggJ2JhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8bGliMnRvMy90ZXN0cy9kYXRhJyBcCiAgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0iCiAKLSIke0ZXS30vYmluL3B5dGhvbkBQWVZFUkAiIC1XaSBcCi0gICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vY29tcGlsZWFsbC5weSIgXAorIiR7RldLfS9iaW4vcHl0aG9uQFBZVkVSQCIgLUUgLXMgLVdpIFwKKyAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiAtcSAtajAgXAogICAgIC1mIC14IGJhZHN5bnRheCBcCiAgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vc2l0ZS1wYWNrYWdlcyIKIAotIiR7RldLfS9iaW4vcHl0aG9uQFBZVkVSQCIgLVdpIC1PIFwKLSAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiBcCisiJHtGV0t9L2Jpbi9weXRob25AUFlWRVJAIiAtRSAtcyAtV2kgLU8gXAorICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L2NvbXBpbGVhbGwucHkiIC1xIC1qMCBcCiAgICAgLWYgLXggYmFkc3ludGF4IFwKICAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9zaXRlLXBhY2thZ2VzIgogCmRpZmYgLS1naXQgYS9NYWMvTWFrZWZpbGUuaW4gYi9NYWMvTWFrZWZpbGUuaW4KaW5kZXggMDNlYzczOC4uMTI1NWIxMyAxMDA2NDQKLS0tIGEvTWFjL01ha2VmaWxlLmluCisrKyBiL01hYy9NYWtlZmlsZS5pbgpAQCAtMSw1ICsxLDUgQEAKLSMgVGhpcyBmaWxlIGNhbiBiZSBpbnZva2VkIGZyb20gdGhlIHZhcmlvdXMgZnJhbWV3b3JraW5zdGFsbC4uLiB0YXJnZXRzIGluIHRoZSAKLSMgbWFpbiBNYWtlZmlsZS4gVGhlIG5leHQgY291cGxlIG9mIHZhcmlhYmxlcyBhcmUgb3ZlcnJpZGRlbiBvbiB0aGUgCisjIFRoaXMgZmlsZSBjYW4gYmUgaW52b2tlZCBmcm9tIHRoZSB2YXJpb3VzIGZyYW1ld29ya2luc3RhbGwuLi4gdGFyZ2V0cyBpbiB0aGUKKyMgbWFpbiBNYWtlZmlsZS4gVGhlIG5leHQgY291cGxlIG9mIHZhcmlhYmxlcyBhcmUgb3ZlcnJpZGRlbiBvbiB0aGUKICMgY29tbWFuZGxpbmUgaW4gdGhhdCBjYXNlLgogCiBWRVJTSU9OPUBWRVJTSU9OQApAQCAtNTMsNyArNTMsNyBAQAogaW5zdGFsbGFwcHM6IGluc3RhbGxfUHl0aG9uIGluc3RhbGxfUHl0aG9uTGF1bmNoZXIgaW5zdGFsbF9JRExFCiAKICMKLSMgSW5zdGFsbCB1bml4IHRvb2xzIGluIC91c3IvbG9jYWwvYmluLiBUaGVzZSBhcmUganVzdCBhbGlhc2VzIGZvciB0aGUgCisjIEluc3RhbGwgdW5peCB0b29scyBpbiAvdXNyL2xvY2FsL2Jpbi4gVGhlc2UgYXJlIGp1c3QgYWxpYXNlcyBmb3IgdGhlCiAjIGFjdHVhbCBpbnN0YWxsYXRpb24gaW5zaWRlIHRoZSBmcmFtZXdvcmsuCiAjCiBpbnN0YWxsdW5peHRvb2xzOgpkaWZmIC0tZ2l0IGEvTWFjL1B5dGhvbkxhdW5jaGVyL0luZm8ucGxpc3QuaW4gYi9NYWMvUHl0aG9uTGF1bmNoZXIvSW5mby5wbGlzdC5pbgppbmRleCA2YzRiZmU4Li40YTVlZWI1IDEwMDY0NAotLS0gYS9NYWMvUHl0aG9uTGF1bmNoZXIvSW5mby5wbGlzdC5pbgorKysgYi9NYWMvUHl0aG9uTGF1bmNoZXIvSW5mby5wbGlzdC5pbgpAQCAtMSw1ICsxLDUgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZSBDb21wdXRlci8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KKzwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8ZGljdD4KIAk8a2V5PkNGQnVuZGxlRGV2ZWxvcG1lbnRSZWdpb248L2tleT4KQEAgLTM4LDcgKzM4LDcgQEAKIAkJPC9kaWN0PgogCTwvYXJyYXk+CiAJPGtleT5DRkJ1bmRsZUV4ZWN1dGFibGU8L2tleT4KLQk8c3RyaW5nPlB5dGhvbkxhdW5jaGVyPC9zdHJpbmc+CisJPHN0cmluZz5QeXRob24gTGF1bmNoZXI8L3N0cmluZz4KIAk8a2V5PkNGQnVuZGxlR2V0SW5mb1N0cmluZzwva2V5PgogCTxzdHJpbmc+JVZFUlNJT04lLCDCqSAyMDAxLTIwMTYgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb248L3N0cmluZz4KIAk8a2V5PkNGQnVuZGxlSWNvbkZpbGU8L2tleT4KZGlmZiAtLWdpdCBhL01hYy9QeXRob25MYXVuY2hlci9NYWtlZmlsZS5pbiBiL01hYy9QeXRob25MYXVuY2hlci9NYWtlZmlsZS5pbgppbmRleCBmMDVlZmRmLi40YzA1ZjI2IDEwMDY0NAotLS0gYS9NYWMvUHl0aG9uTGF1bmNoZXIvTWFrZWZpbGUuaW4KKysrIGIvTWFjL1B5dGhvbkxhdW5jaGVyL01ha2VmaWxlLmluCkBAIC0xNSwxMiArMTUsMTAgQEAKIFBZVEhPTkZSQU1FV09SSz1AUFlUSE9ORlJBTUVXT1JLQAogCiAjIERlcGxveW1lbnQgdGFyZ2V0IHNlbGVjdGVkIGR1cmluZyBjb25maWd1cmUsIHRvIGJlIGNoZWNrZWQKLSMgYnkgZGlzdHV0aWxzICAKKyMgYnkgZGlzdHV0aWxzCiBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9QENPTkZJR1VSRV9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRACiBARVhQT1JUX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVEBleHBvcnQgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCiAKLUJVTkRMRUJVTERFUj0kKHNyY2RpcikvLi4vVG9vbHMvYnVuZGxlYnVpbGRlci5weQotCiBQWVRIT05BUFBTRElSPUBGUkFNRVdPUktJTlNUQUxMQVBQU1BSRUZJWEAvJChQWVRIT05GUkFNRVdPUkspICQoVkVSU0lPTikKIE9CSkVDVFM9RmlsZVNldHRpbmdzLm8gTXlBcHBEZWxlZ2F0ZS5vIE15RG9jdW1lbnQubyBQcmVmZXJlbmNlc1dpbmRvd0NvbnRyb2xsZXIubyBkb3NjcmlwdC5vIG1haW4ubwogCkBAIC0zMCwxMCArMjgsMTAgQEAKIAkvYmluL2NwIC1yICJQeXRob24gTGF1bmNoZXIuYXBwIiAiJChERVNURElSKSQoUFlUSE9OQVBQU0RJUikiCiAJdG91Y2ggIiQoREVTVERJUikkKFBZVEhPTkFQUFNESVIpL1B5dGhvbiBMYXVuY2hlci5hcHAiCiAKLQogY2xlYW46CiAJcm0gLWYgKi5vICJQeXRob24gTGF1bmNoZXIiCiAJcm0gLXJmICJQeXRob24gTGF1bmNoZXIuYXBwIgorCXJtIC1mIEluZm8ucGxpc3QKIAogUHl0aG9uXCBMYXVuY2hlci5hcHA6ICBJbmZvLnBsaXN0IFwKIAkJUHl0aG9uXCBMYXVuY2hlciAkKHNyY2RpcikvLi4vSWNvbnMvUHl0aG9uTGF1bmNoZXIuaWNucyBcCkBAIC00MSwxOCArMzksMTcgQEAKIAkJJChzcmNkaXIpLy4uL0ljb25zL1B5dGhvbkNvbXBpbGVkLmljbnMgXAogCQkkKHNyY2RpcikvZmFjdG9yeVNldHRpbmdzLnBsaXN0CiAJcm0gLWZyICJQeXRob24gTGF1bmNoZXIuYXBwIgotCSQoUlVOU0hBUkVEKSAkKEJVSUxEUFlUSE9OKSAkKEJVTkRMRUJVTERFUikgXAotCQktLWJ1aWxkZGlyPS4gXAotCQktLW5hbWU9IlB5dGhvbiBMYXVuY2hlciIgXAotCQktLWV4ZWN1dGFibGU9IlB5dGhvbiBMYXVuY2hlciIgXAotCQktLWljb25maWxlPSQoc3JjZGlyKS8uLi9JY29ucy9QeXRob25MYXVuY2hlci5pY25zIFwKLQkJLS1idW5kbGUtaWQ9b3JnLnB5dGhvbi5QeXRob25MYXVuY2hlciBcCi0JCS0tcmVzb3VyY2U9JChzcmNkaXIpLy4uL0ljb25zL1B5dGhvblNvdXJjZS5pY25zIFwKLQkJLS1yZXNvdXJjZT0kKHNyY2RpcikvLi4vSWNvbnMvUHl0aG9uQ29tcGlsZWQuaWNucyBcCi0JCS0tcmVzb3VyY2U9JChzcmNkaXIpL0VuZ2xpc2gubHByb2ogXAotCQktLXJlc291cmNlPSQoc3JjZGlyKS9mYWN0b3J5U2V0dGluZ3MucGxpc3QgXAotCQktLXBsaXN0IEluZm8ucGxpc3QgXAotCQlidWlsZAorCW1rZGlyICJQeXRob24gTGF1bmNoZXIuYXBwIgorCW1rZGlyICJQeXRob24gTGF1bmNoZXIuYXBwL0NvbnRlbnRzIgorCW1rZGlyICJQeXRob24gTGF1bmNoZXIuYXBwL0NvbnRlbnRzL01hY09TIgorCW1rZGlyICJQeXRob24gTGF1bmNoZXIuYXBwL0NvbnRlbnRzL1Jlc291cmNlcyIKKwljcCAiUHl0aG9uIExhdW5jaGVyIiAiUHl0aG9uIExhdW5jaGVyLmFwcC9Db250ZW50cy9NYWNPUyIKKwljcCBJbmZvLnBsaXN0ICAiUHl0aG9uIExhdW5jaGVyLmFwcC9Db250ZW50cyIKKwljcCAkKHNyY2RpcikvLi4vSWNvbnMvUHl0aG9uTGF1bmNoZXIuaWNucyAgIlB5dGhvbiBMYXVuY2hlci5hcHAvQ29udGVudHMvUmVzb3VyY2VzIgorCWNwICQoc3JjZGlyKS8uLi9JY29ucy9QeXRob25Tb3VyY2UuaWNucyAgIlB5dGhvbiBMYXVuY2hlci5hcHAvQ29udGVudHMvUmVzb3VyY2VzIgorCWNwICQoc3JjZGlyKS8uLi9JY29ucy9QeXRob25Db21waWxlZC5pY25zICAiUHl0aG9uIExhdW5jaGVyLmFwcC9Db250ZW50cy9SZXNvdXJjZXMiCisJY3AgJChzcmNkaXIpL2ZhY3RvcnlTZXR0aW5ncy5wbGlzdCAgIlB5dGhvbiBMYXVuY2hlci5hcHAvQ29udGVudHMvUmVzb3VyY2VzIgorCWNwIC1SICQoc3JjZGlyKS9FbmdsaXNoLmxwcm9qICJQeXRob24gTGF1bmNoZXIuYXBwL0NvbnRlbnRzL1Jlc291cmNlcyIKIAogRmlsZVNldHRpbmdzLm86ICQoc3JjZGlyKS9GaWxlU2V0dGluZ3MubQogCSQoQ0MpICQoQ0ZMQUdTKSAtbyAkQCAtYyAkKHNyY2RpcikvRmlsZVNldHRpbmdzLm0KZGlmZiAtLWdpdCBhL01hYy9SRUFETUUgYi9NYWMvUkVBRE1FCmluZGV4IDBhMzEzZDEuLmQ5NjIyYTYgMTAwNjQ0Ci0tLSBhL01hYy9SRUFETUUKKysrIGIvTWFjL1JFQURNRQpAQCAtMTksNyArMTksNyBAQAogCiAgIElmIHRoaXMgYXJndW1lbnQgaXMgc3BlY2lmaWVkIHRoZSBidWlsZCB3aWxsIGNyZWF0ZSBhIFB5dGhvbi5mcmFtZXdvcmsgcmF0aGVyCiAgIHRoYW4gYSB0cmFkaXRpb25hbCBVbml4IGluc3RhbGwuIFNlZSB0aGUgc2VjdGlvbgotICBfYEJ1aWxkaW5nIGFuZCB1c2luZyBhIGZyYW1ld29yay1iYXNlZCBQeXRob24gb24gTWFjIE9TIFhgIGZvciBtb3JlIAorICBfYEJ1aWxkaW5nIGFuZCB1c2luZyBhIGZyYW1ld29yay1iYXNlZCBQeXRob24gb24gTWFjIE9TIFhgIGZvciBtb3JlCiAgIGluZm9ybWF0aW9uIG9uIGZyYW1ld29ya3MuCiAKICAgSWYgdGhlIG9wdGlvbmFsIGRpcmVjdG9yeSBhcmd1bWVudCBpcyBzcGVjaWZpZWQgdGhlIGZyYW1ld29yayBpcyBpbnN0YWxsZWQKQEAgLTUzLDcgKzUzLDcgQEAKIAogKiBgYC0td2l0aC11bml2ZXJhbC1hcmNocz1WQUxVRWBgCiAKLSAgU3BlY2lmeSB0aGUga2luZCBvZiB1bml2ZXJzYWwgYmluYXJ5IHRoYXQgc2hvdWxkIGJlIGNyZWF0ZWQuIFRoaXMgb3B0aW9uIGlzIAorICBTcGVjaWZ5IHRoZSBraW5kIG9mIHVuaXZlcnNhbCBiaW5hcnkgdGhhdCBzaG91bGQgYmUgY3JlYXRlZC4gVGhpcyBvcHRpb24gaXMKICAgb25seSB2YWxpZCB3aGVuIGBgLS1lbmFibGUtdW5pdmVyc2Fsc2RrYGAgaXMgc3BlY2lmaWVkLiAgVGhlIGRlZmF1bHQgaXMKICAgYGAzMi1iaXRgYCBpZiBhIGJ1aWxkaW5nIHdpdGggYSBTREsgdGhhdCBzdXBwb3J0cyBQUEMsIG90aGVyd2lzZSBkZWZhdWx0cwogICB0byBgYGludGVsYGAuCkBAIC0xNzQsMTQgKzE3NCwxNCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogVGhlIG1haW4gcmVhc29uIGlzIGJlY2F1c2UgeW91IHdhbnQgdG8gY3JlYXRlIEdVSSBwcm9ncmFtcyBpbiBQeXRob24uIFdpdGggdGhlCi1leGNlcHRpb24gb2YgWDExL1hEYXJ3aW4tYmFzZWQgR1VJIHRvb2xraXRzIGFsbCBHVUkgcHJvZ3JhbXMgbmVlZCB0byBiZSBydW4gCitleGNlcHRpb24gb2YgWDExL1hEYXJ3aW4tYmFzZWQgR1VJIHRvb2xraXRzIGFsbCBHVUkgcHJvZ3JhbXMgbmVlZCB0byBiZSBydW4KIGZyb20gYSBNYWMgT1MgWCBhcHBsaWNhdGlvbiBidW5kbGUgKCIuYXBwIikuCiAKIFdoaWxlIGl0IGlzIHRlY2huaWNhbGx5IHBvc3NpYmxlIHRvIGNyZWF0ZSBhIC5hcHAgd2l0aG91dCB1c2luZyBmcmFtZXdvcmtzIHlvdQogd2lsbCBoYXZlIHRvIGRvIHRoZSB3b3JrIHlvdXJzZWxmIGlmIHlvdSByZWFsbHkgd2FudCB0aGlzLgogCiBBIHNlY29uZCByZWFzb24gZm9yIHVzaW5nIGZyYW1ld29ya3MgaXMgdGhhdCB0aGV5IHB1dCBQeXRob24tcmVsYXRlZCBpdGVtcyBpbgotb25seSB0d28gcGxhY2VzOiAiL0xpYnJhcnkvRnJhbWV3b3JrL1B5dGhvbi5mcmFtZXdvcmsiIGFuZCAKK29ubHkgdHdvIHBsYWNlczogIi9MaWJyYXJ5L0ZyYW1ld29yay9QeXRob24uZnJhbWV3b3JrIiBhbmQKICIvQXBwbGljYXRpb25zL1B5dGhvbiA8VkVSU0lPTj4iIHdoZXJlIGBgPFZFUlNJT04+YGAgY2FuIGJlIGUuZy4gIjMuNCIsCiAiMi43IiwgZXRjLiAgVGhpcyBzaW1wbGlmaWVzIG1hdHRlcnMgZm9yIHVzZXJzIGluc3RhbGxpbmcKIFB5dGhvbiBmcm9tIGEgYmluYXJ5IGRpc3RyaWJ1dGlvbiBpZiB0aGV5IHdhbnQgdG8gZ2V0IHJpZCBvZiBpdCBhZ2Fpbi4gTW9yZW92ZXIsCkBAIC0yMjgsMTEgKzIyOCwxMSBAQAogIDEuIC4vY29uZmlndXJlIC0tZW5hYmxlLWZyYW1ld29yawogCiAgMi4gbWFrZQotIAorCiAgMy4gbWFrZSBpbnN0YWxsCiAKIFRoaXMgc2VxdWVuY2Ugd2lsbCBwdXQgdGhlIGZyYW1ld29yayBpbiBgYC9MaWJyYXJ5L0ZyYW1ld29yay9QeXRob24uZnJhbWV3b3JrYGAsCi10aGUgYXBwbGljYXRpb25zIGluIGBgL0FwcGxpY2F0aW9ucy9QeXRob24gPFZFUlNJT04+YGAgYW5kIHRoZSB1bml4IHRvb2xzIGluIAordGhlIGFwcGxpY2F0aW9ucyBpbiBgYC9BcHBsaWNhdGlvbnMvUHl0aG9uIDxWRVJTSU9OPmBgIGFuZCB0aGUgdW5peCB0b29scyBpbgogYGAvdXNyL2xvY2FsL2JpbmBgLgogCiBJbnN0YWxsaW5nIGluIGFub3RoZXIgcGxhY2UsIGZvciBpbnN0YW5jZSBgYCRIT01FL0xpYnJhcnkvRnJhbWV3b3Jrc2BgIGlmIHlvdQpAQCAtMzAwLDcgKzMwMCw3IEBACiB1c2UgeW91ciBub3JtYWwgYnVpbGQgZGlyZWN0b3J5IG5vciBkb2VzIGl0IGluc3RhbGwgaW50byAvLgogCiBCZWNhdXNlIG9mIHRoZSB3YXkgdGhlIHNjcmlwdCBsb2NhdGVzIHRoZSBmaWxlcyBpdCBuZWVkcyB5b3UgaGF2ZSB0byBydW4gaXQKLWZyb20gd2l0aGluIHRoZSBCdWlsZFNjcmlwdCBkaXJlY3RvcnkuIFRoZSBzY3JpcHQgYWNjZXB0cyBhIG51bWJlciBvZiAKK2Zyb20gd2l0aGluIHRoZSBCdWlsZFNjcmlwdCBkaXJlY3RvcnkuIFRoZSBzY3JpcHQgYWNjZXB0cyBhIG51bWJlciBvZgogY29tbWFuZC1saW5lIGFyZ3VtZW50cywgcnVuIGl0IHdpdGggLS1oZWxwIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCiBDb25maWd1cmUgd2FybmluZ3MKZGlmZiAtLWdpdCBhL01hYy9Ub29scy9idW5kbGVidWlsZGVyLnB5IGIvTWFjL1Rvb2xzL2J1bmRsZWJ1aWxkZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGY1Njc5ZDMuLjAwMDAwMDAKLS0tIGEvTWFjL1Rvb2xzL2J1bmRsZWJ1aWxkZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5MzQgKzAsMCBAQAotIyEgL3Vzci9iaW4vZW52IHB5dGhvbgotCi0iIiJcCi1idW5kbGVidWlsZGVyLnB5IC0tIFRvb2xzIHRvIGFzc2VtYmxlIE1hY09TIFggKGFwcGxpY2F0aW9uKSBidW5kbGVzLgotCi1UaGlzIG1vZHVsZSBjb250YWlucyB0d28gY2xhc3NlcyB0byBidWlsZCBzbyBjYWxsZWQgImJ1bmRsZXMiIGZvcgotTWFjT1MgWC4gQnVuZGxlQnVpbGRlciBpcyBhIGdlbmVyYWwgdG9vbCwgQXBwQnVpbGRlciBpcyBhIHN1YmNsYXNzCi1zcGVjaWFsaXplZCBpbiBidWlsZGluZyBhcHBsaWNhdGlvbiBidW5kbGVzLgotCi1bQnVuZGxlfEFwcF1CdWlsZGVyIG9iamVjdHMgYXJlIGluc3RhbnRpYXRlZCB3aXRoIGEgYnVuY2ggb2Yga2V5d29yZAotYXJndW1lbnRzLCBhbmQgaGF2ZSBhIGJ1aWxkKCkgbWV0aG9kIHRoYXQgd2lsbCBkbyBhbGwgdGhlIHdvcmsuIFNlZQotdGhlIGNsYXNzIGRvYyBzdHJpbmdzIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMuCi0KLVRoZSBtb2R1bGUgY29udGFpbnMgYSBtYWluIHByb2dyYW0gdGhhdCBjYW4gYmUgdXNlZCBpbiB0d28gd2F5czoKLQotICAlIHB5dGhvbiBidW5kbGVidWlsZGVyLnB5IFtvcHRpb25zXSBidWlsZAotICAlIHB5dGhvbiBidWlsZGFwcC5weSBbb3B0aW9uc10gYnVpbGQKLQotV2hlcmUgImJ1aWxkYXBwLnB5IiBpcyBhIHVzZXItc3VwcGxpZWQgc2V0dXAucHktbGlrZSBzY3JpcHQgZm9sbG93aW5nCi10aGlzIG1vZGVsOgotCi0gIGZyb20gYnVuZGxlYnVpbGRlciBpbXBvcnQgYnVpbGRhcHAKLSAgYnVpbGRhcHAoPGxvdHMtb2Yta2V5d29yZC1hcmdzPikKLQotIiIiCi0KLQotX19hbGxfXyA9IFsiQnVuZGxlQnVpbGRlciIsICJCdW5kbGVCdWlsZGVyRXJyb3IiLCAiQXBwQnVpbGRlciIsICJidWlsZGFwcCJdCi0KLQotaW1wb3J0IHN5cwotaW1wb3J0IG9zLCBlcnJubywgc2h1dGlsCi1pbXBvcnQgaW1wLCBtYXJzaGFsCi1pbXBvcnQgcmUKLWZyb20gY29weSBpbXBvcnQgZGVlcGNvcHkKLWltcG9ydCBnZXRvcHQKLWZyb20gcGxpc3RsaWIgaW1wb3J0IFBsaXN0Ci1mcm9tIHR5cGVzIGltcG9ydCBGdW5jdGlvblR5cGUgYXMgZnVuY3Rpb24KLQotY2xhc3MgQnVuZGxlQnVpbGRlckVycm9yKEV4Y2VwdGlvbik6IHBhc3MKLQotCi1jbGFzcyBEZWZhdWx0czoKLQotICAgICIiIkNsYXNzIGF0dHJpYnV0ZXMgdGhhdCBkb24ndCBzdGFydCB3aXRoIGFuIHVuZGVyc2NvcmUgYW5kIGFyZQotICAgIG5vdCBmdW5jdGlvbnMgb3IgY2xhc3NtZXRob2RzIGFyZSAoZGVlcCljb3BpZWQgdG8gc2VsZi5fX2RpY3RfXy4KLSAgICBUaGlzIGFsbG93cyBmb3IgbXV0YWJsZSBkZWZhdWx0IHZhbHVlcy4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIGRlZmF1bHRzID0gc2VsZi5fZ2V0RGVmYXVsdHMoKQotICAgICAgICBkZWZhdWx0cy51cGRhdGUoa3dhcmdzKQotICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShkZWZhdWx0cykKLQotICAgIGRlZiBfZ2V0RGVmYXVsdHMoY2xzKToKLSAgICAgICAgZGVmYXVsdHMgPSB7fQotICAgICAgICBmb3IgYmFzZSBpbiBjbHMuX19iYXNlc19fOgotICAgICAgICAgICAgaWYgaGFzYXR0cihiYXNlLCAiX2dldERlZmF1bHRzIik6Ci0gICAgICAgICAgICAgICAgZGVmYXVsdHMudXBkYXRlKGJhc2UuX2dldERlZmF1bHRzKCkpCi0gICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBsaXN0KGNscy5fX2RpY3RfXy5pdGVtcygpKToKLSAgICAgICAgICAgIGlmIG5hbWVbMF0gIT0gIl8iIGFuZCBub3QgaXNpbnN0YW5jZSh2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uLCBjbGFzc21ldGhvZCkpOgotICAgICAgICAgICAgICAgIGRlZmF1bHRzW25hbWVdID0gZGVlcGNvcHkodmFsdWUpCi0gICAgICAgIHJldHVybiBkZWZhdWx0cwotICAgIF9nZXREZWZhdWx0cyA9IGNsYXNzbWV0aG9kKF9nZXREZWZhdWx0cykKLQotCi1jbGFzcyBCdW5kbGVCdWlsZGVyKERlZmF1bHRzKToKLQotICAgICIiIkJ1bmRsZUJ1aWxkZXIgaXMgYSBiYXJlYm9uZXMgY2xhc3MgZm9yIGFzc2VtYmxpbmcgYnVuZGxlcy4gSXQKLSAgICBrbm93cyBub3RoaW5nIGFib3V0IGV4ZWN1dGFibGVzIG9yIGljb25zLCBpdCBvbmx5IGNvcGllcyBmaWxlcwotICAgIGFuZCBjcmVhdGVzIHRoZSBQa2dJbmZvIGFuZCBJbmZvLnBsaXN0IGZpbGVzLgotICAgICIiIgotCi0gICAgIyAoTm90ZSB0aGF0IERlZmF1bHRzLl9faW5pdF9fIChkZWVwKWNvcGllcyB0aGVzZSB2YWx1ZXMgdG8KLSAgICAjIGluc3RhbmNlIHZhcmlhYmxlcy4gTXV0YWJsZSBkZWZhdWx0cyBhcmUgdGhlcmVmb3JlIHNhZmUuKQotCi0gICAgIyBOYW1lIG9mIHRoZSBidW5kbGUsIHdpdGggb3Igd2l0aG91dCBleHRlbnNpb24uCi0gICAgbmFtZSA9IE5vbmUKLQotICAgICMgVGhlIHByb3BlcnR5IGxpc3QgKCJwbGlzdCIpCi0gICAgcGxpc3QgPSBQbGlzdChDRkJ1bmRsZURldmVsb3BtZW50UmVnaW9uID0gIkVuZ2xpc2giLAotICAgICAgICAgICAgICAgICAgQ0ZCdW5kbGVJbmZvRGljdGlvbmFyeVZlcnNpb24gPSAiNi4wIikKLQotICAgICMgVGhlIHR5cGUgb2YgdGhlIGJ1bmRsZS4KLSAgICB0eXBlID0gIkJOREwiCi0gICAgIyBUaGUgY3JlYXRvciBjb2RlIG9mIHRoZSBidW5kbGUuCi0gICAgY3JlYXRvciA9IE5vbmUKLQotICAgICMgdGhlIENGQnVuZGxlSWRlbnRpZmllciAodGhpcyBpcyB1c2VkIGZvciB0aGUgcHJlZmVyZW5jZXMgZmlsZSBuYW1lKQotICAgIGJ1bmRsZV9pZCA9IE5vbmUKLQotICAgICMgTGlzdCBvZiBmaWxlcyB0aGF0IGhhdmUgdG8gYmUgY29waWVkIHRvIDxidW5kbGU+L0NvbnRlbnRzL1Jlc291cmNlcy4KLSAgICByZXNvdXJjZXMgPSBbXQotCi0gICAgIyBMaXN0IG9mIChzcmMsIGRlc3QpIHR1cGxlczsgZGVzdCBzaG91bGQgYmUgYSBwYXRoIHJlbGF0aXZlIHRvIHRoZSBidW5kbGUKLSAgICAjIChlZy4gIkNvbnRlbnRzL1Jlc291cmNlcy9NeVN0dWZmL1NvbWVGaWxlLmV4dCkuCi0gICAgZmlsZXMgPSBbXQotCi0gICAgIyBMaXN0IG9mIHNoYXJlZCBsaWJyYXJpZXMgKGR5bGlicywgRnJhbWV3b3JrcykgdG8gYnVuZGxlIHdpdGggdGhlIGFwcAotICAgICMgd2lsbCBiZSBwbGFjZWQgaW4gQ29udGVudHMvRnJhbWV3b3JrcwotICAgIGxpYnMgPSBbXQotCi0gICAgIyBEaXJlY3Rvcnkgd2hlcmUgdGhlIGJ1bmRsZSB3aWxsIGJlIGFzc2VtYmxlZC4KLSAgICBidWlsZGRpciA9ICJidWlsZCIKLQotICAgICMgTWFrZSBzeW1saW5rcyBpbnN0ZWFkIGNvcHlpbmcgZmlsZXMuIFRoaXMgaXMgaGFuZHkgZHVyaW5nIGRlYnVnZ2luZywgYnV0Ci0gICAgIyBtYWtlcyB0aGUgYnVuZGxlIG5vbi1kaXN0cmlidXRhYmxlLgotICAgIHN5bWxpbmsgPSAwCi0KLSAgICAjIFZlcmJvc2l0eSBsZXZlbC4KLSAgICB2ZXJib3NpdHkgPSAxCi0KLSAgICAjIERlc3RpbmF0aW9uIHJvb3QgZGlyZWN0b3J5Ci0gICAgZGVzdHJvb3QgPSAiIgotCi0gICAgZGVmIHNldHVwKHNlbGYpOgotICAgICAgICAjIFhYWCByZXRoaW5rIHNlbGYubmFtZSBtdW5naW5nLCB0aGlzIGlzIGJyaXR0bGUuCi0gICAgICAgIHNlbGYubmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChzZWxmLm5hbWUpCi0gICAgICAgIGlmIG5vdCBleHQ6Ci0gICAgICAgICAgICBleHQgPSAiLmJ1bmRsZSIKLSAgICAgICAgYnVuZGxlZXh0ZW5zaW9uID0gZXh0Ci0gICAgICAgICMgbWlzYyAoZGVyaXZlZCkgYXR0cmlidXRlcwotICAgICAgICBzZWxmLmJ1bmRsZXBhdGggPSBwYXRoam9pbihzZWxmLmJ1aWxkZGlyLCBzZWxmLm5hbWUgKyBidW5kbGVleHRlbnNpb24pCi0KLSAgICAgICAgcGxpc3QgPSBzZWxmLnBsaXN0Ci0gICAgICAgIHBsaXN0LkNGQnVuZGxlTmFtZSA9IHNlbGYubmFtZQotICAgICAgICBwbGlzdC5DRkJ1bmRsZVBhY2thZ2VUeXBlID0gc2VsZi50eXBlCi0gICAgICAgIGlmIHNlbGYuY3JlYXRvciBpcyBOb25lOgotICAgICAgICAgICAgaWYgaGFzYXR0cihwbGlzdCwgIkNGQnVuZGxlU2lnbmF0dXJlIik6Ci0gICAgICAgICAgICAgICAgc2VsZi5jcmVhdG9yID0gcGxpc3QuQ0ZCdW5kbGVTaWduYXR1cmUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5jcmVhdG9yID0gIj8/Pz8iCi0gICAgICAgIHBsaXN0LkNGQnVuZGxlU2lnbmF0dXJlID0gc2VsZi5jcmVhdG9yCi0gICAgICAgIGlmIHNlbGYuYnVuZGxlX2lkOgotICAgICAgICAgICAgcGxpc3QuQ0ZCdW5kbGVJZGVudGlmaWVyID0gc2VsZi5idW5kbGVfaWQKLSAgICAgICAgZWxpZiBub3QgaGFzYXR0cihwbGlzdCwgIkNGQnVuZGxlSWRlbnRpZmllciIpOgotICAgICAgICAgICAgcGxpc3QuQ0ZCdW5kbGVJZGVudGlmaWVyID0gc2VsZi5uYW1lCi0KLSAgICBkZWYgYnVpbGQoc2VsZik6Ci0gICAgICAgICIiIkJ1aWxkIHRoZSBidW5kbGUuIiIiCi0gICAgICAgIGJ1aWxkZGlyID0gc2VsZi5idWlsZGRpcgotICAgICAgICBpZiBidWlsZGRpciBhbmQgbm90IG9zLnBhdGguZXhpc3RzKGJ1aWxkZGlyKToKLSAgICAgICAgICAgIG9zLm1rZGlyKGJ1aWxkZGlyKQotICAgICAgICBzZWxmLm1lc3NhZ2UoIkJ1aWxkaW5nICVzIiAlIHJlcHIoc2VsZi5idW5kbGVwYXRoKSwgMSkKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5idW5kbGVwYXRoKToKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5idW5kbGVwYXRoKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLmJ1bmRsZXBhdGggKyAnficpOgotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmJ1bmRsZXBhdGggKyAnficpCi0gICAgICAgIGJwID0gc2VsZi5idW5kbGVwYXRoCi0KLSAgICAgICAgIyBDcmVhdGUgdGhlIGFwcCBidW5kbGUgaW4gYSB0ZW1wb3JhcnkgbG9jYXRpb24gYW5kIHRoZW4KLSAgICAgICAgIyByZW5hbWUgdGhlIGNvbXBsZXRlZCBidW5kbGUuIFRoaXMgd2F5IHRoZSBGaW5kZXIgd2lsbAotICAgICAgICAjIG5ldmVyIHNlZSBhbiBpbmNvbXBsZXRlIGJ1bmRsZSAod2hlcmUgaXQgbWlnaHQgcGljayB1cAotICAgICAgICAjIGFuZCBjYWNoZSB0aGUgd3JvbmcgbWV0YSBkYXRhKQotICAgICAgICBzZWxmLmJ1bmRsZXBhdGggPSBicCArICd+JwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy5ta2RpcihzZWxmLmJ1bmRsZXBhdGgpCi0gICAgICAgICAgICBzZWxmLnByZVByb2Nlc3MoKQotICAgICAgICAgICAgc2VsZi5fY29weUZpbGVzKCkKLSAgICAgICAgICAgIHNlbGYuX2FkZE1ldGFGaWxlcygpCi0gICAgICAgICAgICBzZWxmLnBvc3RQcm9jZXNzKCkKLSAgICAgICAgICAgIG9zLnJlbmFtZShzZWxmLmJ1bmRsZXBhdGgsIGJwKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5idW5kbGVwYXRoID0gYnAKLSAgICAgICAgc2VsZi5tZXNzYWdlKCJEb25lLiIsIDEpCi0KLSAgICBkZWYgcHJlUHJvY2VzcyhzZWxmKToKLSAgICAgICAgIiIiSG9vayBmb3Igc3ViY2xhc3Nlcy4iIiIKLSAgICAgICAgcGFzcwotICAgIGRlZiBwb3N0UHJvY2VzcyhzZWxmKToKLSAgICAgICAgIiIiSG9vayBmb3Igc3ViY2xhc3Nlcy4iIiIKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIF9hZGRNZXRhRmlsZXMoc2VsZik6Ci0gICAgICAgIGNvbnRlbnRzID0gcGF0aGpvaW4oc2VsZi5idW5kbGVwYXRoLCAiQ29udGVudHMiKQotICAgICAgICBtYWtlZGlycyhjb250ZW50cykKLSAgICAgICAgIwotICAgICAgICAjIFdyaXRlIENvbnRlbnRzL1BrZ0luZm8KLSAgICAgICAgYXNzZXJ0IGxlbihzZWxmLnR5cGUpID09IGxlbihzZWxmLmNyZWF0b3IpID09IDQsIFwKLSAgICAgICAgICAgICAgICAidHlwZSBhbmQgY3JlYXRvciBtdXN0IGJlIDQtYnl0ZSBzdHJpbmdzLiIKLSAgICAgICAgcGtnaW5mbyA9IHBhdGhqb2luKGNvbnRlbnRzLCAiUGtnSW5mbyIpCi0gICAgICAgIGYgPSBvcGVuKHBrZ2luZm8sICJ3YiIpCi0gICAgICAgIGYud3JpdGUoKHNlbGYudHlwZSArIHNlbGYuY3JlYXRvcikuZW5jb2RlKCdsYXRpbjEnKSkKLSAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICMKLSAgICAgICAgIyBXcml0ZSBDb250ZW50cy9JbmZvLnBsaXN0Ci0gICAgICAgIGluZm9wbGlzdCA9IHBhdGhqb2luKGNvbnRlbnRzLCAiSW5mby5wbGlzdCIpCi0gICAgICAgIHNlbGYucGxpc3Qud3JpdGUoaW5mb3BsaXN0KQotCi0gICAgZGVmIF9jb3B5RmlsZXMoc2VsZik6Ci0gICAgICAgIGZpbGVzID0gc2VsZi5maWxlc1s6XQotICAgICAgICBmb3IgcGF0aCBpbiBzZWxmLnJlc291cmNlczoKLSAgICAgICAgICAgIGZpbGVzLmFwcGVuZCgocGF0aCwgcGF0aGpvaW4oIkNvbnRlbnRzIiwgIlJlc291cmNlcyIsCi0gICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShwYXRoKSkpKQotICAgICAgICBmb3IgcGF0aCBpbiBzZWxmLmxpYnM6Ci0gICAgICAgICAgICBmaWxlcy5hcHBlbmQoKHBhdGgsIHBhdGhqb2luKCJDb250ZW50cyIsICJGcmFtZXdvcmtzIiwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpKSkpCi0gICAgICAgIGlmIHNlbGYuc3ltbGluazoKLSAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiTWFraW5nIHN5bWJvbGljIGxpbmtzIiwgMSkKLSAgICAgICAgICAgIG1zZyA9ICJNYWtpbmcgc3ltbGluayBmcm9tIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCJDb3B5aW5nIGZpbGVzIiwgMSkKLSAgICAgICAgICAgIG1zZyA9ICJDb3B5aW5nIgotICAgICAgICBmaWxlcy5zb3J0KCkKLSAgICAgICAgZm9yIHNyYywgZHN0IGluIGZpbGVzOgotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzcmMpOgotICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiJXMgJXMvIHRvICVzLyIgJSAobXNnLCBzcmMsIGRzdCksIDIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiJXMgJXMgdG8gJXMiICUgKG1zZywgc3JjLCBkc3QpLCAyKQotICAgICAgICAgICAgZHN0ID0gcGF0aGpvaW4oc2VsZi5idW5kbGVwYXRoLCBkc3QpCi0gICAgICAgICAgICBpZiBzZWxmLnN5bWxpbms6Ci0gICAgICAgICAgICAgICAgc3ltbGluayhzcmMsIGRzdCwgbWtkaXJzPTEpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNvcHkoc3JjLCBkc3QsIG1rZGlycz0xKQotCi0gICAgZGVmIG1lc3NhZ2Uoc2VsZiwgbXNnLCBsZXZlbD0wKToKLSAgICAgICAgaWYgbGV2ZWwgPD0gc2VsZi52ZXJib3NpdHk6Ci0gICAgICAgICAgICBpbmRlbnQgPSAiIgotICAgICAgICAgICAgaWYgbGV2ZWwgPiAxOgotICAgICAgICAgICAgICAgIGluZGVudCA9IChsZXZlbCAtIDEpICogIiAgIgotICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShpbmRlbnQgKyBtc2cgKyAiXG4iKQotCi0gICAgZGVmIHJlcG9ydChzZWxmKToKLSAgICAgICAgIyBYWFggc29tZXRoaW5nIGRlY2VudAotICAgICAgICBwYXNzCi0KLQotaWYgX19kZWJ1Z19fOgotICAgIFBZQ19FWFQgPSAiLnB5YyIKLWVsc2U6Ci0gICAgUFlDX0VYVCA9ICIucHlvIgotCi1NQUdJQyA9IGltcC5nZXRfbWFnaWMoKQotVVNFX1pJUElNUE9SVCA9ICJ6aXBpbXBvcnQiIGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lcwotCi0jIEZvciBzdGFuZGFsb25lIGFwcHMsIHdlIGhhdmUgb3VyIG93biBtaW5pbWFsIHNpdGUucHkuIFdlIGRvbid0IG5lZWQKLSMgYWxsIHRoZSBjcnVmdCBvZiB0aGUgcmVhbCBzaXRlLnB5LgotU0lURV9QWSA9ICIiIlwKLWltcG9ydCBzeXMKLWlmIG5vdCAlKHNlbWlfc3RhbmRhbG9uZSlzOgotICAgIGRlbCBzeXMucGF0aFsxOl0gICMgc3lzLnBhdGhbMF0gaXMgQ29udGVudHMvUmVzb3VyY2VzLwotIiIiCi0KLWlmIFVTRV9aSVBJTVBPUlQ6Ci0gICAgWklQX0FSQ0hJVkUgPSAiTW9kdWxlcy56aXAiCi0gICAgU0lURV9QWSArPSAic3lzLnBhdGguYXBwZW5kKHN5cy5wYXRoWzBdICsgJy8lcycpXG4iICUgWklQX0FSQ0hJVkUKLSAgICBkZWYgZ2V0UHljRGF0YShmdWxsbmFtZSwgY29kZSwgaXNwa2cpOgotICAgICAgICBpZiBpc3BrZzoKLSAgICAgICAgICAgIGZ1bGxuYW1lICs9ICIuX19pbml0X18iCi0gICAgICAgIHBhdGggPSBmdWxsbmFtZS5yZXBsYWNlKCIuIiwgb3Muc2VwKSArIFBZQ19FWFQKLSAgICAgICAgcmV0dXJuIHBhdGgsIE1BR0lDICsgJ1wwXDBcMFwwJyArIG1hcnNoYWwuZHVtcHMoY29kZSkKLQotIwotIyBFeHRlbnNpb24gbW9kdWxlcyBjYW4ndCBiZSBpbiB0aGUgbW9kdWxlcyB6aXAgYXJjaGl2ZSwgc28gYSBwbGFjZWhvbGRlcgotIyBpcyBhZGRlZCBpbnN0ZWFkLCB0aGF0IGxvYWRzIHRoZSBleHRlbnNpb24gZnJvbSBhIHNwZWNpZmllZCBsb2NhdGlvbi4KLSMKLUVYVF9MT0FERVIgPSAiIiJcCi1kZWYgX19sb2FkKCk6Ci0gICAgaW1wb3J0IGltcCwgc3lzLCBvcwotICAgIGZvciBwIGluIHN5cy5wYXRoOgotICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHAsICIlKGZpbGVuYW1lKXMiKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgZWxzZToKLSAgICAgICAgYXNzZXJ0IDAsICJmaWxlIG5vdCBmb3VuZDogJShmaWxlbmFtZSlzIgotICAgIG1vZCA9IGltcC5sb2FkX2R5bmFtaWMoIiUobmFtZSlzIiwgcGF0aCkKLQotX19sb2FkKCkKLWRlbCBfX2xvYWQKLSIiIgotCi1NQVlNSVNTX01PRFVMRVMgPSBbJ21hYycsICdudCcsICdudHBhdGgnLCAnZG9zJywgJ2Rvc3BhdGgnLAotICAgICd3aW4zMmFwaScsICdjZScsICdfd2lucmVnJywgJ250dXJsMnBhdGgnLCAnc2l0ZWN1c3RvbWl6ZScsCi0gICAgJ29yZy5weXRob24uY29yZScsICdyaXNjb3MnLCAncmlzY29zZW52aXJvbicsICdyaXNjb3NwYXRoJwotXQotCi1TVFJJUF9FWEVDID0gIi91c3IvYmluL3N0cmlwIgotCi0jCi0jIFdlJ3JlIHVzaW5nIGEgc3RvY2sgaW50ZXJwcmV0ZXIgdG8gcnVuIHRoZSBhcHAsIHlldCB3ZSBuZWVkCi0jIGEgd2F5IHRvIHBhc3MgdGhlIFB5dGhvbiBtYWluIHByb2dyYW0gdG8gdGhlIGludGVycHJldGVyLiBUaGUKLSMgYm9vdHN0cmFwcGluZyBzY3JpcHQgZmlyZXMgdXAgdGhlIGludGVycHJldGVyIHdpdGggdGhlIHJpZ2h0Ci0jIGFyZ3VtZW50cy4gb3MuZXhlY3ZlKCkgaXMgdXNlZCBhcyBPU1ggZG9lc24ndCBsaWtlIHVzIHRvCi0jIHN0YXJ0IGEgcmVhbCBuZXcgcHJvY2Vzcy4gQWxzbywgdGhlIGV4ZWN1dGFibGUgbmFtZSBtdXN0IG1hdGNoCi0jIHRoZSBDRkJ1bmRsZUV4ZWN1dGFibGUgdmFsdWUgaW4gdGhlIEluZm8ucGxpc3QsIHNvIHdlIGxpZQotIyBkZWxpYmVyYXRlbHkgd2l0aCBhcmd2WzBdLiBUaGUgYWN0dWFsIFB5dGhvbiBleGVjdXRhYmxlIGlzCi0jIHBhc3NlZCBpbiBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBzbyB3ZSBjYW4gInJlcGFpciIKLSMgc3lzLmV4ZWN1dGFibGUgbGF0ZXIuCi0jCi1CT09UU1RSQVBfU0NSSVBUID0gIiIiXAotIyElKGhhc2hiYW5nKXMKLQotaW1wb3J0IHN5cywgb3MKLWV4ZWNkaXIgPSBvcy5wYXRoLmRpcm5hbWUoc3lzLmFyZ3ZbMF0pCi1leGVjdXRhYmxlID0gb3MucGF0aC5qb2luKGV4ZWNkaXIsICIlKGV4ZWN1dGFibGUpcyIpCi1yZXNkaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGV4ZWNkaXIpLCAiUmVzb3VyY2VzIikKLWxpYmRpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoZXhlY2RpciksICJGcmFtZXdvcmtzIikKLW1haW5wcm9ncmFtID0gb3MucGF0aC5qb2luKHJlc2RpciwgIiUobWFpbnByb2dyYW0pcyIpCi0KLXN5cy5hcmd2Lmluc2VydCgxLCBtYWlucHJvZ3JhbSkKLWlmICUoc3RhbmRhbG9uZSlzIG9yICUoc2VtaV9zdGFuZGFsb25lKXM6Ci0gICAgb3MuZW52aXJvblsiUFlUSE9OUEFUSCJdID0gcmVzZGlyCi0gICAgaWYgJShzdGFuZGFsb25lKXM6Ci0gICAgICAgIG9zLmVudmlyb25bIlBZVEhPTkhPTUUiXSA9IHJlc2RpcgotZWxzZToKLSAgICBweXBhdGggPSBvcy5nZXRlbnYoIlBZVEhPTlBBVEgiLCAiIikKLSAgICBpZiBweXBhdGg6Ci0gICAgICAgIHB5cGF0aCA9ICI6IiArIHB5cGF0aAotICAgIG9zLmVudmlyb25bIlBZVEhPTlBBVEgiXSA9IHJlc2RpciArIHB5cGF0aAotb3MuZW52aXJvblsiUFlUSE9ORVhFQ1VUQUJMRSJdID0gZXhlY3V0YWJsZQotb3MuZW52aXJvblsiRFlMRF9MSUJSQVJZX1BBVEgiXSA9IGxpYmRpcgotb3MuZW52aXJvblsiRFlMRF9GUkFNRVdPUktfUEFUSCJdID0gbGliZGlyCi1vcy5leGVjdmUoZXhlY3V0YWJsZSwgc3lzLmFyZ3YsIG9zLmVudmlyb24pCi0iIiIKLQotCi0jCi0jIE9wdGlvbmFsIHdyYXBwZXIgdGhhdCBjb252ZXJ0cyAiZHJvcHBlZCBmaWxlcyIgaW50byBzeXMuYXJndiB2YWx1ZXMuCi0jCi1BUkdWX0VNVUxBVE9SID0gIiIiXAotaW1wb3J0IGFyZ3ZlbXVsYXRvciwgb3MKLQotYXJndmVtdWxhdG9yLkFyZ3ZDb2xsZWN0b3IoKS5tYWlubG9vcCgpCi1leGVjZmlsZShvcy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0sICIlKHJlYWxtYWlucHJvZ3JhbSlzIikpCi0iIiIKLQotIwotIyBXaGVuIGJ1aWxkaW5nIGEgc3RhbmRhbG9uZSBhcHAgd2l0aCBQeXRob24uZnJhbWV3b3JrLCB3ZSBuZWVkIHRvIGNvcHkKLSMgYSBzdWJzZXQgZnJvbSBQeXRob24uZnJhbWV3b3JrIHRvIHRoZSBidW5kbGUuIFRoZSBmb2xsb3dpbmcgbGlzdAotIyBzcGVjaWZpZXMgZXhhY3RseSB3aGF0IGl0ZW1zIHdlJ2xsIGNvcHkuCi0jCi1QWVRIT05GUkFNRVdPUktHT09ESUVTID0gWwotICAgICJQeXRob24iLCAgIyB0aGUgUHl0aG9uIGNvcmUgbGlicmFyeQotICAgICJSZXNvdXJjZXMvRW5nbGlzaC5scHJvaiIsCi0gICAgIlJlc291cmNlcy9JbmZvLnBsaXN0IiwKLSAgICAiUmVzb3VyY2VzL3ZlcnNpb24ucGxpc3QiLAotXQotCi1kZWYgaXNGcmFtZXdvcmsoKToKLSAgICByZXR1cm4gc3lzLmV4ZWNfcHJlZml4LmZpbmQoIlB5dGhvbi5mcmFtZXdvcmsiKSA+IDAKLQotCi1MSUIgPSBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgImxpYiIsICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKQotU0lURV9QQUNLQUdFUyA9IG9zLnBhdGguam9pbihMSUIsICJzaXRlLXBhY2thZ2VzIikKLQotCi1jbGFzcyBBcHBCdWlsZGVyKEJ1bmRsZUJ1aWxkZXIpOgotCi0gICAgIyBPdmVycmlkZSB0eXBlIG9mIHRoZSBidW5kbGUuCi0gICAgdHlwZSA9ICJBUFBMIgotCi0gICAgIyBwbGF0Zm9ybSwgbmFtZSBvZiB0aGUgc3ViZm9sZGVyIG9mIENvbnRlbnRzIHRoYXQgY29udGFpbnMgdGhlIGV4ZWN1dGFibGUuCi0gICAgcGxhdGZvcm0gPSAiTWFjT1MiCi0KLSAgICAjIEEgUHl0aG9uIG1haW4gcHJvZ3JhbS4gSWYgdGhpcyBhcmd1bWVudCBpcyBnaXZlbiwgdGhlIG1haW4KLSAgICAjIGV4ZWN1dGFibGUgaW4gdGhlIGJ1bmRsZSB3aWxsIGJlIGEgc21hbGwgd3JhcHBlciB0aGF0IGludm9rZXMKLSAgICAjIHRoZSBtYWluIHByb2dyYW0uIChYWFggRGlzY3VzcyB3aHkuKQotICAgIG1haW5wcm9ncmFtID0gTm9uZQotCi0gICAgIyBUaGUgbWFpbiBleGVjdXRhYmxlLiBJZiBhIFB5dGhvbiBtYWluIHByb2dyYW0gaXMgc3BlY2lmaWVkCi0gICAgIyB0aGUgZXhlY3V0YWJsZSB3aWxsIGJlIGNvcGllZCB0byBSZXNvdXJjZXMgYW5kIGJlIGludm9rZWQKLSAgICAjIGJ5IHRoZSB3cmFwcGVyIHByb2dyYW0gbWVudGlvbmVkIGFib3ZlLiBPdGhlcndpc2UgaXQgd2lsbAotICAgICMgc2ltcGx5IGJlIHVzZWQgYXMgdGhlIG1haW4gZXhlY3V0YWJsZS4KLSAgICBleGVjdXRhYmxlID0gTm9uZQotCi0gICAgIyBUaGUgbmFtZSBvZiB0aGUgbWFpbiBuaWIsIGZvciBDb2NvYSBhcHBzLiAqTXVzdCogYmUgc3BlY2lmaWVkCi0gICAgIyB3aGVuIGJ1aWxkaW5nIGEgQ29jb2EgYXBwLgotICAgIG5pYm5hbWUgPSBOb25lCi0KLSAgICAjIFRoZSBuYW1lIG9mIHRoZSBpY29uIGZpbGUgdG8gYmUgY29waWVkIHRvIFJlc291cmNlcyBhbmQgdXNlZCBmb3IKLSAgICAjIHRoZSBGaW5kZXIgaWNvbi4KLSAgICBpY29uZmlsZSA9IE5vbmUKLQotICAgICMgU3ltbGluayB0aGUgZXhlY3V0YWJsZSBpbnN0ZWFkIG9mIGNvcHlpbmcgaXQuCi0gICAgc3ltbGlua19leGVjID0gMAotCi0gICAgIyBJZiBUcnVlLCBidWlsZCBzdGFuZGFsb25lIGFwcC4KLSAgICBzdGFuZGFsb25lID0gMAotCi0gICAgIyBJZiBUcnVlLCBidWlsZCBzZW1pLXN0YW5kYWxvbmUgYXBwIChvbmx5IGluY2x1ZGVzIHRoaXJkLXBhcnR5IG1vZHVsZXMpLgotICAgIHNlbWlfc3RhbmRhbG9uZSA9IDAKLQotICAgICMgSWYgc2V0LCB1c2UgdGhpcyBmb3IgIyEgbGluZXMgaW4gc3RlYWQgb2Ygc3lzLmV4ZWN1dGFibGUKLSAgICBweXRob24gPSBOb25lCi0KLSAgICAjIElmIFRydWUsIGFkZCBhIHJlYWwgbWFpbiBwcm9ncmFtIHRoYXQgZW11bGF0ZXMgc3lzLmFyZ3YgYmVmb3JlIGNhbGxpbmcKLSAgICAjIG1haW5wcm9ncmFtCi0gICAgYXJndl9lbXVsYXRpb24gPSAwCi0KLSAgICAjIFRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBhcmUgb25seSB1c2VkIHdoZW4gYnVpbGRpbmcgYSBzdGFuZGFsb25lIGFwcC4KLQotICAgICMgRXhjbHVkZSB0aGVzZSBtb2R1bGVzLgotICAgIGV4Y2x1ZGVNb2R1bGVzID0gW10KLQotICAgICMgSW5jbHVkZSB0aGVzZSBtb2R1bGVzLgotICAgIGluY2x1ZGVNb2R1bGVzID0gW10KLQotICAgICMgSW5jbHVkZSB0aGVzZSBwYWNrYWdlcy4KLSAgICBpbmNsdWRlUGFja2FnZXMgPSBbXQotCi0gICAgIyBTdHJpcCBiaW5hcmllcyBmcm9tIGRlYnVnIGluZm8uCi0gICAgc3RyaXAgPSAwCi0KLSAgICAjIEZvdW5kIFB5dGhvbiBtb2R1bGVzOiBbKG5hbWUsIGNvZGVvYmplY3QsIGlzcGtnKSwgLi4uXQotICAgIHB5bW9kdWxlcyA9IFtdCi0KLSAgICAjIE1vZHVsZXMgdGhhdCBtb2R1bGVmaW5kZXIgY291bGRuJ3QgZmluZDoKLSAgICBtaXNzaW5nTW9kdWxlcyA9IFtdCi0gICAgbWF5YmVNaXNzaW5nTW9kdWxlcyA9IFtdCi0KLSAgICBkZWYgc2V0dXAoc2VsZik6Ci0gICAgICAgIGlmICgoc2VsZi5zdGFuZGFsb25lIG9yIHNlbGYuc2VtaV9zdGFuZGFsb25lKQotICAgICAgICAgICAgYW5kIHNlbGYubWFpbnByb2dyYW0gaXMgTm9uZSk6Ci0gICAgICAgICAgICByYWlzZSBCdW5kbGVCdWlsZGVyRXJyb3IoIm11c3Qgc3BlY2lmeSAnbWFpbnByb2dyYW0nIHdoZW4gIgotICAgICAgICAgICAgICAgICAgICAiYnVpbGRpbmcgYSBzdGFuZGFsb25lIGFwcGxpY2F0aW9uLiIpCi0gICAgICAgIGlmIHNlbGYubWFpbnByb2dyYW0gaXMgTm9uZSBhbmQgc2VsZi5leGVjdXRhYmxlIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBCdW5kbGVCdWlsZGVyRXJyb3IoIm11c3Qgc3BlY2lmeSBlaXRoZXIgb3IgYm90aCBvZiAiCi0gICAgICAgICAgICAgICAgICAgICInZXhlY3V0YWJsZScgYW5kICdtYWlucHJvZ3JhbSciKQotCi0gICAgICAgIHNlbGYuZXhlY2RpciA9IHBhdGhqb2luKCJDb250ZW50cyIsIHNlbGYucGxhdGZvcm0pCi0KLSAgICAgICAgaWYgc2VsZi5uYW1lIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbGlmIHNlbGYubWFpbnByb2dyYW0gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLm5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoc2VsZi5tYWlucHJvZ3JhbSkpWzBdCi0gICAgICAgIGVsaWYgZXhlY3V0YWJsZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYubmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShzZWxmLmV4ZWN1dGFibGUpKVswXQotICAgICAgICBpZiBzZWxmLm5hbWVbLTQ6XSAhPSAiLmFwcCI6Ci0gICAgICAgICAgICBzZWxmLm5hbWUgKz0gIi5hcHAiCi0KLSAgICAgICAgaWYgc2VsZi5leGVjdXRhYmxlIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5zdGFuZGFsb25lIGFuZCBub3QgaXNGcmFtZXdvcmsoKToKLSAgICAgICAgICAgICAgICBzZWxmLnN5bWxpbmtfZXhlYyA9IDEKLSAgICAgICAgICAgIGlmIHNlbGYucHl0aG9uOgotICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSA9IHNlbGYucHl0aG9uCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSA9IHN5cy5leGVjdXRhYmxlCi0KLSAgICAgICAgaWYgc2VsZi5uaWJuYW1lOgotICAgICAgICAgICAgc2VsZi5wbGlzdC5OU01haW5OaWJGaWxlID0gc2VsZi5uaWJuYW1lCi0gICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLnBsaXN0LCAiTlNQcmluY2lwYWxDbGFzcyIpOgotICAgICAgICAgICAgICAgIHNlbGYucGxpc3QuTlNQcmluY2lwYWxDbGFzcyA9ICJOU0FwcGxpY2F0aW9uIgotCi0gICAgICAgIGlmIHNlbGYuc3RhbmRhbG9uZSBhbmQgaXNGcmFtZXdvcmsoKToKLSAgICAgICAgICAgIHNlbGYuYWRkUHl0aG9uRnJhbWV3b3JrKCkKLQotICAgICAgICBCdW5kbGVCdWlsZGVyLnNldHVwKHNlbGYpCi0KLSAgICAgICAgc2VsZi5wbGlzdC5DRkJ1bmRsZUV4ZWN1dGFibGUgPSBzZWxmLm5hbWUKLQotICAgICAgICBpZiBzZWxmLnN0YW5kYWxvbmUgb3Igc2VsZi5zZW1pX3N0YW5kYWxvbmU6Ci0gICAgICAgICAgICBzZWxmLmZpbmREZXBlbmRlbmNpZXMoKQotCi0gICAgZGVmIHByZVByb2Nlc3Moc2VsZik6Ci0gICAgICAgIHJlc2RpciA9ICJDb250ZW50cy9SZXNvdXJjZXMiCi0gICAgICAgIGlmIHNlbGYuZXhlY3V0YWJsZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGlmIHNlbGYubWFpbnByb2dyYW0gaXMgTm9uZToKLSAgICAgICAgICAgICAgICBleGVjbmFtZSA9IHNlbGYubmFtZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBleGVjbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc2VsZi5leGVjdXRhYmxlKQotICAgICAgICAgICAgZXhlY3BhdGggPSBwYXRoam9pbihzZWxmLmV4ZWNkaXIsIGV4ZWNuYW1lKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuc3ltbGlua19leGVjOgotICAgICAgICAgICAgICAgIHNlbGYuZmlsZXMuYXBwZW5kKChzZWxmLmRlc3Ryb290ICsgc2VsZi5leGVjdXRhYmxlLCBleGVjcGF0aCkpCi0gICAgICAgICAgICBzZWxmLmV4ZWNwYXRoID0gZXhlY3BhdGgKLQotICAgICAgICBpZiBzZWxmLm1haW5wcm9ncmFtIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgbWFpbnByb2dyYW0gPSBvcy5wYXRoLmJhc2VuYW1lKHNlbGYubWFpbnByb2dyYW0pCi0gICAgICAgICAgICBzZWxmLmZpbGVzLmFwcGVuZCgoc2VsZi5tYWlucHJvZ3JhbSwgcGF0aGpvaW4ocmVzZGlyLCBtYWlucHJvZ3JhbSkpKQotICAgICAgICAgICAgaWYgc2VsZi5hcmd2X2VtdWxhdGlvbjoKLSAgICAgICAgICAgICAgICAjIENoYW5nZSB0aGUgbWFpbiBwcm9ncmFtLCBhbmQgY3JlYXRlIHRoZSBoZWxwZXIgbWFpbiBwcm9ncmFtICh3aGljaAotICAgICAgICAgICAgICAgICMgZG9lcyBhcmd2IGNvbGxlY3Rpb24gYW5kIHRoZW4gY2FsbHMgdGhlIHJlYWwgbWFpbikuCi0gICAgICAgICAgICAgICAgIyBBbHNvIHVwZGF0ZSB0aGUgaW5jbHVkZWQgbW9kdWxlcyAoaWYgd2UncmUgY3JlYXRpbmcgYSBzdGFuZGFsb25lCi0gICAgICAgICAgICAgICAgIyBwcm9ncmFtKSBhbmQgdGhlIHBsaXN0Ci0gICAgICAgICAgICAgICAgcmVhbG1haW5wcm9ncmFtID0gbWFpbnByb2dyYW0KLSAgICAgICAgICAgICAgICBtYWlucHJvZ3JhbSA9ICdfX2FyZ3ZlbXVsYXRvcl8nICsgbWFpbnByb2dyYW0KLSAgICAgICAgICAgICAgICByZXNkaXJwYXRoID0gcGF0aGpvaW4oc2VsZi5idW5kbGVwYXRoLCByZXNkaXIpCi0gICAgICAgICAgICAgICAgbWFpbnByb2dyYW1wYXRoID0gcGF0aGpvaW4ocmVzZGlycGF0aCwgbWFpbnByb2dyYW0pCi0gICAgICAgICAgICAgICAgbWFrZWRpcnMocmVzZGlycGF0aCkKLSAgICAgICAgICAgICAgICBvcGVuKG1haW5wcm9ncmFtcGF0aCwgInciKS53cml0ZShBUkdWX0VNVUxBVE9SICUgbG9jYWxzKCkpCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5zdGFuZGFsb25lIG9yIHNlbGYuc2VtaV9zdGFuZGFsb25lOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmluY2x1ZGVNb2R1bGVzLmFwcGVuZCgiYXJndmVtdWxhdG9yIikKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmNsdWRlTW9kdWxlcy5hcHBlbmQoIm9zIikKLSAgICAgICAgICAgICAgICBpZiAiQ0ZCdW5kbGVEb2N1bWVudFR5cGVzIiBub3QgaW4gc2VsZi5wbGlzdDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5wbGlzdFsiQ0ZCdW5kbGVEb2N1bWVudFR5cGVzIl0gPSBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7ICJDRkJ1bmRsZVR5cGVPU1R5cGVzIiA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKioqKiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXNrIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJDRkJ1bmRsZVR5cGVSb2xlIjogIlZpZXdlciJ9XQotICAgICAgICAgICAgIyBXcml0ZSBib290c3RyYXAgc2NyaXB0Ci0gICAgICAgICAgICBleGVjdXRhYmxlID0gb3MucGF0aC5iYXNlbmFtZShzZWxmLmV4ZWN1dGFibGUpCi0gICAgICAgICAgICBleGVjZGlyID0gcGF0aGpvaW4oc2VsZi5idW5kbGVwYXRoLCBzZWxmLmV4ZWNkaXIpCi0gICAgICAgICAgICBib290c3RyYXBwYXRoID0gcGF0aGpvaW4oZXhlY2Rpciwgc2VsZi5uYW1lKQotICAgICAgICAgICAgbWFrZWRpcnMoZXhlY2RpcikKLSAgICAgICAgICAgIGlmIHNlbGYuc3RhbmRhbG9uZSBvciBzZWxmLnNlbWlfc3RhbmRhbG9uZToKLSAgICAgICAgICAgICAgICAjIFhYWCB3ZSdyZSBzY3Jld2VkIHdoZW4gdGhlIGVuZCB1c2VyIGhhcyBkZWxldGVkCi0gICAgICAgICAgICAgICAgIyAvdXNyL2Jpbi9weXRob24KLSAgICAgICAgICAgICAgICBoYXNoYmFuZyA9ICIvdXNyL2Jpbi9weXRob24iCi0gICAgICAgICAgICBlbGlmIHNlbGYucHl0aG9uOgotICAgICAgICAgICAgICAgIGhhc2hiYW5nID0gc2VsZi5weXRob24KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaGFzaGJhbmcgPSBvcy5wYXRoLnJlYWxwYXRoKHN5cy5leGVjdXRhYmxlKQotICAgICAgICAgICAgc3RhbmRhbG9uZSA9IHNlbGYuc3RhbmRhbG9uZQotICAgICAgICAgICAgc2VtaV9zdGFuZGFsb25lID0gc2VsZi5zZW1pX3N0YW5kYWxvbmUKLSAgICAgICAgICAgIG9wZW4oYm9vdHN0cmFwcGF0aCwgInciKS53cml0ZShCT09UU1RSQVBfU0NSSVBUICUgbG9jYWxzKCkpCi0gICAgICAgICAgICBvcy5jaG1vZChib290c3RyYXBwYXRoLCAwbzc3NSkKLQotICAgICAgICBpZiBzZWxmLmljb25maWxlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaWNvbmJhc2UgPSBvcy5wYXRoLmJhc2VuYW1lKHNlbGYuaWNvbmZpbGUpCi0gICAgICAgICAgICBzZWxmLnBsaXN0LkNGQnVuZGxlSWNvbkZpbGUgPSBpY29uYmFzZQotICAgICAgICAgICAgc2VsZi5maWxlcy5hcHBlbmQoKHNlbGYuaWNvbmZpbGUsIHBhdGhqb2luKHJlc2RpciwgaWNvbmJhc2UpKSkKLQotICAgIGRlZiBwb3N0UHJvY2VzcyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5zdGFuZGFsb25lIG9yIHNlbGYuc2VtaV9zdGFuZGFsb25lOgotICAgICAgICAgICAgc2VsZi5hZGRQeXRob25Nb2R1bGVzKCkKLSAgICAgICAgaWYgc2VsZi5zdHJpcCBhbmQgbm90IHNlbGYuc3ltbGluazoKLSAgICAgICAgICAgIHNlbGYuc3RyaXBCaW5hcmllcygpCi0KLSAgICAgICAgaWYgc2VsZi5zeW1saW5rX2V4ZWMgYW5kIHNlbGYuZXhlY3V0YWJsZToKLSAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiU3ltbGlua2luZyBleGVjdXRhYmxlICVzIHRvICVzIiAlIChzZWxmLmV4ZWN1dGFibGUsCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZXhlY3BhdGgpLCAyKQotICAgICAgICAgICAgZHN0ID0gcGF0aGpvaW4oc2VsZi5idW5kbGVwYXRoLCBzZWxmLmV4ZWNwYXRoKQotICAgICAgICAgICAgbWFrZWRpcnMob3MucGF0aC5kaXJuYW1lKGRzdCkpCi0gICAgICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGguYWJzcGF0aChzZWxmLmV4ZWN1dGFibGUpLCBkc3QpCi0KLSAgICAgICAgaWYgc2VsZi5taXNzaW5nTW9kdWxlcyBvciBzZWxmLm1heWJlTWlzc2luZ01vZHVsZXM6Ci0gICAgICAgICAgICBzZWxmLnJlcG9ydE1pc3NpbmcoKQotCi0gICAgZGVmIGFkZFB5dGhvbkZyYW1ld29yayhzZWxmKToKLSAgICAgICAgIyBJZiB3ZSdyZSBidWlsZGluZyBhIHN0YW5kYWxvbmUgYXBwIHdpdGggUHl0aG9uLmZyYW1ld29yaywKLSAgICAgICAgIyBpbmNsdWRlIGEgbWluaW1hbCBzdWJzZXQgb2YgUHl0aG9uLmZyYW1ld29yaywgKnVubGVzcyoKLSAgICAgICAgIyBQeXRob24uZnJhbWV3b3JrIHdhcyBzcGVjaWZpZWQgbWFudWFsbHkgaW4gc2VsZi5saWJzLgotICAgICAgICBmb3IgbGliIGluIHNlbGYubGliczoKLSAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUobGliKSA9PSAiUHl0aG9uLmZyYW1ld29yayI6Ci0gICAgICAgICAgICAgICAgIyBhIFB5dGhvbi5mcmFtZXdvcmsgd2FzIHNwZWNpZmllZCBhcyBhIGxpYnJhcnkKLSAgICAgICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBmcmFtZXdvcmtwYXRoID0gc3lzLmV4ZWNfcHJlZml4WzpzeXMuZXhlY19wcmVmaXguZmluZCgKLSAgICAgICAgICAgICJQeXRob24uZnJhbWV3b3JrIikgKyBsZW4oIlB5dGhvbi5mcmFtZXdvcmsiKV0KLQotICAgICAgICB2ZXJzaW9uID0gc3lzLnZlcnNpb25bOjNdCi0gICAgICAgIGZyYW1ld29ya3BhdGggPSBwYXRoam9pbihmcmFtZXdvcmtwYXRoLCAiVmVyc2lvbnMiLCB2ZXJzaW9uKQotICAgICAgICBkZXN0YmFzZSA9IHBhdGhqb2luKCJDb250ZW50cyIsICJGcmFtZXdvcmtzIiwgIlB5dGhvbi5mcmFtZXdvcmsiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWZXJzaW9ucyIsIHZlcnNpb24pCi0gICAgICAgIGZvciBpdGVtIGluIFBZVEhPTkZSQU1FV09SS0dPT0RJRVM6Ci0gICAgICAgICAgICBzcmMgPSBwYXRoam9pbihmcmFtZXdvcmtwYXRoLCBpdGVtKQotICAgICAgICAgICAgZHN0ID0gcGF0aGpvaW4oZGVzdGJhc2UsIGl0ZW0pCi0gICAgICAgICAgICBzZWxmLmZpbGVzLmFwcGVuZCgoc3JjLCBkc3QpKQotCi0gICAgZGVmIF9nZXRTaXRlQ29kZShzZWxmKToKLSAgICAgICAgcmV0dXJuIGNvbXBpbGUoU0lURV9QWSAlIHsic2VtaV9zdGFuZGFsb25lIjogc2VsZi5zZW1pX3N0YW5kYWxvbmV9LAotICAgICAgICAgICAgICAgICAgICAgIjwtYnVuZGxlYnVpbGRlci5weS0+IiwgImV4ZWMiKQotCi0gICAgZGVmIGFkZFB5dGhvbk1vZHVsZXMoc2VsZik6Ci0gICAgICAgIHNlbGYubWVzc2FnZSgiQWRkaW5nIFB5dGhvbiBtb2R1bGVzIiwgMSkKLQotICAgICAgICBpZiBVU0VfWklQSU1QT1JUOgotICAgICAgICAgICAgIyBDcmVhdGUgYSB6aXAgZmlsZSBjb250YWluaW5nIGFsbCBtb2R1bGVzIGFzIHB5Yy4KLSAgICAgICAgICAgIGltcG9ydCB6aXBmaWxlCi0gICAgICAgICAgICByZWxwYXRoID0gcGF0aGpvaW4oIkNvbnRlbnRzIiwgIlJlc291cmNlcyIsIFpJUF9BUkNISVZFKQotICAgICAgICAgICAgYWJzcGF0aCA9IHBhdGhqb2luKHNlbGYuYnVuZGxlcGF0aCwgcmVscGF0aCkKLSAgICAgICAgICAgIHpmID0gemlwZmlsZS5aaXBGaWxlKGFic3BhdGgsICJ3IiwgemlwZmlsZS5aSVBfREVGTEFURUQpCi0gICAgICAgICAgICBmb3IgbmFtZSwgY29kZSwgaXNwa2cgaW4gc2VsZi5weW1vZHVsZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCJBZGRpbmcgUHl0aG9uIG1vZHVsZSAlcyIgJSBuYW1lLCAyKQotICAgICAgICAgICAgICAgIHBhdGgsIHB5YyA9IGdldFB5Y0RhdGEobmFtZSwgY29kZSwgaXNwa2cpCi0gICAgICAgICAgICAgICAgemYud3JpdGVzdHIocGF0aCwgcHljKQotICAgICAgICAgICAgemYuY2xvc2UoKQotICAgICAgICAgICAgIyBhZGQgc2l0ZS5weWMKLSAgICAgICAgICAgIHNpdGVwYXRoID0gcGF0aGpvaW4oc2VsZi5idW5kbGVwYXRoLCAiQ29udGVudHMiLCAiUmVzb3VyY2VzIiwKLSAgICAgICAgICAgICAgICAgICAgInNpdGUiICsgUFlDX0VYVCkKLSAgICAgICAgICAgIHdyaXRlUHljKHNlbGYuX2dldFNpdGVDb2RlKCksIHNpdGVwYXRoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBDcmVhdGUgaW5kaXZpZHVhbCAucHljIGZpbGVzLgotICAgICAgICAgICAgZm9yIG5hbWUsIGNvZGUsIGlzcGtnIGluIHNlbGYucHltb2R1bGVzOgotICAgICAgICAgICAgICAgIGlmIGlzcGtnOgotICAgICAgICAgICAgICAgICAgICBuYW1lICs9ICIuX19pbml0X18iCi0gICAgICAgICAgICAgICAgcGF0aCA9IG5hbWUuc3BsaXQoIi4iKQotICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoam9pbigiQ29udGVudHMiLCAiUmVzb3VyY2VzIiwgKnBhdGgpICsgUFlDX0VYVAotCi0gICAgICAgICAgICAgICAgaWYgaXNwa2c6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiQWRkaW5nIFB5dGhvbiBwYWNrYWdlICVzIiAlIHBhdGgsIDIpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCJBZGRpbmcgUHl0aG9uIG1vZHVsZSAlcyIgJSBwYXRoLCAyKQotCi0gICAgICAgICAgICAgICAgYWJzcGF0aCA9IHBhdGhqb2luKHNlbGYuYnVuZGxlcGF0aCwgcGF0aCkKLSAgICAgICAgICAgICAgICBtYWtlZGlycyhvcy5wYXRoLmRpcm5hbWUoYWJzcGF0aCkpCi0gICAgICAgICAgICAgICAgd3JpdGVQeWMoY29kZSwgYWJzcGF0aCkKLQotICAgIGRlZiBzdHJpcEJpbmFyaWVzKHNlbGYpOgotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoU1RSSVBfRVhFQyk6Ci0gICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIkVycm9yOiBjYW4ndCBzdHJpcCBiaW5hcmllczogbm8gc3RyaXAgcHJvZ3JhbSBhdCAiCi0gICAgICAgICAgICAgICAgIiVzIiAlIFNUUklQX0VYRUMsIDApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpbXBvcnQgc3RhdAotICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCJTdHJpcHBpbmcgYmluYXJpZXMiLCAxKQotICAgICAgICAgICAgZGVmIHdhbGsodG9wKToKLSAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKHRvcCk6Ci0gICAgICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoam9pbih0b3AsIG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKHBhdGgpOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHdhbGsocGF0aCkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZCA9IG9zLnN0YXQocGF0aClbc3RhdC5TVF9NT0RFXQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IChtb2QgJiAwbzEwMCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbHBhdGggPSBwYXRoW2xlbihzZWxmLmJ1bmRsZXBhdGgpOl0KLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiU3RyaXBwaW5nICVzIiAlIHJlbHBhdGgsIDIpCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmYsIG91dGYgPSBvcy5wb3BlbjQoIiVzIC1TIFwiJXNcIiIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTVFJJUF9FWEVDLCBwYXRoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IG91dGYucmVhZCgpLnN0cmlwKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG91dHB1dDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHVzdWFsbHkgbm90IGEgcmVhbCBwcm9ibGVtLCBsaWtlIHdoZW4gd2UncmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRyeWluZyB0byBzdHJpcCBhIHNjcmlwdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiUHJvYmxlbSBzdHJpcHBpbmcgJXM6IiAlIHJlbHBhdGgsIDMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKG91dHB1dCwgMykKLSAgICAgICAgICAgIHdhbGsoc2VsZi5idW5kbGVwYXRoKQotCi0gICAgZGVmIGZpbmREZXBlbmRlbmNpZXMoc2VsZik6Ci0gICAgICAgIHNlbGYubWVzc2FnZSgiRmluZGluZyBtb2R1bGUgZGVwZW5kZW5jaWVzIiwgMSkKLSAgICAgICAgaW1wb3J0IG1vZHVsZWZpbmRlcgotICAgICAgICBtZiA9IG1vZHVsZWZpbmRlci5Nb2R1bGVGaW5kZXIoZXhjbHVkZXM9c2VsZi5leGNsdWRlTW9kdWxlcykKLSAgICAgICAgaWYgVVNFX1pJUElNUE9SVDoKLSAgICAgICAgICAgICMgemlwaW1wb3J0IGltcG9ydHMgemxpYiwgbXVzdCBhZGQgaXQgbWFudWFsbHkKLSAgICAgICAgICAgIG1mLmltcG9ydF9ob29rKCJ6bGliIikKLSAgICAgICAgIyBtYW51YWxseSBhZGQgb3VyIG93biBzaXRlLnB5Ci0gICAgICAgIHNpdGUgPSBtZi5hZGRfbW9kdWxlKCJzaXRlIikKLSAgICAgICAgc2l0ZS5fX2NvZGVfXyA9IHNlbGYuX2dldFNpdGVDb2RlKCkKLSAgICAgICAgbWYuc2Nhbl9jb2RlKHNpdGUuX19jb2RlX18sIHNpdGUpCi0KLSAgICAgICAgIyB3YXJuaW5ncy5weSBnZXRzIGltcG9ydGVkIGltcGxpY2l0bHkgZnJvbSBDCi0gICAgICAgIG1mLmltcG9ydF9ob29rKCJ3YXJuaW5ncyIpCi0KLSAgICAgICAgaW5jbHVkZU1vZHVsZXMgPSBzZWxmLmluY2x1ZGVNb2R1bGVzWzpdCi0gICAgICAgIGZvciBuYW1lIGluIHNlbGYuaW5jbHVkZVBhY2thZ2VzOgotICAgICAgICAgICAgaW5jbHVkZU1vZHVsZXMuZXh0ZW5kKGxpc3QoZmluZFBhY2thZ2VDb250ZW50cyhuYW1lKS5rZXlzKCkpKQotICAgICAgICBmb3IgbmFtZSBpbiBpbmNsdWRlTW9kdWxlczoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtZi5pbXBvcnRfaG9vayhuYW1lKQotICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgIHNlbGYubWlzc2luZ01vZHVsZXMuYXBwZW5kKG5hbWUpCi0KLSAgICAgICAgbWYucnVuX3NjcmlwdChzZWxmLm1haW5wcm9ncmFtKQotICAgICAgICBtb2R1bGVzID0gbGlzdChtZi5tb2R1bGVzLml0ZW1zKCkpCi0gICAgICAgIG1vZHVsZXMuc29ydCgpCi0gICAgICAgIGZvciBuYW1lLCBtb2QgaW4gbW9kdWxlczoKLSAgICAgICAgICAgIHBhdGggPSBtb2QuX19maWxlX18KLSAgICAgICAgICAgIGlmIHBhdGggYW5kIHNlbGYuc2VtaV9zdGFuZGFsb25lOgotICAgICAgICAgICAgICAgICMgc2tpcCB0aGUgc3RhbmRhcmQgbGlicmFyeQotICAgICAgICAgICAgICAgIGlmIHBhdGguc3RhcnRzd2l0aChMSUIpIGFuZCBub3QgcGF0aC5zdGFydHN3aXRoKFNJVEVfUEFDS0FHRVMpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgcGF0aCBhbmQgbW9kLl9fY29kZV9fIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgIyBDIGV4dGVuc2lvbgotICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQotICAgICAgICAgICAgICAgIHBhdGhpdGVtcyA9IG5hbWUuc3BsaXQoIi4iKVs6LTFdICsgW2ZpbGVuYW1lXQotICAgICAgICAgICAgICAgIGRzdHBhdGggPSBwYXRoam9pbigqcGF0aGl0ZW1zKQotICAgICAgICAgICAgICAgIGlmIFVTRV9aSVBJTVBPUlQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5hbWUgIT0gInpsaWIiOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBuZWF0bHkgcGFjayBhbGwgZXh0ZW5zaW9uIG1vZHVsZXMgaW4gYSBzdWJkaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGV4Y2VwdCB6bGliLCBzaW5jZSBpdCdzIG5lY2Vzc2FyeSBmb3IgYm9vdHN0cmFwcGluZy4KLSAgICAgICAgICAgICAgICAgICAgICAgIGRzdHBhdGggPSBwYXRoam9pbigiRXh0ZW5zaW9uTW9kdWxlcyIsIGRzdHBhdGgpCi0gICAgICAgICAgICAgICAgICAgICMgUHl0aG9uIG1vZHVsZXMgYXJlIHN0b3JlZCBpbiBhIFppcCBhcmNoaXZlLCBidXQgcHV0Ci0gICAgICAgICAgICAgICAgICAgICMgZXh0ZW5zaW9ucyBpbiBDb250ZW50cy9SZXNvdXJjZXMvLiBBZGQgYSB0aW55ICJsb2FkZXIiCi0gICAgICAgICAgICAgICAgICAgICMgcHJvZ3JhbSBpbiB0aGUgWmlwIGFyY2hpdmUuIER1ZSB0byBUaG9tYXMgSGVsbGVyLgotICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBFWFRfTE9BREVSICUgeyJuYW1lIjogbmFtZSwgImZpbGVuYW1lIjogZHN0cGF0aH0KLSAgICAgICAgICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoc291cmNlLCAiPGR5bmxvYWRlciBmb3IgJXM+IiAlIG5hbWUsICJleGVjIikKLSAgICAgICAgICAgICAgICAgICAgbW9kLl9fY29kZV9fID0gY29kZQotICAgICAgICAgICAgICAgIHNlbGYuZmlsZXMuYXBwZW5kKChwYXRoLCBwYXRoam9pbigiQ29udGVudHMiLCAiUmVzb3VyY2VzIiwgZHN0cGF0aCkpKQotICAgICAgICAgICAgaWYgbW9kLl9fY29kZV9fIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGlzcGtnID0gbW9kLl9fcGF0aF9fIGlzIG5vdCBOb25lCi0gICAgICAgICAgICAgICAgaWYgbm90IFVTRV9aSVBJTVBPUlQgb3IgbmFtZSAhPSAic2l0ZSI6Ci0gICAgICAgICAgICAgICAgICAgICMgT3VyIHNpdGUucHkgaXMgZG9pbmcgdGhlIGJvb3RzdHJhcHBpbmcsIHNvIHdlIG11c3QKLSAgICAgICAgICAgICAgICAgICAgIyBpbmNsdWRlIGEgcmVhbCAucHljIGZpbGUgaWYgVVNFX1pJUElNUE9SVCBpcyBUcnVlLgotICAgICAgICAgICAgICAgICAgICBzZWxmLnB5bW9kdWxlcy5hcHBlbmQoKG5hbWUsIG1vZC5fX2NvZGVfXywgaXNwa2cpKQotCi0gICAgICAgIGlmIGhhc2F0dHIobWYsICJhbnlfbWlzc2luZ19tYXliZSIpOgotICAgICAgICAgICAgbWlzc2luZywgbWF5YmUgPSBtZi5hbnlfbWlzc2luZ19tYXliZSgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtaXNzaW5nID0gbWYuYW55X21pc3NpbmcoKQotICAgICAgICAgICAgbWF5YmUgPSBbXQotICAgICAgICBzZWxmLm1pc3NpbmdNb2R1bGVzLmV4dGVuZChtaXNzaW5nKQotICAgICAgICBzZWxmLm1heWJlTWlzc2luZ01vZHVsZXMuZXh0ZW5kKG1heWJlKQotCi0gICAgZGVmIHJlcG9ydE1pc3Npbmcoc2VsZik6Ci0gICAgICAgIG1pc3NpbmcgPSBbbmFtZSBmb3IgbmFtZSBpbiBzZWxmLm1pc3NpbmdNb2R1bGVzCi0gICAgICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gTUFZTUlTU19NT0RVTEVTXQotICAgICAgICBpZiBzZWxmLm1heWJlTWlzc2luZ01vZHVsZXM6Ci0gICAgICAgICAgICBtYXliZSA9IHNlbGYubWF5YmVNaXNzaW5nTW9kdWxlcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbWF5YmUgPSBbbmFtZSBmb3IgbmFtZSBpbiBtaXNzaW5nIGlmICIuIiBpbiBuYW1lXQotICAgICAgICAgICAgbWlzc2luZyA9IFtuYW1lIGZvciBuYW1lIGluIG1pc3NpbmcgaWYgIi4iIG5vdCBpbiBuYW1lXQotICAgICAgICBtaXNzaW5nLnNvcnQoKQotICAgICAgICBtYXliZS5zb3J0KCkKLSAgICAgICAgaWYgbWF5YmU6Ci0gICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIldhcm5pbmc6IGNvdWxkbid0IGZpbmQgdGhlIGZvbGxvd2luZyBzdWJtb2R1bGVzOiIsIDEpCi0gICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIiAgICAoTm90ZSB0aGF0IHRoZXNlIGNvdWxkIGJlIGZhbHNlIGFsYXJtcyAtLSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIml0J3Mgbm90IGFsd2F5cyIsIDEpCi0gICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIiAgICBwb3NzaWJsZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIFwiZnJvbSBwYWNrYWdlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IHN1Ym1vZHVsZVwiICIsIDEpCi0gICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIiAgICBhbmQgXCJmcm9tIHBhY2thZ2UgaW1wb3J0IG5hbWVcIikiLCAxKQotICAgICAgICAgICAgZm9yIG5hbWUgaW4gbWF5YmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCIgID8gIiArIG5hbWUsIDEpCi0gICAgICAgIGlmIG1pc3Npbmc6Ci0gICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIldhcm5pbmc6IGNvdWxkbid0IGZpbmQgdGhlIGZvbGxvd2luZyBtb2R1bGVzOiIsIDEpCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBtaXNzaW5nOgotICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiICA/ICIgKyBuYW1lLCAxKQotCi0gICAgZGVmIHJlcG9ydChzZWxmKToKLSAgICAgICAgIyBYWFggc29tZXRoaW5nIGRlY2VudAotICAgICAgICBpbXBvcnQgcHByaW50Ci0gICAgICAgIHBwcmludC5wcHJpbnQoc2VsZi5fX2RpY3RfXykKLSAgICAgICAgaWYgc2VsZi5zdGFuZGFsb25lIG9yIHNlbGYuc2VtaV9zdGFuZGFsb25lOgotICAgICAgICAgICAgc2VsZi5yZXBvcnRNaXNzaW5nKCkKLQotIwotIyBVdGlsaXRpZXMuCi0jCi0KLVNVRkZJWEVTID0gW19zdWYgZm9yIF9zdWYsIF9tb2RlLCBfdHAgaW4gaW1wLmdldF9zdWZmaXhlcygpXQotaWRlbnRpZmllclJFID0gcmUuY29tcGlsZShyIltfYS16QS16XVtfYS16QS1aMC05XSokIikKLQotZGVmIGZpbmRQYWNrYWdlQ29udGVudHMobmFtZSwgc2VhcmNocGF0aD1Ob25lKToKLSAgICBoZWFkID0gbmFtZS5zcGxpdCgiLiIpWy0xXQotICAgIGlmIGlkZW50aWZpZXJSRS5tYXRjaChoZWFkKSBpcyBOb25lOgotICAgICAgICByZXR1cm4ge30KLSAgICB0cnk6Ci0gICAgICAgIGZwLCBwYXRoLCAoZXh0LCBtb2RlLCB0cCkgPSBpbXAuZmluZF9tb2R1bGUoaGVhZCwgc2VhcmNocGF0aCkKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHJldHVybiB7fQotICAgIG1vZHVsZXMgPSB7bmFtZTogTm9uZX0KLSAgICBpZiB0cCA9PSBpbXAuUEtHX0RJUkVDVE9SWSBhbmQgcGF0aDoKLSAgICAgICAgZmlsZXMgPSBvcy5saXN0ZGlyKHBhdGgpCi0gICAgICAgIGZvciBzdWIgaW4gZmlsZXM6Ci0gICAgICAgICAgICBzdWIsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoc3ViKQotICAgICAgICAgICAgZnVsbG5hbWUgPSBuYW1lICsgIi4iICsgc3ViCi0gICAgICAgICAgICBpZiBzdWIgIT0gIl9faW5pdF9fIiBhbmQgZnVsbG5hbWUgbm90IGluIG1vZHVsZXM6Ci0gICAgICAgICAgICAgICAgbW9kdWxlcy51cGRhdGUoZmluZFBhY2thZ2VDb250ZW50cyhmdWxsbmFtZSwgW3BhdGhdKSkKLSAgICByZXR1cm4gbW9kdWxlcwotCi1kZWYgd3JpdGVQeWMoY29kZSwgcGF0aCk6Ci0gICAgZiA9IG9wZW4ocGF0aCwgIndiIikKLSAgICBmLndyaXRlKE1BR0lDKQotICAgIGYud3JpdGUoIlwwIiAqIDQpICAjIGRvbid0IGJvdGhlciBhYm91dCBhIHRpbWUgc3RhbXAKLSAgICBtYXJzaGFsLmR1bXAoY29kZSwgZikKLSAgICBmLmNsb3NlKCkKLQotZGVmIGNvcHkoc3JjLCBkc3QsIG1rZGlycz0wKToKLSAgICAiIiJDb3B5IGEgZmlsZSBvciBhIGRpcmVjdG9yeS4iIiIKLSAgICBpZiBta2RpcnM6Ci0gICAgICAgIG1ha2VkaXJzKG9zLnBhdGguZGlybmFtZShkc3QpKQotICAgIGlmIG9zLnBhdGguaXNkaXIoc3JjKToKLSAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNyYywgZHN0LCBzeW1saW5rcz0xKQotICAgIGVsc2U6Ci0gICAgICAgIHNodXRpbC5jb3B5MihzcmMsIGRzdCkKLQotZGVmIGNvcHl0b2RpcihzcmMsIGRzdGRpcik6Ci0gICAgIiIiQ29weSBhIGZpbGUgb3IgYSBkaXJlY3RvcnkgdG8gYW4gZXhpc3RpbmcgZGlyZWN0b3J5LiIiIgotICAgIGRzdCA9IHBhdGhqb2luKGRzdGRpciwgb3MucGF0aC5iYXNlbmFtZShzcmMpKQotICAgIGNvcHkoc3JjLCBkc3QpCi0KLWRlZiBtYWtlZGlycyhkaXIpOgotICAgICIiIk1ha2UgYWxsIGRpcmVjdG9yaWVzIGxlYWRpbmcgdXAgdG8gJ2RpcicgaW5jbHVkaW5nIHRoZSBsZWFmCi0gICAgZGlyZWN0b3J5LiBEb24ndCBtb2FuIGlmIGFueSBwYXRoIGVsZW1lbnQgYWxyZWFkeSBleGlzdHMuIiIiCi0gICAgdHJ5OgotICAgICAgICBvcy5tYWtlZGlycyhkaXIpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgd2h5OgotICAgICAgICBpZiB3aHkuZXJybm8gIT0gZXJybm8uRUVYSVNUOgotICAgICAgICAgICAgcmFpc2UKLQotZGVmIHN5bWxpbmsoc3JjLCBkc3QsIG1rZGlycz0wKToKLSAgICAiIiJDb3B5IGEgZmlsZSBvciBhIGRpcmVjdG9yeS4iIiIKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc3JjKToKLSAgICAgICAgcmFpc2UgSU9FcnJvcigiTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeTogJyVzJyIgJSBzcmMpCi0gICAgaWYgbWtkaXJzOgotICAgICAgICBtYWtlZGlycyhvcy5wYXRoLmRpcm5hbWUoZHN0KSkKLSAgICBvcy5zeW1saW5rKG9zLnBhdGguYWJzcGF0aChzcmMpLCBkc3QpCi0KLWRlZiBwYXRoam9pbigqYXJncyk6Ci0gICAgIiIiU2FmZSB3cmFwcGVyIGZvciBvcy5wYXRoLmpvaW46IGFzc2VydHMgdGhhdCBhbGwgYnV0IHRoZSBmaXJzdAotICAgIGFyZ3VtZW50IGFyZSByZWxhdGl2ZSBwYXRocy4iIiIKLSAgICBmb3Igc2VnIGluIGFyZ3NbMTpdOgotICAgICAgICBhc3NlcnQgc2VnWzBdICE9ICIvIgotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKmFyZ3MpCi0KLQotY21kbGluZV9kb2MgPSAiIiJcCi1Vc2FnZToKLSAgcHl0aG9uIGJ1bmRsZWJ1aWxkZXIucHkgW29wdGlvbnNdIGNvbW1hbmQKLSAgcHl0aG9uIG15YnVpbGRzY3JpcHQucHkgW29wdGlvbnNdIGNvbW1hbmQKLQotQ29tbWFuZHM6Ci0gIGJ1aWxkICAgICAgYnVpbGQgdGhlIGFwcGxpY2F0aW9uCi0gIHJlcG9ydCAgICAgcHJpbnQgYSByZXBvcnQKLQotT3B0aW9uczoKLSAgLWIsIC0tYnVpbGRkaXI9RElSICAgICB0aGUgYnVpbGQgZGlyZWN0b3J5OyBkZWZhdWx0cyB0byAiYnVpbGQiCi0gIC1uLCAtLW5hbWU9TkFNRSAgICAgICAgYXBwbGljYXRpb24gbmFtZQotICAtciwgLS1yZXNvdXJjZT1GSUxFICAgIGV4dHJhIGZpbGUgb3IgZm9sZGVyIHRvIGJlIGNvcGllZCB0byBSZXNvdXJjZXMKLSAgLWYsIC0tZmlsZT1TUkM6RFNUICAgICBleHRyYSBmaWxlIG9yIGZvbGRlciB0byBiZSBjb3BpZWQgaW50byB0aGUgYnVuZGxlOwotICAgICAgICAgICAgICAgICAgICAgICAgIERTVCBtdXN0IGJlIGEgcGF0aCByZWxhdGl2ZSB0byB0aGUgYnVuZGxlIHJvb3QKLSAgLWUsIC0tZXhlY3V0YWJsZT1GSUxFICB0aGUgZXhlY3V0YWJsZSB0byBiZSB1c2VkCi0gIC1tLCAtLW1haW5wcm9ncmFtPUZJTEUgdGhlIFB5dGhvbiBtYWluIHByb2dyYW0KLSAgLWEsIC0tYXJndiAgICAgICAgICAgICBhZGQgYSB3cmFwcGVyIG1haW4gcHJvZ3JhbSB0byBjcmVhdGUgc3lzLmFyZ3YKLSAgLXAsIC0tcGxpc3Q9RklMRSAgICAgICAucGxpc3QgZmlsZSAoZGVmYXVsdDogZ2VuZXJhdGUgb25lKQotICAgICAgLS1uaWI9TkFNRSAgICAgICAgIG1haW4gbmliIG5hbWUKLSAgLWMsIC0tY3JlYXRvcj1DQ0NDICAgICA0LWNoYXIgY3JlYXRvciBjb2RlIChkZWZhdWx0OiAnPz8/PycpCi0gICAgICAtLWljb25maWxlPUZJTEUgICAgZmlsZW5hbWUgb2YgdGhlIGljb24gKGFuIC5pY25zIGZpbGUpIHRvIGJlIHVzZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICBhcyB0aGUgRmluZGVyIGljb24KLSAgICAgIC0tYnVuZGxlLWlkPUlEICAgICB0aGUgQ0ZCdW5kbGVJZGVudGlmaWVyLCBpbiByZXZlcnNlLWRucyBmb3JtYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAoZWcuIG9yZy5weXRob24uQnVpbGRBcHBsZXQ7IHRoaXMgaXMgdXNlZCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcHJlZmVyZW5jZXMgZmlsZSBuYW1lKQotICAtbCwgLS1saW5rICAgICAgICAgICAgIHN5bWxpbmsgZmlsZXMvZm9sZGVyIGluc3RlYWQgb2YgY29weWluZyB0aGVtCi0gICAgICAtLWxpbmstZXhlYyAgICAgICAgc3ltbGluayB0aGUgZXhlY3V0YWJsZSBpbnN0ZWFkIG9mIGNvcHlpbmcgaXQKLSAgICAgIC0tc3RhbmRhbG9uZSAgICAgICBidWlsZCBhIHN0YW5kYWxvbmUgYXBwbGljYXRpb24sIHdoaWNoIGlzIGZ1bGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXBlbmRlbnQgb2YgYSBQeXRob24gaW5zdGFsbGF0aW9uCi0gICAgICAtLXNlbWktc3RhbmRhbG9uZSAgYnVpbGQgYSBzdGFuZGFsb25lIGFwcGxpY2F0aW9uLCB3aGljaCBkZXBlbmRzIG9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgYW4gaW5zdGFsbGVkIFB5dGhvbiwgeWV0IGluY2x1ZGVzIGFsbCB0aGlyZC1wYXJ0eQotICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZXMuCi0gICAgICAtLXB5dGhvbj1GSUxFICAgICAgUHl0aG9uIHRvIHVzZSBpbiAjISBsaW5lIGluIHN0ZWFkIG9mIGN1cnJlbnQgUHl0aG9uCi0gICAgICAtLWxpYj1GSUxFICAgICAgICAgc2hhcmVkIGxpYnJhcnkgb3IgZnJhbWV3b3JrIHRvIGJlIGNvcGllZCBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1bmRsZQotICAteCwgLS1leGNsdWRlPU1PRFVMRSAgIGV4Y2x1ZGUgbW9kdWxlICh3aXRoIC0tKHNlbWktKXN0YW5kYWxvbmUpCi0gIC1pLCAtLWluY2x1ZGU9TU9EVUxFICAgaW5jbHVkZSBtb2R1bGUgKHdpdGggLS0oc2VtaS0pc3RhbmRhbG9uZSkKLSAgICAgIC0tcGFja2FnZT1QQUNLQUdFICBpbmNsdWRlIGEgd2hvbGUgcGFja2FnZSAod2l0aCAtLShzZW1pLSlzdGFuZGFsb25lKQotICAgICAgLS1zdHJpcCAgICAgICAgICAgIHN0cmlwIGJpbmFyaWVzIChyZW1vdmUgZGVidWcgaW5mbykKLSAgLXYsIC0tdmVyYm9zZSAgICAgICAgICBpbmNyZWFzZSB2ZXJib3NpdHkgbGV2ZWwKLSAgLXEsIC0tcXVpZXQgICAgICAgICAgICBkZWNyZWFzZSB2ZXJib3NpdHkgbGV2ZWwKLSAgLWgsIC0taGVscCAgICAgICAgICAgICBwcmludCB0aGlzIG1lc3NhZ2UKLSIiIgotCi1kZWYgdXNhZ2UobXNnPU5vbmUpOgotICAgIGlmIG1zZzoKLSAgICAgICAgcHJpbnQobXNnKQotICAgIHByaW50KGNtZGxpbmVfZG9jKQotICAgIHN5cy5leGl0KDEpCi0KLWRlZiBtYWluKGJ1aWxkZXI9Tm9uZSk6Ci0gICAgaWYgYnVpbGRlciBpcyBOb25lOgotICAgICAgICBidWlsZGVyID0gQXBwQnVpbGRlcih2ZXJib3NpdHk9MSkKLQotICAgIHNob3J0b3B0cyA9ICJiOm46cjpmOmU6bTpjOnA6bHg6aTpodnFhIgotICAgIGxvbmdvcHRzID0gKCJidWlsZGRpcj0iLCAibmFtZT0iLCAicmVzb3VyY2U9IiwgImZpbGU9IiwgImV4ZWN1dGFibGU9IiwKLSAgICAgICAgIm1haW5wcm9ncmFtPSIsICJjcmVhdG9yPSIsICJuaWI9IiwgInBsaXN0PSIsICJsaW5rIiwKLSAgICAgICAgImxpbmstZXhlYyIsICJoZWxwIiwgInZlcmJvc2UiLCAicXVpZXQiLCAiYXJndiIsICJzdGFuZGFsb25lIiwKLSAgICAgICAgImV4Y2x1ZGU9IiwgImluY2x1ZGU9IiwgInBhY2thZ2U9IiwgInN0cmlwIiwgImljb25maWxlPSIsCi0gICAgICAgICJsaWI9IiwgInB5dGhvbj0iLCAic2VtaS1zdGFuZGFsb25lIiwgImJ1bmRsZS1pZD0iLCAiZGVzdHJvb3Q9IikKLQotICAgIHRyeToKLSAgICAgICAgb3B0aW9ucywgYXJncyA9IGdldG9wdC5nZXRvcHQoc3lzLmFyZ3ZbMTpdLCBzaG9ydG9wdHMsIGxvbmdvcHRzKQotICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3I6Ci0gICAgICAgIHVzYWdlKCkKLQotICAgIGZvciBvcHQsIGFyZyBpbiBvcHRpb25zOgotICAgICAgICBpZiBvcHQgaW4gKCctYicsICctLWJ1aWxkZGlyJyk6Ci0gICAgICAgICAgICBidWlsZGVyLmJ1aWxkZGlyID0gYXJnCi0gICAgICAgIGVsaWYgb3B0IGluICgnLW4nLCAnLS1uYW1lJyk6Ci0gICAgICAgICAgICBidWlsZGVyLm5hbWUgPSBhcmcKLSAgICAgICAgZWxpZiBvcHQgaW4gKCctcicsICctLXJlc291cmNlJyk6Ci0gICAgICAgICAgICBidWlsZGVyLnJlc291cmNlcy5hcHBlbmQob3MucGF0aC5ub3JtcGF0aChhcmcpKQotICAgICAgICBlbGlmIG9wdCBpbiAoJy1mJywgJy0tZmlsZScpOgotICAgICAgICAgICAgc3JjZHN0ID0gYXJnLnNwbGl0KCc6JykKLSAgICAgICAgICAgIGlmIGxlbihzcmNkc3QpICE9IDI6Ci0gICAgICAgICAgICAgICAgdXNhZ2UoIi1mIG9yIC0tZmlsZSBhcmd1bWVudCBtdXN0IGJlIHR3byBwYXRocywgIgotICAgICAgICAgICAgICAgICAgICAgICJzZXBhcmF0ZWQgYnkgYSBjb2xvbiIpCi0gICAgICAgICAgICBidWlsZGVyLmZpbGVzLmFwcGVuZChzcmNkc3QpCi0gICAgICAgIGVsaWYgb3B0IGluICgnLWUnLCAnLS1leGVjdXRhYmxlJyk6Ci0gICAgICAgICAgICBidWlsZGVyLmV4ZWN1dGFibGUgPSBhcmcKLSAgICAgICAgZWxpZiBvcHQgaW4gKCctbScsICctLW1haW5wcm9ncmFtJyk6Ci0gICAgICAgICAgICBidWlsZGVyLm1haW5wcm9ncmFtID0gYXJnCi0gICAgICAgIGVsaWYgb3B0IGluICgnLWEnLCAnLS1hcmd2Jyk6Ci0gICAgICAgICAgICBidWlsZGVyLmFyZ3ZfZW11bGF0aW9uID0gMQotICAgICAgICBlbGlmIG9wdCBpbiAoJy1jJywgJy0tY3JlYXRvcicpOgotICAgICAgICAgICAgYnVpbGRlci5jcmVhdG9yID0gYXJnCi0gICAgICAgIGVsaWYgb3B0ID09ICctLWJ1bmRsZS1pZCc6Ci0gICAgICAgICAgICBidWlsZGVyLmJ1bmRsZV9pZCA9IGFyZwotICAgICAgICBlbGlmIG9wdCA9PSAnLS1pY29uZmlsZSc6Ci0gICAgICAgICAgICBidWlsZGVyLmljb25maWxlID0gYXJnCi0gICAgICAgIGVsaWYgb3B0ID09ICItLWxpYiI6Ci0gICAgICAgICAgICBidWlsZGVyLmxpYnMuYXBwZW5kKG9zLnBhdGgubm9ybXBhdGgoYXJnKSkKLSAgICAgICAgZWxpZiBvcHQgPT0gIi0tbmliIjoKLSAgICAgICAgICAgIGJ1aWxkZXIubmlibmFtZSA9IGFyZwotICAgICAgICBlbGlmIG9wdCBpbiAoJy1wJywgJy0tcGxpc3QnKToKLSAgICAgICAgICAgIGJ1aWxkZXIucGxpc3QgPSBQbGlzdC5mcm9tRmlsZShhcmcpCi0gICAgICAgIGVsaWYgb3B0IGluICgnLWwnLCAnLS1saW5rJyk6Ci0gICAgICAgICAgICBidWlsZGVyLnN5bWxpbmsgPSAxCi0gICAgICAgIGVsaWYgb3B0ID09ICctLWxpbmstZXhlYyc6Ci0gICAgICAgICAgICBidWlsZGVyLnN5bWxpbmtfZXhlYyA9IDEKLSAgICAgICAgZWxpZiBvcHQgaW4gKCctaCcsICctLWhlbHAnKToKLSAgICAgICAgICAgIHVzYWdlKCkKLSAgICAgICAgZWxpZiBvcHQgaW4gKCctdicsICctLXZlcmJvc2UnKToKLSAgICAgICAgICAgIGJ1aWxkZXIudmVyYm9zaXR5ICs9IDEKLSAgICAgICAgZWxpZiBvcHQgaW4gKCctcScsICctLXF1aWV0Jyk6Ci0gICAgICAgICAgICBidWlsZGVyLnZlcmJvc2l0eSAtPSAxCi0gICAgICAgIGVsaWYgb3B0ID09ICctLXN0YW5kYWxvbmUnOgotICAgICAgICAgICAgYnVpbGRlci5zdGFuZGFsb25lID0gMQotICAgICAgICBlbGlmIG9wdCA9PSAnLS1zZW1pLXN0YW5kYWxvbmUnOgotICAgICAgICAgICAgYnVpbGRlci5zZW1pX3N0YW5kYWxvbmUgPSAxCi0gICAgICAgIGVsaWYgb3B0ID09ICctLXB5dGhvbic6Ci0gICAgICAgICAgICBidWlsZGVyLnB5dGhvbiA9IGFyZwotICAgICAgICBlbGlmIG9wdCBpbiAoJy14JywgJy0tZXhjbHVkZScpOgotICAgICAgICAgICAgYnVpbGRlci5leGNsdWRlTW9kdWxlcy5hcHBlbmQoYXJnKQotICAgICAgICBlbGlmIG9wdCBpbiAoJy1pJywgJy0taW5jbHVkZScpOgotICAgICAgICAgICAgYnVpbGRlci5pbmNsdWRlTW9kdWxlcy5hcHBlbmQoYXJnKQotICAgICAgICBlbGlmIG9wdCA9PSAnLS1wYWNrYWdlJzoKLSAgICAgICAgICAgIGJ1aWxkZXIuaW5jbHVkZVBhY2thZ2VzLmFwcGVuZChhcmcpCi0gICAgICAgIGVsaWYgb3B0ID09ICctLXN0cmlwJzoKLSAgICAgICAgICAgIGJ1aWxkZXIuc3RyaXAgPSAxCi0gICAgICAgIGVsaWYgb3B0ID09ICctLWRlc3Ryb290JzoKLSAgICAgICAgICAgIGJ1aWxkZXIuZGVzdHJvb3QgPSBhcmcKLQotICAgIGlmIGxlbihhcmdzKSAhPSAxOgotICAgICAgICB1c2FnZSgiTXVzdCBzcGVjaWZ5IG9uZSBjb21tYW5kICgnYnVpbGQnLCAncmVwb3J0JyBvciAnaGVscCcpIikKLSAgICBjb21tYW5kID0gYXJnc1swXQotCi0gICAgaWYgY29tbWFuZCA9PSAiYnVpbGQiOgotICAgICAgICBidWlsZGVyLnNldHVwKCkKLSAgICAgICAgYnVpbGRlci5idWlsZCgpCi0gICAgZWxpZiBjb21tYW5kID09ICJyZXBvcnQiOgotICAgICAgICBidWlsZGVyLnNldHVwKCkKLSAgICAgICAgYnVpbGRlci5yZXBvcnQoKQotICAgIGVsaWYgY29tbWFuZCA9PSAiaGVscCI6Ci0gICAgICAgIHVzYWdlKCkKLSAgICBlbHNlOgotICAgICAgICB1c2FnZSgiVW5rbm93biBjb21tYW5kICclcyciICUgY29tbWFuZCkKLQotCi1kZWYgYnVpbGRhcHAoKiprd2FyZ3MpOgotICAgIGJ1aWxkZXIgPSBBcHBCdWlsZGVyKCoqa3dhcmdzKQotICAgIG1haW4oYnVpbGRlcikKLQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCmluZGV4IGUxOWZjMDAuLjkxZmEwNmUgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnByZS5pbgorKysgYi9NYWtlZmlsZS5wcmUuaW4KQEAgLTQzLDYgKzQzLDExIEBACiBIR1ZFUlNJT049CUBIR1ZFUlNJT05ACiBIR1RBRz0JCUBIR1RBR0AKIEhHQlJBTkNIPQlASEdCUkFOQ0hACitQR09fUFJPRl9HRU5fRkxBRz1AUEdPX1BST0ZfR0VOX0ZMQUdACitQR09fUFJPRl9VU0VfRkxBRz1AUEdPX1BST0ZfVVNFX0ZMQUdACitMTFZNX1BST0ZfTUVSR0VSPUBMTFZNX1BST0ZfTUVSR0VSQAorTExWTV9QUk9GX0ZJTEU9QExMVk1fUFJPRl9GSUxFQAorTExWTV9QUk9GX0VSUj1ATExWTV9QUk9GX0VSUkAKIAogR05VTEQ9CQlAR05VTERACiAKQEAgLTIyNiw4ICsyMzEsNyBAQAogVENMVEtfTElCUz0JQFRDTFRLX0xJQlNACiAKICMgVGhlIHRhc2sgdG8gcnVuIHdoaWxlIGluc3RydW1lbnQgd2hlbiBidWlsZGluZyB0aGUgcHJvZmlsZS1vcHQgdGFyZ2V0Ci1QUk9GSUxFX1RBU0s9CSQoc3JjZGlyKS9Ub29scy9weWJlbmNoL3B5YmVuY2gucHkgLW4gMiAtLXdpdGgtZ2MgLS13aXRoLXN5c2NoZWNrCi0jUFJPRklMRV9UQVNLPQkkKHNyY2RpcikvTGliL3Rlc3QvcmVncnRlc3QucHkKK1BST0ZJTEVfVEFTSz0tbSB0ZXN0LnJlZ3J0ZXN0IC0tcGdvCiAKICMgcmVwb3J0IGZpbGVzIGZvciBnY292IC8gbGNvdiBjb3ZlcmFnZSByZXBvcnQKIENPVkVSQUdFX0lORk89CSQoYWJzX2J1aWxkZGlyKS9jb3ZlcmFnZS5pbmZvCkBAIC0zMjgsNiArMzMyLDEzIEBACiBQR0VOT0JKUz0JJChQT0JKUykgJChQR09CSlMpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIG9wY29kZS5oIGdlbmVyYXRpb24KK09QQ09ERV9IX0RJUj0gCSQoc3JjZGlyKS9JbmNsdWRlCitPUENPREVfSF9TQ1JJUFQ9ICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5CitPUENPREVfSD0JJChPUENPREVfSF9ESVIpL29wY29kZS5oCitPUENPREVfSF9HRU49CUBPUENPREVIR0VOQCAgJChPUENPREVfSF9TQ1JJUFQpICQoc3JjZGlyKS9MaWIvb3Bjb2RlLnB5ICQoT1BDT0RFX0gpCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBBU1QKIEFTVF9IX0RJUj0JSW5jbHVkZQogQVNUX0g9CQkkKEFTVF9IX0RJUikvUHl0aG9uLWFzdC5oCkBAIC0zODIsNiArMzkzLDcgQEAKIAkJUHl0aG9uL3B5Y3R5cGUubyBcCiAJCVB5dGhvbi9weWZwZS5vIFwKIAkJUHl0aG9uL3B5aGFzaC5vIFwKKwkJUHl0aG9uL3B5bGlmZWN5Y2xlLm8gXAogCQlQeXRob24vcHltYXRoLm8gXAogCQlQeXRob24vcHlzdGF0ZS5vIFwKIAkJUHl0aG9uL3B5dGhvbnJ1bi5vIFwKQEAgLTM5NCw2ICs0MDYsNyBAQAogCQlQeXRob24vZ2V0b3B0Lm8gXAogCQlQeXRob24vcHlzdHJjbXAubyBcCiAJCVB5dGhvbi9weXN0cnRvZC5vIFwKKwkJUHl0aG9uL3B5c3RyaGV4Lm8gXAogCQlQeXRob24vZHRvYS5vIFwKIAkJUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLm8gXAogCQlQeXRob24vZmlsZXV0aWxzLm8gXApAQCAtNDI4LDYgKzQ0MSw3IEBACiAJCU9iamVjdHMvbGlzdG9iamVjdC5vIFwKIAkJT2JqZWN0cy9sb25nb2JqZWN0Lm8gXAogCQlPYmplY3RzL2RpY3RvYmplY3QubyBcCisJCU9iamVjdHMvb2RpY3RvYmplY3QubyBcCiAJCU9iamVjdHMvbWVtb3J5b2JqZWN0Lm8gXAogCQlPYmplY3RzL21ldGhvZG9iamVjdC5vIFwKIAkJT2JqZWN0cy9tb2R1bGVvYmplY3QubyBcCkBAIC00NjUsMjkgKzQ3OSw0MCBAQAogCiAjIERlZmF1bHQgdGFyZ2V0CiBhbGw6CQlidWlsZF9hbGwKLWJ1aWxkX2FsbDoJJChCVUlMRFBZVEhPTikgb2xkc2hhcmVkbW9kcyBzaGFyZWRtb2RzIGdkYmhvb2tzIE1vZHVsZXMvX3Rlc3RlbWJlZCBweXRob24tY29uZmlnCitidWlsZF9hbGw6CSQoQlVJTERQWVRIT04pIG9sZHNoYXJlZG1vZHMgc2hhcmVkbW9kcyBnZGJob29rcyBQcm9ncmFtcy9fdGVzdGVtYmVkIHB5dGhvbi1jb25maWcKIAotIyBDb21waWxlIGEgYmluYXJ5IHdpdGggZ2NjIHByb2ZpbGUgZ3VpZGVkIG9wdGltaXphdGlvbi4KKyMgQ29tcGlsZSBhIGJpbmFyeSB3aXRoIHByb2ZpbGUgZ3VpZGVkIG9wdGltaXphdGlvbi4KIHByb2ZpbGUtb3B0OgorCUBpZiBbICQoTExWTV9QUk9GX0VSUikgPT0geWVzIF07IHRoZW4gXAorCQllY2hvICJFcnJvcjogQ2Fubm90IHBlcmZvcm0gUEdPIGJ1aWxkIGJlY2F1c2UgbGx2bS1wcm9mZGF0YSB3YXMgbm90IGZvdW5kIGluIFBBVEgiIDtcCisJCWVjaG8gIlBsZWFzZSBhZGQgaXQgdG8gUEFUSCBhbmQgcnVuIC4vY29uZmlndXJlIGFnYWluIiA7XAorCQlleGl0IDE7XAorCWZpCiAJQGVjaG8gIkJ1aWxkaW5nIHdpdGggc3VwcG9ydCBmb3IgcHJvZmlsZSBnZW5lcmF0aW9uOiIKIAkkKE1BS0UpIGNsZWFuCi0JJChNQUtFKSBidWlsZF9hbGxfZ2VuZXJhdGVfcHJvZmlsZQotCUBlY2hvICJSdW5uaW5nIGJlbmNobWFyayB0byBnZW5lcmF0ZSBwcm9maWxlIGRhdGE6IgogCSQoTUFLRSkgcHJvZmlsZS1yZW1vdmFsCisJJChNQUtFKSBidWlsZF9hbGxfZ2VuZXJhdGVfcHJvZmlsZQorCSQoTUFLRSkgcHJvZmlsZS1yZW1vdmFsCisJQGVjaG8gIlJ1bm5pbmcgY29kZSB0byBnZW5lcmF0ZSBwcm9maWxlIGRhdGEgKHRoaXMgY2FuIHRha2UgYSB3aGlsZSk6IgogCSQoTUFLRSkgcnVuX3Byb2ZpbGVfdGFzaworCSQoTUFLRSkgYnVpbGRfYWxsX21lcmdlX3Byb2ZpbGUKIAlAZWNobyAiUmVidWlsZGluZyB3aXRoIHByb2ZpbGUgZ3VpZGVkIG9wdGltaXphdGlvbnM6IgogCSQoTUFLRSkgY2xlYW4KIAkkKE1BS0UpIGJ1aWxkX2FsbF91c2VfcHJvZmlsZQorCSQoTUFLRSkgcHJvZmlsZS1yZW1vdmFsCiAKIGJ1aWxkX2FsbF9nZW5lcmF0ZV9wcm9maWxlOgotCSQoTUFLRSkgYWxsIENGTEFHU19OT0RJU1Q9IiQoQ0ZMQUdTKSAtZnByb2ZpbGUtZ2VuZXJhdGUiIExERkxBR1M9Ii1mcHJvZmlsZS1nZW5lcmF0ZSIgTElCUz0iJChMSUJTKSAtbGdjb3YiCisJJChNQUtFKSBhbGwgQ0ZMQUdTX05PRElTVD0iJChDRkxBR1MpICQoUEdPX1BST0ZfR0VOX0ZMQUcpIiBMREZMQUdTPSIkKExERkxBR1MpICQoUEdPX1BST0ZfR0VOX0ZMQUcpIiBMSUJTPSIkKExJQlMpIgogCiBydW5fcHJvZmlsZV90YXNrOgogCTogIyBGSVhNRTogY2FuJ3QgcnVuIGZvciBhIGNyb3NzIGJ1aWxkCi0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChQUk9GSUxFX1RBU0spCisJJChMTFZNX1BST0ZfRklMRSkgJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChQUk9GSUxFX1RBU0spIHx8IHRydWUKKworYnVpbGRfYWxsX21lcmdlX3Byb2ZpbGU6CisJJChMTFZNX1BST0ZfTUVSR0VSKQogCiBidWlsZF9hbGxfdXNlX3Byb2ZpbGU6Ci0JJChNQUtFKSBhbGwgQ0ZMQUdTX05PRElTVD0iJChDRkxBR1MpIC1mcHJvZmlsZS11c2UgLWZwcm9maWxlLWNvcnJlY3Rpb24iCisJJChNQUtFKSBhbGwgQ0ZMQUdTX05PRElTVD0iJChDRkxBR1MpICQoUEdPX1BST0ZfVVNFX0ZMQUcpIgogCiAjIENvbXBpbGUgYW5kIHJ1biB3aXRoIGdjb3YKIC5QSE9OWT1jb3ZlcmFnZSBjb3ZlcmFnZS1sY292IGNvdmVyYWdlLXJlcG9ydApAQCAtNTI0LDYgKzU0OSw3IEBACiAJOiAjIGZvcmNlIHJlYnVpbGRpbmcgb2YgcGFyc2VyIGFuZCBpbXBvcnRsaWIKIAlAdG91Y2ggJChHUkFNTUFSX0lOUFVUKQogCUB0b3VjaCAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CisJQHRvdWNoICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkKIAk6ICMgYnVpbGQgd2l0aCBjb3ZlcmFnZSBpbmZvCiAJJChNQUtFKSBjb3ZlcmFnZQogCTogIyBydW4gdGVzdHMsIGlnbm9yZSBmYWlsdXJlcwpAQCAtNTM4LDggKzU2NCw4IEBACiAJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLi9Ub29scy9jbGluaWMvY2xpbmljLnB5IC0tbWFrZQogCiAjIEJ1aWxkIHRoZSBpbnRlcnByZXRlcgotJChCVUlMRFBZVEhPTik6CU1vZHVsZXMvcHl0aG9uLm8gJChMSUJSQVJZKSAkKExETElCUkFSWSkgJChQWTNMSUJSQVJZKQotCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpICQoTElOS0ZPUlNIQVJFRCkgLW8gJEAgTW9kdWxlcy9weXRob24ubyAkKEJMRExJQlJBUlkpICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQorJChCVUlMRFBZVEhPTik6CVByb2dyYW1zL3B5dGhvbi5vICQoTElCUkFSWSkgJChMRExJQlJBUlkpICQoUFkzTElCUkFSWSkKKwkkKExJTktDQykgJChQWV9MREZMQUdTKSAkKExJTktGT1JTSEFSRUQpIC1vICRAIFByb2dyYW1zL3B5dGhvbi5vICQoQkxETElCUkFSWSkgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCiAKIHBsYXRmb3JtOiAkKEJVSUxEUFlUSE9OKSBweWJ1aWxkZGlyLnR4dAogCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpIC1jICdpbXBvcnQgc3lzIDsgZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9wbGF0Zm9ybSA7IHByaW50KGdldF9wbGF0Zm9ybSgpKyItIitzeXMudmVyc2lvblswOjNdKScgPnBsYXRmb3JtCkBAIC02NzQsMTggKzcwMCwyMyBAQAogCQllY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSI7IFwKIAlmaQogCi1Nb2R1bGVzL190ZXN0ZW1iZWQ6IE1vZHVsZXMvX3Rlc3RlbWJlZC5vICQoTElCUkFSWSkgJChMRExJQlJBUlkpICQoUFkzTElCUkFSWSkKLQkkKExJTktDQykgJChQWV9MREZMQUdTKSAkKExJTktGT1JTSEFSRUQpIC1vICRAIE1vZHVsZXMvX3Rlc3RlbWJlZC5vICQoQkxETElCUkFSWSkgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCitQcm9ncmFtcy9fdGVzdGVtYmVkOiBQcm9ncmFtcy9fdGVzdGVtYmVkLm8gJChMSUJSQVJZKSAkKExETElCUkFSWSkgJChQWTNMSUJSQVJZKQorCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpICQoTElOS0ZPUlNIQVJFRCkgLW8gJEAgUHJvZ3JhbXMvX3Rlc3RlbWJlZC5vICQoQkxETElCUkFSWSkgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgSW1wb3J0bGliCiAKLU1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWI6IE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIubyAkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikKLQkkKExJTktDQykgJChQWV9MREZMQUdTKSAtbyAkQCBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLm8gJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQorUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIubzogUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyBNYWtlZmlsZQogCi1QeXRob24vaW1wb3J0bGliLmg6ICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jCi0JJChNQUtFKSBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliCi0JLi9Nb2R1bGVzL19mcmVlemVfaW1wb3J0bGliIFwKK1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliOiBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5vICQoTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOKQorCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpIC1vICRAIFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLm8gJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQorCitQeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmg6ICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIKKwkuL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliIFwKKwkJJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weSBQeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmgKKworUHl0aG9uL2ltcG9ydGxpYi5oOiAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliCisJLi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYiBcCiAJCSQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgUHl0aG9uL2ltcG9ydGxpYi5oCiAKIApAQCAtNzEzLDExICs3NDQsMTEgQEAKIAkJLURWUEFUSD0nIiQoVlBBVEgpIicgXAogCQktbyAkQCAkKHNyY2RpcikvTW9kdWxlcy9nZXRwYXRoLmMKIAotTW9kdWxlcy9weXRob24ubzogJChzcmNkaXIpL01vZHVsZXMvcHl0aG9uLmMKLQkkKE1BSU5DQykgLWMgJChQWV9DT1JFX0NGTEFHUykgLW8gJEAgJChzcmNkaXIpL01vZHVsZXMvcHl0aG9uLmMKK1Byb2dyYW1zL3B5dGhvbi5vOiAkKHNyY2RpcikvUHJvZ3JhbXMvcHl0aG9uLmMKKwkkKE1BSU5DQykgLWMgJChQWV9DT1JFX0NGTEFHUykgLW8gJEAgJChzcmNkaXIpL1Byb2dyYW1zL3B5dGhvbi5jCiAKLU1vZHVsZXMvX3Rlc3RlbWJlZC5vOiAkKHNyY2RpcikvTW9kdWxlcy9fdGVzdGVtYmVkLmMKLQkkKE1BSU5DQykgLWMgJChQWV9DT1JFX0NGTEFHUykgLW8gJEAgJChzcmNkaXIpL01vZHVsZXMvX3Rlc3RlbWJlZC5jCitQcm9ncmFtcy9fdGVzdGVtYmVkLm86ICQoc3JjZGlyKS9Qcm9ncmFtcy9fdGVzdGVtYmVkLmMKKwkkKE1BSU5DQykgLWMgJChQWV9DT1JFX0NGTEFHUykgLW8gJEAgJChzcmNkaXIpL1Byb2dyYW1zL190ZXN0ZW1iZWQuYwogCiBNb2R1bGVzL19zcmUubzogJChzcmNkaXIpL01vZHVsZXMvX3NyZS5jICQoc3JjZGlyKS9Nb2R1bGVzL3NyZS5oICQoc3JjZGlyKS9Nb2R1bGVzL3NyZV9jb25zdGFudHMuaCAkKHNyY2RpcikvTW9kdWxlcy9zcmVfbGliLmgKIApAQCAtNzQ2LDE1ICs3NzcsMTMgQEAKIAogJChJT19PQkpTKTogJChJT19IKQogCi0kKEdSQU1NQVJfSCk6ICQoR1JBTU1BUl9JTlBVVCkgJChQR0VOU1JDUykKKyQoR1JBTU1BUl9IKTogJChHUkFNTUFSX0lOUFVUKSAkKFBHRU4pCiAJCUAkKE1LRElSX1ApIEluY2x1ZGUKLQkJJChNQUtFKSAkKFBHRU4pCiAJCSQoUEdFTikgJChHUkFNTUFSX0lOUFVUKSAkKEdSQU1NQVJfSCkgJChHUkFNTUFSX0MpCi0kKEdSQU1NQVJfQyk6ICQoR1JBTU1BUl9IKSAkKEdSQU1NQVJfSU5QVVQpICQoUEdFTlNSQ1MpCi0JCSQoTUFLRSkgJChHUkFNTUFSX0gpCiskKEdSQU1NQVJfQyk6ICQoR1JBTU1BUl9IKQogCQl0b3VjaCAkKEdSQU1NQVJfQykKIAotJChQR0VOKToJJChQR0VOT0JKUykKKyQoUEdFTik6ICQoUEdFTk9CSlMpCiAJCSQoQ0MpICQoT1BUKSAkKFBZX0xERkxBR1MpICQoUEdFTk9CSlMpICQoTElCUykgLW8gJChQR0VOKQogCiBQYXJzZXIvZ3JhbW1hci5vOgkkKHNyY2RpcikvUGFyc2VyL2dyYW1tYXIuYyBcCkBAIC03NzYsNiArODA1LDkgQEAKIAkkKE1LRElSX1ApICQoQVNUX0NfRElSKQogCSQoQVNETEdFTikgLWMgJChBU1RfQ19ESVIpICQoQVNUX0FTREwpCiAKKyQoT1BDT0RFX0gpOiAkKHNyY2RpcikvTGliL29wY29kZS5weSAkKE9QQ09ERV9IX1NDUklQVCkKKwkkKE9QQ09ERV9IX0dFTikKKwogUHl0aG9uL2NvbXBpbGUubyBQeXRob24vc3ltdGFibGUubyBQeXRob24vYXN0Lm86ICQoR1JBTU1BUl9IKSAkKEFTVF9IKQogCiBQeXRob24vZ2V0cGxhdGZvcm0ubzogJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCkBAIC04MzAsNyArODYyLDcgQEAKIAogUHl0aG9uL2NldmFsLm86ICQoT1BDT0RFVEFSR0VUU19IKSAkKHNyY2RpcikvUHl0aG9uL2NldmFsX2dpbC5oCiAKLVB5dGhvbi9mcm96ZW4ubzogUHl0aG9uL2ltcG9ydGxpYi5oCitQeXRob24vZnJvemVuLm86IFB5dGhvbi9pbXBvcnRsaWIuaCBQeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmgKIAogT2JqZWN0cy90eXBlb2JqZWN0Lm86IE9iamVjdHMvdHlwZXNsb3RzLmluYwogT2JqZWN0cy90eXBlc2xvdHMuaW5jOiAkKHNyY2RpcikvSW5jbHVkZS90eXBlc2xvdHMuaCAkKHNyY2RpcikvT2JqZWN0cy90eXBlc2xvdHMucHkKQEAgLTg4Nyw3ICs5MTksNyBAQAogCQkkKHNyY2RpcikvSW5jbHVkZS9ub2RlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9vYmplY3QuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL29iamltcGwuaCBcCi0JCSQoc3JjZGlyKS9JbmNsdWRlL29wY29kZS5oIFwKKwkJJChPUENPREVfSCkgXAogCQkkKHNyY2RpcikvSW5jbHVkZS9vc2RlZnMuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3BhdGNobGV2ZWwuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3BnZW4uaCBcCkBAIC05MDAsNiArOTMyLDcgQEAKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHllcnJvcnMuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5ZnBlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWhhc2guaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5bGlmZWN5Y2xlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weW1hdGguaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5Z2V0b3B0LmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weW1hY3JvLmggXApAQCAtOTA4LDYgKzk0MSw3IEBACiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5c3RhdGUuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5c3RyY21wLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weXN0cnRvZC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlzdHJoZXguaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5dGhvbnJ1bi5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHl0aHJlYWQuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5dGltZS5oIFwKQEAgLTkyOCw3ICs5NjIsNyBAQAogCQkkKFBBUlNFUl9IRUFERVJTKSBcCiAJCSQoQVNUX0gpCiAKLSQoTElCUkFSWV9PQkpTKSAkKE1PRE9CSlMpIE1vZHVsZXMvcHl0aG9uLm86ICQoUFlUSE9OX0hFQURFUlMpCiskKExJQlJBUllfT0JKUykgJChNT0RPQkpTKSBQcm9ncmFtcy9weXRob24ubzogJChQWVRIT05fSEVBREVSUykKIAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0xMDc2LDYgKzExMTAsMTAgQEAKIAlmaQogCiBiaW5pbnN0YWxsOiBhbHRiaW5pbnN0YWxsCisJaWYgdGVzdCAhIC1kICQoREVTVERJUikkKExJQlBDKTsgdGhlbiBcCisJCWVjaG8gIkNyZWF0aW5nIGRpcmVjdG9yeSAkKExJQlBDKSI7IFwKKwkJJChJTlNUQUxMKSAtZCAtbSAkKERJUk1PREUpICQoREVTVERJUikkKExJQlBDKTsgXAorCWZpCiAJLWlmIHRlc3QgLWYgJChERVNURElSKSQoQklORElSKS9weXRob24zJChFWEUpIC1vIC1oICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uMyQoRVhFKTsgXAogCXRoZW4gcm0gLWYgJChERVNURElSKSQoQklORElSKS9weXRob24zJChFWEUpOyBcCiAJZWxzZSB0cnVlOyBcCkBAIC0xMTMxLDkgKzExNjksMTQgQEAKIAkJdGVzdC9hdWRpb2RhdGEgXAogCQl0ZXN0L2NhcGF0aCB0ZXN0L2RhdGEgXAogCQl0ZXN0L2Nqa2VuY29kaW5ncyB0ZXN0L2RlY2ltYWx0ZXN0ZGF0YSB0ZXN0L3htbHRlc3RkYXRhIFwKKwkJdGVzdC9laW50cmRhdGEgXAogCQl0ZXN0L2ltZ2hkcmRhdGEgXAogCQl0ZXN0L3N1YnByb2Nlc3NkYXRhIHRlc3Qvc25kaGRyZGF0YSB0ZXN0L3N1cHBvcnQgXAogCQl0ZXN0L3RyYWNlZG1vZHVsZXMgdGVzdC9lbmNvZGVkX21vZHVsZXMgXAorCQl0ZXN0L3Rlc3RfaW1wb3J0IFwKKwkJdGVzdC90ZXN0X2ltcG9ydC9kYXRhIFwKKwkJdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMgXAorCQl0ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9zdWJwa2cgXAogCQl0ZXN0L3Rlc3RfaW1wb3J0bGliL25hbWVzcGFjZV9wa2dzIFwKIAkJdGVzdC90ZXN0X2ltcG9ydGxpYi9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zIFwKIAkJdGVzdC90ZXN0X2ltcG9ydGxpYi9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zL2ZvbyBcCkBAIC0xMjQ2LDcgKzEyODksMTIgQEAKIAkJLWQgJChMSUJERVNUKSAtZiBcCiAJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAogCQkkKERFU1RESVIpJChMSUJERVNUKQotCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICAkKFJVTlNIQVJFRCkgXAorCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCisJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC1PTyAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKKwkJLWQgJChMSUJERVNUKSAtZiBcCisJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAorCQkkKERFU1RESVIpJChMSUJERVNUKQorCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCiAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAogCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAogCQkteCBiYWRzeW50YXggJChERVNURElSKSQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcwpAQCAtMTI1NSw2ICsxMzAzLDEwIEBACiAJCS1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCiAJCS14IGJhZHN5bnRheCAkKERFU1RESVIpJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzCiAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKKwkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgLU9PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAorCQkteCBiYWRzeW50YXggJChERVNURElSKSQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcworCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCiAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9HcmFtbWFyLnR4dAogCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCiAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9QYXR0ZXJuR3JhbW1hci50eHQKQEAgLTEzMzcsNyArMTM4OSw3IEBACiAJCWZpOyBcCiAJZmkKIAkkKElOU1RBTExfREFUQSkgTW9kdWxlcy9jb25maWcuYyAkKERFU1RESVIpJChMSUJQTCkvY29uZmlnLmMKLQkkKElOU1RBTExfREFUQSkgTW9kdWxlcy9weXRob24ubyAkKERFU1RESVIpJChMSUJQTCkvcHl0aG9uLm8KKwkkKElOU1RBTExfREFUQSkgUHJvZ3JhbXMvcHl0aG9uLm8gJChERVNURElSKSQoTElCUEwpL3B5dGhvbi5vCiAJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9Nb2R1bGVzL2NvbmZpZy5jLmluICQoREVTVERJUikkKExJQlBMKS9jb25maWcuYy5pbgogCSQoSU5TVEFMTF9EQVRBKSBNYWtlZmlsZSAkKERFU1RESVIpJChMSUJQTCkvTWFrZWZpbGUKIAkkKElOU1RBTExfREFUQSkgTW9kdWxlcy9TZXR1cCAkKERFU1RESVIpJChMSUJQTCkvU2V0dXAKQEAgLTEzNDgsMTAgKzE0MDAsMTAgQEAKIAkkKElOU1RBTExfU0NSSVBUKSAkKHNyY2RpcikvaW5zdGFsbC1zaCAkKERFU1RESVIpJChMSUJQTCkvaW5zdGFsbC1zaAogCSQoSU5TVEFMTF9TQ1JJUFQpIHB5dGhvbi1jb25maWcucHkgJChERVNURElSKSQoTElCUEwpL3B5dGhvbi1jb25maWcucHkKIAkkKElOU1RBTExfU0NSSVBUKSBweXRob24tY29uZmlnICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uJChMRFZFUlNJT04pLWNvbmZpZwotCUBpZiBbIC1zIE1vZHVsZXMvcHl0aG9uLmV4cCAtYSBcCisJQGlmIFsgLXMgUHJvZ3JhbXMvcHl0aG9uLmV4cCAtYSBcCiAJCSJgZWNobyAkKE1BQ0hERVApIHwgc2VkICdzL15cKC4uLlwpLiovXDEvJ2AiID0gImFpeCIgXTsgdGhlbiBcCiAJCWVjaG87IGVjaG8gIkluc3RhbGxpbmcgc3VwcG9ydCBmaWxlcyBmb3IgYnVpbGRpbmcgc2hhcmVkIGV4dGVuc2lvbiBtb2R1bGVzIG9uIEFJWDoiOyBcCi0JCSQoSU5TVEFMTF9EQVRBKSBNb2R1bGVzL3B5dGhvbi5leHAJCVwKKwkJJChJTlNUQUxMX0RBVEEpIFByb2dyYW1zL3B5dGhvbi5leHAJCVwKIAkJCQkkKERFU1RESVIpJChMSUJQTCkvcHl0aG9uLmV4cDsJCVwKIAkJZWNobzsgZWNobyAiJChMSUJQTCkvcHl0aG9uLmV4cCI7CQlcCiAJCSQoSU5TVEFMTF9TQ1JJUFQpICQoc3JjZGlyKS9Nb2R1bGVzL21ha2V4cF9haXgJXApAQCAtMTUzNCwxMCArMTU4NiwxMyBAQAogCWZpbmQgYnVpbGQgLW5hbWUgJyoucHlbY29dJyAtZXhlYyBybSAtZiB7fSAnOycgfHwgdHJ1ZQogCS1ybSAtZiBweWJ1aWxkZGlyLnR4dAogCS1ybSAtZiBMaWIvbGliMnRvMy8qR3JhbW1hcioucGlja2xlCi0JLXJtIC1mIE1vZHVsZXMvX3Rlc3RlbWJlZCBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliCisJLXJtIC1mIFByb2dyYW1zL190ZXN0ZW1iZWQgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIKKwktcm0gLXJmIGJ1aWxkCiAKIHByb2ZpbGUtcmVtb3ZhbDoKIAlmaW5kIC4gLW5hbWUgJyouZ2M/PycgLWV4ZWMgcm0gLWYge30gJzsnCisJZmluZCAuIC1uYW1lICcqLnByb2ZjbGFuZz8nIC1leGVjIHJtIC1mIHt9ICc7JworCWZpbmQgLiAtbmFtZSAnKi5keW4nIC1leGVjIHJtIC1mIHt9ICc7JwogCXJtIC1mICQoQ09WRVJBR0VfSU5GTykKIAlybSAtcmYgJChDT1ZFUkFHRV9SRVBPUlQpCiAKQEAgLTE1NTgsNyArMTYxMyw3IEBACiAJZG9uZQogCS1ybSAtZiBjb3JlIE1ha2VmaWxlIE1ha2VmaWxlLnByZSBjb25maWcuc3RhdHVzIFwKIAkJTW9kdWxlcy9TZXR1cCBNb2R1bGVzL1NldHVwLmxvY2FsIE1vZHVsZXMvU2V0dXAuY29uZmlnIFwKLQkJTW9kdWxlcy9sZF9zb19haXggTW9kdWxlcy9weXRob24uZXhwIE1pc2MvcHl0aG9uLnBjCisJCU1vZHVsZXMvbGRfc29fYWl4IFByb2dyYW1zL3B5dGhvbi5leHAgTWlzYy9weXRob24ucGMKIAktcm0gLWYgcHl0aG9uKi1nZGIucHkKIAlmaW5kICQoc3JjZGlyKS9bYS16QS1aXSogJygnIC1uYW1lICcqLmZkYycgLW8gLW5hbWUgJyp+JyBcCiAJCQkJICAgICAtbyAtbmFtZSAnW0AsI10qJyAtbyAtbmFtZSAnKi5vbGQnIFwKQEAgLTE2MDUsNyArMTY2MCw3IEBACiAJCS1vIC1wcmludAogCiAjIFBlcmZvcm0gc29tZSB2ZXJpZmljYXRpb24gY2hlY2tzIG9uIGFueSBtb2RpZmllZCBmaWxlcy4KLXBhdGNoY2hlY2s6CitwYXRjaGNoZWNrOiBhbGwKIAkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5CiAKICMgRGVwZW5kZW5jaWVzCmRpZmYgLS1naXQgYS9NaXNjL0FDS1MgYi9NaXNjL0FDS1MKaW5kZXggNjQwMTRjNS4uOTEzNGViOSAxMDA2NDQKLS0tIGEvTWlzYy9BQ0tTCisrKyBiL01pc2MvQUNLUwpAQCAtNDYsNiArNDYsNyBAQAogRXJpayBBbmRlcnPDqW4KIE9saXZlciBBbmRyaWNoCiBSb3NzIEFuZHJ1cworRmFicmljZSBBbmVjaGUKIEp1YW5jYXJsbyBBw7FlegogQ2hyaXMgQW5nZWxpY28KIErDqXLDqW15IEFuZ2VyCkBAIC03MSw2ICs3Miw3IEBACiBTdGlnIEJha2tlbgogR3JlZyBCYWxsCiBMdWlnaSBCYWxsYWJpbworVGhvbWFzIEJhbGxpbmdlcgogSmVmZiBCYWxvZ2gKIE1hbnVlbCBCYWxzZXJhCiBNYXR0IEJhbmR5CkBAIC04OSw2ICs5MSw3IEBACiBDZXNhciBFZHVhcmRvIEJhcnJvcwogRGVzIEJhcnJ5CiBVbGYgQmFydGVsdAorQ2FtcGJlbGwgQmFydG9uCiBEb24gQmFzaGZvcmQKIFBpb3IgQmFzdGlkYQogTmljayBCYXN0aW4KQEAgLTEwMSw2ICsxMDQsNyBAQAogRG9uYWxkIEJlYXVkcnkKIERhdmlkIEJlYXpsZXkKIEpvaG4gQmVjaworSW5nb2xmIEJlY2tlcgogTmVhbCBCZWNrZXIKIFJvYmluIEJlY2tlcgogVG9yc3RlbiBCZWNrZXIKQEAgLTE1Miw2ICsxNTYsNyBAQAogR2F3YWluIEJvbHRvbgogRm9yZXN0IEJvbmQKIEdyZWdvcnkgQm9uZAorTcOpZMOpcmljIEJvcXVpZW4KIE1hdGlhcyBCb3JkZXNlCiBKb25hcyBCb3Jnc3Ryw7ZtCiBKdXJqZW4gQm9zCkBAIC0yMzIsMTAgKzIzNywxMiBAQAogSm9obiBDaGFuZGxlcgogSHllLVNoaWsgQ2hhbmcKIEplZmZyZXkgQ2hhbmcKK0dhdmluIENoYXBwZWxsCiBHb2RlZnJvaWQgQ2hhcGVsbGUKIEJyYWQgQ2hhcG1hbgogR3JlZyBDaGFwbWFuCiBNaXRjaCBDaGFwbWFuCitNYXR0IENoYXB1dAogWW9nZXNoIENoYXVkaGFyaQogRGF2aWQgQ2hhdW0KIE5pY29sYXMgQ2hhdXZhdApAQCAtMzQzLDcgKzM1MCw2IEBACiBZdmVzIERpb25uZQogRGFuaWVsIERpdHRtYXIKIEpvc2lwIERqb2xvbmdhCi1XYWx0ZXIgRMO2cndhbGQKIEphcm9taXIgRG9sZWNlawogSXNtYWlsIERvbm1legogUm9iZXJ0IERvbm9odWUKQEAgLTM3MSw2ICszNzcsNyBAQAogS2FybWVuIER5a3N0cmEKIEpvc2lwIER6b2xvbmdhCiBNYXhpbSBEenVtYW5lbmtvCitXYWx0ZXIgRMO2cndhbGQKIEhhbnMgRWNrYXJkdAogUm9kb2xwaG8gRWNraGFyZHQKIFVscmljaCBFY2toYXJkdApAQCAtNDc4LDYgKzQ4NSw3IEBACiBYYXZpZXIgZGUgR2F5ZQogSGFycnkgSGVucnkgR2ViZWwKIE1hcml1cyBHZWRtaW5hcworSmFuLVBoaWxpcCBHZWhyY2tlCiBUaG9tYXMgR2VsbGVrdW0KIEdhYnJpZWwgR2VuZWxsaW5hCiBDaHJpc3RvcyBHZW9yZ2lvdQpAQCAtNDkwLDYgKzQ5OCw3IEBACiBNaWNoYWVsIEdpbGZpeAogSnVsaWFuIEdpbmRpCiBZYW5uaWNrIEdpbmdyYXMKK05laWwgR2lyZGhhcgogTWF0dCBHaXVjYQogV2ltIEdsZW5uCiBNaWNoYWVsIEdvZGVyYmF1ZXIKQEAgLTUwNCw2ICs1MTMsNyBAQAogRGF2aWQgR29vZGdlcgogSGFucyBkZSBHcmFhZmYKIFRpbSBHcmFoYW0KK0tpbSBHcsOkc21hbgogTmF0aGFuaWVsIEdyYXkKIEVkZHkgRGUgR3JlZWYKIEdyYW50IEdyaWZmaW4KQEAgLTU3OCw2ICs1ODgsNyBAQAogV291dGVyIHZhbiBIZXlzdAogS2Vsc2V5IEhpZ2h0b3dlcgogSmFzb24gSGlsZGVicmFuZAorQWFyb24gSGlsbAogUmljaGllIEhpbmRsZQogS29ucmFkIEhpbnNlbgogRGF2aWQgSG9ibGV5CkBAIC02MTUsNiArNjI2LDcgQEAKIEtlbiBIb3dhcmQKIEJyYWQgSG93ZXMKIE1pa2UgSG95CitCZW4gSG95dAogQ2hpdS1Ic2lhbmcgSHN1CiBDaGloLUhhbyBIdWFuZwogQ2hyaXN0aWFuIEh1ZG9uCkBAIC02MzUsNiArNjQ3LDcgQEAKIEFhcm9uIElsZXMKIExhcnMgSW1taXNjaAogQm9iYnkgSW1wb2xsb25pYQorTmFva2kgSW5hZGEKIE1lYWRvciBJbmdlCiBQZXRlciBJbmdlYnJldHNvbgogVG9ueSBJbmdyYWxkaQpAQCAtNjU3LDE0ICs2NzAsMTcgQEAKIFRob21hcyBKYXJvc2NoCiBKdWhhbmEgSmF1aGlhaW5lbgogUmFqYWdvcGFsYXNhcm1hIEpheWFrcmlzaG5hbgorRGV2aW4gSmVhbnBpZXJyZQogWmJpZ25pZXcgSsSZZHJ6ZWpld3NraS1Tem1lawogSnVsaWVuIEplaGFubmV0CitNdWhhbW1hZCBKZWhhbnplYgogRHJldyBKZW5raW5zCiBGbGVtbWluZyBLasOmciBKZW5zZW4KIFBoaWxpcCBILiBKZW5zZW4KIFBoaWxpcCBKZW52ZXkKIE11blNpYyBKZW9uZwogQ2hyaXMgSmVyZG9uZWsKK0pvZSBKZXZuaWsKIEppbSBKZXdldHQKIFBlZHJvIERpYXogSmltZW5legogT3JqYW4gSm9oYW5zZW4KQEAgLTY3OCw2ICs2OTQsNyBAQAogTmljb2xhcyBKb2x5CiBCcmlhbiBLLiBKb25lcwogRXZhbiBKb25lcworR2xlbm4gSm9uZXMKIEplcmVteSBKb25lcwogUmljaGFyZCBKb25lcwogSXJtZW4gZGUgSm9uZwpAQCAtNzAwLDEyICs3MTcsMTUgQEAKIEphbiBLYW5pcwogUmFmZSBLYXBsYW4KIEphY29iIEthcGxhbi1Nb3NzCitBbGxpc29uIEthcHR1cgogSmFubmUgS2FyaWxhCiBQZXIgw5h5dmluZCBLYXJsc2VuCiBBbnRvbiBLYXN5YW5vdgogTG91IEthdGVzCiBNYWtvdG8gS2F0bwogSGlyb2FraSBLYXdhaQorRG1pdHJ5IEthemFrb3YKK0JyaWFuIEtlYXJucwogU2ViYXN0aWVuIEtlaW0KIFJ5YW4gS2VsbHkKIERhbiBLZW5pZ3NiZXJnCkBAIC03MTYsMTEgKzczNiwxMyBAQAogTGF3cmVuY2UgS2VzdGVsb290CiBWaXZlayBLaGVyYQogRGhpcnUgS2hvbGlhCitBa3NoaXQgS2h1cmFuYQogTWFkcyBLaWlsZXJpY2gKIEphc29uIEtpbGxlbgogSmFuIEtpbQogVGFlayBKb28gS2ltCiBTYW0gS2ltYnJlbAorSmFtZXMgS2luZwogVy4gVHJldm9yIEtpbmcKIFBhdWwgS2lwcGVzCiBTdGV2ZSBLaXJzY2gKQEAgLTc2OCw3ICs3OTAsOSBAQAogQW5kcmV3IEt1Y2hsaW5nCiBEYXZlIEt1aGxtYW4KIEpvbiBLdWhuCitVcGVuZHJhIEt1bWFyCiBUb3NoaW8gS3VyYXRvbWkKK0lsaWEgS3VyZW5rb3YKIFZsYWRpbWlyIEt1c2huaXIKIEVybm8gS3V1c2VsYQogUm9zcyBMYWdlcndhbGwKQEAgLTc5Miw2ICs4MTYsNyBAQAogU2ltb24gTGF3CiBKdWxpYSBMYXdhbGwKIENocmlzIExhd3JlbmNlCitNYXJrIExhd3JlbmNlCiBDaHJpcyBMYXdzCiBCcmlhbiBMZWFpcgogTWF0aGlldSBMZWR1Yy1IYW1lbApAQCAtODMzLDYgKzg1OCw3IEBACiBTaGF3biBMaWdvY2tpCiBNYXJ0aW4gTGlncgogR2VkaW1pbmFzIExpa3RhcmFzCitWaXRvciBkZSBMaW1hCiBHcmFudCBMaW1iZXJnCiBDaHJpc3RvcGhlciBMaW5kYmxhZAogVWxmIEEuIExpbmRncmVuCkBAIC04NDQsNyArODcwLDYgQEAKIE1pcmtvIExpc3MKIE5pY2sgTG9ja3dvb2QKIFN0ZXBoYW5pZSBMb2Nrd29vZAotTWFydGluIHZvbiBMw7Z3aXMKIEh1Z28gTG9wZXMgVGF2YXJlcwogR3VpbGxlcm1vIEzDs3Blei1BbmdsYWRhCiBBbm5lIExvcmQKQEAgLTg1Miw3ICs4NzcsOSBAQAogSnVzdGluIExvdmUKIE5lZCBKYWNrc29uIExvdmVseQogUGV0ZXIgTG92ZXR0CitDaGFsbWVyIExvd2UKIEphc29uIExvd2UKK01hcnRpbiB2b24gTMO2d2lzCiBUb255IExvd25kcwogUmF5IExveXphZ2EKIEthbmctSGFvIChLZW5ueSkgTHUKQEAgLTkwNSw5ICs5MzIsMTEgQEAKIEFybmF1ZCBNYXppbgogUGFtIE1jQSdOdWx0eQogTWF0dCBNY0NsdXJlCitKYWNrIE1jQ3JhY2tlbgogUmViZWNjYSBNY0NyZWFyeQogS2lyayBNY0RvbmFsZAogQ2hyaXMgTWNEb25vdWdoCitNaWNoYWVsIE1jRmFkZGVuCiBHcmVnIE1jRmFybGFuZQogQWxhbiBNY0ludHlyZQogSmVzc2ljYSBNY0tlbGxhcgpAQCAtMTAxMyw2ICsxMDQyLDcgQEAKIEpvaG4gTydDb25ub3IKIEtldmluIE8nQ29ubm9yCiBUaW0gTydNYWxsZXkKK0RhbiBPJ1JlaWxseQogWm9va28gTydXaGllbGFjcm9ueAogQWFyb24gT2FrbGV5CiBKYW1lcyBPYWtsZXkKQEAgLTEwNTQsMTAgKzEwODQsMTIgQEAKIEFsZXhhbmRyZSBQYXJlbnRlYXUKIERhbiBQYXJpc2llbgogV2lsbGlhbSBQYXJrCitDbGF1ZGUgUGFyb3oKIEhlaWtraSBQYXJ0YW5lbgogSGFycmkgUGFzYW5lbgogR2HDq2wgUGFzZ3JpbWF1ZAogQXNoaXNoIE5pdGluIFBhdGlsCitBbGVjc2FuZHJ1IFBhdHJhc2N1CiBSYW5keSBQYXVzY2gKIFNhbXVlbGUgUGVkcm9uaQogSnVzdGluIFBlZWwKQEAgLTExMzEsNiArMTE2Myw4IEBACiBSYW0gUmFjaHVtCiBKw6lyw7RtZSBSYWRpeAogQnVydG9uIFJhZG9ucworQWJoaWxhc2ggUmFqCitTaG9yeWEgUmFqCiBKZWZmIFJhbW5hbmkKIEJyb2RpZSBSYW8KIFNlbmtvIFJhc2ljCkBAIC0xMTczLDYgKzEyMDcsNyBAQAogRGF2aWRlIFJpenpvCiBBbnRob255IFJvYWNoCiBDYXJsIFJvYmJlbgorQmVuIFJvYmVydHMKIE1hcmsgUm9iZXJ0cwogQW5keSBSb2JpbnNvbgogSmltIFJvYmluc29uCkBAIC0xMTg5LDggKzEyMjQsMTAgQEAKIFRpbW90aHkgUm9zY29lCiBFcmlrIFJvc2UKIE1hcmsgUm9zZW1hbgorSm9zaCBSb3NlbmJlcmcKIEppbSBSb3NraW5kCiBCcmlhbiBSb3NuZXIKK0lnbmFjaW8gUm9zc2kKIEd1aWRvIHZhbiBSb3NzdW0KIEp1c3QgdmFuIFJvc3N1bQogSHVnbyB2YW4gUm9zc3VtCkBAIC0xMjA3LDYgKzEyNDQsNyBAQAogQXVkdW4gUy4gUnVuZGUKIEVyYW4gUnVuZHN0ZWluCiBSYXVsaSBSdW9ob25lbgorTGF1cmEgUnVwcHJlY2h0CiBKZWZmIFJ1c2gKIFNhbSBSdXNoaW5nCiBNYXJrIFJ1c3NlbGwKQEAgLTEyMjEsNiArMTI1OSw3IEBACiBTdW1hbiBTYWhhCiBIYWppbWUgU2FpdG91CiBHZW9yZ2UgU2Fra2lzCitWaWN0b3IgU2FsZ2FkbwogUmljaCBTYWx6CiBLZXZpbiBTYW1ib3JuCiBBZHJpYW4gU2FtcHNvbgpAQCAtMTI3Myw2ICsxMzEyLDcgQEAKIERlbmlzIFNldmVyc29uCiBJYW4gU2V5ZXIKIERtaXRyeSBTaGFjaG5ldgorQW5pc2ggU2hhaAogRGFuaWVsIFNoYWhhZgogTWFyayBTaGFubm9uCiBIYSBTaGFvCkBAIC0xMzI2LDYgKzEzNjYsNyBAQAogRXZnZW55IFNvbG9ndWJvdgogQ29keSBTb21lcnZpbGxlCiBFZG9hcmRvIFNwYWRvbGluaQorR2VvZmZyZXkgU3BlYXIKIENsYXkgU3BlbmNlCiBTdGVmYW4gU3BlcmxpbmcKIE5pY2hvbGFzIFNwaWVzCkBAIC0xMzcyLDYgKzE0MTMsNyBAQAogUMOpdGVyIFN6YWLDswogSm9obiBTemFrbWVpc3RlcgogQW1pciBTemVrZWx5CitNYWNpZWogU3p1bGlrCiBBcmZyZXZlciBGcmVodGVzIFRhaWZlcnNhciBBcmFoZXNpcwogSGlkZWFraSBUYWthaGFzaGkKIFRha2FzZSBBcmloaXJvCkBAIC0xMzg1LDYgKzE0MjcsNyBAQAogQW15IFRheWxvcgogTW9udHkgVGF5bG9yCiBBbmF0b2x5IFRlY2h0b25paworR3VzdGF2byBUZW1wbGUKIE1pa2hhaWwgVGVyZWtob3YKIFZpY3RvciBUZXJyw7NuCiBSaWNoYXJkIE0uIFRldwpAQCAtMTQxOCw2ICsxNDYxLDcgQEAKIE5hdGhhbiBUcmFwdXp6YW5vCiBMYXVyZW5jZSBUcmF0dAogQWxiZXJ0byBUcmV2aW5vCitNYXlhbmsgVHJpcGF0aGkKIE1hdHRoaWFzIFRyb2ZmYWVzCiBUb20gVHJvbWV5CiBKb2huIFRyb21wCkBAIC0xNDQwLDkgKzE0ODQsMTEgQEAKIERhbmllbCBVcmJhbgogTWljaGFlbCBVcm1hbgogSGVjdG9yIFVydHViaWEKK0x1a2FzIFZhY2VrCiBWaWxsZSBWYWluaW8KIEFuZGkgVmFqZGEKIENhc2UgVmFuIEhvcnNlbgorSm9obiBNYXJrIFZhbmRlbmJlcmcKIEt5bGUgVmFuZGVyQmVlawogQW5kcmV3IFZhbnQKIEF0dWwgVmFybWEKQEAgLTE0NTUsNiArMTUwMSw3IEBACiBKYWFwIFZlcm1ldWxlbgogTmlraXRhIFZldG9zaGtpbgogQWwgVmV6emEKK1BldHIgVmljdG9yaW4KIEphY3F1ZXMgQS4gVmlkcmluZQogSm9obiBWaWVnYQogRGlubyBWaWVobGFuZApAQCAtMTQ2NCwxMSArMTUxMSwxNCBAQAogUGF1bGkgVmlydGFuZW4KIEZyYW5rIFZpc3NlcgogSm9oYW5uZXMgVm9nZWwKK01pY2hhZWwgVm9ndAorUmFkdSBWb2ljaWxhcwogQWxleCBWb2xrb3YKIEd1aWRvIFZyYW5rZW4KIE1hcnRpam4gVnJpZXMKIFNqb2VyZCBkZSBWcmllcwogSm9uYXMgV2FnbmVyCitEYW5pZWwgV2FnbmVyLUhhbGwKIE5pa2kgVy4gV2FpYmVsCiBXb2p0ZWsgV2FsY3phawogQ2hhcmxlcyBXYWxkbWFuCkBAIC0xNDg3LDYgKzE1MzcsNyBAQAogRGF2aWQgV2F0c29uCiBBYXJvbiBXYXR0ZXJzCiBIZW5yaWsgV2ViZXIKK0xlb24gV2ViZXIKIENvcnJhbiBXZWJzdGVyCiBHbHluIFdlYnN0ZXIKIFBoaWwgV2Vic3RlcgpAQCAtMTUwNiw2ICsxNTU3LDcgQEAKIEdlcnJ5IFdpZW5lcgogRnJhbmsgV2llcnpiaWNraQogU2FudG9zbyBXaWpheWEKK0NocmlzIFdpbGNveAogQnJ5Y2UgIlpvb2tvIiBXaWxjb3gtTydIZWFybgogVGltb3RoeSBXaWxkCiBKYWt1YiBXaWxrCkBAIC0xNTE2LDYgKzE1NjgsNyBAQAogQ2Fyb2wgV2lsbGluZwogU3RldmVuIFdpbGxpcwogRnJhbmsgV2lsbGlzb24KK0RhdmlkIFdpbHNvbgogR2VvZmYgV2lsc29uCiBHcmVnIFYuIFdpbHNvbgogSiBEZXJlayBXaWxzb24KQEAgLTE1NDEsMTEgKzE1OTQsMTMgQEAKIERhcnJlbiBXb3JyYWxsCiBUaG9tYXMgV291dGVycwogRGFuaWVsIFdvem5pYWsKK1dlaSBXdQogSGVpa28gV3VuZHJhbQogRG91ZyBXeWF0dAogWGlhbmcgWmhhbmcKIFJvYmVydCBYaWFvCiBGbG9yZW50IFhpY2x1bmEKK0Fybm9uIFlhYXJpCiBIaXJva2F6dSBZYW1hbW90bwogS2EtUGluZyBZZWUKIEphc29uIFllbwpkaWZmIC0tZ2l0IGEvTWlzYy9ISVNUT1JZIGIvTWlzYy9ISVNUT1JZCmluZGV4IGE5ZTI5MTAuLjVlNWJjNjAgMTAwNjQ0Ci0tLSBhL01pc2MvSElTVE9SWQorKysgYi9NaXNjL0hJU1RPUlkKQEAgLTE4LDEzICsxOCwxMyBAQAogCiAtIElzc3VlICMxNjA0NjogRml4IGxvYWRpbmcgc291cmNlbGVzcyBsZWdhY3kgLnB5byBmaWxlcy4KIAotLSBJc3N1ZSAjMTYwNjA6IEZpeCByZWZjb3VudGluZyBidWcgd2hlbiBfX3RydW5jX18gcmV0dXJucyBhbiBvYmplY3QKLSAgd2hvc2UgX19pbnRfXyBnaXZlcyBhIG5vbi1pbnRlZ2VyLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKy0gSXNzdWUgIzE2MDYwOiBGaXggcmVmY291bnRpbmcgYnVnIHdoZW4gYF9fdHJ1bmNfXygpYCByZXR1cm5zIGFuIG9iamVjdCB3aG9zZQorICBgX19pbnRfXygpYCBnaXZlcyBhIG5vbi1pbnRlZ2VyLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAogRXh0ZW5zaW9uIE1vZHVsZXMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzE2MDEyOiBGaXggYSByZWdyZXNzaW9uIGluIHB5ZXhwYXQuIFRoZSBwYXJzZXIncyBVc2VGb3JlaWduRFREKCkKKy0gSXNzdWUgIzE2MDEyOiBGaXggYSByZWdyZXNzaW9uIGluIHB5ZXhwYXQuIFRoZSBwYXJzZXIncyBgVXNlRm9yZWlnbkRURCgpYAogICBtZXRob2QgZG9lc24ndCByZXF1aXJlIGFuIGFyZ3VtZW50IGFnYWluLgogCiAKQEAgLTM2LDI2ICszNiwyNiBAQAogQ29yZSBhbmQgQnVpbHRpbnMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzE1OTAwOiBGaXggcmVmZXJlbmNlIGxlYWsgaW4gUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoKS4KKy0gSXNzdWUgIzE1OTAwOiBGaXggcmVmZXJlbmNlIGxlYWsgaW4gYFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKClgLgogCiAtIElzc3VlICMxNTkyNjogRml4IGNyYXNoIGFmdGVyIG11bHRpcGxlIHJlaW5pdGlhbGl6YXRpb25zIG9mIHRoZSBpbnRlcnByZXRlci4KIAogLSBJc3N1ZSAjMTU4OTU6IEZpeCBGSUxFIHBvaW50ZXIgbGVhayBpbiBvbmUgZXJyb3IgYnJhbmNoIG9mCi0gIFB5UnVuX1NpbXBsZUZpbGVFeEZsYWdzKCkgd2hlbiBmaWxlbmFtZSBwb2ludHMgdG8gYSBweWMvcHlvIGZpbGUsIGNsb3NlaXQKLSAgaXMgZmFsc2UgYW4gYW5kIHNldF9tYWluX2xvYWRlcigpIGZhaWxzLgorICBgUHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3MoKWAgd2hlbiBmaWxlbmFtZSBwb2ludHMgdG8gYSBweWMvcHlvIGZpbGUsIGNsb3NlaXQgaXMKKyAgZmFsc2UgYW4gYW5kIHNldF9tYWluX2xvYWRlcigpIGZhaWxzLgogCiAtIEZpeGVzIGZvciBhIGZldyBjcmFzaCBhbmQgbWVtb3J5IGxlYWsgcmVncmVzc2lvbnMgZm91bmQgYnkgQ292ZXJpdHkuCiAKIExpYnJhcnkKIC0tLS0tLS0KIAotLSBJc3N1ZSAjMTU4ODI6IENoYW5nZSBfZGVjaW1hbCB0byBhY2NlcHQgYW55IGNvZWZmaWNpZW50IHR1cGxlIHdoZW4KLSAgY29uc3RydWN0aW5nIGluZmluaXRpZXMuIFRoaXMgaXMgZG9uZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKLSAgd2l0aCBkZWNpbWFsLnB5OiBJbmZpbml0eSBjb2VmZmljaWVudHMgYXJlIHVuZGVmaW5lZCBpbiBfZGVjaW1hbAotICAoaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBzcGVjaWZpY2F0aW9uKS4KKy0gSXNzdWUgIzE1ODgyOiBDaGFuZ2UgYF9kZWNpbWFsYCB0byBhY2NlcHQgYW55IGNvZWZmaWNpZW50IHR1cGxlIHdoZW4KKyAgY29uc3RydWN0aW5nIGluZmluaXRpZXMuIFRoaXMgaXMgZG9uZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aAorICBkZWNpbWFsLnB5OiBJbmZpbml0eSBjb2VmZmljaWVudHMgYXJlIHVuZGVmaW5lZCBpbiBfZGVjaW1hbCAoaW4gYWNjb3JkYW5jZQorICB3aXRoIHRoZSBzcGVjaWZpY2F0aW9uKS4KIAotLSBJc3N1ZSAjMTU5MjU6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gZW1haWwudXRpbCB3aGVyZSB0aGUgcGFyc2VkYXRlKCkgYW5kCi0gIHBhcnNlZGF0ZV90eigpIGZ1bmN0aW9ucyBkaWQgbm90IHJldHVybiBOb25lIGFueW1vcmUgd2hlbiB0aGUgYXJndW1lbnQgY291bGQKKy0gSXNzdWUgIzE1OTI1OiBGaXggYSByZWdyZXNzaW9uIGluIGBlbWFpbC51dGlsYCB3aGVyZSB0aGUgYHBhcnNlZGF0ZSgpYCBhbmQKKyAgYHBhcnNlZGF0ZV90eigpYCBmdW5jdGlvbnMgZGlkIG5vdCByZXR1cm4gTm9uZSBhbnltb3JlIHdoZW4gdGhlIGFyZ3VtZW50IGNvdWxkCiAgIG5vdCBiZSBwYXJzZWQuCiAKIEV4dGVuc2lvbiBNb2R1bGVzCkBAIC02Nyw3ICs2Nyw3IEBACiAtIElzc3VlICMxNTk3NzogRml4IG1lbW9yeSBsZWFrIGluIE1vZHVsZXMvX3NzbC5jIHdoZW4gdGhlIGZ1bmN0aW9uCiAgIF9zZXRfbnBuX3Byb3RvY29scygpIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcywgdGhhbmtzIHRvIERhbmllbCBTb21tZXJtYW5uLgogCi0tIElzc3VlICMxNTk2OTogZmF1bHRoYW5kbGVyIG1vZHVsZTogcmVuYW1lIGR1bXBfdHJhY2ViYWNrc19sYXRlcigpIHRvCistIElzc3VlICMxNTk2OTogYGZhdWx0aGFuZGxlcmAgbW9kdWxlOiByZW5hbWUgZHVtcF90cmFjZWJhY2tzX2xhdGVyKCkgdG8KICAgZHVtcF90cmFjZWJhY2tfbGF0ZXIoKSBhbmQgY2FuY2VsX2R1bXBfdHJhY2ViYWNrc19sYXRlcigpIHRvCiAgIGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpLgogCkBAIC04MywzNSArODMsMzcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tCiAKIC0gSXNzdWUgIzEzOTkyOiBUaGUgdHJhc2hjYW4gbWVjaGFuaXNtIGlzIG5vdyB0aHJlYWQtc2FmZS4gIFRoaXMgZWxpbWluYXRlcwotICBzcG9yYWRpYyBjcmFzaGVzIGluIG11bHRpLXRocmVhZCBwcm9ncmFtcyB3aGVuIHNldmVyYWwgbG9uZyBkZWFsbG9jYXRvcgotICBjaGFpbnMgcmFuIGNvbmN1cnJlbnRseSBhbmQgaW52b2x2ZWQgc3ViY2xhc3NlcyBvZiBidWlsdC1pbiBjb250YWluZXIKLSAgdHlwZXMuCisgIHNwb3JhZGljIGNyYXNoZXMgaW4gbXVsdGktdGhyZWFkIHByb2dyYW1zIHdoZW4gc2V2ZXJhbCBsb25nIGRlYWxsb2NhdG9yIGNoYWlucworICByYW4gY29uY3VycmVudGx5IGFuZCBpbnZvbHZlZCBzdWJjbGFzc2VzIG9mIGJ1aWx0LWluIGNvbnRhaW5lciB0eXBlcy4KIAotLSBJc3N1ZSAjMTU3ODQ6IE1vZGlmeSBPU0Vycm9yLl9fc3RyX18oKSB0byBiZXR0ZXIgZGlzdGluZ3Vpc2ggYmV0d2VlbgotICBlcnJubyBlcnJvciBudW1iZXJzIGFuZCBXaW5kb3dzIGVycm9yIG51bWJlcnMuCistIElzc3VlICMxNTc4NDogTW9kaWZ5IGBPU0Vycm9yYC5fX3N0cl9fKCkgdG8gYmV0dGVyIGRpc3Rpbmd1aXNoIGJldHdlZW4gZXJybm8KKyAgZXJyb3IgbnVtYmVycyBhbmQgV2luZG93cyBlcnJvciBudW1iZXJzLgogCiAtIElzc3VlICMxNTc4MTogRml4IHR3byBzbWFsbCByYWNlIGNvbmRpdGlvbnMgaW4gaW1wb3J0J3MgbW9kdWxlIGxvY2tpbmcuCiAKIExpYnJhcnkKIC0tLS0tLS0KIAotLSBJc3N1ZSAjMTU4NDc6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gYXJncGFyc2UsIHdoaWNoIGRpZCBub3QgYWNjZXB0IHR1cGxlcwotICBhcyBhcmd1bWVudCBsaXN0cyBhbnltb3JlLgorLSBJc3N1ZSAjMTcxNTg6IEFkZCAnc3ltYm9scycgdG8gaGVscCgpIHdlbGNvbWUgbWVzc2FnZTsgY2xhcmlmeQorICAnbW9kdWxlcyBzcGFtJyBtZXNzYWdlcy4KIAotLSBJc3N1ZSAjMTU4Mjg6IFJlc3RvcmUgc3VwcG9ydCBmb3IgQyBleHRlbnNpb25zIGluIGltcC5sb2FkX21vZHVsZSgpLgorLSBJc3N1ZSAjMTU4NDc6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gYXJncGFyc2UsIHdoaWNoIGRpZCBub3QgYWNjZXB0IHR1cGxlcyBhcworICBhcmd1bWVudCBsaXN0cyBhbnltb3JlLgogCi0tIElzc3VlICMxNTM0MDogRml4IGltcG9ydGluZyB0aGUgcmFuZG9tIG1vZHVsZSB3aGVuIC9kZXYvdXJhbmRvbSBjYW5ub3QKLSAgYmUgb3BlbmVkLiAgVGhpcyB3YXMgYSByZWdyZXNzaW9uIGNhdXNlZCBieSB0aGUgaGFzaCByYW5kb21pemF0aW9uIHBhdGNoLgorLSBJc3N1ZSAjMTU4Mjg6IFJlc3RvcmUgc3VwcG9ydCBmb3IgQyBleHRlbnNpb25zIGluIGBpbXAubG9hZF9tb2R1bGUoKWAuCiAKLS0gSXNzdWUgIzEwNjUwOiBEZXByZWNhdGUgdGhlIHdhdGNoZXhwIHBhcmFtZXRlciBvZiB0aGUgRGVjaW1hbC5xdWFudGl6ZSgpCistIElzc3VlICMxNTM0MDogRml4IGltcG9ydGluZyB0aGUgcmFuZG9tIG1vZHVsZSB3aGVuIGBgL2Rldi91cmFuZG9tYGAgY2Fubm90IGJlCisgIG9wZW5lZC4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBjYXVzZWQgYnkgdGhlIGhhc2ggcmFuZG9taXphdGlvbiBwYXRjaC4KKworLSBJc3N1ZSAjMTA2NTA6IERlcHJlY2F0ZSB0aGUgd2F0Y2hleHAgcGFyYW1ldGVyIG9mIHRoZSBgRGVjaW1hbC5xdWFudGl6ZSgpYAogICBtZXRob2QuCiAKLS0gSXNzdWUgIzE1Nzg1OiBNb2RpZnkgd2luZG93LmdldF93Y2goKSBBUEkgb2YgdGhlIGN1cnNlcyBtb2R1bGU6IHJldHVybgotICBhIGNoYXJhY3RlciBmb3IgbW9zdCBrZXlzLCBhbmQgYW4gaW50ZWdlciBmb3Igc3BlY2lhbCBrZXlzLCBpbnN0ZWFkIG9mCi0gIGFsd2F5cyByZXR1cm5pbmcgYW4gaW50ZWdlci4gU28gaXQgaXMgbm93IHBvc3NpYmxlIHRvIGRpc3Rpbmd1aXNoIHNwZWNpYWwKLSAga2V5cyBsaWtlIGtleXBhZCBrZXlzLgorLSBJc3N1ZSAjMTU3ODU6IE1vZGlmeSBgd2luZG93LmdldF93Y2goKWAgQVBJIG9mIHRoZSBjdXJzZXMgbW9kdWxlOiByZXR1cm4gYQorICBjaGFyYWN0ZXIgZm9yIG1vc3Qga2V5cywgYW5kIGFuIGludGVnZXIgZm9yIHNwZWNpYWwga2V5cywgaW5zdGVhZCBvZiBhbHdheXMKKyAgcmV0dXJuaW5nIGFuIGludGVnZXIuIFNvIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBkaXN0aW5ndWlzaCBzcGVjaWFsIGtleXMgbGlrZQorICBrZXlwYWQga2V5cy4KIAotLSBJc3N1ZSAjMTQyMjM6IEZpeCB3aW5kb3cuYWRkY2goKSBvZiB0aGUgY3Vyc2VzIG1vZHVsZSBmb3Igc3BlY2lhbCBjaGFyYWN0ZXJzCistIElzc3VlICMxNDIyMzogRml4IGB3aW5kb3cuYWRkY2goKWAgb2YgdGhlIGN1cnNlcyBtb2R1bGUgZm9yIHNwZWNpYWwgY2hhcmFjdGVycwogICBsaWtlIGN1cnNlcy5BQ1NfSExJTkU6IHRoZSBQeXRob24gZnVuY3Rpb24gYWRkY2goaW50KSBhbmQgYWRkY2goYnl0ZXMpIGlzIG5vdwogICBjYWxsaW5nIHRoZSBDIGZ1bmN0aW9uIHdhZGRjaCgpL212d2FkZGNoKCkgKGFzIGl0IHdhcyBkb25lIGluIFB5dGhvbiAzLjIpLAogICBpbnN0ZWFkIG9mIHdhZGRfd2NoKCkvbXZ3YWRkX3djaCgpLiBUaGUgUHl0aG9uIGZ1bmN0aW9uIGFkZGNoKHN0cikgaXMgc3RpbGwKQEAgLTEyNywxMCArMTI5LDEwIEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzE1ODE0OiBUaGUgbWVtb3J5dmlldyBlbmhhbmNlbWVudHMgaW4gMy4zLjAgYWNjaWRlbnRhbGx5IHBlcm1pdHRlZAotICB0aGUgaGFzaGluZyBvZiBtdWx0aS1kaW1lbnNpb25hbCBtZW1vcnZpZXdzIGFuZCBtZW1vcnl2aWV3cyB3aXRoIG11bHRpLWJ5dGUKLSAgaXRlbSBmb3JtYXRzLiBUaGUgaW50ZW5kZWQgcmVzdHJpY3Rpb25zIGhhdmUgbm93IGJlZW4gZG9jdW1lbnRlZCAtIHRoZXkKLSAgd2lsbCBiZSBjb3JyZWN0bHkgZW5mb3JjZWQgaW4gMy4zLjEKKy0gSXNzdWUgIzE1ODE0OiBUaGUgbWVtb3J5dmlldyBlbmhhbmNlbWVudHMgaW4gMy4zLjAgYWNjaWRlbnRhbGx5IHBlcm1pdHRlZCB0aGUKKyAgaGFzaGluZyBvZiBtdWx0aS1kaW1lbnNpb25hbCBtZW1vcnZpZXdzIGFuZCBtZW1vcnl2aWV3cyB3aXRoIG11bHRpLWJ5dGUgaXRlbQorICBmb3JtYXRzLiBUaGUgaW50ZW5kZWQgcmVzdHJpY3Rpb25zIGhhdmUgbm93IGJlZW4gZG9jdW1lbnRlZCAtIHRoZXkgd2lsbCBiZQorICBjb3JyZWN0bHkgZW5mb3JjZWQgaW4gMy4zLjEuCiAKIAogV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgUmVsZWFzZSBDYW5kaWRhdGUgMT8KQEAgLTE0NCwxMzEgKzE0NiwxMjMgQEAKIC0gSXNzdWUgIzE1NTczOiBtZW1vcnl2aWV3IGNvbXBhcmlzb25zIGFyZSBub3cgcGVyZm9ybWVkIGJ5IHZhbHVlIHdpdGggZnVsbAogICBzdXBwb3J0IGZvciBhbnkgdmFsaWQgc3RydWN0IG1vZHVsZSBmb3JtYXQgZGVmaW5pdGlvbi4KIAotLSBJc3N1ZSAjMTUzMTY6IFdoZW4gYW4gaXRlbSBpbiB0aGUgZnJvbWxpc3QgZm9yIF9faW1wb3J0X18gZG9lc24ndCBleGlzdCwKKy0gSXNzdWUgIzE1MzE2OiBXaGVuIGFuIGl0ZW0gaW4gdGhlIGZyb21saXN0IGZvciBgX19pbXBvcnRfXygpYCBkb2Vzbid0IGV4aXN0LAogICBkb24ndCByYWlzZSBhbiBlcnJvciwgYnV0IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYXMgcGFydCBvZiBhbiBpbXBvcnQgZG8KICAgbGV0IHRoYXQgcHJvcGFnYXRlLgogCi0tIElzc3VlICMxNTc3ODogZW5zdXJlIHRoYXQgc3RyKEltcG9ydEVycm9yKG1zZykpIHJldHVybnMgYSBzdHIKLSAgZXZlbiB3aGVuIG1zZyBpc24ndCBhIHN0ci4KKy0gSXNzdWUgIzE1Nzc4OiBFbnN1cmUgdGhhdCBgYHN0cihJbXBvcnRFcnJvcihtc2cpKWBgIHJldHVybnMgYSBzdHIgZXZlbiB3aGVuCisgIG1zZyBpc24ndCBhIHN0ci4KIAotLSBJc3N1ZSAjMjA1MTogU291cmNlIGZpbGUgcGVybWlzc2lvbiBiaXRzIGFyZSBvbmNlIGFnYWluIGNvcnJlY3RseQotICBjb3BpZWQgdG8gdGhlIGNhY2hlZCBieXRlY29kZSBmaWxlLiAoVGhlIG1pZ3JhdGlvbiB0byBpbXBvcnRsaWIKLSAgcmVpbnRyb2R1Y2VkIHRoaXMgcHJvYmxlbSBiZWNhdXNlIHRoZXNlIHdhcyBubyByZWdyZXNzaW9uIHRlc3QuIEEgdGVzdAotICBoYXMgYmVlbiBhZGRlZCBhcyBwYXJ0IG9mIHRoaXMgcGF0Y2gpCistIElzc3VlICMyMDUxOiBTb3VyY2UgZmlsZSBwZXJtaXNzaW9uIGJpdHMgYXJlIG9uY2UgYWdhaW4gY29ycmVjdGx5IGNvcGllZCB0bworICB0aGUgY2FjaGVkIGJ5dGVjb2RlIGZpbGUuIChUaGUgbWlncmF0aW9uIHRvIGltcG9ydGxpYiByZWludHJvZHVjZWQgdGhpcworICBwcm9ibGVtIGJlY2F1c2UgdGhlc2Ugd2FzIG5vIHJlZ3Jlc3Npb24gdGVzdC4gQSB0ZXN0IGhhcyBiZWVuIGFkZGVkIGFzIHBhcnQgb2YKKyAgdGhpcyBwYXRjaCkKIAotLSBJc3N1ZSAjMTU3NjE6IEZpeCBjcmFzaCB3aGVuIFBZVEhPTkVYRUNVVEFCTEUgaXMgc2V0IG9uIE1hYyBPUyBYLgorLSBJc3N1ZSAjMTU3NjE6IEZpeCBjcmFzaCB3aGVuIGBgUFlUSE9ORVhFQ1VUQUJMRWBgIGlzIHNldCBvbiBNYWMgT1MgWC4KIAotLSBJc3N1ZSAjMTU3MjY6IEZpeCBpbmNvcnJlY3QgYm91bmRzIGNoZWNraW5nIGluIFB5U3RhdGVfRmluZE1vZHVsZS4KLSAgUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgorLSBJc3N1ZSAjMTU3MjY6IEZpeCBpbmNvcnJlY3QgYm91bmRzIGNoZWNraW5nIGluIFB5U3RhdGVfRmluZE1vZHVsZS4gIFBhdGNoIGJ5CisgIFJvYmluIFNjaHJlaWJlci4KIAotLSBJc3N1ZSAjMTU2MDQ6IFVwZGF0ZSB1c2VzIG9mIFB5T2JqZWN0X0lzVHJ1ZSgpIHRvIGNoZWNrIGZvciBhbmQgaGFuZGxlCistIElzc3VlICMxNTYwNDogVXBkYXRlIHVzZXMgb2YgYFB5T2JqZWN0X0lzVHJ1ZSgpYCB0byBjaGVjayBmb3IgYW5kIGhhbmRsZQogICBlcnJvcnMgY29ycmVjdGx5LiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjMTQ4NDY6IGltcG9ydGxpYi5GaWxlRmluZGVyIG5vdyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIHRoZQotICBkaXJlY3RvcnkgYmVpbmcgc2VhcmNoZWQgaXMgcmVtb3ZlZCBhZnRlciBhIHByZXZpb3VzIGltcG9ydCBhdHRlbXB0CistIElzc3VlICMxNDg0NjogYGltcG9ydGxpYi5GaWxlRmluZGVyYCBub3cgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSB0aGUgZGlyZWN0b3J5CisgIGJlaW5nIHNlYXJjaGVkIGlzIHJlbW92ZWQgYWZ0ZXIgYSBwcmV2aW91cyBpbXBvcnQgYXR0ZW1wdC4KIAogTGlicmFyeQogLS0tLS0tLQogCi0tIElzc3VlICMxMzM3MDogRW5zdXJlIHRoYXQgY3R5cGVzIHdvcmtzIG9uIE1hYyBPUyBYIHdoZW4gUHl0aG9uIGlzCi0gIGNvbXBpbGVkIHVzaW5nIHRoZSBjbGFuZyBjb21waWxlcgorLSBJc3N1ZSAjMTMzNzA6IEVuc3VyZSB0aGF0IGN0eXBlcyB3b3JrcyBvbiBNYWMgT1MgWCB3aGVuIFB5dGhvbiBpcyBjb21waWxlZAorICB1c2luZyB0aGUgY2xhbmcgY29tcGlsZXIuCiAKLS0gSXNzdWUgIzEzMDcyOiBUaGUgYXJyYXkgbW9kdWxlJ3MgJ3UnIGZvcm1hdCBjb2RlIGlzIG5vdyBkZXByZWNhdGVkIGFuZAotICB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDQuMC4KKy0gSXNzdWUgIzEzMDcyOiBUaGUgYXJyYXkgbW9kdWxlJ3MgJ3UnIGZvcm1hdCBjb2RlIGlzIG5vdyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlCisgIHJlbW92ZWQgaW4gUHl0aG9uIDQuMC4KIAogLSBJc3N1ZSAjMTU1NDQ6IEZpeCBEZWNpbWFsLl9fZmxvYXRfXyB0byB3b3JrIHdpdGggcGF5bG9hZC1jYXJyeWluZyBOYU5zLgogCi0tIElzc3VlICMxNTI0OTogQnl0ZXNHZW5lcmF0b3Igbm93IGNvcnJlY3RseSBtYW5nbGVzIEZyb20gbGluZXMgKHdoZW4KKy0gSXNzdWUgIzE1Nzc2OiBBbGxvdyBweXZlbnYgdG8gd29yayBpbiBleGlzdGluZyBkaXJlY3Rvcnkgd2l0aCAtLWNsZWFuLgorCistIElzc3VlICMxNTI0OTogZW1haWwncyBCeXRlc0dlbmVyYXRvciBub3cgY29ycmVjdGx5IG1hbmdsZXMgRnJvbSBsaW5lcyAod2hlbgogICByZXF1ZXN0ZWQpIGV2ZW4gaWYgdGhlIGJvZHkgY29udGFpbnMgdW5kZWNvZGFibGUgYnl0ZXMuCiAKIC0gSXNzdWUgIzE1Nzc3OiBGaXggYSByZWZsZWFrIGluIF9wb3NpeHN1YnByb2Nlc3MuCiAKLS0gSXNzdWUgIyM2NjUxOTQ6IFVwZGF0ZSBlbWFpbC51dGlscy5sb2NhbHRpbWUgdG8gdXNlIGRhdGV0aW1lLmFzdGltZXpvbmUgYW5kCistIElzc3VlICMjNjY1MTk0OiBVcGRhdGUgYGVtYWlsLnV0aWxzLmxvY2FsdGltZWAgdG8gdXNlIGRhdGV0aW1lLmFzdGltZXpvbmUgYW5kCiAgIGNvcnJlY3RseSBoYW5kbGUgaGlzdG9yaWMgY2hhbmdlcyBpbiBVVEMgb2Zmc2V0cy4KIAogLSBJc3N1ZSAjMTUxOTk6IEZpeCBKYXZhU2NyaXB0J3MgZGVmYXVsdCBNSU1FIHR5cGUgdG8gYXBwbGljYXRpb24vamF2YXNjcmlwdC4KICAgUGF0Y2ggYnkgQm9odXNsYXYgS2FicmRhLgogCi0tIElzc3VlICMxMjY0MzogY29kZS5JbnRlcmFjdGl2ZUNvbnNvbGUgbm93IHJlc3BlY3RzIHN5cy5leGNlcHRob29rIHdoZW4KLSAgZGlzcGxheWluZyBleGNlcHRpb25zIChQYXRjaCBieSBBYXJvbiBJbGVzKQorLSBJc3N1ZSAjMTI2NDM6IGBjb2RlLkludGVyYWN0aXZlQ29uc29sZWAgbm93IHJlc3BlY3RzIGBzeXMuZXhjZXB0aG9va2Agd2hlbgorICBkaXNwbGF5aW5nIGV4Y2VwdGlvbnMuICBQYXRjaCBieSBBYXJvbiBJbGVzLgogCi0tIElzc3VlICMxMzU3OTogc3RyaW5nLkZvcm1hdHRlciBub3cgdW5kZXJzdGFuZHMgdGhlICdhJyBjb252ZXJzaW9uIHNwZWNpZmllci4KKy0gSXNzdWUgIzEzNTc5OiBgc3RyaW5nLkZvcm1hdHRlcmAgbm93IHVuZGVyc3RhbmRzIHRoZSAnYScgY29udmVyc2lvbiBzcGVjaWZpZXIuCiAKLS0gSXNzdWUgIzE1NzkzOiBTdGFjayBjb3JydXB0aW9uIGluIHNzbC5SQU5EX2VnZCgpLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTU5NTogRml4IHN1YnByb2Nlc3MuUG9wZW4odW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCi0gIGZvciBjZXJ0YWluIGxvY2FsZXMgKHV0Zi0xNiBhbmQgdXRmLTMyIGZhbWlseSkuIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgorLSBJc3N1ZSAjMTU1OTU6IEZpeCBgYHN1YnByb2Nlc3MuUG9wZW4odW5pdmVyc2FsX25ld2xpbmVzPVRydWUpYGAgZm9yIGNlcnRhaW4KKyAgbG9jYWxlcyAodXRmLTE2IGFuZCB1dGYtMzIgZmFtaWx5KS4gUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCiAKIC0gSXNzdWUgIzE1NDc3OiBJbiBjbWF0aCBhbmQgbWF0aCBtb2R1bGVzLCBhZGQgd29ya2Fyb3VuZCBmb3IgcGxhdGZvcm1zIHdob3NlCiAgIHN5c3RlbS1zdXBwbGllZCBsb2cxcCBmdW5jdGlvbiBkb2Vzbid0IHJlc3BlY3Qgc2lnbnMgb2YgemVyb3MuCiAKLS0gSXNzdWUgIzE1NzE1OiBpbXBvcnRsaWIuX19pbXBvcnRfXygpIHdpbGwgc2lsZW5jZSBhbiBJbXBvcnRFcnJvciB3aGVuIHRoZSB1c2UKLSAgb2YgZnJvbWxpc3QgbGVhZHMgdG8gYSBmYWlsZWQgaW1wb3J0LgorLSBJc3N1ZSAjMTU3MTU6IGBpbXBvcnRsaWIuX19pbXBvcnRfXygpYCB3aWxsIHNpbGVuY2UgYW4gSW1wb3J0RXJyb3Igd2hlbiB0aGUKKyAgdXNlIG9mIGZyb21saXN0IGxlYWRzIHRvIGEgZmFpbGVkIGltcG9ydC4KIAotLSBJc3N1ZSAjMTQ2Njk6IEZpeCBwaWNrbGluZyBvZiBjb25uZWN0aW9ucyBhbmQgc29ja2V0cyBvbiBNYWNPU1gKLSAgYnkgc2VuZGluZy9yZWNlaXZpbmcgYW4gYWNrbm93bGVkZ21lbnQgYWZ0ZXIgZmlsZSBkZXNjcmlwdG9yIHRyYW5zZmVyLgotICBUZXN0UGlja2xpbmdDb25uZWN0aW9uIGhhcyBiZWVuIHJlZW5hYmxlZCBmb3IgTWFjT1NYLgorLSBJc3N1ZSAjMTQ2Njk6IEZpeCBwaWNrbGluZyBvZiBjb25uZWN0aW9ucyBhbmQgc29ja2V0cyBvbiBNYWMgT1MgWCBieQorICBzZW5kaW5nL3JlY2VpdmluZyBhbiBhY2tub3dsZWRnbWVudCBhZnRlciBmaWxlIGRlc2NyaXB0b3IgdHJhbnNmZXIuCisgIFRlc3RQaWNrbGluZ0Nvbm5lY3Rpb24gaGFzIGJlZW4gcmVlbmFibGVkIGZvciBNYWMgT1MgWC4KIAogLSBJc3N1ZSAjMTEwNjI6IEZpeCBhZGRpbmcgYSBtZXNzYWdlIGZyb20gZmlsZSB0byBCYWJ5bCBtYWlsYm94LgogCi0tIElzc3VlICMxNTY0NjogUHJldmVudCBlcXVpdmFsZW50IG9mIGEgZm9yayBib21iIHdoZW4gdXNpbmcKLSAgbXVsdGlwcm9jZXNzaW5nIG9uIFdpbmRvd3Mgd2l0aG91dCB0aGUgImlmIF9fbmFtZV9fID09ICdfX21haW5fXyciCi0gIGlkaW9tLgorLSBJc3N1ZSAjMTU2NDY6IFByZXZlbnQgZXF1aXZhbGVudCBvZiBhIGZvcmsgYm9tYiB3aGVuIHVzaW5nIGBtdWx0aXByb2Nlc3NpbmdgCisgIG9uIFdpbmRvd3Mgd2l0aG91dCB0aGUgYGBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nYGAgaWRpb20uCiAKLS0gSXNzdWUgIzE1Njc4OiBGaXggSURMRSBtZW51cyB3aGVuIHN0YXJ0ZWQgZnJvbSBPUyBYIGNvbW1hbmQgbGluZQotICAoMy4zLjBiMiByZWdyZXNzaW9uKS4KK0lETEUKKy0tLS0KIAotQyBBUEkKLS0tLS0tCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KKy0gSXNzdWUgIzE1Njc4OiBGaXggSURMRSBtZW51cyB3aGVuIHN0YXJ0ZWQgZnJvbSBPUyBYIGNvbW1hbmQgbGluZSAoMy4zLjBiMgorICByZWdyZXNzaW9uKS4KIAogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMxNDY3NDogQWRkIGEgZGlzY3Vzc2lvbiBvZiB0aGUganNvbiBtb2R1bGUncyBzdGFuZGFyZCBjb21wbGlhbmNlLgorLSBUb3VjaGVkIHVwIHRoZSBQeXRob24gMiB0byAzIHBvcnRpbmcgZ3VpZGUuCisKKy0gSXNzdWUgIzE0Njc0OiBBZGQgYSBkaXNjdXNzaW9uIG9mIHRoZSBganNvbmAgbW9kdWxlJ3Mgc3RhbmRhcmQgY29tcGxpYW5jZS4KICAgUGF0Y2ggYnkgQ2hyaXMgUmViZXJ0LgogCiAtIENyZWF0ZSBhICdDb25jdXJyZW50IEV4ZWN1dGlvbicgc2VjdGlvbiBpbiB0aGUgZG9jcywgYW5kIHNwbGl0IHVwIHRoZQogICAnT3B0aW9uYWwgT3BlcmF0aW5nIFN5c3RlbSBTZXJ2aWNlcycgc2VjdGlvbiB0byB1c2UgYSBtb3JlIHVzZXItY2VudHJpYwotICBjbGFzc2lmaWNhdGlvbiBzY2hlbWUgKHNwbGl0dGluZyB0aGVtIGFjcm9zcyB0aGUgbmV3IENFIHNlY3Rpb24sIElQQyBhbmQKLSAgdGV4dCBwcm9jZXNzaW5nKS4gT3BlcmF0aW5nIHN5c3RlbSBsaW1pdGF0b25zIGNhbiBiZSByZWZsZWN0ZWQgd2l0aAotICB0aGUgU3BoaW54IGBgOnBsYXRmb3JtOmBgIHRhZywgaXQgZG9lc24ndCBtYWtlIHNlbnNlIGFzIHBhcnQgb2YgdGhlIFRhYmxlIG9mCi0gIENvbnRlbnRzLgorICBjbGFzc2lmaWNhdGlvbiBzY2hlbWUgKHNwbGl0dGluZyB0aGVtIGFjcm9zcyB0aGUgbmV3IENFIHNlY3Rpb24sIElQQyBhbmQgdGV4dAorICBwcm9jZXNzaW5nKS4gT3BlcmF0aW5nIHN5c3RlbSBsaW1pdGF0aW9ucyBjYW4gYmUgcmVmbGVjdGVkIHdpdGggdGhlIFNwaGlueAorICBgYDpwbGF0Zm9ybTpgYCB0YWcsIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSBhcyBwYXJ0IG9mIHRoZSBUYWJsZSBvZiBDb250ZW50cy4KIAotLSBJc3N1ZSAjNDk2NjogQnJpbmcgdGhlIHNlcXVlbmNlIGRvY3MgdXAgdG8gZGF0ZSBmb3IgdGhlIFB5M2sgdHJhbnNpdGlvbgotICBhbmQgdGhlIG1hbnkgbGFuZ3VhZ2UgZW5oYW5jZW1lbnRzIHNpbmNlIHRoZXkgd2VyZSBvcmlnaW5hbCB3cml0dGVuCistIElzc3VlICM0OTY2OiBCcmluZyB0aGUgc2VxdWVuY2UgZG9jcyB1cCB0byBkYXRlIGZvciB0aGUgUHkzayB0cmFuc2l0aW9uIGFuZAorICB0aGUgbWFueSBsYW5ndWFnZSBlbmhhbmNlbWVudHMgc2luY2UgdGhleSB3ZXJlIG9yaWdpbmFsIHdyaXR0ZW4uCiAKIC0gVGhlICJwYXRoIGltcG9ydGVyIiBtaXNub21lciBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIEVyaWMgU25vdydzCi0gIG1vcmUtYXdrd2FyZC1idXQtYXQtbGVhc3Qtbm90LXdyb25nIHN1Z2dlc3Rpb24gb2YgInBhdGggYmFzZWQgZmluZGVyIiBpbgotICB0aGUgaW1wb3J0IHN5c3RlbSByZWZlcmVuY2UgZG9jcworICBtb3JlLWF3a3dhcmQtYnV0LWF0LWxlYXN0LW5vdC13cm9uZyBzdWdnZXN0aW9uIG9mICJwYXRoIGJhc2VkIGZpbmRlciIgaW4gdGhlCisgIGltcG9ydCBzeXN0ZW0gcmVmZXJlbmNlIGRvY3MuCiAKLS0gSXNzdWUgIzE1NjQwOiBEb2N1bWVudCBpbXBvcnRsaWIuYWJjLkZpbmRlciBhcyBkZXByZWNhdGVkLgorLSBJc3N1ZSAjMTU2NDA6IERvY3VtZW50IGBpbXBvcnRsaWIuYWJjLkZpbmRlcmAgYXMgZGVwcmVjYXRlZC4KIAotLSBJc3N1ZSAjMTU2MzA6IEFkZCBhbiBleGFtcGxlIGZvciAiY29udGludWUiIHN0bXQgaW4gdGhlIHR1dG9yaWFsLiBQYXRjaCBieQorLSBJc3N1ZSAjMTU2MzA6IEFkZCBhbiBleGFtcGxlIGZvciAiY29udGludWUiIHN0bXQgaW4gdGhlIHR1dG9yaWFsLiAgUGF0Y2ggYnkKICAgRGFuaWVsIEVsbGlzLgogCiBUZXN0cwogLS0tLS0KIAogLSBJc3N1ZSAjMTU3NDc6IFpGUyBhbHdheXMgcmV0dXJucyBFT1BOT1RTVVBQIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgdGhlCi0gIFVGX0lNTVVUQUJMRSBmbGFnICh2aWEgZWl0aGVyIGNoZmxhZ3Mgb3IgbGNoZmxhZ3MpOyByZWZhY3RvciBhZmZlY3RlZAotICB0ZXN0cyBpbiB0ZXN0X3Bvc2l4LnB5IHRvIGFjY291bnQgZm9yIHRoaXMuCisgIFVGX0lNTVVUQUJMRSBmbGFnICh2aWEgZWl0aGVyIGNoZmxhZ3Mgb3IgbGNoZmxhZ3MpOyByZWZhY3RvciBhZmZlY3RlZCB0ZXN0cyBpbgorICB0ZXN0X3Bvc2l4LnB5IHRvIGFjY291bnQgZm9yIHRoaXMuCiAKLS0gSXNzdWUgIzE1Mjg1OiBSZWZhY3RvciB0aGUgYXBwcm9hY2ggZm9yIHRlc3RpbmcgY29ubmVjdCB0aW1lb3V0cyB1c2luZwotICB0d28gZXh0ZXJuYWwgaG9zdHMgdGhhdCBoYXZlIGJlZW4gY29uZmlndXJlZCBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgdHlwZQotICBvZiB0ZXN0LgorLSBJc3N1ZSAjMTUyODU6IFJlZmFjdG9yIHRoZSBhcHByb2FjaCBmb3IgdGVzdGluZyBjb25uZWN0IHRpbWVvdXRzIHVzaW5nIHR3bworICBleHRlcm5hbCBob3N0cyB0aGF0IGhhdmUgYmVlbiBjb25maWd1cmVkIHNwZWNpZmljYWxseSBmb3IgdGhpcyB0eXBlIG9mIHRlc3QuCiAKLS0gSXNzdWUgIzE1NzQzOiBSZW1vdmUgdGhlIGRlcHJlY2F0ZWQgbWV0aG9kIHVzYWdlIGluIHVybGxpYiB0ZXN0cy4gUGF0Y2ggYnkKKy0gSXNzdWUgIzE1NzQzOiBSZW1vdmUgdGhlIGRlcHJlY2F0ZWQgbWV0aG9kIHVzYWdlIGluIGB1cmxsaWJgIHRlc3RzLiBQYXRjaCBieQogICBKZWZmIEtudXBwLgogCi0tIElzc3VlICMxNTYxNTogQWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBqc29uIG1vZHVsZSdzIGhhbmRsaW5nIG9mIGludmFsaWQKLSAgaW5wdXQgZGF0YS4gIFBhdGNoIGJ5IEt1c2hhbCBEYXMuCistIElzc3VlICMxNTYxNTogQWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBganNvbmAgbW9kdWxlJ3MgaGFuZGxpbmcgb2YgaW52YWxpZCBpbnB1dAorICBkYXRhLiAgUGF0Y2ggYnkgS3VzaGFsIERhcy4KIAogQnVpbGQKIC0tLS0tCkBAIC0yNzcsMTEgKzI3MSwxMSBAQAogCiAtIFBpY2sgdXAgMzItYml0IGxhdW5jaGVyIGZyb20gUEdPIGRpcmVjdG9yeSBvbiA2NC1iaXQgUEdPIGJ1aWxkLgogCi0tIERyb3AgUENccHl0aG9uX250LmggYXMgaXQncyBub3QgdXNlZC4gQWRkIGlucHV0IGRlcGVuZGVuY3kgb24gY3VzdG9tCistIERyb3AgYGBQQ1xweXRob25fbnQuaGBgIGFzIGl0J3Mgbm90IHVzZWQuICBBZGQgaW5wdXQgZGVwZW5kZW5jeSBvbiBjdXN0b20KICAgYnVpbGQgc3RlcC4KIAotLSBJc3N1ZSAjMTU1MTE6IERyb3AgZXhwbGljaXQgZGVwZW5kZW5jeSBvbiBweXRob254eS5saWIgZnJvbSBfZGVjaW1hbAotICBhbWQ2NCBjb25maWd1cmF0aW9uLgorLSBJc3N1ZSAjMTU1MTE6IERyb3AgZXhwbGljaXQgZGVwZW5kZW5jeSBvbiBweXRob254eS5saWIgZnJvbSBfZGVjaW1hbCBhbWQ2NAorICBjb25maWd1cmF0aW9uLgogCiAtIEFkZCBtaXNzaW5nIFBHSS9QR08gY29uZmlndXJhdGlvbnMgZm9yIHB5d2xhdW5jaGVyLgogCkBAIC0yOTYsMTUgKzI5MCwxNSBAQAogQ29yZSBhbmQgQnVpbHRpbnMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzE1NTY4OiBGaXggdGhlIHJldHVybiB2YWx1ZSBvZiAieWllbGQgZnJvbSIgd2hlbiBTdG9wSXRlcmF0aW9uIGlzCistIElzc3VlICMxNTU2ODogRml4IHRoZSByZXR1cm4gdmFsdWUgb2YgYGB5aWVsZCBmcm9tYGAgd2hlbiBTdG9wSXRlcmF0aW9uIGlzCiAgIHJhaXNlZCBieSBhIGN1c3RvbSBpdGVyYXRvci4KIAotLSBJc3N1ZSAjMTMxMTk6IHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgYXJlIG5vdyB1c2luZyAiXHJcbiIgbmV3bGluZSBvbgorLSBJc3N1ZSAjMTMxMTk6IGBzeXMuc3Rkb3V0YCBhbmQgYHN5cy5zdGRlcnJgIGFyZSBub3cgdXNpbmcgIlxyXG4iIG5ld2xpbmUgb24KICAgV2luZG93cywgYXMgUHl0aG9uIDIuCiAKIC0gSXNzdWUgIzE1NTM0OiBGaXggdGhlIGZhc3Qtc2VhcmNoIGZ1bmN0aW9uIGZvciBub24tQVNDSUkgVW5pY29kZSBzdHJpbmdzLgogCi0tIElzc3VlICMxNTUwODogRml4IHRoZSBkb2NzdHJpbmcgZm9yIF9faW1wb3J0X18gdG8gaGF2ZSB0aGUgcHJvcGVyIGRlZmF1bHQKKy0gSXNzdWUgIzE1NTA4OiBGaXggdGhlIGRvY3N0cmluZyBmb3IgYF9faW1wb3J0X18oKWAgdG8gaGF2ZSB0aGUgcHJvcGVyIGRlZmF1bHQKICAgdmFsdWUgb2YgMCBmb3IgJ2xldmVsJyBhbmQgdG8gbm90IG1lbnRpb24gbmVnYXRpdmUgbGV2ZWxzIHNpbmNlIHRoZXkgYXJlIG5vdAogICBzdXBwb3J0ZWQuCiAKQEAgLTMxNywxNyArMzExLDE3IEBACiAgIGJ5dGUgY29kZSBmaWxlcykgZXF1YWwgYmV0d2VlbiAzMi1iaXQgYW5kIDY0LWJpdCBzeXN0ZW1zLgogCiAtIElzc3VlICMxNjkyMzM1OiBNb3ZlIGluaXRpYWwgZXhjZXB0aW9uIGFyZ3MgYXNzaWdubWVudCB0bwotICAiQmFzZUV4Y2VwdGlvbi5fX25ld19fIiB0byBoZWxwIHBpY2tsaW5nIG9mIG5haXZlIHN1YmNsYXNzZXMuCisgIGBCYXNlRXhjZXB0aW9uLl9fbmV3X18oKWAgdG8gaGVscCBwaWNrbGluZyBvZiBuYWl2ZSBzdWJjbGFzc2VzLgogCi0tIElzc3VlICMxMjgzNDogRml4IFB5QnVmZmVyX1RvQ29udGlndW91cygpIGZvciBub24tY29udGlndW91cyBhcnJheXMuCistIElzc3VlICMxMjgzNDogRml4IGBQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoKWAgZm9yIG5vbi1jb250aWd1b3VzIGFycmF5cy4KIAotLSBJc3N1ZSAjMTU0NTY6IEZpeCBjb2RlIF9fc2l6ZW9mX18gYWZ0ZXIgIzEyMzk5IGNoYW5nZS4gIFBhdGNoIGJ5IFNlcmhpeQorLSBJc3N1ZSAjMTU0NTY6IEZpeCBjb2RlIGBfX3NpemVvZl9fKClgIGFmdGVyICMxMjM5OSBjaGFuZ2UuICBQYXRjaCBieSBTZXJoaXkKICAgU3RvcmNoYWthLgogCiAtIElzc3VlICMxNTQwNDogUmVmbGVhayBpbiBQeU1ldGhvZE9iamVjdCByZXByLgogCi0tIElzc3VlICMxNTM5NDogQW4gaXNzdWUgaW4gUHlNb2R1bGVfQ3JlYXRlIHRoYXQgY2F1c2VkIHJlZmVyZW5jZXMgdG8gYmUgbGVha2VkCi0gIG9uIHNvbWUgZXJyb3IgcGF0aHMgaGFzIGJlZW4gZml4ZWQuICBQYXRjaCBieSBKdWxpYSBMYXdhbGwuCistIElzc3VlICMxNTM5NDogQW4gaXNzdWUgaW4gYFB5TW9kdWxlX0NyZWF0ZSgpYCB0aGF0IGNhdXNlZCByZWZlcmVuY2VzIHRvIGJlCisgIGxlYWtlZCBvbiBzb21lIGVycm9yIHBhdGhzIGhhcyBiZWVuIGZpeGVkLiAgUGF0Y2ggYnkgSnVsaWEgTGF3YWxsLgogCiAtIElzc3VlICMxNTM2ODogQW4gaXNzdWUgdGhhdCBjYXVzZWQgYnl0ZWNvZGUgZ2VuZXJhdGlvbiB0byBiZSBub24tZGV0ZXJtaW5pc3RpYwogICBoYXMgYmVlbiBmaXhlZC4KQEAgLTMzNSw3ICszMjksNyBAQAogLSBJc3N1ZSAjMTUyMDI6IENvbnNpc3RlbnRseSB1c2UgdGhlIG5hbWUgImZvbGxvd19zeW1saW5rcyIgZm9yIG5ldyBwYXJhbWV0ZXJzCiAgIGluIG9zIGFuZCBzaHV0aWwgZnVuY3Rpb25zLgogCi0tIElzc3VlICMxNTMxNDogX19tYWluX18uX19sb2FkZXJfXyBpcyBub3cgc2V0IGNvcnJlY3RseSBkdXJpbmcgaW50ZXJwcmV0ZXIKKy0gSXNzdWUgIzE1MzE0OiBgYF9fbWFpbl9fLl9fbG9hZGVyX19gYCBpcyBub3cgc2V0IGNvcnJlY3RseSBkdXJpbmcgaW50ZXJwcmV0ZXIKICAgc3RhcnR1cC4KIAogLSBJc3N1ZSAjMTUxMTE6IFdoZW4gYSBtb2R1bGUgaW1wb3J0ZWQgdXNpbmcgJ2Zyb20gaW1wb3J0JyBoYXMgYW4gSW1wb3J0RXJyb3IKQEAgLTM1MCw1NyArMzQ0LDYyIEBACiAtIElzc3VlICMxNTExMDogRml4IHRoZSB0cmFjZWJhY2tzIGdlbmVyYXRlZCBieSAiaW1wb3J0IHh4eCIgdG8gbm90IHNob3cgdGhlCiAgIGltcG9ydGxpYiBzdGFjayBmcmFtZXMuCiAKKy0gSXNzdWUgIzE2MzY5OiBHbG9iYWwgUHlUeXBlT2JqZWN0cyBub3QgaW5pdGlhbGl6ZWQgd2l0aCBQeVR5cGVfUmVhZHkoLi4uKS4KKwogLSBJc3N1ZSAjMTUwMjA6IFRoZSBwcm9ncmFtIG5hbWUgdXNlZCB0byBzZWFyY2ggZm9yIFB5dGhvbidzIHBhdGggaXMgbm93CiAgICJweXRob24zIiB1bmRlciBVbml4LCBub3QgInB5dGhvbiIuCiAKLS0gSXNzdWUgIzE1MDMzOiBGaXggdGhlIGV4aXQgc3RhdHVzIGJ1ZyB3aGVuIG1vZHVsZXMgaW52b2tlZCB1c2luZyAtbSBzd2l0aCwKKy0gSXNzdWUgIzE1ODk3OiB6aXBpbXBvcnQuYyBkb2Vzbid0IGNoZWNrIHJldHVybiB2YWx1ZSBvZiBmc2VlaygpLgorICBQYXRjaCBieSBGZWxpcGUgQ3J1ei4KKworLSBJc3N1ZSAjMTUwMzM6IEZpeCB0aGUgZXhpdCBzdGF0dXMgYnVnIHdoZW4gbW9kdWxlcyBpbnZva2VkIHVzaW5nIC1tIHN3aXRjaCwKICAgcmV0dXJuIHRoZSBwcm9wZXIgZmFpbHVyZSByZXR1cm4gdmFsdWUgKDEpLiBQYXRjaCBjb250cmlidXRlZCBieSBKZWZmIEtudXBwLgogCi0tIElzc3VlICMxNTIyOTogQW4gT1NFcnJvciBzdWJjbGFzcyB3aG9zZSBfX2luaXRfXyBkb2Vzbid0IGNhbGwgYmFjaworLSBJc3N1ZSAjMTUyMjk6IEFuIGBPU0Vycm9yYCBzdWJjbGFzcyB3aG9zZSBfX2luaXRfXyBkb2Vzbid0IGNhbGwgYmFjawogICBPU0Vycm9yLl9faW5pdF9fIGNvdWxkIHByb2R1Y2UgaW5jb21wbGV0ZSBpbnN0YW5jZXMsIGxlYWRpbmcgdG8gY3Jhc2hlcyB3aGVuCiAgIGNhbGxpbmcgc3RyKCkgb24gdGhlbS4KIAotLSBJc3N1ZSAxNTMwNzogVmlydHVhbCBlbnZpcm9ubWVudHMgbm93IHVzZSBzeW1saW5rcyB3aXRoIGZyYW1ld29yayBidWlsZHMgb24KKy0gSXNzdWUgIzE1MzA3OiBWaXJ0dWFsIGVudmlyb25tZW50cyBub3cgdXNlIHN5bWxpbmtzIHdpdGggZnJhbWV3b3JrIGJ1aWxkcyBvbgogICBNYWMgT1MgWCwgbGlrZSBvdGhlciBQT1NJWCBidWlsZHMuCiAKIExpYnJhcnkKIC0tLS0tLS0KIAotLSBJc3N1ZSAjMTU0MjQ6IEFkZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIGFycmF5IG9iamVjdHMuICBQYXRjaCBieQorLSBJc3N1ZSAjMTQ1OTA6IGNvbmZpZ3BhcnNlciBub3cgY29ycmVjdGx5IHN0cmlwcyBpbmxpbmUgY29tbWVudHMgd2hlbiBkZWxpbWl0ZXIKKyAgb2NjdXJzIGVhcmxpZXIgd2l0aG91dCBwcmVjZWRpbmcgc3BhY2UuCisKKy0gSXNzdWUgIzE1NDI0OiBBZGQgYSBgX19zaXplb2ZfXygpYCBpbXBsZW1lbnRhdGlvbiBmb3IgYXJyYXkgb2JqZWN0cy4gIFBhdGNoIGJ5CiAgIEx1ZHdpZyBIw6RobmUuCiAKIC0gSXNzdWUgIzE1NTc2OiBBbGxvdyBleHRlbnNpb24gbW9kdWxlcyB0byBhY3QgYXMgYSBwYWNrYWdlJ3MgX19pbml0X18gbW9kdWxlLgogCi0tIElzc3VlICMxNTUwMjogSGF2ZSBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKSB3b3JrIG9uIHN5cy5tZXRhX3BhdGggaW5zdGVhZAotICBvZiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4KKy0gSXNzdWUgIzE1NTAyOiBIYXZlIGBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKWAgd29yayBvbiBgc3lzLm1ldGFfcGF0aGAKKyAgaW5zdGVhZCBvZiBgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLgogCiAtIElzc3VlICMxNTE2MzogUHlkb2Mgc2hvdWxkbid0IGxpc3QgX19sb2FkZXJfXyBhcyBtb2R1bGUgZGF0YS4KIAogLSBJc3N1ZSAjMTU0NzE6IERvIG5vdCB1c2UgbXV0YWJsZSBvYmplY3RzIGFzIGRlZmF1bHRzIGZvcgotICBpbXBvcnRsaWIuX19pbXBvcnRfXygpLgorICBgaW1wb3J0bGliLl9faW1wb3J0X18oKWAuCiAKIC0gSXNzdWUgIzE1NTU5OiBUbyBhdm9pZCBhIHByb2JsZW1hdGljIGZhaWx1cmUgbW9kZSB3aGVuIHBhc3NlZCB0byB0aGUgYnl0ZXMKLSAgY29uc3RydWN0b3IsIG9iamVjdHMgaW4gdGhlIGlwYWRkcmVzcyBtb2R1bGUgbm8gbG9uZ2VyIGltcGxlbWVudCBfX2luZGV4X18KLSAgKHRoZXkgc3RpbGwgaW1wbGVtZW50IF9faW50X18gYXMgYXBwcm9wcmlhdGUpCisgIGNvbnN0cnVjdG9yLCBvYmplY3RzIGluIHRoZSBpcGFkZHJlc3MgbW9kdWxlIG5vIGxvbmdlciBpbXBsZW1lbnQgYF9faW5kZXhfXygpYAorICAodGhleSBzdGlsbCBpbXBsZW1lbnQgYF9faW50X18oKWAgYXMgYXBwcm9wcmlhdGUpLgogCiAtIElzc3VlICMxNTU0NjogRml4IGhhbmRsaW5nIG9mIHBhdGhvbG9naWNhbCBpbnB1dCBkYXRhIGluIHRoZSBwZWVrKCkgYW5kCiAgIHJlYWQxKCkgbWV0aG9kcyBvZiB0aGUgQloyRmlsZSwgR3ppcEZpbGUgYW5kIExaTUFGaWxlIGNsYXNzZXMuCiAKLS0gSXNzdWUgIzEzMDUyOiBGaXggSURMRSBjcmFzaGluZyB3aGVuIHJlcGxhY2Ugc3RyaW5nIGluIFNlYXJjaC9SZXBsYWNlIGRpYWxvZwotICBlbmRlZCB3aXRoICdcJy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCistIElzc3VlICMxMjY1NTogSW5zdGVhZCBvZiByZXF1aXJpbmcgYSBjdXN0b20gdHlwZSwgYG9zLnNjaGVkX2dldGFmZmluaXR5KClgIGFuZAorICBgb3Muc2NoZWRfc2V0YWZmaW5pdHkoKWAgbm93IHVzZSByZWd1bGFyIHNldHMgb2YgaW50ZWdlcnMgdG8gcmVwcmVzZW50IHRoZQorICBDUFVzIGEgcHJvY2VzcyBpcyByZXN0cmljdGVkIHRvLgogCi0tIElzc3VlICMxMjY1NTogSW5zdGVhZCBvZiByZXF1aXJpbmcgYSBjdXN0b20gdHlwZSwgb3Muc2NoZWRfZ2V0YWZmaW5pdHkgYW5kCi0gIG9zLnNjaGVkX3NldGFmZmluaXR5IG5vdyB1c2UgcmVndWxhciBzZXRzIG9mIGludGVnZXJzIHRvIHJlcHJlc2VudCB0aGUgQ1BVcyBhCi0gIHByb2Nlc3MgaXMgcmVzdHJpY3RlZCB0by4KLQotLSBJc3N1ZSAjMTU1Mzg6IEZpeCBjb21waWxhdGlvbiBvZiB0aGUgZ2V0bmFtZWluZm8oKSAvIGdldGFkZHJpbmZvKCkgZW11bGF0aW9uCi0gIGNvZGUuICBQYXRjaCBieSBQaGlsaXBwIEhhZ2VtZWlzdGVyLgorLSBJc3N1ZSAjMTU1Mzg6IEZpeCBjb21waWxhdGlvbiBvZiB0aGUgYHNvY2tldC5nZXRuYW1laW5mbygpYCAvCisgIGBzb2NrZXQuZ2V0YWRkcmluZm8oKWAgZW11bGF0aW9uIGNvZGUuICBQYXRjaCBieSBQaGlsaXBwIEhhZ2VtZWlzdGVyLgogCiAtIElzc3VlICMxNTUxOTogUHJvcGVybHkgZXhwb3NlIFdpbmRvd3NSZWdpc3RyeUZpbmRlciBpbiBpbXBvcnRsaWIgKGFuZCB1c2UgdGhlCi0gIGNvcnJlY3QgdGVybSBmb3IgaXQpLiBPcmlnaW5hbCBwYXRjaCBieSBFcmljIFNub3cuCisgIGNvcnJlY3QgdGVybSBmb3IgaXQpLiAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpYyBTbm93LgogCiAtIElzc3VlICMxNTUwMjogQnJpbmcgdGhlIGltcG9ydGxpYiBBQkNzIGludG8gbGluZSB3aXRoIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZQotICBpbXBvcnQgcHJvdG9jb2xzIGdpdmVuIFBFUCA0MjAuIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWMgU25vdy4KKyAgaW1wb3J0IHByb3RvY29scyBnaXZlbiBQRVAgNDIwLiAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpYyBTbm93LgogCiAtIElzc3VlICMxNTQ5OTogTGF1bmNoaW5nIGEgd2ViYnJvd3NlciBpbiBVbml4IHVzZWQgdG8gc2xlZXAgZm9yIGEgZmV3IHNlY29uZHMuCiAgIE9yaWdpbmFsIHBhdGNoIGJ5IEFudG9uIEJhcmtvdnNreS4KQEAgLTQwOCwzNyArNDA3LDM2IEBACiAtIElzc3VlICMxNTQ2MzogVGhlIGZhdWx0aGFuZGxlciBtb2R1bGUgdHJ1bmNhdGVzIHN0cmluZ3MgdG8gNTAwIGNoYXJhY3RlcnMsCiAgIGluc3RlYWQgb2YgMTAwLCB0byBiZSBhYmxlIHRvIGRpc3BsYXkgbG9uZyBmaWxlIHBhdGhzLgogCi0tIElzc3VlICM2MDU2OiBNYWtlIG11bHRpcHJvY2Vzc2luZyB1c2Ugc2V0YmxvY2tpbmcoVHJ1ZSkgb24gdGhlIHNvY2tldHMgaXQKKy0gSXNzdWUgIzYwNTY6IE1ha2UgYG11bHRpcHJvY2Vzc2luZ2AgdXNlIHNldGJsb2NraW5nKFRydWUpIG9uIHRoZSBzb2NrZXRzIGl0CiAgIHVzZXMuICBPcmlnaW5hbCBwYXRjaCBieSBKIERlcmVrIFdpbHNvbi4KIAogLSBJc3N1ZSAjMTUzNjQ6IEZpeCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpIHRvIGJlIGFuIGFic29sdXRlIHBhdGguCiAKLS0gSXNzdWUgIzE1MDQxOiBVcGRhdGUgInNlZSBhbHNvIiBsaXN0IGluIHRraW50ZXIgZG9jdW1lbnRhdGlvbi4KKy0gSXNzdWUgIzE1NDEzOiBgb3MudGltZXMoKWAgaGFkIGRpc2FwcGVhcmVkIHVuZGVyIFdpbmRvd3MuCiAKLS0gSXNzdWUgIzE1NDEzOiBvcy50aW1lcygpIGhhZCBkaXNhcHBlYXJlZCB1bmRlciBXaW5kb3dzLgotCi0tIElzc3VlICMxNTQwMjogQW4gaXNzdWUgaW4gdGhlIHN0cnVjdCBtb2R1bGUgdGhhdCBjYXVzZWQgc3lzLmdldHNpemVvZiB0bworLSBJc3N1ZSAjMTU0MDI6IEFuIGlzc3VlIGluIHRoZSBzdHJ1Y3QgbW9kdWxlIHRoYXQgY2F1c2VkIGBzeXMuZ2V0c2l6ZW9mKClgIHRvCiAgIHJldHVybiBpbmNvcnJlY3QgcmVzdWx0cyBmb3Igc3RydWN0LlN0cnVjdCBpbnN0YW5jZXMgaGFzIGJlZW4gZml4ZWQuICBJbml0aWFsCiAgIHBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKLS0gSXNzdWUgIzE1MjMyOiBXaGVuIG1hbmdsZV9mcm9tIGlzIFRydWUsIGVtYWlsLkdlbmVyYXRvciBub3cgY29ycmVjdGx5IG1hbmdsZXMKLSAgbGluZXMgdGhhdCBzdGFydCB3aXRoICdGcm9tICcgdGhhdCBvY2N1ciBpbiBhIE1JTUUgcHJlYW1ibGUgb3IgZXBpbG9ndWUuCistIElzc3VlICMxNTIzMjogV2hlbiBtYW5nbGVfZnJvbSBpcyBUcnVlLCBgZW1haWwuR2VuZXJhdG9yYCBub3cgY29ycmVjdGx5CisgIG1hbmdsZXMgbGluZXMgdGhhdCBzdGFydCB3aXRoICdGcm9tICcgdGhhdCBvY2N1ciBpbiBhIE1JTUUgcHJlYW1ibGUgb3IKKyAgZXBpbG9ndWUuCiAKIC0gSXNzdWUgIzE1MDk0OiBJbmNvcnJlY3RseSBwbGFjZWQgI2VuZGlmIGluIF90a2ludGVyLmMuICBQYXRjaCBieSBTZXJoaXkKICAgU3RvcmNoYWthLgogCi0tIElzc3VlICMxMzkyMjogYXJncGFyc2Ugbm8gbG9uZ2VyIGluY29ycmVjdGx5IHN0cmlwcyAnLS0ncyB0aGF0IGFwcGVhciBhZnRlcgorLSBJc3N1ZSAjMTM5MjI6IGBhcmdwYXJzZWAgbm8gbG9uZ2VyIGluY29ycmVjdGx5IHN0cmlwcyAnLS0ncyB0aGF0IGFwcGVhciBhZnRlcgogICB0aGUgZmlyc3Qgb25lLgogCi0tIElzc3VlICMxMjM1MzogYXJncGFyc2Ugbm93IGNvcnJlY3RseSBoYW5kbGVzIG51bGwgYXJndW1lbnQgdmFsdWVzLgorLSBJc3N1ZSAjMTIzNTM6IGBhcmdwYXJzZWAgbm93IGNvcnJlY3RseSBoYW5kbGVzIG51bGwgYXJndW1lbnQgdmFsdWVzLgogCiAtIElzc3VlICMxMDAxNywgaXNzdWUgIzE0OTk4OiBGaXggVHlwZUVycm9yIHVzaW5nIHBwcmludCBvbiBkaWN0aW9uYXJpZXMgd2l0aAogICB1c2VyLWRlZmluZWQgdHlwZXMgYXMga2V5cyBvciBvdGhlciB1bm9yZGVyYWJsZSBrZXlzLgogCi0tIElzc3VlICMxNTM5NzogaW5zcGVjdC5nZXRtb2R1bGVuYW1lKCkgaXMgbm93IGJhc2VkIGRpcmVjdGx5IG9uIGltcG9ydGxpYiB2aWEgYQotICBuZXcgaW1wb3J0bGliLm1hY2hpbmVyeS5hbGxfc3VmZml4ZXMoKSBBUEkuCistIElzc3VlICMxNTM5NzogYGluc3BlY3QuZ2V0bW9kdWxlbmFtZSgpYCBpcyBub3cgYmFzZWQgZGlyZWN0bHkgb24gaW1wb3J0bGliIHZpYQorICBhIG5ldyBgaW1wb3J0bGliLm1hY2hpbmVyeS5hbGxfc3VmZml4ZXMoKWAgQVBJLgogCi0tIElzc3VlICMxNDYzNTogdGVsbmV0bGliIHdpbGwgdXNlIHBvbGwoKSByYXRoZXIgdGhhbiBzZWxlY3QoKSB3aGVuIHBvc3NpYmxlIHRvCistIElzc3VlICMxNDYzNTogYHRlbG5ldGxpYmAgd2lsbCB1c2UgcG9sbCgpIHJhdGhlciB0aGFuIHNlbGVjdCgpIHdoZW4gcG9zc2libGUgdG8KICAgYXZvaWQgZmFpbGluZyBkdWUgdG8gdGhlIHNlbGVjdCgpIGZpbGUgZGVzY3JpcHRvciBsaW1pdC4KIAogLSBJc3N1ZSAjMTUxODA6IENsYXJpZnkgcG9zaXhwYXRoLmpvaW4oKSBlcnJvciBtZXNzYWdlIHdoZW4gbWl4aW5nIHN0ciAmIGJ5dGVzLgpAQCAtNDU1LDcgKzQ1Myw3IEBACiAtIElzc3VlICMxNTIzMzogUHl0aG9uIG5vdyBndWFyYW50ZWVzIHRoYXQgY2FsbGFibGVzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgYXRleGl0CiAgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpbiBhIGRldGVybWluaXN0aWMgb3JkZXIuCiAKLS0gSXNzdWUgIzE1MjM4OiBzaHV0aWwuY29weXN0YXQgbm93IGNvcGllcyBMaW51eCAiZXh0ZW5kZWQgYXR0cmlidXRlcyIuCistIElzc3VlICMxNTIzODogYHNodXRpbC5jb3B5c3RhdCgpYCBub3cgY29waWVzIExpbnV4ICJleHRlbmRlZCBhdHRyaWJ1dGVzIi4KIAogLSBJc3N1ZSAjMTUyMzA6IHJ1bnB5LnJ1bl9wYXRoIG5vdyBjb3JyZWN0bHkgc2V0cyBfX3BhY2thZ2VfXyBhcyBkZXNjcmliZWQgaW4KICAgdGhlIGRvY3VtZW50YXRpb24uCkBAIC00NjUsNDIgKzQ2Myw0MiBAQAogLSBJc3N1ZSAjMTUyOTQ6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gcGtndXRpbC5leHRlbmRfcGF0aCgpJ3MgaGFuZGxpbmcgb2YgbmVzdGVkCiAgIG5hbWVzcGFjZSBwYWNrYWdlcy4KIAotLSBJc3N1ZSAjMTUwNTY6IGltcC5jYWNoZV9mcm9tX3NvdXJjZSgpIGFuZCBzb3VyY2VfZnJvbV9jYWNoZSgpIHJhaXNlCi0gIE5vdEltcGxlbWVudGVkRXJyb3Igd2hlbiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIHNldCB0byBOb25lLgorLSBJc3N1ZSAjMTUwNTY6IGBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoKWAgYW5kIGBpbXAuc291cmNlX2Zyb21fY2FjaGUoKWAgcmFpc2UKKyAgTm90SW1wbGVtZW50ZWRFcnJvciB3aGVuIGBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBzZXQgdG8gTm9uZS4KIAotLSBJc3N1ZSAjMTUyNTY6IEdyYW1tYXRpY2FsIG1pc3Rha2UgaW4gZXhjZXB0aW9uIHJhaXNlZCBieSBpbXAuZmluZF9tb2R1bGUoKS4KKy0gSXNzdWUgIzE1MjU2OiBHcmFtbWF0aWNhbCBtaXN0YWtlIGluIGV4Y2VwdGlvbiByYWlzZWQgYnkgYGltcC5maW5kX21vZHVsZSgpYC4KIAotLSBJc3N1ZSAjNTkzMTogd3NnaXJlZiBlbnZpcm9uIHZhcmlhYmxlIFNFUlZFUl9TT0ZUV0FSRSB3aWxsIHNwZWNpZnkgYW4KKy0gSXNzdWUgIzU5MzE6IGB3c2dpcmVmYCBlbnZpcm9uIHZhcmlhYmxlIFNFUlZFUl9TT0ZUV0FSRSB3aWxsIHNwZWNpZnkgYW4KICAgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgdGVybSBsaWtlIENQeXRob24sIEp5dGhvbiBpbnN0ZWFkIG9mIGdlbmVyaWMgIlB5dGhvbiIuCiAKIC0gSXNzdWUgIzEzMjQ4OiBSZW1vdmUgb2Jzb2xldGUgYXJndW1lbnQgIm1heF9idWZmZXJfc2l6ZSIgb2YgQnVmZmVyZWRXcml0ZXIgYW5kCiAgIEJ1ZmZlcmVkUldQYWlyLCBmcm9tIHRoZSBpbyBtb2R1bGUuCiAKLS0gSXNzdWUgIzEzMjQ4OiBSZW1vdmUgb2Jzb2xldGUgYXJndW1lbnQgInZlcnNpb24iIG9mIGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyLgorLSBJc3N1ZSAjMTMyNDg6IFJlbW92ZSBvYnNvbGV0ZSBhcmd1bWVudCAidmVyc2lvbiIgb2YgYGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyYC4KIAogLSBJc3N1ZSAjMTQ4MTQ6IEltcGxlbWVudCBtb3JlIGNvbnNpc3RlbnQgb3JkZXJpbmcgYW5kIHNvcnRpbmcgYmVoYXZpb3VyIGZvcgogICBpcGFkZHJlc3Mgb2JqZWN0cy4KIAotLSBJc3N1ZSAjMTQ4MTQ6IGlwYWRkcmVzcyBuZXR3b3JrIG9iamVjdHMgY29ycmVjdGx5IHJldHVybiBOb3RJbXBsZW1lbnRlZCB3aGVuCistIElzc3VlICMxNDgxNDogYGlwYWRkcmVzc2AgbmV0d29yayBvYmplY3RzIGNvcnJlY3RseSByZXR1cm4gTm90SW1wbGVtZW50ZWQgd2hlbgogICBjb21wYXJlZCB0byBhcmJpdHJhcnkgb2JqZWN0cyBpbnN0ZWFkIG9mIHJhaXNpbmcgVHlwZUVycm9yLgogCiAtIElzc3VlICMxNDk5MDogQ29ycmVjdGx5IGZhaWwgd2l0aCBTeW50YXhFcnJvciBvbiBpbnZhbGlkIGVuY29kaW5nIGRlY2xhcmF0aW9uLgogCi0tIElzc3VlICMxNDgxNDogaXBhZGRyZXNzIG5vdyBwcm92aWRlcyBtb3JlIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2VzIHdoZW4KKy0gSXNzdWUgIzE0ODE0OiBgaXBhZGRyZXNzYCBub3cgcHJvdmlkZXMgbW9yZSBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlcyB3aGVuCiAgIGNvbnN0cnVjdGluZyBpbnN0YW5jZXMgZGlyZWN0bHkgKGNoYW5nZXMgcGVybWl0dGVkIGR1cmluZyBiZXRhIGR1ZSB0bwogICBwcm92aXNpb25hbCBBUEkgc3RhdHVzKS4KIAotLSBJc3N1ZSAjMTUyNDc6IEZpbGVJTyBub3cgcmFpc2VzIGFuIGVycm9yIHdoZW4gZ2l2ZW4gYSBmaWxlIGRlc2NyaXB0b3IgcG9pbnRpbmcKLSAgdG8gYSBkaXJlY3RvcnkuCistIElzc3VlICMxNTI0NzogYGlvLkZpbGVJT2Agbm93IHJhaXNlcyBhbiBlcnJvciB3aGVuIGdpdmVuIGEgZmlsZSBkZXNjcmlwdG9yCisgIHBvaW50aW5nIHRvIGEgZGlyZWN0b3J5LgogCiAtIElzc3VlICMxNTI2MTogU3RvcCBvcy5zdGF0KGZkKSBjcmFzaGluZyBvbiBXaW5kb3dzIHdoZW4gZmQgbm90IG9wZW4uCiAKLS0gSXNzdWUgIzE1MTY2OiBJbXBsZW1lbnQgaW1wLmdldF90YWcoKSB1c2luZyBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnLgorLSBJc3N1ZSAjMTUxNjY6IEltcGxlbWVudCBgaW1wLmdldF90YWcoKWAgdXNpbmcgYHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgLgogCi0tIElzc3VlICMxNTIxMDogQ2F0Y2ggS2V5RXJyb3Igd2hlbiBpbXBvcnRsaWIuX19pbml0X18gY2FuJ3QgZmluZAorLSBJc3N1ZSAjMTUyMTA6IENhdGNoIEtleUVycm9yIHdoZW4gYGltcG9ydGxpYi5fX2luaXRfXygpYCBjYW4ndCBmaW5kCiAgIF9mcm96ZW5faW1wb3J0bGliIGluIHN5cy5tb2R1bGVzLCBub3QgSW1wb3J0RXJyb3IuCiAKLS0gSXNzdWUgIzE1MDMwOiBpbXBvcnRsaWIuYWJjLlB5UHljTG9hZGVyIG5vdyBzdXBwb3J0cyB0aGUgbmV3IHNvdXJjZSBzaXplCistIElzc3VlICMxNTAzMDogYGltcG9ydGxpYi5hYmMuUHlQeWNMb2FkZXJgIG5vdyBzdXBwb3J0cyB0aGUgbmV3IHNvdXJjZSBzaXplCiAgIGhlYWRlciBmaWVsZCBpbiAucHljIGZpbGVzLgogCiAtIElzc3VlICM1MzQ2OiBQcmVzZXJ2ZSBwZXJtaXNzaW9ucyBvZiBtYm94LCBNTURGIGFuZCBCYWJ5bCBtYWlsYm94IGZpbGVzIG9uCkBAIC01MTMsNyArNTExLDcgQEAKICAgcmVuYW1lZCBvdmVyIHRoZSBvbGQgZmlsZSB3aGVuIGZsdXNoKCkgaXMgY2FsbGVkIG9uIGFuIG1ib3gsIE1NREYgb3IgQmFieWwKICAgbWFpbGJveC4KIAotLSBJc3N1ZSAxMDkyNDogRml4ZWQgY3J5cHQubWtzYWx0KCkgdG8gdXNlIGEgUk5HIHRoYXQgaXMgc3VpdGFibGUgZm9yCistIElzc3VlICMxMDkyNDogRml4ZWQgYGNyeXB0Lm1rc2FsdCgpYCB0byB1c2UgYSBSTkcgdGhhdCBpcyBzdWl0YWJsZSBmb3IKICAgY3J5cHRvZ3JhcGhpYyBwdXJwb3NlLgogCiAtIElzc3VlICMxNTE4NDogRW5zdXJlIGNvbnNpc3RlbnQgcmVzdWx0cyBvZiBPUyBYIGNvbmZpZ3VyYXRpb24gdGFpbG9yaW5nIGZvcgpAQCAtNTI0LDEwICs1MjIsMTAgQEAKIEMgQVBJCiAtLS0tLQogCi0tIElzc3VlICMxNTYxMDogUHlJbXBvcnRfSW1wb3J0TW9kdWxlRXgoKSBub3cgdXNlcyBhICdsZXZlbCcgb2YgMCBpbnN0ZWFkIG9mIC0xLgorLSBJc3N1ZSAjMTU2MTA6IGBQeUltcG9ydF9JbXBvcnRNb2R1bGVFeCgpYCBub3cgdXNlcyBhICdsZXZlbCcgb2YgMCBpbnN0ZWFkIG9mIC0xLgogCi0tIElzc3VlcyAjMTUxNjksICMxNDU5OTogU3RyaXAgb3V0IHRoZSBDIGltcGxlbWVudGF0aW9uIG9mCi0gIGltcC5zb3VyY2VfZnJvbV9jYWNoZSgpIHVzZWQgYnkgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKCkgYW5kCistIElzc3VlICMxNTE2OSwgaXNzdWUgIzE0NTk5OiBTdHJpcCBvdXQgdGhlIEMgaW1wbGVtZW50YXRpb24gb2YKKyAgYGltcC5zb3VyY2VfZnJvbV9jYWNoZSgpYCB1c2VkIGJ5IFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcygpIGFuZAogICB1c2VkIHRoZSBQeXRob24gY29kZSBpbnN0ZWFkLiBMZWFkcyB0byBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdCgpIHRvIG5vdAogICB0cnkgdG8gaW5mZXIgdGhlIHNvdXJjZSBwYXRoIGZyb20gdGhlIGJ5dGVjb2RlIHBhdGggYXMKICAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKCkgZG9lcy4KQEAgLTUzNSwxNCArNTMzLDE3IEBACiBFeHRlbnNpb24gTW9kdWxlcwogLS0tLS0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMTU2NzY6IE5vdyAibW1hcCIgY2hlY2sgZm9yIGVtcHR5IGZpbGVzIGJlZm9yZSBkb2luZyB0aGUKLSAgb2Zmc2V0IGNoZWNrLiAgUGF0Y2ggYnkgU3RldmVuIFdpbGxpcy4KLQotLSBJc3N1ZSAjNjQ5MzogQW4gaXNzdWUgaW4gY3R5cGVzIG9uIFdpbmRvd3MgdGhhdCBjYXVzZWQgc3RydWN0dXJlIGJpdGZpZWxkcwotICBvZiB0eXBlIGN0eXBlcy5jX3VpbnQzMiBhbmQgd2lkdGggMzIgdG8gaW5jb3JyZWN0bHkgYmUgc2V0IGhhcyBiZWVuIGZpeGVkLgorLSBJc3N1ZSAjNjQ5MzogQW4gaXNzdWUgaW4gY3R5cGVzIG9uIFdpbmRvd3MgdGhhdCBjYXVzZWQgc3RydWN0dXJlIGJpdGZpZWxkcyBvZgorICB0eXBlIGBjdHlwZXMuY191aW50MzJgIGFuZCB3aWR0aCAzMiB0byBpbmNvcnJlY3RseSBiZSBzZXQgaGFzIGJlZW4gZml4ZWQuCiAKIC0gSXNzdWUgIzE1MTk0OiBVcGRhdGUgbGliZmZpIHRvIHRoZSAzLjAuMTEgcmVsZWFzZS4KIAorSURMRQorLS0tLQorCistIElzc3VlICMxMzA1MjogRml4IElETEUgY3Jhc2hpbmcgd2hlbiByZXBsYWNlIHN0cmluZyBpbiBTZWFyY2gvUmVwbGFjZSBkaWFsb2cKKyAgZW5kZWQgd2l0aCBgYFxgYC4gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCiBUb29scy9EZW1vcwogLS0tLS0tLS0tLS0KIApAQCAtNTYyLDggKzU2MywxMCBAQAogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMxNTQ0NDogVXNlIHByb3BlciBzcGVsbGluZyBmb3Igbm9uLUFTQ0lJIGNvbnRyaWJ1dG9yIG5hbWVzLiAgUGF0Y2gKLSAgYnkgU2VyaGl5IFN0b3JjaGFrYS4KKy0gSXNzdWUgIzE1MDQxOiBVcGRhdGUgInNlZSBhbHNvIiBsaXN0IGluIHRraW50ZXIgZG9jdW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjMTU0NDQ6IFVzZSBwcm9wZXIgc3BlbGxpbmcgZm9yIG5vbi1BU0NJSSBjb250cmlidXRvciBuYW1lcy4gIFBhdGNoIGJ5CisgIFNlcmhpeSBTdG9yY2hha2EuCiAKIC0gSXNzdWUgIzE1Mjk1OiBSZW9yZ2FuaXplIGFuZCByZXdyaXRlIHRoZSBkb2N1bWVudGF0aW9uIG9uIHRoZSBpbXBvcnQgc3lzdGVtLgogCkBAIC01NzgsMjUgKzU4MSwyOSBAQAogICAiY2hhbmdlZCIgc2luY2UgdGhleSB3aWxsIG5vIGxvbmdlciB3b3JrIHdpdGggbW9kdWxlcyBkaXJlY3RseSBpbXBvcnRlZCBieQogICBpbXBvcnQgaXRzZWxmLgogCi0tIElzc3VlICMxMzU1NzogQ2xhcmlmeSBlZmZlY3Qgb2YgZ2l2aW5nIHR3byBkaWZmZXJlbnQgbmFtZXNwYWNlcyB0byBleGVjIG9yCi0gIGV4ZWNmaWxlKCkuCistIElzc3VlICMxMzU1NzogQ2xhcmlmeSBlZmZlY3Qgb2YgZ2l2aW5nIHR3byBkaWZmZXJlbnQgbmFtZXNwYWNlcyB0byBgZXhlYygpYCBvcgorICBgZXhlY2ZpbGUoKWAuCiAKLS0gSXNzdWUgIzE1MjUwOiBEb2N1bWVudCB0aGF0IGZpbGVjbXAuZGlyY21wIGNvbXBhcmVzIGZpbGVzIHNoYWxsb3dseS4gUGF0Y2gKKy0gSXNzdWUgIzE1MjUwOiBEb2N1bWVudCB0aGF0IGBmaWxlY21wLmRpcmNtcCgpYCBjb21wYXJlcyBmaWxlcyBzaGFsbG93bHkuIFBhdGNoCiAgIGNvbnRyaWJ1dGVkIGJ5IENocmlzIEplcmRvbmVrLgogCistIElzc3VlICMxNTQ0MjogRXhwb3NlIHRoZSBkZWZhdWx0IGxpc3Qgb2YgZGlyZWN0b3JpZXMgaWdub3JlZCBieQorICBgZmlsZWNtcC5kaXJjbXAoKWAgYXMgYSBtb2R1bGUgYXR0cmlidXRlLCBhbmQgZXhwYW5kIHRoZSBsaXN0IHRvIG1vcmUgbW9kZXJuCisgIHZhbHVlcy4KKwogVGVzdHMKIC0tLS0tCiAKLS0gSXNzdWUgIzE1NDY3OiBNb3ZlIGhlbHBlcnMgZm9yIF9fc2l6ZW9mX18gdGVzdHMgaW50byB0ZXN0X3N1cHBvcnQuICBQYXRjaCBieQotICBTZXJoaXkgU3RvcmNoYWthLgorLSBJc3N1ZSAjMTU0Njc6IE1vdmUgaGVscGVycyBmb3IgYF9fc2l6ZW9mX18oKWAgdGVzdHMgaW50byB0ZXN0X3N1cHBvcnQuICBQYXRjaAorICBieSBTZXJoaXkgU3RvcmNoYWthLgogCiAtIElzc3VlICMxNTMyMDogTWFrZSBpdGVyYXRpbmcgdGhlIGxpc3Qgb2YgdGVzdHMgdGhyZWFkLXNhZmUgd2hlbiBydW5uaW5nIHRlc3RzCiAgIGluIG11bHRpcHJvY2VzcyBtb2RlLiBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KIAotLSBJc3N1ZSAjMTUxNjg6IE1vdmUgaW1wb3J0bGliLnRlc3QgdG8gdGVzdC50ZXN0X2ltcG9ydGxpYi4KKy0gSXNzdWUgIzE1MTY4OiBNb3ZlIGBpbXBvcnRsaWIudGVzdGAgdG8gYHRlc3QudGVzdF9pbXBvcnRsaWJgLgogCiAtIElzc3VlICMxNTA5MTogUmVhY3RpdmF0ZSBhIHRlc3Qgb24gVU5JWCB3aGljaCB3YXMgZmFpbGluZyB0aGFua3MgdG8gYQotICBmb3Jnb3R0ZW4gaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkgY2FsbC4KKyAgZm9yZ290dGVuIGBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKWAgY2FsbC4KIAogLSBJc3N1ZSAjMTUyMzA6IEFkb3B0ZWQgYSBtb3JlIHN5c3RlbWF0aWMgYXBwcm9hY2ggaW4gdGhlIHJ1bnB5IHRlc3RzLgogCkBAIC02MjksNiArNjM2LDggQEAKIAogLSBJc3N1ZSAjMTQwMTg6IEZpeCBPUyBYIFRjbC9UayBmcmFtZXdvcmsgY2hlY2tpbmcgd2hlbiB1c2luZyBPUyBYIFNES3MuCiAKKy0gSXNzdWUgIzE2MjU2OiBPUyBYIGluc3RhbGxlciBub3cgc2V0cyBjb3JyZWN0IHBlcm1pc3Npb25zIGZvciBkb2MgZGlyZWN0b3J5LgorCiAtIElzc3VlICMxNTQzMTogQWRkIF9mcmVlemVfaW1wb3J0bGliIHByb2plY3QgdG8gcmVnZW5lcmF0ZSBpbXBvcnRsaWIuaCBvbgogICBXaW5kb3dzLiBQYXRjaCBieSBLcmlzdGrDoW4gVmFsdXIgSsOzbnNzb24uCiAKQEAgLTY2NCwxNCArNjczLDkgQEAKIAogLSBJc3N1ZSAjMTE2MjY6IEFkZCBfU2l6ZVQgZnVuY3Rpb25zIHRvIHN0YWJsZSBBQkkuCiAKLS0gSXNzdWUgIzE1MTQ2OiBBZGQgUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzLiBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCi0KIC0gSXNzdWUgIzE1MTQyOiBGaXggcmVmZXJlbmNlIGxlYWsgd2hlbiBkZWFsbG9jYXRpbmcgaW5zdGFuY2VzIG9mIHR5cGVzCiAgIGNyZWF0ZWQgdXNpbmcgUHlUeXBlX0Zyb21TcGVjKCkuCiAKLS0gSXNzdWUgIzE1MDQyOiBBZGQgUHlTdGF0ZV9BZGRNb2R1bGUgYW5kIFB5U3RhdGVfUmVtb3ZlTW9kdWxlLiBBZGQgdmVyc2lvbgotICBndWFyZCBmb3IgUHlfTElNSVRFRF9BUEkgYWRkaXRpb25zLiBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCi0KIC0gSXNzdWUgIzEwMDUzOiBEb24ndCBjbG9zZSBGRHMgd2hlbiBGaWxlSU8uX19pbml0X18gZmFpbHMuIExvb3NlbHkgYmFzZWQgb24KICAgdGhlIHdvcmsgYnkgSGlyb2thenUgWWFtYW1vdG8uCiAKQEAgLTY5OSw5ICs3MDMsNiBAQAogTGlicmFyeQogLS0tLS0tLQogCi0tIElzc3VlICM5ODAzOiBEb24ndCBjbG9zZSBJRExFIG9uIHNhdmluZyBpZiBicmVha3BvaW50IGlzIG9wZW4uCi0gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCiAtIElzc3VlICMxMjI4ODogQ29uc2lkZXIgJzAnIGFuZCAnMC4wJyBhcyB2YWxpZCBpbml0aWFsdmFsdWUKICAgZm9yIHRraW50ZXIgU2ltcGxlRGlhbG9nLgogCkBAIC03MjAsMTQgKzcyMSw4IEBACiAtIElzc3VlICMxNTUxNDogQ29ycmVjdCBfX3NpemVvZl9fIHN1cHBvcnQgZm9yIGNwdV9zZXQuCiAgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKLS0gSXNzdWUgIzE1MTg3OiBCdWdmaXg6IHJlbW92ZSB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgdGVzdF9zaHV0aWwgd2FzIGxlYXZpbmcKLSAgYmVoaW5kLgotCiAtIElzc3VlICMxNTE3NzogQWRkZWQgZGlyX2ZkIHBhcmFtZXRlciB0byBvcy5md2FsaygpLgogCi0tIElzc3VlICMxNTE3NjogQ2xhcmlmaWVkIGJlaGF2aW9yLCBkb2N1bWVudGF0aW9uLCBhbmQgaW1wbGVtZW50YXRpb24KLSAgb2Ygb3MubGlzdGRpcigpLgotCiAtIElzc3VlICMxNTA2MTogUmUtaW1wbGVtZW50ZWQgaG1hYy5jb21wYXJlX2RpZ2VzdCgpIGluIEMgdG8gcHJldmVudCBmdXJ0aGVyCiAgIHRpbWluZyBhbmFseXNpcyBhbmQgdG8gc3VwcG9ydCBhbGwgYnVmZmVyIHByb3RvY29sIGF3YXJlIG9iamVjdHMgYXMgd2VsbCBhcwogICBBU0NJSSBvbmx5IHN0ciBpbnN0YW5jZXMgc2FmZWx5LgpAQCAtODI3LDEwICs4MjIsNiBAQAogLSBJc3N1ZSAjMTUwMDY6IEFsbG93IGVxdWFsaXR5IGNvbXBhcmlzb24gYmV0d2VlbiBuYWl2ZSBhbmQgYXdhcmUKICAgdGltZSBvciBkYXRldGltZSBvYmplY3RzLgogCi0tIElzc3VlICMxNDk4MjogRG9jdW1lbnQgdGhhdCBwa2d1dGlsJ3MgaXRlcmF0aW9uIGZ1bmN0aW9ucyByZXF1aXJlIHRoZQotICBub24tc3RhbmRhcmQgaXRlcl9tb2R1bGVzKCkgbWV0aG9kIHRvIGJlIGRlZmluZWQgYnkgYW4gaW1wb3J0ZXIgKHNvbWV0aGluZwotICB0aGUgaW1wb3J0bGliIGltcG9ydGVycyBkbyBub3QgZGVmaW5lKS4KLQogLSBJc3N1ZSAjMTUwMzY6IE1haWxib3ggbm8gbG9uZ2VyIHRocm93cyBhbiBlcnJvciBpZiBhIGZsdXNoIGlzIGRvbmUKICAgYmV0d2VlbiBvcGVyYXRpb25zIHdoZW4gcmVtb3Zpbmcgb3IgY2hhbmdpbmcgbXVsdGlwbGUgaXRlbXMgaW4gbWJveCwKICAgTU1ERiwgb3IgQmFieWwgbWFpbGJveGVzLgpAQCAtODk4LDkgKzg4OSw2IEBACiAKIC0gSXNzdWUgIzE0OTY5OiBCZXR0ZXIgaGFuZGxpbmcgb2YgZXhjZXB0aW9uIGNoYWluaW5nIGluIGNvbnRleHRsaWIuRXhpdFN0YWNrCiAKLS0gSXNzdWUgIzE0OTYyOiBVcGRhdGUgdGV4dCBjb2xvcmluZyBpbiBJRExFIHNoZWxsIHdpbmRvdyBhZnRlciBjaGFuZ2luZwotICBvcHRpb25zLiAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KIC0gSXNzdWUgIzE0OTYzOiBDb252ZXJ0IGNvbnRleHRsaWIuRXhpdFN0YWNrLl9fZXhpdF9fIHRvIHVzZSBhbiBpdGVyYXRpdmUKICAgYWxnb3JpdGhtIChQYXRjaCBieSBBbG9uIEhvcmV2KQogCkBAIC05MTMsNiArOTAxLDExIEBACiBDLUFQSQogLS0tLS0KIAorLSBJc3N1ZSAjMTUxNDY6IEFkZCBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMuIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKworLSBJc3N1ZSAjMTUwNDI6IEFkZCBQeVN0YXRlX0FkZE1vZHVsZSBhbmQgUHlTdGF0ZV9SZW1vdmVNb2R1bGUuIEFkZCB2ZXJzaW9uCisgIGd1YXJkIGZvciBQeV9MSU1JVEVEX0FQSSBhZGRpdGlvbnMuIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKwogLSBJc3N1ZSAjMTM3ODM6IEluYWR2ZXJ0ZW50IGFkZGl0aW9ucyB0byB0aGUgcHVibGljIEMgQVBJIGluIHRoZSBQRVAgMzgwCiAgIGltcGxlbWVudGF0aW9uIGhhdmUgZWl0aGVyIGJlZW4gcmVtb3ZlZCBvciBtYXJrZWQgYXMgcHJpdmF0ZSBpbnRlcmZhY2VzLgogCkBAIC05MjEsOSArOTE0LDI1IEBACiAKIC0gSXNzdWUgIzE1MDAwOiBTdXBwb3J0IHRoZSAidW5pcXVlIiB4MzIgYXJjaGl0ZWN0dXJlIGluIF9wb3NpeHN1YnByb2Nlc3MuYy4KIAorSURMRQorLS0tLQorCistIElzc3VlICM5ODAzOiBEb24ndCBjbG9zZSBJRExFIG9uIHNhdmluZyBpZiBicmVha3BvaW50IGlzIG9wZW4uCisgIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCistIElzc3VlICMxNDk2MjogVXBkYXRlIHRleHQgY29sb3JpbmcgaW4gSURMRSBzaGVsbCB3aW5kb3cgYWZ0ZXIgY2hhbmdpbmcKKyAgb3B0aW9ucy4gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzE1MTc2OiBDbGFyaWZpZWQgYmVoYXZpb3IsIGRvY3VtZW50YXRpb24sIGFuZCBpbXBsZW1lbnRhdGlvbgorICBvZiBvcy5saXN0ZGlyKCkuCisKKy0gSXNzdWUgIzE0OTgyOiBEb2N1bWVudCB0aGF0IHBrZ3V0aWwncyBpdGVyYXRpb24gZnVuY3Rpb25zIHJlcXVpcmUgdGhlCisgIG5vbi1zdGFuZGFyZCBpdGVyX21vZHVsZXMoKSBtZXRob2QgdG8gYmUgZGVmaW5lZCBieSBhbiBpbXBvcnRlciAoc29tZXRoaW5nCisgIHRoZSBpbXBvcnRsaWIgaW1wb3J0ZXJzIGRvIG5vdCBkZWZpbmUpLgorCiAtIElzc3VlICMxNTA4MTogRG9jdW1lbnQgUHlTdGF0ZV9GaW5kTW9kdWxlLgogICBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCiAKQEAgLTkzMiw2ICs5NDEsOSBAQAogVGVzdHMKIC0tLS0tCiAKKy0gSXNzdWUgIzE1MTg3OiBCdWdmaXg6IHJlbW92ZSB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgdGVzdF9zaHV0aWwgd2FzIGxlYXZpbmcKKyAgYmVoaW5kLgorCiAtIElzc3VlICMxNDc2OTogdGVzdF9jYXBpIG5vdyBoYXMgU2tpcGl0ZW1UZXN0LCB3aGljaCBjbGV2ZXJseSBjaGVja3MKICAgZm9yICJwYXJpdHkiIGJldHdlZW4gUHlBcmdfUGFyc2VUdXBsZSgpIGFuZCB0aGUgUHl0aG9uL2dldGFyZ3MuYyBzdGF0aWMKICAgZnVuY3Rpb24gc2tpcGl0ZW0oKSBmb3IgYWxsIHBvc3NpYmxlICJmb3JtYXQgdW5pdHMiLgpAQCAtMTAyMCwzNCArMTAzMiwxOCBAQAogLSBJc3N1ZSAjMTQ3MDA6IEZpeCB0d28gYnJva2VuIGFuZCB1bmRlZmluZWQtYmVoYXZpb3VyLWluZHVjaW5nIG92ZXJmbG93IGNoZWNrcwogICBpbiBvbGQtc3R5bGUgc3RyaW5nIGZvcm1hdHRpbmcuCiAKLS0gSXNzdWUgIzE0NzA1OiBUaGUgUHlBcmdfUGFyc2UoKSBmYW1pbHkgb2YgZnVuY3Rpb25zIG5vdyBzdXBwb3J0IHRoZSAncCcgZm9ybWF0Ci0gIHVuaXQsIHdoaWNoIGFjY2VwdHMgYSAiYm9vbGVhbiBwcmVkaWNhdGUiIGFyZ3VtZW50LiAgSXQgY29udmVydHMgYW55IFB5dGhvbgotICB2YWx1ZSBpbnRvIGFuIGludGVnZXItLTAgaWYgaXQgaXMgImZhbHNlIiwgYW5kIDEgb3RoZXJ3aXNlLgotCiBMaWJyYXJ5CiAtLS0tLS0tCiAKIC0gSXNzdWUgIzE0NjkwOiBVc2UgbW9ub3RvbmljIGNsb2NrIGluc3RlYWQgb2Ygc3lzdGVtIGNsb2NrIGluIHRoZSBzY2hlZCwKICAgc3VicHJvY2VzcyBhbmQgdHJhY2UgbW9kdWxlcy4KIAotLSBJc3N1ZSAjMTQ5NTg6IENoYW5nZSBJRExFIHN5c3RheCBoaWdobGlnaHRpbmcgdG8gcmVjb2duaXplIGFsbCBzdHJpbmcgYW5kCi0gIGJ5dGUgbGl0ZXJhbHMgc3VwcG9ydGVkIGluIFB5dGhvbiAzLjMuCi0KLS0gSXNzdWUgIzEwOTk3OiBQcmV2ZW50IGEgZHVwbGljYXRlIGVudHJ5IGluIElETEUncyAiUmVjZW50IEZpbGVzIiBtZW51LgotCiAtIElzc3VlICMxNDQ0MzogVGVsbCBycG1idWlsZCB0byB1c2UgdGhlIGNvcnJlY3QgdmVyc2lvbiBvZiBQeXRob24gaW4KICAgYmRpc3RfcnBtLiBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgogCi0tIElzc3VlICMxNDkyOTogU3RvcCBJZGxlIDMueCBmcm9tIGNsb3Npbmcgb24gVW5pY29kZSBkZWNvZGUgZXJyb3JzIHdoZW4KLSAgZ3JlcHBpbmcuIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCiAtIElzc3VlICMxMjUxNTogZW1haWwgbm93IHJlZ2lzdGVycyBhIGRlZmVjdCBpZiBpdCBnZXRzIHRvIEVPRiB3aGlsZSBwYXJzaW5nCiAgIGEgTUlNRSBwYXJ0IHdpdGhvdXQgc2VlaW5nIHRoZSBjbG9zaW5nIE1JTUUgYm91bmRhcnkuCiAKLS0gSXNzdWUgIzEyNTEwOiBBdHRlbXB0aW5nIHRvIGdldCBpbnZhbGlkIHRvb2x0aXAgbm8gbG9uZ2VyIGNsb3NlcyBJZGxlLgotICBPdGhlciB0b29sdGlwc3MgaGF2ZSBiZWVuIGNvcnJlY3RlZCBvciBpbXByb3ZlZCBhbmQgdGhlIG51bWJlciBvZiB0ZXN0cwotICBoYXMgYmVlbiB0cmlwbGVkLiBPcmlnaW5hbCBwYXRjaCBieSBSb2dlciBTZXJ3eS4KLQogLSBJc3N1ZSAjMTY3MjU2ODogZW1haWwgbm93IGFsd2F5cyBkZWNvZGVzIGJhc2U2NCBwYXlsb2FkcywgYWRkaW5nIHBhZGRpbmcgYW5kCiAgIGlnbm9yaW5nIG5vbi1iYXNlNjQtYWxwaGFiZXQgY2hhcmFjdGVycyBpZiBuZWVkZWQsIGFuZCByZWdpc3RlcmluZyBkZWZlY3RzCiAgIGZvciBhbnkgc3VjaCBwcm9ibGVtcy4KQEAgLTEwODEsOSArMTA3Nyw2IEBACiAtIElzc3VlICMxNDU0ODogTWFrZSBtdWx0aXByb2Nlc3NpbmcgZmluYWxpemVycyBjaGVjayBwaWQgYmVmb3JlCiAgIHJ1bm5pbmcgdG8gY29wZSB3aXRoIHBvc3NpYmlsaXR5IG9mIGdjIHJ1bm5pbmcganVzdCBhZnRlciBmb3JrLgogCi0tIElzc3VlICMxNDg2MzogVXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIG9mIG9zLmZkb3BlbigpIHRvIHJlZmxlY3QgdGhlCi0gIGZhY3QgdGhhdCBpdCdzIG9ubHkgYSB0aGluIHdyYXBwZXIgYXJvdW5kIG9wZW4oKSBhbnltb3JlLgotCiAtIElzc3VlICMxNDAzNjogQWRkIGFuIGFkZGl0aW9uYWwgY2hlY2sgdG8gdmFsaWRhdGUgdGhhdCBwb3J0IGluIHVybHBhcnNlIGRvZXMKICAgbm90IGdvIGluIGlsbGVnYWwgcmFuZ2UgYW5kIHJldHVybnMgTm9uZS4KIApAQCAtMTIxMCw2ICsxMjAzLDIxIEBACiAtIElzc3VlICMxNDEyNyBhbmQgIzEwMTQ4OiBzaHV0aWwuY29weXN0YXQgbm93IHByZXNlcnZlcyBleGFjdCBtdGltZSBhbmQgYXRpbWUKICAgb24gZmlsZXN5c3RlbXMgcHJvdmlkaW5nIG5hbm9zZWNvbmQgcmVzb2x1dGlvbi4KIAorSURMRQorLS0tLQorCistIElzc3VlICMxNDk1ODogQ2hhbmdlIElETEUgc3lzdGF4IGhpZ2hsaWdodGluZyB0byByZWNvZ25pemUgYWxsIHN0cmluZyBhbmQKKyAgYnl0ZSBsaXRlcmFscyBzdXBwb3J0ZWQgaW4gUHl0aG9uIDMuMy4KKworLSBJc3N1ZSAjMTA5OTc6IFByZXZlbnQgYSBkdXBsaWNhdGUgZW50cnkgaW4gSURMRSdzICJSZWNlbnQgRmlsZXMiIG1lbnUuCisKKy0gSXNzdWUgIzE0OTI5OiBTdG9wIElETEUgMy54IGZyb20gY2xvc2luZyBvbiBVbmljb2RlIGRlY29kZSBlcnJvcnMgd2hlbgorICBncmVwcGluZy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCisKKy0gSXNzdWUgIzEyNTEwOiBBdHRlbXB0aW5nIHRvIGdldCBpbnZhbGlkIHRvb2x0aXAgbm8gbG9uZ2VyIGNsb3NlcyBJRExFLgorICBPdGhlciB0b29sdGlwc3MgaGF2ZSBiZWVuIGNvcnJlY3RlZCBvciBpbXByb3ZlZCBhbmQgdGhlIG51bWJlciBvZiB0ZXN0cworICBoYXMgYmVlbiB0cmlwbGVkLiBPcmlnaW5hbCBwYXRjaCBieSBSb2dlciBTZXJ3eS4KKwogVG9vbHMvRGVtb3MKIC0tLS0tLS0tLS0tCiAKQEAgLTEyMjgsOSArMTIzNiwxOSBAQAogCiAtIElzc3VlICMxMzIxMDogV2luZG93cyBidWlsZCBub3cgdXNlcyBWUzIwMTAsIHBvcnRlZCBmcm9tIFZTMjAwOC4KIAorQy1BUEkKKy0tLS0tCisKKy0gSXNzdWUgIzE0NzA1OiBUaGUgUHlBcmdfUGFyc2UoKSBmYW1pbHkgb2YgZnVuY3Rpb25zIG5vdyBzdXBwb3J0IHRoZSAncCcgZm9ybWF0CisgIHVuaXQsIHdoaWNoIGFjY2VwdHMgYSAiYm9vbGVhbiBwcmVkaWNhdGUiIGFyZ3VtZW50LiAgSXQgY29udmVydHMgYW55IFB5dGhvbgorICB2YWx1ZSBpbnRvIGFuIGludGVnZXItLTAgaWYgaXQgaXMgImZhbHNlIiwgYW5kIDEgb3RoZXJ3aXNlLgorCiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzE0ODYzOiBVcGRhdGUgdGhlIGRvY3VtZW50YXRpb24gb2Ygb3MuZmRvcGVuKCkgdG8gcmVmbGVjdCB0aGUKKyAgZmFjdCB0aGF0IGl0J3Mgb25seSBhIHRoaW4gd3JhcHBlciBhcm91bmQgb3BlbigpIGFueW1vcmUuCisKIC0gSXNzdWUgIzE0NTg4OiBUaGUgbGFuZ3VhZ2UgcmVmZXJlbmNlIG5vdyBhY2N1cmF0ZWx5IGRvY3VtZW50cyB0aGUgUHl0aG9uIDMKICAgY2xhc3MgZGVmaW5pdGlvbiBwcm9jZXNzLiBQYXRjaCBieSBOaWNrIENvZ2hsYW4uCiAKQEAgLTEyNzksOSArMTI5Nyw2IEBACiAtIElzc3VlICMxNDMzOTogU3BlZWQgaW1wcm92ZW1lbnRzIHRvIGJpbiwgb2N0IGFuZCBoZXggZnVuY3Rpb25zLiAgUGF0Y2ggYnkKICAgU2VyaGl5IFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjMTQwOTg6IE5ldyBmdW5jdGlvbnMgUHlFcnJfR2V0RXhjSW5mbyBhbmQgUHlFcnJfU2V0RXhjSW5mby4KLSAgUGF0Y2ggYnkgU3RlZmFuIEJlaG5lbC4KLQogLSBJc3N1ZSAjMTQzODU6IEl0IGlzIG5vdyBwb3NzaWJsZSB0byB1c2UgYSBjdXN0b20gdHlwZSBmb3IgdGhlIF9fYnVpbHRpbnNfXwogICBuYW1lc3BhY2UsIGluc3RlYWQgb2YgYSBkaWN0LiBJdCBjYW4gYmUgdXNlZCBmb3Igc2FuZGJveGluZyBmb3IgZXhhbXBsZS4KICAgUmFpc2UgYWxzbyBhIE5hbWVFcnJvciBpbnN0ZWFkIG9mIEltcG9ydEVycm9yIGlmIF9fYnVpbGRfY2xhc3NfXyBuYW1lIGlmIG5vdApAQCAtMTQzMSwxMiArMTQ0Niw2IEBACiAKIC0gRG9uJ3QgUHlfREVDUkVGIE5VTEwgdmFyaWFibGUgaW4gaW8uSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlci4KIAotLSBJc3N1ZSAjODUxNTogU2V0IF9fZmlsZV9fIHdoZW4gcnVuIGZpbGUgaW4gSURMRS4KLSAgSW5pdGlhbCBwYXRjaCBieSBCcnVjZSBGcmVkZXJpa3Nlbi4KLQotLSBJc3N1ZSAjMTQ0OTY6IEZpeCB3cm9uZyBuYW1lIGluIGlkbGVsaWIvdGFiYmVkcGFnZXMucHkuCi0gIFBhdGNoIGJ5IFBvcGEgQ2xhdWRpdS4KLQogLSBJc3N1ZSAjMzAzMzogQWRkIGRpc3BsYXlvZiBwYXJhbWV0ZXIgdG8gdGtpbnRlciBmb250LiBQYXRjaCBieSBHdWlsaGVybWUgUG9sby4KIAogLSBJc3N1ZSAjMTQ0ODI6IFJhaXNlIGEgVmFsdWVFcnJvciwgbm90IGEgTmFtZUVycm9yLCB3aGVuIHRyeWluZyB0byBjcmVhdGUKQEAgLTE0NzIsNiArMTQ4MSwxNSBAQAogLSBJc3N1ZSAjMTQzNTU6IFJlZ3J0ZXN0IG5vdyBzdXBwb3J0cyB0aGUgc3RhbmRhcmQgdW5pdHRlc3QgdGVzdCBsb2FkaW5nLCBhbmQKICAgd2lsbCB1c2UgaXQgaWYgYSB0ZXN0IGZpbGUgY29udGFpbnMgbm8gYHRlc3RfbWFpbmAgbWV0aG9kLgogCitJRExFCistLS0tCisKKy0gSXNzdWUgIzg1MTU6IFNldCBfX2ZpbGVfXyB3aGVuIHJ1biBmaWxlIGluIElETEUuCisgIEluaXRpYWwgcGF0Y2ggYnkgQnJ1Y2UgRnJlZGVyaWtzZW4uCisKKy0gSXNzdWUgIzE0NDk2OiBGaXggd3JvbmcgbmFtZSBpbiBpZGxlbGliL3RhYmJlZHBhZ2VzLnB5LgorICBQYXRjaCBieSBQb3BhIENsYXVkaXUuCisKIFRvb2xzIC8gRGVtb3MKIC0tLS0tLS0tLS0tLS0KIApAQCAtMTQ4MSw2ICsxNDk5LDEyIEBACiAtIElzc3VlICMxMzE2NTogc3RyaW5nYmVuY2ggaXMgbm93IGF2YWlsYWJsZSBpbiB0aGUgVG9vbHMvc3RyaW5nYmVuY2ggZm9sZGVyLgogICBJdCB1c2VkIHRvIGxpdmUgaW4gaXRzIG93biBTVk4gcHJvamVjdC4KIAorQy1BUEkKKy0tLS0tCisKKy0gSXNzdWUgIzE0MDk4OiBOZXcgZnVuY3Rpb25zIFB5RXJyX0dldEV4Y0luZm8gYW5kIFB5RXJyX1NldEV4Y0luZm8uCisgIFBhdGNoIGJ5IFN0ZWZhbiBCZWhuZWwuCisKIAogV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQWxwaGEgMj8KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xNTMyLDE2ICsxNTU2LDkgQEAKIAogLSBJc3N1ZSAjNTEzNjogZGVwcmVjYXRlIG9sZCwgdW51c2VkIGZ1bmN0aW9ucyBmcm9tIHRraW50ZXIuCiAKLS0gSXNzdWUgIzE0NDA5OiBJRExFIG5vdyBwcm9wZXJseSBleGVjdXRlcyBjb21tYW5kcyBpbiB0aGUgU2hlbGwgd2luZG93Ci0gIHdoZW4gaXQgY2Fubm90IHJlYWQgdGhlIG5vcm1hbCBjb25maWcgZmlsZXMgb24gc3RhcnR1cCBhbmQKLSAgaGFzIHRvIHVzZSB0aGUgYnVpbHQtaW4gZGVmYXVsdCBrZXkgYmluZGluZ3MuCi0gIFRoZXJlIHdhcyBwcmV2aW91c2x5IGEgYnVnIGluIG9uZSBvZiB0aGUgZGVmYXVsdHMuCi0KIC0gSXNzdWUgIzE0NDE2OiBzeXNsb2cgbm93IGRlZmluZXMgdGhlIExPR19PREVMQVkgYW5kIExPR19BVVRIUFJJViBjb25zdGFudHMKICAgaWYgdGhleSBhcmUgZGVmaW5lZCBpbiA8c3lzbG9nLmg+LgogCi0tIElETEUgY2FuIGJlIGxhdW5jaGVkIGFzIHB5dGhvbiAtbSBpZGxlbGliCi0KIC0gSXNzdWUgIzE0Mjk1OiBBZGQgdW5pdHRlc3QubW9jawogCiAtIElzc3VlICM3NjUyOiBBZGQgLS13aXRoLXN5c3RlbS1saWJtcGRlYyBvcHRpb24gdG8gY29uZmlndXJlIGZvciBsaW5raW5nCkBAIC0xNTY3LDkgKzE1ODQsNiBAQAogICB1cCB0aGUgZGVjaW1hbCBtb2R1bGUuIFBlcmZvcm1hbmNlIGdhaW5zIG9mIHRoZSBuZXcgQyBpbXBsZW1lbnRhdGlvbiBhcmUKICAgYmV0d2VlbiAxMHggYW5kIDEwMHgsIGRlcGVuZGluZyBvbiB0aGUgYXBwbGljYXRpb24uCiAKLS0gSXNzdWUgIzM1NzM6IElETEUgaGFuZ3Mgd2hlbiBwYXNzaW5nIGludmFsaWQgY29tbWFuZCBsaW5lIGFyZ3MKLSAgKGRpcmVjdG9yeShpZXMpIGluc3RlYWQgb2YgZmlsZShzKSkgKFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvKQotCiAtIElzc3VlICMxNDI2OTogU01UUEQgbm93IGNvbmZvcm1zIHRvIHRoZSBSRkMgYW5kIHJlcXVpcmVzIGEgSEVMTyBjb21tYW5kCiAgIGJlZm9yZSBNQUlMLCBSQ1BULCBvciBEQVRBLgogCkBAIC0xNjAxLDggKzE2MTUsNiBAQAogICBkZW5pYWwgb2Ygc2VydmljZSBkdWUgdG8gaGFzaCBjb2xsaXNpb25zLiAgUGF0Y2ggYnkgRGF2aWQgTWFsY29sbSB3aXRoIHNvbWUKICAgbW9kaWZpY2F0aW9ucyBieSB0aGUgZXhwYXQgcHJvamVjdC4KIAotLSBJc3N1ZSAjMTQyMDA6IElkbGUgc2hlbGwgY3Jhc2ggb24gcHJpbnRpbmcgbm9uLUJNUCB1bmljb2RlIGNoYXJhY3Rlci4KLQogLSBJc3N1ZSAjMTI4MTg6IGZvcm1hdCBhZGRyZXNzIG5vIGxvbmdlciBuZWVkbGVzc2x5IFwgZXNjYXBlcyAoKXMgaW4gbmFtZXMgd2hlbgogICB0aGUgbmFtZSBlbmRzIHVwIGJlaW5nIHF1b3RlZC4KIApAQCAtMTYxOCw4ICsxNjMwLDYgQEAKIAogLSBJc3N1ZSAjOTg5NzEyOiBTdXBwb3J0IHVzaW5nIFRrIHdpdGhvdXQgYSBtYWlubG9vcC4KIAotLSBJc3N1ZSAjNTIxOTogUHJldmVudCBldmVudCBoYW5kbGVyIGNhc2NhZGUgaW4gSURMRS4KLQogLSBJc3N1ZSAjMzgzNTogUmVmdXNlIHRvIHVzZSB1bnRocmVhZGVkIFRjbCBpbiB0aHJlYWRlZCBQeXRob24uCiAKIC0gSXNzdWUgIzI4NDM6IEFkZCBuZXcgVGsgQVBJIHRvIFRraW50ZXIuCkBAIC0xODQ4LDEwICsxODU4LDYgQEAKICAgb24gUE9TSVggc3lzdGVtcyBzdXBwb3J0aW5nIGFub255bW91cyBtZW1vcnkgbWFwcGluZ3MuICBQYXRjaCBieQogICBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCiAKLS0gSXNzdWUgIzEzNDUyOiBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbCgpIGRvZXNuJ3Qgc3VwcG9ydCBlcnJvciBoYW5kbGVycwotICBkaWZmZXJlbnQgdGhhbiAic3RyaWN0IiBhbnltb3JlLiBUaGUgY2FsbGVyIHdhcyB1bmFibGUgdG8gY29tcHV0ZSB0aGUKLSAgc2l6ZSBvZiB0aGUgb3V0cHV0IGJ1ZmZlcjogaXQgZGVwZW5kcyBvbiB0aGUgZXJyb3IgaGFuZGxlci4KLQogLSBQRVAgMzE1NSAvIGlzc3VlICMxMzQ0ODogUXVhbGlmaWVkIG5hbWUgZm9yIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucy4KIAogLSBJc3N1ZSAjMTM0MzY6IEZpeCBhIGJvZ3VzIGVycm9yIG1lc3NhZ2Ugd2hlbiBhbiBBU1Qgb2JqZWN0IHdhcyBwYXNzZWQKQEAgLTE5NDIsMTAgKzE5NDgsNiBAQAogCiAtIFBFUCAzMTUxIC8gaXNzdWUgIzEyNTU1OiByZXdvcmtpbmcgdGhlIE9TIGFuZCBJTyBleGNlcHRpb24gaGllcmFyY2h5LgogCi0tIElzc3VlICMxMzU2MDogQWRkIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoKSwgUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUoKQotICBhbmQgUHlVbmljb2RlX0VuY29kZUxvY2FsZSgpIGZ1bmN0aW9ucyB0byB0aGUgQyBBUEkgdG8gZGVjb2RlL2VuY29kZSBmcm9tL3RvCi0gIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZy4KLQogLSBBZGQgaW50ZXJuYWwgQVBJIGZvciBzdGF0aWMgc3RyaW5ncyAoX1B5X2lkZW50aWZpZXIgZXQgYWwuKS4KIAogLSBJc3N1ZSAjMTMwNjM6IHRoZSBXaW5kb3dzIGVycm9yIEVSUk9SX05PX0RBVEEgKG51bWJlcmVkIDIzMiBhbmQgZGVzY3JpYmVkCkBAIC0yMDI4LDcgKzIwMzAsNyBAQAogICBkZWFsbG9jYXRvciBjYWxscyBvbmUgb2YgdGhlIG1ldGhvZHMgb24gdGhlIHR5cGUgKGUuZy4gd2hlbiBzdWJjbGFzc2luZwogICBJT0Jhc2UpLiAgRGlhZ25vc2lzIGFuZCBwYXRjaCBieSBEYXZpZGUgUml6em8uCiAKLS0gSXNzdWUgIzk2MTEsICM5MDE1OiBGaWxlSU8ucmVhZCgpIGNsYW1wcyB0aGUgbGVuZ3RoIHRvIElOVF9NQVggb24gV2luZG93cy4KKy0gSXNzdWUgIzk2MTEsIElzc3VlICM5MDE1OiBGaWxlSU8ucmVhZCgpIGNsYW1wcyB0aGUgbGVuZ3RoIHRvIElOVF9NQVggb24gV2luZG93cy4KIAogLSBJc3N1ZSAjOTY0MjogVW5pZm9ybWl6ZSB0aGUgdGVzdHMgb24gdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGUgbWJjcyBjb2RlYywgYWRkCiAgIGEgbmV3IEhBVkVfTUJDUyBkZWZpbmUuCkBAIC0yMTkxLDE3ICsyMTkzLDExIEBACiAgIFB5VW5pY29kZV9Bc1VURjhTdHJpbmcoKSBhbmQgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh1bmljb2RlLCAidXRmLTgiLAogICBOVUxMKS4KIAotLSBJc3N1ZSAjMTA4MzE6IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCkgc3VwcG9ydHMgJWxpLCAlbGxpIGFuZCAlemkgZm9ybWF0cy4KLQogLSBJc3N1ZSAjMTA4Mjk6IFJlZmFjdG9yIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCksIHVzZSB0aGUgc2FtZSBmdW5jdGlvbiB0byBwYXJzZQogICB0aGUgZm9ybWF0IHN0cmluZyBpbiB0aGUgMyBzdGVwcywgZml4IGNyYXNocyBvbiBpbnZhbGlkIGZvcm1hdCBzdHJpbmdzLgogCiAtIElzc3VlICMxMzAwNzogd2hpY2hkYiBzaG91bGQgcmVjb2duaXplIGdkYm0gMS45IG1hZ2ljIG51bWJlcnMuCiAKLS0gSXNzdWUgIzExMjQ2OiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVWIikgdG8gZGVjb2RlIHRoZSBieXRlIHN0cmluZyBmcm9tCi0gIFVURi04ICh3aXRoIHJlcGxhY2UgZXJyb3IgaGFuZGxlcikgaW5zdGVhZCBvZiBJU08tODg1OS0xIChpbiBzdHJpY3QgbW9kZSkuCi0gIFBhdGNoIHdyaXR0ZW4gYnkgUmF5IEFsbGVuLgotCiAtIElzc3VlICMxMTI4NjogUmFpc2UgYSBWYWx1ZUVycm9yIGZyb20gY2FsbGluZyBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlciB3aXRoCiAgIGEgYnVmZmVyIHN0cnVjdCBoYXZpbmcgYSBOVUxMIGRhdGEgcG9pbnRlci4KIApAQCAtMjIxMSw5ICsyMjA3LDYgQEAKIC0gSXNzdWUgIzExODI4OiBzdGFydHN3aXRoIGFuZCBlbmRzd2l0aCBub3cgYWNjZXB0IE5vbmUgYXMgc2xpY2UgaW5kZXguCiAgIFBhdGNoIGJ5IFRvcnN0ZW4gQmVja2VyLgogCi0tIElzc3VlICMxMDgzMDogRml4IFB5VW5pY29kZV9Gcm9tRm9ybWF0VigiJWMiKSBmb3Igbm9uLUJNUCBjaGFyYWN0ZXJzIG9uCi0gIG5hcnJvdyBidWlsZC4KLQogLSBJc3N1ZSAjMTExNjg6IFJlbW92ZSBmaWxlbmFtZSBkZWJ1ZyB2YXJpYWJsZSBmcm9tIFB5RXZhbF9FdmFsRnJhbWVFeCgpLgogICBJdCBlbmNvZGVkIHRoZSBVbmljb2RlIGZpbGVuYW1lIHRvIFVURi04LCBidXQgdGhlIGVuY29kaW5nIGZhaWxzIG9uCiAgIHVuZGVjb2RhYmxlIGZpbGVuYW1lIChvbiBzdXJyb2dhdGUgY2hhcmFjdGVycykgd2hpY2ggcmFpc2VzIGFuIHVuZXhwZWN0ZWQKQEAgLTIyNTUsMTUgKzIyNDgsOSBAQAogICBhcmUgZGVhZCBvciBkeWluZy4gIE1vcmVvdmVyLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgbm93IE8oMSkgcmF0aGVyIHRoYW4KICAgTyhuKS4KIAotLSBJc3N1ZSAjMTMxMjU6IFNpbGVuY2Ugc3B1cmlvdXMgdGVzdF9saWIydG8zIG91dHB1dCB3aGVuIGluIG5vbi12ZXJib3NlIG1vZGUuCi0gIFBhdGNoIGJ5IE1pa2hhaWwgTm92aWtvdi4KLQogLSBJc3N1ZSAjMTE4NDE6IEZpeCBjb21wYXJpc29uIGJ1ZyB3aXRoICdyYycgdmVyc2lvbnMgaW4gcGFja2FnaW5nLnZlcnNpb24uCiAgIFBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCiAKLS0gSXNzdWUgIzEzNDQ3OiBBZGQgYSB0ZXN0IGZpbGUgdG8gaG9zdCByZWdyZXNzaW9uIHRlc3RzIGZvciBidWdzIGluIHRoZQotICBzY3JpcHRzIGZvdW5kIGluIHRoZSBUb29scyBkaXJlY3RvcnkuCi0KIC0gSXNzdWUgIzY4ODQ6IEZpeCBsb25nLXN0YW5kaW5nIGJ1Z3Mgd2l0aCBNQU5JRkVTVC5pbiBwYXJzaW5nIGluIGRpc3R1dGlscwogICBvbiBXaW5kb3dzLiAgQWxzbyBmaXhlZCBpbiBwYWNrYWdpbmcuCiAKQEAgLTIzMTksOSArMjMwNiw2IEBACiAgIGF1dGhlbnRpY2F0aW5nIChzaW5jZSB0aGUgcmVzdWx0IG1heSBjaGFuZ2UsIGFjY29yZGluZyB0byBSRkMgNDY0MykuCiAgIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KIAotLSBJc3N1ZSAjMTM5ODk6IERvY3VtZW50IHRoYXQgR3ppcEZpbGUgZG9lcyBub3Qgc3VwcG9ydCB0ZXh0IG1vZGUsIGFuZCBnaXZlIGEKLSAgbW9yZSBoZWxwZnVsIGVycm9yIG1lc3NhZ2Ugd2hlbiBvcGVuZWQgd2l0aCBhbiBpbnZhbGlkIG1vZGUgc3RyaW5nLgotCiAtIElzc3VlICMxMzU5MDogT24gT1MgWCAxMC43IGFuZCAxMC42IHdpdGggWGNvZGUgNC4yLCBidWlsZGluZwogICBEaXN0dXRpbHMtYmFzZWQgcGFja2FnZXMgd2l0aCBDIGV4dGVuc2lvbiBtb2R1bGVzIG1heSBmYWlsIGJlY2F1c2UKICAgQXBwbGUgaGFzIHJlbW92ZWQgZ2NjLTQuMiwgdGhlIHZlcnNpb24gdXNlZCB0byBidWlsZCBweXRob24ub3JnCkBAIC0yMzM4LDEwICsyMzIyLDYgQEAKIC0gSXNzdWUgIzEzOTYwOiBIVE1MUGFyc2VyIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBicm9rZW4gY29tbWVudHMgd2hlbgogICBzdHJpY3Q9RmFsc2UuCiAKLS0gSXNzdWUgIzEzOTIxOiBVbmRvY3VtZW50IGFuZCBjbGVhbiB1cCBzcWxpdGUzLk9wdGltaXplZFVuaWNvZGUsCi0gIHdoaWNoIGlzIG9ic29sZXRlIGluIFB5dGhvbiAzLnguIEl0J3Mgbm93IGFsaWFzZWQgdG8gc3RyIGZvcgotICBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KLQogLSBXaGVuICcnIGlzIGEgcGF0aCAoZS5nLiBpbiBzeXMucGF0aCksIG1ha2Ugc3VyZSBfX2ZpbGVfXyB1c2VzIHRoZSBjdXJyZW50CiAgIHdvcmtpbmcgZGlyZWN0b3J5IGluc3RlYWQgb2YgJycgaW4gaW1wb3J0bGliLgogCkBAIC0yMzYzLDExICsyMzQzLDYgQEAKIC0gSXNzdWUgIzEwODExOiBGaXggcmVjdXJzaXZlIHVzYWdlIG9mIGN1cnNvcnMuIEluc3RlYWQgb2YgY3Jhc2hpbmcsCiAgIHJhaXNlIGEgUHJvZ3JhbW1pbmdFcnJvciBub3cuCiAKLS0gSXNzdWUgIzEwODgxOiBGaXggdGVzdF9zaXRlIGZhaWx1cmUgd2l0aCBPUyBYIGZyYW1ld29yayBidWlsZHMuCi0KLS0gSXNzdWUgIzk2NDQzNzogTWFrZSBJRExFIGhlbHAgd2luZG93IG5vbi1tb2RhbC4KLSAgUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8gYW5kIFJvZ2VyIFNlcnd5LgotCiAtIElzc3VlICMxMzczNDogQWRkIG9zLmZ3YWxrKCksIGEgZGlyZWN0b3J5IHdhbGtpbmcgZnVuY3Rpb24geWllbGRpbmcgZmlsZQogICBkZXNjcmlwdG9ycy4KIApAQCAtMjM3NywxNiArMjM1Miw4IEBACiAKIC0gSXNzdWUgIzExODA1OiBwYWNrYWdlX2RhdGEgaW4gc2V0dXAuY2ZnIHNob3VsZCBhbGxvdyBtb3JlIHRoYW4gb25lIHZhbHVlLgogCi0tIElzc3VlICMxMzkzMzogSURMRSBhdXRvLWNvbXBsZXRlIGRpZCBub3Qgd29yayB3aXRoIHNvbWUgaW1wb3J0ZWQKLSAgbW9kdWxlLCBsaWtlIGhhc2hsaWIuICAoUGF0Y2ggYnkgUm9nZXIgU2Vyd3kpCi0KLS0gSXNzdWUgIzEzOTAxOiBQcmV2ZW50IHRlc3RfZGlzdHV0aWxzIGZhaWx1cmVzIG9uIE9TIFggd2l0aCAtLWVuYWJsZS1zaGFyZWQuCi0KIC0gSXNzdWUgIzEzNjc2OiBIYW5kbGUgc3RyaW5ncyB3aXRoIGVtYmVkZGVkIHplcm9zIGNvcnJlY3RseSBpbiBzcWxpdGUzLgogCi0tIElzc3VlICMxMzUwNjogQWRkICcnIHRvIHBhdGggZm9yIElETEUgU2hlbGwgd2hlbiBzdGFydGVkIGFuZCByZXN0YXJ0ZWQgd2l0aCBSZXN0YXJ0IFNoZWxsLgotICBPcmlnaW5hbCBwYXRjaGVzIGJ5IE1hcmNvIFNjYXRhZ2xpbmkgYW5kIFJvZ2VyIFNlcnd5LgotCiAtIElzc3VlICM4ODI4OiBBZGQgbmV3IGZ1bmN0aW9uIG9zLnJlcGxhY2UoKSwgZm9yIGNyb3NzLXBsYXRmb3JtIHJlbmFtaW5nCiAgIHdpdGggb3ZlcndyaXRpbmcuCiAKQEAgLTI0MDcsMTIgKzIzNzQsNiBAQAogICBPU0Vycm9yIGlmIGxvY2FsdGltZSgpIGZhaWxlZC4gdGltZS5jbG9jaygpIG5vdyByYWlzZXMgYSBSdW50aW1lRXJyb3IgaWYgdGhlCiAgIHByb2Nlc3NvciB0aW1lIHVzZWQgaXMgbm90IGF2YWlsYWJsZSBvciBpdHMgdmFsdWUgY2Fubm90IGJlIHJlcHJlc2VudGVkCiAKLS0gSXNzdWUgIzEzODYyOiBGaXggc3B1cmlvdXMgZmFpbHVyZSBpbiB0ZXN0X3psaWIgZHVlIHRvIHJ1bnRpbWUvY29tcGlsZSB0aW1lCi0gIG1pbm9yIHZlcnNpb25zIG5vdCBtYXRjaGluZy4KLQotLSBJc3N1ZSAjMTI4MDQ6IEZpeCB0ZXN0X3NvY2tldCBhbmQgdGVzdF91cmxsaWIybmV0IGZhaWx1cmVzIHdoZW4gcnVubmluZyB0ZXN0cwotICBvbiBhIHN5c3RlbSB3aXRob3V0IGludGVybmV0IGFjY2Vzcy4KLQogLSBJc3N1ZSAjMTM3NzI6IEluIG9zLnN5bWxpbmsoKSB1bmRlciBXaW5kb3dzLCBkbyBub3QgdHJ5IHRvIGd1ZXNzIHRoZSBsaW5rCiAgIHRhcmdldCdzIHR5cGUgKGZpbGUgb3IgZGlyZWN0b3J5KS4gIFRoZSBkZXRlY3Rpb24gd2FzIGJ1Z2d5IGFuZCBtYWRlIHRoZQogICBjYWxsIG5vbi1hdG9taWMgKHRoZXJlZm9yZSBwcm9uZSB0byByYWNlIGNvbmRpdGlvbnMpLgpAQCAtMjQzOSw5ICsyNDAwLDYgQEAKIC0gSXNzdWUgIzEzNjQyOiBVbnF1b3RlIGJlZm9yZSBiNjRlbmNvZGluZyB1c2VyOnBhc3N3b3JkIGR1cmluZyBCYXNpYwogICBBdXRoZW50aWNhdGlvbi4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgSm9vbmFzIEt1b3JpbGVodG8uCiAKLS0gSXNzdWUgIzEzNzI2OiBGaXggdGhlIGFtYmlndW91cyAtUyBmbGFnIGluIHJlZ3J0ZXN0LiBJdCBpcyAtby8tLXNsb3cgZm9yIHNsb3cKLSAgdGVzdHMuCi0KIC0gSXNzdWUgIzEyMzY0OiBGaXggYSBoYW5nIGluIGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yLgogICBUaGUgaGFuZyB3b3VsZCBvY2N1ciB3aGVuIHJldHJpZXZpbmcgdGhlIHJlc3VsdCBvZiBhIHNjaGVkdWxlZCBmdXR1cmUgYWZ0ZXIKICAgdGhlIGV4ZWN1dG9yIGhhZCBiZWVuIHNodXQgZG93bi4KQEAgLTI1MjQsMTAgKzI0ODIsNiBAQAogLSBJc3N1ZSAjMTM1OTE6IEEgYnVnIGluIGltcG9ydGxpYiBoYXMgYmVlbiBmaXhlZCB0aGF0IGNhdXNlZCBpbXBvcnRfbW9kdWxlCiAgIHRvIGxvYWQgYSBtb2R1bGUgdHdpY2UuCiAKLS0gSXNzdWUgIzQ2MjU6IElmIElETEUgY2Fubm90IHdyaXRlIHRvIGl0cyByZWNlbnQgZmlsZSBvciBicmVha3BvaW50IGZpbGVzLAotICBkaXNwbGF5IGEgbWVzc2FnZSBwb3B1cCBhbmQgY29udGludWUgcmF0aGVyIHRoYW4gY3Jhc2guICBPcmlnaW5hbCBwYXRjaCBieQotICBSb2dlciBTZXJ3eS4KLQogLSBJc3N1ZSAjMTM0NDkgc2NoZWQuc2NoZWR1bGVyLnJ1bigpIG1ldGhvZCBoYXMgYSBuZXcgImJsb2NraW5nIiBwYXJhbWV0ZXIgd2hpY2gKICAgd2hlbiBzZXQgdG8gRmFsc2UgbWFrZXMgcnVuKCkgZXhlY3V0ZSB0aGUgc2NoZWR1bGVkIGV2ZW50cyBkdWUgdG8gZXhwaXJlCiAgIHNvb25lc3QgKGlmIGFueSkgYW5kIHRoZW4gcmV0dXJuLiAgUGF0Y2ggYnkgR2lhbXBhb2xvIFJvZG9sw6AuCkBAIC0yNTQ0LDEyICsyNDk4LDkgQEAKICAgJ2ltcG9ydGxpYi5hYmMuUHlQeWNMb2FkZXInLCAnbm50cGxpYi5OTlRQLnhndGl0bGUnLCAnbm50cGxpYi5OTlRQLnhwYXRoJywKICAgYW5kIHByaXZhdGUgYXR0cmlidXRlcyBvZiAnc210cGQuU01UUENoYW5uZWwnLgogCi0tIElzc3VlICM1OTA1LCAjMTM1NjA6IHRpbWUuc3RyZnRpbWUoKSBpcyBub3cgdXNpbmcgdGhlIGN1cnJlbnQgbG9jYWxlCistIElzc3VlICM1OTA1LCBJc3N1ZSAjMTM1NjA6IHRpbWUuc3RyZnRpbWUoKSBpcyBub3cgdXNpbmcgdGhlIGN1cnJlbnQgbG9jYWxlCiAgIGVuY29kaW5nLCBpbnN0ZWFkIG9mIFVURi04LCBpZiB0aGUgd2NzZnRpbWUoKSBmdW5jdGlvbiBpcyBub3QgYXZhaWxhYmxlLgogCi0tIElzc3VlICM4NjQxOiBVcGRhdGUgSURMRSAzIHN5bnRheCBjb2xvcmluZyB0byByZWNvZ25pemUgYiIuLiIgYW5kIG5vdCB1Ii4uIi4KLSAgUGF0Y2ggYnkgVGFsIEVpbmF0LgotCiAtIElzc3VlICMxMzQ2NDogQWRkIGEgcmVhZGludG8oKSBtZXRob2QgdG8gaHR0cC5jbGllbnQuSFRUUFJlc3BvbnNlLiAgUGF0Y2gKICAgYnkgSm9uIEt1aG4uCiAKQEAgLTI2NjEsOSArMjYxMiw2IEBACiAtIElzc3VlICMxMDgxNzogRml4IHVybHJldHJpZXZlIGZ1bmN0aW9uIHRvIHJhaXNlIENvbnRlbnRUb29TaG9ydEVycm9yIGV2ZW4KICAgd2hlbiByZXBvcnRob29rIGlzIE5vbmUuIFBhdGNoIGJ5IEp5cmtpIFB1bGxpYWluZW4uCiAKLS0gSXNzdWUgIzEzMjk2OiBGaXggSURMRSB0byBjbGVhciBjb21waWxlIF9fZnV0dXJlX18gZmxhZ3Mgb24gc2hlbGwgcmVzdGFydC4KLSAgKFBhdGNoIGJ5IFJvZ2VyIFNlcnd5KQotCiAtIEZpeCB0aGUgeG1scnBjLmNsaWVudCB1c2VyIGFnZW50IHRvIHJldHVybiBzb21ldGhpbmcgc2ltaWxhciB0bwogICB1cmxsaWIucmVxdWVzdCB1c2VyIGFnZW50OiAiUHl0aG9uLXhtbHJwYy8zLjMiLgogCkBAIC0yNzY2LDEwICsyNzE0LDYgQEAKIC0gSXNzdWUgIzEzMDM0OiBXaGVuIGRlY29kaW5nIHNvbWUgU1NMIGNlcnRpZmljYXRlcywgdGhlIHN1YmplY3RBbHROYW1lCiAgIGV4dGVuc2lvbiBjb3VsZCBiZSB1bnJlcG9ydGVkLgogCi0tIElzc3VlICM5ODcxOiBQcmV2ZW50IElETEUgMyBjcmFzaCB3aGVuIGdpdmVuIGJ5dGUgc3RpbmdzCi0gIHdpdGggaW52YWxpZCBoZXggZXNjYXBlIHNlcXVlbmNlcywgbGlrZSBiJ1x4MCcuCi0gIChPcmlnaW5hbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuKQotCiAtIElzc3VlICMxMjMwNjogRXhwb3NlIHRoZSBydW50aW1lIHZlcnNpb24gb2YgdGhlIHpsaWIgQyBsaWJyYXJ5IGFzIGEgY29uc3RhbnQsCiAgIFpMSUJfUlVOVElNRV9WRVJTSU9OLCBpbiB0aGUgemxpYiBtb2R1bGUuIFBhdGNoIGJ5IFRvcnN0ZW4gTGFuZHNjaG9mZi4KIApAQCAtMjc5OCw4ICsyNzQyLDYgQEAKIAogLSBJc3N1ZSAjMTI4Nzg6IEV4cG9zZSBhIF9fZGljdF9fIGF0dHJpYnV0ZSBvbiBpby5JT0Jhc2UgYW5kIGl0cyBzdWJjbGFzc2VzLgogCi0tIElzc3VlICMxMjYzNjogSURMRSByZWFkcyB0aGUgY29kaW5nIGNvb2tpZSB3aGVuIGV4ZWN1dGluZyBhIFB5dGhvbiBzY3JpcHQuCi0KIC0gSXNzdWUgIzEyNDk0OiBPbiBlcnJvciwgY2FsbCgpLCBjaGVja19jYWxsKCksIGNoZWNrX291dHB1dCgpIGFuZAogICBnZXRzdGF0dXNvdXRwdXQoKSBmdW5jdGlvbnMgb2YgdGhlIHN1YnByb2Nlc3MgbW9kdWxlIG5vdyBraWxsIHRoZSBwcm9jZXNzLAogICByZWFkIGl0cyBzdGF0dXMgKHRvIGF2b2lkIHpvbWJpcykgYW5kIGNsb3NlIHBpcGVzLgpAQCAtMjg2OSw5ICsyODExLDYgQEAKIAogLSBJc3N1ZSAjMTAwODc6IEZpeCB0aGUgaHRtbCBvdXRwdXQgZm9ybWF0IG9mIHRoZSBjYWxlbmRhciBtb2R1bGUuCiAKLS0gSXNzdWUgIzEyNTQwOiBQcmV2ZW50IHpvbWJpZSBJRExFIHByb2Nlc3NlcyBvbiBXaW5kb3dzIGR1ZSB0byBjaGFuZ2VzCi0gIGluIG9zLmtpbGwoKS4KLQogLSBJc3N1ZSAjMTMxMjE6IGFkZCBzdXBwb3J0IGZvciBpbnBsYWNlIG1hdGggb3BlcmF0b3JzIHRvIGNvbGxlY3Rpb25zLkNvdW50ZXIuCiAKIC0gQWRkIHN1cHBvcnQgZm9yIHVuYXJ5IHBsdXMgYW5kIHVuYXJ5IG1pbnVzIHRvIGNvbGxlY3Rpb25zLkNvdW50ZXIuCkBAIC0yOTAzLDcgKzI4NDIsNyBAQAogICBDb25kaXRpb24sIGV0Yy4pIHVzZWQgdG8gYmUgZmFjdG9yeSBmdW5jdGlvbnMgcmV0dXJuaW5nIGluc3RhbmNlcyBvZiBoaWRkZW4KICAgY2xhc3NlcyAoX0V2ZW50LCBfQ29uZGl0aW9uLCBldGMuKSwgYmVjYXVzZSAoaWYgR3VpZG8gcmVjYWxscyBjb3JyZWN0bHkpIHRoaXMKICAgY29kZSBwcmUtZGF0ZXMgdGhlIGFiaWxpdHkgdG8gc3ViY2xhc3MgZXh0ZW5zaW9uIHR5cGVzLiAgSXQgaXMgbm93IHBvc3NpYmxlCi0gIHRvIGluaGVyaXQgZnJvbSB0aGVzZSBjbGFzc2VzIHdpdGhvdXQgaGF2aW5nIHRvIGltcG9ydCB0aGUgcHJpdmF0ZQorICB0byBpbmhlcml0IGZyb20gdGhlc2UgY2xhc3Nlcywgd2l0aG91dCBoYXZpbmcgdG8gaW1wb3J0IHRoZSBwcml2YXRlCiAgIHVuZGVyc2NvcmVkIG5hbWVzIGxpa2UgbXVsdGlwcm9jZXNzaW5nIGRpZC4KIAogLSBJc3N1ZSAjOTcyMzogQWRkIHNobGV4LnF1b3RlIGZ1bmN0aW9ucywgdG8gZXNjYXBlIGZpbGVuYW1lcyBhbmQgY29tbWFuZApAQCAtMjkxNywxNCArMjg1Niw4IEBACiAtIElzc3VlICMxMjYwNzogSW4gc3VicHJvY2VzcywgZml4IGlzc3VlIHdoZXJlIGlmIHN0ZGluLCBzdGRvdXQgb3Igc3RkZXJyIGlzCiAgIGdpdmVuIGFzIGEgbG93IGZkLCBpdCBnZXRzIG92ZXJ3cml0dGVuLgogCi0tIElzc3VlICMxMjU5MDogSURMRSBlZGl0b3Igd2luZG93IG5vdyBhbHdheXMgZGlzcGxheXMgdGhlIGZpcnN0IGxpbmUKLSAgd2hlbiBvcGVuaW5nIGEgbG9uZyBmaWxlLiAgV2l0aCBUayA4LjUsIHRoZSBmaXJzdCBsaW5lIHdhcyBoaWRkZW4uCi0KIC0gSXNzdWUgIzEyNTc2OiBGaXggdXJsb3BlbiBiZWhhdmlvciBvbiBzaXRlcyB3aGljaCBkbyBub3Qgc2VuZCAob3Igb2JmdXNjYXRlcykKLSAgQ29ubmVjdGlvbjpjbG9zZSBoZWFkZXIuCi0KLS0gSXNzdWUgIzEyMTAyOiBEb2N1bWVudCB0aGF0IGJ1ZmZlcmVkIGZpbGVzIG11c3QgYmUgZmx1c2hlZCBiZWZvcmUgYmVpbmcgdXNlZAotICB3aXRoIG1tYXAuIFBhdGNoIGJ5IFN0ZWZmZW4gRGFvZGUgTnVycG1lc28uCisgIGBgQ29ubmVjdGlvbjogY2xvc2VgYCBoZWFkZXIuCiAKIC0gSXNzdWUgIzEyNTYwOiBCdWlsZCBsaWJweXRob24uc28gb24gT3BlbkJTRC4gUGF0Y2ggYnkgU3RlZmFuIFNwZXJsaW5nLgogCkBAIC0zMTc5LDcgKzMxMTIsNyBAQAogLSBJc3N1ZSAjMTIxNzU6IEZpbGVJTy5yZWFkYWxsKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IgaW5zdGVhZCBvZiBhbiBJT0Vycm9yCiAgIGlmIHRoZSBmaWxlIGlzIGNsb3NlZC4KIAotLSBJc3N1ZSAjMTExMDk6IE5ldyBzZXJ2aWNlX2FjdGlvbiBtZXRob2QgZm9yIEJhc2VTZXJ2ZXIsIHVzZWQgYnkgRm9ya2luZ01peEluCistIElzc3VlICMxMTEwOTogTmV3IHNlcnZpY2VfYWN0aW9uIG1ldGhvZCBmb3IgQmFzZVNlcnZlciwgdXNlZCBieSBGb3JraW5nTWl4aW4KICAgY2xhc3MgZm9yIGNsZWFudXAuIEluaXRpYWwgUGF0Y2ggYnkgSnVzdGluIFdhcmtlbnRpbi4KIAogLSBJc3N1ZSAjMTIwNDU6IEF2b2lkIGR1cGxpY2F0ZSBleGVjdXRpb24gb2YgY29tbWFuZCBpbgpAQCAtMzIyNCw5ICszMTU3LDYgQEAKICAgcGFzc2luZyBhIGBgY29udGV4dGBgIGFyZ3VtZW50IHBvaW50aW5nIHRvIGFuIHNzbC5TU0xDb250ZXh0IGluc3RhbmNlLgogICBQYXRjaCBieSBLYXN1biBIZXJhdGguCiAKLS0gSXNzdWUgIzExMDg4OiBkb24ndCBjcmFzaCB3aGVuIHVzaW5nIEY1IHRvIHJ1biBhIHNjcmlwdCBpbiBJRExFIG9uIE1hY09TWAotICB3aXRoIFRrIDguNS4KLQogLSBJc3N1ZSAjOTUxNjogSXNzdWUgIzk1MTY6IGF2b2lkIGVycm9ycyBpbiBzeXNjb25maWcgd2hlbiBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQKICAgaXMgc2V0IGluIHNoZWxsLgogCkBAIC0zMjQ2LDEwICszMTc2LDYgQEAKIC0gSXNzdWUgIzk5NzE6IFdyaXRlIGFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBvZiBCdWZmZXJlZFJlYWRlci5yZWFkaW50bygpLgogICBQYXRjaCBieSBKb2huIE8nQ29ubm9yLgogCi0tIElzc3VlICMxMDI4OiBUayByZXR1cm5zIGludmFsaWQgVW5pY29kZSBudWxsIGluICVBOiBVbmljb2RlRGVjb2RlRXJyb3IuCi0gIFdpdGggVGsgPCA4LjUgX3RraW50ZXIuYzpQeXRob25DbWQoKSByYWlzZWQgVW5pY29kZURlY29kZUVycm9yLCBjYXVzZWQKLSAgSURMRSB0byBleGl0LiAgQ29udmVydGVkIHRvIHZhbGlkIFVuaWNvZGUgbnVsbCBpbiBQeXRob25DbWQoKS4KLQogLSBJc3N1ZSAjMTE3OTk6IHVybGxpYi5yZXF1ZXN0IEF1dGhlbnRpY2F0aW9uIEhhbmRsZXJzIHdpbGwgcmFpc2UgYSBWYWx1ZUVycm9yCiAgIHdoZW4gcHJlc2VudGVkIHdpdGggYW4gdW5zdXBwb3J0ZWQgQXV0aGVudGljYXRpb24gU2NoZW1lLiBQYXRjaCBjb250cmlidXRlZAogICBieSBZdXZhbCBHcmVlbmZpZWxkLgpAQCAtMzQ4NiwxMiArMzQxMiwxMiBAQAogCiAtIElzc3VlICM3NjM5OiBGaXggc2hvcnQgZmlsZSBuYW1lIGdlbmVyYXRpb24gaW4gYmRpc3RfbXNpCiAKLS0gSXNzdWUgIzExNjU5OiBGaXggUmVzb3VyY2VXYXJuaW5nIGluIHRlc3Rfc3VicHJvY2VzcyBpbnRyb2R1Y2VkIGJ5ICMxMTQ1OS4KLSAgUGF0Y2ggYnkgQmVuIEhheWRlbi4KLQogLSBJc3N1ZSAjMTE2MzU6IERvbid0IHVzZSBwb2xsaW5nIGluIHdvcmtlciB0aHJlYWRzIGFuZCBwcm9jZXNzZXMgbGF1bmNoZWQgYnkKICAgY29uY3VycmVudC5mdXR1cmVzLgogCistIElzc3VlICM1ODQ1OiBBdXRvbWF0aWNhbGx5IHJlYWQgcmVhZGxpbmUgY29uZmlndXJhdGlvbiB0byBlbmFibGUgY29tcGxldGlvbgorICBpbiBpbnRlcmFjdGl2ZSBtb2RlLgorCiAtIElzc3VlICM2ODExOiBBbGxvdyBpbXBvcnRsaWIgdG8gY2hhbmdlIGEgY29kZSBvYmplY3QncyBjb19maWxlbmFtZSBhdHRyaWJ1dGUKICAgdG8gbWF0Y2ggdGhlIHBhdGggdG8gd2hlcmUgdGhlIHNvdXJjZSBjb2RlIGN1cnJlbnRseSBpcywgbm90IHdoZXJlIHRoZSBjb2RlCiAgIG9iamVjdCBvcmlnaW5hbGx5IGNhbWUgZnJvbS4KQEAgLTM1MjYsNyArMzQ1Miw3IEBACiAKIC0gSXNzdWUgIzExMTI3OiBSYWlzZSBhIFR5cGVFcnJvciB3aGVuIHRyeWluZyB0byBwaWNrbGUgYSBzb2NrZXQgb2JqZWN0LgogCi0tIElzc3VlICMxMTU2MzogQ29ubmVjdGlvbjpjbG9zZSBoZWFkZXIgaXMgc2VudCBieSByZXF1ZXN0cyB1c2luZyBVUkxPcGVuZXIKKy0gSXNzdWUgIzExNTYzOiBgYENvbm5lY3Rpb246IGNsb3NlYGAgaGVhZGVyIGlzIHNlbnQgYnkgcmVxdWVzdHMgdXNpbmcgVVJMT3BlbmVyCiAgIGNsYXNzIHdoaWNoIGhlbHBzIGluIGNsb3Npbmcgb2Ygc29ja2V0cyBhZnRlciBjb25uZWN0aW9uIGlzIG92ZXIuIFBhdGNoCiAgIGNvbnRyaWJ1dGlvbnMgYnkgSmVmZiBNY05laWwgYW5kIE5hZGVlbSBWYXdkYS4KIApAQCAtMzU0MSw4ICszNDY3LDYgQEAKIC0gSXNzdWUgIzEwOTc5OiB1bml0dGVzdCBzdGRvdXQgYnVmZmVyaW5nIG5vdyB3b3JrcyB3aXRoIGNsYXNzIGFuZCBtb2R1bGUKICAgc2V0dXAgYW5kIHRlYXJkb3duLgogCi0tIElzc3VlICMxMTU3NzogZml4IFJlc291cmNlV2FybmluZyB0cmlnZ2VyZWQgYnkgaW1wcm92ZWQgYmluaGV4IHRlc3QgY292ZXJhZ2UKLQogLSBJc3N1ZSAjMTEyNDM6IGZpeCB0aGUgcGFyYW1ldGVyIHF1ZXJ5aW5nIG1ldGhvZHMgb2YgTWVzc2FnZSB0byB3b3JrIGlmCiAgIHRoZSBoZWFkZXJzIGNvbnRhaW4gdW4tZW5jb2RlZCBub24tQVNDSUkgZGF0YS4KIApAQCAtMzU3NSw5ICszNDk5LDYgQEAKIC0gSXNzdWUgIzExNTU0OiBGaXhlZCBzdXBwb3J0IGZvciBKYXBhbmVzZSBjb2RlY3M7IHByZXZpb3VzbHkgdGhlIGJvZHkgb3V0cHV0CiAgIGVuY29kaW5nIHdhcyBub3QgZG9uZSBpZiBldWMtanAgb3Igc2hpZnQtamlzIHdhcyBzcGVjaWZpZWQgYXMgdGhlIGNoYXJzZXQuCiAKLS0gSXNzdWUgIzExNTA5OiBTaWduaWZpY2FudGx5IGluY3JlYXNlIHRlc3QgY292ZXJhZ2Ugb2YgZmlsZWlucHV0LgotICBQYXRjaCBieSBEZW52ZXIgQ29uZXliZWFyZSBhdCBQeUNvbiAyMDExIFNwcmludHMuCi0KIC0gSXNzdWUgIzExNDA3OiBgVGVzdENhc2UucnVuYCByZXR1cm5zIHRoZSByZXN1bHQgb2JqZWN0IHVzZWQgb3IgY3JlYXRlZC4KICAgQ29udHJpYnV0ZWQgYnkgSmFuYXRoYW4gSGFydGxleS4KIApAQCAtMzcwMCwxMSArMzYyMSw2IEBACiAKIC0gSXNzdWUgIzkzNDg6IFJhaXNlIGFuIGVhcmx5IGVycm9yIGlmIGFyZ3BhcnNlIG5hcmdzIGFuZCBtZXRhdmFyIGRvbid0IG1hdGNoLgogCi0tIElzc3VlICM4OTgyOiBJbXByb3ZlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYXJncGFyc2UgTmFtZXNwYWNlIG9iamVjdC4KLQotLSBJc3N1ZSAjOTM0MzogRG9jdW1lbnQgdGhhdCBhcmdwYXJzZSBwYXJlbnQgcGFyc2VycyBtdXN0IGJlIGNvbmZpZ3VyZWQgYmVmb3JlCi0gIHRoZWlyIGNoaWxkcmVuLgotCiAtIElzc3VlICM5MDI2OiBGaXggb3JkZXIgb2YgYXJncGFyc2Ugc3ViLWNvbW1hbmRzIGluIGhlbHAgbWVzc2FnZXMuCiAKIC0gSXNzdWUgIzkzNDc6IEZpeCBmb3JtYXR0aW5nIGZvciB0dXBsZXMgaW4gYXJncGFyc2UgdHlwZT0gZXJyb3IgbWVzc2FnZXMuCkBAIC0zNzU3LDEwICszNjczLDYxIEBACiAKIC0gSXNzdWUgIzExNDk1OiBPU0Ygc3VwcG9ydCBpcyBlbGltaW5hdGVkLiBJdCB3YXMgZGVwcmVjYXRlZCBpbiBQeXRob24gMy4yLgogCi0KIElETEUKIC0tLS0KIAorLSBJc3N1ZSAjMTQ0MDk6IElETEUgbm93IHByb3Blcmx5IGV4ZWN1dGVzIGNvbW1hbmRzIGluIHRoZSBTaGVsbCB3aW5kb3cKKyAgd2hlbiBpdCBjYW5ub3QgcmVhZCB0aGUgbm9ybWFsIGNvbmZpZyBmaWxlcyBvbiBzdGFydHVwIGFuZAorICBoYXMgdG8gdXNlIHRoZSBidWlsdC1pbiBkZWZhdWx0IGtleSBiaW5kaW5ncy4KKyAgVGhlcmUgd2FzIHByZXZpb3VzbHkgYSBidWcgaW4gb25lIG9mIHRoZSBkZWZhdWx0cy4KKworLSBJRExFIGNhbiBiZSBsYXVuY2hlZCBhcyBweXRob24gLW0gaWRsZWxpYgorCistIElzc3VlICMzNTczOiBJRExFIGhhbmdzIHdoZW4gcGFzc2luZyBpbnZhbGlkIGNvbW1hbmQgbGluZSBhcmdzCisgIChkaXJlY3RvcnkoaWVzKSBpbnN0ZWFkIG9mIGZpbGUocykpIChQYXRjaCBieSBHdWlsaGVybWUgUG9sbykKKworLSBJc3N1ZSAjMTQyMDA6IElETEUgc2hlbGwgY3Jhc2ggb24gcHJpbnRpbmcgbm9uLUJNUCB1bmljb2RlIGNoYXJhY3Rlci4KKworLSBJc3N1ZSAjNTIxOTogUHJldmVudCBldmVudCBoYW5kbGVyIGNhc2NhZGUgaW4gSURMRS4KKworLSBJc3N1ZSAjOTY0NDM3OiBNYWtlIElETEUgaGVscCB3aW5kb3cgbm9uLW1vZGFsLgorICBQYXRjaCBieSBHdWlsaGVybWUgUG9sbyBhbmQgUm9nZXIgU2Vyd3kuCisKKy0gSXNzdWUgIzEzOTMzOiBJRExFIGF1dG8tY29tcGxldGUgZGlkIG5vdCB3b3JrIHdpdGggc29tZSBpbXBvcnRlZAorICBtb2R1bGUsIGxpa2UgaGFzaGxpYi4gIChQYXRjaCBieSBSb2dlciBTZXJ3eSkKKworLSBJc3N1ZSAjMTM1MDY6IEFkZCAnJyB0byBwYXRoIGZvciBJRExFIFNoZWxsIHdoZW4gc3RhcnRlZCBhbmQgcmVzdGFydGVkIHdpdGggUmVzdGFydCBTaGVsbC4KKyAgT3JpZ2luYWwgcGF0Y2hlcyBieSBNYXJjbyBTY2F0YWdsaW5pIGFuZCBSb2dlciBTZXJ3eS4KKworLSBJc3N1ZSAjNDYyNTogSWYgSURMRSBjYW5ub3Qgd3JpdGUgdG8gaXRzIHJlY2VudCBmaWxlIG9yIGJyZWFrcG9pbnQgZmlsZXMsCisgIGRpc3BsYXkgYSBtZXNzYWdlIHBvcHVwIGFuZCBjb250aW51ZSByYXRoZXIgdGhhbiBjcmFzaC4gIE9yaWdpbmFsIHBhdGNoIGJ5CisgIFJvZ2VyIFNlcnd5LgorCistIElzc3VlICM4NjQxOiBVcGRhdGUgSURMRSAzIHN5bnRheCBjb2xvcmluZyB0byByZWNvZ25pemUgYiIuLiIgYW5kIG5vdCB1Ii4uIi4KKyAgUGF0Y2ggYnkgVGFsIEVpbmF0LgorCistIElzc3VlICMxMzI5NjogRml4IElETEUgdG8gY2xlYXIgY29tcGlsZSBfX2Z1dHVyZV9fIGZsYWdzIG9uIHNoZWxsIHJlc3RhcnQuCisgIChQYXRjaCBieSBSb2dlciBTZXJ3eSkKKworLSBJc3N1ZSAjOTg3MTogUHJldmVudCBJRExFIDMgY3Jhc2ggd2hlbiBnaXZlbiBieXRlIHN0aW5ncworICB3aXRoIGludmFsaWQgaGV4IGVzY2FwZSBzZXF1ZW5jZXMsIGxpa2UgYidceDAnLgorICAoT3JpZ2luYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLikKKworLSBJc3N1ZSAjMTI2MzY6IElETEUgcmVhZHMgdGhlIGNvZGluZyBjb29raWUgd2hlbiBleGVjdXRpbmcgYSBQeXRob24gc2NyaXB0LgorCistIElzc3VlICMxMjU0MDogUHJldmVudCB6b21iaWUgSURMRSBwcm9jZXNzZXMgb24gV2luZG93cyBkdWUgdG8gY2hhbmdlcworICBpbiBvcy5raWxsKCkuCisKKy0gSXNzdWUgIzEyNTkwOiBJRExFIGVkaXRvciB3aW5kb3cgbm93IGFsd2F5cyBkaXNwbGF5cyB0aGUgZmlyc3QgbGluZQorICB3aGVuIG9wZW5pbmcgYSBsb25nIGZpbGUuICBXaXRoIFRrIDguNSwgdGhlIGZpcnN0IGxpbmUgd2FzIGhpZGRlbi4KKworLSBJc3N1ZSAjMTEwODg6IGRvbid0IGNyYXNoIHdoZW4gdXNpbmcgRjUgdG8gcnVuIGEgc2NyaXB0IGluIElETEUgb24gTWFjT1NYCisgIHdpdGggVGsgOC41LgorCistIElzc3VlICMxMDI4OiBUayByZXR1cm5zIGludmFsaWQgVW5pY29kZSBudWxsIGluICVBOiBVbmljb2RlRGVjb2RlRXJyb3IuCisgIFdpdGggVGsgPCA4LjUgX3RraW50ZXIuYzpQeXRob25DbWQoKSByYWlzZWQgVW5pY29kZURlY29kZUVycm9yLCBjYXVzZWQKKyAgSURMRSB0byBleGl0LiAgQ29udmVydGVkIHRvIHZhbGlkIFVuaWNvZGUgbnVsbCBpbiBQeXRob25DbWQoKS4KKwogLSBJc3N1ZSAjMTE3MTg6IElETEUncyBvcGVuIG1vZHVsZSBkaWFsb2cgY291bGRuJ3QgZmluZCB0aGUgX19pbml0X18ucHkKICAgZmlsZSBpbiBhIHBhY2thZ2UuCiAKQEAgLTM3OTAsNiArMzc1NywxMCBAQAogRXh0ZW5zaW9uIE1vZHVsZXMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzE2ODQ3OiBGaXhlZCBpbXByb3BlciB1c2Ugb2YgX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KCkgaW4KKyAgbm9uLXB5ZGVidWcgYnVpbGRzLiBTZXZlcmFsIGV4dGVuc2lvbiBtb2R1bGVzIG5vdyBjb21waWxlIGNsZWFubHkgd2hlbgorICBhc3NlcnQoKXMgYXJlIGVuYWJsZWQgaW4gc3RhbmRhcmQgYnVpbGRzICgtRERFQlVHIGZsYWcpLgorCiAtIElzc3VlICMxMzg0MDogVGhlIGVycm9yIG1lc3NhZ2UgcHJvZHVjZWQgYnkgY3R5cGVzLmNyZWF0ZV9zdHJpbmdfYnVmZmVyCiAgIHdoZW4gZ2l2ZW4gYSBVbmljb2RlIHN0cmluZyBoYXMgYmVlbiBmaXhlZC4KIApAQCAtMzg1Miw2ICszODIzLDMzIEBACiBUZXN0cwogLS0tLS0KIAorLSBJc3N1ZSAjMTMxMjU6IFNpbGVuY2Ugc3B1cmlvdXMgdGVzdF9saWIydG8zIG91dHB1dCB3aGVuIGluIG5vbi12ZXJib3NlIG1vZGUuCisgIFBhdGNoIGJ5IE1pa2hhaWwgTm92aWtvdi4KKworLSBJc3N1ZSAjMTM0NDc6IEFkZCBhIHRlc3QgZmlsZSB0byBob3N0IHJlZ3Jlc3Npb24gdGVzdHMgZm9yIGJ1Z3MgaW4gdGhlCisgIHNjcmlwdHMgZm91bmQgaW4gdGhlIFRvb2xzIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMTA4ODE6IEZpeCB0ZXN0X3NpdGUgZmFpbHVyZSB3aXRoIE9TIFggZnJhbWV3b3JrIGJ1aWxkcy4KKworLSBJc3N1ZSAjMTM5MDE6IFByZXZlbnQgdGVzdF9kaXN0dXRpbHMgZmFpbHVyZXMgb24gT1MgWCB3aXRoIC0tZW5hYmxlLXNoYXJlZC4KKworLSBJc3N1ZSAjMTM4NjI6IEZpeCBzcHVyaW91cyBmYWlsdXJlIGluIHRlc3RfemxpYiBkdWUgdG8gcnVudGltZS9jb21waWxlIHRpbWUKKyAgbWlub3IgdmVyc2lvbnMgbm90IG1hdGNoaW5nLgorCistIElzc3VlICMxMjgwNDogRml4IHRlc3Rfc29ja2V0IGFuZCB0ZXN0X3VybGxpYjJuZXQgZmFpbHVyZXMgd2hlbiBydW5uaW5nIHRlc3RzCisgIG9uIGEgc3lzdGVtIHdpdGhvdXQgaW50ZXJuZXQgYWNjZXNzLgorCistIElzc3VlICMxMzcyNjogRml4IHRoZSBhbWJpZ3VvdXMgLVMgZmxhZyBpbiByZWdydGVzdC4gSXQgaXMgLW8vLS1zbG93IGZvciBzbG93CisgIHRlc3RzLgorCistIElzc3VlICMxMTY1OTogRml4IFJlc291cmNlV2FybmluZyBpbiB0ZXN0X3N1YnByb2Nlc3MgaW50cm9kdWNlZCBieSAjMTE0NTkuCisgIFBhdGNoIGJ5IEJlbiBIYXlkZW4uCisKKy0gSXNzdWUgIzExNTc3OiBmaXggUmVzb3VyY2VXYXJuaW5nIHRyaWdnZXJlZCBieSBpbXByb3ZlZCBiaW5oZXggdGVzdCBjb3ZlcmFnZQorCistIElzc3VlICMxMTUwOTogU2lnbmlmaWNhbnRseSBpbmNyZWFzZSB0ZXN0IGNvdmVyYWdlIG9mIGZpbGVpbnB1dC4KKyAgUGF0Y2ggYnkgRGVudmVyIENvbmV5YmVhcmUgYXQgUHlDb24gMjAxMSBTcHJpbnRzLgorCiAtIElzc3VlICMxMTY4OTogRml4IGEgdmFyaWFibGUgc2NvcGluZyBlcnJvciBpbiBhbiBzcWxpdGUzIHRlc3QKIAogLSBJc3N1ZSAjMTM3ODY6IFJlbW92ZSB1bmltcGxlbWVudGVkICd0cmFjZScgbG9uZyBvcHRpb24gZnJvbSByZWdydGVzdC5weS4KQEAgLTQwMzAsNyArNDAyOCw3IEBACiAtIElzc3VlICMxMTUwNTogaW1wcm92ZXMgdGVzdCBjb3ZlcmFnZSBvZiBzdHJpbmcucHkuIFBhdGNoIGJ5IEFsaWNpYQogICBBcmxlbgogCi0tIElzc3VlICMxMTQ5MDogdGVzdF9zdWJwcm9jZXNzOnRlc3RfbGVha2luZ19mZHNfb25fZXJyb3Igbm8gbG9uZ2VyIGdpdmVzIGEKKy0gSXNzdWUgIzExNDkwOiB0ZXN0X3N1YnByb2Nlc3MudGVzdF9sZWFraW5nX2Zkc19vbl9lcnJvciBubyBsb25nZXIgZ2l2ZXMgYQogICBmYWxzZSBwb3NpdGl2ZSBpZiB0aGUgbGFzdCBkaXJlY3RvcnkgaW4gdGhlIHBhdGggaXMgaW5hY2Nlc3NpYmxlLgogCiAtIElzc3VlICMxMTIyMzogRml4IHRlc3RfdGhyZWFkc2lnbmFscyB0byBmYWlsLCBub3QgaGFuZywgd2hlbiB0aGUKQEAgLTQwNTQsNiArNDA1MiwyMyBAQAogQy1BUEkKIC0tLS0tCiAKKy0gSXNzdWUgIzEzNDUyOiBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbCgpIGRvZXNuJ3Qgc3VwcG9ydCBlcnJvciBoYW5kbGVycworICBkaWZmZXJlbnQgdGhhbiAic3RyaWN0IiBhbnltb3JlLiBUaGUgY2FsbGVyIHdhcyB1bmFibGUgdG8gY29tcHV0ZSB0aGUKKyAgc2l6ZSBvZiB0aGUgb3V0cHV0IGJ1ZmZlcjogaXQgZGVwZW5kcyBvbiB0aGUgZXJyb3IgaGFuZGxlci4KKworLSBJc3N1ZSAjMTM1NjA6IEFkZCBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKCksIFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKCkKKyAgYW5kIFB5VW5pY29kZV9FbmNvZGVMb2NhbGUoKSBmdW5jdGlvbnMgdG8gdGhlIEMgQVBJIHRvIGRlY29kZS9lbmNvZGUgZnJvbS90bworICB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuCisKKy0gSXNzdWUgIzEwODMxOiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpIHN1cHBvcnRzICVsaSwgJWxsaSBhbmQgJXppIGZvcm1hdHMuCisKKy0gSXNzdWUgIzExMjQ2OiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVWIikgdG8gZGVjb2RlIHRoZSBieXRlIHN0cmluZyBmcm9tCisgIFVURi04ICh3aXRoIHJlcGxhY2UgZXJyb3IgaGFuZGxlcikgaW5zdGVhZCBvZiBJU08tODg1OS0xIChpbiBzdHJpY3QgbW9kZSkuCisgIFBhdGNoIHdyaXR0ZW4gYnkgUmF5IEFsbGVuLgorCistIElzc3VlICMxMDgzMDogRml4IFB5VW5pY29kZV9Gcm9tRm9ybWF0VigiJWMiKSBmb3Igbm9uLUJNUCBjaGFyYWN0ZXJzIG9uCisgIG5hcnJvdyBidWlsZC4KKwogLSBBZGQgUHlPYmplY3RfR2VuZXJpY0dldERpY3QgYW5kIFB5T2JqZWN0X0dlbmVyaVNldERpY3QuIFRoZXkgYXJlIGdlbmVyaWMKICAgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgZ2V0dGVyIGFuZCBzZXR0ZXIgb2YgYSBgYF9fZGljdF9fYGAgZGVzY3JpcHRvciBvZiBDCiAgIHR5cGVzLgpAQCAtNDA3OSw2ICs0MDk0LDI0IEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzEzOTg5OiBEb2N1bWVudCB0aGF0IEd6aXBGaWxlIGRvZXMgbm90IHN1cHBvcnQgdGV4dCBtb2RlLCBhbmQgZ2l2ZSBhCisgIG1vcmUgaGVscGZ1bCBlcnJvciBtZXNzYWdlIHdoZW4gb3BlbmVkIHdpdGggYW4gaW52YWxpZCBtb2RlIHN0cmluZy4KKworLSBJc3N1ZSAjMTM5MjE6IFVuZG9jdW1lbnQgYW5kIGNsZWFuIHVwIHNxbGl0ZTMuT3B0aW1pemVkVW5pY29kZSwKKyAgd2hpY2ggaXMgb2Jzb2xldGUgaW4gUHl0aG9uIDMueC4gSXQncyBub3cgYWxpYXNlZCB0byBzdHIgZm9yCisgIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgorCistIElzc3VlICMxMjEwMjogRG9jdW1lbnQgdGhhdCBidWZmZXJlZCBmaWxlcyBtdXN0IGJlIGZsdXNoZWQgYmVmb3JlIGJlaW5nIHVzZWQKKyAgd2l0aCBtbWFwLiBQYXRjaCBieSBTdGVmZmVuIERhb2RlIE51cnBtZXNvLgorCistIElzc3VlICM4OTgyOiBJbXByb3ZlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYXJncGFyc2UgTmFtZXNwYWNlIG9iamVjdC4KKworLSBJc3N1ZSAjOTM0MzogRG9jdW1lbnQgdGhhdCBhcmdwYXJzZSBwYXJlbnQgcGFyc2VycyBtdXN0IGJlIGNvbmZpZ3VyZWQgYmVmb3JlCisgIHRoZWlyIGNoaWxkcmVuLgorCistIElzc3VlICMxMzQ5ODogQ2xhcmlmeSBkb2NzIG9mIG9zLm1ha2VkaXJzKCkncyBleGlzdF9vayBhcmd1bWVudC4gIERvbmUgd2l0aAorICBncmVhdCBuYXRpdmUtc3BlYWtlciBoZWxwIGZyb20gUi4gRGF2aWQgTXVycmF5LgorCiAtIElzc3VlcyAjMTM0OTEgYW5kICMxMzk5NTogRml4IG1hbnkgZXJyb3JzIGluIHNxbGl0ZTMgZG9jdW1lbnRhdGlvbi4KICAgSW5pdGlhbCBwYXRjaCBmb3IgIzEzNDkxIGJ5IEpvaGFubmVzIFZvZ2VsLgogCkBAIC05NjUyLDcgKzk2ODUsNyBAQAogCiAtIElzc3VlICMxMjEwOiBGaXhlZCBpbWFwbGliIGFuZCBpdHMgZG9jdW1lbnRhdGlvbi4KIAotLSBJc3N1ZSAjNDIzMzogQ2hhbmdlZCBzZW1hbnRpYyBvZiBgYF9maWxlaW8uRmlsZUlPYGAncyBgYGNsb3NlKClgYCAKKy0gSXNzdWUgIzQyMzM6IENoYW5nZWQgc2VtYW50aWMgb2YgYGBfZmlsZWlvLkZpbGVJT2BgJ3MgYGBjbG9zZSgpYGAKICAgbWV0aG9kIG9uIGZpbGUgb2JqZWN0cyB3aXRoIGNsb3NlZmQ9RmFsc2UuIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgc3RpbGwKICAga2VwdCBvcGVuIGJ1dCB0aGUgZmlsZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgY2xvc2VkIGZpbGUuIFRoZSBgYEZpbGVJT2BgCiAgIG9iamVjdCBhbHNvIGdvdCBhIG5ldyByZWFkb25seSBhdHRyaWJ1dGUgYGBjbG9zZWZkYGAuCkBAIC05Nzk2LDEzICs5ODI5LDEzIEBACiAgIGN5Y2xpYyBnYXJiYWdlIGNvbGxlY3Rpb24uCiAKIC0gSXNzdWUgIzM2Njg6IEZpeCBhIG1lbW9yeSBsZWFrIHdpdGggdGhlICJzKiIgYXJndW1lbnQgcGFyc2VyIGluCi0gIFB5QXJnX1BhcnNlVHVwbGUgYW5kIGZyaWVuZHMsIHdoaWNoIG9jY3VycmVkIHdoZW4gdGhlIGFyZ3VtZW50IGZvciAicyoiIAorICBQeUFyZ19QYXJzZVR1cGxlIGFuZCBmcmllbmRzLCB3aGljaCBvY2N1cnJlZCB3aGVuIHRoZSBhcmd1bWVudCBmb3IgInMqIgogICB3YXMgY29ycmVjdGx5IHBhcnNlZCBidXQgcGFyc2luZyBvZiBzdWJzZXF1ZW50IGFyZ3VtZW50cyBmYWlsZWQuCiAKIC0gSXNzdWUgIzM2MTE6IEFuIGV4Y2VwdGlvbiBfX2NvbnRleHRfXyBjb3VsZCBiZSBjbGVhcmVkIGluIGEgY29tcGxleCBwYXR0ZXJuCiAgIGludm9sdmluZyBhIF9fZGVsX18gbWV0aG9kIHJlLXJhaXNpbmcgYW4gZXhjZXB0aW9uLgogCi0tIElzc3VlICMyNTM0OiBzcGVlZCB1cCBpc2luc3RhbmNlKCkgYW5kIGlzc3ViY2xhc3MoKSBieSA1MC03MCUsIHNvIGFzIHRvIAorLSBJc3N1ZSAjMjUzNDogc3BlZWQgdXAgaXNpbnN0YW5jZSgpIGFuZCBpc3N1YmNsYXNzKCkgYnkgNTAtNzAlLCBzbyBhcyB0bwogICBtYXRjaCBQeXRob24gMi41IHNwZWVkIGRlc3BpdGUgdGhlIF9faW5zdGFuY2VjaGVja19fIC8gX19zdWJjbGFzc2NoZWNrX18KICAgbWVjaGFuaXNtLiBJbiB0aGUgcHJvY2VzcywgZml4IGEgYnVnIHdoZXJlIGlzaW5zdGFuY2UoKSBhbmQgaXNzdWJjbGFzcygpLAogICB3aGVuIGdpdmVuIGEgdHVwbGUgb2YgY2xhc3NlcyBhcyBzZWNvbmQgYXJndW1lbnQsIHdlcmUgbG9va2luZyB1cApAQCAtOTg4MCw3ICs5OTEzLDcgQEAKIAogLSBUaGUgZGVwcmVjYXRpb24gd2FybmluZ3MgZm9yIHRoZSBjYW1lbENhc2UgdGhyZWFkaW5nIEFQSSBuYW1lcyB3ZXJlIHJlbW92ZWQuCiAKLS0gSXNzdWUgIzMxMTA6IG11bHRpcHJvY2Vzc2luZyBmYWlscyB0byBjb21waWVsIG9uIHNvbGFyaXMgMTAgZHVlIHRvIG1pc3NpbmcgCistIElzc3VlICMzMTEwOiBtdWx0aXByb2Nlc3NpbmcgZmFpbHMgdG8gY29tcGllbCBvbiBzb2xhcmlzIDEwIGR1ZSB0byBtaXNzaW5nCiAgIFNFTV9WQUxVRV9NQVguCiAKIEV4dGVuc2lvbiBNb2R1bGVzCkBAIC0yMTUxMiw3ICsyMTU0NSw3IEBACiAJQm93IHRvIGZvbnQtbG9jayBhdCB0aGUgZW5kIG9mIHRoZSBkb2NzdHJpbmcsIHNpbmNlIGl0IHRocm93cyBzdHVmZgogCW9mZi4KIAotCU1ha2Ugc3VyZSB0aGUgcGF0aCBwYXJhbWV0ZXIgdG8gcmVhZG1vZHVsZSgpIGlzIGEgbGlzdCBiZWZvcmUgYWRkaW5nIGl0CisJTWFrZSBzdXJlIHRoZSBwYXRoIHBhcmFtdGVyIHRvIHJlYWRtb2R1bGUoKSBpcyBhIGxpc3QgYmVmb3JlIGFkZGluZyBpdAogCXdpdGggc3lzLnBhdGgsIG9yIHRoZSBhZGRpdGlvbiBjb3VsZCBmYWlsLgogCiAKQEAgLTIxNTkzLDcgKzIxNjI2LDcgQEAKIAogLSBJbXByb3ZlZCBCZU9TIHN1cHBvcnQuCiAKLS0gU3VwcG9ydCBkeW5hbWljIGxvYWRpbmcgb2Ygc2hhcmVkIGxpYnJhcmllcyBvbiBOZXRCU0QgcGxhdGZvcm1zIHRoYXQgCistIFN1cHBvcnQgZHluYW1pYyBsb2FkaW5nIG9mIHNoYXJlZCBsaWJyYXJpZXMgb24gTmV0QlNEIHBsYXRmb3JtcyB0aGF0CiB1c2UgRUxGIChpLmUuLCBNSVBTIGFuZCBBbHBoYSBzeXN0ZW1zKS4KIAogQ29uZmlndXJhdGlvbi9idWlsZCBjaGFuZ2VzCkBAIC0yMTgxMCw3ICsyMTg0Myw3IEBACiBoaWdoZXItbGV2ZWwgY2xhc3NlcyBpbiBjb2RlLnB5LgogCiAtIHR1cnRsZS5weSBpcyBhIG5ldyBtb2R1bGUgZm9yIHNpbXBsZSB0dXJ0bGUgZ3JhcGhpY3MuICBJJ20gc3RpbGwKLXdvcmtpbmcgb24gaXQ7IGxldCBtZSBrbm93IGlmIHlvdSB1c2UgdGhpcyB0byB0ZWFjaCBQeXRob24gdG8gY2hpbGRyZW4gCit3b3JraW5nIG9uIGl0OyBsZXQgbWUga25vdyBpZiB5b3UgdXNlIHRoaXMgdG8gdGVhY2ggUHl0aG9uIHRvIGNoaWxkcmVuCiBvciBvdGhlciBub3ZpY2VzIHdpdGhvdXQgcHJpb3IgcHJvZ3JhbW1pbmcgZXhwZXJpZW5jZS4KIAogT2Jzb2xldGVkIGxpYnJhcnkgbW9kdWxlcwpAQCAtMjE5NDIsNyArMjE5NzUsNyBAQAogQ2hhbmdlcyB0byB0b29scwogLS0tLS0tLS0tLS0tLS0tLQogCi0tIE5ldywgaW1wcm92ZWQgdmVyc2lvbiBvZiBCYXJyeSBXYXJzYXcncyBNaXNjL3B5dGhvbi1tb2RlLmVsIChlZGl0aW5nIAorLSBOZXcsIGltcHJvdmVkIHZlcnNpb24gb2YgQmFycnkgV2Fyc2F3J3MgTWlzYy9weXRob24tbW9kZS5lbCAoZWRpdGluZwogc3VwcG9ydCBmb3IgRW1hY3MpLgogCiAtIHRhYm5hbm55LnB5OiBhZGRlZCBhIC1xICgncXVpZXQnKSBvcHRpb24gdG8gdGFibmFubnksIHdoaWNoIGNhdXNlcwpAQCAtMjIyMTcsNyArMjIyNTAsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0KIAogLSBJbnN0YWxsIHpsaWIuZGxsIGluIHRoZSBETExzIGRpcmVjdG9yeSBpbnN0ZWFkIG9mIGluIHRoZSB3aW4zMgotc3lzdGVtIGRpcmVjdG9yeSwgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggb3RoZXIgYXBwbGljYXRpb25zIHRoYXQgaGF2ZSAKK3N5c3RlbSBkaXJlY3RvcnksIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG90aGVyIGFwcGxpY2F0aW9ucyB0aGF0IGhhdmUKIHRoZWlyIG93biB6bGliLmRsbC4KIAogVGVzdCBTdWl0ZQpAQCAtMjIyOTcsNyArMjIzMzAsNyBAQAogc28gdGhhdCBhIHN5bWxpbmsgdG8gYSBzeW1saW5rIGNhbiB3b3JrLgogCiAtIEFkZGVkIGEgaGFjayBzbyB0aGF0IHdoZW4geW91IHR5cGUgJ3F1aXQnIG9yICdleGl0JyBhdCB0aGUKLWludGVycHJldGVyLCB5b3UgZ2V0IGEgZnJpZW5kbHkgZXhwbGFuYXRpb24gb2YgaG93IHRvIHByZXNzIEN0cmwtRCAob3IgCitpbnRlcnByZXRlciwgeW91IGdldCBhIGZyaWVuZGx5IGV4cGxhbmF0aW9uIG9mIGhvdyB0byBwcmVzcyBDdHJsLUQgKG9yCiBDdHJsLVopIHRvIGV4aXQuCiAKIC0gTmV3IGFuZCBpbXByb3ZlZCBNaXNjL3B5dGhvbi1tb2RlLmVsIChQeXRob24gbW9kZSBmb3IgRW1hY3MpLgpAQCAtMjI0NzAsMTMgKzIyNTAzLDEzIEBACiByYW5nZS4gIEFsc28sIHJhbmRpbnQoYSwgYikgaXMgbm93IHJlZGVmaW5lZCBhcyByYW5kcmFuZ2UoYSwgYisxKSwKIGFkZGluZyBleHRyYSByYW5nZSBhbmQgdHlwZSBjaGVja2luZyB0byBpdHMgYXJndW1lbnRzIQogCi0tIEFkZCBzb21lIHNlbWktdGhyZWFkLXNhZmV0eSB0byByYW5kb20uZ2F1c3MoKSAoaXQgdXNlZCB0byBiZSBhYmxlIHRvIAorLSBBZGQgc29tZSBzZW1pLXRocmVhZC1zYWZldHkgdG8gcmFuZG9tLmdhdXNzKCkgKGl0IHVzZWQgdG8gYmUgYWJsZSB0bwogY3Jhc2ggd2hlbiBpbnZva2VkIGZyb20gc2VwYXJhdGUgdGhyZWFkczsgbm93IHRoZSB3b3JzdCBpdCBjYW4gZG8gaXMKIGdpdmUgYSBkdXBsaWNhdGUgcmVzdWx0IG9jY2FzaW9uYWxseSkuCiAKIC0gU29tZSByZXN0cnVjdHVyaW5nIGFuZCBnZW5lcmFsaXphdGlvbiBkb25lIHRvIGNtZC5weS4KIAotLSBNYWpvciB1cGdyYWRlIHRvIENvbmZpZ1BhcnNlci5weTsgY29udmVydGVkIHRvIHVzaW5nICdyZScsIGFkZGVkIG5ldyAKKy0gTWFqb3IgdXBncmFkZSB0byBDb25maWdQYXJzZXIucHk7IGNvbnZlcnRlZCB0byB1c2luZyAncmUnLCBhZGRlZCBuZXcKIGV4Y2VwdGlvbnMsIHN1cHBvcnQgdW5kZXJzY29yZSBpbiBzZWN0aW9uIGhlYWRlciBhbmQgb3B0aW9uIG5hbWUuICBObwogbG9uZ2VyIGFkZCAnbmFtZScgb3B0aW9uIHRvIGV2ZXJ5IHNlY3Rpb247IGluc3RlYWQsIGFkZCAnX19uYW1lX18nLgogCkBAIC0yMjY3Myw3ICsyMjcwNiw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLQogCiAtIFRoZSByZWdpc3RyeSBrZXkgdXNlZCBpcyBub3cgIjEuNSIgaW5zdGVhZCBvZiAiMS41LngiIC0tIHNvIGZ1dHVyZQotdmVyc2lvbnMgb2YgMS41IGFuZCBNYXJrIEhhbW1vbmQncyB3aW4zMmFsbCBpbnN0YWxsZXIgZG9uJ3QgbmVlZCB0byBiZSAKK3ZlcnNpb25zIG9mIDEuNSBhbmQgTWFyayBIYW1tb25kJ3Mgd2luMzJhbGwgaW5zdGFsbGVyIGRvbid0IG5lZWQgdG8gYmUKIHJlc3luY2hyb25pemVkLgogCiBXaW5kb3dzIFRvb2xzCkBAIC0yMjc0MCw3ICsyMjc3Myw3IEBACiBkeW5hbWljYWxseSBhZGQgb25lIG9yIG1hbnkgZW50cmllcyB0byB0aGUgdGFibGUgb2YgYnVpbHQtaW4gbW9kdWxlcy4KIAogLSBOZXcgbWFjcm8gUHlfSW5pdE1vZHVsZTMobmFtZSwgbWV0aG9kcywgZG9jKSB3aGljaCBjYWxscwotUHlfSW5pdE1vZHVsZTQoKSB3aXRoIGFwcHJvcHJpYXRlIGFyZ3VtZW50cy4gIChUaGUgLTQgdmFyaWFudCByZXF1aXJlcyAKK1B5X0luaXRNb2R1bGU0KCkgd2l0aCBhcHByb3ByaWF0ZSBhcmd1bWVudHMuICAoVGhlIC00IHZhcmlhbnQgcmVxdWlyZXMKIHlvdSB0byBwYXNzIGFuIG9ic2N1cmUgdmVyc2lvbiBudW1iZXIgY29uc3RhbnQgd2hpY2ggaXMgYWx3YXlzIHRoZSBzYW1lLikKIAogLSBOZXcgQVBJcyBQeVN5c19Xcml0ZVN0ZG91dCgpIGFuZCBQeVN5c19Xcml0ZVN0ZGVycigpIHRvIHdyaXRlIHRvCkBAIC0yMjgxMiw3ICsyMjg0NSw3IEBACiBTeW50YXggY2hhbmdlCiAtLS0tLS0tLS0tLS0tCiAKLS0gVGhlIHJhaXNlIHN0YXRlbWVudCBjYW4gbm93IGJlIHVzZWQgd2l0aG91dCBhcmd1bWVudHMsIHRvIHJlLXJhaXNlIAorLSBUaGUgcmFpc2Ugc3RhdGVtZW50IGNhbiBub3cgYmUgdXNlZCB3aXRob3V0IGFyZ3VtZW50cywgdG8gcmUtcmFpc2UKIGEgcHJldmlvdXNseSBzZXQgZXhjZXB0aW9uLiAgVGhpcyBzaG91bGQgYmUgdXNlZCBhZnRlciBjYXRjaGluZyBhbgogZXhjZXB0aW9uIHdpdGggYW4gZXhjZXB0IGNsYXVzZSBvbmx5LCBlaXRoZXIgaW4gdGhlIGV4Y2VwdCBjbGF1c2Ugb3IKIGxhdGVyIGluIHRoZSBzYW1lIGZ1bmN0aW9uLgpAQCAtMjI4NzEsNyArMjI5MDQsNyBAQAogCiAJRGVtby90a2ludGVyL2d1aWRvL3BhaW50LnB5IC0tIERhdmUgTWl0Y2hlbGwKIAlEZW1vL3NvY2tldHMvdW5peHNlcnZlci5weSAtLSBQaWV0IHZhbiBPb3N0cnVtCi0JCisKIAogLSBNdWNoIGJldHRlciBmcmVlemUgc3VwcG9ydC4gIFRoZSBmcmVlemUgc2NyaXB0IGNhbiBub3cgZnJlZXplCiBoaWVyYXJjaGljYWwgbW9kdWxlIG5hbWVzICh3aXRoIGEgY29ycmVzcG9uZGluZyBjaGFuZ2UgdG8gaW1wb3J0LmMpLApAQCAtMjMwMTAsNyArMjMwNDMsNyBAQAogLSBOZXcgY29tbWFuZCBzdXBwb3J0ZWQgYnkgdGhlIGZ0cGxpYiBtb2R1bGU6IHJtZCgpOyBhbHNvIGZpeGVkIHNvbWUKIG1pbm9yIGJ1Z3MuCiAKLS0gVGhlIHByb2ZpbGUgbW9kdWxlIG5vdyB1c2VzIGEgZGlmZmVyZW50IHRpbWVyIGZ1bmN0aW9uIGJ5IGRlZmF1bHQgLS0gCistIFRoZSBwcm9maWxlIG1vZHVsZSBub3cgdXNlcyBhIGRpZmZlcmVudCB0aW1lciBmdW5jdGlvbiBieSBkZWZhdWx0IC0tCiB0aW1lLmNsb2NrKCkgaXMgZ2VuZXJhbGx5IGJldHRlciB0aGFuIG9zLnRpbWVzKCkuICBUaGlzIG1ha2VzIGl0IHdvcmsKIGJldHRlciBvbiBXaW5kb3dzIE5ULCB0b28uCiAKQEAgLTIzMDQ5LDE0ICsyMzA4MiwxNCBAQAogLSBJbiB0aGUgbXVsdGlmaWxlIG1vZHVsZSwgc3VwcG9ydCB0aGUgb3B0aW9uYWwgc2Vjb25kIHBhcmFtZXRlciB0bwogc2VlaygpIHdoZW4gcG9zc2libGUuCiAKLS0gU2V2ZXJhbCBmaXhlcyB0byB0aGUgZ29waGVybGliIG1vZHVsZSBieSBMYXJzIE1hcml1cyBHYXJzaG9sLiAgQWxzbywgCistIFNldmVyYWwgZml4ZXMgdG8gdGhlIGdvcGhlcmxpYiBtb2R1bGUgYnkgTGFycyBNYXJpdXMgR2Fyc2hvbC4gIEFsc28sCiB1cmxwYXJzZSBub3cgY29ycmVjdGx5IGhhbmRsZXMgR29waGVyIFVSTHMgd2l0aCBxdWVyeSBzdHJpbmdzLgogCiAtIEZpeGVkIGEgdGlueSBidWcgaW4gZm9ybWF0X2V4Y2VwdGlvbigpIGluIHRoZSB0cmFjZWJhY2sgbW9kdWxlLgogQWxzbyByZXdyaXRlIHRiX2xpbmVubygpIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBKUHl0aG9uIChhbmQgbm90CiBkaXN0dXJiIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiEpOyBieSBKaW0gSHVndW5pbi4KIAotLSBUaGUgaHR0cGxpYiBtb2R1bGUgaXMgbW9yZSByb2J1c3Qgd2hlbiBzZXJ2ZXJzIHNlbmQgYSBzaG9ydCByZXNwb25zZSAKKy0gVGhlIGh0dHBsaWIgbW9kdWxlIGlzIG1vcmUgcm9idXN0IHdoZW4gc2VydmVycyBzZW5kIGEgc2hvcnQgcmVzcG9uc2UKIC0tIGNvdXJ0ZXN5IFRpbSBPJ01hbGxleS4KIAogVGtpbnRlciBhbmQgZnJpZW5kcwpAQCAtMjMwNzEsNyArMjMxMDQsNyBAQAogbm8gbG9uZ2VyIHVzZSB0aGUgZGVmYXVsdCByb290LgogCiAtIFRoZSBpbnRlcmZhY2VzIGZvciB0aGUgYmluZCooKSBhbmQgdW5iaW5kKCkgd2lkZ2V0IG1ldGhvZHMgaGF2ZSBiZWVuCi1yZWRlc2lnbmVkOyB0aGUgYmluZCooKSBtZXRob2RzIG5vdyByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIFRjbCBjb21tYW5kIAorcmVkZXNpZ25lZDsgdGhlIGJpbmQqKCkgbWV0aG9kcyBub3cgcmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBUY2wgY29tbWFuZAogY3JlYXRlZCBmb3IgdGhlIGNhbGxiYWNrLCBhbmQgdGhpcyBjYW4gYmUgcGFzc2VkIGFzIGFuIG9wdGlvbmFsCiBhcmd1bWVudCB0byB1bmJpbmQoKSBpbiBvcmRlciB0byBkZWxldGUgdGhlIGNvbW1hbmQgKG5vcm1hbGx5LCBzdWNoCiBjb21tYW5kcyBhcmUgYXV0b21hdGljYWxseSB1bmJvdW5kIHdoZW4gdGhlIHdpZGdldCBpcyBkZXN0cm95ZWQsIGJ1dApAQCAtMjMxMDcsNyArMjMxNDAsNyBAQAogZGljdGlvbmFyeSB0byBhbGxvdyByZWN1cnNpdmUgY29udGFpbmVyIHR5cGVzIHRvIGRldGVjdCByZWN1cnNpb24gaW4KIHRoZWlyIHJlcHIoKSwgc3RyKCkgYW5kIHByaW50IGltcGxlbWVudGF0aW9ucy4KIAotLSBOZXcgZnVuY3Rpb24gUHlPYmplY3RfTm90KHgpIGNhbGN1bGF0ZXMgKG5vdCB4KSBhY2NvcmRpbmcgdG8gUHl0aG9uJ3MgCistIE5ldyBmdW5jdGlvbiBQeU9iamVjdF9Ob3QoeCkgY2FsY3VsYXRlcyAobm90IHgpIGFjY29yZGluZyB0byBQeXRob24ncwogc3RhbmRhcmQgcnVsZXMgKGJhc2ljYWxseSwgaXQgbmVnYXRlcyB0aGUgb3V0Y29tZSBQeU9iamVjdF9Jc1RydWUoeCkuCiAKIC0gTmV3IGZ1bmN0aW9uIF9QeU1vZHVsZV9DbGVhcigpLCB3aGljaCBjbGVhcnMgYSBtb2R1bGUncyBkaWN0aW9uYXJ5CkBAIC0yMzI2OCw3ICsyMzMwMSw3IEBACiBpbnN0YW5jZXMgd2l0aCBjb3B5LnB5LiAgVGhlIGNQaWNrbGUuYyBjaGFuZ2VzIGFuZCBzb21lIHBpY2tsZS5weQogY2hhbmdlcyBhcmUgY291cnRlc3kgSmltIEZ1bHRvbi4KIAotLSBMb2NhbGUgc3VwcG9ydCBpbiBoZSAicmUiIChQZXJsIHJlZ3VsYXIgZXhwcmVzc2lvbnMpIG1vZHVsZS4gIFVzZSAKKy0gTG9jYWxlIHN1cHBvcnQgaW4gaGUgInJlIiAoUGVybCByZWd1bGFyIGV4cHJlc3Npb25zKSBtb2R1bGUuICBVc2UKIHRoZSBmbGFnIHJlLkwgKG9yIHJlLkxPQ0FMRSkgdG8gZW5hYmxlIGxvY2FsZS1zcGVjaWZpYyBtYXRjaGluZwogcnVsZXMgZm9yIFx3IGFuZCBcYi4gIFRoZSBpbi1saW5lIHN5bnRheCBmb3IgdGhpcyBmbGFnIGlzICg/TCkuCiAKQEAgLTIzMzM0LDcgKzIzMzY3LDcgQEAKIAogLSBTb21lIGltcHJvdmVtZW50cyB0byB0aGUgX3RraW50ZXIgYnVpbGQgbGluZSBzdWdnZXN0ZWQgYnkgQ2FzZSBSb29sZS4KIAotLSBBIGZ1bGwgc3VpdGUgb2YgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMgZm9yIE5ldEJTRCAxLngsIHN1Ym1pdHRlZCBieSAKKy0gQSBmdWxsIHN1aXRlIG9mIHBsYXRmb3JtIHNwZWNpZmljIGZpbGVzIGZvciBOZXRCU0QgMS54LCBzdWJtaXR0ZWQgYnkKIEFuZGVycyBBbmRlcnNlbi4KIAogLSBOZXcgU29sYXJpcyBzcGVjaWZpYyBoZWFkZXIgU1RST1BUUy5weS4KQEAgLTIzNDA0LDcgKzIzNDM3LDcgQEAKIGlmIHRoZXJlIGFyZSBsb3RzIG9mIGR1cGxpY2F0ZXMsIGFuZCBvdGhlcndpc2UgYXQgbGVhc3QgYXMgZ29vZC4KIAogLSBBZGRlZCAidXVlIiBhcyBhbiBhbGlhcyBmb3IgInV1ZW5jb2RlIiB0byBtaW1ldG9vbHMucHkuICAoSG0sIHRoZQotdXVkZWNvZGUgYnVnIHdoZXJlIGl0IGNvbXBsYWludHMgYWJvdXQgdHJhaWxpbmcgZ2FyYmFnZSBpcyBzdGlsbCB0aGVyZSAKK3V1ZGVjb2RlIGJ1ZyB3aGVyZSBpdCBjb21wbGFpbnRzIGFib3V0IHRyYWlsaW5nIGdhcmJhZ2UgaXMgc3RpbGwgdGhlcmUKIDotKCApLgogCiAtIHBpY2tsZS5weSByZXF1aXJlcyBpbnRlZ2VycyBpbiB0ZXh0IG1vZGUgdG8gYmUgaW4gZGVjaW1hbCBub3RhdGlvbgpAQCAtMjM1NjQsNyArMjM1OTcsNyBAQAogLSBUaGUgd2FybmluZyBhYm91dCBhIHRocmVhZCBzdGlsbCBoYXZpbmcgYSBmcmFtZSBub3cgb25seSBoYXBwZW5zIGluCiB2ZXJib3NlIG1vZGUuCiAKLS0gQ2hhbmdlIHRoZSBzaWduYWwgZmluYWxpemF0aW9uIHNvIHRoYXQgaXQgYWxzbyByZXNldHMgdGhlIHNpZ25hbAorLSBDaGFuZ2UgdGhlIHNpZ25hbCBmaW5pYWxpemF0aW9uIHNvIHRoYXQgaXQgYWxzbyByZXNldHMgdGhlIHNpZ25hbAogaGFuZGxlcnMuICBBZnRlciB0aGlzIGhhcyBiZWVuIGNhbGxlZCwgb3VyIHNpZ25hbCBoYW5kbGVycyBhcmUgbm8KIGxvbmdlciBhY3RpdmUhCiAKQEAgLTI0MTgwLDcgKzI0MjEzLDcgQEAKIFRoZSBQeXRob24vQyBBUEkgZm9yIGZyYW1lcyBpcyBjaGFuZ2VkICh5b3Ugc2hvdWxkbid0IGJlIHVzaW5nIHRoaXMKIGFueXdheSkuCiAKLS0gU2lnbmlmaWNhbnQgc3BlZWR1cCBieSBpbmxpbmluZyBzb21lIGNvbW1vbiBvcGNvZGVzIGZvciBjb21tb24gb3BlcmFuZCAKKy0gU2lnbmlmaWNhbnQgc3BlZWR1cCBieSBpbmxpbmluZyBzb21lIGNvbW1vbiBvcGNvZGVzIGZvciBjb21tb24gb3BlcmFuZAogdHlwZXMgKGUuZy4gIGkraSwgaS1pLCBhbmQgbGlzdFtpXSkuICBGcmVkcmlrIEx1bmRoLgogCiAtIFNtYWxsIHNwZWVkdXAgYnkgcmVvcmRlcmluZyB0aGUgbWV0aG9kIHRhYmxlcyBvZiBzb21lIGNvbW1vbgpAQCAtMjQyMDYsMzQgKzI0MjM5LDM0IEBACiBwcmludGluZyB0aGUgZG9jdW1lbnRhdGlvbiBub3cga2lsbHMgZmV3ZXIgdHJlZXMgLS0gdGhlIG1hcmdpbnMgaGF2ZQogYmVlbiByZWR1Y2VkLgogCi0tIEkgaGF2ZSBzdGFydGVkIGRvY3VtZW50aW5nIHRoZSBQeXRob24vQyBBUEkuIFVuZm9ydHVuYXRlbHkgdGhpcyBwcm9qZWN0IAotaGFzbid0IGJlZW4gY29tcGxldGVkIHlldC4gIEl0IHdpbGwgYmUgY29tcGxldGUgYmVmb3JlIHRoZSBmaW5hbCByZWxlYXNlIG9mIAotUHl0aG9uIDEuNSwgdGhvdWdoLiAgQXQgdGhlIG1vbWVudCwgaXQncyBiZXR0ZXIgdG8gcmVhZCB0aGUgTGFUZVggc291cmNlIAorLSBJIGhhdmUgc3RhcnRlZCBkb2N1bWVudGluZyB0aGUgUHl0aG9uL0MgQVBJLiBVbmZvcnR1bmF0ZWx5IHRoaXMgcHJvamVjdAoraGFzbid0IGJlZW4gY29tcGxldGVkIHlldC4gIEl0IHdpbGwgYmUgY29tcGxldGUgYmVmb3JlIHRoZSBmaW5hbCByZWxlYXNlIG9mCitQeXRob24gMS41LCB0aG91Z2guICBBdCB0aGUgbW9tZW50LCBpdCdzIGJldHRlciB0byByZWFkIHRoZSBMYVRlWCBzb3VyY2UKIHRoYW4gdG8gYXR0ZW1wdCB0byBydW4gaXQgdGhyb3VnaCBMYVRlWCBhbmQgcHJpbnQgdGhlIHJlc3VsdGluZyBkdmkgZmlsZS4KIAotLSBUaGUgcG9zaXggbW9kdWxlIChhbmQgaGVuY2Ugb3MucHkpIG5vdyBoYXMgZG9jIHN0cmluZ3MhICBUaGFua3MgdG8gTmVpbCAKLVNjaGVtZW5hdWVyLiAgSSByZWNlaXZlZCBhIGZldyBvdGhlciBjb250cmlidXRpb25zIG9mIGRvYyBzdHJpbmdzLiAgSW4gbW9zdCAKKy0gVGhlIHBvc2l4IG1vZHVsZSAoYW5kIGhlbmNlIG9zLnB5KSBub3cgaGFzIGRvYyBzdHJpbmdzISAgVGhhbmtzIHRvIE5laWwKK1NjaGVtZW5hdWVyLiAgSSByZWNlaXZlZCBhIGZldyBvdGhlciBjb250cmlidXRpb25zIG9mIGRvYyBzdHJpbmdzLiAgSW4gbW9zdAogb3RoZXIgcGxhY2VzLCBkb2Mgc3RyaW5ncyBhcmUgc3RpbGwgd2lzaGZ1bCB0aGlua2luZy4uLgogCiAKIExhbmd1YWdlIGNoYW5nZXMKIC0tLS0tLS0tLS0tLS0tLS0KIAotLSBQcml2YXRlIHZhcmlhYmxlcyB3aXRoIGxlYWRpbmcgZG91YmxlIHVuZGVyc2NvcmUgYXJlIG5vdyBhIHBlcm1hbmVudCAKLWZlYXR1cmUgb2YgdGhlIGxhbmd1YWdlLiAgKFRoZXNlIHdlcmUgZXhwZXJpbWVudGFsIGluIHJlbGVhc2UgMS40LiAgSSBoYXZlIAotZmF2b3JhYmxlIGV4cGVyaWVuY2UgdXNpbmcgdGhlbTsgSSBjYW4ndCBsYWJlbCB0aGVtICJleHBlcmltZW50YWwiIAorLSBQcml2YXRlIHZhcmlhYmxlcyB3aXRoIGxlYWRpbmcgZG91YmxlIHVuZGVyc2NvcmUgYXJlIG5vdyBhIHBlcm1hbmVudAorZmVhdHVyZSBvZiB0aGUgbGFuZ3VhZ2UuICAoVGhlc2Ugd2VyZSBleHBlcmltZW50YWwgaW4gcmVsZWFzZSAxLjQuICBJIGhhdmUKK2Zhdm9yYWJsZSBleHBlcmllbmNlIHVzaW5nIHRoZW07IEkgY2FuJ3QgbGFiZWwgdGhlbSAiZXhwZXJpbWVudGFsIgogZm9yZXZlci4pCiAKLS0gVGhlcmUncyBuZXcgc3RyaW5nIGxpdGVyYWwgc3ludGF4IGZvciAicmF3IHN0cmluZ3MiLiAgUHJlZml4aW5nIGEgc3RyaW5nIAotbGl0ZXJhbCB3aXRoIHRoZSBsZXR0ZXIgciAob3IgUikgZGlzYWJsZXMgYWxsIGVzY2FwZSBwcm9jZXNzaW5nIGluIHRoZSAKLXN0cmluZzsgZm9yIGV4YW1wbGUsIHInXG4nIGlzIGEgdHdvLWNoYXJhY3RlciBzdHJpbmcgY29uc2lzdGluZyBvZiBhIAotYmFja3NsYXNoIGZvbGxvd2VkIGJ5IHRoZSBsZXR0ZXIgbi4gIFRoaXMgY29tYmluZXMgd2l0aCBhbGwgZm9ybXMgb2Ygc3RyaW5nIAotcXVvdGVzOyBpdCBpcyBhY3R1YWxseSB1c2VmdWwgZm9yIHRyaXBsZSBxdW90ZWQgZG9jIHN0cmluZ3Mgd2hpY2ggbWlnaHQgCi1jb250YWluIHJlZmVyZW5jZXMgdG8gXG4gb3IgXHQuICBBbiBlbWJlZGRlZCBxdW90ZSBwcmVmaXhlZCB3aXRoIGEgCi1iYWNrc2xhc2ggZG9lcyBub3QgdGVybWluYXRlIHRoZSBzdHJpbmcsIGJ1dCB0aGUgYmFja3NsYXNoIGlzIHN0aWxsIAotaW5jbHVkZWQgaW4gdGhlIHN0cmluZzsgZm9yIGV4YW1wbGUsIHInXCcnIGlzIGEgdHdvLWNoYXJhY3RlciBzdHJpbmcgCi1jb25zaXN0aW5nIG9mIGEgYmFja3NsYXNoIGFuZCBhIHF1b3RlLiAgKFJhdyBzdHJpbmdzIGFyZSBhbHNvIAotYWZmZWN0aW9uYXRlbHkga25vd24gYXMgUm9iaW4gc3RyaW5ncywgYWZ0ZXIgdGhlaXIgaW52ZW50b3IsIFJvYmluIAorLSBUaGVyZSdzIG5ldyBzdHJpbmcgbGl0ZXJhbCBzeW50YXggZm9yICJyYXcgc3RyaW5ncyIuICBQcmVmaXhpbmcgYSBzdHJpbmcKK2xpdGVyYWwgd2l0aCB0aGUgbGV0dGVyIHIgKG9yIFIpIGRpc2FibGVzIGFsbCBlc2NhcGUgcHJvY2Vzc2luZyBpbiB0aGUKK3N0cmluZzsgZm9yIGV4YW1wbGUsIHInXG4nIGlzIGEgdHdvLWNoYXJhY3RlciBzdHJpbmcgY29uc2lzdGluZyBvZiBhCitiYWNrc2xhc2ggZm9sbG93ZWQgYnkgdGhlIGxldHRlciBuLiAgVGhpcyBjb21iaW5lcyB3aXRoIGFsbCBmb3JtcyBvZiBzdHJpbmcKK3F1b3RlczsgaXQgaXMgYWN0dWFsbHkgdXNlZnVsIGZvciB0cmlwbGUgcXVvdGVkIGRvYyBzdHJpbmdzIHdoaWNoIG1pZ2h0Citjb250YWluIHJlZmVyZW5jZXMgdG8gXG4gb3IgXHQuICBBbiBlbWJlZGRlZCBxdW90ZSBwcmVmaXhlZCB3aXRoIGEKK2JhY2tzbGFzaCBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlIHN0cmluZywgYnV0IHRoZSBiYWNrc2xhc2ggaXMgc3RpbGwKK2luY2x1ZGVkIGluIHRoZSBzdHJpbmc7IGZvciBleGFtcGxlLCByJ1wnJyBpcyBhIHR3by1jaGFyYWN0ZXIgc3RyaW5nCitjb25zaXN0aW5nIG9mIGEgYmFja3NsYXNoIGFuZCBhIHF1b3RlLiAgKFJhdyBzdHJpbmdzIGFyZSBhbHNvCithZmZlY3Rpb25hdGVseSBrbm93biBhcyBSb2JpbiBzdHJpbmdzLCBhZnRlciB0aGVpciBpbnZlbnRvciwgUm9iaW4KIEZyaWVkcmljaC4pCiAKIC0gVGhlcmUncyBhIHNpbXBsZSBhc3NlcnQgc3RhdGVtZW50LCBhbmQgYSBuZXcgZXhjZXB0aW9uCkBAIC0yNDI2MiwxMCArMjQyOTUsMTAgQEAKIC0gVGhlIG9ic29sZXRlIGV4Y2VwdGlvbiBDb25mbGljdEVycm9yIChwcmVzdW1hYmx5IHVzZWQgYnkgdGhlIGxvbmcKIG9ic29sZXRlIGFjY2VzcyBzdGF0ZW1lbnQpIGhhcyBiZWVuIGRlbGV0ZWQuCiAKLS0gVGhlcmUncyBhIG5ldyBmdW5jdGlvbiBzeXMuZXhjX2luZm8oKSB3aGljaCByZXR1cm5zIHRoZSB0dXBsZSAKKy0gVGhlcmUncyBhIG5ldyBmdW5jdGlvbiBzeXMuZXhjX2luZm8oKSB3aGljaCByZXR1cm5zIHRoZSB0dXBsZQogKHN5cy5leGNfdHlwZSwgc3lzLmV4Y192YWx1ZSwgc3lzLmV4Y190cmFjZWJhY2spIGluIGEgdGhyZWFkLXNhZmUgd2F5LgogCi0tIFRoZXJlJ3MgYSBuZXcgdmFyaWFibGUgc3lzLmV4ZWN1dGFibGUsIHBvaW50aW5nIHRvIHRoZSBleGVjdXRhYmxlIGZpbGUgCistIFRoZXJlJ3MgYSBuZXcgdmFyaWFibGUgc3lzLmV4ZWN1dGFibGUsIHBvaW50aW5nIHRvIHRoZSBleGVjdXRhYmxlIGZpbGUKIGZvciB0aGUgUHl0aG9uIGludGVycHJldGVyLgogCiAtIFRoZSBzb3J0KCkgbWV0aG9kcyBmb3IgbGlzdHMgbm8gbG9uZ2VyIHVzZXMgdGhlIEMgbGlicmFyeSBxc29ydCgpOyBJCkBAIC0yNDI5MSwxMSArMjQzMjQsMTEgQEAKIHJldHVybmluZyBmcm9tIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uLgogCiAtIFRoZXJlJ3MgYSBuZXcgImJ1ZmZlciIgaW50ZXJmYWNlLiAgQ2VydGFpbiBvYmplY3RzIChlLmcuIHN0cmluZ3MgYW5kCi1hcnJheXMpIG5vdyBzdXBwb3J0IHRoZSAiYnVmZmVyIiBwcm90b2NvbC4gIEJ1ZmZlciBvYmplY3RzIGFyZSBhY2NlcHRhYmxlIAotd2hlbmV2ZXIgZm9ybWVybHkgYSBzdHJpbmcgd2FzIHJlcXVpcmVkIGZvciBhIHdyaXRlIG9wZXJhdGlvbjsgbXV0YWJsZSAKK2FycmF5cykgbm93IHN1cHBvcnQgdGhlICJidWZmZXIiIHByb3RvY29sLiAgQnVmZmVyIG9iamVjdHMgYXJlIGFjY2VwdGFibGUKK3doZW5ldmVyIGZvcm1lcmx5IGEgc3RyaW5nIHdhcyByZXF1aXJlZCBmb3IgYSB3cml0ZSBvcGVyYXRpb247IG11dGFibGUKIGJ1ZmZlciBvYmplY3RzIGNhbiBiZSB0aGUgdGFyZ2V0IG9mIGEgcmVhZCBvcGVyYXRpb24gdXNpbmcgdGhlIGNhbGwKLWYucmVhZGludG8oYnVmZmVyKS4gIEEgY29vbCBmZWF0dXJlIGlzIHRoYXQgcmVndWxhciBleHByZXNzaW9uIG1hdGNoaW5nIG5vdyAKLWFsc28gd29yayBvbiBhcnJheSBvYmplY3RzLiAgQ29udHJpYnV0aW9uIGJ5IEphY2sgSmFuc2VuLiAgKE5lZWRzIAorZi5yZWFkaW50byhidWZmZXIpLiAgQSBjb29sIGZlYXR1cmUgaXMgdGhhdCByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hpbmcgbm93CithbHNvIHdvcmsgb24gYXJyYXkgb2JqZWN0cy4gIENvbnRyaWJ1dGlvbiBieSBKYWNrIEphbnNlbi4gIChOZWVkcwogZG9jdW1lbnRhdGlvbi4pCiAKIC0gU3RyaW5nIGludGVybmluZzogZGljdGlvbmFyeSBsb29rdXBzIGFyZSBmYXN0ZXIgd2hlbiB0aGUgbG9va3VwCkBAIC0yNDU4Nyw3ICsyNDYyMCw3IEBACiBvZiBtZXNzYWdlIHNlcXVlbmNlIHNwZWNpZmllcnMgd2l0aG91dCBpbnZva2luZyBhIHN1YnByb2Nlc3MuICBBbHNvCiBhZGRlZCBhIGNyZWF0ZW1lc3NhZ2UoKSBtZXRob2QgYnkgTGFycyBXaXJ6ZW5pdXMuCiAKLS0gVGhlIFN0cmluZ0lPLlN0cmluZ0lPIGNsYXNzIG5vdyBzdXBwb3J0cyByZWFkbGluZShuYnl0ZXMpLiAgKExhcnMgCistIFRoZSBTdHJpbmdJTy5TdHJpbmdJTyBjbGFzcyBub3cgc3VwcG9ydHMgcmVhZGxpbmUobmJ5dGVzKS4gIChMYXJzCiBXaXJ6ZW5pdXMuKSAgKE9mIGNvdXJzZSwgeW91IHNob3VsZCBiZSB1c2luZyBjU3RyaW5nSU8gZm9yIHBlcmZvcm1hbmNlLikKIAogLSBVc2VyRGljdC5weSBzdXBwb3J0cyB0aGUgbmV3IGRpY3Rpb25hcnkgbWV0aG9kcyBhcyB3ZWxsLgpAQCAtMjQ2MzUsOCArMjQ2NjgsOCBAQAogLSBWYXJpb3VzIHNtYWxsIGZpeGVzIHRvIHRoZSBubnRwbGliLnB5IG1vZHVsZSB0aGF0IEkgY2FuJ3QgYm90aGVyIHRvCiBkb2N1bWVudCBpbiBkZXRhaWwuCiAKLS0gU2pvZXJkIE11bGxlbmRlcidzIG1pbWlmeS5weSBtb2R1bGUgbm93IHN1cHBvcnRzIGJhc2U2NCBlbmNvZGluZyBhbmQgCi1pbmNsdWRlcyBmdW5jdGlvbnMgdG8gaGFuZGxlIHRoZSBmdW5ueSBlbmNvZGluZyB5b3Ugc29tZXRpbWVzIHNlZSBpbiBtYWlsIAorLSBTam9lcmQgTXVsbGVuZGVyJ3MgbWltaWZ5LnB5IG1vZHVsZSBub3cgc3VwcG9ydHMgYmFzZTY0IGVuY29kaW5nIGFuZAoraW5jbHVkZXMgZnVuY3Rpb25zIHRvIGhhbmRsZSB0aGUgZnVubnkgZW5jb2RpbmcgeW91IHNvbWV0aW1lcyBzZWUgaW4gbWFpbAogaGVhZGVycy4gIEl0IGlzIG5vdyBkb2N1bWVudGVkLgogCiAtIG1haWxib3gucHk6IEFkZGVkIEJhYnlsTWFpbGJveC4gIEltcHJvdmVkIHRoZSB3YXkgdGhlIG1haWxib3ggaXMKQEAgLTI0OTg3LDIzICsyNTAyMCwyMyBAQAogTlQgKHRoZSBvbGQgVkMrKyA0LjIgTWFrZWZpbGUgaXMgYWxzbyBzdGlsbCBzdXBwb3J0ZWQsIGJ1dCB3aWxsCiBldmVudHVhbGx5IGJlIHdpdGhkcmF3biBkdWUgdG8gaXRzIGJ1bGtpbmVzcykuCiAKLS0gU2VlIHRoZSBub3RlIG9uIHRoZSBuZXcgbW9kdWxlIHNlYXJjaCBwYXRoIGluIHRoZSAiTWlzY2VsbGFuZW91cyIgc2VjdGlvbiAKKy0gU2VlIHRoZSBub3RlIG9uIHRoZSBuZXcgbW9kdWxlIHNlYXJjaCBwYXRoIGluIHRoZSAiTWlzY2VsbGFuZW91cyIgc2VjdGlvbgogYWJvdmUuCiAKIC0gU3VwcG9ydCBmb3IgV2luMzJzICh0aGUgMzItYml0IFdpbmRvd3MgQVBJIHVuZGVyIFdpbmRvd3MgMy4xKSBpcwogYmFzaWNhbGx5IHdpdGhkcmF3bi4gIElmIGl0IHN0aWxsIHdvcmtzIGZvciB5b3UsIHlvdSdyZSBsdWNreS4KIAotLSBUaGVyZSdzIGEgbmV3IGV4dGVuc2lvbiBtb2R1bGUsIG1zdmNydC5jLCB3aGljaCBwcm92aWRlcyB2YXJpb3VzIAotbG93LWxldmVsIG9wZXJhdGlvbnMgZGVmaW5lZCBpbiB0aGUgTWljcm9zb2Z0IFZpc3VhbCBDKysgUnVudGltZSBMaWJyYXJ5LiAgCi1UaGVzZSBpbmNsdWRlIGxvY2tpbmcoKSwgc2V0bW9kZSgpLCBnZXRfb3NmaGFuZGxlKCksIHNldF9vc2ZoYW5kbGUoKSwgYW5kIAorLSBUaGVyZSdzIGEgbmV3IGV4dGVuc2lvbiBtb2R1bGUsIG1zdmNydC5jLCB3aGljaCBwcm92aWRlcyB2YXJpb3VzCitsb3ctbGV2ZWwgb3BlcmF0aW9ucyBkZWZpbmVkIGluIHRoZSBNaWNyb3NvZnQgVmlzdWFsIEMrKyBSdW50aW1lIExpYnJhcnkuCitUaGVzZSBpbmNsdWRlIGxvY2tpbmcoKSwgc2V0bW9kZSgpLCBnZXRfb3NmaGFuZGxlKCksIHNldF9vc2ZoYW5kbGUoKSwgYW5kCiBjb25zb2xlIEkvTyBmdW5jdGlvbnMgbGlrZSBrYmhpdCgpLCBnZXRjaCgpIGFuZCBwdXRjaCgpLgogCiAtIFRoZSAtdSBvcHRpb24gbm90IG9ubHkgc2V0cyB0aGUgc3RhbmRhcmQgSS9PIHN0cmVhbXMgdG8gdW5idWZmZXJlZAogc3RhdHVzLCBidXQgYWxzbyBzZXRzIHRoZW0gaW4gYmluYXJ5IG1vZGUuICAoVGhpcyBjYW4gYWxzbyBiZSBkb25lCiB1c2luZyBtc3ZjcnQuc2V0bW9kZSgpLCBieSB0aGUgd2F5LikKIAotLSBUaGUsIHN5cy5wcmVmaXggYW5kIHN5cy5leGVjX3ByZWZpeCB2YXJpYWJsZXMgcG9pbnQgdG8gdGhlIGRpcmVjdG9yeSAKLXdoZXJlIFB5dGhvbiBpcyBpbnN0YWxsZWQsIG9yIHRvIHRoZSB0b3Agb2YgdGhlIHNvdXJjZSB0cmVlLCBpZiBpdCB3YXMgcnVuIAorLSBUaGUsIHN5cy5wcmVmaXggYW5kIHN5cy5leGVjX3ByZWZpeCB2YXJpYWJsZXMgcG9pbnQgdG8gdGhlIGRpcmVjdG9yeQord2hlcmUgUHl0aG9uIGlzIGluc3RhbGxlZCwgb3IgdG8gdGhlIHRvcCBvZiB0aGUgc291cmNlIHRyZWUsIGlmIGl0IHdhcyBydW4KIGZyb20gdGhlcmUuCiAKIC0gVGhlIHZhcmlvdXMgb3MucGF0aCBtb2R1bGVzIChwb3NpeHBhdGgsIG50cGF0aCwgbWFjcGF0aCkgbm93IHN1cHBvcnQKQEAgLTI1MDExLDcgKzI1MDQ0LDcgQEAKIG9zLnBhdGguam9pbihhLCBiLCBjKSBpcyB0aGUgc2FtZSBhcyBvcy5wYXRoLmpvaW4oYSwgb3MucGF0aC5qb2luKGIsCiBjKSkuCiAKLS0gVGhlIG50cGF0aCBtb2R1bGUgKG5vcm1hbGx5IHVzZWQgYXMgb3MucGF0aCkgc3VwcG9ydHMgfiB0byAkSE9NRSAKKy0gVGhlIG50cGF0aCBtb2R1bGUgKG5vcm1hbGx5IHVzZWQgYXMgb3MucGF0aCkgc3VwcG9ydHMgfiB0byAkSE9NRQogZXhwYW5zaW9uIGluIGV4cGFuZHVzZXIoKS4KIAogLSBUaGUgZnJlZXplIHRvb2wgbm93IHdvcmtzIG9uIFdpbmRvd3MuCkBAIC0yNTMwOSw0NyArMjUzNDIsNDcgQEAKIAogLSBOZXcgbW9kdWxlIHdoaWNoZGIgcmVjb2duaXplcyBkYm0sIGdkYm0gYW5kIGJzZGRiL2RiaGFzaCBmaWxlcy4KIAotLSBUaGUgRG9jL01ha2VmaWxlIHRhcmdldHMgaGF2ZSBiZWVuIHJlb3JnYW5pemVkIHNvbWV3aGF0IHRvIHJlbW92ZSB0aGUgCistIFRoZSBEb2MvTWFrZWZpbGUgdGFyZ2V0cyBoYXZlIGJlZW4gcmVvcmdhbml6ZWQgc29tZXdoYXQgdG8gcmVtb3ZlIHRoZQogaW5zaXN0ZW5jZSBvbiBhbHdheXMgZ2VuZXJhdGluZyBQb3N0U2NyaXB0LgogCiAtIFRoZSB0ZXhpbmZvIHRvIGh0bWwgZmlsdGVyIChEb2MvdGV4aTJodG1sLnB5KSBoYXMgYmVlbiBpbXByb3ZlZCBzb21ld2hhdC4KIAotLSAiZXJyb3JzLmgiIGhhcyBiZWVuIHJlbmFtZWQgdG8gInB5ZXJyb3JzLmgiIHRvIHJlc29sdmUgYSBsb25nLXN0YW5kaW5nIAorLSAiZXJyb3JzLmgiIGhhcyBiZWVuIHJlbmFtZWQgdG8gInB5ZXJyb3JzLmgiIHRvIHJlc29sdmUgYSBsb25nLXN0YW5kaW5nCiBuYW1lIGNvbmZsaWN0IG9uIHRoZSBNYWMuCiAKLS0gTGlua2luZyBhIG1vZHVsZSBjb21waWxlZCB3aXRoIGEgZGlmZmVyZW50IHNldHRpbmcgZm9yIFB5X1RSQUNFX1JFRlMgbm93IAorLSBMaW5raW5nIGEgbW9kdWxlIGNvbXBpbGVkIHdpdGggYSBkaWZmZXJlbnQgc2V0dGluZyBmb3IgUHlfVFJBQ0VfUkVGUyBub3cKIGdlbmVyYXRlcyBhIGxpbmtlciBlcnJvciByYXRoZXIgdGhhbiBhIGNvcmUgZHVtcC4KIAotLSBUaGUgY2dpIG1vZHVsZSBoYXMgYSBuZXcgY29udmVuaWVuY2UgZnVuY3Rpb24gcHJpbnRfZXhjZXB0aW9uKCksIHdoaWNoIAotZm9ybWF0cyBhIHB5dGhvbiBleGNlcHRpb24gdXNpbmcgSFRNTC4gIEl0IGFsc28gZml4ZXMgYSBidWcgaW4gdGhlIAotY29tcGF0aWJpbGl0eSBjb2RlIGFuZCBhZGRzIGEgZHViaW91cyBmZWF0dXJlIHdoaWNoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIAorLSBUaGUgY2dpIG1vZHVsZSBoYXMgYSBuZXcgY29udmVuaWVuY2UgZnVuY3Rpb24gcHJpbnRfZXhjZXB0aW9uKCksIHdoaWNoCitmb3JtYXRzIGEgcHl0aG9uIGV4Y2VwdGlvbiB1c2luZyBIVE1MLiAgSXQgYWxzbyBmaXhlcyBhIGJ1ZyBpbiB0aGUKK2NvbXBhdGliaWxpdHkgY29kZSBhbmQgYWRkcyBhIGR1YmlvdXMgZmVhdHVyZSB3aGljaCBtYWtlcyBpdCBwb3NzaWJsZSB0bwogaGF2ZSB0d28gcXVlcnkgc3RyaW5ncywgb25lIGluIHRoZSBVUkwgYW5kIG9uZSBpbiB0aGUgUE9TVCBkYXRhLgogCi0tIEEgc3VidGxlIGNoYW5nZSBpbiB0aGUgdW5waWNrbGluZyBvZiBjbGFzcyBpbnN0YW5jZXMgbWFrZXMgaXQgcG9zc2libGUgCi10byB1bnBpY2tsZSBpbiByZXN0cmljdGVkIGV4ZWN1dGlvbiBtb2RlLCB3aGVyZSB0aGUgX19kaWN0X18gYXR0cmlidXRlIGlzIAorLSBBIHN1YnRsZSBjaGFuZ2UgaW4gdGhlIHVucGlja2xpbmcgb2YgY2xhc3MgaW5zdGFuY2VzIG1ha2VzIGl0IHBvc3NpYmxlCit0byB1bnBpY2tsZSBpbiByZXN0cmljdGVkIGV4ZWN1dGlvbiBtb2RlLCB3aGVyZSB0aGUgX19kaWN0X18gYXR0cmlidXRlIGlzCiBub3QgYXZhaWxhYmxlIChidXQgc2V0YXR0cigpIGlzKS4KIAotLSBEb2N1bWVudGF0aW9uIGZvciBvcy5wYXRoLnNwbGl0ZXh0KCkgKD09IHBvc2l4cGF0aC5zcGxpdGV4dCgpKSBoYXMgYmVlbiAKKy0gRG9jdW1lbnRhdGlvbiBmb3Igb3MucGF0aC5zcGxpdGV4dCgpICg9PSBwb3NpeHBhdGguc3BsaXRleHQoKSkgaGFzIGJlZW4KIGNsZWFyZWQgdXAuICBJdCBzcGxpdHMgYXQgdGhlICpsYXN0KiBkb3QuCiAKIC0gcG9zaXhmaWxlIGxvY2tpbmcgaXMgbm93IGFsc28gY29ycmVjdGx5IHN1cHBvcnRlZCBvbiBBSVguCiAKLS0gVGhlIHRlbXBmaWxlIG1vZHVsZSBvbmNlIGFnYWluIGhvbm9ycyBhbiBpbml0aWFsIHNldHRpbmcgb2YgdG1wZGlyLiAgSXQgCistIFRoZSB0ZW1wZmlsZSBtb2R1bGUgb25jZSBhZ2FpbiBob25vcnMgYW4gaW5pdGlhbCBzZXR0aW5nIG9mIHRtcGRpci4gIEl0CiBub3cgd29ya3Mgb24gV2luZG93cywgdG9vLgogCi0tIFRoZSB0cmFjZWJhY2sgbW9kdWxlIGhhcyBzb21lIG5ldyBmdW5jdGlvbnMgdG8gZXh0cmFjdCwgZm9ybWF0IGFuZCBwcmludCAKKy0gVGhlIHRyYWNlYmFjayBtb2R1bGUgaGFzIHNvbWUgbmV3IGZ1bmN0aW9ucyB0byBleHRyYWN0LCBmb3JtYXQgYW5kIHByaW50CiB0aGUgYWN0aXZlIHN0YWNrLgogCi0tIFNvbWUgdHJhbnNsYXRpb24gZnVuY3Rpb25zIGluIHRoZSB1cmxsaWIgbW9kdWxlIGhhdmUgYmVlbiBtYWRlIGEgbGl0dGxlIAorLSBTb21lIHRyYW5zbGF0aW9uIGZ1bmN0aW9ucyBpbiB0aGUgdXJsbGliIG1vZHVsZSBoYXZlIGJlZW4gbWFkZSBhIGxpdHRsZQogbGVzcyBzbHVnZ2lzaC4KIAotLSBUaGUgYWRkdGFnXyogbWV0aG9kcyBmb3IgQ2FudmFzIHdpZGdldHMgaW4gVGtpbnRlciBhcyB3ZWxsIGFzIGluIHRoZSAKLXNlcGFyYXRlIENhbnZhcyBjbGFzcyBoYXZlIGJlZW4gZml4ZWQgc28gdGhleSBhY3R1YWxseSBkbyBzb21ldGhpbmcgCistIFRoZSBhZGR0YWdfKiBtZXRob2RzIGZvciBDYW52YXMgd2lkZ2V0cyBpbiBUa2ludGVyIGFzIHdlbGwgYXMgaW4gdGhlCitzZXBhcmF0ZSBDYW52YXMgY2xhc3MgaGF2ZSBiZWVuIGZpeGVkIHNvIHRoZXkgYWN0dWFsbHkgZG8gc29tZXRoaW5nCiBtZWFuaW5nZnVsLgogCiAtIEEgdGlueSBfdGVzdCgpIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkIHRvIFRraW50ZXIucHkuCiAKLS0gQSBnZW5lcmljIE1ha2VmaWxlIGZvciBkeW5hbWljYWxseSBsb2FkZWQgbW9kdWxlcyBpcyBwcm92aWRlZCBpbiB0aGUgTWlzYyAKKy0gQSBnZW5lcmljIE1ha2VmaWxlIGZvciBkeW5hbWljYWxseSBsb2FkZWQgbW9kdWxlcyBpcyBwcm92aWRlZCBpbiB0aGUgTWlzYwogc3ViZGlyZWN0b3J5IChNaXNjL2dNYWtlZmlsZSkuCiAKIC0gQSBuZXcgdmVyc2lvbiBvZiBweXRob24tbW9kZS5lbCBmb3IgRW1hY3MgaXMgcHJvdmlkZWQuICBTZWUKQEAgLTI1MzU3LDI1ICsyNTM5MCwyNSBAQAogc2VwYXJhdGUgZmlsZSBweWltZW51LmVsIGlzIG5vIGxvbmdlciBuZWVkZWQsIGltZW51IHN1cHBvcnQgaXMgZm9sZGVkCiBpbnRvIHB5dGhvbi1tb2RlLmVsLgogCi0tIFRoZSBjb25maWd1cmUgc2NyaXB0IGNhbiBmaW5hbGx5IGNvcnJlY3RseSBmaW5kIHRoZSByZWFkbGluZSBsaWJyYXJ5IGluIGEgCi1ub24tc3RhbmRhcmQgbG9jYXRpb24uICBUaGUgTERGTEFHUyB2YXJpYWJsZSBpcyBwYXNzZWQgb24gdGhlIE1ha2VmaWxlcyAKKy0gVGhlIGNvbmZpZ3VyZSBzY3JpcHQgY2FuIGZpbmFsbHkgY29ycmVjdGx5IGZpbmQgdGhlIHJlYWRsaW5lIGxpYnJhcnkgaW4gYQorbm9uLXN0YW5kYXJkIGxvY2F0aW9uLiAgVGhlIExERkxBR1MgdmFyaWFibGUgaXMgcGFzc2VkIG9uIHRoZSBNYWtlZmlsZXMKIGZyb20gdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCiAKLS0gU2hhcmVkIGxpYnJhcmllcyBhcmUgbm93IGluc3RhbGxlZCBhcyBwcm9ncmFtcyAoaS5lLiB3aXRoIGV4ZWN1dGFibGUgCistIFNoYXJlZCBsaWJyYXJpZXMgYXJlIG5vdyBpbnN0YWxsZWQgYXMgcHJvZ3JhbXMgKGkuZS4gd2l0aCBleGVjdXRhYmxlCiBwZXJtaXNzaW9uKS4gIFRoaXMgaXMgcmVxdWlyZWQgb24gSFAtVVggYW5kIHdvbid0IGh1cnQgb24gb3RoZXIgc3lzdGVtcy4KIAotLSBUaGUgb2JqYy5jIG1vZHVsZSBpcyBubyBsb25nZXIgcGFydCBvZiB0aGUgZGlzdHJpYnV0aW9uLiAgT2JqZWN0aXZlLUMgCistIFRoZSBvYmpjLmMgbW9kdWxlIGlzIG5vIGxvbmdlciBwYXJ0IG9mIHRoZSBkaXN0cmlidXRpb24uICBPYmplY3RpdmUtQwogc3VwcG9ydCBtYXkgYmVjb21lIGF2YWlsYWJsZSBhcyBjb250cmlidXRlZCBzb2Z0d2FyZSBvbiB0aGUgZnRwIHNpdGUuCiAKIC0gVGhlIHN5YmFzZSBtb2R1bGUgaXMgbm8gbG9uZ2VyIHBhcnQgb2YgdGhlIGRpc3RyaWJ1dGlvbi4gIEEgbXVjaAogaW1wcm92ZWQgc3liYXNlIG1vZHVsZSBpcyBhdmFpbGFibGUgYXMgY29udHJpYnV0ZWQgc29mdHdhcmUgZnJvbSB0aGUKIGZ0cCBzaXRlLgogCi0tIF90a2ludGVyIGlzIG5vdyBjb21wYXRpYmxlIHdpdGggVGNsIDcuNSAvIFRrIDQuMSBwYXRjaDEgb24gV2luZG93cyBhbmQgCi1NYWMgKGRvbid0IHVzZSB1bnBhdGNoZWQgVGNsL1RrISkuICBUaGUgZGVmYXVsdCBsaW5lIGluIHRoZSBTZXR1cC5pbiBmaWxlIAorLSBfdGtpbnRlciBpcyBub3cgY29tcGF0aWJsZSB3aXRoIFRjbCA3LjUgLyBUayA0LjEgcGF0Y2gxIG9uIFdpbmRvd3MgYW5kCitNYWMgKGRvbid0IHVzZSB1bnBhdGNoZWQgVGNsL1RrISkuICBUaGUgZGVmYXVsdCBsaW5lIGluIHRoZSBTZXR1cC5pbiBmaWxlCiBub3cgbGlua3Mgd2l0aCBUY2wgNy41IC8gVGsgNC4xIHJhdGhlciB0aGFuIDcuNC80LjAuCiAKLS0gSW4gU2V0dXAsIHlvdSBjYW4gbm93IHdyaXRlICIqc2hhcmVkKiIgaW5zdGVhZCBvZiAiKm5vY29uZmlnKiIsIGFuZCB5b3UgCistIEluIFNldHVwLCB5b3UgY2FuIG5vdyB3cml0ZSAiKnNoYXJlZCoiIGluc3RlYWQgb2YgIipub2NvbmZpZyoiLCBhbmQgeW91CiBjYW4gdXNlICouc28gYW5kICouc2wgYXMgc2hhcmVkIGxpYnJhcmllcy4KIAogLSBTb21lIG1vcmUgZmlkZ2V0aW5nIGZvciBBSVggc2hhcmVkIGxpYnJhcmllcy4KQEAgLTI1Mzg0LDgxICsyNTQxNyw4MSBAQAogKE5vdGUgLS0gYSBjb21wbGV0ZSByZXBsYWNlbWVudCBieSBOaWVscyBNbyJsbGVyLCBjYWxsZWQgZ3Btb2R1bGUsIGlzCiBhdmFpbGFibGUgZnJvbSB0aGUgY29udHJpYiBkaXJlY3Rvcnkgb24gdGhlIGZ0cCBzaXRlLikKIAotLSBBIHdhcm5pbmcgaXMgd3JpdHRlbiB0byBzeXMuc3RkZXJyIHdoZW4gYSBfX2RlbF9fIG1ldGhvZCByYWlzZXMgYW4gCistIEEgd2FybmluZyBpcyB3cml0dGVuIHRvIHN5cy5zdGRlcnIgd2hlbiBhIF9fZGVsX18gbWV0aG9kIHJhaXNlcyBhbgogZXhjZXB0aW9uIChmb3JtZXJseSwgc3VjaCBleGNlcHRpb25zIHdlcmUgY29tcGxldGVseSBpZ25vcmVkKS4KIAotLSBUaGUgY29uZmlndXJlIHNjcmlwdCBub3cgZGVmaW5lcyBIQVZFX09MRF9DUFAgaWYgdGhlIEMgcHJlcHJvY2Vzc29yIGlzIAorLSBUaGUgY29uZmlndXJlIHNjcmlwdCBub3cgZGVmaW5lcyBIQVZFX09MRF9DUFAgaWYgdGhlIEMgcHJlcHJvY2Vzc29yIGlzCiBpbmNhcGFibGUgb2YgQU5TSSBzdHlsZSB0b2tlbiBjb25jYXRlbmF0aW9uIGFuZCBzdHJpbmdpZmljYXRpb24uCiAKLS0gQWxsIHNvdXJjZSBmaWxlcyAoZXhjZXB0IGEgZmV3IHBsYXRmb3JtIHNwZWNpZmljIG1vZHVsZXMpIGFyZSBvbmNlIGFnYWluIAorLSBBbGwgc291cmNlIGZpbGVzIChleGNlcHQgYSBmZXcgcGxhdGZvcm0gc3BlY2lmaWMgbW9kdWxlcykgYXJlIG9uY2UgYWdhaW4KIGNvbXBhdGlibGUgd2l0aCBLJlIgQyBjb21waWxlcnMgYXMgd2VsbCBhcyBBTlNJIGNvbXBpbGVycy4gIEluIHBhcnRpY3VsYXIsCi1BTlNJLWlzbXMgaGF2ZSBiZWVuIHJlbW92ZWQgb3IgbWFkZSBjb25kaXRpb25hbCBpbiBjb21wbGV4b2JqZWN0LmMsIAorQU5TSS1pc21zIGhhdmUgYmVlbiByZW1vdmVkIG9yIG1hZGUgY29uZGl0aW9uYWwgaW4gY29tcGxleG9iamVjdC5jLAogZ2V0YXJncy5jIGFuZCBvcGVyYXRvci5jLgogCi0tIFRoZSBhYnN0cmFjdCBvYmplY3QgQVBJIGhhcyB0aHJlZSBuZXcgZnVuY3Rpb25zLCBQeU9iamVjdF9EZWxJdGVtLCAKKy0gVGhlIGFic3RyYWN0IG9iamVjdCBBUEkgaGFzIHRocmVlIG5ldyBmdW5jdGlvbnMsIFB5T2JqZWN0X0RlbEl0ZW0sCiBQeVNlcXVlbmNlX0RlbEl0ZW0sIGFuZCBQeVNlcXVlbmNlX0RlbFNsaWNlLgogCi0tIFRoZSBvcGVyYXRvciBtb2R1bGUgaGFzIG5ldyBmdW5jdGlvbnMgZGVsaXRlbSBhbmQgZGVsc2xpY2UsIGFuZCB0aGUgCi1mdW5jdGlvbnMgIm9yIiBhbmQgImFuZCIgYXJlIHJlbmFtZWQgdG8gIm9yXyIgYW5kICJhbmRfIiAoc2luY2UgIm9yIiBhbmQgCistIFRoZSBvcGVyYXRvciBtb2R1bGUgaGFzIG5ldyBmdW5jdGlvbnMgZGVsaXRlbSBhbmQgZGVsc2xpY2UsIGFuZCB0aGUKK2Z1bmN0aW9ucyAib3IiIGFuZCAiYW5kIiBhcmUgcmVuYW1lZCB0byAib3JfIiBhbmQgImFuZF8iIChzaW5jZSAib3IiIGFuZAogImFuZCIgYXJlIHJlc2VydmVkIHdvcmRzKS4gICgiX19vcl9fIiBhbmQgIl9fYW5kX18iIGFyZSB1bmNoYW5nZWQuKQogCi0tIFRoZSBlbnZpcm9ubWVudCBtb2R1bGUgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZDsgcHV0ZW52KCkgaXMgbm93IGEgZnVuY3Rpb24gCistIFRoZSBlbnZpcm9ubWVudCBtb2R1bGUgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZDsgcHV0ZW52KCkgaXMgbm93IGEgZnVuY3Rpb24KIGluIHBvc2l4bW9kdWxlIChhbHNvIHVuZGVyIE5UKS4KIAogLSBFcnJvciBpbiBmaWx0ZXIoPGZ1bmN0aW9uPiwgIiIpIGhhcyBiZWVuIGZpeGVkLgogCiAtIFVucmVjb2duaXplZCBrZXl3b3JkIGFyZ3VtZW50cyByYWlzZSBUeXBlRXJyb3IsIG5vdCBLZXlFcnJvci4KIAotLSBCZXR0ZXIgcG9ydGFiaWxpdHksIGZld2VyIGJ1Z3MgYW5kIG1lbW9yeSBsZWFrcywgZmV3ZXIgY29tcGlsZXIgd2FybmluZ3MsIAorLSBCZXR0ZXIgcG9ydGFiaWxpdHksIGZld2VyIGJ1Z3MgYW5kIG1lbW9yeSBsZWFrcywgZmV3ZXIgY29tcGlsZXIgd2FybmluZ3MsCiBzb21lIG1vcmUgZG9jdW1lbnRhdGlvbi4KIAotLSBCdWcgaW4gZmxvYXQgcG93ZXIgYm91bmRhcnkgY2FzZSAoMC4wIHRvIHRoZSBuZWdhdGl2ZSBpbnRlZ2VyIHBvd2VyKSAKKy0gQnVnIGluIGZsb2F0IHBvd2VyIGJvdW5kYXJ5IGNhc2UgKDAuMCB0byB0aGUgbmVnYXRpdmUgaW50ZWdlciBwb3dlcikKIGZpeGVkLgogCi0tIFRoZSB0ZXN0IG9mIG5lZ2F0aXZlIG51bWJlciB0byB0aGUgZmxvYXQgcG93ZXIgaGFzIGJlZW4gbW92ZWQgZnJvbSB0aGUgCistIFRoZSB0ZXN0IG9mIG5lZ2F0aXZlIG51bWJlciB0byB0aGUgZmxvYXQgcG93ZXIgaGFzIGJlZW4gbW92ZWQgZnJvbSB0aGUKIGJ1aWx0LWluIHBvdygpIGZ1bmN0aW9uIHRvIGZsb2F0b2JqZWN0LmMgKHNvIGNvbXBsZXggbnVtYmVycyBjYW4geWllbGQgdGhlCiBjb3JyZWN0IHJlc3VsdCkuCiAKLS0gVGhlIGJ1ZyBpbnRyb2R1Y2VkIGluIGJldGEyIHdoZXJlIHNoYXJlZCBsaWJyYXJpZXMgbG9hZGVkICh1c2luZyAKKy0gVGhlIGJ1ZyBpbnRyb2R1Y2VkIGluIGJldGEyIHdoZXJlIHNoYXJlZCBsaWJyYXJpZXMgbG9hZGVkICh1c2luZwogZGxvcGVuKCkpIGZyb20gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHdvdWxkIGZhaWwsIGhhcyBiZWVuIGZpeGVkLgogCi0tIE1vZHVsZXMgaW1wb3J0ZWQgYXMgc2hhcmVkIGxpYnJhcmllcyBub3cgYWxzbyBoYXZlIGEgX19maWxlX18gYXR0cmlidXRlLCAKLWdpdmluZyB0aGUgZmlsZW5hbWUgZnJvbSB3aGljaCB0aGV5IHdlcmUgbG9hZGVkLiAgVGhlIG9ubHkgbW9kdWxlcyB3aXRob3V0IAorLSBNb2R1bGVzIGltcG9ydGVkIGFzIHNoYXJlZCBsaWJyYXJpZXMgbm93IGFsc28gaGF2ZSBhIF9fZmlsZV9fIGF0dHJpYnV0ZSwKK2dpdmluZyB0aGUgZmlsZW5hbWUgZnJvbSB3aGljaCB0aGV5IHdlcmUgbG9hZGVkLiAgVGhlIG9ubHkgbW9kdWxlcyB3aXRob3V0CiBhIF9fZmlsZV9fIGF0dHJpYnV0ZSBub3cgYXJlIGJ1aWx0LWluIG1vZHVsZXMuCiAKLS0gT24gdGhlIE1hYywgZHluYW1pY2FsbHkgbG9hZGVkIG1vZHVsZXMgY2FuIGVuZCBpbiBlaXRoZXIgIi5zbGIiIG9yIAotIi48cGxhdGZvcm0+LnNsYiIgd2hlcmUgPHBsYXRmb3JtPiBpcyBlaXRoZXIgIkNGTTY4SyIgb3IgInBwYyIuICBUaGUgIi5zbGIiIAorLSBPbiB0aGUgTWFjLCBkeW5hbWljYWxseSBsb2FkZWQgbW9kdWxlcyBjYW4gZW5kIGluIGVpdGhlciAiLnNsYiIgb3IKKyIuPHBsYXRmb3JtPi5zbGIiIHdoZXJlIDxwbGF0Zm9ybT4gaXMgZWl0aGVyICJDRk02OEsiIG9yICJwcGMiLiAgVGhlICIuc2xiIgogZXh0ZW5zaW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yICJmYXQiIGJpbmFyaWVzLgogCi0tIEMgQVBJIGFkZGl0aW9uOiBtYXJzaGFsLmMgbm93IHN1cHBvcnRzIAorLSBDIEFQSSBhZGRpdGlvbjogbWFyc2hhbC5jIG5vdyBzdXBwb3J0cwogUHlNYXJzaGFsX1dyaXRlT2JqZWN0VG9TdHJpbmcob2JqZWN0KS4KIAogLSBDIEFQSSBhZGRpdGlvbjogZ2V0YXJncy5jIG5vdyBzdXBwb3J0cwogUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgZm9ybWF0LCBrd25hbWVzLCAuLi4pCiB0byBwYXJzZSBrZXl3b3JkIGFyZ3VtZW50cy4KIAotLSBUaGUgUEMgdmVyc2lvbmluZyBzY2hlbWUgKHN5cy53aW52ZXIpIGhhcyBjaGFuZ2VkIG9uY2UgYWdhaW4uICB0aGUgCi12ZXJzaW9uIG51bWJlciBpcyBub3cgIjxkaWdpdD4uPGRpZ2l0Pi48ZGlnaXQ+LjxhcGl2ZXJzaW9uPiIsIHdoZXJlIHRoZSAKLWZpcnN0IHRocmVlIDxkaWdpdD5zIGFyZSB0aGUgUHl0aG9uIHZlcnNpb24gKGUuZy4gIjEuNC4wIiBmb3IgUHl0aG9uIDEuNCwgCi0iMS40LjEiIGZvciBQeXRob24gMS40LjEgLS0gdGhlIGJldGEgbGV2ZWwgaXMgbm90IGluY2x1ZGVkKSBhbmQgCistIFRoZSBQQyB2ZXJzaW9uaW5nIHNjaGVtZSAoc3lzLndpbnZlcikgaGFzIGNoYW5nZWQgb25jZSBhZ2Fpbi4gIHRoZQordmVyc2lvbiBudW1iZXIgaXMgbm93ICI8ZGlnaXQ+LjxkaWdpdD4uPGRpZ2l0Pi48YXBpdmVyc2lvbj4iLCB3aGVyZSB0aGUKK2ZpcnN0IHRocmVlIDxkaWdpdD5zIGFyZSB0aGUgUHl0aG9uIHZlcnNpb24gKGUuZy4gIjEuNC4wIiBmb3IgUHl0aG9uIDEuNCwKKyIxLjQuMSIgZm9yIFB5dGhvbiAxLjQuMSAtLSB0aGUgYmV0YSBsZXZlbCBpcyBub3QgaW5jbHVkZWQpIGFuZAogPGFwaXZlcnNpb24+IGlzIHRoZSBmb3VyLWRpZ2l0IFBZVEhPTl9BUElfVkVSU0lPTiAoY3VycmVudGx5IDEwMDUpLgogCiAtIGgycHkucHkgYWNjZXB0cyB3aGl0ZXNwYWNlIGJlZm9yZSB0aGUgIyBpbiBDUFAgZGlyZWN0aXZlcwogCi0tIE9uIFNvbGFyaXMgMi41LCBpdCBzaG91bGQgbm93IGJlIHBvc3NpYmxlIHRvIHVzZSBlaXRoZXIgUG9zaXggdGhyZWFkcyBvciAKLVNvbGFyaXMgdGhyZWFkcyAoWFhYOiBob3cgZG8geW91IHNlbGVjdCB3aGljaCBpcyB1c2VkPz8/KS4gIChOb3RlOiB0aGUgCi1QeXRob24gcHRocmVhZHMgaW50ZXJmYWNlIGRvZXNuJ3QgZnVsbHkgc3VwcG9ydCBzZW1hcGhvcmVzIHlldCAtLSBhbnlvbmUgCistIE9uIFNvbGFyaXMgMi41LCBpdCBzaG91bGQgbm93IGJlIHBvc3NpYmxlIHRvIHVzZSBlaXRoZXIgUG9zaXggdGhyZWFkcyBvcgorU29sYXJpcyB0aHJlYWRzIChYWFg6IGhvdyBkbyB5b3Ugc2VsZWN0IHdoaWNoIGlzIHVzZWQ/Pz8pLiAgKE5vdGU6IHRoZQorUHl0aG9uIHB0aHJlYWRzIGludGVyZmFjZSBkb2Vzbid0IGZ1bGx5IHN1cHBvcnQgc2VtYXBob3JlcyB5ZXQgLS0gYW55b25lCiBjYXJlIHRvIGZpeCB0aGlzPykKIAotLSBUaHJlYWQgc3VwcG9ydCBzaG91bGQgbm93IHdvcmsgb24gQUlYLCB1c2luZyBlaXRoZXIgRENFIHRocmVhZHMgb3IgCistIFRocmVhZCBzdXBwb3J0IHNob3VsZCBub3cgd29yayBvbiBBSVgsIHVzaW5nIGVpdGhlciBEQ0UgdGhyZWFkcyBvcgogcHRocmVhZHMuCiAKIC0gTmV3IGZpbGUgRGVtby9zb2NrZXRzL3VuaWNhc3QucHkKIAotLSBXb3JraW5nIE1hYyBwb3J0LCB3aXRoIENGTTY4SyBzdXBwb3J0LCB3aXRoIFRrIDQuMSBzdXBwb3J0ICh0aG91Z2ggbm90IAorLSBXb3JraW5nIE1hYyBwb3J0LCB3aXRoIENGTTY4SyBzdXBwb3J0LCB3aXRoIFRrIDQuMSBzdXBwb3J0ICh0aG91Z2ggbm90CiBib3RoKSAoWFhYKQogCi0tIE5ldyBwcm9qZWN0IHNldHVwIGZvciBQQyBwb3J0LCBub3cgY29tcGF0aWJsZSB3aXRoIFB5dGhvbldpbiwgd2l0aCAKKy0gTmV3IHByb2plY3Qgc2V0dXAgZm9yIFBDIHBvcnQsIG5vdyBjb21wYXRpYmxlIHdpdGggUHl0aG9uV2luLCB3aXRoCiBfdGtpbnRlciBhbmQgTnVtUHkgc3VwcG9ydCAoWFhYKQogCiAtIE5ldyBtb2R1bGUgc2l0ZS5weSAoWFhYKQpAQCAtMjU0NzUsNyArMjU1MDgsNyBAQAogCiAtIHN0cmluZy5hdG9pIGMucy4gbm93IHJhaXNlIGFuIGV4Y2VwdGlvbiBmb3IgYW4gZW1wdHkgaW5wdXQgc3RyaW5nLgogCi0tIEF0IGxhc3QsIGl0IGlzIG5vIGxvbmdlciBuZWNlc3NhcnkgdG8gZGVmaW5lIEhBVkVfQ09ORklHX0ggaW4gb3JkZXIgdG8gCistIEF0IGxhc3QsIGl0IGlzIG5vIGxvbmdlciBuZWNlc3NhcnkgdG8gZGVmaW5lIEhBVkVfQ09ORklHX0ggaW4gb3JkZXIgdG8KIGhhdmUgY29uZmlnLmggaW5jbHVkZWQgYXQgdmFyaW91cyBwbGFjZXMuCiAKIC0gVW5yZWNvZ25pemVkIGtleXdvcmQgYXJndW1lbnRzIG5vdyByYWlzZSBUeXBlRXJyb3IgcmF0aGVyIHRoYW4gS2V5RXJyb3IuCkBAIC0yNTQ4MywyNSArMjU1MTYsMjUgQEAKIC0gVGhlIG1ha2VzZXR1cCBzY3JpcHQgcmVjb2duaXplcyBmaWxlcyB3aXRoIGV4dGVuc2lvbiAuc28gb3IgLnNsIGFzCiAoc2hhcmVkKSBsaWJyYXJpZXMuCiAKLS0gJ2FjY2VzcycgaXMgbm8gbG9uZ2VyIGEgcmVzZXJ2ZWQgd29yZCwgYW5kIGFsbCBjb2RlIHJlbGF0ZWQgdG8gaXRzIAotaW1wbGVtZW50YXRpb24gaXMgZ29uZSAob3IgYXQgbGVhc3QgI2lmZGVmJ2VkIG91dCkuICBUaGlzIHNob3VsZCBtYWtlIAorLSAnYWNjZXNzJyBpcyBubyBsb25nZXIgYSByZXNlcnZlZCB3b3JkLCBhbmQgYWxsIGNvZGUgcmVsYXRlZCB0byBpdHMKK2ltcGxlbWVudGF0aW9uIGlzIGdvbmUgKG9yIGF0IGxlYXN0ICNpZmRlZidlZCBvdXQpLiAgVGhpcyBzaG91bGQgbWFrZQogUHl0aG9uIGEgbGl0dGxlIHNwZWVkaWVyIHRvbyEKIAotLSBQZXJmb3JtYW5jZSBlbmhhbmNlbWVudHMgc3VnZ2VzdGVkIGJ5IFNqb2VyZCBNdWxsZW5kZXIuICBUaGlzIGluY2x1ZGVzIAotdGhlIGludHJvZHVjdGlvbiBvZiB0d28gbmV3IG9wdGlvbmFsIGZ1bmN0aW9uIHBvaW50ZXJzIGluIHR5cGUgb2JqZWN0LCAKLWdldGF0dHJvIGFuZCBzZXRhdHRybywgd2hpY2ggYXJlIGxpa2UgZ2V0YXR0ciBhbmQgc2V0YXR0ciBidXQgdGFrZSBhIAorLSBQZXJmb3JtYW5jZSBlbmhhbmNlbWVudHMgc3VnZ2VzdGVkIGJ5IFNqb2VyZCBNdWxsZW5kZXIuICBUaGlzIGluY2x1ZGVzCit0aGUgaW50cm9kdWN0aW9uIG9mIHR3byBuZXcgb3B0aW9uYWwgZnVuY3Rpb24gcG9pbnRlcnMgaW4gdHlwZSBvYmplY3QsCitnZXRhdHRybyBhbmQgc2V0YXR0cm8sIHdoaWNoIGFyZSBsaWtlIGdldGF0dHIgYW5kIHNldGF0dHIgYnV0IHRha2UgYQogc3RyaW5nIG9iamVjdCBpbnN0ZWFkIG9mIGEgQyBzdHJpbmcgcG9pbnRlci4KIAotLSBOZXcgb3BlcmF0aW9ucyBpbiBzdHJpbmcgbW9kdWxlOiBsc3RyaXAocykgYW5kIHJzdHJpcChzKSBzdHJpcCB3aGl0ZXNwYWNlIAotb25seSBvbiB0aGUgbGVmdCBvciBvbmx5IG9uIHRoZSByaWdodCwgQSBuZXcgb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgdG8gCi1zcGxpdCgpIHNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2VwYXJhdG9ycyBob25vcmVkIChzbyAKLXNwbGl0ZmllbGRzKHMsIHNlcCwgbikgcmV0dXJucyBhIGxpc3Qgb2YgYXQgbW9zdCBuKzEgZWxlbWVudHMpLiAgKFNpbmNlIAorLSBOZXcgb3BlcmF0aW9ucyBpbiBzdHJpbmcgbW9kdWxlOiBsc3RyaXAocykgYW5kIHJzdHJpcChzKSBzdHJpcCB3aGl0ZXNwYWNlCitvbmx5IG9uIHRoZSBsZWZ0IG9yIG9ubHkgb24gdGhlIHJpZ2h0LCBBIG5ldyBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCB0bworc3BsaXQoKSBzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHNlcGFyYXRvcnMgaG9ub3JlZCAoc28KK3NwbGl0ZmllbGRzKHMsIHNlcCwgbikgcmV0dXJucyBhIGxpc3Qgb2YgYXQgbW9zdCBuKzEgZWxlbWVudHMpLiAgKFNpbmNlCiAxLjMsIHNwbGl0ZmllbGRzKHMsIE5vbmUpIGlzIHRvdGFsbHkgZXF1aXZhbGVudCB0byBzcGxpdChzKS4pCi1zdHJpbmcuY2Fwd29yZHMoKSBoYXMgYW4gb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IHNwZWNpZnlpbmcgdGhlIAorc3RyaW5nLmNhcHdvcmRzKCkgaGFzIGFuIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCBzcGVjaWZ5aW5nIHRoZQogc2VwYXJhdG9yICh3aGljaCBpcyBwYXNzZWQgdG8gc3BsaXQoKSkuCiAKLS0gcmVnc3ViLnNwbGl0KCkgaGFzIHRoZSBzYW1lIGFkZGl0aW9uIGFzIHN0cmluZy5zcGxpdCgpLiAgcmVnc3ViLnNwbGl0eChzLCAKLXNlcCwgbWF4c2VwKSBpbXBsZW1lbnRzIHRoZSBmdW5jdGlvbmFsaXR5IHRoYXQgd2FzIHJlZ3N1Yi5zcGxpdChzLCAxKSBpbiAKKy0gcmVnc3ViLnNwbGl0KCkgaGFzIHRoZSBzYW1lIGFkZGl0aW9uIGFzIHN0cmluZy5zcGxpdCgpLiAgcmVnc3ViLnNwbGl0eChzLAorc2VwLCBtYXhzZXApIGltcGxlbWVudHMgdGhlIGZ1bmN0aW9uYWxpdHkgdGhhdCB3YXMgcmVnc3ViLnNwbGl0KHMsIDEpIGluCiAxLjRiZXRhMiAocmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBkZWxpbWl0ZXJzIGFzIHdlbGwgYXMgdGhlIHdvcmRzKS4KIAogLSBGaW5hbCB0b3VjaCBmb3IgQUlYIGxvYWRpbmcsIHJld3JpdHRlbiBNaXNjL0FJWC1OT1RFUy4KQEAgLTI1NTQ1LDExICsyNTU3OCwxMSBAQAogbWVhbmluZ2Z1bCB2YWx1ZSAoYSBmZXcgdGhpbmdzIHdlcmUgYm90Y2hlZCBpbiBiZXRhIDEpLiAgTGliL2Rvc184eDMKIGlzIG5vdyBhIHN0YW5kYXJkIHBhcnQgb2YgdGhlIGRpc3RyaWJ1dGlvbiAoYWxhcykuCiAKLS0gTW9yZSBpbXByb3ZlbWVudHMgdG8gdGhlIGluc3RhbGxhdGlvbiBwcm9jZWR1cmUuICBUeXBpbmcgIm1ha2UgaW5zdGFsbCIgCi1ub3cgaW5zZXJ0cyB0aGUgdmVyc2lvbiBudW1iZXIgaW4gdGhlIHBhdGhuYW1lcyBvZiBhbG1vc3QgZXZlcnl0aGluZyAKLWluc3RhbGxlZCwgYW5kIGNyZWF0ZXMgdGhlIG1hY2hpbmUgZGVwZW5kZW50IG1vZHVsZXMgKEZDTlRMLnB5IGV0Yy4pIGlmIG5vdCAKLXN1cHBsaWVkIGJ5IHRoZSBkaXN0cmlidXRpb24uICAoWFhYIFRoZXJlJ3Mgc3RpbGwgYSBwcm9ibGVtIHdpdGggdGhlIGxhdHRlciAKLWJlY2F1c2UgdGhlICJyZWdlbiIgc2NyaXB0IHJlcXVpcmVzIHRoYXQgUHl0aG9uIGlzIGluc3RhbGxlZC4gIFNvbWUgbWFudWFsIAorLSBNb3JlIGltcHJvdmVtZW50cyB0byB0aGUgaW5zdGFsbGF0aW9uIHByb2NlZHVyZS4gIFR5cGluZyAibWFrZSBpbnN0YWxsIgorbm93IGluc2VydHMgdGhlIHZlcnNpb24gbnVtYmVyIGluIHRoZSBwYXRobmFtZXMgb2YgYWxtb3N0IGV2ZXJ5dGhpbmcKK2luc3RhbGxlZCwgYW5kIGNyZWF0ZXMgdGhlIG1hY2hpbmUgZGVwZW5kZW50IG1vZHVsZXMgKEZDTlRMLnB5IGV0Yy4pIGlmIG5vdAorc3VwcGxpZWQgYnkgdGhlIGRpc3RyaWJ1dGlvbi4gIChYWFggVGhlcmUncyBzdGlsbCBhIHByb2JsZW0gd2l0aCB0aGUgbGF0dGVyCitiZWNhdXNlIHRoZSAicmVnZW4iIHNjcmlwdCByZXF1aXJlcyB0aGF0IFB5dGhvbiBpcyBpbnN0YWxsZWQuICBTb21lIG1hbnVhbAogaW50ZXJ2ZW50aW9uIG1heSBzdGlsbCBiZSByZXF1aXJlZC4pIChUaGlzIGhhcyBiZWVuIGZpeGVkIGluIDEuNGJldGEzLikKIAogLSBOZXcgbW9kdWxlczogZXJybm8sIG9wZXJhdG9yIChYWFgpLgpAQCAtMjU2MTIsOCArMjU2NDUsOCBAQAogCiAtIEFkZGVkIHN5cy5wbGF0Zm9ybSBhbmQgc3lzLmV4ZWNfcGxhdGZvcm0gZm9yIEJpbGwgSmFuc3Nlbi4KIAotLSBJbnN0YWxsYXRpb24gaGFzIGJlZW4gY29tcGxldGVseSBvdmVyaGF1bGVkLiAgIm1ha2UgaW5zdGFsbCIgbm93IGluc3RhbGxzIAotZXZlcnl0aGluZywgbm90IGp1c3QgdGhlIHB5dGhvbiBiaW5hcnkuICBJbnN0YWxsYXRpb24gdXNlcyB0aGUgaW5zdGFsbC1zaCAKKy0gSW5zdGFsbGF0aW9uIGhhcyBiZWVuIGNvbXBsZXRlbHkgb3ZlcmhhdWxlZC4gICJtYWtlIGluc3RhbGwiIG5vdyBpbnN0YWxscworZXZlcnl0aGluZywgbm90IGp1c3QgdGhlIHB5dGhvbiBiaW5hcnkuICBJbnN0YWxsYXRpb24gdXNlcyB0aGUgaW5zdGFsbC1zaAogc2NyaXB0IChib3Jyb3dlZCBmcm9tIFgxMSkgdG8gaW5zdGFsbCBlYWNoIGZpbGUuCiAKIC0gTmV3IGZ1bmN0aW9ucyBpbiB0aGUgcG9zaXggbW9kdWxlOiBta2ZpZm8sIHBsb2NrLCByZW1vdmUgKD09IHVubGluayksCkBAIC0yNTYyMyw1OSArMjU2NTYsNTkgQEAKIAogLSBTaGFyZWQgbGlicmFyeSBzdXBwb3J0IGZvciBGcmVlQlNELgogCi0tIFRoZSAtLXdpdGgtcmVhZGxpbmUgb3B0aW9uIGNhbiBub3cgYmUgdXNlZCB3aXRob3V0IGEgRElSRUNUT1JZIGFyZ3VtZW50LCAKLWZvciBzeXN0ZW1zIHdoZXJlIGxpYnJlYWRsaW5lLiogaXMgaW4gb25lIG9mIHRoZSBzdGFuZGFyZCBwbGFjZXMuICBJdCBpcyAKKy0gVGhlIC0td2l0aC1yZWFkbGluZSBvcHRpb24gY2FuIG5vdyBiZSB1c2VkIHdpdGhvdXQgYSBESVJFQ1RPUlkgYXJndW1lbnQsCitmb3Igc3lzdGVtcyB3aGVyZSBsaWJyZWFkbGluZS4qIGlzIGluIG9uZSBvZiB0aGUgc3RhbmRhcmQgcGxhY2VzLiAgSXQgaXMKIGFsc28gcG9zc2libGUgZm9yIGl0IHRvIGJlIGEgc2hhcmVkIGxpYnJhcnkuCiAKLS0gVGhlIGV4dGVuc2lvbiB0a2ludGVyIGhhcyBiZWVuIHJlbmFtZWQgdG8gX3RraW50ZXIsIHRvIGF2b2lkIGNvbmZ1c2lvbiAKLXdpdGggVGtpbnRlci5weSBvbmNhc2UgaW5zZW5zaXRpdmUgZmlsZSBzeXN0ZW1zLiAgSXQgbm93IHN1cHBvcnRzIFRrIDQuMSBhcyAKKy0gVGhlIGV4dGVuc2lvbiB0a2ludGVyIGhhcyBiZWVuIHJlbmFtZWQgdG8gX3RraW50ZXIsIHRvIGF2b2lkIGNvbmZ1c2lvbgord2l0aCBUa2ludGVyLnB5IG9uY2FzZSBpbnNlbnNpdGl2ZSBmaWxlIHN5c3RlbXMuICBJdCBub3cgc3VwcG9ydHMgVGsgNC4xIGFzCiB3ZWxsIGFzIDQuMC4KIAotLSBBdXRob3IncyBjaGFuZ2Ugb2YgYWRkcmVzcyBmcm9tIENXSSBpbiBBbXN0ZXJkYW0sIFRoZSBOZXRoZXJsYW5kcywgdG8gCistIEF1dGhvcidzIGNoYW5nZSBvZiBhZGRyZXNzIGZyb20gQ1dJIGluIEFtc3RlcmRhbSwgVGhlIE5ldGhlcmxhbmRzLCB0bwogQ05SSSBpbiBSZXN0b24sIFZBLCBVU0EuCiAKLS0gVGhlIG1hdGguaHlwb3QoKSBmdW5jdGlvbiBpcyBub3cgYWx3YXlzIGF2YWlsYWJsZSAoaWYgaXQgaXNuJ3QgZm91bmQgaW4gCistIFRoZSBtYXRoLmh5cG90KCkgZnVuY3Rpb24gaXMgbm93IGFsd2F5cyBhdmFpbGFibGUgKGlmIGl0IGlzbid0IGZvdW5kIGluCiB0aGUgQyBtYXRoIGxpYnJhcnksIFB5dGhvbiBwcm92aWRlcyBpdHMgb3duIGltcGxlbWVudGF0aW9uKS4KIAotLSBUaGUgbGF0ZXggZG9jdW1lbnRhdGlvbiBpcyBub3cgY29tcGF0aWJsZSB3aXRoIGxhdGV4MmUsIHRoYW5rcyB0byBEYXZpZCAKKy0gVGhlIGxhdGV4IGRvY3VtZW50YXRpb24gaXMgbm93IGNvbXBhdGlibGUgd2l0aCBsYXRleDJlLCB0aGFua3MgdG8gRGF2aWQKIEFzY2hlci4KIAogLSBUaGUgZXhwcmVzc2lvbiB4Kip5IGlzIG5vdyBlcXVpdmFsZW50IHRvIHBvdyh4LCB5KS4KIAogLSBUaGUgaW5kZXhpbmcgZXhwcmVzc2lvbiB4W2EsIGIsIGNdIGlzIG5vdyBlcXVpdmFsZW50IHRvIHhbKGEsIGIsIGMpXS4KIAotLSBDb21wbGV4IG51bWJlcnMgYXJlIG5vdyBzdXBwb3J0ZWQuICBJbWFnaW5hcnkgY29uc3RhbnRzIGFyZSB3cml0dGVuIHdpdGggCi1hICdqJyBvciAnSicgcHJlZml4LCBnZW5lcmFsIGNvbXBsZXggbnVtYmVycyBjYW4gYmUgZm9ybWVkIGJ5IGFkZGluZyBhIHJlYWwgCi1wYXJ0IHRvIGFuIGltYWdpbmFyeSBwYXJ0LCBsaWtlIDMrNGouICBDb21wbGV4IG51bWJlcnMgYXJlIGFsd2F5cyBzdG9yZWQgaW4gCi1mbG9hdGluZyBwb2ludCBmb3JtLCBzbyB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gMy4wKzQuMGouICBJdCBpcyBhbHNvIAotcG9zc2libGUgdG8gY3JlYXRlIGNvbXBsZXggbnVtYmVycyB3aXRoIHRoZSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gCi1jb21wbGV4KHJlLCBbaW1dKS4gIEZvciB0aGUgZm9vdHByaW50LWNvbnNjaW91cywgY29tcGxleCBudW1iZXIgc3VwcG9ydCBjYW4gCistIENvbXBsZXggbnVtYmVycyBhcmUgbm93IHN1cHBvcnRlZC4gIEltYWdpbmFyeSBjb25zdGFudHMgYXJlIHdyaXR0ZW4gd2l0aAorYSAnaicgb3IgJ0onIHByZWZpeCwgZ2VuZXJhbCBjb21wbGV4IG51bWJlcnMgY2FuIGJlIGZvcm1lZCBieSBhZGRpbmcgYSByZWFsCitwYXJ0IHRvIGFuIGltYWdpbmFyeSBwYXJ0LCBsaWtlIDMrNGouICBDb21wbGV4IG51bWJlcnMgYXJlIGFsd2F5cyBzdG9yZWQgaW4KK2Zsb2F0aW5nIHBvaW50IGZvcm0sIHNvIHRoaXMgaXMgZXF1aXZhbGVudCB0byAzLjArNC4wai4gIEl0IGlzIGFsc28KK3Bvc3NpYmxlIHRvIGNyZWF0ZSBjb21wbGV4IG51bWJlcnMgd2l0aCB0aGUgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uCitjb21wbGV4KHJlLCBbaW1dKS4gIEZvciB0aGUgZm9vdHByaW50LWNvbnNjaW91cywgY29tcGxleCBudW1iZXIgc3VwcG9ydCBjYW4KIGJlIGRpc2FibGVkIGJ5IGRlZmluaW5nIHRoZSBzeW1ib2wgV0lUSE9VVF9DT01QTEVYLgogCiAtIE5ldyBidWlsdC1pbiBmdW5jdGlvbiBsaXN0KCkgaXMgdGhlIGxvbmctYXdhaXRlZCBjb3VudGVycGFydCBvZiB0dXBsZSgpLgogCi0tIFRoZXJlJ3MgYSBuZXcgImNtYXRoIiBtb2R1bGUgd2hpY2ggcHJvdmlkZXMgdGhlIHNhbWUgZnVuY3Rpb25zIGFzIHRoZSAKLSJtYXRoIiBsaWJyYXJ5IGJ1dCB3aXRoIGNvbXBsZXggYXJndW1lbnRzIGFuZCByZXN1bHRzLiAgKFRoZXJlIGFyZSB2ZXJ5IAotZ29vZCByZWFzb25zIHdoeSBtYXRoLnNxcnQoLTEpIHN0aWxsIHJhaXNlcyBhbiBleGNlcHRpb24gLS0geW91IGhhdmUgdG8gdXNlIAorLSBUaGVyZSdzIGEgbmV3ICJjbWF0aCIgbW9kdWxlIHdoaWNoIHByb3ZpZGVzIHRoZSBzYW1lIGZ1bmN0aW9ucyBhcyB0aGUKKyJtYXRoIiBsaWJyYXJ5IGJ1dCB3aXRoIGNvbXBsZXggYXJndW1lbnRzIGFuZCByZXN1bHRzLiAgKFRoZXJlIGFyZSB2ZXJ5Citnb29kIHJlYXNvbnMgd2h5IG1hdGguc3FydCgtMSkgc3RpbGwgcmFpc2VzIGFuIGV4Y2VwdGlvbiAtLSB5b3UgaGF2ZSB0byB1c2UKIGNtYXRoLnNxcnQoLTEpIHRvIGdldCAxaiBmb3IgYW4gYW5zd2VyLikKIAotLSBUaGUgUHl0aG9uLmggaGVhZGVyIGZpbGUgKHdoaWNoIGlzIHJlYWxseSB0aGUgc2FtZSBhcyBhbGxvYmplY3RzLmggZXhjZXB0IAotaXQgZGlzYWJsZXMgc3VwcG9ydCBmb3Igb2xkIHN0eWxlIG5hbWVzKSBub3cgaW5jbHVkZXMgc2V2ZXJhbCBtb3JlIGZpbGVzLCAKKy0gVGhlIFB5dGhvbi5oIGhlYWRlciBmaWxlICh3aGljaCBpcyByZWFsbHkgdGhlIHNhbWUgYXMgYWxsb2JqZWN0cy5oIGV4Y2VwdAoraXQgZGlzYWJsZXMgc3VwcG9ydCBmb3Igb2xkIHN0eWxlIG5hbWVzKSBub3cgaW5jbHVkZXMgc2V2ZXJhbCBtb3JlIGZpbGVzLAogc28geW91IGhhdmUgdG8gaGF2ZSBmZXdlciAjaW5jbHVkZSBzdGF0ZW1lbnRzIGluIHRoZSBhdmVyYWdlIGV4dGVuc2lvbi4KIAotLSBUaGUgTkRFQlVHIHN5bWJvbCBpcyBubyBsb25nZXIgdXNlZC4gIENvZGUgdGhhdCB1c2VkIHRvIGJlIGRlcGVuZGVudCBvbiAKLXRoZSBwcmVzZW5jZSBvZiBOREVCVUcgaXMgbm93IHByZXNlbnQgb24gdGhlIGFic2VuY2Ugb2YgREVCVUcuICBUUkFDRV9SRUZTIAotYW5kIFJFRl9ERUJVRyBoYXZlIGJlZW4gcmVuYW1lZCB0byBQeV9UUkFDRV9SRUZTIGFuZCBQeV9SRUZfREVCVUcsIAotcmVzcGVjdGl2ZWx5LiAgQXQgbG9uZyBsYXN0LCB0aGUgc291cmNlIGFjdHVhbGx5IGNvbXBpbGVzIGFuZCBsaW5rcyB3aXRob3V0IAorLSBUaGUgTkRFQlVHIHN5bWJvbCBpcyBubyBsb25nZXIgdXNlZC4gIENvZGUgdGhhdCB1c2VkIHRvIGJlIGRlcGVuZGVudCBvbgordGhlIHByZXNlbmNlIG9mIE5ERUJVRyBpcyBub3cgcHJlc2VudCBvbiB0aGUgYWJzZW5jZSBvZiBERUJVRy4gIFRSQUNFX1JFRlMKK2FuZCBSRUZfREVCVUcgaGF2ZSBiZWVuIHJlbmFtZWQgdG8gUHlfVFJBQ0VfUkVGUyBhbmQgUHlfUkVGX0RFQlVHLAorcmVzcGVjdGl2ZWx5LiAgQXQgbG9uZyBsYXN0LCB0aGUgc291cmNlIGFjdHVhbGx5IGNvbXBpbGVzIGFuZCBsaW5rcyB3aXRob3V0CiBlcnJvcnMgd2hlbiB0aGlzIHN5bWJvbCBpcyBkZWZpbmVkLgogCi0tIFNldmVyYWwgc3ltYm9scyB0aGF0IGRpZG4ndCBmb2xsb3cgdGhlIG5ldyBuYW1pbmcgc2NoZW1lIGhhdmUgYmVlbiAKLXJlbmFtZWQgKHVzdWFsbHkgYnkgYWRkaW5nIHRvIHJlbmFtZTIuaCkgdG8gdXNlIGEgUHkgb3IgX1B5IHByZWZpeC4gIFRoZXJlIAotYXJlIG5vIGV4dGVybmFsIHN5bWJvbHMgbGVmdCB3aXRob3V0IGEgUHkgb3IgX1B5IHByZWZpeCwgbm90IGV2ZW4gdGhvc2UgCi1kZWZpbmVkIGJ5IHNvdXJjZXMgdGhhdCB3ZXJlIGluY29ycG9yYXRlZCBmcm9tIGVsc2V3aGVyZSAocmVnZXhwci5jLCAKKy0gU2V2ZXJhbCBzeW1ib2xzIHRoYXQgZGlkbid0IGZvbGxvdyB0aGUgbmV3IG5hbWluZyBzY2hlbWUgaGF2ZSBiZWVuCityZW5hbWVkICh1c3VhbGx5IGJ5IGFkZGluZyB0byByZW5hbWUyLmgpIHRvIHVzZSBhIFB5IG9yIF9QeSBwcmVmaXguICBUaGVyZQorYXJlIG5vIGV4dGVybmFsIHN5bWJvbHMgbGVmdCB3aXRob3V0IGEgUHkgb3IgX1B5IHByZWZpeCwgbm90IGV2ZW4gdGhvc2UKK2RlZmluZWQgYnkgc291cmNlcyB0aGF0IHdlcmUgaW5jb3Jwb3JhdGVkIGZyb20gZWxzZXdoZXJlIChyZWdleHByLmMsCiBtZDVjLmMpLiAgKE1hY3JvcyBhcmUgYSBkaWZmZXJlbnQgc3RvcnkuLi4pCiAKLS0gVGhlcmUgYXJlIG5vdyB0eXBlZGVmcyBmb3IgdGhlIHN0cnVjdHVyZXMgZGVmaW5lZCBpbiBjb25maWcuYyBhbmQgCistIFRoZXJlIGFyZSBub3cgdHlwZWRlZnMgZm9yIHRoZSBzdHJ1Y3R1cmVzIGRlZmluZWQgaW4gY29uZmlnLmMgYW5kCiBmcm96ZW4uYy4KIAogLSBOZXcgUFlUSE9OX0FQSV9WRVJTSU9OIHZhbHVlIGFuZCAucHljIGZpbGUgbWFnaWMgbnVtYmVyLgpAQCAtMjU2ODksMTI1ICsyNTcyMiwxMjUgQEAKIC0gVGhlIGJpbmhleCBhbmQgYmluYXNjaWkgbW9kdWxlcyBub3cgYWN0dWFsbHkgd29yay4KIAogLSBUaGUgY2dpIG1vZHVsZSBoYXMgYmVlbiBhbG1vc3QgdG90YWxseSByZXdyaXR0ZW4gYW5kIGRvY3VtZW50ZWQuCi1JdCBub3cgc3VwcG9ydHMgZmlsZSB1cGxvYWQgYW5kIGEgbmV3IGRhdGEgdHlwZSB0byBoYW5kbGUgZm9ybXMgbW9yZSAKK0l0IG5vdyBzdXBwb3J0cyBmaWxlIHVwbG9hZCBhbmQgYSBuZXcgZGF0YSB0eXBlIHRvIGhhbmRsZSBmb3JtcyBtb3JlCiBmbGV4aWJseS4KIAogLSBUaGUgZm9ybWF0dGVyIG1vZHVsZSAoZm9yIHVzZSB3aXRoIGh0bWxsaWIpIGhhcyBiZWVuIG92ZXJoYXVsZWQgKGFnYWluKS4KIAogLSBUaGUgZnRwbGliIG1vZHVsZSBub3cgc3VwcG9ydHMgcGFzc2l2ZSBtb2RlIGFuZCBoYXMgZG9jIHN0cmluZ3MuCiAKLS0gSW4gKGlkZWFsbHkpIGFsbCBwbGFjZXMgd2hlcmUgYmluYXJ5IGZpbGVzIGFyZSByZWFkIG9yIHdyaXR0ZW4sIHRoZSBmaWxlIAotaXMgbm93IGNvcnJlY3RseSBvcGVuZWQgaW4gYmluYXJ5IG1vZGUgKCdyYicgb3IgJ3diJykgc28gdGhlIGNvZGUgd2lsbCB3b3JrIAorLSBJbiAoaWRlYWxseSkgYWxsIHBsYWNlcyB3aGVyZSBiaW5hcnkgZmlsZXMgYXJlIHJlYWQgb3Igd3JpdHRlbiwgdGhlIGZpbGUKK2lzIG5vdyBjb3JyZWN0bHkgb3BlbmVkIGluIGJpbmFyeSBtb2RlICgncmInIG9yICd3YicpIHNvIHRoZSBjb2RlIHdpbGwgd29yawogb24gTWFjIG9yIFBDLgogCi0tIER1bW15IHZlcnNpb25zIG9mIG9zLnBhdGguZXhwYW5kdmFycygpIGFuZCBleHBhbmR1c2VyKCkgYXJlIG5vdyBwcm92aWRlZCAKKy0gRHVtbXkgdmVyc2lvbnMgb2Ygb3MucGF0aC5leHBhbmR2YXJzKCkgYW5kIGV4cGFuZHVzZXIoKSBhcmUgbm93IHByb3ZpZGVkCiBvbiBub24tVW5peCBwbGF0Zm9ybXMuCiAKLS0gTW9kdWxlIHVybGxpYiBub3cgaGFzIHR3byBuZXcgZnVuY3Rpb25zIHVybDJwYXRobmFtZSBhbmQgcGF0aG5hbWUydXJsIAotd2hpY2ggdHVybiBsb2NhbCBmaWxlbmFtZXMgaW50byAiZmlsZTouLi4iIFVSTHMgdXNpbmcgdGhlIHNhbWUgcnVsZXMgYXMgCi1OZXRzY2FwZSAod2h5IGJlIGRpZmZlcmVudCkuICBpdCBhbHNvIHN1cHBvcnRzIHVybHJldHJpZXZlKCkgd2l0aCBhIAotcGF0aG5hbWUgcGFyYW1ldGVyLCBhbmQgaG9ub3JzIHRoZSBwcm94eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGh0dHBfcHJveHkgCistIE1vZHVsZSB1cmxsaWIgbm93IGhhcyB0d28gbmV3IGZ1bmN0aW9ucyB1cmwycGF0aG5hbWUgYW5kIHBhdGhuYW1lMnVybAord2hpY2ggdHVybiBsb2NhbCBmaWxlbmFtZXMgaW50byAiZmlsZTouLi4iIFVSTHMgdXNpbmcgdGhlIHNhbWUgcnVsZXMgYXMKK05ldHNjYXBlICh3aHkgYmUgZGlmZmVyZW50KS4gIGl0IGFsc28gc3VwcG9ydHMgdXJscmV0cmlldmUoKSB3aXRoIGEKK3BhdGhuYW1lIHBhcmFtZXRlciwgYW5kIGhvbm9ycyB0aGUgcHJveHkgZW52aXJvbm1lbnQgdmFyaWFibGVzIChodHRwX3Byb3h5CiBldGMuKS4gIFRoZSBVUkwgcGFyc2luZyBoYXMgYmVlbiBpbXByb3ZlZCBzb21ld2hhdCwgdG9vLgogCi0tIE1pY3JvIGltcHJvdmVtZW50cyB0byB1cmxwYXJzZS4gIEFkZGVkIHVybHBhcnNlLnVybGRlZnJhZygpIHdoaWNoIAorLSBNaWNybyBpbXByb3ZlbWVudHMgdG8gdXJscGFyc2UuICBBZGRlZCB1cmxwYXJzZS51cmxkZWZyYWcoKSB3aGljaAogcmVtb3ZlcyBhIHRyYWlsaW5nIGBgI2ZyYWdtZW50JycgaWYgYW55LgogCiAtIFRoZSBtYWlsYm94IG1vZHVsZSBub3cgc3VwcG9ydHMgTUggc3R5bGUgbWVzc2FnZSBkZWxpbWl0ZXJzIGFzIHdlbGwuCiAKLS0gVGhlIG1obGliIG1vZHVsZSBjb250YWlucyBzb21lIG5ldyBmdW5jdGlvbmFsaXR5OiBzZXRjb250ZXh0KCkgdG8gc2V0IHRoZSAKLWN1cnJlbnQgZm9sZGVyIGFuZCBwYXJzZXNlcXVlbmNlKCkgdG8gcGFyc2UgYSBzZXF1ZW5jZSBhcyBjb21tb25seSBwYXNzZWQgCistIFRoZSBtaGxpYiBtb2R1bGUgY29udGFpbnMgc29tZSBuZXcgZnVuY3Rpb25hbGl0eTogc2V0Y29udGV4dCgpIHRvIHNldCB0aGUKK2N1cnJlbnQgZm9sZGVyIGFuZCBwYXJzZXNlcXVlbmNlKCkgdG8gcGFyc2UgYSBzZXF1ZW5jZSBhcyBjb21tb25seSBwYXNzZWQKIHRvIE1IIGNvbW1hbmRzIChlLmcuIDEtMTAgb3IgbGFzdDo1KS4KIAotLSBOZXcgbW9kdWxlIG1pbWlmeSBmb3IgY29udmVyc2lvbiB0byBhbmQgZnJvbSBNSU1FIGZvcm1hdCBvZiBlbWFpbCAKKy0gTmV3IG1vZHVsZSBtaW1pZnkgZm9yIGNvbnZlcnNpb24gdG8gYW5kIGZyb20gTUlNRSBmb3JtYXQgb2YgZW1haWwKIG1lc3NhZ2VzLgogCi0tIE1vZHVsZSBuaSBub3cgYXV0b21hdGljYWxseSBpbnN0YWxscyBpdHNlbGYgd2hlbiBmaXJzdCBpbXBvcnRlZCAtLSB0aGlzIAotaXMgYWdhaW5zdCB0aGUgbm9ybWFsIHJ1bGUgdGhhdCBtb2R1bGVzIHNob3VsZCBkZWZpbmUgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIAotYnV0IG5vdCBpbnZva2UgdGhlbSwgYnV0IGFwcGVhcnMgbW9yZSB1c2VmdWwgaW4gdGhlIGNhc2UgdGhhdCB0d28gCistIE1vZHVsZSBuaSBub3cgYXV0b21hdGljYWxseSBpbnN0YWxscyBpdHNlbGYgd2hlbiBmaXJzdCBpbXBvcnRlZCAtLSB0aGlzCitpcyBhZ2FpbnN0IHRoZSBub3JtYWwgcnVsZSB0aGF0IG1vZHVsZXMgc2hvdWxkIGRlZmluZSBjbGFzc2VzIGFuZCBmdW5jdGlvbnMKK2J1dCBub3QgaW52b2tlIHRoZW0sIGJ1dCBhcHBlYXJzIG1vcmUgdXNlZnVsIGluIHRoZSBjYXNlIHRoYXQgdHdvCiBkaWZmZXJlbnQsIGluZGVwZW5kZW50IG1vZHVsZXMgd2FudCB0byB1c2UgbmkncyBmZWF0dXJlcy4KIAogLSBTb21lIHNtYWxsIHBlcmZvcm1hbmNlIGVuaGFuY2VtZW50cyBpbiBtb2R1bGUgcGlja2xlLgogCi0tIFNtYWxsIGludGVyZmFjZSBjaGFuZ2UgdG8gdGhlIHByb2ZpbGUucnVuKigpIGZhbWlseSBvZiBmdW5jdGlvbnMgLS0gbW9yZSAKKy0gU21hbGwgaW50ZXJmYWNlIGNoYW5nZSB0byB0aGUgcHJvZmlsZS5ydW4qKCkgZmFtaWx5IG9mIGZ1bmN0aW9ucyAtLSBtb3JlCiBzZW5zaWJsZSBoYW5kbGluZyBvZiByZXR1cm4gdmFsdWVzLgogCi0tIFRoZSBvZmZpY2lhbGx5IHJlZ2lzdGVyZWQgTWFjIGNyZWF0b3IgZm9yIFB5dGhvbiBmaWxlcyBpcyAnUHl0aCcuICBUaGlzIAorLSBUaGUgb2ZmaWNpYWxseSByZWdpc3RlcmVkIE1hYyBjcmVhdG9yIGZvciBQeXRob24gZmlsZXMgaXMgJ1B5dGgnLiAgVGhpcwogcmVwbGFjZXMgJ1BZVEgnIHdoaWNoIHdhcyB1c2VkIGJlZm9yZSBidXQgbmV2ZXIgcmVnaXN0ZXJlZC4KIAogLSBBZGRlZCByZWdzdWIuY2Fwd29yZHMoKS4gIChYWFgpCiAKLS0gQWRkZWQgc3RyaW5nLmNhcHdvcmRzKCksIHN0cmluZy5jYXBpdGFsaXplKCkgYW5kIHN0cmluZy50cmFuc2xhdGUoKS4gIAorLSBBZGRlZCBzdHJpbmcuY2Fwd29yZHMoKSwgc3RyaW5nLmNhcGl0YWxpemUoKSBhbmQgc3RyaW5nLnRyYW5zbGF0ZSgpLgogKFhYWCkKIAotLSBGaXhlZCBhbiBpbnRlcmZhY2UgYnVnIGluIHRoZSByZXhlYyBtb2R1bGU6IGl0IHdhcyBpbXBvc3NpYmxlIHRvIHBhc3MgYSAKLWhvb2tzIGluc3RhbmNlIHRvIHRoZSBSRXhlYyBjbGFzcy4gIHJleGVjIG5vdyBhbHNvIHN1cHBvcnRzIHRoZSBkeW5hbWljIAotbG9hZGluZyBvZiBtb2R1bGVzIGZyb20gc2hhcmVkIGxpYnJhcmllcy4gIFNvbWUgb3RoZXIgaW50ZXJmYWNlcyBoYXZlIGJlZW4gCistIEZpeGVkIGFuIGludGVyZmFjZSBidWcgaW4gdGhlIHJleGVjIG1vZHVsZTogaXQgd2FzIGltcG9zc2libGUgdG8gcGFzcyBhCitob29rcyBpbnN0YW5jZSB0byB0aGUgUkV4ZWMgY2xhc3MuICByZXhlYyBub3cgYWxzbyBzdXBwb3J0cyB0aGUgZHluYW1pYworbG9hZGluZyBvZiBtb2R1bGVzIGZyb20gc2hhcmVkIGxpYnJhcmllcy4gIFNvbWUgb3RoZXIgaW50ZXJmYWNlcyBoYXZlIGJlZW4KIGFkZGVkIHRvby4KIAotLSBNb2R1bGUgcmZjODIyIG5vdyBjYWNoZXMgdGhlIGhlYWRlcnMgaW4gYSBkaWN0aW9uYXJ5IGZvciBtb3JlIGVmZmljaWVudCAKKy0gTW9kdWxlIHJmYzgyMiBub3cgY2FjaGVzIHRoZSBoZWFkZXJzIGluIGEgZGljdGlvbmFyeSBmb3IgbW9yZSBlZmZpY2llbnQKIGxvb2t1cC4KIAotLSBUaGUgc2dtbGxpYiBtb2R1bGUgbm93IHVuZGVyc3RhbmRzIGEgbGltaXRlZCBudW1iZXIgb2YgU0dNTCAic2hvcnRoYW5kcyIgCistIFRoZSBzZ21sbGliIG1vZHVsZSBub3cgdW5kZXJzdGFuZHMgYSBsaW1pdGVkIG51bWJlciBvZiBTR01MICJzaG9ydGhhbmRzIgogbGlrZSA8QS8uLi4vIGZvciA8QT4uLi48L0E+LiAgKEl0J3Mgbm90IGNsZWFyIHRoYXQgdGhpcyB3YXMgYSBnb29kIGlkZWEuLi4pCiAKLS0gVGhlIHRlbXBmaWxlIG1vZHVsZSBhY3R1YWxseSB0cmllcyBhIG51bWJlciBvZiBkaWZmZXJlbnQgcGxhY2VzIHRvIGZpbmQgYSAKLXVzYWJsZSB0ZW1wb3JhcnkgZGlyZWN0b3J5LiAgKFRoaXMgd2FzIHByb21wdGVkIGJ5IGNlcnRhaW4gTGludXggCi1pbnN0YWxsYXRpb25zIHRoYXQgYXBwZWFyIHRvIGJlIG1pc3NpbmcgYSAvdXNyL3RtcCBkaXJlY3RvcnkuKSBbQSBidWcgaW4gCi10aGUgaW1wbGVtZW50YXRpb24gdGhhdCB3b3VsZCBpZ25vcmUgYSBwcmUtZXhpc3RpbmcgdG1wZGlyIGdsb2JhbCBoYXMgYmVlbiAKKy0gVGhlIHRlbXBmaWxlIG1vZHVsZSBhY3R1YWxseSB0cmllcyBhIG51bWJlciBvZiBkaWZmZXJlbnQgcGxhY2VzIHRvIGZpbmQgYQordXNhYmxlIHRlbXBvcmFyeSBkaXJlY3RvcnkuICAoVGhpcyB3YXMgcHJvbXB0ZWQgYnkgY2VydGFpbiBMaW51eAoraW5zdGFsbGF0aW9ucyB0aGF0IGFwcGVhciB0byBiZSBtaXNzaW5nIGEgL3Vzci90bXAgZGlyZWN0b3J5LikgW0EgYnVnIGluCit0aGUgaW1wbGVtZW50YXRpb24gdGhhdCB3b3VsZCBpZ25vcmUgYSBwcmUtZXhpc3RpbmcgdG1wZGlyIGdsb2JhbCBoYXMgYmVlbgogZml4ZWQgaW4gYmV0YTMuXQogCiAtIE11Y2ggaW1wcm92ZWQgYW5kIGVuaGFudmVkIEZpbGVEaWFsb2cgbW9kdWxlIGZvciBUa2ludGVyLgogCi0tIE1hbnkgc21hbGwgY2hhbmdlcyB0byBUa2ludGVyLCB0byBicmluZyBpdCBtb3JlIGluIGxpbmUgd2l0aCBUayA0LjAgKGFzIAorLSBNYW55IHNtYWxsIGNoYW5nZXMgdG8gVGtpbnRlciwgdG8gYnJpbmcgaXQgbW9yZSBpbiBsaW5lIHdpdGggVGsgNC4wIChhcwogd2VsbCBhcyBUayA0LjEpLgogCi0tIE5ldyBzb2NrZXQgaW50ZXJmYWNlcyBpbmNsdWRlIG50b2hzKCksIG50b2hsKCksIGh0b25zKCksIGh0b25sKCksIGFuZCAKLXMuZHVwKCkuICBTb2NrZXRzIG5vdyB3b3JrIGNvcnJlY3RseSBvbiBXaW5kb3dzLiAgT24gV2luZG93cywgdGhlIGJ1aWx0LWluIAotZXh0ZW5zaW9uIGlzIGNhbGxlZCBfc29ja2V0IGFuZCBhIHdyYXBwZXIgbW9kdWxlIHdpbi9zb2NrZXQucHkgcHJvdmlkZXMgCi0ibWFrZWZpbGUoKSIgYW5kICJkdXAoKSIgZnVuY3Rpb25hbGl0eS4gIE9uIFdpbmRvd3MsIHRoZSBzZWxlY3QgbW9kdWxlIAorLSBOZXcgc29ja2V0IGludGVyZmFjZXMgaW5jbHVkZSBudG9ocygpLCBudG9obCgpLCBodG9ucygpLCBodG9ubCgpLCBhbmQKK3MuZHVwKCkuICBTb2NrZXRzIG5vdyB3b3JrIGNvcnJlY3RseSBvbiBXaW5kb3dzLiAgT24gV2luZG93cywgdGhlIGJ1aWx0LWluCitleHRlbnNpb24gaXMgY2FsbGVkIF9zb2NrZXQgYW5kIGEgd3JhcHBlciBtb2R1bGUgd2luL3NvY2tldC5weSBwcm92aWRlcworIm1ha2VmaWxlKCkiIGFuZCAiZHVwKCkiIGZ1bmN0aW9uYWxpdHkuICBPbiBXaW5kb3dzLCB0aGUgc2VsZWN0IG1vZHVsZQogd29ya3Mgb25seSB3aXRoIHNvY2tldCBvYmplY3RzLgogCiAtIEJ1Z3MgaW4gYnNkZGIgbW9kdWxlIGZpeGVkIChlLmcuIG1pc3NpbmcgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZXMpLgogCiAtIFRoZSBjdXJzZXMgZXh0ZW5zaW9uIG5vdyBpbmNsdWRlcyA8bmN1cnNlcy5oPiB3aGVuIGF2YWlsYWJsZS4KIAotLSBUaGUgZ2RibSBtb2R1bGUgbm93IHN1cHBvcnRzIG9wZW5pbmcgZGF0YWJhc2VzIGluICJmYXN0IiBtb2RlIGJ5IAorLSBUaGUgZ2RibSBtb2R1bGUgbm93IHN1cHBvcnRzIG9wZW5pbmcgZGF0YWJhc2VzIGluICJmYXN0IiBtb2RlIGJ5CiBzcGVjaWZ5aW5nICdmJyBhcyB0aGUgc2Vjb25kIGNoYXJhY3RlciBvciB0aGUgbW9kZSBzdHJpbmcuCiAKLS0gbmV3IHZhcmlhYmxlcyBzeXMucHJlZml4IGFuZCBzeXMuZXhlY19wcmVmaXggcGFzcyBjb3JyZXNwb25kaW5nIAorLSBuZXcgdmFyaWFibGVzIHN5cy5wcmVmaXggYW5kIHN5cy5leGVjX3ByZWZpeCBwYXNzIGNvcnJlc3BvbmRpbmcKIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyAvIE1ha2VmaWxlIHZhcmlhYmxlcyB0byB0aGUgUHl0aG9uIHByb2dyYW1tZXIuCiAKLS0gVGhlIGBgbmV3JycgbW9kdWxlIG5vdyBzdXBwb3J0cyBjcmVhdGluZyBuZXcgdXNlci1kZWZpbmVkIGNsYXNzZXMgYXMgd2VsbCAKKy0gVGhlIGBgbmV3JycgbW9kdWxlIG5vdyBzdXBwb3J0cyBjcmVhdGluZyBuZXcgdXNlci1kZWZpbmVkIGNsYXNzZXMgYXMgd2VsbAogYXMgaW5zdGFuY2VzIHRoZXJlb2YuCiAKLS0gVGhlIHNvdW5kZXggbW9kdWxlIG5vdyBzcG9ydHMgZ2V0X3NvdW5kZXgoKSB0byBnZXQgdGhlIHNvdW5kZXggdmFsdWUgZm9yIGFuIAotYXJiaXRyYXJ5IHN0cmluZyAoZm9ybWVybHkgaXQgd291bGQgb25seSBkbyBzb3VuZGV4LWJhc2VkIHN0cmluZyAKKy0gVGhlIHNvdW5kZXggbW9kdWxlIG5vdyBzcG9ydHMgZ2V0X3NvdW5kZXgoKSB0byBnZXQgdGhlIHNvdW5kZXggdmFsdWUgZm9yIGFuCithcmJpdHJhcnkgc3RyaW5nIChmb3JtZXJseSBpdCB3b3VsZCBvbmx5IGRvIHNvdW5kZXgtYmFzZWQgc3RyaW5nCiBjb21wYXJpc29uKSBhcyB3ZWxsIGFzIGRvYyBzdHJpbmdzLgogCi0tIE5ldyBvYmplY3QgdHlwZSAiY29iamVjdCIgdG8gc2FmZWx5IHdyYXAgdm9pZCBwb2ludGVycyBmb3IgcGFzc2luZyB0aGVtIAorLSBOZXcgb2JqZWN0IHR5cGUgImNvYmplY3QiIHRvIHNhZmVseSB3cmFwIHZvaWQgcG9pbnRlcnMgZm9yIHBhc3NpbmcgdGhlbQogYmV0d2VlbiB2YXJpb3VzIGV4dGVuc2lvbiBtb2R1bGVzLgogCiAtIE1vcmUgZWZmaWNpZW50IGNvbXB1dGF0aW9uIG9mIGZsb2F0KipzbWFsbGludC4KIAotLSBUaGUgbXlzdGVyaW91cyBidWcgd2hlcmVieSAieC54IiAodHdvIG9jY3VycmVuY2VzIG9mIHRoZSBzYW1lIAotb25lLWNoYXJhY3RlciBuYW1lKSB0eXBlZCBmcm9tIHRoZSBjb21tYW5kbGluZSB3b3VsZCBzb21ldGltZXMgZmFpbCAKKy0gVGhlIG15c3RlcmlvdXMgYnVnIHdoZXJlYnkgIngueCIgKHR3byBvY2N1cnJlbmNlcyBvZiB0aGUgc2FtZQorb25lLWNoYXJhY3RlciBuYW1lKSB0eXBlZCBmcm9tIHRoZSBjb21tYW5kbGluZSB3b3VsZCBzb21ldGltZXMgZmFpbAogbXlzdGVyaW91c2x5LgogCi0tIFRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgcmVhZGxpbmUgZnVuY3Rpb24gY2FuIG5vdyBiZSBpbnZva2VkIGJ5IGEgQyAKKy0gVGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSByZWFkbGluZSBmdW5jdGlvbiBjYW4gbm93IGJlIGludm9rZWQgYnkgYSBDCiBleHRlbnNpb24gdGhyb3VnaCBQeU9TX1JlYWRsaW5lSW5pdCgpLgogCi0tIFRoZXJlJ3Mgbm93IGFuIGV4dGVybmFsbHkgdmlzaWJsZSBwb2ludGVyIFB5SW1wb3J0X0Zyb3plbk1vZHVsZXMgd2hpY2ggCistIFRoZXJlJ3Mgbm93IGFuIGV4dGVybmFsbHkgdmlzaWJsZSBwb2ludGVyIFB5SW1wb3J0X0Zyb3plbk1vZHVsZXMgd2hpY2gKIGNhbiBiZSBjaGFuZ2VkIGJ5IGFuIGVtYmVkZGluZyBhcHBsaWNhdGlvbi4KIAotLSBUaGUgYXJndW1lbnQgcGFyc2luZyBmdW5jdGlvbnMgbm93IHN1cHBvcnQgYSBuZXcgZm9ybWF0IGNoYXJhY3RlciAnRCcgdG8gCistIFRoZSBhcmd1bWVudCBwYXJzaW5nIGZ1bmN0aW9ucyBub3cgc3VwcG9ydCBhIG5ldyBmb3JtYXQgY2hhcmFjdGVyICdEJyB0bwogc3BlY2lmeSBjb21wbGV4IG51bWJlcnMuCiAKIC0gVmFyaW91cyBtZW1vcnkgbGVha3MgcGx1Z2dlZCBhbmQgYnVncyBmaXhlZC4KIAotLSBJbXByb3ZlZCBzdXBwb3J0IGZvciBwb3NpeCB0aHJlYWRzIChub3cgdGhhdCByZWFsIGltcGxlbWVudGF0aW9ucyBhcmUgCistIEltcHJvdmVkIHN1cHBvcnQgZm9yIHBvc2l4IHRocmVhZHMgKG5vdyB0aGF0IHJlYWwgaW1wbGVtZW50YXRpb25zIGFyZQogYmVnaW5uaW5nIHRvIGFwZXBhcikuICBTdGlsbCBubyBmdWxseSBmdW5jdGlvbmluZyBzZW1hcGhvcmVzLgogCi0tIFNvbWUgdmFyaW91cyBhbmQgc3VuZHJ5IGltcHJvdmVtZW50cyBhbmQgbmV3IGVudHJpZXMgaW4gdGhlIFRvb2xzIAorLSBTb21lIHZhcmlvdXMgYW5kIHN1bmRyeSBpbXByb3ZlbWVudHMgYW5kIG5ldyBlbnRyaWVzIGluIHRoZSBUb29scwogZGlyZWN0b3J5LgogCiAKQEAgLTI3NDE3LDcgKzI3NDUwLDcgQEAKIFRoZSBsaW1pdCBvbiB0aGUgc2l6ZSBvZiB0aGUgKnJ1bi10aW1lKiBzdGFjayBoYXMgY29tcGxldGVseSBiZWVuCiByZW1vdmVkIC0tIHRoaXMgbWVhbnMgdGhhdCB0dXBsZSBvciBsaXN0IGRpc3BsYXlzIGNhbiBjb250YWluIGFueQogbnVtYmVyIG9mIGVsZW1lbnRzIChmb3JtZXJseSBtb3JlIHRoYW4gNTAgd291bGQgY3Jhc2ggdGhlCi1pbnRlcnByZXRlcikuIAoraW50ZXJwcmV0ZXIpLgogCiAKIENoYW5nZXMgdG8gZXhpc3RpbmcgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBtZXRob2RzCmRpZmYgLS1naXQgYS9NaXNjL05FV1MgYi9NaXNjL05FV1MKaW5kZXggMjk4ZDAyNy4uZTNlYzRhOSAxMDA2NDQKLS0tIGEvTWlzYy9ORVdTCisrKyBiL01pc2MvTkVXUwpAQCAtMSwxOCArMSw1OCBAQAot77u/KysrKysrKysrKysKKysrKysrKysrKysrCiBQeXRob24gTmV3cwogKysrKysrKysrKysKIAotV2hhdCdzIE5ldyBpbiBQeXRob24gMy40LjU/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4yIHJlbGVhc2UgY2FuZGlkYXRlIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBSZWxlYXNlIGRhdGU6IHRiYQogCiBDb3JlIGFuZCBCdWlsdGlucwogLS0tLS0tLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMjI5OTU6IFtVUERBVEVdIENvbW1lbnQgb3V0IHRoZSBvbmUgb2YgdGhlIHBpY2tsZWFiaWxpdHkgdGVzdHMgaW4KKyAgX1B5T2JqZWN0X0dldFN0YXRlKCkgZHVlIHRvIHJlZ3Jlc3Npb25zIG9ic2VydmVkIGluIEN5dGhvbi1iYXNlZCBwcm9qZWN0cy4KKworLSBJc3N1ZSAjMjU5NjE6IERpc2FsbG93ZWQgbnVsbCBjaGFyYWN0ZXJzIGluIHRoZSB0eXBlIG5hbWUuCisKKy0gSXNzdWUgIzI1OTczOiBGaXggc2VnZmF1bHQgd2hlbiBhbiBpbnZhbGlkIG5vbmxvY2FsIHN0YXRlbWVudCBiaW5kcyBhIG5hbWUKKyAgc3RhcnRpbmcgd2l0aCB0d28gdW5kZXJzY29yZXMuCisKKy0gSXNzdWUgIzIyOTk1OiBJbnN0YW5jZXMgb2YgZXh0ZW5zaW9uIHR5cGVzIHdpdGggYSBzdGF0ZSB0aGF0IGFyZW4ndAorICBzdWJjbGFzc2VzIG9mIGxpc3Qgb3IgZGljdCBhbmQgaGF2ZW4ndCBpbXBsZW1lbnRlZCBhbnkgcGlja2xlLXJlbGF0ZWQKKyAgbWV0aG9kcyAoX19yZWR1Y2VfXywgX19yZWR1Y2VfZXhfXywgX19nZXRuZXdhcmdzX18sIF9fZ2V0bmV3YXJnc19leF9fLAorICBvciBfX2dldHN0YXRlX18pLCBjYW4gbm8gbG9uZ2VyIGJlIHBpY2tsZWQuICBJbmNsdWRpbmcgbWVtb3J5dmlldy4KKworLSBJc3N1ZSAjMjA0NDA6IE1hc3NpdmUgcmVwbGFjaW5nIHVuc2FmZSBhdHRyaWJ1dGUgc2V0dGluZyBjb2RlIHdpdGggc3BlY2lhbAorICBtYWNybyBQeV9TRVRSRUYuCisKKy0gSXNzdWUgIzI1NzY2OiBTcGVjaWFsIG1ldGhvZCBfX2J5dGVzX18oKSBub3cgd29ya3MgaW4gc3RyIHN1YmNsYXNzZXMuCisKKy0gSXNzdWUgIzI1NDIxOiBfX3NpemVvZl9fIG1ldGhvZHMgb2YgYnVpbHRpbiB0eXBlcyBub3cgdXNlIGR5bmFtaWMgYmFzaWMgc2l6ZS4KKyAgVGhpcyBhbGxvd3Mgc3lzLmdldHNpemUoKSB0byB3b3JrIGNvcnJlY3RseSB3aXRoIHRoZWlyIHN1YmNsYXNzZXMgd2l0aAorICBfX3Nsb3RzX18gZGVmaW5lZC4KKworLSBJc3N1ZSAjMjU3MDk6IEZpeGVkIHByb2JsZW0gd2l0aCBpbi1wbGFjZSBzdHJpbmcgY29uY2F0ZW5hdGlvbiBhbmQgdXRmLTggY2FjaGUuCisKKy0gSXNzdWUgIzI0MDk3OiBGaXhlZCBjcmFzaCBpbiBvYmplY3QuX19yZWR1Y2VfXygpIGlmIHNsb3QgbmFtZSBpcyBmcmVlZCBpbnNpZGUKKyAgX19nZXRhdHRyX18uCisKKy0gSXNzdWUgIzI0NzMxOiBGaXhlZCBjcmFzaCBvbiBjb252ZXJ0aW5nIG9iamVjdHMgd2l0aCBzcGVjaWFsIG1ldGhvZHMKKyAgX19ieXRlc19fLCBfX3RydW5jX18sIGFuZCBfX2Zsb2F0X18gcmV0dXJuaW5nIGluc3RhbmNlcyBvZiBzdWJjbGFzc2VzIG9mCisgIGJ5dGVzLCBpbnQsIGFuZCBmbG9hdCB0byBzdWJjbGFzc2VzIG9mIGJ5dGVzLCBpbnQsIGFuZCBmbG9hdCBjb3JyZXNwb25kaW5nbHkuCisKIExpYnJhcnkKIC0tLS0tLS0KIAorLSBJc3N1ZSAjMjQ3MDU6IEZpeCBzeXNjb25maWcuX3BhcnNlX21ha2VmaWxlIG5vdCBleHBhbmRpbmcgJHt9IHZhcnMKKyAgYXBwZWFyaW5nIGJlZm9yZSAkKCkgdmFycy4KKworLSBJc3N1ZSAjMjIxMzg6IEZpeCBtb2NrLnBhdGNoIGJlaGF2aW9yIHdoZW4gcGF0Y2hpbmcgZGVzY3JpcHRvcnMuIFJlc3RvcmUKKyAgb3JpZ2luYWwgdmFsdWVzIGFmdGVyIHBhdGNoaW5nLiBQYXRjaCBjb250cmlidXRlZCBieSBTZWFuIE1jQ3VsbHkuCisKKy0gSXNzdWUgIzI1NjcyOiBJbiB0aGUgc3NsIG1vZHVsZSwgZW5hYmxlIHRoZSBTU0xfTU9ERV9SRUxFQVNFX0JVRkZFUlMgbW9kZQorICBvcHRpb24gaWYgaXQgaXMgc2FmZSB0byBkbyBzby4KKwogLSBJc3N1ZSAjMjI1NzA6IEFkZCAncGF0aCcgYXR0cmlidXRlIHRvIHBhdGhsaWIuUGF0aCBvYmplY3RzLAogICByZXR1cm5pbmcgdGhlIHNhbWUgYXMgc3RyKCksIHRvIG1ha2UgaXQgbW9yZSBzaW1pbGFyIHRvIERpckVudHJ5LgogICBMaWJyYXJ5IGNvZGUgY2FuIG5vdyB3cml0ZSBnZXRhdHRyKHAsICdwYXRoJywgcCkgdG8gZ2V0IHRoZSBwYXRoIGFzCkBAIC0yNSwxNDUgKzY1LDI1IEBACiAtIElzc3VlICMyNDEyMDogSWdub3JlIFBlcm1pc3Npb25FcnJvciB3aGVuIHRyYXZlcnNpbmcgYSB0cmVlIHdpdGgKICAgcGF0aGxpYi5QYXRoLltyXWdsb2IoKS4gIFBhdGNoIGJ5IFVscmljaCBQZXRyaS4KIAotLSBTa2lwIGdldGFkZHJpbmZvIGlmIGhvc3QgaXMgYWxyZWFkeSByZXNvbHZlZC4KLSAgUGF0Y2ggYnkgQS4gSmVzc2UgSmlyeXUgRGF2aXMuCistIElzc3VlICMyNTQ0NzogZmlsZWlucHV0IG5vdyB1c2VzIHN5cy5zdGRpbiBhcy1pcyBpZiBpdCBkb2VzIG5vdCBoYXZlIGEKKyAgYnVmZmVyIGF0dHJpYnV0ZSAocmVzdG9yZXMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkuCiAKLS0gQWRkIGFzeW5jaW8udGltZW91dCgpIGNvbnRleHQgbWFuYWdlci4KKy0gSXNzdWUgIzI1NDQ3OiBDb3B5aW5nIHRoZSBscnVfY2FjaGUoKSB3cmFwcGVyIG9iamVjdCBub3cgYWx3YXlzIHdvcmtzLAorICBpbmRlcGVuZGVkbHkgZnJvbSB0aGUgdHlwZSBvZiB0aGUgd3JhcHBlZCBvYmplY3QgKGJ5IHJldHVybmluZyB0aGUgb3JpZ2luYWwKKyAgb2JqZWN0IHVuY2hhbmdlZCkuCiAKLS0gSXNzdWUgIzI2MDUwOiBBZGQgYXN5bmNpby5TdHJlYW1SZWFkZXIucmVhZHVudGlsKCkgbWV0aG9kLgotICBQYXRjaCBieSDQnNCw0YDQuiDQmtC+0YDQtdC90LHQtdGA0LMuCistIElzc3VlICMyNDEwMzogRml4ZWQgcG9zc2libGUgdXNlIGFmdGVyIGZyZWUgaW4gRWxlbWVudFRyZWUuWE1MUHVsbFBhcnNlci4KIAotVGVzdHMKLS0tLS0tCistIElzc3VlICMyNTg2MDogb3MuZndhbGsoKSBubyBsb25nZXIgc2tpcHMgcmVtYWluaW5nIGRpcmVjdG9yaWVzIHdoZW4gZXJyb3IKKyAgb2NjdXJzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgU2Ftc29uIExlZS4KIAotLSBJc3N1ZSAjMjU5NDA6IENoYW5nZWQgdGVzdF9zc2wgdG8gdXNlIHNlbGYtc2lnbmVkLnB5dGhvbnRlc3QubmV0LiAgVGhpcwotICBhdm9pZHMgcmVseWluZyBvbiBzdm4ucHl0aG9uLm9yZywgd2hpY2ggcmVjZW50bHkgY2hhbmdlZCByb290IGNlcnRpZmljYXRlLgorLSBJc3N1ZSAjMjU5MTQ6IEZpeGVkIGFuZCBzaW1wbGlmaWVkIE9yZGVyZWREaWN0Ll9fc2l6ZW9mX18uCiAKKy0gSXNzdWUgIzI1OTAyOiBGaXhlZCB2YXJpb3VzIHJlZmNvdW50IGlzc3VlcyBpbiBFbGVtZW50VHJlZSBpdGVyYXRpb24uCiAKLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNC40PwotPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVJlbGVhc2UgZGF0ZTogMjAxNS8xMi8yMAotCi1XaW5kb3dzCi0tLS0tLS0tCi0KLS0gSXNzdWUgIzI1ODQ0OiBDb3JyZWN0ZWQgPS89PSB0eXBvIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gY3Jhc2ggaW4gbGF1bmNoZXIuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy40LjRyYzE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotUmVsZWFzZSBkYXRlOiAyMDE1LzEyLzA2Ci0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyNTcwOTogRml4ZWQgcHJvYmxlbSB3aXRoIGluLXBsYWNlIHN0cmluZyBjb25jYXRlbmF0aW9uIGFuZCB1dGYtOAotICBjYWNoZS4KLQotLSBJc3N1ZSAjMjQwOTc6IEZpeGVkIGNyYXNoIGluIG9iamVjdC5fX3JlZHVjZV9fKCkgaWYgc2xvdCBuYW1lIGlzIGZyZWVkIGluc2lkZQotICBfX2dldGF0dHJfXy4KLQotLSBJc3N1ZSAjMjQ3MzE6IEZpeGVkIGNyYXNoIG9uIGNvbnZlcnRpbmcgb2JqZWN0cyB3aXRoIHNwZWNpYWwgbWV0aG9kcwotICBfX2J5dGVzX18sIF9fdHJ1bmNfXywgYW5kIF9fZmxvYXRfXyByZXR1cm5pbmcgaW5zdGFuY2VzIG9mIHN1YmNsYXNzZXMgb2YKLSAgYnl0ZXMsIGludCwgYW5kIGZsb2F0IHRvIHN1YmNsYXNzZXMgb2YgYnl0ZXMsIGludCwgYW5kIGZsb2F0IGNvcnJlc3BvbmRpbmdseS4KLQotLSBJc3N1ZSAjMjUzODg6IEZpeGVkIHRva2VuaXplciBjcmFzaCB3aGVuIHByb2Nlc3NpbmcgdW5kZWNvZGFibGUgc291cmNlIGNvZGUKLSAgd2l0aCBhIG51bGwgYnl0ZS4KLQotLSBJc3N1ZSAjMjI5OTU6IERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgX19yZWR1Y2VfXyBhbmQgX19yZWR1Y2VfZXhfXyBub3cKLSAgcmVqZWN0cyBidWlsdGluIHR5cGVzIHdpdGggbm90IGRlZmluZWQgX19uZXdfXy4KLQotLSBJc3N1ZSAjMjQ4MDI6IEF2b2lkIGJ1ZmZlciBvdmVycmVhZHMgd2hlbiBpbnQoKSwgZmxvYXQoKSwgY29tcGlsZSgpLCBleGVjKCkKLSAgYW5kIGV2YWwoKSBhcmUgcGFzc2VkIGJ5dGVzLWxpa2Ugb2JqZWN0cy4gIFRoZXNlIG9iamVjdHMgYXJlIG5vdAotICBuZWNlc3NhcmlseSB0ZXJtaW5hdGVkIGJ5IGEgbnVsbCBieXRlLCBidXQgdGhlIGZ1bmN0aW9ucyBhc3N1bWVkIHRoZXkgd2VyZS4KLQotLSBJc3N1ZSAjMjQ0MDI6IEZpeCBpbnB1dCgpIHRvIHByb21wdCB0byB0aGUgcmVkaXJlY3RlZCBzdGRvdXQgd2hlbgotICBzeXMuc3Rkb3V0LmZpbGVubygpIGZhaWxzLgotCi0tIElzc3VlICMyNDgwNjogUHJldmVudCBidWlsdGluIHR5cGVzIHRoYXQgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIHN1YmNsYXNzZWQgZnJvbQotICBiZWluZyBzdWJjbGFzc2VkIHRocm91Z2ggbXVsdGlwbGUgaW5oZXJpdGFuY2UuCi0KLS0gSXNzdWUgIzI0ODQ4OiBGaXhlZCBhIG51bWJlciBvZiBidWdzIGluIFVURi03IGRlY29kaW5nIG9mIG1pc2Zvcm1lZCBkYXRhLgotCi0tIElzc3VlICMyNTI4MDogSW1wb3J0IHRyYWNlIG1lc3NhZ2VzIGVtaXR0ZWQgaW4gdmVyYm9zZSAoLXYpIG1vZGUgYXJlIG5vCi0gIGxvbmdlciBmb3JtYXR0ZWQgdHdpY2UuCi0KLS0gSXNzdWUgIzI1MDAzOiBvcy51cmFuZG9tKCkgZG9lc24ndCB1c2UgZ2V0ZW50cm9weSgpIG9uIFNvbGFyaXMgYmVjYXVzZQotICBnZXRlbnRyb3B5KCkgaXMgYmxvY2tpbmcsIHdoZXJlYXMgb3MudXJhbmRvbSgpIHNob3VsZCBub3QgYmxvY2suIGdldGVudHJvcHkoKQotICBpcyBzdXBwb3J0ZWQgc2luY2UgU29sYXJpcyAxMS4zLgotCi0tIElzc3VlICMyNTE4MjogVGhlIHN0ZHByaW50ZXIgKHVzZWQgYXMgc3lzLnN0ZGVyciBiZWZvcmUgdGhlIGlvIG1vZHVsZSBpcwotICBpbXBvcnRlZCBhdCBzdGFydHVwKSBub3cgdXNlcyB0aGUgYmFja3NsYXNocmVwbGFjZSBlcnJvciBoYW5kbGVyLgotCi0tIElzc3VlICMyNDg5MTogRml4IGEgcmFjZSBjb25kaXRpb24gYXQgUHl0aG9uIHN0YXJ0dXAgaWYgdGhlIGZpbGUgZGVzY3JpcHRvcgotICBvZiBzdGRpbiAoMCksIHN0ZG91dCAoMSkgb3Igc3RkZXJyICgyKSBpcyBjbG9zZWQgd2hpbGUgUHl0aG9uIGlzIGNyZWF0aW5nCi0gIHN5cy5zdGRpbiwgc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciBvYmplY3RzLiBUaGVzZSBhdHRyaWJ1dGVzIGFyZSBub3cgc2V0Ci0gIHRvIE5vbmUgaWYgdGhlIGNyZWF0aW9uIG9mIHRoZSBvYmplY3QgZmFpbGVkLCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gT1NFcnJvcgotICBleGNlcHRpb24uIEluaXRpYWwgcGF0Y2ggd3JpdHRlbiBieSBNYXJjbyBQYW9saW5pLgotCi0tIElzc3VlICMyMTE2NzogTkFOIG9wZXJhdGlvbnMgYXJlIG5vdyBoYW5kbGVkIGNvcnJlY3RseSB3aGVuIHB5dGhvbiBpcwotICBjb21waWxlZCB3aXRoIElDQyBldmVuIGlmIC1mcC1tb2RlbCBzdHJpY3QgaXMgbm90IHNwZWNpZmllZC4KLQotLSBJc3N1ZSAjNDM5NTogQmV0dGVyIHRlc3RpbmcgYW5kIGRvY3VtZW50YXRpb24gb2YgYmluYXJ5IG9wZXJhdG9ycy4KLSAgUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KLQotLSBJc3N1ZSAjMjQ0Njc6IEZpeGVkIHBvc3NpYmxlIGJ1ZmZlciBvdmVyLXJlYWQgaW4gYnl0ZWFycmF5LiBUaGUgYnl0ZWFycmF5Ci0gIG9iamVjdCBub3cgYWx3YXlzIGFsbG9jYXRlcyBwbGFjZSBmb3IgdHJhaWxpbmcgbnVsbCBieXRlIGFuZCBpdCdzIGJ1ZmZlciBub3cKLSAgaXMgYWx3YXlzIG51bGwtdGVybWluYXRlZC4KLQotLSBJc3N1ZSAjMjQxMTU6IFVwZGF0ZSB1c2VzIG9mIFB5T2JqZWN0X0lzVHJ1ZSgpLCBQeU9iamVjdF9Ob3QoKSwKLSAgUHlPYmplY3RfSXNJbnN0YW5jZSgpLCBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woKSBhbmQgX1B5RGljdF9Db250YWlucygpCi0gIHRvIGNoZWNrIGZvciBhbmQgaGFuZGxlIGVycm9ycyBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzI0MjU3OiBGaXhlZCBzeXN0ZW0gZXJyb3IgaW4gdGhlIGNvbXBhcmlzb24gb2YgZmFrZWQKLSAgdHlwZXMuU2ltcGxlTmFtZXNwYWNlLgotCi0tIElzc3VlICMyMjkzOTogRml4ZWQgaW50ZWdlciBvdmVyZmxvdyBpbiBpdGVyYXRvciBvYmplY3QuICBQYXRjaCBieQotICBDbGVtZW50IFJvdWF1bHQuCi0KLS0gSXNzdWUgIzIzOTg1OiBGaXggYSBwb3NzaWJsZSBidWZmZXIgb3ZlcnJ1biB3aGVuIGRlbGV0aW5nIGEgc2xpY2UgZnJvbQotICB0aGUgZnJvbnQgb2YgYSBieXRlYXJyYXkgYW5kIHRoZW4gYXBwZW5kaW5nIHNvbWUgb3RoZXIgYnl0ZXMgZGF0YS4KLQotLSBJc3N1ZSAjMjQxMDI6IEZpeGVkIGV4Y2VwdGlvbiB0eXBlIGNoZWNraW5nIGluIHN0YW5kYXJkIGVycm9yIGhhbmRsZXJzLgotCi0tIElzc3VlICMyMzc1NzogUHlTZXF1ZW5jZV9UdXBsZSgpIGluY29ycmVjdGx5IGNhbGxlZCB0aGUgY29uY3JldGUgbGlzdCBBUEkKLSAgd2hlbiB0aGUgZGF0YSB3YXMgYSBsaXN0IHN1YmNsYXNzLgotCi0tIElzc3VlICMyNDQwNzogRml4IGNyYXNoIHdoZW4gZGljdCBpcyBtdXRhdGVkIHdoaWxlIGJlaW5nIHVwZGF0ZWQuCi0KLS0gSXNzdWUgIzI0MDk2OiBNYWtlIHdhcm5pbmdzLndhcm5fZXhwbGljaXQgbW9yZSByb2J1c3QgYWdhaW5zdCBtdXRhdGlvbiBvZiB0aGUKLSAgd2FybmluZ3MuZmlsdGVycyBsaXN0LgotCi0tIElzc3VlICMyMzk5NjogQXZvaWQgYSBjcmFzaCB3aGVuIGEgZGVsZWdhdGVkIGdlbmVyYXRvciByYWlzZXMgYW4KLSAgdW5ub3JtYWxpemVkIFN0b3BJdGVyYXRpb24gZXhjZXB0aW9uLiAgUGF0Y2ggYnkgU3RlZmFuIEJlaG5lbC4KLQotLSBJc3N1ZSAjMjQwMjI6IEZpeCB0b2tlbml6ZXIgY3Jhc2ggd2hlbiBwcm9jZXNzaW5nIHVuZGVjb2RhYmxlIHNvdXJjZSBjb2RlLgotCi0tIElzc3VlICMyMzMwOTogQXZvaWQgYSBkZWFkbG9jayBhdCBzaHV0ZG93biBpZiBhIGRhZW1vbiB0aHJlYWQgaXMgYWJvcnRlZAotICB3aGlsZSBpdCBpcyBob2xkaW5nIGEgbG9jayB0byBhIGJ1ZmZlcmVkIEkvTyBvYmplY3QsIGFuZCB0aGUgbWFpbiB0aHJlYWQKLSAgdHJpZXMgdG8gdXNlIHRoZSBzYW1lIEkvTyBvYmplY3QgKHR5cGljYWxseSBzdGRvdXQgb3Igc3RkZXJyKS4gIEEgZmF0YWwKLSAgZXJyb3IgaXMgZW1pdHRlZCBpbnN0ZWFkLgotCi0tIElzc3VlICMyMjk3NzogRml4ZWQgZm9ybWF0dGluZyBXaW5kb3dzIGVycm9yIG1lc3NhZ2VzIG9uIFdpbmUuCi0gIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCi0KLS0gSXNzdWUgIzIzODAzOiBGaXhlZCBzdHIucGFydGl0aW9uKCkgYW5kIHN0ci5ycGFydGl0aW9uKCkgd2hlbiBhIHNlcGFyYXRvcgotICBpcyB3aWRlciB0aGVuIHBhcnRpdGlvbmVkIHN0cmluZy4KLQotLSBJc3N1ZSAjMjMxOTI6IEZpeGVkIGdlbmVyYXRvciBsYW1iZGFzLiAgUGF0Y2ggYnkgQnJ1bm8gQ2F1ZXQuCi0KLS0gSXNzdWUgIzIzNjI5OiBGaXggdGhlIGRlZmF1bHQgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgdmFyaWFibGUtc2l6ZWQKLSAgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMjQwNDQ6IEZpeCBwb3NzaWJsZSBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gbGlzdC5zb3J0IGluIG91dCBvZgotICBtZW1vcnkgY29uZGl0aW9ucy4KLQotLSBJc3N1ZSAjMjEzNTQ6IFB5Q0Z1bmN0aW9uX05ldyBmdW5jdGlvbiBpcyBleHBvc2VkIGJ5IHB5dGhvbiBETEwgYWdhaW4uCi0KLUxpYnJhcnkKLS0tLS0tLS0KKy0gSXNzdWUgIzI1NzE3OiBSZXN0b3JlIHRoZSBwcmV2aW91cyBiZWhhdmlvdXIgb2YgdG9sZXJhdGluZyBtb3N0IGZzdGF0KCkKKyAgZXJyb3JzIHdoZW4gb3BlbmluZyBmaWxlcy4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBpbiAzLjVhMSwgYW5kIHN0b3BwZWQKKyAgYW5vbnltb3VzIHRlbXBvcmFyeSBmaWxlcyBmcm9tIHdvcmtpbmcgaW4gc3BlY2lhbCBjYXNlcy4KIAogLSBJc3N1ZSAjMjQ5MDM6IEZpeCByZWdyZXNzaW9uIGluIG51bWJlciBvZiBhcmd1bWVudHMgY29tcGlsZWFsbCBhY2NlcHRzIHdoZW4KICAgJy1kJyBpcyBzcGVjaWZpZWQuICBUaGUgY2hlY2sgb24gdGhlIG51bWJlciBvZiBhcmd1bWVudHMgaGFzIGJlZW4gZHJvcHBlZApAQCAtMTc1LDYgKzk1LDE1IEBACiAtIElzc3VlICM2NDc4OiBfc3RycHRpbWUncyByZWdleHAgY2FjaGUgbm93IGlzIHJlc2V0IGFmdGVyIGNoYW5naW5nIHRpbWV6b25lCiAgIHdpdGggdGltZS50enNldCgpLgogCistIElzc3VlICMxNDI4NTogV2hlbiBleGVjdXRpbmcgYSBwYWNrYWdlIHdpdGggdGhlICJweXRob24gLW0gcGFja2FnZSIgb3B0aW9uLAorICBhbmQgcGFja2FnZSBpbml0aWFsaXphdGlvbiBmYWlscywgYSBwcm9wZXIgdHJhY2ViYWNrIGlzIG5vdyByZXBvcnRlZC4gIFRoZQorICAicnVucHkiIG1vZHVsZSBub3cgbGV0cyBleGNlcHRpb25zIGZyb20gcGFja2FnZSBpbml0aWFsaXphdGlvbiBwYXNzIGJhY2sgdG8KKyAgdGhlIGNhbGxlciwgcmF0aGVyIHRoYW4gcmFpc2luZyBJbXBvcnRFcnJvci4KKworLSBJc3N1ZSAjMTk3NzE6IEFsc28gaW4gcnVucHkgYW5kIHRoZSAiLW0iIG9wdGlvbiwgb21pdCB0aGUgaXJyZWxldmFudAorICBtZXNzYWdlICIuIC4gLiBpcyBhIHBhY2thZ2UgYW5kIGNhbm5vdCBiZSBkaXJlY3RseSBleGVjdXRlZCIgaWYgdGhlIHBhY2thZ2UKKyAgY291bGQgbm90IGV2ZW4gYmUgaW5pdGlhbGl6ZWQgKGUuZy4gZHVlIHRvIGEgYmFkIGBgKi5weWNgYCBmaWxlKS4KKwogLSBJc3N1ZSAjMjUxNzc6IEZpeGVkIHByb2JsZW0gd2l0aCB0aGUgbWVhbiBvZiB2ZXJ5IHNtYWxsIGFuZCB2ZXJ5IGxhcmdlCiAgIG51bWJlcnMuIEFzIGEgc2lkZSBlZmZlY3QsIHN0YXRpc3RpY3MubWVhbiBhbmQgc3RhdGlzdGljcy52YXJpYW5jZSBzaG91bGQKICAgYmUgc2lnbmlmaWNhbnRseSBmYXN0ZXIuCkBAIC0xOTksNiArMTI4LDE0NCBAQAogLSBJc3N1ZSAjMjU2MjQ6IFppcEZpbGUgbm93IGFsd2F5cyB3cml0ZXMgYSBaSVBfU1RPUkVEIGhlYWRlciBmb3IgZGlyZWN0b3J5CiAgIGVudHJpZXMuICBQYXRjaCBieSBEaW5neXVhbiBXYW5nLgogCistIFNraXAgZ2V0YWRkcmluZm8gaWYgaG9zdCBpcyBhbHJlYWR5IHJlc29sdmVkLgorICBQYXRjaCBieSBBLiBKZXNzZSBKaXJ5dSBEYXZpcy4KKworLSBBZGQgYXN5bmNpby50aW1lb3V0KCkgY29udGV4dCBtYW5hZ2VyLgorCistIElzc3VlICMyNjA1MDogQWRkIGFzeW5jaW8uU3RyZWFtUmVhZGVyLnJlYWR1bnRpbCgpIG1ldGhvZC4KKyAgUGF0Y2ggYnkg0JzQsNGA0Log0JrQvtGA0LXQvdCx0LXRgNCzLgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI1NTAwOiBGaXggZG9jdW1lbnRhdGlvbiB0byBub3QgY2xhaW0gdGhhdCBfX2ltcG9ydF9fIGlzIHNlYXJjaGVkIGZvcgorICBpbiB0aGUgZ2xvYmFsIHNjb3BlLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjU5NDA6IENoYW5nZWQgdGVzdF9zc2wgdG8gdXNlIHNlbGYtc2lnbmVkLnB5dGhvbnRlc3QubmV0LiAgVGhpcworICBhdm9pZHMgcmVseWluZyBvbiBzdm4ucHl0aG9uLm9yZywgd2hpY2ggcmVjZW50bHkgY2hhbmdlZCByb290IGNlcnRpZmljYXRlLgorCistIElzc3VlICMyNTYxNjogVGVzdHMgZm9yIE9yZGVyZWREaWN0IGFyZSBleHRyYWN0ZWQgZnJvbSB0ZXN0X2NvbGxlY3Rpb25zCisgIGludG8gc2VwYXJhdGUgZmlsZSB0ZXN0X29yZGVyZWRfZGljdC4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzI1MzQ4OiBBZGRlZCBgYC0tcGdvYGAgYW5kIGBgLS1wZ28tam9iYGAgYXJndW1lbnRzIHRvCisgIGBgUENidWlsZFxidWlsZC5iYXRgYCBmb3IgYnVpbGRpbmcgd2l0aCBQcm9maWxlLUd1aWRlZCBPcHRpbWl6YXRpb24uICBUaGUKKyAgb2xkIGBgUENidWlsZFxidWlsZF9wZ28uYmF0YGAgc2NyaXB0IGlzIG5vdyBkZXByZWNhdGVkLCBhbmQgc2ltcGx5IGNhbGxzCisgIGBgUENidWlsZFxidWlsZC5iYXQgLS1wZ28gJSpgYC4KKworLSBJc3N1ZSAjMjU4Mjc6IEFkZCBzdXBwb3J0IGZvciBidWlsZGluZyB3aXRoIElDQyB0byBgYGNvbmZpZ3VyZWBgLCBpbmNsdWRpbmcKKyAgYSBuZXcgYGAtLXdpdGgtaWNjYGAgZmxhZy4KKworLSBJc3N1ZSAjMjU2OTY6IEZpeCBpbnN0YWxsYXRpb24gb2YgUHl0aG9uIG9uIFVOSVggd2l0aCBtYWtlIC1qOS4KKworLSBJc3N1ZSAjMjU3OTg6IFVwZGF0ZSBPUyBYIDEwLjUgaW5zdGFsbGVyIHRvIHVzZSBPcGVuU1NMIDEuMC4yZS4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMSBmaW5hbD8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWxlYXNlIGRhdGU6IDIwMTUtMTItMDYKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI1NzA5OiBGaXhlZCBwcm9ibGVtIHdpdGggaW4tcGxhY2Ugc3RyaW5nIGNvbmNhdGVuYXRpb24gYW5kCisgIHV0Zi04IGNhY2hlLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzI1NzE1OiBQeXRob24gMy41LjEgaW5zdGFsbGVyIHNob3dzIHdyb25nIHVwZ3JhZGUgcGF0aCBhbmQgaW5jb3JyZWN0CisgIGxvZ2ljIGZvciBsYXVuY2hlciBkZXRlY3Rpb24uCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjEgcmVsZWFzZSBjYW5kaWRhdGUgMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNS0xMS0yMgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjU2MzA6IEZpeCBhIHBvc3NpYmxlIHNlZ2ZhdWx0IGR1cmluZyBhcmd1bWVudCBwYXJzaW5nIGluIGZ1bmN0aW9ucworICB0aGF0IGFjY2VwdCBmaWxlc3lzdGVtIHBhdGhzLgorCistIElzc3VlICMyMzU2NDogRml4ZWQgYSBwYXJ0aWFsbHkgYnJva2VuIHNhbml0eSBjaGVjayBpbiB0aGUgX3Bvc2l4c3VicHJvY2VzcworICBpbnRlcm5hbHMgcmVnYXJkaW5nIGhvdyBmZHNfdG9fcGFzcyB3ZXJlIHBhc3NlZCB0byB0aGUgY2hpbGQuICBUaGUgYnVnIGhhZAorICBubyBhY3R1YWwgaW1wYWN0IGFzIHN1YnByb2Nlc3MucHkgYWxyZWFkeSBhdm9pZGVkIGl0LgorCistIElzc3VlICMyNTM4ODogRml4ZWQgdG9rZW5pemVyIGNyYXNoIHdoZW4gcHJvY2Vzc2luZyB1bmRlY29kYWJsZSBzb3VyY2UgY29kZQorICB3aXRoIGEgbnVsbCBieXRlLgorCistIElzc3VlICMyNTQ2MjogVGhlIGhhc2ggb2YgdGhlIGtleSBub3cgaXMgY2FsY3VsYXRlZCBvbmx5IG9uY2UgaW4gbW9zdAorICBvcGVyYXRpb25zIGluIEMgaW1wbGVtZW50YXRpb24gb2YgT3JkZXJlZERpY3QuCisKKy0gSXNzdWUgIzIyOTk1OiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIF9fcmVkdWNlX18gYW5kIF9fcmVkdWNlX2V4X18gbm93CisgIHJlamVjdHMgYnVpbHRpbiB0eXBlcyB3aXRoIG5vdCBkZWZpbmVkIF9fbmV3X18uCisKKy0gSXNzdWUgIzI1NTU1OiBGaXggcGFyc2VyIGFuZCBBU1Q6IGZpbGwgbGluZW5vIGFuZCBjb2xfb2Zmc2V0IG9mICJhcmciIG5vZGUKKyAgd2hlbiBjb21waWxpbmcgQVNUIGZyb20gUHl0aG9uIG9iamVjdHMuCisKKy0gSXNzdWUgIzI0ODAyOiBBdm9pZCBidWZmZXIgb3ZlcnJlYWRzIHdoZW4gaW50KCksIGZsb2F0KCksIGNvbXBpbGUoKSwgZXhlYygpCisgIGFuZCBldmFsKCkgYXJlIHBhc3NlZCBieXRlcy1saWtlIG9iamVjdHMuICBUaGVzZSBvYmplY3RzIGFyZSBub3QKKyAgbmVjZXNzYXJpbHkgdGVybWluYXRlZCBieSBhIG51bGwgYnl0ZSwgYnV0IHRoZSBmdW5jdGlvbnMgYXNzdW1lZCB0aGV5IHdlcmUuCisKKy0gSXNzdWUgIzI0NzI2OiBGaXhlZCBhIGNyYXNoIGFuZCBsZWFraW5nIE5VTEwgaW4gcmVwcigpIG9mIE9yZGVyZWREaWN0IHRoYXQKKyAgd2FzIG11dGF0ZWQgYnkgZGlyZWN0IGNhbGxzIG9mIGRpY3QgbWV0aG9kcy4KKworLSBJc3N1ZSAjMjU0NDk6IEl0ZXJhdGluZyBPcmRlcmVkRGljdCB3aXRoIGtleXMgd2l0aCB1bnN0YWJsZSBoYXNoIG5vdyByYWlzZXMKKyAgS2V5RXJyb3IgaW4gQyBpbXBsZW1lbnRhdGlvbnMgYXMgd2VsbCBhcyBpbiBQeXRob24gaW1wbGVtZW50YXRpb24uCisKKy0gSXNzdWUgIzI1Mzk1OiBGaXhlZCBjcmFzaCB3aGVuIGhpZ2hseSBuZXN0ZWQgT3JkZXJlZERpY3Qgc3RydWN0dXJlcyB3ZXJlCisgIGdhcmJhZ2UgY29sbGVjdGVkLgorCistIElzc3VlICMyNTI3NDogc3lzLnNldHJlY3Vyc2lvbmxpbWl0KCkgbm93IHJhaXNlcyBhIFJlY3Vyc2lvbkVycm9yIGlmIHRoZSBuZXcKKyAgcmVjdXJzaW9uIGxpbWl0IGlzIHRvbyBsb3cgZGVwZW5kaW5nIGF0IHRoZSBjdXJyZW50IHJlY3Vyc2lvbiBkZXB0aC4gTW9kaWZ5CisgIGFsc28gdGhlICJsb3dlci13YXRlciBtYXJrIiBmb3JtdWxhIHRvIG1ha2UgaXQgbW9ub3RvbmljLiBUaGlzIG1hcmsgaXMgdXNlZAorICB0byBkZWNpZGUgd2hlbiB0aGUgb3ZlcmZsb3dlZCBmbGFnIG9mIHRoZSB0aHJlYWQgc3RhdGUgaXMgcmVzZXQuCisKKy0gSXNzdWUgIzI0NDAyOiBGaXggaW5wdXQoKSB0byBwcm9tcHQgdG8gdGhlIHJlZGlyZWN0ZWQgc3Rkb3V0IHdoZW4KKyAgc3lzLnN0ZG91dC5maWxlbm8oKSBmYWlscy4KKworLSBJc3N1ZSAjMjQ4MDY6IFByZXZlbnQgYnVpbHRpbiB0eXBlcyB0aGF0IGFyZSBub3QgYWxsb3dlZCB0byBiZSBzdWJjbGFzc2VkIGZyb20KKyAgYmVpbmcgc3ViY2xhc3NlZCB0aHJvdWdoIG11bHRpcGxlIGluaGVyaXRhbmNlLgorCistIElzc3VlICMyNDg0ODogRml4ZWQgYSBudW1iZXIgb2YgYnVncyBpbiBVVEYtNyBkZWNvZGluZyBvZiBtaXNmb3JtZWQgZGF0YS4KKworLSBJc3N1ZSAjMjUyODA6IEltcG9ydCB0cmFjZSBtZXNzYWdlcyBlbWl0dGVkIGluIHZlcmJvc2UgKC12KSBtb2RlIGFyZSBubworICBsb25nZXIgZm9ybWF0dGVkIHR3aWNlLgorCistIElzc3VlICMyNTAwMzogT24gU29sYXJpcyAxMS4zIG9yIG5ld2VyLCBvcy51cmFuZG9tKCkgbm93IHVzZXMgdGhlCisgIGdldHJhbmRvbSgpIGZ1bmN0aW9uIGluc3RlYWQgb2YgdGhlIGdldGVudHJvcHkoKSBmdW5jdGlvbi4gVGhlIGdldGVudHJvcHkoKQorICBmdW5jdGlvbiBpcyBibG9ja2luZyB0byBnZW5lcmF0ZSB2ZXJ5IGdvb2QgcXVhbGl0eSBlbnRyb3B5LCBvcy51cmFuZG9tKCkKKyAgZG9lc24ndCBuZWVkIHN1Y2ggaGlnaC1xdWFsaXR5IGVudHJvcHkuCisKKy0gSXNzdWUgIzI1MTgyOiBUaGUgc3RkcHJpbnRlciAodXNlZCBhcyBzeXMuc3RkZXJyIGJlZm9yZSB0aGUgaW8gbW9kdWxlIGlzCisgIGltcG9ydGVkIGF0IHN0YXJ0dXApIG5vdyB1c2VzIHRoZSBiYWNrc2xhc2hyZXBsYWNlIGVycm9yIGhhbmRsZXIuCisKKy0gSXNzdWUgIzI1MTMxOiBNYWtlIHRoZSBsaW5lIG51bWJlciBhbmQgY29sdW1uIG9mZnNldCBvZiBzZXQvZGljdCBsaXRlcmFscyBhbmQKKyAgY29tcHJlaGVuc2lvbnMgY29ycmVzcG9uZCB0byB0aGUgb3BlbmluZyBicmFjZS4KKworLSBJc3N1ZSAjMjUxNTA6IEhpZGUgdGhlIHByaXZhdGUgX1B5X2F0b21pY194eHggc3ltYm9scyBmcm9tIHRoZSBwdWJsaWMKKyAgUHl0aG9uLmggaGVhZGVyIHRvIGZpeCBhIGNvbXBpbGF0aW9uIGVycm9yIHdpdGggT3Blbk1QLiBQeVRocmVhZFN0YXRlX0dFVCgpCisgIGJlY29tZXMgYW4gYWxpYXMgdG8gUHlUaHJlYWRTdGF0ZV9HZXQoKSB0byBhdm9pZCBBQkkgaW5jb21wYXRpYmlsaWVzLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzI1NjI2OiBDaGFuZ2UgdGhyZWUgemxpYiBmdW5jdGlvbnMgdG8gYWNjZXB0IHNpemVzIHRoYXQgZml0IGluCisgIFB5X3NzaXplX3QsIGJ1dCBpbnRlcm5hbGx5IGNhcCB0aG9zZSBzaXplcyB0byBVSU5UX01BWC4gIFRoaXMgcmVzb2x2ZXMgYQorICByZWdyZXNzaW9uIGluIDMuNSB3aGVyZSBHemlwRmlsZS5yZWFkKCkgZmFpbGVkIHRvIHJlYWQgY2h1bmtzIGxhcmdlciB0aGFuIDIKKyAgb3IgNCBHaUIuICBUaGUgY2hhbmdlIGFmZmVjdHMgdGhlIHpsaWIuRGVjb21wcmVzcy5kZWNvbXByZXNzKCkgbWF4X2xlbmd0aAorICBwYXJhbWV0ZXIsIHRoZSB6bGliLmRlY29tcHJlc3MoKSBidWZzaXplIHBhcmFtZXRlciwgYW5kIHRoZQorICB6bGliLkRlY29tcHJlc3MuZmx1c2goKSBsZW5ndGggcGFyYW1ldGVyLgorCiAtIElzc3VlICMyNTU4MzogQXZvaWQgaW5jb3JyZWN0IGVycm9ycyByYWlzZWQgYnkgb3MubWFrZWRpcnMoZXhpc3Rfb2s9VHJ1ZSkKICAgd2hlbiB0aGUgT1MgZ2l2ZXMgcHJpb3JpdHkgdG8gZXJyb3JzIHN1Y2ggYXMgRUFDQ0VTIG92ZXIgRUVYSVNULgogCkBAIC0yMDgsMzkgKzI3NSw2NSBAQAogICBub3QgYWxsb3cgdGhlIHNlbmRfc2lnbmFsKCksIHRlcm1pbmF0ZSgpLCBvciBraWxsKCkgbWV0aG9kcyB0byBkbwogICBhbnl0aGluZyBhcyB0aGV5IGNvdWxkIHBvdGVudGlhbGx5IHNpZ25hbCBhIGRpZmZlcmVudCBwcm9jZXNzLgogCi0tIElzc3VlICMyNTU3ODogRml4IChhbm90aGVyKSBtZW1vcnkgbGVhayBpbiBTU0xTb2NrZXQuZ2V0cGVlcmNlcigpLgotCiAtIElzc3VlICMyNTU5MDogSW4gdGhlIFJlYWRsaW5lIGNvbXBsZXRlciwgb25seSBjYWxsIGdldGF0dHIoKSBvbmNlIHBlcgogICBhdHRyaWJ1dGUuCiAKIC0gSXNzdWUgIzI1NDk4OiBGaXggYSBjcmFzaCB3aGVuIGdhcmJhZ2UtY29sbGVjdGluZyBjdHlwZXMgb2JqZWN0cyBjcmVhdGVkCi0gIGJ5IHdyYXBwaW5nIGEgbWVtb3J5dmlldy4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBtYWRlIGluIDMuNC4zLiAgQmFzZWQKKyAgYnkgd3JhcHBpbmcgYSBtZW1vcnl2aWV3LiAgVGhpcyB3YXMgYSByZWdyZXNzaW9uIG1hZGUgaW4gMy41YTEuICBCYXNlZAogICBvbiBwYXRjaCBieSBFcnlrc3VuLgogCistIElzc3VlICMyNTU4NDogQWRkZWQgImVzY2FwZSIgdG8gdGhlIF9fYWxsX18gbGlzdCBpbiB0aGUgZ2xvYiBtb2R1bGUuCisKKy0gSXNzdWUgIzI1NTg0OiBGaXhlZCByZWN1cnNpdmUgZ2xvYigpIHdpdGggcGF0dGVybnMgc3RhcnRpbmcgd2l0aCAnXCpcKicuCisKKy0gSXNzdWUgIzI1NDQ2OiBGaXggcmVncmVzc2lvbiBpbiBzbXRwbGliJ3MgQVVUSCBMT0dJTiBzdXBwb3J0LgorCiAtIElzc3VlICMxODAxMDogRml4IHRoZSBweWRvYyB3ZWIgc2VydmVyJ3MgbW9kdWxlIHNlYXJjaCBmdW5jdGlvbiB0byBoYW5kbGUKICAgZXhjZXB0aW9ucyBmcm9tIGltcG9ydGluZyBwYWNrYWdlcy4KIAorLSBJc3N1ZSAjMjU1NTQ6IEdvdCByaWQgb2YgY2lyY3VsYXIgcmVmZXJlbmNlcyBpbiByZWd1bGFyIGV4cHJlc3Npb24gcGFyc2luZy4KKwogLSBJc3N1ZSAjMjU1MTA6IGZpbGVpbnB1dC5GaWxlSW5wdXQucmVhZGxpbmUoKSBub3cgcmV0dXJucyBiJycgaW5zdGVhZCBvZiAnJwogICBhdCB0aGUgZW5kIGlmIHRoZSBGaWxlSW5wdXQgd2FzIG9wZW5lZCB3aXRoIGJpbmFyeSBtb2RlLgogICBQYXRjaCBieSBSeW9zdWtlIEl0by4KIAotLSBJc3N1ZSAjMjU1MzA6IERpc2FibGUgdGhlIHZ1bG5lcmFibGUgU1NMdjMgcHJvdG9jb2wgYnkgZGVmYXVsdCB3aGVuIGNyZWF0aW5nCi0gIHNzbC5TU0xDb250ZXh0LgorLSBJc3N1ZSAjMjU1MDM6IEZpeGVkIGluc3BlY3QuZ2V0ZG9jKCkgZm9yIGluaGVyaXRlZCBkb2NzdHJpbmdzIG9mIHByb3BlcnRpZXMuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IEpvaG4gTWFyayBWYW5kZW5iZXJnLgogCi0tIElzc3VlICMyNTU2OTogRml4IG1lbW9yeSBsZWFrIGluIFNTTFNvY2tldC5nZXRwZWVyY2VydCgpLgorLSBJc3N1ZSAjMjU1MTU6IEFsd2F5cyB1c2Ugb3MudXJhbmRvbSBhcyBhIHNvdXJjZSBvZiByYW5kb21uZXNzIGluIHV1aWQudXVpZDQuCiAKIC0gSXNzdWUgIzIxODI3OiBGaXhlZCB0ZXh0d3JhcC5kZWRlbnQoKSBmb3IgdGhlIGNhc2Ugd2hlbiBsYXJnZXN0IGNvbW1vbgogICB3aGl0ZXNwYWNlIGlzIGEgc3Vic3RyaW5nIG9mIHNtYWxsZXN0IGxlYWRpbmcgd2hpdGVzcGFjZS4KICAgQmFzZWQgb24gcGF0Y2ggYnkgUm9iZXJ0IExpLgogCi0tIElzc3VlICMyNTQ3MTogU29ja2V0cyByZXR1cm5lZCBmcm9tIGFjY2VwdCgpIHNob3VsZG4ndCBhcHBlYXIgdG8gYmUKLSAgbm9uYmxvY2tpbmcuCistIElzc3VlICMyNTQ0NzogVGhlIGxydV9jYWNoZSgpIHdyYXBwZXIgb2JqZWN0cyBub3cgY2FuIGJlIGNvcGllZCBhbmQgcGlja2xlZAorICAoYnkgcmV0dXJuaW5nIHRoZSBvcmlnaW5hbCBvYmplY3QgdW5jaGFuZ2VkKS4KKworLSBJc3N1ZSAjMjUzOTA6IHR5cGluZzogRG9uJ3QgY3Jhc2ggb24gVW5pb25bc3RyLCBQYXR0ZXJuXS4KIAogLSBJc3N1ZSAjMjU0NDE6IGFzeW5jaW86IFJhaXNlIGVycm9yIGZyb20gZHJhaW4oKSB3aGVuIHNvY2tldCBpcyBjbG9zZWQuCiAKKy0gSXNzdWUgIzI1NDEwOiBDbGVhbmVkIHVwIGFuZCBmaXhlZCBtaW5vciBidWdzIGluIEMgaW1wbGVtZW50YXRpb24gb2YKKyAgT3JkZXJlZERpY3QuCisKIC0gSXNzdWUgIzI1NDExOiBJbXByb3ZlZCBVbmljb2RlIHN1cHBvcnQgaW4gU01UUEhhbmRsZXIgdGhyb3VnaCBiZXR0ZXIgdXNlIG9mCiAgIHRoZSBlbWFpbCBwYWNrYWdlLiBUaGFua3MgdG8gdXNlciBzaW1vbjA0IGZvciB0aGUgcGF0Y2guCiAKKy0gSXNzdWUgIzI1NDA3OiBSZW1vdmUgbWVudGlvbnMgb2YgdGhlIGZvcm1hdHRlciBtb2R1bGUgYmVpbmcgcmVtb3ZlZCBpbgorICBQeXRob24gMy42LgorCistIElzc3VlICMyNTQwNjogRml4ZWQgYSBidWcgaW4gQyBpbXBsZW1lbnRhdGlvbiBvZiBPcmRlcmVkRGljdC5tb3ZlX3RvX2VuZCgpCisgIHRoYXQgY2F1c2VkIHNlZ21lbnRhdGlvbiBmYXVsdCBvciBoYW5nIGluIGl0ZXJhdGluZyBhZnRlciBtb3Zpbmcgc2V2ZXJhbAorICBpdGVtcyB0byB0aGUgc3RhcnQgb2Ygb3JkZXJlZCBkaWN0LgorCistIElzc3VlICMyNTM2NDogemlwZmlsZSBub3cgd29ya3MgaW4gdGhyZWFkcyBkaXNhYmxlZCBidWlsZHMuCisKKy0gSXNzdWUgIzI1MzI4OiBzbXRwZCdzIFNNVFBDaGFubmVsIG5vdyBjb3JyZWN0bHkgcmFpc2VzIGEgVmFsdWVFcnJvciBpZiBib3RoCisgIGRlY29kZV9kYXRhIGFuZCBlbmFibGVfU01UUFVURjggYXJlIHNldCB0byB0cnVlLgorCistIElzc3VlICMyNTMxNjogZGlzdHV0aWxzIHJhaXNlcyBPU0Vycm9yIGluc3RlYWQgb2YgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcgorICB3aGVuIE1TVkMgaXMgbm90IGluc3RhbGxlZC4KKwogLSBJc3N1ZSAjMjUzODA6IEZpeGVkIHByb3RvY29sIGZvciB0aGUgU1RBQ0tfR0xPQkFMIG9wY29kZSBpbgogICBwaWNrbGV0b29scy5vcGNvZGVzLgogCkBAIC0yNTQsMjEgKzM0NywyMyBAQAogICBzdWJtaXQgYSBjb3JvdXRpbmUgdG8gYSBsb29wIGZyb20gYW5vdGhlciB0aHJlYWQsIHJldHVybmluZyBhCiAgIGNvbmN1cnJlbnQuZnV0dXJlcy5GdXR1cmUuICBCeSBWaW5jZW50IE1pY2hlbC4KIAotLSBJc3N1ZSAjMjUzMTk6IFdoZW4gdGhyZWFkaW5nLkV2ZW50IGlzIHJlaW5pdGlhbGl6ZWQsIHRoZSB1bmRlcmx5aW5nIGNvbmRpdGlvbgotICBzaG91bGQgdXNlIGEgcmVndWxhciBsb2NrIHJhdGhlciB0aGFuIGEgcmVjdXJzaXZlIGxvY2suCi0KIC0gSXNzdWUgIzI1MjMyOiBGaXggQ0dJUmVxdWVzdEhhbmRsZXIgdG8gc3BsaXQgdGhlIHF1ZXJ5IGZyb20gdGhlIFVSTCBhdCB0aGUKICAgZmlyc3QgcXVlc3Rpb24gbWFyayAoPykgcmF0aGVyIHRoYW4gdGhlIGxhc3QuIFBhdGNoIGZyb20gWGlhbmcgWmhhbmcuCiAKIC0gSXNzdWUgIzI0NjU3OiBQcmV2ZW50IENHSVJlcXVlc3RIYW5kbGVyIGZyb20gY29sbGFwc2luZyBzbGFzaGVzIGluIHRoZQogICBxdWVyeSBwYXJ0IG9mIHRoZSBVUkwgYXMgaWYgaXQgd2VyZSBhIHBhdGguIFBhdGNoIGZyb20gWGlhbmcgWmhhbmcuCiAKKy0gSXNzdWUgIzI0NDgzOiBDIGltcGxlbWVudGF0aW9uIG9mIGZ1bmN0b29scy5scnVfY2FjaGUoKSBub3cgY2FsY3VsYXRlcyBrZXkncworICBoYXNoIG9ubHkgb25jZS4KKwogLSBJc3N1ZSAjMjI5NTg6IENvbnN0cnVjdG9yIGFuZCB1cGRhdGUgbWV0aG9kIG9mIHdlYWtyZWYuV2Vha1ZhbHVlRGljdGlvbmFyeQogICBub3cgYWNjZXB0IHRoZSBzZWxmIGFuZCB0aGUgZGljdCBrZXl3b3JkIGFyZ3VtZW50cy4KIAogLSBJc3N1ZSAjMjI2MDk6IENvbnN0cnVjdG9yIG9mIGNvbGxlY3Rpb25zLlVzZXJEaWN0IG5vdyBhY2NlcHRzIHRoZSBzZWxmIGtleXdvcmQKICAgYXJndW1lbnQuCiAKKy0gSXNzdWUgIzI1MTExOiBGaXhlZCBjb21wYXJpc29uIG9mIHRyYWNlYmFjay5GcmFtZVN1bW1hcnkuCisKIC0gSXNzdWUgIzI1MjYyLiBBZGRlZCBzdXBwb3J0IGZvciBCSU5CWVRFUzggb3Bjb2RlIGluIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZgogICB1bnBpY2tsZXIuICBIaWdoZXN0IDMyIGJpdHMgb2YgNjQtYml0IHNpemUgZm9yIEJJTlVOSUNPREU4IGFuZCBCSU5CWVRFUzgKICAgb3Bjb2RlcyBubyBsb25nZXIgc2lsZW50bHkgaWdub3JlZCBvbiAzMi1iaXQgcGxhdGZvcm1zIGluIEMgaW1wbGVtZW50YXRpb24uCkBAIC0yNzksMTEgKzM3NCwxNCBAQAogLSBJc3N1ZSAjMjUyMzM6IFJld3JpdGUgdGhlIGd1dHMgb2YgYXN5bmNpby5RdWV1ZSBhbmQKICAgYXN5bmNpby5TZW1hcGhvcmUgdG8gYmUgbW9yZSB1bmRlcnN0YW5kYWJsZSBhbmQgY29ycmVjdC4KIAorLSBJc3N1ZSAjMjUyMDM6IEZhaWxlZCByZWFkbGluZS5zZXRfY29tcGxldGVyX2RlbGltcygpIG5vIGxvbmdlciBsZWZ0IHRoZQorICBtb2R1bGUgaW4gaW5jb25zaXN0ZW50IHN0YXRlLgorCiAtIElzc3VlICMyMzYwMDogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB0emluZm8uZnJvbXV0YygpIHdhcyByZXR1cm5pbmcKICAgd3JvbmcgcmVzdWx0cyBpbiBzb21lIGNhc2VzLgogCi0tIElzc3VlICMyNTIwMzogRmFpbGVkIHJlYWRsaW5lLnNldF9jb21wbGV0ZXJfZGVsaW1zKCkgbm8gbG9uZ2VyIGxlZnQgdGhlCi0gIG1vZHVsZSBpbiBpbmNvbnNpc3RlbnQgc3RhdGUuCistIElzc3VlICMyMzMyOTogQWxsb3cgdGhlIHNzbCBtb2R1bGUgdG8gYmUgYnVpbHQgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZgorICBMaWJyZVNTTC4KIAogLSBQcmV2ZW50IG92ZXJmbG93IGluIF9VbnBpY2tsZXJfUmVhZC4KIApAQCAtMjkxLDM2NyArMzg5LDEwMyBAQAogICByZXNwZWN0cyB0aGUgbGV0dGVyIGNhc2UgZ2l2ZW4gYnkgdGhlIHVzZXIuIFRoaXMgcmVzdG9yZXMgdGhlIGFiaWxpdHkgdG8KICAgd3JpdGUgZW5jb2RpbmcgbmFtZXMgaW4gdXBwZXJjYXNlIGxpa2UgIlVURi04Iiwgd2hpY2ggd29ya2VkIGluIFB5dGhvbiAyLgogCistIElzc3VlICMyNTEzNTogTWFrZSBkZXF1ZV9jbGVhcigpIHNhZmVyIGJ5IGVtcHR5aW5nIHRoZSBkZXF1ZSBiZWZvcmUgY2xlYXJpbmcuCisgIFRoaXMgaGVscHMgYXZvaWQgcG9zc2libGUgcmVlbnRyYW5jeSBpc3N1ZXMuCisKIC0gSXNzdWUgIzE5MTQzOiBwbGF0Zm9ybSBtb2R1bGUgbm93IHJlYWRzIFdpbmRvd3MgdmVyc2lvbiBmcm9tIGtlcm5lbDMyLmRsbCB0bwogICBhdm9pZCBjb21wYXRpYmlsaXR5IHNoaW1zLgogCistIElzc3VlICMyNTA5MjogRml4IGRhdGV0aW1lLnN0cmZ0aW1lKCkgZmFpbHVyZSB3aGVuIGVycm5vIHdhcyBhbHJlYWR5IHNldCB0bworICBFSU5WQUwuCisKIC0gSXNzdWUgIzIzNTE3OiBGaXggcm91bmRpbmcgaW4gZnJvbXRpbWVzdGFtcCgpIGFuZCB1dGNmcm9tdGltZXN0YW1wKCkgbWV0aG9kcwogICBvZiBkYXRldGltZS5kYXRldGltZTogbWljcm9zZWNvbmRzIGFyZSBub3cgcm91bmRlZCB0byBuZWFyZXN0IHdpdGggdGllcwogICBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlciAoUk9VTkRfSEFMRl9FVkVOKSwgaW5zdGVhZCBvZiBiZWluZyByb3VuZGluZwotICB0b3dhcmRzIHplcm8gKFJPVU5EX0RPV04pLiBJdCdzIGltcG9ydGFudCB0aGF0IHRoZXNlIG1ldGhvZHMgdXNlIHRoZSBzYW1lCi0gIHJvdW5kaW5nIG1vZGUgdGhhbiBkYXRldGltZS50aW1lZGVsdGEgdG8ga2VlcCB0aGUgcHJvcGVydHk6CisgIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKFJPVU5EX0ZMT09SKS4gSXQncyBpbXBvcnRhbnQgdGhhdCB0aGVzZSBtZXRob2RzIHVzZQorICB0aGUgc2FtZSByb3VuZGluZyBtb2RlIHRoYW4gZGF0ZXRpbWUudGltZWRlbHRhIHRvIGtlZXAgdGhlIHByb3BlcnR5OgogICAoZGF0ZXRpbWUoMTk3MCwxLDEpICsgdGltZWRlbHRhKHNlY29uZHM9dCkpID09IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodCkuCiAgIEl0IGFsc28gdGhlIHJvdW5kaW5nIG1vZGUgdXNlZCBieSByb3VuZChmbG9hdCkgZm9yIGV4YW1wbGUuCiAKKy0gSXNzdWUgIzI1MTU1OiBGaXggZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkgYW5kIGRhdGV0aW1lLmRhdGV0aW1lLnV0Y25vdygpIG9uCisgIFdpbmRvd3MgdG8gc3VwcG9ydCBkYXRlIGFmdGVyIHllYXIgMjAzOC4gSXQgd2FzIGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGluCisgIFB5dGhvbiAzLjUuMC4KKworLSBJc3N1ZSAjMjUxMDg6IE9taXR0ZWQgaW50ZXJuYWwgZnJhbWVzIGluIHRyYWNlYmFjayBmdW5jdGlvbnMgcHJpbnRfc3RhY2soKSwKKyAgZm9ybWF0X3N0YWNrKCksIGFuZCBleHRyYWN0X3N0YWNrKCkgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLgorCistIElzc3VlICMyNTExODogRml4IGEgcmVncmVzc2lvbiBvZiBQeXRob24gMy41LjAgaW4gb3Mud2FpdHBpZCgpIG9uIFdpbmRvd3MuCisKIC0gSXNzdWUgIzI0Njg0OiBzb2NrZXQuc29ja2V0LmdldGFkZHJpbmZvKCkgbm93IGNhbGxzCiAgIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKSBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhlIGVuY29kZSgpIG1ldGhvZCBvZiB0aGUKICAgaG9zdCwgdG8gaGFuZGxlIGNvcnJlY3RseSBjdXN0b20gc3RyaW5nIHdpdGggYW4gZW5jb2RlKCkgbWV0aG9kIHdoaWNoIGRvZXNuJ3QKICAgcmV0dXJuIGEgYnl0ZSBzdHJpbmcuIFRoZSBlbmNvZGVyIG9mIHRoZSBJRE5BIGNvZGVjIGlzIG5vdyBjYWxsZWQgZGlyZWN0bHkKICAgaW5zdGVhZCBvZiBjYWxsaW5nIHRoZSBlbmNvZGUoKSBtZXRob2Qgb2YgdGhlIHN0cmluZy4KIAotLSBJc3N1ZSAjMjQ5ODI6IHNodXRpbC5tYWtlX2FyY2hpdmUoKSB3aXRoIHRoZSAiemlwIiBmb3JtYXQgbm93IGFkZHMgZW50cmllcwotICBmb3IgZGlyZWN0b3JpZXMgKGluY2x1ZGluZyBlbXB0eSBkaXJlY3RvcmllcykgaW4gWklQIGZpbGUuCistIElzc3VlICMyNTA2MDogQ29ycmVjdGx5IGNvbXB1dGUgc3RhY2sgdXNhZ2Ugb2YgdGhlIEJVSUxEX01BUCBvcGNvZGUuCiAKIC0gSXNzdWUgIzI0ODU3OiBDb21wYXJpbmcgY2FsbF9hcmdzIHRvIGEgbG9uZyBzZXF1ZW5jZSBub3cgY29ycmVjdGx5IHJldHVybnMgYQogICBib29sZWFuIHJlc3VsdCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXhjZXB0aW9uLiAgUGF0Y2ggYnkgQSBLYXB0dXIuCiAKLS0gSXNzdWUgIzI1MDE5OiBGaXhlZCBhIGNyYXNoIGNhdXNlZCBieSBzZXR0aW5nIG5vbi1zdHJpbmcga2V5IG9mIGV4cGF0IHBhcnNlci4KLSAgQmFzZWQgb24gcGF0Y2ggYnkgSm9obiBMZWl0Y2guCi0KLS0gSXNzdWUgIzI0OTE3OiB0aW1lX3N0cmZ0aW1lKCkgYnVmZmVyIG92ZXItcmVhZC4KLQogLSBJc3N1ZSAjMjMxNDQ6IE1ha2Ugc3VyZSB0aGF0IEhUTUxQYXJzZXIuZmVlZCgpIHJldHVybnMgYWxsIHRoZSBkYXRhLCBldmVuCiAgIHdoZW4gY29udmVydF9jaGFycmVmcyBpcyBUcnVlLgogCistIElzc3VlICMyNDk4Mjogc2h1dGlsLm1ha2VfYXJjaGl2ZSgpIHdpdGggdGhlICJ6aXAiIGZvcm1hdCBub3cgYWRkcyBlbnRyaWVzCisgIGZvciBkaXJlY3RvcmllcyAoaW5jbHVkaW5nIGVtcHR5IGRpcmVjdG9yaWVzKSBpbiBaSVAgZmlsZS4KKworLSBJc3N1ZSAjMjUwMTk6IEZpeGVkIGEgY3Jhc2ggY2F1c2VkIGJ5IHNldHRpbmcgbm9uLXN0cmluZyBrZXkgb2YgZXhwYXQgcGFyc2VyLgorICBCYXNlZCBvbiBwYXRjaCBieSBKb2huIExlaXRjaC4KKwogLSBJc3N1ZSAjMTYxODA6IEV4aXQgcGRiIGlmIGZpbGUgaGFzIHN5bnRheCBlcnJvciwgaW5zdGVhZCBvZiB0cmFwcGluZyB1c2VyCiAgIGluIGFuIGluZmluaXRlIGxvb3AuICBQYXRjaCBieSBYYXZpZXIgZGUgR2F5ZS4KIAorLSBJc3N1ZSAjMjQ4OTE6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGF0IFB5dGhvbiBzdGFydHVwIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3IKKyAgb2Ygc3RkaW4gKDApLCBzdGRvdXQgKDEpIG9yIHN0ZGVyciAoMikgaXMgY2xvc2VkIHdoaWxlIFB5dGhvbiBpcyBjcmVhdGluZworICBzeXMuc3RkaW4sIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgb2JqZWN0cy4gVGhlc2UgYXR0cmlidXRlcyBhcmUgbm93IHNldAorICB0byBOb25lIGlmIHRoZSBjcmVhdGlvbiBvZiB0aGUgb2JqZWN0IGZhaWxlZCwgaW5zdGVhZCBvZiByYWlzaW5nIGFuIE9TRXJyb3IKKyAgZXhjZXB0aW9uLiBJbml0aWFsIHBhdGNoIHdyaXR0ZW4gYnkgTWFyY28gUGFvbGluaS4KKworLSBJc3N1ZSAjMjQ5OTI6IEZpeCBlcnJvciBoYW5kbGluZyBhbmQgYSByYWNlIGNvbmRpdGlvbiAocmVsYXRlZCB0byBnYXJiYWdlCisgIGNvbGxlY3Rpb24pIGluIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IGNvbnN0cnVjdG9yLgorCistIElzc3VlICMyNDg4MTogRml4ZWQgc2V0dGluZyBiaW5hcnkgbW9kZSBpbiBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgRmlsZUlPCisgIG9uIFdpbmRvd3MgYW5kIEN5Z3dpbi4gIFBhdGNoIGZyb20gQWtpcmEgTGkuCisKKy0gSXNzdWUgIzI1NTc4OiBGaXggKGFub3RoZXIpIG1lbW9yeSBsZWFrIGluIFNTTFNvY2tldC5nZXRwZWVyY2VyKCkuCisKKy0gSXNzdWUgIzI1NTMwOiBEaXNhYmxlIHRoZSB2dWxuZXJhYmxlIFNTTHYzIHByb3RvY29sIGJ5IGRlZmF1bHQgd2hlbiBjcmVhdGluZworICBzc2wuU1NMQ29udGV4dC4KKworLSBJc3N1ZSAjMjU1Njk6IEZpeCBtZW1vcnkgbGVhayBpbiBTU0xTb2NrZXQuZ2V0cGVlcmNlcnQoKS4KKworLSBJc3N1ZSAjMjU0NzE6IFNvY2tldHMgcmV0dXJuZWQgZnJvbSBhY2NlcHQoKSBzaG91bGRuJ3QgYXBwZWFyIHRvIGJlCisgIG5vbmJsb2NraW5nLgorCistIElzc3VlICMyNTMxOTogV2hlbiB0aHJlYWRpbmcuRXZlbnQgaXMgcmVpbml0aWFsaXplZCwgdGhlIHVuZGVybHlpbmcgY29uZGl0aW9uCisgIHNob3VsZCB1c2UgYSByZWd1bGFyIGxvY2sgcmF0aGVyIHRoYW4gYSByZWN1cnNpdmUgbG9jay4KKwogLSBJc3N1ZSAjMjExMTI6IEZpeCByZWdyZXNzaW9uIGluIHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZSBvbiBzdWJjbGFzc2VzLgogICBQYXRjaCBmcm9tIEJlcmtlciBQZWtzYWcuCiAKLS0gSXNzdWUgIzI0OTMxOiBJbnN0YW5jZXMgb2Ygc3ViY2xhc3NlcyBvZiBuYW1lZHR1cGxlcyBoYXZlIHRoZWlyIG93biBfX2RpY3RfXwotICB3aGljaCBicmVha3MgdGhlIGluaGVyaXRlZCBfX2RpY3RfXyBwcm9wZXJ0eSBhbmQgYnJlYWtzIHRoZSBfYXNkaWN0KCkgbWV0aG9kLgotICBSZW1vdmVkIHRoZSBfX2RpY3RfXyBwcm9wZXJ0eSB0byBwcmV2ZW50IHRoZSBjb25mbGljdCBhbmQgZml4ZWQgX2FzZGljdCgpLgotCiAtIElzc3VlICMyNDc2NDogY2dpLkZpZWxkU3RvcmFnZS5yZWFkX211bHRpKCkgbm93IGlnbm9yZXMgdGhlIENvbnRlbnQtTGVuZ3RoCiAgIGhlYWRlciBpbiBwYXJ0IGhlYWRlcnMuIFBhdGNoIHdyaXR0ZW4gYnkgUGV0ZXIgTGFuZHJ5IGFuZCByZXZpZXdlZCBieSBQaWVycmUKICAgUXVlbnRlbC4KIAorLSBJc3N1ZSAjMjQ5MTM6IEZpeCBvdmVycnVuIGVycm9yIGluIGRlcXVlLmluZGV4KCkuCisgIEZvdW5kIGJ5IEpvaG4gTGVpdGNoIGFuZCBCcnljZSBEYXJsaW5nLgorCiAtIElzc3VlICMyNDc3NDogRml4IGRvY3N0cmluZyBpbiBodHRwLnNlcnZlci50ZXN0LiBQYXRjaCBmcm9tIENoaXUtSHNpYW5nIEhzdS4KIAogLSBJc3N1ZSAjMjExNTk6IEltcHJvdmUgbWVzc2FnZSBpbiBjb25maWdwYXJzZXIuSW50ZXJwb2xhdGlvbk1pc3NpbmdPcHRpb25FcnJvci4KICAgUGF0Y2ggZnJvbSDFgXVrYXN6IExhbmdhLgogCi0tIElzc3VlICMyMzg4ODogSGFuZGxlIGZyYWN0aW9uYWwgdGltZSBpbiBjb29raWUgZXhwaXJ5LiBQYXRjaCBieSBzc2guCi0KLS0gSXNzdWUgIzIzMDA0OiBtb2NrX29wZW4oKSBub3cgcmVhZHMgYmluYXJ5IGRhdGEgY29ycmVjdGx5IHdoZW4gdGhlIHR5cGUgb2YKLSAgcmVhZF9kYXRhIGlzIGJ5dGVzLiAgSW5pdGlhbCBwYXRjaCBieSBBYXJvbiBIaWxsLgotCi0tIElzc3VlICMyMzY1MjogTWFrZSBpdCBwb3NzaWJsZSB0byBjb21waWxlIHRoZSBzZWxlY3QgbW9kdWxlIGFnYWluc3QgdGhlCi0gIGxpYmMgaGVhZGVycyBmcm9tIHRoZSBMaW51eCBTdGFuZGFyZCBCYXNlLCB3aGljaCBkbyBub3QgaW5jbHVkZSBzb21lCi0gIEVQT0xMIG1hY3Jvcy4gIFBhdGNoIGJ5IE1hdHQgRnJhbmsuCi0KLS0gSXNzdWUgIzIyOTMyOiBGaXggdGltZXpvbmVzIGluIGVtYWlsLnV0aWxzLmZvcm1hdGRhdGUuCi0gIFBhdGNoIGZyb20gRG1pdHJ5IFNoYWNobmV2LgotCi0tIElzc3VlICMyMzc3OTogaW1hcGxpYiByYWlzZXMgVHlwZUVycm9yIGlmIGF1dGhlbnRpY2F0b3IgdHJpZXMgdG8gYWJvcnQuCi0gIFBhdGNoIGZyb20gQ3JhaWcgSG9sbXF1aXN0LgotCi0tIElzc3VlICMyMzMxOTogRml4IGN0eXBlcy5CaWdFbmRpYW5TdHJ1Y3R1cmUsIHN3YXAgY29ycmVjdGx5IGJ5dGVzLiBQYXRjaAotICB3cml0dGVuIGJ5IE1hdHRoaWV1IEdhdXRpZXIuCi0KLS0gSXNzdWUgIzIzMjU0OiBEb2N1bWVudCBob3cgdG8gY2xvc2UgdGhlIFRDUFNlcnZlciBsaXN0ZW5pbmcgc29ja2V0LgotICBQYXRjaCBmcm9tIE1hcnRpbiBQYW50ZXIuCi0KLS0gSXNzdWUgIzE5NDUwOiBVcGRhdGUgV2luZG93cyBhbmQgT1MgWCBpbnN0YWxsZXIgYnVpbGRzIHRvIHVzZSBTUUxpdGUgMy44LjExLgotCi0tIElzc3VlICMyMzQ0MTogcmNvbXBsZXRlciBub3cgcHJpbnRzIGEgdGFiIGNoYXJhY3RlciBpbnN0ZWFkIG9mIGRpc3BsYXlpbmcKLSAgcG9zc2libGUgY29tcGxldGlvbnMgZm9yIGFuIGVtcHR5IHdvcmQuICBJbml0aWFsIHBhdGNoIGJ5IE1hcnRpbiBTZWtlcmEuCi0KLS0gSXNzdWUgIzI0NzM1OiBGaXggaW52YWxpZCBtZW1vcnkgYWNjZXNzIGluCi0gIGl0ZXJ0b29scy5jb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudCgpLgotCi0tIElzc3VlICMxNzUyNzogQWRkIFBBVENIIHRvIHdzZ2lyZWYudmFsaWRhdG9yLiBQYXRjaCBmcm9tIEx1Y2EgU2JhcmRlbGxhLgotCi0tIElzc3VlICMyNDY4MzogRml4ZWQgY3Jhc2hlcyBpbiBfanNvbiBmdW5jdGlvbnMgY2FsbGVkIHdpdGggYXJndW1lbnRzIG9mCi0gIGluYXBwcm9wcmlhdGUgdHlwZS4KLQotLSBJc3N1ZSAjMjE2OTc6IHNodXRpbC5jb3B5dHJlZSgpIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBzeW1ib2xpYyBsaW5rcyB0aGF0Ci0gIHBvaW50IHRvIGRpcmVjdG9yaWVzLiAgUGF0Y2ggYnkgRWR1YXJkbyBTZWFicmEgYW5kIFRob21hcyBLbHV5dmVyLgotCi0tIElzc3VlICMyNDYyMDogUmFuZG9tLnNldHN0YXRlKCkgbm93IHZhbGlkYXRlcyB0aGUgdmFsdWUgb2Ygc3RhdGUgbGFzdCBlbGVtZW50LgotCi0tIElzc3VlICMyMjE1MzogSW1wcm92ZSB1bml0dGVzdCBkb2NzLiBQYXRjaCBmcm9tIE1hcnRpbiBQYW50ZXIgYW5kIGV2aWx6ZXJvLgotCi0tIElzc3VlICMyNDIwNjogRml4ZWQgX19lcV9fIGFuZCBfX25lX18gbWV0aG9kcyBvZiBpbnNwZWN0IGNsYXNzZXMuCi0KLS0gSXNzdWUgIzIxNzUwOiBtb2NrX29wZW4ucmVhZF9kYXRhIGNhbiBub3cgYmUgcmVhZCBmcm9tIGVhY2ggaW5zdGFuY2UsIGFzIGl0Ci0gIGNvdWxkIGluIFB5dGhvbiAzLjMuCi0KLS0gSXNzdWUgIzIzMjQ3OiBGaXggYSBjcmFzaCBpbiB0aGUgU3RyZWFtV3JpdGVyLnJlc2V0KCkgb2YgQ0pLIGNvZGVjcy4KLQotLSBJc3N1ZSAjMTg2MjI6IHVuaXR0ZXN0Lm1vY2subW9ja19vcGVuKCkucmVzZXRfbW9jayB3b3VsZCByZWN1cnNlIGluZmluaXRlbHkuCi0gIFBhdGNoIGZyb20gTmljb2xhIFBhbHVtYm8gYW5kIExhdXJlbnQgRGUgQnV5c3QuCi0KLS0gSXNzdWUgIzI0NjA4OiBjaHVuay5DaHVuay5yZWFkKCkgbm93IGFsd2F5cyByZXR1cm5zIGJ5dGVzLCBub3Qgc3RyLgotCi0tIElzc3VlICMxODY4NDogRml4ZWQgcmVhZGluZyBvdXQgb2YgdGhlIGJ1ZmZlciBpbiB0aGUgcmUgbW9kdWxlLgotCi0tIElzc3VlICMyNDI1OTogdGFyZmlsZSBub3cgcmFpc2VzIGEgUmVhZEVycm9yIGlmIGFuIGFyY2hpdmUgaXMgdHJ1bmNhdGVkCi0gIGluc2lkZSBhIGRhdGEgc2VnbWVudC4KLQotLSBJc3N1ZSAjMjQ1NTI6IEZpeCB1c2UgYWZ0ZXIgZnJlZSBpbiBhbiBlcnJvciBjYXNlIG9mIHRoZSBfcGlja2xlIG1vZHVsZS4KLQotLSBJc3N1ZSAjMjQ1MTQ6IHRhcmZpbGUgbm93IHRvbGVyYXRlcyBudW1iZXIgZmllbGRzIGNvbnNpc3Rpbmcgb2Ygb25seQotICB3aGl0ZXNwYWNlLgotCi0tIElzc3VlICMxOTE3NjogRml4ZWQgZG9jdHlwZSgpIHJlbGF0ZWQgYnVncyBpbiBDIGltcGxlbWVudGF0aW9uIG9mIEVsZW1lbnRUcmVlLgotICBBIGRlcHJlY2F0aW9uIHdhcm5pbmcgbm8gbG9uZ2VyIGlzc3VlZCBieSBYTUxQYXJzZXIgc3ViY2xhc3Mgd2l0aCBkZWZhdWx0Ci0gIGRvY3R5cGUoKSBtZXRob2QuICBEaXJlY3QgY2FsbCBvZiBkb2N0eXBlKCkgbm93IGlzc3VlcyBhIHdhcm5pbmcuICBQYXJzZXIncwotICBkb2N0eXBlKCkgbm93IGlzIG5vdCBjYWxsZWQgaWYgdGFyZ2V0J3MgZG9jdHlwZSgpIGlzIGNhbGxlZC4gIEJhc2VkIG9uIHBhdGNoCi0gIGJ5IE1hcnRpbiBQYW50ZXIuCi0KLS0gSXNzdWUgIzIwMzg3OiBSZXN0b3JlIHNlbWFudGljIHJvdW5kLXRyaXAgY29ycmVjdG5lc3MgaW4gdG9rZW5pemUvdW50b2tlbml6ZQotICBmb3IgdGFiLWluZGVudGVkIGJsb2Nrcy4KLQotLSBJc3N1ZSAjMjQ0NTY6IEZpeGVkIHBvc3NpYmxlIGJ1ZmZlciBvdmVyLXJlYWQgaW4gYWRwY20ybGluKCkgYW5kIGxpbjJhZHBjbSgpCi0gIGZ1bmN0aW9ucyBvZiB0aGUgYXVkaW9vcCBtb2R1bGUuCi0KLS0gSXNzdWUgIzI0MzM2OiBUaGUgY29udGV4dG1hbmFnZXIgZGVjb3JhdG9yIG5vdyB3b3JrcyB3aXRoIGZ1bmN0aW9ucyB3aXRoCi0gIGtleXdvcmQgYXJndW1lbnRzIGNhbGxlZCAiZnVuYyIgYW5kICJzZWxmIi4gIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCi0KLS0gSXNzdWUgIzI0NDg5OiBlbnN1cmUgYSBwcmV2aW91c2x5IHNldCBDIGVycm5vIGRvZXNuJ3QgZGlzdHVyYiBjbWF0aC5wb2xhcigpLgotCi0tIElzc3VlICM1NjMzOiBGaXhlZCB0aW1laXQgd2hlbiB0aGUgc3RhdGVtZW50IGlzIGEgc3RyaW5nIGFuZCB0aGUgc2V0dXAgaXMgbm90LgotCi0tIElzc3VlICMyNDMyNjogRml4ZWQgYXVkaW9vcC5yYXRlY3YoKSB3aXRoIG5vbi1kZWZhdWx0IHdlaWdodEIgYXJndW1lbnQuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IERhdmlkIE1vb3JlLgotCi0tIElzc3VlICMyMzg0MDogdG9rZW5pemUub3BlbigpIG5vdyBjbG9zZXMgdGhlIHRlbXBvcmFyeSBiaW5hcnkgZmlsZSBvbiBlcnJvcgotICB0byBmaXggYSByZXNvdXJjZSB3YXJuaW5nLgotCi0tIElzc3VlICMyNDI1NzogRml4ZWQgc2VnbWVudGF0aW9uIGZhdWx0IGluIHNxbGl0ZTMuUm93IGNvbnN0cnVjdG9yIHdpdGggZmFrZWQKLSAgY3Vyc29yIHR5cGUuCi0KLS0gSXNzdWUgIzIyMTA3OiB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkgYW5kIHRlbXBmaWxlLm1rZHRlbXAoKSBub3cgdHJ5IGFnYWluCi0gIHdoZW4gYSBkaXJlY3Rvcnkgd2l0aCB0aGUgY2hvc2VuIG5hbWUgYWxyZWFkeSBleGlzdHMgb24gV2luZG93cyBhcyB3ZWxsIGFzCi0gIG9uIFVuaXguICB0ZW1wZmlsZS5ta3N0ZW1wKCkgbm93IGZhaWxzIGVhcmx5IGlmIHBhcmVudCBkaXJlY3RvcnkgaXMgbm90Ci0gIHZhbGlkIChub3QgZXhpc3RzIG9yIGlzIGEgZmlsZSkgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjNjU5ODogSW5jcmVhc2VkIHRpbWUgcHJlY2lzaW9uIGFuZCByYW5kb20gbnVtYmVyIHJhbmdlIGluCi0gIGVtYWlsLnV0aWxzLm1ha2VfbXNnaWQoKSB0byBzdHJlbmd0aGVuIHRoZSB1bmlxdWVuZXNzIG9mIHRoZSBtZXNzYWdlIElELgotCi0tIElzc3VlICMyNDA5MTogRml4ZWQgdmFyaW91cyBjcmFzaGVzIGluIGNvcm5lciBjYXNlcyBpbiBDIGltcGxlbWVudGF0aW9uIG9mCi0gIEVsZW1lbnRUcmVlLgotCi0tIElzc3VlICMyMTkzMTogbXNpbGliLkZDSUNyZWF0ZSgpIG5vdyByYWlzZXMgVHlwZUVycm9yIGluIHRoZSBjYXNlIG9mIGEgYmFkCi0gIGFyZ3VtZW50IGluc3RlYWQgb2YgYSBWYWx1ZUVycm9yIHdpdGggYSBib2d1cyBGQ0kgZXJyb3IgbnVtYmVyLgotICBQYXRjaCBieSBKZWZmcmV5IEFybXN0cm9uZy4KLQotLSBJc3N1ZSAjMjM3OTY6IHBlZWsgYW5kIHJlYWQxIG1ldGhvZHMgb2YgQnVmZmVyZWRSZWFkZXIgbm93IHJhaXNlIFZhbHVlRXJyb3IKLSAgaWYgdGhleSBjYWxsZWQgb24gYSBjbG9zZWQgb2JqZWN0LiBQYXRjaCBieSBKb2huIEhlcmdlbnJvZWRlci4KLQotLSBJc3N1ZSAjMjQ1MjE6IEZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93cyBpbiB0aGUgcGlja2xlIG1vZHVsZS4KLQotLSBJc3N1ZSAjMjI5MzE6IEFsbG93ICdbJyBhbmQgJ10nIGluIGNvb2tpZSB2YWx1ZXMuCi0KLS0gSXNzdWUgIzIwMjc0OiBSZW1vdmUgaWdub3JlZCBhbmQgZXJyb25lb3VzICJrd2FyZ3MiIHBhcmFtZXRlcnMgZnJvbSB0aHJlZQotICBNRVRIX1ZBUkFSR1MgbWV0aG9kcyBvbiBfc3FsaXRlLkNvbm5lY3Rpb24uCi0KLS0gSXNzdWUgIzI0MDk0OiBGaXggcG9zc2libGUgY3Jhc2ggaW4ganNvbi5lbmNvZGUgd2l0aCBwb29ybHkgYmVoYXZlZCBkaWN0Ci0gIHN1YmNsYXNzZXMuCi0KLS0gQXN5bmNpbyBpc3N1ZSAyMjIgLyBQUiAyMzEgKFZpY3RvciBTdGlubmVyKSAtLSBmaXggQGNvcm91dGluZQotICBmdW5jdGlvbnMgd2l0aG91dCBfX25hbWVfXy4KLQotLSBJc3N1ZSAjOTI0NjogT24gUE9TSVgsIG9zLmdldGN3ZCgpIG5vdyBzdXBwb3J0cyBwYXRocyBsb25nZXIgdGhhbiAxMDI1IGJ5dGVzLgotICBQYXRjaCB3cml0dGVuIGJ5IFdpbGxpYW0gT3JyLgotCi0tIFRoZSBrZXl3b3JkcyBhdHRyaWJ1dGUgb2YgZnVuY3Rvb2xzLnBhcnRpYWwgaXMgbm93IGFsd2F5cyBhIGRpY3Rpb25hcnkuCi0KLS0gSXNzdWVzICMyNDA5OSwgIzI0MTAwLCBhbmQgIzI0MTAxOiBGaXggZnJlZS1hZnRlci11c2UgYnVnIGluIGhlYXBxJ3Mgc2lmdHVwCi0gIGFuZCBzaWZ0ZG93biBmdW5jdGlvbnMuCi0KLS0gQmFja3BvcnQgY29sbGVjdGlvbnMuZGVxdWUgZml4ZXMgZnJvbSBQeXRob24gMy41LiAgUHJldmVudHMgcmVlbnRyYW50IGJhZG5lc3MKLSAgZHVyaW5nIGRlbGV0aW9uIGJ5IGRlZmVycmluZyB0aGUgZGVjcmVmIHVudGlsIHRoZSBjb250YWluZXIgaGFzIGJlZW4gcmVzdG9yZWQKLSAgdG8gYSBjb25zaXN0ZW50IHN0YXRlLgotCi0tIElzc3VlICMyMzAwODogRml4ZWQgcmVzb2x2aW5nIGF0dHJpYnV0ZXMgd2l0aCBib29sZWFuIHZhbHVlIGlzIEZhbHNlIGluIHB5ZG9jLgotCi0tIEZpeCBhc3luY2lvIGlzc3VlIDIzNTogTGlmb1F1ZXVlIGFuZCBQcmlvcml0eVF1ZXVlJ3MgcHV0IGRpZG4ndAotICBpbmNyZW1lbnQgdW5maW5pc2hlZCB0YXNrcyAodGhpcyBidWcgd2FzIGludHJvZHVjZWQgaW4gMy40LjMgd2hlbgotICBKb2luYWJsZVF1ZXVlIHdhcyBtZXJnZWQgd2l0aCBRdWV1ZSkuCi0KLS0gSXNzdWUgIzIzOTA4OiBvcyBmdW5jdGlvbnMgbm93IHJlamVjdCBwYXRocyB3aXRoIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVyCi0gIG9uIFdpbmRvd3MgaW5zdGVhZCBvZiBzaWxlbnRseSB0cnVuY2F0ZSB0aGVtLgotCi0tIElzc3VlICMyMzcyODogYmluYXNjaWkuY3JjX2hxeCgpIGNvdWxkIHJldHVybiBhbiBpbnRlZ2VyIG91dHNpZGUgb2YgdGhlIHJhbmdlCi0gIDAtMHhmZmZmIGZvciBlbXB0eSBkYXRhLgotCi0tIElzc3VlICMyMzgxMTogQWRkIG1pc3NpbmcgbmV3bGluZSB0byB0aGUgUHlDb21waWxlRXJyb3IgZXJyb3IgbWVzc2FnZS4KLSAgUGF0Y2ggYnkgQWxleCBTaGtvcC4KLQotLSBJc3N1ZSAjMTc4OTg6IEZpeCBleGNlcHRpb24gaW4gZ2V0dGV4dC5weSB3aGVuIHBhcnNpbmcgY2VydGFpbiBwbHVyYWwgZm9ybXMuCi0KLS0gSXNzdWUgIzIyOTgyOiBJbXByb3ZlIEJPTSBoYW5kbGluZyB3aGVuIHNlZWtpbmcgdG8gbXVsdGlwbGUgcG9zaXRpb25zIG9mCi0gIGEgd3JpdGFibGUgdGV4dCBmaWxlLgotCi0tIElzc3VlICMyMzg2NTogY2xvc2UoKSBtZXRob2RzIGluIG11bHRpcGxlIG1vZHVsZXMgbm93IGFyZSBpZGVtcG90ZW50IGFuZCBtb3JlCi0gIHJvYnVzdCBhdCBzaHV0ZG93bi4gSWYgdGhleSBuZWVkIHRvIHJlbGVhc2UgbXVsdGlwbGUgcmVzb3VyY2VzLCBhbGwgYXJlCi0gIHJlbGVhc2VkIGV2ZW4gaWYgZXJyb3JzIG9jY3VyLgotCi0tIElzc3VlICMyMzg4MTogdXJsbGliLnJlcXVlc3QuZnRwd3JhcHBlciBjb25zdHJ1Y3RvciBub3cgY2xvc2VzIHRoZSBzb2NrZXQgaWYKLSAgdGhlIEZUUCBjb25uZWN0aW9uIGZhaWxlZCB0byBmaXggYSBSZXNvdXJjZVdhcm5pbmcuCi0KLS0gSXNzdWUgIzIzNDAwOiBSYWlzZSBzYW1lIGV4Y2VwdGlvbiBvbiBib3RoIFB5dGhvbiAyIGFuZCAzIGlmIHNlbV9vcGVuIGlzIG5vdAotICBhdmFpbGFibGUuICBQYXRjaCBieSBEYXZpbiBQb3R0cy4KLQotLSBJc3N1ZSAjMTUxMzM6IF90a2ludGVyLnRrYXBwLmdldGJvb2xlYW4oKSBub3cgc3VwcG9ydHMgVGNsX09iaiBhbmQgYWx3YXlzCi0gIHJldHVybnMgYm9vbC4gIHRraW50ZXIuQm9vbGVhblZhciBub3cgdmFsaWRhdGVzIGlucHV0IHZhbHVlcyAoYWNjZXB0ZWQgYm9vbCwKLSAgaW50LCBzdHIsIGFuZCBUY2xfT2JqKS4gIHRraW50ZXIuQm9vbGVhblZhci5nZXQoKSBub3cgYWx3YXlzIHJldHVybnMgYm9vbC4KLQotLSBJc3N1ZSAjMjMzMzg6IEZpeGVkIGZvcm1hdHRpbmcgY3R5cGVzIGVycm9yIG1lc3NhZ2VzIG9uIEN5Z3dpbi4KLSAgUGF0Y2ggYnkgTWFrb3RvIEthdG8uCi0KLS0gSXNzdWUgIzE2ODQwOiBUa2ludGVyIG5vdyBzdXBwb3J0cyA2NC1iaXQgaW50ZWdlcnMgYWRkZWQgaW4gVGNsIDguNCBhbmQKLSAgYXJiaXRyYXJ5IHByZWNpc2lvbiBpbnRlZ2VycyBhZGRlZCBpbiBUY2wgOC41LgotCi0tIElzc3VlICMyMzgzNDogRml4IHNvY2tldC5zZW5kdG8oKSwgdXNlIHRoZSBDIFB5X3NzaXplX3QgdHlwZSB0byBzdG9yZSB0aGUKLSAgcmVzdWx0IG9mIHNlbmR0bygpIGluc3RlYWQgb2YgdGhlIEMgaW50IHR5cGUuCi0KLS0gSXNzdWUgIzIxNTI2OiBUa2ludGVyIG5vdyBzdXBwb3J0cyBuZXcgYm9vbGVhbiB0eXBlIGluIFRjbCA4LjUuCi0KLS0gSXNzdWUgIzIzODM4OiBsaW5lY2FjaGUgbm93IGNsZWFycyB0aGUgY2FjaGUgYW5kIHJldHVybnMgYW4gZW1wdHkgcmVzdWx0IG9uCi0gIE1lbW9yeUVycm9yLgotCi0tIElzc3VlICMxODQ3MzogRml4ZWQgMnRvMyBhbmQgM3RvMiBjb21wYXRpYmxlIHBpY2tsZSBtYXBwaW5ncy4gIEZpeGVkCi0gIGFtYmlnaW91cyByZXZlcnNlIG1hcHBpbmdzLiAgQWRkZWQgbWFueSBuZXcgbWFwcGluZ3MuICBJbXBvcnQgbWFwcGluZyBpcyBubwotICBsb25nZXIgYXBwbGllZCB0byBtb2R1bGVzIGFscmVhZHkgbWFwcGVkIHdpdGggZnVsbCBuYW1lIG1hcHBpbmcuCi0KLS0gSXNzdWUgIzIzNzQ1OiBUaGUgbmV3IGVtYWlsIGhlYWRlciBwYXJzZXIgbm93IGhhbmRsZXMgZHVwbGljYXRlIE1JTUUKLSAgcGFyYW1ldGVyIG5hbWVzIHdpdGhvdXQgZXJyb3IsIHNpbWlsYXIgdG8gaG93IGdldF9wYXJhbSBiZWhhdmVzLgotCi0tIElzc3VlICMyMzc5MjogSWdub3JlIEtleWJvYXJkSW50ZXJydXB0IHdoZW4gdGhlIHB5ZG9jIHBhZ2VyIGlzIGFjdGl2ZS4KLSAgVGhpcyBtaW1pY3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBzdGFuZGFyZCB1bml4IHBhZ2VycywgYW5kIHByZXZlbnRzCi0gIHBpcGVwYWdlciBmcm9tIHNodXR0aW5nIGRvd24gd2hpbGUgdGhlIHBhZ2VyIGl0c2VsZiBpcyBzdGlsbCBydW5uaW5nLgotCi0tIElzc3VlICMyMzc0MjogbnRwYXRoLmV4cGFuZHZhcnMoKSBubyBsb25nZXIgbG9zZXMgdW5iYWxhbmNlZCBzaW5nbGUgcXVvdGVzLgotCi0tIElzc3VlICMyMTgwMjogVGhlIHJlYWRlciBpbiBCdWZmZXJlZFJXUGFpciBub3cgaXMgY2xvc2VkIGV2ZW4gd2hlbiBjbG9zaW5nCi0gIHdyaXRlciBmYWlsZWQgaW4gQnVmZmVyZWRSV1BhaXIuY2xvc2UoKS4KLQotLSBJc3N1ZSAjMjM2NzE6IHN0cmluZy5UZW1wbGF0ZSBub3cgYWxsb3dzIHRvIHNwZWNpZnkgdGhlICJzZWxmIiBwYXJhbWV0ZXIgYXMKLSAga2V5d29yZCBhcmd1bWVudC4gIHN0cmluZy5Gb3JtYXR0ZXIgbm93IGFsbG93cyB0byBzcGVjaWZ5IHRoZSAic2VsZiIgYW5kCi0gIHRoZSAiZm9ybWF0X3N0cmluZyIgcGFyYW1ldGVycyBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjMjE1NjA6IEFuIGF0dGVtcHQgdG8gd3JpdGUgYSBkYXRhIG9mIHdyb25nIHR5cGUgbm8gbG9uZ2VyIGNhdXNlCi0gIEd6aXBGaWxlIGNvcnJ1cHRpb24uICBPcmlnaW5hbCBwYXRjaCBieSBXb2xmZ2FuZyBNYWllci4KLQotLSBJc3N1ZSAjMjM2NDc6IEluY3JlYXNlIGltcGFsaWIncyBNQVhMSU5FIHRvIGFjY29tbW9kYXRlIG1vZGVybiBtYWlsYm94IHNpemVzLgotCi0tIElzc3VlICMyMzUzOTogSWYgYm9keSBpcyBOb25lLCBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbi5yZXF1ZXN0IG5vdyBzZXRzCi0gIENvbnRlbnQtTGVuZ3RoIHRvIDAgZm9yIFBVVCwgUE9TVCwgYW5kIFBBVENIIGhlYWRlcnMgdG8gYXZvaWQgNDExIGVycm9ycyBmcm9tCi0gIHNvbWUgd2ViIHNlcnZlcnMuCi0KLS0gSXNzdWUgIzIyMzUxOiBUaGUgbm50cGxpYi5OTlRQIGNvbnN0cnVjdG9yIG5vIGxvbmdlciBsZWF2ZXMgdGhlIGNvbm5lY3Rpb24KLSAgYW5kIHNvY2tldCBvcGVuIHVudGlsIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBjbGVhbnMgdGhlbSB1cC4gIFBhdGNoIGJ5Ci0gIE1hcnRpbiBQYW50ZXIuCi0KLS0gSXNzdWUgIzIzMTM2OiBfc3RycHRpbWUgbm93IHVuaWZvcm1seSBoYW5kbGVzIGFsbCBkYXlzIGluIHdlZWsgMCwgaW5jbHVkaW5nCi0gIERlYyAzMCBvZiBwcmV2aW91cyB5ZWFyLiAgQmFzZWQgb24gcGF0Y2ggYnkgSmltIENhcnJvbGwuCi0KLS0gSXNzdWUgIzIzNzAwOiBJdGVyYXRvciBvZiBOYW1lZFRlbXBvcmFyeUZpbGUgbm93IGtlZXBzIGEgcmVmZXJlbmNlIHRvCi0gIE5hbWVkVGVtcG9yYXJ5RmlsZSBpbnN0YW5jZS4gIFBhdGNoIGJ5IEJvaHVzbGF2IEthYnJkYS4KLQotLSBJc3N1ZSAjMjI5MDM6IFRoZSBmYWtlIHRlc3QgY2FzZSBjcmVhdGVkIGJ5IHVuaXR0ZXN0LmxvYWRlciB3aGVuIGl0IGZhaWxzCi0gIGltcG9ydGluZyBhIHRlc3QgbW9kdWxlIGlzIG5vdyBwaWNrbGFibGUuCi0KLS0gSXNzdWUgIzIzNTY4OiBBZGQgcmRpdm1vZCBzdXBwb3J0IHRvIE1hZ2ljTW9jaygpIG9iamVjdHMuCi0gIFBhdGNoIGJ5IEjDpWthbiBMw7Z2ZGFobC4KLQotLSBJc3N1ZSAjMjMxMzg6IEZpeGVkIHBhcnNpbmcgY29va2llcyB3aXRoIGFic2VudCBrZXlzIG9yIHZhbHVlcyBpbiBjb29raWVqYXIuCi0gIFBhdGNoIGJ5IERlbWlhbiBCcmVjaHQuCi0KLS0gSXNzdWUgIzIzMDUxOiBtdWx0aXByb2Nlc3NpbmcuUG9vbCBtZXRob2RzIGltYXAoKSBhbmQgaW1hcF91bm9yZGVyZWQoKSBub3cKLSAgaGFuZGxlIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IGFuIGl0ZXJhdG9yLiAgUGF0Y2ggYnkgQWxvbiBEaWFtYW50IGFuZCBEYXZpbgotICBQb3R0cy4KLQotLSBJc3N1ZSAjMjI5Mjg6IERpc2FibGVkIEhUVFAgaGVhZGVyIGluamVjdGlvbnMgaW4gaHR0cC5jbGllbnQuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IERlbWlhbiBCcmVjaHQuCi0KLS0gSXNzdWUgIzIzNjE1OiBNb2R1bGVzIGJ6MiwgdGFyZmlsZSBhbmQgdG9rZW5pemUgbm93IGNhbiBiZSByZWxvYWRlZCB3aXRoCi0gIGltcC5yZWxvYWQoKS4gIFBhdGNoIGJ5IFRob21hcyBLbHV5dmVyLgotCi0tIElzc3VlICMyMzQ3NjogSW4gdGhlIHNzbCBtb2R1bGUsIGVuYWJsZSBPcGVuU1NMJ3MgWDUwOV9WX0ZMQUdfVFJVU1RFRF9GSVJTVAotICBmbGFnIG9uIGNlcnRpZmljYXRlIHN0b3JlcyB3aGVuIGl0IGlzIGF2YWlsYWJsZS4KLQotLSBJc3N1ZSAjMjM1NzY6IEF2b2lkIHN0YWxsaW5nIGluIFNTTCByZWFkcyB3aGVuIEVPRiBoYXMgYmVlbiByZWFjaGVkIGluIHRoZQotICBTU0wgbGF5ZXIgYnV0IHRoZSB1bmRlcmx5aW5nIGNvbm5lY3Rpb24gaGFzbid0IGJlZW4gY2xvc2VkLgotCi0tIElzc3VlICMyMzUwNDogQWRkZWQgYW4gX19hbGxfXyB0byB0aGUgdHlwZXMgbW9kdWxlLgotCi0tIElzc3VlICMyMDIwNDogQWRkZWQgdGhlIF9fbW9kdWxlX18gYXR0cmlidXRlIHRvIF90a2ludGVyIGNsYXNzZXMuCi0KLS0gSXNzdWUgIzIzNTIxOiBDb3JyZWN0ZWQgcHVyZSBweXRob24gaW1wbGVtZW50YXRpb24gb2YgdGltZWRlbHRhIGRpdmlzaW9uLgotCi0gKiBFbGltaW5hdGVkIE92ZXJmbG93RXJyb3IgZnJvbSB0aW1lZGVsdGEgKiBmbG9hdCBmb3Igc29tZSBmbG9hdHM7Ci0gKiBDb3JyZWN0ZWQgcm91bmRpbmcgaW4gdGltZWRsdGEgdHJ1ZSBkaXZpc2lvbi4KLQotLSBJc3N1ZSAjMjE2MTk6IFBvcGVuIG9iamVjdHMgbm8gbG9uZ2VyIGxlYXZlIGEgem9tYmllIGFmdGVyIGV4aXQgaW4gdGhlIHdpdGgKLSAgc3RhdGVtZW50IGlmIHRoZSBwaXBlIHdhcyBicm9rZW4uICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgotCi0tIElzc3VlICM2NjM5OiBNb2R1bGUtbGV2ZWwgdHVydGxlIGZ1bmN0aW9ucyBubyBsb25nZXIgcmFpc2UgVGNsRXJyb3IgYWZ0ZXIKLSAgY2xvc2luZyB0aGUgd2luZG93LgotCi0tIElzc3VlcyAjODE0MjUzLCAjOTE3OTogV2FybmluZ3Mgbm93IGFyZSByYWlzZWQgd2hlbiBncm91cCByZWZlcmVuY2VzIGFuZAotICBjb25kaXRpb25hbCBncm91cCByZWZlcmVuY2VzIGFyZSB1c2VkIGluIGxvb2tiZWhpbmQgYXNzZXJ0aW9ucyBpbiByZWd1bGFyCi0gIGV4cHJlc3Npb25zLgotCi0tIElzc3VlICMyMzIxNTogTXVsdGlieXRlIGNvZGVjcyB3aXRoIGN1c3RvbSBlcnJvciBoYW5kbGVycyB0aGF0IGlnbm9yZXMgZXJyb3JzCi0gIGNvbnN1bWVkIHRvbyBtdWNoIG1lbW9yeSBhbmQgcmFpc2VkIFN5c3RlbUVycm9yIG9yIE1lbW9yeUVycm9yLgotICBPcmlnaW5hbCBwYXRjaCBieSBBbGVrc2kgVG9yaGFtby4KLQotLSBJc3N1ZSAjNTcwMDogaW8uRmlsZUlPKCkgY2FsbGVkIGZsdXNoKCkgYWZ0ZXIgY2xvc2luZyB0aGUgZmlsZS4KLSAgZmx1c2goKSB3YXMgbm90IGNhbGxlZCBpbiBjbG9zZSgpIGlmIGNsb3NlZmQ9RmFsc2UuCi0KLS0gSXNzdWUgIzIzMzc0OiBGaXhlZCBweWRvYyBmYWlsdXJlIHdpdGggbm9uLUFTQ0lJIGZpbGVzIHdoZW4gc3Rkb3V0IGVuY29kaW5nCi0gIGRpZmZlcnMgZnJvbSBmaWxlIHN5c3RlbSBlbmNvZGluZyAoZS5nLiBvbiBNYWMgT1MpLgotCi0tIElzc3VlICMyMzQ4MTogUmVtb3ZlIFJDNCBmcm9tIHRoZSBTU0wgbW9kdWxlJ3MgZGVmYXVsdCBjaXBoZXIgbGlzdC4KLQotLSBJc3N1ZSAjMjE1NDg6IEZpeCBweWRvYy5zeW5vcHNpcygpIGFuZCBweWRvYy5hcHJvcG9zKCkgb24gbW9kdWxlcyB3aXRoIGVtcHR5Ci0gIGRvY3N0cmluZ3MuCi0KLS0gSXNzdWUgIzIyODg1OiBGaXhlZCBhcmJpdHJhcnkgY29kZSBleGVjdXRpb24gdnVsbmVyYWJpbGl0eSBpbiB0aGUgZGJtLmR1bWIKLSAgbW9kdWxlLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgotCi0tIElzc3VlICMyMzE0NjogRml4IG1pc2hhbmRsaW5nIG9mIGFic29sdXRlIFdpbmRvd3MgcGF0aHMgd2l0aCBmb3J3YXJkCi0gIHNsYXNoZXMgaW4gcGF0aGxpYi4KLQotLSBJc3N1ZSAjMjM0MjE6IEZpeGVkIGNvbXByZXNzaW9uIGluIHRhcmZpbGUgQ0xJLiAgUGF0Y2ggYnkgd2R2NDc1OGguCi0KLS0gSXNzdWUgIzIzMzY3OiBGaXggcG9zc2libGUgb3ZlcmZsb3dzIGluIHRoZSB1bmljb2RlZGF0YSBtb2R1bGUuCi0KLS0gSXNzdWUgIzIzMzYxOiBGaXggcG9zc2libGUgb3ZlcmZsb3cgaW4gV2luZG93cyBzdWJwcm9jZXNzIGNyZWF0aW9uIGNvZGUuCi0KLS0gSXNzdWUgIzIzODAxOiBGaXggaXNzdWUgd2hlcmUgY2dpLkZpZWxkU3RvcmFnZSBkaWQgbm90IGFsd2F5cyBpZ25vcmUgdGhlCi0gIGVudGlyZSBwcmVhbWJsZSB0byBhIG11bHRpcGFydCBib2R5LgotCi0tIElzc3VlICMyMzMxMDogRml4IE1hZ2ljTW9jaydzIGluaXRpYWxpemVyIHRvIHdvcmsgd2l0aCBfX21ldGhvZHNfXywganVzdAotICBsaWtlIGNvbmZpZ3VyZV9tb2NrKCkuICBQYXRjaCBieSBLYXNpYSBKYWNoaW0uCi0KLS0gYXN5bmNpbzogTmV3IGV2ZW50IGxvb3AgQVBJczogc2V0X3Rhc2tfZmFjdG9yeSgpIGFuZCBnZXRfdGFza19mYWN0b3J5KCkuCi0KLS0gYXN5bmNpbzogYXN5bmMoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBlbnN1cmVfZnV0dXJlKCkuCi0KLS0gSXNzdWUgIzIzODk4OiBGaXggaW5zcGVjdC5jbGFzc2lmeV9jbGFzc19hdHRycygpIHRvIHN1cHBvcnQgYXR0cmlidXRlcwotICB3aXRoIG92ZXJsb2FkZWQgX19lcV9fIGFuZCBfX2Jvb2xfXy4gIFBhdGNoIGJ5IE1pa2UgQmF5ZXIuCi0KLS0gSXNzdWUgIzI0Mjk4OiBGaXggaW5zcGVjdC5zaWduYXR1cmUoKSB0byBjb3JyZWN0bHkgdW53cmFwIHdyYXBwZXJzCi0gIGFyb3VuZCBib3VuZCBtZXRob2RzLgorLSBJc3N1ZSAjMjAzNjI6IEhvbm91ciBUZXN0Q2FzZS5sb25nTWVzc2FnZSBjb3JyZWN0bHkgaW4gYXNzZXJ0UmVnZXguCisgIFBhdGNoIGZyb20gSWxpYSBLdXJlbmtvdi4KIAogLSBJc3N1ZSAjMjM1NzI6IEZpeGVkIGZ1bmN0b29scy5zaW5nbGVkaXNwYXRjaCBvbiBjbGFzc2VzIHdpdGggZmFsc3kKICAgbWV0YWNsYXNzZXMuICBQYXRjaCBieSBFdGhhbiBGdXJtYW4uCiAKKy0gYXN5bmNpbzogZW5zdXJlX2Z1dHVyZSgpIG5vdyBhY2NlcHRzIGF3YWl0YWJsZSBvYmplY3RzLgorCiBJRExFCiAtLS0tCiAKQEAgLTY3OSw3ICs1MTMsNyBAQAogICBDb25zaXN0ZW50bHkgdXNlIHRoZSByZXZpc2VkIGlkbGVDb25mLkN1cnJlbnRUaGVtZSBldmVyeXdoZXJlIGluIGlkbGVsaWIuCiAKIC0gSXNzdWUgIzI0NzgyOiBFeHRlbnNpb24gY29uZmlndXJhdGlvbiBpcyBub3cgYSB0YWIgaW4gdGhlIElETEUgUHJlZmVyZW5jZXMKLSAgZGlhbG9nIHJhdGhlciB0aGFuIGEgc2VwYXJhdGUgZGlhbG9nLiAgIFRoZSBmb3JtZXIgdGFicyBhcmUgbm93IGEgc29ydGVkCisgIGRpYWxvZyByYXRoZXIgdGhhbiBhIHNlcGFyYXRlIGRpYWxvZy4gIFRoZSBmb3JtZXIgdGFicyBhcmUgbm93IGEgc29ydGVkCiAgIGxpc3QuICBQYXRjaCBieSBNYXJrIFJvc2VtYW4uCiAKIC0gSXNzdWUgIzIyNzI2OiBSZS1hY3RpdmF0ZSB0aGUgY29uZmlnIGRpYWxvZyBoZWxwIGJ1dHRvbiB3aXRoIHNvbWUgY29udGVudApAQCAtNzQ5LDYwICs1ODMsNiBAQAogCiAtIElzc3VlICMyNDc5MDogUmVtb3ZlIGV4dHJhbmVvdXMgY29kZSAod2hpY2ggYWxzbyBjcmVhdGUgMiAmIDMgY29uZmxpY3RzKS4KIAotLSBJc3N1ZSAjMjM2NzI6IEFsbG93IElkbGUgdG8gZWRpdCBhbmQgcnVuIGZpbGVzIHdpdGggYXN0cmFsIGNoYXJzIGluIG5hbWUuCi0gIFBhdGNoIGJ5IE1vaGQgU2FuYWQgWmFraSBSaXp2aS4KLQotLSBJc3N1ZSAyNDc0NTogSWRsZSBlZGl0b3IgZGVmYXVsdCBmb250LiBTd2l0Y2ggZnJvbSBDb3VyaWVyIHRvCi0gIHBsYXRmb3JtLXNlbnNpdGl2ZSBUa0ZpeGVkRm9udC4gIFRoaXMgc2hvdWxkIG5vdCBhZmZlY3QgY3VycmVudCBjdXN0b21pemVkCi0gIGZvbnQgc2VsZWN0aW9ucy4gIElmIHRoZXJlIGlzIGEgcHJvYmxlbSwgZWRpdCAkSE9NRS8uaWRsZXJjL2NvbmZpZy1tYWluLmNmZwotICBhbmQgcmVtb3ZlICdmb250eHh4JyBlbnRyaWVzIGZyb20gW0VkaXRvciBXaW5kb3ddLiAgUGF0Y2ggYnkgTWFyayBSb3NlbWFuLgotCi0tIElzc3VlICMyMTE5MjogSWRsZSBlZGl0b3IuIFdoZW4gYSBmaWxlIGlzIHJ1biwgcHV0IGl0cyBuYW1lIGluIHRoZSByZXN0YXJ0IGJhci4KLSAgRG8gbm90IHByaW50IGZhbHNlIHByb21wdHMuIE9yaWdpbmFsIHBhdGNoIGJ5IEFkbmFuIFVtZXIuCi0KLS0gSXNzdWUgIzEzODg0OiBJZGxlIG1lbnVzLiBSZW1vdmUgdGVhcm9mZiBsaW5lcy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzIzMTg0OiByZW1vdmUgdW51c2VkIG5hbWVzIGFuZCBpbXBvcnRzIGluIGlkbGVsaWIuCi0gIEluaXRpYWwgcGF0Y2ggYnkgQWwgU3dlaWdhcnQuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMyNTYxNjogVGVzdHMgZm9yIE9yZGVyZWREaWN0IGFyZSBleHRyYWN0ZWQgZnJvbSB0ZXN0X2NvbGxlY3Rpb25zCi0gIGludG8gc2VwYXJhdGUgZmlsZSB0ZXN0X29yZGVyZWRfZGljdC4KLQotLSBJc3N1ZSAjMjUwOTk6IE1ha2UgdGVzdF9jb21waWxlYWxsIG5vdCBmYWlsIHdoZW4gYW4gZW50cnkgb24gc3lzLnBhdGggY2Fubm90Ci0gIGJlIHdyaXR0ZW4gdG8gKGNvbW1vbmx5IHNlZW4gaW4gYWRtaW5pc3RyYXRpdmUgaW5zdGFsbHMgb24gV2luZG93cykuCi0KLS0gSXNzdWUgIzI0NzUxOiBXaGVuIHJ1bm5pbmcgcmVncnRlc3Qgd2l0aCB0aGUgYGAtd2BgIGNvbW1hbmQgbGluZSBvcHRpb24sCi0gIGEgdGVzdCBydW4gaXMgbm8gbG9uZ2VyIG1hcmtlZCBhcyBhIGZhaWx1cmUgaWYgYWxsIHRlc3RzIHN1Y2NlZWQgd2hlbgotICByZS1ydW4uCi0KLS0gSXNzdWUgIzIxNTIwOiB0ZXN0X3ppcGZpbGUgbm8gbG9uZ2VyIGZhaWxzIGlmIHRoZSB3b3JkICdiYWQnIGFwcGVhcnMKLSAgYW55d2hlcmUgaW4gdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgotCi0tIElzc3VlICMyMzc5OTogQWRkZWQgdGVzdC5zdXBwb3J0LnN0YXJ0X3RocmVhZHMoKSBmb3IgcnVubmluZyBhbmQKLSAgY2xlYW5pbmcgdXAgbXVsdGlwbGUgdGhyZWFkcy4KLQotLSBJc3N1ZSAjMjIzOTA6IHRlc3QucmVncnRlc3Qgbm93IGVtaXRzIGEgd2FybmluZyBpZiB0ZW1wb3JhcnkgZmlsZXMgb3IKLSAgZGlyZWN0b3JpZXMgYXJlIGxlZnQgYWZ0ZXIgcnVubmluZyBhIHRlc3QuCi0KLS0gSXNzdWUgIzIzNTgzOiBBZGRlZCB0ZXN0cyBmb3Igc3RhbmRhcmQgSU8gc3RyZWFtcyBpbiBJRExFLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMjM0NDU6IHB5ZGVidWcgYnVpbGRzIG5vdyB1c2UgImdjYyAtT2ciIHdoZXJlIHBvc3NpYmxlLCB0byBtYWtlCi0gIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSBmYXN0ZXIuCi0KLS0gSXNzdWUgIzI0NjAzOiBVcGRhdGUgV2luZG93cyBidWlsZHMgdG8gdXNlIE9wZW5TU0wxLjAuMmQKLSAgYW5kIE9TIFggMTAuNSBpbnN0YWxsZXIgdG8gdXNlIE9wZW5TU0wgMS4wLjJlLgotCi1DIEFQSQotLS0tLS0KLQotLSBJc3N1ZSAjMjM5OTg6IFB5SW1wb3J0X1JlSW5pdExvY2soKSBub3cgY2hlY2tzIGZvciBsb2NrIGFsbG9jYXRpb24gZXJyb3IKLQogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCkBAIC04MTYsMTIgKzU5NiwyNDYgQEAKIC0gSXNzdWUgIzI0OTUyOiBDbGFyaWZ5IHRoZSBkZWZhdWx0IHNpemUgYXJndW1lbnQgb2Ygc3RhY2tfc2l6ZSgpIGluCiAgIHRoZSAidGhyZWFkaW5nIiBhbmQgIl90aHJlYWQiIG1vZHVsZXMuIFBhdGNoIGZyb20gTWF0dGlwLgogCi0tIElzc3VlICMyNDgwODogVXBkYXRlIHRoZSB0eXBlcyBvZiBzb21lIFB5VHlwZU9iamVjdCBmaWVsZHMuIFBhdGNoIGJ5CistIElzc3VlICMyMzcyNTogT3ZlcmhhdWwgdGVtcGZpbGUgZG9jcy4gTm90ZSBkZXByZWNhdGVkIHN0YXR1cyBvZiBta3RlbXAuCisgIFBhdGNoIGZyb20gWmJpZ25pZXcgSsSZZHJ6ZWpld3NraS1Tem1lay4KKworLSBJc3N1ZSAjMjQ4MDg6IFVwZGF0ZSB0aGUgdHlwZXMgb2Ygc29tZSBQeVR5cGVPYmplY3QgZmllbGRzLiAgUGF0Y2ggYnkKICAgSm9zZXBoIFdlc3Rvbi4KIAogLSBJc3N1ZSAjMjI4MTI6IEZpeCB1bml0dGVzdCBkaXNjb3ZlcnkgZXhhbXBsZXMuCiAgIFBhdGNoIGZyb20gUGFtIE1jQSdOdWx0eS4KIAorVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzI1NDQ5OiBBZGRlZCB0ZXN0cyBmb3IgT3JkZXJlZERpY3Qgc3ViY2xhc3Nlcy4KKworLSBJc3N1ZSAjMjUwOTk6IE1ha2UgdGVzdF9jb21waWxlYWxsIG5vdCBmYWlsIHdoZW4gYW4gZW50cnkgb24gc3lzLnBhdGggY2Fubm90CisgIGJlIHdyaXR0ZW4gdG8gKGNvbW1vbmx5IHNlZW4gaW4gYWRtaW5pc3RyYXRpdmUgaW5zdGFsbHMgb24gV2luZG93cykuCisKKy0gSXNzdWUgIzIzOTE5OiBQcmV2ZW50cyBhc3NlcnQgZGlhbG9ncyBhcHBlYXJpbmcgaW4gdGhlIHRlc3Qgc3VpdGUuCisKKy0gYGBQQ2J1aWxkXHJ0LmJhdGBgIG5vdyBhY2NlcHRzIGFuIHVubGltaXRlZCBudW1iZXIgb2YgYXJndW1lbnRzIHRvIHBhc3MgYWxvbmcKKyAgdG8gcmVncnRlc3QucHkuICBQcmV2aW91c2x5IHRoZXJlIHdhcyBhIGxpbWl0IG9mIDkuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyNDkxNTogQWRkIExMVk0gc3VwcG9ydCBmb3IgUEdPIGJ1aWxkcyBhbmQgdXNlIHRoZSB0ZXN0IHN1aXRlIHRvCisgIGdlbmVyYXRlIHRoZSBwcm9maWxlIGRhdGEuIEluaXRpYWwgcGF0Y2ggYnkgQWxlY3NhbmRydSBQYXRyYXNjdSBvZiBJbnRlbC4KKworLSBJc3N1ZSAjMjQ5MTA6IFdpbmRvd3MgTVNJcyBub3cgaGF2ZSB1bmlxdWUgZGlzcGxheSBuYW1lcy4KKworLSBJc3N1ZSAjMjQ5ODY6IEl0IGlzIG5vdyBwb3NzaWJsZSB0byBidWlsZCBQeXRob24gb24gV2luZG93cyB3aXRob3V0IGVycm9ycworICB3aGVuIGV4dGVybmFsIGxpYnJhcmllcyBhcmUgbm90IGF2YWlsYWJsZS4KKworV2luZG93cworLS0tLS0tLQorCistIElzc3VlICMyNTQ1MDogVXBkYXRlcyBzaG9ydGN1dHMgdG8gc3RhcnQgUHl0aG9uIGluIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzI1MTY0OiBDaGFuZ2VzIGRlZmF1bHQgYWxsLXVzZXJzIGluc3RhbGwgZGlyZWN0b3J5IHRvIG1hdGNoIHBlci11c2VyCisgIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMjUxNDM6IEltcHJvdmVzIGluc3RhbGxlciBlcnJvciBtZXNzYWdlcyBmb3IgdW5zdXBwb3J0ZWQgcGxhdGZvcm1zLgorCistIElzc3VlICMyNTE2MzogRGlzcGxheSBjb3JyZWN0IGRpcmVjdG9yeSBpbiBpbnN0YWxsZXIgd2hlbiB1c2luZyBub24tZGVmYXVsdAorICBzZXR0aW5ncy4KKworLSBJc3N1ZSAjMjUzNjE6IERpc2FibGVzIHVzZSBvZiBTU0UyIGluc3RydWN0aW9ucyBpbiBXaW5kb3dzIDMyLWJpdCBidWlsZAorCistIElzc3VlICMyNTA4OTogQWRkcyBsb2dnaW5nIHRvIGluc3RhbGxlciBmb3IgY2FzZSB3aGVyZSBsYXVuY2hlciBpcyBub3QKKyAgc2VsZWN0ZWQgb24gdXBncmFkZS4KKworLSBJc3N1ZSAjMjUxNjU6IFdpbmRvd3MgdW5pbnN0YWxsYXRpb24gc2hvdWxkIG5vdCByZW1vdmUgbGF1bmNoZXIgaWYgb3RoZXIKKyAgdmVyc2lvbnMgcmVtYWluCisKKy0gSXNzdWUgIzI1MTEyOiBweS5leGUgbGF1bmNoZXIgaXMgbWlzc2luZyBpY29ucworCistIElzc3VlICMyNTEwMjogV2luZG93cyBpbnN0YWxsZXIgZG9lcyBub3QgcHJlY29tcGlsZSBmb3IgLU8gb3IgLU9PLgorCistIElzc3VlICMyNTA4MTogTWFrZXMgQmFjayBidXR0b24gaW4gaW5zdGFsbGVyIGdvIGJhY2sgdG8gdXBncmFkZSBwYWdlIHdoZW4KKyAgdXBncmFkaW5nLgorCistIElzc3VlICMyNTA5MTogSW5jcmVhc2VzIGZvbnQgc2l6ZSBvZiB0aGUgaW5zdGFsbGVyLgorCistIElzc3VlICMyNTEyNjogQ2xhcmlmaWVzIHRoYXQgdGhlIG5vbi13ZWIgaW5zdGFsbGVyIHdpbGwgZG93bmxvYWQgc29tZQorICBjb21wb25lbnRzLgorCistIElzc3VlICMyNTIxMzogUmVzdG9yZXMgcmVxdWVzdGVkRXhlY3V0aW9uTGV2ZWwgdG8gbWFuaWZlc3QgdG8gZGlzYWJsZQorICBVQUMgdmlydHVhbGl6YXRpb24uCisKKy0gSXNzdWUgIzI1MDIyOiBSZW1vdmVkIHZlcnkgb3V0ZGF0ZWQgUEMvZXhhbXBsZV9udC8gZGlyZWN0b3J5LgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjU0NDA6IEZpeCBvdXRwdXQgb2YgcHl0aG9uLWNvbmZpZyAtLWV4dGVuc2lvbi1zdWZmaXguCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjAgZmluYWw/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDE1LTA5LTEzCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyNTA3MTogV2luZG93cyBpbnN0YWxsZXIgc2hvdWxkIG5vdCByZXF1aXJlIFRhcmdldERpcgorICBwYXJhbWV0ZXIgd2hlbiBpbnN0YWxsaW5nIHF1aWV0bHkuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjAgcmVsZWFzZSBjYW5kaWRhdGUgND8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNS0wOS0wOQorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzI1MDI5OiBGaXhlcyBNZW1vcnlFcnJvciBpbiB0ZXN0X3N0cnB0aW1lLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjUwMjc6IFJldmVydHMgcGFydGlhbC1zdGF0aWMgYnVpbGQgb3B0aW9ucyBhbmQgYWRkcworICB2Y3J1bnRpbWUxNDAuZGxsIHRvIFdpbmRvd3MgaW5zdGFsbGF0aW9uLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4wIHJlbGVhc2UgY2FuZGlkYXRlIDM/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWxlYXNlIGRhdGU6IDIwMTUtMDktMDcKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI0MzA1OiBQcmV2ZW50IGltcG9ydCBzdWJzeXN0ZW0gc3RhY2sgZnJhbWVzIGZyb20gYmVpbmcgY291bnRlZAorICBieSB0aGUgd2FybmluZ3Mud2FybihzdGFja2xldmVsPSkgcGFyYW1ldGVyLgorCistIElzc3VlICMyNDkxMjogUHJldmVudCBfX2NsYXNzX18gYXNzaWdubWVudCB0byBpbW11dGFibGUgYnVpbHQtaW4gb2JqZWN0cy4KKworLSBJc3N1ZSAjMjQ5NzU6IEZpeCBBU1QgY29tcGlsYXRpb24gZm9yIFBFUCA0NDggc3ludGF4LgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzI0OTE3OiB0aW1lX3N0cmZ0aW1lKCkgYnVmZmVyIG92ZXItcmVhZC4KKworLSBJc3N1ZSAjMjQ3NDg6IFRvIHJlc29sdmUgYSBjb21wYXRpYmlsaXR5IHByb2JsZW0gZm91bmQgd2l0aCBweTJleGUgYW5kCisgIHB5d2luMzIsIGltcC5sb2FkX2R5bmFtaWMoKSBvbmNlIGFnYWluIGlnbm9yZXMgcHJldmlvdXNseSBsb2FkZWQgbW9kdWxlcworICB0byBzdXBwb3J0IFB5dGhvbiBtb2R1bGVzIHJlcGxhY2luZyB0aGVtc2VsdmVzIHdpdGggZXh0ZW5zaW9uIG1vZHVsZXMuCisgIFBhdGNoIGJ5IFBldHIgVmlrdG9yaW4uCisKKy0gSXNzdWUgIzI0NjM1OiBGaXhlZCBhIGJ1ZyBpbiB0eXBpbmcucHkgd2hlcmUgaXNpbnN0YW5jZShbXSwgdHlwaW5nLkl0ZXJhYmxlKQorICB3b3VsZCByZXR1cm4gVHJ1ZSBvbmNlLCB0aGVuIEZhbHNlIG9uIHN1YnNlcXVlbnQgY2FsbHMuCisKKy0gSXNzdWUgIzI0OTg5OiBGaXhlZCBidWZmZXIgb3ZlcnJlYWQgaW4gQnl0ZXNJTy5yZWFkbGluZSgpIGlmIGEgcG9zaXRpb24gaXMKKyAgc2V0IGJleW9uZCBzaXplLiAgQmFzZWQgb24gcGF0Y2ggYnkgSm9obiBMZWl0Y2guCisKKy0gSXNzdWUgIzI0OTEzOiBGaXggb3ZlcnJ1biBlcnJvciBpbiBkZXF1ZS5pbmRleCgpLgorICBGb3VuZCBieSBKb2huIExlaXRjaCBhbmQgQnJ5Y2UgRGFybGluZy4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMCByZWxlYXNlIGNhbmRpZGF0ZSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDE1LTA4LTI1CisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyNDc2OTogSW50ZXJwcmV0ZXIgbm93IHN0YXJ0cyBwcm9wZXJseSB3aGVuIGR5bmFtaWMgbG9hZGluZworICBpcyBkaXNhYmxlZC4gIFBhdGNoIGJ5IFBldHIgVmlrdG9yaW4uCisKKy0gSXNzdWUgIzIxMTY3OiBOQU4gb3BlcmF0aW9ucyBhcmUgbm93IGhhbmRsZWQgY29ycmVjdGx5IHdoZW4gcHl0aG9uIGlzCisgIGNvbXBpbGVkIHdpdGggSUNDIGV2ZW4gaWYgLWZwLW1vZGVsIHN0cmljdCBpcyBub3Qgc3BlY2lmaWVkLgorCistIElzc3VlICMyNDQ5MjogQSAicGFja2FnZSIgbGFja2luZyBhIF9fbmFtZV9fIGF0dHJpYnV0ZSB3aGVuIHRyeWluZyB0byBwZXJmb3JtCisgIGEgYGBmcm9tIC4uIGltcG9ydCAuLi5gYCBzdGF0ZW1lbnQgd2lsbCB0cmlnZ2VyIGFuIEltcG9ydEVycm9yIGluc3RlYWQgb2YgYW4KKyAgQXR0cmlidXRlRXJyb3IuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjQ4NDc6IFJlbW92ZXMgdmNydW50aW1lMTQwLmRsbCBkZXBlbmRlbmN5IGZyb20gVGNsL1RrLgorCistIElzc3VlICMyNDgzOTogcGxhdGZvcm0uX3N5c2NtZF92ZXIgcmFpc2VzIERlcHJlY2F0aW9uV2FybmluZworCistIElzc3VlICMyNDg2NzogRml4IFRhc2suZ2V0X3N0YWNrKCkgZm9yICdhc3luYyBkZWYnIGNvcm91dGluZXMKKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMCByZWxlYXNlIGNhbmRpZGF0ZSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDE1LTA4LTA5CisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyNDY2NzogUmVzaXplIG9kaWN0IGluIGFsbCBjYXNlcyB0aGF0IHRoZSB1bmRlcmx5aW5nIGRpY3QgcmVzaXplcy4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyNDgyNDogU2lnbmF0dXJlcyBvZiBjb2RlY3MuZW5jb2RlKCkgYW5kIGNvZGVjcy5kZWNvZGUoKSBub3cgYXJlCisgIGNvbXBhdGlibGUgd2l0aCBweWRvYy4KKworLSBJc3N1ZSAjMjQ2MzQ6IEltcG9ydGluZyB1dWlkIHNob3VsZCBub3QgdHJ5IHRvIGxvYWQgbGliYyBvbiBXaW5kb3dzCisKKy0gSXNzdWUgIzI0Nzk4OiBfbXN2Y2NvbXBpbGVyLnB5IGRvZXNuJ3QgcHJvcGVybHkgc3VwcG9ydCBtYW5pZmVzdHMKKworLSBJc3N1ZSAjNDM5NTogQmV0dGVyIHRlc3RpbmcgYW5kIGRvY3VtZW50YXRpb24gb2YgYmluYXJ5IG9wZXJhdG9ycy4KKyAgUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KKworLSBJc3N1ZSAjMjM5NzM6IFVwZGF0ZSB0eXBpbmcucHkgZnJvbSBHaXRIdWIgcmVwby4KKworLSBJc3N1ZSAjMjMwMDQ6IG1vY2tfb3BlbigpIG5vdyByZWFkcyBiaW5hcnkgZGF0YSBjb3JyZWN0bHkgd2hlbiB0aGUgdHlwZSBvZgorICByZWFkX2RhdGEgaXMgYnl0ZXMuICBJbml0aWFsIHBhdGNoIGJ5IEFhcm9uIEhpbGwuCisKKy0gSXNzdWUgIzIzODg4OiBIYW5kbGUgZnJhY3Rpb25hbCB0aW1lIGluIGNvb2tpZSBleHBpcnkuIFBhdGNoIGJ5IHNzaC4KKworLSBJc3N1ZSAjMjM2NTI6IE1ha2UgaXQgcG9zc2libGUgdG8gY29tcGlsZSB0aGUgc2VsZWN0IG1vZHVsZSBhZ2FpbnN0IHRoZQorICBsaWJjIGhlYWRlcnMgZnJvbSB0aGUgTGludXggU3RhbmRhcmQgQmFzZSwgd2hpY2ggZG8gbm90IGluY2x1ZGUgc29tZQorICBFUE9MTCBtYWNyb3MuICBQYXRjaCBieSBNYXR0IEZyYW5rLgorCistIElzc3VlICMyMjkzMjogRml4IHRpbWV6b25lcyBpbiBlbWFpbC51dGlscy5mb3JtYXRkYXRlLgorICBQYXRjaCBmcm9tIERtaXRyeSBTaGFjaG5ldi4KKworLSBJc3N1ZSAjMjM3Nzk6IGltYXBsaWIgcmFpc2VzIFR5cGVFcnJvciBpZiBhdXRoZW50aWNhdG9yIHRyaWVzIHRvIGFib3J0LgorICBQYXRjaCBmcm9tIENyYWlnIEhvbG1xdWlzdC4KKworLSBJc3N1ZSAjMjMzMTk6IEZpeCBjdHlwZXMuQmlnRW5kaWFuU3RydWN0dXJlLCBzd2FwIGNvcnJlY3RseSBieXRlcy4gUGF0Y2gKKyAgd3JpdHRlbiBieSBNYXR0aGlldSBHYXV0aWVyLgorCistIElzc3VlICMyMzI1NDogRG9jdW1lbnQgaG93IHRvIGNsb3NlIHRoZSBUQ1BTZXJ2ZXIgbGlzdGVuaW5nIHNvY2tldC4KKyAgUGF0Y2ggZnJvbSBNYXJ0aW4gUGFudGVyLgorCistIElzc3VlICMxOTQ1MDogVXBkYXRlIFdpbmRvd3MgYW5kIE9TIFggaW5zdGFsbGVyIGJ1aWxkcyB0byB1c2UgU1FMaXRlIDMuOC4xMS4KKworLSBJc3N1ZSAjMTc1Mjc6IEFkZCBQQVRDSCB0byB3c2dpcmVmLnZhbGlkYXRvci4gUGF0Y2ggZnJvbSBMdWNhIFNiYXJkZWxsYS4KKworLSBJc3N1ZSAjMjQ3OTE6IEZpeCBncmFtbWFyIHJlZ3Jlc3Npb24gZm9yIGNhbGwgc3ludGF4OiAnZyhcKmEgb3IgYiknLgorCitJRExFCistLS0tCisKKy0gSXNzdWUgIzIzNjcyOiBBbGxvdyBJZGxlIHRvIGVkaXQgYW5kIHJ1biBmaWxlcyB3aXRoIGFzdHJhbCBjaGFycyBpbiBuYW1lLgorICBQYXRjaCBieSBNb2hkIFNhbmFkIFpha2kgUml6dmkuCisKKy0gSXNzdWUgIzI0NzQ1OiBJZGxlIGVkaXRvciBkZWZhdWx0IGZvbnQuIFN3aXRjaCBmcm9tIENvdXJpZXIgdG8KKyAgcGxhdGZvcm0tc2Vuc2l0aXZlIFRrRml4ZWRGb250LiAgVGhpcyBzaG91bGQgbm90IGFmZmVjdCBjdXJyZW50IGN1c3RvbWl6ZWQKKyAgZm9udCBzZWxlY3Rpb25zLiAgSWYgdGhlcmUgaXMgYSBwcm9ibGVtLCBlZGl0ICRIT01FLy5pZGxlcmMvY29uZmlnLW1haW4uY2ZnCisgIGFuZCByZW1vdmUgJ2ZvbnR4eHgnIGVudHJpZXMgZnJvbSBbRWRpdG9yIFdpbmRvd10uICBQYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzIxMTkyOiBJZGxlIGVkaXRvci4gV2hlbiBhIGZpbGUgaXMgcnVuLCBwdXQgaXRzIG5hbWUgaW4gdGhlIHJlc3RhcnQgYmFyLgorICBEbyBub3QgcHJpbnQgZmFsc2UgcHJvbXB0cy4gT3JpZ2luYWwgcGF0Y2ggYnkgQWRuYW4gVW1lci4KKworLSBJc3N1ZSAjMTM4ODQ6IElkbGUgbWVudXMuIFJlbW92ZSB0ZWFyb2ZmIGxpbmVzLiBQYXRjaCBieSBSb2dlciBTZXJ3eS4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCiAtIElzc3VlICMyNDEyOTogQ2xhcmlmeSB0aGUgcmVmZXJlbmNlIGRvY3VtZW50YXRpb24gZm9yIG5hbWUgcmVzb2x1dGlvbi4KICAgVGhpcyBpbmNsdWRlcyByZW1vdmluZyB0aGUgYXNzdW1wdGlvbiB0aGF0IHJlYWRlcnMgd2lsbCBiZSBmYW1pbGlhciB3aXRoIHRoZQogICBuYW1lIHJlc29sdXRpb24gc2NoZW1lIFB5dGhvbiB1c2VkIHByaW9yIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2YgbGV4aWNhbApAQCAtODM0LDQyICs4NDgsMTA4OCBAQAogLSBJc3N1ZSAjMjQ3Mjk6IENvcnJlY3QgSU8gdHV0b3JpYWwgdG8gbWF0Y2ggaW1wbGVtZW50YXRpb24gcmVnYXJkaW5nCiAgIGVuY29kaW5nIHBhcmFtZXRlciB0byBvcGVuIGZ1bmN0aW9uLgogCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjQ3NTE6IFdoZW4gcnVubmluZyByZWdydGVzdCB3aXRoIHRoZSBgYC13YGAgY29tbWFuZCBsaW5lIG9wdGlvbiwKKyAgYSB0ZXN0IHJ1biBpcyBubyBsb25nZXIgbWFya2VkIGFzIGEgZmFpbHVyZSBpZiBhbGwgdGVzdHMgc3VjY2VlZCB3aGVuCisgIHJlLXJ1bi4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMCBiZXRhIDQ/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNS0wNy0yNgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjM1NzM6IFJlc3RvcmVkIG9wdGltaXphdGlvbiBvZiBieXRlcy5yZmluZCgpIGFuZCBieXRlYXJyYXkucmZpbmQoKQorICBmb3Igc2luZ2xlLWJ5dGUgYXJndW1lbnQgb24gTGludXguCisKKy0gSXNzdWUgIzI0NTY5OiBNYWtlIFBFUCA0NDggZGljdGlvbmFyeSBldmFsdWF0aW9uIG1vcmUgY29uc2lzdGVudC4KKworLSBJc3N1ZSAjMjQ1ODM6IEZpeCBjcmFzaCB3aGVuIHNldCBpcyBtdXRhdGVkIHdoaWxlIGJlaW5nIHVwZGF0ZWQuCisKKy0gSXNzdWUgIzI0NDA3OiBGaXggY3Jhc2ggd2hlbiBkaWN0IGlzIG11dGF0ZWQgd2hpbGUgYmVpbmcgdXBkYXRlZC4KKworLSBJc3N1ZSAjMjQ2MTk6IE5ldyBhcHByb2FjaCBmb3IgdG9rZW5pemluZyBhc3luYy9hd2FpdC4gQXMgYSBjb25zZXF1ZW5jZSwKKyAgaXMgaXMgbm93IHBvc3NpYmxlIHRvIGhhdmUgb25lLWxpbmUgJ2FzeW5jIGRlZiBmb28oKTogYXdhaXQgLi4nIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjMjQ2ODc6IFBsdWcgcmVmbGVhayBvbiBTeW50YXhFcnJvciBpbiBmdW5jdGlvbiBwYXJhbWV0ZXJzCisgIGFubm90YXRpb25zLgorCistIElzc3VlICMxNTk0NDogbWVtb3J5dmlldzogQWxsb3cgYXJiaXRyYXJ5IGZvcm1hdHMgd2hlbiBjYXN0aW5nIHRvIGJ5dGVzLgorICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzIzNDQxOiByY29tcGxldGVyIG5vdyBwcmludHMgYSB0YWIgY2hhcmFjdGVyIGluc3RlYWQgb2YgZGlzcGxheWluZworICBwb3NzaWJsZSBjb21wbGV0aW9ucyBmb3IgYW4gZW1wdHkgd29yZC4gIEluaXRpYWwgcGF0Y2ggYnkgTWFydGluIFNla2VyYS4KKworLSBJc3N1ZSAjMjQ2ODM6IEZpeGVkIGNyYXNoZXMgaW4gX2pzb24gZnVuY3Rpb25zIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyBvZgorICBpbmFwcHJvcHJpYXRlIHR5cGUuCisKKy0gSXNzdWUgIzIxNjk3OiBzaHV0aWwuY29weXRyZWUoKSBub3cgY29ycmVjdGx5IGhhbmRsZXMgc3ltYm9saWMgbGlua3MgdGhhdAorICBwb2ludCB0byBkaXJlY3Rvcmllcy4gIFBhdGNoIGJ5IEVkdWFyZG8gU2VhYnJhIGFuZCBUaG9tYXMgS2x1eXZlci4KKworLSBJc3N1ZSAjMTQzNzM6IEZpeGVkIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIGdjLmNvbGxlY3QoKSBpcyBjYWxsZWQgZHVyaW5nCisgIGNvbnN0cnVjdGluZyBscnVfY2FjaGUgKEMgaW1wbGVtZW50YXRpb24pLgorCistIElzc3VlICMyNDY5NTogRml4IGEgcmVncmVzc2lvbiBpbiB0cmFjZWJhY2sucHJpbnRfZXhjZXB0aW9uKCkuICBJZgorICBleGNfdHJhY2ViYWNrIGlzIE5vbmUgd2Ugc2hvdWxkbid0IHByaW50IGEgdHJhY2ViYWNrIGhlYWRlciBsaWtlIGRlc2NyaWJlZAorICBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjMjQ2MjA6IFJhbmRvbS5zZXRzdGF0ZSgpIG5vdyB2YWxpZGF0ZXMgdGhlIHZhbHVlIG9mIHN0YXRlIGxhc3QgZWxlbWVudC4KKworLSBJc3N1ZSAjMjI0ODU6IEZpeGVkIGFuIGlzc3VlIHRoYXQgY2F1c2VkIGBpbnNwZWN0LmdldHNvdXJjZWAgdG8gcmV0dXJuCisgIGluY29ycmVjdCByZXN1bHRzIG9uIG5lc3RlZCBmdW5jdGlvbnMuCisKKy0gSXNzdWUgIzIyMTUzOiBJbXByb3ZlIHVuaXR0ZXN0IGRvY3MuIFBhdGNoIGZyb20gTWFydGluIFBhbnRlciBhbmQgZXZpbHplcm8uCisKKy0gSXNzdWUgIzI0NTgwOiBTeW1ib2xpYyBncm91cCByZWZlcmVuY2VzIHRvIG9wZW4gZ3JvdXAgaW4gcmUgcGF0dGVybnMgbm93IGFyZQorICBleHBsaWNpdGx5IGZvcmJpZGRlbiBhcyB3ZWxsIGFzIG51bWVyaWMgZ3JvdXAgcmVmZXJlbmNlcy4KKworLSBJc3N1ZSAjMjQyMDY6IEZpeGVkIF9fZXFfXyBhbmQgX19uZV9fIG1ldGhvZHMgb2YgaW5zcGVjdCBjbGFzc2VzLgorCistIElzc3VlICMyNDYzMTogRml4ZWQgcmVncmVzc2lvbiBpbiB0aGUgdGltZWl0IG1vZHVsZSB3aXRoIG11bHRpbGluZSBzZXR1cC4KKworLSBJc3N1ZSAjMTg2MjI6IHVuaXR0ZXN0Lm1vY2subW9ja19vcGVuKCkucmVzZXRfbW9jayB3b3VsZCByZWN1cnNlIGluZmluaXRlbHkuCisgIFBhdGNoIGZyb20gTmljb2xhIFBhbHVtYm8gYW5kIExhdXJlbnQgRGUgQnV5c3QuCisKKy0gSXNzdWUgIzIzNjYxOiB1bml0dGVzdC5tb2NrIHNpZGVfZWZmZWN0cyBjYW4gbm93IGJlIGV4Y2VwdGlvbnMgYWdhaW4uIFRoaXMKKyAgd2FzIGEgcmVncmVzc2lvbiB2cyBQeXRob24gMy40LiBQYXRjaCBmcm9tIElnbmFjaW8gUm9zc2kKKworLSBJc3N1ZSAjMjQ2MDg6IGNodW5rLkNodW5rLnJlYWQoKSBub3cgYWx3YXlzIHJldHVybnMgYnl0ZXMsIG5vdCBzdHIuCisKKy0gSXNzdWUgIzE4Njg0OiBGaXhlZCByZWFkaW5nIG91dCBvZiB0aGUgYnVmZmVyIGluIHRoZSByZSBtb2R1bGUuCisKKy0gSXNzdWUgIzI0MjU5OiB0YXJmaWxlIG5vdyByYWlzZXMgYSBSZWFkRXJyb3IgaWYgYW4gYXJjaGl2ZSBpcyB0cnVuY2F0ZWQKKyAgaW5zaWRlIGEgZGF0YSBzZWdtZW50LgorCistIElzc3VlICMxNTAxNDogU01UUC5hdXRoKCkgYW5kIFNNVFAubG9naW4oKSBub3cgc3VwcG9ydCBSRkMgNDk1NCdzIG9wdGlvbmFsCisgIGluaXRpYWwtcmVzcG9uc2UgYXJndW1lbnQgdG8gdGhlIFNNVFAgQVVUSCBjb21tYW5kLgorCistIElzc3VlICMyNDY2OTogRml4IGluc3BlY3QuZ2V0c291cmNlKCkgZm9yICdhc3luYyBkZWYnIGZ1bmN0aW9ucy4KKyAgUGF0Y2ggYnkgS2FpIEdyb25lci4KKworLSBJc3N1ZSAjMjQ2ODg6IGFzdC5nZXRfZG9jc3RyaW5nKCkgZm9yICdhc3luYyBkZWYnIGZ1bmN0aW9ucy4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzI0NjAzOiBVcGRhdGUgV2luZG93cyBidWlsZHMgYW5kIE9TIFggMTAuNSBpbnN0YWxsZXIgdG8gdXNlIE9wZW5TU0wKKyAgMS4wLjJkLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4wIGJldGEgMz8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDE1LTA3LTA1CisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyNDQ2NzogRml4ZWQgcG9zc2libGUgYnVmZmVyIG92ZXItcmVhZCBpbiBieXRlYXJyYXkuIFRoZSBieXRlYXJyYXkKKyAgb2JqZWN0IG5vdyBhbHdheXMgYWxsb2NhdGVzIHBsYWNlIGZvciB0cmFpbGluZyBudWxsIGJ5dGUgYW5kIGl0J3MgYnVmZmVyIG5vdworICBpcyBhbHdheXMgbnVsbC10ZXJtaW5hdGVkLgorCistIFVwZ3JhZGUgdG8gVW5pY29kZSA4LjAuMC4KKworLSBJc3N1ZSAjMjQzNDU6IEFkZCBQeV90cF9maW5hbGl6ZSBzbG90IGZvciB0aGUgc3RhYmxlIEFCSS4KKworLSBJc3N1ZSAjMjQ0MDA6IEludHJvZHVjZSBhIGRpc3RpbmN0IHR5cGUgZm9yIFBFUCA0OTIgY29yb3V0aW5lczsgYWRkCisgIHR5cGVzLkNvcm91dGluZVR5cGUsIGluc3BlY3QuZ2V0Y29yb3V0aW5lc3RhdGUsIGluc3BlY3QuZ2V0Y29yb3V0aW5lbG9jYWxzOworICBjb3JvdXRpbmVzIG5vIGxvbmdlciB1c2UgQ09fR0VORVJBVE9SIGZsYWc7IHN5cy5zZXRfY29yb3V0aW5lX3dyYXBwZXIKKyAgd29ya3Mgb25seSBmb3IgJ2FzeW5jIGRlZicgY29yb3V0aW5lczsgaW5zcGVjdC5pc2Nvcm91dGluZSBubyBsb25nZXIKKyAgdXNlcyBjb2xsZWN0aW9ucy5hYmMuQ29yb3V0aW5lLCBpdCdzIGludGVuZGVkIHRvIHRlc3QgZm9yIHB1cmUgJ2FzeW5jIGRlZicKKyAgY29yb3V0aW5lcyBvbmx5OyBhZGQgbmV3IG9wY29kZTogR0VUX1lJRUxEX0ZST01fSVRFUjsgZml4IGdlbmVyYXRvcnMgd3JhcHBlcgorICB1c2VkIGluIHR5cGVzLmNvcm91dGluZSB0byBiZSBpbnN0YW5jZSBvZiBjb2xsZWN0aW9ucy5hYmMuR2VuZXJhdG9yOworICBjb2xsZWN0aW9ucy5hYmMuQXdhaXRhYmxlIGFuZCBjb2xsZWN0aW9ucy5hYmMuQ29yb3V0aW5lIGNhbiBubyBsb25nZXIKKyAgYmUgdXNlZCB0byBkZXRlY3QgZ2VuZXJhdG9yLWJhc2VkIGNvcm91dGluZXMtLXVzZSBpbnNwZWN0LmlzYXdhaXRhYmxlCisgIGluc3RlYWQuCisKKy0gSXNzdWUgIzI0NDUwOiBBZGQgZ2lfeWllbGRmcm9tIHRvIGdlbmVyYXRvcnMgYW5kIGNyX2F3YWl0IHRvIGNvcm91dGluZXMuCisgIENvbnRyaWJ1dGVkIGJ5IEJlbm5vIExlc2xpZSBhbmQgWXVyeSBTZWxpdmFub3YuCisKKy0gSXNzdWUgIzE5MjM1OiBBZGQgbmV3IFJlY3Vyc2lvbkVycm9yIGV4Y2VwdGlvbi4gUGF0Y2ggYnkgR2VvcmcgQnJhbmRsLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzIxNzUwOiBtb2NrX29wZW4ucmVhZF9kYXRhIGNhbiBub3cgYmUgcmVhZCBmcm9tIGVhY2ggaW5zdGFuY2UsIGFzIGl0CisgIGNvdWxkIGluIFB5dGhvbiAzLjMuCisKKy0gSXNzdWUgIzI0NTUyOiBGaXggdXNlIGFmdGVyIGZyZWUgaW4gYW4gZXJyb3IgY2FzZSBvZiB0aGUgX3BpY2tsZSBtb2R1bGUuCisKKy0gSXNzdWUgIzI0NTE0OiB0YXJmaWxlIG5vdyB0b2xlcmF0ZXMgbnVtYmVyIGZpZWxkcyBjb25zaXN0aW5nIG9mIG9ubHkKKyAgd2hpdGVzcGFjZS4KKworLSBJc3N1ZSAjMTkxNzY6IEZpeGVkIGRvY3R5cGUoKSByZWxhdGVkIGJ1Z3MgaW4gQyBpbXBsZW1lbnRhdGlvbiBvZiBFbGVtZW50VHJlZS4KKyAgQSBkZXByZWNhdGlvbiB3YXJuaW5nIG5vIGxvbmdlciBpc3N1ZWQgYnkgWE1MUGFyc2VyIHN1YmNsYXNzIHdpdGggZGVmYXVsdAorICBkb2N0eXBlKCkgbWV0aG9kLiAgRGlyZWN0IGNhbGwgb2YgZG9jdHlwZSgpIG5vdyBpc3N1ZXMgYSB3YXJuaW5nLiAgUGFyc2VyJ3MKKyAgZG9jdHlwZSgpIG5vdyBpcyBub3QgY2FsbGVkIGlmIHRhcmdldCdzIGRvY3R5cGUoKSBpcyBjYWxsZWQuICBCYXNlZCBvbiBwYXRjaAorICBieSBNYXJ0aW4gUGFudGVyLgorCistIElzc3VlICMyMDM4NzogUmVzdG9yZSBzZW1hbnRpYyByb3VuZC10cmlwIGNvcnJlY3RuZXNzIGluIHRva2VuaXplL3VudG9rZW5pemUKKyAgZm9yIHRhYi1pbmRlbnRlZCBibG9ja3MuCisKKy0gSXNzdWUgIzI0NDU2OiBGaXhlZCBwb3NzaWJsZSBidWZmZXIgb3Zlci1yZWFkIGluIGFkcGNtMmxpbigpIGFuZCBsaW4yYWRwY20oKQorICBmdW5jdGlvbnMgb2YgdGhlIGF1ZGlvb3AgbW9kdWxlLgorCistIElzc3VlICMyNDMzNjogVGhlIGNvbnRleHRtYW5hZ2VyIGRlY29yYXRvciBub3cgd29ya3Mgd2l0aCBmdW5jdGlvbnMgd2l0aAorICBrZXl3b3JkIGFyZ3VtZW50cyBjYWxsZWQgImZ1bmMiIGFuZCAic2VsZiIuICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgorCistIElzc3VlICMyNDUyMjogRml4IHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3cgaW4ganNvbiBhY2NlbGVyYXRvciBtb2R1bGUuCisKKy0gSXNzdWUgIzI0NDg5OiBlbnN1cmUgYSBwcmV2aW91c2x5IHNldCBDIGVycm5vIGRvZXNuJ3QgZGlzdHVyYiBjbWF0aC5wb2xhcigpLgorCistIElzc3VlICMyNDQwODogRml4ZWQgQXR0cmlidXRlRXJyb3IgaW4gbWVhc3VyZSgpIGFuZCBtZXRyaWNzKCkgbWV0aG9kcyBvZgorICB0a2ludGVyLkZvbnQuCisKKy0gSXNzdWUgIzE0MzczOiBDIGltcGxlbWVudGF0aW9uIG9mIGZ1bmN0b29scy5scnVfY2FjaGUoKSBub3cgY2FuIGJlIHVzZWQgd2l0aAorICBtZXRob2RzLgorCistIElzc3VlICMyNDM0NzogU2V0IEtleUVycm9yIGlmIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yIHJldHVybnMgTlVMTC4KKworLSBJc3N1ZSAjMjQzNDg6IERyb3Agc3VwZXJmbHVvdXMgaW5jcmVmL2RlY3JlZi4KKworLSBJc3N1ZSAjMjQzNTk6IENoZWNrIGZvciBjaGFuZ2VkIE9yZGVyZWREaWN0IHNpemUgZHVyaW5nIGl0ZXJhdGlvbi4KKworLSBJc3N1ZSAjMjQzNjg6IFN1cHBvcnQga2V5d29yZCBhcmd1bWVudHMgaW4gT3JkZXJlZERpY3QgbWV0aG9kcy4KKworLSBJc3N1ZSAjMjQzNjI6IFNpbXBsaWZ5IHRoZSBDIE9yZGVyZWREaWN0IGZhc3Qgbm9kZXMgcmVzaXplIGxvZ2ljLgorCistIElzc3VlICMyNDM3NzogRml4IGEgcmVmIGxlYWsgaW4gT3JkZXJlZERpY3QuX19yZXByX18uCisKKy0gSXNzdWUgIzI0MzY5OiBEZWZlbmQgYWdhaW5zdCBrZXktY2hhbmdlcyBkdXJpbmcgaXRlcmF0aW9uLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjQzNzM6IF90ZXN0bXVsdGlwaGFzZSBhbmQgeHhsaW1pdGVkIG5vdyB1c2UgdHBfdHJhdmVyc2UgYW5kCisgIHRwX2ZpbmFsaXplIHRvIGF2b2lkIHJlZmVyZW5jZSBsZWFrcyBlbmNvdW50ZXJlZCB3aGVuIGNvbWJpbmluZyB0cF9kZWFsbG9jCisgIHdpdGggUHlUeXBlX0Zyb21TcGVjIChzZWUgaXNzdWUgIzE2NjkwIGZvciBkZXRhaWxzKQorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI0NDU4OiBVcGRhdGUgZG9jdW1lbnRhdGlvbiB0byBjb3ZlciBtdWx0aS1waGFzZSBpbml0aWFsaXphdGlvbiBmb3IKKyAgZXh0ZW5zaW9uIG1vZHVsZXMgKFBFUCA0ODkpLiBQYXRjaCBieSBQZXRyIFZpa3RvcmluLgorCiAtIElzc3VlICMyNDM1MTogQ2xhcmlmeSB3aGF0IGlzIG1lYW50IGJ5ICJpZGVudGlmaWVyIiBpbiB0aGUgY29udGV4dCBvZgogICBzdHJpbmcuVGVtcGxhdGUgaW5zdGFuY2VzLgogCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjQ0MzI6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyBhbmQgT1MgWCAxMC41IGluc3RhbGxlciB0byB1c2UgT3BlblNTTAorICAxLjAuMmMuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjAgYmV0YSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWxlYXNlIGRhdGU6IDIwMTUtMDUtMzEKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI0Mjg0OiBUaGUgc3RhcnRzd2l0aCBhbmQgZW5kc3dpdGggbWV0aG9kcyBvZiB0aGUgc3RyIGNsYXNzIG5vIGxvbmdlcgorICByZXR1cm4gVHJ1ZSB3aGVuIGZpbmRpbmcgdGhlIGVtcHR5IHN0cmluZyBhbmQgdGhlIGluZGV4ZXMgYXJlIGNvbXBsZXRlbHkgb3V0CisgIG9mIHJhbmdlLgorCistIElzc3VlICMyNDExNTogVXBkYXRlIHVzZXMgb2YgUHlPYmplY3RfSXNUcnVlKCksIFB5T2JqZWN0X05vdCgpLAorICBQeU9iamVjdF9Jc0luc3RhbmNlKCksIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgpIGFuZCBfUHlEaWN0X0NvbnRhaW5zKCkKKyAgdG8gY2hlY2sgZm9yIGFuZCBoYW5kbGUgZXJyb3JzIGNvcnJlY3RseS4KKworLSBJc3N1ZSAjMjQzMjg6IEZpeCBpbXBvcnRpbmcgb25lIGNoYXJhY3RlciBleHRlbnNpb24gbW9kdWxlcy4KKworLSBJc3N1ZSAjMTEyMDU6IEluIGRpY3Rpb25hcnkgZGlzcGxheXMsIGV2YWx1YXRlIHRoZSBrZXkgYmVmb3JlIHRoZSB2YWx1ZS4KKworLSBJc3N1ZSAjMjQyODU6IEZpeGVkIHJlZ3Jlc3Npb24gdGhhdCBwcmV2ZW50ZWQgaW1wb3J0aW5nIGV4dGVuc2lvbiBtb2R1bGVzCisgIGZyb20gaW5zaWRlIHBhY2thZ2VzLiBQYXRjaCBieSBQZXRyIFZpa3RvcmluLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzIzMjQ3OiBGaXggYSBjcmFzaCBpbiB0aGUgU3RyZWFtV3JpdGVyLnJlc2V0KCkgb2YgQ0pLIGNvZGVjcy4KKworLSBJc3N1ZSAjMjQyNzA6IEFkZCBtYXRoLmlzY2xvc2UoKSBhbmQgY21hdGguaXNjbG9zZSgpIGZ1bmN0aW9ucyBhcyBwZXIgUEVQIDQ4NS4KKyAgQ29udHJpYnV0ZWQgYnkgQ2hyaXMgQmFya2VyIGFuZCBUYWwgRWluYXQuCisKKy0gSXNzdWUgIzU2MzM6IEZpeGVkIHRpbWVpdCB3aGVuIHRoZSBzdGF0ZW1lbnQgaXMgYSBzdHJpbmcgYW5kIHRoZSBzZXR1cCBpcyBub3QuCisKKy0gSXNzdWUgIzI0MzI2OiBGaXhlZCBhdWRpb29wLnJhdGVjdigpIHdpdGggbm9uLWRlZmF1bHQgd2VpZ2h0QiBhcmd1bWVudC4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgRGF2aWQgTW9vcmUuCisKKy0gSXNzdWUgIzE2OTkxOiBBZGQgYSBDIGltcGxlbWVudGF0aW9uIG9mIE9yZGVyZWREaWN0LgorCistIElzc3VlICMyMzkzNDogRml4IGluc3BlY3Quc2lnbmF0dXJlIHRvIGZhaWwgY29ycmVjdGx5IGZvciBidWlsdGluIHR5cGVzCisgIGxhY2tpbmcgc2lnbmF0dXJlIGluZm9ybWF0aW9uLiAgSW5pdGlhbCBwYXRjaCBieSBKYW1lcyBQb3dlbGwuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjAgYmV0YSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWxlYXNlIGRhdGU6IDIwMTUtMDUtMjQKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI0Mjc2OiBGaXhlZCBvcHRpbWl6YXRpb24gb2YgcHJvcGVydHkgZGVzY3JpcHRvciBnZXR0ZXIuCisKKy0gSXNzdWUgIzI0MjY4OiBQRVAgNDg5OiBNdWx0aS1waGFzZSBleHRlbnNpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgorICBQYXRjaCBieSBQZXRyIFZpa3RvcmluLgorCistIElzc3VlICMyMzk1NTogQWRkIHB5dmVudi5jZmcgb3B0aW9uIHRvIHN1cHByZXNzIHJlZ2lzdHJ5L2Vudmlyb25tZW50CisgIGxvb2t1cCBmb3IgZ2VuZXJhdGluZyBzeXMucGF0aCBvbiBXaW5kb3dzLgorCistIElzc3VlICMyNDI1NzogRml4ZWQgc3lzdGVtIGVycm9yIGluIHRoZSBjb21wYXJpc29uIG9mIGZha2VkCisgIHR5cGVzLlNpbXBsZU5hbWVzcGFjZS4KKworLSBJc3N1ZSAjMjI5Mzk6IEZpeGVkIGludGVnZXIgb3ZlcmZsb3cgaW4gaXRlcmF0b3Igb2JqZWN0LiAgUGF0Y2ggYnkKKyAgQ2xlbWVudCBSb3VhdWx0LgorCistIElzc3VlICMyMzk4NTogRml4IGEgcG9zc2libGUgYnVmZmVyIG92ZXJydW4gd2hlbiBkZWxldGluZyBhIHNsaWNlIGZyb20KKyAgdGhlIGZyb250IG9mIGEgYnl0ZWFycmF5IGFuZCB0aGVuIGFwcGVuZGluZyBzb21lIG90aGVyIGJ5dGVzIGRhdGEuCisKKy0gSXNzdWUgIzI0MTAyOiBGaXhlZCBleGNlcHRpb24gdHlwZSBjaGVja2luZyBpbiBzdGFuZGFyZCBlcnJvciBoYW5kbGVycy4KKworLSBJc3N1ZSAjMTUwMjc6IFRoZSBVVEYtMzIgZW5jb2RlciBpcyBub3cgM3ggdG8gN3ggZmFzdGVyLgorCistIElzc3VlICMyMzI5MDogT3B0aW1pemUgc2V0X21lcmdlKCkgZm9yIGNhc2VzIHdoZXJlIHRoZSB0YXJnZXQgaXMgZW1wdHkuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthLikKKworLSBJc3N1ZSAjMjI5MjogUEVQIDQ0ODogQWRkaXRpb25hbCBVbnBhY2tpbmcgR2VuZXJhbGl6YXRpb25zLgorCistIElzc3VlICMyNDA5NjogTWFrZSB3YXJuaW5ncy53YXJuX2V4cGxpY2l0IG1vcmUgcm9idXN0IGFnYWluc3QgbXV0YXRpb24gb2YgdGhlCisgIHdhcm5pbmdzLmZpbHRlcnMgbGlzdC4KKworLSBJc3N1ZSAjMjM5OTY6IEF2b2lkIGEgY3Jhc2ggd2hlbiBhIGRlbGVnYXRlZCBnZW5lcmF0b3IgcmFpc2VzIGFuCisgIHVubm9ybWFsaXplZCBTdG9wSXRlcmF0aW9uIGV4Y2VwdGlvbi4gIFBhdGNoIGJ5IFN0ZWZhbiBCZWhuZWwuCisKKy0gSXNzdWUgIzIzOTEwOiBPcHRpbWl6ZSBwcm9wZXJ0eSgpIGdldHRlciBjYWxscy4gIFBhdGNoIGJ5IEpvZSBKZXZuaWsuCisKKy0gSXNzdWUgIzIzOTExOiBNb3ZlIHBhdGgtYmFzZWQgaW1wb3J0bGliIGJvb3RzdHJhcCBjb2RlIHRvIGEgc2VwYXJhdGUKKyAgZnJvemVuIG1vZHVsZS4KKworLSBJc3N1ZSAjMjQxOTI6IEZpeCBuYW1lc3BhY2UgcGFja2FnZSBpbXBvcnRzLgorCistIElzc3VlICMyNDAyMjogRml4IHRva2VuaXplciBjcmFzaCB3aGVuIHByb2Nlc3NpbmcgdW5kZWNvZGFibGUgc291cmNlIGNvZGUuCisKKy0gSXNzdWUgIzk5NTE6IEFkZGVkIGEgaGV4KCkgbWV0aG9kIHRvIGJ5dGVzLCBieXRlYXJyYXksIGFuZCBtZW1vcnl2aWV3LgorCistIElzc3VlICMyMjkwNjogUEVQIDQ3OTogQ2hhbmdlIFN0b3BJdGVyYXRpb24gaGFuZGxpbmcgaW5zaWRlIGdlbmVyYXRvcnMuCisKKy0gSXNzdWUgIzI0MDE3OiBQRVAgNDkyOiBDb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0IHN5bnRheC4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxNDM3MzogQWRkZWQgQyBpbXBsZW1lbnRhdGlvbiBvZiBmdW5jdG9vbHMubHJ1X2NhY2hlKCkuICBCYXNlZCBvbgorICBwYXRjaGVzIGJ5IE1hdHQgSm9pbmVyIGFuZCBBbGV4ZXkgS2FjaGF5ZXYuCisKKy0gSXNzdWUgIzI0MjMwOiBUaGUgdGVtcGZpbGUgbW9kdWxlIG5vdyBhY2NlcHRzIGJ5dGVzIGZvciBwcmVmaXgsIHN1ZmZpeCBhbmQgZGlyCisgIHBhcmFtZXRlcnMgYW5kIHJldHVybnMgYnl0ZXMgaW4gc3VjaCBzaXR1YXRpb25zIChtYXRjaGluZyB0aGUgb3MgbW9kdWxlIEFQSXMpLgorCistIElzc3VlICMyMjE4OTogY29sbGVjdGlvbnMuVXNlclN0cmluZyBub3cgc3VwcG9ydHMgX19nZXRuZXdhcmdzX18oKSwKKyAgX19ybW9kX18oKSwgY2FzZWZvbGQoKSwgZm9ybWF0X21hcCgpLCBpc3ByaW50YWJsZSgpLCBhbmQgbWFrZXRyYW5zKCkuCisgIFBhdGNoIGJ5IEpvZSBKZXZuaWsuCisKKy0gSXNzdWUgIzI0MjQ0OiBQcmV2ZW50cyB0ZXJtaW5hdGlvbiB3aGVuIGFuIGludmFsaWQgZm9ybWF0IHN0cmluZyBpcworICBlbmNvdW50ZXJlZCBvbiBXaW5kb3dzIGluIHN0cmZ0aW1lLgorCistIElzc3VlICMyMzk3MzogUEVQIDQ4NDogQWRkIHRoZSB0eXBpbmcgbW9kdWxlLgorCistIElzc3VlICMyMzA4NjogVGhlIGNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZSgpIGFic3RyYWN0IGJhc2UgY2xhc3MgYWRkZWQKKyAgKnN0YXJ0KiBhbmQgKnN0b3AqIHBhcmFtZXRlcnMgdG8gdGhlIGluZGV4KCkgbWl4aW4uCisgIFBhdGNoIGJ5IERldmluIEplYW5waWVycmUuCisKKy0gSXNzdWUgIzIwMDM1OiBSZXBsYWNlZCB0aGUgYGB0a2ludGVyLl9maXhgYCBtb2R1bGUgdXNlZCBmb3Igc2V0dGluZyB1cCB0aGUKKyAgVGNsL1RrIGVudmlyb25tZW50IG9uIFdpbmRvd3Mgd2l0aCBhIHByaXZhdGUgZnVuY3Rpb24gaW4gdGhlIGBgX3RraW50ZXJgYAorICBtb2R1bGUgdGhhdCBtYWtlcyBubyBwZXJtYW5lbnQgY2hhbmdlcyB0byB0aGUgZW52aXJvbm1lbnQuCisKKy0gSXNzdWUgIzI0MjU3OiBGaXhlZCBzZWdtZW50YXRpb24gZmF1bHQgaW4gc3FsaXRlMy5Sb3cgY29uc3RydWN0b3Igd2l0aCBmYWtlZAorICBjdXJzb3IgdHlwZS4KKworLSBJc3N1ZSAjMTU4MzY6IGFzc2VydFJhaXNlcygpLCBhc3NlcnRSYWlzZXNSZWdleCgpLCBhc3NlcnRXYXJucygpIGFuZAorICBhc3NlcnRXYXJuc1JlZ2V4KCkgYXNzZXJ0bWVudHMgbm93IGNoZWNrIHRoZSB0eXBlIG9mIHRoZSBmaXJzdCBhcmd1bWVudAorICB0byBwcmV2ZW50IHBvc3NpYmxlIHVzZXIgZXJyb3IuICBCYXNlZCBvbiBwYXRjaCBieSBEYW5pZWwgV2FnbmVyLUhhbGwuCisKKy0gSXNzdWUgIzk4NTg6IEFkZCBtaXNzaW5nIG1ldGhvZCBzdHVicyB0byBfaW8uUmF3SU9CYXNlLiAgUGF0Y2ggYnkgTGF1cmEKKyAgUnVwcHJlY2h0LgorCistIElzc3VlICMyMjk1NTogYXR0cmdldHRlciwgaXRlbWdldHRlciBhbmQgbWV0aG9kY2FsbGVyIG9iamVjdHMgaW4gdGhlIG9wZXJhdG9yCisgIG1vZHVsZSBub3cgc3VwcG9ydCBwaWNrbGluZy4gIEFkZGVkIHJlYWRhYmxlIGFuZCBldmFsdWFibGUgcmVwciBmb3IgdGhlc2UKKyAgb2JqZWN0cy4gIEJhc2VkIG9uIHBhdGNoIGJ5IEpvc2ggUm9zZW5iZXJnLgorCistIElzc3VlICMyMjEwNzogdGVtcGZpbGUuZ2V0dGVtcGRpcigpIGFuZCB0ZW1wZmlsZS5ta2R0ZW1wKCkgbm93IHRyeSBhZ2FpbgorICB3aGVuIGEgZGlyZWN0b3J5IHdpdGggdGhlIGNob3NlbiBuYW1lIGFscmVhZHkgZXhpc3RzIG9uIFdpbmRvd3MgYXMgd2VsbCBhcworICBvbiBVbml4LiAgdGVtcGZpbGUubWtzdGVtcCgpIG5vdyBmYWlscyBlYXJseSBpZiBwYXJlbnQgZGlyZWN0b3J5IGlzIG5vdAorICB2YWxpZCAobm90IGV4aXN0cyBvciBpcyBhIGZpbGUpIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzIzNzgwOiBJbXByb3ZlZCBlcnJvciBtZXNzYWdlIGluIG9zLnBhdGguam9pbigpIHdpdGggc2luZ2xlIGFyZ3VtZW50LgorCistIElzc3VlICM2NTk4OiBJbmNyZWFzZWQgdGltZSBwcmVjaXNpb24gYW5kIHJhbmRvbSBudW1iZXIgcmFuZ2UgaW4KKyAgZW1haWwudXRpbHMubWFrZV9tc2dpZCgpIHRvIHN0cmVuZ3RoZW4gdGhlIHVuaXF1ZW5lc3Mgb2YgdGhlIG1lc3NhZ2UgSUQuCisKKy0gSXNzdWUgIzI0MDkxOiBGaXhlZCB2YXJpb3VzIGNyYXNoZXMgaW4gY29ybmVyIGNhc2VzIGluIEMgaW1wbGVtZW50YXRpb24gb2YKKyAgRWxlbWVudFRyZWUuCisKKy0gSXNzdWUgIzIxOTMxOiBtc2lsaWIuRkNJQ3JlYXRlKCkgbm93IHJhaXNlcyBUeXBlRXJyb3IgaW4gdGhlIGNhc2Ugb2YgYSBiYWQKKyAgYXJndW1lbnQgaW5zdGVhZCBvZiBhIFZhbHVlRXJyb3Igd2l0aCBhIGJvZ3VzIEZDSSBlcnJvciBudW1iZXIuCisgIFBhdGNoIGJ5IEplZmZyZXkgQXJtc3Ryb25nLgorCistIElzc3VlICMxMzg2NjogKnF1b3RlX3ZpYSogYXJndW1lbnQgYWRkZWQgdG8gdXJsbGliLnBhcnNlLnVybGVuY29kZS4KKworLSBJc3N1ZSAjMjAwOTg6IE5ldyBtYW5nbGVfZnJvbSBwb2xpY3kgb3B0aW9uIGZvciBlbWFpbCwgZGVmYXVsdCBUcnVlCisgIGZvciBjb21wYXQzMiwgYnV0IEZhbHNlIGZvciBhbGwgb3RoZXIgcG9saWNpZXMuCisKKy0gSXNzdWUgIzI0MjExOiBUaGUgZW1haWwgbGlicmFyeSBub3cgc3VwcG9ydHMgUkZDIDY1MzI6IGl0IGNhbiBnZW5lcmF0ZQorICBoZWFkZXJzIHVzaW5nIHV0Zi04IGluc3RlYWQgb2YgZW5jb2RlZCB3b3Jkcy4KKworLSBJc3N1ZSAjMTYzMTQ6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBMWk1BIGNvbXByZXNzaW9uIGluIGRpc3R1dGlscy4KKworLSBJc3N1ZSAjMjE4MDQ6IHBvcGxpYiBub3cgc3VwcG9ydHMgUkZDIDY4NTYgKFVURjgpLgorCistIElzc3VlICMxODY4MjogT3B0aW1pemVkIHBwcmludCBmdW5jdGlvbnMgZm9yIGJ1aWx0aW4gc2NhbGFyIHR5cGVzLgorCistIElzc3VlICMyMjAyNzogc210cGxpYiBub3cgc3VwcG9ydHMgUkZDIDY1MzEgKFNNVFBVVEY4KS4KKworLSBJc3N1ZSAjMjM0ODg6IFJhbmRvbSBnZW5lcmF0b3Igb2JqZWN0cyBub3cgY29uc3VtZSAyeCBsZXNzIG1lbW9yeSBvbiA2NC1iaXQuCisKKy0gSXNzdWUgIzEzMjI6IHBsYXRmb3JtLmRpc3QoKSBhbmQgcGxhdGZvcm0ubGludXhfZGlzdHJpYnV0aW9uKCkgZnVuY3Rpb25zIGFyZQorICBub3cgZGVwcmVjYXRlZC4gIEluaXRpYWwgcGF0Y2ggYnkgVmFqcmFza3kgS29rLgorCistIElzc3VlICMyMjQ4NjogQWRkZWQgdGhlIG1hdGguZ2NkKCkgZnVuY3Rpb24uICBUaGUgZnJhY3Rpb25zLmdjZCgpIGZ1bmN0aW9uIG5vdyBpcworICBkZXByZWNhdGVkLiAgQmFzZWQgb24gcGF0Y2ggYnkgTWFyayBEaWNraW5zb24uCisKKy0gSXNzdWUgIzI0MDY0OiBQcm9wZXJ0eSgpIGRvY3N0cmluZ3MgYXJlIG5vdyB3cml0ZWFibGUuCisgIChQYXRjaCBieSBCZXJrZXIgUGVrc2FnLikKKworLSBJc3N1ZSAjMjI2ODE6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBrb2k4X3QgZW5jb2RpbmcuCisKKy0gSXNzdWUgIzIyNjgyOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUga3oxMDQ4IGVuY29kaW5nLgorCistIElzc3VlICMyMzc5NjogcGVlayBhbmQgcmVhZDEgbWV0aG9kcyBvZiBCdWZmZXJlZFJlYWRlciBub3cgcmFpc2UgVmFsdWVFcnJvcgorICBpZiB0aGV5IGNhbGxlZCBvbiBhIGNsb3NlZCBvYmplY3QuIFBhdGNoIGJ5IEpvaG4gSGVyZ2Vucm9lZGVyLgorCistIElzc3VlICMyMTc5NTogc210cGQgbm93IHN1cHBvcnRzIHRoZSA4QklUTUlNRSBleHRlbnNpb24gd2hlbmV2ZXIKKyAgdGhlIG5ldyAqZGVjb2RlX2RhdGEqIGNvbnN0cnVjdG9yIGFyZ3VtZW50IGlzIHNldCB0byBGYWxzZS4KKworLSBJc3N1ZSAjMjQxNTU6IG9wdGltaXplIGhlYXBxLmhlYXBpZnkoKSBmb3IgYmV0dGVyIGNhY2hlIHBlcmZvcm1hbmNlCisgIHdoZW4gaGVhcGlmeWluZyBsYXJnZSBsaXN0cy4KKworLSBJc3N1ZSAjMjE4MDA6IGltYXBsaWIgbm93IHN1cHBvcnRzIFJGQyA1MTYxIChlbmFibGUpLCBSRkMgNjg1NQorICAodXRmOC9pbnRlcm5hdGlvbmFsaXplZCBlbWFpbCkgYW5kIGF1dG9tYXRpY2FsbHkgZW5jb2RlcyBub24tQVNDSUkKKyAgdXNlcm5hbWVzIGFuZCBwYXNzd29yZHMgdG8gVVRGOC4KKworLSBJc3N1ZSAjMjAyNzQ6IFdoZW4gY2FsbGluZyBhIF9zcWxpdGUuQ29ubmVjdGlvbiwgaXQgbm93IGNvbXBsYWlucyBpZiBwYXNzZWQKKyAgYW55IGtleXdvcmQgYXJndW1lbnRzLiAgUHJldmlvdXNseSBpdCBzaWxlbnRseSBpZ25vcmVkIHRoZW0uCisKKy0gSXNzdWUgIzIwMjc0OiBSZW1vdmUgaWdub3JlZCBhbmQgZXJyb25lb3VzICJrd2FyZ3MiIHBhcmFtZXRlcnMgZnJvbSB0aHJlZQorICBNRVRIX1ZBUkFSR1MgbWV0aG9kcyBvbiBfc3FsaXRlLkNvbm5lY3Rpb24uCisKKy0gSXNzdWUgIzI0MTM0OiBhc3NlcnRSYWlzZXMoKSwgYXNzZXJ0UmFpc2VzUmVnZXgoKSwgYXNzZXJ0V2FybnMoKSBhbmQKKyAgYXNzZXJ0V2FybnNSZWdleCgpIGNoZWNrcyBub3cgZW1pdHMgYSBkZXByZWNhdGlvbiB3YXJuaW5nIHdoZW4gY2FsbGFibGUgaXMKKyAgTm9uZSBvciBrZXl3b3JkIGFyZ3VtZW50cyBleGNlcHQgbXNnIGlzIHBhc3NlZCBpbiB0aGUgY29udGV4dCBtYW5hZ2VyIG1vZGUuCisKKy0gSXNzdWUgIzI0MDE4OiBBZGQgYSBjb2xsZWN0aW9ucy5hYmMuR2VuZXJhdG9yIGFic3RyYWN0IGJhc2UgY2xhc3MuCisgIENvbnRyaWJ1dGVkIGJ5IFN0ZWZhbiBCZWhuZWwuCisKKy0gSXNzdWUgIzIzODgwOiBUa2ludGVyJ3MgZ2V0aW50KCkgYW5kIGdldGRvdWJsZSgpIG5vdyBzdXBwb3J0IFRjbF9PYmouCisgIFRraW50ZXIncyBnZXRkb3VibGUoKSBub3cgc3VwcG9ydHMgYW55IG51bWJlcnMgKGluIHBhcnRpY3VsYXIgaW50KS4KKworLSBJc3N1ZSAjMjI2MTk6IEFkZGVkIG5lZ2F0aXZlIGxpbWl0IHN1cHBvcnQgaW4gdGhlIHRyYWNlYmFjayBtb2R1bGUuCisgIEJhc2VkIG9uIHBhdGNoIGJ5IERtaXRyeSBLYXpha292LgorCistIElzc3VlICMyNDA5NDogRml4IHBvc3NpYmxlIGNyYXNoIGluIGpzb24uZW5jb2RlIHdpdGggcG9vcmx5IGJlaGF2ZWQgZGljdAorICBzdWJjbGFzc2VzLgorCistIElzc3VlICM5MjQ2OiBPbiBQT1NJWCwgb3MuZ2V0Y3dkKCkgbm93IHN1cHBvcnRzIHBhdGhzIGxvbmdlciB0aGFuIDEwMjUgYnl0ZXMuCisgIFBhdGNoIHdyaXR0ZW4gYnkgV2lsbGlhbSBPcnIuCisKKy0gSXNzdWUgIzE3NDQ1OiBhZGQgZGlmZmxpYi5kaWZmX2J5dGVzKCkgdG8gc3VwcG9ydCBjb21wYXJpc29uIG9mCisgIGJ5dGUgc3RyaW5ncyAoZml4ZXMgYSByZWdyZXNzaW9uIGZyb20gUHl0aG9uIDIpLgorCistIElzc3VlICMyMzkxNzogRmFsbCBiYWNrIHRvIHNlcXVlbnRpYWwgY29tcGlsYXRpb24gd2hlbiBQcm9jZXNzUG9vbEV4ZWN1dG9yCisgIGRvZXNuJ3QgZXhpc3QuICBQYXRjaCBieSBDbGF1ZGl1IFBvcGEuCisKKy0gSXNzdWUgIzIzMDA4OiBGaXhlZCByZXNvbHZpbmcgYXR0cmlidXRlcyB3aXRoIGJvb2xlYW4gdmFsdWUgaXMgRmFsc2UgaW4gcHlkb2MuCisKKy0gRml4IGFzeW5jaW8gaXNzdWUgMjM1OiBMaWZvUXVldWUgYW5kIFByaW9yaXR5UXVldWUncyBwdXQgZGlkbid0CisgIGluY3JlbWVudCB1bmZpbmlzaGVkIHRhc2tzICh0aGlzIGJ1ZyB3YXMgaW50cm9kdWNlZCB3aGVuCisgIEpvaW5hYmxlUXVldWUgd2FzIG1lcmdlZCB3aXRoIFF1ZXVlKS4KKworLSBJc3N1ZSAjMjM5MDg6IG9zIGZ1bmN0aW9ucyBub3cgcmVqZWN0IHBhdGhzIHdpdGggZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIKKyAgb24gV2luZG93cyBpbnN0ZWFkIG9mIHNpbGVudGx5IHRydW5jYXRlIHRoZW0uCisKKy0gSXNzdWUgIzIzNzI4OiBiaW5hc2NpaS5jcmNfaHF4KCkgY291bGQgcmV0dXJuIGFuIGludGVnZXIgb3V0c2lkZSBvZiB0aGUgcmFuZ2UKKyAgMC0weGZmZmYgZm9yIGVtcHR5IGRhdGEuCisKKy0gSXNzdWUgIzIzODg3OiB1cmxsaWIuZXJyb3IuSFRUUEVycm9yIG5vdyBoYXMgYSBwcm9wZXIgcmVwcigpIHJlcHJlc2VudGF0aW9uLgorICBQYXRjaCBieSBCZXJrZXIgUGVrc2FnLgorCistIGFzeW5jaW86IE5ldyBldmVudCBsb29wIEFQSXM6IHNldF90YXNrX2ZhY3RvcnkoKSBhbmQgZ2V0X3Rhc2tfZmFjdG9yeSgpLgorCistIGFzeW5jaW86IGFzeW5jKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZW5zdXJlX2Z1dHVyZSgpLgorCistIElzc3VlICMyNDE3ODogYXN5bmNpby5Mb2NrLCBDb25kaXRpb24sIFNlbWFwaG9yZSwgYW5kIEJvdW5kZWRTZW1hcGhvcmUKKyAgc3VwcG9ydCBuZXcgJ2FzeW5jIHdpdGgnIHN5bnRheC4gIENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LgorCistIElzc3VlICMyNDE3OTogU3VwcG9ydCAnYXN5bmMgZm9yJyBmb3IgYXN5bmNpby5TdHJlYW1SZWFkZXIuCisgIENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LgorCistIElzc3VlICMyNDE4NDogQWRkIEFzeW5jSXRlcmF0b3IgYW5kIEFzeW5jSXRlcmFibGUgQUJDcyB0bworICBjb2xsZWN0aW9ucy5hYmMuICBDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdi4KKworLSBJc3N1ZSAjMjI1NDc6IEltcGxlbWVudCBpbmZvcm1hdGl2ZSBfX3JlcHJfXyBmb3IgaW5zcGVjdC5Cb3VuZEFyZ3VtZW50cy4KKyAgQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YuCisKKy0gSXNzdWUgIzI0MTkwOiBJbXBsZW1lbnQgaW5zcGVjdC5Cb3VuZEFyZ3VtZW50LmFwcGx5X2RlZmF1bHRzKCkgbWV0aG9kLgorICBDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdi4KKworLSBJc3N1ZSAjMjA2OTE6IEFkZCAnZm9sbG93X3dyYXBwZWQnIGFyZ3VtZW50IHRvCisgIGluc3BlY3QuU2lnbmF0dXJlLmZyb21fY2FsbGFibGUoKSBhbmQgaW5zcGVjdC5zaWduYXR1cmUoKS4KKyAgQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YuCisKKy0gSXNzdWUgIzI0MjQ4OiBEZXByZWNhdGUgaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9mdW5jdGlvbigpIGFuZAorICBpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2J1aWx0aW4oKS4KKworLSBJc3N1ZSAjMjM4OTg6IEZpeCBpbnNwZWN0LmNsYXNzaWZ5X2NsYXNzX2F0dHJzKCkgdG8gc3VwcG9ydCBhdHRyaWJ1dGVzCisgIHdpdGggb3ZlcmxvYWRlZCBfX2VxX18gYW5kIF9fYm9vbF9fLiAgUGF0Y2ggYnkgTWlrZSBCYXllci4KKworLSBJc3N1ZSAjMjQyOTg6IEZpeCBpbnNwZWN0LnNpZ25hdHVyZSgpIHRvIGNvcnJlY3RseSB1bndyYXAgd3JhcHBlcnMKKyAgYXJvdW5kIGJvdW5kIG1ldGhvZHMuCisKK0lETEUKKy0tLS0KKworLSBJc3N1ZSAjMjMxODQ6IHJlbW92ZSB1bnVzZWQgbmFtZXMgYW5kIGltcG9ydHMgaW4gaWRsZWxpYi4KKyAgSW5pdGlhbCBwYXRjaCBieSBBbCBTd2VpZ2FydC4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzIxNTIwOiB0ZXN0X3ppcGZpbGUgbm8gbG9uZ2VyIGZhaWxzIGlmIHRoZSB3b3JkICdiYWQnIGFwcGVhcnMKKyAgYW55d2hlcmUgaW4gdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorCistIElzc3VlICM5NTE3OiBNb3ZlIHNjcmlwdF9oZWxwZXIgaW50byB0aGUgc3VwcG9ydCBwYWNrYWdlLgorICBQYXRjaCBieSBDaHJpc3RpZSBXaWxzb24uCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKwogLSBJc3N1ZSAjMjIxNTU6IEFkZCBGaWxlIEhhbmRsZXJzIHN1YnNlY3Rpb24gd2l0aCBjcmVhdGVmaWxlaGFuZGxlciB0byB0a2ludGVyCiAgIGRvYy4gIFJlbW92ZSBvYnNvbGV0ZSBleGFtcGxlIGZyb20gRkFRLiAgUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KIAogLSBJc3N1ZSAjMjQwMjk6IERvY3VtZW50IHRoZSBuYW1lIGJpbmRpbmcgYmVoYXZpb3IgZm9yIHN1Ym1vZHVsZSBpbXBvcnRzLgogCi0tIElzc3VlICMyNDA3NzogRml4IHR5cG8gaW4gbWFuIHBhZ2UgZm9yIC1JIGNvbW1hbmQgb3B0aW9uOiAtcywgbm90IC1TLgorLSBJc3N1ZSAjMjQwNzc6IEZpeCB0eXBvIGluIG1hbiBwYWdlIGZvciAtSSBjb21tYW5kIG9wdGlvbjogLXMsIG5vdCAtUwogCiBUb29scy9EZW1vcwogLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMjU0NDA6IEZpeCBvdXRwdXQgb2YgcHl0aG9uLWNvbmZpZyAtLWV4dGVuc2lvbi1zdWZmaXguCistIElzc3VlICMyNDAwMDogSW1wcm92ZWQgQXJndW1lbnQgQ2xpbmljJ3MgbWFwcGluZyBvZiBjb252ZXJ0ZXJzIHRvIGxlZ2FjeQorICAiZm9ybWF0IHVuaXRzIi4gIFVwZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24gdG8gbWF0Y2guCisKKy0gSXNzdWUgIzI0MDAxOiBBcmd1bWVudCBDbGluaWMgY29udmVydGVycyBub3cgdXNlIGFjY2VwdD17dHlwZX0KKyAgaW5zdGVhZCBvZiB0eXBlcz17J3R5cGUnfSB0byBzcGVjaWZ5IHRoZSB0eXBlcyB0aGUgY29udmVydGVyIGFjY2VwdHMuCiAKIC0gSXNzdWUgIzIzMzMwOiBoMnB5IG5vdyBzdXBwb3J0cyBhcmJpdHJhcnkgZmlsZW5hbWVzIGluICNpbmNsdWRlLgogCiAtIElzc3VlICMyNDAzMTogbWFrZSBwYXRjaGNoZWNrIG5vdyBzdXBwb3J0cyBnaXQgY2hlY2tvdXRzLCB0b28uCiAKLVdpbmRvd3MKLS0tLS0tLS0KIAotLSBJc3N1ZSAjMjQzMDY6IFNldHMgY29tcG9uZW50IElEIGZvciBsYXVuY2hlciB0byBtYXRjaCAzLjUgYW5kIGxhdGVyCi0gIHRvIGF2b2lkIGRvd25ncmFkaW5nLgorV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjAgYWxwaGEgND8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLS0gSXNzdWUgIzI1MDIyOiBSZW1vdmVkIHZlcnkgb3V0ZGF0ZWQgUEMvZXhhbXBsZV9udC8gZGlyZWN0b3J5LgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNC4zPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVJlbGVhc2UgZGF0ZTogMjAxNS0wMi0yMworUmVsZWFzZSBkYXRlOiAyMDE1LTA0LTE5CiAKIENvcmUgYW5kIEJ1aWx0aW5zCiAtLS0tLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMyMjk4MDogVW5kZXIgTGludXgsIEdOVS9LRnJlZUJTRCBhbmQgdGhlIEh1cmQsIEMgZXh0ZW5zaW9ucyBub3cgaW5jbHVkZQorICB0aGUgYXJjaGl0ZWN0dXJlIHRyaXBsZXQgaW4gdGhlIGV4dGVuc2lvbiBuYW1lLCB0byBtYWtlIGl0IGVhc3kgdG8gdGVzdCBidWlsZHMKKyAgZm9yIGRpZmZlcmVudCBBQklzIGluIHRoZSBzYW1lIHdvcmtpbmcgdHJlZS4gIFVuZGVyIE9TIFgsIHRoZSBleHRlbnNpb24gbmFtZQorICBub3cgaW5jbHVkZXMgUEVQIDMxNDktc3R5bGUgaW5mb3JtYXRpb24uCisKKy0gSXNzdWUgIzIyNjMxOiBBZGRlZCBMaW51eC1zcGVjaWZpYyBzb2NrZXQgY29uc3RhbnQgQ0FOX1JBV19GRF9GUkFNRVMuCisgIFBhdGNoIGNvdXJ0ZXN5IG9mIEpvZSBKZXZuaWsuCisKKy0gSXNzdWUgIzIzNzMxOiBJbXBsZW1lbnQgUEVQIDQ4ODogcmVtb3ZhbCBvZiAucHlvIGZpbGVzLgorCistIElzc3VlICMyMzcyNjogRG9uJ3QgZW5hYmxlIEdDIGZvciB1c2VyIHN1YmNsYXNzZXMgb2Ygbm9uLUdDIHR5cGVzIHRoYXQKKyAgZG9uJ3QgYWRkIGFueSBuZXcgZmllbGRzLiAgUGF0Y2ggYnkgRXVnZW5lIFRvZGVyLgorCistIElzc3VlICMyMzMwOTogQXZvaWQgYSBkZWFkbG9jayBhdCBzaHV0ZG93biBpZiBhIGRhZW1vbiB0aHJlYWQgaXMgYWJvcnRlZAorICB3aGlsZSBpdCBpcyBob2xkaW5nIGEgbG9jayB0byBhIGJ1ZmZlcmVkIEkvTyBvYmplY3QsIGFuZCB0aGUgbWFpbiB0aHJlYWQKKyAgdHJpZXMgdG8gdXNlIHRoZSBzYW1lIEkvTyBvYmplY3QgKHR5cGljYWxseSBzdGRvdXQgb3Igc3RkZXJyKS4gIEEgZmF0YWwKKyAgZXJyb3IgaXMgZW1pdHRlZCBpbnN0ZWFkLgorCistIElzc3VlICMyMjk3NzogRml4ZWQgZm9ybWF0dGluZyBXaW5kb3dzIGVycm9yIG1lc3NhZ2VzIG9uIFdpbmUuCisgIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCisKKy0gSXNzdWUgIzIzNDY2OiAlYywgJW8sICV4LCBhbmQgJVggaW4gYnl0ZXMgZm9ybWF0dGluZyBub3cgcmFpc2UgVHlwZUVycm9yIG9uCisgIG5vbi1pbnRlZ2VyIGlucHV0LgorCistIElzc3VlICMyNDA0NDogRml4IHBvc3NpYmxlIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBsaXN0LnNvcnQgaW4gb3V0IG9mCisgIG1lbW9yeSBjb25kaXRpb25zLgorCistIElzc3VlICMyMTM1NDogUHlDRnVuY3Rpb25fTmV3IGZ1bmN0aW9uIGlzIGV4cG9zZWQgYnkgcHl0aG9uIERMTCBhZ2Fpbi4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyMzg0MDogdG9rZW5pemUub3BlbigpIG5vdyBjbG9zZXMgdGhlIHRlbXBvcmFyeSBiaW5hcnkgZmlsZSBvbiBlcnJvcgorICB0byBmaXggYSByZXNvdXJjZSB3YXJuaW5nLgorCistIElzc3VlICMxNjkxNDogbmV3IGRlYnVnbGV2ZWwgMiBpbiBzbXRwbGliIGFkZHMgdGltZXN0YW1wcyB0byBkZWJ1ZyBvdXRwdXQuCisKKy0gSXNzdWUgIzcxNTk6IHVybGxpYi5yZXF1ZXN0IG5vdyBzdXBwb3J0cyBzZW5kaW5nIGF1dGggY3JlZGVudGlhbHMKKyAgYXV0b21hdGljYWxseSBhZnRlciB0aGUgZmlyc3QgNDAxLiAgVGhpcyBlbmhhbmNlbWVudCBpcyBhIHN1cGVyc2V0IG9mIHRoZQorICBlbmhhbmNlbWVudCBmcm9tIGlzc3VlICMxOTQ5NCBhbmQgc3VwZXJzZWRlcyB0aGF0IGNoYW5nZS4KKworLSBJc3N1ZSAjMjM3MDM6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gdXJsam9pbigpIGludHJvZHVjZWQgaW4gOTAxZTRlNTJiMjBhLgorICBQYXRjaCBieSBEZW1pYW4gQnJlY2h0LgorCistIElzc3VlICM0MjU0OiBBZGRzIF9jdXJzZXMudXBkYXRlX2xpbmVzX2NvbHMoKS4gIFBhdGNoIGJ5IEFybm9uIFlhYXJpCisKKy0gSXNzdWUgIzE5OTMzOiBQcm92aWRlIGRlZmF1bHQgYXJndW1lbnQgZm9yIG5kaWdpdHMgaW4gcm91bmQuIFBhdGNoIGJ5CisgIFZhanJhc2t5IEtvay4KKworLSBJc3N1ZSAjMjMxOTM6IEFkZCBhIG51bWVyaWNfb3duZXIgcGFyYW1ldGVyIHRvCisgIHRhcmZpbGUuVGFyRmlsZS5leHRyYWN0IGFuZCB0YXJmaWxlLlRhckZpbGUuZXh0cmFjdGFsbC4gUGF0Y2ggYnkKKyAgTWljaGFlbCBWb2d0IGFuZCBFcmljIFNtaXRoLgorCistIElzc3VlICMyMzM0MjogQWRkIGEgc3VicHJvY2Vzcy5ydW4oKSBmdW5jdGlvbiB0aGFuIHJldHVybnMgYSBDYWxsZWRQcm9jZXNzCisgIGluc3RhbmNlIGZvciBhIG1vcmUgY29uc2lzdGVudCBBUEkgdGhhbiB0aGUgZXhpc3RpbmcgY2FsbCogZnVuY3Rpb25zLgorCistIElzc3VlICMyMTIxNzogaW5zcGVjdC5nZXRzb3VyY2VsaW5lcygpIG5vdyB0cmllcyB0byBjb21wdXRlIHRoZSBzdGFydCBhbmQgZW5kCisgIGxpbmVzIGZyb20gdGhlIGNvZGUgb2JqZWN0LCBmaXhpbmcgYW4gaXNzdWUgd2hlbiBhIGxhbWJkYSBmdW5jdGlvbiBpcyB1c2VkIGFzCisgIGRlY29yYXRvciBhcmd1bWVudC4gUGF0Y2ggYnkgVGhvbWFzIEJhbGxpbmdlciBhbmQgQWxsaXNvbiBLYXB0dXIuCisKKy0gSXNzdWUgIzI0NTIxOiBGaXggcG9zc2libGUgaW50ZWdlciBvdmVyZmxvd3MgaW4gdGhlIHBpY2tsZSBtb2R1bGUuCisKKy0gSXNzdWUgIzIyOTMxOiBBbGxvdyAnWycgYW5kICddJyBpbiBjb29raWUgdmFsdWVzLgorCistIFRoZSBrZXl3b3JkcyBhdHRyaWJ1dGUgb2YgZnVuY3Rvb2xzLnBhcnRpYWwgaXMgbm93IGFsd2F5cyBhIGRpY3Rpb25hcnkuCisKKy0gSXNzdWUgIzIzODExOiBBZGQgbWlzc2luZyBuZXdsaW5lIHRvIHRoZSBQeUNvbXBpbGVFcnJvciBlcnJvciBtZXNzYWdlLgorICBQYXRjaCBieSBBbGV4IFNoa29wLgorCistIElzc3VlICMyMTExNjogQXZvaWQgYmxvd2luZyBtZW1vcnkgd2hlbiBhbGxvY2F0aW5nIGEgbXVsdGlwcm9jZXNzaW5nIHNoYXJlZAorICBhcnJheSB0aGF0J3MgbGFyZ2VyIHRoYW4gNTAlIG9mIHRoZSBhdmFpbGFibGUgUkFNLiAgUGF0Y2ggYnkgTcOpZMOpcmljIEJvcXVpZW4uCisKKy0gSXNzdWUgIzIyOTgyOiBJbXByb3ZlIEJPTSBoYW5kbGluZyB3aGVuIHNlZWtpbmcgdG8gbXVsdGlwbGUgcG9zaXRpb25zIG9mCisgIGEgd3JpdGFibGUgdGV4dCBmaWxlLgorCistIElzc3VlICMyMzQ2NDogUmVtb3ZlZCBkZXByZWNhdGVkIGFzeW5jaW8gSm9pbmFibGVRdWV1ZS4KKworLSBJc3N1ZSAjMjM1Mjk6IExpbWl0IHRoZSBzaXplIG9mIGRlY29tcHJlc3NlZCBkYXRhIHdoZW4gcmVhZGluZyBmcm9tCisgIEd6aXBGaWxlLCBCWjJGaWxlIG9yIExaTUFGaWxlLiAgVGhpcyBkZWZlYXRzIGRlbmlhbCBvZiBzZXJ2aWNlIGF0dGFja3MKKyAgdXNpbmcgY29tcHJlc3NlZCBib21icyAoaS5lLiBjb21wcmVzc2VkIHBheWxvYWRzIHdoaWNoIGRlY29tcHJlc3MgdG8gYSBodWdlCisgIHNpemUpLiAgUGF0Y2ggYnkgTWFydGluIFBhbnRlciBhbmQgTmlrb2xhdXMgUmF0aC4KKworLSBJc3N1ZSAjMjE4NTk6IEFkZGVkIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBpby5GaWxlSU8uCisKKy0gSXNzdWUgIzIzODY1OiBjbG9zZSgpIG1ldGhvZHMgaW4gbXVsdGlwbGUgbW9kdWxlcyBub3cgYXJlIGlkZW1wb3RlbnQgYW5kIG1vcmUKKyAgcm9idXN0IGF0IHNodXRkb3duLiBJZiB0aGV5IG5lZWQgdG8gcmVsZWFzZSBtdWx0aXBsZSByZXNvdXJjZXMsIGFsbCBhcmUKKyAgcmVsZWFzZWQgZXZlbiBpZiBlcnJvcnMgb2NjdXIuCisKKy0gSXNzdWUgIzIzNDAwOiBSYWlzZSBzYW1lIGV4Y2VwdGlvbiBvbiBib3RoIFB5dGhvbiAyIGFuZCAzIGlmIHNlbV9vcGVuIGlzIG5vdAorICBhdmFpbGFibGUuICBQYXRjaCBieSBEYXZpbiBQb3R0cy4KKworLSBJc3N1ZSAjMTA4Mzg6IFRoZSBzdWJwcm9jZXNzIG5vdyBtb2R1bGUgaW5jbHVkZXMgU3VicHJvY2Vzc0Vycm9yIGFuZAorICBUaW1lb3V0RXJyb3IgaW4gaXRzIGxpc3Qgb2YgZXhwb3J0ZWQgbmFtZXMgZm9yIHRoZSB1c2VycyB3aWxkIGVub3VnaAorICB0byB1c2UgYGBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0ICpgYC4KKworLSBJc3N1ZSAjMjM0MTE6IEFkZGVkIERlZnJhZ1Jlc3VsdCwgUGFyc2VSZXN1bHQsIFNwbGl0UmVzdWx0LCBEZWZyYWdSZXN1bHRCeXRlcywKKyAgUGFyc2VSZXN1bHRCeXRlcywgYW5kIFNwbGl0UmVzdWx0Qnl0ZXMgdG8gdXJsbGliLnBhcnNlLl9fYWxsX18uCisgIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCisKKy0gSXNzdWUgIzIzODgxOiB1cmxsaWIucmVxdWVzdC5mdHB3cmFwcGVyIGNvbnN0cnVjdG9yIG5vdyBjbG9zZXMgdGhlIHNvY2tldCBpZgorICB0aGUgRlRQIGNvbm5lY3Rpb24gZmFpbGVkIHRvIGZpeCBhIFJlc291cmNlV2FybmluZy4KKworLSBJc3N1ZSAjMjM4NTM6IDptZXRoOmBzb2NrZXQuc29ja2V0LnNlbmRhbGxgIGRvZXMgbm8gbW9yZSByZXNldCB0aGUgc29ja2V0CisgIHRpbWVvdXQgZWFjaCB0aW1lIGRhdGEgaXMgc2VudCBzdWNjZXNzZnVseS4gVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0aGUKKyAgbWF4aW11bSB0b3RhbCBkdXJhdGlvbiB0byBzZW5kIGFsbCBkYXRhLgorCistIElzc3VlICMyMjcyMTogQW4gb3JkZXIgb2YgbXVsdGlsaW5lIHBwcmludCBvdXRwdXQgb2Ygc2V0IG9yIGRpY3QgY29udGFpbmluZworICBvcmRlcmFibGUgYW5kIG5vbi1vcmRlcmFibGUgZWxlbWVudHMgbm8gbG9uZ2VyIGRlcGVuZHMgb24gaXRlcmF0aW9uIG9yZGVyIG9mCisgIHNldCBvciBkaWN0LgorCistIElzc3VlICMxNTEzMzogX3RraW50ZXIudGthcHAuZ2V0Ym9vbGVhbigpIG5vdyBzdXBwb3J0cyBUY2xfT2JqIGFuZCBhbHdheXMKKyAgcmV0dXJucyBib29sLiAgdGtpbnRlci5Cb29sZWFuVmFyIG5vdyB2YWxpZGF0ZXMgaW5wdXQgdmFsdWVzIChhY2NlcHRlZCBib29sLAorICBpbnQsIHN0ciwgYW5kIFRjbF9PYmopLiAgdGtpbnRlci5Cb29sZWFuVmFyLmdldCgpIG5vdyBhbHdheXMgcmV0dXJucyBib29sLgorCistIElzc3VlICMxMDU5MDogeG1sLnNheC5wYXJzZVN0cmluZygpIG5vdyBzdXBwb3J0cyBzdHJpbmcgYXJndW1lbnQuCisKKy0gSXNzdWUgIzIzMzM4OiBGaXhlZCBmb3JtYXR0aW5nIGN0eXBlcyBlcnJvciBtZXNzYWdlcyBvbiBDeWd3aW4uCisgIFBhdGNoIGJ5IE1ha290byBLYXRvLgorCistIElzc3VlICMxNTU4MjogaW5zcGVjdC5nZXRkb2MoKSBub3cgZm9sbG93cyBpbmhlcml0YW5jZSBjaGFpbnMuCisKKy0gSXNzdWUgIzIxNzU6IFNBWCBwYXJzZXJzIG5vdyBzdXBwb3J0IGEgY2hhcmFjdGVyIHN0cmVhbSBvZiBJbnB1dFNvdXJjZSBvYmplY3QuCisKKy0gSXNzdWUgIzE2ODQwOiBUa2ludGVyIG5vdyBzdXBwb3J0cyA2NC1iaXQgaW50ZWdlcnMgYWRkZWQgaW4gVGNsIDguNCBhbmQKKyAgYXJiaXRyYXJ5IHByZWNpc2lvbiBpbnRlZ2VycyBhZGRlZCBpbiBUY2wgOC41LgorCistIElzc3VlICMyMzgzNDogRml4IHNvY2tldC5zZW5kdG8oKSwgdXNlIHRoZSBDIFB5X3NzaXplX3QgdHlwZSB0byBzdG9yZSB0aGUKKyAgcmVzdWx0IG9mIHNlbmR0bygpIGluc3RlYWQgb2YgdGhlIEMgaW50IHR5cGUuCisKKy0gSXNzdWUgIzIzNjE4OiA6bWV0aDpgc29ja2V0LnNvY2tldC5jb25uZWN0YCBub3cgd2FpdHMgdW50aWwgdGhlIGNvbm5lY3Rpb24KKyAgY29tcGxldGVzIGluc3RlYWQgb2YgcmFpc2luZyA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBpZiB0aGUgY29ubmVjdGlvbiBpcworICBpbnRlcnJ1cHRlZCBieSBzaWduYWxzLCBzaWduYWwgaGFuZGxlcnMgZG9uJ3QgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCB0aGUKKyAgc29ja2V0IGlzIGJsb2NraW5nIG9yIGhhcyBhIHRpbWVvdXQuIDptZXRoOmBzb2NrZXQuc29ja2V0LmNvbm5lY3RgIHN0aWxsCisgIHJhaXNlIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGZvciBub24tYmxvY2tpbmcgc29ja2V0cy4KKworLSBJc3N1ZSAjMjE1MjY6IFRraW50ZXIgbm93IHN1cHBvcnRzIG5ldyBib29sZWFuIHR5cGUgaW4gVGNsIDguNS4KKworLSBJc3N1ZSAjMjM4MzY6IEZpeCB0aGUgZmF1bHRoYW5kbGVyIG1vZHVsZSB0byBoYW5kbGUgcmVlbnRyYW50IGNhbGxzIHRvCisgIGl0cyBzaWduYWwgaGFuZGxlcnMuCisKKy0gSXNzdWUgIzIzODM4OiBsaW5lY2FjaGUgbm93IGNsZWFycyB0aGUgY2FjaGUgYW5kIHJldHVybnMgYW4gZW1wdHkgcmVzdWx0IG9uCisgIE1lbW9yeUVycm9yLgorCistIElzc3VlICMxMDM5NTogQWRkZWQgb3MucGF0aC5jb21tb25wYXRoKCkuIEltcGxlbWVudGVkIGluIHBvc2l4cGF0aCBhbmQgbnRwYXRoLgorICBCYXNlZCBvbiBwYXRjaCBieSBSYWZpayBEcmFvdWkuCisKKy0gSXNzdWUgIzIzNjExOiBTZXJpYWxpemluZyBtb3JlICJsb29rdXBhYmxlIiBvYmplY3RzIChzdWNoIGFzIHVuYm91bmQgbWV0aG9kcworICBvciBuZXN0ZWQgY2xhc3Nlcykgbm93IGFyZSBzdXBwb3J0ZWQgd2l0aCBwaWNrbGUgcHJvdG9jb2xzIDwgNC4KKworLSBJc3N1ZSAjMTM1ODM6IHNxbGl0ZTMuUm93IG5vdyBzdXBwb3J0cyBzbGljZSBpbmRleGluZy4KKworLSBJc3N1ZSAjMTg0NzM6IEZpeGVkIDJ0bzMgYW5kIDN0bzIgY29tcGF0aWJsZSBwaWNrbGUgbWFwcGluZ3MuICBGaXhlZAorICBhbWJpZ2lvdXMgcmV2ZXJzZSBtYXBwaW5ncy4gIEFkZGVkIG1hbnkgbmV3IG1hcHBpbmdzLiAgSW1wb3J0IG1hcHBpbmcgaXMgbm8KKyAgbG9uZ2VyIGFwcGxpZWQgdG8gbW9kdWxlcyBhbHJlYWR5IG1hcHBlZCB3aXRoIGZ1bGwgbmFtZSBtYXBwaW5nLgorCistIElzc3VlICMyMzQ4NTogc2VsZWN0LnNlbGVjdCgpIGlzIG5vdyByZXRyaWVkIGF1dG9tYXRpY2FsbHkgd2l0aCB0aGUKKyAgcmVjb21wdXRlZCB0aW1lb3V0IHdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwsIGV4Y2VwdCBpZiB0aGUgc2lnbmFsIGhhbmRsZXIKKyAgcmFpc2VzIGFuIGV4Y2VwdGlvbi4gVGhpcyBjaGFuZ2UgaXMgcGFydCBvZiB0aGUgUEVQIDQ3NS4KKworLSBJc3N1ZSAjMjM3NTI6IFdoZW4gYnVpbHQgZnJvbSBhbiBleGlzdGluZyBmaWxlIGRlc2NyaXB0b3IsIGlvLkZpbGVJTygpIG5vdworICBvbmx5IGNhbGxzIGZzdGF0KCkgb25jZS4gQmVmb3JlIGZzdGF0KCkgd2FzIGNhbGxlZCB0d2ljZSwgd2hpY2ggd2FzIG5vdAorICBuZWNlc3NhcnkuCisKKy0gSXNzdWUgIzIzNzA0OiBjb2xsZWN0aW9ucy5kZXF1ZSgpIG9iamVjdHMgbm93IHN1cHBvcnQgX19hZGRfXywgX19tdWxfXywgYW5kCisgIF9faW11bF9fKCkuCisKKy0gSXNzdWUgIzIzMTcxOiBjc3YuV3JpdGVyLndyaXRlcm93KCkgbm93IHN1cHBvcnRzIGFyYml0cmFyeSBpdGVyYWJsZXMuCisKKy0gSXNzdWUgIzIzNzQ1OiBUaGUgbmV3IGVtYWlsIGhlYWRlciBwYXJzZXIgbm93IGhhbmRsZXMgZHVwbGljYXRlIE1JTUUKKyAgcGFyYW1ldGVyIG5hbWVzIHdpdGhvdXQgZXJyb3IsIHNpbWlsYXIgdG8gaG93IGdldF9wYXJhbSBiZWhhdmVzLgorCistIElzc3VlICMyMjExNzogRml4IG9zLnV0aW1lKCksIGl0IG5vdyByb3VuZHMgdGhlIHRpbWVzdGFtcCB0b3dhcmRzIG1pbnVzCisgIGluZmluaXR5ICgtaW5mKSBpbnN0ZWFkIG9mIHJvdW5kaW5nIHRvd2FyZHMgemVyby4KKworLSBJc3N1ZSAjMjMzMTA6IEZpeCBNYWdpY01vY2sncyBpbml0aWFsaXplciB0byB3b3JrIHdpdGggX19tZXRob2RzX18sIGp1c3QKKyAgbGlrZSBjb25maWd1cmVfbW9jaygpLiAgUGF0Y2ggYnkgS2FzaWEgSmFjaGltLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjM4MTc6IEZyZWVCU0Qgbm93IHVzZXMgIjEuMCIgdGhlIHRoZSBTT1ZFUlNJT04gYXMgb3RoZXIgb3BlcmF0aW5nCisgIHN5c3RlbXMsIGluc3RlYWQgb2YganVzdCAiMSIuCisKKy0gSXNzdWUgIzIzNTAxOiBBcmd1bWVudCBDbGluaWMgbm93IGdlbmVyYXRlcyBjb2RlIGludG8gc2VwYXJhdGUgZmlsZXMgYnkgZGVmYXVsdC4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzIzNzk5OiBBZGRlZCB0ZXN0LnN1cHBvcnQuc3RhcnRfdGhyZWFkcygpIGZvciBydW5uaW5nIGFuZAorICBjbGVhbmluZyB1cCBtdWx0aXBsZSB0aHJlYWRzLgorCistIElzc3VlICMyMjM5MDogdGVzdC5yZWdydGVzdCBub3cgZW1pdHMgYSB3YXJuaW5nIGlmIHRlbXBvcmFyeSBmaWxlcyBvcgorICBkaXJlY3RvcmllcyBhcmUgbGVmdCBhZnRlciBydW5uaW5nIGEgdGVzdC4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE4MTI4OiBweWdldHRleHQgbm93IHVzZXMgc3RhbmRhcmQgK05OTk4gZm9ybWF0IGluIHRoZQorICBQT1QtQ3JlYXRpb24tRGF0ZSBoZWFkZXIuCisKKy0gSXNzdWUgIzIzOTM1OiBBcmd1bWVudCBDbGluaWMncyB1bmRlcnN0YW5kaW5nIG9mIGZvcm1hdCB1bml0cworICBhY2NlcHRpbmcgYnl0ZXMsIGJ5dGVhcnJheXMsIGFuZCBidWZmZXJzIGlzIG5vdyBjb25zaXN0ZW50IHdpdGgKKyAgYm90aCB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGhlIGltcGxlbWVudGF0aW9uLgorCistIElzc3VlICMyMzk0NDogQXJndW1lbnQgQ2xpbmljIG5vdyB3cmFwcyBsb25nIGltcGwgcHJvdG90eXBlcyBhdCBjb2x1bW4gNzguCisKKy0gSXNzdWUgIzIwNTg2OiBBcmd1bWVudCBDbGluaWMgbm93IGVuc3VyZXMgdGhhdCBmdW5jdGlvbnMgd2l0aG91dCBkb2NzdHJpbmdzCisgIGhhdmUgc2lnbmF0dXJlcy4KKworLSBJc3N1ZSAjMjM0OTI6IEFyZ3VtZW50IENsaW5pYyBub3cgZ2VuZXJhdGVzIGFyZ3VtZW50IHBhcnNpbmcgY29kZSB3aXRoCisgIFB5QXJnX1BhcnNlIGluc3RlYWQgb2YgUHlBcmdfUGFyc2VUdXBsZSBpZiBwb3NzaWJsZS4KKworLSBJc3N1ZSAjMjM1MDA6IEFyZ3VtZW50IENsaW5pYyBpcyBub3cgc21hcnRlciBhYm91dCBnZW5lcmF0aW5nIHRoZSAiI2lmbmRlZiIKKyAgKGVtcHR5KSBkZWZpbml0aW9uIG9mIHRoZSBtZXRob2RkZWYgbWFjcm86IGl0J3Mgb25seSBnZW5lcmF0ZWQgb25jZSwgZXZlbgorICBpZiBBcmd1bWVudCBDbGluaWMgcHJvY2Vzc2VzIHRoZSBzYW1lIHN5bWJvbCBtdWx0aXBsZSB0aW1lcywgYW5kIGl0J3MgZW1pdHRlZAorICBhdCB0aGUgZW5kIG9mIGFsbCBwcm9jZXNzaW5nIHJhdGhlciB0aGFuIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBmaXJzdCB1c2UuCisKK0MgQVBJCistLS0tLQorCistIElzc3VlICMyMzk5ODogUHlJbXBvcnRfUmVJbml0TG9jaygpIG5vdyBjaGVja3MgZm9yIGxvY2sgYWxsb2NhdGlvbiBlcnJvcgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4wIGFscGhhIDM/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWxlYXNlIGRhdGU6IDIwMTUtMDMtMjgKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzIzNTczOiBJbmNyZWFzZWQgcGVyZm9ybWFuY2Ugb2Ygc3RyaW5nIHNlYXJjaCBvcGVyYXRpb25zIChzdHIuZmluZCwKKyAgc3RyLmluZGV4LCBzdHIuY291bnQsIHRoZSBpbiBvcGVyYXRvciwgc3RyLnNwbGl0LCBzdHIucGFydGl0aW9uKSB3aXRoCisgIGFyZ3VtZW50cyBvZiBkaWZmZXJlbnQga2luZHMgKFVDUzEsIFVDUzIsIFVDUzQpLgorCistIElzc3VlICMyMzc1MzogUHl0aG9uIGRvZXNuJ3Qgc3VwcG9ydCBhbnltb3JlIHBsYXRmb3JtcyB3aXRob3V0IHN0YXQoKSBvcgorICBmc3RhdCgpLCB0aGVzZSBmdW5jdGlvbnMgYXJlIGFsd2F5cyByZXF1aXJlZC4KKworLSBJc3N1ZSAjMjM2ODE6IFRoZSAtYiBvcHRpb24gbm93IGFmZmVjdHMgY29tcGFyaXNvbnMgb2YgYnl0ZXMgd2l0aCBpbnQuCisKKy0gSXNzdWUgIzIzNjMyOiBNZW1vcnl2aWV3cyBub3cgYWxsb3cgdHVwbGUgaW5kZXhpbmcgKGluY2x1ZGluZyBmb3IKKyAgbXVsdGktZGltZW5zaW9uYWwgbWVtb3J5dmlld3MpLgorCistIElzc3VlICMyMzE5MjogRml4ZWQgZ2VuZXJhdG9yIGxhbWJkYXMuICBQYXRjaCBieSBCcnVubyBDYXVldC4KKworLSBJc3N1ZSAjMjM2Mjk6IEZpeCB0aGUgZGVmYXVsdCBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciB2YXJpYWJsZS1zaXplZAorICBvYmplY3RzLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzE0MjYwOiBUaGUgZ3JvdXBpbmRleCBhdHRyaWJ1dGUgb2YgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gb2JqZWN0CisgIG5vdyBpcyBub24tbW9kaWZpYWJsZSBtYXBwaW5nLgorCistIElzc3VlICMyMzc5MjogSWdub3JlIEtleWJvYXJkSW50ZXJydXB0IHdoZW4gdGhlIHB5ZG9jIHBhZ2VyIGlzIGFjdGl2ZS4KKyAgVGhpcyBtaW1pY3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBzdGFuZGFyZCB1bml4IHBhZ2VycywgYW5kIHByZXZlbnRzCisgIHBpcGVwYWdlciBmcm9tIHNodXR0aW5nIGRvd24gd2hpbGUgdGhlIHBhZ2VyIGl0c2VsZiBpcyBzdGlsbCBydW5uaW5nLgorCistIElzc3VlICMyMzc3NTogcHByaW50KCkgb2YgT3JkZXJlZERpY3Qgbm93IG91dHB1dHMgdGhlIHNhbWUgcmVwcmVzZW50YXRpb24KKyAgYXMgcmVwcigpLgorCistIElzc3VlICMyMzc2NTogUmVtb3ZlZCBJc0JhZFN0cmluZ1B0ciBjYWxscyBpbiBjdHlwZXMKKworLSBJc3N1ZSAjMjIzNjQ6IEltcHJvdmVkIHNvbWUgcmUgZXJyb3IgbWVzc2FnZXMgdXNpbmcgcmVnZXggZm9yIGhpbnRzLgorCistIElzc3VlICMyMzc0MjogbnRwYXRoLmV4cGFuZHZhcnMoKSBubyBsb25nZXIgbG9zZXMgdW5iYWxhbmNlZCBzaW5nbGUgcXVvdGVzLgorCistIElzc3VlICMyMTcxNzogVGhlIHppcGZpbGUuWmlwRmlsZS5vcGVuIGZ1bmN0aW9uIG5vdyBzdXBwb3J0cyAneCcgKGV4Y2x1c2l2ZQorICBjcmVhdGlvbikgbW9kZS4KKworLSBJc3N1ZSAjMjE4MDI6IFRoZSByZWFkZXIgaW4gQnVmZmVyZWRSV1BhaXIgbm93IGlzIGNsb3NlZCBldmVuIHdoZW4gY2xvc2luZworICB3cml0ZXIgZmFpbGVkIGluIEJ1ZmZlcmVkUldQYWlyLmNsb3NlKCkuCisKKy0gSXNzdWUgIzIzNjIyOiBVbmtub3duIGVzY2FwZXMgaW4gcmVndWxhciBleHByZXNzaW9ucyB0aGF0IGNvbnNpc3Qgb2YgYGAnXCdgYAorICBhbmQgQVNDSUkgbGV0dGVyIG5vdyByYWlzZSBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgYW5kIHdpbGwgYmUgZm9yYmlkZGVuIGluCisgIFB5dGhvbiAzLjYuCisKKy0gSXNzdWUgIzIzNjcxOiBzdHJpbmcuVGVtcGxhdGUgbm93IGFsbG93cyB0byBzcGVjaWZ5IHRoZSAic2VsZiIgcGFyYW1ldGVyIGFzCisgIGtleXdvcmQgYXJndW1lbnQuICBzdHJpbmcuRm9ybWF0dGVyIG5vdyBhbGxvd3MgdG8gc3BlY2lmeSB0aGUgInNlbGYiIGFuZAorICB0aGUgImZvcm1hdF9zdHJpbmciIHBhcmFtZXRlcnMgYXMga2V5d29yZCBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzIzNTAyOiBUaGUgcHByaW50IG1vZHVsZSBub3cgc3VwcG9ydHMgbWFwcGluZyBwcm94aWVzLgorCistIElzc3VlICMxNzUzMDogcHByaW50IG5vdyB3cmFwcyBsb25nIGJ5dGVzIG9iamVjdHMgYW5kIGJ5dGVhcnJheXMuCisKKy0gSXNzdWUgIzIyNjg3OiBGaXhlZCBzb21lIGNvcm5lciBjYXNlcyBpbiBicmVha2luZyB3b3JkcyBpbiB0ZXR4dHdyYXAuCisgIEdvdCByaWQgb2YgcXVhZHJhdGljIGNvbXBsZXhpdHkgaW4gYnJlYWtpbmcgbG9uZyB3b3Jkcy4KKworLSBJc3N1ZSAjNDcyNzogVGhlIGNvcHkgbW9kdWxlIG5vdyB1c2VzIHBpY2tsZSBwcm90b2NvbCA0IChQRVAgMzE1NCkgYW5kCisgIHN1cHBvcnRzIGNvcHlpbmcgb2YgaW5zdGFuY2VzIG9mIGNsYXNzZXMgd2hvc2UgX19uZXdfXyBtZXRob2QgdGFrZXMKKyAga2V5d29yZC1vbmx5IGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMjM0OTE6IEFkZGVkIGEgemlwYXBwIG1vZHVsZSB0byBzdXBwb3J0IGNyZWF0aW5nIGV4ZWN1dGFibGUgemlwCisgIGZpbGUgYXJjaGl2ZXMgb2YgUHl0aG9uIGNvZGUuIFJlZ2lzdGVyZWQgIi5weXoiIGFuZCAiLnB5enciIGV4dGVuc2lvbnMKKyAgb24gV2luZG93cyBmb3IgdGhlc2UgYXJjaGl2ZXMgKFBFUCA0NDEpLgorCistIElzc3VlICMyMzY1NzogQXZvaWQgZXhwbGljaXQgY2hlY2tzIGZvciBzdHIgaW4gemlwYXBwLCBhZGRpbmcgc3VwcG9ydAorICBmb3IgcGF0aGxpYi5QYXRoIG9iamVjdHMgYXMgYXJndW1lbnRzLgorCistIElzc3VlICMyMzY4ODogQWRkZWQgc3VwcG9ydCBvZiBhcmJpdHJhcnkgYnl0ZXMtbGlrZSBvYmplY3RzIGFuZCBhdm9pZGVkCisgIHVubmVjZXNzYXJ5IGNvcHlpbmcgb2YgbWVtb3J5dmlldyBpbiBnemlwLkd6aXBGaWxlLndyaXRlKCkuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IFdvbGZnYW5nIE1haWVyLgorCistIElzc3VlICMyMzI1MjogQWRkZWQgc3VwcG9ydCBmb3Igd3JpdGluZyBaSVAgZmlsZXMgdG8gdW5zZWVrYWJsZSBzdHJlYW1zLgorCistIElzc3VlICMyMzY0NzogSW5jcmVhc2UgaW1wYWxpYidzIE1BWExJTkUgdG8gYWNjb21tb2RhdGUgbW9kZXJuIG1haWxib3ggc2l6ZXMuCisKKy0gSXNzdWUgIzIzNTM5OiBJZiBib2R5IGlzIE5vbmUsIGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uLnJlcXVlc3Qgbm93IHNldHMKKyAgQ29udGVudC1MZW5ndGggdG8gMCBmb3IgUFVULCBQT1NULCBhbmQgUEFUQ0ggaGVhZGVycyB0byBhdm9pZCA0MTEgZXJyb3JzIGZyb20KKyAgc29tZSB3ZWIgc2VydmVycy4KKworLSBJc3N1ZSAjMjIzNTE6IFRoZSBubnRwbGliLk5OVFAgY29uc3RydWN0b3Igbm8gbG9uZ2VyIGxlYXZlcyB0aGUgY29ubmVjdGlvbgorICBhbmQgc29ja2V0IG9wZW4gdW50aWwgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIGNsZWFucyB0aGVtIHVwLiAgUGF0Y2ggYnkKKyAgTWFydGluIFBhbnRlci4KKworLSBJc3N1ZSAjMjM3MDQ6IGNvbGxlY3Rpb25zLmRlcXVlKCkgb2JqZWN0cyBub3cgc3VwcG9ydCBtZXRob2RzIGZvciBpbmRleCgpLAorICBpbnNlcnQoKSwgYW5kIGNvcHkoKS4gIFRoaXMgYWxsb3dzIGRlcXVlcyB0byBiZSByZWdpc3RlcmVkIGFzIGEKKyAgTXV0YWJsZVNlcXVlbmNlIGFuZCBpdCBpbXByb3ZlcyB0aGVpciBzdWJzdGl0dXRhYmxpdHkgZm9yIGxpc3RzLgorCistIElzc3VlICMyMzcxNTogOmZ1bmM6YHNpZ25hbC5zaWd3YWl0aW5mb2AgYW5kIDpmdW5jOmBzaWduYWwuc2lndGltZWR3YWl0YCBhcmUKKyAgbm93IHJldHJpZWQgd2hlbiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCBub3QgaW4gdGhlICpzaWdzZXQqIHBhcmFtZXRlciwgaWYKKyAgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbi4gc2lnbmFsLnNpZ3RpbWVkd2FpdCgpCisgIHJlY29tcHV0ZXMgdGhlIHRpbWVvdXQgd2l0aCBhIG1vbm90b25pYyBjbG9jayB3aGVuIGl0IGlzIHJldHJpZWQuCisKKy0gSXNzdWUgIzIzMDAxOiBGZXcgZnVuY3Rpb25zIGluIG1vZHVsZXMgbW1hcCwgb3NzYXVkaW9kZXYsIHNvY2tldCwgc3NsLCBhbmQKKyAgY29kZWNzLCB0aGF0IGFjY2VwdGVkIG9ubHkgcmVhZC1vbmx5IGJ5dGVzLWxpa2Ugb2JqZWN0IG5vdyBhY2NlcHQgd3JpdGFibGUKKyAgYnl0ZXMtbGlrZSBvYmplY3QgdG9vLgorCistIElzc3VlICMyMzY0NjogSWYgdGltZS5zbGVlcCgpIGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLCB0aGUgc2xlZXAgaXMgbm93CisgIHJldHJpZWQgd2l0aCB0aGUgcmVjb21wdXRlZCBkZWxheSwgZXhjZXB0IGlmIHRoZSBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4KKyAgZXhjZXB0aW9uIChQRVAgNDc1KS4KKworLSBJc3N1ZSAjMjMxMzY6IF9zdHJwdGltZSBub3cgdW5pZm9ybWx5IGhhbmRsZXMgYWxsIGRheXMgaW4gd2VlayAwLCBpbmNsdWRpbmcKKyAgRGVjIDMwIG9mIHByZXZpb3VzIHllYXIuICBCYXNlZCBvbiBwYXRjaCBieSBKaW0gQ2Fycm9sbC4KKworLSBJc3N1ZSAjMjM3MDA6IEl0ZXJhdG9yIG9mIE5hbWVkVGVtcG9yYXJ5RmlsZSBub3cga2VlcHMgYSByZWZlcmVuY2UgdG8KKyAgTmFtZWRUZW1wb3JhcnlGaWxlIGluc3RhbmNlLiAgUGF0Y2ggYnkgQm9odXNsYXYgS2FicmRhLgorCistIElzc3VlICMyMjkwMzogVGhlIGZha2UgdGVzdCBjYXNlIGNyZWF0ZWQgYnkgdW5pdHRlc3QubG9hZGVyIHdoZW4gaXQgZmFpbHMKKyAgaW1wb3J0aW5nIGEgdGVzdCBtb2R1bGUgaXMgbm93IHBpY2tsYWJsZS4KKworLSBJc3N1ZSAjMjIxODE6IE9uIExpbnV4LCBvcy51cmFuZG9tKCkgbm93IHVzZXMgdGhlIG5ldyBnZXRyYW5kb20oKSBzeXNjYWxsIGlmCisgIGF2YWlsYWJsZSwgc3lzY2FsbCBpbnRyb2R1Y2VkIGluIHRoZSBMaW51eCBrZXJuZWwgMy4xNy4gSXQgaXMgbW9yZSByZWxpYWJsZQorICBhbmQgbW9yZSBzZWN1cmUsIGJlY2F1c2UgaXQgYXZvaWRzIHRoZSBuZWVkIG9mIGEgZmlsZSBkZXNjcmlwdG9yIGFuZCB3YWl0cworICB1bnRpbCB0aGUga2VybmVsIGhhcyBlbm91Z2ggZW50cm9weS4KKworLSBJc3N1ZSAjMjIxMTogVXBkYXRlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGh0dHAuY29va2llcy5Nb3JzZWwgY2xhc3MuCisgIFNldHRpbmcgYXR0cmlidXRlcyBrZXksIHZhbHVlIGFuZCBjb2RlZF92YWx1ZSBkaXJlY3RseSBub3cgaXMgZGVwcmVjYXRlZC4KKyAgdXBkYXRlKCkgYW5kIHNldGRlZmF1bHQoKSBub3cgdHJhbnNmb3JtIGFuZCBjaGVjayBrZXlzLiAgQ29tcGFyaW5nIGZvcgorICBlcXVhbGl0eSBub3cgdGFrZXMgaW50byBhY2NvdW50IGF0dHJpYnV0ZXMga2V5LCB2YWx1ZSBhbmQgY29kZWRfdmFsdWUuCisgIGNvcHkoKSBub3cgcmV0dXJucyBhIE1vcnNlbCwgbm90IGEgZGljdC4gIHJlcHIoKSBub3cgY29udGFpbnMgYWxsIGF0dHJpYnV0ZXMuCisgIE9wdGltaXplZCBjaGVja2luZyBrZXlzIGFuZCBxdW90aW5nIHZhbHVlcy4gIEFkZGVkIG5ldyB0ZXN0cy4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgRGVtaWFuIEJyZWNodC4KKworLSBJc3N1ZSAjMTg5ODM6IEFsbG93IHNlbGVjdGlvbiBvZiBvdXRwdXQgdW5pdHMgaW4gdGltZWl0LgorICBQYXRjaCBieSBKdWxpYW4gR2luZGkuCisKKy0gSXNzdWUgIzIzNjMxOiBGaXggdHJhY2ViYWNrLmZvcm1hdF9saXN0IHdoZW4gYSB0cmFjZWJhY2sgaGFzIGJlZW4gbXV0YXRlZC4KKworLSBJc3N1ZSAjMjM1Njg6IEFkZCByZGl2bW9kIHN1cHBvcnQgdG8gTWFnaWNNb2NrKCkgb2JqZWN0cy4KKyAgUGF0Y2ggYnkgSMOla2FuIEzDtnZkYWhsLgorCistIElzc3VlICMyMDUyOiBBZGQgY2hhcnNldCBwYXJhbWV0ZXIgdG8gSHRtbERpZmYubWFrZV9maWxlKCkuCisKKy0gSXNzdWUgIzIzNjY4OiBTdXBwb3J0IG9zLnRydW5jYXRlIGFuZCBvcy5mdHJ1bmNhdGUgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMjMxMzg6IEZpeGVkIHBhcnNpbmcgY29va2llcyB3aXRoIGFic2VudCBrZXlzIG9yIHZhbHVlcyBpbiBjb29raWVqYXIuCisgIFBhdGNoIGJ5IERlbWlhbiBCcmVjaHQuCisKKy0gSXNzdWUgIzIzMDUxOiBtdWx0aXByb2Nlc3NpbmcuUG9vbCBtZXRob2RzIGltYXAoKSBhbmQgaW1hcF91bm9yZGVyZWQoKSBub3cKKyAgaGFuZGxlIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IGFuIGl0ZXJhdG9yLiAgUGF0Y2ggYnkgQWxvbiBEaWFtYW50IGFuZCBEYXZpbgorICBQb3R0cy4KKworLSBJc3N1ZSAjMjM1ODE6IEFkZCBtYXRtdWwgc3VwcG9ydCB0byBNYWdpY01vY2suIFBhdGNoIGJ5IEjDpWthbiBMw7Z2ZGFobC4KKworLSBJc3N1ZSAjMjM1NjY6IGVuYWJsZSgpLCByZWdpc3RlcigpLCBkdW1wX3RyYWNlYmFjaygpIGFuZAorICBkdW1wX3RyYWNlYmFja19sYXRlcigpIGZ1bmN0aW9ucyBvZiBmYXVsdGhhbmRsZXIgbm93IGFjY2VwdCBmaWxlCisgIGRlc2NyaXB0b3JzLiBQYXRjaCBieSBXZWkgV3UuCisKKy0gSXNzdWUgIzIyOTI4OiBEaXNhYmxlZCBIVFRQIGhlYWRlciBpbmplY3Rpb25zIGluIGh0dHAuY2xpZW50LgorICBPcmlnaW5hbCBwYXRjaCBieSBEZW1pYW4gQnJlY2h0LgorCistIElzc3VlICMyMzYxNTogTW9kdWxlcyBiejIsIHRhcmZpbGUgYW5kIHRva2VuaXplIG5vdyBjYW4gYmUgcmVsb2FkZWQgd2l0aAorICBpbXAucmVsb2FkKCkuICBQYXRjaCBieSBUaG9tYXMgS2x1eXZlci4KKworLSBJc3N1ZSAjMjM2MDU6IG9zLndhbGsoKSBub3cgY2FsbHMgb3Muc2NhbmRpcigpIGluc3RlYWQgb2Ygb3MubGlzdGRpcigpLgorICBUaGUgdXNhZ2Ugb2Ygb3Muc2NhbmRpcigpIHJlZHVjZXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBvcy5zdGF0KCkuCisgIEluaXRpYWwgcGF0Y2ggd3JpdHRlbiBieSBCZW4gSG95dC4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzIzNTg1OiBtYWtlIHBhdGNoY2hlY2sgd2lsbCBlbnN1cmUgdGhlIGludGVycHJldGVyIGlzIGJ1aWx0LgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjM1ODM6IEFkZGVkIHRlc3RzIGZvciBzdGFuZGFyZCBJTyBzdHJlYW1zIGluIElETEUuCisKKy0gSXNzdWUgIzIyMjg5OiBQcmV2ZW50IHRlc3RfdXJsbGliMm5ldCBmYWlsdXJlcyBkdWUgdG8gZnRwIGNvbm5lY3Rpb24gdGltZW91dC4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzIyODI2OiBUaGUgcmVzdWx0IG9mIG9wZW4oKSBpbiBUb29scy9mcmVlemUvYmtmaWxlLnB5IGlzIG5vdyBiZXR0ZXIKKyAgY29tcGF0aWJsZSB3aXRoIHJlZ3VsYXIgZmlsZXMgKGluIHBhcnRpY3VsYXIgaXQgbm93IHN1cHBvcnRzIHRoZSBjb250ZXh0CisgIG1hbmFnZW1lbnQgcHJvdG9jb2wpLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNSBhbHBoYSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNS0wMy0wOQorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjM1NzE6IFB5T2JqZWN0X0NhbGwoKSBhbmQgUHlDRnVuY3Rpb25fQ2FsbCgpIG5vdyByYWlzZSBhIFN5c3RlbUVycm9yCisgIGlmIGEgZnVuY3Rpb24gcmV0dXJucyBhIHJlc3VsdCBhbmQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4gVGhlIFN5c3RlbUVycm9yIGlzCisgIGNoYWluZWQgdG8gdGhlIHByZXZpb3VzIGV4Y2VwdGlvbi4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyMjUyNDogTmV3IG9zLnNjYW5kaXIoKSBmdW5jdGlvbiwgcGFydCBvZiB0aGUgUEVQIDQ3MTogIm9zLnNjYW5kaXIoKQorICBmdW5jdGlvbiAtLSBhIGJldHRlciBhbmQgZmFzdGVyIGRpcmVjdG9yeSBpdGVyYXRvciIuIFBhdGNoIHdyaXR0ZW4gYnkgQmVuCisgIEhveXQuCisKKy0gSXNzdWUgIzIzMTAzOiBSZWR1Y2VkIHRoZSBtZW1vcnkgY29uc3VtcHRpb24gb2YgSVB2NEFkZHJlc3MgYW5kIElQdjZBZGRyZXNzLgorCistIElzc3VlICMyMTc5MzogQmFzZUhUVFBSZXF1ZXN0SGFuZGxlciBhZ2FpbiBsb2dzIHJlc3BvbnNlIGNvZGUgYXMgbnVtZXJpYywKKyAgbm90IGFzIHN0cmluZ2lmaWVkIGVudW0uICBQYXRjaCBieSBEZW1pYW4gQnJlY2h0LgorCistIElzc3VlICMyMzQ3NjogSW4gdGhlIHNzbCBtb2R1bGUsIGVuYWJsZSBPcGVuU1NMJ3MgWDUwOV9WX0ZMQUdfVFJVU1RFRF9GSVJTVAorICBmbGFnIG9uIGNlcnRpZmljYXRlIHN0b3JlcyB3aGVuIGl0IGlzIGF2YWlsYWJsZS4KKworLSBJc3N1ZSAjMjM1NzY6IEF2b2lkIHN0YWxsaW5nIGluIFNTTCByZWFkcyB3aGVuIEVPRiBoYXMgYmVlbiByZWFjaGVkIGluIHRoZQorICBTU0wgbGF5ZXIgYnV0IHRoZSB1bmRlcmx5aW5nIGNvbm5lY3Rpb24gaGFzbid0IGJlZW4gY2xvc2VkLgorCistIElzc3VlICMyMzUwNDogQWRkZWQgYW4gX19hbGxfXyB0byB0aGUgdHlwZXMgbW9kdWxlLgorCistIElzc3VlICMyMzU2MzogT3B0aW1pemVkIHV0aWxpdHkgZnVuY3Rpb25zIGluIHVybGxpYi5wYXJzZS4KKworLSBJc3N1ZSAjNzgzMDogRmxhdHRlbiBuZXN0ZWQgZnVuY3Rvb2xzLnBhcnRpYWwuCisKKy0gSXNzdWUgIzIwMjA0OiBBZGRlZCB0aGUgX19tb2R1bGVfXyBhdHRyaWJ1dGUgdG8gX3RraW50ZXIgY2xhc3Nlcy4KKworLSBJc3N1ZSAjMTk5ODA6IEltcHJvdmVkIGhlbHAoKSBmb3Igbm9uLXJlY29nbml6ZWQgc3RyaW5ncy4gIGhlbHAoJycpIG5vdworICBzaG93cyB0aGUgaGVscCBvbiBzdHIuICBoZWxwKCdoZWxwJykgbm93IHNob3dzIHRoZSBoZWxwIG9uIGhlbHAoKS4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgTWFyayBMYXdyZW5jZS4KKworLSBJc3N1ZSAjMjM1MjE6IENvcnJlY3RlZCBwdXJlIHB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiB0aW1lZGVsdGEgZGl2aXNpb24uCisKKyAqIEVsaW1pbmF0ZWQgT3ZlcmZsb3dFcnJvciBmcm9tIHRpbWVkZWx0YSAqIGZsb2F0IGZvciBzb21lIGZsb2F0czsKKyAqIENvcnJlY3RlZCByb3VuZGluZyBpbiB0aW1lZGx0YSB0cnVlIGRpdmlzaW9uLgorCistIElzc3VlICMyMTYxOTogUG9wZW4gb2JqZWN0cyBubyBsb25nZXIgbGVhdmUgYSB6b21iaWUgYWZ0ZXIgZXhpdCBpbiB0aGUgd2l0aAorICBzdGF0ZW1lbnQgaWYgdGhlIHBpcGUgd2FzIGJyb2tlbi4gIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCisKKy0gSXNzdWUgIzIyOTM2OiBNYWtlIGl0IHBvc3NpYmxlIHRvIHNob3cgbG9jYWwgdmFyaWFibGVzIGluIHRyYWNlYmFja3MgZm9yCisgIGJvdGggdGhlIHRyYWNlYmFjayBtb2R1bGUgYW5kIHVuaXR0ZXN0LgorCistIElzc3VlICMxNTk1NTogQWRkIGFuIG9wdGlvbiB0byBsaW1pdCB0aGUgb3V0cHV0IHNpemUgaW4gYnoyLmRlY29tcHJlc3MoKS4KKyAgUGF0Y2ggYnkgTmlrb2xhdXMgUmF0aC4KKworLSBJc3N1ZSAjNjYzOTogTW9kdWxlLWxldmVsIHR1cnRsZSBmdW5jdGlvbnMgbm8gbG9uZ2VyIHJhaXNlIFRjbEVycm9yIGFmdGVyCisgIGNsb3NpbmcgdGhlIHdpbmRvdy4KKworLSBJc3N1ZXMgIzgxNDI1MywgIzkxNzk6IEdyb3VwIHJlZmVyZW5jZXMgYW5kIGNvbmRpdGlvbmFsIGdyb3VwIHJlZmVyZW5jZXMgbm93CisgIHdvcmsgaW4gbG9va2JlaGluZCBhc3NlcnRpb25zIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCisKKy0gSXNzdWUgIzIzMjE1OiBNdWx0aWJ5dGUgY29kZWNzIHdpdGggY3VzdG9tIGVycm9yIGhhbmRsZXJzIHRoYXQgaWdub3JlcyBlcnJvcnMKKyAgY29uc3VtZWQgdG9vIG11Y2ggbWVtb3J5IGFuZCByYWlzZWQgU3lzdGVtRXJyb3Igb3IgTWVtb3J5RXJyb3IuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IEFsZWtzaSBUb3JoYW1vLgorCistIElzc3VlICM1NzAwOiBpby5GaWxlSU8oKSBjYWxsZWQgZmx1c2goKSBhZnRlciBjbG9zaW5nIHRoZSBmaWxlLgorICBmbHVzaCgpIHdhcyBub3QgY2FsbGVkIGluIGNsb3NlKCkgaWYgY2xvc2VmZD1GYWxzZS4KKworLSBJc3N1ZSAjMjMzNzQ6IEZpeGVkIHB5ZG9jIGZhaWx1cmUgd2l0aCBub24tQVNDSUkgZmlsZXMgd2hlbiBzdGRvdXQgZW5jb2RpbmcKKyAgZGlmZmVycyBmcm9tIGZpbGUgc3lzdGVtIGVuY29kaW5nIChlLmcuIG9uIE1hYyBPUykuCisKKy0gSXNzdWUgIzIzNDgxOiBSZW1vdmUgUkM0IGZyb20gdGhlIFNTTCBtb2R1bGUncyBkZWZhdWx0IGNpcGhlciBsaXN0LgorCistIElzc3VlICMyMTU0ODogRml4IHB5ZG9jLnN5bm9wc2lzKCkgYW5kIHB5ZG9jLmFwcm9wb3MoKSBvbiBtb2R1bGVzIHdpdGggZW1wdHkKKyAgZG9jc3RyaW5ncy4KKworLSBJc3N1ZSAjMjI4ODU6IEZpeGVkIGFyYml0cmFyeSBjb2RlIGV4ZWN1dGlvbiB2dWxuZXJhYmlsaXR5IGluIHRoZSBkYm0uZHVtYgorICBtb2R1bGUuICBPcmlnaW5hbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuCisKKy0gSXNzdWUgIzIzMjM5OiBzc2wubWF0Y2hfaG9zdG5hbWUoKSBub3cgc3VwcG9ydHMgbWF0Y2hpbmcgb2YgSVAgYWRkcmVzc2VzLgorCistIElzc3VlICMyMzE0NjogRml4IG1pc2hhbmRsaW5nIG9mIGFic29sdXRlIFdpbmRvd3MgcGF0aHMgd2l0aCBmb3J3YXJkCisgIHNsYXNoZXMgaW4gcGF0aGxpYi4KKworLSBJc3N1ZSAjMjMwOTY6IFBpY2tsZSByZXByZXNlbnRhdGlvbiBvZiBmbG9hdHMgd2l0aCBwcm90b2NvbCAwIG5vdyBpcyB0aGUgc2FtZQorICBmb3IgYm90aCBQeXRob24gYW5kIEMgaW1wbGVtZW50YXRpb25zLgorCistIElzc3VlICMxOTEwNTogcHByaW50IG5vdyBtb3JlIGVmZmljaWVudGx5IHVzZXMgZnJlZSBzcGFjZSBhdCB0aGUgcmlnaHQuCisKKy0gSXNzdWUgIzE0OTEwOiBBZGQgYWxsb3dfYWJicmV2IHBhcmFtZXRlciB0byBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlci4gUGF0Y2ggYnkKKyAgSm9uYXRoYW4gUGF1Z2gsIFN0ZXZlbiBCZXRoYXJkLCBwYXVsIGozIGFuZCBEYW5pZWwgRXJpa3Nzb24uCisKKy0gSXNzdWUgIzIxNzE3OiB0YXJmaWxlLm9wZW4oKSBub3cgc3VwcG9ydHMgJ3gnIChleGNsdXNpdmUgY3JlYXRpb24pIG1vZGUuCisKKy0gSXNzdWUgIzIzMzQ0OiBtYXJzaGFsLmR1bXBzKCkgaXMgbm93IDIwLTI1JSBmYXN0ZXIgb24gYXZlcmFnZS4KKworLSBJc3N1ZSAjMjA0MTY6IG1hcnNoYWwuZHVtcHMoKSB3aXRoIHByb3RvY29scyAzIGFuZCA0IGlzIG5vdyA0MC01MCUgZmFzdGVyIG9uCisgIGF2ZXJhZ2UuCisKKy0gSXNzdWUgIzIzNDIxOiBGaXhlZCBjb21wcmVzc2lvbiBpbiB0YXJmaWxlIENMSS4gIFBhdGNoIGJ5IHdkdjQ3NThoLgorCistIElzc3VlICMyMzM2NzogRml4IHBvc3NpYmxlIG92ZXJmbG93cyBpbiB0aGUgdW5pY29kZWRhdGEgbW9kdWxlLgorCistIElzc3VlICMyMzM2MTogRml4IHBvc3NpYmxlIG92ZXJmbG93IGluIFdpbmRvd3Mgc3VicHJvY2VzcyBjcmVhdGlvbiBjb2RlLgorCistIGxvZ2dpbmcuaGFuZGxlcnMuUXVldWVMaXN0ZW5lciBub3cgdGFrZXMgYSByZXNwZWN0X2hhbmRsZXJfbGV2ZWwga2V5d29yZAorICBhcmd1bWVudCB3aGljaCwgaWYgc2V0IHRvIFRydWUsIHdpbGwgcGFzcyBtZXNzYWdlcyB0byBoYW5kbGVycyB0YWtpbmcgaGFuZGxlcgorICBsZXZlbHMgaW50byBhY2NvdW50LgorCistIElzc3VlICMxOTcwNTogdHVydGxlZGVtbyBub3cgaGFzIGEgdmlzdWFsIHNvcnRpbmcgYWxnb3JpdGhtIGRlbW8uICBPcmlnaW5hbAorICBwYXRjaCBmcm9tIEphc29uIFllby4KKworLSBJc3N1ZSAjMjM4MDE6IEZpeCBpc3N1ZSB3aGVyZSBjZ2kuRmllbGRTdG9yYWdlIGRpZCBub3QgYWx3YXlzIGlnbm9yZSB0aGUKKyAgZW50aXJlIHByZWFtYmxlIHRvIGEgbXVsdGlwYXJ0IGJvZHkuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyMzQ0NTogcHlkZWJ1ZyBidWlsZHMgbm93IHVzZSAiZ2NjIC1PZyIgd2hlcmUgcG9zc2libGUsIHRvIG1ha2UKKyAgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIGZhc3Rlci4KKworLSBJc3N1ZSAjMjM2ODY6IFVwZGF0ZSBPUyBYIDEwLjUgaW5zdGFsbGVyIGJ1aWxkIHRvIHVzZSBPcGVuU1NMIDEuMC4yYS4KKworQyBBUEkKKy0tLS0tCisKKy0gSXNzdWUgIzIwMjA0OiBEZXByZWNhdGlvbiB3YXJuaW5nIGlzIG5vdyByYWlzZWQgZm9yIGJ1aWx0aW4gdHlwZXMgd2l0aG91dCB0aGUKKyAgX19tb2R1bGVfXyBhdHRyaWJ1dGUuCisKK1dpbmRvd3MKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjM0NjU6IEltcGxlbWVudCBQRVAgNDg2IC0gTWFrZSB0aGUgUHl0aG9uIExhdW5jaGVyIGF3YXJlIG9mIHZpcnR1YWwKKyAgZW52aXJvbm1lbnRzLiBQYXRjaCBieSBQYXVsIE1vb3JlLgorCistIElzc3VlICMyMzQzNzogTWFrZSB1c2VyIHNjcmlwdHMgZGlyZWN0b3J5IHZlcnNpb25lZCBvbiBXaW5kb3dzLiBQYXRjaCBieSBQYXVsCisgIE1vb3JlLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNSBhbHBoYSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNS0wMi0wOAorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjMyODU6IFBFUCA0NzUgLSBFSU5UUiBoYW5kbGluZy4KKwogLSBJc3N1ZSAjMjI3MzU6IEZpeCBtYW55IGVkZ2UgY2FzZXMgKGluY2x1ZGluZyBjcmFzaGVzKSBpbnZvbHZpbmcgY3VzdG9tIG1ybygpCiAgIGltcGxlbWVudGF0aW9ucy4KIApAQCAtODc5LDE3ICsxOTM5LDQ2IEBACiAtIElzc3VlICMyMTI5NTogUmV2ZXJ0IHNvbWUgY2hhbmdlcyAoaXNzdWUgIzE2Nzk1KSB0byBBU1QgbGluZSBudW1iZXJzIGFuZAogICBjb2x1bW4gb2Zmc2V0cyB0aGF0IGNvbnN0aXR1dGVkIGEgcmVncmVzc2lvbi4KIAorLSBJc3N1ZSAjMjI5ODY6IEFsbG93IGNoYW5naW5nIGFuIG9iamVjdCdzIF9fY2xhc3NfXyBiZXR3ZWVuIGEgZHluYW1pYyB0eXBlIGFuZAorICBzdGF0aWMgdHlwZSBpbiBzb21lIGNhc2VzLgorCistIElzc3VlICMxNTg1OTogUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdCgpLCBQeVVuaWNvZGVfRW5jb2RlTUJDUygpIGFuZAorICBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoKSBub3cgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSBvYmplY3QgaXMgbm90IGFuCisgIFVuaWNvZGUgb2JqZWN0LiBGb3IgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdCgpLCBpdCB3YXMgYWxyZWFkeSB0aGUgY2FzZSBvbgorICBwbGF0Zm9ybXMgb3RoZXIgdGhhbiBXaW5kb3dzLiBQYXRjaCB3cml0dGVuIGJ5IENhbXBiZWxsIEJhcnRvbi4KKwogLSBJc3N1ZSAjMjE0MDg6IFRoZSBkZWZhdWx0IF9fbmVfXygpIG5vdyByZXR1cm5zIE5vdEltcGxlbWVudGVkIGlmIF9fZXFfXygpCiAgIHJldHVybmVkIE5vdEltcGxlbWVudGVkLiAgT3JpZ2luYWwgcGF0Y2ggYnkgTWFydGluIFBhbnRlci4KIAogLSBJc3N1ZSAjMjMzMjE6IEZpeGVkIGEgY3Jhc2ggaW4gc3RyLmRlY29kZSgpIHdoZW4gZXJyb3IgaGFuZGxlciByZXR1cm5lZAogICByZXBsYWNtZW50IHN0cmluZyBsb25nZXIgdGhhbiBtYWlsZm9ybWVkIGlucHV0IGRhdGEuCiAKKy0gSXNzdWUgIzIyMjg2OiBUaGUgImJhY2tzbGFzaHJlcGxhY2UiIGVycm9yIGhhbmRsZXJzIG5vdyB3b3JrcyB3aXRoCisgIGRlY29kaW5nIGFuZCB0cmFuc2xhdGluZy4KKworLSBJc3N1ZSAjMjMyNTM6IERlbGF5LWxvYWQgU2hlbGxFeGVjdXRlW0FXXSBpbiBvcy5zdGFydGZpbGUgZm9yIHJlZHVjZWQKKyAgc3RhcnR1cCBvdmVyaGVhZCBvbiBXaW5kb3dzLgorCistIElzc3VlICMyMjAzODogcHlhdG9taWMuaCBub3cgdXNlcyBzdGRhdG9taWMuaCBvciBHQ0MgYnVpbHQtaW4gZnVuY3Rpb25zIGZvcgorICBhdG9taWMgbWVtb3J5IGFjY2VzcyBpZiBhdmFpbGFibGUuIFBhdGNoIHdyaXR0ZW4gYnkgVml0b3IgZGUgTGltYSBhbmQgR3VzdGF2bworICBUZW1wbGUuCisKKy0gSXNzdWUgIzIwMjg0OiAlLWludGVycG9sYXRpb24gKGFrYSBwcmludGYpIGZvcm1hdHRpbmcgYWRkZWQgZm9yIGJ5dGVzIGFuZAorICBieXRlYXJyYXkuCisKIC0gSXNzdWUgIzIzMDQ4OiBGaXgganVtcGluZyBvdXQgb2YgYW4gaW5maW5pdGUgd2hpbGUgbG9vcCBpbiB0aGUgcGRiLgogCiAtIElzc3VlICMyMDMzNTogYnl0ZXMgY29uc3RydWN0b3Igbm93IHJhaXNlcyBUeXBlRXJyb3Igd2hlbiBlbmNvZGluZyBvciBlcnJvcnMKICAgaXMgc3BlY2lmaWVkIHdpdGggbm9uLXN0cmluZyBhcmd1bWVudC4gIEJhc2VkIG9uIHBhdGNoIGJ5IFJlbmF1ZCBCbGFuY2guCiAKKy0gSXNzdWUgIzIyODM0OiBJZiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBlbmRzIHVwIGJlaW5nIHNldCB0byBhCisgIG5vbi1leGlzdGVudCBkaXJlY3RvcnkgdGhlbiBpbXBvcnQgd2lsbCBubyBsb25nZXIgcmFpc2UgRmlsZU5vdEZvdW5kRXJyb3IuCisKKy0gSXNzdWUgIzIyODY5OiBNb3ZlIHRoZSBpbnRlcnByZXRlciBzdGFydHVwICYgc2h1dGRvd24gY29kZSB0byBhIG5ldworICBkZWRpY2F0ZWQgcHlsaWZlY3ljbGUuYyBtb2R1bGUKKworLSBJc3N1ZSAjMjI4NDc6IEltcHJvdmUgbWV0aG9kIGNhY2hlIGVmZmljaWVuY3kuCisKIC0gSXNzdWUgIzIyMzM1OiBGaXggY3Jhc2ggd2hlbiB0cnlpbmcgdG8gZW5sYXJnZSBhIGJ5dGVhcnJheSB0byAweDdmZmZmZmZmCiAgIGJ5dGVzIG9uIGEgMzItYml0IHBsYXRmb3JtLgogCkBAIC04OTksMTIgKzE5ODgsMjggQEAKIC0gSXNzdWUgIzIyNjQzOiBGaXggaW50ZWdlciBvdmVyZmxvdyBpbiBVbmljb2RlIGNhc2Ugb3BlcmF0aW9ucyAodXBwZXIsIGxvd2VyLAogICB0aXRsZSwgc3dhcGNhc2UsIGNhc2Vmb2xkKS4KIAorLSBJc3N1ZSAjMTc2MzY6IENpcmN1bGFyIGltcG9ydHMgaW52b2x2aW5nIHJlbGF0aXZlIGltcG9ydHMgYXJlIG5vdworICBzdXBwb3J0ZWQuCisKIC0gSXNzdWUgIzIyNjA0OiBGaXggYXNzZXJ0aW9uIGVycm9yIGluIGRlYnVnIG1vZGUgd2hlbiBkaXZpZGluZyBhIGNvbXBsZXgKICAgbnVtYmVyIGJ5IChuYW4rMGopLgogCistIElzc3VlICMyMTA1MjogRG8gbm90IHJhaXNlIEltcG9ydFdhcm5pbmcgd2hlbiBzeXMucGF0aF9ob29rcyBvciBzeXMubWV0YV9wYXRoCisgIGFyZSBzZXQgdG8gTm9uZS4KKworLSBJc3N1ZSAjMTY1MTg6IFVzZSAnYnl0ZXMtbGlrZSBvYmplY3QgcmVxdWlyZWQnIGluIGVycm9yIG1lc3NhZ2VzIHRoYXQKKyAgcHJldmlvdXNseSB1c2VkIHRoZSBmYXIgbW9yZSBjcnlwdGljICIneCcgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYnVmZmVyCisgIHByb3RvY29sLgorCiAtIElzc3VlICMyMjQ3MDogRml4ZWQgaW50ZWdlciBvdmVyZmxvdyBpc3N1ZXMgaW4gImJhY2tzbGFzaHJlcGxhY2UiLAogICAieG1sY2hhcnJlZnJlcGxhY2UiLCBhbmQgInN1cnJvZ2F0ZXBhc3MiIGVycm9yIGhhbmRsZXJzLgogCistIElzc3VlICMyMjU0MDogc3BlZWQgdXAgYFB5T2JqZWN0X0lzSW5zdGFuY2VgIGFuZCBgUHlPYmplY3RfSXNTdWJjbGFzc2AgaW4gdGhlCisgIGNvbW1vbiBjYXNlIHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCBoYXMgbWV0YWNsYXNzIGB0eXBlYC4KKworLSBJc3N1ZSAjMTg3MTE6IEFkZCBhIG5ldyBgUHlFcnJfRm9ybWF0VmAgZnVuY3Rpb24sIHNpbWlsYXIgdG8gYFB5RXJyX0Zvcm1hdGAKKyAgYnV0IGFjY2VwdGluZyBhIGB2YV9saXN0YCBhcmd1bWVudC4KKwogLSBJc3N1ZSAjMjI1MjA6IEZpeCBvdmVyZmxvdyBjaGVja2luZyB3aGVuIGdlbmVyYXRpbmcgdGhlIHJlcHIgb2YgYSB1bmljb2RlCiAgIG9iamVjdC4KIApAQCAtOTEyLDYgKzIwMTcsMTM4IEBACiAKIC0gSXNzdWUgIzIyNTE4OiBGaXggaW50ZWdlciBvdmVyZmxvdyBpc3N1ZXMgaW4gbGF0aW4tMSBlbmNvZGluZy4KIAorLSBJc3N1ZSAjMTYzMjQ6IF9jaGFyc2V0IHBhcmFtZXRlciBvZiBNSU1FVGV4dCBub3cgYWxzbyBhY2NlcHRzCisgIGVtYWlsLmNoYXJzZXQuQ2hhcnNldCBpbnN0YW5jZXMuIEluaXRpYWwgcGF0Y2ggYnkgQ2xhdWRlIFBhcm96LgorCistIElzc3VlICMxNzY0Mjg2OiBGaXggaW5zcGVjdC5nZXRzb3VyY2UoKSB0byBzdXBwb3J0IGRlY29yYXRlZCBmdW5jdGlvbnMuCisgIFBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KKworLSBJc3N1ZSAjMTg1NTQ6IG9zLl9fYWxsX18gaW5jbHVkZXMgcG9zaXggZnVuY3Rpb25zLgorCistIElzc3VlICMyMTM5MTogVXNlIG9zLnBhdGguYWJzcGF0aCBpbiB0aGUgc2h1dGlsIG1vZHVsZS4KKworLSBJc3N1ZSAjMTE0NzE6IGF2b2lkIGdlbmVyYXRpbmcgYSBKVU1QX0ZPUldBUkQgaW5zdHJ1Y3Rpb24gYXQgdGhlIGVuZCBvZgorICBhbiBpZi1ibG9jayBpZiB0aGVyZSBpcyBubyBlbHNlLWNsYXVzZS4gIE9yaWdpbmFsIHBhdGNoIGJ5IEV1Z2VuZSBUb2Rlci4KKworLSBJc3N1ZSAjMjIyMTU6IE5vdyBWYWx1ZUVycm9yIGlzIHJhaXNlZCBpbnN0ZWFkIG9mIFR5cGVFcnJvciB3aGVuIHN0ciBvciBieXRlcworICBhcmd1bWVudCBjb250YWlucyBub3QgcGVybWl0dGVkIG51bGwgY2hhcmFjdGVyIG9yIGJ5dGUuCisKKy0gSXNzdWUgIzIyMjU4OiBGaXggdGhlIGludGVybmFsIGZ1bmN0aW9uIHNldF9pbmhlcml0YWJsZSgpIG9uIElsbHVtb3MuCisgIFRoaXMgcGxhdGZvcm0gZXhwb3NlcyB0aGUgZnVuY3Rpb24gYGBpb2N0bChGSU9DTEVYKWBgLCBidXQgY2FsbGluZyBpdCBmYWlscworICB3aXRoIGVycm5vIGlzIEVOT1RUWTogIkluYXBwcm9wcmlhdGUgaW9jdGwgZm9yIGRldmljZSIuIHNldF9pbmhlcml0YWJsZSgpCisgIG5vdyBmYWxscyBiYWNrIHRvIHRoZSBzbG93ZXIgYGBmY250bCgpYGAgKGBgRl9HRVRGRGBgIGFuZCB0aGVuIGBgRl9TRVRGRGBgKS4KKworLSBJc3N1ZSAjMjEzODk6IERpc3BsYXlpbmcgdGhlIF9fcXVhbG5hbWVfXyBvZiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBpbiB0aGUKKyAgcmVwciBvZiBhIGJvdW5kIG1ldGhvZC4KKworLSBJc3N1ZSAjMjIyMDY6IFVzaW5nIHB0aHJlYWQsIFB5VGhyZWFkX2NyZWF0ZV9rZXkoKSBub3cgc2V0cyBlcnJubyB0byBFTk9NRU0KKyAgYW5kIHJldHVybnMgLTEgKGVycm9yKSBvbiBpbnRlZ2VyIG92ZXJmbG93LgorCistIElzc3VlICMyMDE4NDogQXJndW1lbnQgQ2xpbmljIGJhc2VkIHNpZ25hdHVyZSBpbnRyb3NwZWN0aW9uIGFkZGVkIGZvcgorICAzMCBvZiB0aGUgYnVpbHRpbiBmdW5jdGlvbnMuCisKKy0gSXNzdWUgIzIyMTE2OiBDIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcyAob2YgdGhlICdidWlsdGluX2Z1bmN0aW9uX29yX21ldGhvZCcKKyAgdHlwZSkgY2FuIG5vdyBiZSB3ZWFrcmVmJ2VkLiAgUGF0Y2ggYnkgV2VpIFd1LgorCistIElzc3VlICMyMjA3NzogSW1wcm92ZSBpbmRleCBlcnJvciBtZXNzYWdlcyBmb3IgYnl0ZWFycmF5cywgYnl0ZXMsIGxpc3RzLAorICBhbmQgdHVwbGVzIGJ5IGFkZGluZyAnb3Igc2xpY2VzJy4gQWRkZWQgJywgbm90IDx0eXBlbmFtZT4nIGZvciBieXRlYXJyYXlzLgorICBPcmlnaW5hbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuCisKKy0gSXNzdWUgIzIwMTc5OiBBcHBseSBBcmd1bWVudCBDbGluaWMgdG8gYnl0ZXMgYW5kIGJ5dGVhcnJheS4KKyAgUGF0Y2ggYnkgVGFsIEVpbmF0LgorCistIElzc3VlICMyMjA4MjogQ2xlYXIgaW50ZXJuZWQgc3RyaW5ncyBpbiBzbG90ZGVmcy4KKworLSBVcGdyYWRlIFVuaWNvZGUgZGF0YWJhc2UgdG8gVW5pY29kZSA3LjAuMC4KKworLSBJc3N1ZSAjMjE4OTc6IEZpeCBhIGNyYXNoIHdpdGggdGhlIGZfbG9jYWxzIGF0dHJpYnV0ZSB3aXRoIGNsb3N1cmUKKyAgdmFyaWFibGVzIHdoZW4gZnJhbWUuY2xlYXIoKSBoYXMgYmVlbiBjYWxsZWQuCisKKy0gSXNzdWUgIzIxMjA1OiBBZGQgYSBuZXcgYGBfX3F1YWxuYW1lX19gYCBhdHRyaWJ1dGUgdG8gZ2VuZXJhdG9yLCB0aGUKKyAgcXVhbGlmaWVkIG5hbWUsIGFuZCB1c2UgaXQgaW4gdGhlIHJlcHJlc2VudGF0aW9uIG9mIGEgZ2VuZXJhdG9yCisgIChgYHJlcHIoZ2VuKWBgKS4gVGhlIGRlZmF1bHQgbmFtZSBvZiB0aGUgZ2VuZXJhdG9yIChgYF9fbmFtZV9fYGAgYXR0cmlidXRlKQorICBpcyBub3cgZ2V0IGZyb20gdGhlIGZ1bmN0aW9uIGluc3RlYWQgb2YgdGhlIGNvZGUuIFVzZSBgYGdlbi5naV9jb2RlLmNvX25hbWVgYAorICB0byBnZXQgdGhlIG5hbWUgb2YgdGhlIGNvZGUuCisKKy0gSXNzdWUgIzIxNjY5OiBXaXRoIHRoZSBhaWQgb2YgaGV1cmlzdGljcyBpbiBTeW50YXhFcnJvci5fX2luaXRfXywgdGhlCisgIHBhcnNlciBub3cgYXR0ZW1wdHMgdG8gZ2VuZXJhdGUgbW9yZSBtZWFuaW5nZnVsIChvciBhdCBsZWFzdCBtb3JlIHNlYXJjaAorICBlbmdpbmUgZnJpZW5kbHkpIGVycm9yIG1lc3NhZ2VzIHdoZW4gImV4ZWMiIGFuZCAicHJpbnQiIGFyZSB1c2VkIGFzCisgIHN0YXRlbWVudHMuCisKKy0gSXNzdWUgIzIxNjQyOiBJbiB0aGUgY29uZGl0aW9uYWwgaWYtZWxzZSBleHByZXNzaW9uLCBhbGxvdyBhbiBpbnRlZ2VyIHdyaXR0ZW4KKyAgd2l0aCBubyBzcGFjZSBiZXR3ZWVuIGl0c2VsZiBhbmQgdGhlIGBgZWxzZWBgIGtleXdvcmQgKGUuZy4gYGBUcnVlIGlmIDQyZWxzZQorICBGYWxzZWBgKSB0byBiZSB2YWxpZCBzeW50YXguCisKKy0gSXNzdWUgIzIxNTIzOiBGaXggb3Zlci1wZXNzaW1pc3RpYyBjb21wdXRhdGlvbiBvZiB0aGUgc3RhY2sgZWZmZWN0IG9mCisgIHNvbWUgb3Bjb2RlcyBpbiB0aGUgY29tcGlsZXIuICBUaGlzIGFsc28gZml4ZXMgYSBxdWFkcmF0aWMgY29tcGlsYXRpb24KKyAgdGltZSBpc3N1ZSBub3RpY2VhYmxlIHdoZW4gY29tcGlsaW5nIGNvZGUgd2l0aCBhIGxhcmdlIG51bWJlciBvZiAiYW5kIgorICBhbmQgIm9yIiBvcGVyYXRvcnMuCisKKy0gSXNzdWUgIzIxNDE4OiBGaXggYSBjcmFzaCBpbiB0aGUgYnVpbHRpbiBmdW5jdGlvbiBzdXBlcigpIHdoZW4gY2FsbGVkIHdpdGhvdXQKKyAgYXJndW1lbnQgYW5kIHdpdGhvdXQgY3VycmVudCBmcmFtZSAoZXg6IGVtYmVkZGVkIFB5dGhvbikuCisKKy0gSXNzdWUgIzIxNDI1OiBGaXggZmx1c2hpbmcgb2Ygc3RhbmRhcmQgc3RyZWFtcyBpbiB0aGUgaW50ZXJhY3RpdmUKKyAgaW50ZXJwcmV0ZXIuCisKKy0gSXNzdWUgIzIxNDM1OiBJbiByYXJlIGNhc2VzLCB3aGVuIHJ1bm5pbmcgZmluYWxpemVycyBvbiBvYmplY3RzIGluIGN5Y2xpYworICB0cmFzaCBhIGJhZCBwb2ludGVyIGRlcmVmZXJlbmNlIGNvdWxkIG9jY3VyIGR1ZSB0byBhIHN1YnRsZSBmbGF3IGluCisgIGludGVybmFsIGl0ZXJhdGlvbiBsb2dpYy4KKworLSBJc3N1ZSAjMjEzNzc6IFB5Qnl0ZXNfQ29uY2F0KCkgbm93IHRyaWVzIHRvIGNvbmNhdGVuYXRlIGluLXBsYWNlIHdoZW4gdGhlCisgIGZpcnN0IGFyZ3VtZW50IGhhcyBhIHJlZmVyZW5jZSBjb3VudCBvZiAxLiAgUGF0Y2ggYnkgTmlrb2xhdXMgUmF0aC4KKworLSBJc3N1ZSAjMjAzNTU6IC1XIGNvbW1hbmQgbGluZSBvcHRpb25zIG5vdyBoYXZlIGhpZ2hlciBwcmlvcml0eSB0aGFuIHRoZQorICBQWVRIT05XQVJOSU5HUyBlbnZpcm9ubWVudCB2YXJpYWJsZS4gIFBhdGNoIGJ5IEFyZnJldmVyLgorCistIElzc3VlICMyMTI3NDogRGVmaW5lIFBBVEhfTUFYIGZvciBHTlUvSHVyZCBpbiBQeXRob24vcHl0aG9ucnVuLmMuCisKKy0gSXNzdWUgIzIwOTA0OiBTdXBwb3J0IHNldHRpbmcgRlBVIHByZWNpc2lvbiBvbiBtNjhrLgorCistIElzc3VlICMyMTIwOTogRml4IHNlbmRpbmcgdHVwbGVzIHRvIGN1c3RvbSBnZW5lcmF0b3Igb2JqZWN0cyB3aXRoIHRoZSB5aWVsZAorICBmcm9tIHN5bnRheC4KKworLSBJc3N1ZSAjMjExOTM6IHBvdyhhLCBiLCBjKSBub3cgcmFpc2VzIFZhbHVlRXJyb3IgcmF0aGVyIHRoYW4gVHlwZUVycm9yIHdoZW4gYgorICBpcyBuZWdhdGl2ZS4gIFBhdGNoIGJ5IEpvc2ggUm9zZW5iZXJnLgorCistIFBFUCA0NjUgYW5kIElzc3VlICMyMTE3NjogQWRkIHRoZSAnQCcgb3BlcmF0b3IgZm9yIG1hdHJpeCBtdWx0aXBsaWNhdGlvbi4KKworLSBJc3N1ZSAjMjExMzQ6IEZpeCBzZWdmYXVsdCB3aGVuIHN0ciBpcyBjYWxsZWQgb24gYW4gdW5pbml0aWFsaXplZAorICBVbmljb2RlRW5jb2RlRXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvciwgb3IgVW5pY29kZVRyYW5zbGF0ZUVycm9yIG9iamVjdC4KKworLSBJc3N1ZSAjMTk1Mzc6IEZpeCBQeVVuaWNvZGVfREFUQSgpIGFsaWdubWVudCB1bmRlciBtNjhrLiAgUGF0Y2ggYnkKKyAgQW5kcmVhcyBTY2h3YWIuCisKKy0gSXNzdWUgIzIwOTI5OiBBZGQgYSB0eXBlIGNhc3QgdG8gYXZvaWQgc2hpZnRpbmcgYSBuZWdhdGl2ZSBudW1iZXIuCisKKy0gSXNzdWUgIzIwNzMxOiBQcm9wZXJseSBwb3NpdGlvbiBpbiBzb3VyY2UgY29kZSBmaWxlcyBldmVuIGlmIHRoZXkKKyAgYXJlIG9wZW5lZCBpbiB0ZXh0IG1vZGUuIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzIwNjM3OiBLZXktc2hhcmluZyBub3cgYWxzbyB3b3JrcyBmb3IgaW5zdGFuY2UgZGljdGlvbmFyaWVzIG9mCisgIHN1YmNsYXNzZXMuICBQYXRjaCBieSBQZXRlciBJbmdlYnJldHNvbi4KKworLSBJc3N1ZSAjODI5NzogQXR0cmlidXRlcyBtaXNzaW5nIGZyb20gbW9kdWxlcyBub3cgaW5jbHVkZSB0aGUgbW9kdWxlIG5hbWUKKyAgaW4gdGhlIGVycm9yIHRleHQuICBPcmlnaW5hbCBwYXRjaCBieSB5c2oucmF5LgorCistIElzc3VlICMxOTk5NTogJWMsICVvLCAleCwgYW5kICVYIG5vdyByYWlzZSBUeXBlRXJyb3Igb24gbm9uLWludGVnZXIgaW5wdXQuCisKKy0gSXNzdWUgIzE5NjU1OiBUaGUgQVNETCBwYXJzZXIgLSB1c2VkIGJ5IHRoZSBidWlsZCBwcm9jZXNzIHRvIGdlbmVyYXRlIGNvZGUgZm9yCisgIG1hbmFnaW5nIHRoZSBQeXRob24gQVNUIGluIEMgLSB3YXMgcmV3cml0dGVuLiBUaGUgbmV3IHBhcnNlciBpcyBzZWxmIGNvbnRhaW5lZAorICBhbmQgZG9lcyBub3QgcmVxdWlyZSB0byBjYXJyeSBsb25nIHRoZSBzcGFyay5weSBwYXJzZXItZ2VuZXJhdG9yIGxpYnJhcnk7CisgIHNwYXJrLnB5IHdhcyByZW1vdmVkIGZyb20gdGhlIHNvdXJjZSBiYXNlLgorCistIElzc3VlICMxMjU0NjogQWxsb3cgYGBceDAwYGAgdG8gYmUgdXNlZCBhcyBhIGZpbGwgY2hhcmFjdGVyIHdoZW4gdXNpbmcgc3RyLCBpbnQsCisgIGZsb2F0LCBhbmQgY29tcGxleCBfX2Zvcm1hdF9fIG1ldGhvZHMuCisKKy0gSXNzdWUgIzIwNDgwOiBBZGQgaXBhZGRyZXNzLnJldmVyc2VfcG9pbnRlci4gUGF0Y2ggYnkgTGVvbiBXZWJlci4KKworLSBJc3N1ZSAjMTM1OTg6IE1vZGlmeSBzdHJpbmcuRm9ybWF0dGVyIHRvIHN1cHBvcnQgYXV0by1udW1iZXJpbmcgb2YKKyAgcmVwbGFjZW1lbnQgZmllbGRzLiBJdCBub3cgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2Ygc3RyLmZvcm1hdCgpIGluCisgIHRoaXMgcmVnYXJkLiBQYXRjaGVzIGJ5IFBoaWwgRWxzb24gYW5kIFJhbWNoYW5kcmEgQXB0ZS4KKworLSBJc3N1ZSAjODkzMTogTWFrZSBhbHRlcm5hdGUgZm9ybWF0dGluZyAoJyMnKSBmb3IgdHlwZSAnYycgcmFpc2UgYW4KKyAgZXhjZXB0aW9uLiBJbiB2ZXJzaW9ucyBwcmlvciB0byAzLjUsICcjJyB3aXRoICdjJyBoYWQgbm8gZWZmZWN0LiBOb3cKKyAgc3BlY2lmeWluZyBpdCBpcyBhbiBlcnJvci4gIFBhdGNoIGJ5IFRvcnN0ZW4gTGFuZHNjaG9mZi4KKwogLSBJc3N1ZSAjMjMxNjU6IFBlcmZvcm0gb3ZlcmZsb3cgY2hlY2tzIGJlZm9yZSBhbGxvY2F0aW5nIG1lbW9yeSBpbiB0aGUKICAgX1B5X2NoYXIyd2NoYXIgZnVuY3Rpb24uCiAKQEAgLTkyMCw5ICsyMTU3LDI0IEBACiAKIC0gSXNzdWUgIzIzMzk5OiBweXZlbnYgY3JlYXRlcyByZWxhdGl2ZSBzeW1saW5rcyB3aGVyZSBwb3NzaWJsZS4KIAorLSBJc3N1ZSAjMjAyODk6IGNnaS5GaWVsZFN0b3JhZ2UoKSBub3cgc3VwcG9ydHMgdGhlIGNvbnRleHQgbWFuYWdlbWVudAorICBwcm90b2NvbC4KKworLSBJc3N1ZSAjMTMxMjg6IFByaW50IHJlc3BvbnNlIGhlYWRlcnMgZm9yIENPTk5FQ1QgcmVxdWVzdHMgd2hlbiBkZWJ1Z2xldmVsCisgID4gMC4gUGF0Y2ggYnkgRGVtaWFuIEJyZWNodC4KKworLSBJc3N1ZSAjMTUzODE6IE9wdGltaXplZCBpby5CeXRlc0lPIHRvIG1ha2UgbGVzcyBhbGxvY2F0aW9ucyBhbmQgY29weWluZ3MuCisKKy0gSXNzdWUgIzIyODE4OiBTcGxpdHRpbmcgb24gYSBwYXR0ZXJuIHRoYXQgY291bGQgbWF0Y2ggYW4gZW1wdHkgc3RyaW5nIG5vdworICByYWlzZXMgYSB3YXJuaW5nLiAgUGF0dGVybnMgdGhhdCBjYW4gb25seSBtYXRjaCBlbXB0eSBzdHJpbmdzIGFyZSBub3cKKyAgcmVqZWN0ZWQuCisKIC0gSXNzdWUgIzIzMDk5OiBDbG9zaW5nIGlvLkJ5dGVzSU8gd2l0aCBleHBvcnRlZCBidWZmZXIgaXMgcmVqZWN0ZWQgbm93IHRvCiAgIHByZXZlbnQgY29ycnVwdGluZyBleHBvcnRlZCBidWZmZXIuCiAKKy0gSXNzdWUgIzIzMzI2OiBSZW1vdmVkIF9fbmVfXyBpbXBsZW1lbnRhdGlvbnMuICBTaW5jZSBmaXhpbmcgZGVmYXVsdCBfX25lX18KKyAgaW1wbGVtZW50YXRpb24gaW4gaXNzdWUgIzIxNDA4IHRoZXkgYXJlIHJlZHVuZGFudC4KKwogLSBJc3N1ZSAjMjMzNjM6IEZpeCBwb3NzaWJsZSBvdmVyZmxvdyBpbiBpdGVydG9vbHMucGVybXV0YXRpb25zLgogCiAtIElzc3VlICMyMzM2NDogRml4IHBvc3NpYmxlIG92ZXJmbG93IGluIGl0ZXJ0b29scy5wcm9kdWN0LgpAQCAtOTM4LDYgKzIxOTAsMTQgQEAKICAgaXMgbm93IGFsd2F5cyByZXN0b3JlZCBvciBzd2FwcGVkLCBub3Qgb25seSBpZiB3aHkgaXMgV0hZX1lJRUxEIG9yCiAgIFdIWV9SRVRVUk4uIFBhdGNoIGNvLXdyaXR0ZW4gd2l0aCBBbnRvaW5lIFBpdHJvdS4KIAorLSBJc3N1ZSAjMTQwOTk6IFJlc3RvcmVkIHN1cHBvcnQgb2Ygd3JpdGluZyBaSVAgZmlsZXMgdG8gdGVsbGFibGUgYnV0CisgIG5vbi1zZWVrYWJsZSBzdHJlYW1zLgorCistIElzc3VlICMxNDA5OTogV3JpdGluZyB0byBaaXBGaWxlIGFuZCByZWFkaW5nIG11bHRpcGxlIFppcEV4dEZpbGVzIGlzCisgIHRocmVhZHNhZmUgbm93LgorCistIElzc3VlICMxOTM2MTogSlNPTiBkZWNvZGVyIG5vdyByYWlzZXMgSlNPTkRlY29kZUVycm9yIGluc3RlYWQgb2YgVmFsdWVFcnJvci4KKwogLSBJc3N1ZSAjMTg1MTg6IHRpbWVpdCBub3cgcmVqZWN0cyBzdGF0ZW1lbnRzIHdoaWNoIGNhbid0IGJlIGNvbXBpbGVkIG91dHNpZGUKICAgYSBmdW5jdGlvbiBvciBhIGxvb3AgKGUuZy4gInJldHVybiIgb3IgImJyZWFrIikuCiAKQEAgLTk1Miw0NyArMjIxMiw4NSBAQAogLSBJc3N1ZSAjMTk5OTY6IDpjbGFzczpgZW1haWwuZmVlZHBhcnNlci5GZWVkUGFyc2VyYCBub3cgaGFuZGxlcyAobWFsZm9ybWVkKQogICBoZWFkZXJzIHdpdGggbm8ga2V5IHJhdGhlciB0aGFuIGFzc3VtaW5nIHRoZSBib2R5IGhhcyBzdGFydGVkLgogCistIElzc3VlICMyMDE4ODogU3VwcG9ydCBBcHBsaWNhdGlvbi1MYXllciBQcm90b2NvbCBOZWdvdGlhdGlvbiAoQUxQTikgaW4gdGhlIHNzbAorICBtb2R1bGUuCisKKy0gSXNzdWUgIzIzMTMzOiBQaWNrbGluZyBvZiBpcGFkZHJlc3Mgb2JqZWN0cyBub3cgcHJvZHVjZXMgbW9yZSBjb21wYWN0IGFuZAorICBwb3J0YWJsZSByZXByZXNlbnRhdGlvbi4KKwogLSBJc3N1ZSAjMjMyNDg6IFVwZGF0ZSBzc2wgZXJyb3IgY29kZXMgZnJvbSBsYXRlc3QgT3BlblNTTCBnaXQgbWFzdGVyLgogCistIElzc3VlICMyMzI2NjogTXVjaCBmYXN0ZXIgaW1wbGVtZW50YXRpb24gb2YgaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcygpCisgIHdoZW4gdGhlcmUgYXJlIG1hbnkgbm9uLWNvbnNlY3V0aXZlIGFkZHJlc3Nlcy4KKwogLSBJc3N1ZSAjMjMwOTg6IDY0LWJpdCBkZXZfdCBpcyBub3cgc3VwcG9ydGVkIGluIHRoZSBvcyBtb2R1bGUuCiAKKy0gSXNzdWUgIzIxODE3OiBXaGVuIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW4gYSB0YXNrIHN1Ym1pdHRlZCB0byBhCisgIFByb2Nlc3NQb29sRXhlY3V0b3IsIHRoZSByZW1vdGUgdHJhY2ViYWNrIGlzIG5vdyBkaXNwbGF5ZWQgaW4gdGhlCisgIHBhcmVudCBwcm9jZXNzLiAgUGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgorCistIElzc3VlICMxNTk1NTogQWRkIGFuIG9wdGlvbiB0byBsaW1pdCBvdXRwdXQgc2l6ZSB3aGVuIGRlY29tcHJlc3NpbmcgTFpNQQorICBkYXRhLiAgUGF0Y2ggYnkgTmlrb2xhdXMgUmF0aCBhbmQgTWFydGluIFBhbnRlci4KKwogLSBJc3N1ZSAjMjMyNTA6IEluIHRoZSBodHRwLmNvb2tpZXMgbW9kdWxlLCBjYXBpdGFsaXplICJIdHRwT25seSIgYW5kICJTZWN1cmUiCiAgIGFzIHRoZXkgYXJlIHdyaXR0ZW4gaW4gdGhlIHN0YW5kYXJkLgogCiAtIElzc3VlICMyMzA2MzogSW4gdGhlIGRpc3V0aWxzJyBjaGVjayBjb21tYW5kLCBmaXggcGFyc2luZyBvZiByZVNUIHdpdGggY29kZSBvcgogICBjb2RlLWJsb2NrIGRpcmVjdGl2ZXMuCiAKLS0gSXNzdWUgIzIzMjA5LCAjMjMyMjU6IHNlbGVjdG9ycy5CYXNlU2VsZWN0b3IuY2xvc2UoKSBub3cgY2xlYXJzIGl0cyBpbnRlcm5hbAotICByZWZlcmVuY2UgdG8gdGhlIHNlbGVjdG9yIG1hcHBpbmcgdG8gYnJlYWsgYSByZWZlcmVuY2UgY3ljbGUuIEluaXRpYWwgcGF0Y2gKLSAgd3JpdHRlbiBieSBNYXJ0aW4gUmljaGFyZC4KKy0gSXNzdWUgIzIzMjA5LCAjMjMyMjU6IHNlbGVjdG9ycy5CYXNlU2VsZWN0b3IuZ2V0X2tleSgpIG5vdyByYWlzZXMgYQorICBSdW50aW1lRXJyb3IgaWYgdGhlIHNlbGVjdG9yIGlzIGNsb3NlZC4gQW5kIHNlbGVjdG9ycy5CYXNlU2VsZWN0b3IuY2xvc2UoKQorICBub3cgY2xlYXJzIGl0cyBpbnRlcm5hbCByZWZlcmVuY2UgdG8gdGhlIHNlbGVjdG9yIG1hcHBpbmcgdG8gYnJlYWsgYQorICByZWZlcmVuY2UgY3ljbGUuIEluaXRpYWwgcGF0Y2ggd3JpdHRlbiBieSBNYXJ0aW4gUmljaGFyZC4KIAotLSBJc3N1ZSAjMjEzNTY6IE1ha2Ugc3NsLlJBTkRfZWdkKCkgb3B0aW9uYWwgdG8gc3VwcG9ydCBMaWJyZVNTTC4gVGhlCi0gIGF2YWlsYWJpbGl0eSBvZiB0aGUgZnVuY3Rpb24gaXMgY2hlY2tlZCBkdXJpbmcgdGhlIGNvbXBpbGF0aW9uLiBQYXRjaCB3cml0dGVuCi0gIGJ5IEJlcm5hcmQgU3BpbC4KKy0gSXNzdWUgIzE3OTExOiBQcm92aWRlIGEgd2F5IHRvIHNlZWQgdGhlIGxpbmVjYWNoZSBmb3IgYSBQRVAtMzAyIG1vZHVsZQorICB3aXRob3V0IGFjdHVhbGx5IGxvYWRpbmcgdGhlIGNvZGUuCiAKLS0gSXNzdWUgIzIwODk2LCAjMjI5MzU6IFRoZSA6ZnVuYzpgc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGVgIGZ1bmN0aW9uIG5vdwotICB1c2VzIHRoZSA6ZGF0YTpgfnNzbC5QUk9UT0NPTF9TU0x2MjNgIHByb3RvY29sIGJ5IGRlZmF1bHQsIG5vdAotICA6ZGF0YTpgfnNzbC5QUk9UT0NPTF9TU0x2M2AsIGZvciBtYXhpbXVtIGNvbXBhdGliaWxpdHkgYW5kIHN1cHBvcnQgcGxhdGZvcm1zCi0gIHdoZXJlIDpkYXRhOmB+c3NsLlBST1RPQ09MX1NTTHYzYCBzdXBwb3J0IGlzIGRpc2FibGVkLgorLSBJc3N1ZSAjMTc5MTE6IFByb3ZpZGUgYSBuZXcgb2JqZWN0IEFQSSBmb3IgdHJhY2ViYWNrLCBpbmNsdWRpbmcgdGhlIGFiaWxpdHkKKyAgdG8gbm90IGxvb2t1cCBsaW5lcyBhdCBhbGwgdW50aWwgdGhlIHRyYWNlYmFjayBpcyBhY3R1YWxseSByZW5kZXJlZCwgd2l0aG91dAorICBhbnkgdHJhY2Ugb2YgdGhlIG9yaWdpbmFsIG9iamVjdHMgYmVpbmcga2VwdCBhbGl2ZS4KIAotLSBJc3N1ZSAjMjMxMTE6IEluIHRoZSBmdHBsaWIsIG1ha2Ugc3NsLlBST1RPQ09MX1NTTHYyMyB0aGUgZGVmYXVsdCBwcm90b2NvbAotICB2ZXJzaW9uLgorLSBJc3N1ZSAjMTk3Nzc6IFByb3ZpZGUgYSBob21lKCkgY2xhc3NtZXRob2Qgb24gUGF0aCBvYmplY3RzLiAgQ29udHJpYnV0ZWQKKyAgYnkgVmljdG9yIFNhbGdhZG8gYW5kIE1heWFuayBUcmlwYXRoaS4KIAotLSBJc3N1ZSAjMjMxMzI6IE1pdGlnYXRlIHJlZ3Jlc3Npb24gaW4gc3BlZWQgYW5kIGNsYXJpdHkgaW4gZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nLgorLSBJc3N1ZSAjMjMyMDY6IE1ha2UgYGBqc29uLmR1bXBzKC4uLiwgZW5zdXJlX2FzY2lpPUZhbHNlKWBgIGFzIGZhc3QgYXMgdGhlCisgIGRlZmF1bHQgY2FzZSBvZiBgYGVuc3VyZV9hc2NpaT1UcnVlYGAuICBQYXRjaCBieSBOYW9raSBJbmFkYS4KIAotLSBJc3N1ZSAjMjI1ODU6IE9uIE9wZW5CU0QgNS42IGFuZCBuZXdlciwgb3MudXJhbmRvbSgpIG5vdyBjYWxscyBnZXRlbnRyb3B5KCksCi0gIGluc3RlYWQgb2YgcmVhZGluZyAvZGV2L3VyYW5kb20sIHRvIGdldCBwc2V1ZG8tcmFuZG9tIGJ5dGVzLgorLSBJc3N1ZSAjMjMxODU6IEFkZCBtYXRoLmluZiBhbmQgbWF0aC5uYW4gY29uc3RhbnRzLgorCistIElzc3VlICMyMzE4NjogQWRkIHNzbC5TU0xPYmplY3Quc2hhcmVkX2NpcGhlcnMoKSBhbmQKKyAgc3NsLlNTTFNvY2tldC5zaGFyZWRfY2lwaGVycygpIHRvIGZldGNoIHRoZSBjbGllbnQncyBsaXN0IGNpcGhlcnMgc2VudCBhdAorICBoYW5kc2hha2UuCisKKy0gSXNzdWUgIzIzMTQzOiBSZW1vdmUgY29tcGF0aWJpbGl0eSB3aXRoIE9wZW5TU0xzIG9sZGVyIHRoYW4gMC45LjguCisKKy0gSXNzdWUgIzIzMTMyOiBJbXByb3ZlIHBlcmZvcm1hbmNlIGFuZCBpbnRyb3NwZWN0aW9uIHN1cHBvcnQgb2YgY29tcGFyaXNvbgorICBtZXRob2RzIGNyZWF0ZWQgYnkgZnVuY3Rvb2wudG90YWxfb3JkZXJpbmcuCisKKy0gSXNzdWUgIzE5Nzc2OiBBZGQgYW4gZXhwYW5kdXNlcigpIG1ldGhvZCBvbiBQYXRoIG9iamVjdHMuCiAKIC0gSXNzdWUgIzIzMTEyOiBGaXggU2ltcGxlSFRUUFNlcnZlciB0byBjb3JyZWN0bHkgY2FycnkgdGhlIHF1ZXJ5IHN0cmluZyBhbmQKICAgZnJhZ21lbnQgd2hlbiBpdCByZWRpcmVjdHMgdG8gYWRkIGEgdHJhaWxpbmcgc2xhc2guCiAKKy0gSXNzdWUgIzIxNzkzOiBBZGRlZCBodHRwLkhUVFBTdGF0dXMgZW51bXMgKGkuZS4gSFRUUFN0YXR1cy5PSywKKyAgSFRUUFN0YXR1cy5OT1RfRk9VTkQpLiAgUGF0Y2ggYnkgRGVtaWFuIEJyZWNodC4KKwogLSBJc3N1ZSAjMjMwOTM6IEluIHRoZSBpbywgbW9kdWxlIGFsbG93IG1vcmUgb3BlcmF0aW9ucyB0byB3b3JrIG9uIGRldGFjaGVkCiAgIHN0cmVhbXMuCiAKKy0gSXNzdWUgIzIzMTExOiBJbiB0aGUgZnRwbGliLCBtYWtlIHNzbC5QUk9UT0NPTF9TU0x2MjMgdGhlIGRlZmF1bHQgcHJvdG9jb2wKKyAgdmVyc2lvbi4KKworLSBJc3N1ZSAjMjI1ODU6IE9uIE9wZW5CU0QgNS42IGFuZCBuZXdlciwgb3MudXJhbmRvbSgpIG5vdyBjYWxscyBnZXRlbnRyb3B5KCksCisgIGluc3RlYWQgb2YgcmVhZGluZyAvZGV2L3VyYW5kb20sIHRvIGdldCBwc2V1ZG8tcmFuZG9tIGJ5dGVzLgorCiAtIElzc3VlICMxOTEwNDogcHByaW50IG5vdyBwcm9kdWNlcyBldmFsdWFibGUgb3V0cHV0IGZvciB3cmFwcGVkIHN0cmluZ3MuCiAKIC0gSXNzdWUgIzIzMDcxOiBBZGRlZCBtaXNzaW5nIG5hbWVzIHRvIGNvZGVjcy5fX2FsbF9fLiAgUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KIAorLSBJc3N1ZSAjMjI3ODM6IFBpY2tsaW5nIG5vdyB1c2VzIHRoZSBORVdPQkogb3Bjb2RlIGluc3RlYWQgb2YgdGhlIE5FV09CSl9FWAorICBvcGNvZGUgaWYgcG9zc2libGUuCisKIC0gSXNzdWUgIzE1NTEzOiBBZGRlZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIHBpY2tsZSBjbGFzc2VzLgogCiAtIElzc3VlICMxOTg1ODogcGlja2xldG9vbHMub3B0aW1pemUoKSBub3cgYXdhcmUgb2YgdGhlIE1FTU9JWkUgb3Bjb2RlLCBjYW4KQEAgLTEwMTQsMTIgKzIzMTIsMjUgQEAKIC0gSXNzdWUgIzEyMTgyMzQ6IEZpeCBpbnNwZWN0LmdldHNvdXJjZSgpIHRvIGxvYWQgdXBkYXRlZCBzb3VyY2Ugb2YKICAgcmVsb2FkZWQgbW9kdWxlLiBJbml0aWFsIHBhdGNoIGJ5IEJlcmtlciBQZWtzYWcuCiAKKy0gSXNzdWUgIzIxNzQwOiBTdXBwb3J0IHdyYXBwZWQgY2FsbGFibGVzIGluIGRvY3Rlc3QuIFBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KKworLSBJc3N1ZSAjMjMwMDk6IE1ha2Ugc3VyZSBzZWxlY3RvcnMuRXBvbGxTZWxlY3J0b3Iuc2VsZWN0KCkgd29ya3Mgd2hlbiBubworICBGRCBpcyByZWdpc3RlcmVkLgorCiAtIElzc3VlICMyMjk1OTogSW4gdGhlIGNvbnN0cnVjdG9yIG9mIGh0dHAuY2xpZW50LkhUVFBTQ29ubmVjdGlvbiwgcHJlZmVyIHRoZQogICBjb250ZXh0J3MgY2hlY2tfaG9zdG5hbWUgYXR0cmlidXRlIG92ZXIgdGhlICpjaGVja19ob3N0bmFtZSogcGFyYW1ldGVyLgogCistIElzc3VlICMyMjY5NjogQWRkIGZ1bmN0aW9uIDpmdW5jOmBzeXMuaXNfZmluYWxpemluZ2AgdG8ga25vdyBhYm91dAorICBpbnRlcnByZXRlciBzaHV0ZG93bi4KKwogLSBJc3N1ZSAjMTYwNDM6IEFkZCBhIGRlZmF1bHQgbGltaXQgZm9yIHRoZSBhbW91bnQgb2YgZGF0YSB4bWxycGNsaWIuZ3ppcF9kZWNvZGUKICAgd2lsbCByZXR1cm4uIFRoaXMgcmVzb2x2ZXMgQ1ZFLTIwMTMtMTc1My4KIAorLSBJc3N1ZSAjMTQwOTk6IFppcEZpbGUub3BlbigpIG5vIGxvbmdlciByZW9wZW4gdGhlIHVuZGVybHlpbmcgZmlsZS4gIE9iamVjdHMKKyAgcmV0dXJuZWQgYnkgWmlwRmlsZS5vcGVuKCkgY2FuIG5vdyBvcGVyYXRlIGluZGVwZW5kZW50bHkgb2YgdGhlIFppcEZpbGUgZXZlbgorICBpZiB0aGUgWmlwRmlsZSB3YXMgY3JlYXRlZCBieSBwYXNzaW5nIGluIGEgZmlsZS1saWtlIG9iamVjdCBhcyB0aGUgZmlyc3QKKyAgYXJndW1lbnQgdG8gdGhlIGNvbnN0cnVjdG9yLgorCiAtIElzc3VlICMyMjk2NjogRml4IF9fcHljYWNoZV9fIHB5YyBmaWxlIG5hbWUgY2xvYmJlciB3aGVuIHB5Y19jb21waWxlIGlzCiAgIGFza2VkIHRvIGNvbXBpbGUgYSBzb3VyY2UgZmlsZSBjb250YWluaW5nIG11bHRpcGxlIGRvdHMgaW4gdGhlIHNvdXJjZSBmaWxlCiAgIG5hbWUuCkBAIC0xMDI5LDE0ICsyMzQwLDMwIEBACiAtIElzc3VlICMyMTAzMi4gRml4ZWQgc29ja2V0IGxlYWsgaWYgSFRUUENvbm5lY3Rpb24uZ2V0cmVzcG9uc2UoKSBmYWlscy4KICAgT3JpZ2luYWwgcGF0Y2ggYnkgTWFydGluIFBhbnRlci4KIAorLSBJc3N1ZSAjMjI0MDc6IERlcHJlY2F0ZWQgdGhlIHVzZSBvZiByZS5MT0NBTEUgZmxhZyB3aXRoIHN0ciBwYXR0ZXJucyBvcgorICByZS5BU0NJSS4gSXQgd2FzIG5ld2VyIHdvcmtlZC4KKworLSBJc3N1ZSAjMjI5MDI6IFRoZSAiaXAiIGNvbW1hbmQgaXMgbm93IHVzZWQgb24gTGludXggdG8gZGV0ZXJtaW5lIE1BQyBhZGRyZXNzCisgIGluIHV1aWQuZ2V0bm9kZSgpLiAgUGFjaCBieSBCcnVubyBDYXVldC4KKwogLSBJc3N1ZSAjMjI5NjA6IEFkZCBhIGNvbnRleHQgYXJndW1lbnQgdG8geG1scnBjbGliLlNlcnZlclByb3h5IGNvbnN0cnVjdG9yLgogCistIElzc3VlICMyMjM4OTogQWRkIGNvbnRleHRsaWIucmVkaXJlY3Rfc3RkZXJyKCkuCisKKy0gSXNzdWUgIzIxMzU2OiBNYWtlIHNzbC5SQU5EX2VnZCgpIG9wdGlvbmFsIHRvIHN1cHBvcnQgTGlicmVTU0wuIFRoZQorICBhdmFpbGFiaWxpdHkgb2YgdGhlIGZ1bmN0aW9uIGlzIGNoZWNrZWQgZHVyaW5nIHRoZSBjb21waWxhdGlvbi4gUGF0Y2ggd3JpdHRlbgorICBieSBCZXJuYXJkIFNwaWwuCisKIC0gSXNzdWUgIzIyOTE1OiBTQVggcGFyc2VyIG5vdyBzdXBwb3J0cyBmaWxlcyBvcGVuZWQgd2l0aCBmaWxlIGRlc2NyaXB0b3Igb3IKICAgYnl0ZXMgcGF0aC4KIAogLSBJc3N1ZSAjMjI2MDk6IENvbnN0cnVjdG9ycyBhbmQgdXBkYXRlIG1ldGhvZHMgb2YgbWFwcGluZyBjbGFzc2VzIGluIHRoZQogICBjb2xsZWN0aW9ucyBtb2R1bGUgbm93IGFjY2VwdCB0aGUgc2VsZiBrZXl3b3JkIGFyZ3VtZW50LgogCistIElzc3VlICMyMjk0MDogQWRkIHJlYWRsaW5lLmFwcGVuZF9oaXN0b3J5X2ZpbGUuCisKKy0gSXNzdWUgIzE5Njc2OiBBZGRlZCB0aGUgIm5hbWVyZXBsYWNlIiBlcnJvciBoYW5kbGVyLgorCiAtIElzc3VlICMyMjc4ODogQWRkICpjb250ZXh0KiBwYXJhbWV0ZXIgdG8gbG9nZ2luZy5oYW5kbGVycy5IVFRQSGFuZGxlci4KIAogLSBJc3N1ZSAjMjI5MjE6IEFsbG93IFNTTENvbnRleHQgdG8gdGFrZSB0aGUgKmhvc3RuYW1lKiBwYXJhbWV0ZXIgZXZlbiBpZgpAQCAtMTA0NSwxNCArMjM3MiwxOSBAQAogLSBJc3N1ZSAjMjI4OTQ6IFRlc3RDYXNlLnN1YlRlc3QoKSB3b3VsZCBjYXVzZSB0aGUgdGVzdCBzdWl0ZSB0byBiZSBzdG9wcGVkCiAgIHdoZW4gaW4gZmFpbGZhc3QgbW9kZSwgZXZlbiBpbiB0aGUgYWJzZW5jZSBvZiBmYWlsdXJlcy4KIAotLSBJc3N1ZSAjMjI2Mzg6IFNTTHYzIGlzIG5vdyBkaXNhYmxlZCB0aHJvdWdob3V0IHRoZSBzdGFuZGFyZCBsaWJyYXJ5LgotICBJdCBjYW4gc3RpbGwgYmUgZW5hYmxlZCBieSBpbnN0YW50aWF0aW5nIGEgU1NMQ29udGV4dCBtYW51YWxseS4KKy0gSXNzdWUgIzIyNzk2OiBIVFRQIGNvb2tpZSBwYXJzaW5nIGlzIG5vdyBzdHJpY3RlciwgaW4gb3JkZXIgdG8gcHJvdGVjdAorICBhZ2FpbnN0IHBvdGVudGlhbCBpbmplY3Rpb24gYXR0YWNrcy4KIAogLSBJc3N1ZSAjMjIzNzA6IFdpbmRvd3MgZGV0ZWN0aW9uIGluIHBhdGhsaWIgaXMgbm93IG1vcmUgcm9idXN0LgogCiAtIElzc3VlICMyMjg0MTogUmVqZWN0IGNvcm91dGluZXMgaW4gYXN5bmNpbyBhZGRfc2lnbmFsX2hhbmRsZXIoKS4KICAgUGF0Y2ggYnkgTHVkb3ZpYy5HYXNjLgogCistIElzc3VlICMxOTQ5NDogQWRkZWQgdXJsbGliLnJlcXVlc3QuSFRUUEJhc2ljUHJpb3JBdXRoSGFuZGxlci4gUGF0Y2ggYnkKKyAgTWF0ZWogQ2VwbC4KKworLSBJc3N1ZSAjMjI1Nzg6IEFkZGVkIGF0dHJpYnV0ZXMgdG8gdGhlIHJlLmVycm9yIGNsYXNzLgorCiAtIElzc3VlICMyMjg0OTogRml4IHBvc3NpYmxlIGRvdWJsZSBmcmVlIGluIHRoZSBpby5UZXh0SU9XcmFwcGVyIGNvbnN0cnVjdG9yLgogCiAtIElzc3VlICMxMjcyODogRGlmZmVyZW50IFVuaWNvZGUgY2hhcmFjdGVycyBoYXZpbmcgdGhlIHNhbWUgdXBwZXJjYXNlIGJ1dApAQCAtMTA2MSw2ICsyMzkzLDE0IEBACiAtIElzc3VlICMyMjgyMTogRml4ZWQgZmNudGwoKSB3aXRoIGludGVnZXIgYXJndW1lbnQgb24gNjQtYml0IGJpZy1lbmRpYW4KICAgcGxhdGZvcm1zLgogCistIElzc3VlICMyMTY1MDogQWRkIGFuIGAtLXNvcnQta2V5c2Agb3B0aW9uIHRvIGpzb24udG9vbCBDTEkuCisKKy0gSXNzdWUgIzIyODI0OiBVcGRhdGVkIHJlcHJsaWIgb3V0cHV0IGZvcm1hdCBmb3Igc2V0cyB0byB1c2Ugc2V0IGxpdGVyYWxzLgorICBQYXRjaCBjb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnLgorCistIElzc3VlICMyMjgyNDogVXBkYXRlZCByZXBybGliIG91dHB1dCBmb3JtYXQgZm9yIGFycmF5cyB0byBkaXNwbGF5IGVtcHR5CisgIGFycmF5cyB3aXRob3V0IGFuIHVubmVjZXNzYXJ5IGVtcHR5IGxpc3QuICBTdWdnZXN0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYS4KKwogLSBJc3N1ZSAjMjI0MDY6IEZpeGVkIHRoZSB1dV9jb2RlYyBjb2RlYyBpbmNvcnJlY3RseSBwb3J0ZWQgdG8gMy54LgogICBCYXNlZCBvbiBwYXRjaCBieSBNYXJ0aW4gUGFudGVyLgogCkBAIC0xMDc0LDE2ICsyNDE0LDE1IEBACiAtIElzc3VlICMyMjc3NTogRml4ZWQgdW5waWNrbGluZyBvZiBodHRwLmNvb2tpZXMuU2ltcGxlQ29va2llIHdpdGggcHJvdG9jb2wgMgogICBhbmQgYWJvdmUuICBQYXRjaCBieSBUaW0gR3JhaGFtLgogCi0tIElzc3VlICMyMjM2NjogdXJsbGliLnJlcXVlc3QudXJsb3BlbiB3aWxsIGFjY2VwdCBhIGNvbnRleHQgb2JqZWN0Ci0gIChTU0xDb250ZXh0KSBhcyBhbiBhcmd1bWVudCB3aGljaCB3aWxsIHRoZW4gdXNlZCBiZSBmb3IgSFRUUFMgY29ubmVjdGlvbi4KLSAgUGF0Y2ggYnkgQWxleCBHYXlub3IuCi0KIC0gSXNzdWUgIzIyNzc2OiBCcm91Z2h0IGV4Y2x1ZGVkIGNvZGUgaW50byB0aGUgc2NvcGUgb2YgYSB0cnkgYmxvY2sgaW4KICAgU3lzTG9nSGFuZGxlci5lbWl0KCkuCiAKIC0gSXNzdWUgIzIyNjY1OiBBZGQgbWlzc2luZyBnZXRfdGVybWluYWxfc2l6ZSBhbmQgU2FtZUZpbGVFcnJvciB0bwogICBzaHV0aWwuX19hbGxfXy4KIAorLSBJc3N1ZSAjNjYyMzogUmVtb3ZlIGRlcHJlY2F0ZWQgTmV0cmMgY2xhc3MgaW4gdGhlIGZ0cGxpYiBtb2R1bGUuIFBhdGNoIGJ5CisgIE1hdHQgQ2hhcHV0LgorCiAtIElzc3VlICMxNzM4MTogRml4ZWQgaGFuZGxpbmcgb2YgY2FzZS1pbnNlbnNpdGl2ZSByYW5nZXMgaW4gcmVndWxhcgogICBleHByZXNzaW9ucy4KIApAQCAtMTA5NywxOCArMjQzNiw1MyBAQAogICBkb2Vzbid0IHdvcmsuICBUaGlzIGFsbG93cyB1c2Ugd2l0aCBzcGVjaWFsIGZpbGVzeXN0ZW1zIHN1Y2ggYXMgVmlydHVhbEJveAogICBzaGFyZWQgZm9sZGVycy4KIAorLSBJc3N1ZSAjMjIyMTc6IEltcGxlbWVudGVkIHJlcHJzIG9mIGNsYXNzZXMgaW4gdGhlIHppcGZpbGUgbW9kdWxlLgorCistIElzc3VlICMyMjQ1NzogSG9ub3VyIGxvYWRfdGVzdHMgaW4gdGhlIHN0YXJ0X2RpciBvZiBkaXNjb3ZlcnkuCisKKy0gSXNzdWUgIzE4MjE2OiBnZXR0ZXh0IG5vdyByYWlzZXMgYW4gZXJyb3Igd2hlbiBhIC5tbyBmaWxlIGhhcyBhbgorICB1bnN1cHBvcnRlZCBtYWpvciB2ZXJzaW9uIG51bWJlci4gIFBhdGNoIGJ5IEFhcm9uIEhpbGwuCisKKy0gSXNzdWUgIzEzOTE4OiBQcm92aWRlIGEgbG9jYWxlLmRlbG9jYWxpemUoKSBmdW5jdGlvbiB3aGljaCBjYW4gcmVtb3ZlCisgIGxvY2FsZS1zcGVjaWZpYyBudW1iZXIgZm9ybWF0dGluZyBmcm9tIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhIG51bWJlciwKKyAgd2l0aG91dCB0aGVuIGNvbnZlcnRpbmcgaXQgdG8gYSBzcGVjaWZpYyB0eXBlLiAgUGF0Y2ggYnkgQ8OpZHJpYyBLcmllci4KKworLSBJc3N1ZSAjMjI2NzY6IE1ha2UgdGhlIHBpY2tsaW5nIG9mIGdsb2JhbCBvYmplY3RzIHdoaWNoIGRvbid0IGhhdmUgYQorICBfX21vZHVsZV9fIGF0dHJpYnV0ZSBsZXNzIHNsb3cuCisKIC0gSXNzdWUgIzE4ODUzOiBGaXhlZCBSZXNvdXJjZVdhcm5pbmcgaW4gc2hsZXguX19uYWluX18uCiAKIC0gSXNzdWUgIzkzNTE6IERlZmF1bHRzIHNldCB3aXRoIHNldF9kZWZhdWx0cyBvbiBhbiBhcmdwYXJzZSBzdWJwYXJzZXIKICAgYXJlIG5vIGxvbmdlciBpZ25vcmVkIHdoZW4gYWxzbyBzZXQgb24gdGhlIHBhcmVudCBwYXJzZXIuCiAKKy0gSXNzdWUgIzc1NTk6IHVuaXR0ZXN0IHRlc3QgbG9hZGluZyBJbXBvcnRFcnJvcnMgYXJlIHJlcG9ydGVkIGFzIGltcG9ydCBlcnJvcnMKKyAgd2l0aCB0aGVpciBpbXBvcnQgZXhjZXB0aW9uIHJhdGhlciB0aGFuIGFzIGF0dHJpYnV0ZSBlcnJvcnMgYWZ0ZXIgdGhlIGltcG9ydAorICBoYXMgYWxyZWFkeSBmYWlsZWQuCisKKy0gSXNzdWUgIzE5NzQ2OiBNYWtlIGl0IHBvc3NpYmxlIHRvIGV4YW1pbmUgdGhlIGVycm9ycyBmcm9tIHVuaXR0ZXN0CisgIGRpc2NvdmVyeSB3aXRob3V0IGV4ZWN1dGluZyB0aGUgdGVzdCBzdWl0ZS4gVGhlIG5ldyBgZXJyb3JzYCBhdHRyaWJ1dGUKKyAgb24gVGVzdExvYWRlciBleHBvc2VzIHRoZXNlIG5vbi1mYXRhbCBlcnJvcnMgZW5jb3VudGVyZWQgZHVyaW5nIGRpc2NvdmVyeS4KKwogLSBJc3N1ZSAjMjE5OTE6IE1ha2UgZW1haWwuaGVhZGVycmVnaXN0cnkncyBoZWFkZXIgJ3BhcmFtcycgYXR0cmlidXRlcwogICBiZSByZWFkLW9ubHkgKE1hcHBpbmdQcm94eVR5cGUpLiAgUHJldmlvdXNseSB0aGUgZGljdGlvbmFyeSB3YXMgbW9kaWZpYWJsZQogICBidXQgYSBuZXcgb25lIHdhcyBjcmVhdGVkIG9uIGVhY2ggYWNjZXNzIG9mIHRoZSBhdHRyaWJ1dGUuCiAKKy0gSXNzdWUgIzIyNjM4OiBTU0x2MyBpcyBub3cgZGlzYWJsZWQgdGhyb3VnaG91dCB0aGUgc3RhbmRhcmQgbGlicmFyeS4KKyAgSXQgY2FuIHN0aWxsIGJlIGVuYWJsZWQgYnkgaW5zdGFudGlhdGluZyBhIFNTTENvbnRleHQgbWFudWFsbHkuCisKIC0gSXNzdWUgIzIyNjQxOiBJbiBhc3luY2lvLCB0aGUgZGVmYXVsdCBTU0wgY29udGV4dCBmb3IgY2xpZW50IGNvbm5lY3Rpb25zCiAgIGlzIG5vdyBjcmVhdGVkIHVzaW5nIHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCksIGZvciBzdHJvbmdlciBzZWN1cml0eS4KIAorLSBJc3N1ZSAjMTc0MDE6IEluY2x1ZGUgY2xvc2VmZCBpbiBpby5GaWxlSU8gcmVwci4KKworLSBJc3N1ZSAjMjEzMzg6IEFkZCBzaWxlbnQgbW9kZSBmb3IgY29tcGlsZWFsbC4gcXVpZXQgcGFyYW1ldGVycyBvZgorICBjb21waWxlX3tkaXIsIGZpbGUsIHBhdGh9IGZ1bmN0aW9ucyBub3cgaGF2ZSBhIG11bHRpbGV2ZWwgdmFsdWUuIEFsc28sCisgIC1xIG9wdGlvbiBvZiB0aGUgQ0xJIG5vdyBoYXZlIGEgbXVsdGlsZXZlbCB2YWx1ZS4gUGF0Y2ggYnkgVGhvbWFzIEtsdXl2ZXIuCisKKy0gSXNzdWUgIzIwMTUyOiBDb252ZXJ0IHRoZSBhcnJheSBhbmQgY21hdGggbW9kdWxlcyB0byBBcmd1bWVudCBDbGluaWMuCisKKy0gSXNzdWUgIzE4NjQzOiBBZGQgc29ja2V0LnNvY2tldHBhaXIoKSBvbiBXaW5kb3dzLgorCiAtIElzc3VlICMyMjQzNTogRml4IGEgZmlsZSBkZXNjcmlwdG9yIGxlYWsgd2hlbiBTb2NrZXRTZXJ2ZXIgYmluZCBmYWlscy4KIAogLSBJc3N1ZSAjMTMwOTY6IEZpeGVkIHNlZ2ZhdWx0IGluIENUeXBlcyBQT0lOVEVSIGhhbmRsaW5nIG9mIGxhcmdlCkBAIC0xMTE3LDkgKzI0OTEsMTkgQEAKIC0gSXNzdWUgIzExNjk0OiBSYWlzZSBDb252ZXJzaW9uRXJyb3IgaW4geGRybGliIGFzIGRvY3VtZW50ZWQuICBQYXRjaAogICBieSBGaWxpcCBHcnVzemN6ecWEc2tpIGFuZCBDbGF1ZGl1IFBvcGEuCiAKKy0gSXNzdWUgIzE5MzgwOiBPcHRpbWl6ZWQgcGFyc2luZyBvZiByZWd1bGFyIGV4cHJlc3Npb25zLgorCistIElzc3VlICMxNTE5NjM4OiBOb3cgdW5tYXRjaGVkIGdyb3VwcyBhcmUgcmVwbGFjZWQgd2l0aCBlbXB0eSBzdHJpbmdzIGluIHJlLnN1YigpCisgIGFuZCByZS5zdWJuKCkuCisKKy0gSXNzdWUgIzE4NjE1OiBzbmRoZHIud2hhdC93aGF0aGRyIG5vdyByZXR1cm4gYSBuYW1lZHR1cGxlLgorCiAtIElzc3VlICMyMjQ2MjogRml4IHB5ZXhwYXQncyBjcmVhdGlvbiBvZiBhIGR1bW15IGZyYW1lIHRvIG1ha2UgaXQKICAgYXBwZWFyIGluIGV4Y2VwdGlvbiB0cmFjZWJhY2tzLgogCistIElzc3VlICMyMTk2NTogQWRkIHN1cHBvcnQgZm9yIGluLW1lbW9yeSBTU0wgdG8gdGhlIHNzbCBtb2R1bGUuICBQYXRjaAorICBieSBHZWVydCBKYW5zZW4uCisKIC0gSXNzdWUgIzIxMTczOiBGaXggbGVuKCkgb24gYSBXZWFrS2V5RGljdGlvbmFyeSB3aGVuIC5jbGVhcigpIHdhcyBjYWxsZWQKICAgd2l0aCBhbiBpdGVyYXRvciBhbGl2ZS4KIApAQCAtMTEyOSwxNDkgKzI1MTMsMzggQEAKIC0gSXNzdWUgIzIxOTA1OiBBdm9pZCBSdW50aW1lRXJyb3IgaW4gcGlja2xlLndoaWNobW9kdWxlKCkgd2hlbiBzeXMubW9kdWxlcwogICBpcyBtdXRhdGVkIHdoaWxlIGl0ZXJhdGluZy4gIFBhdGNoIGJ5IE9saXZpZXIgR3Jpc2VsLgogCistIElzc3VlICMxMTI3MTogY29uY3VycmVudC5mdXR1cmVzLkV4ZWN1dG9yLm1hcCgpIG5vdyB0YWtlcyBhICpjaHVua3NpemUqCisgIGFyZ3VtZW50IHRvIGFsbG93IGJhdGNoaW5nIG9mIHRhc2tzIGluIGNoaWxkIHByb2Nlc3NlcyBhbmQgaW1wcm92ZQorICBwZXJmb3JtYW5jZSBvZiBQcm9jZXNzUG9vbEV4ZWN1dG9yLiAgUGF0Y2ggYnkgRGFuIE8nUmVpbGx5LgorCistIElzc3VlICMyMTg4Mzogb3MucGF0aC5qb2luKCkgYW5kIG9zLnBhdGgucmVscGF0aCgpIG5vdyByYWlzZSBhIFR5cGVFcnJvciB3aXRoCisgIG1vcmUgaGVscGZ1bCBlcnJvciBtZXNzYWdlIGZvciB1bnN1cHBvcnRlZCBvciBtaXNtYXRjaGVkIHR5cGVzIG9mIGFyZ3VtZW50cy4KKwogLSBJc3N1ZSAjMjIyMTk6IFRoZSB6aXBmaWxlIG1vZHVsZSBDTEkgbm93IGFkZHMgZW50cmllcyBmb3IgZGlyZWN0b3JpZXMKICAgKGluY2x1ZGluZyBlbXB0eSBkaXJlY3RvcmllcykgaW4gWklQIGZpbGUuCiAKIC0gSXNzdWUgIzIyNDQ5OiBJbiB0aGUgc3NsLlNTTENvbnRleHQubG9hZF9kZWZhdWx0X2NlcnRzLCBjb25zdWx0IHRoZQogICBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcyBTU0xfQ0VSVF9ESVIgYW5kIFNTTF9DRVJUX0ZJTEUgb24gV2luZG93cy4KIAorLSBJc3N1ZSAjMjI1MDg6IFRoZSBlbWFpbC5fX3ZlcnNpb25fXyB2YXJpYWJsZSBoYXMgYmVlbiByZW1vdmVkOyB0aGUgZW1haWwKKyAgY29kZSBpcyBubyBsb25nZXIgc2hpcHBlZCBzZXBhcmF0ZWx5IGZyb20gdGhlIHN0ZGxpYiwgYW5kIF9fdmVyc2lvbl9fCisgIGhhc24ndCBiZWVuIHVwZGF0ZWQgaW4gc2V2ZXJhbCByZWxlYXNlcy4KKwogLSBJc3N1ZSAjMjAwNzY6IEFkZGVkIG5vbiBkZXJpdmVkIFVURi04IGFsaWFzZXMgdG8gbG9jYWxlIGFsaWFzZXMgdGFibGUuCiAKIC0gSXNzdWUgIzIwMDc5OiBBZGRlZCBsb2NhbGVzIHN1cHBvcnRlZCBpbiBnbGliYyAyLjE4IHRvIGxvY2FsZSBhbGlhcyB0YWJsZS4KIAotLSBJc3N1ZSAjMjIzOTY6IE9uIDMyLWJpdCBBSVggcGxhdGZvcm0sIGRvbid0IGV4cG9zZSBvcy5wb3NpeF9mYWR2aXNlKCkgbm9yCi0gIG9zLnBvc2l4X2ZhbGxvY2F0ZSgpIGJlY2F1c2UgdGhlaXIgcHJvdG90eXBlcyBpbiBzeXN0ZW0gaGVhZGVycyBhcmUgd3JvbmcuCistIElzc3VlICMyMDIxODogQWRkZWQgY29udmVuaWVuY2UgbWV0aG9kcyByZWFkX3RleHQvd3JpdGVfdGV4dCBhbmQgcmVhZF9ieXRlcy8KKyAgd3JpdGVfYnl0ZXMgdG8gcGF0aGxpYi5QYXRoIG9iamVjdHMuCiAKLS0gSXNzdWUgIzIyNTE3OiBXaGVuIGEgaW8uQnVmZmVyZWRSV1BhaXIgb2JqZWN0IGlzIGRlYWxsb2NhdGVkLCBjbGVhciBpdHMKLSAgd2Vha3JlZnMuCistIElzc3VlICMyMjQzNzogTnVtYmVyIG9mIGNhcHR1cmluZyBncm91cHMgaW4gcmVndWxhciBleHByZXNzaW9uIGlzIG5vIGxvbmdlcgorICBsaW1pdGVkIGJ5IDEwMC4KIAotLSBJc3N1ZSAjMjI0NDg6IEltcHJvdmUgY2FuY2VsZWQgdGltZXIgaGFuZGxlcyBjbGVhbnVwIHRvIHByZXZlbnQKLSAgdW5ib3VuZCBtZW1vcnkgdXNhZ2UuIFBhdGNoIGJ5IEpvc2h1YSBNb29yZS1PbGl2YS4KLQotLSBJc3N1ZSAjMjMwMDk6IE1ha2Ugc3VyZSBzZWxlY3RvcnMuRXBvbGxTZWxlY3J0b3Iuc2VsZWN0KCkgd29ya3Mgd2hlbiBubwotICBGRCBpcyByZWdpc3RlcmVkLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzIwNTc3OiBDb25maWd1cmF0aW9uIG9mIHRoZSBtYXggbGluZSBsZW5ndGggZm9yIHRoZSBGb3JtYXRQYXJhZ3JhcGgKLSAgZXh0ZW5zaW9uIGhhcyBiZWVuIG1vdmVkIGZyb20gdGhlIEdlbmVyYWwgdGFiIG9mIHRoZSBJZGxlIHByZWZlcmVuY2VzIGRpYWxvZwotICB0byB0aGUgRm9ybWF0UGFyYWdyYXBoIHRhYiBvZiB0aGUgQ29uZmlnIEV4dGVuc2lvbnMgZGlhbG9nLgotICBQYXRjaCBieSBUYWwgRWluYXQuCi0KLS0gSXNzdWUgIzE2ODkzOiBVcGRhdGUgSWRsZSBkb2MgY2hhcHRlciB0byBtYXRjaCBjdXJyZW50IElkbGUgYW5kIGFkZCBuZXcKLSAgaW5mb3JtYXRpb24uCi0KLS0gSXNzdWUgIzMwNjg6IEFkZCBJZGxlIGV4dGVuc2lvbiBjb25maWd1cmF0aW9uIGRpYWxvZyB0byBPcHRpb25zIG1lbnUuCi0gIENoYW5nZXMgYXJlIHdyaXR0ZW4gdG8gSE9NRS8uaWRsZXJjL2NvbmZpZy1leHRlbnNpb25zLmNmZy4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgVGFsIEVpbmF0LgotCi0tIElzc3VlICMxNjIzMzogQSBtb2R1bGUgYnJvd3NlciAoRmlsZSA6IENsYXNzIEJyb3dzZXIsIEFsdCtDKSByZXF1aXJlcyBhbgotICBlZGl0b3Igd2luZG93IHdpdGggYSBmaWxlbmFtZS4gIFdoZW4gQ2xhc3MgQnJvd3NlciBpcyByZXF1ZXN0ZWQgb3RoZXJ3aXNlLAotICBmcm9tIGEgc2hlbGwsIG91dHB1dCB3aW5kb3csIG9yICdVbnRpdGxlZCcgZWRpdG9yLCBJZGxlIG5vIGxvbmdlciBkaXNwbGF5cwotICBhbiBlcnJvciBib3guICBJdCBub3cgcG9wcyB1cCBhbiBPcGVuIE1vZHVsZSBib3ggKEFsdCtNKS4gSWYgYSB2YWxpZCBuYW1lCi0gIGlzIGVudGVyZWQgYW5kIGEgbW9kdWxlIGlzIG9wZW5lZCwgYSBjb3JyZXNwb25kaW5nIGJyb3dzZXIgaXMgYWxzbyBvcGVuZWQuCi0KLS0gSXNzdWUgIzQ4MzI6IFNhdmUgQXMgdG8gdHlwZSBQeXRob24gZmlsZXMgYXV0b21hdGljYWxseSBhZGRzIC5weSB0byB0aGUKLSAgbmFtZSB5b3UgZW50ZXIgKGV2ZW4gaWYgeW91ciBzeXN0ZW0gZG9lcyBub3QgZGlzcGxheSBpdCkuICBTb21lIHN5c3RlbXMKLSAgYXV0b21hdGljYWxseSBhZGQgLnR4dCB3aGVuIHR5cGUgaXMgVGV4dCBmaWxlcy4KLQotLSBJc3N1ZSAjMjE5ODY6IENvZGUgb2JqZWN0cyBhcmUgbm90IG5vcm1hbGx5IHBpY2tsZWQgYnkgdGhlIHBpY2tsZSBtb2R1bGUuCi0gIFRvIG1hdGNoIHRoaXMsIHRoZXkgYXJlIG5vIGxvbmdlciBwaWNrbGVkIHdoZW4gcnVubmluZyB1bmRlciBJZGxlLgotCi0tIElzc3VlICMyMzE4MDogUmVuYW1lIElETEUgIldpbmRvd3MiIG1lbnUgaXRlbSB0byAiV2luZG93Ii4KLSAgUGF0Y2ggYnkgQWwgU3dlaWdhcnQuCi0KLVRlc3RzCi0tLS0tLQorLSBJc3N1ZSAjMTc0NDI6IEludGVyYWN0aXZlSW50ZXJwcmV0ZXIgbm93IGRpc3BsYXlzIHRoZSBmdWxsIGNoYWluZWQgdHJhY2ViYWNrCisgIGluIGl0cyBzaG93dHJhY2ViYWNrIG1ldGhvZCwgdG8gbWF0Y2ggdGhlIGJ1aWx0IGluIGludGVyYWN0aXZlIGludGVycHJldGVyLgogCiAtIElzc3VlICMyMzM5MjogQWRkZWQgdGVzdHMgZm9yIG1hcnNoYWwgQyBBUEkgdGhhdCB3b3JrcyB3aXRoIEZJTEUqLgogCi0tIElzc3VlICMxODk4MjogQWRkIHRlc3RzIGZvciBDTEkgb2YgdGhlIGNhbGVuZGFyIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTk1NDg6IEFkZGVkIHNvbWUgYWRkaXRpb25hbCBjaGVja3MgdG8gdGVzdF9jb2RlY3MgdG8gZW5zdXJlIHRoYXQKLSAgc3RhdGVtZW50cyBpbiB0aGUgdXBkYXRlZCBkb2N1bWVudGF0aW9uIHJlbWFpbiBhY2N1cmF0ZS4gUGF0Y2ggYnkgTWFydGluCi0gIFBhbnRlci4KLQotLSBJc3N1ZSAjMjI4Mzg6IEFsbCB0ZXN0X3JlIHRlc3RzIG5vdyB3b3JrIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCi0KLS0gSXNzdWUgIzIyMTczOiBVcGRhdGUgbGliMnRvMyB0ZXN0cyB0byB1c2UgdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCi0KLS0gSXNzdWUgIzE2MDAwOiBDb252ZXJ0IHRlc3RfY3Vyc2VzIHRvIHVzZSB1bml0dGVzdC4KLQotLSBJc3N1ZSAjMjE0NTY6IFNraXAgdHdvIHRlc3RzIGluIHRlc3RfdXJsbGliMm5ldC5weSBpZiBfc3NsIG1vZHVsZSBub3QKLSAgcHJlc2VudC4gUGF0Y2ggYnkgUmVtaSBQb2ludGVsLgotCi0tIElzc3VlICMyMjc3MDogUHJldmVudCBzb21lIFRrIHNlZ2ZhdWx0cyBvbiBPUyBYIHdoZW4gcnVubmluZyBndWkgdGVzdHMuCi0KLS0gSXNzdWUgIzIzMjExOiBXb3JrYXJvdW5kIHRlc3RfbG9nZ2luZyBmYWlsdXJlIG9uIHNvbWUgT1MgWCAxMC42IHN5c3RlbXMuCi0KLS0gSXNzdWUgIzIzMzQ1OiBQcmV2ZW50IHRlc3Rfc3NsIGZhaWx1cmVzIHdpdGggbGFyZ2UgT3BlblNTTCBwYXRjaCBsZXZlbAotICB2YWx1ZXMgKGxpa2UgMC45Ljh6YykuCi0KLS0gSXNzdWUgIzIyMjg5OiBQcmV2ZW50IHRlc3RfdXJsbGliMm5ldCBmYWlsdXJlcyBkdWUgdG8gZnRwIGNvbm5lY3Rpb24gdGltZW91dC4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzE1NTA2OiBVc2Ugc3RhbmRhcmQgUEtHX1BST0dfUEtHX0NPTkZJRyBhdXRvY29uZiBtYWNybyBpbiB0aGUgY29uZmlndXJlCi0gIHNjcmlwdC4KLQotLSBJc3N1ZSAjMjI5MzU6IEFsbG93IHRoZSBzc2wgbW9kdWxlIHRvIGJlIGNvbXBpbGVkIGlmIG9wZW5zc2wgZG9lc24ndCBzdXBwb3J0Ci0gIFNTTCAzLgotCi0tIElzc3VlICMxNjUzNzogQ2hlY2sgd2hldGhlciBzZWxmLmV4dGVuc2lvbnMgaXMgZW1wdHkgaW4gc2V0dXAucHkuIFBhdGNoIGJ5Ci0gIEpvbmF0aGFuIEhvc21lci4KLQotLSBJc3N1ZSAjMTgwOTY6IEZpeCBsaWJyYXJ5IG9yZGVyIHJldHVybmVkIGJ5IHB5dGhvbi1jb25maWcuCi0KLS0gSXNzdWUgIzE3MjE5OiBBZGQgbGlicmFyeSBidWlsZCBkaXIgZm9yIFB5dGhvbiBleHRlbnNpb24gY3Jvc3MtYnVpbGRzLgotCi0tIElzc3VlICMxNzEyODogVXNlIHByaXZhdGUgdmVyc2lvbiBvZiBPcGVuU1NMIGZvciAzLjQuMyBPUyBYIDEwLjUrIGluc3RhbGxlci4KLQotQyBBUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzIyMDc5OiBQeVR5cGVfUmVhZHkoKSBub3cgY2hlY2tzIHRoYXQgc3RhdGljYWxseSBhbGxvY2F0ZWQgdHlwZSBoYXMKLSAgbm8gZHluYW1pY2FsbHkgYWxsb2NhdGVkIGJhc2VzLgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE5NTQ4OiBVcGRhdGUgdGhlIGNvZGVjcyBtb2R1bGUgZG9jdW1lbnRhdGlvbiB0byBiZXR0ZXIgY292ZXIgdGhlCi0gIGRpc3RpbmN0aW9uIGJldHdlZW4gdGV4dCBlbmNvZGluZ3MgYW5kIG90aGVyIGNvZGVjcywgdG9nZXRoZXIgd2l0aCBvdGhlcgotICBjbGFyaWZpY2F0aW9ucy4gUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KLQotLSBJc3N1ZSAjMjI5MTQ6IFVwZGF0ZSB0aGUgUHl0aG9uIDIvMyBwb3J0aW5nIEhPV1RPIHRvIGRlc2NyaWJlIGEgbW9yZSBhdXRvbWF0ZWQKLSAgYXBwcm9hY2guCi0KLS0gSXNzdWUgIzIxNTE0OiBUaGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUganNvbiBtb2R1bGUgbm93IHJlZmVycyB0byBuZXcgSlNPTiBSRkMKLSAgNzE1OSBpbnN0ZWFkIG9mIG9ic29sZXRlZCBSRkMgNDYyNy4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzIyMzE0OiBweWRvYyBub3cgd29ya3Mgd2hlbiB0aGUgTElORVMgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0LgotCi1XaW5kb3dzCi0tLS0tLS0tCi0KLS0gSXNzdWUgIzE3ODk2OiBUaGUgV2luZG93cyBidWlsZCBzY3JpcHRzIG5vdyBleHBlY3QgZXh0ZXJuYWwgbGlicmFyeSBzb3VyY2VzCi0gIHRvIGJlIGluIGBgUENidWlsZFwuLlxleHRlcm5hbHNgYCByYXRoZXIgdGhhbiBgYFBDYnVpbGRcLi5cLi5gYC4KLQotLSBJc3N1ZSAjMTc3MTc6IFRoZSBXaW5kb3dzIGJ1aWxkIHNjcmlwdHMgbm93IHVzZSBhIGNvcHkgb2YgTkFTTSBwdWxsZWQgZnJvbQotICBzdm4ucHl0aG9uLm9yZyB0byBidWlsZCBPcGVuU1NMLgotCi0tIElzc3VlICMyMjY0NDogVGhlIGJ1bmRsZWQgdmVyc2lvbiBvZiBPcGVuU1NMIGhhcyBiZWVuIHVwZGF0ZWQgdG8gMS4wLjFqLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNC4yPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVJlbGVhc2UgZGF0ZTogMjAxNC0xMC0wNgotCi1MaWJyYXJ5Ci0tLS0tLS0tCiAKIC0gSXNzdWUgIzEwNTEwOiBkaXN0dXRpbHMgcmVnaXN0ZXIgYW5kIHVwbG9hZCBtZXRob2RzIG5vdyB1c2UgSFRNTCBzdGFuZGFyZHMKICAgY29tcGxpYW50IENSTEYgbGluZSBlbmRpbmdzLgpAQCAtMTI3OSwxNSArMjU1MiwyNyBAQAogLSBJc3N1ZSAjOTg1MDogRml4ZWQgbWFjcGF0aC5qb2luKCkgZm9yIGVtcHR5IGZpcnN0IGNvbXBvbmVudC4gIFBhdGNoIGJ5CiAgIE9sZWcgT3NobXlhbi4KIAorLSBJc3N1ZSAjNTMwOTogZGlzdHV0aWxzJyBidWlsZCBhbmQgYnVpbGRfZXh0IGNvbW1hbmRzIG5vdyBhY2NlcHQgYSBgYC1qYGAKKyAgb3B0aW9uIHRvIGVuYWJsZSBwYXJhbGxlbCBidWlsZGluZyBvZiBleHRlbnNpb24gbW9kdWxlcy4KKworLSBJc3N1ZSAjMjI0NDg6IEltcHJvdmUgY2FuY2VsZWQgdGltZXIgaGFuZGxlcyBjbGVhbnVwIHRvIHByZXZlbnQKKyAgdW5ib3VuZCBtZW1vcnkgdXNhZ2UuIFBhdGNoIGJ5IEpvc2h1YSBNb29yZS1PbGl2YS4KKwogLSBJc3N1ZSAjMjI0Mjc6IFRlbXBvcmFyeURpcmVjdG9yeSBubyBsb25nZXIgYXR0ZW1wdHMgdG8gY2xlYW4gdXAgdHdpY2Ugd2hlbgogICB1c2VkIGluIHRoZSB3aXRoIHN0YXRlbWVudCBpbiBnZW5lcmF0b3IuCiAKKy0gSXNzdWUgIzIyMzYyOiBGb3JiaWRkZW4gYW1iaWd1b3VzIG9jdGFsIGVzY2FwZXMgb3V0IG9mIHJhbmdlIDAtMG8zNzcgaW4KKyAgcmVndWxhciBleHByZXNzaW9ucy4KKwogLSBJc3N1ZSAjMjA5MTI6IE5vdyBkaXJlY3RvcmllcyBhZGRlZCB0byBaSVAgZmlsZSBoYXZlIGNvcnJlY3QgVW5peCBhbmQgTVMtRE9TCiAgIGRpcmVjdG9yeSBhdHRyaWJ1dGVzLgogCiAtIElzc3VlICMyMTg2NjogWmlwRmlsZS5jbG9zZSgpIG5vIGxvbmdlciB3cml0ZXMgWklQNjQgY2VudHJhbCBkaXJlY3RvcnkKICAgcmVjb3JkcyBpZiBhbGxvd1ppcDY0IGlzIGZhbHNlLgogCistIElzc3VlICMyMjI3ODogRml4IHVybGpvaW4gcHJvYmxlbSB3aXRoIHJlbGF0aXZlIHVybHMsIGEgcmVncmVzc2lvbiBvYnNlcnZlZAorICBhZnRlciBjaGFuZ2VzIHRvIGlzc3VlMjIxMTggd2VyZSBzdWJtaXR0ZWQuCisKIC0gSXNzdWUgIzIyNDE1OiBGaXhlZCBkZWJ1Z2dpbmcgb3V0cHV0IG9mIHRoZSBHUk9VUFJFRl9FWElTVFMgb3Bjb2RlIGluIHRoZSByZQogICBtb2R1bGUuICBSZW1vdmVkIHRyYWlsaW5nIHNwYWNlcyBpbiBkZWJ1Z2dpbmcgb3V0cHV0LgogCkBAIC0xMjk3LDQ3ICsyNTgyLDE4IEBACiAtIElzc3VlICMyMTMzMjogRW5zdXJlIHRoYXQgYGBidWZzaXplPTFgYCBpbiBzdWJwcm9jZXNzLlBvcGVuKCkgc2VsZWN0cwogICBsaW5lIGJ1ZmZlcmluZywgcmF0aGVyIHRoYW4gYmxvY2sgYnVmZmVyaW5nLiAgUGF0Y2ggYnkgQWtpcmEgTGkuCiAKLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy40LjJyYzE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotUmVsZWFzZSBkYXRlOiAyMDE0LTA5LTIyCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMjI1ODogRml4IHRoZSB0aGUgaW50ZXJuYWwgZnVuY3Rpb24gc2V0X2luaGVyaXRhYmxlKCkgb24gSWxsdW1vcy4KLSAgVGhpcyBwbGF0Zm9ybSBleHBvc2VzIHRoZSBmdW5jdGlvbiBgYGlvY3RsKEZJT0NMRVgpYGAsIGJ1dCBjYWxsaW5nIGl0IGZhaWxzCi0gIHdpdGggZXJybm8gaXMgRU5PVFRZOiAiSW5hcHByb3ByaWF0ZSBpb2N0bCBmb3IgZGV2aWNlIi4gc2V0X2luaGVyaXRhYmxlKCkKLSAgbm93IGZhbGxzIGJhY2sgdG8gdGhlIHNsb3dlciBgYGZjbnRsKClgYCAoYGBGX0dFVEZEYGAgYW5kIHRoZW4gYGBGX1NFVEZEYGApLgotCi0tIElzc3VlICMyMTY2OTogV2l0aCB0aGUgYWlkIG9mIGhldXJpc3RpY3MgaW4gU3ludGF4RXJyb3IuX19pbml0X18sIHRoZQotICBwYXJzZXIgbm93IGF0dGVtcHRzIHRvIGdlbmVyYXRlIG1vcmUgbWVhbmluZ2Z1bCAob3IgYXQgbGVhc3QgbW9yZSBzZWFyY2gKLSAgZW5naW5lIGZyaWVuZGx5KSBlcnJvciBtZXNzYWdlcyB3aGVuICJleGVjIiBhbmQgInByaW50IiBhcmUgdXNlZCBhcwotICBzdGF0ZW1lbnRzLgotCi0tIElzc3VlICMyMTY0MjogSW4gdGhlIGNvbmRpdGlvbmFsIGlmLWVsc2UgZXhwcmVzc2lvbiwgYWxsb3cgYW4gaW50ZWdlciB3cml0dGVuCi0gIHdpdGggbm8gc3BhY2UgYmV0d2VlbiBpdHNlbGYgYW5kIHRoZSBgYGVsc2VgYCBrZXl3b3JkIChlLmcuIGBgVHJ1ZSBpZiA0MmVsc2UKLSAgRmFsc2VgYCkgdG8gYmUgdmFsaWQgc3ludGF4LgotCi0tIElzc3VlICMyMTUyMzogRml4IG92ZXItcGVzc2ltaXN0aWMgY29tcHV0YXRpb24gb2YgdGhlIHN0YWNrIGVmZmVjdCBvZgotICBzb21lIG9wY29kZXMgaW4gdGhlIGNvbXBpbGVyLiAgVGhpcyBhbHNvIGZpeGVzIGEgcXVhZHJhdGljIGNvbXBpbGF0aW9uCi0gIHRpbWUgaXNzdWUgbm90aWNlYWJsZSB3aGVuIGNvbXBpbGluZyBjb2RlIHdpdGggYSBsYXJnZSBudW1iZXIgb2YgImFuZCIKLSAgYW5kICJvciIgb3BlcmF0b3JzLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KIC0gSXNzdWUgIzIxMDkxOiBGaXggQVBJIGJ1ZzogZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXNfYXR0YWNobWVudCBpcyBub3cKLSAgYSBtZXRob2QuICBTaW5jZSBFbWFpbE1lc3NhZ2UgaXMgcHJvdmlzaW9uYWwsIHdlIGNhbiBjaGFuZ2UgdGhlIEFQSSBpbiBhCi0gIG1haW50ZW5hbmNlIHJlbGVhc2UsIGJ1dCB3ZSB1c2UgYSB0cmljayB0byByZW1haW4gYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoCi0gIDMuNC4wLzEuCisgIGEgbWV0aG9kLgogCiAtIElzc3VlICMyMTA3OTogRml4IGVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmlzX2F0dGFjaG1lbnQgdG8gcmV0dXJuIHRoZQogICBjb3JyZWN0IHJlc3VsdCB3aGVuIHRoZSBoZWFkZXIgaGFzIHBhcmFtZXRlcnMgYXMgd2VsbCBhcyBhIHZhbHVlLgogCiAtIElzc3VlICMyMjI0NzogQWRkIE5OVFBFcnJvciB0byBubnRwbGliLl9fYWxsX18uCiAKKy0gSXNzdWUgIzIyMzY2OiB1cmxsaWIucmVxdWVzdC51cmxvcGVuIHdpbGwgYWNjZXB0IGEgY29udGV4dCBvYmplY3QKKyAgKFNTTENvbnRleHQpIGFzIGFuIGFyZ3VtZW50IHdoaWNoIHdpbGwgdGhlbiB1c2VkIGJlIGZvciBIVFRQUyBjb25uZWN0aW9uLgorICBQYXRjaCBieSBBbGV4IEdheW5vci4KKwogLSBJc3N1ZSAjNDE4MDogVGhlIHdhcm5pbmdzIHJlZ2lzdHJpZXMgYXJlIG5vdyByZXNldCB3aGVuIHRoZSBmaWx0ZXJzCiAgIGFyZSBtb2RpZmllZC4KIApAQCAtMTM0OSw2ICsyNjA1LDkgQEAKICAgd2l0aCBub24tc3RhbmRhcmQgY29va2llIGhhbmRsaW5nIGluIHNvbWUgV2ViIGJyb3dzZXJzLiAgUmVwb3J0ZWQgYnkKICAgU2VyZ2V5IEJvYnJvdi4KIAorLSBJc3N1ZSAjMjA1Mzc6IGxvZ2dpbmcgbWV0aG9kcyBub3cgYWNjZXB0IGFuIGV4Y2VwdGlvbiBpbnN0YW5jZSBhcyB3ZWxsIGFzIGEKKyAgQm9vbGVhbiB2YWx1ZSBvciBleGNlcHRpb24gdHVwbGUuIFRoYW5rcyB0byBZdXJ5IFNlbGl2YW5vdiBmb3IgdGhlIHBhdGNoLgorCiAtIElzc3VlICMyMjM4NDogQW4gZXhjZXB0aW9uIGluIFRraW50ZXIgY2FsbGJhY2sgbm8gbG9uZ2VyIGNyYXNoZXMgdGhlIHByb2dyYW0KICAgd2hlbiBpdCBpcyBydW4gd2l0aCBweXRob253LmV4ZS4KIApAQCAtMTM1Nyw2ICsyNjE2LDkgQEAKIC0gSXNzdWUgIzIxMTQ3OiBzcWxpdGUzIG5vdyByYWlzZXMgYW4gZXhjZXB0aW9uIGlmIHRoZSByZXF1ZXN0IGNvbnRhaW5zIGEgbnVsbAogICBjaGFyYWN0ZXIgaW5zdGVhZCBvZiB0cnVuY2F0ZSBpdC4gIEJhc2VkIG9uIHBhdGNoIGJ5IFZpY3RvciBTdGlubmVyLgogCistIElzc3VlICMxMzk2ODogVGhlIGdsb2IgbW9kdWxlIG5vdyBzdXBwb3J0cyByZWN1cnNpdmUgc2VhcmNoIGluCisgIHN1YmRpcmVjdG9yaWVzIHVzaW5nIHRoZSAiKioiIHBhdHRlcm4uCisKIC0gSXNzdWUgIzIxOTUxOiBGaXhlZCBhIGNyYXNoIGluIFRraW50ZXIgb24gQUlYIHdoZW4gY2FsbGVkIFRjbCBjb21tYW5kIHdpdGgKICAgZW1wdHkgc3RyaW5nIG9yIHR1cGxlIGFyZ3VtZW50LgogCkBAIC0xMzY1LDEyICsyNjI3LDMxIEBACiAKIC0gSXNzdWUgIzIyMzM4OiBGaXggYSBjcmFzaCBpbiB0aGUganNvbiBtb2R1bGUgb24gbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZS4KIAorLSBJc3N1ZSAjMTI0MTA6IGltYXBsaWIuSU1BUDQgbm93IHN1cHBvcnRzIHRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IFRhcmVrIFppYWTDqS4KKworLSBJc3N1ZSAjMjEyNzA6IFdlIG5vdyBvdmVycmlkZSB0dXBsZSBtZXRob2RzIGluIG1vY2suY2FsbCBvYmplY3RzIHNvIHRoYXQKKyAgdGhleSBjYW4gYmUgdXNlZCBhcyBub3JtYWwgY2FsbCBhdHRyaWJ1dGVzLgorCistIElzc3VlICMxNjY2MjogbG9hZF90ZXN0cygpIGlzIG5vdyB1bmNvbmRpdGlvbmFsbHkgcnVuIHdoZW4gaXQgaXMgcHJlc2VudCBpbgorICBhIHBhY2thZ2UncyBfX2luaXRfXy5weS4gIFRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSgpIHN0aWxsIGFjY2VwdHMKKyAgdXNlX2xvYWRfdGVzdHMsIGJ1dCBpdCBpcyBkZXByZWNhdGVkIGFuZCBpZ25vcmVkLiAgQSBuZXcga2V5d29yZC1vbmx5CisgIGF0dHJpYnV0ZSBgcGF0dGVybmAgaXMgYWRkZWQgYW5kIGRvY3VtZW50ZWQuICBQYXRjaCBnaXZlbiBieSBSb2JlcnQgQ29sbGlucywKKyAgdHdlYWtlZCBieSBCYXJyeSBXYXJzYXcuCisKIC0gSXNzdWUgIzIyMjI2OiBGaXJzdCBsZXR0ZXIgbm8gbG9uZ2VyIGlzIHN0cmlwcGVkIGZyb20gdGhlICJzdGF0dXMiIGtleSBpbgogICB0aGUgcmVzdWx0IG9mIFRyZWV2aWV3LmhlYWRpbmcoKS4KIAogLSBJc3N1ZSAjMTk1MjQ6IEZpeGVkIHJlc291cmNlIGxlYWsgaW4gdGhlIEhUVFAgY29ubmVjdGlvbiB3aGVuIGFuIGludmFsaWQKICAgcmVzcG9uc2UgaXMgcmVjZWl2ZWQuICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgogCistIElzc3VlICMyMDQyMTogQWRkIGEgLnZlcnNpb24oKSBtZXRob2QgdG8gU1NMIHNvY2tldHMgZXhwb3NpbmcgdGhlIGFjdHVhbAorICBwcm90b2NvbCB2ZXJzaW9uIGluIHVzZS4KKworLSBJc3N1ZSAjMTk1NDY6IGNvbmZpZ3BhcnNlciBleGNlcHRpb25zIG5vIGxvbmdlciBleHBvc2UgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KKyAgQ2hhaW5lZCBLZXlFcnJvcnMgYXJlIHJlbW92ZWQsIHdoaWNoIGxlYWRzIHRvIGNsZWFuZXIgdHJhY2ViYWNrcy4gIFBhdGNoIGJ5CisgIENsYXVkaXUgUG9wYS4KKwogLSBJc3N1ZSAjMjIwNTE6IHR1cnRsZWRlbW8gbm8gbG9uZ2VyIHJlbG9hZHMgZXhhbXBsZXMgdG8gcmUtcnVuIHRoZW0uCiAgIEluaXRpYWxpemF0aW9uIG9mIHZhcmlhYmxlcyBhbmQgZ3VpIHNldHVwIHNob3VsZCBiZSBkb25lIGluIG1haW4oKSwKICAgd2hpY2ggaXMgY2FsbGVkIGVhY2ggdGltZSBhIGRlbW8gaXMgcnVuLCBidXQgbm90IG9uIGltcG9ydC4KQEAgLTEzODcsMjMgKzI2NjgsNTcgQEAKIC0gSXNzdWUgIzE4MTMyOiBUdXJ0bGVkZW1vIGJ1dHRvbnMgbm8gbG9uZ2VyIGRpc2FwcGVhciB3aGVuIHRoZSB3aW5kb3cgaXMKICAgc2hydW5rLiAgT3JpZ2luYWwgcGF0Y2hlcyBieSBKYW4gS2FuaXMgYW5kIExpdGEgQ2hvLgogCistIElzc3VlICMyMjA0MzogdGltZS5tb25vdG9uaWMoKSBpcyBub3cgYWx3YXlzIGF2YWlsYWJsZS4KKyAgYGB0aHJlYWRpbmcuTG9jay5hY3F1aXJlKClgYCwgYGB0aHJlYWRpbmcuUkxvY2suYWNxdWlyZSgpYGAgYW5kIHNvY2tldAorICBvcGVyYXRpb25zIG5vdyB1c2UgYSBtb25vdG9uaWMgY2xvY2ssIGluc3RlYWQgb2YgdGhlIHN5c3RlbSBjbG9jaywgd2hlbiBhCisgIHRpbWVvdXQgaXMgdXNlZC4KKworLSBJc3N1ZSAjMjE1Mjc6IEFkZCBhIGRlZmF1bHQgbnVtYmVyIG9mIHdvcmtlcnMgdG8gVGhyZWFkUG9vbEV4ZWN1dG9yIGVxdWFsCisgIHRvIDUgdGltZXMgdGhlIG51bWJlciBvZiBDUFVzLiAgUGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgorCiAtIElzc3VlICMyMjIxNjogc210cGxpYiBub3cgcmVzZXRzIGl0cyBzdGF0ZSBtb3JlIGNvbXBsZXRlbHkgYWZ0ZXIgYSBxdWl0LiAgVGhlCiAgIG1vc3Qgb2J2aW91cyBjb25zZXF1ZW5jZSBvZiB0aGUgcHJldmlvdXMgYmVoYXZpb3Igd2FzIGEgU1RBUlRUTFMgZmFpbHVyZQogICBkdXJpbmcgYSBjb25uZWN0L3N0YXJ0dGxzL3F1aXQvY29ubmVjdC9zdGFydHRscyBzZXF1ZW5jZS4KIAorLSBJc3N1ZSAjMjIwOTg6IGN0eXBlcycgQmlnRW5kaWFuU3RydWN0dXJlIGFuZCBMaXR0bGVFbmRpYW5TdHJ1Y3R1cmUgbm93CisgIGRlZmluZSBhbiBlbXB0eSBfX3Nsb3RzX18gc28gdGhhdCBzdWJjbGFzc2VzIGRvbid0IGFsd2F5cyBnZXQgYW4gaW5zdGFuY2UKKyAgZGljdC4gIFBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KKwogLSBJc3N1ZSAjMjIxODU6IEZpeCBhbiBvY2Nhc2lvbmFsIFJ1bnRpbWVFcnJvciBpbiB0aHJlYWRpbmcuQ29uZGl0aW9uLndhaXQoKQogICBjYXVzZWQgYnkgbXV0YXRpb24gb2YgdGhlIHdhaXRlcnMgcXVldWUgd2l0aG91dCBob2xkaW5nIHRoZSBsb2NrLiAgUGF0Y2gKICAgYnkgRG91ZyBab25na2VyLgogCistIElzc3VlICMyMjI4NzogT24gVU5JWCwgX1B5VGltZV9nZXR0aW1lb2ZkYXkoKSBub3cgdXNlcworICBjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FKSBpZiBhdmFpbGFibGUuIEFzIGEgc2lkZSBlZmZlY3QsIFB5dGhvbiBub3cKKyAgZGVwZW5kcyBvbiB0aGUgbGlicnQgbGlicmFyeSBvbiBTb2xhcmlzIGFuZCBvbiBMaW51eCAob25seSB3aXRoIGdsaWJjIG9sZGVyCisgIHRoYW4gMi4xNykuCisKIC0gSXNzdWUgIzIyMTgyOiBVc2UgZS5hcmdzIHRvIHVucGFjayBleGNlcHRpb25zIGNvcnJlY3RseSBpbgogICBkaXN0dXRpbHMuZmlsZV91dGlsLm1vdmVfZmlsZS4gUGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgogCiAtIFRoZSB3ZWJicm93c2VyIG1vZHVsZSBub3cgdXNlcyBzdWJwcm9jZXNzJ3Mgc3RhcnRfbmV3X3Nlc3Npb249VHJ1ZSByYXRoZXIKICAgdGhhbiBhIHBvdGVudGlhbGx5IHJpc2t5IHByZWV4ZWNfZm49b3Muc2V0c2lkIGNhbGwuCiAKKy0gSXNzdWUgIzIyMDQyOiBzaWduYWwuc2V0X3dha2V1cF9mZChmZCkgbm93IHJhaXNlcyBhbiBleGNlcHRpb24gaWYgdGhlIGZpbGUKKyAgZGVzY3JpcHRvciBpcyBpbiBibG9ja2luZyBtb2RlLgorCistIElzc3VlICMxNjgwODogaW5zcGVjdC5zdGFjaygpIG5vdyByZXR1cm5zIGEgbmFtZWQgdHVwbGUgaW5zdGVhZCBvZiBhIHR1cGxlLgorICBQYXRjaCBieSBEYW5pZWwgU2hhaGFmLgorCiAtIElzc3VlICMyMjIzNjogRml4ZWQgVGtpbnRlciBpbWFnZXMgY29weWluZyBvcGVyYXRpb25zIGluIE5vRGVmYXVsdFJvb3QgbW9kZS4KIAotLSBJc3N1ZSAjMjIxOTE6IEZpeCB3YXJuaW5ncy5fX2FsbF9fLgorLSBJc3N1ZSAjMjUyNzogQWRkIGEgKmdsb2JhbHMqIGFyZ3VtZW50IHRvIHRpbWVpdCBmdW5jdGlvbnMsIGluIG9yZGVyIHRvCisgIG92ZXJyaWRlIHRoZSBnbG9iYWxzIG5hbWVzcGFjZSBpbiB3aGljaCB0aGUgdGltZWQgY29kZSBpcyBleGVjdXRlZC4KKyAgUGF0Y2ggYnkgQmVuIFJvYmVydHMuCisKKy0gSXNzdWUgIzIyMTE4OiBTd2l0Y2ggdXJsbGliLnBhcnNlIHRvIHVzZSBSRkMgMzk4NiBzZW1hbnRpY3MgZm9yIHRoZQorICByZXNvbHV0aW9uIG9mIHJlbGF0aXZlIFVSTHMsIHJhdGhlciB0aGFuIFJGQ3MgMTgwOCBhbmQgMjM5Ni4KKyAgUGF0Y2ggYnkgRGVtaWFuIEJyZWNodC4KKworLSBJc3N1ZSAjMjE1NDk6IEFkZGVkIHRoZSAibWVtYmVycyIgcGFyYW1ldGVyIHRvIFRhckZpbGUubGlzdCgpLgorCistIElzc3VlICMxOTYyODogQWxsb3cgY29tcGlsZWFsbCByZWN1cnNpb24gZGVwdGggdG8gYmUgc3BlY2lmaWVkIHdpdGggYSAtcgorICBvcHRpb24uCiAKIC0gSXNzdWUgIzE1Njk2OiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBtbWFwIG9iamVjdHMgb24gV2luZG93cy4KIApAQCAtMTQxMSw2ICsyNzI2LDggQEAKIAogLSBJc3N1ZSAjMjIxNjU6IFNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlciBub3cgc3VwcG9ydHMgdW5kZWNvZGFibGUgZmlsZSBuYW1lcy4KIAorLSBJc3N1ZSAjMTUzODE6IE9wdGltaXplZCBsaW5lIHJlYWRpbmcgaW4gaW8uQnl0ZXNJTy4KKwogLSBJc3N1ZSAjODc5NzogUmFpc2UgSFRUUEVycm9yIG9uIGZhaWxlZCBCYXNpYyBBdXRoZW50aWNhdGlvbiBpbW1lZGlhdGVseS4KICAgSW5pdGlhbCBwYXRjaCBieSBTYW0gQnVsbC4KIApAQCAtMTQyNiw2ICsyNzQzLDE0IEBACiAtIElzc3VlICMxNzkyMzogZ2xvYigpIHBhdHRlcm5zIGVuZGluZyB3aXRoIGEgc2xhc2ggbm8gbG9uZ2VyIG1hdGNoIG5vbi1kaXJzIG9uCiAgIEFJWC4gIEJhc2VkIG9uIHBhdGNoIGJ5IERlbGhhbGx0LgogCistIElzc3VlICMyMTcyNTogQWRkZWQgc3VwcG9ydCBmb3IgUkZDIDY1MzEgKFNNVFBVVEY4KSBpbiBzbXRwZC4KKworLSBJc3N1ZSAjMjIxNzY6IFVwZGF0ZSB0aGUgY3R5cGVzIG1vZHVsZSdzIGxpYmZmaSB0byB2My4xLiAgVGhpcyByZWxlYXNlCisgIGFkZHMgc3VwcG9ydCBmb3IgdGhlIExpbnV4IEFBcmNoNjQgYW5kIFBPV0VSUEMgRUxGIEFCSXYyIGxpdHRsZSBlbmRpYW4KKyAgYXJjaGl0ZWN0dXJlcy4KKworLSBJc3N1ZSAjNTQxMTogQWRkZWQgc3VwcG9ydCBmb3IgdGhlICJ4enRhciIgZm9ybWF0IGluIHRoZSBzaHV0aWwgbW9kdWxlLgorCiAtIElzc3VlICMyMTEyMTogRG9uJ3QgZm9yY2UgM3JkIHBhcnR5IEMgZXh0ZW5zaW9ucyB0byBiZSBidWlsdCB3aXRoCiAgIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50LgogCkBAIC0xNDMzLDE4ICsyNzU4LDU3IEBACiAgIHdoZW4gdW5waWNrbGluZyBwaWNrbGVkIHNxbGl0ZTMuUm93KS4gIHNxbGl0ZTMuUm93IGlzIG5vdyBpbml0aWFsaXplZCBpbiB0aGUKICAgX19uZXdfXygpIG1ldGhvZC4KIAorLSBJc3N1ZSAjMjAxNzA6IENvbnZlcnQgcG9zaXhtb2R1bGUgdG8gdXNlIEFyZ3VtZW50IENsaW5pYy4KKworLSBJc3N1ZSAjMjE1Mzk6IEFkZCBhbiAqZXhpc3RzX29rKiBhcmd1bWVudCB0byBgUGF0aGxpYi5ta2RpcigpYCB0byBtaW1pYworICBgbWtkaXIgLXBgIGFuZCBgb3MubWFrZWRpcnMoKWAgZnVuY3Rpb25hbGl0eS4gIFdoZW4gdHJ1ZSwgaWdub3JlCisgIEZpbGVFeGlzdHNFcnJvcnMuICBQYXRjaCBieSBCZXJrZXIgUGVrc2FnLgorCistIElzc3VlICMyMjEyNzogQnlwYXNzIElETkEgZm9yIHB1cmUtQVNDSUkgaG9zdCBuYW1lcyBpbiB0aGUgc29ja2V0IG1vZHVsZQorICAoaW4gcGFydGljdWxhciBmb3IgbnVtZXJpYyBJUHMpLgorCistIElzc3VlICMyMTA0Nzogc2V0IHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgKmNvbnZlcnRfY2hhcnJlZnMqIGFyZ3VtZW50CisgIG9mIEhUTUxQYXJzZXIgdG8gVHJ1ZS4gIFBhdGNoIGJ5IEJlcmtlciBQZWtzYWcuCisKKy0gQWRkIGFuIF9fYWxsX18gdG8gaHRtbC5lbnRpdGllcy4KKworLSBJc3N1ZSAjMTUxMTQ6IHRoZSBzdHJpY3QgbW9kZSBhbmQgYXJndW1lbnQgb2YgSFRNTFBhcnNlciwgSFRNTFBhcnNlci5lcnJvciwKKyAgYW5kIHRoZSBIVE1MUGFyc2VyRXJyb3IgZXhjZXB0aW9uIGhhdmUgYmVlbiByZW1vdmVkLgorCistIElzc3VlICMyMjA4NTogRHJvcHBlZCBzdXBwb3J0IG9mIFRrIDguMyBpbiBUa2ludGVyLgorCiAtIElzc3VlICMyMTU4MDogTm93IFRraW50ZXIgY29ycmVjdGx5IGhhbmRsZXMgYnl0ZXMgYXJndW1lbnRzIHBhc3NlZCB0byBUay4KICAgSW4gcGFydGljdWxhciB0aGlzIGFsbG93cyB0byBpbml0aWFsaXplIGltYWdlcyBmcm9tIGJpbmFyeSBkYXRhLgogCistIElzc3VlICMyMjAwMzogV2hlbiBpbml0aWFsaXplZCBmcm9tIGEgYnl0ZXMgb2JqZWN0LCBpby5CeXRlc0lPKCkgbm93CisgIGRlZmVycyBtYWtpbmcgYSBjb3B5IHVudGlsIGl0IGlzIG11dGF0ZWQsIGltcHJvdmluZyBwZXJmb3JtYW5jZSBhbmQKKyAgbWVtb3J5IHVzZSBvbiBzb21lIHVzZSBjYXNlcy4gIFBhdGNoIGJ5IERhdmlkIFdpbHNvbi4KKworLSBJc3N1ZSAjMjIwMTg6IE9uIFdpbmRvd3MsIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKCkgbm93IGFsc28gc3VwcG9ydHMgc29ja2V0cy4KKyAgQSBzaWRlIGVmZmVjdCBpcyB0aGF0IFB5dGhvbiBkZXBlbmRzIHRvIHRoZSBXaW5Tb2NrIGxpYnJhcnkuCisKKy0gSXNzdWUgIzIyMDU0OiBBZGQgb3MuZ2V0X2Jsb2NraW5nKCkgYW5kIG9zLnNldF9ibG9ja2luZygpIGZ1bmN0aW9ucyB0byBnZXQKKyAgYW5kIHNldCB0aGUgYmxvY2tpbmcgbW9kZSBvZiBhIGZpbGUgZGVzY3JpcHRvciAoRmFsc2UgaWYgdGhlIE9fTk9OQkxPQ0sgZmxhZworICBpcyBzZXQsIFRydWUgb3RoZXJ3aXNlKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCisKIC0gSXNzdWUgIzE3MTcyOiBNYWtlIHR1cnRsZWRlbW8gc3RhcnQgYXMgYWN0aXZlIG9uIE9TIFggZXZlbiB3aGVuIHJ1biB3aXRoCiAgIHN1YnByb2Nlc3MuICBQYXRjaCBieSBMaXRhIENoby4KIAogLSBJc3N1ZSAjMjE3MDQ6IEZpeCBidWlsZCBlcnJvciBmb3IgX211bHRpcHJvY2Vzc2luZyB3aGVuIHNlbWFwaG9yZXMKICAgYXJlIG5vdCBhdmFpbGFibGUuICBQYXRjaCBieSBBcmZyZXZlciBGcmVodGVzIFRhaWZlcnNhciBBcmFoZXNpcy4KIAorLSBJc3N1ZSAjMjAxNzM6IENvbnZlcnQgc2hhMSwgc2hhMjU2LCBzaGE1MTIgYW5kIG1kNSB0byBBcmd1bWVudENsaW5pYy4KKyAgUGF0Y2ggYnkgVmFqcmFza3kgS29rLgorCiAtIEZpeCByZXByKF9zb2NrZXQuc29ja2V0KSBvbiBXaW5kb3dzIDY0LWJpdDogZG9uJ3QgZmFpbCB3aXRoIE92ZXJmbG93RXJyb3IKICAgb24gY2xvc2VkIHNvY2tldC4gcmVwcihzb2NrZXQuc29ja2V0KSBhbHJlYWR5IHdvcmtzIGZpbmUuCiAKKy0gSXNzdWUgIzIyMDMzOiBSZXBycyBvZiBtb3N0IFB5dGhvbiBpbXBsZW1lbmVkIGNsYXNzZXMgbm93IGNvbnRhaW4gYWN0dWFsCisgIGNsYXNzIG5hbWUgaW5zdGVhZCBvZiBoYXJkY29kZWQgb25lLgorCistIElzc3VlICMyMTk0NzogVGhlIGRpcyBtb2R1bGUgY2FuIG5vdyBkaXNhc3NlbWJsZSBnZW5lcmF0b3ItaXRlcmF0b3IKKyAgb2JqZWN0cyBiYXNlZCBvbiB0aGVpciBnaV9jb2RlIGF0dHJpYnV0ZS4gUGF0Y2ggYnkgQ2xlbWVudCBSb3VhdWx0LgorCiAtIElzc3VlICMxNjEzMzogVGhlIGFzeW5jaGF0LmFzeW5jX2NoYXQuaGFuZGxlX3JlYWQoKSBtZXRob2Qgbm93IGlnbm9yZXMKICAgQmxvY2tpbmdJT0Vycm9yIGV4Y2VwdGlvbnMuCiAKQEAgLTE0NTIsMjAgKzI4MTYsNDYgQEAKICAgUGF0Y2ggYnkgVG9tIEZsYW5hZ2FuLgogCiAtIElzc3VlICMxOTg4NDogcmVhZGxpbmU6IERpc2FibGUgdGhlIG1ldGEgbW9kaWZpZXIga2V5IGlmIHN0ZG91dCBpcyBub3QKLSAgYSB0ZXJtaW5hbCB0byBub3Qgd3JpdGUgdGhlIEFOU0kgc2VxdWVuY2UgIlwwMzNbMTAzNGgiIGludG8gc3Rkb3V0LiBUaGlzCisgIGEgdGVybWluYWwgdG8gbm90IHdyaXRlIHRoZSBBTlNJIHNlcXVlbmNlIGBgIlwwMzNbMTAzNGgiYGAgaW50byBzdGRvdXQuIFRoaXMKICAgc2VxdWVuY2UgaXMgdXNlZCBvbiBzb21lIHRlcm1pbmFsIChleDogVEVSTT14dGVybS0yNTZjb2xvciIpIHRvIGVuYWJsZQogICBzdXBwb3J0IG9mIDggYml0IGNoYXJhY3RlcnMuCiAKKy0gSXNzdWUgIzQzNTA6IFJlbW92ZWQgYSBudW1iZXIgb2Ygb3V0LW9mLWRhdGVkIGFuZCBub24td29ya2luZyBmb3IgYSBsb25nIHRpbWUKKyAgVGtpbnRlciBtZXRob2RzLgorCistIElzc3VlICM2MTY3OiBTY3JvbGxiYXIuYWN0aXZhdGUoKSBub3cgcmV0dXJucyB0aGUgbmFtZSBvZiBhY3RpdmUgZWxlbWVudCBpZgorICB0aGUgYXJndW1lbnQgaXMgbm90IHNwZWNpZmllZC4gIFNjcm9sbGJhci5zZXQoKSBub3cgYWx3YXlzIGFjY2VwdHMgb25seSAyCisgIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMTUyNzU6IENsZWFuIHVwIGFuZCBzcGVlZCB1cCB0aGUgbnRwYXRoIG1vZHVsZS4KKwogLSBJc3N1ZSAjMjE4ODg6IHBsaXN0bGliJ3MgbG9hZCgpIGFuZCBsb2FkcygpIG5vdyB3b3JrIGlmIHRoZSBmbXQgcGFyYW1ldGVyIGlzCiAgIHNwZWNpZmllZC4KIAorLSBJc3N1ZSAjMjIwMzI6IF9fcXVhbG5hbWVfXyBpbnN0ZWFkIG9mIF9fbmFtZV9fIGlzIG5vdyBhbHdheXMgdXNlZCB0byBmb3JtYXQKKyAgZnVsbHkgcXVhbGlmaWVkIGNsYXNzIG5hbWVzIG9mIFB5dGhvbiBpbXBsZW1lbnRlZCBjbGFzc2VzLgorCistIElzc3VlICMyMjAzMTogUmVwcnMgbm93IGFsd2F5cyB1c2UgaGV4YWRlY2ltYWwgZm9ybWF0IHdpdGggdGhlICIweCIgcHJlZml4CisgIHdoZW4gY29udGFpbiBhbiBpZCBpbiBmb3JtICIgYXQgMHguLi4iLgorCistIElzc3VlICMyMjAxODogc2lnbmFsLnNldF93YWtldXBfZmQoKSBub3cgcmFpc2VzIGFuIE9TRXJyb3IgaW5zdGVhZCBvZiBhCisgIFZhbHVlRXJyb3Igb24gYGBmc3RhdCgpYGAgZmFpbHVyZS4KKwogLSBJc3N1ZSAjMjEwNDQ6IHRhcmZpbGUub3BlbigpIG5vdyBoYW5kbGVzIGZpbGVvYmogd2l0aCBhbiBpbnRlZ2VyICduYW1lJwogICBhdHRyaWJ1dGUuICBCYXNlZCBvbiBwYXRjaCBieSBBbnRvaW5lIFBpZXRyaS4KIAotLSBJc3N1ZSAjMjE4Njc6IFByZXZlbnQgdHVydGxlIGNyYXNoIGR1ZSB0byBpbnZhbGlkIHVuZG8gYnVmZmVyIHNpemUuCistIElzc3VlICMyMTk2NjogUmVzcGVjdCAtcSBjb21tYW5kLWxpbmUgb3B0aW9uIHdoZW4gY29kZSBtb2R1bGUgaXMgcmFuLgogCiAtIElzc3VlICMxOTA3NjogRG9uJ3QgcGFzcyB0aGUgcmVkdW5kYW50ICdmaWxlJyBhcmd1bWVudCB0byBzZWxmLmVycm9yKCkuCiAKKy0gSXNzdWUgIzE2MzgyOiBJbXByb3ZlIGV4Y2VwdGlvbiBtZXNzYWdlIG9mIHdhcm5pbmdzLndhcm4oKSBmb3IgYmFkCisgIGNhdGVnb3J5LiBJbml0aWFsIHBhdGNoIGJ5IFBoaWwgRWxzb24uCisKKy0gSXNzdWUgIzIxOTMyOiBvcy5yZWFkKCkgbm93IHVzZXMgYSA6YzpmdW5jOmBQeV9zc2l6ZV90YCB0eXBlIGluc3RlYWQgb2YKKyAgOmM6dHlwZTpgaW50YCBmb3IgdGhlIHNpemUgdG8gc3VwcG9ydCByZWFkaW5nIG1vcmUgdGhhbiAyIEdCIGF0IG9uY2UuIE9uCisgIFdpbmRvd3MsIHRoZSBzaXplIGlzIHRydW5jdGVkIHRvIElOVF9NQVguIEFzIGFueSBjYWxsIHRvIG9zLnJlYWQoKSwgdGhlIE9TCisgIG1heSByZWFkIGxlc3MgYnl0ZXMgdGhhbiB0aGUgbnVtYmVyIG9mIHJlcXVlc3RlZCBieXRlcy4KKwogLSBJc3N1ZSAjMjE5NDI6IEZpeGVkIHNvdXJjZSBmaWxlIHZpZXdpbmcgaW4gcHlkb2MncyBzZXJ2ZXIgbW9kZSBvbiBXaW5kb3dzLgogCiAtIElzc3VlICMxMTI1OTogYXN5bmNoYXQuYXN5bmNfY2hhdCgpLnNldF90ZXJtaW5hdG9yKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IKQEAgLTE0ODMsOCArMjg3Myw4IEBACiAtIElzc3VlICMyMTcxNDogRGlzYWxsb3cgdGhlIGNvbnN0cnVjdGlvbiBvZiBpbnZhbGlkIHBhdGhzIHVzaW5nCiAgIFBhdGgud2l0aF9uYW1lKCkuICBPcmlnaW5hbCBwYXRjaCBieSBBbnRvbnkgTGVlLgogCi0tIElzc3VlICMyMTg5NzogRml4IGEgY3Jhc2ggd2l0aCB0aGUgZl9sb2NhbHMgYXR0cmlidXRlIHdpdGggY2xvc3VyZQotICB2YXJpYWJsZXMgd2hlbiBmcmFtZS5jbGVhcigpIGhhcyBiZWVuIGNhbGxlZC4KKy0gSXNzdWUgIzE1MDE0OiBBZGRlZCAnYXV0aCcgbWV0aG9kIHRvIHNtdHBsaWIgdG8gbWFrZSBpbXBsZW1lbnRpbmcgYXV0aAorICBtZWNoYW5pc21zIHNpbXBsZXIsIGFuZCB1c2VkIGl0IGludGVybmFsbHkgaW4gdGhlIGxvZ2luIG1ldGhvZC4KIAogLSBJc3N1ZSAjMjExNTE6IEZpeGVkIGEgc2VnZmF1bHQgaW4gdGhlIHdpbnJlZyBtb2R1bGUgd2hlbiBgYE5vbmVgYCBpcyBwYXNzZWQKICAgYXMgYSBgYFJFR19CSU5BUllgYCB2YWx1ZSB0byBTZXRWYWx1ZUV4LiAgUGF0Y2ggYnkgSm9obiBFaHJlc21hbi4KQEAgLTE0OTIsOCArMjg4MiwxNyBAQAogLSBJc3N1ZSAjMjEwOTA6IGlvLkZpbGVJTy5yZWFkYWxsKCkgZG9lcyBub3QgaWdub3JlIEkvTyBlcnJvcnMgYW55bW9yZS4gQmVmb3JlLAogICBpdCBpZ25vcmVkIEkvTyBlcnJvcnMgaWYgYXQgbGVhc3QgdGhlIGZpcnN0IEMgY2FsbCByZWFkKCkgc3VjY2VlZC4KIAorLSBJc3N1ZSAjNTgwMDogaGVhZGVycyBwYXJhbWV0ZXIgb2Ygd3NnaXJlZi5oZWFkZXJzLkhlYWRlcnMgaXMgbm93IG9wdGlvbmFsLgorICBJbml0aWFsIHBhdGNoIGJ5IFBhYmxvIFRvcnJlcyBOYXZhcnJldGUgYW5kIFNpbGVudEdob3N0LgorCiAtIElzc3VlICMyMTc4MTogc3NsLlJBTkRfYWRkKCkgbm93IHN1cHBvcnRzIHN0cmluZ3MgbG9uZ2VyIHRoYW4gMiBHQi4KIAorLSBJc3N1ZSAjMjE2Nzk6IFByZXZlbnQgZXh0cmFuZW91cyBmc3RhdCgpIGNhbGxzIGR1cmluZyBvcGVuKCkuICBQYXRjaCBieQorICBCb2h1c2xhdiBLYWJyZGEuCisKKy0gSXNzdWUgIzIxODYzOiBjUHJvZmlsZSBub3cgZGlzcGxheXMgdGhlIG1vZHVsZSBuYW1lIG9mIEMgZXh0ZW5zaW9uIGZ1bmN0aW9ucywKKyAgaW4gYWRkaXRpb24gdG8gdGhlaXIgb3duIG5hbWUuCisKIC0gSXNzdWUgIzExNDUzOiBhc3luY29yZTogZW1pdCBhIFJlc291cmNlV2FybmluZyB3aGVuIGFuIHVuY2xvc2VkIGZpbGVfd3JhcHBlcgogICBvYmplY3QgaXMgZGVzdHJveWVkLiBUaGUgZGVzdHJ1Y3RvciBub3cgY2xvc2VzIHRoZSBmaWxlIGlmIG5lZWRlZC4gVGhlCiAgIGNsb3NlKCkgbWV0aG9kIGNhbiBub3cgYmUgY2FsbGVkIHR3aWNlOiB0aGUgc2Vjb25kIGNhbGwgZG9lcyBub3RoaW5nLgpAQCAtMTUwMyw0OCArMjkwMiw1MyBAQAogLSBJc3N1ZSAjMjE0NzY6IE1ha2Ugc3VyZSB0aGUgZW1haWwucGFyc2VyLkJ5dGVzUGFyc2VyIFRleHRJT1dyYXBwZXIgaXMKICAgZGlzY2FyZGVkIGFmdGVyIHBhcnNpbmcsIHNvIHRoZSBpbnB1dCBmaWxlIGlzbid0IHVuZXhwZWN0ZWRseSBjbG9zZWQuCiAKKy0gSXNzdWUgIzIwMjk1OiBpbWdoZHIgbm93IHJlY29nbml6ZXMgT3BlbkVYUiBmb3JtYXQgaW1hZ2VzLgorCiAtIElzc3VlICMyMTcyOTogVXNlZCB0aGUgIndpdGgiIHN0YXRlbWVudCBpbiB0aGUgZGJtLmR1bWIgbW9kdWxlIHRvIGVuc3VyZQogICBmaWxlcyBjbG9zaW5nLiAgUGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgogCiAtIElzc3VlICMyMTQ5MTogc29ja2V0c2VydmVyOiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiBjaGlsZCBwcm9jZXNzZXMgcmVhcGluZy4KIAorLSBJc3N1ZSAjMjE3MTk6IEFkZGVkIHRoZSBgYHN0X2ZpbGVfYXR0cmlidXRlc2BgIGZpZWxkIHRvIG9zLnN0YXRfcmVzdWx0IG9uCisgIFdpbmRvd3MuCisKIC0gSXNzdWUgIzIxODMyOiBSZXF1aXJlIG5hbWVkIHR1cGxlIGlucHV0cyB0byBiZSBleGFjdCBzdHJpbmdzLgogCi0tIElzc3VlICMxOTE0NTogVGhlIHRpbWVzIGFyZ3VtZW50IGZvciBpdGVydG9vbHMucmVwZWF0IG5vdyBoYW5kbGVzCi0gIG5lZ2F0aXZlIHZhbHVlcyB0aGUgc2FtZSB3YXkgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFzIGl0IGRvZXMgZm9yCi0gIHBvc2l0aW9uYWwgYXJndW1lbnRzLgotCi0tIElzc3VlICMyMTgxMjogdHVydGxlLnNoYXBldHJhbnNmb3JtIGRpZCBub3QgdHJhbmZvcm0gdGhlIHR1cnRsZSBvbiB0aGUKLSAgZmlyc3QgY2FsbC4gIChJc3N1ZSBpZGVudGlmaWVkIGFuZCBmaXhlZCBieSBMaXRhIENoby4pCi0KLS0gSXNzdWUgIzIxNjM1OiBUaGUgZGlmZmxpYiBTZXF1ZW5jZU1hdGNoZXIuZ2V0X21hdGNoaW5nX2Jsb2NrcygpIG1ldGhvZAotICBjYWNoZSBkaWRuJ3QgbWF0Y2ggdGhlIGFjdHVhbCByZXN1bHQuICBUaGUgZm9ybWVyIHdhcyBhIGxpc3Qgb2YgdHVwbGVzCi0gIGFuZCB0aGUgbGF0dGVyIHdhcyBhIGxpc3Qgb2YgbmFtZWQgdHVwbGVzLgotCiAtIElzc3VlICMyMTcyMjogVGhlIGRpc3R1dGlscyAidXBsb2FkIiBjb21tYW5kIG5vdyBleGl0cyB3aXRoIGEgbm9uLXplcm8KICAgcmV0dXJuIGNvZGUgd2hlbiB1cGxvYWRpbmcgZmFpbHMuICBQYXRjaCBieSBNYXJ0aW4gRGVuZ2xlci4KIAogLSBJc3N1ZSAjMjE3MjM6IGFzeW5jaW8uUXVldWU6IHN1cHBvcnQgYW55IHR5cGUgb2YgbnVtYmVyIChleDogZmxvYXQpIGZvciB0aGUKICAgbWF4aW11bSBzaXplLiBQYXRjaCB3cml0dGVuIGJ5IFZhanJhc2t5IEtvay4KIAorLSBJc3N1ZSAjMjE3MTE6IHN1cHBvcnQgZm9yICJzaXRlLXB5dGhvbiIgZGlyZWN0b3JpZXMgaGFzIG5vdyBiZWVuIHJlbW92ZWQKKyAgZnJvbSB0aGUgc2l0ZSBtb2R1bGUgKGl0IHdhcyBkZXByZWNhdGVkIGluIDMuNCkuCisKKy0gSXNzdWUgIzE3NTUyOiBuZXcgc29ja2V0LnNlbmRmaWxlKCkgbWV0aG9kIGFsbG93aW5nIHRvIHNlbmQgYSBmaWxlIG92ZXIgYQorICBzb2NrZXQgYnkgdXNpbmcgaGlnaC1wZXJmb3JtYW5jZSBvcy5zZW5kZmlsZSgpIG9uIFVOSVguCisgIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbGEnLgorCistIElzc3VlICMxODAzOTogZGJtLmR1bXAub3BlbigpIG5vdyBhbHdheXMgY3JlYXRlcyBhIG5ldyBkYXRhYmFzZSB3aGVuIHRoZQorICBmbGFnIGhhcyB0aGUgdmFsdWUgJ24nLiAgUGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgorCiAtIElzc3VlICMyMTMyNjogQWRkIGEgbmV3IGlzX2Nsb3NlZCgpIG1ldGhvZCB0byBhc3luY2lvLkJhc2VFdmVudExvb3AuCiAgIHJ1bl9mb3JldmVyKCkgYW5kIHJ1bl91bnRpbF9jb21wbGV0ZSgpIG1ldGhvZHMgb2YgYXN5bmNpby5CYXNlRXZlbnRMb29wIG5vdwogICByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIGV2ZW50IGxvb3Agd2FzIGNsb3NlZC4KIAotLSBJc3N1ZSAjMjE3NzQ6IEZpeGVkIE5hbWVFcnJvciBmb3IgYW4gaW5jb3JyZWN0IHZhcmlhYmxlIHJlZmVyZW5jZSBpbiB0aGUKLSAgWE1MIE1pbmlkb20gY29kZSBmb3IgY3JlYXRpbmcgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMuCi0gIChGb3VuZCBhbmQgZml4ZWQgYnkgQ2xhdWRpdSBQb3BhLikKLQogLSBJc3N1ZSAjMjE3NjY6IFByZXZlbnQgYSBzZWN1cml0eSBob2xlIGluIENHSUhUVFBTZXJ2ZXIgYnkgVVJMIHVucXVvdGluZyBwYXRocwogICBiZWZvcmUgY2hlY2tpbmcgZm9yIGEgQ0dJIHNjcmlwdCBhdCB0aGF0IHBhdGguCiAKIC0gSXNzdWUgIzIxMzEwOiBGaXhlZCBwb3NzaWJsZSByZXNvdXJjZSBsZWFrIGluIGZhaWxlZCBvcGVuKCkuCiAKKy0gSXNzdWUgIzIxMjU2OiBQcmludG91dCBvZiBrZXl3b3JkIGFyZ3Mgc2hvdWxkIGJlIGluIGRldGVybWluaXN0aWMgb3JkZXIgaW4KKyAgYSBtb2NrIGZ1bmN0aW9uIGNhbGwuIFRoaXMgd2lsbCBoZWxwIHRvIHdyaXRlIGJldHRlciBkb2N0ZXN0cy4KKwogLSBJc3N1ZSAjMjE2Nzc6IEZpeGVkIGNoYWluaW5nIG5vbm5vcm1hbGl6ZWQgZXhjZXB0aW9ucyBpbiBpbyBjbG9zZSgpIG1ldGhvZHMuCiAKIC0gSXNzdWUgIzExNzA5OiBGaXggdGhlIHB5ZG9jLmhlbHAgZnVuY3Rpb24gdG8gbm90IGZhaWwgd2hlbiBzeXMuc3RkaW4gaXMgbm90IGEKICAgdmFsaWQgZmlsZS4KIAorLSBJc3N1ZSAjMjE1MTU6IHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUgbm93IHVzZXMgb3MuT19UTVBGSUxFIGZsYWcgaXMgYXZhaWxhYmxlLgorCiAtIElzc3VlICMxMzIyMzogRml4IHB5ZG9jLndyaXRlZG9jIHNvIHRoYXQgdGhlIEhUTUwgZG9jdW1lbnRhdGlvbiBmb3IgbWV0aG9kcwogICB0aGF0IHVzZSAnc2VsZicgaW4gdGhlIGV4YW1wbGUgY29kZSBpcyBnZW5lcmF0ZWQgY29ycmVjdGx5LgogCkBAIC0xNTU1LDYgKzI5NTksOSBAQAogICBsaW1pdHMgd291bGQgb3RoZXJ3aXNlIGFsbG93LiAgT24gc3lzdGVtcyB3aXRoIGEgZnVuY3Rpb25pbmcgL3Byb2Mvc2VsZi9mZAogICBvciAvZGV2L2ZkIGludGVyZmFjZSB0aGUgbWF4IGlzIG5vdyBpZ25vcmVkIGFuZCBhbGwgZmRzIGFyZSBjbG9zZWQuCiAKKy0gSXNzdWUgIzIwMzgzOiBJbnRyb2R1Y2UgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlYygpIGFzIHRoZSBwcmVmZXJyZWQgd2F5CisgIHRvIGNyZWF0ZSBhIG5ldyBtb2R1bGUuCisKIC0gSXNzdWUgIzIxNTUyOiBGaXhlZCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IG9mIHRvbyBsb25nIHN0cmluZyBsZW5ndGhzIGluCiAgIHRoZSB0a2ludGVyIG1vZHVsZSBvbiA2NC1iaXQgcGxhdGZvcm1zLgogCkBAIC0xNTYzLDggKzI5NzAsMTQgQEAKICAgZXJyb3IgYnViYmxlIHVwIGFzIHRoaXMgImJhZCBkYXRhIiBhcHBlYXJzIGluIG1hbnkgcmVhbCB3b3JsZCB6aXAgZmlsZXMgaW4KICAgdGhlIHdpbGQgYW5kIGlzIGlnbm9yZWQgYnkgb3RoZXIgemlwIHRvb2xzLgogCistIElzc3VlICMxMzc0MjogQWRkZWQgImtleSIgYW5kICJyZXZlcnNlIiBwYXJhbWV0ZXJzIHRvIGhlYXBxLm1lcmdlKCkuCisgIChGaXJzdCBkcmFmdCBvZiBwYXRjaCBjb250cmlidXRlZCBieSBTaW1vbiBTYXBpbi4pCisKIC0gSXNzdWUgIzIxNDAyOiB0a2ludGVyLnR0ayBub3cgd29ya3Mgd2hlbiBkZWZhdWx0IHJvb3Qgd2luZG93IGlzIG5vdCBzZXQuCiAKKy0gSXNzdWUgIzMwMTU6IF90a2ludGVyLmNyZWF0ZSgpIG5vdyBjcmVhdGVzIHRrYXBwIG9iamVjdCB3aXRoIHdhbnRvYmplY3Q9MSBieQorICBkZWZhdWx0LgorCiAtIElzc3VlICMxMDIwMzogc3FsaXRlMy5Sb3cgbm93IHRydWx5IHN1cHBvcnRzIHNlcXVlbmNlIHByb3RvY29sLiAgSW4gcGFydGljdWxhcgogICBpdCBzdXBwb3J0cyByZXZlcnNlKCkgYW5kIG5lZ2F0aXZlIGluZGljZXMuICBPcmlnaW5hbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuCiAKQEAgLTE1NzIsOTcgKzI5ODUsMjEgQEAKICAgaW50ZXJwcmV0ZXIgYWxpYXNlcyAocHl0aG9uLCBweXRob24zKSBhcmUgbm93IGNyZWF0ZWQgYnkgY29weWluZyByYXRoZXIgdGhhbgogICBzeW1saW5raW5nLgogCi0tIElzc3VlICMxNDcxMDogcGtndXRpbC5nZXRfbG9hZGVyKCkgbm8gbG9uZ2VyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBOb25lIGlzCi0gIGZvdW5kIGluIHN5cy5tb2R1bGVzLgorLSBJc3N1ZSAjMjAxOTc6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBXZWJQIGltYWdlIHR5cGUgaW4gdGhlIGltZ2hkciBtb2R1bGUuCisgIFBhdGNoIGJ5IEZhYnJpY2UgQW5lY2hlIGFuZCBDbGF1ZGl1IFBvcGEuCiAKLS0gSXNzdWUgIzE0NzEwOiBwa2d1dGlsLmZpbmRfbG9hZGVyKCkgbm8gbG9uZ2VyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBhCi0gIG1vZHVsZSBkb2Vzbid0IGV4aXN0LgorLSBJc3N1ZSAjMjE1MTM6IFNwZWVkdXAgc29tZSBwcm9wZXJ0aWVzIG9mIElQIGFkZHJlc3NlcyAoSVB2NEFkZHJlc3MsCisgIElQdjZBZGRyZXNzKSBzdWNoIGFzIC5pc19wcml2YXRlIG9yIC5pc19tdWx0aWNhc3QuCiAKLS0gSXNzdWUgIzIxNDgxOiBBcmdwYXJzZSBlcXVhbGl0eSBhbmQgaW5lcXVhbGl0eSB0ZXN0cyBub3cgcmV0dXJuCi0gIE5vdEltcGxlbWVudGVkIHdoZW4gY29tcGFyaW5nIHRvIGFuIHVua25vd24gdHlwZS4KLQotLSBJc3N1ZSAjODc0MzogRml4IGludGVyb3BlcmFiaWxpdHkgYmV0d2VlbiBzZXQgb2JqZWN0cyBhbmQgdGhlCi0gIGNvbGxlY3Rpb25zLlNldCgpIGFic3RyYWN0IGJhc2UgY2xhc3MuCi0KLS0gSXNzdWUgIzEzMzU1OiByYW5kb20udHJpYW5ndWxhcigpIG5vIGxvbmdlciBmYWlscyB3aXRoIGEgWmVyb0RpdmlzaW9uRXJyb3IKLSAgd2hlbiBsb3cgZXF1YWxzIGhpZ2guCistIElzc3VlICMyMTEzNzogSW1wcm92ZSB0aGUgcmVwciBmb3IgdGhyZWFkaW5nLkxvY2soKSBhbmQgaXRzIHZhcmlhbnRzCisgIGJ5IHNob3dpbmcgdGhlICJsb2NrZWQiIG9yICJ1bmxvY2tlZCIgc3RhdHVzLiAgUGF0Y2ggYnkgQmVya2VyIFBla3NhZy4KIAogLSBJc3N1ZSAjMjE1Mzg6IFRoZSBwbGlzdGxpYiBtb2R1bGUgbm93IHN1cHBvcnRzIGxvYWRpbmcgb2YgYmluYXJ5IHBsaXN0IGZpbGVzCiAgIHdoZW4gcmVmZXJlbmNlIG9yIG9mZnNldCBzaXplIGlzIG5vdCBhIHBvd2VyIG9mIHR3by4KIAotLSBJc3N1ZSAjMjE4MDE6IFZhbGlkYXRlIHRoYXQgX19zaWduYXR1cmVfXyBpcyBOb25lIG9yIGFuIGluc3RhbmNlIG9mIFNpZ25hdHVyZS4KKy0gSXNzdWUgIzIxNDU1OiBBZGQgYSBkZWZhdWx0IGJhY2tsb2cgdG8gc29ja2V0Lmxpc3RlbigpLgogCi0tIElzc3VlICMyMTkyMzogUHJldmVudCBBdHRyaWJ1dGVFcnJvciBpbiBkaXN0dXRpbHMuc3lzY29uZmlnLmN1c3RvbWl6ZV9jb21waWxlcgotICBkdWUgdG8gcG9zc2libGUgdW5pbml0aWFsaXplZCBfY29uZmlnX3ZhcnMuCi0KLS0gSXNzdWUgIzIxMzIzOiBGaXggaHR0cC5zZXJ2ZXIgdG8gYWdhaW4gaGFuZGxlIHNjcmlwdHMgaW4gQ0dJIHN1YmRpcmVjdG9yaWVzLAotICBicm9rZW4gYnkgdGhlIGZpeCBmb3Igc2VjdXJpdHkgaXNzdWUgIzE5NDM1LiAgUGF0Y2ggYnkgWmFjaCBCeXJuZS4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzIyMTc2OiBVcGRhdGUgdGhlIGN0eXBlcyBtb2R1bGUncyBsaWJmZmkgdG8gdjMuMS4gIFRoaXMgcmVsZWFzZQotICBhZGRzIHN1cHBvcnQgZm9yIHRoZSBMaW51eCBBQXJjaDY0IGFuZCBQT1dFUlBDIEVMRiBBQkl2MiBsaXR0bGUgZW5kaWFuCi0gIGFyY2hpdGVjdHVyZXMuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxNTY2MTogcHl0aG9uLm9yZyBPUyBYIGluc3RhbGxlcnMgYXJlIG5vdyBkaXN0cmlidXRlZCBhcyBzaWduZWQKLSAgaW5zdGFsbGVyIHBhY2thZ2VzIGNvbXBhdGlibGUgd2l0aCB0aGUgR2F0ZWtlZXBlciBzZWN1cml0eSBmZWF0dXJlLgotCi0tIElzc3VlICMyMTk1ODogRGVmaW5lIEhBVkVfUk9VTkQgd2hlbiBidWlsZGluZyB3aXRoIFZpc3VhbCBTdHVkaW8gMjAxMyBhbmQKLSAgYWJvdmUuICBQYXRjaCBieSBaYWNoYXJ5IFR1cm5lci4KLQotLSBJc3N1ZSAjMTU3NTk6ICJtYWtlIHN1c3BpY2lvdXMiLCAibWFrZSBsaW5rY2hlY2siIGFuZCAibWFrZSBkb2N0ZXN0IiBpbiBEb2MvCi0gIG5vdyBkaXNwbGF5IHNwZWNpYWwgbWVzc2FnZSB3aGVuIGFuZCBvbmx5IHdoZW4gdGhlcmUgYXJlIGZhaWx1cmVzLgotCi0tIElzc3VlICMxNzA5NTogRml4IE1vZHVsZXMvU2V0dXAgKnNoYXJlZCogc3VwcG9ydC4KLQotLSBJc3N1ZSAjMjE4MTE6IEFudGljaXBhdGVkIGZpeGVzIHRvIHN1cHBvcnQgT1MgWCB2ZXJzaW9ucyA+IDEwLjkuCi0KLS0gSXNzdWUgIzIxMTY2OiBQcmV2ZW50IHBvc3NpYmxlIHNlZ2ZhdWx0cyBhbmQgb3RoZXIgcmFuZG9tIGZhaWx1cmVzIG9mCi0gIHB5dGhvbiAtLWdlbmVyYXRlLXBvc2l4LXZhcnMgaW4gcHlidWlsZGRpci50eHQgYnVpbGQgdGFyZ2V0LgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzE3MzkwOiBBZGp1c3QgRWRpdG9yIHdpbmRvdyB0aXRsZTsgcmVtb3ZlICdQeXRob24nLAotICBtb3ZlIHZlcnNpb24gdG8gZW5kLgotCi0tIElzc3VlICMxNDEwNTogSWRsZSBkZWJ1Z2dlciBicmVha3BvaW50cyBubyBsb25nZXIgZGlzYXBwZWFyCi0gIHdoZW4gaW5zZXRpbmcgb3IgZGVsZXRpbmcgbGluZXMuCi0KLS0gSXNzdWUgIzE3MTcyOiBUdXJ0bGVkZW1vIGNhbiBub3cgYmUgcnVuIGZyb20gSWRsZS4KLSAgQ3VycmVudGx5LCB0aGUgZW50cnkgaXMgb24gdGhlIEhlbHAgbWVudSwgYnV0IGl0IG1heSBtb3ZlIHRvIFJ1bi4KLSAgUGF0Y2ggYnkgUmFtY2hhbmRyYSBBcHQgYW5kIExpdGEgQ2hvLgotCi0tIElzc3VlICMyMTc2NTogQWRkIHN1cHBvcnQgZm9yIG5vbi1hc2NpaSBpZGVudGlmaWVycyB0byBIeXBlclBhcnNlci4KLQotLSBJc3N1ZSAjMjE5NDA6IEFkZCB1bml0dGVzdCBmb3IgV2lkZ2V0UmVkaXJlY3Rvci4gSW5pdGlhbCBwYXRjaCBieSBTYWltYWRoYXYKLSAgSGVibGlrYXIuCi0KLS0gSXNzdWUgIzE4NTkyOiBBZGQgdW5pdHRlc3QgZm9yIFNlYXJjaERpYWxvZ0Jhc2UuIFBhdGNoIGJ5IFBoaWwgV2Vic3Rlci4KLQotLSBJc3N1ZSAjMjE2OTQ6IEFkZCB1bml0dGVzdCBmb3IgUGFyZW5NYXRjaC4gUGF0Y2ggYnkgU2FpbWFkaGF2IEhlYmxpa2FyLgotCi0tIElzc3VlICMyMTY4NjogYWRkIHVuaXR0ZXN0IGZvciBIeXBlclBhcnNlci4gT3JpZ2luYWwgcGF0Y2ggYnkgU2FpbWFkaGF2Ci0gIEhlYmxpa2FyLgotCi0tIElzc3VlICMxMjM4NzogQWRkIG1pc3NpbmcgdXBwZXIobG93ZXIpY2FzZSB2ZXJzaW9ucyBvZiBkZWZhdWx0IFdpbmRvd3Mga2V5Ci0gIGJpbmRpbmdzIGZvciBJZGxlIHNvIENhcHMgTG9jayBkb2VzIG5vdCBkaXNhYmxlIHRoZW0uIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCi0tIElzc3VlICMyMTY5NTogQ2xvc2luZyBhIEZpbmQtaW4tZmlsZXMgb3V0cHV0IHdpbmRvdyB3aGlsZSB0aGUgc2VhcmNoIGlzCi0gIHN0aWxsIGluIHByb2dyZXNzIG5vIGxvbmdlciBjbG9zZXMgSWRsZS4KLQotLSBJc3N1ZSAjMTg5MTA6IEFkZCB1bml0dGVzdCBmb3IgdGV4dFZpZXcuIFBhdGNoIGJ5IFBoaWwgV2Vic3Rlci4KLQotLSBJc3N1ZSAjMTgyOTI6IEFkZCB1bml0dGVzdCBmb3IgQXV0b0V4cGFuZC4gUGF0Y2ggYnkgU2FpaGFkaGF2IEhlYmxpa2FyLgotCi0tIElzc3VlICMxODQwOTogQWRkIHVuaXR0ZXN0IGZvciBBdXRvQ29tcGxldGUuIFBhdGNoIGJ5IFBoaWwgV2Vic3Rlci4KLQotVGVzdHMKLS0tLS0tCistIElzc3VlICMyMTUyNTogTW9zdCBUa2ludGVyIG1ldGhvZHMgd2hpY2ggYWNjZXB0ZWQgdHVwbGVzIG5vdyBhY2NlcHQgbGlzdHMgdG9vLgogCiAtIElzc3VlICMyMjE2NjogV2l0aCB0aGUgYXNzaXN0YW5jZSBvZiBhIG5ldyBpbnRlcm5hbCBfY29kZWNzLl9mb3JnZXRfY29kZWMKICAgaGVscGluZyBmdW5jdGlvbiwgdGVzdF9jb2RlY3Mgbm93IGNsZWFycyB0aGUgZW5jb2RpbmcgY2FjaGVzIHRvIGF2b2lkIHRoZQpAQCAtMTY3MSwxODEgKzMwMDgsOTMgQEAKIC0gSXNzdWUgIzIyMjM2OiBUa2ludGVyIHRlc3RzIG5vdyBkb24ndCByZXVzZSBkZWZhdWx0IHJvb3Qgd2luZG93LiAgTmV3IHJvb3QKICAgd2luZG93IGlzIGNyZWF0ZWQgZm9yIGV2ZXJ5IHRlc3QgY2xhc3MuCiAKLS0gSXNzdWUgIzIwNzQ2OiBGaXggdGVzdF9wZGIgdG8gcnVuIGluIHJlZmxlYWsgbW9kZSAoLVIpLiAgUGF0Y2ggYnkgWGF2aWVyCi0gIGRlIEdheWUuCi0KLS0gSXNzdWUgIzIyMDYwOiB0ZXN0X2N0eXBlcyBoYXMgYmVlbiBzb21ld2hhdCBjbGVhbmVkIHVwIGFuZCBzaW1wbGlmaWVkOyBpdAotICBub3cgdXNlcyB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeSB0byBmaW5kIGl0cyB0ZXN0cy4KLQotLSBJc3N1ZSAjMjIxMDQ6IHJlZ3J0ZXN0LnB5IG5vIGxvbmdlciBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgc3VpdGUgb2YgdGVzdHMKLSAgbG9hZGVkIGZyb20gdGVzdCBtb2R1bGVzIHRoYXQgZG9uJ3QgZGVmaW5lIHRlc3RfbWFpbigpLgotCi0tIElzc3VlICMyMjAwMjogQWRkZWQgYGBsb2FkX3BhY2thZ2VfdGVzdHNgYCBmdW5jdGlvbiB0byB0ZXN0LnN1cHBvcnQgYW5kIHVzZWQKLSAgaXQgdG8gaW1wbGVtZW50L2F1Z21lbnQgdGVzdCBkaXNjb3ZlcnkgaW4gdGVzdF9hc3luY2lvLCB0ZXN0X2VtYWlsLAotICB0ZXN0X2ltcG9ydGxpYiwgdGVzdF9qc29uLCBhbmQgdGVzdF90b29scy4KLQotLSBJc3N1ZSAjMjE5NzY6IEZpeCB0ZXN0X3NzbCB0byBhY2NlcHQgTGlicmVTU0wgdmVyc2lvbiBzdHJpbmdzLiAgVGhhbmtzCi0gIHRvIFdpbGxpYW0gT3JyLgotCi0tIElzc3VlICMyMTkxODogQ29udmVydGVkIHRlc3RfdG9vbHMgZnJvbSBhIG1vZHVsZSB0byBhIHBhY2thZ2UgY29udGFpbmluZwotICBzZXBhcmF0ZSB0ZXN0IGZpbGVzIGZvciBlYWNoIHRlc3RlZCBzY3JpcHQuCi0KLS0gSXNzdWUgIzIwMTU1OiBDaGFuZ2VkIEhUVFAgbWV0aG9kIG5hbWVzIGluIGZhaWxpbmcgdGVzdHMgaW4gdGVzdF9odHRwc2VydmVycwotICBzbyB0aGF0IHBhY2tldCBmaWx0ZXJpbmcgc29mdHdhcmUgKHNwZWNpZmljYWxseSBXaW5kb3dzIEJhc2UgRmlsdGVyaW5nIEVuZ2luZSkKLSAgZG9lcyBub3QgaW50ZXJmZXJlIHdpdGggdGhlIHRyYW5zYWN0aW9uIHNlbWFudGljcyBleHBlY3RlZCBieSB0aGUgdGVzdHMuCi0KLS0gSXNzdWUgIzE5NDkzOiBSZWZhY3RvcmVkIHRoZSBjdHlwZXMgdGVzdCBwYWNrYWdlIHRvIHNraXAgdGVzdHMgZXhwbGljaXRseQotICByYXRoZXIgdGhhbiBzaWxlbnRseS4KLQotLSBJc3N1ZSAjMTg0OTI6IEFsbCByZXNvdXJjZXMgYXJlIG5vdyBhbGxvd2VkIHdoZW4gdGVzdHMgYXJlIG5vdCBydW4gYnkKLSAgcmVncnRlc3QucHkuCi0KLS0gSXNzdWUgIzIxNjM0OiBGaXggcHlzdG9uZSBtaWNyby1iZW5jaG1hcms6IHVzZSBmbG9vciBkaXZpc2lvbiBpbnN0ZWFkIG9mIHRydWUKLSAgZGl2aXNpb24gdG8gYmVuY2htYXJrIGludGVnZXJzIGluc3RlYWQgb2YgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gU2V0IHB5c3RvbmUKLSAgdmVyc2lvbiB0byAxLjIuIFBhdGNoIHdyaXR0ZW4gYnkgTGVubmFydCBSZWdlYnJvLgotCi0tIElzc3VlICMyMTYwNTogQWRkZWQgdGVzdHMgZm9yIFRraW50ZXIgaW1hZ2VzLgotCi0tIElzc3VlICMyMTQ5MzogQWRkZWQgdGVzdCBmb3IgbnRwYXRoLmV4cGFuZHVzZXIoKS4gIE9yaWdpbmFsIHBhdGNoIGJ5Ci0gIENsYXVkaXUgUG9wYS4KLQotLSBJc3N1ZSAjMTk5MjU6IEFkZGVkIHRlc3RzIGZvciB0aGUgc3B3ZCBtb2R1bGUuIE9yaWdpbmFsIHBhdGNoIGJ5IFZhanJhc2t5IEtvay4KLQotLSBJc3N1ZSAjMjE1MjI6IEFkZGVkIFRraW50ZXIgdGVzdHMgZm9yIExpc3Rib3guaXRlbWNvbmZpZ3VyZSgpLAotICBQYW5lZFdpbmRvdy5wYW5lY29uZmlndXJlKCksIGFuZCBNZW51LmVudHJ5Y29uZmlndXJlKCkuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjE3Nzc6IFRoZSBiaW5hcnkgc2VxdWVuY2UgbWV0aG9kcyBvbiBieXRlcyBhbmQgYnl0ZWFycmF5IGFyZSBub3cKLSAgZG9jdW1lbnRlZCBleHBsaWNpdGx5LCByYXRoZXIgdGhhbiBhc3N1bWluZyB1c2VycyB3aWxsIGJlIGFibGUgdG8gZGVyaXZlCi0gIHRoZSBleHBlY3RlZCBiZWhhdmlvdXIgZnJvbSB0aGUgYmVoYXZpb3VyIG9mIHRoZSBjb3JyZXNwb25kaW5nIHN0ciBtZXRob2RzLgotCi1XaW5kb3dzCi0tLS0tLS0tCi0KLS0gSXNzdWUgIzIxNjcxLCAjMjIxNjAsIENWRS0yMDE0LTAyMjQ6IFRoZSBidW5kbGVkIHZlcnNpb24gb2YgT3BlblNTTCBoYXMgYmVlbgotICB1cGRhdGVkIHRvIDEuMC4xaS4KLQotLSBJc3N1ZSAjMTA3NDc6IFVzZSB2ZXJzaW9uZWQgbGFiZWxzIGluIHRoZSBXaW5kb3dzIHN0YXJ0IG1lbnUuCi0gIFBhdGNoIGJ5IE9saXZlIEtpbGJ1cm4uCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMjIwMTogQ29tbWFuZC1saW5lIGludGVyZmFjZSBvZiB0aGUgemlwZmlsZSBtb2R1bGUgbm93IGNvcnJlY3RseQotICBleHRyYWN0cyBaSVAgZmlsZXMgd2l0aCBkaXJlY3RvcnkgZW50cmllcy4gIFBhdGNoIGJ5IFJ5YW4gV2lsc29uLgotCi0tIElzc3VlICMyMTkwNjogTWFrZSBUb29scy9zY3JpcHRzL21kNXN1bS5weSB3b3JrIGluIFB5dGhvbiAzLgotICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCi0KLS0gSXNzdWUgIzIxNjI5OiBGaXggQXJndW1lbnQgQ2xpbmljJ3MgIi0tY29udmVydGVycyIgZmVhdHVyZS4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjQuMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1SZWxlYXNlIGRhdGU6IDIwMTQtMDUtMTgKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzIxNDE4OiBGaXggYSBjcmFzaCBpbiB0aGUgYnVpbHRpbiBmdW5jdGlvbiBzdXBlcigpIHdoZW4gY2FsbGVkIHdpdGhvdXQKLSAgYXJndW1lbnQgYW5kIHdpdGhvdXQgY3VycmVudCBmcmFtZSAoZXg6IGVtYmVkZGVkIFB5dGhvbikuCi0KLS0gSXNzdWUgIzIxNDI1OiBGaXggZmx1c2hpbmcgb2Ygc3RhbmRhcmQgc3RyZWFtcyBpbiB0aGUgaW50ZXJhY3RpdmUKLSAgaW50ZXJwcmV0ZXIuCi0KLS0gSXNzdWUgIzIxNDM1OiBJbiByYXJlIGNhc2VzLCB3aGVuIHJ1bm5pbmcgZmluYWxpemVycyBvbiBvYmplY3RzIGluIGN5Y2xpYwotICB0cmFzaCBhIGJhZCBwb2ludGVyIGRlcmVmZXJlbmNlIGNvdWxkIG9jY3VyIGR1ZSB0byBhIHN1YnRsZSBmbGF3IGluCi0gIGludGVybmFsIGl0ZXJhdGlvbiBsb2dpYy4KLQotTGlicmFyeQotLS0tLS0tLQotCiAtIElzc3VlICMxMDc0NDogRml4IFBFUCAzMTE4IGZvcm1hdCBzdHJpbmdzIG9uIGN0eXBlcyBvYmplY3RzIHdpdGggYSBub250cml2aWFsCiAgIHNoYXBlLgogCistIElzc3VlICMyMDgyNjogT3B0aW1pemUgaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcygpLgorCistIElzc3VlICMyMTQ4NzogT3B0aW1pemUgaXBhZGRyZXNzLnN1bW1hcml6ZV9hZGRyZXNzX3JhbmdlKCkgYW5kCisgIGlwYWRkcmVzcy57SVB2NE5ldHdvcmssSVB2Nk5ldHdvcmt9LnN1Ym5ldHMoKS4KKworLSBJc3N1ZSAjMjE0ODY6IE9wdGltaXplIHBhcnNpbmcgb2YgbmV0bWFza3MgaW4gaXBhZGRyZXNzLklQdjROZXR3b3JrIGFuZAorICBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsuCisKKy0gSXNzdWUgIzEzOTE2OiBEaXNhbGxvd2VkIHRoZSBzdXJyb2dhdGVwYXNzIGVycm9yIGhhbmRsZXIgZm9yIG5vbiBVVEYtXCoKKyAgZW5jb2RpbmdzLgorCiAtIElzc3VlICMyMDk5ODogRml4ZWQgcmUuZnVsbG1hdGNoKCkgb2YgcmVwZWF0ZWQgc2luZ2xlIGNoYXJhY3RlciBwYXR0ZXJuCiAgIHdpdGggaWdub3JlIGNhc2UuICBPcmlnaW5hbCBwYXRjaCBieSBNYXR0aGV3IEJhcm5ldHQuCiAKIC0gSXNzdWUgIzIxMDc1OiBmaWxlaW5wdXQuRmlsZUlucHV0IG5vdyByZWFkcyBieXRlcyBmcm9tIHN0YW5kYXJkIHN0cmVhbSBpZgogICBiaW5hcnkgbW9kZSBpcyBzcGVjaWZpZWQuICBQYXRjaCBieSBTYW0gS2ltYnJlbC4KIAotLSBJc3N1ZSAjMjEzOTY6IEZpeCBUZXh0SU9XcmFwcGVyKC4uLiwgd3JpdGVfdGhyb3VnaD1UcnVlKSB0byBub3QgZm9yY2UgYQotICBmbHVzaCgpIG9uIHRoZSB1bmRlcmx5aW5nIGJpbmFyeSBzdHJlYW0uICBQYXRjaCBieSBha2lyYS4KKy0gSXNzdWUgIzE5Nzc1OiBBZGQgYSBzYW1lZmlsZSgpIG1ldGhvZCB0byBwYXRobGliIFBhdGggb2JqZWN0cy4gIEluaXRpYWwKKyAgcGF0Y2ggYnkgVmFqcmFza3kgS29rLgogCi0tIElzc3VlICMyMTQ3MDogRG8gYSBiZXR0ZXIgam9iIHNlZWRpbmcgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGJ5Ci0gIHVzaW5nIGVub3VnaCBieXRlcyB0byBzcGFuIHRoZSBmdWxsIHN0YXRlIHNwYWNlIG9mIHRoZSBNZXJzZW5uZSBUd2lzdGVyLgorLSBJc3N1ZSAjMjEyMjY6IFNldCB1cCBtb2R1bGVzIHByb3Blcmx5IGluIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0CisgIChhbmQgZnJpZW5kcykuCiAKIC0gSXNzdWUgIzIxMzk4OiBGaXggYW4gdW5pY29kZSBlcnJvciBpbiB0aGUgcHlkb2MgcGFnZXIgd2hlbiB0aGUgZG9jdW1lbnRhdGlvbgogICBjb250YWlucyBjaGFyYWN0ZXJzIG5vdCBlbmNvZGFibGUgdG8gdGhlIHN0ZG91dCBlbmNvZGluZy4KIAotVGVzdHMKLS0tLS0tCistIElzc3VlICMxNjUzMTogaXBhZGRyZXNzLklQdjROZXR3b3JrIGFuZCBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsgbm93IGFjY2VwdAorICBhbiAoYWRkcmVzcywgbmV0bWFzaykgdHVwbGUgYXJndW1lbnQsIHNvIGFzIHRvIGVhc2lseSBjb25zdHJ1Y3QgbmV0d29yaworICBvYmplY3RzIGZyb20gZXhpc3RpbmcgYWRkcmVzc2VzLgogCi0tIElzc3VlICMxNzc1NjogRml4IHRlc3RfY29kZSB0ZXN0IHdoZW4gcnVuIGZyb20gdGhlIGluc3RhbGxlZCBsb2NhdGlvbi4KKy0gSXNzdWUgIzIxMTU2OiBpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXIuc291cmNlX3RvX2NvZGUoKSBpcyBub3cgYQorICBzdGF0aWNtZXRob2QuCiAKLS0gSXNzdWUgIzE3NzUyOiBGaXggZGlzdHV0aWxzIHRlc3RzIHdoZW4gcnVuIGZyb20gdGhlIGluc3RhbGxlZCBsb2NhdGlvbi4KKy0gSXNzdWUgIzIxNDI0OiBTaW1wbGlmaWVkIGFuZCBvcHRpbWl6ZWQgaGVhcXAubmxhcmdlc3QoKSBhbmQgbm1zbWFsbGVzdCgpCisgIHRvIG1ha2UgZmV3ZXIgdHVwbGUgY29tcGFyaXNvbnMuCiAKLUlETEUKLS0tLS0KKy0gSXNzdWUgIzIxMzk2OiBGaXggVGV4dElPV3JhcHBlciguLi4sIHdyaXRlX3Rocm91Z2g9VHJ1ZSkgdG8gbm90IGZvcmNlIGEKKyAgZmx1c2goKSBvbiB0aGUgdW5kZXJseWluZyBiaW5hcnkgc3RyZWFtLiAgUGF0Y2ggYnkgYWtpcmEuCiAKLS0gSXNzdWUgIzE4MTA0OiBBZGQgaWRsZWxpYi9pZGxlX3Rlc3QvaHRlc3QucHkgd2l0aCBhIGZldyBzYW1wbGUgdGVzdHMgdG8gYmVnaW4KLSAgY29uc29saWRhdGluZyBhbmQgaW1wcm92aW5nIGh1bWFuLXZhbGlkYXRlZCB0ZXN0cyBvZiBJZGxlLiBDaGFuZ2Ugb3RoZXIgZmlsZXMKLSAgYXMgbmVlZGVkIHRvIHdvcmsgd2l0aCBodGVzdC4gIFJ1bm5pbmcgdGhlIG1vZHVsZSBhcyBfX21haW5fXyBydW5zIGFsbCB0ZXN0cy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjQuMXJjMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1SZWxlYXNlIGRhdGU6IDIwMTQtMDUtMDUKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzIxMjc0OiBEZWZpbmUgUEFUSF9NQVggZm9yIEdOVS9IdXJkIGluIFB5dGhvbi9weXRob25ydW4uYy4KLQotLSBJc3N1ZSAjMjEyMDk6IEZpeCBzZW5kaW5nIHR1cGxlcyB0byBjdXN0b20gZ2VuZXJhdG9yIG9iamVjdHMgd2l0aCB0aGUgeWllbGQKLSAgZnJvbSBzeW50YXguCi0KLS0gSXNzdWUgIzIxMTM0OiBGaXggc2VnZmF1bHQgd2hlbiBzdHIgaXMgY2FsbGVkIG9uIGFuIHVuaW5pdGlhbGl6ZWQKLSAgVW5pY29kZUVuY29kZUVycm9yLCBVbmljb2RlRGVjb2RlRXJyb3IsIG9yIFVuaWNvZGVUcmFuc2xhdGVFcnJvciBvYmplY3QuCi0KLS0gSXNzdWUgIzE5NTM3OiBGaXggUHlVbmljb2RlX0RBVEEoKSBhbGlnbm1lbnQgdW5kZXIgbTY4ay4gIFBhdGNoIGJ5Ci0gIEFuZHJlYXMgU2Nod2FiLgotCi0tIElzc3VlICMyMDkyOTogQWRkIGEgdHlwZSBjYXN0IHRvIGF2b2lkIHNoaWZ0aW5nIGEgbmVnYXRpdmUgbnVtYmVyLgotCi0tIElzc3VlICMyMDczMTogUHJvcGVybHkgcG9zaXRpb24gaW4gc291cmNlIGNvZGUgZmlsZXMgZXZlbiBpZiB0aGV5Ci0gIGFyZSBvcGVuZWQgaW4gdGV4dCBtb2RlLiBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMyMDYzNzogS2V5LXNoYXJpbmcgbm93IGFsc28gd29ya3MgZm9yIGluc3RhbmNlIGRpY3Rpb25hcmllcyBvZgotICBzdWJjbGFzc2VzLiAgUGF0Y2ggYnkgUGV0ZXIgSW5nZWJyZXRzb24uCi0KLS0gSXNzdWUgIzEyNTQ2OiBBbGxvdyBgYFx4MDBgYCB0byBiZSB1c2VkIGFzIGEgZmlsbCBjaGFyYWN0ZXIgd2hlbiB1c2luZyBzdHIsIGludCwKLSAgZmxvYXQsIGFuZCBjb21wbGV4IF9fZm9ybWF0X18gbWV0aG9kcy4KLQotLSBJc3N1ZSAjMTM1OTg6IE1vZGlmeSBzdHJpbmcuRm9ybWF0dGVyIHRvIHN1cHBvcnQgYXV0by1udW1iZXJpbmcgb2YKLSAgcmVwbGFjZW1lbnQgZmllbGRzLiBJdCBub3cgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2Ygc3RyLmZvcm1hdCgpIGluCi0gIHRoaXMgcmVnYXJkLiBQYXRjaGVzIGJ5IFBoaWwgRWxzb24gYW5kIFJhbWNoYW5kcmEgQXB0ZS4KLQotTGlicmFyeQotLS0tLS0tLQorLSBJc3N1ZSAjMTgzMTQ6IFVubGluayBub3cgcmVtb3ZlcyBqdW5jdGlvbnMgb24gV2luZG93cy4gUGF0Y2ggYnkgS2ltIEdyw6RzbWFuCiAKIC0gSXNzdWUgIzIxMDg4OiBCdWdmaXggZm9yIGN1cnNlcy53aW5kb3cuYWRkY2goKSByZWdyZXNzaW9uIGluIDMuNC4wLgogICBJbiBwb3J0aW5nIHRvIEFyZ3VtZW50IENsaW5pYywgdGhlIGZpcnN0IHR3byBhcmd1bWVudHMgd2VyZSByZXZlcnNlZC4KIAorLSBJc3N1ZSAjMjE0MDc6IF9kZWNpbWFsOiBUaGUgbW9kdWxlIG5vdyBzdXBwb3J0cyBmdW5jdGlvbiBzaWduYXR1cmVzLgorCistIElzc3VlICMxMDY1MDogUmVtb3ZlIHRoZSBub24tc3RhbmRhcmQgJ3dhdGNoZXhwJyBwYXJhbWV0ZXIgZnJvbSB0aGUKKyAgRGVjaW1hbC5xdWFudGl6ZSgpIG1ldGhvZCBpbiB0aGUgUHl0aG9uIHZlcnNpb24uICBJdCBoYWQgbmV2ZXIgYmVlbgorICBwcmVzZW50IGluIHRoZSBDIHZlcnNpb24uCisKIC0gSXNzdWUgIzIxNDY5OiBSZWR1Y2VkIHRoZSByaXNrIG9mIGZhbHNlIHBvc2l0aXZlcyBpbiByb2JvdHBhcnNlciBieQogICBjaGVja2luZyB0byBtYWtlIHN1cmUgdGhhdCByb2JvdHMudHh0IGhhcyBiZWVuIHJlYWQgb3IgZG9lcyBub3QgZXhpc3QKICAgcHJpb3IgdG8gcmV0dXJuaW5nIFRydWUgaW4gY2FuX2ZldGNoKCkuCiAKKy0gSXNzdWUgIzE5NDE0OiBIYXZlIHRoZSBPcmRlcmVkRGljdCBtYXJrIGRlbGV0ZWQgbGlua3MgYXMgdW51c2FibGUuCisgIFRoaXMgZ2l2ZXMgYW4gZWFybHkgZmFpbHVyZSBpZiB0aGUgbGluayBpcyBkZWxldGVkIGR1cmluZyBpdGVyYXRpb24uCisKKy0gSXNzdWUgIzIxNDIxOiBBZGQgX19zbG90c19fIHRvIHRoZSBNYXBwaW5nVmlld3MgQUJDLgorICBQYXRjaCBieSBKb3NoIFJvc2VuYmVyZy4KKworLSBJc3N1ZSAjMjExMDE6IEVsaW1pbmF0ZSBkb3VibGUgaGFzaGluZyBpbiB0aGUgQyBzcGVlZC11cCBjb2RlIGZvcgorICBjb2xsZWN0aW9ucy5Db3VudGVyKCkuCisKIC0gSXNzdWUgIzIxMzIxOiBpdGVydG9vbHMuaXNsaWNlKCkgbm93IHJlbGVhc2VzIHRoZSByZWZlcmVuY2UgdG8gdGhlIHNvdXJjZQogICBpdGVyYXRvciB3aGVuIHRoZSBzbGljZSBpcyBleGhhdXN0ZWQuICBQYXRjaCBieSBBbnRvbiBBZmFuYXN5ZXYuCiAKKy0gSXNzdWUgIzIxMDU3OiBUZXh0SU9XcmFwcGVyIG5vdyBhbGxvd3MgdGhlIHVuZGVybHlpbmcgYmluYXJ5IHN0cmVhbSdzCisgIHJlYWQoKSBvciByZWFkMSgpIG1ldGhvZCB0byByZXR1cm4gYW4gYXJiaXRyYXJ5IGJ5dGVzLWxpa2Ugb2JqZWN0CisgIChzdWNoIGFzIGEgbWVtb3J5dmlldykuICBQYXRjaCBieSBOaWtvbGF1cyBSYXRoLgorCistIElzc3VlICMyMDk1MTogU1NMU29ja2V0LnNlbmQoKSBub3cgcmFpc2VzIGVpdGhlciBTU0xXYW50UmVhZEVycm9yIG9yCisgIFNTTFdhbnRXcml0ZUVycm9yIG9uIGEgbm9uLWJsb2NraW5nIHNvY2tldCBpZiB0aGUgb3BlcmF0aW9uIHdvdWxkIGJsb2NrLgorICBQcmV2aW91c2x5LCBpdCB3b3VsZCByZXR1cm4gMC4gIFBhdGNoIGJ5IE5pa29sYXVzIFJhdGguCisKKy0gSXNzdWUgIzEzMjQ4OiByZW1vdmVkIHByZXZpb3VzbHkgZGVwcmVjYXRlZCBhc3luY29yZS5kaXNwYXRjaGVyIF9fZ2V0YXR0cl9fCisgIGNoZWFwIGluaGVyaXRhbmNlIGhhY2suCisKIC0gSXNzdWUgIzk4MTU6IGFzc2VydFJhaXNlcyBub3cgdHJpZXMgdG8gY2xlYXIgcmVmZXJlbmNlcyB0byBsb2NhbCB2YXJpYWJsZXMKICAgaW4gdGhlIGV4Y2VwdGlvbidzIHRyYWNlYmFjay4KIAorLSBJc3N1ZSAjMTk5NDA6IHNzbC5jZXJ0X3RpbWVfdG9fc2Vjb25kcygpIG5vdyBpbnRlcnByZXRzIHRoZSBnaXZlbiB0aW1lCisgIHN0cmluZyBpbiB0aGUgVVRDIHRpbWV6b25lIChhcyBzcGVjaWZpZWQgaW4gUkZDIDUyODApLCBub3QgdGhlIGxvY2FsCisgIHRpbWV6b25lLgorCiAtIElzc3VlICMxMzIwNDogQ2FsbGluZyBzeXMuZmxhZ3MuX19uZXdfXyB3b3VsZCBjcmFzaCB0aGUgaW50ZXJwcmV0ZXIsCiAgIG5vdyBpdCByYWlzZXMgYSBUeXBlRXJyb3IuCiAKQEAgLTE4NjksOSArMzExOCwyNSBAQAogLSBJc3N1ZSAjMTIyMjA6IG1pbmRvbSBub3cgcmFpc2VzIGEgY3VzdG9tIFZhbHVlRXJyb3IgaW5kaWNhdGluZyBpdCBkb2Vzbid0CiAgIHN1cHBvcnQgc3BhY2VzIGluIFVSSXMgaW5zdGVhZCBvZiBsZXR0aW5nIGEgJ3NwbGl0JyBWYWx1ZUVycm9yIGJ1YmJsZSB1cC4KIAorLSBJc3N1ZSAjMjEwNjg6IFRoZSBzc2wuUFJPVE9DT0wqIGNvbnN0YW50cyBhcmUgbm93IGVudW0gbWVtYmVycy4KKworLSBJc3N1ZSAjMjEyNzY6IHBvc2l4bW9kdWxlOiBEb24ndCBkZWZpbmUgVVNFX1hBVFRSUyBvbiBLRnJlZUJTRCBhbmQgdGhlIEh1cmQuCisKKy0gSXNzdWUgIzIxMjYyOiBOZXcgbWV0aG9kIGFzc2VydF9ub3RfY2FsbGVkIGZvciBNb2NrLgorICBJdCByYWlzZXMgQXNzZXJ0aW9uRXJyb3IgaWYgdGhlIG1vY2sgaGFzIGJlZW4gY2FsbGVkLgorCistIElzc3VlICMyMTIzODogTmV3IGtleXdvcmQgYXJndW1lbnQgYHVuc2FmZWAgdG8gTW9jay4gSXQgcmFpc2VzCisgIGBBdHRyaWJ1dGVFcnJvcmAgaW5jYXNlIG9mIGFuIGF0dHJpYnV0ZSBzdGFydHN3aXRoIGFzc2VydCBvciBhc3NyZXQuCisKKy0gSXNzdWUgIzIwODk2OiBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgpIG5vdyB1c2VzIFBST1RPQ09MX1NTTHYyMywgbm90CisgIFBST1RPQ09MX1NTTHYzLCBmb3IgbWF4aW11bSBjb21wYXRpYmlsaXR5LgorCiAtIElzc3VlICMyMTIzOTogcGF0Y2guc3RvcGFsbCgpIGRpZG4ndCB3b3JrIGRldGVybWluaXN0aWNhbGx5IHdoZW4gdGhlIHNhbWUKICAgbmFtZSB3YXMgcGF0Y2hlZCBtb3JlIHRoYW4gb25jZS4KIAorLSBJc3N1ZSAjMjEyMDM6IFVwZGF0ZWQgZmlsZUNvbmZpZyBhbmQgZGljdENvbmZpZyB0byByZW1vdmUgaW5jb25zaXN0ZW5jaWVzLgorICBUaGFua3MgdG8gSnVyZSBLb3JlbiBmb3IgdGhlIHBhdGNoLgorCiAtIElzc3VlICMyMTIyMjogUGFzc2luZyBuYW1lIGtleXdvcmQgYXJndW1lbnQgdG8gbW9jay5jcmVhdGVfYXV0b3NwZWMgbm93CiAgIHdvcmtzLgogCkBAIC0xOTAyLDE3ICszMTY3LDMxIEBACiAtIElzc3VlICMyMTE3MTogRml4ZWQgdW5kb2N1bWVudGVkIGZpbHRlciBBUEkgb2YgdGhlIHJvdDEzIGNvZGVjLgogICBQYXRjaCBieSBCZXJrZXIgUGVrc2FnLgogCistIElzc3VlICMyMDUzOTogSW1wcm92ZWQgbWF0aC5mYWN0b3JpYWwgZXJyb3IgbWVzc2FnZSBmb3IgbGFyZ2UgcG9zaXRpdmUgaW5wdXRzCisgIGFuZCBjaGFuZ2VkIGV4Y2VwdGlvbiB0eXBlIChPdmVyZmxvd0Vycm9yIC0+IFZhbHVlRXJyb3IpIGZvciBsYXJnZSBuZWdhdGl2ZQorICBpbnB1dHMuCisKIC0gSXNzdWUgIzIxMTcyOiBpc2luc3RhbmNlIGNoZWNrIHJlbGF4ZWQgZnJvbSBkaWN0IHRvIGNvbGxlY3Rpb25zLk1hcHBpbmcuCiAKIC0gSXNzdWUgIzIxMTU1OiBhc3luY2lvLkV2ZW50TG9vcC5jcmVhdGVfdW5peF9zZXJ2ZXIoKSBub3cgcmFpc2VzIGEgVmFsdWVFcnJvcgogICBpZiBwYXRoIGFuZCBzb2NrIGFyZSBzcGVjaWZpZWQgYXQgdGhlIHNhbWUgdGltZS4KIAorLSBJc3N1ZSAjMjExMzY6IEF2b2lkIHVubmVjZXNzYXJ5IG5vcm1hbGl6YXRpb24gb2YgRnJhY3Rpb25zIHJlc3VsdGluZyBmcm9tCisgIHBvd2VyIGFuZCBvdGhlciBvcGVyYXRpb25zLiAgUGF0Y2ggYnkgUmF5bW9uZCBIZXR0aW5nZXIuCisKKy0gSXNzdWUgIzE3NjIxOiBJbnRyb2R1Y2UgaW1wb3J0bGliLnV0aWwuTGF6eUxvYWRlci4KKworLSBJc3N1ZSAjMjEwNzY6IHNpZ25hbCBtb2R1bGUgY29uc3RhbnRzIHdlcmUgdHVybmVkIGludG8gZW51bXMuCisgIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbGEnLgorCistIElzc3VlICMyMDYzNjogSW1wcm92ZWQgdGhlIHJlcHIgb2YgVGtpbnRlciB3aWRnZXRzLgorCistIElzc3VlICMxOTUwNTogVGhlIGl0ZW1zLCBrZXlzLCBhbmQgdmFsdWVzIHZpZXdzIG9mIE9yZGVyZWREaWN0IG5vdyBzdXBwb3J0CisgIHJldmVyc2UgaXRlcmF0aW9uIHVzaW5nIHJldmVyc2VkKCkuCisKIC0gSXNzdWUgIzIxMTQ5OiBJbXByb3ZlZCB0aHJlYWQtc2FmZXR5IGluIGxvZ2dpbmcgY2xlYW51cCBkdXJpbmcgaW50ZXJwcmV0ZXIKICAgc2h1dGRvd24uIFRoYW5rcyB0byBEZXZpbiBKZWFucGllcnJlIGZvciB0aGUgcGF0Y2guCiAKLS0gSXNzdWUgIzIwMTQ1OiBgYXNzZXJ0UmFpc2VzUmVnZXhgIGFuZCBgYXNzZXJ0V2FybnNSZWdleGAgbm93IHJhaXNlIGEKLSAgVHlwZUVycm9yIGlmIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbm90IGEgc3RyaW5nIG9yIGNvbXBpbGVkIHJlZ2V4LgotCiAtIElzc3VlICMyMTA1ODogRml4IGEgbGVhayBvZiBmaWxlIGRlc2NyaXB0b3IgaW4KICAgOmZ1bmM6YHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZWAsIGNsb3NlIHRoZSBmaWxlIGRlc2NyaXB0b3IgaWYKICAgOmZ1bmM6YGlvLm9wZW5gIGZhaWxzCkBAIC0xOTIyLDYgKzMyMDEsOSBAQAogLSBJc3N1ZSAjMjEwMTM6IEVuaGFuY2Ugc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKSB3aGVuIHVzZWQgZm9yIHNlcnZlciBzaWRlCiAgIHNvY2tldHMgdG8gcHJvdmlkZSBiZXR0ZXIgc2VjdXJpdHkgYnkgZGVmYXVsdC4KIAorLSBJc3N1ZSAjMjAxNDU6IGBhc3NlcnRSYWlzZXNSZWdleGAgYW5kIGBhc3NlcnRXYXJuc1JlZ2V4YCBub3cgcmFpc2UgYQorICBUeXBlRXJyb3IgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBub3QgYSBzdHJpbmcgb3IgY29tcGlsZWQgcmVnZXguCisKIC0gSXNzdWUgIzIwNjMzOiBSZXBsYWNlIHJlbGF0aXZlIGltcG9ydCBieSBhYnNvbHV0ZSBpbXBvcnQuCiAKIC0gSXNzdWUgIzIwOTgwOiBTdG9wIHdyYXBwaW5nIGV4Y2VwdGlvbiB3aGVuIHVzaW5nIFRocmVhZFBvb2wuCkBAIC0xOTM1LDYgKzMyMTcsOCBAQAogICBjdXJ2ZSBmb3IgRUNESCBrZXkgZXhjaGFuZ2Ugb24gT3BlblNTTCAxLjAuMiBhbmQgbGF0ZXIsIGFuZCBvdGhlcndpc2UKICAgZGVmYXVsdCB0byAicHJpbWUyNTZ2MSIuCiAKKy0gSXNzdWUgIzIxMDAwOiBJbXByb3ZlIHRoZSBjb21tYW5kLWxpbmUgaW50ZXJmYWNlIG9mIGpzb24udG9vbC4KKwogLSBJc3N1ZSAjMjA5OTU6IEVuaGFuY2UgZGVmYXVsdCBjaXBoZXJzIHVzZWQgYnkgdGhlIHNzbCBtb2R1bGUgdG8gZW5hYmxlCiAgIGJldHRlciBzZWN1cml0eSBhbiBwcmlvcml0aXplIHBlcmZlY3QgZm9yd2FyZCBzZWNyZWN5LgogCkBAIC0xOTQyLDYgKzMyMjYsMjQgQEAKIAogLSBJc3N1ZSAjMjE0OTk6IElnbm9yZSBfX2J1aWx0aW5zX18gaW4gc2V2ZXJhbCB0ZXN0X2ltcG9ydGxpYi50ZXN0X2FwaSB0ZXN0cy4KIAorLSBJc3N1ZSAjMjA2Mjc6IHhtbHJwYy5jbGllbnQuU2VydmVyUHJveHkgaXMgbm93IGEgY29udGV4dCBtYW5hZ2VyLgorCistIElzc3VlICMxOTE2NTogVGhlIGZvcm1hdHRlciBtb2R1bGUgbm93IHJhaXNlcyBEZXByZWNhdGlvbldhcm5pbmcgaW5zdGVhZCBvZgorICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLgorCistIElzc3VlICMxMzkzNjogUmVtb3ZlIHRoZSBhYmlsaXR5IG9mIGRhdGV0aW1lLnRpbWUgaW5zdGFuY2VzIHRvIGJlIGNvbnNpZGVyZWQKKyAgZmFsc2UgaW4gYm9vbGVhbiBjb250ZXh0cy4KKworLSBJc3N1ZSAjMTg5MzE6IHNlbGVjdG9ycyBtb2R1bGUgbm93IHN1cHBvcnRzIC9kZXYvcG9sbCBvbiBTb2xhcmlzLgorICBQYXRjaCBieSBHaWFtcGFvbG8gUm9kb2xhJy4KKworLSBJc3N1ZSAjMTk5Nzc6IFdoZW4gdGhlIGBgTENfVFlQRWBgIGxvY2FsZSBpcyB0aGUgUE9TSVggbG9jYWxlIChgYENgYCBsb2NhbGUpLAorICA6cHk6ZGF0YTpgc3lzLnN0ZGluYCBhbmQgOnB5OmRhdGE6YHN5cy5zdGRvdXRgIGFyZSBub3cgdXNpbmcgdGhlCisgIGBgc3Vycm9nYXRlZXNjYXBlYGAgZXJyb3IgaGFuZGxlciwgaW5zdGVhZCBvZiB0aGUgYGBzdHJpY3RgYCBlcnJvciBoYW5kbGVyLgorCistIElzc3VlICMyMDU3NDogSW1wbGVtZW50IGluY3JlbWVudGFsIGRlY29kZXIgZm9yIGNwNjUwMDEgY29kZSAoV2luZG93cyBjb2RlCisgIHBhZ2UgNjUwMDEsIE1pY3Jvc29mdCBVVEYtOCkuCisKIC0gSXNzdWUgIzIwODc5OiBEZWxheSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHRhYmxlcyBmb3IKICAgYmFzZTMyLCBhc2NpaTg1IGFuZCBiYXNlODUgY29kZWNzIGluIHRoZSBiYXNlNjQgbW9kdWxlLCBhbmQgZGVsYXkgdGhlCiAgIGluaXRpYWxpemF0aW9uIG9mIHRoZSB1bnF1b3RlX3RvX2J5dGVzKCkgdGFibGUgb2YgdGhlIHVybGxpYi5wYXJzZSBtb2R1bGUsIHRvCkBAIC0xOTc2LDYgKzMyNzgsMTQgQEAKIC0gSXNzdWUgIzE5NzQ4OiBPbiBBSVgsIHRpbWUubWt0aW1lKCkgbm93IHJhaXNlcyBhbiBPdmVyZmxvd0Vycm9yIGZvciB5ZWFyCiAgIG91dHNpemUgcmFuZ2UgWzE5MDI7IDIwMzddLgogCistIElzc3VlICMxOTU3MzogaW5zcGVjdC5zaWduYXR1cmU6IFVzZSBlbnVtIGZvciBwYXJhbWV0ZXIga2luZCBjb25zdGFudHMuCisKKy0gSXNzdWUgIzIwNzI2OiBpbnNwZWN0LnNpZ25hdHVyZTogTWFrZSBTaWduYXR1cmUgYW5kIFBhcmFtZXRlciBwaWNrbGFibGUuCisKKy0gSXNzdWUgIzE3MzczOiBBZGQgaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9jYWxsYWJsZSBtZXRob2QuCisKKy0gSXNzdWUgIzIwMzc4OiBJbXByb3ZlIHJlcHIgb2YgaW5zcGVjdC5TaWduYXR1cmUgYW5kIGluc3BlY3QuUGFyYW1ldGVyLgorCiAtIElzc3VlICMyMDgxNjogRml4IGluc3BlY3QuZ2V0Y2FsbGFyZ3MoKSB0byByYWlzZSBjb3JyZWN0IFR5cGVFcnJvciBmb3IKICAgbWlzc2luZyBrZXl3b3JkLW9ubHkgYXJndW1lbnRzLiBQYXRjaCBieSBKZXJlbWlhaCBMb3dpbi4KIApAQCAtMTk5Miw2ICszMzAyLDEyIEBACiAgIHBvc2l0aW9uYWwtb3Ita2V5d29yZCBhcmd1bWVudHMgcGFzc2VkIGFzIGtleXdvcmQgYXJndW1lbnRzIGJlY29tZQogICBrZXl3b3JkLW9ubHkuCiAKKy0gSXNzdWUgIzIwMzM0OiBpbnNwZWN0LlNpZ25hdHVyZSBhbmQgaW5zcGVjdC5QYXJhbWV0ZXIgYXJlIG5vdyBoYXNoYWJsZS4KKyAgVGhhbmtzIHRvIEFudG9ueSBMZWUgZm9yIGJ1ZyByZXBvcnRzIGFuZCBzdWdnZXN0aW9ucy4KKworLSBJc3N1ZSAjMTU5MTY6IGRvY3Rlc3QuRG9jVGVzdFN1aXRlIHJldHVybnMgYW4gZW1wdHkgdW5pdHRlc3QuVGVzdFN1aXRlIGluc3RlYWQKKyAgb2YgcmFpc2luZyBWYWx1ZUVycm9yIGlmIGl0IGZpbmRzIG5vIHRlc3RzCisKIC0gSXNzdWUgIzIxMjA5OiBGaXggYXN5bmNpby50YXNrcy5Db3JvV3JhcHBlciB0byB3b3JrYXJvdW5kIGEgYnVnCiAgIGluIHlpZWxkLWZyb20gaW1wbGVtZW50YXRpb24gaW4gQ1B5dGhvbnMgcHJpb3IgdG8gMy40LjEuCiAKQEAgLTIwMDQsMTcgKzMzMjAsOTAgQEAKIC0gSXNzdWUgIzExNTcxOiBFbnN1cmUgdGhhdCB0aGUgdHVydGxlIHdpbmRvdyBiZWNvbWVzIHRoZSB0b3Btb3N0IHdpbmRvdwogICB3aGVuIGxhdW5jaGVkIG9uIE9TIFguCiAKLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQorLSBJc3N1ZSAjMjE4MDE6IFZhbGlkYXRlIHRoYXQgX19zaWduYXR1cmVfXyBpcyBOb25lIG9yIGFuIGluc3RhbmNlIG9mIFNpZ25hdHVyZS4KIAotLSBJc3N1ZSAjMjEyNzY6IHBvc2l4bW9kdWxlOiBEb24ndCBkZWZpbmUgVVNFX1hBVFRSUyBvbiBLRnJlZUJTRCBhbmQgdGhlIEh1cmQuCistIElzc3VlICMyMTkyMzogUHJldmVudCBBdHRyaWJ1dGVFcnJvciBpbiBkaXN0dXRpbHMuc3lzY29uZmlnLmN1c3RvbWl6ZV9jb21waWxlcgorICBkdWUgdG8gcG9zc2libGUgdW5pbml0aWFsaXplZCBfY29uZmlnX3ZhcnMuCiAKLS0gSXNzdWUgIzIxMjI2OiBTZXQgdXAgbW9kdWxlcyBwcm9wZXJseSBpbiBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdAotICAoYW5kIGZyaWVuZHMpLgorLSBJc3N1ZSAjMjEzMjM6IEZpeCBodHRwLnNlcnZlciB0byBhZ2FpbiBoYW5kbGUgc2NyaXB0cyBpbiBDR0kgc3ViZGlyZWN0b3JpZXMsCisgIGJyb2tlbiBieSB0aGUgZml4IGZvciBzZWN1cml0eSBpc3N1ZSAjMTk0MzUuICBQYXRjaCBieSBaYWNoIEJ5cm5lLgorCistIElzc3VlICMyMjczMzogRml4IGZmaV9wcmVwX2FyZ3Mgbm90IHplcm8tZXh0ZW5kaW5nIGFyZ3VtZW50IHZhbHVlcyBjb3JyZWN0bHkKKyAgb24gNjQtYml0IFdpbmRvd3MuCisKKy0gSXNzdWUgIzIzMzAyOiBEZWZhdWx0IHRvIFRDUF9OT0RFTEFZPTEgdXBvbiBlc3RhYmxpc2hpbmcgYW4gSFRUUENvbm5lY3Rpb24uCisgIFJlbW92ZWQgdXNlIG9mIGhhcmQtY29kZWQgTVNTIGFzIGl0J3MgYW4gb3B0aW1pemF0aW9uIHRoYXQncyBubyBsb25nZXIgbmVlZGVkCisgIHdpdGggTmFnbGUgZGlzYWJsZWQuCiAKIElETEUKIC0tLS0KIAorLSBJc3N1ZSAjMjA1Nzc6IENvbmZpZ3VyYXRpb24gb2YgdGhlIG1heCBsaW5lIGxlbmd0aCBmb3IgdGhlIEZvcm1hdFBhcmFncmFwaAorICBleHRlbnNpb24gaGFzIGJlZW4gbW92ZWQgZnJvbSB0aGUgR2VuZXJhbCB0YWIgb2YgdGhlIElkbGUgcHJlZmVyZW5jZXMgZGlhbG9nCisgIHRvIHRoZSBGb3JtYXRQYXJhZ3JhcGggdGFiIG9mIHRoZSBDb25maWcgRXh0ZW5zaW9ucyBkaWFsb2cuCisgIFBhdGNoIGJ5IFRhbCBFaW5hdC4KKworLSBJc3N1ZSAjMTY4OTM6IFVwZGF0ZSBJZGxlIGRvYyBjaGFwdGVyIHRvIG1hdGNoIGN1cnJlbnQgSWRsZSBhbmQgYWRkIG5ldworICBpbmZvcm1hdGlvbi4KKworLSBJc3N1ZSAjMzA2ODogQWRkIElkbGUgZXh0ZW5zaW9uIGNvbmZpZ3VyYXRpb24gZGlhbG9nIHRvIE9wdGlvbnMgbWVudS4KKyAgQ2hhbmdlcyBhcmUgd3JpdHRlbiB0byBIT01FLy5pZGxlcmMvY29uZmlnLWV4dGVuc2lvbnMuY2ZnLgorICBPcmlnaW5hbCBwYXRjaCBieSBUYWwgRWluYXQuCisKKy0gSXNzdWUgIzE2MjMzOiBBIG1vZHVsZSBicm93c2VyIChGaWxlIDogQ2xhc3MgQnJvd3NlciwgQWx0K0MpIHJlcXVpcmVzIGFuCisgIGVkaXRvciB3aW5kb3cgd2l0aCBhIGZpbGVuYW1lLiAgV2hlbiBDbGFzcyBCcm93c2VyIGlzIHJlcXVlc3RlZCBvdGhlcndpc2UsCisgIGZyb20gYSBzaGVsbCwgb3V0cHV0IHdpbmRvdywgb3IgJ1VudGl0bGVkJyBlZGl0b3IsIElkbGUgbm8gbG9uZ2VyIGRpc3BsYXlzCisgIGFuIGVycm9yIGJveC4gIEl0IG5vdyBwb3BzIHVwIGFuIE9wZW4gTW9kdWxlIGJveCAoQWx0K00pLiBJZiBhIHZhbGlkIG5hbWUKKyAgaXMgZW50ZXJlZCBhbmQgYSBtb2R1bGUgaXMgb3BlbmVkLCBhIGNvcnJlc3BvbmRpbmcgYnJvd3NlciBpcyBhbHNvIG9wZW5lZC4KKworLSBJc3N1ZSAjNDgzMjogU2F2ZSBBcyB0byB0eXBlIFB5dGhvbiBmaWxlcyBhdXRvbWF0aWNhbGx5IGFkZHMgLnB5IHRvIHRoZQorICBuYW1lIHlvdSBlbnRlciAoZXZlbiBpZiB5b3VyIHN5c3RlbSBkb2VzIG5vdCBkaXNwbGF5IGl0KS4gIFNvbWUgc3lzdGVtcworICBhdXRvbWF0aWNhbGx5IGFkZCAudHh0IHdoZW4gdHlwZSBpcyBUZXh0IGZpbGVzLgorCistIElzc3VlICMyMTk4NjogQ29kZSBvYmplY3RzIGFyZSBub3Qgbm9ybWFsbHkgcGlja2xlZCBieSB0aGUgcGlja2xlIG1vZHVsZS4KKyAgVG8gbWF0Y2ggdGhpcywgdGhleSBhcmUgbm8gbG9uZ2VyIHBpY2tsZWQgd2hlbiBydW5uaW5nIHVuZGVyIElkbGUuCisKKy0gSXNzdWUgIzE3MzkwOiBBZGp1c3QgRWRpdG9yIHdpbmRvdyB0aXRsZTsgcmVtb3ZlICdQeXRob24nLAorICBtb3ZlIHZlcnNpb24gdG8gZW5kLgorCistIElzc3VlICMxNDEwNTogSWRsZSBkZWJ1Z2dlciBicmVha3BvaW50cyBubyBsb25nZXIgZGlzYXBwZWFyCisgIHdoZW4gaW5zZXRpbmcgb3IgZGVsZXRpbmcgbGluZXMuCisKKy0gSXNzdWUgIzE3MTcyOiBUdXJ0bGVkZW1vIGNhbiBub3cgYmUgcnVuIGZyb20gSWRsZS4KKyAgQ3VycmVudGx5LCB0aGUgZW50cnkgaXMgb24gdGhlIEhlbHAgbWVudSwgYnV0IGl0IG1heSBtb3ZlIHRvIFJ1bi4KKyAgUGF0Y2ggYnkgUmFtY2hhbmRyYSBBcHQgYW5kIExpdGEgQ2hvLgorCistIElzc3VlICMyMTc2NTogQWRkIHN1cHBvcnQgZm9yIG5vbi1hc2NpaSBpZGVudGlmaWVycyB0byBIeXBlclBhcnNlci4KKworLSBJc3N1ZSAjMjE5NDA6IEFkZCB1bml0dGVzdCBmb3IgV2lkZ2V0UmVkaXJlY3Rvci4gSW5pdGlhbCBwYXRjaCBieSBTYWltYWRoYXYKKyAgSGVibGlrYXIuCisKKy0gSXNzdWUgIzE4NTkyOiBBZGQgdW5pdHRlc3QgZm9yIFNlYXJjaERpYWxvZ0Jhc2UuIFBhdGNoIGJ5IFBoaWwgV2Vic3Rlci4KKworLSBJc3N1ZSAjMjE2OTQ6IEFkZCB1bml0dGVzdCBmb3IgUGFyZW5NYXRjaC4gUGF0Y2ggYnkgU2FpbWFkaGF2IEhlYmxpa2FyLgorCistIElzc3VlICMyMTY4NjogYWRkIHVuaXR0ZXN0IGZvciBIeXBlclBhcnNlci4gT3JpZ2luYWwgcGF0Y2ggYnkgU2FpbWFkaGF2CisgIEhlYmxpa2FyLgorCistIElzc3VlICMxMjM4NzogQWRkIG1pc3NpbmcgdXBwZXIobG93ZXIpY2FzZSB2ZXJzaW9ucyBvZiBkZWZhdWx0IFdpbmRvd3Mga2V5CisgIGJpbmRpbmdzIGZvciBJZGxlIHNvIENhcHMgTG9jayBkb2VzIG5vdCBkaXNhYmxlIHRoZW0uIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCistIElzc3VlICMyMTY5NTogQ2xvc2luZyBhIEZpbmQtaW4tZmlsZXMgb3V0cHV0IHdpbmRvdyB3aGlsZSB0aGUgc2VhcmNoIGlzCisgIHN0aWxsIGluIHByb2dyZXNzIG5vIGxvbmdlciBjbG9zZXMgSWRsZS4KKworLSBJc3N1ZSAjMTg5MTA6IEFkZCB1bml0dGVzdCBmb3IgdGV4dFZpZXcuIFBhdGNoIGJ5IFBoaWwgV2Vic3Rlci4KKworLSBJc3N1ZSAjMTgyOTI6IEFkZCB1bml0dGVzdCBmb3IgQXV0b0V4cGFuZC4gUGF0Y2ggYnkgU2FpaGFkaGF2IEhlYmxpa2FyLgorCistIElzc3VlICMxODQwOTogQWRkIHVuaXR0ZXN0IGZvciBBdXRvQ29tcGxldGUuIFBhdGNoIGJ5IFBoaWwgV2Vic3Rlci4KKworLSBJc3N1ZSAjMjE0Nzc6IGh0ZXN0LnB5IC0gSW1wcm92ZSBmcmFtZXdvcmssIGNvbXBsZXRlIHNldCBvZiB0ZXN0cy4KKyAgUGF0Y2hlcyBieSBTYWltYWRoYXYgSGVibGlrYXIKKworLSBJc3N1ZSAjMTgxMDQ6IEFkZCBpZGxlbGliL2lkbGVfdGVzdC9odGVzdC5weSB3aXRoIGEgZmV3IHNhbXBsZSB0ZXN0cyB0byBiZWdpbgorICBjb25zb2xpZGF0aW5nIGFuZCBpbXByb3ZpbmcgaHVtYW4tdmFsaWRhdGVkIHRlc3RzIG9mIElkbGUuIENoYW5nZSBvdGhlciBmaWxlcworICBhcyBuZWVkZWQgdG8gd29yayB3aXRoIGh0ZXN0LiAgUnVubmluZyB0aGUgbW9kdWxlIGFzIF9fbWFpbl9fIHJ1bnMgYWxsIHRlc3RzLgorCiAtIElzc3VlICMyMTEzOTogQ2hhbmdlIGRlZmF1bHQgcGFyYWdyYXBoIHdpZHRoIHRvIDcyLCB0aGUgUEVQIDggcmVjb21tZW5kYXRpb24uCiAKIC0gSXNzdWUgIzIxMjg0OiBQYXJhZ3JhcGggcmVmb3JtYXQgdGVzdCBwYXNzZXMgYWZ0ZXIgdXNlciBjaGFuZ2VzIHJlZm9ybWF0IHdpZHRoLgpAQCAtMjAyMiwxMCArMzQxMSw1MiBAQAogLSBJc3N1ZSAjMTc2NTQ6IEVuc3VyZSBJRExFIG1lbnVzIGFyZSBjdXN0b21pemVkIHByb3Blcmx5IG9uIE9TIFggZm9yCiAgIG5vbi1mcmFtZXdvcmsgYnVpbGRzIGFuZCBmb3IgYWxsIHZhcmlhbnRzIG9mIFRrLgogCistIElzc3VlICMyMzE4MDogUmVuYW1lIElETEUgIldpbmRvd3MiIG1lbnUgaXRlbSB0byAiV2luZG93Ii4KKyAgUGF0Y2ggYnkgQWwgU3dlaWdhcnQuCisKIEJ1aWxkCiAtLS0tLQogCi0tIFRoZSBXaW5kb3dzIGJ1aWxkIG5vdyBpbmNsdWRlcyBPcGVuU1NMIDEuMC4xZworLSBJc3N1ZSAjMTU1MDY6IFVzZSBzdGFuZGFyZCBQS0dfUFJPR19QS0dfQ09ORklHIGF1dG9jb25mIG1hY3JvIGluIHRoZSBjb25maWd1cmUKKyAgc2NyaXB0LgorCistIElzc3VlICMyMjkzNTogQWxsb3cgdGhlIHNzbCBtb2R1bGUgdG8gYmUgY29tcGlsZWQgaWYgb3BlbnNzbCBkb2Vzbid0IHN1cHBvcnQKKyAgU1NMIDMuCisKKy0gSXNzdWUgIzIyNTkyOiBEcm9wIHN1cHBvcnQgb2YgdGhlIEJvcmxhbmQgQyBjb21waWxlciB0byBidWlsZCBQeXRob24uIFRoZQorICBkaXN0dXRpbHMgbW9kdWxlIHN0aWxsIHN1cHBvcnRzIGl0IHRvIGJ1aWxkIGV4dGVuc2lvbnMuCisKKy0gSXNzdWUgIzIyNTkxOiBEcm9wIHN1cHBvcnQgb2YgTVMtRE9TLCBlc3BlY2lhbGx5IG9mIHRoZSBESkdQUCBjb21waWxlcgorICAoTVMtRE9TIHBvcnQgb2YgR0NDKS4KKworLSBJc3N1ZSAjMTY1Mzc6IENoZWNrIHdoZXRoZXIgc2VsZi5leHRlbnNpb25zIGlzIGVtcHR5IGluIHNldHVwLnB5LiBQYXRjaCBieQorICBKb25hdGhhbiBIb3NtZXIuCisKKy0gSXNzdWUgIzIyMzU5OiBSZW1vdmUgaW5jb3JyZWN0IHVzZXMgb2YgcmVjdXJzaXZlIG1ha2UuICBQYXRjaCBieSBKb25hcworICBXYWduZXIuCisKKy0gSXNzdWUgIzIxOTU4OiBEZWZpbmUgSEFWRV9ST1VORCB3aGVuIGJ1aWxkaW5nIHdpdGggVmlzdWFsIFN0dWRpbyAyMDEzIGFuZAorICBhYm92ZS4gIFBhdGNoIGJ5IFphY2hhcnkgVHVybmVyLgorCistIElzc3VlICMxODA5MzogdGhlIHByb2dyYW1zIHRoYXQgZW1iZWQgdGhlIENQeXRob24gcnVudGltZSBhcmUgbm93IGluIGEKKyAgc2VwYXJhdGUgIlByb2dyYW1zIiBkaXJlY3RvcnksIHJhdGhlciB0aGFuIGJlaW5nIGtlcHQgaW4gdGhlIE1vZHVsZXMKKyAgZGlyZWN0b3J5LgorCistIElzc3VlICMxNTc1OTogIm1ha2Ugc3VzcGljaW91cyIsICJtYWtlIGxpbmtjaGVjayIgYW5kICJtYWtlIGRvY3Rlc3QiIGluIERvYy8KKyAgbm93IGRpc3BsYXkgc3BlY2lhbCBtZXNzYWdlIHdoZW4gYW5kIG9ubHkgd2hlbiB0aGVyZSBhcmUgZmFpbHVyZXMuCisKKy0gSXNzdWUgIzIxMTQxOiBUaGUgV2luZG93cyBidWlsZCBwcm9jZXNzIG5vIGxvbmdlciBhdHRlbXB0cyB0byBmaW5kIFBlcmwsCisgIGluc3RlYWQgcmVseWluZyBvbiBPcGVuU1NMIHNvdXJjZSBiZWluZyBjb25maWd1cmVkIGFuZCByZWFkeSB0byBidWlsZC4gIFRoZQorICBgYFBDYnVpbGRcYnVpbGRfc3NsLnB5YGAgc2NyaXB0IGhhcyBiZWVuIHJlLXdyaXR0ZW4gYW5kIHJlLW5hbWVkIHRvCisgIGBgUENidWlsZFxwcmVwYXJlX3NzbC5weWBgLCBhbmQgdGFrZXMgY2FyZSBvZiBjb25maWd1cmluZyBPcGVuU1NMIHNvdXJjZQorICBmb3IgYm90aCAzMiBhbmQgNjQgYml0IHBsYXRmb3Jtcy4gIE9wZW5TU0wgc291cmNlcyBvYnRhaW5lZCBmcm9tCisgIHN2bi5weXRob24ub3JnIHdpbGwgYWx3YXlzIGJlIHByZS1jb25maWd1cmVkIGFuZCByZWFkeSB0byBidWlsZC4KKworLSBJc3N1ZSAjMjEwMzc6IEFkZCBhIGJ1aWxkIG9wdGlvbiB0byBlbmFibGUgQWRkcmVzc1Nhbml0aXplciBzdXBwb3J0LgorCistIElzc3VlICMxOTk2MjogVGhlIFdpbmRvd3MgYnVpbGQgcHJvY2VzcyBub3cgY3JlYXRlcyAicHl0aG9uLmJhdCIgaW4gdGhlCisgIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLCB3aGljaCBwYXNzZXMgYWxsIGFyZ3VtZW50cyB0aHJvdWdoIHRvIHRoZSBtb3N0CisgIHJlY2VudGx5IGJ1aWx0IGludGVycHJldGVyLgogCiAtIElzc3VlICMyMTI4NTogUmVmYWN0b3IgYW5kIGZpeCBjdXJzZXMgY29uZmlndXJlIGNoZWNrIHRvIGFsd2F5cyBzZWFyY2gKICAgaW4gYSBuY3Vyc2VzdyBkaXJlY3RvcnkuCkBAIC0yMDM0LDEyICszNDY1LDYwIEBACiAgIGluY2x1ZGUgZGlyZWN0b3JpZXMgaWYgdGhleSBhcmVuJ3QgYWxyZWFkeSBiZWluZyBzZWFyY2hlZC4gVGhpcyBhdm9pZHMKICAgYW4gZXhwbGljaXQgcnVudGltZSBsaWJyYXJ5IGRlcGVuZGVuY3kuCiAKKy0gSXNzdWUgIzE3ODYxOiBUb29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5IGF1dG9tYXRpY2FsbHkgcmVnZW5lcmF0ZXMKKyAgSW5jbHVkZS9vcGNvZGUuaCBmcm9tIExpYi9vcGNvZGUucHkgaWYgdGhlIGxhdGVyIGdldHMgYW55IGNoYW5nZS4KKwogLSBJc3N1ZSAjMjA2NDQ6IE9TIFggaW5zdGFsbGVyIGJ1aWxkIHN1cHBvcnQgZm9yIGRvY3VtZW50YXRpb24gYnVpbGQgY2hhbmdlcwogICBpbiAzLjQuMTogYXNzdW1lIGV4dGVybmFsbHkgc3VwcGxpZWQgc3BoaW54LWJ1aWxkIGlzIGF2YWlsYWJsZSBpbiAvdXNyL2Jpbi4KIAorLSBJc3N1ZSAjMjAwMjI6IEVsaW1pbmF0ZSB1c2Ugb2YgZGVwcmVjYXRlZCBidW5kbGVidWlsZGVyIGluIE9TIFggYnVpbGRzLgorCistIElzc3VlICMxNTk2ODogSW5jb3Jwb3JhdGVkIFRjbCwgVGssIGFuZCBUaXggYnVpbGRzIGludG8gdGhlIFdpbmRvd3MgYnVpbGQKKyAgc29sdXRpb24uCisKKy0gSXNzdWUgIzE3MDk1OiBGaXggTW9kdWxlcy9TZXR1cCAqc2hhcmVkKiBzdXBwb3J0LgorCistIElzc3VlICMyMTgxMTogQW50aWNpcGF0ZWQgZml4ZXMgdG8gc3VwcG9ydCBPUyBYIHZlcnNpb25zID4gMTAuOS4KKworLSBJc3N1ZSAjMjExNjY6IFByZXZlbnQgcG9zc2libGUgc2VnZmF1bHRzIGFuZCBvdGhlciByYW5kb20gZmFpbHVyZXMgb2YKKyAgcHl0aG9uIC0tZ2VuZXJhdGUtcG9zaXgtdmFycyBpbiBweWJ1aWxkZGlyLnR4dCBidWlsZCB0YXJnZXQuCisKKy0gSXNzdWUgIzE4MDk2OiBGaXggbGlicmFyeSBvcmRlciByZXR1cm5lZCBieSBweXRob24tY29uZmlnLgorCistIElzc3VlICMxNzIxOTogQWRkIGxpYnJhcnkgYnVpbGQgZGlyIGZvciBQeXRob24gZXh0ZW5zaW9uIGNyb3NzLWJ1aWxkcy4KKworLSBJc3N1ZSAjMjI5MTk6IFdpbmRvd3MgYnVpbGQgdXBkYXRlZCB0byBzdXBwb3J0IFZDIDE0LjAgKFZpc3VhbCBTdHVkaW8gMjAxNSksCisgIHdoaWNoIHdpbGwgYmUgdXNlZCBmb3IgdGhlIG9mZmljaWFsIHJlbGVhc2UuCisKKy0gSXNzdWUgIzIxMjM2OiBCdWlsZCBfbXNpLnB5ZCB3aXRoIGNhYmluZXQubGliIGluc3RlYWQgb2YgZmNpLmxpYgorCistIElzc3VlICMxNzEyODogVXNlIHByaXZhdGUgdmVyc2lvbiBvZiBPcGVuU1NMIGZvciBPUyBYIDEwLjUrIGluc3RhbGxlci4KKwogQyBBUEkKIC0tLS0tCiAKKy0gSXNzdWUgIzE0MjAzOiBSZW1vdmUgb2Jzb2xldGUgc3VwcG9ydCBmb3Igdmlldz09TlVMTCBpbiBQeUJ1ZmZlcl9GaWxsSW5mbygpLAorICBieXRlYXJyYXlfZ2V0YnVmZmVyKCksIGJ5dGVzaW9idWZfZ2V0YnVmZmVyKCkgYW5kIGFycmF5X2J1ZmZlcl9nZXRidWYoKS4KKyAgQWxsIGZ1bmN0aW9ucyBub3cgcmFpc2UgQnVmZmVyRXJyb3IgaW4gdGhhdCBjYXNlLgorCistIElzc3VlICMyMjQ0NTogUHlCdWZmZXJfSXNDb250aWd1b3VzKCkgbm93IGltcGxlbWVudHMgcHJlY2lzZSBjb250aWd1aXR5CisgIHRlc3RzLCBjb21wYXRpYmxlIHdpdGggTnVtUHkncyBOUFlfUkVMQVhFRF9TVFJJREVTX0NIRUNLSU5HIGNvbXBpbGF0aW9uCisgIGZsYWcuICBQcmV2aW91c2x5IHRoZSBmdW5jdGlvbiByZXBvcnRlZCBmYWxzZSBuZWdhdGl2ZXMgZm9yIGNvcm5lciBjYXNlcy4KKworLSBJc3N1ZSAjMjIwNzk6IFB5VHlwZV9SZWFkeSgpIG5vdyBjaGVja3MgdGhhdCBzdGF0aWNhbGx5IGFsbG9jYXRlZCB0eXBlIGhhcworICBubyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYmFzZXMuCisKKy0gSXNzdWUgIzIyNDUzOiBSZW1vdmVkIG5vbi1kb2N1bWVudGVkIG1hY3JvIFB5T2JqZWN0X1JFUFIoKS4KKworLSBJc3N1ZSAjMTgzOTU6IFJlbmFtZSBgYF9QeV9jaGFyMndjaGFyKClgYCB0byA6YzpmdW5jOmBQeV9EZWNvZGVMb2NhbGVgLAorICByZW5hbWUgYGBfUHlfd2NoYXIyY2hhcigpYGAgdG8gOmM6ZnVuYzpgUHlfRW5jb2RlTG9jYWxlYCwgYW5kIGRvY3VtZW50CisgIHRoZXNlIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjMjEyMzM6IEFkZCBuZXcgQyBmdW5jdGlvbnM6IFB5TWVtX1Jhd0NhbGxvYygpLCBQeU1lbV9DYWxsb2MoKSwKKyAgUHlPYmplY3RfQ2FsbG9jKCksIF9QeU9iamVjdF9HQ19DYWxsb2MoKS4gYnl0ZXMoaW50KSBpcyBub3cgdXNpbmcKKyAgYGBjYWxsb2MoKWBgIGluc3RlYWQgb2YgYGBtYWxsb2MoKWBgIGZvciBsYXJnZSBvYmplY3RzIHdoaWNoIGlzIGZhc3RlciBhbmQKKyAgdXNlIGxlc3MgbWVtb3J5LgorCiAtIElzc3VlICMyMDk0MjogUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlT2JqZWN0KCkgbm8gbG9uZ2VyIHNldHMgX19maWxlX18gdG8KICAgbWF0Y2ggd2hhdCBpbXBvcnRsaWIgZG9lczsgdGhpcyBhZmZlY3RzIF9mcm96ZW5faW1wb3J0bGliIGFzIHdlbGwgYXMgYW55CiAgIG1vZHVsZSBsb2FkZWQgdXNpbmcgaW1wLmluaXRfZnJvemVuKCkuCkBAIC0yMDQ3LDkgKzM1MjYsMjkgQEAKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMTk1NDg6IFVwZGF0ZSB0aGUgY29kZWNzIG1vZHVsZSBkb2N1bWVudGF0aW9uIHRvIGJldHRlciBjb3ZlciB0aGUKKyAgZGlzdGluY3Rpb24gYmV0d2VlbiB0ZXh0IGVuY29kaW5ncyBhbmQgb3RoZXIgY29kZWNzLCB0b2dldGhlciB3aXRoIG90aGVyCisgIGNsYXJpZmljYXRpb25zLiBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgorCistIElzc3VlICMyMjM5NDogRG9jL01ha2VmaWxlIG5vdyBzdXBwb3J0cyBgYG1ha2UgdmVudiBQWVRIT049Li4vcHl0aG9uYGAgdG8KKyAgY3JlYXRlIGEgdmVudiBmb3IgZ2VuZXJhdGluZyB0aGUgZG9jdW1lbnRhdGlvbiwgZS5nLiwKKyAgYGBtYWtlIGh0bWwgUFlUSE9OPXZlbnYvYmluL3B5dGhvbjNgYC4KKworLSBJc3N1ZSAjMjE1MTQ6IFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBqc29uIG1vZHVsZSBub3cgcmVmZXJzIHRvIG5ldyBKU09OIFJGQworICA3MTU5IGluc3RlYWQgb2Ygb2Jzb2xldGVkIFJGQyA0NjI3LgorCistIElzc3VlICMyMTc3NzogVGhlIGJpbmFyeSBzZXF1ZW5jZSBtZXRob2RzIG9uIGJ5dGVzIGFuZCBieXRlYXJyYXkgYXJlIG5vdworICBkb2N1bWVudGVkIGV4cGxpY2l0bHksIHJhdGhlciB0aGFuIGFzc3VtaW5nIHVzZXJzIHdpbGwgYmUgYWJsZSB0byBkZXJpdmUKKyAgdGhlIGV4cGVjdGVkIGJlaGF2aW91ciBmcm9tIHRoZSBiZWhhdmlvdXIgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc3RyIG1ldGhvZHMuCisKKy0gSXNzdWUgIzY5MTY6IHVuZG9jdW1lbnQgZGVwcmVjYXRlZCBhc3luY2hhdC5maWZvIGNsYXNzLgorCiAtIElzc3VlICMxNzM4NjogRXhwYW5kZWQgZnVuY3Rpb25hbGl0eSBvZiB0aGUgYGBEb2MvbWFrZS5iYXRgYCBzY3JpcHQgdG8gbWFrZQogICBpdCBtdWNoIG1vcmUgY29tcGFyYWJsZSB0byBgYERvYy9NYWtlZmlsZWBgLgogCistIElzc3VlICMyMTMxMjogVXBkYXRlIHRoZSB0aHJlYWRfZm9vYmFyLmggdGVtcGxhdGUgZmlsZSB0byBpbmNsdWRlIG5ld2VyCisgIHRocmVhZGluZyBBUElzLiAgUGF0Y2ggYnkgSmFjayBNY0NyYWNrZW4uCisKIC0gSXNzdWUgIzIxMDQzOiBSZW1vdmUgdGhlIHJlY29tbWVuZGF0aW9uIGZvciBzcGVjaWZpYyBDQSBvcmdhbml6YXRpb25zIGFuZCB0bwogICBtZW50aW9uIHRoZSBhYmlsaXR5IHRvIGxvYWQgdGhlIE9TIGNlcnRpZmljYXRlcy4KIApAQCAtMjA2Nyw2ICszNTY2LDczIEBACiBUZXN0cwogLS0tLS0KIAorLSBJc3N1ZSAjMTg5ODI6IEFkZCB0ZXN0cyBmb3IgQ0xJIG9mIHRoZSBjYWxlbmRhciBtb2R1bGUuCisKKy0gSXNzdWUgIzE5NTQ4OiBBZGRlZCBzb21lIGFkZGl0aW9uYWwgY2hlY2tzIHRvIHRlc3RfY29kZWNzIHRvIGVuc3VyZSB0aGF0CisgIHN0YXRlbWVudHMgaW4gdGhlIHVwZGF0ZWQgZG9jdW1lbnRhdGlvbiByZW1haW4gYWNjdXJhdGUuIFBhdGNoIGJ5IE1hcnRpbgorICBQYW50ZXIuCisKKy0gSXNzdWUgIzIyODM4OiBBbGwgdGVzdF9yZSB0ZXN0cyBub3cgd29yayB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgorCistIElzc3VlICMyMjE3MzogVXBkYXRlIGxpYjJ0bzMgdGVzdHMgdG8gdXNlIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgorCistIElzc3VlICMxNjAwMDogQ29udmVydCB0ZXN0X2N1cnNlcyB0byB1c2UgdW5pdHRlc3QuCisKKy0gSXNzdWUgIzIxNDU2OiBTa2lwIHR3byB0ZXN0cyBpbiB0ZXN0X3VybGxpYjJuZXQucHkgaWYgX3NzbCBtb2R1bGUgbm90CisgIHByZXNlbnQuIFBhdGNoIGJ5IFJlbWkgUG9pbnRlbC4KKworLSBJc3N1ZSAjMjA3NDY6IEZpeCB0ZXN0X3BkYiB0byBydW4gaW4gcmVmbGVhayBtb2RlICgtUikuICBQYXRjaCBieSBYYXZpZXIKKyAgZGUgR2F5ZS4KKworLSBJc3N1ZSAjMjIwNjA6IHRlc3RfY3R5cGVzIGhhcyBiZWVuIHNvbWV3aGF0IGNsZWFuZWQgdXAgYW5kIHNpbXBsaWZpZWQ7IGl0CisgIG5vdyB1c2VzIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5IHRvIGZpbmQgaXRzIHRlc3RzLgorCistIElzc3VlICMyMjEwNDogcmVncnRlc3QucHkgbm8gbG9uZ2VyIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBzdWl0ZSBvZiB0ZXN0cworICBsb2FkZWQgZnJvbSB0ZXN0IG1vZHVsZXMgdGhhdCBkb24ndCBkZWZpbmUgdGVzdF9tYWluKCkuCisKKy0gSXNzdWUgIzIyMTExOiBBc3NvcnRlZCBjbGVhbnVwcyBpbiB0ZXN0X2ltYXBsaWIuICBQYXRjaCBieSBNaWxhbiBPYmVya2lyY2guCisKKy0gSXNzdWUgIzIyMDAyOiBBZGRlZCBgYGxvYWRfcGFja2FnZV90ZXN0c2BgIGZ1bmN0aW9uIHRvIHRlc3Quc3VwcG9ydCBhbmQgdXNlZAorICBpdCB0byBpbXBsZW1lbnQvYXVnbWVudCB0ZXN0IGRpc2NvdmVyeSBpbiB0ZXN0X2FzeW5jaW8sIHRlc3RfZW1haWwsCisgIHRlc3RfaW1wb3J0bGliLCB0ZXN0X2pzb24sIGFuZCB0ZXN0X3Rvb2xzLgorCistIElzc3VlICMyMTk3NjogRml4IHRlc3Rfc3NsIHRvIGFjY2VwdCBMaWJyZVNTTCB2ZXJzaW9uIHN0cmluZ3MuICBUaGFua3MKKyAgdG8gV2lsbGlhbSBPcnIuCisKKy0gSXNzdWUgIzIxOTE4OiBDb252ZXJ0ZWQgdGVzdF90b29scyBmcm9tIGEgbW9kdWxlIHRvIGEgcGFja2FnZSBjb250YWluaW5nCisgIHNlcGFyYXRlIHRlc3QgZmlsZXMgZm9yIGVhY2ggdGVzdGVkIHNjcmlwdC4KKworLSBJc3N1ZSAjOTU1NDogVXNlIG1vZGVybiB1bml0dGVzdCBmZWF0dXJlcyBpbiB0ZXN0X2FyZ3BhcnNlLiBJbml0aWFsIHBhdGNoIGJ5CisgIERlbnZlciBDb25leWJlYXJlIGFuZCBSYWR1IFZvaWNpbGFzLgorCistIElzc3VlICMyMDE1NTogQ2hhbmdlZCBIVFRQIG1ldGhvZCBuYW1lcyBpbiBmYWlsaW5nIHRlc3RzIGluIHRlc3RfaHR0cHNlcnZlcnMKKyAgc28gdGhhdCBwYWNrZXQgZmlsdGVyaW5nIHNvZnR3YXJlIChzcGVjaWZpY2FsbHkgV2luZG93cyBCYXNlIEZpbHRlcmluZyBFbmdpbmUpCisgIGRvZXMgbm90IGludGVyZmVyZSB3aXRoIHRoZSB0cmFuc2FjdGlvbiBzZW1hbnRpY3MgZXhwZWN0ZWQgYnkgdGhlIHRlc3RzLgorCistIElzc3VlICMxOTQ5MzogUmVmYWN0b3JlZCB0aGUgY3R5cGVzIHRlc3QgcGFja2FnZSB0byBza2lwIHRlc3RzIGV4cGxpY2l0bHkKKyAgcmF0aGVyIHRoYW4gc2lsZW50bHkuCisKKy0gSXNzdWUgIzE4NDkyOiBBbGwgcmVzb3VyY2VzIGFyZSBub3cgYWxsb3dlZCB3aGVuIHRlc3RzIGFyZSBub3QgcnVuIGJ5CisgIHJlZ3J0ZXN0LnB5LgorCistIElzc3VlICMyMTYzNDogRml4IHB5c3RvbmUgbWljcm8tYmVuY2htYXJrOiB1c2UgZmxvb3IgZGl2aXNpb24gaW5zdGVhZCBvZiB0cnVlCisgIGRpdmlzaW9uIHRvIGJlbmNobWFyayBpbnRlZ2VycyBpbnN0ZWFkIG9mIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFNldCBweXN0b25lCisgIHZlcnNpb24gdG8gMS4yLiBQYXRjaCB3cml0dGVuIGJ5IExlbm5hcnQgUmVnZWJyby4KKworLSBJc3N1ZSAjMjE2MDU6IEFkZGVkIHRlc3RzIGZvciBUa2ludGVyIGltYWdlcy4KKworLSBJc3N1ZSAjMjE0OTM6IEFkZGVkIHRlc3QgZm9yIG50cGF0aC5leHBhbmR1c2VyKCkuICBPcmlnaW5hbCBwYXRjaCBieQorICBDbGF1ZGl1IFBvcGEuCisKKy0gSXNzdWUgIzE5OTI1OiBBZGRlZCB0ZXN0cyBmb3IgdGhlIHNwd2QgbW9kdWxlLiBPcmlnaW5hbCBwYXRjaCBieSBWYWpyYXNreSBLb2suCisKKy0gSXNzdWUgIzIxNTIyOiBBZGRlZCBUa2ludGVyIHRlc3RzIGZvciBMaXN0Ym94Lml0ZW1jb25maWd1cmUoKSwKKyAgUGFuZWRXaW5kb3cucGFuZWNvbmZpZ3VyZSgpLCBhbmQgTWVudS5lbnRyeWNvbmZpZ3VyZSgpLgorCistIElzc3VlICMxNzc1NjogRml4IHRlc3RfY29kZSB0ZXN0IHdoZW4gcnVuIGZyb20gdGhlIGluc3RhbGxlZCBsb2NhdGlvbi4KKworLSBJc3N1ZSAjMTc3NTI6IEZpeCBkaXN0dXRpbHMgdGVzdHMgd2hlbiBydW4gZnJvbSB0aGUgaW5zdGFsbGVkIGxvY2F0aW9uLgorCiAtIElzc3VlICMxODYwNDogQ29uc29saWRhdGVkIGNoZWNrcyBmb3IgR1VJIGF2YWlsYWJpbGl0eS4gIEFsbCBwbGF0Zm9ybXMgbm93CiAgIGF0IGxlYXN0IGNoZWNrIHdoZXRoZXIgVGsgY2FuIGJlIGluc3RhbnRpYXRlZCB3aGVuIHRoZSBHVUkgcmVzb3VyY2UgaXMKICAgcmVxdWVzdGVkLgpAQCAtMjA4NCw2ICszNjUwLDggQEAKIAogLSBJc3N1ZSAjMjEwOTc6IE1vdmUgdGVzdF9uYW1lc3BhY2VfcGtncyBpbnRvIHRlc3RfaW1wb3J0bGliLgogCistIElzc3VlICMyMTUwMzogVXNlIHRlc3RfYm90aCgpIGNvbnNpc3RlbnRseSBpbiB0ZXN0X2ltcG9ydGxpYi4KKwogLSBJc3N1ZSAjMjA5Mzk6IEF2b2lkIHZhcmlvdXMgbmV0d29yayB0ZXN0IGZhaWx1cmVzIGR1ZSB0byBuZXcKICAgcmVkaXJlY3Qgb2YgaHR0cDovL3d3dy5weXRob24ub3JnLyB0byBodHRwczovL3d3dy5weXRob24ub3JnOgogICB1c2UgaHR0cDovL3d3dy5leGFtcGxlLmNvbSBpbnN0ZWFkLgpAQCAtMjA5NCw5ICszNjYyLDQxIEBACiAtIElzc3VlICMyMTA5MzogUHJldmVudCBmYWlsdXJlcyBvZiBjdHlwZXMgdGVzdF9tYWNob2xpYiBvbiBPUyBYIGlmIGEKICAgY29weSBvZiBsaWJ6IGV4aXN0cyBpbiAkSE9NRS9saWIgb3IgL3Vzci9sb2NhbC9saWIuCiAKKy0gSXNzdWUgIzIyNzcwOiBQcmV2ZW50IHNvbWUgVGsgc2VnZmF1bHRzIG9uIE9TIFggd2hlbiBydW5uaW5nIGd1aSB0ZXN0cy4KKworLSBJc3N1ZSAjMjMyMTE6IFdvcmthcm91bmQgdGVzdF9sb2dnaW5nIGZhaWx1cmUgb24gc29tZSBPUyBYIDEwLjYgc3lzdGVtcy4KKworLSBJc3N1ZSAjMjMzNDU6IFByZXZlbnQgdGVzdF9zc2wgZmFpbHVyZXMgd2l0aCBsYXJnZSBPcGVuU1NMIHBhdGNoIGxldmVsCisgIHZhbHVlcyAobGlrZSAwLjkuOHpjKS4KKwogVG9vbHMvRGVtb3MKIC0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzIyMzE0OiBweWRvYyBub3cgd29ya3Mgd2hlbiB0aGUgTElORVMgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0LgorCistIElzc3VlICMyMjYxNTogQXJndW1lbnQgQ2xpbmljIG5vdyBzdXBwb3J0cyB0aGUgInR5cGUiIGFyZ3VtZW50IGZvciB0aGUKKyAgaW50IGNvbnZlcnRlci4gIFRoaXMgcGVybWl0cyB1c2luZyB0aGUgaW50IGNvbnZlcnRlciB3aXRoIGVudW1zIGFuZAorICB0eXBlZGVmcy4KKworLSBJc3N1ZSAjMjAwNzY6IFRoZSBtYWtlbG9jYWxlYWxpYXMucHkgc2NyaXB0IG5vIGxvbmdlciBpZ25vcmVzIFVURi04IG1hcHBpbmcuCisKKy0gSXNzdWUgIzIwMDc5OiBUaGUgbWFrZWxvY2FsZWFsaWFzLnB5IHNjcmlwdCBub3cgY2FuIHBhcnNlIHRoZSBTVVBQT1JURUQgZmlsZQorICBmcm9tIGdsaWJjIHNvdXJjZXMgYW5kIHN1cHBvcnRzIGNvbW1hbmQgbGluZSBvcHRpb25zIGZvciBzb3VyY2UgcGF0aHMuCisKKy0gSXNzdWUgIzIyMjAxOiBDb21tYW5kLWxpbmUgaW50ZXJmYWNlIG9mIHRoZSB6aXBmaWxlIG1vZHVsZSBub3cgY29ycmVjdGx5CisgIGV4dHJhY3RzIFpJUCBmaWxlcyB3aXRoIGRpcmVjdG9yeSBlbnRyaWVzLiAgUGF0Y2ggYnkgUnlhbiBXaWxzb24uCisKKy0gSXNzdWUgIzIyMTIwOiBGb3IgZnVuY3Rpb25zIHVzaW5nIGFuIHVuc2lnbmVkIGludGVnZXIgcmV0dXJuIGNvbnZlcnRlciwKKyAgQXJndW1lbnQgQ2xpbmljIG5vdyBnZW5lcmF0ZXMgYSBjYXN0IHRvIHRoYXQgdHlwZSBmb3IgdGhlIGNvbXBhcmlzb24KKyAgdG8gLTEgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLiAgKFRoaXMgc3VwcmVzc2VzIGEgY29tcGlsYXRpb24gd2FybmluZy4pCisKKy0gSXNzdWUgIzE4OTc0OiBUb29scy9zY3JpcHRzL2RpZmYucHkgbm93IHVzZXMgYXJncGFyc2UgaW5zdGVhZCBvZiBvcHRwYXJzZS4KKworLSBJc3N1ZSAjMjE5MDY6IE1ha2UgVG9vbHMvc2NyaXB0cy9tZDVzdW0ucHkgd29yayBpbiBQeXRob24gMy4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMyMTYyOTogRml4IEFyZ3VtZW50IENsaW5pYydzICItLWNvbnZlcnRlcnMiIGZlYXR1cmUuCisKIC0gQWRkIHN1cHBvcnQgZm9yIGBgeWllbGQgZnJvbWBgIHRvIDJ0bzMuCiAKIC0gQWRkIHN1cHBvcnQgZm9yIHRoZSBQRVAgNDY1IG1hdHJpeCBtdWx0aXBsaWNhdGlvbiBvcGVyYXRvciB0byAydG8zLgpAQCAtMjEwOSw2ICszNzA5LDMyIEBACiAtIElzc3VlICMyMDUzNTogUFlUSE9OV0FSTklORyBubyBsb25nZXIgYWZmZWN0cyB0aGUgcnVuX3Rlc3RzLnB5IHNjcmlwdC4KICAgUGF0Y2ggYnkgQXJmcmV2ZXIgRnJlaHRlcyBUYWlmZXJzYXIgQXJhaGVzaXMuCiAKK1dpbmRvd3MKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjMyNjA6IFVwZGF0ZSBXaW5kb3dzIGluc3RhbGxlcgorCistIFRoZSBidW5kbGVkIHZlcnNpb24gb2YgVGNsL1RrIGhhcyBiZWVuIHVwZGF0ZWQgdG8gOC42LjMuICBUaGUgbW9zdCB2aXNpYmxlCisgIHJlc3VsdCBvZiB0aGlzIGNoYW5nZSBpcyB0aGUgYWRkaXRpb24gb2YgbmV3IG5hdGl2ZSBmaWxlIGRpYWxvZ3Mgd2hlbgorICBydW5uaW5nIG9uIFdpbmRvd3MgVmlzdGEgb3IgbmV3ZXIuICBTZWUgVGNsL1RrJ3MgVElQIDQzMiBmb3IgbW9yZQorICBpbmZvcm1hdGlvbi4gIEFsc28sIHRoaXMgdmVyc2lvbiBvZiBUY2wvVGsgaW5jbHVkZXMgc3VwcG9ydCBmb3IgV2luZG93cyAxMC4KKworLSBJc3N1ZSAjMTc4OTY6IFRoZSBXaW5kb3dzIGJ1aWxkIHNjcmlwdHMgbm93IGV4cGVjdCBleHRlcm5hbCBsaWJyYXJ5IHNvdXJjZXMKKyAgdG8gYmUgaW4gYGBQQ2J1aWxkXC4uXGV4dGVybmFsc2BgIHJhdGhlciB0aGFuIGBgUENidWlsZFwuLlwuLmBgLgorCistIElzc3VlICMxNzcxNzogVGhlIFdpbmRvd3MgYnVpbGQgc2NyaXB0cyBub3cgdXNlIGEgY29weSBvZiBOQVNNIHB1bGxlZCBmcm9tCisgIHN2bi5weXRob24ub3JnIHRvIGJ1aWxkIE9wZW5TU0wuCisKKy0gSXNzdWUgIzIxOTA3OiBJbXByb3ZlZCB0aGUgYmF0Y2ggc2NyaXB0cyBwcm92aWRlZCBmb3IgYnVpbGRpbmcgUHl0aG9uLgorCistIElzc3VlICMyMjY0NDogVGhlIGJ1bmRsZWQgdmVyc2lvbiBvZiBPcGVuU1NMIGhhcyBiZWVuIHVwZGF0ZWQgdG8gMS4wLjFqLgorCistIElzc3VlICMxMDc0NzogVXNlIHZlcnNpb25lZCBsYWJlbHMgaW4gdGhlIFdpbmRvd3Mgc3RhcnQgbWVudS4KKyAgUGF0Y2ggYnkgT2xpdmUgS2lsYnVybi4KKworLSBJc3N1ZSAjMjI5ODA6IC5weWQgZmlsZXMgd2l0aCBhIHZlcnNpb24gYW5kIHBsYXRmb3JtIHRhZyAoZm9yIGV4YW1wbGUsCisgICIuY3AzNS13aW4zMi5weWQiKSB3aWxsIG5vdyBiZSBsb2FkZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZSB3aXRob3V0IHRhZ3MuCisKIAogV2hhdCdzIE5ldyBpbiBQeXRob24gMy40LjA/CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTYyMjksNiArNzg1NSwxMCBAQAogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMyMzAwNjogSW1wcm92ZSB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgaW5kZXhpbmcgb2YgZGljdC5fX21pc3NpbmdfXy4KKyAgQWRkIGFuIGVudHJ5IGluIHRoZSBsYW5ndWFnZSBkYXRhbW9kZWwgc3BlY2lhbCBtZXRob2RzIHNlY3Rpb24uCisgIFJldmlzZSBhbmQgaW5kZXggaXRzIGRpc2N1c3Npb24gaW4gdGhlIHN0ZHR5cGVzIG1hcHBpbmcvZGljdCBzZWN0aW9uLgorCiAtIElzc3VlICMxNzcwMTogSW1wcm92aW5nIHN0cmZ0aW1lIGRvY3VtZW50YXRpb24uCiAKIC0gSXNzdWUgIzE4NDQwOiBDbGFyaWZ5IHRoYXQgYGhhc2goKWAgY2FuIHRydW5jYXRlIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGFuCkBAIC02MzkxLDQxNDEgKzgwMjEsNCBAQAogLSBJc3N1ZSAjMTg1Njk6IFRoZSBpbnN0YWxsZXIgbm93IGFkZHMgLnB5IHRvIHRoZSBQQVRIRVhUIHZhcmlhYmxlIHdoZW4gZXh0ZW5zaW9ucwogICBhcmUgcmVnaXN0ZXJlZC4gUGF0Y2ggYnkgUGF1bCBNb29yZS4KIAotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMD8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyOS1TZXAtMjAxMioKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE2MDQ2OiBGaXggbG9hZGluZyBzb3VyY2VsZXNzIGxlZ2FjeSAucHlvIGZpbGVzLgotCi0tIElzc3VlICMxNjA2MDogRml4IHJlZmNvdW50aW5nIGJ1ZyB3aGVuIGBfX3RydW5jX18oKWAgcmV0dXJucyBhbiBvYmplY3Qgd2hvc2UKLSAgYF9faW50X18oKWAgZ2l2ZXMgYSBub24taW50ZWdlci4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNjAxMjogRml4IGEgcmVncmVzc2lvbiBpbiBweWV4cGF0LiBUaGUgcGFyc2VyJ3MgYFVzZUZvcmVpZ25EVEQoKWAKLSAgbWV0aG9kIGRvZXNuJ3QgcmVxdWlyZSBhbiBhcmd1bWVudCBhZ2Fpbi4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBSZWxlYXNlIENhbmRpZGF0ZSAzPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjMtU2VwLTIwMTIqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNTkwMDogRml4IHJlZmVyZW5jZSBsZWFrIGluIGBQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcCgpYC4KLQotLSBJc3N1ZSAjMTU5MjY6IEZpeCBjcmFzaCBhZnRlciBtdWx0aXBsZSByZWluaXRpYWxpemF0aW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuCi0KLS0gSXNzdWUgIzE1ODk1OiBGaXggRklMRSBwb2ludGVyIGxlYWsgaW4gb25lIGVycm9yIGJyYW5jaCBvZgotICBgUHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3MoKWAgd2hlbiBmaWxlbmFtZSBwb2ludHMgdG8gYSBweWMvcHlvIGZpbGUsIGNsb3NlaXQgaXMKLSAgZmFsc2UgYW4gYW5kIHNldF9tYWluX2xvYWRlcigpIGZhaWxzLgotCi0tIEZpeGVzIGZvciBhIGZldyBjcmFzaCBhbmQgbWVtb3J5IGxlYWsgcmVncmVzc2lvbnMgZm91bmQgYnkgQ292ZXJpdHkuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTU4ODI6IENoYW5nZSBgX2RlY2ltYWxgIHRvIGFjY2VwdCBhbnkgY29lZmZpY2llbnQgdHVwbGUgd2hlbgotICBjb25zdHJ1Y3RpbmcgaW5maW5pdGllcy4gVGhpcyBpcyBkb25lIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoCi0gIGRlY2ltYWwucHk6IEluZmluaXR5IGNvZWZmaWNpZW50cyBhcmUgdW5kZWZpbmVkIGluIF9kZWNpbWFsIChpbiBhY2NvcmRhbmNlCi0gIHdpdGggdGhlIHNwZWNpZmljYXRpb24pLgotCi0tIElzc3VlICMxNTkyNTogRml4IGEgcmVncmVzc2lvbiBpbiBgZW1haWwudXRpbGAgd2hlcmUgdGhlIGBwYXJzZWRhdGUoKWAgYW5kCi0gIGBwYXJzZWRhdGVfdHooKWAgZnVuY3Rpb25zIGRpZCBub3QgcmV0dXJuIE5vbmUgYW55bW9yZSB3aGVuIHRoZSBhcmd1bWVudCBjb3VsZAotICBub3QgYmUgcGFyc2VkLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTU5NzM6IEZpeCBhIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIGNvbXBhcmluZyBkYXRldGltZSB0aW1lem9uZQotICBvYmplY3RzLgotCi0tIElzc3VlICMxNTk3NzogRml4IG1lbW9yeSBsZWFrIGluIE1vZHVsZXMvX3NzbC5jIHdoZW4gdGhlIGZ1bmN0aW9uCi0gIF9zZXRfbnBuX3Byb3RvY29scygpIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcywgdGhhbmtzIHRvIERhbmllbCBTb21tZXJtYW5uLgotCi0tIElzc3VlICMxNTk2OTogYGZhdWx0aGFuZGxlcmAgbW9kdWxlOiByZW5hbWUgZHVtcF90cmFjZWJhY2tzX2xhdGVyKCkgdG8KLSAgZHVtcF90cmFjZWJhY2tfbGF0ZXIoKSBhbmQgY2FuY2VsX2R1bXBfdHJhY2ViYWNrc19sYXRlcigpIHRvCi0gIGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpLgotCi0tIF9kZWNpbWFsIG1vZHVsZTogdXNlIG9ubHkgQyA4OSBzdHlsZSBjb21tZW50cy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBSZWxlYXNlIENhbmRpZGF0ZSAyPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDktU2VwLTIwMTIqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMzk5MjogVGhlIHRyYXNoY2FuIG1lY2hhbmlzbSBpcyBub3cgdGhyZWFkLXNhZmUuICBUaGlzIGVsaW1pbmF0ZXMKLSAgc3BvcmFkaWMgY3Jhc2hlcyBpbiBtdWx0aS10aHJlYWQgcHJvZ3JhbXMgd2hlbiBzZXZlcmFsIGxvbmcgZGVhbGxvY2F0b3IgY2hhaW5zCi0gIHJhbiBjb25jdXJyZW50bHkgYW5kIGludm9sdmVkIHN1YmNsYXNzZXMgb2YgYnVpbHQtaW4gY29udGFpbmVyIHR5cGVzLgotCi0tIElzc3VlICMxNTc4NDogTW9kaWZ5IGBPU0Vycm9yYC5fX3N0cl9fKCkgdG8gYmV0dGVyIGRpc3Rpbmd1aXNoIGJldHdlZW4gZXJybm8KLSAgZXJyb3IgbnVtYmVycyBhbmQgV2luZG93cyBlcnJvciBudW1iZXJzLgotCi0tIElzc3VlICMxNTc4MTogRml4IHR3byBzbWFsbCByYWNlIGNvbmRpdGlvbnMgaW4gaW1wb3J0J3MgbW9kdWxlIGxvY2tpbmcuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTcxNTg6IEFkZCAnc3ltYm9scycgdG8gaGVscCgpIHdlbGNvbWUgbWVzc2FnZTsgY2xhcmlmeQotICAnbW9kdWxlcyBzcGFtJyBtZXNzYWdlcy4KLQotLSBJc3N1ZSAjMTU4NDc6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gYXJncGFyc2UsIHdoaWNoIGRpZCBub3QgYWNjZXB0IHR1cGxlcyBhcwotICBhcmd1bWVudCBsaXN0cyBhbnltb3JlLgotCi0tIElzc3VlICMxNTgyODogUmVzdG9yZSBzdXBwb3J0IGZvciBDIGV4dGVuc2lvbnMgaW4gYGltcC5sb2FkX21vZHVsZSgpYC4KLQotLSBJc3N1ZSAjMTUzNDA6IEZpeCBpbXBvcnRpbmcgdGhlIHJhbmRvbSBtb2R1bGUgd2hlbiBgYC9kZXYvdXJhbmRvbWBgIGNhbm5vdCBiZQotICBvcGVuZWQuICBUaGlzIHdhcyBhIHJlZ3Jlc3Npb24gY2F1c2VkIGJ5IHRoZSBoYXNoIHJhbmRvbWl6YXRpb24gcGF0Y2guCi0KLS0gSXNzdWUgIzEwNjUwOiBEZXByZWNhdGUgdGhlIHdhdGNoZXhwIHBhcmFtZXRlciBvZiB0aGUgYERlY2ltYWwucXVhbnRpemUoKWAKLSAgbWV0aG9kLgotCi0tIElzc3VlICMxNTc4NTogTW9kaWZ5IGB3aW5kb3cuZ2V0X3djaCgpYCBBUEkgb2YgdGhlIGN1cnNlcyBtb2R1bGU6IHJldHVybiBhCi0gIGNoYXJhY3RlciBmb3IgbW9zdCBrZXlzLCBhbmQgYW4gaW50ZWdlciBmb3Igc3BlY2lhbCBrZXlzLCBpbnN0ZWFkIG9mIGFsd2F5cwotICByZXR1cm5pbmcgYW4gaW50ZWdlci4gU28gaXQgaXMgbm93IHBvc3NpYmxlIHRvIGRpc3Rpbmd1aXNoIHNwZWNpYWwga2V5cyBsaWtlCi0gIGtleXBhZCBrZXlzLgotCi0tIElzc3VlICMxNDIyMzogRml4IGB3aW5kb3cuYWRkY2goKWAgb2YgdGhlIGN1cnNlcyBtb2R1bGUgZm9yIHNwZWNpYWwgY2hhcmFjdGVycwotICBsaWtlIGN1cnNlcy5BQ1NfSExJTkU6IHRoZSBQeXRob24gZnVuY3Rpb24gYWRkY2goaW50KSBhbmQgYWRkY2goYnl0ZXMpIGlzIG5vdwotICBjYWxsaW5nIHRoZSBDIGZ1bmN0aW9uIHdhZGRjaCgpL212d2FkZGNoKCkgKGFzIGl0IHdhcyBkb25lIGluIFB5dGhvbiAzLjIpLAotICBpbnN0ZWFkIG9mIHdhZGRfd2NoKCkvbXZ3YWRkX3djaCgpLiBUaGUgUHl0aG9uIGZ1bmN0aW9uIGFkZGNoKHN0cikgaXMgc3RpbGwKLSAgY2FsbGluZyB0aGUgQyBmdW5jdGlvbiB3YWRkX3djaCgpL212d2FkZF93Y2goKSBpZiB0aGUgUHl0aG9uIGN1cnNlcyBpcyBsaW5rZWQKLSAgdG8gbGlibmN1cnNlc3cuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxNTgyMjogUmVhbGx5IGVuc3VyZSAydG8zIGdyYW1tYXIgcGlja2xlcyBhcmUgcHJvcGVybHkgaW5zdGFsbGVkCi0gIChyZXBsYWNlcyBmaXhlcyBmb3IgSXNzdWUgIzE1NjQ1KS4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNTgxNDogVGhlIG1lbW9yeXZpZXcgZW5oYW5jZW1lbnRzIGluIDMuMy4wIGFjY2lkZW50YWxseSBwZXJtaXR0ZWQgdGhlCi0gIGhhc2hpbmcgb2YgbXVsdGktZGltZW5zaW9uYWwgbWVtb3J2aWV3cyBhbmQgbWVtb3J5dmlld3Mgd2l0aCBtdWx0aS1ieXRlIGl0ZW0KLSAgZm9ybWF0cy4gVGhlIGludGVuZGVkIHJlc3RyaWN0aW9ucyBoYXZlIG5vdyBiZWVuIGRvY3VtZW50ZWQgLSB0aGV5IHdpbGwgYmUKLSAgY29ycmVjdGx5IGVuZm9yY2VkIGluIDMuMy4xLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIFJlbGVhc2UgQ2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyNS1BdWctMjAxMioKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE1NTczOiBtZW1vcnl2aWV3IGNvbXBhcmlzb25zIGFyZSBub3cgcGVyZm9ybWVkIGJ5IHZhbHVlIHdpdGggZnVsbAotICBzdXBwb3J0IGZvciBhbnkgdmFsaWQgc3RydWN0IG1vZHVsZSBmb3JtYXQgZGVmaW5pdGlvbi4KLQotLSBJc3N1ZSAjMTUzMTY6IFdoZW4gYW4gaXRlbSBpbiB0aGUgZnJvbWxpc3QgZm9yIGBfX2ltcG9ydF9fKClgIGRvZXNuJ3QgZXhpc3QsCi0gIGRvbid0IHJhaXNlIGFuIGVycm9yLCBidXQgaWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBhcyBwYXJ0IG9mIGFuIGltcG9ydCBkbwotICBsZXQgdGhhdCBwcm9wYWdhdGUuCi0KLS0gSXNzdWUgIzE1Nzc4OiBFbnN1cmUgdGhhdCBgYHN0cihJbXBvcnRFcnJvcihtc2cpKWBgIHJldHVybnMgYSBzdHIgZXZlbiB3aGVuCi0gIG1zZyBpc24ndCBhIHN0ci4KLQotLSBJc3N1ZSAjMjA1MTogU291cmNlIGZpbGUgcGVybWlzc2lvbiBiaXRzIGFyZSBvbmNlIGFnYWluIGNvcnJlY3RseSBjb3BpZWQgdG8KLSAgdGhlIGNhY2hlZCBieXRlY29kZSBmaWxlLiAoVGhlIG1pZ3JhdGlvbiB0byBpbXBvcnRsaWIgcmVpbnRyb2R1Y2VkIHRoaXMKLSAgcHJvYmxlbSBiZWNhdXNlIHRoZXNlIHdhcyBubyByZWdyZXNzaW9uIHRlc3QuIEEgdGVzdCBoYXMgYmVlbiBhZGRlZCBhcyBwYXJ0IG9mCi0gIHRoaXMgcGF0Y2gpCi0KLS0gSXNzdWUgIzE1NzYxOiBGaXggY3Jhc2ggd2hlbiBgYFBZVEhPTkVYRUNVVEFCTEVgYCBpcyBzZXQgb24gTWFjIE9TIFguCi0KLS0gSXNzdWUgIzE1NzI2OiBGaXggaW5jb3JyZWN0IGJvdW5kcyBjaGVja2luZyBpbiBQeVN0YXRlX0ZpbmRNb2R1bGUuICBQYXRjaCBieQotICBSb2JpbiBTY2hyZWliZXIuCi0KLS0gSXNzdWUgIzE1NjA0OiBVcGRhdGUgdXNlcyBvZiBgUHlPYmplY3RfSXNUcnVlKClgIHRvIGNoZWNrIGZvciBhbmQgaGFuZGxlCi0gIGVycm9ycyBjb3JyZWN0bHkuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNDg0NjogYGltcG9ydGxpYi5GaWxlRmluZGVyYCBub3cgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSB0aGUgZGlyZWN0b3J5Ci0gIGJlaW5nIHNlYXJjaGVkIGlzIHJlbW92ZWQgYWZ0ZXIgYSBwcmV2aW91cyBpbXBvcnQgYXR0ZW1wdC4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMxMzM3MDogRW5zdXJlIHRoYXQgY3R5cGVzIHdvcmtzIG9uIE1hYyBPUyBYIHdoZW4gUHl0aG9uIGlzIGNvbXBpbGVkCi0gIHVzaW5nIHRoZSBjbGFuZyBjb21waWxlci4KLQotLSBJc3N1ZSAjMTMwNzI6IFRoZSBhcnJheSBtb2R1bGUncyAndScgZm9ybWF0IGNvZGUgaXMgbm93IGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUKLSAgcmVtb3ZlZCBpbiBQeXRob24gNC4wLgotCi0tIElzc3VlICMxNTU0NDogRml4IERlY2ltYWwuX19mbG9hdF9fIHRvIHdvcmsgd2l0aCBwYXlsb2FkLWNhcnJ5aW5nIE5hTnMuCi0KLS0gSXNzdWUgIzE1Nzc2OiBBbGxvdyBweXZlbnYgdG8gd29yayBpbiBleGlzdGluZyBkaXJlY3Rvcnkgd2l0aCAtLWNsZWFuLgotCi0tIElzc3VlICMxNTI0OTogZW1haWwncyBCeXRlc0dlbmVyYXRvciBub3cgY29ycmVjdGx5IG1hbmdsZXMgRnJvbSBsaW5lcyAod2hlbgotICByZXF1ZXN0ZWQpIGV2ZW4gaWYgdGhlIGJvZHkgY29udGFpbnMgdW5kZWNvZGFibGUgYnl0ZXMuCi0KLS0gSXNzdWUgIzE1Nzc3OiBGaXggYSByZWZsZWFrIGluIF9wb3NpeHN1YnByb2Nlc3MuCi0KLS0gSXNzdWUgIyM2NjUxOTQ6IFVwZGF0ZSBgZW1haWwudXRpbHMubG9jYWx0aW1lYCB0byB1c2UgZGF0ZXRpbWUuYXN0aW1lem9uZSBhbmQKLSAgY29ycmVjdGx5IGhhbmRsZSBoaXN0b3JpYyBjaGFuZ2VzIGluIFVUQyBvZmZzZXRzLgotCi0tIElzc3VlICMxNTE5OTogRml4IEphdmFTY3JpcHQncyBkZWZhdWx0IE1JTUUgdHlwZSB0byBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LgotICBQYXRjaCBieSBCb2h1c2xhdiBLYWJyZGEuCi0KLS0gSXNzdWUgIzEyNjQzOiBgY29kZS5JbnRlcmFjdGl2ZUNvbnNvbGVgIG5vdyByZXNwZWN0cyBgc3lzLmV4Y2VwdGhvb2tgIHdoZW4KLSAgZGlzcGxheWluZyBleGNlcHRpb25zLiAgUGF0Y2ggYnkgQWFyb24gSWxlcy4KLQotLSBJc3N1ZSAjMTM1Nzk6IGBzdHJpbmcuRm9ybWF0dGVyYCBub3cgdW5kZXJzdGFuZHMgdGhlICdhJyBjb252ZXJzaW9uIHNwZWNpZmllci4KLQotLSBJc3N1ZSAjMTU1OTU6IEZpeCBgYHN1YnByb2Nlc3MuUG9wZW4odW5pdmVyc2FsX25ld2xpbmVzPVRydWUpYGAgZm9yIGNlcnRhaW4KLSAgbG9jYWxlcyAodXRmLTE2IGFuZCB1dGYtMzIgZmFtaWx5KS4gUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCi0KLS0gSXNzdWUgIzE1NDc3OiBJbiBjbWF0aCBhbmQgbWF0aCBtb2R1bGVzLCBhZGQgd29ya2Fyb3VuZCBmb3IgcGxhdGZvcm1zIHdob3NlCi0gIHN5c3RlbS1zdXBwbGllZCBsb2cxcCBmdW5jdGlvbiBkb2Vzbid0IHJlc3BlY3Qgc2lnbnMgb2YgemVyb3MuCi0KLS0gSXNzdWUgIzE1NzE1OiBgaW1wb3J0bGliLl9faW1wb3J0X18oKWAgd2lsbCBzaWxlbmNlIGFuIEltcG9ydEVycm9yIHdoZW4gdGhlCi0gIHVzZSBvZiBmcm9tbGlzdCBsZWFkcyB0byBhIGZhaWxlZCBpbXBvcnQuCi0KLS0gSXNzdWUgIzE0NjY5OiBGaXggcGlja2xpbmcgb2YgY29ubmVjdGlvbnMgYW5kIHNvY2tldHMgb24gTWFjIE9TIFggYnkKLSAgc2VuZGluZy9yZWNlaXZpbmcgYW4gYWNrbm93bGVkZ21lbnQgYWZ0ZXIgZmlsZSBkZXNjcmlwdG9yIHRyYW5zZmVyLgotICBUZXN0UGlja2xpbmdDb25uZWN0aW9uIGhhcyBiZWVuIHJlZW5hYmxlZCBmb3IgTWFjIE9TIFguCi0KLS0gSXNzdWUgIzExMDYyOiBGaXggYWRkaW5nIGEgbWVzc2FnZSBmcm9tIGZpbGUgdG8gQmFieWwgbWFpbGJveC4KLQotLSBJc3N1ZSAjMTU2NDY6IFByZXZlbnQgZXF1aXZhbGVudCBvZiBhIGZvcmsgYm9tYiB3aGVuIHVzaW5nIGBtdWx0aXByb2Nlc3NpbmdgCi0gIG9uIFdpbmRvd3Mgd2l0aG91dCB0aGUgYGBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nYGAgaWRpb20uCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjMTU2Nzg6IEZpeCBJRExFIG1lbnVzIHdoZW4gc3RhcnRlZCBmcm9tIE9TIFggY29tbWFuZCBsaW5lICgzLjMuMGIyCi0gIHJlZ3Jlc3Npb24pLgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gVG91Y2hlZCB1cCB0aGUgUHl0aG9uIDIgdG8gMyBwb3J0aW5nIGd1aWRlLgotCi0tIElzc3VlICMxNDY3NDogQWRkIGEgZGlzY3Vzc2lvbiBvZiB0aGUgYGpzb25gIG1vZHVsZSdzIHN0YW5kYXJkIGNvbXBsaWFuY2UuCi0gIFBhdGNoIGJ5IENocmlzIFJlYmVydC4KLQotLSBDcmVhdGUgYSAnQ29uY3VycmVudCBFeGVjdXRpb24nIHNlY3Rpb24gaW4gdGhlIGRvY3MsIGFuZCBzcGxpdCB1cCB0aGUKLSAgJ09wdGlvbmFsIE9wZXJhdGluZyBTeXN0ZW0gU2VydmljZXMnIHNlY3Rpb24gdG8gdXNlIGEgbW9yZSB1c2VyLWNlbnRyaWMKLSAgY2xhc3NpZmljYXRpb24gc2NoZW1lIChzcGxpdHRpbmcgdGhlbSBhY3Jvc3MgdGhlIG5ldyBDRSBzZWN0aW9uLCBJUEMgYW5kIHRleHQKLSAgcHJvY2Vzc2luZykuIE9wZXJhdGluZyBzeXN0ZW0gbGltaXRhdGlvbnMgY2FuIGJlIHJlZmxlY3RlZCB3aXRoIHRoZSBTcGhpbngKLSAgYGA6cGxhdGZvcm06YGAgdGFnLCBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgYXMgcGFydCBvZiB0aGUgVGFibGUgb2YgQ29udGVudHMuCi0KLS0gSXNzdWUgIzQ5NjY6IEJyaW5nIHRoZSBzZXF1ZW5jZSBkb2NzIHVwIHRvIGRhdGUgZm9yIHRoZSBQeTNrIHRyYW5zaXRpb24gYW5kCi0gIHRoZSBtYW55IGxhbmd1YWdlIGVuaGFuY2VtZW50cyBzaW5jZSB0aGV5IHdlcmUgb3JpZ2luYWwgd3JpdHRlbi4KLQotLSBUaGUgInBhdGggaW1wb3J0ZXIiIG1pc25vbWVyIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggRXJpYyBTbm93J3MKLSAgbW9yZS1hd2t3YXJkLWJ1dC1hdC1sZWFzdC1ub3Qtd3Jvbmcgc3VnZ2VzdGlvbiBvZiAicGF0aCBiYXNlZCBmaW5kZXIiIGluIHRoZQotICBpbXBvcnQgc3lzdGVtIHJlZmVyZW5jZSBkb2NzLgotCi0tIElzc3VlICMxNTY0MDogRG9jdW1lbnQgYGltcG9ydGxpYi5hYmMuRmluZGVyYCBhcyBkZXByZWNhdGVkLgotCi0tIElzc3VlICMxNTYzMDogQWRkIGFuIGV4YW1wbGUgZm9yICJjb250aW51ZSIgc3RtdCBpbiB0aGUgdHV0b3JpYWwuICBQYXRjaCBieQotICBEYW5pZWwgRWxsaXMuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxNTc0NzogWkZTIGFsd2F5cyByZXR1cm5zIEVPUE5PVFNVUFAgd2hlbiBhdHRlbXB0aW5nIHRvIHNldCB0aGUKLSAgVUZfSU1NVVRBQkxFIGZsYWcgKHZpYSBlaXRoZXIgY2hmbGFncyBvciBsY2hmbGFncyk7IHJlZmFjdG9yIGFmZmVjdGVkIHRlc3RzIGluCi0gIHRlc3RfcG9zaXgucHkgdG8gYWNjb3VudCBmb3IgdGhpcy4KLQotLSBJc3N1ZSAjMTUyODU6IFJlZmFjdG9yIHRoZSBhcHByb2FjaCBmb3IgdGVzdGluZyBjb25uZWN0IHRpbWVvdXRzIHVzaW5nIHR3bwotICBleHRlcm5hbCBob3N0cyB0aGF0IGhhdmUgYmVlbiBjb25maWd1cmVkIHNwZWNpZmljYWxseSBmb3IgdGhpcyB0eXBlIG9mIHRlc3QuCi0KLS0gSXNzdWUgIzE1NzQzOiBSZW1vdmUgdGhlIGRlcHJlY2F0ZWQgbWV0aG9kIHVzYWdlIGluIGB1cmxsaWJgIHRlc3RzLiBQYXRjaCBieQotICBKZWZmIEtudXBwLgotCi0tIElzc3VlICMxNTYxNTogQWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBganNvbmAgbW9kdWxlJ3MgaGFuZGxpbmcgb2YgaW52YWxpZCBpbnB1dAotICBkYXRhLiAgUGF0Y2ggYnkgS3VzaGFsIERhcy4KLQotQnVpbGQKLS0tLS0tCi0KLS0gT3V0cHV0IGxpYiBmaWxlcyBmb3IgUEdPIGJ1aWxkIGludG8gUEdPIGRpcmVjdG9yeS4KLQotLSBQaWNrIHVwIDMyLWJpdCBsYXVuY2hlciBmcm9tIFBHTyBkaXJlY3Rvcnkgb24gNjQtYml0IFBHTyBidWlsZC4KLQotLSBEcm9wIGBgUENccHl0aG9uX250LmhgYCBhcyBpdCdzIG5vdCB1c2VkLiAgQWRkIGlucHV0IGRlcGVuZGVuY3kgb24gY3VzdG9tCi0gIGJ1aWxkIHN0ZXAuCi0KLS0gSXNzdWUgIzE1NTExOiBEcm9wIGV4cGxpY2l0IGRlcGVuZGVuY3kgb24gcHl0aG9ueHkubGliIGZyb20gX2RlY2ltYWwgYW1kNjQKLSAgY29uZmlndXJhdGlvbi4KLQotLSBBZGQgbWlzc2luZyBQR0kvUEdPIGNvbmZpZ3VyYXRpb25zIGZvciBweXdsYXVuY2hlci4KLQotLSBJc3N1ZSAjMTU2NDU6IEVuc3VyZSAydG8zIGdyYW1tYXIgcGlja2xlcyBhcmUgcHJvcGVybHkgaW5zdGFsbGVkLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEJldGEgMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMTItQXVnLTIwMTIqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNTU2ODogRml4IHRoZSByZXR1cm4gdmFsdWUgb2YgYGB5aWVsZCBmcm9tYGAgd2hlbiBTdG9wSXRlcmF0aW9uIGlzCi0gIHJhaXNlZCBieSBhIGN1c3RvbSBpdGVyYXRvci4KLQotLSBJc3N1ZSAjMTMxMTk6IGBzeXMuc3Rkb3V0YCBhbmQgYHN5cy5zdGRlcnJgIGFyZSBub3cgdXNpbmcgIlxyXG4iIG5ld2xpbmUgb24KLSAgV2luZG93cywgYXMgUHl0aG9uIDIuCi0KLS0gSXNzdWUgIzE1NTM0OiBGaXggdGhlIGZhc3Qtc2VhcmNoIGZ1bmN0aW9uIGZvciBub24tQVNDSUkgVW5pY29kZSBzdHJpbmdzLgotCi0tIElzc3VlICMxNTUwODogRml4IHRoZSBkb2NzdHJpbmcgZm9yIGBfX2ltcG9ydF9fKClgIHRvIGhhdmUgdGhlIHByb3BlciBkZWZhdWx0Ci0gIHZhbHVlIG9mIDAgZm9yICdsZXZlbCcgYW5kIHRvIG5vdCBtZW50aW9uIG5lZ2F0aXZlIGxldmVscyBzaW5jZSB0aGV5IGFyZSBub3QKLSAgc3VwcG9ydGVkLgotCi0tIElzc3VlICMxNTQyNTogRWxpbWluYXRlZCB0cmFjZWJhY2sgbm9pc2UgZnJvbSBtb3JlIHNpdHVhdGlvbnMgaW52b2x2aW5nCi0gIGltcG9ydGxpYi4KLQotLSBJc3N1ZSAjMTQ1Nzg6IFN1cHBvcnQgbW9kdWxlcyByZWdpc3RlcmVkIGluIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5IGFnYWluLgotCi0tIElzc3VlICMxNTQ2NjogU3RvcCB1c2luZyBUWVBFX0lOVDY0IGluIG1hcnNoYWwsIHRvIG1ha2UgaW1wb3J0bGliLmggKGFuZCBvdGhlcgotICBieXRlIGNvZGUgZmlsZXMpIGVxdWFsIGJldHdlZW4gMzItYml0IGFuZCA2NC1iaXQgc3lzdGVtcy4KLQotLSBJc3N1ZSAjMTY5MjMzNTogTW92ZSBpbml0aWFsIGV4Y2VwdGlvbiBhcmdzIGFzc2lnbm1lbnQgdG8KLSAgYEJhc2VFeGNlcHRpb24uX19uZXdfXygpYCB0byBoZWxwIHBpY2tsaW5nIG9mIG5haXZlIHN1YmNsYXNzZXMuCi0KLS0gSXNzdWUgIzEyODM0OiBGaXggYFB5QnVmZmVyX1RvQ29udGlndW91cygpYCBmb3Igbm9uLWNvbnRpZ3VvdXMgYXJyYXlzLgotCi0tIElzc3VlICMxNTQ1NjogRml4IGNvZGUgYF9fc2l6ZW9mX18oKWAgYWZ0ZXIgIzEyMzk5IGNoYW5nZS4gIFBhdGNoIGJ5IFNlcmhpeQotICBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NDA0OiBSZWZsZWFrIGluIFB5TWV0aG9kT2JqZWN0IHJlcHIuCi0KLS0gSXNzdWUgIzE1Mzk0OiBBbiBpc3N1ZSBpbiBgUHlNb2R1bGVfQ3JlYXRlKClgIHRoYXQgY2F1c2VkIHJlZmVyZW5jZXMgdG8gYmUKLSAgbGVha2VkIG9uIHNvbWUgZXJyb3IgcGF0aHMgaGFzIGJlZW4gZml4ZWQuICBQYXRjaCBieSBKdWxpYSBMYXdhbGwuCi0KLS0gSXNzdWUgIzE1MzY4OiBBbiBpc3N1ZSB0aGF0IGNhdXNlZCBieXRlY29kZSBnZW5lcmF0aW9uIHRvIGJlIG5vbi1kZXRlcm1pbmlzdGljCi0gIGhhcyBiZWVuIGZpeGVkLgotCi0tIElzc3VlICMxNTIwMjogQ29uc2lzdGVudGx5IHVzZSB0aGUgbmFtZSAiZm9sbG93X3N5bWxpbmtzIiBmb3IgbmV3IHBhcmFtZXRlcnMKLSAgaW4gb3MgYW5kIHNodXRpbCBmdW5jdGlvbnMuCi0KLS0gSXNzdWUgIzE1MzE0OiBgYF9fbWFpbl9fLl9fbG9hZGVyX19gYCBpcyBub3cgc2V0IGNvcnJlY3RseSBkdXJpbmcgaW50ZXJwcmV0ZXIKLSAgc3RhcnR1cC4KLQotLSBJc3N1ZSAjMTUxMTE6IFdoZW4gYSBtb2R1bGUgaW1wb3J0ZWQgdXNpbmcgJ2Zyb20gaW1wb3J0JyBoYXMgYW4gSW1wb3J0RXJyb3IKLSAgaW5zaWRlIGl0c2VsZiwgZG9uJ3QgbWFzayB0aGF0IGZhY3QgYmVoaW5kIGEgZ2VuZXJpYyBJbXBvcnRFcnJvciBmb3IgdGhlCi0gIG1vZHVsZSBpdHNlbGYuCi0KLS0gSXNzdWUgIzE1MjkzOiBBZGQgR0Mgc3VwcG9ydCB0byB0aGUgQVNUIGJhc2Ugbm9kZSB0eXBlLgotCi0tIElzc3VlICMxNTI5MTogRml4IGEgbWVtb3J5IGxlYWsgd2hlcmUgQVNUIG5vZGVzIHdoZXJlIG5vdCBwcm9wZXJseQotICBkZWFsbG9jYXRlZC4KLQotLSBJc3N1ZSAjMTUxMTA6IEZpeCB0aGUgdHJhY2ViYWNrcyBnZW5lcmF0ZWQgYnkgImltcG9ydCB4eHgiIHRvIG5vdCBzaG93IHRoZQotICBpbXBvcnRsaWIgc3RhY2sgZnJhbWVzLgotCi0tIElzc3VlICMxNjM2OTogR2xvYmFsIFB5VHlwZU9iamVjdHMgbm90IGluaXRpYWxpemVkIHdpdGggUHlUeXBlX1JlYWR5KC4uLikuCi0KLS0gSXNzdWUgIzE1MDIwOiBUaGUgcHJvZ3JhbSBuYW1lIHVzZWQgdG8gc2VhcmNoIGZvciBQeXRob24ncyBwYXRoIGlzIG5vdwotICAicHl0aG9uMyIgdW5kZXIgVW5peCwgbm90ICJweXRob24iLgotCi0tIElzc3VlICMxNTg5NzogemlwaW1wb3J0LmMgZG9lc24ndCBjaGVjayByZXR1cm4gdmFsdWUgb2YgZnNlZWsoKS4KLSAgUGF0Y2ggYnkgRmVsaXBlIENydXouCi0KLS0gSXNzdWUgIzE1MDMzOiBGaXggdGhlIGV4aXQgc3RhdHVzIGJ1ZyB3aGVuIG1vZHVsZXMgaW52b2tlZCB1c2luZyAtbSBzd2l0Y2gsCi0gIHJldHVybiB0aGUgcHJvcGVyIGZhaWx1cmUgcmV0dXJuIHZhbHVlICgxKS4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgSmVmZiBLbnVwcC4KLQotLSBJc3N1ZSAjMTUyMjk6IEFuIGBPU0Vycm9yYCBzdWJjbGFzcyB3aG9zZSBfX2luaXRfXyBkb2Vzbid0IGNhbGwgYmFjawotICBPU0Vycm9yLl9faW5pdF9fIGNvdWxkIHByb2R1Y2UgaW5jb21wbGV0ZSBpbnN0YW5jZXMsIGxlYWRpbmcgdG8gY3Jhc2hlcyB3aGVuCi0gIGNhbGxpbmcgc3RyKCkgb24gdGhlbS4KLQotLSBJc3N1ZSAjMTUzMDc6IFZpcnR1YWwgZW52aXJvbm1lbnRzIG5vdyB1c2Ugc3ltbGlua3Mgd2l0aCBmcmFtZXdvcmsgYnVpbGRzIG9uCi0gIE1hYyBPUyBYLCBsaWtlIG90aGVyIFBPU0lYIGJ1aWxkcy4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMxNDU5MDogY29uZmlncGFyc2VyIG5vdyBjb3JyZWN0bHkgc3RyaXBzIGlubGluZSBjb21tZW50cyB3aGVuIGRlbGltaXRlcgotICBvY2N1cnMgZWFybGllciB3aXRob3V0IHByZWNlZGluZyBzcGFjZS4KLQotLSBJc3N1ZSAjMTU0MjQ6IEFkZCBhIGBfX3NpemVvZl9fKClgIGltcGxlbWVudGF0aW9uIGZvciBhcnJheSBvYmplY3RzLiAgUGF0Y2ggYnkKLSAgTHVkd2lnIEjDpGhuZS4KLQotLSBJc3N1ZSAjMTU1NzY6IEFsbG93IGV4dGVuc2lvbiBtb2R1bGVzIHRvIGFjdCBhcyBhIHBhY2thZ2UncyBfX2luaXRfXyBtb2R1bGUuCi0KLS0gSXNzdWUgIzE1NTAyOiBIYXZlIGBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKWAgd29yayBvbiBgc3lzLm1ldGFfcGF0aGAKLSAgaW5zdGVhZCBvZiBgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLgotCi0tIElzc3VlICMxNTE2MzogUHlkb2Mgc2hvdWxkbid0IGxpc3QgX19sb2FkZXJfXyBhcyBtb2R1bGUgZGF0YS4KLQotLSBJc3N1ZSAjMTU0NzE6IERvIG5vdCB1c2UgbXV0YWJsZSBvYmplY3RzIGFzIGRlZmF1bHRzIGZvcgotICBgaW1wb3J0bGliLl9faW1wb3J0X18oKWAuCi0KLS0gSXNzdWUgIzE1NTU5OiBUbyBhdm9pZCBhIHByb2JsZW1hdGljIGZhaWx1cmUgbW9kZSB3aGVuIHBhc3NlZCB0byB0aGUgYnl0ZXMKLSAgY29uc3RydWN0b3IsIG9iamVjdHMgaW4gdGhlIGlwYWRkcmVzcyBtb2R1bGUgbm8gbG9uZ2VyIGltcGxlbWVudCBgX19pbmRleF9fKClgCi0gICh0aGV5IHN0aWxsIGltcGxlbWVudCBgX19pbnRfXygpYCBhcyBhcHByb3ByaWF0ZSkuCi0KLS0gSXNzdWUgIzE1NTQ2OiBGaXggaGFuZGxpbmcgb2YgcGF0aG9sb2dpY2FsIGlucHV0IGRhdGEgaW4gdGhlIHBlZWsoKSBhbmQKLSAgcmVhZDEoKSBtZXRob2RzIG9mIHRoZSBCWjJGaWxlLCBHemlwRmlsZSBhbmQgTFpNQUZpbGUgY2xhc3Nlcy4KLQotLSBJc3N1ZSAjMTI2NTU6IEluc3RlYWQgb2YgcmVxdWlyaW5nIGEgY3VzdG9tIHR5cGUsIGBvcy5zY2hlZF9nZXRhZmZpbml0eSgpYCBhbmQKLSAgYG9zLnNjaGVkX3NldGFmZmluaXR5KClgIG5vdyB1c2UgcmVndWxhciBzZXRzIG9mIGludGVnZXJzIHRvIHJlcHJlc2VudCB0aGUKLSAgQ1BVcyBhIHByb2Nlc3MgaXMgcmVzdHJpY3RlZCB0by4KLQotLSBJc3N1ZSAjMTU1Mzg6IEZpeCBjb21waWxhdGlvbiBvZiB0aGUgYHNvY2tldC5nZXRuYW1laW5mbygpYCAvCi0gIGBzb2NrZXQuZ2V0YWRkcmluZm8oKWAgZW11bGF0aW9uIGNvZGUuICBQYXRjaCBieSBQaGlsaXBwIEhhZ2VtZWlzdGVyLgotCi0tIElzc3VlICMxNTUxOTogUHJvcGVybHkgZXhwb3NlIFdpbmRvd3NSZWdpc3RyeUZpbmRlciBpbiBpbXBvcnRsaWIgKGFuZCB1c2UgdGhlCi0gIGNvcnJlY3QgdGVybSBmb3IgaXQpLiAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpYyBTbm93LgotCi0tIElzc3VlICMxNTUwMjogQnJpbmcgdGhlIGltcG9ydGxpYiBBQkNzIGludG8gbGluZSB3aXRoIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZQotICBpbXBvcnQgcHJvdG9jb2xzIGdpdmVuIFBFUCA0MjAuICBPcmlnaW5hbCBwYXRjaCBieSBFcmljIFNub3cuCi0KLS0gSXNzdWUgIzE1NDk5OiBMYXVuY2hpbmcgYSB3ZWJicm93c2VyIGluIFVuaXggdXNlZCB0byBzbGVlcCBmb3IgYSBmZXcgc2Vjb25kcy4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgQW50b24gQmFya292c2t5LgotCi0tIElzc3VlICMxNTQ2MzogVGhlIGZhdWx0aGFuZGxlciBtb2R1bGUgdHJ1bmNhdGVzIHN0cmluZ3MgdG8gNTAwIGNoYXJhY3RlcnMsCi0gIGluc3RlYWQgb2YgMTAwLCB0byBiZSBhYmxlIHRvIGRpc3BsYXkgbG9uZyBmaWxlIHBhdGhzLgotCi0tIElzc3VlICM2MDU2OiBNYWtlIGBtdWx0aXByb2Nlc3NpbmdgIHVzZSBzZXRibG9ja2luZyhUcnVlKSBvbiB0aGUgc29ja2V0cyBpdAotICB1c2VzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgSiBEZXJlayBXaWxzb24uCi0KLS0gSXNzdWUgIzE1MzY0OiBGaXggc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKSB0byBiZSBhbiBhYnNvbHV0ZSBwYXRoLgotCi0tIElzc3VlICMxNTQxMzogYG9zLnRpbWVzKClgIGhhZCBkaXNhcHBlYXJlZCB1bmRlciBXaW5kb3dzLgotCi0tIElzc3VlICMxNTQwMjogQW4gaXNzdWUgaW4gdGhlIHN0cnVjdCBtb2R1bGUgdGhhdCBjYXVzZWQgYHN5cy5nZXRzaXplb2YoKWAgdG8KLSAgcmV0dXJuIGluY29ycmVjdCByZXN1bHRzIGZvciBzdHJ1Y3QuU3RydWN0IGluc3RhbmNlcyBoYXMgYmVlbiBmaXhlZC4gIEluaXRpYWwKLSAgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTUyMzI6IFdoZW4gbWFuZ2xlX2Zyb20gaXMgVHJ1ZSwgYGVtYWlsLkdlbmVyYXRvcmAgbm93IGNvcnJlY3RseQotICBtYW5nbGVzIGxpbmVzIHRoYXQgc3RhcnQgd2l0aCAnRnJvbSAnIHRoYXQgb2NjdXIgaW4gYSBNSU1FIHByZWFtYmxlIG9yCi0gIGVwaWxvZ3VlLgotCi0tIElzc3VlICMxNTA5NDogSW5jb3JyZWN0bHkgcGxhY2VkICNlbmRpZiBpbiBfdGtpbnRlci5jLiAgUGF0Y2ggYnkgU2VyaGl5Ci0gIFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTM5MjI6IGBhcmdwYXJzZWAgbm8gbG9uZ2VyIGluY29ycmVjdGx5IHN0cmlwcyAnLS0ncyB0aGF0IGFwcGVhciBhZnRlcgotICB0aGUgZmlyc3Qgb25lLgotCi0tIElzc3VlICMxMjM1MzogYGFyZ3BhcnNlYCBub3cgY29ycmVjdGx5IGhhbmRsZXMgbnVsbCBhcmd1bWVudCB2YWx1ZXMuCi0KLS0gSXNzdWUgIzEwMDE3LCBpc3N1ZSAjMTQ5OTg6IEZpeCBUeXBlRXJyb3IgdXNpbmcgcHByaW50IG9uIGRpY3Rpb25hcmllcyB3aXRoCi0gIHVzZXItZGVmaW5lZCB0eXBlcyBhcyBrZXlzIG9yIG90aGVyIHVub3JkZXJhYmxlIGtleXMuCi0KLS0gSXNzdWUgIzE1Mzk3OiBgaW5zcGVjdC5nZXRtb2R1bGVuYW1lKClgIGlzIG5vdyBiYXNlZCBkaXJlY3RseSBvbiBpbXBvcnRsaWIgdmlhCi0gIGEgbmV3IGBpbXBvcnRsaWIubWFjaGluZXJ5LmFsbF9zdWZmaXhlcygpYCBBUEkuCi0KLS0gSXNzdWUgIzE0NjM1OiBgdGVsbmV0bGliYCB3aWxsIHVzZSBwb2xsKCkgcmF0aGVyIHRoYW4gc2VsZWN0KCkgd2hlbiBwb3NzaWJsZSB0bwotICBhdm9pZCBmYWlsaW5nIGR1ZSB0byB0aGUgc2VsZWN0KCkgZmlsZSBkZXNjcmlwdG9yIGxpbWl0LgotCi0tIElzc3VlICMxNTE4MDogQ2xhcmlmeSBwb3NpeHBhdGguam9pbigpIGVycm9yIG1lc3NhZ2Ugd2hlbiBtaXhpbmcgc3RyICYgYnl0ZXMuCi0KLS0gSXNzdWUgIzE1MzQzOiBwa2d1dGlsIG5vdyBpbmNsdWRlcyBhbiBpdGVyX2ltcG9ydGVyX21vZHVsZXMgaW1wbGVtZW50YXRpb24gZm9yCi0gIGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlciAoc2ltaWxhciB0byB0aGUgd2F5IGl0IGFscmVhZHkgaGFuZGxlZAotICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpLgotCi0tIElzc3VlICMxNTMxNDogcnVucHkgbm93IHNldHMgX19tYWluX18uX19sb2FkZXJfXyBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzE1MzU3OiBUaGUgaW1wb3J0IGVtdWxhdGlvbiBpbiBwa2d1dGlsIGlzIG5vdyBkZXByZWNhdGVkLiBwa2d1dGlsIHVzZXMKLSAgaW1wb3J0bGliIGludGVybmFsbHkgcmF0aGVyIHRoYW4gdGhlIGVtdWxhdGlvbi4KLQotLSBJc3N1ZSAjMTUyMzM6IFB5dGhvbiBub3cgZ3VhcmFudGVlcyB0aGF0IGNhbGxhYmxlcyByZWdpc3RlcmVkIHdpdGggdGhlIGF0ZXhpdAotICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgaW4gYSBkZXRlcm1pbmlzdGljIG9yZGVyLgotCi0tIElzc3VlICMxNTIzODogYHNodXRpbC5jb3B5c3RhdCgpYCBub3cgY29waWVzIExpbnV4ICJleHRlbmRlZCBhdHRyaWJ1dGVzIi4KLQotLSBJc3N1ZSAjMTUyMzA6IHJ1bnB5LnJ1bl9wYXRoIG5vdyBjb3JyZWN0bHkgc2V0cyBfX3BhY2thZ2VfXyBhcyBkZXNjcmliZWQgaW4KLSAgdGhlIGRvY3VtZW50YXRpb24uCi0KLS0gSXNzdWUgIzE1MzE1OiBTdXBwb3J0IFZTIDIwMTAgaW4gZGlzdHV0aWxzIGN5Z3dpbmNvbXBpbGVyLgotCi0tIElzc3VlICMxNTI5NDogRml4IGEgcmVncmVzc2lvbiBpbiBwa2d1dGlsLmV4dGVuZF9wYXRoKCkncyBoYW5kbGluZyBvZiBuZXN0ZWQKLSAgbmFtZXNwYWNlIHBhY2thZ2VzLgotCi0tIElzc3VlICMxNTA1NjogYGltcC5jYWNoZV9mcm9tX3NvdXJjZSgpYCBhbmQgYGltcC5zb3VyY2VfZnJvbV9jYWNoZSgpYCByYWlzZQotICBOb3RJbXBsZW1lbnRlZEVycm9yIHdoZW4gYHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIHNldCB0byBOb25lLgotCi0tIElzc3VlICMxNTI1NjogR3JhbW1hdGljYWwgbWlzdGFrZSBpbiBleGNlcHRpb24gcmFpc2VkIGJ5IGBpbXAuZmluZF9tb2R1bGUoKWAuCi0KLS0gSXNzdWUgIzU5MzE6IGB3c2dpcmVmYCBlbnZpcm9uIHZhcmlhYmxlIFNFUlZFUl9TT0ZUV0FSRSB3aWxsIHNwZWNpZnkgYW4KLSAgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgdGVybSBsaWtlIENQeXRob24sIEp5dGhvbiBpbnN0ZWFkIG9mIGdlbmVyaWMgIlB5dGhvbiIuCi0KLS0gSXNzdWUgIzEzMjQ4OiBSZW1vdmUgb2Jzb2xldGUgYXJndW1lbnQgIm1heF9idWZmZXJfc2l6ZSIgb2YgQnVmZmVyZWRXcml0ZXIgYW5kCi0gIEJ1ZmZlcmVkUldQYWlyLCBmcm9tIHRoZSBpbyBtb2R1bGUuCi0KLS0gSXNzdWUgIzEzMjQ4OiBSZW1vdmUgb2Jzb2xldGUgYXJndW1lbnQgInZlcnNpb24iIG9mIGBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcmAuCi0KLS0gSXNzdWUgIzE0ODE0OiBJbXBsZW1lbnQgbW9yZSBjb25zaXN0ZW50IG9yZGVyaW5nIGFuZCBzb3J0aW5nIGJlaGF2aW91ciBmb3IKLSAgaXBhZGRyZXNzIG9iamVjdHMuCi0KLS0gSXNzdWUgIzE0ODE0OiBgaXBhZGRyZXNzYCBuZXR3b3JrIG9iamVjdHMgY29ycmVjdGx5IHJldHVybiBOb3RJbXBsZW1lbnRlZCB3aGVuCi0gIGNvbXBhcmVkIHRvIGFyYml0cmFyeSBvYmplY3RzIGluc3RlYWQgb2YgcmFpc2luZyBUeXBlRXJyb3IuCi0KLS0gSXNzdWUgIzE0OTkwOiBDb3JyZWN0bHkgZmFpbCB3aXRoIFN5bnRheEVycm9yIG9uIGludmFsaWQgZW5jb2RpbmcgZGVjbGFyYXRpb24uCi0KLS0gSXNzdWUgIzE0ODE0OiBgaXBhZGRyZXNzYCBub3cgcHJvdmlkZXMgbW9yZSBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlcyB3aGVuCi0gIGNvbnN0cnVjdGluZyBpbnN0YW5jZXMgZGlyZWN0bHkgKGNoYW5nZXMgcGVybWl0dGVkIGR1cmluZyBiZXRhIGR1ZSB0bwotICBwcm92aXNpb25hbCBBUEkgc3RhdHVzKS4KLQotLSBJc3N1ZSAjMTUyNDc6IGBpby5GaWxlSU9gIG5vdyByYWlzZXMgYW4gZXJyb3Igd2hlbiBnaXZlbiBhIGZpbGUgZGVzY3JpcHRvcgotICBwb2ludGluZyB0byBhIGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjMTUyNjE6IFN0b3Agb3Muc3RhdChmZCkgY3Jhc2hpbmcgb24gV2luZG93cyB3aGVuIGZkIG5vdCBvcGVuLgotCi0tIElzc3VlICMxNTE2NjogSW1wbGVtZW50IGBpbXAuZ2V0X3RhZygpYCB1c2luZyBgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ2AuCi0KLS0gSXNzdWUgIzE1MjEwOiBDYXRjaCBLZXlFcnJvciB3aGVuIGBpbXBvcnRsaWIuX19pbml0X18oKWAgY2FuJ3QgZmluZAotICBfZnJvemVuX2ltcG9ydGxpYiBpbiBzeXMubW9kdWxlcywgbm90IEltcG9ydEVycm9yLgotCi0tIElzc3VlICMxNTAzMDogYGltcG9ydGxpYi5hYmMuUHlQeWNMb2FkZXJgIG5vdyBzdXBwb3J0cyB0aGUgbmV3IHNvdXJjZSBzaXplCi0gIGhlYWRlciBmaWVsZCBpbiAucHljIGZpbGVzLgotCi0tIElzc3VlICM1MzQ2OiBQcmVzZXJ2ZSBwZXJtaXNzaW9ucyBvZiBtYm94LCBNTURGIGFuZCBCYWJ5bCBtYWlsYm94IGZpbGVzIG9uCi0gIGZsdXNoKCkuCi0KLS0gSXNzdWUgIzEwNTcxOiBGaXggdGhlICItLXNpZ24iIG9wdGlvbiBvZiBkaXN0dXRpbHMnIHVwbG9hZCBjb21tYW5kLiAgUGF0Y2ggYnkKLSAgSmFrdWIgV2lsay4KLQotLSBJc3N1ZSAjOTU1OTogSWYgbWVzc2FnZXMgd2VyZSBvbmx5IGFkZGVkLCBhIG5ldyBmaWxlIGlzIG5vIGxvbmdlciBjcmVhdGVkIGFuZAotICByZW5hbWVkIG92ZXIgdGhlIG9sZCBmaWxlIHdoZW4gZmx1c2goKSBpcyBjYWxsZWQgb24gYW4gbWJveCwgTU1ERiBvciBCYWJ5bAotICBtYWlsYm94LgotCi0tIElzc3VlICMxMDkyNDogRml4ZWQgYGNyeXB0Lm1rc2FsdCgpYCB0byB1c2UgYSBSTkcgdGhhdCBpcyBzdWl0YWJsZSBmb3IKLSAgY3J5cHRvZ3JhcGhpYyBwdXJwb3NlLgotCi0tIElzc3VlICMxNTE4NDogRW5zdXJlIGNvbnNpc3RlbnQgcmVzdWx0cyBvZiBPUyBYIGNvbmZpZ3VyYXRpb24gdGFpbG9yaW5nIGZvcgotICB1bml2ZXJzYWwgYnVpbGRzIGJ5IGZhY3RvcmluZyBvdXQgY29tbW9uIE9TIFgtc3BlY2lmaWMgY3VzdG9taXphdGlvbnMgZnJvbQotICBzeXNjb25maWcsIGRpc3R1dGlscy5zeXNjb25maWcsIGRpc3R1dGlscy51dGlsLCBhbmQgZGlzdHV0aWxzLnVuaXhjY29tcGlsZXIKLSAgaW50byBhIG5ldyBtb2R1bGUgX29zeF9zdXBwb3J0LgotCi1DIEFQSQotLS0tLS0KLQotLSBJc3N1ZSAjMTU2MTA6IGBQeUltcG9ydF9JbXBvcnRNb2R1bGVFeCgpYCBub3cgdXNlcyBhICdsZXZlbCcgb2YgMCBpbnN0ZWFkIG9mIC0xLgotCi0tIElzc3VlICMxNTE2OSwgaXNzdWUgIzE0NTk5OiBTdHJpcCBvdXQgdGhlIEMgaW1wbGVtZW50YXRpb24gb2YKLSAgYGltcC5zb3VyY2VfZnJvbV9jYWNoZSgpYCB1c2VkIGJ5IFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcygpIGFuZAotICB1c2VkIHRoZSBQeXRob24gY29kZSBpbnN0ZWFkLiBMZWFkcyB0byBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdCgpIHRvIG5vdAotICB0cnkgdG8gaW5mZXIgdGhlIHNvdXJjZSBwYXRoIGZyb20gdGhlIGJ5dGVjb2RlIHBhdGggYXMKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKCkgZG9lcy4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzY0OTM6IEFuIGlzc3VlIGluIGN0eXBlcyBvbiBXaW5kb3dzIHRoYXQgY2F1c2VkIHN0cnVjdHVyZSBiaXRmaWVsZHMgb2YKLSAgdHlwZSBgY3R5cGVzLmNfdWludDMyYCBhbmQgd2lkdGggMzIgdG8gaW5jb3JyZWN0bHkgYmUgc2V0IGhhcyBiZWVuIGZpeGVkLgotCi0tIElzc3VlICMxNTE5NDogVXBkYXRlIGxpYmZmaSB0byB0aGUgMy4wLjExIHJlbGVhc2UuCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjMTMwNTI6IEZpeCBJRExFIGNyYXNoaW5nIHdoZW4gcmVwbGFjZSBzdHJpbmcgaW4gU2VhcmNoL1JlcGxhY2UgZGlhbG9nCi0gIGVuZGVkIHdpdGggYGBcYGAuICBQYXRjaCBieSBSb2dlciBTZXJ3eS4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE1NDU4OiBweXRob24tY29uZmlnIGdldHMgYSBuZXcgb3B0aW9uIC0tY29uZmlnZGlyIHRvIHByaW50IHRoZSAkTElCUEwKLSAgdmFsdWUuCi0KLS0gTW92ZSBpbXBvcnRsaWIudGVzdC5iZW5jaG1hcmsgdG8gVG9vbHMvaW1wb3J0YmVuY2guCi0KLS0gSXNzdWUgIzEyNjA1OiBUaGUgZ2RiIGhvb2tzIGZvciBkZWJ1Z2dpbmcgQ1B5dGhvbiAod2l0aGluIFRvb2xzL2dkYikgaGF2ZSBiZWVuCi0gIGVuaGFuY2VkIHRvIHNob3cgaW5mb3JtYXRpb24gb24gbW9yZSBDIGZyYW1lcyByZWxldmFudCB0byBDUHl0aG9uIHdpdGhpbiB0aGUKLSAgInB5LWJ0IiBhbmQgInB5LWJ0LWZ1bGwiIGNvbW1hbmRzOgotCi0gICogQyBmcmFtZXMgdGhhdCBhcmUgd2FpdGluZyBvbiB0aGUgR0lMCi0gICogQyBmcmFtZXMgdGhhdCBhcmUgZ2FyYmFnZS1jb2xsZWN0aW5nCi0gICogQyBmcmFtZXMgdGhhdCBhcmUgZHVlIHRvIHRoZSBpbnZvY2F0aW9uIG9mIGEgUHlDRnVuY3Rpb24KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNTA0MTogVXBkYXRlICJzZWUgYWxzbyIgbGlzdCBpbiB0a2ludGVyIGRvY3VtZW50YXRpb24uCi0KLS0gSXNzdWUgIzE1NDQ0OiBVc2UgcHJvcGVyIHNwZWxsaW5nIGZvciBub24tQVNDSUkgY29udHJpYnV0b3IgbmFtZXMuICBQYXRjaCBieQotICBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTI5NTogUmVvcmdhbml6ZSBhbmQgcmV3cml0ZSB0aGUgZG9jdW1lbnRhdGlvbiBvbiB0aGUgaW1wb3J0IHN5c3RlbS4KLQotLSBJc3N1ZSAjMTUyMzA6IENsZWFybHkgZG9jdW1lbnQgc29tZSBvZiB0aGUgbGltaXRhdGlvbnMgb2YgdGhlIHJ1bnB5IG1vZHVsZSBhbmQKLSAgbnVkZ2UgcmVhZGVycyB0b3dhcmRzIGltcG9ydGxpYiB3aGVuIGFwcHJvcHJpYXRlLgotCi0tIElzc3VlICMxNTA1MzogQ29weSBQeXRob24gMy4zIGltcG9ydCBsb2NrIGNoYW5nZSBub3RpY2UgdG8gYWxsIHJlbGV2YW50Ci0gIGZ1bmN0aW9ucyBpbiBpbXAgaW5zdGVhZCBvZiBqdXN0IGF0IHRoZSB0b3Agb2YgdGhlIHJlbGV2YW50IHNlY3Rpb24uCi0KLS0gSXNzdWUgIzE1Mjg4OiBMaW5rIHRvIHRoZSB0ZXJtICJsb2FkZXIiIGluIG5vdGVzIGluIHBrZ3V0aWwgYWJvdXQgaG93IHRoaW5ncwotICB3b24ndCB3b3JrIGFzIGV4cGVjdGVkIGluIFB5dGhvbiAzLjMgYW5kIG1hcmsgdGhlIHJlcXVpc2l0ZSBmdW5jdGlvbnMgYXMKLSAgImNoYW5nZWQiIHNpbmNlIHRoZXkgd2lsbCBubyBsb25nZXIgd29yayB3aXRoIG1vZHVsZXMgZGlyZWN0bHkgaW1wb3J0ZWQgYnkKLSAgaW1wb3J0IGl0c2VsZi4KLQotLSBJc3N1ZSAjMTM1NTc6IENsYXJpZnkgZWZmZWN0IG9mIGdpdmluZyB0d28gZGlmZmVyZW50IG5hbWVzcGFjZXMgdG8gYGV4ZWMoKWAgb3IKLSAgYGV4ZWNmaWxlKClgLgotCi0tIElzc3VlICMxNTI1MDogRG9jdW1lbnQgdGhhdCBgZmlsZWNtcC5kaXJjbXAoKWAgY29tcGFyZXMgZmlsZXMgc2hhbGxvd2x5LiBQYXRjaAotICBjb250cmlidXRlZCBieSBDaHJpcyBKZXJkb25lay4KLQotLSBJc3N1ZSAjMTU0NDI6IEV4cG9zZSB0aGUgZGVmYXVsdCBsaXN0IG9mIGRpcmVjdG9yaWVzIGlnbm9yZWQgYnkKLSAgYGZpbGVjbXAuZGlyY21wKClgIGFzIGEgbW9kdWxlIGF0dHJpYnV0ZSwgYW5kIGV4cGFuZCB0aGUgbGlzdCB0byBtb3JlIG1vZGVybgotICB2YWx1ZXMuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxNTQ2NzogTW92ZSBoZWxwZXJzIGZvciBgX19zaXplb2ZfXygpYCB0ZXN0cyBpbnRvIHRlc3Rfc3VwcG9ydC4gIFBhdGNoCi0gIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1MzIwOiBNYWtlIGl0ZXJhdGluZyB0aGUgbGlzdCBvZiB0ZXN0cyB0aHJlYWQtc2FmZSB3aGVuIHJ1bm5pbmcgdGVzdHMKLSAgaW4gbXVsdGlwcm9jZXNzIG1vZGUuIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgotCi0tIElzc3VlICMxNTE2ODogTW92ZSBgaW1wb3J0bGliLnRlc3RgIHRvIGB0ZXN0LnRlc3RfaW1wb3J0bGliYC4KLQotLSBJc3N1ZSAjMTUwOTE6IFJlYWN0aXZhdGUgYSB0ZXN0IG9uIFVOSVggd2hpY2ggd2FzIGZhaWxpbmcgdGhhbmtzIHRvIGEKLSAgZm9yZ290dGVuIGBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKWAgY2FsbC4KLQotLSBJc3N1ZSAjMTUyMzA6IEFkb3B0ZWQgYSBtb3JlIHN5c3RlbWF0aWMgYXBwcm9hY2ggaW4gdGhlIHJ1bnB5IHRlc3RzLgotCi0tIElzc3VlICMxNTMwMDogRW5zdXJlIHRoZSB0ZW1wb3JhcnkgdGVzdCB3b3JraW5nIGRpcmVjdG9yaWVzIGFyZSBpbiB0aGUgc2FtZQotICBwYXJlbnQgZm9sZGVyIHdoZW4gcnVubmluZyB0ZXN0cyBpbiBtdWx0aXByb2Nlc3MgbW9kZSBmcm9tIGEgUHl0aG9uIGJ1aWxkLgotICBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KLQotLSBJc3N1ZSAjMTUyODQ6IFNraXAge3NlbmQscmVjdn1tc2cgdGVzdHMgaW4gdGVzdF9zb2NrZXQgd2hlbiBJUHY2IGlzIG5vdAotICBlbmFibGVkLiBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCi0KLS0gSXNzdWUgIzE1Mjc3OiBGaXggYSByZXNvdXJjZSBsZWFrIGluIHN1cHBvcnQucHkgd2hlbiBJUHY2IGlzIGRpc2FibGVkLiAgUGF0Y2gKLSAgYnkgQnJpYW4gQnJhemlsLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTE3MTU6IEZpeCBtdWx0aWFyY2ggZGV0ZWN0aW9uIHdpdGhvdXQgaGF2aW5nIERlYmlhbiBkZXZlbG9wbWVudCB0b29scwotICAoZHBrZy1kZXYpIGluc3RhbGxlZC4KLQotLSBJc3N1ZSAjMTUwMzc6IEJ1aWxkIE9TIFggaW5zdGFsbGVycyB3aXRoIGxvY2FsIGNvcHkgb2YgbmN1cnNlcyA1LjkgbGlicmFyaWVzCi0gIHRvIGF2b2lkIGN1cnNlcy51bmdldF93Y2ggYnVnIHByZXNlbnQgaW4gb2xkZXIgdmVyc2lvbnMgb2YgbmN1cnNlcyBzdWNoIGFzCi0gIHRob3NlIHNoaXBwZWQgd2l0aCBPUyBYLgotCi0tIElzc3VlICMxNTU2MDogRml4IGJ1aWxkaW5nIF9zcWxpdGUzIGV4dGVuc2lvbiBvbiBPUyBYIHdpdGggYW4gU0RLLiAgQWxzbywgZm9yCi0gIE9TIFggaW5zdGFsbGVycywgZW5zdXJlIGNvbnNpc3RlbnQgc3FsaXRlMyBiZWhhdmlvciBhbmQgZmVhdHVyZSBhdmFpbGFiaWxpdHkKLSAgYnkgYnVpbGRpbmcgYSBsb2NhbCBjb3B5IG9mIGxpYnNxbGl0ZTMgcmF0aGVyIHRoYW4gZGVwZW5kaW5nIG9uIHRoZSB3aWRlIHJhbmdlCi0gIG9mIHZlcnNpb25zIHN1cHBsaWVkIHdpdGggdmFyaW91cyBPUyBYIHJlbGVhc2VzLgotCi0tIElzc3VlICM4ODQ3OiBEaXNhYmxlIENPTURBVCBmb2xkaW5nIGluIFdpbmRvd3MgUEdPIGJ1aWxkcy4KLQotLSBJc3N1ZSAjMTQwMTg6IEZpeCBPUyBYIFRjbC9UayBmcmFtZXdvcmsgY2hlY2tpbmcgd2hlbiB1c2luZyBPUyBYIFNES3MuCi0KLS0gSXNzdWUgIzE2MjU2OiBPUyBYIGluc3RhbGxlciBub3cgc2V0cyBjb3JyZWN0IHBlcm1pc3Npb25zIGZvciBkb2MgZGlyZWN0b3J5LgotCi0tIElzc3VlICMxNTQzMTogQWRkIF9mcmVlemVfaW1wb3J0bGliIHByb2plY3QgdG8gcmVnZW5lcmF0ZSBpbXBvcnRsaWIuaCBvbgotICBXaW5kb3dzLiBQYXRjaCBieSBLcmlzdGrDoW4gVmFsdXIgSsOzbnNzb24uCi0KLS0gSXNzdWUgIzE0MTk3OiBGb3IgT1MgWCBmcmFtZXdvcmsgYnVpbGRzLCBlbnN1cmUgbGlua3MgdG8gdGhlIHNoYXJlZCBsaWJyYXJ5Ci0gIGFyZSBjcmVhdGVkIHdpdGggdGhlIHByb3BlciBBQkkgc3VmZml4LgotCi0tIElzc3VlICMxNDMzMDogRm9yIGNyb3NzIGJ1aWxkcywgZG9uJ3QgdXNlIGhvc3QgcHl0aG9uLCB1c2UgaG9zdCBzZWFyY2ggcGF0aHMKLSAgZm9yIGhvc3QgY29tcGlsZXIuCi0KLS0gSXNzdWUgIzE1MjM1OiBBbGxvdyBCZXJrbGV5IERCIHZlcnNpb25zIHVwIHRvIDUuMyB0byBidWlsZCB0aGUgZGJtIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTUyNjg6IFNlYXJjaCBjdXJzZXMuaCBpbiAvdXNyL2luY2x1ZGUvbmN1cnNlc3cuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQmV0YSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyNy1KdW4tMjAxMioKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gRml4IGEgKG1vc3QgbGlrZWx5KSB2ZXJ5IHJhcmUgbWVtb3J5IGxlYWsgd2hlbiBjYWxsaW5nIG1haW4oKSBhbmQgbm90IGJlaW5nCi0gIGFibGUgdG8gZGVjb2RlIGEgY29tbWFuZC1saW5lIGFyZ3VtZW50LgotCi0tIElzc3VlICMxNDgxNTogVXNlIFB5X3NzaXplX3QgaW5zdGVhZCBvZiBsb25nIGZvciB0aGUgb2JqZWN0IGhhc2gsIHRvCi0gIHByZXNlcnZlIGFsbCA2NCBiaXRzIG9mIGhhc2ggb24gV2luNjQuCi0KLS0gSXNzdWUgIzEyMjY4OiBGaWxlIHJlYWRsaW5lLCByZWFkbGluZXMgYW5kIHJlYWQoKSBvciByZWFkYWxsKCkgbWV0aG9kcwotICBubyBsb25nZXIgbG9zZSBkYXRhIHdoZW4gYW4gdW5kZXJseWluZyByZWFkIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkLgotICBJT0Vycm9yIGlzIG5vIGxvbmdlciByYWlzZWQgZHVlIHRvIGEgcmVhZCBzeXN0ZW0gY2FsbCByZXR1cm5pbmcgRUlOVFIKLSAgZnJvbSB3aXRoaW4gdGhlc2UgbWV0aG9kcy4KLQotLSBJc3N1ZSAjMTE2MjY6IEFkZCBfU2l6ZVQgZnVuY3Rpb25zIHRvIHN0YWJsZSBBQkkuCi0KLS0gSXNzdWUgIzE1MTQyOiBGaXggcmVmZXJlbmNlIGxlYWsgd2hlbiBkZWFsbG9jYXRpbmcgaW5zdGFuY2VzIG9mIHR5cGVzCi0gIGNyZWF0ZWQgdXNpbmcgUHlUeXBlX0Zyb21TcGVjKCkuCi0KLS0gSXNzdWUgIzEwMDUzOiBEb24ndCBjbG9zZSBGRHMgd2hlbiBGaWxlSU8uX19pbml0X18gZmFpbHMuIExvb3NlbHkgYmFzZWQgb24KLSAgdGhlIHdvcmsgYnkgSGlyb2thenUgWWFtYW1vdG8uCi0KLS0gSXNzdWUgIzE1MDk2OiBSZW1vdmVkIHN1cHBvcnQgZm9yIHVyJycgYXMgdGhlIHJhdyBub3RhdGlvbiBpc24ndAotICBjb21wYXRpYmxlIHdpdGggUHl0aG9uIDIueCdzIHJhdyB1bmljb2RlIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzEzNzgzOiBHZW5lcmF0b3Igb2JqZWN0cyBub3cgdXNlIHRoZSBpZGVudGlmaWVyIEFQSXMgaW50ZXJuYWxseQotCi0tIElzc3VlICMxNDg3NDogUmVzdG9yZSBjaGFybWFwIGRlY29kaW5nIHNwZWVkIHRvIHByZS1QRVAgMzkzIGxldmVscy4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTUwMjY6IHV0Zi0xNiBlbmNvZGluZyBpcyBub3cgc2lnbmlmaWNhbnRseSBmYXN0ZXIgKHVwIHRvIDEweCkuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzExMDIyOiBvcGVuKCkgYW5kIGlvLlRleHRJT1dyYXBwZXIgYXJlIG5vdyBjYWxsaW5nCi0gIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkgaW5zdGVhZCBvZiBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKQotICBpbiB0ZXh0IG1vZGUgaWYgdGhlIGVuY29kaW5nIGlzIG5vdCBzcGVjaWZpZWQuIERvbid0IGNoYW5nZSB0ZW1wb3JhcnkgdGhlCi0gIGxvY2FsZSBlbmNvZGluZyB1c2luZyBsb2NhbGUuc2V0bG9jYWxlKCksIHVzZSB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcKLSAgaW5zdGVhZCBvZiB0aGUgdXNlciBwcmVmZXJyZWQgZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzE0NjczOiBBZGQgRXJpYyBTbm93J3Mgc3lzLmltcGxlbWVudGF0aW9uIGltcGxlbWVudGF0aW9uLgotCi0tIElzc3VlICMxNTAzODogT3B0aW1pemUgcHl0aG9uIExvY2tzIG9uIFdpbmRvd3MuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTIyODg6IENvbnNpZGVyICcwJyBhbmQgJzAuMCcgYXMgdmFsaWQgaW5pdGlhbHZhbHVlCi0gIGZvciB0a2ludGVyIFNpbXBsZURpYWxvZy4KLQotLSBJc3N1ZSAjMTU1MTI6IEFkZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIHBhcnNlci4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTU0Njk6IEFkZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIGRlcXVlIG9iamVjdHMuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NDg5OiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBCeXRlc0lPIG9iamVjdHMuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NDg3OiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBidWZmZXJlZCBJL08gb2JqZWN0cy4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTU1MTQ6IENvcnJlY3QgX19zaXplb2ZfXyBzdXBwb3J0IGZvciBjcHVfc2V0LgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTE3NzogQWRkZWQgZGlyX2ZkIHBhcmFtZXRlciB0byBvcy5md2FsaygpLgotCi0tIElzc3VlICMxNTA2MTogUmUtaW1wbGVtZW50ZWQgaG1hYy5jb21wYXJlX2RpZ2VzdCgpIGluIEMgdG8gcHJldmVudCBmdXJ0aGVyCi0gIHRpbWluZyBhbmFseXNpcyBhbmQgdG8gc3VwcG9ydCBhbGwgYnVmZmVyIHByb3RvY29sIGF3YXJlIG9iamVjdHMgYXMgd2VsbCBhcwotICBBU0NJSSBvbmx5IHN0ciBpbnN0YW5jZXMgc2FmZWx5LgotCi0tIElzc3VlICMxNTE2NDogQ2hhbmdlIHJldHVybiB2YWx1ZSBvZiBwbGF0Zm9ybS51bmFtZSgpIGZyb20gYQotICBwbGFpbiB0dXBsZSB0byBhIGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUuCi0KLS0gU3VwcG9ydCBNYWdlaWEgTGludXggaW4gdGhlIHBsYXRmb3JtIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTE2Nzg6IFN1cHBvcnQgQXJjaCBsaW51eCBpbiB0aGUgcGxhdGZvcm0gbW9kdWxlLgotCi0tIElzc3VlICMxNTExODogQ2hhbmdlIHJldHVybiB2YWx1ZSBvZiBvcy51bmFtZSgpIGFuZCBvcy50aW1lcygpIGZyb20KLSAgcGxhaW4gdHVwbGVzIHRvIGltbXV0YWJsZSBpdGVyYWJsZSBvYmplY3RzIHdpdGggbmFtZWQgYXR0cmlidXRlcwotICAoc3RydWN0c2VxIG9iamVjdHMpLgotCi0tIFNwZWVkIHVwIF9kZWNpbWFsIGJ5IGFub3RoZXIgMTAtMTUlIGJ5IGNhY2hpbmcgdGhlIHRocmVhZCBsb2NhbCBjb250ZXh0Ci0gIHRoYXQgd2FzIGxhc3QgYWNjZXNzZWQuIEluIHRoZSBwaSBiZW5jaG1hcmsgKDY0LWJpdCBwbGF0Zm9ybSwgcHJlYz05KSwKLSAgX2RlY2ltYWwgaXMgbm93IG9ubHkgMS41eCBzbG93ZXIgdGhhbiBmbG9hdC4KLQotLSBSZW1vdmUgdGhlIHBhY2thZ2luZyBtb2R1bGUsIHdoaWNoIGlzIG5vdCByZWFkeSBmb3IgcHJpbWUgdGltZS4KLQotLSBJc3N1ZSAjMTUxNTQ6IEFkZCAiZGlyX2ZkIiBwYXJhbWV0ZXIgdG8gb3Mucm1kaXIsIHJlbW92ZSAicm1kaXIiCi0gIHBhcmFtZXRlciBmcm9tIG9zLnJlbW92ZSAvIG9zLnVubGluay4KLQotLSBJc3N1ZSAjNDQ4OTogQWRkIGEgc2h1dGlsLnJtdHJlZSB0aGF0IGlzbid0IHN1c2NlcHRpYmxlIHRvIHN5bWxpbmsgYXR0YWNrcy4KLSAgSXQgaXMgdXNlZCBhdXRvbWF0aWNhbGx5IG9uIHBsYXRmb3JtcyBzdXBwb3J0aW5nIHRoZSBuZWNlc3Nhcnkgb3Mub3BlbmF0KCkKLSAgYW5kIG9zLnVubGlua2F0KCkgZnVuY3Rpb25zLiBNYWluIGNvZGUgYnkgTWFydGluIHZvbiBMw7Z3aXMuCi0KLS0gSXNzdWUgIzE1MTU2OiBIVE1MUGFyc2VyIG5vdyB1c2VzIHRoZSBuZXcgImh0bWwuZW50aXRpZXMuaHRtbDUiIGRpY3Rpb25hcnkuCi0KLS0gSXNzdWUgIzExMTEzOiBhZGQgYSBuZXcgImh0bWw1IiBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIG5hbWVkIGNoYXJhY3RlcgotICByZWZlcmVuY2VzIGRlZmluZWQgYnkgdGhlIEhUTUw1IHN0YW5kYXJkIGFuZCB0aGUgZXF1aXZhbGVudCBVbmljb2RlCi0gIGNoYXJhY3RlcihzKSB0byB0aGUgaHRtbC5lbnRpdGllcyBtb2R1bGUuCi0KLS0gSXNzdWUgIzE1MTE0OiB0aGUgc3RyaWN0IG1vZGUgb2YgSFRNTFBhcnNlciBhbmQgdGhlIEhUTUxQYXJzZUVycm9yIGV4Y2VwdGlvbgotICBhcmUgZGVwcmVjYXRlZCBub3cgdGhhdCB0aGUgcGFyc2VyIGlzIGFibGUgdG8gcGFyc2UgaW52YWxpZCBtYXJrdXAuCi0KLS0gSXNzdWUgIzM2NjU6IFx1IGFuZCBcVSBlc2NhcGVzIGFyZSBub3cgc3VwcG9ydGVkIGluIHVuaWNvZGUgcmVndWxhcgotICBleHByZXNzaW9ucy4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1MTUzOiBBZGRlZCBpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscyB0byBzaW1wbGlmeSB3aGl0ZSBib3gKLSAgdGVzdGluZyBvZiBnZW5lcmF0b3Igc3RhdGUgdXBkYXRlcwotCi0tIElzc3VlICMxMzA2MjogQWRkZWQgaW5zcGVjdC5nZXRjbG9zdXJldmFycyB0byBzaW1wbGlmeSB0ZXN0aW5nIHN0YXRlZnVsCi0gIGNsb3N1cmVzCi0KLS0gSXNzdWUgIzExMDI0OiBGaXhlcyBhbmQgYWRkaXRpb25hbCB0ZXN0cyBmb3IgVGltZTJJbnRlcm5hbGRhdGUuCi0KLS0gSXNzdWUgIzE0NjI2OiBMYXJnZSByZWZhY3RvcmluZyBvZiBmdW5jdGlvbnMgLyBwYXJhbWV0ZXJzIGluIHRoZSBvcyBtb2R1bGUuCi0gIE1hbnkgZnVuY3Rpb25zIG5vdyBzdXBwb3J0ICJkaXJfZmQiIGFuZCAiZm9sbG93X3N5bWxpbmtzIiBwYXJhbWV0ZXJzOwotICBzb21lIGFsc28gc3VwcG9ydCBhY2NlcHRpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgaW4gcGxhY2Ugb2YgYSBwYXRoCi0gIHN0cmluZy4gIEFkZGVkIG9zLnN1cHBvcnRfKiBjb2xsZWN0aW9ucyBhcyBMQllMIGhlbHBlcnMuICBSZW1vdmVkIG1hbnkKLSAgZnVuY3Rpb25zIG9ubHkgcHJldmlvdXNseSBzZWVuIGluIDMuMyBhbHBoYSByZWxlYXNlcyAob2Z0ZW4gc3RhcnRpbmcgd2l0aAotICAiZiIgb3IgImwiLCBvciBlbmRpbmcgd2l0aCAiYXQiKS4gIE9yaWdpbmFsbHkgc3VnZ2VzdGVkIGJ5IFNlcmhpeSBTdG9yY2hha2E7Ci0gIGltcGxlbWVudGVkIGJ5IExhcnJ5IEhhc3RpbmdzLgotCi0tIElzc3VlICMxNTAwODogSW1wbGVtZW50IFBFUCAzNjIgIlNpZ25hdHVyZSBPYmplY3RzIi4KLSAgUGF0Y2ggYnkgWXVyeSBTZWxpdmFub3YuCi0KLS0gSXNzdWU6ICMxNTEzODogYmFzZTY0LnVybHNhZmVfe2VuLGRlfWNvZGUoKSBhcmUgbm93IDMtNHggZmFzdGVyLgotCi0tIElzc3VlICM0NDQ1ODI6IEFkZCBzaHV0aWwud2hpY2gsIGZvciBmaW5kaW5nIHByb2dyYW1zIG9uIHRoZSBzeXN0ZW0gcGF0aC4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpayBEZW1haW5lLCB3aXRoIGxhdGVyIGl0ZXJhdGlvbnMgYnkgSmFuIEtpbGxpYW4KLSAgYW5kIEJyaWFuIEN1cnRpbi4KLQotLSBJc3N1ZSAjMTQ4Mzc6IFNTTCBlcnJvcnMgbm93IGhhdmUgYGBsaWJyYXJ5YGAgYW5kIGBgcmVhc29uYGAgYXR0cmlidXRlcwotICBkZXNjcmliaW5nIHByZWNpc2VseSB3aGF0IGhhcHBlbmVkIGFuZCBpbiB3aGljaCBPcGVuU1NMIHN1Ym1vZHVsZS4gIFRoZQotICBzdHIoKSBvZiBhIFNTTEVycm9yIGlzIGFsc28gZW5oYW5jZWQgYWNjb3JkaW5nbHkuCi0KLS0gSXNzdWUgIzk1Mjc6IGRhdGV0aW1lLmFzdGltZXpvbmUoKSBtZXRob2Qgd2lsbCBub3cgc3VwcGx5IGEgY2xhc3MKLSAgdGltZXpvbmUgaW5zdGFuY2UgY29ycmVzcG9uZGluZyB0byB0aGUgc3lzdGVtIGxvY2FsIHRpbWV6b25lIHdoZW4KLSAgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzLgotCi0tIElzc3VlICMxNDY1MzogZW1haWwudXRpbHMubWt0aW1lX3R6KCkgbm8gbG9uZ2VyIHJlbGllcyBvbiBzeXN0ZW0KLSAgbWt0aW1lKCkgd2hlbiB0aW1lem9uZSBvZmZlc3QgaXMgc3VwcGxpZWQuCi0KLS0gSXNzdWUgIzE0Njg0OiB6bGliLmNvbXByZXNzb2JqKCkgYW5kIHpsaWIuZGVjb21wcmVzc29iaigpIG5vdyBzdXBwb3J0IHRoZSB1c2UKLSAgb2YgcHJlZGVmaW5lZCBjb21wcmVzc2lvbiBkaWN0aW9uYXJpZXMuIE9yaWdpbmFsIHBhdGNoIGJ5IFNhbSBSdXNoaW5nLgotCi0tIEZpeCBHemlwRmlsZSdzIGhhbmRsaW5nIG9mIGZpbGVuYW1lcyBnaXZlbiBhcyBieXRlcyBvYmplY3RzLgotCi0tIElzc3VlICMxNDc3MjogUmV0dXJuIGRlc3RpbmF0aW9uIHZhbHVlcyBmcm9tIHNvbWUgc2h1dGlsIGZ1bmN0aW9ucy4KLQotLSBJc3N1ZSAjMTUwNjQ6IEltcGxlbWVudCBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgZm9yIG11bHRpcHJvY2Vzc2luZyB0eXBlcwotCi0tIElzc3VlICMxNTEwMTogTWFrZSBwb29sIGZpbmFsaXplciBhdm9pZCBqb2luaW5nIGN1cnJlbnQgdGhyZWFkLgotCi0tIElzc3VlICMxNDY1NzogVGhlIGZyb3plbiBpbnN0YW5jZSBvZiBpbXBvcnRsaWIgdXNlZCBmb3IgYm9vdHN0cmFwIGlzIG5vdwotICBhbHNvIHRoZSBtb2R1bGUgaW1wb3J0ZWQgYXMgaW1wb3J0bGliLl9ib290c3RyYXAuCi0KLS0gSXNzdWUgIzE0MDU1OiBBZGQgX19zaXplb2ZfXyBzdXBwb3J0IHRvIF9lbGVtZW50dHJlZS4KLQotLSBJc3N1ZSAjMTUwNTQ6IEEgYnVnIGluIHRva2VuaXplLnRva2VuaXplIHRoYXQgY2F1c2VkIHN0cmluZyBsaXRlcmFscwotICB3aXRoICdiJyBwcmVmaXhlcyB0byBiZSBpbmNvcnJlY3RseSB0b2tlbml6ZWQgaGFzIGJlZW4gZml4ZWQuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1MDA2OiBBbGxvdyBlcXVhbGl0eSBjb21wYXJpc29uIGJldHdlZW4gbmFpdmUgYW5kIGF3YXJlCi0gIHRpbWUgb3IgZGF0ZXRpbWUgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTUwMzY6IE1haWxib3ggbm8gbG9uZ2VyIHRocm93cyBhbiBlcnJvciBpZiBhIGZsdXNoIGlzIGRvbmUKLSAgYmV0d2VlbiBvcGVyYXRpb25zIHdoZW4gcmVtb3Zpbmcgb3IgY2hhbmdpbmcgbXVsdGlwbGUgaXRlbXMgaW4gbWJveCwKLSAgTU1ERiwgb3IgQmFieWwgbWFpbGJveGVzLgotCi0tIElzc3VlICMxNDA1OTogSW1wbGVtZW50IG11bHRpcHJvY2Vzc2luZy5CYXJyaWVyLgotCi0tIElzc3VlICMxNTA2MTogVGhlIGluYXBwcm9wcmlhdGVseSBuYW1lZCBobWFjLnNlY3VyZV9jb21wYXJlIGhhcyBiZWVuCi0gIHJlbmFtZWQgdG8gaG1hYy5jb21wYXJlX2RpZ2VzdCwgcmVzdHJpY3RlZCB0byBvcGVyYXRpbmcgb24gYnl0ZXMgaW5wdXRzCi0gIG9ubHkgYW5kIGhhZCBpdHMgZG9jdW1lbnRhdGlvbiB1cGRhdGVkIHRvIG1vcmUgYWNjdXJhdGVseSByZWZsZWN0IGJvdGggaXRzCi0gIGludGVudCBhbmQgaXRzIGxpbWl0YXRpb25zCi0KLS0gSXNzdWUgIzEzODQxOiBNYWtlIGNoaWxkIHByb2Nlc3NlcyBleGl0IHVzaW5nIHN5cy5leGl0KCkgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjMTQ5MzY6IGN1cnNlc19wYW5lbCB3YXMgY29udmVydGVkIHRvIFBFUCAzMTIxIGFuZCBQRVAgMzg0IEFQSS4KLSAgUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgotCi0tIElzc3VlICMxNjY3NTQ2OiBPbiBwbGF0Zm9ybXMgc3VwcG9ydGluZyB0bV96b25lIGFuZCB0bV9nbXRvZmYgZmllbGRzCi0gIGluIHN0cnVjdCB0bSwgdGltZS5zdHJ1Y3RfdGltZSBvYmplY3RzIHJldHVybmVkIGJ5IHRpbWUuZ210aW1lKCksCi0gIHRpbWUubG9jYWx0aW1lKCkgYW5kIHRpbWUuc3RycHRpbWUoKSBmdW5jdGlvbnMgbm93IGhhdmUgdG1fem9uZSBhbmQKLSAgdG1fZ210b2ZmIGF0dHJpYnV0ZXMuICBPcmlnaW5hbCBwYXRjaCBieSBQYXVsIEJvZGRpZS4KLQotLSBSZW5hbWUgYWRqdXN0ZWQgYXR0cmlidXRlIHRvIGFkanVzdGFibGUgaW4gdGltZS5nZXRfY2xvY2tfaW5mbygpIHJlc3VsdC4KLQotLSBJc3N1ZSAjMzUxODogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gbm9uLWV4aXN0ZW50IEJhc2VNYW5hZ2VyLmZyb21fYWRkcmVzcygpCi0gIG1ldGhvZC4KLQotLSBJc3N1ZSAjMTM4NTc6IEFkZGVkIHRleHR3cmFwLmluZGVudCgpIGZ1bmN0aW9uIChpbml0aWFsIHBhdGNoIGJ5IEV6cmEKLSAgQmVyY2gpCi0KLS0gSXNzdWUgIzI3MzY6IEFkZGVkIGRhdGV0aW1lLnRpbWVzdGFtcCgpIG1ldGhvZC4KLQotLSBJc3N1ZSAjMTM4NTQ6IE1ha2UgbXVsdGlwcm9jZXNzaW5nIHByb3Blcmx5IGhhbmRsZSBub24taW50ZWdlcgotICBub24tc3RyaW5nIGFyZ3VtZW50IHRvIFN5c3RlbUV4aXQuCi0KLS0gSXNzdWUgIzEyMTU3OiBNYWtlIHBvb2wubWFwKCkgZW1wdHkgaXRlcmFibGVzIGNvcnJlY3RseS4gIEluaXRpYWwKLSAgcGF0Y2ggYnkgbW91YWQuCi0KLS0gSXNzdWUgIzExODIzOiBkaXNhc3NlbWJseSBub3cgc2hvd3MgYXJndW1lbnQgY291bnRzIG9uIGNhbGxzIHdpdGgga2V5d29yZCBhcmdzLgotCi0tIElzc3VlICMxNDcxMTogb3Muc3RhdF9mbG9hdF90aW1lcygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuCi0KLS0gTFpNQUZpbGUgbm93IGFjY2VwdHMgdGhlIG1vZGVzICJyYiIvIndiIi8iYWIiIGFzIHN5bm9ueW1zIG9mICJyIi8idyIvImEiLgotCi0tIFRoZSBiejIgYW5kIGx6bWEgbW9kdWxlcyBub3cgZWFjaCBjb250YWluIGFuIG9wZW4oKSBmdW5jdGlvbiwgYWxsb3dpbmcKLSAgY29tcHJlc3NlZCBmaWxlcyB0byByZWFkaWx5IGJlIG9wZW5lZCBpbiB0ZXh0IG1vZGUgYXMgd2VsbCBhcyBiaW5hcnkgbW9kZS4KLQotLSBCWjJGaWxlLl9faW5pdF9fKCkgYW5kIExaTUFGaWxlLl9faW5pdF9fKCkgbm93IGFjY2VwdCBhIGZpbGUgb2JqZWN0IGFzIHRoZWlyCi0gIGZpcnN0IGFyZ3VtZW50LCByYXRoZXIgdGhhbiByZXF1aXJpbmcgYSBzZXBhcmF0ZSAiZmlsZW9iaiIgYXJndW1lbnQuCi0KLS0gZ3ppcC5vcGVuKCkgbm93IGFjY2VwdHMgZmlsZSBvYmplY3RzIGFzIHdlbGwgYXMgZmlsZW5hbWVzLgotCi0tIElzc3VlICMxNDk5Mjogb3MubWFrZWRpcnMocGF0aCwgZXhpc3Rfb2s9VHJ1ZSkgd291bGQgcmFpc2UgYW4gT1NFcnJvcgotICB3aGVuIHRoZSBwYXRoIGV4aXN0ZWQgYW5kIGhhZCB0aGUgU19JU0dJRCBtb2RlIGJpdCBzZXQgd2hlbiBpdCB3YXMKLSAgbm90IGV4cGxpY2l0bHkgYXNrZWQgZm9yLiAgVGhpcyBpcyBubyBsb25nZXIgYW4gZXhjZXB0aW9uIGFzIG1rZGlyCi0gIGNhbm5vdCBjb250cm9sIGlmIHRoZSBPUyBzZXRzIHRoYXQgYml0IGZvciBpdCBvciBub3QuCi0KLS0gSXNzdWUgIzE0OTg5OiBNYWtlIHRoZSBDR0kgZW5hYmxlIG9wdGlvbiB0byBodHRwLnNlcnZlciBhdmFpbGFibGUgdmlhIGNvbW1hbmQKLSAgbGluZS4KLQotLSBJc3N1ZSAjMTQ5ODc6IEFkZCBhIG1pc3NpbmcgaW1wb3J0IHN0YXRlbWVudCB0byBpbnNwZWN0LgotCi0tIElzc3VlICMxMDc5OiBlbWFpbC5oZWFkZXIuZGVjb2RlX2hlYWRlciBub3cgY29ycmVjdGx5IHBhcnNlcyBhbGwgdGhlIGV4YW1wbGVzCi0gIGluIFJGQzIwNDcuICBUaGVyZSBpcyBhIG5lY2Vzc2FyeSB2aXNpYmxlIGJlaGF2aW9yIGNoYW5nZTogdGhlIGxlYWRpbmcgYW5kL29yCi0gIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb24gQVNDSUkgcGFydHMgaXMgbm93IHByZXNlcnZlZC4KLQotLSBJc3N1ZSAjMTQ5Njk6IEJldHRlciBoYW5kbGluZyBvZiBleGNlcHRpb24gY2hhaW5pbmcgaW4gY29udGV4dGxpYi5FeGl0U3RhY2sKLQotLSBJc3N1ZSAjMTQ5NjM6IENvbnZlcnQgY29udGV4dGxpYi5FeGl0U3RhY2suX19leGl0X18gdG8gdXNlIGFuIGl0ZXJhdGl2ZQotICBhbGdvcml0aG0gKFBhdGNoIGJ5IEFsb24gSG9yZXYpCi0KLS0gSXNzdWUgIzE0Nzg1OiBBZGQgc3lzLl9kZWJ1Z21hbGxvY3N0YXRzKCkgdG8gaGVscCBkZWJ1ZyBsb3ctbGV2ZWwgbWVtb3J5Ci0gIGFsbG9jYXRpb24gaXNzdWVzCi0KLS0gSXNzdWUgIzE0NDQzOiBFbnN1cmUgdGhhdCAucHkgZmlsZXMgYXJlIGJ5dGUtY29tcGlsZWQgd2l0aCB0aGUgY29ycmVjdCBQeXRob24KLSAgZXhlY3V0YWJsZSB3aXRoaW4gYmRpc3RfcnBtIGV2ZW4gb24gb2xkZXIgdmVyc2lvbnMgb2YgUlBNCi0KLUMtQVBJCi0tLS0tLQotCi0tIElzc3VlICMxNTE0NjogQWRkIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcy4gUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgotCi0tIElzc3VlICMxNTA0MjogQWRkIFB5U3RhdGVfQWRkTW9kdWxlIGFuZCBQeVN0YXRlX1JlbW92ZU1vZHVsZS4gQWRkIHZlcnNpb24KLSAgZ3VhcmQgZm9yIFB5X0xJTUlURURfQVBJIGFkZGl0aW9ucy4gUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgotCi0tIElzc3VlICMxMzc4MzogSW5hZHZlcnRlbnQgYWRkaXRpb25zIHRvIHRoZSBwdWJsaWMgQyBBUEkgaW4gdGhlIFBFUCAzODAKLSAgaW1wbGVtZW50YXRpb24gaGF2ZSBlaXRoZXIgYmVlbiByZW1vdmVkIG9yIG1hcmtlZCBhcyBwcml2YXRlIGludGVyZmFjZXMuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNTAwMDogU3VwcG9ydCB0aGUgInVuaXF1ZSIgeDMyIGFyY2hpdGVjdHVyZSBpbiBfcG9zaXhzdWJwcm9jZXNzLmMuCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjOTgwMzogRG9uJ3QgY2xvc2UgSURMRSBvbiBzYXZpbmcgaWYgYnJlYWtwb2ludCBpcyBvcGVuLgotICBQYXRjaCBieSBSb2dlciBTZXJ3eS4KLQotLSBJc3N1ZSAjMTQ5NjI6IFVwZGF0ZSB0ZXh0IGNvbG9yaW5nIGluIElETEUgc2hlbGwgd2luZG93IGFmdGVyIGNoYW5naW5nCi0gIG9wdGlvbnMuICBQYXRjaCBieSBSb2dlciBTZXJ3eS4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNTE3NjogQ2xhcmlmaWVkIGJlaGF2aW9yLCBkb2N1bWVudGF0aW9uLCBhbmQgaW1wbGVtZW50YXRpb24KLSAgb2Ygb3MubGlzdGRpcigpLgotCi0tIElzc3VlICMxNDk4MjogRG9jdW1lbnQgdGhhdCBwa2d1dGlsJ3MgaXRlcmF0aW9uIGZ1bmN0aW9ucyByZXF1aXJlIHRoZQotICBub24tc3RhbmRhcmQgaXRlcl9tb2R1bGVzKCkgbWV0aG9kIHRvIGJlIGRlZmluZWQgYnkgYW4gaW1wb3J0ZXIgKHNvbWV0aGluZwotICB0aGUgaW1wb3J0bGliIGltcG9ydGVycyBkbyBub3QgZGVmaW5lKS4KLQotLSBJc3N1ZSAjMTUwODE6IERvY3VtZW50IFB5U3RhdGVfRmluZE1vZHVsZS4KLSAgUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgotCi0tIElzc3VlICMxNDgxNDogQWRkZWQgZmlyc3QgZHJhZnQgb2YgaXBhZGRyZXNzIG1vZHVsZSBBUEkgcmVmZXJlbmNlCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxNTE4NzogQnVnZml4OiByZW1vdmUgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzIHRlc3Rfc2h1dGlsIHdhcyBsZWF2aW5nCi0gIGJlaGluZC4KLQotLSBJc3N1ZSAjMTQ3Njk6IHRlc3RfY2FwaSBub3cgaGFzIFNraXBpdGVtVGVzdCwgd2hpY2ggY2xldmVybHkgY2hlY2tzCi0gIGZvciAicGFyaXR5IiBiZXR3ZWVuIFB5QXJnX1BhcnNlVHVwbGUoKSBhbmQgdGhlIFB5dGhvbi9nZXRhcmdzLmMgc3RhdGljCi0gIGZ1bmN0aW9uIHNraXBpdGVtKCkgZm9yIGFsbCBwb3NzaWJsZSAiZm9ybWF0IHVuaXRzIi4KLQotLSB0ZXN0X25udHBsaWIgbm93IHRvbGVyYXRlcyBiZWluZyBydW4gZnJvbSBiZWhpbmQgTk5UUCBnYXRld2F5cyB0aGF0IGFkZAotICAiWC1BbnRpdmlydXMiIGhlYWRlcnMgdG8gYXJ0aWNsZXMKLQotLSBJc3N1ZSAjMTUwNDM6IHRlc3RfZ2RiIGlzIG5vdyBza2lwcGVkIGVudGlyZWx5IGlmIGdkYiBzZWN1cml0eSBzZXR0aW5ncwotICBibG9jayBsb2FkaW5nIG9mIHRoZSBnZGIgaG9va3MKLQotLSBJc3N1ZSAjMTQ5NjM6IEFkZCB0ZXN0IGNhc2VzIGZvciBleGNlcHRpb24gaGFuZGxpbmcgYmVoYXZpb3VyCi0gIGluIGNvbnRleHRsaWIuRXhpdFN0YWNrIChJbml0aWFsIHBhdGNoIGJ5IEFsb24gSG9yZXYpCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxMzU5MDogSW1wcm92ZSBzdXBwb3J0IGZvciBPUyBYIFhjb2RlIDQ6Ci0gICAgKiBUcnkgdG8gYXZvaWQgYnVpbGRpbmcgUHl0aG9uIG9yIGV4dGVuc2lvbiBtb2R1bGVzIHdpdGggcHJvYmxlbWF0aWMKLSAgICAgIGxsdm0tZ2NjIGNvbXBpbGVyLgotICAgICogU2luY2UgWGNvZGUgNCByZW1vdmVzIHBwYyBzdXBwb3J0LCBleHRlbnNpb24gbW9kdWxlIGJ1aWxkcyBub3cKLSAgICAgIGNoZWNrIGZvciBwcGMgY29tcGlsZXIgc3VwcG9ydCBhbmQgYXV0b21hdGljYWxseSByZW1vdmUgcHBjIGFuZAotICAgICAgcHBjNjQgYXJjaHMgd2hlbiBub3QgYXZhaWxhYmxlLgotICAgICogU2luY2UgWGNvZGUgNCBubyBsb25nZXIgaW5zdGFsbCBTREtzIGluIGRlZmF1bHQgbG9jYXRpb25zLAotICAgICAgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZHMgbm93IHJldmVydCB0byB1c2luZyBpbnN0YWxsZWQgaGVhZGVycwotICAgICAgYW5kIGxpYnMgaWYgdGhlIFNESyB1c2VkIHRvIGJ1aWxkIHRoZSBpbnRlcnByZXRlciBpcyBub3QKLSAgICAgIGF2YWlsYWJsZS4KLSAgICAqIFVwZGF0ZSAuL2NvbmZpZ3VyZSB0byB1c2UgYmV0dGVyIGRlZmF1bHRzIGZvciB1bml2ZXJzYWwgYnVpbGRzOwotICAgICAgaW4gcGFydGljdWxhciwgLS1lbmFibGUtdW5pdmVyc2Fsc2RrPXllcyB1c2VzIHRoZSBYY29kZSBkZWZhdWx0Ci0gICAgICBTREsgYW5kIC0td2l0aC11bml2ZXJzYWwtYXJjaHMgbm93IGRlZmF1bHRzIHRvICJpbnRlbCIgaWYgcHBjCi0gICAgICBub3QgYXZhaWxhYmxlLgotCi0tIElzc3VlICMxNDIyNTogRml4IFVuaWNvZGUgc3VwcG9ydCBmb3IgY3Vyc2VzICgjMTI1NjcpIG9uIE9TIFgKLQotLSBJc3N1ZSAjMTQ5Mjg6IEZpeCBpbXBvcnRsaWIgYm9vdHN0cmFwIGlzc3VlcyBieSB1c2luZyBhIGN1c3RvbSBleGVjdXRhYmxlCi0gIChNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliKSB0byBidWlsZCBQeXRob24vaW1wb3J0bGliLmguCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQWxwaGEgND8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDMxLU1heS0yMDEyKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQ4MzU6IE1ha2UgcGxpc3RsaWIgb3V0cHV0IGVtcHR5IGFycmF5cyAmIGRpY3RzIGxpa2UgT1MgWC4KLSAgUGF0Y2ggYnkgU2lkbmV5IFNhbiBNYXJ0w61uLgotCi0tIElzc3VlICMxNDc0NDogVXNlIHRoZSBuZXcgX1B5VW5pY29kZVdyaXRlciBpbnRlcm5hbCBBUEkgdG8gc3BlZWQgdXAKLSAgc3RyJWFyZ3MgYW5kIHN0ci5mb3JtYXQoYXJncykuCi0KLS0gSXNzdWUgIzE0OTMwOiBNYWtlIG1lbW9yeXZpZXcgb2JqZWN0cyB3ZWFrcmVmYWJsZS4KLQotLSBJc3N1ZSAjMTQ3NzU6IEZpeCBhIHBvdGVudGlhbCBxdWFkcmF0aWMgZGljdCBidWlsZC11cCBkdWUgdG8gdGhlIGdhcmJhZ2UKLSAgY29sbGVjdG9yIHJlcGVhdGVkbHkgdHJ5aW5nIHRvIHVudHJhY2sgZGljdHMuCi0KLS0gSXNzdWUgIzE0ODU3OiBmaXggcmVncmVzc2lvbiBpbiByZWZlcmVuY2VzIHRvIFBFUCAzMTM1IGltcGxpY2l0IF9fY2xhc3NfXwotICBjbG9zdXJlIHZhcmlhYmxlIChSZW9wZW5zIGlzc3VlICMxMjM3MCkKLQotLSBJc3N1ZSAjMTQ3MTIgKFBFUCA0MDUpOiBWaXJ0dWFsIGVudmlyb25tZW50cy4gSW1wbGVtZW50ZWQgYnkgVmluYXkgU2FqaXAuCi0KLS0gSXNzdWUgIzE0NjYwIChQRVAgNDIwKTogTmFtZXNwYWNlIHBhY2thZ2VzLiBJbXBsZW1lbnRlZCBieSBFcmljIFNtaXRoLgotCi0tIElzc3VlICMxNDQ5NDogRml4IF9fZnV0dXJlX18ucHkgYW5kIGl0cyBkb2N1bWVudGF0aW9uIHRvIG5vdGUgdGhhdAotICBhYnNvbHV0ZSBpbXBvcnRzIGFyZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBpbiAzLjAgaW5zdGVhZCBvZiAyLjcuCi0gIFBhdGNoIGJ5IFN2ZW4gTWFybmFjaC4KLQotLSBJc3N1ZSAjOTI2MDogQSBmaW5lci1ncmFpbmVkIGltcG9ydCBsb2NrLiAgTW9zdCBvZiB0aGUgaW1wb3J0IHNlcXVlbmNlCi0gIG5vdyB1c2VzIHBlci1tb2R1bGUgbG9ja3MgcmF0aGVyIHRoYW4gdGhlIGdsb2JhbCBpbXBvcnQgbG9jaywgZWxpbWluYXRpbmcKLSAgd2VsbC1rbm93biBpc3N1ZXMgd2l0aCB0aHJlYWRzIGFuZCBpbXBvcnRzLgotCi0tIElzc3VlICMxNDYyNDogVVRGLTE2IGRlY29kaW5nIGlzIG5vdyAzeCB0byA0eCBmYXN0ZXIgb24gdmFyaW91cyBpbnB1dHMuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gYXNkbF9zZXEgYW5kIGFzZGxfaW50X3NlcSBhcmUgbm93IFB5X3NzaXplX3Qgc2l6ZWQuCi0KLS0gSXNzdWUgIzE0MTMzIChQRVAgNDE1KTogSW1wbGVtZW50IHN1cHByZXNzaW9uIG9mIF9fY29udGV4dF9fIGRpc3BsYXkgd2l0aCBhbgotICBhdHRyaWJ1dGUgb24gQmFzZUV4Y2VwdGlvbi4gVGhpcyByZXBsYWNlcyB0aGUgb3JpZ2luYWwgbWVjaGFuaXNtIG9mIFBFUCA0MDkuCi0KLS0gSXNzdWUgIzE0NDE3OiBNdXRhdGluZyBhIGRpY3QgZHVyaW5nIGxvb2t1cCBub3cgcmVzdGFydHMgdGhlIGxvb2t1cCBpbnN0ZWFkCi0gIG9mIHJhaXNpbmcgYSBSdW50aW1lRXJyb3IgKHVuZG9lcyBpc3N1ZSAjMTQyMDUpLgotCi0tIElzc3VlICMxNDczODogU3BlZWQtdXAgVVRGLTggZGVjb2Rpbmcgb24gbm9uLUFTQ0lJIGRhdGEuICBQYXRjaCBieSBTZXJoaXkKLSAgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNDcwMDogRml4IHR3byBicm9rZW4gYW5kIHVuZGVmaW5lZC1iZWhhdmlvdXItaW5kdWNpbmcgb3ZlcmZsb3cgY2hlY2tzCi0gIGluIG9sZC1zdHlsZSBzdHJpbmcgZm9ybWF0dGluZy4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMxNDY5MDogVXNlIG1vbm90b25pYyBjbG9jayBpbnN0ZWFkIG9mIHN5c3RlbSBjbG9jayBpbiB0aGUgc2NoZWQsCi0gIHN1YnByb2Nlc3MgYW5kIHRyYWNlIG1vZHVsZXMuCi0KLS0gSXNzdWUgIzE0NDQzOiBUZWxsIHJwbWJ1aWxkIHRvIHVzZSB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIFB5dGhvbiBpbgotICBiZGlzdF9ycG0uIEluaXRpYWwgcGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCi0KLS0gSXNzdWUgIzEyNTE1OiBlbWFpbCBub3cgcmVnaXN0ZXJzIGEgZGVmZWN0IGlmIGl0IGdldHMgdG8gRU9GIHdoaWxlIHBhcnNpbmcKLSAgYSBNSU1FIHBhcnQgd2l0aG91dCBzZWVpbmcgdGhlIGNsb3NpbmcgTUlNRSBib3VuZGFyeS4KLQotLSBJc3N1ZSAjMTY3MjU2ODogZW1haWwgbm93IGFsd2F5cyBkZWNvZGVzIGJhc2U2NCBwYXlsb2FkcywgYWRkaW5nIHBhZGRpbmcgYW5kCi0gIGlnbm9yaW5nIG5vbi1iYXNlNjQtYWxwaGFiZXQgY2hhcmFjdGVycyBpZiBuZWVkZWQsIGFuZCByZWdpc3RlcmluZyBkZWZlY3RzCi0gIGZvciBhbnkgc3VjaCBwcm9ibGVtcy4KLQotLSBJc3N1ZSAjMTQ5MjU6IGVtYWlsIG5vdyByZWdpc3RlcnMgYSBkZWZlY3Qgd2hlbiB0aGUgcGFyc2VyIGRlY2lkZXMgdGhhdCB0aGVyZQotICBpcyBhIG1pc3NpbmcgaGVhZGVyL2JvZHkgc2VwYXJhdG9yIGxpbmUuICBNYWxmb3JtZWRIZWFkZXJEZWZlY3QsIHdoaWNoIHRoZQotICBleGlzdGluZyBjb2RlIHdvdWxkIG5ldmVyIGFjdHVhbGx5IGdlbmVyYXRlLCBpcyBkZXByZWNhdGVkLgotCi0tIElzc3VlICMxMDM2NTogRmlsZSBvcGVuIGRpYWxvZyBub3cgd29ya3MgaW5zdGVhZCBvZiBjcmFzaGluZyBldmVuIHdoZW4KLSAgdGhlIHBhcmVudCB3aW5kb3cgaXMgY2xvc2VkIGJlZm9yZSB0aGUgZGlhbG9nLiBQYXRjaCBieSBSb2dlciBTZXJ3eS4KLQotLSBJc3N1ZSAjODczOTogVXBkYXRlZCBzbXRwZCB0byBzdXBwb3J0IFJGQyA1MzIxLCBhbmQgYWRkZWQgc3VwcG9ydCBmb3IgdGhlCi0gIFJGQyAxODcwIFNJWkUgZXh0ZW5zaW9uLgotCi0tIElzc3VlICM2NjUxOTQ6IEFkZGVkIGEgbG9jYWx0aW1lIGZ1bmN0aW9uIHRvIGVtYWlsLnV0aWxzIHRvIHByb3ZpZGUgYW4KLSAgYXdhcmUgbG9jYWwgZGF0ZXRpbWUgZm9yIHVzZSBpbiBzZXR0aW5nIERhdGUgaGVhZGVycy4KLQotLSBJc3N1ZSAjMTI1ODY6IEFkZGVkIG5ldyBwcm92aXNpb25hbCBwb2xpY2llcyB0aGF0IGltcGxlbWVudCBjb252ZW5pZW50Ci0gIHVuaWNvZGUgc3VwcG9ydCBmb3IgZW1haWwgaGVhZGVycy4gIFNlZSBXaGF0J3MgTmV3IGZvciBkZXRhaWxzLgotCi0tIElzc3VlICMxNDczMTogUmVmYWN0b3JlZCBlbWFpbCBQb2xpY3kgZnJhbWV3b3JrIHRvIHN1cHBvcnQgZnVsbCBiYWNrd2FyZAotICBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDMuMiBieSBkZWZhdWx0IHlldCBhbGxvdyBmb3IgdGhlIGludHJvZHVjdGlvbiBvZgotICBuZXcgZmVhdHVyZXMgdGhyb3VnaCBuZXcgcG9saWNpZXMuICBOb3RlIHRoYXQgUG9saWN5Lm11c3RfYmVfN2JpdCBpcyByZW5hbWVkCi0gIHRvIGN0ZV90eXBlLgotCi0tIElzc3VlICMxNDg3NjogVXNlIHVzZXItc2VsZWN0ZWQgZm9udCBmb3IgaGlnaGxpZ2h0IGNvbmZpZ3VyYXRpb24uCi0KLS0gSXNzdWUgIzE0OTIwOiBGaXggdGhlIGhlbHAodXJsbGliLnBhcnNlKSBmYWlsdXJlIG9uIGxvY2FsZSBDIG9uIHRlcm1pbmFscy4KLSAgSGF2ZSBhc2NpaSBjaGFyYWN0ZXJzIGluIGhlbHAuCi0KLS0gSXNzdWUgIzE0NTQ4OiBNYWtlIG11bHRpcHJvY2Vzc2luZyBmaW5hbGl6ZXJzIGNoZWNrIHBpZCBiZWZvcmUKLSAgcnVubmluZyB0byBjb3BlIHdpdGggcG9zc2liaWxpdHkgb2YgZ2MgcnVubmluZyBqdXN0IGFmdGVyIGZvcmsuCi0KLS0gSXNzdWUgIzE0MDM2OiBBZGQgYW4gYWRkaXRpb25hbCBjaGVjayB0byB2YWxpZGF0ZSB0aGF0IHBvcnQgaW4gdXJscGFyc2UgZG9lcwotICBub3QgZ28gaW4gaWxsZWdhbCByYW5nZSBhbmQgcmV0dXJucyBOb25lLgotCi0tIElzc3VlICMxNDg2MjogQWRkIG1pc3NpbmcgbmFtZXMgdG8gb3MuX19hbGxfXwotCi0tIElzc3VlICMxNDg3NTogVXNlIGZsb2F0KCdpbmYnKSBpbnN0ZWFkIG9mIGZsb2F0KCcxZTY2NjY2JykgaW4gdGhlIGpzb24gbW9kdWxlLgotCi0tIElzc3VlICMxMzU4NTogQWRkZWQgY29udGV4dGxpYi5FeGl0U3RhY2sKLQotLSBQRVAgMzE0NCwgSXNzdWUgIzE0ODE0OiBBZGRlZCB0aGUgaXBhZGRyZXNzIG1vZHVsZQotCi0tIElzc3VlICMxNDQyNjogQ29ycmVjdCB0aGUgRGF0ZSBmb3JtYXQgaW4gRXhwaXJlcyBhdHRyaWJ1dGUgb2YgU2V0LUNvb2tpZQotICBIZWFkZXIgaW4gQ29va2llLnB5LgotCi0tIElzc3VlICMxNDU4ODogVGhlIHR5cGVzIG1vZHVsZSBub3cgcHJvdmlkZSBuZXdfY2xhc3MoKSBhbmQgcHJlcGFyZV9jbGFzcygpCi0gIGZ1bmN0aW9ucyB0byBzdXBwb3J0IFBFUCAzMTE1IGNvbXBsaWFudCBkeW5hbWljIGNsYXNzIGNyZWF0aW9uLiBQYXRjaCBieQotICBEYW5pZWwgVXJiYW4gYW5kIE5pY2sgQ29naGxhbi4KLQotLSBJc3N1ZSAjMTMxNTI6IEFsbG93IHRvIHNwZWNpZnkgYSBjdXN0b20gdGFic2l6ZSBmb3IgZXhwYW5kaW5nIHRhYnMgaW4KLSAgdGV4dHdyYXAuIFBhdGNoIGJ5IEpvaG4gRmV1ZXJzdGVpbi4KLQotLSBJc3N1ZSAjMTQ3MjE6IFNlbmQgdGhlIGNvcnJlY3QgJ0NvbnRlbnQtbGVuZ3RoOiAwJyBoZWFkZXIgd2hlbiB0aGUgYm9keSBpcyBhbgotICBlbXB0eSBzdHJpbmcgJycuIEluaXRpYWwgUGF0Y2ggY29udHJpYnV0ZWQgYnkgQXJ2ZSBLbnVkc2VuLgotCi0tIElzc3VlICMxNDA3MjogRml4IHBhcnNpbmcgb2YgJ3RlbCcgVVJJcyBpbiB1cmxwYXJzZSBieSBtYWtpbmcgdGhlIGNoZWNrIGZvcgotICBwb3J0cyBzdHJpY3Rlci4KLQotLSBJc3N1ZSAjOTM3NDogR2VuZXJpYyBwYXJzaW5nIG9mIHF1ZXJ5IGFuZCBmcmFnbWVudCBwb3J0aW9ucyBvZiB1cmwgZm9yIGFueQotICBzY2hlbWUuIFN1cHBvcnRlZCBib3RoIGJ5IFJGQzM5ODYgYW5kIFJGQzIzOTYuCi0KLS0gSXNzdWUgIzE0Nzk4OiBGaXggdGhlIGZ1bmN0aW9ucyBpbiBweWNsYnIgdG8gcmFpc2UgYW4gSW1wb3J0RXJyb3IKLSAgd2hlbiB0aGUgZmlyc3QgcGFydCBvZiBhIGRvdHRlZCBuYW1lIGlzIG5vdCBhIHBhY2thZ2UuIFBhdGNoIGJ5Ci0gIFhhdmllciBkZSBHYXllLgotCi0tIElzc3VlICMxMjA5ODogbXVsdGlwcm9jZXNzaW5nIG9uIFdpbmRvd3Mgbm93IHN0YXJ0cyBjaGlsZCBwcm9jZXNzZXMKLSAgdXNpbmcgdGhlIHNhbWUgc3lzLmZsYWdzIGFzIHRoZSBjdXJyZW50IHByb2Nlc3MuICBJbml0aWFsIHBhdGNoIGJ5Ci0gIFNlcmdleSBNZXplbnRzZXYuCi0KLS0gSXNzdWUgIzEzMDMxOiBTbWFsbCBzcGVlZC11cCBmb3IgdGFyZmlsZSB3aGVuIHVuemlwcGluZyB0YXJmaWxlcy4KLSAgUGF0Y2ggYnkgSnVzdGluIFBlZWwuCi0KLS0gSXNzdWUgIzE0NzgwOiB1cmxsaWIucmVxdWVzdC51cmxvcGVuKCkgbm93IGhhcyBhIGBgY2FkZWZhdWx0YGAgYXJndW1lbnQKLSAgdG8gdXNlIHRoZSBkZWZhdWx0IGNlcnRpZmljYXRlIHN0b3JlLiAgSW5pdGlhbCBwYXRjaCBieSBKYW1lcyBPYWtsZXkuCi0KLS0gSXNzdWUgIzE0ODI5OiBGaXggYmlzZWN0IGFuZCByYW5nZSgpIGluZGV4aW5nIHdpdGggbGFyZ2UgaW5kaWNlcwotICAoPj0gMiAqKiAzMikgdW5kZXIgNjQtYml0IFdpbmRvd3MuCi0KLS0gSXNzdWUgIzE0NzMyOiBUaGUgX2NzdiBtb2R1bGUgbm93IHVzZXMgUEVQIDMxMjEgbW9kdWxlIGluaXRpYWxpemF0aW9uLgotICBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCi0KLS0gSXNzdWUgIzE0ODA5OiBBZGQgSFRUUCBzdGF0dXMgY29kZXMgaW50cm9kdWNlZCBieSBSRkMgNjU4NSB0byBodHRwLnNlcnZlcgotICBhbmQgaHR0cC5jbGllbnQuIFBhdGNoIGJ5IEV1bmdKdW4gWWkuCi0KLS0gSXNzdWUgIzE0Nzc3OiB0a2ludGVyIG1heSByZXR1cm4gdW5kZWNvZGVkIFVURi04IGJ5dGVzIGFzIGEgc3RyaW5nIHdoZW4KLSAgYWNjZXNzaW5nIHRoZSBUayBjbGlwYm9hcmQuICBNb2RpZnkgY2xpcGJvYWRfZ2V0KCkgdG8gZmlyc3QgcmVxdWVzdCB0eXBlCi0gIFVURjhfU1RSSU5HIHdoZW4gbm8gc3BlY2lmaWMgdHlwZSBpcyByZXF1ZXN0ZWQgaW4gYW4gWDExIHdpbmRvd2luZwotICBlbnZpcm9ubWVudCwgZmFsbGluZyBiYWNrIHRvIHRoZSBjdXJyZW50IGRlZmF1bHQgdHlwZSBTVFJJTkcgaWYgdGhhdCBmYWlscy4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgVGhvbWFzIEtsdXl2ZXIuCi0KLS0gSXNzdWUgIzE0NzczOiBGaXggb3MuZndhbGsoKSBmYWlsaW5nIG9uIGRhbmdsaW5nIHN5bWxpbmtzLgotCi0tIElzc3VlICMxMjU0MTogQmUgbGVuaWVudCB3aXRoIHF1b3RlcyBhcm91bmQgUmVhbG0gZmllbGQgb2YgSFRUUCBCYXNpYwotICBBdXRoZW50YXRpb24gaW4gdXJsbGliMi4KLQotLSBJc3N1ZSAjMTQ4MDc6IG1vdmUgdW5kb2N1bWVudGVkIHRhcmZpbGUuZmlsZW1vZGUoKSB0byBzdGF0LmZpbGVtb2RlKCkgYW5kIGFkZAotICBkb2MgZW50cnkuIEFkZCB0YXJmaWxlLmZpbGVtb2RlIGFsaWFzIHdpdGggZGVwcmVjYXRpb24gd2FybmluZy4KLQotLSBJc3N1ZSAjMTM4MTU6IFRhckZpbGUuZXh0cmFjdGZpbGUoKSBub3cgcmV0dXJucyBpby5CdWZmZXJlZFJlYWRlciBvYmplY3RzLgotCi0tIElzc3VlICMxNDUzMjogQWRkIGEgc2VjdXJlX2NvbXBhcmUoKSBoZWxwZXIgdG8gdGhlIGhtYWMgbW9kdWxlLCB0byBtaXRpZ2F0ZQotICB0aW1pbmcgYXR0YWNrcy4gUGF0Y2ggYnkgSm9uIE9iZXJoZWlkZS4KLQotLSBBZGQgaW1wb3J0bGliLnV0aWwucmVzb2x2ZV9uYW1lKCkuCi0KLS0gSXNzdWUgIzE0MzY2OiBTdXBwb3J0IGx6bWEgY29tcHJlc3Npb24gaW4gemlwIGZpbGVzLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxMzk1OTogSW50cm9kdWNlIGltcG9ydGxpYi5maW5kX2xvYWRlcigpIGFuZCBkb2N1bWVudAotICBpbXAuZmluZF9tb2R1bGUvbG9hZF9tb2R1bGUgYXMgZGVwcmVjYXRlZC4KLQotLSBJc3N1ZSAjMTQwODI6IHNodXRpbC5jb3B5MigpIG5vdyBjb3BpZXMgZXh0ZW5kZWQgYXR0cmlidXRlcywgaWYgcG9zc2libGUuCi0gIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KLQotLSBJc3N1ZSAjMTM5NTk6IE1ha2UgaW1wb3J0bGliLmFiYy5GaWxlTG9hZGVyLmxvYWRfbW9kdWxlKCkvZ2V0X2ZpbGVuYW1lKCkgYW5kCi0gIGltcG9ydGxpYi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlci5sb2FkX21vZHVsZSgpIGhhdmUgdGhlaXIgc2luZ2xlCi0gIGFyZ3VtZW50IGJlIG9wdGlvbmFsLiBBbGxvd3MgZm9yIHRoZSByZXBsYWNlbWVudCAoYW5kIHRodXMgZGVwcmVjYXRpb24pIG9mCi0gIGltcC5sb2FkX3NvdXJjZSgpL2xvYWRfcGFja2FnZSgpL2xvYWRfY29tcGlsZWQoKS4KLQotLSBJc3N1ZSAjMTM5NTk6IGltcC5nZXRfc3VmZml4ZXMoKSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm91ciBvZiB0aGUgbmV3Ci0gIGF0dHJpYnV0ZXMgb24gaW1wb3J0bGliLm1hY2hpbmVyeTogU09VUkNFX1NVRkZJWEVTLCBERUJVR19CWVRFQ09ERV9TVUZGSVhFUywKLSAgT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTLCBCWVRFQ09ERV9TVUZGSVhFUywgYW5kIEVYVEVOU0lPTl9TVUZGSVhFUy4gVGhpcwotICBsZWQgdG8gYW4gaW5kaXJlY3QgZGVwcmVjYXRpb24gb2YgaW5zcGVjdC5nZXRtb2R1bGVpbmZvKCkuCi0KLS0gSXNzdWUgIzE0NjYyOiBQcmV2ZW50IHNodXRpbCBmYWlsdXJlcyBvbiBPUyBYIHdoZW4gZGVzdGluYXRpb24gZG9lcyBub3QKLSAgc3VwcG9ydCBjaGZsYWcgb3BlcmF0aW9ucy4gIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KLQotLSBJc3N1ZSAjMTQxNTc6IEZpeCB0aW1lLnN0cnB0aW1lIGZhaWxpbmcgd2l0aG91dCBhIHllYXIgb24gRmVicnVhcnkgMjl0aC4KLSAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgotCi0tIElzc3VlICMxNDc1MzogTWFrZSBtdWx0aXByb2Nlc3NpbmcncyBoYW5kbGluZyBvZiBuZWdhdGl2ZSB0aW1lb3V0cwotICB0aGUgc2FtZSBhcyBpdCB3YXMgaW4gUHl0aG9uIDMuMi4KLQotLSBJc3N1ZSAjMTQ1ODM6IEZpeCBpbXBvcnRsaWIgYnVnIHdoZW4gYSBwYWNrYWdlJ3MgX19pbml0X18ucHkgd291bGQgZmlyc3QKLSAgaW1wb3J0IG9uZSBvZiBpdHMgbW9kdWxlcyB0aGVuIHJhaXNlIGFuIGVycm9yLgotCi0tIElzc3VlICMxNDc0MTogRml4IG1pc3Npbmcgc3VwcG9ydCBmb3IgRWxsaXBzaXMgKCcuLi4nKSBpbiBwYXJzZXIgbW9kdWxlLgotCi0tIElzc3VlICMxNDY5NzogRml4IG1pc3Npbmcgc3VwcG9ydCBmb3Igc2V0IGRpc3BsYXlzIGFuZCBzZXQgY29tcHJlaGVuc2lvbnMgaW4KLSAgcGFyc2VyIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTQ3MDE6IEZpeCBtaXNzaW5nIHN1cHBvcnQgZm9yICdyYWlzZSAuLi4gZnJvbScgaW4gcGFyc2VyIG1vZHVsZS4KLQotLSBBZGQgc3VwcG9ydCBmb3IgdGltZW91dHMgdG8gdGhlIGFjcXVpcmUoKSBtZXRob2RzIG9mCi0gIG11bHRpcHJvY2Vzc2luZydzIGxvY2svc2VtYXBob3JlL2NvbmRpdGlvbiBwcm94aWVzLgotCi0tIElzc3VlICMxMzk4OTogQWRkIHN1cHBvcnQgZm9yIHRleHQgbW9kZSB0byBnemlwLm9wZW4oKS4KLQotLSBJc3N1ZSAjMTQxMjc6IFRoZSBvcy5zdGF0KCkgcmVzdWx0IG9iamVjdCBub3cgcHJvdmlkZXMgdGhyZWUgYWRkaXRpb25hbAotICBmaWVsZHM6IHN0X2N0aW1lX25zLCBzdF9tdGltZV9ucywgYW5kIHN0X2F0aW1lX25zLCBwcm92aWRpbmcgdGhvc2UgdGltZXMgYXMgYW4KLSAgaW50ZWdlciB3aXRoIG5hbm9zZWNvbmQgcmVzb2x1dGlvbi4gIFRoZSBmdW5jdGlvbnMgb3MudXRpbWUoKSwgb3MubHV0aW1lcygpLAotICBhbmQgb3MuZnV0aW1lcygpIG5vdyBhY2NlcHQgYSBuZXcgcGFyYW1ldGVyLCBucywgd2hpY2ggYWNjZXB0cyBtdGltZSBhbmQgYXRpbWUKLSAgYXMgaW50ZWdlcnMgd2l0aCBuYW5vc2Vjb25kIHJlc29sdXRpb24uCi0KLS0gSXNzdWUgIzE0MTI3IGFuZCAjMTAxNDg6IHNodXRpbC5jb3B5c3RhdCBub3cgcHJlc2VydmVzIGV4YWN0IG10aW1lIGFuZCBhdGltZQotICBvbiBmaWxlc3lzdGVtcyBwcm92aWRpbmcgbmFub3NlY29uZCByZXNvbHV0aW9uLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzE0OTU4OiBDaGFuZ2UgSURMRSBzeXN0YXggaGlnaGxpZ2h0aW5nIHRvIHJlY29nbml6ZSBhbGwgc3RyaW5nIGFuZAotICBieXRlIGxpdGVyYWxzIHN1cHBvcnRlZCBpbiBQeXRob24gMy4zLgotCi0tIElzc3VlICMxMDk5NzogUHJldmVudCBhIGR1cGxpY2F0ZSBlbnRyeSBpbiBJRExFJ3MgIlJlY2VudCBGaWxlcyIgbWVudS4KLQotLSBJc3N1ZSAjMTQ5Mjk6IFN0b3AgSURMRSAzLnggZnJvbSBjbG9zaW5nIG9uIFVuaWNvZGUgZGVjb2RlIGVycm9ycyB3aGVuCi0gIGdyZXBwaW5nLiBQYXRjaCBieSBSb2dlciBTZXJ3eS4KLQotLSBJc3N1ZSAjMTI1MTA6IEF0dGVtcHRpbmcgdG8gZ2V0IGludmFsaWQgdG9vbHRpcCBubyBsb25nZXIgY2xvc2VzIElETEUuCi0gIE90aGVyIHRvb2x0aXBzcyBoYXZlIGJlZW4gY29ycmVjdGVkIG9yIGltcHJvdmVkIGFuZCB0aGUgbnVtYmVyIG9mIHRlc3RzCi0gIGhhcyBiZWVuIHRyaXBsZWQuIE9yaWdpbmFsIHBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQ2OTU6IEJyaW5nIFRvb2xzL3BhcnNlci91bnBhcnNlLnB5IHN1cHBvcnQgdXAgdG8gZGF0ZSB3aXRoCi0gIHRoZSBQeXRob24gMy4zIEdyYW1tYXIuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxNDQ3MjogVXBkYXRlIC5naXRpZ25vcmUuIFBhdGNoIGJ5IE1hdGVqIENlcGwuCi0KLS0gVXBncmFkZSBXaW5kb3dzIGxpYnJhcnkgdmVyc2lvbnM6IGJ6aXAgMS4wLjYsIE9wZW5TU0wgMS4wLjFjLgotCi0tIElzc3VlICMxNDY5MzogVW5kZXIgbm9uLVdpbmRvd3MgcGxhdGZvcm1zLCBoYXNobGliJ3MgZmFsbGJhY2sgbW9kdWxlcyBhcmUKLSAgYWx3YXlzIGNvbXBpbGVkLCBldmVuIGlmIE9wZW5TU0wgaXMgcHJlc2VudCBhdCBidWlsZCB0aW1lLgotCi0tIElzc3VlICMxMzIxMDogV2luZG93cyBidWlsZCBub3cgdXNlcyBWUzIwMTAsIHBvcnRlZCBmcm9tIFZTMjAwOC4KLQotQy1BUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzE0NzA1OiBUaGUgUHlBcmdfUGFyc2UoKSBmYW1pbHkgb2YgZnVuY3Rpb25zIG5vdyBzdXBwb3J0IHRoZSAncCcgZm9ybWF0Ci0gIHVuaXQsIHdoaWNoIGFjY2VwdHMgYSAiYm9vbGVhbiBwcmVkaWNhdGUiIGFyZ3VtZW50LiAgSXQgY29udmVydHMgYW55IFB5dGhvbgotICB2YWx1ZSBpbnRvIGFuIGludGVnZXItLTAgaWYgaXQgaXMgImZhbHNlIiwgYW5kIDEgb3RoZXJ3aXNlLgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE0ODYzOiBVcGRhdGUgdGhlIGRvY3VtZW50YXRpb24gb2Ygb3MuZmRvcGVuKCkgdG8gcmVmbGVjdCB0aGUKLSAgZmFjdCB0aGF0IGl0J3Mgb25seSBhIHRoaW4gd3JhcHBlciBhcm91bmQgb3BlbigpIGFueW1vcmUuCi0KLS0gSXNzdWUgIzE0NTg4OiBUaGUgbGFuZ3VhZ2UgcmVmZXJlbmNlIG5vdyBhY2N1cmF0ZWx5IGRvY3VtZW50cyB0aGUgUHl0aG9uIDMKLSAgY2xhc3MgZGVmaW5pdGlvbiBwcm9jZXNzLiBQYXRjaCBieSBOaWNrIENvZ2hsYW4uCi0KLS0gSXNzdWUgIzE0OTQzOiBDb3JyZWN0IGEgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZSBmb3Igd2lucmVnLk9wZW5LZXkKLSAgYW5kIGNvcnJlY3RseSBsaXN0IHRoZSBhcmd1bWVudCBuYW1lcyBpbiB0aGUgZnVuY3Rpb24ncyBleHBsYW5hdGlvbi4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBBbHBoYSAzPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDEtTWF5LTIwMTIqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNDY5OTogRml4IGNhbGxpbmcgdGhlIGNsYXNzbWV0aG9kIGRlc2NyaXB0b3IgZGlyZWN0bHkuCi0KLS0gSXNzdWUgIzE0NDMzOiBQcmV2ZW50IG1zdmNydCBjcmFzaCBpbiBpbnRlcmFjdGl2ZSBwcm9tcHQgd2hlbiBzdGRpbiBpcyBjbG9zZWQuCi0KLS0gSXNzdWUgIzE0NTIxOiBNYWtlIHJlc3VsdCBvZiBmbG9hdCgnbmFuJykgYW5kIGZsb2F0KCctbmFuJykgbW9yZSBjb25zaXN0ZW50Ci0gIGFjcm9zcyBwbGF0Zm9ybXMuCi0KLS0gSXNzdWUgIzE0NjQ2OiBfX2ltcG9ydF9fKCkgc2V0cyBfX2xvYWRlcl9fIGlmIHRoZSBsb2FkZXIgZGlkIG5vdC4KLQotLSBJc3N1ZSAjMTQ2MDU6IE5vIGxvbmdlciBoYXZlIGltcGxpY2l0IGVudHJpZXMgaW4gc3lzLm1ldGFfcGF0aC4gSWYKLSAgc3lzLm1ldGFfcGF0aCBpcyBmb3VuZCB0byBiZSBlbXB0eSwgcmFpc2UgSW1wb3J0V2FybmluZy4KLQotLSBJc3N1ZSAjMTQ2MDU6IE5vIGxvbmdlciBoYXZlIGltcGxpY2l0IGVudHJpZXMgaW4gc3lzLnBhdGhfaG9va3MuIElmCi0gIHN5cy5wYXRoX2hvb2tzIGlzIGZvdW5kIHRvIGJlIGVtcHR5LCBhIHdhcm5pbmcgd2lsbCBiZSByYWlzZWQuIE5vbmUgaXMgbm93Ci0gIGluc2VydGVkIGludG8gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgaWYgbm8gZmluZGVyIHdhcyBkaXNjb3ZlcmVkLiBUaGlzIGFsc28KLSAgbWVhbnMgaW1wLk51bGxJbXBvcnRlciBpcyBubyBsb25nZXIgaW1wbGljaXRseSB1c2VkLgotCi0tIElzc3VlICMxMzkwMzogSW1wbGVtZW50IFBFUCA0MTIuIEluZGl2aWR1YWwgZGljdGlvbmFyeSBpbnN0YW5jZXMgY2FuIG5vdyBzaGFyZQotICB0aGVpciBrZXlzIHdpdGggb3RoZXIgZGljdGlvbmFyaWVzLiBDbGFzc2VzIHRha2UgYWR2YW50YWdlIG9mIHRoaXMgdG8gc2hhcmUKLSAgdGhlaXIgaW5zdGFuY2UgZGljdGlvbmFyeSBrZXlzIGZvciBpbXByb3ZlZCBtZW1vcnkgYW5kIHBlcmZvcm1hbmNlLgotCi0tIElzc3VlICMxMTYwMyAoYWdhaW4pOiBTZXR0aW5nIF9fcmVwcl9fIHRvIF9fc3RyX18gbm93IHJhaXNlcyBhIFJ1bnRpbWVFcnJvcgotICB3aGVuIHJlcHIoKSBvciBzdHIoKSBpcyBjYWxsZWQgb24gc3VjaCBhbiBvYmplY3QuCi0KLS0gSXNzdWUgIzE0NjU4OiBGaXggYmluZGluZyBhIHNwZWNpYWwgbWV0aG9kIHRvIGEgYnVpbHRpbiBpbXBsZW1lbnRhdGlvbiBvZiBhCi0gIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBkaWZmZXJlbnQgbmFtZS4KLQotLSBJc3N1ZSAjMTQ2MzA6IEZpeCBhIG1lbW9yeSBhY2Nlc3MgYnVnIGZvciBpbnN0YW5jZXMgb2YgYSBzdWJjbGFzcyBvZiBpbnQKLSAgd2l0aCB2YWx1ZSAwLgotCi0tIElzc3VlICMxNDMzOTogU3BlZWQgaW1wcm92ZW1lbnRzIHRvIGJpbiwgb2N0IGFuZCBoZXggZnVuY3Rpb25zLiAgUGF0Y2ggYnkKLSAgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTQzODU6IEl0IGlzIG5vdyBwb3NzaWJsZSB0byB1c2UgYSBjdXN0b20gdHlwZSBmb3IgdGhlIF9fYnVpbHRpbnNfXwotICBuYW1lc3BhY2UsIGluc3RlYWQgb2YgYSBkaWN0LiBJdCBjYW4gYmUgdXNlZCBmb3Igc2FuZGJveGluZyBmb3IgZXhhbXBsZS4KLSAgUmFpc2UgYWxzbyBhIE5hbWVFcnJvciBpbnN0ZWFkIG9mIEltcG9ydEVycm9yIGlmIF9fYnVpbGRfY2xhc3NfXyBuYW1lIGlmIG5vdAotICBmb3VuZCBpbiBfX2J1aWx0aW5zX18uCi0KLS0gSXNzdWUgIzEyNTk5OiBCZSBtb3JlIHN0cmljdCBpbiBhY2NlcHRpbmcgTm9uZSBjb21wYXJlZCB0byBhIGZhbHNlLWxpa2UKLSAgb2JqZWN0IGZvciBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZm9yX2xvYWRlciBhbmQKLSAgaW1wb3J0bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyLgotCi0tIElzc3VlICMxNDYxMjogRml4IGp1bXBpbmcgYXJvdW5kIHdpdGggYmxvY2tzIGJ5IHNldHRpbmcgZl9saW5lbm8uCi0KLS0gSXNzdWUgIzE0NTkyOiBBdHRlbXB0aW5nIGEgcmVsYXRpdmUgaW1wb3J0IHcvbyBfX3BhY2thZ2VfXyBvciBfX25hbWVfXyBzZXQgaW4KLSAgZ2xvYmFscyByYWlzZXMgYSBLZXlFcnJvci4KLQotLSBJc3N1ZSAjMTQ2MDc6IEZpeCBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIHdoaWNoIHN0YXJ0ZWQgd2l0aCBgYF9fYGAuCi0KLS0gSXNzdWUgIzEwODU0OiBUaGUgSW1wb3J0RXJyb3IgcmFpc2VkIHdoZW4gYW4gZXh0ZW5zaW9uIG1vZHVsZSBvbiBXaW5kb3dzCi0gIGZhaWxzIHRvIGltcG9ydCBub3cgdXNlcyB0aGUgbmV3IHBhdGggYW5kIG5hbWUgYXR0cmlidXRlcyBmcm9tCi0gIElzc3VlICMxNTU5NTQ5LgotCi0tIElzc3VlICMxMzg4OTogQ2hlY2sgYW5kIChpZiBuZWNlc3NhcnkpIHNldCBGUFUgY29udHJvbCB3b3JkIGJlZm9yZSBjYWxsaW5nCi0gIGFueSBvZiB0aGUgZHRvYS5jIHN0cmluZyA8LT4gZmxvYXQgY29udmVyc2lvbiBmdW5jdGlvbnMsIG9uIE1TVkMgYnVpbGRzIG9mCi0gIFB5dGhvbi4gIFRoaXMgZml4ZXMgaXNzdWVzIHdoZW4gZW1iZWRkaW5nIFB5dGhvbiBpbiBhIERlbHBoaSBhcHAuCi0KLS0gX19pbXBvcnRfXygpIG5vdyBtYXRjaGVzIFBFUCAzMjggYW5kIGRvY3VtZW50YXRpb24gYnkgZGVmYXVsdGluZyAnaW5kZXgnIHRvIDAKLSAgaW5zdGVhZCBvZiAtMSBhbmQgcmVtb3Zpbmcgc3VwcG9ydCBmb3IgbmVnYXRpdmUgdmFsdWVzLgotCi0tIElzc3VlICMyMzc3OiBNYWtlIGltcG9ydGxpYiB0aGUgaW1wbGVtZW50YXRpb24gb2YgX19pbXBvcnRfXygpLgotCi0tIElzc3VlICMxNTU5NTQ5OiBJbXBvcnRFcnJvciBub3cgaGFzICduYW1lJyBhbmQgJ3BhdGgnIGF0dHJpYnV0ZXMgdGhhdCBhcmUgc2V0Ci0gIHVzaW5nIGtleXdvcmQgYXJndW1lbnRzIHRvIGl0cyBjb25zdHJ1Y3Rvci4gVGhleSBhcmUgY3VycmVudGx5IG5vdCBzZXQgYnkKLSAgaW1wb3J0IGFzIHRoZXkgYXJlIG1lYW50IGZvciB1c2UgYnkgaW1wb3J0bGliLgotCi0tIElzc3VlICMxNDQ3NDogU2F2ZSBhbmQgcmVzdG9yZSBleGNlcHRpb24gc3RhdGUgaW4gdGhyZWFkLnN0YXJ0X25ld190aHJlYWQoKQotICB3aGlsZSB3cml0aW5nIGVycm9yIG1lc3NhZ2UgaWYgdGhlIHRocmVhZCBsZWF2ZXMgYSB1bmhhbmRsZWQgZXhjZXB0aW9uLgotCi0tIElzc3VlICMxMzAxOTogRml4IHBvdGVudGlhbCByZWZlcmVuY2UgbGVha3MgaW4gYnl0ZWFycmF5LmV4dGVuZCgpLiAgUGF0Y2gKLSAgYnkgU3VtYW4gU2FoYS4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMxNDc2ODogb3MucGF0aC5leHBhbmR1c2VyKCd+L2EnKSBkb2Vzbid0IHdvcmtzIGNvcnJlY3RseSB3aGVuIEhPTUUgaXMgJy8nLgotCi0tIElzc3VlICMxNDM3MTogU3VwcG9ydCBiemlwMiBpbiB6aXBmaWxlIG1vZHVsZS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzEzMTgzOiBGaXggcGRiIHNraXBwaW5nIGZyYW1lcyBhZnRlciBoaXR0aW5nIGEgYnJlYWtwb2ludCBhbmQgcnVubmluZwotICBzdGVwLiAgUGF0Y2ggYnkgWGF2aWVyIGRlIEdheWUuCi0KLS0gSXNzdWUgIzE0Njk2OiBGaXggcGFyc2VyIG1vZHVsZSB0byB1bmRlcnN0YW5kICdub25sb2NhbCcgZGVjbGFyYXRpb25zLgotCi0tIElzc3VlICMxMDk0MTogRml4IGltYXBsaWIuSW50ZXJuYWxkYXRlMnR1cGxlIHRvIHByb2R1Y2UgY29ycmVjdCByZXN1bHQgbmVhcgotICB0aGUgRFNUIHRyYW5zaXRpb24uICBQYXRjaCBieSBKb2UgUGV0ZXJzb24uCi0KLS0gSXNzdWUgIzkxNTQ6IEZpeCBwYXJzZXIgbW9kdWxlIHRvIHVuZGVyc3RhbmQgZnVuY3Rpb24gYW5ub3RhdGlvbnMuCi0KLS0gSXNzdWUgIzYwODU6IEluIGh0dHAuc2VydmVyLnB5IFNpbXBsZUhUVFBTZXJ2ZXIuYWRkcmVzc19zdHJpbmcgcmV0dXJucyB0aGUKLSAgY2xpZW50IGlwIGFkZHJlc3MgaW5zdGVhZCBjbGllbnQgaG9zdG5hbWUuIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjMTQzMDk6IERlcHJlY2F0ZSB0aW1lLmNsb2NrKCksIHVzZSB0aW1lLnBlcmZfY291bnRlcigpIG9yCi0gIHRpbWUucHJvY2Vzc190aW1lKCkgaW5zdGVhZC4KLQotLSBJc3N1ZSAjMTQ0Mjg6IEltcGxlbWVudCB0aGUgUEVQIDQxOC4gQWRkIHRpbWUuZ2V0X2Nsb2NrX2luZm8oKSwKLSAgdGltZS5wZXJmX2NvdW50ZXIoKSBhbmQgdGltZS5wcm9jZXNzX3RpbWUoKSBmdW5jdGlvbnMsIGFuZCByZW5hbWUKLSAgdGltZS5zdGVhZHkoKSB0byB0aW1lLm1vbm90b25pYygpLgotCi0tIElzc3VlICMxNDY0NjogaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zvcl9sb2FkZXIoKSBub3cgc2V0cyBfX2xvYWRlcl9fIGFuZAotICBfX3BhY2thZ2VfXyAod2hlbiBwb3NzaWJsZSkuCi0KLS0gSXNzdWUgIzE0NjY0OiBJdCBpcyBub3cgcG9zc2libGUgdG8gdXNlIEB1bml0dGVzdC5za2lwe0lmLFVubGVzc30gb24gYQotICB0ZXN0IGNsYXNzIHRoYXQgZG9lc24ndCBpbmhlcml0IGZyb20gVGVzdENhc2UgKGkuZS4gYSBtaXhpbikuCi0KLS0gSXNzdWUgIzQ4OTI6IG11bHRpcHJvY2Vzc2luZyBDb25uZWN0aW9ucyBjYW4gbm93IGJlIHRyYW5zZmVycmVkIG92ZXIKLSAgbXVsdGlwcm9jZXNzaW5nIENvbm5lY3Rpb25zLiAgUGF0Y2ggYnkgUmljaGFyZCBPdWRrZXJrIChzYnQpLgotCi0tIElzc3VlICMxNDE2MDogVGFyRmlsZS5leHRyYWN0ZmlsZSgpIGZhaWxlZCB0byByZXNvbHZlIHN5bWJvbGljIGxpbmtzIHdoZW4KLSAgdGhlIGxpbmtzIHdlcmUgbm90IGxvY2F0ZWQgaW4gYW4gYXJjaGl2ZSBzdWJkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzE0NjM4OiBweWRvYyBub3cgdHJlYXRzIG5vbi1zdHJpbmcgX19uYW1lX18gdmFsdWVzIGFzIGlmIHRoZXkKLSAgd2VyZSBtaXNzaW5nLCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IuCi0KLS0gSXNzdWUgIzEzNjg0OiBGaXggaHR0cGxpYiB0dW5uZWwgaXNzdWUgb2YgaW5maW5pdGUgbG9vcHMgZm9yIGNlcnRhaW4gc2l0ZXMKLSAgd2hpY2ggc2VuZCBFT0Ygd2l0aG91dCB0cmFpbGluZyBcclxuLgotCi0tIElzc3VlICMxNDYwNTogQWRkIGltcG9ydGxpYi5hYmMuRmlsZUxvYWRlciwgaW1wb3J0bGliLm1hY2hpbmVyeS4oRmlsZUZpbmRlciwKLSAgU291cmNlRmlsZUxvYWRlciwgU291cmNlbGVzc0ZpbGVMb2FkZXIsIEV4dGVuc2lvbkZpbGVMb2FkZXIpLgotCi0tIElzc3VlICMxMzk1OTogaW1wLmNhY2hlX2Zyb21fc291cmNlKCkvc291cmNlX2Zyb21fY2FjaGUoKSBub3cgZm9sbG93Ci0gIG9zLnBhdGguam9pbigpL3NwbGl0KCkgc2VtYW50aWNzIGZvciBwYXRoIG1hbmlwdWxhdGlvbiBpbnN0ZWFkIG9mIGl0cyBwcmlvciwKLSAgY3VzdG9tIHNlbWFudGljcyBvZiBjYXJpbmcgdGhlIHJpZ2h0LW1vc3QgcGF0aCBzZXBhcmF0b3IgZm9yd2FyZCBpbiBwYXRoCi0gIGpvaW5pbmcuCi0KLS0gSXNzdWUgIzIxOTM6IEFsbG93ICI6IiBjaGFyYWN0ZXIgaW4gQ29va2llIE5BTUUgdmFsdWVzLgotCi0tIElzc3VlICMxNDYyOTogdG9rZW5pemVyLmRldGVjdF9lbmNvZGluZyB3aWxsIHNwZWNpZnkgdGhlIGZpbGVuYW1lIGluIHRoZQotICBTeW50YXhFcnJvciBleGNlcHRpb24gaWYgZm91bmQgYXQgcmVhZGxpbmUuX19zZWxmX18ubmFtZS4KLQotLSBJc3N1ZSAjMTQ2Mjk6IFJhaXNlIFN5bnRheEVycm9yIGluIHRva2VuaXplci5kZXRlY3RfZW5jb2RpbmcgaWYgdGhlCi0gIGZpcnN0IHR3byBsaW5lcyBoYXZlIG5vbi1VVEYtOCBjaGFyYWN0ZXJzIHdpdGhvdXQgYW4gZW5jb2RpbmcgZGVjbGFyYXRpb24uCi0KLS0gSXNzdWUgIzE0MzA4OiBGaXggYW4gZXhjZXB0aW9uIHdoZW4gYSAiZHVtbXkiIHRocmVhZCBpcyBpbiB0aGUgdGhyZWFkaW5nCi0gIG1vZHVsZSdzIGFjdGl2ZSBsaXN0IGFmdGVyIGEgZm9yaygpLgotCi0tIElzc3VlICMxMTc1MDogVGhlIFdpbmRvd3MgQVBJIGZ1bmN0aW9ucyBzY2F0dGVyZWQgaW4gdGhlIF9zdWJwcm9jZXNzIGFuZAotICBfbXVsdGlwcm9jZXNzaW5nLndpbjMyIG1vZHVsZXMgbm93IGxpdmUgaW4gYSBzaW5nbGUgbW9kdWxlICJfd2luYXBpIi4KLSAgUGF0Y2ggYnkgc2J0LgotCi0tIElzc3VlICMxNDA4NzogbXVsdGlwcm9jZXNzaW5nOiBhZGQgQ29uZGl0aW9uLndhaXRfZm9yKCkuIFBhdGNoIGJ5IHNidC4KLQotLSBJc3N1ZSAjMTQ1Mzg6IEhUTUxQYXJzZXIgY2FuIG5vdyBwYXJzZSBjb3JyZWN0bHkgc3RhcnQgdGFncyB0aGF0IGNvbnRhaW4KLSAgYSBiYXJlICcvJy4KLQotLSBJc3N1ZSAjMTQ0NTI6IFN5c0xvZ0hhbmRsZXIgbm8gbG9uZ2VyIGluc2VydHMgYSBVVEYtOCBCT00gaW50byB0aGUgbWVzc2FnZS4KLQotLSBJc3N1ZSAjMTQzODY6IEV4cG9zZSB0aGUgZGljdF9wcm94eSBpbnRlcm5hbCB0eXBlIGFzIHR5cGVzLk1hcHBpbmdQcm94eVR5cGUuCi0KLS0gSXNzdWUgIzEzOTU5OiBNYWtlIGltcC5yZWxvYWQoKSBhbHdheXMgdXNlIGEgbW9kdWxlJ3MgX19sb2FkZXJfXyB0byBwZXJmb3JtCi0gIHRoZSByZWxvYWQuCi0KLS0gSXNzdWUgIzEzOTU5OiBBZGQgaW1wLnB5IGFuZCByZW5hbWUgdGhlIGJ1aWx0LWluIG1vZHVsZSB0byBfaW1wLCBhbGxvd2luZyBmb3IKLSAgcmUtaW1wbGVtZW50aW5nIHBhcnRzIG9mIHRoZSBtb2R1bGUgaW4gcHVyZSBQeXRob24uCi0KLS0gSXNzdWUgIzEzNDk2OiBGaXggcG90ZW50aWFsIG92ZXJmbG93IGluIGJpc2VjdC5iaXNlY3QgYWxnb3JpdGhtIHdoZW4gYXBwbGllZAotICB0byBhIGNvbGxlY3Rpb24gb2Ygc2l6ZSA+IHN5cy5tYXhzaXplIC8gMi4KLQotLSBIYXZlIGltcG9ydGxpYiB0YWtlIGFkdmFudGFnZSBvZiBJbXBvcnRFcnJvcidzIG5ldyAnbmFtZScgYW5kICdwYXRoJwotICBhdHRyaWJ1dGVzLgotCi0tIElzc3VlICMxNDM5OTogemlwZmlsZSBub3cgcmVjb2duaXplcyB0aGF0IHRoZSBhcmNoaXZlIGhhcyBiZWVuIG1vZGlmaWVkIGV2ZW4KLSAgaWYgb25seSB0aGUgY29tbWVudCBpcyBjaGFuZ2VkLiAgSW4gYWRkaXRpb24sIHRoZSBUeXBlRXJyb3IgdGhhdCByZXN1bHRzIGZyb20KLSAgdHJ5aW5nIHRvIHNldCBhIG5vbi1iaW5hcnkgdmFsdWUgYXMgYSBjb21tZW50IGlzIG5vdyByYWlzZWQgYXQgdGhlIHRpbWUKLSAgdGhlIGNvbW1lbnQgaXMgc2V0IHJhdGhlciB0aGFuIGF0IHRoZSB0aW1lIHRoZSB6aXBmaWxlIGlzIHdyaXR0ZW4uCi0KLS0gdHJhY2UuQ292ZXJhZ2VSZXN1bHRzLmlzX2lnbm9yZWRfZmlsZW5hbWUoKSBub3cgaWdub3JlcyBhbnkgbmFtZSB0aGF0IHN0YXJ0cwotICB3aXRoICI8IiBhbmQgZW5kcyB3aXRoICI+IiBpbnN0ZWFkIG9mIHNwZWNpYWwtY2FzaW5nICI8c3RyaW5nPiIgYW5kCi0gICI8ZG9jdGVzdCAiLgotCi0tIElzc3VlICMxMjUzNzogVGhlIG1haWxib3ggbW9kdWxlIG5vIGxvbmdlciBkZXBlbmRzIG9uIGtub3dsZWRnZSBvZiBpbnRlcm5hbAotICBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRoZSBlbWFpbCBwYWNrYWdlIE1lc3NhZ2Ugb2JqZWN0LgotCi0tIElzc3VlICM3OTc4OiBzb2NrZXRzZXJ2ZXIgbm93IHJlc3RhcnRzIHRoZSBzZWxlY3QoKSBjYWxsIHdoZW4gRUlOVFIgaXMKLSAgcmV0dXJuZWQuICBUaGlzIGF2b2lkcyBjcmFzaGluZyB0aGUgc2VydmVyIGxvb3Agd2hlbiBhIHNpZ25hbCBpcyByZWNlaXZlZC4KLSAgUGF0Y2ggYnkgSmVyenkgS296ZXJhLgotCi0tIElzc3VlICMxNDUyMjogQXZvaWQgZHVwbGljYXRpbmcgc29ja2V0IGhhbmRsZXMgaW4gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24uCi0gIFBhdGNoIGJ5IHNidC4KLQotLSBEb24ndCBQeV9ERUNSRUYgTlVMTCB2YXJpYWJsZSBpbiBpby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyLgotCi0tIElzc3VlICMzMDMzOiBBZGQgZGlzcGxheW9mIHBhcmFtZXRlciB0byB0a2ludGVyIGZvbnQuIFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvLgotCi0tIElzc3VlICMxNDQ4MjogUmFpc2UgYSBWYWx1ZUVycm9yLCBub3QgYSBOYW1lRXJyb3IsIHdoZW4gdHJ5aW5nIHRvIGNyZWF0ZQotICBhIG11bHRpcHJvY2Vzc2luZyBDbGllbnQgb3IgTGlzdGVuZXIgd2l0aCBhbiBBRl9VTklYIHR5cGUgYWRkcmVzcyB1bmRlcgotICBXaW5kb3dzLiAgUGF0Y2ggYnkgUG9wYSBDbGF1ZGl1LgotCi0tIElzc3VlICM4MDIzMTA6IEdlbmVyYXRlIGFsd2F5cyB1bmlxdWUgdGtpbnRlciBmb250IG5hbWVzIGlmIG5vdCBkaXJlY3RseSBwYXNzZWQuCi0KLS0gSXNzdWUgIzE0MTUxOiBSYWlzZSBhIFZhbHVlRXJyb3IsIG5vdCBhIE5hbWVFcnJvciwgd2hlbiB0cnlpbmcgdG8gY3JlYXRlCi0gIGEgbXVsdGlwcm9jZXNzaW5nIENsaWVudCBvciBMaXN0ZW5lciB3aXRoIGFuIEFGX1BJUEUgdHlwZSBhZGRyZXNzIHVuZGVyCi0gIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4gIFBhdGNoIGJ5IFBvcGEgQ2xhdWRpdS4KLQotLSBJc3N1ZSAjMTQ0OTM6IFVzZSBndmZzLW9wZW4gb3IgeGRnLW9wZW4gaW4gd2ViYnJvd3Nlci4KLQotQnVpbGQKLS0tLS0tCi0KLS0gIm1ha2UgdG91Y2giIHdpbGwgbm93IHRvdWNoIGdlbmVyYXRlZCBmaWxlcyB0aGF0IGFyZSBjaGVja2VkIGludG8gTWVyY3VyaWFsLAotICBhZnRlciBhICJoZyB1cGRhdGUiIHdoaWNoIGZhaWxlZCB0byBicmluZyB0aGUgdGltZXN0YW1wcyBpbnRvIHRoZSByaWdodCBvcmRlci4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzE0MDI2OiBJbiB0ZXN0X2NtZF9saW5lX3NjcmlwdCwgY2hlY2sgdGhhdCBzeXMuYXJndiBpcyBwb3B1bGF0ZWQKLSAgY29ycmVjdGx5IGZvciB0aGUgdmFyaW91cyBpbnZvY2F0aW9uIGFwcHJvYWNoZXMgKFBhdGNoIGJ5IEphc29uIFllbykKLQotLSBJc3N1ZSAjMTQwMzI6IEZpeCBpbmNvcnJlY3QgdmFyaWFibGUgbmFtZSBpbiB0ZXN0X2NtZF9saW5lX3NjcmlwdCBkZWJ1Z2dpbmcKLSAgbWVzc2FnZSAoUGF0Y2ggYnkgSmFzb24gWWVvKQotCi0tIElzc3VlICMxNDU4OTogVXBkYXRlIGNlcnRpZmljYXRlIGNoYWluIGZvciBzaGEyNTYudGJzLWludGVybmV0LmNvbSwgZml4aW5nCi0gIGEgdGVzdCBmYWlsdXJlIGluIHRlc3Rfc3NsLgotCi0tIElzc3VlICMxNDM1NTogUmVncnRlc3Qgbm93IHN1cHBvcnRzIHRoZSBzdGFuZGFyZCB1bml0dGVzdCB0ZXN0IGxvYWRpbmcsIGFuZAotICB3aWxsIHVzZSBpdCBpZiBhIHRlc3QgZmlsZSBjb250YWlucyBubyBgdGVzdF9tYWluYCBtZXRob2QuCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjODUxNTogU2V0IF9fZmlsZV9fIHdoZW4gcnVuIGZpbGUgaW4gSURMRS4KLSAgSW5pdGlhbCBwYXRjaCBieSBCcnVjZSBGcmVkZXJpa3Nlbi4KLQotLSBJc3N1ZSAjMTQ0OTY6IEZpeCB3cm9uZyBuYW1lIGluIGlkbGVsaWIvdGFiYmVkcGFnZXMucHkuCi0gIFBhdGNoIGJ5IFBvcGEgQ2xhdWRpdS4KLQotVG9vbHMgLyBEZW1vcwotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMzNTYxOiBUaGUgV2luZG93cyBpbnN0YWxsZXIgbm93IGhhcyBhbiBvcHRpb24sIG9mZiBieSBkZWZhdWx0LCBmb3IKLSAgcGxhY2luZyB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiBpbnRvIHRoZSBzeXN0ZW0gIlBhdGgiIGVudmlyb25tZW50IHZhcmlhYmxlLgotCi0tIElzc3VlICMxMzE2NTogc3RyaW5nYmVuY2ggaXMgbm93IGF2YWlsYWJsZSBpbiB0aGUgVG9vbHMvc3RyaW5nYmVuY2ggZm9sZGVyLgotICBJdCB1c2VkIHRvIGxpdmUgaW4gaXRzIG93biBTVk4gcHJvamVjdC4KLQotQy1BUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzE0MDk4OiBOZXcgZnVuY3Rpb25zIFB5RXJyX0dldEV4Y0luZm8gYW5kIFB5RXJyX1NldEV4Y0luZm8uCi0gIFBhdGNoIGJ5IFN0ZWZhbiBCZWhuZWwuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQWxwaGEgMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDAxLUFwci0yMDEyKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTY4MzM2ODogb2JqZWN0Ll9fbmV3X18gYW5kIG9iamVjdC5fX2luaXRfXyByYWlzZSBhIFR5cGVFcnJvciBpZiB0aGV5Ci0gIGFyZSBwYXNzZWQgYXJndW1lbnRzIGFuZCB0aGVpciBjb21wbGVtZW50YXJ5IG1ldGhvZCBpcyBub3Qgb3ZlcnJpZGRlbi4KLQotLSBJc3N1ZSAjMTQzNzg6IEZpeCBjb21waWxpbmcgYXN0LkltcG9ydEZyb20gbm9kZXMgd2l0aCBhICJfX2Z1dHVyZV9fIiBzdHJpbmcgYXMKLSAgdGhlIG1vZHVsZSBuYW1lIHRoYXQgd2FzIG5vdCBpbnRlcm5lZC4KLQotLSBJc3N1ZSAjMTQzMzE6IFVzZSBzaWduaWZpY2FudGx5IGxlc3Mgc3RhY2sgc3BhY2Ugd2hlbiBpbXBvcnRpbmcgbW9kdWxlcyBieQotICBhbGxvY2F0aW5nIHBhdGggYnVmZmVycyBvbiB0aGUgaGVhcCBpbnN0ZWFkIG9mIHRoZSBzdGFjay4KLQotLSBJc3N1ZSAjMTQzMzQ6IFByZXZlbnQgaW4gYSBzZWdmYXVsdCBpbiB0eXBlLl9fZ2V0YXR0cmlidXRlX18gd2hlbiBpdCB3YXMgbm90Ci0gIHBhc3NlZCBzdHJpbmdzLgotCi0tIElzc3VlICMxNDY5NjI5OiBBbGxvdyBjeWNsZXMgdGhyb3VnaCBhbiBvYmplY3QncyBfX2RpY3RfXyBzbG90IHRvIGJlCi0gIGNvbGxlY3RlZC4gKEZvciBleGFtcGxlIGlmIGBgeC5fX2RpY3RfXyBpcyB4YGApLgotCi0tIElzc3VlICMxNDIwNTogZGljdCBsb29rdXAgcmFpc2VzIGEgUnVudGltZUVycm9yIGlmIHRoZSBkaWN0IGlzIG1vZGlmaWVkCi0gIGR1cmluZyBhIGxvb2t1cC4KLQotLSBJc3N1ZSAjMTQyMjA6IFdoZW4gYSBnZW5lcmF0b3IgaXMgZGVsZWdhdGluZyB0byBhbm90aGVyIGl0ZXJhdG9yIHdpdGggdGhlCi0gIHlpZWxkIGZyb20gc3ludGF4LCBpdCBuZWVkcyB0byBoYXZlIGl0cyBgYGdpX3J1bm5pbmdgYCBmbGFnIHNldCB0byBUcnVlLgotCi0tIElzc3VlICMxNDQzNTogUmVtb3ZlIGRlZGljYXRlZCBibG9jayBhbGxvY2F0b3IgZnJvbSBmbG9hdG9iamVjdC5jIGFuZCByZWx5Ci0gIG9uIHRoZSBQeU9iamVjdF9NYWxsb2MoKSBhcGkgbGlrZSBhbGwgb3RoZXIgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTQ0NzE6IEZpeCBhIHBvc3NpYmxlIGJ1ZmZlciBvdmVycnVuIGluIHRoZSB3aW5yZWcgbW9kdWxlLgotCi0tIElzc3VlICMxNDI4ODogQWxsb3cgdGhlIHNlcmlhbGl6YXRpb24gb2YgYnVpbHRpbiBpdGVyYXRvcnMKLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMxNDMwMDogVW5kZXIgV2luZG93cywgc29ja2V0cyBjcmVhdGVkIHVzaW5nIHNvY2tldC5kdXAoKSBub3cgYWxsb3cKLSAgb3ZlcmxhcHBlZCBJL08uICBQYXRjaCBieSBzYnQuCi0KLS0gSXNzdWUgIzEzODcyOiBzb2NrZXQuZGV0YWNoKCkgbm93IG1hcmtzIHRoZSBzb2NrZXQgY2xvc2VkIChhcyBtaXJyb3JlZAotICBpbiB0aGUgc29ja2V0IHJlcHIoKSkuICBQYXRjaCBieSBNYXR0IEpvaW5lci4KLQotLSBJc3N1ZSAjMTQ0MDY6IEZpeCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gdXNpbmcgYGBjb25jdXJyZW50LmZ1dHVyZXMud2FpdCgKLSAgcmV0dXJuX3doZW49QUxMX0NPTVBMRVRFRClgYC4gIFBhdGNoIGJ5IE1hdHQgSm9pbmVyLgotCi0tIElzc3VlICM1MTM2OiBkZXByZWNhdGUgb2xkLCB1bnVzZWQgZnVuY3Rpb25zIGZyb20gdGtpbnRlci4KLQotLSBJc3N1ZSAjMTQ0MTY6IHN5c2xvZyBub3cgZGVmaW5lcyB0aGUgTE9HX09ERUxBWSBhbmQgTE9HX0FVVEhQUklWIGNvbnN0YW50cwotICBpZiB0aGV5IGFyZSBkZWZpbmVkIGluIDxzeXNsb2cuaD4uCi0KLS0gSXNzdWUgIzE0Mjk1OiBBZGQgdW5pdHRlc3QubW9jawotCi0tIElzc3VlICM3NjUyOiBBZGQgLS13aXRoLXN5c3RlbS1saWJtcGRlYyBvcHRpb24gdG8gY29uZmlndXJlIGZvciBsaW5raW5nCi0gIHRoZSBfZGVjaW1hbCBtb2R1bGUgYWdhaW5zdCBhbiBpbnN0YWxsZWQgbGlibXBkZWMuCi0KLS0gSXNzdWUgIzE0MzgwOiBNSU1FVGV4dCBub3cgZGVmYXVsdHMgdG8gdXRmLTggd2hlbiBwYXNzZWQgbm9uLUFTQ0lJIHVuaWNvZGUKLSAgd2l0aCBubyBjaGFyc2V0IHNwZWNpZmllZC4KLQotLSBJc3N1ZSAjMTAzNDA6IGFzeW5jb3JlIC0gcHJvcGVybHkgaGFuZGxlIEVJTlZBTCBpbiBkaXNwYXRjaGVyIGNvbnN0cnVjdG9yIG9uCi0gIE9TWDsgYXZvaWQgdG8gY2FsbCBoYW5kbGVfY29ubmVjdCBpbiBjYXNlIG9mIGEgZGlzY29ubmVjdGVkIHNvY2tldCB3aGljaAotICB3YXMgbm90IG1lYW50IHRvIGNvbm5lY3QuCi0KLS0gSXNzdWUgIzE0MjA0OiBUaGUgc3NsIG1vZHVsZSBub3cgaGFzIHN1cHBvcnQgZm9yIHRoZSBOZXh0IFByb3RvY29sCi0gIE5lZ290aWF0aW9uIGV4dGVuc2lvbiwgaWYgYXZhaWxhYmxlIGluIHRoZSB1bmRlcmx5aW5nIE9wZW5TU0wgbGlicmFyeS4KLSAgUGF0Y2ggYnkgQ29saW4gTWFyYy4KLQotLSBJc3N1ZSAjMzAzNTogVW51c2VkIGZ1bmN0aW9ucyBmcm9tIHRraW50ZXIgYXJlIG1hcmtlZCBhcyBwZW5kaW5nIGRlcHJlY2F0ZWQuCi0KLS0gSXNzdWUgIzEyNzU3OiBGaXggdGhlIHNraXBwaW5nIG9mIGRvY3Rlc3RzIHdoZW4gcHl0aG9uIGlzIHJ1biB3aXRoIC1PTyBzbwotICB0aGF0IGl0IHdvcmtzIGluIHVuaXR0ZXN0J3MgdmVyYm9zZSBtb2RlIGFzIHdlbGwgYXMgbm9uLXZlcmJvc2UgbW9kZS4KLQotLSBJc3N1ZSAjNzY1MjogSW50ZWdyYXRlIHRoZSBkZWNpbWFsIGZsb2F0aW5nIHBvaW50IGxpYm1wZGVjIGxpYnJhcnkgdG8gc3BlZWQKLSAgdXAgdGhlIGRlY2ltYWwgbW9kdWxlLiBQZXJmb3JtYW5jZSBnYWlucyBvZiB0aGUgbmV3IEMgaW1wbGVtZW50YXRpb24gYXJlCi0gIGJldHdlZW4gMTB4IGFuZCAxMDB4LCBkZXBlbmRpbmcgb24gdGhlIGFwcGxpY2F0aW9uLgotCi0tIElzc3VlICMxNDI2OTogU01UUEQgbm93IGNvbmZvcm1zIHRvIHRoZSBSRkMgYW5kIHJlcXVpcmVzIGEgSEVMTyBjb21tYW5kCi0gIGJlZm9yZSBNQUlMLCBSQ1BULCBvciBEQVRBLgotCi0tIElzc3VlICMxMzY5NDogYXN5bmNocm9ub3VzIGNvbm5lY3QgaW4gYXN5bmNvcmUuZGlzcGF0Y2hlciBkb2VzIG5vdCBzZXQgYWRkcgotICBhdHRyaWJ1dGUuCi0KLS0gSXNzdWUgIzE0MzQ0OiBmaXhlZCB0aGUgcmVwciBvZiBlbWFpbC5wb2xpY3kgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTE2ODY6IEFkZGVkIG1pc3NpbmcgZW50cmllcyB0byBlbWFpbCBwYWNrYWdlIF9fYWxsX18gbGlzdHMKLSAgKG1vc3RseSB0aGUgbmV3IEJ5dGVzIGNsYXNzZXMpLgotCi0tIElzc3VlICMxNDMzNTogbXVsdGlwcm9jZXNzaW5nJ3MgY3VzdG9tIFBpY2tsZXIgc3ViY2xhc3Mgbm93IGluaGVyaXRzIGZyb20KLSAgdGhlIEMtYWNjZWxlcmF0ZWQgaW1wbGVtZW50YXRpb24uICBQYXRjaCBieSBzYnQuCi0KLS0gSXNzdWUgIzEwNDg0OiBGaXggdGhlIENHSUhUVFBTZXJ2ZXIncyBQQVRIX0lORk8gaGFuZGxpbmcgcHJvYmxlbS4KLQotLSBJc3N1ZSAjMTExOTk6IEZpeCB0aGUgd2l0aCB1cmxsaWIgd2hpY2ggaGFuZ3Mgb24gcGFydGljdWxhciBmdHAgdXJscy4KLQotLSBJbXByb3ZlIHRoZSBtZW1vcnkgdXRpbGl6YXRpb24gYW5kIHNwZWVkIG9mIGZ1bmN0b29scy5scnVfY2FjaGUuCi0KLS0gSXNzdWUgIzE0MjIyOiBVc2UgdGhlIG5ldyB0aW1lLnN0ZWFkeSgpIGZ1bmN0aW9uIGluc3RlYWQgb2YgdGltZS50aW1lKCkgZm9yCi0gIHRpbWVvdXQgaW4gcXVldWUgYW5kIHRocmVhZGluZyBtb2R1bGVzIHRvIG5vdCBiZSBhZmZlY3RlZCBvZiBzeXN0ZW0gdGltZQotICB1cGRhdGUuCi0KLS0gSXNzdWUgIzEzMjQ4OiBSZW1vdmUgbGliMnRvMy5weXRyZWUuQmFzZS5nZXRfcHJlZml4L3NldF9wcmVmaXguCi0KLS0gSXNzdWUgIzE0MjM0OiBDVkUtMjAxMi0wODc2OiBSYW5kb21pemUgaGFzaGVzIG9mIHhtbCBhdHRyaWJ1dGVzIGluIHRoZSBoYXNoCi0gIHRhYmxlIGludGVybmFsIHRvIHRoZSBweWV4cGF0IG1vZHVsZSdzIGNvcHkgb2YgdGhlIGV4cGF0IGxpYnJhcnkgdG8gYXZvaWQgYQotICBkZW5pYWwgb2Ygc2VydmljZSBkdWUgdG8gaGFzaCBjb2xsaXNpb25zLiAgUGF0Y2ggYnkgRGF2aWQgTWFsY29sbSB3aXRoIHNvbWUKLSAgbW9kaWZpY2F0aW9ucyBieSB0aGUgZXhwYXQgcHJvamVjdC4KLQotLSBJc3N1ZSAjMTI4MTg6IGZvcm1hdCBhZGRyZXNzIG5vIGxvbmdlciBuZWVkbGVzc2x5IFwgZXNjYXBlcyAoKXMgaW4gbmFtZXMgd2hlbgotICB0aGUgbmFtZSBlbmRzIHVwIGJlaW5nIHF1b3RlZC4KLQotLSBJc3N1ZSAjMTQwNjI6IEJ5dGVzR2VuZXJhdG9yIG5vdyBjb3JyZWN0bHkgZm9sZHMgSGVhZGVyIG9iamVjdHMsCi0gIGluY2x1ZGluZyB1c2luZyBsaW5lc2VwIHdoZW4gZm9sZGluZy4KLQotLSBJc3N1ZSAjMTM4Mzk6IFdoZW4gaW52b2tlZCBvbiB0aGUgY29tbWFuZC1saW5lLCB0aGUgcHN0YXRzIG1vZHVsZSBub3cKLSAgYWNjZXB0cyBzZXZlcmFsIGZpbGVuYW1lcyBvZiBwcm9maWxlIHN0YXQgZmlsZXMgYW5kIG1lcmdlcyB0aGVtIGFsbC4KLSAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCi0KLS0gSXNzdWUgIzE0MjkxOiBFbWFpbCBub3cgZGVmYXVsdHMgdG8gdXRmLTggZm9yIG5vbi1BU0NJSSB1bmljb2RlIGhlYWRlcnMKLSAgaW5zdGVhZCBvZiByYWlzaW5nIGFuIGVycm9yLiAgVGhpcyBmaXhlcyBhIHJlZ3Jlc3Npb24gcmVsYXRpdmUgdG8gMi43LgotCi0tIElzc3VlICM5ODk3MTI6IFN1cHBvcnQgdXNpbmcgVGsgd2l0aG91dCBhIG1haW5sb29wLgotCi0tIElzc3VlICMzODM1OiBSZWZ1c2UgdG8gdXNlIHVudGhyZWFkZWQgVGNsIGluIHRocmVhZGVkIFB5dGhvbi4KLQotLSBJc3N1ZSAjMjg0MzogQWRkIG5ldyBUayBBUEkgdG8gVGtpbnRlci4KLQotLSBJc3N1ZSAjMTQxODQ6IEluY3JlYXNlIHRoZSBkZWZhdWx0IHN0YWNrIHNpemUgZm9yIHNlY29uZGFyeSB0aHJlYWRzIG9uCi0gIE1hYyBPUyBYIHRvIGF2b2lkIGludGVycHJldGVyIGNyYXNoZXMgd2hlbiB1c2luZyB0aHJlYWRzIG9uIDEwLjcuCi0KLS0gSXNzdWUgIzE0MTgwOiBkYXRldGltZS5kYXRlLmZyb210aW1lc3RhbXAoKSwKLSAgZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgpIGFuZCBkYXRldGltZS5kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKCkKLSAgbm93IHJhaXNlIGFuIE9TRXJyb3IgaW5zdGVhZCBvZiBWYWx1ZUVycm9yIGlmIGxvY2FsdGltZSgpIG9yIGdtdGltZSgpIGZhaWxlZC4KLQotLSBJc3N1ZSAjMTQxODA6IHRpbWUuY3RpbWUoKSwgZ210aW1lKCksIHRpbWUubG9jYWx0aW1lKCksCi0gIGRhdGV0aW1lLmRhdGUuZnJvbXRpbWVzdGFtcCgpLCBkYXRldGltZS5kYXRldGltZS5mcm9tdGltZXN0YW1wKCkgYW5kCi0gIGRhdGV0aW1lLmRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoKSBub3cgcmFpc2VzIGFuIE92ZXJmbG93RXJyb3IsIGluc3RlYWQgb2YKLSAgYSBWYWx1ZUVycm9yLCBpZiB0aGUgdGltZXN0YW1wIGRvZXMgbm90IGZpdCBpbiB0aW1lX3QuCi0KLS0gSXNzdWUgIzE0MTgwOiBkYXRldGltZS5kYXRldGltZS5mcm9tdGltZXN0YW1wKCkgYW5kCi0gIGRhdGV0aW1lLmRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoKSBub3cgcm91bmQgbWljcm9zZWNvbmRzIHRvd2FyZHMgemVybwotICBpbnN0ZWFkIG9mIHJvdW5kaW5nIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIGF3YXkgZnJvbSB6ZXJvLgotCi0tIElzc3VlICMxMDU0MzogRml4IHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5IHdpdGggSnl0aG9uIGJ5dGVjb2RlIGZpbGVzLgotCi0tIElzc3VlICMxMTc4ODYzOiBTZXBhcmF0ZSBpbml0aWFsaXNhdGlvbiBmcm9tIHNldHRpbmcgd2hlbiBpbml0aWFsaXppbmcKLSAgVGtpbnRlci5WYXJpYWJsZXM7IGhhcm1vbml6ZSBleGNlcHRpb25zIHRvIFZhbHVlRXJyb3I7IG9ubHkgZGVsZXRlIHZhcmlhYmxlcwotICB0aGF0IGhhdmUgbm90IGJlZW4gZGVsZXRlZDsgYXNzZXJ0IHRoYXQgdmFyaWFibGUgbmFtZXMgYXJlIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzE0MTA0OiBJbXBsZW1lbnQgdGltZS5tb25vdG9uaWMoKSBvbiBNYWMgT1MgWCwgcGF0Y2ggd3JpdHRlbiBieQotICBOaWNob2xhcyBSaWxleS4KLQotLSBJc3N1ZSAjMTMzOTQ6IHRoZSBhaWZjIG1vZHVsZSBub3cgdXNlcyB3YXJuaW5ncy53YXJuKCkgdG8gc2lnbmFsIHdhcm5pbmdzLgotCi0tIElzc3VlICMxNDI1MjogRml4IHN1YnByb2Nlc3MuUG9wZW4udGVybWluYXRlKCkgdG8gbm90IHJhaXNlIGFuIGVycm9yIHVuZGVyCi0gIFdpbmRvd3Mgd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBoYXMgYWxyZWFkeSBleGl0ZWQuCi0KLS0gSXNzdWUgIzE0MjIzOiBjdXJzZXMuYWRkY2goKSBpcyBubyBtb3JlIGxpbWl0ZWQgdG8gdGhlIHJhbmdlIDAtMjU1IHdoZW4gdGhlCi0gIFB5dGhvbiBjdXJzZXMgaXMgbm90IGxpbmtlZCB0byBsaWJuY3Vyc2Vzdy4gSXQgd2FzIGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkCi0gIGluIFB5dGhvbiAzLjNhMS4KLQotLSBJc3N1ZSAjMTQxNjg6IENoZWNrIGZvciBwcmVzZW5jZSBvZiBFbGVtZW50Ll9hdHRycyBpbiBtaW5pZG9tIGJlZm9yZQotICBhY2Nlc3NpbmcgaXQuCi0KLS0gSXNzdWUgIzEyMzI4OiBGaXggbXVsdGlwcm9jZXNzaW5nJ3MgdXNlIG9mIG92ZXJsYXBwZWQgSS9PIG9uIFdpbmRvd3MuCi0gIEFsc28sIGFkZCBhIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uLndhaXQocmxpc3QsIHRpbWVvdXQ9Tm9uZSkgZnVuY3Rpb24KLSAgZm9yIHBvbGxpbmcgbXVsdGlwbGUgb2JqZWN0cyBhdCBvbmNlLiAgUGF0Y2ggYnkgc2J0LgotCi0tIElzc3VlICMxNDAwNzogQWNjZXB0IGluY29tcGxldGUgVHJlZUJ1aWxkZXIgb2JqZWN0cyAobWlzc2luZyBzdGFydCwgZW5kLAotICBkYXRhIG9yIGNsb3NlIG1ldGhvZCkgZm9yIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24gYXMgd2VsbC4KLSAgRHJvcCB0aGUgbm8tb3AgVHJlZUJ1aWxkZXIoKS54bWwoKSBtZXRob2QgZnJvbSB0aGUgQyBpbXBsZW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTQyMTA6IHBkYiBub3cgaGFzIHRhYi1jb21wbGV0aW9uIG5vdCBvbmx5IGZvciBjb21tYW5kIG5hbWVzLCBidXQKLSAgYWxzbyBmb3IgdGhlaXIgYXJndW1lbnRzLCB3aGVyZXZlciBwb3NzaWJsZS4KLQotLSBJc3N1ZSAjMTQzMTA6IFNvY2tldHMgY2FuIG5vdyBiZSB3aXRoIG90aGVyIHByb2Nlc3NlcyBvbiBXaW5kb3dzIHVzaW5nCi0gIHRoZSBhcGkgc29ja2V0LnNvY2tldC5zaGFyZSgpIGFuZCBzb2NrZXQuZnJvbXNoYXJlKCkuCi0KLS0gSXNzdWUgIzEwNTc2OiBUaGUgZ2MgbW9kdWxlIG5vdyBoYXMgYSAnY2FsbGJhY2tzJyBtZW1iZXIgdGhhdCB3aWxsIGdldAotICBjYWxsZWQgd2hlbiBnYXJiYWdlIGNvbGxlY3Rpb24gdGFrZXMgcGxhY2UuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxNDU1NzogRml4IGV4dGVuc2lvbnMgYnVpbGQgb24gSFAtVVguIFBhdGNoIGJ5IEFkaSBSb2liYW4uCi0KLS0gSXNzdWUgIzE0Mzg3OiBEbyBub3QgaW5jbHVkZSBhY2N1LmggZnJvbSBQeXRob24uaC4KLQotLSBJc3N1ZSAjMTQzNTk6IE9ubHkgdXNlIE9fQ0xPRVhFQyBpbiBfcG9zaXhtb2R1bGUuYyBpZiBpdCBpcyBkZWZpbmVkLgotICBCYXNlZCBvbiBwYXRjaCBmcm9tIEhlcnbDqSBDb2F0YW5oYXkuCi0KLS0gSXNzdWUgIzE0MzIxOiBEbyBub3QgcnVuIHBnZW4gZHVyaW5nIHRoZSBidWlsZCBpZiBmaWxlcyBhcmUgdXAgdG8gZGF0ZS4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNDAzNDogYWRkZWQgdGhlIGFyZ3BhcnNlIHR1dG9yaWFsLgotCi0tIElzc3VlICMxNDMyNDogRml4IGNvbmZpZ3VyZSB0ZXN0cyBmb3IgY3Jvc3MgYnVpbGRzLgotCi0tIElzc3VlICMxNDMyNzogQ2FsbCBBQ19DQU5PTklDQUxfSE9TVCBpbiBjb25maWd1cmUuYWMgYW5kIGNoZWNrIGluCi0gIGNvbmZpZy57Z3Vlc3Msc3VifS4gRG9uJ3QgdXNlIHVuYW1lIGNhbGxzIGZvciBjcm9zcyBidWlsZHMuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM5MDQxOiBBbiBpc3N1ZSBpbiBjdHlwZXMuY19sb25nZG91YmxlLCBjdHlwZXMuY19kb3VibGUsIGFuZAotICBjdHlwZXMuY19mbG9hdCB0aGF0IGNhdXNlZCBhbiBpbmNvcnJlY3QgZXhjZXB0aW9uIHRvIGJlIHJldHVybmVkIGluIHRoZQotICBjYXNlIG9mIG92ZXJmbG93IGhhcyBiZWVuIGZpeGVkLgotCi0tIElzc3VlICMxNDIxMjogVGhlIHJlIG1vZHVsZSBkaWRuJ3QgcmV0YWluIGEgcmVmZXJlbmNlIHRvIGJ1ZmZlcnMgaXQgd2FzCi0gIHNjYW5uaW5nLCByZXN1bHRpbmcgaW4gc2VnZmF1bHRzLgotCi0tIElzc3VlICMxNDI1OTogVGhlIGZpbmRpdGVyKCkgbWV0aG9kIG9mIHJlIG9iamVjdHMgZGlkIG5vdCB0YWtlIGFueQotICBrZXl3b3JkIGFyZ3VtZW50cywgY29udHJhcnkgdG8gdGhlIGRvY3VtZW50YXRpb24uCi0KLS0gSXNzdWUgIzEwMTQyOiBTdXBwb3J0IGZvciBTRUVLX0hPTEUvU0VFS19EQVRBIChmb3IgZXhhbXBsZSwgdW5kZXIgWkZTKS4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzE0NDQyOiBBZGQgbWlzc2luZyBlcnJubyBpbXBvcnQgaW4gdGVzdF9zbXRwbGliLgotCi0tIElzc3VlICM4MzE1OiAocGFydGlhbCBmaXgpIHB5dGhvbiAtbSB1bml0dGVzdCB0ZXN0LnRlc3RfZW1haWwgbm93IHdvcmtzLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEFscGhhIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAwNS1NYXItMjAxMioKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE0MTcyOiBGaXggcmVmZXJlbmNlIGxlYWsgd2hlbiBtYXJzaGFsbGluZyBhIGJ1ZmZlci1saWtlIG9iamVjdAotICAob3RoZXIgdGhhbiBhIGJ5dGVzIG9iamVjdCkuCi0KLS0gSXNzdWUgIzEzNTIxOiBkaWN0LnNldGRlZmF1bHQoKSBub3cgZG9lcyBvbmx5IG9uZSBsb29rdXAgZm9yIHRoZSBnaXZlbiBrZXksCi0gIG1ha2luZyBpdCAiYXRvbWljIiBmb3IgbWFueSBwdXJwb3Nlcy4gIFBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCi0KLS0gUEVQIDQwOSwgSXNzdWUgIzYyMTA6ICJyYWlzZSBYIGZyb20gTm9uZSIgaXMgbm93IHN1cHBvcnRlZCBhcyBhIG1lYW5zIG9mCi0gIHN1cHByZXNzaW5nIHRoZSBkaXNwbGF5IG9mIHRoZSBjaGFpbmVkIGV4Y2VwdGlvbiBjb250ZXh0LiBUaGUgY2hhaW5lZAotICBjb250ZXh0IHN0aWxsIHJlbWFpbnMgYXZhaWxhYmxlIGFzIHRoZSBfX2NvbnRleHRfXyBhdHRyaWJ1dGUuCi0KLS0gSXNzdWUgIzEwMTgxOiBOZXcgbWVtb3J5dmlldyBpbXBsZW1lbnRhdGlvbiBmaXhlcyBtdWx0aXBsZSBvd25lcnNoaXAKLSAgYW5kIGxpZmV0aW1lIGlzc3VlcyBvZiBkeW5hbWljYWxseSBhbGxvY2F0ZWQgUHlfYnVmZmVyIG1lbWJlcnMgKCM5OTkwKQotICBhcyB3ZWxsIGFzIGNyYXNoZXMgKCM4MzA1LCAjNzQzMykuIE1hbnkgbmV3IGZlYXR1cmVzIGhhdmUgYmVlbiBhZGRlZAotICAoU2VlIHdoYXRzbmV3LzMuMyksIGFuZCB0aGUgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiB1cGRhdGVkIGV4dGVuc2l2ZWx5LgotICBUaGUgbmRhcnJheSB0ZXN0IG9iamVjdCBmcm9tIF90ZXN0YnVmZmVyLmMgaW1wbGVtZW50cyBhbGwgYXNwZWN0cyBvZgotICBQRVAtMzExOCwgc28gZnVydGhlciBkZXZlbG9wbWVudCB0b3dhcmRzIHRoZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbgotICBvZiB0aGUgUEVQIGNhbiBwcm9jZWVkIGluIGEgdGVzdC1kcml2ZW4gbWFubmVyLgotCi0gIFRoYW5rcyB0byBOaWNrIENvZ2hsYW4sIEFudG9pbmUgUGl0cm91IGFuZCBQYXVsaSBWaXJ0YW5lbiBmb3IgcmV2aWV3Ci0gIGFuZCBtYW55IGlkZWFzLgotCi0tIElzc3VlICMxMjgzNDogRml4IGluY29ycmVjdCByZXN1bHRzIG9mIG1lbW9yeXZpZXcudG9ieXRlcygpIGZvcgotICBub24tY29udGlndW91cyBhcnJheXMuCi0KLS0gSXNzdWUgIzUyMzE6IEludHJvZHVjZSBtZW1vcnl2aWV3LmNhc3QoKSBtZXRob2QgdGhhdCBhbGxvd3MgY2hhbmdpbmcKLSAgZm9ybWF0IGFuZCBzaGFwZSB3aXRob3V0IG1ha2luZyBhIGNvcHkgb2YgdGhlIHVuZGVybHlpbmcgbWVtb3J5LgotCi0tIElzc3VlICMxNDA4NDogRml4IGEgZmlsZSBkZXNjcmlwdG9yIGxlYWsgd2hlbiBpbXBvcnRpbmcgYSBtb2R1bGUgd2l0aCBhCi0gIGJhZCBlbmNvZGluZy4KLQotLSBVcGdyYWRlIFVuaWNvZGUgZGF0YSB0byBVbmljb2RlIDYuMS4KLQotLSBJc3N1ZSAjMTQwNDA6IFJlbW92ZSByYXJlbHkgdXNlZCBmaWxlIG5hbWUgc3VmZml4ZXMgZm9yIEMgZXh0ZW5zaW9ucwotICAodW5kZXIgUE9TSVggbWFpbmx5KS4KLQotLSBJc3N1ZSAjMTQwNTE6IEFsbG93IGFyYml0cmFyeSBhdHRyaWJ1dGVzIHRvIGJlIHNldCBvZiBjbGFzc21ldGhvZCBhbmQKLSAgc3RhdGljbWV0aG9kLgotCi0tIElzc3VlICMxMzcwMzogb0NFUlQtMjAxMS0wMDM6IFJhbmRvbWl6ZSBoYXNoZXMgb2Ygc3RyIGFuZCBieXRlcyB0byBwcm90ZWN0Ci0gIGFnYWluc3QgZGVuaWFsIG9mIHNlcnZpY2UgYXR0YWNrcyBkdWUgdG8gaGFzaCBjb2xsaXNpb25zIHdpdGhpbiB0aGUgZGljdCBhbmQKLSAgc2V0IHR5cGVzLiAgUGF0Y2ggYnkgRGF2aWQgTWFsY29sbSwgYmFzZWQgb24gd29yayBieSBWaWN0b3IgU3Rpbm5lci4KLQotLSBJc3N1ZSAjMTMwMjA6IEZpeCBhIHJlZmVyZW5jZSBsZWFrIHdoZW4gYWxsb2NhdGluZyBhIHN0cnVjdHNlcXVlbmNlIG9iamVjdAotICBmYWlscy4gIFBhdGNoIGJ5IFN1bWFuIFNhaGEuCi0KLS0gSXNzdWUgIzEzOTA4OiBSZWFkeSB0eXBlcyByZXR1cm5lZCBmcm9tIFB5VHlwZV9Gcm9tU3BlYy4KLQotLSBJc3N1ZSAjMTEyMzU6IEZpeCBPdmVyZmxvd0Vycm9yIHdoZW4gdHJ5aW5nIHRvIGltcG9ydCBhIHNvdXJjZSBmaWxlIHdob3NlCi0gIG1vZGlmaWNhdGlvbiB0aW1lIGRvZXNuJ3QgZml0IGluIGEgMzItYml0IHRpbWVzdGFtcC4KLQotLSBJc3N1ZSAjMTI3MDU6IEEgU3ludGF4RXJyb3IgZXhjZXB0aW9uIGlzIG5vdyByYWlzZWQgd2hlbiBhdHRlbXB0aW5nIHRvCi0gIGNvbXBpbGUgbXVsdGlwbGUgc3RhdGVtZW50cyBhcyBhIHNpbmdsZSBpbnRlcmFjdGl2ZSBzdGF0ZW1lbnQuCi0KLS0gRml4IHRoZSBidWlsdGluIG1vZHVsZSBpbml0aWFsaXphdGlvbiBjb2RlIHRvIHN0b3JlIHRoZSBpbml0IGZ1bmN0aW9uIGZvcgotICBmdXR1cmUgcmVpbml0aWFsaXphdGlvbi4KLQotLSBJc3N1ZSAjODA1MjogVGhlIHBvc2l4IHN1YnByb2Nlc3MgbW9kdWxlIHdvdWxkIHRha2UgYSBsb25nIHRpbWUgY2xvc2luZwotICBhbGwgcG9zc2libGUgZmlsZSBkZXNjcmlwdG9ycyBpbiB0aGUgY2hpbGQgcHJvY2VzcyByYXRoZXIgdGhhbiBqdXN0IG9wZW4KLSAgZmlsZSBkZXNjcmlwdG9ycy4gIEl0IG5vdyBjbG9zZXMgb25seSB0aGUgb3BlbiBmZHMgaWYgcG9zc2libGUgZm9yIHRoZQotICBkZWZhdWx0IGNsb3NlX2Zkcz1UcnVlIGJlaGF2aW9yLgotCi0tIElzc3VlICMxMzYyOTogUmVudW1iZXIgdGhlIHRva2VucyBpbiB0b2tlbi5oIHNvIHRoYXQgdGhleSBtYXRjaCB0aGUgaW5kZXhlcwotICBpbnRvIF9QeVBhcnNlcl9Ub2tlbk5hbWVzLgotCi0tIElzc3VlICMxMzc1MjogQWRkIGEgY2FzZWZvbGQoKSBtZXRob2QgdG8gc3RyLgotCi0tIElzc3VlICMxMzc2MTogQWRkIGEgImZsdXNoIiBrZXl3b3JkIGFyZ3VtZW50IHRvIHRoZSBwcmludCgpIGZ1bmN0aW9uLAotICB1c2VkIHRvIGVuc3VyZSBmbHVzaGluZyB0aGUgb3V0cHV0IHN0cmVhbS4KLQotLSBJc3N1ZSAjMTM2NDU6IHB5YyBmaWxlcyBub3cgY29udGFpbiB0aGUgc2l6ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UKLSAgY29kZSwgdG8gYXZvaWQgdGltZXN0YW1wIGNvbGxpc2lvbnMgKGVzcGVjaWFsbHkgb24gZmlsZXN5c3RlbXMgd2l0aCBhIGxvdwotICB0aW1lc3RhbXAgcmVzb2x1dGlvbikgd2hlbiBjaGVja2luZyBmb3IgZnJlc2huZXNzIG9mIHRoZSBieXRlY29kZS4KLQotLSBQRVAgMzgwLCBJc3N1ZSAjMTE2ODI6IEFkZCAieWllbGQgZnJvbSA8eD4iIHRvIHN1cHBvcnQgZWFzeSBkZWxlZ2F0aW9uIHRvCi0gIHN1YmdlbmVyYXRvcnMgKGluaXRpYWwgcGF0Y2ggYnkgR3JlZyBFd2luZywgaW50ZWdyYXRpb24gaW50byAzLjMgYnkKLSAgUmVuYXVkIEJsYW5jaCwgUnlhbiBLZWxseSwgWmJpZ25pZXcgSsSZZHJ6ZWpld3NraS1Tem1layBhbmQgTmljayBDb2dobGFuKQotCi0tIElzc3VlICMxMzc0ODogUmF3IGJ5dGVzIGxpdGVyYWxzIGNhbiBub3cgYmUgd3JpdHRlbiB3aXRoIHRoZSBgYHJiYGAgcHJlZml4Ci0gIGFzIHdlbGwgYXMgYGBicmBgLgotCi0tIElzc3VlICMxMjczNjogVXNlIGZ1bGwgdW5pY29kZSBjYXNlIG1hcHBpbmdzIGZvciB1cHBlciwgbG93ZXIsIGFuZCB0aXRsZSBjYXNlLgotCi0tIElzc3VlICMxMjc2MDogQWRkIGEgY3JlYXRlIG1vZGUgdG8gb3BlbigpLiBQYXRjaCBieSBEYXZpZCBUb3duc2hlbmQuCi0KLS0gSXNzdWUgIzEzNzM4OiBTaW1wbGlmeSBpbXBsZW1lbnRhdGlvbiBvZiBieXRlcy5sb3dlcigpIGFuZCBieXRlcy51cHBlcigpLgotCi0tIElzc3VlICMxMzU3NzogQnVpbHQtaW4gbWV0aG9kcyBhbmQgZnVuY3Rpb25zIG5vdyBoYXZlIGEgX19xdWFsbmFtZV9fLgotICBQYXRjaCBieSBzYnQuCi0KLS0gSXNzdWUgIzY2OTU6IEZ1bGwgZ2FyYmFnZSBjb2xsZWN0aW9uIHJ1bnMgbm93IGNsZWFyIHRoZSBmcmVlbGlzdCBvZiBzZXQKLSAgb2JqZWN0cy4gIEluaXRpYWwgcGF0Y2ggYnkgTWF0dGhpYXMgVHJvZmZhZXMuCi0KLS0gRml4IE9TRXJyb3IuX19pbml0X18gYW5kIE9TRXJyb3IuX19uZXdfXyBzbyB0aGF0IGVhY2ggb2YgdGhlbSBjYW4gYmUKLSAgb3ZlcnJpZGVuIGFuZCB0YWtlIGFkZGl0aW9uYWwgYXJndW1lbnRzIChmb2xsb3d1cCB0byBpc3N1ZSAjMTI1NTUpLgotCi0tIEZpeCB0aGUgZml4IGZvciBpc3N1ZSAjMTIxNDk6IGl0IHdhcyBpbmNvcnJlY3QsIGFsdGhvdWdoIGl0IGhhZCB0aGUgc2lkZQotICBlZmZlY3Qgb2YgYXBwZWFyaW5nIHRvIHJlc29sdmUgdGhlIGlzc3VlLiAgVGhhbmtzIHRvIE1hcmsgU2hhbm5vbiBmb3IKLSAgbm90aWNpbmcuCi0KLS0gSXNzdWUgIzEzNTA1OiBQaWNrbGUgYnl0ZXMgb2JqZWN0cyBpbiBhIHdheSB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aAotICBQeXRob24gMiB3aGVuIHVzaW5nIHByb3RvY29scyA8PSAyLgotCi0tIElzc3VlICMxMTE0NzogRml4IGFuIHVudXNlZCBhcmd1bWVudCBpbiBfUHlfQU5OT1RBVEVfTUVNT1JZX09SREVSLiAgKEZpeAotICBnaXZlbiBieSBDYW1wYmVsbCBCYXJ0b24pLgotCi0tIElzc3VlICMxMzUwMzogVXNlIGEgbW9yZSBlZmZpY2llbnQgcmVkdWN0aW9uIGZvcm1hdCBmb3IgYnl0ZWFycmF5cyB3aXRoCi0gIHBpY2tsZSBwcm90b2NvbCA+PSAzLiAgVGhlIG9sZCByZWR1Y3Rpb24gZm9ybWF0IGlzIGtlcHQgd2l0aCBvbGRlciBwcm90b2NvbHMKLSAgaW4gb3JkZXIgdG8gYWxsb3cgdW5waWNrbGluZyB1bmRlciBQeXRob24gMi4gIFBhdGNoIGJ5IElybWVuIGRlIEpvbmcuCi0KLS0gSXNzdWUgIzcxMTE6IFB5dGhvbiBjYW4gbm93IGJlIHJ1biB3aXRob3V0IGEgc3RkaW4sIHN0ZG91dCBvciBzdGRlcnIKLSAgc3RyZWFtLiAgSXQgd2FzIGFscmVhZHkgdGhlIGNhc2Ugd2l0aCBQeXRob24gMi4gIEhvd2V2ZXIsIHRoZSBjb3JyZXNwb25kaW5nCi0gIHN5cyBtb2R1bGUgZW50cmllcyBhcmUgbm93IHNldCB0byBOb25lIChpbnN0ZWFkIG9mIGFuIHVudXNhYmxlIGZpbGUgb2JqZWN0KS4KLQotLSBJc3N1ZSAjMTE4NDk6IEVuc3VyZSB0aGF0IGZyZWUoKWQgbWVtb3J5IGFyZW5hcyBhcmUgcmVhbGx5IHJlbGVhc2VkCi0gIG9uIFBPU0lYIHN5c3RlbXMgc3VwcG9ydGluZyBhbm9ueW1vdXMgbWVtb3J5IG1hcHBpbmdzLiAgUGF0Y2ggYnkKLSAgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIFBFUCAzMTU1IC8gaXNzdWUgIzEzNDQ4OiBRdWFsaWZpZWQgbmFtZSBmb3IgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLgotCi0tIElzc3VlICMxMzQzNjogRml4IGEgYm9ndXMgZXJyb3IgbWVzc2FnZSB3aGVuIGFuIEFTVCBvYmplY3Qgd2FzIHBhc3NlZAotICBhbiBpbnZhbGlkIGludGVnZXIgdmFsdWUuCi0KLS0gSXNzdWUgIzEzNDExOiBtZW1vcnl2aWV3IG9iamVjdHMgYXJlIG5vdyBoYXNoYWJsZSB3aGVuIHRoZSB1bmRlcmx5aW5nCi0gIG9iamVjdCBpcyBoYXNoYWJsZS4KLQotLSBJc3N1ZSAjMTMzMzg6IEhhbmRsZSBhbGwgZW51bWVyYXRpb25zIGluIF9QeV9BTk5PVEFURV9NRU1PUllfT1JERVIKLSAgdG8gYWxsb3cgY29tcGlsaW5nIGV4dGVuc2lvbiBtb2R1bGVzIHdpdGggLVdzd2l0Y2gtZW51bSBvbiBnY2MuCi0gIEluaXRpYWwgcGF0Y2ggYnkgRmxvcmlzIEJydXlub29naGUuCi0KLS0gSXNzdWUgIzEwMjI3OiBBZGQgYW4gYWxsb2NhdGlvbiBjYWNoZSBmb3IgYSBzaW5nbGUgc2xpY2Ugb2JqZWN0LiAgUGF0Y2ggYnkKLSAgU3RlZmFuIEJlaG5lbC4KLQotLSBJc3N1ZSAjMTMzOTM6IEJ1ZmZlcmVkUmVhZGVyLnJlYWQxKCkgbm93IGFza3MgdGhlIGZ1bGwgcmVxdWVzdGVkIHNpemUgdG8KLSAgdGhlIHJhdyBzdHJlYW0gaW5zdGVhZCBvZiBsaW1pdGluZyBpdHNlbGYgdG8gdGhlIGJ1ZmZlciBzaXplLgotCi0tIElzc3VlICMxMzM5MjogV3JpdGluZyBhIHB5YyBmaWxlIHNob3VsZCBub3cgYmUgYXRvbWljIHVuZGVyIFdpbmRvd3MgYXMgd2VsbC4KLQotLSBJc3N1ZSAjMTMzMzM6IFRoZSBVVEYtNyBkZWNvZGVyIG5vdyBhY2NlcHRzIGxvbmUgc3Vycm9nYXRlcyAodGhlIGVuY29kZXIKLSAgYWxyZWFkeSBhY2NlcHRzIHRoZW0pLgotCi0tIElzc3VlICMxMzM4OTogRnVsbCBnYXJiYWdlIGNvbGxlY3Rpb24gcGFzc2VzIG5vdyBjbGVhciB0aGUgZnJlZWxpc3RzIGZvcgotICBsaXN0IGFuZCBkaWN0IG9iamVjdHMuICBUaGV5IGFscmVhZHkgY2xlYXJlZCBvdGhlciBmcmVlbGlzdHMgaW4gdGhlCi0gIGludGVycHJldGVyLgotCi0tIElzc3VlICMxMzMyNzogUmVtb3ZlIHRoZSBuZWVkIGZvciBhbiBleHBsaWNpdCBOb25lIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQKLSAgdG8gb3MudXRpbWUsIG9zLmx1dGltZXMsIG9zLmZ1dGltZXMsIG9zLmZ1dGltZW5zLCBvcy5mdXRpbWVzYXQsIGluCi0gIG9yZGVyIHRvIHVwZGF0ZSB0byB0aGUgY3VycmVudCB0aW1lLiBBbHNvIGFkZGVkIGtleXdvcmQgYXJndW1lbnQKLSAgaGFuZGxpbmcgdG8gb3MudXRpbWVuc2F0IGluIG9yZGVyIHRvIHJlbW92ZSB0aGUgbmVlZCBmb3IgZXhwbGljaXQgTm9uZS4KLQotLSBJc3N1ZSAjMTMzNTA6IFNpbXBsaWZ5IHNvbWUgQyBjb2RlIGJ5IHJlcGxhY2luZyBtb3N0IHVzYWdlcyBvZgotICBQeVVuaWNvZGVfRm9ybWF0IGJ5IFB5VW5pY29kZV9Gcm9tRm9ybWF0LgotCi0tIElzc3VlICMxMzM0MjogaW5wdXQoKSB1c2VkIHRvIGlnbm9yZSBzeXMuc3RkaW4ncyBhbmQgc3lzLnN0ZG91dCdzIHVuaWNvZGUKLSAgZXJyb3IgaGFuZGxlciBpbiBpbnRlcmFjdGl2ZSBtb2RlICh3aGVuIGNhbGxpbmcgaW50byBQeU9TX1JlYWRsaW5lKCkpLgotCi0tIElzc3VlICM5ODk2OiBBZGQgc3RhcnQsIHN0b3AsIGFuZCBzdGVwIGF0dHJpYnV0ZXMgdG8gcmFuZ2Ugb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTMzNDM6IEZpeCBhIFN5c3RlbUVycm9yIHdoZW4gYSBsYW1iZGEgZXhwcmVzc2lvbiB1c2VzIGEgZ2xvYmFsCi0gIHZhcmlhYmxlIGluIHRoZSBkZWZhdWx0IHZhbHVlIG9mIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50OiBgYGxhbWJkYSAqLAotICBhcmc9R0xPQkFMX05BTUU6IE5vbmVgYAotCi0tIElzc3VlICMxMjc5NzogQWRkZWQgY3VzdG9tIG9wZW5lciBwYXJhbWV0ZXIgdG8gYnVpbHRpbiBvcGVuKCkgYW5kCi0gIEZpbGVJTy5vcGVuKCkuCi0KLS0gSXNzdWUgIzEwNTE5OiBBdm9pZCB1bm5lY2Vzc2FyeSByZWN1cnNpdmUgZnVuY3Rpb24gY2FsbHMgaW4KLSAgc2V0b2JqZWN0LmMuCi0KLS0gSXNzdWUgIzEwMzYzOiBEZWFsbG9jYXRlIGdsb2JhbCBsb2NrcyBpbiBQeV9GaW5hbGl6ZSgpLgotCi0tIElzc3VlICMxMzAxODogRml4IHJlZmVyZW5jZSBsZWFrcyBpbiBlcnJvciBwYXRocyBpbiBkaWN0b2JqZWN0LmMuCi0gIFBhdGNoIGJ5IFN1bWFuIFNhaGEuCi0KLS0gSXNzdWUgIzEzMjAxOiBEZWZpbmUgJz09JyBhbmQgJyE9JyB0byBjb21wYXJlIHJhbmdlIG9iamVjdHMgYmFzZWQgb24KLSAgdGhlIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGV5IGRlZmluZSAoaW5zdGVhZCBvZiBjb21wYXJpbmcgYmFzZWQgb24KLSAgb2JqZWN0IGlkZW50aXR5KS4KLQotLSBJc3N1ZSAjMTI5NDIzMjogSW4gYSBmZXcgY2FzZXMgaW52b2x2aW5nIG1ldGFjbGFzcyBpbmhlcml0YW5jZSwgdGhlCi0gIGludGVycHJldGVyIHdvdWxkIHNvbWV0aW1lcyBpbnZva2UgdGhlIHdyb25nIG1ldGFjbGFzcyB3aGVuIGJ1aWxkaW5nIGEgbmV3Ci0gIGNsYXNzIG9iamVjdC4gVGhlc2UgY2FzZXMgbm93IGJlaGF2ZSBjb3JyZWN0bHkuIFBhdGNoIGJ5IERhbmllbCBVcmJhbi4KLQotLSBJc3N1ZSAjMTI3NTM6IEFkZCBzdXBwb3J0IGZvciBVbmljb2RlIG5hbWUgYWxpYXNlcyBhbmQgbmFtZWQgc2VxdWVuY2VzLgotICBCb3RoIGBgdW5pY29kZWRhdGEubG9va3VwKClgYCBhbmQgJ1xOey4uLn0nIG5vdyByZXNvbHZlIGFsaWFzZXMsCi0gIGFuZCBgYHVuaWNvZGVkYXRhLmxvb2t1cCgpYGAgcmVzb2x2ZXMgbmFtZWQgc2VxdWVuY2VzIHRvby4KLQotLSBJc3N1ZSAjMTIxNzA6IFRoZSBjb3VudCgpLCBmaW5kKCksIHJmaW5kKCksIGluZGV4KCkgYW5kIHJpbmRleCgpIG1ldGhvZHMKLSAgb2YgYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIG5vdyBhY2NlcHQgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDI1NQotICBhcyB0aGVpciBmaXJzdCBhcmd1bWVudC4gIFBhdGNoIGJ5IFBldHJpIExlaHRpbmVuLgotCi0tIElzc3VlICMxMjYwNDogVlRSQUNFIG1hY3JvIGV4cGFuZGVkIHRvIG5vLW9wIGluIF9zcmUuYyB0byBhdm9pZCBjb21waWxlcgotICB3YXJuaW5ncy4gUGF0Y2ggYnkgSm9zaCBUcmlwbGV0dCBhbmQgUGV0cmkgTGVodGluZW4uCi0KLS0gSXNzdWUgIzEyMjgxOiBSZXdyaXRlIHRoZSBNQkNTIGNvZGVjIHRvIGhhbmRsZSBjb3JyZWN0bHkgcmVwbGFjZSBhbmQgaWdub3JlCi0gIGVycm9yIGhhbmRsZXJzIG9uIGFsbCBXaW5kb3dzIHZlcnNpb25zLiBUaGUgTUJDUyBjb2RlYyBpcyBub3cgc3VwcG9ydGluZyBhbGwKLSAgZXJyb3IgaGFuZGxlcnMsIGluc3RlYWQgb2Ygb25seSByZXBsYWNlIHRvIGVuY29kZSBhbmQgaWdub3JlIHRvIGRlY29kZS4KLQotLSBJc3N1ZSAjMTMxODg6IFdoZW4gY2FsbGVkIHdpdGhvdXQgYW4gZXhwbGljaXQgdHJhY2ViYWNrIGFyZ3VtZW50LAotICBnZW5lcmF0b3IudGhyb3coKSBub3cgZ2V0cyB0aGUgdHJhY2ViYWNrIGZyb20gdGhlIHBhc3NlZCBleGNlcHRpb24ncwotICBgYF9fdHJhY2ViYWNrX19gYCBhdHRyaWJ1dGUuICBQYXRjaCBieSBQZXRyaSBMZWh0aW5lbi4KLQotLSBJc3N1ZSAjMTMxNDY6IFdyaXRpbmcgYSBweWMgZmlsZSBpcyBub3cgYXRvbWljIHVuZGVyIFBPU0lYLgotCi0tIElzc3VlICM3ODMzOiBFeHRlbnNpb24gbW9kdWxlcyBidWlsdCB1c2luZyBkaXN0dXRpbHMgb24gV2luZG93cyB3aWxsIG5vCi0gIGxvbmdlciBpbmNsdWRlIGEgIm1hbmlmZXN0IiB0byBwcmV2ZW50IHRoZW0gZmFpbGluZyBhdCBpbXBvcnQgdGltZSBpbiBzb21lCi0gIGVtYmVkZGVkIHNpdHVhdGlvbnMuCi0KLS0gUEVQIDMxNTEgLyBpc3N1ZSAjMTI1NTU6IHJld29ya2luZyB0aGUgT1MgYW5kIElPIGV4Y2VwdGlvbiBoaWVyYXJjaHkuCi0KLS0gQWRkIGludGVybmFsIEFQSSBmb3Igc3RhdGljIHN0cmluZ3MgKF9QeV9pZGVudGlmaWVyIGV0IGFsLikuCi0KLS0gSXNzdWUgIzEzMDYzOiB0aGUgV2luZG93cyBlcnJvciBFUlJPUl9OT19EQVRBIChudW1iZXJlZCAyMzIgYW5kIGRlc2NyaWJlZAotICBhcyAiVGhlIHBpcGUgaXMgYmVpbmcgY2xvc2VkIikgaXMgbm93IG1hcHBlZCB0byBQT1NJWCBlcnJubyBFUElQRQotICAocHJldmlvdXNseSBFSU5WQUwpLgotCi0tIElzc3VlICMxMjkxMTogRml4IG1lbW9yeSBjb25zdW1wdGlvbiB3aGVuIGNhbGN1bGF0aW5nIHRoZSByZXByKCkgb2YgaHVnZQotICB0dXBsZXMgb3IgbGlzdHMuCi0KLS0gUEVQIDM5MzogZmxleGlibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiBUaGFua3MgdG8gVG9yc3RlbiBCZWNrZXIgZm9yIHRoZQotICBpbml0aWFsIGltcGxlbWVudGF0aW9uLCBhbmQgVmljdG9yIFN0aW5uZXIgZm9yIHZhcmlvdXMgYnVnIGZpeGVzLgotCi0tIElzc3VlICMxNDA4MTogVGhlICdzZXAnIGFuZCAnbWF4c3BsaXQnIHBhcmFtZXRlciB0byBzdHIuc3BsaXQsIGJ5dGVzLnNwbGl0LAotICBhbmQgYnl0ZWFycmF5LnNwbGl0IG1heSBub3cgYmUgcGFzc2VkIGFzIGtleXdvcmQgYXJndW1lbnRzLgotCi0tIElzc3VlICMxMzAxMjogVGhlICdrZWVwZW5kcycgcGFyYW1ldGVyIHRvIHN0ci5zcGxpdGxpbmVzIG1heSBub3cgYmUgcGFzc2VkCi0gIGFzIGEga2V5d29yZCBhcmd1bWVudDogIm15X3N0cmluZy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpIi4gIFRoZSBzYW1lCi0gIGNoYW5nZSBhbHNvIGFwcGxpZXMgdG8gYnl0ZXMuc3BsaXRsaW5lcyBhbmQgYnl0ZWFycmF5LnNwbGl0bGluZXMuCi0KLS0gSXNzdWUgIzc3MzI6IERvbid0IG9wZW4gYSBkaXJlY3RvcnkgYXMgYSBmaWxlIGFueW1vcmUgd2hpbGUgaW1wb3J0aW5nIGEKLSAgbW9kdWxlLiBJZ25vcmUgdGhlIGRpcmVjb3RyeSBpZiBpdHMgbmFtZSBtYXRjaHMgdGhlIG1vZHVsZSBuYW1lIChlLmcuCi0gICJfX2luaXRfXy5weSIpIGFuZCByYWlzZSBhIEltcG9ydEVycm9yIGluc3RlYWQuCi0KLS0gSXNzdWUgIzEzMDIxOiBNaXNzaW5nIGRlY3JlZiBvbiBhbiBlcnJvciBwYXRoLiAgVGhhbmtzIHRvIFN1bWFuIFNhaGEgZm9yCi0gIGZpbmRpbmcgdGhlIGJ1ZyBhbmQgcHJvdmlkaW5nIGEgcGF0Y2guCi0KLS0gSXNzdWUgIzEyOTczOiBGaXggb3ZlcmZsb3cgY2hlY2tzIHRoYXQgcmVsaWVkIG9uIHVuZGVmaW5lZCBiZWhhdmlvdXIgaW4KLSAgbGlzdF9yZXBlYXQgKGxpc3RvYmplY3QuYykgYW5kIGlzbGljZV9uZXh0IChpdGVydG9vbHNtb2R1bGUuYykuICBUaGVzZSBidWdzCi0gIGNhdXNlZCB0ZXN0IGZhaWx1cmVzIHdpdGggcmVjZW50IHZlcnNpb25zIG9mIENsYW5nLgotCi0tIElzc3VlICMxMjkwNDogb3MudXRpbWUsIG9zLmZ1dGltZXMsIG9zLmx1dGltZXMsIGFuZCBvcy5mdXRpbWVzYXQgbm93IHdyaXRlCi0gIGF0aW1lIGFuZCBtdGltZSB3aXRoIG5hbm9zZWNvbmQgcHJlY2lzaW9uIG9uIG1vZGVybiBQT1NJWCBwbGF0Zm9ybXMuCi0KLS0gSXNzdWUgIzEyODAyOiB0aGUgV2luZG93cyBlcnJvciBFUlJPUl9ESVJFQ1RPUlkgKG51bWJlcmVkIDI2NykgaXMgbm93Ci0gIG1hcHBlZCB0byBQT1NJWCBlcnJubyBFTk9URElSIChwcmV2aW91c2x5IEVJTlZBTCkuCi0KLS0gSXNzdWUgIzkyMDA6IFRoZSBzdHIuaXMqIG1ldGhvZHMgbm93IHdvcmsgd2l0aCBzdHJpbmdzIHRoYXQgY29udGFpbiBub24tQk1QCi0gIGNoYXJhY3RlcnMgZXZlbiBpbiBuYXJyb3cgVW5pY29kZSBidWlsZHMuCi0KLS0gSXNzdWUgIzEyNzkxOiBCcmVhayByZWZlcmVuY2UgY3ljbGVzIGVhcmx5IHdoZW4gYSBnZW5lcmF0b3IgZXhpdHMgd2l0aAotICBhbiBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzEyNzczOiBNYWtlIF9fZG9jX18gbXV0YWJsZSBvbiB1c2VyLWRlZmluZWQgY2xhc3Nlcy4KLQotLSBJc3N1ZSAjMTI3NjY6IFJhaXNlIGEgVmFsdWVFcnJvciB3aGVuIGNyZWF0aW5nIGEgY2xhc3Mgd2l0aCBhIGNsYXNzIHZhcmlhYmxlCi0gIHRoYXQgY29uZmxpY3RzIHdpdGggYSBuYW1lIGluIF9fc2xvdHNfXy4KLQotLSBJc3N1ZSAjMTIyNjY6IEZpeCBzdHIuY2FwaXRhbGl6ZSgpIHRvIGNvcnJlY3RseSB1cHBlcmNhc2UvbG93ZXJjYXNlCi0gIHRpdGxlY2FzZWQgYW5kIGNhc2VkIG5vbi1sZXR0ZXIgY2hhcmFjdGVycy4KLQotLSBJc3N1ZSAjMTI3MzI6IEluIG5hcnJvdyB1bmljb2RlIGJ1aWxkcywgYWxsb3cgVW5pY29kZSBpZGVudGlmaWVycyB3aGljaCBmYWxsCi0gIG91dHNpZGUgdGhlIEJNUC4KLQotLSBJc3N1ZSAjMTI1NzU6IFZhbGlkYXRlIHVzZXItZ2VuZXJhdGVkIEFTVCBiZWZvcmUgaXQgaXMgY29tcGlsZWQuCi0KLS0gTWFrZSB0eXBlKE5vbmUpLCB0eXBlKEVsbGlwc2lzKSwgYW5kIHR5cGUoTm90SW1wbGVtZW50ZWQpIGNhbGxhYmxlLiBUaGV5Ci0gIHJldHVybiB0aGUgcmVzcGVjdGl2ZSBzaW5nbGV0b24gaW5zdGFuY2VzLgotCi0tIEZvcmJpZCBzdW1taW5nIGJ5dGVzIHdpdGggc3VtKCkuCi0KLS0gVmVyaWZ5IHRoZSB0eXBlcyBvZiBBU1Qgc3RyaW5ncyBhbmQgaWRlbnRpZmllcnMgcHJvdmlkZWQgYnkgdGhlIHVzZXIgYmVmb3JlCi0gIGNvbXBpbGluZyB0aGVtLgotCi0tIElzc3VlICMxMjY0NzogVGhlIE5vbmUgb2JqZWN0IG5vdyBoYXMgYSBfX2Jvb2xfXygpIG1ldGhvZCB0aGF0IHJldHVybnMgRmFsc2UuCi0gIEZvcm1lcmx5LCBib29sKE5vbmUpIHJldHVybmVkIEZhbHNlIG9ubHkgYmVjYXVzZSBvZiBzcGVjaWFsIGNhc2UgbG9naWMKLSAgaW4gUHlPYmplY3RfSXNUcnVlKCkuCi0KLS0gSXNzdWUgIzEyNTc5OiBzdHIuZm9ybWF0X21hcCgpIG5vdyByYWlzZXMgYSBWYWx1ZUVycm9yIGlmIHVzZWQgb24gYQotICBmb3JtYXQgc3RyaW5nIHRoYXQgY29udGFpbnMgcG9zaXRpb25hbCBmaWVsZHMuIEluaXRpYWwgcGF0Y2ggYnkKLSAgSnVsaWFuIEJlcm1hbi4KLQotLSBJc3N1ZSAjMTAyNzE6IEFsbG93IHdhcm5pbmdzLnNob3d3YXJuaW5nKCkgYmUgYW55IGNhbGxhYmxlLgotCi0tIElzc3VlICMxMTYyNzogRml4IHNlZ2ZhdWx0IHdoZW4gX19uZXdfXyBvbiBhIGV4Y2VwdGlvbiByZXR1cm5zIGEKLSAgbm9uLWV4Y2VwdGlvbiBjbGFzcy4KLQotLSBJc3N1ZSAjMTIxNDk6IFVwZGF0ZSB0aGUgbWV0aG9kIGNhY2hlIGFmdGVyIGEgdHlwZSdzIGRpY3Rpb25hcnkgZ2V0cwotICBjbGVhcmVkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4gIFRoaXMgZml4ZXMgYSBzZWdmYXVsdCB3aGVuIGFuIGluc3RhbmNlCi0gIGFuZCBpdHMgdHlwZSBnZXQgY2F1Z2h0IGluIGEgcmVmZXJlbmNlIGN5Y2xlLCBhbmQgdGhlIGluc3RhbmNlJ3MKLSAgZGVhbGxvY2F0b3IgY2FsbHMgb25lIG9mIHRoZSBtZXRob2RzIG9uIHRoZSB0eXBlIChlLmcuIHdoZW4gc3ViY2xhc3NpbmcKLSAgSU9CYXNlKS4gIERpYWdub3NpcyBhbmQgcGF0Y2ggYnkgRGF2aWRlIFJpenpvLgotCi0tIElzc3VlICM5NjExLCBJc3N1ZSAjOTAxNTogRmlsZUlPLnJlYWQoKSBjbGFtcHMgdGhlIGxlbmd0aCB0byBJTlRfTUFYIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzk2NDI6IFVuaWZvcm1pemUgdGhlIHRlc3RzIG9uIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhlIG1iY3MgY29kZWMsIGFkZAotICBhIG5ldyBIQVZFX01CQ1MgZGVmaW5lLgotCi0tIElzc3VlICM5NjQyOiBGaXggZmlsZXN5c3RlbSBlbmNvZGluZyBpbml0aWFsaXphdGlvbjogdXNlIHRoZSBBTlNJIGNvZGUgcGFnZQotICBvbiBXaW5kb3dzIGlmIHRoZSBtYmNzIGNvZGVjIGlzIG5vdCBhdmFpbGFibGUsIGFuZCBmYWlsIHdpdGggYSBmYXRhbCBlcnJvciBpZgotICB3ZSBjYW5ub3QgZ2V0IHRoZSBsb2NhbGUgZW5jb2RpbmcgKGlmIG5sX2xhbmdpbmZvKENPREVTRVQpIGlzIG5vdCBhdmFpbGFibGUpCi0gIGluc3RlYWQgb2YgdXNpbmcgVVRGLTguCi0KLS0gV2hlbiBhIGdlbmVyYXRvciB5aWVsZHMsIGRvIG5vdCByZXRhaW4gdGhlIGNhbGxlcidzIGV4Y2VwdGlvbiBzdGF0ZSBvbiB0aGUKLSAgZ2VuZXJhdG9yLgotCi0tIElzc3VlICMxMjQ3NTogUHJldmVudCBnZW5lcmF0b3JzIGZyb20gbGVha2luZyB0aGVpciBleGNlcHRpb24gc3RhdGUgaW50byB0aGUKLSAgY2FsbGVyJ3MgZnJhbWUgYXMgdGhleSByZXR1cm4gZm9yIHRoZSBsYXN0IHRpbWUuCi0KLS0gSXNzdWUgIzEyMjkxOiBZb3UgY2FuIG5vdyBsb2FkIG11bHRpcGxlIG1hcnNoYWxsZWQgb2JqZWN0cyBmcm9tIGEgc3RyZWFtLAotICB3aXRoIG90aGVyIGRhdGEgaW50ZXJsZWF2ZWQgYmV0d2VlbiBtYXJzaGFsbGVkIG9iamVjdHMuCi0KLS0gSXNzdWUgIzEyMzU2OiBXaGVuIHJlcXVpcmVkIHBvc2l0aW9uYWwgb3Iga2V5d29yZC1vbmx5IGFyZ3VtZW50cyBhcmUgbm90Ci0gIGdpdmVuLCBwcm9kdWNlIGEgaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZSB3aGljaCBpbmNsdWRlcyB0aGUgbmFtZShzKSBvZiB0aGUKLSAgbWlzc2luZyBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzEyMzcwOiBGaXggc3VwZXIgd2l0aCBubyBhcmd1bWVudHMgd2hlbiBfX2NsYXNzX18gaXMgb3ZlcnJpZGVuIGluIHRoZQotICBjbGFzcyBib2R5LgotCi0tIElzc3VlICMxMjA4NDogb3Muc3RhdCBvbiBXaW5kb3dzIG5vdyB3b3JrcyBwcm9wZXJseSB3aXRoIHJlbGF0aXZlIHN5bWJvbGljCi0gIGxpbmtzIHdoZW4gY2FsbGVkIGZyb20gYW55IGRpcmVjdG9yeS4KLQotLSBMb29zZW4gdHlwZSByZXN0cmljdGlvbnMgb24gdGhlIF9fZGlyX18gbWV0aG9kLiBfX2Rpcl9fIGNhbiBub3cgcmV0dXJuIGFueQotICBzZXF1ZW5jZSwgd2hpY2ggd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBsaXN0IGFuZCBzb3J0ZWQgYnkgZGlyKCkuCi0KLS0gSXNzdWUgIzEyMjY1OiBNYWtlIGVycm9yIG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IHBhc3NpbmcgYW4gaW52YWxpZCBzZXQgb2YKLSAgYXJndW1lbnRzIHRvIGEgZnVuY3Rpb24gbW9yZSBpbmZvcm1hdGl2ZS4KLQotLSBJc3N1ZSAjMTIyMjU6IFN0aWxsIGFsbG93IFB5dGhvbiB0byBidWlsZCBpZiBQeXRob24gaXMgbm90IGluIGl0cyBoZyByZXBvIG9yCi0gIG1lcmN1cmlhbCBpcyBub3QgaW5zdGFsbGVkLgotCi0tIElzc3VlICMxMTk1OiBteV9mZ2V0cygpIG5vdyBhbHdheXMgY2xlYXJzIGVycm9ycyBiZWZvcmUgY2FsbGluZyBmZ2V0cygpLiBGaXgKLSAgdGhlIGZvbGxvd2luZyBjYXNlOiBzeXMuc3RkaW4ucmVhZCgpIHN0b3BwZWQgd2l0aCBDVFJMK2QgKGVuZCBvZiBmaWxlKSwKLSAgcmF3X2lucHV0KCkgaW50ZXJydXB0ZWQgYnkgQ1RSTCtjLgotCi0tIElzc3VlICMxMjIxNjogQWxsb3cgdW5leHBlY3RlZCBFT0YgZXJyb3JzIHRvIGhhcHBlbiBvbiBhbnkgbGluZSBvZiB0aGUgZmlsZS4KLQotLSBJc3N1ZSAjMTIxOTk6IFRoZSBUcnlFeGNlcHQgYW5kIFRyeUZpbmFsbHkgYW5kIEFTVCBub2RlcyBoYXZlIGJlZW4gdW5pZmllZAotICBpbnRvIGEgVHJ5IG5vZGUuCi0KLS0gSXNzdWUgIzk2NzA6IEluY3JlYXNlIHRoZSBkZWZhdWx0IHN0YWNrIHNpemUgZm9yIHNlY29uZGFyeSB0aHJlYWRzIG9uCi0gIE1hYyBPUyBYIGFuZCBGcmVlQlNEIHRvIHJlZHVjZSB0aGUgY2hhbmNlcyBvZiBhIGNyYXNoIGluc3RlYWQgb2YgYQotICAibWF4aW11bSByZWN1cnNpb24gZGVwdGgiIFJ1bnRpbWVFcnJvciBleGNlcHRpb24uCi0gIChwYXRjaCBieSBSb25hbGQgT3Vzc29yZW4pCi0KLS0gSXNzdWUgIzEyMTA2OiBUaGUgdXNlIG9mIHRoZSBtdWx0aXBsZS13aXRoIHNob3J0aGFuZCBzeW50YXggaXMgbm93IHJlZmxlY3RlZAotICBpbiB0aGUgQVNULgotCi0tIElzc3VlICMxMjE5MDogVHJ5IHRvIHVzZSB0aGUgc2FtZSBmaWxlbmFtZSBvYmplY3Qgd2hlbiBjb21waWxpbmcgdW5tYXJzaGFsbGluZwotICBhIGNvZGUgb2JqZWN0cyBpbiB0aGUgc2FtZSBmaWxlLgotCi0tIElzc3VlICMxMjE2NjogTW92ZSBpbXBsZW1lbnRhdGlvbnMgb2YgZGlyKCkgc3BlY2lhbGl6ZWQgZm9yIHZhcmlvdXMgdHlwZXMgaW50bwotICB0aGUgX19kaXJfXygpIG1ldGhvZHMgb2YgdGhvc2UgdHlwZXMuCi0KLS0gSXNzdWUgIzU3MTU6IEluIHNvY2tldHNlcnZlciwgY2xvc2UgdGhlIHNlcnZlciBzb2NrZXQgaW4gdGhlIGNoaWxkIHByb2Nlc3MuCi0KLS0gQ29ycmVjdCBsb29rdXAgb2YgX19kaXJfXyBvbiBvYmplY3RzLiBBbW9uZyBvdGhlciB0aGluZ3MsIHRoaXMgY2F1c2VzIGVycm9ycwotICBiZXNpZGVzIEF0dHJpYnV0ZUVycm9yIGZvdW5kIG9uIGxvb2t1cCB0byBiZSBwcm9wYWdhdGVkLgotCi0tIElzc3VlICMxMjA2MDogVXNlIHNpZ19hdG9taWNfdCB0eXBlIGFuZCB2b2xhdGlsZSBrZXl3b3JkIGluIHRoZSBzaWduYWwKLSAgbW9kdWxlLiBQYXRjaCB3cml0dGVuIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjMTc0NjY1NjogQWRkZWQgdGhlIGlmX25hbWVpbmRleCwgaWZfaW5kZXh0b25hbWUsIGlmX25hbWV0b2luZGV4Ci0gIG1ldGhvZHMgdG8gdGhlIHNvY2tldCBtb2R1bGUuCi0KLS0gSXNzdWUgIzEyMDQ0OiBGaXhlZCBzdWJwcm9jZXNzLlBvcGVuIHdoZW4gdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciB0bwotICB3YWl0IGZvciB0aGUgcHJvY2VzcyB0byBlbmQgd2hlbiBleGl0aW5nIHRoZSBjb250ZXh0IHRvIGF2b2lkIHVuaW50ZW50aW9uYWxseQotICBsZWF2aW5nIHpvbWJpZSBwcm9jZXNzZXMgYXJvdW5kLgotCi0tIElzc3VlICMxMTk1OiBGaXggaW5wdXQoKSBpZiBpdCBpcyBpbnRlcnJ1cHRlZCBieSBDVFJMK2QgYW5kIHRoZW4gQ1RSTCtjLAotICBjbGVhciB0aGUgZW5kLW9mLWZpbGUgaW5kaWNhdG9yIGFmdGVyIENUUkwrZC4KLQotLSBJc3N1ZSAjMTg1NjogQXZvaWQgY3Jhc2hlcyBhbmQgbG9ja3VwcyB3aGVuIGRhZW1vbiB0aHJlYWRzIHJ1biB3aGlsZSB0aGUKLSAgaW50ZXJwcmV0ZXIgaXMgc2h1dHRpbmcgZG93bjsgaW5zdGVhZCwgdGhlc2UgdGhyZWFkcyBhcmUgbm93IGtpbGxlZCB3aGVuCi0gIHRoZXkgdHJ5IHRvIHRha2UgdGhlIEdJTC4KLQotLSBJc3N1ZSAjOTc1NjogV2hlbiBjYWxsaW5nIGEgbWV0aG9kIGRlc2NyaXB0b3Igb3IgYSBzbG90IHdyYXBwZXIgZGVzY3JpcHRvciwKLSAgdGhlIGNoZWNrIG9mIHRoZSBvYmplY3QgdHlwZSBkb2Vzbid0IHJlYWQgdGhlIF9fY2xhc3NfXyBhdHRyaWJ1dGUgYW55bW9yZS4KLSAgRml4IGEgY3Jhc2ggaWYgYSBjbGFzcyBvdmVycmlkZSBpdHMgX19jbGFzc19fIGF0dHJpYnV0ZSAoZS5nLiBhIHByb3h5IG9mIHRoZQotICBzdHIgdHlwZSkuIFBhdGNoIHdyaXR0ZW4gYnkgQW5kcmVhcyBTdMO8aHJrLgotCi0tIElzc3VlICMxMDUxNzogQWZ0ZXIgZm9yaygpLCByZWluaXRpYWxpemUgdGhlIFRMUyB1c2VkIGJ5IHRoZSBQeUdJTFN0YXRlXyoKLSAgQVBJcywgdG8gYXZvaWQgYSBjcmFzaCB3aXRoIHRoZSBwdGhyZWFkIGltcGxlbWVudGF0aW9uIGluIFJIRUwgNS4gIFBhdGNoCi0gIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjMTA5MTQ6IEluaXRpYWxpemUgY29ycmVjdGx5IHRoZSBmaWxlc3lzdGVtIGNvZGVjIHdoZW4gY3JlYXRpbmcgYSBuZXcKLSAgc3ViaW50ZXJwcmV0ZXIgdG8gZml4IGEgYm9vdHN0cmFwIGlzc3VlIHdpdGggY29kZWNzIGltcGxlbWVudGVkIGluIFB5dGhvbiwgYXMKLSAgdGhlIElTTy04ODU5LTE1IGNvZGVjLgotCi0tIElzc3VlICMxMTkxODogT1MvMiBhbmQgVk1TIGFyZSBubyBtb3JlIHN1cHBvcnRlZCBiZWNhdXNlIG9mIHRoZSBsYWNrIG9mCi0gIG1haW50YWluZXIuCi0KLS0gSXNzdWUgIzY3ODA6IGZpeCBzdGFydHMvZW5kc3dpdGggZXJyb3IgbWVzc2FnZSB0byBtZW50aW9uIHRoYXQgdHVwbGVzIGFyZQotICBhY2NlcHRlZCB0b28uCi0KLS0gSXNzdWUgIzUwNTc6IGZpeCBhIGJ1ZyBpbiB0aGUgcGVlcGhvbGVyIHRoYXQgbGVkIHRvIG5vbi1wb3J0YWJsZSBweWMgZmlsZXMKLSAgYmV0d2VlbiBuYXJyb3cgYW5kIHdpZGUgYnVpbGRzIHdoaWxlIG9wdGltaXppbmcgQklOQVJZX1NVQlNDUiBvbiBub24tQk1QCi0gIGNoYXJzIChlLmcuICJcVTAwMDEyMzQ1IlswXSkuCi0KLS0gSXNzdWUgIzExODQ1OiBGaXggdHlwbyBpbiByYW5nZW9iamVjdC5jIHRoYXQgY2F1c2VkIGEgY3Jhc2ggaW4KLSAgY29tcHV0ZV9zbGljZV9pbmRpY2VzLiAgUGF0Y2ggYnkgRGFuaWVsIFVyYmFuLgotCi0tIElzc3VlICM1NjczOiBBZGRlZCBhIGB0aW1lb3V0YCBrZXl3b3JkIGFyZ3VtZW50IHRvIHN1YnByb2Nlc3MuUG9wZW4ud2FpdCwKLSAgc3VicHJvY2Vzcy5Qb3Blbi5jb21tdW5pY2F0ZWQsIHN1YnByb2Nlc3MuY2FsbCwgc3VicHJvY2Vzcy5jaGVja19jYWxsLCBhbmQKLSAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQuICBJZiB0aGUgYmxvY2tpbmcgb3BlcmF0aW9uIHRha2VzIG1vcmUgdGhhbiBgdGltZW91dGAKLSAgc2Vjb25kcywgdGhlIGBzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkYCBleGNlcHRpb24gaXMgcmFpc2VkLgotCi0tIElzc3VlICMxMTY1MDogUHlPU19TdGRpb1JlYWRsaW5lKCkgcmV0cmllcyBmZ2V0cygpIGlmIGl0IHdhcyBpbnRlcnJ1cHRlZAotICAoRUlOVFIpLCBmb3IgZXhhbXBsZSBpZiB0aGUgcHJvZ3JhbSBpcyBzdG9wcGVkIHdpdGggQ1RSTCt6IG9uIE1hYyBPUyBYLiBQYXRjaAotICB3cml0dGVuIGJ5IENoYXJsZXMtRnJhbmNvaXMgTmF0YWxpLgotCi0tIElzc3VlICM5MzE5OiBJbmNsdWRlIHRoZSBmaWxlbmFtZSBpbiAiTm9uLVVURjggY29kZSAuLi4iIHN5bnRheCBlcnJvci4KLQotLSBJc3N1ZSAjMTA3ODU6IFN0b3JlIHRoZSBmaWxlbmFtZSBhcyBVbmljb2RlIGluIHRoZSBQeXRob24gcGFyc2VyLgotCi0tIElzc3VlICMxMTYxOTogX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKCkgZG9lc24ndCBlbmNvZGUgdGhlIHBhdGggdG8gYnl0ZXMKLSAgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjMTA5OTg6IFJlbW92ZSBtZW50aW9ucyBvZiAtUSwgc3lzLmZsYWdzLmRpdmlzaW9uX3dhcm5pbmcgYW5kCi0gIFB5X0RpdmlzaW9uV2FybmluZ0ZsYWcgbGVmdCBvdmVyIGZyb20gUHl0aG9uIDIuCi0KLS0gSXNzdWUgIzExMjQ0OiBSZW1vdmUgYW4gdW5uZWNlc3NhcnkgcGVlcGhvbGVyIGNoZWNrIHRoYXQgd2FzIHByZXZlbnRpbmcKLSAgbmVnYXRpdmUgemVyb3MgZnJvbSBiZWluZyBjb25zdGFudC1mb2xkZWQgcHJvcGVybHkuCi0KLS0gSXNzdWUgIzExMzk1OiBpby5GaWxlSU8oKS53cml0ZSgpIGNsYW1wcyB0aGUgZGF0YSBsZW5ndGggdG8gMzIsNzY3IGJ5dGVzIG9uCi0gIFdpbmRvd3MgaWYgdGhlIGZpbGUgaXMgYSBUVFkgdG8gd29ya2Fyb3VuZCBhIFdpbmRvd3MgYnVnLiBUaGUgV2luZG93cyBjb25zb2xlCi0gIHJldHVybnMgYW4gZXJyb3IgKDEyOiBub3QgZW5vdWdoIHNwYWNlIGVycm9yKSBvbiB3cml0aW5nIGludG8gc3Rkb3V0IGlmCi0gIHN0ZG91dCBtb2RlIGlzIGJpbmFyeSBhbmQgdGhlIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gNjYsMDAwIGJ5dGVzIChvciBsZXNzLAotICBkZXBlbmRpbmcgb24gaGVhcCB1c2FnZSkuCi0KLS0gSXNzdWUgIzExMzIwOiBmaXggYm9ndXMgbWVtb3J5IG1hbmFnZW1lbnQgaW4gTW9kdWxlcy9nZXRwYXRoLmMsIGxlYWRpbmcgdG8KLSAgYSBwb3NzaWJsZSBjcmFzaCB3aGVuIGNhbGxpbmcgUHlfU2V0UGF0aCgpLgotCi0tIElzc3VlICMxMTQzMjogQSBidWcgd2FzIGludHJvZHVjZWQgaW4gc3VicHJvY2Vzcy5Qb3BlbiBvbiBwb3NpeCBzeXN0ZW1zIHdpdGgKLSAgMy4yLjAgd2hlcmUgdGhlIHN0ZG91dCBvciBzdGRlcnIgZmlsZSBkZXNjcmlwdG9yIGJlaW5nIHRoZSBzYW1lIGFzIHRoZSBzdGRpbgotICBmaWxlIGRlc2NyaXB0b3Igd291bGQgcmFpc2UgYW4gZXhjZXB0aW9uLiB3ZWJicm93c2VyLm9wZW4gd291bGQgZmFpbC4gZml4ZWQuCi0KLS0gSXNzdWUgIzk4NTY6IENoYW5nZSBvYmplY3QuX19mb3JtYXRfXyB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCBzdHJpbmcKLSAgdG8gYmUgYSBEZXByZWNhdGlvbldhcm5pbmcuIEluIDMuMiBpdCB3YXMgYSBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLgotICBJbiAzLjQgaXQgd2lsbCBiZSBhIFR5cGVFcnJvci4KLQotLSBJc3N1ZSAjMTEyNDQ6IFRoZSBwZWVwaG9sZSBvcHRpbWl6ZXIgaXMgbm93IGFibGUgdG8gY29uc3RhbnQtZm9sZAotICBhcmJpdHJhcmlseSBjb21wbGV4IGV4cHJlc3Npb25zLiAgVGhpcyBhbHNvIGZpeGVzIGEgMy4yIHJlZ3Jlc3Npb24gd2hlcmUKLSAgb3BlcmF0aW9ucyBpbnZvbHZpbmcgbmVnYXRpdmUgbnVtYmVycyB3ZXJlIG5vdCBjb25zdGFudC1mb2xkZWQuCi0KLS0gSXNzdWUgIzExNDUwOiBEb24ndCB0cnVuY2F0ZSBoZyB2ZXJzaW9uIGluZm8gaW4gUHlfR2V0QnVpbGRJbmZvKCkgd2hlbgotICB0aGVyZSBhcmUgbWFueSB0YWdzIChlLmcuIHdoZW4gdXNpbmcgbXEpLiAgUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgotCi0tIElzc3VlICMxMTMzNTogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiBsaXN0LnNvcnQgd2hlbiB0aGUga2V5IGZ1bmN0aW9uCi0gIHRocm93cyBhbiBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzg5MjM6IFdoZW4gYSBzdHJpbmcgaXMgZW5jb2RlZCB0byBVVEYtOCBpbiBzdHJpY3QgbW9kZSwgdGhlIHJlc3VsdCBpcwotICBjYWNoZWQgaW50byB0aGUgb2JqZWN0LiBFeGFtcGxlczogc3RyLmVuY29kZSgpLCBzdHIuZW5jb2RlKCd1dGYtOCcpLAotICBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKCkgYW5kIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcodW5pY29kZSwgInV0Zi04IiwKLSAgTlVMTCkuCi0KLS0gSXNzdWUgIzEwODI5OiBSZWZhY3RvciBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpLCB1c2UgdGhlIHNhbWUgZnVuY3Rpb24gdG8gcGFyc2UKLSAgdGhlIGZvcm1hdCBzdHJpbmcgaW4gdGhlIDMgc3RlcHMsIGZpeCBjcmFzaHMgb24gaW52YWxpZCBmb3JtYXQgc3RyaW5ncy4KLQotLSBJc3N1ZSAjMTMwMDc6IHdoaWNoZGIgc2hvdWxkIHJlY29nbml6ZSBnZGJtIDEuOSBtYWdpYyBudW1iZXJzLgotCi0tIElzc3VlICMxMTI4NjogUmFpc2UgYSBWYWx1ZUVycm9yIGZyb20gY2FsbGluZyBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlciB3aXRoCi0gIGEgYnVmZmVyIHN0cnVjdCBoYXZpbmcgYSBOVUxMIGRhdGEgcG9pbnRlci4KLQotLSBJc3N1ZSAjMTEyNzI6IE9uIFdpbmRvd3MsIGlucHV0KCkgc3RyaXBzICdccicgKGFuZCBub3Qgb25seSAnXG4nKSwgYW5kCi0gIHN5cy5zdGRpbiB1c2VzIHVuaXZlcnNhbCBuZXdsaW5lIChyZXBsYWNlICdcclxuJyBieSAnXG4nKS4KLQotLSBJc3N1ZSAjMTE4Mjg6IHN0YXJ0c3dpdGggYW5kIGVuZHN3aXRoIG5vdyBhY2NlcHQgTm9uZSBhcyBzbGljZSBpbmRleC4KLSAgUGF0Y2ggYnkgVG9yc3RlbiBCZWNrZXIuCi0KLS0gSXNzdWUgIzExMTY4OiBSZW1vdmUgZmlsZW5hbWUgZGVidWcgdmFyaWFibGUgZnJvbSBQeUV2YWxfRXZhbEZyYW1lRXgoKS4KLSAgSXQgZW5jb2RlZCB0aGUgVW5pY29kZSBmaWxlbmFtZSB0byBVVEYtOCwgYnV0IHRoZSBlbmNvZGluZyBmYWlscyBvbgotICB1bmRlY29kYWJsZSBmaWxlbmFtZSAob24gc3Vycm9nYXRlIGNoYXJhY3RlcnMpIHdoaWNoIHJhaXNlcyBhbiB1bmV4cGVjdGVkCi0gIFVuaWNvZGVFbmNvZGVFcnJvciBvbiByZWN1cnNpb24gbGltaXQuCi0KLS0gSXNzdWUgIzExMTg3OiBSZW1vdmUgYm9vdHN0cmFwIGNvZGUgKHVzZSBBU0NJSSkgb2YKLSAgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygpLCBpdCB3YXMgcmVwbGFjZWQgYnkgYSBiZXR0ZXIgZmFsbGJhY2sgKHVzZSB0aGUKLSAgbG9jYWxlIGVuY29kaW5nKSBpbiBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KCkuCi0KLS0gQ2hlY2sgZm9yIE5VTEwgcmVzdWx0IGluIFB5VHlwZV9Gcm9tU3BlYy4KLQotLSBJc3N1ZSAjMTA1MTY6IE5ldyBjb3B5KCkgYW5kIGNsZWFyKCkgbWV0aG9kcyBmb3IgbGlzdHMgYW5kIGJ5dGVhcnJheXMuCi0KLS0gSXNzdWUgIzExMzg2OiBieXRlYXJyYXkucG9wKCkgbm93IHRocm93cyBJbmRleEVycm9yIHdoZW4gdGhlIGJ5dGVhcnJheSBpcwotICBlbXB0eSwgaW5zdGVhZCBvZiBPdmVyZmxvd0Vycm9yLgotCi0tIElzc3VlICMxMjM4MDogVGhlIHJqdXN0LCBsanVzdCBhbmQgY2VudGVyIG1ldGhvZHMgb2YgYnl0ZXMgYW5kIGJ5dGVhcnJheQotICBub3cgYWNjZXB0IGEgYnl0ZWFycmF5IGFyZ3VtZW50LgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzE0MTk1OiBBbiBpc3N1ZSB0aGF0IGNhdXNlZCB3ZWFrcmVmLldlYWtTZXQgaW5zdGFuY2VzIHRvIGluY29ycmVjdGx5Ci0gIHJldHVybiBUcnVlIGZvciBhIFdlYWtTZXQgaW5zdGFuY2UgJ2EnIGluIGJvdGggJ2EgPCBhJyBhbmQgJ2EgPiBhJyBoYXMgYmVlbgotICBmaXhlZC4KLQotLSBJc3N1ZSAjMTQxNjY6IFBpY2tsZXIgb2JqZWN0cyBub3cgaGF2ZSBhbiBvcHRpb25hbCBgYGRpc3BhdGNoX3RhYmxlYGAKLSAgYXR0cmlidXRlIHdoaWNoIGFsbG93cyB0byBzZXQgY3VzdG9tIHBlci1waWNrbGVyIHJlZHVjdGlvbiBmdW5jdGlvbnMuCi0gIFBhdGNoIGJ5IHNidC4KLQotLSBJc3N1ZSAjMTQxNzc6IG1hcnNoYWwubG9hZHMoKSBub3cgcmFpc2VzIFR5cGVFcnJvciB3aGVuIGdpdmVuIGFuIHVuaWNvZGUKLSAgc3RyaW5nLiAgUGF0Y2ggYnkgR3VpbGhlcm1lIEdvbsOnYWx2ZXMuCi0KLS0gSXNzdWUgIzEzNTUwOiBSZW1vdmUgdGhlIGRlYnVnIG1hY2hpbmVyeSBmcm9tIHRoZSB0aHJlYWRpbmcgbW9kdWxlOiByZW1vdmUKLSAgdmVyYm9zZSBhcmd1bWVudHMgZnJvbSBhbGwgdGhyZWFkaW5nIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucy4KLQotLSBJc3N1ZSAjMTQxNTk6IEZpeCB0aGUgbGVuKCkgb2Ygd2VhayBjb250YWluZXJzIChXZWFrU2V0LCBXZWFrS2V5RGljdGlvbmFyeSwKLSAgV2Vha1ZhbHVlRGljdGlvbmFyeSkgdG8gcmV0dXJuIGEgYmV0dGVyIGFwcHJveGltYXRpb24gd2hlbiBzb21lIG9iamVjdHMKLSAgYXJlIGRlYWQgb3IgZHlpbmcuICBNb3Jlb3ZlciwgdGhlIGltcGxlbWVudGF0aW9uIGlzIG5vdyBPKDEpIHJhdGhlciB0aGFuCi0gIE8obikuCi0KLS0gSXNzdWUgIzExODQxOiBGaXggY29tcGFyaXNvbiBidWcgd2l0aCAncmMnIHZlcnNpb25zIGluIHBhY2thZ2luZy52ZXJzaW9uLgotICBQYXRjaCBieSBGaWxpcCBHcnVzemN6ecWEc2tpLgotCi0tIElzc3VlICM2ODg0OiBGaXggbG9uZy1zdGFuZGluZyBidWdzIHdpdGggTUFOSUZFU1QuaW4gcGFyc2luZyBpbiBkaXN0dXRpbHMKLSAgb24gV2luZG93cy4gIEFsc28gZml4ZWQgaW4gcGFja2FnaW5nLgotCi0tIElzc3VlICM4MDMzOiBzcWxpdGUzOiBGaXggNjQtYml0IGludGVnZXIgaGFuZGxpbmcgaW4gdXNlciBmdW5jdGlvbnMKLSAgb24gMzItYml0IGFyY2hpdGVjdHVyZXMuIEluaXRpYWwgcGF0Y2ggYnkgUGhpbGlwcGUgRGV2YWxrZW5lZXIuCi0KLS0gSFRNTFBhcnNlciBpcyBub3cgYWJsZSB0byBoYW5kbGUgc2xhc2hlcyBpbiB0aGUgc3RhcnQgdGFnLgotCi0tIElzc3VlICMxMzY0MTogRGVjb2RpbmcgZnVuY3Rpb25zIGluIHRoZSBiYXNlNjQgbW9kdWxlIG5vdyBhY2NlcHQgQVNDSUktb25seQotICB1bmljb2RlIHN0cmluZ3MuICBQYXRjaCBieSBDYXRhbGluIElhY29iLgotCi0tIElzc3VlICMxNDA0MzogU3BlZWQgdXAgaW1wb3J0bGliJ3MgX0ZpbGVGaW5kZXIgYnkgYXQgbGVhc3QgOHgsIGFuZCBhZGQgYQotICBuZXcgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzE0MDAxOiBDVkUtMjAxMi0wODQ1OiB4bWxycGM6IEZpeCBhbiBlbmRsZXNzIGxvb3AgaW4KLSAgU2ltcGxlWE1MUlBDU2VydmVyIHVwb24gbWFsZm9ybWVkIFBPU1QgcmVxdWVzdC4KLQotLSBJc3N1ZSAjMTM5NjE6IE1vdmUgaW1wb3J0bGliIG92ZXIgdG8gdXNpbmcgb3MucmVwbGFjZSgpIGZvciBhdG9taWMgcmVuYW1pbmcuCi0KLS0gRG8gYXdheSB3aXRoIGFtYmlndW91cyBsZXZlbCB2YWx1ZXMgKGFzIHN1Z2dlc3RlZCBieSBQRVAgMzI4KSBpbgotICBpbXBvcnRsaWIuX19pbXBvcnRfXygpIGJ5IHJhaXNpbmcgVmFsdWVFcnJvciB3aGVuIGxldmVsIDwgMC4KLQotLSBJc3N1ZSAjMjQ4OTogcHR5LnNwYXduIGNvdWxkIGNvbnN1bWUgMTAwJSBjcHUgd2hlbiBpdCBlbmNvdW50ZXJlZCBhbiBFT0YuCi0KLS0gSXNzdWUgIzEzMDE0OiBGaXggYSBwb3NzaWJsZSByZWZlcmVuY2UgbGVhayBpbiBTU0xTb2NrZXQuZ2V0cGVlcmNlcnQoKS4KLQotLSBJc3N1ZSAjMTM3Nzc6IEFkZCBQRl9TWVNURU0gc29ja2V0cyBvbiBPUyBYLgotICBQYXRjaCBieSBNaWNoYWVsIEdvZGVyYmF1ZXIuCi0KLS0gSXNzdWUgIzEzMDE1OiBGaXggYSBwb3NzaWJsZSByZWZlcmVuY2UgbGVhayBpbiBkZWZhdWx0ZGljdC5fX3JlcHJfXy4KLSAgUGF0Y2ggYnkgU3VtYW4gU2FoYS4KLQotLSBJc3N1ZSAjMTMyNjExMzogZGlzdHV0aWxzJyBhbmQgcGFja2FnaW5nJ3MgYnVpbGRfZXh0IGNvbW1hbmRzIG9wdGlvbiBub3cKLSAgY29ycmVjdGx5IHBhcnNlcyBtdWx0aXBsZSB2YWx1ZXMgKHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlIG9yIGNvbW1hcykgZ2l2ZW4KLSAgdG8gdGhlaXIgLS1saWJyYXJpZXMgb3B0aW9uLgotCi0tIElzc3VlICMxMDI4Nzogbm50cGxpYiBub3cgcXVlcmllcyB0aGUgc2VydmVyJ3MgQ0FQQUJJTElUSUVTIGZpcnN0IGJlZm9yZQotICBzZW5kaW5nIE1PREUgUkVBREVSLCBhbmQgb25seSBzZW5kcyBpdCBpZiBub3QgYWxyZWFkeSBpbiBSRUFERVIgbW9kZS4KLSAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgotCi0tIElzc3VlICMxMzk5MzogSFRNTFBhcnNlciBpcyBub3cgYWJsZSB0byBoYW5kbGUgYnJva2VuIGVuZCB0YWdzIHdoZW4KLSAgc3RyaWN0PUZhbHNlLgotCi0tIElzc3VlICMxMzkzMDogbGliMnRvMyBub3cgc3VwcG9ydHMgd3JpdGluZyBjb252ZXJ0ZWQgb3V0cHV0IGZpbGVzIHRvIGFub3RoZXIKLSAgZGlyZWN0b3J5IHRyZWUgYXMgd2VsbCBhcyBjb3B5aW5nIHVuY2hhbmdlZCBmaWxlcyBhbmQgYWx0ZXJpbmcgdGhlIGZpbGUKLSAgc3VmZml4LgotCi0tIElzc3VlICM5NzUwOiBGaXggc3FsaXRlMy5Db25uZWN0aW9uLml0ZXJkdW1wIG9uIHRhYmxlcyBhbmQgZmllbGRzCi0gIHdpdGggYSBuYW1lIHRoYXQgaXMgYSBrZXl3b3JkIG9yIGNvbnRhaW5zIHF1b3Rlcy4gUGF0Y2ggYnkgTWFya28KLSAgS29odGFsYS4KLQotLSBJc3N1ZSAjMTAyODc6IG5udHBsaWIgbm93IHF1ZXJpZXMgdGhlIHNlcnZlcidzIENBUEFCSUxJVElFUyBhZ2FpbiBhZnRlcgotICBhdXRoZW50aWNhdGluZyAoc2luY2UgdGhlIHJlc3VsdCBtYXkgY2hhbmdlLCBhY2NvcmRpbmcgdG8gUkZDIDQ2NDMpLgotICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCi0KLS0gSXNzdWUgIzEzNTkwOiBPbiBPUyBYIDEwLjcgYW5kIDEwLjYgd2l0aCBYY29kZSA0LjIsIGJ1aWxkaW5nCi0gIERpc3R1dGlscy1iYXNlZCBwYWNrYWdlcyB3aXRoIEMgZXh0ZW5zaW9uIG1vZHVsZXMgbWF5IGZhaWwgYmVjYXVzZQotICBBcHBsZSBoYXMgcmVtb3ZlZCBnY2MtNC4yLCB0aGUgdmVyc2lvbiB1c2VkIHRvIGJ1aWxkIHB5dGhvbi5vcmcKLSAgNjQtYml0LzMyLWJpdCBQeXRob25zLiAgSWYgdGhlIHVzZXIgZG9lcyBub3QgZXhwbGljaXRseSBvdmVycmlkZQotICB0aGUgZGVmYXVsdCBDIGNvbXBpbGVyIGJ5IHNldHRpbmcgdGhlIENDIGVudmlyb25tZW50IHZhcmlhYmxlLAotICBEaXN0dXRpbHMgd2lsbCBub3cgYXR0ZW1wdCB0byBjb21waWxlIGV4dGVuc2lvbiBtb2R1bGVzIHdpdGggY2xhbmcKLSAgaWYgZ2NjLTQuMiBpcyByZXF1aXJlZCBidXQgbm90IGZvdW5kLiBBbHNvIGFzIGEgY29udmVuaWVuY2UsIGlmCi0gIHRoZSB1c2VyIGRvZXMgZXhwbGljaXRseSBzZXQgQ0MsIHN1YnN0aXR1dGUgaXRzIHZhbHVlIGFzIHRoZSBkZWZhdWx0Ci0gIGNvbXBpbGVyIGluIHRoZSBEaXN0dXRpbHMgTERTSEFSRUQgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBmb3IgT1MgWC4KLSAgKE5vdGUsIHRoZSBweXRob24ub3JnIDMyLWJpdC1vbmx5IFB5dGhvbnMgdXNlIGdjYy00LjAgYW5kIHRoZSAxMC40dQotICBTREssIG5laXRoZXIgb2Ygd2hpY2ggYXJlIGF2YWlsYWJsZSBpbiBYY29kZSA0LiAgVGhpcyBjaGFuZ2UgZG9lcyBub3QKLSAgYXR0ZW1wdCB0byBvdmVycmlkZSBzZXR0aW5ncyB0byBzdXBwb3J0IHRoZWlyIHVzZSB3aXRoIFhjb2RlIDQuKQotCi0tIElzc3VlICMxMzk2MDogSFRNTFBhcnNlciBpcyBub3cgYWJsZSB0byBoYW5kbGUgYnJva2VuIGNvbW1lbnRzIHdoZW4KLSAgc3RyaWN0PUZhbHNlLgotCi0tIFdoZW4gJycgaXMgYSBwYXRoIChlLmcuIGluIHN5cy5wYXRoKSwgbWFrZSBzdXJlIF9fZmlsZV9fIHVzZXMgdGhlIGN1cnJlbnQKLSAgd29ya2luZyBkaXJlY3RvcnkgaW5zdGVhZCBvZiAnJyBpbiBpbXBvcnRsaWIuCi0KLS0gSXNzdWUgIzEzNjA5OiBBZGQgdHdvIGZ1bmN0aW9ucyB0byBxdWVyeSB0aGUgdGVybWluYWwgc2l6ZToKLSAgb3MuZ2V0X3Rlcm1pbmFsX3NpemUgKGxvdyBsZXZlbCkgYW5kIHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZSAoaGlnaCBsZXZlbCkuCi0gIFBhdGNoIGJ5IFpiaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsuCi0KLS0gSXNzdWUgIzEzODQ1OiBPbiBXaW5kb3dzLCB0aW1lLnRpbWUoKSBub3cgdXNlcyBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgpCi0gIGluc3RlYWQgb2YgZnRpbWUoKSB0byBoYXZlIGEgcmVzb2x1dGlvbiBvZiAxMDAgbnMgaW5zdGVhZCBvZiAxIG1zICh0aGUgY2xvY2sKLSAgYWNjdXJhY3kgaXMgYmV0d2VlbiAwLjUgbXMgYW5kIDE1IG1zKS4KLQotLSBJc3N1ZSAjMTM4NDY6IEFkZCB0aW1lLm1vbm90b25pYygpLCBtb25vdG9uaWMgY2xvY2suCi0KLS0gSXNzdWUgIzgxODQ6IG11bHRpcHJvY2Vzc2luZzogT24gV2luZG93cywgZG9uJ3Qgc2V0IFNPX1JFVVNFQUREUiBvbgotICBDb25uZWN0aW9uIHNvY2tldHMsIGFuZCBzZXQgRklMRV9GTEFHX0ZJUlNUX1BJUEVfSU5TVEFOQ0Ugb24gbmFtZWQgcGlwZXMsIHRvCi0gIG1ha2Ugc3VyZSB0d28gbGlzdGVuZXJzIGNhbid0IGJpbmQgdG8gdGhlIHNhbWUgc29ja2V0L3BpcGUgKG9yIGFueSBleGlzdGluZwotICBzb2NrZXQvcGlwZSkuCi0KLS0gSXNzdWUgIzEwODExOiBGaXggcmVjdXJzaXZlIHVzYWdlIG9mIGN1cnNvcnMuIEluc3RlYWQgb2YgY3Jhc2hpbmcsCi0gIHJhaXNlIGEgUHJvZ3JhbW1pbmdFcnJvciBub3cuCi0KLS0gSXNzdWUgIzEzNzM0OiBBZGQgb3MuZndhbGsoKSwgYSBkaXJlY3Rvcnkgd2Fsa2luZyBmdW5jdGlvbiB5aWVsZGluZyBmaWxlCi0gIGRlc2NyaXB0b3JzLgotCi0tIElzc3VlICMyOTQ1OiBNYWtlIHRoZSBkaXN0dXRpbHMgdXBsb2FkIGNvbW1hbmQgYXdhcmUgb2YgYmRpc3RfcnBtIHByb2R1Y3RzLgotCi0tIElzc3VlICMxMzcxMjogcHlzZXR1cCBjcmVhdGUgc2hvdWxkIG5vdCBjb252ZXJ0IHBhY2thZ2VfZGF0YSB0byBleHRyYV9maWxlcy4KLQotLSBJc3N1ZSAjMTE4MDU6IHBhY2thZ2VfZGF0YSBpbiBzZXR1cC5jZmcgc2hvdWxkIGFsbG93IG1vcmUgdGhhbiBvbmUgdmFsdWUuCi0KLS0gSXNzdWUgIzEzNjc2OiBIYW5kbGUgc3RyaW5ncyB3aXRoIGVtYmVkZGVkIHplcm9zIGNvcnJlY3RseSBpbiBzcWxpdGUzLgotCi0tIElzc3VlICM4ODI4OiBBZGQgbmV3IGZ1bmN0aW9uIG9zLnJlcGxhY2UoKSwgZm9yIGNyb3NzLXBsYXRmb3JtIHJlbmFtaW5nCi0gIHdpdGggb3ZlcndyaXRpbmcuCi0KLS0gSXNzdWUgIzEzODQ4OiBvcGVuKCkgYW5kIHRoZSBGaWxlSU8gY29uc3RydWN0b3Igbm93IGNoZWNrIGZvciBOVUwKLSAgY2hhcmFjdGVycyBpbiB0aGUgZmlsZSBuYW1lLiAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgotCi0tIElzc3VlICMxMzgwNjogVGhlIHNpemUgY2hlY2sgaW4gYXVkaW9vcCBkZWNvbXByZXNzaW9uIGZ1bmN0aW9ucyB3YXMgdG9vCi0gIHN0cmljdCBhbmQgY291bGQgcmVqZWN0IHZhbGlkIGNvbXByZXNzZWQgZGF0YS4gIFBhdGNoIGJ5IE9sZWcgUGxha2hvdG55dWsuCi0KLS0gSXNzdWUgIzEzODEyOiBXaGVuIGEgbXVsdGlwcm9jZXNzaW5nIFByb2Nlc3MgY2hpbGQgcmFpc2VzIGFuIGV4Y2VwdGlvbiwKLSAgZmx1c2ggc3RkZXJyIGFmdGVyIHByaW50aW5nIHRoZSBleGNlcHRpb24gdHJhY2ViYWNrLgotCi0tIElzc3VlICMxMzg4NTogQ1ZFLTIwMTEtMzM4OTogdGhlIF9zc2wgbW9kdWxlIHdvdWxkIGFsd2F5cyBkaXNhYmxlIHRoZSBDQkMKLSAgSVYgYXR0YWNrIGNvdW50ZXJtZWFzdXJlLgotCi0tIElzc3VlICMxMzg0NzogdGltZS5sb2NhbHRpbWUoKSBhbmQgdGltZS5nbXRpbWUoKSBub3cgcmFpc2UgYW4gT1NFcnJvciBpbnN0ZWFkCi0gIG9mIFZhbHVlRXJyb3Igb24gZmFpbHVyZS4gdGltZS5jdGltZSgpIGFuZCB0aW1lLmFzY3RpbWUoKSBub3cgcmFpc2VzIGFuCi0gIE9TRXJyb3IgaWYgbG9jYWx0aW1lKCkgZmFpbGVkLiB0aW1lLmNsb2NrKCkgbm93IHJhaXNlcyBhIFJ1bnRpbWVFcnJvciBpZiB0aGUKLSAgcHJvY2Vzc29yIHRpbWUgdXNlZCBpcyBub3QgYXZhaWxhYmxlIG9yIGl0cyB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQKLQotLSBJc3N1ZSAjMTM3NzI6IEluIG9zLnN5bWxpbmsoKSB1bmRlciBXaW5kb3dzLCBkbyBub3QgdHJ5IHRvIGd1ZXNzIHRoZSBsaW5rCi0gIHRhcmdldCdzIHR5cGUgKGZpbGUgb3IgZGlyZWN0b3J5KS4gIFRoZSBkZXRlY3Rpb24gd2FzIGJ1Z2d5IGFuZCBtYWRlIHRoZQotICBjYWxsIG5vbi1hdG9taWMgKHRoZXJlZm9yZSBwcm9uZSB0byByYWNlIGNvbmRpdGlvbnMpLgotCi0tIElzc3VlICM2NjMxOiBEaXNhbGxvdyByZWxhdGl2ZSBmaWxlIHBhdGhzIGluIHVybGxpYiB1cmxvcGVuIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzEzNzIyOiBBdm9pZCBzaWxlbmNpbmcgSW1wb3J0RXJyb3JzIHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBjb2RlY3MKLSAgcmVnaXN0cnkuCi0KLS0gSXNzdWUgIzEzNzgxOiBGaXggR3ppcEZpbGUgYnVnIHRoYXQgY2F1c2VkIGFuIGV4Y2VwdGlvbiB0byBiZSByYWlzZWQgd2hlbgotICBvcGVuaW5nIGZvciB3cml0aW5nIHVzaW5nIGEgZmlsZW9iaiByZXR1cm5lZCBieSBvcy5mZG9wZW4oKS4KLQotLSBJc3N1ZSAjMTM4MDM6IFVuZGVyIFNvbGFyaXMsIGRpc3R1dGlscyBkb2Vzbid0IGluY2x1ZGUgYml0bmVzcwotICBpbiB0aGUgZGlyZWN0b3J5IG5hbWUuCi0KLS0gSXNzdWUgIzEwMjc4OiBBZGQgdGltZS53YWxsY2xvY2soKSBmdW5jdGlvbiwgbW9ub3RvbmljIGNsb2NrLgotCi0tIElzc3VlICMxMzgwOTogRml4IHJlZ3Jlc3Npb24gd2hlcmUgYnoyIG1vZHVsZSB3b3VsZG4ndCB3b3JrIHdoZW4gdGhyZWFkcyBhcmUKLSAgZGlzYWJsZWQuIE9yaWdpbmFsIHBhdGNoIGJ5IEFtYXVyeSBGb3JnZW90IGQnQXJjLgotCi0tIElzc3VlICMxMzU4OTogRml4IHNvbWUgc2VyaWFsaXphdGlvbiBwcmltaXRpdmVzIGluIHRoZSBhaWZjIG1vZHVsZS4KLSAgUGF0Y2ggYnkgT2xlZyBQbGFraG90bnl1ay4KLQotLSBJc3N1ZSAjMTM2NDI6IFVucXVvdGUgYmVmb3JlIGI2NGVuY29kaW5nIHVzZXI6cGFzc3dvcmQgZHVyaW5nIEJhc2ljCi0gIEF1dGhlbnRpY2F0aW9uLiBQYXRjaCBjb250cmlidXRlZCBieSBKb29uYXMgS3VvcmlsZWh0by4KLQotLSBJc3N1ZSAjMTIzNjQ6IEZpeCBhIGhhbmcgaW4gY29uY3VycmVudC5mdXR1cmVzLlByb2Nlc3NQb29sRXhlY3V0b3IuCi0gIFRoZSBoYW5nIHdvdWxkIG9jY3VyIHdoZW4gcmV0cmlldmluZyB0aGUgcmVzdWx0IG9mIGEgc2NoZWR1bGVkIGZ1dHVyZSBhZnRlcgotICB0aGUgZXhlY3V0b3IgaGFkIGJlZW4gc2h1dCBkb3duLgotCi0tIElzc3VlICMxMzUwMjogdGhyZWFkaW5nOiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiBFdmVudC53YWl0KCkgdGhhdCBtYWRlIGl0Ci0gIHJldHVybiBGYWxzZSB3aGVuIHRoZSBldmVudCB3YXMgc2V0IGFuZCBjbGVhcmVkIHJpZ2h0IGFmdGVyLgotCi0tIElzc3VlICM5OTkzOiBXaGVuIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFyZSBvbiBkaWZmZXJlbnQgZmlsZXN5c3RlbXMsCi0gIGFuZCB0aGUgc291cmNlIGlzIGEgc3ltbGluaywgc2h1dGlsLm1vdmUoKSBub3cgcmVjcmVhdGVzIGEgc3ltbGluayBvbiB0aGUKLSAgZGVzdGluYXRpb24gaW5zdGVhZCBvZiBjb3B5aW5nIHRoZSBmaWxlIGNvbnRlbnRzLiAgUGF0Y2ggYnkgSm9uYXRoYW4gTmllaG9mCi0gIGFuZCBIeW5layBTY2hsYXdhY2suCi0KLS0gSXNzdWUgIzEyOTI2OiBGaXggYSBidWcgaW4gdGFyZmlsZSdzIGxpbmsgZXh0cmFjdGlvbi4KLQotLSBJc3N1ZSAjMTM2OTY6IEZpeCB0aGUgMzAyIFJlbGF0aXZlIFVSTCBSZWRpcmVjdGlvbiBwcm9ibGVtLgotCi0tIElzc3VlICMxMzYzNjogV2VhayBjaXBoZXJzIGFyZSBub3cgZGlzYWJsZWQgYnkgZGVmYXVsdCBpbiB0aGUgc3NsIG1vZHVsZQotICAoZXhjZXB0IHdoZW4gU1NMdjIgaXMgZXhwbGljaXRseSBhc2tlZCBmb3IpLgotCi0tIElzc3VlICMxMjcxNTogQWRkIGFuIG9wdGlvbmFsIHN5bWxpbmtzIGFyZ3VtZW50IHRvIHNodXRpbCBmdW5jdGlvbnMKLSAgKGNvcHlmaWxlLCBjb3B5bW9kZSwgY29weXN0YXQsIGNvcHksIGNvcHkyKS4gIFdoZW4gdGhhdCBwYXJhbWV0ZXIgaXMKLSAgdHJ1ZSwgc3ltbGlua3MgYXJlbid0IGRlcmVmZXJlbmNlZCBhbmQgdGhlIG9wZXJhdGlvbiBpbnN0ZWFkIGFjdHMgb24gdGhlCi0gIHN5bWxpbmsgaXRzZWxmIChvciBjcmVhdGVzIG9uZSwgaWYgcmVsZXZhbnQpLiAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgotCi0tIEFkZCBhIGZsYWdzIHBhcmFtZXRlciB0byBzZWxlY3QuZXBvbGwuCi0KLS0gSXNzdWUgIzEzNjI2OiBBZGQgc3VwcG9ydCBmb3IgU1NMIERpZmZpZS1IZWxsbWFuIGtleSBleGNoYW5nZSwgdGhyb3VnaCB0aGUKLSAgU1NMQ29udGV4dC5sb2FkX2RoX3BhcmFtcygpIG1ldGhvZCBhbmQgdGhlIHNzbC5PUF9TSU5HTEVfREhfVVNFIG9wdGlvbi4KLQotLSBJc3N1ZSAjMTEwMDY6IERvbid0IGlzc3VlIGxvdyBsZXZlbCB3YXJuaW5nIGluIHN1YnByb2Nlc3Mgd2hlbiBwaXBlMigpIGZhaWxzLgotCi0tIElzc3VlICMxMzYyMDogU3VwcG9ydCBmb3IgQ2hyb21lIGJyb3dzZXIgaW4gd2ViYnJvd3Nlci4gIFBhdGNoIGNvbnRyaWJ1dGVkCi0gIGJ5IEFybmF1ZCBDYWxtZXR0ZXMuCi0KLS0gSXNzdWUgIzExODI5OiBGaXggY29kZSBleGVjdXRpb24gaG9sZXMgaW4gaW5zcGVjdC5nZXRhdHRyX3N0YXRpYyBmb3IKLSAgbWV0YWNsYXNzZXMgd2l0aCBtZXRhY2xhc3Nlcy4gUGF0Y2ggYnkgQW5kcmVhcyBTdMO8aHJrLgotCi0tIElzc3VlICMxMjcwODogQWRkIHN0YXJtYXAoKSBhbmQgc3Rhcm1hcF9hc3luYygpIG1ldGhvZHMgKHNpbWlsYXIgdG8KLSAgaXRlcnRvb2xzLnN0YXJtYXAoKSkgdG8gbXVsdGlwcm9jZXNzaW5nLlBvb2wuICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCi0KLS0gSXNzdWUgIzE3ODU6IEZpeCBpbnNwZWN0IGFuZCBweWRvYyB3aXRoIG1pc2JlaGF2aW5nIGRlc2NyaXB0b3JzLgotCi0tIElzc3VlICMxMzYzNzogImEyYiIgZnVuY3Rpb25zIGluIHRoZSBiaW5hc2NpaSBtb2R1bGUgbm93IGFjY2VwdCBBU0NJSS1vbmx5Ci0gIHVuaWNvZGUgc3RyaW5ncy4KLQotLSBJc3N1ZSAjMTM2MzQ6IEFkZCBzdXBwb3J0IGZvciBxdWVyeWluZyBhbmQgZGlzYWJsaW5nIFNTTCBjb21wcmVzc2lvbi4KLQotLSBJc3N1ZSAjMTM2Mjc6IEFkZCBzdXBwb3J0IGZvciBTU0wgRWxsaXB0aWMgQ3VydmUtYmFzZWQgRGlmZmllLUhlbGxtYW4KLSAga2V5IGV4Y2hhbmdlLCB0aHJvdWdoIHRoZSBTU0xDb250ZXh0LnNldF9lY2RoX2N1cnZlKCkgbWV0aG9kIGFuZCB0aGUKLSAgc3NsLk9QX1NJTkdMRV9FQ0RIX1VTRSBvcHRpb24uCi0KLS0gSXNzdWUgIzEzNjM1OiBBZGQgc3NsLk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSwgc28gdGhhdCBTU0wgc2VydmVycwotICBjaG9vc2UgdGhlIGNpcGhlciBiYXNlZCBvbiB0aGVpciBvd24gcHJlZmVyZW5jZXMsIHJhdGhlciB0aGFuIG9uIHRoZQotICBjbGllbnQncy4KLQotLSBJc3N1ZSAjMTE4MTM6IEZpeCBpbnNwZWN0LmdldGF0dHJfc3RhdGljIGZvciBtb2R1bGVzLiBQYXRjaCBieSBBbmRyZWFzCi0gIFN0w7xocmsuCi0KLS0gSXNzdWUgIzc1MDI6IEZpeCBlcXVhbGl0eSBjb21wYXJpc29uIGZvciBEb2NUZXN0Q2FzZSBpbnN0YW5jZXMuICBQYXRjaCBieQotICBDw6lkcmljIEtyaWVyLgotCi0tIElzc3VlICMxMTg3MDogdGhyZWFkaW5nOiBQcm9wZXJseSByZWluaXRpYWxpemUgdGhyZWFkcyBpbnRlcm5hbCBsb2NrcyBhbmQKLSAgY29uZGl0aW9uIHZhcmlhYmxlcyB0byBhdm9pZCBkZWFkbG9ja3MgaW4gY2hpbGQgcHJvY2Vzc2VzLgotCi0tIElzc3VlICM4MDM1OiB1cmxsaWI6IEZpeCBhIGJ1ZyB3aGVyZSB0aGUgY2xpZW50IGNvdWxkIHJlbWFpbiBzdHVjayBhZnRlciBhCi0gIHJlZGlyZWN0aW9uIG9yIGFuIGVycm9yLgotCi0tIElzc3VlICMxMzU2MDogb3Muc3RyZXJyb3IoKSBub3cgdXNlcyB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcgaW5zdGVhZCBvZgotICBVVEYtOC4KLQotLSBJc3N1ZSAjODM3MzogVGhlIGZpbGVzeXN0ZW0gcGF0aCBvZiBBRl9VTklYIHNvY2tldHMgbm93IHVzZXMgdGhlIGZpbGVzeXN0ZW0KLSAgZW5jb2RpbmcgYW5kIHRoZSBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlciwgcmF0aGVyIHRoYW4gVVRGLTguICBQYXRjaAotICBieSBEYXZpZCBXYXRzb24uCi0KLS0gSXNzdWUgIzEwMzUwOiBSZWFkIGFuZCBzYXZlIGVycm5vIGJlZm9yZSBjYWxsaW5nIGEgZnVuY3Rpb24gd2hpY2ggbWlnaHQKLSAgb3ZlcndyaXRlIGl0LiAgT3JpZ2luYWwgcGF0Y2ggYnkgSGFsbHZhcmQgQiBGdXJ1c2V0aC4KLQotLSBJc3N1ZSAjMTE2MTA6IEludHJvZHVjZSBhIG1vcmUgZ2VuZXJhbCB3YXkgdG8gZGVjbGFyZSBhYnN0cmFjdCBwcm9wZXJ0aWVzLgotCi0tIElzc3VlICMxMzU5MTogQSBidWcgaW4gaW1wb3J0bGliIGhhcyBiZWVuIGZpeGVkIHRoYXQgY2F1c2VkIGltcG9ydF9tb2R1bGUKLSAgdG8gbG9hZCBhIG1vZHVsZSB0d2ljZS4KLQotLSBJc3N1ZSAjMTM0NDkgc2NoZWQuc2NoZWR1bGVyLnJ1bigpIG1ldGhvZCBoYXMgYSBuZXcgImJsb2NraW5nIiBwYXJhbWV0ZXIgd2hpY2gKLSAgd2hlbiBzZXQgdG8gRmFsc2UgbWFrZXMgcnVuKCkgZXhlY3V0ZSB0aGUgc2NoZWR1bGVkIGV2ZW50cyBkdWUgdG8gZXhwaXJlCi0gIHNvb25lc3QgKGlmIGFueSkgYW5kIHRoZW4gcmV0dXJuLiAgUGF0Y2ggYnkgR2lhbXBhb2xvIFJvZG9sw6AuCi0KLS0gSXNzdWUgIzg2ODQgc2NoZWQuc2NoZWR1bGVyIGNsYXNzIGNhbiBiZSBzYWZlbHkgdXNlZCBpbiBtdWx0aS10aHJlYWRlZAotICBlbnZpcm9ubWVudHMuICBQYXRjaCBieSBKb3NpYWggQ2FybHNvbiBhbmQgR2lhbXBhb2xvIFJvZG9sw6AuCi0KLS0gQWxpYXMgcmVzb3VyY2UuZXJyb3IgdG8gT1NFcnJvciBhbGEgUEVQIDMxNTEuCi0KLS0gSXNzdWUgIzU2ODk6IEFkZCBzdXBwb3J0IGZvciBsem1hIGNvbXByZXNzaW9uIHRvIHRoZSB0YXJmaWxlIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTMyNDg6IFR1cm4gMy4yJ3MgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBpbnRvIDMuMydzCi0gIERlcHJlY2F0aW9uV2FybmluZy4gIEl0IGNvdmVycyAnY2dpLmVzY2FwZScsICdpbXBvcnRsaWIuYWJjLlB5TG9hZGVyJywKLSAgJ2ltcG9ydGxpYi5hYmMuUHlQeWNMb2FkZXInLCAnbm50cGxpYi5OTlRQLnhndGl0bGUnLCAnbm50cGxpYi5OTlRQLnhwYXRoJywKLSAgYW5kIHByaXZhdGUgYXR0cmlidXRlcyBvZiAnc210cGQuU01UUENoYW5uZWwnLgotCi0tIElzc3VlICM1OTA1LCBJc3N1ZSAjMTM1NjA6IHRpbWUuc3RyZnRpbWUoKSBpcyBub3cgdXNpbmcgdGhlIGN1cnJlbnQgbG9jYWxlCi0gIGVuY29kaW5nLCBpbnN0ZWFkIG9mIFVURi04LCBpZiB0aGUgd2NzZnRpbWUoKSBmdW5jdGlvbiBpcyBub3QgYXZhaWxhYmxlLgotCi0tIElzc3VlICMxMzQ2NDogQWRkIGEgcmVhZGludG8oKSBtZXRob2QgdG8gaHR0cC5jbGllbnQuSFRUUFJlc3BvbnNlLiAgUGF0Y2gKLSAgYnkgSm9uIEt1aG4uCi0KLS0gdGFyZmlsZS5weTogQ29ycmVjdGx5IGRldGVjdCBiemlwMiBjb21wcmVzc2VkIHN0cmVhbXMgd2l0aCBibG9ja3NpemVzCi0gIG90aGVyIHRoYW4gOTAway4KLQotLSBJc3N1ZSAjMTM0Mzk6IEZpeCBtYW55IGVycm9ycyBpbiB0dXJ0bGUgZG9jc3RyaW5ncy4KLQotLSBJc3N1ZSAjNjcxNTogQWRkIGEgbW9kdWxlICdsem1hJyBmb3IgY29tcHJlc3Npb24gdXNpbmcgdGhlIExaTUEgYWxnb3JpdGhtLgotICBUaGFua3MgdG8gUGVyIMOYeXZpbmQgS2FybHNlbiBmb3IgdGhlIGluaXRpYWwgaW1wbGVtZW50YXRpb24uCi0KLS0gSXNzdWUgIzEzNDg3OiBNYWtlIGluc3BlY3QuZ2V0bW9kdWxlIHJvYnVzdCBhZ2FpbnN0IGNoYW5nZXMgZG9uZSB0bwotICBzeXMubW9kdWxlcyB3aGlsZSBpdCBpcyBpdGVyYXRpbmcgb3ZlciBpdC4KLQotLSBJc3N1ZSAjMTI2MTg6IEZpeCBhIGJ1ZyB0aGF0IHByZXZlbnRlZCBweV9jb21waWxlIGZyb20gY3JlYXRpbmcgYnl0ZQotICBjb21waWxlZCBmaWxlcyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBJbml0aWFsIHBhdGNoIGJ5IFNqb2VyZCBkZSBWcmllcy4KLQotLSBJc3N1ZSAjMTM0NDQ6IFdoZW4gc3Rkb3V0IGhhcyBiZWVuIGNsb3NlZCBleHBsaWNpdGx5LCB3ZSBzaG91bGQgbm90IGF0dGVtcHQKLSAgdG8gZmx1c2ggaXQgYXQgc2h1dGRvd24gYW5kIHByaW50IGFuIGVycm9yLgotCi0tIElzc3VlICMxMjU2NzogVGhlIGN1cnNlcyBtb2R1bGUgdXNlcyBVbmljb2RlIGZ1bmN0aW9ucyBmb3IgVW5pY29kZSBhcmd1bWVudHMKLSAgd2hlbiBpdCBpcyBsaW5rZWQgdG8gdGhlIG5jdXJzZXMgbGlicmFyeS4gSXQgZW5jb2RlcyBhbHNvIFVuaWNvZGUgc3RyaW5ncyB0bwotICB0aGUgbG9jYWxlIGVuY29kaW5nIGluc3RlYWQgb2YgVVRGLTguCi0KLS0gSXNzdWUgIzEyODU2OiBFbnN1cmUgY2hpbGQgcHJvY2Vzc2VzIGRvIG5vdCBpbmhlcml0IHRoZSBwYXJlbnQncyByYW5kb20KLSAgc2VlZCBmb3IgZmlsZW5hbWUgZ2VuZXJhdGlvbiBpbiB0aGUgdGVtcGZpbGUgbW9kdWxlLiAgUGF0Y2ggYnkgQnJpYW4KLSAgSGFycmluZy4KLQotLSBJc3N1ZSAjOTk1NzogU3Bvb2xlZFRlbXBvcmFyeUZpbGUudHJ1bmNhdGUoKSBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCBzaXplCi0gIHBhcmFtZXRlciwgYXMgb3RoZXIgZmlsZS1saWtlIG9iamVjdHMuICBQYXRjaCBieSBSeWFuIEtlbGx5LgotCi0tIElzc3VlICMxMzQ1ODogRml4IGEgbWVtb3J5IGxlYWsgaW4gdGhlIHNzbCBtb2R1bGUgd2hlbiBkZWNvZGluZyBhCi0gIGNlcnRpZmljYXRlIHdpdGggYSBzdWJqZWN0QWx0TmFtZS4gIFBhdGNoIGJ5IFJvYmVydCBYaWFvLgotCi0tIElzc3VlICMxMzQxNTogb3MudW5zZXRlbnYoKSBkb2Vzbid0IGlnbm9yZSBlcnJvcnMgYW55bW9yZS4KLQotLSBJc3N1ZSAjMTMyNDU6IHNjaGVkLnNjaGVkdWxlciBjbGFzcyBjb25zdHJ1Y3RvcidzIHRpbWVmdW5jIGFuZAotICBkZWxheWZ1bmN0IHBhcmFtZXRlcnMgYXJlIG5vdyBvcHRpb25hbC4KLSAgc2NoZWR1bGVyLmVudGVyIGFuZCBzY2hlZHVsZXIuZW50ZXJhYnMgbWV0aG9kcyBnYWluZWQgYSBuZXcga3dhcmdzIHBhcmFtZXRlci4KLSAgUGF0Y2ggY29udHJpYnV0ZWQgYnkgQ2hyaXMgQ2xhcmsuCi0KLS0gSXNzdWUgIzEyMzI4OiBVbmRlciBXaW5kb3dzLCByZWZhY3RvciBoYW5kbGluZyBvZiBDdHJsLUMgZXZlbnRzIGFuZAotICBtYWtlIF9tdWx0aXByb2Nlc3Npbmcud2luMzIuV2FpdEZvck11bHRpcGxlT2JqZWN0cyBpbnRlcnJ1cHRpYmxlIHdoZW4KLSAgdGhlIHdhaXRfZmxhZyBwYXJhbWV0ZXIgaXMgZmFsc2UuICBQYXRjaCBieSBzYnQuCi0KLS0gSXNzdWUgIzEzMzIyOiBGaXggQnVmZmVyZWRXcml0ZXIud3JpdGUoKSB0byBlbnN1cmUgdGhhdCBCbG9ja2luZ0lPRXJyb3IgaXMKLSAgcmFpc2VkIHdoZW4gdGhlIHdyYXBwZWQgcmF3IGZpbGUgaXMgbm9uLWJsb2NraW5nIGFuZCB0aGUgd3JpdGUgd291bGQgYmxvY2suCi0gIFByZXZpb3VzIGNvZGUgYXNzdW1lZCB0aGF0IHRoZSByYXcgd3JpdGUoKSB3b3VsZCByYWlzZSBCbG9ja2luZ0lPRXJyb3IsIGJ1dAotICBSYXdJT0Jhc2Uud3JpdGUoKSBpcyBkZWZpbmVkIHRvIHJldHVybmVkIE5vbmUgd2hlbiB0aGUgY2FsbCB3b3VsZCBibG9jay4KLSAgUGF0Y2ggYnkgc2J0LgotCi0tIElzc3VlICMxMzM1ODogSFRNTFBhcnNlciBub3cgY2FsbHMgaGFuZGxlX2RhdGEgb25seSBvbmNlIGZvciBlYWNoIENEQVRBLgotCi0tIElzc3VlICM0MTQ3OiBtaW5pZG9tJ3MgdG9wcmV0dHl4bWwgbm8gbG9uZ2VyIGFkZHMgd2hpdGVzcGFjZSBhcm91bmQgYSB0ZXh0Ci0gIG5vZGUgd2hlbiBpdCBpcyB0aGUgb25seSBjaGlsZCBvZiBhbiBlbGVtZW50LiAgSW5pdGlhbCBwYXRjaCBieSBEYW4KLSAgS2VuaWdzYmVyZy4KLQotLSBJc3N1ZSAjMTMzNzQ6IFRoZSBXaW5kb3dzIGJ5dGVzIEFQSSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIHRoZSBvcyBtb2R1bGUuIFVzZQotICBVbmljb2RlIGZpbGVuYW1lcyBpbnN0ZWFkIG9mIGJ5dGVzIGZpbGVuYW1lcyB0byBub3QgZGVwZW5kIG9uIHRoZSBBTlNJIGNvZGUKLSAgcGFnZSBhbnltb3JlIGFuZCB0byBzdXBwb3J0IGFueSBmaWxlbmFtZS4KLQotLSBJc3N1ZSAjMTMyOTc6IFVzZSBieXRlcyB0eXBlIHRvIHNlbmQgYW5kIHJlY2VpdmUgYmluYXJ5IGRhdGEgdGhyb3VnaCBYTUxSUEMuCi0KLS0gSXNzdWUgIzYzOTc6IFN1cHBvcnQgIi9kZXYvcG9sbCIgcG9sbGluZyBvYmplY3RzIGluIHNlbGVjdCBtb2R1bGUsCi0gIHVuZGVyIFNvbGFyaXMgJiBkZXJpdmF0aXZlcy4KLQotLSBJc3N1ZXMgIzE3NDU3NjEsICM3NTU2NzAsICMxMzM1NywgIzEyNjI5LCAjMTIwMDMxMzogSFRNTFBhcnNlciBub3cgY29ycmVjdGx5Ci0gIGhhbmRsZXMgbm9uLXZhbGlkIGF0dHJpYnV0ZXMsIGluY2x1ZGluZyBhZGphY2VudCBhbmQgdW5xdW90ZWQgYXR0cmlidXRlcy4KLQotLSBJc3N1ZSAjMTMxOTM6IEZpeCBkaXN0dXRpbHMuZmlsZWxpc3QuRmlsZUxpc3QgYW5kIHBhY2thZ2luZy5tYW5pZmVzdC5NYW5pZmVzdAotICB1bmRlciBXaW5kb3dzLgotCi0tIElzc3VlICMxMzM4NDogUmVtb3ZlIHVubmVjZXNzYXJ5IF9fZnV0dXJlX18gaW1wb3J0IGluIExpYi9yYW5kb20ucHkKLQotLSBJc3N1ZSAjMTMxNDk6IFNwZWVkIHVwIGFwcGVuZC1vbmx5IFN0cmluZ0lPIG9iamVjdHMuCi0KLS0gSXNzdWUgIzEzMzczOiBtdWx0aXByb2Nlc3NpbmcuUXVldWUuZ2V0KCkgY291bGQgc29tZXRpbWVzIGJsb2NrIGluZGVmaW5pdGVseQotICB3aGVuIGNhbGxlZCB3aXRoIGEgdGltZW91dC4gIFBhdGNoIGJ5IEFybmF1ZCBZc21hbC4KLQotLSBJc3N1ZSAjMTMyNTQ6IEZpeCBNYWlsZGlyIGluaXRpYWxpemF0aW9uIHNvIHRoYXQgbWFpbGRpciBjb250ZW50cwotICBhcmUgcmVhZCBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzMwNjc6IGxvY2FsZS5zZXRsb2NhbGUoKSBub3cgcmFpc2VzIFR5cGVFcnJvciBpZiB0aGUgc2Vjb25kCi0gIGFyZ3VtZW50IGlzIGFuIGludmFsaWQgaXRlcmFibGUuIEl0cyBkb2N1bWVudGF0aW9uIGFuZCBkb2NzdHJpbmcKLSAgd2VyZSBhbHNvIHVwZGF0ZWQuIEluaXRpYWwgcGF0Y2ggYnkgSnlya2kgUHVsbGlhaW5lbi4KLQotLSBJc3N1ZSAjMTMxNDA6IEZpeCB0aGUgZGFlbW9uX3RocmVhZHMgYXR0cmlidXRlIG9mIFRocmVhZGluZ01peEluLgotCi0tIElzc3VlICMxMzMzOTogRml4IGNvbXBpbGUgZXJyb3IgaW4gcG9zaXhtb2R1bGUuYyBkdWUgdG8gbWlzc2luZyBzZW1pY29sb24uCi0gIFRoYW5rcyB0byBSb2JlcnQgWGlhby4KLQotLSBCeXRlIGNvbXBpbGF0aW9uIGluIHBhY2thZ2luZyBpcyBub3cgaXNvbGF0ZWQgZnJvbSB0aGUgY2FsbGluZyBQeXRob24gLUIgb3IKLSAgLU8gb3B0aW9ucywgaW5zdGVhZCBvZiBiZWluZyBkaXNhbGxvd2VkIHVuZGVyIC1CIG9yIGJ1Z2d5IHVuZGVyIC1PLgotCi0tIElzc3VlICMxMDU3MDogY3Vyc2VzLnB1dHAoKSBhbmQgY3Vyc2VzLnRwYXJtKCkgYXJlIG5vdyBleHBlY3RpbmcgYSBieXRlCi0gIHN0cmluZywgaW5zdGVhZCBvZiBhIFVuaWNvZGUgc3RyaW5nLgotCi0tIElzc3VlICMxMzI5NTogaHR0cC5zZXJ2ZXIgbm93IHByb2R1Y2VzIHZhbGlkIEhUTUwgNC4wMSBzdHJpY3QuCi0KLS0gSXNzdWUgIzI4OTI6IHByZXNlcnZlIGl0ZXJwYXJzZSBldmVudHMgaW4gY2FzZSBvZiBTeW50YXhFcnJvci4KLQotLSBJc3N1ZSAjMTMyODc6IHVybGxpYi5yZXF1ZXN0IGFuZCB1cmxsaWIuZXJyb3Igbm93IGNvbnRhaW5zIGFuIF9fYWxsX18KLSAgYXR0cmlidXRlIHRvIGV4cG9zZSBvbmx5IHJlbGV2YW50IGNsYXNzZXMgYW5kIGZ1bmN0aW9ucy4gIFBhdGNoIGJ5IEZsb3JlbnQKLSAgWGljbHVuYS4KLQotLSBJc3N1ZSAjNjcwNjY0OiBGaXggSFRNTFBhcnNlciB0byBjb3JyZWN0bHkgaGFuZGxlIHRoZSBjb250ZW50IG9mCi0gIGBgPHNjcmlwdD4uLi48L3NjcmlwdD5gYCBhbmQgYGA8c3R5bGU+Li4uPC9zdHlsZT5gYC4KLQotLSBJc3N1ZSAjMTA4MTc6IEZpeCB1cmxyZXRyaWV2ZSBmdW5jdGlvbiB0byByYWlzZSBDb250ZW50VG9vU2hvcnRFcnJvciBldmVuCi0gIHdoZW4gcmVwb3J0aG9vayBpcyBOb25lLiBQYXRjaCBieSBKeXJraSBQdWxsaWFpbmVuLgotCi0tIEZpeCB0aGUgeG1scnBjLmNsaWVudCB1c2VyIGFnZW50IHRvIHJldHVybiBzb21ldGhpbmcgc2ltaWxhciB0bwotICB1cmxsaWIucmVxdWVzdCB1c2VyIGFnZW50OiAiUHl0aG9uLXhtbHJwYy8zLjMiLgotCi0tIElzc3VlICMxMzI5MzogQmV0dGVyIGVycm9yIG1lc3NhZ2Ugd2hlbiB0cnlpbmcgdG8gbWFyc2hhbCBieXRlcyB1c2luZwotICB4bWxycGMuY2xpZW50LgotCi0tIElzc3VlICMxMzI5MTogTmFtZUVycm9yIGluIHhtbHJwYyBwYWNrYWdlLgotCi0tIElzc3VlICMxMzI1ODogVXNlIGNhbGxhYmxlKCkgYnVpbHQtaW4gaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkuCi0KLS0gSXNzdWUgIzEzMjczOiBmaXggYSBidWcgdGhhdCBwcmV2ZW50ZWQgSFRNTFBhcnNlciB0byBwcm9wZXJseSBkZXRlY3Qgc29tZQotICB0YWdzIHdoZW4gc3RyaWN0PUZhbHNlLgotCi0tIElzc3VlICMxMTE4MzogQWRkIGZpbmVyLWdyYWluZWQgZXhjZXB0aW9ucyB0byB0aGUgc3NsIG1vZHVsZSwgc28gdGhhdAotICB5b3UgZG9uJ3QgaGF2ZSB0byBpbnNwZWN0IHRoZSBleGNlcHRpb24ncyBhdHRyaWJ1dGVzIGluIHRoZSBjb21tb24gY2FzZS4KLQotLSBJc3N1ZSAjMTMyMTY6IEFkZCBjcDY1MDAxIGNvZGVjLCB0aGUgV2luZG93cyBVVEYtOCAoQ1BfVVRGOCkuCi0KLS0gSXNzdWUgIzEzMjI2OiBBZGQgUlRMRF94eHggY29uc3RhbnRzIHRvIHRoZSBvcyBtb2R1bGUuIFRoZXNlIGNvbnN0YW50cyBjYW4gYmUKLSAgdXNlZCB3aXRoIHN5cy5zZXRkbG9wZW5mbGFncygpLgotCi0tIElzc3VlICMxMDI3ODogQWRkIGNsb2NrX2dldHJlcygpLCBjbG9ja19nZXR0aW1lKCkgYW5kIENMT0NLX3h4eCBjb25zdGFudHMgdG8KLSAgdGhlIHRpbWUgbW9kdWxlLiB0aW1lLmNsb2NrX2dldHRpbWUodGltZS5DTE9DS19NT05PVE9OSUMpIHByb3ZpZGVzIGEKLSAgbW9ub3RvbmljIGNsb2NrCi0KLS0gSXNzdWUgIzEwMzMyOiBtdWx0aXByb2Nlc3Npbmc6IGZpeCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gYSBQb29sIGlzIGNsb3NlZAotICBiZWZvcmUgYWxsIHRhc2tzIGhhdmUgY29tcGxldGVkLgotCi0tIElzc3VlICMxMzI1NTogd3JvbmcgZG9jc3RyaW5ncyBpbiBhcnJheSBtb2R1bGUuCi0KLS0gSXNzdWUgIzg1NDA6IFJlbW92ZSBkZXByZWNhdGVkIENvbnRleHQuX2NsYW1wIGF0dHJpYnV0ZSBpbiBEZWNpbWFsIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTMyMzU6IEFkZGVkIERlcHJlY2F0aW9uV2FybmluZyB0byBsb2dnaW5nLndhcm4oKSBtZXRob2QgYW5kIGZ1bmN0aW9uLgotCi0tIElzc3VlICM5MTY4OiBub3cgc210cGQgaXMgYWJsZSB0byBiaW5kIHByaXZpbGVnZWQgcG9ydC4KLQotLSBJc3N1ZSAjMTI1Mjk6IGZpeCBjZ2kucGFyc2VfaGVhZGVyIGlzc3VlIG9uIHN0cmluZ3Mgd2l0aCBkb3VibGUtcXVvdGVzIGFuZAotICBzZW1pY29sb25zIHRvZ2V0aGVyLiBQYXRjaCBieSBCZW4gRGFybmVsbCBhbmQgUGV0cmkgTGVodGluZW4uCi0KLS0gSXNzdWUgIzEzMjI3OiBmdW5jdG9vbHMubHJ1X2NhY2hlKCkgbm93IGhhcyBhIG9wdGlvbiB0byBkaXN0aW5ndWlzaAotICBjYWxscyB3aXRoIGRpZmZlcmVudCBhcmd1bWVudCB0eXBlcy4KLQotLSBJc3N1ZSAjNjA5MDogemlwZmlsZSByYWlzZXMgYSBWYWx1ZUVycm9yIHdoZW4gYSBkb2N1bWVudCB3aXRoIGEgdGltZXN0YW1wCi0gIGVhcmxpZXIgdGhhbiAxOTgwIGlzIHByb3ZpZGVkLiBQYXRjaCBjb250cmlidXRlZCBieSBQZXRyaSBMZWh0aW5lbi4KLQotLSBJc3N1ZSAjMTMxNTA6IHN5c2NvbmZpZyBubyBsb25nZXIgcGFyc2VzIHRoZSBNYWtlZmlsZSBhbmQgY29uZmlnLmggZmlsZXMKLSAgd2hlbiBpbXBvcnRlZCwgaW5zdGVhZCBkb2luZyBpdCBhdCBidWlsZCB0aW1lLiAgVGhpcyBtYWtlcyBpbXBvcnRpbmcKLSAgc3lzY29uZmlnIGZhc3RlciBhbmQgcmVkdWNlcyBQeXRob24gc3RhcnR1cCB0aW1lIGJ5IDIwJS4KLQotLSBJc3N1ZSAjMTI0NDg6IHNtdHBsaWIgbm93IGZsdXNoZXMgc3Rkb3V0IHdoaWxlIHJ1bm5pbmcgYGBweXRob24gLW0gc210cGxpYmBgCi0gIGluIG9yZGVyIHRvIGRpc3BsYXkgdGhlIHByb21wdCBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzEyNDU0OiBUaGUgbWFpbGJveCBtb2R1bGUgaXMgbm93IHVzaW5nIEFTQ0lJLCBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUKLSAgZW5jb2RpbmcsIHRvIHJlYWQgYW5kIHdyaXRlIC5taF9zZXF1ZW5jZXMgZmlsZXMuCi0KLS0gSXNzdWUgIzEzMTk0OiB6bGliLmNvbXByZXNzb2JqKCkuY29weSgpIGFuZCB6bGliLmRlY29tcHJlc3NvYmooKS5jb3B5KCkgYXJlCi0gIG5vdyBhdmFpbGFibGUgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjMTY3MzAwNzogdXJsbGliLnJlcXVlc3Qgbm93IHN1cHBvcnRzIEhFQUQgcmVxdWVzdCB2aWEgbmV3IG1ldGhvZCBhcmd1bWVudC4KLSAgUGF0Y2ggY29udHJpYnV0aW9ucyBieSBEYXZpZCBTdGFuZWssIFBhdHJpY2sgV2VzdGVyaG9mZiBhbmQgRXppbyBNZWxvdHRpLgotCi0tIElzc3VlICMxMjM4NjogcGFja2FnaW5nIGRvZXMgbm90IGZhaWwgYW55bW9yZSB3aGVuIHdyaXRpbmcgdGhlIFJFU09VUkNFUwotICBmaWxlLgotCi0tIElzc3VlICMxMzE1ODogRml4IGRlY29kaW5nIGFuZCBlbmNvZGluZyBvZiBHTlUgdGFyIHNwZWNpZmljIGJhc2UtMjU2IG51bWJlcgotICBmaWVsZHMgaW4gdGFyZmlsZS4KLQotLSBJc3N1ZSAjMTMwMjU6IG1pbWV0eXBlcyBpcyBub3cgcmVhZGluZyBNSU1FIHR5cGVzIHVzaW5nIHRoZSBVVEYtOCBlbmNvZGluZywKLSAgaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nLgotCi0tIElzc3VlICMxMDY1MzogT24gV2luZG93cywgdXNlIHN0cmZ0aW1lKCkgaW5zdGVhZCBvZiB3Y3NmdGltZSgpIGJlY2F1c2UKLSAgd2NzZnRpbWUoKSBkb2Vzbid0IGZvcm1hdCB0aW1lIHpvbmUgY29ycmVjdGx5LgotCi0tIElzc3VlICMxMzE1MDogVGhlIHRva2VuaXplIG1vZHVsZSBkb2Vzbid0IGNvbXBpbGUgbGFyZ2UgcmVndWxhciBleHByZXNzaW9ucwotICBhdCBzdGFydHVwIGFueW1vcmUuCi0KLS0gSXNzdWUgIzExMTcxOiBGaXggZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfbWFrZWZpbGVfZmlsZW5hbWUgd2hlbiBQeXRob24gd2FzCi0gIGNvbmZpZ3VyZWQgd2l0aCBkaWZmZXJlbnQgcHJlZml4IGFuZCBleGVjLXByZWZpeC4KLQotLSBJc3N1ZSAjMTEyNTQ6IFRlYWNoIGRpc3R1dGlscyBhbmQgcGFja2FnaW5nIHRvIGNvbXBpbGUgLnB5YyBhbmQgLnB5byBmaWxlcyBpbgotICBQRVAgMzE0Ny1jb21wbGlhbnQgX19weWNhY2hlX18gZGlyZWN0b3JpZXMuCi0KLS0gSXNzdWUgIzczNjc6IEZpeCBwa2d1dGlsLndhbGtfcGF0aHMgdG8gc2tpcCBkaXJlY3RvcmllcyB3aG9zZQotICBjb250ZW50cyBjYW5ub3QgYmUgcmVhZC4KLQotLSBJc3N1ZSAjMzE2MzogVGhlIHN0cnVjdCBtb2R1bGUgZ2V0cyBuZXcgZm9ybWF0IGNoYXJhY3RlcnMgJ24nIGFuZCAnTicKLSAgc3VwcG9ydGluZyBDIGludGVnZXIgdHlwZXMgYGBzc2l6ZV90YGAgYW5kIGBgc2l6ZV90YGAsIHJlc3BlY3RpdmVseS4KLQotLSBJc3N1ZSAjMTMwOTk6IEZpeCBzcWxpdGUzLkN1cnNvci5sYXN0cm93aWQgdW5kZXIgYSBUdXJraXNoIGxvY2FsZS4KLSAgUmVwb3J0ZWQgYW5kIGRpYWdub3NlZCBieSBUaG9tYXMgS2x1eXZlci4KLQotLSBJc3N1ZSAjMTMwODc6IEJ1ZmZlcmVkUmVhZGVyLnNlZWsoKSBub3cgYWx3YXlzIHJhaXNlcyBVbnN1cHBvcnRlZE9wZXJhdGlvbgotICBpZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGlzIHVuc2Vla2FibGUsIGV2ZW4gaWYgdGhlIHNlZWsgY291bGQgYmUKLSAgc2F0aXNmaWVkIHVzaW5nIHRoZSBpbnRlcm5hbCBidWZmZXIuICBQYXRjaCBieSBKb2huIE8nQ29ubm9yLgotCi0tIElzc3VlICM3Njg5OiBBbGxvdyBwaWNrbGluZyBvZiBkeW5hbWljYWxseSBjcmVhdGVkIGNsYXNzZXMgd2hlbiB0aGVpcgotICBtZXRhY2xhc3MgaXMgcmVnaXN0ZXJlZCB3aXRoIGNvcHlyZWcuICBQYXRjaCBieSBOaWNvbGFzIE0uIFRoacOpcnkgYW5kIENyYWlnCi0gIENpdHJvLgotCi0tIElzc3VlICMxMzAzNDogV2hlbiBkZWNvZGluZyBzb21lIFNTTCBjZXJ0aWZpY2F0ZXMsIHRoZSBzdWJqZWN0QWx0TmFtZQotICBleHRlbnNpb24gY291bGQgYmUgdW5yZXBvcnRlZC4KLQotLSBJc3N1ZSAjMTIzMDY6IEV4cG9zZSB0aGUgcnVudGltZSB2ZXJzaW9uIG9mIHRoZSB6bGliIEMgbGlicmFyeSBhcyBhIGNvbnN0YW50LAotICBaTElCX1JVTlRJTUVfVkVSU0lPTiwgaW4gdGhlIHpsaWIgbW9kdWxlLiBQYXRjaCBieSBUb3JzdGVuIExhbmRzY2hvZmYuCi0KLS0gSXNzdWUgIzEyOTU5OiBBZGQgY29sbGVjdGlvbnMuQ2hhaW5NYXAgdG8gY29sbGVjdGlvbnMuX19hbGxfXy4KLQotLSBJc3N1ZSAjODkzMzogZGlzdHV0aWxzJyBQS0ctSU5GTyBmaWxlcyBhbmQgcGFja2FnaW5nJ3MgTUVUQURBVEEgZmlsZXMgd2lsbAotICBub3cgY29ycmVjdGx5IHJlcG9ydCBNZXRhZGF0YS1WZXJzaW9uOiAxLjEgaW5zdGVhZCBvZiAxLjAgaWYgYSBDbGFzc2lmaWVyIG9yCi0gIERvd25sb2FkLVVSTCBmaWVsZCBpcyBwcmVzZW50LgotCi0tIElzc3VlICMxMjU2NzogQWRkIGN1cnNlcy51bmdldF93Y2goKSBmdW5jdGlvbi4gUHVzaCBhIGNoYXJhY3RlciBzbyB0aGUgbmV4dAotICBnZXRfd2NoKCkgd2lsbCByZXR1cm4gaXQuCi0KLS0gSXNzdWUgIzk1NjE6IGRpc3R1dGlscyBhbmQgcGFja2FnaW5nIG5vdyB3cml0ZXMgZWdnLWluZm8gZmlsZXMgdXNpbmcgVVRGLTgsCi0gIGluc3RlYWQgb2YgdGhlIGxvY2FsZSBlbmNvZGluZy4KLQotLSBJc3N1ZSAjODI4NjogVGhlIGRpc3R1dGlscyBjb21tYW5kIHNkaXN0IHdpbGwgcHJpbnQgYSB3YXJuaW5nIG1lc3NhZ2UgaW5zdGVhZAotICBvZiBjcmFzaGluZyB3aGVuIGFuIGludmFsaWQgcGF0aCBpcyBnaXZlbiBpbiB0aGUgbWFuaWZlc3QgdGVtcGxhdGUuCi0KLS0gSXNzdWUgIzEyODQxOiB0YXJmaWxlIHVubmVjZXNzYXJpbHkgY2hlY2tlZCB0aGUgZXhpc3RlbmNlIG9mIG51bWVyaWNhbCB1c2VyCi0gIGFuZCBncm91cCBpZHMgb24gZXh0cmFjdGlvbi4gSWYgb25lIG9mIHRoZW0gZGlkIG5vdCBleGlzdCB0aGUgcmVzcGVjdGl2ZSBpZAotICBvZiB0aGUgY3VycmVudCB1c2VyIChpLmUuIHJvb3QpIHdhcyB1c2VkIGZvciB0aGUgZmlsZSBhbmQgb3duZXJzaGlwCi0gIGluZm9ybWF0aW9uIHdhcyBsb3N0LgotCi0tIElzc3VlICMxMjg4ODogRml4IGEgYnVnIGluIEhUTUxQYXJzZXIudW5lc2NhcGUgdGhhdCBwcmV2ZW50ZWQgaXQgdG8gZXNjYXBlCi0gIG1vcmUgdGhhbiAxMjggZW50aXRpZXMuICBQYXRjaCBieSBQZXRlciBPdHRlbi4KLQotLSBJc3N1ZSAjMTI4Nzg6IEV4cG9zZSBhIF9fZGljdF9fIGF0dHJpYnV0ZSBvbiBpby5JT0Jhc2UgYW5kIGl0cyBzdWJjbGFzc2VzLgotCi0tIElzc3VlICMxMjQ5NDogT24gZXJyb3IsIGNhbGwoKSwgY2hlY2tfY2FsbCgpLCBjaGVja19vdXRwdXQoKSBhbmQKLSAgZ2V0c3RhdHVzb3V0cHV0KCkgZnVuY3Rpb25zIG9mIHRoZSBzdWJwcm9jZXNzIG1vZHVsZSBub3cga2lsbCB0aGUgcHJvY2VzcywKLSAgcmVhZCBpdHMgc3RhdHVzICh0byBhdm9pZCB6b21iaXMpIGFuZCBjbG9zZSBwaXBlcy4KLQotLSBJc3N1ZSAjMTI3MjA6IEV4cG9zZSBsb3ctbGV2ZWwgTGludXggZXh0ZW5kZWQgZmlsZSBhdHRyaWJ1dGUgZnVuY3Rpb25zIGluIG9zLgotCi0tIElzc3VlICMxMDk0NjogVGhlIGRpc3R1dGlscyBjb21tYW5kcyBiZGlzdF9kdW1iLCBiZGlzdF93aW5pbnN0IGFuZCBiZGlzdF9tc2kKLSAgbm93IHJlc3BlY3QgYSAtLXNraXAtYnVpbGQgb3B0aW9uIGdpdmVuIHRvIGJkaXN0LiAgVGhlIHBhY2thZ2luZyBjb21tYW5kcwotICB3ZXJlIGZpeGVkIHRvby4KLQotLSBJc3N1ZSAjMTI4NDc6IEZpeCBhIGNyYXNoIHdpdGggbmVnYXRpdmUgUFVUIGFuZCBMT05HX0JJTlBVVCBhcmd1bWVudHMgaW4KLSAgdGhlIEMgcGlja2xlIGltcGxlbWVudGF0aW9uLgotCi0tIElzc3VlICMxMTU2NDogQXZvaWQgY3Jhc2hlcyB3aGVuIHRyeWluZyB0byBwaWNrbGUgaHVnZSBvYmplY3RzIG9yIGNvbnRhaW5lcnMKLSAgKG1vcmUgdGhhbiAyKiozMSBpdGVtcykuICBJbnN0ZWFkLCBpbiBtb3N0IGNhc2VzLCBhbiBPdmVyZmxvd0Vycm9yIGlzIHJhaXNlZC4KLQotLSBJc3N1ZSAjMTIyODc6IEZpeCBhIHN0YWNrIGNvcnJ1cHRpb24gaW4gb3NzYXVkaW9kZXYgbW9kdWxlIHdoZW4gdGhlIEZEIGlzCi0gIGdyZWF0ZXIgdGhhbiBGRF9TRVRTSVpFLgotCi0tIElzc3VlICMxMjgzOTogRml4IGNyYXNoIGluIHpsaWIgbW9kdWxlIGR1ZSB0byB2ZXJzaW9uIG1pc21hdGNoLgotICBGaXggYnkgUmljaGFyZCBNLiBUZXcuCi0KLS0gSXNzdWUgIzk5MjM6IFRoZSBtYWlsY2FwIG1vZHVsZSBub3cgY29ycmVjdGx5IHVzZXMgdGhlIHBsYXRmb3JtIHBhdGgKLSAgc2VwYXJhdG9yIGZvciB0aGUgTUFJTENBUCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvbiBub24tUE9TSVggcGxhdGZvcm1zLgotCi0tIElzc3VlICMxMjgzNTogRm9sbG93IHVwIHRvICM2NTYwIHRoYXQgdW5jb25kaXRpb25hbGx5IHByZXZlbnRzIHVzZSBvZiB0aGUKLSAgdW5lbmNyeXB0ZWQgc2VuZG1zZy9yZWN2bXNnIEFQSXMgb24gU1NMIHdyYXBwZWQgc29ja2V0cy4gUGF0Y2ggYnkgRGF2aWQKLSAgV2F0c29uLgotCi0tIElzc3VlICMxMjgwMzogU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW4oKSBub3cgYWNjZXB0cyBhIHBhc3N3b3JkIGFyZ3VtZW50Ci0gIHRvIGJlIHVzZWQgaWYgdGhlIHByaXZhdGUga2V5IGlzIGVuY3J5cHRlZC4gIFBhdGNoIGJ5IEFkYW0gU2ltcGtpbnMuCi0KLS0gSXNzdWUgIzExNjU3OiBGaXggc2VuZGluZyBmaWxlIGRlc2NyaXB0b3JzIG92ZXIgMjU1IG92ZXIgYSBtdWx0aXByb2Nlc3NpbmcKLSAgUGlwZS4KLQotLSBJc3N1ZSAjMTI4MTE6IHRhYm5hbm55LmNoZWNrKCkgbm93IHByb21wdGx5IGNsb3NlcyBjaGVja2VkIGZpbGVzLiBQYXRjaCBieQotICBBbnRob255IEJyaWdncy4KLQotLSBJc3N1ZSAjNjU2MDogVGhlIHNlbmRtc2cvcmVjdm1zZyBBUEkgaXMgbm93IGV4cG9zZWQgYnkgdGhlIHNvY2tldCBtb2R1bGUKLSAgd2hlbiBwcm92aWRlZCBieSB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybSwgc3VwcG9ydGluZyBwcm9jZXNzaW5nIG9mCi0gIGFuY2lsbGFyeSBkYXRhIGluIHB1cmUgUHl0aG9uIGNvZGUuIFBhdGNoIGJ5IERhdmlkIFdhdHNvbiBhbmQgSGVpa28gV3VuZHJhbS4KLQotLSBJc3N1ZSAjMTIzMjY6IE9uIExpbnV4LCBzeXMucGxhdGZvcm0gZG9lc24ndCBjb250YWluIHRoZSBtYWpvciB2ZXJzaW9uCi0gIGFueW1vcmUuIEl0IGlzIG5vdyBhbHdheXMgJ2xpbnV4JywgaW5zdGVhZCBvZiAnbGludXgyJyBvciAnbGludXgzJyBkZXBlbmRpbmcKLSAgb24gdGhlIExpbnV4IHZlcnNpb24gdXNlZCB0byBidWlsZCBQeXRob24uCi0KLS0gSXNzdWUgIzEyMjEzOiBGaXggYSBidWZmZXJpbmcgYnVnIHdpdGggaW50ZXJsZWF2ZWQgcmVhZHMgYW5kIHdyaXRlcyB0aGF0Ci0gIGNvdWxkIGFwcGVhciBvbiBCdWZmZXJlZFJhbmRvbSBzdHJlYW1zLgotCi0tIElzc3VlICMxMjc3ODogUmVkdWNlIG1lbW9yeSBjb25zdW1wdGlvbiB3aGVuIEpTT04tZW5jb2RpbmcgYSBsYXJnZQotICBjb250YWluZXIgb2YgbWFueSBzbWFsbCBvYmplY3RzLgotCi0tIElzc3VlICMxMjY1MDogRml4IGEgcmFjZSBjb25kaXRpb24gd2hlcmUgYSBzdWJwcm9jZXNzLlBvcGVuIGNvdWxkIGxlYWsKLSAgcmVzb3VyY2VzIChGRC96b21iaWUpIHdoZW4ga2lsbGVkIGF0IHRoZSB3cm9uZyB0aW1lLgotCi0tIElzc3VlICMxMjc0NDogRml4IGluZWZmaWNpZW50IHJlcHJlc2VudGF0aW9uIG9mIGludGVnZXJzIGJldHdlZW4gMioqMzEgYW5kCi0gIDIqKjYzIG9uIHN5c3RlbXMgd2l0aCBhIDY0LWJpdCBDICJsb25nIi4KLQotLSBJc3N1ZSAjMTI2NDY6IEFkZCBhbiAnZW9mJyBhdHRyaWJ1dGUgdG8gemxpYi5EZWNvbXByZXNzLCB0byBtYWtlIGl0IGVhc2llciB0bwotICBkZXRlY3QgdHJ1bmNhdGVkIGlucHV0IHN0cmVhbXMuCi0KLS0gSXNzdWUgIzExNTEzOiBGaXggZXhjZXB0aW9uIGhhbmRsaW5nIGBgdGFyZmlsZS5UYXJGaWxlLmd6b3BlbigpYGAgd2hlbgotICB0aGUgZmlsZSBjYW5ub3QgYmUgb3BlbmVkLgotCi0tIElzc3VlICMxMjY4NzogRml4IGEgcG9zc2libGUgYnVmZmVyaW5nIGJ1ZyB3aGVuIHVucGlja2xpbmcgdGV4dCBtb2RlCi0gIChwcm90b2NvbCAwLCBtb3N0bHkpIHBpY2tsZXMuCi0KLS0gSXNzdWUgIzEwMDg3OiBGaXggdGhlIGh0bWwgb3V0cHV0IGZvcm1hdCBvZiB0aGUgY2FsZW5kYXIgbW9kdWxlLgotCi0tIElzc3VlICMxMzEyMTogYWRkIHN1cHBvcnQgZm9yIGlucGxhY2UgbWF0aCBvcGVyYXRvcnMgdG8gY29sbGVjdGlvbnMuQ291bnRlci4KLQotLSBBZGQgc3VwcG9ydCBmb3IgdW5hcnkgcGx1cyBhbmQgdW5hcnkgbWludXMgdG8gY29sbGVjdGlvbnMuQ291bnRlci4KLQotLSBJc3N1ZSAjMTI2ODM6IHVybHBhcnNlIHVwZGF0ZWQgdG8gaW5jbHVkZSBzdm4gYXMgc2NoZW1lcyB0aGF0IHVzZXMgcmVsYXRpdmUKLSAgcGF0aHMuIChzdm4gZnJvbSAxLjUgb253YXJkcyBzdXBwb3J0IHJlbGF0aXZlIHBhdGgpLgotCi0tIElzc3VlICMxMjY1NTogRXhwb3NlIGZ1bmN0aW9ucyBmcm9tIHNjaGVkLmggaW4gdGhlIG9zIG1vZHVsZTogc2NoZWRfeWllbGQoKSwKLSAgc2NoZWRfc2V0c2NoZWR1bGVyKCksIHNjaGVkX2dldHNjaGVkdWxlcigpLCBzY2hlZF9zZXRwYXJhbSgpLAotICBzY2hlZF9nZXRfbWluX3ByaW9yaXR5KCksIHNjaGVkX2dldF9tYXhfcHJpb3JpdHkoKSwgc2NoZWRfcnJfZ2V0X2ludGVydmFsKCksCi0gIHNjaGVkX2dldGFmZmluaXR5KCksIHNjaGVkX3NldGFmZmluaXR5KCkuCi0KLS0gQWRkIFRocmVhZEVycm9yIHRvIHRocmVhZGluZy5fX2FsbF9fLgotCi0tIElzc3VlcyAjMTExMDQsICM4Njg4OiBGaXggdGhlIGJlaGF2aW9yIG9mIGRpc3R1dGlscycgc2Rpc3QgY29tbWFuZCB3aXRoCi0gIG1hbnVhbGx5LW1haW50YWluZWQgTUFOSUZFU1QgZmlsZXMuCi0KLS0gSXNzdWUgIzExMjgxOiBzbXRwbGliLlNUTVAgZ2V0cyBzb3VyY2VfYWRkcmVzcyBwYXJhbWV0ZXIsIHdoaWNoIGFkZHMgdGhlCi0gIGFiaWxpdHkgdG8gYmluZCB0byBzcGVjaWZpYyBzb3VyY2UgYWRkcmVzcyBvbiBhIG1hY2hpbmUgd2l0aCBtdWx0aXBsZQotICBpbnRlcmZhY2VzLiBQYXRjaCBieSBQYXVsbyBTY2FyZGluZS4KLQotLSBJc3N1ZSAjMTI0NjQ6IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeS5jbGVhbnVwKCkgc2hvdWxkIG5vdCBmb2xsb3cKLSAgc3ltbGlua3M6IGZpeCBpdC4gUGF0Y2ggYnkgUGV0cmkgTGVodGluZW4uCi0KLS0gSXNzdWUgIzg4ODc6ICJweWRvYyBzb21lYnVpbHRpbi5zb21lbWV0aG9kIiAob3IgaGVscCgnc29tZWJ1aWx0aW4uc29tZW1ldGhvZCcpCi0gIGluIFB5dGhvbiBjb2RlKSBub3cgZmluZHMgdGhlIGRvYyBvZiB0aGUgbWV0aG9kLgotCi0tIElzc3VlICMxMDk2ODogUmVtb3ZlIGluZGlyZWN0aW9uIGluIHRocmVhZGluZy4gIFRoZSBwdWJsaWMgbmFtZXMgKEV2ZW50LAotICBDb25kaXRpb24sIGV0Yy4pIHVzZWQgdG8gYmUgZmFjdG9yeSBmdW5jdGlvbnMgcmV0dXJuaW5nIGluc3RhbmNlcyBvZiBoaWRkZW4KLSAgY2xhc3NlcyAoX0V2ZW50LCBfQ29uZGl0aW9uLCBldGMuKSwgYmVjYXVzZSAoaWYgR3VpZG8gcmVjYWxscyBjb3JyZWN0bHkpIHRoaXMKLSAgY29kZSBwcmUtZGF0ZXMgdGhlIGFiaWxpdHkgdG8gc3ViY2xhc3MgZXh0ZW5zaW9uIHR5cGVzLiAgSXQgaXMgbm93IHBvc3NpYmxlCi0gIHRvIGluaGVyaXQgZnJvbSB0aGVzZSBjbGFzc2VzLCB3aXRob3V0IGhhdmluZyB0byBpbXBvcnQgdGhlIHByaXZhdGUKLSAgdW5kZXJzY29yZWQgbmFtZXMgbGlrZSBtdWx0aXByb2Nlc3NpbmcgZGlkLgotCi0tIElzc3VlICM5NzIzOiBBZGQgc2hsZXgucXVvdGUgZnVuY3Rpb25zLCB0byBlc2NhcGUgZmlsZW5hbWVzIGFuZCBjb21tYW5kCi0gIGxpbmVzLgotCi0tIElzc3VlICMxMjYwMzogRml4IHB5ZG9jLnN5bm9wc2lzKCkgb24gZmlsZXMgd2l0aCBub24tbmVnYXRpdmUgc3RfbXRpbWUuCi0KLS0gSXNzdWUgIzEyNTE0OiBVc2UgdHJ5L2ZpbmFsbHkgdG8gYXNzdXJlIHRoZSB0aW1laXQgbW9kdWxlIHJlc3RvcmVzIGdhcmJhZ2UKLSAgY29sbGVjdGlvbnMgd2hlbiBpdCBpcyBkb25lLgotCi0tIElzc3VlICMxMjYwNzogSW4gc3VicHJvY2VzcywgZml4IGlzc3VlIHdoZXJlIGlmIHN0ZGluLCBzdGRvdXQgb3Igc3RkZXJyIGlzCi0gIGdpdmVuIGFzIGEgbG93IGZkLCBpdCBnZXRzIG92ZXJ3cml0dGVuLgotCi0tIElzc3VlICMxMjU3NjogRml4IHVybG9wZW4gYmVoYXZpb3Igb24gc2l0ZXMgd2hpY2ggZG8gbm90IHNlbmQgKG9yIG9iZnVzY2F0ZXMpCi0gIGBgQ29ubmVjdGlvbjogY2xvc2VgYCBoZWFkZXIuCi0KLS0gSXNzdWUgIzEyNTYwOiBCdWlsZCBsaWJweXRob24uc28gb24gT3BlbkJTRC4gUGF0Y2ggYnkgU3RlZmFuIFNwZXJsaW5nLgotCi0tIElzc3VlICMxODEzOiBGaXggY29kZWMgbG9va3VwIHVuZGVyIFR1cmtpc2ggbG9jYWxlcy4KLQotLSBJc3N1ZSAjMTI1OTE6IEltcHJvdmUgc3VwcG9ydCBvZiAidW5pdmVyc2FsIG5ld2xpbmVzIiBpbiB0aGUgc3VicHJvY2VzcwotICBtb2R1bGU6IHRoZSBwaXBlZCBzdHJlYW1zIGNhbiBub3cgYmUgcHJvcGVybHkgcmVhZCBmcm9tIG9yIHdyaXR0ZW4gdG8uCi0KLS0gSXNzdWUgIzEyNTkxOiBBbGxvdyBpby5UZXh0SU9XcmFwcGVyIHRvIHdvcmsgd2l0aCByYXcgSU8gb2JqZWN0cyAod2l0aG91dAotICBhIHJlYWQxKCkgbWV0aG9kKSwgYW5kIGFkZCBhICp3cml0ZV90aHJvdWdoKiBwYXJhbWV0ZXIgdG8gbWFuZGF0ZQotICB1bmJ1ZmZlcmVkIHdyaXRlcy4KLQotLSBJc3N1ZSAjMTA4ODM6IEZpeCBzb2NrZXQgbGVha3MgaW4gdXJsbGliLnJlcXVlc3Qgd2hlbiB1c2luZyBGVFAuCi0KLS0gSXNzdWUgIzEyNTkyOiBNYWtlIFB5dGhvbiBidWlsZCBvbiBPcGVuQlNEIDUgKGFuZCBmdXR1cmUgbWFqb3IgcmVsZWFzZXMpLgotCi0tIElzc3VlICMxMjM3MjogUE9TSVggc2VtYXBob3JlcyBhcmUgYnJva2VuIG9uIEFJWDogZG9uJ3QgdXNlIHRoZW0uCi0KLS0gSXNzdWUgIzEyNTUxOiBQcm92aWRlIGEgZ2V0X2NoYW5uZWxfYmluZGluZygpIG1ldGhvZCBvbiBTU0wgc29ja2V0cyBzbyBhcwotICB0byBnZXQgY2hhbm5lbCBiaW5kaW5nIGRhdGEgZm9yIHRoZSBjdXJyZW50IFNTTCBzZXNzaW9uIChvbmx5IHRoZQotICAidGxzLXVuaXF1ZSIgY2hhbm5lbCBiaW5kaW5nIGlzIGltcGxlbWVudGVkKS4gIFRoaXMgYWxsb3dzIHRoZSBpbXBsZW1lbnRhdGlvbgotICBvZiBjZXJ0YWluIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbXMgc3VjaCBhcyBTQ1JBTS1TSEEtMS1QTFVTLiAgUGF0Y2ggYnkKLSAgSmFjZWsgS29uaWVjem55LgotCi0tIElzc3VlICM2NjUxOTQ6IGVtYWlsLnV0aWxzIG5vdyBoYXMgZm9ybWF0X2RhdGV0aW1lIGFuZCBwYXJzZWRhdGVfdG9fZGF0ZXRpbWUKLSAgZnVuY3Rpb25zLCBhbGxvd2luZyBmb3Igcm91bmQgdHJpcHBpbmcgb2YgUkZDMjgyMiBmb3JtYXQgZGF0ZXMuCi0KLS0gSXNzdWUgIzEyNTcxOiBBZGQgYSBwbGF0LWxpbnV4MyBkaXJlY3RvcnkgbWlycm9yaW5nIHRoZSBwbGF0LWxpbnV4MgotICBkaXJlY3RvcnksIHNvIHRoYXQgImltcG9ydCBETEZDTiIgYW5kIG90aGVyIHNpbWlsYXIgaW1wb3J0cyB3b3JrIG9uCi0gIExpbnV4IDMuMC4KLQotLSBJc3N1ZSAjNzQ4NDogc210cGxpYiBubyBsb25nZXIgcHV0cyA8PiBhcm91bmQgYWRkcmVzc2VzIGluIFZSRlkgYW5kIEVYUE4KLSAgY29tbWFuZHM7IHRoZXkgYXJlbid0IHJlcXVpcmVkIGFuZCBpbiBmYWN0IHBvc3RmaXggZG9lc24ndCBzdXBwb3J0IHRoYXQgZm9ybS4KLQotLSBJc3N1ZSAjMTIyNzM6IFJlbW92ZSBhc3QuX192ZXJzaW9uX18uIEFTVCBjaGFuZ2VzIGNhbiBiZSBhY2NvdW50ZWQgZm9yIGJ5Ci0gIGNoZWNraW5nIHN5cy52ZXJzaW9uX2luZm8gb3Igc3lzLl9tZXJjdXJpYWwuCi0KLS0gU2lsZW5jZSBzcHVyaW91cyAiYnJva2VuIHBpcGUiIHRyYWNlYmFja3Mgd2hlbiBzaHV0dGluZyBkb3duIGEKLSAgUHJvY2Vzc1Bvb2xFeGVjdXRvci4KLQotLSBGaXggcG90ZW50aWFsIHJlc291cmNlIGxlYWtzIGluIGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yCi0gIGJ5IGpvaW5pbmcgYWxsIHF1ZXVlcyBhbmQgcHJvY2Vzc2VzIHdoZW4gc2h1dGRvd24oKSBpcyBjYWxsZWQuCi0KLS0gSXNzdWUgIzExNjAzOiBGaXggYSBjcmFzaCB3aGVuIF9fc3RyX18gaXMgcmVib3VuZCBhcyBfX3JlcHJfXy4gIFBhdGNoIGJ5Ci0gIEFuZHJlYXMgU3TDvGhyay4KLQotLSBJc3N1ZSAjMTEzMjE6IEZpeCBhIGNyYXNoIHdpdGggbXVsdGlwbGUgaW1wb3J0cyBvZiB0aGUgX3BpY2tsZSBtb2R1bGUgd2hlbgotICBlbWJlZGRpbmcgUHl0aG9uLiAgUGF0Y2ggYnkgQW5kcmVhcyBTdMO8aHJrLgotCi0tIElzc3VlICM2NzU1OiBBZGQgZ2V0X3djaCgpIG1ldGhvZCB0byBjdXJzZXMud2luZG93IGNsYXNzLiBQYXRjaCBieSBJw7FpZ28KLSAgU2VybmEuCi0KLS0gQWRkIGNnaS5jbG9zZWxvZygpIGZ1bmN0aW9uIHRvIGNsb3NlIHRoZSBsb2cgZmlsZS4KLQotLSBJc3N1ZSAjMTI1MDI6IGFzeW5jb3JlOiBmaXggcG9sbGluZyBsb29wIHdpdGggQUZfVU5JWCBzb2NrZXRzLgotCi0tIElzc3VlICM0Mzc2OiBjdHlwZXMgbm93IHN1cHBvcnRzIG5lc3RlZCBzdHJ1Y3R1cmVzIGluIGEgZW5kaWFuIGRpZmZlcmVudCB0aGFuCi0gIHRoZSBwYXJlbnQgc3RydWN0dXJlLiBQYXRjaCBieSBWbGFkIFJpc2N1dGlhLgotCi0tIFJhaXNlIFZhbHVlRXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIHNldCB0aGUgX0NIVU5LX1NJWkUgYXR0cmlidXRlIG9mIGEKLSAgVGV4dElPV3JhcHBlciB0byBhIGh1Z2UgdmFsdWUsIG5vdCBUeXBlRXJyb3IuCi0KLS0gSXNzdWUgIzEyNTA0OiBDbG9zZSBmaWxlIGhhbmRsZXMgaW4gYSB0aW1lbHkgbWFubmVyIGluIHBhY2thZ2luZy5kYXRhYmFzZS4KLSAgVGhpcyBmaXhlcyBhIGJ1ZyB3aXRoIHRoZSByZW1vdmUgKHVuaW5zdGFsbCkgZmVhdHVyZSBvbiBXaW5kb3dzLgotCi0tIElzc3VlcyAjMTIxNjkgYW5kICMxMDUxMDogRmFjdG9yIG91dCBjb2RlIHVzZWQgYnkgdmFyaW91cyBwYWNrYWdpbmcgY29tbWFuZHMKLSAgdG8gbWFrZSBIVFRQIFBPU1QgcmVxdWVzdHMsIGFuZCBtYWtlIHN1cmUgaXQgdXNlcyBDUkxGLgotCi0tIElzc3VlICMxMjAxNjogTXVsdGlieXRlIENKSyBkZWNvZGVycyBub3cgcmVzeW5jaHJvbml6ZSBmYXN0ZXIuIFRoZXkgb25seQotICBpZ25vcmUgdGhlIGZpcnN0IGJ5dGUgb2YgYW4gaW52YWxpZCBieXRlIHNlcXVlbmNlLiBGb3IgZXhhbXBsZSwKLSAgYidceGZmXG4nLmRlY29kZSgnZ2IyMzEyJywgJ3JlcGxhY2UnKSBnaXZlcyAnXHVmZmZkXG4nIGluc3RlYWQgb2YgJ1x1ZmZmZCcuCi0KLS0gSXNzdWUgIzEyNDU5OiB0aW1lLnNsZWVwKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgdGhlIHNsZWVwIGxlbmd0aCBpcwotICBuZWdhdGl2ZSwgaW5zdGVhZCBvZiBhbiBpbmZpbml0ZSBzbGVlcCBvbiBXaW5kb3dzIG9yIHJhaXNpbmcgYW4gSU9FcnJvciBvbgotICBMaW51eCBmb3IgZXhhbXBsZSwgdG8gaGF2ZSB0aGUgc2FtZSBiZWhhdmlvdXIgb24gYWxsIHBsYXRmb3Jtcy4KLQotLSBJc3N1ZSAjMTI0NTE6IHB5ZG9jOiBodG1sX2dldGZpbGUoKSBub3cgdXNlcyB0b2tlbml6ZS5vcGVuKCkgdG8gc3VwcG9ydAotICBQeXRob24gc2NyaXB0cyB1c2luZyBhIGVuY29kaW5nIGRpZmZlcmVudCB0aGFuIFVURi04IChyZWFkIHRoZSBjb2RpbmcgY29va2llCi0gIG9mIHRoZSBzY3JpcHQpLgotCi0tIElzc3VlICMxMjQ5Mzogc3VicHJvY2VzczogUG9wZW4uY29tbXVuaWNhdGUoKSBub3cgYWxzbyBoYW5kbGVzIEVJTlRSIGVycm9ycwotICBpZiB0aGUgcHJvY2VzcyBoYXMgb25seSBvbmUgcGlwZS4KLQotLSBJc3N1ZSAjMTI0Njc6IHdhcm5pbmdzOiBmaXggYSByYWNlIGNvbmRpdGlvbiBpZiBhIHdhcm5pbmcgaXMgZW1pdHRlZCBhdAotICBzaHV0ZG93biwgaWYgZ2xvYmFscygpWydfX2ZpbGVfXyddIGlzIE5vbmUuCi0KLS0gSXNzdWUgIzEyNDUxOiBweWRvYzogaW1wb3J0ZmlsZSgpIG5vdyBvcGVucyB0aGUgUHl0aG9uIHNjcmlwdCBpbiBiaW5hcnkgbW9kZSwKLSAgaW5zdGVhZCBvZiB0ZXh0IG1vZGUgdXNpbmcgdGhlIGxvY2FsZSBlbmNvZGluZywgdG8gYXZvaWQgZW5jb2RpbmcgaXNzdWVzLgotCi0tIElzc3VlICMxMjQ1MTogcnVucHk6IHJ1bl9wYXRoKCkgbm93IG9wZW5zIHRoZSBQeXRob24gc2NyaXB0IGluIGJpbmFyeSBtb2RlLAotICBpbnN0ZWFkIG9mIHRleHQgbW9kZSB1c2luZyB0aGUgbG9jYWxlIGVuY29kaW5nLCB0byBzdXBwb3J0IG90aGVyIGVuY29kaW5ncwotICB0aGFuIFVURi04IChzY3JpcHRzIHVzaW5nIHRoZSBjb2RpbmcgY29va2llKS4KLQotLSBJc3N1ZSAjMTI0NTE6IHhtbC5kb20ucHVsbGRvbTogcGFyc2UoKSBub3cgb3BlbnMgZmlsZXMgaW4gYmluYXJ5IG1vZGUgaW5zdGVhZAotICBvZiB0aGUgdGV4dCBtb2RlICh1c2luZyB0aGUgbG9jYWxlIGVuY29kaW5nKSB0byBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCi0KLS0gSXNzdWUgIzEyMTQ3OiBBZGp1c3QgdGhlIG5ldy1pbi0zLjIgc210cGxpYi5zZW5kX21lc3NhZ2UgbWV0aG9kIGZvciBiZXR0ZXIKLSAgY29uZm9ybWFuY2UgdG8gdGhlIFJGQ3M6IGNvcnJlY3RseSBoYW5kbGUgU2VuZGVyIGFuZCBSZXNlbnQtIGhlYWRlcnMuCi0KLS0gSXNzdWUgIzEyMzUyOiBGaXggYSBkZWFkbG9jayBpbiBtdWx0aXByb2Nlc3NpbmcuSGVhcCB3aGVuIGEgYmxvY2sgaXMgZnJlZWQgYnkKLSAgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIHdoaWxlIHRoZSBIZWFwIGxvY2sgaXMgaGVsZC4KLQotLSBJc3N1ZSAjMTI0NjI6IHRpbWUuc2xlZXAoKSBub3cgaW1tZWRpYXRlbHkgY2FsbHMgdGhlIChQeXRob24pIHNpZ25hbCBoYW5kbGVyCi0gIGlmIGl0IGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLCBpbnN0ZWFkIG9mIGhhdmluZyB0byB3YWl0IHVudGlsIHRoZSBuZXh0Ci0gIGluc3RydWN0aW9uLgotCi0tIElzc3VlICMxMjQ0MjogbmV3IHNodXRpbC5kaXNrX3VzYWdlIGZ1bmN0aW9uLCBwcm92aWRpbmcgdG90YWwsIHVzZWQgYW5kIGZyZWUKLSAgZGlzayBzcGFjZSBzdGF0aXN0aWNzLgotCi0tIElzc3VlICMxMjQ1MTogVGhlIFhJbmNsdWRlIGRlZmF1bHQgbG9hZGVyIG9mIHhtbC5ldHJlZSBub3cgZGVjb2RlcyBmaWxlcyBmcm9tCi0gIFVURi04IGluc3RlYWQgb2YgdGhlIGxvY2FsZSBlbmNvZGluZyBpZiB0aGUgZW5jb2RpbmcgaXMgbm90IHNwZWNpZmllZC4gSXQgbm93Ci0gIGFsc28gb3BlbnMgWE1MIGZpbGVzIGZvciB0aGUgcGFyc2VyIGluIGJpbmFyeSBtb2RlIGluc3RlYWQgb2YgdGhlIHRleHQgbW9kZQotICB0byBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCi0KLS0gSXNzdWUgIzEyNDUxOiBkb2N0ZXN0LmRlYnVnX3NjcmlwdCgpIGRvZXNuJ3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUKLSAgYW55bW9yZSB0byBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCi0KLS0gSXNzdWUgIzEyNDUxOiBweWRvYy5zeW5vcHNpcygpIG5vdyByZWFkcyB0aGUgZW5jb2RpbmcgY29va2llIGlmIGF2YWlsYWJsZSwKLSAgdG8gcmVhZCB0aGUgUHl0aG9uIHNjcmlwdCBmcm9tIHRoZSByaWdodCBlbmNvZGluZy4KLQotLSBJc3N1ZSAjMTI0NTE6IGRpc3R1dGlscyBub3cgb3BlbnMgdGhlIHNldHVwIHNjcmlwdCBpbiBiaW5hcnkgbW9kZSB0byByZWFkIHRoZQotICBlbmNvZGluZyBjb29raWUsIGluc3RlYWQgb2Ygb3BlbmluZyBpdCBpbiBVVEYtOC4KLQotLSBJc3N1ZSAjOTUxNjogT24gTWFjIE9TIFgsIGNoYW5nZSBEaXN0dXRpbHMgdG8gbm8gbG9uZ2VyIGdsb2JhbGx5IGF0dGVtcHQgdG8KLSAgY2hlY2sgb3Igc2V0IHRoZSBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHRoZQotICBpbnRlcnByZXRlciBwcm9jZXNzLiAgVGhpcyBjb3VsZCBjYXVzZSBmYWlsdXJlcyBpbiBub24tRGlzdHV0aWxzIHN1YnByb2Nlc3NlcwotICBhbmQgd2FzIHVucmVsaWFibGUgc2luY2UgdGVzdHMgb3IgdXNlciBwcm9ncmFtcyBjb3VsZCBtb2RpZnkgdGhlIGludGVycHJldGVyCi0gIGVudmlyb25tZW50IGFmdGVyIERpc3R1dGlscyBzZXQgaXQuICBJbnN0ZWFkLCBoYXZlIERpc3R1dGlscyBzZXQgdGhlCi0gIGRlcGxveW1lbnQgdGFyZ2V0IG9ubHkgaW4gdGhlIGVudmlyb25tZW50IG9mIGVhY2ggYnVpbGQgc3VicHJvY2Vzcy4gIEl0IGlzCi0gIHN0aWxsIHBvc3NpYmxlIHRvIGdsb2JhbGx5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJ5IHNldHRpbmcKLSAgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGJlZm9yZSBsYXVuY2hpbmcgdGhlIGludGVycHJldGVyOyBpdHMgdmFsdWUgbXVzdCBiZQotICBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSBkZWZhdWx0IHZhbHVlLCB0aGUgdmFsdWUgd2l0aCB3aGljaCB0aGUgaW50ZXJwcmV0ZXIKLSAgd2FzIGJ1aWx0LiAgQWxzbywgaW1wbGVtZW50IHRoZSBzYW1lIGhhbmRsaW5nIGluIHBhY2thZ2luZy4KLQotLSBJc3N1ZSAjMTI0MjI6IEluIHRoZSBjb3B5IG1vZHVsZSwgZG9uJ3Qgc3RvcmUgb2JqZWN0cyB0aGF0IGFyZSB0aGVpciBvd24gY29weQotICBpbiB0aGUgbWVtbyBkaWN0LgotCi0tIElzc3VlICMxMjMwMzogQWRkIHNpZ3dhaXRpbmZvKCkgYW5kIHNpZ3RpbWVkd2FpdCgpIHRvIHRoZSBzaWduYWwgbW9kdWxlLgotCi0tIElzc3VlICMxMjQwNDogUmVtb3ZlIEM4OSBpbmNvbXBhdGlibGUgY29kZSBmcm9tIG1tYXAgbW9kdWxlLiBQYXRjaCBieSBBa2lyYQotICBLaXRhZGEuCi0KLS0gSXNzdWUgIzE4NzQ6IGVtYWlsIG5vdyBkZXRlY3RzIGFuZCByZXBvcnRzIGFzIGEgZGVmZWN0IHRoZSBwcmVzZW5jZSBvZgotICBhbnkgQ1RFIG90aGVyIHRoYW4gN2JpdCwgOGJpdCwgb3IgYmluYXJ5IG9uIGEgbXVsdGlwYXJ0LgotCi0tIElzc3VlICMxMjM4MzogRml4IHN1YnByb2Nlc3MgbW9kdWxlIHdpdGggZW52PXt9OiBkb24ndCBjb3B5IHRoZSBlbnZpcm9ubWVudAotICB2YXJpYWJsZXMsIHN0YXJ0IHdpdGggYW4gZW1wdHkgZW52aXJvbm1lbnQuCi0KLS0gSXNzdWUgIzExNjM3OiBGaXggc3VwcG9ydCBmb3IgaW1wb3J0aW5nIHBhY2thZ2luZyBzZXR1cCBob29rcyBmcm9tIHRoZQotICBwcm9qZWN0IGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjNjc3MTogTW92ZWQgdGhlIGN1cnNlcy53cmFwcGVyIGZ1bmN0aW9uIGZyb20gdGhlIHNpbmdsZS1mdW5jdGlvbgotICB3cmFwcGVyIG1vZHVsZSBpbnRvIF9faW5pdF9fLCBlbGltaW5hdGluZyB0aGUgbW9kdWxlLiAgU2luY2UgX19pbml0X18gd2FzCi0gIGFscmVhZHkgaW1wb3J0aW5nIHRoZSBmdW5jdGlvbiB0byBjdXJzZXMud3JhcHBlciwgdGhlcmUgaXMgbm8gQVBJIGNoYW5nZS4KLQotLSBJc3N1ZSAjMTE1ODQ6IGVtYWlsLmhlYWRlci5kZWNvZGVfaGVhZGVyIG5vIGxvbmdlciBmYWlscyBpZiB0aGUgaGVhZGVyCi0gIHBhc3NlZCB0byBpdCBpcyBhIEhlYWRlciBvYmplY3QsIGFuZCBIZWFkZXIvbWFrZV9oZWFkZXIgbm8gbG9uZ2VyIGZhaWwKLSAgaWYgZ2l2ZW4gYmluYXJ5IHVua25vd24tOGJpdCBpbnB1dC4KLQotLSBJc3N1ZSAjMTE3MDA6IG1haWxib3ggcHJveHkgb2JqZWN0IGNsb3NlIG1ldGhvZHMgY2FuIG5vdyBiZSBjYWxsZWQgbXVsdGlwbGUKLSAgdGltZXMgd2l0aG91dCBlcnJvci4KLQotLSBJc3N1ZSAjMTE3Njc6IENvcnJlY3QgZmlsZSBkZXNjcmlwdG9yIGxlYWsgaW4gbWFpbGJveCdzIF9fZ2V0aXRlbV9fIG1ldGhvZC4KLQotLSBJc3N1ZSAjMTIxMzM6IEFic3RyYWN0SFRUUEhhbmRsZXIuZG9fb3BlbigpIG9mIHVybGxpYi5yZXF1ZXN0IGNsb3NlcyB0aGUgSFRUUAotICBjb25uZWN0aW9uIGlmIGl0cyBnZXRyZXNwb25zZSgpIG1ldGhvZCBmYWlscyB3aXRoIGEgc29ja2V0IGVycm9yLiBQYXRjaAotICB3cml0dGVuIGJ5IEV6aW8gTWVsb3R0aS4KLQotLSBJc3N1ZSAjMTIyNDA6IEFsbG93IG11bHRpcGxlIHNldHVwIGhvb2tzIGluIHBhY2thZ2luZydzIHNldHVwLmNmZyBmaWxlcy4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpayBCcmF5LgotCi0tIElzc3VlICM5Mjg0OiBBbGxvdyBpbnNwZWN0LmZpbmRzb3VyY2UoKSB0byBmaW5kIHRoZSBzb3VyY2Ugb2YgZG9jdGVzdAotICBmdW5jdGlvbnMuCi0KLS0gSXNzdWUgIzExNTk1OiBGaXggYXNzb3J0ZWQgYnVncyBpbiBwYWNrYWdpbmcudXRpbC5jZmdfdG9fYXJncywgYQotICBjb21wYXRpYmlsaXR5IGhlbHBlciBmb3IgdGhlIGRpc3R1dGlscy1wYWNrYWdpbmcgdHJhbnNpdGlvbi4gIE9yaWdpbmFsIHBhdGNoCi0gIGJ5IEVyaWsgQnJheS4KLQotLSBJc3N1ZSAjMTIyODc6IEluIG9zc2F1ZGlvZGV2LCBjaGVjayB0aGF0IHRoZSBkZXZpY2UgaXNuJ3QgY2xvc2VkIGluIHNldmVyYWwKLSAgbWV0aG9kcy4KLQotLSBJc3N1ZSAjMTIwMDk6IEZpeGVkIHJlZ3Jlc3Npb24gaW4gbmV0cmMgZmlsZSBjb21tZW50IGhhbmRsaW5nLgotCi0tIElzc3VlICMxMjI0NjogV2FybiBhbmQgZmFpbCB3aGVuIHRyeWluZyB0byBpbnN0YWxsIGEgdGhpcmQtcGFydHkgcHJvamVjdCBmcm9tCi0gIGFuIHVuaW5zdGFsbGVkIFB5dGhvbiAoYnVpbHQgaW4gYSBzb3VyY2UgY2hlY2tvdXQpLiAgT3JpZ2luYWwgcGF0Y2ggYnkKLSAgVHNoZXBhbmcgTGVraG9ua2hvYmUuCi0KLS0gSXNzdWUgIzEwNjk0OiB6aXBmaWxlIG5vdyBpZ25vcmVzIGdhcmJhZ2UgYXQgdGhlIGVuZCBvZiBhIHppcGZpbGUuCi0KLS0gSXNzdWUgIzEyMjgzOiBGaXhlZCByZWdyZXNzaW9uIGluIHNtdHBsaWIgcXVvdGluZyBvZiBsZWFkaW5nIGRvdHMgaW4gREFUQS4KLQotLSBJc3N1ZSAjMTA0MjQ6IEFyZ3BhcnNlIG5vdyBpbmNsdWRlcyB0aGUgbmFtZXMgb2YgdGhlIG1pc3NpbmcgcmVxdWlyZWQKLSAgYXJndW1lbnRzIGluIHRoZSBtaXNzaW5nIGFyZ3VtZW50cyBlcnJvciBtZXNzYWdlLgotCi0tIElzc3VlICMxMjE2ODogU3lzTG9nSGFuZGxlciBub3cgYWxsb3dzIE5VTCB0ZXJtaW5hdGlvbiB0byBiZSBjb250cm9sbGVkIHVzaW5nCi0gIGEgbmV3ICdhcHBlbmRfbnVsJyBhdHRyaWJ1dGUgb24gdGhlIGhhbmRsZXIuCi0KLS0gSXNzdWUgIzExNTgzOiBTcGVlZCB1cCBvcy5wYXRoLmlzZGlyIG9uIFdpbmRvd3MgYnkgdXNpbmcgR2V0RmlsZUF0dHJpYnV0ZXMKLSAgaW5zdGVhZCBvZiBvcy5zdGF0LgotCi0tIElzc3VlICMxMjAyMTogTWFrZSBtbWFwJ3MgcmVhZCgpIG1ldGhvZCBhcmd1bWVudCBvcHRpb25hbC4gUGF0Y2ggYnkgUGV0cmkKLSAgTGVodGluZW4uCi0KLS0gSXNzdWUgIzkyMDU6IGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yIG5vdyBkZXRlY3RzIGtpbGxlZAotICBjaGlsZHJlbiBhbmQgcmFpc2VzIEJyb2tlblByb2Nlc3NQb29sIGluIHN1Y2ggYSBzaXR1YXRpb24uICBQcmV2aW91c2x5IGl0Ci0gIHdvdWxkIHJlbGlhYmx5IGZyZWV6ZS9kZWFkbG9jay4KLQotLSBJc3N1ZSAjMTIwNDA6IEV4cG9zZSBhIG5ldyBhdHRyaWJ1dGUgYGBzZW50aW5lbGBgIG9uIGluc3RhbmNlcyBvZgotICBgYG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzYGAuICBBbHNvLCBmaXggUHJvY2Vzcy5qb2luKCkgdG8gbm90IHVzZSBwb2xsaW5nCi0gIGFueW1vcmUsIHdoZW4gZ2l2ZW4gYSB0aW1lb3V0LgotCi0tIElzc3VlICMxMTg5MzogUmVtb3ZlIG9ic29sZXRlIGludGVybmFsIHdyYXBwZXIgY2xhc3MgYGBTU0xGYWtlRmlsZWBgIGluIHRoZQotICBzbXRwbGliIG1vZHVsZS4gIFBhdGNoIGJ5IENhdGFsaW4gSWFjb2IuCi0KLS0gSXNzdWUgIzEyMDgwOiBGaXggYSBEZWNpbWFsLnBvd2VyKCkgY2FzZSB0aGF0IHRvb2sgYW4gdW5yZWFzb25hYmx5IGxvbmcgdGltZQotICB0byBjb21wdXRlLgotCi0tIElzc3VlICMxMjIyMTogUmVtb3ZlIF9fdmVyc2lvbl9fIGF0dHJpYnV0ZXMgZnJvbSBweWV4cGF0LCBwaWNrbGUsIHRhcmZpbGUsCi0gIHB5ZG9jLCB0a2ludGVyLCBhbmQgeG1sLnBhcnNlcnMuZXhwYXQuIFRoaXMgd2VyZSB1c2VsZXNzIHZlcnNpb24gY29uc3RhbnRzCi0gIGxlZnQgb3ZlciBmcm9tIHRoZSBNZXJjdXJpYWwgdHJhbnNpdGlvbgotCi0tIE5hbWVkIHR1cGxlcyBub3cgd29yayBjb3JyZWN0bHkgd2l0aCB2YXJzKCkuCi0KLS0gSXNzdWUgIzEyMDg1OiBGaXggYW4gYXR0cmlidXRlIGVycm9yIGluIHN1YnByb2Nlc3MuUG9wZW4gZGVzdHJ1Y3RvciBpZiB0aGUKLSAgY29uc3RydWN0b3IgaGFzIGZhaWxlZCwgZS5nLiBiZWNhdXNlIG9mIGFuIHVuZGVjbGFyZWQga2V5d29yZCBhcmd1bWVudC4gUGF0Y2gKLSAgd3JpdHRlbiBieSBPbGVnIE9zaG15YW4uCi0KLS0gSXNzdWUgIzEyMDI4OiBNYWtlIHRocmVhZGluZy5fZ2V0X2lkZW50KCkgcHVibGljLCByZW5hbWUgaXQgdG8KLSAgdGhyZWFkaW5nLmdldF9pZGVudCgpIGFuZCBkb2N1bWVudCBpdC4gVGhpcyBmdW5jdGlvbiB3YXMgYWxyZWFkeSB1c2VkIHVzaW5nCi0gIF90aHJlYWQuZ2V0X2lkZW50KCkuCi0KLS0gSXNzdWUgIzEyMTcxOiBJbmNyZW1lbnRhbEVuY29kZXIucmVzZXQoKSBvZiBDSksgY29kZWNzIChtdWx0aWJ5dGVjb2RlYykgY2FsbHMKLSAgZW5jcmVzZXQoKSBpbnN0ZWFkIG9mIGRlY3Jlc2V0KCkuCi0KLS0gSXNzdWUgIzEyMjE4OiBSZW1vdmVkIHdzZ2lyZWYuZWdnLWluZm8uCi0KLS0gSXNzdWUgIzEyMTk2OiBBZGQgcGlwZTIoKSB0byB0aGUgb3MgbW9kdWxlLgotCi0tIElzc3VlICM5ODUwNjQ6IE1ha2UgcGxpc3RsaWIgbW9yZSByZXNpbGllbnQgdG8gZmF1bHR5IGlucHV0IHBsaXN0cy4KLSAgUGF0Y2ggYnkgTWhlciBNb3ZzaXN5YW4uCi0KLS0gSXNzdWUgIzE2MjU6IEJaMkZpbGUgYW5kIGJ6Mi5kZWNvbXByZXNzKCkgbm93IHN1cHBvcnQgbXVsdGktc3RyZWFtIGZpbGVzLgotICBJbml0aWFsIHBhdGNoIGJ5IE5pciBBaWRlcy4KLQotLSBJc3N1ZSAjMTIxNzU6IEJ1ZmZlcmVkUmVhZGVyLnJlYWQoLTEpIG5vdyBjYWxscyByYXcucmVhZGFsbCgpIGlmIGF2YWlsYWJsZS4KLQotLSBJc3N1ZSAjMTIxNzU6IEZpbGVJTy5yZWFkYWxsKCkgbm93IG9ubHkgcmVhZHMgdGhlIGZpbGUgcG9zaXRpb24gYW5kIHNpemUKLSAgb25jZS4KLQotLSBJc3N1ZSAjMTIxNzU6IFJhd0lPQmFzZS5yZWFkYWxsKCkgbm93IHJldHVybnMgTm9uZSBpZiByZWFkKCkgcmV0dXJucyBOb25lLgotCi0tIElzc3VlICMxMjE3NTogRmlsZUlPLnJlYWRhbGwoKSBub3cgcmFpc2VzIGEgVmFsdWVFcnJvciBpbnN0ZWFkIG9mIGFuIElPRXJyb3IKLSAgaWYgdGhlIGZpbGUgaXMgY2xvc2VkLgotCi0tIElzc3VlICMxMTEwOTogTmV3IHNlcnZpY2VfYWN0aW9uIG1ldGhvZCBmb3IgQmFzZVNlcnZlciwgdXNlZCBieSBGb3JraW5nTWl4aW4KLSAgY2xhc3MgZm9yIGNsZWFudXAuIEluaXRpYWwgUGF0Y2ggYnkgSnVzdGluIFdhcmtlbnRpbi4KLQotLSBJc3N1ZSAjMTIwNDU6IEF2b2lkIGR1cGxpY2F0ZSBleGVjdXRpb24gb2YgY29tbWFuZCBpbgotICBjdHlwZXMudXRpbC5fZ2V0X3NvbmFtZSgpLiAgUGF0Y2ggYnkgU2lqaW4gSm9zZXBoLgotCi0tIElzc3VlICMxMDgxODogUmVtb3ZlIHRoZSBUayBHVUkgYW5kIHRoZSBzZXJ2ZSgpIGZ1bmN0aW9uIG9mIHRoZSBweWRvYyBtb2R1bGUsCi0gIHB5ZG9jIC1nIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuMiBhbmQgaXQgaGFzIGEgbmV3IGVuaGFuY2VkIHdlYgotICBzZXJ2ZXIuCi0KLS0gSXNzdWUgIzE0NDE1MzA6IEluIGltYXBsaWIsIHJlYWQgdGhlIGRhdGEgaW4gb25lIGNodW5rIHRvIHNwZWVkIHVwIGxhcmdlCi0gIHJlYWRzIGFuZCBzaW1wbGlmeSBjb2RlLgotCi0tIElzc3VlICMxMjA3MDogRml4IHRoZSBNYWtlZmlsZSBwYXJzZXIgb2YgdGhlIHN5c2NvbmZpZyBtb2R1bGUgdG8gaGFuZGxlCi0gIGNvcnJlY3RseSByZWZlcmVuY2VzIHRvICJib2d1cyB2YXJpYWJsZSIgKGUuZy4gInByZWZpeD0kL29wdC9weXRob24iKS4KLQotLSBJc3N1ZSAjMTIxMDA6IERvbid0IHJlc2V0IGluY3JlbWVudGFsIGVuY29kZXJzIG9mIENKSyBjb2RlY3MgYXQgZWFjaCBjYWxsIHRvCi0gIHRoZWlyIGVuY29kZSgpIG1ldGhvZCBhbnltb3JlLCBidXQgY29udGludWUgdG8gY2FsbCB0aGUgcmVzZXQoKSBtZXRob2QgaWYgdGhlCi0gIGZpbmFsIGFyZ3VtZW50IGlzIFRydWUuCi0KLS0gSXNzdWUgIzEyMDQ5OiBBZGQgUkFORF9ieXRlcygpIGFuZCBSQU5EX3BzZXVkb19ieXRlcygpIGZ1bmN0aW9ucyB0byB0aGUgc3NsCi0gIG1vZHVsZS4KLQotLSBJc3N1ZSAjNjUwMTogb3MuZGV2aWNlX2VuY29kaW5nKCkgcmV0dXJucyBOb25lIG9uIFdpbmRvd3MgaWYgdGhlIGFwcGxpY2F0aW9uCi0gIGhhcyBubyBjb25zb2xlLgotCi0tIElzc3VlICMxMjEwNTogQWRkIE9fQ0xPRVhFQyB0byB0aGUgb3MgbW9kdWxlLgotCi0tIElzc3VlICMxMjA3OTogRGVjaW1hbCgnSW5maW5pdHknKS5mbWEoRGVjaW1hbCgnMCcpLCAoMy45MTIyNDMxODEyNjc4NmUrMTkrMGopKQotICBub3cgcmFpc2VzIFR5cGVFcnJvciAocmVmbGVjdGluZyB0aGUgaW52YWxpZCB0eXBlIG9mIHRoZSAzcmQgYXJndW1lbnQpIHJhdGhlcgotICB0aGFuIERlY2ltYWwuSW52YWxpZE9wZXJhdGlvbi4KLQotLSBJc3N1ZSAjMTIxMjQ6IHppcGltcG9ydCBkb2Vzbid0IGtlZXAgYSByZWZlcmVuY2UgdG8gemxpYi5kZWNvbXByZXNzKCkgYW55bW9yZQotICB0byBiZSBhYmxlIHRvIHVubG9hZCB0aGUgbW9kdWxlLgotCi0tIEFkZCB0aGUgcGFja2FnaW5nIG1vZHVsZSwgYW4gaW1wcm92ZWQgZm9yayBvZiBkaXN0dXRpbHMgKGFsc28ga25vd24gYXMKLSAgZGlzdHV0aWxzMikuCi0KLS0gSXNzdWUgIzEyMDY1OiBjb25uZWN0X2V4KCkgb24gYW4gU1NMIHNvY2tldCBub3cgcmV0dXJucyB0aGUgb3JpZ2luYWwgZXJybm8KLSAgd2hlbiB0aGUgc29ja2V0J3MgdGltZW91dCBleHBpcmVzIChpdCB1c2VkIHRvIHJldHVybiBOb25lKS4KLQotLSBJc3N1ZSAjODgwOTogVGhlIFNNVFBfU1NMIGNvbnN0cnVjdG9yIGFuZCBTTVRQLnN0YXJ0dGxzKCkgbm93IHN1cHBvcnQKLSAgcGFzc2luZyBhIGBgY29udGV4dGBgIGFyZ3VtZW50IHBvaW50aW5nIHRvIGFuIHNzbC5TU0xDb250ZXh0IGluc3RhbmNlLgotICBQYXRjaCBieSBLYXN1biBIZXJhdGguCi0KLS0gSXNzdWUgIzk1MTY6IElzc3VlICM5NTE2OiBhdm9pZCBlcnJvcnMgaW4gc3lzY29uZmlnIHdoZW4gTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCi0gIGlzIHNldCBpbiBzaGVsbC4KLQotLSBJc3N1ZSAjODY1MDogTWFrZSB6bGliIG1vZHVsZSA2NC1iaXQgY2xlYW4uIGNvbXByZXNzKCksIGRlY29tcHJlc3MoKSBhbmQKLSAgdGhlaXIgaW5jcmVtZW50YWwgY291bnRlcnBhcnRzIG5vdyByYWlzZSBPdmVyZmxvd0Vycm9yIGlmIGdpdmVuIGFuIGlucHV0Ci0gIGxhcmdlciB0aGFuIDRHQiwgaW5zdGVhZCBvZiBzaWxlbnRseSB0cnVuY2F0aW5nIHRoZSBpbnB1dCBhbmQgcmV0dXJuaW5nCi0gIGFuIGluY29ycmVjdCByZXN1bHQuCi0KLS0gSXNzdWUgIzEyMDUwOiB6bGliLmRlY29tcHJlc3NvYmooKS5kZWNvbXByZXNzKCkgbm93IGNsZWFycyB0aGUgdW5jb25zdW1lZF90YWlsCi0gIGF0dHJpYnV0ZSB3aGVuIGNhbGxlZCB3aXRob3V0IGEgbWF4X2xlbmd0aCBhcmd1bWVudC4KLQotLSBJc3N1ZSAjMTIwNjI6IEZpeCBhIGZsdXNoaW5nIGJ1ZyB3aGVuIGRvaW5nIGEgY2VydGFpbiB0eXBlIG9mIEkvTyBzZXF1ZW5jZQotICBvbiBhIGZpbGUgb3BlbmVkIGluIHJlYWQrd3JpdGUgbW9kZSAobmFtZWx5OiByZWFkaW5nLCBzZWVraW5nIGEgYml0IGZvcndhcmQsCi0gIHdyaXRpbmcsIHRoZW4gc2Vla2luZyBiZWZvcmUgdGhlIHByZXZpb3VzIHdyaXRlIGJ1dCBzdGlsbCB3aXRoaW4gYnVmZmVyZWQKLSAgZGF0YSwgYW5kIHdyaXRpbmcgYWdhaW4pLgotCi0tIElzc3VlICM5OTcxOiBXcml0ZSBhbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2YgQnVmZmVyZWRSZWFkZXIucmVhZGludG8oKS4KLSAgUGF0Y2ggYnkgSm9obiBPJ0Nvbm5vci4KLQotLSBJc3N1ZSAjMTE3OTk6IHVybGxpYi5yZXF1ZXN0IEF1dGhlbnRpY2F0aW9uIEhhbmRsZXJzIHdpbGwgcmFpc2UgYSBWYWx1ZUVycm9yCi0gIHdoZW4gcHJlc2VudGVkIHdpdGggYW4gdW5zdXBwb3J0ZWQgQXV0aGVudGljYXRpb24gU2NoZW1lLiBQYXRjaCBjb250cmlidXRlZAotICBieSBZdXZhbCBHcmVlbmZpZWxkLgotCi0tIElzc3VlICMxMDQxOSwgIzYwMTE6IGJ1aWxkX3NjcmlwdHMgY29tbWFuZCBvZiBkaXN0dXRpbHMgaGFuZGxlcyBjb3JyZWN0bHkKLSAgbm9uLUFTQ0lJIHBhdGggKHBhdGggdG8gdGhlIFB5dGhvbiBleGVjdXRhYmxlKS4gT3BlbiBhbmQgd3JpdGUgdGhlIHNjcmlwdCBpbgotICBiaW5hcnkgbW9kZSwgYnV0IGVuc3VyZSB0aGF0IHRoZSBzaGViYW5nIGlzIGRlY29kYWJsZSBmcm9tIFVURi04IGFuZCBmcm9tIHRoZQotICBlbmNvZGluZyBvZiB0aGUgc2NyaXB0LgotCi0tIElzc3VlICM4NDk4OiBJbiBzb2NrZXQuYWNjZXB0KCksIGFsbG93IHRvIHNwZWNpZnkgMCBhcyBhIGJhY2tsb2cgdmFsdWUgaW4KLSAgb3JkZXIgdG8gYWNjZXB0IGV4YWN0bHkgb25lIGNvbm5lY3Rpb24uICBQYXRjaCBieSBEYW5pZWwgRXZlcnMuCi0KLS0gSXNzdWUgIzEyMDExOiBzaWduYWwuc2lnbmFsKCkgYW5kIHNpZ25hbC5zaWdpbnRlcnJ1cHQoKSByYWlzZSBhbiBPU0Vycm9yLAotICBpbnN0ZWFkIG9mIGEgUnVudGltZUVycm9yOiBPU0Vycm9yIGhhcyBhbiBlcnJubyBhdHRyaWJ1dGUuCi0KLS0gSXNzdWUgIzM3MDk6IGFkZCBhIGZsdXNoX2hlYWRlcnMgbWV0aG9kIHRvIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIsIHdoaWNoCi0gIG1hbmFnZXMgdGhlIHNlbmRpbmcgb2YgaGVhZGVycyB0byBvdXRwdXQgc3RyZWFtIGFuZCBmbHVzaGluZyB0aGUgaW50ZXJuYWwKLSAgaGVhZGVycyBidWZmZXIuIFBhdGNoIGNvbnRyaWJ1dGlvbiBieSBBbmRyZXcgU2NoYWFmCi0KLS0gSXNzdWUgIzExNzQzOiBSZXdyaXRlIG11bHRpcHJvY2Vzc2luZyBjb25uZWN0aW9uIGNsYXNzZXMgaW4gcHVyZSBQeXRob24uCi0KLS0gSXNzdWUgIzExMTY0OiBTdG9wIHRyeWluZyB0byB1c2UgX3htbHBsdXMgaW4gdGhlIHhtbCBtb2R1bGUuCi0KLS0gSXNzdWUgIzExODg4OiBBZGQgbG9nMiBmdW5jdGlvbiB0byBtYXRoIG1vZHVsZS4gUGF0Y2ggd3JpdHRlbiBieSBNYXJrCi0gIERpY2tpbnNvbi4KLQotLSBJc3N1ZSAjMTIwMTI6IHNzbC5QUk9UT0NPTF9TU0x2MiBiZWNvbWVzIG9wdGlvbmFsLgotCi0tIElzc3VlICM4NDA3OiBUaGUgc2lnbmFsIGhhbmRsZXIgd3JpdGVzIHRoZSBzaWduYWwgbnVtYmVyIGFzIGEgc2luZ2xlIGJ5dGUKLSAgaW5zdGVhZCBvZiBhIG51bCBieXRlIGludG8gdGhlIHdha2V1cCBmaWxlIGRlc2NyaXB0b3IuIFNvIGl0IGlzIHBvc3NpYmxlIHRvCi0gIHdhaXQgbW9yZSB0aGFuIG9uZSBzaWduYWwgYW5kIGtub3cgd2hpY2ggc2lnbmFscyB3ZXJlIHJhaXNlZC4KLQotLSBJc3N1ZSAjODQwNzogQWRkIHB0aHJlYWRfa2lsbCgpLCBzaWdwZW5kaW5nKCkgYW5kIHNpZ3dhaXQoKSBmdW5jdGlvbnMgdG8gdGhlCi0gIHNpZ25hbCBtb2R1bGUuCi0KLS0gSXNzdWUgIzExOTI3OiBTTVRQX1NTTCBub3cgdXNlcyBwb3J0IDQ2NSBieSBkZWZhdWx0IGFzIGRvY3VtZW50ZWQuICBQYXRjaAotICBieSBLYXN1biBIZXJhdGguCi0KLS0gSXNzdWUgIzEyMDAyOiBmdHBsaWIncyBhYm9ydCgpIG1ldGhvZCByYWlzZXMgVHlwZUVycm9yLgotCi0tIElzc3VlICMxMTkxNjogQWRkIGEgbnVtYmVyIG9mIE1hY09TWCBzcGVjaWZpYyBkZWZpbml0aW9ucyB0byB0aGUgZXJybm8gbW9kdWxlLgotICBQYXRjaCBieSBQaWVycmUgQ2Fycmllci4KLQotLSBJc3N1ZSAjMTE5OTk6IGZpeGVkIHNwb3JhZGljIHN5bmMgZmFpbHVyZSBtYWlsYm94Lk1haWxkaXIgZHVlIHRvIGl0cyB0cnlpbmcgdG8KLSAgZGV0ZWN0IG10aW1lIGNoYW5nZXMgYnkgY29tcGFyaW5nIHRvIHRoZSBzeXN0ZW0gY2xvY2sgaW5zdGVhZCBvZiB0byB0aGUKLSAgcHJldmlvdXMgdmFsdWUgb2YgdGhlIG10aW1lLgotCi0tIElzc3VlICMxMTA3MjogYWRkZWQgTUxTRCBjb21tYW5kIChSRkMtMzY1OSkgc3VwcG9ydCB0byBmdHBsaWIuCi0KLS0gSXNzdWUgIzg4MDg6IFRoZSBJTUFQNF9TU0wgY29uc3RydWN0b3Igbm93IGFsbG93cyBwYXNzaW5nIGFuIFNTTENvbnRleHQKLSAgcGFyYW1ldGVyIHRvIGNvbnRyb2wgcGFyYW1ldGVycyBvZiB0aGUgc2VjdXJlIGNoYW5uZWwuICBQYXRjaCBieSBTaWppbgotICBKb3NlcGguCi0KLS0gbnRwYXRoLnNhbWVmaWxlIGZhaWxlZCB0byBub3RpY2UgdGhhdCAiYS50eHQiIGFuZCAiQS5UWFQiIHJlZmVyIHRvIHRoZSBzYW1lCi0gIGZpbGUgb24gV2luZG93cyBYUC4gQXMgbm90aWNlZCBpbiBpc3N1ZSAjMTA2ODQuCi0KLS0gSXNzdWUgIzEyMDAwOiBXaGVuIGEgU1NMIGNlcnRpZmljYXRlIGhhcyBhIHN1YmplY3RBbHROYW1lIHdpdGhvdXQgYW55Ci0gIGROU05hbWUgZW50cnksIHNzbC5tYXRjaF9ob3N0bmFtZSgpIHNob3VsZCB1c2UgdGhlIHN1YmplY3QncyBjb21tb25OYW1lLgotICBQYXRjaCBieSBOaWNvbGFzIEJhcmVpbC4KLQotLSBJc3N1ZSAjMTA3NzU6IGFzc2VydFJhaXNlcywgYXNzZXJ0UmFpc2VzUmVnZXgsIGFzc2VydFdhcm5zLCBhbmQKLSAgYXNzZXJ0V2FybnNSZWdleCBub3cgYWNjZXB0IGEga2V5d29yZCBhcmd1bWVudCAnbXNnJyB3aGVuIHVzZWQgYXMgY29udGV4dAotICBtYW5hZ2Vycy4gIEluaXRpYWwgcGF0Y2ggYnkgV2luc3RvbiBFd2VydC4KLQotLSBJc3N1ZSAjMTA2ODQ6IHNodXRpbC5tb3ZlIHVzZWQgdG8gZGVsZXRlIGEgZm9sZGVyIG9uIGNhc2UgaW5zZW5zaXRpdmUKLSAgZmlsZXN5c3RlbXMgd2hlbiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBuYW1lIHdoZXJlIHRoZSBzYW1lIGV4Y2VwdAotICBmb3IgdGhlIGNhc2UuCi0KLS0gSXNzdWUgIzExNjQ3OiBvYmplY3RzIGNyZWF0ZWQgdXNpbmcgY29udGV4dGxpYi5jb250ZXh0bWFuYWdlciBub3cgc3VwcG9ydAotICBtb3JlIHRoYW4gb25lIGNhbGwgdG8gdGhlIGZ1bmN0aW9uIHdoZW4gdXNlZCBhcyBhIGRlY29yYXRvci4gSW5pdGlhbCBwYXRjaAotICBieSBZc2ogUmF5LgotCi0tIElzc3VlICMxMTkzMDogUmVtb3ZlZCBkZXByZWNhdGVkIHRpbWUuYWNjZXB0MmR5ZWFyIHZhcmlhYmxlLgotICBSZW1vdmVkIHllYXIgPj0gMTAwMCByZXN0cmljdGlvbiBmcm9tIGRhdGV0aW1lLnN0cmZ0aW1lLgotCi0tIGxvZ2dpbmc6IGRvbid0IGRlZmluZSBRdWV1ZUxpc3RlbmVyIGlmIFB5dGhvbiBoYXMgbm8gdGhyZWFkIHN1cHBvcnQuCi0KLS0gZnVuY3Rvb2xzLmNtcF90b19rZXkoKSBub3cgd29ya3Mgd2l0aCBjb2xsZWN0aW9ucy5IYXNoYWJsZSgpLgotCi0tIElzc3VlICMxMTI3NzogbW1hcC5tbWFwKCkgY2FsbHMgZmNudGwoZmQsIEZfRlVMTEZTWU5DKSBvbiBNYWMgT1MgWCB0byBnZXQKLSAgYXJvdW5kIGEgbW1hcCBidWcgd2l0aCBzcGFyc2UgZmlsZXMuIFBhdGNoIHdyaXR0ZW4gYnkgU3RlZmZlbiBEYW9kZSBOdXJwbWVzby4KLQotLSBJc3N1ZSAjODQwNzogQWRkIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soKSBmdW5jdGlvbiB0byBmZXRjaCBhbmQvb3IgY2hhbmdlIHRoZQotICBzaWduYWwgbWFzayBvZiB0aGUgY2FsbGluZyB0aHJlYWQuCi0KLS0gSXNzdWUgIzExODU4OiBjb25maWdwYXJzZXIuRXh0ZW5kZWRJbnRlcnBvbGF0aW9uIGV4cGVjdGVkIGxvd2VyLWNhc2Ugc2VjdGlvbgotICBuYW1lcy4KLQotLSBJc3N1ZSAjMTEzMjQ6IENvbmZpZ1BhcnNlcihpbnRlcnBvbGF0aW9uPU5vbmUpIG5vdyB3b3JrcyBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzExODExOiBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgpIGlzIG5vdyBJUHY2LWNvbXBhdGlibGUuICBQYXRjaAotICBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzExNzYzOiBkb24ndCB1c2UgZGlmZmxpYiBpbiBUZXN0Q2FzZS5hc3NlcnRNdWx0aUxpbmVFcXVhbCBpZiB0aGUKLSAgc3RyaW5ncyBhcmUgdG9vIGxvbmcuCi0KLS0gSXNzdWUgIzExMjM2OiBnZXRwYXNzLmdldHBhc3MgcmVzcG9uZHMgdG8gY3RybC1jIG9yIGN0cmwteiBvbiB0ZXJtaW5hbC4KLQotLSBJc3N1ZSAjMTE4NTY6IFNwZWVkIHVwIHBhcnNpbmcgb2YgSlNPTiBudW1iZXJzLgotCi0tIElzc3VlICMxMTAwNTogdGhyZWFkaW5nLlJMb2NrKCkuX3JlbGVhc2Vfc2F2ZSgpIHJhaXNlcyBhIFJ1bnRpbWVFcnJvciBpZiB0aGUKLSAgbG9jayB3YXMgbm90IGFjcXVpcmVkLgotCi0tIElzc3VlICMxMTI1ODogU3BlZWQgdXAgY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5KCkgdW5kZXIgTGludXggYnkgYSBmYWN0b3IKLSAgb2YgNSB0byAxMC4gIEluaXRpYWwgcGF0Y2ggYnkgSm9uYXMgSC4KLQotLSBJc3N1ZSAjMTEzODI6IFRyaXZpYWwgc3lzdGVtIGNhbGxzLCBzdWNoIGFzIGR1cCgpIG9yIHBpcGUoKSwgbmVlZG4ndAotICByZWxlYXNlIHRoZSBHSUwuICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzExMjIzOiBBZGQgdGhyZWFkaW5nLl9pbmZvKCkgZnVuY3Rpb24gcHJvdmlkaW5nIGluZm9ybWF0aW9ucyBhYm91dAotICB0aGUgdGhyZWFkIGltcGxlbWVudGF0aW9uLgotCi0tIElzc3VlICMxMTczMTogc2ltcGxpZnkvZW5oYW5jZSBlbWFpbCBwYXJzZXIvZ2VuZXJhdG9yIEFQSSBieSBpbnRyb2R1Y2luZwotICBwb2xpY3kgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTE3Njg6IFRoZSBzaWduYWwgaGFuZGxlciBvZiB0aGUgc2lnbmFsIG1vZHVsZSBvbmx5IGNhbGxzCi0gIFB5X0FkZFBlbmRpbmdDYWxsKCkgZm9yIHRoZSBmaXJzdCBzaWduYWwgdG8gZml4IGEgZGVhZGxvY2sgb24gcmVlbnRyYW50IG9yCi0gIHBhcmFsbGVsIGNhbGxzLiBQeUVycl9TZXRJbnRlcnJ1cHQoKSB3cml0ZXMgYWxzbyBpbnRvIHRoZSB3YWtlIHVwIGZpbGUuCi0KLS0gSXNzdWUgIzExNDkyOiBmaXggc2V2ZXJhbCBpc3N1ZXMgd2l0aCBoZWFkZXIgZm9sZGluZyBpbiB0aGUgZW1haWwgcGFja2FnZS4KLQotLSBJc3N1ZSAjMTE4NTI6IEFkZCBtaXNzaW5nIGltcG9ydHMgYW5kIHVwZGF0ZSB0ZXN0cy4KLQotLSBJc3N1ZSAjMTE4NzU6IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0J3MgX19yZWR1Y2VfXyB3YXMgdGVtcG9yYXJpbHkKLSAgbXV0YXRpbmcgdGhlIG9iamVjdCBpbnN0ZWFkIG9mIGp1c3Qgd29ya2luZyBvbiBhIGNvcHkuCi0KLS0gSXNzdWUgIzExNDY3OiBGaXggdXJscGFyc2UgYmVoYXZpb3Igd2hlbiBoYW5kbGluZyB1cmxzIHdoaWNoIGNvbnRhaW5zIHNjaGVtZQotICBzcGVjaWZpYyBwYXJ0IG9ubHkgZGlnaXRzLiBQYXRjaCBieSBTYW50b3NvIFdpamF5YS4KLQotLSBjb2xsZWN0aW9ucy5Db3VudGVyKCkuY29weSgpIG5vdyB3b3JrcyBjb3JyZWN0bHkgZm9yIHN1YmNsYXNzZXMuCi0KLS0gSXNzdWUgIzExNDc0OiBGaXggdGhlIGJ1ZyB3aXRoIHVybDJwYXRobmFtZSgpIGhhbmRsaW5nIG9mICcvQ3wvJyBvbiBXaW5kb3dzLgotICBQYXRjaCBieSBTYW50b3NvIFdpamF5YS4KLQotLSBJc3N1ZSAjMTE2ODQ6IGNvbXBsZXRlIGVtYWlsLnBhcnNlciBieXRlcyBBUEkgYnkgYWRkaW5nIEJ5dGVzSGVhZGVyUGFyc2VyLgotCi0tIFRoZSBiejIgbW9kdWxlIG5vdyBoYW5kbGVzIDRHaUIrIGlucHV0IGJ1ZmZlcnMgY29ycmVjdGx5LgotCi0tIElzc3VlICM5MjMzOiBGaXgganNvbi5sb2Fkcygne30nKSB0byByZXR1cm4gYSBkaWN0IChpbnN0ZWFkIG9mIGEgbGlzdCksIHdoZW4KLSAgX2pzb24gaXMgbm90IGF2YWlsYWJsZS4KLQotLSBJc3N1ZSAjMTE4MzA6IFJlbW92ZSB1bm5lY2Vzc2FyeSBpbnRyb3NwZWN0aW9uIGNvZGUgaW4gdGhlIGRlY2ltYWwgbW9kdWxlLgotCi0tIElzc3VlICMxMTcwMzogdXJsbGliMi5nZXR1cmwoKSBkb2VzIG5vdCByZXR1cm4gY29ycmVjdCB1cmwgd2hlbiB0aGUgb3JpZ2luYWwKLSAgdXJsIGNvbnRhaW5zICNmcmFnbWVudC4KLQotLSBJc3N1ZSAjMTAwMTk6IEZpeGVkIHJlZ3Jlc3Npb24gaW4ganNvbiBtb2R1bGUgd2hlcmUgYW4gaW5kZW50IG9mIDAgc3RvcHBlZAotICBhZGRpbmcgbmV3bGluZXMgYW5kIGFjdGVkIGluc3RlYWQgbGlrZSAnTm9uZScuCi0KLS0gSXNzdWUgIzExMTg2OiBweWRvYyBpZ25vcmVzIGEgbW9kdWxlIGlmIGl0cyBuYW1lIGNvbnRhaW5zIGEgc3Vycm9nYXRlCi0gIGNoYXJhY3RlciBpbiB0aGUgaW5kZXggb2YgbW9kdWxlcy4KLQotLSBJc3N1ZSAjMTE4MTU6IFVzZSBhIGxpZ2h0LXdlaWdodCBTaW1wbGVRdWV1ZSBmb3IgdGhlIHJlc3VsdCBxdWV1ZSBpbgotICBjb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvci4KLQotLSBJc3N1ZSAjNTE2MjogVHJlYXQgc2VydmljZXMgbGlrZSBmcm96ZW4gZXhlY3V0YWJsZXMgdG8gYWxsb3cgY2hpbGQgc3Bhd25pbmcKLSAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuZm9ya2luZyBvbiBXaW5kb3dzLgotCi0tIGxvZ2dpbmcuYmFzaWNDb25maWcgbm93IHN1cHBvcnRzIGFuIG9wdGlvbmFsICdoYW5kbGVycycgYXJndW1lbnQgdGFraW5nIGFuCi0gIGl0ZXJhYmxlIG9mIGhhbmRsZXJzIHRvIGJlIGFkZGVkIHRvIHRoZSByb290IGxvZ2dlci4gQWRkaXRpb25hbCBwYXJhbWV0ZXIKLSAgY2hlY2tzIHdlcmUgYWxzbyBhZGRlZCB0byBiYXNpY0NvbmZpZy4KLQotLSBJc3N1ZSAjMTE4MTQ6IEZpeCBsaWtlbHkgdHlwbyBpbiBtdWx0aXByb2Nlc3NpbmcuUG9vbC5fdGVybWluYXRlKCkuCi0KLS0gSXNzdWUgIzExNzQ3OiBGaXggcmFuZ2UgZm9ybWF0dGluZyBpbiBkaWZmbGliLmNvbnRleHRfZGlmZigpIGFuZAotICBkaWZmbGliLnVuaWZpZWRfZGlmZigpLgotCi0tIElzc3VlICM4NDI4OiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiBtdWx0aXByb2Nlc3NpbmcuUG9vbCB3aGVuIHRlcm1pbmF0aW5nCi0gIHdvcmtlciBwcm9jZXNzZXM6IG5ldyBwcm9jZXNzZXMgd291bGQgYmUgc3Bhd25lZCB3aGlsZSB0aGUgcG9vbCBpcyBiZWluZwotICBzaHV0IGRvd24uICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzI2NTA6IHJlLmVzY2FwZSgpIG5vIGxvbmdlciBlc2NhcGVzIHRoZSAnXycuCi0KLS0gSXNzdWUgIzExNzU3OiBzZWxlY3Quc2VsZWN0KCkgbm93IHJhaXNlcyBWYWx1ZUVycm9yIHdoZW4gYSBuZWdhdGl2ZSB0aW1lb3V0Ci0gIGlzIHBhc3NlZCAocHJldmlvdXNseSwgYSBzZWxlY3QuZXJyb3Igd2l0aCBFSU5WQUwgd291bGQgYmUgcmFpc2VkKS4gIFBhdGNoCi0gIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjNzMxMTogZml4IGh0bWwucGFyc2VyIHRvIGFjY2VwdCBub24tQVNDSUkgYXR0cmlidXRlIHZhbHVlcy4KLQotLSBJc3N1ZSAjMTE2MDU6IGVtYWlsLnBhcnNlci5CeXRlc0ZlZWRQYXJzZXIgd2FzIGluY29ycmVjdGx5IGNvbnZlcnRpbmcKLSAgbXVsdGlwYXJ0IHN1YnBhcnRzIHdpdGggYW4gOC1iaXQgQ1RFIGludG8gdW5pY29kZSBpbnN0ZWFkIG9mIHByZXNlcnZpbmcgdGhlCi0gIGJ5dGVzLgotCi0tIElzc3VlICMxNjkwNjA4OiBlbWFpbC51dGlsLmZvcm1hdGFkZHIgaXMgbm93IFJGQyAyMDQ3IGF3YXJlOiBpdCBub3cgaGFzIGEKLSAgY2hhcnNldCBwYXJhbWV0ZXIgdGhhdCBkZWZhdWx0cyB0byB1dGYtOCBhbmQgaXMgdXNlZCBhcyB0aGUgY2hhcnNldCBmb3IgUkZDCi0gIDIwNDcgZW5jb2Rpbmcgd2hlbiB0aGUgcmVhbG5hbWUgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCi0KLS0gSXNzdWUgIzEwOTYzOiBFbnN1cmUgdGhhdCBzdWJwcm9jZXNzLmNvbW11bmljYXRlKCkgbmV2ZXIgcmFpc2VzIEVQSVBFLgotCi0tIElzc3VlICMxMDc5MTogSW1wbGVtZW50IG1pc3NpbmcgbWV0aG9kIEd6aXBGaWxlLnJlYWQxKCksIGFsbG93aW5nIEd6aXBGaWxlCi0gIHRvIGJlIHdyYXBwZWQgaW4gYSBUZXh0SU9XcmFwcGVyLiAgUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgotCi0tIElzc3VlICMxMTcwNzogQWRkZWQgYSBmYXN0IEMgdmVyc2lvbiBvZiBmdW5jdG9vbHMuY21wX3RvX2tleSgpLgotICBQYXRjaCBieSBGaWxpcCBHcnVzemN6ecWEc2tpLgotCi0tIElzc3VlICMxMTY4ODogQWRkIHNxbGl0ZTMuQ29ubmVjdGlvbi5zZXRfdHJhY2VfY2FsbGJhY2soKS4gIFBhdGNoIGJ5Ci0gIFRvcnN0ZW4gTGFuZHNjaG9mZi4KLQotLSBJc3N1ZSAjMTE3NDY6IEZpeCBTU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbigpIHRvIGFjY2VwdCBlbGxpcHRpYyBjdXJ2ZQotICBwcml2YXRlIGtleXMuCi0KLS0gSXNzdWUgIzU4NjM6IFJld3JpdGUgQloyRmlsZSBpbiBwdXJlIFB5dGhvbiwgYW5kIGFsbG93IGl0IHRvIGFjY2VwdAotICBmaWxlLWxpa2Ugb2JqZWN0cyB1c2luZyBhIG5ldyBgYGZpbGVvYmpgYCBjb25zdHJ1Y3RvciBhcmd1bWVudC4gIFBhdGNoIGJ5Ci0gIE5hZGVlbSBWYXdkYS4KLQotLSB1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRTYW1lRWxlbWVudHMgaGFzIGJlZW4gcmVtb3ZlZC4KLQotLSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgcmFpc2VzIGEgUnVudGltZUVycm9yIGlmIGluaXRmc2VuY29kaW5nKCkgd2FzIG5vdAotICBjYWxsZWQgeWV0OiBkZXRlY3QgYm9vdHN0cmFwIChzdGFydHVwKSBpc3N1ZXMgZWFybGllci4KLQotLSBJc3N1ZSAjMTEzOTM6IEFkZCB0aGUgbmV3IGZhdWx0aGFuZGxlciBtb2R1bGUuCi0KLS0gSXNzdWUgIzExNjE4OiBGaXggdGhlIHRpbWVvdXQgbG9naWMgaW4gdGhyZWFkaW5nLkxvY2suYWNxdWlyZSgpIHVuZGVyIFdpbmRvd3MuCi0KLS0gUmVtb3ZlZCB0aGUgJ3N0cmljdCcgYXJndW1lbnQgdG8gZW1haWwucGFyc2VyLlBhcnNlciwgd2hpY2ggaGFzIGJlZW4KLSAgZGVwcmVjYXRlZCBzaW5jZSBQeXRob24gMi40LgotCi0tIElzc3VlICMxMTI1NjogRml4IGluc3BlY3QuZ2V0Y2FsbGFyZ3Mgb24gZnVuY3Rpb25zIHRoYXQgdGFrZSBvbmx5IGtleXdvcmQKLSAgYXJndW1lbnRzLgotCi0tIElzc3VlICMxMTY5NjogRml4IElEIGdlbmVyYXRpb24gaW4gbXNpbGliLgotCi0tIGl0ZXJ0b29scy5hY2N1bXVsYXRlIG5vdyBzdXBwb3J0cyBhbiBvcHRpb25hbCAqZnVuYyogYXJndW1lbnQgZm9yCi0gIGEgdXNlci1zdXBwbGllZCBiaW5hcnkgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzExNjkyOiBSZW1vdmUgdW5uZWNlc3NhcnkgZGVtbyBmdW5jdGlvbnMgaW4gc3VicHJvY2VzcyBtb2R1bGUuCi0KLS0gSXNzdWUgIzk2OTY6IEZpeCBleGNlcHRpb24gaW5jb3JyZWN0bHkgcmFpc2VkIGJ5IHhkcmxpYi5QYWNrZXIucGFja19pbnQgd2hlbgotICB0cnlpbmcgdG8gcGFjayBhIG5lZ2F0aXZlIChpbi1yYW5nZSkgaW50ZWdlci4KLQotLSBJc3N1ZSAjMTE2NzU6IG11bHRpcHJvY2Vzc2luZy5bUmF3XUFycmF5IG9iamVjdHMgY3JlYXRlZCBmcm9tIGFuIGludGVnZXIgc2l6ZQotICBhcmUgbm93IHplcm9lZCBvbiBjcmVhdGlvbi4gIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3VyIHNwZWNpZmllZCBieSB0aGUKLSAgZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjNzYzOTogRml4IHNob3J0IGZpbGUgbmFtZSBnZW5lcmF0aW9uIGluIGJkaXN0X21zaQotCi0tIElzc3VlICMxMTYzNTogRG9uJ3QgdXNlIHBvbGxpbmcgaW4gd29ya2VyIHRocmVhZHMgYW5kIHByb2Nlc3NlcyBsYXVuY2hlZCBieQotICBjb25jdXJyZW50LmZ1dHVyZXMuCi0KLS0gSXNzdWUgIzU4NDU6IEF1dG9tYXRpY2FsbHkgcmVhZCByZWFkbGluZSBjb25maWd1cmF0aW9uIHRvIGVuYWJsZSBjb21wbGV0aW9uCi0gIGluIGludGVyYWN0aXZlIG1vZGUuCi0KLS0gSXNzdWUgIzY4MTE6IEFsbG93IGltcG9ydGxpYiB0byBjaGFuZ2UgYSBjb2RlIG9iamVjdCdzIGNvX2ZpbGVuYW1lIGF0dHJpYnV0ZQotICB0byBtYXRjaCB0aGUgcGF0aCB0byB3aGVyZSB0aGUgc291cmNlIGNvZGUgY3VycmVudGx5IGlzLCBub3Qgd2hlcmUgdGhlIGNvZGUKLSAgb2JqZWN0IG9yaWdpbmFsbHkgY2FtZSBmcm9tLgotCi0tIElzc3VlICM4NzU0OiBIYXZlIGltcG9ydGxpYiB1c2UgdGhlIHJlcHIgb2YgYSBtb2R1bGUgbmFtZSBpbiBlcnJvciBtZXNzYWdlcy4KLQotLSBJc3N1ZSAjMTE1OTE6IFByZXZlbnQgImltcG9ydCBzaXRlIiBmcm9tIG1vZGlmeWluZyBzeXMucGF0aCB3aGVuIHB5dGhvbgotICB3YXMgc3RhcnRlZCB3aXRoIC1TLgotCi0tIGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoKSBub3cgYWRkcyBhIF9zb3VyY2UgYXR0cmlidXRlIHRvIHRoZSBnZW5lcmF0ZWQKLSAgY2xhc3MuICBUaGlzIG1ha2UgdGhlIHNvdXJjZSBtb3JlIGFjY2Vzc2libGUgdGhhbiB0aGUgb3V0ZGF0ZWQKLSAgInZlcmJvc2UiIG9wdGlvbiB3aGljaCBwcmludHMgdG8gc3Rkb3V0IGJ1dCBkb2Vzbid0IG1ha2UgdGhlIHNvdXJjZQotICBzdHJpbmcgYXZhaWxhYmxlLgotCi0tIElzc3VlICMxMTM3MTogTWFyayBnZXRvcHQgZXJyb3IgbWVzc2FnZXMgYXMgbG9jYWxpemFibGUuICBQYXRjaCBieSBGaWxpcAotICBHcnVzemN6ecWEc2tpLgotCi0tIElzc3VlICMxMTMzMzogQWRkIF9fc2xvdHNfXyB0byBjb2xsZWN0aW9ucyBBQkNzLgotCi0tIElzc3VlICMxMTYyODogY21wX3RvX2tleSBnZW5lcmF0ZWQgY2xhc3Mgc2hvdWxkIHVzZSBfX3Nsb3RzX18uCi0KLS0gSXNzdWUgIzExNjY2OiBsZXQgaGVscCgpIGRpc3BsYXkgbmFtZWQgdHVwbGUgYXR0cmlidXRlcyBhbmQgbWV0aG9kcwotICB0aGF0IHN0YXJ0IHdpdGggYSBsZWFkaW5nIHVuZGVyc2NvcmUuCi0KLS0gSXNzdWUgIzExNjYyOiBNYWtlIHVybGxpYiBhbmQgdXJsbGliMiBpZ25vcmUgcmVkaXJlY3Rpb25zIGlmIHRoZQotICBzY2hlbWUgaXMgbm90IEhUVFAsIEhUVFBTIG9yIEZUUCAoQ1ZFLTIwMTEtMTUyMSkuCi0KLS0gSXNzdWUgIzU1Mzc6IEZpeCB0aW1lMmlzb3ooKSBhbmQgdGltZTJuZXRzY2FwZSgpIGZ1bmN0aW9ucyBvZgotICBodHRwbGliLmNvb2tpZWphciBmb3IgZXhwaXJhdGlvbiB5ZWFyIGdyZWF0ZXIgdGhhbiAyMDM4IG9uIDMyLWJpdCBzeXN0ZW1zLgotCi0tIElzc3VlICM0MzkxOiBVc2UgcHJvcGVyIGdldHRleHQgcGx1cmFsIGZvcm1zIGluIG9wdHBhcnNlLgotCi0tIElzc3VlICMxMTEyNzogUmFpc2UgYSBUeXBlRXJyb3Igd2hlbiB0cnlpbmcgdG8gcGlja2xlIGEgc29ja2V0IG9iamVjdC4KLQotLSBJc3N1ZSAjMTE1NjM6IGBgQ29ubmVjdGlvbjogY2xvc2VgYCBoZWFkZXIgaXMgc2VudCBieSByZXF1ZXN0cyB1c2luZyBVUkxPcGVuZXIKLSAgY2xhc3Mgd2hpY2ggaGVscHMgaW4gY2xvc2luZyBvZiBzb2NrZXRzIGFmdGVyIGNvbm5lY3Rpb24gaXMgb3Zlci4gUGF0Y2gKLSAgY29udHJpYnV0aW9ucyBieSBKZWZmIE1jTmVpbCBhbmQgTmFkZWVtIFZhd2RhLgotCi0tIElzc3VlICMxMTQ1OTogQSBgYGJ1ZnNpemVgYCB2YWx1ZSBvZiAwIGluIHN1YnByb2Nlc3MuUG9wZW4oKSByZWFsbHkgY3JlYXRlcwotICB1bmJ1ZmZlcmVkIHBpcGVzLCBzdWNoIHRoYXQgc2VsZWN0KCkgd29ya3MgcHJvcGVybHkgb24gdGhlbS4KLQotLSBJc3N1ZSAjNTQyMTogRml4IG1pc2xlYWRpbmcgZXJyb3IgbWVzc2FnZSB3aGVuIG9uZSBvZiBzb2NrZXQuc2VuZHRvKCkncwotICBhcmd1bWVudHMgaGFzIHRoZSB3cm9uZyB0eXBlLiAgUGF0Y2ggYnkgTmlraXRhIFZldG9zaGtpbi4KLQotLSBJc3N1ZSAjMTA4MTI6IEFkZCBzb21lIGV4dHJhIHBvc2l4IGZ1bmN0aW9ucyB0byB0aGUgb3MgbW9kdWxlLgotCi0tIElzc3VlICMxMDk3OTogdW5pdHRlc3Qgc3Rkb3V0IGJ1ZmZlcmluZyBub3cgd29ya3Mgd2l0aCBjbGFzcyBhbmQgbW9kdWxlCi0gIHNldHVwIGFuZCB0ZWFyZG93bi4KLQotLSBJc3N1ZSAjMTEyNDM6IGZpeCB0aGUgcGFyYW1ldGVyIHF1ZXJ5aW5nIG1ldGhvZHMgb2YgTWVzc2FnZSB0byB3b3JrIGlmCi0gIHRoZSBoZWFkZXJzIGNvbnRhaW4gdW4tZW5jb2RlZCBub24tQVNDSUkgZGF0YS4KLQotLSBJc3N1ZSAjMTE0MDE6IGZpeCBoYW5kbGluZyBvZiBoZWFkZXJzIHdpdGggbm8gdmFsdWU7IHRoaXMgZml4ZXMgYSByZWdyZXNzaW9uCi0gIHJlbGF0aXZlIHRvIFB5dGhvbjIgYW5kIHRoZSByZXN1bHQgaXMgbm93IHRoZSBzYW1lIGFzIGl0IHdhcyBpbiBQeXRob24yLgotCi0tIElzc3VlICM5Mjk4OiBiYXNlNjQgYm9kaWVzIHdlcmVuJ3QgYmVpbmcgZm9sZGVkIHRvIGxpbmUgbGVuZ3RocyBsZXNzIHRoYW4gNzgsCi0gIHdoaWNoIHdhcyBhIHJlZ3Jlc3Npb24gcmVsYXRpdmUgdG8gUHl0aG9uMi4gIFVubGlrZSBQeXRob24yLCB0aGUgbGFzdCBsaW5lCi0gIG9mIHRoZSBmb2xkZWQgYm9keSBub3cgZW5kcyB3aXRoIGEgY2FycmlhZ2UgcmV0dXJuLgotCi0tIElzc3VlICMxMTU2MDogc2h1dGlsLnVucGFja19hcmNoaXZlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyB0aGUgZm9ybWF0Ci0gIHBhcmFtZXRlci4gUGF0Y2ggYnkgRXZhbiBEYW5kcmVhLgotCi0tIElzc3VlICM1ODcwOiBBZGQgYHN1YnByb2Nlc3MuREVWTlVMTGAgY29uc3RhbnQuCi0KLS0gSXNzdWUgIzExMTMzOiBmaXggdHdvIGNhc2VzIHdoZXJlIGluc3BlY3QuZ2V0YXR0cl9zdGF0aWMgY2FuIHRyaWdnZXIgY29kZQotICBleGVjdXRpb24uIFBhdGNoIGJ5IEFuZHJlYXMgU3TDvGhyay4KLQotLSBJc3N1ZSAjMTE1Njk6IHVzZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBzeXNjdGwgY29tbWFuZCBpbiBtdWx0aXByb2Nlc3NpbmcgdG8KLSAgZW5zdXJlIHRoYXQgaXQgd2lsbCBiZSBmb3VuZCByZWdhcmRsZXNzIG9mIHRoZSBzaGVsbCBQQVRILiBUaGlzIGVuc3VyZXMKLSAgdGhhdCBtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50IHdvcmtzIG9uIGRlZmF1bHQgaW5zdGFsbHMgb2YgTWFjT1NYLgotCi0tIElzc3VlICMxMTUwMTogZGlzdXRpbHMuYXJjaGl2ZV91dGlscy5tYWtlX3ppcGZpbGUgbm8gbG9uZ2VyIGZhaWxzIGlmIHpsaWIgaXMKLSAgbm90IGluc3RhbGxlZC4gSW5zdGVhZCwgdGhlIHppcGZpbGUuWklQX1NUT1JFRCBjb21wcmVzc2lvbiBpcyB1c2VkIHRvIGNyZWF0ZQotICB0aGUgWmlwRmlsZS4gUGF0Y2ggYnkgTmF0YWxpYSBCLiBCaWRhcnQuCi0KLS0gSXNzdWUgIzExMjg5OiBgc210cC5TTVRQYCBjbGFzcyBpcyBub3cgYSBjb250ZXh0IG1hbmFnZXIgc28gaXQgY2FuIGJlIHVzZWQKLSAgaW4gYSBgd2l0aGAgc3RhdGVtZW50LiAgQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sYS4KLQotLSBJc3N1ZSAjMTE1NTQ6IEZpeGVkIHN1cHBvcnQgZm9yIEphcGFuZXNlIGNvZGVjczsgcHJldmlvdXNseSB0aGUgYm9keSBvdXRwdXQKLSAgZW5jb2Rpbmcgd2FzIG5vdCBkb25lIGlmIGV1Yy1qcCBvciBzaGlmdC1qaXMgd2FzIHNwZWNpZmllZCBhcyB0aGUgY2hhcnNldC4KLQotLSBJc3N1ZSAjMTE0MDc6IGBUZXN0Q2FzZS5ydW5gIHJldHVybnMgdGhlIHJlc3VsdCBvYmplY3QgdXNlZCBvciBjcmVhdGVkLgotICBDb250cmlidXRlZCBieSBKYW5hdGhhbiBIYXJ0bGV5LgotCi0tIElzc3VlICMxMTUwMDogRml4ZWQgYSBidWcgaW4gdGhlIE9TIFggcHJveHkgYnlwYXNzIGNvZGUgZm9yIGZ1bGx5IHF1YWxpZmllZAotICBJUCBhZGRyZXNzZXMgaW4gdGhlIHByb3h5IGV4Y2VwdGlvbiBsaXN0LgotCi0tIElzc3VlICMxMTQ5MTogZGJtLmVycm9yIGlzIG5vIGxvbmdlciByYWlzZWQgd2hlbiBkYm0ub3BlbiBpcyBjYWxsZWQgd2l0aAotICB0aGUgIm4iIGFzIHRoZSBmbGFnIGFyZ3VtZW50IGFuZCB0aGUgZmlsZSBleGlzdHMuIFRoZSBiZWhhdmlvciBtYXRjaGVzCi0gIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBnZW5lcmFsIGxvZ2ljLgotCi0tIElzc3VlICMxMTYyNDc3OiBQb3N0ZWwgUHJpbmNpcGxlIGFkanVzdG1lbnQgdG8gZW1haWwgZGF0ZSBwYXJzaW5nOiBoYW5kbGUgdGhlCi0gIGZhY3QgdGhhdCBzb21lIG5vbi1jb21wbGlhbnQgTVVBcyB1c2UgJy4nIGluc3RlYWQgb2YgJzonIGluIHRpbWUgc3BlY3MuCi0KLS0gSXNzdWUgIzExMTMxOiBGaXggc2lnbiBvZiB6ZXJvIGluIGRlY2ltYWwuRGVjaW1hbCBwbHVzIGFuZCBtaW51cwotICBvcGVyYXRpb25zIHdoZW4gdGhlIHJvdW5kaW5nIG1vZGUgaXMgUk9VTkRfRkxPT1IuCi0KLS0gSXNzdWUgIzk5MzU6IFNwZWVkIHVwIHBpY2tsaW5nIG9mIGluc3RhbmNlcyBvZiB1c2VyLWRlZmluZWQgY2xhc3Nlcy4KLQotLSBJc3N1ZSAjNTYyMjogRml4IGN1cnNlcy53cmFwcGVyIHRvIHJhaXNlIGNvcnJlY3QgZXhjZXB0aW9uIGlmIGN1cnNlcwotICBpbml0aWFsaXphdGlvbiBmYWlscy4KLQotLSBJc3N1ZSAjMTE0MDg6IEluIHRocmVhZGluZy5Mb2NrLmFjcXVpcmUoKSwgb25seSBjYWxsIGdldHRpbWVvZmRheSgpIHdoZW4KLSAgcmVhbGx5IG5lY2Vzc2FyeS4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjMTEzOTE6IFdyaXRpbmcgdG8gYSBtbWFwIG9iamVjdCBjcmVhdGVkIHdpdGgKLSAgYGBtbWFwLlBST1RfUkVBRHxtbWFwLlBST1RfRVhFQ2BgIHdvdWxkIHNlZ2ZhdWx0IGluc3RlYWQgb2YgcmFpc2luZyBhCi0gIFR5cGVFcnJvci4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjOTc5NTogYWRkIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCBzdXBwb3J0IGZvciBubnRwbGliLk5OVFAgY2xhc3MuCi0KLS0gSXNzdWUgIzExMzA2OiBtYWlsYm94IGluIGNlcnRhaW4gY2FzZXMgYWRhcHRzIHRvIGFuIGluYWJpbGl0eSB0byBvcGVuCi0gIGNlcnRhaW4gZmlsZXMgaW4gcmVhZC13cml0ZSBtb2RlLiAgUHJldmlvdXNseSBpdCBkZXRlY3RlZCB0aGlzIGJ5Ci0gIGNoZWNraW5nIGZvciBFQUNDRVMsIG5vdyBpdCBhbHNvIGNoZWNrcyBmb3IgRVJPRlMuCi0KLS0gSXNzdWUgIzExMjY1OiBhc3luY29yZSBub3cgY29ycmVjdGx5IGhhbmRsZXMgRVBJUEUsIEVCQURGIGFuZCBFQUdBSU4gZXJyb3JzCi0gIG9uIGFjY2VwdCgpLCBzZW5kKCkgYW5kIHJlY3YoKS4KLQotLSBJc3N1ZSAjMTEzNzc6IERlcHJlY2F0ZSBwbGF0Zm9ybS5wb3BlbigpIGFuZCByZWltcGxlbWVudCBpdCB3aXRoIG9zLnBvcGVuKCkuCi0KLS0gSXNzdWUgIzg1MTM6IE9uIFVOSVgsIHN1YnByb2Nlc3Mgc3VwcG9ydHMgYnl0ZXMgY29tbWFuZCBzdHJpbmcuCi0KLS0gSXNzdWUgIzEwODY2OiBBZGQgc29ja2V0LnNldGhvc3RuYW1lKCkuICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgotCi0tIElzc3VlICMxMTE0MDogTG9jay5yZWxlYXNlKCkgbm93IHJhaXNlcyBhIFJ1bnRpbWVFcnJvciB3aGVuIGF0dGVtcHRpbmcKLSAgdG8gcmVsZWFzZSBhbiB1bmFjcXVpcmVkIGxvY2ssIGFzIGNsYWltZWQgaW4gdGhlIHRocmVhZGluZyBkb2N1bWVudGF0aW9uLgotICBUaGUgX3RocmVhZC5lcnJvciBleGNlcHRpb24gaXMgbm93IGFuIGFsaWFzIG9mIFJ1bnRpbWVFcnJvci4gIFBhdGNoIGJ5Ci0gIEZpbGlwIEdydXN6Y3p5xYRza2kuICBQYXRjaCBmb3IgX2R1bW15X3RocmVhZCBieSBBeW1lcmljIEF1Z3VzdGluLgotCi0tIElzc3VlICM4NTk0OiBmdHBsaWIgbm93IHByb3ZpZGVzIGEgc291cmNlX2FkZHJlc3MgcGFyYW1ldGVyIHRvIHNwZWNpZnkgd2hpY2gKLSAgKGFkZHJlc3MsIHBvcnQpIHRvIGJpbmQgdG8gYmVmb3JlIGNvbm5lY3RpbmcuCi0KLS0gSXNzdWUgIzExMzI2OiBBZGQgdGhlIG1pc3NpbmcgY29ubmVjdF9leCgpIGltcGxlbWVudGF0aW9uIGZvciBTU0wgc29ja2V0cywKLSAgYW5kIG1ha2UgaXQgd29yayBmb3Igbm9uLWJsb2NraW5nIGNvbm5lY3RzLgotCi0tIElzc3VlICMxMTI5NzogQWRkIGNvbGxlY3Rpb25zLkNoYWluTWFwKCkuCi0KLS0gSXNzdWUgIzEwNzU1OiBBZGQgdGhlIHBvc2l4LmZsaXN0ZGlyKCkgZnVuY3Rpb24uICBQYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KLQotLSBJc3N1ZSAjNDc2MTogQWRkIHRoZSBgYCphdCgpYGAgZmFtaWx5IG9mIGZ1bmN0aW9ucyAob3BlbmF0KCksIGV0Yy4pIHRvIHRoZQotICBwb3NpeCBtb2R1bGUuICBQYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KLQotLSBJc3N1ZSAjNzMyMjogVHJ5aW5nIHRvIHJlYWQgZnJvbSBhIHNvY2tldCdzIGZpbGUtbGlrZSBvYmplY3QgYWZ0ZXIgYSB0aW1lb3V0Ci0gIG9jY3VycmVkIG5vdyByYWlzZXMgYW4gZXJyb3IgaW5zdGVhZCBvZiBzaWxlbnRseSBsb3NpbmcgZGF0YS4KLQotLSBJc3N1ZSAjMTEyOTE6IHBvcGxpYi5QT1Agbm8gbG9uZ2VyIHN1cHByZXNzZXMgZXJyb3JzIG9uIHF1aXQoKS4KLQotLSBJc3N1ZSAjMTExNzc6IGFzeW5jb3JlJ3MgY3JlYXRlX3NvY2tldCgpIGFyZ3VtZW50cyBjYW4gbm93IGJlIG9taXR0ZWQuCi0KLS0gSXNzdWUgIzYwNjQ6IEFkZCBhIGBgZGFlbW9uYGAga2V5d29yZCBhcmd1bWVudCB0byB0aGUgdGhyZWFkaW5nLlRocmVhZAotICBhbmQgbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MgY29uc3RydWN0b3JzIGluIG9yZGVyIHRvIG92ZXJyaWRlIHRoZQotICBkZWZhdWx0IGJlaGF2aW91ciBvZiBpbmhlcml0aW5nIHRoZSBkYWVtb25pYyBwcm9wZXJ0eSBmcm9tIHRoZSBjdXJyZW50Ci0gIHRocmVhZC9wcm9jZXNzLgotCi0tIElzc3VlICMxMDk1NjogQnVmZmVyZWQgSS9PIGNsYXNzZXMgcmV0cnkgcmVhZGluZyBvciB3cml0aW5nIGFmdGVyIGEgc2lnbmFsCi0gIGhhcyBhcnJpdmVkIGFuZCB0aGUgaGFuZGxlciByZXR1cm5lZCBzdWNjZXNzZnVsbHkuCi0KLS0gSXNzdWUgIzEwNzg0OiBOZXcgb3MuZ2V0cHJpb3JpdHkoKSBhbmQgb3Muc2V0cHJpb3JpdHkoKSBmdW5jdGlvbnMuCi0KLS0gSXNzdWUgIzExMTE0OiBGaXggY2F0YXN0cm9waGljIHBlcmZvcm1hbmNlIG9mIHRlbGwoKSBvbiB0ZXh0IGZpbGVzICh1cAotICB0byAxMDAweCBmYXN0ZXIgaW4gc29tZSBjYXNlcykuICBJdCBpcyBzdGlsbCBvbmUgdG8gdHdvIG9yZGVyIG9mIG1hZ25pdHVkZXMKLSAgc2xvd2VyIHRoYW4gYmluYXJ5IHRlbGwoKS4KLQotLSBJc3N1ZSAjMTA4ODI6IEFkZCBvcy5zZW5kZmlsZSBmdW5jdGlvbi4KLQotLSBJc3N1ZSAjMTA4Njg6IEFsbG93IHVzYWdlIG9mIHRoZSByZWdpc3RlciBtZXRob2Qgb2YgYW4gQUJDIGFzIGEgY2xhc3MKLSAgZGVjb3JhdG9yLgotCi0tIElzc3VlICMxMTIyNDogRml4ZWQgYSByZWdyZXNzaW9uIGluIHRhcmZpbGUgdGhhdCBhZmZlY3RlZCB0aGUgZmlsZS1saWtlCi0gIG9iamVjdHMgcmV0dXJuZWQgYnkgVGFyRmlsZS5leHRyYWN0ZmlsZSgpIHJlZ2FyZGluZyBwZXJmb3JtYW5jZSwgbWVtb3J5Ci0gIGNvbnN1bXB0aW9uIGFuZCBmYWlsdXJlcyB3aXRoIHRoZSBzdHJlYW0gaW50ZXJmYWNlLgotCi0tIElzc3VlICMxMDkyNDogQWRkaW5nIHNhbHQgYW5kIE1vZHVsYXIgQ3J5cHQgRm9ybWF0IHRvIGNyeXB0IGxpYnJhcnkuCi0gIE1vdmVkIG9sZCBDIHdyYXBwZXIgdG8gX2NyeXB0LCBhbmQgYWRkZWQgYSBQeXRob24gd3JhcHBlciB3aXRoCi0gIGVuaGFuY2VkIHNhbHQgZ2VuZXJhdGlvbiBhbmQgc2ltcGxlciBBUEkgZm9yIHBhc3N3b3JkIGdlbmVyYXRpb24uCi0KLS0gSXNzdWUgIzExMDc0OiBNYWtlICd0b2tlbml6ZScgc28gaXQgY2FuIGJlIHJlbG9hZGVkLgotCi0tIElzc3VlICMxMTA4NTogTW92ZWQgY29sbGVjdGlvbnMgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIGludG8gYSBzZXBhcmF0ZQotICBtb2R1bGUgY2FsbGVkIGNvbGxlY3Rpb25zLmFiYywgZm9sbG93aW5nIHRoZSBwYXR0ZXJuIHVzZWQgYnkgaW1wb3J0bGliLmFiYy4KLSAgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGUgbmFtZXMgYXJlIGltcG9ydGVkIGludG8gdGhlIGNvbGxlY3Rpb25zCi0gIG1vZHVsZS4KLQotLSBJc3N1ZSAjNDY4MTogQWxsb3cgbW1hcCgpIHRvIHdvcmsgb24gZmlsZSBzaXplcyBhbmQgb2Zmc2V0cyBsYXJnZXIgdGhhbgotICA0R0IsIGV2ZW4gb24gMzItYml0IGJ1aWxkcy4gIEluaXRpYWwgcGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwsIGFkYXB0ZWQgZm9yCi0gIDMyLWJpdCBXaW5kb3dzLgotCi0tIElzc3VlICMxMTE2OTogY29tcGlsZWFsbCBtb2R1bGUgdXNlcyByZXByKCkgdG8gZm9ybWF0IGZpbGVuYW1lcyBhbmQgcGF0aHMgdG8KLSAgZXNjYXBlIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzIGFuZCBzaG93IHNwYWNlcy4KLQotLSBJc3N1ZSAjMTEwODk6IEZpeCBwZXJmb3JtYW5jZSBpc3N1ZSBsaW1pdGluZyB0aGUgdXNlIG9mIENvbmZpZ1BhcnNlcigpCi0gIHdpdGggbGFyZ2UgY29uZmlnIGZpbGVzLgotCi0tIElzc3VlICMxMDI3NjogRml4IHRoZSByZXN1bHRzIG9mIHpsaWIuY3JjMzIoKSBhbmQgemxpYi5hZGxlcjMyKCkgb24gYnVmZmVycwotICBsYXJnZXIgdGhhbiA0R0IuICBQYXRjaCBieSBOYWRlZW0gVmF3ZGEuCi0KLS0gSXNzdWUgIzExMzg4OiBBZGRlZCBhIGNsZWFyKCkgbWV0aG9kIHRvIE11dGFibGVTZXF1ZW5jZQotCi0tIElzc3VlICMxMTE3NDogQWRkIGFyZ3BhcnNlLk1ldGF2YXJUeXBlSGVscEZvcm1hdHRlciwgd2hpY2ggdXNlcyB0eXBlIG5hbWVzCi0gIGZvciB0aGUgbmFtZXMgb2Ygb3B0aW9uYWwgYW5kIHBvc2l0aW9uYWwgYXJndW1lbnRzIGluIGhlbHAgbWVzc2FnZXMuCi0KLS0gSXNzdWUgIzkzNDg6IFJhaXNlIGFuIGVhcmx5IGVycm9yIGlmIGFyZ3BhcnNlIG5hcmdzIGFuZCBtZXRhdmFyIGRvbid0IG1hdGNoLgotCi0tIElzc3VlICM5MDI2OiBGaXggb3JkZXIgb2YgYXJncGFyc2Ugc3ViLWNvbW1hbmRzIGluIGhlbHAgbWVzc2FnZXMuCi0KLS0gSXNzdWUgIzkzNDc6IEZpeCBmb3JtYXR0aW5nIGZvciB0dXBsZXMgaW4gYXJncGFyc2UgdHlwZT0gZXJyb3IgbWVzc2FnZXMuCi0KLS0gSXNzdWUgIzEyMTkxOiBBZGRlZCBzaHV0aWwuY2hvd24oKSB0byBjaGFuZ2UgdXNlciBhbmQvb3IgZ3JvdXAgb3duZXIgb2YgYQotICBnaXZlbiBwYXRoIGFsc28gc3BlY2lmeWluZyB0aGVpciBuYW1lcy4KLQotLSBJc3N1ZSAjMTM5ODg6IFRoZSBfZWxlbWVudHRyZWUgYWNjZWxlcmF0b3IgaXMgdXNlZCB3aGVuZXZlciBhdmFpbGFibGUuCi0gIE5vdyB4bWwuZXRyZWUuY0VsZW1lbnRUcmVlIGJlY29tZXMgYSBkZXByZWNhdGVkIGFsaWFzIHRvIEVsZW1lbnRUcmVlLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjNjgwNzogUnVuIG1zaXN1cHBvcnQubWFrIGVhcmxpZXIuCi0KLS0gSXNzdWUgIzEwNTgwOiBNaW5vciBncmFtbWFyIGNoYW5nZSBpbiBXaW5kb3dzIGluc3RhbGxlci4KLQotLSBJc3N1ZSAjMTMzMjY6IENsZWFuIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIGNvcnJlY3RseSBvbiBPcGVuQlNELgotCi0tIFBFUCAzOTM6IHRoZSBjb25maWd1cmUgb3B0aW9uIC0td2l0aC13aWRlLXVuaWNvZGUgaXMgcmVtb3ZlZC4KLQotLSBJc3N1ZSAjMTI4NTI6IFNldCBfWE9QRU5fU09VUkNFIHRvIDcwMCwgaW5zdGVhZCBvZiA2MDAsIHRvIGdldCBQT1NJWCAyMDA4Ci0gIGZ1bmN0aW9ucyBvbiBPcGVuQlNEIChlLmcuIGZkb3BlbmRpcikuCi0KLS0gSXNzdWUgIzExODYzOiBSZW1vdmUgc3VwcG9ydCBmb3IgbGVnYWN5IHN5c3RlbXMgZGVwcmVjYXRlZCBpbiBQeXRob24gMy4yCi0gIChmb2xsb3dpbmcgUEVQIDExKS4gIFRoZXNlIHN5c3RlbXMgYXJlIHN5c3RlbXMgdXNpbmcgTWFjaCBDIFRocmVhZHMsCi0gIFN1bk9TIGxpZ2h0d2VpZ2h0IHByb2Nlc3NlcywgR05VIHB0aCB0aHJlYWRzIGFuZCBJUklYIHRocmVhZHMuCi0KLS0gSXNzdWUgIzg3NDY6IENvcnJlY3QgZmF1bHR5IGNvbmZpZ3VyZSBjaGVja3Mgc28gdGhhdCBvcy5jaGZsYWdzKCkgYW5kCi0gIG9zLmxjaGZsYWdzKCkgYXJlIG9uY2UgYWdhaW4gYnVpbHQgb24gc3lzdGVtcyB0aGF0IHN1cHBvcnQgdGhlc2UKLSAgZnVuY3Rpb25zIChCU0QgYW5kIE9TIFgpLiAgQWxzbyBhZGQgbmV3IHN0YXQgZmlsZSBmbGFncyBmb3IgT1MgWAotICAoVUZfSElEREVOIGFuZCBVRl9DT01QUkVTU0VEKS4KLQotLSBJc3N1ZSAjMTA2NDU6IEluc3RhbGxpbmcgUHl0aG9uIG5vIGxvbmdlciBjcmVhdGVzIGEKLSAgUHl0aG9uLVguWS5aLXB5WC5ZLmVnZy1pbmZvIGZpbGUgaW4gdGhlIGxpYi1keW5sb2FkIGRpcmVjdG9yeS4KLQotLSBEbyBub3QgYWNjaWRlbnRhbGx5IGluY2x1ZGUgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHNxbGl0ZS5oIHR3aWNlIHdoZW4KLSAgYnVpbGRpbmcgc3FsaXRlMy4KLQotLSBJc3N1ZSAjMTEyMTc6IEZvciA2NC1iaXQvMzItYml0IE1hYyBPUyBYIHVuaXZlcnNhbCBmcmFtZXdvcmsgYnVpbGRzLAotICBlbnN1cmUgIm1ha2UgaW5zdGFsbCIgY3JlYXRlcyBzeW1saW5rcyBpbiAtLXByZWZpeCBiaW4gZm9yIHRoZSAiLTMyIgotICBmaWxlcyBpbiB0aGUgZnJhbWV3b3JrIGJpbiBkaXJlY3RvcnkgbGlrZSB0aGUgaW5zdGFsbGVyIGRvZXMuCi0KLS0gSXNzdWUgIzExMzQ3OiBVc2UgLS1uby1hcy1uZWVkZWQgd2hlbiBsaW5raW5nIGxpYnB5dGhvbjMuc28uCi0KLS0gSXNzdWUgIzExNDExOiBGaXggJ21ha2UgREVTVERJUj0nIHdpdGggYSByZWxhdGl2ZSBkZXN0aW5hdGlvbi4KLQotLSBJc3N1ZSAjMTEyNjg6IFByZXZlbnQgTWFjIE9TIFggSW5zdGFsbGVyIGZhaWx1cmUgaWYgRG9jdW1lbnRhdGlvbgotICBwYWNrYWdlIGhhZCBwcmV2aW91c2x5IGJlZW4gaW5zdGFsbGVkLgotCi0tIElzc3VlICMxMTQ5NTogT1NGIHN1cHBvcnQgaXMgZWxpbWluYXRlZC4gSXQgd2FzIGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuMi4KLQotSURMRQotLS0tLQotCi0tIElzc3VlICMxNDQwOTogSURMRSBub3cgcHJvcGVybHkgZXhlY3V0ZXMgY29tbWFuZHMgaW4gdGhlIFNoZWxsIHdpbmRvdwotICB3aGVuIGl0IGNhbm5vdCByZWFkIHRoZSBub3JtYWwgY29uZmlnIGZpbGVzIG9uIHN0YXJ0dXAgYW5kCi0gIGhhcyB0byB1c2UgdGhlIGJ1aWx0LWluIGRlZmF1bHQga2V5IGJpbmRpbmdzLgotICBUaGVyZSB3YXMgcHJldmlvdXNseSBhIGJ1ZyBpbiBvbmUgb2YgdGhlIGRlZmF1bHRzLgotCi0tIElETEUgY2FuIGJlIGxhdW5jaGVkIGFzIHB5dGhvbiAtbSBpZGxlbGliCi0KLS0gSXNzdWUgIzM1NzM6IElETEUgaGFuZ3Mgd2hlbiBwYXNzaW5nIGludmFsaWQgY29tbWFuZCBsaW5lIGFyZ3MKLSAgKGRpcmVjdG9yeShpZXMpIGluc3RlYWQgb2YgZmlsZShzKSkgKFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvKQotCi0tIElzc3VlICMxNDIwMDogSURMRSBzaGVsbCBjcmFzaCBvbiBwcmludGluZyBub24tQk1QIHVuaWNvZGUgY2hhcmFjdGVyLgotCi0tIElzc3VlICM1MjE5OiBQcmV2ZW50IGV2ZW50IGhhbmRsZXIgY2FzY2FkZSBpbiBJRExFLgotCi0tIElzc3VlICM5NjQ0Mzc6IE1ha2UgSURMRSBoZWxwIHdpbmRvdyBub24tbW9kYWwuCi0gIFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvIGFuZCBSb2dlciBTZXJ3eS4KLQotLSBJc3N1ZSAjMTM5MzM6IElETEUgYXV0by1jb21wbGV0ZSBkaWQgbm90IHdvcmsgd2l0aCBzb21lIGltcG9ydGVkCi0gIG1vZHVsZSwgbGlrZSBoYXNobGliLiAgKFBhdGNoIGJ5IFJvZ2VyIFNlcnd5KQotCi0tIElzc3VlICMxMzUwNjogQWRkICcnIHRvIHBhdGggZm9yIElETEUgU2hlbGwgd2hlbiBzdGFydGVkIGFuZCByZXN0YXJ0ZWQgd2l0aCBSZXN0YXJ0IFNoZWxsLgotICBPcmlnaW5hbCBwYXRjaGVzIGJ5IE1hcmNvIFNjYXRhZ2xpbmkgYW5kIFJvZ2VyIFNlcnd5LgotCi0tIElzc3VlICM0NjI1OiBJZiBJRExFIGNhbm5vdCB3cml0ZSB0byBpdHMgcmVjZW50IGZpbGUgb3IgYnJlYWtwb2ludCBmaWxlcywKLSAgZGlzcGxheSBhIG1lc3NhZ2UgcG9wdXAgYW5kIGNvbnRpbnVlIHJhdGhlciB0aGFuIGNyYXNoLiAgT3JpZ2luYWwgcGF0Y2ggYnkKLSAgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzg2NDE6IFVwZGF0ZSBJRExFIDMgc3ludGF4IGNvbG9yaW5nIHRvIHJlY29nbml6ZSBiIi4uIiBhbmQgbm90IHUiLi4iLgotICBQYXRjaCBieSBUYWwgRWluYXQuCi0KLS0gSXNzdWUgIzEzMjk2OiBGaXggSURMRSB0byBjbGVhciBjb21waWxlIF9fZnV0dXJlX18gZmxhZ3Mgb24gc2hlbGwgcmVzdGFydC4KLSAgKFBhdGNoIGJ5IFJvZ2VyIFNlcnd5KQotCi0tIElzc3VlICM5ODcxOiBQcmV2ZW50IElETEUgMyBjcmFzaCB3aGVuIGdpdmVuIGJ5dGUgc3RpbmdzCi0gIHdpdGggaW52YWxpZCBoZXggZXNjYXBlIHNlcXVlbmNlcywgbGlrZSBiJ1x4MCcuCi0gIChPcmlnaW5hbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuKQotCi0tIElzc3VlICMxMjYzNjogSURMRSByZWFkcyB0aGUgY29kaW5nIGNvb2tpZSB3aGVuIGV4ZWN1dGluZyBhIFB5dGhvbiBzY3JpcHQuCi0KLS0gSXNzdWUgIzEyNTQwOiBQcmV2ZW50IHpvbWJpZSBJRExFIHByb2Nlc3NlcyBvbiBXaW5kb3dzIGR1ZSB0byBjaGFuZ2VzCi0gIGluIG9zLmtpbGwoKS4KLQotLSBJc3N1ZSAjMTI1OTA6IElETEUgZWRpdG9yIHdpbmRvdyBub3cgYWx3YXlzIGRpc3BsYXlzIHRoZSBmaXJzdCBsaW5lCi0gIHdoZW4gb3BlbmluZyBhIGxvbmcgZmlsZS4gIFdpdGggVGsgOC41LCB0aGUgZmlyc3QgbGluZSB3YXMgaGlkZGVuLgotCi0tIElzc3VlICMxMTA4ODogZG9uJ3QgY3Jhc2ggd2hlbiB1c2luZyBGNSB0byBydW4gYSBzY3JpcHQgaW4gSURMRSBvbiBNYWNPU1gKLSAgd2l0aCBUayA4LjUuCi0KLS0gSXNzdWUgIzEwMjg6IFRrIHJldHVybnMgaW52YWxpZCBVbmljb2RlIG51bGwgaW4gJUE6IFVuaWNvZGVEZWNvZGVFcnJvci4KLSAgV2l0aCBUayA8IDguNSBfdGtpbnRlci5jOlB5dGhvbkNtZCgpIHJhaXNlZCBVbmljb2RlRGVjb2RlRXJyb3IsIGNhdXNlZAotICBJRExFIHRvIGV4aXQuICBDb252ZXJ0ZWQgdG8gdmFsaWQgVW5pY29kZSBudWxsIGluIFB5dGhvbkNtZCgpLgotCi0tIElzc3VlICMxMTcxODogSURMRSdzIG9wZW4gbW9kdWxlIGRpYWxvZyBjb3VsZG4ndCBmaW5kIHRoZSBfX2luaXRfXy5weQotICBmaWxlIGluIGEgcGFja2FnZS4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE0MDUzOiBwYXRjaGNoZWNrLnB5ICgibWFrZSBwYXRjaGNoZWNrIikgbm93IHdvcmtzIHdpdGggTVEgcGF0Y2hlcy4KLSAgUGF0Y2ggYnkgRnJhbmNpc2NvIE1hcnTDrW4gQnJ1Z3XDqS4KLQotLSBJc3N1ZSAjMTM5MzA6IDJ0bzMgaXMgbm93IGFibGUgdG8gd3JpdGUgaXRzIGNvbnZlcnRlZCBvdXRwdXQgZmlsZXMgdG8gYW5vdGhlcgotICBkaXJlY3RvcnkgdHJlZSBhcyB3ZWxsIGFzIGNvcHlpbmcgdW5jaGFuZ2VkIGZpbGVzIGFuZCBhbHRlcmluZyB0aGUgZmlsZQotICBzdWZmaXguICBTZWUgaXRzIG5ldyAtbywgLVcgYW5kIC0tYWRkLXN1ZmZpeCBvcHRpb25zLiAgVGhpcyBtYWtlcyBpdCBtb3JlCi0gIHVzZWZ1bCBpbiBtYW55IGF1dG9tYXRlZCBjb2RlIHRyYW5zbGF0aW9uIHdvcmtmbG93cy4KLQotLSBJc3N1ZSAjMTM2Mjg6IHB5dGhvbi1nZGIucHkgaXMgbm93IGFibGUgdG8gcmV0cmlldmUgbW9yZSBmcmFtZXMgaW4gdGhlIFB5dGhvbgotICB0cmFjZWJhY2sgaWYgUHl0aG9uIGlzIG9wdGltaXplZC4KLQotLSBJc3N1ZSAjMTE5OTY6IGxpYnB5dGhvbiAoZ2RiKSwgcmVwbGFjZSAicHktYnQiIGNvbW1hbmQgYnkgInB5LWJ0LWZ1bGwiIGFuZAotICBhZGQgYSBzbWFydGVyICJweS1idCIgY29tbWFuZCBwcmludGluZyBhIGNsYXNzaWMgUHl0aG9uIHRyYWNlYmFjay4KLQotLSBJc3N1ZSAjMTExNzk6IE1ha2UgY2NiZW5jaCB3b3JrIHVuZGVyIFB5dGhvbiAzLjEgYW5kIDIuNyBhZ2Fpbi4KLQotLSBJc3N1ZSAjMTA2Mzk6IHJlaW5kZW50LnB5IG5vIGxvbmdlciBjb252ZXJ0cyBuZXdsaW5lcyBhbmQgd2lsbCByYWlzZQotICBhbiBlcnJvciBpZiBhdHRlbXB0aW5nIHRvIGNvbnZlcnQgYSBmaWxlIHdpdGggbWl4ZWQgbmV3bGluZXMuCi0gICItLW5ld2xpbmUiIG9wdGlvbiBhZGRlZCB0byBzcGVjaWZ5IG5ldyBsaW5lIGNoYXJhY3Rlci4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE2ODQ3OiBGaXhlZCBpbXByb3BlciB1c2Ugb2YgX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KCkgaW4KLSAgbm9uLXB5ZGVidWcgYnVpbGRzLiBTZXZlcmFsIGV4dGVuc2lvbiBtb2R1bGVzIG5vdyBjb21waWxlIGNsZWFubHkgd2hlbgotICBhc3NlcnQoKXMgYXJlIGVuYWJsZWQgaW4gc3RhbmRhcmQgYnVpbGRzICgtRERFQlVHIGZsYWcpLgotCi0tIElzc3VlICMxMzg0MDogVGhlIGVycm9yIG1lc3NhZ2UgcHJvZHVjZWQgYnkgY3R5cGVzLmNyZWF0ZV9zdHJpbmdfYnVmZmVyCi0gIHdoZW4gZ2l2ZW4gYSBVbmljb2RlIHN0cmluZyBoYXMgYmVlbiBmaXhlZC4KLQotLSBJc3N1ZSAjOTk3NTogc29ja2V0OiBGaXggaW5jb3JyZWN0IHVzZSBvZiBmbG93aW5mbyBhbmQgc2NvcGVfaWQuIFBhdGNoIGJ5Ci0gIFZpbG1vcyBOZWJlaGFqLgotCi0tIElzc3VlICM3Nzc3OiBzb2NrZXQ6IEFkZCBSZWxpYWJsZSBEYXRhZ3JhbSBTb2NrZXRzIChQRl9SRFMpIHN1cHBvcnQuCi0KLS0gSXNzdWUgIzEzMTU5OiBGaWxlSU8gYW5kIEJaMkNvbXByZXNzb3IvQloyRGVjb21wcmVzc29yIG5vdyB1c2UgYSBsaW5lYXItdGltZQotICBidWZmZXIgZ3Jvd3RoIHN0cmF0ZWd5IGluc3RlYWQgb2YgYSBxdWFkcmF0aWMtdGltZSBvbmUuCi0KLS0gSXNzdWUgIzEwMTQxOiBzb2NrZXQ6IEFkZCBTb2NrZXRDQU4gKFBGX0NBTikgc3VwcG9ydC4gSW5pdGlhbCBwYXRjaCBieQotICBNYXR0aGlhcyBGdWNocywgdXBkYXRlZCBieSBUaWFnbyBHb27Dp2FsdmVzLgotCi0tIElzc3VlICMxMzA3MDogRml4IGEgY3Jhc2ggd2hlbiBhIFRleHRJT1dyYXBwZXIgY2F1Z2h0IGluIGEgcmVmZXJlbmNlIGN5Y2xlCi0gIHdvdWxkIGJlIGZpbmFsaXplZCBhZnRlciB0aGUgcmVmZXJlbmNlIHRvIGl0cyB1bmRlcmx5aW5nIEJ1ZmZlcmVkUldQYWlyJ3MKLSAgd3JpdGVyIGdvdCBjbGVhcmVkIGJ5IHRoZSBHQy4KLQotLSBJc3N1ZSAjMTI4ODE6IGN0eXBlczogRml4IHNlZ2ZhdWx0IHdpdGggbGFyZ2Ugc3RydWN0dXJlIGZpZWxkIG5hbWVzLgotCi0tIElzc3VlICMxMzA1ODogb3NzYXVkaW9kZXY6IGZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIG9uIGVycm9yLiBQYXRjaCBieQotICBUaG9tYXMgSmFyb3NjaC4KLQotLSBJc3N1ZSAjMTMwMTM6IGN0eXBlczogRml4IGEgcmVmZXJlbmNlIGxlYWsgaW4gUHlDQXJyYXlUeXBlX2Zyb21fY3R5cGUuCi0gIFRoYW5rcyB0byBTdW1hbiBTYWhhIGZvciBmaW5kaW5nIHRoZSBidWcgYW5kIHByb3ZpZGluZyBhIHBhdGNoLgotCi0tIElzc3VlICMxMzAyMjogRml4OiBfbXVsdGlwcm9jZXNzaW5nLnJlY3ZmZCgpIGRvZXNuJ3QgY2hlY2sgdGhhdAotICBmaWxlIGRlc2NyaXB0b3Igd2FzIGFjdHVhbGx5IHJlY2VpdmVkLgotCi0tIElzc3VlICMxMTcyNzExOiBBZGQgJ2xvbmcgbG9uZycgc3VwcG9ydCB0byB0aGUgYXJyYXkgbW9kdWxlLgotICBJbml0aWFsIHBhdGNoIGJ5IE9yZW4gVGlyb3NoIGFuZCBIaXJva2F6dSBZYW1hbW90by4KLQotLSBJc3N1ZSAjMTI0ODM6IGN0eXBlczogRml4IGEgY3Jhc2ggd2hlbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgYSBjYWxsYmFjawotICBvYmplY3QgdHJpZ2dlcnMgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLgotCi0tIElzc3VlICMxMjk1MDogRml4IHBhc3NpbmcgZmlsZSBkZXNjcmlwdG9ycyBpbiBtdWx0aXByb2Nlc3NpbmcsIHVuZGVyCi0gIE9wZW5JbmRpYW5hL0lsbHVtb3MuCi0KLS0gSXNzdWUgIzEyNzY0OiBGaXggYSBjcmFzaCBpbiBjdHlwZXMgd2hlbiB0aGUgbmFtZSBvZiBhIFN0cnVjdHVyZSBmaWVsZCBpcyBub3QKLSAgYSBzdHJpbmcuCi0KLS0gSXNzdWUgIzExMjQxOiBzdWJjbGFzc2VzIG9mIGN0eXBlcy5BcnJheSBjYW4gbm93IGJlIHN1YmNsYXNzZWQuCi0KLS0gSXNzdWUgIzk2NTE6IEZpeCBhIGNyYXNoIHdoZW4gY3R5cGVzLmNyZWF0ZV9zdHJpbmdfYnVmZmVyKDApIHdhcyBwYXNzZWQgdG8KLSAgc29tZSBmdW5jdGlvbnMgbGlrZSBmaWxlLndyaXRlKCkuCi0KLS0gSXNzdWUgIzEwMzA5OiBEZWZpbmUgX0dOVV9TT1VSQ0Ugc28gdGhhdCBtcmVtYXAoKSBnZXRzIHRoZSBwcm9wZXIKLSAgc2lnbmF0dXJlLiAgV2l0aG91dCB0aGlzLCBhcmNoaXRlY3R1cmVzIHdoZXJlIHNpemVvZiB2b2lkKiAhPSBzaXplb2YgaW50IGFyZQotICBicm9rZW4uICBQYXRjaCBnaXZlbiBieSBIYWxsdmFyZCBCIEZ1cnVzZXRoLgotCi0tIElzc3VlICMxMjA1MTogRml4IHNlZ2ZhdWx0IGluIGpzb24uZHVtcHMoKSB3aGlsZSBlbmNvZGluZyBoaWdobHktbmVzdGVkCi0gIG9iamVjdHMgdXNpbmcgdGhlIEMgYWNjZWxlcmF0aW9ucy4KLQotLSBJc3N1ZSAjMTIwMTc6IEZpeCBzZWdmYXVsdCBpbiBqc29uLmxvYWRzKCkgd2hpbGUgZGVjb2RpbmcgaGlnaGx5LW5lc3RlZAotICBvYmplY3RzIHVzaW5nIHRoZSBDIGFjY2VsZXJhdGlvbnMuCi0KLS0gSXNzdWUgIzE4Mzg6IFByZXZlbnQgc2VnZmF1bHQgaW4gY3R5cGVzLCB3aGVuIF9hc19wYXJhbWV0ZXJfIG9uIGEgY2xhc3MgaXMgc2V0Ci0gIHRvIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzcy4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzEzMTI1OiBTaWxlbmNlIHNwdXJpb3VzIHRlc3RfbGliMnRvMyBvdXRwdXQgd2hlbiBpbiBub24tdmVyYm9zZSBtb2RlLgotICBQYXRjaCBieSBNaWtoYWlsIE5vdmlrb3YuCi0KLS0gSXNzdWUgIzEzNDQ3OiBBZGQgYSB0ZXN0IGZpbGUgdG8gaG9zdCByZWdyZXNzaW9uIHRlc3RzIGZvciBidWdzIGluIHRoZQotICBzY3JpcHRzIGZvdW5kIGluIHRoZSBUb29scyBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzEwODgxOiBGaXggdGVzdF9zaXRlIGZhaWx1cmUgd2l0aCBPUyBYIGZyYW1ld29yayBidWlsZHMuCi0KLS0gSXNzdWUgIzEzOTAxOiBQcmV2ZW50IHRlc3RfZGlzdHV0aWxzIGZhaWx1cmVzIG9uIE9TIFggd2l0aCAtLWVuYWJsZS1zaGFyZWQuCi0KLS0gSXNzdWUgIzEzODYyOiBGaXggc3B1cmlvdXMgZmFpbHVyZSBpbiB0ZXN0X3psaWIgZHVlIHRvIHJ1bnRpbWUvY29tcGlsZSB0aW1lCi0gIG1pbm9yIHZlcnNpb25zIG5vdCBtYXRjaGluZy4KLQotLSBJc3N1ZSAjMTI4MDQ6IEZpeCB0ZXN0X3NvY2tldCBhbmQgdGVzdF91cmxsaWIybmV0IGZhaWx1cmVzIHdoZW4gcnVubmluZyB0ZXN0cwotICBvbiBhIHN5c3RlbSB3aXRob3V0IGludGVybmV0IGFjY2Vzcy4KLQotLSBJc3N1ZSAjMTM3MjY6IEZpeCB0aGUgYW1iaWd1b3VzIC1TIGZsYWcgaW4gcmVncnRlc3QuIEl0IGlzIC1vLy0tc2xvdyBmb3Igc2xvdwotICB0ZXN0cy4KLQotLSBJc3N1ZSAjMTE2NTk6IEZpeCBSZXNvdXJjZVdhcm5pbmcgaW4gdGVzdF9zdWJwcm9jZXNzIGludHJvZHVjZWQgYnkgIzExNDU5LgotICBQYXRjaCBieSBCZW4gSGF5ZGVuLgotCi0tIElzc3VlICMxMTU3NzogZml4IFJlc291cmNlV2FybmluZyB0cmlnZ2VyZWQgYnkgaW1wcm92ZWQgYmluaGV4IHRlc3QgY292ZXJhZ2UKLQotLSBJc3N1ZSAjMTE1MDk6IFNpZ25pZmljYW50bHkgaW5jcmVhc2UgdGVzdCBjb3ZlcmFnZSBvZiBmaWxlaW5wdXQuCi0gIFBhdGNoIGJ5IERlbnZlciBDb25leWJlYXJlIGF0IFB5Q29uIDIwMTEgU3ByaW50cy4KLQotLSBJc3N1ZSAjMTE2ODk6IEZpeCBhIHZhcmlhYmxlIHNjb3BpbmcgZXJyb3IgaW4gYW4gc3FsaXRlMyB0ZXN0Ci0KLS0gSXNzdWUgIzEzNzg2OiBSZW1vdmUgdW5pbXBsZW1lbnRlZCAndHJhY2UnIGxvbmcgb3B0aW9uIGZyb20gcmVncnRlc3QucHkuCi0KLS0gSXNzdWUgIzEzNzI1OiBGaXggcmVncnRlc3QgdG8gcmVjb2duaXplIHRoZSBkb2N1bWVudGVkIC1kIGZsYWcuCi0gIFBhdGNoIGJ5IEVybm8gVHVraWEuCi0KLS0gSXNzdWUgIzEzMzA0OiBTa2lwIHRlc3QgY2FzZSBpZiB1c2VyIHNpdGUtcGFja2FnZXMgZGlzYWJsZWQgKC1zIG9yCi0gIFBZVEhPTk5PVVNFUlNJVEUpLiAgKFBhdGNoIGJ5IENhcmwgTWV5ZXIpCi0KLS0gSXNzdWUgIzU2NjE6IEFkZCBhIHRlc3QgZm9yIEVDT05OUkVTRVQvRVBJUEUgaGFuZGxpbmcgdG8gdGVzdF9hc3luY29yZS4gUGF0Y2gKLSAgYnkgWGF2aWVyIGRlIEdheWUuCi0KLS0gSXNzdWUgIzEzMjE4OiBGaXggdGVzdF9zc2wgZmFpbHVyZXMgb24gRGViaWFuL1VidW50dS4KLQotLSBSZS1lbmFibGUgbGliMnRvMydzIHRlc3RfcGFyc2VyLnB5IHRlc3RzLCB0aG91Z2ggd2l0aCBhbiBleHBlY3RlZCBmYWlsdXJlCi0gIChzZWUgaXNzdWUgIzEzMTI1KS4KLQotLSBJc3N1ZSAjMTI2NTY6IEFkZCB0ZXN0cyBmb3IgSVB2NiBhbmQgVW5peCBzb2NrZXRzIHRvIHRlc3RfYXN5bmNvcmUuCi0KLS0gSXNzdWUgIzY0ODQ6IEFkZCB1bml0IHRlc3RzIGZvciBtYWlsY2FwIG1vZHVsZSAocGF0Y2ggYnkgR3JlZ29yeSBOb2ZpKQotCi0tIElzc3VlICMxMTY1MTogSW1wcm92ZSB0aGUgTWFrZWZpbGUgdGVzdCB0YXJnZXRzIHRvIHJ1biBtb3JlIG9mIHRoZSB0ZXN0IHN1aXRlCi0gIG1vcmUgcXVpY2tseS4gVGhlIC0tbXVsdGlwcm9jZXNzIG9wdGlvbiBpcyBub3cgZW5hYmxlZCBieSBkZWZhdWx0LCByZWR1Y2luZwotICB0aGUgYW1vdW50IG9mIHRpbWUgbmVlZGVkIHRvIHJ1biB0aGUgdGVzdHMuICJtYWtlIHRlc3QiIGFuZCAibWFrZSBxdWlja3Rlc3QiCi0gIG5vdyBpbmNsdWRlIHNvbWUgcmVzb3VyY2UtaW50ZW5zaXZlIHRlc3RzLCBidXQgbm8gbG9uZ2VyIHJ1biB0aGUgdGVzdCBzdWl0ZQotICB0d2ljZSB0byBjaGVjayBmb3IgYnVncyBpbiAucHljIGdlbmVyYXRpb24uIFRvb2xzL3NjcmlwdHMvcnVuX3Rlc3QucHkgcHJvdmlkZXMKLSAgYW4gZWFzeSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB3YXkgdG8gcnVuIHRlc3Qgc3VpdGUgd2l0aCBzZW5zaWJsZSBkZWZhdWx0cy4KLQotLSBJc3N1ZSAjMTIzMzE6IFRoZSB0ZXN0IHN1aXRlIGZvciB0aGUgcGFja2FnaW5nIG1vZHVsZSBjYW4gbm93IHJ1biBmcm9tIGFuCi0gIGluc3RhbGxlZCBQeXRob24uCi0KLS0gSXNzdWUgIzEyMzMxOiBUaGUgdGVzdCBzdWl0ZSBmb3IgbGliMnRvMyBjYW4gbm93IHJ1biBmcm9tIGFuIGluc3RhbGxlZAotICBQeXRob24uCi0KLS0gSXNzdWUgIzEyNjI2OiBJbiByZWdydGVzdCwgYWxsb3cgdG8gZmlsdGVyIHRlc3RzIHVzaW5nIGEgZ2xvYiBmaWx0ZXIKLSAgd2l0aCB0aGUgYGAtbWBgIChvciBgYC0tbWF0Y2hgYCkgb3B0aW9uLiAgVGhpcyB3b3JrcyB3aXRoIGFsbCB0ZXN0IGNhc2VzCi0gIHVzaW5nIHRoZSB1bml0dGVzdCBtb2R1bGUuICBUaGlzIGlzIHVzZWZ1bCB3aXRoIGxvbmcgdGVzdCBzdWl0ZXMKLSAgc3VjaCBhcyB0ZXN0X2lvIG9yIHRlc3Rfc3VicHJvY2Vzcy4KLQotLSBJc3N1ZSAjMTI2MjQ6IEl0IGlzIG5vdyBwb3NzaWJsZSB0byBmYWlsIGFmdGVyIHRoZSBmaXJzdCBmYWlsdXJlIHdoZW4KLSAgcnVubmluZyBpbiB2ZXJib3NlIG1vZGUgKGBgLXZgYCBvciBgYC1XYGApLCBieSB1c2luZyB0aGUgYGAtLWZhaWxmYXN0YGAKLSAgKG9yIGBgLUdgYCkgb3B0aW9uIHRvIHJlZ3J0ZXN0LiAgVGhpcyBpcyB1c2VmdWwgd2l0aCBsb25nIHRlc3Qgc3VpdGVzCi0gIHN1Y2ggYXMgdGVzdF9pbyBvciB0ZXN0X3N1YnByb2Nlc3MuCi0KLS0gSXNzdWUgIzEyNTg3OiBDb3JyZWN0IGZhdWx0eSB0ZXN0IGZpbGUgYW5kIHJlZmVyZW5jZSBpbiB0ZXN0X3Rva2VuaXplLgotICAoUGF0Y2ggYnkgUm9iZXJ0IFhpYW8pCi0KLS0gSXNzdWUgIzEyNTczOiBBZGQgcmVzb3VyY2UgY2hlY2tzIGZvciBkYW5nbGluZyBUaHJlYWQgYW5kIFByb2Nlc3Mgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTI1NDk6IENvcnJlY3QgdGVzdF9wbGF0Zm9ybSB0byBub3QgZmFpbCB3aGVuIE9TIFggcmV0dXJucyAneDg2XzY0JwotICBhcyB0aGUgcHJvY2Vzc29yIHR5cGUgb24gc29tZSBNYWMgc3lzdGVtcy4KLQotLSBTa2lwIG5ldHdvcmsgdGVzdHMgd2hlbiBnZXRhZGRyaW5mbygpIHJldHVybnMgRUFJX0FHQUlOLCBtZWFuaW5nIGEgdGVtcG9yYXJ5Ci0gIGZhaWx1cmUgaW4gbmFtZSByZXNvbHV0aW9uLgotCi0tIElzc3VlICMxMTgxMjogU29sdmUgdHJhbnNpZW50IHNvY2tldCBmYWlsdXJlIHRvIGNvbm5lY3QgdG8gJ2xvY2FsaG9zdCcKLSAgaW4gdGVzdF90ZWxuZXRsaWIucHkuCi0KLS0gU29sdmVkIGEgcG90ZW50aWFsIGRlYWRsb2NrIGluIHRlc3RfdGVsbmV0bGliLnB5LiBSZWxhdGVkIHRvIGlzc3VlICMxMTgxMi4KLQotLSBBdm9pZCBmYWlsaW5nIGluIHRlc3Rfcm9ib3RwYXJzZXIgd2hlbiBtdWVibGVzbW9yYWxlZGEuY29tIGlzIGZsYWt5IGFuZAotICBhbiBvdmVyemVhbG91cyBETlMgc2VydmljZSAoZS5nLiBPcGVuRE5TKSByZWRpcmVjdHMgdG8gYSBwbGFjZWhvbGRlcgotICBXZWIgc2l0ZS4KLQotLSBBdm9pZCBmYWlsaW5nIGluIHRlc3RfdXJsbGlibmV0LnRlc3RfYmFkX2FkZHJlc3Mgd2hlbiBzb21lIG92ZXJ6ZWFsb3VzCi0gIEROUyBzZXJ2aWNlIChlLmcuIE9wZW5ETlMpIHJlc29sdmVzIGEgbm9uLWV4aXN0ZW50IGRvbWFpbiBuYW1lLiAgVGhlIHRlc3QKLSAgaXMgbm93IHNraXBwZWQgaW5zdGVhZC4KLQotLSBJc3N1ZSAjMTI0NDA6IFdoZW4gdGVzdGluZyB3aGV0aGVyIHNvbWUgYml0cyBpbiBTU0xDb250ZXh0Lm9wdGlvbnMgY2FuIGJlCi0gIHJlc2V0LCBjaGVjayB0aGUgdmVyc2lvbiBvZiB0aGUgT3BlblNTTCBoZWFkZXJzIFB5dGhvbiB3YXMgY29tcGlsZWQgYWdhaW5zdCwKLSAgcmF0aGVyIHRoYW4gdGhlIHJ1bnRpbWUgdmVyc2lvbiBvZiB0aGUgT3BlblNTTCBsaWJyYXJ5LgotCi0tIElzc3VlICMxMTUxMjogQWRkIGEgdGVzdCBzdWl0ZSBmb3IgdGhlIGNnaXRiIG1vZHVsZS4gUGF0Y2ggYnkgUm9iYmllIENsZW1vbnMuCi0KLS0gSXNzdWUgIzEyNDk3OiBJbnN0YWxsIHRlc3QvZGF0YSB0byBwcmV2ZW50IGZhaWx1cmVzIG9mIHRoZSB2YXJpb3VzIGNvZGVjbWFwcwotICB0ZXN0cy4KLQotLSBJc3N1ZSAjMTI0OTY6IEluc3RhbGwgdGVzdC9jYXBhdGggZGlyZWN0b3J5IHRvIHByZXZlbnQgdGVzdF9jb25uZWN0X2NhcGF0aAotICB0ZXN0Y2FzZSBmYWlsdXJlIGluIHRlc3Rfc3NsLgotCi0tIElzc3VlICMxMjQ2OTogUnVuIHdha2V1cCBhbmQgcGVuZGluZyBzaWduYWwgdGVzdHMgaW4gYSBzdWJwcm9jZXNzIHRvIHJ1biB0aGUKLSAgdGVzdCBpbiBhIGZyZXNoIHByb2Nlc3Mgd2l0aCBvbmx5IG9uZSB0aHJlYWQgYW5kIHRvIG5vdCBjaGFuZ2Ugc2lnbmFsCi0gIGhhbmRsaW5nIG9mIHRoZSBwYXJlbnQgcHJvY2Vzcy4KLQotLSBJc3N1ZSAjODcxNjogQXZvaWQgY3Jhc2hlcyBjYXVzZWQgYnkgQXF1YSBUayBvbiBPU1ggd2hlbiBhdHRlbXB0aW5nIHRvIHJ1bgotICB0ZXN0X3RrIG9yIHRlc3RfdHRrX2d1aW9ubHkgdW5kZXIgYSB1c2VybmFtZSB0aGF0IGlzIG5vdCBjdXJyZW50bHkgbG9nZ2VkCi0gIGluIHRvIHRoZSBjb25zb2xlIHdpbmRvd3NlcnZlciAoYXMgbWF5IGJlIHRoZSBjYXNlIHVuZGVyIGJ1aWxkYm90IG9yIHNzaCkuCi0KLS0gSXNzdWUgIzEyNDA3OiBFeHBsaWNpdGx5IHNraXAgdGVzdF9jYXBpLkVtYmVkZGluZ1Rlc3QgdW5kZXIgV2luZG93cy4KLQotLSBJc3N1ZSAjMTI0MDA6IHJlZ3J0ZXN0IC1XIGRvZXNuJ3QgcmVydW4gdGhlIHRlc3RzIHR3aWNlIGFueW1vcmUsIGJ1dCBjYXB0dXJlcwotICB0aGUgb3V0cHV0IGFuZCBkaXNwbGF5cyBpdCBvbiBmYWlsdXJlIGluc3RlYWQuIHJlZ3J0ZXN0IC12IGRvZXNuJ3QgcHJpbnQgdGhlCi0gIGVycm9yIHR3aWNlIGFueW1vcmUgaWYgdGhlcmUgaXMgb25seSBvbmUgZXJyb3IuCi0KLS0gSXNzdWUgIzEyMTQxOiBJbnN0YWxsIGNvcGllcyBvZiB0ZW1wbGF0ZSBDIG1vZHVsZSBmaWxlIHNvIHRoYXQKLSAgdGVzdF9idWlsZF9leHQgb2YgdGVzdF9kaXN0dXRpbHMgYW5kIHRlc3RfY29tbWFuZF9idWlsZF9leHQgb2YKLSAgdGVzdF9wYWNrYWdpbmcgYXJlIG5vIGxvbmdlciBzaWxlbnRseSBza2lwcGVkIHdoZW4KLSAgcnVuIG91dHNpZGUgb2YgYSBidWlsZCBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzg3NDY6IEFkZCBhZGRpdGlvbmFsIHRlc3RzIGZvciBvcy5jaGZsYWdzKCkgYW5kIG9zLmxjaGZsYWdzKCkuCi0gIFBhdGNoIGJ5IEdhcnJldHQgQ29vcGVyLgotCi0tIElzc3VlICMxMDczNjogRml4IHRlc3RfdHRrIHRlc3Rfd2lkZ2V0cyBmYWlsdXJlcyB3aXRoIENvY29hIFRrIDguNS45Ci0gIDIuOCsgb24gTWFjIE9TIFguICAoUGF0Y2ggYnkgUm9uYWxkIE91c3NvcmVuKQotCi0tIElzc3VlICMxMjA1NzogQWRkIHRlc3RzIGZvciBJU08gMjAyMiBjb2RlY3MgKGlzbzIwMjJfanAsIGlzbzIwMjJfanBfMiwKLSAgaXNvMjAyMl9rcikuCi0KLS0gSXNzdWUgIzEyMDk2OiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiB0ZXN0X3RocmVhZGluZy50ZXN0X3dhaXRmb3IoKS4gUGF0Y2gKLSAgd3JpdHRlbiBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzExNjE0OiBpbXBvcnQgX19oZWxsb19fIHByaW50cyAiSGVsbG8gV29ybGQhIi4gUGF0Y2ggd3JpdHRlbiBieQotICBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzU3MjM6IEltcHJvdmUganNvbiB0ZXN0cyB0byBiZSBleGVjdXRlZCB3aXRoIGFuZCB3aXRob3V0IGFjY2VsZXJhdGlvbnMuCi0KLS0gSXNzdWUgIzEyMDQxOiBNYWtlIHRlc3Rfd2FpdDMgbW9yZSByb2J1c3QuCi0KLS0gSXNzdWUgIzExODczOiBDaGFuZ2UgcmVnZXggaW4gdGVzdF9jb21waWxlYWxsIHRvIGZpeCBvY2Nhc2lvbmFsIGZhaWx1cmVzIHdoZW4KLSAgd2hlbiB0aGUgcmFuZG9tbHkgZ2VuZXJhdGVkIHRlbXBvcmFyeSBwYXRoIGhhcHBlbmVkIHRvIG1hdGNoIHRoZSByZWdleC4KLQotLSBJc3N1ZSAjMTE5NTg6IEZpeCBGVFAgdGVzdHMgZm9yIElQdjYsIGJpbmQgdG8gIjo6MSIgaW5zdGVhZCBvZiAibG9jYWxob3N0Ii4KLSAgUGF0Y2ggd3JpdHRlbiBieSBDaGFybGVzLUZyYW5jb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjODQwNywgIzExODU5OiBGaXggdGVzdHMgb2YgdGVzdF9pbyB1c2luZyB0aHJlYWRzIGFuZCBhbiBhbGFybTogdXNlCi0gIHB0aHJlYWRfc2lnbWFzaygpIHRvIGVuc3VyZSB0aGF0IHRoZSBTSUdBTFJNIHNpZ25hbCBpcyByZWNlaXZlZCBieSB0aGUgbWFpbgotICB0aHJlYWQuCi0KLS0gSXNzdWUgIzExODExOiBGYWN0b3Igb3V0IGRldGVjdGlvbiBvZiBJUHY2IHN1cHBvcnQgb24gdGhlIGN1cnJlbnQgaG9zdAotICBhbmQgbWFrZSBpdCBhdmFpbGFibGUgYXMgYGB0ZXN0LnN1cHBvcnQuSVBWNl9FTkFCTEVEYGAuICBQYXRjaCBieQotICBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzEwOTE0OiBBZGQgYSBtaW5pbWFsIGVtYmVkZGluZyB0ZXN0IHRvIHRlc3RfY2FwaS4KLQotLSBJc3N1ZSAjMTEyMjM6IFNraXAgdGVzdF9sb2NrX2FjcXVpcmVfaW50ZXJydXB0aW9uKCkgYW5kCi0gIHRlc3RfcmxvY2tfYWNxdWlyZV9pbnRlcnJ1cHRpb24oKSBvZiB0ZXN0X3RocmVhZHNpZ25hbHMgaWYgYSB0aHJlYWQgbG9jayBpcwotICBpbXBsZW1lbnRlZCB1c2luZyBhIFBPU0lYIG11dGV4IGFuZCBhIFBPU0lYIGNvbmRpdGlvbiB2YXJpYWJsZS4gQSBQT1NJWAotICBjb25kaXRpb24gdmFyaWFibGUgY2Fubm90IGJlIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIChlLmcuIG9uIExpbnV4LCB0aGUKLSAgZnV0ZXggc3lzdGVtIGNhbGwgaXMgcmVzdGFydGVkKS4KLQotLSBJc3N1ZSAjMTE3OTA6IEZpeCBzcG9yYWRpYyBmYWlsdXJlcyBpbiB0ZXN0X211bHRpcHJvY2Vzc2luZy5XaXRoUHJvY2Vzc2VzVGVzdENvbmRpdGlvbi4KLQotLSBGaXggcG9zc2libGUgImZpbGUgYWxyZWFkeSBleGlzdHMiIGVycm9yIHdoZW4gcnVubmluZyB0aGUgdGVzdHMgaW4gcGFyYWxsZWwuCi0KLS0gSXNzdWUgIzExNzE5OiBGaXggbWVzc2FnZSBhYm91dCB1bmV4cGVjdGVkIHRlc3RfbXNpbGliIHNraXAgb24gbm9uLVdpbmRvd3MKLSAgcGxhdGZvcm1zLiBQYXRjaCBieSBOYWRlZW0gVmF3ZGEuCi0KLS0gSXNzdWUgIzExNzI3OiBBZGQgYSAtLXRpbWVvdXQgb3B0aW9uIHRvIHJlZ3J0ZXN0OiBpZiBhIHRlc3QgdGFrZXMgbW9yZSB0aGFuCi0gIFRJTUVPVVQgc2Vjb25kcywgZHVtcHMgdGhlIHRyYWNlYmFjayBvZiBhbGwgdGhyZWFkcyBhbmQgZXhpdHMuCi0KLS0gSXNzdWUgIzExNjUzOiBmaXggLVcgd2l0aCAtaiBpbiByZWdydGVzdC4KLQotLSBUaGUgZW1haWwgdGVzdCBzdWl0ZSBub3cgbGl2ZXMgaW4gdGhlIExpYi90ZXN0L3Rlc3RfZW1haWwgcGFja2FnZS4gIFRoZSB0ZXN0Ci0gIGhhcm5lc3MgY29kZSBoYXMgYWxzbyBiZWVuIG1vZGVybml6ZWQgdG8gYWxsb3cgdXNlIG9mIG5ldyB1bml0dGVzdCBmZWF0dXJlcy4KLQotLSByZWdydGVzdCBub3cgZGlzY292ZXJzIHRlc3QgcGFja2FnZXMgYXMgd2VsbCBhcyB0ZXN0IG1vZHVsZXMuCi0KLS0gSXNzdWUgIzExNTc3OiBpbXByb3ZlIHRlc3QgY292ZXJhZ2Ugb2YgYmluaGV4LnB5LiBQYXRjaCBieSBBcmthZHkgS29wbHlhcm92LgotCi0tIE5ldyB0ZXN0X2NyYXNoZXJzIGFkZGVkIHRvIGV4ZXJjaXNlIHRoZSBzY3JpcHRzIGluIHRoZSBMaWIvdGVzdC9jcmFzaGVycwotICBkaXJlY3RvcnkgYW5kIGNvbmZpcm0gdGhleSBmYWlsIGFzIGV4cGVjdGVkCi0KLS0gSXNzdWUgIzExNTc4OiBhZGRlZCB0ZXN0IGZvciB0aGUgdGltZWl0IG1vZHVsZS4gIFBhdGNoIGJ5IE1pY2hhZWwgSGVucnkuCi0KLS0gSXNzdWUgIzExNTAzOiBpbXByb3ZlIHRlc3QgY292ZXJhZ2Ugb2YgcG9zaXhwYXRoLnB5LiBQYXRjaCBieSBFdmFuIERhbmRyZWEuCi0KLS0gSXNzdWUgIzExNTA1OiBpbXByb3ZlcyB0ZXN0IGNvdmVyYWdlIG9mIHN0cmluZy5weSwgaW5jcmVhc2VzIGdyYW51bGFyaXR5IG9mCi0gIHN0cmluZy5Gb3JtYXR0ZXIgdGVzdHMuIEluaXRpYWwgcGF0Y2ggYnkgQWxpY2lhIEFybGVuLgotCi0tIElzc3VlICMxMTU0ODogSW1wcm92ZSB0ZXN0IGNvdmVyYWdlIG9mIHRoZSBzaHV0aWwgbW9kdWxlLiBQYXRjaCBieQotICBFdmFuIERhbmRyZWEuCi0KLS0gSXNzdWUgIzExNTU0OiBSZWFjdGl2YXRlZCB0ZXN0X2VtYWlsX2NvZGVjcy4KLQotLSBJc3N1ZSAjMTE1MDU6IGltcHJvdmVzIHRlc3QgY292ZXJhZ2Ugb2Ygc3RyaW5nLnB5LiBQYXRjaCBieSBBbGljaWEKLSAgQXJsZW4KLQotLSBJc3N1ZSAjMTE0OTA6IHRlc3Rfc3VicHJvY2Vzcy50ZXN0X2xlYWtpbmdfZmRzX29uX2Vycm9yIG5vIGxvbmdlciBnaXZlcyBhCi0gIGZhbHNlIHBvc2l0aXZlIGlmIHRoZSBsYXN0IGRpcmVjdG9yeSBpbiB0aGUgcGF0aCBpcyBpbmFjY2Vzc2libGUuCi0KLS0gSXNzdWUgIzExMjIzOiBGaXggdGVzdF90aHJlYWRzaWduYWxzIHRvIGZhaWwsIG5vdCBoYW5nLCB3aGVuIHRoZQotICBub24tc2VtYXBob3JlIGltcGxlbWVudGF0aW9uIG9mIGxvY2tzIGlzIHVzZWQgdW5kZXIgUE9TSVguCi0KLS0gSXNzdWUgIzEwOTExOiBBZGQgdGVzdHMgb24gQ0dJIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnMuIFBhdGNoIHdyaXR0ZW4gYnkKLSAgUGllcnJlIFF1ZW50ZWwuCi0KLS0gSXNzdWUgIzk5MzE6IEZpeCBoYW5ncyBpbiBHVUkgdGVzdHMgdW5kZXIgV2luZG93cyBpbiBjZXJ0YWluIGNvbmRpdGlvbnMuCi0gIFBhdGNoIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgotCi0tIElzc3VlICMxMDUxMjogUHJvcGVybHkgY2xvc2Ugc29ja2V0cyB1bmRlciB0ZXN0LnRlc3RfY2dpLgotCi0tIElzc3VlICMxMDk5MjogTWFrZSB0ZXN0cyBwYXNzIHVuZGVyIGNvdmVyYWdlLgotCi0tIElzc3VlICMxMDgyNjogUHJldmVudCBzcG9yYWRpYyBmYWlsdXJlIGluIHRlc3Rfc3VicHJvY2VzcyBvbiBTb2xhcmlzIGR1ZQotICB0byBvcGVuIGRvb3IgZmlsZXMuCi0KLS0gSXNzdWUgIzEwOTkwOiBQcmV2ZW50IHRlc3RzIGZyb20gY2xvYmJlcmluZyBhIHNldCB0cmFjZSBmdW5jdGlvbi4KLQotQy1BUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzEzNDUyOiBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbCgpIGRvZXNuJ3Qgc3VwcG9ydCBlcnJvciBoYW5kbGVycwotICBkaWZmZXJlbnQgdGhhbiAic3RyaWN0IiBhbnltb3JlLiBUaGUgY2FsbGVyIHdhcyB1bmFibGUgdG8gY29tcHV0ZSB0aGUKLSAgc2l6ZSBvZiB0aGUgb3V0cHV0IGJ1ZmZlcjogaXQgZGVwZW5kcyBvbiB0aGUgZXJyb3IgaGFuZGxlci4KLQotLSBJc3N1ZSAjMTM1NjA6IEFkZCBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKCksIFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKCkKLSAgYW5kIFB5VW5pY29kZV9FbmNvZGVMb2NhbGUoKSBmdW5jdGlvbnMgdG8gdGhlIEMgQVBJIHRvIGRlY29kZS9lbmNvZGUgZnJvbS90bwotICB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzEwODMxOiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpIHN1cHBvcnRzICVsaSwgJWxsaSBhbmQgJXppIGZvcm1hdHMuCi0KLS0gSXNzdWUgIzExMjQ2OiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVWIikgdG8gZGVjb2RlIHRoZSBieXRlIHN0cmluZyBmcm9tCi0gIFVURi04ICh3aXRoIHJlcGxhY2UgZXJyb3IgaGFuZGxlcikgaW5zdGVhZCBvZiBJU08tODg1OS0xIChpbiBzdHJpY3QgbW9kZSkuCi0gIFBhdGNoIHdyaXR0ZW4gYnkgUmF5IEFsbGVuLgotCi0tIElzc3VlICMxMDgzMDogRml4IFB5VW5pY29kZV9Gcm9tRm9ybWF0VigiJWMiKSBmb3Igbm9uLUJNUCBjaGFyYWN0ZXJzIG9uCi0gIG5hcnJvdyBidWlsZC4KLQotLSBBZGQgUHlPYmplY3RfR2VuZXJpY0dldERpY3QgYW5kIFB5T2JqZWN0X0dlbmVyaVNldERpY3QuIFRoZXkgYXJlIGdlbmVyaWMKLSAgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgZ2V0dGVyIGFuZCBzZXR0ZXIgb2YgYSBgYF9fZGljdF9fYGAgZGVzY3JpcHRvciBvZiBDCi0gIHR5cGVzLgotCi0tIElzc3VlICMxMzcyNzogQWRkIDMgbWFjcm9zIHRvIGFjY2VzcyBQeURhdGVUaW1lX0RlbHRhIG1lbWJlcnM6Ci0gIFB5RGF0ZVRpbWVfREVMVEFfR0VUX0RBWVMsIFB5RGF0ZVRpbWVfREVMVEFfR0VUX1NFQ09ORFMsCi0gIFB5RGF0ZVRpbWVfREVMVEFfR0VUX01JQ1JPU0VDT05EUy4KLQotLSBJc3N1ZSAjMTA1NDI6IEFkZCA0IG1hY3JvcyB0byB3b3JrIHdpdGggc3Vycm9nYXRlczogUHlfVU5JQ09ERV9JU19TVVJST0dBVEUsCi0gIFB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUsIFB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURSwKLSAgUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMuCi0KLS0gSXNzdWUgIzEyNzI0OiBBZGQgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEIG1hY3JvIGZvciByZXR1cm5pbmcgTm90SW1wbGVtZW50ZWQuCi0KLS0gUFlfUEFUQ0hMRVZFTF9SRVZJU0lPTiBoYXMgYmVlbiByZW1vdmVkLCBzaW5jZSBpdCdzIG1lYW5pbmdsZXNzIHdpdGgKLSAgTWVyY3VyaWFsLgotCi0tIElzc3VlICMxMjE3MzogVGhlIGZpcnN0IGFyZ3VtZW50IG9mIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsIGlzIG5vdyBgY29uc3QKLSAgY2hhciAqYCBpbnN0ZWFkIG9mIGBjaGFyICpgLgotCi0tIElzc3VlICMxMjM4MDogUHlBcmdfUGFyc2VUdXBsZSBub3cgYWNjZXB0cyBhIGJ5dGVhcnJheSBmb3IgdGhlICdjJyBmb3JtYXQuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjMwMDY6IEltcHJvdmUgdGhlIGRvY3VtZW50YXRpb24gYW5kIGluZGV4aW5nIG9mIGRpY3QuX19taXNzaW5nX18uCi0gIEFkZCBhbiBlbnRyeSBpbiB0aGUgbGFuZ3VhZ2UgZGF0YW1vZGVsIHNwZWNpYWwgbWV0aG9kcyBzZWN0aW9uLgotICBSZXZpc2UgYW5kIGluZGV4IGl0cyBkaXNjdXNzaW9uIGluIHRoZSBzdGR0eXBlcyBtYXBwaW5nL2RpY3Qgc2VjdGlvbi4KLQotLSBJc3N1ZSAjMTM5ODk6IERvY3VtZW50IHRoYXQgR3ppcEZpbGUgZG9lcyBub3Qgc3VwcG9ydCB0ZXh0IG1vZGUsIGFuZCBnaXZlIGEKLSAgbW9yZSBoZWxwZnVsIGVycm9yIG1lc3NhZ2Ugd2hlbiBvcGVuZWQgd2l0aCBhbiBpbnZhbGlkIG1vZGUgc3RyaW5nLgotCi0tIElzc3VlICMxMzkyMTogVW5kb2N1bWVudCBhbmQgY2xlYW4gdXAgc3FsaXRlMy5PcHRpbWl6ZWRVbmljb2RlLAotICB3aGljaCBpcyBvYnNvbGV0ZSBpbiBQeXRob24gMy54LiBJdCdzIG5vdyBhbGlhc2VkIHRvIHN0ciBmb3IKLSAgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCi0KLS0gSXNzdWUgIzEyMTAyOiBEb2N1bWVudCB0aGF0IGJ1ZmZlcmVkIGZpbGVzIG11c3QgYmUgZmx1c2hlZCBiZWZvcmUgYmVpbmcgdXNlZAotICB3aXRoIG1tYXAuIFBhdGNoIGJ5IFN0ZWZmZW4gRGFvZGUgTnVycG1lc28uCi0KLS0gSXNzdWUgIzg5ODI6IEltcHJvdmUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBhcmdwYXJzZSBOYW1lc3BhY2Ugb2JqZWN0LgotCi0tIElzc3VlICM5MzQzOiBEb2N1bWVudCB0aGF0IGFyZ3BhcnNlIHBhcmVudCBwYXJzZXJzIG11c3QgYmUgY29uZmlndXJlZCBiZWZvcmUKLSAgdGhlaXIgY2hpbGRyZW4uCi0KLS0gSXNzdWUgIzEzNDk4OiBDbGFyaWZ5IGRvY3Mgb2Ygb3MubWFrZWRpcnMoKSdzIGV4aXN0X29rIGFyZ3VtZW50LiAgRG9uZSB3aXRoCi0gIGdyZWF0IG5hdGl2ZS1zcGVha2VyIGhlbHAgZnJvbSBSLiBEYXZpZCBNdXJyYXkuCi0KLS0gSXNzdWVzICMxMzQ5MSBhbmQgIzEzOTk1OiBGaXggbWFueSBlcnJvcnMgaW4gc3FsaXRlMyBkb2N1bWVudGF0aW9uLgotICBJbml0aWFsIHBhdGNoIGZvciAjMTM0OTEgYnkgSm9oYW5uZXMgVm9nZWwuCi0KLS0gSXNzdWUgIzEzNDAyOiBEb2N1bWVudCBhYnNvbHV0ZW5lc3Mgb2Ygc3lzLmV4ZWN1dGFibGUuCi0KLS0gSXNzdWUgIzEzODgzOiBQWVRIT05DQVNFT0sgYWxzbyB3b3JrcyBvbiBPUyBYLgotCi0tIElzc3VlICM5MDIxOiBBZGQgYW4gaW50cm9kdWN0aW9uIHRvIHRoZSBjb3B5IG1vZHVsZSBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICM2MDA1OiBFeGFtcGxlcyBpbiB0aGUgc29ja2V0IGxpYnJhcnkgZG9jdW1lbnRhdGlvbiB1c2Ugc2VuZGFsbCwgd2hlcmUKLSAgcmVsZXZhbnQsIGluc3RlYWQgc2VuZCBtZXRob2QuCi0KLS0gSXNzdWUgIzEyNzk4OiBVcGRhdGVkIHRoZSBtaW1ldHlwZXMgZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTI5NDk6IERvY3VtZW50IHRoZSBrd29ubHlhcmdjb3VudCBhcmd1bWVudCBmb3IgdGhlIFB5Q29kZV9OZXcKLSAgQyBBUEkgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzEzNTEzOiBGaXggaW8uSU9CYXNlIGRvY3VtZW50YXRpb24gdG8gY29ycmVjdGx5IGxpbmsgdG8gdGhlCi0gIGlvLklPQmFzZS5yZWFkbGluZSBtZXRob2QgaW5zdGVhZCBvZiB0aGUgcmVhZGxpbmUgbW9kdWxlLgotCi0tIElzc3VlICMxMzIzNzogUmVvcmdhbmlzZSBzdWJwcm9jZXNzIGRvY3VtZW50YXRpb24gdG8gZW1waGFzaXNlIGNvbnZlbmllbmNlCi0gIGZ1bmN0aW9ucyBhbmQgdGhlIG1vc3QgY29tbW9ubHkgbmVlZGVkIGFyZ3VtZW50cyB0byBQb3Blbi4KLQotLSBJc3N1ZSAjMTMxNDE6IERlbW9uc3RyYXRlIHJlY29tbWVuZGVkIHN0eWxlIGZvciBzb2NrZXRzZXJ2ZXIgZXhhbXBsZXMuCi0KLS0gSXNzdWUgIzExODE4OiBGaXggdGVtcGZpbGUgZXhhbXBsZXMgZm9yIFB5dGhvbiAzLgotCi0KICoqKEZvciBpbmZvcm1hdGlvbiBhYm91dCBvbGRlciB2ZXJzaW9ucywgY29uc3VsdCB0aGUgSElTVE9SWSBmaWxlLikqKgpkaWZmIC0tZ2l0IGEvTWlzYy9Qb3J0aW5nIGIvTWlzYy9Qb3J0aW5nCmluZGV4IDUxZjczZTYuLmM0M2IxMTIgMTAwNjQ0Ci0tLSBhL01pc2MvUG9ydGluZworKysgYi9NaXNjL1BvcnRpbmcKQEAgLTEsNDEgKzEgQEAKLVEuIEkgd2FudCB0byBwb3J0IFB5dGhvbiB0byBhIG5ldyBwbGF0Zm9ybS4gIEhvdyBkbyBJIGJlZ2luPwotCi1BLiBJIGd1ZXNzIHRoZSB0d28gdGhpbmdzIHRvIHN0YXJ0IHdpdGggaXMgdG8gZmFtaWxpYXJpemUgeW91cnNlbGYKLXdpdGggYXJlIHRoZSBkZXZlbG9wbWVudCBzeXN0ZW0gZm9yIHlvdXIgdGFyZ2V0IHBsYXRmb3JtIGFuZCB0aGUKLWdlbmVyaWMgYnVpbGQgcHJvY2VzcyBmb3IgUHl0aG9uLiAgTWFrZSBzdXJlIHlvdSBjYW4gY29tcGlsZSBhbmQgcnVuIGEKLXNpbXBsZSBoZWxsby13b3JsZCBwcm9ncmFtIG9uIHlvdXIgdGFyZ2V0IHBsYXRmb3JtLiAgTWFrZSBzdXJlIHlvdSBjYW4KLWNvbXBpbGUgYW5kIHJ1biB0aGUgUHl0aG9uIGludGVycHJldGVyIG9uIGEgcGxhdGZvcm0gdG8gd2hpY2ggaXQgaGFzCi1hbHJlYWR5IGJlZW4gcG9ydGVkIChwcmVmZXJhYmx5IFVuaXgsIGJ1dCBNYWMgb3IgV2luZG93cyB3aWxsIGRvLAotdG9vKS4KLQotSSBhbHNvIHdvdWxkIG5ldmVyIHN0YXJ0IHNvbWV0aGluZyBsaWtlIHRoaXMgd2l0aG91dCBhdCBsZWFzdAotbWVkaXVtLWxldmVsIHVuZGVyc3RhbmRpbmcgb2YgeW91ciB0YXJnZXQgcGxhdGZvcm0gKGkuZS4gaG93IGl0IGlzCi1nZW5lcmFsbHkgdXNlZCwgaG93IHRvIHdyaXRlIHBsYXRmb3JtIHNwZWNpZmljIGFwcHMgZXRjLikgYW5kIFB5dGhvbgotKG9yIGVsc2UgeW91J2xsIG5ldmVyIGtub3cgaG93IHRvIHRlc3QgdGhlIHJlc3VsdHMpLgotCi1UaGUgYnVpbGQgcHJvY2VzcyBmb3IgUHl0aG9uLCBpbiBwYXJ0aWN1bGFyIHRoZSBNYWtlZmlsZXMgaW4gdGhlCi1zb3VyY2UgZGlzdHJpYnV0aW9uLCB3aWxsIGdpdmUgeW91IGEgaGludCBvbiB3aGljaCBmaWxlcyB0byBjb21waWxlCi1mb3IgUHl0aG9uLiAgTm90IGFsbCBzb3VyY2UgZmlsZXMgYXJlIHJlbGV2YW50IC0tIHNvbWUgYXJlIHBsYXRmb3JtCi1zcGVjaWZpYywgb3RoZXJzIGFyZSBvbmx5IHVzZWQgaW4gZW1lcmdlbmNpZXMgKGUuZy4gZ2V0b3B0LmMpLiAgVGhlCi1NYWtlZmlsZXMgdGVsbCB0aGUgc3RvcnkuCi0KLVlvdSdsbCBhbHNvIG5lZWQgYSBweWNvbmZpZy5oIGZpbGUgdGFpbG9yZWQgZm9yIHlvdXIgcGxhdGZvcm0uICBZb3UgY2FuCi1zdGFydCB3aXRoIHB5Y29uZmlnLmguaW4sIHJlYWQgdGhlIGNvbW1lbnRzIGFuZCB0dXJuIG9uIGRlZmluaXRpb25zIHRoYXQKLWFwcGx5IHRvIHlvdXIgcGxhdGZvcm0uCi0KLUFuZCB5b3UnbGwgbmVlZCBhIGNvbmZpZy5jIGZpbGUsIHdoaWNoIGxpc3RzIHRoZSBidWlsdC1pbiBtb2R1bGVzIHlvdQotc3VwcG9ydC4gIFN0YXJ0IHdpdGggTW9kdWxlcy9jb25maWcuYy5pbi4KLQotRmluYWxseSwgeW91J2xsIHJ1biBpbnRvIHNvbWUgdGhpbmdzIHRoYXQgYXJlbid0IHN1cHBvcnRlZCBvbiB5b3VyCi10YXJnZXQgcGxhdGZvcm0uICBGb3JnZXQgYWJvdXQgdGhlIHBvc2l4IG1vZHVsZSBmb3Igbm93IC0tIHNpbXBseSB0YWtlIAotaXQgb3V0IG9mIHRoZSBjb25maWcuYyBmaWxlLgotCi1CYW5nIG9uIGl0IHVudGlsIHlvdSBnZXQgYSA+Pj4gcHJvbXB0LiAgKFlvdSBtYXkgaGF2ZSB0byBkaXNhYmxlIHRoZQotaW1wb3J0aW5nIG9mICJzaXRlLnB5IiBieSBwYXNzaW5nIHRoZSAtUyBvcHRpb24uKQotCi1UaGVuIGJhbmcgb24gaXQgdW50aWwgaXQgZXhlY3V0ZXMgdmVyeSBzaW1wbGUgUHl0aG9uIHN0YXRlbWVudHMuCi0KLU5vdyBiYW5nIG9uIGl0IHNvbWUgbW9yZS4gIEF0IHNvbWUgcG9pbnQgeW91J2xsIHdhbnQgdG8gdXNlIHRoZSBvcwotbW9kdWxlOyB0aGlzIGlzIHRoZSB0aW1lIHRvIHN0YXJ0IHRoaW5raW5nIGFib3V0IHdoYXQgdG8gZG8gd2l0aCB0aGUKLXBvc2l4IG1vZHVsZS4gIEl0J3Mgb2theSB0byBzaW1wbHkgI2lmZGVmIG91dCB0aG9zZSBmdW5jdGlvbnMgdGhhdAotY2F1c2UgcHJvYmxlbXM7IHRoZSByZW1haW5pbmcgb25lcyB3aWxsIGJlIHF1aXRlIHVzZWZ1bC4KK1RoaXMgZG9jdW1lbnQgaXMgbW92ZWQgdG8gaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2Z3VpZGUvZmFxLmh0bWwjaG93LWRvLWktcG9ydC1weXRob24tdG8tYS1uZXctcGxhdGZvcm0KZGlmZiAtLWdpdCBhL01pc2MvY292ZXJpdHlfbW9kZWwuYyBiL01pc2MvY292ZXJpdHlfbW9kZWwuYwppbmRleCA1N2YzYWViLi40OTNlN2MxIDEwMDY0NAotLS0gYS9NaXNjL2NvdmVyaXR5X21vZGVsLmMKKysrIGIvTWlzYy9jb3Zlcml0eV9tb2RlbC5jCkBAIC04NSw3ICs4NSw3IEBACiB9CiAKIC8qIFB5dGhvbi9maWxldXRpbHMuYyAqLwotd2NoYXJfdCAqX1B5X2NoYXIyd2NoYXIoY29uc3QgY2hhciogYXJnLCBzaXplX3QgKnNpemUpCit3Y2hhcl90ICpQeV9EZWNvZGVMb2NhbGUoY29uc3QgY2hhciogYXJnLCBzaXplX3QgKnNpemUpCiB7CiAgICB3Y2hhcl90ICp3OwogICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3NpbmtfXyhhcmcpOwpAQCAtMTIyLDcgKzEyMiw4IEBACiAKIC8qIENvdmVyaXR5IGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGF0IGZkb3BlbmRpcigpIG1heSB0YWtlIG93bmVyc2hpcCBvZiBmZC4gKi8KIAotRElSICpmZG9wZW5kaXIoaW50IGZkKSB7CitESVIgKmZkb3BlbmRpcihpbnQgZmQpCit7CiAgICAgRElSICpkOwogICAgIGlmIChkKSB7CiAgICAgICAgIF9fY292ZXJpdHlfY2xvc2VfXyhmZCk7CkBAIC0xMzAsMyArMTMxLDU4IEBACiAgICAgcmV0dXJuIGQ7CiB9CiAKKy8qIE1vZHVsZXMvX2RhdGV0aW1lLmMKKyAqCisgKiBDb3Zlcml0eSB0aGlua3MgdGhhdCB0aGUgaW5wdXQgdmFsdWVzIGZvciB0aGVzZSBmdW5jdGlvbiBjb21lIGZyb20gYQorICogdGFpbnRlZCBzb3VyY2UgUHlEYXRlVGltZV9EQVRFX0dFVF8qIG1hY3JvcyB1c2UgYml0IHNoaWZ0aW5nLgorICovCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbGRfc3RydWN0X3RpbWUoaW50IHksIGludCBtLCBpbnQgZCwgaW50IGhoLCBpbnQgbW0sIGludCBzcywgaW50IGRzdGZsYWcpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICAKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKHkpOworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18obSk7CisgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2FuaXRpemVfXyhkKTsKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKGhoKTsKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKG1tKTsKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKHNzKTsKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKGRzdGZsYWcpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludAoreW1kX3RvX29yZChpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5KQoreworICAgIGludCBvcmQgPSAwOworCisgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2FuaXRpemVfXyh5ZWFyKTsKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKG1vbnRoKTsKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKGRheSk7CisKKyAgICByZXR1cm4gb3JkOworfQorCitzdGF0aWMgaW50Citub3JtYWxpemVfZGF0ZShpbnQgKnllYXIsIGludCAqbW9udGgsIGludCAqZGF5KQoreworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18oKnllYXIpOworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18oKm1vbnRoKTsKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKCpkYXkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3dlZWtkYXkoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSkKK3sKKyAgICBpbnQgdyA9IDA7CisKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKHllYXIpOworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18obW9udGgpOworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18oZGF5KTsKKworICAgIHJldHVybiB3OworfQorCmRpZmYgLS1naXQgYS9NaXNjL2dkYmluaXQgYi9NaXNjL2dkYmluaXQKaW5kZXggOTQ4NGI1MS4uM2I2ZmU1MCAxMDA2NDQKLS0tIGEvTWlzYy9nZGJpbml0CisrKyBiL01pc2MvZ2RiaW5pdApAQCAtMTUwLDEwICsxNTAsMTAgQEAKIAogIyBnZW5lcmFsbHkgdXNlZnVsIG1hY3JvIHRvIHByaW50IGEgVW5pY29kZSBzdHJpbmcKIGRlZiBwdQotICBzZXQgJHVuaSA9ICRhcmcwIAorICBzZXQgJHVuaSA9ICRhcmcwCiAgIHNldCAkaSA9IDAKICAgd2hpbGUgKCokdW5pICYmICRpKys8MTAwKQotICAgIGlmICgqJHVuaSA8IDB4ODApIAorICAgIGlmICgqJHVuaSA8IDB4ODApCiAgICAgICBwcmludCAqKGNoYXIqKSR1bmkrKwogICAgIGVsc2UKICAgICAgIHByaW50IC94ICooc2hvcnQqKSR1bmkrKwpkaWZmIC0tZ2l0IGEvTWlzYy9weXRob24ubWFuIGIvTWlzYy9weXRob24ubWFuCmluZGV4IGVhOTU0MGMuLjRlMWE4MWQgMTAwNjQ0Ci0tLSBhL01pc2MvcHl0aG9uLm1hbgorKysgYi9NaXNjL3B5dGhvbi5tYW4KQEAgLTEwMywxMCArMTAzLDEwIEBACiBhcHBsaWNhdGlvbnMuCiBTZWUgdGhlIGludGVybmFsIGRvY3VtZW50YXRpb24gZm9yIGhpbnRzLgogLlBQCi1Eb2N1bWVudGF0aW9uIGZvciBpbnN0YWxsZWQgUHl0aG9uIG1vZHVsZXMgYW5kIHBhY2thZ2VzIGNhbiBiZSAKLXZpZXdlZCBieSBydW5uaW5nIHRoZSAKK0RvY3VtZW50YXRpb24gZm9yIGluc3RhbGxlZCBQeXRob24gbW9kdWxlcyBhbmQgcGFja2FnZXMgY2FuIGJlCit2aWV3ZWQgYnkgcnVubmluZyB0aGUKIC5CIHB5ZG9jCi1wcm9ncmFtLiAgCitwcm9ncmFtLgogLlNIIENPTU1BTkQgTElORSBPUFRJT05TCiAuVFAKIC5CIFwtQgpAQCAtMTQzLDI5ICsxNDMsMjYgQEAKIC5UUAogLkIgXC1JCiBSdW4gUHl0aG9uIGluIGlzb2xhdGVkIG1vZGUuIFRoaXMgYWxzbyBpbXBsaWVzIFxmQlwtRVxmUCBhbmQgXGZCXC1zXGZQLiBJbgotaXNvbGF0ZWQgbW9kZSBzeXMucGF0aCBjb250YWlucyBuZWl0aGVyIHRoZSBzY3JpcHTigJlzIGRpcmVjdG9yeSBub3IgdGhlIHVzZXLigJlzCitpc29sYXRlZCBtb2RlIHN5cy5wYXRoIGNvbnRhaW5zIG5laXRoZXIgdGhlIHNjcmlwdCdzIGRpcmVjdG9yeSBub3IgdGhlIHVzZXIncwogc2l0ZS1wYWNrYWdlcyBkaXJlY3RvcnkuIEFsbCBQWVRIT04qIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgaWdub3JlZCwgdG9vLgogRnVydGhlciByZXN0cmljdGlvbnMgbWF5IGJlIGltcG9zZWQgdG8gcHJldmVudCB0aGUgdXNlciBmcm9tIGluamVjdGluZwogbWFsaWNpb3VzIGNvZGUuCiAuVFAKIC5CSSAiXC1tICIgbW9kdWxlLW5hbWUKLVNlYXJjaGVzIAotLkkgc3lzLnBhdGggCi1mb3IgdGhlIG5hbWVkIG1vZHVsZSBhbmQgcnVucyB0aGUgY29ycmVzcG9uZGluZyAKLS5JIC5weSAKK1NlYXJjaGVzCisuSSBzeXMucGF0aAorZm9yIHRoZSBuYW1lZCBtb2R1bGUgYW5kIHJ1bnMgdGhlIGNvcnJlc3BvbmRpbmcKKy5JIC5weQogZmlsZSBhcyBhIHNjcmlwdC4KIC5UUAogLkIgXC1PCi1UdXJuIG9uIGJhc2ljIG9wdGltaXphdGlvbnMuICBUaGlzIGNoYW5nZXMgdGhlIGZpbGVuYW1lIGV4dGVuc2lvbiBmb3IKLWNvbXBpbGVkIChieXRlY29kZSkgZmlsZXMgZnJvbQotLkkgLnB5YwotdG8gXGZJLnB5b1xmUC4gIEdpdmVuIHR3aWNlLCBjYXVzZXMgZG9jc3RyaW5ncyB0byBiZSBkaXNjYXJkZWQuCitUdXJuIG9uIGJhc2ljIG9wdGltaXphdGlvbnMuICBHaXZlbiB0d2ljZSwgY2F1c2VzIGRvY3N0cmluZ3MgdG8gYmUgZGlzY2FyZGVkLgogLlRQCiAuQiBcLU9PCiBEaXNjYXJkIGRvY3N0cmluZ3MgaW4gYWRkaXRpb24gdG8gdGhlIFxmQi1PXGZQIG9wdGltaXphdGlvbnMuCiAuVFAKIC5CIFwtcQotRG8gbm90IHByaW50IHRoZSB2ZXJzaW9uIGFuZCBjb3B5cmlnaHQgbWVzc2FnZXMuIFRoZXNlIG1lc3NhZ2VzIGFyZSAKK0RvIG5vdCBwcmludCB0aGUgdmVyc2lvbiBhbmQgY29weXJpZ2h0IG1lc3NhZ2VzLiBUaGVzZSBtZXNzYWdlcyBhcmUKIGFsc28gc3VwcHJlc3NlZCBpbiBub24taW50ZXJhY3RpdmUgbW9kZS4KIC5UUAogLkIgXC1zCkBAIC0xOTIsNyArMTg5LDcgQEAKIC5CIFwtdgogUHJpbnQgYSBtZXNzYWdlIGVhY2ggdGltZSBhIG1vZHVsZSBpcyBpbml0aWFsaXplZCwgc2hvd2luZyB0aGUgcGxhY2UKIChmaWxlbmFtZSBvciBidWlsdC1pbiBtb2R1bGUpIGZyb20gd2hpY2ggaXQgaXMgbG9hZGVkLiAgV2hlbiBnaXZlbgotdHdpY2UsIHByaW50IGEgbWVzc2FnZSBmb3IgZWFjaCBmaWxlIHRoYXQgaXMgY2hlY2tlZCBmb3Igd2hlbiAKK3R3aWNlLCBwcmludCBhIG1lc3NhZ2UgZm9yIGVhY2ggZmlsZSB0aGF0IGlzIGNoZWNrZWQgZm9yIHdoZW4KIHNlYXJjaGluZyBmb3IgYSBtb2R1bGUuICBBbHNvIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIG1vZHVsZSBjbGVhbnVwCiBhdCBleGl0LgogLlRQCkBAIC00MTcsNyArNDE0LDcgQEAKIC5JUCBQWVRIT05WRVJCT1NFCiBJZiB0aGlzIGlzIHNldCB0byBhIG5vbi1lbXB0eSBzdHJpbmcgaXQgaXMgZXF1aXZhbGVudCB0byBzcGVjaWZ5aW5nCiB0aGUgXGZCXC12XGZQIG9wdGlvbi4gSWYgc2V0IHRvIGFuIGludGVnZXIsIGl0IGlzIGVxdWl2YWxlbnQgdG8KLXNwZWNpZnlpbmcgXGZCXC12XGZQIG11bHRpcGxlIHRpbWVzLiAKK3NwZWNpZnlpbmcgXGZCXC12XGZQIG11bHRpcGxlIHRpbWVzLgogLklQIFBZVEhPTldBUk5JTkdTCiBJZiB0aGlzIGlzIHNldCB0byBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgaXQgaXMgZXF1aXZhbGVudCB0bwogc3BlY2lmeWluZyB0aGUgXGZCXC1XXGZQIG9wdGlvbiBmb3IgZWFjaCBzZXBhcmF0ZSB2YWx1ZS4KZGlmZiAtLWdpdCBhL01vZHVsZXMvUkVBRE1FIGIvTW9kdWxlcy9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI3OWY1MwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvUkVBRE1FCkBAIC0wLDAgKzEsMiBAQAorU291cmNlIGZpbGVzIGZvciBzdGFuZGFyZCBsaWJyYXJ5IGV4dGVuc2lvbiBtb2R1bGVzLAorYW5kIGZvcm1lciBleHRlbnNpb24gbW9kdWxlcyB0aGF0IGFyZSBub3cgYnVpbHRpbiBtb2R1bGVzLgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9TZXR1cC5jb25maWcuaW4gYi9Nb2R1bGVzL1NldHVwLmNvbmZpZy5pbgppbmRleCA1YWMyNDA0Li5hZGFjMDMwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL1NldHVwLmNvbmZpZy5pbgorKysgYi9Nb2R1bGVzL1NldHVwLmNvbmZpZy5pbgpAQCAtNyw3ICs3LDcgQEAKIEBVU0VfVEhSRUFEX01PRFVMRUBfdGhyZWFkIF90aHJlYWRtb2R1bGUuYwogCiAjIFRoZSBzaWduYWwgbW9kdWxlCi1AVVNFX1NJR05BTF9NT0RVTEVAc2lnbmFsIHNpZ25hbG1vZHVsZS5jCitAVVNFX1NJR05BTF9NT0RVTEVAX3NpZ25hbCBzaWduYWxtb2R1bGUuYwogCiAjIFRoZSByZXN0IG9mIHRoZSBtb2R1bGVzIHByZXZpb3VzbHkgbGlzdGVkIGluIHRoaXMgZmlsZSBhcmUgYnVpbHQKICMgYnkgdGhlIHNldHVwLnB5IHNjcmlwdCBpbiBQeXRob24gMi4xIGFuZCBsYXRlci4KZGlmZiAtLWdpdCBhL01vZHVsZXMvU2V0dXAuZGlzdCBiL01vZHVsZXMvU2V0dXAuZGlzdAppbmRleCBiNjBiNTk0Li4wNmJhNmFkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL1NldHVwLmRpc3QKKysrIGIvTW9kdWxlcy9TZXR1cC5kaXN0CkBAIC0xMTgsNiArMTE4LDcgQEAKIGl0ZXJ0b29scyBpdGVydG9vbHNtb2R1bGUuYyAgICAjIEZ1bmN0aW9ucyBjcmVhdGluZyBpdGVyYXRvcnMgZm9yIGVmZmljaWVudCBsb29waW5nCiBhdGV4aXQgYXRleGl0bW9kdWxlLmMgICAgICAjIFJlZ2lzdGVyIGZ1bmN0aW9ucyB0byBiZSBydW4gYXQgaW50ZXJwcmV0ZXItc2h1dGRvd24KIF9zdGF0IF9zdGF0LmMJCQkjIHN0YXQuaCBpbnRlcmZhY2UKK3RpbWUgdGltZW1vZHVsZS5jCSMgLWxtICMgdGltZSBvcGVyYXRpb25zIGFuZCB2YXJpYWJsZXMKIAogIyBhY2Nlc3MgdG8gSVNPIEMgbG9jYWxlIHN1cHBvcnQKIF9sb2NhbGUgX2xvY2FsZW1vZHVsZS5jICAjIC1saW50bApAQCAtMTcxLDcgKzE3Miw2IEBACiAjY21hdGggY21hdGhtb2R1bGUuYyBfbWF0aC5jICMgLWxtICMgY29tcGxleCBtYXRoIGxpYnJhcnkgZnVuY3Rpb25zCiAjbWF0aCBtYXRobW9kdWxlLmMgX21hdGguYyAjIC1sbSAjIG1hdGggbGlicmFyeSBmdW5jdGlvbnMsIGUuZy4gc2luKCkKICNfc3RydWN0IF9zdHJ1Y3QuYwkjIGJpbmFyeSBzdHJ1Y3R1cmUgcGFja2luZy91bnBhY2tpbmcKLSN0aW1lIHRpbWVtb2R1bGUuYyAjIC1sbSAjIHRpbWUgb3BlcmF0aW9ucyBhbmQgdmFyaWFibGVzCiAjX3dlYWtyZWYgX3dlYWtyZWYuYwkjIGJhc2ljIHdlYWsgcmVmZXJlbmNlIHN1cHBvcnQKICNfdGVzdGNhcGkgX3Rlc3RjYXBpbW9kdWxlLmMgICAgIyBQeXRob24gQyBBUEkgdGVzdCBtb2R1bGUKICNfcmFuZG9tIF9yYW5kb21tb2R1bGUuYwkjIFJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19iejJtb2R1bGUuYyBiL01vZHVsZXMvX2J6Mm1vZHVsZS5jCmluZGV4IGU2NTJmNGQuLjQyNTg0NWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2J6Mm1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2J6Mm1vZHVsZS5jCkBAIC01MSw2ICs1MSwxNCBAQAogICAgIGJ6X3N0cmVhbSBienM7CiAgICAgY2hhciBlb2Y7ICAgICAgICAgICAvKiBUX0JPT0wgZXhwZWN0cyBhIGNoYXIgKi8KICAgICBQeU9iamVjdCAqdW51c2VkX2RhdGE7CisgICAgY2hhciBuZWVkc19pbnB1dDsKKyAgICBjaGFyICppbnB1dF9idWZmZXI7CisgICAgc2l6ZV90IGlucHV0X2J1ZmZlcl9zaXplOworCisgICAgLyogYnpzLT5hdmFpbF9pbiBpcyBvbmx5IDMyIGJpdCwgc28gd2Ugc3RvcmUgdGhlIHRydWUgbGVuZ3RoCisgICAgICAgc2VwYXJhdGVseS4gQ29udmVyc2lvbiBhbmQgbG9vcGluZyBpcyBlbmNhcHN1bGF0ZWQgaW4KKyAgICAgICBkZWNvbXByZXNzX2J1ZigpICovCisgICAgc2l6ZV90IGJ6c19hdmFpbF9pbl9yZWFsOwogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CiAjZW5kaWYKQEAgLTExMSwxOSArMTE5LDIzIEBACiB9CiAKICNpZiBCVUZTSVogPCA4MTkyCi0jZGVmaW5lIFNNQUxMQ0hVTksgODE5MgorI2RlZmluZSBJTklUSUFMX0JVRkZFUl9TSVpFIDgxOTIKICNlbHNlCi0jZGVmaW5lIFNNQUxMQ0hVTksgQlVGU0laCisjZGVmaW5lIElOSVRJQUxfQlVGRkVSX1NJWkUgQlVGU0laCiAjZW5kaWYKIAogc3RhdGljIGludAotZ3Jvd19idWZmZXIoUHlPYmplY3QgKipidWYpCitncm93X2J1ZmZlcihQeU9iamVjdCAqKmJ1ZiwgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKQogewogICAgIC8qIEV4cGFuZCB0aGUgYnVmZmVyIGJ5IGFuIGFtb3VudCBwcm9wb3J0aW9uYWwgdG8gdGhlIGN1cnJlbnQgc2l6ZSwKICAgICAgICBnaXZpbmcgdXMgYW1vcnRpemVkIGxpbmVhci10aW1lIGJlaGF2aW9yLiBVc2UgYSBsZXNzLXRoYW4tZG91YmxlCiAgICAgICAgZ3Jvd3RoIGZhY3RvciB0byBhdm9pZCBleGNlc3NpdmUgYWxsb2NhdGlvbi4gKi8KICAgICBzaXplX3Qgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoKmJ1Zik7CiAgICAgc2l6ZV90IG5ld19zaXplID0gc2l6ZSArIChzaXplID4+IDMpICsgNjsKKworICAgIGlmIChtYXhfbGVuZ3RoID4gMCAmJiBuZXdfc2l6ZSA+IChzaXplX3QpIG1heF9sZW5ndGgpCisgICAgICAgIG5ld19zaXplID0gKHNpemVfdCkgbWF4X2xlbmd0aDsKKwogICAgIGlmIChuZXdfc2l6ZSA+IHNpemUpIHsKICAgICAgICAgcmV0dXJuIF9QeUJ5dGVzX1Jlc2l6ZShidWYsIG5ld19zaXplKTsKICAgICB9IGVsc2UgeyAgLyogb3ZlcmZsb3cgKi8KQEAgLTE0MiwxNCArMTU0LDE0IEBACiAgICAgc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgU01BTExDSFVOSyk7CisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBJTklUSUFMX0JVRkZFUl9TSVpFKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgYy0+YnpzLm5leHRfaW4gPSBkYXRhOwogICAgIGMtPmJ6cy5hdmFpbF9pbiA9IDA7CiAgICAgYy0+YnpzLm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICBjLT5ienMuYXZhaWxfb3V0ID0gU01BTExDSFVOSzsKKyAgICBjLT5ienMuYXZhaWxfb3V0ID0gSU5JVElBTF9CVUZGRVJfU0laRTsKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIGNoYXIgKnRoaXNfb3V0OwogICAgICAgICBpbnQgYnplcnJvcjsKQEAgLTE2OCw3ICsxODAsNyBAQAogICAgICAgICBpZiAoYy0+YnpzLmF2YWlsX291dCA9PSAwKSB7CiAgICAgICAgICAgICBzaXplX3QgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemU7CiAgICAgICAgICAgICBpZiAoYnVmZmVyX2xlZnQgPT0gMCkgewotICAgICAgICAgICAgICAgIGlmIChncm93X2J1ZmZlcigmcmVzdWx0KSA8IDApCisgICAgICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQsIC0xKSA8IDApCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgYy0+YnpzLm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIGRhdGFfc2l6ZTsKICAgICAgICAgICAgICAgICBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKQEAgLTE4OCw3ICsyMDAsNyBAQAogICAgICAgICBpZiAoYWN0aW9uID09IEJaX0ZJTklTSCAmJiBiemVycm9yID09IEJaX1NUUkVBTV9FTkQpCiAgICAgICAgICAgICBicmVhazsKICAgICB9Ci0gICAgaWYgKGRhdGFfc2l6ZSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkpCisgICAgaWYgKGRhdGFfc2l6ZSAhPSAoc2l6ZV90KVB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSkKICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBkYXRhX3NpemUpIDwgMCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE5OSwxMiArMjExLDExIEBACiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KLW91dHB1dCBwcmVzZXQgZmlsZQogbW9kdWxlIF9iejIKIGNsYXNzIF9iejIuQloyQ29tcHJlc3NvciAiQloyQ29tcHJlc3NvciAqIiAiJkJaMkNvbXByZXNzb3JfVHlwZSIKIGNsYXNzIF9iejIuQloyRGVjb21wcmVzc29yICJCWjJEZWNvbXByZXNzb3IgKiIgIiZCWjJEZWNvbXByZXNzb3JfVHlwZSIKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWUzYjEzOTkyNGY1ZTE4Y2NdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWRjN2Q3OTkyYTc5ZjljYjddKi8KIAogI2luY2x1ZGUgImNsaW5pYy9fYnoybW9kdWxlLmMuaCIKIApAQCAtNDAyLDY0ICs0MTMsMTc1IEBACiAKIC8qIEJaMkRlY29tcHJlc3NvciBjbGFzcy4gKi8KIAotc3RhdGljIFB5T2JqZWN0ICoKLWRlY29tcHJlc3MoQloyRGVjb21wcmVzc29yICpkLCBjaGFyICpkYXRhLCBzaXplX3QgbGVuKQorLyogRGVjb21wcmVzcyBkYXRhIG9mIGxlbmd0aCBkLT5ienNfYXZhaWxfaW5fcmVhbCBpbiBkLT5ienMubmV4dF9pbi4gIFRoZSBvdXRwdXQKKyAgIGJ1ZmZlciBpcyBhbGxvY2F0ZWQgZHluYW1pY2FsbHkgYW5kIHJldHVybmVkLiAgQXQgbW9zdCBtYXhfbGVuZ3RoIGJ5dGVzIGFyZQorICAgcmV0dXJuZWQsIHNvIHNvbWUgb2YgdGhlIGlucHV0IG1heSBub3QgYmUgY29uc3VtZWQuIGQtPmJ6cy5uZXh0X2luIGFuZAorICAgZC0+YnpzX2F2YWlsX2luX3JlYWwgYXJlIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aGUgY29uc3VtZWQgaW5wdXQuICovCitzdGF0aWMgUHlPYmplY3QqCitkZWNvbXByZXNzX2J1ZihCWjJEZWNvbXByZXNzb3IgKmQsIFB5X3NzaXplX3QgbWF4X2xlbmd0aCkKIHsKLSAgICBzaXplX3QgZGF0YV9zaXplID0gMDsKKyAgICAvKiBkYXRhX3NpemUgaXMgc3RyaWN0bHkgcG9zaXRpdmUsIGJ1dCBiZWNhdXNlIHdlIHJlcGVhdGVkbHkgaGF2ZSB0bworICAgICAgIGNvbXBhcmUgYWdhaW5zdCBtYXhfbGVuZ3RoIGFuZCBQeUJ5dGVzX0dFVF9TSVpFIHdlIGRlY2xhcmUgaXQgYXMKKyAgICAgICBzaWduZWQgKi8KKyAgICBQeV9zc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBiel9zdHJlYW0gKmJ6cyA9ICZkLT5ienM7CiAKLSAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFNNQUxMQ0hVTkspOworICAgIGlmIChtYXhfbGVuZ3RoIDwgMCB8fCBtYXhfbGVuZ3RoID49IElOSVRJQUxfQlVGRkVSX1NJWkUpCisgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgSU5JVElBTF9CVUZGRVJfU0laRSk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG1heF9sZW5ndGgpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICBkLT5ienMubmV4dF9pbiA9IGRhdGE7Ci0gICAgLyogT24gYSA2NC1iaXQgc3lzdGVtLCBsZW4gbWlnaHQgbm90IGZpdCBpbiBhdmFpbF9pbiAoYW4gdW5zaWduZWQgaW50KS4KLSAgICAgICBEbyBkZWNvbXByZXNzaW9uIGluIGNodW5rcyBvZiBubyBtb3JlIHRoYW4gVUlOVF9NQVggYnl0ZXMgZWFjaC4gKi8KLSAgICBkLT5ienMuYXZhaWxfaW4gPSAodW5zaWduZWQgaW50KVB5X01JTihsZW4sIFVJTlRfTUFYKTsKLSAgICBsZW4gLT0gZC0+YnpzLmF2YWlsX2luOwotICAgIGQtPmJ6cy5uZXh0X291dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgZC0+YnpzLmF2YWlsX291dCA9IFNNQUxMQ0hVTks7CisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgYnpzLT5uZXh0X291dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CiAgICAgZm9yICg7OykgewotICAgICAgICBjaGFyICp0aGlzX291dDsKLSAgICAgICAgaW50IGJ6ZXJyb3I7CisgICAgICAgIGludCBienJldDsKKyAgICAgICAgc2l6ZV90IGF2YWlsOworCisgICAgICAgIC8qIE9uIGEgNjQtYml0IHN5c3RlbSwgYnVmZmVyIGxlbmd0aCBtaWdodCBub3QgZml0IGluIGF2YWlsX291dCwgc28gd2UKKyAgICAgICAgICAgZG8gZGVjb21wcmVzc2lvbiBpbiBjaHVua3Mgb2Ygbm8gbW9yZSB0aGFuIFVJTlRfTUFYIGJ5dGVzCisgICAgICAgICAgIGVhY2guIE5vdGUgdGhhdCB0aGUgZXhwcmVzc2lvbiBmb3IgYGF2YWlsYCBpcyBndWFyYW50ZWVkIHRvIGJlCisgICAgICAgICAgIHBvc2l0aXZlLCBzbyB0aGUgY2FzdCBpcyBzYWZlLiAqLworICAgICAgICBhdmFpbCA9IChzaXplX3QpIChQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemUpOworICAgICAgICBienMtPmF2YWlsX291dCA9ICh1bnNpZ25lZCBpbnQpUHlfTUlOKGF2YWlsLCBVSU5UX01BWCk7CisgICAgICAgIGJ6cy0+YXZhaWxfaW4gPSAodW5zaWduZWQgaW50KVB5X01JTihkLT5ienNfYXZhaWxfaW5fcmVhbCwgVUlOVF9NQVgpOworICAgICAgICBkLT5ienNfYXZhaWxfaW5fcmVhbCAtPSBienMtPmF2YWlsX2luOwogCiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgdGhpc19vdXQgPSBkLT5ienMubmV4dF9vdXQ7Ci0gICAgICAgIGJ6ZXJyb3IgPSBCWjJfYnpEZWNvbXByZXNzKCZkLT5ienMpOwotICAgICAgICBkYXRhX3NpemUgKz0gZC0+YnpzLm5leHRfb3V0IC0gdGhpc19vdXQ7CisgICAgICAgIGJ6cmV0ID0gQloyX2J6RGVjb21wcmVzcyhienMpOworICAgICAgICBkYXRhX3NpemUgPSBienMtPm5leHRfb3V0IC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICAgICAgZC0+YnpzX2F2YWlsX2luX3JlYWwgKz0gYnpzLT5hdmFpbF9pbjsKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGNhdGNoX2J6Ml9lcnJvcihiemVycm9yKSkKKyAgICAgICAgaWYgKGNhdGNoX2J6Ml9lcnJvcihienJldCkpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7CisgICAgICAgIGlmIChienJldCA9PSBCWl9TVFJFQU1fRU5EKSB7CiAgICAgICAgICAgICBkLT5lb2YgPSAxOwotICAgICAgICAgICAgbGVuICs9IGQtPmJ6cy5hdmFpbF9pbjsKLSAgICAgICAgICAgIGlmIChsZW4gPiAwKSB7IC8qIFNhdmUgbGVmdG92ZXIgaW5wdXQgdG8gdW51c2VkX2RhdGEgKi8KLSAgICAgICAgICAgICAgICBQeV9DTEVBUihkLT51bnVzZWRfZGF0YSk7Ci0gICAgICAgICAgICAgICAgZC0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGQtPmJ6cy5uZXh0X2luLCBsZW4pOwotICAgICAgICAgICAgICAgIGlmIChkLT51bnVzZWRfZGF0YSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGQtPmJ6cy5hdmFpbF9pbiA9PSAwKSB7Ci0gICAgICAgICAgICBpZiAobGVuID09IDApCisgICAgICAgIH0gZWxzZSBpZiAoZC0+YnpzX2F2YWlsX2luX3JlYWwgPT0gMCkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0gZWxzZSBpZiAoYnpzLT5hdmFpbF9vdXQgPT0gMCkgeworICAgICAgICAgICAgaWYgKGRhdGFfc2l6ZSA9PSBtYXhfbGVuZ3RoKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZC0+YnpzLmF2YWlsX2luID0gKHVuc2lnbmVkIGludClQeV9NSU4obGVuLCBVSU5UX01BWCk7Ci0gICAgICAgICAgICBsZW4gLT0gZC0+YnpzLmF2YWlsX2luOwotICAgICAgICB9Ci0gICAgICAgIGlmIChkLT5ienMuYXZhaWxfb3V0ID09IDApIHsKLSAgICAgICAgICAgIHNpemVfdCBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKLSAgICAgICAgICAgIGlmIChidWZmZXJfbGVmdCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBkLT5ienMubmV4dF9vdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOwotICAgICAgICAgICAgICAgIGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpIC0gZGF0YV9zaXplOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZC0+YnpzLmF2YWlsX291dCA9ICh1bnNpZ25lZCBpbnQpUHlfTUlOKGJ1ZmZlcl9sZWZ0LCBVSU5UX01BWCk7CisgICAgICAgICAgICBpZiAoZGF0YV9zaXplID09IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAmJgorICAgICAgICAgICAgICAgIGdyb3dfYnVmZmVyKCZyZXN1bHQsIG1heF9sZW5ndGgpID09IC0xKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBienMtPm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIGRhdGFfc2l6ZTsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoZGF0YV9zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSkKLSAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBkYXRhX3NpemUpIDwgMCkKKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBkYXRhX3NpemUpID09IC0xKQogICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJldHVybiByZXN1bHQ7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorZGVjb21wcmVzcyhCWjJEZWNvbXByZXNzb3IgKmQsIGNoYXIgKmRhdGEsIHNpemVfdCBsZW4sIFB5X3NzaXplX3QgbWF4X2xlbmd0aCkKK3sKKyAgICBjaGFyIGlucHV0X2J1ZmZlcl9pbl91c2U7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBiel9zdHJlYW0gKmJ6cyA9ICZkLT5ienM7CisKKyAgICAvKiBQcmVwZW5kIHVuY29uc3VtZWQgaW5wdXQgaWYgbmVjZXNzYXJ5ICovCisgICAgaWYgKGJ6cy0+bmV4dF9pbiAhPSBOVUxMKSB7CisgICAgICAgIHNpemVfdCBhdmFpbF9ub3csIGF2YWlsX3RvdGFsOworCisgICAgICAgIC8qIE51bWJlciBvZiBieXRlcyB3ZSBjYW4gYXBwZW5kIHRvIGlucHV0IGJ1ZmZlciAqLworICAgICAgICBhdmFpbF9ub3cgPSAoZC0+aW5wdXRfYnVmZmVyICsgZC0+aW5wdXRfYnVmZmVyX3NpemUpCisgICAgICAgICAgICAtIChienMtPm5leHRfaW4gKyBkLT5ienNfYXZhaWxfaW5fcmVhbCk7CisKKyAgICAgICAgLyogTnVtYmVyIG9mIGJ5dGVzIHdlIGNhbiBhcHBlbmQgaWYgd2UgbW92ZSBleGlzdGluZworICAgICAgICAgICBjb250ZW50cyB0byBiZWdpbm5pbmcgb2YgYnVmZmVyIChvdmVyd3JpdGluZworICAgICAgICAgICBjb25zdW1lZCBpbnB1dCkgKi8KKyAgICAgICAgYXZhaWxfdG90YWwgPSBkLT5pbnB1dF9idWZmZXJfc2l6ZSAtIGQtPmJ6c19hdmFpbF9pbl9yZWFsOworCisgICAgICAgIGlmIChhdmFpbF90b3RhbCA8IGxlbikgeworICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IGJ6cy0+bmV4dF9pbiAtIGQtPmlucHV0X2J1ZmZlcjsKKyAgICAgICAgICAgIGNoYXIgKnRtcDsKKyAgICAgICAgICAgIHNpemVfdCBuZXdfc2l6ZSA9IGQtPmlucHV0X2J1ZmZlcl9zaXplICsgbGVuIC0gYXZhaWxfbm93OworCisgICAgICAgICAgICAvKiBBc3NpZ24gdG8gdGVtcG9yYXJ5IHZhcmlhYmxlIGZpcnN0LCBzbyB3ZSBkb24ndAorICAgICAgICAgICAgICAgbG9zZSBhZGRyZXNzIG9mIGFsbG9jYXRlZCBidWZmZXIgaWYgcmVhbGxvYyBmYWlscyAqLworICAgICAgICAgICAgdG1wID0gUHlNZW1fUmVhbGxvYyhkLT5pbnB1dF9idWZmZXIsIG5ld19zaXplKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfTWVtb3J5RXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZC0+aW5wdXRfYnVmZmVyID0gdG1wOworICAgICAgICAgICAgZC0+aW5wdXRfYnVmZmVyX3NpemUgPSBuZXdfc2l6ZTsKKworICAgICAgICAgICAgYnpzLT5uZXh0X2luID0gZC0+aW5wdXRfYnVmZmVyICsgb2Zmc2V0OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGF2YWlsX25vdyA8IGxlbikgeworICAgICAgICAgICAgbWVtbW92ZShkLT5pbnB1dF9idWZmZXIsIGJ6cy0+bmV4dF9pbiwKKyAgICAgICAgICAgICAgICAgICAgZC0+YnpzX2F2YWlsX2luX3JlYWwpOworICAgICAgICAgICAgYnpzLT5uZXh0X2luID0gZC0+aW5wdXRfYnVmZmVyOworICAgICAgICB9CisgICAgICAgIG1lbWNweSgodm9pZCopKGJ6cy0+bmV4dF9pbiArIGQtPmJ6c19hdmFpbF9pbl9yZWFsKSwgZGF0YSwgbGVuKTsKKyAgICAgICAgZC0+YnpzX2F2YWlsX2luX3JlYWwgKz0gbGVuOworICAgICAgICBpbnB1dF9idWZmZXJfaW5fdXNlID0gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGJ6cy0+bmV4dF9pbiA9IGRhdGE7CisgICAgICAgIGQtPmJ6c19hdmFpbF9pbl9yZWFsID0gbGVuOworICAgICAgICBpbnB1dF9idWZmZXJfaW5fdXNlID0gMDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBkZWNvbXByZXNzX2J1ZihkLCBtYXhfbGVuZ3RoKTsKKyAgICBpZihyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZC0+ZW9mKSB7CisgICAgICAgIGQtPm5lZWRzX2lucHV0ID0gMDsKKyAgICAgICAgaWYgKGQtPmJ6c19hdmFpbF9pbl9yZWFsID4gMCkgeworICAgICAgICAgICAgUHlfU0VUUkVGKGQtPnVudXNlZF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnpzLT5uZXh0X2luLCBkLT5ienNfYXZhaWxfaW5fcmVhbCkpOworICAgICAgICAgICAgaWYgKGQtPnVudXNlZF9kYXRhID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChkLT5ienNfYXZhaWxfaW5fcmVhbCA9PSAwKSB7CisgICAgICAgIGJ6cy0+bmV4dF9pbiA9IE5VTEw7CisgICAgICAgIGQtPm5lZWRzX2lucHV0ID0gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGQtPm5lZWRzX2lucHV0ID0gMDsKKworICAgICAgICAvKiBJZiB3ZSBkaWQgbm90IHVzZSB0aGUgaW5wdXQgYnVmZmVyLCB3ZSBub3cgaGF2ZQorICAgICAgICAgICB0byBjb3B5IHRoZSB0YWlsIGZyb20gdGhlIGNhbGxlcidzIGJ1ZmZlciBpbnRvIHRoZQorICAgICAgICAgICBpbnB1dCBidWZmZXIgKi8KKyAgICAgICAgaWYgKCFpbnB1dF9idWZmZXJfaW5fdXNlKSB7CisKKyAgICAgICAgICAgIC8qIERpc2NhcmQgYnVmZmVyIGlmIGl0J3MgdG9vIHNtYWxsCisgICAgICAgICAgICAgICAocmVzaXppbmcgaXQgbWF5IG5lZWRsZXNzbHkgY29weSB0aGUgY3VycmVudCBjb250ZW50cykgKi8KKyAgICAgICAgICAgIGlmIChkLT5pbnB1dF9idWZmZXIgIT0gTlVMTCAmJgorICAgICAgICAgICAgICAgIGQtPmlucHV0X2J1ZmZlcl9zaXplIDwgZC0+YnpzX2F2YWlsX2luX3JlYWwpIHsKKyAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKGQtPmlucHV0X2J1ZmZlcik7CisgICAgICAgICAgICAgICAgZC0+aW5wdXRfYnVmZmVyID0gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogQWxsb2NhdGUgaWYgbmVjZXNzYXJ5ICovCisgICAgICAgICAgICBpZiAoZC0+aW5wdXRfYnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBkLT5pbnB1dF9idWZmZXIgPSBQeU1lbV9NYWxsb2MoZC0+YnpzX2F2YWlsX2luX3JlYWwpOworICAgICAgICAgICAgICAgIGlmIChkLT5pbnB1dF9idWZmZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX01lbW9yeUVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZC0+aW5wdXRfYnVmZmVyX3NpemUgPSBkLT5ienNfYXZhaWxfaW5fcmVhbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogQ29weSB0YWlsICovCisgICAgICAgICAgICBtZW1jcHkoZC0+aW5wdXRfYnVmZmVyLCBienMtPm5leHRfaW4sIGQtPmJ6c19hdmFpbF9pbl9yZWFsKTsKKyAgICAgICAgICAgIGJ6cy0+bmV4dF9pbiA9IGQtPmlucHV0X2J1ZmZlcjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHJldHVybiByZXN1bHQ7CiAKIGVycm9yOgpAQCAtNDcwLDIxICs1OTIsMzAgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIF9iejIuQloyRGVjb21wcmVzc29yLmRlY29tcHJlc3MKIAorICAgIHNlbGY6IHNlbGYodHlwZT0iQloyRGVjb21wcmVzc29yICoiKQogICAgIGRhdGE6IFB5X2J1ZmZlcgotICAgIC8KKyAgICBtYXhfbGVuZ3RoOiBQeV9zc2l6ZV90PS0xCiAKLVByb3ZpZGUgZGF0YSB0byB0aGUgZGVjb21wcmVzc29yIG9iamVjdC4KK0RlY29tcHJlc3MgKmRhdGEqLCByZXR1cm5pbmcgdW5jb21wcmVzc2VkIGRhdGEgYXMgYnl0ZXMuCiAKLVJldHVybnMgYSBjaHVuayBvZiBkZWNvbXByZXNzZWQgZGF0YSBpZiBwb3NzaWJsZSwgb3IgYicnIG90aGVyd2lzZS4KK0lmICptYXhfbGVuZ3RoKiBpcyBub25uZWdhdGl2ZSwgcmV0dXJucyBhdCBtb3N0ICptYXhfbGVuZ3RoKiBieXRlcyBvZgorZGVjb21wcmVzc2VkIGRhdGEuIElmIHRoaXMgbGltaXQgaXMgcmVhY2hlZCBhbmQgZnVydGhlciBvdXRwdXQgY2FuIGJlCitwcm9kdWNlZCwgKnNlbGYubmVlZHNfaW5wdXQqIHdpbGwgYmUgc2V0IHRvIGBgRmFsc2VgYC4gSW4gdGhpcyBjYXNlLCB0aGUgbmV4dAorY2FsbCB0byAqZGVjb21wcmVzcygpKiBtYXkgcHJvdmlkZSAqZGF0YSogYXMgYicnIHRvIG9idGFpbiBtb3JlIG9mIHRoZSBvdXRwdXQuCiAKLUF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIHJlYWNoZWQKLXJhaXNlcyBhbiBFT0ZFcnJvci4gIEFueSBkYXRhIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YgdGhlIHN0cmVhbQotaXMgaWdub3JlZCBhbmQgc2F2ZWQgaW4gdGhlIHVudXNlZF9kYXRhIGF0dHJpYnV0ZS4KK0lmIGFsbCBvZiB0aGUgaW5wdXQgZGF0YSB3YXMgZGVjb21wcmVzc2VkIGFuZCByZXR1cm5lZCAoZWl0aGVyIGJlY2F1c2UgdGhpcword2FzIGxlc3MgdGhhbiAqbWF4X2xlbmd0aCogYnl0ZXMsIG9yIGJlY2F1c2UgKm1heF9sZW5ndGgqIHdhcyBuZWdhdGl2ZSksCisqc2VsZi5uZWVkc19pbnB1dCogd2lsbCBiZSBzZXQgdG8gVHJ1ZS4KKworQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0gaXMgcmVhY2hlZCByYWlzZXMgYW4KK0VPRkVycm9yLiAgQW55IGRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIGlzIGlnbm9yZWQgYW5kIHNhdmVkIGluCit0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA4NmU0Yjk5ZTYwY2IzZjYgaW5wdXQ9NjE2YzJhNmRiNTI2OTk2MV0qLworX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yM2U0MTA0NWRlYjI0MGEzIGlucHV0PTk1NThiNDI0YzhiMDA1MTZdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIApAQCAtNDkyLDcgKzYyMyw3IEBACiAgICAgaWYgKHNlbGYtPmVvZikKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0VPRkVycm9yLCAiRW5kIG9mIHN0cmVhbSBhbHJlYWR5IHJlYWNoZWQiKTsKICAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGRlY29tcHJlc3Moc2VsZiwgZGF0YS0+YnVmLCBkYXRhLT5sZW4pOworICAgICAgICByZXN1bHQgPSBkZWNvbXByZXNzKHNlbGYsIGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLCBtYXhfbGVuZ3RoKTsKICAgICBSRUxFQVNFX0xPQ0soc2VsZik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTUyNyw3ICs2NTgsMTEgQEAKICAgICB9CiAjZW5kaWYKIAotICAgIHNlbGYtPnVudXNlZF9kYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7CisgICAgc2VsZi0+bmVlZHNfaW5wdXQgPSAxOworICAgIHNlbGYtPmJ6c19hdmFpbF9pbl9yZWFsID0gMDsKKyAgICBzZWxmLT5pbnB1dF9idWZmZXIgPSBOVUxMOworICAgIHNlbGYtPmlucHV0X2J1ZmZlcl9zaXplID0gMDsKKyAgICBzZWxmLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAgICAgaWYgKHNlbGYtPnVudXNlZF9kYXRhID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTU0OSw2ICs2ODQsOCBAQAogc3RhdGljIHZvaWQKIEJaMkRlY29tcHJlc3Nvcl9kZWFsbG9jKEJaMkRlY29tcHJlc3NvciAqc2VsZikKIHsKKyAgICBpZihzZWxmLT5pbnB1dF9idWZmZXIgIT0gTlVMTCkKKyAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5pbnB1dF9idWZmZXIpOwogICAgIEJaMl9iekRlY29tcHJlc3NFbmQoJnNlbGYtPmJ6cyk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+dW51c2VkX2RhdGEpOwogI2lmZGVmIFdJVEhfVEhSRUFECkBAIC01NzAsMTEgKzcwNywxNiBAQAogUHlEb2NfU1RSVkFSKEJaMkRlY29tcHJlc3Nvcl91bnVzZWRfZGF0YV9fZG9jX18sCiAiRGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4iKTsKIAorUHlEb2NfU1RSVkFSKEJaMkRlY29tcHJlc3Nvcl9uZWVkc19pbnB1dF9kb2MsCisiVHJ1ZSBpZiBtb3JlIGlucHV0IGlzIG5lZWRlZCBiZWZvcmUgbW9yZSBkZWNvbXByZXNzZWQgZGF0YSBjYW4gYmUgcHJvZHVjZWQuIik7CisKIHN0YXRpYyBQeU1lbWJlckRlZiBCWjJEZWNvbXByZXNzb3JfbWVtYmVyc1tdID0gewogICAgIHsiZW9mIiwgVF9CT09MLCBvZmZzZXRvZihCWjJEZWNvbXByZXNzb3IsIGVvZiksCiAgICAgIFJFQURPTkxZLCBCWjJEZWNvbXByZXNzb3JfZW9mX19kb2NfX30sCiAgICAgeyJ1bnVzZWRfZGF0YSIsIFRfT0JKRUNUX0VYLCBvZmZzZXRvZihCWjJEZWNvbXByZXNzb3IsIHVudXNlZF9kYXRhKSwKICAgICAgUkVBRE9OTFksIEJaMkRlY29tcHJlc3Nvcl91bnVzZWRfZGF0YV9fZG9jX199LAorICAgIHsibmVlZHNfaW5wdXQiLCBUX0JPT0wsIG9mZnNldG9mKEJaMkRlY29tcHJlc3NvciwgbmVlZHNfaW5wdXQpLCBSRUFET05MWSwKKyAgICAgQloyRGVjb21wcmVzc29yX25lZWRzX2lucHV0X2RvY30sCiAgICAge05VTEx9CiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYyBiL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jCmluZGV4IDUyZjM0NzkuLjc1NzU3NzMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jCkBAIC00NywxOSArNDcsMjUgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWUxMzkwZTNkYTNjYjlkZWJdKi8KIAorI2luY2x1ZGUgImNsaW5pYy9fY29kZWNzbW9kdWxlLmMuaCIKIAogLyogLS0tIFJlZ2lzdHJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLVB5RG9jX1NUUlZBUihyZWdpc3Rlcl9fZG9jX18sCi0icmVnaXN0ZXIoc2VhcmNoX2Z1bmN0aW9uKVxuXAotXG5cCi1SZWdpc3RlciBhIGNvZGVjIHNlYXJjaCBmdW5jdGlvbi4gU2VhcmNoIGZ1bmN0aW9ucyBhcmUgZXhwZWN0ZWQgdG8gdGFrZVxuXAotb25lIGFyZ3VtZW50LCB0aGUgZW5jb2RpbmcgbmFtZSBpbiBhbGwgbG93ZXIgY2FzZSBsZXR0ZXJzLCBhbmQgZWl0aGVyXG5cCi1yZXR1cm4gTm9uZSwgb3IgYSB0dXBsZSBvZiBmdW5jdGlvbnMgKGVuY29kZXIsIGRlY29kZXIsIHN0cmVhbV9yZWFkZXIsXG5cCi1zdHJlYW1fd3JpdGVyKSAob3IgYSBDb2RlY0luZm8gb2JqZWN0KS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MucmVnaXN0ZXIKKyAgICBzZWFyY2hfZnVuY3Rpb246IG9iamVjdAorICAgIC8KIAotc3RhdGljCi1QeU9iamVjdCAqY29kZWNfcmVnaXN0ZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZWFyY2hfZnVuY3Rpb24pCitSZWdpc3RlciBhIGNvZGVjIHNlYXJjaCBmdW5jdGlvbi4KKworU2VhcmNoIGZ1bmN0aW9ucyBhcmUgZXhwZWN0ZWQgdG8gdGFrZSBvbmUgYXJndW1lbnQsIHRoZSBlbmNvZGluZyBuYW1lIGluCithbGwgbG93ZXIgY2FzZSBsZXR0ZXJzLCBhbmQgZWl0aGVyIHJldHVybiBOb25lLCBvciBhIHR1cGxlIG9mIGZ1bmN0aW9ucworKGVuY29kZXIsIGRlY29kZXIsIHN0cmVhbV9yZWFkZXIsIHN0cmVhbV93cml0ZXIpIChvciBhIENvZGVjSW5mbyBvYmplY3QpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19yZWdpc3RlcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc2VhcmNoX2Z1bmN0aW9uKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQxNzYwOGI2YWQzODBlYjggaW5wdXQ9MzY5NTc4NDY3OTU1Y2FlNF0qLwogewogICAgIGlmIChQeUNvZGVjX1JlZ2lzdGVyKHNlYXJjaF9mdW5jdGlvbikpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjcsNzUgKzczLDczIEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihsb29rdXBfX2RvY19fLAotImxvb2t1cChlbmNvZGluZykgLT4gQ29kZWNJbmZvXG5cCi1cblwKLUxvb2tzIHVwIGEgY29kZWMgdHVwbGUgaW4gdGhlIFB5dGhvbiBjb2RlYyByZWdpc3RyeSBhbmQgcmV0dXJuc1xuXAotYSBDb2RlY0luZm8gb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5sb29rdXAKKyAgICBlbmNvZGluZzogc3RyCisgICAgLwogCi1zdGF0aWMKLVB5T2JqZWN0ICpjb2RlY19sb29rdXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorTG9va3MgdXAgYSBjb2RlYyB0dXBsZSBpbiB0aGUgUHl0aG9uIGNvZGVjIHJlZ2lzdHJ5IGFuZCByZXR1cm5zIGEgQ29kZWNJbmZvIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbG9va3VwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqZW5jb2RpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Nzk4ZTQxYWZmMGMwNGVmNiBpbnB1dD0zYzU3MmMwZGIzZmViZTljXSovCiB7Ci0gICAgY2hhciAqZW5jb2Rpbmc7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6bG9va3VwIiwgJmVuY29kaW5nKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXR1cm4gX1B5Q29kZWNfTG9va3VwKGVuY29kaW5nKTsKIH0KIAotUHlEb2NfU1RSVkFSKGVuY29kZV9fZG9jX18sCi0iZW5jb2RlKG9iaiwgW2VuY29kaW5nWyxlcnJvcnNdXSkgLT4gb2JqZWN0XG5cCi1cblwKLUVuY29kZXMgb2JqIHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciBlbmNvZGluZy4gZW5jb2RpbmcgZGVmYXVsdHNcblwKLXRvIHRoZSBkZWZhdWx0IGVuY29kaW5nLiBlcnJvcnMgbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudCBlcnJvclxuXAotaGFuZGxpbmcgc2NoZW1lLiBEZWZhdWx0IGlzICdzdHJpY3QnIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2VcblwKLWEgVmFsdWVFcnJvci4gT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSAnaWdub3JlJywgJ3JlcGxhY2UnIGFuZFxuXAotJ3htbGNoYXJyZWZyZXBsYWNlJyBhcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgd2l0aFxuXAotY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBWYWx1ZUVycm9ycy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MuZW5jb2RlCisgICAgb2JqOiBvYmplY3QKKyAgICBlbmNvZGluZzogc3RyKGNfZGVmYXVsdD0iTlVMTCIpID0gInV0Zi04IgorICAgIGVycm9yczogc3RyKGNfZGVmYXVsdD0iTlVMTCIpID0gInN0cmljdCIKKworRW5jb2RlcyBvYmogdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yIGVuY29kaW5nLgorCitUaGUgZGVmYXVsdCBlbmNvZGluZyBpcyAndXRmLTgnLiAgZXJyb3JzIG1heSBiZSBnaXZlbiB0byBzZXQgYQorZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gIERlZmF1bHQgaXMgJ3N0cmljdCcgbWVhbmluZyB0aGF0IGVuY29kaW5nCitlcnJvcnMgcmFpc2UgYSBWYWx1ZUVycm9yLiAgT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSAnaWdub3JlJywgJ3JlcGxhY2UnCithbmQgJ2JhY2tzbGFzaHJlcGxhY2UnIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoCitjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBjYW4gaGFuZGxlIFZhbHVlRXJyb3JzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY29kZWNfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01YzA3M2Y2MjI0OWM4ZDdjIGlucHV0PWNkNWI2ODUwNDBmZjYxZjBdKi8KIHsKLSAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xzczplbmNvZGUiLCAmdiwgJmVuY29kaW5nLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKICAgICAgICAgZW5jb2RpbmcgPSBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nKCk7CiAKICAgICAvKiBFbmNvZGUgdmlhIHRoZSBjb2RlYyByZWdpc3RyeSAqLwotICAgIHJldHVybiBQeUNvZGVjX0VuY29kZSh2LCBlbmNvZGluZywgZXJyb3JzKTsKKyAgICByZXR1cm4gUHlDb2RlY19FbmNvZGUob2JqLCBlbmNvZGluZywgZXJyb3JzKTsKIH0KIAotUHlEb2NfU1RSVkFSKGRlY29kZV9fZG9jX18sCi0iZGVjb2RlKG9iaiwgW2VuY29kaW5nWyxlcnJvcnNdXSkgLT4gb2JqZWN0XG5cCi1cblwKLURlY29kZXMgb2JqIHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciBlbmNvZGluZy4gZW5jb2RpbmcgZGVmYXVsdHNcblwKLXRvIHRoZSBkZWZhdWx0IGVuY29kaW5nLiBlcnJvcnMgbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudCBlcnJvclxuXAotaGFuZGxpbmcgc2NoZW1lLiBEZWZhdWx0IGlzICdzdHJpY3QnIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2VcblwKLWEgVmFsdWVFcnJvci4gT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSAnaWdub3JlJyBhbmQgJ3JlcGxhY2UnXG5cCi1hcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgd2l0aCBjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBpc1xuXAotYWJsZSB0byBoYW5kbGUgVmFsdWVFcnJvcnMuIik7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLmRlY29kZQorICAgIG9iajogb2JqZWN0CisgICAgZW5jb2Rpbmc6IHN0cihjX2RlZmF1bHQ9Ik5VTEwiKSA9ICJ1dGYtOCIKKyAgICBlcnJvcnM6IHN0cihjX2RlZmF1bHQ9Ik5VTEwiKSA9ICJzdHJpY3QiCisKK0RlY29kZXMgb2JqIHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciBlbmNvZGluZy4KKworRGVmYXVsdCBlbmNvZGluZyBpcyAndXRmLTgnLiAgZXJyb3JzIG1heSBiZSBnaXZlbiB0byBzZXQgYQorZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gIERlZmF1bHQgaXMgJ3N0cmljdCcgbWVhbmluZyB0aGF0IGVuY29kaW5nCitlcnJvcnMgcmFpc2UgYSBWYWx1ZUVycm9yLiAgT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSAnaWdub3JlJywgJ3JlcGxhY2UnCithbmQgJ2JhY2tzbGFzaHJlcGxhY2UnIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoCitjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBjYW4gaGFuZGxlIFZhbHVlRXJyb3JzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY29kZWNfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jODFjYmY2MTg5YTdmODc4IGlucHV0PTc3MDJjMGNjMmZhMWFkZDZdKi8KIHsKLSAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xzczpkZWNvZGUiLCAmdiwgJmVuY29kaW5nLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKICAgICAgICAgZW5jb2RpbmcgPSBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nKCk7CiAKICAgICAvKiBEZWNvZGUgdmlhIHRoZSBjb2RlYyByZWdpc3RyeSAqLwotICAgIHJldHVybiBQeUNvZGVjX0RlY29kZSh2LCBlbmNvZGluZywgZXJyb3JzKTsKKyAgICByZXR1cm4gUHlDb2RlY19EZWNvZGUob2JqLCBlbmNvZGluZywgZXJyb3JzKTsKIH0KIAogLyogLS0tIEhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC0xNDksMzcgKzE1Myw5IEBACiBQdXJnZSB0aGUgbmFtZWQgY29kZWMgZnJvbSB0aGUgaW50ZXJuYWwgY29kZWMgbG9va3VwIGNhY2hlCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfY29kZWNzX19mb3JnZXRfY29kZWNfX2RvY19fLAotIl9mb3JnZXRfY29kZWMoJG1vZHVsZSwgZW5jb2RpbmcsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJQdXJnZSB0aGUgbmFtZWQgY29kZWMgZnJvbSB0aGUgaW50ZXJuYWwgY29kZWMgbG9va3VwIGNhY2hlIik7Ci0KLSNkZWZpbmUgX0NPREVDU19fRk9SR0VUX0NPREVDX01FVEhPRERFRiAgICBcCi0gICAgeyJfZm9yZ2V0X2NvZGVjIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfX2ZvcmdldF9jb2RlYywgTUVUSF9WQVJBUkdTLCBfY29kZWNzX19mb3JnZXRfY29kZWNfX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9jb2RlY3NfX2ZvcmdldF9jb2RlY19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKmVuY29kaW5nKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9jb2RlY3NfX2ZvcmdldF9jb2RlYyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBjb25zdCBjaGFyICplbmNvZGluZzsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiczpfZm9yZ2V0X2NvZGVjIiwKLSAgICAgICAgJmVuY29kaW5nKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfX2ZvcmdldF9jb2RlY19pbXBsKG1vZHVsZSwgZW5jb2RpbmcpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX19mb3JnZXRfY29kZWNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICplbmNvZGluZykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNzVlNjMxNTkxNzAyYTVjIGlucHV0PTE4ZDVkOTJkMGUzODZjMzhdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNTZhOWI5OWQyZDI4MDgwIGlucHV0PTE4ZDVkOTJkMGUzODZjMzhdKi8KIHsKICAgICBpZiAoX1B5Q29kZWNfRm9yZ2V0KGVuY29kaW5nKSA8IDApIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xODgsNDggKzE2NCw0OSBAQAogfQogCiBzdGF0aWMKLVB5T2JqZWN0ICpjb2RlY190dXBsZShQeU9iamVjdCAqdW5pY29kZSwKK1B5T2JqZWN0ICpjb2RlY190dXBsZShQeU9iamVjdCAqZGVjb2RlZCwKICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbikKIHsKLSAgICBQeU9iamVjdCAqdjsKLSAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgIGlmIChkZWNvZGVkID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBQeV9CdWlsZFZhbHVlKCJPbiIsIHVuaWNvZGUsIGxlbik7Ci0gICAgUHlfREVDUkVGKHVuaWNvZGUpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJObiIsIGRlY29kZWQsIGxlbik7CiB9CiAKIC8qIC0tLSBTdHJpbmcgY29kZWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotc3RhdGljIFB5T2JqZWN0ICoKLWVzY2FwZV9kZWNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgY29uc3QgY2hhciAqZGF0YTsKLSAgICBQeV9zc2l6ZV90IHNpemU7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLmVzY2FwZV9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIoYWNjZXB0PXtzdHIsIGJ1ZmZlcn0pCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzI3x6OmVzY2FwZV9kZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YSwgJnNpemUsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gY29kZWNfdHVwbGUoUHlCeXRlc19EZWNvZGVFc2NhcGUoZGF0YSwgc2l6ZSwgZXJyb3JzLCAwLCBOVUxMKSwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSk7CitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19lc2NhcGVfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY0OGZhM2U3OGQwM2U2NTggaW5wdXQ9MDAxOGVkZmQ5OWRiNzE0ZF0qLworeworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlCeXRlc19EZWNvZGVFc2NhcGUoZGF0YS0+YnVmLCBkYXRhLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsIDAsIE5VTEwpOworICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBkYXRhLT5sZW4pOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLmVzY2FwZV9lbmNvZGUKKyAgICBkYXRhOiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeUJ5dGVzX1R5cGUnKQorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWVzY2FwZV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQorX2NvZGVjc19lc2NhcGVfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmNkNmYzNGZlNDExMWM1MCBpbnB1dD1kYTlkZWQwMDk5MmYzMmYyXSovCiB7Ci0gICAgUHlPYmplY3QgKnN0cjsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgUHlfc3NpemVfdCBuZXdzaXplOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfHo6ZXNjYXBlX2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZQeUJ5dGVzX1R5cGUsICZzdHIsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKHN0cik7CisgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoZGF0YSk7CiAgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAvIDQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAic3RyaW5nIGlzIHRvbyBsYXJnZSB0byBlbmNvZGUiKTsKQEAgLTI0OSw3ICsyMjYsNyBAQAogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAvKiBUaGVyZSdzIGF0IGxlYXN0IGVub3VnaCByb29tIGZvciBhIGhleCBlc2NhcGUgKi8KICAgICAgICAgICAgIGFzc2VydChuZXdzaXplIC0gKHAgLSBQeUJ5dGVzX0FTX1NUUklORyh2KSkgPj0gNCk7Ci0gICAgICAgICAgICBjID0gUHlCeXRlc19BU19TVFJJTkcoc3RyKVtpXTsKKyAgICAgICAgICAgIGMgPSBQeUJ5dGVzX0FTX1NUUklORyhkYXRhKVtpXTsKICAgICAgICAgICAgIGlmIChjID09ICdcJycgfHwgYyA9PSAnXFwnKQogICAgICAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gYzsKICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1x0JykKQEAgLTI3NywxOCArMjU0LDE4IEBACiB9CiAKIC8qIC0tLSBEZWNvZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51bmljb2RlX2ludGVybmFsX2RlY29kZQorICAgIG9iajogb2JqZWN0CisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9pbnRlcm5hbF9kZWNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZmU0N2MyY2Q4ODA3ZDkyIGlucHV0PThkNTc5MzBhZWRhMTcwYzZdKi8KIHsKLSAgICBQeU9iamVjdCAqb2JqOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1bmljb2RlX2ludGVybmFsX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvYmosICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgewogICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMDksMTIwICsyODYsMTA5IEBACiAgICAgfQogfQogCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl83X2RlY29kZQorICAgIGRhdGE6IFB5X2J1ZmZlcgorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGZpbmFsOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXV0Zl83X2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfdXRmXzdfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYTk0NWU5MDdlNzJlODI3IGlucHV0PWJjNGQ2MjQ3ZWNkYjAxZTZdKi8KIHsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIGludCBmaW5hbCA9IDA7Ci0gICAgUHlfc3NpemVfdCBjb25zdW1lZDsKLSAgICBQeU9iamVjdCAqZGVjb2RlZCA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl83X2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzLCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjb25zdW1lZCA9IHBidWYubGVuOwotCi0gICAgZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwocGJ1Zi5idWYsIHBidWYubGVuLCBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGNvbnN1bWVkID0gZGF0YS0+bGVuOworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bChkYXRhLT5idWYsIGRhdGEtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwogICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudXRmXzhfZGVjb2RlCisgICAgZGF0YTogUHlfYnVmZmVyCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdXRmXzhfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitfY29kZWNzX3V0Zl84X2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzMwOWY5ZmY0ZWY1YzliNiBpbnB1dD0zOTE2MWQ3MWU3NDIyZWUyXSovCiB7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBpbnQgZmluYWwgPSAwOwotICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7Ci0gICAgUHlPYmplY3QgKmRlY29kZWQgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfOF9kZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGJ1ZiwgJmVycm9ycywgJmZpbmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgY29uc3VtZWQgPSBwYnVmLmxlbjsKLQotICAgIGRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHBidWYuYnVmLCBwYnVmLmxlbiwgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsID8gTlVMTCA6ICZjb25zdW1lZCk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgaWYgKGRlY29kZWQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IGRhdGEtPmxlbjsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwoZGF0YS0+YnVmLCBkYXRhLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKICAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl8xNl9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBmaW5hbDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi11dGZfMTZfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitfY29kZWNzX3V0Zl8xNl9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZDJmYTA1MDdkOWJlZjJjIGlucHV0PWYzY2YwMWQxNDYxMDA3Y2VdKi8KIHsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogICAgIGludCBieXRlb3JkZXIgPSAwOwotICAgIGludCBmaW5hbCA9IDA7Ci0gICAgUHlfc3NpemVfdCBjb25zdW1lZDsKLSAgICBQeU9iamVjdCAqZGVjb2RlZDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzE2X2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzLCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjb25zdW1lZCA9IHBidWYubGVuOyAvKiBUaGlzIGlzIG92ZXJ3cml0dGVuIHVubGVzcyBmaW5hbCBpcyB0cnVlLiAqLwotICAgIGRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bChwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZW9yZGVyLCBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmIChkZWNvZGVkID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIFRoaXMgaXMgb3ZlcndyaXR0ZW4gdW5sZXNzIGZpbmFsIGlzIHRydWUuICovCisgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IGRhdGEtPmxlbjsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmYnl0ZW9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKICAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl8xNl9sZV9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBmaW5hbDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi11dGZfMTZfbGVfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfdXRmXzE2X2xlX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRmZDYyMTUxNWVmNGNlMTggaW5wdXQ9YTc3ZTNiZjk3MzM1ZDk0ZV0qLwogewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAgICAgaW50IGJ5dGVvcmRlciA9IC0xOwotICAgIGludCBmaW5hbCA9IDA7Ci0gICAgUHlfc3NpemVfdCBjb25zdW1lZDsKLSAgICBQeU9iamVjdCAqZGVjb2RlZCA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8xNl9sZV9kZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGJ1ZiwgJmVycm9ycywgJmZpbmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBjb25zdW1lZCA9IHBidWYubGVuOyAvKiBUaGlzIGlzIG92ZXJ3cml0dGVuIHVubGVzcyBmaW5hbCBpcyB0cnVlLiAqLwotICAgIGRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bChwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycywKLSAgICAgICAgJmJ5dGVvcmRlciwgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBUaGlzIGlzIG92ZXJ3cml0dGVuIHVubGVzcyBmaW5hbCBpcyB0cnVlLiAqLworICAgIFB5X3NzaXplX3QgY29uc3VtZWQgPSBkYXRhLT5sZW47CisgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bChkYXRhLT5idWYsIGRhdGEtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmJ5dGVvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsID8gTlVMTCA6ICZjb25zdW1lZCk7CiAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGNvbnN1bWVkKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51dGZfMTZfYmVfZGVjb2RlCisgICAgZGF0YTogUHlfYnVmZmVyCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdXRmXzE2X2JlX2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitfY29kZWNzX3V0Zl8xNl9iZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03OTJmNGVhY2IzZTFmYTA1IGlucHV0PTYwNmY2OWZhZTkxYjU1NjNdKi8KIHsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogICAgIGludCBieXRlb3JkZXIgPSAxOwotICAgIGludCBmaW5hbCA9IDA7Ci0gICAgUHlfc3NpemVfdCBjb25zdW1lZDsKLSAgICBQeU9iamVjdCAqZGVjb2RlZCA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8xNl9iZV9kZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGJ1ZiwgJmVycm9ycywgJmZpbmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBjb25zdW1lZCA9IHBidWYubGVuOyAvKiBUaGlzIGlzIG92ZXJ3cml0dGVuIHVubGVzcyBmaW5hbCBpcyB0cnVlLiAqLwotICAgIGRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bChwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycywKLSAgICAgICAgJmJ5dGVvcmRlciwgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBUaGlzIGlzIG92ZXJ3cml0dGVuIHVubGVzcyBmaW5hbCBpcyB0cnVlLiAqLworICAgIFB5X3NzaXplX3QgY29uc3VtZWQgPSBkYXRhLT5sZW47CisgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bChkYXRhLT5idWYsIGRhdGEtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmJ5dGVvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsID8gTlVMTCA6ICZjb25zdW1lZCk7CiAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGNvbnN1bWVkKTsKIH0KIApAQCAtNDMzLDk4ICszOTksOTQgQEAKICAgIGJlaW5nIHRoZSB2YWx1ZSBpbiBlZmZlY3QgYXQgdGhlIGVuZCBvZiBkYXRhLgogCiAqLworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51dGZfMTZfZXhfZGVjb2RlCisgICAgZGF0YTogUHlfYnVmZmVyCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgYnl0ZW9yZGVyOiBpbnQgPSAwCisgICAgZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotdXRmXzE2X2V4X2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitfY29kZWNzX3V0Zl8xNl9leF9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBieXRlb3JkZXIsIGludCBmaW5hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMTM2YTE4NmRjMmRlZmEwIGlucHV0PWY2ZTdmNjk3NjU4YzAxM2VdKi8KIHsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIGludCBieXRlb3JkZXIgPSAwOwotICAgIFB5T2JqZWN0ICp1bmljb2RlLCAqdHVwbGU7Ci0gICAgaW50IGZpbmFsID0gMDsKLSAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOworICAgIC8qIFRoaXMgaXMgb3ZlcndyaXR0ZW4gdW5sZXNzIGZpbmFsIGlzIHRydWUuICovCisgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IGRhdGEtPmxlbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emlpOnV0Zl8xNl9leF9kZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGJ1ZiwgJmVycm9ycywgJmJ5dGVvcmRlciwgJmZpbmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgY29uc3VtZWQgPSBwYnVmLmxlbjsgLyogVGhpcyBpcyBvdmVyd3JpdHRlbiB1bmxlc3MgZmluYWwgaXMgdHJ1ZS4gKi8KLSAgICB1bmljb2RlID0gUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwocGJ1Zi5idWYsIHBidWYubGVuLCBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ5dGVvcmRlciwgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAodW5pY29kZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB0dXBsZSA9IFB5X0J1aWxkVmFsdWUoIk9uaSIsIHVuaWNvZGUsIGNvbnN1bWVkLCBieXRlb3JkZXIpOwotICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKLSAgICByZXR1cm4gdHVwbGU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi11dGZfMzJfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBpbnQgYnl0ZW9yZGVyID0gMDsKLSAgICBpbnQgZmluYWwgPSAwOwotICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7Ci0gICAgUHlPYmplY3QgKmRlY29kZWQ7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8zMl9kZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGJ1ZiwgJmVycm9ycywgJmZpbmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgY29uc3VtZWQgPSBwYnVmLmxlbjsgLyogVGhpcyBpcyBvdmVyd3JpdHRlbiB1bmxlc3MgZmluYWwgaXMgdHJ1ZS4gKi8KLSAgICBkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwocGJ1Zi5idWYsIHBidWYubGVuLCBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ5dGVvcmRlciwgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmYnl0ZW9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKICAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTm5pIiwgZGVjb2RlZCwgY29uc3VtZWQsIGJ5dGVvcmRlcik7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudXRmXzMyX2RlY29kZQorICAgIGRhdGE6IFB5X2J1ZmZlcgorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGZpbmFsOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI3NjM1ZTU1ODU3ZThlZmIgaW5wdXQ9ODZkNGY0MWM2YzJlNzYzZF0qLworeworICAgIGludCBieXRlb3JkZXIgPSAwOworICAgIC8qIFRoaXMgaXMgb3ZlcndyaXR0ZW4gdW5sZXNzIGZpbmFsIGlzIHRydWUuICovCisgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IGRhdGEtPmxlbjsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsKGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmYnl0ZW9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKICAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl8zMl9sZV9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBmaW5hbDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi11dGZfMzJfbGVfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfdXRmXzMyX2xlX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE3OWQxNzg3ZDhkZGY5ODggaW5wdXQ9ZDE4YjY1MDc3MmQxODhiYV0qLwogewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAgICAgaW50IGJ5dGVvcmRlciA9IC0xOwotICAgIGludCBmaW5hbCA9IDA7Ci0gICAgUHlfc3NpemVfdCBjb25zdW1lZDsKLSAgICBQeU9iamVjdCAqZGVjb2RlZDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzMyX2xlX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzLCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjb25zdW1lZCA9IHBidWYubGVuOyAvKiBUaGlzIGlzIG92ZXJ3cml0dGVuIHVubGVzcyBmaW5hbCBpcyB0cnVlLiAqLwotICAgIGRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bChwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZW9yZGVyLCBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmIChkZWNvZGVkID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIFRoaXMgaXMgb3ZlcndyaXR0ZW4gdW5sZXNzIGZpbmFsIGlzIHRydWUuICovCisgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IGRhdGEtPmxlbjsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsKGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmYnl0ZW9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKICAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotdXRmXzMyX2JlX2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBpbnQgYnl0ZW9yZGVyID0gMTsKLSAgICBpbnQgZmluYWwgPSAwOwotICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7Ci0gICAgUHlPYmplY3QgKmRlY29kZWQ7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl8zMl9iZV9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBmaW5hbDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8zMl9iZV9kZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGJ1ZiwgJmVycm9ycywgJmZpbmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgY29uc3VtZWQgPSBwYnVmLmxlbjsgLyogVGhpcyBpcyBvdmVyd3JpdHRlbiB1bmxlc3MgZmluYWwgaXMgdHJ1ZS4gKi8KLSAgICBkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwocGJ1Zi5idWYsIHBidWYubGVuLCBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ5dGVvcmRlciwgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8zMl9iZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hODM1NmIwZjM2Nzc5OTgxIGlucHV0PTE5YzI3MWI1ZDM0OTI2ZDhdKi8KK3sKKyAgICBpbnQgYnl0ZW9yZGVyID0gMTsKKyAgICAvKiBUaGlzIGlzIG92ZXJ3cml0dGVuIHVubGVzcyBmaW5hbCBpcyB0cnVlLiAqLworICAgIFB5X3NzaXplX3QgY29uc3VtZWQgPSBkYXRhLT5sZW47CisgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bChkYXRhLT5idWYsIGRhdGEtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmJ5dGVvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsID8gTlVMTCA6ICZjb25zdW1lZCk7CiAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGNvbnN1bWVkKTsKIH0KIApAQCAtNTM1LDE2NyArNDk3LDE1NyBAQAogICAgYmVpbmcgdGhlIHZhbHVlIGluIGVmZmVjdCBhdCB0aGUgZW5kIG9mIGRhdGEuCiAKICovCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl8zMl9leF9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBieXRlb3JkZXI6IGludCA9IDAKKyAgICBmaW5hbDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi11dGZfMzJfZXhfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfdXRmXzMyX2V4X2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlciwgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFiOGM3MDk3N2MxOTkyZjUgaW5wdXQ9NGFmM2U2Y2NmZTM0YTA3Nl0qLwogewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgaW50IGJ5dGVvcmRlciA9IDA7Ci0gICAgUHlPYmplY3QgKnVuaWNvZGUsICp0dXBsZTsKLSAgICBpbnQgZmluYWwgPSAwOwotICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppaTp1dGZfMzJfZXhfZGVjb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBidWYsICZlcnJvcnMsICZieXRlb3JkZXIsICZmaW5hbCkpCisgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IGRhdGEtPmxlbjsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsKGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmYnl0ZW9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKKyAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjb25zdW1lZCA9IHBidWYubGVuOyAvKiBUaGlzIGlzIG92ZXJ3cml0dGVuIHVubGVzcyBmaW5hbCBpcyB0cnVlLiAqLwotICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bChwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZW9yZGVyLCBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmICh1bmljb2RlID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHR1cGxlID0gUHlfQnVpbGRWYWx1ZSgiT25pIiwgdW5pY29kZSwgY29uc3VtZWQsIGJ5dGVvcmRlcik7Ci0gICAgUHlfREVDUkVGKHVuaWNvZGUpOwotICAgIHJldHVybiB0dXBsZTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTm5pIiwgZGVjb2RlZCwgY29uc3VtZWQsIGJ5dGVvcmRlcik7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlCisgICAgZGF0YTogUHlfYnVmZmVyKGFjY2VwdD17c3RyLCBidWZmZXJ9KQorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfZXNjYXBlX2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQorX2NvZGVjc191bmljb2RlX2VzY2FwZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMWFhNjNmMjYyMGM0OTk5IGlucHV0PTQ5ZmQyN2QwNjgxM2E3ZjVdKi8KIHsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgICAgICBQeU9iamVjdCAqdW5pY29kZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyp8ejp1bmljb2RlX2VzY2FwZV9kZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGJ1ZiwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgdW5pY29kZSA9IFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKHBidWYuYnVmLCBwYnVmLmxlbiwgZXJyb3JzKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICByZXR1cm4gY29kZWNfdHVwbGUodW5pY29kZSwgcGJ1Zi5sZW4pOworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUoZGF0YS0+YnVmLCBkYXRhLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOworICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBkYXRhLT5sZW4pOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIoYWNjZXB0PXtzdHIsIGJ1ZmZlcn0pCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotcmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQorX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiZjk2Y2MxODJkODEzNzkgaW5wdXQ9NzcwOTAzYTIxMTQzNGViY10qLwogewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnVuaWNvZGU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqfHo6cmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICB1bmljb2RlID0gUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUocGJ1Zi5idWYsIHBidWYubGVuLCBlcnJvcnMpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIHJldHVybiBjb2RlY190dXBsZSh1bmljb2RlLCBwYnVmLmxlbik7CisgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZShkYXRhLT5idWYsIGRhdGEtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGRhdGEtPmxlbik7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MubGF0aW5fMV9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1sYXRpbl8xX2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQorX2NvZGVjc19sYXRpbl8xX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjZiOTE2ZjUwNTVhYWYxMyBpbnB1dD01Y2FkMGYxNzU5YzYxOGVjXSovCiB7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgUHlPYmplY3QgKnVuaWNvZGU7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8ejpsYXRpbl8xX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICB1bmljb2RlID0gUHlVbmljb2RlX0RlY29kZUxhdGluMShwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycyk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgcmV0dXJuIGNvZGVjX3R1cGxlKHVuaWNvZGUsIHBidWYubGVuKTsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVMYXRpbjEoZGF0YS0+YnVmLCBkYXRhLT5sZW4sIGVycm9ycyk7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGRhdGEtPmxlbik7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MuYXNjaWlfZGVjb2RlCisgICAgZGF0YTogUHlfYnVmZmVyCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYXNjaWlfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQorX2NvZGVjc19hc2NpaV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZjIxM2ExYjVjZGFmYzY1IGlucHV0PWFkMTEwNmY2NDAzN2JkMTZdKi8KIHsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBQeU9iamVjdCAqdW5pY29kZTsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6OmFzY2lpX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICB1bmljb2RlID0gUHlVbmljb2RlX0RlY29kZUFTQ0lJKHBidWYuYnVmLCBwYnVmLmxlbiwgZXJyb3JzKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICByZXR1cm4gY29kZWNfdHVwbGUodW5pY29kZSwgcGJ1Zi5sZW4pOworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZUFTQ0lJKGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLCBlcnJvcnMpOworICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBkYXRhLT5sZW4pOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotY2hhcm1hcF9kZWNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBQeU9iamVjdCAqdW5pY29kZTsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICptYXBwaW5nID0gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MuY2hhcm1hcF9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBtYXBwaW5nOiBvYmplY3QgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6TzpjaGFybWFwX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzLCAmbWFwcGluZykpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfY2hhcm1hcF9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBQeU9iamVjdCAqbWFwcGluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04N2QyN2YzNjUwOThiYmFlIGlucHV0PTE5NzEyY2EzNWM1YTgwZTJdKi8KK3sKKyAgICBQeU9iamVjdCAqZGVjb2RlZDsKKwogICAgIGlmIChtYXBwaW5nID09IFB5X05vbmUpCiAgICAgICAgIG1hcHBpbmcgPSBOVUxMOwogCi0gICAgdW5pY29kZSA9IFB5VW5pY29kZV9EZWNvZGVDaGFybWFwKHBidWYuYnVmLCBwYnVmLmxlbiwgbWFwcGluZywgZXJyb3JzKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICByZXR1cm4gY29kZWNfdHVwbGUodW5pY29kZSwgcGJ1Zi5sZW4pOworICAgIGRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcChkYXRhLT5idWYsIGRhdGEtPmxlbiwgbWFwcGluZywgZXJyb3JzKTsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgZGF0YS0+bGVuKTsKIH0KIAogI2lmZGVmIEhBVkVfTUJDUwogCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLm1iY3NfZGVjb2RlCisgICAgZGF0YTogUHlfYnVmZmVyCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbWJjc19kZWNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfbWJjc19kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGViYWYzYTViMjBlNTNmYSBpbnB1dD1kNDkyYzFjYTY0ZjRmYThhXSovCiB7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBpbnQgZmluYWwgPSAwOwotICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7Ci0gICAgUHlPYmplY3QgKmRlY29kZWQgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTptYmNzX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzLCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjb25zdW1lZCA9IHBidWYubGVuOwotCi0gICAgZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVNQkNTU3RhdGVmdWwocGJ1Zi5idWYsIHBidWYubGVuLCBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGNvbnN1bWVkID0gZGF0YS0+bGVuOworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZU1CQ1NTdGF0ZWZ1bChkYXRhLT5idWYsIGRhdGEtPmxlbiwKKyAgICAgICAgICAgIGVycm9ycywgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKICAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUKKyAgICBjb2RlcGFnZTogaW50CisgICAgZGF0YTogUHlfYnVmZmVyCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotY29kZV9wYWdlX2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitfY29kZWNzX2NvZGVfcGFnZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgY29kZXBhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmRhdGEsIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQzMThlM2Q5OTcxZTMxYmEgaW5wdXQ9NGYzMTUyYTMwNGUyMWQ1MV0qLwogewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgaW50IGZpbmFsID0gMDsKLSAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOwotICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gTlVMTDsKLSAgICBpbnQgY29kZV9wYWdlOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSp8emk6Y29kZV9wYWdlX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZjb2RlX3BhZ2UsICZwYnVmLCAmZXJyb3JzLCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjb25zdW1lZCA9IHBidWYubGVuOwotCi0gICAgZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVDb2RlUGFnZVN0YXRlZnVsKGNvZGVfcGFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGJ1Zi5idWYsIHBidWYubGVuLCBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsID8gTlVMTCA6ICZjb25zdW1lZCk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgaWYgKGRlY29kZWQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IGRhdGEtPmxlbjsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVDb2RlUGFnZVN0YXRlZnVsKGNvZGVwYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+YnVmLCBkYXRhLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwogICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7CiB9CiAKQEAgLTcwMyw0MyArNjU1LDM5IEBACiAKIC8qIC0tLSBFbmNvZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnJlYWRidWZmZXJfZW5jb2RlCisgICAgZGF0YTogUHlfYnVmZmVyKGFjY2VwdD17c3RyLCBidWZmZXJ9KQorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXJlYWRidWZmZXJfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMTljYzI0MDgzMjk5ODU5IGlucHV0PWI3YzMyMmI4OWQ0YWI5MjNdKi8KIHsKLSAgICBQeV9idWZmZXIgcGRhdGE7Ci0gICAgY29uc3QgY2hhciAqZGF0YTsKLSAgICBQeV9zc2l6ZV90IHNpemU7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKnx6OnJlYWRidWZmZXJfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBkYXRhLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZGF0YSA9IHBkYXRhLmJ1ZjsKLSAgICBzaXplID0gcGRhdGEubGVuOwotCi0gICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShkYXRhLCBzaXplKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgcmV0dXJuIGNvZGVjX3R1cGxlKHJlc3VsdCwgc2l6ZSk7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoZGF0YS0+YnVmLCBkYXRhLT5sZW4pOworICAgIHJldHVybiBjb2RlY190dXBsZShyZXN1bHQsIGRhdGEtPmxlbik7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2ludGVybmFsX2VuY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpvYmo7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudW5pY29kZV9pbnRlcm5hbF9lbmNvZGUKKyAgICBvYmo6IG9iamVjdAorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAorc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZTA4NDU3MDY4YWQ1MDNiIGlucHV0PTg2MjhmMDI4MGNmNWJhNjFdKi8KK3sKICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgICJ1bmljb2RlX2ludGVybmFsIGNvZGVjIGhhcyBiZWVuIGRlcHJlY2F0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgMSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dW5pY29kZV9pbnRlcm5hbF9lbmNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmb2JqLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKICAgICAgICAgUHlfVU5JQ09ERSAqdTsKICAgICAgICAgUHlfc3NpemVfdCBsZW4sIHNpemU7CkBAIC03NTAsNyArNjk4LDcgQEAKICAgICAgICAgdSA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKG9iaiwgJmxlbik7CiAgICAgICAgIGlmICh1ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKFB5X1VOSUNPREUpKQorICAgICAgICBpZiAoKHNpemVfdClsZW4gPiAoc2l6ZV90KVBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKFB5X1VOSUNPREUpKQogICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHNpemUgPSBsZW4gKiBzaXplb2YoUHlfVU5JQ09ERSk7CiAgICAgICAgIHJldHVybiBjb2RlY190dXBsZShQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKil1LCBzaXplKSwKQEAgLTc2MSwyMiArNzA5LDI2IEBACiAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIob2JqLCAmdmlldywgUHlCVUZfU0lNUExFKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJlc3VsdCA9IGNvZGVjX3R1cGxlKFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUodmlldy5idWYsIHZpZXcubGVuKSwgdmlldy5sZW4pOworICAgICAgICByZXN1bHQgPSBjb2RlY190dXBsZShQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHZpZXcuYnVmLCB2aWV3LmxlbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXcubGVuKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotdXRmXzdfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnN0ciwgKnY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudXRmXzdfZW5jb2RlCisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfN19lbmNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfN19lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTdhY2NjNDk2YTMyYjc1OSBpbnB1dD1mZDkxYTc4ZjEwM2IwNDIxXSovCit7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKQEAgLTc4OSwxNiArNzQxLDE5IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi11dGZfOF9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqc3RyLCAqdjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51dGZfOF9lbmNvZGUKKyAgICBzdHI6IG9iamVjdAorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl84X2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzdHIsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl84X2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYzgzMWQ4MGU3YWVkZWRlIGlucHV0PTJjMjJkNDA1MzJmMDcxZjNdKi8KK3sKKyAgICBQeU9iamVjdCAqdjsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7CiAgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewpAQCAtODE4LDE3ICs3NzMsMjAgQEAKIAogKi8KIAotc3RhdGljIFB5T2JqZWN0ICoKLXV0Zl8xNl9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqc3RyLCAqdjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIGludCBieXRlb3JkZXIgPSAwOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51dGZfMTZfZW5jb2RlCisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBieXRlb3JkZXI6IGludCA9IDAKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98emk6dXRmXzE2X2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzdHIsICZlcnJvcnMsICZieXRlb3JkZXIpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkzYWM1OGU5NjBhOWVlNGQgaW5wdXQ9MzkzNWE0ODliMmQ1Mzg1ZV0qLworeworICAgIFB5T2JqZWN0ICp2OwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKICAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CkBAIC04NDEsMTYgKzc5OSwxOSBAQAogICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotdXRmXzE2X2xlX2VuY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnN0ciwgKnY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudXRmXzE2X2xlX2VuY29kZQorICAgIHN0cjogb2JqZWN0CisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzE2X2xlX2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzdHIsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9sZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQyMmJlZGI4ZGEzNGZiNjYgaW5wdXQ9YmMyN2RmMDVkMWQyMGRmZV0qLworeworICAgIFB5T2JqZWN0ICp2OwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKICAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CkBAIC04NjMsMTYgKzgyNCwxOSBAQAogICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotdXRmXzE2X2JlX2VuY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnN0ciwgKnY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudXRmXzE2X2JlX2VuY29kZQorICAgIHN0cjogb2JqZWN0CisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzE2X2JlX2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzdHIsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9iZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNhYTdlZTk1MDJhY2RkNzcgaW5wdXQ9NWE2OWQ0MTEyNzYzNDYyYl0qLworeworICAgIFB5T2JqZWN0ICp2OwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKICAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CkBAIC04OTIsMTcgKzg1NiwyMCBAQAogCiAqLwogCi1zdGF0aWMgUHlPYmplY3QgKgotdXRmXzMyX2VuY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpzdHIsICp2OwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgaW50IGJ5dGVvcmRlciA9IDA7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl8zMl9lbmNvZGUKKyAgICBzdHI6IG9iamVjdAorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGJ5dGVvcmRlcjogaW50ID0gMAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6aTp1dGZfMzJfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ciwgJmVycm9ycywgJmJ5dGVvcmRlcikpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBieXRlb3JkZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2U3ZDVhMDAzYjAyYmFlZCBpbnB1dD00MzRhMWVmYTQ5MmI4ZDU4XSovCit7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKQEAgLTkxNSwxNiArODgyLDE5IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi11dGZfMzJfbGVfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqc3RyLCAqdjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51dGZfMzJfbGVfZW5jb2RlCisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMzJfbGVfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ciwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2xlX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWRkYTY0MWNkMzNkYmZjMiBpbnB1dD1kZmEyZDdkYzc4Yjk5NDIyXSovCit7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKQEAgLTkzNywxNiArOTA3LDE5IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi11dGZfMzJfYmVfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqc3RyLCAqdjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51dGZfMzJfYmVfZW5jb2RlCisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMzJfYmVfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ciwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2JlX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2NjYThiNDRkOTFhN2M3YSBpbnB1dD00NTk1NjE3YjE4MTY5MDAyXSovCit7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKQEAgLTk1OSwxNiArOTMyLDE5IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2VzY2FwZV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqc3RyLCAqdjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51bmljb2RlX2VzY2FwZV9lbmNvZGUKKyAgICBzdHI6IG9iamVjdAorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnVuaWNvZGVfZXNjYXBlX2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzdHIsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zODlmMjNkMmI4ZjhkODBiIGlucHV0PTgyNzM1MDZmMTQwNzY5MTJdKi8KK3sKKyAgICBQeU9iamVjdCAqdjsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7CiAgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewpAQCAtOTgxLDE2ICs5NTcsMTkgQEAKICAgICByZXR1cm4gdjsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLXJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqc3RyLCAqdjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlCisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejpyYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ciwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmVjNGUzOWQ2ZWMzN2E2MiBpbnB1dD0xODE3NTVkNWRmYWNlZjNjXSovCit7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKQEAgLTEwMDMsMTYgKzk4MiwxOSBAQAogICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotbGF0aW5fMV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqc3RyLCAqdjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5sYXRpbl8xX2VuY29kZQorICAgIHN0cjogb2JqZWN0CisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6bGF0aW5fMV9lbmNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19sYXRpbl8xX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVjZjAwZWI4ZTQ4Yzg4OWMgaW5wdXQ9ZjAzZjZkY2YxZDg0YmVlNF0qLworeworICAgIFB5T2JqZWN0ICp2OwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKICAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CkBAIC0xMDI1LDE2ICsxMDA3LDE5IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1hc2NpaV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnN0ciwgKnY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MuYXNjaWlfZW5jb2RlCisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejphc2NpaV9lbmNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19hc2NpaV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTlkMThmYzZiNmI5MWNmYiBpbnB1dD1kODdlMjVhMTBhNTkzZmVlXSovCit7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKQEAgLTEwNDcsMTcgKzEwMzIsMjEgQEAKICAgICByZXR1cm4gdjsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWNoYXJtYXBfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpzdHIsICp2OwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm1hcHBpbmcgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5jaGFybWFwX2VuY29kZQorICAgIHN0cjogb2JqZWN0CisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgbWFwcGluZzogb2JqZWN0ID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6TzpjaGFybWFwX2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzdHIsICZlcnJvcnMsICZtYXBwaW5nKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19jaGFybWFwX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBQeU9iamVjdCAqbWFwcGluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNGNhNDJiODM4NTNjNjQzIGlucHV0PTg1ZjQxNzI2NjFlOGRhZDldKi8KK3sKKyAgICBQeU9iamVjdCAqdjsKKwogICAgIGlmIChtYXBwaW5nID09IFB5X05vbmUpCiAgICAgICAgIG1hcHBpbmcgPSBOVUxMOwogCkBAIC0xMDcyLDI3ICsxMDYxLDM0IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWNoYXJtYXBfYnVpbGQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5jaGFybWFwX2J1aWxkCisgICAgbWFwOiB1bmljb2RlCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19jaGFybWFwX2J1aWxkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm1hcCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NDg1YjU4ZmE0NGFmYTZhIGlucHV0PWQ5MWE5MWQxNzE3ZGJjNmRdKi8KIHsKLSAgICBQeU9iamVjdCAqbWFwOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpjaGFybWFwX2J1aWxkIiwgJm1hcCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcChtYXApOwogfQogCiAjaWZkZWYgSEFWRV9NQkNTCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1tYmNzX2VuY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpzdHIsICp2OwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLm1iY3NfZW5jb2RlCisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejptYmNzX2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzdHIsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX21iY3NfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDFhMDEzYmM2ODc5OGJkNyBpbnB1dD02NWMwOWVlMWU0MjAzMjYzXSovCit7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKQEAgLTExMDUsMTcgKzExMDEsMjAgQEAKICAgICByZXR1cm4gdjsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWNvZGVfcGFnZV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpzdHIsICp2OwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgaW50IGNvZGVfcGFnZTsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MuY29kZV9wYWdlX2VuY29kZQorICAgIGNvZGVfcGFnZTogaW50CisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPfHo6Y29kZV9wYWdlX2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZjb2RlX3BhZ2UsICZzdHIsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0ciwgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNiNDA2NjE4ZGJmYmNlMjUgaW5wdXQ9Yzg1NjJlYzQ2MGMyZTMwOV0qLworeworICAgIFB5T2JqZWN0ICp2OwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKICAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CkBAIC0xMTM0LDk5ICsxMTMzLDk0IEBACiAKIC8qIC0tLSBFcnJvciBoYW5kbGVyIHJlZ2lzdHJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1QeURvY19TVFJWQVIocmVnaXN0ZXJfZXJyb3JfX2RvY19fLAotInJlZ2lzdGVyX2Vycm9yKGVycm9ycywgaGFuZGxlcilcblwKLVxuXAotUmVnaXN0ZXIgdGhlIHNwZWNpZmllZCBlcnJvciBoYW5kbGVyIHVuZGVyIHRoZSBuYW1lXG5cCi1lcnJvcnMuIGhhbmRsZXIgbXVzdCBiZSBhIGNhbGxhYmxlIG9iamVjdCwgdGhhdFxuXAotd2lsbCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24gaW5zdGFuY2UgY29udGFpbmluZ1xuXAotaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBlbmNvZGluZy9kZWNvZGluZ1xuXAotZXJyb3IgYW5kIG11c3QgcmV0dXJuIGEgKHJlcGxhY2VtZW50LCBuZXcgcG9zaXRpb24pIHR1cGxlLiIpOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5yZWdpc3Rlcl9lcnJvcgorICAgIGVycm9yczogc3RyCisgICAgaGFuZGxlcjogb2JqZWN0CisgICAgLwogCi1zdGF0aWMgUHlPYmplY3QgKnJlZ2lzdGVyX2Vycm9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK1JlZ2lzdGVyIHRoZSBzcGVjaWZpZWQgZXJyb3IgaGFuZGxlciB1bmRlciB0aGUgbmFtZSBlcnJvcnMuCisKK2hhbmRsZXIgbXVzdCBiZSBhIGNhbGxhYmxlIG9iamVjdCwgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbgoraW5zdGFuY2UgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9jYXRpb24gb2YgdGhlIGVuY29kaW5nL2RlY29kaW5nCitlcnJvciBhbmQgbXVzdCByZXR1cm4gYSAocmVwbGFjZW1lbnQsIG5ldyBwb3NpdGlvbikgdHVwbGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3JlZ2lzdGVyX2Vycm9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpoYW5kbGVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlMDBkM2IxODQ5Y2U2OGEgaW5wdXQ9NWU2NzA5MjAzYzJlMzNmZV0qLwogewotICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICAgUHlPYmplY3QgKmhhbmRsZXI7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPOnJlZ2lzdGVyX2Vycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsICZoYW5kbGVyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5Q29kZWNfUmVnaXN0ZXJFcnJvcihuYW1lLCBoYW5kbGVyKSkKKyAgICBpZiAoUHlDb2RlY19SZWdpc3RlckVycm9yKGVycm9ycywgaGFuZGxlcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIobG9va3VwX2Vycm9yX19kb2NfXywKLSJsb29rdXBfZXJyb3IoZXJyb3JzKSAtPiBoYW5kbGVyXG5cCi1cblwKLVJldHVybiB0aGUgZXJyb3IgaGFuZGxlciBmb3IgdGhlIHNwZWNpZmllZCBlcnJvciBoYW5kbGluZyBuYW1lXG5cCi1vciByYWlzZSBhIExvb2t1cEVycm9yLCBpZiBubyBoYW5kbGVyIGV4aXN0cyB1bmRlciB0aGlzIG5hbWUuIik7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLmxvb2t1cF9lcnJvcgorICAgIG5hbWU6IHN0cgorICAgIC8KIAotc3RhdGljIFB5T2JqZWN0ICpsb29rdXBfZXJyb3IoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorbG9va3VwX2Vycm9yKGVycm9ycykgLT4gaGFuZGxlcgorCitSZXR1cm4gdGhlIGVycm9yIGhhbmRsZXIgZm9yIHRoZSBzcGVjaWZpZWQgZXJyb3IgaGFuZGxpbmcgbmFtZSBvciByYWlzZSBhCitMb29rdXBFcnJvciwgaWYgbm8gaGFuZGxlciBleGlzdHMgdW5kZXIgdGhpcyBuYW1lLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19sb29rdXBfZXJyb3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpuYW1lKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTczMWU2ZGY4YzgzYzYxNTggaW5wdXQ9NDc3NWRkNjVlNjIzNWFiYV0qLwogewotICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6bG9va3VwX2Vycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlDb2RlY19Mb29rdXBFcnJvcihuYW1lKTsKIH0KIAogLyogLS0tIE1vZHVsZSBBUEkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBfY29kZWNzX2Z1bmN0aW9uc1tdID0gewotICAgIHsicmVnaXN0ZXIiLCAgICAgICAgICAgICAgICBjb2RlY19yZWdpc3RlciwgICAgICAgICAgICAgICAgIE1FVEhfTywKLSAgICAgICAgcmVnaXN0ZXJfX2RvY19ffSwKLSAgICB7Imxvb2t1cCIsICAgICAgICAgICAgICAgICAgY29kZWNfbG9va3VwLCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsCi0gICAgICAgIGxvb2t1cF9fZG9jX199LAotICAgIHsiZW5jb2RlIiwgICAgICAgICAgICAgICAgICBjb2RlY19lbmNvZGUsICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywKLSAgICAgICAgZW5jb2RlX19kb2NfX30sCi0gICAgeyJkZWNvZGUiLCAgICAgICAgICAgICAgICAgIGNvZGVjX2RlY29kZSwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLAotICAgICAgICBkZWNvZGVfX2RvY19ffSwKLSAgICB7ImVzY2FwZV9lbmNvZGUiLCAgICAgICAgICAgZXNjYXBlX2VuY29kZSwgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZXNjYXBlX2RlY29kZSIsICAgICAgICAgICBlc2NhcGVfZGVjb2RlLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfOF9lbmNvZGUiLCAgICAgICAgICAgIHV0Zl84X2VuY29kZSwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl84X2RlY29kZSIsICAgICAgICAgICAgdXRmXzhfZGVjb2RlLCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzdfZW5jb2RlIiwgICAgICAgICAgICB1dGZfN19lbmNvZGUsICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfN19kZWNvZGUiLCAgICAgICAgICAgIHV0Zl83X2RlY29kZSwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl8xNl9lbmNvZGUiLCAgICAgICAgICAgdXRmXzE2X2VuY29kZSwgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzE2X2xlX2VuY29kZSIsICAgICAgICB1dGZfMTZfbGVfZW5jb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfMTZfYmVfZW5jb2RlIiwgICAgICAgIHV0Zl8xNl9iZV9lbmNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl8xNl9kZWNvZGUiLCAgICAgICAgICAgdXRmXzE2X2RlY29kZSwgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzE2X2xlX2RlY29kZSIsICAgICAgICB1dGZfMTZfbGVfZGVjb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfMTZfYmVfZGVjb2RlIiwgICAgICAgIHV0Zl8xNl9iZV9kZWNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl8xNl9leF9kZWNvZGUiLCAgICAgICAgdXRmXzE2X2V4X2RlY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzMyX2VuY29kZSIsICAgICAgICAgICB1dGZfMzJfZW5jb2RlLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfMzJfbGVfZW5jb2RlIiwgICAgICAgIHV0Zl8zMl9sZV9lbmNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl8zMl9iZV9lbmNvZGUiLCAgICAgICAgdXRmXzMyX2JlX2VuY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzMyX2RlY29kZSIsICAgICAgICAgICB1dGZfMzJfZGVjb2RlLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfMzJfbGVfZGVjb2RlIiwgICAgICAgIHV0Zl8zMl9sZV9kZWNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl8zMl9iZV9kZWNvZGUiLCAgICAgICAgdXRmXzMyX2JlX2RlY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzMyX2V4X2RlY29kZSIsICAgICAgICB1dGZfMzJfZXhfZGVjb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1bmljb2RlX2VzY2FwZV9lbmNvZGUiLCAgIHVuaWNvZGVfZXNjYXBlX2VuY29kZSwgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InVuaWNvZGVfZXNjYXBlX2RlY29kZSIsICAgdW5pY29kZV9lc2NhcGVfZGVjb2RlLCAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidW5pY29kZV9pbnRlcm5hbF9lbmNvZGUiLCB1bmljb2RlX2ludGVybmFsX2VuY29kZSwgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1bmljb2RlX2ludGVybmFsX2RlY29kZSIsIHVuaWNvZGVfaW50ZXJuYWxfZGVjb2RlLCAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUiLCByYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlLCAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZSIsIHJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUsICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJsYXRpbl8xX2VuY29kZSIsICAgICAgICAgIGxhdGluXzFfZW5jb2RlLCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImxhdGluXzFfZGVjb2RlIiwgICAgICAgICAgbGF0aW5fMV9kZWNvZGUsICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsiYXNjaWlfZW5jb2RlIiwgICAgICAgICAgICBhc2NpaV9lbmNvZGUsICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJhc2NpaV9kZWNvZGUiLCAgICAgICAgICAgIGFzY2lpX2RlY29kZSwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImNoYXJtYXBfZW5jb2RlIiwgICAgICAgICAgY2hhcm1hcF9lbmNvZGUsICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsiY2hhcm1hcF9kZWNvZGUiLCAgICAgICAgICBjaGFybWFwX2RlY29kZSwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJjaGFybWFwX2J1aWxkIiwgICAgICAgICAgIGNoYXJtYXBfYnVpbGQsICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InJlYWRidWZmZXJfZW5jb2RlIiwgICAgICAgcmVhZGJ1ZmZlcl9lbmNvZGUsICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotI2lmZGVmIEhBVkVfTUJDUwotICAgIHsibWJjc19lbmNvZGUiLCAgICAgICAgICAgICBtYmNzX2VuY29kZSwgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJtYmNzX2RlY29kZSIsICAgICAgICAgICAgIG1iY3NfZGVjb2RlLCAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImNvZGVfcGFnZV9lbmNvZGUiLCAgICAgICAgY29kZV9wYWdlX2VuY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsiY29kZV9wYWdlX2RlY29kZSIsICAgICAgICBjb2RlX3BhZ2VfZGVjb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0jZW5kaWYKLSAgICB7InJlZ2lzdGVyX2Vycm9yIiwgICAgICAgICAgcmVnaXN0ZXJfZXJyb3IsICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsCi0gICAgICAgIHJlZ2lzdGVyX2Vycm9yX19kb2NfX30sCi0gICAgeyJsb29rdXBfZXJyb3IiLCAgICAgICAgICAgIGxvb2t1cF9lcnJvciwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLAotICAgICAgICBsb29rdXBfZXJyb3JfX2RvY19ffSwKKyAgICBfQ09ERUNTX1JFR0lTVEVSX01FVEhPRERFRgorICAgIF9DT0RFQ1NfTE9PS1VQX01FVEhPRERFRgorICAgIF9DT0RFQ1NfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfRVNDQVBFX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX0VTQ0FQRV9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfOF9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfOF9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfN19FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfN19ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMTZfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVVRGXzE2X0xFX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl8xNl9CRV9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMTZfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVVRGXzE2X0xFX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl8xNl9CRV9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMTZfRVhfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVVRGXzMyX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl8zMl9MRV9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMzJfQkVfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVVRGXzMyX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl8zMl9MRV9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMzJfQkVfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVVRGXzMyX0VYX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VOSUNPREVfRVNDQVBFX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VOSUNPREVfRVNDQVBFX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VOSUNPREVfSU5URVJOQUxfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVU5JQ09ERV9JTlRFUk5BTF9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19SQVdfVU5JQ09ERV9FU0NBUEVfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfUkFXX1VOSUNPREVfRVNDQVBFX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX0xBVElOXzFfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfTEFUSU5fMV9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19BU0NJSV9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19BU0NJSV9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19DSEFSTUFQX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX0NIQVJNQVBfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfQ0hBUk1BUF9CVUlMRF9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1JFQURCVUZGRVJfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfTUJDU19FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19NQkNTX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX0NPREVfUEFHRV9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19DT0RFX1BBR0VfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfUkVHSVNURVJfRVJST1JfTUVUSE9EREVGCisgICAgX0NPREVDU19MT09LVVBfRVJST1JfTUVUSE9EREVGCiAgICAgX0NPREVDU19fRk9SR0VUX0NPREVDX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfSAgICAgICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMgYi9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jCmluZGV4IDYxMTVjNzAuLjFhMzM0MjggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYwpAQCAtMSw0OCArMSw3MSBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogCisjaWZkZWYgU1REQ19IRUFERVJTCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjZWxzZQorI2luY2x1ZGUgPHN5cy90eXBlcy5oPiAgICAgICAgICAvKiBGb3Igc2l6ZV90ICovCisjZW5kaWYKKwogLyogY29sbGVjdGlvbnMgbW9kdWxlIGltcGxlbWVudGF0aW9uIG9mIGEgZGVxdWUoKSBkYXRhdHlwZQogICAgV3JpdHRlbiBhbmQgbWFpbnRhaW5lZCBieSBSYXltb25kIEQuIEhldHRpbmdlciA8cHl0aG9uQHJjbi5jb20+CiAqLwogCiAvKiBUaGUgYmxvY2sgbGVuZ3RoIG1heSBiZSBzZXQgdG8gYW55IG51bWJlciBvdmVyIDEuICBMYXJnZXIgbnVtYmVycwogICogcmVkdWNlIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gdGhlIG1lbW9yeSBhbGxvY2F0b3IsIGdpdmUgZmFzdGVyCi0gKiBpbmRleGluZyBhbmQgcm90YXRpb24sIGFuZCByZWR1Y2UgdGhlIGxpbms6OmRhdGEgb3ZlcmhlYWQgcmF0aW8uCi0gKgotICogSWRlYWxseSwgdGhlIGJsb2NrIGxlbmd0aCB3aWxsIGJlIHNldCB0byB0d28gbGVzcyB0aGFuIHNvbWUKLSAqIG11bHRpcGxlIG9mIHRoZSBjYWNoZS1saW5lIGxlbmd0aCAoc28gdGhhdCB0aGUgZnVsbCBibG9jawotICogaW5jbHVkaW5nIHRoZSBsZWZ0bGluayBhbmQgcmlnaHRsaW5rIHdpbGwgZml0IG5lYXRseSBpbnRvCi0gKiBjYWNoZSBsaW5lcykuCisgKiBpbmRleGluZyBhbmQgcm90YXRpb24sIGFuZCByZWR1Y2UgdGhlIGxpbmsgdG8gZGF0YSBvdmVyaGVhZCByYXRpby4KKyAqIE1ha2luZyB0aGUgYmxvY2sgbGVuZ3RoIGEgcG93ZXIgb2YgdHdvIHNwZWVkcy11cCB0aGUgbW9kdWxvCisgKiBhbmQgZGl2aXNpb24gY2FsY3VsYXRpb25zIGluIGRlcXVlX2l0ZW0oKSBhbmQgZGVxdWVfYXNzX2l0ZW0oKS4KICAqLwogCi0jZGVmaW5lIEJMT0NLTEVOIDYyCisjZGVmaW5lIEJMT0NLTEVOIDY0CiAjZGVmaW5lIENFTlRFUiAoKEJMT0NLTEVOIC0gMSkgLyAyKQogCi0vKiBBIGBkZXF1ZW9iamVjdGAgaXMgY29tcG9zZWQgb2YgYSBkb3VibHktbGlua2VkIGxpc3Qgb2YgYGJsb2NrYCBub2Rlcy4KKy8qIERhdGEgZm9yIGRlcXVlIG9iamVjdHMgaXMgc3RvcmVkIGluIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGZpeGVkCisgKiBsZW5ndGggYmxvY2tzLiAgVGhpcyBhc3N1cmVzIHRoYXQgYXBwZW5kcyBvciBwb3BzIG5ldmVyIG1vdmUgYW55CisgKiBvdGhlciBkYXRhIGVsZW1lbnRzIGJlc2lkZXMgdGhlIG9uZSBiZWluZyBhcHBlbmRlZCBvciBwb3BwZWQuCisgKgorICogQW5vdGhlciBhZHZhbnRhZ2UgaXMgdGhhdCBpdCBjb21wbGV0ZWx5IGF2b2lkcyB1c2Ugb2YgcmVhbGxvYygpLAorICogcmVzdWx0aW5nIGluIG1vcmUgcHJlZGljdGFibGUgcGVyZm9ybWFuY2UuCisgKgorICogVGV4dGJvb2sgaW1wbGVtZW50YXRpb25zIG9mIGRvdWJseS1saW5rZWQgbGlzdHMgc3RvcmUgb25lIGRhdHVtCisgKiBwZXIgbGluaywgYnV0IHRoYXQgZ2l2ZXMgdGhlbSBhIDIwMCUgbWVtb3J5IG92ZXJoZWFkIChhIHByZXYgYW5kCisgKiBuZXh0IGxpbmsgZm9yIGVhY2ggZGF0dW0pIGFuZCBpdCBjb3N0cyBvbmUgbWFsbG9jKCkgY2FsbCBwZXIgZGF0YQorICogZWxlbWVudC4gIEJ5IHVzaW5nIGZpeGVkLWxlbmd0aCBibG9ja3MsIHRoZSBsaW5rIHRvIGRhdGEgcmF0aW8gaXMKKyAqIHNpZ25pZmljYW50bHkgaW1wcm92ZWQgYW5kIHRoZXJlIGFyZSBwcm9wb3J0aW9uYWxseSBmZXdlciBjYWxscworICogdG8gbWFsbG9jKCkgYW5kIGZyZWUoKS4gIFRoZSBkYXRhIGJsb2NrcyBvZiBjb25zZWN1dGl2ZSBwb2ludGVycworICogYWxzbyBpbXByb3ZlIGNhY2hlIGxvY2FsaXR5LgorICoKICAqIFRoZSBsaXN0IG9mIGJsb2NrcyBpcyBuZXZlciBlbXB0eSwgc28gZC5sZWZ0YmxvY2sgYW5kIGQucmlnaHRibG9jawogICogYXJlIG5ldmVyIGVxdWFsIHRvIE5VTEwuICBUaGUgbGlzdCBpcyBub3QgY2lyY3VsYXIuCiAgKgogICogQSBkZXF1ZSBkJ3MgZmlyc3QgZWxlbWVudCBpcyBhdCBkLmxlZnRibG9ja1tsZWZ0aW5kZXhdCiAgKiBhbmQgaXRzIGxhc3QgZWxlbWVudCBpcyBhdCBkLnJpZ2h0YmxvY2tbcmlnaHRpbmRleF0uCi0gKiBVbmxpa2UgUHl0aG9uIHNsaWNlIGluZGljZXMsIHRoZXNlIGluZGljZXMgYXJlIGluY2x1c2l2ZQotICogb24gYm90aCBlbmRzLiAgVGhpcyBtYWtlcyB0aGUgYWxnb3JpdGhtcyBmb3IgbGVmdCBhbmQKLSAqIHJpZ2h0IG9wZXJhdGlvbnMgbW9yZSBzeW1tZXRyaWNhbCBhbmQgc2ltcGxpZmllcyB0aGUgZGVzaWduLgogICoKLSAqIFRoZSBpbmRpY2VzLCBkLmxlZnRpbmRleCBhbmQgZC5yaWdodGluZGV4IGFyZSBhbHdheXMgaW4gdGhlIHJhbmdlCi0gKiAgICAgMCA8PSBpbmRleCA8IEJMT0NLTEVOLgotICogVGhlaXIgZXhhY3QgcmVsYXRpb25zaGlwIGlzOgotICogICAgIChkLmxlZnRpbmRleCArIGQubGVuIC0gMSkgJSBCTE9DS0xFTiA9PSBkLnJpZ2h0aW5kZXguCisgKiBVbmxpa2UgUHl0aG9uIHNsaWNlIGluZGljZXMsIHRoZXNlIGluZGljZXMgYXJlIGluY2x1c2l2ZSBvbiBib3RoCisgKiBlbmRzLiAgVGhpcyBtYWtlcyB0aGUgYWxnb3JpdGhtcyBmb3IgbGVmdCBhbmQgcmlnaHQgb3BlcmF0aW9ucworICogbW9yZSBzeW1tZXRyaWNhbCBhbmQgaXQgc2ltcGxpZmllcyB0aGUgZGVzaWduLgogICoKLSAqIEVtcHR5IGRlcXVlcyBoYXZlIGQubGVuID09IDA7IGQubGVmdGJsb2NrPT1kLnJpZ2h0YmxvY2s7Ci0gKiBkLmxlZnRpbmRleCA9PSBDRU5URVIrMTsgYW5kIGQucmlnaHRpbmRleCA9PSBDRU5URVIuCisgKiBUaGUgaW5kaWNlcywgZC5sZWZ0aW5kZXggYW5kIGQucmlnaHRpbmRleCBhcmUgYWx3YXlzIGluIHRoZSByYW5nZToKKyAqICAgICAwIDw9IGluZGV4IDwgQkxPQ0tMRU4KKyAqCisgKiBBbmQgdGhlaXIgZXhhY3QgcmVsYXRpb25zaGlwIGlzOgorICogICAgIChkLmxlZnRpbmRleCArIGQubGVuIC0gMSkgJSBCTE9DS0xFTiA9PSBkLnJpZ2h0aW5kZXgKKyAqCisgKiBXaGVuZXZlciBkLmxlZnRibG9jayA9PSBkLnJpZ2h0YmxvY2ssIHRoZW46CisgKiAgICAgZC5sZWZ0aW5kZXggKyBkLmxlbiAtIDEgPT0gZC5yaWdodGluZGV4CisgKgorICogSG93ZXZlciwgd2hlbiBkLmxlZnRibG9jayAhPSBkLnJpZ2h0YmxvY2ssIHRoZSBkLmxlZnRpbmRleCBhbmQKKyAqIGQucmlnaHRpbmRleCBiZWNvbWUgaW5kaWNlcyBpbnRvIGRpc3RpbmN0IGJsb2NrcyBhbmQgZWl0aGVyIG1heQorICogYmUgbGFyZ2VyIHRoYW4gdGhlIG90aGVyLgorICoKKyAqIEVtcHR5IGRlcXVlcyBoYXZlOgorICogICAgIGQubGVuID09IDAKKyAqICAgICBkLmxlZnRibG9jayA9PSBkLnJpZ2h0YmxvY2sKKyAqICAgICBkLmxlZnRpbmRleCA9PSBDRU5URVIgKyAxCisgKiAgICAgZC5yaWdodGluZGV4ID09IENFTlRFUgorICoKICAqIENoZWNraW5nIGZvciBkLmxlbiA9PSAwIGlzIHRoZSBpbnRlbmRlZCB3YXkgdG8gc2VlIHdoZXRoZXIgZCBpcyBlbXB0eS4KLSAqCi0gKiBXaGVuZXZlciBkLmxlZnRibG9jayA9PSBkLnJpZ2h0YmxvY2ssCi0gKiAgICAgZC5sZWZ0aW5kZXggKyBkLmxlbiAtIDEgPT0gZC5yaWdodGluZGV4LgotICoKLSAqIEhvd2V2ZXIsIHdoZW4gZC5sZWZ0YmxvY2sgIT0gZC5yaWdodGJsb2NrLCBkLmxlZnRpbmRleCBhbmQgZC5yaWdodGluZGV4Ci0gKiBiZWNvbWUgaW5kaWNlcyBpbnRvIGRpc3RpbmN0IGJsb2NrcyBhbmQgZWl0aGVyIG1heSBiZSBsYXJnZXIgdGhhbiB0aGUKLSAqIG90aGVyLgogICovCiAKIHR5cGVkZWYgc3RydWN0IEJMT0NLIHsKQEAgLTUxLDYgKzc0LDE5IEBACiAgICAgc3RydWN0IEJMT0NLICpyaWdodGxpbms7CiB9IGJsb2NrOwogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfVkFSX0hFQUQKKyAgICBibG9jayAqbGVmdGJsb2NrOworICAgIGJsb2NrICpyaWdodGJsb2NrOworICAgIFB5X3NzaXplX3QgbGVmdGluZGV4OyAgICAgICAvKiAwIDw9IGxlZnRpbmRleCA8IEJMT0NLTEVOICovCisgICAgUHlfc3NpemVfdCByaWdodGluZGV4OyAgICAgIC8qIDAgPD0gcmlnaHRpbmRleCA8IEJMT0NLTEVOICovCisgICAgc2l6ZV90IHN0YXRlOyAgICAgICAgICAgICAgIC8qIGluY3JlbWVudGVkIHdoZW5ldmVyIHRoZSBpbmRpY2VzIG1vdmUgKi8KKyAgICBQeV9zc2l6ZV90IG1heGxlbjsKKyAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7Cit9IGRlcXVlb2JqZWN0OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IGRlcXVlX3R5cGU7CisKIC8qIEZvciBkZWJ1ZyBidWlsZHMsIGFkZCBlcnJvciBjaGVja2luZyB0byB0cmFjayB0aGUgZW5kcG9pbnRzCiAgKiBpbiB0aGUgY2hhaW4gb2YgbGlua3MuICBUaGUgZ29hbCBpcyB0byBtYWtlIHN1cmUgdGhhdCBsaW5rCiAgKiBhc3NpZ25tZW50cyBvbmx5IHRha2UgcGxhY2UgYXQgZW5kcG9pbnRzIHNvIHRoYXQgbGlua3MgYWxyZWFkeQpAQCAtNzIsOCArMTA4LDE0IEBACiAjZGVmaW5lIENIRUNLX05PVF9FTkQobGluaykKICNlbmRpZgogCisvKiBUbyBwcmV2ZW50IGxlbiBmcm9tIG92ZXJmbG93aW5nIFBZX1NTSVpFX1RfTUFYLCB3ZSByZWZ1c2UgdG8KKyAgIGFsbG9jYXRlIG5ldyBibG9ja3MgaWYgdGhlIGN1cnJlbnQgbGVuIGlzIG5lYXJpbmcgb3ZlcmZsb3cuCisqLworCisjZGVmaW5lIE1BWF9ERVFVRV9MRU4gKFBZX1NTSVpFX1RfTUFYIC0gMypCTE9DS0xFTikKKwogLyogQSBzaW1wbGUgZnJlZWxpc3Rpbmcgc2NoZW1lIGlzIHVzZWQgdG8gbWluaW1pemUgY2FsbHMgdG8gdGhlIG1lbW9yeQotICAgYWxsb2NhdG9yLiAgSXQgYWNjb21vZGF0ZXMgY29tbW9uIHVzZSBjYXNlcyB3aGVyZSBuZXcgYmxvY2tzIGFyZSBiZWluZworICAgYWxsb2NhdG9yLiAgSXQgYWNjb21tb2RhdGVzIGNvbW1vbiB1c2UgY2FzZXMgd2hlcmUgbmV3IGJsb2NrcyBhcmUgYmVpbmcKICAgIGFkZGVkIGF0IGFib3V0IHRoZSBzYW1lIHJhdGUgYXMgb2xkIGJsb2NrcyBhcmUgYmVpbmcgZnJlZWQuCiAgKi8KIApAQCAtODQsOSArMTI2LDcgQEAKIHN0YXRpYyBibG9jayAqCiBuZXdibG9jayhQeV9zc2l6ZV90IGxlbikgewogICAgIGJsb2NrICpiOwotICAgIC8qIFRvIHByZXZlbnQgbGVuIGZyb20gb3ZlcmZsb3dpbmcgUFlfU1NJWkVfVF9NQVgsIHdlIHJlZnVzZSB0bwotICAgICAqIGFsbG9jYXRlIG5ldyBibG9ja3MgaWYgdGhlIGN1cnJlbnQgbGVuIGlzIG5lYXJpbmcgb3ZlcmZsb3cuICovCi0gICAgaWYgKGxlbiA+PSBQWV9TU0laRV9UX01BWCAtIDIqQkxPQ0tMRU4pIHsKKyAgICBpZiAobGVuID49IE1BWF9ERVFVRV9MRU4pIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGFkZCBtb3JlIGJsb2NrcyB0byB0aGUgZGVxdWUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMTQsMzQgKzE1NCwxMSBAQAogICAgIH0KIH0KIAotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X1ZBUl9IRUFECi0gICAgYmxvY2sgKmxlZnRibG9jazsKLSAgICBibG9jayAqcmlnaHRibG9jazsKLSAgICBQeV9zc2l6ZV90IGxlZnRpbmRleDsgICAgICAgLyogaW4gcmFuZ2UoQkxPQ0tMRU4pICovCi0gICAgUHlfc3NpemVfdCByaWdodGluZGV4OyAgICAgIC8qIGluIHJhbmdlKEJMT0NLTEVOKSAqLwotICAgIGxvbmcgc3RhdGU7ICAgICAgICAgICAgICAgICAvKiBpbmNyZW1lbnRlZCB3aGVuZXZlciB0aGUgaW5kaWNlcyBtb3ZlICovCi0gICAgUHlfc3NpemVfdCBtYXhsZW47Ci0gICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OyAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyAqLwotfSBkZXF1ZW9iamVjdDsKLQotLyogVGhlIGRlcXVlJ3Mgc2l6ZSBsaW1pdCBpcyBkLm1heGxlbi4gIFRoZSBsaW1pdCBjYW4gYmUgemVybyBvciBwb3NpdGl2ZS4KLSAqIElmIHRoZXJlIGlzIG5vIGxpbWl0LCB0aGVuIGQubWF4bGVuID09IC0xLgotICoKLSAqIEFmdGVyIGFuIGl0ZW0gaXMgYWRkZWQgdG8gYSBkZXF1ZSwgd2UgY2hlY2sgdG8gc2VlIGlmIHRoZSBzaXplIGhhcyBncm93biBwYXN0Ci0gKiB0aGUgbGltaXQuIElmIGl0IGhhcywgd2UgZ2V0IHRoZSBzaXplIGJhY2sgZG93biB0byB0aGUgbGltaXQgYnkgcG9wcGluZyBhbgotICogaXRlbSBvZmYgb2YgdGhlIG9wcG9zaXRlIGVuZC4gIFRoZSBtZXRob2RzIHRoYXQgY2FuIHRyaWdnZXIgdGhpcyBhcmUgYXBwZW5kKCksCi0gKiBhcHBlbmRsZWZ0KCksIGV4dGVuZCgpLCBhbmQgZXh0ZW5kbGVmdCgpLgotICovCi0KLSNkZWZpbmUgVFJJTShkLCBwb3BmdW5jdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKGQtPm1heGxlbiAhPSAtMSAmJiBQeV9TSVpFKGQpID4gZC0+bWF4bGVuKSB7ICAgICAgIFwKLSAgICAgICAgUHlPYmplY3QgKnJ2ID0gcG9wZnVuY3Rpb24oZCwgTlVMTCk7ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgYXNzZXJ0KHJ2ICE9IE5VTEwgICYmICBQeV9TSVpFKGQpIDw9IGQtPm1heGxlbik7ICAgIFwKLSAgICAgICAgUHlfREVDUkVGKHJ2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgZGVxdWVfdHlwZTsKKy8qIFhYWCBUb2RvOgorICAgSWYgYWxpZ25lZCBtZW1vcnkgYWxsb2NhdGlvbnMgYmVjb21lIGF2YWlsYWJsZSwgbWFrZSB0aGUKKyAgIGRlcXVlIG9iamVjdCA2NCBieXRlIGFsaWduZWQgc28gdGhhdCBhbGwgb2YgdGhlIGZpZWxkcworICAgY2FuIGJlIHJldHJpZXZlZCBvciB1cGRhdGVkIGluIGEgc2luZ2xlIGNhY2hlIGxpbmUuCisqLwogCiBzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQpAQCAtMTYzLDE0ICsxODAsMTQgQEAKICAgICBNQVJLX0VORChiLT5yaWdodGxpbmspOwogCiAgICAgYXNzZXJ0KEJMT0NLTEVOID49IDIpOworICAgIFB5X1NJWkUoZGVxdWUpID0gMDsKICAgICBkZXF1ZS0+bGVmdGJsb2NrID0gYjsKICAgICBkZXF1ZS0+cmlnaHRibG9jayA9IGI7CiAgICAgZGVxdWUtPmxlZnRpbmRleCA9IENFTlRFUiArIDE7CiAgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSBDRU5URVI7Ci0gICAgUHlfU0laRShkZXF1ZSkgPSAwOwogICAgIGRlcXVlLT5zdGF0ZSA9IDA7Ci0gICAgZGVxdWUtPndlYWtyZWZsaXN0ID0gTlVMTDsKICAgICBkZXF1ZS0+bWF4bGVuID0gLTE7CisgICAgZGVxdWUtPndlYWtyZWZsaXN0ID0gTlVMTDsKIAogICAgIHJldHVybiAoUHlPYmplY3QgKilkZXF1ZTsKIH0KQEAgLTE5MSwxMyArMjA4LDcgQEAKICAgICBkZXF1ZS0+c3RhdGUrKzsKIAogICAgIGlmIChkZXF1ZS0+cmlnaHRpbmRleCA9PSAtMSkgewotICAgICAgICBpZiAoUHlfU0laRShkZXF1ZSkgPT0gMCkgewotICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgPT0gZGVxdWUtPnJpZ2h0YmxvY2spOwotICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0aW5kZXggPT0gZGVxdWUtPnJpZ2h0aW5kZXgrMSk7Ci0gICAgICAgICAgICAvKiByZS1jZW50ZXIgaW5zdGVhZCBvZiBmcmVlaW5nIGEgYmxvY2sgKi8KLSAgICAgICAgICAgIGRlcXVlLT5sZWZ0aW5kZXggPSBDRU5URVIgKyAxOwotICAgICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSBDRU5URVI7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChQeV9TSVpFKGRlcXVlKSkgewogICAgICAgICAgICAgcHJldmJsb2NrID0gZGVxdWUtPnJpZ2h0YmxvY2stPmxlZnRsaW5rOwogICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgIT0gZGVxdWUtPnJpZ2h0YmxvY2spOwogICAgICAgICAgICAgZnJlZWJsb2NrKGRlcXVlLT5yaWdodGJsb2NrKTsKQEAgLTIwNSw2ICsyMTYsMTIgQEAKICAgICAgICAgICAgIE1BUktfRU5EKHByZXZibG9jay0+cmlnaHRsaW5rKTsKICAgICAgICAgICAgIGRlcXVlLT5yaWdodGJsb2NrID0gcHJldmJsb2NrOwogICAgICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSBCTE9DS0xFTiAtIDE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jayA9PSBkZXF1ZS0+cmlnaHRibG9jayk7CisgICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRpbmRleCA9PSBkZXF1ZS0+cmlnaHRpbmRleCsxKTsKKyAgICAgICAgICAgIC8qIHJlLWNlbnRlciBpbnN0ZWFkIG9mIGZyZWVpbmcgYSBibG9jayAqLworICAgICAgICAgICAgZGVxdWUtPmxlZnRpbmRleCA9IENFTlRFUiArIDE7CisgICAgICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IENFTlRFUjsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gaXRlbTsKQEAgLTIyOSwxMyArMjQ2LDcgQEAKICAgICBkZXF1ZS0+c3RhdGUrKzsKIAogICAgIGlmIChkZXF1ZS0+bGVmdGluZGV4ID09IEJMT0NLTEVOKSB7Ci0gICAgICAgIGlmIChQeV9TSVpFKGRlcXVlKSA9PSAwKSB7Ci0gICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jayA9PSBkZXF1ZS0+cmlnaHRibG9jayk7Ci0gICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRpbmRleCA9PSBkZXF1ZS0+cmlnaHRpbmRleCsxKTsKLSAgICAgICAgICAgIC8qIHJlLWNlbnRlciBpbnN0ZWFkIG9mIGZyZWVpbmcgYSBibG9jayAqLwotICAgICAgICAgICAgZGVxdWUtPmxlZnRpbmRleCA9IENFTlRFUiArIDE7Ci0gICAgICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IENFTlRFUjsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKFB5X1NJWkUoZGVxdWUpKSB7CiAgICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jayAhPSBkZXF1ZS0+cmlnaHRibG9jayk7CiAgICAgICAgICAgICBwcmV2YmxvY2sgPSBkZXF1ZS0+bGVmdGJsb2NrLT5yaWdodGxpbms7CiAgICAgICAgICAgICBmcmVlYmxvY2soZGVxdWUtPmxlZnRibG9jayk7CkBAIC0yNDMsNiArMjU0LDEyIEBACiAgICAgICAgICAgICBNQVJLX0VORChwcmV2YmxvY2stPmxlZnRsaW5rKTsKICAgICAgICAgICAgIGRlcXVlLT5sZWZ0YmxvY2sgPSBwcmV2YmxvY2s7CiAgICAgICAgICAgICBkZXF1ZS0+bGVmdGluZGV4ID0gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGJsb2NrID09IGRlcXVlLT5yaWdodGJsb2NrKTsKKyAgICAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGluZGV4ID09IGRlcXVlLT5yaWdodGluZGV4KzEpOworICAgICAgICAgICAgLyogcmUtY2VudGVyIGluc3RlYWQgb2YgZnJlZWluZyBhIGJsb2NrICovCisgICAgICAgICAgICBkZXF1ZS0+bGVmdGluZGV4ID0gQ0VOVEVSICsgMTsKKyAgICAgICAgICAgIGRlcXVlLT5yaWdodGluZGV4ID0gQ0VOVEVSOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBpdGVtOwpAQCAtMjUwLDExICsyNjcsNDIgQEAKIAogUHlEb2NfU1RSVkFSKHBvcGxlZnRfZG9jLCAiUmVtb3ZlIGFuZCByZXR1cm4gdGhlIGxlZnRtb3N0IGVsZW1lbnQuIik7CiAKKy8qIFRoZSBkZXF1ZSdzIHNpemUgbGltaXQgaXMgZC5tYXhsZW4uICBUaGUgbGltaXQgY2FuIGJlIHplcm8gb3IgcG9zaXRpdmUuCisgKiBJZiB0aGVyZSBpcyBubyBsaW1pdCwgdGhlbiBkLm1heGxlbiA9PSAtMS4KKyAqCisgKiBBZnRlciBhbiBpdGVtIGlzIGFkZGVkIHRvIGEgZGVxdWUsIHdlIGNoZWNrIHRvIHNlZSBpZiB0aGUgc2l6ZSBoYXMgZ3Jvd24gcGFzdAorICogdGhlIGxpbWl0LiBJZiBpdCBoYXMsIHdlIGdldCB0aGUgc2l6ZSBiYWNrIGRvd24gdG8gdGhlIGxpbWl0IGJ5IHBvcHBpbmcgYW4KKyAqIGl0ZW0gb2ZmIG9mIHRoZSBvcHBvc2l0ZSBlbmQuICBUaGUgbWV0aG9kcyB0aGF0IGNhbiB0cmlnZ2VyIHRoaXMgYXJlIGFwcGVuZCgpLAorICogYXBwZW5kbGVmdCgpLCBleHRlbmQoKSwgYW5kIGV4dGVuZGxlZnQoKS4KKyAqLworCitzdGF0aWMgdm9pZAorZGVxdWVfdHJpbV9yaWdodChkZXF1ZW9iamVjdCAqZGVxdWUpCit7CisgICAgaWYgKGRlcXVlLT5tYXhsZW4gIT0gLTEgJiYgUHlfU0laRShkZXF1ZSkgPiBkZXF1ZS0+bWF4bGVuKSB7CisgICAgICAgIFB5T2JqZWN0ICpydiA9IGRlcXVlX3BvcChkZXF1ZSwgTlVMTCk7CisgICAgICAgIGFzc2VydChydiAhPSBOVUxMKTsKKyAgICAgICAgYXNzZXJ0KFB5X1NJWkUoZGVxdWUpIDw9IGRlcXVlLT5tYXhsZW4pOworICAgICAgICBQeV9ERUNSRUYocnYpOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK2RlcXVlX3RyaW1fbGVmdChkZXF1ZW9iamVjdCAqZGVxdWUpCit7CisgICAgaWYgKGRlcXVlLT5tYXhsZW4gIT0gLTEgJiYgUHlfU0laRShkZXF1ZSkgPiBkZXF1ZS0+bWF4bGVuKSB7CisgICAgICAgIFB5T2JqZWN0ICpydiA9IGRlcXVlX3BvcGxlZnQoZGVxdWUsIE5VTEwpOworICAgICAgICBhc3NlcnQocnYgIT0gTlVMTCk7CisgICAgICAgIGFzc2VydChQeV9TSVpFKGRlcXVlKSA8PSBkZXF1ZS0+bWF4bGVuKTsKKyAgICAgICAgUHlfREVDUkVGKHJ2KTsKKyAgICB9Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBkZXF1ZV9hcHBlbmQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqaXRlbSkKIHsKICAgICBkZXF1ZS0+c3RhdGUrKzsKLSAgICBpZiAoZGVxdWUtPnJpZ2h0aW5kZXggPT0gQkxPQ0tMRU4tMSkgeworICAgIGlmIChkZXF1ZS0+cmlnaHRpbmRleCA9PSBCTE9DS0xFTiAtIDEpIHsKICAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jayhQeV9TSVpFKGRlcXVlKSk7CiAgICAgICAgIGlmIChiID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI2OSw3ICszMTcsNyBAQAogICAgIFB5X1NJWkUoZGVxdWUpKys7CiAgICAgZGVxdWUtPnJpZ2h0aW5kZXgrKzsKICAgICBkZXF1ZS0+cmlnaHRibG9jay0+ZGF0YVtkZXF1ZS0+cmlnaHRpbmRleF0gPSBpdGVtOwotICAgIFRSSU0oZGVxdWUsIGRlcXVlX3BvcGxlZnQpOworICAgIGRlcXVlX3RyaW1fbGVmdChkZXF1ZSk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTI5NCw3ICszNDIsNyBAQAogICAgIFB5X1NJWkUoZGVxdWUpKys7CiAgICAgZGVxdWUtPmxlZnRpbmRleC0tOwogICAgIGRlcXVlLT5sZWZ0YmxvY2stPmRhdGFbZGVxdWUtPmxlZnRpbmRleF0gPSBpdGVtOwotICAgIFRSSU0oZGVxdWUsIGRlcXVlX3BvcCk7CisgICAgZGVxdWVfdHJpbV9yaWdodChkZXF1ZSk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTM1MCw3ICszOTgsNyBAQAogCiAgICAgd2hpbGUgKChpdGVtID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7CiAgICAgICAgIGRlcXVlLT5zdGF0ZSsrOwotICAgICAgICBpZiAoZGVxdWUtPnJpZ2h0aW5kZXggPT0gQkxPQ0tMRU4tMSkgeworICAgICAgICBpZiAoZGVxdWUtPnJpZ2h0aW5kZXggPT0gQkxPQ0tMRU4gLSAxKSB7CiAgICAgICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKFB5X1NJWkUoZGVxdWUpKTsKICAgICAgICAgICAgIGlmIChiID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CkBAIC0zNjcsMTEgKzQxNSwxMyBAQAogICAgICAgICBQeV9TSVpFKGRlcXVlKSsrOwogICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCsrOwogICAgICAgICBkZXF1ZS0+cmlnaHRibG9jay0+ZGF0YVtkZXF1ZS0+cmlnaHRpbmRleF0gPSBpdGVtOwotICAgICAgICBUUklNKGRlcXVlLCBkZXF1ZV9wb3BsZWZ0KTsKKyAgICAgICAgZGVxdWVfdHJpbV9sZWZ0KGRlcXVlKTsKKyAgICB9CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC00MjgsMTEgKzQ3OCwxMyBAQAogICAgICAgICBQeV9TSVpFKGRlcXVlKSsrOwogICAgICAgICBkZXF1ZS0+bGVmdGluZGV4LS07CiAgICAgICAgIGRlcXVlLT5sZWZ0YmxvY2stPmRhdGFbZGVxdWUtPmxlZnRpbmRleF0gPSBpdGVtOwotICAgICAgICBUUklNKGRlcXVlLCBkZXF1ZV9wb3ApOworICAgICAgICBkZXF1ZV90cmltX3JpZ2h0KGRlcXVlKTsKKyAgICB9CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC00NDcsMTEgKzQ5OSwxNTEgQEAKICAgICByZXN1bHQgPSBkZXF1ZV9leHRlbmQoZGVxdWUsIG90aGVyKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgUHlfSU5DUkVGKGRlcXVlKTsKKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopZGVxdWU7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqZGVxdWVfY29weShQeU9iamVjdCAqZGVxdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVfY29uY2F0KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKm90aGVyKQoreworICAgIFB5T2JqZWN0ICpuZXdfZGVxdWUsICpyZXN1bHQ7CisgICAgaW50IHJ2OworCisgICAgcnYgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG90aGVyLCAoUHlPYmplY3QgKikmZGVxdWVfdHlwZSk7CisgICAgaWYgKHJ2IDw9IDApIHsKKyAgICAgICAgaWYgKHJ2ID09IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbiBvbmx5IGNvbmNhdGVuYXRlIGRlcXVlIChub3QgXCIlLjIwMHNcIikgdG8gZGVxdWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBuZXdfZGVxdWUgPSBkZXF1ZV9jb3B5KChQeU9iamVjdCAqKWRlcXVlKTsKKyAgICBpZiAobmV3X2RlcXVlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IGRlcXVlX2V4dGVuZCgoZGVxdWVvYmplY3QgKiluZXdfZGVxdWUsIG90aGVyKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG5ld19kZXF1ZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gbmV3X2RlcXVlOworfQorCitzdGF0aWMgdm9pZCBkZXF1ZV9jbGVhcihkZXF1ZW9iamVjdCAqZGVxdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVfcmVwZWF0KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlfc3NpemVfdCBuKQoreworICAgIGRlcXVlb2JqZWN0ICpuZXdfZGVxdWU7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIC8qIFhYWCBhZGQgYSBzcGVjaWFsIGNhc2UgZm9yIHdoZW4gbWF4bGVuIGlzIGRlZmluZWQgKi8KKyAgICBpZiAobiA8IDApCisgICAgICAgIG4gPSAwOworICAgIGVsc2UgaWYgKG4gPiAwICYmIFB5X1NJWkUoZGVxdWUpID4gTUFYX0RFUVVFX0xFTiAvIG4pCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworCisgICAgbmV3X2RlcXVlID0gKGRlcXVlb2JqZWN0ICopZGVxdWVfbmV3KCZkZXF1ZV90eXBlLCAoUHlPYmplY3QgKilOVUxMLCAoUHlPYmplY3QgKilOVUxMKTsKKyAgICBuZXdfZGVxdWUtPm1heGxlbiA9IGRlcXVlLT5tYXhsZW47CisKKyAgICBmb3IgKCA7IG4gOyBuLS0pIHsKKyAgICAgICAgcmVzdWx0ID0gZGVxdWVfZXh0ZW5kKG5ld19kZXF1ZSwgKFB5T2JqZWN0ICopZGVxdWUpOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdfZGVxdWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgfQorICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdfZGVxdWU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZXF1ZV9pbnBsYWNlX3JlcGVhdChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5X3NzaXplX3QgbikKK3sKKyAgICBQeV9zc2l6ZV90IGksIHNpemU7CisgICAgUHlPYmplY3QgKnNlcTsKKyAgICBQeU9iamVjdCAqcnY7CisKKyAgICBzaXplID0gUHlfU0laRShkZXF1ZSk7CisgICAgaWYgKHNpemUgPT0gMCB8fCBuID09IDEpIHsKKyAgICAgICAgUHlfSU5DUkVGKGRlcXVlKTsKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWRlcXVlOworICAgIH0KKworICAgIGlmIChuIDw9IDApIHsKKyAgICAgICAgZGVxdWVfY2xlYXIoZGVxdWUpOworICAgICAgICBQeV9JTkNSRUYoZGVxdWUpOworICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZGVxdWU7CisgICAgfQorCisgICAgaWYgKHNpemUgPiBNQVhfREVRVUVfTEVOIC8gbikgeworICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICB9CisKKyAgICBpZiAoc2l6ZSA9PSAxKSB7CisgICAgICAgIC8qIGNvbW1vbiBjYXNlLCByZXBlYXRpbmcgYSBzaW5nbGUgZWxlbWVudCAqLworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IGRlcXVlLT5sZWZ0YmxvY2stPmRhdGFbZGVxdWUtPmxlZnRpbmRleF07CisKKyAgICAgICAgaWYgKGRlcXVlLT5tYXhsZW4gIT0gLTEgJiYgbiA+IGRlcXVlLT5tYXhsZW4pCisgICAgICAgICAgICBuID0gZGVxdWUtPm1heGxlbjsKKworICAgICAgICBmb3IgKGkgPSAwIDsgaSA8IG4tMSA7IGkrKykgeworICAgICAgICAgICAgcnYgPSBkZXF1ZV9hcHBlbmQoZGVxdWUsIGl0ZW0pOworICAgICAgICAgICAgaWYgKHJ2ID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBQeV9ERUNSRUYocnYpOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihkZXF1ZSk7CisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilkZXF1ZTsKKyAgICB9CisKKyAgICBzZXEgPSBQeVNlcXVlbmNlX0xpc3QoKFB5T2JqZWN0ICopZGVxdWUpOworICAgIGlmIChzZXEgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIHNlcTsKKworICAgIGZvciAoaSA9IDAgOyBpIDwgbi0xIDsgaSsrKSB7CisgICAgICAgIHJ2ID0gZGVxdWVfZXh0ZW5kKGRlcXVlLCBzZXEpOworICAgICAgICBpZiAocnYgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNlcSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYocnYpOworICAgIH0KKyAgICBQeV9JTkNSRUYoZGVxdWUpOworICAgIFB5X0RFQ1JFRihzZXEpOworICAgIHJldHVybiAoUHlPYmplY3QgKilkZXF1ZTsKK30KKworLyogVGhlIHJvdGF0ZSgpIG1ldGhvZCBpcyBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJIGFuZCBpcyB1c2VkIGludGVybmFsbHkKK2FzIGEgcHJpbWl0aXZlIGZvciBvdGhlciBtZXRob2RzLgorCitSb3RhdGlvbiBieSAxIG9yIC0xIGlzIGEgY29tbW9uIGNhc2UsIHNvIGFueSBvcHRpbWl6YXRpb25zIGZvciBoaWdoCit2b2x1bWUgcm90YXRpb25zIHNob3VsZCB0YWtlIGNhcmUgbm90IHRvIHBlbmFsaXplIHRoZSBjb21tb24gY2FzZS4KKworQ29uY2VwdHVhbGx5LCBhIHJvdGF0ZSBieSBvbmUgaXMgZXF1aXZhbGVudCB0byBhIHBvcCBvbiBvbmUgc2lkZSBhbmQgYW4KK2FwcGVuZCBvbiB0aGUgb3RoZXIuICBIb3dldmVyLCBhIHBvcC9hcHBlbmQgcGFpciBpcyB1bm5lY2Vzc2FyaWx5IHNsb3cKK2JlY2F1c2UgaXQgcmVxdWlyZXMgYW4gaW5jcmVmL2RlY3JlZiBwYWlyIGZvciBhbiBvYmplY3QgbG9jYXRlZCByYW5kb21seQoraW4gbWVtb3J5LiAgSXQgaXMgYmV0dGVyIHRvIGp1c3QgbW92ZSB0aGUgb2JqZWN0IHBvaW50ZXIgZnJvbSBvbmUgYmxvY2sKK3RvIHRoZSBuZXh0IHdpdGhvdXQgY2hhbmdpbmcgdGhlIHJlZmVyZW5jZSBjb3VudC4KKworV2hlbiBtb3ZpbmcgYmF0Y2hlcyBvZiBwb2ludGVycywgaXQgaXMgdGVtcHRpbmcgdG8gdXNlIG1lbWNweSgpIGJ1dCB0aGF0Citwcm92ZWQgdG8gYmUgc2xvd2VyIHRoYW4gYSBzaW1wbGUgbG9vcCBmb3IgYSB2YXJpZXR5IG9mIHJlYXNvbnMuCitNZW1jcHkoKSBjYW5ub3Qga25vdyBpbiBhZHZhbmNlIHRoYXQgd2UncmUgY29weWluZyBwb2ludGVycyBpbnN0ZWFkIG9mCitieXRlcywgdGhhdCB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhcmUgcG9pbnRlciBhbGlnbmVkIGFuZAorbm9uLW92ZXJsYXBwaW5nLCB0aGF0IG1vdmluZyBqdXN0IG9uZSBwb2ludGVyIGlzIGEgY29tbW9uIGNhc2UsIHRoYXQgd2UKK25ldmVyIG5lZWQgdG8gbW92ZSBtb3JlIHRoYW4gQkxPQ0tMRU4gcG9pbnRlcnMsIGFuZCB0aGF0IGF0IGxlYXN0IG9uZQorcG9pbnRlciBpcyBhbHdheXMgbW92ZWQuCisKK0ZvciBoaWdoIHZvbHVtZSByb3RhdGlvbnMsIG5ld2Jsb2NrKCkgYW5kIGZyZWVibG9jaygpIGFyZSBuZXZlciBjYWxsZWQKK21vcmUgdGhhbiBvbmNlLiAgUHJldmlvdXNseSBlbXB0aWVkIGJsb2NrcyBhcmUgaW1tZWRpYXRlbHkgcmV1c2VkIGFzIGEKK2Rlc3RpbmF0aW9uIGJsb2NrLiAgSWYgYSBibG9jayBpcyBsZWZ0LW92ZXIgYXQgdGhlIGVuZCwgaXQgaXMgZnJlZWQuCisqLworCiBzdGF0aWMgaW50CiBfZGVxdWVfcm90YXRlKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlfc3NpemVfdCBuKQogewpAQCAtNTAxLDEzICs2OTMsMTMgQEAKICAgICAgICAgICAgIGlmIChtID4gbGVmdGluZGV4KQogICAgICAgICAgICAgICAgIG0gPSBsZWZ0aW5kZXg7CiAgICAgICAgICAgICBhc3NlcnQgKG0gPiAwICYmIG0gPD0gbGVuKTsKLSAgICAgICAgICAgIHNyYyA9ICZyaWdodGJsb2NrLT5kYXRhW3JpZ2h0aW5kZXhdOwotICAgICAgICAgICAgZGVzdCA9ICZsZWZ0YmxvY2stPmRhdGFbbGVmdGluZGV4IC0gMV07CiAgICAgICAgICAgICByaWdodGluZGV4IC09IG07CiAgICAgICAgICAgICBsZWZ0aW5kZXggLT0gbTsKKyAgICAgICAgICAgIHNyYyA9ICZyaWdodGJsb2NrLT5kYXRhW3JpZ2h0aW5kZXggKyAxXTsKKyAgICAgICAgICAgIGRlc3QgPSAmbGVmdGJsb2NrLT5kYXRhW2xlZnRpbmRleF07CiAgICAgICAgICAgICBuIC09IG07CiAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgKihkZXN0LS0pID0gKihzcmMtLSk7CisgICAgICAgICAgICAgICAgKihkZXN0KyspID0gKihzcmMrKyk7CiAgICAgICAgICAgICB9IHdoaWxlICgtLW0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChyaWdodGluZGV4ID09IC0xKSB7CkBAIC01ODMsNyArNzc1LDcgQEAKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cm90YXRlIiwgJm4pKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoX2RlcXVlX3JvdGF0ZShkZXF1ZSwgbikgPT0gMCkKKyAgICBpZiAoIV9kZXF1ZV9yb3RhdGUoZGVxdWUsIG4pKQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICByZXR1cm4gTlVMTDsKIH0KQEAgLTU5OCw3ICs3OTAsNyBAQAogICAgIGJsb2NrICpyaWdodGJsb2NrID0gZGVxdWUtPnJpZ2h0YmxvY2s7CiAgICAgUHlfc3NpemVfdCBsZWZ0aW5kZXggPSBkZXF1ZS0+bGVmdGluZGV4OwogICAgIFB5X3NzaXplX3QgcmlnaHRpbmRleCA9IGRlcXVlLT5yaWdodGluZGV4OwotICAgIFB5X3NzaXplX3QgbiA9IChQeV9TSVpFKGRlcXVlKSkvMjsKKyAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKGRlcXVlKSAvIDI7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIFB5T2JqZWN0ICp0bXA7CiAKQEAgLTY0MSw4ICs4MzMsOCBAQAogICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoZGVxdWUpOwogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKKyAgICBzaXplX3Qgc3RhcnRfc3RhdGUgPSBkZXF1ZS0+c3RhdGU7CiAgICAgUHlPYmplY3QgKml0ZW07Ci0gICAgbG9uZyBzdGFydF9zdGF0ZSA9IGRlcXVlLT5zdGF0ZTsKICAgICBpbnQgY21wOwogCiAgICAgZm9yIChpPTAgOyBpPG4gOyBpKyspIHsKQEAgLTY3Myw2ICs4NjUsMzggQEAKIFB5RG9jX1NUUlZBUihjb3VudF9kb2MsCiAiRC5jb3VudCh2YWx1ZSkgLT4gaW50ZWdlciAtLSByZXR1cm4gbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mIHZhbHVlIik7CiAKK3N0YXRpYyBpbnQKK2RlcXVlX2NvbnRhaW5zKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKnYpCit7CisgICAgYmxvY2sgKmIgPSBkZXF1ZS0+bGVmdGJsb2NrOworICAgIFB5X3NzaXplX3QgaW5kZXggPSBkZXF1ZS0+bGVmdGluZGV4OworICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoZGVxdWUpOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBzaXplX3Qgc3RhcnRfc3RhdGUgPSBkZXF1ZS0+c3RhdGU7CisgICAgUHlPYmplY3QgKml0ZW07CisgICAgaW50IGNtcDsKKworICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrKSB7CisgICAgICAgIENIRUNLX05PVF9FTkQoYik7CisgICAgICAgIGl0ZW0gPSBiLT5kYXRhW2luZGV4XTsKKyAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGl0ZW0sIHYsIFB5X0VRKTsKKyAgICAgICAgaWYgKGNtcCkgeworICAgICAgICAgICAgcmV0dXJuIGNtcDsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3RhcnRfc3RhdGUgIT0gZGVxdWUtPnN0YXRlKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXF1ZSBtdXRhdGVkIGR1cmluZyBpdGVyYXRpb24iKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpbmRleCsrOworICAgICAgICBpZiAoaW5kZXggPT0gQkxPQ0tMRU4pIHsKKyAgICAgICAgICAgIGIgPSBiLT5yaWdodGxpbms7CisgICAgICAgICAgICBpbmRleCA9IDA7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBQeV9zc2l6ZV90CiBkZXF1ZV9sZW4oZGVxdWVvYmplY3QgKmRlcXVlKQogewpAQCAtNjgwLDYgKzkwNCwxMDEgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2RlcXVlX2luZGV4KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBpLCBzdGFydD0wLCBzdG9wPVB5X1NJWkUoZGVxdWUpOworICAgIFB5T2JqZWN0ICp2LCAqaXRlbTsKKyAgICBibG9jayAqYiA9IGRlcXVlLT5sZWZ0YmxvY2s7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IGRlcXVlLT5sZWZ0aW5kZXg7CisgICAgc2l6ZV90IHN0YXJ0X3N0YXRlID0gZGVxdWUtPnN0YXRlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE8mTyY6aW5kZXgiLCAmdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5RXZhbF9TbGljZUluZGV4LCAmc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUV2YWxfU2xpY2VJbmRleCwgJnN0b3ApKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc3RhcnQgPCAwKSB7CisgICAgICAgIHN0YXJ0ICs9IFB5X1NJWkUoZGVxdWUpOworICAgICAgICBpZiAoc3RhcnQgPCAwKQorICAgICAgICAgICAgc3RhcnQgPSAwOworICAgIH0KKyAgICBpZiAoc3RvcCA8IDApIHsKKyAgICAgICAgc3RvcCArPSBQeV9TSVpFKGRlcXVlKTsKKyAgICAgICAgaWYgKHN0b3AgPCAwKQorICAgICAgICAgICAgc3RvcCA9IDA7CisgICAgfQorICAgIGlmIChzdG9wID4gUHlfU0laRShkZXF1ZSkpCisgICAgICAgIHN0b3AgPSBQeV9TSVpFKGRlcXVlKTsKKworICAgIGZvciAoaT0wIDsgaTxzdG9wIDsgaSsrKSB7CisgICAgICAgIGlmIChpID49IHN0YXJ0KSB7CisgICAgICAgICAgICBpbnQgY21wOworICAgICAgICAgICAgQ0hFQ0tfTk9UX0VORChiKTsKKyAgICAgICAgICAgIGl0ZW0gPSBiLT5kYXRhW2luZGV4XTsKKyAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdGVtLCB2LCBQeV9FUSk7CisgICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGkpOworICAgICAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGlmIChzdGFydF9zdGF0ZSAhPSBkZXF1ZS0+c3RhdGUpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVxdWUgbXV0YXRlZCBkdXJpbmcgaXRlcmF0aW9uIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgaWYgKGluZGV4ID09IEJMT0NLTEVOKSB7CisgICAgICAgICAgICBiID0gYi0+cmlnaHRsaW5rOworICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICB9CisgICAgfQorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiJVIgaXMgbm90IGluIGRlcXVlIiwgdik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihpbmRleF9kb2MsCisiRC5pbmRleCh2YWx1ZSwgW3N0YXJ0LCBbc3RvcF1dKSAtPiBpbnRlZ2VyIC0tIHJldHVybiBmaXJzdCBpbmRleCBvZiB2YWx1ZS5cbiIKKyJSYWlzZXMgVmFsdWVFcnJvciBpZiB0aGUgdmFsdWUgaXMgbm90IHByZXNlbnQuIik7CisKKy8qIGluc2VydCgpLCByZW1vdmUoKSwgYW5kIGRlbGl0ZW0oKSBhcmUgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YKKyAgIHJvdGF0ZSgpIGZvciBzaW1wbGljaXR5IGFuZCByZWFzb25hYmxlIHBlcmZvcm1hbmNlIG5lYXIgdGhlIGVuZAorICAgcG9pbnRzLiAgSWYgZm9yIHNvbWUgcmVhc29uIHRoZXNlIG1ldGhvZHMgYmVjb21lIHBvcHVsYXIsIGl0IGlzIG5vdAorICAgaGFyZCB0byByZS1pbXBsZW1lbnQgdGhpcyB1c2luZyBkaXJlY3QgZGF0YSBtb3ZlbWVudCAoc2ltaWxhciB0bworICAgdGhlIGNvZGUgdXNlZCBpbiBsaXN0IHNsaWNlIGFzc2lnbm1lbnRzKSBhbmQgYWNoaWV2ZSBhIHBlcmZvcm1hbmNlCisgICBib29zdCAoYnkgbW92aW5nIGVhY2ggcG9pbnRlciBvbmx5IG9uY2UgaW5zdGVhZCBvZiB0d2ljZSkuCisqLworCitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVfaW5zZXJ0KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBpbmRleDsKKyAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKGRlcXVlKTsKKyAgICBQeU9iamVjdCAqdmFsdWU7CisgICAgUHlPYmplY3QgKnJ2OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuTzppbnNlcnQiLCAmaW5kZXgsICZ2YWx1ZSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpbmRleCA+PSBuKQorICAgICAgICByZXR1cm4gZGVxdWVfYXBwZW5kKGRlcXVlLCB2YWx1ZSk7CisgICAgaWYgKGluZGV4IDw9IC1uIHx8IGluZGV4ID09IDApCisgICAgICAgIHJldHVybiBkZXF1ZV9hcHBlbmRsZWZ0KGRlcXVlLCB2YWx1ZSk7CisgICAgaWYgKF9kZXF1ZV9yb3RhdGUoZGVxdWUsIC1pbmRleCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpbmRleCA8IDApCisgICAgICAgIHJ2ID0gZGVxdWVfYXBwZW5kKGRlcXVlLCB2YWx1ZSk7CisgICAgZWxzZQorICAgICAgICBydiA9IGRlcXVlX2FwcGVuZGxlZnQoZGVxdWUsIHZhbHVlKTsKKyAgICBpZiAocnYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfREVDUkVGKHJ2KTsKKyAgICBpZiAoX2RlcXVlX3JvdGF0ZShkZXF1ZSwgaW5kZXgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKGluc2VydF9kb2MsCisiRC5pbnNlcnQoaW5kZXgsIG9iamVjdCkgLS0gaW5zZXJ0IG9iamVjdCBiZWZvcmUgaW5kZXgiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlX3JlbW92ZShkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKICAgICBQeV9zc2l6ZV90IGksIG49UHlfU0laRShkZXF1ZSk7CkBAIC03MTcsMTYgKzEwMzYsODMgQEAKIHN0YXRpYyB2b2lkCiBkZXF1ZV9jbGVhcihkZXF1ZW9iamVjdCAqZGVxdWUpCiB7CisgICAgYmxvY2sgKmI7CisgICAgYmxvY2sgKnByZXZibG9jazsKKyAgICBibG9jayAqbGVmdGJsb2NrOworICAgIFB5X3NzaXplX3QgbGVmdGluZGV4OworICAgIFB5X3NzaXplX3QgbjsKICAgICBQeU9iamVjdCAqaXRlbTsKIAorICAgIGlmIChQeV9TSVpFKGRlcXVlKSA9PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICAvKiBEdXJpbmcgdGhlIHByb2Nlc3Mgb2YgY2xlYXJpbmcgYSBkZXF1ZSwgZGVjcmVmcyBjYW4gY2F1c2UgdGhlCisgICAgICAgZGVxdWUgdG8gbXV0YXRlLiAgVG8gYXZvaWQgZmF0YWwgY29uZnVzaW9uLCB3ZSBoYXZlIHRvIG1ha2UgdGhlCisgICAgICAgZGVxdWUgZW1wdHkgYmVmb3JlIGNsZWFyaW5nIHRoZSBibG9ja3MgYW5kIG5ldmVyIHJlZmVyIHRvCisgICAgICAgYW55dGhpbmcgdmlhIGRlcXVlLT5yZWYgd2hpbGUgY2xlYXJpbmcuICAoVGhpcyBpcyB0aGUgc2FtZQorICAgICAgIHRlY2huaXF1ZSB1c2VkIGZvciBjbGVhcmluZyBsaXN0cywgc2V0cywgYW5kIGRpY3RzLikKKworICAgICAgIE1ha2luZyB0aGUgZGVxdWUgZW1wdHkgcmVxdWlyZXMgYWxsb2NhdGluZyBhIG5ldyBlbXB0eSBibG9jay4gIEluCisgICAgICAgdGhlIHVubGlrZWx5IGV2ZW50IHRoYXQgbWVtb3J5IGlzIGZ1bGwsIHdlIGZhbGwgYmFjayB0byBhbgorICAgICAgIGFsdGVybmF0ZSBtZXRob2QgdGhhdCBkb2Vzbid0IHJlcXVpcmUgYSBuZXcgYmxvY2suICBSZXBlYXRpbmcKKyAgICAgICBwb3BzIGluIGEgd2hpbGUtbG9vcCBpcyBzbG93ZXIsIHBvc3NpYmx5IHJlLWVudHJhbnQgKGFuZCBhIGNsZXZlcgorICAgICAgIGFkdmVyc2FyeSBjb3VsZCBjYXVzZSBpdCB0byBuZXZlciB0ZXJtaW5hdGUpLgorICAgICovCisKKyAgICBiID0gbmV3YmxvY2soMCk7CisgICAgaWYgKGIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBnb3RvIGFsdGVybmF0ZV9tZXRob2Q7CisgICAgfQorCisgICAgLyogUmVtZW1iZXIgdGhlIG9sZCBzaXplLCBsZWZ0YmxvY2ssIGFuZCBsZWZ0aW5kZXggKi8KKyAgICBsZWZ0YmxvY2sgPSBkZXF1ZS0+bGVmdGJsb2NrOworICAgIGxlZnRpbmRleCA9IGRlcXVlLT5sZWZ0aW5kZXg7CisgICAgbiA9IFB5X1NJWkUoZGVxdWUpOworCisgICAgLyogU2V0IHRoZSBkZXF1ZSB0byBiZSBlbXB0eSB1c2luZyB0aGUgbmV3bHkgYWxsb2NhdGVkIGJsb2NrICovCisgICAgTUFSS19FTkQoYi0+bGVmdGxpbmspOworICAgIE1BUktfRU5EKGItPnJpZ2h0bGluayk7CisgICAgUHlfU0laRShkZXF1ZSkgPSAwOworICAgIGRlcXVlLT5sZWZ0YmxvY2sgPSBiOworICAgIGRlcXVlLT5yaWdodGJsb2NrID0gYjsKKyAgICBkZXF1ZS0+bGVmdGluZGV4ID0gQ0VOVEVSICsgMTsKKyAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IENFTlRFUjsKKyAgICBkZXF1ZS0+c3RhdGUrKzsKKworICAgIC8qIE5vdyB0aGUgb2xkIHNpemUsIGxlZnRibG9jaywgYW5kIGxlZnRpbmRleCBhcmUgZGlzY29ubmVjdGVkIGZyb20KKyAgICAgICB0aGUgZW1wdHkgZGVxdWUgYW5kIHdlIGNhbiB1c2UgdGhlbSB0byBkZWNyZWYgdGhlIHBvaW50ZXJzLgorICAgICovCisgICAgd2hpbGUgKG4tLSkgeworICAgICAgICBpdGVtID0gbGVmdGJsb2NrLT5kYXRhW2xlZnRpbmRleF07CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgbGVmdGluZGV4Kys7CisgICAgICAgIGlmIChsZWZ0aW5kZXggPT0gQkxPQ0tMRU4gJiYgbikgeworICAgICAgICAgICAgQ0hFQ0tfTk9UX0VORChsZWZ0YmxvY2stPnJpZ2h0bGluayk7CisgICAgICAgICAgICBwcmV2YmxvY2sgPSBsZWZ0YmxvY2s7CisgICAgICAgICAgICBsZWZ0YmxvY2sgPSBsZWZ0YmxvY2stPnJpZ2h0bGluazsKKyAgICAgICAgICAgIGxlZnRpbmRleCA9IDA7CisgICAgICAgICAgICBmcmVlYmxvY2socHJldmJsb2NrKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBDSEVDS19FTkQobGVmdGJsb2NrLT5yaWdodGxpbmspOworICAgIGZyZWVibG9jayhsZWZ0YmxvY2spOworICAgIHJldHVybjsKKworICBhbHRlcm5hdGVfbWV0aG9kOgogICAgIHdoaWxlIChQeV9TSVpFKGRlcXVlKSkgewogICAgICAgICBpdGVtID0gZGVxdWVfcG9wKGRlcXVlLCBOVUxMKTsKICAgICAgICAgYXNzZXJ0IChpdGVtICE9IE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgfQotICAgIGFzc2VydChkZXF1ZS0+bGVmdGJsb2NrID09IGRlcXVlLT5yaWdodGJsb2NrICYmCi0gICAgICAgICAgIGRlcXVlLT5sZWZ0aW5kZXggLSAxID09IGRlcXVlLT5yaWdodGluZGV4ICYmCi0gICAgICAgICAgIFB5X1NJWkUoZGVxdWUpID09IDApOworfQorCitzdGF0aWMgaW50Cit2YWxpZF9pbmRleChQeV9zc2l6ZV90IGksIFB5X3NzaXplX3QgbGltaXQpCit7CisgICAgLyogVGhlIGNhc3QgdG8gc2l6ZV90IGxldCB1cyB1c2UganVzdCBhIHNpbmdsZSBjb21wYXJpc29uCisgICAgICAgdG8gY2hlY2sgd2hldGhlciBpIGlzIGluIHRoZSByYW5nZTogMCA8PSBpIDwgbGltaXQgKi8KKyAgICByZXR1cm4gKHNpemVfdCkgaSA8IChzaXplX3QpIGxpbWl0OwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNzM2LDkgKzExMjIsOCBAQAogICAgIFB5T2JqZWN0ICppdGVtOwogICAgIFB5X3NzaXplX3QgbiwgaW5kZXg9aTsKIAotICAgIGlmIChpIDwgMCB8fCBpID49IFB5X1NJWkUoZGVxdWUpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImRlcXVlIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgIGlmICghdmFsaWRfaW5kZXgoaSwgUHlfU0laRShkZXF1ZSkpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAiZGVxdWUgaW5kZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNzUwLDE0ICsxMTM1LDE2IEBACiAgICAgICAgIGIgPSBkZXF1ZS0+cmlnaHRibG9jazsKICAgICB9IGVsc2UgewogICAgICAgICBpICs9IGRlcXVlLT5sZWZ0aW5kZXg7Ci0gICAgICAgIG4gPSBpIC8gQkxPQ0tMRU47Ci0gICAgICAgIGkgJT0gQkxPQ0tMRU47CisgICAgICAgIG4gPSAoUHlfc3NpemVfdCkoKHNpemVfdCkgaSAvIEJMT0NLTEVOKTsKKyAgICAgICAgaSA9IChQeV9zc2l6ZV90KSgoc2l6ZV90KSBpICUgQkxPQ0tMRU4pOwogICAgICAgICBpZiAoaW5kZXggPCAoUHlfU0laRShkZXF1ZSkgPj4gMSkpIHsKICAgICAgICAgICAgIGIgPSBkZXF1ZS0+bGVmdGJsb2NrOwogICAgICAgICAgICAgd2hpbGUgKG4tLSkKICAgICAgICAgICAgICAgICBiID0gYi0+cmlnaHRsaW5rOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbiA9IChkZXF1ZS0+bGVmdGluZGV4ICsgUHlfU0laRShkZXF1ZSkgLSAxKSAvIEJMT0NLTEVOIC0gbjsKKyAgICAgICAgICAgIG4gPSAoUHlfc3NpemVfdCkoCisgICAgICAgICAgICAgICAgICAgICgoc2l6ZV90KShkZXF1ZS0+bGVmdGluZGV4ICsgUHlfU0laRShkZXF1ZSkgLSAxKSkKKyAgICAgICAgICAgICAgICAgICAgLyBCTE9DS0xFTiAtIG4pOwogICAgICAgICAgICAgYiA9IGRlcXVlLT5yaWdodGJsb2NrOwogICAgICAgICAgICAgd2hpbGUgKG4tLSkKICAgICAgICAgICAgICAgICBiID0gYi0+bGVmdGxpbms7CkBAIC03NjgsMTMgKzExNTUsNiBAQAogICAgIHJldHVybiBpdGVtOwogfQogCi0vKiBkZWxpdGVtKCkgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2Ygcm90YXRlIGZvciBzaW1wbGljaXR5IGFuZCByZWFzb25hYmxlCi0gICBwZXJmb3JtYW5jZSBuZWFyIHRoZSBlbmQgcG9pbnRzLiAgSWYgZm9yIHNvbWUgcmVhc29uIHRoaXMgbWV0aG9kIGJlY29tZXMKLSAgIHBvcHVsYXIsIGl0IGlzIG5vdCBoYXJkIHRvIHJlLWltcGxlbWVudCB0aGlzIHVzaW5nIGRpcmVjdCBkYXRhIG1vdmVtZW50Ci0gICAoc2ltaWxhciB0byBjb2RlIGluIGxpc3Qgc2xpY2UgYXNzaWdubWVudCkgYW5kIGFjaGlldmUgYSB0d28gb3IgdGhyZWVmb2xkCi0gICBwZXJmb3JtYW5jZSBib29zdC4KLSovCi0KIHN0YXRpYyBpbnQKIGRlcXVlX2RlbF9pdGVtKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlfc3NpemVfdCBpKQogewpAQCAtNzk4LDIzICsxMTc4LDI0IEBACiAgICAgYmxvY2sgKmI7CiAgICAgUHlfc3NpemVfdCBuLCBsZW49UHlfU0laRShkZXF1ZSksIGhhbGZsZW49KGxlbisxKT4+MSwgaW5kZXg9aTsKIAotICAgIGlmIChpIDwgMCB8fCBpID49IGxlbikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJkZXF1ZSBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICBpZiAoIXZhbGlkX2luZGV4KGksIGxlbikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJkZXF1ZSBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gZGVxdWVfZGVsX2l0ZW0oZGVxdWUsIGkpOwogCiAgICAgaSArPSBkZXF1ZS0+bGVmdGluZGV4OwotICAgIG4gPSBpIC8gQkxPQ0tMRU47Ci0gICAgaSAlPSBCTE9DS0xFTjsKKyAgICBuID0gKFB5X3NzaXplX3QpKChzaXplX3QpIGkgLyBCTE9DS0xFTik7CisgICAgaSA9IChQeV9zc2l6ZV90KSgoc2l6ZV90KSBpICUgQkxPQ0tMRU4pOwogICAgIGlmIChpbmRleCA8PSBoYWxmbGVuKSB7CiAgICAgICAgIGIgPSBkZXF1ZS0+bGVmdGJsb2NrOwogICAgICAgICB3aGlsZSAobi0tKQogICAgICAgICAgICAgYiA9IGItPnJpZ2h0bGluazsKICAgICB9IGVsc2UgewotICAgICAgICBuID0gKGRlcXVlLT5sZWZ0aW5kZXggKyBsZW4gLSAxKSAvIEJMT0NLTEVOIC0gbjsKKyAgICAgICAgbiA9IChQeV9zc2l6ZV90KSgKKyAgICAgICAgICAgICAgICAoKHNpemVfdCkoZGVxdWUtPmxlZnRpbmRleCArIFB5X1NJWkUoZGVxdWUpIC0gMSkpCisgICAgICAgICAgICAgICAgLyBCTE9DS0xFTiAtIG4pOwogICAgICAgICBiID0gZGVxdWUtPnJpZ2h0YmxvY2s7CiAgICAgICAgIHdoaWxlIChuLS0pCiAgICAgICAgICAgICBiID0gYi0+bGVmdGxpbms7CkBAIC05MzYsMTMgKzEzMTcsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmICgoKGRlcXVlb2JqZWN0ICopZGVxdWUpLT5tYXhsZW4gIT0gLTEpCi0KICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImRlcXVlKCVSLCBtYXhsZW49JXpkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzbGlzdCwgKChkZXF1ZW9iamVjdCAqKWRlcXVlKS0+bWF4bGVuKTsKICAgICBlbHNlCiAgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJkZXF1ZSglUikiLCBhc2xpc3QpOwotICAgIFB5X0RFQ1JFRihhc2xpc3QpOwogICAgIFB5X1JlcHJMZWF2ZShkZXF1ZSk7CisgICAgUHlfREVDUkVGKGFzbGlzdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTA0NCw3ICsxNDI0LDggQEAKICAgICAgICAgfQogICAgIH0KICAgICBkZXF1ZS0+bWF4bGVuID0gbWF4bGVuOwotICAgIGRlcXVlX2NsZWFyKGRlcXVlKTsKKyAgICBpZiAoUHlfU0laRShkZXF1ZSkgPiAwKQorICAgICAgICBkZXF1ZV9jbGVhcihkZXF1ZSk7CiAgICAgaWYgKGl0ZXJhYmxlICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKnJ2ID0gZGVxdWVfZXh0ZW5kKGRlcXVlLCBpdGVyYWJsZSk7CiAgICAgICAgIGlmIChydiA9PSBOVUxMKQpAQCAtMTA2MCw3ICsxNDQxLDcgQEAKICAgICBQeV9zc2l6ZV90IHJlczsKICAgICBQeV9zc2l6ZV90IGJsb2NrczsKIAotICAgIHJlcyA9IHNpemVvZihkZXF1ZW9iamVjdCk7CisgICAgcmVzID0gX1B5T2JqZWN0X1NJWkUoUHlfVFlQRShkZXF1ZSkpOwogICAgIGJsb2NrcyA9IChkZXF1ZS0+bGVmdGluZGV4ICsgUHlfU0laRShkZXF1ZSkgKyBCTE9DS0xFTiAtIDEpIC8gQkxPQ0tMRU47CiAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0aW5kZXggKyBQeV9TSVpFKGRlcXVlKSAtIDEgPT0KICAgICAgICAgICAgKGJsb2NrcyAtIDEpICogQkxPQ0tMRU4gKyBkZXF1ZS0+cmlnaHRpbmRleCk7CkBAIC0xMDcxLDYgKzE0NTIsMTIgQEAKIFB5RG9jX1NUUlZBUihzaXplb2ZfZG9jLAogIkQuX19zaXplb2ZfXygpIC0tIHNpemUgb2YgRCBpbiBtZW1vcnksIGluIGJ5dGVzIik7CiAKK3N0YXRpYyBpbnQKK2RlcXVlX2Jvb2woZGVxdWVvYmplY3QgKmRlcXVlKQoreworICAgIHJldHVybiBQeV9TSVpFKGRlcXVlKSAhPSAwOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfZ2V0X21heGxlbihkZXF1ZW9iamVjdCAqZGVxdWUpCiB7CkBAIC0xMDc5LDYgKzE0NjYsOSBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoZGVxdWUtPm1heGxlbik7CiB9CiAKKworLyogZGVxdWUgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCiBzdGF0aWMgUHlHZXRTZXREZWYgZGVxdWVfZ2V0c2V0W10gPSB7CiAgICAgeyJtYXhsZW4iLCAoZ2V0dGVyKWRlcXVlX2dldF9tYXhsZW4sIChzZXR0ZXIpTlVMTCwKICAgICAgIm1heGltdW0gc2l6ZSBvZiBhIGRlcXVlIG9yIE5vbmUgaWYgdW5ib3VuZGVkIn0sCkBAIC0xMDg3LDE5ICsxNDc3LDMwIEBACiAKIHN0YXRpYyBQeVNlcXVlbmNlTWV0aG9kcyBkZXF1ZV9hc19zZXF1ZW5jZSA9IHsKICAgICAobGVuZnVuYylkZXF1ZV9sZW4sICAgICAgICAgICAgICAgICAvKiBzcV9sZW5ndGggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9jb25jYXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9yZXBlYXQgKi8KKyAgICAoYmluYXJ5ZnVuYylkZXF1ZV9jb25jYXQsICAgICAgICAgICAvKiBzcV9jb25jYXQgKi8KKyAgICAoc3NpemVhcmdmdW5jKWRlcXVlX3JlcGVhdCwgICAgICAgICAvKiBzcV9yZXBlYXQgKi8KICAgICAoc3NpemVhcmdmdW5jKWRlcXVlX2l0ZW0sICAgICAgICAgICAvKiBzcV9pdGVtICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3Ffc2xpY2UgKi8KLSAgICAoc3NpemVvYmphcmdwcm9jKWRlcXVlX2Fzc19pdGVtLCAgICAgICAgICAgIC8qIHNxX2Fzc19pdGVtICovCisgICAgKHNzaXplb2JqYXJncHJvYylkZXF1ZV9hc3NfaXRlbSwgICAgLyogc3FfYXNzX2l0ZW0gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9hc3Nfc2xpY2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9jb250YWlucyAqLwotICAgIChiaW5hcnlmdW5jKWRlcXVlX2lucGxhY2VfY29uY2F0LCAgICAgICAgICAgLyogc3FfaW5wbGFjZV9jb25jYXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9pbnBsYWNlX3JlcGVhdCAqLwotCisgICAgKG9iam9ianByb2MpZGVxdWVfY29udGFpbnMsICAgICAgICAgLyogc3FfY29udGFpbnMgKi8KKyAgICAoYmluYXJ5ZnVuYylkZXF1ZV9pbnBsYWNlX2NvbmNhdCwgICAvKiBzcV9pbnBsYWNlX2NvbmNhdCAqLworICAgIChzc2l6ZWFyZ2Z1bmMpZGVxdWVfaW5wbGFjZV9yZXBlYXQsIC8qIHNxX2lucGxhY2VfcmVwZWF0ICovCiB9OwogCi0vKiBkZXF1ZSBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgUHlOdW1iZXJNZXRob2RzIGRlcXVlX2FzX251bWJlciA9IHsKKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9hZGQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9zdWJ0cmFjdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX211bHRpcGx5ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcmVtYWluZGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfZGl2bW9kICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcG93ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9uZWdhdGl2ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3Bvc2l0aXZlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfYWJzb2x1dGUgKi8KKyAgICAoaW5xdWlyeSlkZXF1ZV9ib29sLCAgICAgICAgICAgICAgICAvKiBuYl9ib29sICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW52ZXJ0ICovCisgfTsKIAogc3RhdGljIFB5T2JqZWN0ICpkZXF1ZV9pdGVyKGRlcXVlb2JqZWN0ICpkZXF1ZSk7CiBzdGF0aWMgUHlPYmplY3QgKmRlcXVlX3Jldml0ZXIoZGVxdWVvYmplY3QgKmRlcXVlKTsKQEAgLTExMTUsMTcgKzE1MTYsMjMgQEAKICAgICAgICAgTUVUSF9OT0FSR1MsICAgICAgICAgICAgIGNsZWFyX2RvY30sCiAgICAgeyJfX2NvcHlfXyIsICAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilkZXF1ZV9jb3B5LAogICAgICAgICBNRVRIX05PQVJHUywgICAgICAgICAgICAgY29weV9kb2N9LAorICAgIHsiY29weSIsICAgICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGVxdWVfY29weSwKKyAgICAgICAgTUVUSF9OT0FSR1MsICAgICAgICAgICAgIGNvcHlfZG9jfSwKICAgICB7ImNvdW50IiwgICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX2NvdW50LAotICAgICAgICBNRVRIX08sICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50X2RvY30sCisgICAgICAgIE1FVEhfTywgICAgICAgICAgICAgICAgICBjb3VudF9kb2N9LAogICAgIHsiZXh0ZW5kIiwgICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGVxdWVfZXh0ZW5kLAogICAgICAgICBNRVRIX08sICAgICAgICAgICAgICAgICAgZXh0ZW5kX2RvY30sCiAgICAgeyJleHRlbmRsZWZ0IiwgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilkZXF1ZV9leHRlbmRsZWZ0LAogICAgICAgICBNRVRIX08sICAgICAgICAgICAgICAgICAgZXh0ZW5kbGVmdF9kb2N9LAorICAgIHsiaW5kZXgiLCAgICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGVxdWVfaW5kZXgsCisgICAgICAgIE1FVEhfVkFSQVJHUywgICAgICAgICAgICBpbmRleF9kb2N9LAorICAgIHsiaW5zZXJ0IiwgICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGVxdWVfaW5zZXJ0LAorICAgICAgICBNRVRIX1ZBUkFSR1MsICAgICAgICAgICAgaW5zZXJ0X2RvY30sCiAgICAgeyJwb3AiLCAgICAgICAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilkZXF1ZV9wb3AsCiAgICAgICAgIE1FVEhfTk9BUkdTLCAgICAgICAgICAgICBwb3BfZG9jfSwKICAgICB7InBvcGxlZnQiLCAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX3BvcGxlZnQsCiAgICAgICAgIE1FVEhfTk9BUkdTLCAgICAgICAgICAgICBwb3BsZWZ0X2RvY30sCi0gICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pZGVxdWVfcmVkdWNlLAorICAgIHsiX19yZWR1Y2VfXyIsICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGVxdWVfcmVkdWNlLAogICAgICAgICBNRVRIX05PQVJHUywgICAgICAgICAgICAgcmVkdWNlX2RvY30sCiAgICAgeyJyZW1vdmUiLCAgICAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilkZXF1ZV9yZW1vdmUsCiAgICAgICAgIE1FVEhfTywgICAgICAgICAgICAgICAgICByZW1vdmVfZG9jfSwKQEAgLTExNDMsNyArMTU1MCw3IEBACiBQeURvY19TVFJWQVIoZGVxdWVfZG9jLAogImRlcXVlKFtpdGVyYWJsZVssIG1heGxlbl1dKSAtLT4gZGVxdWUgb2JqZWN0XG5cCiBcblwKLUJ1aWxkIGFuIG9yZGVyZWQgY29sbGVjdGlvbiB3aXRoIG9wdGltaXplZCBhY2Nlc3MgZnJvbSBpdHMgZW5kcG9pbnRzLiIpOworQSBsaXN0LWxpa2Ugc2VxdWVuY2Ugb3B0aW1pemVkIGZvciBkYXRhIGFjY2Vzc2VzIG5lYXIgaXRzIGVuZHBvaW50cy4iKTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBkZXF1ZV90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQpAQCAtMTE1Nyw3ICsxNTY0LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KICAgICBkZXF1ZV9yZXByLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgJmRlcXVlX2FzX251bWJlciwgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgJmRlcXVlX2FzX3NlcXVlbmNlLCAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCiAgICAgUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkLCAgICAgICAgLyogdHBfaGFzaCAqLwpAQCAtMTE5MywxMCArMTYwMCwxMCBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5X3NzaXplX3QgaW5kZXg7CiAgICAgYmxvY2sgKmI7CisgICAgUHlfc3NpemVfdCBpbmRleDsKICAgICBkZXF1ZW9iamVjdCAqZGVxdWU7Ci0gICAgbG9uZyBzdGF0ZTsgICAgICAgICAvKiBzdGF0ZSB3aGVuIHRoZSBpdGVyYXRvciBpcyBjcmVhdGVkICovCisgICAgc2l6ZV90IHN0YXRlOyAgICAgICAgICAvKiBzdGF0ZSB3aGVuIHRoZSBpdGVyYXRvciBpcyBjcmVhdGVkICovCiAgICAgUHlfc3NpemVfdCBjb3VudGVyOyAgICAvKiBudW1iZXIgb2YgaXRlbXMgcmVtYWluaW5nIGZvciBpdGVyYXRpb24gKi8KIH0gZGVxdWVpdGVyb2JqZWN0OwogCkBAIC0xMzEzLDcgKzE3MjAsNyBAQAogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGRlcXVlaXRlcl90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJfY29sbGVjdGlvbnMuX2RlcXVlX2l0ZXJhdG9yIiwgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICAiX2NvbGxlY3Rpb25zLl9kZXF1ZV9pdGVyYXRvciIsICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KICAgICBzaXplb2YoZGVxdWVpdGVyb2JqZWN0KSwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCkBAIC0xMzMyLDcgKzE3MzksNyBAQAogICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsLyogdHBfZmxhZ3MgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsICAgIC8qIHRwX2ZsYWdzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAodHJhdmVyc2Vwcm9jKWRlcXVlaXRlcl90cmF2ZXJzZSwgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwpAQCAtMTQzNSw3ICsxODQyLDcgQEAKIAogc3RhdGljIFB5VHlwZU9iamVjdCBkZXF1ZXJldml0ZXJfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiX2NvbGxlY3Rpb25zLl9kZXF1ZV9yZXZlcnNlX2l0ZXJhdG9yIiwgICAgICAvKiB0cF9uYW1lICovCisgICAgIl9jb2xsZWN0aW9ucy5fZGVxdWVfcmV2ZXJzZV9pdGVyYXRvciIsICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKGRlcXVlaXRlcm9iamVjdCksICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwpAQCAtMTQ1NCw3ICsxODYxLDcgQEAKICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLC8qIHRwX2ZsYWdzICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgKHRyYXZlcnNlcHJvYylkZXF1ZWl0ZXJfdHJhdmVyc2UsICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTE3OTgsMTkgKzIyMDUsNDAgQEAKICAgICBpZiAobWFwcGluZ19nZXQgIT0gTlVMTCAmJiBtYXBwaW5nX2dldCA9PSBkaWN0X2dldCAmJgogICAgICAgICBtYXBwaW5nX3NldGl0ZW0gIT0gTlVMTCAmJiBtYXBwaW5nX3NldGl0ZW0gPT0gZGljdF9zZXRpdGVtKSB7CiAgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICAvKiBGYXN0IHBhdGggYWR2YW50YWdlczoKKyAgICAgICAgICAgICAgICAgICAxLiBFbGltaW5hdGUgZG91YmxlIGhhc2hpbmcKKyAgICAgICAgICAgICAgICAgICAgICAoYnkgcmUtdXNpbmcgdGhlIHNhbWUgaGFzaCBmb3IgYm90aCB0aGUgZ2V0IGFuZCBzZXQpCisgICAgICAgICAgICAgICAgICAgMi4gQXZvaWQgYXJndW1lbnQgb3ZlcmhlYWQgb2YgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncworICAgICAgICAgICAgICAgICAgICAgIChhcmd1bWVudCB0dXBsZSBjcmVhdGlvbiBhbmQgcGFyc2luZykKKyAgICAgICAgICAgICAgICAgICAzLiBBdm9pZCBpbmRpcmVjdGlvbiB0aHJvdWdoIGEgYm91bmQgbWV0aG9kIG9iamVjdAorICAgICAgICAgICAgICAgICAgICAgIChjcmVhdGVzIGFub3RoZXIgYXJndW1lbnQgdHVwbGUpCisgICAgICAgICAgICAgICAgICAgNC4gQXZvaWQgaW5pdGlhbCBpbmNyZW1lbnQgZnJvbSB6ZXJvCisgICAgICAgICAgICAgICAgICAgICAgKHJldXNlIGFuIGV4aXN0aW5nIG9uZS1vYmplY3QgaW5zdGVhZCkKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKKwogICAgICAgICAgICAga2V5ID0gUHlJdGVyX05leHQoaXQpOwogICAgICAgICAgICAgaWYgKGtleSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgb2xkdmFsID0gUHlEaWN0X0dldEl0ZW0obWFwcGluZywga2V5KTsKKworICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CisgICAgICAgICAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKKyAgICAgICAgICAgICAgICBpZiAoaGFzaCA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBvbGR2YWwgPSBfUHlEaWN0X0dldEl0ZW1fS25vd25IYXNoKG1hcHBpbmcsIGtleSwgaGFzaCk7CiAgICAgICAgICAgICBpZiAob2xkdmFsID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0obWFwcGluZywga2V5LCBvbmUpID09IC0xKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtX0tub3duSGFzaChtYXBwaW5nLCBrZXksIG9uZSwgaGFzaCkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbmV3dmFsID0gUHlOdW1iZXJfQWRkKG9sZHZhbCwgb25lKTsKICAgICAgICAgICAgICAgICBpZiAobmV3dmFsID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShtYXBwaW5nLCBrZXksIG5ld3ZhbCkgPT0gLTEpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbV9Lbm93bkhhc2gobWFwcGluZywga2V5LCBuZXd2YWwsIGhhc2gpID09IC0xKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgICAgICAgUHlfQ0xFQVIobmV3dmFsKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwpAQCAtMTg5OSw2ICsyMzI3LDkgQEAKICAgICBQeV9JTkNSRUYoJmRlZmRpY3RfdHlwZSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJkZWZhdWx0ZGljdCIsIChQeU9iamVjdCAqKSZkZWZkaWN0X3R5cGUpOwogCisgICAgUHlfSU5DUkVGKCZQeU9EaWN0X1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiT3JkZXJlZERpY3QiLCAoUHlPYmplY3QgKikmUHlPRGljdF9UeXBlKTsKKwogICAgIGlmIChQeVR5cGVfUmVhZHkoJmRlcXVlaXRlcl90eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRigmZGVxdWVpdGVyX3R5cGUpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3J5cHRtb2R1bGUuYyBiL01vZHVsZXMvX2NyeXB0bW9kdWxlLmMKaW5kZXggZGE0NGVmMy4uZDQyMmNmZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3J5cHRtb2R1bGUuYworKysgYi9Nb2R1bGVzL19jcnlwdG1vZHVsZS5jCkBAIC0xMiwxMiArMTIsMTMgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWM2MjUyY2Y0ZjJmMmFlODFdKi8KIAorI2luY2x1ZGUgImNsaW5pYy9fY3J5cHRtb2R1bGUuYy5oIgogCiAvKltjbGluaWMgaW5wdXRdCiBjcnlwdC5jcnlwdAogCi0gICAgd29yZDogJ3MnCi0gICAgc2FsdDogJ3MnCisgICAgd29yZDogc3RyCisgICAgc2FsdDogc3RyCiAgICAgLwogCiBIYXNoIGEgKndvcmQqIHdpdGggdGhlIGdpdmVuICpzYWx0KiBhbmQgcmV0dXJuIHRoZSBoYXNoZWQgcGFzc3dvcmQuCkBAIC0yOSw0MyArMzAsOSBAQAogCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihjcnlwdF9jcnlwdF9fZG9jX18sCi0iY3J5cHQoJG1vZHVsZSwgd29yZCwgc2FsdCwgLylcbiIKLSItLVxuIgotIlxuIgotIkhhc2ggYSAqd29yZCogd2l0aCB0aGUgZ2l2ZW4gKnNhbHQqIGFuZCByZXR1cm4gdGhlIGhhc2hlZCBwYXNzd29yZC5cbiIKLSJcbiIKLSIqd29yZCogd2lsbCB1c3VhbGx5IGJlIGEgdXNlclwncyBwYXNzd29yZC4gICpzYWx0KiAoZWl0aGVyIGEgcmFuZG9tIDIgb3IgMTZcbiIKLSJjaGFyYWN0ZXIgc3RyaW5nLCBwb3NzaWJseSBwcmVmaXhlZCB3aXRoICRkaWdpdCQgdG8gaW5kaWNhdGUgdGhlIG1ldGhvZClcbiIKLSJ3aWxsIGJlIHVzZWQgdG8gcGVydHVyYiB0aGUgZW5jcnlwdGlvbiBhbGdvcml0aG0gYW5kIHByb2R1Y2UgZGlzdGluY3RcbiIKLSJyZXN1bHRzIGZvciBhIGdpdmVuICp3b3JkKi4iKTsKLQotI2RlZmluZSBDUllQVF9DUllQVF9NRVRIT0RERUYgICAgXAotICAgIHsiY3J5cHQiLCAoUHlDRnVuY3Rpb24pY3J5cHRfY3J5cHQsIE1FVEhfVkFSQVJHUywgY3J5cHRfY3J5cHRfX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLWNyeXB0X2NyeXB0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqd29yZCwgY29uc3QgY2hhciAqc2FsdCk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1jcnlwdF9jcnlwdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBjb25zdCBjaGFyICp3b3JkOwotICAgIGNvbnN0IGNoYXIgKnNhbHQ7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInNzOmNyeXB0IiwKLSAgICAgICAgJndvcmQsICZzYWx0KSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IGNyeXB0X2NyeXB0X2ltcGwobW9kdWxlLCB3b3JkLCBzYWx0KTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogY3J5cHRfY3J5cHRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICp3b3JkLCBjb25zdCBjaGFyICpzYWx0KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNlYWFjZGY5OTRhNmZmMjMgaW5wdXQ9NGQ5M2I2ZDBmNDFmYmY1OF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk5NWFkMWU4NTRkODMwNjkgaW5wdXQ9MGU4ZWRlYzljMzY0MzUyYl0qLwogewogICAgIC8qIE9uIHNvbWUgcGxhdGZvcm1zIChBdGhlT1MpIGNyeXB0IHJldHVybnMgTlVMTCBmb3IgYW4gaW52YWxpZAogICAgICAgIHNhbHQuIFJldHVybiBOb25lIGluIHRoYXQgY2FzZS4gWFhYIE1heWJlIHJhaXNlIGFuIGV4Y2VwdGlvbj8gICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jc3YuYyBiL01vZHVsZXMvX2Nzdi5jCmluZGV4IDFhMzYzZmEuLmZlODUwNjkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2Nzdi5jCisrKyBiL01vZHVsZXMvX2Nzdi5jCkBAIC0yNDgsNyArMjQ4LDcgQEAKICAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HZXRMZW5ndGgoc3JjKTsKICAgICAgICAgICAgIGlmIChsZW4gPiAxKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIlwiJXNcIiBtdXN0IGJlIGFuIDEtY2hhcmFjdGVyIHN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgICJcIiVzXCIgbXVzdCBiZSBhIDEtY2hhcmFjdGVyIHN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KQEAgLTI3Niw5ICsyNzYsOCBAQAogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3JjKSA9PSAtMSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKCp0YXJnZXQpOwogICAgICAgICAgICAgUHlfSU5DUkVGKHNyYyk7Ci0gICAgICAgICAgICAqdGFyZ2V0ID0gc3JjOworICAgICAgICAgICAgUHlfU0VUUkVGKCp0YXJnZXQsIHNyYyk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC0yOTAsNyArMjg5LDcgQEAKICAgICBTdHlsZURlc2MgKnFzOwogCiAgICAgZm9yIChxcyA9IHF1b3RlX3N0eWxlczsgcXMtPm5hbWU7IHFzKyspIHsKLSAgICAgICAgaWYgKHFzLT5zdHlsZSA9PSBxdW90aW5nKQorICAgICAgICBpZiAoKGludClxcy0+c3R5bGUgPT0gcXVvdGluZykKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiYmFkIFwicXVvdGluZ1wiIHZhbHVlIik7CkBAIC00MzIsNyArNDMxLDcgQEAKICAgICAgICAgZ290byBlcnI7CiAgICAgaWYgKHNlbGYtPmRlbGltaXRlciA9PSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiXCJkZWxpbWl0ZXJcIiBtdXN0IGJlIGFuIDEtY2hhcmFjdGVyIHN0cmluZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgIlwiZGVsaW1pdGVyXCIgbXVzdCBiZSBhIDEtY2hhcmFjdGVyIHN0cmluZyIpOwogICAgICAgICBnb3RvIGVycjsKICAgICB9CiAgICAgaWYgKHF1b3RlY2hhciA9PSBQeV9Ob25lICYmIHF1b3RpbmcgPT0gTlVMTCkKQEAgLTc4NCw4ICs3ODMsNyBAQAogc3RhdGljIGludAogcGFyc2VfcmVzZXQoUmVhZGVyT2JqICpzZWxmKQogewotICAgIFB5X1hERUNSRUYoc2VsZi0+ZmllbGRzKTsKLSAgICBzZWxmLT5maWVsZHMgPSBQeUxpc3RfTmV3KDApOworICAgIFB5X1NFVFJFRihzZWxmLT5maWVsZHMsIFB5TGlzdF9OZXcoMCkpOwogICAgIGlmIChzZWxmLT5maWVsZHMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIHNlbGYtPmZpZWxkX2xlbiA9IDA7CkBAIC0xMDA5LDcgKzEwMDcsNyBAQAogICovCiBzdGF0aWMgUHlfc3NpemVfdAogam9pbl9hcHBlbmRfZGF0YShXcml0ZXJPYmogKnNlbGYsIHVuc2lnbmVkIGludCBmaWVsZF9raW5kLCB2b2lkICpmaWVsZF9kYXRhLAotICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGZpZWxkX2xlbiwgaW50IHF1b3RlX2VtcHR5LCBpbnQgKnF1b3RlZCwKKyAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBmaWVsZF9sZW4sIGludCAqcXVvdGVkLAogICAgICAgICAgICAgICAgICBpbnQgY29weV9waGFzZSkKIHsKICAgICBEaWFsZWN0T2JqICpkaWFsZWN0ID0gc2VsZi0+ZGlhbGVjdDsKQEAgLTEwNzEsMTggKzEwNjksNiBAQAogICAgICAgICBBRERDSChjKTsKICAgICB9CiAKLSAgICAvKiBJZiBmaWVsZCBpcyBlbXB0eSBjaGVjayBpZiBpdCBuZWVkcyB0byBiZSBxdW90ZWQuCi0gICAgICovCi0gICAgaWYgKGkgPT0gMCAmJiBxdW90ZV9lbXB0eSkgewotICAgICAgICBpZiAoZGlhbGVjdC0+cXVvdGluZyA9PSBRVU9URV9OT05FKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLAotICAgICAgICAgICAgICAgICJzaW5nbGUgZW1wdHkgZmllbGQgcmVjb3JkIG11c3QgYmUgcXVvdGVkIik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgKnF1b3RlZCA9IDE7Ci0gICAgfQotCiAgICAgaWYgKCpxdW90ZWQpIHsKICAgICAgICAgaWYgKGNvcHlfcGhhc2UpCiAgICAgICAgICAgICBBRERDSChkaWFsZWN0LT5xdW90ZWNoYXIpOwpAQCAtMTEyNiw3ICsxMTEyLDcgQEAKIH0KIAogc3RhdGljIGludAotam9pbl9hcHBlbmQoV3JpdGVyT2JqICpzZWxmLCBQeU9iamVjdCAqZmllbGQsIGludCAqcXVvdGVkLCBpbnQgcXVvdGVfZW1wdHkpCitqb2luX2FwcGVuZChXcml0ZXJPYmogKnNlbGYsIFB5T2JqZWN0ICpmaWVsZCwgaW50IHF1b3RlZCkKIHsKICAgICB1bnNpZ25lZCBpbnQgZmllbGRfa2luZCA9IC0xOwogICAgIHZvaWQgKmZpZWxkX2RhdGEgPSBOVUxMOwpAQCAtMTE0MSw3ICsxMTI3LDcgQEAKICAgICAgICAgZmllbGRfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoZmllbGQpOwogICAgIH0KICAgICByZWNfbGVuID0gam9pbl9hcHBlbmRfZGF0YShzZWxmLCBmaWVsZF9raW5kLCBmaWVsZF9kYXRhLCBmaWVsZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVfZW1wdHksIHF1b3RlZCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3RlZCwgMCk7CiAgICAgaWYgKHJlY19sZW4gPCAwKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTE1MCw3ICsxMTM2LDcgQEAKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBzZWxmLT5yZWNfbGVuID0gam9pbl9hcHBlbmRfZGF0YShzZWxmLCBmaWVsZF9raW5kLCBmaWVsZF9kYXRhLCBmaWVsZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVfZW1wdHksIHF1b3RlZCwgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3RlZCwgMSk7CiAgICAgc2VsZi0+bnVtX2ZpZWxkcysrOwogCiAgICAgcmV0dXJuIDE7CkBAIC0xMTgxLDM3ICsxMTY3LDMwIEBACiB9CiAKIFB5RG9jX1NUUlZBUihjc3Zfd3JpdGVyb3dfZG9jLAotIndyaXRlcm93KHNlcXVlbmNlKVxuIgorIndyaXRlcm93KGl0ZXJhYmxlKVxuIgogIlxuIgotIkNvbnN0cnVjdCBhbmQgd3JpdGUgYSBDU1YgcmVjb3JkIGZyb20gYSBzZXF1ZW5jZSBvZiBmaWVsZHMuICBOb24tc3RyaW5nXG4iCisiQ29uc3RydWN0IGFuZCB3cml0ZSBhIENTViByZWNvcmQgZnJvbSBhbiBpdGVyYWJsZSBvZiBmaWVsZHMuICBOb24tc3RyaW5nXG4iCiAiZWxlbWVudHMgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gc3RyaW5nLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogY3N2X3dyaXRlcm93KFdyaXRlck9iaiAqc2VsZiwgUHlPYmplY3QgKnNlcSkKIHsKICAgICBEaWFsZWN0T2JqICpkaWFsZWN0ID0gc2VsZi0+ZGlhbGVjdDsKLSAgICBQeV9zc2l6ZV90IGxlbiwgaTsKLSAgICBQeU9iamVjdCAqbGluZSwgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqaXRlciwgKmZpZWxkLCAqbGluZSwgKnJlc3VsdDsKIAotICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhzZXEpKQotICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwgInNlcXVlbmNlIGV4cGVjdGVkIik7Ci0KLSAgICBsZW4gPSBQeVNlcXVlbmNlX0xlbmd0aChzZXEpOwotICAgIGlmIChsZW4gPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpdGVyID0gUHlPYmplY3RfR2V0SXRlcihzZXEpOworICAgIGlmIChpdGVyID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVyYWJsZSBleHBlY3RlZCwgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxLT5vYl90eXBlLT50cF9uYW1lKTsKIAogICAgIC8qIEpvaW4gYWxsIGZpZWxkcyBpbiBpbnRlcm5hbCBidWZmZXIuCiAgICAgICovCiAgICAgam9pbl9yZXNldChzZWxmKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgUHlPYmplY3QgKmZpZWxkOworICAgIHdoaWxlICgoZmllbGQgPSBQeUl0ZXJfTmV4dChpdGVyKSkpIHsKICAgICAgICAgaW50IGFwcGVuZF9vazsKICAgICAgICAgaW50IHF1b3RlZDsKIAotICAgICAgICBmaWVsZCA9IFB5U2VxdWVuY2VfR2V0SXRlbShzZXEsIGkpOwotICAgICAgICBpZiAoZmllbGQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgICAgIHN3aXRjaCAoZGlhbGVjdC0+cXVvdGluZykgewogICAgICAgICBjYXNlIFFVT1RFX05PTk5VTUVSSUM6CiAgICAgICAgICAgICBxdW90ZWQgPSAhUHlOdW1iZXJfQ2hlY2soZmllbGQpOwpAQCAtMTIyNSwxMSArMTIwNCwxMSBAQAogICAgICAgICB9CiAKICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhmaWVsZCkpIHsKLSAgICAgICAgICAgIGFwcGVuZF9vayA9IGpvaW5fYXBwZW5kKHNlbGYsIGZpZWxkLCAmcXVvdGVkLCBsZW4gPT0gMSk7CisgICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBmaWVsZCwgcXVvdGVkKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihmaWVsZCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoZmllbGQgPT0gUHlfTm9uZSkgewotICAgICAgICAgICAgYXBwZW5kX29rID0gam9pbl9hcHBlbmQoc2VsZiwgTlVMTCwgJnF1b3RlZCwgbGVuID09IDEpOworICAgICAgICAgICAgYXBwZW5kX29rID0gam9pbl9hcHBlbmQoc2VsZiwgTlVMTCwgcXVvdGVkKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihmaWVsZCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC0xMjM3LDE5ICsxMjE2LDM3IEBACiAKICAgICAgICAgICAgIHN0ciA9IFB5T2JqZWN0X1N0cihmaWVsZCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZmllbGQpOwotICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgYXBwZW5kX29rID0gam9pbl9hcHBlbmQoc2VsZiwgc3RyLCAmcXVvdGVkLCBsZW4gPT0gMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBzdHIsIHF1b3RlZCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICAgICAgfQotICAgICAgICBpZiAoIWFwcGVuZF9vaykKKyAgICAgICAgaWYgKCFhcHBlbmRfb2spIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIFB5X0RFQ1JFRihpdGVyKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoc2VsZi0+bnVtX2ZpZWxkcyA+IDAgJiYgc2VsZi0+cmVjX3NpemUgPT0gMCkgeworICAgICAgICBpZiAoZGlhbGVjdC0+cXVvdGluZyA9PSBRVU9URV9OT05FKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLAorICAgICAgICAgICAgICAgICJzaW5nbGUgZW1wdHkgZmllbGQgcmVjb3JkIG11c3QgYmUgcXVvdGVkIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzZWxmLT5udW1fZmllbGRzLS07CisgICAgICAgIGlmICgham9pbl9hcHBlbmQoc2VsZiwgTlVMTCwgMSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICAvKiBBZGQgbGluZSB0ZXJtaW5hdG9yLgogICAgICAqLwogICAgIGlmICgham9pbl9hcHBlbmRfbGluZXRlcm1pbmF0b3Ioc2VsZikpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGxpbmUgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopIHNlbGYtPnJlYywgc2VsZi0+cmVjX2xlbik7CkBAIC0xMjYxLDkgKzEyNTgsOSBAQAogfQogCiBQeURvY19TVFJWQVIoY3N2X3dyaXRlcm93c19kb2MsCi0id3JpdGVyb3dzKHNlcXVlbmNlIG9mIHNlcXVlbmNlcylcbiIKKyJ3cml0ZXJvd3MoaXRlcmFibGUgb2YgaXRlcmFibGVzKVxuIgogIlxuIgotIkNvbnN0cnVjdCBhbmQgd3JpdGUgYSBzZXJpZXMgb2Ygc2VxdWVuY2VzIHRvIGEgY3N2IGZpbGUuICBOb24tc3RyaW5nXG4iCisiQ29uc3RydWN0IGFuZCB3cml0ZSBhIHNlcmllcyBvZiBpdGVyYWJsZXMgdG8gYSBjc3YgZmlsZS4gIE5vbi1zdHJpbmdcbiIKICJlbGVtZW50cyB3aWxsIGJlIGNvbnZlcnRlZCB0byBzdHJpbmcuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jIGIvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYwppbmRleCAyYjI3ZWQzLi41Y2YyYjhiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMKQEAgLTMwMSw3ICszMDEsNyBAQAogICAgIGNoYXIgKm5ld19wcmVmaXg7CiAgICAgY2hhciAqcmVzdWx0OwogICAgIGNoYXIgYnVmWzMyXTsKLSAgICBpbnQgcHJlZml4X2xlbjsKKyAgICBQeV9zc2l6ZV90IHByZWZpeF9sZW47CiAgICAgaW50IGs7CiAKICAgICBwcmVmaXhfbGVuID0gMzIgKiBuZGltICsgMzsKQEAgLTM5MSw4ICszOTEsNyBAQAogICAgICAgICBQeV9ERUNSRUYoKFB5T2JqZWN0ICopZGljdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9ERUNSRUYocmVzdWx0LT50cF9kaWN0KTsKLSAgICByZXN1bHQtPnRwX2RpY3QgPSAoUHlPYmplY3QgKilkaWN0OworICAgIFB5X1NFVFJFRihyZXN1bHQtPnRwX2RpY3QsIChQeU9iamVjdCAqKWRpY3QpOwogICAgIGRpY3QtPmZvcm1hdCA9IF9jdHlwZXNfYWxsb2NfZm9ybWF0X3N0cmluZyhOVUxMLCAiQiIpOwogICAgIGlmIChkaWN0LT5mb3JtYXQgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKQEAgLTg3MSw4ICs4NzAsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIFB5X0lOQ1JFRihwcm90byk7Ci0gICAgUHlfWERFQ1JFRihzdGdkaWN0LT5wcm90byk7Ci0gICAgc3RnZGljdC0+cHJvdG8gPSBwcm90bzsKKyAgICBQeV9TRVRSRUYoc3RnZGljdC0+cHJvdG8sIHByb3RvKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtOTYyLDggKzk2MCw3IEBACiAgICAgICAgIFB5X0RFQ1JFRigoUHlPYmplY3QgKilzdGdkaWN0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X0RFQ1JFRihyZXN1bHQtPnRwX2RpY3QpOwotICAgIHJlc3VsdC0+dHBfZGljdCA9IChQeU9iamVjdCAqKXN0Z2RpY3Q7CisgICAgUHlfU0VUUkVGKHJlc3VsdC0+dHBfZGljdCwgKFB5T2JqZWN0ICopc3RnZGljdCk7CiAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVzdWx0OwogfQpAQCAtMTQwNiw4ICsxNDAzLDcgQEAKICAgICAvKiByZXBsYWNlIHRoZSBjbGFzcyBkaWN0IGJ5IG91ciB1cGRhdGVkIHNwYW0gZGljdCAqLwogICAgIGlmICgtMSA9PSBQeURpY3RfVXBkYXRlKChQeU9iamVjdCAqKXN0Z2RpY3QsIHJlc3VsdC0+dHBfZGljdCkpCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgUHlfREVDUkVGKHJlc3VsdC0+dHBfZGljdCk7Ci0gICAgcmVzdWx0LT50cF9kaWN0ID0gKFB5T2JqZWN0ICopc3RnZGljdDsgIC8qIHN0ZWFsIHRoZSByZWZlcmVuY2UgKi8KKyAgICBQeV9TRVRSRUYocmVzdWx0LT50cF9kaWN0LCAoUHlPYmplY3QgKilzdGdkaWN0KTsgIC8qIHN0ZWFsIHRoZSByZWZlcmVuY2UgKi8KICAgICBzdGdkaWN0ID0gTlVMTDsKIAogICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgY2hhcmFjdGVyIGFycmF5cy4KQEAgLTE4MjAsOCArMTgxNiw3IEBACiAgICAgICAgIFB5X0RFQ1JFRigoUHlPYmplY3QgKilzdGdkaWN0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X0RFQ1JFRihyZXN1bHQtPnRwX2RpY3QpOwotICAgIHJlc3VsdC0+dHBfZGljdCA9IChQeU9iamVjdCAqKXN0Z2RpY3Q7CisgICAgUHlfU0VUUkVGKHJlc3VsdC0+dHBfZGljdCwgKFB5T2JqZWN0ICopc3RnZGljdCk7CiAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVzdWx0OwogfQpAQCAtMTk0OSw4ICsxOTQ0LDcgQEAKICAgICAgICAgUHlfREVDUkVGKChQeU9iamVjdCAqKXN0Z2RpY3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfREVDUkVGKHJlc3VsdC0+dHBfZGljdCk7Ci0gICAgcmVzdWx0LT50cF9kaWN0ID0gKFB5T2JqZWN0ICopc3RnZGljdDsKKyAgICBQeV9TRVRSRUYocmVzdWx0LT50cF9kaWN0LCAoUHlPYmplY3QgKilzdGdkaWN0KTsKIAogICAgIC8qIEluc3RhbGwgZnJvbV9wYXJhbSBjbGFzcyBtZXRob2RzIGluIGN0eXBlcyBiYXNlIGNsYXNzZXMuCiAgICAgICAgT3ZlcnJpZGVzIHRoZSBQeUNTaW1wbGVUeXBlX2Zyb21fcGFyYW0gZ2VuZXJpYyBtZXRob2QuCkBAIC0yMzEzLDggKzIzMDcsNyBAQAogICAgICAgICBQeV9ERUNSRUYoKFB5T2JqZWN0ICopc3RnZGljdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9ERUNSRUYocmVzdWx0LT50cF9kaWN0KTsKLSAgICByZXN1bHQtPnRwX2RpY3QgPSAoUHlPYmplY3QgKilzdGdkaWN0OworICAgIFB5X1NFVFJFRihyZXN1bHQtPnRwX2RpY3QsIChQeU9iamVjdCAqKXN0Z2RpY3QpOwogCiAgICAgaWYgKC0xID09IG1ha2VfZnVuY3B0cnR5cGVfZGljdChzdGdkaWN0KSkgewogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKQEAgLTI0NTgsOCArMjQ1MSw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKG9iLT5iX29iamVjdHMgPT0gTlVMTCB8fCAhUHlEaWN0X0NoZWNrRXhhY3Qob2ItPmJfb2JqZWN0cykpIHsKLSAgICAgICAgUHlfWERFQ1JFRihvYi0+Yl9vYmplY3RzKTsKLSAgICAgICAgb2ItPmJfb2JqZWN0cyA9IGtlZXA7IC8qIHJlZmNvdW50IGNvbnN1bWVkICovCisgICAgICAgIFB5X1NFVFJFRihvYi0+Yl9vYmplY3RzLCBrZWVwKTsgLyogcmVmY291bnQgY29uc3VtZWQgKi8KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGtleSA9IHVuaXF1ZV9rZXkodGFyZ2V0LCBpbmRleCk7CkBAIC0yODM5LDggKzI4MzEsOSBAQAogICAgICAgICAgICAgICAgc3JjLT5iX3B0ciwKICAgICAgICAgICAgICAgIHNpemUpOwogCi0gICAgICAgIGlmIChQeUNQb2ludGVyVHlwZU9iamVjdF9DaGVjayh0eXBlKSkKLSAgICAgICAgICAgIC8qIFhYWCAqLzsKKyAgICAgICAgaWYgKFB5Q1BvaW50ZXJUeXBlT2JqZWN0X0NoZWNrKHR5cGUpKSB7CisgICAgICAgICAgICAvKiBYWFggKi8KKyAgICAgICAgfQogCiAgICAgICAgIHZhbHVlID0gR2V0S2VlcGVkT2JqZWN0cyhzcmMpOwogICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKQEAgLTI5NjEsOSArMjk1NCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIGVycmNoZWNrIGF0dHJpYnV0ZSBtdXN0IGJlIGNhbGxhYmxlIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5lcnJjaGVjayk7CiAgICAgUHlfWElOQ1JFRihvYik7Ci0gICAgc2VsZi0+ZXJyY2hlY2sgPSBvYjsKKyAgICBQeV9TRVRSRUYoc2VsZi0+ZXJyY2hlY2ssIG9iKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjk5MSwxMSArMjk4Myw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAicmVzdHlwZSBtdXN0IGJlIGEgdHlwZSwgYSBjYWxsYWJsZSwgb3IgTm9uZSIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIFB5X1hERUNSRUYoc2VsZi0+Y2hlY2tlcik7Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5yZXN0eXBlKTsKICAgICBQeV9JTkNSRUYob2IpOwotICAgIHNlbGYtPnJlc3R5cGUgPSBvYjsKLSAgICBzZWxmLT5jaGVja2VyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYiwgIl9jaGVja19yZXR2YWxfIik7CisgICAgUHlfU0VUUkVGKHNlbGYtPnJlc3R5cGUsIG9iKTsKKyAgICBQeV9TRVRSRUYoc2VsZi0+Y2hlY2tlciwgUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYiwgIl9jaGVja19yZXR2YWxfIikpOwogICAgIGlmIChzZWxmLT5jaGVja2VyID09IE5VTEwpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgcmV0dXJuIDA7CkBAIC0zMDMyLDExICszMDIyLDkgQEAKICAgICAgICAgY29udmVydGVycyA9IGNvbnZlcnRlcnNfZnJvbV9hcmd0eXBlcyhvYik7CiAgICAgICAgIGlmICghY29udmVydGVycykKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgUHlfWERFQ1JFRihzZWxmLT5jb252ZXJ0ZXJzKTsKLSAgICAgICAgc2VsZi0+Y29udmVydGVycyA9IGNvbnZlcnRlcnM7Ci0gICAgICAgIFB5X1hERUNSRUYoc2VsZi0+YXJndHlwZXMpOworICAgICAgICBQeV9TRVRSRUYoc2VsZi0+Y29udmVydGVycywgY29udmVydGVycyk7CiAgICAgICAgIFB5X0lOQ1JFRihvYik7Ci0gICAgICAgIHNlbGYtPmFyZ3R5cGVzID0gb2I7CisgICAgICAgIFB5X1NFVFJFRihzZWxmLT5hcmd0eXBlcywgb2IpOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KQEAgLTUxNjMsOSArNTE1MSw4IEBACiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIGJzZWxmID0gKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGY7Ci0gICAgUHlfREVDUkVGKGJzZWxmLT5hcmdzKTsKLSAgICBic2VsZi0+YXJncyA9IGFyZ3M7Ci0gICAgUHlfSU5DUkVGKGJzZWxmLT5hcmdzKTsKKyAgICBQeV9JTkNSRUYoYXJncyk7CisgICAgUHlfU0VUUkVGKGJzZWxmLT5hcmdzLCBhcmdzKTsKIAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLmMgYi9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYwppbmRleCA4ZGFlZmZjLi4wM2E5MTFmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYwpAQCAtMTYwMyw3ICsxNjAzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICJNZW1vcnkgY2Fubm90IGJlIHJlc2l6ZWQgYmVjYXVzZSB0aGlzIG9iamVjdCBkb2Vzbid0IG93biBpdCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHNpemUgPD0gc2l6ZW9mKG9iai0+Yl92YWx1ZSkpIHsKKyAgICBpZiAoKHNpemVfdClzaXplIDw9IHNpemVvZihvYmotPmJfdmFsdWUpKSB7CiAgICAgICAgIC8qIGludGVybmFsIGRlZmF1bHQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaCAqLwogICAgICAgICBvYmotPmJfc2l6ZSA9IHNpemU7CiAgICAgICAgIGdvdG8gZG9uZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYyBiL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYwppbmRleCBjODlkOTE5Li44Y2I2ZDY2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jCkBAIC0xMzU1LDE0ICsxMzU1LDYgQEAKIHsKICAgICAvKiBYWFggV2hhdCBhYm91dCBpbnZhbGlkIHBvaW50ZXJzID8/PyAqLwogICAgIGlmICgqKHZvaWQgKiopcHRyKSB7Ci0jaWYgZGVmaW5lZChNU19XSU4zMikgJiYgIWRlZmluZWQoX1dJTjMyX1dDRSkKLSAgICAgICAgaWYgKElzQmFkU3RyaW5nUHRyQSgqKGNoYXIgKiopcHRyLCAtMSkpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHN0cmluZyBwb2ludGVyICVwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAqKGNoYXIgKiopcHRyKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKihjaGFyICoqKXB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKCooY2hhciAqKilwdHIpKTsKICAgICB9IGVsc2UgewpAQCAtMTM4Myw3ICsxMzc1LDcgQEAKICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0KLSAgICBpZiAoUHlMb25nX0NoZWNrKHZhbHVlKSB8fCBQeUxvbmdfQ2hlY2sodmFsdWUpKSB7CisgICAgaWYgKFB5TG9uZ19DaGVjayh2YWx1ZSkpIHsKICNpZiBTSVpFT0ZfVk9JRF9QID09IFNJWkVPRl9MT05HX0xPTkcKICAgICAgICAgKih3Y2hhcl90ICoqKXB0ciA9ICh3Y2hhcl90ICopUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sodmFsdWUpOwogI2Vsc2UKQEAgLTE0MTksMTQgKzE0MTEsNiBAQAogICAgIHdjaGFyX3QgKnA7CiAgICAgcCA9ICood2NoYXJfdCAqKilwdHI7CiAgICAgaWYgKHApIHsKLSNpZiBkZWZpbmVkKE1TX1dJTjMyKSAmJiAhZGVmaW5lZChfV0lOMzJfV0NFKQotICAgICAgICBpZiAoSXNCYWRTdHJpbmdQdHJXKCood2NoYXJfdCAqKilwdHIsIC0xKSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgc3RyaW5nIHBvaW50ZXIgJXAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICood2NoYXJfdCAqKilwdHIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihwLCB3Y3NsZW4ocCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKQEAgLTE0NTYsMTUgKzE0NDAsMTUgQEAKICAgICAvKiBjcmVhdGUgYSBCU1RSIGZyb20gdmFsdWUgKi8KICAgICBpZiAodmFsdWUpIHsKICAgICAgICAgd2NoYXJfdCogd3ZhbHVlOwotICAgICAgICBQeV9zc2l6ZV90IHNpemU7Ci0gICAgICAgIHd2YWx1ZSA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHZhbHVlLCAmc2l6ZSk7CisgICAgICAgIFB5X3NzaXplX3Qgd3NpemU7CisgICAgICAgIHd2YWx1ZSA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHZhbHVlLCAmd3NpemUpOwogICAgICAgICBpZiAod3ZhbHVlID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKCh1bnNpZ25lZCkgc2l6ZSAhPSBzaXplKSB7CisgICAgICAgIGlmICgodW5zaWduZWQpIHdzaXplICE9IHdzaXplKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIlN0cmluZyB0b28gbG9uZyBmb3IgQlNUUiIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKHd2YWx1ZSwgKHVuc2lnbmVkKXNpemUpOworICAgICAgICBic3RyID0gU3lzQWxsb2NTdHJpbmdMZW4od3ZhbHVlLCAodW5zaWduZWQpd3NpemUpOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgIH0gZWxzZQogICAgICAgICBic3RyID0gTlVMTDsKQEAgLTE1MDcsNyArMTQ5MSw3IEBACiAgICAgICAgIF9SRVQodmFsdWUpOwogICAgIH0KIAotICAgIGlmICghUHlMb25nX0NoZWNrKHZhbHVlKSAmJiAhUHlMb25nX0NoZWNrKHZhbHVlKSkgeworICAgIGlmICghUHlMb25nX0NoZWNrKHZhbHVlKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gcG9pbnRlciIpOwogICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfbXN2Yy9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfbXN2Yy9mZmkuYwppbmRleCA3NmNiMDNlLi5iNzU4NmM3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX21zdmMvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9tc3ZjL2ZmaS5jCkBAIC02NSwzNyArNjUsNTYgQEAKIAlhcmdwID0gKGNoYXIgKikgQUxJR04oYXJncCwgc2l6ZW9mKHZvaWQgKikpOwogCiAgICAgICB6ID0gKCpwX2FyZyktPnNpemU7Ci0gICAgICBpZiAoeiA8IHNpemVvZihpbnQpKQorICAgICAgaWYgKHogPCBzaXplb2YoaW50cHRyX3QpKQogCXsKLQkgIHogPSBzaXplb2YoaW50KTsKKwkgIHogPSBzaXplb2YoaW50cHRyX3QpOwogCSAgc3dpdGNoICgoKnBfYXJnKS0+dHlwZSkKIAkgICAgewogCSAgICBjYXNlIEZGSV9UWVBFX1NJTlQ4OgotCSAgICAgICooc2lnbmVkIGludCAqKSBhcmdwID0gKHNpZ25lZCBpbnQpKihTSU5UOCAqKSgqIHBfYXJndik7CisJICAgICAgKihpbnRwdHJfdCAqKSBhcmdwID0gKGludHB0cl90KSooU0lOVDggKikoKiBwX2FyZ3YpOwogCSAgICAgIGJyZWFrOwogCiAJICAgIGNhc2UgRkZJX1RZUEVfVUlOVDg6Ci0JICAgICAgKih1bnNpZ25lZCBpbnQgKikgYXJncCA9ICh1bnNpZ25lZCBpbnQpKihVSU5UOCAqKSgqIHBfYXJndik7CisJICAgICAgKih1aW50cHRyX3QgKikgYXJncCA9ICh1aW50cHRyX3QpKihVSU5UOCAqKSgqIHBfYXJndik7CiAJICAgICAgYnJlYWs7CiAKIAkgICAgY2FzZSBGRklfVFlQRV9TSU5UMTY6Ci0JICAgICAgKihzaWduZWQgaW50ICopIGFyZ3AgPSAoc2lnbmVkIGludCkqKFNJTlQxNiAqKSgqIHBfYXJndik7CisJICAgICAgKihpbnRwdHJfdCAqKSBhcmdwID0gKGludHB0cl90KSooU0lOVDE2ICopKCogcF9hcmd2KTsKIAkgICAgICBicmVhazsKIAogCSAgICBjYXNlIEZGSV9UWVBFX1VJTlQxNjoKLQkgICAgICAqKHVuc2lnbmVkIGludCAqKSBhcmdwID0gKHVuc2lnbmVkIGludCkqKFVJTlQxNiAqKSgqIHBfYXJndik7CisJICAgICAgKih1aW50cHRyX3QgKikgYXJncCA9ICh1aW50cHRyX3QpKihVSU5UMTYgKikoKiBwX2FyZ3YpOwogCSAgICAgIGJyZWFrOwogCiAJICAgIGNhc2UgRkZJX1RZUEVfU0lOVDMyOgotCSAgICAgICooc2lnbmVkIGludCAqKSBhcmdwID0gKHNpZ25lZCBpbnQpKihTSU5UMzIgKikoKiBwX2FyZ3YpOworCSAgICAgICooaW50cHRyX3QgKikgYXJncCA9IChpbnRwdHJfdCkqKFNJTlQzMiAqKSgqIHBfYXJndik7CiAJICAgICAgYnJlYWs7CiAKIAkgICAgY2FzZSBGRklfVFlQRV9VSU5UMzI6Ci0JICAgICAgKih1bnNpZ25lZCBpbnQgKikgYXJncCA9ICh1bnNpZ25lZCBpbnQpKihVSU5UMzIgKikoKiBwX2FyZ3YpOworCSAgICAgICoodWludHB0cl90ICopIGFyZ3AgPSAodWludHB0cl90KSooVUlOVDMyICopKCogcF9hcmd2KTsKKwkgICAgICBicmVhazsKKworCSAgICBjYXNlIEZGSV9UWVBFX0ZMT0FUOgorCSAgICAgICoodWludHB0cl90ICopIGFyZ3AgPSAwOworCSAgICAgICooZmxvYXQgKikgYXJncCA9ICooZmxvYXQgKikoKiBwX2FyZ3YpOworCSAgICAgIGJyZWFrOworCisJICAgIC8vIDY0LWJpdCB2YWx1ZSBjYXNlcyBzaG91bGQgbmV2ZXIgYmUgdXNlZCBmb3IgeDg2IGFuZCBBTUQ2NCBidWlsZHMKKwkgICAgY2FzZSBGRklfVFlQRV9TSU5UNjQ6CisJICAgICAgKihpbnRwdHJfdCAqKSBhcmdwID0gKGludHB0cl90KSooU0lOVDY0ICopKCogcF9hcmd2KTsKKwkgICAgICBicmVhazsKKworCSAgICBjYXNlIEZGSV9UWVBFX1VJTlQ2NDoKKwkgICAgICAqKHVpbnRwdHJfdCAqKSBhcmdwID0gKHVpbnRwdHJfdCkqKFVJTlQ2NCAqKSgqIHBfYXJndik7CiAJICAgICAgYnJlYWs7CiAKIAkgICAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6Ci0JICAgICAgKih1bnNpZ25lZCBpbnQgKikgYXJncCA9ICh1bnNpZ25lZCBpbnQpKihVSU5UMzIgKikoKiBwX2FyZ3YpOworCSAgICAgICoodWludHB0cl90ICopIGFyZ3AgPSAodWludHB0cl90KSooVUlOVDMyICopKCogcF9hcmd2KTsKKwkgICAgICBicmVhazsKKworCSAgICBjYXNlIEZGSV9UWVBFX0RPVUJMRToKKwkgICAgICAqKHVpbnRwdHJfdCAqKSBhcmdwID0gMDsKKwkgICAgICAqKGRvdWJsZSAqKSBhcmdwID0gKihkb3VibGUgKikoKiBwX2FyZ3YpOwogCSAgICAgIGJyZWFrOwogCiAJICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYyBiL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jCmluZGV4IDg3YjljMDUuLjc1OWI3MzEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jCisrKyBiL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jCkBAIC0zMTIsOSArMzEyLDggQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKF9jdXJzZXNfcGFuZWxzdGF0ZV9nbG9iYWwtPlB5Q3Vyc2VzRXJyb3IsICJyZXBsYWNlX3BhbmVsKCkgcmV0dXJuZWQgRVJSIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9ERUNSRUYocG8tPndvKTsKLSAgICBwby0+d28gPSB0ZW1wOwotICAgIFB5X0lOQ1JFRihwby0+d28pOworICAgIFB5X0lOQ1JFRih0ZW1wKTsKKyAgICBQeV9TRVRSRUYocG8tPndvLCB0ZW1wKTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCmluZGV4IDVmZmNlMmYuLmQ2NGJkYzcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCkBAIC0xNDAsNiArMTQwLDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTg4Yzg2MGFiZGJiNTBlMGNdKi8KIAorI2luY2x1ZGUgImNsaW5pYy9fY3Vyc2VzbW9kdWxlLmMuaCIKKwogLyogRGVmaW5pdGlvbiBvZiBleGNlcHRpb24gY3Vyc2VzLmVycm9yICovCiAKIHN0YXRpYyBQeU9iamVjdCAqUHlDdXJzZXNFcnJvcjsKQEAgLTU4Myw3NSArNTg1LDEwIEBACiBjdXJyZW50IHNldHRpbmdzIGZvciB0aGUgd2luZG93IG9iamVjdC4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKGN1cnNlc193aW5kb3dfYWRkY2hfX2RvY19fLAotImFkZGNoKFt5LCB4LF0gY2gsIFthdHRyXSlcbiIKLSJQYWludCBjaGFyYWN0ZXIgY2ggYXQgKHksIHgpIHdpdGggYXR0cmlidXRlcyBhdHRyLlxuIgotIlxuIgotIiAgeVxuIgotIiAgICBZLWNvb3JkaW5hdGUuXG4iCi0iICB4XG4iCi0iICAgIFgtY29vcmRpbmF0ZS5cbiIKLSIgIGNoXG4iCi0iICAgIENoYXJhY3RlciB0byBhZGQuXG4iCi0iICBhdHRyXG4iCi0iICAgIEF0dHJpYnV0ZXMgZm9yIHRoZSBjaGFyYWN0ZXIuXG4iCi0iXG4iCi0iUGFpbnQgY2hhcmFjdGVyIGNoIGF0ICh5LCB4KSB3aXRoIGF0dHJpYnV0ZXMgYXR0cixcbiIKLSJvdmVyd3JpdGluZyBhbnkgY2hhcmFjdGVyIHByZXZpb3VzbHkgcGFpbnRlZCBhdCB0aGF0IGxvY2F0aW9uLlxuIgotIkJ5IGRlZmF1bHQsIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gYW5kIGF0dHJpYnV0ZXMgYXJlIHRoZVxuIgotImN1cnJlbnQgc2V0dGluZ3MgZm9yIHRoZSB3aW5kb3cgb2JqZWN0LiIpOwotCi0jZGVmaW5lIENVUlNFU19XSU5ET1dfQUREQ0hfTUVUSE9EREVGICAgIFwKLSAgICB7ImFkZGNoIiwgKFB5Q0Z1bmN0aW9uKWN1cnNlc193aW5kb3dfYWRkY2gsIE1FVEhfVkFSQVJHUywgY3Vyc2VzX3dpbmRvd19hZGRjaF9fZG9jX199LAotCiBzdGF0aWMgUHlPYmplY3QgKgotY3Vyc2VzX3dpbmRvd19hZGRjaF9pbXBsKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBpbnQgZ3JvdXBfbGVmdF8xLCBpbnQgeSwgaW50IHgsIFB5T2JqZWN0ICpjaCwgaW50IGdyb3VwX3JpZ2h0XzEsIGxvbmcgYXR0cik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1jdXJzZXNfd2luZG93X2FkZGNoKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBpbnQgZ3JvdXBfbGVmdF8xID0gMDsKLSAgICBpbnQgeSA9IDA7Ci0gICAgaW50IHggPSAwOwotICAgIFB5T2JqZWN0ICpjaDsKLSAgICBpbnQgZ3JvdXBfcmlnaHRfMSA9IDA7Ci0gICAgbG9uZyBhdHRyID0gMDsKLQotICAgIHN3aXRjaCAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSkgewotICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86YWRkY2giLCAmY2gpKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9sOmFkZGNoIiwgJmNoLCAmYXR0cikpCi0gICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgZ3JvdXBfcmlnaHRfMSA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU86YWRkY2giLCAmeSwgJngsICZjaCkpCi0gICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgZ3JvdXBfbGVmdF8xID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpT2w6YWRkY2giLCAmeSwgJngsICZjaCwgJmF0dHIpKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOwotICAgICAgICAgICAgZ3JvdXBfbGVmdF8xID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImN1cnNlcy53aW5kb3cuYWRkY2ggcmVxdWlyZXMgMSB0byA0IGFyZ3VtZW50cyIpOwotICAgICAgICAgICAgZ290byBleGl0OwotICAgIH0KLSAgICByZXR1cm5fdmFsdWUgPSBjdXJzZXNfd2luZG93X2FkZGNoX2ltcGwoc2VsZiwgZ3JvdXBfbGVmdF8xLCB5LCB4LCBjaCwgZ3JvdXBfcmlnaHRfMSwgYXR0cik7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWN1cnNlc193aW5kb3dfYWRkY2hfaW1wbChQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgaW50IGdyb3VwX2xlZnRfMSwgaW50IHksIGludCB4LCBQeU9iamVjdCAqY2gsIGludCBncm91cF9yaWdodF8xLCBsb25nIGF0dHIpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDRiOTdjYzI4NzAxMGM1NCBpbnB1dD01YTQxZWZiMzRhMmRlMzM4XSovCitjdXJzZXNfd2luZG93X2FkZGNoX2ltcGwoUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIGludCBncm91cF9sZWZ0XzEsIGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LCBQeU9iamVjdCAqY2gsIGludCBncm91cF9yaWdodF8xLCBsb25nIGF0dHIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTlmN2Y4NTA3OGVjMDZjMyBpbnB1dD01YTQxZWZiMzRhMmRlMzM4XSovCiB7CiAgICAgUHlDdXJzZXNXaW5kb3dPYmplY3QgKmN3c2VsZiA9IChQeUN1cnNlc1dpbmRvd09iamVjdCAqKXNlbGY7CiAgICAgaW50IGNvb3JkaW5hdGVzX2dyb3VwID0gZ3JvdXBfbGVmdF8xOwpAQCAtMjY3NSw3ICsyNjEyLDcgQEAKICAgICB9CiAgICAga25wID0ga2V5bmFtZShjaCk7CiAKLSAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nKChrbnAgPT0gTlVMTCkgPyAiIiA6IChjaGFyICopa25wKTsKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nKChrbnAgPT0gTlVMTCkgPyAiIiA6IGtucCk7CiB9CiAjZW5kaWYKIApAQCAtMjkyOSw2ICsyODY2LDEzIEBACiAgICAgUHlfREVDUkVGKG0pOwogICAgIHJldHVybiAxOwogfQorCitzdGF0aWMgUHlPYmplY3QgKgorUHlDdXJzZXNfdXBkYXRlX2xpbmVzX2NvbHMoUHlPYmplY3QgKnNlbGYpCit7CisgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHVwZGF0ZV9saW5lc19jb2xzKCkpOworfQorCiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfQ1VSU0VTX1JFU0laRVRFUk0KQEAgLTMzMzEsNiArMzI3NSw5IEBACiAgICAgeyJ0eXBlYWhlYWQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1R5cGVBaGVhZCwgTUVUSF9WQVJBUkdTfSwKICAgICB7InVuY3RybCIsICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfVW5DdHJsLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsidW5nZXRjaCIsICAgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19VbmdldENoLCBNRVRIX1ZBUkFSR1N9LAorI2lmIGRlZmluZWQoSEFWRV9DVVJTRVNfUkVTSVpFVEVSTSkgfHwgZGVmaW5lZChIQVZFX0NVUlNFU19SRVNJWkVfVEVSTSkKKyAgICB7InVwZGF0ZV9saW5lc19jb2xzIiwgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfdXBkYXRlX2xpbmVzX2NvbHMsIE1FVEhfTk9BUkdTfSwKKyNlbmRpZgogI2lmZGVmIEhBVkVfTkNVUlNFU1cKICAgICB7InVuZ2V0X3djaCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfVW5nZXRfV2NoLCBNRVRIX1ZBUkFSR1N9LAogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jIGIvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYwppbmRleCA2MDg0ZmZhLi5lM2RlNTM3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMKQEAgLTcsNiArNywxMCBAQAogCiAjaW5jbHVkZSA8dGltZS5oPgogCisjaWZkZWYgTVNfV0lORE9XUworIyAgaW5jbHVkZSA8d2luc29jazIuaD4gICAgICAgICAvKiBzdHJ1Y3QgdGltZXZhbCAqLworI2VuZGlmCisKIC8qIERpZmZlcmVudGlhdGUgYmV0d2VlbiBidWlsZGluZyB0aGUgY29yZSBtb2R1bGUgYW5kIGJ1aWxkaW5nIGV4dGVuc2lvbgogICogbW9kdWxlcy4KICAqLwpAQCAtMjIsNiArMjYsOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NzgxNDJjYjY0YjllOThiY10qLwogCisjaW5jbHVkZSAiY2xpbmljL19kYXRldGltZW1vZHVsZS5jLmgiCisKIC8qIFdlIHJlcXVpcmUgdGhhdCBDIGludCBiZSBhdCBsZWFzdCAzMiBiaXRzLCBhbmQgdXNlIGludCB2aXJ0dWFsbHkKICAqIGV2ZXJ5d2hlcmUuICBJbiBqdXN0IGEgZmV3IGNhc2VzIHdlIHVzZSBhIHRlbXAgbG9uZywgd2hlcmUgYSBQeXRob24KICAqIEFQSSByZXR1cm5zIGEgQyBsb25nLiAgSW4gc3VjaCBjYXNlcywgd2UgaGF2ZSB0byBlbnN1cmUgdGhhdCB0aGUKQEAgLTI0NTksNyArMjQ2NSw3IEBACiAgICAgc3RydWN0IHRtICp0bTsKICAgICB0aW1lX3QgdDsKIAotICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZV90KG9iaiwgJnQsIF9QeVRpbWVfUk9VTkRfRE9XTikgPT0gLTEpCisgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lX3Qob2JqLCAmdCwgX1B5VGltZV9ST1VORF9GTE9PUikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgdG0gPSBsb2NhbHRpbWUoJnQpOwpAQCAtMzgwNSwyOSArMzgxMSw2IEBACiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1zdGF0aWMgaW50Ci10aW1lX2Jvb2woUHlPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlPYmplY3QgKm9mZnNldCwgKnR6aW5mbzsKLSAgICBpbnQgb2Zmc2VjcyA9IDA7Ci0KLSAgICBpZiAoVElNRV9HRVRfU0VDT05EKHNlbGYpIHx8IFRJTUVfR0VUX01JQ1JPU0VDT05EKHNlbGYpKSB7Ci0gICAgICAgIC8qIFNpbmNlIHV0Y29mZnNldCBpcyBpbiB3aG9sZSBtaW51dGVzLCBub3RoaW5nIGNhbgotICAgICAgICAgKiBhbHRlciB0aGUgY29uY2x1c2lvbiB0aGF0IHRoaXMgaXMgbm9uemVyby4KLSAgICAgICAgICovCi0gICAgICAgIHJldHVybiAxOwotICAgIH0KLSAgICB0emluZm8gPSBHRVRfVElNRV9UWklORk8oc2VsZik7Ci0gICAgaWYgKHR6aW5mbyAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIG9mZnNldCA9IGNhbGxfdXRjb2Zmc2V0KHR6aW5mbywgUHlfTm9uZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgb2Zmc2VjcyA9IEdFVF9URF9EQVlTKG9mZnNldCkqODY0MDAgKyBHRVRfVERfU0VDT05EUyhvZmZzZXQpOwotICAgICAgICBQeV9ERUNSRUYob2Zmc2V0KTsKLSAgICB9Ci0gICAgcmV0dXJuIChUSU1FX0dFVF9NSU5VVEUoc2VsZikqNjAgLSBvZmZzZWNzICsgVElNRV9HRVRfSE9VUihzZWxmKSozNjAwKSAhPSAwOwotfQotCiAvKiBQaWNrbGUgc3VwcG9ydCwgYSBzaW1wbGUgdXNlIG9mIF9fcmVkdWNlX18uICovCiAKIC8qIExldCBiYXNlc3RhdGUgYmUgdGhlIG5vbi10emluZm8gZGF0YSBzdHJpbmcuCkBAIC0zODk1LDE5ICszODc4LDYgQEAKIEFsbCBhcmd1bWVudHMgYXJlIG9wdGlvbmFsLiB0emluZm8gbWF5IGJlIE5vbmUsIG9yIGFuIGluc3RhbmNlIG9mXG5cCiBhIHR6aW5mbyBzdWJjbGFzcy4gVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgbWF5IGJlIGludHMuXG4iKTsKIAotc3RhdGljIFB5TnVtYmVyTWV0aG9kcyB0aW1lX2FzX251bWJlciA9IHsKLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2FkZCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfc3VidHJhY3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX211bHRpcGx5ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9yZW1haW5kZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Rpdm1vZCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcG93ZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX25lZ2F0aXZlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9wb3NpdGl2ZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfYWJzb2x1dGUgKi8KLSAgICAoaW5xdWlyeSl0aW1lX2Jvb2wsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Jvb2wgKi8KLX07Ci0KIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlEYXRlVGltZV9UaW1lVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiZGF0ZXRpbWUudGltZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KQEAgLTM5MTksNyArMzg4OSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLwogICAgIChyZXByZnVuYyl0aW1lX3JlcHIsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLwotICAgICZ0aW1lX2FzX251bWJlciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCiAgICAgKGhhc2hmdW5jKXRpbWVfaGFzaCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCkBAIC00MTk0LDEwICs0MTY0LDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZXRpbWVfYmVzdF9wb3NzaWJsZShQeU9iamVjdCAqY2xzLCBUTV9GVU5DIGYsIFB5T2JqZWN0ICp0emluZm8pCiB7Ci0gICAgX1B5VGltZV90aW1ldmFsIHQ7Ci0gICAgX1B5VGltZV9nZXR0aW1lb2ZkYXkoJnQpOwotICAgIHJldHVybiBkYXRldGltZV9mcm9tX3RpbWV0X2FuZF91cyhjbHMsIGYsIHQudHZfc2VjLCAoaW50KXQudHZfdXNlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvKTsKKyAgICBfUHlUaW1lX3QgdHMgPSBfUHlUaW1lX0dldFN5c3RlbUNsb2NrKCk7CisgICAgdGltZV90IHNlY3M7CisgICAgaW50IHVzOworCisgICAgaWYgKF9QeVRpbWVfQXNUaW1ldmFsVGltZV90KHRzLCAmc2VjcywgJnVzLCBfUHlUaW1lX1JPVU5EX0ZMT09SKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydCgwIDw9IHVzICYmIHVzIDw9IDk5OTk5OSk7CisKKyAgICByZXR1cm4gZGF0ZXRpbWVfZnJvbV90aW1ldF9hbmRfdXMoY2xzLCBmLCBzZWNzLCB1cywgdHppbmZvKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQpAQCAtNDIxMyw0MyArNDE4OCw5IEBACiBJZiBubyB0eiBpcyBzcGVjaWZpZWQsIHVzZXMgbG9jYWwgdGltZXpvbmUuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihkYXRldGltZV9kYXRldGltZV9ub3dfX2RvY19fLAotIm5vdygkdHlwZSwgLywgdHo9Tm9uZSlcbiIKLSItLVxuIgotIlxuIgotIlJldHVybnMgbmV3IGRhdGV0aW1lIG9iamVjdCByZXByZXNlbnRpbmcgY3VycmVudCB0aW1lIGxvY2FsIHRvIHR6LlxuIgotIlxuIgotIiAgdHpcbiIKLSIgICAgVGltZXpvbmUgb2JqZWN0LlxuIgotIlxuIgotIklmIG5vIHR6IGlzIHNwZWNpZmllZCwgdXNlcyBsb2NhbCB0aW1lem9uZS4iKTsKLQotI2RlZmluZSBEQVRFVElNRV9EQVRFVElNRV9OT1dfTUVUSE9EREVGICAgIFwKLSAgICB7Im5vdyIsIChQeUNGdW5jdGlvbilkYXRldGltZV9kYXRldGltZV9ub3csIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfE1FVEhfQ0xBU1MsIGRhdGV0aW1lX2RhdGV0aW1lX25vd19fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdHopOwotCi1zdGF0aWMgUHlPYmplY3QgKgotZGF0ZXRpbWVfZGF0ZXRpbWVfbm93KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ0eiIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICp0eiA9IFB5X05vbmU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCi0gICAgICAgICJ8Tzpub3ciLCBfa2V5d29yZHMsCi0gICAgICAgICZ0eikpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBkYXRldGltZV9kYXRldGltZV9ub3dfaW1wbCh0eXBlLCB0eik7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX2RhdGV0aW1lX25vd19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnR6KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU4M2M1NjM3ZTNjODQzZmEgaW5wdXQ9ODBkMDk4NjljNTI2N2QwMF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWIzMzg2ZTUzNDVlMmI0N2EgaW5wdXQ9ODBkMDk4NjljNTI2N2QwMF0qLwogewogICAgIFB5T2JqZWN0ICpzZWxmOwogCkBAIC01MTExLDggKzUwNTIsNyBAQAogCiAgICAgeyJ1dGNmcm9tdGltZXN0YW1wIiwgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX3V0Y2Zyb210aW1lc3RhbXAsCiAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfQ0xBU1MsCi0gICAgIFB5RG9jX1NUUigidGltZXN0YW1wIC0+IFVUQyBkYXRldGltZSBmcm9tIGEgUE9TSVggdGltZXN0YW1wICIKLSAgICAgICAgICAgICAgICIobGlrZSB0aW1lLnRpbWUoKSkuIil9LAorICAgICBQeURvY19TVFIoIkNvbnN0cnVjdCBhIG5haXZlIFVUQyBkYXRldGltZSBmcm9tIGEgUE9TSVggdGltZXN0YW1wLiIpfSwKIAogICAgIHsic3RycHRpbWUiLCAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfc3RycHRpbWUsCiAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfQ0xBU1MsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kYm1tb2R1bGUuYyBiL01vZHVsZXMvX2RibW1vZHVsZS5jCmluZGV4IDkzZWE0MTYuLjAyODk5ZTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RibW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2RibW1vZHVsZS5jCkBAIC0yOSwxMCArMjksMTAgQEAKICNlbmRpZgogCiAvKltjbGluaWMgaW5wdXRdCi1tb2R1bGUgZGJtCi1jbGFzcyBkYm0uZGJtICJkYm1vYmplY3QgKiIgIiZEYm10eXBlIgorbW9kdWxlIF9kYm0KK2NsYXNzIF9kYm0uZGJtICJkYm1vYmplY3QgKiIgIiZEYm10eXBlIgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9OTI0NTA1NjQ2ODRhNjlhM10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9OWIxYWE4NzU2ZDE2MTUwZV0qLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtNDAsNiArNDAsOCBAQAogICAgIERCTSAqZGlfZGJtOwogfSBkYm1vYmplY3Q7CiAKKyNpbmNsdWRlICJjbGluaWMvX2RibW1vZHVsZS5jLmgiCisKIHN0YXRpYyBQeVR5cGVPYmplY3QgRGJtdHlwZTsKIAogI2RlZmluZSBpc19kYm1vYmplY3QodikgKFB5X1RZUEUodikgPT0gJkRibXR5cGUpCkBAIC00OSwxNSArNTEsNiBAQAogCiBzdGF0aWMgUHlPYmplY3QgKkRibUVycm9yOwogCi0vKltweXRob24gaW5wdXRdCi1jbGFzcyBkYm1vYmplY3RfY29udmVydGVyKHNlbGZfY29udmVydGVyKToKLSAgICB0eXBlID0gImRibW9iamVjdCAqIgotICAgIGRlZiBwcmVfcmVuZGVyKHNlbGYpOgotICAgICAgICBzdXBlcigpLnByZV9yZW5kZXIoKQotICAgICAgICBzZWxmLm5hbWUgPSAnZHAnCi1bcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD02YWQ1MzYzNTc5MTM4NzlhXSovCi0KIHN0YXRpYyBQeU9iamVjdCAqCiBuZXdkYm1vYmplY3QoY29uc3QgY2hhciAqZmlsZSwgaW50IGZsYWdzLCBpbnQgbW9kZSkKIHsKQEAgLTE4MSwyOSArMTc0LDQzIEBACiAgICAgKG9iam9iamFyZ3Byb2MpZGJtX2Fzc19zdWIsICAgICAgICAgLyptcF9hc3Nfc3Vic2NyaXB0Ki8KIH07CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19kYm0uZGJtLmNsb3NlCisKK0Nsb3NlIHRoZSBkYXRhYmFzZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWRibV9fY2xvc2UoZGJtb2JqZWN0ICpkcCwgUHlPYmplY3QgKnVudXNlZCkKK19kYm1fZGJtX2Nsb3NlX2ltcGwoZGJtb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM4ZGM1YjY3MDk2MDBiODYgaW5wdXQ9MDQ2ZGI3MjM3N2Q1MWJlOF0qLwogewotICAgIGlmIChkcC0+ZGlfZGJtKQotICAgICAgICBkYm1fY2xvc2UoZHAtPmRpX2RibSk7Ci0gICAgZHAtPmRpX2RibSA9IE5VTEw7CisgICAgaWYgKHNlbGYtPmRpX2RibSkKKyAgICAgICAgZGJtX2Nsb3NlKHNlbGYtPmRpX2RibSk7CisgICAgc2VsZi0+ZGlfZGJtID0gTlVMTDsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19kYm0uZGJtLmtleXMKKworUmV0dXJuIGEgbGlzdCBvZiBhbGwga2V5cyBpbiB0aGUgZGF0YWJhc2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1kYm1fa2V5cyhkYm1vYmplY3QgKmRwLCBQeU9iamVjdCAqdW51c2VkKQorX2RibV9kYm1fa2V5c19pbXBsKGRibW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MzQ1NDlmN2MxMjFiMzNjIGlucHV0PWQyMTBiYTc3OGNkOWM2OGFdKi8KIHsKICAgICBQeU9iamVjdCAqdiwgKml0ZW07CiAgICAgZGF0dW0ga2V5OwogICAgIGludCBlcnI7CiAKLSAgICBjaGVja19kYm1vYmplY3Rfb3BlbihkcCk7CisgICAgY2hlY2tfZGJtb2JqZWN0X29wZW4oc2VsZik7CiAgICAgdiA9IFB5TGlzdF9OZXcoMCk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZm9yIChrZXkgPSBkYm1fZmlyc3RrZXkoZHAtPmRpX2RibSk7IGtleS5kcHRyOwotICAgICAgICAga2V5ID0gZGJtX25leHRrZXkoZHAtPmRpX2RibSkpIHsKKyAgICBmb3IgKGtleSA9IGRibV9maXJzdGtleShzZWxmLT5kaV9kYm0pOyBrZXkuZHB0cjsKKyAgICAgICAgIGtleSA9IGRibV9uZXh0a2V5KHNlbGYtPmRpX2RibSkpIHsKICAgICAgICAgaXRlbSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoa2V5LmRwdHIsIGtleS5kc2l6ZSk7CiAgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKQEAgLTI2NSw1OCArMjcyLDI3IEBACiB9OwogCiAvKltjbGluaWMgaW5wdXRdCitfZGJtLmRibS5nZXQKIAotZGJtLmRibS5nZXQKLQotICAgIHNlbGY6IGRibW9iamVjdAotCi0gICAga2V5OiBzdHIobGVuZ3RoPVRydWUpCi0gICAgZGVmYXVsdDogb2JqZWN0ID0gTm9uZQorICAgIGtleTogc3RyKGFjY2VwdD17c3RyLCByb2J1ZmZlcn0sIHplcm9lcz1UcnVlKQorICAgIGRlZmF1bHQ6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJwogICAgIC8KIAogUmV0dXJuIHRoZSB2YWx1ZSBmb3Iga2V5IGlmIHByZXNlbnQsIG90aGVyd2lzZSBkZWZhdWx0LgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoZGJtX2RibV9nZXRfX2RvY19fLAotImdldCgkc2VsZiwga2V5LCBkZWZhdWx0PU5vbmUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJSZXR1cm4gdGhlIHZhbHVlIGZvciBrZXkgaWYgcHJlc2VudCwgb3RoZXJ3aXNlIGRlZmF1bHQuIik7Ci0KLSNkZWZpbmUgREJNX0RCTV9HRVRfTUVUSE9EREVGICAgIFwKLSAgICB7ImdldCIsIChQeUNGdW5jdGlvbilkYm1fZGJtX2dldCwgTUVUSF9WQVJBUkdTLCBkYm1fZGJtX2dldF9fZG9jX199LAotCiBzdGF0aWMgUHlPYmplY3QgKgotZGJtX2RibV9nZXRfaW1wbChkYm1vYmplY3QgKmRwLCBjb25zdCBjaGFyICprZXksIFB5X3NzaXplX2NsZWFuX3Qga2V5X2xlbmd0aCwgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotZGJtX2RibV9nZXQoZGJtb2JqZWN0ICpkcCwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgY29uc3QgY2hhciAqa2V5OwotICAgIFB5X3NzaXplX2NsZWFuX3Qga2V5X2xlbmd0aDsKLSAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInMjfE86Z2V0IiwKLSAgICAgICAgJmtleSwgJmtleV9sZW5ndGgsICZkZWZhdWx0X3ZhbHVlKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IGRibV9kYm1fZ2V0X2ltcGwoZHAsIGtleSwga2V5X2xlbmd0aCwgZGVmYXVsdF92YWx1ZSk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWRibV9kYm1fZ2V0X2ltcGwoZGJtb2JqZWN0ICpkcCwgY29uc3QgY2hhciAqa2V5LCBQeV9zc2l6ZV9jbGVhbl90IGtleV9sZW5ndGgsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1MmVhMTEzOTRlN2U5MmQgaW5wdXQ9YWVjZjVlZmQyZjJiMWEzYl0qLworX2RibV9kYm1fZ2V0X2ltcGwoZGJtb2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICprZXksCisgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV9jbGVhbl90IGtleV9sZW5ndGgsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI0NGY5NWViYTgyMDNkOTMgaW5wdXQ9YTNhMjc5OTU3Zjg1ZWI2ZF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRmNWMwZTUyM2VhZjEyNTEgaW5wdXQ9OTQwMmMwYWY4NTgyZGM2OV0qLwogewogICAgIGRhdHVtIGRibV9rZXksIHZhbDsKIAogICAgIGRibV9rZXkuZHB0ciA9IChjaGFyICopa2V5OwogICAgIGRibV9rZXkuZHNpemUgPSBrZXlfbGVuZ3RoOwotICAgIGNoZWNrX2RibW9iamVjdF9vcGVuKGRwKTsKLSAgICB2YWwgPSBkYm1fZmV0Y2goZHAtPmRpX2RibSwgZGJtX2tleSk7CisgICAgY2hlY2tfZGJtb2JqZWN0X29wZW4oc2VsZik7CisgICAgdmFsID0gZGJtX2ZldGNoKHNlbGYtPmRpX2RibSwgZGJtX2tleSk7CiAgICAgaWYgKHZhbC5kcHRyICE9IE5VTEwpCiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHZhbC5kcHRyLCB2YWwuZHNpemUpOwogCkBAIC0zMjQsNDYgKzMwMCw1NSBAQAogICAgIHJldHVybiBkZWZhdWx0X3ZhbHVlOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfZGJtLmRibS5zZXRkZWZhdWx0CisgICAga2V5OiBzdHIoYWNjZXB0PXtzdHIsIHJvYnVmZmVyfSwgemVyb2VzPVRydWUpCisgICAgZGVmYXVsdDogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gYicnCisgICAgLworCitSZXR1cm4gdGhlIHZhbHVlIGZvciBrZXkgaWYgcHJlc2VudCwgb3RoZXJ3aXNlIGRlZmF1bHQuCisKK0lmIGtleSBpcyBub3QgaW4gdGhlIGRhdGFiYXNlLCBpdCBpcyBpbnNlcnRlZCB3aXRoIGRlZmF1bHQgYXMgdGhlIHZhbHVlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZGJtX3NldGRlZmF1bHQoZGJtb2JqZWN0ICpkcCwgUHlPYmplY3QgKmFyZ3MpCitfZGJtX2RibV9zZXRkZWZhdWx0X2ltcGwoZGJtb2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUyNTQ1ODg2Y2YyNzIxNjEgaW5wdXQ9YmY0MGM0OGVkYWNhMDFkNl0qLwogewotICAgIGRhdHVtIGtleSwgdmFsOwotICAgIFB5T2JqZWN0ICpkZWZ2YWx1ZSA9IE5VTEw7Ci0gICAgY2hhciAqdG1wX3B0cjsKKyAgICBkYXR1bSBkYm1fa2V5LCB2YWw7CiAgICAgUHlfc3NpemVfdCB0bXBfc2l6ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyN8TzpzZXRkZWZhdWx0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnRtcF9wdHIsICZ0bXBfc2l6ZSwgJmRlZnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAga2V5LmRwdHIgPSB0bXBfcHRyOwotICAgIGtleS5kc2l6ZSA9IHRtcF9zaXplOwotICAgIGNoZWNrX2RibW9iamVjdF9vcGVuKGRwKTsKLSAgICB2YWwgPSBkYm1fZmV0Y2goZHAtPmRpX2RibSwga2V5KTsKKyAgICBkYm1fa2V5LmRwdHIgPSAoY2hhciAqKWtleTsKKyAgICBkYm1fa2V5LmRzaXplID0ga2V5X2xlbmd0aDsKKyAgICBjaGVja19kYm1vYmplY3Rfb3BlbihzZWxmKTsKKyAgICB2YWwgPSBkYm1fZmV0Y2goc2VsZi0+ZGlfZGJtLCBkYm1fa2V5KTsKICAgICBpZiAodmFsLmRwdHIgIT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUodmFsLmRwdHIsIHZhbC5kc2l6ZSk7Ci0gICAgaWYgKGRlZnZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgZGVmdmFsdWUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwotICAgICAgICBpZiAoZGVmdmFsdWUgPT0gTlVMTCkKKyAgICBpZiAoZGVmYXVsdF92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIGRlZmF1bHRfdmFsdWUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOworICAgICAgICBpZiAoZGVmYXVsdF92YWx1ZSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHZhbC5kcHRyID0gTlVMTDsKICAgICAgICAgdmFsLmRzaXplID0gMDsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmICggIVB5QXJnX1BhcnNlKGRlZnZhbHVlLCAicyMiLCAmdmFsLmRwdHIsICZ0bXBfc2l6ZSkgKSB7CisgICAgICAgIGlmICggIVB5QXJnX1BhcnNlKGRlZmF1bHRfdmFsdWUsICJzIyIsICZ2YWwuZHB0ciwgJnRtcF9zaXplKSApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgImRibSBtYXBwaW5ncyBoYXZlIGJ5dGUgc3RyaW5nIGVsZW1lbnRzIG9ubHkiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIHZhbC5kc2l6ZSA9IHRtcF9zaXplOwotICAgICAgICBQeV9JTkNSRUYoZGVmdmFsdWUpOworICAgICAgICBQeV9JTkNSRUYoZGVmYXVsdF92YWx1ZSk7CiAgICAgfQotICAgIGlmIChkYm1fc3RvcmUoZHAtPmRpX2RibSwga2V5LCB2YWwsIERCTV9JTlNFUlQpIDwgMCkgewotICAgICAgICBkYm1fY2xlYXJlcnIoZHAtPmRpX2RibSk7CisgICAgaWYgKGRibV9zdG9yZShzZWxmLT5kaV9kYm0sIGRibV9rZXksIHZhbCwgREJNX0lOU0VSVCkgPCAwKSB7CisgICAgICAgIGRibV9jbGVhcmVycihzZWxmLT5kaV9kYm0pOwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoRGJtRXJyb3IsICJjYW5ub3QgYWRkIGl0ZW0gdG8gZGF0YWJhc2UiKTsKLSAgICAgICAgUHlfREVDUkVGKGRlZnZhbHVlKTsKKyAgICAgICAgUHlfREVDUkVGKGRlZmF1bHRfdmFsdWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIGRlZnZhbHVlOworICAgIHJldHVybiBkZWZhdWx0X3ZhbHVlOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMzgyLDE1ICszNjcsMTAgQEAKIAogCiBzdGF0aWMgUHlNZXRob2REZWYgZGJtX21ldGhvZHNbXSA9IHsKLSAgICB7ImNsb3NlIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilkYm1fX2Nsb3NlLCAgICAgICAgTUVUSF9OT0FSR1MsCi0gICAgICJjbG9zZSgpXG5DbG9zZSB0aGUgZGF0YWJhc2UuIn0sCi0gICAgeyJrZXlzIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGJtX2tleXMsICAgICAgICAgIE1FVEhfTk9BUkdTLAotICAgICAia2V5cygpIC0+IGxpc3RcblJldHVybiBhIGxpc3Qgb2YgYWxsIGtleXMgaW4gdGhlIGRhdGFiYXNlLiJ9LAotICAgIERCTV9EQk1fR0VUX01FVEhPRERFRgotICAgIHsic2V0ZGVmYXVsdCIsICAgICAgKFB5Q0Z1bmN0aW9uKWRibV9zZXRkZWZhdWx0LCAgICBNRVRIX1ZBUkFSR1MsCi0gICAgICJzZXRkZWZhdWx0KGtleVssIGRlZmF1bHRdKSAtPiB2YWx1ZVxuIgotICAgICAiUmV0dXJuIHRoZSB2YWx1ZSBmb3Iga2V5IGlmIHByZXNlbnQsIG90aGVyd2lzZSBkZWZhdWx0LiAgSWYga2V5XG4iCi0gICAgICJpcyBub3QgaW4gdGhlIGRhdGFiYXNlLCBpdCBpcyBpbnNlcnRlZCB3aXRoIGRlZmF1bHQgYXMgdGhlIHZhbHVlLiJ9LAorICAgIF9EQk1fREJNX0NMT1NFX01FVEhPRERFRgorICAgIF9EQk1fREJNX0tFWVNfTUVUSE9EREVGCisgICAgX0RCTV9EQk1fR0VUX01FVEhPRERFRgorICAgIF9EQk1fREJNX1NFVERFRkFVTFRfTUVUSE9EREVGCiAgICAgeyJfX2VudGVyX18iLCBkYm1fX2VudGVyX18sIE1FVEhfTk9BUkdTLCBOVUxMfSwKICAgICB7Il9fZXhpdF9fIiwgIGRibV9fZXhpdF9fLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCkBAIC00MzEsNyArNDExLDcgQEAKIAogLypbY2xpbmljIGlucHV0XQogCi1kYm0ub3BlbiBhcyBkYm1vcGVuCitfZGJtLm9wZW4gYXMgZGJtb3BlbgogCiAgICAgZmlsZW5hbWU6IHN0cgogICAgICAgICBUaGUgZmlsZW5hbWUgdG8gb3Blbi4KQEAgLTQ0OSw0NyArNDI5LDEwIEBACiAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKGRibW9wZW5fX2RvY19fLAotIm9wZW4oJG1vZHVsZSwgZmlsZW5hbWUsIGZsYWdzPVwnclwnLCBtb2RlPTBvNjY2LCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iUmV0dXJuIGEgZGF0YWJhc2Ugb2JqZWN0LlxuIgotIlxuIgotIiAgZmlsZW5hbWVcbiIKLSIgICAgVGhlIGZpbGVuYW1lIHRvIG9wZW4uXG4iCi0iICBmbGFnc1xuIgotIiAgICBIb3cgdG8gb3BlbiB0aGUgZmlsZS4gIFwiclwiIGZvciByZWFkaW5nLCBcIndcIiBmb3Igd3JpdGluZywgZXRjLlxuIgotIiAgbW9kZVxuIgotIiAgICBJZiBjcmVhdGluZyBhIG5ldyBmaWxlLCB0aGUgbW9kZSBiaXRzIGZvciB0aGUgbmV3IGZpbGVcbiIKLSIgICAgKGUuZy4gb3MuT19SRFdSKS4iKTsKLQotI2RlZmluZSBEQk1PUEVOX01FVEhPRERFRiAgICBcCi0gICAgeyJvcGVuIiwgKFB5Q0Z1bmN0aW9uKWRibW9wZW4sIE1FVEhfVkFSQVJHUywgZGJtb3Blbl9fZG9jX199LAotCiBzdGF0aWMgUHlPYmplY3QgKgotZGJtb3Blbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpmbGFncywgaW50IG1vZGUpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotZGJtb3BlbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBjb25zdCBjaGFyICpmaWxlbmFtZTsKLSAgICBjb25zdCBjaGFyICpmbGFncyA9ICJyIjsKLSAgICBpbnQgbW9kZSA9IDQzODsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAic3xzaTpvcGVuIiwKLSAgICAgICAgJmZpbGVuYW1lLCAmZmxhZ3MsICZtb2RlKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IGRibW9wZW5faW1wbChtb2R1bGUsIGZpbGVuYW1lLCBmbGFncywgbW9kZSk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWRibW9wZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqZmxhZ3MsIGludCBtb2RlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlhN2I3MjVmOWM0ZGNlYzIgaW5wdXQ9NjQ5OWFiMGZhYjEzMzNhY10qLworZGJtb3Blbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpmbGFncywKKyAgICAgICAgICAgICBpbnQgbW9kZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lOGQ0YjM2ZjI1YzczM2ZkIGlucHV0PTIyNjMzNGJhZGU1NzY0ZTZdKi8KIHsKICAgICBpbnQgaWZsYWdzOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMgYi9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMKaW5kZXggZjAwMDg4Ny4uMTEyYjQ0ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvX2RlY2ltYWwuYwpAQCAtNDUyOSw3ICs0NTI5LDcgQEAKIHsKICAgICBQeV9zc2l6ZV90IHJlczsKIAotICAgIHJlcyA9IHNpemVvZihQeURlY09iamVjdCk7CisgICAgcmVzID0gX1B5T2JqZWN0X1NJWkUoUHlfVFlQRSh2KSk7CiAgICAgaWYgKG1wZF9pc2R5bmFtaWNfZGF0YShNUEQodikpKSB7CiAgICAgICAgIHJlcyArPSBNUEQodiktPmFsbG9jICogc2l6ZW9mKG1wZF91aW50X3QpOwogICAgIH0KQEAgLTU2NDAsNyArNTY0MCw3IEBACiAgICAgICAgICAgICBnb3RvIGVycm9yOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCiAgICAgICAgIH0KIAotICAgICAgICBBU1NJR05fUFRSKGNtLT5leCwgUHlFcnJfTmV3RXhjZXB0aW9uKChjaGFyICopY20tPmZxbmFtZSwgYmFzZSwgTlVMTCkpOworICAgICAgICBBU1NJR05fUFRSKGNtLT5leCwgUHlFcnJfTmV3RXhjZXB0aW9uKGNtLT5mcW5hbWUsIGJhc2UsIE5VTEwpKTsKICAgICAgICAgUHlfREVDUkVGKGJhc2UpOwogCiAgICAgICAgIC8qIGFkZCB0byBtb2R1bGUgKi8KQEAgLTU2NzIsNyArNTY3Miw3IEBACiAgICAgICAgICAgICBnb3RvIGVycm9yOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCiAgICAgICAgIH0KIAotICAgICAgICBBU1NJR05fUFRSKGNtLT5leCwgUHlFcnJfTmV3RXhjZXB0aW9uKChjaGFyICopY20tPmZxbmFtZSwgYmFzZSwgTlVMTCkpOworICAgICAgICBBU1NJR05fUFRSKGNtLT5leCwgUHlFcnJfTmV3RXhjZXB0aW9uKGNtLT5mcW5hbWUsIGJhc2UsIE5VTEwpKTsKICAgICAgICAgUHlfREVDUkVGKGJhc2UpOwogCiAgICAgICAgIFB5X0lOQ1JFRihjbS0+ZXgpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmggYi9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaAppbmRleCBhNjQ5MGI5Li43MTAyOWE5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaApAQCAtMTksMjYgKzE5LDMwIEBACiBQeURvY19TVFJWQVIoZG9jX19kZWNpbWFsLAogIkMgZGVjaW1hbCBhcml0aG1ldGljIG1vZHVsZSIpOwogCi1QeURvY19TVFJWQVIoZG9jX2dldGNvbnRleHQsIlxuXAotZ2V0Y29udGV4dCgpIC0gR2V0IHRoZSBjdXJyZW50IGRlZmF1bHQgY29udGV4dC5cblwKK1B5RG9jX1NUUlZBUihkb2NfZ2V0Y29udGV4dCwKKyJnZXRjb250ZXh0KCRtb2R1bGUsIC8pXG4tLVxuXG5cCitHZXQgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19zZXRjb250ZXh0LCJcblwKLXNldGNvbnRleHQoYykgLSBTZXQgYSBuZXcgZGVmYXVsdCBjb250ZXh0LlxuXAorUHlEb2NfU1RSVkFSKGRvY19zZXRjb250ZXh0LAorInNldGNvbnRleHQoJG1vZHVsZSwgY29udGV4dCwgLylcbi0tXG5cblwKK1NldCBhIG5ldyBkZWZhdWx0IGNvbnRleHQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2xvY2FsY29udGV4dCwiXG5cCi1sb2NhbGNvbnRleHQoY3R4PU5vbmUpIC0gUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgd2lsbCBzZXQgdGhlIGRlZmF1bHRcblwKLWNvbnRleHQgdG8gYSBjb3B5IG9mIGN0eCBvbiBlbnRyeSB0byB0aGUgd2l0aC1zdGF0ZW1lbnQgYW5kIHJlc3RvcmUgdGhlXG5cCi1wcmV2aW91cyBkZWZhdWx0IGNvbnRleHQgd2hlbiBleGl0aW5nIHRoZSB3aXRoLXN0YXRlbWVudC4gSWYgbm8gY29udGV4dCBpc1xuXAotc3BlY2lmaWVkLCBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlzIHVzZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2xvY2FsY29udGV4dCwKKyJsb2NhbGNvbnRleHQoJG1vZHVsZSwgLywgY3R4PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgdGhhdCB3aWxsIHNldCB0aGUgZGVmYXVsdCBjb250ZXh0IHRvIGEgY29weSBvZiBjdHhcblwKK29uIGVudHJ5IHRvIHRoZSB3aXRoLXN0YXRlbWVudCBhbmQgcmVzdG9yZSB0aGUgcHJldmlvdXMgZGVmYXVsdCBjb250ZXh0IHdoZW5cblwKK2V4aXRpbmcgdGhlIHdpdGgtc3RhdGVtZW50LiBJZiBubyBjb250ZXh0IGlzIHNwZWNpZmllZCwgYSBjb3B5IG9mIHRoZSBjdXJyZW50XG5cCitkZWZhdWx0IGNvbnRleHQgaXMgdXNlZC5cblwKIFxuIik7CiAKICNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCi1QeURvY19TVFJWQVIoZG9jX2llZWVfY29udGV4dCwiXG5cCi1JRUVFQ29udGV4dChiaXRzKSAtIFJldHVybiBhIGNvbnRleHQgb2JqZWN0IGluaXRpYWxpemVkIHRvIHRoZSBwcm9wZXIgdmFsdWVzIGZvclxuXAotb25lIG9mIHRoZSBJRUVFIGludGVyY2hhbmdlIGZvcm1hdHMuIFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzIgYW5kXG5cCi1sZXNzIHRoYW4gSUVFRV9DT05URVhUX01BWF9CSVRTLiBGb3IgdGhlIG1vc3QgY29tbW9uIHZhbHVlcywgdGhlIGNvbnN0YW50c1xuXAorUHlEb2NfU1RSVkFSKGRvY19pZWVlX2NvbnRleHQsCisiSUVFRUNvbnRleHQoJG1vZHVsZSwgYml0cywgLylcbi0tXG5cblwKK1JldHVybiBhIGNvbnRleHQgb2JqZWN0IGluaXRpYWxpemVkIHRvIHRoZSBwcm9wZXIgdmFsdWVzIGZvciBvbmUgb2YgdGhlXG5cCitJRUVFIGludGVyY2hhbmdlIGZvcm1hdHMuICBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyIGFuZCBsZXNzXG5cCit0aGFuIElFRUVfQ09OVEVYVF9NQVhfQklUUy4gIEZvciB0aGUgbW9zdCBjb21tb24gdmFsdWVzLCB0aGUgY29uc3RhbnRzXG5cCiBERUNJTUFMMzIsIERFQ0lNQUw2NCBhbmQgREVDSU1BTDEyOCBhcmUgcHJvdmlkZWQuXG5cCiBcbiIpOwogI2VuZGlmCkBAIC00OCwzMiArNTIsMzQgQEAKIC8qICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsIE9iamVjdCBhbmQgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi1QeURvY19TVFJWQVIoZG9jX2RlY2ltYWwsIlxuXAotRGVjaW1hbCh2YWx1ZT1cIjBcIiwgY29udGV4dD1Ob25lKTogQ29uc3RydWN0IGEgbmV3IERlY2ltYWwgb2JqZWN0LlxuXAotdmFsdWUgY2FuIGJlIGFuIGludGVnZXIsIHN0cmluZywgdHVwbGUsIG9yIGFub3RoZXIgRGVjaW1hbCBvYmplY3QuXG5cCi1JZiBubyB2YWx1ZSBpcyBnaXZlbiwgcmV0dXJuIERlY2ltYWwoJzAnKS4gVGhlIGNvbnRleHQgZG9lcyBub3QgYWZmZWN0XG5cCi10aGUgY29udmVyc2lvbiBhbmQgaXMgb25seSBwYXNzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBJbnZhbGlkT3BlcmF0aW9uXG5cCi10cmFwIGlzIGFjdGl2ZS5cblwKK1B5RG9jX1NUUlZBUihkb2NfZGVjaW1hbCwKKyJEZWNpbWFsKHZhbHVlPVwiMFwiLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitDb25zdHJ1Y3QgYSBuZXcgRGVjaW1hbCBvYmplY3QuICd2YWx1ZScgY2FuIGJlIGFuIGludGVnZXIsIHN0cmluZywgdHVwbGUsXG5cCitvciBhbm90aGVyIERlY2ltYWwgb2JqZWN0LiBJZiBubyB2YWx1ZSBpcyBnaXZlbiwgcmV0dXJuIERlY2ltYWwoJzAnKS4gVGhlXG5cCitjb250ZXh0IGRvZXMgbm90IGFmZmVjdCB0aGUgY29udmVyc2lvbiBhbmQgaXMgb25seSBwYXNzZWQgdG8gZGV0ZXJtaW5lIGlmXG5cCit0aGUgSW52YWxpZE9wZXJhdGlvbiB0cmFwIGlzIGFjdGl2ZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfYWRqdXN0ZWQsIlxuXAotYWRqdXN0ZWQoKSAtIFJldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2YgdGhlIG51bWJlci5cblwKLVxuXAotRGVmaW5lZCBhcyBleHAgKyBkaWdpdHMgLSAxLlxuXAorUHlEb2NfU1RSVkFSKGRvY19hZGp1c3RlZCwKKyJhZGp1c3RlZCgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2YgdGhlIG51bWJlci4gIERlZmluZWQgYXMgZXhwICsgZGlnaXRzIC0gMS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfYXNfdHVwbGUsIlxuXAotYXNfdHVwbGUoKSAtIFJldHVybiBhIHR1cGxlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIuXG5cCitQeURvY19TVFJWQVIoZG9jX2FzX3R1cGxlLAorImFzX3R1cGxlKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIGEgdHVwbGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlci5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY2Fub25pY2FsLCJcblwKLWNhbm9uaWNhbCgpIC0gUmV0dXJuIHRoZSBjYW5vbmljYWwgZW5jb2Rpbmcgb2YgdGhlIGFyZ3VtZW50LiBDdXJyZW50bHksXG5cCi10aGUgZW5jb2Rpbmcgb2YgYSBEZWNpbWFsIGluc3RhbmNlIGlzIGFsd2F5cyBjYW5vbmljYWwsIHNvIHRoaXMgb3BlcmF0aW9uXG5cCi1yZXR1cm5zIGl0cyBhcmd1bWVudCB1bmNoYW5nZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2Nhbm9uaWNhbCwKKyJjYW5vbmljYWwoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIGNhbm9uaWNhbCBlbmNvZGluZyBvZiB0aGUgYXJndW1lbnQuICBDdXJyZW50bHksIHRoZSBlbmNvZGluZ1xuXAorb2YgYSBEZWNpbWFsIGluc3RhbmNlIGlzIGFsd2F5cyBjYW5vbmljYWwsIHNvIHRoaXMgb3BlcmF0aW9uIHJldHVybnMgaXRzXG5cCithcmd1bWVudCB1bmNoYW5nZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2NvbXBhcmUsIlxuXAotY29tcGFyZShvdGhlciwgY29udGV4dD1Ob25lKSAtIENvbXBhcmUgc2VsZiB0byBvdGhlci4gUmV0dXJuIGEgZGVjaW1hbCB2YWx1ZTpcblwKK1B5RG9jX1NUUlZBUihkb2NfY29tcGFyZSwKKyJjb21wYXJlKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorQ29tcGFyZSBzZWxmIHRvIG90aGVyLiAgUmV0dXJuIGEgZGVjaW1hbCB2YWx1ZTpcblwKIFxuXAogICAgIGEgb3IgYiBpcyBhIE5hTiA9PT4gRGVjaW1hbCgnTmFOJylcblwKICAgICBhIDwgYiAgICAgICAgICAgPT0+IERlY2ltYWwoJy0xJylcblwKQEAgLTgxLDE3ICs4NywxOCBAQAogICAgIGEgPiBiICAgICAgICAgICA9PT4gRGVjaW1hbCgnMScpXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2NvbXBhcmVfc2lnbmFsLCJcblwKLWNvbXBhcmVfc2lnbmFsKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gSWRlbnRpY2FsIHRvIGNvbXBhcmUsIGV4Y2VwdCB0aGF0XG5cCi1hbGwgTmFOcyBzaWduYWwuXG5cCitQeURvY19TVFJWQVIoZG9jX2NvbXBhcmVfc2lnbmFsLAorImNvbXBhcmVfc2lnbmFsKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorSWRlbnRpY2FsIHRvIGNvbXBhcmUsIGV4Y2VwdCB0aGF0IGFsbCBOYU5zIHNpZ25hbC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY29tcGFyZV90b3RhbCwiXG5cCi1jb21wYXJlX3RvdGFsKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gQ29tcGFyZSB0d28gb3BlcmFuZHMgdXNpbmcgdGhlaXJcblwKLWFic3RyYWN0IHJlcHJlc2VudGF0aW9uIHJhdGhlciB0aGFuIHRoZWlyIG51bWVyaWNhbCB2YWx1ZS4gU2ltaWxhciB0byB0aGVcblwKLWNvbXBhcmUoKSBtZXRob2QsIGJ1dCB0aGUgcmVzdWx0IGdpdmVzIGEgdG90YWwgb3JkZXJpbmcgb24gRGVjaW1hbCBpbnN0YW5jZXMuXG5cCi1Ud28gRGVjaW1hbCBpbnN0YW5jZXMgd2l0aCB0aGUgc2FtZSBudW1lcmljIHZhbHVlIGJ1dCBkaWZmZXJlbnQgcmVwcmVzZW50YXRpb25zXG5cCi1jb21wYXJlIHVuZXF1YWwgaW4gdGhpcyBvcmRlcmluZzpcblwKK1B5RG9jX1NUUlZBUihkb2NfY29tcGFyZV90b3RhbCwKKyJjb21wYXJlX3RvdGFsKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorQ29tcGFyZSB0d28gb3BlcmFuZHMgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24gcmF0aGVyIHRoYW5cblwKK3RoZWlyIG51bWVyaWNhbCB2YWx1ZS4gIFNpbWlsYXIgdG8gdGhlIGNvbXBhcmUoKSBtZXRob2QsIGJ1dCB0aGUgcmVzdWx0XG5cCitnaXZlcyBhIHRvdGFsIG9yZGVyaW5nIG9uIERlY2ltYWwgaW5zdGFuY2VzLiAgVHdvIERlY2ltYWwgaW5zdGFuY2VzIHdpdGhcblwKK3RoZSBzYW1lIG51bWVyaWMgdmFsdWUgYnV0IGRpZmZlcmVudCByZXByZXNlbnRhdGlvbnMgY29tcGFyZSB1bmVxdWFsXG5cCitpbiB0aGlzIG9yZGVyaW5nOlxuXAogXG5cCiAgICAgPj4+IERlY2ltYWwoJzEyLjAnKS5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyJykpXG5cCiAgICAgRGVjaW1hbCgnLTEnKVxuXApAQCAtMTA3LDM2ICsxMTQsMzkgQEAKIEludmFsaWRPcGVyYXRpb24gaWYgdGhlIHNlY29uZCBvcGVyYW5kIGNhbm5vdCBiZSBjb252ZXJ0ZWQgZXhhY3RseS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY29tcGFyZV90b3RhbF9tYWcsIlxuXAotY29tcGFyZV90b3RhbF9tYWcob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBDb21wYXJlIHR3byBvcGVyYW5kcyB1c2luZyB0aGVpclxuXAotYWJzdHJhY3QgcmVwcmVzZW50YXRpb24gcmF0aGVyIHRoYW4gdGhlaXIgdmFsdWUgYXMgaW4gY29tcGFyZV90b3RhbCgpLCBidXRcblwKLWlnbm9yaW5nIHRoZSBzaWduIG9mIGVhY2ggb3BlcmFuZC4geC5jb21wYXJlX3RvdGFsX21hZyh5KSBpcyBlcXVpdmFsZW50IHRvXG5cCi14LmNvcHlfYWJzKCkuY29tcGFyZV90b3RhbCh5LmNvcHlfYWJzKCkpLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jb21wYXJlX3RvdGFsX21hZywKKyJjb21wYXJlX3RvdGFsX21hZygkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK0NvbXBhcmUgdHdvIG9wZXJhbmRzIHVzaW5nIHRoZWlyIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uIHJhdGhlciB0aGFuIHRoZWlyXG5cCit2YWx1ZSBhcyBpbiBjb21wYXJlX3RvdGFsKCksIGJ1dCBpZ25vcmluZyB0aGUgc2lnbiBvZiBlYWNoIG9wZXJhbmQuXG5cCitcblwKK3guY29tcGFyZV90b3RhbF9tYWcoeSkgaXMgZXF1aXZhbGVudCB0byB4LmNvcHlfYWJzKCkuY29tcGFyZV90b3RhbCh5LmNvcHlfYWJzKCkpLlxuXAogXG5cCiBUaGlzIG9wZXJhdGlvbiBpcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZFxuXAogYW5kIG5vIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4gQXMgYW4gZXhjZXB0aW9uLCB0aGUgQyB2ZXJzaW9uIG1heSByYWlzZVxuXAogSW52YWxpZE9wZXJhdGlvbiBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBleGFjdGx5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jb25qdWdhdGUsIlxuXAotY29uanVnYXRlKCkgLSBSZXR1cm4gc2VsZi5cblwKK1B5RG9jX1NUUlZBUihkb2NfY29uanVnYXRlLAorImNvbmp1Z2F0ZSgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBzZWxmLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jb3B5X2FicywiXG5cCi1jb3B5X2FicygpIC0gUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgYXJndW1lbnQuIFRoaXMgb3BlcmF0aW9uXG5cCi1pcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm8gcm91bmRpbmdcblwKLWlzIHBlcmZvcm1lZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY29weV9hYnMsCisiY29weV9hYnMoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBhcmd1bWVudC4gIFRoaXMgb3BlcmF0aW9uIGlzIHVuYWZmZWN0ZWQgYnlcblwKK2NvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm8gcm91bmRpbmcgaXMgcGVyZm9ybWVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jb3B5X25lZ2F0ZSwiXG5cCi1jb3B5X25lZ2F0ZSgpIC0gUmV0dXJuIHRoZSBuZWdhdGlvbiBvZiB0aGUgYXJndW1lbnQuIFRoaXMgb3BlcmF0aW9uIGlzXG5cCi11bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm8gcm91bmRpbmdcblwKLWlzIHBlcmZvcm1lZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY29weV9uZWdhdGUsCisiY29weV9uZWdhdGUoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIG5lZ2F0aW9uIG9mIHRoZSBhcmd1bWVudC4gIFRoaXMgb3BlcmF0aW9uIGlzIHVuYWZmZWN0ZWQgYnkgY29udGV4dFxuXAorYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm8gcm91bmRpbmcgaXMgcGVyZm9ybWVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jb3B5X3NpZ24sIlxuXAotY29weV9zaWduKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIGEgY29weSBvZiB0aGUgZmlyc3Qgb3BlcmFuZCB3aXRoXG5cCi10aGUgc2lnbiBzZXQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIHNpZ24gb2YgdGhlIHNlY29uZCBvcGVyYW5kLiBGb3IgZXhhbXBsZTpcblwKK1B5RG9jX1NUUlZBUihkb2NfY29weV9zaWduLAorImNvcHlfc2lnbigkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1JldHVybiBhIGNvcHkgb2YgdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgc2lnbiBzZXQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlXG5cCitzaWduIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4gRm9yIGV4YW1wbGU6XG5cCiBcblwKICAgICA+Pj4gRGVjaW1hbCgnMi4zJykuY29weV9zaWduKERlY2ltYWwoJy0xLjUnKSlcblwKICAgICBEZWNpbWFsKCctMi4zJylcblwKQEAgLTE0NiwxNCArMTU2LDE2IEBACiBJbnZhbGlkT3BlcmF0aW9uIGlmIHRoZSBzZWNvbmQgb3BlcmFuZCBjYW5ub3QgYmUgY29udmVydGVkIGV4YWN0bHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2V4cCwiXG5cCi1leHAoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIChuYXR1cmFsKSBleHBvbmVudGlhbCBmdW5jdGlvblxuXAotZSoqeCBhdCB0aGUgZ2l2ZW4gbnVtYmVyLiBUaGUgZnVuY3Rpb24gYWx3YXlzIHVzZXMgdGhlIFJPVU5EX0hBTEZfRVZFTiBtb2RlXG5cCi1hbmQgdGhlIHJlc3VsdCBpcyBjb3JyZWN0bHkgcm91bmRlZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfZXhwLAorImV4cCgkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgKG5hdHVyYWwpIGV4cG9uZW50aWFsIGZ1bmN0aW9uIGUqKnggYXQgdGhlIGdpdmVuXG5cCitudW1iZXIuICBUaGUgZnVuY3Rpb24gYWx3YXlzIHVzZXMgdGhlIFJPVU5EX0hBTEZfRVZFTiBtb2RlIGFuZCB0aGUgcmVzdWx0XG5cCitpcyBjb3JyZWN0bHkgcm91bmRlZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfZnJvbV9mbG9hdCwiXG5cCi1mcm9tX2Zsb2F0KGYpIC0gQ2xhc3MgbWV0aG9kIHRoYXQgY29udmVydHMgYSBmbG9hdCB0byBhIGRlY2ltYWwgbnVtYmVyLCBleGFjdGx5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19mcm9tX2Zsb2F0LAorImZyb21fZmxvYXQoJHR5cGUsIGYsIC8pXG4tLVxuXG5cCitDbGFzcyBtZXRob2QgdGhhdCBjb252ZXJ0cyBhIGZsb2F0IHRvIGEgZGVjaW1hbCBudW1iZXIsIGV4YWN0bHkuXG5cCiBTaW5jZSAwLjEgaXMgbm90IGV4YWN0bHkgcmVwcmVzZW50YWJsZSBpbiBiaW5hcnkgZmxvYXRpbmcgcG9pbnQsXG5cCiBEZWNpbWFsLmZyb21fZmxvYXQoMC4xKSBpcyBub3QgdGhlIHNhbWUgYXMgRGVjaW1hbCgnMC4xJykuXG5cCiBcblwKQEAgLTE2OCwxNTUgKzE4MCwxNzYgQEAKIFxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19mbWEsIlxuXAotZm1hKG90aGVyLCB0aGlyZCwgY29udGV4dD1Ob25lKSAtIEZ1c2VkIG11bHRpcGx5LWFkZC4gUmV0dXJuIHNlbGYqb3RoZXIrdGhpcmRcblwKLXdpdGggbm8gcm91bmRpbmcgb2YgdGhlIGludGVybWVkaWF0ZSBwcm9kdWN0IHNlbGYqb3RoZXIuXG5cCitQeURvY19TVFJWQVIoZG9jX2ZtYSwKKyJmbWEoJHNlbGYsIC8sIG90aGVyLCB0aGlyZCwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorRnVzZWQgbXVsdGlwbHktYWRkLiAgUmV0dXJuIHNlbGYqb3RoZXIrdGhpcmQgd2l0aCBubyByb3VuZGluZyBvZiB0aGVcblwKK2ludGVybWVkaWF0ZSBwcm9kdWN0IHNlbGYqb3RoZXIuXG5cCiBcblwKICAgICA+Pj4gRGVjaW1hbCgyKS5mbWEoMywgNSlcblwKICAgICBEZWNpbWFsKCcxMScpXG5cCiBcblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfaXNfY2Fub25pY2FsLCJcblwKLWlzX2Nhbm9uaWNhbCgpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGNhbm9uaWNhbCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotQ3VycmVudGx5LCBhIERlY2ltYWwgaW5zdGFuY2UgaXMgYWx3YXlzIGNhbm9uaWNhbCwgc28gdGhpcyBvcGVyYXRpb24gYWx3YXlzXG5cCi1yZXR1cm5zIFRydWUuXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX2Nhbm9uaWNhbCwKKyJpc19jYW5vbmljYWwoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgY2Fub25pY2FsIGFuZCBGYWxzZSBvdGhlcndpc2UuICBDdXJyZW50bHksXG5cCithIERlY2ltYWwgaW5zdGFuY2UgaXMgYWx3YXlzIGNhbm9uaWNhbCwgc28gdGhpcyBvcGVyYXRpb24gYWx3YXlzIHJldHVybnNcblwKK1RydWUuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2lzX2Zpbml0ZSwiXG5cCi1pc19maW5pdGUoKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIGZpbml0ZSBudW1iZXIsIGFuZCBGYWxzZSBpZiB0aGVcblwKLWFyZ3VtZW50IGlzIGluZmluaXRlIG9yIGEgTmFOLlxuXAorUHlEb2NfU1RSVkFSKGRvY19pc19maW5pdGUsCisiaXNfZmluaXRlKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgZmluaXRlIG51bWJlciwgYW5kIEZhbHNlIGlmIHRoZSBhcmd1bWVudFxuXAoraXMgaW5maW5pdGUgb3IgYSBOYU4uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2lzX2luZmluaXRlLCJcblwKLWlzX2luZmluaXRlKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgZWl0aGVyIHBvc2l0aXZlIG9yIG5lZ2F0aXZlXG5cCi1pbmZpbml0eSBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotXG4iKTsKLQotUHlEb2NfU1RSVkFSKGRvY19pc19uYW4sIlxuXAotaXNfbmFuKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSAocXVpZXQgb3Igc2lnbmFsaW5nKSBOYU4gYW5kXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX2luZmluaXRlLAorImlzX2luZmluaXRlKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGVpdGhlciBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbmZpbml0eSBhbmRcblwKIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfaXNfbm9ybWFsLCJcblwKLWlzX25vcm1hbChjb250ZXh0PU5vbmUpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgbm9ybWFsIGZpbml0ZVxuXAotbm9uLXplcm8gbnVtYmVyIHdpdGggYW4gYWRqdXN0ZWQgZXhwb25lbnQgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIEVtaW4uXG5cCi1SZXR1cm4gRmFsc2UgaWYgdGhlIGFyZ3VtZW50IGlzIHplcm8sIHN1Ym5vcm1hbCwgaW5maW5pdGUgb3IgYSBOYU4uXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX25hbiwKKyJpc19uYW4oJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSAocXVpZXQgb3Igc2lnbmFsaW5nKSBOYU4gYW5kIEZhbHNlXG5cCitvdGhlcndpc2UuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2lzX3FuYW4sIlxuXAotaXNfcW5hbigpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgcXVpZXQgTmFOLCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19pc19ub3JtYWwsCisiaXNfbm9ybWFsKCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSBub3JtYWwgZmluaXRlIG5vbi16ZXJvIG51bWJlciB3aXRoIGFuXG5cCithZGp1c3RlZCBleHBvbmVudCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gRW1pbi4gUmV0dXJuIEZhbHNlIGlmIHRoZVxuXAorYXJndW1lbnQgaXMgemVybywgc3Vibm9ybWFsLCBpbmZpbml0ZSBvciBhIE5hTi5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfaXNfc2lnbmVkLCJcblwKLWlzX3NpZ25lZCgpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGhhcyBhIG5lZ2F0aXZlIHNpZ24gYW5kXG5cCi1GYWxzZSBvdGhlcndpc2UuIE5vdGUgdGhhdCBib3RoIHplcm9zIGFuZCBOYU5zIGNhbiBjYXJyeSBzaWducy5cblwKK1B5RG9jX1NUUlZBUihkb2NfaXNfcW5hbiwKKyJpc19xbmFuKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgcXVpZXQgTmFOLCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19pc19zbmFuLCJcblwKLWlzX3NuYW4oKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIHNpZ25hbGluZyBOYU4gYW5kIEZhbHNlIG90aGVyd2lzZS5cblwKK1B5RG9jX1NUUlZBUihkb2NfaXNfc2lnbmVkLAorImlzX3NpZ25lZCgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBoYXMgYSBuZWdhdGl2ZSBzaWduIGFuZCBGYWxzZSBvdGhlcndpc2UuXG5cCitOb3RlIHRoYXQgYm90aCB6ZXJvcyBhbmQgTmFOcyBjYW4gY2Fycnkgc2lnbnMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2lzX3N1Ym5vcm1hbCwiXG5cCi1pc19zdWJub3JtYWwoY29udGV4dD1Ob25lKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBzdWJub3JtYWwsIGFuZFxuXAotRmFsc2Ugb3RoZXJ3aXNlLiBBIG51bWJlciBpcyBzdWJub3JtYWwgaWYgaXQgaXMgbm9uLXplcm8sIGZpbml0ZSwgYW5kIGhhcyBhblxuXAotYWRqdXN0ZWQgZXhwb25lbnQgbGVzcyB0aGFuIEVtaW4uXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX3NuYW4sCisiaXNfc25hbigkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIHNpZ25hbGluZyBOYU4gYW5kIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfaXNfemVybywiXG5cCi1pc196ZXJvKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSAocG9zaXRpdmUgb3IgbmVnYXRpdmUpIHplcm8gYW5kXG5cCi1GYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX3N1Ym5vcm1hbCwKKyJpc19zdWJub3JtYWwoJHNlbGYsIC8sIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBzdWJub3JtYWwsIGFuZCBGYWxzZSBvdGhlcndpc2UuIEEgbnVtYmVyIGlzXG5cCitzdWJub3JtYWwgaWYgaXQgaXMgbm9uLXplcm8sIGZpbml0ZSwgYW5kIGhhcyBhbiBhZGp1c3RlZCBleHBvbmVudCBsZXNzXG5cCit0aGFuIEVtaW4uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2xuLCJcblwKLWxuKGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLlxuXAotVGhlIGZ1bmN0aW9uIGFsd2F5cyB1c2VzIHRoZSBST1VORF9IQUxGX0VWRU4gbW9kZSBhbmQgdGhlIHJlc3VsdCBpc1xuXAotY29ycmVjdGx5IHJvdW5kZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX3plcm8sCisiaXNfemVybygkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSkgemVybyBhbmQgRmFsc2VcblwKK290aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbG9nMTAsIlxuXAotbG9nMTAoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgYmFzZSB0ZW4gbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLlxuXAotVGhlIGZ1bmN0aW9uIGFsd2F5cyB1c2VzIHRoZSBST1VORF9IQUxGX0VWRU4gbW9kZSBhbmQgdGhlIHJlc3VsdCBpc1xuXAotY29ycmVjdGx5IHJvdW5kZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2xuLAorImxuKCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLiBUaGUgZnVuY3Rpb24gYWx3YXlzXG5cCit1c2VzIHRoZSBST1VORF9IQUxGX0VWRU4gbW9kZSBhbmQgdGhlIHJlc3VsdCBpcyBjb3JyZWN0bHkgcm91bmRlZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbG9nYiwiXG5cCi1sb2diKGNvbnRleHQ9Tm9uZSkgLSBGb3IgYSBub24temVybyBudW1iZXIsIHJldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnRcblwKLW9mIHRoZSBvcGVyYW5kIGFzIGEgRGVjaW1hbCBpbnN0YW5jZS4gSWYgdGhlIG9wZXJhbmQgaXMgYSB6ZXJvLCB0aGVuXG5cCi1EZWNpbWFsKCctSW5maW5pdHknKSBpcyByZXR1cm5lZCBhbmQgdGhlIERpdmlzaW9uQnlaZXJvIGNvbmRpdGlvbiBpc1xuXAotcmFpc2VkLiBJZiB0aGUgb3BlcmFuZCBpcyBhbiBpbmZpbml0eSB0aGVuIERlY2ltYWwoJ0luZmluaXR5JykgaXMgcmV0dXJuZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2xvZzEwLAorImxvZzEwKCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIGJhc2UgdGVuIGxvZ2FyaXRobSBvZiB0aGUgb3BlcmFuZC4gVGhlIGZ1bmN0aW9uIGFsd2F5cyB1c2VzIHRoZVxuXAorUk9VTkRfSEFMRl9FVkVOIG1vZGUgYW5kIHRoZSByZXN1bHQgaXMgY29ycmVjdGx5IHJvdW5kZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2xvZ2ljYWxfYW5kLCJcblwKLWxvZ2ljYWxfYW5kKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSBkaWdpdC13aXNlIGFuZCBvZiB0aGUgdHdvXG5cCi0obG9naWNhbCkgb3BlcmFuZHMuXG5cCitQeURvY19TVFJWQVIoZG9jX2xvZ2IsCisibG9nYigkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorRm9yIGEgbm9uLXplcm8gbnVtYmVyLCByZXR1cm4gdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHRoZSBvcGVyYW5kIGFzIGFcblwKK0RlY2ltYWwgaW5zdGFuY2UuICBJZiB0aGUgb3BlcmFuZCBpcyBhIHplcm8sIHRoZW4gRGVjaW1hbCgnLUluZmluaXR5JykgaXNcblwKK3JldHVybmVkIGFuZCB0aGUgRGl2aXNpb25CeVplcm8gY29uZGl0aW9uIGlzIHJhaXNlZC4gSWYgdGhlIG9wZXJhbmQgaXNcblwKK2FuIGluZmluaXR5IHRoZW4gRGVjaW1hbCgnSW5maW5pdHknKSBpcyByZXR1cm5lZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbG9naWNhbF9pbnZlcnQsIlxuXAotbG9naWNhbF9pbnZlcnQoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgZGlnaXQtd2lzZSBpbnZlcnNpb24gb2YgdGhlXG5cCi0obG9naWNhbCkgb3BlcmFuZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfbG9naWNhbF9hbmQsCisibG9naWNhbF9hbmQoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIGRpZ2l0LXdpc2UgJ2FuZCcgb2YgdGhlIHR3byAobG9naWNhbCkgb3BlcmFuZHMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2xvZ2ljYWxfb3IsIlxuXAotbG9naWNhbF9vcihvdGhlciwgY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgZGlnaXQtd2lzZSBvciBvZiB0aGUgdHdvXG5cCi0obG9naWNhbCkgb3BlcmFuZHMuXG5cCitQeURvY19TVFJWQVIoZG9jX2xvZ2ljYWxfaW52ZXJ0LAorImxvZ2ljYWxfaW52ZXJ0KCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIGRpZ2l0LXdpc2UgaW52ZXJzaW9uIG9mIHRoZSAobG9naWNhbCkgb3BlcmFuZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbG9naWNhbF94b3IsIlxuXAotbG9naWNhbF94b3Iob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIGRpZ2l0LXdpc2UgZXhjbHVzaXZlIG9yIG9mIHRoZVxuXAotdHdvIChsb2dpY2FsKSBvcGVyYW5kcy5cblwKK1B5RG9jX1NUUlZBUihkb2NfbG9naWNhbF9vciwKKyJsb2dpY2FsX29yKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSBkaWdpdC13aXNlICdvcicgb2YgdGhlIHR3byAobG9naWNhbCkgb3BlcmFuZHMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX21heCwiXG5cCi1tYXgob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBNYXhpbXVtIG9mIHNlbGYgYW5kIG90aGVyLiBJZiBvbmUgb3BlcmFuZCBpcyBhXG5cCi1xdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpcyBudW1lcmljLCB0aGUgbnVtZXJpYyBvcGVyYW5kIGlzIHJldHVybmVkLlxuXAorUHlEb2NfU1RSVkFSKGRvY19sb2dpY2FsX3hvciwKKyJsb2dpY2FsX3hvcigkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1JldHVybiB0aGUgZGlnaXQtd2lzZSAnZXhjbHVzaXZlIG9yJyBvZiB0aGUgdHdvIChsb2dpY2FsKSBvcGVyYW5kcy5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbWF4X21hZywiXG5cCi1tYXhfbWFnKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gU2ltaWxhciB0byB0aGUgbWF4KCkgbWV0aG9kLCBidXQgdGhlXG5cCi1jb21wYXJpc29uIGlzIGRvbmUgdXNpbmcgdGhlIGFic29sdXRlIHZhbHVlcyBvZiB0aGUgb3BlcmFuZHMuXG5cCitQeURvY19TVFJWQVIoZG9jX21heCwKKyJtYXgoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitNYXhpbXVtIG9mIHNlbGYgYW5kIG90aGVyLiAgSWYgb25lIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpc1xuXAorbnVtZXJpYywgdGhlIG51bWVyaWMgb3BlcmFuZCBpcyByZXR1cm5lZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbWluLCJcblwKLW1pbihvdGhlciwgY29udGV4dD1Ob25lKSAtIE1pbmltdW0gb2Ygc2VsZiBhbmQgb3RoZXIuIElmIG9uZSBvcGVyYW5kIGlzIGFcblwKLXF1aWV0IE5hTiBhbmQgdGhlIG90aGVyIGlzIG51bWVyaWMsIHRoZSBudW1lcmljIG9wZXJhbmQgaXMgcmV0dXJuZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX21heF9tYWcsCisibWF4X21hZygkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1NpbWlsYXIgdG8gdGhlIG1heCgpIG1ldGhvZCwgYnV0IHRoZSBjb21wYXJpc29uIGlzIGRvbmUgdXNpbmcgdGhlIGFic29sdXRlXG5cCit2YWx1ZXMgb2YgdGhlIG9wZXJhbmRzLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19taW5fbWFnLCJcblwKLW1pbl9tYWcob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBTaW1pbGFyIHRvIHRoZSBtaW4oKSBtZXRob2QsIGJ1dCB0aGVcblwKLWNvbXBhcmlzb24gaXMgZG9uZSB1c2luZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZSBvcGVyYW5kcy5cblwKK1B5RG9jX1NUUlZBUihkb2NfbWluLAorIm1pbigkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK01pbmltdW0gb2Ygc2VsZiBhbmQgb3RoZXIuIElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIGFuZCB0aGUgb3RoZXIgaXNcblwKK251bWVyaWMsIHRoZSBudW1lcmljIG9wZXJhbmQgaXMgcmV0dXJuZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX25leHRfbWludXMsIlxuXAotbmV4dF9taW51cyhjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSBsYXJnZXN0IG51bWJlciByZXByZXNlbnRhYmxlIGluIHRoZVxuXAotZ2l2ZW4gY29udGV4dCAob3IgaW4gdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlmIG5vIGNvbnRleHQgaXMgZ2l2ZW4pIHRoYXRcblwKLWlzIHNtYWxsZXIgdGhhbiB0aGUgZ2l2ZW4gb3BlcmFuZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfbWluX21hZywKKyJtaW5fbWFnKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorU2ltaWxhciB0byB0aGUgbWluKCkgbWV0aG9kLCBidXQgdGhlIGNvbXBhcmlzb24gaXMgZG9uZSB1c2luZyB0aGUgYWJzb2x1dGVcblwKK3ZhbHVlcyBvZiB0aGUgb3BlcmFuZHMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX25leHRfcGx1cywiXG5cCi1uZXh0X3BsdXMoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgc21hbGxlc3QgbnVtYmVyIHJlcHJlc2VudGFibGUgaW4gdGhlXG5cCi1naXZlbiBjb250ZXh0IChvciBpbiB0aGUgY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaWYgbm8gY29udGV4dCBpcyBnaXZlbikgdGhhdFxuXAotaXMgbGFyZ2VyIHRoYW4gdGhlIGdpdmVuIG9wZXJhbmQuXG5cCitQeURvY19TVFJWQVIoZG9jX25leHRfbWludXMsCisibmV4dF9taW51cygkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSBsYXJnZXN0IG51bWJlciByZXByZXNlbnRhYmxlIGluIHRoZSBnaXZlbiBjb250ZXh0IChvciBpbiB0aGVcblwKK2N1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlmIG5vIGNvbnRleHQgaXMgZ2l2ZW4pIHRoYXQgaXMgc21hbGxlciB0aGFuIHRoZVxuXAorZ2l2ZW4gb3BlcmFuZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbmV4dF90b3dhcmQsIlxuXAotbmV4dF90b3dhcmQob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBJZiB0aGUgdHdvIG9wZXJhbmRzIGFyZSB1bmVxdWFsLCByZXR1cm5cblwKLXRoZSBudW1iZXIgY2xvc2VzdCB0byB0aGUgZmlyc3Qgb3BlcmFuZCBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC5cblwKLUlmIGJvdGggb3BlcmFuZHMgYXJlIG51bWVyaWNhbGx5IGVxdWFsLCByZXR1cm4gYSBjb3B5IG9mIHRoZSBmaXJzdCBvcGVyYW5kXG5cCi13aXRoIHRoZSBzaWduIHNldCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgc2lnbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuXG5cCitQeURvY19TVFJWQVIoZG9jX25leHRfcGx1cywKKyJuZXh0X3BsdXMoJHNlbGYsIC8sIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1JldHVybiB0aGUgc21hbGxlc3QgbnVtYmVyIHJlcHJlc2VudGFibGUgaW4gdGhlIGdpdmVuIGNvbnRleHQgKG9yIGluIHRoZVxuXAorY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaWYgbm8gY29udGV4dCBpcyBnaXZlbikgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGVcblwKK2dpdmVuIG9wZXJhbmQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX25vcm1hbGl6ZSwiXG5cCi1ub3JtYWxpemUoY29udGV4dD1Ob25lKSAtIE5vcm1hbGl6ZSB0aGUgbnVtYmVyIGJ5IHN0cmlwcGluZyB0aGUgcmlnaHRtb3N0XG5cCi10cmFpbGluZyB6ZXJvcyBhbmQgY29udmVydGluZyBhbnkgcmVzdWx0IGVxdWFsIHRvIERlY2ltYWwoJzAnKSB0byBEZWNpbWFsKCcwZTAnKS5cblwKLVVzZWQgZm9yIHByb2R1Y2luZyBjYW5vbmljYWwgdmFsdWVzIGZvciBtZW1iZXJzIG9mIGFuIGVxdWl2YWxlbmNlIGNsYXNzLiBGb3JcblwKLWV4YW1wbGUsIERlY2ltYWwoJzMyLjEwMCcpIGFuZCBEZWNpbWFsKCcwLjMyMTAwMGUrMicpIGJvdGggbm9ybWFsaXplIHRvIHRoZVxuXAotZXF1aXZhbGVudCB2YWx1ZSBEZWNpbWFsKCczMi4xJykuXG5cCitQeURvY19TVFJWQVIoZG9jX25leHRfdG93YXJkLAorIm5leHRfdG93YXJkKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorSWYgdGhlIHR3byBvcGVyYW5kcyBhcmUgdW5lcXVhbCwgcmV0dXJuIHRoZSBudW1iZXIgY2xvc2VzdCB0byB0aGUgZmlyc3RcblwKK29wZXJhbmQgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuICBJZiBib3RoIG9wZXJhbmRzIGFyZVxuXAorbnVtZXJpY2FsbHkgZXF1YWwsIHJldHVybiBhIGNvcHkgb2YgdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgc2lnbiBzZXRcblwKK3RvIGJlIHRoZSBzYW1lIGFzIHRoZSBzaWduIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbnVtYmVyX2NsYXNzLCJcblwKLW51bWJlcl9jbGFzcyhjb250ZXh0PU5vbmUpIC0gUmV0dXJuIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGNsYXNzIG9mIHRoZVxuXAotb3BlcmFuZC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHRlbiBzdHJpbmdzOlxuXAorUHlEb2NfU1RSVkFSKGRvY19ub3JtYWxpemUsCisibm9ybWFsaXplKCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitOb3JtYWxpemUgdGhlIG51bWJlciBieSBzdHJpcHBpbmcgdGhlIHJpZ2h0bW9zdCB0cmFpbGluZyB6ZXJvcyBhbmRcblwKK2NvbnZlcnRpbmcgYW55IHJlc3VsdCBlcXVhbCB0byBEZWNpbWFsKCcwJykgdG8gRGVjaW1hbCgnMGUwJykuICBVc2VkXG5cCitmb3IgcHJvZHVjaW5nIGNhbm9uaWNhbCB2YWx1ZXMgZm9yIG1lbWJlcnMgb2YgYW4gZXF1aXZhbGVuY2UgY2xhc3MuXG5cCitGb3IgZXhhbXBsZSwgRGVjaW1hbCgnMzIuMTAwJykgYW5kIERlY2ltYWwoJzAuMzIxMDAwZSsyJykgYm90aCBub3JtYWxpemVcblwKK3RvIHRoZSBlcXVpdmFsZW50IHZhbHVlIERlY2ltYWwoJzMyLjEnKS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbnVtYmVyX2NsYXNzLAorIm51bWJlcl9jbGFzcygkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGNsYXNzIG9mIHRoZSBvcGVyYW5kLiAgVGhlIHJldHVybmVkIHZhbHVlXG5cCitpcyBvbmUgb2YgdGhlIGZvbGxvd2luZyB0ZW4gc3RyaW5nczpcblwKIFxuXAogICAgICogJy1JbmZpbml0eScsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBuZWdhdGl2ZSBpbmZpbml0eS5cblwKICAgICAqICctTm9ybWFsJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgbmVnYXRpdmUgbm9ybWFsIG51bWJlci5cblwKQEAgLTMzMSw5ICszNjQsMTAgQEAKIFxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19xdWFudGl6ZSwiXG5cCi1xdWFudGl6ZShleHAsIHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byB0aGVcblwKLWZpcnN0IG9wZXJhbmQgYWZ0ZXIgcm91bmRpbmcgYW5kIGhhdmluZyB0aGUgZXhwb25lbnQgb2YgdGhlIHNlY29uZCBvcGVyYW5kLlxuXAorUHlEb2NfU1RSVkFSKGRvY19xdWFudGl6ZSwKKyJxdWFudGl6ZSgkc2VsZiwgLywgZXhwLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byB0aGUgZmlyc3Qgb3BlcmFuZCBhZnRlciByb3VuZGluZyBhbmQgaGF2aW5nIHRoZVxuXAorZXhwb25lbnQgb2YgdGhlIHNlY29uZCBvcGVyYW5kLlxuXAogXG5cCiAgICAgPj4+IERlY2ltYWwoJzEuNDE0MjEzNTYnKS5xdWFudGl6ZShEZWNpbWFsKCcxLjAwMCcpKVxuXAogICAgIERlY2ltYWwoJzEuNDE0JylcblwKQEAgLTM1MiwxMDMgKzM4NiwxMDkgQEAKIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgcm91bmRpbmcgbW9kZSBvZiB0aGUgY3VycmVudCB0aHJlYWQncyBjb250ZXh0IGlzIHVzZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3JhZGl4LCJcblwKLXJhZGl4KCkgLSBSZXR1cm4gRGVjaW1hbCgxMCksIHRoZSByYWRpeCAoYmFzZSkgaW4gd2hpY2ggdGhlIERlY2ltYWwgY2xhc3MgZG9lc1xuXAorUHlEb2NfU1RSVkFSKGRvY19yYWRpeCwKKyJyYWRpeCgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBEZWNpbWFsKDEwKSwgdGhlIHJhZGl4IChiYXNlKSBpbiB3aGljaCB0aGUgRGVjaW1hbCBjbGFzcyBkb2VzXG5cCiBhbGwgaXRzIGFyaXRobWV0aWMuIEluY2x1ZGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHNwZWNpZmljYXRpb24uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3JlbWFpbmRlcl9uZWFyLCJcblwKLXJlbWFpbmRlcl9uZWFyKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSByZW1haW5kZXIgZnJvbSBkaXZpZGluZ1xuXAotc2VsZiBieSBvdGhlci4gVGhpcyBkaWZmZXJzIGZyb20gc2VsZiAlIG90aGVyIGluIHRoYXQgdGhlIHNpZ24gb2YgdGhlXG5cCi1yZW1haW5kZXIgaXMgY2hvc2VuIHNvIGFzIHRvIG1pbmltaXplIGl0cyBhYnNvbHV0ZSB2YWx1ZS4gTW9yZSBwcmVjaXNlbHksIHRoZVxuXAotcmV0dXJuIHZhbHVlIGlzIHNlbGYgLSBuICogb3RoZXIgd2hlcmUgbiBpcyB0aGUgaW50ZWdlciBuZWFyZXN0IHRvIHRoZSBleGFjdFxuXAotdmFsdWUgb2Ygc2VsZiAvIG90aGVyLCBhbmQgaWYgdHdvIGludGVnZXJzIGFyZSBlcXVhbGx5IG5lYXIgdGhlbiB0aGUgZXZlbiBvbmVcblwKLWlzIGNob3Nlbi5cblwKK1B5RG9jX1NUUlZBUihkb2NfcmVtYWluZGVyX25lYXIsCisicmVtYWluZGVyX25lYXIoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIHJlbWFpbmRlciBmcm9tIGRpdmlkaW5nIHNlbGYgYnkgb3RoZXIuICBUaGlzIGRpZmZlcnMgZnJvbVxuXAorc2VsZiAlIG90aGVyIGluIHRoYXQgdGhlIHNpZ24gb2YgdGhlIHJlbWFpbmRlciBpcyBjaG9zZW4gc28gYXMgdG8gbWluaW1pemVcblwKK2l0cyBhYnNvbHV0ZSB2YWx1ZS4gTW9yZSBwcmVjaXNlbHksIHRoZSByZXR1cm4gdmFsdWUgaXMgc2VsZiAtIG4gKiBvdGhlclxuXAord2hlcmUgbiBpcyB0aGUgaW50ZWdlciBuZWFyZXN0IHRvIHRoZSBleGFjdCB2YWx1ZSBvZiBzZWxmIC8gb3RoZXIsIGFuZFxuXAoraWYgdHdvIGludGVnZXJzIGFyZSBlcXVhbGx5IG5lYXIgdGhlbiB0aGUgZXZlbiBvbmUgaXMgY2hvc2VuLlxuXAogXG5cCiBJZiB0aGUgcmVzdWx0IGlzIHplcm8gdGhlbiBpdHMgc2lnbiB3aWxsIGJlIHRoZSBzaWduIG9mIHNlbGYuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3JvdGF0ZSwiXG5cCi1yb3RhdGUob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIHJlc3VsdCBvZiByb3RhdGluZyB0aGUgZGlnaXRzIG9mIHRoZVxuXAotZmlyc3Qgb3BlcmFuZCBieSBhbiBhbW91bnQgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgb3BlcmFuZC4gVGhlIHNlY29uZCBvcGVyYW5kXG5cCi1tdXN0IGJlIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIC1wcmVjaXNpb24gdGhyb3VnaCBwcmVjaXNpb24uIFRoZSBhYnNvbHV0ZVxuXAotdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kIGdpdmVzIHRoZSBudW1iZXIgb2YgcGxhY2VzIHRvIHJvdGF0ZS4gSWYgdGhlIHNlY29uZFxuXAotb3BlcmFuZCBpcyBwb3NpdGl2ZSB0aGVuIHJvdGF0aW9uIGlzIHRvIHRoZSBsZWZ0OyBvdGhlcndpc2Ugcm90YXRpb24gaXMgdG8gdGhlXG5cCi1yaWdodC4gVGhlIGNvZWZmaWNpZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kIGlzIHBhZGRlZCBvbiB0aGUgbGVmdCB3aXRoIHplcm9zIHRvXG5cCitQeURvY19TVFJWQVIoZG9jX3JvdGF0ZSwKKyJyb3RhdGUoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIHJlc3VsdCBvZiByb3RhdGluZyB0aGUgZGlnaXRzIG9mIHRoZSBmaXJzdCBvcGVyYW5kIGJ5IGFuIGFtb3VudFxuXAorc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgb3BlcmFuZC4gIFRoZSBzZWNvbmQgb3BlcmFuZCBtdXN0IGJlIGFuIGludGVnZXIgaW5cblwKK3RoZSByYW5nZSAtcHJlY2lzaW9uIHRocm91Z2ggcHJlY2lzaW9uLiBUaGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZFxuXAorb3BlcmFuZCBnaXZlcyB0aGUgbnVtYmVyIG9mIHBsYWNlcyB0byByb3RhdGUuIElmIHRoZSBzZWNvbmQgb3BlcmFuZCBpc1xuXAorcG9zaXRpdmUgdGhlbiByb3RhdGlvbiBpcyB0byB0aGUgbGVmdDsgb3RoZXJ3aXNlIHJvdGF0aW9uIGlzIHRvIHRoZSByaWdodC5cblwKK1RoZSBjb2VmZmljaWVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBwYWRkZWQgb24gdGhlIGxlZnQgd2l0aCB6ZXJvcyB0b1xuXAogbGVuZ3RoIHByZWNpc2lvbiBpZiBuZWNlc3NhcnkuIFRoZSBzaWduIGFuZCBleHBvbmVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBhcmVcblwKIHVuY2hhbmdlZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2Nfc2FtZV9xdWFudHVtLCJcblwKLXNhbWVfcXVhbnR1bShvdGhlciwgY29udGV4dD1Ob25lKSAtIFRlc3Qgd2hldGhlciBzZWxmIGFuZCBvdGhlciBoYXZlIHRoZVxuXAotc2FtZSBleHBvbmVudCBvciB3aGV0aGVyIGJvdGggYXJlIE5hTi5cblwKK1B5RG9jX1NUUlZBUihkb2Nfc2FtZV9xdWFudHVtLAorInNhbWVfcXVhbnR1bSgkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1Rlc3Qgd2hldGhlciBzZWxmIGFuZCBvdGhlciBoYXZlIHRoZSBzYW1lIGV4cG9uZW50IG9yIHdoZXRoZXIgYm90aCBhcmUgTmFOLlxuXAogXG5cCiBUaGlzIG9wZXJhdGlvbiBpcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZFxuXAogYW5kIG5vIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4gQXMgYW4gZXhjZXB0aW9uLCB0aGUgQyB2ZXJzaW9uIG1heSByYWlzZVxuXAogSW52YWxpZE9wZXJhdGlvbiBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBleGFjdGx5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19zY2FsZWIsIlxuXAotc2NhbGViKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSBmaXJzdCBvcGVyYW5kIHdpdGggdGhlIGV4cG9uZW50XG5cCi1hZGp1c3RlZCB0aGUgc2Vjb25kLiBFcXVpdmFsZW50bHksIHJldHVybiB0aGUgZmlyc3Qgb3BlcmFuZCBtdWx0aXBsaWVkIGJ5XG5cCi0xMCoqb3RoZXIuIFRoZSBzZWNvbmQgb3BlcmFuZCBtdXN0IGJlIGFuIGludGVnZXIuXG5cCitQeURvY19TVFJWQVIoZG9jX3NjYWxlYiwKKyJzY2FsZWIoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgZXhwb25lbnQgYWRqdXN0ZWQgdGhlIHNlY29uZC4gIEVxdWl2YWxlbnRseSxcblwKK3JldHVybiB0aGUgZmlyc3Qgb3BlcmFuZCBtdWx0aXBsaWVkIGJ5IDEwKipvdGhlci4gVGhlIHNlY29uZCBvcGVyYW5kIG11c3QgYmVcblwKK2FuIGludGVnZXIuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3NoaWZ0LCJcblwKLXNoaWZ0KG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSByZXN1bHQgb2Ygc2hpZnRpbmcgdGhlIGRpZ2l0cyBvZlxuXAotdGhlIGZpcnN0IG9wZXJhbmQgYnkgYW4gYW1vdW50IHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIG9wZXJhbmQuIFRoZSBzZWNvbmRcblwKLW9wZXJhbmQgbXVzdCBiZSBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSAtcHJlY2lzaW9uIHRocm91Z2ggcHJlY2lzaW9uLiBUaGVcblwKLWFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBnaXZlcyB0aGUgbnVtYmVyIG9mIHBsYWNlcyB0byBzaGlmdC5cblwKLUlmIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBwb3NpdGl2ZSwgdGhlbiB0aGUgc2hpZnQgaXMgdG8gdGhlIGxlZnQ7IG90aGVyd2lzZVxuXAotdGhlIHNoaWZ0IGlzIHRvIHRoZSByaWdodC4gRGlnaXRzIHNoaWZ0ZWQgaW50byB0aGUgY29lZmZpY2llbnQgYXJlIHplcm9zLlxuXAotVGhlIHNpZ24gYW5kIGV4cG9uZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kIGFyZSB1bmNoYW5nZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX3NoaWZ0LAorInNoaWZ0KCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSByZXN1bHQgb2Ygc2hpZnRpbmcgdGhlIGRpZ2l0cyBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBieSBhbiBhbW91bnRcblwKK3NwZWNpZmllZCBieSB0aGUgc2Vjb25kIG9wZXJhbmQuICBUaGUgc2Vjb25kIG9wZXJhbmQgbXVzdCBiZSBhbiBpbnRlZ2VyIGluXG5cCit0aGUgcmFuZ2UgLXByZWNpc2lvbiB0aHJvdWdoIHByZWNpc2lvbi4gVGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmRcblwKK29wZXJhbmQgZ2l2ZXMgdGhlIG51bWJlciBvZiBwbGFjZXMgdG8gc2hpZnQuIElmIHRoZSBzZWNvbmQgb3BlcmFuZCBpc1xuXAorcG9zaXRpdmUsIHRoZW4gdGhlIHNoaWZ0IGlzIHRvIHRoZSBsZWZ0OyBvdGhlcndpc2UgdGhlIHNoaWZ0IGlzIHRvIHRoZVxuXAorcmlnaHQuIERpZ2l0cyBzaGlmdGVkIGludG8gdGhlIGNvZWZmaWNpZW50IGFyZSB6ZXJvcy4gVGhlIHNpZ24gYW5kIGV4cG9uZW50XG5cCitvZiB0aGUgZmlyc3Qgb3BlcmFuZCBhcmUgdW5jaGFuZ2VkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19zcXJ0LCJcblwKLXNxcnQoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlIGFyZ3VtZW50IHRvIGZ1bGwgcHJlY2lzaW9uLlxuXAotVGhlIHJlc3VsdCBpcyBjb3JyZWN0bHkgcm91bmRlZCB1c2luZyB0aGUgUk9VTkRfSEFMRl9FVkVOIHJvdW5kaW5nIG1vZGUuXG5cCitQeURvY19TVFJWQVIoZG9jX3NxcnQsCisic3FydCgkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgYXJndW1lbnQgdG8gZnVsbCBwcmVjaXNpb24uIFRoZSByZXN1bHQgaXNcblwKK2NvcnJlY3RseSByb3VuZGVkIHVzaW5nIHRoZSBST1VORF9IQUxGX0VWRU4gcm91bmRpbmcgbW9kZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfdG9fZW5nX3N0cmluZywiXG5cCi10b19lbmdfc3RyaW5nKGNvbnRleHQ9Tm9uZSkgLSBDb252ZXJ0IHRvIGFuIGVuZ2luZWVyaW5nLXR5cGUgc3RyaW5nLlxuXAotRW5naW5lZXJpbmcgbm90YXRpb24gaGFzIGFuIGV4cG9uZW50IHdoaWNoIGlzIGEgbXVsdGlwbGUgb2YgMywgc28gdGhlcmVcblwKLWFyZSB1cCB0byAzIGRpZ2l0cyBsZWZ0IG9mIHRoZSBkZWNpbWFsIHBsYWNlLiBGb3IgZXhhbXBsZSwgRGVjaW1hbCgnMTIzRSsxJylcblwKLWlzIGNvbnZlcnRlZCB0byBEZWNpbWFsKCcxLjIzRSszJykuXG5cCitQeURvY19TVFJWQVIoZG9jX3RvX2VuZ19zdHJpbmcsCisidG9fZW5nX3N0cmluZygkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorQ29udmVydCB0byBhbiBlbmdpbmVlcmluZy10eXBlIHN0cmluZy4gIEVuZ2luZWVyaW5nIG5vdGF0aW9uIGhhcyBhbiBleHBvbmVudFxuXAord2hpY2ggaXMgYSBtdWx0aXBsZSBvZiAzLCBzbyB0aGVyZSBhcmUgdXAgdG8gMyBkaWdpdHMgbGVmdCBvZiB0aGUgZGVjaW1hbFxuXAorcGxhY2UuIEZvciBleGFtcGxlLCBEZWNpbWFsKCcxMjNFKzEnKSBpcyBjb252ZXJ0ZWQgdG8gRGVjaW1hbCgnMS4yM0UrMycpLlxuXAogXG5cCiBUaGUgdmFsdWUgb2YgY29udGV4dC5jYXBpdGFscyBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGV4cG9uZW50IHNpZ24gaXMgbG93ZXJcblwKIG9yIHVwcGVyIGNhc2UuIE90aGVyd2lzZSwgdGhlIGNvbnRleHQgZG9lcyBub3QgYWZmZWN0IHRoZSBvcGVyYXRpb24uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsLCJcblwKLXRvX2ludGVncmFsKHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkgLSBJZGVudGljYWwgdG8gdGhlXG5cCi10b19pbnRlZ3JhbF92YWx1ZSgpIG1ldGhvZC4gVGhlIHRvX2ludGVncmFsKCkgbmFtZSBoYXMgYmVlbiBrZXB0XG5cCi1mb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHZlcnNpb25zLlxuXAorUHlEb2NfU1RSVkFSKGRvY190b19pbnRlZ3JhbCwKKyJ0b19pbnRlZ3JhbCgkc2VsZiwgLywgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorSWRlbnRpY2FsIHRvIHRoZSB0b19pbnRlZ3JhbF92YWx1ZSgpIG1ldGhvZC4gIFRoZSB0b19pbnRlZ3JhbCgpIG5hbWUgaGFzIGJlZW5cblwKK2tlcHQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucy5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfdG9faW50ZWdyYWxfZXhhY3QsIlxuXAotdG9faW50ZWdyYWxfZXhhY3Qocm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKSAtIFJvdW5kIHRvIHRoZSBuZWFyZXN0XG5cCi1pbnRlZ2VyLCBzaWduYWxpbmcgSW5leGFjdCBvciBSb3VuZGVkIGFzIGFwcHJvcHJpYXRlIGlmIHJvdW5kaW5nIG9jY3Vycy5cblwKLVRoZSByb3VuZGluZyBtb2RlIGlzIGRldGVybWluZWQgYnkgdGhlIHJvdW5kaW5nIHBhcmFtZXRlciBpZiBnaXZlbiwgZWxzZVxuXAotYnkgdGhlIGdpdmVuIGNvbnRleHQuIElmIG5laXRoZXIgcGFyYW1ldGVyIGlzIGdpdmVuLCB0aGVuIHRoZSByb3VuZGluZyBtb2RlXG5cCitQeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsX2V4YWN0LAorInRvX2ludGVncmFsX2V4YWN0KCRzZWxmLCAvLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLCBzaWduYWxpbmcgSW5leGFjdCBvciBSb3VuZGVkIGFzIGFwcHJvcHJpYXRlIGlmXG5cCityb3VuZGluZyBvY2N1cnMuICBUaGUgcm91bmRpbmcgbW9kZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSByb3VuZGluZyBwYXJhbWV0ZXJcblwKK2lmIGdpdmVuLCBlbHNlIGJ5IHRoZSBnaXZlbiBjb250ZXh0LiBJZiBuZWl0aGVyIHBhcmFtZXRlciBpcyBnaXZlbiwgdGhlbiB0aGVcblwKK3JvdW5kaW5nIG1vZGUgb2YgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlzIHVzZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsX3ZhbHVlLAorInRvX2ludGVncmFsX3ZhbHVlKCRzZWxmLCAvLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIHdpdGhvdXQgc2lnbmFsaW5nIEluZXhhY3Qgb3IgUm91bmRlZC4gIFRoZVxuXAorcm91bmRpbmcgbW9kZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSByb3VuZGluZyBwYXJhbWV0ZXIgaWYgZ2l2ZW4sIGVsc2UgYnlcblwKK3RoZSBnaXZlbiBjb250ZXh0LiBJZiBuZWl0aGVyIHBhcmFtZXRlciBpcyBnaXZlbiwgdGhlbiB0aGUgcm91bmRpbmcgbW9kZVxuXAogb2YgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlzIHVzZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsX3ZhbHVlLCJcblwKLXRvX2ludGVncmFsX3ZhbHVlKHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkgLSBSb3VuZCB0byB0aGUgbmVhcmVzdFxuXAotaW50ZWdlciB3aXRob3V0IHNpZ25hbGluZyBJbmV4YWN0IG9yIFJvdW5kZWQuIFRoZSByb3VuZGluZyBtb2RlIGlzIGRldGVybWluZWRcblwKLWJ5IHRoZSByb3VuZGluZyBwYXJhbWV0ZXIgaWYgZ2l2ZW4sIGVsc2UgYnkgdGhlIGdpdmVuIGNvbnRleHQuIElmIG5laXRoZXJcblwKLXBhcmFtZXRlciBpcyBnaXZlbiwgdGhlbiB0aGUgcm91bmRpbmcgbW9kZSBvZiB0aGUgY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaXNcblwKLXVzZWQuXG5cCi1cbiIpOwotCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dCBPYmplY3QgYW5kIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotUHlEb2NfU1RSVkFSKGRvY19jb250ZXh0LCJcblwKK1B5RG9jX1NUUlZBUihkb2NfY29udGV4dCwKKyJDb250ZXh0KHByZWM9Tm9uZSwgcm91bmRpbmc9Tm9uZSwgRW1pbj1Ob25lLCBFbWF4PU5vbmUsIGNhcGl0YWxzPU5vbmUsIGNsYW1wPU5vbmUsIGZsYWdzPU5vbmUsIHRyYXBzPU5vbmUpXG4tLVxuXG5cCiBUaGUgY29udGV4dCBhZmZlY3RzIGFsbW9zdCBhbGwgb3BlcmF0aW9ucyBhbmQgY29udHJvbHMgcm91bmRpbmcsXG5cCi1PdmVyL1VuZGVyZmxvdywgcmFpc2luZyBvZiBleGNlcHRpb25zIGFuZCBtdWNoIG1vcmUuIEEgbmV3IGNvbnRleHRcblwKK092ZXIvVW5kZXJmbG93LCByYWlzaW5nIG9mIGV4Y2VwdGlvbnMgYW5kIG11Y2ggbW9yZS4gIEEgbmV3IGNvbnRleHRcblwKIGNhbiBiZSBjb25zdHJ1Y3RlZCBhcyBmb2xsb3dzOlxuXAogXG5cCiAgICAgPj4+IGMgPSBDb250ZXh0KHByZWM9MjgsIEVtaW49LTQyNTAwMDAwMCwgRW1heD00MjUwMDAwMDAsXG5cCkBAIC00NjAsMzA4ICs1MDAsMzcyIEBACiBcbiIpOwogCiAjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQotUHlEb2NfU1RSVkFSKGRvY19jdHhfYXBwbHksIlxuXAotYXBwbHkoeCkgLSBBcHBseSBzZWxmIHRvIERlY2ltYWwgeC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2FwcGx5LAorImFwcGx5KCRzZWxmLCB4LCAvKVxuLS1cblxuXAorQXBwbHkgc2VsZiB0byBEZWNpbWFsIHguXG5cCiBcbiIpOwogI2VuZGlmCiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2NsZWFyX2ZsYWdzLCJcblwKLWNsZWFyX2ZsYWdzKCkgLSBSZXNldCBhbGwgZmxhZ3MgdG8gRmFsc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jbGVhcl9mbGFncywKKyJjbGVhcl9mbGFncygkc2VsZiwgLylcbi0tXG5cblwKK1Jlc2V0IGFsbCBmbGFncyB0byBGYWxzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2NsZWFyX3RyYXBzLCJcblwKLWNsZWFyX3RyYXBzKCkgLSBTZXQgYWxsIHRyYXBzIHRvIEZhbHNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfY2xlYXJfdHJhcHMsCisiY2xlYXJfdHJhcHMoJHNlbGYsIC8pXG4tLVxuXG5cCitTZXQgYWxsIHRyYXBzIHRvIEZhbHNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weSwiXG5cCi1jb3B5KCkgLSBSZXR1cm4gYSBkdXBsaWNhdGUgb2YgdGhlIGNvbnRleHQgd2l0aCBhbGwgZmxhZ3MgY2xlYXJlZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHksCisiY29weSgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBhIGR1cGxpY2F0ZSBvZiB0aGUgY29udGV4dCB3aXRoIGFsbCBmbGFncyBjbGVhcmVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weV9kZWNpbWFsLCJcblwKLWNvcHlfZGVjaW1hbCh4KSAtIFJldHVybiBhIGNvcHkgb2YgRGVjaW1hbCB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weV9kZWNpbWFsLAorImNvcHlfZGVjaW1hbCgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBhIGNvcHkgb2YgRGVjaW1hbCB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfY3JlYXRlX2RlY2ltYWwsIlxuXAotY3JlYXRlX2RlY2ltYWwoeCkgLSBDcmVhdGUgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBmcm9tIHgsIHVzaW5nIHNlbGYgYXMgdGhlXG5cCi1jb250ZXh0LiBVbmxpa2UgdGhlIERlY2ltYWwgY29uc3RydWN0b3IsIHRoaXMgZnVuY3Rpb24gb2JzZXJ2ZXMgdGhlIGNvbnRleHRcblwKLWxpbWl0cy5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NyZWF0ZV9kZWNpbWFsLAorImNyZWF0ZV9kZWNpbWFsKCRzZWxmLCBudW09XCIwXCIsIC8pXG4tLVxuXG5cCitDcmVhdGUgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBmcm9tIG51bSwgdXNpbmcgc2VsZiBhcyB0aGUgY29udGV4dC4gVW5saWtlIHRoZVxuXAorRGVjaW1hbCBjb25zdHJ1Y3RvciwgdGhpcyBmdW5jdGlvbiBvYnNlcnZlcyB0aGUgY29udGV4dCBsaW1pdHMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0LCJcblwKLWNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoZikgLSBDcmVhdGUgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBmcm9tIGZsb2F0IGYuXG5cCi1Vbmxpa2UgdGhlIERlY2ltYWwuZnJvbV9mbG9hdCgpIGNsYXNzIG1ldGhvZCwgdGhpcyBmdW5jdGlvbiBvYnNlcnZlcyB0aGVcblwKLWNvbnRleHQgbGltaXRzLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCwKKyJjcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KCRzZWxmLCBmLCAvKVxuLS1cblxuXAorQ3JlYXRlIGEgbmV3IERlY2ltYWwgaW5zdGFuY2UgZnJvbSBmbG9hdCBmLiAgVW5saWtlIHRoZSBEZWNpbWFsLmZyb21fZmxvYXQoKVxuXAorY2xhc3MgbWV0aG9kLCB0aGlzIGZ1bmN0aW9uIG9ic2VydmVzIHRoZSBjb250ZXh0IGxpbWl0cy5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X0V0aW55LCJcblwKLUV0aW55KCkgLSBSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byBFbWluIC0gcHJlYyArIDEsIHdoaWNoIGlzIHRoZSBtaW5pbXVtXG5cCi1leHBvbmVudCB2YWx1ZSBmb3Igc3Vibm9ybWFsIHJlc3VsdHMuIFdoZW4gdW5kZXJmbG93IG9jY3VycywgdGhlIGV4cG9uZW50XG5cCi1pcyBzZXQgdG8gRXRpbnkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9FdGlueSwKKyJFdGlueSgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBhIHZhbHVlIGVxdWFsIHRvIEVtaW4gLSBwcmVjICsgMSwgd2hpY2ggaXMgdGhlIG1pbmltdW0gZXhwb25lbnQgdmFsdWVcblwKK2ZvciBzdWJub3JtYWwgcmVzdWx0cy4gIFdoZW4gdW5kZXJmbG93IG9jY3VycywgdGhlIGV4cG9uZW50IGlzIHNldCB0byBFdGlueS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X0V0b3AsIlxuXAotRXRvcCgpIC0gUmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8gRW1heCAtIHByZWMgKyAxLiBUaGlzIGlzIHRoZSBtYXhpbXVtIGV4cG9uZW50XG5cCi1pZiB0aGUgX2NsYW1wIGZpZWxkIG9mIHRoZSBjb250ZXh0IGlzIHNldCB0byAxIChJRUVFIGNsYW1wIG1vZGUpLiBFdG9wKCkgbXVzdFxuXAotbm90IGJlIG5lZ2F0aXZlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfRXRvcCwKKyJFdG9wKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8gRW1heCAtIHByZWMgKyAxLiAgVGhpcyBpcyB0aGUgbWF4aW11bSBleHBvbmVudFxuXAoraWYgdGhlIF9jbGFtcCBmaWVsZCBvZiB0aGUgY29udGV4dCBpcyBzZXQgdG8gMSAoSUVFRSBjbGFtcCBtb2RlKS4gIEV0b3AoKVxuXAorbXVzdCBub3QgYmUgbmVnYXRpdmUuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9hYnMsIlxuXAotYWJzKHgpIC0gUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfYWJzLAorImFicygkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgeC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2FkZCwiXG5cCi1hZGQoeCwgeSkgLSBSZXR1cm4gdGhlIHN1bSBvZiB4IGFuZCB5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfYWRkLAorImFkZCgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgc3VtIG9mIHggYW5kIHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jYW5vbmljYWwsIlxuXAotY2Fub25pY2FsKHgpIC0gUmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIHguXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jYW5vbmljYWwsCisiY2Fub25pY2FsKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIHguXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlLCJcblwKLWNvbXBhcmUoeCwgeSkgLSBDb21wYXJlIHggYW5kIHkgbnVtZXJpY2FsbHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlLAorImNvbXBhcmUoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitDb21wYXJlIHggYW5kIHkgbnVtZXJpY2FsbHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3NpZ25hbCwiXG5cCi1jb21wYXJlX3NpZ25hbCh4LCB5KSAtIENvbXBhcmUgeCBhbmQgeSBudW1lcmljYWxseS4gQWxsIE5hTnMgc2lnbmFsLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfY29tcGFyZV9zaWduYWwsCisiY29tcGFyZV9zaWduYWwoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitDb21wYXJlIHggYW5kIHkgbnVtZXJpY2FsbHkuICBBbGwgTmFOcyBzaWduYWwuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsLCJcblwKLWNvbXBhcmVfdG90YWwoeCwgeSkgLSBDb21wYXJlIHggYW5kIHkgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24uXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsLAorImNvbXBhcmVfdG90YWwoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitDb21wYXJlIHggYW5kIHkgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsX21hZywiXG5cCi1jb21wYXJlX3RvdGFsX21hZyh4LCB5KSAtIENvbXBhcmUgeCBhbmQgeSB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbixcblwKLWlnbm9yaW5nIHNpZ24uXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsX21hZywKKyJjb21wYXJlX3RvdGFsX21hZygkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK0NvbXBhcmUgeCBhbmQgeSB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbiwgaWdub3Jpbmcgc2lnbi5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHlfYWJzLCJcblwKLWNvcHlfYWJzKHgpIC0gUmV0dXJuIGEgY29weSBvZiB4IHdpdGggdGhlIHNpZ24gc2V0IHRvIDAuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb3B5X2FicywKKyJjb3B5X2Ficygkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBhIGNvcHkgb2YgeCB3aXRoIHRoZSBzaWduIHNldCB0byAwLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weV9uZWdhdGUsIlxuXAotY29weV9uZWdhdGUoeCkgLSBSZXR1cm4gYSBjb3B5IG9mIHggd2l0aCB0aGUgc2lnbiBpbnZlcnRlZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHlfbmVnYXRlLAorImNvcHlfbmVnYXRlKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIGEgY29weSBvZiB4IHdpdGggdGhlIHNpZ24gaW52ZXJ0ZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb3B5X3NpZ24sIlxuXAotY29weV9zaWduKHgsIHkpIC0gQ29weSB0aGUgc2lnbiBmcm9tIHkgdG8geC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHlfc2lnbiwKKyJjb3B5X3NpZ24oJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitDb3B5IHRoZSBzaWduIGZyb20geSB0byB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfZGl2aWRlLCJcblwKLWRpdmlkZSh4LCB5KSAtIFJldHVybiB4IGRpdmlkZWQgYnkgeS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2RpdmlkZSwKKyJkaXZpZGUoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitSZXR1cm4geCBkaXZpZGVkIGJ5IHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9kaXZpZGVfaW50LCJcblwKLWRpdmlkZV9pbnQoeCwgeSkgLSBSZXR1cm4geCBkaXZpZGVkIGJ5IHksIHRydW5jYXRlZCB0byBhbiBpbnRlZ2VyLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfZGl2aWRlX2ludCwKKyJkaXZpZGVfaW50KCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorUmV0dXJuIHggZGl2aWRlZCBieSB5LCB0cnVuY2F0ZWQgdG8gYW4gaW50ZWdlci5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2Rpdm1vZCwiXG5cCi1kaXZtb2QoeCwgeSkgLSBSZXR1cm4gcXVvdGllbnQgYW5kIHJlbWFpbmRlciBvZiB0aGUgZGl2aXNpb24geCAvIHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9kaXZtb2QsCisiZGl2bW9kKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorUmV0dXJuIHF1b3RpZW50IGFuZCByZW1haW5kZXIgb2YgdGhlIGRpdmlzaW9uIHggLyB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfZXhwLCJcblwKLWV4cCh4KSAtIFJldHVybiBlICoqIHguXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9leHAsCisiZXhwKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIGUgKiogeC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2ZtYSwiXG5cCi1mbWEoeCwgeSwgeikgLSBSZXR1cm4geCBtdWx0aXBsaWVkIGJ5IHksIHBsdXMgei5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2ZtYSwKKyJmbWEoJHNlbGYsIHgsIHksIHosIC8pXG4tLVxuXG5cCitSZXR1cm4geCBtdWx0aXBsaWVkIGJ5IHksIHBsdXMgei5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX2Nhbm9uaWNhbCwiXG5cCi1pc19jYW5vbmljYWwoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGNhbm9uaWNhbCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfY2Fub25pY2FsLAorImlzX2Nhbm9uaWNhbCgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHggaXMgY2Fub25pY2FsLCBGYWxzZSBvdGhlcndpc2UuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9pc19maW5pdGUsIlxuXAotaXNfZmluaXRlKHgpIC0gUmV0dXJuIFRydWUgaWYgeCBpcyBmaW5pdGUsIEZhbHNlIG90aGVyd2lzZS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2lzX2Zpbml0ZSwKKyJpc19maW5pdGUoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB4IGlzIGZpbml0ZSwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfaW5maW5pdGUsIlxuXAotaXNfaW5maW5pdGUoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGluZmluaXRlLCBGYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19pbmZpbml0ZSwKKyJpc19pbmZpbml0ZSgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHggaXMgaW5maW5pdGUsIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX25hbiwiXG5cCi1pc19uYW4oeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgcU5hTiBvciBzTmFOLCBGYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19uYW4sCisiaXNfbmFuKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBhIHFOYU4gb3Igc05hTiwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfbm9ybWFsLCJcblwKLWlzX25vcm1hbCh4KSAtIFJldHVybiBUcnVlIGlmIHggaXMgYSBub3JtYWwgbnVtYmVyLCBGYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19ub3JtYWwsCisiaXNfbm9ybWFsKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBhIG5vcm1hbCBudW1iZXIsIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3FuYW4sIlxuXAotaXNfcW5hbih4KSAtIFJldHVybiBUcnVlIGlmIHggaXMgYSBxdWlldCBOYU4sIEZhbHNlIG90aGVyd2lzZS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3FuYW4sCisiaXNfcW5hbigkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHggaXMgYSBxdWlldCBOYU4sIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3NpZ25lZCwiXG5cCi1pc19zaWduZWQoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIG5lZ2F0aXZlLCBGYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19zaWduZWQsCisiaXNfc2lnbmVkKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBuZWdhdGl2ZSwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfc25hbiwiXG5cCi1pc19zbmFuKCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgc2lnbmFsaW5nIE5hTiwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfc25hbiwKKyJpc19zbmFuKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBhIHNpZ25hbGluZyBOYU4sIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3N1Ym5vcm1hbCwiXG5cCi1pc19zdWJub3JtYWwoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIHN1Ym5vcm1hbCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfc3Vibm9ybWFsLAorImlzX3N1Ym5vcm1hbCgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHggaXMgc3Vibm9ybWFsLCBGYWxzZSBvdGhlcndpc2UuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9pc196ZXJvLCJcblwKLWlzX3plcm8oeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgemVybywgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfemVybywKKyJpc196ZXJvKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBhIHplcm8sIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2xuLCJcblwKLWxuKHgpIC0gUmV0dXJuIHRoZSBuYXR1cmFsIChiYXNlIGUpIGxvZ2FyaXRobSBvZiB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG4sCisibG4oJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHguXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9sb2cxMCwiXG5cCi1sb2cxMCh4KSAtIFJldHVybiB0aGUgYmFzZSAxMCBsb2dhcml0aG0gb2YgeC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2xvZzEwLAorImxvZzEwKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIHRoZSBiYXNlIDEwIGxvZ2FyaXRobSBvZiB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9nYiwiXG5cCi1sb2diKHgpIC0gUmV0dXJuIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlIG9mIHRoZSBvcGVyYW5kJ3MgTVNELlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9nYiwKKyJsb2diKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlIG9mIHRoZSBvcGVyYW5kJ3MgTVNELlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9hbmQsIlxuXAotbG9naWNhbF9hbmQoeCwgeSkgLSBEaWdpdC13aXNlIGFuZCBvZiB4IGFuZCB5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9hbmQsCisibG9naWNhbF9hbmQoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitEaWdpdC13aXNlIGFuZCBvZiB4IGFuZCB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9pbnZlcnQsIlxuXAotbG9naWNhbF9pbnZlcnQoeCkgLSBJbnZlcnQgYWxsIGRpZ2l0cyBvZiB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9pbnZlcnQsCisibG9naWNhbF9pbnZlcnQoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitJbnZlcnQgYWxsIGRpZ2l0cyBvZiB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9vciwiXG5cCi1sb2dpY2FsX29yKHgsIHkpIC0gRGlnaXQtd2lzZSBvciBvZiB4IGFuZCB5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9vciwKKyJsb2dpY2FsX29yKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorRGlnaXQtd2lzZSBvciBvZiB4IGFuZCB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF94b3IsIlxuXAotbG9naWNhbF94b3IoeCwgeSkgLSBEaWdpdC13aXNlIHhvciBvZiB4IGFuZCB5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF94b3IsCisibG9naWNhbF94b3IoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitEaWdpdC13aXNlIHhvciBvZiB4IGFuZCB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWF4LCJcblwKLW1heCh4LCB5KSAtIENvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJuIHRoZSBtYXhpbXVtLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbWF4LAorIm1heCgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK0NvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJuIHRoZSBtYXhpbXVtLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWF4X21hZywiXG5cCi1tYXhfbWFnKHgsIHkpIC0gQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbWF4X21hZywKKyJtYXhfbWFnKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWluLCJcblwKLW1pbih4LCB5KSAtIENvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJuIHRoZSBtaW5pbXVtLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbWluLAorIm1pbigkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK0NvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJuIHRoZSBtaW5pbXVtLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWluX21hZywiXG5cCi1taW5fbWFnKHgsIHkpIC0gQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbWluX21hZywKKyJtaW5fbWFnKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWludXMsIlxuXAotbWludXMoeCkgLSBNaW51cyBjb3JyZXNwb25kcyB0byB0aGUgdW5hcnkgcHJlZml4IG1pbnVzIG9wZXJhdG9yIGluIFB5dGhvbixcblwKLWJ1dCBhcHBsaWVzIHRoZSBjb250ZXh0IHRvIHRoZSByZXN1bHQuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9taW51cywKKyJtaW51cygkc2VsZiwgeCwgLylcbi0tXG5cblwKK01pbnVzIGNvcnJlc3BvbmRzIHRvIHRoZSB1bmFyeSBwcmVmaXggbWludXMgb3BlcmF0b3IgaW4gUHl0aG9uLCBidXQgYXBwbGllc1xuXAordGhlIGNvbnRleHQgdG8gdGhlIHJlc3VsdC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X211bHRpcGx5LCJcblwKLW11bHRpcGx5KHgsIHkpIC0gUmV0dXJuIHRoZSBwcm9kdWN0IG9mIHggYW5kIHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9tdWx0aXBseSwKKyJtdWx0aXBseSgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgcHJvZHVjdCBvZiB4IGFuZCB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbmV4dF9taW51cywiXG5cCi1uZXh0X21pbnVzKHgpIC0gUmV0dXJuIHRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHNtYWxsZXIgdGhhbiB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbmV4dF9taW51cywKKyJuZXh0X21pbnVzKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIHRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHNtYWxsZXIgdGhhbiB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbmV4dF9wbHVzLCJcblwKLW5leHRfcGx1cyh4KSAtIFJldHVybiB0aGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgbGFyZ2VyIHRoYW4geC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X25leHRfcGx1cywKKyJuZXh0X3BsdXMoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIGxhcmdlciB0aGFuIHguXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9uZXh0X3Rvd2FyZCwiXG5cCi1uZXh0X3Rvd2FyZCh4KSAtIFJldHVybiB0aGUgbnVtYmVyIGNsb3Nlc3QgdG8geCwgaW4gdGhlIGRpcmVjdGlvbiB0b3dhcmRzIHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9uZXh0X3Rvd2FyZCwKKyJuZXh0X3Rvd2FyZCgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgbnVtYmVyIGNsb3Nlc3QgdG8geCwgaW4gdGhlIGRpcmVjdGlvbiB0b3dhcmRzIHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9ub3JtYWxpemUsIlxuXAotbm9ybWFsaXplKHgpIC0gUmVkdWNlIHggdG8gaXRzIHNpbXBsZXN0IGZvcm0uIEFsaWFzIGZvciByZWR1Y2UoeCkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9ub3JtYWxpemUsCisibm9ybWFsaXplKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmVkdWNlIHggdG8gaXRzIHNpbXBsZXN0IGZvcm0uIEFsaWFzIGZvciByZWR1Y2UoeCkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9udW1iZXJfY2xhc3MsIlxuXAotbnVtYmVyX2NsYXNzKHgpIC0gUmV0dXJuIGFuIGluZGljYXRpb24gb2YgdGhlIGNsYXNzIG9mIHguXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9udW1iZXJfY2xhc3MsCisibnVtYmVyX2NsYXNzKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIGFuIGluZGljYXRpb24gb2YgdGhlIGNsYXNzIG9mIHguXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9wbHVzLCJcblwKLXBsdXMoeCkgLSBQbHVzIGNvcnJlc3BvbmRzIHRvIHRoZSB1bmFyeSBwcmVmaXggcGx1cyBvcGVyYXRvciBpbiBQeXRob24sXG5cCi1idXQgYXBwbGllcyB0aGUgY29udGV4dCB0byB0aGUgcmVzdWx0LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfcGx1cywKKyJwbHVzKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUGx1cyBjb3JyZXNwb25kcyB0byB0aGUgdW5hcnkgcHJlZml4IHBsdXMgb3BlcmF0b3IgaW4gUHl0aG9uLCBidXQgYXBwbGllc1xuXAordGhlIGNvbnRleHQgdG8gdGhlIHJlc3VsdC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3Bvd2VyLCJcblwKLXBvd2VyKHgsIHkpIC0gQ29tcHV0ZSB4Kip5LiBJZiB4IGlzIG5lZ2F0aXZlLCB0aGVuIHkgbXVzdCBiZSBpbnRlZ3JhbC5cblwKLVRoZSByZXN1bHQgd2lsbCBiZSBpbmV4YWN0IHVubGVzcyB5IGlzIGludGVncmFsIGFuZCB0aGUgcmVzdWx0IGlzIGZpbml0ZVxuXAotYW5kIGNhbiBiZSBleHByZXNzZWQgZXhhY3RseSBpbiAncHJlY2lzaW9uJyBkaWdpdHMuIEluIHRoZSBQeXRob24gdmVyc2lvblxuXAotdGhlIHJlc3VsdCBpcyBhbHdheXMgY29ycmVjdGx5IHJvdW5kZWQsIGluIHRoZSBDIHZlcnNpb24gdGhlIHJlc3VsdCBpc1xuXAotYWxtb3N0IGFsd2F5cyBjb3JyZWN0bHkgcm91bmRlZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3Bvd2VyLAorInBvd2VyKCRzZWxmLCAvLCBhLCBiLCBtb2R1bG89Tm9uZSlcbi0tXG5cblwKK0NvbXB1dGUgYSoqYi4gSWYgJ2EnIGlzIG5lZ2F0aXZlLCB0aGVuICdiJyBtdXN0IGJlIGludGVncmFsLiBUaGUgcmVzdWx0XG5cCit3aWxsIGJlIGluZXhhY3QgdW5sZXNzICdhJyBpcyBpbnRlZ3JhbCBhbmQgdGhlIHJlc3VsdCBpcyBmaW5pdGUgYW5kIGNhblxuXAorYmUgZXhwcmVzc2VkIGV4YWN0bHkgaW4gJ3ByZWNpc2lvbicgZGlnaXRzLiAgSW4gdGhlIFB5dGhvbiB2ZXJzaW9uIHRoZVxuXAorcmVzdWx0IGlzIGFsd2F5cyBjb3JyZWN0bHkgcm91bmRlZCwgaW4gdGhlIEMgdmVyc2lvbiB0aGUgcmVzdWx0IGlzIGFsbW9zdFxuXAorYWx3YXlzIGNvcnJlY3RseSByb3VuZGVkLlxuXAogXG5cCi1wb3dlcih4LCB5LCBtKSAtIENvbXB1dGUgKHgqKnkpICUgbS4gVGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgaG9sZDpcblwKK0lmIG1vZHVsbyBpcyBnaXZlbiwgY29tcHV0ZSAoYSoqYikgJSBtb2R1bG8uIFRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zXG5cCitob2xkOlxuXAogXG5cCiAgICAgKiBhbGwgdGhyZWUgYXJndW1lbnRzIG11c3QgYmUgaW50ZWdyYWxcblwKLSAgICAqIHkgbXVzdCBiZSBub25uZWdhdGl2ZVxuXAotICAgICogYXQgbGVhc3Qgb25lIG9mIHggb3IgeSBtdXN0IGJlIG5vbnplcm9cblwKLSAgICAqIG0gbXVzdCBiZSBub256ZXJvIGFuZCBsZXNzIHRoYW4gMTAqKnByZWMgaW4gYWJzb2x1dGUgdmFsdWVcblwKKyAgICAqICdiJyBtdXN0IGJlIG5vbm5lZ2F0aXZlXG5cCisgICAgKiBhdCBsZWFzdCBvbmUgb2YgJ2EnIG9yICdiJyBtdXN0IGJlIG5vbnplcm9cblwKKyAgICAqIG1vZHVsbyBtdXN0IGJlIG5vbnplcm8gYW5kIGxlc3MgdGhhbiAxMCoqcHJlYyBpbiBhYnNvbHV0ZSB2YWx1ZVxuXAogXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9xdWFudGl6ZSwiXG5cCi1xdWFudGl6ZSh4LCB5KSAtIFJldHVybiBhIHZhbHVlIGVxdWFsIHRvIHggKHJvdW5kZWQpLCBoYXZpbmcgdGhlIGV4cG9uZW50IG9mIHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9xdWFudGl6ZSwKKyJxdWFudGl6ZSgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiBhIHZhbHVlIGVxdWFsIHRvIHggKHJvdW5kZWQpLCBoYXZpbmcgdGhlIGV4cG9uZW50IG9mIHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9yYWRpeCwiXG5cCi1yYWRpeCgpIC0gUmV0dXJuIDEwLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfcmFkaXgsCisicmFkaXgoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gMTAuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9yZW1haW5kZXIsIlxuXAotcmVtYWluZGVyKHgsIHkpIC0gUmV0dXJuIHRoZSByZW1haW5kZXIgZnJvbSBpbnRlZ2VyIGRpdmlzaW9uLiBUaGUgc2lnbiBvZlxuXAotdGhlIHJlc3VsdCwgaWYgbm9uLXplcm8sIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2YgdGhlIG9yaWdpbmFsIGRpdmlkZW5kLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfcmVtYWluZGVyLAorInJlbWFpbmRlcigkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgcmVtYWluZGVyIGZyb20gaW50ZWdlciBkaXZpc2lvbi4gIFRoZSBzaWduIG9mIHRoZSByZXN1bHQsXG5cCitpZiBub24temVybywgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgb3JpZ2luYWwgZGl2aWRlbmQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9yZW1haW5kZXJfbmVhciwiXG5cCi1yZW1haW5kZXJfbmVhcih4LCB5KSAtIFJldHVybiB4IC0geSAqIG4sIHdoZXJlIG4gaXMgdGhlIGludGVnZXIgbmVhcmVzdCB0aGVcblwKLWV4YWN0IHZhbHVlIG9mIHggLyB5IChpZiB0aGUgcmVzdWx0IGlzIDAgdGhlbiBpdHMgc2lnbiB3aWxsIGJlIHRoZSBzaWduIG9mIHgpLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfcmVtYWluZGVyX25lYXIsCisicmVtYWluZGVyX25lYXIoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitSZXR1cm4geCAtIHkgKiBuLCB3aGVyZSBuIGlzIHRoZSBpbnRlZ2VyIG5lYXJlc3QgdGhlIGV4YWN0IHZhbHVlIG9mIHggLyB5XG5cCisoaWYgdGhlIHJlc3VsdCBpcyAwIHRoZW4gaXRzIHNpZ24gd2lsbCBiZSB0aGUgc2lnbiBvZiB4KS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3JvdGF0ZSwiXG5cCi1yb3RhdGUoeCwgeSkgLSBSZXR1cm4gYSBjb3B5IG9mIHgsIHJvdGF0ZWQgYnkgeSBwbGFjZXMuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9yb3RhdGUsCisicm90YXRlKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorUmV0dXJuIGEgY29weSBvZiB4LCByb3RhdGVkIGJ5IHkgcGxhY2VzLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfc2FtZV9xdWFudHVtLCJcblwKLXNhbWVfcXVhbnR1bSh4LCB5KSAtIFJldHVybiBUcnVlIGlmIHRoZSB0d28gb3BlcmFuZHMgaGF2ZSB0aGUgc2FtZSBleHBvbmVudC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3NhbWVfcXVhbnR1bSwKKyJzYW1lX3F1YW50dW0oJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB0aGUgdHdvIG9wZXJhbmRzIGhhdmUgdGhlIHNhbWUgZXhwb25lbnQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9zY2FsZWIsIlxuXAotc2NhbGViKHgsIHkpIC0gUmV0dXJuIHRoZSBmaXJzdCBvcGVyYW5kIGFmdGVyIGFkZGluZyB0aGUgc2Vjb25kIHZhbHVlXG5cCi10byBpdHMgZXhwLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfc2NhbGViLAorInNjYWxlYigkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgZmlyc3Qgb3BlcmFuZCBhZnRlciBhZGRpbmcgdGhlIHNlY29uZCB2YWx1ZSB0byBpdHMgZXhwLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfc2hpZnQsIlxuXAotc2hpZnQoeCwgeSkgLSBSZXR1cm4gYSBjb3B5IG9mIHgsIHNoaWZ0ZWQgYnkgeSBwbGFjZXMuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9zaGlmdCwKKyJzaGlmdCgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiBhIGNvcHkgb2YgeCwgc2hpZnRlZCBieSB5IHBsYWNlcy5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3NxcnQsIlxuXAotc3FydCh4KSAtIFNxdWFyZSByb290IG9mIGEgbm9uLW5lZ2F0aXZlIG51bWJlciB0byBjb250ZXh0IHByZWNpc2lvbi5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3NxcnQsCisic3FydCgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1NxdWFyZSByb290IG9mIGEgbm9uLW5lZ2F0aXZlIG51bWJlciB0byBjb250ZXh0IHByZWNpc2lvbi5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3N1YnRyYWN0LCJcblwKLXN1YnRyYWN0KHgsIHkpIC0gUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4geCBhbmQgeS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3N1YnRyYWN0LAorInN1YnRyYWN0KCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4geCBhbmQgeS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3RvX2VuZ19zdHJpbmcsIlxuXAotdG9fZW5nX3N0cmluZyh4KSAtIENvbnZlcnQgYSBudW1iZXIgdG8gYSBzdHJpbmcsIHVzaW5nIGVuZ2luZWVyaW5nIG5vdGF0aW9uLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfdG9fZW5nX3N0cmluZywKKyJ0b19lbmdfc3RyaW5nKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorQ29udmVydCBhIG51bWJlciB0byBhIHN0cmluZywgdXNpbmcgZW5naW5lZXJpbmcgbm90YXRpb24uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF90b19pbnRlZ3JhbCwiXG5cCi10b19pbnRlZ3JhbCh4KSAtIElkZW50aWNhbCB0byB0b19pbnRlZ3JhbF92YWx1ZSh4KS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3RvX2ludGVncmFsLAorInRvX2ludGVncmFsKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorSWRlbnRpY2FsIHRvIHRvX2ludGVncmFsX3ZhbHVlKHgpLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfdG9faW50ZWdyYWxfZXhhY3QsIlxuXAotdG9faW50ZWdyYWxfZXhhY3QoeCkgLSBSb3VuZCB0byBhbiBpbnRlZ2VyLiBTaWduYWwgaWYgdGhlIHJlc3VsdCBpc1xuXAotcm91bmRlZCBvciBpbmV4YWN0LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfdG9faW50ZWdyYWxfZXhhY3QsCisidG9faW50ZWdyYWxfZXhhY3QoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitSb3VuZCB0byBhbiBpbnRlZ2VyLiBTaWduYWwgaWYgdGhlIHJlc3VsdCBpcyByb3VuZGVkIG9yIGluZXhhY3QuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF90b19pbnRlZ3JhbF92YWx1ZSwiXG5cCi10b19pbnRlZ3JhbF92YWx1ZSh4KSAtIFJvdW5kIHRvIGFuIGludGVnZXIuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF90b19pbnRlZ3JhbF92YWx1ZSwKKyJ0b19pbnRlZ3JhbF92YWx1ZSgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JvdW5kIHRvIGFuIGludGVnZXIuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF90b19zY2lfc3RyaW5nLCJcblwKLXRvX3NjaV9zdHJpbmcoeCkgLSBDb252ZXJ0IGEgbnVtYmVyIHRvIGEgc3RyaW5nIHVzaW5nIHNjaWVudGlmaWMgbm90YXRpb24uXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF90b19zY2lfc3RyaW5nLAorInRvX3NjaV9zdHJpbmcoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitDb252ZXJ0IGEgbnVtYmVyIHRvIGEgc3RyaW5nIHVzaW5nIHNjaWVudGlmaWMgbm90YXRpb24uXG5cCiBcbiIpOwogCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jCmluZGV4IDIxZDIyMjIuLjU5M2Y5ZjUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuYwpAQCAtNDMsNiArNDMsNyBAQAogI2lmZGVmIFBQUk8KICAgI2lmIGRlZmluZWQoX01TQ19WRVIpCiAgICAgI2luY2x1ZGUgPGZsb2F0Lmg+CisgICAgI3ByYWdtYSBmbG9hdF9jb250cm9sKHByZWNpc2UsIG9uKQogICAgICNwcmFnbWEgZmVudl9hY2Nlc3Mob24pCiAgICNlbGlmICFkZWZpbmVkKF9fT3BlbkJTRF9fKSAmJiAhZGVmaW5lZChfX05ldEJTRF9fKQogICAgIC8qIEM5OSAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weSBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKaW5kZXggMjcxMzdiMi4uYWI3ZDViZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5CkBAIC0zNiw2ICszNiw3IEBACiBmcm9tIHJhbmRkZWMgaW1wb3J0IHJhbmRmbG9hdCwgYWxsX3VuYXJ5LCBhbGxfYmluYXJ5LCBhbGxfdGVybmFyeQogZnJvbSByYW5kZGVjIGltcG9ydCB1bmFyeV9vcHRhcmcsIGJpbmFyeV9vcHRhcmcsIHRlcm5hcnlfb3B0YXJnCiBmcm9tIGZvcm1hdGhlbHBlciBpbXBvcnQgcmFuZF9mb3JtYXQsIHJhbmRfbG9jYWxlCitmcm9tIF9weWRlY2ltYWwgaW1wb3J0IF9kZWNfZnJvbV90cmlwbGUKIAogQyA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBmcmVzaD1bJ19kZWNpbWFsJ10pCiBQID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZGVjaW1hbCcsIGJsb2NrZWQ9WydfZGVjaW1hbCddKQpAQCAtMzcwLDcgKzM3MSw3IEBACiAgICAgICAgIHJldHVybiBhYnMoYSAtIGIpCiAKICAgICBkZWYgc3RhbmRhcmRfdWxwKHNlbGYsIGRlYywgcHJlYyk6Ci0gICAgICAgIHJldHVybiBQLl9kZWNfZnJvbV90cmlwbGUoMCwgJzEnLCBkZWMuX2V4cCtsZW4oZGVjLl9pbnQpLXByZWMpCisgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsICcxJywgZGVjLl9leHArbGVuKGRlYy5faW50KS1wcmVjKQogCiAgICAgZGVmIHJvdW5kaW5nX2RpcmVjdGlvbihzZWxmLCB4LCBtb2RlKToKICAgICAgICAgIiIiRGV0ZXJtaW5lIHRoZSBlZmZlY3RpdmUgZGlyZWN0aW9uIG9mIHRoZSByb3VuZGluZyB3aGVuCkBAIC00MDEsMTAgKzQwMiwxMCBAQAogICAgICAgICAjIENvbnZlcnQgaW5maW5pdGllcyB0byB0aGUgbGFyZ2VzdCByZXByZXNlbnRhYmxlIG51bWJlciArIDEuCiAgICAgICAgIHggPSBleGFjdAogICAgICAgICBpZiBleGFjdC5pc19pbmZpbml0ZSgpOgotICAgICAgICAgICAgeCA9IFAuX2RlY19mcm9tX3RyaXBsZShleGFjdC5fc2lnbiwgJzEwJywgY29udGV4dC5wLkVtYXgpCisgICAgICAgICAgICB4ID0gX2RlY19mcm9tX3RyaXBsZShleGFjdC5fc2lnbiwgJzEwJywgY29udGV4dC5wLkVtYXgpCiAgICAgICAgIHkgPSByb3VuZGVkCiAgICAgICAgIGlmIHJvdW5kZWQuaXNfaW5maW5pdGUoKToKLSAgICAgICAgICAgIHkgPSBQLl9kZWNfZnJvbV90cmlwbGUocm91bmRlZC5fc2lnbiwgJzEwJywgY29udGV4dC5wLkVtYXgpCisgICAgICAgICAgICB5ID0gX2RlY19mcm9tX3RyaXBsZShyb3VuZGVkLl9zaWduLCAnMTAnLCBjb250ZXh0LnAuRW1heCkKIAogICAgICAgICAjIGVyciA9IChyb3VuZGVkIC0gZXhhY3QpIC8gdWxwKHJvdW5kZWQpCiAgICAgICAgIHNlbGYubWF4Y3R4LnByZWMgPSBwICogMgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZWxlbWVudHRyZWUuYyBiL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMKaW5kZXggY2Y4MTllOC4uMTFkMWFlYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZWxlbWVudHRyZWUuYworKysgYi9Nb2R1bGVzL19lbGVtZW50dHJlZS5jCkBAIC0xMSw2ICsxMSw4IEBACiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIAorI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCisKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIApAQCAtMTg1LDggKzE4Nyw4IEBACiAgICAgUHlPYmplY3QqIGF0dHJpYjsKIAogICAgIC8qIGNoaWxkIGVsZW1lbnRzICovCi0gICAgaW50IGxlbmd0aDsgLyogYWN0dWFsIG51bWJlciBvZiBpdGVtcyAqLwotICAgIGludCBhbGxvY2F0ZWQ7IC8qIGFsbG9jYXRlZCBpdGVtcyAqLworICAgIFB5X3NzaXplX3QgbGVuZ3RoOyAvKiBhY3R1YWwgbnVtYmVyIG9mIGl0ZW1zICovCisgICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQ7IC8qIGFsbG9jYXRlZCBpdGVtcyAqLwogCiAgICAgLyogdGhpcyBlaXRoZXIgcG9pbnRzIHRvIF9jaGlsZHJlbiBvciB0byBhIG1hbGxvY2VkIGJ1ZmZlciAqLwogICAgIFB5T2JqZWN0KiAqY2hpbGRyZW47CkBAIC0yNTEsNyArMjUzLDcgQEAKIGRlYWxsb2NfZXh0cmEoRWxlbWVudE9iamVjdCogc2VsZikKIHsKICAgICBFbGVtZW50T2JqZWN0RXh0cmEgKm15ZXh0cmE7Ci0gICAgaW50IGk7CisgICAgUHlfc3NpemVfdCBpOwogCiAgICAgaWYgKCFzZWxmLT5leHRyYSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzY4LDYgKzM3MCwxNCBAQAogICAgIHJldHVybiBhdHRyaWI7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfZWxlbWVudHRyZWUKK2NsYXNzIF9lbGVtZW50dHJlZS5FbGVtZW50ICJFbGVtZW50T2JqZWN0ICoiICImRWxlbWVudF9UeXBlIgorY2xhc3MgX2VsZW1lbnR0cmVlLlRyZWVCdWlsZGVyICJUcmVlQnVpbGRlck9iamVjdCAqIiAiJlRyZWVCdWlsZGVyX1R5cGUiCitjbGFzcyBfZWxlbWVudHRyZWUuWE1MUGFyc2VyICJYTUxQYXJzZXJPYmplY3QgKiIgIiZYTUxQYXJzZXJfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTE1OWFhNTBhNTQwNjFjMjJdKi8KKwogc3RhdGljIGludAogZWxlbWVudF9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CkBAIC00NDIsNyArNDUyLDcgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBzaXplID0gc2VsZi0+ZXh0cmEtPmxlbmd0aCArIGV4dHJhOworICAgIHNpemUgPSBzZWxmLT5leHRyYS0+bGVuZ3RoICsgZXh0cmE7ICAvKiBuZXZlciBvdmVyZmxvd3MgKi8KIAogICAgIGlmIChzaXplID4gc2VsZi0+ZXh0cmEtPmFsbG9jYXRlZCkgewogICAgICAgICAvKiB1c2UgUHl0aG9uIDIuNCdzIGxpc3QgZ3Jvd3RoIHN0cmF0ZWd5ICovCkBAIC00NTUsMTEgKzQ2NSw2IEBACiAgICAgICAgIHNpemUgPSBzaXplID8gc2l6ZSA6IDE7CiAgICAgICAgIGlmICgoc2l6ZV90KXNpemUgPiBQWV9TU0laRV9UX01BWC9zaXplb2YoUHlPYmplY3QqKSkKICAgICAgICAgICAgIGdvdG8gbm9tZW1vcnk7Ci0gICAgICAgIGlmIChzaXplID4gSU5UX01BWCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvbyBtYW55IGNoaWxkcmVuIik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KICAgICAgICAgaWYgKHNlbGYtPmV4dHJhLT5jaGlsZHJlbiAhPSBzZWxmLT5leHRyYS0+X2NoaWxkcmVuKSB7CiAgICAgICAgICAgICAvKiBDb3Zlcml0eSBDSUQgIzE4MiBzaXplX2Vycm9yOiBBbGxvY2F0aW5nIDEgYnl0ZXMgdG8gcG9pbnRlcgogICAgICAgICAgICAgICogImNoaWxkcmVuIiwgd2hpY2ggbmVlZHMgYXQgbGVhc3QgNCBieXRlcy4gQWx0aG91Z2ggaXQncyBhCkBAIC02MjAsNyArNjI1LDcgQEAKICAgICBQeV9WSVNJVChKT0lOX09CSihzZWxmLT50YWlsKSk7CiAKICAgICBpZiAoc2VsZi0+ZXh0cmEpIHsKLSAgICAgICAgaW50IGk7CisgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgUHlfVklTSVQoc2VsZi0+ZXh0cmEtPmF0dHJpYik7CiAKICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNlbGYtPmV4dHJhLT5sZW5ndGg7ICsraSkKQEAgLTY2MSwyNSArNjY2LDMzIEBACiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfYXBwZW5kKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIFB5T2JqZWN0KiBlbGVtZW50OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyE6YXBwZW5kIiwgJkVsZW1lbnRfVHlwZSwgJmVsZW1lbnQpKQotICAgICAgICByZXR1cm4gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50LmFwcGVuZAogCi0gICAgaWYgKGVsZW1lbnRfYWRkX3N1YmVsZW1lbnQoc2VsZiwgZWxlbWVudCkgPCAwKQorICAgIHN1YmVsZW1lbnQ6IG9iamVjdChzdWJjbGFzc19vZj0nJkVsZW1lbnRfVHlwZScpCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9hcHBlbmRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3ViZWxlbWVudCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NGE4ODRiN2NmMjI5NWY0IGlucHV0PTNlZDY0OGJlYjViZmEyMmFdKi8KK3sKKyAgICBpZiAoZWxlbWVudF9hZGRfc3ViZWxlbWVudChzZWxmLCBzdWJlbGVtZW50KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfY2xlYXJtZXRob2QoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6Y2xlYXIiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5jbGVhcgogCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9jbGVhcl9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGJjZDdhNTFmOTRjZmZmNiBpbnB1dD0zYzcxOWZmOTRiZjQ1ZGQ2XSovCit7CiAgICAgZGVhbGxvY19leHRyYShzZWxmKTsKIAogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKQEAgLTY5MywxNCArNzA2LDE3IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfY29weShFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBpbnQgaTsKLSAgICBFbGVtZW50T2JqZWN0KiBlbGVtZW50OworLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuX19jb3B5X18KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOl9fY29weV9fIikpCi0gICAgICAgIHJldHVybiBOVUxMOworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19jb3B5X19faW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJjNzAxZWJmZjcyNDc3ODEgaW5wdXQ9YWQ4N2FhZWJlOTU2NzViZl0qLworeworICAgIFB5X3NzaXplX3QgaTsKKyAgICBFbGVtZW50T2JqZWN0KiBlbGVtZW50OwogCiAgICAgZWxlbWVudCA9IChFbGVtZW50T2JqZWN0KikgY3JlYXRlX25ld19lbGVtZW50KAogICAgICAgICBzZWxmLT50YWcsIChzZWxmLT5leHRyYSkgPyBzZWxmLT5leHRyYS0+YXR0cmliIDogUHlfTm9uZSk7CkBAIC03MzIsMTAgKzc0OCwxOSBAQAogICAgIHJldHVybiAoUHlPYmplY3QqKSBlbGVtZW50OwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2RlZXBjb3B5KEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuX19kZWVwY29weV9fCisKKyAgICBtZW1vOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X19fZGVlcGNvcHlfXyhFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbWVtbykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMWYxOTg1MWQxN2JmMjM5IGlucHV0PWRmMjRjMmI2MDI0MzBiNzddKi8KIHsKLSAgICBpbnQgaTsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgRWxlbWVudE9iamVjdCogZWxlbWVudDsKICAgICBQeU9iamVjdCogdGFnOwogICAgIFB5T2JqZWN0KiBhdHRyaWI7CkBAIC03NDMsMTAgKzc2OCw2IEBACiAgICAgUHlPYmplY3QqIHRhaWw7CiAgICAgUHlPYmplY3QqIGlkOwogCi0gICAgUHlPYmplY3QqIG1lbW87Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOl9fZGVlcGNvcHlfXyIsICZtZW1vKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICB0YWcgPSBkZWVwY29weShzZWxmLT50YWcsIG1lbW8pOwogICAgIGlmICghdGFnKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTgxNywxNyArODM4LDIyIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfc2l6ZW9mKFB5T2JqZWN0KiBteXNlbGYsIFB5T2JqZWN0KiBhcmdzKQorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuX19zaXplb2ZfXyAtPiBQeV9zc2l6ZV90CisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5X3NzaXplX3QKK19lbGVtZW50dHJlZV9FbGVtZW50X19fc2l6ZW9mX19faW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJmNzM4Njc3MjEwMDgwMDAgaW5wdXQ9NzBmNGIzMjNkNTVhMTdjMV0qLwogewotICAgIEVsZW1lbnRPYmplY3QgKnNlbGYgPSAoRWxlbWVudE9iamVjdCopbXlzZWxmOwotICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gc2l6ZW9mKEVsZW1lbnRPYmplY3QpOworICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gX1B5T2JqZWN0X1NJWkUoUHlfVFlQRShzZWxmKSk7CiAgICAgaWYgKHNlbGYtPmV4dHJhKSB7CiAgICAgICAgIHJlc3VsdCArPSBzaXplb2YoRWxlbWVudE9iamVjdEV4dHJhKTsKICAgICAgICAgaWYgKHNlbGYtPmV4dHJhLT5jaGlsZHJlbiAhPSBzZWxmLT5leHRyYS0+X2NoaWxkcmVuKQogICAgICAgICAgICAgcmVzdWx0ICs9IHNpemVvZihQeU9iamVjdCopICogc2VsZi0+ZXh0cmEtPmFsbG9jYXRlZDsKICAgICB9Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8qIGRpY3Qga2V5cyBmb3IgZ2V0c3RhdGUvc2V0c3RhdGUuICovCkBAIC04NDMsMTAgKzg2OSwxNiBAQAogICogYW55IHVubmVjZXNzYXJ5IHN0cnVjdHVyZXMgdGhlcmU7IGFuZCAoYikgaXQgYnV5cyBjb21wYXRpYmlsaXR5IHdpdGggMy4yCiAgKiBwaWNrbGVzLiAgU2VlIGlzc3VlICMxNjA3Ni4KICAqLworLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuX19nZXRzdGF0ZV9fCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWVsZW1lbnRfZ2V0c3RhdGUoRWxlbWVudE9iamVjdCAqc2VsZikKK19lbGVtZW50dHJlZV9FbGVtZW50X19fZ2V0c3RhdGVfX19pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzcyNzlhZWViNmJiNWIwNCBpbnB1dD1mMGQxNmQ3ZWMyZjdhZGMxXSovCiB7Ci0gICAgaW50IGksIG5vYXR0cmliOworICAgIFB5X3NzaXplX3QgaSwgbm9hdHRyaWI7CiAgICAgUHlPYmplY3QgKmluc3RhbmNlZGljdCA9IE5VTEwsICpjaGlsZHJlbjsKIAogICAgIC8qIEJ1aWxkIGEgbGlzdCBvZiBjaGlsZHJlbi4gKi8KQEAgLTg5NiwxNiArOTI4LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGFpbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjaGlsZHJlbikKIHsKLSAgICBpbnQgaSwgbmNoaWxkcmVuOworICAgIFB5X3NzaXplX3QgaSwgbmNoaWxkcmVuOwogCiAgICAgaWYgKCF0YWcpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInRhZyBtYXkgbm90IGJlIE5VTEwiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgUHlfQ0xFQVIoc2VsZi0+dGFnKTsKLSAgICBzZWxmLT50YWcgPSB0YWc7Ci0gICAgUHlfSU5DUkVGKHNlbGYtPnRhZyk7CisgICAgUHlfSU5DUkVGKHRhZyk7CisgICAgUHlfU0VUUkVGKHNlbGYtPnRhZywgdGFnKTsKIAogICAgIF9jbGVhcl9qb2luZWRfcHRyKCZzZWxmLT50ZXh0KTsKICAgICBzZWxmLT50ZXh0ID0gdGV4dCA/IEpPSU5fU0VUKHRleHQsIFB5TGlzdF9DaGVja0V4YWN0KHRleHQpKSA6IFB5X05vbmU7CkBAIC05MjEsMTggKzk1MiwxMSBAQAogCiAgICAgLyogQ29tcHV0ZSAnbmNoaWxkcmVuJy4gKi8KICAgICBpZiAoY2hpbGRyZW4pIHsKLSAgICAgICAgUHlfc3NpemVfdCBzaXplOwogICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayhjaGlsZHJlbikpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICInX2NoaWxkcmVuJyBpcyBub3QgYSBsaXN0Iik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBzaXplID0gUHlMaXN0X1NpemUoY2hpbGRyZW4pOwotICAgICAgICAvKiBleHBhdCBsaW1pdHMgbmNoaWxkcmVuIHRvIGludCAqLwotICAgICAgICBpZiAoc2l6ZSA+IElOVF9NQVgpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAidG9vIG1hbnkgY2hpbGRyZW4iKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIG5jaGlsZHJlbiA9IChpbnQpc2l6ZTsKKyAgICAgICAgbmNoaWxkcmVuID0gUHlMaXN0X1NpemUoY2hpbGRyZW4pOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgbmNoaWxkcmVuID0gMDsKQEAgLTk1NSw5ICs5NzksOCBAQAogCiAgICAgLyogU3Rhc2ggYXR0cmliLiAqLwogICAgIGlmIChhdHRyaWIpIHsKLSAgICAgICAgUHlfQ0xFQVIoc2VsZi0+ZXh0cmEtPmF0dHJpYik7Ci0gICAgICAgIHNlbGYtPmV4dHJhLT5hdHRyaWIgPSBhdHRyaWI7CiAgICAgICAgIFB5X0lOQ1JFRihhdHRyaWIpOworICAgICAgICBQeV9TRVRSRUYoc2VsZi0+ZXh0cmEtPmF0dHJpYiwgYXR0cmliKTsKICAgICB9CiAKICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTk2Niw2ICs5ODksNyBAQAogLyogX19zZXRzdGF0ZV9fIGZvciBFbGVtZW50IGluc3RhbmNlIGZyb20gdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbi4KICAqICdzdGF0ZScgc2hvdWxkIGJlIHRoZSBpbnN0YW5jZSBkaWN0LgogICovCisKIHN0YXRpYyBQeU9iamVjdCAqCiBlbGVtZW50X3NldHN0YXRlX2Zyb21fUHl0aG9uKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdGF0ZSkKIHsKQEAgLTk5MSw4ICsxMDE1LDE3IEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuX19zZXRzdGF0ZV9fCisKKyAgICBzdGF0ZTogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1lbGVtZW50X3NldHN0YXRlKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdGF0ZSkKK19lbGVtZW50dHJlZV9FbGVtZW50X19fc2V0c3RhdGVfXyhFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RhdGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWEyOGJmMzQ5MWIxZjc1ZSBpbnB1dD1hYWY4MGFiZWE3YzFlM2I5XSovCiB7CiAgICAgaWYgKCFQeURpY3RfQ2hlY2tFeGFjdChzdGF0ZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKQEAgLTEwNDYsMjEgKzEwNzksMjYgQEAKICAgICByZXR1cm4gMTsgLyogdW5rbm93biB0eXBlOyBtaWdodCBiZSBwYXRoIGV4cHJlc3Npb24gKi8KIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9leHRlbmQoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5leHRlbmQKKworICAgIGVsZW1lbnRzOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2V4dGVuZChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZWxlbWVudHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjZlNjdmYzJmZjUyOTE5MSBpbnB1dD04MDdiYzRmMzFjNjlmN2MwXSovCiB7CiAgICAgUHlPYmplY3QqIHNlcTsKICAgICBQeV9zc2l6ZV90IGk7CiAKLSAgICBQeU9iamVjdCogc2VxX2luOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpleHRlbmQiLCAmc2VxX2luKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzZXEgPSBQeVNlcXVlbmNlX0Zhc3Qoc2VxX2luLCAiIik7CisgICAgc2VxID0gUHlTZXF1ZW5jZV9GYXN0KGVsZW1lbnRzLCAiIik7CiAgICAgaWYgKCFzZXEpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KAogICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgImV4cGVjdGVkIHNlcXVlbmNlLCBub3QgXCIlLjIwMHNcIiIsIFB5X1RZUEUoc2VxX2luKS0+dHBfbmFtZQorICAgICAgICAgICAgImV4cGVjdGVkIHNlcXVlbmNlLCBub3QgXCIlLjIwMHNcIiIsIFB5X1RZUEUoZWxlbWVudHMpLT50cF9uYW1lCiAgICAgICAgICAgICApOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xMDkxLDIzICsxMTI5LDI2IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfZmluZChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5maW5kCisKKyAgICBwYXRoOiBvYmplY3QKKyAgICBuYW1lc3BhY2VzOiBvYmplY3QgPSBOb25lCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MWI0M2YwZjBiZWNhZmFlIGlucHV0PTM1OWI2OTg1ZjY0ODlkMmVdKi8KIHsKLSAgICBpbnQgaTsKLSAgICBQeU9iamVjdCogdGFnOwotICAgIFB5T2JqZWN0KiBuYW1lc3BhY2VzID0gUHlfTm9uZTsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIDB9OworICAgIFB5X3NzaXplX3QgaTsKICAgICBlbGVtZW50dHJlZXN0YXRlICpzdCA9IEVUX1NUQVRFX0dMT0JBTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE86ZmluZCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFnLCAmbmFtZXNwYWNlcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkgeworICAgIGlmIChjaGVja3BhdGgocGF0aCkgfHwgbmFtZXNwYWNlcyAhPSBQeV9Ob25lKSB7CiAgICAgICAgIF9QeV9JREVOVElGSUVSKGZpbmQpOwogICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKLSAgICAgICAgICAgIHN0LT5lbGVtZW50cGF0aF9vYmosICZQeUlkX2ZpbmQsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMKKyAgICAgICAgICAgIHN0LT5lbGVtZW50cGF0aF9vYmosICZQeUlkX2ZpbmQsICJPT08iLCBzZWxmLCBwYXRoLCBuYW1lc3BhY2VzCiAgICAgICAgICAgICApOwogICAgIH0KIApAQCAtMTEyMCw3ICsxMTYxLDcgQEAKICAgICAgICAgaWYgKCFFbGVtZW50X0NoZWNrRXhhY3QoaXRlbSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOwotICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgoKEVsZW1lbnRPYmplY3QqKWl0ZW0pLT50YWcsIHRhZywgUHlfRVEpOworICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgoKEVsZW1lbnRPYmplY3QqKWl0ZW0pLT50YWcsIHBhdGgsIFB5X0VRKTsKICAgICAgICAgaWYgKHJjID4gMCkKICAgICAgICAgICAgIHJldHVybiBpdGVtOwogICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CkBAIC0xMTMxLDI0ICsxMTcyLDI4IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfZmluZHRleHQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuZmluZHRleHQKKworICAgIHBhdGg6IG9iamVjdAorICAgIGRlZmF1bHQ6IG9iamVjdCA9IE5vbmUKKyAgICBuYW1lc3BhY2VzOiBvYmplY3QgPSBOb25lCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04M2IzYmE0NTM1ZDMwOGQyIGlucHV0PWI1M2E4NWFhNWFhMmE5MTZdKi8KIHsKLSAgICBpbnQgaTsKLSAgICBQeU9iamVjdCogdGFnOwotICAgIFB5T2JqZWN0KiBkZWZhdWx0X3ZhbHVlID0gUHlfTm9uZTsKLSAgICBQeU9iamVjdCogbmFtZXNwYWNlcyA9IFB5X05vbmU7CisgICAgUHlfc3NpemVfdCBpOwogICAgIF9QeV9JREVOVElGSUVSKGZpbmR0ZXh0KTsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAiZGVmYXVsdCIsICJuYW1lc3BhY2VzIiwgMH07CiAgICAgZWxlbWVudHRyZWVzdGF0ZSAqc3QgPSBFVF9TVEFURV9HTE9CQUw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPTzpmaW5kdGV4dCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFnLCAmZGVmYXVsdF92YWx1ZSwgJm5hbWVzcGFjZXMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChjaGVja3BhdGgodGFnKSB8fCBuYW1lc3BhY2VzICE9IFB5X05vbmUpCisgICAgaWYgKGNoZWNrcGF0aChwYXRoKSB8fCBuYW1lc3BhY2VzICE9IFB5X05vbmUpCiAgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAotICAgICAgICAgICAgc3QtPmVsZW1lbnRwYXRoX29iaiwgJlB5SWRfZmluZHRleHQsICJPT09PIiwgc2VsZiwgdGFnLCBkZWZhdWx0X3ZhbHVlLCBuYW1lc3BhY2VzCisgICAgICAgICAgICBzdC0+ZWxlbWVudHBhdGhfb2JqLCAmUHlJZF9maW5kdGV4dCwgIk9PT08iLCBzZWxmLCBwYXRoLCBkZWZhdWx0X3ZhbHVlLCBuYW1lc3BhY2VzCiAgICAgICAgICAgICApOwogCiAgICAgaWYgKCFzZWxmLT5leHRyYSkgewpAQCAtMTE2Miw3ICsxMjA3LDcgQEAKICAgICAgICAgaWYgKCFFbGVtZW50X0NoZWNrRXhhY3QoaXRlbSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOwotICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdGVtLT50YWcsIHRhZywgUHlfRVEpOworICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdGVtLT50YWcsIHBhdGgsIFB5X0VRKTsKICAgICAgICAgaWYgKHJjID4gMCkgewogICAgICAgICAgICAgUHlPYmplY3QqIHRleHQgPSBlbGVtZW50X2dldF90ZXh0KGl0ZW0pOwogICAgICAgICAgICAgaWYgKHRleHQgPT0gUHlfTm9uZSkgewpAQCAtMTE4MiwxOSArMTIyNywyMyBAQAogICAgIHJldHVybiBkZWZhdWx0X3ZhbHVlOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2ZpbmRhbGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQotewotICAgIGludCBpOwotICAgIFB5T2JqZWN0KiBvdXQ7Ci0gICAgUHlPYmplY3QqIHRhZzsKLSAgICBQeU9iamVjdCogbmFtZXNwYWNlcyA9IFB5X05vbmU7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCAwfTsKLSAgICBlbGVtZW50dHJlZXN0YXRlICpzdCA9IEVUX1NUQVRFX0dMT0JBTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50LmZpbmRhbGwKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE86ZmluZGFsbCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFnLCAmbmFtZXNwYWNlcykpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIHBhdGg6IG9iamVjdAorICAgIG5hbWVzcGFjZXM6IG9iamVjdCA9IE5vbmUKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFhMGJkOWY1NTQxYjcxMWQgaW5wdXQ9NGQ5ZTY1MDVhNjM4NTUwY10qLworeworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeU9iamVjdCogb3V0OworICAgIFB5T2JqZWN0KiB0YWcgPSBwYXRoOworICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0ID0gRVRfU1RBVEVfR0xPQkFMOwogCiAgICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkgewogICAgICAgICBfUHlfSURFTlRJRklFUihmaW5kYWxsKTsKQEAgLTEyMjgsMzYgKzEyNzcsNDEgQEAKICAgICByZXR1cm4gb3V0OwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2l0ZXJmaW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLXsKLSAgICBQeU9iamVjdCogdGFnOwotICAgIFB5T2JqZWN0KiBuYW1lc3BhY2VzID0gUHlfTm9uZTsKLSAgICBfUHlfSURFTlRJRklFUihpdGVyZmluZCk7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCAwfTsKLSAgICBlbGVtZW50dHJlZXN0YXRlICpzdCA9IEVUX1NUQVRFX0dMT0JBTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50Lml0ZXJmaW5kCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPOml0ZXJmaW5kIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZuYW1lc3BhY2VzKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgcGF0aDogb2JqZWN0CisgICAgbmFtZXNwYWNlczogb2JqZWN0ID0gTm9uZQorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lY2RkNTZkNjNiMTlkNDBmIGlucHV0PWFiYjk3NGUzNTBmYjY1YzddKi8KK3sKKyAgICBQeU9iamVjdCogdGFnID0gcGF0aDsKKyAgICBfUHlfSURFTlRJRklFUihpdGVyZmluZCk7CisgICAgZWxlbWVudHRyZWVzdGF0ZSAqc3QgPSBFVF9TVEFURV9HTE9CQUw7CiAKICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKICAgICAgICAgc3QtPmVsZW1lbnRwYXRoX29iaiwgJlB5SWRfaXRlcmZpbmQsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMpOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2dldChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3ZHMpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5nZXQKKworICAgIGtleTogb2JqZWN0CisgICAgZGVmYXVsdDogb2JqZWN0ID0gTm9uZQorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTIzYzYxNDE0MjU5NWQ3NSBpbnB1dD1lZTE1M2JiZjhjZGIyNDZlXSovCiB7CiAgICAgUHlPYmplY3QqIHZhbHVlOwotICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsia2V5IiwgImRlZmF1bHQiLCAwfTsKLQotICAgIFB5T2JqZWN0KiBrZXk7Ci0gICAgUHlPYmplY3QqIGRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TzpnZXQiLCBrd2xpc3QsICZrZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRlZmF1bHRfdmFsdWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghc2VsZi0+ZXh0cmEgfHwgc2VsZi0+ZXh0cmEtPmF0dHJpYiA9PSBQeV9Ob25lKQogICAgICAgICB2YWx1ZSA9IGRlZmF1bHRfdmFsdWU7CkBAIC0xMjcxLDE3ICsxMzI1LDIwIEBACiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2dldGNoaWxkcmVuKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuZ2V0Y2hpbGRyZW4KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0Y2hpbGRyZW5faW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU1MGZmZTExODYzN2IxNGYgaW5wdXQ9MGY3NTRkZmRlZDE1MGQ1Zl0qLwogewotICAgIGludCBpOworICAgIFB5X3NzaXplX3QgaTsKICAgICBQeU9iamVjdCogbGlzdDsKIAogICAgIC8qIEZJWE1FOiByZXBvcnQgYXMgZGVwcmVjYXRlZD8gKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmdldGNoaWxkcmVuIikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKCFzZWxmLT5leHRyYSkKICAgICAgICAgcmV0dXJuIFB5TGlzdF9OZXcoMCk7CiAKQEAgLTEzMDMsMjUgKzEzNjAsNDEgQEAKIGNyZWF0ZV9lbGVtZW50aXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFnLCBpbnQgZ2V0dGV4dCk7CiAKIAotc3RhdGljIFB5T2JqZWN0ICoKLWVsZW1lbnRfaXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCi17Ci0gICAgUHlPYmplY3QqIHRhZyA9IFB5X05vbmU7Ci0gICAgc3RhdGljIGNoYXIqIGt3bGlzdFtdID0geyJ0YWciLCAwfTsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50Lml0ZXIKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8TzppdGVyIiwga3dsaXN0LCAmdGFnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdGFnOiBvYmplY3QgPSBOb25lCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNmNDlmOWE4NjI5NDFjYzUgaW5wdXQ9Nzc0ZDViMTJlNTczYWVkZF0qLworeworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodGFnKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHRhZykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh0YWcpID09IDEgJiYgUHlVbmljb2RlX1JFQURfQ0hBUih0YWcsIDApID09ICcqJykKKyAgICAgICAgICAgIHRhZyA9IFB5X05vbmU7CisgICAgfQorICAgIGVsc2UgaWYgKFB5Qnl0ZXNfQ2hlY2sodGFnKSkgeworICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRSh0YWcpID09IDEgJiYgKlB5Qnl0ZXNfQVNfU1RSSU5HKHRhZykgPT0gJyonKQorICAgICAgICAgICAgdGFnID0gUHlfTm9uZTsKKyAgICB9CiAKICAgICByZXR1cm4gY3JlYXRlX2VsZW1lbnRpdGVyKHNlbGYsIHRhZywgMCk7CiB9CiAKIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9pdGVydGV4dChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjppdGVydGV4dCIpKQotICAgICAgICByZXR1cm4gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50Lml0ZXJ0ZXh0CiAKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJ0ZXh0X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ZmEzNGIyZmJjYjY1ZGY2IGlucHV0PWFmOGYwZTQyY2IyMzljODldKi8KK3sKICAgICByZXR1cm4gY3JlYXRlX2VsZW1lbnRpdGVyKHNlbGYsIFB5X05vbmUsIDEpOwogfQogCkBAIC0xMzQzLDE2ICsxNDE2LDIxIEBACiAgICAgcmV0dXJuIHNlbGYtPmV4dHJhLT5jaGlsZHJlbltpbmRleF07CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfaW5zZXJ0KEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIGludCBpOworLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuaW5zZXJ0CiAKLSAgICBpbnQgaW5kZXg7Ci0gICAgUHlPYmplY3QqIGVsZW1lbnQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyE6aW5zZXJ0IiwgJmluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAmRWxlbWVudF9UeXBlLCAmZWxlbWVudCkpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGluZGV4OiBQeV9zc2l6ZV90CisgICAgc3ViZWxlbWVudDogb2JqZWN0KHN1YmNsYXNzX29mPScmRWxlbWVudF9UeXBlJykKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2luc2VydF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3ViZWxlbWVudCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05OTBhZGZlZjRkNDI0YzBiIGlucHV0PWNkNmZiZmNkYWI1MmQ3YThdKi8KK3sKKyAgICBQeV9zc2l6ZV90IGk7CiAKICAgICBpZiAoIXNlbGYtPmV4dHJhKSB7CiAgICAgICAgIGlmIChjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCkgPCAwKQpAQCAtMTM3MywzMiArMTQ1MSwzOCBAQAogICAgIGZvciAoaSA9IHNlbGYtPmV4dHJhLT5sZW5ndGg7IGkgPiBpbmRleDsgaS0tKQogICAgICAgICBzZWxmLT5leHRyYS0+Y2hpbGRyZW5baV0gPSBzZWxmLT5leHRyYS0+Y2hpbGRyZW5baS0xXTsKIAotICAgIFB5X0lOQ1JFRihlbGVtZW50KTsKLSAgICBzZWxmLT5leHRyYS0+Y2hpbGRyZW5baW5kZXhdID0gZWxlbWVudDsKKyAgICBQeV9JTkNSRUYoc3ViZWxlbWVudCk7CisgICAgc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2luZGV4XSA9IHN1YmVsZW1lbnQ7CiAKICAgICBzZWxmLT5leHRyYS0+bGVuZ3RoKys7CiAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9pdGVtcyhFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjppdGVtcyIpKQotICAgICAgICByZXR1cm4gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50Lml0ZW1zCiAKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZW1zX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZGIyYzc3OGNlM2Y1YTRkIGlucHV0PWFkYmUwOWFhZWE0NzQ0NDddKi8KK3sKICAgICBpZiAoIXNlbGYtPmV4dHJhIHx8IHNlbGYtPmV4dHJhLT5hdHRyaWIgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIFB5TGlzdF9OZXcoMCk7CiAKICAgICByZXR1cm4gUHlEaWN0X0l0ZW1zKHNlbGYtPmV4dHJhLT5hdHRyaWIpOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2tleXMoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6a2V5cyIpKQotICAgICAgICByZXR1cm4gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50LmtleXMKIAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfa2V5c19pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmM1YmZhYmJmMjBlZWIzYyBpbnB1dD1mMDJjYWY1YjQ5NmI1YjBiXSovCit7CiAgICAgaWYgKCFzZWxmLT5leHRyYSB8fCBzZWxmLT5leHRyYS0+YXR0cmliID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiBQeUxpc3RfTmV3KDApOwogCkBAIC0xNDE0LDE2ICsxNDk4LDIyIEBACiAgICAgcmV0dXJuIHNlbGYtPmV4dHJhLT5sZW5ndGg7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfbWFrZWVsZW1lbnQoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5tYWtlZWxlbWVudAorCisgICAgdGFnOiBvYmplY3QKKyAgICBhdHRyaWI6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfbWFrZWVsZW1lbnRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXR0cmliKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQxMDk4MzJkNWJiNzg5ZWYgaW5wdXQ9OTQ4MGQxZDJlM2U2ODIzNV0qLwogewogICAgIFB5T2JqZWN0KiBlbGVtOwogCi0gICAgUHlPYmplY3QqIHRhZzsKLSAgICBQeU9iamVjdCogYXR0cmliOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086bWFrZWVsZW1lbnQiLCAmdGFnLCAmYXR0cmliKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBhdHRyaWIgPSBQeURpY3RfQ29weShhdHRyaWIpOwogICAgIGlmICghYXR0cmliKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE0MzUsMTYgKzE1MjUsMjEgQEAKICAgICByZXR1cm4gZWxlbTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9yZW1vdmUoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgaW50IGk7Ci0gICAgaW50IHJjOwotICAgIFB5T2JqZWN0KiBlbGVtZW50OwotICAgIFB5T2JqZWN0KiBmb3VuZDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50LnJlbW92ZQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPITpyZW1vdmUiLCAmRWxlbWVudF9UeXBlLCAmZWxlbWVudCkpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIHN1YmVsZW1lbnQ6IG9iamVjdChzdWJjbGFzc19vZj0nJkVsZW1lbnRfVHlwZScpCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9yZW1vdmVfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3ViZWxlbWVudCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zOGZlNmMwN2Q2ZDg3ZDFmIGlucHV0PWQ1MmZjMjhlZGVkYzBiZDhdKi8KK3sKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgaW50IHJjOworICAgIFB5T2JqZWN0ICpmb3VuZDsKIAogICAgIGlmICghc2VsZi0+ZXh0cmEpIHsKICAgICAgICAgLyogZWxlbWVudCBoYXMgbm8gY2hpbGRyZW4sIHNvIHJhaXNlIGV4Y2VwdGlvbiAqLwpAQCAtMTQ1Niw5ICsxNTUxLDkgQEAKICAgICB9CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZi0+ZXh0cmEtPmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGlmIChzZWxmLT5leHRyYS0+Y2hpbGRyZW5baV0gPT0gZWxlbWVudCkKKyAgICAgICAgaWYgKHNlbGYtPmV4dHJhLT5jaGlsZHJlbltpXSA9PSBzdWJlbGVtZW50KQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHJjID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHNlbGYtPmV4dHJhLT5jaGlsZHJlbltpXSwgZWxlbWVudCwgUHlfRVEpOworICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzZWxmLT5leHRyYS0+Y2hpbGRyZW5baV0sIHN1YmVsZW1lbnQsIFB5X0VRKTsKICAgICAgICAgaWYgKHJjID4gMCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAocmMgPCAwKQpAQCAtMTQ2Niw3ICsxNTYxLDcgQEAKICAgICB9CiAKICAgICBpZiAoaSA+PSBzZWxmLT5leHRyYS0+bGVuZ3RoKSB7Ci0gICAgICAgIC8qIGVsZW1lbnQgaXMgbm90IGluIGNoaWxkcmVuLCBzbyByYWlzZSBleGNlcHRpb24gKi8KKyAgICAgICAgLyogc3ViZWxlbWVudCBpcyBub3QgaW4gY2hpbGRyZW4sIHNvIHJhaXNlIGV4Y2VwdGlvbiAqLwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoCiAgICAgICAgICAgICBQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgImxpc3QucmVtb3ZlKHgpOiB4IG5vdCBpbiBsaXN0IgpAQCAtMTQ5MywxNiArMTU4OCwyMiBAQAogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxFbGVtZW50IGF0ICVwPiIsIHNlbGYpOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X3NldChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50LnNldAorCisgICAga2V5OiBvYmplY3QKKyAgICB2YWx1ZTogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9zZXRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZiOTM4ODA2YmUzYzU2NTYgaW5wdXQ9MWVmZTkwZjdkODJiM2ZlOV0qLwogewogICAgIFB5T2JqZWN0KiBhdHRyaWI7CiAKLSAgICBQeU9iamVjdCoga2V5OwotICAgIFB5T2JqZWN0KiB2YWx1ZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POnNldCIsICZrZXksICZ2YWx1ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKCFzZWxmLT5leHRyYSkgewogICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTUxOSwxOSArMTYyMCwxOCBAQAogfQogCiBzdGF0aWMgaW50Ci1lbGVtZW50X3NldGl0ZW0oUHlPYmplY3QqIHNlbGZfLCBQeV9zc2l6ZV90IGluZGV4XywgUHlPYmplY3QqIGl0ZW0pCitlbGVtZW50X3NldGl0ZW0oUHlPYmplY3QqIHNlbGZfLCBQeV9zc2l6ZV90IGluZGV4LCBQeU9iamVjdCogaXRlbSkKIHsKICAgICBFbGVtZW50T2JqZWN0KiBzZWxmID0gKEVsZW1lbnRPYmplY3QqKSBzZWxmXzsKLSAgICBpbnQgaSwgaW5kZXg7CisgICAgUHlfc3NpemVfdCBpOwogICAgIFB5T2JqZWN0KiBvbGQ7CiAKLSAgICBpZiAoIXNlbGYtPmV4dHJhIHx8IGluZGV4XyA8IDAgfHwgaW5kZXhfID49IHNlbGYtPmV4dHJhLT5sZW5ndGgpIHsKKyAgICBpZiAoIXNlbGYtPmV4dHJhIHx8IGluZGV4IDwgMCB8fCBpbmRleCA+PSBzZWxmLT5leHRyYS0+bGVuZ3RoKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZygKICAgICAgICAgICAgIFB5RXhjX0luZGV4RXJyb3IsCiAgICAgICAgICAgICAiY2hpbGQgYXNzaWdubWVudCBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBpbmRleCA9IChpbnQpaW5kZXhfOwogCiAgICAgb2xkID0gc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2luZGV4XTsKIApAQCAtMTYzMiw3ICsxNzMyLDYgQEAKICAgICAgICAgICAgICAgICAmc3RhcnQsICZzdG9wLCAmc3RlcCwgJnNsaWNlbGVuKSA8IDApIHsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICBhc3NlcnQoc2xpY2VsZW4gPD0gc2VsZi0+ZXh0cmEtPmxlbmd0aCk7CiAKICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKICAgICAgICAgICAgIC8qIERlbGV0ZSBzbGljZSAqLwpAQCAtMTY5NCw3ICsxNzkzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgKHNlbGYtPmV4dHJhLT5sZW5ndGggLSBjdXIpICogc2l6ZW9mKFB5T2JqZWN0ICopKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc2VsZi0+ZXh0cmEtPmxlbmd0aCAtPSAoaW50KXNsaWNlbGVuOworICAgICAgICAgICAgc2VsZi0+ZXh0cmEtPmxlbmd0aCAtPSBzbGljZWxlbjsKIAogICAgICAgICAgICAgLyogRGlzY2FyZCB0aGUgcmVjeWNsZSBsaXN0IHdpdGggYWxsIHRoZSBkZWxldGVkIHN1Yi1lbGVtZW50cyAqLwogICAgICAgICAgICAgUHlfWERFQ1JFRihyZWN5Y2xlKTsKQEAgLTE3MzAsOCArMTgyOSw2IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGFzc2VydChuZXdsZW4gLSBzbGljZWxlbiA8PSBJTlRfTUFYIC0gc2VsZi0+ZXh0cmEtPmxlbmd0aCk7Ci0gICAgICAgIGFzc2VydChuZXdsZW4gLSBzbGljZWxlbiA+PSAtc2VsZi0+ZXh0cmEtPmxlbmd0aCk7CiAKICAgICAgICAgaWYgKHNsaWNlbGVuID4gMCkgewogICAgICAgICAgICAgLyogdG8gYXZvaWQgcmVjdXJzaXZlIGNhbGxzIHRvIHRoaXMgbWV0aG9kICh2aWEgZGVjcmVmKSwgbW92ZQpAQCAtMTc2NSw3ICsxODYyLDcgQEAKICAgICAgICAgICAgIHNlbGYtPmV4dHJhLT5jaGlsZHJlbltjdXJdID0gZWxlbWVudDsKICAgICAgICAgfQogCi0gICAgICAgIHNlbGYtPmV4dHJhLT5sZW5ndGggKz0gKGludCkobmV3bGVuIC0gc2xpY2VsZW4pOworICAgICAgICBzZWxmLT5leHRyYS0+bGVuZ3RoICs9IG5ld2xlbiAtIHNsaWNlbGVuOwogCiAgICAgICAgIFB5X0RFQ1JFRihzZXEpOwogCkBAIC0xNzgxLDQzICsxODc4LDYgQEAKICAgICB9CiB9CiAKLXN0YXRpYyBQeU1ldGhvZERlZiBlbGVtZW50X21ldGhvZHNbXSA9IHsKLQotICAgIHsiY2xlYXIiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfY2xlYXJtZXRob2QsIE1FVEhfVkFSQVJHU30sCi0KLSAgICB7ImdldCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9nZXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFN9LAotICAgIHsic2V0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X3NldCwgTUVUSF9WQVJBUkdTfSwKLQotICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9maW5kLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKLSAgICB7ImZpbmR0ZXh0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2ZpbmR0ZXh0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKLSAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZmluZGFsbCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCi0KLSAgICB7ImFwcGVuZCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9hcHBlbmQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJleHRlbmQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZXh0ZW5kLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiaW5zZXJ0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2luc2VydCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7InJlbW92ZSIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9yZW1vdmUsIE1FVEhfVkFSQVJHU30sCi0KLSAgICB7Iml0ZXIiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlciwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCi0gICAgeyJpdGVydGV4dCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pdGVydGV4dCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7Iml0ZXJmaW5kIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2l0ZXJmaW5kLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKLQotICAgIHsiZ2V0aXRlcmF0b3IiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlciwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCi0gICAgeyJnZXRjaGlsZHJlbiIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9nZXRjaGlsZHJlbiwgTUVUSF9WQVJBUkdTfSwKLQotICAgIHsiaXRlbXMiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlbXMsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJrZXlzIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2tleXMsIE1FVEhfVkFSQVJHU30sCi0KLSAgICB7Im1ha2VlbGVtZW50IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X21ha2VlbGVtZW50LCBNRVRIX1ZBUkFSR1N9LAotCi0gICAgeyJfX2NvcHlfXyIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9jb3B5LCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2RlZXBjb3B5LCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiX19zaXplb2ZfXyIsIGVsZW1lbnRfc2l6ZW9mLCBNRVRIX05PQVJHU30sCi0gICAgeyJfX2dldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pZWxlbWVudF9nZXRzdGF0ZSwgTUVUSF9OT0FSR1N9LAotICAgIHsiX19zZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKWVsZW1lbnRfc2V0c3RhdGUsIE1FVEhfT30sCi0KLSAgICB7TlVMTCwgTlVMTH0KLX07Ci0KIHN0YXRpYyBQeU9iamVjdCoKIGVsZW1lbnRfZ2V0YXR0cm8oRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIG5hbWVvYmopCiB7CkBAIC0xODgyLDkgKzE5NDIsOCBAQAogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoc3RyY21wKG5hbWUsICJ0YWciKSA9PSAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmLT50YWcpOwotICAgICAgICBzZWxmLT50YWcgPSB2YWx1ZTsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYtPnRhZyk7CisgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgICAgIFB5X1NFVFJFRihzZWxmLT50YWcsIHZhbHVlKTsKICAgICB9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAidGV4dCIpID09IDApIHsKICAgICAgICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPnRleHQpKTsKICAgICAgICAgc2VsZi0+dGV4dCA9IHZhbHVlOwpAQCAtMTg5OCw5ICsxOTU3LDggQEAKICAgICAgICAgICAgIGlmIChjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCkgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoc2VsZi0+ZXh0cmEtPmF0dHJpYik7Ci0gICAgICAgIHNlbGYtPmV4dHJhLT5hdHRyaWIgPSB2YWx1ZTsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYtPmV4dHJhLT5hdHRyaWIpOworICAgICAgICBQeV9JTkNSRUYodmFsdWUpOworICAgICAgICBQeV9TRVRSRUYoc2VsZi0+ZXh0cmEtPmF0dHJpYiwgdmFsdWUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKICAgICAgICAgICAgICJDYW4ndCBzZXQgYXJiaXRyYXJ5IGF0dHJpYnV0ZXMgb24gRWxlbWVudCIpOwpAQCAtMTkyMCw1NCArMTk3OCw2IEBACiAgICAgMCwKIH07CiAKLXN0YXRpYyBQeU1hcHBpbmdNZXRob2RzIGVsZW1lbnRfYXNfbWFwcGluZyA9IHsKLSAgICAobGVuZnVuYykgZWxlbWVudF9sZW5ndGgsCi0gICAgKGJpbmFyeWZ1bmMpIGVsZW1lbnRfc3Vic2NyLAotICAgIChvYmpvYmphcmdwcm9jKSBlbGVtZW50X2Fzc19zdWJzY3IsCi19OwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IEVsZW1lbnRfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAieG1sLmV0cmVlLkVsZW1lbnRUcmVlLkVsZW1lbnQiLCBzaXplb2YoRWxlbWVudE9iamVjdCksIDAsCi0gICAgLyogbWV0aG9kcyAqLwotICAgIChkZXN0cnVjdG9yKWVsZW1lbnRfZGVhbGxvYywgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAocmVwcmZ1bmMpZWxlbWVudF9yZXByLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCi0gICAgJmVsZW1lbnRfYXNfc2VxdWVuY2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAmZWxlbWVudF9hc19tYXBwaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KLSAgICAoZ2V0YXR0cm9mdW5jKWVsZW1lbnRfZ2V0YXR0cm8sICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwotICAgIChzZXRhdHRyb2Z1bmMpZWxlbWVudF9zZXRhdHRybywgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8IFB5X1RQRkxBR1NfSEFWRV9HQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpZWxlbWVudF9nY190cmF2ZXJzZSwgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgKGlucXVpcnkpZWxlbWVudF9nY19jbGVhciwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIG9mZnNldG9mKEVsZW1lbnRPYmplY3QsIHdlYWtyZWZsaXN0KSwgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgZWxlbWVudF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAoaW5pdHByb2MpZWxlbWVudF9pbml0LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCi0gICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICBlbGVtZW50X25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCi19OwotCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBFbGVtZW50IGl0ZXJhdG9yICoqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qIEVsZW1lbnRJdGVyT2JqZWN0IHJlcHJlc2VudHMgdGhlIGl0ZXJhdGlvbiBzdGF0ZSBvdmVyIGFuIFhNTCBlbGVtZW50IGluCkBAIC0yMDU4LDYgKzIwNjgsNyBAQAogICAgIEVsZW1lbnRPYmplY3QgKmN1cl9wYXJlbnQ7CiAgICAgUHlfc3NpemVfdCBjaGlsZF9pbmRleDsKICAgICBpbnQgcmM7CisgICAgRWxlbWVudE9iamVjdCAqZWxlbTsKIAogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIC8qIEhhbmRsZSB0aGUgY2FzZSByZWFjaGVkIGluIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBpdGVyYXRpb24sIHdoZXJlCkBAIC0yMDcxLDM4ICsyMDgyLDQ3IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZWxlbSA9IGl0LT5yb290X2VsZW1lbnQ7CiAgICAgICAgICAgICAgICAgaXQtPnBhcmVudF9zdGFjayA9IHBhcmVudF9zdGFja19wdXNoX25ldyhpdC0+cGFyZW50X3N0YWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPnJvb3RfZWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtKTsKICAgICAgICAgICAgICAgICBpZiAoIWl0LT5wYXJlbnRfc3RhY2spIHsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGVsZW0pOwogICAgICAgICAgICAgICAgIGl0LT5yb290X2RvbmUgPSAxOwogICAgICAgICAgICAgICAgIHJjID0gKGl0LT5zb3VnaHRfdGFnID09IFB5X05vbmUpOwogICAgICAgICAgICAgICAgIGlmICghcmMpIHsKLSAgICAgICAgICAgICAgICAgICAgcmMgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXQtPnJvb3RfZWxlbWVudC0+dGFnLAorICAgICAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChlbGVtLT50YWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5zb3VnaHRfdGFnLCBQeV9FUSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyYyA8IDApCisgICAgICAgICAgICAgICAgICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChyYykgewogICAgICAgICAgICAgICAgICAgICBpZiAoaXQtPmdldHRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0ZXh0ID0gZWxlbWVudF9nZXRfdGV4dChpdC0+cm9vdF9lbGVtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0ZXh0ID0gZWxlbWVudF9nZXRfdGV4dChlbGVtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfSXNUcnVlKHRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJjID4gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYyA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoaXQtPnJvb3RfZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopaXQtPnJvb3RfZWxlbWVudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKillbGVtOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTIxMTIsNTQgKzIxMzIsNjggQEAKICAgICAgICAgY3VyX3BhcmVudCA9IGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudDsKICAgICAgICAgY2hpbGRfaW5kZXggPSBpdC0+cGFyZW50X3N0YWNrLT5jaGlsZF9pbmRleDsKICAgICAgICAgaWYgKGN1cl9wYXJlbnQtPmV4dHJhICYmIGNoaWxkX2luZGV4IDwgY3VyX3BhcmVudC0+ZXh0cmEtPmxlbmd0aCkgewotICAgICAgICAgICAgRWxlbWVudE9iamVjdCAqY2hpbGQgPSAoRWxlbWVudE9iamVjdCAqKQotICAgICAgICAgICAgICAgIGN1cl9wYXJlbnQtPmV4dHJhLT5jaGlsZHJlbltjaGlsZF9pbmRleF07CisgICAgICAgICAgICBlbGVtID0gKEVsZW1lbnRPYmplY3QgKiljdXJfcGFyZW50LT5leHRyYS0+Y2hpbGRyZW5bY2hpbGRfaW5kZXhdOwogICAgICAgICAgICAgaXQtPnBhcmVudF9zdGFjay0+Y2hpbGRfaW5kZXgrKzsKICAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBwYXJlbnRfc3RhY2tfcHVzaF9uZXcoaXQtPnBhcmVudF9zdGFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtKTsKICAgICAgICAgICAgIGlmICghaXQtPnBhcmVudF9zdGFjaykgewogICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIFB5X0lOQ1JFRihlbGVtKTsKICAgICAgICAgICAgIGlmIChpdC0+Z2V0dGV4dCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0ZXh0ID0gZWxlbWVudF9nZXRfdGV4dChjaGlsZCk7Ci0gICAgICAgICAgICAgICAgaWYgKCF0ZXh0KQorICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0ZXh0ID0gZWxlbWVudF9nZXRfdGV4dChlbGVtKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRleHQpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKICAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X0lzVHJ1ZSh0ZXh0KTsKKyAgICAgICAgICAgICAgICBpZiAocmMgPiAwKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGV4dCk7CiAgICAgICAgICAgICAgICAgaWYgKHJjIDwgMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgaWYgKHJjKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQ7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICByYyA9IChpdC0+c291Z2h0X3RhZyA9PSBQeV9Ob25lKTsKICAgICAgICAgICAgICAgICBpZiAoIXJjKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGNoaWxkLT50YWcsCisgICAgICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGVsZW0tPnRhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPnNvdWdodF90YWcsIFB5X0VRKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJjIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJjIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHJjKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihjaGlsZCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKiljaGlsZDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWVsZW07CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp0YWlsOwotICAgICAgICAgICAgUGFyZW50TG9jYXRvciAqbmV4dCA9IGl0LT5wYXJlbnRfc3RhY2stPm5leHQ7CisgICAgICAgICAgICBQYXJlbnRMb2NhdG9yICpuZXh0OwogICAgICAgICAgICAgaWYgKGl0LT5nZXR0ZXh0KSB7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGN1cl9wYXJlbnQpOwogICAgICAgICAgICAgICAgIHRhaWwgPSBlbGVtZW50X2dldF90YWlsKGN1cl9wYXJlbnQpOwotICAgICAgICAgICAgICAgIGlmICghdGFpbCkKKyAgICAgICAgICAgICAgICBpZiAoIXRhaWwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGN1cl9wYXJlbnQpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRhaWwpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjdXJfcGFyZW50KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHRhaWwgPSBQeV9Ob25lOwotICAgICAgICAgICAgUHlfWERFQ1JFRihpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQpOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0YWlsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5leHQgPSBpdC0+cGFyZW50X3N0YWNrLT5uZXh0OworICAgICAgICAgICAgY3VyX3BhcmVudCA9IGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudDsKICAgICAgICAgICAgIFB5T2JqZWN0X0ZyZWUoaXQtPnBhcmVudF9zdGFjayk7CiAgICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrID0gbmV4dDsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoY3VyX3BhcmVudCk7CiAKICAgICAgICAgICAgIC8qIE5vdGUgdGhhdCBleHRyYSBjb25kaXRpb24gb24gaXQtPnBhcmVudF9zdGFjay0+cGFyZW50IGhlcmU7CiAgICAgICAgICAgICAgKiB0aGlzIGlzIGJlY2F1c2UgaXRlcnRleHQoKSBpcyBzdXBwb3NlZCB0byBvbmx5IHJldHVybiAqaW5uZXIqCkBAIC0yMTY3LDEyICsyMjAxLDE0IEBACiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGlmIChpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQpIHsKICAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X0lzVHJ1ZSh0YWlsKTsKKyAgICAgICAgICAgICAgICBpZiAocmMgPiAwKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFpbDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGFpbCk7CiAgICAgICAgICAgICAgICAgaWYgKHJjIDwgMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgaWYgKHJjKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0YWlsKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhaWw7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRhaWwpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjIzNSwxNyArMjI3MSw2IEBACiAgICAgaWYgKCFpdCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHRhZykpIHsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh0YWcpIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgodGFnKSA9PSAxICYmIFB5VW5pY29kZV9SRUFEX0NIQVIodGFnLCAwKSA9PSAnKicpCi0gICAgICAgICAgICB0YWcgPSBQeV9Ob25lOwotICAgIH0KLSAgICBlbHNlIGlmIChQeUJ5dGVzX0NoZWNrKHRhZykpIHsKLSAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUodGFnKSA9PSAxICYmICpQeUJ5dGVzX0FTX1NUUklORyh0YWcpID09ICcqJykKLSAgICAgICAgICAgIHRhZyA9IFB5X05vbmU7Ci0gICAgfQotCiAgICAgUHlfSU5DUkVGKHRhZyk7CiAgICAgaXQtPnNvdWdodF90YWcgPSB0YWc7CiAgICAgaXQtPnJvb3RfZG9uZSA9IDA7CkBAIC0yMzMwLDIzICsyMzU1LDI0IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXQ7CiB9CiAKLXN0YXRpYyBpbnQKLXRyZWVidWlsZGVyX2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLXsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImVsZW1lbnRfZmFjdG9yeSIsIDB9OwotICAgIFB5T2JqZWN0ICplbGVtZW50X2ZhY3RvcnkgPSBOVUxMOwotICAgIFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmX3RiID0gKFRyZWVCdWlsZGVyT2JqZWN0ICopc2VsZjsKLSAgICBQeU9iamVjdCAqdG1wOworLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLlRyZWVCdWlsZGVyLl9faW5pdF9fCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE86VHJlZUJ1aWxkZXIiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVsZW1lbnRfZmFjdG9yeSkpIHsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyAgICBlbGVtZW50X2ZhY3Rvcnk6IG9iamVjdCA9IE5VTEwKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50CitfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfX19pbml0X19faW1wbChUcmVlQnVpbGRlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICplbGVtZW50X2ZhY3RvcnkpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTFjZmE3NTU4OTcwZWU5NiBpbnB1dD0xYjQyNGVlZWZjMzUyNDljXSovCit7CisgICAgUHlPYmplY3QgKnRtcDsKIAogICAgIGlmIChlbGVtZW50X2ZhY3RvcnkpIHsKICAgICAgICAgUHlfSU5DUkVGKGVsZW1lbnRfZmFjdG9yeSk7Ci0gICAgICAgIHRtcCA9IHNlbGZfdGItPmVsZW1lbnRfZmFjdG9yeTsKLSAgICAgICAgc2VsZl90Yi0+ZWxlbWVudF9mYWN0b3J5ID0gZWxlbWVudF9mYWN0b3J5OworICAgICAgICB0bXAgPSBzZWxmLT5lbGVtZW50X2ZhY3Rvcnk7CisgICAgICAgIHNlbGYtPmVsZW1lbnRfZmFjdG9yeSA9IGVsZW1lbnRfZmFjdG9yeTsKICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgIH0KIApAQCAtMjUyNCwxMyArMjU1MCwxMCBAQAogICAgIH0KICAgICBzZWxmLT5pbmRleCsrOwogCi0gICAgUHlfREVDUkVGKHRoaXMpOwogICAgIFB5X0lOQ1JFRihub2RlKTsKLSAgICBzZWxmLT50aGlzID0gbm9kZTsKLQotICAgIFB5X0RFQ1JFRihzZWxmLT5sYXN0KTsKKyAgICBQeV9TRVRSRUYoc2VsZi0+dGhpcywgbm9kZSk7CiAgICAgUHlfSU5DUkVGKG5vZGUpOwotICAgIHNlbGYtPmxhc3QgPSBub2RlOworICAgIFB5X1NFVFJFRihzZWxmLT5sYXN0LCBub2RlKTsKIAogICAgIGlmICh0cmVlYnVpbGRlcl9hcHBlbmRfZXZlbnQoc2VsZiwgc2VsZi0+c3RhcnRfZXZlbnRfb2JqLCBub2RlKSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yNjAzLDE1ICsyNjI2LDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHNlbGYtPmluZGV4LS07Ci0KLSAgICBpdGVtID0gUHlMaXN0X0dFVF9JVEVNKHNlbGYtPnN0YWNrLCBzZWxmLT5pbmRleCk7Ci0gICAgUHlfSU5DUkVGKGl0ZW0pOwotCi0gICAgUHlfREVDUkVGKHNlbGYtPmxhc3QpOwotCisgICAgaXRlbSA9IHNlbGYtPmxhc3Q7CiAgICAgc2VsZi0+bGFzdCA9IHNlbGYtPnRoaXM7Ci0gICAgc2VsZi0+dGhpcyA9IGl0ZW07CisgICAgc2VsZi0+aW5kZXgtLTsKKyAgICBzZWxmLT50aGlzID0gUHlMaXN0X0dFVF9JVEVNKHNlbGYtPnN0YWNrLCBzZWxmLT5pbmRleCk7CisgICAgUHlfSU5DUkVGKHNlbGYtPnRoaXMpOworICAgIFB5X0RFQ1JFRihpdGVtKTsKIAogICAgIGlmICh0cmVlYnVpbGRlcl9hcHBlbmRfZXZlbnQoc2VsZiwgc2VsZi0+ZW5kX2V2ZW50X29iaiwgc2VsZi0+bGFzdCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI2MjMsMjMgKzI2NDMsMzMgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAvKiBtZXRob2RzIChpbiBhbHBoYWJldGljYWwgb3JkZXIpICovCiAKLXN0YXRpYyBQeU9iamVjdCoKLXRyZWVidWlsZGVyX2RhdGEoVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIFB5T2JqZWN0KiBkYXRhOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpkYXRhIiwgJmRhdGEpKQotICAgICAgICByZXR1cm4gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5UcmVlQnVpbGRlci5kYXRhCiAKKyAgICBkYXRhOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9kYXRhKFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZGF0YSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02OTE0NGM3MTAwNzk1YmIyIGlucHV0PWEwNTQwYzUzMmIyODRkMjldKi8KK3sKICAgICByZXR1cm4gdHJlZWJ1aWxkZXJfaGFuZGxlX2RhdGEoc2VsZiwgZGF0YSk7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXRyZWVidWlsZGVyX2VuZChUcmVlQnVpbGRlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgUHlPYmplY3QqIHRhZzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86ZW5kIiwgJnRhZykpCi0gICAgICAgIHJldHVybiBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLlRyZWVCdWlsZGVyLmVuZAogCisgICAgdGFnOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9lbmQoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWE5ODcyN2NjNjkxY2Q5ZCBpbnB1dD0yMmRjMzY3NDIzNmY1NzQ1XSovCit7CiAgICAgcmV0dXJuIHRyZWVidWlsZGVyX2hhbmRsZV9lbmQoc2VsZiwgdGFnKTsKIH0KIApAQCAtMjY1OSw3NiArMjY4OSwzNSBAQAogICAgIHJldHVybiByZXM7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXRyZWVidWlsZGVyX2Nsb3NlKFRyZWVCdWlsZGVyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpjbG9zZSIpKQotICAgICAgICByZXR1cm4gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5UcmVlQnVpbGRlci5jbG9zZQogCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfY2xvc2VfaW1wbChUcmVlQnVpbGRlck9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNDQxZmVlMzIwMmY2MWVlIGlucHV0PWY3YzljNjVkYzcxOGRlMTRdKi8KK3sKICAgICByZXR1cm4gdHJlZWJ1aWxkZXJfZG9uZShzZWxmKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotdHJlZWJ1aWxkZXJfc3RhcnQoVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLlRyZWVCdWlsZGVyLnN0YXJ0CisKKyAgICB0YWc6IG9iamVjdAorICAgIGF0dHJzOiBvYmplY3QgPSBOb25lCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfc3RhcnRfaW1wbChUcmVlQnVpbGRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphdHRycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lN2U5ZGMyODYxMzQ5NDExIGlucHV0PTk1ZmMxNzU4ZGQwNDJjNjVdKi8KIHsKLSAgICBQeU9iamVjdCogdGFnOwotICAgIFB5T2JqZWN0KiBhdHRyaWIgPSBQeV9Ob25lOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPOnN0YXJ0IiwgJnRhZywgJmF0dHJpYikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIHRyZWVidWlsZGVyX2hhbmRsZV9zdGFydChzZWxmLCB0YWcsIGF0dHJpYik7CisgICAgcmV0dXJuIHRyZWVidWlsZGVyX2hhbmRsZV9zdGFydChzZWxmLCB0YWcsIGF0dHJzKTsKIH0KIAotc3RhdGljIFB5TWV0aG9kRGVmIHRyZWVidWlsZGVyX21ldGhvZHNbXSA9IHsKLSAgICB7ImRhdGEiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyX2RhdGEsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJzdGFydCIsIChQeUNGdW5jdGlvbikgdHJlZWJ1aWxkZXJfc3RhcnQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJlbmQiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyX2VuZCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKSB0cmVlYnVpbGRlcl9jbG9zZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7TlVMTCwgTlVMTH0KLX07Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgVHJlZUJ1aWxkZXJfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAieG1sLmV0cmVlLkVsZW1lbnRUcmVlLlRyZWVCdWlsZGVyIiwgc2l6ZW9mKFRyZWVCdWlsZGVyT2JqZWN0KSwgMCwKLSAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpdHJlZWJ1aWxkZXJfZGVhbGxvYywgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYyl0cmVlYnVpbGRlcl9nY190cmF2ZXJzZSwgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAoaW5xdWlyeSl0cmVlYnVpbGRlcl9nY19jbGVhciwgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICB0cmVlYnVpbGRlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwotICAgIChpbml0cHJvYyl0cmVlYnVpbGRlcl9pbml0LCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KLSAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIHRyZWVidWlsZGVyX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KLX07Ci0KIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAvKiB0aGUgZXhwYXQgaW50ZXJmYWNlICovCiAKQEAgLTI3NjYsNyArMjc1NSwxMSBAQAogCiB9IFhNTFBhcnNlck9iamVjdDsKIAotc3RhdGljIFB5T2JqZWN0KiB4bWxwYXJzZXJfZG9jdHlwZShYTUxQYXJzZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKTsKK3N0YXRpYyBQeU9iamVjdCoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZShYTUxQYXJzZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKTsKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2RvY3R5cGVfaW1wbChYTUxQYXJzZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnB1YmlkLCBQeU9iamVjdCAqc3lzdGVtKTsKIAogLyogaGVscGVycyAqLwogCkBAIC0yODQ0LDEyICsyODM3LDEzIEBACiAgKiBtZXNzYWdlIHN0cmluZyBpcyB0aGUgZGVmYXVsdCBmb3IgdGhlIGdpdmVuIGVycm9yX2NvZGUuCiAqLwogc3RhdGljIHZvaWQKLWV4cGF0X3NldF9lcnJvcihlbnVtIFhNTF9FcnJvciBlcnJvcl9jb2RlLCBpbnQgbGluZSwgaW50IGNvbHVtbiwgY2hhciAqbWVzc2FnZSkKK2V4cGF0X3NldF9lcnJvcihlbnVtIFhNTF9FcnJvciBlcnJvcl9jb2RlLCBQeV9zc2l6ZV90IGxpbmUsIFB5X3NzaXplX3QgY29sdW1uLAorICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiB7CiAgICAgUHlPYmplY3QgKmVycm1zZywgKmVycm9yLCAqcG9zaXRpb24sICpjb2RlOwogICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0ID0gRVRfU1RBVEVfR0xPQkFMOwogCi0gICAgZXJybXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzOiBsaW5lICVkLCBjb2x1bW4gJWQiLAorICAgIGVycm1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlczogbGluZSAlemQsIGNvbHVtbiAlemQiLAogICAgICAgICAgICAgICAgIG1lc3NhZ2UgPyBtZXNzYWdlIDogRVhQQVQoRXJyb3JTdHJpbmcpKGVycm9yX2NvZGUpLAogICAgICAgICAgICAgICAgIGxpbmUsIGNvbHVtbik7CiAgICAgaWYgKGVycm1zZyA9PSBOVUxMKQpAQCAtMjg3Myw3ICsyODY3LDcgQEAKICAgICB9CiAgICAgUHlfREVDUkVGKGNvZGUpOwogCi0gICAgcG9zaXRpb24gPSBQeV9CdWlsZFZhbHVlKCIoaWkpIiwgbGluZSwgY29sdW1uKTsKKyAgICBwb3NpdGlvbiA9IFB5X0J1aWxkVmFsdWUoIihubikiLCBsaW5lLCBjb2x1bW4pOwogICAgIGlmICghcG9zaXRpb24pIHsKICAgICAgICAgUHlfREVDUkVGKGVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjk1Nyw4ICsyOTUxLDEwIEBACiAgICAgLyogYXR0cmlidXRlcyAqLwogICAgIGlmIChhdHRyaWJfaW5bMF0pIHsKICAgICAgICAgYXR0cmliID0gUHlEaWN0X05ldygpOwotICAgICAgICBpZiAoIWF0dHJpYikKKyAgICAgICAgaWYgKCFhdHRyaWIpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0YWcpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHdoaWxlIChhdHRyaWJfaW5bMF0gJiYgYXR0cmliX2luWzFdKSB7CiAgICAgICAgICAgICBQeU9iamVjdCoga2V5ID0gbWFrZXVuaXZlcnNhbChzZWxmLCBhdHRyaWJfaW5bMF0pOwogICAgICAgICAgICAgUHlPYmplY3QqIHZhbHVlID0gUHlVbmljb2RlX0RlY29kZVVURjgoYXR0cmliX2luWzFdLCBzdHJsZW4oYXR0cmliX2luWzFdKSwgInN0cmljdCIpOwpAQCAtMjk2Niw2ICsyOTYyLDcgQEAKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGtleSk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJpYik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRhZyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgb2sgPSBQeURpY3RfU2V0SXRlbShhdHRyaWIsIGtleSwgdmFsdWUpOwpAQCAtMjk3Myw2ICsyOTcwLDcgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgaWYgKG9rIDwgMCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyaWIpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0YWcpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGF0dHJpYl9pbiArPSAyOwpAQCAtMjk4MCw4ICsyOTc4LDEwIEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgLyogUGFzcyBhbiBlbXB0eSBkaWN0aW9uYXJ5IG9uICovCiAgICAgICAgIGF0dHJpYiA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgaWYgKCFhdHRyaWIpCisgICAgICAgIGlmICghYXR0cmliKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodGFnKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChUcmVlQnVpbGRlcl9DaGVja0V4YWN0KHNlbGYtPnRhcmdldCkpIHsKQEAgLTMxNjksOCArMzE2OSw5IEBACiAgICAgICAgICAgICAhKFB5Q0Z1bmN0aW9uX0NoZWNrKHBhcnNlcl9kb2N0eXBlKSAmJgogICAgICAgICAgICAgICBQeUNGdW5jdGlvbl9HRVRfU0VMRihwYXJzZXJfZG9jdHlwZSkgPT0gc2VsZl9weW9iaiAmJgogICAgICAgICAgICAgICBQeUNGdW5jdGlvbl9HRVRfRlVOQ1RJT04ocGFyc2VyX2RvY3R5cGUpID09Ci0gICAgICAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbikgeG1scGFyc2VyX2RvY3R5cGUpKSB7Ci0gICAgICAgICAgICByZXMgPSB4bWxwYXJzZXJfZG9jdHlwZShzZWxmLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKSBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2RvY3R5cGUpKSB7CisgICAgICAgICAgICByZXMgPSBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2RvY3R5cGVfaW1wbChzZWxmLCBkb2N0eXBlX25hbWVfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHViaWRfb2JqLCBzeXNpZF9vYmopOwogICAgICAgICAgICAgaWYgKCFyZXMpCiAgICAgICAgICAgICAgICAgZ290byBjbGVhcjsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtMzIyOSwzMyArMzIzMCwzNCBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuWE1MUGFyc2VyLl9faW5pdF9fCisKKyAgICBodG1sOiBvYmplY3QgPSBOVUxMCisgICAgdGFyZ2V0OiBvYmplY3QgPSBOVUxMCisgICAgZW5jb2Rpbmc6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgaW50Ci14bWxwYXJzZXJfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fX2luaXRfX19pbXBsKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmh0bWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRhcmdldCwgY29uc3QgY2hhciAqZW5jb2RpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDZhMTZjNjNkZGE1NDQ0MSBpbnB1dD0xNTViYzU2OTViYWFmZmZkXSovCiB7Ci0gICAgWE1MUGFyc2VyT2JqZWN0ICpzZWxmX3hwID0gKFhNTFBhcnNlck9iamVjdCAqKXNlbGY7Ci0gICAgUHlPYmplY3QgKnRhcmdldCA9IE5VTEwsICpodG1sID0gTlVMTDsKLSAgICBjaGFyICplbmNvZGluZyA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJodG1sIiwgInRhcmdldCIsICJlbmNvZGluZyIsIDB9OworICAgIHNlbGYtPmVudGl0eSA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoIXNlbGYtPmVudGl0eSkKKyAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPT3o6WE1MUGFyc2VyIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZodG1sLCAmdGFyZ2V0LCAmZW5jb2RpbmcpKSB7CisgICAgc2VsZi0+bmFtZXMgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKCFzZWxmLT5uYW1lcykgeworICAgICAgICBQeV9DTEVBUihzZWxmLT5lbnRpdHkpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgc2VsZl94cC0+ZW50aXR5ID0gUHlEaWN0X05ldygpOwotICAgIGlmICghc2VsZl94cC0+ZW50aXR5KQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBzZWxmX3hwLT5uYW1lcyA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoIXNlbGZfeHAtPm5hbWVzKSB7Ci0gICAgICAgIFB5X0NMRUFSKHNlbGZfeHAtPmVudGl0eSk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBzZWxmX3hwLT5wYXJzZXIgPSBFWFBBVChQYXJzZXJDcmVhdGVfTU0pKGVuY29kaW5nLCAmRXhwYXRNZW1vcnlIYW5kbGVyLCAifSIpOwotICAgIGlmICghc2VsZl94cC0+cGFyc2VyKSB7Ci0gICAgICAgIFB5X0NMRUFSKHNlbGZfeHAtPmVudGl0eSk7Ci0gICAgICAgIFB5X0NMRUFSKHNlbGZfeHAtPm5hbWVzKTsKKyAgICBzZWxmLT5wYXJzZXIgPSBFWFBBVChQYXJzZXJDcmVhdGVfTU0pKGVuY29kaW5nLCAmRXhwYXRNZW1vcnlIYW5kbGVyLCAifSIpOworICAgIGlmICghc2VsZi0+cGFyc2VyKSB7CisgICAgICAgIFB5X0NMRUFSKHNlbGYtPmVudGl0eSk7CisgICAgICAgIFB5X0NMRUFSKHNlbGYtPm5hbWVzKTsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMyNjUsNTUgKzMyNjcsNTUgQEAKICAgICB9IGVsc2UgewogICAgICAgICB0YXJnZXQgPSB0cmVlYnVpbGRlcl9uZXcoJlRyZWVCdWlsZGVyX1R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXRhcmdldCkgewotICAgICAgICAgICAgUHlfQ0xFQVIoc2VsZl94cC0+ZW50aXR5KTsKLSAgICAgICAgICAgIFB5X0NMRUFSKHNlbGZfeHAtPm5hbWVzKTsKLSAgICAgICAgICAgIEVYUEFUKFBhcnNlckZyZWUpKHNlbGZfeHAtPnBhcnNlcik7CisgICAgICAgICAgICBQeV9DTEVBUihzZWxmLT5lbnRpdHkpOworICAgICAgICAgICAgUHlfQ0xFQVIoc2VsZi0+bmFtZXMpOworICAgICAgICAgICAgRVhQQVQoUGFyc2VyRnJlZSkoc2VsZi0+cGFyc2VyKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgIH0KLSAgICBzZWxmX3hwLT50YXJnZXQgPSB0YXJnZXQ7CisgICAgc2VsZi0+dGFyZ2V0ID0gdGFyZ2V0OwogCi0gICAgc2VsZl94cC0+aGFuZGxlX3N0YXJ0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJzdGFydCIpOwotICAgIHNlbGZfeHAtPmhhbmRsZV9kYXRhID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJkYXRhIik7Ci0gICAgc2VsZl94cC0+aGFuZGxlX2VuZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiZW5kIik7Ci0gICAgc2VsZl94cC0+aGFuZGxlX2NvbW1lbnQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImNvbW1lbnQiKTsKLSAgICBzZWxmX3hwLT5oYW5kbGVfcGkgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgInBpIik7Ci0gICAgc2VsZl94cC0+aGFuZGxlX2Nsb3NlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJjbG9zZSIpOwotICAgIHNlbGZfeHAtPmhhbmRsZV9kb2N0eXBlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJkb2N0eXBlIik7CisgICAgc2VsZi0+aGFuZGxlX3N0YXJ0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJzdGFydCIpOworICAgIHNlbGYtPmhhbmRsZV9kYXRhID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJkYXRhIik7CisgICAgc2VsZi0+aGFuZGxlX2VuZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiZW5kIik7CisgICAgc2VsZi0+aGFuZGxlX2NvbW1lbnQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImNvbW1lbnQiKTsKKyAgICBzZWxmLT5oYW5kbGVfcGkgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgInBpIik7CisgICAgc2VsZi0+aGFuZGxlX2Nsb3NlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJjbG9zZSIpOworICAgIHNlbGYtPmhhbmRsZV9kb2N0eXBlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJkb2N0eXBlIik7CiAKICAgICBQeUVycl9DbGVhcigpOwogCiAgICAgLyogY29uZmlndXJlIHBhcnNlciAqLwotICAgIEVYUEFUKFNldFVzZXJEYXRhKShzZWxmX3hwLT5wYXJzZXIsIHNlbGZfeHApOworICAgIEVYUEFUKFNldFVzZXJEYXRhKShzZWxmLT5wYXJzZXIsIHNlbGYpOwogICAgIEVYUEFUKFNldEVsZW1lbnRIYW5kbGVyKSgKLSAgICAgICAgc2VsZl94cC0+cGFyc2VyLAorICAgICAgICBzZWxmLT5wYXJzZXIsCiAgICAgICAgIChYTUxfU3RhcnRFbGVtZW50SGFuZGxlcikgZXhwYXRfc3RhcnRfaGFuZGxlciwKICAgICAgICAgKFhNTF9FbmRFbGVtZW50SGFuZGxlcikgZXhwYXRfZW5kX2hhbmRsZXIKICAgICAgICAgKTsKICAgICBFWFBBVChTZXREZWZhdWx0SGFuZGxlckV4cGFuZCkoCi0gICAgICAgIHNlbGZfeHAtPnBhcnNlciwKKyAgICAgICAgc2VsZi0+cGFyc2VyLAogICAgICAgICAoWE1MX0RlZmF1bHRIYW5kbGVyKSBleHBhdF9kZWZhdWx0X2hhbmRsZXIKICAgICAgICAgKTsKICAgICBFWFBBVChTZXRDaGFyYWN0ZXJEYXRhSGFuZGxlcikoCi0gICAgICAgIHNlbGZfeHAtPnBhcnNlciwKKyAgICAgICAgc2VsZi0+cGFyc2VyLAogICAgICAgICAoWE1MX0NoYXJhY3RlckRhdGFIYW5kbGVyKSBleHBhdF9kYXRhX2hhbmRsZXIKICAgICAgICAgKTsKLSAgICBpZiAoc2VsZl94cC0+aGFuZGxlX2NvbW1lbnQpCisgICAgaWYgKHNlbGYtPmhhbmRsZV9jb21tZW50KQogICAgICAgICBFWFBBVChTZXRDb21tZW50SGFuZGxlcikoCi0gICAgICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCisgICAgICAgICAgICBzZWxmLT5wYXJzZXIsCiAgICAgICAgICAgICAoWE1MX0NvbW1lbnRIYW5kbGVyKSBleHBhdF9jb21tZW50X2hhbmRsZXIKICAgICAgICAgICAgICk7Ci0gICAgaWYgKHNlbGZfeHAtPmhhbmRsZV9waSkKKyAgICBpZiAoc2VsZi0+aGFuZGxlX3BpKQogICAgICAgICBFWFBBVChTZXRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyKSgKLSAgICAgICAgICAgIHNlbGZfeHAtPnBhcnNlciwKKyAgICAgICAgICAgIHNlbGYtPnBhcnNlciwKICAgICAgICAgICAgIChYTUxfUHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlcikgZXhwYXRfcGlfaGFuZGxlcgogICAgICAgICAgICAgKTsKICAgICBFWFBBVChTZXRTdGFydERvY3R5cGVEZWNsSGFuZGxlcikoCi0gICAgICAgIHNlbGZfeHAtPnBhcnNlciwKKyAgICAgICAgc2VsZi0+cGFyc2VyLAogICAgICAgICAoWE1MX1N0YXJ0RG9jdHlwZURlY2xIYW5kbGVyKSBleHBhdF9zdGFydF9kb2N0eXBlX2hhbmRsZXIKICAgICAgICAgKTsKICAgICBFWFBBVChTZXRVbmtub3duRW5jb2RpbmdIYW5kbGVyKSgKLSAgICAgICAgc2VsZl94cC0+cGFyc2VyLAorICAgICAgICBzZWxmLT5wYXJzZXIsCiAgICAgICAgIEVYUEFUKERlZmF1bHRVbmtub3duRW5jb2RpbmdIYW5kbGVyKSwgTlVMTAogICAgICAgICApOwogCkBAIC0zMzg5LDE1ICszMzkxLDE4IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXhtbHBhcnNlcl9jbG9zZShYTUxQYXJzZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLlhNTFBhcnNlci5jbG9zZQorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2Nsb3NlX2ltcGwoWE1MUGFyc2VyT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ2OGQzNzVkZDIzYmM3ZmIgaW5wdXQ9Y2E3OTA5Y2E3OGMzYWJmZV0qLwogewogICAgIC8qIGVuZCBmZWVkaW5nIGRhdGEgdG8gcGFyc2VyICovCiAKICAgICBQeU9iamVjdCogcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmNsb3NlIikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcmVzID0gZXhwYXRfcGFyc2Uoc2VsZiwgIiIsIDAsIDEpOwogICAgIGlmICghcmVzKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTM0MTUsMTUgKzM0MjAsMjQgQEAKICAgICB9CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXhtbHBhcnNlcl9mZWVkKFhNTFBhcnNlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5YTUxQYXJzZXIuZmVlZAorCisgICAgZGF0YTogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2ZlZWQoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZGF0YSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lNDJiNmE3OGVlYzc0NDZkIGlucHV0PWZlMjMxYjZiOGRlM2NlMWZdKi8KIHsKICAgICAvKiBmZWVkIGRhdGEgdG8gcGFyc2VyICovCiAKLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGRhdGEpKSB7CiAgICAgICAgIFB5X3NzaXplX3QgZGF0YV9sZW47Ci0gICAgICAgIGNvbnN0IGNoYXIgKmRhdGEgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShhcmcsICZkYXRhX2xlbik7Ci0gICAgICAgIGlmIChkYXRhID09IE5VTEwpCisgICAgICAgIGNvbnN0IGNoYXIgKmRhdGFfcHRyID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoZGF0YSwgJmRhdGFfbGVuKTsKKyAgICAgICAgaWYgKGRhdGFfcHRyID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKGRhdGFfbGVuID4gSU5UX01BWCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJzaXplIGRvZXMgbm90IGZpdCBpbiBhbiBpbnQiKTsKQEAgLTM0MzEsMTIgKzM0NDUsMTIgQEAKICAgICAgICAgfQogICAgICAgICAvKiBFeHBsaWNpdGx5IHNldCBVVEYtOCBlbmNvZGluZy4gUmV0dXJuIGNvZGUgaWdub3JlZC4gKi8KICAgICAgICAgKHZvaWQpRVhQQVQoU2V0RW5jb2RpbmcpKHNlbGYtPnBhcnNlciwgInV0Zi04Iik7Ci0gICAgICAgIHJldHVybiBleHBhdF9wYXJzZShzZWxmLCBkYXRhLCAoaW50KWRhdGFfbGVuLCAwKTsKKyAgICAgICAgcmV0dXJuIGV4cGF0X3BhcnNlKHNlbGYsIGRhdGFfcHRyLCAoaW50KWRhdGFfbGVuLCAwKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5X2J1ZmZlciB2aWV3OwogICAgICAgICBQeU9iamVjdCAqcmVzOwotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgJnZpZXcsIFB5QlVGX1NJTVBMRSkgPCAwKQorICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGRhdGEsICZ2aWV3LCBQeUJVRl9TSU1QTEUpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAodmlldy5sZW4gPiBJTlRfTUFYKSB7CiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKQEAgLTM0NDksOCArMzQ2MywxNyBAQAogICAgIH0KIH0KIAotc3RhdGljIFB5T2JqZWN0KgoteG1scGFyc2VyX3BhcnNlX3dob2xlKFhNTFBhcnNlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuWE1MUGFyc2VyLl9wYXJzZV93aG9sZQorCisgICAgZmlsZTogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19wYXJzZV93aG9sZShYTUxQYXJzZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY3OTcxOTdiYjgxOGRkYTMgaW5wdXQ9MTllY2M4OTNiNmYzZTc1Ml0qLwogewogICAgIC8qIChpbnRlcm5hbCkgcGFyc2UgdGhlIHdob2xlIGlucHV0LCB1bnRpbCBlbmQgb2Ygc3RyZWFtICovCiAgICAgUHlPYmplY3QqIHJlYWRlcjsKQEAgLTM0NTgsMTEgKzM0ODEsNyBAQAogICAgIFB5T2JqZWN0KiB0ZW1wOwogICAgIFB5T2JqZWN0KiByZXM7CiAKLSAgICBQeU9iamVjdCogZmlsZW9iajsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86X3BhcnNlIiwgJmZpbGVvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlYWRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZmlsZW9iaiwgInJlYWQiKTsKKyAgICByZWFkZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZpbGUsICJyZWFkIik7CiAgICAgaWYgKCFyZWFkZXIpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0zNTI5LDggKzM1NDgsMjAgQEAKICAgICByZXR1cm4gcmVzOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi14bWxwYXJzZXJfZG9jdHlwZShYTUxQYXJzZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLlhNTFBhcnNlci5kb2N0eXBlCisKKyAgICBuYW1lOiBvYmplY3QKKyAgICBwdWJpZDogb2JqZWN0CisgICAgc3lzdGVtOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZV9pbXBsKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcHViaWQsIFB5T2JqZWN0ICpzeXN0ZW0pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTBmYjUwYzJhZmRlZDg4ZCBpbnB1dD04NDA1MDI3NmNjYTA0NWUxXSovCiB7CiAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBtZXRob2Qgb2YgWE1MUGFyc2VyIGlzIGRlcHJlY2F0ZWQuICBEZWZpbmUiCkBAIC0zNTQxLDE5ICszNTcyLDI1IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXhtbHBhcnNlcl9zZXRldmVudHMoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCogYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5YTUxQYXJzZXIuX3NldGV2ZW50cworCisgICAgZXZlbnRzX3F1ZXVlOiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeUxpc3RfVHlwZScpCisgICAgZXZlbnRzX3RvX3JlcG9ydDogb2JqZWN0ID0gTm9uZQorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fc2V0ZXZlbnRzX2ltcGwoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmV2ZW50c19xdWV1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpldmVudHNfdG9fcmVwb3J0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE0NDAwOTI5MjJiMTNlZDEgaW5wdXQ9NTlkYjk3NDI5MTBjNjE3NF0qLwogewogICAgIC8qIGFjdGl2YXRlIGVsZW1lbnQgZXZlbnQgcmVwb3J0aW5nICovCi0gICAgUHlfc3NpemVfdCBpLCBzZXFsZW47CisgICAgUHlfc3NpemVfdCBpOwogICAgIFRyZWVCdWlsZGVyT2JqZWN0ICp0YXJnZXQ7Ci0KLSAgICBQeU9iamVjdCAqZXZlbnRzX3F1ZXVlOwotICAgIFB5T2JqZWN0ICpldmVudHNfdG9fcmVwb3J0ID0gUHlfTm9uZTsKICAgICBQeU9iamVjdCAqZXZlbnRzX3NlcTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfE86X3NldGV2ZW50cyIsICAmUHlMaXN0X1R5cGUsICZldmVudHNfcXVldWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZldmVudHNfdG9fcmVwb3J0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIVRyZWVCdWlsZGVyX0NoZWNrRXhhY3Qoc2VsZi0+dGFyZ2V0KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoCkBAIC0zNTY3LDggKzM2MDQsNyBAQAogICAgIHRhcmdldCA9IChUcmVlQnVpbGRlck9iamVjdCopIHNlbGYtPnRhcmdldDsKIAogICAgIFB5X0lOQ1JFRihldmVudHNfcXVldWUpOwotICAgIFB5X1hERUNSRUYodGFyZ2V0LT5ldmVudHMpOwotICAgIHRhcmdldC0+ZXZlbnRzID0gZXZlbnRzX3F1ZXVlOworICAgIFB5X1NFVFJFRih0YXJnZXQtPmV2ZW50cywgZXZlbnRzX3F1ZXVlKTsKIAogICAgIC8qIGNsZWFyIG91dCBleGlzdGluZyBldmVudHMgKi8KICAgICBQeV9DTEVBUih0YXJnZXQtPnN0YXJ0X2V2ZW50X29iaik7CkBAIC0zNTg3LDQ2ICszNjIzLDQxIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHNlcWxlbiA9IFB5U2VxdWVuY2VfU2l6ZShldmVudHNfc2VxKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgc2VxbGVuOyArK2kpIHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgUHlTZXF1ZW5jZV9TaXplKGV2ZW50c19zZXEpOyArK2kpIHsKICAgICAgICAgUHlPYmplY3QgKmV2ZW50X25hbWVfb2JqID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGV2ZW50c19zZXEsIGkpOwogICAgICAgICBjaGFyICpldmVudF9uYW1lID0gTlVMTDsKICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhldmVudF9uYW1lX29iaikpIHsKLSAgICAgICAgICAgIGV2ZW50X25hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGV2ZW50X25hbWVfb2JqKTsKKyAgICAgICAgICAgIGV2ZW50X25hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KGV2ZW50X25hbWVfb2JqKTsKICAgICAgICAgfSBlbHNlIGlmIChQeUJ5dGVzX0NoZWNrKGV2ZW50X25hbWVfb2JqKSkgewogICAgICAgICAgICAgZXZlbnRfbmFtZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGV2ZW50X25hbWVfb2JqKTsKICAgICAgICAgfQotCiAgICAgICAgIGlmIChldmVudF9uYW1lID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihldmVudHNfc2VxKTsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBldmVudHMgc2VxdWVuY2UiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcChldmVudF9uYW1lLCAic3RhcnQiKSA9PSAwKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoZXZlbnRfbmFtZV9vYmopOwotICAgICAgICAgICAgdGFyZ2V0LT5zdGFydF9ldmVudF9vYmogPSBldmVudF9uYW1lX29iajsKKyAgICAgICAgfQorCisgICAgICAgIFB5X0lOQ1JFRihldmVudF9uYW1lX29iaik7CisgICAgICAgIGlmIChzdHJjbXAoZXZlbnRfbmFtZSwgInN0YXJ0IikgPT0gMCkgeworICAgICAgICAgICAgUHlfU0VUUkVGKHRhcmdldC0+c3RhcnRfZXZlbnRfb2JqLCBldmVudF9uYW1lX29iaik7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGV2ZW50X25hbWUsICJlbmQiKSA9PSAwKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoZXZlbnRfbmFtZV9vYmopOwotICAgICAgICAgICAgUHlfWERFQ1JFRih0YXJnZXQtPmVuZF9ldmVudF9vYmopOwotICAgICAgICAgICAgdGFyZ2V0LT5lbmRfZXZlbnRfb2JqID0gZXZlbnRfbmFtZV9vYmo7CisgICAgICAgICAgICBQeV9TRVRSRUYodGFyZ2V0LT5lbmRfZXZlbnRfb2JqLCBldmVudF9uYW1lX29iaik7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGV2ZW50X25hbWUsICJzdGFydC1ucyIpID09IDApIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihldmVudF9uYW1lX29iaik7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHRhcmdldC0+c3RhcnRfbnNfZXZlbnRfb2JqKTsKLSAgICAgICAgICAgIHRhcmdldC0+c3RhcnRfbnNfZXZlbnRfb2JqID0gZXZlbnRfbmFtZV9vYmo7CisgICAgICAgICAgICBQeV9TRVRSRUYodGFyZ2V0LT5zdGFydF9uc19ldmVudF9vYmosIGV2ZW50X25hbWVfb2JqKTsKICAgICAgICAgICAgIEVYUEFUKFNldE5hbWVzcGFjZURlY2xIYW5kbGVyKSgKICAgICAgICAgICAgICAgICBzZWxmLT5wYXJzZXIsCiAgICAgICAgICAgICAgICAgKFhNTF9TdGFydE5hbWVzcGFjZURlY2xIYW5kbGVyKSBleHBhdF9zdGFydF9uc19oYW5kbGVyLAogICAgICAgICAgICAgICAgIChYTUxfRW5kTmFtZXNwYWNlRGVjbEhhbmRsZXIpIGV4cGF0X2VuZF9uc19oYW5kbGVyCiAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgfSBlbHNlIGlmIChzdHJjbXAoZXZlbnRfbmFtZSwgImVuZC1ucyIpID09IDApIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihldmVudF9uYW1lX29iaik7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHRhcmdldC0+ZW5kX25zX2V2ZW50X29iaik7Ci0gICAgICAgICAgICB0YXJnZXQtPmVuZF9uc19ldmVudF9vYmogPSBldmVudF9uYW1lX29iajsKKyAgICAgICAgICAgIFB5X1NFVFJFRih0YXJnZXQtPmVuZF9uc19ldmVudF9vYmosIGV2ZW50X25hbWVfb2JqKTsKICAgICAgICAgICAgIEVYUEFUKFNldE5hbWVzcGFjZURlY2xIYW5kbGVyKSgKICAgICAgICAgICAgICAgICBzZWxmLT5wYXJzZXIsCiAgICAgICAgICAgICAgICAgKFhNTF9TdGFydE5hbWVzcGFjZURlY2xIYW5kbGVyKSBleHBhdF9zdGFydF9uc19oYW5kbGVyLAogICAgICAgICAgICAgICAgIChYTUxfRW5kTmFtZXNwYWNlRGVjbEhhbmRsZXIpIGV4cGF0X2VuZF9uc19oYW5kbGVyCiAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihldmVudF9uYW1lX29iaik7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZXZlbnRzX3NlcSk7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgInVua25vd24gZXZlbnQgJyVzJyIsIGV2ZW50X25hbWUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zNjM3LDE1ICszNjY4LDYgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotc3RhdGljIFB5TWV0aG9kRGVmIHhtbHBhcnNlcl9tZXRob2RzW10gPSB7Ci0gICAgeyJmZWVkIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXJfZmVlZCwgTUVUSF9PfSwKLSAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXJfY2xvc2UsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJfcGFyc2Vfd2hvbGUiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9wYXJzZV93aG9sZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7Il9zZXRldmVudHMiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9zZXRldmVudHMsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJkb2N0eXBlIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXJfZG9jdHlwZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7TlVMTCwgTlVMTH0KLX07Ci0KIHN0YXRpYyBQeU9iamVjdCoKIHhtbHBhcnNlcl9nZXRhdHRybyhYTUxQYXJzZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBuYW1lb2JqKQogewpAQCAtMzY3MCw2ICszNjkyLDE1MiBAQAogICAgIHJldHVybiBQeU9iamVjdF9HZW5lcmljR2V0QXR0cigoUHlPYmplY3QqKSBzZWxmLCBuYW1lb2JqKTsKIH0KIAorI2luY2x1ZGUgImNsaW5pYy9fZWxlbWVudHRyZWUuYy5oIgorCitzdGF0aWMgUHlNZXRob2REZWYgZWxlbWVudF9tZXRob2RzW10gPSB7CisKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9DTEVBUl9NRVRIT0RERUYKKworICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0dFVF9NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9TRVRfTUVUSE9EREVGCisKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9GSU5EX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0ZJTkRURVhUX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0ZJTkRBTExfTUVUSE9EREVGCisKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9BUFBFTkRfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRVhURU5EX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lOU0VSVF9NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9SRU1PVkVfTUVUSE9EREVGCisKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9JVEVSX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURVJURVhUX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURVJGSU5EX01FVEhPRERFRgorCisgICAgeyJnZXRpdGVyYXRvciIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9fZG9jX199LAorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0dFVENISUxEUkVOX01FVEhPRERFRgorCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFTVNfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfS0VZU19NRVRIT0RERUYKKworICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX01BS0VFTEVNRU5UX01FVEhPRERFRgorCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfX19DT1BZX19fTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfX19ERUVQQ09QWV9fX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX19fU0laRU9GX19fTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfX19HRVRTVEFURV9fX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX19fU0VUU1RBVEVfX19NRVRIT0RERUYKKworICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgZWxlbWVudF9hc19tYXBwaW5nID0geworICAgIChsZW5mdW5jKSBlbGVtZW50X2xlbmd0aCwKKyAgICAoYmluYXJ5ZnVuYykgZWxlbWVudF9zdWJzY3IsCisgICAgKG9iam9iamFyZ3Byb2MpIGVsZW1lbnRfYXNzX3N1YnNjciwKK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgRWxlbWVudF9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJ4bWwuZXRyZWUuRWxlbWVudFRyZWUuRWxlbWVudCIsIHNpemVvZihFbGVtZW50T2JqZWN0KSwgMCwKKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3IpZWxlbWVudF9kZWFsbG9jLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIChyZXByZnVuYyllbGVtZW50X3JlcHIsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAmZWxlbWVudF9hc19zZXF1ZW5jZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgICZlbGVtZW50X2FzX21hcHBpbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIChnZXRhdHRyb2Z1bmMpZWxlbWVudF9nZXRhdHRybywgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgKHNldGF0dHJvZnVuYyllbGVtZW50X3NldGF0dHJvLCAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyllbGVtZW50X2djX3RyYXZlcnNlLCAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSllbGVtZW50X2djX2NsZWFyLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgb2Zmc2V0b2YoRWxlbWVudE9iamVjdCwgd2Vha3JlZmxpc3QpLCAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBlbGVtZW50X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYyllbGVtZW50X2luaXQsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIGVsZW1lbnRfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KK307CisKK3N0YXRpYyBQeU1ldGhvZERlZiB0cmVlYnVpbGRlcl9tZXRob2RzW10gPSB7CisgICAgX0VMRU1FTlRUUkVFX1RSRUVCVUlMREVSX0RBVEFfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX1RSRUVCVUlMREVSX1NUQVJUX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9UUkVFQlVJTERFUl9FTkRfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX1RSRUVCVUlMREVSX0NMT1NFX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBUcmVlQnVpbGRlcl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJ4bWwuZXRyZWUuRWxlbWVudFRyZWUuVHJlZUJ1aWxkZXIiLCBzaXplb2YoVHJlZUJ1aWxkZXJPYmplY3QpLCAwLAorICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3Rvcil0cmVlYnVpbGRlcl9kZWFsbG9jLCAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKXRyZWVidWlsZGVyX2djX3RyYXZlcnNlLCAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KXRyZWVidWlsZGVyX2djX2NsZWFyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIHRyZWVidWlsZGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX19faW5pdF9fLCAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgdHJlZWJ1aWxkZXJfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworfTsKKworc3RhdGljIFB5TWV0aG9kRGVmIHhtbHBhcnNlcl9tZXRob2RzW10gPSB7CisgICAgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9GRUVEX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9YTUxQQVJTRVJfQ0xPU0VfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9fUEFSU0VfV0hPTEVfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9fU0VURVZFTlRTX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9YTUxQQVJTRVJfRE9DVFlQRV9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0KK307CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgWE1MUGFyc2VyX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgInhtbC5ldHJlZS5FbGVtZW50VHJlZS5YTUxQYXJzZXIiLCBzaXplb2YoWE1MUGFyc2VyT2JqZWN0KSwgMCwKQEAgLTM3MDYsNyArMzg3NCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwotICAgIChpbml0cHJvYyl4bWxwYXJzZXJfaW5pdCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19faW5pdF9fLCAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICB4bWxwYXJzZXJfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCkBAIC0zNzczLDcgKzM5NDEsNyBAQAogICAgIGlmIChleHBhdF9jYXBpKSB7CiAgICAgICAgIC8qIGNoZWNrIHRoYXQgaXQncyB1c2FibGUgKi8KICAgICAgICAgaWYgKHN0cmNtcChleHBhdF9jYXBpLT5tYWdpYywgUHlFeHBhdF9DQVBJX01BR0lDKSAhPSAwIHx8Ci0gICAgICAgICAgICBleHBhdF9jYXBpLT5zaXplIDwgc2l6ZW9mKHN0cnVjdCBQeUV4cGF0X0NBUEkpIHx8CisgICAgICAgICAgICAoc2l6ZV90KWV4cGF0X2NhcGktPnNpemUgPCBzaXplb2Yoc3RydWN0IFB5RXhwYXRfQ0FQSSkgfHwKICAgICAgICAgICAgIGV4cGF0X2NhcGktPk1BSk9SX1ZFUlNJT04gIT0gWE1MX01BSk9SX1ZFUlNJT04gfHwKICAgICAgICAgICAgIGV4cGF0X2NhcGktPk1JTk9SX1ZFUlNJT04gIT0gWE1MX01JTk9SX1ZFUlNJT04gfHwKICAgICAgICAgICAgIGV4cGF0X2NhcGktPk1JQ1JPX1ZFUlNJT04gIT0gWE1MX01JQ1JPX1ZFUlNJT04pIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jIGIvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKaW5kZXggMjRkYTY3Ny4uMDM1ZDNkOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKQEAgLTI1LDcgKzI1LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBwYXJ0aWFsX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7Ci0gICAgUHlPYmplY3QgKmZ1bmM7CisgICAgUHlPYmplY3QgKmZ1bmMsICpwYXJncywgKm5hcmdzLCAqcGt3OwogICAgIHBhcnRpYWxvYmplY3QgKnB0bzsKIAogICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIDwgMSkgewpAQCAtMzQsNyArMzQsMTYgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgcGFyZ3MgPSBwa3cgPSBQeV9Ob25lOwogICAgIGZ1bmMgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOworICAgIGlmIChQeV9UWVBFKGZ1bmMpID09ICZwYXJ0aWFsX3R5cGUgJiYgdHlwZSA9PSAmcGFydGlhbF90eXBlKSB7CisgICAgICAgIHBhcnRpYWxvYmplY3QgKnBhcnQgPSAocGFydGlhbG9iamVjdCAqKWZ1bmM7CisgICAgICAgIGlmIChwYXJ0LT5kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHBhcmdzID0gcGFydC0+YXJnczsKKyAgICAgICAgICAgIHBrdyA9IHBhcnQtPmt3OworICAgICAgICAgICAgZnVuYyA9IHBhcnQtPmZuOworICAgICAgICB9CisgICAgfQogICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmdW5jKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGNhbGxhYmxlIik7CkBAIC00OCwxOCArNTcsNjMgQEAKIAogICAgIHB0by0+Zm4gPSBmdW5jOwogICAgIFB5X0lOQ1JFRihmdW5jKTsKLSAgICBwdG8tPmFyZ3MgPSBQeVR1cGxlX0dldFNsaWNlKGFyZ3MsIDEsIFBZX1NTSVpFX1RfTUFYKTsKLSAgICBpZiAocHRvLT5hcmdzID09IE5VTEwpIHsKKworICAgIG5hcmdzID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAxLCBQWV9TU0laRV9UX01BWCk7CisgICAgaWYgKG5hcmdzID09IE5VTEwpIHsKKyAgICAgICAgcHRvLT5hcmdzID0gTlVMTDsKICAgICAgICAgcHRvLT5rdyA9IE5VTEw7CiAgICAgICAgIFB5X0RFQ1JFRihwdG8pOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcHRvLT5rdyA9IChrdyAhPSBOVUxMKSA/IFB5RGljdF9Db3B5KGt3KSA6IFB5RGljdF9OZXcoKTsKLSAgICBpZiAocHRvLT5rdyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihwdG8pOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAocGFyZ3MgPT0gUHlfTm9uZSB8fCBQeVR1cGxlX0dFVF9TSVpFKHBhcmdzKSA9PSAwKSB7CisgICAgICAgIHB0by0+YXJncyA9IG5hcmdzOworICAgICAgICBQeV9JTkNSRUYobmFyZ3MpOwogICAgIH0KKyAgICBlbHNlIGlmIChQeVR1cGxlX0dFVF9TSVpFKG5hcmdzKSA9PSAwKSB7CisgICAgICAgIHB0by0+YXJncyA9IHBhcmdzOworICAgICAgICBQeV9JTkNSRUYocGFyZ3MpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcHRvLT5hcmdzID0gUHlTZXF1ZW5jZV9Db25jYXQocGFyZ3MsIG5hcmdzKTsKKyAgICAgICAgaWYgKHB0by0+YXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICBwdG8tPmt3ID0gTlVMTDsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwdG8pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfREVDUkVGKG5hcmdzKTsKIAorICAgIGlmIChrdyAhPSBOVUxMKSB7CisgICAgICAgIGlmIChwa3cgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgcHRvLT5rdyA9IFB5RGljdF9Db3B5KGt3KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHB0by0+a3cgPSBQeURpY3RfQ29weShwa3cpOworICAgICAgICAgICAgaWYgKHB0by0+a3cgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGlmIChQeURpY3RfTWVyZ2UocHRvLT5rdywga3csIDEpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHB0byk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAocHRvLT5rdyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocHRvKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAocGt3ID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIHB0by0+a3cgPSBQeURpY3RfTmV3KCk7CisgICAgICAgICAgICBpZiAocHRvLT5rdyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHB0byk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwdG8tPmt3ID0gcGt3OworICAgICAgICAgICAgUHlfSU5DUkVGKHBrdyk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBwdG8tPndlYWtyZWZsaXN0ID0gTlVMTDsKICAgICBwdG8tPmRpY3QgPSBOVUxMOwpAQCAtNTM2LDYgKzU5MCw1ODcgQEAKIG9mIHRoZSBzZXF1ZW5jZSBpbiB0aGUgY2FsY3VsYXRpb24sIGFuZCBzZXJ2ZXMgYXMgYSBkZWZhdWx0IHdoZW4gdGhlXG5cCiBzZXF1ZW5jZSBpcyBlbXB0eS4iKTsKIAorLyogbHJ1X2NhY2hlIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiB0aGlzIG9iamVjdCBpcyB1c2VkIGRlbGltaXQgYXJncyBhbmQga2V5d29yZHMgaW4gdGhlIGNhY2hlIGtleXMgKi8KK3N0YXRpYyBQeU9iamVjdCAqa3dkX21hcmsgPSBOVUxMOworCitzdHJ1Y3QgbHJ1X2xpc3RfZWxlbTsKK3N0cnVjdCBscnVfY2FjaGVfb2JqZWN0OworCit0eXBlZGVmIHN0cnVjdCBscnVfbGlzdF9lbGVtIHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgc3RydWN0IGxydV9saXN0X2VsZW0gKnByZXYsICpuZXh0OyAgLyogYm9ycm93ZWQgbGlua3MgKi8KKyAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBQeU9iamVjdCAqa2V5LCAqcmVzdWx0OworfSBscnVfbGlzdF9lbGVtOworCitzdGF0aWMgdm9pZAorbHJ1X2xpc3RfZWxlbV9kZWFsbG9jKGxydV9saXN0X2VsZW0gKmxpbmspCit7CisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0sobGluayk7CisgICAgUHlfWERFQ1JFRihsaW5rLT5rZXkpOworICAgIFB5X1hERUNSRUYobGluay0+cmVzdWx0KTsKKyAgICBQeU9iamVjdF9HQ19EZWwobGluayk7Cit9CisKK3N0YXRpYyBpbnQKK2xydV9saXN0X2VsZW1fdHJhdmVyc2UobHJ1X2xpc3RfZWxlbSAqbGluaywgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQobGluay0+a2V5KTsKKyAgICBQeV9WSVNJVChsaW5rLT5yZXN1bHQpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitscnVfbGlzdF9lbGVtX2NsZWFyKGxydV9saXN0X2VsZW0gKmxpbmspCit7CisgICAgUHlfQ0xFQVIobGluay0+a2V5KTsKKyAgICBQeV9DTEVBUihsaW5rLT5yZXN1bHQpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlUeXBlT2JqZWN0IGxydV9saXN0X2VsZW1fdHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJmdW5jdG9vbHMuX2xydV9saXN0X2VsZW0iLCAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YobHJ1X2xpc3RfZWxlbSksICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3RvcilscnVfbGlzdF9lbGVtX2RlYWxsb2MsICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylscnVfbGlzdF9lbGVtX3RyYXZlcnNlLCAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSlscnVfbGlzdF9lbGVtX2NsZWFyLCAgICAgICAvKiB0cF9jbGVhciAqLworfTsKKworCit0eXBlZGVmIFB5T2JqZWN0ICooKmxydV9jYWNoZV90ZXJuYXJ5ZnVuYykoc3RydWN0IGxydV9jYWNoZV9vYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisKK3R5cGVkZWYgc3RydWN0IGxydV9jYWNoZV9vYmplY3QgeworICAgIGxydV9saXN0X2VsZW0gcm9vdDsgIC8qIGluY2x1ZGVzIFB5T2JqZWN0X0hFQUQgKi8KKyAgICBQeV9zc2l6ZV90IG1heHNpemU7CisgICAgUHlPYmplY3QgKm1heHNpemVfTzsKKyAgICBQeU9iamVjdCAqZnVuYzsKKyAgICBscnVfY2FjaGVfdGVybmFyeWZ1bmMgd3JhcHBlcjsKKyAgICBQeU9iamVjdCAqY2FjaGU7CisgICAgUHlPYmplY3QgKmNhY2hlX2luZm9fdHlwZTsKKyAgICBQeV9zc2l6ZV90IG1pc3NlcywgaGl0czsKKyAgICBpbnQgdHlwZWQ7CisgICAgUHlPYmplY3QgKmRpY3Q7CisgICAgaW50IGZ1bGw7Cit9IGxydV9jYWNoZV9vYmplY3Q7CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgbHJ1X2NhY2hlX3R5cGU7CisKK3N0YXRpYyBQeU9iamVjdCAqCitscnVfY2FjaGVfbWFrZV9rZXkoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzLCBpbnQgdHlwZWQpCit7CisgICAgUHlPYmplY3QgKmtleSwgKnNvcnRlZF9pdGVtczsKKyAgICBQeV9zc2l6ZV90IGtleV9zaXplLCBwb3MsIGtleV9wb3M7CisKKyAgICAvKiBzaG9ydCBwYXRoLCBrZXkgd2lsbCBtYXRjaCBhcmdzIGFueXdheSwgd2hpY2ggaXMgYSB0dXBsZSAqLworICAgIGlmICghdHlwZWQgJiYgIWt3ZHMpIHsKKyAgICAgICAgUHlfSU5DUkVGKGFyZ3MpOworICAgICAgICByZXR1cm4gYXJnczsKKyAgICB9CisKKyAgICBpZiAoa3dkcyAmJiBQeURpY3RfU2l6ZShrd2RzKSA+IDApIHsKKyAgICAgICAgc29ydGVkX2l0ZW1zID0gUHlEaWN0X0l0ZW1zKGt3ZHMpOworICAgICAgICBpZiAoIXNvcnRlZF9pdGVtcykKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlMaXN0X1NvcnQoc29ydGVkX2l0ZW1zKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzb3J0ZWRfaXRlbXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgc29ydGVkX2l0ZW1zID0gTlVMTDsKKworICAgIGtleV9zaXplID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKKyAgICBpZiAoc29ydGVkX2l0ZW1zKQorICAgICAgICBrZXlfc2l6ZSArPSBQeUxpc3RfR0VUX1NJWkUoc29ydGVkX2l0ZW1zKTsKKyAgICBpZiAodHlwZWQpCisgICAgICAgIGtleV9zaXplICo9IDI7CisgICAgaWYgKHNvcnRlZF9pdGVtcykKKyAgICAgICAga2V5X3NpemUrKzsKKworICAgIGtleSA9IFB5VHVwbGVfTmV3KGtleV9zaXplKTsKKyAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIGtleV9wb3MgPSAwOworICAgIGZvciAocG9zID0gMDsgcG9zIDwgUHlUdXBsZV9HRVRfU0laRShhcmdzKTsgKytwb3MpIHsKKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIHBvcyk7CisgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShrZXksIGtleV9wb3MrKywgaXRlbSk7CisgICAgfQorICAgIGlmIChzb3J0ZWRfaXRlbXMpIHsKKyAgICAgICAgUHlfSU5DUkVGKGt3ZF9tYXJrKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShrZXksIGtleV9wb3MrKywga3dkX21hcmspOworICAgICAgICBmb3IgKHBvcyA9IDA7IHBvcyA8IFB5TGlzdF9HRVRfU0laRShzb3J0ZWRfaXRlbXMpOyArK3BvcykgeworICAgICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeUxpc3RfR0VUX0lURU0oc29ydGVkX2l0ZW1zLCBwb3MpOworICAgICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShrZXksIGtleV9wb3MrKywgaXRlbSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHR5cGVkKSB7CisgICAgICAgIGZvciAocG9zID0gMDsgcG9zIDwgUHlUdXBsZV9HRVRfU0laRShhcmdzKTsgKytwb3MpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtID0gKFB5T2JqZWN0ICopUHlfVFlQRShQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIHBvcykpOworICAgICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShrZXksIGtleV9wb3MrKywgaXRlbSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNvcnRlZF9pdGVtcykgeworICAgICAgICAgICAgZm9yIChwb3MgPSAwOyBwb3MgPCBQeUxpc3RfR0VUX1NJWkUoc29ydGVkX2l0ZW1zKTsgKytwb3MpIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqdHBfaXRlbXMgPSBQeUxpc3RfR0VUX0lURU0oc29ydGVkX2l0ZW1zLCBwb3MpOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtID0gKFB5T2JqZWN0ICopUHlfVFlQRShQeVR1cGxlX0dFVF9JVEVNKHRwX2l0ZW1zLCAxKSk7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oa2V5LCBrZXlfcG9zKyssIGl0ZW0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGFzc2VydChrZXlfcG9zID09IGtleV9zaXplKTsKKworZG9uZToKKyAgICBpZiAoc29ydGVkX2l0ZW1zKQorICAgICAgICBQeV9ERUNSRUYoc29ydGVkX2l0ZW1zKTsKKyAgICByZXR1cm4ga2V5OworfQorCitzdGF0aWMgUHlPYmplY3QgKgordW5jYWNoZWRfbHJ1X2NhY2hlX3dyYXBwZXIobHJ1X2NhY2hlX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeU9iamVjdF9DYWxsKHNlbGYtPmZ1bmMsIGFyZ3MsIGt3ZHMpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBzZWxmLT5taXNzZXMrKzsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgoraW5maW5pdGVfbHJ1X2NhY2hlX3dyYXBwZXIobHJ1X2NhY2hlX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlfaGFzaF90IGhhc2g7CisgICAgUHlPYmplY3QgKmtleSA9IGxydV9jYWNoZV9tYWtlX2tleShhcmdzLCBrd2RzLCBzZWxmLT50eXBlZCk7CisgICAgaWYgKCFrZXkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CisgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IF9QeURpY3RfR2V0SXRlbV9Lbm93bkhhc2goc2VsZi0+Y2FjaGUsIGtleSwgaGFzaCk7CisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKKyAgICAgICAgc2VsZi0+aGl0cysrOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKHNlbGYtPmZ1bmMsIGFyZ3MsIGt3ZHMpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKF9QeURpY3RfU2V0SXRlbV9Lbm93bkhhc2goc2VsZi0+Y2FjaGUsIGtleSwgcmVzdWx0LCBoYXNoKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfREVDUkVGKGtleSk7CisgICAgc2VsZi0+bWlzc2VzKys7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQKK2xydV9jYWNoZV9leHRyaWNhdGVfbGluayhscnVfbGlzdF9lbGVtICpsaW5rKQoreworICAgIGxpbmstPnByZXYtPm5leHQgPSBsaW5rLT5uZXh0OworICAgIGxpbmstPm5leHQtPnByZXYgPSBsaW5rLT5wcmV2OworfQorCitzdGF0aWMgdm9pZAorbHJ1X2NhY2hlX2FwcGVuZF9saW5rKGxydV9jYWNoZV9vYmplY3QgKnNlbGYsIGxydV9saXN0X2VsZW0gKmxpbmspCit7CisgICAgbHJ1X2xpc3RfZWxlbSAqcm9vdCA9ICZzZWxmLT5yb290OworICAgIGxydV9saXN0X2VsZW0gKmxhc3QgPSByb290LT5wcmV2OworICAgIGxhc3QtPm5leHQgPSByb290LT5wcmV2ID0gbGluazsKKyAgICBsaW5rLT5wcmV2ID0gbGFzdDsKKyAgICBsaW5rLT5uZXh0ID0gcm9vdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2JvdW5kZWRfbHJ1X2NhY2hlX3dyYXBwZXIobHJ1X2NhY2hlX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIGxydV9saXN0X2VsZW0gKmxpbms7CisgICAgUHlPYmplY3QgKmtleSwgKnJlc3VsdDsKKyAgICBQeV9oYXNoX3QgaGFzaDsKKworICAgIGtleSA9IGxydV9jYWNoZV9tYWtlX2tleShhcmdzLCBrd2RzLCBzZWxmLT50eXBlZCk7CisgICAgaWYgKCFrZXkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CisgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxpbmsgID0gKGxydV9saXN0X2VsZW0gKilfUHlEaWN0X0dldEl0ZW1fS25vd25IYXNoKHNlbGYtPmNhY2hlLCBrZXksIGhhc2gpOworICAgIGlmIChsaW5rKSB7CisgICAgICAgIGxydV9jYWNoZV9leHRyaWNhdGVfbGluayhsaW5rKTsKKyAgICAgICAgbHJ1X2NhY2hlX2FwcGVuZF9saW5rKHNlbGYsIGxpbmspOworICAgICAgICBzZWxmLT5oaXRzKys7CisgICAgICAgIHJlc3VsdCA9IGxpbmstPnJlc3VsdDsKKyAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoc2VsZi0+ZnVuYywgYXJncywga3dkcyk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoc2VsZi0+ZnVsbCAmJiBzZWxmLT5yb290Lm5leHQgIT0gJnNlbGYtPnJvb3QpIHsKKyAgICAgICAgLyogVXNlIHRoZSBvbGRlc3QgaXRlbSB0byBzdG9yZSB0aGUgbmV3IGtleSBhbmQgcmVzdWx0LiAqLworICAgICAgICBQeU9iamVjdCAqb2xka2V5LCAqb2xkcmVzdWx0OworICAgICAgICAvKiBFeHRyaWNhdGUgdGhlIG9sZGVzdCBpdGVtLiAqLworICAgICAgICBsaW5rID0gc2VsZi0+cm9vdC5uZXh0OworICAgICAgICBscnVfY2FjaGVfZXh0cmljYXRlX2xpbmsobGluayk7CisgICAgICAgIC8qIFJlbW92ZSBpdCBmcm9tIHRoZSBjYWNoZS4KKyAgICAgICAgICAgVGhlIGNhY2hlIGRpY3QgaG9sZHMgb25lIHJlZmVyZW5jZSB0byB0aGUgbGluaywKKyAgICAgICAgICAgYW5kIHRoZSBsaW5rZWQgbGlzdCBob2xkcyB5ZXQgb25lIHJlZmVyZW5jZSB0byBpdC4gKi8KKyAgICAgICAgaWYgKF9QeURpY3RfRGVsSXRlbV9Lbm93bkhhc2goc2VsZi0+Y2FjaGUsIGxpbmstPmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluay0+aGFzaCkgPCAwKSB7CisgICAgICAgICAgICBscnVfY2FjaGVfYXBwZW5kX2xpbmsoc2VsZiwgbGluayk7CisgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgLyogS2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgb2xkIGtleSBhbmQgb2xkIHJlc3VsdCB0bworICAgICAgICAgICBwcmV2ZW50IHRoZWlyIHJlZiBjb3VudHMgZnJvbSBnb2luZyB0byB6ZXJvIGR1cmluZyB0aGUKKyAgICAgICAgICAgdXBkYXRlLiBUaGF0IHdpbGwgcHJldmVudCBwb3RlbnRpYWxseSBhcmJpdHJhcnkgb2JqZWN0CisgICAgICAgICAgIGNsZWFuLXVwIGNvZGUgKGkuZS4gX19kZWxfXykgZnJvbSBydW5uaW5nIHdoaWxlIHdlJ3JlCisgICAgICAgICAgIHN0aWxsIGFkanVzdGluZyB0aGUgbGlua3MuICovCisgICAgICAgIG9sZGtleSA9IGxpbmstPmtleTsKKyAgICAgICAgb2xkcmVzdWx0ID0gbGluay0+cmVzdWx0OworCisgICAgICAgIGxpbmstPmhhc2ggPSBoYXNoOworICAgICAgICBsaW5rLT5rZXkgPSBrZXk7CisgICAgICAgIGxpbmstPnJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbV9Lbm93bkhhc2goc2VsZi0+Y2FjaGUsIGtleSwgKFB5T2JqZWN0ICopbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaCkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobGluayk7CisgICAgICAgICAgICBQeV9ERUNSRUYob2xka2V5KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvbGRyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbHJ1X2NhY2hlX2FwcGVuZF9saW5rKHNlbGYsIGxpbmspOworICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsgLyogZm9yIHJldHVybiAqLworICAgICAgICBQeV9ERUNSRUYob2xka2V5KTsKKyAgICAgICAgUHlfREVDUkVGKG9sZHJlc3VsdCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogUHV0IHJlc3VsdCBpbiBhIG5ldyBsaW5rIGF0IHRoZSBmcm9udCBvZiB0aGUgcXVldWUuICovCisgICAgICAgIGxpbmsgPSAobHJ1X2xpc3RfZWxlbSAqKVB5T2JqZWN0X0dDX05ldyhscnVfbGlzdF9lbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxydV9saXN0X2VsZW1fdHlwZSk7CisgICAgICAgIGlmIChsaW5rID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGxpbmstPmhhc2ggPSBoYXNoOworICAgICAgICBsaW5rLT5rZXkgPSBrZXk7CisgICAgICAgIGxpbmstPnJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKGxpbmspOworICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtX0tub3duSGFzaChzZWxmLT5jYWNoZSwga2V5LCAoUHlPYmplY3QgKilsaW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5rKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGxydV9jYWNoZV9hcHBlbmRfbGluayhzZWxmLCBsaW5rKTsKKyAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7IC8qIGZvciByZXR1cm4gKi8KKyAgICAgICAgc2VsZi0+ZnVsbCA9IChQeURpY3RfU2l6ZShzZWxmLT5jYWNoZSkgPj0gc2VsZi0+bWF4c2l6ZSk7CisgICAgfQorICAgIHNlbGYtPm1pc3NlcysrOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitscnVfY2FjaGVfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKK3sKKyAgICBQeU9iamVjdCAqZnVuYywgKm1heHNpemVfTywgKmNhY2hlX2luZm9fdHlwZSwgKmNhY2hlZGljdDsKKyAgICBpbnQgdHlwZWQ7CisgICAgbHJ1X2NhY2hlX29iamVjdCAqb2JqOworICAgIFB5X3NzaXplX3QgbWF4c2l6ZTsKKyAgICBQeU9iamVjdCAqKCp3cmFwcGVyKShscnVfY2FjaGVfb2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJ1c2VyX2Z1bmN0aW9uIiwgIm1heHNpemUiLCAidHlwZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYWNoZV9pbmZvX3R5cGUiLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiT09wTzpscnVfY2FjaGUiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZnVuYywgJm1heHNpemVfTywgJnR5cGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjYWNoZV9pbmZvX3R5cGUpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmdW5jKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGNhbGxhYmxlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIHNlbGVjdCB0aGUgY2FjaGluZyBmdW5jdGlvbiwgYW5kIG1ha2UvaW5jIG1heHNpemVfTyAqLworICAgIGlmIChtYXhzaXplX08gPT0gUHlfTm9uZSkgeworICAgICAgICB3cmFwcGVyID0gaW5maW5pdGVfbHJ1X2NhY2hlX3dyYXBwZXI7CisgICAgICAgIC8qIHVzZSB0aGlzIG9ubHkgdG8gaW5pdGlhbGl6ZSBscnVfY2FjaGVfb2JqZWN0IGF0dHJpYnV0ZSBtYXhzaXplICovCisgICAgICAgIG1heHNpemUgPSAtMTsKKyAgICB9IGVsc2UgaWYgKFB5SW5kZXhfQ2hlY2sobWF4c2l6ZV9PKSkgeworICAgICAgICBtYXhzaXplID0gUHlOdW1iZXJfQXNTc2l6ZV90KG1heHNpemVfTywgUHlFeGNfT3ZlcmZsb3dFcnJvcik7CisgICAgICAgIGlmIChtYXhzaXplID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKG1heHNpemUgPT0gMCkKKyAgICAgICAgICAgIHdyYXBwZXIgPSB1bmNhY2hlZF9scnVfY2FjaGVfd3JhcHBlcjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd3JhcHBlciA9IGJvdW5kZWRfbHJ1X2NhY2hlX3dyYXBwZXI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm1heHNpemUgc2hvdWxkIGJlIGludGVnZXIgb3IgTm9uZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIShjYWNoZWRpY3QgPSBQeURpY3RfTmV3KCkpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG9iaiA9IChscnVfY2FjaGVfb2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKG9iaiA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihjYWNoZWRpY3QpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBvYmotPmNhY2hlID0gY2FjaGVkaWN0OworICAgIG9iai0+cm9vdC5wcmV2ID0gJm9iai0+cm9vdDsKKyAgICBvYmotPnJvb3QubmV4dCA9ICZvYmotPnJvb3Q7CisgICAgb2JqLT5tYXhzaXplID0gbWF4c2l6ZTsKKyAgICBQeV9JTkNSRUYobWF4c2l6ZV9PKTsKKyAgICBvYmotPm1heHNpemVfTyA9IG1heHNpemVfTzsKKyAgICBQeV9JTkNSRUYoZnVuYyk7CisgICAgb2JqLT5mdW5jID0gZnVuYzsKKyAgICBvYmotPndyYXBwZXIgPSB3cmFwcGVyOworICAgIG9iai0+bWlzc2VzID0gb2JqLT5oaXRzID0gMDsKKyAgICBvYmotPnR5cGVkID0gdHlwZWQ7CisgICAgUHlfSU5DUkVGKGNhY2hlX2luZm9fdHlwZSk7CisgICAgb2JqLT5jYWNoZV9pbmZvX3R5cGUgPSBjYWNoZV9pbmZvX3R5cGU7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopb2JqOworfQorCitzdGF0aWMgbHJ1X2xpc3RfZWxlbSAqCitscnVfY2FjaGVfdW5saW5rX2xpc3QobHJ1X2NhY2hlX29iamVjdCAqc2VsZikKK3sKKyAgICBscnVfbGlzdF9lbGVtICpyb290ID0gJnNlbGYtPnJvb3Q7CisgICAgbHJ1X2xpc3RfZWxlbSAqbGluayA9IHJvb3QtPm5leHQ7CisgICAgaWYgKGxpbmsgPT0gcm9vdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcm9vdC0+cHJldi0+bmV4dCA9IE5VTEw7CisgICAgcm9vdC0+bmV4dCA9IHJvb3QtPnByZXYgPSByb290OworICAgIHJldHVybiBsaW5rOworfQorCitzdGF0aWMgdm9pZAorbHJ1X2NhY2hlX2NsZWFyX2xpc3QobHJ1X2xpc3RfZWxlbSAqbGluaykKK3sKKyAgICB3aGlsZSAobGluayAhPSBOVUxMKSB7CisgICAgICAgIGxydV9saXN0X2VsZW0gKm5leHQgPSBsaW5rLT5uZXh0OworICAgICAgICBQeV9ERUNSRUYobGluayk7CisgICAgICAgIGxpbmsgPSBuZXh0OworICAgIH0KK30KKworc3RhdGljIHZvaWQKK2xydV9jYWNoZV9kZWFsbG9jKGxydV9jYWNoZV9vYmplY3QgKm9iaikKK3sKKyAgICBscnVfbGlzdF9lbGVtICpsaXN0ID0gbHJ1X2NhY2hlX3VubGlua19saXN0KG9iaik7CisgICAgUHlfWERFQ1JFRihvYmotPm1heHNpemVfTyk7CisgICAgUHlfWERFQ1JFRihvYmotPmZ1bmMpOworICAgIFB5X1hERUNSRUYob2JqLT5jYWNoZSk7CisgICAgUHlfWERFQ1JFRihvYmotPmRpY3QpOworICAgIFB5X1hERUNSRUYob2JqLT5jYWNoZV9pbmZvX3R5cGUpOworICAgIGxydV9jYWNoZV9jbGVhcl9saXN0KGxpc3QpOworICAgIFB5X1RZUEUob2JqKS0+dHBfZnJlZShvYmopOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbHJ1X2NhY2hlX2NhbGwobHJ1X2NhY2hlX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHJldHVybiBzZWxmLT53cmFwcGVyKHNlbGYsIGFyZ3MsIGt3ZHMpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbHJ1X2NhY2hlX2Rlc2NyX2dldChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKnR5cGUpCit7CisgICAgaWYgKG9iaiA9PSBQeV9Ob25lIHx8IG9iaiA9PSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICAgICAgcmV0dXJuIHNlbGY7CisgICAgfQorICAgIHJldHVybiBQeU1ldGhvZF9OZXcoc2VsZiwgb2JqKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2xydV9jYWNoZV9jYWNoZV9pbmZvKGxydV9jYWNoZV9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCit7CisgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5jYWNoZV9pbmZvX3R5cGUsICJubk9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmhpdHMsIHNlbGYtPm1pc3Nlcywgc2VsZi0+bWF4c2l6ZV9PLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlEaWN0X1NpemUoc2VsZi0+Y2FjaGUpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2xydV9jYWNoZV9jYWNoZV9jbGVhcihscnVfY2FjaGVfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIGxydV9saXN0X2VsZW0gKmxpc3QgPSBscnVfY2FjaGVfdW5saW5rX2xpc3Qoc2VsZik7CisgICAgc2VsZi0+aGl0cyA9IHNlbGYtPm1pc3NlcyA9IDA7CisgICAgc2VsZi0+ZnVsbCA9IDA7CisgICAgUHlEaWN0X0NsZWFyKHNlbGYtPmNhY2hlKTsKKyAgICBscnVfY2FjaGVfY2xlYXJfbGlzdChsaXN0KTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2xydV9jYWNoZV9yZWR1Y2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCit7CisgICAgcmV0dXJuIFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc2VsZiwgIl9fcXVhbG5hbWVfXyIpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbHJ1X2NhY2hlX2NvcHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCit7CisgICAgUHlfSU5DUkVGKHNlbGYpOworICAgIHJldHVybiBzZWxmOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbHJ1X2NhY2hlX2RlZXBjb3B5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworc3RhdGljIGludAorbHJ1X2NhY2hlX3RwX3RyYXZlcnNlKGxydV9jYWNoZV9vYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIGxydV9saXN0X2VsZW0gKmxpbmsgPSBzZWxmLT5yb290Lm5leHQ7CisgICAgd2hpbGUgKGxpbmsgIT0gJnNlbGYtPnJvb3QpIHsKKyAgICAgICAgbHJ1X2xpc3RfZWxlbSAqbmV4dCA9IGxpbmstPm5leHQ7CisgICAgICAgIFB5X1ZJU0lUKGxpbmspOworICAgICAgICBsaW5rID0gbmV4dDsKKyAgICB9CisgICAgUHlfVklTSVQoc2VsZi0+bWF4c2l6ZV9PKTsKKyAgICBQeV9WSVNJVChzZWxmLT5mdW5jKTsKKyAgICBQeV9WSVNJVChzZWxmLT5jYWNoZSk7CisgICAgUHlfVklTSVQoc2VsZi0+Y2FjaGVfaW5mb190eXBlKTsKKyAgICBQeV9WSVNJVChzZWxmLT5kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorbHJ1X2NhY2hlX3RwX2NsZWFyKGxydV9jYWNoZV9vYmplY3QgKnNlbGYpCit7CisgICAgbHJ1X2xpc3RfZWxlbSAqbGlzdCA9IGxydV9jYWNoZV91bmxpbmtfbGlzdChzZWxmKTsKKyAgICBQeV9DTEVBUihzZWxmLT5tYXhzaXplX08pOworICAgIFB5X0NMRUFSKHNlbGYtPmZ1bmMpOworICAgIFB5X0NMRUFSKHNlbGYtPmNhY2hlKTsKKyAgICBQeV9DTEVBUihzZWxmLT5jYWNoZV9pbmZvX3R5cGUpOworICAgIFB5X0NMRUFSKHNlbGYtPmRpY3QpOworICAgIGxydV9jYWNoZV9jbGVhcl9saXN0KGxpc3QpOworICAgIHJldHVybiAwOworfQorCisKK1B5RG9jX1NUUlZBUihscnVfY2FjaGVfZG9jLAorIkNyZWF0ZSBhIGNhY2hlZCBjYWxsYWJsZSB0aGF0IHdyYXBzIGFub3RoZXIgZnVuY3Rpb24uXG5cCitcblwKK3VzZXJfZnVuY3Rpb246ICAgICAgdGhlIGZ1bmN0aW9uIGJlaW5nIGNhY2hlZFxuXAorXG5cCittYXhzaXplOiAgMCAgICAgICAgIGZvciBubyBjYWNoaW5nXG5cCisgICAgICAgICAgTm9uZSAgICAgIGZvciB1bmxpbWl0ZWQgY2FjaGUgc2l6ZVxuXAorICAgICAgICAgIG4gICAgICAgICBmb3IgYSBib3VuZGVkIGNhY2hlXG5cCitcblwKK3R5cGVkOiAgICBGYWxzZSAgICAgY2FjaGUgZigzKSBhbmQgZigzLjApIGFzIGlkZW50aWNhbCBjYWxsc1xuXAorICAgICAgICAgIFRydWUgICAgICBjYWNoZSBmKDMpIGFuZCBmKDMuMCkgYXMgZGlzdGluY3QgY2FsbHNcblwKK1xuXAorY2FjaGVfaW5mb190eXBlOiAgICBuYW1lZHR1cGxlIGNsYXNzIHdpdGggdGhlIGZpZWxkczpcblwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhpdHMgbWlzc2VzIGN1cnJzaXplIG1heHNpemVcbiIKKyk7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBscnVfY2FjaGVfbWV0aG9kc1tdID0geworICAgIHsiY2FjaGVfaW5mbyIsIChQeUNGdW5jdGlvbilscnVfY2FjaGVfY2FjaGVfaW5mbywgTUVUSF9OT0FSR1N9LAorICAgIHsiY2FjaGVfY2xlYXIiLCAoUHlDRnVuY3Rpb24pbHJ1X2NhY2hlX2NhY2hlX2NsZWFyLCBNRVRIX05PQVJHU30sCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWxydV9jYWNoZV9yZWR1Y2UsIE1FVEhfTk9BUkdTfSwKKyAgICB7Il9fY29weV9fIiwgKFB5Q0Z1bmN0aW9uKWxydV9jYWNoZV9jb3B5LCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKWxydV9jYWNoZV9kZWVwY29weSwgTUVUSF9WQVJBUkdTfSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeUdldFNldERlZiBscnVfY2FjaGVfZ2V0c2V0bGlzdFtdID0geworICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3R9LAorICAgIHtOVUxMfQorfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBscnVfY2FjaGVfdHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiZnVuY3Rvb2xzLl9scnVfY2FjaGVfd3JhcHBlciIsICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKGxydV9jYWNoZV9vYmplY3QpLCAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3IpbHJ1X2NhY2hlX2RlYWxsb2MsICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgKHRlcm5hcnlmdW5jKWxydV9jYWNoZV9jYWxsLCAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFR8UHlfVFBGTEFHU19CQVNFVFlQRXxQeV9UUEZMQUdTX0hBVkVfR0MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBscnVfY2FjaGVfZG9jLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWxydV9jYWNoZV90cF90cmF2ZXJzZSwvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KWxydV9jYWNoZV90cF9jbGVhciwgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGxydV9jYWNoZV9tZXRob2RzLCAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgbHJ1X2NhY2hlX2dldHNldGxpc3QsICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICBscnVfY2FjaGVfZGVzY3JfZ2V0LCAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICBvZmZzZXRvZihscnVfY2FjaGVfb2JqZWN0LCBkaWN0KSwgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgbHJ1X2NhY2hlX25ldywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCiAvKiBtb2R1bGUgbGV2ZWwgY29kZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogUHlEb2NfU1RSVkFSKG1vZHVsZV9kb2MsCkBAIC01NDgsNiArMTE4MywxMSBAQAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCitzdGF0aWMgdm9pZAorbW9kdWxlX2ZyZWUodm9pZCAqbSkKK3sKKyAgICBQeV9DTEVBUihrd2RfbWFyayk7Cit9CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX2Z1bmN0b29sc21vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCkBAIC01NTgsNyArMTE5OCw3IEBACiAgICAgTlVMTCwKICAgICBOVUxMLAogICAgIE5VTEwsCi0gICAgTlVMTAorICAgIG1vZHVsZV9mcmVlLAogfTsKIAogUHlNT0RJTklUX0ZVTkMKQEAgLTU2OSw2ICsxMjA5LDcgQEAKICAgICBjaGFyICpuYW1lOwogICAgIFB5VHlwZU9iamVjdCAqdHlwZWxpc3RbXSA9IHsKICAgICAgICAgJnBhcnRpYWxfdHlwZSwKKyAgICAgICAgJmxydV9jYWNoZV90eXBlLAogICAgICAgICBOVUxMCiAgICAgfTsKIApAQCAtNTc2LDYgKzEyMTcsMTIgQEAKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIGt3ZF9tYXJrID0gUHlPYmplY3RfQ2FsbE9iamVjdCgoUHlPYmplY3QgKikmUHlCYXNlT2JqZWN0X1R5cGUsIE5VTEwpOworICAgIGlmICgha3dkX21hcmspIHsKKyAgICAgICAgUHlfREVDUkVGKG0pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBmb3IgKGk9MCA7IHR5cGVsaXN0W2ldICE9IE5VTEwgOyBpKyspIHsKICAgICAgICAgaWYgKFB5VHlwZV9SZWFkeSh0eXBlbGlzdFtpXSkgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19nZGJtbW9kdWxlLmMgYi9Nb2R1bGVzL19nZGJtbW9kdWxlLmMKaW5kZXggMjI5ZTE2ZS4uZjA3MGExNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZ2RibW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2dkYm1tb2R1bGUuYwpAQCAtMTYsMTcgKzE2LDIzIEBACiBleHRlcm4gY29uc3QgY2hhciAqIGdkYm1fc3RyZXJyb3IoZ2RibV9lcnJvcik7CiAjZW5kaWYKIAorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9nZGJtCitjbGFzcyBfZ2RibS5nZGJtICJkYm1vYmplY3QgKiIgIiZEYm10eXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MTEzOTI3YzYxNzA3MjliMl0qLworCiBQeURvY19TVFJWQVIoZ2RibW1vZHVsZV9fZG9jX18sCiAiVGhpcyBtb2R1bGUgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIHRvIHRoZSBHTlUgREJNIChHREJNKSBsaWJyYXJ5LlxuXAogXG5cCiBUaGlzIG1vZHVsZSBpcyBxdWl0ZSBzaW1pbGFyIHRvIHRoZSBkYm0gbW9kdWxlLCBidXQgdXNlcyBHREJNIGluc3RlYWQgdG9cblwKLXByb3ZpZGUgc29tZSBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkuIFBsZWFzZSBub3RlIHRoYXQgdGhlIGZpbGUgZm9ybWF0c1xuXAotY3JlYXRlZCBieSBHREJNIGFuZCBkYm0gYXJlIGluY29tcGF0aWJsZS4gXG5cCitwcm92aWRlIHNvbWUgYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5LiAgUGxlYXNlIG5vdGUgdGhhdCB0aGUgZmlsZSBmb3JtYXRzXG5cCitjcmVhdGVkIGJ5IEdEQk0gYW5kIGRibSBhcmUgaW5jb21wYXRpYmxlLlxuXAogXG5cCiBHREJNIG9iamVjdHMgYmVoYXZlIGxpa2UgbWFwcGluZ3MgKGRpY3Rpb25hcmllcyksIGV4Y2VwdCB0aGF0IGtleXMgYW5kXG5cCi12YWx1ZXMgYXJlIGFsd2F5cyBzdHJpbmdzLiBQcmludGluZyBhIEdEQk0gb2JqZWN0IGRvZXNuJ3QgcHJpbnQgdGhlXG5cCi1rZXlzIGFuZCB2YWx1ZXMsIGFuZCB0aGUgaXRlbXMoKSBhbmQgdmFsdWVzKCkgbWV0aG9kcyBhcmUgbm90XG5cCi1zdXBwb3J0ZWQuIik7Cit2YWx1ZXMgYXJlIGFsd2F5cyBpbW11dGFibGUgYnl0ZXMtbGlrZSBvYmplY3RzIG9yIHN0cmluZ3MuICBQcmludGluZ1xuXAorYSBHREJNIG9iamVjdCBkb2Vzbid0IHByaW50IHRoZSBrZXlzIGFuZCB2YWx1ZXMsIGFuZCB0aGUgaXRlbXMoKSBhbmRcblwKK3ZhbHVlcygpIG1ldGhvZHMgYXJlIG5vdCBzdXBwb3J0ZWQuIik7CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECkBAIC0zNiw2ICs0Miw4IEBACiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgRGJtdHlwZTsKIAorI2luY2x1ZGUgImNsaW5pYy9fZ2RibW1vZHVsZS5jLmgiCisKICNkZWZpbmUgaXNfZGJtb2JqZWN0KHYpIChQeV9UWVBFKHYpID09ICZEYm10eXBlKQogI2RlZmluZSBjaGVja19kYm1vYmplY3Rfb3Blbih2KSBpZiAoKHYpLT5kaV9kYm0gPT0gTlVMTCkgXAogICAgIHsgUHlFcnJfU2V0U3RyaW5nKERibUVycm9yLCAiR0RCTSBvYmplY3QgaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQiKTsgXApAQCAtNDgsMTUgKzU2LDE1IEBACiBQeURvY19TVFJWQVIoZ2RibV9vYmplY3RfX2RvY19fLAogIlRoaXMgb2JqZWN0IHJlcHJlc2VudHMgYSBHREJNIGRhdGFiYXNlLlxuXAogR0RCTSBvYmplY3RzIGJlaGF2ZSBsaWtlIG1hcHBpbmdzIChkaWN0aW9uYXJpZXMpLCBleGNlcHQgdGhhdCBrZXlzIGFuZFxuXAotdmFsdWVzIGFyZSBhbHdheXMgc3RyaW5ncy4gUHJpbnRpbmcgYSBHREJNIG9iamVjdCBkb2Vzbid0IHByaW50IHRoZVxuXAota2V5cyBhbmQgdmFsdWVzLCBhbmQgdGhlIGl0ZW1zKCkgYW5kIHZhbHVlcygpIG1ldGhvZHMgYXJlIG5vdFxuXAotc3VwcG9ydGVkLlxuXAordmFsdWVzIGFyZSBhbHdheXMgaW1tdXRhYmxlIGJ5dGVzLWxpa2Ugb2JqZWN0cyBvciBzdHJpbmdzLiAgUHJpbnRpbmdcblwKK2EgR0RCTSBvYmplY3QgZG9lc24ndCBwcmludCB0aGUga2V5cyBhbmQgdmFsdWVzLCBhbmQgdGhlIGl0ZW1zKCkgYW5kXG5cCit2YWx1ZXMoKSBtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVkLlxuXAogXG5cCiBHREJNIG9iamVjdHMgYWxzbyBzdXBwb3J0IGFkZGl0aW9uYWwgb3BlcmF0aW9ucyBzdWNoIGFzIGZpcnN0a2V5LFxuXAogbmV4dGtleSwgcmVvcmdhbml6ZSwgYW5kIHN5bmMuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1uZXdkYm1vYmplY3QoY2hhciAqZmlsZSwgaW50IGZsYWdzLCBpbnQgbW9kZSkKK25ld2RibW9iamVjdChjb25zdCBjaGFyICpmaWxlLCBpbnQgZmxhZ3MsIGludCBtb2RlKQogewogICAgIGRibW9iamVjdCAqZHA7CiAKQEAgLTY1LDcgKzczLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZHAtPmRpX3NpemUgPSAtMTsKICAgICBlcnJubyA9IDA7Ci0gICAgaWYgKChkcC0+ZGlfZGJtID0gZ2RibV9vcGVuKGZpbGUsIDAsIGZsYWdzLCBtb2RlLCBOVUxMKSkgPT0gMCkgeworICAgIGlmICgoZHAtPmRpX2RibSA9IGdkYm1fb3BlbigoY2hhciAqKWZpbGUsIDAsIGZsYWdzLCBtb2RlLCBOVUxMKSkgPT0gMCkgewogICAgICAgICBpZiAoZXJybm8gIT0gMCkKICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhEYm1FcnJvcik7CiAgICAgICAgIGVsc2UKQEAgLTEzNSwyNCArMTQzLDI3IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLVB5RG9jX1NUUlZBUihkYm1fZ2V0X19kb2NfXywKLSJnZXQoa2V5WywgZGVmYXVsdF0pIC0+IHZhbHVlXG5cCi1HZXQgdGhlIHZhbHVlIGZvciBrZXksIG9yIGRlZmF1bHQgaWYgbm90IHByZXNlbnQ7IGlmIG5vdCBnaXZlbixcblwKLWRlZmF1bHQgaXMgTm9uZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19nZGJtLmdkYm0uZ2V0CisKKyAgICBrZXk6IG9iamVjdAorICAgIGRlZmF1bHQ6IG9iamVjdCA9IE5vbmUKKyAgICAvCisKK0dldCB0aGUgdmFsdWUgZm9yIGtleSwgb3IgZGVmYXVsdCBpZiBub3QgcHJlc2VudC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRibV9nZXQoZGJtb2JqZWN0ICpkcCwgUHlPYmplY3QgKmFyZ3MpCitfZ2RibV9nZGJtX2dldF9pbXBsKGRibW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTliN2M1ODVhZDRmNTU0YSBpbnB1dD1hOWMyMDQyM2YzNGMxN2I2XSovCiB7Ci0gICAgUHlPYmplY3QgKnYsICpyZXM7Ci0gICAgUHlPYmplY3QgKmRlZiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKnJlczsKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImdldCIsIDEsIDIsICZ2LCAmZGVmKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzID0gZGJtX3N1YnNjcmlwdChkcCwgdik7CisgICAgcmVzID0gZGJtX3N1YnNjcmlwdChzZWxmLCBrZXkpOwogICAgIGlmIChyZXMgPT0gTlVMTCAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBQeV9JTkNSRUYoZGVmKTsKLSAgICAgICAgcmV0dXJuIGRlZjsKKyAgICAgICAgUHlfSU5DUkVGKGRlZmF1bHRfdmFsdWUpOworICAgICAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTsKICAgICB9CiAgICAgcmV0dXJuIHJlczsKIH0KQEAgLTE5OCwyNSArMjA5LDI5IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLVB5RG9jX1NUUlZBUihkYm1fc2V0ZGVmYXVsdF9fZG9jX18sCi0ic2V0ZGVmYXVsdChrZXlbLCBkZWZhdWx0XSkgLT4gdmFsdWVcblwKLUdldCB2YWx1ZSBmb3Iga2V5LCBvciBzZXQgaXQgdG8gZGVmYXVsdCBhbmQgcmV0dXJuIGRlZmF1bHQgaWYgbm90IHByZXNlbnQ7XG5cCi1pZiBub3QgZ2l2ZW4sIGRlZmF1bHQgaXMgTm9uZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19nZGJtLmdkYm0uc2V0ZGVmYXVsdAorCisgICAga2V5OiBvYmplY3QKKyAgICBkZWZhdWx0OiBvYmplY3QgPSBOb25lCisgICAgLworCitHZXQgdmFsdWUgZm9yIGtleSwgb3Igc2V0IGl0IHRvIGRlZmF1bHQgYW5kIHJldHVybiBkZWZhdWx0IGlmIG5vdCBwcmVzZW50LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZGJtX3NldGRlZmF1bHQoZGJtb2JqZWN0ICpkcCwgUHlPYmplY3QgKmFyZ3MpCitfZ2RibV9nZGJtX3NldGRlZmF1bHRfaW1wbChkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ODc2MGVlNTIwMzI5MDEyIGlucHV0PTBkYjQ2YjY5ZTk2ODAxNzFdKi8KIHsKLSAgICBQeU9iamVjdCAqdiwgKnJlczsKLSAgICBQeU9iamVjdCAqZGVmID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqcmVzOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic2V0ZGVmYXVsdCIsIDEsIDIsICZ2LCAmZGVmKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzID0gZGJtX3N1YnNjcmlwdChkcCwgdik7CisgICAgcmVzID0gZGJtX3N1YnNjcmlwdChzZWxmLCBrZXkpOwogICAgIGlmIChyZXMgPT0gTlVMTCAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBpZiAoZGJtX2Fzc19zdWIoZHAsIHYsIGRlZikgPCAwKQorICAgICAgICBpZiAoZGJtX2Fzc19zdWIoc2VsZiwga2V5LCBkZWZhdWx0X3ZhbHVlKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmV0dXJuIGRibV9zdWJzY3JpcHQoZHAsIHYpOworICAgICAgICByZXR1cm4gZGJtX3N1YnNjcmlwdChzZWxmLCBrZXkpOwogICAgIH0KICAgICByZXR1cm4gcmVzOwogfQpAQCAtMjI3LDQzICsyNDIsNDkgQEAKICAgICAob2Jqb2JqYXJncHJvYylkYm1fYXNzX3N1YiwgICAgICAgICAvKm1wX2Fzc19zdWJzY3JpcHQqLwogfTsKIAotUHlEb2NfU1RSVkFSKGRibV9jbG9zZV9fZG9jX18sCi0iY2xvc2UoKSAtPiBOb25lXG5cCi1DbG9zZXMgdGhlIGRhdGFiYXNlLiIpOworLypbY2xpbmljIGlucHV0XQorX2dkYm0uZ2RibS5jbG9zZQorCitDbG9zZSB0aGUgZGF0YWJhc2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kYm1fY2xvc2UoZGJtb2JqZWN0ICpkcCwgUHlPYmplY3QgKnVudXNlZCkKK19nZGJtX2dkYm1fY2xvc2VfaW1wbChkYm1vYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjM1MTJhNTk0NTk4YjU2MyBpbnB1dD0wYTIwMzQ0NzM3OWI0NWZkXSovCiB7Ci0gICAgaWYgKGRwLT5kaV9kYm0pCi0gICAgICAgIGdkYm1fY2xvc2UoZHAtPmRpX2RibSk7Ci0gICAgZHAtPmRpX2RibSA9IE5VTEw7CisgICAgaWYgKHNlbGYtPmRpX2RibSkKKyAgICAgICAgZ2RibV9jbG9zZShzZWxmLT5kaV9kYm0pOworICAgIHNlbGYtPmRpX2RibSA9IE5VTEw7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQogCiAvKiBYWFggU2hvdWxkIHJldHVybiBhIHNldCBvciBhIHNldCB2aWV3ICovCi1QeURvY19TVFJWQVIoZGJtX2tleXNfX2RvY19fLAotImtleXMoKSAtPiBsaXN0X29mX2tleXNcblwKLUdldCBhIGxpc3Qgb2YgYWxsIGtleXMgaW4gdGhlIGRhdGFiYXNlLiIpOworLypbY2xpbmljIGlucHV0XQorX2dkYm0uZ2RibS5rZXlzCisKK0dldCBhIGxpc3Qgb2YgYWxsIGtleXMgaW4gdGhlIGRhdGFiYXNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZGJtX2tleXMoZGJtb2JqZWN0ICpkcCwgUHlPYmplY3QgKnVudXNlZCkKK19nZGJtX2dkYm1fa2V5c19pbXBsKGRibW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYjRiMTc3NmMzNjQ1ZGNjIGlucHV0PTE4MzJlZTBhMzEzMmNmYWZdKi8KIHsKICAgICBQeU9iamVjdCAqdiwgKml0ZW07CiAgICAgZGF0dW0ga2V5LCBuZXh0a2V5OwogICAgIGludCBlcnI7CiAKLSAgICBpZiAoZHAgPT0gTlVMTCB8fCAhaXNfZGJtb2JqZWN0KGRwKSkgeworICAgIGlmIChzZWxmID09IE5VTEwgfHwgIWlzX2RibW9iamVjdChzZWxmKSkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGNoZWNrX2RibW9iamVjdF9vcGVuKGRwKTsKKyAgICBjaGVja19kYm1vYmplY3Rfb3BlbihzZWxmKTsKIAogICAgIHYgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAga2V5ID0gZ2RibV9maXJzdGtleShkcC0+ZGlfZGJtKTsKKyAgICBrZXkgPSBnZGJtX2ZpcnN0a2V5KHNlbGYtPmRpX2RibSk7CiAgICAgd2hpbGUgKGtleS5kcHRyKSB7CiAgICAgICAgIGl0ZW0gPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGtleS5kcHRyLCBrZXkuZHNpemUpOwogICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CkBAIC0yNzgsNyArMjk5LDcgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIG5leHRrZXkgPSBnZGJtX25leHRrZXkoZHAtPmRpX2RibSwga2V5KTsKKyAgICAgICAgbmV4dGtleSA9IGdkYm1fbmV4dGtleShzZWxmLT5kaV9kYm0sIGtleSk7CiAgICAgICAgIGZyZWUoa2V5LmRwdHIpOwogICAgICAgICBrZXkgPSBuZXh0a2V5OwogICAgIH0KQEAgLTMyOSwyMSArMzUwLDI1IEBACiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2lucGxhY2VfcmVwZWF0ICovCiB9OwogCi1QeURvY19TVFJWQVIoZGJtX2ZpcnN0a2V5X19kb2NfXywKLSJmaXJzdGtleSgpIC0+IGtleVxuXAotSXQncyBwb3NzaWJsZSB0byBsb29wIG92ZXIgZXZlcnkga2V5IGluIHRoZSBkYXRhYmFzZSB1c2luZyB0aGlzIG1ldGhvZFxuXAotYW5kIHRoZSBuZXh0a2V5KCkgbWV0aG9kLiBUaGUgdHJhdmVyc2FsIGlzIG9yZGVyZWQgYnkgR0RCTSdzIGludGVybmFsXG5cCi1oYXNoIHZhbHVlcywgYW5kIHdvbid0IGJlIHNvcnRlZCBieSB0aGUga2V5IHZhbHVlcy4gVGhpcyBtZXRob2RcblwKLXJldHVybnMgdGhlIHN0YXJ0aW5nIGtleS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19nZGJtLmdkYm0uZmlyc3RrZXkKKworUmV0dXJuIHRoZSBzdGFydGluZyBrZXkgZm9yIHRoZSB0cmF2ZXJzYWwuCisKK0l0J3MgcG9zc2libGUgdG8gbG9vcCBvdmVyIGV2ZXJ5IGtleSBpbiB0aGUgZGF0YWJhc2UgdXNpbmcgdGhpcyBtZXRob2QKK2FuZCB0aGUgbmV4dGtleSgpIG1ldGhvZC4gIFRoZSB0cmF2ZXJzYWwgaXMgb3JkZXJlZCBieSBHREJNJ3MgaW50ZXJuYWwKK2hhc2ggdmFsdWVzLCBhbmQgd29uJ3QgYmUgc29ydGVkIGJ5IHRoZSBrZXkgdmFsdWVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZGJtX2ZpcnN0a2V5KGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICp1bnVzZWQpCitfZ2RibV9nZGJtX2ZpcnN0a2V5X2ltcGwoZGJtb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlmZjg1NjI4ZDg0YjY1ZDIgaW5wdXQ9MGRiZDZhMzM1ZDY5YmJhMF0qLwogewogICAgIFB5T2JqZWN0ICp2OwogICAgIGRhdHVtIGtleTsKIAotICAgIGNoZWNrX2RibW9iamVjdF9vcGVuKGRwKTsKLSAgICBrZXkgPSBnZGJtX2ZpcnN0a2V5KGRwLT5kaV9kYm0pOworICAgIGNoZWNrX2RibW9iamVjdF9vcGVuKHNlbGYpOworICAgIGtleSA9IGdkYm1fZmlyc3RrZXkoc2VsZi0+ZGlfZGJtKTsKICAgICBpZiAoa2V5LmRwdHIpIHsKICAgICAgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoa2V5LmRwdHIsIGtleS5kc2l6ZSk7CiAgICAgICAgIGZyZWUoa2V5LmRwdHIpOwpAQCAtMzU1LDI3ICszODAsMzUgQEAKICAgICB9CiB9CiAKLVB5RG9jX1NUUlZBUihkYm1fbmV4dGtleV9fZG9jX18sCi0ibmV4dGtleShrZXkpIC0+IG5leHRfa2V5XG5cCi1SZXR1cm5zIHRoZSBrZXkgdGhhdCBmb2xsb3dzIGtleSBpbiB0aGUgdHJhdmVyc2FsLlxuXAotVGhlIGZvbGxvd2luZyBjb2RlIHByaW50cyBldmVyeSBrZXkgaW4gdGhlIGRhdGFiYXNlIGRiLCB3aXRob3V0IGhhdmluZ1xuXAotdG8gY3JlYXRlIGEgbGlzdCBpbiBtZW1vcnkgdGhhdCBjb250YWlucyB0aGVtIGFsbDpcblwKLVxuXAotICAgICAgayA9IGRiLmZpcnN0a2V5KClcblwKLSAgICAgIHdoaWxlIGsgIT0gTm9uZTpcblwKLSAgICAgICAgICBwcmludCBrXG5cCi0gICAgICAgICAgayA9IGRiLm5leHRrZXkoaykiKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19nZGJtLmdkYm0ubmV4dGtleQorCisgICAga2V5OiBzdHIoYWNjZXB0PXtzdHIsIHJvYnVmZmVyfSwgemVyb2VzPVRydWUpCisgICAgLworCitSZXR1cm5zIHRoZSBrZXkgdGhhdCBmb2xsb3dzIGtleSBpbiB0aGUgdHJhdmVyc2FsLgorCitUaGUgZm9sbG93aW5nIGNvZGUgcHJpbnRzIGV2ZXJ5IGtleSBpbiB0aGUgZGF0YWJhc2UgZGIsIHdpdGhvdXQgaGF2aW5nCit0byBjcmVhdGUgYSBsaXN0IGluIG1lbW9yeSB0aGF0IGNvbnRhaW5zIHRoZW0gYWxsOgorCisgICAgICBrID0gZGIuZmlyc3RrZXkoKQorICAgICAgd2hpbGUgayAhPSBOb25lOgorICAgICAgICAgIHByaW50KGspCisgICAgICAgICAgayA9IGRiLm5leHRrZXkoaykKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRibV9uZXh0a2V5KGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICphcmdzKQorX2dkYm1fZ2RibV9uZXh0a2V5X2ltcGwoZGJtb2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV9jbGVhbl90IGtleV9sZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTkyYWI4OTJkZTZlYjJmNiBpbnB1dD0xZjE2MDY5NDM2MTRlMzZmXSovCiB7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgZGF0dW0ga2V5LCBuZXh0a2V5OworICAgIGRhdHVtIGRibV9rZXksIG5leHRrZXk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMjOm5leHRrZXkiLCAma2V5LmRwdHIsICZrZXkuZHNpemUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjaGVja19kYm1vYmplY3Rfb3BlbihkcCk7Ci0gICAgbmV4dGtleSA9IGdkYm1fbmV4dGtleShkcC0+ZGlfZGJtLCBrZXkpOworICAgIGRibV9rZXkuZHB0ciA9IChjaGFyICopa2V5OworICAgIGRibV9rZXkuZHNpemUgPSBrZXlfbGVuZ3RoOworICAgIGNoZWNrX2RibW9iamVjdF9vcGVuKHNlbGYpOworICAgIG5leHRrZXkgPSBnZGJtX25leHRrZXkoc2VsZi0+ZGlfZGJtLCBkYm1fa2V5KTsKICAgICBpZiAobmV4dGtleS5kcHRyKSB7CiAgICAgICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKG5leHRrZXkuZHB0ciwgbmV4dGtleS5kc2l6ZSk7CiAgICAgICAgIGZyZWUobmV4dGtleS5kcHRyKTsKQEAgLTM4NywyMCArNDIwLDI1IEBACiAgICAgfQogfQogCi1QeURvY19TVFJWQVIoZGJtX3Jlb3JnYW5pemVfX2RvY19fLAotInJlb3JnYW5pemUoKSAtPiBOb25lXG5cCi1JZiB5b3UgaGF2ZSBjYXJyaWVkIG91dCBhIGxvdCBvZiBkZWxldGlvbnMgYW5kIHdvdWxkIGxpa2UgdG8gc2hyaW5rXG5cCi10aGUgc3BhY2UgdXNlZCBieSB0aGUgR0RCTSBmaWxlLCB0aGlzIHJvdXRpbmUgd2lsbCByZW9yZ2FuaXplIHRoZVxuXAotZGF0YWJhc2UuIEdEQk0gd2lsbCBub3Qgc2hvcnRlbiB0aGUgbGVuZ3RoIG9mIGEgZGF0YWJhc2UgZmlsZSBleGNlcHRcblwKLWJ5IHVzaW5nIHRoaXMgcmVvcmdhbml6YXRpb247IG90aGVyd2lzZSwgZGVsZXRlZCBmaWxlIHNwYWNlIHdpbGwgYmVcblwKLWtlcHQgYW5kIHJldXNlZCBhcyBuZXcgKGtleSx2YWx1ZSkgcGFpcnMgYXJlIGFkZGVkLiIpOworLypbY2xpbmljIGlucHV0XQorX2dkYm0uZ2RibS5yZW9yZ2FuaXplCisKK1Jlb3JnYW5pemUgdGhlIGRhdGFiYXNlLgorCitJZiB5b3UgaGF2ZSBjYXJyaWVkIG91dCBhIGxvdCBvZiBkZWxldGlvbnMgYW5kIHdvdWxkIGxpa2UgdG8gc2hyaW5rCit0aGUgc3BhY2UgdXNlZCBieSB0aGUgR0RCTSBmaWxlLCB0aGlzIHJvdXRpbmUgd2lsbCByZW9yZ2FuaXplIHRoZQorZGF0YWJhc2UuICBHREJNIHdpbGwgbm90IHNob3J0ZW4gdGhlIGxlbmd0aCBvZiBhIGRhdGFiYXNlIGZpbGUgZXhjZXB0CitieSB1c2luZyB0aGlzIHJlb3JnYW5pemF0aW9uOyBvdGhlcndpc2UsIGRlbGV0ZWQgZmlsZSBzcGFjZSB3aWxsIGJlCitrZXB0IGFuZCByZXVzZWQgYXMgbmV3IChrZXksdmFsdWUpIHBhaXJzIGFyZSBhZGRlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRibV9yZW9yZ2FuaXplKGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICp1bnVzZWQpCitfZ2RibV9nZGJtX3Jlb3JnYW5pemVfaW1wbChkYm1vYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzhkOTYyNGRmOTJlOTYxZCBpbnB1dD1mNmJlYTg1YmNmZDQwZGQyXSovCiB7Ci0gICAgY2hlY2tfZGJtb2JqZWN0X29wZW4oZHApOworICAgIGNoZWNrX2RibW9iamVjdF9vcGVuKHNlbGYpOwogICAgIGVycm5vID0gMDsKLSAgICBpZiAoZ2RibV9yZW9yZ2FuaXplKGRwLT5kaV9kYm0pIDwgMCkgeworICAgIGlmIChnZGJtX3Jlb3JnYW5pemUoc2VsZi0+ZGlfZGJtKSA8IDApIHsKICAgICAgICAgaWYgKGVycm5vICE9IDApCiAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oRGJtRXJyb3IpOwogICAgICAgICBlbHNlCkBAIC00MTEsMTYgKzQ0OSwyMSBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi1QeURvY19TVFJWQVIoZGJtX3N5bmNfX2RvY19fLAotInN5bmMoKSAtPiBOb25lXG5cCi1XaGVuIHRoZSBkYXRhYmFzZSBoYXMgYmVlbiBvcGVuZWQgaW4gZmFzdCBtb2RlLCB0aGlzIG1ldGhvZCBmb3JjZXNcblwKLWFueSB1bndyaXR0ZW4gZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZSBkaXNrLiIpOworLypbY2xpbmljIGlucHV0XQorX2dkYm0uZ2RibS5zeW5jCisKK0ZsdXNoIHRoZSBkYXRhYmFzZSB0byB0aGUgZGlzayBmaWxlLgorCitXaGVuIHRoZSBkYXRhYmFzZSBoYXMgYmVlbiBvcGVuZWQgaW4gZmFzdCBtb2RlLCB0aGlzIG1ldGhvZCBmb3JjZXMKK2FueSB1bndyaXR0ZW4gZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZSBkaXNrLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZGJtX3N5bmMoZGJtb2JqZWN0ICpkcCwgUHlPYmplY3QgKnVudXNlZCkKK19nZGJtX2dkYm1fc3luY19pbXBsKGRibW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ODhiMTVmNDcwMjhmMTI1IGlucHV0PTJhNDdkMmM5ZTE1M2FiOGFdKi8KIHsKLSAgICBjaGVja19kYm1vYmplY3Rfb3BlbihkcCk7Ci0gICAgZ2RibV9zeW5jKGRwLT5kaV9kYm0pOworICAgIGNoZWNrX2RibW9iamVjdF9vcGVuKHNlbGYpOworICAgIGdkYm1fc3luYyhzZWxmLT5kaV9kYm0pOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KQEAgLTQ0MCwxNCArNDgzLDE1IEBACiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBkYm1fbWV0aG9kc1tdID0gewotICAgIHsiY2xvc2UiLCAgICAgKFB5Q0Z1bmN0aW9uKWRibV9jbG9zZSwgICBNRVRIX05PQVJHUywgZGJtX2Nsb3NlX19kb2NfX30sCi0gICAgeyJrZXlzIiwgICAgICAoUHlDRnVuY3Rpb24pZGJtX2tleXMsICAgIE1FVEhfTk9BUkdTLCBkYm1fa2V5c19fZG9jX199LAotICAgIHsiZmlyc3RrZXkiLCAgKFB5Q0Z1bmN0aW9uKWRibV9maXJzdGtleSxNRVRIX05PQVJHUywgZGJtX2ZpcnN0a2V5X19kb2NfX30sCi0gICAgeyJuZXh0a2V5IiwgICAoUHlDRnVuY3Rpb24pZGJtX25leHRrZXksIE1FVEhfVkFSQVJHUywgZGJtX25leHRrZXlfX2RvY19ffSwKLSAgICB7InJlb3JnYW5pemUiLChQeUNGdW5jdGlvbilkYm1fcmVvcmdhbml6ZSxNRVRIX05PQVJHUywgZGJtX3Jlb3JnYW5pemVfX2RvY19ffSwKLSAgICB7InN5bmMiLCAgICAgIChQeUNGdW5jdGlvbilkYm1fc3luYywgICAgTUVUSF9OT0FSR1MsIGRibV9zeW5jX19kb2NfX30sCi0gICAgeyJnZXQiLCAgICAgICAoUHlDRnVuY3Rpb24pZGJtX2dldCwgICAgIE1FVEhfVkFSQVJHUywgZGJtX2dldF9fZG9jX199LAotICAgIHsic2V0ZGVmYXVsdCIsKFB5Q0Z1bmN0aW9uKWRibV9zZXRkZWZhdWx0LE1FVEhfVkFSQVJHUywgZGJtX3NldGRlZmF1bHRfX2RvY19ffSwKKyAgICBfR0RCTV9HREJNX0NMT1NFX01FVEhPRERFRgorICAgIF9HREJNX0dEQk1fS0VZU19NRVRIT0RERUYKKyAgICBfR0RCTV9HREJNX0ZJUlNUS0VZX01FVEhPRERFRgorICAgIF9HREJNX0dEQk1fTkVYVEtFWV9NRVRIT0RERUYKKyAgICBfR0RCTV9HREJNX1JFT1JHQU5JWkVfTUVUSE9EREVGCisgICAgX0dEQk1fR0RCTV9TWU5DX01FVEhPRERFRgorICAgIF9HREJNX0dEQk1fR0VUX01FVEhPRERFRgorICAgIF9HREJNX0dEQk1fR0VUX01FVEhPRERFRgorICAgIF9HREJNX0dEQk1fU0VUREVGQVVMVF9NRVRIT0RERUYKICAgICB7Il9fZW50ZXJfXyIsIGRibV9fZW50ZXJfXywgTUVUSF9OT0FSR1MsIE5VTEx9LAogICAgIHsiX19leGl0X18iLCAgZGJtX19leGl0X18sIE1FVEhfVkFSQVJHUywgTlVMTH0sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KQEAgLTQ4Niw0MCArNTMwLDQ0IEBACiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLVB5RG9jX1NUUlZBUihkYm1vcGVuX19kb2NfXywKLSJvcGVuKGZpbGVuYW1lLCBbZmxhZ3MsIFttb2RlXV0pICAtPiBkYm1fb2JqZWN0XG5cCi1PcGVuIGEgZGJtIGRhdGFiYXNlIGFuZCByZXR1cm4gYSBkYm0gb2JqZWN0LiBUaGUgZmlsZW5hbWUgYXJndW1lbnQgaXNcblwKLXRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBmaWxlLlxuXAotXG5cCi1UaGUgb3B0aW9uYWwgZmxhZ3MgYXJndW1lbnQgY2FuIGJlICdyJyAodG8gb3BlbiBhbiBleGlzdGluZyBkYXRhYmFzZVxuXAotZm9yIHJlYWRpbmcgb25seSAtLSBkZWZhdWx0KSwgJ3cnICh0byBvcGVuIGFuIGV4aXN0aW5nIGRhdGFiYXNlIGZvclxuXAotcmVhZGluZyBhbmQgd3JpdGluZyksICdjJyAod2hpY2ggY3JlYXRlcyB0aGUgZGF0YWJhc2UgaWYgaXQgZG9lc24ndFxuXAotZXhpc3QpLCBvciAnbicgKHdoaWNoIGFsd2F5cyBjcmVhdGVzIGEgbmV3IGVtcHR5IGRhdGFiYXNlKS5cblwKLVxuXAotU29tZSB2ZXJzaW9ucyBvZiBnZGJtIHN1cHBvcnQgYWRkaXRpb25hbCBmbGFncyB3aGljaCBtdXN0IGJlXG5cCi1hcHBlbmRlZCB0byBvbmUgb2YgdGhlIGZsYWdzIGRlc2NyaWJlZCBhYm92ZS4gVGhlIG1vZHVsZSBjb25zdGFudFxuXAotJ29wZW5fZmxhZ3MnIGlzIGEgc3RyaW5nIG9mIHZhbGlkIGFkZGl0aW9uYWwgZmxhZ3MuIFRoZSAnZicgZmxhZ1xuXAotb3BlbnMgdGhlIGRhdGFiYXNlIGluIGZhc3QgbW9kZTsgYWx0ZXJlZCBkYXRhIHdpbGwgbm90IGF1dG9tYXRpY2FsbHlcblwKLWJlIHdyaXR0ZW4gdG8gdGhlIGRpc2sgYWZ0ZXIgZXZlcnkgY2hhbmdlLiBUaGlzIHJlc3VsdHMgaW4gZmFzdGVyXG5cCi13cml0ZXMgdG8gdGhlIGRhdGFiYXNlLCBidXQgbWF5IHJlc3VsdCBpbiBhbiBpbmNvbnNpc3RlbnQgZGF0YWJhc2VcblwKLWlmIHRoZSBwcm9ncmFtIGNyYXNoZXMgd2hpbGUgdGhlIGRhdGFiYXNlIGlzIHN0aWxsIG9wZW4uIFVzZSB0aGVcblwKLXN5bmMoKSBtZXRob2QgdG8gZm9yY2UgYW55IHVud3JpdHRlbiBkYXRhIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIGRpc2suXG5cCi1UaGUgJ3MnIGZsYWcgY2F1c2VzIGFsbCBkYXRhYmFzZSBvcGVyYXRpb25zIHRvIGJlIHN5bmNocm9uaXplZCB0b1xuXAotZGlzay4gVGhlICd1JyBmbGFnIGRpc2FibGVzIGxvY2tpbmcgb2YgdGhlIGRhdGFiYXNlIGZpbGUuXG5cCi1cblwKLVRoZSBvcHRpb25hbCBtb2RlIGFyZ3VtZW50IGlzIHRoZSBVbml4IG1vZGUgb2YgdGhlIGZpbGUsIHVzZWQgb25seVxuXAotd2hlbiB0aGUgZGF0YWJhc2UgaGFzIHRvIGJlIGNyZWF0ZWQuIEl0IGRlZmF1bHRzIHRvIG9jdGFsIDA2NjYuICIpOworLypbY2xpbmljIGlucHV0XQorX2dkYm0ub3BlbiBhcyBkYm1vcGVuCisgICAgZmlsZW5hbWUgYXMgbmFtZTogc3RyCisgICAgZmxhZ3M6IHN0cj0iciIKKyAgICBtb2RlOiBpbnQocHlfZGVmYXVsdD0iMG82NjYiKSA9IDBvNjY2CisgICAgLworCitPcGVuIGEgZGJtIGRhdGFiYXNlIGFuZCByZXR1cm4gYSBkYm0gb2JqZWN0LgorCitUaGUgZmlsZW5hbWUgYXJndW1lbnQgaXMgdGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIGZpbGUuCisKK1RoZSBvcHRpb25hbCBmbGFncyBhcmd1bWVudCBjYW4gYmUgJ3InICh0byBvcGVuIGFuIGV4aXN0aW5nIGRhdGFiYXNlCitmb3IgcmVhZGluZyBvbmx5IC0tIGRlZmF1bHQpLCAndycgKHRvIG9wZW4gYW4gZXhpc3RpbmcgZGF0YWJhc2UgZm9yCityZWFkaW5nIGFuZCB3cml0aW5nKSwgJ2MnICh3aGljaCBjcmVhdGVzIHRoZSBkYXRhYmFzZSBpZiBpdCBkb2Vzbid0CitleGlzdCksIG9yICduJyAod2hpY2ggYWx3YXlzIGNyZWF0ZXMgYSBuZXcgZW1wdHkgZGF0YWJhc2UpLgorCitTb21lIHZlcnNpb25zIG9mIGdkYm0gc3VwcG9ydCBhZGRpdGlvbmFsIGZsYWdzIHdoaWNoIG11c3QgYmUKK2FwcGVuZGVkIHRvIG9uZSBvZiB0aGUgZmxhZ3MgZGVzY3JpYmVkIGFib3ZlLiAgVGhlIG1vZHVsZSBjb25zdGFudAorJ29wZW5fZmxhZ3MnIGlzIGEgc3RyaW5nIG9mIHZhbGlkIGFkZGl0aW9uYWwgZmxhZ3MuICBUaGUgJ2YnIGZsYWcKK29wZW5zIHRoZSBkYXRhYmFzZSBpbiBmYXN0IG1vZGU7IGFsdGVyZWQgZGF0YSB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5CitiZSB3cml0dGVuIHRvIHRoZSBkaXNrIGFmdGVyIGV2ZXJ5IGNoYW5nZS4gIFRoaXMgcmVzdWx0cyBpbiBmYXN0ZXIKK3dyaXRlcyB0byB0aGUgZGF0YWJhc2UsIGJ1dCBtYXkgcmVzdWx0IGluIGFuIGluY29uc2lzdGVudCBkYXRhYmFzZQoraWYgdGhlIHByb2dyYW0gY3Jhc2hlcyB3aGlsZSB0aGUgZGF0YWJhc2UgaXMgc3RpbGwgb3Blbi4gIFVzZSB0aGUKK3N5bmMoKSBtZXRob2QgdG8gZm9yY2UgYW55IHVud3JpdHRlbiBkYXRhIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIGRpc2suCitUaGUgJ3MnIGZsYWcgY2F1c2VzIGFsbCBkYXRhYmFzZSBvcGVyYXRpb25zIHRvIGJlIHN5bmNocm9uaXplZCB0bworZGlzay4gIFRoZSAndScgZmxhZyBkaXNhYmxlcyBsb2NraW5nIG9mIHRoZSBkYXRhYmFzZSBmaWxlLgorCitUaGUgb3B0aW9uYWwgbW9kZSBhcmd1bWVudCBpcyB0aGUgVW5peCBtb2RlIG9mIHRoZSBmaWxlLCB1c2VkIG9ubHkKK3doZW4gdGhlIGRhdGFiYXNlIGhhcyB0byBiZSBjcmVhdGVkLiAgSXQgZGVmYXVsdHMgdG8gb2N0YWwgMG82NjYuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kYm1vcGVuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2RibW9wZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmbGFncywKKyAgICAgICAgICAgICBpbnQgbW9kZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNjViMzE0MTVjMDNjY2Q0IGlucHV0PTU1NTYzY2Q2MGU1MTk4NGFdKi8KIHsKLSAgICBjaGFyICpuYW1lOwotICAgIGNoYXIgKmZsYWdzID0gInIiOwogICAgIGludCBpZmxhZ3M7Ci0gICAgaW50IG1vZGUgPSAwNjY2OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzfHNpOm9wZW4iLCAmbmFtZSwgJmZsYWdzLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHN3aXRjaCAoZmxhZ3NbMF0pIHsKICAgICBjYXNlICdyJzoKICAgICAgICAgaWZsYWdzID0gR0RCTV9SRUFERVI7CkBAIC01ODAsNyArNjI4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBkYm1tb2R1bGVfbWV0aG9kc1tdID0gewotICAgIHsgIm9wZW4iLCAoUHlDRnVuY3Rpb24pZGJtb3BlbiwgTUVUSF9WQVJBUkdTLCBkYm1vcGVuX19kb2NfX30sCisgICAgREJNT1BFTl9NRVRIT0RERUYKICAgICB7IDAsIDAgfSwKIH07CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMgYi9Nb2R1bGVzL19oYXNob3BlbnNzbC5jCmluZGV4IDViMGE3YmUuLjQ0NzY1YWMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMKKysrIGIvTW9kdWxlcy9faGFzaG9wZW5zc2wuYwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgImhhc2hsaWIuaCIKKyNpbmNsdWRlICJweXN0cmhleC5oIgogCiAKIC8qIEVWUCBpcyB0aGUgcHJlZmVycmVkIGludGVyZmFjZSB0byBoYXNoaW5nIGluIE9wZW5TU0wgKi8KQEAgLTMxLDEwICszMiw2IEBACiAjZGVmaW5lIEhBU0hfT0JKX0NPTlNUUlVDVE9SIDAKICNlbmRpZgogCi0vKiBNaW5pbXVtIE9wZW5TU0wgdmVyc2lvbiBuZWVkZWQgdG8gc3VwcG9ydCBzaGEyMjQgYW5kIGhpZ2hlci4gKi8KLSNpZiBkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIpICYmIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MDA5MDgwMDApCi0jZGVmaW5lIF9PUEVOU1NMX1NVUFBPUlRTX1NIQTIKLSNlbmRpZgogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtNTYsMTIgKzUzLDEwIEBACiAKIERFRklORV9DT05TVFNfRk9SX05FVyhtZDUpCiBERUZJTkVfQ09OU1RTX0ZPUl9ORVcoc2hhMSkKLSNpZmRlZiBfT1BFTlNTTF9TVVBQT1JUU19TSEEyCiBERUZJTkVfQ09OU1RTX0ZPUl9ORVcoc2hhMjI0KQogREVGSU5FX0NPTlNUU19GT1JfTkVXKHNoYTI1NikKIERFRklORV9DT05TVFNfRk9SX05FVyhzaGEzODQpCiBERUZJTkVfQ09OU1RTX0ZPUl9ORVcoc2hhNTEyKQotI2VuZGlmCiAKIAogc3RhdGljIEVWUG9iamVjdCAqCkBAIC0xNjMsOSArMTU4LDcgQEAKIHsKICAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtFVlBfTUFYX01EX1NJWkVdOwogICAgIEVWUF9NRF9DVFggdGVtcF9jdHg7Ci0gICAgUHlPYmplY3QgKnJldHZhbDsKLSAgICBjaGFyICpoZXhfZGlnZXN0OwotICAgIHVuc2lnbmVkIGludCBpLCBqLCBkaWdlc3Rfc2l6ZTsKKyAgICB1bnNpZ25lZCBpbnQgZGlnZXN0X3NpemU7CiAKICAgICAvKiBHZXQgdGhlIHJhdyAoYmluYXJ5KSBkaWdlc3QgdmFsdWUgKi8KICAgICBsb2NrZWRfRVZQX01EX0NUWF9jb3B5KCZ0ZW1wX2N0eCwgc2VsZik7CkBAIC0xNzQsMjIgKzE2Nyw3IEBACiAKICAgICBFVlBfTURfQ1RYX2NsZWFudXAoJnRlbXBfY3R4KTsKIAotICAgIC8qIEFsbG9jYXRlIGEgbmV3IGJ1ZmZlciAqLwotICAgIGhleF9kaWdlc3QgPSBQeU1lbV9NYWxsb2MoZGlnZXN0X3NpemUgKiAyICsgMSk7Ci0gICAgaWYgKCFoZXhfZGlnZXN0KQotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLQotICAgIC8qIE1ha2UgaGV4IHZlcnNpb24gb2YgdGhlIGRpZ2VzdCAqLwotICAgIGZvcihpPWo9MDsgaTxkaWdlc3Rfc2l6ZTsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKLSAgICAgICAgYyA9IChkaWdlc3RbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKLSAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107Ci0gICAgfQotICAgIHJldHZhbCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShoZXhfZGlnZXN0LCBkaWdlc3Rfc2l6ZSAqIDIpOwotICAgIFB5TWVtX0ZyZWUoaGV4X2RpZ2VzdCk7Ci0gICAgcmV0dXJuIHJldHZhbDsKKyAgICByZXR1cm4gX1B5X3N0cmhleCgoY29uc3QgY2hhciAqKWRpZ2VzdCwgZGlnZXN0X3NpemUpOwogfQogCiBQeURvY19TVFJWQVIoRVZQX3VwZGF0ZV9fZG9jX18sCkBAIC03OTgsMTIgKzc3NiwxMCBAQAogCiBHRU5fQ09OU1RSVUNUT1IobWQ1KQogR0VOX0NPTlNUUlVDVE9SKHNoYTEpCi0jaWZkZWYgX09QRU5TU0xfU1VQUE9SVFNfU0hBMgogR0VOX0NPTlNUUlVDVE9SKHNoYTIyNCkKIEdFTl9DT05TVFJVQ1RPUihzaGEyNTYpCiBHRU5fQ09OU1RSVUNUT1Ioc2hhMzg0KQogR0VOX0NPTlNUUlVDVE9SKHNoYTUxMikKLSNlbmRpZgogCiAvKiBMaXN0IG9mIGZ1bmN0aW9ucyBleHBvcnRlZCBieSB0aGlzIG1vZHVsZSAqLwogCkBAIC04MTUsMTIgKzc5MSwxMCBAQAogI2VuZGlmCiAgICAgQ09OU1RSVUNUT1JfTUVUSF9ERUYobWQ1KSwKICAgICBDT05TVFJVQ1RPUl9NRVRIX0RFRihzaGExKSwKLSNpZmRlZiBfT1BFTlNTTF9TVVBQT1JUU19TSEEyCiAgICAgQ09OU1RSVUNUT1JfTUVUSF9ERUYoc2hhMjI0KSwKICAgICBDT05TVFJVQ1RPUl9NRVRIX0RFRihzaGEyNTYpLAogICAgIENPTlNUUlVDVE9SX01FVEhfREVGKHNoYTM4NCksCiAgICAgQ09OU1RSVUNUT1JfTUVUSF9ERUYoc2hhNTEyKSwKLSNlbmRpZgogICAgIHtOVUxMLCAgICAgIE5VTEx9ICAgICAgICAgICAgLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTg3NywxMSArODUxLDkgQEAKICAgICAvKiB0aGVzZSBjb25zdGFudHMgYXJlIHVzZWQgYnkgdGhlIGNvbnZlbmllbmNlIGNvbnN0cnVjdG9ycyAqLwogICAgIElOSVRfQ09OU1RSVUNUT1JfQ09OU1RBTlRTKG1kNSk7CiAgICAgSU5JVF9DT05TVFJVQ1RPUl9DT05TVEFOVFMoc2hhMSk7Ci0jaWZkZWYgX09QRU5TU0xfU1VQUE9SVFNfU0hBMgogICAgIElOSVRfQ09OU1RSVUNUT1JfQ09OU1RBTlRTKHNoYTIyNCk7CiAgICAgSU5JVF9DT05TVFJVQ1RPUl9DT05TVEFOVFMoc2hhMjU2KTsKICAgICBJTklUX0NPTlNUUlVDVE9SX0NPTlNUQU5UUyhzaGEzODQpOwogICAgIElOSVRfQ09OU1RSVUNUT1JfQ09OU1RBTlRTKHNoYTUxMik7Ci0jZW5kaWYKICAgICByZXR1cm4gbTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2hlYXBxbW9kdWxlLmMgYi9Nb2R1bGVzL19oZWFwcW1vZHVsZS5jCmluZGV4IDA0ODQ1ZjEuLmMzNDM4NjIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2hlYXBxbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9faGVhcHFtb2R1bGUuYwpAQCAtOSw5ICs5LDkgQEAKICNpbmNsdWRlICJQeXRob24uaCIKIAogc3RhdGljIGludAotX3NpZnRkb3duKFB5TGlzdE9iamVjdCAqaGVhcCwgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBwb3MpCitzaWZ0ZG93bihQeUxpc3RPYmplY3QgKmhlYXAsIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgcG9zKQogewotICAgIFB5T2JqZWN0ICpuZXdpdGVtLCAqcGFyZW50OworICAgIFB5T2JqZWN0ICpuZXdpdGVtLCAqcGFyZW50LCAqKmFycjsKICAgICBQeV9zc2l6ZV90IHBhcmVudHBvcywgc2l6ZTsKICAgICBpbnQgY21wOwogCkBAIC0yNCwxMiArMjQsMTMgQEAKIAogICAgIC8qIEZvbGxvdyB0aGUgcGF0aCB0byB0aGUgcm9vdCwgbW92aW5nIHBhcmVudHMgZG93biB1bnRpbCBmaW5kaW5nCiAgICAgICAgYSBwbGFjZSBuZXdpdGVtIGZpdHMuICovCi0gICAgbmV3aXRlbSA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCBwb3MpOworICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7CisgICAgbmV3aXRlbSA9IGFycltwb3NdOwogICAgIHdoaWxlIChwb3MgPiBzdGFydHBvcykgewogICAgICAgICBwYXJlbnRwb3MgPSAocG9zIC0gMSkgPj4gMTsKLSAgICAgICAgcGFyZW50ID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIHBhcmVudHBvcyk7CisgICAgICAgIHBhcmVudCA9IGFycltwYXJlbnRwb3NdOwogICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wobmV3aXRlbSwgcGFyZW50LCBQeV9MVCk7Ci0gICAgICAgIGlmIChjbXAgPT0gLTEpCisgICAgICAgIGlmIChjbXAgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBpZiAoc2l6ZSAhPSBQeUxpc3RfR0VUX1NJWkUoaGVhcCkpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCkBAIC0zOCwyMCArMzksMjEgQEAKICAgICAgICAgfQogICAgICAgICBpZiAoY21wID09IDApCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgcGFyZW50ID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIHBhcmVudHBvcyk7Ci0gICAgICAgIG5ld2l0ZW0gPSBQeUxpc3RfR0VUX0lURU0oaGVhcCwgcG9zKTsKLSAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGhlYXAsIHBhcmVudHBvcywgbmV3aXRlbSk7Ci0gICAgICAgIFB5TGlzdF9TRVRfSVRFTShoZWFwLCBwb3MsIHBhcmVudCk7CisgICAgICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7CisgICAgICAgIHBhcmVudCA9IGFycltwYXJlbnRwb3NdOworICAgICAgICBuZXdpdGVtID0gYXJyW3Bvc107CisgICAgICAgIGFycltwYXJlbnRwb3NdID0gbmV3aXRlbTsKKyAgICAgICAgYXJyW3Bvc10gPSBwYXJlbnQ7CiAgICAgICAgIHBvcyA9IHBhcmVudHBvczsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKLV9zaWZ0dXAoUHlMaXN0T2JqZWN0ICpoZWFwLCBQeV9zc2l6ZV90IHBvcykKK3NpZnR1cChQeUxpc3RPYmplY3QgKmhlYXAsIFB5X3NzaXplX3QgcG9zKQogewotICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIGVuZHBvcywgY2hpbGRwb3MsIHJpZ2h0cG9zLCBsaW1pdDsKLSAgICBQeU9iamVjdCAqdG1wMSwgKnRtcDI7CisgICAgUHlfc3NpemVfdCBzdGFydHBvcywgZW5kcG9zLCBjaGlsZHBvcywgbGltaXQ7CisgICAgUHlPYmplY3QgKnRtcDEsICp0bXAyLCAqKmFycjsKICAgICBpbnQgY21wOwogCiAgICAgYXNzZXJ0KFB5TGlzdF9DaGVjayhoZWFwKSk7CkBAIC02MywyMCArNjUsMTkgQEAKICAgICB9CiAKICAgICAvKiBCdWJibGUgdXAgdGhlIHNtYWxsZXIgY2hpbGQgdW50aWwgaGl0dGluZyBhIGxlYWYuICovCisgICAgYXJyID0gX1B5TGlzdF9JVEVNUyhoZWFwKTsKICAgICBsaW1pdCA9IGVuZHBvcyAvIDI7ICAgICAgICAgIC8qIHNtYWxsZXN0IHBvcyB0aGF0IGhhcyBubyBjaGlsZCAqLwogICAgIHdoaWxlIChwb3MgPCBsaW1pdCkgewogICAgICAgICAvKiBTZXQgY2hpbGRwb3MgdG8gaW5kZXggb2Ygc21hbGxlciBjaGlsZC4gICAqLwogICAgICAgICBjaGlsZHBvcyA9IDIqcG9zICsgMTsgICAgLyogbGVmdG1vc3QgY2hpbGQgcG9zaXRpb24gICovCi0gICAgICAgIHJpZ2h0cG9zID0gY2hpbGRwb3MgKyAxOwotICAgICAgICBpZiAocmlnaHRwb3MgPCBlbmRwb3MpIHsKKyAgICAgICAgaWYgKGNoaWxkcG9zICsgMSA8IGVuZHBvcykgewogICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKAotICAgICAgICAgICAgICAgIFB5TGlzdF9HRVRfSVRFTShoZWFwLCBjaGlsZHBvcyksCi0gICAgICAgICAgICAgICAgUHlMaXN0X0dFVF9JVEVNKGhlYXAsIHJpZ2h0cG9zKSwKKyAgICAgICAgICAgICAgICBhcnJbY2hpbGRwb3NdLAorICAgICAgICAgICAgICAgIGFycltjaGlsZHBvcyArIDFdLAogICAgICAgICAgICAgICAgIFB5X0xUKTsKLSAgICAgICAgICAgIGlmIChjbXAgPT0gLTEpCisgICAgICAgICAgICBpZiAoY21wIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBpZiAoY21wID09IDApCi0gICAgICAgICAgICAgICAgY2hpbGRwb3MgPSByaWdodHBvczsKKyAgICAgICAgICAgIGNoaWxkcG9zICs9ICgodW5zaWduZWQpY21wIF4gMSk7ICAgLyogaW5jcmVtZW50IHdoZW4gY21wPT0wICovCiAgICAgICAgICAgICBpZiAoZW5kcG9zICE9IFB5TGlzdF9HRVRfU0laRShoZWFwKSkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CkBAIC04NCwxNCArODUsMTUgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvKiBNb3ZlIHRoZSBzbWFsbGVyIGNoaWxkIHVwLiAqLwotICAgICAgICB0bXAxID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIGNoaWxkcG9zKTsKLSAgICAgICAgdG1wMiA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCBwb3MpOwotICAgICAgICBQeUxpc3RfU0VUX0lURU0oaGVhcCwgY2hpbGRwb3MsIHRtcDIpOwotICAgICAgICBQeUxpc3RfU0VUX0lURU0oaGVhcCwgcG9zLCB0bXAxKTsKKyAgICAgICAgYXJyID0gX1B5TGlzdF9JVEVNUyhoZWFwKTsKKyAgICAgICAgdG1wMSA9IGFycltjaGlsZHBvc107CisgICAgICAgIHRtcDIgPSBhcnJbcG9zXTsKKyAgICAgICAgYXJyW2NoaWxkcG9zXSA9IHRtcDI7CisgICAgICAgIGFycltwb3NdID0gdG1wMTsKICAgICAgICAgcG9zID0gY2hpbGRwb3M7CiAgICAgfQogICAgIC8qIEJ1YmJsZSBpdCB1cCB0byBpdHMgZmluYWwgcmVzdGluZyBwbGFjZSAoYnkgc2lmdGluZyBpdHMgcGFyZW50cyBkb3duKS4gKi8KLSAgICByZXR1cm4gX3NpZnRkb3duKGhlYXAsIHN0YXJ0cG9zLCBwb3MpOworICAgIHJldHVybiBzaWZ0ZG93bihoZWFwLCBzdGFydHBvcywgcG9zKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEwNywyMCArMTA5LDE5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChQeUxpc3RfQXBwZW5kKGhlYXAsIGl0ZW0pID09IC0xKQorICAgIGlmIChQeUxpc3RfQXBwZW5kKGhlYXAsIGl0ZW0pKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChfc2lmdGRvd24oKFB5TGlzdE9iamVjdCAqKWhlYXAsIDAsIFB5TGlzdF9HRVRfU0laRShoZWFwKS0xKSA9PSAtMSkKKyAgICBpZiAoc2lmdGRvd24oKFB5TGlzdE9iamVjdCAqKWhlYXAsIDAsIFB5TGlzdF9HRVRfU0laRShoZWFwKS0xKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeURvY19TVFJWQVIoaGVhcHB1c2hfZG9jLAogImhlYXBwdXNoKGhlYXAsIGl0ZW0pIC0+IE5vbmUuIFB1c2ggaXRlbSBvbnRvIGhlYXAsIG1haW50YWluaW5nIHRoZSBoZWFwIGludmFyaWFudC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWhlYXBwb3AoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpoZWFwKQoraGVhcHBvcF9pbnRlcm5hbChQeU9iamVjdCAqaGVhcCwgaW50IHNpZnR1cF9mdW5jKFB5TGlzdE9iamVjdCAqLCBQeV9zc2l6ZV90KSkKIHsKICAgICBQeU9iamVjdCAqbGFzdGVsdCwgKnJldHVybml0ZW07CiAgICAgUHlfc3NpemVfdCBuOwpAQCAtMTMwLDcgKzEzMSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIC8qICMgcmFpc2VzIGFwcHJvcHJpYXRlIEluZGV4RXJyb3IgaWYgaGVhcCBpcyBlbXB0eSAqLworICAgIC8qIHJhaXNlcyBJbmRleEVycm9yIGlmIHRoZSBoZWFwIGlzIGVtcHR5ICovCiAgICAgbiA9IFB5TGlzdF9HRVRfU0laRShoZWFwKTsKICAgICBpZiAobiA9PSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAiaW5kZXggb3V0IG9mIHJhbmdlIik7CkBAIC0xMzksNyArMTQwLDcgQEAKIAogICAgIGxhc3RlbHQgPSBQeUxpc3RfR0VUX0lURU0oaGVhcCwgbi0xKSA7CiAgICAgUHlfSU5DUkVGKGxhc3RlbHQpOwotICAgIGlmIChQeUxpc3RfU2V0U2xpY2UoaGVhcCwgbi0xLCBuLCBOVUxMKSA8IDApIHsKKyAgICBpZiAoUHlMaXN0X1NldFNsaWNlKGhlYXAsIG4tMSwgbiwgTlVMTCkpIHsKICAgICAgICAgUHlfREVDUkVGKGxhc3RlbHQpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xNDksMTggKzE1MCwyNCBAQAogICAgICAgICByZXR1cm4gbGFzdGVsdDsKICAgICByZXR1cm5pdGVtID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIDApOwogICAgIFB5TGlzdF9TRVRfSVRFTShoZWFwLCAwLCBsYXN0ZWx0KTsKLSAgICBpZiAoX3NpZnR1cCgoUHlMaXN0T2JqZWN0ICopaGVhcCwgMCkgPT0gLTEpIHsKKyAgICBpZiAoc2lmdHVwX2Z1bmMoKFB5TGlzdE9iamVjdCAqKWhlYXAsIDApKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXR1cm5pdGVtKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiByZXR1cm5pdGVtOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgoraGVhcHBvcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmhlYXApCit7CisgICAgcmV0dXJuIGhlYXBwb3BfaW50ZXJuYWwoaGVhcCwgc2lmdHVwKTsKK30KKwogUHlEb2NfU1RSVkFSKGhlYXBwb3BfZG9jLAogIlBvcCB0aGUgc21hbGxlc3QgaXRlbSBvZmYgdGhlIGhlYXAsIG1haW50YWluaW5nIHRoZSBoZWFwIGludmFyaWFudC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWhlYXByZXBsYWNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2hlYXByZXBsYWNlX2ludGVybmFsKFB5T2JqZWN0ICphcmdzLCBpbnQgc2lmdHVwX2Z1bmMoUHlMaXN0T2JqZWN0ICosIFB5X3NzaXplX3QpKQogewogICAgIFB5T2JqZWN0ICpoZWFwLCAqaXRlbSwgKnJldHVybml0ZW07CiAKQEAgLTE3Miw3ICsxNzksNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoUHlMaXN0X0dFVF9TSVpFKGhlYXApIDwgMSkgeworICAgIGlmIChQeUxpc3RfR0VUX1NJWkUoaGVhcCkgPT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgImluZGV4IG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xODAsMTMgKzE4NywxOSBAQAogICAgIHJldHVybml0ZW0gPSBQeUxpc3RfR0VUX0lURU0oaGVhcCwgMCk7CiAgICAgUHlfSU5DUkVGKGl0ZW0pOwogICAgIFB5TGlzdF9TRVRfSVRFTShoZWFwLCAwLCBpdGVtKTsKLSAgICBpZiAoX3NpZnR1cCgoUHlMaXN0T2JqZWN0ICopaGVhcCwgMCkgPT0gLTEpIHsKKyAgICBpZiAoc2lmdHVwX2Z1bmMoKFB5TGlzdE9iamVjdCAqKWhlYXAsIDApKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXR1cm5pdGVtKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiByZXR1cm5pdGVtOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgoraGVhcHJlcGxhY2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBoZWFwcmVwbGFjZV9pbnRlcm5hbChhcmdzLCBzaWZ0dXApOworfQorCiBQeURvY19TVFJWQVIoaGVhcHJlcGxhY2VfZG9jLAogImhlYXByZXBsYWNlKGhlYXAsIGl0ZW0pIC0+IHZhbHVlLiBQb3AgYW5kIHJldHVybiB0aGUgY3VycmVudCBzbWFsbGVzdCB2YWx1ZSwgYW5kIGFkZCB0aGUgbmV3IGl0ZW0uXG5cCiBcblwKQEAgLTIxMSwxMyArMjI0LDEzIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChQeUxpc3RfR0VUX1NJWkUoaGVhcCkgPCAxKSB7CisgICAgaWYgKFB5TGlzdF9HRVRfU0laRShoZWFwKSA9PSAwKSB7CiAgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgfQogCiAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKFB5TGlzdF9HRVRfSVRFTShoZWFwLCAwKSwgaXRlbSwgUHlfTFQpOwotICAgIGlmIChjbXAgPT0gLTEpCisgICAgaWYgKGNtcCA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChjbXAgPT0gMCkgewogICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CkBAIC0yMzIsNyArMjQ1LDcgQEAKICAgICByZXR1cm5pdGVtID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIDApOwogICAgIFB5X0lOQ1JFRihpdGVtKTsKICAgICBQeUxpc3RfU0VUX0lURU0oaGVhcCwgMCwgaXRlbSk7Ci0gICAgaWYgKF9zaWZ0dXAoKFB5TGlzdE9iamVjdCAqKWhlYXAsIDApID09IC0xKSB7CisgICAgaWYgKHNpZnR1cCgoUHlMaXN0T2JqZWN0ICopaGVhcCwgMCkpIHsKICAgICAgICAgUHlfREVDUkVGKHJldHVybml0ZW0pOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yNDQsOCArMjU3LDczIEBACiBmcm9tIHRoZSBoZWFwLiBUaGUgY29tYmluZWQgYWN0aW9uIHJ1bnMgbW9yZSBlZmZpY2llbnRseSB0aGFuXG5cCiBoZWFwcHVzaCgpIGZvbGxvd2VkIGJ5IGEgc2VwYXJhdGUgY2FsbCB0byBoZWFwcG9wKCkuIik7CiAKK3N0YXRpYyBQeV9zc2l6ZV90CitrZWVwX3RvcF9iaXQoUHlfc3NpemVfdCBuKQoreworICAgIGludCBpID0gMDsKKworICAgIHdoaWxlIChuID4gMSkgeworICAgICAgICBuID4+PSAxOworICAgICAgICBpKys7CisgICAgfQorICAgIHJldHVybiBuIDw8IGk7Cit9CisKKy8qIENhY2hlIGZyaWVuZGx5IHZlcnNpb24gb2YgaGVhcGlmeSgpCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICBCdWlsZC11cCBhIGhlYXAgaW4gTyhuKSB0aW1lIGJ5IHBlcmZvcm1pbmcgc2lmdHVwKCkgb3BlcmF0aW9ucworICAgb24gbm9kZXMgd2hvc2UgY2hpbGRyZW4gYXJlIGFscmVhZHkgaGVhcHMuCisKKyAgIFRoZSBzaW1wbGVzdCB3YXkgaXMgdG8gc2lmdCB0aGUgbm9kZXMgaW4gcmV2ZXJzZSBvcmRlciBmcm9tCisgICBuLy8yLTEgdG8gMCBpbmNsdXNpdmUuICBUaGUgZG93bnNpZGUgaXMgdGhhdCBjaGlsZHJlbiBtYXkgYmUKKyAgIG91dCBvZiBjYWNoZSBieSB0aGUgdGltZSB0aGVpciBwYXJlbnQgaXMgcmVhY2hlZC4KKworICAgQSBiZXR0ZXIgd2F5IGlzIHRvIG5vdCB3YWl0IGZvciB0aGUgY2hpbGRyZW4gdG8gZ28gb3V0IG9mIGNhY2hlLgorICAgT25jZSBhIHNpYmxpbmcgcGFpciBvZiBjaGlsZCBub2RlcyBoYXZlIGJlZW4gc2lmdGVkLCBpbW1lZGlhdGVseQorICAgc2lmdCB0aGVpciBwYXJlbnQgbm9kZSAod2hpbGUgdGhlIGNoaWxkcmVuIGFyZSBzdGlsbCBpbiBjYWNoZSkuCisKKyAgIEJvdGggd2F5cyBidWlsZCBjaGlsZCBoZWFwcyBiZWZvcmUgdGhlaXIgcGFyZW50cywgc28gYm90aCB3YXlzCisgICBkbyB0aGUgZXhhY3Qgc2FtZSBudW1iZXIgb2YgY29tcGFyaXNvbnMgYW5kIHByb2R1Y2UgZXhhY3RseQorICAgdGhlIHNhbWUgaGVhcC4gIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgdHJhdmVyc2FsCisgICBvcmRlciBpcyBvcHRpbWl6ZWQgZm9yIGNhY2hlIGVmZmljaWVuY3kuCisqLworCiBzdGF0aWMgUHlPYmplY3QgKgotaGVhcGlmeShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmhlYXApCitjYWNoZV9mcmllbmRseV9oZWFwaWZ5KFB5T2JqZWN0ICpoZWFwLCBpbnQgc2lmdHVwX2Z1bmMoUHlMaXN0T2JqZWN0ICosIFB5X3NzaXplX3QpKQoreworICAgIFB5X3NzaXplX3QgaSwgaiwgbSwgbWhhbGYsIGxlZnRtb3N0OworCisgICAgbSA9IFB5TGlzdF9HRVRfU0laRShoZWFwKSA+PiAxOyAgICAgICAgIC8qIGluZGV4IG9mIGZpcnN0IGNoaWxkbGVzcyBub2RlICovCisgICAgbGVmdG1vc3QgPSBrZWVwX3RvcF9iaXQobSArIDEpIC0gMTsgICAgIC8qIGxlZnRtb3N0IG5vZGUgaW4gcm93IG9mIG0gKi8KKyAgICBtaGFsZiA9IG0gPj4gMTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogcGFyZW50IG9mIGZpcnN0IGNoaWxkbGVzcyBub2RlICovCisKKyAgICBmb3IgKGkgPSBsZWZ0bW9zdCAtIDEgOyBpID49IG1oYWxmIDsgaS0tKSB7CisgICAgICAgIGogPSBpOworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgaWYgKHNpZnR1cF9mdW5jKChQeUxpc3RPYmplY3QgKiloZWFwLCBqKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGlmICghKGogJiAxKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGogPj49IDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGkgPSBtIC0gMSA7IGkgPj0gbGVmdG1vc3QgOyBpLS0pIHsKKyAgICAgICAgaiA9IGk7CisgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICBpZiAoc2lmdHVwX2Z1bmMoKFB5TGlzdE9iamVjdCAqKWhlYXAsIGopKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgaWYgKCEoaiAmIDEpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaiA+Pj0gMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2hlYXBpZnlfaW50ZXJuYWwoUHlPYmplY3QgKmhlYXAsIGludCBzaWZ0dXBfZnVuYyhQeUxpc3RPYmplY3QgKiwgUHlfc3NpemVfdCkpCiB7CiAgICAgUHlfc3NpemVfdCBpLCBuOwogCkBAIC0yNTQsNyArMzMyLDE0IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIC8qIEZvciBoZWFwcyBsaWtlbHkgdG8gYmUgYmlnZ2VyIHRoYW4gTDEgY2FjaGUsIHdlIHVzZSB0aGUgY2FjaGUKKyAgICAgICBmcmllbmRseSBoZWFwaWZ5IGZ1bmN0aW9uLiAgRm9yIHNtYWxsZXIgaGVhcHMgdGhhdCBmaXQgZW50aXJlbHkKKyAgICAgICBpbiBjYWNoZSwgd2UgcHJlZmVyIHRoZSBzaW1wbGVyIGFsZ29yaXRobSB3aXRoIGxlc3MgYnJhbmNoaW5nLgorICAgICovCiAgICAgbiA9IFB5TGlzdF9HRVRfU0laRShoZWFwKTsKKyAgICBpZiAobiA+IDI1MDApCisgICAgICAgIHJldHVybiBjYWNoZV9mcmllbmRseV9oZWFwaWZ5KGhlYXAsIHNpZnR1cF9mdW5jKTsKKwogICAgIC8qIFRyYW5zZm9ybSBib3R0b20tdXAuICBUaGUgbGFyZ2VzdCBpbmRleCB0aGVyZSdzIGFueSBwb2ludCB0bwogICAgICAgIGxvb2tpbmcgYXQgaXMgdGhlIGxhcmdlc3Qgd2l0aCBhIGNoaWxkIGluZGV4IGluLXJhbmdlLCBzbyBtdXN0CiAgICAgICAgaGF2ZSAyKmkgKyAxIDwgbiwgb3IgaSA8IChuLTEpLzIuICBJZiBuIGlzIGV2ZW4gPSAyKmosIHRoaXMgaXMKQEAgLTI2MiwxNDIgKzM0Nyw2OCBAQAogICAgICAgIG4gaXMgb2RkID0gMipqKzEsIHRoaXMgaXMgKDIqaisxLTEpLzIgPSBqIHNvIGotMSBpcyB0aGUgbGFyZ2VzdCwKICAgICAgICBhbmQgdGhhdCdzIGFnYWluIG4vLzItMS4KICAgICAqLwotICAgIGZvciAoaT1uLzItMSA7IGk+PTAgOyBpLS0pCi0gICAgICAgIGlmKF9zaWZ0dXAoKFB5TGlzdE9iamVjdCAqKWhlYXAsIGkpID09IC0xKQorICAgIGZvciAoaSA9IG4vMiAtIDEgOyBpID49IDAgOyBpLS0pCisgICAgICAgIGlmIChzaWZ0dXBfZnVuYygoUHlMaXN0T2JqZWN0ICopaGVhcCwgaSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitoZWFwaWZ5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaGVhcCkKK3sKKyAgICByZXR1cm4gaGVhcGlmeV9pbnRlcm5hbChoZWFwLCBzaWZ0dXApOwogfQogCiBQeURvY19TVFJWQVIoaGVhcGlmeV9kb2MsCiAiVHJhbnNmb3JtIGxpc3QgaW50byBhIGhlYXAsIGluLXBsYWNlLCBpbiBPKGxlbihoZWFwKSkgdGltZS4iKTsKIAotc3RhdGljIFB5T2JqZWN0ICoKLW5sYXJnZXN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqaGVhcD1OVUxMLCAqZWxlbSwgKml0ZXJhYmxlLCAqc29sLCAqaXQsICpvbGRlbGVtOwotICAgIFB5X3NzaXplX3QgaSwgbjsKLSAgICBpbnQgY21wOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuTzpubGFyZ2VzdCIsICZuLCAmaXRlcmFibGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7Ci0gICAgaWYgKGl0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaGVhcCA9IFB5TGlzdF9OZXcoMCk7Ci0gICAgaWYgKGhlYXAgPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsOwotCi0gICAgZm9yIChpPTAgOyBpPG4gOyBpKysgKXsKLSAgICAgICAgZWxlbSA9IFB5SXRlcl9OZXh0KGl0KTsKLSAgICAgICAgaWYgKGVsZW0gPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGdvdG8gc29ydGl0OwotICAgICAgICB9Ci0gICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGhlYXAsIGVsZW0pID09IC0xKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgIH0KLSAgICBpZiAoUHlMaXN0X0dFVF9TSVpFKGhlYXApID09IDApCi0gICAgICAgIGdvdG8gc29ydGl0OwotCi0gICAgZm9yIChpPW4vMi0xIDsgaT49MCA7IGktLSkKLSAgICAgICAgaWYoX3NpZnR1cCgoUHlMaXN0T2JqZWN0ICopaGVhcCwgaSkgPT0gLTEpCi0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0KLSAgICBzb2wgPSBQeUxpc3RfR0VUX0lURU0oaGVhcCwgMCk7Ci0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgZWxlbSA9IFB5SXRlcl9OZXh0KGl0KTsKLSAgICAgICAgaWYgKGVsZW0gPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGdvdG8gc29ydGl0OwotICAgICAgICB9Ci0gICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzb2wsIGVsZW0sIFB5X0xUKTsKLSAgICAgICAgaWYgKGNtcCA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjbXAgPT0gMCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgb2xkZWxlbSA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCAwKTsKLSAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGhlYXAsIDAsIGVsZW0pOwotICAgICAgICBQeV9ERUNSRUYob2xkZWxlbSk7Ci0gICAgICAgIGlmIChfc2lmdHVwKChQeUxpc3RPYmplY3QgKiloZWFwLCAwKSA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgc29sID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIDApOwotICAgIH0KLXNvcnRpdDoKLSAgICBpZiAoUHlMaXN0X1NvcnQoaGVhcCkgPT0gLTEpCi0gICAgICAgIGdvdG8gZmFpbDsKLSAgICBpZiAoUHlMaXN0X1JldmVyc2UoaGVhcCkgPT0gLTEpCi0gICAgICAgIGdvdG8gZmFpbDsKLSAgICBQeV9ERUNSRUYoaXQpOwotICAgIHJldHVybiBoZWFwOwotCi1mYWlsOgotICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgUHlfWERFQ1JFRihoZWFwKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotUHlEb2NfU1RSVkFSKG5sYXJnZXN0X2RvYywKLSJGaW5kIHRoZSBuIGxhcmdlc3QgZWxlbWVudHMgaW4gYSBkYXRhc2V0LlxuXAotXG5cCi1FcXVpdmFsZW50IHRvOiAgc29ydGVkKGl0ZXJhYmxlLCByZXZlcnNlPVRydWUpWzpuXVxuIik7Ci0KIHN0YXRpYyBpbnQKLV9zaWZ0ZG93bm1heChQeUxpc3RPYmplY3QgKmhlYXAsIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgcG9zKQorc2lmdGRvd25fbWF4KFB5TGlzdE9iamVjdCAqaGVhcCwgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBwb3MpCiB7Ci0gICAgUHlPYmplY3QgKm5ld2l0ZW0sICpwYXJlbnQ7CisgICAgUHlPYmplY3QgKm5ld2l0ZW0sICpwYXJlbnQsICoqYXJyOworICAgIFB5X3NzaXplX3QgcGFyZW50cG9zLCBzaXplOwogICAgIGludCBjbXA7Ci0gICAgUHlfc3NpemVfdCBwYXJlbnRwb3M7CiAKICAgICBhc3NlcnQoUHlMaXN0X0NoZWNrKGhlYXApKTsKLSAgICBpZiAocG9zID49IFB5TGlzdF9HRVRfU0laRShoZWFwKSkgeworICAgIHNpemUgPSBQeUxpc3RfR0VUX1NJWkUoaGVhcCk7CisgICAgaWYgKHBvcyA+PSBzaXplKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAiaW5kZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBuZXdpdGVtID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIHBvcyk7Ci0gICAgUHlfSU5DUkVGKG5ld2l0ZW0pOwogICAgIC8qIEZvbGxvdyB0aGUgcGF0aCB0byB0aGUgcm9vdCwgbW92aW5nIHBhcmVudHMgZG93biB1bnRpbCBmaW5kaW5nCiAgICAgICAgYSBwbGFjZSBuZXdpdGVtIGZpdHMuICovCi0gICAgd2hpbGUgKHBvcyA+IHN0YXJ0cG9zKXsKKyAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOworICAgIG5ld2l0ZW0gPSBhcnJbcG9zXTsKKyAgICB3aGlsZSAocG9zID4gc3RhcnRwb3MpIHsKICAgICAgICAgcGFyZW50cG9zID0gKHBvcyAtIDEpID4+IDE7Ci0gICAgICAgIHBhcmVudCA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCBwYXJlbnRwb3MpOworICAgICAgICBwYXJlbnQgPSBhcnJbcGFyZW50cG9zXTsKICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHBhcmVudCwgbmV3aXRlbSwgUHlfTFQpOwotICAgICAgICBpZiAoY21wID09IC0xKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobmV3aXRlbSk7CisgICAgICAgIGlmIChjbXAgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoc2l6ZSAhPSBQeUxpc3RfR0VUX1NJWkUoaGVhcCkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpc3QgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBpZiAoY21wID09IDApCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgUHlfSU5DUkVGKHBhcmVudCk7Ci0gICAgICAgIFB5X0RFQ1JFRihQeUxpc3RfR0VUX0lURU0oaGVhcCwgcG9zKSk7Ci0gICAgICAgIFB5TGlzdF9TRVRfSVRFTShoZWFwLCBwb3MsIHBhcmVudCk7CisgICAgICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7CisgICAgICAgIHBhcmVudCA9IGFycltwYXJlbnRwb3NdOworICAgICAgICBuZXdpdGVtID0gYXJyW3Bvc107CisgICAgICAgIGFycltwYXJlbnRwb3NdID0gbmV3aXRlbTsKKyAgICAgICAgYXJyW3Bvc10gPSBwYXJlbnQ7CiAgICAgICAgIHBvcyA9IHBhcmVudHBvczsKICAgICB9Ci0gICAgUHlfREVDUkVGKFB5TGlzdF9HRVRfSVRFTShoZWFwLCBwb3MpKTsKLSAgICBQeUxpc3RfU0VUX0lURU0oaGVhcCwgcG9zLCBuZXdpdGVtKTsKICAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIGludAotX3NpZnR1cG1heChQeUxpc3RPYmplY3QgKmhlYXAsIFB5X3NzaXplX3QgcG9zKQorc2lmdHVwX21heChQeUxpc3RPYmplY3QgKmhlYXAsIFB5X3NzaXplX3QgcG9zKQogewotICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIGVuZHBvcywgY2hpbGRwb3MsIHJpZ2h0cG9zLCBsaW1pdDsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBlbmRwb3MsIGNoaWxkcG9zLCBsaW1pdDsKKyAgICBQeU9iamVjdCAqdG1wMSwgKnRtcDIsICoqYXJyOwogICAgIGludCBjbXA7Ci0gICAgUHlPYmplY3QgKm5ld2l0ZW0sICp0bXA7CiAKICAgICBhc3NlcnQoUHlMaXN0X0NoZWNrKGhlYXApKTsKICAgICBlbmRwb3MgPSBQeUxpc3RfR0VUX1NJWkUoaGVhcCk7CkBAIC00MDYsMTI1ICs0MTcsNjIgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBuZXdpdGVtID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIHBvcyk7Ci0gICAgUHlfSU5DUkVGKG5ld2l0ZW0pOwogCiAgICAgLyogQnViYmxlIHVwIHRoZSBzbWFsbGVyIGNoaWxkIHVudGlsIGhpdHRpbmcgYSBsZWFmLiAqLworICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7CiAgICAgbGltaXQgPSBlbmRwb3MgLyAyOyAgICAgICAgICAvKiBzbWFsbGVzdCBwb3MgdGhhdCBoYXMgbm8gY2hpbGQgKi8KICAgICB3aGlsZSAocG9zIDwgbGltaXQpIHsKICAgICAgICAgLyogU2V0IGNoaWxkcG9zIHRvIGluZGV4IG9mIHNtYWxsZXIgY2hpbGQuICAgKi8KICAgICAgICAgY2hpbGRwb3MgPSAyKnBvcyArIDE7ICAgIC8qIGxlZnRtb3N0IGNoaWxkIHBvc2l0aW9uICAqLwotICAgICAgICByaWdodHBvcyA9IGNoaWxkcG9zICsgMTsKLSAgICAgICAgaWYgKHJpZ2h0cG9zIDwgZW5kcG9zKSB7CisgICAgICAgIGlmIChjaGlsZHBvcyArIDEgPCBlbmRwb3MpIHsKICAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgKLSAgICAgICAgICAgICAgICBQeUxpc3RfR0VUX0lURU0oaGVhcCwgcmlnaHRwb3MpLAotICAgICAgICAgICAgICAgIFB5TGlzdF9HRVRfSVRFTShoZWFwLCBjaGlsZHBvcyksCisgICAgICAgICAgICAgICAgYXJyW2NoaWxkcG9zICsgMV0sCisgICAgICAgICAgICAgICAgYXJyW2NoaWxkcG9zXSwKICAgICAgICAgICAgICAgICBQeV9MVCk7Ci0gICAgICAgICAgICBpZiAoY21wID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ld2l0ZW0pOworICAgICAgICAgICAgaWYgKGNtcCA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgY2hpbGRwb3MgKz0gKCh1bnNpZ25lZCljbXAgXiAxKTsgICAvKiBpbmNyZW1lbnQgd2hlbiBjbXA9PTAgKi8KKyAgICAgICAgICAgIGlmIChlbmRwb3MgIT0gUHlMaXN0X0dFVF9TSVpFKGhlYXApKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpc3QgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoY21wID09IDApCi0gICAgICAgICAgICAgICAgY2hpbGRwb3MgPSByaWdodHBvczsKICAgICAgICAgfQogICAgICAgICAvKiBNb3ZlIHRoZSBzbWFsbGVyIGNoaWxkIHVwLiAqLwotICAgICAgICB0bXAgPSBQeUxpc3RfR0VUX0lURU0oaGVhcCwgY2hpbGRwb3MpOwotICAgICAgICBQeV9JTkNSRUYodG1wKTsKLSAgICAgICAgUHlfREVDUkVGKFB5TGlzdF9HRVRfSVRFTShoZWFwLCBwb3MpKTsKLSAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGhlYXAsIHBvcywgdG1wKTsKKyAgICAgICAgYXJyID0gX1B5TGlzdF9JVEVNUyhoZWFwKTsKKyAgICAgICAgdG1wMSA9IGFycltjaGlsZHBvc107CisgICAgICAgIHRtcDIgPSBhcnJbcG9zXTsKKyAgICAgICAgYXJyW2NoaWxkcG9zXSA9IHRtcDI7CisgICAgICAgIGFycltwb3NdID0gdG1wMTsKICAgICAgICAgcG9zID0gY2hpbGRwb3M7CiAgICAgfQotCi0gICAgLyogVGhlIGxlYWYgYXQgcG9zIGlzIGVtcHR5IG5vdy4gIFB1dCBuZXdpdGVtIHRoZXJlLCBhbmQgYnViYmxlCi0gICAgICAgaXQgdXAgdG8gaXRzIGZpbmFsIHJlc3RpbmcgcGxhY2UgKGJ5IHNpZnRpbmcgaXRzIHBhcmVudHMgZG93bikuICovCi0gICAgUHlfREVDUkVGKFB5TGlzdF9HRVRfSVRFTShoZWFwLCBwb3MpKTsKLSAgICBQeUxpc3RfU0VUX0lURU0oaGVhcCwgcG9zLCBuZXdpdGVtKTsKLSAgICByZXR1cm4gX3NpZnRkb3dubWF4KGhlYXAsIHN0YXJ0cG9zLCBwb3MpOworICAgIC8qIEJ1YmJsZSBpdCB1cCB0byBpdHMgZmluYWwgcmVzdGluZyBwbGFjZSAoYnkgc2lmdGluZyBpdHMgcGFyZW50cyBkb3duKS4gKi8KKyAgICByZXR1cm4gc2lmdGRvd25fbWF4KGhlYXAsIHN0YXJ0cG9zLCBwb3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotbnNtYWxsZXN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2hlYXBwb3BfbWF4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaGVhcCkKIHsKLSAgICBQeU9iamVjdCAqaGVhcD1OVUxMLCAqZWxlbSwgKml0ZXJhYmxlLCAqbG9zLCAqaXQsICpvbGRlbGVtOwotICAgIFB5X3NzaXplX3QgaSwgbjsKLSAgICBpbnQgY21wOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuTzpuc21hbGxlc3QiLCAmbiwgJml0ZXJhYmxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOwotICAgIGlmIChpdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGhlYXAgPSBQeUxpc3RfTmV3KDApOwotICAgIGlmIChoZWFwID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbDsKLQotICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrICl7Ci0gICAgICAgIGVsZW0gPSBQeUl0ZXJfTmV4dChpdCk7Ci0gICAgICAgIGlmIChlbGVtID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBnb3RvIHNvcnRpdDsKLSAgICAgICAgfQotICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChoZWFwLCBlbGVtKSA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICB9Ci0gICAgbiA9IFB5TGlzdF9HRVRfU0laRShoZWFwKTsKLSAgICBpZiAobiA9PSAwKQotICAgICAgICBnb3RvIHNvcnRpdDsKLQotICAgIGZvciAoaT1uLzItMSA7IGk+PTAgOyBpLS0pCi0gICAgICAgIGlmKF9zaWZ0dXBtYXgoKFB5TGlzdE9iamVjdCAqKWhlYXAsIGkpID09IC0xKQotICAgICAgICAgICAgZ290byBmYWlsOwotCi0gICAgbG9zID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIDApOwotICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIGVsZW0gPSBQeUl0ZXJfTmV4dChpdCk7Ci0gICAgICAgIGlmIChlbGVtID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBnb3RvIHNvcnRpdDsKLSAgICAgICAgfQotICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woZWxlbSwgbG9zLCBQeV9MVCk7Ci0gICAgICAgIGlmIChjbXAgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgfQotICAgICAgICBpZiAoY21wID09IDApIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgb2xkZWxlbSA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCAwKTsKLSAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGhlYXAsIDAsIGVsZW0pOwotICAgICAgICBQeV9ERUNSRUYob2xkZWxlbSk7Ci0gICAgICAgIGlmIChfc2lmdHVwbWF4KChQeUxpc3RPYmplY3QgKiloZWFwLCAwKSA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgbG9zID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIDApOwotICAgIH0KLQotc29ydGl0OgotICAgIGlmIChQeUxpc3RfU29ydChoZWFwKSA9PSAtMSkKLSAgICAgICAgZ290byBmYWlsOwotICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgcmV0dXJuIGhlYXA7Ci0KLWZhaWw6Ci0gICAgUHlfREVDUkVGKGl0KTsKLSAgICBQeV9YREVDUkVGKGhlYXApOwotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBoZWFwcG9wX2ludGVybmFsKGhlYXAsIHNpZnR1cF9tYXgpOwogfQogCi1QeURvY19TVFJWQVIobnNtYWxsZXN0X2RvYywKLSJGaW5kIHRoZSBuIHNtYWxsZXN0IGVsZW1lbnRzIGluIGEgZGF0YXNldC5cblwKLVxuXAotRXF1aXZhbGVudCB0bzogIHNvcnRlZChpdGVyYWJsZSlbOm5dXG4iKTsKK1B5RG9jX1NUUlZBUihoZWFwcG9wX21heF9kb2MsICJNYXhoZWFwIHZhcmlhbnQgb2YgaGVhcHBvcC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2hlYXByZXBsYWNlX21heChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmV0dXJuIGhlYXByZXBsYWNlX2ludGVybmFsKGFyZ3MsIHNpZnR1cF9tYXgpOworfQorCitQeURvY19TVFJWQVIoaGVhcHJlcGxhY2VfbWF4X2RvYywgIk1heGhlYXAgdmFyaWFudCBvZiBoZWFwcmVwbGFjZSIpOworCitzdGF0aWMgUHlPYmplY3QgKgoraGVhcGlmeV9tYXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpoZWFwKQoreworICAgIHJldHVybiBoZWFwaWZ5X2ludGVybmFsKGhlYXAsIHNpZnR1cF9tYXgpOworfQorCitQeURvY19TVFJWQVIoaGVhcGlmeV9tYXhfZG9jLCAiTWF4aGVhcCB2YXJpYW50IG9mIGhlYXBpZnkuIik7CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBoZWFwcV9tZXRob2RzW10gPSB7CiAgICAgeyJoZWFwcHVzaCIsICAgICAgICAoUHlDRnVuY3Rpb24paGVhcHB1c2gsCkBAIC01MzcsMTAgKzQ4NSwxMiBAQAogICAgICAgICBNRVRIX1ZBUkFSR1MsICAgICAgICAgICBoZWFwcmVwbGFjZV9kb2N9LAogICAgIHsiaGVhcGlmeSIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKWhlYXBpZnksCiAgICAgICAgIE1FVEhfTywgICAgICAgICAgICAgICAgIGhlYXBpZnlfZG9jfSwKLSAgICB7Im5sYXJnZXN0IiwgICAgICAgIChQeUNGdW5jdGlvbilubGFyZ2VzdCwKLSAgICAgICAgTUVUSF9WQVJBUkdTLCAgICAgICAgICAgbmxhcmdlc3RfZG9jfSwKLSAgICB7Im5zbWFsbGVzdCIsICAgICAgIChQeUNGdW5jdGlvbiluc21hbGxlc3QsCi0gICAgICAgIE1FVEhfVkFSQVJHUywgICAgICAgICAgIG5zbWFsbGVzdF9kb2N9LAorICAgIHsiX2hlYXBwb3BfbWF4IiwgICAgKFB5Q0Z1bmN0aW9uKWhlYXBwb3BfbWF4LAorICAgICAgICBNRVRIX08sICAgICAgICAgICAgICAgICBoZWFwcG9wX21heF9kb2N9LAorICAgIHsiX2hlYXByZXBsYWNlX21heCIsKFB5Q0Z1bmN0aW9uKWhlYXByZXBsYWNlX21heCwKKyAgICAgICAgTUVUSF9WQVJBUkdTLCAgICAgICAgICAgaGVhcHJlcGxhY2VfbWF4X2RvY30sCisgICAgeyJfaGVhcGlmeV9tYXgiLCAgICAoUHlDRnVuY3Rpb24paGVhcGlmeV9tYXgsCisgICAgICAgIE1FVEhfTywgICAgICAgICAgICAgICAgIGhlYXBpZnlfbWF4X2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5jIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKaW5kZXggNDQxMTZkOC4uZWM2ODE3MCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKQEAgLTkzLDE0MCArOTMsMTQ1IEBACiAvKgogICogVGhlIG1haW4gb3BlbigpIGZ1bmN0aW9uCiAgKi8KLVB5RG9jX1NUUlZBUihvcGVuX2RvYywKLSJvcGVuKGZpbGUsIG1vZGU9J3InLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsXG4iCi0iICAgICBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKSAtPiBmaWxlIG9iamVjdFxuIgotIlxuIgotIk9wZW4gZmlsZSBhbmQgcmV0dXJuIGEgc3RyZWFtLiAgUmFpc2UgSU9FcnJvciB1cG9uIGZhaWx1cmUuXG4iCi0iXG4iCi0iZmlsZSBpcyBlaXRoZXIgYSB0ZXh0IG9yIGJ5dGUgc3RyaW5nIGdpdmluZyB0aGUgbmFtZSAoYW5kIHRoZSBwYXRoXG4iCi0iaWYgdGhlIGZpbGUgaXNuJ3QgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkpIG9mIHRoZSBmaWxlIHRvXG4iCi0iYmUgb3BlbmVkIG9yIGFuIGludGVnZXIgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGJlXG4iCi0id3JhcHBlZC4gKElmIGEgZmlsZSBkZXNjcmlwdG9yIGlzIGdpdmVuLCBpdCBpcyBjbG9zZWQgd2hlbiB0aGVcbiIKLSJyZXR1cm5lZCBJL08gb2JqZWN0IGlzIGNsb3NlZCwgdW5sZXNzIGNsb3NlZmQgaXMgc2V0IHRvIEZhbHNlLilcbiIKLSJcbiIKLSJtb2RlIGlzIGFuIG9wdGlvbmFsIHN0cmluZyB0aGF0IHNwZWNpZmllcyB0aGUgbW9kZSBpbiB3aGljaCB0aGUgZmlsZVxuIgotImlzIG9wZW5lZC4gSXQgZGVmYXVsdHMgdG8gJ3InIHdoaWNoIG1lYW5zIG9wZW4gZm9yIHJlYWRpbmcgaW4gdGV4dFxuIgotIm1vZGUuICBPdGhlciBjb21tb24gdmFsdWVzIGFyZSAndycgZm9yIHdyaXRpbmcgKHRydW5jYXRpbmcgdGhlIGZpbGUgaWZcbiIKLSJpdCBhbHJlYWR5IGV4aXN0cyksICd4JyBmb3IgY3JlYXRpbmcgYW5kIHdyaXRpbmcgdG8gYSBuZXcgZmlsZSwgYW5kXG4iCi0iJ2EnIGZvciBhcHBlbmRpbmcgKHdoaWNoIG9uIHNvbWUgVW5peCBzeXN0ZW1zLCBtZWFucyB0aGF0IGFsbCB3cml0ZXNcbiIKLSJhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHNlZWsgcG9zaXRpb24pLlxuIgotIkluIHRleHQgbW9kZSwgaWYgZW5jb2RpbmcgaXMgbm90IHNwZWNpZmllZCB0aGUgZW5jb2RpbmcgdXNlZCBpcyBwbGF0Zm9ybVxuIgotImRlcGVuZGVudDogbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSBpcyBjYWxsZWQgdG8gZ2V0IHRoZVxuIgotImN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLiAoRm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgcmF3IGJ5dGVzIHVzZSBiaW5hcnlcbiIKLSJtb2RlIGFuZCBsZWF2ZSBlbmNvZGluZyB1bnNwZWNpZmllZC4pIFRoZSBhdmFpbGFibGUgbW9kZXMgYXJlOlxuIgotIlxuIgotIj09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIKLSJDaGFyYWN0ZXIgTWVhbmluZ1xuIgotIi0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIKLSIncicgICAgICAgb3BlbiBmb3IgcmVhZGluZyAoZGVmYXVsdClcbiIKLSIndycgICAgICAgb3BlbiBmb3Igd3JpdGluZywgdHJ1bmNhdGluZyB0aGUgZmlsZSBmaXJzdFxuIgotIid4JyAgICAgICBjcmVhdGUgYSBuZXcgZmlsZSBhbmQgb3BlbiBpdCBmb3Igd3JpdGluZ1xuIgotIidhJyAgICAgICBvcGVuIGZvciB3cml0aW5nLCBhcHBlbmRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSBpZiBpdCBleGlzdHNcbiIKLSInYicgICAgICAgYmluYXJ5IG1vZGVcbiIKLSIndCcgICAgICAgdGV4dCBtb2RlIChkZWZhdWx0KVxuIgotIicrJyAgICAgICBvcGVuIGEgZGlzayBmaWxlIGZvciB1cGRhdGluZyAocmVhZGluZyBhbmQgd3JpdGluZylcbiIKLSInVScgICAgICAgdW5pdmVyc2FsIG5ld2xpbmUgbW9kZSAoZGVwcmVjYXRlZClcbiIKLSI9PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iCi0iXG4iCi0iVGhlIGRlZmF1bHQgbW9kZSBpcyAncnQnIChvcGVuIGZvciByZWFkaW5nIHRleHQpLiBGb3IgYmluYXJ5IHJhbmRvbVxuIgotImFjY2VzcywgdGhlIG1vZGUgJ3crYicgb3BlbnMgYW5kIHRydW5jYXRlcyB0aGUgZmlsZSB0byAwIGJ5dGVzLCB3aGlsZVxuIgotIidyK2InIG9wZW5zIHRoZSBmaWxlIHdpdGhvdXQgdHJ1bmNhdGlvbi4gVGhlICd4JyBtb2RlIGltcGxpZXMgJ3cnIGFuZFxuIgotInJhaXNlcyBhbiBgRmlsZUV4aXN0c0Vycm9yYCBpZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cy5cbiIKLSJcbiIKLSJQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGZpbGVzIG9wZW5lZCBpbiBiaW5hcnkgYW5kIHRleHQgbW9kZXMsXG4iCi0iZXZlbiB3aGVuIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0gZG9lc24ndC4gRmlsZXMgb3BlbmVkIGluXG4iCi0iYmluYXJ5IG1vZGUgKGFwcGVuZGluZyAnYicgdG8gdGhlIG1vZGUgYXJndW1lbnQpIHJldHVybiBjb250ZW50cyBhc1xuIgotImJ5dGVzIG9iamVjdHMgd2l0aG91dCBhbnkgZGVjb2RpbmcuIEluIHRleHQgbW9kZSAodGhlIGRlZmF1bHQsIG9yIHdoZW5cbiIKLSIndCcgaXMgYXBwZW5kZWQgdG8gdGhlIG1vZGUgYXJndW1lbnQpLCB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXJlXG4iCi0icmV0dXJuZWQgYXMgc3RyaW5ncywgdGhlIGJ5dGVzIGhhdmluZyBiZWVuIGZpcnN0IGRlY29kZWQgdXNpbmcgYVxuIgotInBsYXRmb3JtLWRlcGVuZGVudCBlbmNvZGluZyBvciB1c2luZyB0aGUgc3BlY2lmaWVkIGVuY29kaW5nIGlmIGdpdmVuLlxuIgotIlxuIgotIidVJyBtb2RlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIGluIGZ1dHVyZSB2ZXJzaW9uc1xuIgotIm9mIFB5dGhvbi4gIEl0IGhhcyBubyBlZmZlY3QgaW4gUHl0aG9uIDMuICBVc2UgbmV3bGluZSB0byBjb250cm9sXG4iCi0idW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUuXG4iCi0iXG4iCi0iYnVmZmVyaW5nIGlzIGFuIG9wdGlvbmFsIGludGVnZXIgdXNlZCB0byBzZXQgdGhlIGJ1ZmZlcmluZyBwb2xpY3kuXG4iCi0iUGFzcyAwIHRvIHN3aXRjaCBidWZmZXJpbmcgb2ZmIChvbmx5IGFsbG93ZWQgaW4gYmluYXJ5IG1vZGUpLCAxIHRvIHNlbGVjdFxuIgotImxpbmUgYnVmZmVyaW5nIChvbmx5IHVzYWJsZSBpbiB0ZXh0IG1vZGUpLCBhbmQgYW4gaW50ZWdlciA+IDEgdG8gaW5kaWNhdGVcbiIKLSJ0aGUgc2l6ZSBvZiBhIGZpeGVkLXNpemUgY2h1bmsgYnVmZmVyLiAgV2hlbiBubyBidWZmZXJpbmcgYXJndW1lbnQgaXNcbiIKLSJnaXZlbiwgdGhlIGRlZmF1bHQgYnVmZmVyaW5nIHBvbGljeSB3b3JrcyBhcyBmb2xsb3dzOlxuIgotIlxuIgotIiogQmluYXJ5IGZpbGVzIGFyZSBidWZmZXJlZCBpbiBmaXhlZC1zaXplIGNodW5rczsgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlclxuIgotIiAgaXMgY2hvc2VuIHVzaW5nIGEgaGV1cmlzdGljIHRyeWluZyB0byBkZXRlcm1pbmUgdGhlIHVuZGVybHlpbmcgZGV2aWNlJ3NcbiIKLSIgIFwiYmxvY2sgc2l6ZVwiIGFuZCBmYWxsaW5nIGJhY2sgb24gYGlvLkRFRkFVTFRfQlVGRkVSX1NJWkVgLlxuIgotIiAgT24gbWFueSBzeXN0ZW1zLCB0aGUgYnVmZmVyIHdpbGwgdHlwaWNhbGx5IGJlIDQwOTYgb3IgODE5MiBieXRlcyBsb25nLlxuIgotIlxuIgotIiogXCJJbnRlcmFjdGl2ZVwiIHRleHQgZmlsZXMgKGZpbGVzIGZvciB3aGljaCBpc2F0dHkoKSByZXR1cm5zIFRydWUpXG4iCi0iICB1c2UgbGluZSBidWZmZXJpbmcuICBPdGhlciB0ZXh0IGZpbGVzIHVzZSB0aGUgcG9saWN5IGRlc2NyaWJlZCBhYm92ZVxuIgotIiAgZm9yIGJpbmFyeSBmaWxlcy5cbiIKLSJcbiIKLSJlbmNvZGluZyBpcyB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdXNlZCB0byBkZWNvZGUgb3IgZW5jb2RlIHRoZVxuIgotImZpbGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0ZXh0IG1vZGUuIFRoZSBkZWZhdWx0IGVuY29kaW5nIGlzXG4iCi0icGxhdGZvcm0gZGVwZW5kZW50LCBidXQgYW55IGVuY29kaW5nIHN1cHBvcnRlZCBieSBQeXRob24gY2FuIGJlXG4iCi0icGFzc2VkLiAgU2VlIHRoZSBjb2RlY3MgbW9kdWxlIGZvciB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgZW5jb2RpbmdzLlxuIgotIlxuIgotImVycm9ycyBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgaG93IGVuY29kaW5nIGVycm9ycyBhcmUgdG9cbiIKLSJiZSBoYW5kbGVkLS0tdGhpcyBhcmd1bWVudCBzaG91bGQgbm90IGJlIHVzZWQgaW4gYmluYXJ5IG1vZGUuIFBhc3NcbiIKLSInc3RyaWN0JyB0byByYWlzZSBhIFZhbHVlRXJyb3IgZXhjZXB0aW9uIGlmIHRoZXJlIGlzIGFuIGVuY29kaW5nIGVycm9yXG4iCi0iKHRoZSBkZWZhdWx0IG9mIE5vbmUgaGFzIHRoZSBzYW1lIGVmZmVjdCksIG9yIHBhc3MgJ2lnbm9yZScgdG8gaWdub3JlXG4iCi0iZXJyb3JzLiAoTm90ZSB0aGF0IGlnbm9yaW5nIGVuY29kaW5nIGVycm9ycyBjYW4gbGVhZCB0byBkYXRhIGxvc3MuKVxuIgotIlNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgY29kZWNzLnJlZ2lzdGVyIG9yIHJ1biAnaGVscChjb2RlY3MuQ29kZWMpJ1xuIgotImZvciBhIGxpc3Qgb2YgdGhlIHBlcm1pdHRlZCBlbmNvZGluZyBlcnJvciBzdHJpbmdzLlxuIgotIlxuIgotIm5ld2xpbmUgY29udHJvbHMgaG93IHVuaXZlcnNhbCBuZXdsaW5lcyB3b3JrcyAoaXQgb25seSBhcHBsaWVzIHRvIHRleHRcbiIKLSJtb2RlKS4gSXQgY2FuIGJlIE5vbmUsICcnLCAnXFxuJywgJ1xccicsIGFuZCAnXFxyXFxuJy4gIEl0IHdvcmtzIGFzXG4iCi0iZm9sbG93czpcbiIKLSJcbiIKLSIqIE9uIGlucHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlIGlzXG4iCi0iICBlbmFibGVkLiBMaW5lcyBpbiB0aGUgaW5wdXQgY2FuIGVuZCBpbiAnXFxuJywgJ1xccicsIG9yICdcXHJcXG4nLCBhbmRcbiIKLSIgIHRoZXNlIGFyZSB0cmFuc2xhdGVkIGludG8gJ1xcbicgYmVmb3JlIGJlaW5nIHJldHVybmVkIHRvIHRoZVxuIgotIiAgY2FsbGVyLiBJZiBpdCBpcyAnJywgdW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBpcyBlbmFibGVkLCBidXQgbGluZVxuIgotIiAgZW5kaW5ncyBhcmUgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciB1bnRyYW5zbGF0ZWQuIElmIGl0IGhhcyBhbnkgb2ZcbiIKLSIgIHRoZSBvdGhlciBsZWdhbCB2YWx1ZXMsIGlucHV0IGxpbmVzIGFyZSBvbmx5IHRlcm1pbmF0ZWQgYnkgdGhlIGdpdmVuXG4iCi0iICBzdHJpbmcsIGFuZCB0aGUgbGluZSBlbmRpbmcgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciB1bnRyYW5zbGF0ZWQuXG4iCi0iXG4iCi0iKiBPbiBvdXRwdXQsIGlmIG5ld2xpbmUgaXMgTm9uZSwgYW55ICdcXG4nIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmVcbiIKLSIgIHRyYW5zbGF0ZWQgdG8gdGhlIHN5c3RlbSBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yLCBvcy5saW5lc2VwLiBJZlxuIgotIiAgbmV3bGluZSBpcyAnJyBvciAnXFxuJywgbm8gdHJhbnNsYXRpb24gdGFrZXMgcGxhY2UuIElmIG5ld2xpbmUgaXMgYW55XG4iCi0iICBvZiB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBhbnkgJ1xcbicgY2hhcmFjdGVycyB3cml0dGVuIGFyZSB0cmFuc2xhdGVkXG4iCi0iICB0byB0aGUgZ2l2ZW4gc3RyaW5nLlxuIgotIlxuIgotIklmIGNsb3NlZmQgaXMgRmFsc2UsIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciB3aWxsIGJlIGtlcHQgb3BlblxuIgotIndoZW4gdGhlIGZpbGUgaXMgY2xvc2VkLiBUaGlzIGRvZXMgbm90IHdvcmsgd2hlbiBhIGZpbGUgbmFtZSBpcyBnaXZlblxuIgotImFuZCBtdXN0IGJlIFRydWUgaW4gdGhhdCBjYXNlLlxuIgotIlxuIgotIkEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieSBwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZVxuIgotInVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlsZSBvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieVxuIgotImNhbGxpbmcgKm9wZW5lciogd2l0aCAoKmZpbGUqLCAqZmxhZ3MqKS4gKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlblxuIgotImZpbGUgZGVzY3JpcHRvciAocGFzc2luZyBvcy5vcGVuIGFzICpvcGVuZXIqIHJlc3VsdHMgaW4gZnVuY3Rpb25hbGl0eVxuIgotInNpbWlsYXIgdG8gcGFzc2luZyBOb25lKS5cbiIKLSJcbiIKLSJvcGVuKCkgcmV0dXJucyBhIGZpbGUgb2JqZWN0IHdob3NlIHR5cGUgZGVwZW5kcyBvbiB0aGUgbW9kZSwgYW5kXG4iCi0idGhyb3VnaCB3aGljaCB0aGUgc3RhbmRhcmQgZmlsZSBvcGVyYXRpb25zIHN1Y2ggYXMgcmVhZGluZyBhbmQgd3JpdGluZ1xuIgotImFyZSBwZXJmb3JtZWQuIFdoZW4gb3BlbigpIGlzIHVzZWQgdG8gb3BlbiBhIGZpbGUgaW4gYSB0ZXh0IG1vZGUgKCd3JyxcbiIKLSIncicsICd3dCcsICdydCcsIGV0Yy4pLCBpdCByZXR1cm5zIGEgVGV4dElPV3JhcHBlci4gV2hlbiB1c2VkIHRvIG9wZW5cbiIKLSJhIGZpbGUgaW4gYSBiaW5hcnkgbW9kZSwgdGhlIHJldHVybmVkIGNsYXNzIHZhcmllczogaW4gcmVhZCBiaW5hcnlcbiIKLSJtb2RlLCBpdCByZXR1cm5zIGEgQnVmZmVyZWRSZWFkZXI7IGluIHdyaXRlIGJpbmFyeSBhbmQgYXBwZW5kIGJpbmFyeVxuIgotIm1vZGVzLCBpdCByZXR1cm5zIGEgQnVmZmVyZWRXcml0ZXIsIGFuZCBpbiByZWFkL3dyaXRlIG1vZGUsIGl0IHJldHVybnNcbiIKLSJhIEJ1ZmZlcmVkUmFuZG9tLlxuIgotIlxuIgotIkl0IGlzIGFsc28gcG9zc2libGUgdG8gdXNlIGEgc3RyaW5nIG9yIGJ5dGVhcnJheSBhcyBhIGZpbGUgZm9yIGJvdGhcbiIKLSJyZWFkaW5nIGFuZCB3cml0aW5nLiBGb3Igc3RyaW5ncyBTdHJpbmdJTyBjYW4gYmUgdXNlZCBsaWtlIGEgZmlsZVxuIgotIm9wZW5lZCBpbiBhIHRleHQgbW9kZSwgYW5kIGZvciBieXRlcyBhIEJ5dGVzSU8gY2FuIGJlIHVzZWQgbGlrZSBhIGZpbGVcbiIKLSJvcGVuZWQgaW4gYSBiaW5hcnkgbW9kZS5cbiIKLSAgICApOworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9pbworCitfaW8ub3BlbgorICAgIGZpbGU6IG9iamVjdAorICAgIG1vZGU6IHN0ciA9ICJyIgorICAgIGJ1ZmZlcmluZzogaW50ID0gLTEKKyAgICBlbmNvZGluZzogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIG5ld2xpbmU6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBjbG9zZWZkOiBpbnQoY19kZWZhdWx0PSIxIikgPSBUcnVlCisgICAgb3BlbmVyOiBvYmplY3QgPSBOb25lCisKK09wZW4gZmlsZSBhbmQgcmV0dXJuIGEgc3RyZWFtLiAgUmFpc2UgSU9FcnJvciB1cG9uIGZhaWx1cmUuCisKK2ZpbGUgaXMgZWl0aGVyIGEgdGV4dCBvciBieXRlIHN0cmluZyBnaXZpbmcgdGhlIG5hbWUgKGFuZCB0aGUgcGF0aAoraWYgdGhlIGZpbGUgaXNuJ3QgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkpIG9mIHRoZSBmaWxlIHRvCitiZSBvcGVuZWQgb3IgYW4gaW50ZWdlciBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIGZpbGUgdG8gYmUKK3dyYXBwZWQuIChJZiBhIGZpbGUgZGVzY3JpcHRvciBpcyBnaXZlbiwgaXQgaXMgY2xvc2VkIHdoZW4gdGhlCityZXR1cm5lZCBJL08gb2JqZWN0IGlzIGNsb3NlZCwgdW5sZXNzIGNsb3NlZmQgaXMgc2V0IHRvIEZhbHNlLikKKworbW9kZSBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIGZpbGUKK2lzIG9wZW5lZC4gSXQgZGVmYXVsdHMgdG8gJ3InIHdoaWNoIG1lYW5zIG9wZW4gZm9yIHJlYWRpbmcgaW4gdGV4dAorbW9kZS4gIE90aGVyIGNvbW1vbiB2YWx1ZXMgYXJlICd3JyBmb3Igd3JpdGluZyAodHJ1bmNhdGluZyB0aGUgZmlsZSBpZgoraXQgYWxyZWFkeSBleGlzdHMpLCAneCcgZm9yIGNyZWF0aW5nIGFuZCB3cml0aW5nIHRvIGEgbmV3IGZpbGUsIGFuZAorJ2EnIGZvciBhcHBlbmRpbmcgKHdoaWNoIG9uIHNvbWUgVW5peCBzeXN0ZW1zLCBtZWFucyB0aGF0IGFsbCB3cml0ZXMKK2FwcGVuZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgc2VlayBwb3NpdGlvbikuCitJbiB0ZXh0IG1vZGUsIGlmIGVuY29kaW5nIGlzIG5vdCBzcGVjaWZpZWQgdGhlIGVuY29kaW5nIHVzZWQgaXMgcGxhdGZvcm0KK2RlcGVuZGVudDogbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSBpcyBjYWxsZWQgdG8gZ2V0IHRoZQorY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuIChGb3IgcmVhZGluZyBhbmQgd3JpdGluZyByYXcgYnl0ZXMgdXNlIGJpbmFyeQorbW9kZSBhbmQgbGVhdmUgZW5jb2RpbmcgdW5zcGVjaWZpZWQuKSBUaGUgYXZhaWxhYmxlIG1vZGVzIGFyZToKKworPT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhcmFjdGVyIE1lYW5pbmcKKy0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKydyJyAgICAgICBvcGVuIGZvciByZWFkaW5nIChkZWZhdWx0KQorJ3cnICAgICAgIG9wZW4gZm9yIHdyaXRpbmcsIHRydW5jYXRpbmcgdGhlIGZpbGUgZmlyc3QKKyd4JyAgICAgICBjcmVhdGUgYSBuZXcgZmlsZSBhbmQgb3BlbiBpdCBmb3Igd3JpdGluZworJ2EnICAgICAgIG9wZW4gZm9yIHdyaXRpbmcsIGFwcGVuZGluZyB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIGlmIGl0IGV4aXN0cworJ2InICAgICAgIGJpbmFyeSBtb2RlCisndCcgICAgICAgdGV4dCBtb2RlIChkZWZhdWx0KQorJysnICAgICAgIG9wZW4gYSBkaXNrIGZpbGUgZm9yIHVwZGF0aW5nIChyZWFkaW5nIGFuZCB3cml0aW5nKQorJ1UnICAgICAgIHVuaXZlcnNhbCBuZXdsaW5lIG1vZGUgKGRlcHJlY2F0ZWQpCis9PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBkZWZhdWx0IG1vZGUgaXMgJ3J0JyAob3BlbiBmb3IgcmVhZGluZyB0ZXh0KS4gRm9yIGJpbmFyeSByYW5kb20KK2FjY2VzcywgdGhlIG1vZGUgJ3crYicgb3BlbnMgYW5kIHRydW5jYXRlcyB0aGUgZmlsZSB0byAwIGJ5dGVzLCB3aGlsZQorJ3IrYicgb3BlbnMgdGhlIGZpbGUgd2l0aG91dCB0cnVuY2F0aW9uLiBUaGUgJ3gnIG1vZGUgaW1wbGllcyAndycgYW5kCityYWlzZXMgYW4gYEZpbGVFeGlzdHNFcnJvcmAgaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMuCisKK1B5dGhvbiBkaXN0aW5ndWlzaGVzIGJldHdlZW4gZmlsZXMgb3BlbmVkIGluIGJpbmFyeSBhbmQgdGV4dCBtb2RlcywKK2V2ZW4gd2hlbiB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtIGRvZXNuJ3QuIEZpbGVzIG9wZW5lZCBpbgorYmluYXJ5IG1vZGUgKGFwcGVuZGluZyAnYicgdG8gdGhlIG1vZGUgYXJndW1lbnQpIHJldHVybiBjb250ZW50cyBhcworYnl0ZXMgb2JqZWN0cyB3aXRob3V0IGFueSBkZWNvZGluZy4gSW4gdGV4dCBtb2RlICh0aGUgZGVmYXVsdCwgb3Igd2hlbgorJ3QnIGlzIGFwcGVuZGVkIHRvIHRoZSBtb2RlIGFyZ3VtZW50KSwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGFyZQorcmV0dXJuZWQgYXMgc3RyaW5ncywgdGhlIGJ5dGVzIGhhdmluZyBiZWVuIGZpcnN0IGRlY29kZWQgdXNpbmcgYQorcGxhdGZvcm0tZGVwZW5kZW50IGVuY29kaW5nIG9yIHVzaW5nIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcgaWYgZ2l2ZW4uCisKKydVJyBtb2RlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIGluIGZ1dHVyZSB2ZXJzaW9ucworb2YgUHl0aG9uLiAgSXQgaGFzIG5vIGVmZmVjdCBpbiBQeXRob24gMy4gIFVzZSBuZXdsaW5lIHRvIGNvbnRyb2wKK3VuaXZlcnNhbCBuZXdsaW5lcyBtb2RlLgorCitidWZmZXJpbmcgaXMgYW4gb3B0aW9uYWwgaW50ZWdlciB1c2VkIHRvIHNldCB0aGUgYnVmZmVyaW5nIHBvbGljeS4KK1Bhc3MgMCB0byBzd2l0Y2ggYnVmZmVyaW5nIG9mZiAob25seSBhbGxvd2VkIGluIGJpbmFyeSBtb2RlKSwgMSB0byBzZWxlY3QKK2xpbmUgYnVmZmVyaW5nIChvbmx5IHVzYWJsZSBpbiB0ZXh0IG1vZGUpLCBhbmQgYW4gaW50ZWdlciA+IDEgdG8gaW5kaWNhdGUKK3RoZSBzaXplIG9mIGEgZml4ZWQtc2l6ZSBjaHVuayBidWZmZXIuICBXaGVuIG5vIGJ1ZmZlcmluZyBhcmd1bWVudCBpcworZ2l2ZW4sIHRoZSBkZWZhdWx0IGJ1ZmZlcmluZyBwb2xpY3kgd29ya3MgYXMgZm9sbG93czoKKworKiBCaW5hcnkgZmlsZXMgYXJlIGJ1ZmZlcmVkIGluIGZpeGVkLXNpemUgY2h1bmtzOyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyCisgIGlzIGNob3NlbiB1c2luZyBhIGhldXJpc3RpYyB0cnlpbmcgdG8gZGV0ZXJtaW5lIHRoZSB1bmRlcmx5aW5nIGRldmljZSdzCisgICJibG9jayBzaXplIiBhbmQgZmFsbGluZyBiYWNrIG9uIGBpby5ERUZBVUxUX0JVRkZFUl9TSVpFYC4KKyAgT24gbWFueSBzeXN0ZW1zLCB0aGUgYnVmZmVyIHdpbGwgdHlwaWNhbGx5IGJlIDQwOTYgb3IgODE5MiBieXRlcyBsb25nLgorCisqICJJbnRlcmFjdGl2ZSIgdGV4dCBmaWxlcyAoZmlsZXMgZm9yIHdoaWNoIGlzYXR0eSgpIHJldHVybnMgVHJ1ZSkKKyAgdXNlIGxpbmUgYnVmZmVyaW5nLiAgT3RoZXIgdGV4dCBmaWxlcyB1c2UgdGhlIHBvbGljeSBkZXNjcmliZWQgYWJvdmUKKyAgZm9yIGJpbmFyeSBmaWxlcy4KKworZW5jb2RpbmcgaXMgdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHVzZWQgdG8gZGVjb2RlIG9yIGVuY29kZSB0aGUKK2ZpbGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0ZXh0IG1vZGUuIFRoZSBkZWZhdWx0IGVuY29kaW5nIGlzCitwbGF0Zm9ybSBkZXBlbmRlbnQsIGJ1dCBhbnkgZW5jb2Rpbmcgc3VwcG9ydGVkIGJ5IFB5dGhvbiBjYW4gYmUKK3Bhc3NlZC4gIFNlZSB0aGUgY29kZWNzIG1vZHVsZSBmb3IgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGVuY29kaW5ncy4KKworZXJyb3JzIGlzIGFuIG9wdGlvbmFsIHN0cmluZyB0aGF0IHNwZWNpZmllcyBob3cgZW5jb2RpbmcgZXJyb3JzIGFyZSB0bworYmUgaGFuZGxlZC0tLXRoaXMgYXJndW1lbnQgc2hvdWxkIG5vdCBiZSB1c2VkIGluIGJpbmFyeSBtb2RlLiBQYXNzCisnc3RyaWN0JyB0byByYWlzZSBhIFZhbHVlRXJyb3IgZXhjZXB0aW9uIGlmIHRoZXJlIGlzIGFuIGVuY29kaW5nIGVycm9yCisodGhlIGRlZmF1bHQgb2YgTm9uZSBoYXMgdGhlIHNhbWUgZWZmZWN0KSwgb3IgcGFzcyAnaWdub3JlJyB0byBpZ25vcmUKK2Vycm9ycy4gKE5vdGUgdGhhdCBpZ25vcmluZyBlbmNvZGluZyBlcnJvcnMgY2FuIGxlYWQgdG8gZGF0YSBsb3NzLikKK1NlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgY29kZWNzLnJlZ2lzdGVyIG9yIHJ1biAnaGVscChjb2RlY3MuQ29kZWMpJworZm9yIGEgbGlzdCBvZiB0aGUgcGVybWl0dGVkIGVuY29kaW5nIGVycm9yIHN0cmluZ3MuCisKK25ld2xpbmUgY29udHJvbHMgaG93IHVuaXZlcnNhbCBuZXdsaW5lcyB3b3JrcyAoaXQgb25seSBhcHBsaWVzIHRvIHRleHQKK21vZGUpLiBJdCBjYW4gYmUgTm9uZSwgJycsICdcbicsICdccicsIGFuZCAnXHJcbicuICBJdCB3b3JrcyBhcworZm9sbG93czoKKworKiBPbiBpbnB1dCwgaWYgbmV3bGluZSBpcyBOb25lLCB1bml2ZXJzYWwgbmV3bGluZXMgbW9kZSBpcworICBlbmFibGVkLiBMaW5lcyBpbiB0aGUgaW5wdXQgY2FuIGVuZCBpbiAnXG4nLCAnXHInLCBvciAnXHJcbicsIGFuZAorICB0aGVzZSBhcmUgdHJhbnNsYXRlZCBpbnRvICdcbicgYmVmb3JlIGJlaW5nIHJldHVybmVkIHRvIHRoZQorICBjYWxsZXIuIElmIGl0IGlzICcnLCB1bml2ZXJzYWwgbmV3bGluZSBtb2RlIGlzIGVuYWJsZWQsIGJ1dCBsaW5lCisgIGVuZGluZ3MgYXJlIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLiBJZiBpdCBoYXMgYW55IG9mCisgIHRoZSBvdGhlciBsZWdhbCB2YWx1ZXMsIGlucHV0IGxpbmVzIGFyZSBvbmx5IHRlcm1pbmF0ZWQgYnkgdGhlIGdpdmVuCisgIHN0cmluZywgYW5kIHRoZSBsaW5lIGVuZGluZyBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyIHVudHJhbnNsYXRlZC4KKworKiBPbiBvdXRwdXQsIGlmIG5ld2xpbmUgaXMgTm9uZSwgYW55ICdcbicgY2hhcmFjdGVycyB3cml0dGVuIGFyZQorICB0cmFuc2xhdGVkIHRvIHRoZSBzeXN0ZW0gZGVmYXVsdCBsaW5lIHNlcGFyYXRvciwgb3MubGluZXNlcC4gSWYKKyAgbmV3bGluZSBpcyAnJyBvciAnXG4nLCBubyB0cmFuc2xhdGlvbiB0YWtlcyBwbGFjZS4gSWYgbmV3bGluZSBpcyBhbnkKKyAgb2YgdGhlIG90aGVyIGxlZ2FsIHZhbHVlcywgYW55ICdcbicgY2hhcmFjdGVycyB3cml0dGVuIGFyZSB0cmFuc2xhdGVkCisgIHRvIHRoZSBnaXZlbiBzdHJpbmcuCisKK0lmIGNsb3NlZmQgaXMgRmFsc2UsIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciB3aWxsIGJlIGtlcHQgb3Blbgord2hlbiB0aGUgZmlsZSBpcyBjbG9zZWQuIFRoaXMgZG9lcyBub3Qgd29yayB3aGVuIGEgZmlsZSBuYW1lIGlzIGdpdmVuCithbmQgbXVzdCBiZSBUcnVlIGluIHRoYXQgY2FzZS4KKworQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5IHBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlCit1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGUgb2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnkKK2NhbGxpbmcgKm9wZW5lciogd2l0aCAoKmZpbGUqLCAqZmxhZ3MqKS4gKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlbgorZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nIG9zLm9wZW4gYXMgKm9wZW5lciogcmVzdWx0cyBpbiBmdW5jdGlvbmFsaXR5CitzaW1pbGFyIHRvIHBhc3NpbmcgTm9uZSkuCisKK29wZW4oKSByZXR1cm5zIGEgZmlsZSBvYmplY3Qgd2hvc2UgdHlwZSBkZXBlbmRzIG9uIHRoZSBtb2RlLCBhbmQKK3Rocm91Z2ggd2hpY2ggdGhlIHN0YW5kYXJkIGZpbGUgb3BlcmF0aW9ucyBzdWNoIGFzIHJlYWRpbmcgYW5kIHdyaXRpbmcKK2FyZSBwZXJmb3JtZWQuIFdoZW4gb3BlbigpIGlzIHVzZWQgdG8gb3BlbiBhIGZpbGUgaW4gYSB0ZXh0IG1vZGUgKCd3JywKKydyJywgJ3d0JywgJ3J0JywgZXRjLiksIGl0IHJldHVybnMgYSBUZXh0SU9XcmFwcGVyLiBXaGVuIHVzZWQgdG8gb3BlbgorYSBmaWxlIGluIGEgYmluYXJ5IG1vZGUsIHRoZSByZXR1cm5lZCBjbGFzcyB2YXJpZXM6IGluIHJlYWQgYmluYXJ5Cittb2RlLCBpdCByZXR1cm5zIGEgQnVmZmVyZWRSZWFkZXI7IGluIHdyaXRlIGJpbmFyeSBhbmQgYXBwZW5kIGJpbmFyeQorbW9kZXMsIGl0IHJldHVybnMgYSBCdWZmZXJlZFdyaXRlciwgYW5kIGluIHJlYWQvd3JpdGUgbW9kZSwgaXQgcmV0dXJucworYSBCdWZmZXJlZFJhbmRvbS4KKworSXQgaXMgYWxzbyBwb3NzaWJsZSB0byB1c2UgYSBzdHJpbmcgb3IgYnl0ZWFycmF5IGFzIGEgZmlsZSBmb3IgYm90aAorcmVhZGluZyBhbmQgd3JpdGluZy4gRm9yIHN0cmluZ3MgU3RyaW5nSU8gY2FuIGJlIHVzZWQgbGlrZSBhIGZpbGUKK29wZW5lZCBpbiBhIHRleHQgbW9kZSwgYW5kIGZvciBieXRlcyBhIEJ5dGVzSU8gY2FuIGJlIHVzZWQgbGlrZSBhIGZpbGUKK29wZW5lZCBpbiBhIGJpbmFyeSBtb2RlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotaW9fb3BlbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX2lvX29wZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSwgY29uc3QgY2hhciAqbW9kZSwKKyAgICAgICAgICAgICAgaW50IGJ1ZmZlcmluZywgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmV3bGluZSwgaW50IGNsb3NlZmQsIFB5T2JqZWN0ICpvcGVuZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzYxNWQwZDc0NmViMTRkMiBpbnB1dD1mNGUxY2E3NTIyMzk4N2JjXSovCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7ImZpbGUiLCAibW9kZSIsICJidWZmZXJpbmciLAotICAgICAgICAgICAgICAgICAgICAgICJlbmNvZGluZyIsICJlcnJvcnMiLCAibmV3bGluZSIsCi0gICAgICAgICAgICAgICAgICAgICAgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07Ci0gICAgUHlPYmplY3QgKmZpbGUsICpvcGVuZXIgPSBQeV9Ob25lOwotICAgIGNoYXIgKm1vZGUgPSAiciI7Ci0gICAgaW50IGJ1ZmZlcmluZyA9IC0xLCBjbG9zZWZkID0gMTsKLSAgICBjaGFyICplbmNvZGluZyA9IE5VTEwsICplcnJvcnMgPSBOVUxMLCAqbmV3bGluZSA9IE5VTEw7CiAgICAgdW5zaWduZWQgaTsKIAogICAgIGludCBjcmVhdGluZyA9IDAsIHJlYWRpbmcgPSAwLCB3cml0aW5nID0gMCwgYXBwZW5kaW5nID0gMCwgdXBkYXRpbmcgPSAwOwpAQCAtMjM3LDE4ICsyNDIsMTEgQEAKIAogICAgIFB5T2JqZWN0ICpyYXcsICptb2Rlb2JqID0gTlVMTCwgKmJ1ZmZlciwgKndyYXBwZXIsICpyZXN1bHQgPSBOVUxMOwogCisgICAgX1B5X0lERU5USUZJRVIoX2Jsa3NpemUpOwogICAgIF9QeV9JREVOVElGSUVSKGlzYXR0eSk7Ci0gICAgX1B5X0lERU5USUZJRVIoZmlsZW5vKTsKICAgICBfUHlfSURFTlRJRklFUihtb2RlKTsKICAgICBfUHlfSURFTlRJRklFUihjbG9zZSk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xzaXp6emlPOm9wZW4iLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpbGUsICZtb2RlLCAmYnVmZmVyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbmNvZGluZywgJmVycm9ycywgJm5ld2xpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNsb3NlZmQsICZvcGVuZXIpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGZpbGUpICYmCiAJIVB5Qnl0ZXNfQ2hlY2soZmlsZSkgJiYKIAkhUHlOdW1iZXJfQ2hlY2soZmlsZSkpIHsKQEAgLTM4MCwyNCArMzc4LDE0IEBACiAgICAgICAgIGxpbmVfYnVmZmVyaW5nID0gMDsKIAogICAgIGlmIChidWZmZXJpbmcgPCAwKSB7Ci0gICAgICAgIGJ1ZmZlcmluZyA9IERFRkFVTFRfQlVGRkVSX1NJWkU7Ci0jaWZkZWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CTEtTSVpFCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cnVjdCBzdGF0IHN0OwotICAgICAgICAgICAgbG9uZyBmaWxlbm87Ci0gICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2ZpbGVubywgTlVMTCk7Ci0gICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLQotICAgICAgICAgICAgZmlsZW5vID0gUHlMb25nX0FzTG9uZyhyZXMpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7Ci0gICAgICAgICAgICBpZiAoZmlsZW5vID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLQotICAgICAgICAgICAgaWYgKGZzdGF0KGZpbGVubywgJnN0KSA+PSAwICYmIHN0LnN0X2Jsa3NpemUgPiAxKQotICAgICAgICAgICAgICAgIGJ1ZmZlcmluZyA9IHN0LnN0X2Jsa3NpemU7Ci0gICAgICAgIH0KLSNlbmRpZgorICAgICAgICBQeU9iamVjdCAqYmxrc2l6ZV9vYmo7CisgICAgICAgIGJsa3NpemVfb2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZChyYXcsICZQeUlkX19ibGtzaXplKTsKKyAgICAgICAgaWYgKGJsa3NpemVfb2JqID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBidWZmZXJpbmcgPSBQeUxvbmdfQXNMb25nKGJsa3NpemVfb2JqKTsKKyAgICAgICAgUHlfREVDUkVGKGJsa3NpemVfb2JqKTsKKyAgICAgICAgaWYgKGJ1ZmZlcmluZyA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgaWYgKGJ1ZmZlcmluZyA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCkBAIC02MjEsOCArNjA5LDEwIEBACiAgKiBNb2R1bGUgZGVmaW5pdGlvbgogICovCiAKKyNpbmNsdWRlICJjbGluaWMvX2lvbW9kdWxlLmMuaCIKKwogc3RhdGljIFB5TWV0aG9kRGVmIG1vZHVsZV9tZXRob2RzW10gPSB7Ci0gICAgeyJvcGVuIiwgKFB5Q0Z1bmN0aW9uKWlvX29wZW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvcGVuX2RvY30sCisgICAgX0lPX09QRU5fTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEx9CiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuaCBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5oCmluZGV4IDE0MGYyNjAuLjBjNmVhZTIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5oCisrKyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5oCkBAIC03NCw3ICs3NCw3IEBACiAgKiBPZmZzZXQgdHlwZSBmb3IgcG9zaXRpb25pbmcuCiAgKi8KIAotLyogUHJpbnRpbmcgYSB2YXJpYWJsZSBvZiB0eXBlIG9mZl90ICh3aXRoIGUuZy4sIFB5U3RyaW5nX0Zyb21Gb3JtYXQpCisvKiBQcmludGluZyBhIHZhcmlhYmxlIG9mIHR5cGUgb2ZmX3QgKHdpdGggZS5nLiwgUHlVbmljb2RlX0Zyb21Gb3JtYXQpCiAgICBjb3JyZWN0bHkgYW5kIHdpdGhvdXQgcHJvZHVjaW5nIGNvbXBpbGVyIHdhcm5pbmdzIGlzIHN1cnByaXNpbmdseSBwYWluZnVsLgogICAgV2UgaWRlbnRpZnkgYW4gaW50ZWdlciB0eXBlIHdob3NlIHNpemUgbWF0Y2hlcyBvZmZfdCBhbmQgdGhlbjogKDEpIGNhc3QgdGhlCiAgICBvZmZfdCB0byB0aGF0IGludGVnZXIgdHlwZSBhbmQgKDIpIHVzZSB0aGUgYXBwcm9wcmlhdGUgY29udmVyc2lvbgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jIGIvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jCmluZGV4IDM2NWJiODUuLmFlNGFmOWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYworKysgYi9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMKQEAgLTEzLDYgKzEzLDI0IEBACiAjaW5jbHVkZSAicHl0aHJlYWQuaCIKICNpbmNsdWRlICJfaW9tb2R1bGUuaCIKIAorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9pbworY2xhc3MgX2lvLl9CdWZmZXJlZElPQmFzZSAiUHlPYmplY3QgKiIgIiZQeUJ1ZmZlcmVkSU9CYXNlX1R5cGUiCitjbGFzcyBfaW8uX0J1ZmZlcmVkICJidWZmZXJlZCAqIiAiJlB5QnVmZmVyZWRJT0Jhc2VfVHlwZSIKK2NsYXNzIF9pby5CdWZmZXJlZFJlYWRlciAiYnVmZmVyZWQgKiIgIiZQeUJ1ZmZlcmVkUmVhZGVyX1R5cGUiCitjbGFzcyBfaW8uQnVmZmVyZWRXcml0ZXIgImJ1ZmZlcmVkICoiICImUHlCdWZmZXJlZFdyaXRlcl9UeXBlIgorY2xhc3MgX2lvLkJ1ZmZlcmVkUldQYWlyICJyd3BhaXIgKiIgIiZQeUJ1ZmZlcmVkUldQYWlyX1R5cGUiCitjbGFzcyBfaW8uQnVmZmVyZWRSYW5kb20gImJ1ZmZlcmVkICoiICImUHlCdWZmZXJlZFJhbmRvbV9UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NTk0NjBiOWM1NjM5OTg0ZF0qLworCisvKltweXRob24gaW5wdXRdCitjbGFzcyBpb19zc2l6ZV90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ1B5X3NzaXplX3QnCisgICAgY29udmVydGVyID0gJ19QeUlPX0NvbnZlcnRTc2l6ZV90JworW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZDBhODExZDNjYmZkMWIzM10qLworCiBfUHlfSURFTlRJRklFUihjbG9zZSk7CiBfUHlfSURFTlRJRklFUihfZGVhbGxvY193YXJuKTsKIF9QeV9JREVOVElGSUVSKGZsdXNoKTsKQEAgLTI0LDYgKzQyLDcgQEAKIF9QeV9JREVOVElGSUVSKHJlYWQxKTsKIF9QeV9JREVOVElGSUVSKHJlYWRhYmxlKTsKIF9QeV9JREVOVElGSUVSKHJlYWRpbnRvKTsKK19QeV9JREVOVElGSUVSKHJlYWRpbnRvMSk7CiBfUHlfSURFTlRJRklFUih3cml0YWJsZSk7CiBfUHlfSURFTlRJRklFUih3cml0ZSk7CiAKQEAgLTQ3LDQ1ICs2Niw2MyBAQAogICAgICk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWZmZXJlZGlvYmFzZV9yZWFkaW50byhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfYnVmZmVyZWRpb2Jhc2VfcmVhZGludG9fZ2VuZXJpYyhQeU9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIsIGNoYXIgcmVhZGludG8xKQogewotICAgIFB5X2J1ZmZlciBidWY7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlPYmplY3QgKmRhdGE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIncqOnJlYWRpbnRvIiwgJmJ1ZikpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgZGF0YSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfcmVhZCwgIm4iLCBidWYubGVuKTsKKyAgICBkYXRhID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRpbnRvMSA/ICZQeUlkX3JlYWQxIDogJlB5SWRfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibiIsIGJ1ZmZlci0+bGVuKTsKICAgICBpZiAoZGF0YSA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOworICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghUHlCeXRlc19DaGVjayhkYXRhKSkgewogICAgICAgICBQeV9ERUNSRUYoZGF0YSk7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZWFkKCkgc2hvdWxkIHJldHVybiBieXRlcyIpOwotICAgICAgICBnb3RvIGVycm9yOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBsZW4gPSBQeV9TSVpFKGRhdGEpOwotICAgIGlmIChsZW4gPiBidWYubGVuKSB7CisgICAgaWYgKGxlbiA+IGJ1ZmZlci0+bGVuKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgInJlYWQoKSByZXR1cm5lZCB0b28gbXVjaCBkYXRhOiAiCiAgICAgICAgICAgICAgICAgICAgICAiJXpkIGJ5dGVzIHJlcXVlc3RlZCwgJXpkIHJldHVybmVkIiwKLSAgICAgICAgICAgICAgICAgICAgIGJ1Zi5sZW4sIGxlbik7CisgICAgICAgICAgICAgICAgICAgICBidWZmZXItPmxlbiwgbGVuKTsKICAgICAgICAgUHlfREVDUkVGKGRhdGEpOwotICAgICAgICBnb3RvIGVycm9yOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbWVtY3B5KGJ1Zi5idWYsIFB5Qnl0ZXNfQVNfU1RSSU5HKGRhdGEpLCBsZW4pOworICAgIG1lbWNweShidWZmZXItPmJ1ZiwgUHlCeXRlc19BU19TVFJJTkcoZGF0YSksIGxlbik7CiAKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgIFB5X0RFQ1JFRihkYXRhKTsKIAogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QobGVuKTsKK30KIAotICBlcnJvcjoKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwotICAgIHJldHVybiBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2lvLl9CdWZmZXJlZElPQmFzZS5yZWFkaW50bworICAgIGJ1ZmZlcjogUHlfYnVmZmVyKGFjY2VwdD17cndidWZmZXJ9KQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG9faW1wbChQeU9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGM4Y2RhNjY4NGFmODAzOCBpbnB1dD0wMGE2YjlhMzhmMjk4MzBhXSovCit7CisgICAgcmV0dXJuIF9idWZmZXJlZGlvYmFzZV9yZWFkaW50b19nZW5lcmljKHNlbGYsIGJ1ZmZlciwgMCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fQnVmZmVyZWRJT0Jhc2UucmVhZGludG8xCisgICAgYnVmZmVyOiBQeV9idWZmZXIoYWNjZXB0PXtyd2J1ZmZlcn0pCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZElPQmFzZV9yZWFkaW50bzFfaW1wbChQeU9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzU4NjIzZTRmZDJiNjlkMyBpbnB1dD1lYmFkNzViNGFhZGZiOWJlXSovCit7CisgICAgcmV0dXJuIF9idWZmZXJlZGlvYmFzZV9yZWFkaW50b19nZW5lcmljKHNlbGYsIGJ1ZmZlciwgMSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC05NywxNCArMTM0LDE4IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUihidWZmZXJlZGlvYmFzZV9kZXRhY2hfZG9jLAotICAgICJEaXNjb25uZWN0IHRoaXMgYnVmZmVyIGZyb20gaXRzIHVuZGVybHlpbmcgcmF3IHN0cmVhbSBhbmQgcmV0dXJuIGl0LlxuIgotICAgICJcbiIKLSAgICAiQWZ0ZXIgdGhlIHJhdyBzdHJlYW0gaGFzIGJlZW4gZGV0YWNoZWQsIHRoZSBidWZmZXIgaXMgaW4gYW4gdW51c2FibGVcbiIKLSAgICAic3RhdGUuXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fQnVmZmVyZWRJT0Jhc2UuZGV0YWNoCisKK0Rpc2Nvbm5lY3QgdGhpcyBidWZmZXIgZnJvbSBpdHMgdW5kZXJseWluZyByYXcgc3RyZWFtIGFuZCByZXR1cm4gaXQuCisKK0FmdGVyIHRoZSByYXcgc3RyZWFtIGhhcyBiZWVuIGRldGFjaGVkLCB0aGUgYnVmZmVyIGlzIGluIGFuIHVudXNhYmxlCitzdGF0ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1ZmZlcmVkaW9iYXNlX2RldGFjaChQeU9iamVjdCAqc2VsZikKK19pb19fQnVmZmVyZWRJT0Jhc2VfZGV0YWNoX2ltcGwoUHlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzU0OTc3YzhkMTBlZDg4YyBpbnB1dD04MjI0MjdmYjU4ZmU0MTY5XSovCiB7CiAgICAgcmV0dXJuIGJ1ZmZlcmVkaW9iYXNlX3Vuc3VwcG9ydGVkKCJkZXRhY2giKTsKIH0KQEAgLTE2Miw2OCArMjAzLDYgQEAKIH0KIAogCi1zdGF0aWMgUHlNZXRob2REZWYgYnVmZmVyZWRpb2Jhc2VfbWV0aG9kc1tdID0gewotICAgIHsiZGV0YWNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkaW9iYXNlX2RldGFjaCwgTUVUSF9OT0FSR1MsIGJ1ZmZlcmVkaW9iYXNlX2RldGFjaF9kb2N9LAotICAgIHsicmVhZCIsIGJ1ZmZlcmVkaW9iYXNlX3JlYWQsIE1FVEhfVkFSQVJHUywgYnVmZmVyZWRpb2Jhc2VfcmVhZF9kb2N9LAotICAgIHsicmVhZDEiLCBidWZmZXJlZGlvYmFzZV9yZWFkMSwgTUVUSF9WQVJBUkdTLCBidWZmZXJlZGlvYmFzZV9yZWFkMV9kb2N9LAotICAgIHsicmVhZGludG8iLCBidWZmZXJlZGlvYmFzZV9yZWFkaW50bywgTUVUSF9WQVJBUkdTLCBOVUxMfSwKLSAgICB7IndyaXRlIiwgYnVmZmVyZWRpb2Jhc2Vfd3JpdGUsIE1FVEhfVkFSQVJHUywgYnVmZmVyZWRpb2Jhc2Vfd3JpdGVfZG9jfSwKLSAgICB7TlVMTCwgTlVMTH0KLX07Ci0KLVB5VHlwZU9iamVjdCBQeUJ1ZmZlcmVkSU9CYXNlX1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIl9pby5fQnVmZmVyZWRJT0Jhc2UiLCAgICAgIC8qdHBfbmFtZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYmFzaWNzaXplKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQotICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgIC8qdHBfZmxhZ3MqLwotICAgIGJ1ZmZlcmVkaW9iYXNlX2RvYywgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIGJ1ZmZlcmVkaW9iYXNlX21ldGhvZHMsICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCi0gICAgJlB5SU9CYXNlX1R5cGUsICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3ViY2xhc3NlcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdmVyc2lvbl90YWcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KLX07Ci0KLQogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKIApAQCAtMzE4LDcgKzI5Nyw3IEBACiAgICAgICAgICAqIE5vdGUgdGhhdCBub24tZGFlbW9uIHRocmVhZHMgaGF2ZSBhbHJlYWR5IGV4aXRlZCBoZXJlLCBzbyB0aGlzCiAgICAgICAgICAqIHNob3VsZG4ndCBhZmZlY3QgY2FyZWZ1bGx5IHdyaXR0ZW4gdGhyZWFkZWQgSS9PIGNvZGUuCiAgICAgICAgICAqLwotICAgICAgICBzdCA9IFB5VGhyZWFkX2FjcXVpcmVfbG9ja190aW1lZChzZWxmLT5sb2NrLCAxZTYsIDApOworICAgICAgICBzdCA9IFB5VGhyZWFkX2FjcXVpcmVfbG9ja190aW1lZChzZWxmLT5sb2NrLCAoUFlfVElNRU9VVF9UKTFlNiwgMCk7CiAgICAgfQogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlbGF4X2xvY2tpbmcgJiYgc3QgIT0gUFlfTE9DS19BQ1FVSVJFRCkgewpAQCAtNDQ0LDcgKzQyMyw3IEBACiB7CiAgICAgUHlfc3NpemVfdCByZXM7CiAKLSAgICByZXMgPSBzaXplb2YoYnVmZmVyZWQpOworICAgIHJlcyA9IF9QeU9iamVjdF9TSVpFKFB5X1RZUEUoc2VsZikpOwogICAgIGlmIChzZWxmLT5idWZmZXIpCiAgICAgICAgIHJlcyArPSBzZWxmLT5idWZmZXJfc2l6ZTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7CkBAIC02ODMsMTEgKzY2Miw3IEBACiBfc2V0X0Jsb2NraW5nSU9FcnJvcihjaGFyICptc2csIFB5X3NzaXplX3Qgd3JpdHRlbikKIHsKICAgICBQeU9iamVjdCAqZXJyOwotI2lmZGVmIFB5X0RFQlVHCi0gICAgLyogaW4gZGVidWcgbW9kZSwgUHlFdmFsX0V2YWxGcmFtZUV4KCkgZmFpbHMgd2l0aCBhbiBhc3NlcnRpb24gZXJyb3IKLSAgICAgICBpZiBhbiBleGNlcHRpb24gaXMgc2V0IHdoZW4gaXQgaXMgY2FsbGVkICovCiAgICAgUHlFcnJfQ2xlYXIoKTsKLSNlbmRpZgogICAgIGVyciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihQeUV4Y19CbG9ja2luZ0lPRXJyb3IsICJpc24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJubywgbXNnLCB3cml0dGVuKTsKICAgICBpZiAoZXJyKQpAQCAtODgyLDE5ICs4NTcsMjIgQEAKICAgICByZXR1cm4gcmVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uX0J1ZmZlcmVkLnBlZWsKKyAgICBzaXplOiBQeV9zc2l6ZV90ID0gMAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnVmZmVyZWRfcGVlayhidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fX0J1ZmZlcmVkX3BlZWtfaW1wbChidWZmZXJlZCAqc2VsZiwgUHlfc3NpemVfdCBzaXplKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJhN2EwOTdjYTIzMDEwMmIgaW5wdXQ9MzdmZmI5N2QwNmZmNGFkYl0qLwogewotICAgIFB5X3NzaXplX3QgbiA9IDA7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKQogICAgIENIRUNLX0NMT1NFRChzZWxmLCAicGVlayBvZiBjbG9zZWQgZmlsZSIpCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnBlZWsiLCAmbikpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCiAgICAgaWYgKCFFTlRFUl9CVUZGRVJFRChzZWxmKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTkxMSwxNiArODg5LDE5IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLl9CdWZmZXJlZC5yZWFkCisgICAgc2l6ZSBhcyBuOiBpb19zc2l6ZV90ID0gLTEKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWZmZXJlZF9yZWFkKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fQnVmZmVyZWRfcmVhZF9pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeV9zc2l6ZV90IG4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjQxYzc4YmIxNWI5YmJlOSBpbnB1dD1jMDkzOWVjN2Y5ZTkzNTRmXSovCiB7Ci0gICAgUHlfc3NpemVfdCBuID0gLTE7CiAgICAgUHlPYmplY3QgKnJlczsKIAogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsICZfUHlJT19Db252ZXJ0U3NpemVfdCwgJm4pKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KICAgICBpZiAobiA8IC0xKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQgbGVuZ3RoIG11c3QgYmUgcG9zaXRpdmUgb3IgLTEiKTsKQEAgLTk0OSwxNyArOTMwLDIwIEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLl9CdWZmZXJlZC5yZWFkMQorICAgIHNpemUgYXMgbjogUHlfc3NpemVfdAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ1ZmZlcmVkX3JlYWQxKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fQnVmZmVyZWRfcmVhZDFfaW1wbChidWZmZXJlZCAqc2VsZiwgUHlfc3NpemVfdCBuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJjYzRmYjRlNTRkMTAzYTMgaW5wdXQ9OGQyODY5YzE4Yjk4MzE4NF0qLwogewotICAgIFB5X3NzaXplX3QgbiwgaGF2ZSwgcjsKKyAgICBQeV9zc2l6ZV90IGhhdmUsIHI7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibjpyZWFkMSIsICZuKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAobiA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZCBsZW5ndGggbXVzdCBiZSBwb3NpdGl2ZSIpOwpAQCAtMTAwMywzMiArOTg3LDI3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWZmZXJlZF9yZWFkaW50byhidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfYnVmZmVyZWRfcmVhZGludG9fZ2VuZXJpYyhidWZmZXJlZCAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIsIGNoYXIgcmVhZGludG8xKQogewotICAgIFB5X2J1ZmZlciBidWY7CiAgICAgUHlfc3NpemVfdCBuLCB3cml0dGVuID0gMCwgcmVtYWluaW5nOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZikKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidyo6cmVhZGludG8iLCAmYnVmKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBuID0gUHlfU0FGRV9ET1dOQ0FTVChSRUFEQUhFQUQoc2VsZiksIFB5X29mZl90LCBQeV9zc2l6ZV90KTsKICAgICBpZiAobiA+IDApIHsKLSAgICAgICAgaWYgKG4gPj0gYnVmLmxlbikgewotICAgICAgICAgICAgbWVtY3B5KGJ1Zi5idWYsIHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgYnVmLmxlbik7Ci0gICAgICAgICAgICBzZWxmLT5wb3MgKz0gYnVmLmxlbjsKLSAgICAgICAgICAgIHJlcyA9IFB5TG9uZ19Gcm9tU3NpemVfdChidWYubGVuKTsKLSAgICAgICAgICAgIGdvdG8gZW5kX3VubG9ja2VkOworICAgICAgICBpZiAobiA+PSBidWZmZXItPmxlbikgeworICAgICAgICAgICAgbWVtY3B5KGJ1ZmZlci0+YnVmLCBzZWxmLT5idWZmZXIgKyBzZWxmLT5wb3MsIGJ1ZmZlci0+bGVuKTsKKyAgICAgICAgICAgIHNlbGYtPnBvcyArPSBidWZmZXItPmxlbjsKKyAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoYnVmZmVyLT5sZW4pOwogICAgICAgICB9Ci0gICAgICAgIG1lbWNweShidWYuYnVmLCBzZWxmLT5idWZmZXIgKyBzZWxmLT5wb3MsIG4pOworICAgICAgICBtZW1jcHkoYnVmZmVyLT5idWYsIHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgbik7CiAgICAgICAgIHNlbGYtPnBvcyArPSBuOwogICAgICAgICB3cml0dGVuID0gbjsKICAgICB9CiAKICAgICBpZiAoIUVOVEVSX0JVRkZFUkVEKHNlbGYpKQotICAgICAgICBnb3RvIGVuZF91bmxvY2tlZDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoc2VsZi0+d3JpdGFibGUpIHsKICAgICAgICAgcmVzID0gYnVmZmVyZWRfZmx1c2hfYW5kX3Jld2luZF91bmxvY2tlZChzZWxmKTsKQEAgLTEwNDAsMjYgKzEwMTksMzIgQEAKICAgICBfYnVmZmVyZWRyZWFkZXJfcmVzZXRfYnVmKHNlbGYpOwogICAgIHNlbGYtPnBvcyA9IDA7CiAKLSAgICBmb3IgKHJlbWFpbmluZyA9IGJ1Zi5sZW4gLSB3cml0dGVuOworICAgIGZvciAocmVtYWluaW5nID0gYnVmZmVyLT5sZW4gLSB3cml0dGVuOwogICAgICAgICAgcmVtYWluaW5nID4gMDsKICAgICAgICAgIHdyaXR0ZW4gKz0gbiwgcmVtYWluaW5nIC09IG4pIHsKICAgICAgICAgLyogSWYgcmVtYWluaW5nIGJ5dGVzIGlzIGxhcmdlciB0aGFuIGludGVybmFsIGJ1ZmZlciBzaXplLCBjb3B5CiAgICAgICAgICAqIGRpcmVjdGx5IGludG8gY2FsbGVyJ3MgYnVmZmVyLiAqLwogICAgICAgICBpZiAocmVtYWluaW5nID4gc2VsZi0+YnVmZmVyX3NpemUpIHsKLSAgICAgICAgICAgIG4gPSBfYnVmZmVyZWRyZWFkZXJfcmF3X3JlYWQoc2VsZiwgKGNoYXIgKikgYnVmLmJ1ZiArIHdyaXR0ZW4sCisgICAgICAgICAgICBuID0gX2J1ZmZlcmVkcmVhZGVyX3Jhd19yZWFkKHNlbGYsIChjaGFyICopIGJ1ZmZlci0+YnVmICsgd3JpdHRlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIHsKKworICAgICAgICAvKiBJbiByZWFkaW50bzEgbW9kZSwgd2UgZG8gbm90IHdhbnQgdG8gZmlsbCB0aGUgaW50ZXJuYWwKKyAgICAgICAgICAgYnVmZmVyIGlmIHdlIGFscmVhZHkgaGF2ZSBzb21lIGRhdGEgdG8gcmV0dXJuICovCisgICAgICAgIGVsc2UgaWYgKCEocmVhZGludG8xICYmIHdyaXR0ZW4pKSB7CiAgICAgICAgICAgICBuID0gX2J1ZmZlcmVkcmVhZGVyX2ZpbGxfYnVmZmVyKHNlbGYpOwogICAgICAgICAgICAgaWYgKG4gPiAwKSB7CiAgICAgICAgICAgICAgICAgaWYgKG4gPiByZW1haW5pbmcpCiAgICAgICAgICAgICAgICAgICAgIG4gPSByZW1haW5pbmc7Ci0gICAgICAgICAgICAgICAgbWVtY3B5KChjaGFyICopIGJ1Zi5idWYgKyB3cml0dGVuLAorICAgICAgICAgICAgICAgIG1lbWNweSgoY2hhciAqKSBidWZmZXItPmJ1ZiArIHdyaXR0ZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgbik7CiAgICAgICAgICAgICAgICAgc2VsZi0+cG9zICs9IG47CiAgICAgICAgICAgICAgICAgY29udGludWU7IC8qIHNob3J0IGNpcmN1aXQgKi8KICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBuID0gMDsKKwogICAgICAgICBpZiAobiA9PSAwIHx8IChuID09IC0yICYmIHdyaXR0ZW4gPiAwKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobiA8IDApIHsKQEAgLTEwNjksMTYgKzEwNTQsNDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICB9CisKKyAgICAgICAgLyogQXQgbW9zdCBvbmUgcmVhZCBpbiByZWFkaW50bzEgbW9kZSAqLworICAgICAgICBpZiAocmVhZGludG8xKSB7CisgICAgICAgICAgICB3cml0dGVuICs9IG47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KICAgICByZXMgPSBQeUxvbmdfRnJvbVNzaXplX3Qod3JpdHRlbik7CiAKIGVuZDoKICAgICBMRUFWRV9CVUZGRVJFRChzZWxmKTsKLWVuZF91bmxvY2tlZDoKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fQnVmZmVyZWQucmVhZGludG8KKyAgICBidWZmZXI6IFB5X2J1ZmZlcihhY2NlcHQ9e3J3YnVmZmVyfSkKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3JlYWRpbnRvX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJjYjM3NjU4MGIxZDgxNzAgaW5wdXQ9ZWQ2Yjk4YjdhMjBhMzAwOF0qLworeworICAgIHJldHVybiBfYnVmZmVyZWRfcmVhZGludG9fZ2VuZXJpYyhzZWxmLCBidWZmZXIsIDApOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX0J1ZmZlcmVkLnJlYWRpbnRvMQorICAgIGJ1ZmZlcjogUHlfYnVmZmVyKGFjY2VwdD17cndidWZmZXJ9KQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcmVhZGludG8xX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZlNWM2YWM1ODY4MjA1ZDYgaW5wdXQ9NDQ1NWM1ZDU1ZmRmMTY4N10qLworeworICAgIHJldHVybiBfYnVmZmVyZWRfcmVhZGludG9fZ2VuZXJpYyhzZWxmLCBidWZmZXIsIDEpOworfQorCisKIHN0YXRpYyBQeU9iamVjdCAqCiBfYnVmZmVyZWRfcmVhZGxpbmUoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3QgbGltaXQpCiB7CkBAIC0xMTgwLDggKzExOTYsNyBAQAogICAgICAgICBQeV9DTEVBUihyZXMpOwogICAgICAgICBnb3RvIGVuZDsKICAgICB9Ci0gICAgUHlfQ0xFQVIocmVzKTsKLSAgICByZXMgPSBfUHlCeXRlc19Kb2luKF9QeUlPX2VtcHR5X2J5dGVzLCBjaHVua3MpOworICAgIFB5X1NFVFJFRihyZXMsIF9QeUJ5dGVzX0pvaW4oX1B5SU9fZW1wdHlfYnl0ZXMsIGNodW5rcykpOwogCiBlbmQ6CiAgICAgTEVBVkVfQlVGRkVSRUQoc2VsZikKQEAgLTExOTAsMTUgKzEyMDUsMTggQEAKICAgICByZXR1cm4gcmVzOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotYnVmZmVyZWRfcmVhZGxpbmUoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X3NzaXplX3QgbGltaXQgPSAtMTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fQnVmZmVyZWQucmVhZGxpbmUKKyAgICBzaXplOiBpb19zc2l6ZV90ID0gLTEKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3JlYWRsaW5lX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNGRkMmFhNmUzM2JlODNjIGlucHV0PWZmMWUwZGY4MjFjYjRlNWNdKi8KK3sKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWRsaW5lIiwgJl9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbGltaXQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gX2J1ZmZlcmVkX3JlYWRsaW5lKHNlbGYsIGxpbWl0KTsKKyAgICByZXR1cm4gX2J1ZmZlcmVkX3JlYWRsaW5lKHNlbGYsIHNpemUpOwogfQogCiAKQEAgLTEyMTYsMTcgKzEyMzQsMjEgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21PZmZfdChwb3MpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uX0J1ZmZlcmVkLnNlZWsKKyAgICB0YXJnZXQgYXMgdGFyZ2V0b2JqOiBvYmplY3QKKyAgICB3aGVuY2U6IGludCA9IDAKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWZmZXJlZF9zZWVrKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fQnVmZmVyZWRfc2Vla19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqdGFyZ2V0b2JqLCBpbnQgd2hlbmNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdhZTBlOGRjNDZlZmRlZmIgaW5wdXQ9YTljNDkyMGJmY2JhNjE2M10qLwogewogICAgIFB5X29mZl90IHRhcmdldCwgbjsKLSAgICBpbnQgd2hlbmNlID0gMDsKLSAgICBQeU9iamVjdCAqdGFyZ2V0b2JqLCAqcmVzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKIAogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6c2VlayIsICZ0YXJnZXRvYmosICZ3aGVuY2UpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIC8qIERvIHNvbWUgZXJyb3IgY2hlY2tpbmcgaW5zdGVhZCBvZiB0cnVzdGluZyBPUyAnc2VlaygpJwogICAgICoqIGVycm9yIGRldGVjdGlvbiwganVzdCBpbiBjYXNlLgpAQCAtMTMwOCwxNyArMTMzMCwxOSBAQAogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fQnVmZmVyZWQudHJ1bmNhdGUKKyAgICBwb3M6IG9iamVjdCA9IE5vbmUKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWZmZXJlZF90cnVuY2F0ZShidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fX0J1ZmZlcmVkX3RydW5jYXRlX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICpwb3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjY3Y2EwM2M2MGMyNzBkZSBpbnB1dD04YTFiZTM0ZDU3Y2NhMmQzXSovCiB7Ci0gICAgUHlPYmplY3QgKnBvcyA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86dHJ1bmNhdGUiLCAmcG9zKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoIUVOVEVSX0JVRkZFUkVEKHNlbGYpKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTQwMywzNSArMTQyNywzMiBAQAogICogY2xhc3MgQnVmZmVyZWRSZWFkZXIKICAqLwogCi1QeURvY19TVFJWQVIoYnVmZmVyZWRyZWFkZXJfZG9jLAotICAgICAgICAgICAgICJDcmVhdGUgYSBuZXcgYnVmZmVyZWQgcmVhZGVyIHVzaW5nIHRoZSBnaXZlbiByZWFkYWJsZSByYXcgSU8gb2JqZWN0LiIpOwotCiBzdGF0aWMgdm9pZCBfYnVmZmVyZWRyZWFkZXJfcmVzZXRfYnVmKGJ1ZmZlcmVkICpzZWxmKQogewogICAgIHNlbGYtPnJlYWRfZW5kID0gLTE7CiB9CiAKLXN0YXRpYyBpbnQKLWJ1ZmZlcmVkcmVhZGVyX2luaXQoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLXsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07Ci0gICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7Ci0gICAgUHlPYmplY3QgKnJhdzsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CdWZmZXJlZFJlYWRlci5fX2luaXRfXworICAgIHJhdzogb2JqZWN0CisgICAgYnVmZmVyX3NpemU6IFB5X3NzaXplX3QoY19kZWZhdWx0PSJERUZBVUxUX0JVRkZFUl9TSVpFIikgPSBERUZBVUxUX0JVRkZFUl9TSVpFCiAKK0NyZWF0ZSBhIG5ldyBidWZmZXJlZCByZWFkZXIgdXNpbmcgdGhlIGdpdmVuIHJlYWRhYmxlIHJhdyBJTyBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFJlYWRlcl9fX2luaXRfX19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqcmF3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jZGRjZmVmYTBlZDI5NGM0IGlucHV0PWZiODg3ZTA2ZjExYjRlNDhdKi8KK3sKICAgICBzZWxmLT5vayA9IDA7CiAgICAgc2VsZi0+ZGV0YWNoZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98bjpCdWZmZXJlZFJlYWRlciIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3JlYWRhYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgUHlfQ0xFQVIoc2VsZi0+cmF3KTsKICAgICBQeV9JTkNSRUYocmF3KTsKLSAgICBzZWxmLT5yYXcgPSByYXc7CisgICAgUHlfU0VUUkVGKHNlbGYtPnJhdywgcmF3KTsKICAgICBzZWxmLT5idWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplOwogICAgIHNlbGYtPnJlYWRhYmxlID0gMTsKICAgICBzZWxmLT53cml0YWJsZSA9IDA7CkBAIC0xNzQ2LDExMSArMTc2NywxMiBAQAogICAgIHNlbGYtPnBvcyA9IDA7CiAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc2VsZi0+YnVmZmVyLCByKTsKIH0KLQotc3RhdGljIFB5TWV0aG9kRGVmIGJ1ZmZlcmVkcmVhZGVyX21ldGhvZHNbXSA9IHsKLSAgICAvKiBCdWZmZXJlZElPTWl4aW4gbWV0aG9kcyAqLwotICAgIHsiZGV0YWNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2RldGFjaCwgTUVUSF9OT0FSR1N9LAotICAgIHsiZmx1c2giLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2ltcGxlX2ZsdXNoLCBNRVRIX05PQVJHU30sCi0gICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9jbG9zZSwgTUVUSF9OT0FSR1N9LAotICAgIHsic2Vla2FibGUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2Vla2FibGUsIE1FVEhfTk9BUkdTfSwKLSAgICB7InJlYWRhYmxlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWRhYmxlLCBNRVRIX05PQVJHU30sCi0gICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF93cml0YWJsZSwgTUVUSF9OT0FSR1N9LAotICAgIHsiZmlsZW5vIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2ZpbGVubywgTUVUSF9OT0FSR1N9LAotICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2lzYXR0eSwgTUVUSF9OT0FSR1N9LAotICAgIHsiX2RlYWxsb2Nfd2FybiIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9kZWFsbG9jX3dhcm4sIE1FVEhfT30sCi0gICAgeyJfX2dldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfZ2V0c3RhdGUsIE1FVEhfTk9BUkdTfSwKLQotICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicGVlayIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9wZWVrLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVhZDEiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcmVhZDEsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkaW50bywgTUVUSF9WQVJBUkdTfSwKLSAgICB7InJlYWRsaW5lIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsic2VlayIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9zZWVrLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsidGVsbCIsIChQeUNGdW5jdGlvbilidWZmZXJlZF90ZWxsLCBNRVRIX05PQVJHU30sCi0gICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF90cnVuY2F0ZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2l6ZW9mLCBNRVRIX05PQVJHU30sCi0gICAge05VTEwsIE5VTEx9Ci19OwotCi1zdGF0aWMgUHlNZW1iZXJEZWYgYnVmZmVyZWRyZWFkZXJfbWVtYmVyc1tdID0gewotICAgIHsicmF3IiwgVF9PQkpFQ1QsIG9mZnNldG9mKGJ1ZmZlcmVkLCByYXcpLCBSRUFET05MWX0sCi0gICAgeyJfZmluYWxpemluZyIsIFRfQk9PTCwgb2Zmc2V0b2YoYnVmZmVyZWQsIGZpbmFsaXppbmcpLCAwfSwKLSAgICB7TlVMTH0KLX07Ci0KLXN0YXRpYyBQeUdldFNldERlZiBidWZmZXJlZHJlYWRlcl9nZXRzZXRbXSA9IHsKLSAgICB7ImNsb3NlZCIsIChnZXR0ZXIpYnVmZmVyZWRfY2xvc2VkX2dldCwgTlVMTCwgTlVMTH0sCi0gICAgeyJuYW1lIiwgKGdldHRlcilidWZmZXJlZF9uYW1lX2dldCwgTlVMTCwgTlVMTH0sCi0gICAgeyJtb2RlIiwgKGdldHRlcilidWZmZXJlZF9tb2RlX2dldCwgTlVMTCwgTlVMTH0sCi0gICAge05VTEx9Ci19OwotCi0KLVB5VHlwZU9iamVjdCBQeUJ1ZmZlcmVkUmVhZGVyX1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIl9pby5CdWZmZXJlZFJlYWRlciIsICAgICAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKGJ1ZmZlcmVkKSwgICAgICAgICAgIC8qdHBfYmFzaWNzaXplKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCi0gICAgKGRlc3RydWN0b3IpYnVmZmVyZWRfZGVhbGxvYywgICAgIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NvbXBhcmUgKi8KLSAgICAocmVwcmZ1bmMpYnVmZmVyZWRfcmVwciwgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQotICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgLyp0cF9mbGFncyovCi0gICAgYnVmZmVyZWRyZWFkZXJfZG9jLCAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpYnVmZmVyZWRfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCi0gICAgKGlucXVpcnkpYnVmZmVyZWRfY2xlYXIsICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgb2Zmc2V0b2YoYnVmZmVyZWQsIHdlYWtyZWZsaXN0KSwgLyp0cF93ZWFrbGlzdG9mZnNldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAoaXRlcm5leHRmdW5jKWJ1ZmZlcmVkX2l0ZXJuZXh0LCAvKiB0cF9pdGVybmV4dCAqLwotICAgIGJ1ZmZlcmVkcmVhZGVyX21ldGhvZHMsICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgYnVmZmVyZWRyZWFkZXJfbWVtYmVycywgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICBidWZmZXJlZHJlYWRlcl9nZXRzZXQsICAgICAgLyogdHBfZ2V0c2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgb2Zmc2V0b2YoYnVmZmVyZWQsIGRpY3QpLCAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgKGluaXRwcm9jKWJ1ZmZlcmVkcmVhZGVyX2luaXQsIC8qIHRwX2luaXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgLyogdHBfbmV3ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCi19OwogDAogCiAKIC8qCiAgKiBjbGFzcyBCdWZmZXJlZFdyaXRlcgogICovCi1QeURvY19TVFJWQVIoYnVmZmVyZWR3cml0ZXJfZG9jLAotICAgICJBIGJ1ZmZlciBmb3IgYSB3cml0ZWFibGUgc2VxdWVudGlhbCBSYXdJTyBvYmplY3QuXG4iCi0gICAgIlxuIgotICAgICJUaGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIEJ1ZmZlcmVkV3JpdGVyIGZvciB0aGUgZ2l2ZW4gd3JpdGVhYmxlIHJhd1xuIgotICAgICJzdHJlYW0uIElmIHRoZSBidWZmZXJfc2l6ZSBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvXG4iCi0gICAgIkRFRkFVTFRfQlVGRkVSX1NJWkUuXG4iCi0gICAgKTsKLQogc3RhdGljIHZvaWQKIF9idWZmZXJlZHdyaXRlcl9yZXNldF9idWYoYnVmZmVyZWQgKnNlbGYpCiB7CkBAIC0xODU4LDI3ICsxNzgwLDMxIEBACiAgICAgc2VsZi0+d3JpdGVfZW5kID0gLTE7CiB9CiAKLXN0YXRpYyBpbnQKLWJ1ZmZlcmVkd3JpdGVyX2luaXQoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLXsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07Ci0gICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7Ci0gICAgUHlPYmplY3QgKnJhdzsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CdWZmZXJlZFdyaXRlci5fX2luaXRfXworICAgIHJhdzogb2JqZWN0CisgICAgYnVmZmVyX3NpemU6IFB5X3NzaXplX3QoY19kZWZhdWx0PSJERUZBVUxUX0JVRkZFUl9TSVpFIikgPSBERUZBVUxUX0JVRkZFUl9TSVpFCiAKK0EgYnVmZmVyIGZvciBhIHdyaXRlYWJsZSBzZXF1ZW50aWFsIFJhd0lPIG9iamVjdC4KKworVGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBCdWZmZXJlZFdyaXRlciBmb3IgdGhlIGdpdmVuIHdyaXRlYWJsZSByYXcKK3N0cmVhbS4gSWYgdGhlIGJ1ZmZlcl9zaXplIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8KK0RFRkFVTFRfQlVGRkVSX1NJWkUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfX19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqcmF3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jODk0MmEwMjBjMGRlZTY0IGlucHV0PTkxNGJlOWI5NWUxNjAwN2JdKi8KK3sKICAgICBzZWxmLT5vayA9IDA7CiAgICAgc2VsZi0+ZGV0YWNoZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98bjpCdWZmZXJlZFdyaXRlciIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3dyaXRhYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgUHlfQ0xFQVIoc2VsZi0+cmF3KTsKICAgICBQeV9JTkNSRUYocmF3KTsKLSAgICBzZWxmLT5yYXcgPSByYXc7CisgICAgUHlfU0VUUkVGKHNlbGYtPnJhdywgcmF3KTsKICAgICBzZWxmLT5yZWFkYWJsZSA9IDA7CiAgICAgc2VsZi0+d3JpdGFibGUgPSAxOwogCkBAIC0xOTkzLDI5ICsxOTE5LDI4IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CdWZmZXJlZFdyaXRlci53cml0ZQorICAgIGJ1ZmZlcjogUHlfYnVmZmVyCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnVmZmVyZWR3cml0ZXJfd3JpdGUoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0J1ZmZlcmVkV3JpdGVyX3dyaXRlX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmOGQxMzY1NzU5YmZjNmIgaW5wdXQ9ZGQ4N2RkODVmYzdmODg1MF0qLwogewogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwotICAgIFB5X2J1ZmZlciBidWY7CiAgICAgUHlfc3NpemVfdCB3cml0dGVuLCBhdmFpbCwgcmVtYWluaW5nOwogICAgIFB5X29mZl90IG9mZnNldDsKIAogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kjp3cml0ZSIsICZidWYpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIGlmIChJU19DTE9TRUQoc2VsZikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ3cml0ZSB0byBjbG9zZWQgZmlsZSIpOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoIUVOVEVSX0JVRkZFUkVEKHNlbGYpKSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgaWYgKCFFTlRFUl9CVUZGRVJFRChzZWxmKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgLyogRmFzdCBwYXRoOiB0aGUgZGF0YSB0byB3cml0ZSBjYW4gYmUgZnVsbHkgYnVmZmVyZWQuICovCiAgICAgaWYgKCFWQUxJRF9SRUFEX0JVRkZFUihzZWxmKSAmJiAhVkFMSURfV1JJVEVfQlVGRkVSKHNlbGYpKSB7CkBAIC0yMDIzLDE1ICsxOTQ4LDE1IEBACiAgICAgICAgIHNlbGYtPnJhd19wb3MgPSAwOwogICAgIH0KICAgICBhdmFpbCA9IFB5X1NBRkVfRE9XTkNBU1Qoc2VsZi0+YnVmZmVyX3NpemUgLSBzZWxmLT5wb3MsIFB5X29mZl90LCBQeV9zc2l6ZV90KTsKLSAgICBpZiAoYnVmLmxlbiA8PSBhdmFpbCkgewotICAgICAgICBtZW1jcHkoc2VsZi0+YnVmZmVyICsgc2VsZi0+cG9zLCBidWYuYnVmLCBidWYubGVuKTsKKyAgICBpZiAoYnVmZmVyLT5sZW4gPD0gYXZhaWwpIHsKKyAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgYnVmZmVyLT5idWYsIGJ1ZmZlci0+bGVuKTsKICAgICAgICAgaWYgKCFWQUxJRF9XUklURV9CVUZGRVIoc2VsZikgfHwgc2VsZi0+d3JpdGVfcG9zID4gc2VsZi0+cG9zKSB7CiAgICAgICAgICAgICBzZWxmLT53cml0ZV9wb3MgPSBzZWxmLT5wb3M7CiAgICAgICAgIH0KLSAgICAgICAgQURKVVNUX1BPU0lUSU9OKHNlbGYsIHNlbGYtPnBvcyArIGJ1Zi5sZW4pOworICAgICAgICBBREpVU1RfUE9TSVRJT04oc2VsZiwgc2VsZi0+cG9zICsgYnVmZmVyLT5sZW4pOwogICAgICAgICBpZiAoc2VsZi0+cG9zID4gc2VsZi0+d3JpdGVfZW5kKQogICAgICAgICAgICAgc2VsZi0+d3JpdGVfZW5kID0gc2VsZi0+cG9zOwotICAgICAgICB3cml0dGVuID0gYnVmLmxlbjsKKyAgICAgICAgd3JpdHRlbiA9IGJ1ZmZlci0+bGVuOwogICAgICAgICBnb3RvIGVuZDsKICAgICB9CiAKQEAgLTIwNTQsMTcgKzE5NzksMTcgQEAKICAgICAgICAgc2VsZi0+d3JpdGVfcG9zID0gMDsKICAgICAgICAgYXZhaWwgPSBQeV9TQUZFX0RPV05DQVNUKHNlbGYtPmJ1ZmZlcl9zaXplIC0gc2VsZi0+d3JpdGVfZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfb2ZmX3QsIFB5X3NzaXplX3QpOwotICAgICAgICBpZiAoYnVmLmxlbiA8PSBhdmFpbCkgeworICAgICAgICBpZiAoYnVmZmVyLT5sZW4gPD0gYXZhaWwpIHsKICAgICAgICAgICAgIC8qIEV2ZXJ5dGhpbmcgY2FuIGJlIGJ1ZmZlcmVkICovCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZmZlciArIHNlbGYtPndyaXRlX2VuZCwgYnVmLmJ1ZiwgYnVmLmxlbik7Ci0gICAgICAgICAgICBzZWxmLT53cml0ZV9lbmQgKz0gYnVmLmxlbjsKLSAgICAgICAgICAgIHNlbGYtPnBvcyArPSBidWYubGVuOwotICAgICAgICAgICAgd3JpdHRlbiA9IGJ1Zi5sZW47CisgICAgICAgICAgICBtZW1jcHkoc2VsZi0+YnVmZmVyICsgc2VsZi0+d3JpdGVfZW5kLCBidWZmZXItPmJ1ZiwgYnVmZmVyLT5sZW4pOworICAgICAgICAgICAgc2VsZi0+d3JpdGVfZW5kICs9IGJ1ZmZlci0+bGVuOworICAgICAgICAgICAgc2VsZi0+cG9zICs9IGJ1ZmZlci0+bGVuOworICAgICAgICAgICAgd3JpdHRlbiA9IGJ1ZmZlci0+bGVuOwogICAgICAgICAgICAgZ290byBlbmQ7CiAgICAgICAgIH0KICAgICAgICAgLyogQnVmZmVyIGFzIG11Y2ggYXMgcG9zc2libGUuICovCi0gICAgICAgIG1lbWNweShzZWxmLT5idWZmZXIgKyBzZWxmLT53cml0ZV9lbmQsIGJ1Zi5idWYsIGF2YWlsKTsKKyAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZmZlciArIHNlbGYtPndyaXRlX2VuZCwgYnVmZmVyLT5idWYsIGF2YWlsKTsKICAgICAgICAgc2VsZi0+d3JpdGVfZW5kICs9IGF2YWlsOwogICAgICAgICBzZWxmLT5wb3MgKz0gYXZhaWw7CiAgICAgICAgIC8qIFhYWCBNb2RpZnlpbmcgdGhlIGV4aXN0aW5nIGV4Y2VwdGlvbiBlIHVzaW5nIHRoZSBwb2ludGVyIHcKQEAgLTIwOTAsMTEgKzIwMTUsMTEgQEAKICAgICB9CiAKICAgICAvKiBUaGVuIHdyaXRlIGJ1ZiBpdHNlbGYuIEF0IHRoaXMgcG9pbnQgdGhlIGJ1ZmZlciBoYXMgYmVlbiBlbXB0aWVkLiAqLwotICAgIHJlbWFpbmluZyA9IGJ1Zi5sZW47CisgICAgcmVtYWluaW5nID0gYnVmZmVyLT5sZW47CiAgICAgd3JpdHRlbiA9IDA7CiAgICAgd2hpbGUgKHJlbWFpbmluZyA+IHNlbGYtPmJ1ZmZlcl9zaXplKSB7CiAgICAgICAgIFB5X3NzaXplX3QgbiA9IF9idWZmZXJlZHdyaXRlcl9yYXdfd3JpdGUoCi0gICAgICAgICAgICBzZWxmLCAoY2hhciAqKSBidWYuYnVmICsgd3JpdHRlbiwgYnVmLmxlbiAtIHdyaXR0ZW4pOworICAgICAgICAgICAgc2VsZiwgKGNoYXIgKikgYnVmZmVyLT5idWYgKyB3cml0dGVuLCBidWZmZXItPmxlbiAtIHdyaXR0ZW4pOwogICAgICAgICBpZiAobiA9PSAtMSkgewogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfSBlbHNlIGlmIChuID09IC0yKSB7CkBAIC0yMTAyLDcgKzIwMjcsNyBAQAogICAgICAgICAgICAgaWYgKHJlbWFpbmluZyA+IHNlbGYtPmJ1ZmZlcl9zaXplKSB7CiAgICAgICAgICAgICAgICAgLyogQ2FuJ3QgYnVmZmVyIGV2ZXJ5dGhpbmcsIHN0aWxsIGJ1ZmZlciBhcyBtdWNoIGFzIHBvc3NpYmxlICovCiAgICAgICAgICAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikgYnVmLmJ1ZiArIHdyaXR0ZW4sIHNlbGYtPmJ1ZmZlcl9zaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikgYnVmZmVyLT5idWYgKyB3cml0dGVuLCBzZWxmLT5idWZmZXJfc2l6ZSk7CiAgICAgICAgICAgICAgICAgc2VsZi0+cmF3X3BvcyA9IDA7CiAgICAgICAgICAgICAgICAgQURKVVNUX1BPU0lUSU9OKHNlbGYsIHNlbGYtPmJ1ZmZlcl9zaXplKTsKICAgICAgICAgICAgICAgICBzZWxmLT53cml0ZV9lbmQgPSBzZWxmLT5idWZmZXJfc2l6ZTsKQEAgLTIxMjUsNyArMjA1MCw3IEBACiAgICAgaWYgKHNlbGYtPnJlYWRhYmxlKQogICAgICAgICBfYnVmZmVyZWRyZWFkZXJfcmVzZXRfYnVmKHNlbGYpOwogICAgIGlmIChyZW1haW5pbmcgPiAwKSB7Ci0gICAgICAgIG1lbWNweShzZWxmLT5idWZmZXIsIChjaGFyICopIGJ1Zi5idWYgKyB3cml0dGVuLCByZW1haW5pbmcpOworICAgICAgICBtZW1jcHkoc2VsZi0+YnVmZmVyLCAoY2hhciAqKSBidWZmZXItPmJ1ZiArIHdyaXR0ZW4sIHJlbWFpbmluZyk7CiAgICAgICAgIHdyaXR0ZW4gKz0gcmVtYWluaW5nOwogICAgIH0KICAgICBzZWxmLT53cml0ZV9wb3MgPSAwOwpAQCAtMjEzOSw5NiArMjA2NCw4IEBACiAKIGVycm9yOgogICAgIExFQVZFX0JVRkZFUkVEKHNlbGYpCi0gICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICByZXR1cm4gcmVzOwogfQotCi1zdGF0aWMgUHlNZXRob2REZWYgYnVmZmVyZWR3cml0ZXJfbWV0aG9kc1tdID0gewotICAgIC8qIEJ1ZmZlcmVkSU9NaXhpbiBtZXRob2RzICovCi0gICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9jbG9zZSwgTUVUSF9OT0FSR1N9LAotICAgIHsiZGV0YWNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2RldGFjaCwgTUVUSF9OT0FSR1N9LAotICAgIHsic2Vla2FibGUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2Vla2FibGUsIE1FVEhfTk9BUkdTfSwKLSAgICB7InJlYWRhYmxlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWRhYmxlLCBNRVRIX05PQVJHU30sCi0gICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF93cml0YWJsZSwgTUVUSF9OT0FSR1N9LAotICAgIHsiZmlsZW5vIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2ZpbGVubywgTUVUSF9OT0FSR1N9LAotICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2lzYXR0eSwgTUVUSF9OT0FSR1N9LAotICAgIHsiX2RlYWxsb2Nfd2FybiIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9kZWFsbG9jX3dhcm4sIE1FVEhfT30sCi0gICAgeyJfX2dldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfZ2V0c3RhdGUsIE1FVEhfTk9BUkdTfSwKLQotICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWR3cml0ZXJfd3JpdGUsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF90cnVuY2F0ZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImZsdXNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2ZsdXNoLCBNRVRIX05PQVJHU30sCi0gICAgeyJzZWVrIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3NlZWssIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3RlbGwsIE1FVEhfTk9BUkdTfSwKLSAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2l6ZW9mLCBNRVRIX05PQVJHU30sCi0gICAge05VTEwsIE5VTEx9Ci19OwotCi1zdGF0aWMgUHlNZW1iZXJEZWYgYnVmZmVyZWR3cml0ZXJfbWVtYmVyc1tdID0gewotICAgIHsicmF3IiwgVF9PQkpFQ1QsIG9mZnNldG9mKGJ1ZmZlcmVkLCByYXcpLCBSRUFET05MWX0sCi0gICAgeyJfZmluYWxpemluZyIsIFRfQk9PTCwgb2Zmc2V0b2YoYnVmZmVyZWQsIGZpbmFsaXppbmcpLCAwfSwKLSAgICB7TlVMTH0KLX07Ci0KLXN0YXRpYyBQeUdldFNldERlZiBidWZmZXJlZHdyaXRlcl9nZXRzZXRbXSA9IHsKLSAgICB7ImNsb3NlZCIsIChnZXR0ZXIpYnVmZmVyZWRfY2xvc2VkX2dldCwgTlVMTCwgTlVMTH0sCi0gICAgeyJuYW1lIiwgKGdldHRlcilidWZmZXJlZF9uYW1lX2dldCwgTlVMTCwgTlVMTH0sCi0gICAgeyJtb2RlIiwgKGdldHRlcilidWZmZXJlZF9tb2RlX2dldCwgTlVMTCwgTlVMTH0sCi0gICAge05VTEx9Ci19OwotCi0KLVB5VHlwZU9iamVjdCBQeUJ1ZmZlcmVkV3JpdGVyX1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIl9pby5CdWZmZXJlZFdyaXRlciIsICAgICAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKGJ1ZmZlcmVkKSwgICAgICAgICAgIC8qdHBfYmFzaWNzaXplKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCi0gICAgKGRlc3RydWN0b3IpYnVmZmVyZWRfZGVhbGxvYywgICAgIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NvbXBhcmUgKi8KLSAgICAocmVwcmZ1bmMpYnVmZmVyZWRfcmVwciwgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQotICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAvKnRwX2ZsYWdzKi8KLSAgICBidWZmZXJlZHdyaXRlcl9kb2MsICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYylidWZmZXJlZF90cmF2ZXJzZSwgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAoaW5xdWlyeSlidWZmZXJlZF9jbGVhciwgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICBvZmZzZXRvZihidWZmZXJlZCwgd2Vha3JlZmxpc3QpLCAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIGJ1ZmZlcmVkd3JpdGVyX21ldGhvZHMsICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgYnVmZmVyZWR3cml0ZXJfbWVtYmVycywgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICBidWZmZXJlZHdyaXRlcl9nZXRzZXQsICAgICAgLyogdHBfZ2V0c2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgb2Zmc2V0b2YoYnVmZmVyZWQsIGRpY3QpLCAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAoaW5pdHByb2MpYnVmZmVyZWR3cml0ZXJfaW5pdCwgLyogdHBfaW5pdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAvKiB0cF9uZXcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3ViY2xhc3NlcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdmVyc2lvbl90YWcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KLX07CiAMCiAKIApAQCAtMjIzNiwxOCArMjA3Myw2IEBACiAgKiBCdWZmZXJlZFJXUGFpcgogICovCiAKLVB5RG9jX1NUUlZBUihidWZmZXJlZHJ3cGFpcl9kb2MsCi0gICAgIkEgYnVmZmVyZWQgcmVhZGVyIGFuZCB3cml0ZXIgb2JqZWN0IHRvZ2V0aGVyLlxuIgotICAgICJcbiIKLSAgICAiQSBidWZmZXJlZCByZWFkZXIgb2JqZWN0IGFuZCBidWZmZXJlZCB3cml0ZXIgb2JqZWN0IHB1dCB0b2dldGhlciB0b1xuIgotICAgICJmb3JtIGEgc2VxdWVudGlhbCBJTyBvYmplY3QgdGhhdCBjYW4gcmVhZCBhbmQgd3JpdGUuIFRoaXMgaXMgdHlwaWNhbGx5XG4iCi0gICAgInVzZWQgd2l0aCBhIHNvY2tldCBvciB0d28td2F5IHBpcGUuXG4iCi0gICAgIlxuIgotICAgICJyZWFkZXIgYW5kIHdyaXRlciBhcmUgUmF3SU9CYXNlIG9iamVjdHMgdGhhdCBhcmUgcmVhZGFibGUgYW5kXG4iCi0gICAgIndyaXRlYWJsZSByZXNwZWN0aXZlbHkuIElmIHRoZSBidWZmZXJfc2l6ZSBpcyBvbWl0dGVkIGl0IGRlZmF1bHRzIHRvXG4iCi0gICAgIkRFRkFVTFRfQlVGRkVSX1NJWkUuXG4iCi0gICAgKTsKLQogLyogWFhYIFRoZSB1c2VmdWxuZXNzIG9mIHRoaXMgKGNvbXBhcmVkIHRvIGhhdmluZyB0d28gc2VwYXJhdGUgSU8gb2JqZWN0cykgaXMKICAqIHF1ZXN0aW9uYWJsZS4KICAqLwpAQCAtMjI2MCwxNyArMjA4NSwyOSBAQAogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKIH0gcndwYWlyOwogCisvKltjbGluaWMgaW5wdXRdCitfaW8uQnVmZmVyZWRSV1BhaXIuX19pbml0X18KKyAgICByZWFkZXI6IG9iamVjdAorICAgIHdyaXRlcjogb2JqZWN0CisgICAgYnVmZmVyX3NpemU6IFB5X3NzaXplX3QoY19kZWZhdWx0PSJERUZBVUxUX0JVRkZFUl9TSVpFIikgPSBERUZBVUxUX0JVRkZFUl9TSVpFCisgICAgLworCitBIGJ1ZmZlcmVkIHJlYWRlciBhbmQgd3JpdGVyIG9iamVjdCB0b2dldGhlci4KKworQSBidWZmZXJlZCByZWFkZXIgb2JqZWN0IGFuZCBidWZmZXJlZCB3cml0ZXIgb2JqZWN0IHB1dCB0b2dldGhlciB0bworZm9ybSBhIHNlcXVlbnRpYWwgSU8gb2JqZWN0IHRoYXQgY2FuIHJlYWQgYW5kIHdyaXRlLiBUaGlzIGlzIHR5cGljYWxseQordXNlZCB3aXRoIGEgc29ja2V0IG9yIHR3by13YXkgcGlwZS4KKworcmVhZGVyIGFuZCB3cml0ZXIgYXJlIFJhd0lPQmFzZSBvYmplY3RzIHRoYXQgYXJlIHJlYWRhYmxlIGFuZAord3JpdGVhYmxlIHJlc3BlY3RpdmVseS4gSWYgdGhlIGJ1ZmZlcl9zaXplIGlzIG9taXR0ZWQgaXQgZGVmYXVsdHMgdG8KK0RFRkFVTFRfQlVGRkVSX1NJWkUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBpbnQKLWJ1ZmZlcmVkcndwYWlyX2luaXQocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfaW9fQnVmZmVyZWRSV1BhaXJfX19pbml0X19faW1wbChyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICpyZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqd3JpdGVyLCBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMyN2U3M2QxYWVlOGY5ODQgaW5wdXQ9NjIwZDQyZDcxZjMzYTAzMV0qLwogewotICAgIFB5T2JqZWN0ICpyZWFkZXIsICp3cml0ZXI7Ci0gICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PfG46QnVmZmVyZWRSV1BhaXIiLCAmcmVhZGVyLCAmd3JpdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmYnVmZmVyX3NpemUpKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3JlYWRhYmxlKHJlYWRlciwgUHlfVHJ1ZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfd3JpdGFibGUod3JpdGVyLCBQeV9UcnVlKSA9PSBOVUxMKQpAQCAtMjM2NSw2ICsyMjAyLDEyIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitidWZmZXJlZHJ3cGFpcl9yZWFkaW50bzEocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICZQeUlkX3JlYWRpbnRvMSwgYXJncyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBidWZmZXJlZHJ3cGFpcl93cml0ZShyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgJlB5SWRfd3JpdGUsIGFyZ3MpOwpAQCAtMjQyOSwxMiArMjI3MiwzMTIgQEAKICAgICB9CiAgICAgcmV0dXJuIFB5T2JqZWN0X0dldEF0dHIoKFB5T2JqZWN0ICopIHNlbGYtPndyaXRlciwgX1B5SU9fc3RyX2Nsb3NlZCk7CiB9CisMCisKKworLyoKKyAqIEJ1ZmZlcmVkUmFuZG9tCisgKi8KKworLypbY2xpbmljIGlucHV0XQorX2lvLkJ1ZmZlcmVkUmFuZG9tLl9faW5pdF9fCisgICAgcmF3OiBvYmplY3QKKyAgICBidWZmZXJfc2l6ZTogUHlfc3NpemVfdChjX2RlZmF1bHQ9IkRFRkFVTFRfQlVGRkVSX1NJWkUiKSA9IERFRkFVTFRfQlVGRkVSX1NJWkUKKworQSBidWZmZXJlZCBpbnRlcmZhY2UgdG8gcmFuZG9tIGFjY2VzcyBzdHJlYW1zLgorCitUaGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIHJlYWRlciBhbmQgd3JpdGVyIGZvciBhIHNlZWthYmxlIHN0cmVhbSwKK3JhdywgZ2l2ZW4gaW4gdGhlIGZpcnN0IGFyZ3VtZW50LiBJZiB0aGUgYnVmZmVyX3NpemUgaXMgb21pdHRlZCBpdAorZGVmYXVsdHMgdG8gREVGQVVMVF9CVUZGRVJfU0laRS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorX2lvX0J1ZmZlcmVkUmFuZG9tX19faW5pdF9fX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICpyYXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQzZDY0ZWIwZjY0ZTY0YTMgaW5wdXQ9YTRlODE4ZmI4NmQwZTUwY10qLworeworICAgIHNlbGYtPm9rID0gMDsKKyAgICBzZWxmLT5kZXRhY2hlZCA9IDA7CisKKyAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3NlZWthYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfcmVhZGFibGUocmF3LCBQeV9UcnVlKSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKF9QeUlPQmFzZV9jaGVja193cml0YWJsZShyYXcsIFB5X1RydWUpID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIFB5X0lOQ1JFRihyYXcpOworICAgIFB5X1NFVFJFRihzZWxmLT5yYXcsIHJhdyk7CisgICAgc2VsZi0+YnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZTsKKyAgICBzZWxmLT5yZWFkYWJsZSA9IDE7CisgICAgc2VsZi0+d3JpdGFibGUgPSAxOworCisgICAgaWYgKF9idWZmZXJlZF9pbml0KHNlbGYpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIF9idWZmZXJlZHJlYWRlcl9yZXNldF9idWYoc2VsZik7CisgICAgX2J1ZmZlcmVkd3JpdGVyX3Jlc2V0X2J1ZihzZWxmKTsKKyAgICBzZWxmLT5wb3MgPSAwOworCisgICAgc2VsZi0+ZmFzdF9jbG9zZWRfY2hlY2tzID0gKFB5X1RZUEUoc2VsZikgPT0gJlB5QnVmZmVyZWRSYW5kb21fVHlwZSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHJhdykgPT0gJlB5RmlsZUlPX1R5cGUpOworCisgICAgc2VsZi0+b2sgPSAxOworICAgIHJldHVybiAwOworfQorCisjaW5jbHVkZSAiY2xpbmljL2J1ZmZlcmVkaW8uYy5oIgorCisKK3N0YXRpYyBQeU1ldGhvZERlZiBidWZmZXJlZGlvYmFzZV9tZXRob2RzW10gPSB7CisgICAgX0lPX19CVUZGRVJFRElPQkFTRV9ERVRBQ0hfTUVUSE9EREVGCisgICAgeyJyZWFkIiwgYnVmZmVyZWRpb2Jhc2VfcmVhZCwgTUVUSF9WQVJBUkdTLCBidWZmZXJlZGlvYmFzZV9yZWFkX2RvY30sCisgICAgeyJyZWFkMSIsIGJ1ZmZlcmVkaW9iYXNlX3JlYWQxLCBNRVRIX1ZBUkFSR1MsIGJ1ZmZlcmVkaW9iYXNlX3JlYWQxX2RvY30sCisgICAgX0lPX19CVUZGRVJFRElPQkFTRV9SRUFESU5UT19NRVRIT0RERUYKKyAgICBfSU9fX0JVRkZFUkVESU9CQVNFX1JFQURJTlRPMV9NRVRIT0RERUYKKyAgICB7IndyaXRlIiwgYnVmZmVyZWRpb2Jhc2Vfd3JpdGUsIE1FVEhfVkFSQVJHUywgYnVmZmVyZWRpb2Jhc2Vfd3JpdGVfZG9jfSwKKyAgICB7TlVMTCwgTlVMTH0KK307CisKK1B5VHlwZU9iamVjdCBQeUJ1ZmZlcmVkSU9CYXNlX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9pby5fQnVmZmVyZWRJT0Jhc2UiLCAgICAgIC8qdHBfbmFtZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYmFzaWNzaXplKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVhbGxvYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQorICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgIC8qdHBfZmxhZ3MqLworICAgIGJ1ZmZlcmVkaW9iYXNlX2RvYywgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGJ1ZmZlcmVkaW9iYXNlX21ldGhvZHMsICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgJlB5SU9CYXNlX1R5cGUsICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3ViY2xhc3NlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdmVyc2lvbl90YWcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KK307CisKKworc3RhdGljIFB5TWV0aG9kRGVmIGJ1ZmZlcmVkcmVhZGVyX21ldGhvZHNbXSA9IHsKKyAgICAvKiBCdWZmZXJlZElPTWl4aW4gbWV0aG9kcyAqLworICAgIHsiZGV0YWNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2RldGFjaCwgTUVUSF9OT0FSR1N9LAorICAgIHsiZmx1c2giLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2ltcGxlX2ZsdXNoLCBNRVRIX05PQVJHU30sCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9jbG9zZSwgTUVUSF9OT0FSR1N9LAorICAgIHsic2Vla2FibGUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2Vla2FibGUsIE1FVEhfTk9BUkdTfSwKKyAgICB7InJlYWRhYmxlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWRhYmxlLCBNRVRIX05PQVJHU30sCisgICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF93cml0YWJsZSwgTUVUSF9OT0FSR1N9LAorICAgIHsiZmlsZW5vIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2ZpbGVubywgTUVUSF9OT0FSR1N9LAorICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2lzYXR0eSwgTUVUSF9OT0FSR1N9LAorICAgIHsiX2RlYWxsb2Nfd2FybiIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9kZWFsbG9jX3dhcm4sIE1FVEhfT30sCisgICAgeyJfX2dldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfZ2V0c3RhdGUsIE1FVEhfTk9BUkdTfSwKKworICAgIF9JT19fQlVGRkVSRURfUkVBRF9NRVRIT0RERUYKKyAgICBfSU9fX0JVRkZFUkVEX1BFRUtfTUVUSE9EREVGCisgICAgX0lPX19CVUZGRVJFRF9SRUFEMV9NRVRIT0RERUYKKyAgICBfSU9fX0JVRkZFUkVEX1JFQURJTlRPX01FVEhPRERFRgorICAgIF9JT19fQlVGRkVSRURfUkVBRElOVE8xX01FVEhPRERFRgorICAgIF9JT19fQlVGRkVSRURfUkVBRExJTkVfTUVUSE9EREVGCisgICAgX0lPX19CVUZGRVJFRF9TRUVLX01FVEhPRERFRgorICAgIHsidGVsbCIsIChQeUNGdW5jdGlvbilidWZmZXJlZF90ZWxsLCBNRVRIX05PQVJHU30sCisgICAgX0lPX19CVUZGRVJFRF9UUlVOQ0FURV9NRVRIT0RERUYKKyAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2l6ZW9mLCBNRVRIX05PQVJHU30sCisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgUHlNZW1iZXJEZWYgYnVmZmVyZWRyZWFkZXJfbWVtYmVyc1tdID0geworICAgIHsicmF3IiwgVF9PQkpFQ1QsIG9mZnNldG9mKGJ1ZmZlcmVkLCByYXcpLCBSRUFET05MWX0sCisgICAgeyJfZmluYWxpemluZyIsIFRfQk9PTCwgb2Zmc2V0b2YoYnVmZmVyZWQsIGZpbmFsaXppbmcpLCAwfSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeUdldFNldERlZiBidWZmZXJlZHJlYWRlcl9nZXRzZXRbXSA9IHsKKyAgICB7ImNsb3NlZCIsIChnZXR0ZXIpYnVmZmVyZWRfY2xvc2VkX2dldCwgTlVMTCwgTlVMTH0sCisgICAgeyJuYW1lIiwgKGdldHRlcilidWZmZXJlZF9uYW1lX2dldCwgTlVMTCwgTlVMTH0sCisgICAgeyJtb2RlIiwgKGdldHRlcilidWZmZXJlZF9tb2RlX2dldCwgTlVMTCwgTlVMTH0sCisgICAge05VTEx9Cit9OworCisKK1B5VHlwZU9iamVjdCBQeUJ1ZmZlcmVkUmVhZGVyX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9pby5CdWZmZXJlZFJlYWRlciIsICAgICAgIC8qdHBfbmFtZSovCisgICAgc2l6ZW9mKGJ1ZmZlcmVkKSwgICAgICAgICAgIC8qdHBfYmFzaWNzaXplKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCisgICAgKGRlc3RydWN0b3IpYnVmZmVyZWRfZGVhbGxvYywgICAgIC8qdHBfZGVhbGxvYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NvbXBhcmUgKi8KKyAgICAocmVwcmZ1bmMpYnVmZmVyZWRfcmVwciwgICAgLyp0cF9yZXByKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQorICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgLyp0cF9mbGFncyovCisgICAgX2lvX0J1ZmZlcmVkUmVhZGVyX19faW5pdF9fX19kb2NfXywgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylidWZmZXJlZF90cmF2ZXJzZSwgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSlidWZmZXJlZF9jbGVhciwgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBvZmZzZXRvZihidWZmZXJlZCwgd2Vha3JlZmxpc3QpLCAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIChpdGVybmV4dGZ1bmMpYnVmZmVyZWRfaXRlcm5leHQsIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgYnVmZmVyZWRyZWFkZXJfbWV0aG9kcywgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBidWZmZXJlZHJlYWRlcl9tZW1iZXJzLCAgICAgLyogdHBfbWVtYmVycyAqLworICAgIGJ1ZmZlcmVkcmVhZGVyX2dldHNldCwgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICBvZmZzZXRvZihidWZmZXJlZCwgZGljdCksIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBfaW9fQnVmZmVyZWRSZWFkZXJfX19pbml0X18sIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCit9OworCisKK3N0YXRpYyBQeU1ldGhvZERlZiBidWZmZXJlZHdyaXRlcl9tZXRob2RzW10gPSB7CisgICAgLyogQnVmZmVyZWRJT01peGluIG1ldGhvZHMgKi8KKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2Nsb3NlLCBNRVRIX05PQVJHU30sCisgICAgeyJkZXRhY2giLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfZGV0YWNoLCBNRVRIX05PQVJHU30sCisgICAgeyJzZWVrYWJsZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9zZWVrYWJsZSwgTUVUSF9OT0FSR1N9LAorICAgIHsicmVhZGFibGUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcmVhZGFibGUsIE1FVEhfTk9BUkdTfSwKKyAgICB7IndyaXRhYmxlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3dyaXRhYmxlLCBNRVRIX05PQVJHU30sCisgICAgeyJmaWxlbm8iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfZmlsZW5vLCBNRVRIX05PQVJHU30sCisgICAgeyJpc2F0dHkiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfaXNhdHR5LCBNRVRIX05PQVJHU30sCisgICAgeyJfZGVhbGxvY193YXJuIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2RlYWxsb2Nfd2FybiwgTUVUSF9PfSwKKyAgICB7Il9fZ2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9nZXRzdGF0ZSwgTUVUSF9OT0FSR1N9LAorCisgICAgX0lPX0JVRkZFUkVEV1JJVEVSX1dSSVRFX01FVEhPRERFRgorICAgIF9JT19fQlVGRkVSRURfVFJVTkNBVEVfTUVUSE9EREVGCisgICAgeyJmbHVzaCIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9mbHVzaCwgTUVUSF9OT0FSR1N9LAorICAgIF9JT19fQlVGRkVSRURfU0VFS19NRVRIT0RERUYKKyAgICB7InRlbGwiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfdGVsbCwgTUVUSF9OT0FSR1N9LAorICAgIHsiX19zaXplb2ZfXyIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9zaXplb2YsIE1FVEhfTk9BUkdTfSwKKyAgICB7TlVMTCwgTlVMTH0KK307CisKK3N0YXRpYyBQeU1lbWJlckRlZiBidWZmZXJlZHdyaXRlcl9tZW1iZXJzW10gPSB7CisgICAgeyJyYXciLCBUX09CSkVDVCwgb2Zmc2V0b2YoYnVmZmVyZWQsIHJhdyksIFJFQURPTkxZfSwKKyAgICB7Il9maW5hbGl6aW5nIiwgVF9CT09MLCBvZmZzZXRvZihidWZmZXJlZCwgZmluYWxpemluZyksIDB9LAorICAgIHtOVUxMfQorfTsKKworc3RhdGljIFB5R2V0U2V0RGVmIGJ1ZmZlcmVkd3JpdGVyX2dldHNldFtdID0geworICAgIHsiY2xvc2VkIiwgKGdldHRlcilidWZmZXJlZF9jbG9zZWRfZ2V0LCBOVUxMLCBOVUxMfSwKKyAgICB7Im5hbWUiLCAoZ2V0dGVyKWJ1ZmZlcmVkX25hbWVfZ2V0LCBOVUxMLCBOVUxMfSwKKyAgICB7Im1vZGUiLCAoZ2V0dGVyKWJ1ZmZlcmVkX21vZGVfZ2V0LCBOVUxMLCBOVUxMfSwKKyAgICB7TlVMTH0KK307CisKKworUHlUeXBlT2JqZWN0IFB5QnVmZmVyZWRXcml0ZXJfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2lvLkJ1ZmZlcmVkV3JpdGVyIiwgICAgICAgLyp0cF9uYW1lKi8KKyAgICBzaXplb2YoYnVmZmVyZWQpLCAgICAgICAgICAgLyp0cF9iYXNpY3NpemUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KKyAgICAoZGVzdHJ1Y3RvcilidWZmZXJlZF9kZWFsbG9jLCAgICAgLyp0cF9kZWFsbG9jKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY29tcGFyZSAqLworICAgIChyZXByZnVuYylidWZmZXJlZF9yZXByLCAgICAvKnRwX3JlcHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFCisgICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFLCAgIC8qdHBfZmxhZ3MqLworICAgIF9pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfX19fZG9jX18sIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpYnVmZmVyZWRfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpYnVmZmVyZWRfY2xlYXIsICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgb2Zmc2V0b2YoYnVmZmVyZWQsIHdlYWtyZWZsaXN0KSwgLyp0cF93ZWFrbGlzdG9mZnNldCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBidWZmZXJlZHdyaXRlcl9tZXRob2RzLCAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGJ1ZmZlcmVkd3JpdGVyX21lbWJlcnMsICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgYnVmZmVyZWR3cml0ZXJfZ2V0c2V0LCAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIG9mZnNldG9mKGJ1ZmZlcmVkLCBkaWN0KSwgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgX2lvX0J1ZmZlcmVkV3JpdGVyX19faW5pdF9fLCAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2lzX2djICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWNoZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdWJjbGFzc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLworfTsKKwogCiBzdGF0aWMgUHlNZXRob2REZWYgYnVmZmVyZWRyd3BhaXJfbWV0aG9kc1tdID0gewogICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilidWZmZXJlZHJ3cGFpcl9yZWFkLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsicGVlayIsIChQeUNGdW5jdGlvbilidWZmZXJlZHJ3cGFpcl9wZWVrLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsicmVhZDEiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRyd3BhaXJfcmVhZDEsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilidWZmZXJlZHJ3cGFpcl9yZWFkaW50bywgTUVUSF9WQVJBUkdTfSwKKyAgICB7InJlYWRpbnRvMSIsIChQeUNGdW5jdGlvbilidWZmZXJlZHJ3cGFpcl9yZWFkaW50bzEsIE1FVEhfVkFSQVJHU30sCiAKICAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkcndwYWlyX3dyaXRlLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZmx1c2giLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRyd3BhaXJfZmx1c2gsIE1FVEhfTk9BUkdTfSwKQEAgLTI0NzcsNyArMjYyMCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFCiAgICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFLCAgIC8qIHRwX2ZsYWdzICovCi0gICAgYnVmZmVyZWRyd3BhaXJfZG9jLCAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIF9pb19CdWZmZXJlZFJXUGFpcl9fX2luaXRfX19fZG9jX18sIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpYnVmZmVyZWRyd3BhaXJfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpYnVmZmVyZWRyd3BhaXJfY2xlYXIsIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCkBAIC0yNDkyLDcgKzI2MzUsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCiAgICAgb2Zmc2V0b2YocndwYWlyLCBkaWN0KSwgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAoaW5pdHByb2MpYnVmZmVyZWRyd3BhaXJfaW5pdCwgLyogdHBfaW5pdCAqLworICAgIF9pb19CdWZmZXJlZFJXUGFpcl9fX2luaXRfXywgLyogdHBfaW5pdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwogICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwpAQCAtMjUwNiw2MyArMjY0OSw4IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCiB9OwotDAogCiAKLS8qCi0gKiBCdWZmZXJlZFJhbmRvbQotICovCi0KLVB5RG9jX1NUUlZBUihidWZmZXJlZHJhbmRvbV9kb2MsCi0gICAgIkEgYnVmZmVyZWQgaW50ZXJmYWNlIHRvIHJhbmRvbSBhY2Nlc3Mgc3RyZWFtcy5cbiIKLSAgICAiXG4iCi0gICAgIlRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgcmVhZGVyIGFuZCB3cml0ZXIgZm9yIGEgc2Vla2FibGUgc3RyZWFtLFxuIgotICAgICJyYXcsIGdpdmVuIGluIHRoZSBmaXJzdCBhcmd1bWVudC4gSWYgdGhlIGJ1ZmZlcl9zaXplIGlzIG9taXR0ZWQgaXRcbiIKLSAgICAiZGVmYXVsdHMgdG8gREVGQVVMVF9CVUZGRVJfU0laRS5cbiIKLSAgICApOwotCi1zdGF0aWMgaW50Ci1idWZmZXJlZHJhbmRvbV9pbml0KGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCi17Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7InJhdyIsICJidWZmZXJfc2l6ZSIsIE5VTEx9OwotICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOwotICAgIFB5T2JqZWN0ICpyYXc7Ci0KLSAgICBzZWxmLT5vayA9IDA7Ci0gICAgc2VsZi0+ZGV0YWNoZWQgPSAwOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98bjpCdWZmZXJlZFJhbmRvbSIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3NlZWthYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfcmVhZGFibGUocmF3LCBQeV9UcnVlKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKF9QeUlPQmFzZV9jaGVja193cml0YWJsZShyYXcsIFB5X1RydWUpID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIFB5X0NMRUFSKHNlbGYtPnJhdyk7Ci0gICAgUHlfSU5DUkVGKHJhdyk7Ci0gICAgc2VsZi0+cmF3ID0gcmF3OwotICAgIHNlbGYtPmJ1ZmZlcl9zaXplID0gYnVmZmVyX3NpemU7Ci0gICAgc2VsZi0+cmVhZGFibGUgPSAxOwotICAgIHNlbGYtPndyaXRhYmxlID0gMTsKLQotICAgIGlmIChfYnVmZmVyZWRfaW5pdChzZWxmKSA8IDApCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBfYnVmZmVyZWRyZWFkZXJfcmVzZXRfYnVmKHNlbGYpOwotICAgIF9idWZmZXJlZHdyaXRlcl9yZXNldF9idWYoc2VsZik7Ci0gICAgc2VsZi0+cG9zID0gMDsKLQotICAgIHNlbGYtPmZhc3RfY2xvc2VkX2NoZWNrcyA9IChQeV9UWVBFKHNlbGYpID09ICZQeUJ1ZmZlcmVkUmFuZG9tX1R5cGUgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShyYXcpID09ICZQeUZpbGVJT19UeXBlKTsKLQotICAgIHNlbGYtPm9rID0gMTsKLSAgICByZXR1cm4gMDsKLX0KLQogc3RhdGljIFB5TWV0aG9kRGVmIGJ1ZmZlcmVkcmFuZG9tX21ldGhvZHNbXSA9IHsKICAgICAvKiBCdWZmZXJlZElPTWl4aW4gbWV0aG9kcyAqLwogICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfY2xvc2UsIE1FVEhfTk9BUkdTfSwKQEAgLTI1NzcsMTUgKzI2NjUsMTYgQEAKIAogICAgIHsiZmx1c2giLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfZmx1c2gsIE1FVEhfTk9BUkdTfSwKIAotICAgIHsic2VlayIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9zZWVrLCBNRVRIX1ZBUkFSR1N9LAorICAgIF9JT19fQlVGRkVSRURfU0VFS19NRVRIT0RERUYKICAgICB7InRlbGwiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfdGVsbCwgTUVUSF9OT0FSR1N9LAotICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfdHJ1bmNhdGUsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJyZWFkIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJyZWFkMSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkMSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7InJlYWRpbnRvIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWRpbnRvLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVhZGxpbmUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcmVhZGxpbmUsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJwZWVrIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3BlZWssIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ3cml0ZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZHdyaXRlcl93cml0ZSwgTUVUSF9WQVJBUkdTfSwKKyAgICBfSU9fX0JVRkZFUkVEX1RSVU5DQVRFX01FVEhPRERFRgorICAgIF9JT19fQlVGRkVSRURfUkVBRF9NRVRIT0RERUYKKyAgICBfSU9fX0JVRkZFUkVEX1JFQUQxX01FVEhPRERFRgorICAgIF9JT19fQlVGRkVSRURfUkVBRElOVE9fTUVUSE9EREVGCisgICAgX0lPX19CVUZGRVJFRF9SRUFESU5UTzFfTUVUSE9EREVGCisgICAgX0lPX19CVUZGRVJFRF9SRUFETElORV9NRVRIT0RERUYKKyAgICBfSU9fX0JVRkZFUkVEX1BFRUtfTUVUSE9EREVGCisgICAgX0lPX0JVRkZFUkVEV1JJVEVSX1dSSVRFX01FVEhPRERFRgogICAgIHsiX19zaXplb2ZfXyIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9zaXplb2YsIE1FVEhfTk9BUkdTfSwKICAgICB7TlVMTCwgTlVMTH0KIH07CkBAIC0yNjI2LDcgKzI3MTUsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQogICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAvKnRwX2ZsYWdzKi8KLSAgICBidWZmZXJlZHJhbmRvbV9kb2MsICAgICAgICAgLyogdHBfZG9jICovCisgICAgX2lvX0J1ZmZlcmVkUmFuZG9tX19faW5pdF9fX19kb2NfXywgLyogdHBfZG9jICovCiAgICAgKHRyYXZlcnNlcHJvYylidWZmZXJlZF90cmF2ZXJzZSwgLyogdHBfdHJhdmVyc2UgKi8KICAgICAoaW5xdWlyeSlidWZmZXJlZF9jbGVhciwgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KQEAgLTI2NDEsNyArMjczMCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KICAgICBvZmZzZXRvZihidWZmZXJlZCwgZGljdCksIC8qdHBfZGljdG9mZnNldCovCi0gICAgKGluaXRwcm9jKWJ1ZmZlcmVkcmFuZG9tX2luaXQsIC8qIHRwX2luaXQgKi8KKyAgICBfaW9fQnVmZmVyZWRSYW5kb21fX19pbml0X18sIC8qIHRwX2luaXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2J5dGVzaW8uYyBiL01vZHVsZXMvX2lvL2J5dGVzaW8uYwppbmRleCBiNTVhYjcyLi45OWU3MWJjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9ieXRlc2lvLmMKKysrIGIvTW9kdWxlcy9faW8vYnl0ZXNpby5jCkBAIC0yLDEyICsyLDE3IEBACiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiICAgICAgIC8qIGZvciBvZmZzZXRvZigpICovCiAjaW5jbHVkZSAiX2lvbW9kdWxlLmgiCiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfaW8KK2NsYXNzIF9pby5CeXRlc0lPICJieXRlc2lvICoiICImUHlCeXRlc0lPX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD03ZjUwZWMwMzRmNWMwYjI2XSovCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgY2hhciAqYnVmOworICAgIFB5T2JqZWN0ICpidWY7CiAgICAgUHlfc3NpemVfdCBwb3M7CiAgICAgUHlfc3NpemVfdCBzdHJpbmdfc2l6ZTsKLSAgICBzaXplX3QgYnVmX3NpemU7CiAgICAgUHlPYmplY3QgKmRpY3Q7CiAgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OwogICAgIFB5X3NzaXplX3QgZXhwb3J0czsKQEAgLTE4LDYgKzIzLDEyIEBACiAgICAgYnl0ZXNpbyAqc291cmNlOwogfSBieXRlc2lvYnVmOwogCisvKiBUaGUgYnl0ZXNpbyBvYmplY3QgY2FuIGJlIGluIHRocmVlIHN0YXRlczoKKyAgKiBQeV9SRUZDTlQoYnVmKSA9PSAxLCBleHBvcnRzID09IDAuCisgICogUHlfUkVGQ05UKGJ1ZikgPiAxLiAgZXhwb3J0cyA9PSAwLAorICAgIGZpcnN0IG1vZGlmaWNhdGlvbiBvciBleHBvcnQgY2F1c2VzIHRoZSBpbnRlcm5hbCBidWZmZXIgY29weWluZy4KKyAgKiBleHBvcnRzID4gMC4gIFB5X1JFRkNOVChidWYpID09IDEsIGFueSBtb2RpZmljYXRpb25zIGFyZSBmb3JiaWRkZW4uCisqLwogCiAjZGVmaW5lIENIRUNLX0NMT1NFRChzZWxmKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgaWYgKChzZWxmKS0+YnVmID09IE5VTEwpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0zMyw0MCArNDQsNjQgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7IFwKICAgICB9CiAKKyNkZWZpbmUgU0hBUkVEX0JVRihzZWxmKSAoUHlfUkVGQ05UKChzZWxmKS0+YnVmKSA+IDEpCisKIAogLyogSW50ZXJuYWwgcm91dGluZSB0byBnZXQgYSBsaW5lIGZyb20gdGhlIGJ1ZmZlciBvZiBhIEJ5dGVzSU8KICAgIG9iamVjdC4gUmV0dXJucyB0aGUgbGVuZ3RoIGJldHdlZW4gdGhlIGN1cnJlbnQgcG9zaXRpb24gdG8gdGhlCiAgICBuZXh0IG5ld2xpbmUgY2hhcmFjdGVyLiAqLwogc3RhdGljIFB5X3NzaXplX3QKLWdldF9saW5lKGJ5dGVzaW8gKnNlbGYsIGNoYXIgKipvdXRwdXQpCitzY2FuX2VvbChieXRlc2lvICpzZWxmLCBQeV9zc2l6ZV90IGxlbikKIHsKLSAgICBjaGFyICpuOwotICAgIGNvbnN0IGNoYXIgKnN0cl9lbmQ7Ci0gICAgUHlfc3NpemVfdCBsZW47CisgICAgY29uc3QgY2hhciAqc3RhcnQsICpuOworICAgIFB5X3NzaXplX3QgbWF4bGVuOwogCiAgICAgYXNzZXJ0KHNlbGYtPmJ1ZiAhPSBOVUxMKTsKKyAgICBhc3NlcnQoc2VsZi0+cG9zID49IDApOworCisgICAgaWYgKHNlbGYtPnBvcyA+PSBzZWxmLT5zdHJpbmdfc2l6ZSkKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvKiBNb3ZlIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUsIHVwIHRvIHRoZSBlbmQgb2YgdGhlIHN0cmluZywgcy4gKi8KLSAgICBzdHJfZW5kID0gc2VsZi0+YnVmICsgc2VsZi0+c3RyaW5nX3NpemU7Ci0gICAgZm9yIChuID0gc2VsZi0+YnVmICsgc2VsZi0+cG9zOwotICAgICAgICAgbiA8IHN0cl9lbmQgJiYgKm4gIT0gJ1xuJzsKLSAgICAgICAgIG4rKyk7CisgICAgbWF4bGVuID0gc2VsZi0+c3RyaW5nX3NpemUgLSBzZWxmLT5wb3M7CisgICAgaWYgKGxlbiA8IDAgfHwgbGVuID4gbWF4bGVuKQorICAgICAgICBsZW4gPSBtYXhsZW47CiAKLSAgICAvKiBTa2lwIHRoZSBuZXdsaW5lIGNoYXJhY3RlciAqLwotICAgIGlmIChuIDwgc3RyX2VuZCkKLSAgICAgICAgbisrOwotCi0gICAgLyogR2V0IHRoZSBsZW5ndGggZnJvbSB0aGUgY3VycmVudCBwb3NpdGlvbiB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLiAqLwotICAgIGxlbiA9IG4gLSAoc2VsZi0+YnVmICsgc2VsZi0+cG9zKTsKLSAgICAqb3V0cHV0ID0gc2VsZi0+YnVmICsgc2VsZi0+cG9zOwotCisgICAgaWYgKGxlbikgeworICAgICAgICBzdGFydCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmJ1ZikgKyBzZWxmLT5wb3M7CisgICAgICAgIG4gPSBtZW1jaHIoc3RhcnQsICdcbicsIGxlbik7CisgICAgICAgIGlmIChuKQorICAgICAgICAgICAgLyogR2V0IHRoZSBsZW5ndGggZnJvbSB0aGUgY3VycmVudCBwb3NpdGlvbiB0byB0aGUgZW5kIG9mCisgICAgICAgICAgICAgICB0aGUgbGluZS4gKi8KKyAgICAgICAgICAgIGxlbiA9IG4gLSBzdGFydCArIDE7CisgICAgfQogICAgIGFzc2VydChsZW4gPj0gMCk7CiAgICAgYXNzZXJ0KHNlbGYtPnBvcyA8IFBZX1NTSVpFX1RfTUFYIC0gbGVuKTsKLSAgICBzZWxmLT5wb3MgKz0gbGVuOwogCiAgICAgcmV0dXJuIGxlbjsKIH0KIAorLyogSW50ZXJuYWwgcm91dGluZSBmb3IgZGV0YWNoaW5nIHRoZSBzaGFyZWQgYnVmZmVyIG9mIEJ5dGVzSU8gb2JqZWN0cy4KKyAgIFRoZSBjYWxsZXIgc2hvdWxkIGVuc3VyZSB0aGF0IHRoZSAnc2l6ZScgYXJndW1lbnQgaXMgbm9uLW5lZ2F0aXZlIGFuZAorICAgbm90IGxlc3NlciB0aGFuIHNlbGYtPnN0cmluZ19zaXplLiAgUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC0xIG90aGVyd2lzZS4gKi8KK3N0YXRpYyBpbnQKK3Vuc2hhcmVfYnVmZmVyKGJ5dGVzaW8gKnNlbGYsIHNpemVfdCBzaXplKQoreworICAgIFB5T2JqZWN0ICpuZXdfYnVmLCAqb2xkX2J1ZjsKKyAgICBhc3NlcnQoU0hBUkVEX0JVRihzZWxmKSk7CisgICAgYXNzZXJ0KHNlbGYtPmV4cG9ydHMgPT0gMCk7CisgICAgYXNzZXJ0KHNpemUgPj0gKHNpemVfdClzZWxmLT5zdHJpbmdfc2l6ZSk7CisgICAgbmV3X2J1ZiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CisgICAgaWYgKG5ld19idWYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIG1lbWNweShQeUJ5dGVzX0FTX1NUUklORyhuZXdfYnVmKSwgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+YnVmKSwKKyAgICAgICAgICAgc2VsZi0+c3RyaW5nX3NpemUpOworICAgIG9sZF9idWYgPSBzZWxmLT5idWY7CisgICAgc2VsZi0+YnVmID0gbmV3X2J1ZjsKKyAgICBQeV9ERUNSRUYob2xkX2J1Zik7CisgICAgcmV0dXJuIDA7Cit9CisKIC8qIEludGVybmFsIHJvdXRpbmUgZm9yIGNoYW5naW5nIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgb2YgQnl0ZXNJTyBvYmplY3RzLgogICAgVGhlIGNhbGxlciBzaG91bGQgZW5zdXJlIHRoYXQgdGhlICdzaXplJyBhcmd1bWVudCBpcyBub24tbmVnYXRpdmUuICBSZXR1cm5zCiAgICAwIG9uIHN1Y2Nlc3MsIC0xIG90aGVyd2lzZS4gKi8KQEAgLTc1LDggKzExMCw3IEBACiB7CiAgICAgLyogSGVyZSwgdW5zaWduZWQgdHlwZXMgYXJlIHVzZWQgdG8gYXZvaWQgZGVhbGluZyB3aXRoIHNpZ25lZCBpbnRlZ2VyCiAgICAgICAgb3ZlcmZsb3csIHdoaWNoIGlzIHVuZGVmaW5lZCBpbiBDLiAqLwotICAgIHNpemVfdCBhbGxvYyA9IHNlbGYtPmJ1Zl9zaXplOwotICAgIGNoYXIgKm5ld19idWYgPSBOVUxMOworICAgIHNpemVfdCBhbGxvYyA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZi0+YnVmKTsKIAogICAgIGFzc2VydChzZWxmLT5idWYgIT0gTlVMTCk7CiAKQEAgLTEwNCwxMyArMTM4LDE1IEBACiAKICAgICBpZiAoYWxsb2MgPiAoKHNpemVfdCktMSkgLyBzaXplb2YoY2hhcikpCiAgICAgICAgIGdvdG8gb3ZlcmZsb3c7Ci0gICAgbmV3X2J1ZiA9IChjaGFyICopUHlNZW1fUmVhbGxvYyhzZWxmLT5idWYsIGFsbG9jICogc2l6ZW9mKGNoYXIpKTsKLSAgICBpZiAobmV3X2J1ZiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChTSEFSRURfQlVGKHNlbGYpKSB7CisgICAgICAgIGlmICh1bnNoYXJlX2J1ZmZlcihzZWxmLCBhbGxvYykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBzZWxmLT5idWZfc2l6ZSA9IGFsbG9jOwotICAgIHNlbGYtPmJ1ZiA9IG5ld19idWY7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnNlbGYtPmJ1ZiwgYWxsb2MpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKICAgICByZXR1cm4gMDsKIApAQCAtMTI1LDEyICsxNjEsMTggQEAKIHN0YXRpYyBQeV9zc2l6ZV90CiB3cml0ZV9ieXRlcyhieXRlc2lvICpzZWxmLCBjb25zdCBjaGFyICpieXRlcywgUHlfc3NpemVfdCBsZW4pCiB7CisgICAgc2l6ZV90IGVuZHBvczsKICAgICBhc3NlcnQoc2VsZi0+YnVmICE9IE5VTEwpOwogICAgIGFzc2VydChzZWxmLT5wb3MgPj0gMCk7CiAgICAgYXNzZXJ0KGxlbiA+PSAwKTsKIAotICAgIGlmICgoc2l6ZV90KXNlbGYtPnBvcyArIGxlbiA+IHNlbGYtPmJ1Zl9zaXplKSB7Ci0gICAgICAgIGlmIChyZXNpemVfYnVmZmVyKHNlbGYsIChzaXplX3Qpc2VsZi0+cG9zICsgbGVuKSA8IDApCisgICAgZW5kcG9zID0gKHNpemVfdClzZWxmLT5wb3MgKyBsZW47CisgICAgaWYgKGVuZHBvcyA+IChzaXplX3QpUHlCeXRlc19HRVRfU0laRShzZWxmLT5idWYpKSB7CisgICAgICAgIGlmIChyZXNpemVfYnVmZmVyKHNlbGYsIGVuZHBvcykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBlbHNlIGlmIChTSEFSRURfQlVGKHNlbGYpKSB7CisgICAgICAgIGlmICh1bnNoYXJlX2J1ZmZlcihzZWxmLCBQeV9NQVgoZW5kcG9zLCAoc2l6ZV90KXNlbGYtPnN0cmluZ19zaXplKSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIApAQCAtMTQzLDE4ICsxODUsMTggQEAKICAgICAgICAgICB8ICAgfCAgICAgICAgICAgIDwtLXRvIHBhZC0tPnw8LS0tdG8gd3JpdGUtLS0+ICAgIHwKICAgICAgICAgICAwICAgYnVmICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uCiAgICAgICAgICovCi0gICAgICAgIG1lbXNldChzZWxmLT5idWYgKyBzZWxmLT5zdHJpbmdfc2l6ZSwgJ1wwJywKKyAgICAgICAgbWVtc2V0KFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmJ1ZikgKyBzZWxmLT5zdHJpbmdfc2l6ZSwgJ1wwJywKICAgICAgICAgICAgICAgIChzZWxmLT5wb3MgLSBzZWxmLT5zdHJpbmdfc2l6ZSkgKiBzaXplb2YoY2hhcikpOwogICAgIH0KIAogICAgIC8qIENvcHkgdGhlIGRhdGEgdG8gdGhlIGludGVybmFsIGJ1ZmZlciwgb3ZlcndyaXRpbmcgc29tZSBvZiB0aGUgZXhpc3RpbmcKICAgICAgICBkYXRhIGlmIHNlbGYtPnBvcyA8IHNlbGYtPnN0cmluZ19zaXplLiAqLwotICAgIG1lbWNweShzZWxmLT5idWYgKyBzZWxmLT5wb3MsIGJ5dGVzLCBsZW4pOwotICAgIHNlbGYtPnBvcyArPSBsZW47CisgICAgbWVtY3B5KFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmJ1ZikgKyBzZWxmLT5wb3MsIGJ5dGVzLCBsZW4pOworICAgIHNlbGYtPnBvcyA9IGVuZHBvczsKIAogICAgIC8qIFNldCB0aGUgbmV3IGxlbmd0aCBvZiB0aGUgaW50ZXJuYWwgc3RyaW5nIGlmIGl0IGhhcyBjaGFuZ2VkLiAqLwotICAgIGlmIChzZWxmLT5zdHJpbmdfc2l6ZSA8IHNlbGYtPnBvcykgewotICAgICAgICBzZWxmLT5zdHJpbmdfc2l6ZSA9IHNlbGYtPnBvczsKKyAgICBpZiAoKHNpemVfdClzZWxmLT5zdHJpbmdfc2l6ZSA8IGVuZHBvcykgeworICAgICAgICBzZWxmLT5zdHJpbmdfc2l6ZSA9IGVuZHBvczsKICAgICB9CiAKICAgICByZXR1cm4gbGVuOwpAQCAtMTcxLDQwICsyMTMsNzEgQEAKICAgICB9CiB9CiAKLVB5RG9jX1NUUlZBUihyZWFkYWJsZV9kb2MsCi0icmVhZGFibGUoKSAtPiBib29sLiBSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgcmVhZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLnJlYWRhYmxlCiAKLVB5RG9jX1NUUlZBUih3cml0YWJsZV9kb2MsCi0id3JpdGFibGUoKSAtPiBib29sLiBSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgd3JpdHRlbi4iKTsKK1JldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSByZWFkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoc2Vla2FibGVfZG9jLAotInNlZWthYmxlKCkgLT4gYm9vbC4gUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHNlZWtlZC4iKTsKLQotLyogR2VuZXJpYyBnZXR0ZXIgZm9yIHRoZSB3cml0YWJsZSwgcmVhZGFibGUgYW5kIHNlZWthYmxlIHByb3BlcnRpZXMgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1yZXR1cm5fbm90X2Nsb3NlZChieXRlc2lvICpzZWxmKQorX2lvX0J5dGVzSU9fcmVhZGFibGVfaW1wbChieXRlc2lvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRlOTM4MjJhZDViNjIyNjMgaW5wdXQ9OTZjNWQwY2NjZmIyOWY1Y10qLwogewogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKICAgICBQeV9SRVRVUk5fVFJVRTsKIH0KIAotUHlEb2NfU1RSVkFSKGZsdXNoX2RvYywKLSJmbHVzaCgpIC0+IE5vbmUuICBEb2VzIG5vdGhpbmcuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy53cml0YWJsZQorCitSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgd3JpdHRlbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzaW9fZmx1c2goYnl0ZXNpbyAqc2VsZikKK19pb19CeXRlc0lPX3dyaXRhYmxlX2ltcGwoYnl0ZXNpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NGZmNmEyNTRiMTE1MGI4IGlucHV0PTcwMGVlZDgwODI3NzU2MGFdKi8KK3sKKyAgICBDSEVDS19DTE9TRUQoc2VsZik7CisgICAgUHlfUkVUVVJOX1RSVUU7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLnNlZWthYmxlCisKK1JldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSBzZWVrZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19zZWVrYWJsZV9pbXBsKGJ5dGVzaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmI0MTdmNDZkY2MwOWI1NiBpbnB1dD05NDIxZjY1NjI3YTM0NGRkXSovCit7CisgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOworICAgIFB5X1JFVFVSTl9UUlVFOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5mbHVzaAorCitEb2VzIG5vdGhpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19mbHVzaF9pbXBsKGJ5dGVzaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTg3ZTNkNzgxY2ExMzRhMCBpbnB1dD01NjFlYTQ5MGJlNDU4MWE3XSovCiB7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoZ2V0YnVmZmVyX2RvYywKLSJnZXRidWZmZXIoKSAtPiBieXRlcy5cbiIKLSJcbiIKLSJHZXQgYSByZWFkLXdyaXRlIHZpZXcgb3ZlciB0aGUgY29udGVudHMgb2YgdGhlIEJ5dGVzSU8gb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8uZ2V0YnVmZmVyCisKK0dldCBhIHJlYWQtd3JpdGUgdmlldyBvdmVyIHRoZSBjb250ZW50cyBvZiB0aGUgQnl0ZXNJTyBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2lvX2dldGJ1ZmZlcihieXRlc2lvICpzZWxmKQorX2lvX0J5dGVzSU9fZ2V0YnVmZmVyX2ltcGwoYnl0ZXNpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MmNkN2M2ZTEzYWEwOWVkIGlucHV0PThmNzM4ZWY2MTU4NjUxNzZdKi8KIHsKICAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSAmX1B5Qnl0ZXNJT0J1ZmZlcl9UeXBlOwogICAgIGJ5dGVzaW9idWYgKmJ1ZjsKQEAgLTIyMiw1OSArMjk1LDEwNCBAQAogICAgIHJldHVybiB2aWV3OwogfQogCi1QeURvY19TVFJWQVIoZ2V0dmFsX2RvYywKLSJnZXR2YWx1ZSgpIC0+IGJ5dGVzLlxuIgotIlxuIgotIlJldHJpZXZlIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIEJ5dGVzSU8gb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8uZ2V0dmFsdWUKKworUmV0cmlldmUgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgQnl0ZXNJTyBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2lvX2dldHZhbHVlKGJ5dGVzaW8gKnNlbGYpCitfaW9fQnl0ZXNJT19nZXR2YWx1ZV9pbXBsKGJ5dGVzaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjNmNmEzMjMzYzhmZDYyOCBpbnB1dD00YjQwM2FjMGFmMzk3M2VkXSovCiB7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwotICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHNlbGYtPmJ1Ziwgc2VsZi0+c3RyaW5nX3NpemUpOworICAgIGlmIChzZWxmLT5zdHJpbmdfc2l6ZSA8PSAxIHx8IHNlbGYtPmV4cG9ydHMgPiAwKQorICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5idWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5zdHJpbmdfc2l6ZSk7CisKKyAgICBpZiAoc2VsZi0+c3RyaW5nX3NpemUgIT0gUHlCeXRlc19HRVRfU0laRShzZWxmLT5idWYpKSB7CisgICAgICAgIGlmIChTSEFSRURfQlVGKHNlbGYpKSB7CisgICAgICAgICAgICBpZiAodW5zaGFyZV9idWZmZXIoc2VsZiwgc2VsZi0+c3RyaW5nX3NpemUpIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnNlbGYtPmJ1Ziwgc2VsZi0+c3RyaW5nX3NpemUpIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9JTkNSRUYoc2VsZi0+YnVmKTsKKyAgICByZXR1cm4gc2VsZi0+YnVmOwogfQogCi1QeURvY19TVFJWQVIoaXNhdHR5X2RvYywKLSJpc2F0dHkoKSAtPiBGYWxzZS5cbiIKLSJcbiIKLSJBbHdheXMgcmV0dXJucyBGYWxzZSBzaW5jZSBCeXRlc0lPIG9iamVjdHMgYXJlIG5vdCBjb25uZWN0ZWRcbiIKLSJ0byBhIHR0eS1saWtlIGRldmljZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLmlzYXR0eQorCitBbHdheXMgcmV0dXJucyBGYWxzZS4KKworQnl0ZXNJTyBvYmplY3RzIGFyZSBub3QgY29ubmVjdGVkIHRvIGEgVFRZLWxpa2UgZGV2aWNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb19pc2F0dHkoYnl0ZXNpbyAqc2VsZikKK19pb19CeXRlc0lPX2lzYXR0eV9pbXBsKGJ5dGVzaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGY2NzcxMmU2NjlmNmM4ZiBpbnB1dD02Zjk3ZjA5ODVkMTNmODI3XSovCiB7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogICAgIFB5X1JFVFVSTl9GQUxTRTsKIH0KIAotUHlEb2NfU1RSVkFSKHRlbGxfZG9jLAotInRlbGwoKSAtPiBjdXJyZW50IGZpbGUgcG9zaXRpb24sIGFuIGludGVnZXJcbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8udGVsbAorCitDdXJyZW50IGZpbGUgcG9zaXRpb24sIGFuIGludGVnZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2lvX3RlbGwoYnl0ZXNpbyAqc2VsZikKK19pb19CeXRlc0lPX3RlbGxfaW1wbChieXRlc2lvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI1NGIwZjkzY2QwZTVlMWQgaW5wdXQ9YjEwNmFkZjA5OWNiMzY1N10qLwogewogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPnBvcyk7CiB9CiAKLVB5RG9jX1NUUlZBUihyZWFkX2RvYywKLSJyZWFkKFtzaXplXSkgLT4gcmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGEgYnl0ZXMgb2JqZWN0LlxuIgotIlxuIgotIklmIHRoZSBzaXplIGFyZ3VtZW50IGlzIG5lZ2F0aXZlLCByZWFkIHVudGlsIEVPRiBpcyByZWFjaGVkLlxuIgotIlJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLiIpOworc3RhdGljIFB5T2JqZWN0ICoKK3JlYWRfYnl0ZXMoYnl0ZXNpbyAqc2VsZiwgUHlfc3NpemVfdCBzaXplKQoreworICAgIGNoYXIgKm91dHB1dDsKKworICAgIGFzc2VydChzZWxmLT5idWYgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHNpemUgPD0gc2VsZi0+c3RyaW5nX3NpemUpOworICAgIGlmIChzaXplID4gMSAmJgorICAgICAgICBzZWxmLT5wb3MgPT0gMCAmJiBzaXplID09IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZi0+YnVmKSAmJgorICAgICAgICBzZWxmLT5leHBvcnRzID09IDApIHsKKyAgICAgICAgc2VsZi0+cG9zICs9IHNpemU7CisgICAgICAgIFB5X0lOQ1JFRihzZWxmLT5idWYpOworICAgICAgICByZXR1cm4gc2VsZi0+YnVmOworICAgIH0KKworICAgIG91dHB1dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmJ1ZikgKyBzZWxmLT5wb3M7CisgICAgc2VsZi0+cG9zICs9IHNpemU7CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUob3V0cHV0LCBzaXplKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8ucmVhZAorICAgIHNpemUgYXMgYXJnOiBvYmplY3QgPSBOb25lCisgICAgLworCitSZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcywgcmV0dXJuZWQgYXMgYSBieXRlcyBvYmplY3QuCisKK0lmIHRoZSBzaXplIGFyZ3VtZW50IGlzIG5lZ2F0aXZlLCByZWFkIHVudGlsIEVPRiBpcyByZWFjaGVkLgorUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2lvX3JlYWQoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fQnl0ZXNJT19yZWFkX2ltcGwoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NWRhY2I1MzVjMWUxNzgxIGlucHV0PWNjN2JhNGE3OTdiYjE1NTVdKi8KIHsKICAgICBQeV9zc2l6ZV90IHNpemUsIG47Ci0gICAgY2hhciAqb3V0cHV0OwotICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwogCiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzpyZWFkIiwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKFB5TG9uZ19DaGVjayhhcmcpKSB7CiAgICAgICAgIHNpemUgPSBQeUxvbmdfQXNTc2l6ZV90KGFyZyk7CiAgICAgICAgIGlmIChzaXplID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCkBAIC0yOTgsNTIgKzQxNiw0OCBAQAogICAgICAgICAgICAgc2l6ZSA9IDA7CiAgICAgfQogCi0gICAgYXNzZXJ0KHNlbGYtPmJ1ZiAhPSBOVUxMKTsKLSAgICBvdXRwdXQgPSBzZWxmLT5idWYgKyBzZWxmLT5wb3M7Ci0gICAgc2VsZi0+cG9zICs9IHNpemU7Ci0KLSAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShvdXRwdXQsIHNpemUpOworICAgIHJldHVybiByZWFkX2J5dGVzKHNlbGYsIHNpemUpOwogfQogCiAKLVB5RG9jX1NUUlZBUihyZWFkMV9kb2MsCi0icmVhZDEoc2l6ZSkgLT4gcmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGEgYnl0ZXMgb2JqZWN0LlxuIgotIlxuIgotIklmIHRoZSBzaXplIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIG9taXR0ZWQsIHJlYWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuXG4iCi0iUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5yZWFkMQorICAgIHNpemU6IG9iamVjdAorICAgIC8KKworUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGEgYnl0ZXMgb2JqZWN0LgorCitJZiB0aGUgc2l6ZSBhcmd1bWVudCBpcyBuZWdhdGl2ZSBvciBvbWl0dGVkLCByZWFkIHVudGlsIEVPRiBpcyByZWFjaGVkLgorUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2lvX3JlYWQxKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICpuKQorX2lvX0J5dGVzSU9fcmVhZDEoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKnNpemUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTYwMjFmNWQwYWMzZDRlMiBpbnB1dD1kNGY0MGJiOGYyZjk5NDE4XSovCiB7Ci0gICAgUHlPYmplY3QgKmFyZywgKnJlczsKLQotICAgIGFyZyA9IFB5VHVwbGVfUGFjaygxLCBuKTsKLSAgICBpZiAoYXJnID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyAgPSBieXRlc2lvX3JlYWQoc2VsZiwgYXJnKTsKLSAgICBQeV9ERUNSRUYoYXJnKTsKLSAgICByZXR1cm4gcmVzOworICAgIHJldHVybiBfaW9fQnl0ZXNJT19yZWFkX2ltcGwoc2VsZiwgc2l6ZSk7CiB9CiAKLVB5RG9jX1NUUlZBUihyZWFkbGluZV9kb2MsCi0icmVhZGxpbmUoW3NpemVdKSAtPiBuZXh0IGxpbmUgZnJvbSB0aGUgZmlsZSwgYXMgYSBieXRlcyBvYmplY3QuXG4iCi0iXG4iCi0iUmV0YWluIG5ld2xpbmUuICBBIG5vbi1uZWdhdGl2ZSBzaXplIGFyZ3VtZW50IGxpbWl0cyB0aGUgbWF4aW11bVxuIgotIm51bWJlciBvZiBieXRlcyB0byByZXR1cm4gKGFuIGluY29tcGxldGUgbGluZSBtYXkgYmUgcmV0dXJuZWQgdGhlbikuXG4iCi0iUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLnJlYWRsaW5lCisgICAgc2l6ZSBhcyBhcmc6IG9iamVjdCA9IE5vbmUKKyAgICAvCisKK05leHQgbGluZSBmcm9tIHRoZSBmaWxlLCBhcyBhIGJ5dGVzIG9iamVjdC4KKworUmV0YWluIG5ld2xpbmUuICBBIG5vbi1uZWdhdGl2ZSBzaXplIGFyZ3VtZW50IGxpbWl0cyB0aGUgbWF4aW11bQorbnVtYmVyIG9mIGJ5dGVzIHRvIHJldHVybiAoYW4gaW5jb21wbGV0ZSBsaW5lIG1heSBiZSByZXR1cm5lZCB0aGVuKS4KK1JldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb19yZWFkbGluZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19CeXRlc0lPX3JlYWRsaW5lX2ltcGwoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xYzIxMTU1MzRhNGY5Mjc2IGlucHV0PWNhMzFmMDZkZTZlYWIyNTddKi8KIHsKICAgICBQeV9zc2l6ZV90IHNpemUsIG47Ci0gICAgY2hhciAqb3V0cHV0OwotICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwogCiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzpyZWFkbGluZSIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkgewogICAgICAgICBzaXplID0gUHlMb25nX0FzU3NpemVfdChhcmcpOwogICAgICAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQpAQCAtMzU5LDM3ICs0NzMsMzMgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgbiA9IGdldF9saW5lKHNlbGYsICZvdXRwdXQpOworICAgIG4gPSBzY2FuX2VvbChzZWxmLCBzaXplKTsKIAotICAgIGlmIChzaXplID49IDAgJiYgc2l6ZSA8IG4pIHsKLSAgICAgICAgc2l6ZSA9IG4gLSBzaXplOwotICAgICAgICBuIC09IHNpemU7Ci0gICAgICAgIHNlbGYtPnBvcyAtPSBzaXplOwotICAgIH0KLQotICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKG91dHB1dCwgbik7CisgICAgcmV0dXJuIHJlYWRfYnl0ZXMoc2VsZiwgbik7CiB9CiAKLVB5RG9jX1NUUlZBUihyZWFkbGluZXNfZG9jLAotInJlYWRsaW5lcyhbc2l6ZV0pIC0+IGxpc3Qgb2Ygc3RyaW5ncywgZWFjaCBhIGxpbmUgZnJvbSB0aGUgZmlsZS5cbiIKLSJcbiIKLSJDYWxsIHJlYWRsaW5lKCkgcmVwZWF0ZWRseSBhbmQgcmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgc28gcmVhZC5cbiIKLSJUaGUgb3B0aW9uYWwgc2l6ZSBhcmd1bWVudCwgaWYgZ2l2ZW4sIGlzIGFuIGFwcHJveGltYXRlIGJvdW5kIG9uIHRoZVxuIgotInRvdGFsIG51bWJlciBvZiBieXRlcyBpbiB0aGUgbGluZXMgcmV0dXJuZWQuXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLnJlYWRsaW5lcworICAgIHNpemUgYXMgYXJnOiBvYmplY3QgPSBOb25lCisgICAgLworCitMaXN0IG9mIGJ5dGVzIG9iamVjdHMsIGVhY2ggYSBsaW5lIGZyb20gdGhlIGZpbGUuCisKK0NhbGwgcmVhZGxpbmUoKSByZXBlYXRlZGx5IGFuZCByZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBzbyByZWFkLgorVGhlIG9wdGlvbmFsIHNpemUgYXJndW1lbnQsIGlmIGdpdmVuLCBpcyBhbiBhcHByb3hpbWF0ZSBib3VuZCBvbiB0aGUKK3RvdGFsIG51bWJlciBvZiBieXRlcyBpbiB0aGUgbGluZXMgcmV0dXJuZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2lvX3JlYWRsaW5lcyhieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19CeXRlc0lPX3JlYWRsaW5lc19pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDliOGUzNGM4ODA4MDhmZiBpbnB1dD02OTFhYTEzMTRmMmMyYTg3XSovCiB7CiAgICAgUHlfc3NpemVfdCBtYXhzaXplLCBzaXplLCBuOwogICAgIFB5T2JqZWN0ICpyZXN1bHQsICpsaW5lOwogICAgIGNoYXIgKm91dHB1dDsKLSAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKIAogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86cmVhZGxpbmVzIiwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKFB5TG9uZ19DaGVjayhhcmcpKSB7CiAgICAgICAgIG1heHNpemUgPSBQeUxvbmdfQXNTc2l6ZV90KGFyZyk7CiAgICAgICAgIGlmIChtYXhzaXplID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCkBAIC00MTAsNyArNTIwLDkgQEAKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB3aGlsZSAoKG4gPSBnZXRfbGluZShzZWxmLCAmb3V0cHV0KSkgIT0gMCkgeworICAgIG91dHB1dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmJ1ZikgKyBzZWxmLT5wb3M7CisgICAgd2hpbGUgKChuID0gc2Nhbl9lb2woc2VsZiwgLTEpKSAhPSAwKSB7CisgICAgICAgIHNlbGYtPnBvcyArPSBuOwogICAgICAgICBsaW5lID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShvdXRwdXQsIG4pOwogICAgICAgICBpZiAoIWxpbmUpCiAgICAgICAgICAgICBnb3RvIG9uX2Vycm9yOwpAQCAtNDIyLDYgKzUzNCw3IEBACiAgICAgICAgIHNpemUgKz0gbjsKICAgICAgICAgaWYgKG1heHNpemUgPiAwICYmIHNpemUgPj0gbWF4c2l6ZSkKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBvdXRwdXQgKz0gbjsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIApAQCAtNDMwLDI1ICs1NDMsMjcgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlEb2NfU1RSVkFSKHJlYWRpbnRvX2RvYywKLSJyZWFkaW50byhieXRlYXJyYXkpIC0+IGludC4gIFJlYWQgdXAgdG8gbGVuKGIpIGJ5dGVzIGludG8gYi5cbiIKLSJcbiIKLSJSZXR1cm5zIG51bWJlciBvZiBieXRlcyByZWFkICgwIGZvciBFT0YpLCBvciBOb25lIGlmIHRoZSBvYmplY3RcbiIKLSJpcyBzZXQgbm90IHRvIGJsb2NrIGFzIGhhcyBubyBkYXRhIHRvIHJlYWQuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5yZWFkaW50bworICAgIGJ1ZmZlcjogUHlfYnVmZmVyKGFjY2VwdD17cndidWZmZXJ9KQorICAgIC8KKworUmVhZCB1cCB0byBsZW4oYnVmZmVyKSBieXRlcyBpbnRvIGJ1ZmZlci4KKworUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgcmVhZCAoMCBmb3IgRU9GKSwgb3IgTm9uZSBpZiB0aGUgb2JqZWN0CitpcyBzZXQgbm90IHRvIGJsb2NrIGFzIGhhcyBubyBkYXRhIHRvIHJlYWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2lvX3JlYWRpbnRvKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCitfaW9fQnl0ZXNJT19yZWFkaW50b19pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE1ZDQwNzIxN2RjZjA2MzkgaW5wdXQ9NzE1ODFmMzI2MzVjM2EzMV0qLwogewotICAgIFB5X2J1ZmZlciBidWZmZXI7CiAgICAgUHlfc3NpemVfdCBsZW4sIG47CiAKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqIiwgJmJ1ZmZlcikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgLyogYWRqdXN0IGludmFsaWQgc2l6ZXMgKi8KLSAgICBsZW4gPSBidWZmZXIubGVuOworICAgIGxlbiA9IGJ1ZmZlci0+bGVuOwogICAgIG4gPSBzZWxmLT5zdHJpbmdfc2l6ZSAtIHNlbGYtPnBvczsKICAgICBpZiAobGVuID4gbikgewogICAgICAgICBsZW4gPSBuOwpAQCAtNDU2LDMzICs1NzEsMzQgQEAKICAgICAgICAgICAgIGxlbiA9IDA7CiAgICAgfQogCi0gICAgbWVtY3B5KGJ1ZmZlci5idWYsIHNlbGYtPmJ1ZiArIHNlbGYtPnBvcywgbGVuKTsKKyAgICBtZW1jcHkoYnVmZmVyLT5idWYsIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmJ1ZikgKyBzZWxmLT5wb3MsIGxlbik7CiAgICAgYXNzZXJ0KHNlbGYtPnBvcyArIGxlbiA8IFBZX1NTSVpFX1RfTUFYKTsKICAgICBhc3NlcnQobGVuID49IDApOwogICAgIHNlbGYtPnBvcyArPSBsZW47Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKIAogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QobGVuKTsKIH0KIAotUHlEb2NfU1RSVkFSKHRydW5jYXRlX2RvYywKLSJ0cnVuY2F0ZShbc2l6ZV0pIC0+IGludC4gIFRydW5jYXRlIHRoZSBmaWxlIHRvIGF0IG1vc3Qgc2l6ZSBieXRlcy5cbiIKLSJcbiIKLSJTaXplIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24sIGFzIHJldHVybmVkIGJ5IHRlbGwoKS5cbiIKLSJUaGUgY3VycmVudCBmaWxlIHBvc2l0aW9uIGlzIHVuY2hhbmdlZC4gIFJldHVybnMgdGhlIG5ldyBzaXplLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy50cnVuY2F0ZQorICAgIHNpemUgYXMgYXJnOiBvYmplY3QgPSBOb25lCisgICAgLworCitUcnVuY2F0ZSB0aGUgZmlsZSB0byBhdCBtb3N0IHNpemUgYnl0ZXMuCisKK1NpemUgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYXMgcmV0dXJuZWQgYnkgdGVsbCgpLgorVGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiBpcyB1bmNoYW5nZWQuICBSZXR1cm5zIHRoZSBuZXcgc2l6ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzaW9fdHJ1bmNhdGUoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fQnl0ZXNJT190cnVuY2F0ZV9pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODFlNmJlNjBlNjdkZGQ2NiBpbnB1dD0xMWVkMTk2NjgzNTQ2MmJhXSovCiB7CiAgICAgUHlfc3NpemVfdCBzaXplOwotICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwogCiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogICAgIENIRUNLX0VYUE9SVFMoc2VsZik7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPOnRydW5jYXRlIiwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKFB5TG9uZ19DaGVjayhhcmcpKSB7CiAgICAgICAgIHNpemUgPSBQeUxvbmdfQXNTc2l6ZV90KGFyZyk7CiAgICAgICAgIGlmIChzaXplID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCkBAIC01MTYsNDkgKzYzMiw0OSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzaW9faXRlcm5leHQoYnl0ZXNpbyAqc2VsZikKIHsKLSAgICBjaGFyICpuZXh0OwogICAgIFB5X3NzaXplX3QgbjsKIAogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAotICAgIG4gPSBnZXRfbGluZShzZWxmLCAmbmV4dCk7CisgICAgbiA9IHNjYW5fZW9sKHNlbGYsIC0xKTsKIAotICAgIGlmICghbmV4dCB8fCBuID09IDApCisgICAgaWYgKG4gPT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShuZXh0LCBuKTsKKyAgICByZXR1cm4gcmVhZF9ieXRlcyhzZWxmLCBuKTsKIH0KIAotUHlEb2NfU1RSVkFSKHNlZWtfZG9jLAotInNlZWsocG9zWywgd2hlbmNlXSkgLT4gaW50LiAgQ2hhbmdlIHN0cmVhbSBwb3NpdGlvbi5cbiIKLSJcbiIKLSJTZWVrIHRvIGJ5dGUgb2Zmc2V0IHBvcyByZWxhdGl2ZSB0byBwb3NpdGlvbiBpbmRpY2F0ZWQgYnkgd2hlbmNlOlxuIgotIiAgICAgMCAgU3RhcnQgb2Ygc3RyZWFtICh0aGUgZGVmYXVsdCkuICBwb3Mgc2hvdWxkIGJlID49IDA7XG4iCi0iICAgICAxICBDdXJyZW50IHBvc2l0aW9uIC0gcG9zIG1heSBiZSBuZWdhdGl2ZTtcbiIKLSIgICAgIDIgIEVuZCBvZiBzdHJlYW0gLSBwb3MgdXN1YWxseSBuZWdhdGl2ZS5cbiIKLSJSZXR1cm5zIHRoZSBuZXcgYWJzb2x1dGUgcG9zaXRpb24uIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5zZWVrCisgICAgcG9zOiBQeV9zc2l6ZV90CisgICAgd2hlbmNlOiBpbnQgPSAwCisgICAgLworCitDaGFuZ2Ugc3RyZWFtIHBvc2l0aW9uLgorCitTZWVrIHRvIGJ5dGUgb2Zmc2V0IHBvcyByZWxhdGl2ZSB0byBwb3NpdGlvbiBpbmRpY2F0ZWQgYnkgd2hlbmNlOgorICAgICAwICBTdGFydCBvZiBzdHJlYW0gKHRoZSBkZWZhdWx0KS4gIHBvcyBzaG91bGQgYmUgPj0gMDsKKyAgICAgMSAgQ3VycmVudCBwb3NpdGlvbiAtIHBvcyBtYXkgYmUgbmVnYXRpdmU7CisgICAgIDIgIEVuZCBvZiBzdHJlYW0gLSBwb3MgdXN1YWxseSBuZWdhdGl2ZS4KK1JldHVybnMgdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzaW9fc2VlayhieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19CeXRlc0lPX3NlZWtfaW1wbChieXRlc2lvICpzZWxmLCBQeV9zc2l6ZV90IHBvcywgaW50IHdoZW5jZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jMjYyMDRhNjhlOTE5MGU0IGlucHV0PTFlODc1ZTZlYmM2NTI5NDhdKi8KIHsKLSAgICBQeV9zc2l6ZV90IHBvczsKLSAgICBpbnQgbW9kZSA9IDA7Ci0KICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58aTpzZWVrIiwgJnBvcywgJm1vZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChwb3MgPCAwICYmIG1vZGUgPT0gMCkgeworICAgIGlmIChwb3MgPCAwICYmIHdoZW5jZSA9PSAwKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIHNlZWsgdmFsdWUgJXpkIiwgcG9zKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgLyogbW9kZSAwOiBvZmZzZXQgcmVsYXRpdmUgdG8gYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCi0gICAgICAgbW9kZSAxOiBvZmZzZXQgcmVsYXRpdmUgdG8gY3VycmVudCBwb3NpdGlvbi4KLSAgICAgICBtb2RlIDI6IG9mZnNldCByZWxhdGl2ZSB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuICovCi0gICAgaWYgKG1vZGUgPT0gMSkgeworICAgIC8qIHdoZW5jZSA9IDA6IG9mZnNldCByZWxhdGl2ZSB0byBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZy4KKyAgICAgICB3aGVuY2UgPSAxOiBvZmZzZXQgcmVsYXRpdmUgdG8gY3VycmVudCBwb3NpdGlvbi4KKyAgICAgICB3aGVuY2UgPSAyOiBvZmZzZXQgcmVsYXRpdmUgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiAqLworICAgIGlmICh3aGVuY2UgPT0gMSkgewogICAgICAgICBpZiAocG9zID4gUFlfU1NJWkVfVF9NQVggLSBzZWxmLT5wb3MpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuZXcgcG9zaXRpb24gdG9vIGxhcmdlIik7CkBAIC01NjYsNyArNjgyLDcgQEAKICAgICAgICAgfQogICAgICAgICBwb3MgKz0gc2VsZi0+cG9zOwogICAgIH0KLSAgICBlbHNlIGlmIChtb2RlID09IDIpIHsKKyAgICBlbHNlIGlmICh3aGVuY2UgPT0gMikgewogICAgICAgICBpZiAocG9zID4gUFlfU1NJWkVfVF9NQVggLSBzZWxmLT5zdHJpbmdfc2l6ZSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5ldyBwb3NpdGlvbiB0b28gbGFyZ2UiKTsKQEAgLTU3NCw5ICs2OTAsOSBAQAogICAgICAgICB9CiAgICAgICAgIHBvcyArPSBzZWxmLT5zdHJpbmdfc2l6ZTsKICAgICB9Ci0gICAgZWxzZSBpZiAobW9kZSAhPSAwKSB7CisgICAgZWxzZSBpZiAod2hlbmNlICE9IDApIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCB3aGVuY2UgKCVpLCBzaG91bGQgYmUgMCwgMSBvciAyKSIsIG1vZGUpOworICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgd2hlbmNlICglaSwgc2hvdWxkIGJlIDAsIDEgb3IgMikiLCB3aGVuY2UpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTU4Nyw1NCArNzAzLDYzIEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5wb3MpOwogfQogCi1QeURvY19TVFJWQVIod3JpdGVfZG9jLAotIndyaXRlKGJ5dGVzKSAtPiBpbnQuICBXcml0ZSBieXRlcyB0byBmaWxlLlxuIgotIlxuIgotIlJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy53cml0ZQorICAgIGI6IG9iamVjdAorICAgIC8KKworV3JpdGUgYnl0ZXMgdG8gZmlsZS4KKworUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzaW9fd3JpdGUoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKm9iaikKK19pb19CeXRlc0lPX3dyaXRlKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICpiKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUzMzE2ZDk5ODAwYTBiOTUgaW5wdXQ9ZjVlYzdjOGM2NGVkNzIwYV0qLwogewogICAgIFB5X3NzaXplX3QgbiA9IDA7CiAgICAgUHlfYnVmZmVyIGJ1ZjsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKICAgICBDSEVDS19FWFBPUlRTKHNlbGYpOwogCi0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihvYmosICZidWYsIFB5QlVGX0NPTlRJR19STykgPCAwKQorICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYiwgJmJ1ZiwgUHlCVUZfQ09OVElHX1JPKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKGJ1Zi5sZW4gIT0gMCkKICAgICAgICAgbiA9IHdyaXRlX2J5dGVzKHNlbGYsIGJ1Zi5idWYsIGJ1Zi5sZW4pOwotICAgIGlmIChuID49IDApCi0gICAgICAgIHJlc3VsdCA9IFB5TG9uZ19Gcm9tU3NpemVfdChuKTsKIAogICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gbiA+PSAwID8gUHlMb25nX0Zyb21Tc2l6ZV90KG4pIDogTlVMTDsKIH0KIAotUHlEb2NfU1RSVkFSKHdyaXRlbGluZXNfZG9jLAotIndyaXRlbGluZXMobGluZXMpIC0+IE5vbmUuICBXcml0ZSBieXRlcyBvYmplY3RzIHRvIHRoZSBmaWxlLlxuIgotIlxuIgotIk5vdGUgdGhhdCBuZXdsaW5lcyBhcmUgbm90IGFkZGVkLiAgVGhlIGFyZ3VtZW50IGNhbiBiZSBhbnkgaXRlcmFibGVcbiIKLSJvYmplY3QgcHJvZHVjaW5nIGJ5dGVzIG9iamVjdHMuIFRoaXMgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIHdyaXRlKCkgZm9yXG4iCi0iZWFjaCBieXRlcyBvYmplY3QuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy53cml0ZWxpbmVzCisgICAgbGluZXM6IG9iamVjdAorICAgIC8KKworV3JpdGUgbGluZXMgdG8gdGhlIGZpbGUuCisKK05vdGUgdGhhdCBuZXdsaW5lcyBhcmUgbm90IGFkZGVkLiAgbGluZXMgY2FuIGJlIGFueSBpdGVyYWJsZSBvYmplY3QKK3Byb2R1Y2luZyBieXRlcy1saWtlIG9iamVjdHMuIFRoaXMgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIHdyaXRlKCkgZm9yCitlYWNoIGVsZW1lbnQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2lvX3dyaXRlbGluZXMoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKnYpCitfaW9fQnl0ZXNJT193cml0ZWxpbmVzKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICpsaW5lcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZjMzYWEzMjcxYzkxNzUyIGlucHV0PWU5NzI1MzkxNzZmYzhmYzFdKi8KIHsKICAgICBQeU9iamVjdCAqaXQsICppdGVtOwogICAgIFB5T2JqZWN0ICpyZXQ7CiAKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAKLSAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIodik7CisgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGxpbmVzKTsKICAgICBpZiAoaXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICB3aGlsZSAoKGl0ZW0gPSBQeUl0ZXJfTmV4dChpdCkpICE9IE5VTEwpIHsKLSAgICAgICAgcmV0ID0gYnl0ZXNpb193cml0ZShzZWxmLCBpdGVtKTsKKyAgICAgICAgcmV0ID0gX2lvX0J5dGVzSU9fd3JpdGUoc2VsZiwgaXRlbSk7CiAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICAgICAgaWYgKHJldCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwpAQCAtNjUxLDE3ICs3NzYsMTggQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGNsb3NlX2RvYywKLSJjbG9zZSgpIC0+IE5vbmUuICBEaXNhYmxlIGFsbCBJL08gb3BlcmF0aW9ucy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLmNsb3NlCisKK0Rpc2FibGUgYWxsIEkvTyBvcGVyYXRpb25zLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb19jbG9zZShieXRlc2lvICpzZWxmKQorX2lvX0J5dGVzSU9fY2xvc2VfaW1wbChieXRlc2lvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE0NzFiYjk0MTFhZjg0YTAgaW5wdXQ9MzdlMWY1NTU1NmU2MWY2MF0qLwogewogICAgIENIRUNLX0VYUE9SVFMoc2VsZik7Ci0gICAgaWYgKHNlbGYtPmJ1ZiAhPSBOVUxMKSB7Ci0gICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+YnVmKTsKLSAgICAgICAgc2VsZi0+YnVmID0gTlVMTDsKLSAgICB9CisgICAgUHlfQ0xFQVIoc2VsZi0+YnVmKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtNjgzLDcgKzgwOSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNpb19nZXRzdGF0ZShieXRlc2lvICpzZWxmKQogewotICAgIFB5T2JqZWN0ICppbml0dmFsdWUgPSBieXRlc2lvX2dldHZhbHVlKHNlbGYpOworICAgIFB5T2JqZWN0ICppbml0dmFsdWUgPSBfaW9fQnl0ZXNJT19nZXR2YWx1ZV9pbXBsKHNlbGYpOwogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5T2JqZWN0ICpzdGF0ZTsKIApAQCAtNzMzLDcgKzg1OSw3IEBACiAKICAgICAvKiBTZXQgdGhlIHZhbHVlIG9mIHRoZSBpbnRlcm5hbCBidWZmZXIuIElmIHN0YXRlWzBdIGRvZXMgbm90IHN1cHBvcnQgdGhlCiAgICAgICAgYnVmZmVyIHByb3RvY29sLCBieXRlc2lvX3dyaXRlIHdpbGwgcmFpc2UgdGhlIGFwcHJvcHJpYXRlIFR5cGVFcnJvci4gKi8KLSAgICByZXN1bHQgPSBieXRlc2lvX3dyaXRlKHNlbGYsIFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIDApKTsKKyAgICByZXN1bHQgPSBfaW9fQnl0ZXNJT193cml0ZShzZWxmLCBQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCAwKSk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9ERUNSRUYocmVzdWx0KTsKQEAgLTc5MSwxMCArOTE3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJkZWFsbG9jYXRlZCBCeXRlc0lPIG9iamVjdCBoYXMgZXhwb3J0ZWQgYnVmZmVycyIpOwogICAgICAgICBQeUVycl9QcmludCgpOwogICAgIH0KLSAgICBpZiAoc2VsZi0+YnVmICE9IE5VTEwpIHsKLSAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5idWYpOwotICAgICAgICBzZWxmLT5idWYgPSBOVUxMOwotICAgIH0KKyAgICBQeV9DTEVBUihzZWxmLT5idWYpOwogICAgIFB5X0NMRUFSKHNlbGYtPmRpY3QpOwogICAgIGlmIChzZWxmLT53ZWFrcmVmbGlzdCAhPSBOVUxMKQogICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKChQeU9iamVjdCAqKSBzZWxmKTsKQEAgLTgxNCw3ICs5MzcsNyBAQAogICAgIC8qIHRwX2FsbG9jIGluaXRpYWxpemVzIGFsbCB0aGUgZmllbGRzIHRvIHplcm8uIFNvIHdlIGRvbid0IGhhdmUgdG8KICAgICAgICBpbml0aWFsaXplIHRoZW0gaGVyZS4gKi8KIAotICAgIHNlbGYtPmJ1ZiA9IChjaGFyICopUHlNZW1fTWFsbG9jKDApOworICAgIHNlbGYtPmJ1ZiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAgICAgaWYgKHNlbGYtPmJ1ZiA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CkBAIC04MjMsMjcgKzk0Niw0MCBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5fX2luaXRfXworICAgIGluaXRpYWxfYnl0ZXMgYXMgaW5pdHZhbHVlOiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSBiJycKKworQnVmZmVyZWQgSS9PIGltcGxlbWVudGF0aW9uIHVzaW5nIGFuIGluLW1lbW9yeSBieXRlcyBidWZmZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBpbnQKLWJ5dGVzaW9faW5pdChieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfaW9fQnl0ZXNJT19fX2luaXRfX19pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICppbml0dmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjVjMGM1MWUyNGM1YjYyMSBpbnB1dD1hYWM3ZjMxYjY3YmYwZmI2XSovCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7ImluaXRpYWxfYnl0ZXMiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqaW5pdHZhbHVlID0gTlVMTDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8TzpCeXRlc0lPIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbml0dmFsdWUpKQotICAgICAgICByZXR1cm4gLTE7Ci0KICAgICAvKiBJbiBjYXNlLCBfX2luaXRfXyBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMuICovCiAgICAgc2VsZi0+c3RyaW5nX3NpemUgPSAwOwogICAgIHNlbGYtPnBvcyA9IDA7CiAKKyAgICBpZiAoc2VsZi0+ZXhwb3J0cyA+IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkV4aXN0aW5nIGV4cG9ydHMgb2YgZGF0YTogb2JqZWN0IGNhbm5vdCBiZSByZS1zaXplZCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIGlmIChpbml0dmFsdWUgJiYgaW5pdHZhbHVlICE9IFB5X05vbmUpIHsKLSAgICAgICAgUHlPYmplY3QgKnJlczsKLSAgICAgICAgcmVzID0gYnl0ZXNpb193cml0ZShzZWxmLCBpbml0dmFsdWUpOwotICAgICAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgICAgICBzZWxmLT5wb3MgPSAwOworICAgICAgICBpZiAoUHlCeXRlc19DaGVja0V4YWN0KGluaXR2YWx1ZSkpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihpbml0dmFsdWUpOworICAgICAgICAgICAgUHlfU0VUUkVGKHNlbGYtPmJ1ZiwgaW5pdHZhbHVlKTsKKyAgICAgICAgICAgIHNlbGYtPnN0cmluZ19zaXplID0gUHlCeXRlc19HRVRfU0laRShpbml0dmFsdWUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlPYmplY3QgKnJlczsKKyAgICAgICAgICAgIHJlcyA9IF9pb19CeXRlc0lPX3dyaXRlKHNlbGYsIGluaXR2YWx1ZSk7CisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICBzZWxmLT5wb3MgPSAwOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC04NTQsOSArOTkwLDkgQEAKIHsKICAgICBQeV9zc2l6ZV90IHJlczsKIAotICAgIHJlcyA9IHNpemVvZihieXRlc2lvKTsKLSAgICBpZiAoc2VsZi0+YnVmKQotICAgICAgICByZXMgKz0gc2VsZi0+YnVmX3NpemU7CisgICAgcmVzID0gX1B5T2JqZWN0X1NJWkUoUHlfVFlQRShzZWxmKSk7CisgICAgaWYgKHNlbGYtPmJ1ZiAmJiAhU0hBUkVEX0JVRihzZWxmKSkKKyAgICAgICAgcmVzICs9IF9QeVN5c19HZXRTaXplT2Yoc2VsZi0+YnVmKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7CiB9CiAKQEAgLTg3NSw2ICsxMDExLDggQEAKIH0KIAogCisjaW5jbHVkZSAiY2xpbmljL2J5dGVzaW8uYy5oIgorCiBzdGF0aWMgUHlHZXRTZXREZWYgYnl0ZXNpb19nZXRzZXRsaXN0W10gPSB7CiAgICAgeyJjbG9zZWQiLCAgKGdldHRlcilieXRlc2lvX2dldF9jbG9zZWQsIE5VTEwsCiAgICAgICJUcnVlIGlmIHRoZSBmaWxlIGlzIGNsb3NlZC4ifSwKQEAgLTg4MiwzNiArMTAyMCwzMCBAQAogfTsKIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBieXRlc2lvX21ldGhvZHNbXSA9IHsKLSAgICB7InJlYWRhYmxlIiwgICAoUHlDRnVuY3Rpb24pcmV0dXJuX25vdF9jbG9zZWQsICBNRVRIX05PQVJHUywgcmVhZGFibGVfZG9jfSwKLSAgICB7InNlZWthYmxlIiwgICAoUHlDRnVuY3Rpb24pcmV0dXJuX25vdF9jbG9zZWQsICBNRVRIX05PQVJHUywgc2Vla2FibGVfZG9jfSwKLSAgICB7IndyaXRhYmxlIiwgICAoUHlDRnVuY3Rpb24pcmV0dXJuX25vdF9jbG9zZWQsICBNRVRIX05PQVJHUywgd3JpdGFibGVfZG9jfSwKLSAgICB7ImNsb3NlIiwgICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19jbG9zZSwgICAgICBNRVRIX05PQVJHUywgY2xvc2VfZG9jfSwKLSAgICB7ImZsdXNoIiwgICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19mbHVzaCwgICAgICBNRVRIX05PQVJHUywgZmx1c2hfZG9jfSwKLSAgICB7ImlzYXR0eSIsICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19pc2F0dHksICAgICBNRVRIX05PQVJHUywgaXNhdHR5X2RvY30sCi0gICAgeyJ0ZWxsIiwgICAgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fdGVsbCwgICAgICAgTUVUSF9OT0FSR1MsIHRlbGxfZG9jfSwKLSAgICB7IndyaXRlIiwgICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb193cml0ZSwgICAgICBNRVRIX08sIHdyaXRlX2RvY30sCi0gICAgeyJ3cml0ZWxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fd3JpdGVsaW5lcywgTUVUSF9PLCB3cml0ZWxpbmVzX2RvY30sCi0gICAgeyJyZWFkMSIsICAgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fcmVhZDEsICAgICAgTUVUSF9PLCByZWFkMV9kb2N9LAotICAgIHsicmVhZGludG8iLCAgIChQeUNGdW5jdGlvbilieXRlc2lvX3JlYWRpbnRvLCAgIE1FVEhfTywgcmVhZGludG9fZG9jfSwKLSAgICB7InJlYWRsaW5lIiwgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19yZWFkbGluZSwgICBNRVRIX1ZBUkFSR1MsIHJlYWRsaW5lX2RvY30sCi0gICAgeyJyZWFkbGluZXMiLCAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fcmVhZGxpbmVzLCAgTUVUSF9WQVJBUkdTLCByZWFkbGluZXNfZG9jfSwKLSAgICB7InJlYWQiLCAgICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19yZWFkLCAgICAgICBNRVRIX1ZBUkFSR1MsIHJlYWRfZG9jfSwKLSAgICB7ImdldGJ1ZmZlciIsICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19nZXRidWZmZXIsICBNRVRIX05PQVJHUywgIGdldGJ1ZmZlcl9kb2N9LAotICAgIHsiZ2V0dmFsdWUiLCAgIChQeUNGdW5jdGlvbilieXRlc2lvX2dldHZhbHVlLCAgIE1FVEhfTk9BUkdTLCAgZ2V0dmFsX2RvY30sCi0gICAgeyJzZWVrIiwgICAgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fc2VlaywgICAgICAgTUVUSF9WQVJBUkdTLCBzZWVrX2RvY30sCi0gICAgeyJ0cnVuY2F0ZSIsICAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fdHJ1bmNhdGUsICAgTUVUSF9WQVJBUkdTLCB0cnVuY2F0ZV9kb2N9LAorICAgIF9JT19CWVRFU0lPX1JFQURBQkxFX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1NFRUtBQkxFX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1dSSVRBQkxFX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX0NMT1NFX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX0ZMVVNIX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX0lTQVRUWV9NRVRIT0RERUYKKyAgICBfSU9fQllURVNJT19URUxMX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1dSSVRFX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1dSSVRFTElORVNfTUVUSE9EREVGCisgICAgX0lPX0JZVEVTSU9fUkVBRDFfTUVUSE9EREVGCisgICAgX0lPX0JZVEVTSU9fUkVBRElOVE9fTUVUSE9EREVGCisgICAgX0lPX0JZVEVTSU9fUkVBRExJTkVfTUVUSE9EREVGCisgICAgX0lPX0JZVEVTSU9fUkVBRExJTkVTX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1JFQURfTUVUSE9EREVGCisgICAgX0lPX0JZVEVTSU9fR0VUQlVGRkVSX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX0dFVFZBTFVFX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1NFRUtfTUVUSE9EREVGCisgICAgX0lPX0JZVEVTSU9fVFJVTkNBVEVfTUVUSE9EREVGCiAgICAgeyJfX2dldHN0YXRlX18iLCAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fZ2V0c3RhdGUsICBNRVRIX05PQVJHUywgTlVMTH0sCiAgICAgeyJfX3NldHN0YXRlX18iLCAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fc2V0c3RhdGUsICBNRVRIX08sIE5VTEx9LAogICAgIHsiX19zaXplb2ZfXyIsIChQeUNGdW5jdGlvbilieXRlc2lvX3NpemVvZiwgICAgIE1FVEhfTk9BUkdTLCBOVUxMfSwKICAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCi1QeURvY19TVFJWQVIoYnl0ZXNpb19kb2MsCi0iQnl0ZXNJTyhbYnVmZmVyXSkgLT4gb2JqZWN0XG4iCi0iXG4iCi0iQ3JlYXRlIGEgYnVmZmVyZWQgSS9PIGltcGxlbWVudGF0aW9uIHVzaW5nIGFuIGluLW1lbW9yeSBieXRlc1xuIgotImJ1ZmZlciwgcmVhZHkgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcuIik7Ci0KIFB5VHlwZU9iamVjdCBQeUJ5dGVzSU9fVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiX2lvLkJ5dGVzSU8iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uYW1lKi8KQEAgLTkzNCw3ICsxMDY2LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfAogICAgIFB5X1RQRkxBR1NfSEFWRV9HQywgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2ZsYWdzKi8KLSAgICBieXRlc2lvX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kb2MqLworICAgIF9pb19CeXRlc0lPX19faW5pdF9fX19kb2NfXywgICAgICAgICAgICAgICAvKnRwX2RvYyovCiAgICAgKHRyYXZlcnNlcHJvYylieXRlc2lvX3RyYXZlcnNlLCAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLwogICAgIChpbnF1aXJ5KWJ5dGVzaW9fY2xlYXIsICAgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSovCkBAIC05NDksNyArMTA4MSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3JfZ2V0Ki8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9zZXQqLwogICAgIG9mZnNldG9mKGJ5dGVzaW8sIGRpY3QpLCAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQqLwotICAgIChpbml0cHJvYylieXRlc2lvX2luaXQsICAgICAgICAgICAgICAgICAgICAvKnRwX2luaXQqLworICAgIF9pb19CeXRlc0lPX19faW5pdF9fLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2luaXQqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FsbG9jKi8KICAgICBieXRlc2lvX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uZXcqLwogfTsKQEAgLTk2NCwxOCArMTA5NiwyNCBAQAogc3RhdGljIGludAogYnl0ZXNpb2J1Zl9nZXRidWZmZXIoYnl0ZXNpb2J1ZiAqb2JqLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKIHsKLSAgICBpbnQgcmV0OwogICAgIGJ5dGVzaW8gKmIgPSAoYnl0ZXNpbyAqKSBvYmotPnNvdXJjZTsKKwogICAgIGlmICh2aWV3ID09IE5VTEwpIHsKLSAgICAgICAgYi0+ZXhwb3J0cysrOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgImJ5dGVzaW9idWZfZ2V0YnVmZmVyOiB2aWV3PT1OVUxMIGFyZ3VtZW50IGlzIG9ic29sZXRlIik7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgcmV0ID0gUHlCdWZmZXJfRmlsbEluZm8odmlldywgKFB5T2JqZWN0KilvYmosIGItPmJ1ZiwgYi0+c3RyaW5nX3NpemUsCisgICAgaWYgKFNIQVJFRF9CVUYoYikpIHsKKyAgICAgICAgaWYgKHVuc2hhcmVfYnVmZmVyKGIsIGItPnN0cmluZ19zaXplKSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogY2Fubm90IGZhaWwgaWYgdmlldyAhPSBOVUxMIGFuZCByZWFkb25seSA9PSAwICovCisgICAgKHZvaWQpUHlCdWZmZXJfRmlsbEluZm8odmlldywgKFB5T2JqZWN0KilvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoYi0+YnVmKSwgYi0+c3RyaW5nX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgZmxhZ3MpOwotICAgIGlmIChyZXQgPj0gMCkgewotICAgICAgICBiLT5leHBvcnRzKys7Ci0gICAgfQotICAgIHJldHVybiByZXQ7CisgICAgYi0+ZXhwb3J0cysrOworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL19pb21vZHVsZS5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvX2lvbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2FiYjkzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL19pb21vZHVsZS5jLmgKQEAgLTAsMCArMSwxNTkgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfaW9fb3Blbl9fZG9jX18sCisib3BlbigkbW9kdWxlLCAvLCBmaWxlLCBtb2RlPVwnclwnLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsXG4iCisiICAgICBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiT3BlbiBmaWxlIGFuZCByZXR1cm4gYSBzdHJlYW0uICBSYWlzZSBJT0Vycm9yIHVwb24gZmFpbHVyZS5cbiIKKyJcbiIKKyJmaWxlIGlzIGVpdGhlciBhIHRleHQgb3IgYnl0ZSBzdHJpbmcgZ2l2aW5nIHRoZSBuYW1lIChhbmQgdGhlIHBhdGhcbiIKKyJpZiB0aGUgZmlsZSBpc25cJ3QgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkpIG9mIHRoZSBmaWxlIHRvXG4iCisiYmUgb3BlbmVkIG9yIGFuIGludGVnZXIgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGJlXG4iCisid3JhcHBlZC4gKElmIGEgZmlsZSBkZXNjcmlwdG9yIGlzIGdpdmVuLCBpdCBpcyBjbG9zZWQgd2hlbiB0aGVcbiIKKyJyZXR1cm5lZCBJL08gb2JqZWN0IGlzIGNsb3NlZCwgdW5sZXNzIGNsb3NlZmQgaXMgc2V0IHRvIEZhbHNlLilcbiIKKyJcbiIKKyJtb2RlIGlzIGFuIG9wdGlvbmFsIHN0cmluZyB0aGF0IHNwZWNpZmllcyB0aGUgbW9kZSBpbiB3aGljaCB0aGUgZmlsZVxuIgorImlzIG9wZW5lZC4gSXQgZGVmYXVsdHMgdG8gXCdyXCcgd2hpY2ggbWVhbnMgb3BlbiBmb3IgcmVhZGluZyBpbiB0ZXh0XG4iCisibW9kZS4gIE90aGVyIGNvbW1vbiB2YWx1ZXMgYXJlIFwnd1wnIGZvciB3cml0aW5nICh0cnVuY2F0aW5nIHRoZSBmaWxlIGlmXG4iCisiaXQgYWxyZWFkeSBleGlzdHMpLCBcJ3hcJyBmb3IgY3JlYXRpbmcgYW5kIHdyaXRpbmcgdG8gYSBuZXcgZmlsZSwgYW5kXG4iCisiXCdhXCcgZm9yIGFwcGVuZGluZyAod2hpY2ggb24gc29tZSBVbml4IHN5c3RlbXMsIG1lYW5zIHRoYXQgYWxsIHdyaXRlc1xuIgorImFwcGVuZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgc2VlayBwb3NpdGlvbikuXG4iCisiSW4gdGV4dCBtb2RlLCBpZiBlbmNvZGluZyBpcyBub3Qgc3BlY2lmaWVkIHRoZSBlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtXG4iCisiZGVwZW5kZW50OiBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpIGlzIGNhbGxlZCB0byBnZXQgdGhlXG4iCisiY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuIChGb3IgcmVhZGluZyBhbmQgd3JpdGluZyByYXcgYnl0ZXMgdXNlIGJpbmFyeVxuIgorIm1vZGUgYW5kIGxlYXZlIGVuY29kaW5nIHVuc3BlY2lmaWVkLikgVGhlIGF2YWlsYWJsZSBtb2RlcyBhcmU6XG4iCisiXG4iCisiPT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIgorIkNoYXJhY3RlciBNZWFuaW5nXG4iCisiLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIgorIlwnclwnICAgICAgIG9wZW4gZm9yIHJlYWRpbmcgKGRlZmF1bHQpXG4iCisiXCd3XCcgICAgICAgb3BlbiBmb3Igd3JpdGluZywgdHJ1bmNhdGluZyB0aGUgZmlsZSBmaXJzdFxuIgorIlwneFwnICAgICAgIGNyZWF0ZSBhIG5ldyBmaWxlIGFuZCBvcGVuIGl0IGZvciB3cml0aW5nXG4iCisiXCdhXCcgICAgICAgb3BlbiBmb3Igd3JpdGluZywgYXBwZW5kaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgaWYgaXQgZXhpc3RzXG4iCisiXCdiXCcgICAgICAgYmluYXJ5IG1vZGVcbiIKKyJcJ3RcJyAgICAgICB0ZXh0IG1vZGUgKGRlZmF1bHQpXG4iCisiXCcrXCcgICAgICAgb3BlbiBhIGRpc2sgZmlsZSBmb3IgdXBkYXRpbmcgKHJlYWRpbmcgYW5kIHdyaXRpbmcpXG4iCisiXCdVXCcgICAgICAgdW5pdmVyc2FsIG5ld2xpbmUgbW9kZSAoZGVwcmVjYXRlZClcbiIKKyI9PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iCisiXG4iCisiVGhlIGRlZmF1bHQgbW9kZSBpcyBcJ3J0XCcgKG9wZW4gZm9yIHJlYWRpbmcgdGV4dCkuIEZvciBiaW5hcnkgcmFuZG9tXG4iCisiYWNjZXNzLCB0aGUgbW9kZSBcJ3crYlwnIG9wZW5zIGFuZCB0cnVuY2F0ZXMgdGhlIGZpbGUgdG8gMCBieXRlcywgd2hpbGVcbiIKKyJcJ3IrYlwnIG9wZW5zIHRoZSBmaWxlIHdpdGhvdXQgdHJ1bmNhdGlvbi4gVGhlIFwneFwnIG1vZGUgaW1wbGllcyBcJ3dcJyBhbmRcbiIKKyJyYWlzZXMgYW4gYEZpbGVFeGlzdHNFcnJvcmAgaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMuXG4iCisiXG4iCisiUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBmaWxlcyBvcGVuZWQgaW4gYmluYXJ5IGFuZCB0ZXh0IG1vZGVzLFxuIgorImV2ZW4gd2hlbiB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtIGRvZXNuXCd0LiBGaWxlcyBvcGVuZWQgaW5cbiIKKyJiaW5hcnkgbW9kZSAoYXBwZW5kaW5nIFwnYlwnIHRvIHRoZSBtb2RlIGFyZ3VtZW50KSByZXR1cm4gY29udGVudHMgYXNcbiIKKyJieXRlcyBvYmplY3RzIHdpdGhvdXQgYW55IGRlY29kaW5nLiBJbiB0ZXh0IG1vZGUgKHRoZSBkZWZhdWx0LCBvciB3aGVuXG4iCisiXCd0XCcgaXMgYXBwZW5kZWQgdG8gdGhlIG1vZGUgYXJndW1lbnQpLCB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXJlXG4iCisicmV0dXJuZWQgYXMgc3RyaW5ncywgdGhlIGJ5dGVzIGhhdmluZyBiZWVuIGZpcnN0IGRlY29kZWQgdXNpbmcgYVxuIgorInBsYXRmb3JtLWRlcGVuZGVudCBlbmNvZGluZyBvciB1c2luZyB0aGUgc3BlY2lmaWVkIGVuY29kaW5nIGlmIGdpdmVuLlxuIgorIlxuIgorIlwnVVwnIG1vZGUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gaW4gZnV0dXJlIHZlcnNpb25zXG4iCisib2YgUHl0aG9uLiAgSXQgaGFzIG5vIGVmZmVjdCBpbiBQeXRob24gMy4gIFVzZSBuZXdsaW5lIHRvIGNvbnRyb2xcbiIKKyJ1bml2ZXJzYWwgbmV3bGluZXMgbW9kZS5cbiIKKyJcbiIKKyJidWZmZXJpbmcgaXMgYW4gb3B0aW9uYWwgaW50ZWdlciB1c2VkIHRvIHNldCB0aGUgYnVmZmVyaW5nIHBvbGljeS5cbiIKKyJQYXNzIDAgdG8gc3dpdGNoIGJ1ZmZlcmluZyBvZmYgKG9ubHkgYWxsb3dlZCBpbiBiaW5hcnkgbW9kZSksIDEgdG8gc2VsZWN0XG4iCisibGluZSBidWZmZXJpbmcgKG9ubHkgdXNhYmxlIGluIHRleHQgbW9kZSksIGFuZCBhbiBpbnRlZ2VyID4gMSB0byBpbmRpY2F0ZVxuIgorInRoZSBzaXplIG9mIGEgZml4ZWQtc2l6ZSBjaHVuayBidWZmZXIuICBXaGVuIG5vIGJ1ZmZlcmluZyBhcmd1bWVudCBpc1xuIgorImdpdmVuLCB0aGUgZGVmYXVsdCBidWZmZXJpbmcgcG9saWN5IHdvcmtzIGFzIGZvbGxvd3M6XG4iCisiXG4iCisiKiBCaW5hcnkgZmlsZXMgYXJlIGJ1ZmZlcmVkIGluIGZpeGVkLXNpemUgY2h1bmtzOyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyXG4iCisiICBpcyBjaG9zZW4gdXNpbmcgYSBoZXVyaXN0aWMgdHJ5aW5nIHRvIGRldGVybWluZSB0aGUgdW5kZXJseWluZyBkZXZpY2VcJ3NcbiIKKyIgIFwiYmxvY2sgc2l6ZVwiIGFuZCBmYWxsaW5nIGJhY2sgb24gYGlvLkRFRkFVTFRfQlVGRkVSX1NJWkVgLlxuIgorIiAgT24gbWFueSBzeXN0ZW1zLCB0aGUgYnVmZmVyIHdpbGwgdHlwaWNhbGx5IGJlIDQwOTYgb3IgODE5MiBieXRlcyBsb25nLlxuIgorIlxuIgorIiogXCJJbnRlcmFjdGl2ZVwiIHRleHQgZmlsZXMgKGZpbGVzIGZvciB3aGljaCBpc2F0dHkoKSByZXR1cm5zIFRydWUpXG4iCisiICB1c2UgbGluZSBidWZmZXJpbmcuICBPdGhlciB0ZXh0IGZpbGVzIHVzZSB0aGUgcG9saWN5IGRlc2NyaWJlZCBhYm92ZVxuIgorIiAgZm9yIGJpbmFyeSBmaWxlcy5cbiIKKyJcbiIKKyJlbmNvZGluZyBpcyB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdXNlZCB0byBkZWNvZGUgb3IgZW5jb2RlIHRoZVxuIgorImZpbGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0ZXh0IG1vZGUuIFRoZSBkZWZhdWx0IGVuY29kaW5nIGlzXG4iCisicGxhdGZvcm0gZGVwZW5kZW50LCBidXQgYW55IGVuY29kaW5nIHN1cHBvcnRlZCBieSBQeXRob24gY2FuIGJlXG4iCisicGFzc2VkLiAgU2VlIHRoZSBjb2RlY3MgbW9kdWxlIGZvciB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgZW5jb2RpbmdzLlxuIgorIlxuIgorImVycm9ycyBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgaG93IGVuY29kaW5nIGVycm9ycyBhcmUgdG9cbiIKKyJiZSBoYW5kbGVkLS0tdGhpcyBhcmd1bWVudCBzaG91bGQgbm90IGJlIHVzZWQgaW4gYmluYXJ5IG1vZGUuIFBhc3NcbiIKKyJcJ3N0cmljdFwnIHRvIHJhaXNlIGEgVmFsdWVFcnJvciBleGNlcHRpb24gaWYgdGhlcmUgaXMgYW4gZW5jb2RpbmcgZXJyb3JcbiIKKyIodGhlIGRlZmF1bHQgb2YgTm9uZSBoYXMgdGhlIHNhbWUgZWZmZWN0KSwgb3IgcGFzcyBcJ2lnbm9yZVwnIHRvIGlnbm9yZVxuIgorImVycm9ycy4gKE5vdGUgdGhhdCBpZ25vcmluZyBlbmNvZGluZyBlcnJvcnMgY2FuIGxlYWQgdG8gZGF0YSBsb3NzLilcbiIKKyJTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGNvZGVjcy5yZWdpc3RlciBvciBydW4gXCdoZWxwKGNvZGVjcy5Db2RlYylcJ1xuIgorImZvciBhIGxpc3Qgb2YgdGhlIHBlcm1pdHRlZCBlbmNvZGluZyBlcnJvciBzdHJpbmdzLlxuIgorIlxuIgorIm5ld2xpbmUgY29udHJvbHMgaG93IHVuaXZlcnNhbCBuZXdsaW5lcyB3b3JrcyAoaXQgb25seSBhcHBsaWVzIHRvIHRleHRcbiIKKyJtb2RlKS4gSXQgY2FuIGJlIE5vbmUsIFwnXCcsIFwnXFxuXCcsIFwnXFxyXCcsIGFuZCBcJ1xcclxcblwnLiAgSXQgd29ya3MgYXNcbiIKKyJmb2xsb3dzOlxuIgorIlxuIgorIiogT24gaW5wdXQsIGlmIG5ld2xpbmUgaXMgTm9uZSwgdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgaXNcbiIKKyIgIGVuYWJsZWQuIExpbmVzIGluIHRoZSBpbnB1dCBjYW4gZW5kIGluIFwnXFxuXCcsIFwnXFxyXCcsIG9yIFwnXFxyXFxuXCcsIGFuZFxuIgorIiAgdGhlc2UgYXJlIHRyYW5zbGF0ZWQgaW50byBcJ1xcblwnIGJlZm9yZSBiZWluZyByZXR1cm5lZCB0byB0aGVcbiIKKyIgIGNhbGxlci4gSWYgaXQgaXMgXCdcJywgdW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBpcyBlbmFibGVkLCBidXQgbGluZVxuIgorIiAgZW5kaW5ncyBhcmUgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciB1bnRyYW5zbGF0ZWQuIElmIGl0IGhhcyBhbnkgb2ZcbiIKKyIgIHRoZSBvdGhlciBsZWdhbCB2YWx1ZXMsIGlucHV0IGxpbmVzIGFyZSBvbmx5IHRlcm1pbmF0ZWQgYnkgdGhlIGdpdmVuXG4iCisiICBzdHJpbmcsIGFuZCB0aGUgbGluZSBlbmRpbmcgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciB1bnRyYW5zbGF0ZWQuXG4iCisiXG4iCisiKiBPbiBvdXRwdXQsIGlmIG5ld2xpbmUgaXMgTm9uZSwgYW55IFwnXFxuXCcgY2hhcmFjdGVycyB3cml0dGVuIGFyZVxuIgorIiAgdHJhbnNsYXRlZCB0byB0aGUgc3lzdGVtIGRlZmF1bHQgbGluZSBzZXBhcmF0b3IsIG9zLmxpbmVzZXAuIElmXG4iCisiICBuZXdsaW5lIGlzIFwnXCcgb3IgXCdcXG5cJywgbm8gdHJhbnNsYXRpb24gdGFrZXMgcGxhY2UuIElmIG5ld2xpbmUgaXMgYW55XG4iCisiICBvZiB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBhbnkgXCdcXG5cJyBjaGFyYWN0ZXJzIHdyaXR0ZW4gYXJlIHRyYW5zbGF0ZWRcbiIKKyIgIHRvIHRoZSBnaXZlbiBzdHJpbmcuXG4iCisiXG4iCisiSWYgY2xvc2VmZCBpcyBGYWxzZSwgdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIHdpbGwgYmUga2VwdCBvcGVuXG4iCisid2hlbiB0aGUgZmlsZSBpcyBjbG9zZWQuIFRoaXMgZG9lcyBub3Qgd29yayB3aGVuIGEgZmlsZSBuYW1lIGlzIGdpdmVuXG4iCisiYW5kIG11c3QgYmUgVHJ1ZSBpbiB0aGF0IGNhc2UuXG4iCisiXG4iCisiQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5IHBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlXG4iCisidW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5XG4iCisiY2FsbGluZyAqb3BlbmVyKiB3aXRoICgqZmlsZSosICpmbGFncyopLiAqb3BlbmVyKiBtdXN0IHJldHVybiBhbiBvcGVuXG4iCisiZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nIG9zLm9wZW4gYXMgKm9wZW5lciogcmVzdWx0cyBpbiBmdW5jdGlvbmFsaXR5XG4iCisic2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLlxuIgorIlxuIgorIm9wZW4oKSByZXR1cm5zIGEgZmlsZSBvYmplY3Qgd2hvc2UgdHlwZSBkZXBlbmRzIG9uIHRoZSBtb2RlLCBhbmRcbiIKKyJ0aHJvdWdoIHdoaWNoIHRoZSBzdGFuZGFyZCBmaWxlIG9wZXJhdGlvbnMgc3VjaCBhcyByZWFkaW5nIGFuZCB3cml0aW5nXG4iCisiYXJlIHBlcmZvcm1lZC4gV2hlbiBvcGVuKCkgaXMgdXNlZCB0byBvcGVuIGEgZmlsZSBpbiBhIHRleHQgbW9kZSAoXCd3XCcsXG4iCisiXCdyXCcsIFwnd3RcJywgXCdydFwnLCBldGMuKSwgaXQgcmV0dXJucyBhIFRleHRJT1dyYXBwZXIuIFdoZW4gdXNlZCB0byBvcGVuXG4iCisiYSBmaWxlIGluIGEgYmluYXJ5IG1vZGUsIHRoZSByZXR1cm5lZCBjbGFzcyB2YXJpZXM6IGluIHJlYWQgYmluYXJ5XG4iCisibW9kZSwgaXQgcmV0dXJucyBhIEJ1ZmZlcmVkUmVhZGVyOyBpbiB3cml0ZSBiaW5hcnkgYW5kIGFwcGVuZCBiaW5hcnlcbiIKKyJtb2RlcywgaXQgcmV0dXJucyBhIEJ1ZmZlcmVkV3JpdGVyLCBhbmQgaW4gcmVhZC93cml0ZSBtb2RlLCBpdCByZXR1cm5zXG4iCisiYSBCdWZmZXJlZFJhbmRvbS5cbiIKKyJcbiIKKyJJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHVzZSBhIHN0cmluZyBvciBieXRlYXJyYXkgYXMgYSBmaWxlIGZvciBib3RoXG4iCisicmVhZGluZyBhbmQgd3JpdGluZy4gRm9yIHN0cmluZ3MgU3RyaW5nSU8gY2FuIGJlIHVzZWQgbGlrZSBhIGZpbGVcbiIKKyJvcGVuZWQgaW4gYSB0ZXh0IG1vZGUsIGFuZCBmb3IgYnl0ZXMgYSBCeXRlc0lPIGNhbiBiZSB1c2VkIGxpa2UgYSBmaWxlXG4iCisib3BlbmVkIGluIGEgYmluYXJ5IG1vZGUuIik7CisKKyNkZWZpbmUgX0lPX09QRU5fTUVUSE9EREVGICAgIFwKKyAgICB7Im9wZW4iLCAoUHlDRnVuY3Rpb24pX2lvX29wZW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfaW9fb3Blbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX29wZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSwgY29uc3QgY2hhciAqbW9kZSwKKyAgICAgICAgICAgICAgaW50IGJ1ZmZlcmluZywgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmV3bGluZSwgaW50IGNsb3NlZmQsIFB5T2JqZWN0ICpvcGVuZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX29wZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmaWxlIiwgIm1vZGUiLCAiYnVmZmVyaW5nIiwgImVuY29kaW5nIiwgImVycm9ycyIsICJuZXdsaW5lIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmZpbGU7CisgICAgY29uc3QgY2hhciAqbW9kZSA9ICJyIjsKKyAgICBpbnQgYnVmZmVyaW5nID0gLTE7CisgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqbmV3bGluZSA9IE5VTEw7CisgICAgaW50IGNsb3NlZmQgPSAxOworICAgIFB5T2JqZWN0ICpvcGVuZXIgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xzaXp6emlPOm9wZW4iLCBfa2V5d29yZHMsCisgICAgICAgICZmaWxlLCAmbW9kZSwgJmJ1ZmZlcmluZywgJmVuY29kaW5nLCAmZXJyb3JzLCAmbmV3bGluZSwgJmNsb3NlZmQsICZvcGVuZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX29wZW5faW1wbChtb2R1bGUsIGZpbGUsIG1vZGUsIGJ1ZmZlcmluZywgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSwgY2xvc2VmZCwgb3BlbmVyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk3Y2RjMDliZjY4YTgwNjQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL2J1ZmZlcmVkaW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL2J1ZmZlcmVkaW8uYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzN2UyNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvYnVmZmVyZWRpby5jLmgKQEAgLTAsMCArMSw0NTQgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvX19kb2NfXywKKyJyZWFkaW50bygkc2VsZiwgYnVmZmVyLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVESU9CQVNFX1JFQURJTlRPX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvLCBNRVRIX08sIF9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG9faW1wbChQeU9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZElPQmFzZV9yZWFkaW50byhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZElPQmFzZV9yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX19CdWZmZXJlZElPQmFzZV9yZWFkaW50bzFfX2RvY19fLAorInJlYWRpbnRvMSgkc2VsZiwgYnVmZmVyLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVESU9CQVNFX1JFQURJTlRPMV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGludG8xIiwgKFB5Q0Z1bmN0aW9uKV9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG8xLCBNRVRIX08sIF9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG8xX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvMV9pbXBsKFB5T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvMShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50bzEiLCAmYnVmZmVyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG8xX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCisgICAgaWYgKGJ1ZmZlci5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0J1ZmZlcmVkSU9CYXNlX2RldGFjaF9fZG9jX18sCisiZGV0YWNoKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRGlzY29ubmVjdCB0aGlzIGJ1ZmZlciBmcm9tIGl0cyB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gYW5kIHJldHVybiBpdC5cbiIKKyJcbiIKKyJBZnRlciB0aGUgcmF3IHN0cmVhbSBoYXMgYmVlbiBkZXRhY2hlZCwgdGhlIGJ1ZmZlciBpcyBpbiBhbiB1bnVzYWJsZVxuIgorInN0YXRlLiIpOworCisjZGVmaW5lIF9JT19fQlVGRkVSRURJT0JBU0VfREVUQUNIX01FVEhPRERFRiAgICBcCisgICAgeyJkZXRhY2giLCAoUHlDRnVuY3Rpb24pX2lvX19CdWZmZXJlZElPQmFzZV9kZXRhY2gsIE1FVEhfTk9BUkdTLCBfaW9fX0J1ZmZlcmVkSU9CYXNlX2RldGFjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZElPQmFzZV9kZXRhY2hfaW1wbChQeU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkSU9CYXNlX2RldGFjaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19CdWZmZXJlZElPQmFzZV9kZXRhY2hfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fQnVmZmVyZWRfcGVla19fZG9jX18sCisicGVlaygkc2VsZiwgc2l6ZT0wLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVEX1BFRUtfTUVUSE9EREVGICAgIFwKKyAgICB7InBlZWsiLCAoUHlDRnVuY3Rpb24pX2lvX19CdWZmZXJlZF9wZWVrLCBNRVRIX1ZBUkFSR1MsIF9pb19fQnVmZmVyZWRfcGVla19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9wZWVrX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3BlZWsoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnBlZWsiLAorICAgICAgICAmc2l6ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3BlZWtfaW1wbChzZWxmLCBzaXplKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX19CdWZmZXJlZF9yZWFkX19kb2NfXywKKyJyZWFkKCRzZWxmLCBzaXplPS0xLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVEX1JFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pX2lvX19CdWZmZXJlZF9yZWFkLCBNRVRIX1ZBUkFSR1MsIF9pb19fQnVmZmVyZWRfcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9yZWFkX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3Qgbik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3JlYWQoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbiA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWRfaW1wbChzZWxmLCBuKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX19CdWZmZXJlZF9yZWFkMV9fZG9jX18sCisicmVhZDEoJHNlbGYsIHNpemUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19fQlVGRkVSRURfUkVBRDFfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQxIiwgKFB5Q0Z1bmN0aW9uKV9pb19fQnVmZmVyZWRfcmVhZDEsIE1FVEhfTywgX2lvX19CdWZmZXJlZF9yZWFkMV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9yZWFkMV9pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeV9zc2l6ZV90IG4pOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9yZWFkMShidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IG47CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIm46cmVhZDEiLCAmbikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWQxX2ltcGwoc2VsZiwgbik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fQnVmZmVyZWRfcmVhZGludG9fX2RvY19fLAorInJlYWRpbnRvKCRzZWxmLCBidWZmZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19fQlVGRkVSRURfUkVBRElOVE9fTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRpbnRvIiwgKFB5Q0Z1bmN0aW9uKV9pb19fQnVmZmVyZWRfcmVhZGludG8sIE1FVEhfTywgX2lvX19CdWZmZXJlZF9yZWFkaW50b19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9yZWFkaW50b19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3JlYWRpbnRvKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWRpbnRvX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCisgICAgaWYgKGJ1ZmZlci5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0J1ZmZlcmVkX3JlYWRpbnRvMV9fZG9jX18sCisicmVhZGludG8xKCRzZWxmLCBidWZmZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19fQlVGRkVSRURfUkVBRElOVE8xX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkaW50bzEiLCAoUHlDRnVuY3Rpb24pX2lvX19CdWZmZXJlZF9yZWFkaW50bzEsIE1FVEhfTywgX2lvX19CdWZmZXJlZF9yZWFkaW50bzFfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcmVhZGludG8xX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcmVhZGludG8xKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvMSIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkaW50bzFfaW1wbChzZWxmLCAmYnVmZmVyKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KKyAgICBpZiAoYnVmZmVyLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fQnVmZmVyZWRfcmVhZGxpbmVfX2RvY19fLAorInJlYWRsaW5lKCRzZWxmLCBzaXplPS0xLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVEX1JFQURMSU5FX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbilfaW9fX0J1ZmZlcmVkX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1MsIF9pb19fQnVmZmVyZWRfcmVhZGxpbmVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcmVhZGxpbmVfaW1wbChidWZmZXJlZCAqc2VsZiwgUHlfc3NpemVfdCBzaXplKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcmVhZGxpbmUoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZGxpbmUiLAorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJnNpemUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkbGluZV9pbXBsKHNlbGYsIHNpemUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0J1ZmZlcmVkX3NlZWtfX2RvY19fLAorInNlZWsoJHNlbGYsIHRhcmdldCwgd2hlbmNlPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19fQlVGRkVSRURfU0VFS19NRVRIT0RERUYgICAgXAorICAgIHsic2VlayIsIChQeUNGdW5jdGlvbilfaW9fX0J1ZmZlcmVkX3NlZWssIE1FVEhfVkFSQVJHUywgX2lvX19CdWZmZXJlZF9zZWVrX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3NlZWtfaW1wbChidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKnRhcmdldG9iaiwgaW50IHdoZW5jZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3NlZWsoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICp0YXJnZXRvYmo7CisgICAgaW50IHdoZW5jZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwKKyAgICAgICAgJnRhcmdldG9iaiwgJndoZW5jZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3NlZWtfaW1wbChzZWxmLCB0YXJnZXRvYmosIHdoZW5jZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fQnVmZmVyZWRfdHJ1bmNhdGVfX2RvY19fLAorInRydW5jYXRlKCRzZWxmLCBwb3M9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX19CVUZGRVJFRF9UUlVOQ0FURV9NRVRIT0RERUYgICAgXAorICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pX2lvX19CdWZmZXJlZF90cnVuY2F0ZSwgTUVUSF9WQVJBUkdTLCBfaW9fX0J1ZmZlcmVkX3RydW5jYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3RydW5jYXRlX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICpwb3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF90cnVuY2F0ZShidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBvcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZwb3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF90cnVuY2F0ZV9pbXBsKHNlbGYsIHBvcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CdWZmZXJlZFJlYWRlcl9fX2luaXRfX19fZG9jX18sCisiQnVmZmVyZWRSZWFkZXIocmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgbmV3IGJ1ZmZlcmVkIHJlYWRlciB1c2luZyB0aGUgZ2l2ZW4gcmVhZGFibGUgcmF3IElPIG9iamVjdC4iKTsKKworc3RhdGljIGludAorX2lvX0J1ZmZlcmVkUmVhZGVyX19faW5pdF9fX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICpyYXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplKTsKKworc3RhdGljIGludAorX2lvX0J1ZmZlcmVkUmVhZGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqcmF3OworICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xuOkJ1ZmZlcmVkUmVhZGVyIiwgX2tleXdvcmRzLAorICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkUmVhZGVyX19faW5pdF9fX2ltcGwoKGJ1ZmZlcmVkICopc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfX19fZG9jX18sCisiQnVmZmVyZWRXcml0ZXIocmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKVxuIgorIi0tXG4iCisiXG4iCisiQSBidWZmZXIgZm9yIGEgd3JpdGVhYmxlIHNlcXVlbnRpYWwgUmF3SU8gb2JqZWN0LlxuIgorIlxuIgorIlRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgQnVmZmVyZWRXcml0ZXIgZm9yIHRoZSBnaXZlbiB3cml0ZWFibGUgcmF3XG4iCisic3RyZWFtLiBJZiB0aGUgYnVmZmVyX3NpemUgaXMgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0b1xuIgorIkRFRkFVTFRfQlVGRkVSX1NJWkUuIik7CisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfX19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqcmF3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSk7CisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJhdzsKKyAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98bjpCdWZmZXJlZFdyaXRlciIsIF9rZXl3b3JkcywKKyAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfX19pbXBsKChidWZmZXJlZCAqKXNlbGYsIHJhdywgYnVmZmVyX3NpemUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnVmZmVyZWRXcml0ZXJfd3JpdGVfX2RvY19fLAorIndyaXRlKCRzZWxmLCBidWZmZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19CVUZGRVJFRFdSSVRFUl9XUklURV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pX2lvX0J1ZmZlcmVkV3JpdGVyX3dyaXRlLCBNRVRIX08sIF9pb19CdWZmZXJlZFdyaXRlcl93cml0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J1ZmZlcmVkV3JpdGVyX3dyaXRlX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CdWZmZXJlZFdyaXRlcl93cml0ZShidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkV3JpdGVyX3dyaXRlX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCisgICAgaWYgKGJ1ZmZlci5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnVmZmVyZWRSV1BhaXJfX19pbml0X19fX2RvY19fLAorIkJ1ZmZlcmVkUldQYWlyKHJlYWRlciwgd3JpdGVyLCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQSBidWZmZXJlZCByZWFkZXIgYW5kIHdyaXRlciBvYmplY3QgdG9nZXRoZXIuXG4iCisiXG4iCisiQSBidWZmZXJlZCByZWFkZXIgb2JqZWN0IGFuZCBidWZmZXJlZCB3cml0ZXIgb2JqZWN0IHB1dCB0b2dldGhlciB0b1xuIgorImZvcm0gYSBzZXF1ZW50aWFsIElPIG9iamVjdCB0aGF0IGNhbiByZWFkIGFuZCB3cml0ZS4gVGhpcyBpcyB0eXBpY2FsbHlcbiIKKyJ1c2VkIHdpdGggYSBzb2NrZXQgb3IgdHdvLXdheSBwaXBlLlxuIgorIlxuIgorInJlYWRlciBhbmQgd3JpdGVyIGFyZSBSYXdJT0Jhc2Ugb2JqZWN0cyB0aGF0IGFyZSByZWFkYWJsZSBhbmRcbiIKKyJ3cml0ZWFibGUgcmVzcGVjdGl2ZWx5LiBJZiB0aGUgYnVmZmVyX3NpemUgaXMgb21pdHRlZCBpdCBkZWZhdWx0cyB0b1xuIgorIkRFRkFVTFRfQlVGRkVSX1NJWkUuIik7CisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFJXUGFpcl9fX2luaXRfX19pbXBsKHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKnJlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp3cml0ZXIsIFB5X3NzaXplX3QgYnVmZmVyX3NpemUpOworCitzdGF0aWMgaW50CitfaW9fQnVmZmVyZWRSV1BhaXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBQeU9iamVjdCAqcmVhZGVyOworICAgIFB5T2JqZWN0ICp3cml0ZXI7CisgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7CisKKyAgICBpZiAoKFB5X1RZUEUoc2VsZikgPT0gJlB5QnVmZmVyZWRSV1BhaXJfVHlwZSkgJiYKKyAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJCdWZmZXJlZFJXUGFpciIsIGt3YXJncykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PfG46QnVmZmVyZWRSV1BhaXIiLAorICAgICAgICAmcmVhZGVyLCAmd3JpdGVyLCAmYnVmZmVyX3NpemUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkUldQYWlyX19faW5pdF9fX2ltcGwoKHJ3cGFpciAqKXNlbGYsIHJlYWRlciwgd3JpdGVyLCBidWZmZXJfc2l6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CdWZmZXJlZFJhbmRvbV9fX2luaXRfX19fZG9jX18sCisiQnVmZmVyZWRSYW5kb20ocmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKVxuIgorIi0tXG4iCisiXG4iCisiQSBidWZmZXJlZCBpbnRlcmZhY2UgdG8gcmFuZG9tIGFjY2VzcyBzdHJlYW1zLlxuIgorIlxuIgorIlRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgcmVhZGVyIGFuZCB3cml0ZXIgZm9yIGEgc2Vla2FibGUgc3RyZWFtLFxuIgorInJhdywgZ2l2ZW4gaW4gdGhlIGZpcnN0IGFyZ3VtZW50LiBJZiB0aGUgYnVmZmVyX3NpemUgaXMgb21pdHRlZCBpdFxuIgorImRlZmF1bHRzIHRvIERFRkFVTFRfQlVGRkVSX1NJWkUuIik7CisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFJhbmRvbV9fX2luaXRfX19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqcmF3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSk7CisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFJhbmRvbV9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJhdzsKKyAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98bjpCdWZmZXJlZFJhbmRvbSIsIF9rZXl3b3JkcywKKyAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFJhbmRvbV9fX2luaXRfX19pbXBsKChidWZmZXJlZCAqKXNlbGYsIHJhdywgYnVmZmVyX3NpemUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmJiYjVlMjM5YjRmZmU2ZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvYnl0ZXNpby5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvYnl0ZXNpby5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFiMWQ2NQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9ieXRlc2lvLmMuaApAQCAtMCwwICsxLDQyMiBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3JlYWRhYmxlX19kb2NfXywKKyJyZWFkYWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSByZWFkLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX1JFQURBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19yZWFkYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19CeXRlc0lPX3JlYWRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19yZWFkYWJsZV9pbXBsKGJ5dGVzaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fcmVhZGFibGUoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0J5dGVzSU9fcmVhZGFibGVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3dyaXRhYmxlX19kb2NfXywKKyJ3cml0YWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSB3cml0dGVuLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX1dSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT193cml0YWJsZSwgTUVUSF9OT0FSR1MsIF9pb19CeXRlc0lPX3dyaXRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT193cml0YWJsZV9pbXBsKGJ5dGVzaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fd3JpdGFibGUoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0J5dGVzSU9fd3JpdGFibGVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3NlZWthYmxlX19kb2NfXywKKyJzZWVrYWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSBzZWVrZWQuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fU0VFS0FCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InNlZWthYmxlIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3NlZWthYmxlLCBNRVRIX05PQVJHUywgX2lvX0J5dGVzSU9fc2Vla2FibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3NlZWthYmxlX2ltcGwoYnl0ZXNpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19zZWVrYWJsZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fQnl0ZXNJT19zZWVrYWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fZmx1c2hfX2RvY19fLAorImZsdXNoKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRG9lcyBub3RoaW5nLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX0ZMVVNIX01FVEhPRERFRiAgICBcCisgICAgeyJmbHVzaCIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19mbHVzaCwgTUVUSF9OT0FSR1MsIF9pb19CeXRlc0lPX2ZsdXNoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19mbHVzaF9pbXBsKGJ5dGVzaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fZmx1c2goYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0J5dGVzSU9fZmx1c2hfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX2dldGJ1ZmZlcl9fZG9jX18sCisiZ2V0YnVmZmVyKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiR2V0IGEgcmVhZC13cml0ZSB2aWV3IG92ZXIgdGhlIGNvbnRlbnRzIG9mIHRoZSBCeXRlc0lPIG9iamVjdC4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19HRVRCVUZGRVJfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGJ1ZmZlciIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19nZXRidWZmZXIsIE1FVEhfTk9BUkdTLCBfaW9fQnl0ZXNJT19nZXRidWZmZXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX2dldGJ1ZmZlcl9pbXBsKGJ5dGVzaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fZ2V0YnVmZmVyKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19CeXRlc0lPX2dldGJ1ZmZlcl9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fZ2V0dmFsdWVfX2RvY19fLAorImdldHZhbHVlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0cmlldmUgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgQnl0ZXNJTyBvYmplY3QuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fR0VUVkFMVUVfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHZhbHVlIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX2dldHZhbHVlLCBNRVRIX05PQVJHUywgX2lvX0J5dGVzSU9fZ2V0dmFsdWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX2dldHZhbHVlX2ltcGwoYnl0ZXNpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19nZXR2YWx1ZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fQnl0ZXNJT19nZXR2YWx1ZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9faXNhdHR5X19kb2NfXywKKyJpc2F0dHkoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBbHdheXMgcmV0dXJucyBGYWxzZS5cbiIKKyJcbiIKKyJCeXRlc0lPIG9iamVjdHMgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYSBUVFktbGlrZSBkZXZpY2UuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fSVNBVFRZX01FVEhPRERFRiAgICBcCisgICAgeyJpc2F0dHkiLCAoUHlDRnVuY3Rpb24pX2lvX0J5dGVzSU9faXNhdHR5LCBNRVRIX05PQVJHUywgX2lvX0J5dGVzSU9faXNhdHR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19pc2F0dHlfaW1wbChieXRlc2lvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX2lzYXR0eShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fQnl0ZXNJT19pc2F0dHlfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3RlbGxfX2RvY19fLAorInRlbGwoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDdXJyZW50IGZpbGUgcG9zaXRpb24sIGFuIGludGVnZXIuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fVEVMTF9NRVRIT0RERUYgICAgXAorICAgIHsidGVsbCIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT190ZWxsLCBNRVRIX05PQVJHUywgX2lvX0J5dGVzSU9fdGVsbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fdGVsbF9pbXBsKGJ5dGVzaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fdGVsbChieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fQnl0ZXNJT190ZWxsX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT19yZWFkX19kb2NfXywKKyJyZWFkKCRzZWxmLCBzaXplPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcywgcmV0dXJuZWQgYXMgYSBieXRlcyBvYmplY3QuXG4iCisiXG4iCisiSWYgdGhlIHNpemUgYXJndW1lbnQgaXMgbmVnYXRpdmUsIHJlYWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuXG4iCisiUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fUkVBRF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19yZWFkLCBNRVRIX1ZBUkFSR1MsIF9pb19CeXRlc0lPX3JlYWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3JlYWRfaW1wbChieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3JlYWQoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmFyZyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmFyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkX2ltcGwoc2VsZiwgYXJnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fcmVhZDFfX2RvY19fLAorInJlYWQxKCRzZWxmLCBzaXplLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGEgYnl0ZXMgb2JqZWN0LlxuIgorIlxuIgorIklmIHRoZSBzaXplIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIG9taXR0ZWQsIHJlYWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuXG4iCisiUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fUkVBRDFfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQxIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3JlYWQxLCBNRVRIX08sIF9pb19CeXRlc0lPX3JlYWQxX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT19yZWFkbGluZV9fZG9jX18sCisicmVhZGxpbmUoJHNlbGYsIHNpemU9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIk5leHQgbGluZSBmcm9tIHRoZSBmaWxlLCBhcyBhIGJ5dGVzIG9iamVjdC5cbiIKKyJcbiIKKyJSZXRhaW4gbmV3bGluZS4gIEEgbm9uLW5lZ2F0aXZlIHNpemUgYXJndW1lbnQgbGltaXRzIHRoZSBtYXhpbXVtXG4iCisibnVtYmVyIG9mIGJ5dGVzIHRvIHJldHVybiAoYW4gaW5jb21wbGV0ZSBsaW5lIG1heSBiZSByZXR1cm5lZCB0aGVuKS5cbiIKKyJSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19SRUFETElORV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGxpbmUiLCAoUHlDRnVuY3Rpb24pX2lvX0J5dGVzSU9fcmVhZGxpbmUsIE1FVEhfVkFSQVJHUywgX2lvX0J5dGVzSU9fcmVhZGxpbmVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3JlYWRsaW5lX2ltcGwoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19yZWFkbGluZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmFyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkbGluZV9pbXBsKHNlbGYsIGFyZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3JlYWRsaW5lc19fZG9jX18sCisicmVhZGxpbmVzKCRzZWxmLCBzaXplPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJMaXN0IG9mIGJ5dGVzIG9iamVjdHMsIGVhY2ggYSBsaW5lIGZyb20gdGhlIGZpbGUuXG4iCisiXG4iCisiQ2FsbCByZWFkbGluZSgpIHJlcGVhdGVkbHkgYW5kIHJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIHNvIHJlYWQuXG4iCisiVGhlIG9wdGlvbmFsIHNpemUgYXJndW1lbnQsIGlmIGdpdmVuLCBpcyBhbiBhcHByb3hpbWF0ZSBib3VuZCBvbiB0aGVcbiIKKyJ0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGxpbmVzIHJldHVybmVkLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX1JFQURMSU5FU19NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3JlYWRsaW5lcywgTUVUSF9WQVJBUkdTLCBfaW9fQnl0ZXNJT19yZWFkbGluZXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3JlYWRsaW5lc19pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fcmVhZGxpbmVzKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmVzIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmFyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkbGluZXNfaW1wbChzZWxmLCBhcmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT19yZWFkaW50b19fZG9jX18sCisicmVhZGludG8oJHNlbGYsIGJ1ZmZlciwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlYWQgdXAgdG8gbGVuKGJ1ZmZlcikgYnl0ZXMgaW50byBidWZmZXIuXG4iCisiXG4iCisiUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgcmVhZCAoMCBmb3IgRU9GKSwgb3IgTm9uZSBpZiB0aGUgb2JqZWN0XG4iCisiaXMgc2V0IG5vdCB0byBibG9jayBhcyBoYXMgbm8gZGF0YSB0byByZWFkLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX1JFQURJTlRPX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19yZWFkaW50bywgTUVUSF9PLCBfaW9fQnl0ZXNJT19yZWFkaW50b19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fcmVhZGludG9faW1wbChieXRlc2lvICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19yZWFkaW50byhieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fdHJ1bmNhdGVfX2RvY19fLAorInRydW5jYXRlKCRzZWxmLCBzaXplPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUcnVuY2F0ZSB0aGUgZmlsZSB0byBhdCBtb3N0IHNpemUgYnl0ZXMuXG4iCisiXG4iCisiU2l6ZSBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhcyByZXR1cm5lZCBieSB0ZWxsKCkuXG4iCisiVGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiBpcyB1bmNoYW5nZWQuICBSZXR1cm5zIHRoZSBuZXcgc2l6ZS4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19UUlVOQ0FURV9NRVRIT0RERUYgICAgXAorICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pX2lvX0J5dGVzSU9fdHJ1bmNhdGUsIE1FVEhfVkFSQVJHUywgX2lvX0J5dGVzSU9fdHJ1bmNhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3RydW5jYXRlX2ltcGwoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT190cnVuY2F0ZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRydW5jYXRlIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmFyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT190cnVuY2F0ZV9pbXBsKHNlbGYsIGFyZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3NlZWtfX2RvY19fLAorInNlZWsoJHNlbGYsIHBvcywgd2hlbmNlPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFuZ2Ugc3RyZWFtIHBvc2l0aW9uLlxuIgorIlxuIgorIlNlZWsgdG8gYnl0ZSBvZmZzZXQgcG9zIHJlbGF0aXZlIHRvIHBvc2l0aW9uIGluZGljYXRlZCBieSB3aGVuY2U6XG4iCisiICAgICAwICBTdGFydCBvZiBzdHJlYW0gKHRoZSBkZWZhdWx0KS4gIHBvcyBzaG91bGQgYmUgPj0gMDtcbiIKKyIgICAgIDEgIEN1cnJlbnQgcG9zaXRpb24gLSBwb3MgbWF5IGJlIG5lZ2F0aXZlO1xuIgorIiAgICAgMiAgRW5kIG9mIHN0cmVhbSAtIHBvcyB1c3VhbGx5IG5lZ2F0aXZlLlxuIgorIlJldHVybnMgdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbi4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19TRUVLX01FVEhPRERFRiAgICBcCisgICAgeyJzZWVrIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3NlZWssIE1FVEhfVkFSQVJHUywgX2lvX0J5dGVzSU9fc2Vla19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fc2Vla19pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5X3NzaXplX3QgcG9zLCBpbnQgd2hlbmNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3NlZWsoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBwb3M7CisgICAgaW50IHdoZW5jZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58aTpzZWVrIiwKKyAgICAgICAgJnBvcywgJndoZW5jZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19zZWVrX2ltcGwoc2VsZiwgcG9zLCB3aGVuY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT193cml0ZV9fZG9jX18sCisid3JpdGUoJHNlbGYsIGIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZSBieXRlcyB0byBmaWxlLlxuIgorIlxuIgorIlJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fV1JJVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3dyaXRlLCBNRVRIX08sIF9pb19CeXRlc0lPX3dyaXRlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT193cml0ZWxpbmVzX19kb2NfXywKKyJ3cml0ZWxpbmVzKCRzZWxmLCBsaW5lcywgLylcbiIKKyItLVxuIgorIlxuIgorIldyaXRlIGxpbmVzIHRvIHRoZSBmaWxlLlxuIgorIlxuIgorIk5vdGUgdGhhdCBuZXdsaW5lcyBhcmUgbm90IGFkZGVkLiAgbGluZXMgY2FuIGJlIGFueSBpdGVyYWJsZSBvYmplY3RcbiIKKyJwcm9kdWNpbmcgYnl0ZXMtbGlrZSBvYmplY3RzLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyB3cml0ZSgpIGZvclxuIgorImVhY2ggZWxlbWVudC4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19XUklURUxJTkVTX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZWxpbmVzIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3dyaXRlbGluZXMsIE1FVEhfTywgX2lvX0J5dGVzSU9fd3JpdGVsaW5lc19fZG9jX199LAorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fY2xvc2VfX2RvY19fLAorImNsb3NlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRGlzYWJsZSBhbGwgSS9PIG9wZXJhdGlvbnMuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX2Nsb3NlLCBNRVRIX05PQVJHUywgX2lvX0J5dGVzSU9fY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX2Nsb3NlX2ltcGwoYnl0ZXNpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19jbG9zZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fQnl0ZXNJT19jbG9zZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fX19pbml0X19fX2RvY19fLAorIkJ5dGVzSU8oaW5pdGlhbF9ieXRlcz1iXCdcJylcbiIKKyItLVxuIgorIlxuIgorIkJ1ZmZlcmVkIEkvTyBpbXBsZW1lbnRhdGlvbiB1c2luZyBhbiBpbi1tZW1vcnkgYnl0ZXMgYnVmZmVyLiIpOworCitzdGF0aWMgaW50CitfaW9fQnl0ZXNJT19fX2luaXRfX19pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICppbml0dmFsdWUpOworCitzdGF0aWMgaW50CitfaW9fQnl0ZXNJT19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5pdGlhbF9ieXRlcyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICppbml0dmFsdWUgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86Qnl0ZXNJTyIsIF9rZXl3b3JkcywKKyAgICAgICAgJmluaXR2YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19fX2luaXRfX19pbXBsKChieXRlc2lvICopc2VsZiwgaW5pdHZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUwMGNjYzE0OTU4N2ZhYzQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL2ZpbGVpby5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvZmlsZWlvLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTEyMDVlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL2ZpbGVpby5jLmgKQEAgLTAsMCArMSwzNjcgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkNsb3NlIHRoZSBmaWxlLlxuIgorIlxuIgorIkEgY2xvc2VkIGZpbGUgY2Fubm90IGJlIHVzZWQgZm9yIGZ1cnRoZXIgSS9PIG9wZXJhdGlvbnMuICBjbG9zZSgpIG1heSBiZVxuIgorImNhbGxlZCBtb3JlIHRoYW4gb25jZSB3aXRob3V0IGVycm9yLiIpOworCisjZGVmaW5lIF9JT19GSUxFSU9fQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9fY2xvc2UsIE1FVEhfTk9BUkdTLCBfaW9fRmlsZUlPX2Nsb3NlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX2Nsb3NlX2ltcGwoZmlsZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fY2xvc2UoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fRmlsZUlPX2Nsb3NlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX19faW5pdF9fX19kb2NfXywKKyJGaWxlSU8oZmlsZSwgbW9kZT1cJ3JcJywgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIk9wZW4gYSBmaWxlLlxuIgorIlxuIgorIlRoZSBtb2RlIGNhbiBiZSBcJ3JcJyAoZGVmYXVsdCksIFwnd1wnLCBcJ3hcJyBvciBcJ2FcJyBmb3IgcmVhZGluZyxcbiIKKyJ3cml0aW5nLCBleGNsdXNpdmUgY3JlYXRpb24gb3IgYXBwZW5kaW5nLiAgVGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0XG4iCisiZG9lc25cJ3QgZXhpc3Qgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOyBpdCB3aWxsIGJlIHRydW5jYXRlZFxuIgorIndoZW4gb3BlbmVkIGZvciB3cml0aW5nLiAgQSBGaWxlRXhpc3RzRXJyb3Igd2lsbCBiZSByYWlzZWQgaWYgaXQgYWxyZWFkeVxuIgorImV4aXN0cyB3aGVuIG9wZW5lZCBmb3IgY3JlYXRpbmcuIE9wZW5pbmcgYSBmaWxlIGZvciBjcmVhdGluZyBpbXBsaWVzXG4iCisid3JpdGluZyBzbyB0aGlzIG1vZGUgYmVoYXZlcyBpbiBhIHNpbWlsYXIgd2F5IHRvIFwnd1wnLkFkZCBhIFwnK1wnIHRvIHRoZSBtb2RlXG4iCisidG8gYWxsb3cgc2ltdWx0YW5lb3VzIHJlYWRpbmcgYW5kIHdyaXRpbmcuIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieVxuIgorInBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlsZVxuIgorIm9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcgb3BlbmVyIHdpdGggKCpuYW1lKiwgKmZsYWdzKikuXG4iCisiKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgKHBhc3Npbmcgb3Mub3BlbiBhcyAqb3BlbmVyKlxuIgorInJlc3VsdHMgaW4gZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHBhc3NpbmcgTm9uZSkuIik7CisKK3N0YXRpYyBpbnQKK19pb19GaWxlSU9fX19pbml0X19faW1wbChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpuYW1lb2JqLCBjb25zdCBjaGFyICptb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbG9zZWZkLCBQeU9iamVjdCAqb3BlbmVyKTsKKworc3RhdGljIGludAorX2lvX0ZpbGVJT19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJtb2RlIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CisgICAgUHlPYmplY3QgKm5hbWVvYmo7CisgICAgY29uc3QgY2hhciAqbW9kZSA9ICJyIjsKKyAgICBpbnQgY2xvc2VmZCA9IDE7CisgICAgUHlPYmplY3QgKm9wZW5lciA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfHNpTzpGaWxlSU8iLCBfa2V5d29yZHMsCisgICAgICAgICZuYW1lb2JqLCAmbW9kZSwgJmNsb3NlZmQsICZvcGVuZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT19fX2luaXRfX19pbXBsKChmaWxlaW8gKilzZWxmLCBuYW1lb2JqLCBtb2RlLCBjbG9zZWZkLCBvcGVuZXIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX2ZpbGVub19fZG9jX18sCisiZmlsZW5vKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciAoYW4gaW50ZWdlcikuIik7CisKKyNkZWZpbmUgX0lPX0ZJTEVJT19GSUxFTk9fTUVUSE9EREVGICAgIFwKKyAgICB7ImZpbGVubyIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX2ZpbGVubywgTUVUSF9OT0FSR1MsIF9pb19GaWxlSU9fZmlsZW5vX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX2ZpbGVub19pbXBsKGZpbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX2ZpbGVubyhmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19GaWxlSU9fZmlsZW5vX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX3JlYWRhYmxlX19kb2NfXywKKyJyZWFkYWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlRydWUgaWYgZmlsZSB3YXMgb3BlbmVkIGluIGEgcmVhZCBtb2RlLiIpOworCisjZGVmaW5lIF9JT19GSUxFSU9fUkVBREFCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRhYmxlIiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9fcmVhZGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fRmlsZUlPX3JlYWRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3JlYWRhYmxlX2ltcGwoZmlsZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fcmVhZGFibGUoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fRmlsZUlPX3JlYWRhYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX3dyaXRhYmxlX19kb2NfXywKKyJ3cml0YWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlRydWUgaWYgZmlsZSB3YXMgb3BlbmVkIGluIGEgd3JpdGUgbW9kZS4iKTsKKworI2RlZmluZSBfSU9fRklMRUlPX1dSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX3dyaXRhYmxlLCBNRVRIX05PQVJHUywgX2lvX0ZpbGVJT193cml0YWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT193cml0YWJsZV9pbXBsKGZpbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3dyaXRhYmxlKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0ZpbGVJT193cml0YWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19zZWVrYWJsZV9fZG9jX18sCisic2Vla2FibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUcnVlIGlmIGZpbGUgc3VwcG9ydHMgcmFuZG9tLWFjY2Vzcy4iKTsKKworI2RlZmluZSBfSU9fRklMRUlPX1NFRUtBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJzZWVrYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX3NlZWthYmxlLCBNRVRIX05PQVJHUywgX2lvX0ZpbGVJT19zZWVrYWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT19zZWVrYWJsZV9pbXBsKGZpbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3NlZWthYmxlKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0ZpbGVJT19zZWVrYWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19yZWFkaW50b19fZG9jX18sCisicmVhZGludG8oJHNlbGYsIGJ1ZmZlciwgLylcbiIKKyItLVxuIgorIlxuIgorIlNhbWUgYXMgUmF3SU9CYXNlLnJlYWRpbnRvKCkuIik7CisKKyNkZWZpbmUgX0lPX0ZJTEVJT19SRUFESU5UT19NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGludG8iLCAoUHlDRnVuY3Rpb24pX2lvX0ZpbGVJT19yZWFkaW50bywgTUVUSF9PLCBfaW9fRmlsZUlPX3JlYWRpbnRvX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3JlYWRpbnRvX2ltcGwoZmlsZWlvICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3JlYWRpbnRvKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT19yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19yZWFkYWxsX19kb2NfXywKKyJyZWFkYWxsKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhbGwgZGF0YSBmcm9tIHRoZSBmaWxlLCByZXR1cm5lZCBhcyBieXRlcy5cbiIKKyJcbiIKKyJJbiBub24tYmxvY2tpbmcgbW9kZSwgcmV0dXJucyBhcyBtdWNoIGFzIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZSxcbiIKKyJvciBOb25lIGlmIG5vIGRhdGEgaXMgYXZhaWxhYmxlLiAgUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7CisKKyNkZWZpbmUgX0lPX0ZJTEVJT19SRUFEQUxMX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWxsIiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9fcmVhZGFsbCwgTUVUSF9OT0FSR1MsIF9pb19GaWxlSU9fcmVhZGFsbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT19yZWFkYWxsX2ltcGwoZmlsZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fcmVhZGFsbChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19GaWxlSU9fcmVhZGFsbF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19yZWFkX19kb2NfXywKKyJyZWFkKCRzZWxmLCBzaXplPS0xLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGJ5dGVzLlxuIgorIlxuIgorIk9ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsLCBzbyBsZXNzIGRhdGEgbWF5IGJlIHJldHVybmVkIHRoYW4gcmVxdWVzdGVkLlxuIgorIkluIG5vbi1ibG9ja2luZyBtb2RlLCByZXR1cm5zIE5vbmUgaWYgbm8gZGF0YSBpcyBhdmFpbGFibGUuXG4iCisiUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7CisKKyNkZWZpbmUgX0lPX0ZJTEVJT19SRUFEX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkIiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9fcmVhZCwgTUVUSF9WQVJBUkdTLCBfaW9fRmlsZUlPX3JlYWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fcmVhZF9pbXBsKGZpbGVpbyAqc2VsZiwgUHlfc3NpemVfdCBzaXplKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fcmVhZChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmc2l6ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fRmlsZUlPX3JlYWRfaW1wbChzZWxmLCBzaXplKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT193cml0ZV9fZG9jX18sCisid3JpdGUoJHNlbGYsIGIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZSBieXRlcyBiIHRvIGZpbGUsIHJldHVybiBudW1iZXIgd3JpdHRlbi5cbiIKKyJcbiIKKyJPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCwgc28gbm90IGFsbCBvZiB0aGUgZGF0YSBtYXkgYmUgd3JpdHRlbi5cbiIKKyJUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaXMgcmV0dXJuZWQuICBJbiBub24tYmxvY2tpbmcgbW9kZSxcbiIKKyJyZXR1cm5zIE5vbmUgaWYgdGhlIHdyaXRlIHdvdWxkIGJsb2NrLiIpOworCisjZGVmaW5lIF9JT19GSUxFSU9fV1JJVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9fd3JpdGUsIE1FVEhfTywgX2lvX0ZpbGVJT193cml0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT193cml0ZV9pbXBsKGZpbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fd3JpdGUoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBiID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZiKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fd3JpdGVfaW1wbChzZWxmLCAmYik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYiAqLworICAgIGlmIChiLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZiKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX3NlZWtfX2RvY19fLAorInNlZWsoJHNlbGYsIHBvcywgd2hlbmNlPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJNb3ZlIHRvIG5ldyBmaWxlIHBvc2l0aW9uIGFuZCByZXR1cm4gdGhlIGZpbGUgcG9zaXRpb24uXG4iCisiXG4iCisiQXJndW1lbnQgb2Zmc2V0IGlzIGEgYnl0ZSBjb3VudC4gIE9wdGlvbmFsIGFyZ3VtZW50IHdoZW5jZSBkZWZhdWx0cyB0b1xuIgorIlNFRUtfU0VUIG9yIDAgKG9mZnNldCBmcm9tIHN0YXJ0IG9mIGZpbGUsIG9mZnNldCBzaG91bGQgYmUgPj0gMCk7IG90aGVyIHZhbHVlc1xuIgorImFyZSBTRUVLX0NVUiBvciAxIChtb3ZlIHJlbGF0aXZlIHRvIGN1cnJlbnQgcG9zaXRpb24sIHBvc2l0aXZlIG9yIG5lZ2F0aXZlKSxcbiIKKyJhbmQgU0VFS19FTkQgb3IgMiAobW92ZSByZWxhdGl2ZSB0byBlbmQgb2YgZmlsZSwgdXN1YWxseSBuZWdhdGl2ZSwgYWx0aG91Z2hcbiIKKyJtYW55IHBsYXRmb3JtcyBhbGxvdyBzZWVraW5nIGJleW9uZCB0aGUgZW5kIG9mIGEgZmlsZSkuXG4iCisiXG4iCisiTm90ZSB0aGF0IG5vdCBhbGwgZmlsZSBvYmplY3RzIGFyZSBzZWVrYWJsZS4iKTsKKworI2RlZmluZSBfSU9fRklMRUlPX1NFRUtfTUVUSE9EREVGICAgIFwKKyAgICB7InNlZWsiLCAoUHlDRnVuY3Rpb24pX2lvX0ZpbGVJT19zZWVrLCBNRVRIX1ZBUkFSR1MsIF9pb19GaWxlSU9fc2Vla19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT19zZWVrX2ltcGwoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqcG9zLCBpbnQgd2hlbmNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fc2VlayhmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwb3M7CisgICAgaW50IHdoZW5jZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwKKyAgICAgICAgJnBvcywgJndoZW5jZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fRmlsZUlPX3NlZWtfaW1wbChzZWxmLCBwb3MsIHdoZW5jZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19GaWxlSU9fdGVsbF9fZG9jX18sCisidGVsbCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkN1cnJlbnQgZmlsZSBwb3NpdGlvbi5cbiIKKyJcbiIKKyJDYW4gcmFpc2UgT1NFcnJvciBmb3Igbm9uIHNlZWthYmxlIGZpbGVzLiIpOworCisjZGVmaW5lIF9JT19GSUxFSU9fVEVMTF9NRVRIT0RERUYgICAgXAorICAgIHsidGVsbCIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX3RlbGwsIE1FVEhfTk9BUkdTLCBfaW9fRmlsZUlPX3RlbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fdGVsbF9pbXBsKGZpbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3RlbGwoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fRmlsZUlPX3RlbGxfaW1wbChzZWxmKTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9GVFJVTkNBVEUpCisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX3RydW5jYXRlX19kb2NfXywKKyJ0cnVuY2F0ZSgkc2VsZiwgc2l6ZT1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVHJ1bmNhdGUgdGhlIGZpbGUgdG8gYXQgbW9zdCBzaXplIGJ5dGVzIGFuZCByZXR1cm4gdGhlIHRydW5jYXRlZCBzaXplLlxuIgorIlxuIgorIlNpemUgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYXMgcmV0dXJuZWQgYnkgdGVsbCgpLlxuIgorIlRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgY2hhbmdlZCB0byB0aGUgdmFsdWUgb2Ygc2l6ZS4iKTsKKworI2RlZmluZSBfSU9fRklMRUlPX1RSVU5DQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX3RydW5jYXRlLCBNRVRIX1ZBUkFSR1MsIF9pb19GaWxlSU9fdHJ1bmNhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fdHJ1bmNhdGVfaW1wbChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpwb3NvYmopOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT190cnVuY2F0ZShmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwb3NvYmogPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidHJ1bmNhdGUiLAorICAgICAgICAwLCAxLAorICAgICAgICAmcG9zb2JqKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fdHJ1bmNhdGVfaW1wbChzZWxmLCBwb3NvYmopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfRlRSVU5DQVRFKSAqLworCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19pc2F0dHlfX2RvY19fLAorImlzYXR0eSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlRydWUgaWYgdGhlIGZpbGUgaXMgY29ubmVjdGVkIHRvIGEgVFRZIGRldmljZS4iKTsKKworI2RlZmluZSBfSU9fRklMRUlPX0lTQVRUWV9NRVRIT0RERUYgICAgXAorICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9faXNhdHR5LCBNRVRIX05PQVJHUywgX2lvX0ZpbGVJT19pc2F0dHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9faXNhdHR5X2ltcGwoZmlsZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9faXNhdHR5KGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0ZpbGVJT19pc2F0dHlfaW1wbChzZWxmKTsKK30KKworI2lmbmRlZiBfSU9fRklMRUlPX1RSVU5DQVRFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX0ZJTEVJT19UUlVOQ0FURV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fRklMRUlPX1RSVU5DQVRFX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMWEyMGIxMGM4MWFkZDY0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9pb2Jhc2UuYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL2lvYmFzZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NlYTA3OQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9pb2Jhc2UuYy5oCkBAIC0wLDAgKzEsMjc5IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2lvX19JT0Jhc2VfdGVsbF9fZG9jX18sCisidGVsbCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBjdXJyZW50IHN0cmVhbSBwb3NpdGlvbi4iKTsKKworI2RlZmluZSBfSU9fX0lPQkFTRV9URUxMX01FVEhPRERFRiAgICBcCisgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKV9pb19fSU9CYXNlX3RlbGwsIE1FVEhfTk9BUkdTLCBfaW9fX0lPQmFzZV90ZWxsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV90ZWxsX2ltcGwoUHlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfdGVsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19JT0Jhc2VfdGVsbF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX19JT0Jhc2VfZmx1c2hfX2RvY19fLAorImZsdXNoKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRmx1c2ggd3JpdGUgYnVmZmVycywgaWYgYXBwbGljYWJsZS5cbiIKKyJcbiIKKyJUaGlzIGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgcmVhZC1vbmx5IGFuZCBub24tYmxvY2tpbmcgc3RyZWFtcy4iKTsKKworI2RlZmluZSBfSU9fX0lPQkFTRV9GTFVTSF9NRVRIT0RERUYgICAgXAorICAgIHsiZmx1c2giLCAoUHlDRnVuY3Rpb24pX2lvX19JT0Jhc2VfZmx1c2gsIE1FVEhfTk9BUkdTLCBfaW9fX0lPQmFzZV9mbHVzaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfZmx1c2hfaW1wbChQeU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV9mbHVzaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19JT0Jhc2VfZmx1c2hfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fSU9CYXNlX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkZsdXNoIGFuZCBjbG9zZSB0aGUgSU8gb2JqZWN0LlxuIgorIlxuIgorIlRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBjbG9zZWQuIik7CisKKyNkZWZpbmUgX0lPX19JT0JBU0VfQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKV9pb19fSU9CYXNlX2Nsb3NlLCBNRVRIX05PQVJHUywgX2lvX19JT0Jhc2VfY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX2Nsb3NlX2ltcGwoUHlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfY2xvc2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fSU9CYXNlX2Nsb3NlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0lPQmFzZV9zZWVrYWJsZV9fZG9jX18sCisic2Vla2FibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gd2hldGhlciBvYmplY3Qgc3VwcG9ydHMgcmFuZG9tIGFjY2Vzcy5cbiIKKyJcbiIKKyJJZiBGYWxzZSwgc2VlaygpLCB0ZWxsKCkgYW5kIHRydW5jYXRlKCkgd2lsbCByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbi5cbiIKKyJUaGlzIG1ldGhvZCBtYXkgbmVlZCB0byBkbyBhIHRlc3Qgc2VlaygpLiIpOworCisjZGVmaW5lIF9JT19fSU9CQVNFX1NFRUtBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJzZWVrYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fX0lPQmFzZV9zZWVrYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19fSU9CYXNlX3NlZWthYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV9zZWVrYWJsZV9pbXBsKFB5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX3NlZWthYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX0lPQmFzZV9zZWVrYWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX19JT0Jhc2VfcmVhZGFibGVfX2RvY19fLAorInJlYWRhYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHdoZXRoZXIgb2JqZWN0IHdhcyBvcGVuZWQgZm9yIHJlYWRpbmcuXG4iCisiXG4iCisiSWYgRmFsc2UsIHJlYWQoKSB3aWxsIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uLiIpOworCisjZGVmaW5lIF9JT19fSU9CQVNFX1JFQURBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fX0lPQmFzZV9yZWFkYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19fSU9CYXNlX3JlYWRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV9yZWFkYWJsZV9pbXBsKFB5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX3JlYWRhYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX0lPQmFzZV9yZWFkYWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX19JT0Jhc2Vfd3JpdGFibGVfX2RvY19fLAorIndyaXRhYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHdoZXRoZXIgb2JqZWN0IHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcuXG4iCisiXG4iCisiSWYgRmFsc2UsIHdyaXRlKCkgd2lsbCByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbi4iKTsKKworI2RlZmluZSBfSU9fX0lPQkFTRV9XUklUQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGFibGUiLCAoUHlDRnVuY3Rpb24pX2lvX19JT0Jhc2Vfd3JpdGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fX0lPQmFzZV93cml0YWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2Vfd3JpdGFibGVfaW1wbChQeU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV93cml0YWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19JT0Jhc2Vfd3JpdGFibGVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fSU9CYXNlX2ZpbGVub19fZG9jX18sCisiZmlsZW5vKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBpZiBvbmUgZXhpc3RzLlxuIgorIlxuIgorIkFuIElPRXJyb3IgaXMgcmFpc2VkIGlmIHRoZSBJTyBvYmplY3QgZG9lcyBub3QgdXNlIGEgZmlsZSBkZXNjcmlwdG9yLiIpOworCisjZGVmaW5lIF9JT19fSU9CQVNFX0ZJTEVOT19NRVRIT0RERUYgICAgXAorICAgIHsiZmlsZW5vIiwgKFB5Q0Z1bmN0aW9uKV9pb19fSU9CYXNlX2ZpbGVubywgTUVUSF9OT0FSR1MsIF9pb19fSU9CYXNlX2ZpbGVub19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfZmlsZW5vX2ltcGwoUHlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfZmlsZW5vKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX0lPQmFzZV9maWxlbm9faW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fSU9CYXNlX2lzYXR0eV9fZG9jX18sCisiaXNhdHR5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHdoZXRoZXIgdGhpcyBpcyBhbiBcJ2ludGVyYWN0aXZlXCcgc3RyZWFtLlxuIgorIlxuIgorIlJldHVybiBGYWxzZSBpZiBpdCBjYW5cJ3QgYmUgZGV0ZXJtaW5lZC4iKTsKKworI2RlZmluZSBfSU9fX0lPQkFTRV9JU0FUVFlfTUVUSE9EREVGICAgIFwKKyAgICB7ImlzYXR0eSIsIChQeUNGdW5jdGlvbilfaW9fX0lPQmFzZV9pc2F0dHksIE1FVEhfTk9BUkdTLCBfaW9fX0lPQmFzZV9pc2F0dHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX2lzYXR0eV9pbXBsKFB5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX2lzYXR0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19JT0Jhc2VfaXNhdHR5X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0lPQmFzZV9yZWFkbGluZV9fZG9jX18sCisicmVhZGxpbmUoJHNlbGYsIHNpemU9LTEsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGFuZCByZXR1cm4gYSBsaW5lIGZyb20gdGhlIHN0cmVhbS5cbiIKKyJcbiIKKyJJZiBzaXplIGlzIHNwZWNpZmllZCwgYXQgbW9zdCBzaXplIGJ5dGVzIHdpbGwgYmUgcmVhZC5cbiIKKyJcbiIKKyJUaGUgbGluZSB0ZXJtaW5hdG9yIGlzIGFsd2F5cyBiXCdcXG5cJyBmb3IgYmluYXJ5IGZpbGVzOyBmb3IgdGV4dFxuIgorImZpbGVzLCB0aGUgbmV3bGluZXMgYXJndW1lbnQgdG8gb3BlbiBjYW4gYmUgdXNlZCB0byBzZWxlY3QgdGhlIGxpbmVcbiIKKyJ0ZXJtaW5hdG9yKHMpIHJlY29nbml6ZWQuIik7CisKKyNkZWZpbmUgX0lPX19JT0JBU0VfUkVBRExJTkVfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRsaW5lIiwgKFB5Q0Z1bmN0aW9uKV9pb19fSU9CYXNlX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1MsIF9pb19fSU9CYXNlX3JlYWRsaW5lX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV9yZWFkbGluZV9pbXBsKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGxpbWl0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX3JlYWRsaW5lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGxpbWl0ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkbGluZSIsCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbGltaXQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19JT0Jhc2VfcmVhZGxpbmVfaW1wbChzZWxmLCBsaW1pdCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fSU9CYXNlX3JlYWRsaW5lc19fZG9jX18sCisicmVhZGxpbmVzKCRzZWxmLCBoaW50PS0xLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBvZiBsaW5lcyBmcm9tIHRoZSBzdHJlYW0uXG4iCisiXG4iCisiaGludCBjYW4gYmUgc3BlY2lmaWVkIHRvIGNvbnRyb2wgdGhlIG51bWJlciBvZiBsaW5lcyByZWFkOiBubyBtb3JlXG4iCisibGluZXMgd2lsbCBiZSByZWFkIGlmIHRoZSB0b3RhbCBzaXplIChpbiBieXRlcy9jaGFyYWN0ZXJzKSBvZiBhbGxcbiIKKyJsaW5lcyBzbyBmYXIgZXhjZWVkcyBoaW50LiIpOworCisjZGVmaW5lIF9JT19fSU9CQVNFX1JFQURMSU5FU19NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKV9pb19fSU9CYXNlX3JlYWRsaW5lcywgTUVUSF9WQVJBUkdTLCBfaW9fX0lPQmFzZV9yZWFkbGluZXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX3JlYWRsaW5lc19pbXBsKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGhpbnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfcmVhZGxpbmVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGhpbnQgPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWRsaW5lcyIsCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmaGludCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0lPQmFzZV9yZWFkbGluZXNfaW1wbChzZWxmLCBoaW50KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX19JT0Jhc2Vfd3JpdGVsaW5lc19fZG9jX18sCisid3JpdGVsaW5lcygkc2VsZiwgbGluZXMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19fSU9CQVNFX1dSSVRFTElORVNfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlbGluZXMiLCAoUHlDRnVuY3Rpb24pX2lvX19JT0Jhc2Vfd3JpdGVsaW5lcywgTUVUSF9PLCBfaW9fX0lPQmFzZV93cml0ZWxpbmVzX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfaW9fX1Jhd0lPQmFzZV9yZWFkX19kb2NfXywKKyJyZWFkKCRzZWxmLCBzaXplPS0xLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX1JBV0lPQkFTRV9SRUFEX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkIiwgKFB5Q0Z1bmN0aW9uKV9pb19fUmF3SU9CYXNlX3JlYWQsIE1FVEhfVkFSQVJHUywgX2lvX19SYXdJT0Jhc2VfcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19SYXdJT0Jhc2VfcmVhZF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IG4pOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19SYXdJT0Jhc2VfcmVhZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBuID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnJlYWQiLAorICAgICAgICAmbikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX1Jhd0lPQmFzZV9yZWFkX2ltcGwoc2VsZiwgbik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fUmF3SU9CYXNlX3JlYWRhbGxfX2RvY19fLAorInJlYWRhbGwoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIHVudGlsIEVPRiwgdXNpbmcgbXVsdGlwbGUgcmVhZCgpIGNhbGwuIik7CisKKyNkZWZpbmUgX0lPX19SQVdJT0JBU0VfUkVBREFMTF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGFsbCIsIChQeUNGdW5jdGlvbilfaW9fX1Jhd0lPQmFzZV9yZWFkYWxsLCBNRVRIX05PQVJHUywgX2lvX19SYXdJT0Jhc2VfcmVhZGFsbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19SYXdJT0Jhc2VfcmVhZGFsbF9pbXBsKFB5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fUmF3SU9CYXNlX3JlYWRhbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fUmF3SU9CYXNlX3JlYWRhbGxfaW1wbChzZWxmKTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZTAzNDE1MmI2ODg0ZTY1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9zdHJpbmdpby5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvc3RyaW5naW8uYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZTMyYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvc3RyaW5naW8uYy5oCkBAIC0wLDAgKzEsMjg2IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2lvX1N0cmluZ0lPX2dldHZhbHVlX19kb2NfXywKKyJnZXR2YWx1ZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHJpZXZlIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIG9iamVjdC4iKTsKKworI2RlZmluZSBfSU9fU1RSSU5HSU9fR0VUVkFMVUVfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHZhbHVlIiwgKFB5Q0Z1bmN0aW9uKV9pb19TdHJpbmdJT19nZXR2YWx1ZSwgTUVUSF9OT0FSR1MsIF9pb19TdHJpbmdJT19nZXR2YWx1ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX2dldHZhbHVlX2ltcGwoc3RyaW5naW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX2dldHZhbHVlKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fU3RyaW5nSU9fZ2V0dmFsdWVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19TdHJpbmdJT190ZWxsX19kb2NfXywKKyJ0ZWxsKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVGVsbCB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLiIpOworCisjZGVmaW5lIF9JT19TVFJJTkdJT19URUxMX01FVEhPRERFRiAgICBcCisgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKV9pb19TdHJpbmdJT190ZWxsLCBNRVRIX05PQVJHUywgX2lvX1N0cmluZ0lPX3RlbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT190ZWxsX2ltcGwoc3RyaW5naW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX3RlbGwoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19TdHJpbmdJT190ZWxsX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fcmVhZF9fZG9jX18sCisicmVhZCgkc2VsZiwgc2l6ZT1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhdCBtb3N0IHNpemUgY2hhcmFjdGVycywgcmV0dXJuZWQgYXMgYSBzdHJpbmcuXG4iCisiXG4iCisiSWYgdGhlIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIG9taXR0ZWQsIHJlYWQgdW50aWwgRU9GXG4iCisiaXMgcmVhY2hlZC4gUmV0dXJuIGFuIGVtcHR5IHN0cmluZyBhdCBFT0YuIik7CisKKyNkZWZpbmUgX0lPX1NUUklOR0lPX1JFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pX2lvX1N0cmluZ0lPX3JlYWQsIE1FVEhfVkFSQVJHUywgX2lvX1N0cmluZ0lPX3JlYWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19yZWFkX2ltcGwoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX3JlYWQoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZhcmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1N0cmluZ0lPX3JlYWRfaW1wbChzZWxmLCBhcmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fcmVhZGxpbmVfX2RvY19fLAorInJlYWRsaW5lKCRzZWxmLCBzaXplPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIHVudGlsIG5ld2xpbmUgb3IgRU9GLlxuIgorIlxuIgorIlJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGlmIEVPRiBpcyBoaXQgaW1tZWRpYXRlbHkuIik7CisKKyNkZWZpbmUgX0lPX1NUUklOR0lPX1JFQURMSU5FX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbilfaW9fU3RyaW5nSU9fcmVhZGxpbmUsIE1FVEhfVkFSQVJHUywgX2lvX1N0cmluZ0lPX3JlYWRsaW5lX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fcmVhZGxpbmVfaW1wbChzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fcmVhZGxpbmUoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmUiLAorICAgICAgICAwLCAxLAorICAgICAgICAmYXJnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19yZWFkbGluZV9pbXBsKHNlbGYsIGFyZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19TdHJpbmdJT190cnVuY2F0ZV9fZG9jX18sCisidHJ1bmNhdGUoJHNlbGYsIHBvcz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVHJ1bmNhdGUgc2l6ZSB0byBwb3MuXG4iCisiXG4iCisiVGhlIHBvcyBhcmd1bWVudCBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhc1xuIgorInJldHVybmVkIGJ5IHRlbGwoKS4gIFRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgdW5jaGFuZ2VkLlxuIgorIlJldHVybnMgdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbi4iKTsKKworI2RlZmluZSBfSU9fU1RSSU5HSU9fVFJVTkNBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKV9pb19TdHJpbmdJT190cnVuY2F0ZSwgTUVUSF9WQVJBUkdTLCBfaW9fU3RyaW5nSU9fdHJ1bmNhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT190cnVuY2F0ZV9pbXBsKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT190cnVuY2F0ZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmFyZyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZhcmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1N0cmluZ0lPX3RydW5jYXRlX2ltcGwoc2VsZiwgYXJnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX1N0cmluZ0lPX3NlZWtfX2RvY19fLAorInNlZWsoJHNlbGYsIHBvcywgd2hlbmNlPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFuZ2Ugc3RyZWFtIHBvc2l0aW9uLlxuIgorIlxuIgorIlNlZWsgdG8gY2hhcmFjdGVyIG9mZnNldCBwb3MgcmVsYXRpdmUgdG8gcG9zaXRpb24gaW5kaWNhdGVkIGJ5IHdoZW5jZTpcbiIKKyIgICAgMCAgU3RhcnQgb2Ygc3RyZWFtICh0aGUgZGVmYXVsdCkuICBwb3Mgc2hvdWxkIGJlID49IDA7XG4iCisiICAgIDEgIEN1cnJlbnQgcG9zaXRpb24gLSBwb3MgbXVzdCBiZSAwO1xuIgorIiAgICAyICBFbmQgb2Ygc3RyZWFtIC0gcG9zIG11c3QgYmUgMC5cbiIKKyJSZXR1cm5zIHRoZSBuZXcgYWJzb2x1dGUgcG9zaXRpb24uIik7CisKKyNkZWZpbmUgX0lPX1NUUklOR0lPX1NFRUtfTUVUSE9EREVGICAgIFwKKyAgICB7InNlZWsiLCAoUHlDRnVuY3Rpb24pX2lvX1N0cmluZ0lPX3NlZWssIE1FVEhfVkFSQVJHUywgX2lvX1N0cmluZ0lPX3NlZWtfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19zZWVrX2ltcGwoc3RyaW5naW8gKnNlbGYsIFB5X3NzaXplX3QgcG9zLCBpbnQgd2hlbmNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19zZWVrKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IHBvczsKKyAgICBpbnQgd2hlbmNlID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxpOnNlZWsiLAorICAgICAgICAmcG9zLCAmd2hlbmNlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19zZWVrX2ltcGwoc2VsZiwgcG9zLCB3aGVuY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fd3JpdGVfX2RvY19fLAorIndyaXRlKCRzZWxmLCBzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JpdGUgc3RyaW5nIHRvIGZpbGUuXG4iCisiXG4iCisiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRlbiwgd2hpY2ggaXMgYWx3YXlzIGVxdWFsIHRvXG4iCisidGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nLiIpOworCisjZGVmaW5lIF9JT19TVFJJTkdJT19XUklURV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pX2lvX1N0cmluZ0lPX3dyaXRlLCBNRVRIX08sIF9pb19TdHJpbmdJT193cml0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2lvX1N0cmluZ0lPX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkNsb3NlIHRoZSBJTyBvYmplY3QuXG4iCisiXG4iCisiQXR0ZW1wdGluZyBhbnkgZnVydGhlciBvcGVyYXRpb24gYWZ0ZXIgdGhlIG9iamVjdCBpcyBjbG9zZWRcbiIKKyJ3aWxsIHJhaXNlIGEgVmFsdWVFcnJvci5cbiIKKyJcbiIKKyJUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgY2xvc2VkLiIpOworCisjZGVmaW5lIF9JT19TVFJJTkdJT19DTE9TRV9NRVRIT0RERUYgICAgXAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pX2lvX1N0cmluZ0lPX2Nsb3NlLCBNRVRIX05PQVJHUywgX2lvX1N0cmluZ0lPX2Nsb3NlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fY2xvc2VfaW1wbChzdHJpbmdpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fY2xvc2Uoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19TdHJpbmdJT19jbG9zZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX1N0cmluZ0lPX19faW5pdF9fX19kb2NfXywKKyJTdHJpbmdJTyhpbml0aWFsX3ZhbHVlPVwnXCcsIG5ld2xpbmU9XCdcXG5cJylcbiIKKyItLVxuIgorIlxuIgorIlRleHQgSS9PIGltcGxlbWVudGF0aW9uIHVzaW5nIGFuIGluLW1lbW9yeSBidWZmZXIuXG4iCisiXG4iCisiVGhlIGluaXRpYWxfdmFsdWUgYXJndW1lbnQgc2V0cyB0aGUgdmFsdWUgb2Ygb2JqZWN0LiAgVGhlIG5ld2xpbmVcbiIKKyJhcmd1bWVudCBpcyBsaWtlIHRoZSBvbmUgb2YgVGV4dElPV3JhcHBlclwncyBjb25zdHJ1Y3Rvci4iKTsKKworc3RhdGljIGludAorX2lvX1N0cmluZ0lPX19faW5pdF9fX2ltcGwoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuZXdsaW5lX29iaik7CisKK3N0YXRpYyBpbnQKK19pb19TdHJpbmdJT19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5pdGlhbF92YWx1ZSIsICJuZXdsaW5lIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmV3bGluZV9vYmogPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9POlN0cmluZ0lPIiwgX2tleXdvcmRzLAorICAgICAgICAmdmFsdWUsICZuZXdsaW5lX29iaikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fU3RyaW5nSU9fX19pbml0X19faW1wbCgoc3RyaW5naW8gKilzZWxmLCB2YWx1ZSwgbmV3bGluZV9vYmopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fcmVhZGFibGVfX2RvY19fLAorInJlYWRhYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHJlYWQuIik7CisKKyNkZWZpbmUgX0lPX1NUUklOR0lPX1JFQURBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fU3RyaW5nSU9fcmVhZGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fU3RyaW5nSU9fcmVhZGFibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19yZWFkYWJsZV9pbXBsKHN0cmluZ2lvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19yZWFkYWJsZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX1N0cmluZ0lPX3JlYWRhYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fd3JpdGFibGVfX2RvY19fLAorIndyaXRhYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHdyaXR0ZW4uIik7CisKKyNkZWZpbmUgX0lPX1NUUklOR0lPX1dSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilfaW9fU3RyaW5nSU9fd3JpdGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fU3RyaW5nSU9fd3JpdGFibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT193cml0YWJsZV9pbXBsKHN0cmluZ2lvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT193cml0YWJsZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX1N0cmluZ0lPX3dyaXRhYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fc2Vla2FibGVfX2RvY19fLAorInNlZWthYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHNlZWtlZC4iKTsKKworI2RlZmluZSBfSU9fU1RSSU5HSU9fU0VFS0FCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InNlZWthYmxlIiwgKFB5Q0Z1bmN0aW9uKV9pb19TdHJpbmdJT19zZWVrYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19TdHJpbmdJT19zZWVrYWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX3NlZWthYmxlX2ltcGwoc3RyaW5naW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX3NlZWthYmxlKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fU3RyaW5nSU9fc2Vla2FibGVfaW1wbChzZWxmKTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMDYxY2YzYTIwY2QxNGVkIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL3RleHRpby5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM3ZThjNwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oCkBAIC0wLDAgKzEsNDU2IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfX19pbml0X19fX2RvY19fLAorIkluY3JlbWVudGFsTmV3bGluZURlY29kZXIoZGVjb2RlciwgdHJhbnNsYXRlLCBlcnJvcnM9XCdzdHJpY3RcJylcbiIKKyItLVxuIgorIlxuIgorIkNvZGVjIHVzZWQgd2hlbiByZWFkaW5nIGEgZmlsZSBpbiB1bml2ZXJzYWwgbmV3bGluZXMgbW9kZS5cbiIKKyJcbiIKKyJJdCB3cmFwcyBhbm90aGVyIGluY3JlbWVudGFsIGRlY29kZXIsIHRyYW5zbGF0aW5nIFxcclxcbiBhbmQgXFxyIGludG8gXFxuLlxuIgorIkl0IGFsc28gcmVjb3JkcyB0aGUgdHlwZXMgb2YgbmV3bGluZXMgZW5jb3VudGVyZWQuICBXaGVuIHVzZWQgd2l0aFxuIgorInRyYW5zbGF0ZT1GYWxzZSwgaXQgZW5zdXJlcyB0aGF0IHRoZSBuZXdsaW5lIHNlcXVlbmNlIGlzIHJldHVybmVkIGluXG4iCisib25lIHBpZWNlLiBXaGVuIHVzZWQgd2l0aCBkZWNvZGVyPU5vbmUsIGl0IGV4cGVjdHMgdW5pY29kZSBzdHJpbmdzIGFzXG4iCisiZGVjb2RlIGlucHV0IGFuZCB0cmFuc2xhdGVzIG5ld2xpbmVzIHdpdGhvdXQgZmlyc3QgaW52b2tpbmcgYW4gZXh0ZXJuYWxcbiIKKyJkZWNvZGVyLiIpOworCitzdGF0aWMgaW50CitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9fX2luaXRfX19pbXBsKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWNvZGVyLCBpbnQgdHJhbnNsYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXJyb3JzKTsKKworc3RhdGljIGludAorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRlY29kZXIiLCAidHJhbnNsYXRlIiwgImVycm9ycyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpkZWNvZGVyOworICAgIGludCB0cmFuc2xhdGU7CisgICAgUHlPYmplY3QgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPaXxPOkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLCBfa2V5d29yZHMsCisgICAgICAgICZkZWNvZGVyLCAmdHJhbnNsYXRlLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX19faW5pdF9fX2ltcGwoKG5sZGVjb2Rlcl9vYmplY3QgKilzZWxmLCBkZWNvZGVyLCB0cmFuc2xhdGUsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZV9fZG9jX18sCisiZGVjb2RlKCRzZWxmLCAvLCBpbnB1dCwgZmluYWw9RmFsc2UpXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19JTkNSRU1FTlRBTE5FV0xJTkVERUNPREVSX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlX2ltcGwobmxkZWNvZGVyX29iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbnB1dCwgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZShubGRlY29kZXJfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmlucHV0OworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfGk6ZGVjb2RlIiwgX2tleXdvcmRzLAorICAgICAgICAmaW5wdXQsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGVfaW1wbChzZWxmLCBpbnB1dCwgZmluYWwpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9nZXRzdGF0ZV9fZG9jX18sCisiZ2V0c3RhdGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19JTkNSRU1FTlRBTE5FV0xJTkVERUNPREVSX0dFVFNUQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRzdGF0ZSIsIChQeUNGdW5jdGlvbilfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9nZXRzdGF0ZSwgTUVUSF9OT0FSR1MsIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2dldHN0YXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9nZXRzdGF0ZV9pbXBsKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZ2V0c3RhdGUobmxkZWNvZGVyX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZ2V0c3RhdGVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX3NldHN0YXRlX19kb2NfXywKKyJzZXRzdGF0ZSgkc2VsZiwgc3RhdGUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19JTkNSRU1FTlRBTE5FV0xJTkVERUNPREVSX1NFVFNUQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRzdGF0ZSIsIChQeUNGdW5jdGlvbilfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9zZXRzdGF0ZSwgTUVUSF9PLCBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9zZXRzdGF0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfcmVzZXRfX2RvY19fLAorInJlc2V0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fSU5DUkVNRU5UQUxORVdMSU5FREVDT0RFUl9SRVNFVF9NRVRIT0RERUYgICAgXAorICAgIHsicmVzZXQiLCAoUHlDRnVuY3Rpb24pX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfcmVzZXQsIE1FVEhfTk9BUkdTLCBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9yZXNldF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfcmVzZXRfaW1wbChubGRlY29kZXJfb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX3Jlc2V0KG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX3Jlc2V0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9fX2luaXRfX19fZG9jX18sCisiVGV4dElPV3JhcHBlcihidWZmZXIsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsXG4iCisiICAgICAgICAgICAgICBsaW5lX2J1ZmZlcmluZz1GYWxzZSwgd3JpdGVfdGhyb3VnaD1GYWxzZSlcbiIKKyItLVxuIgorIlxuIgorIkNoYXJhY3RlciBhbmQgbGluZSBiYXNlZCBsYXllciBvdmVyIGEgQnVmZmVyZWRJT0Jhc2Ugb2JqZWN0LCBidWZmZXIuXG4iCisiXG4iCisiZW5jb2RpbmcgZ2l2ZXMgdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHRoYXQgdGhlIHN0cmVhbSB3aWxsIGJlXG4iCisiZGVjb2RlZCBvciBlbmNvZGVkIHdpdGguIEl0IGRlZmF1bHRzIHRvIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkuXG4iCisiXG4iCisiZXJyb3JzIGRldGVybWluZXMgdGhlIHN0cmljdG5lc3Mgb2YgZW5jb2RpbmcgYW5kIGRlY29kaW5nIChzZWVcbiIKKyJoZWxwKGNvZGVjcy5Db2RlYykgb3IgdGhlIGRvY3VtZW50YXRpb24gZm9yIGNvZGVjcy5yZWdpc3RlcikgYW5kXG4iCisiZGVmYXVsdHMgdG8gXCJzdHJpY3RcIi5cbiIKKyJcbiIKKyJuZXdsaW5lIGNvbnRyb2xzIGhvdyBsaW5lIGVuZGluZ3MgYXJlIGhhbmRsZWQuIEl0IGNhbiBiZSBOb25lLCBcJ1wnLFxuIgorIlwnXFxuXCcsIFwnXFxyXCcsIGFuZCBcJ1xcclxcblwnLiAgSXQgd29ya3MgYXMgZm9sbG93czpcbiIKKyJcbiIKKyIqIE9uIGlucHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlIGlzXG4iCisiICBlbmFibGVkLiBMaW5lcyBpbiB0aGUgaW5wdXQgY2FuIGVuZCBpbiBcJ1xcblwnLCBcJ1xcclwnLCBvciBcJ1xcclxcblwnLCBhbmRcbiIKKyIgIHRoZXNlIGFyZSB0cmFuc2xhdGVkIGludG8gXCdcXG5cJyBiZWZvcmUgYmVpbmcgcmV0dXJuZWQgdG8gdGhlXG4iCisiICBjYWxsZXIuIElmIGl0IGlzIFwnXCcsIHVuaXZlcnNhbCBuZXdsaW5lIG1vZGUgaXMgZW5hYmxlZCwgYnV0IGxpbmVcbiIKKyIgIGVuZGluZ3MgYXJlIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLiBJZiBpdCBoYXMgYW55IG9mXG4iCisiICB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBpbnB1dCBsaW5lcyBhcmUgb25seSB0ZXJtaW5hdGVkIGJ5IHRoZSBnaXZlblxuIgorIiAgc3RyaW5nLCBhbmQgdGhlIGxpbmUgZW5kaW5nIGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLlxuIgorIlxuIgorIiogT24gb3V0cHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIGFueSBcJ1xcblwnIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmVcbiIKKyIgIHRyYW5zbGF0ZWQgdG8gdGhlIHN5c3RlbSBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yLCBvcy5saW5lc2VwLiBJZlxuIgorIiAgbmV3bGluZSBpcyBcJ1wnIG9yIFwnXFxuXCcsIG5vIHRyYW5zbGF0aW9uIHRha2VzIHBsYWNlLiBJZiBuZXdsaW5lIGlzIGFueVxuIgorIiAgb2YgdGhlIG90aGVyIGxlZ2FsIHZhbHVlcywgYW55IFwnXFxuXCcgY2hhcmFjdGVycyB3cml0dGVuIGFyZSB0cmFuc2xhdGVkXG4iCisiICB0byB0aGUgZ2l2ZW4gc3RyaW5nLlxuIgorIlxuIgorIklmIGxpbmVfYnVmZmVyaW5nIGlzIFRydWUsIGEgY2FsbCB0byBmbHVzaCBpcyBpbXBsaWVkIHdoZW4gYSBjYWxsIHRvXG4iCisid3JpdGUgY29udGFpbnMgYSBuZXdsaW5lIGNoYXJhY3Rlci4iKTsKKworc3RhdGljIGludAorX2lvX1RleHRJT1dyYXBwZXJfX19pbml0X19faW1wbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5ld2xpbmUsIGludCBsaW5lX2J1ZmZlcmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdyaXRlX3Rocm91Z2gpOworCitzdGF0aWMgaW50CitfaW9fVGV4dElPV3JhcHBlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiYnVmZmVyIiwgImVuY29kaW5nIiwgImVycm9ycyIsICJuZXdsaW5lIiwgImxpbmVfYnVmZmVyaW5nIiwgIndyaXRlX3Rocm91Z2giLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqYnVmZmVyOworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKm5ld2xpbmUgPSBOVUxMOworICAgIGludCBsaW5lX2J1ZmZlcmluZyA9IDA7CisgICAgaW50IHdyaXRlX3Rocm91Z2ggPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3x6enppaTpUZXh0SU9XcmFwcGVyIiwgX2tleXdvcmRzLAorICAgICAgICAmYnVmZmVyLCAmZW5jb2RpbmcsICZlcnJvcnMsICZuZXdsaW5lLCAmbGluZV9idWZmZXJpbmcsICZ3cml0ZV90aHJvdWdoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX19faW5pdF9fX2ltcGwoKHRleHRpbyAqKXNlbGYsIGJ1ZmZlciwgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSwgbGluZV9idWZmZXJpbmcsIHdyaXRlX3Rocm91Z2gpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9kZXRhY2hfX2RvY19fLAorImRldGFjaCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX1RFWFRJT1dSQVBQRVJfREVUQUNIX01FVEhPRERFRiAgICBcCisgICAgeyJkZXRhY2giLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfZGV0YWNoLCBNRVRIX05PQVJHUywgX2lvX1RleHRJT1dyYXBwZXJfZGV0YWNoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9kZXRhY2hfaW1wbCh0ZXh0aW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfZGV0YWNoKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX1RleHRJT1dyYXBwZXJfZGV0YWNoX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl93cml0ZV9fZG9jX18sCisid3JpdGUoJHNlbGYsIHRleHQsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX1dSSVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZSIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl93cml0ZSwgTUVUSF9PLCBfaW9fVGV4dElPV3JhcHBlcl93cml0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfd3JpdGVfaW1wbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICp0ZXh0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3dyaXRlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdGV4dDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTp3cml0ZSIsICZ0ZXh0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX3dyaXRlX2ltcGwoc2VsZiwgdGV4dCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19UZXh0SU9XcmFwcGVyX3JlYWRfX2RvY19fLAorInJlYWQoJHNlbGYsIHNpemU9LTEsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX1JFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfcmVhZCwgTUVUSF9WQVJBUkdTLCBfaW9fVGV4dElPV3JhcHBlcl9yZWFkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9yZWFkX2ltcGwodGV4dGlvICpzZWxmLCBQeV9zc2l6ZV90IG4pOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfcmVhZCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbiA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl9yZWFkX2ltcGwoc2VsZiwgbik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19UZXh0SU9XcmFwcGVyX3JlYWRsaW5lX19kb2NfXywKKyJyZWFkbGluZSgkc2VsZiwgc2l6ZT0tMSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX1RFWFRJT1dSQVBQRVJfUkVBRExJTkVfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRsaW5lIiwgKFB5Q0Z1bmN0aW9uKV9pb19UZXh0SU9XcmFwcGVyX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1MsIF9pb19UZXh0SU9XcmFwcGVyX3JlYWRsaW5lX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9yZWFkbGluZV9pbXBsKHRleHRpbyAqc2VsZiwgUHlfc3NpemVfdCBzaXplKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3JlYWRsaW5lKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBzaXplID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnJlYWRsaW5lIiwKKyAgICAgICAgJnNpemUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfcmVhZGxpbmVfaW1wbChzZWxmLCBzaXplKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX1RleHRJT1dyYXBwZXJfc2Vla19fZG9jX18sCisic2Vlaygkc2VsZiwgY29va2llLCB3aGVuY2U9MCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX1RFWFRJT1dSQVBQRVJfU0VFS19NRVRIT0RERUYgICAgXAorICAgIHsic2VlayIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl9zZWVrLCBNRVRIX1ZBUkFSR1MsIF9pb19UZXh0SU9XcmFwcGVyX3NlZWtfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3NlZWtfaW1wbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpjb29raWVPYmosIGludCB3aGVuY2UpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfc2Vlayh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpjb29raWVPYmo7CisgICAgaW50IHdoZW5jZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwKKyAgICAgICAgJmNvb2tpZU9iaiwgJndoZW5jZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl9zZWVrX2ltcGwoc2VsZiwgY29va2llT2JqLCB3aGVuY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl90ZWxsX19kb2NfXywKKyJ0ZWxsKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fVEVYVElPV1JBUFBFUl9URUxMX01FVEhPRERFRiAgICBcCisgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKV9pb19UZXh0SU9XcmFwcGVyX3RlbGwsIE1FVEhfTk9BUkdTLCBfaW9fVGV4dElPV3JhcHBlcl90ZWxsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl90ZWxsX2ltcGwodGV4dGlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3RlbGwodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fVGV4dElPV3JhcHBlcl90ZWxsX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl90cnVuY2F0ZV9fZG9jX18sCisidHJ1bmNhdGUoJHNlbGYsIHBvcz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fVEVYVElPV1JBUFBFUl9UUlVOQ0FURV9NRVRIT0RERUYgICAgXAorICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfdHJ1bmNhdGUsIE1FVEhfVkFSQVJHUywgX2lvX1RleHRJT1dyYXBwZXJfdHJ1bmNhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3RydW5jYXRlX2ltcGwodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqcG9zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3RydW5jYXRlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBvcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZwb3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfdHJ1bmNhdGVfaW1wbChzZWxmLCBwb3MpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9maWxlbm9fX2RvY19fLAorImZpbGVubygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX1RFWFRJT1dSQVBQRVJfRklMRU5PX01FVEhPRERFRiAgICBcCisgICAgeyJmaWxlbm8iLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfZmlsZW5vLCBNRVRIX05PQVJHUywgX2lvX1RleHRJT1dyYXBwZXJfZmlsZW5vX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9maWxlbm9faW1wbCh0ZXh0aW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfZmlsZW5vKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX1RleHRJT1dyYXBwZXJfZmlsZW5vX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9zZWVrYWJsZV9fZG9jX18sCisic2Vla2FibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX1NFRUtBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJzZWVrYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl9zZWVrYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19UZXh0SU9XcmFwcGVyX3NlZWthYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9zZWVrYWJsZV9pbXBsKHRleHRpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9zZWVrYWJsZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX3NlZWthYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9yZWFkYWJsZV9fZG9jX18sCisicmVhZGFibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX1JFQURBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl9yZWFkYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19UZXh0SU9XcmFwcGVyX3JlYWRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9yZWFkYWJsZV9pbXBsKHRleHRpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9yZWFkYWJsZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX3JlYWRhYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl93cml0YWJsZV9fZG9jX18sCisid3JpdGFibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX1dSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl93cml0YWJsZSwgTUVUSF9OT0FSR1MsIF9pb19UZXh0SU9XcmFwcGVyX3dyaXRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl93cml0YWJsZV9pbXBsKHRleHRpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl93cml0YWJsZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX3dyaXRhYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9pc2F0dHlfX2RvY19fLAorImlzYXR0eSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX1RFWFRJT1dSQVBQRVJfSVNBVFRZX01FVEhPRERFRiAgICBcCisgICAgeyJpc2F0dHkiLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfaXNhdHR5LCBNRVRIX05PQVJHUywgX2lvX1RleHRJT1dyYXBwZXJfaXNhdHR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9pc2F0dHlfaW1wbCh0ZXh0aW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfaXNhdHR5KHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX1RleHRJT1dyYXBwZXJfaXNhdHR5X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9mbHVzaF9fZG9jX18sCisiZmx1c2goJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX0ZMVVNIX01FVEhPRERFRiAgICBcCisgICAgeyJmbHVzaCIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl9mbHVzaCwgTUVUSF9OT0FSR1MsIF9pb19UZXh0SU9XcmFwcGVyX2ZsdXNoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9mbHVzaF9pbXBsKHRleHRpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9mbHVzaCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX2ZsdXNoX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9jbG9zZV9fZG9jX18sCisiY2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX0NMT1NFX01FVEhPRERFRiAgICBcCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl9jbG9zZSwgTUVUSF9OT0FSR1MsIF9pb19UZXh0SU9XcmFwcGVyX2Nsb3NlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9jbG9zZV9pbXBsKHRleHRpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9jbG9zZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX2Nsb3NlX2ltcGwoc2VsZik7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjkwNjA4Zjg1YWFiOGJhNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9maWxlaW8uYyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCmluZGV4IDc0NTA4YTcuLmRiZDYwNGEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2ZpbGVpby5jCisrKyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCkBAIC00Myw2ICs0MywxOSBAQAogI2RlZmluZSBTTUFMTENIVU5LIEJVRlNJWgogI2VuZGlmCiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfaW8KK2NsYXNzIF9pby5GaWxlSU8gImZpbGVpbyAqIiAiJlB5RmlsZUlPX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0xYzc3NzA4YjQxZmRhNzBjXSovCisKKy8qW3B5dGhvbiBpbnB1dF0KK2NsYXNzIGlvX3NzaXplX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnUHlfc3NpemVfdCcKKyAgICBjb252ZXJ0ZXIgPSAnX1B5SU9fQ29udmVydFNzaXplX3QnCitbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1kMGE4MTFkM2NiZmQxYjMzXSovCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgaW50IGZkOwpAQCAtNTMsNiArNjYsNyBAQAogICAgIHNpZ25lZCBpbnQgc2Vla2FibGUgOiAyOyAvKiAtMSBtZWFucyB1bmtub3duICovCiAgICAgdW5zaWduZWQgaW50IGNsb3NlZmQgOiAxOwogICAgIGNoYXIgZmluYWxpemluZzsKKyAgICB1bnNpZ25lZCBpbnQgYmxrc2l6ZTsKICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CiAgICAgUHlPYmplY3QgKmRpY3Q7CiB9IGZpbGVpbzsKQEAgLTEwNiw5ICsxMjAsMTEgQEAKICAgICAgICAgLyogZmQgaXMgYWNjZXNzaWJsZSBhbmQgc29tZW9uZSBlbHNlIG1heSBoYXZlIGNsb3NlZCBpdCAqLwogICAgICAgICBpZiAoX1B5VmVyaWZ5X2ZkKGZkKSkgewogICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgICAgICAgICAgZXJyID0gY2xvc2UoZmQpOwogICAgICAgICAgICAgaWYgKGVyciA8IDApCiAgICAgICAgICAgICAgICAgc2F2ZV9lcnJubyA9IGVycm5vOworICAgICAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzYXZlX2Vycm5vID0gZXJybm87CkBAIC0xMjMsOCArMTM5LDE4IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8uY2xvc2UKKworQ2xvc2UgdGhlIGZpbGUuCisKK0EgY2xvc2VkIGZpbGUgY2Fubm90IGJlIHVzZWQgZm9yIGZ1cnRoZXIgSS9PIG9wZXJhdGlvbnMuICBjbG9zZSgpIG1heSBiZQorY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHdpdGhvdXQgZXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fY2xvc2UoZmlsZWlvICpzZWxmKQorX2lvX0ZpbGVJT19jbG9zZV9pbXBsKGZpbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NzM3YTMxOWVmM2JhZDBiIGlucHV0PWYzNTIzMTc2MGQ1NGE1MjJdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzOwogICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKQEAgLTE2OCw2ICsxOTQsNyBAQAogICAgICAgICBzZWxmLT53cml0YWJsZSA9IDA7CiAgICAgICAgIHNlbGYtPmFwcGVuZGluZyA9IDA7CiAgICAgICAgIHNlbGYtPnNlZWthYmxlID0gLTE7CisgICAgICAgIHNlbGYtPmJsa3NpemUgPSAwOwogICAgICAgICBzZWxmLT5jbG9zZWZkID0gMTsKICAgICAgICAgc2VsZi0+d2Vha3JlZmxpc3QgPSBOVUxMOwogICAgIH0KQEAgLTE3NSw1NyArMjAyLDQwIEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBzZWxmOwogfQogCi0vKiBPbiBVbml4LCBvcGVuIHdpbGwgc3VjY2VlZCBmb3IgZGlyZWN0b3JpZXMuCi0gICBJbiBQeXRob24sIHRoZXJlIHNob3VsZCBiZSBubyBmaWxlIG9iamVjdHMgcmVmZXJyaW5nIHRvCi0gICBkaXJlY3Rvcmllcywgc28gd2UgbmVlZCBhIGNoZWNrLiAgKi8KLQotc3RhdGljIGludAotZGlyY2hlY2soZmlsZWlvKiBzZWxmLCBQeU9iamVjdCAqbmFtZW9iaikKLXsKLSNpZiBkZWZpbmVkKEhBVkVfRlNUQVQpICYmIGRlZmluZWQoU19JU0RJUikgJiYgZGVmaW5lZChFSVNESVIpCi0gICAgc3RydWN0IHN0YXQgYnVmOwotICAgIGlmIChzZWxmLT5mZCA8IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmIChmc3RhdChzZWxmLT5mZCwgJmJ1ZikgPT0gMCAmJiBTX0lTRElSKGJ1Zi5zdF9tb2RlKSkgewotICAgICAgICBlcnJubyA9IEVJU0RJUjsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX0lPRXJyb3IsIG5hbWVvYmopOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotI2VuZGlmCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQKLWNoZWNrX2ZkKGludCBmZCkKLXsKLSNpZiBkZWZpbmVkKEhBVkVfRlNUQVQpCi0gICAgc3RydWN0IHN0YXQgYnVmOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSB8fCAoZnN0YXQoZmQsICZidWYpIDwgMCAmJiBlcnJubyA9PSBFQkFERikpIHsKLSAgICAgICAgUHlPYmplY3QgKmV4YzsKLSAgICAgICAgY2hhciAqbXNnID0gc3RyZXJyb3IoRUJBREYpOwotICAgICAgICBleGMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oUHlFeGNfT1NFcnJvciwgIihpcykiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUJBREYsIG1zZyk7Ci0gICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19PU0Vycm9yLCBleGMpOwotICAgICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0jZW5kaWYKLSAgICByZXR1cm4gMDsKLX0KLQogI2lmZGVmIE9fQ0xPRVhFQwogZXh0ZXJuIGludCBfUHlfb3Blbl9jbG9leGVjX3dvcmtzOwogI2VuZGlmCiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8uX19pbml0X18KKyAgICBmaWxlIGFzIG5hbWVvYmo6IG9iamVjdAorICAgIG1vZGU6IHN0ciA9ICJyIgorICAgIGNsb3NlZmQ6IGludChjX2RlZmF1bHQ9IjEiKSA9IFRydWUKKyAgICBvcGVuZXI6IG9iamVjdCA9IE5vbmUKKworT3BlbiBhIGZpbGUuCisKK1RoZSBtb2RlIGNhbiBiZSAncicgKGRlZmF1bHQpLCAndycsICd4JyBvciAnYScgZm9yIHJlYWRpbmcsCit3cml0aW5nLCBleGNsdXNpdmUgY3JlYXRpb24gb3IgYXBwZW5kaW5nLiAgVGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0Citkb2Vzbid0IGV4aXN0IHdoZW4gb3BlbmVkIGZvciB3cml0aW5nIG9yIGFwcGVuZGluZzsgaXQgd2lsbCBiZSB0cnVuY2F0ZWQKK3doZW4gb3BlbmVkIGZvciB3cml0aW5nLiAgQSBGaWxlRXhpc3RzRXJyb3Igd2lsbCBiZSByYWlzZWQgaWYgaXQgYWxyZWFkeQorZXhpc3RzIHdoZW4gb3BlbmVkIGZvciBjcmVhdGluZy4gT3BlbmluZyBhIGZpbGUgZm9yIGNyZWF0aW5nIGltcGxpZXMKK3dyaXRpbmcgc28gdGhpcyBtb2RlIGJlaGF2ZXMgaW4gYSBzaW1pbGFyIHdheSB0byAndycuQWRkIGEgJysnIHRvIHRoZSBtb2RlCit0byBhbGxvdyBzaW11bHRhbmVvdXMgcmVhZGluZyBhbmQgd3JpdGluZy4gQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5CitwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGUKK29iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcgb3BlbmVyIHdpdGggKCpuYW1lKiwgKmZsYWdzKikuCisqb3BlbmVyKiBtdXN0IHJldHVybiBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciAocGFzc2luZyBvcy5vcGVuIGFzICpvcGVuZXIqCityZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgaW50Ci1maWxlaW9faW5pdChQeU9iamVjdCAqb3NlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19pb19GaWxlSU9fX19pbml0X19faW1wbChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpuYW1lb2JqLCBjb25zdCBjaGFyICptb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbG9zZWZkLCBQeU9iamVjdCAqb3BlbmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzNDEzZjY4ZTY0ODRiYmQgaW5wdXQ9MTkzMTY0ZTI5M2Q2YzA5N10qLwogewotICAgIGZpbGVpbyAqc2VsZiA9IChmaWxlaW8gKikgb3NlbGY7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmaWxlIiwgIm1vZGUiLCAiY2xvc2VmZCIsICJvcGVuZXIiLCBOVUxMfTsKICAgICBjb25zdCBjaGFyICpuYW1lID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbmFtZW9iaiwgKnN0cmluZ29iaiA9IE5VTEwsICpvcGVuZXIgPSBQeV9Ob25lOwotICAgIGNoYXIgKm1vZGUgPSAiciI7Ci0gICAgY2hhciAqczsKKyAgICBQeU9iamVjdCAqc3RyaW5nb2JqID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpzOwogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9VTklDT0RFICp3aWRlbmFtZSA9IE5VTEw7CiAjZW5kaWYKQEAgLTIzMywxNSArMjQzLDE3IEBACiAgICAgaW50IHJ3YSA9IDAsIHBsdXMgPSAwOwogICAgIGludCBmbGFncyA9IDA7CiAgICAgaW50IGZkID0gLTE7Ci0gICAgaW50IGNsb3NlZmQgPSAxOwogICAgIGludCBmZF9pc19vd24gPSAwOwogI2lmZGVmIE9fQ0xPRVhFQwogICAgIGludCAqYXRvbWljX2ZsYWdfd29ya3MgPSAmX1B5X29wZW5fY2xvZXhlY193b3JrczsKICNlbGlmICFkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgaW50ICphdG9taWNfZmxhZ193b3JrcyA9IE5VTEw7CiAjZW5kaWYKKyAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IGZkZnN0YXQ7CisgICAgaW50IGZzdGF0X3Jlc3VsdDsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKIAotICAgIGFzc2VydChQeUZpbGVJT19DaGVjayhvc2VsZikpOworICAgIGFzc2VydChQeUZpbGVJT19DaGVjayhzZWxmKSk7CiAgICAgaWYgKHNlbGYtPmZkID49IDApIHsKICAgICAgICAgaWYgKHNlbGYtPmNsb3NlZmQpIHsKICAgICAgICAgICAgIC8qIEhhdmUgdG8gY2xvc2UgdGhlIGV4aXN0aW5nIGZpbGUgZmlyc3QuICovCkBAIC0yNTIsMTEgKzI2NCw2IEBACiAgICAgICAgICAgICBzZWxmLT5mZCA9IC0xOwogICAgIH0KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfHNpTzpmaWxlaW8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJm5hbWVvYmosICZtb2RlLCAmY2xvc2VmZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3BlbmVyKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sobmFtZW9iaikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkLCBnb3QgZmxvYXQiKTsKQEAgLTI4MCw3ICsyODcsNyBAQAogICAgICAgICBpZiAod2lkZW5hbWUgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgaWYgKHdjc2xlbih3aWRlbmFtZSkgIT0gbGVuZ3RoKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW1iZWRkZWQgTlVMIGNoYXJhY3RlciIpOworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgfSBlbHNlCkBAIC0zNjYsOCArMzczLDYgQEAKICNlbmRpZgogCiAgICAgaWYgKGZkID49IDApIHsKLSAgICAgICAgaWYgKGNoZWNrX2ZkKGZkKSkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIHNlbGYtPmZkID0gZmQ7CiAgICAgICAgIHNlbGYtPmNsb3NlZmQgPSBjbG9zZWZkOwogICAgIH0KQEAgLTM4MSwxNSArMzg2LDIwIEBACiAKICAgICAgICAgZXJybm8gPSAwOwogICAgICAgICBpZiAob3BlbmVyID09IFB5X05vbmUpIHsKLSAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgTVNfV0lORE9XUwotICAgICAgICAgICAgaWYgKHdpZGVuYW1lICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgc2VsZi0+ZmQgPSBfd29wZW4od2lkZW5hbWUsIGZsYWdzLCAwNjY2KTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiAod2lkZW5hbWUgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZmQgPSBfd29wZW4od2lkZW5hbWUsIGZsYWdzLCAwNjY2KTsKKyAgICAgICAgICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAgICAgICBzZWxmLT5mZCA9IG9wZW4obmFtZSwgZmxhZ3MsIDA2NjYpOworICAgICAgICAgICAgICAgICAgICBzZWxmLT5mZCA9IG9wZW4obmFtZSwgZmxhZ3MsIDA2NjYpOworICAgICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgICAgICB9IHdoaWxlIChzZWxmLT5mZCA8IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYKKyAgICAgICAgICAgICAgICAgICAgICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKIAotICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGlmIChhc3luY19lcnIpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpmZG9iajsKQEAgLTQyNyw4ICs0MzcsNDEgQEAKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAjZW5kaWYKICAgICB9Ci0gICAgaWYgKGRpcmNoZWNrKHNlbGYsIG5hbWVvYmopIDwgMCkKLSAgICAgICAgZ290byBlcnJvcjsKKworICAgIHNlbGYtPmJsa3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBmc3RhdF9yZXN1bHQgPSBfUHlfZnN0YXRfbm9yYWlzZShzZWxmLT5mZCwgJmZkZnN0YXQpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKGZzdGF0X3Jlc3VsdCA8IDApIHsKKyAgICAgICAgLyogVG9sZXJhdGUgZnN0YXQoKSBlcnJvcnMgb3RoZXIgdGhhbiBFQkFERi4gIFNlZSBJc3N1ZSAjMjU3MTcsIHdoZXJlCisgICAgICAgIGFuIGFub255bW91cyBmaWxlIG9uIGEgVmlydHVhbCBCb3ggc2hhcmVkIGZvbGRlciBmaWxlc3lzdGVtIHdvdWxkCisgICAgICAgIHJhaXNlIEVOT0VOVC4gKi8KKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIGlmIChHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9JTlZBTElEX0hBTkRMRSkgeworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisjZWxzZQorICAgICAgICBpZiAoZXJybm8gPT0gRUJBREYpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyNlbmRpZgorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyNpZiBkZWZpbmVkKFNfSVNESVIpICYmIGRlZmluZWQoRUlTRElSKQorICAgICAgICAvKiBPbiBVbml4LCBvcGVuIHdpbGwgc3VjY2VlZCBmb3IgZGlyZWN0b3JpZXMuCisgICAgICAgICAgIEluIFB5dGhvbiwgdGhlcmUgc2hvdWxkIGJlIG5vIGZpbGUgb2JqZWN0cyByZWZlcnJpbmcgdG8KKyAgICAgICAgICAgZGlyZWN0b3JpZXMsIHNvIHdlIG5lZWQgYSBjaGVjay4gICovCisgICAgICAgIGlmIChTX0lTRElSKGZkZnN0YXQuc3RfbW9kZSkpIHsKKyAgICAgICAgICAgIGVycm5vID0gRUlTRElSOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX0lPRXJyb3IsIG5hbWVvYmopOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorI2VuZGlmIC8qIGRlZmluZWQoU19JU0RJUikgKi8KKyNpZmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0JMS1NJWkUKKyAgICAgICAgaWYgKGZkZnN0YXQuc3RfYmxrc2l6ZSA+IDEpCisgICAgICAgICAgICBzZWxmLT5ibGtzaXplID0gZmRmc3RhdC5zdF9ibGtzaXplOworI2VuZGlmIC8qIEhBVkVfU1RSVUNUX1NUQVRfU1RfQkxLU0laRSAqLworICAgIH0KIAogI2lmIGRlZmluZWQoTVNfV0lORE9XUykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKQogICAgIC8qIGRvbid0IHRyYW5zbGF0ZSBuZXdsaW5lcyAoXHJcbiA8PT4gXG4pICovCkBAIC01MDYsMzIgKzU0OSw2MCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uRmlsZUlPLmZpbGVubworCitSZXR1cm4gdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIChhbiBpbnRlZ2VyKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb19maWxlbm8oZmlsZWlvICpzZWxmKQorX2lvX0ZpbGVJT19maWxlbm9faW1wbChmaWxlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTk2MjZjZTUzOThlY2U5MCBpbnB1dD0wYjliMmRlNjczMzVhZGEzXSovCiB7CiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKSBzZWxmLT5mZCk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8ucmVhZGFibGUKKworVHJ1ZSBpZiBmaWxlIHdhcyBvcGVuZWQgaW4gYSByZWFkIG1vZGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fcmVhZGFibGUoZmlsZWlvICpzZWxmKQorX2lvX0ZpbGVJT19yZWFkYWJsZV9pbXBsKGZpbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NDA3NDRhNjE1MGZlOWJhIGlucHV0PWEzZmRmZWQ2ZWVhNzIxYzVdKi8KIHsKICAgICBpZiAoc2VsZi0+ZmQgPCAwKQogICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpIHNlbGYtPnJlYWRhYmxlKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkZpbGVJTy53cml0YWJsZQorCitUcnVlIGlmIGZpbGUgd2FzIG9wZW5lZCBpbiBhIHdyaXRlIG1vZGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fd3JpdGFibGUoZmlsZWlvICpzZWxmKQorX2lvX0ZpbGVJT193cml0YWJsZV9pbXBsKGZpbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NmNlZmM1NDQ2ZTg5OTc3IGlucHV0PWMyMDRhODA4Y2EyZTE3NDhdKi8KIHsKICAgICBpZiAoc2VsZi0+ZmQgPCAwKQogICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpIHNlbGYtPndyaXRhYmxlKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkZpbGVJTy5zZWVrYWJsZQorCitUcnVlIGlmIGZpbGUgc3VwcG9ydHMgcmFuZG9tLWFjY2Vzcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb19zZWVrYWJsZShmaWxlaW8gKnNlbGYpCitfaW9fRmlsZUlPX3NlZWthYmxlX2ltcGwoZmlsZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ3OTA5Y2EwYTQyZTkyODcgaW5wdXQ9YzhlNTU1NGQyZmQ2M2M3Zl0qLwogewogICAgIGlmIChzZWxmLT5mZCA8IDApCiAgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CkBAIC01NDgsMTEgKzYxOSwxOSBAQAogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpIHNlbGYtPnNlZWthYmxlKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkZpbGVJTy5yZWFkaW50bworICAgIGJ1ZmZlcjogUHlfYnVmZmVyKGFjY2VwdD17cndidWZmZXJ9KQorICAgIC8KKworU2FtZSBhcyBSYXdJT0Jhc2UucmVhZGludG8oKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb19yZWFkaW50byhmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0ZpbGVJT19yZWFkaW50b19pbXBsKGZpbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjAxYTVhMjJjODQxNWNiNCBpbnB1dD00NzIxZDdiNjhiMTU0ZWFmXSovCiB7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgUHlfc3NpemVfdCBuLCBsZW47CisgICAgUHlfc3NpemVfdCBuOwogICAgIGludCBlcnI7CiAKICAgICBpZiAoc2VsZi0+ZmQgPCAwKQpAQCAtNTYwLDQ4ICs2MzksMjEgQEAKICAgICBpZiAoIXNlbGYtPnJlYWRhYmxlKQogICAgICAgICByZXR1cm4gZXJyX21vZGUoInJlYWRpbmciKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidyoiLCAmcGJ1ZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKF9QeVZlcmlmeV9mZChzZWxmLT5mZCkpIHsKLSAgICAgICAgbGVuID0gcGJ1Zi5sZW47Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgZXJybm8gPSAwOwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKGxlbiA+IElOVF9NQVgpCi0gICAgICAgICAgICBsZW4gPSBJTlRfTUFYOwotICAgICAgICBuID0gcmVhZChzZWxmLT5mZCwgcGJ1Zi5idWYsIChpbnQpbGVuKTsKLSNlbHNlCi0gICAgICAgIG4gPSByZWFkKHNlbGYtPmZkLCBwYnVmLmJ1ZiwgbGVuKTsKLSNlbmRpZgotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIH0gZWxzZQotICAgICAgICBuID0gLTE7CisgICAgbiA9IF9QeV9yZWFkKHNlbGYtPmZkLCBidWZmZXItPmJ1ZiwgYnVmZmVyLT5sZW4pOworICAgIC8qIGNvcHkgZXJybm8gYmVjYXVzZSBQeUJ1ZmZlcl9SZWxlYXNlKCkgY2FuIGluZGlyZWN0bHkgbW9kaWZ5IGl0ICovCiAgICAgZXJyID0gZXJybm87Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgaWYgKG4gPCAwKSB7Ci0gICAgICAgIGlmIChlcnIgPT0gRUFHQUlOKQorCisgICAgaWYgKG4gPT0gLTEpIHsKKyAgICAgICAgaWYgKGVyciA9PSBFQUdBSU4pIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICAgICAgZXJybm8gPSBlcnI7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KG4pOwogfQogCi0jaWZuZGVmIEhBVkVfRlNUQVQKLQotc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb19yZWFkYWxsKGZpbGVpbyAqc2VsZikKLXsKLSAgICBfUHlfSURFTlRJRklFUihyZWFkYWxsKTsKLSAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKSZQeVJhd0lPQmFzZV9UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX3JlYWRhbGwsICJPIiwgc2VsZik7Ci19Ci0KLSNlbHNlCi0KIHN0YXRpYyBzaXplX3QKIG5ld19idWZmZXJzaXplKGZpbGVpbyAqc2VsZiwgc2l6ZV90IGN1cnJlbnRzaXplKQogewpAQCAtNjIxLDEwICs2NzMsMjAgQEAKICAgICByZXR1cm4gYWRkZW5kICsgY3VycmVudHNpemU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8ucmVhZGFsbAorCitSZWFkIGFsbCBkYXRhIGZyb20gdGhlIGZpbGUsIHJldHVybmVkIGFzIGJ5dGVzLgorCitJbiBub24tYmxvY2tpbmcgbW9kZSwgcmV0dXJucyBhcyBtdWNoIGFzIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZSwKK29yIE5vbmUgaWYgbm8gZGF0YSBpcyBhdmFpbGFibGUuICBSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb19yZWFkYWxsKGZpbGVpbyAqc2VsZikKK19pb19GaWxlSU9fcmVhZGFsbF9pbXBsKGZpbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mYWEwMjkyYjIxM2I0MDIyIGlucHV0PWRiZGMxMzdmNTU2MDI4MzRdKi8KIHsKLSAgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0YXR1czsKICAgICBQeV9vZmZfdCBwb3MsIGVuZDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5X3NzaXplX3QgYnl0ZXNfcmVhZCA9IDA7CkBAIC02MzYsMTMgKzY5OCwxNiBAQAogICAgIGlmICghX1B5VmVyaWZ5X2ZkKHNlbGYtPmZkKSkKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKIAorICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgcG9zID0gX2xzZWVraTY0KHNlbGYtPmZkLCAwTCwgU0VFS19DVVIpOwogI2Vsc2UKICAgICBwb3MgPSBsc2VlayhzZWxmLT5mZCwgMEwsIFNFRUtfQ1VSKTsKICNlbmRpZgotICAgIGlmIChmc3RhdChzZWxmLT5mZCwgJnN0KSA9PSAwKQotICAgICAgICBlbmQgPSBzdC5zdF9zaXplOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisKKyAgICBpZiAoX1B5X2ZzdGF0X25vcmFpc2Uoc2VsZi0+ZmQsICZzdGF0dXMpID09IDApCisgICAgICAgIGVuZCA9IHN0YXR1cy5zdF9zaXplOwogICAgIGVsc2UKICAgICAgICAgZW5kID0gKFB5X29mZl90KS0xOwogCkBAIC02NzYsMzUgKzc0MSwyMiBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgbiA9IGJ1ZnNpemUgLSBieXRlc19yZWFkOwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKG4gPiBJTlRfTUFYKQotICAgICAgICAgICAgbiA9IElOVF9NQVg7Ci0gICAgICAgIG4gPSByZWFkKHNlbGYtPmZkLCBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgYnl0ZXNfcmVhZCwgKGludCluKTsKLSNlbHNlCi0gICAgICAgIG4gPSByZWFkKHNlbGYtPmZkLCBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgYnl0ZXNfcmVhZCwgbik7Ci0jZW5kaWYKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgICAgICBuID0gX1B5X3JlYWQoc2VsZi0+ZmQsCisgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgYnl0ZXNfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgIGJ1ZnNpemUgLSBieXRlc19yZWFkKTsKKwogICAgICAgICBpZiAobiA9PSAwKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChuIDwgMCkgewotICAgICAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChuID09IC0xKSB7CiAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgICAgICBpZiAoYnl0ZXNfcmVhZCA+IDApCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBieXRlc19yZWFkICs9IG47CkBAIC03MTgsMTQgKzc3MCwyNCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX0ZTVEFUICovCisvKltjbGluaWMgaW5wdXRdCitfaW8uRmlsZUlPLnJlYWQKKyAgICBzaXplOiBpb19zc2l6ZV90ID0gLTEKKyAgICAvCisKK1JlYWQgYXQgbW9zdCBzaXplIGJ5dGVzLCByZXR1cm5lZCBhcyBieXRlcy4KKworT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwsIHNvIGxlc3MgZGF0YSBtYXkgYmUgcmV0dXJuZWQgdGhhbiByZXF1ZXN0ZWQuCitJbiBub24tYmxvY2tpbmcgbW9kZSwgcmV0dXJucyBOb25lIGlmIG5vIGRhdGEgaXMgYXZhaWxhYmxlLgorUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fcmVhZChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0ZpbGVJT19yZWFkX2ltcGwoZmlsZWlvICpzZWxmLCBQeV9zc2l6ZV90IHNpemUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDI1MjhkMzlkZDBjYTY0MSBpbnB1dD01YzZjYWE1NDkwYzEzYTliXSovCiB7CiAgICAgY2hhciAqcHRyOwogICAgIFB5X3NzaXplX3QgbjsKLSAgICBQeV9zc2l6ZV90IHNpemUgPSAtMTsKICAgICBQeU9iamVjdCAqYnl0ZXM7CiAKICAgICBpZiAoc2VsZi0+ZmQgPCAwKQpAQCAtNzMzLDQxICs3OTUsMjkgQEAKICAgICBpZiAoIXNlbGYtPnJlYWRhYmxlKQogICAgICAgICByZXR1cm4gZXJyX21vZGUoInJlYWRpbmciKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mIiwgJl9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmc2l6ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHNpemUgPCAwKSB7Ci0gICAgICAgIHJldHVybiBmaWxlaW9fcmVhZGFsbChzZWxmKTsKLSAgICB9CisgICAgaWYgKHNpemUgPCAwKQorICAgICAgICByZXR1cm4gX2lvX0ZpbGVJT19yZWFkYWxsX2ltcGwoc2VsZik7CiAKICNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogT24gV2luZG93cywgdGhlIGNvdW50IHBhcmFtZXRlciBvZiByZWFkKCkgaXMgYW4gaW50ICovCiAgICAgaWYgKHNpemUgPiBJTlRfTUFYKQogICAgICAgICBzaXplID0gSU5UX01BWDsKICNlbmRpZgorCiAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwogICAgIGlmIChieXRlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBwdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyk7CiAKLSAgICBpZiAoX1B5VmVyaWZ5X2ZkKHNlbGYtPmZkKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGVycm5vID0gMDsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIG4gPSByZWFkKHNlbGYtPmZkLCBwdHIsIChpbnQpc2l6ZSk7Ci0jZWxzZQotICAgICAgICBuID0gcmVhZChzZWxmLT5mZCwgcHRyLCBzaXplKTsKLSNlbmRpZgotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIH0gZWxzZQotICAgICAgICBuID0gLTE7Ci0KLSAgICBpZiAobiA8IDApIHsKKyAgICBuID0gX1B5X3JlYWQoc2VsZi0+ZmQsIHB0ciwgc2l6ZSk7CisgICAgaWYgKG4gPT0gLTEpIHsKKyAgICAgICAgLyogY29weSBlcnJubyBiZWNhdXNlIFB5X0RFQ1JFRigpIGNhbiBpbmRpcmVjdGx5IG1vZGlmeSBpdCAqLwogICAgICAgICBpbnQgZXJyID0gZXJybm87CiAgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7Ci0gICAgICAgIGlmIChlcnIgPT0gRUFHQUlOKQorICAgICAgICBpZiAoZXJyID09IEVBR0FJTikgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIFB5X1JFVFVSTl9OT05FOwotICAgICAgICBlcnJubyA9IGVycjsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNzgxLDExICs4MzEsMjMgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopIGJ5dGVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uRmlsZUlPLndyaXRlCisgICAgYjogUHlfYnVmZmVyCisgICAgLworCitXcml0ZSBieXRlcyBiIHRvIGZpbGUsIHJldHVybiBudW1iZXIgd3JpdHRlbi4KKworT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwsIHNvIG5vdCBhbGwgb2YgdGhlIGRhdGEgbWF5IGJlIHdyaXR0ZW4uCitUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaXMgcmV0dXJuZWQuICBJbiBub24tYmxvY2tpbmcgbW9kZSwKK3JldHVybnMgTm9uZSBpZiB0aGUgd3JpdGUgd291bGQgYmxvY2suCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fd3JpdGUoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19GaWxlSU9fd3JpdGVfaW1wbChmaWxlaW8gKnNlbGYsIFB5X2J1ZmZlciAqYikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNDA1OWRiM2QzNjNhMmY3IGlucHV0PWZmYmQ4ODM0ZjQ0N2FjMzFdKi8KIHsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBQeV9zc2l6ZV90IG4sIGxlbjsKKyAgICBQeV9zc2l6ZV90IG47CiAgICAgaW50IGVycjsKIAogICAgIGlmIChzZWxmLT5mZCA8IDApCkBAIC03OTMsMzkgKzg1NSwxNSBAQAogICAgIGlmICghc2VsZi0+d3JpdGFibGUpCiAgICAgICAgIHJldHVybiBlcnJfbW9kZSgid3JpdGluZyIpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KiIsICZwYnVmKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoX1B5VmVyaWZ5X2ZkKHNlbGYtPmZkKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgbGVuID0gcGJ1Zi5sZW47Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgICAgICBpZiAobGVuID4gMzI3NjcgJiYgaXNhdHR5KHNlbGYtPmZkKSkgewotICAgICAgICAgICAgLyogSXNzdWUgIzExMzk1OiB0aGUgV2luZG93cyBjb25zb2xlIHJldHVybnMgYW4gZXJyb3IgKDEyOiBub3QKLSAgICAgICAgICAgICAgIGVub3VnaCBzcGFjZSBlcnJvcikgb24gd3JpdGluZyBpbnRvIHN0ZG91dCBpZiBzdGRvdXQgbW9kZSBpcwotICAgICAgICAgICAgICAgYmluYXJ5IGFuZCB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiA2NiwwMDAgYnl0ZXMgKG9yIGxlc3MsCi0gICAgICAgICAgICAgICBkZXBlbmRpbmcgb24gaGVhcCB1c2FnZSkuICovCi0gICAgICAgICAgICBsZW4gPSAzMjc2NzsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChsZW4gPiBJTlRfTUFYKQotICAgICAgICAgICAgbGVuID0gSU5UX01BWDsKLSAgICAgICAgbiA9IHdyaXRlKHNlbGYtPmZkLCBwYnVmLmJ1ZiwgKGludClsZW4pOwotI2Vsc2UKLSAgICAgICAgbiA9IHdyaXRlKHNlbGYtPmZkLCBwYnVmLmJ1ZiwgbGVuKTsKLSNlbmRpZgotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIH0gZWxzZQotICAgICAgICBuID0gLTE7CisgICAgbiA9IF9QeV93cml0ZShzZWxmLT5mZCwgYi0+YnVmLCBiLT5sZW4pOworICAgIC8qIGNvcHkgZXJybm8gYmVjYXVzZSBQeUJ1ZmZlcl9SZWxlYXNlKCkgY2FuIGluZGlyZWN0bHkgbW9kaWZ5IGl0ICovCiAgICAgZXJyID0gZXJybm87CiAKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLQogICAgIGlmIChuIDwgMCkgewotICAgICAgICBpZiAoZXJyID09IEVBR0FJTikKKyAgICAgICAgaWYgKGVyciA9PSBFQUdBSU4pIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICAgICAgZXJybm8gPSBlcnI7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTg3MywxMSArOTExLDEzIEBACiAKICAgICBpZiAoX1B5VmVyaWZ5X2ZkKGZkKSkgewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgICAgIHJlcyA9IF9sc2Vla2k2NChmZCwgcG9zLCB3aGVuY2UpOwogI2Vsc2UKICAgICAgICAgcmVzID0gbHNlZWsoZmQsIHBvcywgd2hlbmNlKTsKICNlbmRpZgorICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIH0gZWxzZQogICAgICAgICByZXMgPSAtMTsKQEAgLTg5MSwyMyArOTMxLDQ0IEBACiAjZW5kaWYKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb19zZWVrKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnBvc29iajsKLSAgICBpbnQgd2hlbmNlID0gMDsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8uc2VlaworICAgIHBvczogb2JqZWN0CisgICAgd2hlbmNlOiBpbnQgPSAwCisgICAgLwogCitNb3ZlIHRvIG5ldyBmaWxlIHBvc2l0aW9uIGFuZCByZXR1cm4gdGhlIGZpbGUgcG9zaXRpb24uCisKK0FyZ3VtZW50IG9mZnNldCBpcyBhIGJ5dGUgY291bnQuICBPcHRpb25hbCBhcmd1bWVudCB3aGVuY2UgZGVmYXVsdHMgdG8KK1NFRUtfU0VUIG9yIDAgKG9mZnNldCBmcm9tIHN0YXJ0IG9mIGZpbGUsIG9mZnNldCBzaG91bGQgYmUgPj0gMCk7IG90aGVyIHZhbHVlcworYXJlIFNFRUtfQ1VSIG9yIDEgKG1vdmUgcmVsYXRpdmUgdG8gY3VycmVudCBwb3NpdGlvbiwgcG9zaXRpdmUgb3IgbmVnYXRpdmUpLAorYW5kIFNFRUtfRU5EIG9yIDIgKG1vdmUgcmVsYXRpdmUgdG8gZW5kIG9mIGZpbGUsIHVzdWFsbHkgbmVnYXRpdmUsIGFsdGhvdWdoCittYW55IHBsYXRmb3JtcyBhbGxvdyBzZWVraW5nIGJleW9uZCB0aGUgZW5kIG9mIGEgZmlsZSkuCisKK05vdGUgdGhhdCBub3QgYWxsIGZpbGUgb2JqZWN0cyBhcmUgc2Vla2FibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3NlZWtfaW1wbChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpwb3MsIGludCB3aGVuY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yzk3NmFjZGYwNTRlNjY1NSBpbnB1dD0wNDM5MTk0YjA3NzRkNDU0XSovCit7CiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xpIiwgJnBvc29iaiwgJndoZW5jZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIHBvcnRhYmxlX2xzZWVrKHNlbGYtPmZkLCBwb3NvYmosIHdoZW5jZSk7CisgICAgcmV0dXJuIHBvcnRhYmxlX2xzZWVrKHNlbGYtPmZkLCBwb3MsIHdoZW5jZSk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8udGVsbAorCitDdXJyZW50IGZpbGUgcG9zaXRpb24uCisKK0NhbiByYWlzZSBPU0Vycm9yIGZvciBub24gc2Vla2FibGUgZmlsZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fdGVsbChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0ZpbGVJT190ZWxsX2ltcGwoZmlsZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZmZTIxNDcwNTg4MDlkMGIgaW5wdXQ9ODA3ZTI0ZWFkNGNlYzJmOV0qLwogewogICAgIGlmIChzZWxmLT5mZCA8IDApCiAgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CkBAIC05MTYsMTMgKzk3NywyMiBAQAogfQogCiAjaWZkZWYgSEFWRV9GVFJVTkNBVEUKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8udHJ1bmNhdGUKKyAgICBzaXplIGFzIHBvc29iajogb2JqZWN0ID0gTlVMTAorICAgIC8KKworVHJ1bmNhdGUgdGhlIGZpbGUgdG8gYXQgbW9zdCBzaXplIGJ5dGVzIGFuZCByZXR1cm4gdGhlIHRydW5jYXRlZCBzaXplLgorCitTaXplIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24sIGFzIHJldHVybmVkIGJ5IHRlbGwoKS4KK1RoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgY2hhbmdlZCB0byB0aGUgdmFsdWUgb2Ygc2l6ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb190cnVuY2F0ZShmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0ZpbGVJT190cnVuY2F0ZV9pbXBsKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKnBvc29iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lNDljYTdhOTE2YzE3NmZhIGlucHV0PTkwMjZhZjQ0Njg2YjczMThdKi8KIHsKLSAgICBQeU9iamVjdCAqcG9zb2JqID0gTlVMTDsgLyogdGhlIG5ldyBzaXplIHdhbnRlZCBieSB0aGUgdXNlciAqLwotI2lmbmRlZiBNU19XSU5ET1dTCiAgICAgUHlfb2ZmX3QgcG9zOwotI2VuZGlmCiAgICAgaW50IHJldDsKICAgICBpbnQgZmQ7CiAKQEAgLTkzMiw5ICsxMDAyLDYgQEAKICAgICBpZiAoIXNlbGYtPndyaXRhYmxlKQogICAgICAgICByZXR1cm4gZXJyX21vZGUoIndyaXRpbmciKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8iLCAmcG9zb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAocG9zb2JqID09IFB5X05vbmUgfHwgcG9zb2JqID09IE5VTEwpIHsKICAgICAgICAgLyogR2V0IHRoZSBjdXJyZW50IHBvc2l0aW9uLiAqLwogICAgICAgICBwb3NvYmogPSBwb3J0YWJsZV9sc2VlayhmZCwgTlVMTCwgMSk7CkBAIC05NDUsNTIgKzEwMTIsNiBAQAogICAgICAgICBQeV9JTkNSRUYocG9zb2JqKTsKICAgICB9CiAKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgLyogTVMgX2Noc2l6ZSBkb2Vzbid0IHdvcmsgaWYgbmV3c2l6ZSBkb2Vzbid0IGZpdCBpbiAzMiBiaXRzLAotICAgICAgIHNvIGRvbid0IGV2ZW4gdHJ5IHVzaW5nIGl0LiAqLwotICAgIHsKLSAgICAgICAgUHlPYmplY3QgKm9sZHBvc29iaiwgKnRlbXBwb3NvYmo7Ci0gICAgICAgIEhBTkRMRSBoRmlsZTsKLQotICAgICAgICAvKiB3ZSBzYXZlIHRoZSBmaWxlIHBvaW50ZXIgcG9zaXRpb24gKi8KLSAgICAgICAgb2xkcG9zb2JqID0gcG9ydGFibGVfbHNlZWsoZmQsIE5VTEwsIDEpOwotICAgICAgICBpZiAob2xkcG9zb2JqID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwb3NvYmopOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiB3ZSB0aGVuIG1vdmUgdG8gdGhlIHRydW5jYXRpb24gcG9zaXRpb24gKi8KLSAgICAgICAgdGVtcHBvc29iaiA9IHBvcnRhYmxlX2xzZWVrKGZkLCBwb3NvYmosIDApOwotICAgICAgICBpZiAodGVtcHBvc29iaiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob2xkcG9zb2JqKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwb3NvYmopOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKHRlbXBwb3NvYmopOwotCi0gICAgICAgIC8qIFRydW5jYXRlLiAgTm90ZSB0aGF0IHRoaXMgbWF5IGdyb3cgdGhlIGZpbGUhICovCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgZXJybm8gPSAwOwotICAgICAgICBoRmlsZSA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOwotICAgICAgICByZXQgPSBoRmlsZSA9PSAoSEFORExFKS0xOyAvKiB0ZXN0aW5nIGZvciBJTlZBTElEX0hBTkRMRSB2YWx1ZSAqLwotICAgICAgICBpZiAocmV0ID09IDApIHsKLSAgICAgICAgICAgIHJldCA9IFNldEVuZE9mRmlsZShoRmlsZSkgPT0gMDsKLSAgICAgICAgICAgIGlmIChyZXQpCi0gICAgICAgICAgICAgICAgZXJybm8gPSBFQUNDRVM7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgICAgICAvKiB3ZSByZXN0b3JlIHRoZSBmaWxlIHBvaW50ZXIgcG9zaXRpb24gaW4gYW55IGNhc2UgKi8KLSAgICAgICAgdGVtcHBvc29iaiA9IHBvcnRhYmxlX2xzZWVrKGZkLCBvbGRwb3NvYmosIDApOwotICAgICAgICBQeV9ERUNSRUYob2xkcG9zb2JqKTsKLSAgICAgICAgaWYgKHRlbXBwb3NvYmogPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHBvc29iaik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYodGVtcHBvc29iaik7Ci0gICAgfQotI2Vsc2UKLQogI2lmIGRlZmluZWQoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCkKICAgICBwb3MgPSBQeUxvbmdfQXNMb25nTG9uZyhwb3NvYmopOwogI2Vsc2UKQEAgLTEwMDIsMTIgKzEwMjMsMTYgQEAKICAgICB9CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGVycm5vID0gMDsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgcmV0ID0gX2Noc2l6ZV9zKGZkLCBwb3MpOworI2Vsc2UKICAgICByZXQgPSBmdHJ1bmNhdGUoZmQsIHBvcyk7CisjZW5kaWYKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSNlbmRpZiAvKiAhTVNfV0lORE9XUyAqLwotCiAgICAgaWYgKHJldCAhPSAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihwb3NvYmopOwogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CkBAIC0xMDU3LDI2ICsxMDgyLDQwIEBACiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxfaW8uRmlsZUlPIGZkPSVkIG1vZGU9JyVzJz4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5mZCwgbW9kZV9zdHJpbmcoc2VsZikpOworICAgICAgICByZXMgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgICAgICI8X2lvLkZpbGVJTyBmZD0lZCBtb2RlPSclcycgY2xvc2VmZD0lcz4iLAorICAgICAgICAgICAgc2VsZi0+ZmQsIG1vZGVfc3RyaW5nKHNlbGYpLCBzZWxmLT5jbG9zZWZkID8gIlRydWUiIDogIkZhbHNlIik7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICByZXMgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPF9pby5GaWxlSU8gbmFtZT0lUiBtb2RlPSclcyc+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZW9iaiwgbW9kZV9zdHJpbmcoc2VsZikpOworICAgICAgICByZXMgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgICAgICI8X2lvLkZpbGVJTyBuYW1lPSVSIG1vZGU9JyVzJyBjbG9zZWZkPSVzPiIsCisgICAgICAgICAgICBuYW1lb2JqLCBtb2RlX3N0cmluZyhzZWxmKSwgc2VsZi0+Y2xvc2VmZCA/ICJUcnVlIiA6ICJGYWxzZSIpOwogICAgICAgICBQeV9ERUNSRUYobmFtZW9iaik7CiAgICAgfQogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8uaXNhdHR5CisKK1RydWUgaWYgdGhlIGZpbGUgaXMgY29ubmVjdGVkIHRvIGEgVFRZIGRldmljZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb19pc2F0dHkoZmlsZWlvICpzZWxmKQorX2lvX0ZpbGVJT19pc2F0dHlfaW1wbChmaWxlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTMyYzM5OTI0ZTlhODA3MCBpbnB1dD1jZDk0Y2ExZjVlOTVlODQzXSovCiB7CiAgICAgbG9uZyByZXM7CiAKICAgICBpZiAoc2VsZi0+ZmQgPCAwKQogICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBpc2F0dHkoc2VsZi0+ZmQpOworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICBpZiAoX1B5VmVyaWZ5X2ZkKHNlbGYtPmZkKSkKKyAgICAgICAgcmVzID0gaXNhdHR5KHNlbGYtPmZkKTsKKyAgICBlbHNlCisgICAgICAgIHJlcyA9IDA7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzKTsKIH0KQEAgLTEwODksMTEwICsxMTI4LDIyIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLQotUHlEb2NfU1RSVkFSKGZpbGVpb19kb2MsCi0iZmlsZShuYW1lOiBzdHJbLCBtb2RlOiBzdHJdWywgb3BlbmVyOiBOb25lXSkgLT4gZmlsZSBJTyBvYmplY3RcbiIKLSJcbiIKLSJPcGVuIGEgZmlsZS4gIFRoZSBtb2RlIGNhbiBiZSAncicgKGRlZmF1bHQpLCAndycsICd4JyBvciAnYScgZm9yIHJlYWRpbmcsXG4iCi0id3JpdGluZywgZXhjbHVzaXZlIGNyZWF0aW9uIG9yIGFwcGVuZGluZy4gIFRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdFxuIgotImRvZXNuJ3QgZXhpc3Qgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOyBpdCB3aWxsIGJlIHRydW5jYXRlZFxuIgotIndoZW4gb3BlbmVkIGZvciB3cml0aW5nLiAgQSBGaWxlRXhpc3RzRXJyb3Igd2lsbCBiZSByYWlzZWQgaWYgaXQgYWxyZWFkeVxuIgotImV4aXN0cyB3aGVuIG9wZW5lZCBmb3IgY3JlYXRpbmcuIE9wZW5pbmcgYSBmaWxlIGZvciBjcmVhdGluZyBpbXBsaWVzXG4iCi0id3JpdGluZyBzbyB0aGlzIG1vZGUgYmVoYXZlcyBpbiBhIHNpbWlsYXIgd2F5IHRvICd3Jy5BZGQgYSAnKycgdG8gdGhlIG1vZGVcbiIKLSJ0byBhbGxvdyBzaW11bHRhbmVvdXMgcmVhZGluZyBhbmQgd3JpdGluZy4gQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5XG4iCi0icGFzc2luZyBhIGNhbGxhYmxlIGFzICpvcGVuZXIqLiBUaGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlXG4iCi0ib2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnkgY2FsbGluZyBvcGVuZXIgd2l0aCAoKm5hbWUqLCAqZmxhZ3MqKS5cbiIKLSIqb3BlbmVyKiBtdXN0IHJldHVybiBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciAocGFzc2luZyBvcy5vcGVuIGFzICpvcGVuZXIqXG4iCi0icmVzdWx0cyBpbiBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gcGFzc2luZyBOb25lKS4iKTsKLQotUHlEb2NfU1RSVkFSKHJlYWRfZG9jLAotInJlYWQoc2l6ZTogaW50KSAtPiBieXRlcy4gIHJlYWQgYXQgbW9zdCBzaXplIGJ5dGVzLCByZXR1cm5lZCBhcyBieXRlcy5cbiIKLSJcbiIKLSJPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCwgc28gbGVzcyBkYXRhIG1heSBiZSByZXR1cm5lZCB0aGFuIHJlcXVlc3RlZFxuIgotIkluIG5vbi1ibG9ja2luZyBtb2RlLCByZXR1cm5zIE5vbmUgaWYgbm8gZGF0YSBpcyBhdmFpbGFibGUuXG4iCi0iUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7Ci0KLVB5RG9jX1NUUlZBUihyZWFkYWxsX2RvYywKLSJyZWFkYWxsKCkgLT4gYnl0ZXMuICByZWFkIGFsbCBkYXRhIGZyb20gdGhlIGZpbGUsIHJldHVybmVkIGFzIGJ5dGVzLlxuIgotIlxuIgotIkluIG5vbi1ibG9ja2luZyBtb2RlLCByZXR1cm5zIGFzIG11Y2ggYXMgaXMgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLFxuIgotIm9yIE5vbmUgaWYgbm8gZGF0YSBpcyBhdmFpbGFibGUuICBSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4iKTsKLQotUHlEb2NfU1RSVkFSKHdyaXRlX2RvYywKLSJ3cml0ZShiOiBieXRlcykgLT4gaW50LiAgV3JpdGUgYnl0ZXMgYiB0byBmaWxlLCByZXR1cm4gbnVtYmVyIHdyaXR0ZW4uXG4iCi0iXG4iCi0iT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwsIHNvIG5vdCBhbGwgb2YgdGhlIGRhdGEgbWF5IGJlIHdyaXR0ZW4uXG4iCi0iVGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlzIHJldHVybmVkLiAgSW4gbm9uLWJsb2NraW5nIG1vZGUsXG4iCi0icmV0dXJucyBOb25lIGlmIHRoZSB3cml0ZSB3b3VsZCBibG9jay4iCi0pOwotCi1QeURvY19TVFJWQVIoZmlsZW5vX2RvYywKLSJmaWxlbm8oKSAtPiBpbnQuICBSZXR1cm4gdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIChhbiBpbnRlZ2VyKS4iKTsKLQotUHlEb2NfU1RSVkFSKHNlZWtfZG9jLAotInNlZWsob2Zmc2V0OiBpbnRbLCB3aGVuY2U6IGludF0pIC0+IGludC4gIE1vdmUgdG8gbmV3IGZpbGUgcG9zaXRpb24gYW5kXG4iCi0icmV0dXJuIHRoZSBmaWxlIHBvc2l0aW9uLlxuIgotIlxuIgotIkFyZ3VtZW50IG9mZnNldCBpcyBhIGJ5dGUgY291bnQuICBPcHRpb25hbCBhcmd1bWVudCB3aGVuY2UgZGVmYXVsdHMgdG9cbiIKLSJTRUVLX1NFVCBvciAwIChvZmZzZXQgZnJvbSBzdGFydCBvZiBmaWxlLCBvZmZzZXQgc2hvdWxkIGJlID49IDApOyBvdGhlciB2YWx1ZXNcbiIKLSJhcmUgU0VFS19DVVIgb3IgMSAobW92ZSByZWxhdGl2ZSB0byBjdXJyZW50IHBvc2l0aW9uLCBwb3NpdGl2ZSBvciBuZWdhdGl2ZSksXG4iCi0iYW5kIFNFRUtfRU5EIG9yIDIgKG1vdmUgcmVsYXRpdmUgdG8gZW5kIG9mIGZpbGUsIHVzdWFsbHkgbmVnYXRpdmUsIGFsdGhvdWdoXG4iCi0ibWFueSBwbGF0Zm9ybXMgYWxsb3cgc2Vla2luZyBiZXlvbmQgdGhlIGVuZCBvZiBhIGZpbGUpLlxuIgotIlxuIgotIk5vdGUgdGhhdCBub3QgYWxsIGZpbGUgb2JqZWN0cyBhcmUgc2Vla2FibGUuIik7Ci0KLSNpZmRlZiBIQVZFX0ZUUlVOQ0FURQotUHlEb2NfU1RSVkFSKHRydW5jYXRlX2RvYywKLSJ0cnVuY2F0ZShbc2l6ZTogaW50XSkgLT4gaW50LiAgVHJ1bmNhdGUgdGhlIGZpbGUgdG8gYXQgbW9zdCBzaXplIGJ5dGVzXG4iCi0iYW5kIHJldHVybiB0aGUgdHJ1bmNhdGVkIHNpemUuXG4iCi0iXG4iCi0iU2l6ZSBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhcyByZXR1cm5lZCBieSB0ZWxsKCkuXG4iCi0iVGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiBpcyBjaGFuZ2VkIHRvIHRoZSB2YWx1ZSBvZiBzaXplLiIpOwotI2VuZGlmCi0KLVB5RG9jX1NUUlZBUih0ZWxsX2RvYywKLSJ0ZWxsKCkgLT4gaW50LiAgQ3VycmVudCBmaWxlIHBvc2l0aW9uLlxuIgotIlxuIgotIkNhbiByYWlzZSBPU0Vycm9yIGZvciBub24gc2Vla2FibGUgZmlsZXMuIgotKTsKLQotUHlEb2NfU1RSVkFSKHJlYWRpbnRvX2RvYywKLSJyZWFkaW50bygpIC0+IFNhbWUgYXMgUmF3SU9CYXNlLnJlYWRpbnRvKCkuIik7Ci0KLVB5RG9jX1NUUlZBUihjbG9zZV9kb2MsCi0iY2xvc2UoKSAtPiBOb25lLiAgQ2xvc2UgdGhlIGZpbGUuXG4iCi0iXG4iCi0iQSBjbG9zZWQgZmlsZSBjYW5ub3QgYmUgdXNlZCBmb3IgZnVydGhlciBJL08gb3BlcmF0aW9ucy4gIGNsb3NlKCkgbWF5IGJlXG4iCi0iY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHdpdGhvdXQgZXJyb3IuIik7Ci0KLVB5RG9jX1NUUlZBUihpc2F0dHlfZG9jLAotImlzYXR0eSgpIC0+IGJvb2wuICBUcnVlIGlmIHRoZSBmaWxlIGlzIGNvbm5lY3RlZCB0byBhIFRUWSBkZXZpY2UuIik7Ci0KLVB5RG9jX1NUUlZBUihzZWVrYWJsZV9kb2MsCi0ic2Vla2FibGUoKSAtPiBib29sLiAgVHJ1ZSBpZiBmaWxlIHN1cHBvcnRzIHJhbmRvbS1hY2Nlc3MuIik7Ci0KLVB5RG9jX1NUUlZBUihyZWFkYWJsZV9kb2MsCi0icmVhZGFibGUoKSAtPiBib29sLiAgVHJ1ZSBpZiBmaWxlIHdhcyBvcGVuZWQgaW4gYSByZWFkIG1vZGUuIik7Ci0KLVB5RG9jX1NUUlZBUih3cml0YWJsZV9kb2MsCi0id3JpdGFibGUoKSAtPiBib29sLiAgVHJ1ZSBpZiBmaWxlIHdhcyBvcGVuZWQgaW4gYSB3cml0ZSBtb2RlLiIpOworI2luY2x1ZGUgImNsaW5pYy9maWxlaW8uYy5oIgogCiBzdGF0aWMgUHlNZXRob2REZWYgZmlsZWlvX21ldGhvZHNbXSA9IHsKLSAgICB7InJlYWQiLCAgICAgKFB5Q0Z1bmN0aW9uKWZpbGVpb19yZWFkLCAgICAgICAgIE1FVEhfVkFSQVJHUywgcmVhZF9kb2N9LAotICAgIHsicmVhZGFsbCIsICAoUHlDRnVuY3Rpb24pZmlsZWlvX3JlYWRhbGwsICBNRVRIX05PQVJHUywgIHJlYWRhbGxfZG9jfSwKLSAgICB7InJlYWRpbnRvIiwgKFB5Q0Z1bmN0aW9uKWZpbGVpb19yZWFkaW50bywgTUVUSF9WQVJBUkdTLCByZWFkaW50b19kb2N9LAotICAgIHsid3JpdGUiLCAgICAoUHlDRnVuY3Rpb24pZmlsZWlvX3dyaXRlLCAgICAgICAgTUVUSF9WQVJBUkdTLCB3cml0ZV9kb2N9LAotICAgIHsic2VlayIsICAgICAoUHlDRnVuY3Rpb24pZmlsZWlvX3NlZWssICAgICAgICAgTUVUSF9WQVJBUkdTLCBzZWVrX2RvY30sCi0gICAgeyJ0ZWxsIiwgICAgIChQeUNGdW5jdGlvbilmaWxlaW9fdGVsbCwgICAgICAgICBNRVRIX1ZBUkFSR1MsIHRlbGxfZG9jfSwKLSNpZmRlZiBIQVZFX0ZUUlVOQ0FURQotICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pZmlsZWlvX3RydW5jYXRlLCBNRVRIX1ZBUkFSR1MsIHRydW5jYXRlX2RvY30sCi0jZW5kaWYKLSAgICB7ImNsb3NlIiwgICAgKFB5Q0Z1bmN0aW9uKWZpbGVpb19jbG9zZSwgICAgICAgIE1FVEhfTk9BUkdTLCAgY2xvc2VfZG9jfSwKLSAgICB7InNlZWthYmxlIiwgKFB5Q0Z1bmN0aW9uKWZpbGVpb19zZWVrYWJsZSwgTUVUSF9OT0FSR1MsICAgICAgc2Vla2FibGVfZG9jfSwKLSAgICB7InJlYWRhYmxlIiwgKFB5Q0Z1bmN0aW9uKWZpbGVpb19yZWFkYWJsZSwgTUVUSF9OT0FSR1MsICAgICAgcmVhZGFibGVfZG9jfSwKLSAgICB7IndyaXRhYmxlIiwgKFB5Q0Z1bmN0aW9uKWZpbGVpb193cml0YWJsZSwgTUVUSF9OT0FSR1MsICAgICAgd3JpdGFibGVfZG9jfSwKLSAgICB7ImZpbGVubyIsICAgKFB5Q0Z1bmN0aW9uKWZpbGVpb19maWxlbm8sICAgTUVUSF9OT0FSR1MsICAgICAgZmlsZW5vX2RvY30sCi0gICAgeyJpc2F0dHkiLCAgIChQeUNGdW5jdGlvbilmaWxlaW9faXNhdHR5LCAgIE1FVEhfTk9BUkdTLCAgICAgIGlzYXR0eV9kb2N9LAorICAgIF9JT19GSUxFSU9fUkVBRF9NRVRIT0RERUYKKyAgICBfSU9fRklMRUlPX1JFQURBTExfTUVUSE9EREVGCisgICAgX0lPX0ZJTEVJT19SRUFESU5UT19NRVRIT0RERUYKKyAgICBfSU9fRklMRUlPX1dSSVRFX01FVEhPRERFRgorICAgIF9JT19GSUxFSU9fU0VFS19NRVRIT0RERUYKKyAgICBfSU9fRklMRUlPX1RFTExfTUVUSE9EREVGCisgICAgX0lPX0ZJTEVJT19UUlVOQ0FURV9NRVRIT0RERUYKKyAgICBfSU9fRklMRUlPX0NMT1NFX01FVEhPRERFRgorICAgIF9JT19GSUxFSU9fU0VFS0FCTEVfTUVUSE9EREVGCisgICAgX0lPX0ZJTEVJT19SRUFEQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fRklMRUlPX1dSSVRBQkxFX01FVEhPRERFRgorICAgIF9JT19GSUxFSU9fRklMRU5PX01FVEhPRERFRgorICAgIF9JT19GSUxFSU9fSVNBVFRZX01FVEhPRERFRgogICAgIHsiX2RlYWxsb2Nfd2FybiIsIChQeUNGdW5jdGlvbilmaWxlaW9fZGVhbGxvY193YXJuLCBNRVRIX08sIE5VTEx9LAogICAgIHsiX19nZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKWZpbGVpb19nZXRzdGF0ZSwgTUVUSF9OT0FSR1MsIE5VTEx9LAogICAgIHtOVUxMLCAgICAgICAgICAgTlVMTH0gICAgICAgICAgICAgLyogc2VudGluZWwgKi8KQEAgLTEyMjcsNiArMTE3OCw3IEBACiB9OwogCiBzdGF0aWMgUHlNZW1iZXJEZWYgZmlsZWlvX21lbWJlcnNbXSA9IHsKKyAgICB7Il9ibGtzaXplIiwgVF9VSU5ULCBvZmZzZXRvZihmaWxlaW8sIGJsa3NpemUpLCAwfSwKICAgICB7Il9maW5hbGl6aW5nIiwgVF9CT09MLCBvZmZzZXRvZihmaWxlaW8sIGZpbmFsaXppbmcpLCAwfSwKICAgICB7TlVMTH0KIH07CkBAIC0xMjUzLDcgKzEyMDUsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQogICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAgICAgLyogdHBfZmxhZ3MgKi8KLSAgICBmaWxlaW9fZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIF9pb19GaWxlSU9fX19pbml0X19fX2RvY19fLCAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgKHRyYXZlcnNlcHJvYylmaWxlaW9fdHJhdmVyc2UsICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIChpbnF1aXJ5KWZpbGVpb19jbGVhciwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCkBAIC0xMjY4LDcgKzEyMjAsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KICAgICBvZmZzZXRvZihmaWxlaW8sIGRpY3QpLCAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICBmaWxlaW9faW5pdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICBfaW9fRmlsZUlPX19faW5pdF9fLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCiAgICAgZmlsZWlvX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2lvYmFzZS5jIGIvTW9kdWxlcy9faW8vaW9iYXNlLmMKaW5kZXggZWYwNmI0My4uMDI1MDA3ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vaW9iYXNlLmMKKysrIGIvTW9kdWxlcy9faW8vaW9iYXNlLmMKQEAgLTEzLDYgKzEzLDIwIEBACiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAjaW5jbHVkZSAiX2lvbW9kdWxlLmgiCiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfaW8KK2NsYXNzIF9pby5fSU9CYXNlICJQeU9iamVjdCAqIiAiJlB5SU9CYXNlX1R5cGUiCitjbGFzcyBfaW8uX1Jhd0lPQmFzZSAiUHlPYmplY3QgKiIgIiZQeVJhd0lPQmFzZV9UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZDI5YTRkMDc2YzJiMjExY10qLworCisvKltweXRob24gaW5wdXRdCitjbGFzcyBpb19zc2l6ZV90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ1B5X3NzaXplX3QnCisgICAgY29udmVydGVyID0gJ19QeUlPX0NvbnZlcnRTc2l6ZV90JworW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZDBhODExZDNjYmZkMWIzM10qLworCiAvKgogICogSU9CYXNlIGNsYXNzLCBhbiBhYnN0cmFjdCBjbGFzcwogICovCkBAIC05NiwxMSArMTEwLDE1IEBACiAgICAgcmV0dXJuIGlvYmFzZV91bnN1cHBvcnRlZCgic2VlayIpOwogfQogCi1QeURvY19TVFJWQVIoaW9iYXNlX3RlbGxfZG9jLAotICAgICAgICAgICAgICJSZXR1cm4gY3VycmVudCBzdHJlYW0gcG9zaXRpb24uIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uX0lPQmFzZS50ZWxsCisKK1JldHVybiBjdXJyZW50IHN0cmVhbSBwb3NpdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWlvYmFzZV90ZWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fSU9CYXNlX3RlbGxfaW1wbChQeU9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04OWExYzA4MDc5MzVhYmUyIGlucHV0PTA0ZTYxNWZlYzEyODgwMWZdKi8KIHsKICAgICBfUHlfSURFTlRJRklFUihzZWVrKTsKIApAQCAtMTIxLDEzICsxMzksMTcgQEAKIAogLyogRmx1c2ggYW5kIGNsb3NlIG1ldGhvZHMgKi8KIAotUHlEb2NfU1RSVkFSKGlvYmFzZV9mbHVzaF9kb2MsCi0gICAgIkZsdXNoIHdyaXRlIGJ1ZmZlcnMsIGlmIGFwcGxpY2FibGUuXG4iCi0gICAgIlxuIgotICAgICJUaGlzIGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgcmVhZC1vbmx5IGFuZCBub24tYmxvY2tpbmcgc3RyZWFtcy5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLl9JT0Jhc2UuZmx1c2gKKworRmx1c2ggd3JpdGUgYnVmZmVycywgaWYgYXBwbGljYWJsZS4KKworVGhpcyBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIHJlYWQtb25seSBhbmQgbm9uLWJsb2NraW5nIHN0cmVhbXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1pb2Jhc2VfZmx1c2goUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX19JT0Jhc2VfZmx1c2hfaW1wbChQeU9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03Y2VmNGI0ZDU0NjU2YTNiIGlucHV0PTc3M2JlMTIxYWJlMjcwYWFdKi8KIHsKICAgICAvKiBYWFggU2hvdWxkIHRoaXMgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbj8/PyAqLwogICAgIGlmIChJU19DTE9TRUQoc2VsZikpIHsKQEAgLTEzNywxMSArMTU5LDYgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGlvYmFzZV9jbG9zZV9kb2MsCi0gICAgIkZsdXNoIGFuZCBjbG9zZSB0aGUgSU8gb2JqZWN0LlxuIgotICAgICJcbiIKLSAgICAiVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGNsb3NlZC5cbiIpOwotCiBzdGF0aWMgaW50CiBpb2Jhc2VfY2xvc2VkKFB5T2JqZWN0ICpzZWxmKQogewpAQCAtMTgwLDggKzE5NywxNyBAQAogICAgYF9fSU9CYXNlX2Nsb3NlZGAgYW5kIGNhbGwgZmx1c2goKSBieSBpdHNlbGYsIGJ1dCBpdCBpcyByZWR1bmRhbnQgd2l0aAogICAgd2hhdGV2ZXIgYmVoYXZpb3VyIGEgbm9uLXRyaXZpYWwgZGVyaXZlZCBjbGFzcyB3aWxsIGltcGxlbWVudC4gKi8KIAorLypbY2xpbmljIGlucHV0XQorX2lvLl9JT0Jhc2UuY2xvc2UKKworRmx1c2ggYW5kIGNsb3NlIHRoZSBJTyBvYmplY3QuCisKK1RoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBjbG9zZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1pb2Jhc2VfY2xvc2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX19JT0Jhc2VfY2xvc2VfaW1wbChQeU9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02M2M2YTZmNTdkNzgzZDZkIGlucHV0PWY0NDk0ZDVjMzFkYmM2YjddKi8KIHsKICAgICBQeU9iamVjdCAqcmVzOwogCkBAIC0zMDQsMTQgKzMzMCwxOCBAQAogCiAvKiBJbnF1aXJ5IG1ldGhvZHMgKi8KIAotUHlEb2NfU1RSVkFSKGlvYmFzZV9zZWVrYWJsZV9kb2MsCi0gICAgIlJldHVybiB3aGV0aGVyIG9iamVjdCBzdXBwb3J0cyByYW5kb20gYWNjZXNzLlxuIgotICAgICJcbiIKLSAgICAiSWYgRmFsc2UsIHNlZWsoKSwgdGVsbCgpIGFuZCB0cnVuY2F0ZSgpIHdpbGwgcmFpc2UgVW5zdXBwb3J0ZWRPcGVyYXRpb24uXG4iCi0gICAgIlRoaXMgbWV0aG9kIG1heSBuZWVkIHRvIGRvIGEgdGVzdCBzZWVrKCkuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uX0lPQmFzZS5zZWVrYWJsZQorCitSZXR1cm4gd2hldGhlciBvYmplY3Qgc3VwcG9ydHMgcmFuZG9tIGFjY2Vzcy4KKworSWYgRmFsc2UsIHNlZWsoKSwgdGVsbCgpIGFuZCB0cnVuY2F0ZSgpIHdpbGwgcmFpc2UgVW5zdXBwb3J0ZWRPcGVyYXRpb24uCitUaGlzIG1ldGhvZCBtYXkgbmVlZCB0byBkbyBhIHRlc3Qgc2VlaygpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotaW9iYXNlX3NlZWthYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fSU9CYXNlX3NlZWthYmxlX2ltcGwoUHlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGMyNGM2N2Y1ZjMyYTQzZCBpbnB1dD0yMjY3NmVlYmI4MWRjZjFlXSovCiB7CiAgICAgUHlfUkVUVVJOX0ZBTFNFOwogfQpAQCAtMzMzLDEzICszNjMsMTcgQEAKICAgICByZXR1cm4gcmVzOwogfQogCi1QeURvY19TVFJWQVIoaW9iYXNlX3JlYWRhYmxlX2RvYywKLSAgICAiUmV0dXJuIHdoZXRoZXIgb2JqZWN0IHdhcyBvcGVuZWQgZm9yIHJlYWRpbmcuXG4iCi0gICAgIlxuIgotICAgICJJZiBGYWxzZSwgcmVhZCgpIHdpbGwgcmFpc2UgVW5zdXBwb3J0ZWRPcGVyYXRpb24uIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uX0lPQmFzZS5yZWFkYWJsZQorCitSZXR1cm4gd2hldGhlciBvYmplY3Qgd2FzIG9wZW5lZCBmb3IgcmVhZGluZy4KKworSWYgRmFsc2UsIHJlYWQoKSB3aWxsIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotaW9iYXNlX3JlYWRhYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fSU9CYXNlX3JlYWRhYmxlX2ltcGwoUHlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTQ4MDg5MjUwNjg2Mzg4YiBpbnB1dD0xMmZjM2Q4ZjZiZTQ2NDM0XSovCiB7CiAgICAgUHlfUkVUVVJOX0ZBTFNFOwogfQpAQCAtMzYyLDEzICszOTYsMTcgQEAKICAgICByZXR1cm4gcmVzOwogfQogCi1QeURvY19TVFJWQVIoaW9iYXNlX3dyaXRhYmxlX2RvYywKLSAgICAiUmV0dXJuIHdoZXRoZXIgb2JqZWN0IHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcuXG4iCi0gICAgIlxuIgotICAgICJJZiBGYWxzZSwgd3JpdGUoKSB3aWxsIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLl9JT0Jhc2Uud3JpdGFibGUKKworUmV0dXJuIHdoZXRoZXIgb2JqZWN0IHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcuCisKK0lmIEZhbHNlLCB3cml0ZSgpIHdpbGwgcmFpc2UgVW5zdXBwb3J0ZWRPcGVyYXRpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1pb2Jhc2Vfd3JpdGFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX19JT0Jhc2Vfd3JpdGFibGVfaW1wbChQeU9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MDYwMDFkMDk4NWJlMTRmIGlucHV0PWMxN2EwYmI2YThkZmM1OTBdKi8KIHsKICAgICBQeV9SRVRVUk5fRkFMU0U7CiB9CkBAIC00MTMsMjQgKzQ1MSwzMiBAQAogCiAvKiBYWFggU2hvdWxkIHRoZXNlIGJlIHByZXNlbnQgZXZlbiBpZiB1bmltcGxlbWVudGVkPyAqLwogCi1QeURvY19TVFJWQVIoaW9iYXNlX2ZpbGVub19kb2MsCi0gICAgIlJldHVybnMgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgaWYgb25lIGV4aXN0cy5cbiIKLSAgICAiXG4iCi0gICAgIkFuIElPRXJyb3IgaXMgcmFpc2VkIGlmIHRoZSBJTyBvYmplY3QgZG9lcyBub3QgdXNlIGEgZmlsZSBkZXNjcmlwdG9yLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uX0lPQmFzZS5maWxlbm8KKworUmV0dXJucyB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBpZiBvbmUgZXhpc3RzLgorCitBbiBJT0Vycm9yIGlzIHJhaXNlZCBpZiB0aGUgSU8gb2JqZWN0IGRvZXMgbm90IHVzZSBhIGZpbGUgZGVzY3JpcHRvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWlvYmFzZV9maWxlbm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX19JT0Jhc2VfZmlsZW5vX2ltcGwoUHlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2NjMDk3M2YwZjVmM2I3MyBpbnB1dD0zMjc3M2M1ZGY0YjdlZWRlXSovCiB7CiAgICAgcmV0dXJuIGlvYmFzZV91bnN1cHBvcnRlZCgiZmlsZW5vIik7CiB9CiAKLVB5RG9jX1NUUlZBUihpb2Jhc2VfaXNhdHR5X2RvYywKLSAgICAiUmV0dXJuIHdoZXRoZXIgdGhpcyBpcyBhbiAnaW50ZXJhY3RpdmUnIHN0cmVhbS5cbiIKLSAgICAiXG4iCi0gICAgIlJldHVybiBGYWxzZSBpZiBpdCBjYW4ndCBiZSBkZXRlcm1pbmVkLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uX0lPQmFzZS5pc2F0dHkKKworUmV0dXJuIHdoZXRoZXIgdGhpcyBpcyBhbiAnaW50ZXJhY3RpdmUnIHN0cmVhbS4KKworUmV0dXJuIEZhbHNlIGlmIGl0IGNhbid0IGJlIGRldGVybWluZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1pb2Jhc2VfaXNhdHR5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fSU9CYXNlX2lzYXR0eV9pbXBsKFB5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTYwY2FiNzdjZWRlNDFjZGQgaW5wdXQ9OWVmNzY1MzBkMzY4NDU4Yl0qLwogewogICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfY2xvc2VkKHNlbGYsIFB5X1RydWUpID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDM5LDMwICs0ODUsMzEgQEAKIAogLyogUmVhZGxpbmUocykgYW5kIHdyaXRlbGluZXMgKi8KIAotUHlEb2NfU1RSVkFSKGlvYmFzZV9yZWFkbGluZV9kb2MsCi0gICAgIlJlYWQgYW5kIHJldHVybiBhIGxpbmUgZnJvbSB0aGUgc3RyZWFtLlxuIgotICAgICJcbiIKLSAgICAiSWYgbGltaXQgaXMgc3BlY2lmaWVkLCBhdCBtb3N0IGxpbWl0IGJ5dGVzIHdpbGwgYmUgcmVhZC5cbiIKLSAgICAiXG4iCi0gICAgIlRoZSBsaW5lIHRlcm1pbmF0b3IgaXMgYWx3YXlzIGInXFxuJyBmb3IgYmluYXJ5IGZpbGVzOyBmb3IgdGV4dFxuIgotICAgICJmaWxlcywgdGhlIG5ld2xpbmVzIGFyZ3VtZW50IHRvIG9wZW4gY2FuIGJlIHVzZWQgdG8gc2VsZWN0IHRoZSBsaW5lXG4iCi0gICAgInRlcm1pbmF0b3IocykgcmVjb2duaXplZC5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLl9JT0Jhc2UucmVhZGxpbmUKKyAgICBzaXplIGFzIGxpbWl0OiBpb19zc2l6ZV90ID0gLTEKKyAgICAvCisKK1JlYWQgYW5kIHJldHVybiBhIGxpbmUgZnJvbSB0aGUgc3RyZWFtLgorCitJZiBzaXplIGlzIHNwZWNpZmllZCwgYXQgbW9zdCBzaXplIGJ5dGVzIHdpbGwgYmUgcmVhZC4KKworVGhlIGxpbmUgdGVybWluYXRvciBpcyBhbHdheXMgYidcbicgZm9yIGJpbmFyeSBmaWxlczsgZm9yIHRleHQKK2ZpbGVzLCB0aGUgbmV3bGluZXMgYXJndW1lbnQgdG8gb3BlbiBjYW4gYmUgdXNlZCB0byBzZWxlY3QgdGhlIGxpbmUKK3Rlcm1pbmF0b3IocykgcmVjb2duaXplZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWlvYmFzZV9yZWFkbGluZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fX0lPQmFzZV9yZWFkbGluZV9pbXBsKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGxpbWl0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ0NzlmNzliNTgxODc4NDAgaW5wdXQ9ZGY0Y2M4ODg0ZjU1M2NhYl0qLwogewogICAgIC8qIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgYSAoc2xvd2lzaCkgcmVhZGxpbmUoKS4gKi8KIAotICAgIFB5X3NzaXplX3QgbGltaXQgPSAtMTsKICAgICBpbnQgaGFzX3BlZWsgPSAwOwogICAgIFB5T2JqZWN0ICpidWZmZXIsICpyZXN1bHQ7CiAgICAgUHlfc3NpemVfdCBvbGRfc2l6ZSA9IC0xOwogICAgIF9QeV9JREVOVElGSUVSKHBlZWspOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZGxpbmUiLCAmX1B5SU9fQ29udmVydFNzaXplX3QsICZsaW1pdCkpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCiAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQoc2VsZiwgJlB5SWRfcGVlaykpCiAgICAgICAgIGhhc19wZWVrID0gMTsKIApAQCAtNTg1LDIzICs2MzIsMjUgQEAKICAgICByZXR1cm4gbGluZTsKIH0KIAotUHlEb2NfU1RSVkFSKGlvYmFzZV9yZWFkbGluZXNfZG9jLAotICAgICJSZXR1cm4gYSBsaXN0IG9mIGxpbmVzIGZyb20gdGhlIHN0cmVhbS5cbiIKLSAgICAiXG4iCi0gICAgImhpbnQgY2FuIGJlIHNwZWNpZmllZCB0byBjb250cm9sIHRoZSBudW1iZXIgb2YgbGluZXMgcmVhZDogbm8gbW9yZVxuIgotICAgICJsaW5lcyB3aWxsIGJlIHJlYWQgaWYgdGhlIHRvdGFsIHNpemUgKGluIGJ5dGVzL2NoYXJhY3RlcnMpIG9mIGFsbFxuIgotICAgICJsaW5lcyBzbyBmYXIgZXhjZWVkcyBoaW50LiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLl9JT0Jhc2UucmVhZGxpbmVzCisgICAgaGludDogaW9fc3NpemVfdCA9IC0xCisgICAgLworCitSZXR1cm4gYSBsaXN0IG9mIGxpbmVzIGZyb20gdGhlIHN0cmVhbS4KKworaGludCBjYW4gYmUgc3BlY2lmaWVkIHRvIGNvbnRyb2wgdGhlIG51bWJlciBvZiBsaW5lcyByZWFkOiBubyBtb3JlCitsaW5lcyB3aWxsIGJlIHJlYWQgaWYgdGhlIHRvdGFsIHNpemUgKGluIGJ5dGVzL2NoYXJhY3RlcnMpIG9mIGFsbAorbGluZXMgc28gZmFyIGV4Y2VlZHMgaGludC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWlvYmFzZV9yZWFkbGluZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX19JT0Jhc2VfcmVhZGxpbmVzX2ltcGwoUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaGludCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZjUwNDIxNjc3ZmEzZGVhIGlucHV0PTE5NjFjNGE5NWU5NmU2NjFdKi8KIHsKLSAgICBQeV9zc2l6ZV90IGhpbnQgPSAtMSwgbGVuZ3RoID0gMDsKKyAgICBQeV9zc2l6ZV90IGxlbmd0aCA9IDA7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWRsaW5lcyIsICZfUHlJT19Db252ZXJ0U3NpemVfdCwgJmhpbnQpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIHJlc3VsdCA9IFB5TGlzdF9OZXcoMCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTY0NiwxNCArNjk1LDE3IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWlvYmFzZV93cml0ZWxpbmVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqbGluZXMsICppdGVyLCAqcmVzOworLypbY2xpbmljIGlucHV0XQorX2lvLl9JT0Jhc2Uud3JpdGVsaW5lcworICAgIGxpbmVzOiBvYmplY3QKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86d3JpdGVsaW5lcyIsICZsaW5lcykpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX3dyaXRlbGluZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpsaW5lcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NzZlYjBhOWI2MGE2NjI4IGlucHV0PTQzMmU3MjlhODQ1MGIzY2JdKi8KK3sKKyAgICBQeU9iamVjdCAqaXRlciwgKnJlczsKIAogICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfY2xvc2VkKHNlbGYsIFB5X1RydWUpID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjg4LDMxICs3NDAsMzMgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorI2luY2x1ZGUgImNsaW5pYy9pb2Jhc2UuYy5oIgorCiBzdGF0aWMgUHlNZXRob2REZWYgaW9iYXNlX21ldGhvZHNbXSA9IHsKICAgICB7InNlZWsiLCBpb2Jhc2Vfc2VlaywgTUVUSF9WQVJBUkdTLCBpb2Jhc2Vfc2Vla19kb2N9LAotICAgIHsidGVsbCIsIGlvYmFzZV90ZWxsLCBNRVRIX05PQVJHUywgaW9iYXNlX3RlbGxfZG9jfSwKKyAgICBfSU9fX0lPQkFTRV9URUxMX01FVEhPRERFRgogICAgIHsidHJ1bmNhdGUiLCBpb2Jhc2VfdHJ1bmNhdGUsIE1FVEhfVkFSQVJHUywgaW9iYXNlX3RydW5jYXRlX2RvY30sCi0gICAgeyJmbHVzaCIsIGlvYmFzZV9mbHVzaCwgTUVUSF9OT0FSR1MsIGlvYmFzZV9mbHVzaF9kb2N9LAotICAgIHsiY2xvc2UiLCBpb2Jhc2VfY2xvc2UsIE1FVEhfTk9BUkdTLCBpb2Jhc2VfY2xvc2VfZG9jfSwKKyAgICBfSU9fX0lPQkFTRV9GTFVTSF9NRVRIT0RERUYKKyAgICBfSU9fX0lPQkFTRV9DTE9TRV9NRVRIT0RERUYKIAotICAgIHsic2Vla2FibGUiLCBpb2Jhc2Vfc2Vla2FibGUsIE1FVEhfTk9BUkdTLCBpb2Jhc2Vfc2Vla2FibGVfZG9jfSwKLSAgICB7InJlYWRhYmxlIiwgaW9iYXNlX3JlYWRhYmxlLCBNRVRIX05PQVJHUywgaW9iYXNlX3JlYWRhYmxlX2RvY30sCi0gICAgeyJ3cml0YWJsZSIsIGlvYmFzZV93cml0YWJsZSwgTUVUSF9OT0FSR1MsIGlvYmFzZV93cml0YWJsZV9kb2N9LAorICAgIF9JT19fSU9CQVNFX1NFRUtBQkxFX01FVEhPRERFRgorICAgIF9JT19fSU9CQVNFX1JFQURBQkxFX01FVEhPRERFRgorICAgIF9JT19fSU9CQVNFX1dSSVRBQkxFX01FVEhPRERFRgogCiAgICAgeyJfY2hlY2tDbG9zZWQiLCAgIF9QeUlPQmFzZV9jaGVja19jbG9zZWQsIE1FVEhfTk9BUkdTfSwKICAgICB7Il9jaGVja1NlZWthYmxlIiwgX1B5SU9CYXNlX2NoZWNrX3NlZWthYmxlLCBNRVRIX05PQVJHU30sCiAgICAgeyJfY2hlY2tSZWFkYWJsZSIsIF9QeUlPQmFzZV9jaGVja19yZWFkYWJsZSwgTUVUSF9OT0FSR1N9LAogICAgIHsiX2NoZWNrV3JpdGFibGUiLCBfUHlJT0Jhc2VfY2hlY2tfd3JpdGFibGUsIE1FVEhfTk9BUkdTfSwKIAotICAgIHsiZmlsZW5vIiwgaW9iYXNlX2ZpbGVubywgTUVUSF9OT0FSR1MsIGlvYmFzZV9maWxlbm9fZG9jfSwKLSAgICB7ImlzYXR0eSIsIGlvYmFzZV9pc2F0dHksIE1FVEhfTk9BUkdTLCBpb2Jhc2VfaXNhdHR5X2RvY30sCisgICAgX0lPX19JT0JBU0VfRklMRU5PX01FVEhPRERFRgorICAgIF9JT19fSU9CQVNFX0lTQVRUWV9NRVRIT0RERUYKIAogICAgIHsiX19lbnRlcl9fIiwgaW9iYXNlX2VudGVyLCBNRVRIX05PQVJHU30sCiAgICAgeyJfX2V4aXRfXyIsIGlvYmFzZV9leGl0LCBNRVRIX1ZBUkFSR1N9LAogCi0gICAgeyJyZWFkbGluZSIsIGlvYmFzZV9yZWFkbGluZSwgTUVUSF9WQVJBUkdTLCBpb2Jhc2VfcmVhZGxpbmVfZG9jfSwKLSAgICB7InJlYWRsaW5lcyIsIGlvYmFzZV9yZWFkbGluZXMsIE1FVEhfVkFSQVJHUywgaW9iYXNlX3JlYWRsaW5lc19kb2N9LAotICAgIHsid3JpdGVsaW5lcyIsIGlvYmFzZV93cml0ZWxpbmVzLCBNRVRIX1ZBUkFSR1N9LAorICAgIF9JT19fSU9CQVNFX1JFQURMSU5FX01FVEhPRERFRgorICAgIF9JT19fSU9CQVNFX1JFQURMSU5FU19NRVRIT0RERUYKKyAgICBfSU9fX0lPQkFTRV9XUklURUxJTkVTX01FVEhPRERFRgogCiAgICAge05VTEwsIE5VTEx9CiB9OwpAQCAtNzk1LDE1ICs4NDksMTcgQEAKICAqIGVpdGhlci4pCiAqLwogCi1zdGF0aWMgUHlPYmplY3QgKgotcmF3aW9iYXNlX3JlYWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X3NzaXplX3QgbiA9IC0xOwotICAgIFB5T2JqZWN0ICpiLCAqcmVzOworLypbY2xpbmljIGlucHV0XQorX2lvLl9SYXdJT0Jhc2UucmVhZAorICAgIHNpemUgYXMgbjogUHlfc3NpemVfdCA9IC0xCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpyZWFkIiwgJm4pKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1Jhd0lPQmFzZV9yZWFkX2ltcGwoUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02Y2RlYjczMWUzYzlmMTNjIGlucHV0PWI2ZDBkY2Y2NDE3ZDEzNzRdKi8KK3sKKyAgICBQeU9iamVjdCAqYiwgKnJlczsKIAogICAgIGlmIChuIDwgMCkgewogICAgICAgICBfUHlfSURFTlRJRklFUihyZWFkYWxsKTsKQEAgLTgzNiwxMSArODkyLDE1IEBACiB9CiAKIAotUHlEb2NfU1RSVkFSKHJhd2lvYmFzZV9yZWFkYWxsX2RvYywKLSAgICAgICAgICAgICAiUmVhZCB1bnRpbCBFT0YsIHVzaW5nIG11bHRpcGxlIHJlYWQoKSBjYWxsLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLl9SYXdJT0Jhc2UucmVhZGFsbAorCitSZWFkIHVudGlsIEVPRiwgdXNpbmcgbXVsdGlwbGUgcmVhZCgpIGNhbGwuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1yYXdpb2Jhc2VfcmVhZGFsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fX1Jhd0lPQmFzZV9yZWFkYWxsX2ltcGwoUHlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTk4N2I5Y2U5Mjk0MjVhMCBpbnB1dD02ODg4NzQxNDEyMTM2MjJhXSovCiB7CiAgICAgaW50IHI7CiAgICAgUHlPYmplY3QgKmNodW5rcyA9IFB5TGlzdF9OZXcoMCk7CkBAIC04OTIsOSArOTUyLDI1IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3Jhd2lvYmFzZV9yZWFkaW50byhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Jhd2lvYmFzZV93cml0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwogc3RhdGljIFB5TWV0aG9kRGVmIHJhd2lvYmFzZV9tZXRob2RzW10gPSB7Ci0gICAgeyJyZWFkIiwgcmF3aW9iYXNlX3JlYWQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJyZWFkYWxsIiwgcmF3aW9iYXNlX3JlYWRhbGwsIE1FVEhfTk9BUkdTLCByYXdpb2Jhc2VfcmVhZGFsbF9kb2N9LAorICAgIF9JT19fUkFXSU9CQVNFX1JFQURfTUVUSE9EREVGCisgICAgX0lPX19SQVdJT0JBU0VfUkVBREFMTF9NRVRIT0RERUYKKyAgICB7InJlYWRpbnRvIiwgcmF3aW9iYXNlX3JlYWRpbnRvLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsid3JpdGUiLCByYXdpb2Jhc2Vfd3JpdGUsIE1FVEhfVkFSQVJHU30sCiAgICAge05VTEwsIE5VTEx9CiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9zdHJpbmdpby5jIGIvTW9kdWxlcy9faW8vc3RyaW5naW8uYwppbmRleCA5NWZiNzAzLi43MzAxOGE1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9zdHJpbmdpby5jCisrKyBiL01vZHVsZXMvX2lvL3N0cmluZ2lvLmMKQEAgLTExLDYgKzExLDEyIEBACiAjZGVmaW5lIFNUQVRFX1JFQUxJWkVEIDEKICNkZWZpbmUgU1RBVEVfQUNDVU1VTEFUSU5HIDIKIAorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9pbworY2xhc3MgX2lvLlN0cmluZ0lPICJzdHJpbmdpbyAqIiAiJlB5U3RyaW5nSU9fVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWMxN2JjMGY0MjE2NWNkN2RdKi8KKwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeV9VQ1M0ICpidWY7CkBAIC0zOSw2ICs0NSw4IEBACiAgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OwogfSBzdHJpbmdpbzsKIAorc3RhdGljIGludCBfaW9fU3RyaW5nSU9fX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKTsKKwogI2RlZmluZSBDSEVDS19JTklUSUFMSVpFRChzZWxmKSBcCiAgICAgaWYgKHNlbGYtPm9rIDw9IDApIHsgXAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgXApAQCAtNTgsMTIgKzY2LDYgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7IFwKICAgICB9CiAKLVB5RG9jX1NUUlZBUihzdHJpbmdpb19kb2MsCi0gICAgIlRleHQgSS9PIGltcGxlbWVudGF0aW9uIHVzaW5nIGFuIGluLW1lbW9yeSBidWZmZXIuXG4iCi0gICAgIlxuIgotICAgICJUaGUgaW5pdGlhbF92YWx1ZSBhcmd1bWVudCBzZXRzIHRoZSB2YWx1ZSBvZiBvYmplY3QuICBUaGUgbmV3bGluZVxuIgotICAgICJhcmd1bWVudCBpcyBsaWtlIHRoZSBvbmUgb2YgVGV4dElPV3JhcHBlcidzIGNvbnN0cnVjdG9yLiIpOwotCiAKIC8qIEludGVybmFsIHJvdXRpbmUgZm9yIGNoYW5naW5nIHRoZSBzaXplLCBpbiB0ZXJtcyBvZiBjaGFyYWN0ZXJzLCBvZiB0aGUKICAgIGJ1ZmZlciBvZiBTdHJpbmdJTyBvYmplY3RzLiAgVGhlIGNhbGxlciBzaG91bGQgZW5zdXJlIHRoYXQgdGhlICdzaXplJwpAQCAtMjY0LDExICsyNjYsMTUgQEAKICAgICByZXR1cm4gLTE7CiB9CiAKLVB5RG9jX1NUUlZBUihzdHJpbmdpb19nZXR2YWx1ZV9kb2MsCi0gICAgIlJldHJpZXZlIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIG9iamVjdC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5TdHJpbmdJTy5nZXR2YWx1ZQorCitSZXRyaWV2ZSB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zdHJpbmdpb19nZXR2YWx1ZShzdHJpbmdpbyAqc2VsZikKK19pb19TdHJpbmdJT19nZXR2YWx1ZV9pbXBsKHN0cmluZ2lvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI3YjZhN2JmZWFlYmNlMDEgaW5wdXQ9ZDIzY2I4MWQ2NzkxY2Y4OF0qLwogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKQEAgLTI3OCwzMyArMjg0LDQwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyaW5nX3NpemUpOwogfQogCi1QeURvY19TVFJWQVIoc3RyaW5naW9fdGVsbF9kb2MsCi0gICAgIlRlbGwgdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5TdHJpbmdJTy50ZWxsCisKK1RlbGwgdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXN0cmluZ2lvX3RlbGwoc3RyaW5naW8gKnNlbGYpCitfaW9fU3RyaW5nSU9fdGVsbF9pbXBsKHN0cmluZ2lvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJlODdhYzY3YjExNmM3N2IgaW5wdXQ9ZWM4NjZlYmFmZjAyZjQwNV0qLwogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPnBvcyk7CiB9CiAKLVB5RG9jX1NUUlZBUihzdHJpbmdpb19yZWFkX2RvYywKLSAgICAiUmVhZCBhdCBtb3N0IG4gY2hhcmFjdGVycywgcmV0dXJuZWQgYXMgYSBzdHJpbmcuXG4iCi0gICAgIlxuIgotICAgICJJZiB0aGUgYXJndW1lbnQgaXMgbmVnYXRpdmUgb3Igb21pdHRlZCwgcmVhZCB1bnRpbCBFT0ZcbiIKLSAgICAiaXMgcmVhY2hlZC4gUmV0dXJuIGFuIGVtcHR5IHN0cmluZyBhdCBFT0YuXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5TdHJpbmdJTy5yZWFkCisgICAgc2l6ZSBhcyBhcmc6IG9iamVjdCA9IE5vbmUKKyAgICAvCisKK1JlYWQgYXQgbW9zdCBzaXplIGNoYXJhY3RlcnMsIHJldHVybmVkIGFzIGEgc3RyaW5nLgorCitJZiB0aGUgYXJndW1lbnQgaXMgbmVnYXRpdmUgb3Igb21pdHRlZCwgcmVhZCB1bnRpbCBFT0YKK2lzIHJlYWNoZWQuIFJldHVybiBhbiBlbXB0eSBzdHJpbmcgYXQgRU9GLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc3RyaW5naW9fcmVhZChzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fU3RyaW5nSU9fcmVhZF9pbXBsKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM2NzY4NjQ3NzM3NDZmNjggaW5wdXQ9OWEzMTkwMTVmNmYzOTY1Y10qLwogewogICAgIFB5X3NzaXplX3Qgc2l6ZSwgbjsKICAgICBQeV9VQ1M0ICpvdXRwdXQ7Ci0gICAgUHlPYmplY3QgKmFyZyA9IFB5X05vbmU7CiAKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPOnJlYWQiLCAmYXJnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCiAgICAgaWYgKFB5TnVtYmVyX0NoZWNrKGFyZykpIHsKQEAgLTM3MywyMCArMzg2LDIzIEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsIHN0YXJ0LCBsZW4pOwogfQogCi1QeURvY19TVFJWQVIoc3RyaW5naW9fcmVhZGxpbmVfZG9jLAotICAgICJSZWFkIHVudGlsIG5ld2xpbmUgb3IgRU9GLlxuIgotICAgICJcbiIKLSAgICAiUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgRU9GIGlzIGhpdCBpbW1lZGlhdGVseS5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLlN0cmluZ0lPLnJlYWRsaW5lCisgICAgc2l6ZSBhcyBhcmc6IG9iamVjdCA9IE5vbmUKKyAgICAvCisKK1JlYWQgdW50aWwgbmV3bGluZSBvciBFT0YuCisKK1JldHVybnMgYW4gZW1wdHkgc3RyaW5nIGlmIEVPRiBpcyBoaXQgaW1tZWRpYXRlbHkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zdHJpbmdpb19yZWFkbGluZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fU3RyaW5nSU9fcmVhZGxpbmVfaW1wbChzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05OWZkY2FjMDNhM2RlZTgxIGlucHV0PWUwZTBlZDQwNDIwNDAxNzZdKi8KIHsKLSAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKICAgICBQeV9zc2l6ZV90IGxpbWl0ID0gLTE7CiAKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPOnJlYWRsaW5lIiwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKICAgICBFTlNVUkVfUkVBTElaRUQoc2VsZik7CiAKQEAgLTQ0MSwyMiArNDU3LDI1IEBACiAgICAgcmV0dXJuIGxpbmU7CiB9CiAKLVB5RG9jX1NUUlZBUihzdHJpbmdpb190cnVuY2F0ZV9kb2MsCi0gICAgIlRydW5jYXRlIHNpemUgdG8gcG9zLlxuIgotICAgICJcbiIKLSAgICAiVGhlIHBvcyBhcmd1bWVudCBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhc1xuIgotICAgICJyZXR1cm5lZCBieSB0ZWxsKCkuICBUaGUgY3VycmVudCBmaWxlIHBvc2l0aW9uIGlzIHVuY2hhbmdlZC5cbiIKLSAgICAiUmV0dXJucyB0aGUgbmV3IGFic29sdXRlIHBvc2l0aW9uLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uU3RyaW5nSU8udHJ1bmNhdGUKKyAgICBwb3MgYXMgYXJnOiBvYmplY3QgPSBOb25lCisgICAgLworCitUcnVuY2F0ZSBzaXplIHRvIHBvcy4KKworVGhlIHBvcyBhcmd1bWVudCBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhcworcmV0dXJuZWQgYnkgdGVsbCgpLiAgVGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiBpcyB1bmNoYW5nZWQuCitSZXR1cm5zIHRoZSBuZXcgYWJzb2x1dGUgcG9zaXRpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zdHJpbmdpb190cnVuY2F0ZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fU3RyaW5nSU9fdHJ1bmNhdGVfaW1wbChzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MDcyNDM5YzJiMDFkMzA2IGlucHV0PTc0ODYxOWE0OTRiYTUzYWRdKi8KIHsKICAgICBQeV9zc2l6ZV90IHNpemU7Ci0gICAgUHlPYmplY3QgKmFyZyA9IFB5X05vbmU7CiAKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPOnRydW5jYXRlIiwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAogICAgIGlmIChQeU51bWJlcl9DaGVjayhhcmcpKSB7CkBAIC00OTAsNDkgKzUwOSw1MSBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZSk7CiB9CiAKLVB5RG9jX1NUUlZBUihzdHJpbmdpb19zZWVrX2RvYywKLSAgICAiQ2hhbmdlIHN0cmVhbSBwb3NpdGlvbi5cbiIKLSAgICAiXG4iCi0gICAgIlNlZWsgdG8gY2hhcmFjdGVyIG9mZnNldCBwb3MgcmVsYXRpdmUgdG8gcG9zaXRpb24gaW5kaWNhdGVkIGJ5IHdoZW5jZTpcbiIKLSAgICAiICAgIDAgIFN0YXJ0IG9mIHN0cmVhbSAodGhlIGRlZmF1bHQpLiAgcG9zIHNob3VsZCBiZSA+PSAwO1xuIgotICAgICIgICAgMSAgQ3VycmVudCBwb3NpdGlvbiAtIHBvcyBtdXN0IGJlIDA7XG4iCi0gICAgIiAgICAyICBFbmQgb2Ygc3RyZWFtIC0gcG9zIG11c3QgYmUgMC5cbiIKLSAgICAiUmV0dXJucyB0aGUgbmV3IGFic29sdXRlIHBvc2l0aW9uLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uU3RyaW5nSU8uc2VlaworICAgIHBvczogUHlfc3NpemVfdAorICAgIHdoZW5jZTogaW50ID0gMAorICAgIC8KKworQ2hhbmdlIHN0cmVhbSBwb3NpdGlvbi4KKworU2VlayB0byBjaGFyYWN0ZXIgb2Zmc2V0IHBvcyByZWxhdGl2ZSB0byBwb3NpdGlvbiBpbmRpY2F0ZWQgYnkgd2hlbmNlOgorICAgIDAgIFN0YXJ0IG9mIHN0cmVhbSAodGhlIGRlZmF1bHQpLiAgcG9zIHNob3VsZCBiZSA+PSAwOworICAgIDEgIEN1cnJlbnQgcG9zaXRpb24gLSBwb3MgbXVzdCBiZSAwOworICAgIDIgIEVuZCBvZiBzdHJlYW0gLSBwb3MgbXVzdCBiZSAwLgorUmV0dXJucyB0aGUgbmV3IGFic29sdXRlIHBvc2l0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc3RyaW5naW9fc2VlayhzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fU3RyaW5nSU9fc2Vla19pbXBsKHN0cmluZ2lvICpzZWxmLCBQeV9zc2l6ZV90IHBvcywgaW50IHdoZW5jZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lOWUwYWM5YThhZTcxYzI1IGlucHV0PWUzODU1YjI0ZTdjYWUwNmFdKi8KIHsKLSAgICBQeV9zc2l6ZV90IHBvczsKLSAgICBpbnQgbW9kZSA9IDA7Ci0KICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58aTpzZWVrIiwgJnBvcywgJm1vZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAKLSAgICBpZiAobW9kZSAhPSAwICYmIG1vZGUgIT0gMSAmJiBtb2RlICE9IDIpIHsKKyAgICBpZiAod2hlbmNlICE9IDAgJiYgd2hlbmNlICE9IDEgJiYgd2hlbmNlICE9IDIpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCB3aGVuY2UgKCVpLCBzaG91bGQgYmUgMCwgMSBvciAyKSIsIG1vZGUpOworICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgd2hlbmNlICglaSwgc2hvdWxkIGJlIDAsIDEgb3IgMikiLCB3aGVuY2UpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZWxzZSBpZiAocG9zIDwgMCAmJiBtb2RlID09IDApIHsKKyAgICBlbHNlIGlmIChwb3MgPCAwICYmIHdoZW5jZSA9PSAwKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIk5lZ2F0aXZlIHNlZWsgcG9zaXRpb24gJXpkIiwgcG9zKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UgaWYgKG1vZGUgIT0gMCAmJiBwb3MgIT0gMCkgeworICAgIGVsc2UgaWYgKHdoZW5jZSAhPSAwICYmIHBvcyAhPSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IGRvIG5vbnplcm8gY3VyLXJlbGF0aXZlIHNlZWtzIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIC8qIG1vZGUgMDogb2Zmc2V0IHJlbGF0aXZlIHRvIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLgotICAgICAgIG1vZGUgMTogbm8gY2hhbmdlIHRvIGN1cnJlbnQgcG9zaXRpb24uCi0gICAgICAgbW9kZSAyOiBjaGFuZ2UgcG9zaXRpb24gdG8gZW5kIG9mIGZpbGUuICovCi0gICAgaWYgKG1vZGUgPT0gMSkgeworICAgIC8qIHdoZW5jZSA9IDA6IG9mZnNldCByZWxhdGl2ZSB0byBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZy4KKyAgICAgICB3aGVuY2UgPSAxOiBubyBjaGFuZ2UgdG8gY3VycmVudCBwb3NpdGlvbi4KKyAgICAgICB3aGVuY2UgPSAyOiBjaGFuZ2UgcG9zaXRpb24gdG8gZW5kIG9mIGZpbGUuICovCisgICAgaWYgKHdoZW5jZSA9PSAxKSB7CiAgICAgICAgIHBvcyA9IHNlbGYtPnBvczsKICAgICB9Ci0gICAgZWxzZSBpZiAobW9kZSA9PSAyKSB7CisgICAgZWxzZSBpZiAod2hlbmNlID09IDIpIHsKICAgICAgICAgcG9zID0gc2VsZi0+c3RyaW5nX3NpemU7CiAgICAgfQogCkBAIC01NDEsMTQgKzU2MiwyMCBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2VsZi0+cG9zKTsKIH0KIAotUHlEb2NfU1RSVkFSKHN0cmluZ2lvX3dyaXRlX2RvYywKLSAgICAiV3JpdGUgc3RyaW5nIHRvIGZpbGUuXG4iCi0gICAgIlxuIgotICAgICJSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3cml0dGVuLCB3aGljaCBpcyBhbHdheXMgZXF1YWwgdG9cbiIKLSAgICAidGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uU3RyaW5nSU8ud3JpdGUKKyAgICBzIGFzIG9iajogb2JqZWN0CisgICAgLworCitXcml0ZSBzdHJpbmcgdG8gZmlsZS4KKworUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRlbiwgd2hpY2ggaXMgYWx3YXlzIGVxdWFsIHRvCit0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zdHJpbmdpb193cml0ZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKm9iaikKK19pb19TdHJpbmdJT193cml0ZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKm9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZGVhYmE5MWExNWI5NGRhIGlucHV0PWNmOTZmM2IxNjU4NmU2NjldKi8KIHsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAKQEAgLTU2OSwxNCArNTk2LDIwIEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzaXplKTsKIH0KIAotUHlEb2NfU1RSVkFSKHN0cmluZ2lvX2Nsb3NlX2RvYywKLSAgICAiQ2xvc2UgdGhlIElPIG9iamVjdC4gQXR0ZW1wdGluZyBhbnkgZnVydGhlciBvcGVyYXRpb24gYWZ0ZXIgdGhlXG4iCi0gICAgIm9iamVjdCBpcyBjbG9zZWQgd2lsbCByYWlzZSBhIFZhbHVlRXJyb3IuXG4iCi0gICAgIlxuIgotICAgICJUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgY2xvc2VkLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uU3RyaW5nSU8uY2xvc2UKKworQ2xvc2UgdGhlIElPIG9iamVjdC4KKworQXR0ZW1wdGluZyBhbnkgZnVydGhlciBvcGVyYXRpb24gYWZ0ZXIgdGhlIG9iamVjdCBpcyBjbG9zZWQKK3dpbGwgcmFpc2UgYSBWYWx1ZUVycm9yLgorCitUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgY2xvc2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc3RyaW5naW9fY2xvc2Uoc3RyaW5naW8gKnNlbGYpCitfaW9fU3RyaW5nSU9fY2xvc2VfaW1wbChzdHJpbmdpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNDM5OTM1NWNiZTUxOGYxIGlucHV0PWNiYzEwYjQ1ZjM1ZDZkNDZdKi8KIHsKICAgICBzZWxmLT5jbG9zZWQgPSAxOwogICAgIC8qIEZyZWUgdXAgc29tZSBtZW1vcnkgKi8KQEAgLTY0NCwyMyArNjc3LDI3IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5TdHJpbmdJTy5fX2luaXRfXworICAgIGluaXRpYWxfdmFsdWUgYXMgdmFsdWU6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9ICcnCisgICAgbmV3bGluZSBhcyBuZXdsaW5lX29iajogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gJ1xuJworCitUZXh0IEkvTyBpbXBsZW1lbnRhdGlvbiB1c2luZyBhbiBpbi1tZW1vcnkgYnVmZmVyLgorCitUaGUgaW5pdGlhbF92YWx1ZSBhcmd1bWVudCBzZXRzIHRoZSB2YWx1ZSBvZiBvYmplY3QuICBUaGUgbmV3bGluZQorYXJndW1lbnQgaXMgbGlrZSB0aGUgb25lIG9mIFRleHRJT1dyYXBwZXIncyBjb25zdHJ1Y3Rvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIGludAotc3RyaW5naW9faW5pdChzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX2lvX1N0cmluZ0lPX19faW5pdF9fX2ltcGwoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuZXdsaW5lX29iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNDIxZWEwMjNiMjJlZjRlIGlucHV0PWNlZTJkOTE4MWIyNTc3YTNdKi8KIHsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsiaW5pdGlhbF92YWx1ZSIsICJuZXdsaW5lIiwgTlVMTH07Ci0gICAgUHlPYmplY3QgKnZhbHVlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbmV3bGluZV9vYmogPSBOVUxMOwogICAgIGNoYXIgKm5ld2xpbmUgPSAiXG4iOwogICAgIFB5X3NzaXplX3QgdmFsdWVfbGVuOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPTzpfX2luaXRfXyIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWUsICZuZXdsaW5lX29iaikpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIC8qIFBhcnNlIHRoZSBuZXdsaW5lIGFyZ3VtZW50LiBUaGlzIHVzZWQgdG8gYmUgZG9uZSB3aXRoIHRoZSAneicKLSAgICAgICBzcGVjaWZpZXIsIGhvd2V2ZXIgdGhpcyBhbGxvd2VkIGFueSBvYmplY3Qgd2l0aCB0aGUgYnVmZmVyIGludGVyZmFjZSB0bwotICAgICAgIGJlIGNvbnZlcnRlZC4gVGh1cyB3ZSBoYXZlIHRvIHBhcnNlIGl0IG1hbnVhbGx5IHNpbmNlIHdlIG9ubHkgd2FudCB0bwotICAgICAgIGFsbG93IHVuaWNvZGUgb2JqZWN0cyBvciBOb25lLiAqLworICAgIC8qIFBhcnNlIHRoZSBuZXdsaW5lIGFyZ3VtZW50LiBXZSBvbmx5IHdhbnQgdG8gYWxsb3cgdW5pY29kZSBvYmplY3RzIG9yCisgICAgICAgTm9uZS4gKi8KICAgICBpZiAobmV3bGluZV9vYmogPT0gUHlfTm9uZSkgewogICAgICAgICBuZXdsaW5lID0gTlVMTDsKICAgICB9CkBAIC03NjEsMzMgKzc5OCw0NSBAQAogCiAvKiBQcm9wZXJ0aWVzIGFuZCBwc2V1ZG8tcHJvcGVydGllcyAqLwogCi1QeURvY19TVFJWQVIoc3RyaW5naW9fcmVhZGFibGVfZG9jLAotInJlYWRhYmxlKCkgLT4gYm9vbC4gUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHJlYWQuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uU3RyaW5nSU8ucmVhZGFibGUKIAotUHlEb2NfU1RSVkFSKHN0cmluZ2lvX3dyaXRhYmxlX2RvYywKLSJ3cml0YWJsZSgpIC0+IGJvb2wuIFJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSB3cml0dGVuLiIpOwotCi1QeURvY19TVFJWQVIoc3RyaW5naW9fc2Vla2FibGVfZG9jLAotInNlZWthYmxlKCkgLT4gYm9vbC4gUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHNlZWtlZC4iKTsKK1JldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSByZWFkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc3RyaW5naW9fc2Vla2FibGUoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1N0cmluZ0lPX3JlYWRhYmxlX2ltcGwoc3RyaW5naW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjE5ZDQ0ZGQ4YjFjZWI5OSBpbnB1dD0zOWNlMDY4YjIyNGMyMWFkXSovCiB7CiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogICAgIFB5X1JFVFVSTl9UUlVFOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uU3RyaW5nSU8ud3JpdGFibGUKKworUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHdyaXR0ZW4uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zdHJpbmdpb19yZWFkYWJsZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fU3RyaW5nSU9fd3JpdGFibGVfaW1wbChzdHJpbmdpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xM2U0ZGQ3NzE4NzA3NGNhIGlucHV0PTdhNjkxMzUzYWFjMzg4MzVdKi8KIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAgICAgUHlfUkVUVVJOX1RSVUU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5TdHJpbmdJTy5zZWVrYWJsZQorCitSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgc2Vla2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc3RyaW5naW9fd3JpdGFibGUoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1N0cmluZ0lPX3NlZWthYmxlX2ltcGwoc3RyaW5naW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGQyMGI0NjQxYzc1Njg3OSBpbnB1dD00YzYwNmQwNWIzMjk1MmU2XSovCiB7CiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwpAQCAtODA5LDcgKzg1OCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc3RyaW5naW9fZ2V0c3RhdGUoc3RyaW5naW8gKnNlbGYpCiB7Ci0gICAgUHlPYmplY3QgKmluaXR2YWx1ZSA9IHN0cmluZ2lvX2dldHZhbHVlKHNlbGYpOworICAgIFB5T2JqZWN0ICppbml0dmFsdWUgPSBfaW9fU3RyaW5nSU9fZ2V0dmFsdWVfaW1wbChzZWxmKTsKICAgICBQeU9iamVjdCAqZGljdDsKICAgICBQeU9iamVjdCAqc3RhdGU7CiAKQEAgLTg1Nyw3ICs5MDYsNyBAQAogICAgIGluaXRhcmcgPSBQeVR1cGxlX0dldFNsaWNlKHN0YXRlLCAwLCAyKTsKICAgICBpZiAoaW5pdGFyZyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc3RyaW5naW9faW5pdChzZWxmLCBpbml0YXJnLCBOVUxMKSA8IDApIHsKKyAgICBpZiAoX2lvX1N0cmluZ0lPX19faW5pdF9fKChQeU9iamVjdCAqKXNlbGYsIGluaXRhcmcsIE5VTEwpIDwgMCkgewogICAgICAgICBQeV9ERUNSRUYoaW5pdGFyZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTk1OSwxOSArMTAwOCwyMSBAQAogICAgIHJldHVybiBQeU9iamVjdF9HZXRBdHRyKHNlbGYtPmRlY29kZXIsIF9QeUlPX3N0cl9uZXdsaW5lcyk7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgc3RyaW5naW9fbWV0aG9kc1tdID0gewotICAgIHsiY2xvc2UiLCAgICAoUHlDRnVuY3Rpb24pc3RyaW5naW9fY2xvc2UsICAgIE1FVEhfTk9BUkdTLCAgc3RyaW5naW9fY2xvc2VfZG9jfSwKLSAgICB7ImdldHZhbHVlIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2lvX2dldHZhbHVlLCBNRVRIX05PQVJHUywgIHN0cmluZ2lvX2dldHZhbHVlX2RvY30sCi0gICAgeyJyZWFkIiwgICAgIChQeUNGdW5jdGlvbilzdHJpbmdpb19yZWFkLCAgICAgTUVUSF9WQVJBUkdTLCBzdHJpbmdpb19yZWFkX2RvY30sCi0gICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbilzdHJpbmdpb19yZWFkbGluZSwgTUVUSF9WQVJBUkdTLCBzdHJpbmdpb19yZWFkbGluZV9kb2N9LAotICAgIHsidGVsbCIsICAgICAoUHlDRnVuY3Rpb24pc3RyaW5naW9fdGVsbCwgICAgIE1FVEhfTk9BUkdTLCAgc3RyaW5naW9fdGVsbF9kb2N9LAotICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pc3RyaW5naW9fdHJ1bmNhdGUsIE1FVEhfVkFSQVJHUywgc3RyaW5naW9fdHJ1bmNhdGVfZG9jfSwKLSAgICB7InNlZWsiLCAgICAgKFB5Q0Z1bmN0aW9uKXN0cmluZ2lvX3NlZWssICAgICBNRVRIX1ZBUkFSR1MsIHN0cmluZ2lvX3NlZWtfZG9jfSwKLSAgICB7IndyaXRlIiwgICAgKFB5Q0Z1bmN0aW9uKXN0cmluZ2lvX3dyaXRlLCAgICBNRVRIX08sICAgICAgIHN0cmluZ2lvX3dyaXRlX2RvY30sCisjaW5jbHVkZSAiY2xpbmljL3N0cmluZ2lvLmMuaCIKIAotICAgIHsic2Vla2FibGUiLCAoUHlDRnVuY3Rpb24pc3RyaW5naW9fc2Vla2FibGUsIE1FVEhfTk9BUkdTLCBzdHJpbmdpb19zZWVrYWJsZV9kb2N9LAotICAgIHsicmVhZGFibGUiLCAoUHlDRnVuY3Rpb24pc3RyaW5naW9fcmVhZGFibGUsIE1FVEhfTk9BUkdTLCBzdHJpbmdpb19yZWFkYWJsZV9kb2N9LAotICAgIHsid3JpdGFibGUiLCAoUHlDRnVuY3Rpb24pc3RyaW5naW9fd3JpdGFibGUsIE1FVEhfTk9BUkdTLCBzdHJpbmdpb193cml0YWJsZV9kb2N9LAorc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBzdHJpbmdpb19tZXRob2RzW10gPSB7CisgICAgX0lPX1NUUklOR0lPX0NMT1NFX01FVEhPRERFRgorICAgIF9JT19TVFJJTkdJT19HRVRWQUxVRV9NRVRIT0RERUYKKyAgICBfSU9fU1RSSU5HSU9fUkVBRF9NRVRIT0RERUYKKyAgICBfSU9fU1RSSU5HSU9fUkVBRExJTkVfTUVUSE9EREVGCisgICAgX0lPX1NUUklOR0lPX1RFTExfTUVUSE9EREVGCisgICAgX0lPX1NUUklOR0lPX1RSVU5DQVRFX01FVEhPRERFRgorICAgIF9JT19TVFJJTkdJT19TRUVLX01FVEhPRERFRgorICAgIF9JT19TVFJJTkdJT19XUklURV9NRVRIT0RERUYKKworICAgIF9JT19TVFJJTkdJT19TRUVLQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fU1RSSU5HSU9fUkVBREFCTEVfTUVUSE9EREVGCisgICAgX0lPX1NUUklOR0lPX1dSSVRBQkxFX01FVEhPRERFRgogCiAgICAgeyJfX2dldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pc3RyaW5naW9fZ2V0c3RhdGUsIE1FVEhfTk9BUkdTfSwKICAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilzdHJpbmdpb19zZXRzdGF0ZSwgTUVUSF9PfSwKQEAgLTEwMTMsNyArMTA2NCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFCiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgIC8qdHBfZmxhZ3MqLwotICAgIHN0cmluZ2lvX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RvYyovCisgICAgX2lvX1N0cmluZ0lPX19faW5pdF9fX19kb2NfXywgICAgICAgICAgICAgIC8qdHBfZG9jKi8KICAgICAodHJhdmVyc2Vwcm9jKXN0cmluZ2lvX3RyYXZlcnNlLCAgICAgICAgICAgLyp0cF90cmF2ZXJzZSovCiAgICAgKGlucXVpcnkpc3RyaW5naW9fY2xlYXIsICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlKi8KQEAgLTEwMjgsNyArMTA3OSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3JfZ2V0Ki8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9zZXQqLwogICAgIG9mZnNldG9mKHN0cmluZ2lvLCBkaWN0KSwgICAgICAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQqLwotICAgIChpbml0cHJvYylzdHJpbmdpb19pbml0LCAgICAgICAgICAgICAgICAgICAvKnRwX2luaXQqLworICAgIF9pb19TdHJpbmdJT19fX2luaXRfXywgICAgICAgICAgICAgICAgICAgICAvKnRwX2luaXQqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FsbG9jKi8KICAgICBzdHJpbmdpb19uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uZXcqLwogfTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL3RleHRpby5jIGIvTW9kdWxlcy9faW8vdGV4dGlvLmMKaW5kZXggMGMxYjEzZS4uYjFkMmI2ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vdGV4dGlvLmMKKysrIGIvTW9kdWxlcy9faW8vdGV4dGlvLmMKQEAgLTExLDYgKzExLDIwIEBACiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAjaW5jbHVkZSAiX2lvbW9kdWxlLmgiCiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfaW8KK2NsYXNzIF9pby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyICJubGRlY29kZXJfb2JqZWN0ICoiICImUHlJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX1R5cGUiCitjbGFzcyBfaW8uVGV4dElPV3JhcHBlciAidGV4dGlvICoiICImVGV4dElPV3JhcHBlcl9UWXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MjA5N2E0ZmM4NTY3MGMyNl0qLworCisvKltweXRob24gaW5wdXRdCitjbGFzcyBpb19zc2l6ZV90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ1B5X3NzaXplX3QnCisgICAgY29udmVydGVyID0gJ19QeUlPX0NvbnZlcnRTc2l6ZV90JworW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZDBhODExZDNjYmZkMWIzM10qLworCiBfUHlfSURFTlRJRklFUihjbG9zZSk7CiBfUHlfSURFTlRJRklFUihfZGVhbGxvY193YXJuKTsKIF9QeV9JREVOVElGSUVSKGRlY29kZSk7CkBAIC0yMTAsMzggKzIyNCwzNyBAQAogCiAvKiBJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyICovCiAKLVB5RG9jX1NUUlZBUihpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2RvYywKLSAgICAiQ29kZWMgdXNlZCB3aGVuIHJlYWRpbmcgYSBmaWxlIGluIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlLiAgSXQgd3JhcHNcbiIKLSAgICAiYW5vdGhlciBpbmNyZW1lbnRhbCBkZWNvZGVyLCB0cmFuc2xhdGluZyBcXHJcXG4gYW5kIFxcciBpbnRvIFxcbi4gIEl0IGFsc29cbiIKLSAgICAicmVjb3JkcyB0aGUgdHlwZXMgb2YgbmV3bGluZXMgZW5jb3VudGVyZWQuICBXaGVuIHVzZWQgd2l0aFxuIgotICAgICJ0cmFuc2xhdGU9RmFsc2UsIGl0IGVuc3VyZXMgdGhhdCB0aGUgbmV3bGluZSBzZXF1ZW5jZSBpcyByZXR1cm5lZCBpblxuIgotICAgICJvbmUgcGllY2UuIFdoZW4gdXNlZCB3aXRoIGRlY29kZXI9Tm9uZSwgaXQgZXhwZWN0cyB1bmljb2RlIHN0cmluZ3MgYXNcbiIKLSAgICAiZGVjb2RlIGlucHV0IGFuZCB0cmFuc2xhdGVzIG5ld2xpbmVzIHdpdGhvdXQgZmlyc3QgaW52b2tpbmcgYW4gZXh0ZXJuYWxcbiIKLSAgICAiZGVjb2Rlci5cbiIKLSAgICApOwotCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5T2JqZWN0ICpkZWNvZGVyOwogICAgIFB5T2JqZWN0ICplcnJvcnM7Ci0gICAgc2lnbmVkIGludCBwZW5kaW5nY3I6IDE7Ci0gICAgc2lnbmVkIGludCB0cmFuc2xhdGU6IDE7CisgICAgdW5zaWduZWQgaW50IHBlbmRpbmdjcjogMTsKKyAgICB1bnNpZ25lZCBpbnQgdHJhbnNsYXRlOiAxOwogICAgIHVuc2lnbmVkIGludCBzZWVubmw6IDM7CiB9IG5sZGVjb2Rlcl9vYmplY3Q7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyLl9faW5pdF9fCisgICAgZGVjb2Rlcjogb2JqZWN0CisgICAgdHJhbnNsYXRlOiBpbnQKKyAgICBlcnJvcnM6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9ICJzdHJpY3QiCisKK0NvZGVjIHVzZWQgd2hlbiByZWFkaW5nIGEgZmlsZSBpbiB1bml2ZXJzYWwgbmV3bGluZXMgbW9kZS4KKworSXQgd3JhcHMgYW5vdGhlciBpbmNyZW1lbnRhbCBkZWNvZGVyLCB0cmFuc2xhdGluZyBcclxuIGFuZCBcciBpbnRvIFxuLgorSXQgYWxzbyByZWNvcmRzIHRoZSB0eXBlcyBvZiBuZXdsaW5lcyBlbmNvdW50ZXJlZC4gIFdoZW4gdXNlZCB3aXRoCit0cmFuc2xhdGU9RmFsc2UsIGl0IGVuc3VyZXMgdGhhdCB0aGUgbmV3bGluZSBzZXF1ZW5jZSBpcyByZXR1cm5lZCBpbgorb25lIHBpZWNlLiBXaGVuIHVzZWQgd2l0aCBkZWNvZGVyPU5vbmUsIGl0IGV4cGVjdHMgdW5pY29kZSBzdHJpbmdzIGFzCitkZWNvZGUgaW5wdXQgYW5kIHRyYW5zbGF0ZXMgbmV3bGluZXMgd2l0aG91dCBmaXJzdCBpbnZva2luZyBhbiBleHRlcm5hbAorZGVjb2Rlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIGludAotaW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9pbml0KG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfX19pbml0X19faW1wbChubGRlY29kZXJfb2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVjb2RlciwgaW50IHRyYW5zbGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mYmQwNGQ0NDNlNzY0ZWMyIGlucHV0PTg5ZGI2YjE5YzZiMTI2YmZdKi8KIHsKLSAgICBQeU9iamVjdCAqZGVjb2RlcjsKLSAgICBpbnQgdHJhbnNsYXRlOwotICAgIFB5T2JqZWN0ICplcnJvcnMgPSBOVUxMOwotICAgIGNoYXIgKmt3bGlzdFtdID0geyJkZWNvZGVyIiwgInRyYW5zbGF0ZSIsICJlcnJvcnMiLCBOVUxMfTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPaXxPOkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmRlY29kZXIsICZ0cmFuc2xhdGUsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gLTE7Ci0KICAgICBzZWxmLT5kZWNvZGVyID0gZGVjb2RlcjsKICAgICBQeV9JTkNSRUYoZGVjb2Rlcik7CiAKQEAgLTQ5NSwyMiArNTA4LDI3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1pbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2RlY29kZShubGRlY29kZXJfb2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQotewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICppbnB1dDsKLSAgICBpbnQgZmluYWwgPSAwOworLypbY2xpbmljIGlucHV0XQorX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIuZGVjb2RlCisgICAgaW5wdXQ6IG9iamVjdAorICAgIGZpbmFsOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98aTpJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZpbnB1dCwgJmZpbmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlX2ltcGwobmxkZWNvZGVyX29iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbnB1dCwgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBkNDg2NzU1YmIzN2E2NmUgaW5wdXQ9ZDY1Njc3Mzg1YmZkNjgyN10qLworewogICAgIHJldHVybiBfUHlJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZSgoUHlPYmplY3QgKikgc2VsZiwgaW5wdXQsIGZpbmFsKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIuZ2V0c3RhdGUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfZ2V0c3RhdGUobmxkZWNvZGVyX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9nZXRzdGF0ZV9pbXBsKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjBkMmM5YzEzNmY0ZTBkMCBpbnB1dD1mOGZmMTAxODI1ZTMyZTdmXSovCiB7CiAgICAgUHlPYmplY3QgKmJ1ZmZlcjsKICAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgZmxhZzsKQEAgLTUyMCw3ICs1MzgsNyBAQAogICAgICAgICAgICBfUHlJT19zdHJfZ2V0c3RhdGUsIE5VTEwpOwogICAgICAgICBpZiAoc3RhdGUgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKHN0YXRlLCAiKE9LKSIsICZidWZmZXIsICZmbGFnKSkgeworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJPSyIsICZidWZmZXIsICZmbGFnKSkgewogICAgICAgICAgICAgUHlfREVDUkVGKHN0YXRlKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC01MzcsMTYgKzU1NSwyNCBAQAogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOSyIsIGJ1ZmZlciwgZmxhZyk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyLnNldHN0YXRlCisgICAgc3RhdGU6IG9iamVjdAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfc2V0c3RhdGUobmxkZWNvZGVyX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0YXRlKQorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfc2V0c3RhdGUobmxkZWNvZGVyX29iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdGF0ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jMTBjNjIyNTA4YjU3NmNiIGlucHV0PWM1M2ZiNTA1YTc2ZGJiZTJdKi8KIHsKICAgICBQeU9iamVjdCAqYnVmZmVyOwogICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBmbGFnOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShzdGF0ZSwgIihPSykiLCAmYnVmZmVyLCAmZmxhZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiT0siLCAmYnVmZmVyLCAmZmxhZykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc2VsZi0+cGVuZGluZ2NyID0gKGludCkgZmxhZyAmIDE7CisgICAgc2VsZi0+cGVuZGluZ2NyID0gKGludCkgKGZsYWcgJiAxKTsKICAgICBmbGFnID4+PSAxOwogCiAgICAgaWYgKHNlbGYtPmRlY29kZXIgIT0gUHlfTm9uZSkKQEAgLTU1Niw4ICs1ODIsMTMgQEAKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyLnJlc2V0CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1pbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX3Jlc2V0KG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfcmVzZXRfaW1wbChubGRlY29kZXJfb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMyZmE0MGM3NDYyYWE4ZmYgaW5wdXQ9NzI4Njc4ZGRhZWE3NzZkZl0qLwogewogICAgIHNlbGYtPnNlZW5ubCA9IDA7CiAgICAgc2VsZi0+cGVuZGluZ2NyID0gMDsKQEAgLTU5MSw5NSArNjIyLDggQEAKIAogfQogCi0KLXN0YXRpYyBQeU1ldGhvZERlZiBpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX21ldGhvZHNbXSA9IHsKLSAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAotICAgIHsiZ2V0c3RhdGUiLCAoUHlDRnVuY3Rpb24paW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9nZXRzdGF0ZSwgTUVUSF9OT0FSR1N9LAotICAgIHsic2V0c3RhdGUiLCAoUHlDRnVuY3Rpb24paW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9zZXRzdGF0ZSwgTUVUSF9PfSwKLSAgICB7InJlc2V0IiwgKFB5Q0Z1bmN0aW9uKWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfcmVzZXQsIE1FVEhfTk9BUkdTfSwKLSAgICB7TlVMTH0KLX07Ci0KLXN0YXRpYyBQeUdldFNldERlZiBpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2dldHNldFtdID0gewotICAgIHsibmV3bGluZXMiLCAoZ2V0dGVyKWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfbmV3bGluZXNfZ2V0LCBOVUxMLCBOVUxMfSwKLSAgICB7TlVMTH0KLX07Ci0KLVB5VHlwZU9iamVjdCBQeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLCAvKnRwX25hbWUqLwotICAgIHNpemVvZihubGRlY29kZXJfb2JqZWN0KSwgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KLSAgICAoZGVzdHJ1Y3RvcilpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSwgIC8qdHBfZmxhZ3MqLwotICAgIGluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfZG9jLCAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF93ZWFrbGlzdG9mZnNldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICBpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX21ldGhvZHMsIC8qIHRwX21ldGhvZHMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIGluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfZ2V0c2V0LCAvKiB0cF9nZXRzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwotICAgIChpbml0cHJvYylpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2luaXQsIC8qIHRwX2luaXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgLyogdHBfbmV3ICovCi19OwotCi0KIC8qIFRleHRJT1dyYXBwZXIgKi8KIAotUHlEb2NfU1RSVkFSKHRleHRpb3dyYXBwZXJfZG9jLAotICAgICJDaGFyYWN0ZXIgYW5kIGxpbmUgYmFzZWQgbGF5ZXIgb3ZlciBhIEJ1ZmZlcmVkSU9CYXNlIG9iamVjdCwgYnVmZmVyLlxuIgotICAgICJcbiIKLSAgICAiZW5jb2RpbmcgZ2l2ZXMgdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHRoYXQgdGhlIHN0cmVhbSB3aWxsIGJlXG4iCi0gICAgImRlY29kZWQgb3IgZW5jb2RlZCB3aXRoLiBJdCBkZWZhdWx0cyB0byBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpLlxuIgotICAgICJcbiIKLSAgICAiZXJyb3JzIGRldGVybWluZXMgdGhlIHN0cmljdG5lc3Mgb2YgZW5jb2RpbmcgYW5kIGRlY29kaW5nIChzZWVcbiIKLSAgICAiaGVscChjb2RlY3MuQ29kZWMpIG9yIHRoZSBkb2N1bWVudGF0aW9uIGZvciBjb2RlY3MucmVnaXN0ZXIpIGFuZFxuIgotICAgICJkZWZhdWx0cyB0byBcInN0cmljdFwiLlxuIgotICAgICJcbiIKLSAgICAibmV3bGluZSBjb250cm9scyBob3cgbGluZSBlbmRpbmdzIGFyZSBoYW5kbGVkLiBJdCBjYW4gYmUgTm9uZSwgJycsXG4iCi0gICAgIidcXG4nLCAnXFxyJywgYW5kICdcXHJcXG4nLiAgSXQgd29ya3MgYXMgZm9sbG93czpcbiIKLSAgICAiXG4iCi0gICAgIiogT24gaW5wdXQsIGlmIG5ld2xpbmUgaXMgTm9uZSwgdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgaXNcbiIKLSAgICAiICBlbmFibGVkLiBMaW5lcyBpbiB0aGUgaW5wdXQgY2FuIGVuZCBpbiAnXFxuJywgJ1xccicsIG9yICdcXHJcXG4nLCBhbmRcbiIKLSAgICAiICB0aGVzZSBhcmUgdHJhbnNsYXRlZCBpbnRvICdcXG4nIGJlZm9yZSBiZWluZyByZXR1cm5lZCB0byB0aGVcbiIKLSAgICAiICBjYWxsZXIuIElmIGl0IGlzICcnLCB1bml2ZXJzYWwgbmV3bGluZSBtb2RlIGlzIGVuYWJsZWQsIGJ1dCBsaW5lXG4iCi0gICAgIiAgZW5kaW5ncyBhcmUgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciB1bnRyYW5zbGF0ZWQuIElmIGl0IGhhcyBhbnkgb2ZcbiIKLSAgICAiICB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBpbnB1dCBsaW5lcyBhcmUgb25seSB0ZXJtaW5hdGVkIGJ5IHRoZSBnaXZlblxuIgotICAgICIgIHN0cmluZywgYW5kIHRoZSBsaW5lIGVuZGluZyBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyIHVudHJhbnNsYXRlZC5cbiIKLSAgICAiXG4iCi0gICAgIiogT24gb3V0cHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIGFueSAnXFxuJyBjaGFyYWN0ZXJzIHdyaXR0ZW4gYXJlXG4iCi0gICAgIiAgdHJhbnNsYXRlZCB0byB0aGUgc3lzdGVtIGRlZmF1bHQgbGluZSBzZXBhcmF0b3IsIG9zLmxpbmVzZXAuIElmXG4iCi0gICAgIiAgbmV3bGluZSBpcyAnJyBvciAnXFxuJywgbm8gdHJhbnNsYXRpb24gdGFrZXMgcGxhY2UuIElmIG5ld2xpbmUgaXMgYW55XG4iCi0gICAgIiAgb2YgdGhlIG90aGVyIGxlZ2FsIHZhbHVlcywgYW55ICdcXG4nIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmUgdHJhbnNsYXRlZFxuIgotICAgICIgIHRvIHRoZSBnaXZlbiBzdHJpbmcuXG4iCi0gICAgIlxuIgotICAgICJJZiBsaW5lX2J1ZmZlcmluZyBpcyBUcnVlLCBhIGNhbGwgdG8gZmx1c2ggaXMgaW1wbGllZCB3aGVuIGEgY2FsbCB0b1xuIgotICAgICJ3cml0ZSBjb250YWlucyBhIG5ld2xpbmUgY2hhcmFjdGVyLiIKLSAgICApOwotCiB0eXBlZGVmIFB5T2JqZWN0ICoKICAgICAgICAgKCplbmNvZGVmdW5jX3QpKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogCkBAIC03NDIsNyArNjg2LDYgQEAKICAgICBQeU9iamVjdCAqZGljdDsKIH0gdGV4dGlvOwogCi0KIC8qIEEgY291cGxlIG9mIHNwZWNpYWxpemVkIGNhc2VzIGluIG9yZGVyIHRvIGJ5cGFzcyB0aGUgc2xvdyBpbmNyZW1lbnRhbAogICAgZW5jb2RpbmcgbWV0aG9kcyBmb3IgdGhlIG1vc3QgcG9wdWxhciBlbmNvZGluZ3MuICovCiAKQEAgLTg0MywyOCArNzg2LDU5IEBACiB9OwogCiAKLXN0YXRpYyBpbnQKLXRleHRpb3dyYXBwZXJfaW5pdCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLXsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsiYnVmZmVyIiwgImVuY29kaW5nIiwgImVycm9ycyIsCi0gICAgICAgICAgICAgICAgICAgICAgIm5ld2xpbmUiLCAibGluZV9idWZmZXJpbmciLCAid3JpdGVfdGhyb3VnaCIsCi0gICAgICAgICAgICAgICAgICAgICAgTlVMTH07Ci0gICAgUHlPYmplY3QgKmJ1ZmZlciwgKnJhdywgKmNvZGVjX2luZm8gPSBOVUxMOwotICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKLSAgICBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIGNoYXIgKm5ld2xpbmUgPSBOVUxMOwotICAgIGludCBsaW5lX2J1ZmZlcmluZyA9IDAsIHdyaXRlX3Rocm91Z2ggPSAwOwotICAgIF9QeUlPX1N0YXRlICpzdGF0ZSA9IE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfaW8uVGV4dElPV3JhcHBlci5fX2luaXRfXworICAgIGJ1ZmZlcjogb2JqZWN0CisgICAgZW5jb2Rpbmc6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBuZXdsaW5lOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgbGluZV9idWZmZXJpbmc6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgd3JpdGVfdGhyb3VnaDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKIAorQ2hhcmFjdGVyIGFuZCBsaW5lIGJhc2VkIGxheWVyIG92ZXIgYSBCdWZmZXJlZElPQmFzZSBvYmplY3QsIGJ1ZmZlci4KKworZW5jb2RpbmcgZ2l2ZXMgdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHRoYXQgdGhlIHN0cmVhbSB3aWxsIGJlCitkZWNvZGVkIG9yIGVuY29kZWQgd2l0aC4gSXQgZGVmYXVsdHMgdG8gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKS4KKworZXJyb3JzIGRldGVybWluZXMgdGhlIHN0cmljdG5lc3Mgb2YgZW5jb2RpbmcgYW5kIGRlY29kaW5nIChzZWUKK2hlbHAoY29kZWNzLkNvZGVjKSBvciB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgY29kZWNzLnJlZ2lzdGVyKSBhbmQKK2RlZmF1bHRzIHRvICJzdHJpY3QiLgorCituZXdsaW5lIGNvbnRyb2xzIGhvdyBsaW5lIGVuZGluZ3MgYXJlIGhhbmRsZWQuIEl0IGNhbiBiZSBOb25lLCAnJywKKydcbicsICdccicsIGFuZCAnXHJcbicuICBJdCB3b3JrcyBhcyBmb2xsb3dzOgorCisqIE9uIGlucHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlIGlzCisgIGVuYWJsZWQuIExpbmVzIGluIHRoZSBpbnB1dCBjYW4gZW5kIGluICdcbicsICdccicsIG9yICdcclxuJywgYW5kCisgIHRoZXNlIGFyZSB0cmFuc2xhdGVkIGludG8gJ1xuJyBiZWZvcmUgYmVpbmcgcmV0dXJuZWQgdG8gdGhlCisgIGNhbGxlci4gSWYgaXQgaXMgJycsIHVuaXZlcnNhbCBuZXdsaW5lIG1vZGUgaXMgZW5hYmxlZCwgYnV0IGxpbmUKKyAgZW5kaW5ncyBhcmUgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciB1bnRyYW5zbGF0ZWQuIElmIGl0IGhhcyBhbnkgb2YKKyAgdGhlIG90aGVyIGxlZ2FsIHZhbHVlcywgaW5wdXQgbGluZXMgYXJlIG9ubHkgdGVybWluYXRlZCBieSB0aGUgZ2l2ZW4KKyAgc3RyaW5nLCBhbmQgdGhlIGxpbmUgZW5kaW5nIGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLgorCisqIE9uIG91dHB1dCwgaWYgbmV3bGluZSBpcyBOb25lLCBhbnkgJ1xuJyBjaGFyYWN0ZXJzIHdyaXR0ZW4gYXJlCisgIHRyYW5zbGF0ZWQgdG8gdGhlIHN5c3RlbSBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yLCBvcy5saW5lc2VwLiBJZgorICBuZXdsaW5lIGlzICcnIG9yICdcbicsIG5vIHRyYW5zbGF0aW9uIHRha2VzIHBsYWNlLiBJZiBuZXdsaW5lIGlzIGFueQorICBvZiB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBhbnkgJ1xuJyBjaGFyYWN0ZXJzIHdyaXR0ZW4gYXJlIHRyYW5zbGF0ZWQKKyAgdG8gdGhlIGdpdmVuIHN0cmluZy4KKworSWYgbGluZV9idWZmZXJpbmcgaXMgVHJ1ZSwgYSBjYWxsIHRvIGZsdXNoIGlzIGltcGxpZWQgd2hlbiBhIGNhbGwgdG8KK3dyaXRlIGNvbnRhaW5zIGEgbmV3bGluZSBjaGFyYWN0ZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19pb19UZXh0SU9XcmFwcGVyX19faW5pdF9fX2ltcGwodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuZXdsaW5lLCBpbnQgbGluZV9idWZmZXJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3cml0ZV90aHJvdWdoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU2YTgzNDAyY2UyYTgzODEgaW5wdXQ9MzEyNmNiMzEwMWEyYzk5Yl0qLworeworICAgIFB5T2JqZWN0ICpyYXcsICpjb2RlY19pbmZvID0gTlVMTDsKKyAgICBfUHlJT19TdGF0ZSAqc3RhdGUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgaW50IHI7CiAKICAgICBzZWxmLT5vayA9IDA7CiAgICAgc2VsZi0+ZGV0YWNoZWQgPSAwOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfHp6emlpOmZpbGVpbyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmYnVmZmVyLCAmZW5jb2RpbmcsICZlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld2xpbmUsICZsaW5lX2J1ZmZlcmluZywgJndyaXRlX3Rocm91Z2gpKQotICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAobmV3bGluZSAmJiBuZXdsaW5lWzBdICE9ICdcMCcKICAgICAgICAgJiYgIShuZXdsaW5lWzBdID09ICdcbicgJiYgbmV3bGluZVsxXSA9PSAnXDAnKQpAQCAtMTAyMSw4ICs5OTUsNyBAQAogICAgICAgICAgICAgICAgICJPaSIsIHNlbGYtPmRlY29kZXIsIChpbnQpc2VsZi0+cmVhZHRyYW5zbGF0ZSk7CiAgICAgICAgICAgICBpZiAoaW5jcmVtZW50YWxEZWNvZGVyID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIFB5X0NMRUFSKHNlbGYtPmRlY29kZXIpOwotICAgICAgICAgICAgc2VsZi0+ZGVjb2RlciA9IGluY3JlbWVudGFsRGVjb2RlcjsKKyAgICAgICAgICAgIFB5X1NFVFJFRihzZWxmLT5kZWNvZGVyLCBpbmNyZW1lbnRhbERlY29kZXIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMjQ0LDggKzEyMTcsMTMgQEAKICAgICB9CiAKIAorLypbY2xpbmljIGlucHV0XQorX2lvLlRleHRJT1dyYXBwZXIuZGV0YWNoCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi10ZXh0aW93cmFwcGVyX2RldGFjaCh0ZXh0aW8gKnNlbGYpCitfaW9fVGV4dElPV3JhcHBlcl9kZXRhY2hfaW1wbCh0ZXh0aW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2JhMzcxNWNkMDMyZDVmMiBpbnB1dD1lNWE3MWZiZGE5ZTFkOWY5XSovCiB7CiAgICAgUHlPYmplY3QgKmJ1ZmZlciwgKnJlczsKICAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKQEAgLTEyOTAsMjUgKzEyNjgsMjYgQEAKICAgICByZXR1cm4gMDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLlRleHRJT1dyYXBwZXIud3JpdGUKKyAgICB0ZXh0OiB1bmljb2RlCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl93cml0ZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfd3JpdGVfaW1wbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICp0ZXh0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQyZGViMGQ1MDc3MWZjZWMgaW5wdXQ9ZmRmMTkxNTM1ODRhMGU0NF0qLwogewogICAgIFB5T2JqZWN0ICpyZXQ7Ci0gICAgUHlPYmplY3QgKnRleHQ7IC8qIG93bmVkIHJlZmVyZW5jZSAqLwogICAgIFB5T2JqZWN0ICpiOwogICAgIFB5X3NzaXplX3QgdGV4dGxlbjsKICAgICBpbnQgaGFzbGYgPSAwOwogICAgIGludCBuZWVkZmx1c2ggPSAwLCB0ZXh0X25lZWRmbHVzaCA9IDA7CiAKLSAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTp3cml0ZSIsICZ0ZXh0KSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHRleHQpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIENIRUNLX0FUVEFDSEVEKHNlbGYpOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAogICAgIGlmIChzZWxmLT5lbmNvZGVyID09IE5VTEwpCkBAIC0xMzk0LDggKzEzNzMsNyBAQAogc3RhdGljIHZvaWQKIHRleHRpb3dyYXBwZXJfc2V0X2RlY29kZWRfY2hhcnModGV4dGlvICpzZWxmLCBQeU9iamVjdCAqY2hhcnMpCiB7Ci0gICAgUHlfQ0xFQVIoc2VsZi0+ZGVjb2RlZF9jaGFycyk7Ci0gICAgc2VsZi0+ZGVjb2RlZF9jaGFycyA9IGNoYXJzOworICAgIFB5X1NFVFJFRihzZWxmLT5kZWNvZGVkX2NoYXJzLCBjaGFycyk7CiAgICAgc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkID0gMDsKIH0KIApAQCAtMTQ0MSw2ICsxNDE5LDcgQEAKICAgICBQeU9iamVjdCAqZGVjX2J1ZmZlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmRlY19mbGFncyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmlucHV0X2NodW5rID0gTlVMTDsKKyAgICBQeV9idWZmZXIgaW5wdXRfY2h1bmtfYnVmOwogICAgIFB5T2JqZWN0ICpkZWNvZGVkX2NoYXJzLCAqY2h1bmtfc2l6ZTsKICAgICBQeV9zc2l6ZV90IG5ieXRlcywgbmNoYXJzOwogICAgIGludCBlb2Y7CkBAIC0xNDY4LDcgKzE0NDcsMTYgQEAKICAgICAgICAgLyogR2l2ZW4gdGhpcywgd2Uga25vdyB0aGVyZSB3YXMgYSB2YWxpZCBzbmFwc2hvdCBwb2ludAogICAgICAgICAgKiBsZW4oZGVjX2J1ZmZlcikgYnl0ZXMgYWdvIHdpdGggZGVjb2RlciBzdGF0ZSAoYicnLCBkZWNfZmxhZ3MpLgogICAgICAgICAgKi8KLSAgICAgICAgaWYgKFB5QXJnX1BhcnNlKHN0YXRlLCAiKE9PKSIsICZkZWNfYnVmZmVyLCAmZGVjX2ZsYWdzKSA8IDApIHsKKyAgICAgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJPTyIsICZkZWNfYnVmZmVyLCAmZGVjX2ZsYWdzKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soZGVjX2J1ZmZlcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImRlY29kZXIgZ2V0c3RhdGUoKSBzaG91bGQgaGF2ZSByZXR1cm5lZCBhIGJ5dGVzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0LCBub3QgJyUuMjAwcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoZGVjX2J1ZmZlciktPnRwX25hbWUpOwogICAgICAgICAgICAgUHlfREVDUkVGKHN0YXRlKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpAQCAtMTQ4NCwyMyArMTQ3MiwyNCBAQAogICAgIGNodW5rX3NpemUgPSBQeUxvbmdfRnJvbVNzaXplX3QoUHlfTUFYKHNlbGYtPmNodW5rX3NpemUsIHNpemVfaGludCkpOwogICAgIGlmIChjaHVua19zaXplID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbDsKKwogICAgIGlucHV0X2NodW5rID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+YnVmZmVyLAogICAgICAgICAoc2VsZi0+aGFzX3JlYWQxID8gX1B5SU9fc3RyX3JlYWQxOiBfUHlJT19zdHJfcmVhZCksCiAgICAgICAgIGNodW5rX3NpemUsIE5VTEwpOwogICAgIFB5X0RFQ1JFRihjaHVua19zaXplKTsKICAgICBpZiAoaW5wdXRfY2h1bmsgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsOwotICAgIGlmICghUHlCeXRlc19DaGVjayhpbnB1dF9jaHVuaykpIHsKKworICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoaW5wdXRfY2h1bmssICZpbnB1dF9jaHVua19idWYsIDApICE9IDApIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJ1bmRlcmx5aW5nICVzKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgYSBieXRlcyBvYmplY3QsICIKKyAgICAgICAgICAgICAgICAgICAgICJ1bmRlcmx5aW5nICVzKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgYSBieXRlcy1saWtlIG9iamVjdCwgIgogICAgICAgICAgICAgICAgICAgICAgIm5vdCAnJS4yMDBzJyIsIChzZWxmLT5oYXNfcmVhZDEgPyAicmVhZDEiOiAicmVhZCIpLAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShpbnB1dF9jaHVuayktPnRwX25hbWUpOwogICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQogCi0gICAgbmJ5dGVzID0gUHlCeXRlc19TaXplKGlucHV0X2NodW5rKTsKKyAgICBuYnl0ZXMgPSBpbnB1dF9jaHVua19idWYubGVuOwogICAgIGVvZiA9IChuYnl0ZXMgPT0gMCk7Ci0KICAgICBpZiAoUHlfVFlQRShzZWxmLT5kZWNvZGVyKSA9PSAmUHlJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX1R5cGUpIHsKICAgICAgICAgZGVjb2RlZF9jaGFycyA9IF9QeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlKAogICAgICAgICAgICAgc2VsZi0+ZGVjb2RlciwgaW5wdXRfY2h1bmssIGVvZik7CkBAIC0xNTA5LDYgKzE0OTgsNyBAQAogICAgICAgICBkZWNvZGVkX2NoYXJzID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+ZGVjb2RlciwKICAgICAgICAgICAgIF9QeUlPX3N0cl9kZWNvZGUsIGlucHV0X2NodW5rLCBlb2YgPyBQeV9UcnVlIDogUHlfRmFsc2UsIE5VTEwpOwogICAgIH0KKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZpbnB1dF9jaHVua19idWYpOwogCiAgICAgaWYgKGNoZWNrX2RlY29kZWQoZGVjb2RlZF9jaGFycykgPCAwKQogICAgICAgICBnb3RvIGZhaWw7CkBAIC0xNTI1LDIwICsxNTE1LDEzIEBACiAgICAgICAgIC8qIEF0IHRoZSBzbmFwc2hvdCBwb2ludCwgbGVuKGRlY19idWZmZXIpIGJ5dGVzIGJlZm9yZSB0aGUgcmVhZCwgdGhlCiAgICAgICAgICAqIG5leHQgaW5wdXQgdG8gYmUgZGVjb2RlZCBpcyBkZWNfYnVmZmVyICsgaW5wdXRfY2h1bmsuCiAgICAgICAgICAqLwotICAgICAgICBQeU9iamVjdCAqbmV4dF9pbnB1dCA9IFB5TnVtYmVyX0FkZChkZWNfYnVmZmVyLCBpbnB1dF9jaHVuayk7Ci0gICAgICAgIGlmIChuZXh0X2lucHV0ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIGlmICghUHlCeXRlc19DaGVjayhuZXh0X2lucHV0KSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjb2RlciBnZXRzdGF0ZSgpIHNob3VsZCBoYXZlIHJldHVybmVkIGEgYnl0ZXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QsIG5vdCAnJS4yMDBzJyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShuZXh0X2lucHV0KS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobmV4dF9pbnB1dCk7CisgICAgICAgIFB5T2JqZWN0ICpuZXh0X2lucHV0ID0gZGVjX2J1ZmZlcjsKKyAgICAgICAgUHlCeXRlc19Db25jYXQoJm5leHRfaW5wdXQsIGlucHV0X2NodW5rKTsKKyAgICAgICAgaWYgKG5leHRfaW5wdXQgPT0gTlVMTCkgeworICAgICAgICAgICAgZGVjX2J1ZmZlciA9IE5VTEw7IC8qIFJlZmVyZW5jZSBsb3N0IHRvIFB5Qnl0ZXNfQ29uY2F0ICovCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKGRlY19idWZmZXIpOwotICAgICAgICBQeV9DTEVBUihzZWxmLT5zbmFwc2hvdCk7Ci0gICAgICAgIHNlbGYtPnNuYXBzaG90ID0gUHlfQnVpbGRWYWx1ZSgiTk4iLCBkZWNfZmxhZ3MsIG5leHRfaW5wdXQpOworICAgICAgICBQeV9TRVRSRUYoc2VsZi0+c25hcHNob3QsIFB5X0J1aWxkVmFsdWUoIk5OIiwgZGVjX2ZsYWdzLCBuZXh0X2lucHV0KSk7CiAgICAgfQogICAgIFB5X0RFQ1JFRihpbnB1dF9jaHVuayk7CiAKQEAgLTE1NTEsMTcgKzE1MzQsMTkgQEAKICAgICByZXR1cm4gLTE7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLnJlYWQKKyAgICBzaXplIGFzIG46IGlvX3NzaXplX3QgPSAtMQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfcmVhZCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfcmVhZF9pbXBsKHRleHRpbyAqc2VsZiwgUHlfc3NpemVfdCBuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdlNjUxY2U2Y2M2YTI1YTYgaW5wdXQ9OGMwOTM5ODQyNDA4NWNjYV0qLwogewotICAgIFB5X3NzaXplX3QgbiA9IC0xOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMLCAqY2h1bmtzID0gTlVMTDsKIAogICAgIENIRUNLX0FUVEFDSEVEKHNlbGYpOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsICZfUHlJT19Db252ZXJ0U3NpemVfdCwgJm4pKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAogICAgIGlmIChzZWxmLT5kZWNvZGVyID09IE5VTEwpCkBAIC0xNjQyLDggKzE2MjcsNyBAQAogICAgICAgICBpZiAoY2h1bmtzICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCAmJiBQeUxpc3RfQXBwZW5kKGNodW5rcywgcmVzdWx0KSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgUHlfQ0xFQVIocmVzdWx0KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Kb2luKF9QeUlPX2VtcHR5X3N0ciwgY2h1bmtzKTsKKyAgICAgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIFB5VW5pY29kZV9Kb2luKF9QeUlPX2VtcHR5X3N0ciwgY2h1bmtzKSk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICAgICAgUHlfQ0xFQVIoY2h1bmtzKTsKQEAgLTE3MjUsNyArMTcwOSw3IEBACiAgICAgZWxzZSB7CiAgICAgICAgIC8qIE5vbi11bml2ZXJzYWwgbW9kZS4gKi8KICAgICAgICAgUHlfc3NpemVfdCByZWFkbmxfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVhZG5sKTsKLSAgICAgICAgY2hhciAqbmwgPSBQeVVuaWNvZGVfREFUQShyZWFkbmwpOworICAgICAgICBQeV9VQ1MxICpubCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJlYWRubCk7CiAgICAgICAgIC8qIEFzc3VtZSB0aGF0IHJlYWRubCBpcyBhbiBBU0NJSSBjaGFyYWN0ZXIuICovCiAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChyZWFkbmwpID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKICAgICAgICAgaWYgKHJlYWRubF9sZW4gPT0gMSkgewpAQCAtMTkyNywxNiArMTkxMSwxOCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl9yZWFkbGluZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X3NzaXplX3QgbGltaXQgPSAtMTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLnJlYWRsaW5lCisgICAgc2l6ZTogUHlfc3NpemVfdCA9IC0xCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfcmVhZGxpbmVfaW1wbCh0ZXh0aW8gKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNDRhZmE5ODgwNGU4YjI1IGlucHV0PTU2YzcxNzI0ODNiMzZkYjZdKi8KK3sKICAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnJlYWRsaW5lIiwgJmxpbWl0KSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIF90ZXh0aW93cmFwcGVyX3JlYWRsaW5lKHNlbGYsIGxpbWl0KTsKKyAgICByZXR1cm4gX3RleHRpb3dyYXBwZXJfcmVhZGxpbmUoc2VsZiwgc2l6ZSk7CiB9CiAKIC8qIFNlZWsgYW5kIFRlbGwgKi8KQEAgLTIwNjgsMTkgKzIwNTQsMjMgQEAKICAgICAgICAgc2VsZiwgY29va2llLT5zdGFydF9wb3MgPT0gMCAmJiBjb29raWUtPmRlY19mbGFncyA9PSAwKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLlRleHRJT1dyYXBwZXIuc2VlaworICAgIGNvb2tpZSBhcyBjb29raWVPYmo6IG9iamVjdAorICAgIHdoZW5jZTogaW50ID0gMAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfc2Vlayh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfc2Vla19pbXBsKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmNvb2tpZU9iaiwgaW50IHdoZW5jZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYTE1Njc5NzY0ZTJkMDRkIGlucHV0PTA0NThhYmViM2Q3ODQyYmVdKi8KIHsKLSAgICBQeU9iamVjdCAqY29va2llT2JqLCAqcG9zb2JqOworICAgIFB5T2JqZWN0ICpwb3NvYmo7CiAgICAgY29va2llX3R5cGUgY29va2llOwotICAgIGludCB3aGVuY2UgPSAwOwogICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgaW50IGNtcDsKIAogICAgIENIRUNLX0FUVEFDSEVEKHNlbGYpOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6c2VlayIsICZjb29raWVPYmosICZ3aGVuY2UpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAKICAgICBQeV9JTkNSRUYoY29va2llT2JqKTsKQEAgLTIyNTIsOCArMjI0MiwxMyBAQAogCiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLnRlbGwKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfdGVsbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfdGVsbF9pbXBsKHRleHRpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZjE2OGMwOGJmMzRhZDVmIGlucHV0PTlhMmNhZjg4YzI0ZjlkZGZdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzOwogICAgIFB5T2JqZWN0ICpwb3NvYmogPSBOVUxMOwpAQCAtMjI2Myw3ICsyMjU4LDYgQEAKICAgICBQeV9zc2l6ZV90IHNraXBfYnl0ZXMsIHNraXBfYmFjazsKICAgICBQeU9iamVjdCAqc2F2ZWRfc3RhdGUgPSBOVUxMOwogICAgIGNoYXIgKmlucHV0LCAqaW5wdXRfZW5kOwotICAgIGNoYXIgKmRlY19idWZmZXI7CiAgICAgUHlfc3NpemVfdCBkZWNfYnVmZmVyX2xlbjsKICAgICBpbnQgZGVjX2ZsYWdzOwogCkBAIC0yMzA2LDcgKzIzMDAsNyBAQAogICAgICAgICBnb3RvIGZhaWw7CiAKICAgICAvKiBTa2lwIGJhY2t3YXJkIHRvIHRoZSBzbmFwc2hvdCBwb2ludCAoc2VlIF9yZWFkX2NodW5rKS4gKi8KLSAgICBpZiAoIVB5QXJnX1BhcnNlKHNlbGYtPnNuYXBzaG90LCAiKGlPKSIsICZjb29raWUuZGVjX2ZsYWdzLCAmbmV4dF9pbnB1dCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHNlbGYtPnNuYXBzaG90LCAiaU8iLCAmY29va2llLmRlY19mbGFncywgJm5leHRfaW5wdXQpKQogICAgICAgICBnb3RvIGZhaWw7CiAKICAgICBhc3NlcnQgKFB5Qnl0ZXNfQ2hlY2sobmV4dF9pbnB1dCkpOwpAQCAtMjMyOCwxNCArMjMyMiwyNCBAQAogICAgICAgICBnb3RvIGZhaWw7CiAKICNkZWZpbmUgREVDT0RFUl9HRVRTVEFURSgpIGRvIHsgXAorICAgICAgICBQeU9iamVjdCAqZGVjX2J1ZmZlcjsgXAogICAgICAgICBQeU9iamVjdCAqX3N0YXRlID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+ZGVjb2RlciwgXAogICAgICAgICAgICAgX1B5SU9fc3RyX2dldHN0YXRlLCBOVUxMKTsgXAogICAgICAgICBpZiAoX3N0YXRlID09IE5VTEwpIFwKICAgICAgICAgICAgIGdvdG8gZmFpbDsgXAotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKF9zdGF0ZSwgIih5I2kpIiwgJmRlY19idWZmZXIsICZkZWNfYnVmZmVyX2xlbiwgJmRlY19mbGFncykpIHsgXAorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoX3N0YXRlLCAiT2kiLCAmZGVjX2J1ZmZlciwgJmRlY19mbGFncykpIHsgXAogICAgICAgICAgICAgUHlfREVDUkVGKF9zdGF0ZSk7IFwKICAgICAgICAgICAgIGdvdG8gZmFpbDsgXAogICAgICAgICB9IFwKKyAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKGRlY19idWZmZXIpKSB7IFwKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjb2RlciBnZXRzdGF0ZSgpIHNob3VsZCBoYXZlIHJldHVybmVkIGEgYnl0ZXMgIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCwgbm90ICclLjIwMHMnIiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoZGVjX2J1ZmZlciktPnRwX25hbWUpOyBcCisgICAgICAgICAgICBQeV9ERUNSRUYoX3N0YXRlKTsgXAorICAgICAgICAgICAgZ290byBmYWlsOyBcCisgICAgICAgIH0gXAorICAgICAgICBkZWNfYnVmZmVyX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoZGVjX2J1ZmZlcik7IFwKICAgICAgICAgUHlfREVDUkVGKF9zdGF0ZSk7IFwKICAgICB9IHdoaWxlICgwKQogCkBAIC0yNDYwLDE2ICsyNDY0LDE5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLnRydW5jYXRlCisgICAgcG9zOiBvYmplY3QgPSBOb25lCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl90cnVuY2F0ZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfdHJ1bmNhdGVfaW1wbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpwb3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTBlYzJhZmI5YmI3NzQ1ZiBpbnB1dD01NmVjOGJhYTY1YWVhMzc3XSovCiB7Ci0gICAgUHlPYmplY3QgKnBvcyA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKnJlczsKIAogICAgIENIRUNLX0FUVEFDSEVEKHNlbGYpCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8Tzp0cnVuY2F0ZSIsICZwb3MpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKChQeU9iamVjdCAqKSBzZWxmLCBfUHlJT19zdHJfZmx1c2gsIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKQEAgLTI1MzQsMzYgKzI1NDEsNjEgQEAKIAogLyogSW5xdWlyaWVzICovCiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLmZpbGVubworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl9maWxlbm8odGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19UZXh0SU9XcmFwcGVyX2ZpbGVub19pbXBsKHRleHRpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMTQ5MGE0YzNkYTEzZTZjIGlucHV0PWM0ODhjYTgzZDAwNjlmOWJdKi8KIHsKICAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX2ZpbGVubywgTlVMTCk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLnNlZWthYmxlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi10ZXh0aW93cmFwcGVyX3NlZWthYmxlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fVGV4dElPV3JhcHBlcl9zZWVrYWJsZV9pbXBsKHRleHRpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hYjIyM2RiYmNmZmMwZjAwIGlucHV0PThiMDA1Y2EwNmUxZmNhMTNdKi8KIHsKICAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX3NlZWthYmxlLCBOVUxMKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLlRleHRJT1dyYXBwZXIucmVhZGFibGUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfcmVhZGFibGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19UZXh0SU9XcmFwcGVyX3JlYWRhYmxlX2ltcGwodGV4dGlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTcyZmY3YmEyODlhOGE5MWIgaW5wdXQ9MDcwNGVhN2UwMWIwZDNlYl0qLwogewogICAgIENIRUNLX0FUVEFDSEVEKHNlbGYpOwogICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfcmVhZGFibGUsIE5VTEwpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uVGV4dElPV3JhcHBlci53cml0YWJsZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl93cml0YWJsZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfd3JpdGFibGVfaW1wbCh0ZXh0aW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTcyOGM3MTc5MGQwMzIwMCBpbnB1dD1jNDE3NDBiYzlkODYzNmU4XSovCiB7CiAgICAgQ0hFQ0tfQVRUQUNIRUQoc2VsZik7CiAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF93cml0YWJsZSwgTlVMTCk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLmlzYXR0eQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl9pc2F0dHkodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19UZXh0SU9XcmFwcGVyX2lzYXR0eV9pbXBsKHRleHRpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMmJlMWEzNWJhY2U4ODJlIGlucHV0PWZiNjhkOWYyYzk5YmJmZmZdKi8KIHsKICAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX2lzYXR0eSwgTlVMTCk7CkBAIC0yNTc3LDggKzI2MDksMTMgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLlRleHRJT1dyYXBwZXIuZmx1c2gKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfZmx1c2godGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19UZXh0SU9XcmFwcGVyX2ZsdXNoX2ltcGwodGV4dGlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU5ZGU5MTY1ZjljMmU0ZDIgaW5wdXQ9OTI4YzYwNTkwNjk0YWI4NV0qLwogewogICAgIENIRUNLX0FUVEFDSEVEKHNlbGYpOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKQEAgLTI1ODgsOCArMjYyNSwxMyBAQAogICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfZmx1c2gsIE5VTEwpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uVGV4dElPV3JhcHBlci5jbG9zZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl9jbG9zZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfY2xvc2VfaW1wbCh0ZXh0aW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDU2Y2NmOGI0ODc2ZTRmNCBpbnB1dD05YzIxMTQzMTVlYWUxOTQ4XSovCiB7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBpbnQgcjsKQEAgLTI3MzMsMjQgKzI3NzUsODEgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIFB5TWV0aG9kRGVmIHRleHRpb3dyYXBwZXJfbWV0aG9kc1tdID0gewotICAgIHsiZGV0YWNoIiwgKFB5Q0Z1bmN0aW9uKXRleHRpb3dyYXBwZXJfZGV0YWNoLCBNRVRIX05PQVJHU30sCi0gICAgeyJ3cml0ZSIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX3dyaXRlLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX3JlYWQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZmx1c2giLCAoUHlDRnVuY3Rpb24pdGV4dGlvd3JhcHBlcl9mbHVzaCwgTUVUSF9OT0FSR1N9LAotICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pdGV4dGlvd3JhcHBlcl9jbG9zZSwgTUVUSF9OT0FSR1N9LAorI2luY2x1ZGUgImNsaW5pYy90ZXh0aW8uYy5oIgogCi0gICAgeyJmaWxlbm8iLCAoUHlDRnVuY3Rpb24pdGV4dGlvd3JhcHBlcl9maWxlbm8sIE1FVEhfTk9BUkdTfSwKLSAgICB7InNlZWthYmxlIiwgKFB5Q0Z1bmN0aW9uKXRleHRpb3dyYXBwZXJfc2Vla2FibGUsIE1FVEhfTk9BUkdTfSwKLSAgICB7InJlYWRhYmxlIiwgKFB5Q0Z1bmN0aW9uKXRleHRpb3dyYXBwZXJfcmVhZGFibGUsIE1FVEhfTk9BUkdTfSwKLSAgICB7IndyaXRhYmxlIiwgKFB5Q0Z1bmN0aW9uKXRleHRpb3dyYXBwZXJfd3JpdGFibGUsIE1FVEhfTk9BUkdTfSwKLSAgICB7ImlzYXR0eSIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX2lzYXR0eSwgTUVUSF9OT0FSR1N9LAorc3RhdGljIFB5TWV0aG9kRGVmIGluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfbWV0aG9kc1tdID0geworICAgIF9JT19JTkNSRU1FTlRBTE5FV0xJTkVERUNPREVSX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfSU9fSU5DUkVNRU5UQUxORVdMSU5FREVDT0RFUl9HRVRTVEFURV9NRVRIT0RERUYKKyAgICBfSU9fSU5DUkVNRU5UQUxORVdMSU5FREVDT0RFUl9TRVRTVEFURV9NRVRIT0RERUYKKyAgICBfSU9fSU5DUkVNRU5UQUxORVdMSU5FREVDT0RFUl9SRVNFVF9NRVRIT0RERUYKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeUdldFNldERlZiBpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2dldHNldFtdID0geworICAgIHsibmV3bGluZXMiLCAoZ2V0dGVyKWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfbmV3bGluZXNfZ2V0LCBOVUxMLCBOVUxMfSwKKyAgICB7TlVMTH0KK307CisKK1B5VHlwZU9iamVjdCBQeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLCAvKnRwX25hbWUqLworICAgIHNpemVvZihubGRlY29kZXJfb2JqZWN0KSwgLyp0cF9iYXNpY3NpemUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KKyAgICAoZGVzdHJ1Y3RvcilpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSwgIC8qdHBfZmxhZ3MqLworICAgIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX19faW5pdF9fX19kb2NfXywgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgaW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9tZXRob2RzLCAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2dldHNldCwgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9fX2luaXRfXywgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworc3RhdGljIFB5TWV0aG9kRGVmIHRleHRpb3dyYXBwZXJfbWV0aG9kc1tdID0geworICAgIF9JT19URVhUSU9XUkFQUEVSX0RFVEFDSF9NRVRIT0RERUYKKyAgICBfSU9fVEVYVElPV1JBUFBFUl9XUklURV9NRVRIT0RERUYKKyAgICBfSU9fVEVYVElPV1JBUFBFUl9SRUFEX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX1JFQURMSU5FX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX0ZMVVNIX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX0NMT1NFX01FVEhPRERFRgorCisgICAgX0lPX1RFWFRJT1dSQVBQRVJfRklMRU5PX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX1NFRUtBQkxFX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX1JFQURBQkxFX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX1dSSVRBQkxFX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX0lTQVRUWV9NRVRIT0RERUYKICAgICB7Il9fZ2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX2dldHN0YXRlLCBNRVRIX05PQVJHU30sCiAKLSAgICB7InNlZWsiLCAoUHlDRnVuY3Rpb24pdGV4dGlvd3JhcHBlcl9zZWVrLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsidGVsbCIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX3RlbGwsIE1FVEhfTk9BUkdTfSwKLSAgICB7InRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKXRleHRpb3dyYXBwZXJfdHJ1bmNhdGUsIE1FVEhfVkFSQVJHU30sCisgICAgX0lPX1RFWFRJT1dSQVBQRVJfU0VFS19NRVRIT0RERUYKKyAgICBfSU9fVEVYVElPV1JBUFBFUl9URUxMX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX1RSVU5DQVRFX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfQogfTsKIApAQCAtMjc5Niw3ICsyODk1LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKICAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsIC8qdHBfZmxhZ3MqLwotICAgIHRleHRpb3dyYXBwZXJfZG9jLCAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICBfaW9fVGV4dElPV3JhcHBlcl9fX2luaXRfX19fZG9jX18sIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpdGV4dGlvd3JhcHBlcl90cmF2ZXJzZSwgLyogdHBfdHJhdmVyc2UgKi8KICAgICAoaW5xdWlyeSl0ZXh0aW93cmFwcGVyX2NsZWFyLCAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwpAQCAtMjgxMSw3ICsyOTEwLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwogICAgIG9mZnNldG9mKHRleHRpbywgZGljdCksIC8qdHBfZGljdG9mZnNldCovCi0gICAgKGluaXRwcm9jKXRleHRpb3dyYXBwZXJfaW5pdCwgLyogdHBfaW5pdCAqLworICAgIF9pb19UZXh0SU9XcmFwcGVyX19faW5pdF9fLCAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCiAgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19qc29uLmMgYi9Nb2R1bGVzL19qc29uLmMKaW5kZXggZGRlZDJjOS4uZjYzZDc1OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fanNvbi5jCisrKyBiL01vZHVsZXMvX2pzb24uYwpAQCAtNDcsNyArNDcsNyBAQAogICAgIFB5T2JqZWN0ICppdGVtX3NlcGFyYXRvcjsKICAgICBQeU9iamVjdCAqc29ydF9rZXlzOwogICAgIFB5T2JqZWN0ICpza2lwa2V5czsKLSAgICBpbnQgZmFzdF9lbmNvZGU7CisgICAgUHlDRnVuY3Rpb24gZmFzdF9lbmNvZGU7CiAgICAgaW50IGFsbG93X25hbjsKIH0gUHlFbmNvZGVyT2JqZWN0OwogCkBAIC0yMjUsMjYgKzIyNSwxMjIgQEAKICAgICByZXR1cm4gcnZhbDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2VzY2FwZV91bmljb2RlKFB5T2JqZWN0ICpweXN0cikKK3sKKyAgICAvKiBUYWtlIGEgUHlVbmljb2RlIHB5c3RyIGFuZCByZXR1cm4gYSBuZXcgZXNjYXBlZCBQeVVuaWNvZGUgKi8KKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlfc3NpemVfdCBpbnB1dF9jaGFyczsKKyAgICBQeV9zc2l6ZV90IG91dHB1dF9zaXplOworICAgIFB5X3NzaXplX3QgY2hhcnM7CisgICAgUHlPYmplY3QgKnJ2YWw7CisgICAgdm9pZCAqaW5wdXQ7CisgICAgaW50IGtpbmQ7CisgICAgUHlfVUNTNCBtYXhjaGFyOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShweXN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShweXN0cik7CisgICAgaW5wdXRfY2hhcnMgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChweXN0cik7CisgICAgaW5wdXQgPSBQeVVuaWNvZGVfREFUQShweXN0cik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHB5c3RyKTsKKworICAgIC8qIENvbXB1dGUgdGhlIG91dHB1dCBzaXplICovCisgICAgZm9yIChpID0gMCwgb3V0cHV0X3NpemUgPSAyOyBpIDwgaW5wdXRfY2hhcnM7IGkrKykgeworICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBpbnB1dCwgaSk7CisgICAgICAgIFB5X3NzaXplX3QgZDsKKyAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgIGNhc2UgJ1xcJzogY2FzZSAnIic6IGNhc2UgJ1xiJzogY2FzZSAnXGYnOgorICAgICAgICBjYXNlICdcbic6IGNhc2UgJ1xyJzogY2FzZSAnXHQnOgorICAgICAgICAgICAgZCA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmIChjIDw9IDB4MWYpCisgICAgICAgICAgICAgICAgZCA9IDY7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG91dHB1dF9zaXplID4gUFlfU1NJWkVfVF9NQVggLSBkKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInN0cmluZyBpcyB0b28gbG9uZyB0byBlc2NhcGUiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIG91dHB1dF9zaXplICs9IGQ7CisgICAgfQorCisgICAgcnZhbCA9IFB5VW5pY29kZV9OZXcob3V0cHV0X3NpemUsIG1heGNoYXIpOworICAgIGlmIChydmFsID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHJ2YWwpOworCisjZGVmaW5lIEVOQ09ERV9PVVRQVVQgZG8geyBcCisgICAgICAgIGNoYXJzID0gMDsgXAorICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAnIic7IFwKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGlucHV0X2NoYXJzOyBpKyspIHsgXAorICAgICAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgaW5wdXQsIGkpOyBcCisgICAgICAgICAgICBzd2l0Y2ggKGMpIHsgXAorICAgICAgICAgICAgY2FzZSAnXFwnOiBvdXRwdXRbY2hhcnMrK10gPSAnXFwnOyBvdXRwdXRbY2hhcnMrK10gPSBjOyBicmVhazsgXAorICAgICAgICAgICAgY2FzZSAnIic6ICBvdXRwdXRbY2hhcnMrK10gPSAnXFwnOyBvdXRwdXRbY2hhcnMrK10gPSBjOyBicmVhazsgXAorICAgICAgICAgICAgY2FzZSAnXGInOiBvdXRwdXRbY2hhcnMrK10gPSAnXFwnOyBvdXRwdXRbY2hhcnMrK10gPSAnYic7IGJyZWFrOyBcCisgICAgICAgICAgICBjYXNlICdcZic6IG91dHB1dFtjaGFycysrXSA9ICdcXCc7IG91dHB1dFtjaGFycysrXSA9ICdmJzsgYnJlYWs7IFwKKyAgICAgICAgICAgIGNhc2UgJ1xuJzogb3V0cHV0W2NoYXJzKytdID0gJ1xcJzsgb3V0cHV0W2NoYXJzKytdID0gJ24nOyBicmVhazsgXAorICAgICAgICAgICAgY2FzZSAnXHInOiBvdXRwdXRbY2hhcnMrK10gPSAnXFwnOyBvdXRwdXRbY2hhcnMrK10gPSAncic7IGJyZWFrOyBcCisgICAgICAgICAgICBjYXNlICdcdCc6IG91dHB1dFtjaGFycysrXSA9ICdcXCc7IG91dHB1dFtjaGFycysrXSA9ICd0JzsgYnJlYWs7IFwKKyAgICAgICAgICAgIGRlZmF1bHQ6IFwKKyAgICAgICAgICAgICAgICBpZiAoYyA8PSAweDFmKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gJ1xcJzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAndSc7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gJzAnOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICcwJzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSBQeV9oZXhkaWdpdHNbKGMgPj4gNCkgJiAweGZdOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyAgICAgKSAmIDB4Zl07IFwKKyAgICAgICAgICAgICAgICB9IGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IGM7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gJyInOyBcCisgICAgfSB3aGlsZSAoMCkKKworICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgIFB5X1VDUzEgKm91dHB1dCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJ2YWwpOworICAgICAgICBFTkNPREVfT1VUUFVUOworICAgIH0gZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICBQeV9VQ1MyICpvdXRwdXQgPSBQeVVuaWNvZGVfMkJZVEVfREFUQShydmFsKTsKKyAgICAgICAgRU5DT0RFX09VVFBVVDsKKyAgICB9IGVsc2UgeworICAgICAgICBQeV9VQ1M0ICpvdXRwdXQgPSBQeVVuaWNvZGVfNEJZVEVfREFUQShydmFsKTsKKyAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICBFTkNPREVfT1VUUFVUOworICAgIH0KKyN1bmRlZiBFTkNPREVfT1VUUFVUCisKKyNpZmRlZiBQeV9ERUJVRworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocnZhbCwgMSkpOworI2VuZGlmCisgICAgcmV0dXJuIHJ2YWw7Cit9CisKIHN0YXRpYyB2b2lkCiByYWlzZV9lcnJtc2coY2hhciAqbXNnLCBQeU9iamVjdCAqcywgUHlfc3NpemVfdCBlbmQpCiB7Ci0gICAgLyogVXNlIHRoZSBQeXRob24gZnVuY3Rpb24ganNvbi5kZWNvZGVyLmVycm1zZyB0byByYWlzZSBhIG5pY2UKLSAgICBsb29raW5nIFZhbHVlRXJyb3IgZXhjZXB0aW9uICovCi0gICAgc3RhdGljIFB5T2JqZWN0ICplcnJtc2dfZm4gPSBOVUxMOwotICAgIFB5T2JqZWN0ICpweW1zZzsKLSAgICBpZiAoZXJybXNnX2ZuID09IE5VTEwpIHsKKyAgICAvKiBVc2UgSlNPTkRlY29kZUVycm9yIGV4Y2VwdGlvbiB0byByYWlzZSBhIG5pY2UgbG9va2luZyBWYWx1ZUVycm9yIHN1YmNsYXNzICovCisgICAgc3RhdGljIFB5T2JqZWN0ICpKU09ORGVjb2RlRXJyb3IgPSBOVUxMOworICAgIFB5T2JqZWN0ICpleGM7CisgICAgaWYgKEpTT05EZWNvZGVFcnJvciA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpkZWNvZGVyID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJqc29uLmRlY29kZXIiKTsKICAgICAgICAgaWYgKGRlY29kZXIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZXJybXNnX2ZuID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhkZWNvZGVyLCAiZXJybXNnIik7CisgICAgICAgIEpTT05EZWNvZGVFcnJvciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZGVjb2RlciwgIkpTT05EZWNvZGVFcnJvciIpOwogICAgICAgICBQeV9ERUNSRUYoZGVjb2Rlcik7Ci0gICAgICAgIGlmIChlcnJtc2dfZm4gPT0gTlVMTCkKKyAgICAgICAgaWYgKEpTT05EZWNvZGVFcnJvciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBweW1zZyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihlcnJtc2dfZm4sICIoek9uKSIsIG1zZywgcywgZW5kKTsKLSAgICBpZiAocHltc2cpIHsKLSAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX1ZhbHVlRXJyb3IsIHB5bXNnKTsKLSAgICAgICAgUHlfREVDUkVGKHB5bXNnKTsKKyAgICBleGMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oSlNPTkRlY29kZUVycm9yLCAiKHpPbikiLCBtc2csIHMsIGVuZCk7CisgICAgaWYgKGV4YykgeworICAgICAgICBQeUVycl9TZXRPYmplY3QoSlNPTkRlY29kZUVycm9yLCBleGMpOworICAgICAgICBQeV9ERUNSRUYoZXhjKTsKICAgICB9CiB9CiAKQEAgLTUzNyw2ICs2MzMsMzEgQEAKICAgICByZXR1cm4gcnZhbDsKIH0KIAorCitQeURvY19TVFJWQVIocHlkb2NfZW5jb2RlX2Jhc2VzdHJpbmcsCisgICAgImVuY29kZV9iYXNlc3RyaW5nKHN0cmluZykgLT4gc3RyaW5nXG4iCisgICAgIlxuIgorICAgICJSZXR1cm4gYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgUHl0aG9uIHN0cmluZyIKKyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9lbmNvZGVfYmFzZXN0cmluZyhQeU9iamVjdCogc2VsZiBVTlVTRUQsIFB5T2JqZWN0ICpweXN0cikKK3sKKyAgICBQeU9iamVjdCAqcnZhbDsKKyAgICAvKiBSZXR1cm4gYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgUHl0aG9uIHN0cmluZyAqLworICAgIC8qIE1FVEhfTyAqLworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2socHlzdHIpKSB7CisgICAgICAgIHJ2YWwgPSBlc2NhcGVfdW5pY29kZShweXN0cik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIG5vdCAlLjgwcyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHB5c3RyKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gcnZhbDsKK30KKwogc3RhdGljIHZvaWQKIHNjYW5uZXJfZGVhbGxvYyhQeU9iamVjdCAqc2VsZikKIHsKQEAgLTcxNSw3ICs4MzYsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BhcnNlX2FycmF5X3VuaWNvZGUoUHlTY2FubmVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcHlzdHIsIFB5X3NzaXplX3QgaWR4LCBQeV9zc2l6ZV90ICpuZXh0X2lkeF9wdHIpIHsKLSAgICAvKiBSZWFkIGEgSlNPTiBhcnJheSBmcm9tIFB5U3RyaW5nIHB5c3RyLgorICAgIC8qIFJlYWQgYSBKU09OIGFycmF5IGZyb20gUHlVbmljb2RlIHB5c3RyLgogICAgIGlkeCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgb3BlbmluZyBicmFjZS4KICAgICAqbmV4dF9pZHhfcHRyIGlzIGEgcmV0dXJuLWJ5LXJlZmVyZW5jZSBpbmRleCB0byB0aGUgZmlyc3QgY2hhcmFjdGVyIGFmdGVyCiAgICAgICAgIHRoZSBjbG9zaW5nIGJyYWNlLgpAQCAtNzg3LDggKzkwOCw4IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fcGFyc2VfY29uc3RhbnQoUHlTY2FubmVyT2JqZWN0ICpzLCBjaGFyICpjb25zdGFudCwgUHlfc3NpemVfdCBpZHgsIFB5X3NzaXplX3QgKm5leHRfaWR4X3B0cikgewotICAgIC8qIFJlYWQgYSBKU09OIGNvbnN0YW50IGZyb20gUHlTdHJpbmcgcHlzdHIuCitfcGFyc2VfY29uc3RhbnQoUHlTY2FubmVyT2JqZWN0ICpzLCBjb25zdCBjaGFyICpjb25zdGFudCwgUHlfc3NpemVfdCBpZHgsIFB5X3NzaXplX3QgKm5leHRfaWR4X3B0cikgeworICAgIC8qIFJlYWQgYSBKU09OIGNvbnN0YW50LgogICAgIGNvbnN0YW50IGlzIHRoZSBjb25zdGFudCBzdHJpbmcgdGhhdCB3YXMgZm91bmQKICAgICAgICAgKCJOYU4iLCAiSW5maW5pdHkiLCAiLUluZmluaXR5IikuCiAgICAgaWR4IGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBjb25zdGFudApAQCAtODIwLDcgKzk0MSw3IEBACiAgICAgICAgIHRoZSBudW1iZXIuCiAKICAgICBSZXR1cm5zIGEgbmV3IFB5T2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoYXQgbnVtYmVyOgotICAgICAgICBQeUludCwgUHlMb25nLCBvciBQeUZsb2F0LgorICAgICAgICBQeUxvbmcsIG9yIFB5RmxvYXQuCiAgICAgICAgIE1heSByZXR1cm4gb3RoZXIgdHlwZXMgaWYgcGFyc2VfaW50IG9yIHBhcnNlX2Zsb2F0IGFyZSBzZXQKICAgICAqLwogICAgIHZvaWQgKnN0cjsKQEAgLTEyNDQsNyArMTM2NSwxNCBAQAogICAgIHMtPml0ZW1fc2VwYXJhdG9yID0gaXRlbV9zZXBhcmF0b3I7CiAgICAgcy0+c29ydF9rZXlzID0gc29ydF9rZXlzOwogICAgIHMtPnNraXBrZXlzID0gc2tpcGtleXM7Ci0gICAgcy0+ZmFzdF9lbmNvZGUgPSAoUHlDRnVuY3Rpb25fQ2hlY2socy0+ZW5jb2RlcikgJiYgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24ocy0+ZW5jb2RlcikgPT0gKFB5Q0Z1bmN0aW9uKXB5X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpKTsKKyAgICBzLT5mYXN0X2VuY29kZSA9IE5VTEw7CisgICAgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKHMtPmVuY29kZXIpKSB7CisgICAgICAgIFB5Q0Z1bmN0aW9uIGYgPSBQeUNGdW5jdGlvbl9HZXRGdW5jdGlvbihzLT5lbmNvZGVyKTsKKyAgICAgICAgaWYgKGYgPT0gKFB5Q0Z1bmN0aW9uKXB5X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpIHx8CisgICAgICAgICAgICAgICAgZiA9PSAoUHlDRnVuY3Rpb24pcHlfZW5jb2RlX2Jhc2VzdHJpbmcpIHsKKyAgICAgICAgICAgIHMtPmZhc3RfZW5jb2RlID0gZjsKKyAgICAgICAgfQorICAgIH0KICAgICBzLT5hbGxvd19uYW4gPSBhbGxvd19uYW47CiAKICAgICBQeV9JTkNSRUYocy0+bWFya2Vycyk7CkBAIC0xMzkzLDcgKzE1MjEsNyBAQAogewogICAgIC8qIFJldHVybiB0aGUgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIHN0cmluZyAqLwogICAgIGlmIChzLT5mYXN0X2VuY29kZSkKLSAgICAgICAgcmV0dXJuIHB5X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpKE5VTEwsIG9iaik7CisgICAgICAgIHJldHVybiBzLT5mYXN0X2VuY29kZShOVUxMLCBvYmopOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Mocy0+ZW5jb2Rlciwgb2JqLCBOVUxMKTsKIH0KQEAgLTE4NDAsNiArMTk2OCwxMCBAQAogICAgICAgICAoUHlDRnVuY3Rpb24pcHlfZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWksCiAgICAgICAgIE1FVEhfTywKICAgICAgICAgcHlkb2NfZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWl9LAorICAgIHsiZW5jb2RlX2Jhc2VzdHJpbmciLAorICAgICAgICAoUHlDRnVuY3Rpb24pcHlfZW5jb2RlX2Jhc2VzdHJpbmcsCisgICAgICAgIE1FVEhfTywKKyAgICAgICAgcHlkb2NfZW5jb2RlX2Jhc2VzdHJpbmd9LAogICAgIHsic2NhbnN0cmluZyIsCiAgICAgICAgIChQeUNGdW5jdGlvbilweV9zY2Fuc3RyaW5nLAogICAgICAgICBNRVRIX1ZBUkFSR1MsCkBAIC0xODYyLDcgKzE5OTQsNyBAQAogICAgICAgICBOVUxMCiB9OwogCi1QeU9iamVjdCoKK1B5TU9ESU5JVF9GVU5DCiBQeUluaXRfX2pzb24odm9pZCkKIHsKICAgICBQeU9iamVjdCAqbSA9IFB5TW9kdWxlX0NyZWF0ZSgmanNvbm1vZHVsZSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19sc3Byb2YuYyBiL01vZHVsZXMvX2xzcHJvZi5jCmluZGV4IDAxMzdkOTUuLjY2ZTUzNGYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2xzcHJvZi5jCisrKyBiL01vZHVsZXMvX2xzcHJvZi5jCkBAIC0yMDIsNiArMjAyLDggQEAKICAgICAgICAgKi8KICAgICAgICAgUHlPYmplY3QgKnNlbGYgPSBmbi0+bV9zZWxmOwogICAgICAgICBQeU9iamVjdCAqbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGZuLT5tX21sLT5tbF9uYW1lKTsKKyAgICAgICAgUHlPYmplY3QgKm1vZG5hbWUgPSBmbi0+bV9tb2R1bGU7CisKICAgICAgICAgaWYgKG5hbWUgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlPYmplY3QgKm1vID0gX1B5VHlwZV9Mb29rdXAoUHlfVFlQRShzZWxmKSwgbmFtZSk7CiAgICAgICAgICAgICBQeV9YSU5DUkVGKG1vKTsKQEAgLTIxMyw5ICsyMTUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlczsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAvKiBPdGhlcndpc2UsIHVzZSBfX21vZHVsZV9fICovCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPGJ1aWx0LWluIG1ldGhvZCAlcz4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm4tPm1fbWwtPm1sX25hbWUpOworICAgICAgICBpZiAobW9kbmFtZSAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVjayhtb2RuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPGJ1aWx0LWluIG1ldGhvZCAlUy4lcz4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZG5hbWUsICBmbi0+bV9tbC0+bWxfbmFtZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPGJ1aWx0LWluIG1ldGhvZCAlcz4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuLT5tX21sLT5tbF9uYW1lKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2x6bWFtb2R1bGUuYyBiL01vZHVsZXMvX2x6bWFtb2R1bGUuYwppbmRleCBjNDM2NzZhLi45YmM4MDMzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19sem1hbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fbHptYW1vZHVsZS5jCkBAIC02Niw2ICs2Niw5IEBACiAgICAgaW50IGNoZWNrOwogICAgIGNoYXIgZW9mOwogICAgIFB5T2JqZWN0ICp1bnVzZWRfZGF0YTsKKyAgICBjaGFyIG5lZWRzX2lucHV0OworICAgIHVpbnQ4X3QgKmlucHV0X2J1ZmZlcjsKKyAgICBzaXplX3QgaW5wdXRfYnVmZmVyX3NpemU7CiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKICNlbmRpZgpAQCAtMTQyLDEwICsxNDUsMTUgQEAKICNlbmRpZgogCiBzdGF0aWMgaW50Ci1ncm93X2J1ZmZlcihQeU9iamVjdCAqKmJ1ZikKK2dyb3dfYnVmZmVyKFB5T2JqZWN0ICoqYnVmLCBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCiB7Ci0gICAgc2l6ZV90IHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKCpidWYpOwotICAgIHJldHVybiBfUHlCeXRlc19SZXNpemUoYnVmLCBzaXplICsgKHNpemUgPj4gMykgKyA2KTsKKyAgICBQeV9zc2l6ZV90IHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKCpidWYpOworICAgIFB5X3NzaXplX3QgbmV3c2l6ZSA9IHNpemUgKyAoc2l6ZSA+PiAzKSArIDY7CisKKyAgICBpZiAobWF4X2xlbmd0aCA+IDAgJiYgbmV3c2l6ZSA+IG1heF9sZW5ndGgpCisgICAgICAgIG5ld3NpemUgPSBtYXhfbGVuZ3RoOworCisgICAgcmV0dXJuIF9QeUJ5dGVzX1Jlc2l6ZShidWYsIG5ld3NpemUpOwogfQogCiAKQEAgLTQ3MCwxMiArNDc4LDExIEBACiAKIAogLypbY2xpbmljIGlucHV0XQotb3V0cHV0IHByZXNldCBmaWxlCiBtb2R1bGUgX2x6bWEKIGNsYXNzIF9sem1hLkxaTUFDb21wcmVzc29yICJDb21wcmVzc29yICoiICImQ29tcHJlc3Nvcl90eXBlIgogY2xhc3MgX2x6bWEuTFpNQURlY29tcHJlc3NvciAiRGVjb21wcmVzc29yICoiICImRGVjb21wcmVzc29yX3R5cGUiCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1mMTdhZmM3ODY1MjVkNmMyXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0yYzE0YmJlMDVmZjBjMTQ3XSovCiAKICNpbmNsdWRlICJjbGluaWMvX2x6bWFtb2R1bGUuYy5oIgogCkBAIC01MDQsNyArNTExLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBjb21wcmVzcyhDb21wcmVzc29yICpjLCB1aW50OF90ICpkYXRhLCBzaXplX3QgbGVuLCBsem1hX2FjdGlvbiBhY3Rpb24pCiB7Ci0gICAgc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CisgICAgUHlfc3NpemVfdCBkYXRhX3NpemUgPSAwOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIElOSVRJQUxfQlVGRkVSX1NJWkUpOwpAQCAtNTI3LDcgKzUzNCw3IEBACiAgICAgICAgICAgICAoYWN0aW9uID09IExaTUFfRklOSVNIICYmIGx6cmV0ID09IExaTUFfU1RSRUFNX0VORCkpIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9IGVsc2UgaWYgKGMtPmx6cy5hdmFpbF9vdXQgPT0gMCkgewotICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpID09IC0xKQorICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQsIC0xKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgYy0+bHpzLm5leHRfb3V0ID0gKHVpbnQ4X3QgKilQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOwogICAgICAgICAgICAgYy0+bHpzLmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKQEAgLTg4OCwyNSArODk1LDMzIEBACiAKIC8qIExaTUFEZWNvbXByZXNzb3IgY2xhc3MuICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1kZWNvbXByZXNzKERlY29tcHJlc3NvciAqZCwgdWludDhfdCAqZGF0YSwgc2l6ZV90IGxlbikKKy8qIERlY29tcHJlc3MgZGF0YSBvZiBsZW5ndGggZC0+bHpzLmF2YWlsX2luIGluIGQtPmx6cy5uZXh0X2luLiAgVGhlIG91dHB1dAorICAgYnVmZmVyIGlzIGFsbG9jYXRlZCBkeW5hbWljYWxseSBhbmQgcmV0dXJuZWQuICBBdCBtb3N0IG1heF9sZW5ndGggYnl0ZXMgYXJlCisgICByZXR1cm5lZCwgc28gc29tZSBvZiB0aGUgaW5wdXQgbWF5IG5vdCBiZSBjb25zdW1lZC4gZC0+bHpzLm5leHRfaW4gYW5kCisgICBkLT5senMuYXZhaWxfaW4gYXJlIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aGUgY29uc3VtZWQgaW5wdXQuICovCitzdGF0aWMgUHlPYmplY3QqCitkZWNvbXByZXNzX2J1ZihEZWNvbXByZXNzb3IgKmQsIFB5X3NzaXplX3QgbWF4X2xlbmd0aCkKIHsKLSAgICBzaXplX3QgZGF0YV9zaXplID0gMDsKKyAgICBQeV9zc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBsem1hX3N0cmVhbSAqbHpzID0gJmQtPmx6czsKIAotICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgSU5JVElBTF9CVUZGRVJfU0laRSk7CisgICAgaWYgKG1heF9sZW5ndGggPCAwIHx8IG1heF9sZW5ndGggPj0gSU5JVElBTF9CVUZGRVJfU0laRSkKKyAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBJTklUSUFMX0JVRkZFUl9TSVpFKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbWF4X2xlbmd0aCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBkLT5senMubmV4dF9pbiA9IGRhdGE7Ci0gICAgZC0+bHpzLmF2YWlsX2luID0gbGVuOwotICAgIGQtPmx6cy5uZXh0X291dCA9ICh1aW50OF90ICopUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICBkLT5senMuYXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpOworCisgICAgbHpzLT5uZXh0X291dCA9ICh1aW50OF90ICopUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICBsenMtPmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KTsKKwogICAgIGZvciAoOzspIHsKICAgICAgICAgbHptYV9yZXQgbHpyZXQ7CiAKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBsenJldCA9IGx6bWFfY29kZSgmZC0+bHpzLCBMWk1BX1JVTik7Ci0gICAgICAgIGRhdGFfc2l6ZSA9IChjaGFyICopZC0+bHpzLm5leHRfb3V0IC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICAgICAgbHpyZXQgPSBsem1hX2NvZGUobHpzLCBMWk1BX1JVTik7CisgICAgICAgIGRhdGFfc2l6ZSA9IChjaGFyICopbHpzLT5uZXh0X291dCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC05MTQsMjYgKzkyOSwxMzAgQEAKICAgICAgICAgICAgIGQtPmNoZWNrID0gbHptYV9nZXRfY2hlY2soJmQtPmx6cyk7CiAgICAgICAgIGlmIChsenJldCA9PSBMWk1BX1NUUkVBTV9FTkQpIHsKICAgICAgICAgICAgIGQtPmVvZiA9IDE7Ci0gICAgICAgICAgICBpZiAoZC0+bHpzLmF2YWlsX2luID4gMCkgewotICAgICAgICAgICAgICAgIFB5X0NMRUFSKGQtPnVudXNlZF9kYXRhKTsKLSAgICAgICAgICAgICAgICBkLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoCi0gICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKWQtPmx6cy5uZXh0X2luLCBkLT5senMuYXZhaWxfaW4pOwotICAgICAgICAgICAgICAgIGlmIChkLT51bnVzZWRfZGF0YSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZSBpZiAoZC0+bHpzLmF2YWlsX2luID09IDApIHsKKyAgICAgICAgfSBlbHNlIGlmIChsenMtPmF2YWlsX2luID09IDApIHsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgaWYgKGQtPmx6cy5hdmFpbF9vdXQgPT0gMCkgewotICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpID09IC0xKQorICAgICAgICB9IGVsc2UgaWYgKGx6cy0+YXZhaWxfb3V0ID09IDApIHsKKyAgICAgICAgICAgIGlmIChkYXRhX3NpemUgPT0gbWF4X2xlbmd0aCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChncm93X2J1ZmZlcigmcmVzdWx0LCBtYXhfbGVuZ3RoKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgZC0+bHpzLm5leHRfb3V0ID0gKHVpbnQ4X3QgKilQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOwotICAgICAgICAgICAgZC0+bHpzLmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKKyAgICAgICAgICAgIGx6cy0+bmV4dF9vdXQgPSAodWludDhfdCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkgKyBkYXRhX3NpemU7CisgICAgICAgICAgICBsenMtPmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoZGF0YV9zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSkKICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBkYXRhX3NpemUpID09IC0xKQogICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJldHVybiByZXN1bHQ7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY29tcHJlc3MoRGVjb21wcmVzc29yICpkLCB1aW50OF90ICpkYXRhLCBzaXplX3QgbGVuLCBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCit7CisgICAgY2hhciBpbnB1dF9idWZmZXJfaW5fdXNlOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgbHptYV9zdHJlYW0gKmx6cyA9ICZkLT5senM7CisKKyAgICAvKiBQcmVwZW5kIHVuY29uc3VtZWQgaW5wdXQgaWYgbmVjZXNzYXJ5ICovCisgICAgaWYgKGx6cy0+bmV4dF9pbiAhPSBOVUxMKSB7CisgICAgICAgIHNpemVfdCBhdmFpbF9ub3csIGF2YWlsX3RvdGFsOworCisgICAgICAgIC8qIE51bWJlciBvZiBieXRlcyB3ZSBjYW4gYXBwZW5kIHRvIGlucHV0IGJ1ZmZlciAqLworICAgICAgICBhdmFpbF9ub3cgPSAoZC0+aW5wdXRfYnVmZmVyICsgZC0+aW5wdXRfYnVmZmVyX3NpemUpCisgICAgICAgICAgICAtIChsenMtPm5leHRfaW4gKyBsenMtPmF2YWlsX2luKTsKKworICAgICAgICAvKiBOdW1iZXIgb2YgYnl0ZXMgd2UgY2FuIGFwcGVuZCBpZiB3ZSBtb3ZlIGV4aXN0aW5nCisgICAgICAgICAgIGNvbnRlbnRzIHRvIGJlZ2lubmluZyBvZiBidWZmZXIgKG92ZXJ3cml0aW5nCisgICAgICAgICAgIGNvbnN1bWVkIGlucHV0KSAqLworICAgICAgICBhdmFpbF90b3RhbCA9IGQtPmlucHV0X2J1ZmZlcl9zaXplIC0gbHpzLT5hdmFpbF9pbjsKKworICAgICAgICBpZiAoYXZhaWxfdG90YWwgPCBsZW4pIHsKKyAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBsenMtPm5leHRfaW4gLSBkLT5pbnB1dF9idWZmZXI7CisgICAgICAgICAgICB1aW50OF90ICp0bXA7CisgICAgICAgICAgICBzaXplX3QgbmV3X3NpemUgPSBkLT5pbnB1dF9idWZmZXJfc2l6ZSArIGxlbiAtIGF2YWlsX25vdzsKKworICAgICAgICAgICAgLyogQXNzaWduIHRvIHRlbXBvcmFyeSB2YXJpYWJsZSBmaXJzdCwgc28gd2UgZG9uJ3QKKyAgICAgICAgICAgICAgIGxvc2UgYWRkcmVzcyBvZiBhbGxvY2F0ZWQgYnVmZmVyIGlmIHJlYWxsb2MgZmFpbHMgKi8KKyAgICAgICAgICAgIHRtcCA9IFB5TWVtX1JlYWxsb2MoZC0+aW5wdXRfYnVmZmVyLCBuZXdfc2l6ZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX01lbW9yeUVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGQtPmlucHV0X2J1ZmZlciA9IHRtcDsKKyAgICAgICAgICAgIGQtPmlucHV0X2J1ZmZlcl9zaXplID0gbmV3X3NpemU7CisKKyAgICAgICAgICAgIGx6cy0+bmV4dF9pbiA9IGQtPmlucHV0X2J1ZmZlciArIG9mZnNldDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChhdmFpbF9ub3cgPCBsZW4pIHsKKyAgICAgICAgICAgIG1lbW1vdmUoZC0+aW5wdXRfYnVmZmVyLCBsenMtPm5leHRfaW4sCisgICAgICAgICAgICAgICAgICAgIGx6cy0+YXZhaWxfaW4pOworICAgICAgICAgICAgbHpzLT5uZXh0X2luID0gZC0+aW5wdXRfYnVmZmVyOworICAgICAgICB9CisgICAgICAgIG1lbWNweSgodm9pZCopKGx6cy0+bmV4dF9pbiArIGx6cy0+YXZhaWxfaW4pLCBkYXRhLCBsZW4pOworICAgICAgICBsenMtPmF2YWlsX2luICs9IGxlbjsKKyAgICAgICAgaW5wdXRfYnVmZmVyX2luX3VzZSA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBsenMtPm5leHRfaW4gPSBkYXRhOworICAgICAgICBsenMtPmF2YWlsX2luID0gbGVuOworICAgICAgICBpbnB1dF9idWZmZXJfaW5fdXNlID0gMDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBkZWNvbXByZXNzX2J1ZihkLCBtYXhfbGVuZ3RoKTsKKyAgICBpZihyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZC0+ZW9mKSB7CisgICAgICAgIGQtPm5lZWRzX2lucHV0ID0gMDsKKyAgICAgICAgaWYgKGx6cy0+YXZhaWxfaW4gPiAwKSB7CisgICAgICAgICAgICBQeV9TRVRSRUYoZC0+dW51c2VkX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKWx6cy0+bmV4dF9pbiwgbHpzLT5hdmFpbF9pbikpOworICAgICAgICAgICAgaWYgKGQtPnVudXNlZF9kYXRhID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChsenMtPmF2YWlsX2luID09IDApIHsKKyAgICAgICAgbHpzLT5uZXh0X2luID0gTlVMTDsKKyAgICAgICAgZC0+bmVlZHNfaW5wdXQgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZC0+bmVlZHNfaW5wdXQgPSAwOworCisgICAgICAgIC8qIElmIHdlIGRpZCBub3QgdXNlIHRoZSBpbnB1dCBidWZmZXIsIHdlIG5vdyBoYXZlCisgICAgICAgICAgIHRvIGNvcHkgdGhlIHRhaWwgZnJvbSB0aGUgY2FsbGVyJ3MgYnVmZmVyIGludG8gdGhlCisgICAgICAgICAgIGlucHV0IGJ1ZmZlciAqLworICAgICAgICBpZiAoIWlucHV0X2J1ZmZlcl9pbl91c2UpIHsKKworICAgICAgICAgICAgLyogRGlzY2FyZCBidWZmZXIgaWYgaXQncyB0b28gc21hbGwKKyAgICAgICAgICAgICAgIChyZXNpemluZyBpdCBtYXkgbmVlZGxlc3NseSBjb3B5IHRoZSBjdXJyZW50IGNvbnRlbnRzKSAqLworICAgICAgICAgICAgaWYgKGQtPmlucHV0X2J1ZmZlciAhPSBOVUxMICYmCisgICAgICAgICAgICAgICAgZC0+aW5wdXRfYnVmZmVyX3NpemUgPCBsenMtPmF2YWlsX2luKSB7CisgICAgICAgICAgICAgICAgUHlNZW1fRnJlZShkLT5pbnB1dF9idWZmZXIpOworICAgICAgICAgICAgICAgIGQtPmlucHV0X2J1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIEFsbG9jYXRlIGlmIG5lY2Vzc2FyeSAqLworICAgICAgICAgICAgaWYgKGQtPmlucHV0X2J1ZmZlciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZC0+aW5wdXRfYnVmZmVyID0gUHlNZW1fTWFsbG9jKGx6cy0+YXZhaWxfaW4pOworICAgICAgICAgICAgICAgIGlmIChkLT5pbnB1dF9idWZmZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX01lbW9yeUVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZC0+aW5wdXRfYnVmZmVyX3NpemUgPSBsenMtPmF2YWlsX2luOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBDb3B5IHRhaWwgKi8KKyAgICAgICAgICAgIG1lbWNweShkLT5pbnB1dF9idWZmZXIsIGx6cy0+bmV4dF9pbiwgbHpzLT5hdmFpbF9pbik7CisgICAgICAgICAgICBsenMtPm5leHRfaW4gPSBkLT5pbnB1dF9idWZmZXI7CisgICAgICAgIH0KKyAgICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogCiBlcnJvcjoKQEAgLTk0NiwyMCArMTA2NSwyOCBAQAogCiAgICAgc2VsZjogc2VsZih0eXBlPSJEZWNvbXByZXNzb3IgKiIpCiAgICAgZGF0YTogUHlfYnVmZmVyCi0gICAgLworICAgIG1heF9sZW5ndGg6IFB5X3NzaXplX3Q9LTEKIAotUHJvdmlkZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LgorRGVjb21wcmVzcyAqZGF0YSosIHJldHVybmluZyB1bmNvbXByZXNzZWQgZGF0YSBhcyBieXRlcy4KIAotUmV0dXJucyBhIGNodW5rIG9mIGRlY29tcHJlc3NlZCBkYXRhIGlmIHBvc3NpYmxlLCBvciBiJycgb3RoZXJ3aXNlLgorSWYgKm1heF9sZW5ndGgqIGlzIG5vbm5lZ2F0aXZlLCByZXR1cm5zIGF0IG1vc3QgKm1heF9sZW5ndGgqIGJ5dGVzIG9mCitkZWNvbXByZXNzZWQgZGF0YS4gSWYgdGhpcyBsaW1pdCBpcyByZWFjaGVkIGFuZCBmdXJ0aGVyIG91dHB1dCBjYW4gYmUKK3Byb2R1Y2VkLCAqc2VsZi5uZWVkc19pbnB1dCogd2lsbCBiZSBzZXQgdG8gYGBGYWxzZWBgLiBJbiB0aGlzIGNhc2UsIHRoZSBuZXh0CitjYWxsIHRvICpkZWNvbXByZXNzKCkqIG1heSBwcm92aWRlICpkYXRhKiBhcyBiJycgdG8gb2J0YWluIG1vcmUgb2YgdGhlIG91dHB1dC4KIAotQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0gaXMgcmVhY2hlZAotcmFpc2VzIGFuIEVPRkVycm9yLiAgQW55IGRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc3RyZWFtCi1pcyBpZ25vcmVkIGFuZCBzYXZlZCBpbiB0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLgorSWYgYWxsIG9mIHRoZSBpbnB1dCBkYXRhIHdhcyBkZWNvbXByZXNzZWQgYW5kIHJldHVybmVkIChlaXRoZXIgYmVjYXVzZSB0aGlzCit3YXMgbGVzcyB0aGFuICptYXhfbGVuZ3RoKiBieXRlcywgb3IgYmVjYXVzZSAqbWF4X2xlbmd0aCogd2FzIG5lZ2F0aXZlKSwKKypzZWxmLm5lZWRzX2lucHV0KiB3aWxsIGJlIHNldCB0byBUcnVlLgorCitBdHRlbXB0aW5nIHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlciB0aGUgZW5kIG9mIHN0cmVhbSBpcyByZWFjaGVkIHJhaXNlcyBhbgorRU9GRXJyb3IuICBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gaXMgaWdub3JlZCBhbmQgc2F2ZWQgaW4KK3RoZSB1bnVzZWRfZGF0YSBhdHRyaWJ1dGUuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChEZWNvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kODZlNzhkYTdmZjBmZjIxIGlucHV0PTUwYzQ3NjhiODIxYmYwZWZdKi8KK19sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKERlY29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVmNGUyMGVjNzEyMjI0MWQgaW5wdXQ9ZjJiYjkwMmNjMWNhZjIwM10qLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCkBAIC05NjcsNyArMTA5NCw3IEBACiAgICAgaWYgKHNlbGYtPmVvZikKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0VPRkVycm9yLCAiQWxyZWFkeSBhdCBlbmQgb2Ygc3RyZWFtIik7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBkZWNvbXByZXNzKHNlbGYsIGRhdGEtPmJ1ZiwgZGF0YS0+bGVuKTsKKyAgICAgICAgcmVzdWx0ID0gZGVjb21wcmVzcyhzZWxmLCBkYXRhLT5idWYsIGRhdGEtPmxlbiwgbWF4X2xlbmd0aCk7CiAgICAgUkVMRUFTRV9MT0NLKHNlbGYpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMDIzLDggKzExNTAsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgaW50Ci1fbHptYV9MWk1BRGVjb21wcmVzc29yX19faW5pdF9fX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBpbnQgZm9ybWF0LCBQeU9iamVjdCAqbWVtbGltaXQsIFB5T2JqZWN0ICpmaWx0ZXJzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTliMTE5ZjZmMmNjMmQ3YTggaW5wdXQ9NDU4Y2E2MTMyZWYyOTgwMV0qLworX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKERlY29tcHJlc3NvciAqc2VsZiwgaW50IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWVtbGltaXQsIFB5T2JqZWN0ICpmaWx0ZXJzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNlMTgyMWY4YWEzNjU2NGMgaW5wdXQ9NDU4Y2E2MTMyZWYyOTgwMV0qLwogewogICAgIGNvbnN0IHVpbnQzMl90IGRlY29kZXJfZmxhZ3MgPSBMWk1BX1RFTExfQU5ZX0NIRUNLIHwgTFpNQV9URUxMX05PX0NIRUNLOwogICAgIHVpbnQ2NF90IG1lbWxpbWl0XyA9IFVJTlQ2NF9NQVg7CkBAIC0xMDU1LDYgKzExODMsNyBAQAogICAgIHNlbGYtPmFsbG9jLmFsbG9jID0gUHlMem1hX01hbGxvYzsKICAgICBzZWxmLT5hbGxvYy5mcmVlID0gUHlMem1hX0ZyZWU7CiAgICAgc2VsZi0+bHpzLmFsbG9jYXRvciA9ICZzZWxmLT5hbGxvYzsKKyAgICBzZWxmLT5senMubmV4dF9pbiA9IE5VTEw7CiAKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CkBAIC0xMDY1LDYgKzExOTQsOSBAQAogI2VuZGlmCiAKICAgICBzZWxmLT5jaGVjayA9IExaTUFfQ0hFQ0tfVU5LTk9XTjsKKyAgICBzZWxmLT5uZWVkc19pbnB1dCA9IDE7CisgICAgc2VsZi0+aW5wdXRfYnVmZmVyID0gTlVMTDsKKyAgICBzZWxmLT5pbnB1dF9idWZmZXJfc2l6ZSA9IDA7CiAgICAgc2VsZi0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogICAgIGlmIChzZWxmLT51bnVzZWRfZGF0YSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwpAQCAtMTExMyw2ICsxMjQ1LDkgQEAKIHN0YXRpYyB2b2lkCiBEZWNvbXByZXNzb3JfZGVhbGxvYyhEZWNvbXByZXNzb3IgKnNlbGYpCiB7CisgICAgaWYoc2VsZi0+aW5wdXRfYnVmZmVyICE9IE5VTEwpCisgICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+aW5wdXRfYnVmZmVyKTsKKwogICAgIGx6bWFfZW5kKCZzZWxmLT5senMpOwogICAgIFB5X0NMRUFSKHNlbGYtPnVudXNlZF9kYXRhKTsKICNpZmRlZiBXSVRIX1RIUkVBRApAQCAtMTEzNCw2ICsxMjY5LDkgQEAKIFB5RG9jX1NUUlZBUihEZWNvbXByZXNzb3JfZW9mX2RvYywKICJUcnVlIGlmIHRoZSBlbmQtb2Ytc3RyZWFtIG1hcmtlciBoYXMgYmVlbiByZWFjaGVkLiIpOwogCitQeURvY19TVFJWQVIoRGVjb21wcmVzc29yX25lZWRzX2lucHV0X2RvYywKKyJUcnVlIGlmIG1vcmUgaW5wdXQgaXMgbmVlZGVkIGJlZm9yZSBtb3JlIGRlY29tcHJlc3NlZCBkYXRhIGNhbiBiZSBwcm9kdWNlZC4iKTsKKwogUHlEb2NfU1RSVkFSKERlY29tcHJlc3Nvcl91bnVzZWRfZGF0YV9kb2MsCiAiRGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4iKTsKIApAQCAtMTE0Miw2ICsxMjgwLDggQEAKICAgICAgRGVjb21wcmVzc29yX2NoZWNrX2RvY30sCiAgICAgeyJlb2YiLCBUX0JPT0wsIG9mZnNldG9mKERlY29tcHJlc3NvciwgZW9mKSwgUkVBRE9OTFksCiAgICAgIERlY29tcHJlc3Nvcl9lb2ZfZG9jfSwKKyAgICB7Im5lZWRzX2lucHV0IiwgVF9CT09MLCBvZmZzZXRvZihEZWNvbXByZXNzb3IsIG5lZWRzX2lucHV0KSwgUkVBRE9OTFksCisgICAgIERlY29tcHJlc3Nvcl9uZWVkc19pbnB1dF9kb2N9LAogICAgIHsidW51c2VkX2RhdGEiLCBUX09CSkVDVF9FWCwgb2Zmc2V0b2YoRGVjb21wcmVzc29yLCB1bnVzZWRfZGF0YSksIFJFQURPTkxZLAogICAgICBEZWNvbXByZXNzb3JfdW51c2VkX2RhdGFfZG9jfSwKICAgICB7TlVMTH0KQEAgLTEyNjAsOCArMTQwMCw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbHptYV9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgbHptYV92bGkgZmlsdGVyX2lkLCBQeV9idWZmZXIgKmVuY29kZWRfcHJvcHMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjM1ZjdmNTM0NWQ0ODc0NCBpbnB1dD0yNDY0MTA4MDA3ODIxNjBjXSovCitfbHptYV9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgbHptYV92bGkgZmlsdGVyX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqZW5jb2RlZF9wcm9wcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hZjI0OGY1NzA3NDY2NjhiIGlucHV0PTI0NjQxMDgwMDc4MjE2MGNdKi8KIHsKICAgICBsem1hX2ZpbHRlciBmaWx0ZXI7CiAgICAgbHptYV9yZXQgbHpyZXQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19vcGNvZGUuYyBiL01vZHVsZXMvX29wY29kZS5jCmluZGV4IGZlZTM4OGYuLjY2M2JiMjEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX29wY29kZS5jCisrKyBiL01vZHVsZXMvX29wY29kZS5jCkBAIC02LDYgKzYsOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MTE3NDQyZTY2ZWIzNzZlNl0qLwogCisjaW5jbHVkZSAiY2xpbmljL19vcGNvZGUuYy5oIgorCiAvKltjbGluaWMgaW5wdXRdCiAKIF9vcGNvZGUuc3RhY2tfZWZmZWN0IC0+IGludApAQCAtMTcsNDIgKzE5LDkgQEAKIENvbXB1dGUgdGhlIHN0YWNrIGVmZmVjdCBvZiB0aGUgb3Bjb2RlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX29wY29kZV9zdGFja19lZmZlY3RfX2RvY19fLAotInN0YWNrX2VmZmVjdCgkbW9kdWxlLCBvcGNvZGUsIG9wYXJnPU5vbmUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJDb21wdXRlIHRoZSBzdGFjayBlZmZlY3Qgb2YgdGhlIG9wY29kZS4iKTsKLQotI2RlZmluZSBfT1BDT0RFX1NUQUNLX0VGRkVDVF9NRVRIT0RERUYgICAgXAotICAgIHsic3RhY2tfZWZmZWN0IiwgKFB5Q0Z1bmN0aW9uKV9vcGNvZGVfc3RhY2tfZWZmZWN0LCBNRVRIX1ZBUkFSR1MsIF9vcGNvZGVfc3RhY2tfZWZmZWN0X19kb2NfX30sCi0KLXN0YXRpYyBpbnQKLV9vcGNvZGVfc3RhY2tfZWZmZWN0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG9wY29kZSwgUHlPYmplY3QgKm9wYXJnKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9vcGNvZGVfc3RhY2tfZWZmZWN0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIGludCBvcGNvZGU7Ci0gICAgUHlPYmplY3QgKm9wYXJnID0gUHlfTm9uZTsKLSAgICBpbnQgX3JldHVybl92YWx1ZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiaXxPOnN0YWNrX2VmZmVjdCIsCi0gICAgICAgICZvcGNvZGUsICZvcGFyZykpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICBfcmV0dXJuX3ZhbHVlID0gX29wY29kZV9zdGFja19lZmZlY3RfaW1wbChtb2R1bGUsIG9wY29kZSwgb3BhcmcpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCiBzdGF0aWMgaW50CiBfb3Bjb2RlX3N0YWNrX2VmZmVjdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBvcGNvZGUsIFB5T2JqZWN0ICpvcGFyZykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZTExMzNmOGQ1ODdiYzY3IGlucHV0PTJkMGE5ZWU1M2MwNDE4ZjVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZmNhZmQ1NTk2YzZiMDUwIGlucHV0PTJkMGE5ZWU1M2MwNDE4ZjVdKi8KIHsKICAgICBpbnQgZWZmZWN0OwogICAgIGludCBvcGFyZ19pbnQgPSAwOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fb3BlcmF0b3IuYyBiL01vZHVsZXMvX29wZXJhdG9yLmMKaW5kZXggYWRlYjk5ZS4uNzM1YWZmYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fb3BlcmF0b3IuYworKysgYi9Nb2R1bGVzL19vcGVyYXRvci5jCkBAIC02OSw2ICs2OSw3IEBACiBzcGFtMihvcF9hZGQgICAgICAgICAgICwgUHlOdW1iZXJfQWRkKQogc3BhbTIob3Bfc3ViICAgICAgICAgICAsIFB5TnVtYmVyX1N1YnRyYWN0KQogc3BhbTIob3BfbXVsICAgICAgICAgICAsIFB5TnVtYmVyX011bHRpcGx5KQorc3BhbTIob3BfbWF0bXVsICAgICAgICAsIFB5TnVtYmVyX01hdHJpeE11bHRpcGx5KQogc3BhbTIob3BfZmxvb3JkaXYgICAgICAsIFB5TnVtYmVyX0Zsb29yRGl2aWRlKQogc3BhbTIob3BfdHJ1ZWRpdiAgICAgICAsIFB5TnVtYmVyX1RydWVEaXZpZGUpCiBzcGFtMihvcF9tb2QgICAgICAgICAgICwgUHlOdW1iZXJfUmVtYWluZGVyKQpAQCAtODYsNiArODcsNyBAQAogc3BhbTIob3BfaWFkZCAgICAgICAgICAsIFB5TnVtYmVyX0luUGxhY2VBZGQpCiBzcGFtMihvcF9pc3ViICAgICAgICAgICwgUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0KQogc3BhbTIob3BfaW11bCAgICAgICAgICAsIFB5TnVtYmVyX0luUGxhY2VNdWx0aXBseSkKK3NwYW0yKG9wX2ltYXRtdWwgICAgICAgLCBQeU51bWJlcl9JblBsYWNlTWF0cml4TXVsdGlwbHkpCiBzcGFtMihvcF9pZmxvb3JkaXYgICAgICwgUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlKQogc3BhbTIob3BfaXRydWVkaXYgICAgICAsIFB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlKQogc3BhbTIob3BfaW1vZCAgICAgICAgICAsIFB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXIpCkBAIC0yMzksNyArMjQxLDcgQEAKICJSZXR1cm4gJ2EgPT0gYicuICBUaGlzIGZ1bmN0aW9uIHVzZXMgYW4gYXBwcm9hY2ggZGVzaWduZWQgdG8gcHJldmVudFxuIgogInRpbWluZyBhbmFseXNpcywgbWFraW5nIGl0IGFwcHJvcHJpYXRlIGZvciBjcnlwdG9ncmFwaHkuXG4iCiAiYSBhbmQgYiBtdXN0IGJvdGggYmUgb2YgdGhlIHNhbWUgdHlwZTogZWl0aGVyIHN0ciAoQVNDSUkgb25seSksXG4iCi0ib3IgYW55IHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgYnVmZmVyIHByb3RvY29sIChlLmcuIGJ5dGVzKS5cbiIKKyJvciBhbnkgYnl0ZXMtbGlrZSBvYmplY3QuXG4iCiAiXG4iCiAiTm90ZTogSWYgYSBhbmQgYiBhcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIG9yIGlmIGFuIGVycm9yIG9jY3VycyxcbiIKICJhIHRpbWluZyBhdHRhY2sgY291bGQgdGhlb3JldGljYWxseSByZXZlYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4iCkBAIC0zNDMsNiArMzQ1LDcgQEAKIHNwYW0yKGFkZCwgImFkZChhLCBiKSAtLSBTYW1lIGFzIGEgKyBiLiIpCiBzcGFtMihzdWIsICJzdWIoYSwgYikgLS0gU2FtZSBhcyBhIC0gYi4iKQogc3BhbTIobXVsLCAibXVsKGEsIGIpIC0tIFNhbWUgYXMgYSAqIGIuIikKK3NwYW0yKG1hdG11bCwgIm1hdG11bChhLCBiKSAtLSBTYW1lIGFzIGEgQCBiLiIpCiBzcGFtMihmbG9vcmRpdiwgImZsb29yZGl2KGEsIGIpIC0tIFNhbWUgYXMgYSAvLyBiLiIpCiBzcGFtMih0cnVlZGl2LCAidHJ1ZWRpdihhLCBiKSAtLSBTYW1lIGFzIGEgLyBiLiIpCiBzcGFtMihtb2QsICJtb2QoYSwgYikgLS0gU2FtZSBhcyBhICUgYi4iKQpAQCAtMzYwLDYgKzM2Myw3IEBACiBzcGFtMihpYWRkLCAiYSA9IGlhZGQoYSwgYikgLS0gU2FtZSBhcyBhICs9IGIuIikKIHNwYW0yKGlzdWIsICJhID0gaXN1YihhLCBiKSAtLSBTYW1lIGFzIGEgLT0gYi4iKQogc3BhbTIoaW11bCwgImEgPSBpbXVsKGEsIGIpIC0tIFNhbWUgYXMgYSAqPSBiLiIpCitzcGFtMihpbWF0bXVsLCAiYSA9IGltYXRtdWwoYSwgYikgLS0gU2FtZSBhcyBhIEA9IGIuIikKIHNwYW0yKGlmbG9vcmRpdiwgImEgPSBpZmxvb3JkaXYoYSwgYikgLS0gU2FtZSBhcyBhIC8vPSBiLiIpCiBzcGFtMihpdHJ1ZWRpdiwgImEgPSBpdHJ1ZWRpdihhLCBiKSAtLSBTYW1lIGFzIGEgLz0gYiIpCiBzcGFtMihpbW9kLCAiYSA9IGltb2QoYSwgYikgLS0gU2FtZSBhcyBhICU9IGIuIikKQEAgLTQ4MSw2ICs0ODUsNDEgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgoraXRlbWdldHRlcl9yZXByKGl0ZW1nZXR0ZXJvYmplY3QgKmlnKQoreworICAgIFB5T2JqZWN0ICpyZXByOworICAgIGNvbnN0IGNoYXIgKnJlcHJmbXQ7CisKKyAgICBpbnQgc3RhdHVzID0gUHlfUmVwckVudGVyKChQeU9iamVjdCAqKWlnKTsKKyAgICBpZiAoc3RhdHVzICE9IDApIHsKKyAgICAgICAgaWYgKHN0YXR1cyA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyguLi4pIiwgUHlfVFlQRShpZyktPnRwX25hbWUpOworICAgIH0KKworICAgIHJlcHJmbXQgPSBpZy0+bml0ZW1zID09IDEgPyAiJXMoJVIpIiA6ICIlcyVSIjsKKyAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQocmVwcmZtdCwgUHlfVFlQRShpZyktPnRwX25hbWUsIGlnLT5pdGVtKTsKKyAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0ICopaWcpOworICAgIHJldHVybiByZXByOworfQorCitzdGF0aWMgUHlPYmplY3QgKgoraXRlbWdldHRlcl9yZWR1Y2UoaXRlbWdldHRlcm9iamVjdCAqaWcpCit7CisgICAgaWYgKGlnLT5uaXRlbXMgPT0gMSkKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oTykiLCBQeV9UWVBFKGlnKSwgaWctPml0ZW0pOworICAgIHJldHVybiBQeVR1cGxlX1BhY2soMiwgUHlfVFlQRShpZyksIGlnLT5pdGVtKTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nIik7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBpdGVtZ2V0dGVyX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24paXRlbWdldHRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7TlVMTH0KK307CisKIFB5RG9jX1NUUlZBUihpdGVtZ2V0dGVyX2RvYywKICJpdGVtZ2V0dGVyKGl0ZW0sIC4uLikgLS0+IGl0ZW1nZXR0ZXIgb2JqZWN0XG5cCiBcblwKQEAgLTQ5OSw3ICs1MzgsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgKHJlcHJmdW5jKWl0ZW1nZXR0ZXJfcmVwciwgICAgICAgICAgLyogdHBfcmVwciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwpAQCAtNTE3LDcgKzU1Niw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgaXRlbWdldHRlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC03MzMsNiArNzcyLDkzIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2RvdGpvaW5hdHRyKFB5T2JqZWN0ICphdHRyLCBQeU9iamVjdCAqKmF0dHJzZXApCit7CisgICAgaWYgKFB5VHVwbGVfQ2hlY2tFeGFjdChhdHRyKSkgeworICAgICAgICBpZiAoKmF0dHJzZXAgPT0gTlVMTCkgeworICAgICAgICAgICAgKmF0dHJzZXAgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiLiIpOworICAgICAgICAgICAgaWYgKCphdHRyc2VwID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Kb2luKCphdHRyc2VwLCBhdHRyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeV9JTkNSRUYoYXR0cik7CisgICAgICAgIHJldHVybiBhdHRyOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2F0dHJnZXR0ZXJfYXJncyhhdHRyZ2V0dGVyb2JqZWN0ICphZykKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlPYmplY3QgKmF0dHJzZXAgPSBOVUxMOworICAgIFB5T2JqZWN0ICphdHRyc3RyaW5ncyA9IFB5VHVwbGVfTmV3KGFnLT5uYXR0cnMpOworICAgIGlmIChhdHRyc3RyaW5ncyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBhZy0+bmF0dHJzOyArK2kpIHsKKyAgICAgICAgUHlPYmplY3QgKmF0dHIgPSBQeVR1cGxlX0dFVF9JVEVNKGFnLT5hdHRyLCBpKTsKKyAgICAgICAgUHlPYmplY3QgKmF0dHJzdHIgPSBkb3Rqb2luYXR0cihhdHRyLCAmYXR0cnNlcCk7CisgICAgICAgIGlmIChhdHRyc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoYXR0cnNlcCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cnN0cmluZ3MpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhdHRyc3RyaW5ncywgaSwgYXR0cnN0cik7CisgICAgfQorICAgIFB5X1hERUNSRUYoYXR0cnNlcCk7CisgICAgcmV0dXJuIGF0dHJzdHJpbmdzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorYXR0cmdldHRlcl9yZXByKGF0dHJnZXR0ZXJvYmplY3QgKmFnKQoreworICAgIFB5T2JqZWN0ICpyZXByID0gTlVMTDsKKyAgICBpbnQgc3RhdHVzID0gUHlfUmVwckVudGVyKChQeU9iamVjdCAqKWFnKTsKKyAgICBpZiAoc3RhdHVzICE9IDApIHsKKyAgICAgICAgaWYgKHN0YXR1cyA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyguLi4pIiwgUHlfVFlQRShhZyktPnRwX25hbWUpOworICAgIH0KKworICAgIGlmIChhZy0+bmF0dHJzID09IDEpIHsKKyAgICAgICAgUHlPYmplY3QgKmF0dHJzZXAgPSBOVUxMOworICAgICAgICBQeU9iamVjdCAqYXR0ciA9IGRvdGpvaW5hdHRyKFB5VHVwbGVfR0VUX0lURU0oYWctPmF0dHIsIDApLCAmYXR0cnNlcCk7CisgICAgICAgIGlmIChhdHRyICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoJVIpIiwgUHlfVFlQRShhZyktPnRwX25hbWUsIGF0dHIpOworICAgICAgICAgICAgUHlfREVDUkVGKGF0dHIpOworICAgICAgICB9CisgICAgICAgIFB5X1hERUNSRUYoYXR0cnNlcCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqYXR0cnN0cmluZ3MgPSBhdHRyZ2V0dGVyX2FyZ3MoYWcpOworICAgICAgICBpZiAoYXR0cnN0cmluZ3MgIT0gTlVMTCkgeworICAgICAgICAgICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyVSIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGFnKS0+dHBfbmFtZSwgYXR0cnN0cmluZ3MpOworICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJzdHJpbmdzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0ICopYWcpOworICAgIHJldHVybiByZXByOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorYXR0cmdldHRlcl9yZWR1Y2UoYXR0cmdldHRlcm9iamVjdCAqYWcpCit7CisgICAgUHlPYmplY3QgKmF0dHJzdHJpbmdzID0gYXR0cmdldHRlcl9hcmdzKGFnKTsKKyAgICBpZiAoYXR0cnN0cmluZ3MgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiT04iLCBQeV9UWVBFKGFnKSwgYXR0cnN0cmluZ3MpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgYXR0cmdldHRlcl9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWF0dHJnZXR0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAge05VTEx9Cit9OworCiBQeURvY19TVFJWQVIoYXR0cmdldHRlcl9kb2MsCiAiYXR0cmdldHRlcihhdHRyLCAuLi4pIC0tPiBhdHRyZ2V0dGVyIG9iamVjdFxuXAogXG5cCkBAIC03NTMsNyArODc5LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIChyZXByZnVuYylhdHRyZ2V0dGVyX3JlcHIsICAgICAgICAgIC8qIHRwX3JlcHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KQEAgLTc3MSw3ICs4OTcsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGF0dHJnZXR0ZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtODA5LDYgKzkzNSwxMyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBuYW1lID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhuYW1lKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZCBuYW1lIG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgLyogY3JlYXRlIG1ldGhvZGNhbGxlcm9iamVjdCBzdHJ1Y3R1cmUgKi8KICAgICBtYyA9IFB5T2JqZWN0X0dDX05ldyhtZXRob2RjYWxsZXJvYmplY3QsICZtZXRob2RjYWxsZXJfdHlwZSk7CiAgICAgaWYgKG1jID09IE5VTEwpCkBAIC04MjEsOCArOTU0LDggQEAKICAgICB9CiAgICAgbWMtPmFyZ3MgPSBuZXdhcmdzOwogCi0gICAgbmFtZSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7CiAgICAgUHlfSU5DUkVGKG5hbWUpOworICAgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKCZuYW1lKTsKICAgICBtYy0+bmFtZSA9IG5hbWU7CiAKICAgICBQeV9YSU5DUkVGKGt3ZHMpOwpAQCAtODY1LDYgKzk5OCwxNDIgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbWV0aG9kY2FsbGVyX3JlcHIobWV0aG9kY2FsbGVyb2JqZWN0ICptYykKK3sKKyAgICBQeU9iamVjdCAqYXJncmVwcnMsICpyZXByID0gTlVMTCwgKnNlcCwgKmpvaW5lZGFyZ3JlcHJzOworICAgIFB5X3NzaXplX3QgbnVtdG90YWxhcmdzLCBudW1wb3NhcmdzLCBudW1rd2RhcmdzLCBpOworICAgIGludCBzdGF0dXMgPSBQeV9SZXByRW50ZXIoKFB5T2JqZWN0ICopbWMpOworICAgIGlmIChzdGF0dXMgIT0gMCkgeworICAgICAgICBpZiAoc3RhdHVzIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKC4uLikiLCBQeV9UWVBFKG1jKS0+dHBfbmFtZSk7CisgICAgfQorCisgICAgaWYgKG1jLT5rd2RzICE9IE5VTEwpIHsKKyAgICAgICAgbnVta3dkYXJncyA9IFB5RGljdF9TaXplKG1jLT5rd2RzKTsKKyAgICAgICAgaWYgKG51bWt3ZGFyZ3MgPCAwKSB7CisgICAgICAgICAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0ICopbWMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBudW1rd2RhcmdzID0gMDsKKyAgICB9CisKKyAgICBudW1wb3NhcmdzID0gUHlUdXBsZV9HRVRfU0laRShtYy0+YXJncyk7CisgICAgbnVtdG90YWxhcmdzID0gbnVtcG9zYXJncyArIG51bWt3ZGFyZ3M7CisKKyAgICBpZiAobnVtdG90YWxhcmdzID09IDApIHsKKyAgICAgICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyglUikiLCBQeV9UWVBFKG1jKS0+dHBfbmFtZSwgbWMtPm5hbWUpOworICAgICAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0ICopbWMpOworICAgICAgICByZXR1cm4gcmVwcjsKKyAgICB9CisKKyAgICBhcmdyZXBycyA9IFB5VHVwbGVfTmV3KG51bXRvdGFsYXJncyk7CisgICAgaWYgKGFyZ3JlcHJzID09IE5VTEwpIHsKKyAgICAgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCAqKW1jKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IG51bXBvc2FyZ3M7ICsraSkgeworICAgICAgICBQeU9iamVjdCAqb25lcmVwciA9IFB5T2JqZWN0X1JlcHIoUHlUdXBsZV9HRVRfSVRFTShtYy0+YXJncywgaSkpOworICAgICAgICBpZiAob25lcmVwciA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3JlcHJzLCBpLCBvbmVyZXByKTsKKyAgICB9CisKKyAgICBpZiAobnVta3dkYXJncyAhPSAwKSB7CisgICAgICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZTsKKyAgICAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgICAgICB3aGlsZSAoUHlEaWN0X05leHQobWMtPmt3ZHMsICZwb3MsICZrZXksICZ2YWx1ZSkpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpvbmVyZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVPSVSIiwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAob25lcmVwciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgIGlmIChpID49IG51bXRvdGFsYXJncykgeworICAgICAgICAgICAgICAgIGkgPSAtMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncmVwcnMsIGksIG9uZXJlcHIpOworICAgICAgICAgICAgKytpOworICAgICAgICB9CisgICAgICAgIGlmIChpICE9IG51bXRvdGFsYXJncykgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZHMgZGljdCBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CisgICAgfQorCisgICAgc2VwID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiwgIik7CisgICAgaWYgKHNlcCA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBqb2luZWRhcmdyZXBycyA9IFB5VW5pY29kZV9Kb2luKHNlcCwgYXJncmVwcnMpOworICAgIFB5X0RFQ1JFRihzZXApOworICAgIGlmIChqb2luZWRhcmdyZXBycyA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKCVSLCAlVSkiLCBQeV9UWVBFKG1jKS0+dHBfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWMtPm5hbWUsIGpvaW5lZGFyZ3JlcHJzKTsKKyAgICBQeV9ERUNSRUYoam9pbmVkYXJncmVwcnMpOworCitkb25lOgorICAgIFB5X0RFQ1JFRihhcmdyZXBycyk7CisgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCAqKW1jKTsKKyAgICByZXR1cm4gcmVwcjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21ldGhvZGNhbGxlcl9yZWR1Y2UobWV0aG9kY2FsbGVyb2JqZWN0ICptYykKK3sKKyAgICBQeU9iamVjdCAqbmV3YXJnczsKKyAgICBpZiAoIW1jLT5rd2RzIHx8IFB5RGljdF9TaXplKG1jLT5rd2RzKSA9PSAwKSB7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgUHlfc3NpemVfdCBjYWxsYXJnY291bnQgPSBQeVR1cGxlX0dFVF9TSVpFKG1jLT5hcmdzKTsKKyAgICAgICAgbmV3YXJncyA9IFB5VHVwbGVfTmV3KDEgKyBjYWxsYXJnY291bnQpOworICAgICAgICBpZiAobmV3YXJncyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0lOQ1JFRihtYy0+bmFtZSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgMCwgbWMtPm5hbWUpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY2FsbGFyZ2NvdW50OyArK2kpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBQeVR1cGxlX0dFVF9JVEVNKG1jLT5hcmdzLCBpKTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihhcmcpOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCBpICsgMSwgYXJnKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiT04iLCBQeV9UWVBFKG1jKSwgbmV3YXJncyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqZnVuY3Rvb2xzOworICAgICAgICBQeU9iamVjdCAqcGFydGlhbDsKKyAgICAgICAgUHlPYmplY3QgKmNvbnN0cnVjdG9yOworICAgICAgICBfUHlfSURFTlRJRklFUihwYXJ0aWFsKTsKKyAgICAgICAgZnVuY3Rvb2xzID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJmdW5jdG9vbHMiKTsKKyAgICAgICAgaWYgKCFmdW5jdG9vbHMpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcGFydGlhbCA9IF9QeU9iamVjdF9HZXRBdHRySWQoZnVuY3Rvb2xzLCAmUHlJZF9wYXJ0aWFsKTsKKyAgICAgICAgUHlfREVDUkVGKGZ1bmN0b29scyk7CisgICAgICAgIGlmICghcGFydGlhbCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBuZXdhcmdzID0gUHlUdXBsZV9OZXcoMik7CisgICAgICAgIGlmIChuZXdhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJ0aWFsKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihQeV9UWVBFKG1jKSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgMCwgKFB5T2JqZWN0ICopUHlfVFlQRShtYykpOworICAgICAgICBQeV9JTkNSRUYobWMtPm5hbWUpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDEsIG1jLT5uYW1lKTsKKyAgICAgICAgY29uc3RydWN0b3IgPSBQeU9iamVjdF9DYWxsKHBhcnRpYWwsIG5ld2FyZ3MsIG1jLT5rd2RzKTsKKyAgICAgICAgUHlfREVDUkVGKG5ld2FyZ3MpOworICAgICAgICBQeV9ERUNSRUYocGFydGlhbCk7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOTyIsIGNvbnN0cnVjdG9yLCBtYy0+YXJncyk7CisgICAgfQorfQorCitzdGF0aWMgUHlNZXRob2REZWYgbWV0aG9kY2FsbGVyX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pbWV0aG9kY2FsbGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMfQorfTsKIFB5RG9jX1NUUlZBUihtZXRob2RjYWxsZXJfZG9jLAogIm1ldGhvZGNhbGxlcihuYW1lLCAuLi4pIC0tPiBtZXRob2RjYWxsZXIgb2JqZWN0XG5cCiBcblwKQEAgLTg4NCw3ICsxMTUzLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIChyZXByZnVuYyltZXRob2RjYWxsZXJfcmVwciwgICAgICAgIC8qIHRwX3JlcHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KQEAgLTkwMiw3ICsxMTcxLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBtZXRob2RjYWxsZXJfbWV0aG9kcywgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3BpY2tsZS5jIGIvTW9kdWxlcy9fcGlja2xlLmMKaW5kZXggYzM1N2RjYy4uMmEwNzBlMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcGlja2xlLmMKKysrIGIvTW9kdWxlcy9fcGlja2xlLmMKQEAgLTUsMTQgKzUsMTMgQEAKICJPcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIFB5dGhvbiBwaWNrbGUgbW9kdWxlLiIpOwogCiAvKltjbGluaWMgaW5wdXRdCi1vdXRwdXQgcHJlc2V0IGZpbGUKIG1vZHVsZSBfcGlja2xlCiBjbGFzcyBfcGlja2xlLlBpY2tsZXIgIlBpY2tsZXJPYmplY3QgKiIgIiZQaWNrbGVyX1R5cGUiCiBjbGFzcyBfcGlja2xlLlBpY2tsZXJNZW1vUHJveHkgIlBpY2tsZXJNZW1vUHJveHlPYmplY3QgKiIgIiZQaWNrbGVyTWVtb1Byb3h5VHlwZSIKIGNsYXNzIF9waWNrbGUuVW5waWNrbGVyICJVbnBpY2tsZXJPYmplY3QgKiIgIiZVbnBpY2tsZXJfVHlwZSIKIGNsYXNzIF9waWNrbGUuVW5waWNrbGVyTWVtb1Byb3h5ICJVbnBpY2tsZXJNZW1vUHJveHlPYmplY3QgKiIgIiZVbnBpY2tsZXJNZW1vUHJveHlUeXBlIgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MTFjNDUyNDhhNDFkZDNmY10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NGIzZTExMzQ2OGE1OGU2Y10qLwogCiAvKiBCdW1wIHRoaXMgd2hlbiBuZXcgb3Bjb2RlcyBhcmUgYWRkZWQgdG8gdGhlIHBpY2tsZSBwcm90b2NvbC4gKi8KIGVudW0gewpAQCAtMTUyLDYgKzE1MSw4IEBACiAKICAgICAvKiBjb2RlY3MuZW5jb2RlLCB1c2VkIGZvciBzYXZpbmcgYnl0ZXMgaW4gb2xkZXIgcHJvdG9jb2xzICovCiAgICAgUHlPYmplY3QgKmNvZGVjc19lbmNvZGU7CisgICAgLyogYnVpbHRpbnMuZ2V0YXR0ciwgdXNlZCBmb3Igc2F2aW5nIG5lc3RlZCBuYW1lcyB3aXRoIHByb3RvY29sIDwgNCAqLworICAgIFB5T2JqZWN0ICpnZXRhdHRyOwogfSBQaWNrbGVTdGF0ZTsKIAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbiBvZiB0aGUgX3BpY2tsZSBtb2R1bGUgZGVmaW5pdGlvbi4gKi8KQEAgLTE4OCwxNiArMTg5LDI2IEBACiAgICAgUHlfQ0xFQVIoc3QtPm5hbWVfbWFwcGluZ18zdG8yKTsKICAgICBQeV9DTEVBUihzdC0+aW1wb3J0X21hcHBpbmdfM3RvMik7CiAgICAgUHlfQ0xFQVIoc3QtPmNvZGVjc19lbmNvZGUpOworICAgIFB5X0NMRUFSKHN0LT5nZXRhdHRyKTsKIH0KIAogLyogSW5pdGlhbGl6ZSB0aGUgZ2l2ZW4gcGlja2xlIG1vZHVsZSBzdGF0ZS4gKi8KIHN0YXRpYyBpbnQKIF9QaWNrbGVfSW5pdFN0YXRlKFBpY2tsZVN0YXRlICpzdCkKIHsKKyAgICBQeU9iamVjdCAqYnVpbHRpbnM7CiAgICAgUHlPYmplY3QgKmNvcHlyZWcgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjb21wYXRfcGlja2xlID0gTlVMTDsKICAgICBQeU9iamVjdCAqY29kZWNzID0gTlVMTDsKIAorICAgIGJ1aWx0aW5zID0gUHlFdmFsX0dldEJ1aWx0aW5zKCk7CisgICAgaWYgKGJ1aWx0aW5zID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgc3QtPmdldGF0dHIgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhidWlsdGlucywgImdldGF0dHIiKTsKKyAgICBpZiAoc3QtPmdldGF0dHIgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9JTkNSRUYoc3QtPmdldGF0dHIpOworCiAgICAgY29weXJlZyA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiY29weXJlZyIpOwogICAgIGlmICghY29weXJlZykKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTQyMCwxMiArNDMxLDEyIEBACiBQZGF0YV9ncm93KFBkYXRhICpzZWxmKQogewogICAgIFB5T2JqZWN0ICoqZGF0YSA9IHNlbGYtPmRhdGE7Ci0gICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQgPSBzZWxmLT5hbGxvY2F0ZWQ7Ci0gICAgUHlfc3NpemVfdCBuZXdfYWxsb2NhdGVkOworICAgIHNpemVfdCBhbGxvY2F0ZWQgPSAoc2l6ZV90KXNlbGYtPmFsbG9jYXRlZDsKKyAgICBzaXplX3QgbmV3X2FsbG9jYXRlZDsKIAogICAgIG5ld19hbGxvY2F0ZWQgPSAoYWxsb2NhdGVkID4+IDMpICsgNjsKICAgICAvKiBjaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdyAqLwotICAgIGlmIChuZXdfYWxsb2NhdGVkID4gUFlfU1NJWkVfVF9NQVggLSBhbGxvY2F0ZWQpCisgICAgaWYgKG5ld19hbGxvY2F0ZWQgPiAoc2l6ZV90KVBZX1NTSVpFX1RfTUFYIC0gYWxsb2NhdGVkKQogICAgICAgICBnb3RvIG5vbWVtb3J5OwogICAgIG5ld19hbGxvY2F0ZWQgKz0gYWxsb2NhdGVkOwogICAgIFB5TWVtX1JFU0laRShkYXRhLCBQeU9iamVjdCAqLCBuZXdfYWxsb2NhdGVkKTsKQEAgLTQzMyw3ICs0NDQsNyBAQAogICAgICAgICBnb3RvIG5vbWVtb3J5OwogCiAgICAgc2VsZi0+ZGF0YSA9IGRhdGE7Ci0gICAgc2VsZi0+YWxsb2NhdGVkID0gbmV3X2FsbG9jYXRlZDsKKyAgICBzZWxmLT5hbGxvY2F0ZWQgPSAoUHlfc3NpemVfdCluZXdfYWxsb2NhdGVkOwogICAgIHJldHVybiAwOwogCiAgIG5vbWVtb3J5OgpAQCAtODM1LDkgKzg0Niw4IEBACiBzdGF0aWMgaW50CiBfUGlja2xlcl9DbGVhckJ1ZmZlcihQaWNrbGVyT2JqZWN0ICpzZWxmKQogewotICAgIFB5X0NMRUFSKHNlbGYtPm91dHB1dF9idWZmZXIpOwotICAgIHNlbGYtPm91dHB1dF9idWZmZXIgPQotICAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNlbGYtPm1heF9vdXRwdXRfbGVuKTsKKyAgICBQeV9TRVRSRUYoc2VsZi0+b3V0cHV0X2J1ZmZlciwKKyAgICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzZWxmLT5tYXhfb3V0cHV0X2xlbikpOwogICAgIGlmIChzZWxmLT5vdXRwdXRfYnVmZmVyID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBzZWxmLT5vdXRwdXRfbGVuID0gMDsKQEAgLTg0OCw3ICs4NTgsNyBAQAogc3RhdGljIHZvaWQKIF93cml0ZV9zaXplNjQoY2hhciAqb3V0LCBzaXplX3QgdmFsdWUpCiB7Ci0gICAgaW50IGk7CisgICAgc2l6ZV90IGk7CiAKICAgICBhc3NlcnQoc2l6ZW9mKHNpemVfdCkgPD0gOCk7CiAKQEAgLTE0NTksNyArMTQ2OSw3IEBACiAgICAgICAgICAgICBwZGF0YVsxXSA9ICh1bnNpZ25lZCBjaGFyKSgqdmFsdWUgJiAweGZmKTsKICAgICAgICAgICAgIGxlbiA9IDI7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoKnZhbHVlIDw9IDB4ZmZmZmZmZmZMKSB7CisgICAgICAgIGVsc2UgaWYgKChzaXplX3QpKnZhbHVlIDw9IDB4ZmZmZmZmZmZVTCkgewogICAgICAgICAgICAgcGRhdGFbMF0gPSBMT05HX0JJTkdFVDsKICAgICAgICAgICAgIHBkYXRhWzFdID0gKHVuc2lnbmVkIGNoYXIpKCp2YWx1ZSAmIDB4ZmYpOwogICAgICAgICAgICAgcGRhdGFbMl0gPSAodW5zaWduZWQgY2hhcikoKCp2YWx1ZSA+PiA4KSAmIDB4ZmYpOwpAQCAtMTUxNiw3ICsxNTI2LDcgQEAKICAgICAgICAgICAgIHBkYXRhWzFdID0gKHVuc2lnbmVkIGNoYXIpaWR4OwogICAgICAgICAgICAgbGVuID0gMjsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpZHggPD0gMHhmZmZmZmZmZkwpIHsKKyAgICAgICAgZWxzZSBpZiAoKHNpemVfdClpZHggPD0gMHhmZmZmZmZmZlVMKSB7CiAgICAgICAgICAgICBwZGF0YVswXSA9IExPTkdfQklOUFVUOwogICAgICAgICAgICAgcGRhdGFbMV0gPSAodW5zaWduZWQgY2hhcikoaWR4ICYgMHhmZik7CiAgICAgICAgICAgICBwZGF0YVsyXSA9ICh1bnNpZ25lZCBjaGFyKSgoaWR4ID4+IDgpICYgMHhmZik7CkBAIC0xNTM4LDY2ICsxNTQ4LDEwMSBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZ2V0YXR0cmlidXRlKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpuYW1lLCBpbnQgYWxsb3dfcXVhbG5hbWUpIHsKLSAgICBQeU9iamVjdCAqZG90dGVkX3BhdGg7Ci0gICAgUHlfc3NpemVfdCBpOworZ2V0X2RvdHRlZF9wYXRoKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpuYW1lKSB7CiAgICAgX1B5X3N0YXRpY19zdHJpbmcoUHlJZF9kb3QsICIuIik7CiAgICAgX1B5X3N0YXRpY19zdHJpbmcoUHlJZF9sb2NhbHMsICI8bG9jYWxzPiIpOworICAgIFB5T2JqZWN0ICpkb3R0ZWRfcGF0aDsKKyAgICBQeV9zc2l6ZV90IGksIG47CiAKICAgICBkb3R0ZWRfcGF0aCA9IFB5VW5pY29kZV9TcGxpdChuYW1lLCBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9kb3QpLCAtMSk7Ci0gICAgaWYgKGRvdHRlZF9wYXRoID09IE5VTEwpIHsKKyAgICBpZiAoZG90dGVkX3BhdGggPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGFzc2VydChQeV9TSVpFKGRvdHRlZF9wYXRoKSA+PSAxKTsKLSAgICBpZiAoIWFsbG93X3F1YWxuYW1lICYmIFB5X1NJWkUoZG90dGVkX3BhdGgpID4gMSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgZ2V0IHF1YWxpZmllZCBhdHRyaWJ1dGUgJVIgb24gJVI7IgotICAgICAgICAgICAgICAgICAgICAgInVzZSBwcm90b2NvbHMgPj0gNCB0byBlbmFibGUgc3VwcG9ydCIsCi0gICAgICAgICAgICAgICAgICAgICBuYW1lLCBvYmopOwotICAgICAgICBQeV9ERUNSRUYoZG90dGVkX3BhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfSU5DUkVGKG9iaik7Ci0gICAgZm9yIChpID0gMDsgaSA8IFB5X1NJWkUoZG90dGVkX3BhdGgpOyBpKyspIHsKKyAgICBuID0gUHlMaXN0X0dFVF9TSVpFKGRvdHRlZF9wYXRoKTsKKyAgICBhc3NlcnQobiA+PSAxKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICpzdWJwYXRoID0gUHlMaXN0X0dFVF9JVEVNKGRvdHRlZF9wYXRoLCBpKTsKLSAgICAgICAgUHlPYmplY3QgKnRtcDsKICAgICAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5VW5pY29kZV9SaWNoQ29tcGFyZSgKICAgICAgICAgICAgIHN1YnBhdGgsIF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX2xvY2FscyksIFB5X0VRKTsKICAgICAgICAgaW50IGlzX2VxdWFsID0gKHJlc3VsdCA9PSBQeV9UcnVlKTsKICAgICAgICAgYXNzZXJ0KFB5Qm9vbF9DaGVjayhyZXN1bHQpKTsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIGlmIChpc19lcXVhbCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBnZXQgbG9jYWwgYXR0cmlidXRlICVSIG9uICVSIiwgbmFtZSwgb2JqKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihkb3R0ZWRfcGF0aCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob2JqKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHIob2JqLCBzdWJwYXRoKTsKLSAgICAgICAgUHlfREVDUkVGKG9iaik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIGlmIChvYmogPT0gTlVMTCkKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBnZXQgYXR0cmlidXRlICVSIG9uICVSIiwgbmFtZSwgb2JqKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IHBpY2tsZSBsb2NhbCBvYmplY3QgJVIiLCBuYW1lKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBwaWNrbGUgbG9jYWwgYXR0cmlidXRlICVSIG9uICVSIiwgbmFtZSwgb2JqKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihkb3R0ZWRfcGF0aCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBvYmogPSB0bXA7CiAgICAgfQotICAgIFB5X0RFQ1JFRihkb3R0ZWRfcGF0aCk7Ci0gICAgcmV0dXJuIG9iajsKKyAgICByZXR1cm4gZG90dGVkX3BhdGg7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aGljaG1vZHVsZShQeU9iamVjdCAqZ2xvYmFsLCBQeU9iamVjdCAqZ2xvYmFsX25hbWUsIGludCBhbGxvd19xdWFsbmFtZSkKK2dldF9kZWVwX2F0dHJpYnV0ZShQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqbmFtZXMsIFB5T2JqZWN0ICoqcHBhcmVudCkKK3sKKyAgICBQeV9zc2l6ZV90IGksIG47CisgICAgUHlPYmplY3QgKnBhcmVudCA9IE5VTEw7CisKKyAgICBhc3NlcnQoUHlMaXN0X0NoZWNrRXhhY3QobmFtZXMpKTsKKyAgICBQeV9JTkNSRUYob2JqKTsKKyAgICBuID0gUHlMaXN0X0dFVF9TSVpFKG5hbWVzKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gUHlMaXN0X0dFVF9JVEVNKG5hbWVzLCBpKTsKKyAgICAgICAgUHlfWERFQ1JFRihwYXJlbnQpOworICAgICAgICBwYXJlbnQgPSBvYmo7CisgICAgICAgIG9iaiA9IFB5T2JqZWN0X0dldEF0dHIocGFyZW50LCBuYW1lKTsKKyAgICAgICAgaWYgKG9iaiA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocGFyZW50KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGlmIChwcGFyZW50ICE9IE5VTEwpCisgICAgICAgICpwcGFyZW50ID0gcGFyZW50OworICAgIGVsc2UKKyAgICAgICAgUHlfWERFQ1JFRihwYXJlbnQpOworICAgIHJldHVybiBvYmo7Cit9CisKK3N0YXRpYyB2b2lkCityZWZvcm1hdF9hdHRyaWJ1dGVfZXJyb3IoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKm5hbWUpCit7CisgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBnZXQgYXR0cmlidXRlICVSIG9uICVSIiwgbmFtZSwgb2JqKTsKKyAgICB9Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2dldGF0dHJpYnV0ZShQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqbmFtZSwgaW50IGFsbG93X3F1YWxuYW1lKQoreworICAgIFB5T2JqZWN0ICpkb3R0ZWRfcGF0aCwgKmF0dHI7CisKKyAgICBpZiAoYWxsb3dfcXVhbG5hbWUpIHsKKyAgICAgICAgZG90dGVkX3BhdGggPSBnZXRfZG90dGVkX3BhdGgob2JqLCBuYW1lKTsKKyAgICAgICAgaWYgKGRvdHRlZF9wYXRoID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgYXR0ciA9IGdldF9kZWVwX2F0dHJpYnV0ZShvYmosIGRvdHRlZF9wYXRoLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGRvdHRlZF9wYXRoKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBhdHRyID0gUHlPYmplY3RfR2V0QXR0cihvYmosIG5hbWUpOworICAgIGlmIChhdHRyID09IE5VTEwpCisgICAgICAgIHJlZm9ybWF0X2F0dHJpYnV0ZV9lcnJvcihvYmosIG5hbWUpOworICAgIHJldHVybiBhdHRyOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2hpY2htb2R1bGUoUHlPYmplY3QgKmdsb2JhbCwgUHlPYmplY3QgKmRvdHRlZF9wYXRoKQogewogICAgIFB5T2JqZWN0ICptb2R1bGVfbmFtZTsKICAgICBQeU9iamVjdCAqbW9kdWxlc19kaWN0OwogICAgIFB5T2JqZWN0ICptb2R1bGU7Ci0gICAgUHlPYmplY3QgKm9iajsKLSAgICBQeV9zc2l6ZV90IGksIGo7CisgICAgUHlfc3NpemVfdCBpOwogICAgIF9QeV9JREVOVElGSUVSKF9fbW9kdWxlX18pOwogICAgIF9QeV9JREVOVElGSUVSKG1vZHVsZXMpOwogICAgIF9QeV9JREVOVElGSUVSKF9fbWFpbl9fKTsKQEAgLTE2MTksNiArMTY2NCw3IEBACiAgICAgfQogICAgIGFzc2VydChtb2R1bGVfbmFtZSA9PSBOVUxMKTsKIAorICAgIC8qIEZhbGxiYWNrIG9uIHdhbGtpbmcgc3lzLm1vZHVsZXMgKi8KICAgICBtb2R1bGVzX2RpY3QgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfbW9kdWxlcyk7CiAgICAgaWYgKG1vZHVsZXNfZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJ1bmFibGUgdG8gZ2V0IHN5cy5tb2R1bGVzIik7CkBAIC0xNjI2LDMxICsxNjcyLDI4IEBACiAgICAgfQogCiAgICAgaSA9IDA7Ci0gICAgd2hpbGUgKChqID0gUHlEaWN0X05leHQobW9kdWxlc19kaWN0LCAmaSwgJm1vZHVsZV9uYW1lLCAmbW9kdWxlKSkpIHsKLSAgICAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5VW5pY29kZV9SaWNoQ29tcGFyZSgKLSAgICAgICAgICAgIG1vZHVsZV9uYW1lLCBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX21haW5fXyksIFB5X0VRKTsKLSAgICAgICAgaW50IGlzX2VxdWFsID0gKHJlc3VsdCA9PSBQeV9UcnVlKTsKLSAgICAgICAgYXNzZXJ0KFB5Qm9vbF9DaGVjayhyZXN1bHQpKTsKLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIGlmIChpc19lcXVhbCkKKyAgICB3aGlsZSAoUHlEaWN0X05leHQobW9kdWxlc19kaWN0LCAmaSwgJm1vZHVsZV9uYW1lLCAmbW9kdWxlKSkgeworICAgICAgICBQeU9iamVjdCAqY2FuZGlkYXRlOworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG1vZHVsZV9uYW1lKSAmJgorICAgICAgICAgICAgIVB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG1vZHVsZV9uYW1lLCAiX19tYWluX18iKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAobW9kdWxlID09IFB5X05vbmUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBvYmogPSBnZXRhdHRyaWJ1dGUobW9kdWxlLCBnbG9iYWxfbmFtZSwgYWxsb3dfcXVhbG5hbWUpOwotICAgICAgICBpZiAob2JqID09IE5VTEwpIHsKKyAgICAgICAgY2FuZGlkYXRlID0gZ2V0X2RlZXBfYXR0cmlidXRlKG1vZHVsZSwgZG90dGVkX3BhdGgsIE5VTEwpOworICAgICAgICBpZiAoY2FuZGlkYXRlID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAob2JqID09IGdsb2JhbCkgewotICAgICAgICAgICAgUHlfREVDUkVGKG9iaik7CisgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gZ2xvYmFsKSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYobW9kdWxlX25hbWUpOworICAgICAgICAgICAgUHlfREVDUkVGKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICByZXR1cm4gbW9kdWxlX25hbWU7CiAgICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKG9iaik7CisgICAgICAgIFB5X0RFQ1JFRihjYW5kaWRhdGUpOwogICAgIH0KIAogICAgIC8qIElmIG5vIG1vZHVsZSBpcyBmb3VuZCwgdXNlIF9fbWFpbl9fLiAqLwpAQCAtMTkzNiw3ICsxOTc5LDcgQEAKICAgICAgICAgaWYgKF9QaWNrbGVyX1dyaXRlKHNlbGYsICZvcCwgMSkgPCAwKQogICAgICAgICAgICAgZ290byBkb25lOwogCi0gICAgICAgIGJ1ZiA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyh4LCAnZycsIDE3LCAwLCBOVUxMKTsKKyAgICAgICAgYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKHgsICdyJywgMCwgUHlfRFRTRl9BRERfRE9UXzAsIE5VTEwpOwogICAgICAgICBpZiAoIWJ1ZikgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIGdvdG8gZG9uZTsKQEAgLTIwMTYsNyArMjA1OSw3IEBACiAgICAgICAgICAgICBoZWFkZXJbMV0gPSAodW5zaWduZWQgY2hhcilzaXplOwogICAgICAgICAgICAgbGVuID0gMjsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChzaXplIDw9IDB4ZmZmZmZmZmZMKSB7CisgICAgICAgIGVsc2UgaWYgKChzaXplX3Qpc2l6ZSA8PSAweGZmZmZmZmZmVUwpIHsKICAgICAgICAgICAgIGhlYWRlclswXSA9IEJJTkJZVEVTOwogICAgICAgICAgICAgaGVhZGVyWzFdID0gKHVuc2lnbmVkIGNoYXIpKHNpemUgJiAweGZmKTsKICAgICAgICAgICAgIGhlYWRlclsyXSA9ICh1bnNpZ25lZCBjaGFyKSgoc2l6ZSA+PiA4KSAmIDB4ZmYpOwpAQCAtMjA1Myw5ICsyMDk2LDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogcmF3X3VuaWNvZGVfZXNjYXBlKFB5T2JqZWN0ICpvYmopCiB7Ci0gICAgUHlPYmplY3QgKnJlcHIsICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnJlcHI7CiAgICAgY2hhciAqcDsKLSAgICBQeV9zc2l6ZV90IGksIHNpemUsIGV4cGFuZHNpemU7CisgICAgUHlfc3NpemVfdCBpLCBzaXplOworICAgIHNpemVfdCBleHBhbmRzaXplOwogICAgIHZvaWQgKmRhdGE7CiAgICAgdW5zaWduZWQgaW50IGtpbmQ7CiAKQEAgLTIwNzAsMTUgKzIxMTQsMTYgQEAKICAgICBlbHNlCiAgICAgICAgIGV4cGFuZHNpemUgPSA2OwogCi0gICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAvIGV4cGFuZHNpemUpCisgICAgaWYgKChzaXplX3Qpc2l6ZSA+IChzaXplX3QpUFlfU1NJWkVfVF9NQVggLyBleHBhbmRzaXplKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICByZXByID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZXhwYW5kc2l6ZSAqIHNpemUpOworICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGV4cGFuZHNpemUgKiBzaXplKTsKICAgICBpZiAocmVwciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIHJldHVybiByZXByOworICAgIGFzc2VydChQeV9SRUZDTlQocmVwcikgPT0gMSk7CiAKLSAgICBwID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlcHIpOworICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKTsKICAgICBmb3IgKGk9MDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAgICAgICAgIC8qIE1hcCAzMi1iaXQgY2hhcmFjdGVycyB0byAnXFV4eHh4eHh4eCcgKi8KQEAgLTIxMDcsMTIgKzIxNTIsMTAgQEAKICAgICAgICAgZWxzZQogICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKICAgICB9Ci0gICAgc2l6ZSA9IHAgLSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVwcik7Ci0KLWRvbmU6Ci0gICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVwciksIHNpemUpOwotICAgIFB5X0RFQ1JFRihyZXByKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHNpemUgPSBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7CisgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgc2l6ZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gcmVwcjsKIH0KIAogc3RhdGljIGludApAQCAtMjEyMSwxMiArMjE2NCwxMyBAQAogICAgIGNoYXIgaGVhZGVyWzldOwogICAgIFB5X3NzaXplX3QgbGVuOwogCisgICAgYXNzZXJ0KHNpemUgPj0gMCk7CiAgICAgaWYgKHNpemUgPD0gMHhmZiAmJiBzZWxmLT5wcm90byA+PSA0KSB7CiAgICAgICAgIGhlYWRlclswXSA9IFNIT1JUX0JJTlVOSUNPREU7CiAgICAgICAgIGhlYWRlclsxXSA9ICh1bnNpZ25lZCBjaGFyKShzaXplICYgMHhmZik7CiAgICAgICAgIGxlbiA9IDI7CiAgICAgfQotICAgIGVsc2UgaWYgKHNpemUgPD0gMHhmZmZmZmZmZlVMKSB7CisgICAgZWxzZSBpZiAoKHNpemVfdClzaXplIDw9IDB4ZmZmZmZmZmZVTCkgewogICAgICAgICBoZWFkZXJbMF0gPSBCSU5VTklDT0RFOwogICAgICAgICBoZWFkZXJbMV0gPSAodW5zaWduZWQgY2hhcikoc2l6ZSAmIDB4ZmYpOwogICAgICAgICBoZWFkZXJbMl0gPSAodW5zaWduZWQgY2hhcikoKHNpemUgPj4gOCkgJiAweGZmKTsKQEAgLTMwNDQsOSArMzA4OCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShpdGVtKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgUHlfQ0xFQVIoKm1vZHVsZV9uYW1lKTsKICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOwotICAgICAgICAqbW9kdWxlX25hbWUgPSBpdGVtOworICAgICAgICBQeV9TRVRSRUYoKm1vZHVsZV9uYW1lLCBpdGVtKTsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICByZXR1cm4gLTE7CkBAIC0zMDYxLDYgKzMxMDQsOSBAQAogICAgIFB5T2JqZWN0ICpnbG9iYWxfbmFtZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm1vZHVsZV9uYW1lID0gTlVMTDsKICAgICBQeU9iamVjdCAqbW9kdWxlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcGFyZW50ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZG90dGVkX3BhdGggPSBOVUxMOworICAgIFB5T2JqZWN0ICpsYXN0bmFtZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNsczsKICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7CiAgICAgaW50IHN0YXR1cyA9IDA7CkBAIC0zMDc0LDEzICszMTIwLDExIEBACiAgICAgICAgIGdsb2JhbF9uYW1lID0gbmFtZTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChzZWxmLT5wcm90byA+PSA0KSB7Ci0gICAgICAgICAgICBnbG9iYWxfbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9fX3F1YWxuYW1lX18pOwotICAgICAgICAgICAgaWYgKGdsb2JhbF9uYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGdsb2JhbF9uYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX19fcXVhbG5hbWVfXyk7CisgICAgICAgIGlmIChnbG9iYWxfbmFtZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB9CiAgICAgICAgIGlmIChnbG9iYWxfbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBnbG9iYWxfbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9fX25hbWVfXyk7CkBAIC0zMDg5LDcgKzMxMzMsMTAgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIG1vZHVsZV9uYW1lID0gd2hpY2htb2R1bGUob2JqLCBnbG9iYWxfbmFtZSwgc2VsZi0+cHJvdG8gPj0gNCk7CisgICAgZG90dGVkX3BhdGggPSBnZXRfZG90dGVkX3BhdGgobW9kdWxlLCBnbG9iYWxfbmFtZSk7CisgICAgaWYgKGRvdHRlZF9wYXRoID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgbW9kdWxlX25hbWUgPSB3aGljaG1vZHVsZShvYmosIGRvdHRlZF9wYXRoKTsKICAgICBpZiAobW9kdWxlX25hbWUgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtMzEwOCw3ICszMTU1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICBvYmosIG1vZHVsZV9uYW1lKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgY2xzID0gZ2V0YXR0cmlidXRlKG1vZHVsZSwgZ2xvYmFsX25hbWUsIHNlbGYtPnByb3RvID49IDQpOworICAgIGxhc3RuYW1lID0gUHlMaXN0X0dFVF9JVEVNKGRvdHRlZF9wYXRoLCBQeUxpc3RfR0VUX1NJWkUoZG90dGVkX3BhdGgpLTEpOworICAgIFB5X0lOQ1JFRihsYXN0bmFtZSk7CisgICAgY2xzID0gZ2V0X2RlZXBfYXR0cmlidXRlKG1vZHVsZSwgZG90dGVkX3BhdGgsICZwYXJlbnQpOworICAgIFB5X0NMRUFSKGRvdHRlZF9wYXRoKTsKICAgICBpZiAoY2xzID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KHN0LT5QaWNrbGluZ0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgIkNhbid0IHBpY2tsZSAlUjogYXR0cmlidXRlIGxvb2t1cCAlUyBvbiAlUyBmYWlsZWQiLApAQCAtMzE5NSw2ICszMjQ1LDExIEBACiAgICAgfQogICAgIGVsc2UgewogICBnZW5fZ2xvYmFsOgorICAgICAgICBpZiAocGFyZW50ID09IG1vZHVsZSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKGxhc3RuYW1lKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihnbG9iYWxfbmFtZSk7CisgICAgICAgICAgICBnbG9iYWxfbmFtZSA9IGxhc3RuYW1lOworICAgICAgICB9CiAgICAgICAgIGlmIChzZWxmLT5wcm90byA+PSA0KSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyIHN0YWNrX2dsb2JhbF9vcCA9IFNUQUNLX0dMT0JBTDsKIApAQCAtMzIwNiw2ICszMjYxLDE1IEBACiAgICAgICAgICAgICBpZiAoX1BpY2tsZXJfV3JpdGUoc2VsZiwgJnN0YWNrX2dsb2JhbF9vcCwgMSkgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocGFyZW50ICE9IG1vZHVsZSkgeworICAgICAgICAgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlZHVjZV92YWx1ZSA9IFB5X0J1aWxkVmFsdWUoIihPKE9PKSkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0LT5nZXRhdHRyLCBwYXJlbnQsIGxhc3RuYW1lKTsKKyAgICAgICAgICAgIHN0YXR1cyA9IHNhdmVfcmVkdWNlKHNlbGYsIHJlZHVjZV92YWx1ZSwgTlVMTCk7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVkdWNlX3ZhbHVlKTsKKyAgICAgICAgICAgIGlmIChzdGF0dXMgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvKiBHZW5lcmF0ZSBhIG5vcm1hbCBnbG9iYWwgb3Bjb2RlIGlmIHdlIGFyZSB1c2luZyBhIHBpY2tsZQogICAgICAgICAgICAgICAgcHJvdG9jb2wgPCA0LCBvciBpZiB0aGUgb2JqZWN0IGlzIG5vdCByZWdpc3RlcmVkIGluIHRoZQpAQCAtMzI4NCw2ICszMzQ4LDkgQEAKICAgICBQeV9YREVDUkVGKG1vZHVsZV9uYW1lKTsKICAgICBQeV9YREVDUkVGKGdsb2JhbF9uYW1lKTsKICAgICBQeV9YREVDUkVGKG1vZHVsZSk7CisgICAgUHlfWERFQ1JFRihwYXJlbnQpOworICAgIFB5X1hERUNSRUYoZG90dGVkX3BhdGgpOworICAgIFB5X1hERUNSRUYobGFzdG5hbWUpOwogCiAgICAgcmV0dXJuIHN0YXR1czsKIH0KQEAgLTM0NjMsMjAgKzM1MzAsMTkgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoc2VsZi0+cHJvdG8gPj0gNCkgewotICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfZXhfXyk7Ci0gICAgICAgICAgICB1c2VfbmV3b2JqX2V4ID0gUHlVbmljb2RlX0NoZWNrKG5hbWUpICYmCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0NvbXBhcmUoCi0gICAgICAgICAgICAgICAgICAgIG5hbWUsIF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fbmV3b2JqX2V4X18pKSA9PSAwOwotICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sobmFtZSkpIHsKKyAgICAgICAgICAgIGlmIChzZWxmLT5wcm90byA+PSA0KSB7CisgICAgICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfZXhfXyk7CisgICAgICAgICAgICAgICAgdXNlX25ld29ial9leCA9IFB5VW5pY29kZV9Db21wYXJlKAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfX19uZXdvYmpfZXhfXykpID09IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXVzZV9uZXdvYmpfZXgpIHsKKyAgICAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX25ld29ial9fKTsKKyAgICAgICAgICAgICAgICB1c2VfbmV3b2JqID0gUHlVbmljb2RlX0NvbXBhcmUoCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX25ld29ial9fKSkgPT0gMDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX18pOwotICAgICAgICAgICAgdXNlX25ld29iaiA9IFB5VW5pY29kZV9DaGVjayhuYW1lKSAmJgotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlKAotICAgICAgICAgICAgICAgICAgICBuYW1lLCBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX25ld29ial9fKSkgPT0gMDsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKLSAgICAgICAgfQorICAgICAgICBQeV9YREVDUkVGKG5hbWUpOwogICAgIH0KIAogICAgIGlmICh1c2VfbmV3b2JqX2V4KSB7CkBAIC0zNTYxLDcgKzM2MjcsNyBAQAogICAgICAgICAgICAgID4+PiBwaWNrbGUuZHVtcHMoMSsyaikKICAgICAgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAgICAgICAgICAuLi4KLSAgICAgICAgICAgICBSdW50aW1lRXJyb3I6IG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2VlZGVkCisgICAgICAgICAgICAgUmVjdXJzaW9uRXJyb3I6IG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2VlZGVkCiAKICAgICAgICAgICAgUmVtb3ZpbmcgdGhlIGNvbXBsZXggY2xhc3MgZnJvbSBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlIG1hZGUgdGhlCiAgICAgICAgICAgIF9fcmVkdWNlX2V4X18oKSBtZXRob2QgZW1pdCBhbm90aGVyIGNvbXBsZXggb2JqZWN0OgpAQCAtMzk0Nyw3ICs0MDEzLDcgQEAKIHsKICAgICBQeV9zc2l6ZV90IHJlcywgczsKIAotICAgIHJlcyA9IHNpemVvZihQaWNrbGVyT2JqZWN0KTsKKyAgICByZXMgPSBfUHlPYmplY3RfU0laRShQeV9UWVBFKHNlbGYpKTsKICAgICBpZiAoc2VsZi0+bWVtbyAhPSBOVUxMKSB7CiAgICAgICAgIHJlcyArPSBzaXplb2YoUHlNZW1vVGFibGUpOwogICAgICAgICByZXMgKz0gc2VsZi0+bWVtby0+bXRfYWxsb2NhdGVkICogc2l6ZW9mKFB5TWVtb0VudHJ5KTsKQEAgLTQwNDEsOCArNDEwNyw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBpbnQKLV9waWNrbGVfUGlja2xlcl9fX2luaXRfX19pbXBsKFBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlLCBQeU9iamVjdCAqcHJvdG9jb2wsIGludCBmaXhfaW1wb3J0cykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NmUyMjlmM2IxZjQzMzJmIGlucHV0PTRmYWFiZGJjNzYzYzIzODldKi8KK19waWNrbGVfUGlja2xlcl9fX2luaXRfX19pbXBsKFBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnByb3RvY29sLCBpbnQgZml4X2ltcG9ydHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjVmMzEwNzhkYWIxN2ZiMCBpbnB1dD00ZmFhYmRiYzc2M2MyMzg5XSovCiB7CiAgICAgX1B5X0lERU5USUZJRVIocGVyc2lzdGVudF9pZCk7CiAgICAgX1B5X0lERU5USUZJRVIoZGlzcGF0Y2hfdGFibGUpOwpAQCAtNDU2OSw3ICs0NjM2LDcgQEAKIGNhbGNfYmluaW50KGNoYXIgKmJ5dGVzLCBpbnQgbmJ5dGVzKQogewogICAgIHVuc2lnbmVkIGNoYXIgKnMgPSAodW5zaWduZWQgY2hhciAqKWJ5dGVzOwotICAgIGludCBpOworICAgIFB5X3NzaXplX3QgaTsKICAgICBsb25nIHggPSAwOwogCiAgICAgZm9yIChpID0gMDsgaSA8IG5ieXRlczsgaSsrKSB7CkBAIC02MjQ5LDggKzYzMTYsMTAgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfVW5waWNrbGVyX2ZpbmRfY2xhc3NfaW1wbChVbnBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptb2R1bGVfbmFtZSwgUHlPYmplY3QgKmdsb2JhbF9uYW1lKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY0Yzc3NDM3ZTA4OGUxODggaW5wdXQ9ZTJlNmE4NjVkZTA5M2VmNF0qLworX3BpY2tsZV9VbnBpY2tsZXJfZmluZF9jbGFzc19pbXBsKFVucGlja2xlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kdWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmdsb2JhbF9uYW1lKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlY2MwOGQ3ZjllZDQxZTMgaW5wdXQ9ZTJlNmE4NjVkZTA5M2VmNF0qLwogewogICAgIFB5T2JqZWN0ICpnbG9iYWw7CiAgICAgUHlPYmplY3QgKm1vZHVsZXNfZGljdDsKQEAgLTYzNDcsNyArNjQxNiw3IEBACiB7CiAgICAgUHlfc3NpemVfdCByZXM7CiAKLSAgICByZXMgPSBzaXplb2YoVW5waWNrbGVyT2JqZWN0KTsKKyAgICByZXMgPSBfUHlPYmplY3RfU0laRShQeV9UWVBFKHNlbGYpKTsKICAgICBpZiAoc2VsZi0+bWVtbyAhPSBOVUxMKQogICAgICAgICByZXMgKz0gc2VsZi0+bWVtb19zaXplICogc2l6ZW9mKFB5T2JqZWN0ICopOwogICAgIGlmIChzZWxmLT5tYXJrcyAhPSBOVUxMKQpAQCAtNjQ2MSw4ICs2NTMwLDEwIEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBpbnQKLV9waWNrbGVfVW5waWNrbGVyX19faW5pdF9fX2ltcGwoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSwgaW50IGZpeF9pbXBvcnRzLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI5ZWQxZDg0ZDMxNWYzYjUgaW5wdXQ9MDRlY2U2NjFhYTg4NDgzN10qLworX3BpY2tsZV9VbnBpY2tsZXJfX19pbml0X19faW1wbChVbnBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZml4X2ltcG9ydHMsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTJjOGNlNzQ4ZWRjNTdiMCBpbnB1dD0wNGVjZTY2MWFhODg0ODM3XSovCiB7CiAgICAgX1B5X0lERU5USUZJRVIocGVyc2lzdGVudF9sb2FkKTsKIApAQCAtNjg5MCw4ICs2OTYxLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfZHVtcF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpmaWxlLCBQeU9iamVjdCAqcHJvdG9jb2wsIGludCBmaXhfaW1wb3J0cykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNjA2ZTYyNmQ1NTM4NTBkIGlucHV0PTgzMGY4YTY0Y2VmNmYwNDJdKi8KK19waWNrbGVfZHVtcF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpmaWxlLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnByb3RvY29sLCBpbnQgZml4X2ltcG9ydHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGRlN2RmZjg5YzQwNjgxNiBpbnB1dD04MzBmOGE2NGNlZjZmMDQyXSovCiB7CiAgICAgUGlja2xlck9iamVjdCAqcGlja2xlciA9IF9QaWNrbGVyX05ldygpOwogCkBAIC02OTQzLDggKzcwMTUsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3BpY2tsZV9kdW1wc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpwcm90b2NvbCwgaW50IGZpeF9pbXBvcnRzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc3N2YwZGVlZmU1Yjg4ZWUgaW5wdXQ9MjkzZGJlZGExODE1ODBiN10qLworX3BpY2tsZV9kdW1wc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpwcm90b2NvbCwKKyAgICAgICAgICAgICAgICAgICBpbnQgZml4X2ltcG9ydHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGFhMzgwZGI1NmZlMDdiOSBpbnB1dD0yOTNkYmVkYTE4MTU4MGI3XSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQaWNrbGVyT2JqZWN0ICpwaWNrbGVyID0gX1BpY2tsZXJfTmV3KCk7CkBAIC03MDAzLDggKzcwNzYsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3BpY2tsZV9sb2FkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUsIGludCBmaXhfaW1wb3J0cywgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NjhjNjEzNTZjMTcyNjU0IGlucHV0PTJkZjdjN2ExZTY3NDIyMDRdKi8KK19waWNrbGVfbG9hZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlLCBpbnQgZml4X2ltcG9ydHMsCisgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc5OGYxYzU3Y2IyYjRlYjEgaW5wdXQ9MmRmN2M3YTFlNjc0MjIwNF0qLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgVW5waWNrbGVyT2JqZWN0ICp1bnBpY2tsZXIgPSBfVW5waWNrbGVyX05ldygpOwpAQCAtNzA1Niw4ICs3MTMwLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfbG9hZHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZGF0YSwgaW50IGZpeF9pbXBvcnRzLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiMzg0NWFkMTEwYjI1MjIgaW5wdXQ9ZjU3ZjBmZGFhMmI0Y2I4Yl0qLworX3BpY2tsZV9sb2Fkc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpkYXRhLCBpbnQgZml4X2ltcG9ydHMsCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MWU5Y2RiMDFlMzZhNzM2IGlucHV0PWY1N2YwZmRhYTJiNGNiOGJdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFVucGlja2xlck9iamVjdCAqdW5waWNrbGVyID0gX1VucGlja2xlcl9OZXcoKTsKQEAgLTcxMTksNiArNzE5NCw3IEBACiAgICAgUHlfVklTSVQoc3QtPm5hbWVfbWFwcGluZ18zdG8yKTsKICAgICBQeV9WSVNJVChzdC0+aW1wb3J0X21hcHBpbmdfM3RvMik7CiAgICAgUHlfVklTSVQoc3QtPmNvZGVjc19lbmNvZGUpOworICAgIFB5X1ZJU0lUKHN0LT5nZXRhdHRyKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMgYi9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYwppbmRleCAxNDkwMjIzLi44YmVkYWI1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYworKysgYi9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYwpAQCAtMTE3LDEwICsxMTcsMTEgQEAKICAgICBmb3IgKHNlcV9pZHggPSAwOyBzZXFfaWR4IDwgc2VxX2xlbjsgKytzZXFfaWR4KSB7CiAgICAgICAgIFB5T2JqZWN0KiBweV9mZCA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShmZF9zZXF1ZW5jZSwgc2VxX2lkeCk7CiAgICAgICAgIGxvbmcgaXRlcl9mZCA9IFB5TG9uZ19Bc0xvbmcocHlfZmQpOwotICAgICAgICBpZiAoaXRlcl9mZCA8IDAgfHwgaXRlcl9mZCA8IHByZXZfZmQgfHwgaXRlcl9mZCA+IElOVF9NQVgpIHsKKyAgICAgICAgaWYgKGl0ZXJfZmQgPCAwIHx8IGl0ZXJfZmQgPD0gcHJldl9mZCB8fCBpdGVyX2ZkID4gSU5UX01BWCkgewogICAgICAgICAgICAgLyogTmVnYXRpdmUsIG92ZXJmbG93LCBub3QgYSBMb25nLCB1bnNvcnRlZCwgdG9vIGJpZyBmb3IgYSBmZC4gKi8KICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CisgICAgICAgIHByZXZfZmQgPSBpdGVyX2ZkOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KQEAgLTI3Miw3ICsyNzMsNyBAQAogewogICAgIGludCBmZF9kaXJfZmQ7CiAKLSAgICBmZF9kaXJfZmQgPSBfUHlfb3BlbihGRF9ESVIsIE9fUkRPTkxZKTsKKyAgICBmZF9kaXJfZmQgPSBfUHlfb3Blbl9ub3JhaXNlKEZEX0RJUiwgT19SRE9OTFkpOwogICAgIGlmIChmZF9kaXJfZmQgPT0gLTEpIHsKICAgICAgICAgLyogTm8gd2F5IHRvIGdldCBhIGxpc3Qgb2Ygb3BlbiBmZHMuICovCiAgICAgICAgIF9jbG9zZV9mZHNfYnlfYnJ1dGVfZm9yY2Uoc3RhcnRfZmQsIHB5X2Zkc190b19rZWVwKTsKQEAgLTQwMCw3ICs0MDEsNyBAQAogICAgICAgICAgICBQeU9iamVjdCAqcHJlZXhlY19mbiwKICAgICAgICAgICAgUHlPYmplY3QgKnByZWV4ZWNfZm5fYXJnc190dXBsZSkKIHsKLSAgICBpbnQgaSwgc2F2ZWRfZXJybm8sIHVudXNlZCwgcmVhY2hlZF9wcmVleGVjID0gMDsKKyAgICBpbnQgaSwgc2F2ZWRfZXJybm8sIHJlYWNoZWRfcHJlZXhlYyA9IDA7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBjb25zdCBjaGFyKiBlcnJfbXNnID0gIiI7CiAgICAgLyogQnVmZmVyIGxhcmdlIGVub3VnaCB0byBob2xkIGEgaGV4IGludGVnZXIuICBXZSBjYW4ndCBtYWxsb2MuICovCkBAIC01MTQsMjggKzUxNSwyOSBAQAogICAgIHNhdmVkX2Vycm5vID0gZXJybm87CiAgICAgLyogUmVwb3J0IHRoZSBwb3NpeCBlcnJvciB0byBvdXIgcGFyZW50IHByb2Nlc3MuICovCiAgICAgLyogV2UgaWdub3JlIGFsbCB3cml0ZSgpIHJldHVybiB2YWx1ZXMgYXMgdGhlIHRvdGFsIHNpemUgb2Ygb3VyIHdyaXRlcyBpcwotICAgICAqIGxlc3MgdGhhbiBQSVBFQlVGIGFuZCB3ZSBjYW5ub3QgZG8gYW55dGhpbmcgYWJvdXQgYW4gZXJyb3IgYW55d2F5cy4gKi8KKyAgICAgICBsZXNzIHRoYW4gUElQRUJVRiBhbmQgd2UgY2Fubm90IGRvIGFueXRoaW5nIGFib3V0IGFuIGVycm9yIGFueXdheXMuCisgICAgICAgVXNlIF9QeV93cml0ZV9ub3JhaXNlKCkgdG8gcmV0cnkgd3JpdGUoKSBpZiBpdCBpcyBpbnRlcnJ1cHRlZCBieSBhCisgICAgICAgc2lnbmFsIChmYWlscyB3aXRoIEVJTlRSKS4gKi8KICAgICBpZiAoc2F2ZWRfZXJybm8pIHsKICAgICAgICAgY2hhciAqY3VyOwotICAgICAgICB1bnVzZWQgPSB3cml0ZShlcnJwaXBlX3dyaXRlLCAiT1NFcnJvcjoiLCA4KTsKKyAgICAgICAgX1B5X3dyaXRlX25vcmFpc2UoZXJycGlwZV93cml0ZSwgIk9TRXJyb3I6IiwgOCk7CiAgICAgICAgIGN1ciA9IGhleF9lcnJubyArIHNpemVvZihoZXhfZXJybm8pOwogICAgICAgICB3aGlsZSAoc2F2ZWRfZXJybm8gIT0gMCAmJiBjdXIgPiBoZXhfZXJybm8pIHsKLSAgICAgICAgICAgICotLWN1ciA9ICIwMTIzNDU2Nzg5QUJDREVGIltzYXZlZF9lcnJubyAlIDE2XTsKKyAgICAgICAgICAgICotLWN1ciA9IFB5X2hleGRpZ2l0c1tzYXZlZF9lcnJubyAlIDE2XTsKICAgICAgICAgICAgIHNhdmVkX2Vycm5vIC89IDE2OwogICAgICAgICB9Ci0gICAgICAgIHVudXNlZCA9IHdyaXRlKGVycnBpcGVfd3JpdGUsIGN1ciwgaGV4X2Vycm5vICsgc2l6ZW9mKGhleF9lcnJubykgLSBjdXIpOwotICAgICAgICB1bnVzZWQgPSB3cml0ZShlcnJwaXBlX3dyaXRlLCAiOiIsIDEpOworICAgICAgICBfUHlfd3JpdGVfbm9yYWlzZShlcnJwaXBlX3dyaXRlLCBjdXIsIGhleF9lcnJubyArIHNpemVvZihoZXhfZXJybm8pIC0gY3VyKTsKKyAgICAgICAgX1B5X3dyaXRlX25vcmFpc2UoZXJycGlwZV93cml0ZSwgIjoiLCAxKTsKICAgICAgICAgaWYgKCFyZWFjaGVkX3ByZWV4ZWMpIHsKICAgICAgICAgICAgIC8qIEluZGljYXRlIHRvIHRoZSBwYXJlbnQgdGhhdCB0aGUgZXJyb3IgaGFwcGVuZWQgYmVmb3JlIGV4ZWMoKS4gKi8KLSAgICAgICAgICAgIHVudXNlZCA9IHdyaXRlKGVycnBpcGVfd3JpdGUsICJub2V4ZWMiLCA2KTsKKyAgICAgICAgICAgIF9QeV93cml0ZV9ub3JhaXNlKGVycnBpcGVfd3JpdGUsICJub2V4ZWMiLCA2KTsKICAgICAgICAgfQogICAgICAgICAvKiBXZSBjYW4ndCBjYWxsIHN0cmVycm9yKHNhdmVkX2Vycm5vKS4gIEl0IGlzIG5vdCBhc3luYyBzaWduYWwgc2FmZS4KICAgICAgICAgICogVGhlIHBhcmVudCBwcm9jZXNzIHdpbGwgbG9vayB0aGUgZXJyb3IgbWVzc2FnZSB1cC4gKi8KICAgICB9IGVsc2UgewotICAgICAgICB1bnVzZWQgPSB3cml0ZShlcnJwaXBlX3dyaXRlLCAiU3VicHJvY2Vzc0Vycm9yOjA6IiwgMTgpOwotICAgICAgICB1bnVzZWQgPSB3cml0ZShlcnJwaXBlX3dyaXRlLCBlcnJfbXNnLCBzdHJsZW4oZXJyX21zZykpOworICAgICAgICBfUHlfd3JpdGVfbm9yYWlzZShlcnJwaXBlX3dyaXRlLCAiU3VicHJvY2Vzc0Vycm9yOjA6IiwgMTgpOworICAgICAgICBfUHlfd3JpdGVfbm9yYWlzZShlcnJwaXBlX3dyaXRlLCBlcnJfbXNnLCBzdHJsZW4oZXJyX21zZykpOwogICAgIH0KLSAgICBpZiAodW51c2VkKSByZXR1cm47ICAvKiBzaWxseT8geWVzISBhdm9pZHMgZ2NjIGNvbXBpbGVyIHdhcm5pbmcuICovCiB9CiAKIApAQCAtNTU2LDcgKzU1OCw5IEBACiAgICAgaW50IG5lZWRfdG9fcmVlbmFibGVfZ2MgPSAwOwogICAgIGNoYXIgKmNvbnN0ICpleGVjX2FycmF5LCAqY29uc3QgKmFyZ3YgPSBOVUxMLCAqY29uc3QgKmVudnAgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgYXJnX251bTsKKyNpZmRlZiBXSVRIX1RIUkVBRAogICAgIGludCBpbXBvcnRfbG9ja19oZWxkID0gMDsKKyNlbmRpZgogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKAogICAgICAgICAgICAgYXJncywgIk9PcE9PT2lpaWlpaWlpaWlPOmZvcmtfZXhlYyIsCkBAIC02NTEsOCArNjU1LDEwIEBACiAgICAgICAgIHByZWV4ZWNfZm5fYXJnc190dXBsZSA9IFB5VHVwbGVfTmV3KDApOwogICAgICAgICBpZiAoIXByZWV4ZWNfZm5fYXJnc190dXBsZSkKICAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKKyNpZmRlZiBXSVRIX1RIUkVBRAogICAgICAgICBfUHlJbXBvcnRfQWNxdWlyZUxvY2soKTsKICAgICAgICAgaW1wb3J0X2xvY2tfaGVsZCA9IDE7CisjZW5kaWYKICAgICB9CiAKICAgICBpZiAoY3dkX29iaiAhPSBQeV9Ob25lKSB7CkBAIC02OTUsMTMgKzcwMSwxNSBAQAogICAgICAgICAvKiBDYXB0dXJlIHRoZSBlcnJubyBleGNlcHRpb24gYmVmb3JlIGVycm5vIGNhbiBiZSBjbG9iYmVyZWQuICovCiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICB9Ci0gICAgaWYgKHByZWV4ZWNfZm4gIT0gUHlfTm9uZSAmJgotICAgICAgICBfUHlJbXBvcnRfUmVsZWFzZUxvY2soKSA8IDAgJiYgIVB5RXJyX09jY3VycmVkKCkpIHsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChwcmVleGVjX2ZuICE9IFB5X05vbmUKKyAgICAgICAgJiYgX1B5SW1wb3J0X1JlbGVhc2VMb2NrKCkgPCAwICYmICFQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAibm90IGhvbGRpbmcgdGhlIGltcG9ydCBsb2NrIik7CiAgICAgICAgIHBpZCA9IC0xOwogICAgIH0KICAgICBpbXBvcnRfbG9ja19oZWxkID0gMDsKKyNlbmRpZgogCiAgICAgLyogUGFyZW50IHByb2Nlc3MgKi8KICAgICBpZiAoZW52cCkKQEAgLTcyMyw4ICs3MzEsMTAgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21QaWQocGlkKTsKIAogY2xlYW51cDoKKyNpZmRlZiBXSVRIX1RIUkVBRAogICAgIGlmIChpbXBvcnRfbG9ja19oZWxkKQogICAgICAgICBfUHlJbXBvcnRfUmVsZWFzZUxvY2soKTsKKyNlbmRpZgogICAgIGlmIChlbnZwKQogICAgICAgICBfUHlfRnJlZUNoYXJQQXJyYXkoZW52cCk7CiAgICAgaWYgKGFyZ3YpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYyBiL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCmluZGV4IDQxNmUyNjYuLjk1YWQ0YTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCkBAIC02OSwxNyArNjksMjEgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlIDx0aW1lLmg+ICAgICAgICAgICAgICAgLyogZm9yIHNlZWRpbmcgdG8gY3VycmVudCB0aW1lICovCiAKKyNpZm5kZWYgUFlfVUlOVDMyX1QKKyMgIGVycm9yICJGYWlsZWQgdG8gZmluZCBhbiBleGFjdC13aWR0aCAzMi1iaXQgaW50ZWdlciB0eXBlIgorI2VuZGlmCisKIC8qIFBlcmlvZCBwYXJhbWV0ZXJzIC0tIFRoZXNlIGFyZSBhbGwgbWFnaWMuICBEb24ndCBjaGFuZ2UuICovCiAjZGVmaW5lIE4gNjI0CiAjZGVmaW5lIE0gMzk3Ci0jZGVmaW5lIE1BVFJJWF9BIDB4OTkwOGIwZGZVTCAgIC8qIGNvbnN0YW50IHZlY3RvciBhICovCi0jZGVmaW5lIFVQUEVSX01BU0sgMHg4MDAwMDAwMFVMIC8qIG1vc3Qgc2lnbmlmaWNhbnQgdy1yIGJpdHMgKi8KLSNkZWZpbmUgTE9XRVJfTUFTSyAweDdmZmZmZmZmVUwgLyogbGVhc3Qgc2lnbmlmaWNhbnQgciBiaXRzICovCisjZGVmaW5lIE1BVFJJWF9BIDB4OTkwOGIwZGZVICAgIC8qIGNvbnN0YW50IHZlY3RvciBhICovCisjZGVmaW5lIFVQUEVSX01BU0sgMHg4MDAwMDAwMFUgIC8qIG1vc3Qgc2lnbmlmaWNhbnQgdy1yIGJpdHMgKi8KKyNkZWZpbmUgTE9XRVJfTUFTSyAweDdmZmZmZmZmVSAgLyogbGVhc3Qgc2lnbmlmaWNhbnQgciBiaXRzICovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgdW5zaWduZWQgbG9uZyBzdGF0ZVtOXTsKICAgICBpbnQgaW5kZXg7CisgICAgUFlfVUlOVDMyX1Qgc3RhdGVbTl07CiB9IFJhbmRvbU9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBSYW5kb21fVHlwZTsKQEAgLTkxLDEzICs5NSwxMyBAQAogCiAKIC8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMHhmZmZmZmZmZl0taW50ZXJ2YWwgKi8KLXN0YXRpYyB1bnNpZ25lZCBsb25nCitzdGF0aWMgUFlfVUlOVDMyX1QKIGdlbnJhbmRfaW50MzIoUmFuZG9tT2JqZWN0ICpzZWxmKQogewotICAgIHVuc2lnbmVkIGxvbmcgeTsKLSAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBtYWcwMVsyXT17MHgwVUwsIE1BVFJJWF9BfTsKKyAgICBQWV9VSU5UMzJfVCB5OworICAgIHN0YXRpYyBQWV9VSU5UMzJfVCBtYWcwMVsyXT17MHgwVSwgTUFUUklYX0F9OwogICAgIC8qIG1hZzAxW3hdID0geCAqIE1BVFJJWF9BICBmb3IgeD0wLDEgKi8KLSAgICB1bnNpZ25lZCBsb25nICptdDsKKyAgICBQWV9VSU5UMzJfVCAqbXQ7CiAKICAgICBtdCA9IHNlbGYtPnN0YXRlOwogICAgIGlmIChzZWxmLT5pbmRleCA+PSBOKSB7IC8qIGdlbmVyYXRlIE4gd29yZHMgYXQgb25lIHRpbWUgKi8KQEAgLTEwNSwyMiArMTA5LDIyIEBACiAKICAgICAgICAgZm9yIChraz0wO2trPE4tTTtraysrKSB7CiAgICAgICAgICAgICB5ID0gKG10W2trXSZVUFBFUl9NQVNLKXwobXRba2srMV0mTE9XRVJfTUFTSyk7Ci0gICAgICAgICAgICBtdFtra10gPSBtdFtraytNXSBeICh5ID4+IDEpIF4gbWFnMDFbeSAmIDB4MVVMXTsKKyAgICAgICAgICAgIG10W2trXSA9IG10W2trK01dIF4gKHkgPj4gMSkgXiBtYWcwMVt5ICYgMHgxVV07CiAgICAgICAgIH0KICAgICAgICAgZm9yICg7a2s8Ti0xO2trKyspIHsKICAgICAgICAgICAgIHkgPSAobXRba2tdJlVQUEVSX01BU0spfChtdFtraysxXSZMT1dFUl9NQVNLKTsKLSAgICAgICAgICAgIG10W2trXSA9IG10W2trKyhNLU4pXSBeICh5ID4+IDEpIF4gbWFnMDFbeSAmIDB4MVVMXTsKKyAgICAgICAgICAgIG10W2trXSA9IG10W2trKyhNLU4pXSBeICh5ID4+IDEpIF4gbWFnMDFbeSAmIDB4MVVdOwogICAgICAgICB9CiAgICAgICAgIHkgPSAobXRbTi0xXSZVUFBFUl9NQVNLKXwobXRbMF0mTE9XRVJfTUFTSyk7Ci0gICAgICAgIG10W04tMV0gPSBtdFtNLTFdIF4gKHkgPj4gMSkgXiBtYWcwMVt5ICYgMHgxVUxdOworICAgICAgICBtdFtOLTFdID0gbXRbTS0xXSBeICh5ID4+IDEpIF4gbWFnMDFbeSAmIDB4MVVdOwogCiAgICAgICAgIHNlbGYtPmluZGV4ID0gMDsKICAgICB9CiAKICAgICB5ID0gbXRbc2VsZi0+aW5kZXgrK107CiAgICAgeSBePSAoeSA+PiAxMSk7Ci0gICAgeSBePSAoeSA8PCA3KSAmIDB4OWQyYzU2ODBVTDsKLSAgICB5IF49ICh5IDw8IDE1KSAmIDB4ZWZjNjAwMDBVTDsKKyAgICB5IF49ICh5IDw8IDcpICYgMHg5ZDJjNTY4MFU7CisgICAgeSBePSAoeSA8PCAxNSkgJiAweGVmYzYwMDAwVTsKICAgICB5IF49ICh5ID4+IDE4KTsKICAgICByZXR1cm4geTsKIH0KQEAgLTEzNywyOCArMTQxLDI2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcmFuZG9tX3JhbmRvbShSYW5kb21PYmplY3QgKnNlbGYpCiB7Ci0gICAgdW5zaWduZWQgbG9uZyBhPWdlbnJhbmRfaW50MzIoc2VsZik+PjUsIGI9Z2VucmFuZF9pbnQzMihzZWxmKT4+NjsKKyAgICBQWV9VSU5UMzJfVCBhPWdlbnJhbmRfaW50MzIoc2VsZik+PjUsIGI9Z2VucmFuZF9pbnQzMihzZWxmKT4+NjsKICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKChhKjY3MTA4ODY0LjArYikqKDEuMC85MDA3MTk5MjU0NzQwOTkyLjApKTsKIH0KIAogLyogaW5pdGlhbGl6ZXMgbXRbTl0gd2l0aCBhIHNlZWQgKi8KIHN0YXRpYyB2b2lkCi1pbml0X2dlbnJhbmQoUmFuZG9tT2JqZWN0ICpzZWxmLCB1bnNpZ25lZCBsb25nIHMpCitpbml0X2dlbnJhbmQoUmFuZG9tT2JqZWN0ICpzZWxmLCBQWV9VSU5UMzJfVCBzKQogewogICAgIGludCBtdGk7Ci0gICAgdW5zaWduZWQgbG9uZyAqbXQ7CisgICAgUFlfVUlOVDMyX1QgKm10OwogCiAgICAgbXQgPSBzZWxmLT5zdGF0ZTsKLSAgICBtdFswXT0gcyAmIDB4ZmZmZmZmZmZVTDsKKyAgICBtdFswXT0gczsKICAgICBmb3IgKG10aT0xOyBtdGk8TjsgbXRpKyspIHsKICAgICAgICAgbXRbbXRpXSA9Ci0gICAgICAgICgxODEyNDMzMjUzVUwgKiAobXRbbXRpLTFdIF4gKG10W210aS0xXSA+PiAzMCkpICsgbXRpKTsKKyAgICAgICAgKDE4MTI0MzMyNTNVICogKG10W210aS0xXSBeIChtdFttdGktMV0gPj4gMzApKSArIG10aSk7CiAgICAgICAgIC8qIFNlZSBLbnV0aCBUQU9DUCBWb2wyLiAzcmQgRWQuIFAuMTA2IGZvciBtdWx0aXBsaWVyLiAqLwogICAgICAgICAvKiBJbiB0aGUgcHJldmlvdXMgdmVyc2lvbnMsIE1TQnMgb2YgdGhlIHNlZWQgYWZmZWN0ICAgKi8KICAgICAgICAgLyogb25seSBNU0JzIG9mIHRoZSBhcnJheSBtdFtdLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgLyogMjAwMi8wMS8wOSBtb2RpZmllZCBieSBNYWtvdG8gTWF0c3Vtb3RvICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgbXRbbXRpXSAmPSAweGZmZmZmZmZmVUw7Ci0gICAgICAgIC8qIGZvciA+MzIgYml0IG1hY2hpbmVzICovCiAgICAgfQogICAgIHNlbGYtPmluZGV4ID0gbXRpOwogICAgIHJldHVybjsKQEAgLTE2OCwzMiArMTcwLDMwIEBACiAvKiBpbml0X2tleSBpcyB0aGUgYXJyYXkgZm9yIGluaXRpYWxpemluZyBrZXlzICovCiAvKiBrZXlfbGVuZ3RoIGlzIGl0cyBsZW5ndGggKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1pbml0X2J5X2FycmF5KFJhbmRvbU9iamVjdCAqc2VsZiwgdW5zaWduZWQgbG9uZyBpbml0X2tleVtdLCBzaXplX3Qga2V5X2xlbmd0aCkKK2luaXRfYnlfYXJyYXkoUmFuZG9tT2JqZWN0ICpzZWxmLCBQWV9VSU5UMzJfVCBpbml0X2tleVtdLCBzaXplX3Qga2V5X2xlbmd0aCkKIHsKICAgICBzaXplX3QgaSwgaiwgazsgICAgICAgLyogd2FzIHNpZ25lZCBpbiB0aGUgb3JpZ2luYWwgY29kZS4gUkRIIDEyLzE2LzIwMDIgKi8KLSAgICB1bnNpZ25lZCBsb25nICptdDsKKyAgICBQWV9VSU5UMzJfVCAqbXQ7CiAKICAgICBtdCA9IHNlbGYtPnN0YXRlOwotICAgIGluaXRfZ2VucmFuZChzZWxmLCAxOTY1MDIxOFVMKTsKKyAgICBpbml0X2dlbnJhbmQoc2VsZiwgMTk2NTAyMThVKTsKICAgICBpPTE7IGo9MDsKICAgICBrID0gKE4+a2V5X2xlbmd0aCA/IE4gOiBrZXlfbGVuZ3RoKTsKICAgICBmb3IgKDsgazsgay0tKSB7Ci0gICAgICAgIG10W2ldID0gKG10W2ldIF4gKChtdFtpLTFdIF4gKG10W2ktMV0gPj4gMzApKSAqIDE2NjQ1MjVVTCkpCi0gICAgICAgICAgICAgICAgICsgaW5pdF9rZXlbal0gKyAodW5zaWduZWQgbG9uZylqOyAvKiBub24gbGluZWFyICovCi0gICAgICAgIG10W2ldICY9IDB4ZmZmZmZmZmZVTDsgLyogZm9yIFdPUkRTSVpFID4gMzIgbWFjaGluZXMgKi8KKyAgICAgICAgbXRbaV0gPSAobXRbaV0gXiAoKG10W2ktMV0gXiAobXRbaS0xXSA+PiAzMCkpICogMTY2NDUyNVUpKQorICAgICAgICAgICAgICAgICArIGluaXRfa2V5W2pdICsgKFBZX1VJTlQzMl9UKWo7IC8qIG5vbiBsaW5lYXIgKi8KICAgICAgICAgaSsrOyBqKys7CiAgICAgICAgIGlmIChpPj1OKSB7IG10WzBdID0gbXRbTi0xXTsgaT0xOyB9CiAgICAgICAgIGlmIChqPj1rZXlfbGVuZ3RoKSBqPTA7CiAgICAgfQogICAgIGZvciAoaz1OLTE7IGs7IGstLSkgewotICAgICAgICBtdFtpXSA9IChtdFtpXSBeICgobXRbaS0xXSBeIChtdFtpLTFdID4+IDMwKSkgKiAxNTY2MDgzOTQxVUwpKQotICAgICAgICAgICAgICAgICAtICh1bnNpZ25lZCBsb25nKWk7IC8qIG5vbiBsaW5lYXIgKi8KLSAgICAgICAgbXRbaV0gJj0gMHhmZmZmZmZmZlVMOyAvKiBmb3IgV09SRFNJWkUgPiAzMiBtYWNoaW5lcyAqLworICAgICAgICBtdFtpXSA9IChtdFtpXSBeICgobXRbaS0xXSBeIChtdFtpLTFdID4+IDMwKSkgKiAxNTY2MDgzOTQxVSkpCisgICAgICAgICAgICAgICAgIC0gKFBZX1VJTlQzMl9UKWk7IC8qIG5vbiBsaW5lYXIgKi8KICAgICAgICAgaSsrOwogICAgICAgICBpZiAoaT49TikgeyBtdFswXSA9IG10W04tMV07IGk9MTsgfQogICAgIH0KIAotICAgIG10WzBdID0gMHg4MDAwMDAwMFVMOyAvKiBNU0IgaXMgMTsgYXNzdXJpbmcgbm9uLXplcm8gaW5pdGlhbCBhcnJheSAqLworICAgIG10WzBdID0gMHg4MDAwMDAwMFU7IC8qIE1TQiBpcyAxOyBhc3N1cmluZyBub24temVybyBpbml0aWFsIGFycmF5ICovCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQpAQCAtMjA4LDkgKzIwOCw4IEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7ICAgICAgICAgICAgLyogZ3VpbHR5IHVudGlsIHByb3ZlZCBpbm5vY2VudCAqLwogICAgIFB5T2JqZWN0ICpuID0gTlVMTDsKLSAgICB1bnNpZ25lZCBsb25nICprZXkgPSBOVUxMOwotICAgIHVuc2lnbmVkIGNoYXIgKmtleV9hc19ieXRlcyA9IE5VTEw7Ci0gICAgc2l6ZV90IGJpdHMsIGtleXVzZWQsIGk7CisgICAgUFlfVUlOVDMyX1QgKmtleSA9IE5VTEw7CisgICAgc2l6ZV90IGJpdHMsIGtleXVzZWQ7CiAgICAgaW50IHJlczsKICAgICBQeU9iamVjdCAqYXJnID0gTlVMTDsKIApAQCAtMjIxLDcgKzIyMCw3IEBACiAgICAgICAgIHRpbWVfdCBub3c7CiAKICAgICAgICAgdGltZSgmbm93KTsKLSAgICAgICAgaW5pdF9nZW5yYW5kKHNlbGYsICh1bnNpZ25lZCBsb25nKW5vdyk7CisgICAgICAgIGluaXRfZ2VucmFuZChzZWxmLCAoUFlfVUlOVDMyX1Qpbm93KTsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9CkBAIC0yNDksMzUgKzI0OCwzMSBAQAogICAgIGtleXVzZWQgPSBiaXRzID09IDAgPyAxIDogKGJpdHMgLSAxKSAvIDMyICsgMTsKIAogICAgIC8qIENvbnZlcnQgc2VlZCB0byBieXRlIHNlcXVlbmNlLiAqLwotICAgIGtleV9hc19ieXRlcyA9ICh1bnNpZ25lZCBjaGFyICopUHlNZW1fTWFsbG9jKChzaXplX3QpNCAqIGtleXVzZWQpOwotICAgIGlmIChrZXlfYXNfYnl0ZXMgPT0gTlVMTCkgeworICAgIGtleSA9IChQWV9VSU5UMzJfVCAqKVB5TWVtX01hbGxvYygoc2l6ZV90KTQgKiBrZXl1c2VkKTsKKyAgICBpZiAoa2V5ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgZ290byBEb25lOwogICAgIH0KICAgICByZXMgPSBfUHlMb25nX0FzQnl0ZUFycmF5KChQeUxvbmdPYmplY3QgKiluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5X2FzX2J5dGVzLCBrZXl1c2VkICogNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsICAvKiBsaXR0bGUtZW5kaWFuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKWtleSwga2V5dXNlZCAqIDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9MSVRUTEVfRU5ESUFOLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7IC8qIHVuc2lnbmVkICovCiAgICAgaWYgKHJlcyA9PSAtMSkgewotICAgICAgICBQeU1lbV9GcmVlKGtleV9hc19ieXRlcyk7CisgICAgICAgIFB5TWVtX0ZyZWUoa2V5KTsKICAgICAgICAgZ290byBEb25lOwogICAgIH0KIAotICAgIC8qIEZpbGwgYXJyYXkgb2YgdW5zaWduZWQgbG9uZ3MgZnJvbSBieXRlIHNlcXVlbmNlLiAqLwotICAgIGtleSA9ICh1bnNpZ25lZCBsb25nICopUHlNZW1fTWFsbG9jKHNpemVvZih1bnNpZ25lZCBsb25nKSAqIGtleXVzZWQpOwotICAgIGlmIChrZXkgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICBQeU1lbV9GcmVlKGtleV9hc19ieXRlcyk7Ci0gICAgICAgIGdvdG8gRG9uZTsKKyNpZiBQWV9CSUdfRU5ESUFOCisgICAgeworICAgICAgICBzaXplX3QgaSwgajsKKyAgICAgICAgLyogUmV2ZXJzZSBhbiBhcnJheS4gKi8KKyAgICAgICAgZm9yIChpID0gMCwgaiA9IGtleXVzZWQgLSAxOyBpIDwgajsgaSsrLCBqLS0pIHsKKyAgICAgICAgICAgIFBZX1VJTlQzMl9UIHRtcCA9IGtleVtpXTsKKyAgICAgICAgICAgIGtleVtpXSA9IGtleVtqXTsKKyAgICAgICAgICAgIGtleVtqXSA9IHRtcDsKKyAgICAgICAgfQogICAgIH0KLSAgICBmb3IgKGkgPSAwOyBpIDwga2V5dXNlZDsgaSsrKSB7Ci0gICAgICAgIGtleVtpXSA9Ci0gICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcpa2V5X2FzX2J5dGVzWzQqaSArIDBdIDw8IDApICsKLSAgICAgICAgICAgICgodW5zaWduZWQgbG9uZylrZXlfYXNfYnl0ZXNbNCppICsgMV0gPDwgOCkgKwotICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nKWtleV9hc19ieXRlc1s0KmkgKyAyXSA8PCAxNikgKwotICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nKWtleV9hc19ieXRlc1s0KmkgKyAzXSA8PCAyNCk7Ci0gICAgfQotICAgIFB5TWVtX0ZyZWUoa2V5X2FzX2J5dGVzKTsKKyNlbmRpZgogICAgIHJlc3VsdCA9IGluaXRfYnlfYXJyYXkoc2VsZiwga2V5LCBrZXl1c2VkKTsKIERvbmU6CiAgICAgUHlfWERFQ1JFRihuKTsKQEAgLTMzNCw3ICszMjksNyBAQAogICAgICAgICBlbGVtZW50ID0gUHlMb25nX0FzVW5zaWduZWRMb25nKFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIGkpKTsKICAgICAgICAgaWYgKGVsZW1lbnQgPT0gKHVuc2lnbmVkIGxvbmcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzZWxmLT5zdGF0ZVtpXSA9IGVsZW1lbnQgJiAweGZmZmZmZmZmVUw7IC8qIE1ha2Ugc3VyZSB3ZSBnZXQgc2FuZSBzdGF0ZSAqLworICAgICAgICBzZWxmLT5zdGF0ZVtpXSA9IChQWV9VSU5UMzJfVCllbGVtZW50OwogICAgIH0KIAogICAgIGluZGV4ID0gUHlMb25nX0FzTG9uZyhQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCBpKSk7CkBAIC0zNTMsOSArMzQ4LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiByYW5kb21fZ2V0cmFuZGJpdHMoUmFuZG9tT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBpbnQgaywgaSwgYnl0ZXM7Ci0gICAgdW5zaWduZWQgbG9uZyByOwotICAgIHVuc2lnbmVkIGNoYXIgKmJ5dGVhcnJheTsKKyAgICBpbnQgaywgaSwgd29yZHM7CisgICAgUFlfVUlOVDMyX1QgcjsKKyAgICBQWV9VSU5UMzJfVCAqd29yZGFycmF5OwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6Z2V0cmFuZGJpdHMiLCAmaykpCkBAIC0zNzAsMjcgKzM2NSwzMCBAQAogICAgIGlmIChrIDw9IDMyKSAgLyogRmFzdCBwYXRoICovCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhnZW5yYW5kX2ludDMyKHNlbGYpID4+ICgzMiAtIGspKTsKIAotICAgIGJ5dGVzID0gKChrIC0gMSkgLyAzMiArIDEpICogNDsKLSAgICBieXRlYXJyYXkgPSAodW5zaWduZWQgY2hhciAqKVB5TWVtX01hbGxvYyhieXRlcyk7Ci0gICAgaWYgKGJ5dGVhcnJheSA9PSBOVUxMKSB7CisgICAgd29yZHMgPSAoayAtIDEpIC8gMzIgKyAxOworICAgIHdvcmRhcnJheSA9IChQWV9VSU5UMzJfVCAqKVB5TWVtX01hbGxvYyh3b3JkcyAqIDQpOworICAgIGlmICh3b3JkYXJyYXkgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICAvKiBGaWxsLW91dCB3aG9sZSB3b3JkcywgYnl0ZS1ieS1ieXRlIHRvIGF2b2lkIGVuZGlhbm5lc3MgaXNzdWVzICovCi0gICAgZm9yIChpPTAgOyBpPGJ5dGVzIDsgaSs9NCwgay09MzIpIHsKKyAgICAvKiBGaWxsLW91dCBiaXRzIG9mIGxvbmcgaW50ZWdlciwgYnkgMzItYml0IHdvcmRzLCBmcm9tIGxlYXN0IHNpZ25pZmljYW50CisgICAgICAgdG8gbW9zdCBzaWduaWZpY2FudC4gKi8KKyNpZiBQWV9MSVRUTEVfRU5ESUFOCisgICAgZm9yIChpID0gMDsgaSA8IHdvcmRzOyBpKyssIGsgLT0gMzIpCisjZWxzZQorICAgIGZvciAoaSA9IHdvcmRzIC0gMTsgaSA+PSAwOyBpLS0sIGsgLT0gMzIpCisjZW5kaWYKKyAgICB7CiAgICAgICAgIHIgPSBnZW5yYW5kX2ludDMyKHNlbGYpOwogICAgICAgICBpZiAoayA8IDMyKQotICAgICAgICAgICAgciA+Pj0gKDMyIC0gayk7Ci0gICAgICAgIGJ5dGVhcnJheVtpKzBdID0gKHVuc2lnbmVkIGNoYXIpcjsKLSAgICAgICAgYnl0ZWFycmF5W2krMV0gPSAodW5zaWduZWQgY2hhcikociA+PiA4KTsKLSAgICAgICAgYnl0ZWFycmF5W2krMl0gPSAodW5zaWduZWQgY2hhcikociA+PiAxNik7Ci0gICAgICAgIGJ5dGVhcnJheVtpKzNdID0gKHVuc2lnbmVkIGNoYXIpKHIgPj4gMjQpOworICAgICAgICAgICAgciA+Pj0gKDMyIC0gayk7ICAvKiBEcm9wIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgKi8KKyAgICAgICAgd29yZGFycmF5W2ldID0gcjsKICAgICB9CiAKLSAgICAvKiBsaXR0bGUgZW5kaWFuIG9yZGVyIHRvIG1hdGNoIGJ5dGVhcnJheSBhc3NpZ25tZW50IG9yZGVyICovCi0gICAgcmVzdWx0ID0gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KGJ5dGVhcnJheSwgYnl0ZXMsIDEsIDApOwotICAgIFB5TWVtX0ZyZWUoYnl0ZWFycmF5KTsKKyAgICByZXN1bHQgPSBfUHlMb25nX0Zyb21CeXRlQXJyYXkoKHVuc2lnbmVkIGNoYXIgKil3b3JkYXJyYXksIHdvcmRzICogNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfTElUVExFX0VORElBTiwgMCAvKiB1bnNpZ25lZCAqLyk7CisgICAgUHlNZW1fRnJlZSh3b3JkYXJyYXkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NjcHJveHkuYyBiL01vZHVsZXMvX3NjcHJveHkuYwppbmRleCAzYjJhMzhlLi42NmI2ZTM0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zY3Byb3h5LmMKKysrIGIvTW9kdWxlcy9fc2Nwcm94eS5jCkBAIC0yNDksNyArMjQ5LDcgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLVB5T2JqZWN0KgorUHlNT0RJTklUX0ZVTkMKIFB5SW5pdF9fc2Nwcm94eSh2b2lkKQogewogICAgIHJldHVybiBQeU1vZHVsZV9DcmVhdGUoJm1vZF9tb2R1bGUpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKaW5kZXggZDM5MDMyOC4uNzAxOGY5ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYworKysgYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCkBAIC0yMDQsOCArMjA0LDggQEAKICAgICAgICAgbm9kZSA9IG5vZGUtPm5leHQ7CiAgICAgfQogCi0gICAgUHlfREVDUkVGKHNlbGYtPnN0YXRlbWVudF9jYWNoZSk7Ci0gICAgc2VsZi0+c3RhdGVtZW50X2NhY2hlID0gKHB5c3FsaXRlX0NhY2hlKilQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0KikmcHlzcWxpdGVfQ2FjaGVUeXBlLCAiTyIsIHNlbGYpOworICAgIFB5X1NFVFJFRihzZWxmLT5zdGF0ZW1lbnRfY2FjaGUsCisgICAgICAgICAgICAgIChweXNxbGl0ZV9DYWNoZSAqKVB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QgKikmcHlzcWxpdGVfQ2FjaGVUeXBlLCAiTyIsIHNlbGYpKTsKICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgc2VsZi0+c3RhdGVtZW50X2NhY2hlLT5kZWNyZWZfZmFjdG9yeSA9IDA7CiB9CkBAIC0zMTgsOSArMzE4LDggQEAKICAgICBfcHlzcWxpdGVfZHJvcF91bnVzZWRfY3Vyc29yX3JlZmVyZW5jZXMoc2VsZik7CiAKICAgICBpZiAoY3Vyc29yICYmIHNlbGYtPnJvd19mYWN0b3J5ICE9IFB5X05vbmUpIHsKLSAgICAgICAgUHlfWERFQ1JFRigoKHB5c3FsaXRlX0N1cnNvciopY3Vyc29yKS0+cm93X2ZhY3RvcnkpOwogICAgICAgICBQeV9JTkNSRUYoc2VsZi0+cm93X2ZhY3RvcnkpOwotICAgICAgICAoKHB5c3FsaXRlX0N1cnNvciopY3Vyc29yKS0+cm93X2ZhY3RvcnkgPSBzZWxmLT5yb3dfZmFjdG9yeTsKKyAgICAgICAgUHlfU0VUUkVGKCgocHlzcWxpdGVfQ3Vyc29yICopY3Vyc29yKS0+cm93X2ZhY3RvcnksIHNlbGYtPnJvd19mYWN0b3J5KTsKICAgICB9CiAKICAgICByZXR1cm4gY3Vyc29yOwpAQCAtNzk1LDggKzc5NCw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBQeV9ERUNSRUYoc2VsZi0+c3RhdGVtZW50cyk7Ci0gICAgc2VsZi0+c3RhdGVtZW50cyA9IG5ld19saXN0OworICAgIFB5X1NFVFJFRihzZWxmLT5zdGF0ZW1lbnRzLCBuZXdfbGlzdCk7CiB9CiAKIHN0YXRpYyB2b2lkIF9weXNxbGl0ZV9kcm9wX3VudXNlZF9jdXJzb3JfcmVmZXJlbmNlcyhweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmKQpAQCAtODI3LDggKzgyNSw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBQeV9ERUNSRUYoc2VsZi0+Y3Vyc29ycyk7Ci0gICAgc2VsZi0+Y3Vyc29ycyA9IG5ld19saXN0OworICAgIFB5X1NFVFJFRihzZWxmLT5jdXJzb3JzLCBuZXdfbGlzdCk7CiB9CiAKIFB5T2JqZWN0KiBweXNxbGl0ZV9jb25uZWN0aW9uX2NyZWF0ZV9mdW5jdGlvbihweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3YXJncykKQEAgLTEyNDEsNiArMTIzOCw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIGlmICghX1B5QXJnX05vS2V5d29yZHMoTU9EVUxFX05BTUUgIi5Db25uZWN0aW9uKCkiLCBrd2FyZ3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyIsICZzcWwpKQogICAgICAgICByZXR1cm4gTlVMTDsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaCBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmgKaW5kZXggMGM5NzM0Yy4uZmJkOTA2MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaAorKysgYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oCkBAIC01Miw3ICs1Miw3IEBACiAgICAgICogZmlyc3QgZ2V0IGNhbGxlZCB3aXRoIGNvdW50PTA/ICovCiAgICAgZG91YmxlIHRpbWVvdXRfc3RhcnRlZDsKIAotICAgIC8qIE5vbmUgZm9yIGF1dG9jb21taXQsIG90aGVyd2lzZSBhIFB5U3RyaW5nIHdpdGggdGhlIGlzb2xhdGlvbiBsZXZlbCAqLworICAgIC8qIE5vbmUgZm9yIGF1dG9jb21taXQsIG90aGVyd2lzZSBhIFB5VW5pY29kZSB3aXRoIHRoZSBpc29sYXRpb24gbGV2ZWwgKi8KICAgICBQeU9iamVjdCogaXNvbGF0aW9uX2xldmVsOwogCiAgICAgLyogTlVMTCBmb3IgYXV0b2NvbW1pdCwgb3RoZXJ3aXNlIGEgc3RyaW5nIHdpdGggdGhlIEJFR0lOIHN0YXRlbWVudDsgd2lsbCBiZQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jIGIvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCmluZGV4IGRiOTZiMDIuLmMwYzg3NDYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKQEAgLTQ2LDcgKzQ2LDcgQEAKIAogICAgIGRzdCA9IGJ1ZjsKICAgICAqZHN0ID0gMDsKLSAgICB3aGlsZSAoUHlfSVNBTFBIQSgqc3JjKSAmJiBkc3QgLSBidWYgPCBzaXplb2YoYnVmKSAtIDIpIHsKKyAgICB3aGlsZSAoUHlfSVNBTFBIQSgqc3JjKSAmJiAoZHN0IC0gYnVmKSA8ICgoUHlfc3NpemVfdClzaXplb2YoYnVmKSAtIDIpKSB7CiAgICAgICAgICpkc3QrKyA9IFB5X1RPTE9XRVIoKnNyYysrKTsKICAgICB9CiAKQEAgLTE3MCw4ICsxNzAsNyBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBQeV9YREVDUkVGKHNlbGYtPnJvd19jYXN0X21hcCk7Ci0gICAgc2VsZi0+cm93X2Nhc3RfbWFwID0gUHlMaXN0X05ldygwKTsKKyAgICBQeV9TRVRSRUYoc2VsZi0+cm93X2Nhc3RfbWFwLCBQeUxpc3RfTmV3KDApKTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBzcWxpdGUzX2NvbHVtbl9jb3VudChzZWxmLT5zdGF0ZW1lbnQtPnN0KTsgaSsrKSB7CiAgICAgICAgIGNvbnZlcnRlciA9IE5VTEw7CkBAIC0zMzQsMTEgKzMzMyw3IEBACiAgICAgICAgICAgICAgICAgaWYgKHNlbGYtPmNvbm5lY3Rpb24tPnRleHRfZmFjdG9yeSA9PSAoUHlPYmplY3QqKSZQeVVuaWNvZGVfVHlwZSkgewogICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUodmFsX3N0ciwgbmJ5dGVzKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb252ZXJ0ZWQpIHsKLSNpZmRlZiBQeV9ERUJVRwotICAgICAgICAgICAgICAgICAgICAgICAgLyogaW4gZGVidWcgbW9kZSwgdHlwZV9jYWxsKCkgZmFpbHMgd2l0aCBhbiBhc3NlcnRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yIGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQgd2hlbiBpdCBpcyBjYWxsZWQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0jZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG5hbWUgPSBzcWxpdGUzX2NvbHVtbl9uYW1lKHNlbGYtPnN0YXRlbWVudC0+c3QsIGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb2xuYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbmFtZSA9ICI8dW5rbm93biBjb2x1bW4gbmFtZT4iOwpAQCAtNTE0LDkgKzUwOSw4IEBACiAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAvKiByZXNldCBkZXNjcmlwdGlvbiBhbmQgcm93Y291bnQgKi8KLSAgICBQeV9ERUNSRUYoc2VsZi0+ZGVzY3JpcHRpb24pOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICBzZWxmLT5kZXNjcmlwdGlvbiA9IFB5X05vbmU7CisgICAgUHlfU0VUUkVGKHNlbGYtPmRlc2NyaXB0aW9uLCBQeV9Ob25lKTsKICAgICBzZWxmLT5yb3djb3VudCA9IC0xTDsKIAogICAgIGZ1bmNfYXJncyA9IFB5VHVwbGVfTmV3KDEpOwpAQCAtNTMwLDEwICs1MjQsMTAgQEAKIAogICAgIGlmIChzZWxmLT5zdGF0ZW1lbnQpIHsKICAgICAgICAgKHZvaWQpcHlzcWxpdGVfc3RhdGVtZW50X3Jlc2V0KHNlbGYtPnN0YXRlbWVudCk7Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmLT5zdGF0ZW1lbnQpOwogICAgIH0KIAotICAgIHNlbGYtPnN0YXRlbWVudCA9IChweXNxbGl0ZV9TdGF0ZW1lbnQqKXB5c3FsaXRlX2NhY2hlX2dldChzZWxmLT5jb25uZWN0aW9uLT5zdGF0ZW1lbnRfY2FjaGUsIGZ1bmNfYXJncyk7CisgICAgUHlfU0VUUkVGKHNlbGYtPnN0YXRlbWVudCwKKyAgICAgICAgICAgICAgKHB5c3FsaXRlX1N0YXRlbWVudCAqKXB5c3FsaXRlX2NhY2hlX2dldChzZWxmLT5jb25uZWN0aW9uLT5zdGF0ZW1lbnRfY2FjaGUsIGZ1bmNfYXJncykpOwogICAgIFB5X0RFQ1JFRihmdW5jX2FyZ3MpOwogCiAgICAgaWYgKCFzZWxmLT5zdGF0ZW1lbnQpIHsKQEAgLTU0MSw4ICs1MzUsOCBAQAogICAgIH0KIAogICAgIGlmIChzZWxmLT5zdGF0ZW1lbnQtPmluX3VzZSkgewotICAgICAgICBQeV9ERUNSRUYoc2VsZi0+c3RhdGVtZW50KTsKLSAgICAgICAgc2VsZi0+c3RhdGVtZW50ID0gUHlPYmplY3RfTmV3KHB5c3FsaXRlX1N0YXRlbWVudCwgJnB5c3FsaXRlX1N0YXRlbWVudFR5cGUpOworICAgICAgICBQeV9TRVRSRUYoc2VsZi0+c3RhdGVtZW50LAorICAgICAgICAgICAgICAgICAgUHlPYmplY3RfTmV3KHB5c3FsaXRlX1N0YXRlbWVudCwgJnB5c3FsaXRlX1N0YXRlbWVudFR5cGUpKTsKICAgICAgICAgaWYgKCFzZWxmLT5zdGF0ZW1lbnQpIHsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KQEAgLTY1OCw4ICs2NTIsNyBAQAogICAgICAgICAgICAgICAgIG51bWNvbHMgPSBzcWxpdGUzX2NvbHVtbl9jb3VudChzZWxmLT5zdGF0ZW1lbnQtPnN0KTsKICAgICAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYtPmRlc2NyaXB0aW9uKTsKLSAgICAgICAgICAgICAgICBzZWxmLT5kZXNjcmlwdGlvbiA9IFB5VHVwbGVfTmV3KG51bWNvbHMpOworICAgICAgICAgICAgICAgIFB5X1NFVFJFRihzZWxmLT5kZXNjcmlwdGlvbiwgUHlUdXBsZV9OZXcobnVtY29scykpOwogICAgICAgICAgICAgICAgIGlmICghc2VsZi0+ZGVzY3JpcHRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvbWljcm9wcm90b2NvbHMuaCBiL01vZHVsZXMvX3NxbGl0ZS9taWNyb3Byb3RvY29scy5oCmluZGV4IDNhOTk0NGYuLjY5NDE3MTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9taWNyb3Byb3RvY29scy5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9taWNyb3Byb3RvY29scy5oCkBAIC00OCw3ICs0OCw3IEBACiAgICAgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKnByb3RvLCBQeU9iamVjdCAqYWx0KTsKIAogZXh0ZXJuIFB5T2JqZWN0ICoKLSAgICBweXNxbGl0ZV9hZGFwdChweXNxbGl0ZV9DdXJzb3IqIHNlbGYsIFB5T2JqZWN0ICphcmdzKTsgICAKKyAgICBweXNxbGl0ZV9hZGFwdChweXNxbGl0ZV9DdXJzb3IqIHNlbGYsIFB5T2JqZWN0ICphcmdzKTsKICNkZWZpbmUgcHlzcWxpdGVfYWRhcHRfZG9jIFwKICAgICAiYWRhcHQob2JqLCBwcm90b2NvbCwgYWx0ZXJuYXRlKSAtPiBhZGFwdCBvYmogdG8gZ2l2ZW4gcHJvdG9jb2wuIE5vbi1zdGFuZGFyZC4iCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9yb3cuYyBiL01vZHVsZXMvX3NxbGl0ZS9yb3cuYwppbmRleCBlZTczNDQ2Li4wNzU4NGUzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvcm93LmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL3Jvdy5jCkBAIC0xNDIsOCArMTQyLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soaWR4KSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInNsaWNlcyBub3QgaW1wbGVtZW50ZWQsIHlldCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0dldEl0ZW0oc2VsZi0+ZGF0YSwgaWR4KTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAiSW5kZXggbXVzdCBiZSBpbnQgb3Igc3RyaW5nIik7CkBAIC0xNTksNyArMTU4LDcgQEAKIFB5T2JqZWN0KiBweXNxbGl0ZV9yb3dfa2V5cyhweXNxbGl0ZV9Sb3cqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3dhcmdzKQogewogICAgIFB5T2JqZWN0KiBsaXN0OwotICAgIGludCBuaXRlbXMsIGk7CisgICAgUHlfc3NpemVfdCBuaXRlbXMsIGk7CiAKICAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKICAgICBpZiAoIWxpc3QpIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NyZS5jIGIvTW9kdWxlcy9fc3JlLmMKaW5kZXggZDZmY2RhMS4uMTUwMjI5ZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3JlLmMKKysrIGIvTW9kdWxlcy9fc3JlLmMKQEAgLTk3LDQ4ICs5NywyNSBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qIHNlYXJjaCBlbmdpbmUgc3RhdGUgKi8KIAotLyogZGVmYXVsdCBjaGFyYWN0ZXIgcHJlZGljYXRlcyAocnVuIHNyZV9jaGFycy5weSB0byByZWdlbmVyYXRlIHRhYmxlcykgKi8KLQotI2RlZmluZSBTUkVfRElHSVRfTUFTSyAxCi0jZGVmaW5lIFNSRV9TUEFDRV9NQVNLIDIKLSNkZWZpbmUgU1JFX0xJTkVCUkVBS19NQVNLIDQKLSNkZWZpbmUgU1JFX0FMTlVNX01BU0sgOAotI2RlZmluZSBTUkVfV09SRF9NQVNLIDE2Ci0KLS8qIEZJWE1FOiB0aGlzIGFzc3VtZXMgQVNDSUkuICBjcmVhdGUgdGFibGVzIGluIGluaXRfc3JlKCkgaW5zdGVhZCAqLwotCi1zdGF0aWMgY2hhciBzcmVfY2hhcl9pbmZvWzEyOF0gPSB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIsIDYsIDIsCi0yLCAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyLCAwLCAwLAotMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LAotMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwKLTI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAwLCAwLAotMCwgMCwgMTYsIDAsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwKLTI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDAsIDAsIDAsIDAsIDAgfTsKLQotc3RhdGljIGNoYXIgc3JlX2NoYXJfbG93ZXJbMTI4XSA9IHsgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwKLTEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwKLTI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywKLTQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwKLTYxLCA2MiwgNjMsIDY0LCA5NywgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNywKLTEwOCwgMTA5LCAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLAotMTIyLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LAotMTA2LCAxMDcsIDEwOCwgMTA5LCAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksCi0xMjAsIDEyMSwgMTIyLCAxMjMsIDEyNCwgMTI1LCAxMjYsIDEyNyB9OwotCiAjZGVmaW5lIFNSRV9JU19ESUdJVChjaClcCi0gICAgKChjaCkgPCAxMjggPyAoc3JlX2NoYXJfaW5mb1soY2gpXSAmIFNSRV9ESUdJVF9NQVNLKSA6IDApCisgICAgKChjaCkgPCAxMjggJiYgUHlfSVNESUdJVChjaCkpCiAjZGVmaW5lIFNSRV9JU19TUEFDRShjaClcCi0gICAgKChjaCkgPCAxMjggPyAoc3JlX2NoYXJfaW5mb1soY2gpXSAmIFNSRV9TUEFDRV9NQVNLKSA6IDApCisgICAgKChjaCkgPCAxMjggJiYgUHlfSVNTUEFDRShjaCkpCiAjZGVmaW5lIFNSRV9JU19MSU5FQlJFQUsoY2gpXAotICAgICgoY2gpIDwgMTI4ID8gKHNyZV9jaGFyX2luZm9bKGNoKV0gJiBTUkVfTElORUJSRUFLX01BU0spIDogMCkKKyAgICAoKGNoKSA9PSAnXG4nKQogI2RlZmluZSBTUkVfSVNfQUxOVU0oY2gpXAotICAgICgoY2gpIDwgMTI4ID8gKHNyZV9jaGFyX2luZm9bKGNoKV0gJiBTUkVfQUxOVU1fTUFTSykgOiAwKQorICAgICgoY2gpIDwgMTI4ICYmIFB5X0lTQUxOVU0oY2gpKQogI2RlZmluZSBTUkVfSVNfV09SRChjaClcCi0gICAgKChjaCkgPCAxMjggPyAoc3JlX2NoYXJfaW5mb1soY2gpXSAmIFNSRV9XT1JEX01BU0spIDogMCkKKyAgICAoKGNoKSA8IDEyOCAmJiAoUHlfSVNBTE5VTShjaCkgfHwgKGNoKSA9PSAnXycpKQogCiBzdGF0aWMgdW5zaWduZWQgaW50IHNyZV9sb3dlcih1bnNpZ25lZCBpbnQgY2gpCiB7Ci0gICAgcmV0dXJuICgoY2gpIDwgMTI4ID8gKHVuc2lnbmVkIGludClzcmVfY2hhcl9sb3dlcltjaF0gOiBjaCk7CisgICAgcmV0dXJuICgoY2gpIDwgMTI4ID8gUHlfVE9MT1dFUihjaCkgOiBjaCk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgc3JlX3VwcGVyKHVuc2lnbmVkIGludCBjaCkKK3sKKyAgICByZXR1cm4gKChjaCkgPCAxMjggPyBQeV9UT1VQUEVSKGNoKSA6IGNoKTsKIH0KIAogLyogbG9jYWxlLXNwZWNpZmljIGNoYXJhY3RlciBwcmVkaWNhdGVzICovCkBAIC0xNTIsNiArMTI5LDExIEBACiAgICAgcmV0dXJuICgoY2gpIDwgMjU2ID8gKHVuc2lnbmVkIGludCl0b2xvd2VyKChjaCkpIDogY2gpOwogfQogCitzdGF0aWMgdW5zaWduZWQgaW50IHNyZV91cHBlcl9sb2NhbGUodW5zaWduZWQgaW50IGNoKQoreworICAgIHJldHVybiAoKGNoKSA8IDI1NiA/ICh1bnNpZ25lZCBpbnQpdG91cHBlcigoY2gpKSA6IGNoKTsKK30KKwogLyogdW5pY29kZS1zcGVjaWZpYyBjaGFyYWN0ZXIgcHJlZGljYXRlcyAqLwogCiAjZGVmaW5lIFNSRV9VTklfSVNfRElHSVQoY2gpIFB5X1VOSUNPREVfSVNERUNJTUFMKGNoKQpAQCAtMTY1LDYgKzE0NywxMSBAQAogICAgIHJldHVybiAodW5zaWduZWQgaW50KSBQeV9VTklDT0RFX1RPTE9XRVIoY2gpOwogfQogCitzdGF0aWMgdW5zaWduZWQgaW50IHNyZV91cHBlcl91bmljb2RlKHVuc2lnbmVkIGludCBjaCkKK3sKKyAgICByZXR1cm4gKHVuc2lnbmVkIGludCkgUHlfVU5JQ09ERV9UT1VQUEVSKGNoKTsKK30KKwogTE9DQUwoaW50KQogc3JlX2NhdGVnb3J5KFNSRV9DT0RFIGNhdGVnb3J5LCB1bnNpZ25lZCBpbnQgY2gpCiB7CkBAIC0yNzEsMjUgKzI1OCw1MCBAQAogCiAvKiBzZWUgc3JlLmggZm9yIG9iamVjdCBkZWNsYXJhdGlvbnMgKi8KIHN0YXRpYyBQeU9iamVjdCpwYXR0ZXJuX25ld19tYXRjaChQYXR0ZXJuT2JqZWN0KiwgU1JFX1NUQVRFKiwgUHlfc3NpemVfdCk7Ci1zdGF0aWMgUHlPYmplY3QqcGF0dGVybl9zY2FubmVyKFBhdHRlcm5PYmplY3QqLCBQeU9iamVjdCosIFB5T2JqZWN0KiBrdyk7CitzdGF0aWMgUHlPYmplY3QgKnBhdHRlcm5fc2Nhbm5lcihQYXR0ZXJuT2JqZWN0ICosIFB5T2JqZWN0ICosIFB5X3NzaXplX3QsIFB5X3NzaXplX3QpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotc3JlX2NvZGVzaXplKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX3NyZQorY2xhc3MgX3NyZS5TUkVfUGF0dGVybiAiUGF0dGVybk9iamVjdCAqIiAiJlBhdHRlcm5fVHlwZSIKK2NsYXNzIF9zcmUuU1JFX01hdGNoICJNYXRjaE9iamVjdCAqIiAiJk1hdGNoX1R5cGUiCitjbGFzcyBfc3JlLlNSRV9TY2FubmVyICJTY2FubmVyT2JqZWN0ICoiICImU2Nhbm5lcl9UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YjAyMzBlYzE5YTBkZWFjOF0qLworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFBhdHRlcm5fVHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgTWF0Y2hfVHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgU2Nhbm5lcl9UeXBlOworCisvKltjbGluaWMgaW5wdXRdCitfc3JlLmdldGNvZGVzaXplIC0+IGludAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50Citfc3JlX2dldGNvZGVzaXplX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03OTRmMWY5OGVmNDg4M2U1IGlucHV0PWJkNmY2ZWNmNDkxNmJiMmJdKi8KIHsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21TaXplX3Qoc2l6ZW9mKFNSRV9DT0RFKSk7CisgICAgcmV0dXJuIHNpemVvZihTUkVfQ09ERSk7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1zcmVfZ2V0bG93ZXIoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorLypbY2xpbmljIGlucHV0XQorX3NyZS5nZXRsb3dlciAtPiBpbnQKKworICAgIGNoYXJhY3RlcjogaW50CisgICAgZmxhZ3M6IGludAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50Citfc3JlX2dldGxvd2VyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGNoYXJhY3RlciwgaW50IGZsYWdzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVmYzM2MTZhZTJhNGMzMDYgaW5wdXQ9MDg3ZDJmMWM0NGJiY2E2Zl0qLwogewotICAgIGludCBjaGFyYWN0ZXIsIGZsYWdzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWkiLCAmY2hhcmFjdGVyLCAmZmxhZ3MpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEUpCi0gICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpIiwgc3JlX2xvd2VyX2xvY2FsZShjaGFyYWN0ZXIpKTsKKyAgICAgICAgcmV0dXJuIHNyZV9sb3dlcl9sb2NhbGUoY2hhcmFjdGVyKTsKICAgICBpZiAoZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFKQotICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIHNyZV9sb3dlcl91bmljb2RlKGNoYXJhY3RlcikpOwotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpIiwgc3JlX2xvd2VyKGNoYXJhY3RlcikpOworICAgICAgICByZXR1cm4gc3JlX2xvd2VyX3VuaWNvZGUoY2hhcmFjdGVyKTsKKyAgICByZXR1cm4gc3JlX2xvd2VyKGNoYXJhY3Rlcik7CiB9CiAKIExPQ0FMKHZvaWQpCkBAIC0zMjgsNyArMzQwLDcgQEAKIAogICAgIC8qIGdldCBwb2ludGVyIHRvIGJ5dGUgc3RyaW5nIGJ1ZmZlciAqLwogICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3RyaW5nLCB2aWV3LCBQeUJVRl9TSU1QTEUpICE9IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImV4cGVjdGVkIHN0cmluZyBvciBidWZmZXIiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImV4cGVjdGVkIHN0cmluZyBvciBieXRlcy1saWtlIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTM1Nyw2ICszNjksMTEgQEAKIAogICAgIG1lbXNldChzdGF0ZSwgMCwgc2l6ZW9mKFNSRV9TVEFURSkpOwogCisgICAgc3RhdGUtPm1hcmsgPSBQeU1lbV9OZXcodm9pZCAqLCBwYXR0ZXJuLT5ncm91cHMgKiAyKTsKKyAgICBpZiAoIXN0YXRlLT5tYXJrKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KICAgICBzdGF0ZS0+bGFzdG1hcmsgPSAtMTsKICAgICBzdGF0ZS0+bGFzdGluZGV4ID0gLTE7CiAKQEAgLTM2NywxMiArMzg0LDEyIEBACiAKICAgICBpZiAoaXNieXRlcyAmJiBwYXR0ZXJuLT5pc2J5dGVzID09IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCB1c2UgYSBzdHJpbmcgcGF0dGVybiBvbiBhIGJ5dGVzLWxpa2Ugb2JqZWN0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IHVzZSBhIHN0cmluZyBwYXR0ZXJuIG9uIGEgYnl0ZXMtbGlrZSBvYmplY3QiKTsKICAgICAgICAgZ290byBlcnI7CiAgICAgfQogICAgIGlmICghaXNieXRlcyAmJiBwYXR0ZXJuLT5pc2J5dGVzID4gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHVzZSBhIGJ5dGVzIHBhdHRlcm4gb24gYSBzdHJpbmctbGlrZSBvYmplY3QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgdXNlIGEgYnl0ZXMgcGF0dGVybiBvbiBhIHN0cmluZy1saWtlIG9iamVjdCIpOwogICAgICAgICBnb3RvIGVycjsKICAgICB9CiAKQEAgLTQwMCwxNSArNDE3LDIzIEBACiAgICAgc3RhdGUtPnBvcyA9IHN0YXJ0OwogICAgIHN0YXRlLT5lbmRwb3MgPSBlbmQ7CiAKLSAgICBpZiAocGF0dGVybi0+ZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEUpCisgICAgaWYgKHBhdHRlcm4tPmZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFKSB7CiAgICAgICAgIHN0YXRlLT5sb3dlciA9IHNyZV9sb3dlcl9sb2NhbGU7Ci0gICAgZWxzZSBpZiAocGF0dGVybi0+ZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFKQorICAgICAgICBzdGF0ZS0+dXBwZXIgPSBzcmVfdXBwZXJfbG9jYWxlOworICAgIH0KKyAgICBlbHNlIGlmIChwYXR0ZXJuLT5mbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpIHsKICAgICAgICAgc3RhdGUtPmxvd2VyID0gc3JlX2xvd2VyX3VuaWNvZGU7Ci0gICAgZWxzZQorICAgICAgICBzdGF0ZS0+dXBwZXIgPSBzcmVfdXBwZXJfdW5pY29kZTsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIHN0YXRlLT5sb3dlciA9IHNyZV9sb3dlcjsKKyAgICAgICAgc3RhdGUtPnVwcGVyID0gc3JlX3VwcGVyOworICAgIH0KIAogICAgIHJldHVybiBzdHJpbmc7CiAgIGVycjoKKyAgICBQeU1lbV9EZWwoc3RhdGUtPm1hcmspOworICAgIHN0YXRlLT5tYXJrID0gTlVMTDsKICAgICBpZiAoc3RhdGUtPmJ1ZmZlci5idWYpCiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN0YXRlLT5idWZmZXIpOwogICAgIHJldHVybiBOVUxMOwpAQCAtNDIxLDYgKzQ0Niw4IEBACiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN0YXRlLT5idWZmZXIpOwogICAgIFB5X1hERUNSRUYoc3RhdGUtPnN0cmluZyk7CiAgICAgZGF0YV9zdGFja19kZWFsbG9jKHN0YXRlKTsKKyAgICBQeU1lbV9EZWwoc3RhdGUtPm1hcmspOworICAgIHN0YXRlLT5tYXJrID0gTlVMTDsKIH0KIAogLyogY2FsY3VsYXRlIG9mZnNldCBmcm9tIHN0YXJ0IG9mIHN0cmluZyAqLwpAQCAtNDczLDggKzUwMCw5IEBACiB7CiAgICAgc3dpdGNoIChzdGF0dXMpIHsKICAgICBjYXNlIFNSRV9FUlJPUl9SRUNVUlNJT05fTElNSVQ6CisgICAgICAgIC8qIFRoaXMgZXJyb3IgY29kZSBzZWVtcyB0byBiZSB1bnVzZWQuICovCiAgICAgICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgICAgIFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgIFB5RXhjX1JlY3Vyc2lvbkVycm9yLAogICAgICAgICAgICAgIm1heGltdW0gcmVjdXJzaW9uIGxpbWl0IGV4Y2VlZGVkIgogICAgICAgICAgICAgKTsKICAgICAgICAgYnJlYWs7CkBAIC01NTAsMjYgKzU3OCwzMiBAQAogICAgIHJldHVybiBzdHJpbmc7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX1BhdHRlcm4ubWF0Y2gKKworICAgIHN0cmluZzogb2JqZWN0ID0gTlVMTAorICAgIHBvczogUHlfc3NpemVfdCA9IDAKKyAgICBlbmRwb3M6IFB5X3NzaXplX3QoY19kZWZhdWx0PSJQWV9TU0laRV9UX01BWCIpID0gc3lzLm1heHNpemUKKyAgICAqCisgICAgcGF0dGVybjogb2JqZWN0ID0gTlVMTAorCitNYXRjaGVzIHplcm8gb3IgbW9yZSBjaGFyYWN0ZXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXBhdHRlcm5fbWF0Y2goUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX21hdGNoX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdHRlcm4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzRiNGIxZGEzYmIyZDg0ZSBpbnB1dD0zZDA3OWFhOTk5NzliODFkXSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTH07Ci0gICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBwb3MgPSAwOwotICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlPYmplY3QgKnBhdHRlcm4gPSBOVUxMOwogICAgIFNSRV9TVEFURSBzdGF0ZTsKICAgICBQeV9zc2l6ZV90IHN0YXR1czsKKyAgICBQeU9iamVjdCAqbWF0Y2g7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCi0gICAgICAgICJ8T25uJE86bWF0Y2giLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgc3RyaW5nID0gZml4X3N0cmluZ19wYXJhbShzdHJpbmcsIHBhdHRlcm4sICJwYXR0ZXJuIik7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cmluZyA9IHN0YXRlX2luaXQoJnN0YXRlLCAoUGF0dGVybk9iamVjdCAqKXNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MpOwotICAgIGlmICghc3RyaW5nKQorICAgIGlmICghc3RhdGVfaW5pdCgmc3RhdGUsIChQYXR0ZXJuT2JqZWN0ICopc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RhdGUucHRyID0gc3RhdGUuc3RhcnQ7CkBAIC01NzksMzQgKzYxMyw0MyBAQAogICAgIHN0YXR1cyA9IHNyZV9tYXRjaCgmc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSwgMCk7CiAKICAgICBUUkFDRSgoInwlcHwlcHxFTkRcbiIsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSwgc3RhdGUucHRyKSk7Ci0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgc3RhdGVfZmluaSgmc3RhdGUpOwogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKKyAgICBtYXRjaCA9IHBhdHRlcm5fbmV3X21hdGNoKHNlbGYsICZzdGF0ZSwgc3RhdHVzKTsKICAgICBzdGF0ZV9maW5pKCZzdGF0ZSk7Ci0KLSAgICByZXR1cm4gKFB5T2JqZWN0ICopcGF0dGVybl9uZXdfbWF0Y2goc2VsZiwgJnN0YXRlLCBzdGF0dXMpOworICAgIHJldHVybiBtYXRjaDsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotcGF0dGVybl9mdWxsbWF0Y2goUGF0dGVybk9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX1BhdHRlcm4uZnVsbG1hdGNoCisKKyAgICBzdHJpbmc6IG9iamVjdCA9IE5VTEwKKyAgICBwb3M6IFB5X3NzaXplX3QgPSAwCisgICAgZW5kcG9zOiBQeV9zc2l6ZV90KGNfZGVmYXVsdD0iUFlfU1NJWkVfVF9NQVgiKSA9IHN5cy5tYXhzaXplCisgICAgKgorICAgIHBhdHRlcm46IG9iamVjdCA9IE5VTEwKKworTWF0Y2hlcyBhZ2FpbnN0IGFsbCBvZiB0aGUgc3RyaW5nCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdHRlcm4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWM5OGJjNWRhNzQ0ZWE5NCBpbnB1dD1kNDIyODYwNmNjMTI1ODBmXSovCiB7CiAgICAgU1JFX1NUQVRFIHN0YXRlOwogICAgIFB5X3NzaXplX3Qgc3RhdHVzOworICAgIFB5T2JqZWN0ICptYXRjaDsKIAotICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMLCAqc3RyaW5nMiA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDA7Ci0gICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7ICJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTCB9OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifE9ubiRPOmZ1bGxtYXRjaCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyaW5nLCAmc3RhcnQsICZlbmQsICZzdHJpbmcyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzdHJpbmcgPSBmaXhfc3RyaW5nX3BhcmFtKHN0cmluZywgc3RyaW5nMiwgInBhdHRlcm4iKTsKKyAgICBzdHJpbmcgPSBmaXhfc3RyaW5nX3BhcmFtKHN0cmluZywgcGF0dGVybiwgInBhdHRlcm4iKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBzdHJpbmcgPSBzdGF0ZV9pbml0KCZzdGF0ZSwgc2VsZiwgc3RyaW5nLCBzdGFydCwgZW5kKTsKLSAgICBpZiAoIXN0cmluZykKKyAgICBpZiAoIXN0YXRlX2luaXQoJnN0YXRlLCBzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdGF0ZS5wdHIgPSBzdGF0ZS5zdGFydDsKQEAgLTYxNiwzNCArNjU5LDQ1IEBACiAgICAgc3RhdHVzID0gc3JlX21hdGNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpLCAxKTsKIAogICAgIFRSQUNFKCgifCVwfCVwfEVORFxuIiwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpLCBzdGF0ZS5wdHIpKTsKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBzdGF0ZV9maW5pKCZzdGF0ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAorICAgIG1hdGNoID0gcGF0dGVybl9uZXdfbWF0Y2goc2VsZiwgJnN0YXRlLCBzdGF0dXMpOwogICAgIHN0YXRlX2ZpbmkoJnN0YXRlKTsKLQotICAgIHJldHVybiBwYXR0ZXJuX25ld19tYXRjaChzZWxmLCAmc3RhdGUsIHN0YXR1cyk7CisgICAgcmV0dXJuIG1hdGNoOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1wYXR0ZXJuX3NlYXJjaChQYXR0ZXJuT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfUGF0dGVybi5zZWFyY2gKKworICAgIHN0cmluZzogb2JqZWN0ID0gTlVMTAorICAgIHBvczogUHlfc3NpemVfdCA9IDAKKyAgICBlbmRwb3M6IFB5X3NzaXplX3QoY19kZWZhdWx0PSJQWV9TU0laRV9UX01BWCIpID0gc3lzLm1heHNpemUKKyAgICAqCisgICAgcGF0dGVybjogb2JqZWN0ID0gTlVMTAorCitTY2FuIHRocm91Z2ggc3RyaW5nIGxvb2tpbmcgZm9yIGEgbWF0Y2gsIGFuZCByZXR1cm4gYSBjb3JyZXNwb25kaW5nIG1hdGNoIG9iamVjdCBpbnN0YW5jZS4KKworUmV0dXJuIE5vbmUgaWYgbm8gcG9zaXRpb24gaW4gdGhlIHN0cmluZyBtYXRjaGVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zZWFyY2hfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXR0ZXJuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM4MzkzOTRhMThlNWVhNGYgaW5wdXQ9ZGFiNDI3MjBmNGJlM2E0Yl0qLwogewogICAgIFNSRV9TVEFURSBzdGF0ZTsKICAgICBQeV9zc2l6ZV90IHN0YXR1czsKKyAgICBQeU9iamVjdCAqbWF0Y2g7CiAKLSAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTCwgKnN0cmluZzIgPSBOVUxMOwotICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwotICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgc3RhdGljIGNoYXIqIGt3bGlzdFtdID0geyAic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAicGF0dGVybiIsIE5VTEwgfTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxPbm4kTzpzZWFyY2giLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cmluZywgJnN0YXJ0LCAmZW5kLCAmc3RyaW5nMikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgc3RyaW5nID0gZml4X3N0cmluZ19wYXJhbShzdHJpbmcsIHN0cmluZzIsICJwYXR0ZXJuIik7CisgICAgc3RyaW5nID0gZml4X3N0cmluZ19wYXJhbShzdHJpbmcsIHBhdHRlcm4sICJwYXR0ZXJuIik7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc3RyaW5nID0gc3RhdGVfaW5pdCgmc3RhdGUsIHNlbGYsIHN0cmluZywgc3RhcnQsIGVuZCk7Ci0gICAgaWYgKCFzdHJpbmcpCisgICAgaWYgKCFzdGF0ZV9pbml0KCZzdGF0ZSwgc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgVFJBQ0UoKCJ8JXB8JXB8U0VBUkNIXG4iLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZiksIHN0YXRlLnB0cikpOwpAQCAtNjUyLDEyICs3MDYsMTQgQEAKIAogICAgIFRSQUNFKCgifCVwfCVwfEVORFxuIiwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpLCBzdGF0ZS5wdHIpKTsKIAotICAgIHN0YXRlX2ZpbmkoJnN0YXRlKTsKLQotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHN0YXRlX2ZpbmkoJnN0YXRlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgcmV0dXJuIHBhdHRlcm5fbmV3X21hdGNoKHNlbGYsICZzdGF0ZSwgc3RhdHVzKTsKKyAgICBtYXRjaCA9IHBhdHRlcm5fbmV3X21hdGNoKHNlbGYsICZzdGF0ZSwgc3RhdHVzKTsKKyAgICBzdGF0ZV9maW5pKCZzdGF0ZSk7CisgICAgcmV0dXJuIG1hdGNoOwogfQogCiBzdGF0aWMgUHlPYmplY3QqCkBAIC03MDAsMzUgKzc1Niw0MCBAQAogICAgIGlmICghY29weSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBQeV9ERUNSRUYoKm9iamVjdCk7Ci0gICAgKm9iamVjdCA9IGNvcHk7CisgICAgUHlfU0VUUkVGKCpvYmplY3QsIGNvcHkpOwogCiAgICAgcmV0dXJuIDE7IC8qIHN1Y2Nlc3MgKi8KIH0KICNlbmRpZgogCi1zdGF0aWMgUHlPYmplY3QqCi1wYXR0ZXJuX2ZpbmRhbGwoUGF0dGVybk9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX1BhdHRlcm4uZmluZGFsbAorCisgICAgc3RyaW5nOiBvYmplY3QgPSBOVUxMCisgICAgcG9zOiBQeV9zc2l6ZV90ID0gMAorICAgIGVuZHBvczogUHlfc3NpemVfdChjX2RlZmF1bHQ9IlBZX1NTSVpFX1RfTUFYIikgPSBzeXMubWF4c2l6ZQorICAgICoKKyAgICBzb3VyY2U6IG9iamVjdCA9IE5VTEwKKworUmV0dXJuIGEgbGlzdCBvZiBhbGwgbm9uLW92ZXJsYXBwaW5nIG1hdGNoZXMgb2YgcGF0dGVybiBpbiBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGxfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNvdXJjZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MTI5NTQ5OGIzMDA2MzlkIGlucHV0PWRmNjg4MzU1YzA1NmI5ZGVdKi8KIHsKICAgICBTUkVfU1RBVEUgc3RhdGU7CiAgICAgUHlPYmplY3QqIGxpc3Q7CiAgICAgUHlfc3NpemVfdCBzdGF0dXM7CiAgICAgUHlfc3NpemVfdCBpLCBiLCBlOwogCi0gICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEwsICpzdHJpbmcyID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsgInN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInNvdXJjZSIsIE5VTEwgfTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxPbm4kTzpmaW5kYWxsIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJpbmcsICZzdGFydCwgJmVuZCwgJnN0cmluZzIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHN0cmluZyA9IGZpeF9zdHJpbmdfcGFyYW0oc3RyaW5nLCBzdHJpbmcyLCAic291cmNlIik7CisgICAgc3RyaW5nID0gZml4X3N0cmluZ19wYXJhbShzdHJpbmcsIHNvdXJjZSwgInNvdXJjZSIpOwogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHN0cmluZyA9IHN0YXRlX2luaXQoJnN0YXRlLCBzZWxmLCBzdHJpbmcsIHN0YXJ0LCBlbmQpOwotICAgIGlmICghc3RyaW5nKQorICAgIGlmICghc3RhdGVfaW5pdCgmc3RhdGUsIHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOwpAQCAtODA4LDE0ICs4NjksMjggQEAKIAogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1wYXR0ZXJuX2ZpbmRpdGVyKFBhdHRlcm5PYmplY3QqIHBhdHRlcm4sIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9QYXR0ZXJuLmZpbmRpdGVyCisKKyAgICBzdHJpbmc6IG9iamVjdAorICAgIHBvczogUHlfc3NpemVfdCA9IDAKKyAgICBlbmRwb3M6IFB5X3NzaXplX3QoY19kZWZhdWx0PSJQWV9TU0laRV9UX01BWCIpID0gc3lzLm1heHNpemUKKworUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG5vbi1vdmVybGFwcGluZyBtYXRjaGVzIGZvciB0aGUgUkUgcGF0dGVybiBpbiBzdHJpbmcuCisKK0ZvciBlYWNoIG1hdGNoLCB0aGUgaXRlcmF0b3IgcmV0dXJucyBhIG1hdGNoIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXJfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYmJiMWEwYWViMzhiYjE0IGlucHV0PTYxMmFhYjY5ZTlmZTA4ZTRdKi8KIHsKICAgICBQeU9iamVjdCogc2Nhbm5lcjsKICAgICBQeU9iamVjdCogc2VhcmNoOwogICAgIFB5T2JqZWN0KiBpdGVyYXRvcjsKIAotICAgIHNjYW5uZXIgPSBwYXR0ZXJuX3NjYW5uZXIocGF0dGVybiwgYXJncywga3cpOworICAgIHNjYW5uZXIgPSBwYXR0ZXJuX3NjYW5uZXIoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcyk7CiAgICAgaWYgKCFzY2FubmVyKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtODMwLDggKzkwNSwzOCBAQAogICAgIHJldHVybiBpdGVyYXRvcjsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotcGF0dGVybl9zcGxpdChQYXR0ZXJuT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfUGF0dGVybi5zY2FubmVyCisKKyAgICBzdHJpbmc6IG9iamVjdAorICAgIHBvczogUHlfc3NpemVfdCA9IDAKKyAgICBlbmRwb3M6IFB5X3NzaXplX3QoY19kZWZhdWx0PSJQWV9TU0laRV9UX01BWCIpID0gc3lzLm1heHNpemUKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NGVhNTQ4YWVkMzM4OTBiIGlucHV0PTNhYWNkYmRlNzdhM2E2MzddKi8KK3sKKyAgICByZXR1cm4gcGF0dGVybl9zY2FubmVyKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9QYXR0ZXJuLnNwbGl0CisKKyAgICBzdHJpbmc6IG9iamVjdCA9IE5VTEwKKyAgICBtYXhzcGxpdDogUHlfc3NpemVfdCA9IDAKKyAgICAqCisgICAgc291cmNlOiBvYmplY3QgPSBOVUxMCisKK1NwbGl0IHN0cmluZyBieSB0aGUgb2NjdXJyZW5jZXMgb2YgcGF0dGVybi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc3BsaXRfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4c3BsaXQsIFB5T2JqZWN0ICpzb3VyY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjBiYWMyZmY1NWI5Zjg0YyBpbnB1dD00MWUwYjJlMzVlNTk5ZDdiXSovCiB7CiAgICAgU1JFX1NUQVRFIHN0YXRlOwogICAgIFB5T2JqZWN0KiBsaXN0OwpAQCAtODQxLDE5ICs5NDYsMjQgQEAKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgdm9pZCogbGFzdDsKIAotICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMLCAqc3RyaW5nMiA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IDA7Ci0gICAgc3RhdGljIGNoYXIqIGt3bGlzdFtdID0geyAic3RyaW5nIiwgIm1heHNwbGl0IiwgInNvdXJjZSIsIE5VTEwgfTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxPbiRPOnNwbGl0Iiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJpbmcsICZtYXhzcGxpdCwgJnN0cmluZzIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHN0cmluZyA9IGZpeF9zdHJpbmdfcGFyYW0oc3RyaW5nLCBzdHJpbmcyLCAic291cmNlIik7CisgICAgc3RyaW5nID0gZml4X3N0cmluZ19wYXJhbShzdHJpbmcsIHNvdXJjZSwgInNvdXJjZSIpOwogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHN0cmluZyA9IHN0YXRlX2luaXQoJnN0YXRlLCBzZWxmLCBzdHJpbmcsIDAsIFBZX1NTSVpFX1RfTUFYKTsKLSAgICBpZiAoIXN0cmluZykKKyAgICBhc3NlcnQoc2VsZi0+Y29kZXNpemUgIT0gMCk7CisgICAgaWYgKHNlbGYtPmNvZGVbMF0gIT0gU1JFX09QX0lORk8gfHwgc2VsZi0+Y29kZVszXSA9PSAwKSB7CisgICAgICAgIGlmIChzZWxmLT5jb2RlWzBdID09IFNSRV9PUF9JTkZPICYmIHNlbGYtPmNvZGVbNF0gPT0gMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbGl0KCkgcmVxdWlyZXMgYSBub24tZW1wdHkgcGF0dGVybiBtYXRjaC4iKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRnV0dXJlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAic3BsaXQoKSByZXF1aXJlcyBhIG5vbi1lbXB0eSBwYXR0ZXJuIG1hdGNoLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgMSkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCFzdGF0ZV9pbml0KCZzdGF0ZSwgc2VsZiwgc3RyaW5nLCAwLCBQWV9TU0laRV9UX01BWCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgbGlzdCA9IFB5TGlzdF9OZXcoMCk7CkBAIC05OTcsOCArMTEwNyw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdHJpbmcgPSBzdGF0ZV9pbml0KCZzdGF0ZSwgc2VsZiwgc3RyaW5nLCAwLCBQWV9TU0laRV9UX01BWCk7Ci0gICAgaWYgKCFzdHJpbmcpIHsKKyAgICBpZiAoIXN0YXRlX2luaXQoJnN0YXRlLCBzZWxmLCBzdHJpbmcsIDAsIFBZX1NTSVpFX1RfTUFYKSkgewogICAgICAgICBQeV9ERUNSRUYoZmlsdGVyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTE0MCwzNiArMTI0OSw1MCBAQAogCiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXBhdHRlcm5fc3ViKFBhdHRlcm5PYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCi17Ci0gICAgUHlPYmplY3QqIHB0ZW1wbGF0ZTsKLSAgICBQeU9iamVjdCogc3RyaW5nOwotICAgIFB5X3NzaXplX3QgY291bnQgPSAwOwotICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsgInJlcGwiLCAic3RyaW5nIiwgImNvdW50IiwgTlVMTCB9OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiT098bjpzdWIiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnB0ZW1wbGF0ZSwgJnN0cmluZywgJmNvdW50KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9QYXR0ZXJuLnN1YgogCi0gICAgcmV0dXJuIHBhdHRlcm5fc3VieChzZWxmLCBwdGVtcGxhdGUsIHN0cmluZywgY291bnQsIDApOworICAgIHJlcGw6IG9iamVjdAorICAgIHN0cmluZzogb2JqZWN0CisgICAgY291bnQ6IFB5X3NzaXplX3QgPSAwCisKK1JldHVybiB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IHJlcGxhY2luZyB0aGUgbGVmdG1vc3Qgbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4gaW4gc3RyaW5nIGJ5IHRoZSByZXBsYWNlbWVudCByZXBsLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zdWJfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcmVwbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0cmluZywgUHlfc3NpemVfdCBjb3VudCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZGJmMmVjMzQ3OWNiYTAwIGlucHV0PWM1M2Q3MGJlMGIzY2FmODZdKi8KK3sKKyAgICByZXR1cm4gcGF0dGVybl9zdWJ4KHNlbGYsIHJlcGwsIHN0cmluZywgY291bnQsIDApOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1wYXR0ZXJuX3N1Ym4oUGF0dGVybk9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKLXsKLSAgICBQeU9iamVjdCogcHRlbXBsYXRlOwotICAgIFB5T2JqZWN0KiBzdHJpbmc7Ci0gICAgUHlfc3NpemVfdCBjb3VudCA9IDA7Ci0gICAgc3RhdGljIGNoYXIqIGt3bGlzdFtdID0geyAicmVwbCIsICJzdHJpbmciLCAiY291bnQiLCBOVUxMIH07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJPT3xuOnN1Ym4iLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnB0ZW1wbGF0ZSwgJnN0cmluZywgJmNvdW50KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9QYXR0ZXJuLnN1Ym4KIAotICAgIHJldHVybiBwYXR0ZXJuX3N1Yngoc2VsZiwgcHRlbXBsYXRlLCBzdHJpbmcsIGNvdW50LCAxKTsKKyAgICByZXBsOiBvYmplY3QKKyAgICBzdHJpbmc6IG9iamVjdAorICAgIGNvdW50OiBQeV9zc2l6ZV90ID0gMAorCitSZXR1cm4gdGhlIHR1cGxlIChuZXdfc3RyaW5nLCBudW1iZXJfb2Zfc3Vic19tYWRlKSBmb3VuZCBieSByZXBsYWNpbmcgdGhlIGxlZnRtb3N0IG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIHdpdGggdGhlIHJlcGxhY2VtZW50IHJlcGwuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX3N1Ym5faW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcmVwbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJpbmcsIFB5X3NzaXplX3QgY291bnQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGQ5NTIyY2Q1MjllOTcyOCBpbnB1dD1lNzM0MmQ3Y2U2MDgzNTc3XSovCit7CisgICAgcmV0dXJuIHBhdHRlcm5fc3VieChzZWxmLCByZXBsLCBzdHJpbmcsIGNvdW50LCAxKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotcGF0dGVybl9jb3B5KFBhdHRlcm5PYmplY3QqIHNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9QYXR0ZXJuLl9fY29weV9fCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fX19jb3B5X19faW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg1ZGVkYzJkYjFiZDg2OTQgaW5wdXQ9YTczMGE1OWQ4NjNiYzlmNV0qLwogewogI2lmZGVmIFVTRV9CVUlMVElOX0NPUFkKICAgICBQYXR0ZXJuT2JqZWN0KiBjb3B5OwpAQCAtMTE5Niw4ICsxMzE5LDE2IEBACiAjZW5kaWYKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotcGF0dGVybl9kZWVwY29weShQYXR0ZXJuT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogbWVtbykKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX1BhdHRlcm4uX19kZWVwY29weV9fCisKKyAgICBtZW1vOiBvYmplY3QKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X19faW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbWVtbykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NWVmZTY5YmQxMmM1ZDdkIGlucHV0PTM5NTk3MTk0ODJjMDdmNzBdKi8KIHsKICNpZmRlZiBVU0VfQlVJTFRJTl9DT1BZCiAgICAgUGF0dGVybk9iamVjdCogY29weTsKQEAgLTEyMzgsNyArMTM2OSw3IEBACiAgICAgfTsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBQeU9iamVjdCAqZmxhZ19pdGVtczsKLSAgICBpbnQgaTsKKyAgICBzaXplX3QgaTsKICAgICBpbnQgZmxhZ3MgPSBvYmotPmZsYWdzOwogCiAgICAgLyogT21pdCByZS5VTklDT0RFIGZvciB2YWxpZCBzdHJpbmcgcGF0dGVybnMuICovCkBAIC0xMjk5LDEzMSArMTQzMCw0MCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihwYXR0ZXJuX21hdGNoX2RvYywKLSJtYXRjaChzdHJpbmdbLCBwb3NbLCBlbmRwb3NdXSkgLT4gbWF0Y2ggb2JqZWN0IG9yIE5vbmUuXG5cCi0gICAgTWF0Y2hlcyB6ZXJvIG9yIG1vcmUgY2hhcmFjdGVycyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmciKTsKLQotUHlEb2NfU1RSVkFSKHBhdHRlcm5fZnVsbG1hdGNoX2RvYywKLSJmdWxsbWF0Y2goc3RyaW5nWywgcG9zWywgZW5kcG9zXV0pIC0+IG1hdGNoIG9iamVjdCBvciBOb25lLlxuXAotICAgIE1hdGNoZXMgYWdhaW5zdCBhbGwgb2YgdGhlIHN0cmluZyIpOwotCi1QeURvY19TVFJWQVIocGF0dGVybl9zZWFyY2hfZG9jLAotInNlYXJjaChzdHJpbmdbLCBwb3NbLCBlbmRwb3NdXSkgLT4gbWF0Y2ggb2JqZWN0IG9yIE5vbmUuXG5cCi0gICAgU2NhbiB0aHJvdWdoIHN0cmluZyBsb29raW5nIGZvciBhIG1hdGNoLCBhbmQgcmV0dXJuIGEgY29ycmVzcG9uZGluZ1xuXAotICAgIG1hdGNoIG9iamVjdCBpbnN0YW5jZS4gUmV0dXJuIE5vbmUgaWYgbm8gcG9zaXRpb24gaW4gdGhlIHN0cmluZyBtYXRjaGVzLiIpOwotCi1QeURvY19TVFJWQVIocGF0dGVybl9zcGxpdF9kb2MsCi0ic3BsaXQoc3RyaW5nWywgbWF4c3BsaXQgPSAwXSkgIC0+IGxpc3QuXG5cCi0gICAgU3BsaXQgc3RyaW5nIGJ5IHRoZSBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuLiIpOwotCi1QeURvY19TVFJWQVIocGF0dGVybl9maW5kYWxsX2RvYywKLSJmaW5kYWxsKHN0cmluZ1ssIHBvc1ssIGVuZHBvc11dKSAtPiBsaXN0LlxuXAotICAgUmV0dXJuIGEgbGlzdCBvZiBhbGwgbm9uLW92ZXJsYXBwaW5nIG1hdGNoZXMgb2YgcGF0dGVybiBpbiBzdHJpbmcuIik7Ci0KLVB5RG9jX1NUUlZBUihwYXR0ZXJuX2ZpbmRpdGVyX2RvYywKLSJmaW5kaXRlcihzdHJpbmdbLCBwb3NbLCBlbmRwb3NdXSkgLT4gaXRlcmF0b3IuXG5cCi0gICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG5vbi1vdmVybGFwcGluZyBtYXRjaGVzIGZvciB0aGUgXG5cCi0gICAgUkUgcGF0dGVybiBpbiBzdHJpbmcuIEZvciBlYWNoIG1hdGNoLCB0aGUgaXRlcmF0b3IgcmV0dXJucyBhXG5cCi0gICAgbWF0Y2ggb2JqZWN0LiIpOwotCi1QeURvY19TVFJWQVIocGF0dGVybl9zdWJfZG9jLAotInN1YihyZXBsLCBzdHJpbmdbLCBjb3VudCA9IDBdKSAtPiBuZXdzdHJpbmcuXG5cCi0gICAgUmV0dXJuIHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgcmVwbGFjaW5nIHRoZSBsZWZ0bW9zdCBub24tb3ZlcmxhcHBpbmdcblwKLSAgICBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIGluIHN0cmluZyBieSB0aGUgcmVwbGFjZW1lbnQgcmVwbC4iKTsKLQotUHlEb2NfU1RSVkFSKHBhdHRlcm5fc3Vibl9kb2MsCi0ic3VibihyZXBsLCBzdHJpbmdbLCBjb3VudCA9IDBdKSAtPiAobmV3c3RyaW5nLCBudW1iZXIgb2Ygc3VicylcblwKLSAgICBSZXR1cm4gdGhlIHR1cGxlIChuZXdfc3RyaW5nLCBudW1iZXJfb2Zfc3Vic19tYWRlKSBmb3VuZCBieSByZXBsYWNpbmdcblwKLSAgICB0aGUgbGVmdG1vc3Qgbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4gd2l0aCB0aGVcblwKLSAgICByZXBsYWNlbWVudCByZXBsLiIpOwotCiBQeURvY19TVFJWQVIocGF0dGVybl9kb2MsICJDb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb24gb2JqZWN0cyIpOwogCi1zdGF0aWMgUHlNZXRob2REZWYgcGF0dGVybl9tZXRob2RzW10gPSB7Ci0gICAgeyJtYXRjaCIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9tYXRjaCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0gICAgICAgIHBhdHRlcm5fbWF0Y2hfZG9jfSwKLSAgICB7ImZ1bGxtYXRjaCIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9mdWxsbWF0Y2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotICAgICAgICBwYXR0ZXJuX2Z1bGxtYXRjaF9kb2N9LAotICAgIHsic2VhcmNoIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3NlYXJjaCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0gICAgICAgIHBhdHRlcm5fc2VhcmNoX2RvY30sCi0gICAgeyJzdWIiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fc3ViLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLSAgICAgICAgcGF0dGVybl9zdWJfZG9jfSwKLSAgICB7InN1Ym4iLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fc3VibiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0gICAgICAgIHBhdHRlcm5fc3Vibl9kb2N9LAotICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fc3BsaXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotICAgICAgICBwYXR0ZXJuX3NwbGl0X2RvY30sCi0gICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX2ZpbmRhbGwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotICAgICAgICBwYXR0ZXJuX2ZpbmRhbGxfZG9jfSwKLSAgICB7ImZpbmRpdGVyIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX2ZpbmRpdGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLSAgICAgICAgcGF0dGVybl9maW5kaXRlcl9kb2N9LAotICAgIHsic2Nhbm5lciIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9zY2FubmVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCi0gICAgeyJfX2NvcHlfXyIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9jb3B5LCBNRVRIX05PQVJHU30sCi0gICAgeyJfX2RlZXBjb3B5X18iLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fZGVlcGNvcHksIE1FVEhfT30sCi0gICAge05VTEwsIE5VTEx9Ci19OwotCi0jZGVmaW5lIFBBVF9PRkYoeCkgb2Zmc2V0b2YoUGF0dGVybk9iamVjdCwgeCkKLXN0YXRpYyBQeU1lbWJlckRlZiBwYXR0ZXJuX21lbWJlcnNbXSA9IHsKLSAgICB7InBhdHRlcm4iLCAgICBUX09CSkVDVCwgICAgUEFUX09GRihwYXR0ZXJuKSwgICAgICAgUkVBRE9OTFl9LAotICAgIHsiZmxhZ3MiLCAgICAgIFRfSU5ULCAgICAgICBQQVRfT0ZGKGZsYWdzKSwgICAgICAgICBSRUFET05MWX0sCi0gICAgeyJncm91cHMiLCAgICAgVF9QWVNTSVpFVCwgIFBBVF9PRkYoZ3JvdXBzKSwgICAgICAgIFJFQURPTkxZfSwKLSAgICB7Imdyb3VwaW5kZXgiLCBUX09CSkVDVCwgICAgUEFUX09GRihncm91cGluZGV4KSwgICAgUkVBRE9OTFl9LAotICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KLX07Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgUGF0dGVybl9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJfIiBTUkVfTU9EVUxFICIuU1JFX1BhdHRlcm4iLAotICAgIHNpemVvZihQYXR0ZXJuT2JqZWN0KSwgc2l6ZW9mKFNSRV9DT0RFKSwKLSAgICAoZGVzdHJ1Y3RvcilwYXR0ZXJuX2RlYWxsb2MsICAgICAgICAvKiB0cF9kZWFsbG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCi0gICAgKHJlcHJmdW5jKXBhdHRlcm5fcmVwciwgICAgICAgICAgICAgLyogdHBfcmVwciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgcGF0dGVybl9kb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgb2Zmc2V0b2YoUGF0dGVybk9iamVjdCwgd2Vha3JlZmxpc3QpLCAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIHBhdHRlcm5fbWV0aG9kcywgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICBwYXR0ZXJuX21lbWJlcnMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi19OworLyogUGF0dGVybk9iamVjdCdzICdncm91cGluZGV4JyBtZXRob2QuICovCitzdGF0aWMgUHlPYmplY3QgKgorcGF0dGVybl9ncm91cGluZGV4KFBhdHRlcm5PYmplY3QgKnNlbGYpCit7CisgICAgcmV0dXJuIFB5RGljdFByb3h5X05ldyhzZWxmLT5ncm91cGluZGV4KTsKK30KIAogc3RhdGljIGludCBfdmFsaWRhdGUoUGF0dGVybk9iamVjdCAqc2VsZik7IC8qIEZvcndhcmQgKi8KIAorLypbY2xpbmljIGlucHV0XQorX3NyZS5jb21waWxlCisKKyAgICBwYXR0ZXJuOiBvYmplY3QKKyAgICBmbGFnczogaW50CisgICAgY29kZTogb2JqZWN0KHN1YmNsYXNzX29mPScmUHlMaXN0X1R5cGUnKQorICAgIGdyb3VwczogUHlfc3NpemVfdAorICAgIGdyb3VwaW5kZXg6IG9iamVjdAorICAgIGluZGV4Z3JvdXA6IG9iamVjdAorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1fY29tcGlsZShQeU9iamVjdCogc2VsZl8sIFB5T2JqZWN0KiBhcmdzKQorX3NyZV9jb21waWxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBhdHRlcm4sIGludCBmbGFncywKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb2RlLCBQeV9zc2l6ZV90IGdyb3VwcywgUHlPYmplY3QgKmdyb3VwaW5kZXgsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW5kZXhncm91cCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMDA0YjI5MzczMGJmMzA5IGlucHV0PTdkMDU5ZWM4YWUxZWRiODVdKi8KIHsKICAgICAvKiAiY29tcGlsZSIgcGF0dGVybiBkZXNjcmlwdG9yIHRvIHBhdHRlcm4gb2JqZWN0ICovCiAKICAgICBQYXR0ZXJuT2JqZWN0KiBzZWxmOwogICAgIFB5X3NzaXplX3QgaSwgbjsKIAotICAgIFB5T2JqZWN0KiBwYXR0ZXJuOwotICAgIGludCBmbGFncyA9IDA7Ci0gICAgUHlPYmplY3QqIGNvZGU7Ci0gICAgUHlfc3NpemVfdCBncm91cHMgPSAwOwotICAgIFB5T2JqZWN0KiBncm91cGluZGV4ID0gTlVMTDsKLSAgICBQeU9iamVjdCogaW5kZXhncm91cCA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9pTyF8bk9PIiwgJnBhdHRlcm4sICZmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5TGlzdF9UeXBlLCAmY29kZSwgJmdyb3VwcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmdyb3VwaW5kZXgsICZpbmRleGdyb3VwKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBuID0gUHlMaXN0X0dFVF9TSVpFKGNvZGUpOwogICAgIC8qIGNvdmVyaXR5W2FtcGVyc2FuZF9pbl9zaXplXSAqLwogICAgIHNlbGYgPSBQeU9iamVjdF9ORVdfVkFSKFBhdHRlcm5PYmplY3QsICZQYXR0ZXJuX1R5cGUsIG4pOwpAQCAtMTU3OSw2ICsxNjE5LDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU1JFX09QX1JBTkdFOgorICAgICAgICBjYXNlIFNSRV9PUF9SQU5HRV9JR05PUkU6CiAgICAgICAgICAgICBHRVRfQVJHOwogICAgICAgICAgICAgR0VUX0FSRzsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTkzNSwxMCArMTk3Niw5IEBACiBzdGF0aWMgaW50CiBfdmFsaWRhdGVfb3V0ZXIoU1JFX0NPREUgKmNvZGUsIFNSRV9DT0RFICplbmQsIFB5X3NzaXplX3QgZ3JvdXBzKQogewotICAgIGlmIChncm91cHMgPCAwIHx8IGdyb3VwcyA+IDEwMCB8fCBjb2RlID49IGVuZCB8fCBlbmRbLTFdICE9IFNSRV9PUF9TVUNDRVNTKQorICAgIGlmIChncm91cHMgPCAwIHx8IChzaXplX3QpZ3JvdXBzID4gU1JFX01BWEdST1VQUyB8fAorICAgICAgICBjb2RlID49IGVuZCB8fCBlbmRbLTFdICE9IFNSRV9PUF9TVUNDRVNTKQogICAgICAgICBGQUlMOwotICAgIGlmIChncm91cHMgPT0gMCkgIC8qIGZpeCBmb3Igc2ltcGxlanNvbiAqLwotICAgICAgICBncm91cHMgPSAxMDA7IC8qIDEwMCBncm91cHMgc2hvdWxkIGFsd2F5cyBiZSBzYWZlICovCiAgICAgcmV0dXJuIF92YWxpZGF0ZV9pbm5lcihjb2RlLCBlbmQtMSwgZ3JvdXBzKTsKIH0KIApAQCAtMjAzNiwxMyArMjA3NiwyMiBAQAogICAgIHJldHVybiBtYXRjaF9nZXRzbGljZV9ieV9pbmRleChzZWxmLCBtYXRjaF9nZXRpbmRleChzZWxmLCBpbmRleCksIGRlZik7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLW1hdGNoX2V4cGFuZChNYXRjaE9iamVjdCogc2VsZiwgUHlPYmplY3QqIHB0ZW1wbGF0ZSkKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX01hdGNoLmV4cGFuZAorCisgICAgdGVtcGxhdGU6IG9iamVjdAorCitSZXR1cm4gdGhlIHN0cmluZyBvYnRhaW5lZCBieSBkb2luZyBiYWNrc2xhc2ggc3Vic3RpdHV0aW9uIG9uIHRoZSBzdHJpbmcgdGVtcGxhdGUsIGFzIGRvbmUgYnkgdGhlIHN1YigpIG1ldGhvZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX2V4cGFuZF9pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGVtcGxhdGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTMxYjU4Y2NjMzIzYzNhMSBpbnB1dD00YmZkYjIyYzJmOGIxNDZhXSovCiB7CiAgICAgLyogZGVsZWdhdGUgdG8gUHl0aG9uIGNvZGUgKi8KICAgICByZXR1cm4gY2FsbCgKICAgICAgICAgU1JFX1BZX01PRFVMRSwgIl9leHBhbmQiLAotICAgICAgICBQeVR1cGxlX1BhY2soMywgc2VsZi0+cGF0dGVybiwgc2VsZiwgcHRlbXBsYXRlKQorICAgICAgICBQeVR1cGxlX1BhY2soMywgc2VsZi0+cGF0dGVybiwgc2VsZiwgdGVtcGxhdGUpCiAgICAgICAgICk7CiB9CiAKQEAgLTIwODEsMjQgKzIxMzAsMjkgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1tYXRjaF9ncm91cHMoTWF0Y2hPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9NYXRjaC5ncm91cHMKKworICAgIGRlZmF1bHQ6IG9iamVjdCA9IE5vbmUKKyAgICAgICAgSXMgdXNlZCBmb3IgZ3JvdXBzIHRoYXQgZGlkIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgbWF0Y2guCisKK1JldHVybiBhIHR1cGxlIGNvbnRhaW5pbmcgYWxsIHRoZSBzdWJncm91cHMgb2YgdGhlIG1hdGNoLCBmcm9tIDEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9ncm91cHNfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGFmOGUyNjQxNTM3MjM4YSBpbnB1dD1iYjA2OWVmNTVkYWJjYTkxXSovCiB7CiAgICAgUHlPYmplY3QqIHJlc3VsdDsKICAgICBQeV9zc2l6ZV90IGluZGV4OwogCi0gICAgUHlPYmplY3QqIGRlZiA9IFB5X05vbmU7Ci0gICAgc3RhdGljIGNoYXIqIGt3bGlzdFtdID0geyAiZGVmYXVsdCIsIE5VTEwgfTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxPOmdyb3VwcyIsIGt3bGlzdCwgJmRlZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcoc2VsZi0+Z3JvdXBzLTEpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGZvciAoaW5kZXggPSAxOyBpbmRleCA8IHNlbGYtPmdyb3VwczsgaW5kZXgrKykgewogICAgICAgICBQeU9iamVjdCogaXRlbTsKLSAgICAgICAgaXRlbSA9IG1hdGNoX2dldHNsaWNlX2J5X2luZGV4KHNlbGYsIGluZGV4LCBkZWYpOworICAgICAgICBpdGVtID0gbWF0Y2hfZ2V0c2xpY2VfYnlfaW5kZXgoc2VsZiwgaW5kZXgsIGRlZmF1bHRfdmFsdWUpOwogICAgICAgICBpZiAoIWl0ZW0pIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMTA5LDE4ICsyMTYzLDIzIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotbWF0Y2hfZ3JvdXBkaWN0KE1hdGNoT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfTWF0Y2guZ3JvdXBkaWN0CisKKyAgICBkZWZhdWx0OiBvYmplY3QgPSBOb25lCisgICAgICAgIElzIHVzZWQgZm9yIGdyb3VwcyB0aGF0IGRpZCBub3QgcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoLgorCitSZXR1cm4gYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYWxsIHRoZSBuYW1lZCBzdWJncm91cHMgb2YgdGhlIG1hdGNoLCBrZXllZCBieSB0aGUgc3ViZ3JvdXAgbmFtZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX2dyb3VwZGljdF9pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yOTkxN2M5MDczZTQxNzU3IGlucHV0PTBkZWQ3OTYwYjIzNzgwYWFdKi8KIHsKICAgICBQeU9iamVjdCogcmVzdWx0OwogICAgIFB5T2JqZWN0KiBrZXlzOwogICAgIFB5X3NzaXplX3QgaW5kZXg7CiAKLSAgICBQeU9iamVjdCogZGVmID0gUHlfTm9uZTsKLSAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7ICJkZWZhdWx0IiwgTlVMTCB9OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifE86Z3JvdXBkaWN0Iiwga3dsaXN0LCAmZGVmKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXN1bHQgPSBQeURpY3RfTmV3KCk7CiAgICAgaWYgKCFyZXN1bHQgfHwgIXNlbGYtPnBhdHRlcm4tPmdyb3VwaW5kZXgpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0yMTM2LDcgKzIxOTUsNyBAQAogICAgICAgICBrZXkgPSBQeUxpc3RfR0VUX0lURU0oa2V5cywgaW5kZXgpOwogICAgICAgICBpZiAoIWtleSkKICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwotICAgICAgICB2YWx1ZSA9IG1hdGNoX2dldHNsaWNlKHNlbGYsIGtleSwgZGVmKTsKKyAgICAgICAgdmFsdWUgPSBtYXRjaF9nZXRzbGljZShzZWxmLCBrZXksIGRlZmF1bHRfdmFsdWUpOwogICAgICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwpAQCAtMjE1Nyw1MCArMjIxNiw1OCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1tYXRjaF9zdGFydChNYXRjaE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9NYXRjaC5zdGFydCAtPiBQeV9zc2l6ZV90CisKKyAgICBncm91cDogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gMAorICAgIC8KKworUmV0dXJuIGluZGV4IG9mIHRoZSBzdGFydCBvZiB0aGUgc3Vic3RyaW5nIG1hdGNoZWQgYnkgZ3JvdXAuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeV9zc2l6ZV90Citfc3JlX1NSRV9NYXRjaF9zdGFydF9pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZ3JvdXApCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2Y2ZTdmOWRmMmZiNTIwMSBpbnB1dD1jZWQ4ZTRlZDRiMzNlZTZjXSovCiB7Ci0gICAgUHlfc3NpemVfdCBpbmRleDsKLQotICAgIFB5T2JqZWN0KiBpbmRleF8gPSBOVUxMOwotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInN0YXJ0IiwgMCwgMSwgJmluZGV4XykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaW5kZXggPSBtYXRjaF9nZXRpbmRleChzZWxmLCBpbmRleF8pOworICAgIFB5X3NzaXplX3QgaW5kZXggPSBtYXRjaF9nZXRpbmRleChzZWxmLCBncm91cCk7CiAKICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHNlbGYtPmdyb3VwcykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoCiAgICAgICAgICAgICBQeUV4Y19JbmRleEVycm9yLAogICAgICAgICAgICAgIm5vIHN1Y2ggZ3JvdXAiCiAgICAgICAgICAgICApOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAogICAgIC8qIG1hcmsgaXMgLTEgaWYgZ3JvdXAgaXMgdW5kZWZpbmVkICovCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5tYXJrW2luZGV4KjJdKTsKKyAgICByZXR1cm4gc2VsZi0+bWFya1tpbmRleCoyXTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotbWF0Y2hfZW5kKE1hdGNoT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX01hdGNoLmVuZCAtPiBQeV9zc2l6ZV90CisKKyAgICBncm91cDogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gMAorICAgIC8KKworUmV0dXJuIGluZGV4IG9mIHRoZSBlbmQgb2YgdGhlIHN1YnN0cmluZyBtYXRjaGVkIGJ5IGdyb3VwLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlfc3NpemVfdAorX3NyZV9TUkVfTWF0Y2hfZW5kX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpncm91cCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNDI0MGIwOTkxMWY3NjkyIGlucHV0PTFiNzk5NTYwYzdmM2Q3ZTZdKi8KIHsKLSAgICBQeV9zc2l6ZV90IGluZGV4OwotCi0gICAgUHlPYmplY3QqIGluZGV4XyA9IE5VTEw7Ci0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZW5kIiwgMCwgMSwgJmluZGV4XykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaW5kZXggPSBtYXRjaF9nZXRpbmRleChzZWxmLCBpbmRleF8pOworICAgIFB5X3NzaXplX3QgaW5kZXggPSBtYXRjaF9nZXRpbmRleChzZWxmLCBncm91cCk7CiAKICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHNlbGYtPmdyb3VwcykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoCiAgICAgICAgICAgICBQeUV4Y19JbmRleEVycm9yLAogICAgICAgICAgICAgIm5vIHN1Y2ggZ3JvdXAiCiAgICAgICAgICAgICApOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAogICAgIC8qIG1hcmsgaXMgLTEgaWYgZ3JvdXAgaXMgdW5kZWZpbmVkICovCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5tYXJrW2luZGV4KjIrMV0pOworICAgIHJldHVybiBzZWxmLT5tYXJrW2luZGV4KjIrMV07CiB9CiAKIExPQ0FMKFB5T2JqZWN0KikKQEAgLTIyMzAsMTYgKzIyOTcsMjAgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotbWF0Y2hfc3BhbihNYXRjaE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9NYXRjaC5zcGFuCisKKyAgICBncm91cDogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gMAorICAgIC8KKworRm9yIE1hdGNoT2JqZWN0IG0sIHJldHVybiB0aGUgMi10dXBsZSAobS5zdGFydChncm91cCksIG0uZW5kKGdyb3VwKSkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9zcGFuX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpncm91cCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMDJhZTQwNTk0ZDE0ZmU2IGlucHV0PTQ5MDkyYjYwMDhkMTc2ZDNdKi8KIHsKLSAgICBQeV9zc2l6ZV90IGluZGV4OwotCi0gICAgUHlPYmplY3QqIGluZGV4XyA9IE5VTEw7Ci0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3BhbiIsIDAsIDEsICZpbmRleF8pKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGluZGV4ID0gbWF0Y2hfZ2V0aW5kZXgoc2VsZiwgaW5kZXhfKTsKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gbWF0Y2hfZ2V0aW5kZXgoc2VsZiwgZ3JvdXApOwogCiAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBzZWxmLT5ncm91cHMpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKApAQCAtMjI3OSw4ICsyMzUwLDE0IEBACiAgICAgcmV0dXJuIHJlZ3M7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLW1hdGNoX2NvcHkoTWF0Y2hPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9NYXRjaC5fX2NvcHlfXworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9fX2NvcHlfX19pbXBsKE1hdGNoT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE3NzljNWZjOGI1YjRlYjQgaW5wdXQ9M2JiNGQzMGI2YmFkZGI1Yl0qLwogewogI2lmZGVmIFVTRV9CVUlMVElOX0NPUFkKICAgICBNYXRjaE9iamVjdCogY29weTsKQEAgLTIzMTAsOCArMjM4NywxNiBAQAogI2VuZGlmCiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLW1hdGNoX2RlZXBjb3B5KE1hdGNoT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogbWVtbykKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX01hdGNoLl9fZGVlcGNvcHlfXworCisgICAgbWVtbzogb2JqZWN0CisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfX19pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbWVtbykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYjY1NzU3OGViMDNmNGEzIGlucHV0PWI2NWI3MjQ4OWVhYzY0Y2NdKi8KIHsKICNpZmRlZiBVU0VfQlVJTFRJTl9DT1BZCiAgICAgTWF0Y2hPYmplY3QqIGNvcHk7CkBAIC0yMzQyLDUwICsyNDI3LDYgQEAKICAgICBSZXR1cm4gc3ViZ3JvdXAocykgb2YgdGhlIG1hdGNoIGJ5IGluZGljZXMgb3IgbmFtZXMuXG5cCiAgICAgRm9yIDAgcmV0dXJucyB0aGUgZW50aXJlIG1hdGNoLiIpOwogCi1QeURvY19TVFJWQVIobWF0Y2hfc3RhcnRfZG9jLAotInN0YXJ0KFtncm91cD0wXSkgLT4gaW50LlxuXAotICAgIFJldHVybiBpbmRleCBvZiB0aGUgc3RhcnQgb2YgdGhlIHN1YnN0cmluZyBtYXRjaGVkIGJ5IGdyb3VwLiIpOwotCi1QeURvY19TVFJWQVIobWF0Y2hfZW5kX2RvYywKLSJlbmQoW2dyb3VwPTBdKSAtPiBpbnQuXG5cCi0gICAgUmV0dXJuIGluZGV4IG9mIHRoZSBlbmQgb2YgdGhlIHN1YnN0cmluZyBtYXRjaGVkIGJ5IGdyb3VwLiIpOwotCi1QeURvY19TVFJWQVIobWF0Y2hfc3Bhbl9kb2MsCi0ic3BhbihbZ3JvdXBdKSAtPiB0dXBsZS5cblwKLSAgICBGb3IgTWF0Y2hPYmplY3QgbSwgcmV0dXJuIHRoZSAyLXR1cGxlIChtLnN0YXJ0KGdyb3VwKSwgbS5lbmQoZ3JvdXApKS4iKTsKLQotUHlEb2NfU1RSVkFSKG1hdGNoX2dyb3Vwc19kb2MsCi0iZ3JvdXBzKFtkZWZhdWx0PU5vbmVdKSAtPiB0dXBsZS5cblwKLSAgICBSZXR1cm4gYSB0dXBsZSBjb250YWluaW5nIGFsbCB0aGUgc3ViZ3JvdXBzIG9mIHRoZSBtYXRjaCwgZnJvbSAxLlxuXAotICAgIFRoZSBkZWZhdWx0IGFyZ3VtZW50IGlzIHVzZWQgZm9yIGdyb3Vwc1xuXAotICAgIHRoYXQgZGlkIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgbWF0Y2giKTsKLQotUHlEb2NfU1RSVkFSKG1hdGNoX2dyb3VwZGljdF9kb2MsCi0iZ3JvdXBkaWN0KFtkZWZhdWx0PU5vbmVdKSAtPiBkaWN0LlxuXAotICAgIFJldHVybiBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhbGwgdGhlIG5hbWVkIHN1Ymdyb3VwcyBvZiB0aGUgbWF0Y2gsXG5cCi0gICAga2V5ZWQgYnkgdGhlIHN1Ymdyb3VwIG5hbWUuIFRoZSBkZWZhdWx0IGFyZ3VtZW50IGlzIHVzZWQgZm9yIGdyb3Vwc1xuXAotICAgIHRoYXQgZGlkIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgbWF0Y2giKTsKLQotUHlEb2NfU1RSVkFSKG1hdGNoX2V4cGFuZF9kb2MsCi0iZXhwYW5kKHRlbXBsYXRlKSAtPiBzdHIuXG5cCi0gICAgUmV0dXJuIHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgZG9pbmcgYmFja3NsYXNoIHN1YnN0aXR1dGlvblxuXAotICAgIG9uIHRoZSBzdHJpbmcgdGVtcGxhdGUsIGFzIGRvbmUgYnkgdGhlIHN1YigpIG1ldGhvZC4iKTsKLQotc3RhdGljIFB5TWV0aG9kRGVmIG1hdGNoX21ldGhvZHNbXSA9IHsKLSAgICB7Imdyb3VwIiwgKFB5Q0Z1bmN0aW9uKSBtYXRjaF9ncm91cCwgTUVUSF9WQVJBUkdTLCBtYXRjaF9ncm91cF9kb2N9LAotICAgIHsic3RhcnQiLCAoUHlDRnVuY3Rpb24pIG1hdGNoX3N0YXJ0LCBNRVRIX1ZBUkFSR1MsIG1hdGNoX3N0YXJ0X2RvY30sCi0gICAgeyJlbmQiLCAoUHlDRnVuY3Rpb24pIG1hdGNoX2VuZCwgTUVUSF9WQVJBUkdTLCBtYXRjaF9lbmRfZG9jfSwKLSAgICB7InNwYW4iLCAoUHlDRnVuY3Rpb24pIG1hdGNoX3NwYW4sIE1FVEhfVkFSQVJHUywgbWF0Y2hfc3Bhbl9kb2N9LAotICAgIHsiZ3JvdXBzIiwgKFB5Q0Z1bmN0aW9uKSBtYXRjaF9ncm91cHMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotICAgICAgICBtYXRjaF9ncm91cHNfZG9jfSwKLSAgICB7Imdyb3VwZGljdCIsIChQeUNGdW5jdGlvbikgbWF0Y2hfZ3JvdXBkaWN0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLSAgICAgICAgbWF0Y2hfZ3JvdXBkaWN0X2RvY30sCi0gICAgeyJleHBhbmQiLCAoUHlDRnVuY3Rpb24pIG1hdGNoX2V4cGFuZCwgTUVUSF9PLCBtYXRjaF9leHBhbmRfZG9jfSwKLSAgICB7Il9fY29weV9fIiwgKFB5Q0Z1bmN0aW9uKSBtYXRjaF9jb3B5LCBNRVRIX05PQVJHU30sCi0gICAgeyJfX2RlZXBjb3B5X18iLCAoUHlDRnVuY3Rpb24pIG1hdGNoX2RlZXBjb3B5LCBNRVRIX099LAotICAgIHtOVUxMLCBOVUxMfQotfTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIG1hdGNoX2xhc3RpbmRleF9nZXQoTWF0Y2hPYmplY3QgKnNlbGYpCiB7CkBAIC0yNDM2LDU3ICsyNDc3LDYgQEAKIH0KIAogCi1zdGF0aWMgUHlHZXRTZXREZWYgbWF0Y2hfZ2V0c2V0W10gPSB7Ci0gICAgeyJsYXN0aW5kZXgiLCAoZ2V0dGVyKW1hdGNoX2xhc3RpbmRleF9nZXQsIChzZXR0ZXIpTlVMTH0sCi0gICAgeyJsYXN0Z3JvdXAiLCAoZ2V0dGVyKW1hdGNoX2xhc3Rncm91cF9nZXQsIChzZXR0ZXIpTlVMTH0sCi0gICAgeyJyZWdzIiwgICAgICAoZ2V0dGVyKW1hdGNoX3JlZ3NfZ2V0LCAgICAgIChzZXR0ZXIpTlVMTH0sCi0gICAge05VTEx9Ci19OwotCi0jZGVmaW5lIE1BVENIX09GRih4KSBvZmZzZXRvZihNYXRjaE9iamVjdCwgeCkKLXN0YXRpYyBQeU1lbWJlckRlZiBtYXRjaF9tZW1iZXJzW10gPSB7Ci0gICAgeyJzdHJpbmciLCAgVF9PQkpFQ1QsICAgTUFUQ0hfT0ZGKHN0cmluZyksICBSRUFET05MWX0sCi0gICAgeyJyZSIsICAgICAgVF9PQkpFQ1QsICAgTUFUQ0hfT0ZGKHBhdHRlcm4pLCBSRUFET05MWX0sCi0gICAgeyJwb3MiLCAgICAgVF9QWVNTSVpFVCwgTUFUQ0hfT0ZGKHBvcyksICAgICBSRUFET05MWX0sCi0gICAgeyJlbmRwb3MiLCAgVF9QWVNTSVpFVCwgTUFUQ0hfT0ZGKGVuZHBvcyksICBSRUFET05MWX0sCi0gICAge05VTEx9Ci19OwotCi0vKiBGSVhNRTogaW1wbGVtZW50IHNldGF0dHIoInN0cmluZyIsIE5vbmUpIGFzIGEgc3BlY2lhbCBjYXNlICh0bwotICAgZGV0YWNoIHRoZSBhc3NvY2lhdGVkIHN0cmluZywgaWYgYW55ICovCi0KLXN0YXRpYyBQeVR5cGVPYmplY3QgTWF0Y2hfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwwKQotICAgICJfIiBTUkVfTU9EVUxFICIuU1JFX01hdGNoIiwKLSAgICBzaXplb2YoTWF0Y2hPYmplY3QpLCBzaXplb2YoUHlfc3NpemVfdCksCi0gICAgKGRlc3RydWN0b3IpbWF0Y2hfZGVhbGxvYywgIC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCi0gICAgKHJlcHJmdW5jKW1hdGNoX3JlcHIsICAgICAgIC8qIHRwX3JlcHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgLyogdHBfZmxhZ3MgKi8KLSAgICBtYXRjaF9kb2MsICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICBtYXRjaF9tZXRob2RzLCAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgIG1hdGNoX21lbWJlcnMsICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgbWF0Y2hfZ2V0c2V0LCAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwotfTsKLQogc3RhdGljIFB5T2JqZWN0KgogcGF0dGVybl9uZXdfbWF0Y2goUGF0dGVybk9iamVjdCogcGF0dGVybiwgU1JFX1NUQVRFKiBzdGF0ZSwgUHlfc3NpemVfdCBzdGF0dXMpCiB7CkBAIC0yNTYyLDggKzI1NTIsMTQgQEAKICAgICBQeU9iamVjdF9ERUwoc2VsZik7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXNjYW5uZXJfbWF0Y2goU2Nhbm5lck9iamVjdCogc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX1NjYW5uZXIubWF0Y2gKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfU2Nhbm5lcl9tYXRjaF9pbXBsKFNjYW5uZXJPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTM2YjMwYzYzZDRiODFlYiBpbnB1dD04ODFhMDE1NGY4YzEzZDlhXSovCiB7CiAgICAgU1JFX1NUQVRFKiBzdGF0ZSA9ICZzZWxmLT5zdGF0ZTsKICAgICBQeU9iamVjdCogbWF0Y2g7CkBAIC0yNTk2LDggKzI1OTIsMTQgQEAKIH0KIAogCi1zdGF0aWMgUHlPYmplY3QqCi1zY2FubmVyX3NlYXJjaChTY2FubmVyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfU2Nhbm5lci5zZWFyY2gKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfU2Nhbm5lcl9zZWFyY2hfaW1wbChTY2FubmVyT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdkYzIxMTk4NjA4OGYwMjUgaW5wdXQ9MTYxMjIzZWU5MmVmOTI3MF0qLwogewogICAgIFNSRV9TVEFURSogc3RhdGUgPSAmc2VsZi0+c3RhdGU7CiAgICAgUHlPYmplY3QqIG1hdGNoOwpAQCAtMjYyOSw5ICsyNjMxLDE2MCBAQAogICAgIHJldHVybiBtYXRjaDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3BhdHRlcm5fc2Nhbm5lcihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLCBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MpCit7CisgICAgU2Nhbm5lck9iamVjdCogc2Nhbm5lcjsKKworICAgIC8qIGNyZWF0ZSBzY2FubmVyIG9iamVjdCAqLworICAgIHNjYW5uZXIgPSBQeU9iamVjdF9ORVcoU2Nhbm5lck9iamVjdCwgJlNjYW5uZXJfVHlwZSk7CisgICAgaWYgKCFzY2FubmVyKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBzY2FubmVyLT5wYXR0ZXJuID0gTlVMTDsKKworICAgIC8qIGNyZWF0ZSBzZWFyY2ggc3RhdGUgb2JqZWN0ICovCisgICAgaWYgKCFzdGF0ZV9pbml0KCZzY2FubmVyLT5zdGF0ZSwgc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcykpIHsKKyAgICAgICAgUHlfREVDUkVGKHNjYW5uZXIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgc2Nhbm5lci0+cGF0dGVybiA9IChQeU9iamVjdCopIHNlbGY7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2Nhbm5lcjsKK30KKworI2luY2x1ZGUgImNsaW5pYy9fc3JlLmMuaCIKKworc3RhdGljIFB5TWV0aG9kRGVmIHBhdHRlcm5fbWV0aG9kc1tdID0geworICAgIF9TUkVfU1JFX1BBVFRFUk5fTUFUQ0hfTUVUSE9EREVGCisgICAgX1NSRV9TUkVfUEFUVEVSTl9GVUxMTUFUQ0hfTUVUSE9EREVGCisgICAgX1NSRV9TUkVfUEFUVEVSTl9TRUFSQ0hfTUVUSE9EREVGCisgICAgX1NSRV9TUkVfUEFUVEVSTl9TVUJfTUVUSE9EREVGCisgICAgX1NSRV9TUkVfUEFUVEVSTl9TVUJOX01FVEhPRERFRgorICAgIF9TUkVfU1JFX1BBVFRFUk5fRklOREFMTF9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9QQVRURVJOX1NQTElUX01FVEhPRERFRgorICAgIF9TUkVfU1JFX1BBVFRFUk5fRklORElURVJfTUVUSE9EREVGCisgICAgX1NSRV9TUkVfUEFUVEVSTl9TQ0FOTkVSX01FVEhPRERFRgorICAgIF9TUkVfU1JFX1BBVFRFUk5fX19DT1BZX19fTUVUSE9EREVGCisgICAgX1NSRV9TUkVfUEFUVEVSTl9fX0RFRVBDT1BZX19fTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgUHlHZXRTZXREZWYgcGF0dGVybl9nZXRzZXRbXSA9IHsKKyAgICB7Imdyb3VwaW5kZXgiLCAoZ2V0dGVyKXBhdHRlcm5fZ3JvdXBpbmRleCwgKHNldHRlcilOVUxMLAorICAgICAgIkEgZGljdGlvbmFyeSBtYXBwaW5nIGdyb3VwIG5hbWVzIHRvIGdyb3VwIG51bWJlcnMuIn0sCisgICAge05VTEx9ICAvKiBTZW50aW5lbCAqLworfTsKKworI2RlZmluZSBQQVRfT0ZGKHgpIG9mZnNldG9mKFBhdHRlcm5PYmplY3QsIHgpCitzdGF0aWMgUHlNZW1iZXJEZWYgcGF0dGVybl9tZW1iZXJzW10gPSB7CisgICAgeyJwYXR0ZXJuIiwgICAgVF9PQkpFQ1QsICAgIFBBVF9PRkYocGF0dGVybiksICAgICAgIFJFQURPTkxZfSwKKyAgICB7ImZsYWdzIiwgICAgICBUX0lOVCwgICAgICAgUEFUX09GRihmbGFncyksICAgICAgICAgUkVBRE9OTFl9LAorICAgIHsiZ3JvdXBzIiwgICAgIFRfUFlTU0laRVQsICBQQVRfT0ZGKGdyb3VwcyksICAgICAgICBSRUFET05MWX0sCisgICAge05VTEx9ICAvKiBTZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBQYXR0ZXJuX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl8iIFNSRV9NT0RVTEUgIi5TUkVfUGF0dGVybiIsCisgICAgc2l6ZW9mKFBhdHRlcm5PYmplY3QpLCBzaXplb2YoU1JFX0NPREUpLAorICAgIChkZXN0cnVjdG9yKXBhdHRlcm5fZGVhbGxvYywgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAocmVwcmZ1bmMpcGF0dGVybl9yZXByLCAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBwYXR0ZXJuX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBvZmZzZXRvZihQYXR0ZXJuT2JqZWN0LCB3ZWFrcmVmbGlzdCksICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgcGF0dGVybl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIHBhdHRlcm5fbWVtYmVycywgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBwYXR0ZXJuX2dldHNldCwgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KK307CisKKworc3RhdGljIFB5TWV0aG9kRGVmIG1hdGNoX21ldGhvZHNbXSA9IHsKKyAgICB7Imdyb3VwIiwgKFB5Q0Z1bmN0aW9uKSBtYXRjaF9ncm91cCwgTUVUSF9WQVJBUkdTLCBtYXRjaF9ncm91cF9kb2N9LAorICAgIF9TUkVfU1JFX01BVENIX1NUQVJUX01FVEhPRERFRgorICAgIF9TUkVfU1JFX01BVENIX0VORF9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9NQVRDSF9TUEFOX01FVEhPRERFRgorICAgIF9TUkVfU1JFX01BVENIX0dST1VQU19NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9NQVRDSF9HUk9VUERJQ1RfTUVUSE9EREVGCisgICAgX1NSRV9TUkVfTUFUQ0hfRVhQQU5EX01FVEhPRERFRgorICAgIF9TUkVfU1JFX01BVENIX19fQ09QWV9fX01FVEhPRERFRgorICAgIF9TUkVfU1JFX01BVENIX19fREVFUENPUFlfX19NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0KK307CisKK3N0YXRpYyBQeUdldFNldERlZiBtYXRjaF9nZXRzZXRbXSA9IHsKKyAgICB7Imxhc3RpbmRleCIsIChnZXR0ZXIpbWF0Y2hfbGFzdGluZGV4X2dldCwgKHNldHRlcilOVUxMfSwKKyAgICB7Imxhc3Rncm91cCIsIChnZXR0ZXIpbWF0Y2hfbGFzdGdyb3VwX2dldCwgKHNldHRlcilOVUxMfSwKKyAgICB7InJlZ3MiLCAgICAgIChnZXR0ZXIpbWF0Y2hfcmVnc19nZXQsICAgICAgKHNldHRlcilOVUxMfSwKKyAgICB7TlVMTH0KK307CisKKyNkZWZpbmUgTUFUQ0hfT0ZGKHgpIG9mZnNldG9mKE1hdGNoT2JqZWN0LCB4KQorc3RhdGljIFB5TWVtYmVyRGVmIG1hdGNoX21lbWJlcnNbXSA9IHsKKyAgICB7InN0cmluZyIsICBUX09CSkVDVCwgICBNQVRDSF9PRkYoc3RyaW5nKSwgIFJFQURPTkxZfSwKKyAgICB7InJlIiwgICAgICBUX09CSkVDVCwgICBNQVRDSF9PRkYocGF0dGVybiksIFJFQURPTkxZfSwKKyAgICB7InBvcyIsICAgICBUX1BZU1NJWkVULCBNQVRDSF9PRkYocG9zKSwgICAgIFJFQURPTkxZfSwKKyAgICB7ImVuZHBvcyIsICBUX1BZU1NJWkVULCBNQVRDSF9PRkYoZW5kcG9zKSwgIFJFQURPTkxZfSwKKyAgICB7TlVMTH0KK307CisKKy8qIEZJWE1FOiBpbXBsZW1lbnQgc2V0YXR0cigic3RyaW5nIiwgTm9uZSkgYXMgYSBzcGVjaWFsIGNhc2UgKHRvCisgICBkZXRhY2ggdGhlIGFzc29jaWF0ZWQgc3RyaW5nLCBpZiBhbnkgKi8KKworc3RhdGljIFB5VHlwZU9iamVjdCBNYXRjaF9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLDApCisgICAgIl8iIFNSRV9NT0RVTEUgIi5TUkVfTWF0Y2giLAorICAgIHNpemVvZihNYXRjaE9iamVjdCksIHNpemVvZihQeV9zc2l6ZV90KSwKKyAgICAoZGVzdHJ1Y3RvciltYXRjaF9kZWFsbG9jLCAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAocmVwcmZ1bmMpbWF0Y2hfcmVwciwgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIG1hdGNoX2RvYywgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIG1hdGNoX21ldGhvZHMsICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgbWF0Y2hfbWVtYmVycywgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBtYXRjaF9nZXRzZXQsICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCit9OworCiBzdGF0aWMgUHlNZXRob2REZWYgc2Nhbm5lcl9tZXRob2RzW10gPSB7Ci0gICAgeyJtYXRjaCIsIChQeUNGdW5jdGlvbikgc2Nhbm5lcl9tYXRjaCwgTUVUSF9OT0FSR1N9LAotICAgIHsic2VhcmNoIiwgKFB5Q0Z1bmN0aW9uKSBzY2FubmVyX3NlYXJjaCwgTUVUSF9OT0FSR1N9LAorICAgIF9TUkVfU1JFX1NDQU5ORVJfTUFUQ0hfTUVUSE9EREVGCisgICAgX1NSRV9TUkVfU0NBTk5FUl9TRUFSQ0hfTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEx9CiB9OwogCkBAIC0yNjczLDQ3ICsyODI2LDEwIEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogfTsKIAotc3RhdGljIFB5T2JqZWN0KgotcGF0dGVybl9zY2FubmVyKFBhdHRlcm5PYmplY3QqIHBhdHRlcm4sIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCi17Ci0gICAgLyogY3JlYXRlIHNlYXJjaCBzdGF0ZSBvYmplY3QgKi8KLQotICAgIFNjYW5uZXJPYmplY3QqIHNlbGY7Ci0KLSAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTCwgKnN0cmluZzIgPSBOVUxMOwotICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwotICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgc3RhdGljIGNoYXIqIGt3bGlzdFtdID0geyAic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAic291cmNlIiwgTlVMTCB9OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifE9ubiRPOnNjYW5uZXIiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cmluZywgJnN0YXJ0LCAmZW5kLCAmc3RyaW5nMikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgc3RyaW5nID0gZml4X3N0cmluZ19wYXJhbShzdHJpbmcsIHN0cmluZzIsICJzb3VyY2UiKTsKLSAgICBpZiAoIXN0cmluZykKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiBjcmVhdGUgc2Nhbm5lciBvYmplY3QgKi8KLSAgICBzZWxmID0gUHlPYmplY3RfTkVXKFNjYW5uZXJPYmplY3QsICZTY2FubmVyX1R5cGUpOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc2VsZi0+cGF0dGVybiA9IE5VTEw7Ci0KLSAgICBzdHJpbmcgPSBzdGF0ZV9pbml0KCZzZWxmLT5zdGF0ZSwgcGF0dGVybiwgc3RyaW5nLCBzdGFydCwgZW5kKTsKLSAgICBpZiAoIXN0cmluZykgewotICAgICAgICBQeV9ERUNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIFB5X0lOQ1JFRihwYXR0ZXJuKTsKLSAgICBzZWxmLT5wYXR0ZXJuID0gKFB5T2JqZWN0KikgcGF0dGVybjsKLQotICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwotfQotCiBzdGF0aWMgUHlNZXRob2REZWYgX2Z1bmN0aW9uc1tdID0gewotICAgIHsiY29tcGlsZSIsIF9jb21waWxlLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZ2V0Y29kZXNpemUiLCBzcmVfY29kZXNpemUsIE1FVEhfTk9BUkdTfSwKLSAgICB7ImdldGxvd2VyIiwgc3JlX2dldGxvd2VyLCBNRVRIX1ZBUkFSR1N9LAorICAgIF9TUkVfQ09NUElMRV9NRVRIT0RERUYKKyAgICBfU1JFX0dFVENPREVTSVpFX01FVEhPRERFRgorICAgIF9TUkVfR0VUTE9XRVJfTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEx9CiB9OwogCkBAIC0yNzYzLDYgKzI4NzksMTIgQEAKICAgICAgICAgUHlfREVDUkVGKHgpOwogICAgIH0KIAorICAgIHggPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhTUkVfTUFYR1JPVVBTKTsKKyAgICBpZiAoeCkgeworICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTUFYR1JPVVBTIiwgeCk7CisgICAgICAgIFB5X0RFQ1JFRih4KTsKKyAgICB9CisKICAgICB4ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoY29weXJpZ2h0KTsKICAgICBpZiAoeCkgewogICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiY29weXJpZ2h0IiwgeCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zc2wuYyBiL01vZHVsZXMvX3NzbC5jCmluZGV4IGQ5MTg2NzEuLjFjNjgwMDAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NzbC5jCisrKyBiL01vZHVsZXMvX3NzbC5jCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAib3BlbnNzbC9zc2wuaCIKICNpbmNsdWRlICJvcGVuc3NsL2Vyci5oIgogI2luY2x1ZGUgIm9wZW5zc2wvcmFuZC5oIgorI2luY2x1ZGUgIm9wZW5zc2wvYmlvLmgiCiAKIC8qIFNTTCBlcnJvciBvYmplY3QgKi8KIHN0YXRpYyBQeU9iamVjdCAqUHlTU0xFcnJvck9iamVjdDsKQEAgLTEwOCw2ICsxMDksMTAgQEAKICMgZGVmaW5lIEhBVkVfU05JIDAKICNlbmRpZgogCisjaWZkZWYgVExTRVhUX1RZUEVfYXBwbGljYXRpb25fbGF5ZXJfcHJvdG9jb2xfbmVnb3RpYXRpb24KKyMgZGVmaW5lIEhBVkVfQUxQTgorI2VuZGlmCisKIGVudW0gcHlfc3NsX2Vycm9yIHsKICAgICAvKiB0aGVzZSBtaXJyb3Igc3NsLmggKi8KICAgICBQWV9TU0xfRVJST1JfTk9ORSwKQEAgLTE2MSwxMyArMTY2LDYgQEAKIAogI2RlZmluZSBYNTA5X05BTUVfTUFYTEVOIDI1NgogCi0vKiBSQU5EXyogQVBJcyBnb3QgYWRkZWQgdG8gT3BlblNTTCBpbiAwLjkuNSAqLwotI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgwMDkwNTAwZkwKLSMgZGVmaW5lIEhBVkVfT1BFTlNTTF9SQU5EIDEKLSNlbHNlCi0jIHVuZGVmIEhBVkVfT1BFTlNTTF9SQU5ECi0jZW5kaWYKLQogLyogU1NMX0NUWF9jbGVhcl9vcHRpb25zKCkgYW5kIFNTTF9jbGVhcl9vcHRpb25zKCkgd2VyZSBmaXJzdCBhZGRlZCBpbgogICogT3BlblNTTCAwLjkuOG0gYnV0IGRvIG5vdCBhcHBlYXIgaW4gc29tZSAwLjkuOS1kZXYgdmVyc2lvbnMgc3VjaCB0aGUKICAqIDAuOS45IGZyb20gIk1heSAyMDA4IiB0aGF0IE5ldEJTRCA1LjAgdXNlcy4gKi8KQEAgLTE4MSwzNiArMTc5LDE4IEBACiAgKiBvbGRlciBTU0wsIGJ1dCBsZXQncyBiZSBzYWZlICovCiAjZGVmaW5lIFB5U1NMX0NCX01BWExFTiAxMjgKIAotLyogU1NMX2dldF9maW5pc2hlZCBnb3QgYWRkZWQgdG8gT3BlblNTTCBpbiAwLjkuNSAqLwotI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgwMDkwNTAwZkwKLSMgZGVmaW5lIEhBVkVfT1BFTlNTTF9GSU5JU0hFRCAxCi0jZWxzZQotIyBkZWZpbmUgSEFWRV9PUEVOU1NMX0ZJTklTSEVEIDAKLSNlbmRpZgotCi0vKiBFQ0RIIHN1cHBvcnQgZ290IGFkZGVkIHRvIE9wZW5TU0wgaW4gMC45LjggKi8KLSNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgwMDkwODAwZkwgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19FQ0RIKQotIyBkZWZpbmUgT1BFTlNTTF9OT19FQ0RICi0jZW5kaWYKLQotLyogY29tcHJlc3Npb24gc3VwcG9ydCBnb3QgYWRkZWQgdG8gT3BlblNTTCBpbiAwLjkuOCAqLwotI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPCAweDAwOTA4MDBmTCAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0NPTVApCi0jIGRlZmluZSBPUEVOU1NMX05PX0NPTVAKLSNlbmRpZgotCi0vKiBYNTA5X1ZFUklGWV9QQVJBTSBnb3QgYWRkZWQgdG8gT3BlblNTTCBpbiAwLjkuOCAqLwotI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgwMDkwODAwZkwKLSMgZGVmaW5lIEhBVkVfT1BFTlNTTF9WRVJJRllfUEFSQU0KLSNlbmRpZgotCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgU1NMX0NUWCAqY3R4OwogI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKLSAgICBjaGFyICpucG5fcHJvdG9jb2xzOworICAgIHVuc2lnbmVkIGNoYXIgKm5wbl9wcm90b2NvbHM7CiAgICAgaW50IG5wbl9wcm90b2NvbHNfbGVuOwogI2VuZGlmCisjaWZkZWYgSEFWRV9BTFBOCisgICAgdW5zaWduZWQgY2hhciAqYWxwbl9wcm90b2NvbHM7CisgICAgaW50IGFscG5fcHJvdG9jb2xzX2xlbjsKKyNlbmRpZgogI2lmbmRlZiBPUEVOU1NMX05PX1RMU0VYVAogICAgIFB5T2JqZWN0ICpzZXRfaG9zdG5hbWU7CiAjZW5kaWYKQEAgLTIyNiwyMCArMjA2LDM1IEBACiAgICAgY2hhciBzaHV0ZG93bl9zZWVuX3plcm87CiAgICAgY2hhciBoYW5kc2hha2VfZG9uZTsKICAgICBlbnVtIHB5X3NzbF9zZXJ2ZXJfb3JfY2xpZW50IHNvY2tldF90eXBlOworICAgIFB5T2JqZWN0ICpvd25lcjsgLyogUHl0aG9uIGxldmVsICJvd25lciIgcGFzc2VkIHRvIHNlcnZlcm5hbWUgY2FsbGJhY2sgKi8KKyAgICBQeU9iamVjdCAqc2VydmVyX2hvc3RuYW1lOwogfSBQeVNTTFNvY2tldDsKIAordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBCSU8gKmJpbzsKKyAgICBpbnQgZW9mX3dyaXR0ZW47Cit9IFB5U1NMTWVtb3J5QklPOworCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMQ29udGV4dF9UeXBlOwogc3RhdGljIFB5VHlwZU9iamVjdCBQeVNTTFNvY2tldF9UeXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBQeVNTTE1lbW9yeUJJT19UeXBlOwogCi1zdGF0aWMgUHlPYmplY3QgKlB5U1NMX1NTTHdyaXRlKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7Ci1zdGF0aWMgUHlPYmplY3QgKlB5U1NMX1NTTHJlYWQoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKTsKLXN0YXRpYyBpbnQgY2hlY2tfc29ja2V0X2FuZF93YWl0X2Zvcl90aW1lb3V0KFB5U29ja2V0U29ja09iamVjdCAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3cml0aW5nKTsKLXN0YXRpYyBQeU9iamVjdCAqUHlTU0xfcGVlcmNlcnQoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKTsKLXN0YXRpYyBQeU9iamVjdCAqUHlTU0xfY2lwaGVyKFB5U1NMU29ja2V0ICpzZWxmKTsKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfc3NsCitjbGFzcyBfc3NsLl9TU0xDb250ZXh0ICJQeVNTTENvbnRleHQgKiIgIiZQeVNTTENvbnRleHRfVHlwZSIKK2NsYXNzIF9zc2wuX1NTTFNvY2tldCAiUHlTU0xTb2NrZXQgKiIgIiZQeVNTTFNvY2tldF9UeXBlIgorY2xhc3MgX3NzbC5NZW1vcnlCSU8gIlB5U1NMTWVtb3J5QklPICoiICImUHlTU0xNZW1vcnlCSU9fVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTdiZjdjYjgzMjYzOGUyZTFdKi8KKworI2luY2x1ZGUgImNsaW5pYy9fc3NsLmMuaCIKKworc3RhdGljIGludCBQeVNTTF9zZWxlY3QoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBpbnQgd3JpdGluZywgX1B5VGltZV90IHRpbWVvdXQpOwogCiAjZGVmaW5lIFB5U1NMQ29udGV4dF9DaGVjayh2KSAgIChQeV9UWVBFKHYpID09ICZQeVNTTENvbnRleHRfVHlwZSkKICNkZWZpbmUgUHlTU0xTb2NrZXRfQ2hlY2sodikgICAgKFB5X1RZUEUodikgPT0gJlB5U1NMU29ja2V0X1R5cGUpCisjZGVmaW5lIFB5U1NMTWVtb3J5QklPX0NoZWNrKHYpICAgIChQeV9UWVBFKHYpID09ICZQeVNTTE1lbW9yeUJJT19UeXBlKQogCiB0eXBlZGVmIGVudW0gewogICAgIFNPQ0tFVF9JU19OT05CTE9DS0lORywKQEAgLTI1MSwxMSArMjQ2LDE2IEBACiB9IHRpbWVvdXRfc3RhdGU7CiAKIC8qIFdyYXAgZXJyb3Igc3RyaW5ncyB3aXRoIGZpbGVuYW1lIGFuZCBsaW5lICMgKi8KLSNkZWZpbmUgU1RSSU5HSUZZMSh4KSAjeAotI2RlZmluZSBTVFJJTkdJRlkyKHgpIFNUUklOR0lGWTEoeCkKICNkZWZpbmUgRVJSU1RSMSh4LHkseikgKHggIjoiIHkgIjogIiB6KQotI2RlZmluZSBFUlJTVFIoeCkgRVJSU1RSMSgiX3NzbC5jIiwgU1RSSU5HSUZZMihfX0xJTkVfXyksIHgpCisjZGVmaW5lIEVSUlNUUih4KSBFUlJTVFIxKCJfc3NsLmMiLCBQeV9TVFJJTkdJRlkoX19MSU5FX18pLCB4KQogCisvKiBHZXQgdGhlIHNvY2tldCBmcm9tIGEgUHlTU0xTb2NrZXQsIGlmIGl0IGhhcyBvbmUgKi8KKyNkZWZpbmUgR0VUX1NPQ0tFVChvYmopICgob2JqKS0+U29ja2V0ID8gXAorICAgIChQeVNvY2tldFNvY2tPYmplY3QgKikgUHlXZWFrcmVmX0dldE9iamVjdCgob2JqKS0+U29ja2V0KSA6IE5VTEwpCisKKy8qIElmIHNvY2sgaXMgTlVMTCwgdXNlIGEgdGltZW91dCBvZiAwIHNlY29uZCAqLworI2RlZmluZSBHRVRfU09DS0VUX1RJTUVPVVQoc29jaykgXAorICAgICgoc29jayAhPSBOVUxMKSA/IChzb2NrKS0+c29ja190aW1lb3V0IDogMCkKIAogLyoKICAqIFNTTCBlcnJvcnMuCkBAIC00MTksMTMgKzQxOSwxMiBAQAogICAgICAgICBjYXNlIFNTTF9FUlJPUl9TWVNDQUxMOgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoZSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlTb2NrZXRTb2NrT2JqZWN0ICpzCi0gICAgICAgICAgICAgICAgICA9IChQeVNvY2tldFNvY2tPYmplY3QgKikgUHlXZWFrcmVmX0dldE9iamVjdChvYmotPlNvY2tldCk7CisgICAgICAgICAgICAgICAgUHlTb2NrZXRTb2NrT2JqZWN0ICpzID0gR0VUX1NPQ0tFVChvYmopOwogICAgICAgICAgICAgICAgIGlmIChyZXQgPT0gMCB8fCAoKChQeU9iamVjdCAqKXMpID09IFB5X05vbmUpKSB7CiAgICAgICAgICAgICAgICAgICAgIHAgPSBQWV9TU0xfRVJST1JfRU9GOwogICAgICAgICAgICAgICAgICAgICB0eXBlID0gUHlTU0xFT0ZFcnJvck9iamVjdDsKICAgICAgICAgICAgICAgICAgICAgZXJyc3RyID0gIkVPRiBvY2N1cnJlZCBpbiB2aW9sYXRpb24gb2YgcHJvdG9jb2wiOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmV0ID09IC0xKSB7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzICYmIHJldCA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAvKiB1bmRlcmx5aW5nIEJJTyByZXBvcnRlZCBhbiBJL08gZXJyb3IgKi8KICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHMpOwogICAgICAgICAgICAgICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKQEAgLTQ3OSwxMCArNDc4LDEyIEBACiBzdGF0aWMgUHlTU0xTb2NrZXQgKgogbmV3UHlTU0xTb2NrZXQoUHlTU0xDb250ZXh0ICpzc2xjdHgsIFB5U29ja2V0U29ja09iamVjdCAqc29jaywKICAgICAgICAgICAgICAgIGVudW0gcHlfc3NsX3NlcnZlcl9vcl9jbGllbnQgc29ja2V0X3R5cGUsCi0gICAgICAgICAgICAgICBjaGFyICpzZXJ2ZXJfaG9zdG5hbWUpCisgICAgICAgICAgICAgICBjaGFyICpzZXJ2ZXJfaG9zdG5hbWUsCisgICAgICAgICAgICAgICBQeVNTTE1lbW9yeUJJTyAqaW5iaW8sIFB5U1NMTWVtb3J5QklPICpvdXRiaW8pCiB7CiAgICAgUHlTU0xTb2NrZXQgKnNlbGY7CiAgICAgU1NMX0NUWCAqY3R4ID0gc3NsY3R4LT5jdHg7CisgICAgUHlPYmplY3QgKmhvc3RuYW1lOwogICAgIGxvbmcgbW9kZTsKIAogICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoUHlTU0xTb2NrZXQsICZQeVNTTFNvY2tldF9UeXBlKTsKQEAgLTQ5NSw2ICs0OTYsMTggQEAKICAgICBzZWxmLT5jdHggPSBzc2xjdHg7CiAgICAgc2VsZi0+c2h1dGRvd25fc2Vlbl96ZXJvID0gMDsKICAgICBzZWxmLT5oYW5kc2hha2VfZG9uZSA9IDA7CisgICAgc2VsZi0+b3duZXIgPSBOVUxMOworICAgIGlmIChzZXJ2ZXJfaG9zdG5hbWUgIT0gTlVMTCkgeworICAgICAgICBob3N0bmFtZSA9IFB5VW5pY29kZV9EZWNvZGUoc2VydmVyX2hvc3RuYW1lLCBzdHJsZW4oc2VydmVyX2hvc3RuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlkbmEiLCAic3RyaWN0Iik7CisgICAgICAgIGlmIChob3N0bmFtZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzZWxmLT5zZXJ2ZXJfaG9zdG5hbWUgPSBob3N0bmFtZTsKKyAgICB9IGVsc2UKKyAgICAgICAgc2VsZi0+c2VydmVyX2hvc3RuYW1lID0gTlVMTDsKKwogICAgIFB5X0lOQ1JFRihzc2xjdHgpOwogCiAgICAgLyogTWFrZSBzdXJlIHRoZSBTU0wgZXJyb3Igc3RhdGUgaXMgaW5pdGlhbGl6ZWQgKi8KQEAgLTUwNCw4ICs1MTcsMTcgQEAKICAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCiAgICAgc2VsZi0+c3NsID0gU1NMX25ldyhjdHgpOwogICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCi0gICAgU1NMX3NldF9hcHBfZGF0YShzZWxmLT5zc2wsc2VsZik7Ci0gICAgU1NMX3NldF9mZChzZWxmLT5zc2wsIFB5X1NBRkVfRE9XTkNBU1Qoc29jay0+c29ja19mZCwgU09DS0VUX1QsIGludCkpOworICAgIFNTTF9zZXRfYXBwX2RhdGEoc2VsZi0+c3NsLCBzZWxmKTsKKyAgICBpZiAoc29jaykgeworICAgICAgICBTU0xfc2V0X2ZkKHNlbGYtPnNzbCwgUHlfU0FGRV9ET1dOQ0FTVChzb2NrLT5zb2NrX2ZkLCBTT0NLRVRfVCwgaW50KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogQklPcyBhcmUgcmVmZXJlbmNlIGNvdW50ZWQgYW5kIFNTTF9zZXRfYmlvIGJvcnJvd3Mgb3VyIHJlZmVyZW5jZS4KKyAgICAgICAgICogVG8gcHJldmVudCBhIGRvdWJsZSBmcmVlIGluIG1lbW9yeV9iaW9fZGVhbGxvYygpIHdlIG5lZWQgdG8gdGFrZSBhbgorICAgICAgICAgKiBleHRyYSByZWZlcmVuY2UgaGVyZS4gKi8KKyAgICAgICAgQ1JZUFRPX2FkZCgmaW5iaW8tPmJpby0+cmVmZXJlbmNlcywgMSwgQ1JZUFRPX0xPQ0tfQklPKTsKKyAgICAgICAgQ1JZUFRPX2FkZCgmb3V0YmlvLT5iaW8tPnJlZmVyZW5jZXMsIDEsIENSWVBUT19MT0NLX0JJTyk7CisgICAgICAgIFNTTF9zZXRfYmlvKHNlbGYtPnNzbCwgaW5iaW8tPmJpbywgb3V0YmlvLT5iaW8pOworICAgIH0KICAgICBtb2RlID0gU1NMX01PREVfQUNDRVBUX01PVklOR19XUklURV9CVUZGRVI7CiAjaWZkZWYgU1NMX01PREVfQVVUT19SRVRSWQogICAgIG1vZGUgfD0gU1NMX01PREVfQVVUT19SRVRSWTsKQEAgLTUyMCw3ICs1NDIsNyBAQAogICAgIC8qIElmIHRoZSBzb2NrZXQgaXMgaW4gbm9uLWJsb2NraW5nIG1vZGUgb3IgdGltZW91dCBtb2RlLCBzZXQgdGhlIEJJTwogICAgICAqIHRvIG5vbi1ibG9ja2luZyBtb2RlIChibG9ja2luZyBpcyB0aGUgZGVmYXVsdCkKICAgICAgKi8KLSAgICBpZiAoc29jay0+c29ja190aW1lb3V0ID49IDAuMCkgeworICAgIGlmIChzb2NrICYmIHNvY2stPnNvY2tfdGltZW91dCA+PSAwKSB7CiAgICAgICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3JiaW8oc2VsZi0+c3NsKSwgMSk7CiAgICAgICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3diaW8oc2VsZi0+c3NsKSwgMSk7CiAgICAgfQpAQCAtNTMzLDM1ICs1NTUsNTIgQEAKICAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgc2VsZi0+c29ja2V0X3R5cGUgPSBzb2NrZXRfdHlwZTsKLSAgICBzZWxmLT5Tb2NrZXQgPSBQeVdlYWtyZWZfTmV3UmVmKChQeU9iamVjdCAqKSBzb2NrLCBOVUxMKTsKLSAgICBpZiAoc2VsZi0+U29ja2V0ID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc29jayAhPSBOVUxMKSB7CisgICAgICAgIHNlbGYtPlNvY2tldCA9IFB5V2Vha3JlZl9OZXdSZWYoKFB5T2JqZWN0ICopIHNvY2ssIE5VTEwpOworICAgICAgICBpZiAoc2VsZi0+U29ja2V0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoc2VsZi0+c2VydmVyX2hvc3RuYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBzZWxmOwogfQogCiAvKiBTU0wgb2JqZWN0IG1ldGhvZHMgKi8KIAotc3RhdGljIFB5T2JqZWN0ICpQeVNTTF9TU0xkb19oYW5kc2hha2UoUHlTU0xTb2NrZXQgKnNlbGYpCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xTb2NrZXQuZG9faGFuZHNoYWtlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfZG9faGFuZHNoYWtlX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmMwODk4YTg5MzY1NDhmNiBpbnB1dD1kMmQ3MzdkZTNkZjAxOGM4XSovCiB7CiAgICAgaW50IHJldDsKICAgICBpbnQgZXJyOwogICAgIGludCBzb2Nrc3RhdGUsIG5vbmJsb2NraW5nOwotICAgIFB5U29ja2V0U29ja09iamVjdCAqc29jawotICAgICAgPSAoUHlTb2NrZXRTb2NrT2JqZWN0ICopIFB5V2Vha3JlZl9HZXRPYmplY3Qoc2VsZi0+U29ja2V0KTsKKyAgICBQeVNvY2tldFNvY2tPYmplY3QgKnNvY2sgPSBHRVRfU09DS0VUKHNlbGYpOworICAgIF9QeVRpbWVfdCB0aW1lb3V0LCBkZWFkbGluZSA9IDA7CisgICAgaW50IGhhc190aW1lb3V0OwogCi0gICAgaWYgKCgoUHlPYmplY3QqKXNvY2spID09IFB5X05vbmUpIHsKLSAgICAgICAgX3NldFNTTEVycm9yKCJVbmRlcmx5aW5nIHNvY2tldCBjb25uZWN0aW9uIGdvbmUiLAotICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX0VSUk9SX05PX1NPQ0tFVCwgX19GSUxFX18sIF9fTElORV9fKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNvY2spIHsKKyAgICAgICAgaWYgKCgoUHlPYmplY3QqKXNvY2spID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIF9zZXRTU0xFcnJvcigiVW5kZXJseWluZyBzb2NrZXQgY29ubmVjdGlvbiBnb25lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfRVJST1JfTk9fU09DS0VULCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKHNvY2spOworCisgICAgICAgIC8qIGp1c3QgaW4gY2FzZSB0aGUgYmxvY2tpbmcgc3RhdGUgb2YgdGhlIHNvY2tldCBoYXMgYmVlbiBjaGFuZ2VkICovCisgICAgICAgIG5vbmJsb2NraW5nID0gKHNvY2stPnNvY2tfdGltZW91dCA+PSAwKTsKKyAgICAgICAgQklPX3NldF9uYmlvKFNTTF9nZXRfcmJpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7CisgICAgICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3diaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOwogICAgIH0KLSAgICBQeV9JTkNSRUYoc29jayk7CiAKLSAgICAvKiBqdXN0IGluIGNhc2UgdGhlIGJsb2NraW5nIHN0YXRlIG9mIHRoZSBzb2NrZXQgaGFzIGJlZW4gY2hhbmdlZCAqLwotICAgIG5vbmJsb2NraW5nID0gKHNvY2stPnNvY2tfdGltZW91dCA+PSAwLjApOwotICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3JiaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOwotICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3diaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOworICAgIHRpbWVvdXQgPSBHRVRfU09DS0VUX1RJTUVPVVQoc29jayk7CisgICAgaGFzX3RpbWVvdXQgPSAodGltZW91dCA+IDApOworICAgIGlmIChoYXNfdGltZW91dCkKKyAgICAgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyB0aW1lb3V0OwogCiAgICAgLyogQWN0dWFsbHkgbmVnb3RpYXRlIFNTTCBjb25uZWN0aW9uICovCiAgICAgLyogWFhYIElmIFNTTF9kb19oYW5kc2hha2UoKSByZXR1cm5zIDAsIGl0J3MgYWxzbyBhIGZhaWx1cmUuICovCkBAIC01NzAsMTUgKzYwOSwyMSBAQAogICAgICAgICByZXQgPSBTU0xfZG9faGFuZHNoYWtlKHNlbGYtPnNzbCk7CiAgICAgICAgIGVyciA9IFNTTF9nZXRfZXJyb3Ioc2VsZi0+c3NsLCByZXQpOwogICAgICAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUworCiAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgaWYgKGhhc190aW1lb3V0KQorICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworCiAgICAgICAgIGlmIChlcnIgPT0gU1NMX0VSUk9SX1dBTlRfUkVBRCkgewotICAgICAgICAgICAgc29ja3N0YXRlID0gY2hlY2tfc29ja2V0X2FuZF93YWl0X2Zvcl90aW1lb3V0KHNvY2ssIDApOworICAgICAgICAgICAgc29ja3N0YXRlID0gUHlTU0xfc2VsZWN0KHNvY2ssIDAsIHRpbWVvdXQpOwogICAgICAgICB9IGVsc2UgaWYgKGVyciA9PSBTU0xfRVJST1JfV0FOVF9XUklURSkgewotICAgICAgICAgICAgc29ja3N0YXRlID0gY2hlY2tfc29ja2V0X2FuZF93YWl0X2Zvcl90aW1lb3V0KHNvY2ssIDEpOworICAgICAgICAgICAgc29ja3N0YXRlID0gUHlTU0xfc2VsZWN0KHNvY2ssIDEsIHRpbWVvdXQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc29ja3N0YXRlID0gU09DS0VUX09QRVJBVElPTl9PSzsKICAgICAgICAgfQorCiAgICAgICAgIGlmIChzb2Nrc3RhdGUgPT0gU09DS0VUX0hBU19USU1FRF9PVVQpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeVNvY2tldE1vZHVsZS50aW1lb3V0X2Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVSUlNUUigiVGhlIGhhbmRzaGFrZSBvcGVyYXRpb24gdGltZWQgb3V0IikpOwpAQCAtNTk1LDcgKzY0MCw3IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKGVyciA9PSBTU0xfRVJST1JfV0FOVF9SRUFEIHx8IGVyciA9PSBTU0xfRVJST1JfV0FOVF9XUklURSk7Ci0gICAgUHlfREVDUkVGKHNvY2spOworICAgIFB5X1hERUNSRUYoc29jayk7CiAgICAgaWYgKHJldCA8IDEpCiAgICAgICAgIHJldHVybiBQeVNTTF9TZXRFcnJvcihzZWxmLCByZXQsIF9fRklMRV9fLCBfX0xJTkVfXyk7CiAKQEAgLTYxMCw3ICs2NTUsNyBAQAogICAgIHJldHVybiBQeV9Ob25lOwogCiBlcnJvcjoKLSAgICBQeV9ERUNSRUYoc29jayk7CisgICAgUHlfWERFQ1JFRihzb2NrKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtNzc5LDEyICs4MjQsNyBAQAogICAgIGNoYXIgYnVmWzIwNDhdOwogICAgIGNoYXIgKnZwdHI7CiAgICAgaW50IGxlbjsKLSAgICAvKiBJc3N1ZSAjMjk3MzogQVNOMV9pdGVtX2QyaSgpIEFQSSBjaGFuZ2VkIGluIE9wZW5TU0wgMC45LjZtICovCi0jaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA2MGRmTAogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnA7Ci0jZWxzZQotICAgIHVuc2lnbmVkIGNoYXIgKnA7Ci0jZW5kaWYKIAogICAgIGlmIChjZXJ0aWZpY2F0ZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gcGVlcl9hbHRfbmFtZXM7CkBAIC0xMjczLDI1ICsxMzEzLDI4IEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLVB5U1NMX3Rlc3RfZGVjb2RlX2NlcnRpZmljYXRlIChQeU9iamVjdCAqbW9kLCBQeU9iamVjdCAqYXJncykgeworLypbY2xpbmljIGlucHV0XQorX3NzbC5fdGVzdF9kZWNvZGVfY2VydAorICAgIHBhdGg6IG9iamVjdChjb252ZXJ0ZXI9IlB5VW5pY29kZV9GU0NvbnZlcnRlciIpCisgICAgLwogCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX190ZXN0X2RlY29kZV9jZXJ0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Njc5ZTAxZGIyODI4MDRlOSBpbnB1dD1jZGVhYWYwMmQ0MzQ2NjI4XSovCit7CiAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lOwogICAgIFg1MDkgKng9TlVMTDsKICAgICBCSU8gKmNlcnQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOnRlc3RfZGVjb2RlX2NlcnRpZmljYXRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmZmlsZW5hbWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmICgoY2VydD1CSU9fbmV3KEJJT19zX2ZpbGUoKSkpID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5U1NMRXJyb3JPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgbWFsbG9jIG1lbW9yeSB0byByZWFkIGZpbGUiKTsKICAgICAgICAgZ290byBmYWlsMDsKICAgICB9CiAKLSAgICBpZiAoQklPX3JlYWRfZmlsZW5hbWUoY2VydCwgUHlCeXRlc19Bc1N0cmluZyhmaWxlbmFtZSkpIDw9IDApIHsKKyAgICBpZiAoQklPX3JlYWRfZmlsZW5hbWUoY2VydCwgUHlCeXRlc19Bc1N0cmluZyhwYXRoKSkgPD0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlTU0xFcnJvck9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBvcGVuIGZpbGUiKTsKICAgICAgICAgZ290byBmYWlsMDsKQEAgLTEzMDgsMjAgKzEzNTEsMzMgQEAKICAgICBYNTA5X2ZyZWUoeCk7CiAKICAgZmFpbDA6Ci0gICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKKyAgICBQeV9ERUNSRUYocGF0aCk7CiAgICAgaWYgKGNlcnQgIT0gTlVMTCkgQklPX2ZyZWUoY2VydCk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAogCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xTb2NrZXQucGVlcl9jZXJ0aWZpY2F0ZQorICAgIGRlciBhcyBiaW5hcnlfbW9kZTogYm9vbCA9IEZhbHNlCisgICAgLworCitSZXR1cm5zIHRoZSBjZXJ0aWZpY2F0ZSBmb3IgdGhlIHBlZXIuCisKK0lmIG5vIGNlcnRpZmljYXRlIHdhcyBwcm92aWRlZCwgcmV0dXJucyBOb25lLiAgSWYgYSBjZXJ0aWZpY2F0ZSB3YXMKK3Byb3ZpZGVkLCBidXQgbm90IHZhbGlkYXRlZCwgcmV0dXJucyBhbiBlbXB0eSBkaWN0aW9uYXJ5LiAgT3RoZXJ3aXNlCityZXR1cm5zIGEgZGljdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwZWVyIGNlcnRpZmljYXRlLgorCitJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgaXMgVHJ1ZSwgcmV0dXJucyBhIERFUi1lbmNvZGVkIGNvcHkgb2YgdGhlCitwZWVyIGNlcnRpZmljYXRlLCBvciBOb25lIGlmIG5vIGNlcnRpZmljYXRlIHdhcyBwcm92aWRlZC4gIFRoaXMgd2lsbAorcmV0dXJuIHRoZSBjZXJ0aWZpY2F0ZSBldmVuIGlmIGl0IHdhc24ndCB2YWxpZGF0ZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVNTTF9wZWVyY2VydChQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfc3NsX19TU0xTb2NrZXRfcGVlcl9jZXJ0aWZpY2F0ZV9pbXBsKFB5U1NMU29ja2V0ICpzZWxmLCBpbnQgYmluYXJ5X21vZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjBkYzNlNGQxZDgxOGExZCBpbnB1dD04MjgxYmQxZDE5M2RiODQzXSovCiB7CiAgICAgaW50IHZlcmlmaWNhdGlvbjsKLSAgICBpbnQgYmluYXJ5X21vZGUgPSAwOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8cDpwZWVyX2NlcnRpZmljYXRlIiwgJmJpbmFyeV9tb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIXNlbGYtPmhhbmRzaGFrZV9kb25lKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLApAQCAtMTM0Myw2OCArMTM5OSwxMjMgQEAKICAgICB9CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9wZWVyY2VydF9kb2MsCi0icGVlcl9jZXJ0aWZpY2F0ZShbZGVyPUZhbHNlXSkgLT4gY2VydGlmaWNhdGVcblwKLVxuXAotUmV0dXJucyB0aGUgY2VydGlmaWNhdGUgZm9yIHRoZSBwZWVyLiAgSWYgbm8gY2VydGlmaWNhdGUgd2FzIHByb3ZpZGVkLFxuXAotcmV0dXJucyBOb25lLiAgSWYgYSBjZXJ0aWZpY2F0ZSB3YXMgcHJvdmlkZWQsIGJ1dCBub3QgdmFsaWRhdGVkLCByZXR1cm5zXG5cCi1hbiBlbXB0eSBkaWN0aW9uYXJ5LiAgT3RoZXJ3aXNlIHJldHVybnMgYSBkaWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb25cblwKLWFib3V0IHRoZSBwZWVyIGNlcnRpZmljYXRlLlxuXAotXG5cCi1JZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgaXMgVHJ1ZSwgcmV0dXJucyBhIERFUi1lbmNvZGVkIGNvcHkgb2YgdGhlXG5cCi1wZWVyIGNlcnRpZmljYXRlLCBvciBOb25lIGlmIG5vIGNlcnRpZmljYXRlIHdhcyBwcm92aWRlZC4gIFRoaXMgd2lsbFxuXAotcmV0dXJuIHRoZSBjZXJ0aWZpY2F0ZSBldmVuIGlmIGl0IHdhc24ndCB2YWxpZGF0ZWQuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqUHlTU0xfY2lwaGVyIChQeVNTTFNvY2tldCAqc2VsZikgewotCi0gICAgUHlPYmplY3QgKnJldHZhbCwgKnY7Ci0gICAgY29uc3QgU1NMX0NJUEhFUiAqY3VycmVudDsKLSAgICBjaGFyICpjaXBoZXJfbmFtZTsKLSAgICBjaGFyICpjaXBoZXJfcHJvdG9jb2w7Ci0KLSAgICBpZiAoc2VsZi0+c3NsID09IE5VTEwpCi0gICAgICAgIFB5X1JFVFVSTl9OT05FOwotICAgIGN1cnJlbnQgPSBTU0xfZ2V0X2N1cnJlbnRfY2lwaGVyKHNlbGYtPnNzbCk7Ci0gICAgaWYgKGN1cnJlbnQgPT0gTlVMTCkKLSAgICAgICAgUHlfUkVUVVJOX05PTkU7Ci0KLSAgICByZXR2YWwgPSBQeVR1cGxlX05ldygzKTsKK3N0YXRpYyBQeU9iamVjdCAqCitjaXBoZXJfdG9fdHVwbGUoY29uc3QgU1NMX0NJUEhFUiAqY2lwaGVyKQoreworICAgIGNvbnN0IGNoYXIgKmNpcGhlcl9uYW1lLCAqY2lwaGVyX3Byb3RvY29sOworICAgIFB5T2JqZWN0ICp2LCAqcmV0dmFsID0gUHlUdXBsZV9OZXcoMyk7CiAgICAgaWYgKHJldHZhbCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGNpcGhlcl9uYW1lID0gKGNoYXIgKikgU1NMX0NJUEhFUl9nZXRfbmFtZShjdXJyZW50KTsKKyAgICBjaXBoZXJfbmFtZSA9IFNTTF9DSVBIRVJfZ2V0X25hbWUoY2lwaGVyKTsKICAgICBpZiAoY2lwaGVyX25hbWUgPT0gTlVMTCkgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmV0dmFsLCAwLCBQeV9Ob25lKTsKICAgICB9IGVsc2UgewogICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoY2lwaGVyX25hbWUpOwogICAgICAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBmYWlsMDsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXR2YWwsIDAsIHYpOwogICAgIH0KLSAgICBjaXBoZXJfcHJvdG9jb2wgPSAoY2hhciAqKSBTU0xfQ0lQSEVSX2dldF92ZXJzaW9uKGN1cnJlbnQpOworCisgICAgY2lwaGVyX3Byb3RvY29sID0gU1NMX0NJUEhFUl9nZXRfdmVyc2lvbihjaXBoZXIpOwogICAgIGlmIChjaXBoZXJfcHJvdG9jb2wgPT0gTlVMTCkgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmV0dmFsLCAxLCBQeV9Ob25lKTsKICAgICB9IGVsc2UgewogICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoY2lwaGVyX3Byb3RvY29sKTsKICAgICAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZmFpbDA7CisgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmV0dmFsLCAxLCB2KTsKICAgICB9Ci0gICAgdiA9IFB5TG9uZ19Gcm9tTG9uZyhTU0xfQ0lQSEVSX2dldF9iaXRzKGN1cnJlbnQsIE5VTEwpKTsKKworICAgIHYgPSBQeUxvbmdfRnJvbUxvbmcoU1NMX0NJUEhFUl9nZXRfYml0cyhjaXBoZXIsIE5VTEwpKTsKICAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICBnb3RvIGZhaWwwOworICAgICAgICBnb3RvIGZhaWw7CiAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXR2YWwsIDIsIHYpOworCiAgICAgcmV0dXJuIHJldHZhbDsKIAotICBmYWlsMDoKKyAgZmFpbDoKICAgICBQeV9ERUNSRUYocmV0dmFsKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMU29ja2V0LnNoYXJlZF9jaXBoZXJzCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfc2hhcmVkX2NpcGhlcnNfaW1wbChQeVNTTFNvY2tldCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zZDE3NGVhZDJlNDJjNGZkIGlucHV0PTBiZmUxNDlkYThmZTYzMDZdKi8KK3sKKyAgICBTU0xfU0VTU0lPTiAqc2VzcyA9IFNTTF9nZXRfc2Vzc2lvbihzZWxmLT5zc2wpOworICAgIFNUQUNLX09GKFNTTF9DSVBIRVIpICpjaXBoZXJzOworICAgIGludCBpOworICAgIFB5T2JqZWN0ICpyZXM7CisKKyAgICBpZiAoIXNlc3MgfHwgIXNlc3MtPmNpcGhlcnMpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIGNpcGhlcnMgPSBzZXNzLT5jaXBoZXJzOworICAgIHJlcyA9IFB5TGlzdF9OZXcoc2tfU1NMX0NJUEhFUl9udW0oY2lwaGVycykpOworICAgIGlmICghcmVzKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2tfU1NMX0NJUEhFUl9udW0oY2lwaGVycyk7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqdHVwID0gY2lwaGVyX3RvX3R1cGxlKHNrX1NTTF9DSVBIRVJfdmFsdWUoY2lwaGVycywgaSkpOworICAgICAgICBpZiAoIXR1cCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeUxpc3RfU0VUX0lURU0ocmVzLCBpLCB0dXApOworICAgIH0KKyAgICByZXR1cm4gcmVzOworfQorCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xTb2NrZXQuY2lwaGVyCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfY2lwaGVyX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mzc2NDE3YzE2ZDBlNTgxNSBpbnB1dD01NDhmYjBlMjcyNDM3OTZkXSovCit7CisgICAgY29uc3QgU1NMX0NJUEhFUiAqY3VycmVudDsKKworICAgIGlmIChzZWxmLT5zc2wgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgY3VycmVudCA9IFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc2VsZi0+c3NsKTsKKyAgICBpZiAoY3VycmVudCA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm4gY2lwaGVyX3RvX3R1cGxlKGN1cnJlbnQpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xTb2NrZXQudmVyc2lvbgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3ZlcnNpb25faW1wbChQeVNTTFNvY2tldCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNzhhZWQzMzE5M2IyY2RiIGlucHV0PTkwMDE4NmE1MDM0MzZmZDZdKi8KK3sKKyAgICBjb25zdCBjaGFyICp2ZXJzaW9uOworCisgICAgaWYgKHNlbGYtPnNzbCA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB2ZXJzaW9uID0gU1NMX2dldF92ZXJzaW9uKHNlbGYtPnNzbCk7CisgICAgaWYgKCFzdHJjbXAodmVyc2lvbiwgInVua25vd24iKSkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKHZlcnNpb24pOworfQorCiAjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAotc3RhdGljIFB5T2JqZWN0ICpQeVNTTF9zZWxlY3RlZF9ucG5fcHJvdG9jb2woUHlTU0xTb2NrZXQgKnNlbGYpIHsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTFNvY2tldC5zZWxlY3RlZF9ucG5fcHJvdG9jb2wKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9zZWxlY3RlZF9ucG5fcHJvdG9jb2xfaW1wbChQeVNTTFNvY2tldCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iOTFkNDk0Y2QyMDdlY2Y2IGlucHV0PWMyOGZkZTEzOTIwNGI4MjZdKi8KK3sKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpvdXQ7CiAgICAgdW5zaWduZWQgaW50IG91dGxlbjsKIApAQCAtMTQxMywxMSArMTUyNCwzOCBAQAogCiAgICAgaWYgKG91dCA9PSBOVUxMKQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopIG91dCwgb3V0bGVuKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopb3V0LCBvdXRsZW4pOwogfQogI2VuZGlmCiAKLXN0YXRpYyBQeU9iamVjdCAqUHlTU0xfY29tcHJlc3Npb24oUHlTU0xTb2NrZXQgKnNlbGYpIHsKKyNpZmRlZiBIQVZFX0FMUE4KKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTFNvY2tldC5zZWxlY3RlZF9hbHBuX3Byb3RvY29sCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfc2VsZWN0ZWRfYWxwbl9wcm90b2NvbF9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVjMzM2ODhiMzAzZDI1MGYgaW5wdXQ9NDQyZGUzMGUzNWJjMjkxM10qLworeworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm91dDsKKyAgICB1bnNpZ25lZCBpbnQgb3V0bGVuOworCisgICAgU1NMX2dldDBfYWxwbl9zZWxlY3RlZChzZWxmLT5zc2wsICZvdXQsICZvdXRsZW4pOworCisgICAgaWYgKG91dCA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopb3V0LCBvdXRsZW4pOworfQorI2VuZGlmCisKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTFNvY2tldC5jb21wcmVzc2lvbgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X2NvbXByZXNzaW9uX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmQxNmNiMWJiNDY0NmFlNyBpbnB1dD01ZDA1OWQwYTJiYmMzMmM4XSovCit7CiAjaWZkZWYgT1BFTlNTTF9OT19DT01QCiAgICAgUHlfUkVUVVJOX05PTkU7CiAjZWxzZQpAQCAtMTQ1MSw4ICsxNTg5LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogI2Vsc2UKICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICAgICAgUHlfREVDUkVGKHNlbGYtPmN0eCk7Ci0gICAgICAgIHNlbGYtPmN0eCA9IChQeVNTTENvbnRleHQgKikgdmFsdWU7CisgICAgICAgIFB5X1NFVFJFRihzZWxmLT5jdHgsIChQeVNTTENvbnRleHQgKil2YWx1ZSk7CiAgICAgICAgIFNTTF9zZXRfU1NMX0NUWChzZWxmLT5zc2wsIHNlbGYtPmN0eC0+Y3R4KTsKICNlbmRpZgogICAgIH0gZWxzZSB7CkBAIC0xNDcyLDYgKzE2MDksNTMgQEAKIFNTTFNvY2tldCBiZWZvcmUgdGhlIGNyeXB0b2dyYXBoaWMgZXhjaGFuZ2UgaGFuZHNoYWtlIG1lc3NhZ2VzXG4iKTsKIAogCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xfZ2V0X3NlcnZlcl9zaWRlKFB5U1NMU29ja2V0ICpzZWxmLCB2b2lkICpjKQoreworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoc2VsZi0+c29ja2V0X3R5cGUgPT0gUFlfU1NMX1NFUlZFUik7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTF9nZXRfc2VydmVyX3NpZGVfZG9jLAorIldoZXRoZXIgdGhpcyBpcyBhIHNlcnZlci1zaWRlIHNvY2tldC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX2dldF9zZXJ2ZXJfaG9zdG5hbWUoUHlTU0xTb2NrZXQgKnNlbGYsIHZvaWQgKmMpCit7CisgICAgaWYgKHNlbGYtPnNlcnZlcl9ob3N0bmFtZSA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICBQeV9JTkNSRUYoc2VsZi0+c2VydmVyX2hvc3RuYW1lKTsKKyAgICByZXR1cm4gc2VsZi0+c2VydmVyX2hvc3RuYW1lOworfQorCitQeURvY19TVFJWQVIoUHlTU0xfZ2V0X3NlcnZlcl9ob3N0bmFtZV9kb2MsCisiVGhlIGN1cnJlbnRseSBzZXQgc2VydmVyIGhvc3RuYW1lIChmb3IgU05JKS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX2dldF9vd25lcihQeVNTTFNvY2tldCAqc2VsZiwgdm9pZCAqYykKK3sKKyAgICBQeU9iamVjdCAqb3duZXI7CisKKyAgICBpZiAoc2VsZi0+b3duZXIgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisKKyAgICBvd25lciA9IFB5V2Vha3JlZl9HZXRPYmplY3Qoc2VsZi0+b3duZXIpOworICAgIFB5X0lOQ1JFRihvd25lcik7CisgICAgcmV0dXJuIG93bmVyOworfQorCitzdGF0aWMgaW50CitQeVNTTF9zZXRfb3duZXIoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqYykKK3sKKyAgICBQeV9TRVRSRUYoc2VsZi0+b3duZXIsIFB5V2Vha3JlZl9OZXdSZWYodmFsdWUsIE5VTEwpKTsKKyAgICBpZiAoc2VsZi0+b3duZXIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiAwOworfQorCitQeURvY19TVFJWQVIoUHlTU0xfZ2V0X293bmVyX2RvYywKKyJUaGUgUHl0aG9uLWxldmVsIG93bmVyIG9mIHRoaXMgb2JqZWN0LlwKK1Bhc3NlZCBhcyBcInNlbGZcIiBpbiBzZXJ2ZXJuYW1lIGNhbGxiYWNrLiIpOworCiAKIHN0YXRpYyB2b2lkIFB5U1NMX2RlYWxsb2MoUHlTU0xTb2NrZXQgKnNlbGYpCiB7CkBAIC0xNDgxLDYgKzE2NjUsOCBAQAogICAgICAgICBTU0xfZnJlZShzZWxmLT5zc2wpOwogICAgIFB5X1hERUNSRUYoc2VsZi0+U29ja2V0KTsKICAgICBQeV9YREVDUkVGKHNlbGYtPmN0eCk7CisgICAgUHlfWERFQ1JFRihzZWxmLT5zZXJ2ZXJfaG9zdG5hbWUpOworICAgIFB5X1hERUNSRUYoc2VsZi0+b3duZXIpOwogICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKIH0KIApAQCAtMTQ5MCwxNyArMTY3NiwyNyBAQAogICovCiAKIHN0YXRpYyBpbnQKLWNoZWNrX3NvY2tldF9hbmRfd2FpdF9mb3JfdGltZW91dChQeVNvY2tldFNvY2tPYmplY3QgKnMsIGludCB3cml0aW5nKQorUHlTU0xfc2VsZWN0KFB5U29ja2V0U29ja09iamVjdCAqcywgaW50IHdyaXRpbmcsIF9QeVRpbWVfdCB0aW1lb3V0KQogeworICAgIGludCByYzsKKyNpZmRlZiBIQVZFX1BPTEwKKyAgICBzdHJ1Y3QgcG9sbGZkIHBvbGxmZDsKKyAgICBfUHlUaW1lX3QgbXM7CisjZWxzZQorICAgIGludCBuZmRzOwogICAgIGZkX3NldCBmZHM7CiAgICAgc3RydWN0IHRpbWV2YWwgdHY7Ci0gICAgaW50IHJjOworI2VuZGlmCiAKICAgICAvKiBOb3RoaW5nIHRvIGRvIHVubGVzcyB3ZSdyZSBpbiB0aW1lb3V0IG1vZGUgKG5vdCBub24tYmxvY2tpbmcpICovCi0gICAgaWYgKHMtPnNvY2tfdGltZW91dCA8IDAuMCkKLSAgICAgICAgcmV0dXJuIFNPQ0tFVF9JU19CTE9DS0lORzsKLSAgICBlbHNlIGlmIChzLT5zb2NrX3RpbWVvdXQgPT0gMC4wKQorICAgIGlmICgocyA9PSBOVUxMKSB8fCAodGltZW91dCA9PSAwKSkKICAgICAgICAgcmV0dXJuIFNPQ0tFVF9JU19OT05CTE9DS0lORzsKKyAgICBlbHNlIGlmICh0aW1lb3V0IDwgMCkgeworICAgICAgICBpZiAocy0+c29ja190aW1lb3V0ID4gMCkKKyAgICAgICAgICAgIHJldHVybiBTT0NLRVRfSEFTX1RJTUVEX09VVDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIFNPQ0tFVF9JU19CTE9DS0lORzsKKyAgICB9CiAKICAgICAvKiBHdWFyZCBhZ2FpbnN0IGNsb3NlZCBzb2NrZXQgKi8KICAgICBpZiAocy0+c29ja19mZCA8IDApCkBAIC0xNTA5LDg1ICsxNzA1LDkxIEBACiAgICAgLyogUHJlZmVyIHBvbGwsIGlmIGF2YWlsYWJsZSwgc2luY2UgeW91IGNhbiBwb2xsKCkgYW55IGZkCiAgICAgICogd2hpY2ggY2FuJ3QgYmUgZG9uZSB3aXRoIHNlbGVjdCgpLiAqLwogI2lmZGVmIEhBVkVfUE9MTAotICAgIHsKLSAgICAgICAgc3RydWN0IHBvbGxmZCBwb2xsZmQ7Ci0gICAgICAgIGludCB0aW1lb3V0OworICAgIHBvbGxmZC5mZCA9IHMtPnNvY2tfZmQ7CisgICAgcG9sbGZkLmV2ZW50cyA9IHdyaXRpbmcgPyBQT0xMT1VUIDogUE9MTElOOwogCi0gICAgICAgIHBvbGxmZC5mZCA9IHMtPnNvY2tfZmQ7Ci0gICAgICAgIHBvbGxmZC5ldmVudHMgPSB3cml0aW5nID8gUE9MTE9VVCA6IFBPTExJTjsKKyAgICAvKiB0aW1lb3V0IGlzIGluIHNlY29uZHMsIHBvbGwoKSB1c2VzIG1pbGxpc2Vjb25kcyAqLworICAgIG1zID0gKGludClfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKHRpbWVvdXQsIF9QeVRpbWVfUk9VTkRfQ0VJTElORyk7CisgICAgYXNzZXJ0KG1zIDw9IElOVF9NQVgpOwogCi0gICAgICAgIC8qIHMtPnNvY2tfdGltZW91dCBpcyBpbiBzZWNvbmRzLCB0aW1lb3V0IGluIG1zICovCi0gICAgICAgIHRpbWVvdXQgPSAoaW50KShzLT5zb2NrX3RpbWVvdXQgKiAxMDAwICsgMC41KTsKLSAgICAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICByYyA9IHBvbGwoJnBvbGxmZCwgMSwgdGltZW91dCk7Ci0gICAgICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgZ290byBub3JtYWxfcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCisgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJjID0gcG9sbCgmcG9sbGZkLCAxLCAoaW50KW1zKTsKKyAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUworI2Vsc2UKICAgICAvKiBHdWFyZCBhZ2FpbnN0IHNvY2tldCB0b28gbGFyZ2UgZm9yIHNlbGVjdCovCiAgICAgaWYgKCFfUHlJc1NlbGVjdGFibGVfZmQocy0+c29ja19mZCkpCiAgICAgICAgIHJldHVybiBTT0NLRVRfVE9PX0xBUkdFX0ZPUl9TRUxFQ1Q7CiAKLSAgICAvKiBDb25zdHJ1Y3QgdGhlIGFyZ3VtZW50cyB0byBzZWxlY3QgKi8KLSAgICB0di50dl9zZWMgPSAoaW50KXMtPnNvY2tfdGltZW91dDsKLSAgICB0di50dl91c2VjID0gKGludCkoKHMtPnNvY2tfdGltZW91dCAtIHR2LnR2X3NlYykgKiAxZTYpOworICAgIF9QeVRpbWVfQXNUaW1ldmFsX25vcmFpc2UodGltZW91dCwgJnR2LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworCiAgICAgRkRfWkVSTygmZmRzKTsKICAgICBGRF9TRVQocy0+c29ja19mZCwgJmZkcyk7CiAKLSAgICAvKiBTZWUgaWYgdGhlIHNvY2tldCBpcyByZWFkeSAqLworICAgIC8qIFdhaXQgdW50aWwgdGhlIHNvY2tldCBiZWNvbWVzIHJlYWR5ICovCiAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIG5mZHMgPSBQeV9TQUZFX0RPV05DQVNUKHMtPnNvY2tfZmQrMSwgU09DS0VUX1QsIGludCk7CiAgICAgaWYgKHdyaXRpbmcpCi0gICAgICAgIHJjID0gc2VsZWN0KFB5X1NBRkVfRE9XTkNBU1Qocy0+c29ja19mZCsxLCBTT0NLRVRfVCwgaW50KSwKLSAgICAgICAgICAgICAgICAgICAgTlVMTCwgJmZkcywgTlVMTCwgJnR2KTsKKyAgICAgICAgcmMgPSBzZWxlY3QobmZkcywgTlVMTCwgJmZkcywgTlVMTCwgJnR2KTsKICAgICBlbHNlCi0gICAgICAgIHJjID0gc2VsZWN0KFB5X1NBRkVfRE9XTkNBU1Qocy0+c29ja19mZCsxLCBTT0NLRVRfVCwgaW50KSwKLSAgICAgICAgICAgICAgICAgICAgJmZkcywgTlVMTCwgTlVMTCwgJnR2KTsKKyAgICAgICAgcmMgPSBzZWxlY3QobmZkcywgJmZkcywgTlVMTCwgTlVMTCwgJnR2KTsKICAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUwotCi0jaWZkZWYgSEFWRV9QT0xMCi1ub3JtYWxfcmV0dXJuOgogI2VuZGlmCisKICAgICAvKiBSZXR1cm4gU09DS0VUX1RJTUVEX09VVCBvbiB0aW1lb3V0LCBTT0NLRVRfT1BFUkFUSU9OX09LIG90aGVyd2lzZQogICAgICAgICh3aGVuIHdlIGFyZSBhYmxlIHRvIHdyaXRlIG9yIHdoZW4gdGhlcmUncyBzb21ldGhpbmcgdG8gcmVhZCkgKi8KICAgICByZXR1cm4gcmMgPT0gMCA/IFNPQ0tFVF9IQVNfVElNRURfT1VUIDogU09DS0VUX09QRVJBVElPTl9PSzsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICpQeVNTTF9TU0x3cml0ZShQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xTb2NrZXQud3JpdGUKKyAgICBiOiBQeV9idWZmZXIKKyAgICAvCisKK1dyaXRlcyB0aGUgYnl0ZXMtbGlrZSBvYmplY3QgYiBpbnRvIHRoZSBTU0wgb2JqZWN0LgorCitSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF93cml0ZV9pbXBsKFB5U1NMU29ja2V0ICpzZWxmLCBQeV9idWZmZXIgKmIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWE3YTZiZTU1MjczNThkOCBpbnB1dD03NzI2MmQ5OTRmZTUxMDBhXSovCiB7Ci0gICAgUHlfYnVmZmVyIGJ1ZjsKICAgICBpbnQgbGVuOwogICAgIGludCBzb2Nrc3RhdGU7CiAgICAgaW50IGVycjsKICAgICBpbnQgbm9uYmxvY2tpbmc7Ci0gICAgUHlTb2NrZXRTb2NrT2JqZWN0ICpzb2NrCi0gICAgICA9IChQeVNvY2tldFNvY2tPYmplY3QgKikgUHlXZWFrcmVmX0dldE9iamVjdChzZWxmLT5Tb2NrZXQpOworICAgIFB5U29ja2V0U29ja09iamVjdCAqc29jayA9IEdFVF9TT0NLRVQoc2VsZik7CisgICAgX1B5VGltZV90IHRpbWVvdXQsIGRlYWRsaW5lID0gMDsKKyAgICBpbnQgaGFzX3RpbWVvdXQ7CiAKLSAgICBpZiAoKChQeU9iamVjdCopc29jaykgPT0gUHlfTm9uZSkgewotICAgICAgICBfc2V0U1NMRXJyb3IoIlVuZGVybHlpbmcgc29ja2V0IGNvbm5lY3Rpb24gZ29uZSIsCi0gICAgICAgICAgICAgICAgICAgICBQWV9TU0xfRVJST1JfTk9fU09DS0VULCBfX0ZJTEVfXywgX19MSU5FX18pOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfSU5DUkVGKHNvY2spOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kjp3cml0ZSIsICZidWYpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzb2NrKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNvY2sgIT0gTlVMTCkgeworICAgICAgICBpZiAoKChQeU9iamVjdCopc29jaykgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgX3NldFNTTEVycm9yKCJVbmRlcmx5aW5nIHNvY2tldCBjb25uZWN0aW9uIGdvbmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9FUlJPUl9OT19TT0NLRVQsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeV9JTkNSRUYoc29jayk7CiAgICAgfQogCi0gICAgaWYgKGJ1Zi5sZW4gPiBJTlRfTUFYKSB7CisgICAgaWYgKGItPmxlbiA+IElOVF9NQVgpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIGxvbmdlciB0aGFuICVkIGJ5dGVzIiwgSU5UX01BWCk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCi0gICAgLyoganVzdCBpbiBjYXNlIHRoZSBibG9ja2luZyBzdGF0ZSBvZiB0aGUgc29ja2V0IGhhcyBiZWVuIGNoYW5nZWQgKi8KLSAgICBub25ibG9ja2luZyA9IChzb2NrLT5zb2NrX3RpbWVvdXQgPj0gMC4wKTsKLSAgICBCSU9fc2V0X25iaW8oU1NMX2dldF9yYmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKLSAgICBCSU9fc2V0X25iaW8oU1NMX2dldF93YmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKKyAgICBpZiAoc29jayAhPSBOVUxMKSB7CisgICAgICAgIC8qIGp1c3QgaW4gY2FzZSB0aGUgYmxvY2tpbmcgc3RhdGUgb2YgdGhlIHNvY2tldCBoYXMgYmVlbiBjaGFuZ2VkICovCisgICAgICAgIG5vbmJsb2NraW5nID0gKHNvY2stPnNvY2tfdGltZW91dCA+PSAwKTsKKyAgICAgICAgQklPX3NldF9uYmlvKFNTTF9nZXRfcmJpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7CisgICAgICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3diaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOworICAgIH0KIAotICAgIHNvY2tzdGF0ZSA9IGNoZWNrX3NvY2tldF9hbmRfd2FpdF9mb3JfdGltZW91dChzb2NrLCAxKTsKKyAgICB0aW1lb3V0ID0gR0VUX1NPQ0tFVF9USU1FT1VUKHNvY2spOworICAgIGhhc190aW1lb3V0ID0gKHRpbWVvdXQgPiAwKTsKKyAgICBpZiAoaGFzX3RpbWVvdXQpCisgICAgICAgIGRlYWRsaW5lID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICsgdGltZW91dDsKKworICAgIHNvY2tzdGF0ZSA9IFB5U1NMX3NlbGVjdChzb2NrLCAxLCB0aW1lb3V0KTsKICAgICBpZiAoc29ja3N0YXRlID09IFNPQ0tFVF9IQVNfVElNRURfT1VUKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeVNvY2tldE1vZHVsZS50aW1lb3V0X2Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSB3cml0ZSBvcGVyYXRpb24gdGltZWQgb3V0Iik7CkBAIC0xNjAxLDIxICsxODAzLDI3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiVW5kZXJseWluZyBzb2NrZXQgdG9vIGxhcmdlIGZvciBzZWxlY3QoKS4iKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CisKICAgICBkbyB7CiAgICAgICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgbGVuID0gU1NMX3dyaXRlKHNlbGYtPnNzbCwgYnVmLmJ1ZiwgKGludClidWYubGVuKTsKKyAgICAgICAgbGVuID0gU1NMX3dyaXRlKHNlbGYtPnNzbCwgYi0+YnVmLCAoaW50KWItPmxlbik7CiAgICAgICAgIGVyciA9IFNTTF9nZXRfZXJyb3Ioc2VsZi0+c3NsLCBsZW4pOwogICAgICAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKKworICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9CisKKyAgICAgICAgaWYgKGhhc190aW1lb3V0KQorICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworCiAgICAgICAgIGlmIChlcnIgPT0gU1NMX0VSUk9SX1dBTlRfUkVBRCkgewotICAgICAgICAgICAgc29ja3N0YXRlID0gY2hlY2tfc29ja2V0X2FuZF93YWl0X2Zvcl90aW1lb3V0KHNvY2ssIDApOworICAgICAgICAgICAgc29ja3N0YXRlID0gUHlTU0xfc2VsZWN0KHNvY2ssIDAsIHRpbWVvdXQpOwogICAgICAgICB9IGVsc2UgaWYgKGVyciA9PSBTU0xfRVJST1JfV0FOVF9XUklURSkgewotICAgICAgICAgICAgc29ja3N0YXRlID0gY2hlY2tfc29ja2V0X2FuZF93YWl0X2Zvcl90aW1lb3V0KHNvY2ssIDEpOworICAgICAgICAgICAgc29ja3N0YXRlID0gUHlTU0xfc2VsZWN0KHNvY2ssIDEsIHRpbWVvdXQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc29ja3N0YXRlID0gU09DS0VUX09QRVJBVElPTl9PSzsKICAgICAgICAgfQorCiAgICAgICAgIGlmIChzb2Nrc3RhdGUgPT0gU09DS0VUX0hBU19USU1FRF9PVVQpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeVNvY2tldE1vZHVsZS50aW1lb3V0X2Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgd3JpdGUgb3BlcmF0aW9uIHRpbWVkIG91dCIpOwpAQCAtMTYyOSwyNiArMTgzNywyNiBAQAogICAgICAgICB9CiAgICAgfSB3aGlsZSAoZXJyID09IFNTTF9FUlJPUl9XQU5UX1JFQUQgfHwgZXJyID09IFNTTF9FUlJPUl9XQU5UX1dSSVRFKTsKIAotICAgIFB5X0RFQ1JFRihzb2NrKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIFB5X1hERUNSRUYoc29jayk7CiAgICAgaWYgKGxlbiA+IDApCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcobGVuKTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBQeVNTTF9TZXRFcnJvcihzZWxmLCBsZW4sIF9fRklMRV9fLCBfX0xJTkVfXyk7CiAKIGVycm9yOgotICAgIFB5X0RFQ1JFRihzb2NrKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIFB5X1hERUNSRUYoc29jayk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9TU0x3cml0ZV9kb2MsCi0id3JpdGUocykgLT4gbGVuXG5cCi1cblwKLVdyaXRlcyB0aGUgc3RyaW5nIHMgaW50byB0aGUgU1NMIG9iamVjdC4gIFJldHVybnMgdGhlIG51bWJlclxuXAotb2YgYnl0ZXMgd3JpdHRlbi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTFNvY2tldC5wZW5kaW5nCiAKLXN0YXRpYyBQeU9iamVjdCAqUHlTU0xfU1NMcGVuZGluZyhQeVNTTFNvY2tldCAqc2VsZikKK1JldHVybnMgdGhlIG51bWJlciBvZiBhbHJlYWR5IGRlY3J5cHRlZCBieXRlcyBhdmFpbGFibGUgZm9yIHJlYWQsIHBlbmRpbmcgb24gdGhlIGNvbm5lY3Rpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfcGVuZGluZ19pbXBsKFB5U1NMU29ja2V0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk4M2Q5ZmVjZGMzMDhhODMgaW5wdXQ9MmI3NzQ4N2Q2ZGZkNTk3Zl0qLwogewogICAgIGludCBjb3VudCA9IDA7CiAKQEAgLTE2NjEsNDkgKzE4NjksNTIgQEAKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhjb3VudCk7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9TU0xwZW5kaW5nX2RvYywKLSJwZW5kaW5nKCkgLT4gY291bnRcblwKLVxuXAotUmV0dXJucyB0aGUgbnVtYmVyIG9mIGFscmVhZHkgZGVjcnlwdGVkIGJ5dGVzIGF2YWlsYWJsZSBmb3IgcmVhZCxcblwKLXBlbmRpbmcgb24gdGhlIGNvbm5lY3Rpb24uXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTFNvY2tldC5yZWFkCisgICAgc2l6ZSBhcyBsZW46IGludAorICAgIFsKKyAgICBidWZmZXI6IFB5X2J1ZmZlcihhY2NlcHQ9e3J3YnVmZmVyfSkKKyAgICBdCisgICAgLwogCi1zdGF0aWMgUHlPYmplY3QgKlB5U1NMX1NTTHJlYWQoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorUmVhZCB1cCB0byBzaXplIGJ5dGVzIGZyb20gdGhlIFNTTCBzb2NrZXQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfcmVhZF9pbXBsKFB5U1NMU29ja2V0ICpzZWxmLCBpbnQgbGVuLCBpbnQgZ3JvdXBfcmlnaHRfMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpidWZmZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDAwOTc3NzZjZWMyYTBhZiBpbnB1dD1mZjE1N2ViOTE4ZDA5MDViXSovCiB7CiAgICAgUHlPYmplY3QgKmRlc3QgPSBOVUxMOwotICAgIFB5X2J1ZmZlciBidWY7CiAgICAgY2hhciAqbWVtOwotICAgIGludCBsZW4sIGNvdW50OwotICAgIGludCBidWZfcGFzc2VkID0gMDsKKyAgICBpbnQgY291bnQ7CiAgICAgaW50IHNvY2tzdGF0ZTsKICAgICBpbnQgZXJyOwogICAgIGludCBub25ibG9ja2luZzsKLSAgICBQeVNvY2tldFNvY2tPYmplY3QgKnNvY2sKLSAgICAgID0gKFB5U29ja2V0U29ja09iamVjdCAqKSBQeVdlYWtyZWZfR2V0T2JqZWN0KHNlbGYtPlNvY2tldCk7CisgICAgUHlTb2NrZXRTb2NrT2JqZWN0ICpzb2NrID0gR0VUX1NPQ0tFVChzZWxmKTsKKyAgICBfUHlUaW1lX3QgdGltZW91dCwgZGVhZGxpbmUgPSAwOworICAgIGludCBoYXNfdGltZW91dDsKIAotICAgIGlmICgoKFB5T2JqZWN0Kilzb2NrKSA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIF9zZXRTU0xFcnJvcigiVW5kZXJseWluZyBzb2NrZXQgY29ubmVjdGlvbiBnb25lIiwKLSAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9FUlJPUl9OT19TT0NLRVQsIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzb2NrICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKCgoUHlPYmplY3QqKXNvY2spID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIF9zZXRTU0xFcnJvcigiVW5kZXJseWluZyBzb2NrZXQgY29ubmVjdGlvbiBnb25lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfRVJST1JfTk9fU09DS0VULCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKHNvY2spOwogICAgIH0KLSAgICBQeV9JTkNSRUYoc29jayk7CiAKLSAgICBidWYub2JqID0gTlVMTDsKLSAgICBidWYuYnVmID0gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml8dyo6cmVhZCIsICZsZW4sICZidWYpKQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgaWYgKChidWYuYnVmID09IE5VTEwpICYmIChidWYub2JqID09IE5VTEwpKSB7CisgICAgaWYgKCFncm91cF9yaWdodF8xKSB7CiAgICAgICAgIGRlc3QgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGxlbik7CiAgICAgICAgIGlmIChkZXN0ID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBtZW0gPSBQeUJ5dGVzX0FTX1NUUklORyhkZXN0KTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGJ1Zl9wYXNzZWQgPSAxOwotICAgICAgICBtZW0gPSBidWYuYnVmOwotICAgICAgICBpZiAobGVuIDw9IDAgfHwgbGVuID4gYnVmLmxlbikgewotICAgICAgICAgICAgbGVuID0gKGludCkgYnVmLmxlbjsKLSAgICAgICAgICAgIGlmIChidWYubGVuICE9IGxlbikgeworICAgICAgICBtZW0gPSBidWZmZXItPmJ1ZjsKKyAgICAgICAgaWYgKGxlbiA8PSAwIHx8IGxlbiA+IGJ1ZmZlci0+bGVuKSB7CisgICAgICAgICAgICBsZW4gPSAoaW50KSBidWZmZXItPmxlbjsKKyAgICAgICAgICAgIGlmIChidWZmZXItPmxlbiAhPSBsZW4pIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1heGltdW0gbGVuZ3RoIGNhbid0IGZpdCBpbiBhIEMgJ2ludCciKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMTcxMSwzMSArMTkyMiw0MyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgLyoganVzdCBpbiBjYXNlIHRoZSBibG9ja2luZyBzdGF0ZSBvZiB0aGUgc29ja2V0IGhhcyBiZWVuIGNoYW5nZWQgKi8KLSAgICBub25ibG9ja2luZyA9IChzb2NrLT5zb2NrX3RpbWVvdXQgPj0gMC4wKTsKLSAgICBCSU9fc2V0X25iaW8oU1NMX2dldF9yYmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKLSAgICBCSU9fc2V0X25iaW8oU1NMX2dldF93YmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKKyAgICBpZiAoc29jayAhPSBOVUxMKSB7CisgICAgICAgIC8qIGp1c3QgaW4gY2FzZSB0aGUgYmxvY2tpbmcgc3RhdGUgb2YgdGhlIHNvY2tldCBoYXMgYmVlbiBjaGFuZ2VkICovCisgICAgICAgIG5vbmJsb2NraW5nID0gKHNvY2stPnNvY2tfdGltZW91dCA+PSAwKTsKKyAgICAgICAgQklPX3NldF9uYmlvKFNTTF9nZXRfcmJpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7CisgICAgICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3diaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOworICAgIH0KKworICAgIHRpbWVvdXQgPSBHRVRfU09DS0VUX1RJTUVPVVQoc29jayk7CisgICAgaGFzX3RpbWVvdXQgPSAodGltZW91dCA+IDApOworICAgIGlmIChoYXNfdGltZW91dCkKKyAgICAgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyB0aW1lb3V0OwogCiAgICAgZG8gewogICAgICAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIGNvdW50ID0gU1NMX3JlYWQoc2VsZi0+c3NsLCBtZW0sIGxlbik7CiAgICAgICAgIGVyciA9IFNTTF9nZXRfZXJyb3Ioc2VsZi0+c3NsLCBjb3VudCk7CiAgICAgICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCisKICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQogICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICBpZiAoaGFzX3RpbWVvdXQpCisgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CisKICAgICAgICAgaWYgKGVyciA9PSBTU0xfRVJST1JfV0FOVF9SRUFEKSB7Ci0gICAgICAgICAgICBzb2Nrc3RhdGUgPSBjaGVja19zb2NrZXRfYW5kX3dhaXRfZm9yX3RpbWVvdXQoc29jaywgMCk7CisgICAgICAgICAgICBzb2Nrc3RhdGUgPSBQeVNTTF9zZWxlY3Qoc29jaywgMCwgdGltZW91dCk7CiAgICAgICAgIH0gZWxzZSBpZiAoZXJyID09IFNTTF9FUlJPUl9XQU5UX1dSSVRFKSB7Ci0gICAgICAgICAgICBzb2Nrc3RhdGUgPSBjaGVja19zb2NrZXRfYW5kX3dhaXRfZm9yX3RpbWVvdXQoc29jaywgMSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoKGVyciA9PSBTU0xfRVJST1JfWkVST19SRVRVUk4pICYmCi0gICAgICAgICAgICAgICAgICAgKFNTTF9nZXRfc2h1dGRvd24oc2VsZi0+c3NsKSA9PQotICAgICAgICAgICAgICAgICAgICBTU0xfUkVDRUlWRURfU0hVVERPV04pKQorICAgICAgICAgICAgc29ja3N0YXRlID0gUHlTU0xfc2VsZWN0KHNvY2ssIDEsIHRpbWVvdXQpOworICAgICAgICB9IGVsc2UgaWYgKGVyciA9PSBTU0xfRVJST1JfWkVST19SRVRVUk4gJiYKKyAgICAgICAgICAgICAgICAgICBTU0xfZ2V0X3NodXRkb3duKHNlbGYtPnNzbCkgPT0gU1NMX1JFQ0VJVkVEX1NIVVRET1dOKQogICAgICAgICB7CiAgICAgICAgICAgICBjb3VudCA9IDA7CiAgICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzb2Nrc3RhdGUgPSBTT0NLRVRfT1BFUkFUSU9OX09LOwogICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNvY2tzdGF0ZSA9IFNPQ0tFVF9PUEVSQVRJT05fT0s7CisKICAgICAgICAgaWYgKHNvY2tzdGF0ZSA9PSBTT0NLRVRfSEFTX1RJTUVEX09VVCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5U29ja2V0TW9kdWxlLnRpbWVvdXRfZXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSByZWFkIG9wZXJhdGlvbiB0aW1lZCBvdXQiKTsKQEAgLTE3NDQsNTUgKzE5NjcsNjYgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAoZXJyID09IFNTTF9FUlJPUl9XQU5UX1JFQUQgfHwgZXJyID09IFNTTF9FUlJPUl9XQU5UX1dSSVRFKTsKKwogICAgIGlmIChjb3VudCA8PSAwKSB7CiAgICAgICAgIFB5U1NMX1NldEVycm9yKHNlbGYsIGNvdW50LCBfX0ZJTEVfXywgX19MSU5FX18pOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAogZG9uZToKLSAgICBQeV9ERUNSRUYoc29jayk7Ci0gICAgaWYgKCFidWZfcGFzc2VkKSB7CisgICAgUHlfWERFQ1JFRihzb2NrKTsKKyAgICBpZiAoIWdyb3VwX3JpZ2h0XzEpIHsKICAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZkZXN0LCBjb3VudCk7CiAgICAgICAgIHJldHVybiBkZXN0OwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhjb3VudCk7CiAgICAgfQogCiBlcnJvcjoKLSAgICBQeV9ERUNSRUYoc29jayk7Ci0gICAgaWYgKCFidWZfcGFzc2VkKQorICAgIFB5X1hERUNSRUYoc29jayk7CisgICAgaWYgKCFncm91cF9yaWdodF8xKQogICAgICAgICBQeV9YREVDUkVGKGRlc3QpOwotICAgIGVsc2UKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX1NTTHJlYWRfZG9jLAotInJlYWQoW2xlbl0pIC0+IHN0cmluZ1xuXAotXG5cCi1SZWFkIHVwIHRvIGxlbiBieXRlcyBmcm9tIHRoZSBTU0wgc29ja2V0LiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMU29ja2V0LnNodXRkb3duCiAKLXN0YXRpYyBQeU9iamVjdCAqUHlTU0xfU1NMc2h1dGRvd24oUHlTU0xTb2NrZXQgKnNlbGYpCitEb2VzIHRoZSBTU0wgc2h1dGRvd24gaGFuZHNoYWtlIHdpdGggdGhlIHJlbW90ZSBlbmQuCisKK1JldHVybnMgdGhlIHVuZGVybHlpbmcgc29ja2V0IG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9zaHV0ZG93bl9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWNhMWFhN2VkOWQyNWNhNDIgaW5wdXQ9ZWRlMmNjMWEyZGRmMGVlNF0qLwogewogICAgIGludCBlcnIsIHNzbF9lcnIsIHNvY2tzdGF0ZSwgbm9uYmxvY2tpbmc7CiAgICAgaW50IHplcm9zID0gMDsKLSAgICBQeVNvY2tldFNvY2tPYmplY3QgKnNvY2sKLSAgICAgID0gKFB5U29ja2V0U29ja09iamVjdCAqKSBQeVdlYWtyZWZfR2V0T2JqZWN0KHNlbGYtPlNvY2tldCk7CisgICAgUHlTb2NrZXRTb2NrT2JqZWN0ICpzb2NrID0gR0VUX1NPQ0tFVChzZWxmKTsKKyAgICBfUHlUaW1lX3QgdGltZW91dCwgZGVhZGxpbmUgPSAwOworICAgIGludCBoYXNfdGltZW91dDsKIAotICAgIC8qIEd1YXJkIGFnYWluc3QgY2xvc2VkIHNvY2tldCAqLwotICAgIGlmICgoKChQeU9iamVjdCopc29jaykgPT0gUHlfTm9uZSkgfHwgKHNvY2stPnNvY2tfZmQgPCAwKSkgewotICAgICAgICBfc2V0U1NMRXJyb3IoIlVuZGVybHlpbmcgc29ja2V0IGNvbm5lY3Rpb24gZ29uZSIsCi0gICAgICAgICAgICAgICAgICAgICBQWV9TU0xfRVJST1JfTk9fU09DS0VULCBfX0ZJTEVfXywgX19MSU5FX18pOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc29jayAhPSBOVUxMKSB7CisgICAgICAgIC8qIEd1YXJkIGFnYWluc3QgY2xvc2VkIHNvY2tldCAqLworICAgICAgICBpZiAoKCgoUHlPYmplY3QqKXNvY2spID09IFB5X05vbmUpIHx8IChzb2NrLT5zb2NrX2ZkIDwgMCkpIHsKKyAgICAgICAgICAgIF9zZXRTU0xFcnJvcigiVW5kZXJseWluZyBzb2NrZXQgY29ubmVjdGlvbiBnb25lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfRVJST1JfTk9fU09DS0VULCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKHNvY2spOworCisgICAgICAgIC8qIEp1c3QgaW4gY2FzZSB0aGUgYmxvY2tpbmcgc3RhdGUgb2YgdGhlIHNvY2tldCBoYXMgYmVlbiBjaGFuZ2VkICovCisgICAgICAgIG5vbmJsb2NraW5nID0gKHNvY2stPnNvY2tfdGltZW91dCA+PSAwKTsKKyAgICAgICAgQklPX3NldF9uYmlvKFNTTF9nZXRfcmJpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7CisgICAgICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3diaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOwogICAgIH0KLSAgICBQeV9JTkNSRUYoc29jayk7CiAKLSAgICAvKiBKdXN0IGluIGNhc2UgdGhlIGJsb2NraW5nIHN0YXRlIG9mIHRoZSBzb2NrZXQgaGFzIGJlZW4gY2hhbmdlZCAqLwotICAgIG5vbmJsb2NraW5nID0gKHNvY2stPnNvY2tfdGltZW91dCA+PSAwLjApOwotICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3JiaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOwotICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3diaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOworICAgIHRpbWVvdXQgPSBHRVRfU09DS0VUX1RJTUVPVVQoc29jayk7CisgICAgaGFzX3RpbWVvdXQgPSAodGltZW91dCA+IDApOworICAgIGlmIChoYXNfdGltZW91dCkKKyAgICAgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyB0aW1lb3V0OwogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtMTgwOCw2ICsyMDQyLDcgQEAKICAgICAgICAgICAgIFNTTF9zZXRfcmVhZF9haGVhZChzZWxmLT5zc2wsIDApOwogICAgICAgICBlcnIgPSBTU0xfc2h1dGRvd24oc2VsZi0+c3NsKTsKICAgICAgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKKwogICAgICAgICAvKiBJZiBlcnIgPT0gMSwgYSBzZWN1cmUgc2h1dGRvd24gd2l0aCBTU0xfc2h1dGRvd24oKSBpcyBjb21wbGV0ZSAqLwogICAgICAgICBpZiAoZXJyID4gMCkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTgyMiwxNCArMjA1NywxOCBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoaGFzX3RpbWVvdXQpCisgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CisKICAgICAgICAgLyogUG9zc2libHkgcmV0cnkgc2h1dGRvd24gdW50aWwgdGltZW91dCBvciBmYWlsdXJlICovCiAgICAgICAgIHNzbF9lcnIgPSBTU0xfZ2V0X2Vycm9yKHNlbGYtPnNzbCwgZXJyKTsKICAgICAgICAgaWYgKHNzbF9lcnIgPT0gU1NMX0VSUk9SX1dBTlRfUkVBRCkKLSAgICAgICAgICAgIHNvY2tzdGF0ZSA9IGNoZWNrX3NvY2tldF9hbmRfd2FpdF9mb3JfdGltZW91dChzb2NrLCAwKTsKKyAgICAgICAgICAgIHNvY2tzdGF0ZSA9IFB5U1NMX3NlbGVjdChzb2NrLCAwLCB0aW1lb3V0KTsKICAgICAgICAgZWxzZSBpZiAoc3NsX2VyciA9PSBTU0xfRVJST1JfV0FOVF9XUklURSkKLSAgICAgICAgICAgIHNvY2tzdGF0ZSA9IGNoZWNrX3NvY2tldF9hbmRfd2FpdF9mb3JfdGltZW91dChzb2NrLCAxKTsKKyAgICAgICAgICAgIHNvY2tzdGF0ZSA9IFB5U1NMX3NlbGVjdChzb2NrLCAxLCB0aW1lb3V0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgaWYgKHNvY2tzdGF0ZSA9PSBTT0NLRVRfSEFTX1RJTUVEX09VVCkgewogICAgICAgICAgICAgaWYgKHNzbF9lcnIgPT0gU1NMX0VSUk9SX1dBTlRfUkVBRCkKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlTb2NrZXRNb2R1bGUudGltZW91dF9lcnJvciwKQEAgLTE4NTAsMjcgKzIwODksMzEgQEAKICAgICB9CiAKICAgICBpZiAoZXJyIDwgMCkgewotICAgICAgICBQeV9ERUNSRUYoc29jayk7CisgICAgICAgIFB5X1hERUNSRUYoc29jayk7CiAgICAgICAgIHJldHVybiBQeVNTTF9TZXRFcnJvcihzZWxmLCBlcnIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CiAgICAgfQotICAgIGVsc2UKKyAgICBpZiAoc29jaykKICAgICAgICAgLyogSXQncyBhbHJlYWR5IElOQ1JFRidlZCAqLwogICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopIHNvY2s7CisgICAgZWxzZQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIAogZXJyb3I6Ci0gICAgUHlfREVDUkVGKHNvY2spOworICAgIFB5X1hERUNSRUYoc29jayk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9TU0xzaHV0ZG93bl9kb2MsCi0ic2h1dGRvd24ocykgLT4gc29ja2V0XG5cCi1cblwKLURvZXMgdGhlIFNTTCBzaHV0ZG93biBoYW5kc2hha2Ugd2l0aCB0aGUgcmVtb3RlIGVuZCwgYW5kIHJldHVybnNcblwKLXRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xTb2NrZXQudGxzX3VuaXF1ZV9jYgogCi0jaWYgSEFWRV9PUEVOU1NMX0ZJTklTSEVECitSZXR1cm5zIHRoZSAndGxzLXVuaXF1ZScgY2hhbm5lbCBiaW5kaW5nIGRhdGEsIGFzIGRlZmluZWQgYnkgUkZDIDU5MjkuCisKK0lmIHRoZSBUTFMgaGFuZHNoYWtlIGlzIG5vdCB5ZXQgY29tcGxldGUsIE5vbmUgaXMgcmV0dXJuZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVNTTF90bHNfdW5pcXVlX2NiKFB5U1NMU29ja2V0ICpzZWxmKQorX3NzbF9fU1NMU29ja2V0X3Rsc191bmlxdWVfY2JfaW1wbChQeVNTTFNvY2tldCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mM2E4MzJkNjAzZjU4NmFmIGlucHV0PTQzOTUyNWM3YjNkOGQzNGRdKi8KIHsKICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKICAgICBjaGFyIGJ1ZltQeVNTTF9DQl9NQVhMRU5dOwpAQCAtMTg5NCw0MiArMjEzNywzMiBAQAogICAgIHJldHVybiByZXR2YWw7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF90bHNfdW5pcXVlX2NiX2RvYywKLSJ0bHNfdW5pcXVlX2NiKCkgLT4gYnl0ZXNcblwKLVxuXAotUmV0dXJucyB0aGUgJ3Rscy11bmlxdWUnIGNoYW5uZWwgYmluZGluZyBkYXRhLCBhcyBkZWZpbmVkIGJ5IFJGQyA1OTI5LlxuXAotXG5cCi1JZiB0aGUgVExTIGhhbmRzaGFrZSBpcyBub3QgeWV0IGNvbXBsZXRlLCBOb25lIGlzIHJldHVybmVkIik7Ci0KLSNlbmRpZiAvKiBIQVZFX09QRU5TU0xfRklOSVNIRUQgKi8KLQogc3RhdGljIFB5R2V0U2V0RGVmIHNzbF9nZXRzZXRsaXN0W10gPSB7CiAgICAgeyJjb250ZXh0IiwgKGdldHRlcikgUHlTU0xfZ2V0X2NvbnRleHQsCiAgICAgICAgICAgICAgICAgKHNldHRlcikgUHlTU0xfc2V0X2NvbnRleHQsIFB5U1NMX3NldF9jb250ZXh0X2RvY30sCisgICAgeyJzZXJ2ZXJfc2lkZSIsIChnZXR0ZXIpIFB5U1NMX2dldF9zZXJ2ZXJfc2lkZSwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgUHlTU0xfZ2V0X3NlcnZlcl9zaWRlX2RvY30sCisgICAgeyJzZXJ2ZXJfaG9zdG5hbWUiLCAoZ2V0dGVyKSBQeVNTTF9nZXRfc2VydmVyX2hvc3RuYW1lLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlTU0xfZ2V0X3NlcnZlcl9ob3N0bmFtZV9kb2N9LAorICAgIHsib3duZXIiLCAoZ2V0dGVyKSBQeVNTTF9nZXRfb3duZXIsIChzZXR0ZXIpIFB5U1NMX3NldF9vd25lciwKKyAgICAgICAgICAgICAgUHlTU0xfZ2V0X293bmVyX2RvY30sCiAgICAge05VTEx9LCAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCiBzdGF0aWMgUHlNZXRob2REZWYgUHlTU0xNZXRob2RzW10gPSB7Ci0gICAgeyJkb19oYW5kc2hha2UiLCAoUHlDRnVuY3Rpb24pUHlTU0xfU1NMZG9faGFuZHNoYWtlLCBNRVRIX05PQVJHU30sCi0gICAgeyJ3cml0ZSIsIChQeUNGdW5jdGlvbilQeVNTTF9TU0x3cml0ZSwgTUVUSF9WQVJBUkdTLAotICAgICBQeVNTTF9TU0x3cml0ZV9kb2N9LAotICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilQeVNTTF9TU0xyZWFkLCBNRVRIX1ZBUkFSR1MsCi0gICAgIFB5U1NMX1NTTHJlYWRfZG9jfSwKLSAgICB7InBlbmRpbmciLCAoUHlDRnVuY3Rpb24pUHlTU0xfU1NMcGVuZGluZywgTUVUSF9OT0FSR1MsCi0gICAgIFB5U1NMX1NTTHBlbmRpbmdfZG9jfSwKLSAgICB7InBlZXJfY2VydGlmaWNhdGUiLCAoUHlDRnVuY3Rpb24pUHlTU0xfcGVlcmNlcnQsIE1FVEhfVkFSQVJHUywKLSAgICAgUHlTU0xfcGVlcmNlcnRfZG9jfSwKLSAgICB7ImNpcGhlciIsIChQeUNGdW5jdGlvbilQeVNTTF9jaXBoZXIsIE1FVEhfTk9BUkdTfSwKLSNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECi0gICAgeyJzZWxlY3RlZF9ucG5fcHJvdG9jb2wiLCAoUHlDRnVuY3Rpb24pUHlTU0xfc2VsZWN0ZWRfbnBuX3Byb3RvY29sLCBNRVRIX05PQVJHU30sCi0jZW5kaWYKLSAgICB7ImNvbXByZXNzaW9uIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX2NvbXByZXNzaW9uLCBNRVRIX05PQVJHU30sCi0gICAgeyJzaHV0ZG93biIsIChQeUNGdW5jdGlvbilQeVNTTF9TU0xzaHV0ZG93biwgTUVUSF9OT0FSR1MsCi0gICAgIFB5U1NMX1NTTHNodXRkb3duX2RvY30sCi0jaWYgSEFWRV9PUEVOU1NMX0ZJTklTSEVECi0gICAgeyJ0bHNfdW5pcXVlX2NiIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX3Rsc191bmlxdWVfY2IsIE1FVEhfTk9BUkdTLAotICAgICBQeVNTTF90bHNfdW5pcXVlX2NiX2RvY30sCi0jZW5kaWYKKyAgICBfU1NMX19TU0xTT0NLRVRfRE9fSEFORFNIQUtFX01FVEhPRERFRgorICAgIF9TU0xfX1NTTFNPQ0tFVF9XUklURV9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xTT0NLRVRfUkVBRF9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xTT0NLRVRfUEVORElOR19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xTT0NLRVRfUEVFUl9DRVJUSUZJQ0FURV9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xTT0NLRVRfQ0lQSEVSX01FVEhPRERFRgorICAgIF9TU0xfX1NTTFNPQ0tFVF9TSEFSRURfQ0lQSEVSU19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xTT0NLRVRfVkVSU0lPTl9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xTT0NLRVRfU0VMRUNURURfTlBOX1BST1RPQ09MX01FVEhPRERFRgorICAgIF9TU0xfX1NTTFNPQ0tFVF9TRUxFQ1RFRF9BTFBOX1BST1RPQ09MX01FVEhPRERFRgorICAgIF9TU0xfX1NTTFNPQ0tFVF9DT01QUkVTU0lPTl9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xTT0NLRVRfU0hVVERPV05fTUVUSE9EREVGCisgICAgX1NTTF9fU1NMU09DS0VUX1RMU19VTklRVUVfQ0JfTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEx9CiB9OwogCkBAIC0xOTcyLDE5ICsyMjA1LDIxIEBACiAgKiBfU1NMQ29udGV4dCBvYmplY3RzCiAgKi8KIAorLypbY2xpbmljIGlucHV0XQorQGNsYXNzbWV0aG9kCitfc3NsLl9TU0xDb250ZXh0Ll9fbmV3X18KKyAgICBwcm90b2NvbCBhcyBwcm90b192ZXJzaW9uOiBpbnQKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1jb250ZXh0X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19zc2xfX1NTTENvbnRleHRfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIGludCBwcm90b192ZXJzaW9uKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJjZjBkN2EwNzQxYjZiZDEgaW5wdXQ9OGQ1OGE4MDViOTVmYzUzNF0qLwogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJwcm90b2NvbCIsIE5VTEx9OwogICAgIFB5U1NMQ29udGV4dCAqc2VsZjsKLSAgICBpbnQgcHJvdG9fdmVyc2lvbiA9IFBZX1NTTF9WRVJTSU9OX1NTTDIzOwogICAgIGxvbmcgb3B0aW9uczsKICAgICBTU0xfQ1RYICpjdHggPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoCi0gICAgICAgIGFyZ3MsIGt3ZHMsICJpOl9TU0xDb250ZXh0Iiwga3dsaXN0LAotICAgICAgICAmcHJvdG9fdmVyc2lvbikpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIHVuc2lnbmVkIGxvbmcgbGlidmVyOwogCiAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGlmIChwcm90b192ZXJzaW9uID09IFBZX1NTTF9WRVJTSU9OX1RMUzEpCkBAIC0yMDMwLDYgKzIyNjUsOSBAQAogI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKICAgICBzZWxmLT5ucG5fcHJvdG9jb2xzID0gTlVMTDsKICNlbmRpZgorI2lmZGVmIEhBVkVfQUxQTgorICAgIHNlbGYtPmFscG5fcHJvdG9jb2xzID0gTlVMTDsKKyNlbmRpZgogI2lmbmRlZiBPUEVOU1NMX05PX1RMU0VYVAogICAgIHNlbGYtPnNldF9ob3N0bmFtZSA9IE5VTEw7CiAjZW5kaWYKQEAgLTIwNDQsNiArMjI4MiwyMiBAQAogICAgICAgICBvcHRpb25zIHw9IFNTTF9PUF9OT19TU0x2MzsKICAgICBTU0xfQ1RYX3NldF9vcHRpb25zKHNlbGYtPmN0eCwgb3B0aW9ucyk7CiAKKyNpZiBkZWZpbmVkKFNTTF9NT0RFX1JFTEVBU0VfQlVGRkVSUykKKyAgICAvKiBTZXQgU1NMX01PREVfUkVMRUFTRV9CVUZGRVJTLiBUaGlzIHBvdGVudGlhbGx5IGdyZWF0bHkgcmVkdWNlcyBtZW1vcnkKKyAgICAgICB1c2FnZSBmb3Igbm8gY29zdCBhdCBhbGwuIEhvd2V2ZXIsIGRvbid0IGRvIHRoaXMgZm9yIE9wZW5TU0wgdmVyc2lvbnMKKyAgICAgICBiZXR3ZWVuIDEuMC4xIGFuZCAxLjAuMWggb3IgMS4wLjAgYW5kIDEuMC4wbSwgd2hpY2ggYXJlIGFmZmVjdGVkIGJ5IENWRQorICAgICAgIDIwMTQtMDE5OC4gSSBjYW4ndCBmaW5kIGV4YWN0bHkgd2hpY2ggYmV0YSBmaXhlZCB0aGlzIENWRSwgc28gYmUKKyAgICAgICBjb25zZXJ2YXRpdmUgYW5kIGFzc3VtZSBpdCB3YXNuJ3QgZml4ZWQgdW50aWwgcmVsZWFzZS4gV2UgZG8gdGhpcyBjaGVjaworICAgICAgIGF0IHJ1bnRpbWUgdG8gYXZvaWQgcHJvYmxlbXMgZnJvbSB0aGUgZHluYW1pYyBsaW5rZXIuCisgICAgICAgU2VlICMyNTY3MiBmb3IgbW9yZSBvbiB0aGlzLiAqLworICAgIGxpYnZlciA9IFNTTGVheSgpOworICAgIGlmICghKGxpYnZlciA+PSAweDEwMDAxMDAwVUwgJiYgbGlidmVyIDwgMHgxMDAwMTA4ZlVMKSAmJgorICAgICAgICAhKGxpYnZlciA+PSAweDEwMDAwMDAwVUwgJiYgbGlidmVyIDwgMHgxMDAwMDBkZlVMKSkgeworICAgICAgICBTU0xfQ1RYX3NldF9tb2RlKHNlbGYtPmN0eCwgU1NMX01PREVfUkVMRUFTRV9CVUZGRVJTKTsKKyAgICB9CisjZW5kaWYKKworCiAjaWZuZGVmIE9QRU5TU0xfTk9fRUNESAogICAgIC8qIEFsbG93IGF1dG9tYXRpYyBFQ0RIIGN1cnZlIHNlbGVjdGlvbiAob24gT3BlblNTTCAxLjAuMispLCBvciB1c2UKICAgICAgICBwcmltZTI1NnYxIGJ5IGRlZmF1bHQuICBUaGlzIGlzIEFwYWNoZSBtb2Rfc3NsJ3MgaW5pdGlhbGl6YXRpb24KQEAgLTIxMDAsMjAgKzIzNTQsMjUgQEAKICAgICBjb250ZXh0X2NsZWFyKHNlbGYpOwogICAgIFNTTF9DVFhfZnJlZShzZWxmLT5jdHgpOwogI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKLSAgICBQeU1lbV9GcmVlKHNlbGYtPm5wbl9wcm90b2NvbHMpOworICAgIFB5TWVtX0ZSRUUoc2VsZi0+bnBuX3Byb3RvY29scyk7CisjZW5kaWYKKyNpZmRlZiBIQVZFX0FMUE4KKyAgICBQeU1lbV9GUkVFKHNlbGYtPmFscG5fcHJvdG9jb2xzKTsKICNlbmRpZgogICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoc2VsZik7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1zZXRfY2lwaGVycyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGludCByZXQ7Ci0gICAgY29uc3QgY2hhciAqY2lwaGVybGlzdDsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTENvbnRleHQuc2V0X2NpcGhlcnMKKyAgICBjaXBoZXJsaXN0OiBzdHIKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6c2V0X2NpcGhlcnMiLCAmY2lwaGVybGlzdCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldCA9IFNTTF9DVFhfc2V0X2NpcGhlcl9saXN0KHNlbGYtPmN0eCwgY2lwaGVybGlzdCk7CitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9zZXRfY2lwaGVyc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgY29uc3QgY2hhciAqY2lwaGVybGlzdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zYTMxNjJmMzU1N2MwZjNmIGlucHV0PWE3YWM5MzFiOWYzY2E3ZmNdKi8KK3sKKyAgICBpbnQgcmV0ID0gU1NMX0NUWF9zZXRfY2lwaGVyX2xpc3Qoc2VsZi0+Y3R4LCBjaXBoZXJsaXN0KTsKICAgICBpZiAocmV0ID09IDApIHsKICAgICAgICAgLyogQ2xlYXJpbmcgdGhlIGVycm9yIHF1ZXVlIGlzIG5lY2Vzc2FyeSBvbiBzb21lIE9wZW5TU0wgdmVyc2lvbnMsCiAgICAgICAgICAgIG90aGVyd2lzZSB0aGUgZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhZ2FpbiB3aGVuIGFub3RoZXIgU1NMIGNhbGwKQEAgLTIxMjcsNiArMjM4NiwzMCBAQAogfQogCiAjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorc3RhdGljIGludAorZG9fcHJvdG9jb2xfc2VsZWN0aW9uKGludCBhbHBuLCB1bnNpZ25lZCBjaGFyICoqb3V0LCB1bnNpZ25lZCBjaGFyICpvdXRsZW4sCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2VydmVyX3Byb3RvY29scywgdW5zaWduZWQgaW50IHNlcnZlcl9wcm90b2NvbHNfbGVuLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNsaWVudF9wcm90b2NvbHMsIHVuc2lnbmVkIGludCBjbGllbnRfcHJvdG9jb2xzX2xlbikKK3sKKyAgICBpbnQgcmV0OworICAgIGlmIChjbGllbnRfcHJvdG9jb2xzID09IE5VTEwpIHsKKyAgICAgICAgY2xpZW50X3Byb3RvY29scyA9ICh1bnNpZ25lZCBjaGFyICopIiI7CisgICAgICAgIGNsaWVudF9wcm90b2NvbHNfbGVuID0gMDsKKyAgICB9CisgICAgaWYgKHNlcnZlcl9wcm90b2NvbHMgPT0gTlVMTCkgeworICAgICAgICBzZXJ2ZXJfcHJvdG9jb2xzID0gKHVuc2lnbmVkIGNoYXIgKikiIjsKKyAgICAgICAgc2VydmVyX3Byb3RvY29sc19sZW4gPSAwOworICAgIH0KKworICAgIHJldCA9IFNTTF9zZWxlY3RfbmV4dF9wcm90byhvdXQsIG91dGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3Byb3RvY29scywgc2VydmVyX3Byb3RvY29sc19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9wcm90b2NvbHMsIGNsaWVudF9wcm90b2NvbHNfbGVuKTsKKyAgICBpZiAoYWxwbiAmJiByZXQgIT0gT1BFTlNTTF9OUE5fTkVHT1RJQVRFRCkKKyAgICAgICAgcmV0dXJuIFNTTF9UTFNFWFRfRVJSX05PQUNLOworCisgICAgcmV0dXJuIFNTTF9UTFNFWFRfRVJSX09LOworfQorCiAvKiB0aGlzIGNhbGxiYWNrIGdldHMgcGFzc2VkIHRvIFNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2FkdmVydGlzZV9jYiAqLwogc3RhdGljIGludAogX2FkdmVydGlzZU5QTl9jYihTU0wgKnMsCkBAIC0yMTM2LDEwICsyNDE5LDEwIEBACiAgICAgUHlTU0xDb250ZXh0ICpzc2xfY3R4ID0gKFB5U1NMQ29udGV4dCAqKSBhcmdzOwogCiAgICAgaWYgKHNzbF9jdHgtPm5wbl9wcm90b2NvbHMgPT0gTlVMTCkgewotICAgICAgICAqZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopICIiOworICAgICAgICAqZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopIiI7CiAgICAgICAgICpsZW4gPSAwOwogICAgIH0gZWxzZSB7Ci0gICAgICAgICpkYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgc3NsX2N0eC0+bnBuX3Byb3RvY29sczsKKyAgICAgICAgKmRhdGEgPSBzc2xfY3R4LT5ucG5fcHJvdG9jb2xzOwogICAgICAgICAqbGVuID0gc3NsX2N0eC0+bnBuX3Byb3RvY29sc19sZW47CiAgICAgfQogCkBAIC0yMTUyLDQ2ICsyNDM1LDMwIEBACiAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlcnZlciwgdW5zaWduZWQgaW50IHNlcnZlcl9sZW4sCiAgICAgICAgICAgICAgIHZvaWQgKmFyZ3MpCiB7Ci0gICAgUHlTU0xDb250ZXh0ICpzc2xfY3R4ID0gKFB5U1NMQ29udGV4dCAqKSBhcmdzOwotCi0gICAgdW5zaWduZWQgY2hhciAqY2xpZW50ID0gKHVuc2lnbmVkIGNoYXIgKikgc3NsX2N0eC0+bnBuX3Byb3RvY29sczsKLSAgICBpbnQgY2xpZW50X2xlbjsKLQotICAgIGlmIChjbGllbnQgPT0gTlVMTCkgewotICAgICAgICBjbGllbnQgPSAodW5zaWduZWQgY2hhciAqKSAiIjsKLSAgICAgICAgY2xpZW50X2xlbiA9IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY2xpZW50X2xlbiA9IHNzbF9jdHgtPm5wbl9wcm90b2NvbHNfbGVuOwotICAgIH0KLQotICAgIFNTTF9zZWxlY3RfbmV4dF9wcm90byhvdXQsIG91dGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyLCBzZXJ2ZXJfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQsIGNsaWVudF9sZW4pOwotCi0gICAgcmV0dXJuIFNTTF9UTFNFWFRfRVJSX09LOworICAgIFB5U1NMQ29udGV4dCAqY3R4ID0gKFB5U1NMQ29udGV4dCAqKWFyZ3M7CisgICAgcmV0dXJuIGRvX3Byb3RvY29sX3NlbGVjdGlvbigwLCBvdXQsIG91dGxlbiwgc2VydmVyLCBzZXJ2ZXJfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5ucG5fcHJvdG9jb2xzLCBjdHgtPm5wbl9wcm90b2NvbHNfbGVuKTsKIH0KICNlbmRpZgogCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0Ll9zZXRfbnBuX3Byb3RvY29scworICAgIHByb3RvczogUHlfYnVmZmVyCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotX3NldF9ucG5fcHJvdG9jb2xzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfc3NsX19TU0xDb250ZXh0X19zZXRfbnBuX3Byb3RvY29sc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpwcm90b3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzJiMDAyYzMzMjQzOTBjNiBpbnB1dD0zMTlmY2I2NmFiZjk1YmQ3XSovCiB7CiAjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAotICAgIFB5X2J1ZmZlciBwcm90b3M7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOnNldF9ucG5fcHJvdG9jb2xzIiwgJnByb3RvcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHNlbGYtPm5wbl9wcm90b2NvbHMgIT0gTlVMTCkgewotICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPm5wbl9wcm90b2NvbHMpOwotICAgIH0KLQotICAgIHNlbGYtPm5wbl9wcm90b2NvbHMgPSBQeU1lbV9NYWxsb2MocHJvdG9zLmxlbik7Ci0gICAgaWYgKHNlbGYtPm5wbl9wcm90b2NvbHMgPT0gTlVMTCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwcm90b3MpOworICAgIFB5TWVtX0ZyZWUoc2VsZi0+bnBuX3Byb3RvY29scyk7CisgICAgc2VsZi0+bnBuX3Byb3RvY29scyA9IFB5TWVtX01hbGxvYyhwcm90b3MtPmxlbik7CisgICAgaWYgKHNlbGYtPm5wbl9wcm90b2NvbHMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIG1lbWNweShzZWxmLT5ucG5fcHJvdG9jb2xzLCBwcm90b3MuYnVmLCBwcm90b3MubGVuKTsKLSAgICBzZWxmLT5ucG5fcHJvdG9jb2xzX2xlbiA9IChpbnQpIHByb3Rvcy5sZW47CisgICAgbWVtY3B5KHNlbGYtPm5wbl9wcm90b2NvbHMsIHByb3Rvcy0+YnVmLCBwcm90b3MtPmxlbik7CisgICAgc2VsZi0+bnBuX3Byb3RvY29sc19sZW4gPSAoaW50KSBwcm90b3MtPmxlbjsKIAogICAgIC8qIHNldCBib3RoIHNlcnZlciBhbmQgY2xpZW50IGNhbGxiYWNrcywgYmVjYXVzZSB0aGUgY29udGV4dCBjYW4KICAgICAgKiBiZSB1c2VkIHRvIGNyZWF0ZSBib3RoIHR5cGVzIG9mIHNvY2tldHMgKi8KQEAgLTIyMDIsNyArMjQ2OSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGVjdE5QTl9jYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKTsKIAotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnByb3Rvcyk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiAjZWxzZQogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLApAQCAtMjIxMSw2ICsyNDc3LDUxIEBACiAjZW5kaWYKIH0KIAorI2lmZGVmIEhBVkVfQUxQTgorc3RhdGljIGludAorX3NlbGVjdEFMUE5fY2IoU1NMICpzLAorICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICoqb3V0LCB1bnNpZ25lZCBjaGFyICpvdXRsZW4sCisgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNsaWVudF9wcm90b2NvbHMsIHVuc2lnbmVkIGludCBjbGllbnRfcHJvdG9jb2xzX2xlbiwKKyAgICAgICAgICAgICAgdm9pZCAqYXJncykKK3sKKyAgICBQeVNTTENvbnRleHQgKmN0eCA9IChQeVNTTENvbnRleHQgKilhcmdzOworICAgIHJldHVybiBkb19wcm90b2NvbF9zZWxlY3Rpb24oMSwgKHVuc2lnbmVkIGNoYXIgKiopb3V0LCBvdXRsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPmFscG5fcHJvdG9jb2xzLCBjdHgtPmFscG5fcHJvdG9jb2xzX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9wcm90b2NvbHMsIGNsaWVudF9wcm90b2NvbHNfbGVuKTsKK30KKyNlbmRpZgorCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0Ll9zZXRfYWxwbl9wcm90b2NvbHMKKyAgICBwcm90b3M6IFB5X2J1ZmZlcgorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfX3NldF9hbHBuX3Byb3RvY29sc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqcHJvdG9zKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg3NTk5YTdmNzY2NTFhOWIgaW5wdXQ9OWJiYTk2NDU5NWQ1MTliZV0qLworeworI2lmZGVmIEhBVkVfQUxQTgorICAgIFB5TWVtX0ZSRUUoc2VsZi0+YWxwbl9wcm90b2NvbHMpOworICAgIHNlbGYtPmFscG5fcHJvdG9jb2xzID0gUHlNZW1fTWFsbG9jKHByb3Rvcy0+bGVuKTsKKyAgICBpZiAoIXNlbGYtPmFscG5fcHJvdG9jb2xzKQorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBtZW1jcHkoc2VsZi0+YWxwbl9wcm90b2NvbHMsIHByb3Rvcy0+YnVmLCBwcm90b3MtPmxlbik7CisgICAgc2VsZi0+YWxwbl9wcm90b2NvbHNfbGVuID0gcHJvdG9zLT5sZW47CisKKyAgICBpZiAoU1NMX0NUWF9zZXRfYWxwbl9wcm90b3Moc2VsZi0+Y3R4LCBzZWxmLT5hbHBuX3Byb3RvY29scywgc2VsZi0+YWxwbl9wcm90b2NvbHNfbGVuKSkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgU1NMX0NUWF9zZXRfYWxwbl9zZWxlY3RfY2Ioc2VsZi0+Y3R4LCBfc2VsZWN0QUxQTl9jYiwgc2VsZik7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKKyNlbHNlCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJUaGUgQUxQTiBleHRlbnNpb24gcmVxdWlyZXMgT3BlblNTTCAxLjAuMiBvciBsYXRlci4iKTsKKyAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorfQorCiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0X3ZlcmlmeV9tb2RlKFB5U1NMQ29udGV4dCAqc2VsZiwgdm9pZCAqYykKIHsKQEAgLTIyNTQsNyArMjU2NSw2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNpZmRlZiBIQVZFX09QRU5TU0xfVkVSSUZZX1BBUkFNCiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0X3ZlcmlmeV9mbGFncyhQeVNTTENvbnRleHQgKnNlbGYsIHZvaWQgKmMpCiB7CkBAIC0yMjkyLDcgKzI2MDIsNiBAQAogICAgIH0KICAgICByZXR1cm4gMDsKIH0KLSNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0X29wdGlvbnMoUHlTU0xDb250ZXh0ICpzZWxmLCB2b2lkICpjKQpAQCAtMjQ0OSwxMSArMjc1OCwxOSBAQAogICAgIHJldHVybiAtMTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW4KKyAgICBjZXJ0ZmlsZTogb2JqZWN0CisgICAga2V5ZmlsZTogb2JqZWN0ID0gTlVMTAorICAgIHBhc3N3b3JkOiBvYmplY3QgPSBOVUxMCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfY2VydF9jaGFpbihQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqY2VydGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXlmaWxlLCBQeU9iamVjdCAqcGFzc3dvcmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTQ4MGJjMWMzODBlMjA5NSBpbnB1dD03Y2Y5YWM2NzNjYmVlNmZjXSovCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7ImNlcnRmaWxlIiwgImtleWZpbGUiLCAicGFzc3dvcmQiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqY2VydGZpbGUsICprZXlmaWxlID0gTlVMTCwgKnBhc3N3b3JkID0gTlVMTDsKICAgICBQeU9iamVjdCAqY2VydGZpbGVfYnl0ZXMgPSBOVUxMLCAqa2V5ZmlsZV9ieXRlcyA9IE5VTEw7CiAgICAgcGVtX3Bhc3N3b3JkX2NiICpvcmlnX3Bhc3N3ZF9jYiA9IHNlbGYtPmN0eC0+ZGVmYXVsdF9wYXNzd2RfY2FsbGJhY2s7CiAgICAgdm9pZCAqb3JpZ19wYXNzd2RfdXNlcmRhdGEgPSBzZWxmLT5jdHgtPmRlZmF1bHRfcGFzc3dkX2NhbGxiYWNrX3VzZXJkYXRhOwpAQCAtMjQ2MiwxMCArMjc3OSw2IEBACiAKICAgICBlcnJubyA9IDA7CiAgICAgRVJSX2NsZWFyX2Vycm9yKCk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKLSAgICAgICAgIk98T086bG9hZF9jZXJ0X2NoYWluIiwga3dsaXN0LAotICAgICAgICAmY2VydGZpbGUsICZrZXlmaWxlLCAmcGFzc3dvcmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoa2V5ZmlsZSA9PSBQeV9Ob25lKQogICAgICAgICBrZXlmaWxlID0gTlVMTDsKICAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihjZXJ0ZmlsZSwgJmNlcnRmaWxlX2J5dGVzKSkgewpAQCAtMjYzMywyMSArMjk0NiwyNiBAQAogfQogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zCisgICAgY2FmaWxlOiBvYmplY3QgPSBOVUxMCisgICAgY2FwYXRoOiBvYmplY3QgPSBOVUxMCisgICAgY2FkYXRhOiBvYmplY3QgPSBOVUxMCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2FmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2FwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2FkYXRhKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1NGM3ZTQxMjMwY2E1NTEgaW5wdXQ9OTk3ZjFmYjNhNzg0ZWY4OF0qLwogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJjYWZpbGUiLCAiY2FwYXRoIiwgImNhZGF0YSIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpjYWZpbGUgPSBOVUxMLCAqY2FwYXRoID0gTlVMTCwgKmNhZGF0YSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNhZmlsZV9ieXRlcyA9IE5VTEwsICpjYXBhdGhfYnl0ZXMgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmNhZmlsZV9idWYgPSBOVUxMLCAqY2FwYXRoX2J1ZiA9IE5VTEw7CiAgICAgaW50IHIgPSAwLCBvayA9IDE7CiAKICAgICBlcnJubyA9IDA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKLSAgICAgICAgInxPT086bG9hZF92ZXJpZnlfbG9jYXRpb25zIiwga3dsaXN0LAotICAgICAgICAmY2FmaWxlLCAmY2FwYXRoLCAmY2FkYXRhKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoY2FmaWxlID09IFB5X05vbmUpCiAgICAgICAgIGNhZmlsZSA9IE5VTEw7CiAgICAgaWYgKGNhcGF0aCA9PSBQeV9Ob25lKQpAQCAtMjc0NCwxOCArMzA2MiwyNCBAQAogICAgIH0KIH0KIAorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMQ29udGV4dC5sb2FkX2RoX3BhcmFtcworICAgIHBhdGggYXMgZmlsZXBhdGg6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbG9hZF9kaF9wYXJhbXMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqZmlsZXBhdGgpCitfc3NsX19TU0xDb250ZXh0X2xvYWRfZGhfcGFyYW1zKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmZpbGVwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFjOGU1N2EzOGUwNTVhZjAgaW5wdXQ9Yzg4NzFmM2M3OTZhZTFkNl0qLwogewogICAgIEZJTEUgKmY7CiAgICAgREggKmRoOwogCiAgICAgZiA9IF9QeV9mb3Blbl9vYmooZmlsZXBhdGgsICJyYiIpOwotICAgIGlmIChmID09IE5VTEwpIHsKLSAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIGZpbGVwYXRoKTsKKyAgICBpZiAoZiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisKICAgICBlcnJubyA9IDA7CiAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGRoID0gUEVNX3JlYWRfREhwYXJhbXMoZiwgTlVMTCwgTlVMTCwgTlVMTCk7CkBAIC0yNzc3LDM4ICszMTAxLDc2IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTENvbnRleHQuX3dyYXBfc29ja2V0CisgICAgc29jazogb2JqZWN0KHN1YmNsYXNzX29mPSJQeVNvY2tldE1vZHVsZS5Tb2NrX1R5cGUiKQorICAgIHNlcnZlcl9zaWRlOiBpbnQKKyAgICBzZXJ2ZXJfaG9zdG5hbWUgYXMgaG9zdG5hbWVfb2JqOiBvYmplY3QgPSBOb25lCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWNvbnRleHRfd3JhcF9zb2NrZXQoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldF9pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKnNvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXJ2ZXJfc2lkZSwgUHlPYmplY3QgKmhvc3RuYW1lX29iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02OTczZTRiNjA5OTVlOTMzIGlucHV0PTgzODU5YjkxNTZkZGZjNjNdKi8KIHsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsic29jayIsICJzZXJ2ZXJfc2lkZSIsICJzZXJ2ZXJfaG9zdG5hbWUiLCBOVUxMfTsKLSAgICBQeVNvY2tldFNvY2tPYmplY3QgKnNvY2s7Ci0gICAgaW50IHNlcnZlcl9zaWRlID0gMDsKICAgICBjaGFyICpob3N0bmFtZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmhvc3RuYW1lX29iaiwgKnJlczsKKyAgICBQeU9iamVjdCAqcmVzOwogCiAgICAgLyogc2VydmVyX2hvc3RuYW1lIGlzIGVpdGhlciBOb25lIChvciBhYnNlbnQpLCBvciB0byBiZSBlbmNvZGVkCiAgICAgICAgdXNpbmcgdGhlIGlkbmEgZW5jb2RpbmcuICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk8haXxPITpfd3JhcF9zb2NrZXQiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlTb2NrZXRNb2R1bGUuU29ja19UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzb2NrLCAmc2VydmVyX3NpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShQeV9Ob25lKSwgJmhvc3RuYW1lX29iaikpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk8haWV0Ol93cmFwX3NvY2tldCIsIGt3bGlzdCwKLSAgICAgICAgICAgIFB5U29ja2V0TW9kdWxlLlNvY2tfVHlwZSwKLSAgICAgICAgICAgICZzb2NrLCAmc2VydmVyX3NpZGUsCi0gICAgICAgICAgICAiaWRuYSIsICZob3N0bmFtZSkpCisgICAgaWYgKGhvc3RuYW1lX29iaiAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoaG9zdG5hbWVfb2JqLCAiZXQiLCAiaWRuYSIsICZob3N0bmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXMgPSAoUHlPYmplY3QgKikgbmV3UHlTU0xTb2NrZXQoc2VsZiwgc29jaywgc2VydmVyX3NpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RuYW1lKTsKKyAgICByZXMgPSAoUHlPYmplY3QgKikgbmV3UHlTU0xTb2NrZXQoc2VsZiwgKFB5U29ja2V0U29ja09iamVjdCAqKXNvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlLCBob3N0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CiAgICAgaWYgKGhvc3RuYW1lICE9IE5VTEwpCiAgICAgICAgIFB5TWVtX0ZyZWUoaG9zdG5hbWUpOwogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTENvbnRleHQuX3dyYXBfYmlvCisgICAgaW5jb21pbmc6IG9iamVjdChzdWJjbGFzc19vZj0iJlB5U1NMTWVtb3J5QklPX1R5cGUiLCB0eXBlPSJQeVNTTE1lbW9yeUJJTyAqIikKKyAgICBvdXRnb2luZzogb2JqZWN0KHN1YmNsYXNzX29mPSImUHlTU0xNZW1vcnlCSU9fVHlwZSIsIHR5cGU9IlB5U1NMTWVtb3J5QklPICoiKQorICAgIHNlcnZlcl9zaWRlOiBpbnQKKyAgICBzZXJ2ZXJfaG9zdG5hbWUgYXMgaG9zdG5hbWVfb2JqOiBvYmplY3QgPSBOb25lCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNlc3Npb25fc3RhdHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW9faW1wbChQeVNTTENvbnRleHQgKnNlbGYsIFB5U1NMTWVtb3J5QklPICppbmNvbWluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlTU0xNZW1vcnlCSU8gKm91dGdvaW5nLCBpbnQgc2VydmVyX3NpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpob3N0bmFtZV9vYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGZlNGJhNzVhZDk1OTQwZCBpbnB1dD0xNzcyNWVjZGFjMGJmMjIwXSovCit7CisgICAgY2hhciAqaG9zdG5hbWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXM7CisKKyAgICAvKiBzZXJ2ZXJfaG9zdG5hbWUgaXMgZWl0aGVyIE5vbmUgKG9yIGFic2VudCksIG9yIHRvIGJlIGVuY29kZWQKKyAgICAgICB1c2luZyB0aGUgaWRuYSBlbmNvZGluZy4gKi8KKyAgICBpZiAoaG9zdG5hbWVfb2JqICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShob3N0bmFtZV9vYmosICJldCIsICJpZG5hIiwgJmhvc3RuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlcyA9IChQeU9iamVjdCAqKSBuZXdQeVNTTFNvY2tldChzZWxmLCBOVUxMLCBzZXJ2ZXJfc2lkZSwgaG9zdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nLCBvdXRnb2luZyk7CisKKyAgICBQeU1lbV9GcmVlKGhvc3RuYW1lKTsKKyAgICByZXR1cm4gcmVzOworfQorCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0LnNlc3Npb25fc3RhdHMKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfc2Vzc2lvbl9zdGF0c19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZDk2NDExYzQyODkzYmZiIGlucHV0PTdlMGE4MWZiMTExMDJjOGJdKi8KIHsKICAgICBpbnQgcjsKICAgICBQeU9iamVjdCAqdmFsdWUsICpzdGF0cyA9IFB5RGljdF9OZXcoKTsKQEAgLTI4NDYsOCArMzIwOCwxMyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0LnNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK19zc2xfX1NTTENvbnRleHRfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiZWU3NGU2ZTA5ZGVhYWEgaW5wdXQ9MzVmMzQwODAyMTQ2M2Q3NF0qLwogewogICAgIGlmICghU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoc2VsZi0+Y3R4KSkgewogICAgICAgICBfc2V0U1NMRXJyb3IoTlVMTCwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKQEAgLTI4NTcsOCArMzIyNCwxNiBAQAogfQogCiAjaWZuZGVmIE9QRU5TU0xfTk9fRUNESAorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMQ29udGV4dC5zZXRfZWNkaF9jdXJ2ZQorICAgIG5hbWU6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2V0X2VjZGhfY3VydmUoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqbmFtZSkKK19zc2xfX1NTTENvbnRleHRfc2V0X2VjZGhfY3VydmUoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMzAyMmMxOTZlNDBkN2QyIGlucHV0PWMyYmFmYjZmNmUzNDcyNmJdKi8KIHsKICAgICBQeU9iamVjdCAqbmFtZV9ieXRlczsKICAgICBpbnQgbmlkOwpAQCAtMjkxMywxMSArMzI4OCwyNSBAQAogCiAgICAgc3NsID0gU1NMX2dldF9hcHBfZGF0YShzKTsKICAgICBhc3NlcnQoUHlTU0xTb2NrZXRfQ2hlY2soc3NsKSk7Ci0gICAgc3NsX3NvY2tldCA9IFB5V2Vha3JlZl9HZXRPYmplY3Qoc3NsLT5Tb2NrZXQpOworCisgICAgLyogVGhlIHNlcnZlcm5hbWUgY2FsbGJhY2sgZXhwZWN0cyBhbiBhcmd1bWVudCB0aGF0IHJlcHJlc2VudHMgdGhlIGN1cnJlbnQKKyAgICAgKiBTU0wgY29ubmVjdGlvbiBhbmQgdGhhdCBoYXMgYSAuY29udGV4dCBhdHRyaWJ1dGUgdGhhdCBjYW4gYmUgY2hhbmdlZCB0bworICAgICAqIGlkZW50aWZ5IHRoZSByZXF1ZXN0ZWQgaG9zdG5hbWUuIFNpbmNlIHRoZSBvZmZpY2lhbCBBUEkgaXMgdGhlIFB5dGhvbgorICAgICAqIGxldmVsIEFQSSB3ZSB3YW50IHRvIHBhc3MgdGhlIGNhbGxiYWNrIGEgUHl0aG9uIGxldmVsIG9iamVjdCByYXRoZXIgdGhhbgorICAgICAqIGEgX3NzbC5TU0xTb2NrZXQgaW5zdGFuY2UuIElmIHRoZXJlJ3MgYW4gIm93bmVyIiAodHlwaWNhbGx5IGFuCisgICAgICogU1NMT2JqZWN0KSB0aGF0IHdpbGwgYmUgcGFzc2VkLiBPdGhlcndpc2UgaWYgdGhlcmUncyBhIHNvY2tldCB0aGVuIHRoYXQKKyAgICAgKiB3aWxsIGJlIHBhc3NlZC4gSWYgYm90aCBkbyBub3QgZXhpc3Qgb25seSB0aGVuIHRoZSBDLWxldmVsIG9iamVjdCBpcworICAgICAqIHBhc3NlZC4gKi8KKyAgICBpZiAoc3NsLT5vd25lcikKKyAgICAgICAgc3NsX3NvY2tldCA9IFB5V2Vha3JlZl9HZXRPYmplY3Qoc3NsLT5vd25lcik7CisgICAgZWxzZSBpZiAoc3NsLT5Tb2NrZXQpCisgICAgICAgIHNzbF9zb2NrZXQgPSBQeVdlYWtyZWZfR2V0T2JqZWN0KHNzbC0+U29ja2V0KTsKKyAgICBlbHNlCisgICAgICAgIHNzbF9zb2NrZXQgPSAoUHlPYmplY3QgKikgc3NsOworCiAgICAgUHlfSU5DUkVGKHNzbF9zb2NrZXQpOwotICAgIGlmIChzc2xfc29ja2V0ID09IFB5X05vbmUpIHsKKyAgICBpZiAoc3NsX3NvY2tldCA9PSBQeV9Ob25lKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KIAogICAgIGlmIChzZXJ2ZXJuYW1lID09IE5VTEwpIHsKICAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzc2xfY3R4LT5zZXRfaG9zdG5hbWUsIHNzbF9zb2NrZXQsCkBAIC0yOTc4LDI1ICszMzY3LDIzIEBACiB9CiAjZW5kaWYKIAotUHlEb2NfU1RSVkFSKFB5U1NMX3NldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrX2RvYywKLSJzZXRfc2VydmVybmFtZV9jYWxsYmFjayhtZXRob2QpXG5cCi1cblwKLVRoaXMgc2V0cyBhIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbiBhIHNlcnZlciBuYW1lIGlzIHByb3ZpZGVkIGJ5XG5cCi10aGUgU1NML1RMUyBjbGllbnQgaW4gdGhlIFNOSSBleHRlbnNpb24uXG5cCi1cblwKLUlmIHRoZSBhcmd1bWVudCBpcyBOb25lIHRoZW4gdGhlIGNhbGxiYWNrIGlzIGRpc2FibGVkLiBUaGUgbWV0aG9kIGlzIGNhbGxlZFxuXAotd2l0aCB0aGUgU1NMU29ja2V0LCB0aGUgc2VydmVyIG5hbWUgYXMgYSBzdHJpbmcsIGFuZCB0aGUgU1NMQ29udGV4dCBvYmplY3QuXG5cCi1TZWUgUkZDIDYwNjYgZm9yIGRldGFpbHMgb2YgdGhlIFNOSSBleHRlbnNpb24uIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0LnNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrCisgICAgbWV0aG9kIGFzIGNiOiBvYmplY3QKKyAgICAvCisKK1NldCBhIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbiBhIHNlcnZlciBuYW1lIGlzIHByb3ZpZGVkIGJ5IHRoZSBTU0wvVExTIGNsaWVudCBpbiB0aGUgU05JIGV4dGVuc2lvbi4KKworSWYgdGhlIGFyZ3VtZW50IGlzIE5vbmUgdGhlbiB0aGUgY2FsbGJhY2sgaXMgZGlzYWJsZWQuIFRoZSBtZXRob2QgaXMgY2FsbGVkCit3aXRoIHRoZSBTU0xTb2NrZXQsIHRoZSBzZXJ2ZXIgbmFtZSBhcyBhIHN0cmluZywgYW5kIHRoZSBTU0xDb250ZXh0IG9iamVjdC4KK1NlZSBSRkMgNjA2NiBmb3IgZGV0YWlscyBvZiB0aGUgU05JIGV4dGVuc2lvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfc3NsX19TU0xDb250ZXh0X3NldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmNiKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM0MzlhMWIyZDVkM2I3ZWEgaW5wdXQ9YTJhODM2MjAxOTdkNjAyYl0qLwogewogI2lmIEhBVkVfU05JICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fVExTRVhUKQotICAgIFB5T2JqZWN0ICpjYjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyIsICZjYikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlfQ0xFQVIoc2VsZi0+c2V0X2hvc3RuYW1lKTsKICAgICBpZiAoY2IgPT0gUHlfTm9uZSkgewogICAgICAgICBTU0xfQ1RYX3NldF90bHNleHRfc2VydmVybmFtZV9jYWxsYmFjayhzZWxmLT5jdHgsIE5VTEwpOwpAQCAtMzAyMywxNyArMzQxMCwyMSBAQAogI2VuZGlmCiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9nZXRfc3RhdHNfZG9jLAotImNlcnRfc3RvcmVfc3RhdHMoKSAtPiB7J2NybCc6IGludCwgJ3g1MDlfY2EnOiBpbnQsICd4NTA5JzogaW50fVxuXAotXG5cCi1SZXR1cm5zIHF1YW50aXRpZXMgb2YgbG9hZGVkIFguNTA5IGNlcnRpZmljYXRlcy4gWC41MDkgY2VydGlmaWNhdGVzIHdpdGggYVxuXAotQ0EgZXh0ZW5zaW9uIGFuZCBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uIGxpc3RzIGluc2lkZSB0aGUgY29udGV4dCdzIGNlcnRcblwKLXN0b3JlLlxuXAotTk9URTogQ2VydGlmaWNhdGVzIGluIGEgY2FwYXRoIGRpcmVjdG9yeSBhcmVuJ3QgbG9hZGVkIHVubGVzcyB0aGV5IGhhdmVcblwKLWJlZW4gdXNlZCBhdCBsZWFzdCBvbmNlLiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMQ29udGV4dC5jZXJ0X3N0b3JlX3N0YXRzCisKK1JldHVybnMgcXVhbnRpdGllcyBvZiBsb2FkZWQgWC41MDkgY2VydGlmaWNhdGVzLgorCitYLjUwOSBjZXJ0aWZpY2F0ZXMgd2l0aCBhIENBIGV4dGVuc2lvbiBhbmQgY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBsaXN0cworaW5zaWRlIHRoZSBjb250ZXh0J3MgY2VydCBzdG9yZS4KKworTk9URTogQ2VydGlmaWNhdGVzIGluIGEgY2FwYXRoIGRpcmVjdG9yeSBhcmVuJ3QgbG9hZGVkIHVubGVzcyB0aGV5IGhhdmUKK2JlZW4gdXNlZCBhdCBsZWFzdCBvbmNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY2VydF9zdG9yZV9zdGF0cyhQeVNTTENvbnRleHQgKnNlbGYpCitfc3NsX19TU0xDb250ZXh0X2NlcnRfc3RvcmVfc3RhdHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWYzNTZmNGQ5Y2NhODc0ZCBpbnB1dD1lYjQwZGQwZjZkMGU0MGNmXSovCiB7CiAgICAgWDUwOV9TVE9SRSAqc3RvcmU7CiAgICAgWDUwOV9PQkpFQ1QgKm9iajsKQEAgLTMwNjYsMjcgKzM0NTcsMjYgQEAKICAgICAgICAgIng1MDlfY2EiLCBjYSk7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9nZXRfY2FfY2VydHNfZG9jLAotImdldF9jYV9jZXJ0cyhiaW5hcnlfZm9ybT1GYWxzZSkgLT4gbGlzdCBvZiBsb2FkZWQgY2VydGlmaWNhdGVcblwKLVxuXAotUmV0dXJucyBhIGxpc3Qgb2YgZGljdHMgd2l0aCBpbmZvcm1hdGlvbiBvZiBsb2FkZWQgQ0EgY2VydHMuIElmIHRoZVxuXAotb3B0aW9uYWwgYXJndW1lbnQgaXMgVHJ1ZSwgcmV0dXJucyBhIERFUi1lbmNvZGVkIGNvcHkgb2YgdGhlIENBIGNlcnRpZmljYXRlLlxuXAotTk9URTogQ2VydGlmaWNhdGVzIGluIGEgY2FwYXRoIGRpcmVjdG9yeSBhcmVuJ3QgbG9hZGVkIHVubGVzcyB0aGV5IGhhdmVcblwKLWJlZW4gdXNlZCBhdCBsZWFzdCBvbmNlLiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMQ29udGV4dC5nZXRfY2FfY2VydHMKKyAgICBiaW5hcnlfZm9ybTogYm9vbCA9IEZhbHNlCisKK1JldHVybnMgYSBsaXN0IG9mIGRpY3RzIHdpdGggaW5mb3JtYXRpb24gb2YgbG9hZGVkIENBIGNlcnRzLgorCitJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgaXMgVHJ1ZSwgcmV0dXJucyBhIERFUi1lbmNvZGVkIGNvcHkgb2YgdGhlIENBCitjZXJ0aWZpY2F0ZS4KKworTk9URTogQ2VydGlmaWNhdGVzIGluIGEgY2FwYXRoIGRpcmVjdG9yeSBhcmVuJ3QgbG9hZGVkIHVubGVzcyB0aGV5IGhhdmUKK2JlZW4gdXNlZCBhdCBsZWFzdCBvbmNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZ2V0X2NhX2NlcnRzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsIGludCBiaW5hcnlfZm9ybSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZDU4ZjE0OGYzN2UyOTM4IGlucHV0PTY4ODdiNWEwOWI3ZjkwNzZdKi8KIHsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsiYmluYXJ5X2Zvcm0iLCBOVUxMfTsKICAgICBYNTA5X1NUT1JFICpzdG9yZTsKICAgICBQeU9iamVjdCAqY2kgPSBOVUxMLCAqcmxpc3QgPSBOVUxMOwogICAgIGludCBpOwotICAgIGludCBiaW5hcnlfbW9kZSA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifHA6Z2V0X2NhX2NlcnRzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZiaW5hcnlfbW9kZSkpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgaWYgKChybGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMTA3LDcgKzM0OTcsNyBAQAogICAgICAgICBpZiAoIVg1MDlfY2hlY2tfY2EoY2VydCkpIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChiaW5hcnlfbW9kZSkgeworICAgICAgICBpZiAoYmluYXJ5X2Zvcm0pIHsKICAgICAgICAgICAgIGNpID0gX2NlcnRpZmljYXRlX3RvX2RlcihjZXJ0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNpID0gX2RlY29kZV9jZXJ0aWZpY2F0ZShjZXJ0KTsKQEAgLTMxMzQsNDIgKzM1MjQsMjggQEAKICAgICAgICAgICAgICAgICAgICAgICAgKHNldHRlcikgc2V0X2NoZWNrX2hvc3RuYW1lLCBOVUxMfSwKICAgICB7Im9wdGlvbnMiLCAoZ2V0dGVyKSBnZXRfb3B0aW9ucywKICAgICAgICAgICAgICAgICAoc2V0dGVyKSBzZXRfb3B0aW9ucywgTlVMTH0sCi0jaWZkZWYgSEFWRV9PUEVOU1NMX1ZFUklGWV9QQVJBTQogICAgIHsidmVyaWZ5X2ZsYWdzIiwgKGdldHRlcikgZ2V0X3ZlcmlmeV9mbGFncywKICAgICAgICAgICAgICAgICAgICAgIChzZXR0ZXIpIHNldF92ZXJpZnlfZmxhZ3MsIE5VTEx9LAotI2VuZGlmCiAgICAgeyJ2ZXJpZnlfbW9kZSIsIChnZXR0ZXIpIGdldF92ZXJpZnlfbW9kZSwKICAgICAgICAgICAgICAgICAgICAgKHNldHRlcikgc2V0X3ZlcmlmeV9tb2RlLCBOVUxMfSwKICAgICB7TlVMTH0sICAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgY29udGV4dF9tZXRob2RzW10gPSB7Ci0gICAgeyJfd3JhcF9zb2NrZXQiLCAoUHlDRnVuY3Rpb24pIGNvbnRleHRfd3JhcF9zb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIE5VTEx9LAotICAgIHsic2V0X2NpcGhlcnMiLCAoUHlDRnVuY3Rpb24pIHNldF9jaXBoZXJzLAotICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsIE5VTEx9LAotICAgIHsiX3NldF9ucG5fcHJvdG9jb2xzIiwgKFB5Q0Z1bmN0aW9uKSBfc2V0X25wbl9wcm90b2NvbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsIE5VTEx9LAotICAgIHsibG9hZF9jZXJ0X2NoYWluIiwgKFB5Q0Z1bmN0aW9uKSBsb2FkX2NlcnRfY2hhaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBOVUxMfSwKLSAgICB7ImxvYWRfZGhfcGFyYW1zIiwgKFB5Q0Z1bmN0aW9uKSBsb2FkX2RoX3BhcmFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9PLCBOVUxMfSwKLSAgICB7ImxvYWRfdmVyaWZ5X2xvY2F0aW9ucyIsIChQeUNGdW5jdGlvbikgbG9hZF92ZXJpZnlfbG9jYXRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgTlVMTH0sCi0gICAgeyJzZXNzaW9uX3N0YXRzIiwgKFB5Q0Z1bmN0aW9uKSBzZXNzaW9uX3N0YXRzLAotICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTLCBOVUxMfSwKLSAgICB7InNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyIsIChQeUNGdW5jdGlvbikgc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9OT0FSR1MsIE5VTEx9LAotI2lmbmRlZiBPUEVOU1NMX05PX0VDREgKLSAgICB7InNldF9lY2RoX2N1cnZlIiwgKFB5Q0Z1bmN0aW9uKSBzZXRfZWNkaF9jdXJ2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9PLCBOVUxMfSwKLSNlbmRpZgotICAgIHsic2V0X3NlcnZlcm5hbWVfY2FsbGJhY2siLCAoUHlDRnVuY3Rpb24pIHNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrLAotICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsIFB5U1NMX3NldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrX2RvY30sCi0gICAgeyJjZXJ0X3N0b3JlX3N0YXRzIiwgKFB5Q0Z1bmN0aW9uKSBjZXJ0X3N0b3JlX3N0YXRzLAotICAgICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgUHlTU0xfZ2V0X3N0YXRzX2RvY30sCi0gICAgeyJnZXRfY2FfY2VydHMiLCAoUHlDRnVuY3Rpb24pIGdldF9jYV9jZXJ0cywKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgUHlTU0xfZ2V0X2NhX2NlcnRzX2RvY30sCisgICAgX1NTTF9fU1NMQ09OVEVYVF9fV1JBUF9TT0NLRVRfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMQ09OVEVYVF9fV1JBUF9CSU9fTUVUSE9EREVGCisgICAgX1NTTF9fU1NMQ09OVEVYVF9TRVRfQ0lQSEVSU19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX19TRVRfQUxQTl9QUk9UT0NPTFNfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMQ09OVEVYVF9fU0VUX05QTl9QUk9UT0NPTFNfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMQ09OVEVYVF9MT0FEX0NFUlRfQ0hBSU5fTUVUSE9EREVGCisgICAgX1NTTF9fU1NMQ09OVEVYVF9MT0FEX0RIX1BBUkFNU19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX0xPQURfVkVSSUZZX0xPQ0FUSU9OU19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX1NFU1NJT05fU1RBVFNfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMQ09OVEVYVF9TRVRfREVGQVVMVF9WRVJJRllfUEFUSFNfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMQ09OVEVYVF9TRVRfRUNESF9DVVJWRV9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX1NFVF9TRVJWRVJOQU1FX0NBTExCQUNLX01FVEhPRERFRgorICAgIF9TU0xfX1NTTENPTlRFWFRfQ0VSVF9TVE9SRV9TVEFUU19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX0dFVF9DQV9DRVJUU19NRVRIT0RERUYKICAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0zMjExLDIzICszNTg3LDI1MiBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2luaXQqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FsbG9jKi8KLSAgICBjb250ZXh0X25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uZXcqLworICAgIF9zc2xfX1NTTENvbnRleHQsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX25ldyovCiB9OwogCiAKKy8qCisgKiBNZW1vcnlCSU8gb2JqZWN0cworICovCiAKLSNpZmRlZiBIQVZFX09QRU5TU0xfUkFORAorLypbY2xpbmljIGlucHV0XQorQGNsYXNzbWV0aG9kCitfc3NsLk1lbW9yeUJJTy5fX25ld19fCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfTWVtb3J5QklPX2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg4MjBhNThkYjc4MzMwYWMgaW5wdXQ9MjZkMjJlNDkwOWVjYjFiNV0qLworeworICAgIEJJTyAqYmlvOworICAgIFB5U1NMTWVtb3J5QklPICpzZWxmOworCisgICAgYmlvID0gQklPX25ldyhCSU9fc19tZW0oKSk7CisgICAgaWYgKGJpbyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeVNTTEVycm9yT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBhbGxvY2F0ZSBCSU8iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIC8qIFNpbmNlIG91ciBCSU8gaXMgbm9uLWJsb2NraW5nIGFuIGVtcHR5IHJlYWQoKSBkb2VzIG5vdCBpbmRpY2F0ZSBFT0YsCisgICAgICoganVzdCB0aGF0IG5vIGRhdGEgaXMgY3VycmVudGx5IGF2YWlsYWJsZS4gVGhlIFNTTCByb3V0aW5lcyBzaG91bGQgcmV0cnkKKyAgICAgKiB0aGUgcmVhZCwgd2hpY2ggd2UgY2FuIGFjaGlldmUgYnkgY2FsbGluZyBCSU9fc2V0X3JldHJ5X3JlYWQoKS4gKi8KKyAgICBCSU9fc2V0X3JldHJ5X3JlYWQoYmlvKTsKKyAgICBCSU9fc2V0X21lbV9lb2ZfcmV0dXJuKGJpbywgLTEpOworCisgICAgYXNzZXJ0KHR5cGUgIT0gTlVMTCAmJiB0eXBlLT50cF9hbGxvYyAhPSBOVUxMKTsKKyAgICBzZWxmID0gKFB5U1NMTWVtb3J5QklPICopIHR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworICAgIGlmIChzZWxmID09IE5VTEwpIHsKKyAgICAgICAgQklPX2ZyZWUoYmlvKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHNlbGYtPmJpbyA9IGJpbzsKKyAgICBzZWxmLT5lb2Zfd3JpdHRlbiA9IDA7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopIHNlbGY7Cit9CisKK3N0YXRpYyB2b2lkCittZW1vcnlfYmlvX2RlYWxsb2MoUHlTU0xNZW1vcnlCSU8gKnNlbGYpCit7CisgICAgQklPX2ZyZWUoc2VsZi0+YmlvKTsKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKHNlbGYpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2Jpb19nZXRfcGVuZGluZyhQeVNTTE1lbW9yeUJJTyAqc2VsZiwgdm9pZCAqYykKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKEJJT19jdHJsX3BlbmRpbmcoc2VsZi0+YmlvKSk7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTF9tZW1vcnlfYmlvX3BlbmRpbmdfZG9jLAorIlRoZSBudW1iZXIgb2YgYnl0ZXMgcGVuZGluZyBpbiB0aGUgbWVtb3J5IEJJTy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9iaW9fZ2V0X2VvZihQeVNTTE1lbW9yeUJJTyAqc2VsZiwgdm9pZCAqYykKK3sKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChCSU9fY3RybF9wZW5kaW5nKHNlbGYtPmJpbykgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHNlbGYtPmVvZl93cml0dGVuKTsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMX21lbW9yeV9iaW9fZW9mX2RvYywKKyJXaGV0aGVyIHRoZSBtZW1vcnkgQklPIGlzIGF0IEVPRi4iKTsKKworLypbY2xpbmljIGlucHV0XQorX3NzbC5NZW1vcnlCSU8ucmVhZAorICAgIHNpemUgYXMgbGVuOiBpbnQgPSAtMQorICAgIC8KKworUmVhZCB1cCB0byBzaXplIGJ5dGVzIGZyb20gdGhlIG1lbW9yeSBCSU8uCisKK0lmIHNpemUgaXMgbm90IHNwZWNpZmllZCwgcmVhZCB0aGUgZW50aXJlIGJ1ZmZlci4KK0lmIHRoZSByZXR1cm4gdmFsdWUgaXMgYW4gZW1wdHkgYnl0ZXMgaW5zdGFuY2UsIHRoaXMgbWVhbnMgZWl0aGVyCitFT0Ygb3IgdGhhdCBubyBkYXRhIGlzIGF2YWlsYWJsZS4gVXNlIHRoZSAiZW9mIiBwcm9wZXJ0eSB0bworZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgdHdvLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9NZW1vcnlCSU9fcmVhZF9pbXBsKFB5U1NMTWVtb3J5QklPICpzZWxmLCBpbnQgbGVuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE2NTdhYTFlNzljZDAxYjMgaW5wdXQ9NTc0ZDdiZTA2YTkwMjM2Nl0qLworeworICAgIGludCBhdmFpbCwgbmJ5dGVzOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBhdmFpbCA9IEJJT19jdHJsX3BlbmRpbmcoc2VsZi0+YmlvKTsKKyAgICBpZiAoKGxlbiA8IDApIHx8IChsZW4gPiBhdmFpbCkpCisgICAgICAgIGxlbiA9IGF2YWlsOworCisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBsZW4pOworICAgIGlmICgocmVzdWx0ID09IE5VTEwpIHx8IChsZW4gPT0gMCkpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICBuYnl0ZXMgPSBCSU9fcmVhZChzZWxmLT5iaW8sIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCksIGxlbik7CisgICAgLyogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIGFueSBzaG9ydCByZWFkcyBidXQgY2hlY2sgYW55d2F5LiAqLworICAgIGlmICgobmJ5dGVzIDwgbGVuKSAmJiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIGxlbikgPCAwKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLypbY2xpbmljIGlucHV0XQorX3NzbC5NZW1vcnlCSU8ud3JpdGUKKyAgICBiOiBQeV9idWZmZXIKKyAgICAvCisKK1dyaXRlcyB0aGUgYnl0ZXMgYiBpbnRvIHRoZSBtZW1vcnkgQklPLgorCitSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfTWVtb3J5QklPX3dyaXRlX2ltcGwoUHlTU0xNZW1vcnlCSU8gKnNlbGYsIFB5X2J1ZmZlciAqYikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNTZlYzU5MTEwZDc1OTM1IGlucHV0PWU0NTc1N2IzZTE3YzQ4MDhdKi8KK3sKKyAgICBpbnQgbmJ5dGVzOworCisgICAgaWYgKGItPmxlbiA+IElOVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIGxvbmdlciB0aGFuICVkIGJ5dGVzIiwgSU5UX01BWCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChzZWxmLT5lb2Zfd3JpdHRlbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlTU0xFcnJvck9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3Qgd3JpdGUoKSBhZnRlciB3cml0ZV9lb2YoKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBuYnl0ZXMgPSBCSU9fd3JpdGUoc2VsZi0+YmlvLCBiLT5idWYsIGItPmxlbik7CisgICAgaWYgKG5ieXRlcyA8IDApIHsKKyAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcobmJ5dGVzKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX3NzbC5NZW1vcnlCSU8ud3JpdGVfZW9mCisKK1dyaXRlIGFuIEVPRiBtYXJrZXIgdG8gdGhlIG1lbW9yeSBCSU8uCisKK1doZW4gYWxsIGRhdGEgaGFzIGJlZW4gcmVhZCwgdGhlICJlb2YiIHByb3BlcnR5IHdpbGwgYmUgVHJ1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfTWVtb3J5QklPX3dyaXRlX2VvZl9pbXBsKFB5U1NMTWVtb3J5QklPICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ0MTA2Mjc2Y2NkMWVkMzQgaW5wdXQ9NTZhOTQ1ZjFkMjllOGJkNl0qLworeworICAgIHNlbGYtPmVvZl93cml0dGVuID0gMTsKKyAgICAvKiBBZnRlciBhbiBFT0YgaXMgd3JpdHRlbiwgYSB6ZXJvIHJldHVybiBmcm9tIHJlYWQoKSBzaG91bGQgYmUgYSByZWFsIEVPRgorICAgICAqIGkuZS4gaXQgc2hvdWxkIG5vdCBiZSByZXRyaWVkLiBDbGVhciB0aGUgU0hPVUxEX1JFVFJZIGZsYWcuICovCisgICAgQklPX2NsZWFyX3JldHJ5X2ZsYWdzKHNlbGYtPmJpbyk7CisgICAgQklPX3NldF9tZW1fZW9mX3JldHVybihzZWxmLT5iaW8sIDApOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeUdldFNldERlZiBtZW1vcnlfYmlvX2dldHNldGxpc3RbXSA9IHsKKyAgICB7InBlbmRpbmciLCAoZ2V0dGVyKSBtZW1vcnlfYmlvX2dldF9wZW5kaW5nLCBOVUxMLAorICAgICAgICAgICAgICAgIFB5U1NMX21lbW9yeV9iaW9fcGVuZGluZ19kb2N9LAorICAgIHsiZW9mIiwgKGdldHRlcikgbWVtb3J5X2Jpb19nZXRfZW9mLCBOVUxMLAorICAgICAgICAgICAgUHlTU0xfbWVtb3J5X2Jpb19lb2ZfZG9jfSwKKyAgICB7TlVMTH0sICAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKK3N0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgbWVtb3J5X2Jpb19tZXRob2RzW10gPSB7CisgICAgX1NTTF9NRU1PUllCSU9fUkVBRF9NRVRIT0RERUYKKyAgICBfU1NMX01FTU9SWUJJT19XUklURV9NRVRIT0RERUYKKyAgICBfU1NMX01FTU9SWUJJT19XUklURV9FT0ZfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBQeVNTTE1lbW9yeUJJT19UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfc3NsLk1lbW9yeUJJTyIsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbmFtZSovCisgICAgc2l6ZW9mKFB5U1NMTWVtb3J5QklPKSwgICAgICAgICAgICAgICAgICAgIC8qdHBfYmFzaWNzaXplKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCisgICAgKGRlc3RydWN0b3IpbWVtb3J5X2Jpb19kZWFsbG9jLCAgICAgICAgICAgIC8qdHBfZGVhbGxvYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9mbGFncyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZG9jKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF90cmF2ZXJzZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF93ZWFrbGlzdG9mZnNldCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQqLworICAgIG1lbW9yeV9iaW9fbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX21ldGhvZHMqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX21lbWJlcnMqLworICAgIG1lbW9yeV9iaW9fZ2V0c2V0bGlzdCwgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldHNldCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYmFzZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3JfZ2V0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9zZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2luaXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FsbG9jKi8KKyAgICBfc3NsX01lbW9yeUJJTywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uZXcqLworfTsKKwogCiAvKiBoZWxwZXIgcm91dGluZXMgZm9yIHNlZWRpbmcgdGhlIFNTTCBQUk5HICovCi1zdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfUkFORF9hZGQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGNoYXIgKmJ1ZjsKLSAgICBQeV9zc2l6ZV90IGxlbiwgd3JpdHRlbjsKLSAgICBkb3VibGUgZW50cm9weTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuUkFORF9hZGQKKyAgICBzdHJpbmcgYXMgdmlldzogUHlfYnVmZmVyKGFjY2VwdD17c3RyLCBidWZmZXJ9KQorICAgIGVudHJvcHk6IGRvdWJsZQorICAgIC8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyNkOlJBTkRfYWRkIiwgJmJ1ZiwgJmxlbiwgJmVudHJvcHkpKQotICAgICAgICByZXR1cm4gTlVMTDsKK01peCBzdHJpbmcgaW50byB0aGUgT3BlblNTTCBQUk5HIHN0YXRlLgorCitlbnRyb3B5IChhIGZsb2F0KSBpcyBhIGxvd2VyIGJvdW5kIG9uIHRoZSBlbnRyb3B5IGNvbnRhaW5lZCBpbgorc3RyaW5nLiAgU2VlIFJGQyAxNzUwLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9SQU5EX2FkZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqdmlldywgZG91YmxlIGVudHJvcHkpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGY4ZDVjOGNjZTMyODk1OCBpbnB1dD01ODBjODVlNmEzYTRmZTI5XSovCit7CisgICAgY29uc3QgY2hhciAqYnVmOworICAgIFB5X3NzaXplX3QgbGVuLCB3cml0dGVuOworCisgICAgYnVmID0gKGNvbnN0IGNoYXIgKil2aWV3LT5idWY7CisgICAgbGVuID0gdmlldy0+bGVuOwogICAgIGRvIHsKICAgICAgICAgd3JpdHRlbiA9IFB5X01JTihsZW4sIElOVF9NQVgpOwogICAgICAgICBSQU5EX2FkZChidWYsIChpbnQpd3JpdHRlbiwgZW50cm9weSk7CkBAIC0zMjM4LDEyICszODQzLDYgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX1JBTkRfYWRkX2RvYywKLSJSQU5EX2FkZChzdHJpbmcsIGVudHJvcHkpXG5cCi1cblwKLU1peCBzdHJpbmcgaW50byB0aGUgT3BlblNTTCBQUk5HIHN0YXRlLiAgZW50cm9weSAoYSBmbG9hdCkgaXMgYSBsb3dlclxuXAotYm91bmQgb24gdGhlIGVudHJvcHkgY29udGFpbmVkIGluIHN0cmluZy4gIFNlZSBSRkMgMTc1MC4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIFB5U1NMX1JBTkQoaW50IGxlbiwgaW50IHBzZXVkbykKIHsKQEAgLTMyODMsNjAgKzM4ODIsNzIgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3NzbC5SQU5EX2J5dGVzCisgICAgbjogaW50CisgICAgLworCitHZW5lcmF0ZSBuIGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZyBwc2V1ZG8tcmFuZG9tIGJ5dGVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfUkFORF9ieXRlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfc3NsX1JBTkRfYnl0ZXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZDg3NDFiZGMxZDQzNWYzIGlucHV0PTY3OGRkZjI4NzJkZmViZmNdKi8KIHsKLSAgICBpbnQgbGVuOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpSQU5EX2J5dGVzIiwgJmxlbikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeVNTTF9SQU5EKGxlbiwgMCk7CisgICAgcmV0dXJuIFB5U1NMX1JBTkQobiwgMCk7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9SQU5EX2J5dGVzX2RvYywKLSJSQU5EX2J5dGVzKG4pIC0+IGJ5dGVzXG5cCi1cblwKLUdlbmVyYXRlIG4gY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nIHBzZXVkby1yYW5kb20gYnl0ZXMuIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLlJBTkRfcHNldWRvX2J5dGVzCisgICAgbjogaW50CisgICAgLworCitHZW5lcmF0ZSBuIHBzZXVkby1yYW5kb20gYnl0ZXMuCisKK1JldHVybiBhIHBhaXIgKGJ5dGVzLCBpc19jcnlwdG9ncmFwaGljKS4gIGlzX2NyeXB0b2dyYXBoaWMgaXMgVHJ1ZQoraWYgdGhlIGJ5dGVzIGdlbmVyYXRlZCBhcmUgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfUkFORF9wc2V1ZG9fYnl0ZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3NzbF9SQU5EX3BzZXVkb19ieXRlc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRkNjczODEzMTA3ZjM4NzUgaW5wdXQ9NTgzMTJiZDUzZjliYmRkMF0qLwogewotICAgIGludCBsZW47Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOlJBTkRfcHNldWRvX2J5dGVzIiwgJmxlbikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeVNTTF9SQU5EKGxlbiwgMSk7CisgICAgcmV0dXJuIFB5U1NMX1JBTkQobiwgMSk7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9SQU5EX3BzZXVkb19ieXRlc19kb2MsCi0iUkFORF9wc2V1ZG9fYnl0ZXMobikgLT4gKGJ5dGVzLCBpc19jcnlwdG9ncmFwaGljKVxuXAotXG5cCi1HZW5lcmF0ZSBuIHBzZXVkby1yYW5kb20gYnl0ZXMuIGlzX2NyeXB0b2dyYXBoaWMgaXMgVHJ1ZSBpZiB0aGUgYnl0ZXNcCi1nZW5lcmF0ZWQgYXJlIGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuUkFORF9zdGF0dXMKKworUmV0dXJucyAxIGlmIHRoZSBPcGVuU1NMIFBSTkcgaGFzIGJlZW4gc2VlZGVkIHdpdGggZW5vdWdoIGRhdGEgYW5kIDAgaWYgbm90LgorCitJdCBpcyBuZWNlc3NhcnkgdG8gc2VlZCB0aGUgUFJORyB3aXRoIFJBTkRfYWRkKCkgb24gc29tZSBwbGF0Zm9ybXMgYmVmb3JlCit1c2luZyB0aGUgc3NsKCkgZnVuY3Rpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVNTTF9SQU5EX3N0YXR1cyhQeU9iamVjdCAqc2VsZikKK19zc2xfUkFORF9zdGF0dXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmN2VmNTdiYzdkZDFkMWMgaW5wdXQ9OGE3NzRiMDJkMWRjODFmM10qLwogewogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUkFORF9zdGF0dXMoKSk7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9SQU5EX3N0YXR1c19kb2MsCi0iUkFORF9zdGF0dXMoKSAtPiAwIG9yIDFcblwKLVxuXAotUmV0dXJucyAxIGlmIHRoZSBPcGVuU1NMIFBSTkcgaGFzIGJlZW4gc2VlZGVkIHdpdGggZW5vdWdoIGRhdGEgYW5kIDAgaWYgbm90LlxuXAotSXQgaXMgbmVjZXNzYXJ5IHRvIHNlZWQgdGhlIFBSTkcgd2l0aCBSQU5EX2FkZCgpIG9uIHNvbWUgcGxhdGZvcm1zIGJlZm9yZVxuXAotdXNpbmcgdGhlIHNzbCgpIGZ1bmN0aW9uLiIpOwotCiAjaWZkZWYgSEFWRV9SQU5EX0VHRAorLypbY2xpbmljIGlucHV0XQorX3NzbC5SQU5EX2VnZAorICAgIHBhdGg6IG9iamVjdChjb252ZXJ0ZXI9IlB5VW5pY29kZV9GU0NvbnZlcnRlciIpCisgICAgLworCitRdWVyaWVzIHRoZSBlbnRyb3B5IGdhdGhlciBkYWVtb24gKEVHRCkgb24gdGhlIHNvY2tldCBuYW1lZCBieSAncGF0aCcuCisKK1JldHVybnMgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuICBSYWlzZXMgU1NMRXJyb3IgaWYgY29ubmVjdGlvbiB0byBFR0QKK2ZhaWxzIG9yIGlmIGl0IGRvZXMgbm90IHByb3ZpZGUgZW5vdWdoIGRhdGEgdG8gc2VlZCBQUk5HLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfUkFORF9lZ2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3NzbF9SQU5EX2VnZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThlNzI4ZTUwMWUyODU0MWIgaW5wdXQ9MWFlYjdlYjk0ODMxMjE5NV0qLwogewotICAgIFB5T2JqZWN0ICpwYXRoOwotICAgIGludCBieXRlczsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6UkFORF9lZ2QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBieXRlcyA9IFJBTkRfZWdkKFB5Qnl0ZXNfQXNTdHJpbmcocGF0aCkpOworICAgIGludCBieXRlcyA9IFJBTkRfZWdkKFB5Qnl0ZXNfQXNTdHJpbmcocGF0aCkpOwogICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICBpZiAoYnl0ZXMgPT0gLTEpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5U1NMRXJyb3JPYmplY3QsCkBAIC0zMzQ2LDI3ICszOTU3LDIxIEBACiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoYnl0ZXMpOwogfQotCi1QeURvY19TVFJWQVIoUHlTU0xfUkFORF9lZ2RfZG9jLAotIlJBTkRfZWdkKHBhdGgpIC0+IGJ5dGVzXG5cCi1cblwKLVF1ZXJpZXMgdGhlIGVudHJvcHkgZ2F0aGVyIGRhZW1vbiAoRUdEKSBvbiB0aGUgc29ja2V0IG5hbWVkIGJ5ICdwYXRoJy5cblwKLVJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuICBSYWlzZXMgU1NMRXJyb3IgaWYgY29ubmVjdGlvbiB0byBFR0RcblwKLWZhaWxzIG9yIGlmIGl0IGRvZXMgbm90IHByb3ZpZGUgZW5vdWdoIGRhdGEgdG8gc2VlZCBQUk5HLiIpOwogI2VuZGlmIC8qIEhBVkVfUkFORF9FR0QgKi8KIAotI2VuZGlmIC8qIEhBVkVfT1BFTlNTTF9SQU5EICovCiAKIAotUHlEb2NfU1RSVkFSKFB5U1NMX2dldF9kZWZhdWx0X3ZlcmlmeV9wYXRoc19kb2MsCi0iZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkgLT4gdHVwbGVcblwKLVxuXAotUmV0dXJuIHNlYXJjaCBwYXRocyBhbmQgZW52aXJvbm1lbnQgdmFycyB0aGF0IGFyZSB1c2VkIGJ5IFNTTENvbnRleHQnc1xuXAotc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkgdG8gbG9hZCBkZWZhdWx0IENBcy4gVGhlIHZhbHVlcyBhcmVcblwKLSdjZXJ0X2ZpbGVfZW52JywgJ2NlcnRfZmlsZScsICdjZXJ0X2Rpcl9lbnYnLCAnY2VydF9kaXInLiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC5nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMKKworUmV0dXJuIHNlYXJjaCBwYXRocyBhbmQgZW52aXJvbm1lbnQgdmFycyB0aGF0IGFyZSB1c2VkIGJ5IFNTTENvbnRleHQncyBzZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKSB0byBsb2FkIGRlZmF1bHQgQ0FzLgorCitUaGUgdmFsdWVzIGFyZSAnY2VydF9maWxlX2VudicsICdjZXJ0X2ZpbGUnLCAnY2VydF9kaXJfZW52JywgJ2NlcnRfZGlyJy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5U1NMX2dldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyhQeU9iamVjdCAqc2VsZikKK19zc2xfZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01YTI4MjBjZTdlMzMwNGQzIGlucHV0PTUyMTBjOTUzZDk4YzNlYjVdKi8KIHsKICAgICBQeU9iamVjdCAqb2ZpbGVfZW52ID0gTlVMTDsKICAgICBQeU9iamVjdCAqb2ZpbGUgPSBOVUxMOwpAQCAtMzQyNSwyNiArNDAzMCwyNCBAQAogICAgIH0KIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX3R4dDJvYmpfZG9jLAotInR4dDJvYmoodHh0LCBuYW1lPUZhbHNlKSAtPiAobmlkLCBzaG9ydG5hbWUsIGxvbmduYW1lLCBvaWQpXG5cCi1cblwKLUxvb2t1cCBOSUQsIHNob3J0IG5hbWUsIGxvbmcgbmFtZSBhbmQgT0lEIG9mIGFuIEFTTjFfT0JKRUNULiBCeSBkZWZhdWx0XG5cCi1vYmplY3RzIGFyZSBsb29rZWQgdXAgYnkgT0lELiBXaXRoIG5hbWU9VHJ1ZSBzaG9ydCBhbmQgbG9uZyBuYW1lIGFyZSBhbHNvXG5cCi1tYXRjaGVkLiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC50eHQyb2JqCisgICAgdHh0OiBzdHIKKyAgICBuYW1lOiBib29sID0gRmFsc2UKIAotc3RhdGljIFB5T2JqZWN0KgotUHlTU0xfdHh0Mm9iaihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorTG9va3VwIE5JRCwgc2hvcnQgbmFtZSwgbG9uZyBuYW1lIGFuZCBPSUQgb2YgYW4gQVNOMV9PQkpFQ1QuCisKK0J5IGRlZmF1bHQgb2JqZWN0cyBhcmUgbG9va2VkIHVwIGJ5IE9JRC4gV2l0aCBuYW1lPVRydWUgc2hvcnQgYW5kCitsb25nIG5hbWUgYXJlIGFsc28gbWF0Y2hlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfdHh0Mm9ial9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKnR4dCwgaW50IG5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmFlMmMzMDUzMWI4ODA5ZiBpbnB1dD0xYzFlN2QwYWE3YzQ4NjAyXSovCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7InR4dCIsICJuYW1lIiwgTlVMTH07CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgY2hhciAqdHh0OwotICAgIGludCBuYW1lID0gMDsKICAgICBBU04xX09CSkVDVCAqb2JqOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInN8cDp0eHQyb2JqIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZ0eHQsICZuYW1lKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgb2JqID0gT0JKX3R4dDJvYmoodHh0LCBuYW1lID8gMCA6IDEpOwogICAgIGlmIChvYmogPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgInVua25vd24gb2JqZWN0ICclLjEwMHMnIiwgdHh0KTsKQEAgLTM0NTUsMjEgKzQwNTgsMjEgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QeURvY19TVFJWQVIoUHlTU0xfbmlkMm9ial9kb2MsCi0ibmlkMm9iaihuaWQpIC0+IChuaWQsIHNob3J0bmFtZSwgbG9uZ25hbWUsIG9pZClcblwKLVxuXAotTG9va3VwIE5JRCwgc2hvcnQgbmFtZSwgbG9uZyBuYW1lIGFuZCBPSUQgb2YgYW4gQVNOMV9PQkpFQ1QgYnkgTklELiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC5uaWQyb2JqCisgICAgbmlkOiBpbnQKKyAgICAvCiAKLXN0YXRpYyBQeU9iamVjdCoKLVB5U1NMX25pZDJvYmooUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorTG9va3VwIE5JRCwgc2hvcnQgbmFtZSwgbG9uZyBuYW1lIGFuZCBPSUQgb2YgYW4gQVNOMV9PQkpFQ1QgYnkgTklELgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9uaWQyb2JqX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG5pZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZGIxZGY4OWU0NGJhZGI4IGlucHV0PTUxNzg3YTNiZWU3ZDhmOThdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBpbnQgbmlkOwogICAgIEFTTjFfT0JKRUNUICpvYmo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6bmlkMm9iaiIsICZuaWQpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KICAgICBpZiAobmlkIDwgTklEX3VuZGVmKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiTklEIG11c3QgYmUgcG9zaXRpdmUuIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzU2OSwzMCArNDE3MiwyOCBAQAogICAgIHJldHVybiByZXR2YWw7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9lbnVtX2NlcnRpZmljYXRlc19kb2MsCi0iZW51bV9jZXJ0aWZpY2F0ZXMoc3RvcmVfbmFtZSkgLT4gW11cblwKLVxuXAotUmV0cmlldmUgY2VydGlmaWNhdGVzIGZyb20gV2luZG93cycgY2VydCBzdG9yZS4gc3RvcmVfbmFtZSBtYXkgYmUgb25lIG9mXG5cCi0nQ0EnLCAnUk9PVCcgb3IgJ01ZJy4gVGhlIHN5c3RlbSBtYXkgcHJvdmlkZSBtb3JlIGNlcnQgc3RvcmFnZXMsIHRvby5cblwKLVRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbGlzdCBvZiAoYnl0ZXMsIGVuY29kaW5nX3R5cGUsIHRydXN0KSB0dXBsZXMuIFRoZVxuXAotZW5jb2RpbmdfdHlwZSBmbGFnIGNhbiBiZSBpbnRlcnByZXRlZCB3aXRoIFg1MDlfQVNOX0VOQ09ESU5HIG9yXG5cCi1QS0NTXzdfQVNOX0VOQ09ESU5HLiBUaGUgdHJ1c3Qgc2V0dGluZyBpcyBlaXRoZXIgYSBzZXQgb2YgT0lEcyBvciB0aGVcblwKLWJvb2xlYW4gVHJ1ZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuZW51bV9jZXJ0aWZpY2F0ZXMKKyAgICBzdG9yZV9uYW1lOiBzdHIKKworUmV0cmlldmUgY2VydGlmaWNhdGVzIGZyb20gV2luZG93cycgY2VydCBzdG9yZS4KKworc3RvcmVfbmFtZSBtYXkgYmUgb25lIG9mICdDQScsICdST09UJyBvciAnTVknLiAgVGhlIHN5c3RlbSBtYXkgcHJvdmlkZQorbW9yZSBjZXJ0IHN0b3JhZ2VzLCB0b28uICBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgKGJ5dGVzLAorZW5jb2RpbmdfdHlwZSwgdHJ1c3QpIHR1cGxlcy4gIFRoZSBlbmNvZGluZ190eXBlIGZsYWcgY2FuIGJlIGludGVycHJldGVkCit3aXRoIFg1MDlfQVNOX0VOQ09ESU5HIG9yIFBLQ1NfN19BU05fRU5DT0RJTkcuIFRoZSB0cnVzdCBzZXR0aW5nIGlzIGVpdGhlcgorYSBzZXQgb2YgT0lEcyBvciB0aGUgYm9vbGVhbiBUcnVlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfZW51bV9jZXJ0aWZpY2F0ZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19zc2xfZW51bV9jZXJ0aWZpY2F0ZXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpzdG9yZV9uYW1lKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWNjNGViYzEwYjhhZGFjZmMgaW5wdXQ9OTE1ZjYwZDcwNDYxZWE0ZV0qLwogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJzdG9yZV9uYW1lIiwgTlVMTH07Ci0gICAgY2hhciAqc3RvcmVfbmFtZTsKICAgICBIQ0VSVFNUT1JFIGhTdG9yZSA9IE5VTEw7CiAgICAgUENDRVJUX0NPTlRFWFQgcENlcnRDdHggPSBOVUxMOwogICAgIFB5T2JqZWN0ICprZXl1c2FnZSA9IE5VTEwsICpjZXJ0ID0gTlVMTCwgKmVuYyA9IE5VTEwsICp0dXAgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInM6ZW51bV9jZXJ0aWZpY2F0ZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN0b3JlX25hbWUpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KICAgICByZXN1bHQgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTM2NTgsMjkgKzQyNTksMjcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QeURvY19TVFJWQVIoUHlTU0xfZW51bV9jcmxzX2RvYywKLSJlbnVtX2NybHMoc3RvcmVfbmFtZSkgLT4gW11cblwKLVxuXAotUmV0cmlldmUgQ1JMcyBmcm9tIFdpbmRvd3MnIGNlcnQgc3RvcmUuIHN0b3JlX25hbWUgbWF5IGJlIG9uZSBvZlxuXAotJ0NBJywgJ1JPT1QnIG9yICdNWScuIFRoZSBzeXN0ZW0gbWF5IHByb3ZpZGUgbW9yZSBjZXJ0IHN0b3JhZ2VzLCB0b28uXG5cCi1UaGUgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgKGJ5dGVzLCBlbmNvZGluZ190eXBlKSB0dXBsZXMuIFRoZVxuXAotZW5jb2RpbmdfdHlwZSBmbGFnIGNhbiBiZSBpbnRlcnByZXRlZCB3aXRoIFg1MDlfQVNOX0VOQ09ESU5HIG9yXG5cCi1QS0NTXzdfQVNOX0VOQ09ESU5HLiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC5lbnVtX2NybHMKKyAgICBzdG9yZV9uYW1lOiBzdHIKKworUmV0cmlldmUgQ1JMcyBmcm9tIFdpbmRvd3MnIGNlcnQgc3RvcmUuCisKK3N0b3JlX25hbWUgbWF5IGJlIG9uZSBvZiAnQ0EnLCAnUk9PVCcgb3IgJ01ZJy4gIFRoZSBzeXN0ZW0gbWF5IHByb3ZpZGUKK21vcmUgY2VydCBzdG9yYWdlcywgdG9vLiAgVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IG9mIChieXRlcywKK2VuY29kaW5nX3R5cGUpIHR1cGxlcy4gIFRoZSBlbmNvZGluZ190eXBlIGZsYWcgY2FuIGJlIGludGVycHJldGVkIHdpdGgKK1g1MDlfQVNOX0VOQ09ESU5HIG9yIFBLQ1NfN19BU05fRU5DT0RJTkcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVNTTF9lbnVtX2NybHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19zc2xfZW51bV9jcmxzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqc3RvcmVfbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NjM0OTBhMmFhMWM1MGQ1IGlucHV0PWExZjFkNzYyOWYxYzVkM2RdKi8KIHsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsic3RvcmVfbmFtZSIsIE5VTEx9OwotICAgIGNoYXIgKnN0b3JlX25hbWU7CiAgICAgSENFUlRTVE9SRSBoU3RvcmUgPSBOVUxMOwogICAgIFBDQ1JMX0NPTlRFWFQgcENybEN0eCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNybCA9IE5VTEwsICplbmMgPSBOVUxMLCAqdHVwID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJzOmVudW1fY3JscyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3RvcmVfbmFtZSkpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIHJlc3VsdCA9IFB5TGlzdF9OZXcoMCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzczOCwzNiArNDMzNywxOCBAQAogI2VuZGlmIC8qIF9NU0NfVkVSICovCiAKIC8qIExpc3Qgb2YgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlLiAqLwotCiBzdGF0aWMgUHlNZXRob2REZWYgUHlTU0xfbWV0aG9kc1tdID0gewotICAgIHsiX3Rlc3RfZGVjb2RlX2NlcnQiLCAgICAgICBQeVNTTF90ZXN0X2RlY29kZV9jZXJ0aWZpY2F0ZSwKLSAgICAgTUVUSF9WQVJBUkdTfSwKLSNpZmRlZiBIQVZFX09QRU5TU0xfUkFORAotICAgIHsiUkFORF9hZGQiLCAgICAgICAgICAgIFB5U1NMX1JBTkRfYWRkLCBNRVRIX1ZBUkFSR1MsCi0gICAgIFB5U1NMX1JBTkRfYWRkX2RvY30sCi0gICAgeyJSQU5EX2J5dGVzIiwgICAgICAgICAgUHlTU0xfUkFORF9ieXRlcywgTUVUSF9WQVJBUkdTLAotICAgICBQeVNTTF9SQU5EX2J5dGVzX2RvY30sCi0gICAgeyJSQU5EX3BzZXVkb19ieXRlcyIsICAgUHlTU0xfUkFORF9wc2V1ZG9fYnl0ZXMsIE1FVEhfVkFSQVJHUywKLSAgICAgUHlTU0xfUkFORF9wc2V1ZG9fYnl0ZXNfZG9jfSwKLSNpZmRlZiBIQVZFX1JBTkRfRUdECi0gICAgeyJSQU5EX2VnZCIsICAgICAgICAgICAgUHlTU0xfUkFORF9lZ2QsIE1FVEhfVkFSQVJHUywKLSAgICAgUHlTU0xfUkFORF9lZ2RfZG9jfSwKLSNlbmRpZgotICAgIHsiUkFORF9zdGF0dXMiLCAgICAgICAgIChQeUNGdW5jdGlvbilQeVNTTF9SQU5EX3N0YXR1cywgTUVUSF9OT0FSR1MsCi0gICAgIFB5U1NMX1JBTkRfc3RhdHVzX2RvY30sCi0jZW5kaWYKLSAgICB7ImdldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyIsIChQeUNGdW5jdGlvbilQeVNTTF9nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMsCi0gICAgIE1FVEhfTk9BUkdTLCBQeVNTTF9nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNfZG9jfSwKLSNpZmRlZiBfTVNDX1ZFUgotICAgIHsiZW51bV9jZXJ0aWZpY2F0ZXMiLCAoUHlDRnVuY3Rpb24pUHlTU0xfZW51bV9jZXJ0aWZpY2F0ZXMsCi0gICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIFB5U1NMX2VudW1fY2VydGlmaWNhdGVzX2RvY30sCi0gICAgeyJlbnVtX2NybHMiLCAoUHlDRnVuY3Rpb24pUHlTU0xfZW51bV9jcmxzLAotICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBQeVNTTF9lbnVtX2NybHNfZG9jfSwKLSNlbmRpZgotICAgIHsidHh0Mm9iaiIsIChQeUNGdW5jdGlvbilQeVNTTF90eHQyb2JqLAotICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBQeVNTTF90eHQyb2JqX2RvY30sCi0gICAgeyJuaWQyb2JqIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX25pZDJvYmosCi0gICAgIE1FVEhfVkFSQVJHUywgUHlTU0xfbmlkMm9ial9kb2N9LAorICAgIF9TU0xfX1RFU1RfREVDT0RFX0NFUlRfTUVUSE9EREVGCisgICAgX1NTTF9SQU5EX0FERF9NRVRIT0RERUYKKyAgICBfU1NMX1JBTkRfQllURVNfTUVUSE9EREVGCisgICAgX1NTTF9SQU5EX1BTRVVET19CWVRFU19NRVRIT0RERUYKKyAgICBfU1NMX1JBTkRfRUdEX01FVEhPRERFRgorICAgIF9TU0xfUkFORF9TVEFUVVNfTUVUSE9EREVGCisgICAgX1NTTF9HRVRfREVGQVVMVF9WRVJJRllfUEFUSFNfTUVUSE9EREVGCisgICAgX1NTTF9FTlVNX0NFUlRJRklDQVRFU19NRVRIT0RERUYKKyAgICBfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYKKyAgICBfU1NMX1RYVDJPQkpfTUVUSE9EREVGCisgICAgX1NTTF9OSUQyT0JKX01FVEhPRERFRgogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAgLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTM5MDcsNiArNDQ4OCw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5U1NMU29ja2V0X1R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlTU0xNZW1vcnlCSU9fVHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJl9zc2xtb2R1bGUpOwogICAgIGlmIChtID09IE5VTEwpCkBAIC0zOTcwLDYgKzQ1NTMsOSBAQAogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX1NTTFNvY2tldCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZQeVNTTFNvY2tldF9UeXBlKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk1lbW9yeUJJTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZQeVNTTE1lbW9yeUJJT19UeXBlKSAhPSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU1NMX0VSUk9SX1pFUk9fUkVUVVJOIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfRVJST1JfWkVST19SRVRVUk4pOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTU0xfRVJST1JfV0FOVF9SRUFEIiwKQEAgLTQxMTAsMTEgKzQ2OTYsNyBAQAogICAgIFB5X0lOQ1JFRihyKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkhBU19TTkkiLCByKTsKIAotI2lmIEhBVkVfT1BFTlNTTF9GSU5JU0hFRAogICAgIHIgPSBQeV9UcnVlOwotI2Vsc2UKLSAgICByID0gUHlfRmFsc2U7Ci0jZW5kaWYKICAgICBQeV9JTkNSRUYocik7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfVExTX1VOSVFVRSIsIHIpOwogCkBAIC00MTM0LDYgKzQ3MTYsMTQgQEAKICAgICBQeV9JTkNSRUYocik7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfTlBOIiwgcik7CiAKKyNpZmRlZiBIQVZFX0FMUE4KKyAgICByID0gUHlfVHJ1ZTsKKyNlbHNlCisgICAgciA9IFB5X0ZhbHNlOworI2VuZGlmCisgICAgUHlfSU5DUkVGKHIpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiSEFTX0FMUE4iLCByKTsKKwogICAgIC8qIE1hcHBpbmdzIGZvciBlcnJvciBjb2RlcyAqLwogICAgIGVycl9jb2Rlc190b19uYW1lcyA9IFB5RGljdF9OZXcoKTsKICAgICBlcnJfbmFtZXNfdG9fY29kZXMgPSBQeURpY3RfTmV3KCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zdGF0LmMgYi9Nb2R1bGVzL19zdGF0LmMKaW5kZXggYTMwMWZhOC4uZjZjYjMwMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3RhdC5jCisrKyBiL01vZHVsZXMvX3N0YXQuYwpAQCAtMjcsOSArMjcsMjEgQEAKICNlbmRpZiAvKiBIQVZFX1NZU19TVEFUX0ggKi8KIAogI2lmZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IG1vZGVfdDsKKworLyogRklMRV9BVFRSSUJVVEVfSU5URUdSSVRZX1NUUkVBTSBhbmQgRklMRV9BVFRSSUJVVEVfTk9fU0NSVUJfREFUQQorICAgYXJlIG5vdCBwcmVzZW50IGluIFZDMjAxMCwgc28gZGVmaW5lIHRoZW0gbWFudWFsbHkgKi8KKyNpZm5kZWYgRklMRV9BVFRSSUJVVEVfSU5URUdSSVRZX1NUUkVBTQorIyAgZGVmaW5lIEZJTEVfQVRUUklCVVRFX0lOVEVHUklUWV9TVFJFQU0gMHg4MDAwCiAjZW5kaWYKIAorI2lmbmRlZiBGSUxFX0FUVFJJQlVURV9OT19TQ1JVQl9EQVRBCisjICBkZWZpbmUgRklMRV9BVFRSSUJVVEVfTk9fU0NSVUJfREFUQSAweDIwMDAwCisjZW5kaWYKKworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKwogLyogRnJvbSBQeXRob24ncyBzdGF0LnB5ICovCiAjaWZuZGVmIFNfSU1PREUKICMgIGRlZmluZSBTX0lNT0RFIDA3Nzc3CkBAIC00NzMsNiArNDg1LDEwIEBACiBTVF9BVElNRVxuXAogU1RfTVRJTUVcblwKIFNUX0NUSU1FXG5cCitcbiIKKworIkZJTEVfQVRUUklCVVRFXyo6IFdpbmRvd3MgZmlsZSBhdHRyaWJ1dGUgY29uc3RhbnRzXG5cCisgICAgICAgICAgICAgICAgICAgKG9ubHkgcHJlc2VudCBvbiBXaW5kb3dzKVxuXAogIik7CiAKIApAQCAtNTU1LDYgKzU3MSwyNiBAQAogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU1RfTVRJTUUiLCA4KSkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTVF9DVElNRSIsIDkpKSByZXR1cm4gTlVMTDsKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfQVJDSElWRSkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9DT01QUkVTU0VEKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX0RFVklDRSkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfRU5DUllQVEVEKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX0hJRERFTikpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9JTlRFR1JJVFlfU1RSRUFNKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX05PUk1BTCkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9OT1RfQ09OVEVOVF9JTkRFWEVEKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX05PX1NDUlVCX0RBVEEpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfT0ZGTElORSkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9SRUFET05MWSkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5UKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX1NQQVJTRV9GSUxFKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX1NZU1RFTSkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9URU1QT1JBUlkpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfVklSVFVBTCkpIHJldHVybiBOVUxMOworI2VuZGlmCisKICAgICByZXR1cm4gbTsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3RydWN0LmMgYi9Nb2R1bGVzL19zdHJ1Y3QuYwppbmRleCBhZDk5NTllLi4xZjFiYjkzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zdHJ1Y3QuYworKysgYi9Nb2R1bGVzL19zdHJ1Y3QuYwpAQCAtODUsOCArODUsNiBAQAogI2RlZmluZSBCT09MX0FMSUdOIDAKICNlbmRpZgogCi0jZGVmaW5lIFNUUklOR0lGWSh4KSAgICAjeAotCiAjaWZkZWYgX19wb3dlcmMKICNwcmFnbWEgb3B0aW9ucyBhbGlnbj1yZXNldAogI2VuZGlmCkBAIC01NDYsOCArNTQ0LDggQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmICh4IDwgU0hSVF9NSU4gfHwgeCA+IFNIUlRfTUFYKXsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFN0cnVjdEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInNob3J0IGZvcm1hdCByZXF1aXJlcyAiIFNUUklOR0lGWShTSFJUX01JTikKLSAgICAgICAgICAgICAgICAgICAgICAgICIgPD0gbnVtYmVyIDw9ICIgU1RSSU5HSUZZKFNIUlRfTUFYKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAic2hvcnQgZm9ybWF0IHJlcXVpcmVzICIgUHlfU1RSSU5HSUZZKFNIUlRfTUlOKQorICAgICAgICAgICAgICAgICAgICAgICAgIiA8PSBudW1iZXIgPD0gIiBQeV9TVFJJTkdJRlkoU0hSVF9NQVgpKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICB5ID0gKHNob3J0KXg7CkBAIC01NjQsNyArNTYyLDggQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmICh4IDwgMCB8fCB4ID4gVVNIUlRfTUFYKXsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFN0cnVjdEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInVzaG9ydCBmb3JtYXQgcmVxdWlyZXMgMCA8PSBudW1iZXIgPD0gIiBTVFJJTkdJRlkoVVNIUlRfTUFYKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAidXNob3J0IGZvcm1hdCByZXF1aXJlcyAwIDw9IG51bWJlciA8PSAiCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9TVFJJTkdJRlkoVVNIUlRfTUFYKSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgeSA9ICh1bnNpZ25lZCBzaG9ydCl4OwpAQCAtMTI2NCw3ICsxMjYzLDggQEAKICAgICBjb25zdCBjaGFyICpzOwogICAgIGNvbnN0IGNoYXIgKmZtdDsKICAgICBjaGFyIGM7Ci0gICAgUHlfc3NpemVfdCBzaXplLCBsZW4sIG5jb2RlcywgbnVtLCBpdGVtc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHNpemUsIGxlbiwgbnVtLCBpdGVtc2l6ZTsKKyAgICBzaXplX3QgbmNvZGVzOwogCiAgICAgZm10ID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+c19mb3JtYXQpOwogCkBAIC0xMzIwLDcgKzEzMjAsNyBAQAogICAgIH0KIAogICAgIC8qIGNoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgIGlmICgobmNvZGVzICsgMSkgPiAoUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoZm9ybWF0Y29kZSkpKSB7CisgICAgaWYgKChuY29kZXMgKyAxKSA+ICgoc2l6ZV90KVBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKGZvcm1hdGNvZGUpKSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMTQzNyw4ICsxNDM3LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIFB5X0NMRUFSKHNvc2VsZi0+c19mb3JtYXQpOwotICAgIHNvc2VsZi0+c19mb3JtYXQgPSBvX2Zvcm1hdDsKKyAgICBQeV9TRVRSRUYoc29zZWxmLT5zX2Zvcm1hdCwgb19mb3JtYXQpOwogCiAgICAgcmV0ID0gcHJlcGFyZV9zKHNvc2VsZik7CiAgICAgcmV0dXJuIHJldDsKQEAgLTE5MjQsNyArMTkyMyw3IEBACiAgICAgUHlfc3NpemVfdCBzaXplOwogICAgIGZvcm1hdGNvZGUgKmNvZGU7CiAKLSAgICBzaXplID0gc2l6ZW9mKFB5U3RydWN0T2JqZWN0KSArIHNpemVvZihmb3JtYXRjb2RlKTsKKyAgICBzaXplID0gX1B5T2JqZWN0X1NJWkUoUHlfVFlQRShzZWxmKSkgKyBzaXplb2YoZm9ybWF0Y29kZSk7CiAgICAgZm9yIChjb2RlID0gc2VsZi0+c19jb2RlczsgY29kZS0+Zm10ZGVmICE9IE5VTEw7IGNvZGUrKykKICAgICAgICAgc2l6ZSArPSBzaXplb2YoZm9ybWF0Y29kZSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzaXplKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Rlc3RidWZmZXIuYyBiL01vZHVsZXMvX3Rlc3RidWZmZXIuYwppbmRleCAxNzZkZjdjLi40M2RiOGE4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL190ZXN0YnVmZmVyLmMKKysrIGIvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jCkBAIC0xOTAsNyArMTkwLDcgQEAKICAgICAgICAgZWx0LT5wcmV2LT5uZXh0ID0gZWx0LT5uZXh0OwogICAgIGVsc2UKICAgICAgICAgbmQtPmhlYWQgPSBlbHQtPm5leHQ7Ci0gICAgCisKICAgICBpZiAoZWx0LT5uZXh0KQogICAgICAgICBlbHQtPm5leHQtPnByZXYgPSBlbHQtPnByZXY7CiAKQEAgLTc2Nyw3ICs3NjcsNyBAQAogICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwogICB8IGJhc2UucmVhZG9ubHkgICB8ICAgICAwICAgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAogICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwotICB8IGJhc2UuZm9ybWF0ICAgICB8ICAgIE5VTEwgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfCAgCisgIHwgYmFzZS5mb3JtYXQgICAgIHwgICAgTlVMTCAgIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CiAgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCiAgIHwgYmFzZS5uZGltICAgICAgIHwgICAgIDEgICAgIHwgICAgICAxICAgICAgfCAgICAgICBPSyAgICAgICB8CiAgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCkBAIC0xNTEwLDYgKzE1MTAsMTkgQEAKICAgICAgICAgdmlldy0+c2hhcGUgPSBOVUxMOwogICAgIH0KIAorICAgIC8qIEFzY2VydGFpbiB0aGF0IHRoZSBuZXcgYnVmZmVyIGhhcyB0aGUgc2FtZSBjb250aWd1aXR5IGFzIHRoZSBleHBvcnRlciAqLworICAgIGlmIChORF9DX0NPTlRJR1VPVVMoYmFzZWZsYWdzKSAhPSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXModmlldywgJ0MnKSB8fAorICAgICAgICAvKiBza2lwIGNhc3QgdG8gMS1kICovCisgICAgICAgICh2aWV3LT5mb3JtYXQgIT0gTlVMTCAmJiB2aWV3LT5zaGFwZSAhPSBOVUxMICYmCisgICAgICAgICBORF9GT1JUUkFOX0NPTlRJR1VPVVMoYmFzZWZsYWdzKSAhPSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXModmlldywgJ0YnKSkgfHwKKyAgICAgICAgLyogY2FzdCB0byAxLWQgKi8KKyAgICAgICAgKHZpZXctPmZvcm1hdCA9PSBOVUxMICYmIHZpZXctPnNoYXBlID09IE5VTEwgJiYKKyAgICAgICAgICFQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXModmlldywgJ0YnKSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgIm5kYXJyYXk6IGNvbnRpZ3VpdHkgbWlzbWF0Y2ggaW4gZ2V0YnVmKCkiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKICAgICB2aWV3LT5vYmogPSAoUHlPYmplY3QgKilzZWxmOwogICAgIFB5X0lOQ1JFRih2aWV3LT5vYmopOwogICAgIHNlbGYtPmhlYWQtPmV4cG9ydHMrKzsKQEAgLTIwMDUsNyArMjAxOCw3IEBACiB7CiAgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CiAKLSAgICBpZiAoYmFzZS0+b2JqID09IE5VTEwpIHsgCisgICAgaWYgKGJhc2UtPm9iaiA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KICAgICBQeV9JTkNSRUYoYmFzZS0+b2JqKTsKQEAgLTIyMDYsNiArMjIxOSw4IEBACiAgICAgZm9yIChpID0gMDsgaSA8IGJhc2UtPm5kaW07IGkrKykKICAgICAgICAgYmFzZS0+c3Vib2Zmc2V0c1tpXSA9IC0xOwogCisgICAgbmQtPmhlYWQtPmZsYWdzICY9IH4oTkRfQ3xORF9GT1JUUkFOKTsKKwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC0yNDY5LDEzICsyNDg0LDEyIEBACiB7CiAgICAgUHlfc3NpemVfdCBpOwogCi0gICAgaWYgKG5kaW0gPT0gMSAmJiBzaGFwZSAmJiBzaGFwZVswXSA9PSAxKSB7Ci0gICAgICAgIC8qIFRoaXMgaXMgZm9yIGNvbXBhcmluZyBzdHJpZGVzOiBGb3IgZXhhbXBsZSwgdGhlIGFycmF5Ci0gICAgICAgICAgIFsxNzVdLCBzaGFwZT1bMV0sIHN0cmlkZXM9Wy01XSBpcyBjb25zaWRlcmVkIGNvbnRpZ3VvdXMuICovCi0gICAgICAgIHJldHVybiAxOwotICAgIH0KIAogICAgIGZvciAoaSA9IDA7IGkgPCBuZGltOyBpKyspIHsKKyAgICAgICAgaWYgKHNoYXBlICYmIHNoYXBlW2ldIDw9IDEpIHsKKyAgICAgICAgICAgIC8qIHN0cmlkZXMgY2FuIGRpZmZlciBpZiB0aGUgZGltZW5zaW9uIGlzIGxlc3MgdGhhbiAyICovCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogICAgICAgICBpZiAoYTFbaV0gIT0gYTJbaV0pIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0yNTQ0LDcgKzI1NTgsNyBAQAogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnYxKTsKICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2Mik7CiAKLSAgICByZXQgPSBlcXVhbCA/IFB5X1RydWUgOiBQeV9GYWxzZTsgCisgICAgcmV0ID0gZXF1YWwgPyBQeV9UcnVlIDogUHlfRmFsc2U7CiAgICAgUHlfSU5DUkVGKHJldCk7CiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTI1NTUsMzAgKzI1NjksMzUgQEAKICAgICBQeU9iamVjdCAqb2JqOwogICAgIFB5T2JqZWN0ICpvcmRlcjsKICAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLSAgICBQeV9idWZmZXIgdmlldzsKKyAgICBQeV9idWZmZXIgdmlldywgKmJhc2U7CiAgICAgY2hhciBvcmQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PIiwgJm9iaiwgJm9yZGVyKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKG9iaiwgJnZpZXcsIFB5QlVGX0ZVTExfUk8pIDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgImlzX2NvbnRpZ3VvdXM6IG9iamVjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGJ1ZmZlciAiCi0gICAgICAgICAgICAicHJvdG9jb2wiKTsKKyAgICBvcmQgPSBnZXRfYXNjaWlfb3JkZXIob3JkZXIpOworICAgIGlmIChvcmQgPT0gQ0hBUl9NQVgpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgb3JkID0gZ2V0X2FzY2lpX29yZGVyKG9yZGVyKTsKLSAgICBpZiAob3JkID09IENIQVJfTUFYKSB7Ci0gICAgICAgIGdvdG8gcmVsZWFzZTsKKyAgICBpZiAoTkRBcnJheV9DaGVjayhvYmopKSB7CisgICAgICAgIC8qIFNraXAgdGhlIGJ1ZmZlciBwcm90b2NvbCB0byBjaGVjayBzaW1wbGUgZXRjLiBidWZmZXJzIGRpcmVjdGx5LiAqLworICAgICAgICBiYXNlID0gJigoTkRBcnJheU9iamVjdCAqKW9iaiktPmhlYWQtPmJhc2U7CisgICAgICAgIHJldCA9IFB5QnVmZmVyX0lzQ29udGlndW91cyhiYXNlLCBvcmQpID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihvYmosICZ2aWV3LCBQeUJVRl9GVUxMX1JPKSA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgImlzX2NvbnRpZ3VvdXM6IG9iamVjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGJ1ZmZlciAiCisgICAgICAgICAgICAgICAgInByb3RvY29sIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXQgPSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJnZpZXcsIG9yZCkgPyBQeV9UcnVlIDogUHlfRmFsc2U7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwogICAgIH0KIAotICAgIHJldCA9IFB5QnVmZmVyX0lzQ29udGlndW91cygmdmlldywgb3JkKSA/IFB5X1RydWUgOiBQeV9GYWxzZTsKICAgICBQeV9JTkNSRUYocmV0KTsKLQotcmVsZWFzZToKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKICAgICByZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jIGIvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYwppbmRleCA4ZWJlOTcwLi45YTAzNjQ4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKQEAgLTEyLDYgKzEyLDExIEBACiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAjaW5jbHVkZSAiZGF0ZXRpbWUuaCIKICNpbmNsdWRlICJtYXJzaGFsLmgiCisjaW5jbHVkZSA8c2lnbmFsLmg+CisKKyNpZmRlZiBNU19XSU5ET1dTCisjICBpbmNsdWRlIDx3aW5zb2NrMi5oPiAgICAgICAgIC8qIHN0cnVjdCB0aW1ldmFsICovCisjZW5kaWYKIAogI2lmZGVmIFdJVEhfVEhSRUFECiAjaW5jbHVkZSAicHl0aHJlYWQuaCIKQEAgLTY4LDYgKzczLDEwIEBACiBzdGF0aWMgUHlPYmplY3QqCiB0ZXN0X3NpemVvZl9jX3R5cGVzKFB5T2JqZWN0ICpzZWxmKQogeworI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoX19HTlVDX18gPiA0KSB8fCAoKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+IDUpKSkKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3R5cGUtbGltaXRzIgorI2VuZGlmCiAjZGVmaW5lIENIRUNLX1NJWkVPRihUWVBFLCBFWFBFQ1RFRCkgICAgICAgICBcCiAgICAgaWYgKEVYUEVDVEVEICE9IHNpemVvZihUWVBFKSkgIHsgICAgICAgICBcCiAgICAgICAgIFB5RXJyX0Zvcm1hdChUZXN0RXJyb3IsICAgICAgICAgICAgICBcCkBAIC0xMjUsNiArMTM0LDkgQEAKICN1bmRlZiBJU19TSUdORUQKICN1bmRlZiBDSEVDS19TSUdORVNTCiAjdW5kZWYgQ0hFQ0tfU0laRU9GCisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKChfX0dOVUNfXyA+IDQpIHx8ICgoX19HTlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fID4gNSkpKQorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgogfQogCiAKQEAgLTE3MTksNyArMTczMSw3IEBACiAgICAgICAgICAgICAgey0weGZmZmZMLCAxNiwgLTF9LAogICAgICAgICAgICAgIHsweGZmZmZmZmZMLCAyOCwgMX0sCiAgICAgICAgICAgICAgey0weGZmZmZmZmZMLCAyOCwgLTF9fTsKLSAgICBpbnQgaTsKKyAgICBzaXplX3QgaTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBQeV9BUlJBWV9MRU5HVEgodGVzdGNhc2VzKTsgKytpKSB7CiAgICAgICAgIHNpemVfdCBuYml0czsKQEAgLTI0ODAsNyArMjQ5Miw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcigmaW5mbyk7CiB9Ci0gCisKIHN0YXRpYyBQeU9iamVjdCAqCiB0ZXN0X2Zyb21fY29udGlndW91cyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QgKm5vYXJncykKIHsKQEAgLTI1MzEsNiArMjU0Myw1OCBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisjaWYgKGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSkgJiYgZGVmaW5lZChfX0dOVUNfXykKK2V4dGVybiBQeVR5cGVPYmplY3QgX1B5Qnl0ZXNJT0J1ZmZlcl9UeXBlOworCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9wZXAzMTE4X29ic29sZXRlX3dyaXRlX2xvY2tzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQoreworICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9ICZfUHlCeXRlc0lPQnVmZmVyX1R5cGU7CisgICAgUHlPYmplY3QgKmI7CisgICAgY2hhciAqZHVtbXlbMV07CisgICAgaW50IHJldCwgbWF0Y2g7CisKKyAgICAvKiBQeUJ1ZmZlcl9GaWxsSW5mbygpICovCisgICAgcmV0ID0gUHlCdWZmZXJfRmlsbEluZm8oTlVMTCwgTlVMTCwgZHVtbXksIDEsIDAsIFB5QlVGX1NJTVBMRSk7CisgICAgbWF0Y2ggPSBQeUVycl9PY2N1cnJlZCgpICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQnVmZmVyRXJyb3IpOworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgaWYgKHJldCAhPSAtMSB8fCBtYXRjaCA9PSAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgLyogYnl0ZXNpb2J1Zl9nZXRidWZmZXIoKSAqLworICAgIGIgPSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAoYiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldCA9IFB5T2JqZWN0X0dldEJ1ZmZlcihiLCBOVUxMLCBQeUJVRl9TSU1QTEUpOworICAgIFB5X0RFQ1JFRihiKTsKKyAgICBtYXRjaCA9IFB5RXJyX09jY3VycmVkKCkgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19CdWZmZXJFcnJvcik7CisgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBpZiAocmV0ICE9IC0xIHx8IG1hdGNoID09IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKKworZXJyb3I6CisgICAgUHlFcnJfU2V0U3RyaW5nKFRlc3RFcnJvciwKKyAgICAgICAgInRlc3RfcGVwMzExOF9vYnNvbGV0ZV93cml0ZV9sb2NrczogZmFpbHVyZSIpOworICAgIHJldHVybiBOVUxMOworfQorI2VuZGlmCisKKy8qIFRoaXMgdGVzdHMgZnVuY3Rpb25zIHRoYXQgaGlzdG9yaWNhbGx5IHN1cHBvcnRlZCB3cml0ZSBsb2Nrcy4gIEl0IGlzCisgICB3cm9uZyB0byBjYWxsIGdldGJ1ZmZlcigpIHdpdGggdmlldz09TlVMTCBhbmQgYSBjb21wbGlhbnQgZ2V0YnVmZmVycHJvYworICAgaXMgZW50aXRsZWQgdG8gc2VnZmF1bHQgaW4gdGhhdCBjYXNlLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2dldGJ1ZmZlcl93aXRoX251bGxfdmlldyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QgKm9iaikKK3sKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKG9iaiwgTlVMTCwgUHlCVUZfU0lNUExFKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKIC8qIFRlc3QgdGhhdCB0aGUgZmF0YWwgZXJyb3IgZnJvbSBub3QgaGF2aW5nIGEgY3VycmVudCB0aHJlYWQgZG9lc24ndAogICAgY2F1c2UgYW4gaW5maW5pdGUgbG9vcC4gIFJ1biB2aWEgTGliL3Rlc3QvdGVzdF9jYXBpLnB5ICovCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjU4Miw3ICsyNjQ2LDcgQEAKIHN0YXRpYyBpbnQKIGNoZWNrX3RpbWVfcm91bmRpbmcoaW50IHJvdW5kKQogewotICAgIGlmIChyb3VuZCAhPSBfUHlUaW1lX1JPVU5EX0RPV04gJiYgcm91bmQgIT0gX1B5VGltZV9ST1VORF9VUCkgeworICAgIGlmIChyb3VuZCAhPSBfUHlUaW1lX1JPVU5EX0ZMT09SICYmIHJvdW5kICE9IF9QeVRpbWVfUk9VTkRfQ0VJTElORykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgcm91bmRpbmciKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTI3MTUsNiArMjc3OSwyMSBAQAogICAgIHJldHVybiBvYmo7CiB9CiAKK3N0YXRpYyBQeU1ldGhvZERlZiBtbDsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NyZWF0ZV9jZnVuY3Rpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBQeUNGdW5jdGlvbl9OZXdFeCgmbWwsIHNlbGYsIE5VTEwpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgbWwgPSB7CisgICAgImNyZWF0ZV9jZnVuY3Rpb24iLAorICAgIGNyZWF0ZV9jZnVuY3Rpb24sCisgICAgTUVUSF9OT0FSR1MsCisgICAgTlVMTAorfTsKKwogc3RhdGljIFB5T2JqZWN0ICoKIF90ZXN0X2luY3JlZihQeU9iamVjdCAqb2IpCiB7CkBAIC0yNzczLDYgKzI4NTIsMjAgQEAKIHsKICAgICB2b2lkICpwdHI7CiAKKyAgICBwdHIgPSBQeU1lbV9SYXdNYWxsb2MoMCk7CisgICAgaWYgKHB0ciA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJQeU1lbV9SYXdNYWxsb2MoMCkgcmV0dXJucyBOVUxMIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeU1lbV9SYXdGcmVlKHB0cik7CisKKyAgICBwdHIgPSBQeU1lbV9SYXdDYWxsb2MoMCwgMCk7CisgICAgaWYgKHB0ciA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJQeU1lbV9SYXdDYWxsb2MoMCwgMCkgcmV0dXJucyBOVUxMIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeU1lbV9SYXdGcmVlKHB0cik7CisKICAgICBwdHIgPSBQeU1lbV9NYWxsb2MoMCk7CiAgICAgaWYgKHB0ciA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJQeU1lbV9NYWxsb2MoMCkgcmV0dXJucyBOVUxMIik7CkBAIC0yNzgwLDYgKzI4NzMsMTMgQEAKICAgICB9CiAgICAgUHlNZW1fRnJlZShwdHIpOwogCisgICAgcHRyID0gUHlNZW1fQ2FsbG9jKDAsIDApOworICAgIGlmIChwdHIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiUHlNZW1fQ2FsbG9jKDAsIDApIHJldHVybnMgTlVMTCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlNZW1fRnJlZShwdHIpOworCiAgICAgcHRyID0gUHlPYmplY3RfTWFsbG9jKDApOwogICAgIGlmIChwdHIgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiUHlPYmplY3RfTWFsbG9jKDApIHJldHVybnMgTlVMTCIpOwpAQCAtMjc4NywxMyArMjg4NywyMiBAQAogICAgIH0KICAgICBQeU9iamVjdF9GcmVlKHB0cik7CiAKKyAgICBwdHIgPSBQeU9iamVjdF9DYWxsb2MoMCwgMCk7CisgICAgaWYgKHB0ciA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJQeU9iamVjdF9DYWxsb2MoMCwgMCkgcmV0dXJucyBOVUxMIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeU9iamVjdF9GcmVlKHB0cik7CisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5TWVtQWxsb2NhdG9yIGFsbG9jOworICAgIFB5TWVtQWxsb2NhdG9yRXggYWxsb2M7CiAKICAgICBzaXplX3QgbWFsbG9jX3NpemU7CisgICAgc2l6ZV90IGNhbGxvY19uZWxlbTsKKyAgICBzaXplX3QgY2FsbG9jX2Vsc2l6ZTsKICAgICB2b2lkICpyZWFsbG9jX3B0cjsKICAgICBzaXplX3QgcmVhbGxvY19uZXdfc2l6ZTsKICAgICB2b2lkICpmcmVlX3B0cjsKQEAgLTI4MDYsNiArMjkxNSwxNCBAQAogICAgIHJldHVybiBob29rLT5hbGxvYy5tYWxsb2MoaG9vay0+YWxsb2MuY3R4LCBzaXplKTsKIH0KIAorc3RhdGljIHZvaWQqIGhvb2tfY2FsbG9jICh2b2lkKiBjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKK3sKKyAgICBhbGxvY19ob29rX3QgKmhvb2sgPSAoYWxsb2NfaG9va190ICopY3R4OworICAgIGhvb2stPmNhbGxvY19uZWxlbSA9IG5lbGVtOworICAgIGhvb2stPmNhbGxvY19lbHNpemUgPSBlbHNpemU7CisgICAgcmV0dXJuIGhvb2stPmFsbG9jLmNhbGxvYyhob29rLT5hbGxvYy5jdHgsIG5lbGVtLCBlbHNpemUpOworfQorCiBzdGF0aWMgdm9pZCogaG9va19yZWFsbG9jICh2b2lkKiBjdHgsIHZvaWQqIHB0ciwgc2l6ZV90IG5ld19zaXplKQogewogICAgIGFsbG9jX2hvb2tfdCAqaG9vayA9IChhbGxvY19ob29rX3QgKiljdHg7CkBAIC0yODI3LDE3ICsyOTQ0LDE1IEBACiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZXJyb3JfbXNnOwogICAgIGFsbG9jX2hvb2tfdCBob29rOwotICAgIFB5TWVtQWxsb2NhdG9yIGFsbG9jOwotICAgIHNpemVfdCBzaXplLCBzaXplMjsKKyAgICBQeU1lbUFsbG9jYXRvckV4IGFsbG9jOworICAgIHNpemVfdCBzaXplLCBzaXplMiwgbmVsZW0sIGVsc2l6ZTsKICAgICB2b2lkICpwdHIsICpwdHIyOwogCi0gICAgaG9vay5tYWxsb2Nfc2l6ZSA9IDA7Ci0gICAgaG9vay5yZWFsbG9jX3B0ciA9IE5VTEw7Ci0gICAgaG9vay5yZWFsbG9jX25ld19zaXplID0gMDsKLSAgICBob29rLmZyZWVfcHRyID0gTlVMTDsKKyAgICBtZW1zZXQoJmhvb2ssIDAsIHNpemVvZihob29rKSk7CiAKICAgICBhbGxvYy5jdHggPSAmaG9vazsKICAgICBhbGxvYy5tYWxsb2MgPSAmaG9va19tYWxsb2M7CisgICAgYWxsb2MuY2FsbG9jID0gJmhvb2tfY2FsbG9jOwogICAgIGFsbG9jLnJlYWxsb2MgPSAmaG9va19yZWFsbG9jOwogICAgIGFsbG9jLmZyZWUgPSAmaG9va19mcmVlOwogICAgIFB5TWVtX0dldEFsbG9jYXRvcihkb21haW4sICZob29rLmFsbG9jKTsKQEAgLTI4OTQsNiArMzAwOSwzMyBAQAogICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQogCisgICAgbmVsZW0gPSAyOworICAgIGVsc2l6ZSA9IDU7CisgICAgc3dpdGNoKGRvbWFpbikKKyAgICB7CisgICAgY2FzZSBQWU1FTV9ET01BSU5fUkFXOiBwdHIgPSBQeU1lbV9SYXdDYWxsb2MobmVsZW0sIGVsc2l6ZSk7IGJyZWFrOworICAgIGNhc2UgUFlNRU1fRE9NQUlOX01FTTogcHRyID0gUHlNZW1fQ2FsbG9jKG5lbGVtLCBlbHNpemUpOyBicmVhazsKKyAgICBjYXNlIFBZTUVNX0RPTUFJTl9PQko6IHB0ciA9IFB5T2JqZWN0X0NhbGxvYyhuZWxlbSwgZWxzaXplKTsgYnJlYWs7CisgICAgZGVmYXVsdDogcHRyID0gTlVMTDsgYnJlYWs7CisgICAgfQorCisgICAgaWYgKHB0ciA9PSBOVUxMKSB7CisgICAgICAgIGVycm9yX21zZyA9ICJjYWxsb2MgZmFpbGVkIjsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIGlmIChob29rLmNhbGxvY19uZWxlbSAhPSBuZWxlbSB8fCBob29rLmNhbGxvY19lbHNpemUgIT0gZWxzaXplKSB7CisgICAgICAgIGVycm9yX21zZyA9ICJjYWxsb2MgaW52YWxpZCBuZWxlbSBvciBlbHNpemUiOworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgc3dpdGNoKGRvbWFpbikKKyAgICB7CisgICAgY2FzZSBQWU1FTV9ET01BSU5fUkFXOiBQeU1lbV9SYXdGcmVlKHB0cik7IGJyZWFrOworICAgIGNhc2UgUFlNRU1fRE9NQUlOX01FTTogUHlNZW1fRnJlZShwdHIpOyBicmVhazsKKyAgICBjYXNlIFBZTUVNX0RPTUFJTl9PQko6IFB5T2JqZWN0X0ZyZWUocHRyKTsgYnJlYWs7CisgICAgfQorCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJlcyA9IFB5X05vbmU7CiAgICAgZ290byBmaW5hbGx5OwpAQCAtMjk1Myw2ICszMDk1LDEyIEBACiAiVGhpcyBkb2NzdHJpbmcgaGFzIGEgdmFsaWQgc2lnbmF0dXJlLiIKICk7CiAKK1B5RG9jX1NUUlZBUihkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfYnV0X25vX2RvYywKKyJkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfYnV0X25vX2RvYygkbW9kdWxlLCAvLCBzaWcpXG4iCisiLS1cbiIKKyJcbiIKKyk7CisKIFB5RG9jX1NUUlZBUihkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfYW5kX2V4dHJhX25ld2xpbmVzLAogImRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9hbmRfZXh0cmFfbmV3bGluZXMoJG1vZHVsZSwgLywgcGFyYW1ldGVyKVxuIgogIi0tXG4iCkBAIC0zMDYzLDYgKzMyMTEsMjQgQEAKIH0KICNlbmRpZiAgIC8qIFdJVEhfVEhSRUFEICovCiAKK3N0YXRpYyBQeU9iamVjdCoKK3Rlc3RfcmFpc2Vfc2lnbmFsKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgc2lnbnVtLCBlcnI7CisKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpyYWlzZV9zaWduYWwiLCAmc2lnbnVtKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZXJyID0gcmFpc2Uoc2lnbnVtKTsKKyAgICBpZiAoZXJyKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworCisgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKwogLyogbWFyc2hhbCAqLwogCiBzdGF0aWMgUHlPYmplY3QqCkBAIC0zMjE2LDYgKzMzODIsMTUxIEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5sIiwgb2JqLCBwb3MpOwogfQogCitzdGF0aWMgUHlPYmplY3QqCityZXR1cm5fbnVsbF93aXRob3V0X2Vycm9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICAvKiBpbnZhbGlkIGNhbGw6IHJldHVybiBOVUxMIHdpdGhvdXQgc2V0dGluZyBhbiBlcnJvciwKKyAgICAgKiBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdCgpIG11c3QgZGV0ZWN0IHN1Y2ggYnVnIGF0IHJ1bnRpbWUuICovCisgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0KgorcmV0dXJuX3Jlc3VsdF93aXRoX2Vycm9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICAvKiBpbnZhbGlkIGNhbGw6IHJldHVybiBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldCwKKyAgICAgKiBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdCgpIG11c3QgZGV0ZWN0IHN1Y2ggYnVnIGF0IHJ1bnRpbWUuICovCisgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19WYWx1ZUVycm9yKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfcHl0aW1lX2Zyb21zZWNvbmRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgc2Vjb25kczsKKyAgICBfUHlUaW1lX3QgdHM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiLCAmc2Vjb25kcykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHRzID0gX1B5VGltZV9Gcm9tU2Vjb25kcyhzZWNvbmRzKTsKKyAgICByZXR1cm4gX1B5VGltZV9Bc05hbm9zZWNvbmRzT2JqZWN0KHRzKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfcHl0aW1lX2Zyb21zZWNvbmRzb2JqZWN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb2JqOworICAgIGludCByb3VuZDsKKyAgICBfUHlUaW1lX3QgdHM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9pIiwgJm9iaiwgJnJvdW5kKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGNoZWNrX3RpbWVfcm91bmRpbmcocm91bmQpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKF9QeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoJnRzLCBvYmosIHJvdW5kKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIF9QeVRpbWVfQXNOYW5vc2Vjb25kc09iamVjdCh0cyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X3B5dGltZV9hc3NlY29uZHNkb3VibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBfUHlUaW1lX3QgdHM7CisgICAgZG91YmxlIGQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkwiLCAmbnMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB0cyA9IF9QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKG5zKTsKKyAgICBkID0gX1B5VGltZV9Bc1NlY29uZHNEb3VibGUodHMpOworICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoZCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X1B5VGltZV9Bc1RpbWV2YWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBpbnQgcm91bmQ7CisgICAgX1B5VGltZV90IHQ7CisgICAgc3RydWN0IHRpbWV2YWwgdHY7CisgICAgUHlPYmplY3QgKnNlY29uZHM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkxpIiwgJm5zLCAmcm91bmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoY2hlY2tfdGltZV9yb3VuZGluZyhyb3VuZCkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB0ID0gX1B5VGltZV9Gcm9tTmFub3NlY29uZHMobnMpOworICAgIGlmIChfUHlUaW1lX0FzVGltZXZhbCh0LCAmdHYsIHJvdW5kKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc2Vjb25kcyA9IFB5TG9uZ19Gcm9tTG9uZygoUFlfTE9OR19MT05HKXR2LnR2X3NlYyk7CisgICAgaWYgKHNlY29uZHMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5sIiwgc2Vjb25kcywgdHYudHZfdXNlYyk7Cit9CisKKyNpZmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X1B5VGltZV9Bc1RpbWVzcGVjKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQWV9MT05HX0xPTkcgbnM7CisgICAgX1B5VGltZV90IHQ7CisgICAgc3RydWN0IHRpbWVzcGVjIHRzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJMIiwgJm5zKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdCA9IF9QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKG5zKTsKKyAgICBpZiAoX1B5VGltZV9Bc1RpbWVzcGVjKHQsICZ0cykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJObCIsIF9QeUxvbmdfRnJvbVRpbWVfdCh0cy50dl9zZWMpLCB0cy50dl9uc2VjKTsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9QeVRpbWVfQXNNaWxsaXNlY29uZHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBpbnQgcm91bmQ7CisgICAgX1B5VGltZV90IHQsIG1zOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJMaSIsICZucywgJnJvdW5kKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGNoZWNrX3RpbWVfcm91bmRpbmcocm91bmQpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdCA9IF9QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKG5zKTsKKyAgICBtcyA9IF9QeVRpbWVfQXNNaWxsaXNlY29uZHModCwgcm91bmQpOworICAgIC8qIFRoaXMgY29udmVyc2lvbiByZWx5IG9uIHRoZSBmYWN0IHRoYXQgX1B5VGltZV90IGlzIGEgbnVtYmVyIG9mCisgICAgICAgbmFub3NlY29uZHMgKi8KKyAgICByZXR1cm4gX1B5VGltZV9Bc05hbm9zZWNvbmRzT2JqZWN0KG1zKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfUHlUaW1lX0FzTWljcm9zZWNvbmRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQWV9MT05HX0xPTkcgbnM7CisgICAgaW50IHJvdW5kOworICAgIF9QeVRpbWVfdCB0LCBtczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTGkiLCAmbnMsICZyb3VuZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChjaGVja190aW1lX3JvdW5kaW5nKHJvdW5kKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHQgPSBfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhucyk7CisgICAgbXMgPSBfUHlUaW1lX0FzTWljcm9zZWNvbmRzKHQsIHJvdW5kKTsKKyAgICAvKiBUaGlzIGNvbnZlcnNpb24gcmVseSBvbiB0aGUgZmFjdCB0aGF0IF9QeVRpbWVfdCBpcyBhIG51bWJlciBvZgorICAgICAgIG5hbm9zZWNvbmRzICovCisgICAgcmV0dXJuIF9QeVRpbWVfQXNOYW5vc2Vjb25kc09iamVjdChtcyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2dldF9yZWN1cnNpb25fZGVwdGgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisKKyAgICAvKiBzdWJzdHJhY3Qgb25lIHRvIGlnbm9yZSB0aGUgZnJhbWUgb2YgdGhlIGdldF9yZWN1cnNpb25fZGVwdGgoKSBjYWxsICovCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh0c3RhdGUtPnJlY3Vyc2lvbl9kZXB0aCAtIDEpOworfQorCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBUZXN0TWV0aG9kc1tdID0gewogICAgIHsicmFpc2VfZXhjZXB0aW9uIiwgICAgICAgICByYWlzZV9leGNlcHRpb24sICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LApAQCAtMzI0OSw2ICszNTYwLDEwIEBACiAgICAgeyJ0ZXN0X3VuaWNvZGVfY29tcGFyZV93aXRoX2FzY2lpIiwgKFB5Q0Z1bmN0aW9uKXRlc3RfdW5pY29kZV9jb21wYXJlX3dpdGhfYXNjaWksIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfY2Fwc3VsZSIsIChQeUNGdW5jdGlvbil0ZXN0X2NhcHN1bGUsIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfZnJvbV9jb250aWd1b3VzIiwgKFB5Q0Z1bmN0aW9uKXRlc3RfZnJvbV9jb250aWd1b3VzLCBNRVRIX05PQVJHU30sCisjaWYgKGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSkgJiYgZGVmaW5lZChfX0dOVUNfXykKKyAgICB7InRlc3RfcGVwMzExOF9vYnNvbGV0ZV93cml0ZV9sb2NrcyIsIChQeUNGdW5jdGlvbil0ZXN0X3BlcDMxMThfb2Jzb2xldGVfd3JpdGVfbG9ja3MsIE1FVEhfTk9BUkdTfSwKKyNlbmRpZgorICAgIHsiZ2V0YnVmZmVyX3dpdGhfbnVsbF92aWV3IiwgZ2V0YnVmZmVyX3dpdGhfbnVsbF92aWV3LCBNRVRIX099LAogICAgIHsiZ2V0YXJnc190dXBsZSIsICAgICAgICAgICBnZXRhcmdzX3R1cGxlLCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19rZXl3b3JkcyIsIChQeUNGdW5jdGlvbilnZXRhcmdzX2tleXdvcmRzLAogICAgICAgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LApAQCAtMzMyMiw2ICszNjM3LDcgQEAKICAgICB7InB5dGltZV9vYmplY3RfdG9fdGltZXZhbCIsIHRlc3RfcHl0aW1lX29iamVjdF90b190aW1ldmFsLCAgTUVUSF9WQVJBUkdTfSwKICAgICB7InB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMiLCB0ZXN0X3B5dGltZV9vYmplY3RfdG9fdGltZXNwZWMsICBNRVRIX1ZBUkFSR1N9LAogICAgIHsid2l0aF90cF9kZWwiLCAgICAgICAgICAgICB3aXRoX3RwX2RlbCwgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAorICAgIHsiY3JlYXRlX2NmdW5jdGlvbiIsICAgICAgICBjcmVhdGVfY2Z1bmN0aW9uLCAgICAgICAgICAgICAgICBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X3B5bWVtX2FsbG9jMCIsCiAgICAgIChQeUNGdW5jdGlvbil0ZXN0X3B5bWVtX2FsbG9jMCwgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9weW1lbV9zZXRyYXdhbGxvY2F0b3JzIiwKQEAgLTMzNDcsMTIgKzM2NjMsMTcgQEAKICAgICB7ImRvY3N0cmluZ193aXRoX3NpZ25hdHVyZSIsCiAgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X3dpdGhfZG9jc3RyaW5nLCBNRVRIX05PQVJHUywKICAgICAgICAgZG9jc3RyaW5nX3dpdGhfc2lnbmF0dXJlfSwKKyAgICB7ImRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9idXRfbm9fZG9jIiwKKyAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3Rfd2l0aF9kb2NzdHJpbmcsIE1FVEhfTk9BUkdTLAorICAgICAgICBkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfYnV0X25vX2RvY30sCiAgICAgeyJkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfYW5kX2V4dHJhX25ld2xpbmVzIiwKICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3Rfd2l0aF9kb2NzdHJpbmcsIE1FVEhfTk9BUkdTLAogICAgICAgICBkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfYW5kX2V4dHJhX25ld2xpbmVzfSwKICAgICB7ImRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV93aXRoX2RlZmF1bHRzIiwKICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3Rfd2l0aF9kb2NzdHJpbmcsIE1FVEhfTk9BUkdTLAogICAgICAgICBkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfd2l0aF9kZWZhdWx0c30sCisgICAgeyJyYWlzZV9zaWduYWwiLAorICAgICAoUHlDRnVuY3Rpb24pdGVzdF9yYWlzZV9zaWduYWwsIE1FVEhfVkFSQVJHU30sCiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICB7ImNhbGxfaW5fdGVtcG9yYXJ5X2NfdGhyZWFkIiwgY2FsbF9pbl90ZW1wb3JhcnlfY190aHJlYWQsIE1FVEhfTywKICAgICAgUHlEb2NfU1RSKCJzZXRfZXJyb3JfY2xhc3MoZXJyb3JfY2xhc3MpIC0+IE5vbmUiKX0sCkBAIC0zMzY5LDYgKzM2OTAsMjAgQEAKICAgICAgICAgcHltYXJzaGFsX3JlYWRfbGFzdF9vYmplY3RfZnJvbV9maWxlLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsicHltYXJzaGFsX3JlYWRfb2JqZWN0X2Zyb21fZmlsZSIsCiAgICAgICAgIHB5bWFyc2hhbF9yZWFkX29iamVjdF9mcm9tX2ZpbGUsIE1FVEhfVkFSQVJHU30sCisgICAgeyJyZXR1cm5fbnVsbF93aXRob3V0X2Vycm9yIiwKKyAgICAgICAgcmV0dXJuX251bGxfd2l0aG91dF9lcnJvciwgTUVUSF9OT0FSR1N9LAorICAgIHsicmV0dXJuX3Jlc3VsdF93aXRoX2Vycm9yIiwKKyAgICAgICAgcmV0dXJuX3Jlc3VsdF93aXRoX2Vycm9yLCBNRVRIX05PQVJHU30sCisgICAgeyJQeVRpbWVfRnJvbVNlY29uZHMiLCB0ZXN0X3B5dGltZV9mcm9tc2Vjb25kcywgIE1FVEhfVkFSQVJHU30sCisgICAgeyJQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QiLCB0ZXN0X3B5dGltZV9mcm9tc2Vjb25kc29iamVjdCwgIE1FVEhfVkFSQVJHU30sCisgICAgeyJQeVRpbWVfQXNTZWNvbmRzRG91YmxlIiwgdGVzdF9weXRpbWVfYXNzZWNvbmRzZG91YmxlLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiUHlUaW1lX0FzVGltZXZhbCIsIHRlc3RfUHlUaW1lX0FzVGltZXZhbCwgTUVUSF9WQVJBUkdTfSwKKyNpZmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKKyAgICB7IlB5VGltZV9Bc1RpbWVzcGVjIiwgdGVzdF9QeVRpbWVfQXNUaW1lc3BlYywgTUVUSF9WQVJBUkdTfSwKKyNlbmRpZgorICAgIHsiUHlUaW1lX0FzTWlsbGlzZWNvbmRzIiwgdGVzdF9QeVRpbWVfQXNNaWxsaXNlY29uZHMsIE1FVEhfVkFSQVJHU30sCisgICAgeyJQeVRpbWVfQXNNaWNyb3NlY29uZHMiLCB0ZXN0X1B5VGltZV9Bc01pY3Jvc2Vjb25kcywgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImdldF9yZWN1cnNpb25fZGVwdGgiLCBnZXRfcmVjdXJzaW9uX2RlcHRoLCBNRVRIX05PQVJHU30sCiAgICAge05VTEwsIE5VTEx9IC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0zNTI4LDYgKzM4NjMsMjAxIEBACiB9OwogCiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECit9IG1hdG11bE9iamVjdDsKKworc3RhdGljIFB5T2JqZWN0ICoKK21hdG11bFR5cGVfbWF0bXVsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIpCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihzT08pIiwgIm1hdG11bCIsIHNlbGYsIG90aGVyKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21hdG11bFR5cGVfaW1hdG11bChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVyKQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoc09PKSIsICJpbWF0bXVsIiwgc2VsZiwgb3RoZXIpOworfQorCitzdGF0aWMgdm9pZAorbWF0bXVsVHlwZV9kZWFsbG9jKFB5T2JqZWN0ICpzZWxmKQoreworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoc2VsZik7Cit9CisKK3N0YXRpYyBQeU51bWJlck1ldGhvZHMgbWF0bXVsVHlwZV9hc19udW1iZXIgPSB7CisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2FkZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9zdWJ0cmFjdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9tdWx0aXBseSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9yZW1haW5kZSByKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfZGl2bW9kICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3Bvd2VyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX25lZ2F0aXZlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Bvc2l0aXZlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Fic29sdXRlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jvb2wgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW52ZXJ0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2xzaGlmdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9yc2hpZnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfYW5kICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3hvciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9vciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfZmxvYXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9hZGQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9zdWJ0cmFjdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX211bHRpcGx5ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfcmVtYWluZGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfcG93ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9sc2hpZnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9yc2hpZnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9hbmQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV94b3IgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9vciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9mbG9vcl9kaXZpZGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfdHJ1ZV9kaXZpZGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9mbG9vcl9kaXZpZGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV90cnVlX2RpdmlkZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbmRleCAqLworICAgIG1hdG11bFR5cGVfbWF0bXVsLCAgICAgICAgLyogbmJfbWF0cml4X211bHRpcGx5ICovCisgICAgbWF0bXVsVHlwZV9pbWF0bXVsICAgICAgICAvKiBuYl9tYXRyaXhfaW5wbGFjZV9tdWx0aXBseSAqLworfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBtYXRtdWxUeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJtYXRtdWxUeXBlIiwKKyAgICBzaXplb2YobWF0bXVsT2JqZWN0KSwgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIG1hdG11bFR5cGVfZGVhbGxvYywgICAgICAgICAgICAgICAgIC8qIGRlc3RydWN0b3IgdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAmbWF0bXVsVHlwZV9hc19udW1iZXIsICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHIsICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgICJDIGxldmVsIHR5cGUgd2l0aCBtYXRyaXggb3BlcmF0aW9ucyBkZWZpbmVkIiwKKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cmF2ZXJzZXByb2MgdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBQeU9iamVjdF9EZWwsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCit9OworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKmFvX2l0ZXJhdG9yOworfSBhd2FpdE9iamVjdDsKKworCitzdGF0aWMgUHlPYmplY3QgKgorYXdhaXRPYmplY3RfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICp2OworICAgIGF3YWl0T2JqZWN0ICphbzsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImF3YWl0T2JqZWN0IiwgMSwgMSwgJnYpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGFvID0gKGF3YWl0T2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKGFvID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfSU5DUkVGKHYpOworICAgIGFvLT5hb19pdGVyYXRvciA9IHY7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopYW87Cit9CisKKworc3RhdGljIHZvaWQKK2F3YWl0T2JqZWN0X2RlYWxsb2MoYXdhaXRPYmplY3QgKmFvKQoreworICAgIFB5X0NMRUFSKGFvLT5hb19pdGVyYXRvcik7CisgICAgUHlfVFlQRShhbyktPnRwX2ZyZWUoYW8pOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithd2FpdE9iamVjdF9hd2FpdChhd2FpdE9iamVjdCAqYW8pCit7CisgICAgUHlfSU5DUkVGKGFvLT5hb19pdGVyYXRvcik7CisgICAgcmV0dXJuIGFvLT5hb19pdGVyYXRvcjsKK30KKworc3RhdGljIFB5QXN5bmNNZXRob2RzIGF3YWl0VHlwZV9hc19hc3luYyA9IHsKKyAgICAodW5hcnlmdW5jKWF3YWl0T2JqZWN0X2F3YWl0LCAgICAgICAgICAgLyogYW1fYXdhaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYWl0ZXIgKi8KKyAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYW5leHQgKi8KK307CisKKworc3RhdGljIFB5VHlwZU9iamVjdCBhd2FpdFR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgImF3YWl0VHlwZSIsCisgICAgc2l6ZW9mKGF3YWl0T2JqZWN0KSwgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3Rvcilhd2FpdE9iamVjdF9kZWFsbG9jLCAgICAvKiBkZXN0cnVjdG9yIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgJmF3YWl0VHlwZV9hc19hc3luYywgICAgICAgICAgICAgICAgLyogdHBfYXNfYXN5bmMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyLCAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAiQyBsZXZlbCB0eXBlIHdpdGggdHBfYXNfYXN5bmMiLAorICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRyYXZlcnNlcHJvYyB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIGF3YWl0T2JqZWN0X25ldywgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIFB5T2JqZWN0X0RlbCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KK307CisKIAogc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfdGVzdGNhcGltb2R1bGUgPSB7CiAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULApAQCAtMzU0MSw2ICs0MDcxLDkgQEAKICAgICBOVUxMCiB9OwogCisvKiBQZXIgUEVQIDQ4OSwgdGhpcyBtb2R1bGUgd2lsbCBub3QgYmUgY29udmVydGVkIHRvIG11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uCisgKi8KKwogUHlNT0RJTklUX0ZVTkMKIFB5SW5pdF9fdGVzdGNhcGkodm9pZCkKIHsKQEAgLTM1NTcsNiArNDA5MCwxNSBAQAogICAgIC8qIGRvbid0IHVzZSBhIG5hbWUgc3RhcnRpbmcgd2l0aCAidGVzdCIsIHNpbmNlIHdlIGRvbid0IHdhbnQKICAgICAgICB0ZXN0X2NhcGkgdG8gYXV0b21hdGljYWxseSBjYWxsIHRoaXMgKi8KICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIl90ZXN0X3N0cnVjdG1lbWJlcnNUeXBlIiwgKFB5T2JqZWN0ICopJnRlc3Rfc3RydWN0bWVtYmVyc1R5cGUpOworICAgIGlmIChQeVR5cGVfUmVhZHkoJm1hdG11bFR5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKCZtYXRtdWxUeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIm1hdG11bFR5cGUiLCAoUHlPYmplY3QgKikmbWF0bXVsVHlwZSk7CisKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZhd2FpdFR5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKCZhd2FpdFR5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiYXdhaXRUeXBlIiwgKFB5T2JqZWN0ICopJmF3YWl0VHlwZSk7CiAKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkNIQVJfTUFYIiwgUHlMb25nX0Zyb21Mb25nKENIQVJfTUFYKSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJDSEFSX01JTiIsIFB5TG9uZ19Gcm9tTG9uZyhDSEFSX01JTikpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGVzdG11bHRpcGhhc2UuYyBiL01vZHVsZXMvX3Rlc3RtdWx0aXBoYXNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAwNTIwNQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3Rlc3RtdWx0aXBoYXNlLmMKQEAgLTAsMCArMSw1OTQgQEAKKworLyogVGVzdGluZyBtb2R1bGUgZm9yIG11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uIG9mIGV4dGVuc2lvbiBtb2R1bGVzIChQRVAgNDg5KQorICovCisKKyNpbmNsdWRlICJQeXRob24uaCIKKworLyogRXhhbXBsZSBvYmplY3RzICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5T2JqZWN0ICAgICAgICAgICAgKnhfYXR0cjsgICAgICAgIC8qIEF0dHJpYnV0ZXMgZGljdGlvbmFyeSAqLworfSBFeGFtcGxlT2JqZWN0OworCisvKiBFeGFtcGxlIG1ldGhvZHMgKi8KKworc3RhdGljIGludAorRXhhbXBsZV90cmF2ZXJzZShFeGFtcGxlT2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT54X2F0dHIpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitFeGFtcGxlX2ZpbmFsaXplKEV4YW1wbGVPYmplY3QgKnNlbGYpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+eF9hdHRyKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0V4YW1wbGVfZGVtbyhFeGFtcGxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqbyA9IE5VTEw7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzpkZW1vIiwgJm8pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAobyAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVjayhvKSkgeworICAgICAgICBQeV9JTkNSRUYobyk7CisgICAgICAgIHJldHVybiBvOworICAgIH0KKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuIFB5X05vbmU7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIEV4YW1wbGVfbWV0aG9kc1tdID0geworICAgIHsiZGVtbyIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKUV4YW1wbGVfZGVtbywgIE1FVEhfVkFSQVJHUywKKyAgICAgICAgUHlEb2NfU1RSKCJkZW1vKCkgLT4gTm9uZSIpfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0V4YW1wbGVfZ2V0YXR0cm8oRXhhbXBsZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5hbWUpCit7CisgICAgaWYgKHNlbGYtPnhfYXR0ciAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICp2ID0gUHlEaWN0X0dldEl0ZW0oc2VsZi0+eF9hdHRyLCBuYW1lKTsKKyAgICAgICAgaWYgKHYgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlfSU5DUkVGKHYpOworICAgICAgICAgICAgcmV0dXJuIHY7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyKChQeU9iamVjdCAqKXNlbGYsIG5hbWUpOworfQorCitzdGF0aWMgaW50CitFeGFtcGxlX3NldGF0dHIoRXhhbXBsZU9iamVjdCAqc2VsZiwgY2hhciAqbmFtZSwgUHlPYmplY3QgKnYpCit7CisgICAgaWYgKHNlbGYtPnhfYXR0ciA9PSBOVUxMKSB7CisgICAgICAgIHNlbGYtPnhfYXR0ciA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgaWYgKHNlbGYtPnhfYXR0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAodiA9PSBOVUxMKSB7CisgICAgICAgIGludCBydiA9IFB5RGljdF9EZWxJdGVtU3RyaW5nKHNlbGYtPnhfYXR0ciwgbmFtZSk7CisgICAgICAgIGlmIChydiA8IDApCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgImRlbGV0ZSBub24tZXhpc3RpbmcgRXhhbXBsZSBhdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHJ2OworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeURpY3RfU2V0SXRlbVN0cmluZyhzZWxmLT54X2F0dHIsIG5hbWUsIHYpOworfQorCitzdGF0aWMgUHlUeXBlX1Nsb3QgRXhhbXBsZV9UeXBlX3Nsb3RzW10gPSB7CisgICAge1B5X3RwX2RvYywgIlRoZSBFeGFtcGxlIHR5cGUifSwKKyAgICB7UHlfdHBfZmluYWxpemUsIEV4YW1wbGVfZmluYWxpemV9LAorICAgIHtQeV90cF90cmF2ZXJzZSwgRXhhbXBsZV90cmF2ZXJzZX0sCisgICAge1B5X3RwX2dldGF0dHJvLCBFeGFtcGxlX2dldGF0dHJvfSwKKyAgICB7UHlfdHBfc2V0YXR0ciwgRXhhbXBsZV9zZXRhdHRyfSwKKyAgICB7UHlfdHBfbWV0aG9kcywgRXhhbXBsZV9tZXRob2RzfSwKKyAgICB7MCwgMH0sCit9OworCitzdGF0aWMgUHlUeXBlX1NwZWMgRXhhbXBsZV9UeXBlX3NwZWMgPSB7CisgICAgIl90ZXN0aW1wb3J0ZXhlYy5FeGFtcGxlIiwKKyAgICBzaXplb2YoRXhhbXBsZU9iamVjdCksCisgICAgMCwKKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsCisgICAgRXhhbXBsZV9UeXBlX3Nsb3RzCit9OworCisvKiBGdW5jdGlvbiBvZiB0d28gaW50ZWdlcnMgcmV0dXJuaW5nIGludGVnZXIgKi8KKworUHlEb2NfU1RSVkFSKHRlc3RleHBvcnRfZm9vX2RvYywKKyJmb28oaSxqKVxuXAorXG5cCitSZXR1cm4gdGhlIHN1bSBvZiBpIGFuZCBqLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgordGVzdGV4cG9ydF9mb28oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGxvbmcgaSwgajsKKyAgICBsb25nIHJlczsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImxsOmZvbyIsICZpLCAmaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlcyA9IGkgKyBqOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocmVzKTsKK30KKworLyogVGVzdCB0aGF0IFB5U3RhdGUgcmVnaXN0cmF0aW9uIGZhaWxzICAqLworCitQeURvY19TVFJWQVIoY2FsbF9zdGF0ZV9yZWdpc3RyYXRpb25fZnVuY19kb2MsCisicmVnaXN0ZXJfc3RhdGUoMCk6IGNhbGwgUHlTdGF0ZV9GaW5kTW9kdWxlKClcblwKK3JlZ2lzdGVyX3N0YXRlKDEpOiBjYWxsIFB5U3RhdGVfQWRkTW9kdWxlKClcblwKK3JlZ2lzdGVyX3N0YXRlKDIpOiBjYWxsIFB5U3RhdGVfUmVtb3ZlTW9kdWxlKCkiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NhbGxfc3RhdGVfcmVnaXN0cmF0aW9uX2Z1bmMoUHlPYmplY3QgKm1vZCwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGksIHJldDsKKyAgICBQeU1vZHVsZURlZiAqZGVmID0gUHlNb2R1bGVfR2V0RGVmKG1vZCk7CisgICAgaWYgKGRlZiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6Y2FsbF9zdGF0ZV9yZWdpc3RyYXRpb25fZnVuYyIsICZpKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc3dpdGNoIChpKSB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIG1vZCA9IFB5U3RhdGVfRmluZE1vZHVsZShkZWYpOworICAgICAgICAgICAgaWYgKG1vZCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbW9kOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICByZXQgPSBQeVN0YXRlX0FkZE1vZHVsZShtb2QsIGRlZik7CisgICAgICAgICAgICBpZiAocmV0ICE9IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICByZXQgPSBQeVN0YXRlX1JlbW92ZU1vZHVsZShkZWYpOworICAgICAgICAgICAgaWYgKHJldCAhPSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKworc3RhdGljIFB5VHlwZV9TbG90IFN0cl9UeXBlX3Nsb3RzW10gPSB7CisgICAge1B5X3RwX2Jhc2UsIE5VTEx9LCAvKiBmaWxsZWQgb3V0IGluIG1vZHVsZSBleGVjIGZ1bmN0aW9uICovCisgICAgezAsIDB9LAorfTsKKworc3RhdGljIFB5VHlwZV9TcGVjIFN0cl9UeXBlX3NwZWMgPSB7CisgICAgIl90ZXN0aW1wb3J0ZXhlYy5TdHIiLAorICAgIDAsCisgICAgMCwKKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLAorICAgIFN0cl9UeXBlX3Nsb3RzCit9OworCitzdGF0aWMgUHlNZXRob2REZWYgdGVzdGV4cG9ydF9tZXRob2RzW10gPSB7CisgICAgeyJmb28iLCAgICAgICAgICAgICB0ZXN0ZXhwb3J0X2ZvbywgICAgICAgICBNRVRIX1ZBUkFSR1MsCisgICAgICAgIHRlc3RleHBvcnRfZm9vX2RvY30sCisgICAgeyJjYWxsX3N0YXRlX3JlZ2lzdHJhdGlvbl9mdW5jIiwgIGNhbGxfc3RhdGVfcmVnaXN0cmF0aW9uX2Z1bmMsCisgICAgICAgIE1FVEhfVkFSQVJHUywgY2FsbF9zdGF0ZV9yZWdpc3RyYXRpb25fZnVuY19kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitzdGF0aWMgaW50IGV4ZWNmdW5jKFB5T2JqZWN0ICptKQoreworICAgIFB5T2JqZWN0ICp0ZW1wID0gTlVMTDsKKworICAgIC8qIER1ZSB0byBjcm9zcyBwbGF0Zm9ybSBjb21waWxlciBpc3N1ZXMgdGhlIHNsb3RzIG11c3QgYmUgZmlsbGVkCisgICAgICogaGVyZS4gSXQncyByZXF1aXJlZCBmb3IgcG9ydGFiaWxpdHkgdG8gV2luZG93cyB3aXRob3V0IHJlcXVpcmluZworICAgICAqIEMrKy4gKi8KKyAgICBTdHJfVHlwZV9zbG90c1swXS5wZnVuYyA9ICZQeVVuaWNvZGVfVHlwZTsKKworICAgIC8qIEFkZCBhIGN1c3RvbSB0eXBlICovCisgICAgdGVtcCA9IFB5VHlwZV9Gcm9tU3BlYygmRXhhbXBsZV9UeXBlX3NwZWMpOworICAgIGlmICh0ZW1wID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJFeGFtcGxlIiwgdGVtcCkgIT0gMCkKKyAgICAgICAgZ290byBmYWlsOworCisgICAgLyogQWRkIGFuIGV4Y2VwdGlvbiB0eXBlICovCisgICAgdGVtcCA9IFB5RXJyX05ld0V4Y2VwdGlvbigiX3Rlc3RpbXBvcnRleGVjLmVycm9yIiwgTlVMTCwgTlVMTCk7CisgICAgaWYgKHRlbXAgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgImVycm9yIiwgdGVtcCkgIT0gMCkKKyAgICAgICAgZ290byBmYWlsOworCisgICAgLyogQWRkIFN0ciAqLworICAgIHRlbXAgPSBQeVR5cGVfRnJvbVNwZWMoJlN0cl9UeXBlX3NwZWMpOworICAgIGlmICh0ZW1wID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJTdHIiLCB0ZW1wKSAhPSAwKQorICAgICAgICBnb3RvIGZhaWw7CisKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgImludF9jb25zdCIsIDE5NjkpICE9IDApCisgICAgICAgIGdvdG8gZmFpbDsKKworICAgIGlmIChQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAic3RyX2NvbnN0IiwgInNvbWV0aGluZyBkaWZmZXJlbnQiKSAhPSAwKQorICAgICAgICBnb3RvIGZhaWw7CisKKyAgICByZXR1cm4gMDsKKyBmYWlsOgorICAgIHJldHVybiAtMTsKK30KKworLyogSGVscGVyIGZvciBtb2R1bGUgZGVmaW5pdGlvbnM7IHRoZXJlJ2xsIGJlIGEgbG90IG9mIHRoZW0gKi8KKyNkZWZpbmUgVEVTVF9NT0RVTEVfREVGKG5hbWUsIHNsb3RzLCBtZXRob2RzKSB7IFwKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsICAgICAgICAgICAgICAgICAgICAgIC8qIG1fYmFzZSAqLyBcCisgICAgbmFtZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX25hbWUgKi8gXAorICAgIFB5RG9jX1NUUigiVGVzdCBtb2R1bGUgIiBuYW1lKSwgICAgICAgICAgICAgLyogbV9kb2MgKi8gXAorICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovIFwKKyAgICBtZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLyBcCisgICAgc2xvdHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3Nsb3RzICovIFwKKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fdHJhdmVyc2UgKi8gXAorICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9jbGVhciAqLyBcCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX2ZyZWUgKi8gXAorfQorCitQeU1vZHVsZURlZl9TbG90IG1haW5fc2xvdHNbXSA9IHsKKyAgICB7UHlfbW9kX2V4ZWMsIGV4ZWNmdW5jfSwKKyAgICB7MCwgTlVMTH0sCit9OworCitzdGF0aWMgUHlNb2R1bGVEZWYgbWFpbl9kZWYgPSBURVNUX01PRFVMRV9ERUYoIm1haW4iLCBtYWluX3Nsb3RzLCB0ZXN0ZXhwb3J0X21ldGhvZHMpOworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZShQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmbWFpbl9kZWYpOworfQorCisKKy8qKioqIEltcG9ydGluZyBhIG5vbi1tb2R1bGUgb2JqZWN0ICoqKiovCisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfbm9ubW9kdWxlOworCisvKiBDcmVhdGUgYSBTaW1wbGVOYW1lc3BhY2UodGhyZWU9MykgKi8KK3N0YXRpYyBQeU9iamVjdCoKK2NyZWF0ZWZ1bmNfbm9ubW9kdWxlKFB5T2JqZWN0ICpzcGVjLCBQeU1vZHVsZURlZiAqZGVmKQoreworICAgIFB5T2JqZWN0ICpkY3QsICpucywgKnRocmVlOworCisgICAgaWYgKGRlZiAhPSAmZGVmX25vbm1vZHVsZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJkZWYgZG9lcyBub3QgbWF0Y2giKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZGN0ID0gUHlEaWN0X05ldygpOworICAgIGlmIChkY3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB0aHJlZSA9IFB5TG9uZ19Gcm9tTG9uZygzKTsKKyAgICBpZiAodGhyZWUgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoZGN0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGRjdCwgInRocmVlIiwgdGhyZWUpOworICAgIFB5X0RFQ1JFRih0aHJlZSk7CisKKyAgICBucyA9IF9QeU5hbWVzcGFjZV9OZXcoZGN0KTsKKyAgICBQeV9ERUNSRUYoZGN0KTsKKyAgICByZXR1cm4gbnM7Cit9CisKK3N0YXRpYyBQeU1vZHVsZURlZl9TbG90IHNsb3RzX2NyZWF0ZV9ub25tb2R1bGVbXSA9IHsKKyAgICB7UHlfbW9kX2NyZWF0ZSwgY3JlYXRlZnVuY19ub25tb2R1bGV9LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfbm9ubW9kdWxlID0gVEVTVF9NT0RVTEVfREVGKAorICAgICJfdGVzdG11bHRpcGhhc2Vfbm9ubW9kdWxlIiwgc2xvdHNfY3JlYXRlX25vbm1vZHVsZSwgTlVMTCk7CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX25vbm1vZHVsZShQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX25vbm1vZHVsZSk7Cit9CisKKy8qKioqIE5vbi1BU0NJSS1uYW1lZCBtb2R1bGVzICoqKiovCisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfbm9uYXNjaWlfbGF0aW4gPSB7IFwKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsICAgICAgICAgICAgICAgICAgICAgIC8qIG1fYmFzZSAqLworICAgICJfdGVzdG11bHRpcGhhc2Vfbm9uYXNjaWlfbGF0aW4iLCAgICAgICAgICAgLyogbV9uYW1lICovCisgICAgUHlEb2NfU1RSKCJNb2R1bGUgbmFtZWQgaW4gQ3plY2giKSwgICAgICAgICAvKiBtX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX21ldGhvZHMgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2xvdHMgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fdHJhdmVyc2UgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fY2xlYXIgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fZnJlZSAqLworfTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdFVfX3Rlc3RtdWx0aXBoYXNlX3prb3VrYV9uYXRlbl9ldmMwN2dpOGUoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJmRlZl9ub25hc2NpaV9sYXRpbik7Cit9CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfbm9uYXNjaWlfa2FuYSA9IHsgXAorICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwgICAgICAgICAgICAgICAgICAgICAgLyogbV9iYXNlICovCisgICAgIl90ZXN0bXVsdGlwaGFzZV9ub25hc2NpaV9rYW5hIiwgICAgICAgICAgICAvKiBtX25hbWUgKi8KKyAgICBQeURvY19TVFIoIk1vZHVsZSBuYW1lZCBpbiBKYXBhbmVzZSIpLCAgICAgIC8qIG1fZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3NpemUgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zbG90cyAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV90cmF2ZXJzZSAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9jbGVhciAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9mcmVlICovCit9OworCitQeU1PRElOSVRfRlVOQworUHlJbml0VV9lY2t6YndiaGM2anBnemN4NDE1eChQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX25vbmFzY2lpX2thbmEpOworfQorCisvKioqIE1vZHVsZSB3aXRoIGEgc2luZ2xlLWNoYXJhY3RlciBuYW1lICoqKi8KKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF94KFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZtYWluX2RlZik7Cit9CisKKy8qKioqIFRlc3RpbmcgTlVMTCBzbG90cyAqKioqLworCitzdGF0aWMgUHlNb2R1bGVEZWYgbnVsbF9zbG90c19kZWYgPSBURVNUX01PRFVMRV9ERUYoCisgICAgIl90ZXN0bXVsdGlwaGFzZV9udWxsX3Nsb3RzIiwgTlVMTCwgTlVMTCk7CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX251bGxfc2xvdHMoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJm51bGxfc2xvdHNfZGVmKTsKK30KKworLyoqKiogUHJvYmxlbWF0aWMgbW9kdWxlcyAqKioqLworCitzdGF0aWMgUHlNb2R1bGVEZWZfU2xvdCBzbG90c19iYWRfbGFyZ2VbXSA9IHsKKyAgICB7X1B5X21vZF9MQVNUX1NMT1QgKyAxLCBOVUxMfSwKKyAgICB7MCwgTlVMTH0sCit9OworCitzdGF0aWMgUHlNb2R1bGVEZWYgZGVmX2JhZF9sYXJnZSA9IFRFU1RfTU9EVUxFX0RFRigKKyAgICAiX3Rlc3RtdWx0aXBoYXNlX2JhZF9zbG90X2xhcmdlIiwgc2xvdHNfYmFkX2xhcmdlLCBOVUxMKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfYmFkX3Nsb3RfbGFyZ2UoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJmRlZl9iYWRfbGFyZ2UpOworfQorCitzdGF0aWMgUHlNb2R1bGVEZWZfU2xvdCBzbG90c19iYWRfbmVnYXRpdmVbXSA9IHsKKyAgICB7LTEsIE5VTEx9LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfYmFkX25lZ2F0aXZlID0gVEVTVF9NT0RVTEVfREVGKAorICAgICJfdGVzdG11bHRpcGhhc2VfYmFkX3Nsb3RfbmVnYXRpdmUiLCBzbG90c19iYWRfbmVnYXRpdmUsIE5VTEwpOworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9iYWRfc2xvdF9uZWdhdGl2ZShQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX2JhZF9uZWdhdGl2ZSk7Cit9CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfY3JlYXRlX2ludF93aXRoX3N0YXRlID0geyBcCisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULCAgICAgICAgICAgICAgICAgICAgICAvKiBtX2Jhc2UgKi8KKyAgICAiY3JlYXRlX3dpdGhfc3RhdGUiLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbmFtZSAqLworICAgIFB5RG9jX1NUUigiTm90IGEgUHlNb2R1bGVPYmplY3Qgb2JqZWN0LCBidXQgcmVxdWVzdHMgcGVyLW1vZHVsZSBzdGF0ZSIpLAorICAgIDEwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX21ldGhvZHMgKi8KKyAgICBzbG90c19jcmVhdGVfbm9ubW9kdWxlLCAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2xvdHMgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fdHJhdmVyc2UgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fY2xlYXIgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fZnJlZSAqLworfTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfY3JlYXRlX2ludF93aXRoX3N0YXRlKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZkZWZfY3JlYXRlX2ludF93aXRoX3N0YXRlKTsKK30KKworCitzdGF0aWMgUHlNb2R1bGVEZWYgZGVmX25lZ2F0aXZlX3NpemUgPSB7IFwKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsICAgICAgICAgICAgICAgICAgICAgIC8qIG1fYmFzZSAqLworICAgICJuZWdhdGl2ZV9zaXplIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9uYW1lICovCisgICAgUHlEb2NfU1RSKCJQeU1vZHVsZURlZiB3aXRoIG5lZ2F0aXZlIG1fc2l6ZSIpLAorICAgIC0xLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX21ldGhvZHMgKi8KKyAgICBzbG90c19jcmVhdGVfbm9ubW9kdWxlLCAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2xvdHMgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fdHJhdmVyc2UgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fY2xlYXIgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fZnJlZSAqLworfTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfbmVnYXRpdmVfc2l6ZShQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX25lZ2F0aXZlX3NpemUpOworfQorCisKK3N0YXRpYyBQeU1vZHVsZURlZiB1bmluaXRpYWxpemVkX2RlZiA9IFRFU1RfTU9EVUxFX0RFRigibWFpbiIsIG1haW5fc2xvdHMsIHRlc3RleHBvcnRfbWV0aG9kcyk7CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX2V4cG9ydF91bmluaXRpYWxpemVkKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiAoUHlPYmplY3QqKSAmdW5pbml0aWFsaXplZF9kZWY7Cit9CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX2V4cG9ydF9udWxsKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBOVUxMOworfQorCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9leHBvcnRfcmFpc2UoUHlPYmplY3QgKnNwZWMpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiYmFkIGV4cG9ydCBmdW5jdGlvbiIpOworICAgIHJldHVybiBOVUxMOworfQorCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9leHBvcnRfdW5yZXBvcnRlZF9leGNlcHRpb24oUHlPYmplY3QgKnNwZWMpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiYmFkIGV4cG9ydCBmdW5jdGlvbiIpOworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZtYWluX2RlZik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2NyZWF0ZWZ1bmNfbnVsbChQeU9iamVjdCAqc3BlYywgUHlNb2R1bGVEZWYgKmRlZikKK3sKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlNb2R1bGVEZWZfU2xvdCBzbG90c19jcmVhdGVfbnVsbFtdID0geworICAgIHtQeV9tb2RfY3JlYXRlLCBjcmVhdGVmdW5jX251bGx9LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfY3JlYXRlX251bGwgPSBURVNUX01PRFVMRV9ERUYoCisgICAgIl90ZXN0bXVsdGlwaGFzZV9jcmVhdGVfbnVsbCIsIHNsb3RzX2NyZWF0ZV9udWxsLCBOVUxMKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfY3JlYXRlX251bGwoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJmRlZl9jcmVhdGVfbnVsbCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2NyZWF0ZWZ1bmNfcmFpc2UoUHlPYmplY3QgKnNwZWMsIFB5TW9kdWxlRGVmICpkZWYpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiYmFkIGNyZWF0ZSBmdW5jdGlvbiIpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlNb2R1bGVEZWZfU2xvdCBzbG90c19jcmVhdGVfcmFpc2VbXSA9IHsKKyAgICB7UHlfbW9kX2NyZWF0ZSwgY3JlYXRlZnVuY19yYWlzZX0sCisgICAgezAsIE5VTEx9LAorfTsKKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9jcmVhdGVfcmFpc2UgPSBURVNUX01PRFVMRV9ERUYoCisgICAgIl90ZXN0bXVsdGlwaGFzZV9jcmVhdGVfbnVsbCIsIHNsb3RzX2NyZWF0ZV9yYWlzZSwgTlVMTCk7CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX2NyZWF0ZV9yYWlzZShQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX2NyZWF0ZV9yYWlzZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2NyZWF0ZWZ1bmNfdW5yZXBvcnRlZF9leGNlcHRpb24oUHlPYmplY3QgKnNwZWMsIFB5TW9kdWxlRGVmICpkZWYpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiYmFkIGNyZWF0ZSBmdW5jdGlvbiIpOworICAgIHJldHVybiBQeU1vZHVsZV9OZXcoImZvbyIpOworfQorCitzdGF0aWMgUHlNb2R1bGVEZWZfU2xvdCBzbG90c19jcmVhdGVfdW5yZXBvcnRlZF9leGNlcHRpb25bXSA9IHsKKyAgICB7UHlfbW9kX2NyZWF0ZSwgY3JlYXRlZnVuY191bnJlcG9ydGVkX2V4Y2VwdGlvbn0sCisgICAgezAsIE5VTEx9LAorfTsKKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9jcmVhdGVfdW5yZXBvcnRlZF9leGNlcHRpb24gPSBURVNUX01PRFVMRV9ERUYoCisgICAgIl90ZXN0bXVsdGlwaGFzZV9jcmVhdGVfdW5yZXBvcnRlZF9leGNlcHRpb24iLCBzbG90c19jcmVhdGVfdW5yZXBvcnRlZF9leGNlcHRpb24sIE5VTEwpOworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9jcmVhdGVfdW5yZXBvcnRlZF9leGNlcHRpb24oUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJmRlZl9jcmVhdGVfdW5yZXBvcnRlZF9leGNlcHRpb24pOworfQorCitzdGF0aWMgUHlNb2R1bGVEZWZfU2xvdCBzbG90c19ub25tb2R1bGVfd2l0aF9leGVjX3Nsb3RzW10gPSB7CisgICAge1B5X21vZF9jcmVhdGUsIGNyZWF0ZWZ1bmNfbm9ubW9kdWxlfSwKKyAgICB7UHlfbW9kX2V4ZWMsIGV4ZWNmdW5jfSwKKyAgICB7MCwgTlVMTH0sCit9OworCitzdGF0aWMgUHlNb2R1bGVEZWYgZGVmX25vbm1vZHVsZV93aXRoX2V4ZWNfc2xvdHMgPSBURVNUX01PRFVMRV9ERUYoCisgICAgIl90ZXN0bXVsdGlwaGFzZV9ub25tb2R1bGVfd2l0aF9leGVjX3Nsb3RzIiwgc2xvdHNfbm9ubW9kdWxlX3dpdGhfZXhlY19zbG90cywgTlVMTCk7CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX25vbm1vZHVsZV93aXRoX2V4ZWNfc2xvdHMoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJmRlZl9ub25tb2R1bGVfd2l0aF9leGVjX3Nsb3RzKTsKK30KKworc3RhdGljIGludAorZXhlY2Z1bmNfZXJyKFB5T2JqZWN0ICptb2QpCit7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgUHlNb2R1bGVEZWZfU2xvdCBzbG90c19leGVjX2VycltdID0geworICAgIHtQeV9tb2RfZXhlYywgZXhlY2Z1bmNfZXJyfSwKKyAgICB7MCwgTlVMTH0sCit9OworCitzdGF0aWMgUHlNb2R1bGVEZWYgZGVmX2V4ZWNfZXJyID0gVEVTVF9NT0RVTEVfREVGKAorICAgICJfdGVzdG11bHRpcGhhc2VfZXhlY19lcnIiLCBzbG90c19leGVjX2VyciwgTlVMTCk7CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX2V4ZWNfZXJyKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZkZWZfZXhlY19lcnIpOworfQorCitzdGF0aWMgaW50CitleGVjZnVuY19yYWlzZShQeU9iamVjdCAqc3BlYykKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJiYWQgZXhlYyBmdW5jdGlvbiIpOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIFB5TW9kdWxlRGVmX1Nsb3Qgc2xvdHNfZXhlY19yYWlzZVtdID0geworICAgIHtQeV9tb2RfZXhlYywgZXhlY2Z1bmNfcmFpc2V9LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfZXhlY19yYWlzZSA9IFRFU1RfTU9EVUxFX0RFRigKKyAgICAiX3Rlc3RtdWx0aXBoYXNlX2V4ZWNfcmFpc2UiLCBzbG90c19leGVjX3JhaXNlLCBOVUxMKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfZXhlY19yYWlzZShQeU9iamVjdCAqbW9kKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZkZWZfZXhlY19yYWlzZSk7Cit9CisKK3N0YXRpYyBpbnQKK2V4ZWNmdW5jX3VucmVwb3J0ZWRfZXhjZXB0aW9uKFB5T2JqZWN0ICptb2QpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiYmFkIGV4ZWMgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5TW9kdWxlRGVmX1Nsb3Qgc2xvdHNfZXhlY191bnJlcG9ydGVkX2V4Y2VwdGlvbltdID0geworICAgIHtQeV9tb2RfZXhlYywgZXhlY2Z1bmNfdW5yZXBvcnRlZF9leGNlcHRpb259LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfZXhlY191bnJlcG9ydGVkX2V4Y2VwdGlvbiA9IFRFU1RfTU9EVUxFX0RFRigKKyAgICAiX3Rlc3RtdWx0aXBoYXNlX2V4ZWNfdW5yZXBvcnRlZF9leGNlcHRpb24iLCBzbG90c19leGVjX3VucmVwb3J0ZWRfZXhjZXB0aW9uLCBOVUxMKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfZXhlY191bnJlcG9ydGVkX2V4Y2VwdGlvbihQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX2V4ZWNfdW5yZXBvcnRlZF9leGNlcHRpb24pOworfQorCisvKioqIEhlbHBlciBmb3IgaW1wIHRlc3QgKioqLworCitzdGF0aWMgUHlNb2R1bGVEZWYgaW1wX2R1bW15X2RlZiA9IFRFU1RfTU9EVUxFX0RFRigiaW1wX2R1bW15IiwgbWFpbl9zbG90cywgdGVzdGV4cG9ydF9tZXRob2RzKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9pbXBfZHVtbXkoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJmltcF9kdW1teV9kZWYpOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGhyZWFkbW9kdWxlLmMgYi9Nb2R1bGVzL190aHJlYWRtb2R1bGUuYwppbmRleCBmODBmNzZhLi5iY2IzYWVlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL190aHJlYWRtb2R1bGUuYworKysgYi9Nb2R1bGVzL190aHJlYWRtb2R1bGUuYwpAQCAtNDksMjEgKzQ5LDE4IEBACiAgKiB0aW1lb3V0LgogICovCiBzdGF0aWMgUHlMb2NrU3RhdHVzCi1hY3F1aXJlX3RpbWVkKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrLCBQWV9USU1FT1VUX1QgbWljcm9zZWNvbmRzKQorYWNxdWlyZV90aW1lZChQeVRocmVhZF90eXBlX2xvY2sgbG9jaywgX1B5VGltZV90IHRpbWVvdXQpCiB7CiAgICAgUHlMb2NrU3RhdHVzIHI7Ci0gICAgX1B5VGltZV90aW1ldmFsIGN1cnRpbWU7Ci0gICAgX1B5VGltZV90aW1ldmFsIGVuZHRpbWU7CisgICAgX1B5VGltZV90IGVuZHRpbWUgPSAwOworICAgIF9QeVRpbWVfdCBtaWNyb3NlY29uZHM7CiAKLQotICAgIGlmIChtaWNyb3NlY29uZHMgPiAwKSB7Ci0gICAgICAgIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCZlbmR0aW1lKTsKLSAgICAgICAgZW5kdGltZS50dl9zZWMgKz0gbWljcm9zZWNvbmRzIC8gKDEwMDAgKiAxMDAwKTsKLSAgICAgICAgZW5kdGltZS50dl91c2VjICs9IG1pY3Jvc2Vjb25kcyAlICgxMDAwICogMTAwMCk7Ci0gICAgfQotCisgICAgaWYgKHRpbWVvdXQgPiAwKQorICAgICAgICBlbmR0aW1lID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICsgdGltZW91dDsKIAogICAgIGRvIHsKKyAgICAgICAgbWljcm9zZWNvbmRzID0gX1B5VGltZV9Bc01pY3Jvc2Vjb25kcyh0aW1lb3V0LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworCiAgICAgICAgIC8qIGZpcnN0IGEgc2ltcGxlIG5vbi1ibG9ja2luZyB0cnkgd2l0aG91dCByZWxlYXNpbmcgdGhlIEdJTCAqLwogICAgICAgICByID0gUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKGxvY2ssIDAsIDApOwogICAgICAgICBpZiAociA9PSBQWV9MT0NLX0ZBSUxVUkUgJiYgbWljcm9zZWNvbmRzICE9IDApIHsKQEAgLTgyLDE0ICs3OSwxMiBAQAogCiAgICAgICAgICAgICAvKiBJZiB3ZSdyZSB1c2luZyBhIHRpbWVvdXQsIHJlY29tcHV0ZSB0aGUgdGltZW91dCBhZnRlciBwcm9jZXNzaW5nCiAgICAgICAgICAgICAgKiBzaWduYWxzLCBzaW5jZSB0aG9zZSBjYW4gdGFrZSB0aW1lLiAgKi8KLSAgICAgICAgICAgIGlmIChtaWNyb3NlY29uZHMgPiAwKSB7Ci0gICAgICAgICAgICAgICAgX1B5VGltZV9nZXR0aW1lb2ZkYXkoJmN1cnRpbWUpOwotICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kcyA9ICgoZW5kdGltZS50dl9zZWMgLSBjdXJ0aW1lLnR2X3NlYykgKiAxMDAwMDAwICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZHRpbWUudHZfdXNlYyAtIGN1cnRpbWUudHZfdXNlYykpOworICAgICAgICAgICAgaWYgKHRpbWVvdXQgPiAwKSB7CisgICAgICAgICAgICAgICAgdGltZW91dCA9IGVuZHRpbWUgLSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CiAKICAgICAgICAgICAgICAgICAvKiBDaGVjayBmb3IgbmVnYXRpdmUgdmFsdWVzLCBzaW5jZSB0aG9zZSBtZWFuIGJsb2NrIGZvcmV2ZXIuCiAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgaWYgKG1pY3Jvc2Vjb25kcyA8PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKHRpbWVvdXQgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgIHIgPSBQWV9MT0NLX0ZBSUxVUkU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtOTksNDQgKzk0LDYxIEBACiAgICAgcmV0dXJuIHI7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1sb2NrX1B5VGhyZWFkX2FjcXVpcmVfbG9jayhsb2Nrb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitzdGF0aWMgaW50Citsb2NrX2FjcXVpcmVfcGFyc2VfYXJncyhQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMsCisgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX3QgKnRpbWVvdXQpCiB7CiAgICAgY2hhciAqa3dsaXN0W10gPSB7ImJsb2NraW5nIiwgInRpbWVvdXQiLCBOVUxMfTsKICAgICBpbnQgYmxvY2tpbmcgPSAxOwotICAgIGRvdWJsZSB0aW1lb3V0ID0gLTE7Ci0gICAgUFlfVElNRU9VVF9UIG1pY3Jvc2Vjb25kczsKLSAgICBQeUxvY2tTdGF0dXMgcjsKKyAgICBQeU9iamVjdCAqdGltZW91dF9vYmogPSBOVUxMOworICAgIGNvbnN0IF9QeVRpbWVfdCB1bnNldF90aW1lb3V0ID0gX1B5VGltZV9Gcm9tU2Vjb25kcygtMSk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGlkOmFjcXVpcmUiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJsb2NraW5nLCAmdGltZW91dCkpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICp0aW1lb3V0ID0gdW5zZXRfdGltZW91dCA7CiAKLSAgICBpZiAoIWJsb2NraW5nICYmIHRpbWVvdXQgIT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJjYW4ndCBzcGVjaWZ5IGEgdGltZW91dCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9yIGEgbm9uLWJsb2NraW5nIGNhbGwiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxpTzphY3F1aXJlIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZibG9ja2luZywgJnRpbWVvdXRfb2JqKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKHRpbWVvdXRfb2JqCisgICAgICAgICYmIF9QeVRpbWVfRnJvbVNlY29uZHNPYmplY3QodGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X29iaiwgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmICghYmxvY2tpbmcgJiYgKnRpbWVvdXQgIT0gdW5zZXRfdGltZW91dCApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3BlY2lmeSBhIHRpbWVvdXQgZm9yIGEgbm9uLWJsb2NraW5nIGNhbGwiKTsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBpZiAodGltZW91dCA8IDAgJiYgdGltZW91dCAhPSAtMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInRpbWVvdXQgdmFsdWUgbXVzdCBiZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAic3RyaWN0bHkgcG9zaXRpdmUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCp0aW1lb3V0IDwgMCAmJiAqdGltZW91dCAhPSB1bnNldF90aW1lb3V0KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgdmFsdWUgbXVzdCBiZSBwb3NpdGl2ZSIpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmICghYmxvY2tpbmcpCi0gICAgICAgIG1pY3Jvc2Vjb25kcyA9IDA7Ci0gICAgZWxzZSBpZiAodGltZW91dCA9PSAtMSkKLSAgICAgICAgbWljcm9zZWNvbmRzID0gLTE7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRpbWVvdXQgKj0gMWU2OwotICAgICAgICBpZiAodGltZW91dCA+PSAoZG91YmxlKSBQWV9USU1FT1VUX01BWCkgeworICAgICAgICAqdGltZW91dCA9IDA7CisgICAgZWxzZSBpZiAoKnRpbWVvdXQgIT0gdW5zZXRfdGltZW91dCkgeworICAgICAgICBfUHlUaW1lX3QgbWljcm9zZWNvbmRzOworCisgICAgICAgIG1pY3Jvc2Vjb25kcyA9IF9QeVRpbWVfQXNNaWNyb3NlY29uZHMoKnRpbWVvdXQsIF9QeVRpbWVfUk9VTkRfQ0VJTElORyk7CisgICAgICAgIGlmIChtaWNyb3NlY29uZHMgPj0gUFlfVElNRU9VVF9NQVgpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IHZhbHVlIGlzIHRvbyBsYXJnZSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgbWljcm9zZWNvbmRzID0gKFBZX1RJTUVPVVRfVCkgdGltZW91dDsKICAgICB9CisgICAgcmV0dXJuIDA7Cit9CiAKLSAgICByID0gYWNxdWlyZV90aW1lZChzZWxmLT5sb2NrX2xvY2ssIG1pY3Jvc2Vjb25kcyk7CitzdGF0aWMgUHlPYmplY3QgKgorbG9ja19QeVRocmVhZF9hY3F1aXJlX2xvY2sobG9ja29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIF9QeVRpbWVfdCB0aW1lb3V0OworICAgIFB5TG9ja1N0YXR1cyByOworCisgICAgaWYgKGxvY2tfYWNxdWlyZV9wYXJzZV9hcmdzKGFyZ3MsIGt3ZHMsICZ0aW1lb3V0KSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgciA9IGFjcXVpcmVfdGltZWQoc2VsZi0+bG9ja19sb2NrLCB0aW1lb3V0KTsKICAgICBpZiAociA9PSBQWV9MT0NLX0lOVFIpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTkyLDYgKzIwNCwxMyBAQAogXG5cCiBSZXR1cm4gd2hldGhlciB0aGUgbG9jayBpcyBpbiB0aGUgbG9ja2VkIHN0YXRlLiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgorbG9ja19yZXByKGxvY2tvYmplY3QgKnNlbGYpCit7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8JXMgJXMgb2JqZWN0IGF0ICVwPiIsCisgICAgICAgIHNlbGYtPmxvY2tlZCA/ICJsb2NrZWQiIDogInVubG9ja2VkIiwgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSwgc2VsZik7Cit9CisKIHN0YXRpYyBQeU1ldGhvZERlZiBsb2NrX21ldGhvZHNbXSA9IHsKICAgICB7ImFjcXVpcmVfbG9jayIsIChQeUNGdW5jdGlvbilsb2NrX1B5VGhyZWFkX2FjcXVpcmVfbG9jaywKICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgYWNxdWlyZV9kb2N9LApAQCAtMjIzLDcgKzI0Miw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCisgICAgKHJlcHJmdW5jKWxvY2tfcmVwciwgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KQEAgLTI3NCw0MSArMjkzLDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogcmxvY2tfYWNxdWlyZShybG9ja29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJibG9ja2luZyIsICJ0aW1lb3V0IiwgTlVMTH07Ci0gICAgaW50IGJsb2NraW5nID0gMTsKLSAgICBkb3VibGUgdGltZW91dCA9IC0xOwotICAgIFBZX1RJTUVPVVRfVCBtaWNyb3NlY29uZHM7CisgICAgX1B5VGltZV90IHRpbWVvdXQ7CiAgICAgbG9uZyB0aWQ7CiAgICAgUHlMb2NrU3RhdHVzIHIgPSBQWV9MT0NLX0FDUVVJUkVEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxpZDphY3F1aXJlIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZibG9ja2luZywgJnRpbWVvdXQpKQorICAgIGlmIChsb2NrX2FjcXVpcmVfcGFyc2VfYXJncyhhcmdzLCBrd2RzLCAmdGltZW91dCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICghYmxvY2tpbmcgJiYgdGltZW91dCAhPSAtMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImNhbid0IHNwZWNpZnkgYSB0aW1lb3V0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgYSBub24tYmxvY2tpbmcgY2FsbCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKHRpbWVvdXQgPCAwICYmIHRpbWVvdXQgIT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0aW1lb3V0IHZhbHVlIG11c3QgYmUgIgotICAgICAgICAgICAgICAgICAgICAgICAgInN0cmljdGx5IHBvc2l0aXZlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoIWJsb2NraW5nKQotICAgICAgICBtaWNyb3NlY29uZHMgPSAwOwotICAgIGVsc2UgaWYgKHRpbWVvdXQgPT0gLTEpCi0gICAgICAgIG1pY3Jvc2Vjb25kcyA9IC0xOwotICAgIGVsc2UgewotICAgICAgICB0aW1lb3V0ICo9IDFlNjsKLSAgICAgICAgaWYgKHRpbWVvdXQgPj0gKGRvdWJsZSkgUFlfVElNRU9VVF9NQVgpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IHZhbHVlIGlzIHRvbyBsYXJnZSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgbWljcm9zZWNvbmRzID0gKFBZX1RJTUVPVVRfVCkgdGltZW91dDsKLSAgICB9Ci0KICAgICB0aWQgPSBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCk7CiAgICAgaWYgKHNlbGYtPnJsb2NrX2NvdW50ID4gMCAmJiB0aWQgPT0gc2VsZi0+cmxvY2tfb3duZXIpIHsKICAgICAgICAgdW5zaWduZWQgbG9uZyBjb3VudCA9IHNlbGYtPnJsb2NrX2NvdW50ICsgMTsKQEAgLTMyMCw3ICszMTEsNyBAQAogICAgICAgICBzZWxmLT5ybG9ja19jb3VudCA9IGNvdW50OwogICAgICAgICBQeV9SRVRVUk5fVFJVRTsKICAgICB9Ci0gICAgciA9IGFjcXVpcmVfdGltZWQoc2VsZi0+cmxvY2tfbG9jaywgbWljcm9zZWNvbmRzKTsKKyAgICByID0gYWNxdWlyZV90aW1lZChzZWxmLT5ybG9ja19sb2NrLCB0aW1lb3V0KTsKICAgICBpZiAociA9PSBQWV9MT0NLX0FDUVVJUkVEKSB7CiAgICAgICAgIGFzc2VydChzZWxmLT5ybG9ja19jb3VudCA9PSAwKTsKICAgICAgICAgc2VsZi0+cmxvY2tfb3duZXIgPSB0aWQ7CkBAIC00NzUsOCArNDY2LDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogcmxvY2tfcmVwcihybG9ja29iamVjdCAqc2VsZikKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjwlcyBvd25lcj0lbGQgY291bnQ9JWx1PiIsCi0gICAgICAgIFB5X1RZUEUoc2VsZiktPnRwX25hbWUsIHNlbGYtPnJsb2NrX293bmVyLCBzZWxmLT5ybG9ja19jb3VudCk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8JXMgJXMgb2JqZWN0IG93bmVyPSVsZCBjb3VudD0lbHUgYXQgJXA+IiwKKyAgICAgICAgc2VsZi0+cmxvY2tfY291bnQgPyAibG9ja2VkIiA6ICJ1bmxvY2tlZCIsCisgICAgICAgIFB5X1RZUEUoc2VsZiktPnRwX25hbWUsIHNlbGYtPnJsb2NrX293bmVyLAorICAgICAgICBzZWxmLT5ybG9ja19jb3VudCwgc2VsZik7CiB9CiAKIApAQCAtMTM1OSw3ICsxMzUyLDkgQEAKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfX3RocmVhZCh2b2lkKQogewotICAgIFB5T2JqZWN0ICptLCAqZCwgKnRpbWVvdXRfbWF4OworICAgIFB5T2JqZWN0ICptLCAqZCwgKnY7CisgICAgZG91YmxlIHRpbWVfbWF4OworICAgIGRvdWJsZSB0aW1lb3V0X21heDsKIAogICAgIC8qIEluaXRpYWxpemUgdHlwZXM6ICovCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmbG9jYWxkdW1teXR5cGUpIDwgMCkKQEAgLTEzNzYsMTAgKzEzNzEsMTQgQEAKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHRpbWVvdXRfbWF4ID0gUHlGbG9hdF9Gcm9tRG91YmxlKFBZX1RJTUVPVVRfTUFYIC8gMTAwMDAwMCk7Ci0gICAgaWYgKCF0aW1lb3V0X21heCkKKyAgICB0aW1lb3V0X21heCA9IFBZX1RJTUVPVVRfTUFYIC8gMTAwMDAwMDsKKyAgICB0aW1lX21heCA9IGZsb29yKF9QeVRpbWVfQXNTZWNvbmRzRG91YmxlKF9QeVRpbWVfTUFYKSk7CisgICAgdGltZW91dF9tYXggPSBQeV9NSU4odGltZW91dF9tYXgsIHRpbWVfbWF4KTsKKworICAgIHYgPSBQeUZsb2F0X0Zyb21Eb3VibGUodGltZW91dF9tYXgpOworICAgIGlmICghdikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiVElNRU9VVF9NQVgiLCB0aW1lb3V0X21heCkgPCAwKQorICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIlRJTUVPVVRfTUFYIiwgdikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIEFkZCBhIHN5bWJvbGljIGNvbnN0YW50ICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL190a2ludGVyLmMgYi9Nb2R1bGVzL190a2ludGVyLmMKaW5kZXggNTIwMjViYi4uNDFhZDVmOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGtpbnRlci5jCisrKyBiL01vZHVsZXMvX3RraW50ZXIuYwpAQCAtOSw4ICs5LDggQEAKIAogLyogVENML1RLIFZFUlNJT04gSU5GTzoKIAotICAgIE9ubHkgVGNsL1RrIDguMy4xIGFuZCBsYXRlciBhcmUgc3VwcG9ydGVkLiAgT2xkZXIgdmVyc2lvbnMgYXJlIG5vdAotICAgIHN1cHBvcnRlZC4gVXNlIFB5dGhvbiAyLjYgb3Igb2xkZXIgaWYgeW91IGNhbm5vdCB1cGdyYWRlIHlvdXIKKyAgICBPbmx5IFRjbC9UayA4LjQgYW5kIGxhdGVyIGFyZSBzdXBwb3J0ZWQuICBPbGRlciB2ZXJzaW9ucyBhcmUgbm90CisgICAgc3VwcG9ydGVkLiBVc2UgUHl0aG9uIDMuNCBvciBvbGRlciBpZiB5b3UgY2Fubm90IHVwZ3JhZGUgeW91cgogICAgIFRjbC9UayBsaWJyYXJpZXMuCiAqLwogCkBAIC0yMSw2ICsyMSw3IEBACiAKICovCiAKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSA8Y3R5cGUuaD4KQEAgLTM2LDEzICszNyw2IEBACiAjZGVmaW5lIENIRUNLX1NJWkUoc2l6ZSwgZWxlbXNpemUpIFwKICAgICAoKHNpemVfdCkoc2l6ZSkgPD0gUHlfTUlOKChzaXplX3QpSU5UX01BWCwgVUlOVF9NQVggLyAoc2l6ZV90KShlbGVtc2l6ZSkpKQogCi0vKiBTdGFydGluZyB3aXRoIFRjbCA4LjQsIG1hbnkgQVBJcyBvZmZlciBjb25zdC1jb3JyZWN0bmVzcy4gIFVuZm9ydHVuYXRlbHksCi0gICBtYWtpbmcgX3RraW50ZXIgY29ycmVjdCBmb3IgdGhpcyBBUEkgbWVhbnMgdG8gYnJlYWsgZWFybGllcgotICAgdmVyc2lvbnMuIFVTRV9DT01QQVRfQ09OU1QgYWxsb3dzIHRvIG1ha2UgX3RraW50ZXIgd29yayB3aXRoIGJvdGggOC40IGFuZAotICAgZWFybGllciB2ZXJzaW9ucy4gT25jZSBUY2wgcmVsZWFzZXMgYmVmb3JlIDguNCBkb24ndCBuZWVkIHRvIGJlIHN1cHBvcnRlZAotICAgYW55bW9yZSwgdGhpcyBzaG91bGQgZ28uICovCi0jZGVmaW5lIFVTRV9DT01QQVRfQ09OU1QKLQogLyogSWYgVGNsIGlzIGNvbXBpbGVkIGZvciB0aHJlYWRzLCB3ZSBtdXN0IGFsc28gZGVmaW5lIFRDTF9USFJFQUQuIFdlIGRlZmluZQogICAgaXQgYWx3YXlzOyBpZiBUY2wgaXMgbm90IHRocmVhZGVkLCB0aGUgdGhyZWFkIGZ1bmN0aW9ucyBpbgogICAgVGNsIGFyZSBlbXB0eS4gICovCkBAIC01OCwxNSArNTIsOCBAQAogCiAjaW5jbHVkZSAidGtpbnRlci5oIgogCi0vKiBGb3IgVGNsIDguMiBhbmQgOC4zLCBDT05TVCogaXMgbm90IGRlZmluZWQgKGV4Y2VwdCBvbiBDeWd3aW4pLiAqLwotI2lmbmRlZiBDT05TVDg0X1JFVFVSTgotI2RlZmluZSBDT05TVDg0X1JFVFVSTgotI3VuZGVmIENPTlNUCi0jZGVmaW5lIENPTlNUCi0jZW5kaWYKLQotI2lmIFRLX0hFWF9WRVJTSU9OIDwgMHgwODAzMDIwMQotI2Vycm9yICJUayBvbGRlciB0aGFuIDguMy4xIG5vdCBzdXBwb3J0ZWQiCisjaWYgVEtfSEVYX1ZFUlNJT04gPCAweDA4MDQwMjAwCisjZXJyb3IgIlRrIG9sZGVyIHRoYW4gOC40IG5vdCBzdXBwb3J0ZWQiCiAjZW5kaWYKIAogI2lmIFRLX0hFWF9WRVJTSU9OID49IDB4MDgwNTAyMDggJiYgVEtfSEVYX1ZFUlNJT04gPCAweDA4MDYwMDAwIHx8IFwKQEAgLTExNCw3ICsxMDEsNjUgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAjaW5jbHVkZSA8Y29uaW8uaD4KICNkZWZpbmUgV0FJVF9GT1JfU1RESU4KKworc3RhdGljIFB5T2JqZWN0ICoKK19nZXRfdGNsX2xpYl9wYXRoKCkKK3sKKyAgICBzdGF0aWMgUHlPYmplY3QgKnRjbF9saWJyYXJ5X3BhdGggPSBOVUxMOworICAgIHN0YXRpYyBpbnQgYWxyZWFkeV9jaGVja2VkID0gMDsKKworICAgIGlmIChhbHJlYWR5X2NoZWNrZWQgPT0gMCkgeworICAgICAgICBQeU9iamVjdCAqcHJlZml4OworICAgICAgICBzdHJ1Y3Qgc3RhdCBzdGF0X2J1ZjsKKyAgICAgICAgaW50IHN0YXRfcmV0dXJuX3ZhbHVlOworCisgICAgICAgIHByZWZpeCA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoUHlfR2V0UHJlZml4KCksIC0xKTsKKyAgICAgICAgaWYgKHByZWZpeCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIENoZWNrIGV4cGVjdGVkIGxvY2F0aW9uIGZvciBhbiBpbnN0YWxsZWQgUHl0aG9uIGZpcnN0ICovCisgICAgICAgIHRjbF9saWJyYXJ5X3BhdGggPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiXFx0Y2xcXHRjbCIgVENMX1ZFUlNJT04pOworICAgICAgICBpZiAodGNsX2xpYnJhcnlfcGF0aCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICB0Y2xfbGlicmFyeV9wYXRoID0gUHlVbmljb2RlX0NvbmNhdChwcmVmaXgsIHRjbF9saWJyYXJ5X3BhdGgpOworICAgICAgICBpZiAodGNsX2xpYnJhcnlfcGF0aCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzdGF0X3JldHVybl92YWx1ZSA9IF9QeV9zdGF0KHRjbF9saWJyYXJ5X3BhdGgsICZzdGF0X2J1Zik7CisgICAgICAgIGlmIChzdGF0X3JldHVybl92YWx1ZSA9PSAtMikgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXRfcmV0dXJuX3ZhbHVlID09IC0xKSB7CisgICAgICAgICAgICAvKiBpbnN0YWxsIGxvY2F0aW9uIGRvZXNuJ3QgZXhpc3QsIHJlc2V0IGVycm5vIGFuZCBzZWUgaWYKKyAgICAgICAgICAgICAgIHdlJ3JlIGEgcmVwb3NpdG9yeSBidWlsZCAqLworICAgICAgICAgICAgZXJybm8gPSAwOworI2lmZGVmIFB5X1RDTFRLX0RJUgorICAgICAgICAgICAgdGNsX2xpYnJhcnlfcGF0aCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVENMVEtfRElSICJcXGxpYlxcdGNsIiBUQ0xfVkVSU0lPTik7CisgICAgICAgICAgICBpZiAodGNsX2xpYnJhcnlfcGF0aCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0X3JldHVybl92YWx1ZSA9IF9QeV9zdGF0KHRjbF9saWJyYXJ5X3BhdGgsICZzdGF0X2J1Zik7CisgICAgICAgICAgICBpZiAoc3RhdF9yZXR1cm5fdmFsdWUgPT0gLTIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdGF0X3JldHVybl92YWx1ZSA9PSAtMSkgeworICAgICAgICAgICAgICAgIC8qIHRjbHRrRGlyIGZvciBhIHJlcG9zaXRvcnkgYnVpbGQgZG9lc24ndCBleGlzdCBlaXRoZXIsCisgICAgICAgICAgICAgICAgICAgcmVzZXQgZXJybm8gYW5kIGxlYXZlIFRjbCB0byBpdHMgb3duIGRldmljZXMgKi8KKyAgICAgICAgICAgICAgICBlcnJubyA9IDA7CisgICAgICAgICAgICAgICAgdGNsX2xpYnJhcnlfcGF0aCA9IE5VTEw7CisgICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgdGNsX2xpYnJhcnlfcGF0aCA9IE5VTEw7CiAjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBhbHJlYWR5X2NoZWNrZWQgPSAxOworICAgIH0KKyAgICByZXR1cm4gdGNsX2xpYnJhcnlfcGF0aDsKK30KKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKICNpZmRlZiBXSVRIX1RIUkVBRAogCkBAIC0zODUsMTAgKzQzMCwxMCBAQAogCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TcGxpdChjaGFyICpsaXN0KQorU3BsaXQoY29uc3QgY2hhciAqbGlzdCkKIHsKICAgICBpbnQgYXJnYzsKLSAgICBjaGFyICoqYXJndjsKKyAgICBjb25zdCBjaGFyICoqYXJndjsKICAgICBQeU9iamVjdCAqdjsKIAogICAgIGlmIChsaXN0ID09IE5VTEwpIHsKQEAgLTQzMiw3ICs0NzcsNyBAQAogU3BsaXRPYmooUHlPYmplY3QgKmFyZykKIHsKICAgICBpZiAoUHlUdXBsZV9DaGVjayhhcmcpKSB7Ci0gICAgICAgIGludCBpLCBzaXplOworICAgICAgICBQeV9zc2l6ZV90IGksIHNpemU7CiAgICAgICAgIFB5T2JqZWN0ICplbGVtLCAqbmV3ZWxlbSwgKnJlc3VsdDsKIAogICAgICAgICBzaXplID0gUHlUdXBsZV9TaXplKGFyZyk7CkBAIC00NDgsNyArNDkzLDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgaW50IGs7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBrOwogICAgICAgICAgICAgICAgIGlmIChuZXdlbGVtID09IGVsZW0pIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ld2VsZW0pOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTQ2OCw5ICs1MTMsMjkgQEAKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIC8qIEZhbGwgdGhyb3VnaCwgcmV0dXJuaW5nIGFyZy4gKi8KICAgICB9CisgICAgZWxzZSBpZiAoUHlMaXN0X0NoZWNrKGFyZykpIHsKKyAgICAgICAgUHlfc3NpemVfdCBpLCBzaXplOworICAgICAgICBQeU9iamVjdCAqZWxlbSwgKm5ld2VsZW0sICpyZXN1bHQ7CisKKyAgICAgICAgc2l6ZSA9IFB5TGlzdF9HRVRfU0laRShhcmcpOworICAgICAgICByZXN1bHQgPSBQeVR1cGxlX05ldyhzaXplKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgLyogUmVjdXJzaXZlbHkgaW52b2tlIFNwbGl0T2JqIGZvciBhbGwgbGlzdCBpdGVtcy4gKi8KKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBlbGVtID0gUHlMaXN0X0dFVF9JVEVNKGFyZywgaSk7CisgICAgICAgICAgICBuZXdlbGVtID0gU3BsaXRPYmooZWxlbSk7CisgICAgICAgICAgICBpZiAoIW5ld2VsZW0pIHsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeVR1cGxlX1NldEl0ZW0ocmVzdWx0LCBpLCBuZXdlbGVtKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewogICAgICAgICBpbnQgYXJnYzsKLSAgICAgICAgY2hhciAqKmFyZ3Y7CisgICAgICAgIGNvbnN0IGNoYXIgKiphcmd2OwogICAgICAgICBjaGFyICpsaXN0ID0gUHlVbmljb2RlX0FzVVRGOChhcmcpOwogCiAgICAgICAgIGlmIChsaXN0ID09IE5VTEwgfHwKQEAgLTQ4NSw3ICs1NTAsNyBAQAogICAgIH0KICAgICBlbHNlIGlmIChQeUJ5dGVzX0NoZWNrKGFyZykpIHsKICAgICAgICAgaW50IGFyZ2M7Ci0gICAgICAgIGNoYXIgKiphcmd2OworICAgICAgICBjb25zdCBjaGFyICoqYXJndjsKICAgICAgICAgY2hhciAqbGlzdCA9IFB5Qnl0ZXNfQXNTdHJpbmcoYXJnKTsKIAogICAgICAgICBpZiAoVGNsX1NwbGl0TGlzdCgoVGNsX0ludGVycCAqKU5VTEwsIGxpc3QsICZhcmdjLCAmYXJndikgIT0gVENMX09LKSB7CkBAIC01MDIsNiArNTY3LDE0IEBACiB9CiAKIAorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF90a2ludGVyCitjbGFzcyBfdGtpbnRlci50a2FwcCAiVGthcHBPYmplY3QgKiIgIiZUa2FwcF9UeXBlX3NwZWMiCitjbGFzcyBfdGtpbnRlci5UY2xfT2JqICJQeVRjbE9iamVjdCAqIiAiJlB5VGNsT2JqZWN0X1R5cGVfc3BlYyIKK2NsYXNzIF90a2ludGVyLnRrdGltZXJ0b2tlbiAiVGt0dE9iamVjdCAqIiAiJlRrdHRfVHlwZV9zcGVjIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YjFlYmYxNWMxNjJlZTIyOV0qLworCiAvKioqKiBUa2FwcCBPYmplY3QgKioqKi8KIAogI2lmbmRlZiBXSVRIX0FQUElOSVQKQEAgLTU1Miw4ICs2MjUsOSBAQAogc3RhdGljIHZvaWQgRGlzYWJsZUV2ZW50SG9vayh2b2lkKTsgLyogRm9yd2FyZCAqLwogCiBzdGF0aWMgVGthcHBPYmplY3QgKgotVGthcHBfTmV3KGNoYXIgKnNjcmVlbk5hbWUsIGNoYXIgKmNsYXNzTmFtZSwKLSAgICAgICAgICBpbnQgaW50ZXJhY3RpdmUsIGludCB3YW50b2JqZWN0cywgaW50IHdhbnRUaywgaW50IHN5bmMsIGNoYXIgKnVzZSkKK1RrYXBwX05ldyhjb25zdCBjaGFyICpzY3JlZW5OYW1lLCBjb25zdCBjaGFyICpjbGFzc05hbWUsCisgICAgICAgICAgaW50IGludGVyYWN0aXZlLCBpbnQgd2FudG9iamVjdHMsIGludCB3YW50VGssIGludCBzeW5jLAorICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZSkKIHsKICAgICBUa2FwcE9iamVjdCAqdjsKICAgICBjaGFyICphcmd2MDsKQEAgLTYxMCw3ICs2ODQsNyBAQAogICAgICAgICBUY2xfU2V0VmFyKHYtPmludGVycCwgInRjbF9pbnRlcmFjdGl2ZSIsICIwIiwgVENMX0dMT0JBTF9PTkxZKTsKIAogICAgIC8qIFRoaXMgaXMgdXNlZCB0byBnZXQgdGhlIGFwcGxpY2F0aW9uIGNsYXNzIGZvciBUayA0LjEgYW5kIHVwICovCi0gICAgYXJndjAgPSAoY2hhciopYXR0ZW1wdGNrYWxsb2Moc3RybGVuKGNsYXNzTmFtZSkgKyAxKTsKKyAgICBhcmd2MCA9IChjaGFyKilQeU1lbV9NYWxsb2Moc3RybGVuKGNsYXNzTmFtZSkgKyAxKTsKICAgICBpZiAoIWFyZ3YwKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIFB5X0RFQ1JFRih2KTsKQEAgLTYyMSw3ICs2OTUsNyBAQAogICAgIGlmIChQeV9JU1VQUEVSKFB5X0NIQVJNQVNLKGFyZ3YwWzBdKSkpCiAgICAgICAgIGFyZ3YwWzBdID0gUHlfVE9MT1dFUihQeV9DSEFSTUFTSyhhcmd2MFswXSkpOwogICAgIFRjbF9TZXRWYXIodi0+aW50ZXJwLCAiYXJndjAiLCBhcmd2MCwgVENMX0dMT0JBTF9PTkxZKTsKLSAgICBja2ZyZWUoYXJndjApOworICAgIFB5TWVtX0ZyZWUoYXJndjApOwogCiAgICAgaWYgKCEgd2FudFRrKSB7CiAgICAgICAgIFRjbF9TZXRWYXIodi0+aW50ZXJwLApAQCAtNjM3LDE0ICs3MTEsMTQgQEAKICAgICAvKiBzb21lIGluaXRpYWwgYXJndW1lbnRzIG5lZWQgdG8gYmUgaW4gYXJndiAqLwogICAgIGlmIChzeW5jIHx8IHVzZSkgewogICAgICAgICBjaGFyICphcmdzOwotICAgICAgICBpbnQgbGVuID0gMDsKKyAgICAgICAgUHlfc3NpemVfdCBsZW4gPSAwOwogCiAgICAgICAgIGlmIChzeW5jKQogICAgICAgICAgICAgbGVuICs9IHNpemVvZiAiLXN5bmMiOwogICAgICAgICBpZiAodXNlKQotICAgICAgICAgICAgbGVuICs9IHN0cmxlbih1c2UpICsgc2l6ZW9mICItdXNlICI7CisgICAgICAgICAgICBsZW4gKz0gc3RybGVuKHVzZSkgKyBzaXplb2YgIi11c2UgIjsgIC8qIG5ldmVyIG92ZXJmbG93cyAqLwogCi0gICAgICAgIGFyZ3MgPSAoY2hhciopYXR0ZW1wdGNrYWxsb2MobGVuKTsKKyAgICAgICAgYXJncyA9IChjaGFyKilQeU1lbV9NYWxsb2MobGVuKTsKICAgICAgICAgaWYgKCFhcmdzKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgUHlfREVDUkVGKHYpOwpAQCAtNjYyLDkgKzczNiwzNiBAQAogICAgICAgICB9CiAKICAgICAgICAgVGNsX1NldFZhcih2LT5pbnRlcnAsICJhcmd2IiwgYXJncywgVENMX0dMT0JBTF9PTkxZKTsKLSAgICAgICAgY2tmcmVlKGFyZ3MpOworICAgICAgICBQeU1lbV9GcmVlKGFyZ3MpOwogICAgIH0KIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB7CisgICAgICAgIFB5T2JqZWN0ICpzdHJfcGF0aDsKKyAgICAgICAgUHlPYmplY3QgKnV0ZjhfcGF0aDsKKyAgICAgICAgRFdPUkQgcmV0OworCisgICAgICAgIHJldCA9IEdldEVudmlyb25tZW50VmFyaWFibGVXKEwiVENMX0xJQlJBUlkiLCBOVUxMLCAwKTsKKyAgICAgICAgaWYgKCFyZXQgJiYgR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfRU5WVkFSX05PVF9GT1VORCkgeworICAgICAgICAgICAgc3RyX3BhdGggPSBfZ2V0X3RjbF9saWJfcGF0aCgpOworICAgICAgICAgICAgaWYgKHN0cl9wYXRoID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0cl9wYXRoICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICB1dGY4X3BhdGggPSBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHN0cl9wYXRoKTsKKyAgICAgICAgICAgICAgICBpZiAodXRmOF9wYXRoID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFRjbF9TZXRWYXIodi0+aW50ZXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgInRjbF9saWJyYXJ5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQXNTdHJpbmcodXRmOF9wYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDTF9HTE9CQUxfT05MWSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHV0ZjhfcGF0aCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChUY2xfQXBwSW5pdCh2LT5pbnRlcnApICE9IFRDTF9PSykgewogICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKil2KTsKICNpZmRlZiBUS0lOVEVSX1BST1RFQ1RfTE9BRFRLCkBAIC05MjksOSArMTAzMCwxNCBAQAogewogICAgIFRjbF9PYmogKnJlc3VsdDsKIAotICAgIGlmIChQeUJ5dGVzX0NoZWNrKHZhbHVlKSkKKyAgICBpZiAoUHlCeXRlc19DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUodmFsdWUpID49IElOVF9NQVgpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAiYnl0ZXMgb2JqZWN0IGlzIHRvbyBsb25nIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gVGNsX05ld0J5dGVBcnJheU9iaigodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRSh2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KVB5Qnl0ZXNfR0VUX1NJWkUodmFsdWUpKTsKKyAgICB9CiAKICAgICBpZiAoUHlCb29sX0NoZWNrKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIFRjbF9OZXdCb29sZWFuT2JqKFB5T2JqZWN0X0lzVHJ1ZSh2YWx1ZSkpOwpAQCAtOTcwLDI0ICsxMDc2LDI4IEBACiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sodmFsdWUpKQogICAgICAgICByZXR1cm4gVGNsX05ld0RvdWJsZU9iaihQeUZsb2F0X0FTX0RPVUJMRSh2YWx1ZSkpOwogCi0gICAgaWYgKFB5VHVwbGVfQ2hlY2sodmFsdWUpKSB7CisgICAgaWYgKFB5VHVwbGVfQ2hlY2sodmFsdWUpIHx8IFB5TGlzdF9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgVGNsX09iaiAqKmFyZ3Y7CiAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwgaTsKIAotICAgICAgICBzaXplID0gUHlUdXBsZV9TaXplKHZhbHVlKTsKKyAgICAgICAgc2l6ZSA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRSh2YWx1ZSk7CiAgICAgICAgIGlmIChzaXplID09IDApCiAgICAgICAgICAgICByZXR1cm4gVGNsX05ld0xpc3RPYmooMCwgTlVMTCk7CiAgICAgICAgIGlmICghQ0hFQ0tfU0laRShzaXplLCBzaXplb2YoVGNsX09iaiAqKSkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAidHVwbGUgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfQ2hlY2sodmFsdWUpID8gInR1cGxlIGlzIHRvbyBsb25nIiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBpcyB0b28gbG9uZyIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgYXJndiA9IChUY2xfT2JqICoqKSBhdHRlbXB0Y2thbGxvYygoKHNpemVfdClzaXplKSAqIHNpemVvZihUY2xfT2JqICopKTsKLSAgICAgICAgaWYoIWFyZ3YpCi0gICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGFyZ3YgPSAoVGNsX09iaiAqKikgUHlNZW1fTWFsbG9jKCgoc2l6ZV90KXNpemUpICogc2l6ZW9mKFRjbF9PYmogKikpOworICAgICAgICBpZiAoIWFyZ3YpIHsKKyAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspCi0gICAgICAgICAgYXJndltpXSA9IEFzT2JqKFB5VHVwbGVfR2V0SXRlbSh2YWx1ZSxpKSk7Ci0gICAgICAgIHJlc3VsdCA9IFRjbF9OZXdMaXN0T2JqKFB5VHVwbGVfU2l6ZSh2YWx1ZSksIGFyZ3YpOwotICAgICAgICBja2ZyZWUoRlJFRUNBU1QgYXJndik7CisgICAgICAgICAgYXJndltpXSA9IEFzT2JqKFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTSh2YWx1ZSxpKSk7CisgICAgICAgIHJlc3VsdCA9IFRjbF9OZXdMaXN0T2JqKChpbnQpc2l6ZSwgYXJndik7CisgICAgICAgIFB5TWVtX0ZyZWUoYXJndik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xMDEyLDkgKzExMjIsOSBAQAogICAgICAgICB9CiAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh2YWx1ZSk7CiAgICAgICAgIGlmIChraW5kID09IHNpemVvZihUY2xfVW5pQ2hhcikpCi0gICAgICAgICAgICByZXR1cm4gVGNsX05ld1VuaWNvZGVPYmooaW5idWYsIHNpemUpOworICAgICAgICAgICAgcmV0dXJuIFRjbF9OZXdVbmljb2RlT2JqKGluYnVmLCAoaW50KXNpemUpOwogICAgICAgICBhbGxvY3NpemUgPSAoKHNpemVfdClzaXplKSAqIHNpemVvZihUY2xfVW5pQ2hhcik7Ci0gICAgICAgIG91dGJ1ZiA9IChUY2xfVW5pQ2hhciopYXR0ZW1wdGNrYWxsb2MoYWxsb2NzaXplKTsKKyAgICAgICAgb3V0YnVmID0gKFRjbF9VbmlDaGFyKilQeU1lbV9NYWxsb2MoYWxsb2NzaXplKTsKICAgICAgICAgLyogRWxzZSBvdmVyZmxvdyBvY2N1cnJlZCwgYW5kIHdlIHRha2UgdGhlIG5leHQgZXhpdCAqLwogICAgICAgICBpZiAoIW91dGJ1ZikgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTEwMzEsMTQgKzExNDEsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlciBVKyV4IGlzIGFib3ZlIHRoZSByYW5nZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoVSswMDAwLVUrRkZGRikgYWxsb3dlZCBieSBUY2wiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCk7Ci0gICAgICAgICAgICAgICAgY2tmcmVlKEZSRUVDQVNUIG91dGJ1Zik7CisgICAgICAgICAgICAgICAgUHlNZW1fRnJlZShvdXRidWYpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICBvdXRidWZbaV0gPSBjaDsKICAgICAgICAgfQotICAgICAgICByZXN1bHQgPSBUY2xfTmV3VW5pY29kZU9iaihvdXRidWYsIHNpemUpOwotICAgICAgICBja2ZyZWUoRlJFRUNBU1Qgb3V0YnVmKTsKKyAgICAgICAgcmVzdWx0ID0gVGNsX05ld1VuaWNvZGVPYmoob3V0YnVmLCAoaW50KXNpemUpOworICAgICAgICBQeU1lbV9GcmVlKG91dGJ1Zik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xMDY3LDcgKzExNzcsNiBAQAogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoYm9vbFZhbHVlKTsKIH0KIAotI2lmZGVmIFRDTF9XSURFX0lOVF9UWVBFCiBzdGF0aWMgUHlPYmplY3QqCiBmcm9tV2lkZUludE9iaihQeU9iamVjdCogdGthcHAsIFRjbF9PYmogKnZhbHVlKQogewpAQCAtMTA4NCw3ICsxMTkzLDYgQEAKICAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKIH0KLSNlbmRpZgogCiAjaWZkZWYgSEFWRV9MSUJUT01NQU1USAogc3RhdGljIFB5T2JqZWN0KgpAQCAtMTE1Nyw3ICsxMjY1LDYgQEAKICAgICAgICAgICAgZmFsbCB0aHJvdWdoIHRvIHdpZGVJbnQgaGFuZGxpbmcuICovCiAgICAgfQogCi0jaWZkZWYgVENMX1dJREVfSU5UX1RZUEUKICAgICBpZiAodmFsdWUtPnR5cGVQdHIgPT0gYXBwLT5JbnRUeXBlIHx8CiAgICAgICAgIHZhbHVlLT50eXBlUHRyID09IGFwcC0+V2lkZUludFR5cGUpIHsKICAgICAgICAgcmVzdWx0ID0gZnJvbVdpZGVJbnRPYmoodGthcHAsIHZhbHVlKTsKQEAgLTExNjcsNyArMTI3NCw2IEBACiAgICAgICAgIC8qIElmIHRoZXJlIGlzIGFuIGVycm9yIGluIHRoZSB3aWRlSW50IGNvbnZlcnNpb24sCiAgICAgICAgICAgIGZhbGwgdGhyb3VnaCB0byBiaWdudW0gaGFuZGxpbmcuICovCiAgICAgfQotI2VuZGlmCiAKICNpZmRlZiBIQVZFX0xJQlRPTU1BTVRICiAgICAgaWYgKHZhbHVlLT50eXBlUHRyID09IGFwcC0+SW50VHlwZSB8fApAQCAtMTI1OCw3ICsxMzY0LDcgQEAKICAgICBmb3IgKGkgPSAwOyBpIDwgb2JqYzsgaSsrKQogICAgICAgICBUY2xfRGVjclJlZkNvdW50KG9ianZbaV0pOwogICAgIGlmIChvYmp2ICE9IG9ialN0b3JlKQotICAgICAgICBja2ZyZWUoRlJFRUNBU1Qgb2Jqdik7CisgICAgICAgIFB5TWVtX0ZyZWUob2Jqdik7CiB9CiAKIC8qIENvbnZlcnQgUHl0aG9uIG9iamVjdHMgdG8gVGNsIG9iamVjdHMuIFRoaXMgbXVzdCBoYXBwZW4gaW4gdGhlCkBAIC0xMjcyLDcgKzEzNzgsNyBAQAogICAgIGlmIChhcmdzID09IE5VTEwpCiAgICAgICAgIC8qIGRvIG5vdGhpbmcgKi87CiAKLSAgICBlbHNlIGlmICghUHlUdXBsZV9DaGVjayhhcmdzKSkgeworICAgIGVsc2UgaWYgKCEoUHlUdXBsZV9DaGVjayhhcmdzKSB8fCBQeUxpc3RfQ2hlY2soYXJncykpKSB7CiAgICAgICAgIG9ianZbMF0gPSBBc09iaihhcmdzKTsKICAgICAgICAgaWYgKG9ianZbMF0gPT0gMCkKICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKQEAgLTEyODAsMTQgKzEzODYsMTYgQEAKICAgICAgICAgVGNsX0luY3JSZWZDb3VudChvYmp2WzBdKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIG9iamMgPSBQeVR1cGxlX1NpemUoYXJncyk7CisgICAgICAgIG9iamMgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoYXJncyk7CiAKICAgICAgICAgaWYgKG9iamMgPiBBUkdTWikgewogICAgICAgICAgICAgaWYgKCFDSEVDS19TSVpFKG9iamMsIHNpemVvZihUY2xfT2JqICopKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAidHVwbGUgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9DaGVjayhhcmdzKSA/ICJ0dXBsZSBpcyB0b28gbG9uZyIgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpc3QgaXMgdG9vIGxvbmciKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG9ianYgPSAoVGNsX09iaiAqKilhdHRlbXB0Y2thbGxvYygoKHNpemVfdClvYmpjKSAqIHNpemVvZihUY2xfT2JqICopKTsKKyAgICAgICAgICAgIG9ianYgPSAoVGNsX09iaiAqKilQeU1lbV9NYWxsb2MoKChzaXplX3Qpb2JqYykgKiBzaXplb2YoVGNsX09iaiAqKSk7CiAgICAgICAgICAgICBpZiAob2JqdiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICBvYmpjID0gMDsKQEAgLTEyOTYsNyArMTQwNCw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2JqYzsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqdiA9IFB5VHVwbGVfR2V0SXRlbShhcmdzLCBpKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGFyZ3MsIGkpOwogICAgICAgICAgICAgaWYgKHYgPT0gUHlfTm9uZSkgewogICAgICAgICAgICAgICAgIG9iamMgPSBpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTMxMSwxMCArMTQxOSwxMCBAQAogICAgICAgICAgICAgVGNsX0luY3JSZWZDb3VudChvYmp2W2ldKTsKICAgICAgICAgfQogICAgIH0KLSAgICAqcG9iamMgPSBvYmpjOworICAgICpwb2JqYyA9IChpbnQpb2JqYzsKICAgICByZXR1cm4gb2JqdjsKIGZpbmFsbHk6Ci0gICAgVGthcHBfQ2FsbERlYWxsb2NBcmdzKG9ianYsIG9ialN0b3JlLCBvYmpjKTsKKyAgICBUa2FwcF9DYWxsRGVhbGxvY0FyZ3Mob2Jqdiwgb2JqU3RvcmUsIChpbnQpb2JqYyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTE0NzQsMTYgKzE1ODIsMjEgQEAKIH0KIAogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5ldmFsCisKKyAgICBzY3JpcHQ6IHN0cgorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfRXZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9ldmFsX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKnNjcmlwdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNGI3OTgzMWY3MDBkZWEwIGlucHV0PTQ4MTQ4NDEyM2E0NTVmMjJdKi8KIHsKLSAgICBjaGFyICpzY3JpcHQ7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgaW50IGVycjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpldmFsIiwgJnNjcmlwdCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChzY3JpcHQpOwogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogCkBAIC0xNDkxLDIzICsxNjA0LDI4IEBACiAgICAgZXJyID0gVGNsX0V2YWwoVGthcHBfSW50ZXJwKHNlbGYpLCBzY3JpcHQpOwogICAgIEVOVEVSX09WRVJMQVAKICAgICBpZiAoZXJyID09IFRDTF9FUlJPUikKLSAgICAgICAgcmVzID0gVGtpbnRlcl9FcnJvcihzZWxmKTsKKyAgICAgICAgcmVzID0gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKICAgICBlbHNlCiAgICAgICAgIHJlcyA9IHVuaWNvZGVGcm9tVGNsU3RyaW5nKFRrYXBwX1Jlc3VsdChzZWxmKSk7CiAgICAgTEVBVkVfT1ZFUkxBUF9UQ0wKICAgICByZXR1cm4gcmVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5ldmFsZmlsZQorCisgICAgZmlsZU5hbWU6IHN0cgorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfRXZhbEZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfZXZhbGZpbGVfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqZmlsZU5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjNiZTg4ZGNlZTRmMTFkMyBpbnB1dD04NzNhYjcwN2U1ZTk0N2UxXSovCiB7Ci0gICAgY2hhciAqZmlsZU5hbWU7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgaW50IGVycjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpldmFsZmlsZSIsICZmaWxlTmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChmaWxlTmFtZSk7CiAgICAgQ0hFQ0tfVENMX0FQUEFSVE1FTlQ7CiAKQEAgLTE1MTUsMjMgKzE2MzMsMjggQEAKICAgICBlcnIgPSBUY2xfRXZhbEZpbGUoVGthcHBfSW50ZXJwKHNlbGYpLCBmaWxlTmFtZSk7CiAgICAgRU5URVJfT1ZFUkxBUAogICAgIGlmIChlcnIgPT0gVENMX0VSUk9SKQotICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgIGVsc2UKICAgICAgICAgcmVzID0gdW5pY29kZUZyb21UY2xTdHJpbmcoVGthcHBfUmVzdWx0KHNlbGYpKTsKICAgICBMRUFWRV9PVkVSTEFQX1RDTAogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLnJlY29yZAorCisgICAgc2NyaXB0OiBzdHIKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX1JlY29yZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9yZWNvcmRfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqc2NyaXB0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBmZmUwOGEwMDYxNzMwZGYgaW5wdXQ9YzBiMGRiNWEyMTQxMmNhY10qLwogewotICAgIGNoYXIgKnNjcmlwdDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBpbnQgZXJyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnJlY29yZCIsICZzY3JpcHQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIENIRUNLX1NUUklOR19MRU5HVEgoc2NyaXB0KTsKICAgICBDSEVDS19UQ0xfQVBQQVJUTUVOVDsKIApAQCAtMTUzOSwyMCArMTY2MiwyNSBAQAogICAgIGVyciA9IFRjbF9SZWNvcmRBbmRFdmFsKFRrYXBwX0ludGVycChzZWxmKSwgc2NyaXB0LCBUQ0xfTk9fRVZBTCk7CiAgICAgRU5URVJfT1ZFUkxBUAogICAgIGlmIChlcnIgPT0gVENMX0VSUk9SKQotICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgIGVsc2UKICAgICAgICAgcmVzID0gdW5pY29kZUZyb21UY2xTdHJpbmcoVGthcHBfUmVzdWx0KHNlbGYpKTsKICAgICBMRUFWRV9PVkVSTEFQX1RDTAogICAgIHJldHVybiByZXM7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9BZGRFcnJvckluZm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGNoYXIgKm1zZzsKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmFkZGVycmluZm8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczphZGRlcnJvcmluZm8iLCAmbXNnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbXNnOiBzdHIKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2FkZGVycmluZm9faW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqbXNnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBlMjIyZWUyMDUwZWIzNTcgaW5wdXQ9NDk3MTM5OTMxN2Q0YzEzNl0qLworewogICAgIENIRUNLX1NUUklOR19MRU5HVEgobXNnKTsKICAgICBDSEVDS19UQ0xfQVBQQVJUTUVOVDsKIApAQCAtMTU4NSw2ICsxNzEzLDE1IEBACiB9IFZhckV2ZW50OwogI2VuZGlmCiAKKy8qW3B5dGhvbl0KKworY2xhc3MgdmFybmFtZV9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdjb25zdCBjaGFyIConCisgICAgY29udmVydGVyID0gJ3Zhcm5hbWVfY29udmVydGVyJworCitbcHl0aG9uXSovCisvKltweXRob24gY2hlY2tzdW06IGRhMzlhM2VlNWU2YjRiMGQzMjU1YmZlZjk1NjAxODkwYWZkODA3MDldKi8KKwogc3RhdGljIGludAogdmFybmFtZV9jb252ZXJ0ZXIoUHlPYmplY3QgKmluLCB2b2lkICpfb3V0KQogewpAQCAtMTU5Niw4ICsxNzMzLDggQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIHMgPSBQeUJ5dGVzX0FzU3RyaW5nKGluKTsKLSAgICAgICAgaWYgKHN0cmxlbihzKSAhPSBQeUJ5dGVzX1NpemUoaW4pKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm51bGwgYnl0ZSBpbiBieXRlcyBvYmplY3QiKTsKKyAgICAgICAgaWYgKHN0cmxlbihzKSAhPSAoc2l6ZV90KVB5Qnl0ZXNfU2l6ZShpbikpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBieXRlIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICAqb3V0ID0gczsKQEAgLTE2MTMsOCArMTc1MCw4IEBACiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInN0cmluZyBpcyB0b28gbG9uZyIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHN0cmxlbihzKSAhPSBzaXplKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm51bGwgY2hhcmFjdGVyIGluIHN0cmluZyIpOworICAgICAgICBpZiAoc3RybGVuKHMpICE9IChzaXplX3Qpc2l6ZSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgKm91dCA9IHM7CkBAIC0xNjY3LDcgKzE4MDQsNiBAQAogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgVGthcHBPYmplY3QgKnNlbGYgPSAoVGthcHBPYmplY3QqKXNlbGZwdHI7CiAgICAgaWYgKHNlbGYtPnRocmVhZGVkICYmIHNlbGYtPnRocmVhZF9pZCAhPSBUY2xfR2V0Q3VycmVudFRocmVhZCgpKSB7Ci0gICAgICAgIFRrYXBwT2JqZWN0ICpzZWxmID0gKFRrYXBwT2JqZWN0KilzZWxmcHRyOwogICAgICAgICBWYXJFdmVudCAqZXY7CiAgICAgICAgIFB5T2JqZWN0ICpyZXMsICpleGNfdHlwZSwgKmV4Y192YWw7CiAgICAgICAgIFRjbF9Db25kaXRpb24gY29uZCA9IE5VTEw7CkBAIC0xODYyLDMxICsxOTk4LDM5IEBACiAKIC8qKiBUY2wgdG8gUHl0aG9uICoqLwogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5nZXRpbnQKKworICAgIGFyZzogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9HZXRJbnQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfZ2V0aW50KFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg4Y2YyOTNmYWUzMDdjZmUgaW5wdXQ9MDM0MDI2OTk3YzViOTFmOF0qLwogewogICAgIGNoYXIgKnM7Ci0jaWYgZGVmaW5lZChUQ0xfV0lERV9JTlRfVFlQRSkgfHwgZGVmaW5lZChIQVZFX0xJQlRPTU1BTVRIKQogICAgIFRjbF9PYmogKnZhbHVlOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0jZWxzZQotICAgIGludCBpbnRWYWx1ZTsKLSNlbmRpZgogCi0gICAgaWYgKFB5VHVwbGVfU2l6ZShhcmdzKSA9PSAxKSB7Ci0gICAgICAgIFB5T2JqZWN0KiBvID0gUHlUdXBsZV9HZXRJdGVtKGFyZ3MsIDApOwotICAgICAgICBpZiAoUHlMb25nX0NoZWNrKG8pKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYobyk7Ci0gICAgICAgICAgICByZXR1cm4gbzsKLSAgICAgICAgfQorICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkgeworICAgICAgICBQeV9JTkNSRUYoYXJnKTsKKyAgICAgICAgcmV0dXJuIGFyZzsKICAgICB9Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmdldGludCIsICZzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChzKTsKLSNpZiBkZWZpbmVkKFRDTF9XSURFX0lOVF9UWVBFKSB8fCBkZWZpbmVkKEhBVkVfTElCVE9NTUFNVEgpCi0gICAgdmFsdWUgPSBUY2xfTmV3U3RyaW5nT2JqKHMsIC0xKTsKLSAgICBpZiAodmFsdWUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIFRraW50ZXJfRXJyb3Ioc2VsZik7CisKKyAgICBpZiAoUHlUY2xPYmplY3RfQ2hlY2soYXJnKSkgeworICAgICAgICB2YWx1ZSA9ICgoUHlUY2xPYmplY3QqKWFyZyktPnZhbHVlOworICAgICAgICBUY2xfSW5jclJlZkNvdW50KHZhbHVlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpnZXRpbnQiLCAmcykpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChzKTsKKyAgICAgICAgdmFsdWUgPSBUY2xfTmV3U3RyaW5nT2JqKHMsIC0xKTsKKyAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKKyAgICB9CiAgICAgLyogRG9uJ3QgdXNlIFRjbF9HZXRJbnQoKSBiZWNhdXNlIGl0IHJldHVybnMgYW1iaWd1b3VzIHJlc3VsdCBmb3IgdmFsdWUKICAgICAgICBpbiByYW5nZXMgLTIqKjMyLi4tMioqMzEtMSBhbmQgMioqMzEuLjIqKjMyLTEgKG9uIDMyLWJpdCBwbGF0Zm9ybSkuCiAKQEAgLTE4OTQsNDMgKzIwMzgsNjcgQEAKICAgICAgICB2YWx1ZSBpbiByYW5nZXMgLTIqKjY0Li4tMioqNjMtMSBhbmQgMioqNjMuLjIqKjY0LTEgKG9uIDMyLWJpdCBwbGF0Zm9ybSkuCiAgICAgICovCiAjaWZkZWYgSEFWRV9MSUJUT01NQU1USAotICAgIHJlc3VsdCA9IGZyb21CaWdudW1PYmooc2VsZiwgdmFsdWUpOworICAgIHJlc3VsdCA9IGZyb21CaWdudW1PYmooKFB5T2JqZWN0ICopc2VsZiwgdmFsdWUpOwogI2Vsc2UKLSAgICByZXN1bHQgPSBmcm9tV2lkZUludE9iaihzZWxmLCB2YWx1ZSk7CisgICAgcmVzdWx0ID0gZnJvbVdpZGVJbnRPYmooKFB5T2JqZWN0ICopc2VsZiwgdmFsdWUpOwogI2VuZGlmCiAgICAgVGNsX0RlY3JSZWZDb3VudCh2YWx1ZSk7CiAgICAgaWYgKHJlc3VsdCAhPSBOVUxMIHx8IFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIGlmIChUY2xfR2V0SW50KFRrYXBwX0ludGVycChzZWxmKSwgcywgJmludFZhbHVlKSA9PSBUQ0xfT0spCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoaW50VmFsdWUpOwotI2VuZGlmCi0gICAgcmV0dXJuIFRraW50ZXJfRXJyb3Ioc2VsZik7CisgICAgcmV0dXJuIFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmdldGRvdWJsZQorCisgICAgYXJnOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX0dldERvdWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9nZXRkb3VibGUoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzUyYjEzOGJkOGI5NTZiOSBpbnB1dD0yMjAxNTcyOWNlOWVmN2Y4XSovCiB7CiAgICAgY2hhciAqczsKICAgICBkb3VibGUgdjsKIAotICAgIGlmIChQeVR1cGxlX1NpemUoYXJncykgPT0gMSkgewotICAgICAgICBQeU9iamVjdCAqbyA9IFB5VHVwbGVfR2V0SXRlbShhcmdzLCAwKTsKLSAgICAgICAgaWYgKFB5RmxvYXRfQ2hlY2sobykpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihvKTsKLSAgICAgICAgICAgIHJldHVybiBvOwotICAgICAgICB9CisgICAgaWYgKFB5RmxvYXRfQ2hlY2soYXJnKSkgeworICAgICAgICBQeV9JTkNSRUYoYXJnKTsKKyAgICAgICAgcmV0dXJuIGFyZzsKICAgICB9Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmdldGRvdWJsZSIsICZzKSkKKworICAgIGlmIChQeU51bWJlcl9DaGVjayhhcmcpKSB7CisgICAgICAgIHJldHVybiBQeU51bWJlcl9GbG9hdChhcmcpOworICAgIH0KKworICAgIGlmIChQeVRjbE9iamVjdF9DaGVjayhhcmcpKSB7CisgICAgICAgIGlmIChUY2xfR2V0RG91YmxlRnJvbU9iaihUa2FwcF9JbnRlcnAoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFB5VGNsT2JqZWN0KilhcmcpLT52YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2KSA9PSBUQ0xfRVJST1IpCisgICAgICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh2KTsKKyAgICB9CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6Z2V0ZG91YmxlIiwgJnMpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKHMpOwogICAgIGlmIChUY2xfR2V0RG91YmxlKFRrYXBwX0ludGVycChzZWxmKSwgcywgJnYpID09IFRDTF9FUlJPUikKLSAgICAgICAgcmV0dXJuIFRraW50ZXJfRXJyb3Ioc2VsZik7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImQiLCB2KTsKKyAgICAgICAgcmV0dXJuIFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh2KTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuZ2V0Ym9vbGVhbgorCisgICAgYXJnOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX0dldEJvb2xlYW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCitfdGtpbnRlcl90a2FwcF9nZXRib29sZWFuKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTcyNmE5YWU0NDU4MjFkOTEgaW5wdXQ9N2YxMTI0OGVmOGY4Nzc2ZV0qLwogewogICAgIGNoYXIgKnM7CiAgICAgaW50IHY7CkBAIC0xOTQzLDcgKzIxMTEsNyBAQAogICAgICAgICBpZiAoVGNsX0dldEJvb2xlYW5Gcm9tT2JqKFRrYXBwX0ludGVycChzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFB5VGNsT2JqZWN0KilhcmcpLT52YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdikgPT0gVENMX0VSUk9SKQotICAgICAgICAgICAgcmV0dXJuIFRraW50ZXJfRXJyb3Ioc2VsZik7CisgICAgICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyh2KTsKICAgICB9CiAKQEAgLTE5NTEsMjAgKzIxMTksMjUgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChzKTsKICAgICBpZiAoVGNsX0dldEJvb2xlYW4oVGthcHBfSW50ZXJwKHNlbGYpLCBzLCAmdikgPT0gVENMX0VSUk9SKQotICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcihzZWxmKTsKKyAgICAgICAgcmV0dXJuIFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyh2KTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuZXhwcnN0cmluZworCisgICAgczogc3RyCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9FeHByU3RyaW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX2V4cHJzdHJpbmdfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZWRhMzIzZDNlZDBhYmIxIGlucHV0PWZhNzhmNzUxYWZiMmYyMWJdKi8KIHsKLSAgICBjaGFyICpzOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogICAgIGludCByZXR2YWw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6ZXhwcnN0cmluZyIsICZzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKHMpOwogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogCkBAIC0xOTcyLDI0ICsyMTQ1LDI5IEBACiAgICAgcmV0dmFsID0gVGNsX0V4cHJTdHJpbmcoVGthcHBfSW50ZXJwKHNlbGYpLCBzKTsKICAgICBFTlRFUl9PVkVSTEFQCiAgICAgaWYgKHJldHZhbCA9PSBUQ0xfRVJST1IpCi0gICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3Ioc2VsZik7CisgICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgZWxzZQogICAgICAgICByZXMgPSB1bmljb2RlRnJvbVRjbFN0cmluZyhUa2FwcF9SZXN1bHQoc2VsZikpOwogICAgIExFQVZFX09WRVJMQVBfVENMCiAgICAgcmV0dXJuIHJlczsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuZXhwcmxvbmcKKworICAgIHM6IHN0cgorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfRXhwckxvbmcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfZXhwcmxvbmdfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ZDZhNDZiNjNjNmViY2Y5IGlucHV0PTExYmQ3ZWVlMGM1N2I0ZGNdKi8KIHsKLSAgICBjaGFyICpzOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogICAgIGludCByZXR2YWw7CiAgICAgbG9uZyB2OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmV4cHJsb25nIiwgJnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIENIRUNLX1NUUklOR19MRU5HVEgocyk7CiAgICAgQ0hFQ0tfVENMX0FQUEFSVE1FTlQ7CiAKQEAgLTE5OTcsMjMgKzIxNzUsMjkgQEAKICAgICByZXR2YWwgPSBUY2xfRXhwckxvbmcoVGthcHBfSW50ZXJwKHNlbGYpLCBzLCAmdik7CiAgICAgRU5URVJfT1ZFUkxBUAogICAgIGlmIChyZXR2YWwgPT0gVENMX0VSUk9SKQotICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgIGVsc2UKLSAgICAgICAgcmVzID0gUHlfQnVpbGRWYWx1ZSgibCIsIHYpOworICAgICAgICByZXMgPSBQeUxvbmdfRnJvbUxvbmcodik7CiAgICAgTEVBVkVfT1ZFUkxBUF9UQ0wKICAgICByZXR1cm4gcmVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5leHByZG91YmxlCisKKyAgICBzOiBzdHIKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX0V4cHJEb3VibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfZXhwcmRvdWJsZV9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZmNzhkZjEwODFlYTQxNTggaW5wdXQ9ZmYwMmJjMTE3OTg4MzJkNV0qLwogewotICAgIGNoYXIgKnM7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgZG91YmxlIHY7CiAgICAgaW50IHJldHZhbDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpleHByZG91YmxlIiwgJnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKHMpOwogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogICAgIFB5RlBFX1NUQVJUX1BST1RFQ1QoIlRrYXBwX0V4cHJEb3VibGUiLCByZXR1cm4gMCkKQEAgLTIwMjIsNjEgKzIyMDYsNzQgQEAKICAgICBFTlRFUl9PVkVSTEFQCiAgICAgUHlGUEVfRU5EX1BST1RFQ1QocmV0dmFsKQogICAgIGlmIChyZXR2YWwgPT0gVENMX0VSUk9SKQotICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgIGVsc2UKLSAgICAgICAgcmVzID0gUHlfQnVpbGRWYWx1ZSgiZCIsIHYpOworICAgICAgICByZXMgPSBQeUZsb2F0X0Zyb21Eb3VibGUodik7CiAgICAgTEVBVkVfT1ZFUkxBUF9UQ0wKICAgICByZXR1cm4gcmVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5leHByYm9vbGVhbgorCisgICAgczogc3RyCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9FeHByQm9vbGVhbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9leHByYm9vbGVhbl9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThiMjgwMzhjMjI4ODczMTEgaW5wdXQ9YzhjNjYwMjJiZGI4ZDVkM10qLwogewotICAgIGNoYXIgKnM7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgaW50IHJldHZhbDsKICAgICBpbnQgdjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpleHByYm9vbGVhbiIsICZzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChzKTsKICAgICBDSEVDS19UQ0xfQVBQQVJUTUVOVDsKICAgICBFTlRFUl9UQ0wKICAgICByZXR2YWwgPSBUY2xfRXhwckJvb2xlYW4oVGthcHBfSW50ZXJwKHNlbGYpLCBzLCAmdik7CiAgICAgRU5URVJfT1ZFUkxBUAogICAgIGlmIChyZXR2YWwgPT0gVENMX0VSUk9SKQotICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgIGVsc2UKLSAgICAgICAgcmVzID0gUHlfQnVpbGRWYWx1ZSgiaSIsIHYpOworICAgICAgICByZXMgPSBQeUxvbmdfRnJvbUxvbmcodik7CiAgICAgTEVBVkVfT1ZFUkxBUF9UQ0wKICAgICByZXR1cm4gcmVzOwogfQogCiAKIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuc3BsaXRsaXN0CisKKyAgICBhcmc6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfU3BsaXRMaXN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX3NwbGl0bGlzdChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xM2I1MWQzNDM4NmQzNmZiIGlucHV0PTJiMmUxMzM1MWUzYzBiNTNdKi8KIHsKICAgICBjaGFyICpsaXN0OwogICAgIGludCBhcmdjOwotICAgIGNoYXIgKiphcmd2OwotICAgIFB5T2JqZWN0ICphcmcsICp2OworICAgIGNvbnN0IGNoYXIgKiphcmd2OworICAgIFB5T2JqZWN0ICp2OwogICAgIGludCBpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnNwbGl0bGlzdCIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlUY2xPYmplY3RfQ2hlY2soYXJnKSkgewogICAgICAgICBpbnQgb2JqYzsKICAgICAgICAgVGNsX09iaiAqKm9ianY7CiAgICAgICAgIGlmIChUY2xfTGlzdE9iakdldEVsZW1lbnRzKFRrYXBwX0ludGVycChzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQeVRjbE9iamVjdCopYXJnKS0+dmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvYmpjLCAmb2JqdikgPT0gVENMX0VSUk9SKSB7Ci0gICAgICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcihzZWxmKTsKKyAgICAgICAgICAgIHJldHVybiBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgICAgICB9CiAgICAgICAgIGlmICghKHYgPSBQeVR1cGxlX05ldyhvYmpjKSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG9iamM7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKnMgPSBGcm9tT2JqKHNlbGYsIG9ianZbaV0pOworICAgICAgICAgICAgUHlPYmplY3QgKnMgPSBGcm9tT2JqKChQeU9iamVjdCopc2VsZiwgb2JqdltpXSk7CiAgICAgICAgICAgICBpZiAoIXMgfHwgUHlUdXBsZV9TZXRJdGVtKHYsIGksIHMpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjA4OCwxNSArMjI4NSwxOCBAQAogICAgICAgICBQeV9JTkNSRUYoYXJnKTsKICAgICAgICAgcmV0dXJuIGFyZzsKICAgICB9CisgICAgaWYgKFB5TGlzdF9DaGVjayhhcmcpKSB7CisgICAgICAgIHJldHVybiBQeVNlcXVlbmNlX1R1cGxlKGFyZyk7CisgICAgfQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJldDpzcGxpdGxpc3QiLCAidXRmLTgiLCAmbGlzdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJldDpzcGxpdGxpc3QiLCAidXRmLTgiLCAmbGlzdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChsaXN0KTsKICAgICBpZiAoVGNsX1NwbGl0TGlzdChUa2FwcF9JbnRlcnAoc2VsZiksIGxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgJmFyZ2MsICZhcmd2KSA9PSBUQ0xfRVJST1IpICB7CiAgICAgICAgIFB5TWVtX0ZyZWUobGlzdCk7Ci0gICAgICAgIHJldHVybiBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKICAgICB9CiAKICAgICBpZiAoISh2ID0gUHlUdXBsZV9OZXcoYXJnYykpKQpAQCAtMjExNywxNCArMjMxNywyMSBAQAogICAgIHJldHVybiB2OwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5zcGxpdAorCisgICAgYXJnOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX1NwbGl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX3NwbGl0KFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUwOGFkODMyMzYzZmFjZmQgaW5wdXQ9YTFjNzgzNDllYWNhYTE0MF0qLwogewotICAgIFB5T2JqZWN0ICphcmcsICp2OworICAgIFB5T2JqZWN0ICp2OwogICAgIGNoYXIgKmxpc3Q7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86c3BsaXQiLCAmYXJnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5VGNsT2JqZWN0X0NoZWNrKGFyZykpIHsKICAgICAgICAgVGNsX09iaiAqdmFsdWUgPSAoKFB5VGNsT2JqZWN0KilhcmcpLT52YWx1ZTsKICAgICAgICAgaW50IG9iamM7CkBAIC0yMTMyLDE2ICsyMzM5LDE2IEBACiAgICAgICAgIGludCBpOwogICAgICAgICBpZiAoVGNsX0xpc3RPYmpHZXRFbGVtZW50cyhUa2FwcF9JbnRlcnAoc2VsZiksIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2JqYywgJm9ianYpID09IFRDTF9FUlJPUikgewotICAgICAgICAgICAgcmV0dXJuIEZyb21PYmooc2VsZiwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIEZyb21PYmooKFB5T2JqZWN0KilzZWxmLCB2YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG9iamMgPT0gMCkKICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygiIik7CiAgICAgICAgIGlmIChvYmpjID09IDEpCi0gICAgICAgICAgICByZXR1cm4gRnJvbU9iaihzZWxmLCBvYmp2WzBdKTsKKyAgICAgICAgICAgIHJldHVybiBGcm9tT2JqKChQeU9iamVjdCopc2VsZiwgb2JqdlswXSk7CiAgICAgICAgIGlmICghKHYgPSBQeVR1cGxlX05ldyhvYmpjKSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG9iamM7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKnMgPSBGcm9tT2JqKHNlbGYsIG9ianZbaV0pOworICAgICAgICAgICAgUHlPYmplY3QgKnMgPSBGcm9tT2JqKChQeU9iamVjdCopc2VsZiwgb2JqdltpXSk7CiAgICAgICAgICAgICBpZiAoIXMgfHwgUHlUdXBsZV9TZXRJdGVtKHYsIGksIHMpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjE0OSwxMCArMjM1NiwxMCBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiB2OwogICAgIH0KLSAgICBpZiAoUHlUdXBsZV9DaGVjayhhcmcpKQorICAgIGlmIChQeVR1cGxlX0NoZWNrKGFyZykgfHwgUHlMaXN0X0NoZWNrKGFyZykpCiAgICAgICAgIHJldHVybiBTcGxpdE9iaihhcmcpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJldDpzcGxpdCIsICJ1dGYtOCIsICZsaXN0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImV0OnNwbGl0IiwgInV0Zi04IiwgJmxpc3QpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKGxpc3QpOwogICAgIHYgPSBTcGxpdChsaXN0KTsKQEAgLTIxODMsNyArMjM5MCw3IEBACiAgKiBmdW5jdGlvbiBvciBtZXRob2QuCiAgKi8KIHN0YXRpYyBpbnQKLVB5dGhvbkNtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK1B5dGhvbkNtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKIHsKICAgICBQeXRob25DbWRfQ2xpZW50RGF0YSAqZGF0YSA9IChQeXRob25DbWRfQ2xpZW50RGF0YSAqKWNsaWVudERhdGE7CiAgICAgUHlPYmplY3QgKmZ1bmMsICphcmcsICpyZXM7CkBAIC0yMjUyLDcgKzI0NTksNyBAQAogdHlwZWRlZiBzdHJ1Y3QgQ29tbWFuZEV2ZW50ewogICAgIFRjbF9FdmVudCBldjsKICAgICBUY2xfSW50ZXJwKiBpbnRlcnA7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBjb25zdCBjaGFyICpuYW1lOwogICAgIGludCBjcmVhdGU7CiAgICAgaW50ICpzdGF0dXM7CiAgICAgQ2xpZW50RGF0YSAqZGF0YTsKQEAgLTIyNzUsMTggKzI0ODIsMjUgQEAKIH0KICNlbmRpZgogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5jcmVhdGVjb21tYW5kCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlRrYXBwT2JqZWN0ICoiKQorICAgIG5hbWU6IHN0cgorICAgIGZ1bmM6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfQ3JlYXRlQ29tbWFuZChQeU9iamVjdCAqc2VsZnB0ciwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9jcmVhdGVjb21tYW5kX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmExYzc5YTRlZTJhZjQxMCBpbnB1dD0yYmMyYzA0NmEwOTE0MjM0XSovCiB7Ci0gICAgVGthcHBPYmplY3QgKnNlbGYgPSAoVGthcHBPYmplY3QqKXNlbGZwdHI7CiAgICAgUHl0aG9uQ21kX0NsaWVudERhdGEgKmRhdGE7Ci0gICAgY2hhciAqY21kTmFtZTsKLSAgICBQeU9iamVjdCAqZnVuYzsKICAgICBpbnQgZXJyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTzpjcmVhdGVjb21tYW5kIiwgJmNtZE5hbWUsICZmdW5jKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChjbWROYW1lKTsKKyAgICBDSEVDS19TVFJJTkdfTEVOR1RIKG5hbWUpOwogICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmdW5jKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiY29tbWFuZCBub3QgY2FsbGFibGUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMzAzLDcgKzI1MTcsNyBAQAogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICBQeV9JTkNSRUYoc2VsZik7CiAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgIGRhdGEtPnNlbGYgPSBzZWxmcHRyOworICAgIGRhdGEtPnNlbGYgPSAoUHlPYmplY3QgKikgc2VsZjsKICAgICBkYXRhLT5mdW5jID0gZnVuYzsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIGlmIChzZWxmLT50aHJlYWRlZCAmJiBzZWxmLT50aHJlYWRfaWQgIT0gVGNsX0dldEN1cnJlbnRUaHJlYWQoKSkgewpAQCAtMjMxNyw3ICsyNTMxLDcgQEAKICAgICAgICAgZXYtPmV2LnByb2MgPSAoVGNsX0V2ZW50UHJvYyopVGthcHBfQ29tbWFuZFByb2M7CiAgICAgICAgIGV2LT5pbnRlcnAgPSBzZWxmLT5pbnRlcnA7CiAgICAgICAgIGV2LT5jcmVhdGUgPSAxOwotICAgICAgICBldi0+bmFtZSA9IGNtZE5hbWU7CisgICAgICAgIGV2LT5uYW1lID0gbmFtZTsKICAgICAgICAgZXYtPmRhdGEgPSAoQ2xpZW50RGF0YSlkYXRhOwogICAgICAgICBldi0+c3RhdHVzID0gJmVycjsKICAgICAgICAgZXYtPmRvbmUgPSAmY29uZDsKQEAgLTIzMjksNyArMjU0Myw3IEBACiAgICAgewogICAgICAgICBFTlRFUl9UQ0wKICAgICAgICAgZXJyID0gVGNsX0NyZWF0ZUNvbW1hbmQoCi0gICAgICAgICAgICBUa2FwcF9JbnRlcnAoc2VsZiksIGNtZE5hbWUsIFB5dGhvbkNtZCwKKyAgICAgICAgICAgIFRrYXBwX0ludGVycChzZWxmKSwgbmFtZSwgUHl0aG9uQ21kLAogICAgICAgICAgICAgKENsaWVudERhdGEpZGF0YSwgUHl0aG9uQ21kRGVsZXRlKSA9PSBOVUxMOwogICAgICAgICBMRUFWRV9UQ0wKICAgICB9CkBAIC0yMzQ0LDE2ICsyNTU4LDIyIEBACiAKIAogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5kZWxldGVjb21tYW5kCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlRrYXBwT2JqZWN0ICoiKQorICAgIG5hbWU6IHN0cgorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfRGVsZXRlQ29tbWFuZChQeU9iamVjdCAqc2VsZnB0ciwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9kZWxldGVjb21tYW5kX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTY3ZThjYjU4NDVlMGQyZCBpbnB1dD1iNjMwNjQ2OGYxMGIyMTljXSovCiB7Ci0gICAgVGthcHBPYmplY3QgKnNlbGYgPSAoVGthcHBPYmplY3QqKXNlbGZwdHI7Ci0gICAgY2hhciAqY21kTmFtZTsKICAgICBpbnQgZXJyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmRlbGV0ZWNvbW1hbmQiLCAmY21kTmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIENIRUNLX1NUUklOR19MRU5HVEgoY21kTmFtZSk7CisgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChuYW1lKTsKIAogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgaWYgKHNlbGYtPnRocmVhZGVkICYmIHNlbGYtPnRocmVhZF9pZCAhPSBUY2xfR2V0Q3VycmVudFRocmVhZCgpKSB7CkBAIC0yMzY3LDcgKzI1ODcsNyBAQAogICAgICAgICBldi0+ZXYucHJvYyA9IChUY2xfRXZlbnRQcm9jKilUa2FwcF9Db21tYW5kUHJvYzsKICAgICAgICAgZXYtPmludGVycCA9IHNlbGYtPmludGVycDsKICAgICAgICAgZXYtPmNyZWF0ZSA9IDA7Ci0gICAgICAgIGV2LT5uYW1lID0gY21kTmFtZTsKKyAgICAgICAgZXYtPm5hbWUgPSBuYW1lOwogICAgICAgICBldi0+c3RhdHVzID0gJmVycjsKICAgICAgICAgZXYtPmRvbmUgPSAmY29uZDsKICAgICAgICAgVGthcHBfVGhyZWFkU2VuZChzZWxmLCAoVGNsX0V2ZW50KilldiwgJmNvbmQsCkBAIC0yMzc4LDcgKzI1OTgsNyBAQAogI2VuZGlmCiAgICAgewogICAgICAgICBFTlRFUl9UQ0wKLSAgICAgICAgZXJyID0gVGNsX0RlbGV0ZUNvbW1hbmQoc2VsZi0+aW50ZXJwLCBjbWROYW1lKTsKKyAgICAgICAgZXJyID0gVGNsX0RlbGV0ZUNvbW1hbmQoc2VsZi0+aW50ZXJwLCBuYW1lKTsKICAgICAgICAgTEVBVkVfVENMCiAgICAgfQogICAgIGlmIChlcnIgPT0gLTEpIHsKQEAgLTI0NTksMTcgKzI2NzksMjMgQEAKICAgICBMRUFWRV9QWVRIT04KIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuY3JlYXRlZmlsZWhhbmRsZXIKKworICAgIGZpbGU6IG9iamVjdAorICAgIG1hc2s6IGludAorICAgIGZ1bmM6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfQ3JlYXRlRmlsZUhhbmRsZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotICAgICAvKiBhcmdzIGlzIChmaWxlLCBtYXNrLCBmdW5jKSAqLworX3RraW50ZXJfdGthcHBfY3JlYXRlZmlsZWhhbmRsZXJfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXNrLCBQeU9iamVjdCAqZnVuYykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNzNjZTgyZGU4MDFjMzUzIGlucHV0PTg0OTQzYTUyODZlNDc5NDddKi8KIHsKICAgICBGaWxlSGFuZGxlcl9DbGllbnREYXRhICpkYXRhOwotICAgIFB5T2JqZWN0ICpmaWxlLCAqZnVuYzsKLSAgICBpbnQgbWFzaywgdGZpbGU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9pTzpjcmVhdGVmaWxlaGFuZGxlciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZmaWxlLCAmbWFzaywgJmZ1bmMpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpbnQgdGZpbGU7CiAKICAgICBDSEVDS19UQ0xfQVBQQVJUTUVOVDsKIApAQCAtMjQ5MiwxNCArMjcxOCwxOSBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotVGthcHBfRGVsZXRlRmlsZUhhbmRsZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpmaWxlOwotICAgIGludCB0ZmlsZTsKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmRlbGV0ZWZpbGVoYW5kbGVyCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86ZGVsZXRlZmlsZWhhbmRsZXIiLCAmZmlsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGZpbGU6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZGVsZXRlZmlsZWhhbmRsZXIoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI1M2NjOTZlYmY5NDc2ZmQgaW5wdXQ9YWJiZWMxOWQ2NjMxMmUyYV0qLworeworICAgIGludCB0ZmlsZTsKIAogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogCkBAIC0yNTI4LDE0ICsyNzU5LDIwIEBACiAgICAgUHlPYmplY3QgKmZ1bmM7CiB9IFRrdHRPYmplY3Q7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrdGltZXJ0b2tlbi5kZWxldGV0aW1lcmhhbmRsZXIKKworICAgIHNlbGY6IHNlbGYodHlwZT0iVGt0dE9iamVjdCAqIikKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGt0dF9EZWxldGVUaW1lckhhbmRsZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGt0aW1lcnRva2VuX2RlbGV0ZXRpbWVyaGFuZGxlcl9pbXBsKFRrdHRPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmQ3ZmUxN2YzMjhjZmE1NSBpbnB1dD0yNWJhNWRkNTk0ZTUyMDg0XSovCiB7Ci0gICAgVGt0dE9iamVjdCAqdiA9IChUa3R0T2JqZWN0ICopc2VsZjsKKyAgICBUa3R0T2JqZWN0ICp2ID0gc2VsZjsKICAgICBQeU9iamVjdCAqZnVuYyA9IHYtPmZ1bmM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpkZWxldGV0aW1lcmhhbmRsZXIiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHYtPnRva2VuICE9IE5VTEwpIHsKICAgICAgICAgVGNsX0RlbGV0ZVRpbWVySGFuZGxlcih2LT50b2tlbik7CiAgICAgICAgIHYtPnRva2VuID0gTlVMTDsKQEAgLTI1NDgsMTIgKzI3ODUsNiBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlNZXRob2REZWYgVGt0dF9tZXRob2RzW10gPQotewotICAgIHsiZGVsZXRldGltZXJoYW5kbGVyIiwgVGt0dF9EZWxldGVUaW1lckhhbmRsZXIsIE1FVEhfVkFSQVJHU30sCi0gICAge05VTEwsIE5VTEx9Ci19OwotCiBzdGF0aWMgVGt0dE9iamVjdCAqCiBUa3R0X05ldyhQeU9iamVjdCAqZnVuYykKIHsKQEAgLTI1OTUsMjIgKzI4MjYsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LT5mdW5jID09IE5VTEwgPyAiLCBoYW5kbGVyIGRlbGV0ZWQiIDogIiIpOwogfQogCi1zdGF0aWMgUHlUeXBlX1Nsb3QgVGt0dF9UeXBlX3Nsb3RzW10gPSB7Ci0gICAge1B5X3RwX2RlYWxsb2MsIFRrdHRfRGVhbGxvY30sCi0gICAge1B5X3RwX3JlcHIsIFRrdHRfUmVwcn0sCi0gICAge1B5X3RwX21ldGhvZHMsIFRrdHRfbWV0aG9kc30sCi0gICAgezAsIDB9Ci19OwotCi1zdGF0aWMgUHlUeXBlX1NwZWMgVGt0dF9UeXBlX3NwZWMgPSB7Ci0gICAgIl90a2ludGVyLnRrdGltZXJ0b2tlbiIsCi0gICAgc2l6ZW9mKFRrdHRPYmplY3QpLAotICAgIDAsCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULAotICAgIFRrdHRfVHlwZV9zbG90cywKLX07Ci0KLQogLyoqIFRpbWVyIEhhbmRsZXIgKiovCiAKIHN0YXRpYyB2b2lkCkBAIC0yNjQxLDE2ICsyODU2LDIyIEBACiAgICAgTEVBVkVfUFlUSE9OCiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmNyZWF0ZXRpbWVyaGFuZGxlcgorCisgICAgbWlsbGlzZWNvbmRzOiBpbnQKKyAgICBmdW5jOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX0NyZWF0ZVRpbWVySGFuZGxlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9jcmVhdGV0aW1lcmhhbmRsZXJfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgaW50IG1pbGxpc2Vjb25kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJkYTU5NTliOWQwMzE5MTEgaW5wdXQ9YmE2NzI5ZjMyZjAyNzdhNV0qLwogewotICAgIGludCBtaWxsaXNlY29uZHM7Ci0gICAgUHlPYmplY3QgKmZ1bmM7CiAgICAgVGt0dE9iamVjdCAqdjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86Y3JlYXRldGltZXJoYW5kbGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm1pbGxpc2Vjb25kcywgJmZ1bmMpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2soZnVuYykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImJhZCBhcmd1bWVudCBsaXN0Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjY3MCwxOCArMjg5MSwyMyBAQAogCiAvKiogRXZlbnQgTG9vcCAqKi8KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAubWFpbmxvb3AKKworICAgIHNlbGY6IHNlbGYodHlwZT0iVGthcHBPYmplY3QgKiIpCisgICAgdGhyZXNob2xkOiBpbnQgPSAwCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9NYWluTG9vcChQeU9iamVjdCAqc2VsZnB0ciwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9tYWlubG9vcF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBpbnQgdGhyZXNob2xkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiYThlYWJiZTU3ODQxYjAgaW5wdXQ9YWQ1N2M5YzFkZDJiOTQ3MF0qLwogewotICAgIGludCB0aHJlc2hvbGQgPSAwOwotICAgIFRrYXBwT2JqZWN0ICpzZWxmID0gKFRrYXBwT2JqZWN0KilzZWxmcHRyOwogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKICNlbmRpZgogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTptYWlubG9vcCIsICZ0aHJlc2hvbGQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogICAgIHNlbGYtPmRpc3BhdGNoaW5nID0gMTsKIApAQCAtMjczMyw0NCArMjk1OSw1NiBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotVGthcHBfRG9PbmVFdmVudChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgaW50IGZsYWdzID0gMDsKLSAgICBpbnQgcnY7CisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5kb29uZWV2ZW50CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOmRvb25lZXZlbnQiLCAmZmxhZ3MpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmbGFnczogaW50ID0gMAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZG9vbmVldmVudF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBpbnQgZmxhZ3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjdjNmIyYWE0NjRjYWMyOSBpbnB1dD02NTQyYjkyOGUzNjRiNzkzXSovCit7CisgICAgaW50IHJ2OwogCiAgICAgRU5URVJfVENMCiAgICAgcnYgPSBUY2xfRG9PbmVFdmVudChmbGFncyk7CiAgICAgTEVBVkVfVENMCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBydik7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhydik7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLnF1aXQKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX1F1aXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfcXVpdF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmMjFlZWZmNDgxZjc1NGYgaW5wdXQ9ZTAzMDIwZGMzOGFmZjIzY10qLwogewotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6cXVpdCIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHF1aXRNYWluTG9vcCA9IDE7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmludGVycGFkZHIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX0ludGVycEFkZHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfaW50ZXJwYWRkcl9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZjYWFhZTMyNzNiM2M5NWEgaW5wdXQ9MmRkMzJjYmRkYjU1YTExMV0qLwogewotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6aW50ZXJwYWRkciIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHJldHVybiBQeUxvbmdfRnJvbVZvaWRQdHIoVGthcHBfSW50ZXJwKHNlbGYpKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAubG9hZHRrCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9Ua0luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfbG9hZHRrX2ltcGwoVGthcHBPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTllMTBhOTU0Y2U0NmQyYSBpbnB1dD1iNWU4MmFmZWRkNjM1NGYwXSovCiB7CiAgICAgVGNsX0ludGVycCAqaW50ZXJwID0gVGthcHBfSW50ZXJwKHNlbGYpOwogICAgIGNvbnN0IGNoYXIgKiBfdGtfZXhpc3RzID0gTlVMTDsKQEAgLTI3OTYsNyArMzAzNCw3IEBACiAgICAgaWYgKGVyciA9PSBUQ0xfRVJST1IpIHsKICAgICAgICAgLyogVGhpcyBzZXRzIGFuIGV4Y2VwdGlvbiwgYnV0IHdlIGNhbm5vdCByZXR1cm4gcmlnaHQKICAgICAgICAgICAgYXdheSBiZWNhdXNlIHdlIG5lZWQgdG8gZXhpdCB0aGUgb3ZlcmxhcCBmaXJzdC4gKi8KLSAgICAgICAgVGtpbnRlcl9FcnJvcihzZWxmKTsKKyAgICAgICAgVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKICAgICB9IGVsc2UgewogICAgICAgICBfdGtfZXhpc3RzID0gVGthcHBfUmVzdWx0KHNlbGYpOwogICAgIH0KQEAgLTI4MzEsNTkgKzMwNjksMjMgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX1dpbGxEaXNwYXRjaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17CisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC53aWxsZGlzcGF0Y2gKIAotICAgICgoVGthcHBPYmplY3QqKXNlbGYpLT5kaXNwYXRjaGluZyA9IDE7CisgICAgc2VsZjogc2VsZih0eXBlPSJUa2FwcE9iamVjdCAqIikKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfd2lsbGRpc3BhdGNoX2ltcGwoVGthcHBPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGUzZjQ2ZDI0NDY0MjE1NSBpbnB1dD0yNjMwNjk5NzY3ODA4OTcwXSovCit7CisgICAgc2VsZi0+ZGlzcGF0Y2hpbmcgPSAxOwogCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIAotLyoqKiogVGthcHAgTWV0aG9kIExpc3QgKioqKi8KLQotc3RhdGljIFB5TWV0aG9kRGVmIFRrYXBwX21ldGhvZHNbXSA9Ci17Ci0gICAgeyJ3aWxsZGlzcGF0Y2giLCAgICAgICBUa2FwcF9XaWxsRGlzcGF0Y2gsIE1FVEhfTk9BUkdTfSwKLSAgICB7IndhbnRvYmplY3RzIiwgICAgICAgICAgICBUa2FwcF9XYW50T2JqZWN0cywgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImNhbGwiLCAgICAgICAgICAgICAgICAgICBUa2FwcF9DYWxsLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZXZhbCIsICAgICAgICAgICAgICAgICAgIFRrYXBwX0V2YWwsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJldmFsZmlsZSIsICAgICAgICAgICAgICAgVGthcHBfRXZhbEZpbGUsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJyZWNvcmQiLCAgICAgICAgICAgICAgICAgVGthcHBfUmVjb3JkLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiYWRkZXJyb3JpbmZvIiwgICAgICAgVGthcHBfQWRkRXJyb3JJbmZvLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsic2V0dmFyIiwgICAgICAgICAgICAgICAgIFRrYXBwX1NldFZhciwgTUVUSF9WQVJBUkdTfSwKLSAgICB7Imdsb2JhbHNldHZhciIsICAgICAgIFRrYXBwX0dsb2JhbFNldFZhciwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImdldHZhciIsICAgICAgICAgICAgICAgICBUa2FwcF9HZXRWYXIsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJnbG9iYWxnZXR2YXIiLCAgICAgICBUa2FwcF9HbG9iYWxHZXRWYXIsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1bnNldHZhciIsICAgICAgICAgICAgICAgVGthcHBfVW5zZXRWYXIsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJnbG9iYWx1bnNldHZhciIsICAgICBUa2FwcF9HbG9iYWxVbnNldFZhciwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImdldGludCIsICAgICAgICAgICAgICAgICBUa2FwcF9HZXRJbnQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJnZXRkb3VibGUiLCAgICAgICAgICAgICAgVGthcHBfR2V0RG91YmxlLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZ2V0Ym9vbGVhbiIsICAgICAgICAgICAgIFRrYXBwX0dldEJvb2xlYW4sIE1FVEhfT30sCi0gICAgeyJleHByc3RyaW5nIiwgICAgICAgICAgICAgVGthcHBfRXhwclN0cmluZywgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImV4cHJsb25nIiwgICAgICAgICAgICAgICBUa2FwcF9FeHByTG9uZywgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImV4cHJkb3VibGUiLCAgICAgICAgICAgICBUa2FwcF9FeHByRG91YmxlLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZXhwcmJvb2xlYW4iLCAgICAgICAgVGthcHBfRXhwckJvb2xlYW4sIE1FVEhfVkFSQVJHU30sCi0gICAgeyJzcGxpdGxpc3QiLCAgICAgICAgICAgICAgVGthcHBfU3BsaXRMaXN0LCBNRVRIX1ZBUkFSR1N9LAotICAgIHsic3BsaXQiLCAgICAgICAgICAgICAgICAgIFRrYXBwX1NwbGl0LCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiY3JlYXRlY29tbWFuZCIsICAgICAgVGthcHBfQ3JlYXRlQ29tbWFuZCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImRlbGV0ZWNvbW1hbmQiLCAgICAgIFRrYXBwX0RlbGV0ZUNvbW1hbmQsIE1FVEhfVkFSQVJHU30sCi0jaWZkZWYgSEFWRV9DUkVBVEVGSUxFSEFORExFUgotICAgIHsiY3JlYXRlZmlsZWhhbmRsZXIiLCAgVGthcHBfQ3JlYXRlRmlsZUhhbmRsZXIsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJkZWxldGVmaWxlaGFuZGxlciIsICBUa2FwcF9EZWxldGVGaWxlSGFuZGxlciwgTUVUSF9WQVJBUkdTfSwKLSNlbmRpZgotICAgIHsiY3JlYXRldGltZXJoYW5kbGVyIiwgVGthcHBfQ3JlYXRlVGltZXJIYW5kbGVyLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsibWFpbmxvb3AiLCAgICAgICAgICAgICAgIFRrYXBwX01haW5Mb29wLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZG9vbmVldmVudCIsICAgICAgICAgICAgIFRrYXBwX0RvT25lRXZlbnQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJxdWl0IiwgICAgICAgICAgICAgICAgICAgVGthcHBfUXVpdCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImludGVycGFkZHIiLCAgICAgICAgIFRrYXBwX0ludGVycEFkZHIsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJsb2FkdGsiLCAgICAgICAgICAgICAgICAgVGthcHBfVGtJbml0LCBNRVRIX05PQVJHU30sCi0gICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgTlVMTH0KLX07Ci0KLQotCiAvKioqKiBUa2FwcCBUeXBlIE1ldGhvZHMgKioqKi8KIAogc3RhdGljIHZvaWQKQEAgLTI4OTksNDEgKzMxMDEsMjYgQEAKICAgICBEaXNhYmxlRXZlbnRIb29rKCk7CiB9CiAKLXN0YXRpYyBQeVR5cGVfU2xvdCBUa2FwcF9UeXBlX3Nsb3RzW10gPSB7Ci0gICAge1B5X3RwX2RlYWxsb2MsIFRrYXBwX0RlYWxsb2N9LAotICAgIHtQeV90cF9tZXRob2RzLCBUa2FwcF9tZXRob2RzfSwKLSAgICB7MCwgMH0KLX07Ci0KLQotc3RhdGljIFB5VHlwZV9TcGVjIFRrYXBwX1R5cGVfc3BlYyA9IHsKLSAgICAiX3RraW50ZXIudGthcHAiLAotICAgIHNpemVvZihUa2FwcE9iamVjdCksCi0gICAgMCwKLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsCi0gICAgVGthcHBfVHlwZV9zbG90cywKLX07Ci0KIAogCiAvKioqKiBUa2ludGVyIE1vZHVsZSAqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3QqIHR1cGxlOwotICAgIGludCBzaXplOyAvKiBjdXJyZW50IHNpemUgKi8KLSAgICBpbnQgbWF4c2l6ZTsgLyogYWxsb2NhdGVkIHNpemUgKi8KKyAgICBQeV9zc2l6ZV90IHNpemU7IC8qIGN1cnJlbnQgc2l6ZSAqLworICAgIFB5X3NzaXplX3QgbWF4c2l6ZTsgLyogYWxsb2NhdGVkIHNpemUgKi8KIH0gRmxhdHRlbkNvbnRleHQ7CiAKIHN0YXRpYyBpbnQKLV9idW1wKEZsYXR0ZW5Db250ZXh0KiBjb250ZXh0LCBpbnQgc2l6ZSkKK19idW1wKEZsYXR0ZW5Db250ZXh0KiBjb250ZXh0LCBQeV9zc2l6ZV90IHNpemUpCiB7CiAgICAgLyogZXhwYW5kIHR1cGxlIHRvIGhvbGQgKGF0IGxlYXN0KSBzaXplIG5ldyBpdGVtcy4KICAgICAgICByZXR1cm4gdHJ1ZSBpZiBzdWNjZXNzZnVsLCBmYWxzZSBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCAqLwogCi0gICAgaW50IG1heHNpemUgPSBjb250ZXh0LT5tYXhzaXplICogMjsKKyAgICBQeV9zc2l6ZV90IG1heHNpemUgPSBjb250ZXh0LT5tYXhzaXplICogMjsgIC8qIG5ldmVyIG92ZXJmbG93cyAqLwogCiAgICAgaWYgKG1heHNpemUgPCBjb250ZXh0LT5zaXplICsgc2l6ZSkKLSAgICAgICAgbWF4c2l6ZSA9IGNvbnRleHQtPnNpemUgKyBzaXplOworICAgICAgICBtYXhzaXplID0gY29udGV4dC0+c2l6ZSArIHNpemU7ICAvKiBuZXZlciBvdmVyZmxvd3MgKi8KIAogICAgIGNvbnRleHQtPm1heHNpemUgPSBtYXhzaXplOwogCkBAIC0yOTQ1LDQxICszMTMyLDIxIEBACiB7CiAgICAgLyogYWRkIHR1cGxlIG9yIGxpc3QgdG8gYXJndW1lbnQgdHVwbGUgKHJlY3Vyc2l2ZWx5KSAqLwogCi0gICAgaW50IGksIHNpemU7CisgICAgUHlfc3NpemVfdCBpLCBzaXplOwogCiAgICAgaWYgKGRlcHRoID4gMTAwMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJuZXN0aW5nIHRvbyBkZWVwIGluIF9mbGF0dGVuIik7CiAgICAgICAgIHJldHVybiAwOwotICAgIH0gZWxzZSBpZiAoUHlMaXN0X0NoZWNrKGl0ZW0pKSB7Ci0gICAgICAgIHNpemUgPSBQeUxpc3RfR0VUX1NJWkUoaXRlbSk7CisgICAgfSBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKGl0ZW0pIHx8IFB5TGlzdF9DaGVjayhpdGVtKSkgeworICAgICAgICBzaXplID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGl0ZW0pOwogICAgICAgICAvKiBwcmVhbGxvY2F0ZSAoYXNzdW1lIG5vIG5lc3RpbmcpICovCiAgICAgICAgIGlmIChjb250ZXh0LT5zaXplICsgc2l6ZSA+IGNvbnRleHQtPm1heHNpemUgJiYKICAgICAgICAgICAgICFfYnVtcChjb250ZXh0LCBzaXplKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAvKiBjb3B5IGl0ZW1zIHRvIG91dHB1dCB0dXBsZSAqLwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqbyA9IFB5TGlzdF9HRVRfSVRFTShpdGVtLCBpKTsKLSAgICAgICAgICAgIGlmIChQeUxpc3RfQ2hlY2sobykgfHwgUHlUdXBsZV9DaGVjayhvKSkgewotICAgICAgICAgICAgICAgIGlmICghX2ZsYXR0ZW4xKGNvbnRleHQsIG8sIGRlcHRoICsgMSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfSBlbHNlIGlmIChvICE9IFB5X05vbmUpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+c2l6ZSArIDEgPiBjb250ZXh0LT5tYXhzaXplICYmCi0gICAgICAgICAgICAgICAgICAgICFfYnVtcChjb250ZXh0LCAxKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKG8pOwotICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oY29udGV4dC0+dHVwbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5zaXplKyssIG8pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKGl0ZW0pKSB7Ci0gICAgICAgIC8qIHNhbWUsIGZvciB0dXBsZXMgKi8KLSAgICAgICAgc2l6ZSA9IFB5VHVwbGVfR0VUX1NJWkUoaXRlbSk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zaXplICsgc2l6ZSA+IGNvbnRleHQtPm1heHNpemUgJiYKLSAgICAgICAgICAgICFfYnVtcChjb250ZXh0LCBzaXplKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqbyA9IFB5VHVwbGVfR0VUX0lURU0oaXRlbSwgaSk7CisgICAgICAgICAgICBQeU9iamVjdCAqbyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShpdGVtLCBpKTsKICAgICAgICAgICAgIGlmIChQeUxpc3RfQ2hlY2sobykgfHwgUHlUdXBsZV9DaGVjayhvKSkgewogICAgICAgICAgICAgICAgIGlmICghX2ZsYXR0ZW4xKGNvbnRleHQsIG8sIGRlcHRoICsgMSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMjk5OSwxNCArMzE2NiwxOSBAQAogICAgIHJldHVybiAxOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci5fZmxhdHRlbgorCisgICAgaXRlbTogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2ludGVyX0ZsYXR0ZW4oUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorX3RraW50ZXJfX2ZsYXR0ZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKml0ZW0pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTUwNTA0OWVjNzRjMzQ4MCBpbnB1dD02YjljMTIyNjBhYTExNTdmXSovCiB7CiAgICAgRmxhdHRlbkNvbnRleHQgY29udGV4dDsKLSAgICBQeU9iamVjdCogaXRlbTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpfZmxhdHRlbiIsICZpdGVtKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBjb250ZXh0Lm1heHNpemUgPSBQeVNlcXVlbmNlX1NpemUoaXRlbSk7CiAgICAgaWYgKGNvbnRleHQubWF4c2l6ZSA8IDApCkBAIC0zMDI5LDI2ICszMjAxLDMzIEBACiAgICAgcmV0dXJuIGNvbnRleHQudHVwbGU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLmNyZWF0ZQorCisgICAgc2NyZWVuTmFtZTogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGJhc2VOYW1lOiBzdHIgPSBOVUxMCisgICAgY2xhc3NOYW1lOiBzdHIgPSAiVGsiCisgICAgaW50ZXJhY3RpdmU6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgd2FudG9iamVjdHM6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgd2FudFRrOiBpbnQoY19kZWZhdWx0PSIxIikgPSBUcnVlCisgICAgICAgIGlmIGZhbHNlLCB0aGVuIFRrX0luaXQoKSBkb2Vzbid0IGdldCBjYWxsZWQKKyAgICBzeW5jOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorICAgICAgICBpZiB0cnVlLCB0aGVuIHBhc3MgLXN5bmMgdG8gd2lzaAorICAgIHVzZTogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgICAgICBpZiBub3QgTm9uZSwgdGhlbiBwYXNzIC11c2UgdG8gd2lzaAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGtpbnRlcl9DcmVhdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfY3JlYXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqc2NyZWVuTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJhc2VOYW1lLCBjb25zdCBjaGFyICpjbGFzc05hbWUsCisgICAgICAgICAgICAgICAgICAgICBpbnQgaW50ZXJhY3RpdmUsIGludCB3YW50b2JqZWN0cywgaW50IHdhbnRUaywgaW50IHN5bmMsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yjg4NDc4MDBmYzNiMjdlYiBpbnB1dD0wZDUyMmFhZDFjYjBjYTBlXSovCiB7Ci0gICAgY2hhciAqc2NyZWVuTmFtZSA9IE5VTEw7Ci0gICAgY2hhciAqYmFzZU5hbWUgPSBOVUxMOyAvKiBYWFggdGhpcyBpcyBub3QgdXNlZCBhbnltb3JlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IGdldHRpbmcgcmlkIG9mIGl0LiAqLwotICAgIGNoYXIgKmNsYXNzTmFtZSA9IE5VTEw7Ci0gICAgaW50IGludGVyYWN0aXZlID0gMDsKLSAgICBpbnQgd2FudG9iamVjdHMgPSAwOwotICAgIGludCB3YW50VGsgPSAxOyAgICAgLyogSWYgZmFsc2UsIHRoZW4gVGtfSW5pdCgpIGRvZXNuJ3QgZ2V0IGNhbGxlZCAqLwotICAgIGludCBzeW5jID0gMDsgLyogcGFzcyAtc3luYyB0byB3aXNoICovCi0gICAgY2hhciAqdXNlID0gTlVMTDsgLyogcGFzcyAtdXNlIHRvIHdpc2ggKi8KLQotICAgIGNsYXNzTmFtZSA9ICJUayI7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInx6c3NpaWlpejpjcmVhdGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc2NyZWVuTmFtZSwgJmJhc2VOYW1lLCAmY2xhc3NOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmaW50ZXJhY3RpdmUsICZ3YW50b2JqZWN0cywgJndhbnRUaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnN5bmMsICZ1c2UpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBYWFggYmFzZU5hbWUgaXMgbm90IHVzZWQgYW55bW9yZTsKKyAgICAgKiB0cnkgZ2V0dGluZyByaWQgb2YgaXQuICovCiAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChzY3JlZW5OYW1lKTsKICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKGJhc2VOYW1lKTsKICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKGNsYXNzTmFtZSk7CkBAIC0zMDU5LDEyICszMjM4LDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3luYywgdXNlKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIuc2V0YnVzeXdhaXRpbnRlcnZhbAorCisgICAgbmV3X3ZhbDogaW50CisgICAgLworCitTZXQgdGhlIGJ1c3ktd2FpdCBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMgYmV0d2VlbiBzdWNjZXNzaXZlIGNhbGxzIHRvIFRjbF9Eb09uZUV2ZW50IGluIGEgdGhyZWFkZWQgUHl0aG9uIGludGVycHJldGVyLgorCitJdCBzaG91bGQgYmUgc2V0IHRvIGEgZGl2aXNvciBvZiB0aGUgbWF4aW11bSB0aW1lIGJldHdlZW4gZnJhbWVzIGluIGFuIGFuaW1hdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRraW50ZXJfc2V0YnVzeXdhaXRpbnRlcnZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl9zZXRidXN5d2FpdGludGVydmFsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG5ld192YWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGI5ZDdlZjc5NDA0NjFlYSBpbnB1dD1kZWNhMWQ2ZjllNmRhZTQ3XSovCiB7Ci0gICAgaW50IG5ld192YWw7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnNldGJ1c3l3YWl0aW50ZXJ2YWwiLCAmbmV3X3ZhbCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChuZXdfdmFsIDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJidXN5d2FpdGludGVydmFsIG11c3QgYmUgPj0gMCIpOwpAQCAtMzA3NCwzNCArMzI2MiwxMDMgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotc3RhdGljIGNoYXIgc2V0YnVzeXdhaXRpbnRlcnZhbF9kb2NbXSA9Ci0ic2V0YnVzeXdhaXRpbnRlcnZhbChuKSAtPiBOb25lXG5cCi1cblwKLVNldCB0aGUgYnVzeS13YWl0IGludGVydmFsIGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHN1Y2Nlc3NpdmVcblwKLWNhbGxzIHRvIFRjbF9Eb09uZUV2ZW50IGluIGEgdGhyZWFkZWQgUHl0aG9uIGludGVycHJldGVyLlxuXAotSXQgc2hvdWxkIGJlIHNldCB0byBhIGRpdmlzb3Igb2YgdGhlIG1heGltdW0gdGltZSBiZXR3ZWVuXG5cCi1mcmFtZXMgaW4gYW4gYW5pbWF0aW9uLiI7CisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci5nZXRidXN5d2FpdGludGVydmFsIC0+IGludAogCi1zdGF0aWMgUHlPYmplY3QgKgotVGtpbnRlcl9nZXRidXN5d2FpdGludGVydmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK1JldHVybiB0aGUgY3VycmVudCBidXN5LXdhaXQgaW50ZXJ2YWwgYmV0d2VlbiBzdWNjZXNzaXZlIGNhbGxzIHRvIFRjbF9Eb09uZUV2ZW50IGluIGEgdGhyZWFkZWQgUHl0aG9uIGludGVycHJldGVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50CitfdGtpbnRlcl9nZXRidXN5d2FpdGludGVydmFsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZDA5ZWVlMDI2ZTk2OTcxIGlucHV0PWE2OTU4NzhkMmQ1NzZhODRdKi8KIHsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFRraW50ZXJfYnVzeXdhaXRpbnRlcnZhbCk7CisgICAgcmV0dXJuIFRraW50ZXJfYnVzeXdhaXRpbnRlcnZhbDsKIH0KIAotc3RhdGljIGNoYXIgZ2V0YnVzeXdhaXRpbnRlcnZhbF9kb2NbXSA9Ci0iZ2V0YnVzeXdhaXRpbnRlcnZhbCgpIC0+IGludFxuXAotXG5cCi1SZXR1cm4gdGhlIGN1cnJlbnQgYnVzeS13YWl0IGludGVydmFsIGJldHdlZW4gc3VjY2Vzc2l2ZVxuXAotY2FsbHMgdG8gVGNsX0RvT25lRXZlbnQgaW4gYSB0aHJlYWRlZCBQeXRob24gaW50ZXJwcmV0ZXIuIjsKKyNpbmNsdWRlICJjbGluaWMvX3RraW50ZXIuYy5oIgorCitzdGF0aWMgUHlNZXRob2REZWYgVGt0dF9tZXRob2RzW10gPQoreworICAgIF9US0lOVEVSX1RLVElNRVJUT0tFTl9ERUxFVEVUSU1FUkhBTkRMRVJfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlX1Nsb3QgVGt0dF9UeXBlX3Nsb3RzW10gPSB7CisgICAge1B5X3RwX2RlYWxsb2MsIFRrdHRfRGVhbGxvY30sCisgICAge1B5X3RwX3JlcHIsIFRrdHRfUmVwcn0sCisgICAge1B5X3RwX21ldGhvZHMsIFRrdHRfbWV0aG9kc30sCisgICAgezAsIDB9Cit9OworCitzdGF0aWMgUHlUeXBlX1NwZWMgVGt0dF9UeXBlX3NwZWMgPSB7CisgICAgIl90a2ludGVyLnRrdGltZXJ0b2tlbiIsCisgICAgc2l6ZW9mKFRrdHRPYmplY3QpLAorICAgIDAsCisgICAgUHlfVFBGTEFHU19ERUZBVUxULAorICAgIFRrdHRfVHlwZV9zbG90cywKK307CisKKworLyoqKiogVGthcHAgTWV0aG9kIExpc3QgKioqKi8KKworc3RhdGljIFB5TWV0aG9kRGVmIFRrYXBwX21ldGhvZHNbXSA9Cit7CisgICAgX1RLSU5URVJfVEtBUFBfV0lMTERJU1BBVENIX01FVEhPRERFRgorICAgIHsid2FudG9iamVjdHMiLCAgICAgICAgICAgIFRrYXBwX1dhbnRPYmplY3RzLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiY2FsbCIsICAgICAgICAgICAgICAgICAgIFRrYXBwX0NhbGwsIE1FVEhfVkFSQVJHU30sCisgICAgX1RLSU5URVJfVEtBUFBfRVZBTF9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9FVkFMRklMRV9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9SRUNPUkRfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfQURERVJSSU5GT19NRVRIT0RERUYKKyAgICB7InNldHZhciIsICAgICAgICAgICAgICAgICBUa2FwcF9TZXRWYXIsIE1FVEhfVkFSQVJHU30sCisgICAgeyJnbG9iYWxzZXR2YXIiLCAgICAgICBUa2FwcF9HbG9iYWxTZXRWYXIsIE1FVEhfVkFSQVJHU30sCisgICAgeyJnZXR2YXIiLCAgICAgICBUa2FwcF9HZXRWYXIsIE1FVEhfVkFSQVJHU30sCisgICAgeyJnbG9iYWxnZXR2YXIiLCAgICAgICBUa2FwcF9HbG9iYWxHZXRWYXIsIE1FVEhfVkFSQVJHU30sCisgICAgeyJ1bnNldHZhciIsICAgICBUa2FwcF9VbnNldFZhciwgTUVUSF9WQVJBUkdTfSwKKyAgICB7Imdsb2JhbHVuc2V0dmFyIiwgICAgIFRrYXBwX0dsb2JhbFVuc2V0VmFyLCBNRVRIX1ZBUkFSR1N9LAorICAgIF9US0lOVEVSX1RLQVBQX0dFVElOVF9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9HRVRET1VCTEVfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfR0VUQk9PTEVBTl9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9FWFBSU1RSSU5HX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0VYUFJMT05HX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0VYUFJET1VCTEVfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfRVhQUkJPT0xFQU5fTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfU1BMSVRMSVNUX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX1NQTElUX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0NSRUFURUNPTU1BTkRfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfREVMRVRFQ09NTUFORF9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9DUkVBVEVGSUxFSEFORExFUl9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9ERUxFVEVGSUxFSEFORExFUl9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9DUkVBVEVUSU1FUkhBTkRMRVJfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfTUFJTkxPT1BfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfRE9PTkVFVkVOVF9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9RVUlUX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0lOVEVSUEFERFJfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfTE9BRFRLX01FVEhPRERFRgorICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgICAgIE5VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlX1Nsb3QgVGthcHBfVHlwZV9zbG90c1tdID0geworICAgIHtQeV90cF9kZWFsbG9jLCBUa2FwcF9EZWFsbG9jfSwKKyAgICB7UHlfdHBfbWV0aG9kcywgVGthcHBfbWV0aG9kc30sCisgICAgezAsIDB9Cit9OworCisKK3N0YXRpYyBQeVR5cGVfU3BlYyBUa2FwcF9UeXBlX3NwZWMgPSB7CisgICAgIl90a2ludGVyLnRrYXBwIiwKKyAgICBzaXplb2YoVGthcHBPYmplY3QpLAorICAgIDAsCisgICAgUHlfVFBGTEFHU19ERUZBVUxULAorICAgIFRrYXBwX1R5cGVfc2xvdHMsCit9OwogCiBzdGF0aWMgUHlNZXRob2REZWYgbW9kdWxlTWV0aG9kc1tdID0KIHsKLSAgICB7Il9mbGF0dGVuIiwgICAgICAgICAgIFRraW50ZXJfRmxhdHRlbiwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImNyZWF0ZSIsICAgICAgICAgICAgIFRraW50ZXJfQ3JlYXRlLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsic2V0YnVzeXdhaXRpbnRlcnZhbCIsVGtpbnRlcl9zZXRidXN5d2FpdGludGVydmFsLCBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRidXN5d2FpdGludGVydmFsX2RvY30sCi0gICAgeyJnZXRidXN5d2FpdGludGVydmFsIiwoUHlDRnVuY3Rpb24pVGtpbnRlcl9nZXRidXN5d2FpdGludGVydmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9OT0FSR1MsIGdldGJ1c3l3YWl0aW50ZXJ2YWxfZG9jfSwKKyAgICBfVEtJTlRFUl9fRkxBVFRFTl9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9DUkVBVEVfTUVUSE9EREVGCisgICAgX1RLSU5URVJfU0VUQlVTWVdBSVRJTlRFUlZBTF9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9HRVRCVVNZV0FJVElOVEVSVkFMX01FVEhPRERFRgogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgTlVMTH0KIH07CiAKQEAgLTMzNDUsOCArMzYwMiw0MCBAQAogICAgIHVleGUgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKFB5X0dldFByb2dyYW1OYW1lKCksIC0xKTsKICAgICBpZiAodWV4ZSkgewogICAgICAgICBjZXhlID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdCh1ZXhlKTsKLSAgICAgICAgaWYgKGNleGUpCisgICAgICAgIGlmIChjZXhlKSB7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgaW50IHNldF92YXIgPSAwOworICAgICAgICAgICAgUHlPYmplY3QgKnN0cl9wYXRoOworICAgICAgICAgICAgd2NoYXJfdCAqd2NzX3BhdGg7CisgICAgICAgICAgICBEV09SRCByZXQ7CisKKyAgICAgICAgICAgIHJldCA9IEdldEVudmlyb25tZW50VmFyaWFibGVXKEwiVENMX0xJQlJBUlkiLCBOVUxMLCAwKTsKKworICAgICAgICAgICAgaWYgKCFyZXQgJiYgR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfRU5WVkFSX05PVF9GT1VORCkgeworICAgICAgICAgICAgICAgIHN0cl9wYXRoID0gX2dldF90Y2xfbGliX3BhdGgoKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RyX3BhdGggPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc3RyX3BhdGggIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICB3Y3NfcGF0aCA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHN0cl9wYXRoLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdjc19wYXRoID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFNldEVudmlyb25tZW50VmFyaWFibGVXKEwiVENMX0xJQlJBUlkiLCB3Y3NfcGF0aCk7CisgICAgICAgICAgICAgICAgICAgIHNldF92YXIgPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgVGNsX0ZpbmRFeGVjdXRhYmxlKFB5Qnl0ZXNfQXNTdHJpbmcoY2V4ZSkpOworCisgICAgICAgICAgICBpZiAoc2V0X3ZhcikgeworICAgICAgICAgICAgICAgIFNldEVudmlyb25tZW50VmFyaWFibGVXKEwiVENMX0xJQlJBUlkiLCBOVUxMKTsKKyAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKHdjc19wYXRoKTsKKyAgICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICBUY2xfRmluZEV4ZWN1dGFibGUoUHlCeXRlc19Bc1N0cmluZyhjZXhlKSk7CisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworICAgICAgICB9CiAgICAgICAgIFB5X1hERUNSRUYoY2V4ZSk7CiAgICAgICAgIFB5X0RFQ1JFRih1ZXhlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190cmFjZW1hbGxvYy5jIGIvTW9kdWxlcy9fdHJhY2VtYWxsb2MuYwppbmRleCA0MDlmNGRiLi4yMjZhNDczIDEwMDY0NAotLS0gYS9Nb2R1bGVzL190cmFjZW1hbGxvYy5jCisrKyBiL01vZHVsZXMvX3RyYWNlbWFsbG9jLmMKQEAgLTE2LDE0ICsxNiwxMSBAQAogIyAgZGVmaW5lIFRSQUNFX0RFQlVHCiAjZW5kaWYKIAotI2RlZmluZSBfU1RSKFZBTCkgI1ZBTAotI2RlZmluZSBTVFIoVkFMKSBfU1RSKFZBTCkKLQogLyogUHJvdGVjdGVkIGJ5IHRoZSBHSUwgKi8KIHN0YXRpYyBzdHJ1Y3QgewotICAgIFB5TWVtQWxsb2NhdG9yIG1lbTsKLSAgICBQeU1lbUFsbG9jYXRvciByYXc7Ci0gICAgUHlNZW1BbGxvY2F0b3Igb2JqOworICAgIFB5TWVtQWxsb2NhdG9yRXggbWVtOworICAgIFB5TWVtQWxsb2NhdG9yRXggcmF3OworICAgIFB5TWVtQWxsb2NhdG9yRXggb2JqOwogfSBhbGxvY2F0b3JzOwogCiBzdGF0aWMgc3RydWN0IHsKQEAgLTgyLDcgKzc5LDcgQEAKICAgICAgICAgKHNpemVvZih0cmFjZWJhY2tfdCkgKyBzaXplb2YoZnJhbWVfdCkgKiAoTkZSQU1FIC0gMSkpCiAKICNkZWZpbmUgTUFYX05GUkFNRSBcCi0gICAgICAgICgoSU5UX01BWCAtIHNpemVvZih0cmFjZWJhY2tfdCkpIC8gc2l6ZW9mKGZyYW1lX3QpICsgMSkKKyAgICAgICAgKChJTlRfTUFYIC0gKGludClzaXplb2YodHJhY2ViYWNrX3QpKSAvIChpbnQpc2l6ZW9mKGZyYW1lX3QpICsgMSkKIAogc3RhdGljIFB5T2JqZWN0ICp1bmtub3duX2ZpbGVuYW1lID0gTlVMTDsKIHN0YXRpYyB0cmFjZWJhY2tfdCB0cmFjZW1hbGxvY19lbXB0eV90cmFjZWJhY2s7CkBAIC00NzYsMTcgKzQ3MywyMiBAQAogfQogCiBzdGF0aWMgdm9pZCoKLXRyYWNlbWFsbG9jX21hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBzaXplKQordHJhY2VtYWxsb2NfYWxsb2MoaW50IHVzZV9jYWxsb2MsIHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQogewotICAgIFB5TWVtQWxsb2NhdG9yICphbGxvYyA9IChQeU1lbUFsbG9jYXRvciAqKWN0eDsKKyAgICBQeU1lbUFsbG9jYXRvckV4ICphbGxvYyA9IChQeU1lbUFsbG9jYXRvckV4ICopY3R4OwogICAgIHZvaWQgKnB0cjsKIAotICAgIHB0ciA9IGFsbG9jLT5tYWxsb2MoYWxsb2MtPmN0eCwgc2l6ZSk7CisgICAgYXNzZXJ0KGVsc2l6ZSA9PSAwIHx8IG5lbGVtIDw9IFBZX1NJWkVfTUFYIC8gZWxzaXplKTsKKworICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICBwdHIgPSBhbGxvYy0+Y2FsbG9jKGFsbG9jLT5jdHgsIG5lbGVtLCBlbHNpemUpOworICAgIGVsc2UKKyAgICAgICAgcHRyID0gYWxsb2MtPm1hbGxvYyhhbGxvYy0+Y3R4LCBuZWxlbSAqIGVsc2l6ZSk7CiAgICAgaWYgKHB0ciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFRBQkxFU19MT0NLKCk7Ci0gICAgaWYgKHRyYWNlbWFsbG9jX2FkZF90cmFjZShwdHIsIHNpemUpIDwgMCkgeworICAgIGlmICh0cmFjZW1hbGxvY19hZGRfdHJhY2UocHRyLCBuZWxlbSAqIGVsc2l6ZSkgPCAwKSB7CiAgICAgICAgIC8qIEZhaWxlZCB0byBhbGxvY2F0ZSBhIHRyYWNlIGZvciB0aGUgbmV3IG1lbW9yeSBibG9jayAqLwogICAgICAgICBUQUJMRVNfVU5MT0NLKCk7CiAgICAgICAgIGFsbG9jLT5mcmVlKGFsbG9jLT5jdHgsIHB0cik7CkBAIC00OTksNyArNTAxLDcgQEAKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfcmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKQogewotICAgIFB5TWVtQWxsb2NhdG9yICphbGxvYyA9IChQeU1lbUFsbG9jYXRvciAqKWN0eDsKKyAgICBQeU1lbUFsbG9jYXRvckV4ICphbGxvYyA9IChQeU1lbUFsbG9jYXRvckV4ICopY3R4OwogICAgIHZvaWQgKnB0cjI7CiAKICAgICBwdHIyID0gYWxsb2MtPnJlYWxsb2MoYWxsb2MtPmN0eCwgcHRyLCBuZXdfc2l6ZSk7CkBAIC01NDQsNyArNTQ2LDcgQEAKIHN0YXRpYyB2b2lkCiB0cmFjZW1hbGxvY19mcmVlKHZvaWQgKmN0eCwgdm9pZCAqcHRyKQogewotICAgIFB5TWVtQWxsb2NhdG9yICphbGxvYyA9IChQeU1lbUFsbG9jYXRvciAqKWN0eDsKKyAgICBQeU1lbUFsbG9jYXRvckV4ICphbGxvYyA9IChQeU1lbUFsbG9jYXRvckV4ICopY3R4OwogCiAgICAgaWYgKHB0ciA9PSBOVUxMKQogICAgICAgICByZXR1cm47CkBAIC01NjAsMTMgKzU2MiwxNiBAQAogfQogCiBzdGF0aWMgdm9pZCoKLXRyYWNlbWFsbG9jX21hbGxvY19naWwodm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSkKK3RyYWNlbWFsbG9jX2FsbG9jX2dpbChpbnQgdXNlX2NhbGxvYywgdm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCiB7CiAgICAgdm9pZCAqcHRyOwogCiAgICAgaWYgKGdldF9yZWVudHJhbnQoKSkgewotICAgICAgICBQeU1lbUFsbG9jYXRvciAqYWxsb2MgPSAoUHlNZW1BbGxvY2F0b3IgKiljdHg7Ci0gICAgICAgIHJldHVybiBhbGxvYy0+bWFsbG9jKGFsbG9jLT5jdHgsIHNpemUpOworICAgICAgICBQeU1lbUFsbG9jYXRvckV4ICphbGxvYyA9IChQeU1lbUFsbG9jYXRvckV4ICopY3R4OworICAgICAgICBpZiAodXNlX2NhbGxvYykKKyAgICAgICAgICAgIHJldHVybiBhbGxvYy0+Y2FsbG9jKGFsbG9jLT5jdHgsIG5lbGVtLCBlbHNpemUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gYWxsb2MtPm1hbGxvYyhhbGxvYy0+Y3R4LCBuZWxlbSAqIGVsc2l6ZSk7CiAgICAgfQogCiAgICAgLyogSWdub3JlIHJlZW50cmFudCBjYWxsLiBQeU9iamV0X01hbGxvYygpIGNhbGxzIFB5TWVtX01hbGxvYygpIGZvcgpAQCAtNTc0LDEzICs1NzksMjUgQEAKICAgICAgICBhbGxvY2F0aW9uIHR3aWNlLiAqLwogICAgIHNldF9yZWVudHJhbnQoMSk7CiAKLSAgICBwdHIgPSB0cmFjZW1hbGxvY19tYWxsb2MoY3R4LCBzaXplKTsKKyAgICBwdHIgPSB0cmFjZW1hbGxvY19hbGxvYyh1c2VfY2FsbG9jLCBjdHgsIG5lbGVtLCBlbHNpemUpOwogCiAgICAgc2V0X3JlZW50cmFudCgwKTsKICAgICByZXR1cm4gcHRyOwogfQogCiBzdGF0aWMgdm9pZCoKK3RyYWNlbWFsbG9jX21hbGxvY19naWwodm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gdHJhY2VtYWxsb2NfYWxsb2NfZ2lsKDAsIGN0eCwgMSwgc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkKgordHJhY2VtYWxsb2NfY2FsbG9jX2dpbCh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKK3sKKyAgICByZXR1cm4gdHJhY2VtYWxsb2NfYWxsb2NfZ2lsKDEsIGN0eCwgbmVsZW0sIGVsc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfcmVhbGxvY19naWwodm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSkKIHsKICAgICB2b2lkICpwdHIyOwpAQCAtNTkwLDcgKzYwNyw3IEBACiAgICAgICAgICAgIEV4YW1wbGU6IFB5TWVtX1Jhd1JlYWxsb2MoKSBpcyBjYWxsZWQgaW50ZXJuYWxseSBieSBweW1hbGxvYwogICAgICAgICAgICAoX1B5T2JqZWN0X01hbGxvYygpIGFuZCAgX1B5T2JqZWN0X1JlYWxsb2MoKSkgdG8gYWxsb2NhdGUgYSBuZXcKICAgICAgICAgICAgYXJlbmEgKG5ld19hcmVuYSgpKS4gKi8KLSAgICAgICAgUHlNZW1BbGxvY2F0b3IgKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yICopY3R4OworICAgICAgICBQeU1lbUFsbG9jYXRvckV4ICphbGxvYyA9IChQeU1lbUFsbG9jYXRvckV4ICopY3R4OwogCiAgICAgICAgIHB0cjIgPSBhbGxvYy0+cmVhbGxvYyhhbGxvYy0+Y3R4LCBwdHIsIG5ld19zaXplKTsKICAgICAgICAgaWYgKHB0cjIgIT0gTlVMTCAmJiBwdHIgIT0gTlVMTCkgewpAQCAtNjE0LDcgKzYzMSw3IEBACiAKICNpZmRlZiBUUkFDRV9SQVdfTUFMTE9DCiBzdGF0aWMgdm9pZCoKLXRyYWNlbWFsbG9jX3Jhd19tYWxsb2Modm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSkKK3RyYWNlbWFsbG9jX3Jhd19hbGxvYyhpbnQgdXNlX2NhbGxvYywgdm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCiB7CiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBQeUdJTFN0YXRlX1NUQVRFIGdpbF9zdGF0ZTsKQEAgLTYyMiw4ICs2MzksMTEgQEAKICAgICB2b2lkICpwdHI7CiAKICAgICBpZiAoZ2V0X3JlZW50cmFudCgpKSB7Ci0gICAgICAgIFB5TWVtQWxsb2NhdG9yICphbGxvYyA9IChQeU1lbUFsbG9jYXRvciAqKWN0eDsKLSAgICAgICAgcmV0dXJuIGFsbG9jLT5tYWxsb2MoYWxsb2MtPmN0eCwgc2l6ZSk7CisgICAgICAgIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yRXggKiljdHg7CisgICAgICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICAgICAgcmV0dXJuIGFsbG9jLT5jYWxsb2MoYWxsb2MtPmN0eCwgbmVsZW0sIGVsc2l6ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBhbGxvYy0+bWFsbG9jKGFsbG9jLT5jdHgsIG5lbGVtICogZWxzaXplKTsKICAgICB9CiAKICAgICAvKiBJZ25vcmUgcmVlbnRyYW50IGNhbGwuIFB5R0lMU3RhdGVfRW5zdXJlKCkgbWF5IGNhbGwgUHlNZW1fUmF3TWFsbG9jKCkKQEAgLTYzMywxMCArNjUzLDEwIEBACiAKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIGdpbF9zdGF0ZSA9IFB5R0lMU3RhdGVfRW5zdXJlKCk7Ci0gICAgcHRyID0gdHJhY2VtYWxsb2NfbWFsbG9jKGN0eCwgc2l6ZSk7CisgICAgcHRyID0gdHJhY2VtYWxsb2NfYWxsb2ModXNlX2NhbGxvYywgY3R4LCBuZWxlbSwgZWxzaXplKTsKICAgICBQeUdJTFN0YXRlX1JlbGVhc2UoZ2lsX3N0YXRlKTsKICNlbHNlCi0gICAgcHRyID0gdHJhY2VtYWxsb2NfbWFsbG9jKGN0eCwgc2l6ZSk7CisgICAgcHRyID0gdHJhY2VtYWxsb2NfYWxsb2ModXNlX2NhbGxvYywgY3R4LCBuZWxlbSwgZWxzaXplKTsKICNlbmRpZgogCiAgICAgc2V0X3JlZW50cmFudCgwKTsKQEAgLTY0NCw2ICs2NjQsMTggQEAKIH0KIAogc3RhdGljIHZvaWQqCit0cmFjZW1hbGxvY19yYXdfbWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpCit7CisgICAgcmV0dXJuIHRyYWNlbWFsbG9jX3Jhd19hbGxvYygwLCBjdHgsIDEsIHNpemUpOworfQorCitzdGF0aWMgdm9pZCoKK3RyYWNlbWFsbG9jX3Jhd19jYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCit7CisgICAgcmV0dXJuIHRyYWNlbWFsbG9jX3Jhd19hbGxvYygxLCBjdHgsIG5lbGVtLCBlbHNpemUpOworfQorCitzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX3Jhd19yZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpCiB7CiAjaWZkZWYgV0lUSF9USFJFQUQKQEAgLTY1Myw3ICs2ODUsNyBAQAogCiAgICAgaWYgKGdldF9yZWVudHJhbnQoKSkgewogICAgICAgICAvKiBSZWVudHJhbnQgY2FsbCB0byBQeU1lbV9SYXdSZWFsbG9jKCkuICovCi0gICAgICAgIFB5TWVtQWxsb2NhdG9yICphbGxvYyA9IChQeU1lbUFsbG9jYXRvciAqKWN0eDsKKyAgICAgICAgUHlNZW1BbGxvY2F0b3JFeCAqYWxsb2MgPSAoUHlNZW1BbGxvY2F0b3JFeCAqKWN0eDsKIAogICAgICAgICBwdHIyID0gYWxsb2MtPnJlYWxsb2MoYWxsb2MtPmN0eCwgcHRyLCBuZXdfc2l6ZSk7CiAKQEAgLTgzMSw3ICs4NjMsNyBAQAogc3RhdGljIGludAogdHJhY2VtYWxsb2Nfc3RhcnQoaW50IG1heF9uZnJhbWUpCiB7Ci0gICAgUHlNZW1BbGxvY2F0b3IgYWxsb2M7CisgICAgUHlNZW1BbGxvY2F0b3JFeCBhbGxvYzsKICAgICBzaXplX3Qgc2l6ZTsKIAogICAgIGlmICh0cmFjZW1hbGxvY19pbml0KCkgPCAwKQpAQCAtODU2LDYgKzg4OCw3IEBACiAKICNpZmRlZiBUUkFDRV9SQVdfTUFMTE9DCiAgICAgYWxsb2MubWFsbG9jID0gdHJhY2VtYWxsb2NfcmF3X21hbGxvYzsKKyAgICBhbGxvYy5jYWxsb2MgPSB0cmFjZW1hbGxvY19yYXdfY2FsbG9jOwogICAgIGFsbG9jLnJlYWxsb2MgPSB0cmFjZW1hbGxvY19yYXdfcmVhbGxvYzsKICAgICBhbGxvYy5mcmVlID0gdHJhY2VtYWxsb2NfZnJlZTsKIApAQCAtODY1LDYgKzg5OCw3IEBACiAjZW5kaWYKIAogICAgIGFsbG9jLm1hbGxvYyA9IHRyYWNlbWFsbG9jX21hbGxvY19naWw7CisgICAgYWxsb2MuY2FsbG9jID0gdHJhY2VtYWxsb2NfY2FsbG9jX2dpbDsKICAgICBhbGxvYy5yZWFsbG9jID0gdHJhY2VtYWxsb2NfcmVhbGxvY19naWw7CiAgICAgYWxsb2MuZnJlZSA9IHRyYWNlbWFsbG9jX2ZyZWU7CiAKQEAgLTExOTUsNyArMTIyOSw3IEBACiAgICAgaWYgKG5mcmFtZSA8IDEgfHwgbmZyYW1lID4gTUFYX05GUkFNRSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJ0aGUgbnVtYmVyIG9mIGZyYW1lcyBtdXN0IGJlIGluIHJhbmdlIFsxOyAlaV0iLAotICAgICAgICAgICAgICAgICAgICAgKGludClNQVhfTkZSQU1FKTsKKyAgICAgICAgICAgICAgICAgICAgIE1BWF9ORlJBTUUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbmZyYW1lX2ludCA9IFB5X1NBRkVfRE9XTkNBU1QobmZyYW1lLCBQeV9zc2l6ZV90LCBpbnQpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fd2Vha3JlZi5jIGIvTW9kdWxlcy9fd2Vha3JlZi5jCmluZGV4IGRhNTg5MzEuLjdjOTlkN2UgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3dlYWtyZWYuYworKysgYi9Nb2R1bGVzL193ZWFrcmVmLmMKQEAgLTksNiArOSw4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1mZmVjNzNiODU4NDY1OTZkXSovCiAKKyNpbmNsdWRlICJjbGluaWMvX3dlYWtyZWYuYy5oIgorCiAvKltjbGluaWMgaW5wdXRdCiAKIF93ZWFrcmVmLmdldHdlYWtyZWZjb3VudCAtPiBQeV9zc2l6ZV90CkBAIC0xOSwzNiArMjEsOSBAQAogUmV0dXJuIHRoZSBudW1iZXIgb2Ygd2VhayByZWZlcmVuY2VzIHRvICdvYmplY3QnLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX3dlYWtyZWZfZ2V0d2Vha3JlZmNvdW50X19kb2NfXywKLSJnZXR3ZWFrcmVmY291bnQoJG1vZHVsZSwgb2JqZWN0LCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBudW1iZXIgb2Ygd2VhayByZWZlcmVuY2VzIHRvIFwnb2JqZWN0XCcuIik7Ci0KLSNkZWZpbmUgX1dFQUtSRUZfR0VUV0VBS1JFRkNPVU5UX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXR3ZWFrcmVmY291bnQiLCAoUHlDRnVuY3Rpb24pX3dlYWtyZWZfZ2V0d2Vha3JlZmNvdW50LCBNRVRIX08sIF93ZWFrcmVmX2dldHdlYWtyZWZjb3VudF9fZG9jX199LAotCi1zdGF0aWMgUHlfc3NpemVfdAotX3dlYWtyZWZfZ2V0d2Vha3JlZmNvdW50X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iamVjdCk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1fd2Vha3JlZl9nZXR3ZWFrcmVmY291bnQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iamVjdCkKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7Ci0KLSAgICBfcmV0dXJuX3ZhbHVlID0gX3dlYWtyZWZfZ2V0d2Vha3JlZmNvdW50X2ltcGwobW9kdWxlLCBvYmplY3QpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCiBzdGF0aWMgUHlfc3NpemVfdAogX3dlYWtyZWZfZ2V0d2Vha3JlZmNvdW50X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iamVjdCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMzJlZWRiZmQ3ZDY5ZTEwIGlucHV0PWNlZGI2OTcxMWI2YTI1MDddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YTZhZDBiOTgyODVlNDY4IGlucHV0PWNlZGI2OTcxMWI2YTI1MDddKi8KIHsKICAgICBQeVdlYWtSZWZlcmVuY2UgKipsaXN0OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL193aW5hcGkuYyBiL01vZHVsZXMvX3dpbmFwaS5jCmluZGV4IGQ0NzJjOWUuLjNlN2YxODcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3dpbmFwaS5jCisrKyBiL01vZHVsZXMvX3dpbmFwaS5jCkBAIC00MCw2ICs0MCw3IEBACiAjZGVmaW5lIFdJTkRPV1NfTEVBTl9BTkRfTUVBTgogI2luY2x1ZGUgIndpbmRvd3MuaCIKICNpbmNsdWRlIDxjcnRkYmcuaD4KKyNpbmNsdWRlICJ3aW5yZXBhcnNlLmgiCiAKICNpZiBkZWZpbmVkKE1TX1dJTjMyKSAmJiAhZGVmaW5lZChNU19XSU42NCkKICNkZWZpbmUgSEFORExFX1RPX1BZTlVNKGhhbmRsZSkgXApAQCAtNTcsOCArNTgsNiBAQAogCiAjZGVmaW5lIEZfSEFORExFIEZfUE9JTlRFUgogI2RlZmluZSBGX0RXT1JEICJrIgotI2RlZmluZSBGX0JPT0wgImkiCi0jZGVmaW5lIEZfVUlOVCAiSSIKIAogI2RlZmluZSBUX0hBTkRMRSBUX1BPSU5URVIKIApAQCAtMTQ2LDE3ICsxNDUsNjggQEAKICAgICBQeU9iamVjdF9EZWwoc2VsZik7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfd2luYXBpCitjbGFzcyBfd2luYXBpLk92ZXJsYXBwZWQgIk92ZXJsYXBwZWRPYmplY3QgKiIgIiZPdmVybGFwcGVkVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWMxM2QzZjVmZDFkYWJiODRdKi8KKworLypbcHl0aG9uIGlucHV0XQorZGVmIGNyZWF0ZV9jb252ZXJ0ZXIodHlwZV8sIGZvcm1hdF91bml0KToKKyAgICBuYW1lID0gdHlwZV8gKyAnX2NvbnZlcnRlcicKKyAgICAjIHJlZ2lzdGVyZWQgdXBvbiBjcmVhdGlvbiBieSBDQ29udmVydGVyJ3MgbWV0YWNsYXNzCisgICAgdHlwZShuYW1lLCAoQ0NvbnZlcnRlciwpLCB7J3R5cGUnOiB0eXBlXywgJ2Zvcm1hdF91bml0JzogZm9ybWF0X3VuaXR9KQorCisjIGZvcm1hdCB1bml0IGRpZmZlcnMgYmV0d2VlbiBwbGF0Zm9ybXMgZm9yIHRoZXNlCitjcmVhdGVfY29udmVydGVyKCdIQU5ETEUnLCAnIiBGX0hBTkRMRSAiJykKK2NyZWF0ZV9jb252ZXJ0ZXIoJ0hNT0RVTEUnLCAnIiBGX0hBTkRMRSAiJykKK2NyZWF0ZV9jb252ZXJ0ZXIoJ0xQU0VDVVJJVFlfQVRUUklCVVRFUycsICciIEZfUE9JTlRFUiAiJykKKworY3JlYXRlX2NvbnZlcnRlcignQk9PTCcsICdpJykgIyBGX0JPT0wgdXNlZCBwcmV2aW91c2x5IChhbHdheXMgJ2knKQorY3JlYXRlX2NvbnZlcnRlcignRFdPUkQnLCAnaycpICMgRl9EV09SRCBpcyBhbHdheXMgImsiICh3aGljaCBpcyBtdWNoIHNob3J0ZXIpCitjcmVhdGVfY29udmVydGVyKCdMUENUU1RSJywgJ3MnKQorY3JlYXRlX2NvbnZlcnRlcignTFBXU1RSJywgJ3UnKQorY3JlYXRlX2NvbnZlcnRlcignVUlOVCcsICdJJykgIyBGX1VJTlQgdXNlZCBwcmV2aW91c2x5IChhbHdheXMgJ0knKQorCitjbGFzcyBIQU5ETEVfcmV0dXJuX2NvbnZlcnRlcihDUmV0dXJuQ29udmVydGVyKToKKyAgICB0eXBlID0gJ0hBTkRMRScKKworICAgIGRlZiByZW5kZXIoc2VsZiwgZnVuY3Rpb24sIGRhdGEpOgorICAgICAgICBzZWxmLmRlY2xhcmUoZGF0YSkKKyAgICAgICAgc2VsZi5lcnJfb2NjdXJyZWRfaWYoIl9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUiLCBkYXRhKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKKyAgICAgICAgICAgICdpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKVxuICAgIFB5X1JFVFVSTl9OT05FO1xuJykKKyAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoCisgICAgICAgICAgICAncmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpO1xuJykKKworY2xhc3MgRFdPUkRfcmV0dXJuX2NvbnZlcnRlcihDUmV0dXJuQ29udmVydGVyKToKKyAgICB0eXBlID0gJ0RXT1JEJworCisgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CisgICAgICAgIHNlbGYuZGVjbGFyZShkYXRhKQorICAgICAgICBzZWxmLmVycl9vY2N1cnJlZF9pZigiX3JldHVybl92YWx1ZSA9PSBEV09SRF9NQVgiLCBkYXRhKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKKyAgICAgICAgICAgICdyZXR1cm5fdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJrIiwgX3JldHVybl92YWx1ZSk7XG4nKQorW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9Mzc0MDc2OTc5NTk2ZWJiYV0qLworCisjaW5jbHVkZSAiY2xpbmljL193aW5hcGkuYy5oIgorCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLk92ZXJsYXBwZWQuR2V0T3ZlcmxhcHBlZFJlc3VsdAorCisgICAgd2FpdDogYm9vbAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW92ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdChPdmVybGFwcGVkT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqd2FpdG9iaikKK193aW5hcGlfT3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0X2ltcGwoT3ZlcmxhcHBlZE9iamVjdCAqc2VsZiwgaW50IHdhaXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmRkMGMxZWQ2NTE4Y2QwMyBpbnB1dD0xOTQ1MDVlZThlMGUzNTY1XSovCiB7Ci0gICAgaW50IHdhaXQ7CiAgICAgQk9PTCByZXM7CiAgICAgRFdPUkQgdHJhbnNmZXJyZWQgPSAwOwogICAgIERXT1JEIGVycjsKIAotICAgIHdhaXQgPSBQeU9iamVjdF9Jc1RydWUod2FpdG9iaik7Ci0gICAgaWYgKHdhaXQgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzID0gR2V0T3ZlcmxhcHBlZFJlc3VsdChzZWxmLT5oYW5kbGUsICZzZWxmLT5vdmVybGFwcGVkLCAmdHJhbnNmZXJyZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0ICE9IDApOwpAQCAtMTg1LDggKzIzNSwxMyBAQAogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJJSSIsICh1bnNpZ25lZCkgdHJhbnNmZXJyZWQsICh1bnNpZ25lZCkgZXJyKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5PdmVybGFwcGVkLmdldGJ1ZmZlcgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotb3ZlcmxhcHBlZF9nZXRidWZmZXIoT3ZlcmxhcHBlZE9iamVjdCAqc2VsZikKK193aW5hcGlfT3ZlcmxhcHBlZF9nZXRidWZmZXJfaW1wbChPdmVybGFwcGVkT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk1YTNlY2VlZmFlMGY3NDggaW5wdXQ9MzQ3ZmNmZDU2YjRjZWFiZF0qLwogewogICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgaWYgKCFzZWxmLT5jb21wbGV0ZWQpIHsKQEAgLTIwMCw4ICsyNTUsMTMgQEAKICAgICByZXR1cm4gcmVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLk92ZXJsYXBwZWQuY2FuY2VsCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1vdmVybGFwcGVkX2NhbmNlbChPdmVybGFwcGVkT2JqZWN0ICpzZWxmKQorX3dpbmFwaV9PdmVybGFwcGVkX2NhbmNlbF9pbXBsKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmNiOWFiNWRmNGViZGFlNSBpbnB1dD1jYmYzZGExNDIyOTAwMzlmXSovCiB7CiAgICAgQk9PTCByZXMgPSBUUlVFOwogCkBAIC0yMjIsMTAgKzI4Miw5IEBACiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBvdmVybGFwcGVkX21ldGhvZHNbXSA9IHsKLSAgICB7IkdldE92ZXJsYXBwZWRSZXN1bHQiLCAoUHlDRnVuY3Rpb24pIG92ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX08sIE5VTEx9LAotICAgIHsiZ2V0YnVmZmVyIiwgKFB5Q0Z1bmN0aW9uKSBvdmVybGFwcGVkX2dldGJ1ZmZlciwgTUVUSF9OT0FSR1MsIE5VTEx9LAotICAgIHsiY2FuY2VsIiwgKFB5Q0Z1bmN0aW9uKSBvdmVybGFwcGVkX2NhbmNlbCwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIF9XSU5BUElfT1ZFUkxBUFBFRF9HRVRPVkVSTEFQUEVEUkVTVUxUX01FVEhPRERFRgorICAgIF9XSU5BUElfT1ZFUkxBUFBFRF9HRVRCVUZGRVJfTUVUSE9EREVGCisgICAgX1dJTkFQSV9PVkVSTEFQUEVEX0NBTkNFTF9NRVRIT0RERUYKICAgICB7TlVMTH0KIH07CiAKQEAgLTI5OSwyMiArMzU4LDIzIEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyogd2luZG93cyBBUEkgZnVuY3Rpb25zICovCiAKLVB5RG9jX1NUUlZBUihDbG9zZUhhbmRsZV9kb2MsCi0iQ2xvc2VIYW5kbGUoaGFuZGxlKSAtPiBOb25lXG5cCi1cblwKLUNsb3NlIGhhbmRsZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuQ2xvc2VIYW5kbGUKKworICAgIGhhbmRsZTogSEFORExFCisgICAgLworCitDbG9zZSBoYW5kbGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfQ2xvc2VIYW5kbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3dpbmFwaV9DbG9zZUhhbmRsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBoYW5kbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDU0ODU5NWM3MWNiNGJmNyBpbnB1dD03ZjBlNGFjMzZlMDM1MmI4XSovCiB7Ci0gICAgSEFORExFIGhPYmplY3Q7CiAgICAgQk9PTCBzdWNjZXNzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICI6Q2xvc2VIYW5kbGUiLCAmaE9iamVjdCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHN1Y2Nlc3MgPSBDbG9zZUhhbmRsZShoT2JqZWN0KTsKKyAgICBzdWNjZXNzID0gQ2xvc2VIYW5kbGUoaGFuZGxlKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKCFzdWNjZXNzKQpAQCAtMzIzLDI4ICszODMsMjkgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5Db25uZWN0TmFtZWRQaXBlCisKKyAgICBoYW5kbGU6IEhBTkRMRQorICAgIG92ZXJsYXBwZWQgYXMgdXNlX292ZXJsYXBwZWQ6IGludChjX2RlZmF1bHQ9JzAnKSA9IEZhbHNlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfQ29ubmVjdE5hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIGhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB1c2Vfb3ZlcmxhcHBlZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZWQzYjE2NWQxYmNhOTVhIGlucHV0PWVkYzgzZGEwMDdlYmYzYmVdKi8KIHsKLSAgICBIQU5ETEUgaE5hbWVkUGlwZTsKLSAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOwogICAgIEJPT0wgc3VjY2VzczsKICAgICBPdmVybGFwcGVkT2JqZWN0ICpvdmVybGFwcGVkID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImhhbmRsZSIsICJvdmVybGFwcGVkIiwgTlVMTH07Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZfSEFORExFICJ8IiBGX0JPT0wsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaE5hbWVkUGlwZSwgJnVzZV9vdmVybGFwcGVkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAodXNlX292ZXJsYXBwZWQpIHsKLSAgICAgICAgb3ZlcmxhcHBlZCA9IG5ld19vdmVybGFwcGVkKGhOYW1lZFBpcGUpOworICAgICAgICBvdmVybGFwcGVkID0gbmV3X292ZXJsYXBwZWQoaGFuZGxlKTsKICAgICAgICAgaWYgKCFvdmVybGFwcGVkKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHN1Y2Nlc3MgPSBDb25uZWN0TmFtZWRQaXBlKGhOYW1lZFBpcGUsCisgICAgc3VjY2VzcyA9IENvbm5lY3ROYW1lZFBpcGUoaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBwZWQgPyAmb3ZlcmxhcHBlZC0+b3ZlcmxhcHBlZCA6IE5VTEwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKQEAgLTM2OCw5NCArNDI5LDIzOCBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX0NyZWF0ZUZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5DcmVhdGVGaWxlIC0+IEhBTkRMRQorCisgICAgZmlsZV9uYW1lOiBMUENUU1RSCisgICAgZGVzaXJlZF9hY2Nlc3M6IERXT1JECisgICAgc2hhcmVfbW9kZTogRFdPUkQKKyAgICBzZWN1cml0eV9hdHRyaWJ1dGVzOiBMUFNFQ1VSSVRZX0FUVFJJQlVURVMKKyAgICBjcmVhdGlvbl9kaXNwb3NpdGlvbjogRFdPUkQKKyAgICBmbGFnc19hbmRfYXR0cmlidXRlczogRFdPUkQKKyAgICB0ZW1wbGF0ZV9maWxlOiBIQU5ETEUKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBIQU5ETEUKK193aW5hcGlfQ3JlYXRlRmlsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIExQQ1RTVFIgZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgZGVzaXJlZF9hY2Nlc3MsIERXT1JEIHNoYXJlX21vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgc2VjdXJpdHlfYXR0cmlidXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGNyZWF0aW9uX2Rpc3Bvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgZmxhZ3NfYW5kX2F0dHJpYnV0ZXMsIEhBTkRMRSB0ZW1wbGF0ZV9maWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM2ZTFkNzhmOGFmZmQxMGMgaW5wdXQ9NjQyM2MzZTQwMzcyZGJkNV0qLwogewotICAgIExQQ1RTVFIgbHBGaWxlTmFtZTsKLSAgICBEV09SRCBkd0Rlc2lyZWRBY2Nlc3M7Ci0gICAgRFdPUkQgZHdTaGFyZU1vZGU7Ci0gICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwU2VjdXJpdHlBdHRyaWJ1dGVzOwotICAgIERXT1JEIGR3Q3JlYXRpb25EaXNwb3NpdGlvbjsKLSAgICBEV09SRCBkd0ZsYWdzQW5kQXR0cmlidXRlczsKLSAgICBIQU5ETEUgaFRlbXBsYXRlRmlsZTsKICAgICBIQU5ETEUgaGFuZGxlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiBGX0RXT1JEIEZfRFdPUkQgRl9QT0lOVEVSCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZfRFdPUkQgRl9EV09SRCBGX0hBTkRMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwRmlsZU5hbWUsICZkd0Rlc2lyZWRBY2Nlc3MsICZkd1NoYXJlTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwU2VjdXJpdHlBdHRyaWJ1dGVzLCAmZHdDcmVhdGlvbkRpc3Bvc2l0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZHdGbGFnc0FuZEF0dHJpYnV0ZXMsICZoVGVtcGxhdGVGaWxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaGFuZGxlID0gQ3JlYXRlRmlsZShscEZpbGVOYW1lLCBkd0Rlc2lyZWRBY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBkd1NoYXJlTW9kZSwgbHBTZWN1cml0eUF0dHJpYnV0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBkd0NyZWF0aW9uRGlzcG9zaXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICBkd0ZsYWdzQW5kQXR0cmlidXRlcywgaFRlbXBsYXRlRmlsZSk7CisgICAgaGFuZGxlID0gQ3JlYXRlRmlsZShmaWxlX25hbWUsIGRlc2lyZWRfYWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVfbW9kZSwgc2VjdXJpdHlfYXR0cmlidXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uX2Rpc3Bvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3NfYW5kX2F0dHJpYnV0ZXMsIHRlbXBsYXRlX2ZpbGUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwogCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9IQU5ETEUsIGhhbmRsZSk7CisgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5DcmVhdGVKdW5jdGlvbgorCisgICAgc3JjX3BhdGg6IExQV1NUUgorICAgIGRzdF9wYXRoOiBMUFdTVFIKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfQ3JlYXRlTmFtZWRQaXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK193aW5hcGlfQ3JlYXRlSnVuY3Rpb25faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBMUFdTVFIgc3JjX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBXU1RSIGRzdF9wYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVjY2FlOTM2NGU0NmY2ZGEgaW5wdXQ9OGNkMWY5OTY0YjZlM2QzNl0qLwogewotICAgIExQQ1RTVFIgbHBOYW1lOwotICAgIERXT1JEIGR3T3Blbk1vZGU7Ci0gICAgRFdPUkQgZHdQaXBlTW9kZTsKLSAgICBEV09SRCBuTWF4SW5zdGFuY2VzOwotICAgIERXT1JEIG5PdXRCdWZmZXJTaXplOwotICAgIERXT1JEIG5JbkJ1ZmZlclNpemU7Ci0gICAgRFdPUkQgbkRlZmF1bHRUaW1lT3V0OwotICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFNlY3VyaXR5QXR0cmlidXRlczsKKyAgICAvKiBQcml2aWxlZ2UgYWRqdXN0bWVudCAqLworICAgIEhBTkRMRSB0b2tlbiA9IE5VTEw7CisgICAgVE9LRU5fUFJJVklMRUdFUyB0cDsKKworICAgIC8qIFJlcGFyc2UgZGF0YSBidWZmZXIgKi8KKyAgICBjb25zdCBVU0hPUlQgcHJlZml4X2xlbiA9IDQ7CisgICAgVVNIT1JUIHByaW50X2xlbiA9IDA7CisgICAgVVNIT1JUIHJkYl9zaXplID0gMDsKKyAgICBQUkVQQVJTRV9EQVRBX0JVRkZFUiByZGIgPSBOVUxMOworCisgICAgLyogSnVuY3Rpb24gcG9pbnQgY3JlYXRpb24gKi8KKyAgICBIQU5ETEUganVuY3Rpb24gPSBOVUxMOworICAgIERXT1JEIHJldCA9IDA7CisKKyAgICBpZiAoc3JjX3BhdGggPT0gTlVMTCB8fCBkc3RfcGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoRVJST1JfSU5WQUxJRF9QQVJBTUVURVIpOworCisgICAgaWYgKHdjc25jbXAoc3JjX3BhdGgsIEwiXFw/P1xcIiwgcHJlZml4X2xlbikgPT0gMCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEVSUk9SX0lOVkFMSURfUEFSQU1FVEVSKTsKKworICAgIC8qIEFkanVzdCBwcml2aWxlZ2VzIHRvIGFsbG93IHJld3JpdGluZyBkaXJlY3RvcnkgZW50cnkgYXMgYQorICAgICAgIGp1bmN0aW9uIHBvaW50LiAqLworICAgIGlmICghT3BlblByb2Nlc3NUb2tlbihHZXRDdXJyZW50UHJvY2VzcygpLCBUT0tFTl9BREpVU1RfUFJJVklMRUdFUywgJnRva2VuKSkKKyAgICAgICAgZ290byBjbGVhbnVwOworCisgICAgaWYgKCFMb29rdXBQcml2aWxlZ2VWYWx1ZShOVUxMLCBTRV9SRVNUT1JFX05BTUUsICZ0cC5Qcml2aWxlZ2VzWzBdLkx1aWQpKQorICAgICAgICBnb3RvIGNsZWFudXA7CisKKyAgICB0cC5Qcml2aWxlZ2VDb3VudCA9IDE7CisgICAgdHAuUHJpdmlsZWdlc1swXS5BdHRyaWJ1dGVzID0gU0VfUFJJVklMRUdFX0VOQUJMRUQ7CisgICAgaWYgKCFBZGp1c3RUb2tlblByaXZpbGVnZXModG9rZW4sIEZBTFNFLCAmdHAsIHNpemVvZihUT0tFTl9QUklWSUxFR0VTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKSkKKyAgICAgICAgZ290byBjbGVhbnVwOworCisgICAgaWYgKEdldEZpbGVBdHRyaWJ1dGVzVyhzcmNfcGF0aCkgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpCisgICAgICAgIGdvdG8gY2xlYW51cDsKKworICAgIC8qIFN0b3JlIHRoZSBhYnNvbHV0ZSBsaW5rIHRhcmdldCBwYXRoIGxlbmd0aCBpbiBwcmludF9sZW4uICovCisgICAgcHJpbnRfbGVuID0gKFVTSE9SVClHZXRGdWxsUGF0aE5hbWVXKHNyY19wYXRoLCAwLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAocHJpbnRfbGVuID09IDApCisgICAgICAgIGdvdG8gY2xlYW51cDsKKworICAgIC8qIE5VTCB0ZXJtaW5hdG9yIHNob3VsZCBub3QgYmUgcGFydCBvZiBwcmludF9sZW4uICovCisgICAgLS1wcmludF9sZW47CisKKyAgICAvKiBSRVBBUlNFX0RBVEFfQlVGRkVSIHVzYWdlIGlzIGhlYXZpbHkgdW5kZXItZG9jdW1lbnRlZCwgZXNwZWNpYWxseSBmb3IKKyAgICAgICBqdW5jdGlvbiBwb2ludHMuIEhlcmUncyB3aGF0IEkndmUgbGVhcm5lZCBhbG9uZyB0aGUgd2F5OgorICAgICAgIC0gQSBqdW5jdGlvbiBwb2ludCBoYXMgdHdvIGNvbXBvbmVudHM6IGEgcHJpbnQgbmFtZSBhbmQgYSBzdWJzdGl0dXRlCisgICAgICAgICBuYW1lLiBUaGV5IGJvdGggZGVzY3JpYmUgdGhlIGxpbmsgdGFyZ2V0LCBidXQgdGhlIHN1YnN0aXR1dGUgbmFtZSBpcworICAgICAgICAgdGhlIHBoeXNpY2FsIHRhcmdldCBhbmQgdGhlIHByaW50IG5hbWUgaXMgc2hvd24gaW4gZGlyZWN0b3J5IGxpc3RpbmdzLgorICAgICAgIC0gVGhlIHByaW50IG5hbWUgbXVzdCBiZSBhIG5hdGl2ZSBuYW1lLCBwcmVmaXhlZCB3aXRoICJcPz9cIi4KKyAgICAgICAtIEJvdGggbmFtZXMgYXJlIHN0b3JlZCBhZnRlciBlYWNoIG90aGVyIGluIHRoZSBzYW1lIGJ1ZmZlciAodGhlCisgICAgICAgICBQYXRoQnVmZmVyKSBhbmQgYm90aCBtdXN0IGJlIE5VTC10ZXJtaW5hdGVkLgorICAgICAgIC0gVGhlcmUgYXJlIGZvdXIgbWVtYmVycyBkZWZpbmluZyB0aGVpciByZXNwZWN0aXZlIG9mZnNldCBhbmQgbGVuZ3RoCisgICAgICAgICBpbnNpZGUgUGF0aEJ1ZmZlcjogU3Vic3RpdHV0ZU5hbWVPZmZzZXQsIFN1YnN0aXR1dGVOYW1lTGVuZ3RoLAorICAgICAgICAgUHJpbnROYW1lT2Zmc2V0IGFuZCBQcmludE5hbWVMZW5ndGguCisgICAgICAgLSBUaGUgdG90YWwgc2l6ZSB3ZSBuZWVkIHRvIGFsbG9jYXRlIGZvciB0aGUgUkVQQVJTRV9EQVRBX0JVRkZFUiwgdGh1cywKKyAgICAgICAgIGlzIHRoZSBzdW0gb2Y6CisgICAgICAgICAtIHRoZSBmaXhlZCBoZWFkZXIgc2l6ZSAoUkVQQVJTRV9EQVRBX0JVRkZFUl9IRUFERVJfU0laRSkKKyAgICAgICAgIC0gdGhlIHNpemUgb2YgdGhlIE1vdW50UG9pbnRSZXBhcnNlQnVmZmVyIG1lbWJlciB3aXRob3V0IHRoZSBQYXRoQnVmZmVyCisgICAgICAgICAtIHRoZSBzaXplIG9mIHRoZSBwcmVmaXggKCJcPz9cIikgaW4gYnl0ZXMKKyAgICAgICAgIC0gdGhlIHNpemUgb2YgdGhlIHByaW50IG5hbWUgaW4gYnl0ZXMKKyAgICAgICAgIC0gdGhlIHNpemUgb2YgdGhlIHN1YnN0aXR1dGUgbmFtZSBpbiBieXRlcworICAgICAgICAgLSB0aGUgc2l6ZSBvZiB0d28gTlVMIHRlcm1pbmF0b3JzIGluIGJ5dGVzICovCisgICAgcmRiX3NpemUgPSBSRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFICsKKyAgICAgICAgc2l6ZW9mKHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIpIC0KKyAgICAgICAgc2l6ZW9mKHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuUGF0aEJ1ZmZlcikgKworICAgICAgICAvKiBUd28gKzEncyBmb3IgTlVMIHRlcm1pbmF0b3JzLiAqLworICAgICAgICAocHJlZml4X2xlbiArIHByaW50X2xlbiArIDEgKyBwcmludF9sZW4gKyAxKSAqIHNpemVvZihXQ0hBUik7CisgICAgcmRiID0gKFBSRVBBUlNFX0RBVEFfQlVGRkVSKVB5TWVtX1Jhd01hbGxvYyhyZGJfc2l6ZSk7CisgICAgaWYgKHJkYiA9PSBOVUxMKQorICAgICAgICBnb3RvIGNsZWFudXA7CisKKyAgICBtZW1zZXQocmRiLCAwLCByZGJfc2l6ZSk7CisgICAgcmRiLT5SZXBhcnNlVGFnID0gSU9fUkVQQVJTRV9UQUdfTU9VTlRfUE9JTlQ7CisgICAgcmRiLT5SZXBhcnNlRGF0YUxlbmd0aCA9IHJkYl9zaXplIC0gUkVQQVJTRV9EQVRBX0JVRkZFUl9IRUFERVJfU0laRTsKKyAgICByZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlN1YnN0aXR1dGVOYW1lT2Zmc2V0ID0gMDsKKyAgICByZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlN1YnN0aXR1dGVOYW1lTGVuZ3RoID0KKyAgICAgICAgKHByZWZpeF9sZW4gKyBwcmludF9sZW4pICogc2l6ZW9mKFdDSEFSKTsKKyAgICByZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlByaW50TmFtZU9mZnNldCA9CisgICAgICAgIHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuU3Vic3RpdHV0ZU5hbWVMZW5ndGggKyBzaXplb2YoV0NIQVIpOworICAgIHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuUHJpbnROYW1lTGVuZ3RoID0gcHJpbnRfbGVuICogc2l6ZW9mKFdDSEFSKTsKKworICAgIC8qIFN0b3JlIHRoZSBmdWxsIG5hdGl2ZSBwYXRoIG9mIGxpbmsgdGFyZ2V0IGF0IHRoZSBzdWJzdGl0dXRlIG5hbWUKKyAgICAgICBvZmZzZXQgKDApLiAqLworICAgIHdjc2NweShyZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlBhdGhCdWZmZXIsIEwiXFw/P1xcIik7CisgICAgaWYgKEdldEZ1bGxQYXRoTmFtZVcoc3JjX3BhdGgsIHByaW50X2xlbiArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlci5QYXRoQnVmZmVyICsgcHJlZml4X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSA9PSAwKQorICAgICAgICBnb3RvIGNsZWFudXA7CisKKyAgICAvKiBDb3B5IGV2ZXJ5dGhpbmcgYnV0IHRoZSBuYXRpdmUgcHJlZml4IHRvIHRoZSBwcmludCBuYW1lIG9mZnNldC4gKi8KKyAgICB3Y3NjcHkocmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlci5QYXRoQnVmZmVyICsKKyAgICAgICAgICAgICBwcmVmaXhfbGVuICsgcHJpbnRfbGVuICsgMSwKKyAgICAgICAgICAgICByZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlBhdGhCdWZmZXIgKyBwcmVmaXhfbGVuKTsKKworICAgIC8qIENyZWF0ZSBhIGRpcmVjdG9yeSBmb3IgdGhlIGp1bmN0aW9uIHBvaW50LiAqLworICAgIGlmICghQ3JlYXRlRGlyZWN0b3J5Vyhkc3RfcGF0aCwgTlVMTCkpCisgICAgICAgIGdvdG8gY2xlYW51cDsKKworICAgIGp1bmN0aW9uID0gQ3JlYXRlRmlsZVcoZHN0X3BhdGgsIEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIE5VTEwsCisgICAgICAgIE9QRU5fRVhJU1RJTkcsCisgICAgICAgIEZJTEVfRkxBR19PUEVOX1JFUEFSU0VfUE9JTlQgfCBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7CisgICAgaWYgKGp1bmN0aW9uID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICBnb3RvIGNsZWFudXA7CisKKyAgICAvKiBNYWtlIHRoZSBkaXJlY3RvcnkgZW50cnkgYSBqdW5jdGlvbiBwb2ludC4gKi8KKyAgICBpZiAoIURldmljZUlvQ29udHJvbChqdW5jdGlvbiwgRlNDVExfU0VUX1JFUEFSU0VfUE9JTlQsIHJkYiwgcmRiX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgJnJldCwgTlVMTCkpCisgICAgICAgIGdvdG8gY2xlYW51cDsKKworY2xlYW51cDoKKyAgICByZXQgPSBHZXRMYXN0RXJyb3IoKTsKKworICAgIENsb3NlSGFuZGxlKHRva2VuKTsKKyAgICBDbG9zZUhhbmRsZShqdW5jdGlvbik7CisgICAgUHlNZW1fUmF3RnJlZShyZGIpOworCisgICAgaWYgKHJldCAhPSAwKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIocmV0KTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkNyZWF0ZU5hbWVkUGlwZSAtPiBIQU5ETEUKKworICAgIG5hbWU6IExQQ1RTVFIKKyAgICBvcGVuX21vZGU6IERXT1JECisgICAgcGlwZV9tb2RlOiBEV09SRAorICAgIG1heF9pbnN0YW5jZXM6IERXT1JECisgICAgb3V0X2J1ZmZlcl9zaXplOiBEV09SRAorICAgIGluX2J1ZmZlcl9zaXplOiBEV09SRAorICAgIGRlZmF1bHRfdGltZW91dDogRFdPUkQKKyAgICBzZWN1cml0eV9hdHRyaWJ1dGVzOiBMUFNFQ1VSSVRZX0FUVFJJQlVURVMKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBIQU5ETEUKK193aW5hcGlfQ3JlYXRlTmFtZWRQaXBlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgTFBDVFNUUiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBvcGVuX21vZGUsIERXT1JEIHBpcGVfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgbWF4X2luc3RhbmNlcywgRFdPUkQgb3V0X2J1ZmZlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBpbl9idWZmZXJfc2l6ZSwgRFdPUkQgZGVmYXVsdF90aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgc2VjdXJpdHlfYXR0cmlidXRlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NGNhMmEwNmEyMTliNTIzIGlucHV0PTVhNzM1MzBiODRkOGJjMzddKi8KK3sKICAgICBIQU5ETEUgaGFuZGxlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiBGX0RXT1JEIEZfRFdPUkQgRl9EV09SRAotICAgICAgICAgICAgICAgICAgICAgICAgICBGX0RXT1JEIEZfRFdPUkQgRl9EV09SRCBGX1BPSU5URVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZscE5hbWUsICZkd09wZW5Nb2RlLCAmZHdQaXBlTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5NYXhJbnN0YW5jZXMsICZuT3V0QnVmZmVyU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5JbkJ1ZmZlclNpemUsICZuRGVmYXVsdFRpbWVPdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZscFNlY3VyaXR5QXR0cmlidXRlcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGhhbmRsZSA9IENyZWF0ZU5hbWVkUGlwZShscE5hbWUsIGR3T3Blbk1vZGUsIGR3UGlwZU1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5NYXhJbnN0YW5jZXMsIG5PdXRCdWZmZXJTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuSW5CdWZmZXJTaXplLCBuRGVmYXVsdFRpbWVPdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxwU2VjdXJpdHlBdHRyaWJ1dGVzKTsKKyAgICBoYW5kbGUgPSBDcmVhdGVOYW1lZFBpcGUobmFtZSwgb3Blbl9tb2RlLCBwaXBlX21vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9pbnN0YW5jZXMsIG91dF9idWZmZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fYnVmZmVyX3NpemUsIGRlZmF1bHRfdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdXJpdHlfYXR0cmlidXRlcyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CiAKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0hBTkRMRSwgaGFuZGxlKTsKKyAgICByZXR1cm4gaGFuZGxlOwogfQogCi1QeURvY19TVFJWQVIoQ3JlYXRlUGlwZV9kb2MsCi0iQ3JlYXRlUGlwZShwaXBlX2F0dHJzLCBzaXplKSAtPiAocmVhZF9oYW5kbGUsIHdyaXRlX2hhbmRsZSlcblwKLVxuXAotQ3JlYXRlIGFuIGFub255bW91cyBwaXBlLCBhbmQgcmV0dXJuIGhhbmRsZXMgdG8gdGhlIHJlYWQgYW5kXG5cCi13cml0ZSBlbmRzIG9mIHRoZSBwaXBlLlxuXAotXG5cCi1waXBlX2F0dHJzIGlzIGlnbm9yZWQgaW50ZXJuYWxseSBhbmQgY2FuIGJlIE5vbmUuIik7CisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkNyZWF0ZVBpcGUKKworICAgIHBpcGVfYXR0cnM6IG9iamVjdAorICAgICAgICBJZ25vcmVkIGludGVybmFsbHksIGNhbiBiZSBOb25lLgorICAgIHNpemU6IERXT1JECisgICAgLworCitDcmVhdGUgYW4gYW5vbnltb3VzIHBpcGUuCisKK1JldHVybnMgYSAyLXR1cGxlIG9mIGhhbmRsZXMsIHRvIHRoZSByZWFkIGFuZCB3cml0ZSBlbmRzIG9mIHRoZSBwaXBlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX0NyZWF0ZVBpcGUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorX3dpbmFwaV9DcmVhdGVQaXBlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBpcGVfYXR0cnMsCisgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBzaXplKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlZjk5ZjNiNDIyMmJjNzggaW5wdXQ9YzRmMmNmYTU2ZWY2OGQ5MF0qLwogewogICAgIEhBTkRMRSByZWFkX3BpcGU7CiAgICAgSEFORExFIHdyaXRlX3BpcGU7CiAgICAgQk9PTCByZXN1bHQ7CiAKLSAgICBQeU9iamVjdCogcGlwZV9hdHRyaWJ1dGVzOyAvKiBpZ25vcmVkICovCi0gICAgRFdPUkQgc2l6ZTsKLQotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8iIEZfRFdPUkQgIjpDcmVhdGVQaXBlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZwaXBlX2F0dHJpYnV0ZXMsICZzaXplKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzdWx0ID0gQ3JlYXRlUGlwZSgmcmVhZF9waXBlLCAmd3JpdGVfcGlwZSwgTlVMTCwgc2l6ZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKQEAgLTU4NiwyMCArNzkxLDM2IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUihDcmVhdGVQcm9jZXNzX2RvYywKLSJDcmVhdGVQcm9jZXNzKGFwcF9uYW1lLCBjbWRfbGluZSwgcHJvY19hdHRycywgdGhyZWFkX2F0dHJzLFxuXAotICAgICAgICAgICAgICAgaW5oZXJpdCwgZmxhZ3MsIGVudl9tYXBwaW5nLCBjdXJkaXIsXG5cCi0gICAgICAgICAgICAgICBzdGFydHVwX2luZm8pIC0+IChwcm9jX2hhbmRsZSwgdGhyZWFkX2hhbmRsZSxcblwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCwgdGlkKVxuXAotXG5cCi1DcmVhdGUgYSBuZXcgcHJvY2VzcyBhbmQgaXRzIHByaW1hcnkgdGhyZWFkLiBUaGUgcmV0dXJuXG5cCi12YWx1ZSBpcyBhIHR1cGxlIG9mIHRoZSBwcm9jZXNzIGhhbmRsZSwgdGhyZWFkIGhhbmRsZSxcblwKLXByb2Nlc3MgSUQsIGFuZCB0aHJlYWQgSUQuXG5cCi1cblwKLXByb2NfYXR0cnMgYW5kIHRocmVhZF9hdHRycyBhcmUgaWdub3JlZCBpbnRlcm5hbGx5IGFuZCBjYW4gYmUgTm9uZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuQ3JlYXRlUHJvY2VzcworCisgICAgYXBwbGljYXRpb25fbmFtZTogUHlfVU5JQ09ERShhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KQorICAgIGNvbW1hbmRfbGluZTogUHlfVU5JQ09ERShhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KQorICAgIHByb2NfYXR0cnM6IG9iamVjdAorICAgICAgICBJZ25vcmVkIGludGVybmFsbHksIGNhbiBiZSBOb25lLgorICAgIHRocmVhZF9hdHRyczogb2JqZWN0CisgICAgICAgIElnbm9yZWQgaW50ZXJuYWxseSwgY2FuIGJlIE5vbmUuCisgICAgaW5oZXJpdF9oYW5kbGVzOiBCT09MCisgICAgY3JlYXRpb25fZmxhZ3M6IERXT1JECisgICAgZW52X21hcHBpbmc6IG9iamVjdAorICAgIGN1cnJlbnRfZGlyZWN0b3J5OiBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCisgICAgc3RhcnR1cF9pbmZvOiBvYmplY3QKKyAgICAvCisKK0NyZWF0ZSBhIG5ldyBwcm9jZXNzIGFuZCBpdHMgcHJpbWFyeSB0aHJlYWQuCisKK1RoZSByZXR1cm4gdmFsdWUgaXMgYSB0dXBsZSBvZiB0aGUgcHJvY2VzcyBoYW5kbGUsIHRocmVhZCBoYW5kbGUsCitwcm9jZXNzIElELCBhbmQgdGhyZWFkIElELgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX0NyZWF0ZVByb2Nlc3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorX3dpbmFwaV9DcmVhdGVQcm9jZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfVU5JQ09ERSAqYXBwbGljYXRpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKmNvbW1hbmRfbGluZSwgUHlPYmplY3QgKnByb2NfYXR0cnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGhyZWFkX2F0dHJzLCBCT09MIGluaGVyaXRfaGFuZGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGNyZWF0aW9uX2ZsYWdzLCBQeU9iamVjdCAqZW52X21hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpjdXJyZW50X2RpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdGFydHVwX2luZm8pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODc0YmIzNTBmZjllZDRlZiBpbnB1dD00YTQzYjA1MDM4ZDYzOWJiXSovCiB7CiAgICAgQk9PTCByZXN1bHQ7CiAgICAgUFJPQ0VTU19JTkZPUk1BVElPTiBwaTsKQEAgLTYwNywyOCArODI4LDYgQEAKICAgICBQeU9iamVjdCogZW52aXJvbm1lbnQ7CiAgICAgd2NoYXJfdCAqd2Vudmlyb25tZW50OwogCi0gICAgd2NoYXJfdCogYXBwbGljYXRpb25fbmFtZTsKLSAgICB3Y2hhcl90KiBjb21tYW5kX2xpbmU7Ci0gICAgUHlPYmplY3QqIHByb2Nlc3NfYXR0cmlidXRlczsgLyogaWdub3JlZCAqLwotICAgIFB5T2JqZWN0KiB0aHJlYWRfYXR0cmlidXRlczsgLyogaWdub3JlZCAqLwotICAgIEJPT0wgaW5oZXJpdF9oYW5kbGVzOwotICAgIERXT1JEIGNyZWF0aW9uX2ZsYWdzOwotICAgIFB5T2JqZWN0KiBlbnZfbWFwcGluZzsKLSAgICB3Y2hhcl90KiBjdXJyZW50X2RpcmVjdG9yeTsKLSAgICBQeU9iamVjdCogc3RhcnR1cF9pbmZvOwotCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiWlpPTyIgRl9CT09MIEZfRFdPUkQgIk9aTzpDcmVhdGVQcm9jZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcHBsaWNhdGlvbl9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbW1hbmRfbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcm9jZXNzX2F0dHJpYnV0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmdGhyZWFkX2F0dHJpYnV0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5oZXJpdF9oYW5kbGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNyZWF0aW9uX2ZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVudl9tYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN1cnJlbnRfZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0dXBfaW5mbykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgWmVyb01lbW9yeSgmc2ksIHNpemVvZihzaSkpOwogICAgIHNpLmNiID0gc2l6ZW9mKHNpKTsKIApAQCAtNjgyLDQxICs4ODEsMzYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBwaS5kd1RocmVhZElkKTsKIH0KIAotUHlEb2NfU1RSVkFSKER1cGxpY2F0ZUhhbmRsZV9kb2MsCi0iRHVwbGljYXRlSGFuZGxlKHNvdXJjZV9wcm9jX2hhbmRsZSwgc291cmNlX2hhbmRsZSxcblwKLSAgICAgICAgICAgICAgICAgdGFyZ2V0X3Byb2NfaGFuZGxlLCB0YXJnZXRfaGFuZGxlLCBhY2Nlc3MsXG5cCi0gICAgICAgICAgICAgICAgIGluaGVyaXRbLCBvcHRpb25zXSkgLT4gaGFuZGxlXG5cCi1cblwKLVJldHVybiBhIGR1cGxpY2F0ZSBoYW5kbGUgb2JqZWN0LlxuXAotXG5cCi1UaGUgZHVwbGljYXRlIGhhbmRsZSByZWZlcnMgdG8gdGhlIHNhbWUgb2JqZWN0IGFzIHRoZSBvcmlnaW5hbFxuXAotaGFuZGxlLiBUaGVyZWZvcmUsIGFueSBjaGFuZ2VzIHRvIHRoZSBvYmplY3QgYXJlIHJlZmxlY3RlZFxuXAotdGhyb3VnaCBib3RoIGhhbmRsZXMuIik7CisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkR1cGxpY2F0ZUhhbmRsZSAtPiBIQU5ETEUKIAotc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9EdXBsaWNhdGVIYW5kbGUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorICAgIHNvdXJjZV9wcm9jZXNzX2hhbmRsZTogSEFORExFCisgICAgc291cmNlX2hhbmRsZTogSEFORExFCisgICAgdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlOiBIQU5ETEUKKyAgICBkZXNpcmVkX2FjY2VzczogRFdPUkQKKyAgICBpbmhlcml0X2hhbmRsZTogQk9PTAorICAgIG9wdGlvbnM6IERXT1JEID0gMAorICAgIC8KKworUmV0dXJuIGEgZHVwbGljYXRlIGhhbmRsZSBvYmplY3QuCisKK1RoZSBkdXBsaWNhdGUgaGFuZGxlIHJlZmVycyB0byB0aGUgc2FtZSBvYmplY3QgYXMgdGhlIG9yaWdpbmFsCitoYW5kbGUuIFRoZXJlZm9yZSwgYW55IGNoYW5nZXMgdG8gdGhlIG9iamVjdCBhcmUgcmVmbGVjdGVkCit0aHJvdWdoIGJvdGggaGFuZGxlcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9EdXBsaWNhdGVIYW5kbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUgc291cmNlX3Byb2Nlc3NfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUgc291cmNlX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFIHRhcmdldF9wcm9jZXNzX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgZGVzaXJlZF9hY2Nlc3MsIEJPT0wgaW5oZXJpdF9oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIG9wdGlvbnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDc5OTUxNWI2OGI1MjM3YiBpbnB1dD1iOTMzZTNmMjM1NmE4YzEyXSovCiB7CiAgICAgSEFORExFIHRhcmdldF9oYW5kbGU7CiAgICAgQk9PTCByZXN1bHQ7CiAKLSAgICBIQU5ETEUgc291cmNlX3Byb2Nlc3NfaGFuZGxlOwotICAgIEhBTkRMRSBzb3VyY2VfaGFuZGxlOwotICAgIEhBTkRMRSB0YXJnZXRfcHJvY2Vzc19oYW5kbGU7Ci0gICAgRFdPUkQgZGVzaXJlZF9hY2Nlc3M7Ci0gICAgQk9PTCBpbmhlcml0X2hhbmRsZTsKLSAgICBEV09SRCBvcHRpb25zID0gMDsKLQotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEZfSEFORExFIEZfSEFORExFIEZfSEFORExFIEZfRFdPUkQgRl9CT09MIEZfRFdPUkQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICI6RHVwbGljYXRlSGFuZGxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZzb3VyY2VfcHJvY2Vzc19oYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmc291cmNlX2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YXJnZXRfcHJvY2Vzc19oYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmZGVzaXJlZF9hY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5oZXJpdF9oYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9ucykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJlc3VsdCA9IER1cGxpY2F0ZUhhbmRsZSgKICAgICAgICAgc291cmNlX3Byb2Nlc3NfaGFuZGxlLApAQCAtNzI5LDk4ICs5MjMsMTExIEBACiAgICAgKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgaWYgKCEgcmVzdWx0KQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworICAgIGlmICghIHJlc3VsdCkgeworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgIHJldHVybiBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKyAgICB9CiAKLSAgICByZXR1cm4gSEFORExFX1RPX1BZTlVNKHRhcmdldF9oYW5kbGUpOworICAgIHJldHVybiB0YXJnZXRfaGFuZGxlOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkV4aXRQcm9jZXNzCisKKyAgICBFeGl0Q29kZTogVUlOVAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX0V4aXRQcm9jZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK193aW5hcGlfRXhpdFByb2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBVSU5UIEV4aXRDb2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI1ZjNiNDk5YzI0Y2VkYzggaW5wdXQ9NGYwNTQ2NmE5NDA2YzU1OF0qLwogewotICAgIFVJTlQgdUV4aXRDb2RlOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfVUlOVCwgJnVFeGl0Q29kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgI2lmIGRlZmluZWQoUHlfREVCVUcpCiAgICAgICAgIFNldEVycm9yTW9kZShTRU1fRkFJTENSSVRJQ0FMRVJST1JTfFNFTV9OT0FMSUdOTUVOVEZBVUxURVhDRVBUfAogICAgICAgICAgICAgICAgICAgICAgU0VNX05PR1BGQVVMVEVSUk9SQk9YfFNFTV9OT09QRU5GSUxFRVJST1JCT1gpOwogICAgICAgICBfQ3J0U2V0UmVwb3J0TW9kZShfQ1JUX0FTU0VSVCwgX0NSVERCR19NT0RFX0RFQlVHKTsKICAgICAjZW5kaWYKIAotICAgIEV4aXRQcm9jZXNzKHVFeGl0Q29kZSk7CisgICAgRXhpdFByb2Nlc3MoRXhpdENvZGUpOwogCiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUihHZXRDdXJyZW50UHJvY2Vzc19kb2MsCi0iR2V0Q3VycmVudFByb2Nlc3MoKSAtPiBoYW5kbGVcblwKLVxuXAotUmV0dXJuIGEgaGFuZGxlIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgcHJvY2Vzcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuR2V0Q3VycmVudFByb2Nlc3MgLT4gSEFORExFCiAKLXN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfR2V0Q3VycmVudFByb2Nlc3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorUmV0dXJuIGEgaGFuZGxlIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgcHJvY2Vzcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9HZXRDdXJyZW50UHJvY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmUyOWFjM2FkNWY4MjkxZSBpbnB1dD1iMjEzNDAzZmQ0Yjk2YjQxXSovCiB7Ci0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkdldEN1cnJlbnRQcm9jZXNzIikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIEhBTkRMRV9UT19QWU5VTShHZXRDdXJyZW50UHJvY2VzcygpKTsKKyAgICByZXR1cm4gR2V0Q3VycmVudFByb2Nlc3MoKTsKIH0KIAotUHlEb2NfU1RSVkFSKEdldEV4aXRDb2RlUHJvY2Vzc19kb2MsCi0iR2V0RXhpdENvZGVQcm9jZXNzKGhhbmRsZSkgLT4gRXhpdCBjb2RlXG5cCi1cblwKLVJldHVybiB0aGUgdGVybWluYXRpb24gc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgcHJvY2Vzcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuR2V0RXhpdENvZGVQcm9jZXNzIC0+IERXT1JECiAKLXN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKyAgICBwcm9jZXNzOiBIQU5ETEUKKyAgICAvCisKK1JldHVybiB0aGUgdGVybWluYXRpb24gc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgcHJvY2Vzcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIERXT1JECitfd2luYXBpX0dldEV4aXRDb2RlUHJvY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBwcm9jZXNzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiMTBmMDg0OGE0MTBmNjUgaW5wdXQ9NjFiNmJmYzdkYzJlZTM3NF0qLwogewogICAgIERXT1JEIGV4aXRfY29kZTsKICAgICBCT09MIHJlc3VsdDsKIAotICAgIEhBTkRMRSBwcm9jZXNzOwotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgIjpHZXRFeGl0Q29kZVByb2Nlc3MiLCAmcHJvY2VzcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcmVzdWx0ID0gR2V0RXhpdENvZGVQcm9jZXNzKHByb2Nlc3MsICZleGl0X2NvZGUpOwogCi0gICAgaWYgKCEgcmVzdWx0KQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworICAgIGlmICghIHJlc3VsdCkgeworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgIGV4aXRfY29kZSA9IERXT1JEX01BWDsKKyAgICB9CiAKLSAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoZXhpdF9jb2RlKTsKKyAgICByZXR1cm4gZXhpdF9jb2RlOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX0dldExhc3RFcnJvcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkdldExhc3RFcnJvciAtPiBEV09SRAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgRFdPUkQKK193aW5hcGlfR2V0TGFzdEVycm9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZWEwMGQ4ZTY3YmRkMDU2IGlucHV0PTYyZDQ3ZmI5YmNlMDM4YmFdKi8KIHsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0RXT1JELCBHZXRMYXN0RXJyb3IoKSk7CisgICAgcmV0dXJuIEdldExhc3RFcnJvcigpOwogfQogCi1QeURvY19TVFJWQVIoR2V0TW9kdWxlRmlsZU5hbWVfZG9jLAotIkdldE1vZHVsZUZpbGVOYW1lKG1vZHVsZSkgLT4gcGF0aFxuXAotXG5cCi1SZXR1cm4gdGhlIGZ1bGx5LXF1YWxpZmllZCBwYXRoIGZvciB0aGUgZmlsZSB0aGF0IGNvbnRhaW5zXG5cCi10aGUgc3BlY2lmaWVkIG1vZHVsZS4gVGhlIG1vZHVsZSBtdXN0IGhhdmUgYmVlbiBsb2FkZWQgYnkgdGhlXG5cCi1jdXJyZW50IHByb2Nlc3MuXG5cCi1cblwKLVRoZSBtb2R1bGUgcGFyYW1ldGVyIHNob3VsZCBiZSBhIGhhbmRsZSB0byB0aGUgbG9hZGVkIG1vZHVsZVxuXAotd2hvc2UgcGF0aCBpcyBiZWluZyByZXF1ZXN0ZWQuIElmIHRoaXMgcGFyYW1ldGVyIGlzIDAsIFxuXAotR2V0TW9kdWxlRmlsZU5hbWUgcmV0cmlldmVzIHRoZSBwYXRoIG9mIHRoZSBleGVjdXRhYmxlIGZpbGVcblwKLW9mIHRoZSBjdXJyZW50IHByb2Nlc3MuIik7CisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkdldE1vZHVsZUZpbGVOYW1lCisKKyAgICBtb2R1bGVfaGFuZGxlOiBITU9EVUxFCisgICAgLworCitSZXR1cm4gdGhlIGZ1bGx5LXF1YWxpZmllZCBwYXRoIGZvciB0aGUgZmlsZSB0aGF0IGNvbnRhaW5zIG1vZHVsZS4KKworVGhlIG1vZHVsZSBtdXN0IGhhdmUgYmVlbiBsb2FkZWQgYnkgdGhlIGN1cnJlbnQgcHJvY2Vzcy4KKworVGhlIG1vZHVsZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGEgaGFuZGxlIHRvIHRoZSBsb2FkZWQgbW9kdWxlCit3aG9zZSBwYXRoIGlzIGJlaW5nIHJlcXVlc3RlZC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgMCwKK0dldE1vZHVsZUZpbGVOYW1lIHJldHJpZXZlcyB0aGUgcGF0aCBvZiB0aGUgZXhlY3V0YWJsZSBmaWxlCitvZiB0aGUgY3VycmVudCBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX0dldE1vZHVsZUZpbGVOYW1lKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK193aW5hcGlfR2V0TW9kdWxlRmlsZU5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBITU9EVUxFIG1vZHVsZV9oYW5kbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTAwNjNkYzYzYmRiZmExOCBpbnB1dD02ZDY2ZmY3ZGVjYTVkMTFmXSovCiB7CiAgICAgQk9PTCByZXN1bHQ7Ci0gICAgSE1PRFVMRSBtb2R1bGU7CiAgICAgV0NIQVIgZmlsZW5hbWVbTUFYX1BBVEhdOwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAiOkdldE1vZHVsZUZpbGVOYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZtb2R1bGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdCA9IEdldE1vZHVsZUZpbGVOYW1lVyhtb2R1bGUsIGZpbGVuYW1lLCBNQVhfUEFUSCk7CisgICAgcmVzdWx0ID0gR2V0TW9kdWxlRmlsZU5hbWVXKG1vZHVsZV9oYW5kbGUsIGZpbGVuYW1lLCBNQVhfUEFUSCk7CiAgICAgZmlsZW5hbWVbTUFYX1BBVEgtMV0gPSAnXDAnOwogCiAgICAgaWYgKCEgcmVzdWx0KQpAQCAtODI5LDgzICsxMDM2LDk2IEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoZmlsZW5hbWUsIHdjc2xlbihmaWxlbmFtZSkpOwogfQogCi1QeURvY19TVFJWQVIoR2V0U3RkSGFuZGxlX2RvYywKLSJHZXRTdGRIYW5kbGUoaGFuZGxlKSAtPiBpbnRlZ2VyXG5cCi1cblwKLVJldHVybiBhIGhhbmRsZSB0byB0aGUgc3BlY2lmaWVkIHN0YW5kYXJkIGRldmljZVxuXAotKFNURF9JTlBVVF9IQU5ETEUsIFNURF9PVVRQVVRfSEFORExFLCBTVERfRVJST1JfSEFORExFKS5cblwKLVRoZSBpbnRlZ2VyIGFzc29jaWF0ZWQgd2l0aCB0aGUgaGFuZGxlIG9iamVjdCBpcyByZXR1cm5lZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuR2V0U3RkSGFuZGxlIC0+IEhBTkRMRQogCi1zdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX0dldFN0ZEhhbmRsZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisgICAgc3RkX2hhbmRsZTogRFdPUkQKKyAgICAgICAgT25lIG9mIFNURF9JTlBVVF9IQU5ETEUsIFNURF9PVVRQVVRfSEFORExFLCBvciBTVERfRVJST1JfSEFORExFLgorICAgIC8KKworUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBzcGVjaWZpZWQgc3RhbmRhcmQgZGV2aWNlLgorCitUaGUgaW50ZWdlciBhc3NvY2lhdGVkIHdpdGggdGhlIGhhbmRsZSBvYmplY3QgaXMgcmV0dXJuZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBIQU5ETEUKK193aW5hcGlfR2V0U3RkSGFuZGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgRFdPUkQgc3RkX2hhbmRsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ZjVjYTI4YjI4YzZmYWQyIGlucHV0PTA3MDE2YjA2YTJmYzg4MjZdKi8KIHsKICAgICBIQU5ETEUgaGFuZGxlOwotICAgIERXT1JEIHN0ZF9oYW5kbGU7Ci0KLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfRFdPUkQgIjpHZXRTdGRIYW5kbGUiLCAmc3RkX2hhbmRsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGhhbmRsZSA9IEdldFN0ZEhhbmRsZShzdGRfaGFuZGxlKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOwogCi0gICAgaWYgKCEgaGFuZGxlKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgcmV0dXJuIGhhbmRsZTsKK30KKworLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5HZXRWZXJzaW9uIC0+IGxvbmcKKworUmV0dXJuIHRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgbG9uZworX3dpbmFwaV9HZXRWZXJzaW9uX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NWEyZjhhZDNiOTQ4Y2E4IGlucHV0PWUyMWRmZjhkMGJhZWRlZDJdKi8KKy8qIERpc2FibGUgZGVwcmVjYXRpb24gd2FybmluZ3MgYWJvdXQgR2V0VmVyc2lvbkV4IGFzIHRoZSByZXN1bHQgaXMKKyAgIGJlaW5nIHBhc3NlZCBzdHJhaWdodCB0aHJvdWdoIHRvIHRoZSBjYWxsZXIsIHdobyBpcyByZXNwb25zaWJsZSBmb3IKKyAgIHVzaW5nIGl0IGNvcnJlY3RseS4gKi8KKyNwcmFnbWEgd2FybmluZyhwdXNoKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5NikKKworeworICAgIHJldHVybiBHZXRWZXJzaW9uKCk7Cit9CisKKyNwcmFnbWEgd2FybmluZyhwb3ApCisKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuT3BlblByb2Nlc3MgLT4gSEFORExFCisKKyAgICBkZXNpcmVkX2FjY2VzczogRFdPUkQKKyAgICBpbmhlcml0X2hhbmRsZTogQk9PTAorICAgIHByb2Nlc3NfaWQ6IERXT1JECisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgSEFORExFCitfd2luYXBpX09wZW5Qcm9jZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgRFdPUkQgZGVzaXJlZF9hY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgQk9PTCBpbmhlcml0X2hhbmRsZSwgRFdPUkQgcHJvY2Vzc19pZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YmM1MmVkYTgyYTNkMjI2IGlucHV0PWVjOThjNGNmNGVhMmVjMzZdKi8KK3sKKyAgICBIQU5ETEUgaGFuZGxlOworCisgICAgaGFuZGxlID0gT3BlblByb2Nlc3MoZGVzaXJlZF9hY2Nlc3MsIGluaGVyaXRfaGFuZGxlLCBwcm9jZXNzX2lkKTsKKyAgICBpZiAoaGFuZGxlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisgICAgICAgIGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwogICAgIH0KIAotICAgIC8qIG5vdGU6IHJldHVybnMgaW50ZWdlciwgbm90IGhhbmRsZSBvYmplY3QgKi8KLSAgICByZXR1cm4gSEFORExFX1RPX1BZTlVNKGhhbmRsZSk7CisgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAotUHlEb2NfU1RSVkFSKEdldFZlcnNpb25fZG9jLAotIkdldFZlcnNpb24oKSAtPiB2ZXJzaW9uXG5cCi1cblwKLVJldHVybiB0aGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuUGVla05hbWVkUGlwZQorCisgICAgaGFuZGxlOiBIQU5ETEUKKyAgICBzaXplOiBpbnQgPSAwCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX0dldFZlcnNpb24oUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorX3dpbmFwaV9QZWVrTmFtZWRQaXBlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIGhhbmRsZSwgaW50IHNpemUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTZjOTA4ZTJmYjYzYzc5OCBpbnB1dD1jN2FhNTNiZmJjZTY5ZDcwXSovCiB7Ci0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkdldFZlcnNpb24iKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoR2V0VmVyc2lvbigpKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9PcGVuUHJvY2VzcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgRFdPUkQgZHdEZXNpcmVkQWNjZXNzOwotICAgIEJPT0wgYkluaGVyaXRIYW5kbGU7Ci0gICAgRFdPUkQgZHdQcm9jZXNzSWQ7Ci0gICAgSEFORExFIGhhbmRsZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0RXT1JEIEZfQk9PTCBGX0RXT1JELAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZHdEZXNpcmVkQWNjZXNzLCAmYkluaGVyaXRIYW5kbGUsICZkd1Byb2Nlc3NJZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaGFuZGxlID0gT3BlblByb2Nlc3MoZHdEZXNpcmVkQWNjZXNzLCBiSW5oZXJpdEhhbmRsZSwgZHdQcm9jZXNzSWQpOwotICAgIGlmIChoYW5kbGUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9IQU5ETEUsIGhhbmRsZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfUGVla05hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgSEFORExFIGhhbmRsZTsKLSAgICBpbnQgc2l6ZSA9IDA7CiAgICAgUHlPYmplY3QgKmJ1ZiA9IE5VTEw7CiAgICAgRFdPUkQgbnJlYWQsIG5hdmFpbCwgbmxlZnQ7CiAgICAgQk9PTCByZXQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgInxpOlBlZWtOYW1lZFBpcGUiICwgJmhhbmRsZSwgJnNpemUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChzaXplIDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIHNpemUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC05MzgsMjMgKzExNTgsMjQgQEAKICAgICB9CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuUmVhZEZpbGUKKworICAgIGhhbmRsZTogSEFORExFCisgICAgc2l6ZTogaW50CisgICAgb3ZlcmxhcHBlZCBhcyB1c2Vfb3ZlcmxhcHBlZDogaW50KGNfZGVmYXVsdD0nMCcpID0gRmFsc2UKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9SZWFkRmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX3dpbmFwaV9SZWFkRmlsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsIGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgIGludCB1c2Vfb3ZlcmxhcHBlZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNzY5NWRiNGRiOTdiMTM1IGlucHV0PThkZDgxMDE5NGU4NmFjN2RdKi8KIHsKLSAgICBIQU5ETEUgaGFuZGxlOwotICAgIGludCBzaXplOwogICAgIERXT1JEIG5yZWFkOwogICAgIFB5T2JqZWN0ICpidWY7CiAgICAgQk9PTCByZXQ7Ci0gICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKICAgICBEV09SRCBlcnI7CiAgICAgT3ZlcmxhcHBlZE9iamVjdCAqb3ZlcmxhcHBlZCA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJoYW5kbGUiLCAic2l6ZSIsICJvdmVybGFwcGVkIiwgTlVMTH07Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZfSEFORExFICJpfGk6UmVhZEZpbGUiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZSwgJnNpemUsICZ1c2Vfb3ZlcmxhcHBlZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgYnVmID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKICAgICBpZiAoIWJ1ZikKQEAgLTk5NywxOCArMTIxOCwyNyBAQAogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOSSIsIGJ1ZiwgZXJyKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZQorCisgICAgbmFtZWRfcGlwZTogSEFORExFCisgICAgbW9kZTogb2JqZWN0CisgICAgbWF4X2NvbGxlY3Rpb25fY291bnQ6IG9iamVjdAorICAgIGNvbGxlY3RfZGF0YV90aW1lb3V0OiBvYmplY3QKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3dpbmFwaV9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBuYW1lZF9waXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXhfY29sbGVjdGlvbl9jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29sbGVjdF9kYXRhX3RpbWVvdXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjVhYTNjMjhkZWUyMjNjZSBpbnB1dD05MTQyZDcyMTYzZDBmYWE2XSovCiB7Ci0gICAgSEFORExFIGhOYW1lZFBpcGU7Ci0gICAgUHlPYmplY3QgKm9BcmdzWzNdOworICAgIFB5T2JqZWN0ICpvQXJnc1szXSA9IHttb2RlLCBtYXhfY29sbGVjdGlvbl9jb3VudCwgY29sbGVjdF9kYXRhX3RpbWVvdXR9OwogICAgIERXT1JEIGR3QXJnc1szXSwgKnBBcmdzWzNdID0ge05VTEwsIE5VTEwsIE5VTEx9OwogICAgIGludCBpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICJPT08iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmaE5hbWVkUGlwZSwgJm9BcmdzWzBdLCAmb0FyZ3NbMV0sICZvQXJnc1syXSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlFcnJfQ2xlYXIoKTsKIAogICAgIGZvciAoaSA9IDAgOyBpIDwgMyA7IGkrKykgewpAQCAtMTAyMCw0OSArMTI1MCw1NCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShoTmFtZWRQaXBlLCBwQXJnc1swXSwgcEFyZ3NbMV0sIHBBcmdzWzJdKSkKKyAgICBpZiAoIVNldE5hbWVkUGlwZUhhbmRsZVN0YXRlKG5hbWVkX3BpcGUsIHBBcmdzWzBdLCBwQXJnc1sxXSwgcEFyZ3NbMl0pKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CiAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKFRlcm1pbmF0ZVByb2Nlc3NfZG9jLAotIlRlcm1pbmF0ZVByb2Nlc3MoaGFuZGxlLCBleGl0X2NvZGUpIC0+IE5vbmVcblwKLVxuXAotVGVybWluYXRlIHRoZSBzcGVjaWZpZWQgcHJvY2VzcyBhbmQgYWxsIG9mIGl0cyB0aHJlYWRzLiIpOworCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLlRlcm1pbmF0ZVByb2Nlc3MKKworICAgIGhhbmRsZTogSEFORExFCisgICAgZXhpdF9jb2RlOiBVSU5UCisgICAgLworCitUZXJtaW5hdGUgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGFuZCBhbGwgb2YgaXRzIHRocmVhZHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfVGVybWluYXRlUHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitfd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCBleGl0X2NvZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTM3YzFiYjYyMTlhY2E4YiBpbnB1dD1kNmJjMGFhMWVlM2JiNGRmXSovCiB7CiAgICAgQk9PTCByZXN1bHQ7CiAKLSAgICBIQU5ETEUgcHJvY2VzczsKLSAgICBVSU5UIGV4aXRfY29kZTsKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFIEZfVUlOVCAiOlRlcm1pbmF0ZVByb2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb2Nlc3MsICZleGl0X2NvZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdCA9IFRlcm1pbmF0ZVByb2Nlc3MocHJvY2VzcywgZXhpdF9jb2RlKTsKKyAgICByZXN1bHQgPSBUZXJtaW5hdGVQcm9jZXNzKGhhbmRsZSwgZXhpdF9jb2RlKTsKIAogICAgIGlmICghIHJlc3VsdCkKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5XYWl0TmFtZWRQaXBlCisKKyAgICBuYW1lOiBMUENUU1RSCisgICAgdGltZW91dDogRFdPUkQKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfV2FpdE5hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfd2luYXBpX1dhaXROYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBMUENUU1RSIG5hbWUsIERXT1JEIHRpbWVvdXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWJjYTVlMDJmNDQ4YzlkNyBpbnB1dD0zNmZjNzgxMjkxYjE4NjJjXSovCiB7Ci0gICAgTFBDVFNUUiBscE5hbWVkUGlwZU5hbWU7Ci0gICAgRFdPUkQgblRpbWVPdXQ7CiAgICAgQk9PTCBzdWNjZXNzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiBGX0RXT1JELCAmbHBOYW1lZFBpcGVOYW1lLCAmblRpbWVPdXQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzdWNjZXNzID0gV2FpdE5hbWVkUGlwZShscE5hbWVkUGlwZU5hbWUsIG5UaW1lT3V0KTsKKyAgICBzdWNjZXNzID0gV2FpdE5hbWVkUGlwZShuYW1lLCB0aW1lb3V0KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKCFzdWNjZXNzKQpAQCAtMTA3MSwyMSArMTMwNiwyNSBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLldhaXRGb3JNdWx0aXBsZU9iamVjdHMKKworICAgIGhhbmRsZV9zZXE6IG9iamVjdAorICAgIHdhaXRfZmxhZzogQk9PTAorICAgIG1pbGxpc2Vjb25kczogRFdPUkQoY19kZWZhdWx0PSdJTkZJTklURScpID0gX3dpbmFwaS5JTkZJTklURQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK193aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0c19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaGFuZGxlX3NlcSwgQk9PTCB3YWl0X2ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBtaWxsaXNlY29uZHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWNiNDQwNzI4ZDA2ZDEzMCBpbnB1dD0zNmY3NmNhMDU3Y2QyOGEwXSovCiB7CiAgICAgRFdPUkQgcmVzdWx0OwotICAgIFB5T2JqZWN0ICpoYW5kbGVfc2VxOwogICAgIEhBTkRMRSBoYW5kbGVzW01BWElNVU1fV0FJVF9PQkpFQ1RTXTsKICAgICBIQU5ETEUgc2lnaW50X2V2ZW50ID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IG5oYW5kbGVzLCBpOwotICAgIEJPT0wgd2FpdF9mbGFnOwotICAgIERXT1JEIG1pbGxpc2Vjb25kcyA9IElORklOSVRFOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIiBGX0JPT0wgInwiIEZfRFdPUkQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIjpXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZV9zZXEsICZ3YWl0X2ZsYWcsICZtaWxsaXNlY29uZHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhoYW5kbGVfc2VxKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLApAQCAtMTEzOSw1MyArMTM3OCw1NyBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGludCkgcmVzdWx0KTsKIH0KIAotUHlEb2NfU1RSVkFSKFdhaXRGb3JTaW5nbGVPYmplY3RfZG9jLAotIldhaXRGb3JTaW5nbGVPYmplY3QoaGFuZGxlLCB0aW1lb3V0KSAtPiByZXN1bHRcblwKLVxuXAotV2FpdCB1bnRpbCB0aGUgc3BlY2lmaWVkIG9iamVjdCBpcyBpbiB0aGUgc2lnbmFsZWQgc3RhdGUgb3JcblwKLXRoZSB0aW1lLW91dCBpbnRlcnZhbCBlbGFwc2VzLiBUaGUgdGltZW91dCB2YWx1ZSBpcyBzcGVjaWZpZWRcblwKLWluIG1pbGxpc2Vjb25kcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuV2FpdEZvclNpbmdsZU9iamVjdCAtPiBsb25nCiAKLXN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfV2FpdEZvclNpbmdsZU9iamVjdChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisgICAgaGFuZGxlOiBIQU5ETEUKKyAgICBtaWxsaXNlY29uZHM6IERXT1JECisgICAgLworCitXYWl0IGZvciBhIHNpbmdsZSBvYmplY3QuCisKK1dhaXQgdW50aWwgdGhlIHNwZWNpZmllZCBvYmplY3QgaXMgaW4gdGhlIHNpZ25hbGVkIHN0YXRlIG9yCit0aGUgdGltZS1vdXQgaW50ZXJ2YWwgZWxhcHNlcy4gVGhlIHRpbWVvdXQgdmFsdWUgaXMgc3BlY2lmaWVkCitpbiBtaWxsaXNlY29uZHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCitfd2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgbWlsbGlzZWNvbmRzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM0YWU0MGMyNjk3NDljNDggaW5wdXQ9NDQzZDFhYjA3NmVkYzdiMV0qLwogewogICAgIERXT1JEIHJlc3VsdDsKIAotICAgIEhBTkRMRSBoYW5kbGU7Ci0gICAgRFdPUkQgbWlsbGlzZWNvbmRzOwotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgRl9EV09SRCAiOldhaXRGb3JTaW5nbGVPYmplY3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtaWxsaXNlY29uZHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXN1bHQgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KGhhbmRsZSwgbWlsbGlzZWNvbmRzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgaWYgKHJlc3VsdCA9PSBXQUlUX0ZBSUxFRCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKyAgICBpZiAocmVzdWx0ID09IFdBSVRfRkFJTEVEKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAotICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuV3JpdGVGaWxlCisKKyAgICBoYW5kbGU6IEhBTkRMRQorICAgIGJ1ZmZlcjogb2JqZWN0CisgICAgb3ZlcmxhcHBlZCBhcyB1c2Vfb3ZlcmxhcHBlZDogaW50KGNfZGVmYXVsdD0nMCcpID0gRmFsc2UKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9Xcml0ZUZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK193aW5hcGlfV3JpdGVGaWxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIGhhbmRsZSwgUHlPYmplY3QgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9vdmVybGFwcGVkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY1ZTcwZWE0MWY0ZDJhMWQgaW5wdXQ9NTE4NDZhNWFmNTIwNTNmZF0qLwogewotICAgIEhBTkRMRSBoYW5kbGU7CiAgICAgUHlfYnVmZmVyIF9idWYsICpidWY7Ci0gICAgUHlPYmplY3QgKmJ1Zm9iajsKICAgICBEV09SRCBsZW4sIHdyaXR0ZW47CiAgICAgQk9PTCByZXQ7Ci0gICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKICAgICBEV09SRCBlcnI7CiAgICAgT3ZlcmxhcHBlZE9iamVjdCAqb3ZlcmxhcHBlZCA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJoYW5kbGUiLCAiYnVmZmVyIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKLQotICAgIC8qIEZpcnN0IGdldCBoYW5kbGUgYW5kIHVzZV9vdmVybGFwcGVkIHRvIGtub3cgd2hpY2ggUHlfYnVmZmVyIHRvIHVzZSAqLwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRl9IQU5ETEUgIk98aTpXcml0ZUZpbGUiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZSwgJmJ1Zm9iaiwgJnVzZV9vdmVybGFwcGVkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAodXNlX292ZXJsYXBwZWQpIHsKICAgICAgICAgb3ZlcmxhcHBlZCA9IG5ld19vdmVybGFwcGVkKGhhbmRsZSk7CkBAIC0xMTk2LDcgKzE0MzksNyBAQAogICAgIGVsc2UKICAgICAgICAgYnVmID0gJl9idWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGJ1Zm9iaiwgInkqIiwgYnVmKSkgeworICAgIGlmICghUHlBcmdfUGFyc2UoYnVmZmVyLCAieSoiLCBidWYpKSB7CiAgICAgICAgIFB5X1hERUNSRUYob3ZlcmxhcHBlZCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEyMjksNTIgKzE0NzIsMzAgQEAKIAogCiBzdGF0aWMgUHlNZXRob2REZWYgd2luYXBpX2Z1bmN0aW9uc1tdID0gewotICAgIHsiQ2xvc2VIYW5kbGUiLCB3aW5hcGlfQ2xvc2VIYW5kbGUsIE1FVEhfVkFSQVJHUywKLSAgICAgQ2xvc2VIYW5kbGVfZG9jfSwKLSAgICB7IkNvbm5lY3ROYW1lZFBpcGUiLCAoUHlDRnVuY3Rpb24pd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGUsCi0gICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsICIifSwKLSAgICB7IkNyZWF0ZUZpbGUiLCB3aW5hcGlfQ3JlYXRlRmlsZSwgTUVUSF9WQVJBUkdTLAotICAgICAiIn0sCi0gICAgeyJDcmVhdGVOYW1lZFBpcGUiLCB3aW5hcGlfQ3JlYXRlTmFtZWRQaXBlLCBNRVRIX1ZBUkFSR1MsCi0gICAgICIifSwKLSAgICB7IkNyZWF0ZVBpcGUiLCB3aW5hcGlfQ3JlYXRlUGlwZSwgTUVUSF9WQVJBUkdTLAotICAgICBDcmVhdGVQaXBlX2RvY30sCi0gICAgeyJDcmVhdGVQcm9jZXNzIiwgd2luYXBpX0NyZWF0ZVByb2Nlc3MsIE1FVEhfVkFSQVJHUywKLSAgICAgQ3JlYXRlUHJvY2Vzc19kb2N9LAotICAgIHsiRHVwbGljYXRlSGFuZGxlIiwgd2luYXBpX0R1cGxpY2F0ZUhhbmRsZSwgTUVUSF9WQVJBUkdTLAotICAgICBEdXBsaWNhdGVIYW5kbGVfZG9jfSwKLSAgICB7IkV4aXRQcm9jZXNzIiwgd2luYXBpX0V4aXRQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCi0gICAgICIifSwKLSAgICB7IkdldEN1cnJlbnRQcm9jZXNzIiwgd2luYXBpX0dldEN1cnJlbnRQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCi0gICAgIEdldEN1cnJlbnRQcm9jZXNzX2RvY30sCi0gICAgeyJHZXRFeGl0Q29kZVByb2Nlc3MiLCB3aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCi0gICAgIEdldEV4aXRDb2RlUHJvY2Vzc19kb2N9LAotICAgIHsiR2V0TGFzdEVycm9yIiwgd2luYXBpX0dldExhc3RFcnJvciwgTUVUSF9OT0FSR1MsCi0gICAgIEdldEN1cnJlbnRQcm9jZXNzX2RvY30sCi0gICAgeyJHZXRNb2R1bGVGaWxlTmFtZSIsIHdpbmFwaV9HZXRNb2R1bGVGaWxlTmFtZSwgTUVUSF9WQVJBUkdTLAotICAgICBHZXRNb2R1bGVGaWxlTmFtZV9kb2N9LAotICAgIHsiR2V0U3RkSGFuZGxlIiwgd2luYXBpX0dldFN0ZEhhbmRsZSwgTUVUSF9WQVJBUkdTLAotICAgICBHZXRTdGRIYW5kbGVfZG9jfSwKLSAgICB7IkdldFZlcnNpb24iLCB3aW5hcGlfR2V0VmVyc2lvbiwgTUVUSF9WQVJBUkdTLAotICAgICBHZXRWZXJzaW9uX2RvY30sCi0gICAgeyJPcGVuUHJvY2VzcyIsIHdpbmFwaV9PcGVuUHJvY2VzcywgTUVUSF9WQVJBUkdTLAotICAgICAiIn0sCi0gICAgeyJQZWVrTmFtZWRQaXBlIiwgd2luYXBpX1BlZWtOYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywKLSAgICAgIiJ9LAotICAgIHsiUmVhZEZpbGUiLCAoUHlDRnVuY3Rpb24pd2luYXBpX1JlYWRGaWxlLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAiIn0sCi0gICAgeyJTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSIsIHdpbmFwaV9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSwgTUVUSF9WQVJBUkdTLAotICAgICAiIn0sCi0gICAgeyJUZXJtaW5hdGVQcm9jZXNzIiwgd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3MsIE1FVEhfVkFSQVJHUywKLSAgICAgVGVybWluYXRlUHJvY2Vzc19kb2N9LAotICAgIHsiV2FpdE5hbWVkUGlwZSIsIHdpbmFwaV9XYWl0TmFtZWRQaXBlLCBNRVRIX1ZBUkFSR1MsCi0gICAgICIifSwKLSAgICB7IldhaXRGb3JNdWx0aXBsZU9iamVjdHMiLCB3aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0cywgTUVUSF9WQVJBUkdTLAotICAgICAiIn0sCi0gICAgeyJXYWl0Rm9yU2luZ2xlT2JqZWN0Iiwgd2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3QsIE1FVEhfVkFSQVJHUywKLSAgICAgV2FpdEZvclNpbmdsZU9iamVjdF9kb2N9LAotICAgIHsiV3JpdGVGaWxlIiwgKFB5Q0Z1bmN0aW9uKXdpbmFwaV9Xcml0ZUZpbGUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICIifSwKKyAgICBfV0lOQVBJX0NMT1NFSEFORExFX01FVEhPRERFRgorICAgIF9XSU5BUElfQ09OTkVDVE5BTUVEUElQRV9NRVRIT0RERUYKKyAgICBfV0lOQVBJX0NSRUFURUZJTEVfTUVUSE9EREVGCisgICAgX1dJTkFQSV9DUkVBVEVOQU1FRFBJUEVfTUVUSE9EREVGCisgICAgX1dJTkFQSV9DUkVBVEVQSVBFX01FVEhPRERFRgorICAgIF9XSU5BUElfQ1JFQVRFUFJPQ0VTU19NRVRIT0RERUYKKyAgICBfV0lOQVBJX0NSRUFURUpVTkNUSU9OX01FVEhPRERFRgorICAgIF9XSU5BUElfRFVQTElDQVRFSEFORExFX01FVEhPRERFRgorICAgIF9XSU5BUElfRVhJVFBST0NFU1NfTUVUSE9EREVGCisgICAgX1dJTkFQSV9HRVRDVVJSRU5UUFJPQ0VTU19NRVRIT0RERUYKKyAgICBfV0lOQVBJX0dFVEVYSVRDT0RFUFJPQ0VTU19NRVRIT0RERUYKKyAgICBfV0lOQVBJX0dFVExBU1RFUlJPUl9NRVRIT0RERUYKKyAgICBfV0lOQVBJX0dFVE1PRFVMRUZJTEVOQU1FX01FVEhPRERFRgorICAgIF9XSU5BUElfR0VUU1RESEFORExFX01FVEhPRERFRgorICAgIF9XSU5BUElfR0VUVkVSU0lPTl9NRVRIT0RERUYKKyAgICBfV0lOQVBJX09QRU5QUk9DRVNTX01FVEhPRERFRgorICAgIF9XSU5BUElfUEVFS05BTUVEUElQRV9NRVRIT0RERUYKKyAgICBfV0lOQVBJX1JFQURGSUxFX01FVEhPRERFRgorICAgIF9XSU5BUElfU0VUTkFNRURQSVBFSEFORExFU1RBVEVfTUVUSE9EREVGCisgICAgX1dJTkFQSV9URVJNSU5BVEVQUk9DRVNTX01FVEhPRERFRgorICAgIF9XSU5BUElfV0FJVE5BTUVEUElQRV9NRVRIT0RERUYKKyAgICBfV0lOQVBJX1dBSVRGT1JNVUxUSVBMRU9CSkVDVFNfTUVUSE9EREVGCisgICAgX1dJTkFQSV9XQUlURk9SU0lOR0xFT0JKRUNUX01FVEhPRERFRgorICAgIF9XSU5BUElfV1JJVEVGSUxFX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfQogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hcnJheW1vZHVsZS5jIGIvTW9kdWxlcy9hcnJheW1vZHVsZS5jCmluZGV4IDVhYjFhYjYuLjZhZjc1YTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYXJyYXltb2R1bGUuYworKysgYi9Nb2R1bGVzL2FycmF5bW9kdWxlLmMKQEAgLTE1LDYgKzE1LDExIEBACiAjZW5kaWYgLyogSEFWRV9TWVNfVFlQRVNfSCAqLwogI2VuZGlmIC8qICFTVERDX0hFQURFUlMgKi8KIAorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIGFycmF5CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD03ZDFiOGQ3ZjU5NThmZDgzXSovCisKIHN0cnVjdCBhcnJheW9iamVjdDsgLyogRm9yd2FyZCAqLwogCiAvKiBBbGwgcG9zc2libGUgYXJyYXlkZXNjciB2YWx1ZXMgYXJlIGRlZmluZWQgaW4gdGhlIHZlY3RvciAiZGVzY3JpcHRvcnMiCkBAIC00Miw2ICs0Nyw2MyBAQAogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IEFycmF5dHlwZTsKIAordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeV9zc2l6ZV90IGluZGV4OworICAgIGFycmF5b2JqZWN0ICphbzsKKyAgICBQeU9iamVjdCogKCpnZXRpdGVtKShzdHJ1Y3QgYXJyYXlvYmplY3QgKiwgUHlfc3NpemVfdCk7Cit9IGFycmF5aXRlcm9iamVjdDsKKworc3RhdGljIFB5VHlwZU9iamVjdCBQeUFycmF5SXRlcl9UeXBlOworCisjZGVmaW5lIFB5QXJyYXlJdGVyX0NoZWNrKG9wKSBQeU9iamVjdF9UeXBlQ2hlY2sob3AsICZQeUFycmF5SXRlcl9UeXBlKQorCitlbnVtIG1hY2hpbmVfZm9ybWF0X2NvZGUgeworICAgIFVOS05PV05fRk9STUFUID0gLTEsCisgICAgLyogVU5LTk9XTl9GT1JNQVQgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBtYWNoaW5lIGZvcm1hdCBmb3IgYW4KKyAgICAgKiBhcnJheSB0eXBlIGNvZGUgY2Fubm90IGJlIGludGVycHJldGVkLiBXaGVuIHRoaXMgb2NjdXJzLCBhIGxpc3Qgb2YKKyAgICAgKiBQeXRob24gb2JqZWN0cyBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgY29udGVudCBvZiB0aGUgYXJyYXkKKyAgICAgKiBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBtZW1vcnkgY29udGVudCBvZiB0aGUgYXJyYXkgZGlyZWN0bHkuIEluIHRoYXQKKyAgICAgKiBjYXNlLCB0aGUgYXJyYXlfcmVjb25zdHJ1Y3RvciBtZWNoYW5pc20gaXMgYnlwYXNzZWQgY29tcGxldGVseSwgYW5kCisgICAgICogdGhlIHN0YW5kYXJkIGFycmF5IGNvbnN0cnVjdG9yIGlzIHVzZWQgaW5zdGVhZC4KKyAgICAgKgorICAgICAqIFRoaXMgaXMgd2lsbCBtb3N0IGxpa2VseSBvY2N1ciB3aGVuIHRoZSBtYWNoaW5lIGRvZXNuJ3QgdXNlIElFRUUKKyAgICAgKiBmbG9hdGluZy1wb2ludCBudW1iZXJzLgorICAgICAqLworCisgICAgVU5TSUdORURfSU5UOCA9IDAsCisgICAgU0lHTkVEX0lOVDggPSAxLAorICAgIFVOU0lHTkVEX0lOVDE2X0xFID0gMiwKKyAgICBVTlNJR05FRF9JTlQxNl9CRSA9IDMsCisgICAgU0lHTkVEX0lOVDE2X0xFID0gNCwKKyAgICBTSUdORURfSU5UMTZfQkUgPSA1LAorICAgIFVOU0lHTkVEX0lOVDMyX0xFID0gNiwKKyAgICBVTlNJR05FRF9JTlQzMl9CRSA9IDcsCisgICAgU0lHTkVEX0lOVDMyX0xFID0gOCwKKyAgICBTSUdORURfSU5UMzJfQkUgPSA5LAorICAgIFVOU0lHTkVEX0lOVDY0X0xFID0gMTAsCisgICAgVU5TSUdORURfSU5UNjRfQkUgPSAxMSwKKyAgICBTSUdORURfSU5UNjRfTEUgPSAxMiwKKyAgICBTSUdORURfSU5UNjRfQkUgPSAxMywKKyAgICBJRUVFXzc1NF9GTE9BVF9MRSA9IDE0LAorICAgIElFRUVfNzU0X0ZMT0FUX0JFID0gMTUsCisgICAgSUVFRV83NTRfRE9VQkxFX0xFID0gMTYsCisgICAgSUVFRV83NTRfRE9VQkxFX0JFID0gMTcsCisgICAgVVRGMTZfTEUgPSAxOCwKKyAgICBVVEYxNl9CRSA9IDE5LAorICAgIFVURjMyX0xFID0gMjAsCisgICAgVVRGMzJfQkUgPSAyMQorfTsKKyNkZWZpbmUgTUFDSElORV9GT1JNQVRfQ09ERV9NSU4gMAorI2RlZmluZSBNQUNISU5FX0ZPUk1BVF9DT0RFX01BWCAyMQorCisKKy8qCisgKiBNdXN0IGNvbWUgYWZ0ZXIgYXJyYXlvYmplY3QsIGFycmF5aXRlcm9iamVjdCwKKyAqIGFuZCBlbnVtIG1hY2hpbmVfY29kZV90eXBlIGRlZmluaXRpb25zLgorICovCisjaW5jbHVkZSAiY2xpbmljL2FycmF5bW9kdWxlLmMuaCIKKwogI2RlZmluZSBhcnJheV9DaGVjayhvcCkgUHlPYmplY3RfVHlwZUNoZWNrKG9wLCAmQXJyYXl0eXBlKQogI2RlZmluZSBhcnJheV9DaGVja0V4YWN0KG9wKSAoUHlfVFlQRShvcCkgPT0gJkFycmF5dHlwZSkKIApAQCAtNDcxLDYgKzUzMywxMCBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIEltcGxlbWVudGF0aW9ucyBvZiBhcnJheSBvYmplY3QgbWV0aG9kcy4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKltjbGluaWMgaW5wdXRdCitjbGFzcyBhcnJheS5hcnJheSAiYXJyYXlvYmplY3QgKiIgIiZBcnJheXR5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1hZDQzZDM3ZTk0MmE4ODU0XSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBuZXdhcnJheW9iamVjdChQeVR5cGVPYmplY3QgKnR5cGUsIFB5X3NzaXplX3Qgc2l6ZSwgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyKQpAQCAtNjg0LDE2ICs3NTAsMzUgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbnA7CiB9CiAKKworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuX19jb3B5X18KKworUmV0dXJuIGEgY29weSBvZiB0aGUgYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9jb3B5KGFycmF5b2JqZWN0ICphLCBQeU9iamVjdCAqdW51c2VkKQorYXJyYXlfYXJyYXlfX19jb3B5X19faW1wbChhcnJheW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kZWM3YzNmOTI1ZDk2MTllIGlucHV0PWFkMWVlNWIwODY5NjVmMDldKi8KIHsKLSAgICByZXR1cm4gYXJyYXlfc2xpY2UoYSwgMCwgUHlfU0laRShhKSk7CisgICAgcmV0dXJuIGFycmF5X3NsaWNlKHNlbGYsIDAsIFB5X1NJWkUoc2VsZikpOwogfQogCi1QeURvY19TVFJWQVIoY29weV9kb2MsCi0iY29weShhcnJheSlcblwKLVxuXAotIFJldHVybiBhIGNvcHkgb2YgdGhlIGFycmF5LiIpOworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuX19kZWVwY29weV9fCisKKyAgICB1bnVzZWQ6IG9iamVjdAorICAgIC8KKworUmV0dXJuIGEgY29weSBvZiB0aGUgYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9fX2RlZXBjb3B5X18oYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWVjNzQ4ZDhlMTRhOWZhYSBpbnB1dD0yNDA1ZWNiNDkzMzc0OGM0XSovCit7CisgICAgcmV0dXJuIGFycmF5X2FycmF5X19fY29weV9fX2ltcGwoc2VsZik7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhcnJheV9jb25jYXQoYXJyYXlvYmplY3QgKmEsIFB5T2JqZWN0ICpiYikKQEAgLTk2MSw4ICsxMDQ2LDE4IEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LmNvdW50CisKKyAgICB2OiBvYmplY3QKKyAgICAvCisKK1JldHVybiBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2YgdiBpbiB0aGUgYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9jb3VudChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCithcnJheV9hcnJheV9jb3VudChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2RkMzYyNGJmNzEzNWEzYSBpbnB1dD1kOWJjZTlkNjVlMzlkMWY1XSovCiB7CiAgICAgUHlfc3NpemVfdCBjb3VudCA9IDA7CiAgICAgUHlfc3NpemVfdCBpOwpAQCAtOTg0LDEzICsxMDc5LDE5IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChjb3VudCk7CiB9CiAKLVB5RG9jX1NUUlZBUihjb3VudF9kb2MsCi0iY291bnQoeClcblwKLVxuXAotUmV0dXJuIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiB4IGluIHRoZSBhcnJheS4iKTsKKworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuaW5kZXgKKworICAgIHY6IG9iamVjdAorICAgIC8KKworUmV0dXJuIGluZGV4IG9mIGZpcnN0IG9jY3VycmVuY2Ugb2YgdiBpbiB0aGUgYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9pbmRleChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCithcnJheV9hcnJheV9pbmRleChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDQ4NDk4ZDMyNTYwMjE2NyBpbnB1dD1jZjYxOTg5OGM2NjQ5ZDA4XSovCiB7CiAgICAgUHlfc3NpemVfdCBpOwogCkBAIC0xMDEzLDExICsxMTE0LDYgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlEb2NfU1RSVkFSKGluZGV4X2RvYywKLSJpbmRleCh4KVxuXAotXG5cCi1SZXR1cm4gaW5kZXggb2YgZmlyc3Qgb2NjdXJyZW5jZSBvZiB4IGluIHRoZSBhcnJheS4iKTsKLQogc3RhdGljIGludAogYXJyYXlfY29udGFpbnMoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQogewpAQCAtMTAzNCw4ICsxMTMwLDE4IEBACiAgICAgcmV0dXJuIGNtcDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkucmVtb3ZlCisKKyAgICB2OiBvYmplY3QKKyAgICAvCisKK1JlbW92ZSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB2IGluIHRoZSBhcnJheS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X3JlbW92ZShhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCithcnJheV9hcnJheV9yZW1vdmUoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlZjA2YmU5ZmRmOWRjZWIgaW5wdXQ9MGIxZTVhZWQyNTU5MDAyN10qLwogewogICAgIGludCBpOwogCkBAIC0xMDYyLDE4ICsxMTY4LDIzIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUihyZW1vdmVfZG9jLAotInJlbW92ZSh4KVxuXAotXG5cCi1SZW1vdmUgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgeCBpbiB0aGUgYXJyYXkuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5wb3AKKworICAgIGk6IFB5X3NzaXplX3QgPSAtMQorICAgIC8KKworUmV0dXJuIHRoZSBpLXRoIGVsZW1lbnQgYW5kIGRlbGV0ZSBpdCBmcm9tIHRoZSBhcnJheS4KKworaSBkZWZhdWx0cyB0byAtMS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X3BvcChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCithcnJheV9hcnJheV9wb3BfaW1wbChhcnJheW9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJjMWYwYzU0ZmU1MzA4ZTQgaW5wdXQ9OGU1ZmViNGMxYTExY2Q0NF0qLwogewotICAgIFB5X3NzaXplX3QgaSA9IC0xOwogICAgIFB5T2JqZWN0ICp2OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cG9wIiwgJmkpKQotICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChQeV9TSVpFKHNlbGYpID09IDApIHsKICAgICAgICAgLyogU3BlY2lhbC1jYXNlIG1vc3QgY29tbW9uIGZhaWx1cmUgY2F1c2UgKi8KICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJwb3AgZnJvbSBlbXB0eSBhcnJheSIpOwpAQCAtMTA5NSwxMyArMTIwNiwxOCBAQAogICAgIHJldHVybiB2OwogfQogCi1QeURvY19TVFJWQVIocG9wX2RvYywKLSJwb3AoW2ldKVxuXAotXG5cCi1SZXR1cm4gdGhlIGktdGggZWxlbWVudCBhbmQgZGVsZXRlIGl0IGZyb20gdGhlIGFycmF5LiBpIGRlZmF1bHRzIHRvIC0xLiIpOworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuZXh0ZW5kCisKKyAgICBiYjogb2JqZWN0CisgICAgLworCitBcHBlbmQgaXRlbXMgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9leHRlbmQoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpiYikKK2FycmF5X2FycmF5X2V4dGVuZChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJiKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJiZGRiYzhlOGJlZjg3MWQgaW5wdXQ9NDNiZTg2YWJhNWMzMWU0NF0qLwogewogICAgIGlmIChhcnJheV9kb19leHRlbmQoc2VsZiwgYmIpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExMDksMjkgKzEyMjUsMzUgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotUHlEb2NfU1RSVkFSKGV4dGVuZF9kb2MsCi0iZXh0ZW5kKGFycmF5IG9yIGl0ZXJhYmxlKVxuXAotXG5cCi0gQXBwZW5kIGl0ZW1zIHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5LiIpOworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuaW5zZXJ0CisKKyAgICBpOiBQeV9zc2l6ZV90CisgICAgdjogb2JqZWN0CisgICAgLworCitJbnNlcnQgYSBuZXcgaXRlbSB2IGludG8gdGhlIGFycmF5IGJlZm9yZSBwb3NpdGlvbiBpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfaW5zZXJ0KGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2FycmF5X2FycmF5X2luc2VydF9pbXBsKGFycmF5b2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICp2KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVhMzY0OGUyNzgzNDg1NjQgaW5wdXQ9NTU3N2QxYjQzODNlOTMxM10qLwogewotICAgIFB5X3NzaXplX3QgaTsKLSAgICBQeU9iamVjdCAqdjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm5POmluc2VydCIsICZpLCAmdikpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBpbnMoc2VsZiwgaSwgdik7CiB9CiAKLVB5RG9jX1NUUlZBUihpbnNlcnRfZG9jLAotImluc2VydChpLHgpXG5cCi1cblwKLUluc2VydCBhIG5ldyBpdGVtIHggaW50byB0aGUgYXJyYXkgYmVmb3JlIHBvc2l0aW9uIGkuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5idWZmZXJfaW5mbwogCitSZXR1cm4gYSB0dXBsZSAoYWRkcmVzcywgbGVuZ3RoKSBnaXZpbmcgdGhlIGN1cnJlbnQgbWVtb3J5IGFkZHJlc3MgYW5kIHRoZSBsZW5ndGggaW4gaXRlbXMgb2YgdGhlIGJ1ZmZlciB1c2VkIHRvIGhvbGQgYXJyYXkncyBjb250ZW50cy4KKworVGhlIGxlbmd0aCBzaG91bGQgYmUgbXVsdGlwbGllZCBieSB0aGUgaXRlbXNpemUgYXR0cmlidXRlIHRvIGNhbGN1bGF0ZQordGhlIGJ1ZmZlciBsZW5ndGggaW4gYnl0ZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9idWZmZXJfaW5mbyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK2FycmF5X2FycmF5X2J1ZmZlcl9pbmZvX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWIyYTRlYzNhZTdlOThlNyBpbnB1dD1hNThiYWU1YzZlMWFjNmE2XSovCiB7CiAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEwsICp2OwogCkBAIC0xMTU2LDI5ICsxMjc4LDM0IEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAotUHlEb2NfU1RSVkFSKGJ1ZmZlcl9pbmZvX2RvYywKLSJidWZmZXJfaW5mbygpIC0+IChhZGRyZXNzLCBsZW5ndGgpXG5cCi1cblwKLVJldHVybiBhIHR1cGxlIChhZGRyZXNzLCBsZW5ndGgpIGdpdmluZyB0aGUgY3VycmVudCBtZW1vcnkgYWRkcmVzcyBhbmRcblwKLXRoZSBsZW5ndGggaW4gaXRlbXMgb2YgdGhlIGJ1ZmZlciB1c2VkIHRvIGhvbGQgYXJyYXkncyBjb250ZW50c1xuXAotVGhlIGxlbmd0aCBzaG91bGQgYmUgbXVsdGlwbGllZCBieSB0aGUgaXRlbXNpemUgYXR0cmlidXRlIHRvIGNhbGN1bGF0ZVxuXAotdGhlIGJ1ZmZlciBsZW5ndGggaW4gYnl0ZXMuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5hcHBlbmQKIAorICAgIHY6IG9iamVjdAorICAgIC8KKworQXBwZW5kIG5ldyB2YWx1ZSB2IHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfYXBwZW5kKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKK2FycmF5X2FycmF5X2FwcGVuZChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzQ1YTA2NjliZjhkYjBlMiBpbnB1dD0wYjk4ZDlkNzhlNzhmMGZhXSovCiB7CiAgICAgcmV0dXJuIGlucyhzZWxmLCBQeV9TSVpFKHNlbGYpLCB2KTsKIH0KIAotUHlEb2NfU1RSVkFSKGFwcGVuZF9kb2MsCi0iYXBwZW5kKHgpXG5cCi1cblwKLUFwcGVuZCBuZXcgdmFsdWUgeCB0byB0aGUgZW5kIG9mIHRoZSBhcnJheS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LmJ5dGVzd2FwCiAKK0J5dGVzd2FwIGFsbCBpdGVtcyBvZiB0aGUgYXJyYXkuCisKK0lmIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXkgYXJlIG5vdCAxLCAyLCA0LCBvciA4IGJ5dGVzIGluIHNpemUsIFJ1bnRpbWVFcnJvciBpcworcmFpc2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfYnl0ZXN3YXAoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCithcnJheV9hcnJheV9ieXRlc3dhcF9pbXBsKGFycmF5b2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVmODIzNmNiZGYwZDkwYjUgaW5wdXQ9NmE4NTU5MWI5NTBhMDE4Nl0qLwogewogICAgIGNoYXIgKnA7CiAgICAgUHlfc3NpemVfdCBpOwpAQCAtMTIyOCwxNCArMTM1NSwxNSBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi1QeURvY19TVFJWQVIoYnl0ZXN3YXBfZG9jLAotImJ5dGVzd2FwKClcblwKLVxuXAotQnl0ZXN3YXAgYWxsIGl0ZW1zIG9mIHRoZSBhcnJheS4gIElmIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXkgYXJlIG5vdCAxLCAyLFxuXAotNCwgb3IgOCBieXRlcyBpbiBzaXplLCBSdW50aW1lRXJyb3IgaXMgcmFpc2VkLiIpOworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkucmV2ZXJzZQorCitSZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgaXRlbXMgaW4gdGhlIGFycmF5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfcmV2ZXJzZShhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK2FycmF5X2FycmF5X3JldmVyc2VfaW1wbChhcnJheW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jMDQ4NjhiMzZmNmY0MDg5IGlucHV0PWNkOTA0ZjAxYjI3ZDk2NmFdKi8KIHsKICAgICBQeV9zc2l6ZV90IGl0ZW1zaXplID0gc2VsZi0+b2JfZGVzY3ItPml0ZW1zaXplOwogICAgIGNoYXIgKnAsICpxOwpAQCAtMTI2MSwyNyArMTM4OSwyNiBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi1QeURvY19TVFJWQVIocmV2ZXJzZV9kb2MsCi0icmV2ZXJzZSgpXG5cCi1cblwKLVJldmVyc2UgdGhlIG9yZGVyIG9mIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXkuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5mcm9tZmlsZQogCisgICAgZjogb2JqZWN0CisgICAgbjogUHlfc3NpemVfdAorICAgIC8KIAotLyogRm9yd2FyZCAqLwotc3RhdGljIFB5T2JqZWN0ICphcnJheV9mcm9tYnl0ZXMoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKTsKK1JlYWQgbiBvYmplY3RzIGZyb20gdGhlIGZpbGUgb2JqZWN0IGYgYW5kIGFwcGVuZCB0aGVtIHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfZnJvbWZpbGUoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYXJyYXlfYXJyYXlfZnJvbWZpbGVfaW1wbChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmYsIFB5X3NzaXplX3QgbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYzlmNjAwZTEwZjUzNTEwIGlucHV0PWUxODhhZmU4ZTU4YWRmNDBdKi8KIHsKLSAgICBQeU9iamVjdCAqZiwgKmIsICpyZXM7CisgICAgUHlPYmplY3QgKmIsICpyZXM7CiAgICAgUHlfc3NpemVfdCBpdGVtc2l6ZSA9IHNlbGYtPm9iX2Rlc2NyLT5pdGVtc2l6ZTsKLSAgICBQeV9zc2l6ZV90IG4sIG5ieXRlczsKKyAgICBQeV9zc2l6ZV90IG5ieXRlczsKICAgICBfUHlfSURFTlRJRklFUihyZWFkKTsKICAgICBpbnQgbm90X2Vub3VnaF9ieXRlczsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT246ZnJvbWZpbGUiLCAmZiwgJm4pKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChuIDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIGNvdW50Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTMwNSwxMyArMTQzMiw4IEBACiAKICAgICBub3RfZW5vdWdoX2J5dGVzID0gKFB5Qnl0ZXNfR0VUX1NJWkUoYikgIT0gbmJ5dGVzKTsKIAotICAgIGFyZ3MgPSBQeV9CdWlsZFZhbHVlKCIoTykiLCBiKTsKKyAgICByZXMgPSBhcnJheV9hcnJheV9mcm9tYnl0ZXMoc2VsZiwgYik7CiAgICAgUHlfREVDUkVGKGIpOwotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzID0gYXJyYXlfZnJvbWJ5dGVzKHNlbGYsIGFyZ3MpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xMzI1LDE1ICsxNDQ3LDE4IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAotUHlEb2NfU1RSVkFSKGZyb21maWxlX2RvYywKLSJmcm9tZmlsZShmLCBuKVxuXAotXG5cCi1SZWFkIG4gb2JqZWN0cyBmcm9tIHRoZSBmaWxlIG9iamVjdCBmIGFuZCBhcHBlbmQgdGhlbSB0byB0aGUgZW5kIG9mIHRoZVxuXAotYXJyYXkuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS50b2ZpbGUKIAorICAgIGY6IG9iamVjdAorICAgIC8KKworV3JpdGUgYWxsIGl0ZW1zIChhcyBtYWNoaW5lIHZhbHVlcykgdG8gdGhlIGZpbGUgb2JqZWN0IGYuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV90b2ZpbGUoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmKQorYXJyYXlfYXJyYXlfdG9maWxlKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zYTJjZmE4MTI4ZGYwNzc3IGlucHV0PWIwNjY5YTQ4NGFhYjA4MzFdKi8KIHsKICAgICBQeV9zc2l6ZV90IG5ieXRlcyA9IFB5X1NJWkUoc2VsZikgKiBzZWxmLT5vYl9kZXNjci0+aXRlbXNpemU7CiAgICAgLyogV3JpdGUgNjRLIGJsb2NrcyBhdCBhIHRpbWUgKi8KQEAgLTEzNjgsMTQgKzE0OTMsMTggQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotUHlEb2NfU1RSVkFSKHRvZmlsZV9kb2MsCi0idG9maWxlKGYpXG5cCi1cblwKLVdyaXRlIGFsbCBpdGVtcyAoYXMgbWFjaGluZSB2YWx1ZXMpIHRvIHRoZSBmaWxlIG9iamVjdCBmLiIpOworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuZnJvbWxpc3QKIAorICAgIGxpc3Q6IG9iamVjdAorICAgIC8KKworQXBwZW5kIGl0ZW1zIHRvIGFycmF5IGZyb20gbGlzdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X2Zyb21saXN0KGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbGlzdCkKK2FycmF5X2FycmF5X2Zyb21saXN0KGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbGlzdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNjQxMWMyZDIyOGEzZTNmIGlucHV0PWJlMjYwNWE5NmM0OTY4MGZdKi8KIHsKICAgICBQeV9zc2l6ZV90IG47CiAKQEAgLTE0MDIsMTMgKzE1MzEsMTUgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotUHlEb2NfU1RSVkFSKGZyb21saXN0X2RvYywKLSJmcm9tbGlzdChsaXN0KVxuXAotXG5cCi1BcHBlbmQgaXRlbXMgdG8gYXJyYXkgZnJvbSBsaXN0LiIpOworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkudG9saXN0CisKK0NvbnZlcnQgYXJyYXkgdG8gYW4gb3JkaW5hcnkgbGlzdCB3aXRoIHRoZSBzYW1lIGl0ZW1zLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfdG9saXN0KGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorYXJyYXlfYXJyYXlfdG9saXN0X2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDBiNjBjYzllYWI4ZWY4OSBpbnB1dD1hOGQ3Nzg0YTk0Zjg2YjUzXSovCiB7CiAgICAgUHlPYmplY3QgKmxpc3QgPSBQeUxpc3RfTmV3KFB5X1NJWkUoc2VsZikpOwogICAgIFB5X3NzaXplX3QgaTsKQEAgLTE0MjksMTEgKzE1NjAsNiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeURvY19TVFJWQVIodG9saXN0X2RvYywKLSJ0b2xpc3QoKSAtPiBsaXN0XG5cCi1cblwKLUNvbnZlcnQgYXJyYXkgdG8gYW4gb3JkaW5hcnkgbGlzdCB3aXRoIHRoZSBzYW1lIGl0ZW1zLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogZnJvbWJ5dGVzKGFycmF5b2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcikKIHsKQEAgLTE0NzEsNDcgKzE1OTcsNTIgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuZnJvbXN0cmluZworCisgICAgYnVmZmVyOiBQeV9idWZmZXIoYWNjZXB0PXtzdHIsIGJ1ZmZlcn0pCisgICAgLworCitBcHBlbmRzIGl0ZW1zIGZyb20gdGhlIHN0cmluZywgaW50ZXJwcmV0aW5nIGl0IGFzIGFuIGFycmF5IG9mIG1hY2hpbmUgdmFsdWVzLCBhcyBpZiBpdCBoYWQgYmVlbiByZWFkIGZyb20gYSBmaWxlIHVzaW5nIHRoZSBmcm9tZmlsZSgpIG1ldGhvZCkuCisKK1RoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIFVzZSBmcm9tYnl0ZXMgaW5zdGVhZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X2Zyb21zdHJpbmcoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYXJyYXlfYXJyYXlfZnJvbXN0cmluZ19pbXBsKGFycmF5b2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMWM0YmFhNzc5ZGY4NGNlIGlucHV0PWEzMzQxYTUxMmUxMWQ3NzNdKi8KIHsKLSAgICBQeV9idWZmZXIgYnVmZmVyOwogICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgImZyb21zdHJpbmcoKSBpcyBkZXByZWNhdGVkLiBVc2UgZnJvbWJ5dGVzKCkgaW5zdGVhZC4iLCAyKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqOmZyb21zdHJpbmciLCAmYnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gZnJvbWJ5dGVzKHNlbGYsICZidWZmZXIpOworICAgIHJldHVybiBmcm9tYnl0ZXMoc2VsZiwgYnVmZmVyKTsKIH0KIAotUHlEb2NfU1RSVkFSKGZyb21zdHJpbmdfZG9jLAotImZyb21zdHJpbmcoc3RyaW5nKVxuXAotXG5cCi1BcHBlbmRzIGl0ZW1zIGZyb20gdGhlIHN0cmluZywgaW50ZXJwcmV0aW5nIGl0IGFzIGFuIGFycmF5IG9mIG1hY2hpbmVcblwKLXZhbHVlcywgYXMgaWYgaXQgaGFkIGJlZW4gcmVhZCBmcm9tIGEgZmlsZSB1c2luZyB0aGUgZnJvbWZpbGUoKSBtZXRob2QpLlxuXAotXG5cCi1UaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiBVc2UgZnJvbWJ5dGVzIGluc3RlYWQuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5mcm9tYnl0ZXMKIAorICAgIGJ1ZmZlcjogUHlfYnVmZmVyCisgICAgLworCitBcHBlbmRzIGl0ZW1zIGZyb20gdGhlIHN0cmluZywgaW50ZXJwcmV0aW5nIGl0IGFzIGFuIGFycmF5IG9mIG1hY2hpbmUgdmFsdWVzLCBhcyBpZiBpdCBoYWQgYmVlbiByZWFkIGZyb20gYSBmaWxlIHVzaW5nIHRoZSBmcm9tZmlsZSgpIG1ldGhvZCkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9mcm9tYnl0ZXMoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYXJyYXlfYXJyYXlfZnJvbWJ5dGVzX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ5ODQyYzhmNzUxMGE1MTYgaW5wdXQ9MmJiZjJiNTNlYmZjYzk4OF0qLwogewotICAgIFB5X2J1ZmZlciBidWZmZXI7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kjpmcm9tYnl0ZXMiLCAmYnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gZnJvbWJ5dGVzKHNlbGYsICZidWZmZXIpOworICAgIHJldHVybiBmcm9tYnl0ZXMoc2VsZiwgYnVmZmVyKTsKIH0KIAotUHlEb2NfU1RSVkFSKGZyb21ieXRlc19kb2MsCi0iZnJvbWJ5dGVzKGJ5dGVzdHJpbmcpXG5cCi1cblwKLUFwcGVuZHMgaXRlbXMgZnJvbSB0aGUgc3RyaW5nLCBpbnRlcnByZXRpbmcgaXQgYXMgYW4gYXJyYXkgb2YgbWFjaGluZVxuXAotdmFsdWVzLCBhcyBpZiBpdCBoYWQgYmVlbiByZWFkIGZyb20gYSBmaWxlIHVzaW5nIHRoZSBmcm9tZmlsZSgpIG1ldGhvZCkuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS50b2J5dGVzCiAKK0NvbnZlcnQgdGhlIGFycmF5IHRvIGFuIGFycmF5IG9mIG1hY2hpbmUgdmFsdWVzIGFuZCByZXR1cm4gdGhlIGJ5dGVzIHJlcHJlc2VudGF0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfdG9ieXRlcyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK2FycmF5X2FycmF5X3RvYnl0ZXNfaW1wbChhcnJheW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NzMxOGU0ZWRjZGMyYmI2IGlucHV0PTkwZWU0OTVmOTZkZTM0ZjVdKi8KIHsKICAgICBpZiAoUHlfU0laRShzZWxmKSA8PSBQWV9TU0laRV9UX01BWCAvIHNlbGYtPm9iX2Rlc2NyLT5pdGVtc2l6ZSkgewogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzZWxmLT5vYl9pdGVtLApAQCAtMTUyMSw0MCArMTY1Miw0NCBAQAogICAgIH0KIH0KIAotUHlEb2NfU1RSVkFSKHRvYnl0ZXNfZG9jLAotInRvYnl0ZXMoKSAtPiBieXRlc1xuXAotXG5cCi1Db252ZXJ0IHRoZSBhcnJheSB0byBhbiBhcnJheSBvZiBtYWNoaW5lIHZhbHVlcyBhbmQgcmV0dXJuIHRoZSBieXRlc1xuXAotcmVwcmVzZW50YXRpb24uIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS50b3N0cmluZwogCitDb252ZXJ0IHRoZSBhcnJheSB0byBhbiBhcnJheSBvZiBtYWNoaW5lIHZhbHVlcyBhbmQgcmV0dXJuIHRoZSBieXRlcyByZXByZXNlbnRhdGlvbi4KKworVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gVXNlIHRvYnl0ZXMgaW5zdGVhZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X3Rvc3RyaW5nKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorYXJyYXlfYXJyYXlfdG9zdHJpbmdfaW1wbChhcnJheW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZDZiZDkyNzQ1YTJjOGYzIGlucHV0PWI2YzBkZGVlN2IzMDQ1N2VdKi8KIHsKICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICJ0b3N0cmluZygpIGlzIGRlcHJlY2F0ZWQuIFVzZSB0b2J5dGVzKCkgaW5zdGVhZC4iLCAyKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gYXJyYXlfdG9ieXRlcyhzZWxmLCB1bnVzZWQpOworICAgIHJldHVybiBhcnJheV9hcnJheV90b2J5dGVzX2ltcGwoc2VsZik7CiB9CiAKLVB5RG9jX1NUUlZBUih0b3N0cmluZ19kb2MsCi0idG9zdHJpbmcoKSAtPiBieXRlc1xuXAotXG5cCi1Db252ZXJ0IHRoZSBhcnJheSB0byBhbiBhcnJheSBvZiBtYWNoaW5lIHZhbHVlcyBhbmQgcmV0dXJuIHRoZSBieXRlc1xuXAotcmVwcmVzZW50YXRpb24uXG5cCi1cblwKLVRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIFVzZSB0b2J5dGVzIGluc3RlYWQuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5mcm9tdW5pY29kZQogCisgICAgdXN0cjogUHlfVU5JQ09ERSh6ZXJvZXM9VHJ1ZSkKKyAgICAvCisKK0V4dGVuZHMgdGhpcyBhcnJheSB3aXRoIGRhdGEgZnJvbSB0aGUgdW5pY29kZSBzdHJpbmcgdXN0ci4KKworVGhlIGFycmF5IG11c3QgYmUgYSB1bmljb2RlIHR5cGUgYXJyYXk7IG90aGVyd2lzZSBhIFZhbHVlRXJyb3IgaXMgcmFpc2VkLgorVXNlIGFycmF5LmZyb21ieXRlcyh1c3RyLmVuY29kZSguLi4pKSB0byBhcHBlbmQgVW5pY29kZSBkYXRhIHRvIGFuIGFycmF5IG9mCitzb21lIG90aGVyIHR5cGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9mcm9tdW5pY29kZShhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCithcnJheV9hcnJheV9mcm9tdW5pY29kZV9pbXBsKGFycmF5b2JqZWN0ICpzZWxmLCBQeV9VTklDT0RFICp1c3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV9jbGVhbl90IHVzdHJfbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWViYjcyZmMxNjk3NWUwNmQgaW5wdXQ9MTUwZjAwNTY2ZmZiY2E2ZV0qLwogewotICAgIFB5X1VOSUNPREUgKnVzdHI7Ci0gICAgUHlfc3NpemVfdCBuOwogICAgIGNoYXIgdHlwZWNvZGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInUjOmZyb211bmljb2RlIiwgJnVzdHIsICZuKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgdHlwZWNvZGUgPSBzZWxmLT5vYl9kZXNjci0+dHlwZWNvZGU7CiAgICAgaWYgKHR5cGVjb2RlICE9ICd1JykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKQEAgLTE1NjIsMjkgKzE2OTcsMzAgQEAKICAgICAgICAgICAgICJ1bmljb2RlIHR5cGUgYXJyYXlzIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAobiA+IDApIHsKKyAgICBpZiAodXN0cl9sZW5ndGggPiAwKSB7CiAgICAgICAgIFB5X3NzaXplX3Qgb2xkX3NpemUgPSBQeV9TSVpFKHNlbGYpOwotICAgICAgICBpZiAoYXJyYXlfcmVzaXplKHNlbGYsIG9sZF9zaXplICsgbikgPT0gLTEpCisgICAgICAgIGlmIChhcnJheV9yZXNpemUoc2VsZiwgb2xkX3NpemUgKyB1c3RyX2xlbmd0aCkgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgbWVtY3B5KHNlbGYtPm9iX2l0ZW0gKyBvbGRfc2l6ZSAqIHNpemVvZihQeV9VTklDT0RFKSwKLSAgICAgICAgICAgICAgIHVzdHIsIG4gKiBzaXplb2YoUHlfVU5JQ09ERSkpOworICAgICAgICAgICAgICAgdXN0ciwgdXN0cl9sZW5ndGggKiBzaXplb2YoUHlfVU5JQ09ERSkpOwogICAgIH0KIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGZyb211bmljb2RlX2RvYywKLSJmcm9tdW5pY29kZSh1c3RyKVxuXAotXG5cCi1FeHRlbmRzIHRoaXMgYXJyYXkgd2l0aCBkYXRhIGZyb20gdGhlIHVuaWNvZGUgc3RyaW5nIHVzdHIuXG5cCi1UaGUgYXJyYXkgbXVzdCBiZSBhIHVuaWNvZGUgdHlwZSBhcnJheTsgb3RoZXJ3aXNlIGEgVmFsdWVFcnJvclxuXAotaXMgcmFpc2VkLiAgVXNlIGFycmF5LmZyb21ieXRlcyh1c3RyLmVuY29kZSguLi4pKSB0b1xuXAotYXBwZW5kIFVuaWNvZGUgZGF0YSB0byBhbiBhcnJheSBvZiBzb21lIG90aGVyIHR5cGUuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS50b3VuaWNvZGUKIAorRXh0ZW5kcyB0aGlzIGFycmF5IHdpdGggZGF0YSBmcm9tIHRoZSB1bmljb2RlIHN0cmluZyB1c3RyLgorCitDb252ZXJ0IHRoZSBhcnJheSB0byBhIHVuaWNvZGUgc3RyaW5nLiAgVGhlIGFycmF5IG11c3QgYmUgYSB1bmljb2RlIHR5cGUgYXJyYXk7CitvdGhlcndpc2UgYSBWYWx1ZUVycm9yIGlzIHJhaXNlZC4gIFVzZSBhcnJheS50b2J5dGVzKCkuZGVjb2RlKCkgdG8gb2J0YWluIGEKK3VuaWNvZGUgc3RyaW5nIGZyb20gYW4gYXJyYXkgb2Ygc29tZSBvdGhlciB0eXBlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfdG91bmljb2RlKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorYXJyYXlfYXJyYXlfdG91bmljb2RlX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDhlNDQyMzc4MzM2ZTFlZiBpbnB1dD0xMjcyNDJlZWJlNzBiNjZkXSovCiB7CiAgICAgY2hhciB0eXBlY29kZTsKICAgICB0eXBlY29kZSA9IHNlbGYtPm9iX2Rlc2NyLT50eXBlY29kZTsKQEAgLTE1OTYsNzAgKzE3MzIsMjQgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKChQeV9VTklDT0RFICopIHNlbGYtPm9iX2l0ZW0sIFB5X1NJWkUoc2VsZikpOwogfQogCi1QeURvY19TVFJWQVIodG91bmljb2RlX2RvYywKLSJ0b3VuaWNvZGUoKSAtPiB1bmljb2RlXG5cCi1cblwKLUNvbnZlcnQgdGhlIGFycmF5IHRvIGEgdW5pY29kZSBzdHJpbmcuICBUaGUgYXJyYXkgbXVzdCBiZVxuXAotYSB1bmljb2RlIHR5cGUgYXJyYXk7IG90aGVyd2lzZSBhIFZhbHVlRXJyb3IgaXMgcmFpc2VkLiAgVXNlXG5cCi1hcnJheS50b2J5dGVzKCkuZGVjb2RlKCkgdG8gb2J0YWluIGEgdW5pY29kZSBzdHJpbmcgZnJvbVxuXAotYW4gYXJyYXkgb2Ygc29tZSBvdGhlciB0eXBlLiIpOworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuX19zaXplb2ZfXwogCitTaXplIG9mIHRoZSBhcnJheSBpbiBtZW1vcnksIGluIGJ5dGVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfc2l6ZW9mKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorYXJyYXlfYXJyYXlfX19zaXplb2ZfX19pbXBsKGFycmF5b2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ4ZTFjNjFlYmJlM2VhZWQgaW5wdXQ9ODA1NTg2NTY1YmYyYjNjNl0qLwogewogICAgIFB5X3NzaXplX3QgcmVzOwotICAgIHJlcyA9IHNpemVvZihhcnJheW9iamVjdCkgKyBzZWxmLT5hbGxvY2F0ZWQgKiBzZWxmLT5vYl9kZXNjci0+aXRlbXNpemU7CisgICAgcmVzID0gX1B5T2JqZWN0X1NJWkUoUHlfVFlQRShzZWxmKSkgKyBzZWxmLT5hbGxvY2F0ZWQgKiBzZWxmLT5vYl9kZXNjci0+aXRlbXNpemU7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOwogfQogCi1QeURvY19TVFJWQVIoc2l6ZW9mX2RvYywKLSJfX3NpemVvZl9fKCkgLT4gaW50XG5cCi1cblwKLVNpemUgb2YgdGhlIGFycmF5IGluIG1lbW9yeSwgaW4gYnl0ZXMuIik7Ci0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqIFBpY2tsaW5nIHN1cHBvcnQgKioqKioqKioqKioqKioqKioqKioqKioqLwogCi1lbnVtIG1hY2hpbmVfZm9ybWF0X2NvZGUgewotICAgIFVOS05PV05fRk9STUFUID0gLTEsCi0gICAgLyogVU5LTk9XTl9GT1JNQVQgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBtYWNoaW5lIGZvcm1hdCBmb3IgYW4KLSAgICAgKiBhcnJheSB0eXBlIGNvZGUgY2Fubm90IGJlIGludGVycHJldGVkLiBXaGVuIHRoaXMgb2NjdXJzLCBhIGxpc3Qgb2YKLSAgICAgKiBQeXRob24gb2JqZWN0cyBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgY29udGVudCBvZiB0aGUgYXJyYXkKLSAgICAgKiBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBtZW1vcnkgY29udGVudCBvZiB0aGUgYXJyYXkgZGlyZWN0bHkuIEluIHRoYXQKLSAgICAgKiBjYXNlLCB0aGUgYXJyYXlfcmVjb25zdHJ1Y3RvciBtZWNoYW5pc20gaXMgYnlwYXNzZWQgY29tcGxldGVseSwgYW5kCi0gICAgICogdGhlIHN0YW5kYXJkIGFycmF5IGNvbnN0cnVjdG9yIGlzIHVzZWQgaW5zdGVhZC4KLSAgICAgKgotICAgICAqIFRoaXMgaXMgd2lsbCBtb3N0IGxpa2VseSBvY2N1ciB3aGVuIHRoZSBtYWNoaW5lIGRvZXNuJ3QgdXNlIElFRUUKLSAgICAgKiBmbG9hdGluZy1wb2ludCBudW1iZXJzLgotICAgICAqLwotCi0gICAgVU5TSUdORURfSU5UOCA9IDAsCi0gICAgU0lHTkVEX0lOVDggPSAxLAotICAgIFVOU0lHTkVEX0lOVDE2X0xFID0gMiwKLSAgICBVTlNJR05FRF9JTlQxNl9CRSA9IDMsCi0gICAgU0lHTkVEX0lOVDE2X0xFID0gNCwKLSAgICBTSUdORURfSU5UMTZfQkUgPSA1LAotICAgIFVOU0lHTkVEX0lOVDMyX0xFID0gNiwKLSAgICBVTlNJR05FRF9JTlQzMl9CRSA9IDcsCi0gICAgU0lHTkVEX0lOVDMyX0xFID0gOCwKLSAgICBTSUdORURfSU5UMzJfQkUgPSA5LAotICAgIFVOU0lHTkVEX0lOVDY0X0xFID0gMTAsCi0gICAgVU5TSUdORURfSU5UNjRfQkUgPSAxMSwKLSAgICBTSUdORURfSU5UNjRfTEUgPSAxMiwKLSAgICBTSUdORURfSU5UNjRfQkUgPSAxMywKLSAgICBJRUVFXzc1NF9GTE9BVF9MRSA9IDE0LAotICAgIElFRUVfNzU0X0ZMT0FUX0JFID0gMTUsCi0gICAgSUVFRV83NTRfRE9VQkxFX0xFID0gMTYsCi0gICAgSUVFRV83NTRfRE9VQkxFX0JFID0gMTcsCi0gICAgVVRGMTZfTEUgPSAxOCwKLSAgICBVVEYxNl9CRSA9IDE5LAotICAgIFVURjMyX0xFID0gMjAsCi0gICAgVVRGMzJfQkUgPSAyMQotfTsKLSNkZWZpbmUgTUFDSElORV9GT1JNQVRfQ09ERV9NSU4gMAotI2RlZmluZSBNQUNISU5FX0ZPUk1BVF9DT0RFX01BWCAyMQotCiBzdGF0aWMgY29uc3Qgc3RydWN0IG1mb3JtYXRkZXNjciB7CiAgICAgc2l6ZV90IHNpemU7CiAgICAgaW50IGlzX3NpZ25lZDsKQEAgLTE4MzUsMjEgKzE5MjUsMjkgQEAKICAqIFRoaXMgZnVuY3Rpb25zIGlzIGEgc3BlY2lhbCBjb25zdHJ1Y3RvciB1c2VkIHdoZW4gdW5waWNrbGluZyBhbiBhcnJheS4gSXQKICAqIHByb3ZpZGVzIGEgcG9ydGFibGUgd2F5IHRvIHJlYnVpbGQgYW4gYXJyYXkgZnJvbSBpdHMgbWVtb3J5IHJlcHJlc2VudGF0aW9uLgogICovCisvKltjbGluaWMgaW5wdXRdCithcnJheS5fYXJyYXlfcmVjb25zdHJ1Y3RvcgorCisgICAgYXJyYXl0eXBlOiBvYmplY3QodHlwZT0iUHlUeXBlT2JqZWN0ICoiKQorICAgIHR5cGVjb2RlOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIG1mb3JtYXRfY29kZTogaW50KHR5cGU9ImVudW0gbWFjaGluZV9mb3JtYXRfY29kZSIpCisgICAgaXRlbXM6IG9iamVjdAorICAgIC8KKworSW50ZXJuYWwuIFVzZWQgZm9yIHBpY2tsaW5nIHN1cHBvcnQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9yZWNvbnN0cnVjdG9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2FycmF5X19hcnJheV9yZWNvbnN0cnVjdG9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlUeXBlT2JqZWN0ICphcnJheXR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0eXBlY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBtYWNoaW5lX2Zvcm1hdF9jb2RlIG1mb3JtYXRfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKml0ZW1zKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZlY2JmMGU4ZTRkOTJhYjkgaW5wdXQ9MjQ2NGRjOGY0Yzc3MzZiNV0qLwogewotICAgIFB5VHlwZU9iamVjdCAqYXJyYXl0eXBlOwotICAgIFB5T2JqZWN0ICppdGVtczsKICAgICBQeU9iamVjdCAqY29udmVydGVkX2l0ZW1zOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgaW50IHR5cGVjb2RlOwotICAgIGVudW0gbWFjaGluZV9mb3JtYXRfY29kZSBtZm9ybWF0X2NvZGU7CiAgICAgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPQ2lPOmFycmF5Ll9hcnJheV9yZWNvbnN0cnVjdG9yIiwKLSAgICAgICAgICAgICAgICAgICAgJmFycmF5dHlwZSwgJnR5cGVjb2RlLCAmbWZvcm1hdF9jb2RlLCAmaXRlbXMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmICghUHlUeXBlX0NoZWNrKGFycmF5dHlwZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICJmaXJzdCBhcmd1bWVudCBtdXN0IGEgdHlwZSBvYmplY3QsIG5vdCAlLjIwMHMiLApAQCAtMjAwMCw3ICsyMDk4LDcgQEAKICAgICAgICAgICovCiAgICAgICAgIGZvciAoZGVzY3IgPSBkZXNjcmlwdG9yczsgZGVzY3ItPnR5cGVjb2RlICE9ICdcMCc7IGRlc2NyKyspIHsKICAgICAgICAgICAgIGlmIChkZXNjci0+aXNfaW50ZWdlcl90eXBlICYmCi0gICAgICAgICAgICAgICAgZGVzY3ItPml0ZW1zaXplID09IG1mX2Rlc2NyLnNpemUgJiYKKyAgICAgICAgICAgICAgICAoc2l6ZV90KWRlc2NyLT5pdGVtc2l6ZSA9PSBtZl9kZXNjci5zaXplICYmCiAgICAgICAgICAgICAgICAgZGVzY3ItPmlzX3NpZ25lZCA9PSBtZl9kZXNjci5pc19zaWduZWQpCiAgICAgICAgICAgICAgICAgdHlwZWNvZGUgPSBkZXNjci0+dHlwZWNvZGU7CiAgICAgICAgIH0KQEAgLTIwMzgsMTMgKzIxMzYsMjMgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5fX3JlZHVjZV9leF9fCisKKyAgICB2YWx1ZTogb2JqZWN0CisgICAgLworCitSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfcmVkdWNlX2V4KGFycmF5b2JqZWN0ICphcnJheSwgUHlPYmplY3QgKnZhbHVlKQorYXJyYXlfYXJyYXlfX19yZWR1Y2VfZXhfXyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA1MWUwYTYxNzVkMGVkZGIgaW5wdXQ9YzM2YzNmODVkZTdkZjZjZF0qLwogewogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlPYmplY3QgKmFycmF5X3N0cjsKLSAgICBpbnQgdHlwZWNvZGUgPSBhcnJheS0+b2JfZGVzY3ItPnR5cGVjb2RlOworICAgIGludCB0eXBlY29kZSA9IHNlbGYtPm9iX2Rlc2NyLT50eXBlY29kZTsKICAgICBpbnQgbWZvcm1hdF9jb2RlOwogICAgIHN0YXRpYyBQeU9iamVjdCAqYXJyYXlfcmVjb25zdHJ1Y3RvciA9IE5VTEw7CiAgICAgbG9uZyBwcm90b2NvbDsKQEAgLTIwNzIsNyArMjE4MCw3IEBACiAgICAgaWYgKHByb3RvY29sID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopYXJyYXksICZQeUlkX19fZGljdF9fKTsKKyAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMDk1LDMyICsyMjAzLDMwIEBACiAgICAgICAgICAqIGNvZXJjaW5nIHVuaWNvZGUgb2JqZWN0cyB0byBieXRlcyBpbiBhcnJheV9yZWNvbnN0cnVjdG9yLgogICAgICAgICAgKi8KICAgICAgICAgUHlPYmplY3QgKmxpc3Q7Ci0gICAgICAgIGxpc3QgPSBhcnJheV90b2xpc3QoYXJyYXksIE5VTEwpOworICAgICAgICBsaXN0ID0gYXJyYXlfYXJyYXlfdG9saXN0X2ltcGwoc2VsZik7CiAgICAgICAgIGlmIChsaXN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoCi0gICAgICAgICAgICAiTyhDTylPIiwgUHlfVFlQRShhcnJheSksIHR5cGVjb2RlLCBsaXN0LCBkaWN0KTsKKyAgICAgICAgICAgICJPKENPKU8iLCBQeV9UWVBFKHNlbGYpLCB0eXBlY29kZSwgbGlzdCwgZGljdCk7CiAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKICAgICAgICAgUHlfREVDUkVGKGRpY3QpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIGFycmF5X3N0ciA9IGFycmF5X3RvYnl0ZXMoYXJyYXksIE5VTEwpOworICAgIGFycmF5X3N0ciA9IGFycmF5X2FycmF5X3RvYnl0ZXNfaW1wbChzZWxmKTsKICAgICBpZiAoYXJyYXlfc3RyID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGRpY3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgKLSAgICAgICAgIk8oT0NpTilPIiwgYXJyYXlfcmVjb25zdHJ1Y3RvciwgUHlfVFlQRShhcnJheSksIHR5cGVjb2RlLAorICAgICAgICAiTyhPQ2lOKU8iLCBhcnJheV9yZWNvbnN0cnVjdG9yLCBQeV9UWVBFKHNlbGYpLCB0eXBlY29kZSwKICAgICAgICAgbWZvcm1hdF9jb2RlLCBhcnJheV9zdHIsIGRpY3QpOwogICAgIFB5X0RFQ1JFRihkaWN0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBhcnJheV9nZXRfdHlwZWNvZGUoYXJyYXlvYmplY3QgKmEsIHZvaWQgKmNsb3N1cmUpCiB7CkBAIC0yMTQzLDU1ICsyMjQ5LDMxIEBACiB9OwogCiBzdGF0aWMgUHlNZXRob2REZWYgYXJyYXlfbWV0aG9kc1tdID0gewotICAgIHsiYXBwZW5kIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2FwcGVuZCwgICAgICBNRVRIX08sCi0gICAgIGFwcGVuZF9kb2N9LAotICAgIHsiYnVmZmVyX2luZm8iLCAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2J1ZmZlcl9pbmZvLCBNRVRIX05PQVJHUywKLSAgICAgYnVmZmVyX2luZm9fZG9jfSwKLSAgICB7ImJ5dGVzd2FwIiwgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9ieXRlc3dhcCwgICAgTUVUSF9OT0FSR1MsCi0gICAgIGJ5dGVzd2FwX2RvY30sCi0gICAgeyJfX2NvcHlfXyIsICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfY29weSwgICAgICAgIE1FVEhfTk9BUkdTLAotICAgICBjb3B5X2RvY30sCi0gICAgeyJjb3VudCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfY291bnQsICAgICAgIE1FVEhfTywKLSAgICAgY291bnRfZG9jfSwKLSAgICB7Il9fZGVlcGNvcHlfXyIsICAgIChQeUNGdW5jdGlvbilhcnJheV9jb3B5LCAgICAgICAgTUVUSF9PLAotICAgICBjb3B5X2RvY30sCi0gICAgeyJleHRlbmQiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfZXh0ZW5kLCAgICAgIE1FVEhfTywKLSAgICAgZXh0ZW5kX2RvY30sCi0gICAgeyJmcm9tZmlsZSIsICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfZnJvbWZpbGUsICAgIE1FVEhfVkFSQVJHUywKLSAgICAgZnJvbWZpbGVfZG9jfSwKLSAgICB7ImZyb21saXN0IiwgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9mcm9tbGlzdCwgICAgTUVUSF9PLAotICAgICBmcm9tbGlzdF9kb2N9LAotICAgIHsiZnJvbXN0cmluZyIsICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2Zyb21zdHJpbmcsICBNRVRIX1ZBUkFSR1MsCi0gICAgIGZyb21zdHJpbmdfZG9jfSwKLSAgICB7ImZyb21ieXRlcyIsICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9mcm9tYnl0ZXMsICAgTUVUSF9WQVJBUkdTLAotICAgICBmcm9tYnl0ZXNfZG9jfSwKLSAgICB7ImZyb211bmljb2RlIiwgICAgIChQeUNGdW5jdGlvbilhcnJheV9mcm9tdW5pY29kZSwgTUVUSF9WQVJBUkdTLAotICAgICBmcm9tdW5pY29kZV9kb2N9LAotICAgIHsiaW5kZXgiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2luZGV4LCAgICAgICBNRVRIX08sCi0gICAgIGluZGV4X2RvY30sCi0gICAgeyJpbnNlcnQiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfaW5zZXJ0LCAgICAgIE1FVEhfVkFSQVJHUywKLSAgICAgaW5zZXJ0X2RvY30sCi0gICAgeyJwb3AiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfcG9wLCAgICAgICAgIE1FVEhfVkFSQVJHUywKLSAgICAgcG9wX2RvY30sCi0gICAgeyJfX3JlZHVjZV9leF9fIiwgICAoUHlDRnVuY3Rpb24pYXJyYXlfcmVkdWNlX2V4LCAgIE1FVEhfTywKLSAgICAgcmVkdWNlX2RvY30sCi0gICAgeyJyZW1vdmUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfcmVtb3ZlLCAgICAgIE1FVEhfTywKLSAgICAgcmVtb3ZlX2RvY30sCi0gICAgeyJyZXZlcnNlIiwgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfcmV2ZXJzZSwgICAgIE1FVEhfTk9BUkdTLAotICAgICByZXZlcnNlX2RvY30sCi0gICAgeyJ0b2ZpbGUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfdG9maWxlLCAgICAgIE1FVEhfTywKLSAgICAgdG9maWxlX2RvY30sCi0gICAgeyJ0b2xpc3QiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfdG9saXN0LCAgICAgIE1FVEhfTk9BUkdTLAotICAgICB0b2xpc3RfZG9jfSwKLSAgICB7InRvc3RyaW5nIiwgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV90b3N0cmluZywgICAgTUVUSF9OT0FSR1MsCi0gICAgIHRvc3RyaW5nX2RvY30sCi0gICAgeyJ0b2J5dGVzIiwgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfdG9ieXRlcywgICAgIE1FVEhfTk9BUkdTLAotICAgICB0b2J5dGVzX2RvY30sCi0gICAgeyJ0b3VuaWNvZGUiLCAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfdG91bmljb2RlLCAgIE1FVEhfTk9BUkdTLAotICAgICB0b3VuaWNvZGVfZG9jfSwKLSAgICB7Il9fc2l6ZW9mX18iLCAgICAgIChQeUNGdW5jdGlvbilhcnJheV9zaXplb2YsICAgICAgTUVUSF9OT0FSR1MsCi0gICAgIHNpemVvZl9kb2N9LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCisgICAgQVJSQVlfQVJSQVlfQVBQRU5EX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX0JVRkZFUl9JTkZPX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX0JZVEVTV0FQX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX19fQ09QWV9fX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX0NPVU5UX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX19fREVFUENPUFlfX19NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9FWFRFTkRfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfRlJPTUZJTEVfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfRlJPTUxJU1RfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfRlJPTVNUUklOR19NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9GUk9NQllURVNfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfRlJPTVVOSUNPREVfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfSU5ERVhfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfSU5TRVJUX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX1BPUF9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9fX1JFRFVDRV9FWF9fX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX1JFTU9WRV9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9SRVZFUlNFX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX1RPRklMRV9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9UT0xJU1RfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfVE9TVFJJTkdfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfVE9CWVRFU19NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9UT1VOSUNPREVfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfX19TSVpFT0ZfX19NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0gIC8qIHNlbnRpbmVsICovCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjIwNyw5ICsyMjg5LDkgQEAKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJhcnJheSgnJWMnKSIsIChpbnQpdHlwZWNvZGUpOwogICAgIH0KICAgICBpZiAodHlwZWNvZGUgPT0gJ3UnKSB7Ci0gICAgICAgIHYgPSBhcnJheV90b3VuaWNvZGUoYSwgTlVMTCk7CisgICAgICAgIHYgPSBhcnJheV9hcnJheV90b3VuaWNvZGVfaW1wbChhKTsKICAgICB9IGVsc2UgewotICAgICAgICB2ID0gYXJyYXlfdG9saXN0KGEsIE5VTEwpOworICAgICAgICB2ID0gYXJyYXlfYXJyYXlfdG9saXN0X2ltcGwoYSk7CiAgICAgfQogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjQ0Niw3ICsyNTI4LDExIEBACiBzdGF0aWMgaW50CiBhcnJheV9idWZmZXJfZ2V0YnVmKGFycmF5b2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKIHsKLSAgICBpZiAodmlldz09TlVMTCkgZ290byBmaW5pc2g7CisgICAgaWYgKHZpZXcgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAiYXJyYXlfYnVmZmVyX2dldGJ1Zjogdmlldz09TlVMTCBhcmd1bWVudCBpcyBvYnNvbGV0ZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgdmlldy0+YnVmID0gKHZvaWQgKilzZWxmLT5vYl9pdGVtOwogICAgIHZpZXctPm9iaiA9IChQeU9iamVjdCopc2VsZjsKQEAgLTI0NzYsNyArMjU2Miw2IEBACiAjZW5kaWYKICAgICB9CiAKLSBmaW5pc2g6CiAgICAgc2VsZi0+b2JfZXhwb3J0cysrOwogICAgIHJldHVybiAwOwogfQpAQCAtMjU4NiwxNSArMjY3MSw5IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChpbml0aWFsICE9IE5VTEwgJiYgKFB5Qnl0ZUFycmF5X0NoZWNrKGluaXRpYWwpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19DaGVjayhpbml0aWFsKSkpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqdF9pbml0aWFsLCAqdjsKLSAgICAgICAgICAgICAgICB0X2luaXRpYWwgPSBQeVR1cGxlX1BhY2soMSwgaW5pdGlhbCk7Ci0gICAgICAgICAgICAgICAgaWYgKHRfaW5pdGlhbCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHYgPSBhcnJheV9mcm9tYnl0ZXMoKGFycmF5b2JqZWN0ICopYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdF9pbml0aWFsKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodF9pbml0aWFsKTsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqdjsKKyAgICAgICAgICAgICAgICB2ID0gYXJyYXlfYXJyYXlfZnJvbWJ5dGVzKChhcnJheW9iamVjdCAqKWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsKTsKICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNzY2LDE2ICsyODQ1LDEwIEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKiBBcnJheSBJdGVyYXRvciAqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeV9zc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDsKLSAgICBhcnJheW9iamVjdCAgICAgICAgICAgICAgICAgKmFvOwotICAgIFB5T2JqZWN0ICAgICAgICAgICAgICAgICAgICAqICgqZ2V0aXRlbSkoc3RydWN0IGFycmF5b2JqZWN0ICosIFB5X3NzaXplX3QpOwotfSBhcnJheWl0ZXJvYmplY3Q7Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgUHlBcnJheUl0ZXJfVHlwZTsKLQotI2RlZmluZSBQeUFycmF5SXRlcl9DaGVjayhvcCkgUHlPYmplY3RfVHlwZUNoZWNrKG9wLCAmUHlBcnJheUl0ZXJfVHlwZSkKKy8qW2NsaW5pYyBpbnB1dF0KK2NsYXNzIGFycmF5LmFycmF5aXRlcmF0b3IgImFycmF5aXRlcm9iamVjdCAqIiAiJlB5QXJyYXlJdGVyX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD01YWVmZDJkNzRkOGM4ZTMwXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhcnJheV9pdGVyKGFycmF5b2JqZWN0ICphbykKQEAgLTI4MjMsMzMgKzI4OTYsNDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5aXRlcl9yZWR1Y2UoYXJyYXlpdGVyb2JqZWN0ICppdCkKLXsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKW4iLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5hbywgaXQtPmluZGV4KTsKLX0KKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5aXRlcmF0b3IuX19yZWR1Y2VfXworCitSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlpdGVyX3NldHN0YXRlKGFycmF5aXRlcm9iamVjdCAqaXQsIFB5T2JqZWN0ICpzdGF0ZSkKK2FycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfX19pbXBsKGFycmF5aXRlcm9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ODk4YTUyZThlNjZlMDE2IGlucHV0PWEwNjJlYTFlOTk1MTQxN2FdKi8KK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKW4iLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFvLCBzZWxmLT5pbmRleCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5aXRlcmF0b3IuX19zZXRzdGF0ZV9fCisKKyAgICBzdGF0ZTogb2JqZWN0CisgICAgLworCitTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheWl0ZXJhdG9yX19fc2V0c3RhdGVfXyhhcnJheWl0ZXJvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdGF0ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zOTdkYTk5MDRlNDQzY2JlIGlucHV0PWY0N2Q1Y2VkYTE5ZTc4N2JdKi8KIHsKICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChzdGF0ZSk7CiAgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChpbmRleCA8IDApCiAgICAgICAgIGluZGV4ID0gMDsKLSAgICBlbHNlIGlmIChpbmRleCA+IFB5X1NJWkUoaXQtPmFvKSkKLSAgICAgICAgaW5kZXggPSBQeV9TSVpFKGl0LT5hbyk7IC8qIGl0ZXJhdG9yIGV4aGF1c3RlZCAqLwotICAgIGl0LT5pbmRleCA9IGluZGV4OworICAgIGVsc2UgaWYgKGluZGV4ID4gUHlfU0laRShzZWxmLT5hbykpCisgICAgICAgIGluZGV4ID0gUHlfU0laRShzZWxmLT5hbyk7IC8qIGl0ZXJhdG9yIGV4aGF1c3RlZCAqLworICAgIHNlbGYtPmluZGV4ID0gaW5kZXg7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CiBzdGF0aWMgUHlNZXRob2REZWYgYXJyYXlpdGVyX21ldGhvZHNbXSA9IHsKLSAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilhcnJheWl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywKLSAgICAgcmVkdWNlX2RvY30sCi0gICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pYXJyYXlpdGVyX3NldHN0YXRlLCBNRVRIX08sCi0gICAgIHNldHN0YXRlX2RvY30sCisgICAgQVJSQVlfQVJSQVlJVEVSQVRPUl9fX1JFRFVDRV9fX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZSVRFUkFUT1JfX19TRVRTVEFURV9fX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfSAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMjg5MCwzOSArMjk3NywyMSBAQAogCiAvKiBObyBmdW5jdGlvbnMgaW4gYXJyYXkgbW9kdWxlLiAqLwogc3RhdGljIFB5TWV0aG9kRGVmIGFfbWV0aG9kc1tdID0gewotICAgIHsiX2FycmF5X3JlY29uc3RydWN0b3IiLCBhcnJheV9yZWNvbnN0cnVjdG9yLCBNRVRIX1ZBUkFSR1MsCi0gICAgIFB5RG9jX1NUUigiSW50ZXJuYWwuIFVzZWQgZm9yIHBpY2tsaW5nIHN1cHBvcnQuIil9LAorICAgIEFSUkFZX19BUlJBWV9SRUNPTlNUUlVDVE9SX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMLCAwLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KIH07CiAKLXN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgYXJyYXltb2R1bGUgPSB7Ci0gICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAotICAgICJhcnJheSIsCi0gICAgbW9kdWxlX2RvYywKLSAgICAtMSwKLSAgICBhX21ldGhvZHMsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTAotfTsKLQotCi1QeU1PRElOSVRfRlVOQwotUHlJbml0X2FycmF5KHZvaWQpCitzdGF0aWMgaW50CithcnJheV9tb2RleGVjKFB5T2JqZWN0ICptKQogewotICAgIFB5T2JqZWN0ICptOwogICAgIGNoYXIgYnVmZmVyW1B5X0FSUkFZX0xFTkdUSChkZXNjcmlwdG9ycyldLCAqcDsKICAgICBQeU9iamVjdCAqdHlwZWNvZGVzOwogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IDA7CiAgICAgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOwogCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmQXJyYXl0eXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlfVFlQRSgmUHlBcnJheUl0ZXJfVHlwZSkgPSAmUHlUeXBlX1R5cGU7Ci0gICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmYXJyYXltb2R1bGUpOwotICAgIGlmIChtID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfSU5DUkVGKChQeU9iamVjdCAqKSZBcnJheXR5cGUpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQXJyYXlUeXBlIiwgKFB5T2JqZWN0ICopJkFycmF5dHlwZSk7CkBAIC0yOTQ1LDUgKzMwMTQsMzAgQEAKICAgICAgICAgUHlfREVDUkVGKG0pOwogICAgICAgICBtID0gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIG07CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU1vZHVsZURlZl9TbG90IGFycmF5c2xvdHNbXSA9IHsKKyAgICB7UHlfbW9kX2V4ZWMsIGFycmF5X21vZGV4ZWN9LAorICAgIHswLCBOVUxMfQorfTsKKworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIGFycmF5bW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAiYXJyYXkiLAorICAgIG1vZHVsZV9kb2MsCisgICAgMCwKKyAgICBhX21ldGhvZHMsCisgICAgYXJyYXlzbG90cywKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTAorfTsKKworCitQeU1PRElOSVRfRlVOQworUHlJbml0X2FycmF5KHZvaWQpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJmFycmF5bW9kdWxlKTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvYXRleGl0bW9kdWxlLmMgYi9Nb2R1bGVzL2F0ZXhpdG1vZHVsZS5jCmluZGV4IGI5YzM0NGEuLjNjZGYyZDcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYXRleGl0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9hdGV4aXRtb2R1bGUuYwpAQCAtNjAsNyArNjAsNyBAQAogICAgIG1vZHN0YXRlLT5uY2FsbGJhY2tzID0gMDsKIH0KIAotLyogSW5zdGFsbGVkIGludG8gcHl0aG9ucnVuLmMncyBhdGV4aXQgbWVjaGFuaXNtICovCisvKiBJbnN0YWxsZWQgaW50byBweWxpZmVjeWNsZS5jJ3MgYXRleGl0IG1lY2hhbmlzbSAqLwogCiBzdGF0aWMgdm9pZAogYXRleGl0X2NhbGxmdW5jcyh2b2lkKQpAQCAtOTQsNyArOTQsNyBAQAogICAgICAgICAgICAgaWYgKGV4Y190eXBlKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGV4Y190eXBlKTsKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGV4Y192YWx1ZSk7Ci0gICAgICAgICAgICAgICAgUHlfWERFQ1JFRihleGNfdGIpOyAgICAKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGV4Y190Yik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjX3R5cGUsICZleGNfdmFsdWUsICZleGNfdGIpOwogICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N5c3RlbUV4aXQpKSB7CkBAIC0xNDcsNyArMTQ3LDcgQEAKICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgInJlZ2lzdGVyKCkgdGFrZXMgYXQgbGVhc3QgMSBhcmd1bWVudCAoMCBnaXZlbikiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7IAorICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBmdW5jID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKQEAgLTE1OSw3ICsxNTksNyBAQAogCiAgICAgbmV3X2NhbGxiYWNrID0gUHlNZW1fTWFsbG9jKHNpemVvZihhdGV4aXRfY2FsbGJhY2spKTsKICAgICBpZiAobmV3X2NhbGxiYWNrID09IE5VTEwpCi0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOyAgIAorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKIAogICAgIG5ld19jYWxsYmFjay0+YXJncyA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMSwgUHlUdXBsZV9HRVRfU0laRShhcmdzKSk7CiAgICAgaWYgKG5ld19jYWxsYmFjay0+YXJncyA9PSBOVUxMKSB7CkBAIC0zMzYsNyArMzM2LDcgQEAKICAgICBtb2RzdGF0ZSA9IEdFVF9BVEVYSVRfU1RBVEUobSk7CiAgICAgbW9kc3RhdGUtPmNhbGxiYWNrX2xlbiA9IDMyOwogICAgIG1vZHN0YXRlLT5uY2FsbGJhY2tzID0gMDsKLSAgICBtb2RzdGF0ZS0+YXRleGl0X2NhbGxiYWNrcyA9IFB5TWVtX05ldyhhdGV4aXRfY2FsbGJhY2sqLCAKKyAgICBtb2RzdGF0ZS0+YXRleGl0X2NhbGxiYWNrcyA9IFB5TWVtX05ldyhhdGV4aXRfY2FsbGJhY2sqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHN0YXRlLT5jYWxsYmFja19sZW4pOwogICAgIGlmIChtb2RzdGF0ZS0+YXRleGl0X2NhbGxiYWNrcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvYXVkaW9vcC5jIGIvTW9kdWxlcy9hdWRpb29wLmMKaW5kZXggOWE1ZDhjMS4uM2IwNWFlYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hdWRpb29wLmMKKysrIGIvTW9kdWxlcy9hdWRpb29wLmMKQEAgLTM5MSwxMCArMzkxLDkgQEAKIH0KIAogLypbY2xpbmljIGlucHV0XQotb3V0cHV0IHByZXNldCBmaWxlCiBtb2R1bGUgYXVkaW9vcAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NTYxOWY5MzVmMjY5MTk5YV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9OGZhOGY2NjExYmUzNTkxYV0qLwogCiAvKltjbGluaWMgaW5wdXRdCiBhdWRpb29wLmdldHNhbXBsZQpAQCAtNDA4LDggKzQwNyw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2dldHNhbXBsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgUHlfc3NpemVfdCBpbmRleCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNDQ4MjQ5N2U2ZjZlNzhmIGlucHV0PTg4ZWRiZTI4NzEzOTM1NDldKi8KK2F1ZGlvb3BfZ2V0c2FtcGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGluZGV4KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM5OTVlMTg5ZmRjOGVjMTYgaW5wdXQ9ODhlZGJlMjg3MTM5MzU0OV0qLwogewogICAgIGludCB2YWw7CiAKQEAgLTU5NCw4ICs1OTQsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9maW5kZml0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgUHlfYnVmZmVyICpyZWZlcmVuY2UpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTA1ZmQwNGQ0MjQ0ZGIzMSBpbnB1dD02MmMzMDU2MDVlMTgzYzlhXSovCithdWRpb29wX2ZpbmRmaXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LAorICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpyZWZlcmVuY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjA5ZWVkZjVkODIzZDZkZCBpbnB1dD02MmMzMDU2MDVlMTgzYzlhXSovCiB7CiAgICAgY29uc3Qgc2hvcnQgKmNwMSwgKmNwMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CkBAIC02NjIsOCArNjYzLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfZmluZGZhY3Rvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIFB5X2J1ZmZlciAqcmVmZXJlbmNlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRkZjM1YTFlNTc1NzVjZTQgaW5wdXQ9ODE2NjgwMzAxZDAxMmIyMV0qLworYXVkaW9vcF9maW5kZmFjdG9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqcmVmZXJlbmNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU1NjZhOGM1NWRlNTRmOTkgaW5wdXQ9ODE2NjgwMzAxZDAxMmIyMV0qLwogewogICAgIGNvbnN0IHNob3J0ICpjcDEsICpjcDI7CiAgICAgUHlfc3NpemVfdCBsZW47CkBAIC03MDMsOCArNzA1LDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfZmluZG1heF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIFB5X3NzaXplX3QgbGVuZ3RoKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIxZDBjMmExZTU2NTUxMzQgaW5wdXQ9MmYzMDQ4MDFlZDQyMzgzY10qLworYXVkaW9vcF9maW5kbWF4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwKKyAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAxZmU3OTZmYWQyNTczYmIgaW5wdXQ9MmYzMDQ4MDFlZDQyMzgzY10qLwogewogICAgIGNvbnN0IHNob3J0ICpjcDE7CiAgICAgUHlfc3NpemVfdCBsZW4xOwpAQCAtODk3LDggKzkwMCw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX211bF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgZG91YmxlIGZhY3RvcikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNjk3ZWJiZDU4NTJkMzhmIGlucHV0PWM3MjY2NjdiYWExNTdkM2NdKi8KK2F1ZGlvb3BfbXVsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICBkb3VibGUgZmFjdG9yKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFjN2MzMTE5MWFjODZiMTAgaW5wdXQ9YzcyNjY2N2JhYTE1N2QzY10qLwogewogICAgIHNpZ25lZCBjaGFyICpuY3A7CiAgICAgUHlfc3NpemVfdCBpOwpAQCAtOTM4LDggKzk0Miw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX3RvbW9ub19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgZG91YmxlIGxmYWN0b3IsIGRvdWJsZSByZmFjdG9yKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQzNmU3NzEwNTIxNjYxZGQgaW5wdXQ9YzRlYzk0OWIzZjRkZGRmYV0qLworYXVkaW9vcF90b21vbm9faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBsZmFjdG9yLCBkb3VibGUgcmZhY3RvcikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NTNmNTQ3YzVlMjllM2I2IGlucHV0PWM0ZWM5NDliM2Y0ZGRkZmFdKi8KIHsKICAgICBzaWduZWQgY2hhciAqY3AsICpuY3A7CiAgICAgUHlfc3NpemVfdCBsZW4sIGk7CkBAIC05ODYsOCArOTkxLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfdG9zdGVyZW9faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsIGRvdWJsZSBsZmFjdG9yLCBkb3VibGUgcmZhY3RvcikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZmY1MDY4MWM4N2Y0YzFjIGlucHV0PTI3YjYzOTVlYmZkZmYzN2FdKi8KK2F1ZGlvb3BfdG9zdGVyZW9faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGxmYWN0b3IsIGRvdWJsZSByZmFjdG9yKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY5N2JiNmJhNDFlOWRkMmMgaW5wdXQ9MjdiNjM5NWViZmRmZjM3YV0qLwogewogICAgIHNpZ25lZCBjaGFyICpuY3A7CiAgICAgUHlfc3NpemVfdCBpOwpAQCAtMTAzMyw4ICsxMDM5LDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfYWRkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudDEsIFB5X2J1ZmZlciAqZnJhZ21lbnQyLCBpbnQgd2lkdGgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjkyMThiZjllYTc1YzNmMSBpbnB1dD00YThkNGJhZTRjMTYwNWM3XSovCithdWRpb29wX2FkZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQxLAorICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmZyYWdtZW50MiwgaW50IHdpZHRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlNmMxMmYxNDNlMGIwMjcgaW5wdXQ9NGE4ZDRiYWU0YzE2MDVjN10qLwogewogICAgIHNpZ25lZCBjaGFyICpuY3A7CiAgICAgUHlfc3NpemVfdCBpOwpAQCAtMTA5MSw4ICsxMDk4LDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfYmlhc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgaW50IGJpYXMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGVjODBiM2Y1ZDUxMGE1MSBpbnB1dD0yYjVjY2U1YzNiYjQ4MzhjXSovCithdWRpb29wX2JpYXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICBpbnQgYmlhcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hYzFmNGRkYTIwYTAxYzI2IGlucHV0PTJiNWNjZTVjM2JiNDgzOGNdKi8KIHsKICAgICBzaWduZWQgY2hhciAqbmNwOwogICAgIFB5X3NzaXplX3QgaTsKQEAgLTEyMTgsOCArMTIyNiw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2xpbjJsaW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsIGludCBuZXd3aWR0aCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zZjk0NjhhNzQ0NzJhOTNlIGlucHV0PTVjZTA4YzhhYTJmMjRkOTZdKi8KK2F1ZGlvb3BfbGluMmxpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgIGludCBuZXd3aWR0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYjZjYTk1MGQxZGY5ODk4IGlucHV0PTVjZTA4YzhhYTJmMjRkOTZdKi8KIHsKICAgICB1bnNpZ25lZCBjaGFyICpuY3A7CiAgICAgUHlfc3NpemVfdCBpLCBqOwpAQCAtMTI3NSw4ICsxMjg0LDEwIEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX3JhdGVjdl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgaW50IG5jaGFubmVscywgaW50IGlucmF0ZSwgaW50IG91dHJhdGUsIFB5T2JqZWN0ICpzdGF0ZSwgaW50IHdlaWdodEEsIGludCB3ZWlnaHRCKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU1ODVkZGRjNGI1ZmYyMzYgaW5wdXQ9YWZmM2FjZGM5NDQ3NjE5MV0qLworYXVkaW9vcF9yYXRlY3ZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIGludCBuY2hhbm5lbHMsIGludCBpbnJhdGUsIGludCBvdXRyYXRlLCBQeU9iamVjdCAqc3RhdGUsCisgICAgICAgICAgICAgICAgICAgIGludCB3ZWlnaHRBLCBpbnQgd2VpZ2h0QikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01OWUxNzg3YmZhNDliOWQ5IGlucHV0PWFmZjNhY2RjOTQ0NzYxOTFdKi8KIHsKICAgICBjaGFyICpjcCwgKm5jcDsKICAgICBQeV9zc2l6ZV90IGxlbjsKQEAgLTE2MDIsOCArMTYxMyw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2xpbjJhZHBjbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgUHlPYmplY3QgKnN0YXRlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ2NTRjMjlkMjczMWZhZmUgaW5wdXQ9MTI5MTlkNTQ5YjkwYzkwYV0qLworYXVkaW9vcF9saW4yYWRwY21faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdGF0ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05M2YwOTk2ZjU5MmI1Y2U1IGlucHV0PTEyOTE5ZDU0OWI5MGM5MGFdKi8KIHsKICAgICBzaWduZWQgY2hhciAqbmNwOwogICAgIFB5X3NzaXplX3QgaTsKQEAgLTE3MjksOCArMTc0MSw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2FkcGNtMmxpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgUHlPYmplY3QgKnN0YXRlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM3MTk2NWNkY2MwYWE2OWIgaW5wdXQ9ZjUyMjExNDRmNWNhOWVmMF0qLworYXVkaW9vcF9hZHBjbTJsaW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdGF0ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMzZjZjZkYzJjODI5MTgxIGlucHV0PWY1MjIxMTQ0ZjVjYTllZjBdKi8KIHsKICAgICBzaWduZWQgY2hhciAqY3A7CiAgICAgc2lnbmVkIGNoYXIgKm5jcDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvYmluYXNjaWkuYyBiL01vZHVsZXMvYmluYXNjaWkuYwppbmRleCBlYTE0ZDNjLi5kOTIwZDIzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2JpbmFzY2lpLmMKKysrIGIvTW9kdWxlcy9iaW5hc2NpaS5jCkBAIC01Niw2ICs1Niw3IEBACiAjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInB5c3RyaGV4LmgiCiAjaWZkZWYgVVNFX1pMSUJfQ1JDMzIKICNpbmNsdWRlICJ6bGliLmgiCiAjZW5kaWYKQEAgLTE4NCwxMCArMTg1LDkgQEAKIH07CiAKIC8qW2NsaW5pYyBpbnB1dF0KLW91dHB1dCBwcmVzZXQgZmlsZQogbW9kdWxlIGJpbmFzY2lpCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD00NGM2Zjg0MGNlNzA4ZjBjXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1kZTg5ZmI0NmJjYWYzZmVjXSovCiAKIC8qW3B5dGhvbiBpbnB1dF0KIApAQCAtMTExOCwzMyArMTExOCw3IEBACiBiaW5hc2NpaV9iMmFfaGV4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE3OTMxODkyMmMyZjhmZGEgaW5wdXQ9OTY0MjNjZmEyOTlmZjNiMV0qLwogewotICAgIGNoYXIqIGFyZ2J1ZjsKLSAgICBQeV9zc2l6ZV90IGFyZ2xlbjsKLSAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIGNoYXIqIHJldGJ1ZjsKLSAgICBQeV9zc2l6ZV90IGksIGo7Ci0KLSAgICBhcmdidWYgPSBkYXRhLT5idWY7Ci0gICAgYXJnbGVuID0gZGF0YS0+bGVuOwotCi0gICAgYXNzZXJ0KGFyZ2xlbiA+PSAwKTsKLSAgICBpZiAoYXJnbGVuID4gUFlfU1NJWkVfVF9NQVggLyAyKQotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLQotICAgIHJldHZhbCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYXJnbGVuKjIpOwotICAgIGlmICghcmV0dmFsKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXRidWYgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXR2YWwpOwotCi0gICAgLyogbWFrZSBoZXggdmVyc2lvbiBvZiBzdHJpbmcsIHRha2VuIGZyb20gc2hhbW9kdWxlLmMgKi8KLSAgICBmb3IgKGk9aj0wOyBpIDwgYXJnbGVuOyBpKyspIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjOwotICAgICAgICBjID0gKGFyZ2J1ZltpXSA+PiA0KSAmIDB4ZjsKLSAgICAgICAgcmV0YnVmW2orK10gPSBQeV9oZXhkaWdpdHNbY107Ci0gICAgICAgIGMgPSBhcmdidWZbaV0gJiAweGY7Ci0gICAgICAgIHJldGJ1ZltqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwotICAgIH0KLSAgICByZXR1cm4gcmV0dmFsOworICAgIHJldHVybiBfUHlfc3RyaGV4X2J5dGVzKChjb25zdCBjaGFyICopZGF0YS0+YnVmLCBkYXRhLT5sZW4pOwogfQogCiAvKltjbGluaWMgaW5wdXRdCkBAIC0xMTU5LDcgKzExMzMsNyBAQAogYmluYXNjaWlfaGV4bGlmeV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MDk4NDQwMDkxZmI2MWRjIGlucHV0PTJlM2FmYWU3ZjA4M2YwNjFdKi8KIHsKLSAgICByZXR1cm4gYmluYXNjaWlfYjJhX2hleF9pbXBsKG1vZHVsZSwgZGF0YSk7CisgICAgcmV0dXJuIF9QeV9zdHJoZXhfYnl0ZXMoKGNvbnN0IGNoYXIgKilkYXRhLT5idWYsIGRhdGEtPmxlbik7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTEzODIsOCArMTM1Niw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9iMmFfcXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBxdW90ZXRhYnMsIGludCBpc3RleHQsIGludCBoZWFkZXIpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmYyOTkxYmE2NDBmZmYzZSBpbnB1dD03ZjJhOWFhYTAwOGU5MmIyXSovCitiaW5hc2NpaV9iMmFfcXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBxdW90ZXRhYnMsCisgICAgICAgICAgICAgICAgICAgICBpbnQgaXN0ZXh0LCBpbnQgaGVhZGVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE4N2NhOWNjYjk0ZTJhOWYgaW5wdXQ9N2YyYTlhYWEwMDhlOTJiMl0qLwogewogICAgIFB5X3NzaXplX3QgaW4sIG91dDsKICAgICB1bnNpZ25lZCBjaGFyICpkYXRhYnVmLCAqb2RhdGE7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2lzbzIwMjIuYyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaXNvMjAyMi5jCmluZGV4IDVjNDAxYWEuLjFjZTQyMTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaXNvMjAyMi5jCisrKyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaXNvMjAyMi5jCkBAIC0yOTIsNyArMjkyLDcgQEAKICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbmJ1ZiwgUHlfc3NpemVfdCAqaW5sZWZ0KQogewogICAgIHVuc2lnbmVkIGNoYXIgY2hhcnNldCwgZGVzaWduYXRpb247Ci0gICAgUHlfc3NpemVfdCBpLCBlc2NsZW47CisgICAgUHlfc3NpemVfdCBpLCBlc2NsZW4gPSAwOwogCiAgICAgZm9yIChpID0gMTtpIDwgTUFYX0VTQ1NFUUxFTjtpKyspIHsKICAgICAgICAgaWYgKGkgPj0gKmlubGVmdCkKQEAgLTMwNywxMCArMzA3LDkgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChpID49IE1BWF9FU0NTRVFMRU4pCi0gICAgICAgIHJldHVybiAxOyAvKiB1bnRlcm1pbmF0ZWQgZXNjYXBlIHNlcXVlbmNlICovCi0KICAgICBzd2l0Y2ggKGVzY2xlbikgeworICAgIGNhc2UgMDoKKyAgICAgICAgcmV0dXJuIDE7IC8qIHVudGVybWluYXRlZCBlc2NhcGUgc2VxdWVuY2UgKi8KICAgICBjYXNlIDM6CiAgICAgICAgIGlmIChJTkJZVEUyID09ICckJykgewogICAgICAgICAgICAgY2hhcnNldCA9IElOQllURTMgfCBDSEFSU0VUX0RCQ1M7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9jamtjb2RlY3MuaCBiL01vZHVsZXMvY2prY29kZWNzL2Nqa2NvZGVjcy5oCmluZGV4IGQxNWNjZmIuLjIzNjQyZGYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL2Nqa2NvZGVjcy5oCisrKyBiL01vZHVsZXMvY2prY29kZWNzL2Nqa2NvZGVjcy5oCkBAIC0zNjIsNyArMzYyLDcgQEAKICAgICBpZiAobW9kID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIG8gPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG1vZCwgKGNoYXIqKXN5bWJvbCk7CisgICAgbyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobW9kLCBzeW1ib2wpOwogICAgIGlmIChvID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3JleGl0OwogICAgIGVsc2UgaWYgKCFQeUNhcHN1bGVfSXNWYWxpZChvLCBQeU11bHRpYnl0ZUNvZGVjX0NBUFNVTEVfTkFNRSkpIHsKQEAgLTQwMSw3ICs0MDEsNyBAQAogICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBOVUxMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFB5T2JqZWN0KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5TU9ESU5JVF9GVU5DICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFB5SW5pdF9fY29kZWNzXyMjbG9jKHZvaWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBQeU9iamVjdCAqbSA9IFB5TW9kdWxlX0NyZWF0ZSgmX19tb2R1bGUpOyAgICAgICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvY2xpbmljL211bHRpYnl0ZWNvZGVjLmMuaCBiL01vZHVsZXMvY2prY29kZWNzL2NsaW5pYy9tdWx0aWJ5dGVjb2RlYy5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE0N2ZmOAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2prY29kZWNzL2NsaW5pYy9tdWx0aWJ5dGVjb2RlYy5jLmgKQEAgLTAsMCArMSwzMjAgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlX19kb2NfXywKKyJlbmNvZGUoJHNlbGYsIC8sIGlucHV0LCBlcnJvcnM9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhbiBlbmNvZGVkIHN0cmluZyB2ZXJzaW9uIG9mIGBpbnB1dFwnLlxuIgorIlxuIgorIlwnZXJyb3JzXCcgbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudCBlcnJvciBoYW5kbGluZyBzY2hlbWUuIERlZmF1bHQgaXNcbiIKKyJcJ3N0cmljdFwnIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSBVbmljb2RlRW5jb2RlRXJyb3IuIE90aGVyIHBvc3NpYmxlXG4iCisidmFsdWVzIGFyZSBcJ2lnbm9yZVwnLCBcJ3JlcGxhY2VcJyBhbmQgXCd4bWxjaGFycmVmcmVwbGFjZVwnIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWVcbiIKKyJyZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBVbmljb2RlRW5jb2RlRXJyb3JzLiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVDT0RFQ19FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImVuY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZV9pbXBsKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZShNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqaW5wdXQ7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98ejplbmNvZGUiLCBfa2V5d29yZHMsCisgICAgICAgICZpbnB1dCwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlX2ltcGwoc2VsZiwgaW5wdXQsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGVfX2RvY19fLAorImRlY29kZSgkc2VsZiwgLywgaW5wdXQsIGVycm9ycz1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiRGVjb2RlcyBcJ2lucHV0XCcuXG4iCisiXG4iCisiXCdlcnJvcnNcJyBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gRGVmYXVsdCBpc1xuIgorIlwnc3RyaWN0XCcgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhIFVuaWNvZGVEZWNvZGVFcnJvci4gT3RoZXIgcG9zc2libGVcbiIKKyJ2YWx1ZXMgYXJlIFwnaWdub3JlXCcgYW5kIFwncmVwbGFjZVwnIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoXG4iCisiY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgaXMgYWJsZSB0byBoYW5kbGUgVW5pY29kZURlY29kZUVycm9ycy5cIiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVDT0RFQ19ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZV9pbXBsKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGUoTXVsdGlieXRlQ29kZWNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZXJyb3JzIiwgTlVMTH07CisgICAgUHlfYnVmZmVyIGlucHV0ID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5Knx6OmRlY29kZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmlucHV0LCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGVfaW1wbChzZWxmLCAmaW5wdXQsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgaW5wdXQgKi8KKyAgICBpZiAoaW5wdXQub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmlucHV0KTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZV9fZG9jX18sCisiZW5jb2RlKCRzZWxmLCAvLCBpbnB1dCwgZmluYWw9RmFsc2UpXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVJTkNSRU1FTlRBTEVOQ09ERVJfRU5DT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJlbmNvZGUiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGVfaW1wbChNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlKE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICppbnB1dDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xpOmVuY29kZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmlucHV0LCAmZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGVfaW1wbChzZWxmLCBpbnB1dCwgZmluYWwpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX3Jlc2V0X19kb2NfXywKKyJyZXNldCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMRU5DT0RFUl9SRVNFVF9NRVRIT0RERUYgICAgXAorICAgIHsicmVzZXQiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9yZXNldCwgTUVUSF9OT0FSR1MsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfcmVzZXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfcmVzZXRfaW1wbChNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9yZXNldChNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfcmVzZXRfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlX19kb2NfXywKKyJkZWNvZGUoJHNlbGYsIC8sIGlucHV0LCBmaW5hbD1GYWxzZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMREVDT0RFUl9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZV9pbXBsKE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlKE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OworICAgIFB5X2J1ZmZlciBpbnB1dCA9IHtOVUxMLCBOVUxMfTsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8aTpkZWNvZGUiLCBfa2V5d29yZHMsCisgICAgICAgICZpbnB1dCwgJmZpbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlX2ltcGwoc2VsZiwgJmlucHV0LCBmaW5hbCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgaW5wdXQgKi8KKyAgICBpZiAoaW5wdXQub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmlucHV0KTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX3Jlc2V0X19kb2NfXywKKyJyZXNldCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMREVDT0RFUl9SRVNFVF9NRVRIT0RERUYgICAgXAorICAgIHsicmVzZXQiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9yZXNldCwgTUVUSF9OT0FSR1MsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfcmVzZXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfcmVzZXRfaW1wbChNdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9yZXNldChNdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfcmVzZXRfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZF9fZG9jX18sCisicmVhZCgkc2VsZiwgc2l6ZW9iaj1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNUkVBREVSX1JFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkLCBNRVRIX1ZBUkFSR1MsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkX2ltcGwoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNpemVvYmopOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNpemVvYmogPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZzaXplb2JqKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZF9pbXBsKHNlbGYsIHNpemVvYmopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lX19kb2NfXywKKyJyZWFkbGluZSgkc2VsZiwgc2l6ZW9iaj1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNUkVBREVSX1JFQURMSU5FX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1MsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVfaW1wbChNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNpemVvYmopOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZShNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzaXplb2JqID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJnNpemVvYmopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZV9pbXBsKHNlbGYsIHNpemVvYmopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lc19fZG9jX18sCisicmVhZGxpbmVzKCRzZWxmLCBzaXplaGludG9iaj1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNUkVBREVSX1JFQURMSU5FU19NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVzLCBNRVRIX1ZBUkFSR1MsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lc19pbXBsKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNpemVoaW50b2JqKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVzKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNpemVoaW50b2JqID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lcyIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZzaXplaGludG9iaikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lc19pbXBsKHNlbGYsIHNpemVoaW50b2JqKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZXNldF9fZG9jX18sCisicmVzZXQoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVTVFJFQU1SRUFERVJfUkVTRVRfTUVUSE9EREVGICAgIFwKKyAgICB7InJlc2V0IiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVzZXQsIE1FVEhfTk9BUkdTLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3Jlc2V0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3Jlc2V0X2ltcGwoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVzZXQoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3Jlc2V0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtV3JpdGVyX3dyaXRlX19kb2NfXywKKyJ3cml0ZSgkc2VsZiwgc3Ryb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNV1JJVEVSX1dSSVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtV3JpdGVyX3dyaXRlLCBNRVRIX08sIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfd3JpdGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfd3JpdGVsaW5lc19fZG9jX18sCisid3JpdGVsaW5lcygkc2VsZiwgbGluZXMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVTVFJFQU1XUklURVJfV1JJVEVMSU5FU19NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGVsaW5lcyIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtV3JpdGVyX3dyaXRlbGluZXMsIE1FVEhfTywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVdyaXRlcl93cml0ZWxpbmVzX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtV3JpdGVyX3Jlc2V0X19kb2NfXywKKyJyZXNldCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURVNUUkVBTVdSSVRFUl9SRVNFVF9NRVRIT0RERUYgICAgXAorICAgIHsicmVzZXQiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVdyaXRlcl9yZXNldCwgTUVUSF9OT0FSR1MsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfcmVzZXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfcmVzZXRfaW1wbChNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVdyaXRlcl9yZXNldChNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfcmVzZXRfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19fX2NyZWF0ZV9jb2RlY19fZG9jX18sCisiX19jcmVhdGVfY29kZWMoJG1vZHVsZSwgYXJnLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfX19DUkVBVEVfQ09ERUNfTUVUSE9EREVGICAgIFwKKyAgICB7Il9fY3JlYXRlX2NvZGVjIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19fX2NyZWF0ZV9jb2RlYywgTUVUSF9PLCBfbXVsdGlieXRlY29kZWNfX19jcmVhdGVfY29kZWNfX2RvY19ffSwKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lZWJiMjFlMThjMzA0M2QxIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL211bHRpYnl0ZWNvZGVjLmMgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9tdWx0aWJ5dGVjb2RlYy5jCmluZGV4IGUwZDliNjcuLjcwYTYwNmYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL211bHRpYnl0ZWNvZGVjLmMKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuYwpAQCAtOCw2ICs4LDEzIEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAjaW5jbHVkZSAibXVsdGlieXRlY29kZWMuaCIKKyNpbmNsdWRlICJjbGluaWMvbXVsdGlieXRlY29kZWMuYy5oIgorCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX211bHRpYnl0ZWNvZGVjCitjbGFzcyBfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlQ29kZWMgIk11bHRpYnl0ZUNvZGVjT2JqZWN0ICoiICImTXVsdGlieXRlQ29kZWNfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTZhZDY4OTU0NmNiYjU0NTBdKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0ICAgICAgICAgICAgKmlub2JqOwpAQCAtMjIsMjcgKzI5LDcgQEAKICAgICBfUHlVbmljb2RlV3JpdGVyICAgIHdyaXRlcjsKIH0gTXVsdGlieXRlRGVjb2RlQnVmZmVyOwogCi1QeURvY19TVFJWQVIoTXVsdGlieXRlQ29kZWNfRW5jb2RlX19kb2NfXywKLSJJLmVuY29kZSh1bmljb2RlWywgZXJyb3JzXSkgLT4gKHN0cmluZywgbGVuZ3RoIGNvbnN1bWVkKVxuXAotXG5cCi1SZXR1cm4gYW4gZW5jb2RlZCBzdHJpbmcgdmVyc2lvbiBvZiBgdW5pY29kZScuIGVycm9ycyBtYXkgYmUgZ2l2ZW4gdG9cblwKLXNldCBhIGRpZmZlcmVudCBlcnJvciBoYW5kbGluZyBzY2hlbWUuIERlZmF1bHQgaXMgJ3N0cmljdCcgbWVhbmluZyB0aGF0XG5cCi1lbmNvZGluZyBlcnJvcnMgcmFpc2UgYSBVbmljb2RlRW5jb2RlRXJyb3IuIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmVcblwKLSdpZ25vcmUnLCAncmVwbGFjZScgYW5kICd4bWxjaGFycmVmcmVwbGFjZScgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZVxuXAotcmVnaXN0ZXJlZCB3aXRoIGNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGNhbiBoYW5kbGUgVW5pY29kZUVuY29kZUVycm9ycy4iKTsKLQotUHlEb2NfU1RSVkFSKE11bHRpYnl0ZUNvZGVjX0RlY29kZV9fZG9jX18sCi0iSS5kZWNvZGUoc3RyaW5nWywgZXJyb3JzXSkgLT4gKHVuaWNvZGVvYmplY3QsIGxlbmd0aCBjb25zdW1lZClcblwKLVxuXAotRGVjb2RlcyBgc3RyaW5nJyB1c2luZyBJLCBhbiBNdWx0aWJ5dGVDb2RlYyBpbnN0YW5jZS4gZXJyb3JzIG1heSBiZSBnaXZlblxuXAotdG8gc2V0IGEgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gRGVmYXVsdCBpcyAnc3RyaWN0JyBtZWFuaW5nXG5cCi10aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhIFVuaWNvZGVEZWNvZGVFcnJvci4gT3RoZXIgcG9zc2libGUgdmFsdWVzXG5cCi1hcmUgJ2lnbm9yZScgYW5kICdyZXBsYWNlJyBhcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgd2l0aFxuXAotY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgaXMgYWJsZSB0byBoYW5kbGUgVW5pY29kZURlY29kZUVycm9ycy4iKTsKLQotc3RhdGljIGNoYXIgKmNvZGVja3dhcmdsaXN0W10gPSB7ImlucHV0IiwgImVycm9ycyIsIE5VTEx9Owogc3RhdGljIGNoYXIgKmluY25ld2t3YXJnbGlzdFtdID0geyJlcnJvcnMiLCBOVUxMfTsKLXN0YXRpYyBjaGFyICppbmNyZW1lbnRhbGt3YXJnbGlzdFtdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9Owogc3RhdGljIGNoYXIgKnN0cmVhbWt3YXJnbGlzdFtdID0geyJzdHJlYW0iLCAiZXJyb3JzIiwgTlVMTH07CiAKIHN0YXRpYyBQeU9iamVjdCAqbXVsdGlieXRlY29kZWNfZW5jb2RlKE11bHRpYnl0ZUNvZGVjICosCkBAIC01NTMsMjYgKzU0MCwzNyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlQ29kZWMuZW5jb2RlCisKKyAgaW5wdXQ6IG9iamVjdAorICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKworUmV0dXJuIGFuIGVuY29kZWQgc3RyaW5nIHZlcnNpb24gb2YgYGlucHV0Jy4KKworJ2Vycm9ycycgbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudCBlcnJvciBoYW5kbGluZyBzY2hlbWUuIERlZmF1bHQgaXMKKydzdHJpY3QnIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSBVbmljb2RlRW5jb2RlRXJyb3IuIE90aGVyIHBvc3NpYmxlCit2YWx1ZXMgYXJlICdpZ25vcmUnLCAncmVwbGFjZScgYW5kICd4bWxjaGFycmVmcmVwbGFjZScgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZQorcmVnaXN0ZXJlZCB3aXRoIGNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGNhbiBoYW5kbGUgVW5pY29kZUVuY29kZUVycm9ycy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLU11bHRpYnl0ZUNvZGVjX0VuY29kZShNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGVfaW1wbChNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdiMjY2NTIwNDViYTU2YTkgaW5wdXQ9MDVmNmNlZDNjOGRkMDU4Ml0qLwogewogICAgIE11bHRpYnl0ZUNvZGVjX1N0YXRlIHN0YXRlOwotICAgIFB5T2JqZWN0ICplcnJvcmNiLCAqciwgKmFyZywgKnVjdnQ7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXJyb3JjYiwgKnIsICp1Y3Z0OwogICAgIFB5X3NzaXplX3QgZGF0YWxlbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98ejplbmNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVja3dhcmdsaXN0LCAmYXJnLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhpbnB1dCkpCiAgICAgICAgIHVjdnQgPSBOVUxMOwogICAgIGVsc2UgewotICAgICAgICBhcmcgPSB1Y3Z0ID0gUHlPYmplY3RfU3RyKGFyZyk7Ci0gICAgICAgIGlmIChhcmcgPT0gTlVMTCkKKyAgICAgICAgaW5wdXQgPSB1Y3Z0ID0gUHlPYmplY3RfU3RyKGlucHV0KTsKKyAgICAgICAgaWYgKGlucHV0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhhcmcpKSB7CisgICAgICAgIGVsc2UgaWYgKCFQeVVuaWNvZGVfQ2hlY2soaW5wdXQpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICJjb3VsZG4ndCBjb252ZXJ0IHRoZSBvYmplY3QgdG8gdW5pY29kZS4iKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih1Y3Z0KTsKQEAgLTU4MCwxMSArNTc4LDExIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKGFyZykgPCAwKSB7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShpbnB1dCkgPCAwKSB7CiAgICAgICAgIFB5X1hERUNSRUYodWN2dCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBkYXRhbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoYXJnKTsKKyAgICBkYXRhbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaW5wdXQpOwogCiAgICAgZXJyb3JjYiA9IGludGVybmFsX2Vycm9yX2NhbGxiYWNrKGVycm9ycyk7CiAgICAgaWYgKGVycm9yY2IgPT0gTlVMTCkgewpAQCAtNTk2LDcgKzU5NCw3IEBACiAgICAgICAgIHNlbGYtPmNvZGVjLT5lbmNpbml0KCZzdGF0ZSwgc2VsZi0+Y29kZWMtPmNvbmZpZykgIT0gMCkKICAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAgICAgciA9IG11bHRpYnl0ZWNvZGVjX2VuY29kZShzZWxmLT5jb2RlYywgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICBhcmcsIE5VTEwsIGVycm9yY2IsCisgICAgICAgICAgICAgICAgICAgIGlucHV0LCBOVUxMLCBlcnJvcmNiLAogICAgICAgICAgICAgICAgICAgICBNQkVOQ19GTFVTSCB8IE1CRU5DX1JFU0VUKTsKICAgICBpZiAociA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yZXhpdDsKQEAgLTYxMSwzMSArNjA5LDQxIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVDb2RlYy5kZWNvZGUKKworICBpbnB1dDogUHlfYnVmZmVyCisgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorCitEZWNvZGVzICdpbnB1dCcuCisKKydlcnJvcnMnIG1heSBiZSBnaXZlbiB0byBzZXQgYSBkaWZmZXJlbnQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBEZWZhdWx0IGlzCisnc3RyaWN0JyBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgVW5pY29kZURlY29kZUVycm9yLiBPdGhlciBwb3NzaWJsZQordmFsdWVzIGFyZSAnaWdub3JlJyBhbmQgJ3JlcGxhY2UnIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoCitjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBpcyBhYmxlIHRvIGhhbmRsZSBVbmljb2RlRGVjb2RlRXJyb3JzLiIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLU11bHRpYnl0ZUNvZGVjX0RlY29kZShNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGVfaW1wbChNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZjQxOWY2NWJhZDZjYzc3IGlucHV0PWE3ZDQ1Zjg3Zjc1ZTVlMDJdKi8KIHsKICAgICBNdWx0aWJ5dGVDb2RlY19TdGF0ZSBzdGF0ZTsKICAgICBNdWx0aWJ5dGVEZWNvZGVCdWZmZXIgYnVmOwogICAgIFB5T2JqZWN0ICplcnJvcmNiLCAqcmVzOwotICAgIFB5X2J1ZmZlciBwZGF0YTsKLSAgICBjb25zdCBjaGFyICpkYXRhLCAqZXJyb3JzID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpkYXRhOwogICAgIFB5X3NzaXplX3QgZGF0YWxlbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfHo6ZGVjb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY2t3YXJnbGlzdCwgJnBkYXRhLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZGF0YSA9IHBkYXRhLmJ1ZjsKLSAgICBkYXRhbGVuID0gcGRhdGEubGVuOworICAgIGRhdGEgPSBpbnB1dC0+YnVmOworICAgIGRhdGFsZW4gPSBpbnB1dC0+bGVuOwogCiAgICAgZXJyb3JjYiA9IGludGVybmFsX2Vycm9yX2NhbGxiYWNrKGVycm9ycyk7CiAgICAgaWYgKGVycm9yY2IgPT0gTlVMTCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIGlmIChkYXRhbGVuID09IDApIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwogICAgICAgICBFUlJPUl9ERUNSRUYoZXJyb3JjYik7CiAgICAgICAgIHJldHVybiBtYWtlX3R1cGxlKFB5VW5pY29kZV9OZXcoMCwgMCksIDApOwogICAgIH0KQEAgLTY2OCwxMyArNjc2LDExIEBACiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yZXhpdDsKIAotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKICAgICBQeV9YREVDUkVGKGJ1Zi5leGNvYmopOwogICAgIEVSUk9SX0RFQ1JFRihlcnJvcmNiKTsKICAgICByZXR1cm4gbWFrZV90dXBsZShyZXMsIGRhdGFsZW4pOwogCiBlcnJvcmV4aXQ6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwogICAgIEVSUk9SX0RFQ1JFRihlcnJvcmNiKTsKICAgICBQeV9YREVDUkVGKGJ1Zi5leGNvYmopOwogICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmYnVmLndyaXRlcik7CkBAIC02ODMsMTMgKzY4OSw5IEBACiB9CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgbXVsdGlieXRlY29kZWNfbWV0aG9kc1tdID0gewotICAgIHsiZW5jb2RlIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKU11bHRpYnl0ZUNvZGVjX0VuY29kZSwKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgTXVsdGlieXRlQ29kZWNfRW5jb2RlX19kb2NfX30sCi0gICAgeyJkZWNvZGUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pTXVsdGlieXRlQ29kZWNfRGVjb2RlLAotICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICBNdWx0aWJ5dGVDb2RlY19EZWNvZGVfX2RvY19ffSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9LAorICAgIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVDT0RFQ19FTkNPREVfTUVUSE9EREVGCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURUNPREVDX0RFQ09ERV9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0sCiB9OwogCiBzdGF0aWMgdm9pZApAQCAtNzkxLDggKzc5Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPmVycm9ycywgZmluYWwgPyBNQkVOQ19GTFVTSCB8IE1CRU5DX1JFU0VUIDogMCk7CiAgICAgaWYgKHIgPT0gTlVMTCkgewogICAgICAgICAvKiByZWNvdmVyIHRoZSBvcmlnaW5hbCBwZW5kaW5nIGJ1ZmZlciAqLwotICAgICAgICBQeV9DTEVBUihjdHgtPnBlbmRpbmcpOwotICAgICAgICBjdHgtPnBlbmRpbmcgPSBvcmlncGVuZGluZzsKKyAgICAgICAgUHlfU0VUUkVGKGN0eC0+cGVuZGluZywgb3JpZ3BlbmRpbmcpOwogICAgICAgICBvcmlncGVuZGluZyA9IE5VTEw7CiAgICAgICAgIGdvdG8gZXJyb3JleGl0OwogICAgIH0KQEAgLTg3MywyNiArODc0LDM0IEBACiB9CiAKIAotLyoqCi0gKiBNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXIgb2JqZWN0Ci0gKi8KKy8qW2NsaW5pYyBpbnB1dF0KKyBjbGFzcyBfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyICJNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKiIgIiZNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTNiZTgyOTA5Y2QwODkyNGRdKi8KKworLypbY2xpbmljIGlucHV0XQorX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlci5lbmNvZGUKKworICAgIGlucHV0OiBvYmplY3QKKyAgICBmaW5hbDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW1iaWVuY29kZXJfZW5jb2RlKE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGVfaW1wbChNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEyMzM2MWI2YzUwNWUyYzEgaW5wdXQ9YTM0NWM2ODhmYTY2NGY5Ml0qLwogewotICAgIFB5T2JqZWN0ICpkYXRhOwotICAgIGludCBmaW5hbCA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfGk6ZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50YWxrd2FyZ2xpc3QsICZkYXRhLCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBlbmNvZGVyX2VuY29kZV9zdGF0ZWZ1bChTVEFURUZVTF9FQ1RYKHNlbGYpLCBkYXRhLCBmaW5hbCk7CisgICAgcmV0dXJuIGVuY29kZXJfZW5jb2RlX3N0YXRlZnVsKFNUQVRFRlVMX0VDVFgoc2VsZiksIGlucHV0LCBmaW5hbCk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXIucmVzZXQKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW1iaWVuY29kZXJfcmVzZXQoTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyT2JqZWN0ICpzZWxmKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9yZXNldF9pbXBsKE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNDEyNWQ4ZjUzN2EyNTNmIGlucHV0PTkzMGYwNjc2MDcwN2I2ZWFdKi8KIHsKICAgICAvKiBMb25nZXN0IG91dHB1dDogNCBieXRlcyAoYidceDBGXHgxRihCJykgd2l0aCBJU08gMjAyMiAqLwogICAgIHVuc2lnbmVkIGNoYXIgYnVmZmVyWzRdLCAqb3V0YnVmOwpAQCAtOTA5LDExICs5MTgsOSBAQAogfQogCiBzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIG1iaWVuY29kZXJfbWV0aG9kc1tdID0gewotICAgIHsiZW5jb2RlIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKW1iaWVuY29kZXJfZW5jb2RlLAotICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBOVUxMfSwKLSAgICB7InJlc2V0IiwgICAgICAgICAgIChQeUNGdW5jdGlvbiltYmllbmNvZGVyX3Jlc2V0LAotICAgICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgTlVMTH0sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSwKKyAgICBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFSU5DUkVNRU5UQUxFTkNPREVSX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFSU5DUkVNRU5UQUxFTkNPREVSX1JFU0VUX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfSwKIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMDI0LDI2ICsxMDMxLDMxIEBACiB9OwogCiAKLS8qKgotICogTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyIG9iamVjdAotICovCisvKltjbGluaWMgaW5wdXRdCisgY2xhc3MgX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2RlciAiTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyT2JqZWN0ICoiICImTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1mNjAwM2ZhYWYyY2VhNjkyXSovCisKKy8qW2NsaW5pYyBpbnB1dF0KK19tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXIuZGVjb2RlCisKKyAgICBpbnB1dDogUHlfYnVmZmVyCisgICAgZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1tYmlkZWNvZGVyX2RlY29kZShNdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlX2ltcGwoTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmluYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjliOTA5MGU4YTljZTJiYSBpbnB1dD01NzY2MzFjNjE5MDZkMzlkXSovCiB7CiAgICAgTXVsdGlieXRlRGVjb2RlQnVmZmVyIGJ1ZjsKICAgICBjaGFyICpkYXRhLCAqd2RhdGEgPSBOVUxMOwotICAgIFB5X2J1ZmZlciBwZGF0YTsKICAgICBQeV9zc2l6ZV90IHdzaXplLCBzaXplLCBvcmlncGVuZGluZzsKLSAgICBpbnQgZmluYWwgPSAwOwogICAgIFB5T2JqZWN0ICpyZXM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5KnxpOmRlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgIGluY3JlbWVudGFsa3dhcmdsaXN0LCAmcGRhdGEsICZmaW5hbCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGRhdGEgPSBwZGF0YS5idWY7Ci0gICAgc2l6ZSA9IHBkYXRhLmxlbjsKKyAgICBkYXRhID0gaW5wdXQtPmJ1ZjsKKyAgICBzaXplID0gaW5wdXQtPmxlbjsKIAogICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmYnVmLndyaXRlcik7CiAgICAgYnVmLmV4Y29iaiA9IE5VTEw7CkBAIC0xMDk0LDE0ICsxMTA2LDEyIEBACiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yZXhpdDsKIAotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKICAgICBpZiAod2RhdGEgIT0gZGF0YSkKICAgICAgICAgUHlNZW1fRGVsKHdkYXRhKTsKICAgICBQeV9YREVDUkVGKGJ1Zi5leGNvYmopOwogICAgIHJldHVybiByZXM7CiAKIGVycm9yZXhpdDoKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7CiAgICAgaWYgKHdkYXRhICE9IE5VTEwgJiYgd2RhdGEgIT0gZGF0YSkKICAgICAgICAgUHlNZW1fRGVsKHdkYXRhKTsKICAgICBQeV9YREVDUkVGKGJ1Zi5leGNvYmopOwpAQCAtMTEwOSw4ICsxMTE5LDEzIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXIucmVzZXQKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW1iaWRlY29kZXJfcmVzZXQoTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyT2JqZWN0ICpzZWxmKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9yZXNldF9pbXBsKE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTQyM2IxNzgyYzIzZWQxIGlucHV0PTNiNjNiM2JlODViMmZiNDVdKi8KIHsKICAgICBpZiAoc2VsZi0+Y29kZWMtPmRlY3Jlc2V0ICE9IE5VTEwgJiYKICAgICAgICAgc2VsZi0+Y29kZWMtPmRlY3Jlc2V0KCZzZWxmLT5zdGF0ZSwgc2VsZi0+Y29kZWMtPmNvbmZpZykgIT0gMCkKQEAgLTExMjEsMTEgKzExMzYsOSBAQAogfQogCiBzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIG1iaWRlY29kZXJfbWV0aG9kc1tdID0gewotICAgIHsiZGVjb2RlIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKW1iaWRlY29kZXJfZGVjb2RlLAotICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBOVUxMfSwKLSAgICB7InJlc2V0IiwgICAgICAgICAgIChQeUNGdW5jdGlvbiltYmlkZWNvZGVyX3Jlc2V0LAotICAgICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgTlVMTH0sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSwKKyAgICBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFSU5DUkVNRU5UQUxERUNPREVSX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFSU5DUkVNRU5UQUxERUNPREVSX1JFU0VUX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfSwKIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMjM2LDkgKzEyNDksMTAgQEAKIH07CiAKIAotLyoqCi0gKiBNdWx0aWJ5dGVTdHJlYW1SZWFkZXIgb2JqZWN0Ci0gKi8KKy8qW2NsaW5pYyBpbnB1dF0KKyBjbGFzcyBfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlU3RyZWFtUmVhZGVyICJNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKiIgIk11bHRpYnl0ZVN0cmVhbVJlYWRlcl9UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZDMyMzYzNGI3NDk3NmYwOV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogbWJzdHJlYW1yZWFkZXJfaXJlYWQoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmLApAQCAtMTI2MCwxMCArMTI3NCwxMCBAQAogCiAgICAgICAgIGlmIChzaXplaGludCA8IDApCiAgICAgICAgICAgICBjcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5zdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKiltZXRob2QsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCwgTlVMTCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNyZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPnN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKW1ldGhvZCwgImkiLCBzaXplaGludCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kLCAiaSIsIHNpemVoaW50KTsKICAgICAgICAgaWYgKGNyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3JleGl0OwogCkBAIC0xMzQ1LDE2ICsxMzU5LDIxIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KKyBfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlU3RyZWFtUmVhZGVyLnJlYWQKKworICAgIHNpemVvYmo6IG9iamVjdCA9IE5vbmUKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1tYnN0cmVhbXJlYWRlcl9yZWFkKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRfaW1wbChNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc2l6ZW9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNTYyMWViNzUzNTVkNWI4IGlucHV0PTAxNWIwZDNmZjJmY2E0ODVdKi8KIHsKLSAgICBQeU9iamVjdCAqc2l6ZW9iaiA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzaXplOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZCIsIDAsIDEsICZzaXplb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoc2l6ZW9iaiA9PSBQeV9Ob25lIHx8IHNpemVvYmogPT0gTlVMTCkKKyAgICBpZiAoc2l6ZW9iaiA9PSBQeV9Ob25lKQogICAgICAgICBzaXplID0gLTE7CiAgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKHNpemVvYmopKQogICAgICAgICBzaXplID0gUHlMb25nX0FzU3NpemVfdChzaXplb2JqKTsKQEAgLTEzNjksMTYgKzEzODgsMjEgQEAKICAgICByZXR1cm4gbWJzdHJlYW1yZWFkZXJfaXJlYWQoc2VsZiwgInJlYWQiLCBzaXplKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorIF9tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVTdHJlYW1SZWFkZXIucmVhZGxpbmUKKworICAgIHNpemVvYmo6IG9iamVjdCA9IE5vbmUKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1tYnN0cmVhbXJlYWRlcl9yZWFkbGluZShNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZV9pbXBsKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc2l6ZW9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZmJmYWFlMWVkNDU3YTExIGlucHV0PTQxY2NjNjRmOWJiMGNlYzNdKi8KIHsKLSAgICBQeU9iamVjdCAqc2l6ZW9iaiA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzaXplOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmUiLCAwLCAxLCAmc2l6ZW9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHNpemVvYmogPT0gUHlfTm9uZSB8fCBzaXplb2JqID09IE5VTEwpCisgICAgaWYgKHNpemVvYmogPT0gUHlfTm9uZSkKICAgICAgICAgc2l6ZSA9IC0xOwogICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayhzaXplb2JqKSkKICAgICAgICAgc2l6ZSA9IFB5TG9uZ19Bc1NzaXplX3Qoc2l6ZW9iaik7CkBAIC0xMzkzLDE2ICsxNDE3LDIyIEBACiAgICAgcmV0dXJuIG1ic3RyZWFtcmVhZGVyX2lyZWFkKHNlbGYsICJyZWFkbGluZSIsIHNpemUpOwogfQogCisvKltjbGluaWMgaW5wdXRdCisgX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZVN0cmVhbVJlYWRlci5yZWFkbGluZXMKKworICAgIHNpemVoaW50b2JqOiBvYmplY3QgPSBOb25lCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbWJzdHJlYW1yZWFkZXJfcmVhZGxpbmVzKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lc19pbXBsKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNpemVoaW50b2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU3YzQzMTA3NjhlZDJhZDQgaW5wdXQ9NTQ5MzJmNWQ0ZDg4ZTg4MF0qLwogewotICAgIFB5T2JqZWN0ICpzaXplaGludG9iaiA9IE5VTEwsICpyLCAqc3I7CisgICAgUHlPYmplY3QgKnIsICpzcjsKICAgICBQeV9zc2l6ZV90IHNpemVoaW50OwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmVzIiwgMCwgMSwgJnNpemVoaW50b2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoc2l6ZWhpbnRvYmogPT0gUHlfTm9uZSB8fCBzaXplaGludG9iaiA9PSBOVUxMKQorICAgIGlmIChzaXplaGludG9iaiA9PSBQeV9Ob25lKQogICAgICAgICBzaXplaGludCA9IC0xOwogICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayhzaXplaGludG9iaikpCiAgICAgICAgIHNpemVoaW50ID0gUHlMb25nX0FzU3NpemVfdChzaXplaGludG9iaik7CkBAIC0xNDIzLDggKzE0NTMsMTMgQEAKICAgICByZXR1cm4gc3I7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KKyBfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlU3RyZWFtUmVhZGVyLnJlc2V0CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1tYnN0cmVhbXJlYWRlcl9yZXNldChNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYpCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3Jlc2V0X2ltcGwoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEzODQ5MDM3MGE2ODBhYmMgaW5wdXQ9NWQ0MTQwZGI4NGI1ZTFlMl0qLwogewogICAgIGlmIChzZWxmLT5jb2RlYy0+ZGVjcmVzZXQgIT0gTlVMTCAmJgogICAgICAgICBzZWxmLT5jb2RlYy0+ZGVjcmVzZXQoJnNlbGYtPnN0YXRlLCBzZWxmLT5jb2RlYy0+Y29uZmlnKSAhPSAwKQpAQCAtMTQzNSwxNCArMTQ3MCwxMCBAQAogfQogCiBzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIG1ic3RyZWFtcmVhZGVyX21ldGhvZHNbXSA9IHsKLSAgICB7InJlYWQiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbiltYnN0cmVhbXJlYWRlcl9yZWFkLAotICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsIE5VTEx9LAotICAgIHsicmVhZGxpbmUiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKW1ic3RyZWFtcmVhZGVyX3JlYWRsaW5lLAotICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsIE5VTEx9LAotICAgIHsicmVhZGxpbmVzIiwgICAgICAgKFB5Q0Z1bmN0aW9uKW1ic3RyZWFtcmVhZGVyX3JlYWRsaW5lcywKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCBOVUxMfSwKLSAgICB7InJlc2V0IiwgICAgICAgICAgIChQeUNGdW5jdGlvbiltYnN0cmVhbXJlYWRlcl9yZXNldCwKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVTVFJFQU1SRUFERVJfUkVBRF9NRVRIT0RERUYKKyAgICBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNUkVBREVSX1JFQURMSU5FX01FVEhPRERFRgorICAgIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVTVFJFQU1SRUFERVJfUkVBRExJTkVTX01FVEhPRERFRgorICAgIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVTVFJFQU1SRUFERVJfUkVTRVRfTUVUSE9EREVGCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSwKIH07CiAKQEAgLTE1NjUsOSArMTU5NiwxMCBAQAogfTsKIAogCi0vKioKLSAqIE11bHRpYnl0ZVN0cmVhbVdyaXRlciBvYmplY3QKLSAqLworLypbY2xpbmljIGlucHV0XQorIGNsYXNzIF9tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVTdHJlYW1Xcml0ZXIgIk11bHRpYnl0ZVN0cmVhbVdyaXRlck9iamVjdCAqIiAiJk11bHRpYnl0ZVN0cmVhbVdyaXRlcl9UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9Y2RlMjI3ODBhMjE1ZDZhY10qLwogCiBzdGF0aWMgaW50CiBtYnN0cmVhbXdyaXRlcl9pd3JpdGUoTXVsdGlieXRlU3RyZWFtV3JpdGVyT2JqZWN0ICpzZWxmLApAQCAtMTU4OCw4ICsxNjIwLDE3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KKyBfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlU3RyZWFtV3JpdGVyLndyaXRlCisKKyAgICBzdHJvYmo6IG9iamVjdAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW1ic3RyZWFtd3JpdGVyX3dyaXRlKE11bHRpYnl0ZVN0cmVhbVdyaXRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cm9iaikKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfd3JpdGUoTXVsdGlieXRlU3RyZWFtV3JpdGVyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Ryb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUxM2FlODQxYzg5NTI1MWUgaW5wdXQ9NTUxZGM0YzAxOGMxMGEyYl0qLwogewogICAgIGlmIChtYnN0cmVhbXdyaXRlcl9pd3JpdGUoc2VsZiwgc3Ryb2JqKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNTk3LDggKzE2MzgsMTcgQEAKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KKyBfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlU3RyZWFtV3JpdGVyLndyaXRlbGluZXMKKworICAgIGxpbmVzOiBvYmplY3QKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1tYnN0cmVhbXdyaXRlcl93cml0ZWxpbmVzKE11bHRpYnl0ZVN0cmVhbVdyaXRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmxpbmVzKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVdyaXRlcl93cml0ZWxpbmVzKE11bHRpYnl0ZVN0cmVhbVdyaXRlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbGluZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTVjNDI4NWFjOGU3ZDUyMiBpbnB1dD01Nzc5N2ZlNzAwOGQ0ZTk2XSovCiB7CiAgICAgUHlPYmplY3QgKnN0cm9iajsKICAgICBpbnQgaSwgcjsKQEAgLTE2MjQsOCArMTY3NCwxMyBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCisgX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZVN0cmVhbVdyaXRlci5yZXNldAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbWJzdHJlYW13cml0ZXJfcmVzZXQoTXVsdGlieXRlU3RyZWFtV3JpdGVyT2JqZWN0ICpzZWxmKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVdyaXRlcl9yZXNldF9pbXBsKE11bHRpYnl0ZVN0cmVhbVdyaXRlck9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZjU0YTRkOWIwM2RiNWZmIGlucHV0PWI1NmRiY2JhZjM1Y2MxMGNdKi8KIHsKICAgICBQeU9iamVjdCAqcHdydDsKIApAQCAtMTcyNywxMyArMTc4MiwxMCBAQAogfQogCiBzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIG1ic3RyZWFtd3JpdGVyX21ldGhvZHNbXSA9IHsKLSAgICB7IndyaXRlIiwgICAgICAgICAgIChQeUNGdW5jdGlvbiltYnN0cmVhbXdyaXRlcl93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9PLCBOVUxMfSwKLSAgICB7IndyaXRlbGluZXMiLCAgICAgIChQeUNGdW5jdGlvbiltYnN0cmVhbXdyaXRlcl93cml0ZWxpbmVzLAotICAgICAgICAgICAgICAgICAgICBNRVRIX08sIE5VTEx9LAotICAgIHsicmVzZXQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKW1ic3RyZWFtd3JpdGVyX3Jlc2V0LAotICAgICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgTlVMTH0sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSwKKyAgICBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNV1JJVEVSX1dSSVRFX01FVEhPRERFRgorICAgIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVTVFJFQU1XUklURVJfV1JJVEVMSU5FU19NRVRIT0RERUYKKyAgICBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNV1JJVEVSX1JFU0VUX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfSwKIH07CiAKIHN0YXRpYyBQeU1lbWJlckRlZiBtYnN0cmVhbXdyaXRlcl9tZW1iZXJzW10gPSB7CkBAIC0xNzg3LDEyICsxODM5LDE2IEBACiB9OwogCiAKLS8qKgotICogRXhwb3NlZCBmYWN0b3J5IGZ1bmN0aW9uCi0gKi8KKy8qW2NsaW5pYyBpbnB1dF0KK19tdWx0aWJ5dGVjb2RlYy5fX2NyZWF0ZV9jb2RlYworCisgICAgYXJnOiBvYmplY3QKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fX2NyZWF0ZV9jb2RlYyhQeU9iamVjdCAqaWdub3JlLCBQeU9iamVjdCAqYXJnKQorX211bHRpYnl0ZWNvZGVjX19fY3JlYXRlX2NvZGVjKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmJlNzRmNjUxMDY0MDE2MyBpbnB1dD02ODQwYjJhNmIxODNmY2ZhXSovCiB7CiAgICAgTXVsdGlieXRlQ29kZWNPYmplY3QgKnNlbGY7CiAgICAgTXVsdGlieXRlQ29kZWMgKmNvZGVjOwpAQCAtMTgxNSw3ICsxODcxLDcgQEAKIH0KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBfX21ldGhvZHNbXSA9IHsKLSAgICB7Il9fY3JlYXRlX2NvZGVjIiwgKFB5Q0Z1bmN0aW9uKV9fY3JlYXRlX2NvZGVjLCBNRVRIX099LAorICAgIF9NVUxUSUJZVEVDT0RFQ19fX0NSRUFURV9DT0RFQ19NRVRIT0RERUYKICAgICB7TlVMTCwgTlVMTH0sCiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fYnoybW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19iejJtb2R1bGUuYy5oCmluZGV4IDhhMjAxYTAuLjNlZDgzMDMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19iejJtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19iejJtb2R1bGUuYy5oCkBAIC0xNCwyMCArMTQsMTggQEAKICJmbHVzaCgpIG1ldGhvZCB0byBmaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MuIik7CiAKICNkZWZpbmUgX0JaMl9CWjJDT01QUkVTU09SX0NPTVBSRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfYnoyX0JaMkNvbXByZXNzb3JfY29tcHJlc3MsIE1FVEhfVkFSQVJHUywgX2J6Ml9CWjJDb21wcmVzc29yX2NvbXByZXNzX19kb2NfX30sCisgICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfYnoyX0JaMkNvbXByZXNzb3JfY29tcHJlc3MsIE1FVEhfTywgX2J6Ml9CWjJDb21wcmVzc29yX2NvbXByZXNzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfYnoyX0JaMkNvbXByZXNzb3JfY29tcHJlc3NfaW1wbChCWjJDb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2J6Ml9CWjJDb21wcmVzc29yX2NvbXByZXNzKEJaMkNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2J6Ml9CWjJDb21wcmVzc29yX2NvbXByZXNzKEJaMkNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqOmNvbXByZXNzIiwKLSAgICAgICAgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6Y29tcHJlc3MiLCAmZGF0YSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBfYnoyX0JaMkNvbXByZXNzb3JfY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSk7CiAKQEAgLTg0LDggKzgyLDcgQEAKICAgICBpZiAoKFB5X1RZUEUoc2VsZikgPT0gJkJaMkNvbXByZXNzb3JfVHlwZSkgJiYKICAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJCWjJDb21wcmVzc29yIiwga3dhcmdzKSkKICAgICAgICAgZ290byBleGl0OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAifGk6QloyQ29tcHJlc3NvciIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpCWjJDb21wcmVzc29yIiwKICAgICAgICAgJmNvbXByZXNzbGV2ZWwpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gX2J6Ml9CWjJDb21wcmVzc29yX19faW5pdF9fX2ltcGwoKEJaMkNvbXByZXNzb3IgKilzZWxmLCBjb21wcmVzc2xldmVsKTsKQEAgLTk1LDM0ICs5Miw0MyBAQAogfQogCiBQeURvY19TVFJWQVIoX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX18sCi0iZGVjb21wcmVzcygkc2VsZiwgZGF0YSwgLylcbiIKKyJkZWNvbXByZXNzKCRzZWxmLCAvLCBkYXRhLCBtYXhfbGVuZ3RoPS0xKVxuIgogIi0tXG4iCiAiXG4iCi0iUHJvdmlkZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LlxuIgorIkRlY29tcHJlc3MgKmRhdGEqLCByZXR1cm5pbmcgdW5jb21wcmVzc2VkIGRhdGEgYXMgYnl0ZXMuXG4iCiAiXG4iCi0iUmV0dXJucyBhIGNodW5rIG9mIGRlY29tcHJlc3NlZCBkYXRhIGlmIHBvc3NpYmxlLCBvciBiXCdcJyBvdGhlcndpc2UuXG4iCisiSWYgKm1heF9sZW5ndGgqIGlzIG5vbm5lZ2F0aXZlLCByZXR1cm5zIGF0IG1vc3QgKm1heF9sZW5ndGgqIGJ5dGVzIG9mXG4iCisiZGVjb21wcmVzc2VkIGRhdGEuIElmIHRoaXMgbGltaXQgaXMgcmVhY2hlZCBhbmQgZnVydGhlciBvdXRwdXQgY2FuIGJlXG4iCisicHJvZHVjZWQsICpzZWxmLm5lZWRzX2lucHV0KiB3aWxsIGJlIHNldCB0byBgYEZhbHNlYGAuIEluIHRoaXMgY2FzZSwgdGhlIG5leHRcbiIKKyJjYWxsIHRvICpkZWNvbXByZXNzKCkqIG1heSBwcm92aWRlICpkYXRhKiBhcyBiXCdcJyB0byBvYnRhaW4gbW9yZSBvZiB0aGUgb3V0cHV0LlxuIgogIlxuIgotIkF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIHJlYWNoZWRcbiIKLSJyYWlzZXMgYW4gRU9GRXJyb3IuICBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBzdHJlYW1cbiIKLSJpcyBpZ25vcmVkIGFuZCBzYXZlZCBpbiB0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLiIpOworIklmIGFsbCBvZiB0aGUgaW5wdXQgZGF0YSB3YXMgZGVjb21wcmVzc2VkIGFuZCByZXR1cm5lZCAoZWl0aGVyIGJlY2F1c2UgdGhpc1xuIgorIndhcyBsZXNzIHRoYW4gKm1heF9sZW5ndGgqIGJ5dGVzLCBvciBiZWNhdXNlICptYXhfbGVuZ3RoKiB3YXMgbmVnYXRpdmUpLFxuIgorIipzZWxmLm5lZWRzX2lucHV0KiB3aWxsIGJlIHNldCB0byBUcnVlLlxuIgorIlxuIgorIkF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIHJlYWNoZWQgcmFpc2VzIGFuXG4iCisiRU9GRXJyb3IuICBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gaXMgaWdub3JlZCBhbmQgc2F2ZWQgaW5cbiIKKyJ0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLiIpOwogCiAjZGVmaW5lIF9CWjJfQloyREVDT01QUkVTU09SX0RFQ09NUFJFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLCBfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19kb2NfX30sCisgICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKV9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoQloyRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEpOworX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkYXRhIiwgIm1heF9sZW5ndGgiLCBOVUxMfTsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGggPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSo6ZGVjb21wcmVzcyIsCi0gICAgICAgICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5KnxuOmRlY29tcHJlc3MiLCBfa2V5d29yZHMsCisgICAgICAgICZkYXRhLCAmbWF4X2xlbmd0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEpOworICAgIHJldHVybl92YWx1ZSA9IF9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSwgbWF4X2xlbmd0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwpAQCAtMTU5LDQgKzE2NSw0IEBACiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjFjYTQ0MDU1MTlhMDkzMSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmVmMjliNzZiMzMxNGZjNyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fY29kZWNzbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19jb2RlY3Ntb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5NGJlMTEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fY29kZWNzbW9kdWxlLmMuaApAQCAtMCwwICsxLDEzOTYgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3JlZ2lzdGVyX19kb2NfXywKKyJyZWdpc3RlcigkbW9kdWxlLCBzZWFyY2hfZnVuY3Rpb24sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWdpc3RlciBhIGNvZGVjIHNlYXJjaCBmdW5jdGlvbi5cbiIKKyJcbiIKKyJTZWFyY2ggZnVuY3Rpb25zIGFyZSBleHBlY3RlZCB0byB0YWtlIG9uZSBhcmd1bWVudCwgdGhlIGVuY29kaW5nIG5hbWUgaW5cbiIKKyJhbGwgbG93ZXIgY2FzZSBsZXR0ZXJzLCBhbmQgZWl0aGVyIHJldHVybiBOb25lLCBvciBhIHR1cGxlIG9mIGZ1bmN0aW9uc1xuIgorIihlbmNvZGVyLCBkZWNvZGVyLCBzdHJlYW1fcmVhZGVyLCBzdHJlYW1fd3JpdGVyKSAob3IgYSBDb2RlY0luZm8gb2JqZWN0KS4iKTsKKworI2RlZmluZSBfQ09ERUNTX1JFR0lTVEVSX01FVEhPRERFRiAgICBcCisgICAgeyJyZWdpc3RlciIsIChQeUNGdW5jdGlvbilfY29kZWNzX3JlZ2lzdGVyLCBNRVRIX08sIF9jb2RlY3NfcmVnaXN0ZXJfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfbG9va3VwX19kb2NfXywKKyJsb29rdXAoJG1vZHVsZSwgZW5jb2RpbmcsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJMb29rcyB1cCBhIGNvZGVjIHR1cGxlIGluIHRoZSBQeXRob24gY29kZWMgcmVnaXN0cnkgYW5kIHJldHVybnMgYSBDb2RlY0luZm8gb2JqZWN0LiIpOworCisjZGVmaW5lIF9DT0RFQ1NfTE9PS1VQX01FVEhPRERFRiAgICBcCisgICAgeyJsb29rdXAiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19sb29rdXAsIE1FVEhfTywgX2NvZGVjc19sb29rdXBfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbG9va3VwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqZW5jb2RpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19sb29rdXAoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICplbmNvZGluZzsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpsb29rdXAiLCAmZW5jb2RpbmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19sb29rdXBfaW1wbChtb2R1bGUsIGVuY29kaW5nKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19lbmNvZGVfX2RvY19fLAorImVuY29kZSgkbW9kdWxlLCAvLCBvYmosIGVuY29kaW5nPVwndXRmLThcJywgZXJyb3JzPVwnc3RyaWN0XCcpXG4iCisiLS1cbiIKKyJcbiIKKyJFbmNvZGVzIG9iaiB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuXG4iCisiXG4iCisiVGhlIGRlZmF1bHQgZW5jb2RpbmcgaXMgXCd1dGYtOFwnLiAgZXJyb3JzIG1heSBiZSBnaXZlbiB0byBzZXQgYVxuIgorImRpZmZlcmVudCBlcnJvciBoYW5kbGluZyBzY2hlbWUuICBEZWZhdWx0IGlzIFwnc3RyaWN0XCcgbWVhbmluZyB0aGF0IGVuY29kaW5nXG4iCisiZXJyb3JzIHJhaXNlIGEgVmFsdWVFcnJvci4gIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgXCdpZ25vcmVcJywgXCdyZXBsYWNlXCdcbiIKKyJhbmQgXCdiYWNrc2xhc2hyZXBsYWNlXCcgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGhcbiIKKyJjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBjYW4gaGFuZGxlIFZhbHVlRXJyb3JzLiIpOworCisjZGVmaW5lIF9DT0RFQ1NfRU5DT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJlbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19lbmNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfY29kZWNzX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsib2JqIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfHNzOmVuY29kZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJm9iaiwgJmVuY29kaW5nLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfZW5jb2RlX2ltcGwobW9kdWxlLCBvYmosIGVuY29kaW5nLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2RlY29kZV9fZG9jX18sCisiZGVjb2RlKCRtb2R1bGUsIC8sIG9iaiwgZW5jb2Rpbmc9XCd1dGYtOFwnLCBlcnJvcnM9XCdzdHJpY3RcJylcbiIKKyItLVxuIgorIlxuIgorIkRlY29kZXMgb2JqIHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciBlbmNvZGluZy5cbiIKKyJcbiIKKyJEZWZhdWx0IGVuY29kaW5nIGlzIFwndXRmLThcJy4gIGVycm9ycyBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGFcbiIKKyJkaWZmZXJlbnQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiAgRGVmYXVsdCBpcyBcJ3N0cmljdFwnIG1lYW5pbmcgdGhhdCBlbmNvZGluZ1xuIgorImVycm9ycyByYWlzZSBhIFZhbHVlRXJyb3IuICBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlIFwnaWdub3JlXCcsIFwncmVwbGFjZVwnXG4iCisiYW5kIFwnYmFja3NsYXNocmVwbGFjZVwnIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoXG4iCisiY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBWYWx1ZUVycm9ycy4iKTsKKworI2RlZmluZSBfQ09ERUNTX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2NvZGVjc19kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im9iaiIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xzczpkZWNvZGUiLCBfa2V5d29yZHMsCisgICAgICAgICZvYmosICZlbmNvZGluZywgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2RlY29kZV9pbXBsKG1vZHVsZSwgb2JqLCBlbmNvZGluZywgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19fZm9yZ2V0X2NvZGVjX19kb2NfXywKKyJfZm9yZ2V0X2NvZGVjKCRtb2R1bGUsIGVuY29kaW5nLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUHVyZ2UgdGhlIG5hbWVkIGNvZGVjIGZyb20gdGhlIGludGVybmFsIGNvZGVjIGxvb2t1cCBjYWNoZSIpOworCisjZGVmaW5lIF9DT0RFQ1NfX0ZPUkdFVF9DT0RFQ19NRVRIT0RERUYgICAgXAorICAgIHsiX2ZvcmdldF9jb2RlYyIsIChQeUNGdW5jdGlvbilfY29kZWNzX19mb3JnZXRfY29kZWMsIE1FVEhfTywgX2NvZGVjc19fZm9yZ2V0X2NvZGVjX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX19mb3JnZXRfY29kZWNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICplbmNvZGluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX19mb3JnZXRfY29kZWMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICplbmNvZGluZzsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpfZm9yZ2V0X2NvZGVjIiwgJmVuY29kaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfX2ZvcmdldF9jb2RlY19pbXBsKG1vZHVsZSwgZW5jb2RpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2VzY2FwZV9kZWNvZGVfX2RvY19fLAorImVzY2FwZV9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfRVNDQVBFX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZXNjYXBlX2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2VzY2FwZV9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19lc2NhcGVfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2VzY2FwZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19lc2NhcGVfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqfHo6ZXNjYXBlX2RlY29kZSIsCisgICAgICAgICZkYXRhLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfZXNjYXBlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2VzY2FwZV9lbmNvZGVfX2RvY19fLAorImVzY2FwZV9lbmNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfRVNDQVBFX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZXNjYXBlX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2VzY2FwZV9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19lc2NhcGVfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2VzY2FwZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2VzY2FwZV9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRhdGE7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyF8ejplc2NhcGVfZW5jb2RlIiwKKyAgICAgICAgJlB5Qnl0ZXNfVHlwZSwgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19lc2NhcGVfZW5jb2RlX2ltcGwobW9kdWxlLCBkYXRhLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3VuaWNvZGVfaW50ZXJuYWxfZGVjb2RlX19kb2NfXywKKyJ1bmljb2RlX2ludGVybmFsX2RlY29kZSgkbW9kdWxlLCBvYmosIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VOSUNPREVfSU5URVJOQUxfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1bmljb2RlX2ludGVybmFsX2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3VuaWNvZGVfaW50ZXJuYWxfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3VuaWNvZGVfaW50ZXJuYWxfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnVuaWNvZGVfaW50ZXJuYWxfZGVjb2RlIiwKKyAgICAgICAgJm9iaiwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3VuaWNvZGVfaW50ZXJuYWxfZGVjb2RlX2ltcGwobW9kdWxlLCBvYmosIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzdfZGVjb2RlX19kb2NfXywKKyJ1dGZfN19kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGZpbmFsPUZhbHNlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl83X0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzdfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzdfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzdfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl83X2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfN19kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfN19kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzdfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3V0Zl84X2RlY29kZV9fZG9jX18sCisidXRmXzhfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfOF9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl84X2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl84X2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl84X2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfOF9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzhfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGZpbmFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzhfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl84X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMTZfZGVjb2RlX19kb2NfXywKKyJ1dGZfMTZfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfMTZfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfMTZfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzE2X2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl8xNl9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8xNl9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMTZfbGVfZGVjb2RlX19kb2NfXywKKyJ1dGZfMTZfbGVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfMTZfTEVfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfMTZfbGVfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzE2X2xlX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl8xNl9sZV9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2xlX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2xlX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8xNl9sZV9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2xlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMTZfYmVfZGVjb2RlX19kb2NfXywKKyJ1dGZfMTZfYmVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfMTZfQkVfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfMTZfYmVfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzE2X2JlX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl8xNl9iZV9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2JlX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2JlX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8xNl9iZV9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2JlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMTZfZXhfZGVjb2RlX19kb2NfXywKKyJ1dGZfMTZfZXhfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBieXRlb3JkZXI9MCwgZmluYWw9RmFsc2UsXG4iCisiICAgICAgICAgICAgICAgICAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl8xNl9FWF9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl8xNl9leF9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfMTZfZXhfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzE2X2V4X2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMTZfZXhfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyLCBpbnQgZmluYWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMTZfZXhfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGJ5dGVvcmRlciA9IDA7CisgICAgaW50IGZpbmFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emlpOnV0Zl8xNl9leF9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmJ5dGVvcmRlciwgJmZpbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2V4X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgYnl0ZW9yZGVyLCBmaW5hbCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3V0Zl8zMl9kZWNvZGVfX2RvY19fLAorInV0Zl8zMl9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGZpbmFsPUZhbHNlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl8zMl9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl8zMl9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfMzJfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzMyX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGZpbmFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzMyX2RlY29kZSIsCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3V0Zl8zMl9sZV9kZWNvZGVfX2RvY19fLAorInV0Zl8zMl9sZV9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGZpbmFsPUZhbHNlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl8zMl9MRV9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl8zMl9sZV9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfMzJfbGVfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzMyX2xlX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfbGVfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfbGVfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGZpbmFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzMyX2xlX2RlY29kZSIsCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfbGVfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3V0Zl8zMl9iZV9kZWNvZGVfX2RvY19fLAorInV0Zl8zMl9iZV9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGZpbmFsPUZhbHNlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl8zMl9CRV9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl8zMl9iZV9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfMzJfYmVfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzMyX2JlX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfYmVfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfYmVfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGZpbmFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzMyX2JlX2RlY29kZSIsCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfYmVfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3V0Zl8zMl9leF9kZWNvZGVfX2RvY19fLAorInV0Zl8zMl9leF9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGJ5dGVvcmRlcj0wLCBmaW5hbD1GYWxzZSxcbiIKKyIgICAgICAgICAgICAgICAgIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzMyX0VYX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzMyX2V4X2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8zMl9leF9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMzJfZXhfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8zMl9leF9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBieXRlb3JkZXIsIGludCBmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8zMl9leF9kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgYnl0ZW9yZGVyID0gMDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aWk6dXRmXzMyX2V4X2RlY29kZSIsCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmYnl0ZW9yZGVyLCAmZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfZXhfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBieXRlb3JkZXIsIGZpbmFsKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZGVjb2RlX19kb2NfXywKKyJ1bmljb2RlX2VzY2FwZV9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVU5JQ09ERV9FU0NBUEVfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1bmljb2RlX2VzY2FwZV9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191bmljb2RlX2VzY2FwZV9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191bmljb2RlX2VzY2FwZV9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdW5pY29kZV9lc2NhcGVfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191bmljb2RlX2VzY2FwZV9kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyp8ejp1bmljb2RlX2VzY2FwZV9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9kZWNvZGVfX2RvY19fLAorInJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfUkFXX1VOSUNPREVfRVNDQVBFX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsicmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqfHo6cmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZSIsCisgICAgICAgICZkYXRhLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2xhdGluXzFfZGVjb2RlX19kb2NfXywKKyJsYXRpbl8xX2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19MQVRJTl8xX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsibGF0aW5fMV9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19sYXRpbl8xX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX2xhdGluXzFfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2xhdGluXzFfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2xhdGluXzFfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHo6bGF0aW5fMV9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2xhdGluXzFfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfYXNjaWlfZGVjb2RlX19kb2NfXywKKyJhc2NpaV9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfQVNDSUlfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJhc2NpaV9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19hc2NpaV9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19hc2NpaV9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfYXNjaWlfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19hc2NpaV9kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8ejphc2NpaV9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2FzY2lpX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2NoYXJtYXBfZGVjb2RlX19kb2NfXywKKyJjaGFybWFwX2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgbWFwcGluZz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX0NIQVJNQVBfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJjaGFybWFwX2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2NoYXJtYXBfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfY2hhcm1hcF9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfY2hhcm1hcF9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBQeU9iamVjdCAqbWFwcGluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NoYXJtYXBfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgUHlPYmplY3QgKm1hcHBpbmcgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6TzpjaGFybWFwX2RlY29kZSIsCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmbWFwcGluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NoYXJtYXBfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBtYXBwaW5nKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9NQkNTKQorCitQeURvY19TVFJWQVIoX2NvZGVjc19tYmNzX2RlY29kZV9fZG9jX18sCisibWJjc19kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGZpbmFsPUZhbHNlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX01CQ1NfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJtYmNzX2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX21iY3NfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfbWJjc19kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbWJjc19kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19tYmNzX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOm1iY3NfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX21iY3NfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTUJDUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9NQkNTKQorCitQeURvY19TVFJWQVIoX2NvZGVjc19jb2RlX3BhZ2VfZGVjb2RlX19kb2NfXywKKyJjb2RlX3BhZ2VfZGVjb2RlKCRtb2R1bGUsIGNvZGVwYWdlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfQ09ERV9QQUdFX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiY29kZV9wYWdlX2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2NvZGVfcGFnZV9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19jb2RlX3BhZ2VfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NvZGVfcGFnZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgY29kZXBhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmRhdGEsIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfY29kZV9wYWdlX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY29kZXBhZ2U7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSp8emk6Y29kZV9wYWdlX2RlY29kZSIsCisgICAgICAgICZjb2RlcGFnZSwgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NvZGVfcGFnZV9kZWNvZGVfaW1wbChtb2R1bGUsIGNvZGVwYWdlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTUJDUykgKi8KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfcmVhZGJ1ZmZlcl9lbmNvZGVfX2RvY19fLAorInJlYWRidWZmZXJfZW5jb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1JFQURCVUZGRVJfRU5DT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYnVmZmVyX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfcmVhZGJ1ZmZlcl9lbmNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfcmVhZGJ1ZmZlcl9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfcmVhZGJ1ZmZlcl9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyp8ejpyZWFkYnVmZmVyX2VuY29kZSIsCisgICAgICAgICZkYXRhLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfcmVhZGJ1ZmZlcl9lbmNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191bmljb2RlX2ludGVybmFsX2VuY29kZV9fZG9jX18sCisidW5pY29kZV9pbnRlcm5hbF9lbmNvZGUoJG1vZHVsZSwgb2JqLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VTklDT0RFX0lOVEVSTkFMX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidW5pY29kZV9pbnRlcm5hbF9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191bmljb2RlX2ludGVybmFsX2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3VuaWNvZGVfaW50ZXJuYWxfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3VuaWNvZGVfaW50ZXJuYWxfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191bmljb2RlX2ludGVybmFsX2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1bmljb2RlX2ludGVybmFsX2VuY29kZSIsCisgICAgICAgICZvYmosICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191bmljb2RlX2ludGVybmFsX2VuY29kZV9pbXBsKG1vZHVsZSwgb2JqLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3V0Zl83X2VuY29kZV9fZG9jX18sCisidXRmXzdfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzdfRU5DT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfN19lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfN19lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfN19lbmNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzdfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzdfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl83X2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfN19lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfOF9lbmNvZGVfX2RvY19fLAorInV0Zl84X2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl84X0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzhfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzhfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzhfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl84X2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl84X2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfOF9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzhfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzE2X2VuY29kZV9fZG9jX18sCisidXRmXzE2X2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCBieXRlb3JkZXI9MCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfMTZfRU5DT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfMTZfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzE2X2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl8xNl9lbmNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBieXRlb3JkZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMTZfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgYnl0ZW9yZGVyID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6aTp1dGZfMTZfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycywgJmJ5dGVvcmRlcikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzLCBieXRlb3JkZXIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3V0Zl8xNl9sZV9lbmNvZGVfX2RvY19fLAorInV0Zl8xNl9sZV9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfMTZfTEVfRU5DT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfMTZfbGVfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzE2X2xlX2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl8xNl9sZV9lbmNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2xlX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMTZfbGVfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl8xNl9sZV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2xlX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3V0Zl8xNl9iZV9lbmNvZGVfX2RvY19fLAorInV0Zl8xNl9iZV9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfMTZfQkVfRU5DT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfMTZfYmVfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzE2X2JlX2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl8xNl9iZV9lbmNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2JlX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMTZfYmVfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl8xNl9iZV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2JlX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3V0Zl8zMl9lbmNvZGVfX2RvY19fLAorInV0Zl8zMl9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgYnl0ZW9yZGVyPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzMyX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzMyX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8zMl9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMzJfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8zMl9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGJ5dGVvcmRlciA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98emk6dXRmXzMyX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMsICZieXRlb3JkZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycywgYnl0ZW9yZGVyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMzJfbGVfZW5jb2RlX19kb2NfXywKKyJ1dGZfMzJfbGVfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzMyX0xFX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzMyX2xlX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8zMl9sZV9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMzJfbGVfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8zMl9sZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2xlX2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMzJfbGVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8zMl9sZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMzJfYmVfZW5jb2RlX19kb2NfXywKKyJ1dGZfMzJfYmVfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzMyX0JFX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzMyX2JlX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8zMl9iZV9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMzJfYmVfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8zMl9iZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2JlX2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMzJfYmVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8zMl9iZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191bmljb2RlX2VzY2FwZV9lbmNvZGVfX2RvY19fLAorInVuaWNvZGVfZXNjYXBlX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VOSUNPREVfRVNDQVBFX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidW5pY29kZV9lc2NhcGVfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1bmljb2RlX2VzY2FwZV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZV9fZG9jX18sCisicmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1JBV19VTklDT0RFX0VTQ0FQRV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6cmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfbGF0aW5fMV9lbmNvZGVfX2RvY19fLAorImxhdGluXzFfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfTEFUSU5fMV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImxhdGluXzFfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfbGF0aW5fMV9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19sYXRpbl8xX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19sYXRpbl8xX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbGF0aW5fMV9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6bGF0aW5fMV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbGF0aW5fMV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19hc2NpaV9lbmNvZGVfX2RvY19fLAorImFzY2lpX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX0FTQ0lJX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiYXNjaWlfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfYXNjaWlfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfYXNjaWlfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2FzY2lpX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2FzY2lpX2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejphc2NpaV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfYXNjaWlfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfY2hhcm1hcF9lbmNvZGVfX2RvY19fLAorImNoYXJtYXBfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIG1hcHBpbmc9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19DSEFSTUFQX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiY2hhcm1hcF9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19jaGFybWFwX2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX2NoYXJtYXBfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NoYXJtYXBfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIFB5T2JqZWN0ICptYXBwaW5nKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfY2hhcm1hcF9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIFB5T2JqZWN0ICptYXBwaW5nID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6TzpjaGFybWFwX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMsICZtYXBwaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfY2hhcm1hcF9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzLCBtYXBwaW5nKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19jaGFybWFwX2J1aWxkX19kb2NfXywKKyJjaGFybWFwX2J1aWxkKCRtb2R1bGUsIG1hcCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19DSEFSTUFQX0JVSUxEX01FVEhPRERFRiAgICBcCisgICAgeyJjaGFybWFwX2J1aWxkIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfY2hhcm1hcF9idWlsZCwgTUVUSF9PLCBfY29kZWNzX2NoYXJtYXBfYnVpbGRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfY2hhcm1hcF9idWlsZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICptYXApOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19jaGFybWFwX2J1aWxkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm1hcDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpjaGFybWFwX2J1aWxkIiwgJm1hcCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NoYXJtYXBfYnVpbGRfaW1wbChtb2R1bGUsIG1hcCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9NQkNTKQorCitQeURvY19TVFJWQVIoX2NvZGVjc19tYmNzX2VuY29kZV9fZG9jX18sCisibWJjc19lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19NQkNTX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsibWJjc19lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19tYmNzX2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX21iY3NfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX21iY3NfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19tYmNzX2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejptYmNzX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19tYmNzX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTUJDUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9NQkNTKQorCitQeURvY19TVFJWQVIoX2NvZGVjc19jb2RlX3BhZ2VfZW5jb2RlX19kb2NfXywKKyJjb2RlX3BhZ2VfZW5jb2RlKCRtb2R1bGUsIGNvZGVfcGFnZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19DT0RFX1BBR0VfRU5DT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJjb2RlX3BhZ2VfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfY29kZV9wYWdlX2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfY29kZV9wYWdlX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBjb2RlX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyLCBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19jb2RlX3BhZ2VfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBjb2RlX3BhZ2U7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpT3x6OmNvZGVfcGFnZV9lbmNvZGUiLAorICAgICAgICAmY29kZV9wYWdlLCAmc3RyLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfY29kZV9wYWdlX2VuY29kZV9pbXBsKG1vZHVsZSwgY29kZV9wYWdlLCBzdHIsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9NQkNTKSAqLworCitQeURvY19TVFJWQVIoX2NvZGVjc19yZWdpc3Rlcl9lcnJvcl9fZG9jX18sCisicmVnaXN0ZXJfZXJyb3IoJG1vZHVsZSwgZXJyb3JzLCBoYW5kbGVyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVnaXN0ZXIgdGhlIHNwZWNpZmllZCBlcnJvciBoYW5kbGVyIHVuZGVyIHRoZSBuYW1lIGVycm9ycy5cbiIKKyJcbiIKKyJoYW5kbGVyIG11c3QgYmUgYSBjYWxsYWJsZSBvYmplY3QsIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb25cbiIKKyJpbnN0YW5jZSBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBsb2NhdGlvbiBvZiB0aGUgZW5jb2RpbmcvZGVjb2RpbmdcbiIKKyJlcnJvciBhbmQgbXVzdCByZXR1cm4gYSAocmVwbGFjZW1lbnQsIG5ldyBwb3NpdGlvbikgdHVwbGUuIik7CisKKyNkZWZpbmUgX0NPREVDU19SRUdJU1RFUl9FUlJPUl9NRVRIT0RERUYgICAgXAorICAgIHsicmVnaXN0ZXJfZXJyb3IiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19yZWdpc3Rlcl9lcnJvciwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3JlZ2lzdGVyX2Vycm9yX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3JlZ2lzdGVyX2Vycm9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpoYW5kbGVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfcmVnaXN0ZXJfZXJyb3IoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqZXJyb3JzOworICAgIFB5T2JqZWN0ICpoYW5kbGVyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTzpyZWdpc3Rlcl9lcnJvciIsCisgICAgICAgICZlcnJvcnMsICZoYW5kbGVyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfcmVnaXN0ZXJfZXJyb3JfaW1wbChtb2R1bGUsIGVycm9ycywgaGFuZGxlcik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfbG9va3VwX2Vycm9yX19kb2NfXywKKyJsb29rdXBfZXJyb3IoJG1vZHVsZSwgbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorImxvb2t1cF9lcnJvcihlcnJvcnMpIC0+IGhhbmRsZXJcbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGVycm9yIGhhbmRsZXIgZm9yIHRoZSBzcGVjaWZpZWQgZXJyb3IgaGFuZGxpbmcgbmFtZSBvciByYWlzZSBhXG4iCisiTG9va3VwRXJyb3IsIGlmIG5vIGhhbmRsZXIgZXhpc3RzIHVuZGVyIHRoaXMgbmFtZS4iKTsKKworI2RlZmluZSBfQ09ERUNTX0xPT0tVUF9FUlJPUl9NRVRIT0RERUYgICAgXAorICAgIHsibG9va3VwX2Vycm9yIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfbG9va3VwX2Vycm9yLCBNRVRIX08sIF9jb2RlY3NfbG9va3VwX2Vycm9yX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2xvb2t1cF9lcnJvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKm5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19sb29rdXBfZXJyb3IoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpuYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmxvb2t1cF9lcnJvciIsICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbG9va3VwX2Vycm9yX2ltcGwobW9kdWxlLCBuYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWZuZGVmIF9DT0RFQ1NfTUJDU19ERUNPREVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfQ09ERUNTX01CQ1NfREVDT0RFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9DT0RFQ1NfTUJDU19ERUNPREVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9DT0RFQ1NfQ09ERV9QQUdFX0RFQ09ERV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9DT0RFQ1NfQ09ERV9QQUdFX0RFQ09ERV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9DT0RFQ1NfTUJDU19FTkNPREVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfQ09ERUNTX01CQ1NfRU5DT0RFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9DT0RFQ1NfTUJDU19FTkNPREVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9DT0RFQ1NfQ09ERV9QQUdFX0VOQ09ERV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9DT0RFQ1NfQ09ERV9QQUdFX0VOQ09ERV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX0NPREVfUEFHRV9FTkNPREVfTUVUSE9EREVGKSAqLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTljOTk2NzA0ODAyN2MxYzcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2NyeXB0bW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19jcnlwdG1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhlYzMxZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL19jcnlwdG1vZHVsZS5jLmgKQEAgLTAsMCArMSwzNyBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKGNyeXB0X2NyeXB0X19kb2NfXywKKyJjcnlwdCgkbW9kdWxlLCB3b3JkLCBzYWx0LCAvKVxuIgorIi0tXG4iCisiXG4iCisiSGFzaCBhICp3b3JkKiB3aXRoIHRoZSBnaXZlbiAqc2FsdCogYW5kIHJldHVybiB0aGUgaGFzaGVkIHBhc3N3b3JkLlxuIgorIlxuIgorIip3b3JkKiB3aWxsIHVzdWFsbHkgYmUgYSB1c2VyXCdzIHBhc3N3b3JkLiAgKnNhbHQqIChlaXRoZXIgYSByYW5kb20gMiBvciAxNlxuIgorImNoYXJhY3RlciBzdHJpbmcsIHBvc3NpYmx5IHByZWZpeGVkIHdpdGggJGRpZ2l0JCB0byBpbmRpY2F0ZSB0aGUgbWV0aG9kKVxuIgorIndpbGwgYmUgdXNlZCB0byBwZXJ0dXJiIHRoZSBlbmNyeXB0aW9uIGFsZ29yaXRobSBhbmQgcHJvZHVjZSBkaXN0aW5jdFxuIgorInJlc3VsdHMgZm9yIGEgZ2l2ZW4gKndvcmQqLiIpOworCisjZGVmaW5lIENSWVBUX0NSWVBUX01FVEhPRERFRiAgICBcCisgICAgeyJjcnlwdCIsIChQeUNGdW5jdGlvbiljcnlwdF9jcnlwdCwgTUVUSF9WQVJBUkdTLCBjcnlwdF9jcnlwdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorY3J5cHRfY3J5cHRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICp3b3JkLCBjb25zdCBjaGFyICpzYWx0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NyeXB0X2NyeXB0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKndvcmQ7CisgICAgY29uc3QgY2hhciAqc2FsdDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3M6Y3J5cHQiLAorICAgICAgICAmd29yZCwgJnNhbHQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gY3J5cHRfY3J5cHRfaW1wbChtb2R1bGUsIHdvcmQsIHNhbHQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjJjMjk1YzliY2UwMThjNCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fY3Vyc2VzbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19jdXJzZXNtb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMTE3NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fY3Vyc2VzbW9kdWxlLmMuaApAQCAtMCwwICsxLDcxIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoY3Vyc2VzX3dpbmRvd19hZGRjaF9fZG9jX18sCisiYWRkY2goW3ksIHgsXSBjaCwgW2F0dHJdKVxuIgorIlBhaW50IGNoYXJhY3RlciBjaCBhdCAoeSwgeCkgd2l0aCBhdHRyaWJ1dGVzIGF0dHIuXG4iCisiXG4iCisiICB5XG4iCisiICAgIFktY29vcmRpbmF0ZS5cbiIKKyIgIHhcbiIKKyIgICAgWC1jb29yZGluYXRlLlxuIgorIiAgY2hcbiIKKyIgICAgQ2hhcmFjdGVyIHRvIGFkZC5cbiIKKyIgIGF0dHJcbiIKKyIgICAgQXR0cmlidXRlcyBmb3IgdGhlIGNoYXJhY3Rlci5cbiIKKyJcbiIKKyJQYWludCBjaGFyYWN0ZXIgY2ggYXQgKHksIHgpIHdpdGggYXR0cmlidXRlcyBhdHRyLFxuIgorIm92ZXJ3cml0aW5nIGFueSBjaGFyYWN0ZXIgcHJldmlvdXNseSBwYWludGVkIGF0IHRoYXQgbG9jYXRpb24uXG4iCisiQnkgZGVmYXVsdCwgdGhlIGNoYXJhY3RlciBwb3NpdGlvbiBhbmQgYXR0cmlidXRlcyBhcmUgdGhlXG4iCisiY3VycmVudCBzZXR0aW5ncyBmb3IgdGhlIHdpbmRvdyBvYmplY3QuIik7CisKKyNkZWZpbmUgQ1VSU0VTX1dJTkRPV19BRERDSF9NRVRIT0RERUYgICAgXAorICAgIHsiYWRkY2giLCAoUHlDRnVuY3Rpb24pY3Vyc2VzX3dpbmRvd19hZGRjaCwgTUVUSF9WQVJBUkdTLCBjdXJzZXNfd2luZG93X2FkZGNoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitjdXJzZXNfd2luZG93X2FkZGNoX2ltcGwoUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIGludCBncm91cF9sZWZ0XzEsIGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LCBQeU9iamVjdCAqY2gsIGludCBncm91cF9yaWdodF8xLCBsb25nIGF0dHIpOworCitzdGF0aWMgUHlPYmplY3QgKgorY3Vyc2VzX3dpbmRvd19hZGRjaChQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGdyb3VwX2xlZnRfMSA9IDA7CisgICAgaW50IHkgPSAwOworICAgIGludCB4ID0gMDsKKyAgICBQeU9iamVjdCAqY2g7CisgICAgaW50IGdyb3VwX3JpZ2h0XzEgPSAwOworICAgIGxvbmcgYXR0ciA9IDA7CisKKyAgICBzd2l0Y2ggKFB5VHVwbGVfR0VUX1NJWkUoYXJncykpIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOmFkZGNoIiwgJmNoKSkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPbDphZGRjaCIsICZjaCwgJmF0dHIpKQorICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPOmFkZGNoIiwgJnksICZ4LCAmY2gpKQorICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIGdyb3VwX2xlZnRfMSA9IDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU9sOmFkZGNoIiwgJnksICZ4LCAmY2gsICZhdHRyKSkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKKyAgICAgICAgICAgIGdyb3VwX2xlZnRfMSA9IDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJjdXJzZXMud2luZG93LmFkZGNoIHJlcXVpcmVzIDEgdG8gNCBhcmd1bWVudHMiKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gY3Vyc2VzX3dpbmRvd19hZGRjaF9pbXBsKHNlbGYsIGdyb3VwX2xlZnRfMSwgeSwgeCwgY2gsIGdyb3VwX3JpZ2h0XzEsIGF0dHIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTgyYjFlNzA5NTc3ZjNlYyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fZGF0ZXRpbWVtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2RhdGV0aW1lbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODhjOTAzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX2RhdGV0aW1lbW9kdWxlLmMuaApAQCAtMCwwICsxLDM3IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X19kb2NfXywKKyJub3coJHR5cGUsIC8sIHR6PU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIG5ldyBkYXRldGltZSBvYmplY3QgcmVwcmVzZW50aW5nIGN1cnJlbnQgdGltZSBsb2NhbCB0byB0ei5cbiIKKyJcbiIKKyIgIHR6XG4iCisiICAgIFRpbWV6b25lIG9iamVjdC5cbiIKKyJcbiIKKyJJZiBubyB0eiBpcyBzcGVjaWZpZWQsIHVzZXMgbG9jYWwgdGltZXpvbmUuIik7CisKKyNkZWZpbmUgREFURVRJTUVfREFURVRJTUVfTk9XX01FVEhPRERFRiAgICBcCisgICAgeyJub3ciLCAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfZGF0ZXRpbWVfbm93LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU3xNRVRIX0NMQVNTLCBkYXRldGltZV9kYXRldGltZV9ub3dfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2RhdGV0aW1lX2RhdGV0aW1lX25vd19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnR6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2RhdGV0aW1lX2RhdGV0aW1lX25vdyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsidHoiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqdHogPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86bm93IiwgX2tleXdvcmRzLAorICAgICAgICAmdHopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X2ltcGwodHlwZSwgdHopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2Y0NWM2NzBkNmU0OTUzYSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fZGJtbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19kYm1tb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NzRlMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fZGJtbW9kdWxlLmMuaApAQCAtMCwwICsxLDE0MSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF9kYm1fZGJtX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkNsb3NlIHRoZSBkYXRhYmFzZS4iKTsKKworI2RlZmluZSBfREJNX0RCTV9DTE9TRV9NRVRIT0RERUYgICAgXAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pX2RibV9kYm1fY2xvc2UsIE1FVEhfTk9BUkdTLCBfZGJtX2RibV9jbG9zZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2RibV9kYm1fY2xvc2VfaW1wbChkYm1vYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2RibV9kYm1fY2xvc2UoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfZGJtX2RibV9jbG9zZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2RibV9kYm1fa2V5c19fZG9jX18sCisia2V5cygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgYWxsIGtleXMgaW4gdGhlIGRhdGFiYXNlLiIpOworCisjZGVmaW5lIF9EQk1fREJNX0tFWVNfTUVUSE9EREVGICAgIFwKKyAgICB7ImtleXMiLCAoUHlDRnVuY3Rpb24pX2RibV9kYm1fa2V5cywgTUVUSF9OT0FSR1MsIF9kYm1fZGJtX2tleXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19kYm1fZGJtX2tleXNfaW1wbChkYm1vYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2RibV9kYm1fa2V5cyhkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9kYm1fZGJtX2tleXNfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9kYm1fZGJtX2dldF9fZG9jX18sCisiZ2V0KCRzZWxmLCBrZXksIGRlZmF1bHQ9YlwnXCcsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHZhbHVlIGZvciBrZXkgaWYgcHJlc2VudCwgb3RoZXJ3aXNlIGRlZmF1bHQuIik7CisKKyNkZWZpbmUgX0RCTV9EQk1fR0VUX01FVEhPRERFRiAgICBcCisgICAgeyJnZXQiLCAoUHlDRnVuY3Rpb24pX2RibV9kYm1fZ2V0LCBNRVRIX1ZBUkFSR1MsIF9kYm1fZGJtX2dldF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2RibV9kYm1fZ2V0X2ltcGwoZGJtb2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICprZXksCisgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV9jbGVhbl90IGtleV9sZW5ndGgsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19kYm1fZGJtX2dldChkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmtleTsKKyAgICBQeV9zc2l6ZV9jbGVhbl90IGtleV9sZW5ndGg7CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzI3xPOmdldCIsCisgICAgICAgICZrZXksICZrZXlfbGVuZ3RoLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZGJtX2RibV9nZXRfaW1wbChzZWxmLCBrZXksIGtleV9sZW5ndGgsIGRlZmF1bHRfdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZGJtX2RibV9zZXRkZWZhdWx0X19kb2NfXywKKyJzZXRkZWZhdWx0KCRzZWxmLCBrZXksIGRlZmF1bHQ9YlwnXCcsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHZhbHVlIGZvciBrZXkgaWYgcHJlc2VudCwgb3RoZXJ3aXNlIGRlZmF1bHQuXG4iCisiXG4iCisiSWYga2V5IGlzIG5vdCBpbiB0aGUgZGF0YWJhc2UsIGl0IGlzIGluc2VydGVkIHdpdGggZGVmYXVsdCBhcyB0aGUgdmFsdWUuIik7CisKKyNkZWZpbmUgX0RCTV9EQk1fU0VUREVGQVVMVF9NRVRIT0RERUYgICAgXAorICAgIHsic2V0ZGVmYXVsdCIsIChQeUNGdW5jdGlvbilfZGJtX2RibV9zZXRkZWZhdWx0LCBNRVRIX1ZBUkFSR1MsIF9kYm1fZGJtX3NldGRlZmF1bHRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19kYm1fZGJtX3NldGRlZmF1bHRfaW1wbChkYm1vYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV9jbGVhbl90IGtleV9sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2RibV9kYm1fc2V0ZGVmYXVsdChkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmtleTsKKyAgICBQeV9zc2l6ZV9jbGVhbl90IGtleV9sZW5ndGg7CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzI3xPOnNldGRlZmF1bHQiLAorICAgICAgICAma2V5LCAma2V5X2xlbmd0aCwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2RibV9kYm1fc2V0ZGVmYXVsdF9pbXBsKHNlbGYsIGtleSwga2V5X2xlbmd0aCwgZGVmYXVsdF92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGRibW9wZW5fX2RvY19fLAorIm9wZW4oJG1vZHVsZSwgZmlsZW5hbWUsIGZsYWdzPVwnclwnLCBtb2RlPTBvNjY2LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgZGF0YWJhc2Ugb2JqZWN0LlxuIgorIlxuIgorIiAgZmlsZW5hbWVcbiIKKyIgICAgVGhlIGZpbGVuYW1lIHRvIG9wZW4uXG4iCisiICBmbGFnc1xuIgorIiAgICBIb3cgdG8gb3BlbiB0aGUgZmlsZS4gIFwiclwiIGZvciByZWFkaW5nLCBcIndcIiBmb3Igd3JpdGluZywgZXRjLlxuIgorIiAgbW9kZVxuIgorIiAgICBJZiBjcmVhdGluZyBhIG5ldyBmaWxlLCB0aGUgbW9kZSBiaXRzIGZvciB0aGUgbmV3IGZpbGVcbiIKKyIgICAgKGUuZy4gb3MuT19SRFdSKS4iKTsKKworI2RlZmluZSBEQk1PUEVOX01FVEhPRERFRiAgICBcCisgICAgeyJvcGVuIiwgKFB5Q0Z1bmN0aW9uKWRibW9wZW4sIE1FVEhfVkFSQVJHUywgZGJtb3Blbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorZGJtb3Blbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpmbGFncywKKyAgICAgICAgICAgICBpbnQgbW9kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitkYm1vcGVuKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lOworICAgIGNvbnN0IGNoYXIgKmZsYWdzID0gInIiOworICAgIGludCBtb2RlID0gNDM4OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzfHNpOm9wZW4iLAorICAgICAgICAmZmlsZW5hbWUsICZmbGFncywgJm1vZGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gZGJtb3Blbl9pbXBsKG1vZHVsZSwgZmlsZW5hbWUsIGZsYWdzLCBtb2RlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFkOTJlODFiMjhjNTU4ZDAgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2VsZW1lbnR0cmVlLmMuaCBiL01vZHVsZXMvY2xpbmljL19lbGVtZW50dHJlZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZiNGM0YwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL19lbGVtZW50dHJlZS5jLmgKQEAgLTAsMCArMSw2NzkgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9hcHBlbmRfX2RvY19fLAorImFwcGVuZCgkc2VsZiwgc3ViZWxlbWVudCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfQVBQRU5EX01FVEhPRERFRiAgICBcCisgICAgeyJhcHBlbmQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfYXBwZW5kLCBNRVRIX08sIF9lbGVtZW50dHJlZV9FbGVtZW50X2FwcGVuZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfYXBwZW5kX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN1YmVsZW1lbnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfYXBwZW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN1YmVsZW1lbnQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8hOmFwcGVuZCIsICZFbGVtZW50X1R5cGUsICZzdWJlbGVtZW50KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X2FwcGVuZF9pbXBsKHNlbGYsIHN1YmVsZW1lbnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9jbGVhcl9fZG9jX18sCisiY2xlYXIoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0NMRUFSX01FVEhPRERFRiAgICBcCisgICAgeyJjbGVhciIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9jbGVhciwgTUVUSF9OT0FSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X2NsZWFyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9jbGVhcl9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfY2xlYXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2VsZW1lbnR0cmVlX0VsZW1lbnRfY2xlYXJfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X19fY29weV9fX19kb2NfXywKKyJfX2NvcHlfXygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfX19DT1BZX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fY29weV9fIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X19fY29weV9fLCBNRVRIX05PQVJHUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19jb3B5X19fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X19fY29weV9fX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9fX2NvcHlfXyhFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfZWxlbWVudHRyZWVfRWxlbWVudF9fX2NvcHlfX19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19kZWVwY29weV9fX19kb2NfXywKKyJfX2RlZXBjb3B5X18oJHNlbGYsIG1lbW8sIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX19fREVFUENPUFlfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X19fZGVlcGNvcHlfXywgTUVUSF9PLCBfZWxlbWVudHRyZWVfRWxlbWVudF9fX2RlZXBjb3B5X19fX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X19fc2l6ZW9mX19fX2RvY19fLAorIl9fc2l6ZW9mX18oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX19fU0laRU9GX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19zaXplb2ZfXywgTUVUSF9OT0FSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X19fc2l6ZW9mX19fX2RvY19ffSwKKworc3RhdGljIFB5X3NzaXplX3QKK19lbGVtZW50dHJlZV9FbGVtZW50X19fc2l6ZW9mX19faW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X19fc2l6ZW9mX18oRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CisKKyAgICBfcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19zaXplb2ZfX19pbXBsKHNlbGYpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19nZXRzdGF0ZV9fX19kb2NfXywKKyJfX2dldHN0YXRlX18oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX19fR0VUU1RBVEVfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19nZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X19fZ2V0c3RhdGVfXywgTUVUSF9OT0FSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X19fZ2V0c3RhdGVfX19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19nZXRzdGF0ZV9fX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9fX2dldHN0YXRlX18oRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19nZXRzdGF0ZV9fX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NldHN0YXRlX19fX2RvY19fLAorIl9fc2V0c3RhdGVfXygkc2VsZiwgc3RhdGUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX19fU0VUU1RBVEVfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19zZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X19fc2V0c3RhdGVfXywgTUVUSF9PLCBfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NldHN0YXRlX19fX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X2V4dGVuZF9fZG9jX18sCisiZXh0ZW5kKCRzZWxmLCBlbGVtZW50cywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRVhURU5EX01FVEhPRERFRiAgICBcCisgICAgeyJleHRlbmQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfZXh0ZW5kLCBNRVRIX08sIF9lbGVtZW50dHJlZV9FbGVtZW50X2V4dGVuZF9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZF9fZG9jX18sCisiZmluZCgkc2VsZiwgLywgcGF0aCwgbmFtZXNwYWNlcz1Ob25lKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9GSU5EX01FVEhPRERFRiAgICBcCisgICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpwYXRoOworICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98TzpmaW5kIiwgX2tleXdvcmRzLAorICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZF9pbXBsKHNlbGYsIHBhdGgsIG5hbWVzcGFjZXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dF9fZG9jX18sCisiZmluZHRleHQoJHNlbGYsIC8sIHBhdGgsIGRlZmF1bHQ9Tm9uZSwgbmFtZXNwYWNlcz1Ob25lKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9GSU5EVEVYVF9NRVRIT0RERUYgICAgXAorICAgIHsiZmluZHRleHQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0KEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkZWZhdWx0IiwgIm5hbWVzcGFjZXMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqcGF0aDsKKyAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPTzpmaW5kdGV4dCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnBhdGgsICZkZWZhdWx0X3ZhbHVlLCAmbmFtZXNwYWNlcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dF9pbXBsKHNlbGYsIHBhdGgsIGRlZmF1bHRfdmFsdWUsIG5hbWVzcGFjZXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsX19kb2NfXywKKyJmaW5kYWxsKCRzZWxmLCAvLCBwYXRoLCBuYW1lc3BhY2VzPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0ZJTkRBTExfTUVUSE9EREVGICAgIFwKKyAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGxfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnBhdGg7CisgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOmZpbmRhbGwiLCBfa2V5d29yZHMsCisgICAgICAgICZwYXRoLCAmbmFtZXNwYWNlcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsX2ltcGwoc2VsZiwgcGF0aCwgbmFtZXNwYWNlcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kX19kb2NfXywKKyJpdGVyZmluZCgkc2VsZiwgLywgcGF0aCwgbmFtZXNwYWNlcz1Ob25lKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9JVEVSRklORF9NRVRIT0RERUYgICAgXAorICAgIHsiaXRlcmZpbmQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqcGF0aDsKKyAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE86aXRlcmZpbmQiLCBfa2V5d29yZHMsCisgICAgICAgICZwYXRoLCAmbmFtZXNwYWNlcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZF9pbXBsKHNlbGYsIHBhdGgsIG5hbWVzcGFjZXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRfX2RvY19fLAorImdldCgkc2VsZiwgLywga2V5LCBkZWZhdWx0PU5vbmUpXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0dFVF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2dldCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9lbGVtZW50dHJlZV9FbGVtZW50X2dldF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2dldChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJkZWZhdWx0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKmtleTsKKyAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE86Z2V0IiwgX2tleXdvcmRzLAorICAgICAgICAma2V5LCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRfaW1wbChzZWxmLCBrZXksIGRlZmF1bHRfdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRjaGlsZHJlbl9fZG9jX18sCisiZ2V0Y2hpbGRyZW4oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0dFVENISUxEUkVOX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRjaGlsZHJlbiIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRjaGlsZHJlbiwgTUVUSF9OT0FSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X2dldGNoaWxkcmVuX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRjaGlsZHJlbl9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0Y2hpbGRyZW4oRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0Y2hpbGRyZW5faW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJfX2RvY19fLAorIml0ZXIoJHNlbGYsIC8sIHRhZz1Ob25lKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9JVEVSX01FVEhPRERFRiAgICBcCisgICAgeyJpdGVyIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsidGFnIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnRhZyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzppdGVyIiwgX2tleXdvcmRzLAorICAgICAgICAmdGFnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJfaW1wbChzZWxmLCB0YWcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVydGV4dF9fZG9jX18sCisiaXRlcnRleHQoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURVJURVhUX01FVEhPRERFRiAgICBcCisgICAgeyJpdGVydGV4dCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVydGV4dCwgTUVUSF9OT0FSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJ0ZXh0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVydGV4dF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcnRleHQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcnRleHRfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X2luc2VydF9fZG9jX18sCisiaW5zZXJ0KCRzZWxmLCBpbmRleCwgc3ViZWxlbWVudCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSU5TRVJUX01FVEhPRERFRiAgICBcCisgICAgeyJpbnNlcnQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfaW5zZXJ0LCBNRVRIX1ZBUkFSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X2luc2VydF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaW5zZXJ0X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJlbGVtZW50KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2luc2VydChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGluZGV4OworICAgIFB5T2JqZWN0ICpzdWJlbGVtZW50OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuTyE6aW5zZXJ0IiwKKyAgICAgICAgJmluZGV4LCAmRWxlbWVudF9UeXBlLCAmc3ViZWxlbWVudCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9pbnNlcnRfaW1wbChzZWxmLCBpbmRleCwgc3ViZWxlbWVudCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZW1zX19kb2NfXywKKyJpdGVtcygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFTVNfTUVUSE9EREVGICAgIFwKKyAgICB7Iml0ZW1zIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZW1zLCBNRVRIX05PQVJHUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlbXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZW1zX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVtcyhFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVtc19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfa2V5c19fZG9jX18sCisia2V5cygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfS0VZU19NRVRIT0RERUYgICAgXAorICAgIHsia2V5cyIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9rZXlzLCBNRVRIX05PQVJHUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfa2V5c19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfa2V5c19pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfa2V5cyhFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfZWxlbWVudHRyZWVfRWxlbWVudF9rZXlzX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9tYWtlZWxlbWVudF9fZG9jX18sCisibWFrZWVsZW1lbnQoJHNlbGYsIHRhZywgYXR0cmliLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9NQUtFRUxFTUVOVF9NRVRIT0RERUYgICAgXAorICAgIHsibWFrZWVsZW1lbnQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfbWFrZWVsZW1lbnQsIE1FVEhfVkFSQVJHUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfbWFrZWVsZW1lbnRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X21ha2VlbGVtZW50X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmF0dHJpYik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9tYWtlZWxlbWVudChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdGFnOworICAgIFB5T2JqZWN0ICphdHRyaWI7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJtYWtlZWxlbWVudCIsCisgICAgICAgIDIsIDIsCisgICAgICAgICZ0YWcsICZhdHRyaWIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfbWFrZWVsZW1lbnRfaW1wbChzZWxmLCB0YWcsIGF0dHJpYik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X3JlbW92ZV9fZG9jX18sCisicmVtb3ZlKCRzZWxmLCBzdWJlbGVtZW50LCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9SRU1PVkVfTUVUSE9EREVGICAgIFwKKyAgICB7InJlbW92ZSIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9yZW1vdmUsIE1FVEhfTywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfcmVtb3ZlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9yZW1vdmVfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3ViZWxlbWVudCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9yZW1vdmUoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3ViZWxlbWVudDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyE6cmVtb3ZlIiwgJkVsZW1lbnRfVHlwZSwgJnN1YmVsZW1lbnQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfcmVtb3ZlX2ltcGwoc2VsZiwgc3ViZWxlbWVudCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X3NldF9fZG9jX18sCisic2V0KCRzZWxmLCBrZXksIHZhbHVlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9TRVRfTUVUSE9EREVGICAgIFwKKyAgICB7InNldCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9zZXQsIE1FVEhfVkFSQVJHUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfc2V0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9zZXRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X3NldChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqa2V5OworICAgIFB5T2JqZWN0ICp2YWx1ZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNldCIsCisgICAgICAgIDIsIDIsCisgICAgICAgICZrZXksICZ2YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9zZXRfaW1wbChzZWxmLCBrZXksIHZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitzdGF0aWMgaW50CitfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfX19pbml0X19faW1wbChUcmVlQnVpbGRlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICplbGVtZW50X2ZhY3RvcnkpOworCitzdGF0aWMgaW50CitfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImVsZW1lbnRfZmFjdG9yeSIsIE5VTEx9OworICAgIFB5T2JqZWN0ICplbGVtZW50X2ZhY3RvcnkgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86VHJlZUJ1aWxkZXIiLCBfa2V5d29yZHMsCisgICAgICAgICZlbGVtZW50X2ZhY3RvcnkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX19faW5pdF9fX2ltcGwoKFRyZWVCdWlsZGVyT2JqZWN0ICopc2VsZiwgZWxlbWVudF9mYWN0b3J5KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX2RhdGFfX2RvY19fLAorImRhdGEoJHNlbGYsIGRhdGEsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9UUkVFQlVJTERFUl9EQVRBX01FVEhPRERFRiAgICBcCisgICAgeyJkYXRhIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9kYXRhLCBNRVRIX08sIF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9kYXRhX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfZW5kX19kb2NfXywKKyJlbmQoJHNlbGYsIHRhZywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX1RSRUVCVUlMREVSX0VORF9NRVRIT0RERUYgICAgXAorICAgIHsiZW5kIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9lbmQsIE1FVEhfTywgX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX2VuZF9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX1RSRUVCVUlMREVSX0NMT1NFX01FVEhPRERFRiAgICBcCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfY2xvc2UsIE1FVEhfTk9BUkdTLCBfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9jbG9zZV9pbXBsKFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9jbG9zZShUcmVlQnVpbGRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX2Nsb3NlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfc3RhcnRfX2RvY19fLAorInN0YXJ0KCRzZWxmLCB0YWcsIGF0dHJzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9UUkVFQlVJTERFUl9TVEFSVF9NRVRIT0RERUYgICAgXAorICAgIHsic3RhcnQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX3N0YXJ0LCBNRVRIX1ZBUkFSR1MsIF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9zdGFydF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX3N0YXJ0X2ltcGwoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXR0cnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX3N0YXJ0KFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdGFnOworICAgIFB5T2JqZWN0ICphdHRycyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdGFydCIsCisgICAgICAgIDEsIDIsCisgICAgICAgICZ0YWcsICZhdHRycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfc3RhcnRfaW1wbChzZWxmLCB0YWcsIGF0dHJzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitzdGF0aWMgaW50CitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19faW5pdF9fX2ltcGwoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaHRtbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGFyZ2V0LCBjb25zdCBjaGFyICplbmNvZGluZyk7CisKK3N0YXRpYyBpbnQKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Imh0bWwiLCAidGFyZ2V0IiwgImVuY29kaW5nIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmh0bWwgPSBOVUxMOworICAgIFB5T2JqZWN0ICp0YXJnZXQgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPT3o6WE1MUGFyc2VyIiwgX2tleXdvcmRzLAorICAgICAgICAmaHRtbCwgJnRhcmdldCwgJmVuY29kaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX19pbml0X19faW1wbCgoWE1MUGFyc2VyT2JqZWN0ICopc2VsZiwgaHRtbCwgdGFyZ2V0LCBlbmNvZGluZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfY2xvc2VfX2RvY19fLAorImNsb3NlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfWE1MUEFSU0VSX0NMT1NFX01FVEhPRERFRiAgICBcCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2Nsb3NlLCBNRVRIX05PQVJHUywgX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9jbG9zZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9jbG9zZV9pbXBsKFhNTFBhcnNlck9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2Nsb3NlKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9jbG9zZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9mZWVkX19kb2NfXywKKyJmZWVkKCRzZWxmLCBkYXRhLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfWE1MUEFSU0VSX0ZFRURfTUVUSE9EREVGICAgIFwKKyAgICB7ImZlZWQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9mZWVkLCBNRVRIX08sIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZmVlZF9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fcGFyc2Vfd2hvbGVfX2RvY19fLAorIl9wYXJzZV93aG9sZSgkc2VsZiwgZmlsZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9fUEFSU0VfV0hPTEVfTUVUSE9EREVGICAgIFwKKyAgICB7Il9wYXJzZV93aG9sZSIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19wYXJzZV93aG9sZSwgTUVUSF9PLCBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19wYXJzZV93aG9sZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9kb2N0eXBlX19kb2NfXywKKyJkb2N0eXBlKCRzZWxmLCBuYW1lLCBwdWJpZCwgc3lzdGVtLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfWE1MUEFSU0VSX0RPQ1RZUEVfTUVUSE9EREVGICAgIFwKKyAgICB7ImRvY3R5cGUiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9kb2N0eXBlLCBNRVRIX1ZBUkFSR1MsIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9kb2N0eXBlX2ltcGwoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwdWJpZCwgUHlPYmplY3QgKnN5c3RlbSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2RvY3R5cGUoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZTsKKyAgICBQeU9iamVjdCAqcHViaWQ7CisgICAgUHlPYmplY3QgKnN5c3RlbTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImRvY3R5cGUiLAorICAgICAgICAzLCAzLAorICAgICAgICAmbmFtZSwgJnB1YmlkLCAmc3lzdGVtKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZV9pbXBsKHNlbGYsIG5hbWUsIHB1YmlkLCBzeXN0ZW0pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19zZXRldmVudHNfX2RvY19fLAorIl9zZXRldmVudHMoJHNlbGYsIGV2ZW50c19xdWV1ZSwgZXZlbnRzX3RvX3JlcG9ydD1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfWE1MUEFSU0VSX19TRVRFVkVOVFNfTUVUSE9EREVGICAgIFwKKyAgICB7Il9zZXRldmVudHMiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fc2V0ZXZlbnRzLCBNRVRIX1ZBUkFSR1MsIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3NldGV2ZW50c19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fc2V0ZXZlbnRzX2ltcGwoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmV2ZW50c19xdWV1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpldmVudHNfdG9fcmVwb3J0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3NldGV2ZW50cyhYTUxQYXJzZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpldmVudHNfcXVldWU7CisgICAgUHlPYmplY3QgKmV2ZW50c190b19yZXBvcnQgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIXxPOl9zZXRldmVudHMiLAorICAgICAgICAmUHlMaXN0X1R5cGUsICZldmVudHNfcXVldWUsICZldmVudHNfdG9fcmVwb3J0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3NldGV2ZW50c19pbXBsKHNlbGYsIGV2ZW50c19xdWV1ZSwgZXZlbnRzX3RvX3JlcG9ydCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNWI4YmY3ZTdmMjE1MWNhIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19nZGJtbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19nZGJtbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTBhZDlhCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX2dkYm1tb2R1bGUuYy5oCkBAIC0wLDAgKzEsMjUzIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2dkYm1fZ2RibV9nZXRfX2RvY19fLAorImdldCgkc2VsZiwga2V5LCBkZWZhdWx0PU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJHZXQgdGhlIHZhbHVlIGZvciBrZXksIG9yIGRlZmF1bHQgaWYgbm90IHByZXNlbnQuIik7CisKKyNkZWZpbmUgX0dEQk1fR0RCTV9HRVRfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldCIsIChQeUNGdW5jdGlvbilfZ2RibV9nZGJtX2dldCwgTUVUSF9WQVJBUkdTLCBfZ2RibV9nZGJtX2dldF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9nZXRfaW1wbChkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fZ2V0KGRibW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmtleTsKKyAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJnZXQiLAorICAgICAgICAxLCAyLAorICAgICAgICAma2V5LCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZ2RibV9nZGJtX2dldF9pbXBsKHNlbGYsIGtleSwgZGVmYXVsdF92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9nZGJtX2dkYm1fc2V0ZGVmYXVsdF9fZG9jX18sCisic2V0ZGVmYXVsdCgkc2VsZiwga2V5LCBkZWZhdWx0PU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJHZXQgdmFsdWUgZm9yIGtleSwgb3Igc2V0IGl0IHRvIGRlZmF1bHQgYW5kIHJldHVybiBkZWZhdWx0IGlmIG5vdCBwcmVzZW50LiIpOworCisjZGVmaW5lIF9HREJNX0dEQk1fU0VUREVGQVVMVF9NRVRIT0RERUYgICAgXAorICAgIHsic2V0ZGVmYXVsdCIsIChQeUNGdW5jdGlvbilfZ2RibV9nZGJtX3NldGRlZmF1bHQsIE1FVEhfVkFSQVJHUywgX2dkYm1fZ2RibV9zZXRkZWZhdWx0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX3NldGRlZmF1bHRfaW1wbChkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX3NldGRlZmF1bHQoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqa2V5OworICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNldGRlZmF1bHQiLAorICAgICAgICAxLCAyLAorICAgICAgICAma2V5LCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZ2RibV9nZGJtX3NldGRlZmF1bHRfaW1wbChzZWxmLCBrZXksIGRlZmF1bHRfdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZ2RibV9nZGJtX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkNsb3NlIHRoZSBkYXRhYmFzZS4iKTsKKworI2RlZmluZSBfR0RCTV9HREJNX0NMT1NFX01FVEhPRERFRiAgICBcCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilfZ2RibV9nZGJtX2Nsb3NlLCBNRVRIX05PQVJHUywgX2dkYm1fZ2RibV9jbG9zZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9jbG9zZV9pbXBsKGRibW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX2Nsb3NlKGRibW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2dkYm1fZ2RibV9jbG9zZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2dkYm1fZ2RibV9rZXlzX19kb2NfXywKKyJrZXlzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiR2V0IGEgbGlzdCBvZiBhbGwga2V5cyBpbiB0aGUgZGF0YWJhc2UuIik7CisKKyNkZWZpbmUgX0dEQk1fR0RCTV9LRVlTX01FVEhPRERFRiAgICBcCisgICAgeyJrZXlzIiwgKFB5Q0Z1bmN0aW9uKV9nZGJtX2dkYm1fa2V5cywgTUVUSF9OT0FSR1MsIF9nZGJtX2dkYm1fa2V5c19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9rZXlzX2ltcGwoZGJtb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fa2V5cyhkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9nZGJtX2dkYm1fa2V5c19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2dkYm1fZ2RibV9maXJzdGtleV9fZG9jX18sCisiZmlyc3RrZXkoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHN0YXJ0aW5nIGtleSBmb3IgdGhlIHRyYXZlcnNhbC5cbiIKKyJcbiIKKyJJdFwncyBwb3NzaWJsZSB0byBsb29wIG92ZXIgZXZlcnkga2V5IGluIHRoZSBkYXRhYmFzZSB1c2luZyB0aGlzIG1ldGhvZFxuIgorImFuZCB0aGUgbmV4dGtleSgpIG1ldGhvZC4gIFRoZSB0cmF2ZXJzYWwgaXMgb3JkZXJlZCBieSBHREJNXCdzIGludGVybmFsXG4iCisiaGFzaCB2YWx1ZXMsIGFuZCB3b25cJ3QgYmUgc29ydGVkIGJ5IHRoZSBrZXkgdmFsdWVzLiIpOworCisjZGVmaW5lIF9HREJNX0dEQk1fRklSU1RLRVlfTUVUSE9EREVGICAgIFwKKyAgICB7ImZpcnN0a2V5IiwgKFB5Q0Z1bmN0aW9uKV9nZGJtX2dkYm1fZmlyc3RrZXksIE1FVEhfTk9BUkdTLCBfZ2RibV9nZGJtX2ZpcnN0a2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX2ZpcnN0a2V5X2ltcGwoZGJtb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fZmlyc3RrZXkoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfZ2RibV9nZGJtX2ZpcnN0a2V5X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfZ2RibV9nZGJtX25leHRrZXlfX2RvY19fLAorIm5leHRrZXkoJHNlbGYsIGtleSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIGtleSB0aGF0IGZvbGxvd3Mga2V5IGluIHRoZSB0cmF2ZXJzYWwuXG4iCisiXG4iCisiVGhlIGZvbGxvd2luZyBjb2RlIHByaW50cyBldmVyeSBrZXkgaW4gdGhlIGRhdGFiYXNlIGRiLCB3aXRob3V0IGhhdmluZ1xuIgorInRvIGNyZWF0ZSBhIGxpc3QgaW4gbWVtb3J5IHRoYXQgY29udGFpbnMgdGhlbSBhbGw6XG4iCisiXG4iCisiICAgICAgayA9IGRiLmZpcnN0a2V5KClcbiIKKyIgICAgICB3aGlsZSBrICE9IE5vbmU6XG4iCisiICAgICAgICAgIHByaW50KGspXG4iCisiICAgICAgICAgIGsgPSBkYi5uZXh0a2V5KGspIik7CisKKyNkZWZpbmUgX0dEQk1fR0RCTV9ORVhUS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJuZXh0a2V5IiwgKFB5Q0Z1bmN0aW9uKV9nZGJtX2dkYm1fbmV4dGtleSwgTUVUSF9PLCBfZ2RibV9nZGJtX25leHRrZXlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fbmV4dGtleV9pbXBsKGRibW9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fbmV4dGtleShkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqa2V5OworICAgIFB5X3NzaXplX2NsZWFuX3Qga2V5X2xlbmd0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyM6bmV4dGtleSIsICZrZXksICZrZXlfbGVuZ3RoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9nZGJtX2dkYm1fbmV4dGtleV9pbXBsKHNlbGYsIGtleSwga2V5X2xlbmd0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9nZGJtX2dkYm1fcmVvcmdhbml6ZV9fZG9jX18sCisicmVvcmdhbml6ZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlb3JnYW5pemUgdGhlIGRhdGFiYXNlLlxuIgorIlxuIgorIklmIHlvdSBoYXZlIGNhcnJpZWQgb3V0IGEgbG90IG9mIGRlbGV0aW9ucyBhbmQgd291bGQgbGlrZSB0byBzaHJpbmtcbiIKKyJ0aGUgc3BhY2UgdXNlZCBieSB0aGUgR0RCTSBmaWxlLCB0aGlzIHJvdXRpbmUgd2lsbCByZW9yZ2FuaXplIHRoZVxuIgorImRhdGFiYXNlLiAgR0RCTSB3aWxsIG5vdCBzaG9ydGVuIHRoZSBsZW5ndGggb2YgYSBkYXRhYmFzZSBmaWxlIGV4Y2VwdFxuIgorImJ5IHVzaW5nIHRoaXMgcmVvcmdhbml6YXRpb247IG90aGVyd2lzZSwgZGVsZXRlZCBmaWxlIHNwYWNlIHdpbGwgYmVcbiIKKyJrZXB0IGFuZCByZXVzZWQgYXMgbmV3IChrZXksdmFsdWUpIHBhaXJzIGFyZSBhZGRlZC4iKTsKKworI2RlZmluZSBfR0RCTV9HREJNX1JFT1JHQU5JWkVfTUVUSE9EREVGICAgIFwKKyAgICB7InJlb3JnYW5pemUiLCAoUHlDRnVuY3Rpb24pX2dkYm1fZ2RibV9yZW9yZ2FuaXplLCBNRVRIX05PQVJHUywgX2dkYm1fZ2RibV9yZW9yZ2FuaXplX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX3Jlb3JnYW5pemVfaW1wbChkYm1vYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9yZW9yZ2FuaXplKGRibW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2dkYm1fZ2RibV9yZW9yZ2FuaXplX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfZ2RibV9nZGJtX3N5bmNfX2RvY19fLAorInN5bmMoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJGbHVzaCB0aGUgZGF0YWJhc2UgdG8gdGhlIGRpc2sgZmlsZS5cbiIKKyJcbiIKKyJXaGVuIHRoZSBkYXRhYmFzZSBoYXMgYmVlbiBvcGVuZWQgaW4gZmFzdCBtb2RlLCB0aGlzIG1ldGhvZCBmb3JjZXNcbiIKKyJhbnkgdW53cml0dGVuIGRhdGEgdG8gYmUgd3JpdHRlbiB0byB0aGUgZGlzay4iKTsKKworI2RlZmluZSBfR0RCTV9HREJNX1NZTkNfTUVUSE9EREVGICAgIFwKKyAgICB7InN5bmMiLCAoUHlDRnVuY3Rpb24pX2dkYm1fZ2RibV9zeW5jLCBNRVRIX05PQVJHUywgX2dkYm1fZ2RibV9zeW5jX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX3N5bmNfaW1wbChkYm1vYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9zeW5jKGRibW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2dkYm1fZ2RibV9zeW5jX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihkYm1vcGVuX19kb2NfXywKKyJvcGVuKCRtb2R1bGUsIGZpbGVuYW1lLCBmbGFncz1cJ3JcJywgbW9kZT0wbzY2NiwgLylcbiIKKyItLVxuIgorIlxuIgorIk9wZW4gYSBkYm0gZGF0YWJhc2UgYW5kIHJldHVybiBhIGRibSBvYmplY3QuXG4iCisiXG4iCisiVGhlIGZpbGVuYW1lIGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBmaWxlLlxuIgorIlxuIgorIlRoZSBvcHRpb25hbCBmbGFncyBhcmd1bWVudCBjYW4gYmUgXCdyXCcgKHRvIG9wZW4gYW4gZXhpc3RpbmcgZGF0YWJhc2VcbiIKKyJmb3IgcmVhZGluZyBvbmx5IC0tIGRlZmF1bHQpLCBcJ3dcJyAodG8gb3BlbiBhbiBleGlzdGluZyBkYXRhYmFzZSBmb3JcbiIKKyJyZWFkaW5nIGFuZCB3cml0aW5nKSwgXCdjXCcgKHdoaWNoIGNyZWF0ZXMgdGhlIGRhdGFiYXNlIGlmIGl0IGRvZXNuXCd0XG4iCisiZXhpc3QpLCBvciBcJ25cJyAod2hpY2ggYWx3YXlzIGNyZWF0ZXMgYSBuZXcgZW1wdHkgZGF0YWJhc2UpLlxuIgorIlxuIgorIlNvbWUgdmVyc2lvbnMgb2YgZ2RibSBzdXBwb3J0IGFkZGl0aW9uYWwgZmxhZ3Mgd2hpY2ggbXVzdCBiZVxuIgorImFwcGVuZGVkIHRvIG9uZSBvZiB0aGUgZmxhZ3MgZGVzY3JpYmVkIGFib3ZlLiAgVGhlIG1vZHVsZSBjb25zdGFudFxuIgorIlwnb3Blbl9mbGFnc1wnIGlzIGEgc3RyaW5nIG9mIHZhbGlkIGFkZGl0aW9uYWwgZmxhZ3MuICBUaGUgXCdmXCcgZmxhZ1xuIgorIm9wZW5zIHRoZSBkYXRhYmFzZSBpbiBmYXN0IG1vZGU7IGFsdGVyZWQgZGF0YSB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5XG4iCisiYmUgd3JpdHRlbiB0byB0aGUgZGlzayBhZnRlciBldmVyeSBjaGFuZ2UuICBUaGlzIHJlc3VsdHMgaW4gZmFzdGVyXG4iCisid3JpdGVzIHRvIHRoZSBkYXRhYmFzZSwgYnV0IG1heSByZXN1bHQgaW4gYW4gaW5jb25zaXN0ZW50IGRhdGFiYXNlXG4iCisiaWYgdGhlIHByb2dyYW0gY3Jhc2hlcyB3aGlsZSB0aGUgZGF0YWJhc2UgaXMgc3RpbGwgb3Blbi4gIFVzZSB0aGVcbiIKKyJzeW5jKCkgbWV0aG9kIHRvIGZvcmNlIGFueSB1bndyaXR0ZW4gZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZSBkaXNrLlxuIgorIlRoZSBcJ3NcJyBmbGFnIGNhdXNlcyBhbGwgZGF0YWJhc2Ugb3BlcmF0aW9ucyB0byBiZSBzeW5jaHJvbml6ZWQgdG9cbiIKKyJkaXNrLiAgVGhlIFwndVwnIGZsYWcgZGlzYWJsZXMgbG9ja2luZyBvZiB0aGUgZGF0YWJhc2UgZmlsZS5cbiIKKyJcbiIKKyJUaGUgb3B0aW9uYWwgbW9kZSBhcmd1bWVudCBpcyB0aGUgVW5peCBtb2RlIG9mIHRoZSBmaWxlLCB1c2VkIG9ubHlcbiIKKyJ3aGVuIHRoZSBkYXRhYmFzZSBoYXMgdG8gYmUgY3JlYXRlZC4gIEl0IGRlZmF1bHRzIHRvIG9jdGFsIDBvNjY2LiIpOworCisjZGVmaW5lIERCTU9QRU5fTUVUSE9EREVGICAgIFwKKyAgICB7Im9wZW4iLCAoUHlDRnVuY3Rpb24pZGJtb3BlbiwgTUVUSF9WQVJBUkdTLCBkYm1vcGVuX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitkYm1vcGVuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZmxhZ3MsCisgICAgICAgICAgICAgaW50IG1vZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorZGJtb3BlbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpuYW1lOworICAgIGNvbnN0IGNoYXIgKmZsYWdzID0gInIiOworICAgIGludCBtb2RlID0gNDM4OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzfHNpOm9wZW4iLAorICAgICAgICAmbmFtZSwgJmZsYWdzLCAmbW9kZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBkYm1vcGVuX2ltcGwobW9kdWxlLCBuYW1lLCBmbGFncywgbW9kZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kM2Q4ZDg3MWJjY2NiNjhhIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19sem1hbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19sem1hbW9kdWxlLmMuaAppbmRleCBjMWFkODgyLi41OWQ5ZDUxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fbHptYW1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2x6bWFtb2R1bGUuYy5oCkBAIC0xNCwyMCArMTQsMTggQEAKICJmbHVzaCgpIG1ldGhvZCB0byBmaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MuIik7CiAKICNkZWZpbmUgX0xaTUFfTFpNQUNPTVBSRVNTT1JfQ09NUFJFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKV9sem1hX0xaTUFDb21wcmVzc29yX2NvbXByZXNzLCBNRVRIX1ZBUkFSR1MsIF9sem1hX0xaTUFDb21wcmVzc29yX2NvbXByZXNzX19kb2NfX30sCisgICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfbHptYV9MWk1BQ29tcHJlc3Nvcl9jb21wcmVzcywgTUVUSF9PLCBfbHptYV9MWk1BQ29tcHJlc3Nvcl9jb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2x6bWFfTFpNQUNvbXByZXNzb3JfY29tcHJlc3NfaW1wbChDb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2x6bWFfTFpNQUNvbXByZXNzb3JfY29tcHJlc3MoQ29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfbHptYV9MWk1BQ29tcHJlc3Nvcl9jb21wcmVzcyhDb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Kjpjb21wcmVzcyIsCi0gICAgICAgICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmNvbXByZXNzIiwgJmRhdGEpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfTFpNQUNvbXByZXNzb3JfY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSk7CiAKQEAgLTYyLDM0ICs2MCw0MyBAQAogfQogCiBQeURvY19TVFJWQVIoX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19kb2NfXywKLSJkZWNvbXByZXNzKCRzZWxmLCBkYXRhLCAvKVxuIgorImRlY29tcHJlc3MoJHNlbGYsIC8sIGRhdGEsIG1heF9sZW5ndGg9LTEpXG4iCiAiLS1cbiIKICJcbiIKLSJQcm92aWRlIGRhdGEgdG8gdGhlIGRlY29tcHJlc3NvciBvYmplY3QuXG4iCisiRGVjb21wcmVzcyAqZGF0YSosIHJldHVybmluZyB1bmNvbXByZXNzZWQgZGF0YSBhcyBieXRlcy5cbiIKICJcbiIKLSJSZXR1cm5zIGEgY2h1bmsgb2YgZGVjb21wcmVzc2VkIGRhdGEgaWYgcG9zc2libGUsIG9yIGJcJ1wnIG90aGVyd2lzZS5cbiIKKyJJZiAqbWF4X2xlbmd0aCogaXMgbm9ubmVnYXRpdmUsIHJldHVybnMgYXQgbW9zdCAqbWF4X2xlbmd0aCogYnl0ZXMgb2ZcbiIKKyJkZWNvbXByZXNzZWQgZGF0YS4gSWYgdGhpcyBsaW1pdCBpcyByZWFjaGVkIGFuZCBmdXJ0aGVyIG91dHB1dCBjYW4gYmVcbiIKKyJwcm9kdWNlZCwgKnNlbGYubmVlZHNfaW5wdXQqIHdpbGwgYmUgc2V0IHRvIGBgRmFsc2VgYC4gSW4gdGhpcyBjYXNlLCB0aGUgbmV4dFxuIgorImNhbGwgdG8gKmRlY29tcHJlc3MoKSogbWF5IHByb3ZpZGUgKmRhdGEqIGFzIGJcJ1wnIHRvIG9idGFpbiBtb3JlIG9mIHRoZSBvdXRwdXQuXG4iCiAiXG4iCi0iQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0gaXMgcmVhY2hlZFxuIgotInJhaXNlcyBhbiBFT0ZFcnJvci4gIEFueSBkYXRhIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YgdGhlIHN0cmVhbVxuIgotImlzIGlnbm9yZWQgYW5kIHNhdmVkIGluIHRoZSB1bnVzZWRfZGF0YSBhdHRyaWJ1dGUuIik7CisiSWYgYWxsIG9mIHRoZSBpbnB1dCBkYXRhIHdhcyBkZWNvbXByZXNzZWQgYW5kIHJldHVybmVkIChlaXRoZXIgYmVjYXVzZSB0aGlzXG4iCisid2FzIGxlc3MgdGhhbiAqbWF4X2xlbmd0aCogYnl0ZXMsIG9yIGJlY2F1c2UgKm1heF9sZW5ndGgqIHdhcyBuZWdhdGl2ZSksXG4iCisiKnNlbGYubmVlZHNfaW5wdXQqIHdpbGwgYmUgc2V0IHRvIFRydWUuXG4iCisiXG4iCisiQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0gaXMgcmVhY2hlZCByYWlzZXMgYW5cbiIKKyJFT0ZFcnJvci4gIEFueSBkYXRhIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSBpcyBpZ25vcmVkIGFuZCBzYXZlZCBpblxuIgorInRoZSB1bnVzZWRfZGF0YSBhdHRyaWJ1dGUuIik7CiAKICNkZWZpbmUgX0xaTUFfTFpNQURFQ09NUFJFU1NPUl9ERUNPTVBSRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKV9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLCBfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3NfX2RvY19ffSwKKyAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChEZWNvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSk7CitfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChEZWNvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3MoRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzcyhEZWNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJtYXhfbGVuZ3RoIiwgTlVMTH07CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqOmRlY29tcHJlc3MiLAotICAgICAgICAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8bjpkZWNvbXByZXNzIiwgX2tleXdvcmRzLAorICAgICAgICAmZGF0YSwgJm1heF9sZW5ndGgpKQogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEpOworICAgIHJldHVybl92YWx1ZSA9IF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKHNlbGYsICZkYXRhLCBtYXhfbGVuZ3RoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCkBAIC0xMjMsNyArMTMwLDggQEAKICJGb3Igb25lLXNob3QgZGVjb21wcmVzc2lvbiwgdXNlIHRoZSBkZWNvbXByZXNzKCkgZnVuY3Rpb24gaW5zdGVhZC4iKTsKIAogc3RhdGljIGludAotX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKERlY29tcHJlc3NvciAqc2VsZiwgaW50IGZvcm1hdCwgUHlPYmplY3QgKm1lbWxpbWl0LCBQeU9iamVjdCAqZmlsdGVycyk7CitfbHptYV9MWk1BRGVjb21wcmVzc29yX19faW5pdF9fX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBpbnQgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptZW1saW1pdCwgUHlPYmplY3QgKmZpbHRlcnMpOwogCiBzdGF0aWMgaW50CiBfbHptYV9MWk1BRGVjb21wcmVzc29yX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKQEAgLTEzNCw4ICsxNDIsNyBAQAogICAgIFB5T2JqZWN0ICptZW1saW1pdCA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKmZpbHRlcnMgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAifGlPTzpMWk1BRGVjb21wcmVzc29yIiwgX2tleXdvcmRzLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpT086TFpNQURlY29tcHJlc3NvciIsIF9rZXl3b3JkcywKICAgICAgICAgJmZvcm1hdCwgJm1lbWxpbWl0LCAmZmlsdGVycykpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBfbHptYV9MWk1BRGVjb21wcmVzc29yX19faW5pdF9fX2ltcGwoKERlY29tcHJlc3NvciAqKXNlbGYsIGZvcm1hdCwgbWVtbGltaXQsIGZpbHRlcnMpOwpAQCAtMTUzLDIwICsxNjAsMTggQEAKICJBbHdheXMgcmV0dXJucyBUcnVlIGZvciBDSEVDS19OT05FIGFuZCBDSEVDS19DUkMzMi4iKTsKIAogI2RlZmluZSBfTFpNQV9JU19DSEVDS19TVVBQT1JURURfTUVUSE9EREVGICAgIFwKLSAgICB7ImlzX2NoZWNrX3N1cHBvcnRlZCIsIChQeUNGdW5jdGlvbilfbHptYV9pc19jaGVja19zdXBwb3J0ZWQsIE1FVEhfVkFSQVJHUywgX2x6bWFfaXNfY2hlY2tfc3VwcG9ydGVkX19kb2NfX30sCisgICAgeyJpc19jaGVja19zdXBwb3J0ZWQiLCAoUHlDRnVuY3Rpb24pX2x6bWFfaXNfY2hlY2tfc3VwcG9ydGVkLCBNRVRIX08sIF9sem1hX2lzX2NoZWNrX3N1cHBvcnRlZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2x6bWFfaXNfY2hlY2tfc3VwcG9ydGVkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGNoZWNrX2lkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9sem1hX2lzX2NoZWNrX3N1cHBvcnRlZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK19sem1hX2lzX2NoZWNrX3N1cHBvcnRlZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBjaGVja19pZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiaTppc19jaGVja19zdXBwb3J0ZWQiLAotICAgICAgICAmY2hlY2tfaWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTppc19jaGVja19zdXBwb3J0ZWQiLCAmY2hlY2tfaWQpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfaXNfY2hlY2tfc3VwcG9ydGVkX2ltcGwobW9kdWxlLCBjaGVja19pZCk7CiAKQEAgLTE4MywyMCArMTg4LDE4IEBACiAiVGhlIHJlc3VsdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBmaWx0ZXIgSUQgaXRzZWxmLCBvbmx5IHRoZSBvcHRpb25zLiIpOwogCiAjZGVmaW5lIF9MWk1BX19FTkNPREVfRklMVEVSX1BST1BFUlRJRVNfTUVUSE9EREVGICAgIFwKLSAgICB7Il9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLCAoUHlDRnVuY3Rpb24pX2x6bWFfX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcywgTUVUSF9WQVJBUkdTLCBfbHptYV9fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX19kb2NfX30sCisgICAgeyJfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwgKFB5Q0Z1bmN0aW9uKV9sem1hX19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMsIE1FVEhfTywgX2x6bWFfX2VuY29kZV9maWx0ZXJfcHJvcGVydGllc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2x6bWFfX2VuY29kZV9maWx0ZXJfcHJvcGVydGllc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGx6bWFfZmlsdGVyIGZpbHRlcik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbHptYV9fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorX2x6bWFfX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGx6bWFfZmlsdGVyIGZpbHRlciA9IHtMWk1BX1ZMSV9VTktOT1dOLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiTyY6X2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyIsCi0gICAgICAgIGx6bWFfZmlsdGVyX2NvbnZlcnRlciwgJmZpbHRlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwgbHptYV9maWx0ZXJfY29udmVydGVyLCAmZmlsdGVyKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IF9sem1hX19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXNfaW1wbChtb2R1bGUsIGZpbHRlcik7CiAKQEAgLTIyMCw3ICsyMjMsOCBAQAogICAgIHsiX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyIsIChQeUNGdW5jdGlvbilfbHptYV9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzLCBNRVRIX1ZBUkFSR1MsIF9sem1hX19kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9sem1hX19kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBsem1hX3ZsaSBmaWx0ZXJfaWQsIFB5X2J1ZmZlciAqZW5jb2RlZF9wcm9wcyk7CitfbHptYV9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgbHptYV92bGkgZmlsdGVyX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqZW5jb2RlZF9wcm9wcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbHptYV9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjI5LDggKzIzMyw3IEBACiAgICAgbHptYV92bGkgZmlsdGVyX2lkOwogICAgIFB5X2J1ZmZlciBlbmNvZGVkX3Byb3BzID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJPJnkqOl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ5KjpfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwKICAgICAgICAgbHptYV92bGlfY29udmVydGVyLCAmZmlsdGVyX2lkLCAmZW5jb2RlZF9wcm9wcykpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBfbHptYV9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2ltcGwobW9kdWxlLCBmaWx0ZXJfaWQsICZlbmNvZGVkX3Byb3BzKTsKQEAgLTI0Miw0ICsyNDUsNCBAQAogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04MDhmZWM4MjE2YWM3MTJiIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZDNlMDg0MmJlM2QzZmUxIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19vcGNvZGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX29wY29kZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk2YTJlZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL19vcGNvZGUuYy5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfb3Bjb2RlX3N0YWNrX2VmZmVjdF9fZG9jX18sCisic3RhY2tfZWZmZWN0KCRtb2R1bGUsIG9wY29kZSwgb3Bhcmc9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNvbXB1dGUgdGhlIHN0YWNrIGVmZmVjdCBvZiB0aGUgb3Bjb2RlLiIpOworCisjZGVmaW5lIF9PUENPREVfU1RBQ0tfRUZGRUNUX01FVEhPRERFRiAgICBcCisgICAgeyJzdGFja19lZmZlY3QiLCAoUHlDRnVuY3Rpb24pX29wY29kZV9zdGFja19lZmZlY3QsIE1FVEhfVkFSQVJHUywgX29wY29kZV9zdGFja19lZmZlY3RfX2RvY19ffSwKKworc3RhdGljIGludAorX29wY29kZV9zdGFja19lZmZlY3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgb3Bjb2RlLCBQeU9iamVjdCAqb3BhcmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX29wY29kZV9zdGFja19lZmZlY3QoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IG9wY29kZTsKKyAgICBQeU9iamVjdCAqb3BhcmcgPSBQeV9Ob25lOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpfE86c3RhY2tfZWZmZWN0IiwKKyAgICAgICAgJm9wY29kZSwgJm9wYXJnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBfb3Bjb2RlX3N0YWNrX2VmZmVjdF9pbXBsKG1vZHVsZSwgb3Bjb2RlLCBvcGFyZyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGVlN2NiNzM1NzA1ZThiMyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fcGlja2xlLmMuaCBiL01vZHVsZXMvY2xpbmljL19waWNrbGUuYy5oCmluZGV4IGMwYzU0ZDIuLmE5ZjBjNDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19waWNrbGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19waWNrbGUuYy5oCkBAIC04NSw3ICs4NSw4IEBACiAiMiwgc28gdGhhdCB0aGUgcGlja2xlIGRhdGEgc3RyZWFtIGlzIHJlYWRhYmxlIHdpdGggUHl0aG9uIDIuIik7CiAKIHN0YXRpYyBpbnQKLV9waWNrbGVfUGlja2xlcl9fX2luaXRfX19pbXBsKFBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlLCBQeU9iamVjdCAqcHJvdG9jb2wsIGludCBmaXhfaW1wb3J0cyk7CitfcGlja2xlX1BpY2tsZXJfX19pbml0X19faW1wbChQaWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwcm90b2NvbCwgaW50IGZpeF9pbXBvcnRzKTsKIAogc3RhdGljIGludAogX3BpY2tsZV9QaWNrbGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKQEAgLTk2LDggKzk3LDcgQEAKICAgICBQeU9iamVjdCAqcHJvdG9jb2wgPSBOVUxMOwogICAgIGludCBmaXhfaW1wb3J0cyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCi0gICAgICAgICJPfE9wOlBpY2tsZXIiLCBfa2V5d29yZHMsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPcDpQaWNrbGVyIiwgX2tleXdvcmRzLAogICAgICAgICAmZmlsZSwgJnByb3RvY29sLCAmZml4X2ltcG9ydHMpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9QaWNrbGVyX19faW5pdF9fX2ltcGwoKFBpY2tsZXJPYmplY3QgKilzZWxmLCBmaWxlLCBwcm90b2NvbCwgZml4X2ltcG9ydHMpOwpAQCAtMTk5LDcgKzE5OSw5IEBACiAgICAgeyJmaW5kX2NsYXNzIiwgKFB5Q0Z1bmN0aW9uKV9waWNrbGVfVW5waWNrbGVyX2ZpbmRfY2xhc3MsIE1FVEhfVkFSQVJHUywgX3BpY2tsZV9VbnBpY2tsZXJfZmluZF9jbGFzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotX3BpY2tsZV9VbnBpY2tsZXJfZmluZF9jbGFzc19pbXBsKFVucGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm1vZHVsZV9uYW1lLCBQeU9iamVjdCAqZ2xvYmFsX25hbWUpOworX3BpY2tsZV9VbnBpY2tsZXJfZmluZF9jbGFzc19pbXBsKFVucGlja2xlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kdWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmdsb2JhbF9uYW1lKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9waWNrbGVfVW5waWNrbGVyX2ZpbmRfY2xhc3MoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTI3MSw3ICsyNzMsOSBAQAogInN0cmluZyBpbnN0YW5jZXMgYXMgYnl0ZXMgb2JqZWN0cy4iKTsKIAogc3RhdGljIGludAotX3BpY2tsZV9VbnBpY2tsZXJfX19pbml0X19faW1wbChVbnBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlLCBpbnQgZml4X2ltcG9ydHMsIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpOworX3BpY2tsZV9VbnBpY2tsZXJfX19pbml0X19faW1wbChVbnBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZml4X2ltcG9ydHMsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgaW50CiBfcGlja2xlX1VucGlja2xlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCkBAIC0yODMsOCArMjg3LDcgQEAKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9ICJBU0NJSSI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gInN0cmljdCI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCi0gICAgICAgICJPfCRwc3M6VW5waWNrbGVyIiwgX2tleXdvcmRzLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98JHBzczpVbnBpY2tsZXIiLCBfa2V5d29yZHMsCiAgICAgICAgICZmaWxlLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX1VucGlja2xlcl9fX2luaXRfX19pbXBsKChVbnBpY2tsZXJPYmplY3QgKilzZWxmLCBmaWxlLCBmaXhfaW1wb3J0cywgZW5jb2RpbmcsIGVycm9ycyk7CkBAIC0zNzcsNyArMzgwLDggQEAKICAgICB7ImR1bXAiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9kdW1wLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3BpY2tsZV9kdW1wX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fcGlja2xlX2R1bXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqZmlsZSwgUHlPYmplY3QgKnByb3RvY29sLCBpbnQgZml4X2ltcG9ydHMpOworX3BpY2tsZV9kdW1wX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmZpbGUsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcHJvdG9jb2wsIGludCBmaXhfaW1wb3J0cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfcGlja2xlX2R1bXAoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCkBAIC0zODksOCArMzkzLDcgQEAKICAgICBQeU9iamVjdCAqcHJvdG9jb2wgPSBOVUxMOwogICAgIGludCBmaXhfaW1wb3J0cyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCi0gICAgICAgICJPT3xPJHA6ZHVtcCIsIF9rZXl3b3JkcywKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT3xPJHA6ZHVtcCIsIF9rZXl3b3JkcywKICAgICAgICAgJm9iaiwgJmZpbGUsICZwcm90b2NvbCwgJmZpeF9pbXBvcnRzKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfZHVtcF9pbXBsKG1vZHVsZSwgb2JqLCBmaWxlLCBwcm90b2NvbCwgZml4X2ltcG9ydHMpOwpAQCAtNDIxLDcgKzQyNCw4IEBACiAgICAgeyJkdW1wcyIsIChQeUNGdW5jdGlvbilfcGlja2xlX2R1bXBzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3BpY2tsZV9kdW1wc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotX3BpY2tsZV9kdW1wc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpwcm90b2NvbCwgaW50IGZpeF9pbXBvcnRzKTsKK19waWNrbGVfZHVtcHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqcHJvdG9jb2wsCisgICAgICAgICAgICAgICAgICAgaW50IGZpeF9pbXBvcnRzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9waWNrbGVfZHVtcHMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCkBAIC00MzIsOCArNDM2LDcgQEAKICAgICBQeU9iamVjdCAqcHJvdG9jb2wgPSBOVUxMOwogICAgIGludCBmaXhfaW1wb3J0cyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCi0gICAgICAgICJPfE8kcDpkdW1wcyIsIF9rZXl3b3JkcywKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE8kcDpkdW1wcyIsIF9rZXl3b3JkcywKICAgICAgICAgJm9iaiwgJnByb3RvY29sLCAmZml4X2ltcG9ydHMpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9kdW1wc19pbXBsKG1vZHVsZSwgb2JqLCBwcm90b2NvbCwgZml4X2ltcG9ydHMpOwpAQCAtNDc1LDcgKzQ3OCw4IEBACiAgICAgeyJsb2FkIiwgKFB5Q0Z1bmN0aW9uKV9waWNrbGVfbG9hZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9waWNrbGVfbG9hZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotX3BpY2tsZV9sb2FkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUsIGludCBmaXhfaW1wb3J0cywgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycyk7CitfcGlja2xlX2xvYWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSwgaW50IGZpeF9pbXBvcnRzLAorICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfcGlja2xlX2xvYWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCkBAIC00ODcsOCArNDkxLDcgQEAKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9ICJBU0NJSSI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gInN0cmljdCI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCi0gICAgICAgICJPfCRwc3M6bG9hZCIsIF9rZXl3b3JkcywKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfCRwc3M6bG9hZCIsIF9rZXl3b3JkcywKICAgICAgICAgJmZpbGUsICZmaXhfaW1wb3J0cywgJmVuY29kaW5nLCAmZXJyb3JzKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfbG9hZF9pbXBsKG1vZHVsZSwgZmlsZSwgZml4X2ltcG9ydHMsIGVuY29kaW5nLCBlcnJvcnMpOwpAQCAtNTIxLDcgKzUyNCw4IEBACiAgICAgeyJsb2FkcyIsIChQeUNGdW5jdGlvbilfcGlja2xlX2xvYWRzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3BpY2tsZV9sb2Fkc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotX3BpY2tsZV9sb2Fkc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpkYXRhLCBpbnQgZml4X2ltcG9ydHMsIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpOworX3BpY2tsZV9sb2Fkc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpkYXRhLCBpbnQgZml4X2ltcG9ydHMsCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfcGlja2xlX2xvYWRzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQpAQCAtNTMzLDggKzUzNyw3IEBACiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSAiQVNDSUkiOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9ICJzdHJpY3QiOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAiT3wkcHNzOmxvYWRzIiwgX2tleXdvcmRzLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98JHBzczpsb2FkcyIsIF9rZXl3b3JkcywKICAgICAgICAgJmRhdGEsICZmaXhfaW1wb3J0cywgJmVuY29kaW5nLCAmZXJyb3JzKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfbG9hZHNfaW1wbChtb2R1bGUsIGRhdGEsIGZpeF9pbXBvcnRzLCBlbmNvZGluZywgZXJyb3JzKTsKQEAgLTU0Miw0ICs1NDUsNCBAQAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFiYTIxMDE1MmUyMjYxZDggaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFlY2Q2MTY2MGQxY2YzMWQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3NyZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fc3JlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGU0NzA4Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX3NyZS5jLmgKQEAgLTAsMCArMSw2OTMgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfc3JlX2dldGNvZGVzaXplX19kb2NfXywKKyJnZXRjb2Rlc2l6ZSgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1JFX0dFVENPREVTSVpFX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRjb2Rlc2l6ZSIsIChQeUNGdW5jdGlvbilfc3JlX2dldGNvZGVzaXplLCBNRVRIX05PQVJHUywgX3NyZV9nZXRjb2Rlc2l6ZV9fZG9jX199LAorCitzdGF0aWMgaW50Citfc3JlX2dldGNvZGVzaXplX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX2dldGNvZGVzaXplKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBfcmV0dXJuX3ZhbHVlID0gX3NyZV9nZXRjb2Rlc2l6ZV9pbXBsKG1vZHVsZSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX2dldGxvd2VyX19kb2NfXywKKyJnZXRsb3dlcigkbW9kdWxlLCBjaGFyYWN0ZXIsIGZsYWdzLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1JFX0dFVExPV0VSX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRsb3dlciIsIChQeUNGdW5jdGlvbilfc3JlX2dldGxvd2VyLCBNRVRIX1ZBUkFSR1MsIF9zcmVfZ2V0bG93ZXJfX2RvY19ffSwKKworc3RhdGljIGludAorX3NyZV9nZXRsb3dlcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBjaGFyYWN0ZXIsIGludCBmbGFncyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX2dldGxvd2VyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBjaGFyYWN0ZXI7CisgICAgaW50IGZsYWdzOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpnZXRsb3dlciIsCisgICAgICAgICZjaGFyYWN0ZXIsICZmbGFncykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gX3NyZV9nZXRsb3dlcl9pbXBsKG1vZHVsZSwgY2hhcmFjdGVyLCBmbGFncyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9QYXR0ZXJuX21hdGNoX19kb2NfXywKKyJtYXRjaCgkc2VsZiwgLywgc3RyaW5nPU5vbmUsIHBvcz0wLCBlbmRwb3M9c3lzLm1heHNpemUsICosIHBhdHRlcm49Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIk1hdGNoZXMgemVybyBvciBtb3JlIGNoYXJhY3RlcnMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fTUFUQ0hfTUVUSE9EREVGICAgIFwKKyAgICB7Im1hdGNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fbWF0Y2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX21hdGNoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX21hdGNoX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdHRlcm4pOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9tYXRjaChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInBhdHRlcm4iLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CisgICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKKyAgICBQeU9iamVjdCAqcGF0dGVybiA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T25uJE86bWF0Y2giLCBfa2V5d29yZHMsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fbWF0Y2hfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zLCBwYXR0ZXJuKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2hfX2RvY19fLAorImZ1bGxtYXRjaCgkc2VsZiwgLywgc3RyaW5nPU5vbmUsIHBvcz0wLCBlbmRwb3M9c3lzLm1heHNpemUsICosXG4iCisiICAgICAgICAgIHBhdHRlcm49Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIk1hdGNoZXMgYWdhaW5zdCBhbGwgb2YgdGhlIHN0cmluZyIpOworCisjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fRlVMTE1BVENIX01FVEhPRERFRiAgICBcCisgICAgeyJmdWxsbWF0Y2giLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2hfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXR0ZXJuKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAicGF0dGVybiIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOworICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOworICAgIFB5T2JqZWN0ICpwYXR0ZXJuID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbm4kTzpmdWxsbWF0Y2giLCBfa2V5d29yZHMsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcywgcGF0dGVybik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX1BhdHRlcm5fc2VhcmNoX19kb2NfXywKKyJzZWFyY2goJHNlbGYsIC8sIHN0cmluZz1Ob25lLCBwb3M9MCwgZW5kcG9zPXN5cy5tYXhzaXplLCAqLFxuIgorIiAgICAgICBwYXR0ZXJuPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJTY2FuIHRocm91Z2ggc3RyaW5nIGxvb2tpbmcgZm9yIGEgbWF0Y2gsIGFuZCByZXR1cm4gYSBjb3JyZXNwb25kaW5nIG1hdGNoIG9iamVjdCBpbnN0YW5jZS5cbiIKKyJcbiIKKyJSZXR1cm4gTm9uZSBpZiBubyBwb3NpdGlvbiBpbiB0aGUgc3RyaW5nIG1hdGNoZXMuIik7CisKKyNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9TRUFSQ0hfTUVUSE9EREVGICAgIFwKKyAgICB7InNlYXJjaCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fc2VhcmNoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdHRlcm4pOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zZWFyY2goUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CisgICAgUHlPYmplY3QgKnBhdHRlcm4gPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9ubiRPOnNlYXJjaCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcywgJnBhdHRlcm4pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9zZWFyY2hfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zLCBwYXR0ZXJuKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfUGF0dGVybl9maW5kYWxsX19kb2NfXywKKyJmaW5kYWxsKCRzZWxmLCAvLCBzdHJpbmc9Tm9uZSwgcG9zPTAsIGVuZHBvcz1zeXMubWF4c2l6ZSwgKixcbiIKKyIgICAgICAgIHNvdXJjZT1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBvZiBhbGwgbm9uLW92ZXJsYXBwaW5nIG1hdGNoZXMgb2YgcGF0dGVybiBpbiBzdHJpbmcuIik7CisKKyNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9GSU5EQUxMX01FVEhPRERFRiAgICBcCisgICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fZmluZGFsbCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fZmluZGFsbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9maW5kYWxsX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzb3VyY2UpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9maW5kYWxsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAic291cmNlIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CisgICAgUHlPYmplY3QgKnNvdXJjZSA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T25uJE86ZmluZGFsbCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcywgJnNvdXJjZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGxfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zLCBzb3VyY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyX19kb2NfXywKKyJmaW5kaXRlcigkc2VsZiwgLywgc3RyaW5nLCBwb3M9MCwgZW5kcG9zPXN5cy5tYXhzaXplKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG5vbi1vdmVybGFwcGluZyBtYXRjaGVzIGZvciB0aGUgUkUgcGF0dGVybiBpbiBzdHJpbmcuXG4iCisiXG4iCisiRm9yIGVhY2ggbWF0Y2gsIHRoZSBpdGVyYXRvciByZXR1cm5zIGEgbWF0Y2ggb2JqZWN0LiIpOworCisjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fRklORElURVJfTUVUSE9EREVGICAgIFwKKyAgICB7ImZpbmRpdGVyIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnN0cmluZzsKKyAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CisgICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98bm46ZmluZGl0ZXIiLCBfa2V5d29yZHMsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcl9pbXBsKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXJfX2RvY19fLAorInNjYW5uZXIoJHNlbGYsIC8sIHN0cmluZywgcG9zPTAsIGVuZHBvcz1zeXMubWF4c2l6ZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9TQ0FOTkVSX01FVEhPRERFRiAgICBcCisgICAgeyJzY2FubmVyIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmc7CisgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG5uOnNjYW5uZXIiLCBfa2V5d29yZHMsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX1BhdHRlcm5fc3BsaXRfX2RvY19fLAorInNwbGl0KCRzZWxmLCAvLCBzdHJpbmc9Tm9uZSwgbWF4c3BsaXQ9MCwgKiwgc291cmNlPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJTcGxpdCBzdHJpbmcgYnkgdGhlIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4uIik7CisKKyNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9TUExJVF9NRVRIT0RERUYgICAgXAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fc3BsaXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc3BsaXRfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4c3BsaXQsIFB5T2JqZWN0ICpzb3VyY2UpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zcGxpdChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJtYXhzcGxpdCIsICJzb3VyY2UiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gMDsKKyAgICBQeU9iamVjdCAqc291cmNlID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbiRPOnNwbGl0IiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nLCAmbWF4c3BsaXQsICZzb3VyY2UpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9zcGxpdF9pbXBsKHNlbGYsIHN0cmluZywgbWF4c3BsaXQsIHNvdXJjZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX1BhdHRlcm5fc3ViX19kb2NfXywKKyJzdWIoJHNlbGYsIC8sIHJlcGwsIHN0cmluZywgY291bnQ9MClcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IHJlcGxhY2luZyB0aGUgbGVmdG1vc3Qgbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4gaW4gc3RyaW5nIGJ5IHRoZSByZXBsYWNlbWVudCByZXBsLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fU1VCX01FVEhPRERFRiAgICBcCisgICAgeyJzdWIiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zdWIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX3N1Yl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zdWJfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcmVwbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0cmluZywgUHlfc3NpemVfdCBjb3VudCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX3N1YihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InJlcGwiLCAic3RyaW5nIiwgImNvdW50IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJlcGw7CisgICAgUHlPYmplY3QgKnN0cmluZzsKKyAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PfG46c3ViIiwgX2tleXdvcmRzLAorICAgICAgICAmcmVwbCwgJnN0cmluZywgJmNvdW50KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc3ViX2ltcGwoc2VsZiwgcmVwbCwgc3RyaW5nLCBjb3VudCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX1BhdHRlcm5fc3Vibl9fZG9jX18sCisic3Vibigkc2VsZiwgLywgcmVwbCwgc3RyaW5nLCBjb3VudD0wKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB0dXBsZSAobmV3X3N0cmluZywgbnVtYmVyX29mX3N1YnNfbWFkZSkgZm91bmQgYnkgcmVwbGFjaW5nIHRoZSBsZWZ0bW9zdCBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2YgcGF0dGVybiB3aXRoIHRoZSByZXBsYWNlbWVudCByZXBsLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fU1VCTl9NRVRIT0RERUYgICAgXAorICAgIHsic3VibiIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3N1Ym4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX3N1Ym5fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc3Vibl9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpyZXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0cmluZywgUHlfc3NpemVfdCBjb3VudCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX3N1Ym4oUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJyZXBsIiwgInN0cmluZyIsICJjb3VudCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpyZXBsOworICAgIFB5T2JqZWN0ICpzdHJpbmc7CisgICAgUHlfc3NpemVfdCBjb3VudCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT3xuOnN1Ym4iLCBfa2V5d29yZHMsCisgICAgICAgICZyZXBsLCAmc3RyaW5nLCAmY291bnQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9zdWJuX2ltcGwoc2VsZiwgcmVwbCwgc3RyaW5nLCBjb3VudCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX1BhdHRlcm5fX19jb3B5X19fX2RvY19fLAorIl9fY29weV9fKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX19fQ09QWV9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX2NvcHlfXyIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX19fY29weV9fLCBNRVRIX05PQVJHUywgX3NyZV9TUkVfUGF0dGVybl9fX2NvcHlfX19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9fX2NvcHlfX19pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9fX2NvcHlfXyhQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3JlX1NSRV9QYXR0ZXJuX19fY29weV9fX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfX19fZG9jX18sCisiX19kZWVwY29weV9fKCRzZWxmLCAvLCBtZW1vKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX19fREVFUENPUFlfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X19fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm1lbW8pOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X18oUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJtZW1vIiwgTlVMTH07CisgICAgUHlPYmplY3QgKm1lbW87CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOl9fZGVlcGNvcHlfXyIsIF9rZXl3b3JkcywKKyAgICAgICAgJm1lbW8pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X19faW1wbChzZWxmLCBtZW1vKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9jb21waWxlX19kb2NfXywKKyJjb21waWxlKCRtb2R1bGUsIC8sIHBhdHRlcm4sIGZsYWdzLCBjb2RlLCBncm91cHMsIGdyb3VwaW5kZXgsXG4iCisiICAgICAgICBpbmRleGdyb3VwKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1JFX0NPTVBJTEVfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvbXBpbGUiLCAoUHlDRnVuY3Rpb24pX3NyZV9jb21waWxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9jb21waWxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX2NvbXBpbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcGF0dGVybiwgaW50IGZsYWdzLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvZGUsIFB5X3NzaXplX3QgZ3JvdXBzLCBQeU9iamVjdCAqZ3JvdXBpbmRleCwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbmRleGdyb3VwKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfY29tcGlsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdHRlcm4iLCAiZmxhZ3MiLCAiY29kZSIsICJncm91cHMiLCAiZ3JvdXBpbmRleCIsICJpbmRleGdyb3VwIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnBhdHRlcm47CisgICAgaW50IGZsYWdzOworICAgIFB5T2JqZWN0ICpjb2RlOworICAgIFB5X3NzaXplX3QgZ3JvdXBzOworICAgIFB5T2JqZWN0ICpncm91cGluZGV4OworICAgIFB5T2JqZWN0ICppbmRleGdyb3VwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT2lPIW5PTzpjb21waWxlIiwgX2tleXdvcmRzLAorICAgICAgICAmcGF0dGVybiwgJmZsYWdzLCAmUHlMaXN0X1R5cGUsICZjb2RlLCAmZ3JvdXBzLCAmZ3JvdXBpbmRleCwgJmluZGV4Z3JvdXApKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9jb21waWxlX2ltcGwobW9kdWxlLCBwYXR0ZXJuLCBmbGFncywgY29kZSwgZ3JvdXBzLCBncm91cGluZGV4LCBpbmRleGdyb3VwKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfTWF0Y2hfZXhwYW5kX19kb2NfXywKKyJleHBhbmQoJHNlbGYsIC8sIHRlbXBsYXRlKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgZG9pbmcgYmFja3NsYXNoIHN1YnN0aXR1dGlvbiBvbiB0aGUgc3RyaW5nIHRlbXBsYXRlLCBhcyBkb25lIGJ5IHRoZSBzdWIoKSBtZXRob2QuIik7CisKKyNkZWZpbmUgX1NSRV9TUkVfTUFUQ0hfRVhQQU5EX01FVEhPRERFRiAgICBcCisgICAgeyJleHBhbmQiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfZXhwYW5kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfTWF0Y2hfZXhwYW5kX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9leHBhbmRfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRlbXBsYXRlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX2V4cGFuZChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ0ZW1wbGF0ZSIsIE5VTEx9OworICAgIFB5T2JqZWN0ICp0ZW1wbGF0ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk86ZXhwYW5kIiwgX2tleXdvcmRzLAorICAgICAgICAmdGVtcGxhdGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfZXhwYW5kX2ltcGwoc2VsZiwgdGVtcGxhdGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9NYXRjaF9ncm91cHNfX2RvY19fLAorImdyb3Vwcygkc2VsZiwgLywgZGVmYXVsdD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgdHVwbGUgY29udGFpbmluZyBhbGwgdGhlIHN1Ymdyb3VwcyBvZiB0aGUgbWF0Y2gsIGZyb20gMS5cbiIKKyJcbiIKKyIgIGRlZmF1bHRcbiIKKyIgICAgSXMgdXNlZCBmb3IgZ3JvdXBzIHRoYXQgZGlkIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgbWF0Y2guIik7CisKKyNkZWZpbmUgX1NSRV9TUkVfTUFUQ0hfR1JPVVBTX01FVEhPRERFRiAgICBcCisgICAgeyJncm91cHMiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9ncm91cHNfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRlZmF1bHQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8Tzpncm91cHMiLCBfa2V5d29yZHMsCisgICAgICAgICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX01hdGNoX2dyb3Vwc19pbXBsKHNlbGYsIGRlZmF1bHRfdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3RfX2RvY19fLAorImdyb3VwZGljdCgkc2VsZiwgLywgZGVmYXVsdD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFsbCB0aGUgbmFtZWQgc3ViZ3JvdXBzIG9mIHRoZSBtYXRjaCwga2V5ZWQgYnkgdGhlIHN1Ymdyb3VwIG5hbWUuXG4iCisiXG4iCisiICBkZWZhdWx0XG4iCisiICAgIElzIHVzZWQgZm9yIGdyb3VwcyB0aGF0IGRpZCBub3QgcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX0dST1VQRElDVF9NRVRIT0RERUYgICAgXAorICAgIHsiZ3JvdXBkaWN0IiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2dyb3VwZGljdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX2dyb3VwZGljdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0X2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX2dyb3VwZGljdChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkZWZhdWx0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86Z3JvdXBkaWN0IiwgX2tleXdvcmRzLAorICAgICAgICAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3RfaW1wbChzZWxmLCBkZWZhdWx0X3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfTWF0Y2hfc3RhcnRfX2RvY19fLAorInN0YXJ0KCRzZWxmLCBncm91cD0wLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGluZGV4IG9mIHRoZSBzdGFydCBvZiB0aGUgc3Vic3RyaW5nIG1hdGNoZWQgYnkgZ3JvdXAuIik7CisKKyNkZWZpbmUgX1NSRV9TUkVfTUFUQ0hfU1RBUlRfTUVUSE9EREVGICAgIFwKKyAgICB7InN0YXJ0IiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX3N0YXJ0LCBNRVRIX1ZBUkFSR1MsIF9zcmVfU1JFX01hdGNoX3N0YXJ0X19kb2NfX30sCisKK3N0YXRpYyBQeV9zc2l6ZV90Citfc3JlX1NSRV9NYXRjaF9zdGFydF9pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZ3JvdXApOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfc3RhcnQoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpncm91cCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3RhcnQiLAorICAgICAgICAwLCAxLAorICAgICAgICAmZ3JvdXApKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IF9zcmVfU1JFX01hdGNoX3N0YXJ0X2ltcGwoc2VsZiwgZ3JvdXApOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfTWF0Y2hfZW5kX19kb2NfXywKKyJlbmQoJHNlbGYsIGdyb3VwPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gaW5kZXggb2YgdGhlIGVuZCBvZiB0aGUgc3Vic3RyaW5nIG1hdGNoZWQgYnkgZ3JvdXAuIik7CisKKyNkZWZpbmUgX1NSRV9TUkVfTUFUQ0hfRU5EX01FVEhPRERFRiAgICBcCisgICAgeyJlbmQiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfZW5kLCBNRVRIX1ZBUkFSR1MsIF9zcmVfU1JFX01hdGNoX2VuZF9fZG9jX199LAorCitzdGF0aWMgUHlfc3NpemVfdAorX3NyZV9TUkVfTWF0Y2hfZW5kX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpncm91cCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9lbmQoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpncm91cCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZW5kIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmdyb3VwKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9lbmRfaW1wbChzZWxmLCBncm91cCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9NYXRjaF9zcGFuX19kb2NfXywKKyJzcGFuKCRzZWxmLCBncm91cD0wLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRm9yIE1hdGNoT2JqZWN0IG0sIHJldHVybiB0aGUgMi10dXBsZSAobS5zdGFydChncm91cCksIG0uZW5kKGdyb3VwKSkuIik7CisKKyNkZWZpbmUgX1NSRV9TUkVfTUFUQ0hfU1BBTl9NRVRIT0RERUYgICAgXAorICAgIHsic3BhbiIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9zcGFuLCBNRVRIX1ZBUkFSR1MsIF9zcmVfU1JFX01hdGNoX3NwYW5fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX3NwYW5faW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmdyb3VwKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX3NwYW4oTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpncm91cCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzcGFuIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmdyb3VwKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX01hdGNoX3NwYW5faW1wbChzZWxmLCBncm91cCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX01hdGNoX19fY29weV9fX19kb2NfXywKKyJfX2NvcHlfXygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NSRV9TUkVfTUFUQ0hfX19DT1BZX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fY29weV9fIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX19fY29weV9fLCBNRVRIX05PQVJHUywgX3NyZV9TUkVfTWF0Y2hfX19jb3B5X19fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX19fY29weV9fX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfX19jb3B5X18oTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zcmVfU1JFX01hdGNoX19fY29weV9fX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9NYXRjaF9fX2RlZXBjb3B5X19fX2RvY19fLAorIl9fZGVlcGNvcHlfXygkc2VsZiwgLywgbWVtbylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NSRV9TUkVfTUFUQ0hfX19ERUVQQ09QWV9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX2RlZXBjb3B5X18iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9fX2RlZXBjb3B5X19faW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm1lbW8pOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im1lbW8iLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqbWVtbzsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk86X19kZWVwY29weV9fIiwgX2tleXdvcmRzLAorICAgICAgICAmbWVtbykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9fX2RlZXBjb3B5X19faW1wbChzZWxmLCBtZW1vKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfU2Nhbm5lcl9tYXRjaF9fZG9jX18sCisibWF0Y2goJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TUkVfU1JFX1NDQU5ORVJfTUFUQ0hfTUVUSE9EREVGICAgIFwKKyAgICB7Im1hdGNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1NjYW5uZXJfbWF0Y2gsIE1FVEhfTk9BUkdTLCBfc3JlX1NSRV9TY2FubmVyX21hdGNoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9TY2FubmVyX21hdGNoX2ltcGwoU2Nhbm5lck9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9TY2FubmVyX21hdGNoKFNjYW5uZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zcmVfU1JFX1NjYW5uZXJfbWF0Y2hfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX1NjYW5uZXJfc2VhcmNoX19kb2NfXywKKyJzZWFyY2goJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TUkVfU1JFX1NDQU5ORVJfU0VBUkNIX01FVEhPRERFRiAgICBcCisgICAgeyJzZWFyY2giLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfU2Nhbm5lcl9zZWFyY2gsIE1FVEhfTk9BUkdTLCBfc3JlX1NSRV9TY2FubmVyX3NlYXJjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfU2Nhbm5lcl9zZWFyY2hfaW1wbChTY2FubmVyT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1NjYW5uZXJfc2VhcmNoKFNjYW5uZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zcmVfU1JFX1NjYW5uZXJfc2VhcmNoX2ltcGwoc2VsZik7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDFkNzNhYjJjNTAwOGJkNCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fc3NsLmMuaCBiL01vZHVsZXMvY2xpbmljL19zc2wuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkYmM1ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fc3NsLmMuaApAQCAtMCwwICsxLDExMDUgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xTb2NrZXRfZG9faGFuZHNoYWtlX19kb2NfXywKKyJkb19oYW5kc2hha2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9ET19IQU5EU0hBS0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImRvX2hhbmRzaGFrZSIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xTb2NrZXRfZG9faGFuZHNoYWtlLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMU29ja2V0X2RvX2hhbmRzaGFrZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X2RvX2hhbmRzaGFrZV9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9kb19oYW5kc2hha2UoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfX1NTTFNvY2tldF9kb19oYW5kc2hha2VfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfX3Rlc3RfZGVjb2RlX2NlcnRfX2RvY19fLAorIl90ZXN0X2RlY29kZV9jZXJ0KCRtb2R1bGUsIHBhdGgsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1RFU1RfREVDT0RFX0NFUlRfTUVUSE9EREVGICAgIFwKKyAgICB7Il90ZXN0X2RlY29kZV9jZXJ0IiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX3Rlc3RfZGVjb2RlX2NlcnQsIE1FVEhfTywgX3NzbF9fdGVzdF9kZWNvZGVfY2VydF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fdGVzdF9kZWNvZGVfY2VydF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX3Rlc3RfZGVjb2RlX2NlcnQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcGF0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X3Rlc3RfZGVjb2RlX2NlcnQiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX3Rlc3RfZGVjb2RlX2NlcnRfaW1wbChtb2R1bGUsIHBhdGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xTb2NrZXRfcGVlcl9jZXJ0aWZpY2F0ZV9fZG9jX18sCisicGVlcl9jZXJ0aWZpY2F0ZSgkc2VsZiwgZGVyPUZhbHNlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB0aGUgY2VydGlmaWNhdGUgZm9yIHRoZSBwZWVyLlxuIgorIlxuIgorIklmIG5vIGNlcnRpZmljYXRlIHdhcyBwcm92aWRlZCwgcmV0dXJucyBOb25lLiAgSWYgYSBjZXJ0aWZpY2F0ZSB3YXNcbiIKKyJwcm92aWRlZCwgYnV0IG5vdCB2YWxpZGF0ZWQsIHJldHVybnMgYW4gZW1wdHkgZGljdGlvbmFyeS4gIE90aGVyd2lzZVxuIgorInJldHVybnMgYSBkaWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBlZXIgY2VydGlmaWNhdGUuXG4iCisiXG4iCisiSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGlzIFRydWUsIHJldHVybnMgYSBERVItZW5jb2RlZCBjb3B5IG9mIHRoZVxuIgorInBlZXIgY2VydGlmaWNhdGUsIG9yIE5vbmUgaWYgbm8gY2VydGlmaWNhdGUgd2FzIHByb3ZpZGVkLiAgVGhpcyB3aWxsXG4iCisicmV0dXJuIHRoZSBjZXJ0aWZpY2F0ZSBldmVuIGlmIGl0IHdhc25cJ3QgdmFsaWRhdGVkLiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9QRUVSX0NFUlRJRklDQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJwZWVyX2NlcnRpZmljYXRlIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTFNvY2tldF9wZWVyX2NlcnRpZmljYXRlLCBNRVRIX1ZBUkFSR1MsIF9zc2xfX1NTTFNvY2tldF9wZWVyX2NlcnRpZmljYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfcGVlcl9jZXJ0aWZpY2F0ZV9pbXBsKFB5U1NMU29ja2V0ICpzZWxmLCBpbnQgYmluYXJ5X21vZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3BlZXJfY2VydGlmaWNhdGUoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBiaW5hcnlfbW9kZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxwOnBlZXJfY2VydGlmaWNhdGUiLAorICAgICAgICAmYmluYXJ5X21vZGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMU29ja2V0X3BlZXJfY2VydGlmaWNhdGVfaW1wbChzZWxmLCBiaW5hcnlfbW9kZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTFNvY2tldF9zaGFyZWRfY2lwaGVyc19fZG9jX18sCisic2hhcmVkX2NpcGhlcnMoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9TSEFSRURfQ0lQSEVSU19NRVRIT0RERUYgICAgXAorICAgIHsic2hhcmVkX2NpcGhlcnMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMU29ja2V0X3NoYXJlZF9jaXBoZXJzLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMU29ja2V0X3NoYXJlZF9jaXBoZXJzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfc2hhcmVkX2NpcGhlcnNfaW1wbChQeVNTTFNvY2tldCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfc2hhcmVkX2NpcGhlcnMoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfX1NTTFNvY2tldF9zaGFyZWRfY2lwaGVyc19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X2NpcGhlcl9fZG9jX18sCisiY2lwaGVyKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfQ0lQSEVSX01FVEhPRERFRiAgICBcCisgICAgeyJjaXBoZXIiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMU29ja2V0X2NpcGhlciwgTUVUSF9OT0FSR1MsIF9zc2xfX1NTTFNvY2tldF9jaXBoZXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9jaXBoZXJfaW1wbChQeVNTTFNvY2tldCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfY2lwaGVyKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX19TU0xTb2NrZXRfY2lwaGVyX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xTb2NrZXRfdmVyc2lvbl9fZG9jX18sCisidmVyc2lvbigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMU09DS0VUX1ZFUlNJT05fTUVUSE9EREVGICAgIFwKKyAgICB7InZlcnNpb24iLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMU29ja2V0X3ZlcnNpb24sIE1FVEhfTk9BUkdTLCBfc3NsX19TU0xTb2NrZXRfdmVyc2lvbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3ZlcnNpb25faW1wbChQeVNTTFNvY2tldCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfdmVyc2lvbihQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMU29ja2V0X3ZlcnNpb25faW1wbChzZWxmKTsKK30KKworI2lmIGRlZmluZWQoT1BFTlNTTF9OUE5fTkVHT1RJQVRFRCkKKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTFNvY2tldF9zZWxlY3RlZF9ucG5fcHJvdG9jb2xfX2RvY19fLAorInNlbGVjdGVkX25wbl9wcm90b2NvbCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX05QTl9QUk9UT0NPTF9NRVRIT0RERUYgICAgXAorICAgIHsic2VsZWN0ZWRfbnBuX3Byb3RvY29sIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTFNvY2tldF9zZWxlY3RlZF9ucG5fcHJvdG9jb2wsIE1FVEhfTk9BUkdTLCBfc3NsX19TU0xTb2NrZXRfc2VsZWN0ZWRfbnBuX3Byb3RvY29sX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfc2VsZWN0ZWRfbnBuX3Byb3RvY29sX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX25wbl9wcm90b2NvbChQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX25wbl9wcm90b2NvbF9pbXBsKHNlbGYpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChPUEVOU1NMX05QTl9ORUdPVElBVEVEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0FMUE4pCisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xTb2NrZXRfc2VsZWN0ZWRfYWxwbl9wcm90b2NvbF9fZG9jX18sCisic2VsZWN0ZWRfYWxwbl9wcm90b2NvbCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX0FMUE5fUFJPVE9DT0xfTUVUSE9EREVGICAgIFwKKyAgICB7InNlbGVjdGVkX2FscG5fcHJvdG9jb2wiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX2FscG5fcHJvdG9jb2wsIE1FVEhfTk9BUkdTLCBfc3NsX19TU0xTb2NrZXRfc2VsZWN0ZWRfYWxwbl9wcm90b2NvbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX2FscG5fcHJvdG9jb2xfaW1wbChQeVNTTFNvY2tldCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfc2VsZWN0ZWRfYWxwbl9wcm90b2NvbChQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX2FscG5fcHJvdG9jb2xfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9BTFBOKSAqLworCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X2NvbXByZXNzaW9uX19kb2NfXywKKyJjb21wcmVzc2lvbigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMU09DS0VUX0NPTVBSRVNTSU9OX01FVEhPRERFRiAgICBcCisgICAgeyJjb21wcmVzc2lvbiIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xTb2NrZXRfY29tcHJlc3Npb24sIE1FVEhfTk9BUkdTLCBfc3NsX19TU0xTb2NrZXRfY29tcHJlc3Npb25fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9jb21wcmVzc2lvbl9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9jb21wcmVzc2lvbihQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMU29ja2V0X2NvbXByZXNzaW9uX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xTb2NrZXRfd3JpdGVfX2RvY19fLAorIndyaXRlKCRzZWxmLCBiLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JpdGVzIHRoZSBieXRlcy1saWtlIG9iamVjdCBiIGludG8gdGhlIFNTTCBvYmplY3QuXG4iCisiXG4iCisiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMU09DS0VUX1dSSVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZSIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xTb2NrZXRfd3JpdGUsIE1FVEhfTywgX3NzbF9fU1NMU29ja2V0X3dyaXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfd3JpdGVfaW1wbChQeVNTTFNvY2tldCAqc2VsZiwgUHlfYnVmZmVyICpiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF93cml0ZShQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYiA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xTb2NrZXRfd3JpdGVfaW1wbChzZWxmLCAmYik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYiAqLworICAgIGlmIChiLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZiKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xTb2NrZXRfcGVuZGluZ19fZG9jX18sCisicGVuZGluZygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIG51bWJlciBvZiBhbHJlYWR5IGRlY3J5cHRlZCBieXRlcyBhdmFpbGFibGUgZm9yIHJlYWQsIHBlbmRpbmcgb24gdGhlIGNvbm5lY3Rpb24uIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMU09DS0VUX1BFTkRJTkdfTUVUSE9EREVGICAgIFwKKyAgICB7InBlbmRpbmciLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMU29ja2V0X3BlbmRpbmcsIE1FVEhfTk9BUkdTLCBfc3NsX19TU0xTb2NrZXRfcGVuZGluZ19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3BlbmRpbmdfaW1wbChQeVNTTFNvY2tldCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfcGVuZGluZyhQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMU29ja2V0X3BlbmRpbmdfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTFNvY2tldF9yZWFkX19kb2NfXywKKyJyZWFkKHNpemUsIFtidWZmZXJdKVxuIgorIlJlYWQgdXAgdG8gc2l6ZSBieXRlcyBmcm9tIHRoZSBTU0wgc29ja2V0LiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9SRUFEX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTFNvY2tldF9yZWFkLCBNRVRIX1ZBUkFSR1MsIF9zc2xfX1NTTFNvY2tldF9yZWFkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfcmVhZF9pbXBsKFB5U1NMU29ja2V0ICpzZWxmLCBpbnQgbGVuLCBpbnQgZ3JvdXBfcmlnaHRfMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpidWZmZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3JlYWQoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBsZW47CisgICAgaW50IGdyb3VwX3JpZ2h0XzEgPSAwOworICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBzd2l0Y2ggKFB5VHVwbGVfR0VUX1NJWkUoYXJncykpIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnJlYWQiLCAmbGVuKSkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpdyo6cmVhZCIsICZsZW4sICZidWZmZXIpKQorICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiX3NzbC5fU1NMU29ja2V0LnJlYWQgcmVxdWlyZXMgMSB0byAyIGFyZ3VtZW50cyIpOworICAgICAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xTb2NrZXRfcmVhZF9pbXBsKHNlbGYsIGxlbiwgZ3JvdXBfcmlnaHRfMSwgJmJ1ZmZlcik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCisgICAgaWYgKGJ1ZmZlci5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xTb2NrZXRfc2h1dGRvd25fX2RvY19fLAorInNodXRkb3duKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRG9lcyB0aGUgU1NMIHNodXRkb3duIGhhbmRzaGFrZSB3aXRoIHRoZSByZW1vdGUgZW5kLlxuIgorIlxuIgorIlJldHVybnMgdGhlIHVuZGVybHlpbmcgc29ja2V0IG9iamVjdC4iKTsKKworI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfU0hVVERPV05fTUVUSE9EREVGICAgIFwKKyAgICB7InNodXRkb3duIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTFNvY2tldF9zaHV0ZG93biwgTUVUSF9OT0FSR1MsIF9zc2xfX1NTTFNvY2tldF9zaHV0ZG93bl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NodXRkb3duX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NodXRkb3duKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX19TU0xTb2NrZXRfc2h1dGRvd25faW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTFNvY2tldF90bHNfdW5pcXVlX2NiX19kb2NfXywKKyJ0bHNfdW5pcXVlX2NiKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB0aGUgXCd0bHMtdW5pcXVlXCcgY2hhbm5lbCBiaW5kaW5nIGRhdGEsIGFzIGRlZmluZWQgYnkgUkZDIDU5MjkuXG4iCisiXG4iCisiSWYgdGhlIFRMUyBoYW5kc2hha2UgaXMgbm90IHlldCBjb21wbGV0ZSwgTm9uZSBpcyByZXR1cm5lZC4iKTsKKworI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfVExTX1VOSVFVRV9DQl9NRVRIT0RERUYgICAgXAorICAgIHsidGxzX3VuaXF1ZV9jYiIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xTb2NrZXRfdGxzX3VuaXF1ZV9jYiwgTUVUSF9OT0FSR1MsIF9zc2xfX1NTTFNvY2tldF90bHNfdW5pcXVlX2NiX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfdGxzX3VuaXF1ZV9jYl9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF90bHNfdW5pcXVlX2NiKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX19TU0xTb2NrZXRfdGxzX3VuaXF1ZV9jYl9pbXBsKHNlbGYpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgaW50IHByb3RvX3ZlcnNpb24pOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBwcm90b192ZXJzaW9uOworCisgICAgaWYgKCh0eXBlID09ICZQeVNTTENvbnRleHRfVHlwZSkgJiYKKyAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJfU1NMQ29udGV4dCIsIGt3YXJncykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6X1NTTENvbnRleHQiLAorICAgICAgICAmcHJvdG9fdmVyc2lvbikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X2ltcGwodHlwZSwgcHJvdG9fdmVyc2lvbik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfc2V0X2NpcGhlcnNfX2RvY19fLAorInNldF9jaXBoZXJzKCRzZWxmLCBjaXBoZXJsaXN0LCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX1NFVF9DSVBIRVJTX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRfY2lwaGVycyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X3NldF9jaXBoZXJzLCBNRVRIX08sIF9zc2xfX1NTTENvbnRleHRfc2V0X2NpcGhlcnNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfc2V0X2NpcGhlcnNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsIGNvbnN0IGNoYXIgKmNpcGhlcmxpc3QpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9zZXRfY2lwaGVycyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqY2lwaGVybGlzdDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpzZXRfY2lwaGVycyIsICZjaXBoZXJsaXN0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfc2V0X2NpcGhlcnNfaW1wbChzZWxmLCBjaXBoZXJsaXN0KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMQ29udGV4dF9fc2V0X25wbl9wcm90b2NvbHNfX2RvY19fLAorIl9zZXRfbnBuX3Byb3RvY29scygkc2VsZiwgcHJvdG9zLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX19TRVRfTlBOX1BST1RPQ09MU19NRVRIT0RERUYgICAgXAorICAgIHsiX3NldF9ucG5fcHJvdG9jb2xzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfX3NldF9ucG5fcHJvdG9jb2xzLCBNRVRIX08sIF9zc2xfX1NTTENvbnRleHRfX3NldF9ucG5fcHJvdG9jb2xzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X19zZXRfbnBuX3Byb3RvY29sc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpwcm90b3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9fc2V0X25wbl9wcm90b2NvbHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBwcm90b3MgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOl9zZXRfbnBuX3Byb3RvY29scyIsICZwcm90b3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9fc2V0X25wbl9wcm90b2NvbHNfaW1wbChzZWxmLCAmcHJvdG9zKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwcm90b3MgKi8KKyAgICBpZiAocHJvdG9zLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwcm90b3MpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfX3NldF9hbHBuX3Byb3RvY29sc19fZG9jX18sCisiX3NldF9hbHBuX3Byb3RvY29scygkc2VsZiwgcHJvdG9zLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX19TRVRfQUxQTl9QUk9UT0NPTFNfTUVUSE9EREVGICAgIFwKKyAgICB7Il9zZXRfYWxwbl9wcm90b2NvbHMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9fc2V0X2FscG5fcHJvdG9jb2xzLCBNRVRIX08sIF9zc2xfX1NTTENvbnRleHRfX3NldF9hbHBuX3Byb3RvY29sc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9fc2V0X2FscG5fcHJvdG9jb2xzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpwcm90b3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9fc2V0X2FscG5fcHJvdG9jb2xzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgcHJvdG9zID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpfc2V0X2FscG5fcHJvdG9jb2xzIiwgJnByb3RvcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X19zZXRfYWxwbl9wcm90b2NvbHNfaW1wbChzZWxmLCAmcHJvdG9zKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwcm90b3MgKi8KKyAgICBpZiAocHJvdG9zLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwcm90b3MpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluX19kb2NfXywKKyJsb2FkX2NlcnRfY2hhaW4oJHNlbGYsIC8sIGNlcnRmaWxlLCBrZXlmaWxlPU5vbmUsIHBhc3N3b3JkPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfTE9BRF9DRVJUX0NIQUlOX01FVEhPRERFRiAgICBcCisgICAgeyJsb2FkX2NlcnRfY2hhaW4iLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW5faW1wbChQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICpjZXJ0ZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleWZpbGUsIFB5T2JqZWN0ICpwYXNzd29yZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbihQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiY2VydGZpbGUiLCAia2V5ZmlsZSIsICJwYXNzd29yZCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpjZXJ0ZmlsZTsKKyAgICBQeU9iamVjdCAqa2V5ZmlsZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBhc3N3b3JkID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98T086bG9hZF9jZXJ0X2NoYWluIiwgX2tleXdvcmRzLAorICAgICAgICAmY2VydGZpbGUsICZrZXlmaWxlLCAmcGFzc3dvcmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW5faW1wbChzZWxmLCBjZXJ0ZmlsZSwga2V5ZmlsZSwgcGFzc3dvcmQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9uc19fZG9jX18sCisibG9hZF92ZXJpZnlfbG9jYXRpb25zKCRzZWxmLCAvLCBjYWZpbGU9Tm9uZSwgY2FwYXRoPU5vbmUsIGNhZGF0YT1Ob25lKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0xPQURfVkVSSUZZX0xPQ0FUSU9OU19NRVRIT0RERUYgICAgXAorICAgIHsibG9hZF92ZXJpZnlfbG9jYXRpb25zIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2FmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2FwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2FkYXRhKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJjYWZpbGUiLCAiY2FwYXRoIiwgImNhZGF0YSIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpjYWZpbGUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpjYXBhdGggPSBOVUxMOworICAgIFB5T2JqZWN0ICpjYWRhdGEgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9PTzpsb2FkX3ZlcmlmeV9sb2NhdGlvbnMiLCBfa2V5d29yZHMsCisgICAgICAgICZjYWZpbGUsICZjYXBhdGgsICZjYWRhdGEpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnNfaW1wbChzZWxmLCBjYWZpbGUsIGNhcGF0aCwgY2FkYXRhKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMQ29udGV4dF9sb2FkX2RoX3BhcmFtc19fZG9jX18sCisibG9hZF9kaF9wYXJhbXMoJHNlbGYsIHBhdGgsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfTE9BRF9ESF9QQVJBTVNfTUVUSE9EREVGICAgIFwKKyAgICB7ImxvYWRfZGhfcGFyYW1zIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfbG9hZF9kaF9wYXJhbXMsIE1FVEhfTywgX3NzbF9fU1NMQ29udGV4dF9sb2FkX2RoX3BhcmFtc19fZG9jX199LAorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXRfX2RvY19fLAorIl93cmFwX3NvY2tldCgkc2VsZiwgLywgc29jaywgc2VydmVyX3NpZGUsIHNlcnZlcl9ob3N0bmFtZT1Ob25lKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX19XUkFQX1NPQ0tFVF9NRVRIT0RERUYgICAgXAorICAgIHsiX3dyYXBfc29ja2V0IiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0X2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlcnZlcl9zaWRlLCBQeU9iamVjdCAqaG9zdG5hbWVfb2JqKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0KFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzb2NrIiwgInNlcnZlcl9zaWRlIiwgInNlcnZlcl9ob3N0bmFtZSIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzb2NrOworICAgIGludCBzZXJ2ZXJfc2lkZTsKKyAgICBQeU9iamVjdCAqaG9zdG5hbWVfb2JqID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8haXxPOl93cmFwX3NvY2tldCIsIF9rZXl3b3JkcywKKyAgICAgICAgUHlTb2NrZXRNb2R1bGUuU29ja19UeXBlLCAmc29jaywgJnNlcnZlcl9zaWRlLCAmaG9zdG5hbWVfb2JqKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0X2ltcGwoc2VsZiwgc29jaywgc2VydmVyX3NpZGUsIGhvc3RuYW1lX29iaik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvX19kb2NfXywKKyJfd3JhcF9iaW8oJHNlbGYsIC8sIGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGUsXG4iCisiICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX19XUkFQX0JJT19NRVRIT0RERUYgICAgXAorICAgIHsiX3dyYXBfYmlvIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBQeVNTTE1lbW9yeUJJTyAqaW5jb21pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5U1NMTWVtb3J5QklPICpvdXRnb2luZywgaW50IHNlcnZlcl9zaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaG9zdG5hbWVfb2JqKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbmNvbWluZyIsICJvdXRnb2luZyIsICJzZXJ2ZXJfc2lkZSIsICJzZXJ2ZXJfaG9zdG5hbWUiLCBOVUxMfTsKKyAgICBQeVNTTE1lbW9yeUJJTyAqaW5jb21pbmc7CisgICAgUHlTU0xNZW1vcnlCSU8gKm91dGdvaW5nOworICAgIGludCBzZXJ2ZXJfc2lkZTsKKyAgICBQeU9iamVjdCAqaG9zdG5hbWVfb2JqID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8hTyFpfE86X3dyYXBfYmlvIiwgX2tleXdvcmRzLAorICAgICAgICAmUHlTU0xNZW1vcnlCSU9fVHlwZSwgJmluY29taW5nLCAmUHlTU0xNZW1vcnlCSU9fVHlwZSwgJm91dGdvaW5nLCAmc2VydmVyX3NpZGUsICZob3N0bmFtZV9vYmopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW9faW1wbChzZWxmLCBpbmNvbWluZywgb3V0Z29pbmcsIHNlcnZlcl9zaWRlLCBob3N0bmFtZV9vYmopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X3Nlc3Npb25fc3RhdHNfX2RvY19fLAorInNlc3Npb25fc3RhdHMoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfU0VTU0lPTl9TVEFUU19NRVRIT0RERUYgICAgXAorICAgIHsic2Vzc2lvbl9zdGF0cyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X3Nlc3Npb25fc3RhdHMsIE1FVEhfTk9BUkdTLCBfc3NsX19TU0xDb250ZXh0X3Nlc3Npb25fc3RhdHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfc2Vzc2lvbl9zdGF0c19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X3Nlc3Npb25fc3RhdHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX19TU0xDb250ZXh0X3Nlc3Npb25fc3RhdHNfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzX19kb2NfXywKKyJzZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfU0VUX0RFRkFVTFRfVkVSSUZZX1BBVEhTX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMsIE1FVEhfTk9BUkdTLCBfc3NsX19TU0xDb250ZXh0X3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRoc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX19TU0xDb250ZXh0X3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRoc19pbXBsKHNlbGYpOworfQorCisjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19FQ0RIKQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMQ29udGV4dF9zZXRfZWNkaF9jdXJ2ZV9fZG9jX18sCisic2V0X2VjZGhfY3VydmUoJHNlbGYsIG5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfU0VUX0VDREhfQ1VSVkVfTUVUSE9EREVGICAgIFwKKyAgICB7InNldF9lY2RoX2N1cnZlIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfc2V0X2VjZGhfY3VydmUsIE1FVEhfTywgX3NzbF9fU1NMQ29udGV4dF9zZXRfZWNkaF9jdXJ2ZV9fZG9jX199LAorCisjZW5kaWYgLyogIWRlZmluZWQoT1BFTlNTTF9OT19FQ0RIKSAqLworCitQeURvY19TVFJWQVIoX3NzbF9fU1NMQ29udGV4dF9zZXRfc2VydmVybmFtZV9jYWxsYmFja19fZG9jX18sCisic2V0X3NlcnZlcm5hbWVfY2FsbGJhY2soJHNlbGYsIG1ldGhvZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCBhIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbiBhIHNlcnZlciBuYW1lIGlzIHByb3ZpZGVkIGJ5IHRoZSBTU0wvVExTIGNsaWVudCBpbiB0aGUgU05JIGV4dGVuc2lvbi5cbiIKKyJcbiIKKyJJZiB0aGUgYXJndW1lbnQgaXMgTm9uZSB0aGVuIHRoZSBjYWxsYmFjayBpcyBkaXNhYmxlZC4gVGhlIG1ldGhvZCBpcyBjYWxsZWRcbiIKKyJ3aXRoIHRoZSBTU0xTb2NrZXQsIHRoZSBzZXJ2ZXIgbmFtZSBhcyBhIHN0cmluZywgYW5kIHRoZSBTU0xDb250ZXh0IG9iamVjdC5cbiIKKyJTZWUgUkZDIDYwNjYgZm9yIGRldGFpbHMgb2YgdGhlIFNOSSBleHRlbnNpb24uIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9TRVRfU0VSVkVSTkFNRV9DQUxMQkFDS19NRVRIT0RERUYgICAgXAorICAgIHsic2V0X3NlcnZlcm5hbWVfY2FsbGJhY2siLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9zZXRfc2VydmVybmFtZV9jYWxsYmFjaywgTUVUSF9PLCBfc3NsX19TU0xDb250ZXh0X3NldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X2NlcnRfc3RvcmVfc3RhdHNfX2RvY19fLAorImNlcnRfc3RvcmVfc3RhdHMoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHF1YW50aXRpZXMgb2YgbG9hZGVkIFguNTA5IGNlcnRpZmljYXRlcy5cbiIKKyJcbiIKKyJYLjUwOSBjZXJ0aWZpY2F0ZXMgd2l0aCBhIENBIGV4dGVuc2lvbiBhbmQgY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBsaXN0c1xuIgorImluc2lkZSB0aGUgY29udGV4dFwncyBjZXJ0IHN0b3JlLlxuIgorIlxuIgorIk5PVEU6IENlcnRpZmljYXRlcyBpbiBhIGNhcGF0aCBkaXJlY3RvcnkgYXJlblwndCBsb2FkZWQgdW5sZXNzIHRoZXkgaGF2ZVxuIgorImJlZW4gdXNlZCBhdCBsZWFzdCBvbmNlLiIpOworCisjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfQ0VSVF9TVE9SRV9TVEFUU19NRVRIT0RERUYgICAgXAorICAgIHsiY2VydF9zdG9yZV9zdGF0cyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2NlcnRfc3RvcmVfc3RhdHMsIE1FVEhfTk9BUkdTLCBfc3NsX19TU0xDb250ZXh0X2NlcnRfc3RvcmVfc3RhdHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfY2VydF9zdG9yZV9zdGF0c19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2NlcnRfc3RvcmVfc3RhdHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX19TU0xDb250ZXh0X2NlcnRfc3RvcmVfc3RhdHNfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzX19kb2NfXywKKyJnZXRfY2FfY2VydHMoJHNlbGYsIC8sIGJpbmFyeV9mb3JtPUZhbHNlKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBhIGxpc3Qgb2YgZGljdHMgd2l0aCBpbmZvcm1hdGlvbiBvZiBsb2FkZWQgQ0EgY2VydHMuXG4iCisiXG4iCisiSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGlzIFRydWUsIHJldHVybnMgYSBERVItZW5jb2RlZCBjb3B5IG9mIHRoZSBDQVxuIgorImNlcnRpZmljYXRlLlxuIgorIlxuIgorIk5PVEU6IENlcnRpZmljYXRlcyBpbiBhIGNhcGF0aCBkaXJlY3RvcnkgYXJlblwndCBsb2FkZWQgdW5sZXNzIHRoZXkgaGF2ZVxuIgorImJlZW4gdXNlZCBhdCBsZWFzdCBvbmNlLiIpOworCisjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NBX0NFUlRTX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRfY2FfY2VydHMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0c19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsIGludCBiaW5hcnlfZm9ybSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0cyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiYmluYXJ5X2Zvcm0iLCBOVUxMfTsKKyAgICBpbnQgYmluYXJ5X2Zvcm0gPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifHA6Z2V0X2NhX2NlcnRzIiwgX2tleXdvcmRzLAorICAgICAgICAmYmluYXJ5X2Zvcm0pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHNfaW1wbChzZWxmLCBiaW5hcnlfZm9ybSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfTWVtb3J5QklPX2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfTWVtb3J5QklPKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisKKyAgICBpZiAoKHR5cGUgPT0gJlB5U1NMTWVtb3J5QklPX1R5cGUpICYmCisgICAgICAgICFfUHlBcmdfTm9Qb3NpdGlvbmFsKCJNZW1vcnlCSU8iLCBhcmdzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIGlmICgodHlwZSA9PSAmUHlTU0xNZW1vcnlCSU9fVHlwZSkgJiYKKyAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJNZW1vcnlCSU8iLCBrd2FyZ3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9NZW1vcnlCSU9faW1wbCh0eXBlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9NZW1vcnlCSU9fcmVhZF9fZG9jX18sCisicmVhZCgkc2VsZiwgc2l6ZT0tMSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlYWQgdXAgdG8gc2l6ZSBieXRlcyBmcm9tIHRoZSBtZW1vcnkgQklPLlxuIgorIlxuIgorIklmIHNpemUgaXMgbm90IHNwZWNpZmllZCwgcmVhZCB0aGUgZW50aXJlIGJ1ZmZlci5cbiIKKyJJZiB0aGUgcmV0dXJuIHZhbHVlIGlzIGFuIGVtcHR5IGJ5dGVzIGluc3RhbmNlLCB0aGlzIG1lYW5zIGVpdGhlclxuIgorIkVPRiBvciB0aGF0IG5vIGRhdGEgaXMgYXZhaWxhYmxlLiBVc2UgdGhlIFwiZW9mXCIgcHJvcGVydHkgdG9cbiIKKyJkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSB0d28uIik7CisKKyNkZWZpbmUgX1NTTF9NRU1PUllCSU9fUkVBRF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilfc3NsX01lbW9yeUJJT19yZWFkLCBNRVRIX1ZBUkFSR1MsIF9zc2xfTWVtb3J5QklPX3JlYWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfTWVtb3J5QklPX3JlYWRfaW1wbChQeVNTTE1lbW9yeUJJTyAqc2VsZiwgaW50IGxlbik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJT19yZWFkKFB5U1NMTWVtb3J5QklPICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbGVuID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOnJlYWQiLAorICAgICAgICAmbGVuKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfTWVtb3J5QklPX3JlYWRfaW1wbChzZWxmLCBsZW4pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX01lbW9yeUJJT193cml0ZV9fZG9jX18sCisid3JpdGUoJHNlbGYsIGIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZXMgdGhlIGJ5dGVzIGIgaW50byB0aGUgbWVtb3J5IEJJTy5cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4iKTsKKworI2RlZmluZSBfU1NMX01FTU9SWUJJT19XUklURV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pX3NzbF9NZW1vcnlCSU9fd3JpdGUsIE1FVEhfTywgX3NzbF9NZW1vcnlCSU9fd3JpdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfTWVtb3J5QklPX3dyaXRlX2ltcGwoUHlTU0xNZW1vcnlCSU8gKnNlbGYsIFB5X2J1ZmZlciAqYik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJT193cml0ZShQeVNTTE1lbW9yeUJJTyAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYiA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX01lbW9yeUJJT193cml0ZV9pbXBsKHNlbGYsICZiKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBiICovCisgICAgaWYgKGIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmIpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfTWVtb3J5QklPX3dyaXRlX2VvZl9fZG9jX18sCisid3JpdGVfZW9mKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JpdGUgYW4gRU9GIG1hcmtlciB0byB0aGUgbWVtb3J5IEJJTy5cbiIKKyJcbiIKKyJXaGVuIGFsbCBkYXRhIGhhcyBiZWVuIHJlYWQsIHRoZSBcImVvZlwiIHByb3BlcnR5IHdpbGwgYmUgVHJ1ZS4iKTsKKworI2RlZmluZSBfU1NMX01FTU9SWUJJT19XUklURV9FT0ZfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlX2VvZiIsIChQeUNGdW5jdGlvbilfc3NsX01lbW9yeUJJT193cml0ZV9lb2YsIE1FVEhfTk9BUkdTLCBfc3NsX01lbW9yeUJJT193cml0ZV9lb2ZfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfTWVtb3J5QklPX3dyaXRlX2VvZl9pbXBsKFB5U1NMTWVtb3J5QklPICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfTWVtb3J5QklPX3dyaXRlX2VvZihQeVNTTE1lbW9yeUJJTyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9NZW1vcnlCSU9fd3JpdGVfZW9mX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX1JBTkRfYWRkX19kb2NfXywKKyJSQU5EX2FkZCgkbW9kdWxlLCBzdHJpbmcsIGVudHJvcHksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJNaXggc3RyaW5nIGludG8gdGhlIE9wZW5TU0wgUFJORyBzdGF0ZS5cbiIKKyJcbiIKKyJlbnRyb3B5IChhIGZsb2F0KSBpcyBhIGxvd2VyIGJvdW5kIG9uIHRoZSBlbnRyb3B5IGNvbnRhaW5lZCBpblxuIgorInN0cmluZy4gIFNlZSBSRkMgMTc1MC4iKTsKKworI2RlZmluZSBfU1NMX1JBTkRfQUREX01FVEhPRERFRiAgICBcCisgICAgeyJSQU5EX2FkZCIsIChQeUNGdW5jdGlvbilfc3NsX1JBTkRfYWRkLCBNRVRIX1ZBUkFSR1MsIF9zc2xfUkFORF9hZGRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfUkFORF9hZGRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKnZpZXcsIGRvdWJsZSBlbnRyb3B5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfUkFORF9hZGQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIHZpZXcgPSB7TlVMTCwgTlVMTH07CisgICAgZG91YmxlIGVudHJvcHk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqZDpSQU5EX2FkZCIsCisgICAgICAgICZ2aWV3LCAmZW50cm9weSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX1JBTkRfYWRkX2ltcGwobW9kdWxlLCAmdmlldywgZW50cm9weSk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgdmlldyAqLworICAgIGlmICh2aWV3Lm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX1JBTkRfYnl0ZXNfX2RvY19fLAorIlJBTkRfYnl0ZXMoJG1vZHVsZSwgbiwgLylcbiIKKyItLVxuIgorIlxuIgorIkdlbmVyYXRlIG4gY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nIHBzZXVkby1yYW5kb20gYnl0ZXMuIik7CisKKyNkZWZpbmUgX1NTTF9SQU5EX0JZVEVTX01FVEhPRERFRiAgICBcCisgICAgeyJSQU5EX2J5dGVzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfUkFORF9ieXRlcywgTUVUSF9PLCBfc3NsX1JBTkRfYnl0ZXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfUkFORF9ieXRlc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBuKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfUkFORF9ieXRlcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBuOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlJBTkRfYnl0ZXMiLCAmbikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX1JBTkRfYnl0ZXNfaW1wbChtb2R1bGUsIG4pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX1JBTkRfcHNldWRvX2J5dGVzX19kb2NfXywKKyJSQU5EX3BzZXVkb19ieXRlcygkbW9kdWxlLCBuLCAvKVxuIgorIi0tXG4iCisiXG4iCisiR2VuZXJhdGUgbiBwc2V1ZG8tcmFuZG9tIGJ5dGVzLlxuIgorIlxuIgorIlJldHVybiBhIHBhaXIgKGJ5dGVzLCBpc19jcnlwdG9ncmFwaGljKS4gIGlzX2NyeXB0b2dyYXBoaWMgaXMgVHJ1ZVxuIgorImlmIHRoZSBieXRlcyBnZW5lcmF0ZWQgYXJlIGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZy4iKTsKKworI2RlZmluZSBfU1NMX1JBTkRfUFNFVURPX0JZVEVTX01FVEhPRERFRiAgICBcCisgICAgeyJSQU5EX3BzZXVkb19ieXRlcyIsIChQeUNGdW5jdGlvbilfc3NsX1JBTkRfcHNldWRvX2J5dGVzLCBNRVRIX08sIF9zc2xfUkFORF9wc2V1ZG9fYnl0ZXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfUkFORF9wc2V1ZG9fYnl0ZXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfcHNldWRvX2J5dGVzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IG47CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6UkFORF9wc2V1ZG9fYnl0ZXMiLCAmbikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX1JBTkRfcHNldWRvX2J5dGVzX2ltcGwobW9kdWxlLCBuKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9SQU5EX3N0YXR1c19fZG9jX18sCisiUkFORF9zdGF0dXMoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgMSBpZiB0aGUgT3BlblNTTCBQUk5HIGhhcyBiZWVuIHNlZWRlZCB3aXRoIGVub3VnaCBkYXRhIGFuZCAwIGlmIG5vdC5cbiIKKyJcbiIKKyJJdCBpcyBuZWNlc3NhcnkgdG8gc2VlZCB0aGUgUFJORyB3aXRoIFJBTkRfYWRkKCkgb24gc29tZSBwbGF0Zm9ybXMgYmVmb3JlXG4iCisidXNpbmcgdGhlIHNzbCgpIGZ1bmN0aW9uLiIpOworCisjZGVmaW5lIF9TU0xfUkFORF9TVEFUVVNfTUVUSE9EREVGICAgIFwKKyAgICB7IlJBTkRfc3RhdHVzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfUkFORF9zdGF0dXMsIE1FVEhfTk9BUkdTLCBfc3NsX1JBTkRfc3RhdHVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfc3RhdHVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfc3RhdHVzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfUkFORF9zdGF0dXNfaW1wbChtb2R1bGUpOworfQorCisjaWYgZGVmaW5lZChIQVZFX1JBTkRfRUdEKQorCitQeURvY19TVFJWQVIoX3NzbF9SQU5EX2VnZF9fZG9jX18sCisiUkFORF9lZ2QoJG1vZHVsZSwgcGF0aCwgLylcbiIKKyItLVxuIgorIlxuIgorIlF1ZXJpZXMgdGhlIGVudHJvcHkgZ2F0aGVyIGRhZW1vbiAoRUdEKSBvbiB0aGUgc29ja2V0IG5hbWVkIGJ5IFwncGF0aFwnLlxuIgorIlxuIgorIlJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuICBSYWlzZXMgU1NMRXJyb3IgaWYgY29ubmVjdGlvbiB0byBFR0RcbiIKKyJmYWlscyBvciBpZiBpdCBkb2VzIG5vdCBwcm92aWRlIGVub3VnaCBkYXRhIHRvIHNlZWQgUFJORy4iKTsKKworI2RlZmluZSBfU1NMX1JBTkRfRUdEX01FVEhPRERFRiAgICBcCisgICAgeyJSQU5EX2VnZCIsIChQeUNGdW5jdGlvbilfc3NsX1JBTkRfZWdkLCBNRVRIX08sIF9zc2xfUkFORF9lZ2RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfUkFORF9lZ2RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcGF0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfZWdkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBhdGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlJBTkRfZWdkIiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX1JBTkRfZWdkX2ltcGwobW9kdWxlLCBwYXRoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1JBTkRfRUdEKSAqLworCitQeURvY19TVFJWQVIoX3NzbF9nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNfX2RvY19fLAorImdldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHNlYXJjaCBwYXRocyBhbmQgZW52aXJvbm1lbnQgdmFycyB0aGF0IGFyZSB1c2VkIGJ5IFNTTENvbnRleHRcJ3Mgc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkgdG8gbG9hZCBkZWZhdWx0IENBcy5cbiIKKyJcbiIKKyJUaGUgdmFsdWVzIGFyZSBcJ2NlcnRfZmlsZV9lbnZcJywgXCdjZXJ0X2ZpbGVcJywgXCdjZXJ0X2Rpcl9lbnZcJywgXCdjZXJ0X2RpclwnLiIpOworCisjZGVmaW5lIF9TU0xfR0VUX0RFRkFVTFRfVkVSSUZZX1BBVEhTX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMiLCAoUHlDRnVuY3Rpb24pX3NzbF9nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMsIE1FVEhfTk9BUkdTLCBfc3NsX2dldF9kZWZhdWx0X3ZlcmlmeV9wYXRoc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzX2ltcGwobW9kdWxlKTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfdHh0Mm9ial9fZG9jX18sCisidHh0Mm9iaigkbW9kdWxlLCAvLCB0eHQsIG5hbWU9RmFsc2UpXG4iCisiLS1cbiIKKyJcbiIKKyJMb29rdXAgTklELCBzaG9ydCBuYW1lLCBsb25nIG5hbWUgYW5kIE9JRCBvZiBhbiBBU04xX09CSkVDVC5cbiIKKyJcbiIKKyJCeSBkZWZhdWx0IG9iamVjdHMgYXJlIGxvb2tlZCB1cCBieSBPSUQuIFdpdGggbmFtZT1UcnVlIHNob3J0IGFuZFxuIgorImxvbmcgbmFtZSBhcmUgYWxzbyBtYXRjaGVkLiIpOworCisjZGVmaW5lIF9TU0xfVFhUMk9CSl9NRVRIT0RERUYgICAgXAorICAgIHsidHh0Mm9iaiIsIChQeUNGdW5jdGlvbilfc3NsX3R4dDJvYmosIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX3R4dDJvYmpfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfdHh0Mm9ial9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKnR4dCwgaW50IG5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF90eHQyb2JqKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsidHh0IiwgIm5hbWUiLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICp0eHQ7CisgICAgaW50IG5hbWUgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAic3xwOnR4dDJvYmoiLCBfa2V5d29yZHMsCisgICAgICAgICZ0eHQsICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfdHh0Mm9ial9pbXBsKG1vZHVsZSwgdHh0LCBuYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9uaWQyb2JqX19kb2NfXywKKyJuaWQyb2JqKCRtb2R1bGUsIG5pZCwgLylcbiIKKyItLVxuIgorIlxuIgorIkxvb2t1cCBOSUQsIHNob3J0IG5hbWUsIGxvbmcgbmFtZSBhbmQgT0lEIG9mIGFuIEFTTjFfT0JKRUNUIGJ5IE5JRC4iKTsKKworI2RlZmluZSBfU1NMX05JRDJPQkpfTUVUSE9EREVGICAgIFwKKyAgICB7Im5pZDJvYmoiLCAoUHlDRnVuY3Rpb24pX3NzbF9uaWQyb2JqLCBNRVRIX08sIF9zc2xfbmlkMm9ial9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9uaWQyb2JqX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG5pZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX25pZDJvYmooUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbmlkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOm5pZDJvYmoiLCAmbmlkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfbmlkMm9ial9pbXBsKG1vZHVsZSwgbmlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKworUHlEb2NfU1RSVkFSKF9zc2xfZW51bV9jZXJ0aWZpY2F0ZXNfX2RvY19fLAorImVudW1fY2VydGlmaWNhdGVzKCRtb2R1bGUsIC8sIHN0b3JlX25hbWUpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXRyaWV2ZSBjZXJ0aWZpY2F0ZXMgZnJvbSBXaW5kb3dzXCcgY2VydCBzdG9yZS5cbiIKKyJcbiIKKyJzdG9yZV9uYW1lIG1heSBiZSBvbmUgb2YgXCdDQVwnLCBcJ1JPT1RcJyBvciBcJ01ZXCcuICBUaGUgc3lzdGVtIG1heSBwcm92aWRlXG4iCisibW9yZSBjZXJ0IHN0b3JhZ2VzLCB0b28uICBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgKGJ5dGVzLFxuIgorImVuY29kaW5nX3R5cGUsIHRydXN0KSB0dXBsZXMuICBUaGUgZW5jb2RpbmdfdHlwZSBmbGFnIGNhbiBiZSBpbnRlcnByZXRlZFxuIgorIndpdGggWDUwOV9BU05fRU5DT0RJTkcgb3IgUEtDU183X0FTTl9FTkNPRElORy4gVGhlIHRydXN0IHNldHRpbmcgaXMgZWl0aGVyXG4iCisiYSBzZXQgb2YgT0lEcyBvciB0aGUgYm9vbGVhbiBUcnVlLiIpOworCisjZGVmaW5lIF9TU0xfRU5VTV9DRVJUSUZJQ0FURVNfTUVUSE9EREVGICAgIFwKKyAgICB7ImVudW1fY2VydGlmaWNhdGVzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfZW51bV9jZXJ0aWZpY2F0ZXMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX2VudW1fY2VydGlmaWNhdGVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX2VudW1fY2VydGlmaWNhdGVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqc3RvcmVfbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX2VudW1fY2VydGlmaWNhdGVzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RvcmVfbmFtZSIsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKnN0b3JlX25hbWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJzOmVudW1fY2VydGlmaWNhdGVzIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RvcmVfbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX2VudW1fY2VydGlmaWNhdGVzX2ltcGwobW9kdWxlLCBzdG9yZV9uYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChfTVNDX1ZFUikgKi8KKworI2lmIGRlZmluZWQoX01TQ19WRVIpCisKK1B5RG9jX1NUUlZBUihfc3NsX2VudW1fY3Jsc19fZG9jX18sCisiZW51bV9jcmxzKCRtb2R1bGUsIC8sIHN0b3JlX25hbWUpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXRyaWV2ZSBDUkxzIGZyb20gV2luZG93c1wnIGNlcnQgc3RvcmUuXG4iCisiXG4iCisic3RvcmVfbmFtZSBtYXkgYmUgb25lIG9mIFwnQ0FcJywgXCdST09UXCcgb3IgXCdNWVwnLiAgVGhlIHN5c3RlbSBtYXkgcHJvdmlkZVxuIgorIm1vcmUgY2VydCBzdG9yYWdlcywgdG9vLiAgVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IG9mIChieXRlcyxcbiIKKyJlbmNvZGluZ190eXBlKSB0dXBsZXMuICBUaGUgZW5jb2RpbmdfdHlwZSBmbGFnIGNhbiBiZSBpbnRlcnByZXRlZCB3aXRoXG4iCisiWDUwOV9BU05fRU5DT0RJTkcgb3IgUEtDU183X0FTTl9FTkNPRElORy4iKTsKKworI2RlZmluZSBfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYgICAgXAorICAgIHsiZW51bV9jcmxzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfZW51bV9jcmxzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9lbnVtX2NybHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfZW51bV9jcmxzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqc3RvcmVfbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX2VudW1fY3JscyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0b3JlX25hbWUiLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICpzdG9yZV9uYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiczplbnVtX2NybHMiLCBfa2V5d29yZHMsCisgICAgICAgICZzdG9yZV9uYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfZW51bV9jcmxzX2ltcGwobW9kdWxlLCBzdG9yZV9uYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChfTVNDX1ZFUikgKi8KKworI2lmbmRlZiBfU1NMX19TU0xTT0NLRVRfU0VMRUNURURfTlBOX1BST1RPQ09MX01FVEhPRERFRgorICAgICNkZWZpbmUgX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX05QTl9QUk9UT0NPTF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfU1NMX19TU0xTT0NLRVRfU0VMRUNURURfTlBOX1BST1RPQ09MX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfU1NMX19TU0xTT0NLRVRfU0VMRUNURURfQUxQTl9QUk9UT0NPTF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9TRUxFQ1RFRF9BTFBOX1BST1RPQ09MX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9TU0xfX1NTTFNPQ0tFVF9TRUxFQ1RFRF9BTFBOX1BST1RPQ09MX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfU1NMX19TU0xDT05URVhUX1NFVF9FQ0RIX0NVUlZFX01FVEhPRERFRgorICAgICNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9TRVRfRUNESF9DVVJWRV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfU1NMX19TU0xDT05URVhUX1NFVF9FQ0RIX0NVUlZFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfU1NMX1JBTkRfRUdEX01FVEhPRERFRgorICAgICNkZWZpbmUgX1NTTF9SQU5EX0VHRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfU1NMX1JBTkRfRUdEX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfU1NMX0VOVU1fQ0VSVElGSUNBVEVTX01FVEhPRERFRgorICAgICNkZWZpbmUgX1NTTF9FTlVNX0NFUlRJRklDQVRFU19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfU1NMX0VOVU1fQ0VSVElGSUNBVEVTX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9TU0xfRU5VTV9DUkxTX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9TU0xfRU5VTV9DUkxTX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMTQ5OTljYjU2NWE2OWEyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL190a2ludGVyLmMuaCBiL01vZHVsZXMvY2xpbmljL190a2ludGVyLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTE3ZGVjCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX3RraW50ZXIuYy5oCkBAIC0wLDAgKzEsNjI0IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZXZhbF9fZG9jX18sCisiZXZhbCgkc2VsZiwgc2NyaXB0LCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9FVkFMX01FVEhPRERFRiAgICBcCisgICAgeyJldmFsIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2V2YWwsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZXZhbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZXZhbF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpzY3JpcHQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZXZhbChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpzY3JpcHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXZhbCIsICZzY3JpcHQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZXZhbF9pbXBsKHNlbGYsIHNjcmlwdCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2V2YWxmaWxlX19kb2NfXywKKyJldmFsZmlsZSgkc2VsZiwgZmlsZU5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0VWQUxGSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJldmFsZmlsZSIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9ldmFsZmlsZSwgTUVUSF9PLCBfdGtpbnRlcl90a2FwcF9ldmFsZmlsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZXZhbGZpbGVfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqZmlsZU5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZXZhbGZpbGUoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqZmlsZU5hbWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXZhbGZpbGUiLCAmZmlsZU5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZXZhbGZpbGVfaW1wbChzZWxmLCBmaWxlTmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX3JlY29yZF9fZG9jX18sCisicmVjb3JkKCRzZWxmLCBzY3JpcHQsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX1JFQ09SRF9NRVRIT0RERUYgICAgXAorICAgIHsicmVjb3JkIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX3JlY29yZCwgTUVUSF9PLCBfdGtpbnRlcl90a2FwcF9yZWNvcmRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX3JlY29yZF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpzY3JpcHQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfcmVjb3JkKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKnNjcmlwdDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpyZWNvcmQiLCAmc2NyaXB0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX3JlY29yZF9pbXBsKHNlbGYsIHNjcmlwdCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2FkZGVycmluZm9fX2RvY19fLAorImFkZGVycmluZm8oJHNlbGYsIG1zZywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfQURERVJSSU5GT19NRVRIT0RERUYgICAgXAorICAgIHsiYWRkZXJyaW5mbyIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9hZGRlcnJpbmZvLCBNRVRIX08sIF90a2ludGVyX3RrYXBwX2FkZGVycmluZm9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2FkZGVycmluZm9faW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqbXNnKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2FkZGVycmluZm8oVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqbXNnOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmFkZGVycmluZm8iLCAmbXNnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2FkZGVycmluZm9faW1wbChzZWxmLCBtc2cpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9nZXRpbnRfX2RvY19fLAorImdldGludCgkc2VsZiwgYXJnLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9HRVRJTlRfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGludCIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9nZXRpbnQsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZ2V0aW50X19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9nZXRkb3VibGVfX2RvY19fLAorImdldGRvdWJsZSgkc2VsZiwgYXJnLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9HRVRET1VCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGRvdWJsZSIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9nZXRkb3VibGUsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZ2V0ZG91YmxlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9nZXRib29sZWFuX19kb2NfXywKKyJnZXRib29sZWFuKCRzZWxmLCBhcmcsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0dFVEJPT0xFQU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGJvb2xlYW4iLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZ2V0Ym9vbGVhbiwgTUVUSF9PLCBfdGtpbnRlcl90a2FwcF9nZXRib29sZWFuX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9leHByc3RyaW5nX19kb2NfXywKKyJleHByc3RyaW5nKCRzZWxmLCBzLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9FWFBSU1RSSU5HX01FVEhPRERFRiAgICBcCisgICAgeyJleHByc3RyaW5nIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2V4cHJzdHJpbmcsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZXhwcnN0cmluZ19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZXhwcnN0cmluZ19pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V4cHJzdHJpbmcoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqczsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpleHByc3RyaW5nIiwgJnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZXhwcnN0cmluZ19pbXBsKHNlbGYsIHMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9leHBybG9uZ19fZG9jX18sCisiZXhwcmxvbmcoJHNlbGYsIHMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0VYUFJMT05HX01FVEhPRERFRiAgICBcCisgICAgeyJleHBybG9uZyIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9leHBybG9uZywgTUVUSF9PLCBfdGtpbnRlcl90a2FwcF9leHBybG9uZ19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZXhwcmxvbmdfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9leHBybG9uZyhUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJsb25nIiwgJnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZXhwcmxvbmdfaW1wbChzZWxmLCBzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZXhwcmRvdWJsZV9fZG9jX18sCisiZXhwcmRvdWJsZSgkc2VsZiwgcywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfRVhQUkRPVUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsiZXhwcmRvdWJsZSIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9leHByZG91YmxlLCBNRVRIX08sIF90a2ludGVyX3RrYXBwX2V4cHJkb3VibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V4cHJkb3VibGVfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9leHByZG91YmxlKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcmRvdWJsZSIsICZzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJkb3VibGVfaW1wbChzZWxmLCBzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZXhwcmJvb2xlYW5fX2RvY19fLAorImV4cHJib29sZWFuKCRzZWxmLCBzLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9FWFBSQk9PTEVBTl9NRVRIT0RERUYgICAgXAorICAgIHsiZXhwcmJvb2xlYW4iLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZXhwcmJvb2xlYW4sIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZXhwcmJvb2xlYW5fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V4cHJib29sZWFuX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZXhwcmJvb2xlYW4oVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqczsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpleHByYm9vbGVhbiIsICZzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJib29sZWFuX2ltcGwoc2VsZiwgcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX3NwbGl0bGlzdF9fZG9jX18sCisic3BsaXRsaXN0KCRzZWxmLCBhcmcsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX1NQTElUTElTVF9NRVRIT0RERUYgICAgXAorICAgIHsic3BsaXRsaXN0IiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX3NwbGl0bGlzdCwgTUVUSF9PLCBfdGtpbnRlcl90a2FwcF9zcGxpdGxpc3RfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX3NwbGl0X19kb2NfXywKKyJzcGxpdCgkc2VsZiwgYXJnLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9TUExJVF9NRVRIT0RERUYgICAgXAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfc3BsaXQsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfc3BsaXRfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2NyZWF0ZWNvbW1hbmRfX2RvY19fLAorImNyZWF0ZWNvbW1hbmQoJHNlbGYsIG5hbWUsIGZ1bmMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0NSRUFURUNPTU1BTkRfTUVUSE9EREVGICAgIFwKKyAgICB7ImNyZWF0ZWNvbW1hbmQiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfY3JlYXRlY29tbWFuZCwgTUVUSF9WQVJBUkdTLCBfdGtpbnRlcl90a2FwcF9jcmVhdGVjb21tYW5kX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9jcmVhdGVjb21tYW5kX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfY3JlYXRlY29tbWFuZChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICBQeU9iamVjdCAqZnVuYzsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic086Y3JlYXRlY29tbWFuZCIsCisgICAgICAgICZuYW1lLCAmZnVuYykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9jcmVhdGVjb21tYW5kX2ltcGwoc2VsZiwgbmFtZSwgZnVuYyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2RlbGV0ZWNvbW1hbmRfX2RvY19fLAorImRlbGV0ZWNvbW1hbmQoJHNlbGYsIG5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0RFTEVURUNPTU1BTkRfTUVUSE9EREVGICAgIFwKKyAgICB7ImRlbGV0ZWNvbW1hbmQiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZGVsZXRlY29tbWFuZCwgTUVUSF9PLCBfdGtpbnRlcl90a2FwcF9kZWxldGVjb21tYW5kX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9kZWxldGVjb21tYW5kX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZGVsZXRlY29tbWFuZChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpuYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmRlbGV0ZWNvbW1hbmQiLCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9kZWxldGVjb21tYW5kX2ltcGwoc2VsZiwgbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9DUkVBVEVGSUxFSEFORExFUikKKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2NyZWF0ZWZpbGVoYW5kbGVyX19kb2NfXywKKyJjcmVhdGVmaWxlaGFuZGxlcigkc2VsZiwgZmlsZSwgbWFzaywgZnVuYywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfQ1JFQVRFRklMRUhBTkRMRVJfTUVUSE9EREVGICAgIFwKKyAgICB7ImNyZWF0ZWZpbGVoYW5kbGVyIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2NyZWF0ZWZpbGVoYW5kbGVyLCBNRVRIX1ZBUkFSR1MsIF90a2ludGVyX3RrYXBwX2NyZWF0ZWZpbGVoYW5kbGVyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9jcmVhdGVmaWxlaGFuZGxlcl9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1hc2ssIFB5T2JqZWN0ICpmdW5jKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2NyZWF0ZWZpbGVoYW5kbGVyKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZmlsZTsKKyAgICBpbnQgbWFzazsKKyAgICBQeU9iamVjdCAqZnVuYzsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2lPOmNyZWF0ZWZpbGVoYW5kbGVyIiwKKyAgICAgICAgJmZpbGUsICZtYXNrLCAmZnVuYykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9jcmVhdGVmaWxlaGFuZGxlcl9pbXBsKHNlbGYsIGZpbGUsIG1hc2ssIGZ1bmMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ1JFQVRFRklMRUhBTkRMRVIpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfQ1JFQVRFRklMRUhBTkRMRVIpCisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9kZWxldGVmaWxlaGFuZGxlcl9fZG9jX18sCisiZGVsZXRlZmlsZWhhbmRsZXIoJHNlbGYsIGZpbGUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0RFTEVURUZJTEVIQU5ETEVSX01FVEhPRERFRiAgICBcCisgICAgeyJkZWxldGVmaWxlaGFuZGxlciIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9kZWxldGVmaWxlaGFuZGxlciwgTUVUSF9PLCBfdGtpbnRlcl90a2FwcF9kZWxldGVmaWxlaGFuZGxlcl9fZG9jX199LAorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0NSRUFURUZJTEVIQU5ETEVSKSAqLworCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGt0aW1lcnRva2VuX2RlbGV0ZXRpbWVyaGFuZGxlcl9fZG9jX18sCisiZGVsZXRldGltZXJoYW5kbGVyKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US1RJTUVSVE9LRU5fREVMRVRFVElNRVJIQU5ETEVSX01FVEhPRERFRiAgICBcCisgICAgeyJkZWxldGV0aW1lcmhhbmRsZXIiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGt0aW1lcnRva2VuX2RlbGV0ZXRpbWVyaGFuZGxlciwgTUVUSF9OT0FSR1MsIF90a2ludGVyX3RrdGltZXJ0b2tlbl9kZWxldGV0aW1lcmhhbmRsZXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrdGltZXJ0b2tlbl9kZWxldGV0aW1lcmhhbmRsZXJfaW1wbChUa3R0T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrdGltZXJ0b2tlbl9kZWxldGV0aW1lcmhhbmRsZXIoVGt0dE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3RraW50ZXJfdGt0aW1lcnRva2VuX2RlbGV0ZXRpbWVyaGFuZGxlcl9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfY3JlYXRldGltZXJoYW5kbGVyX19kb2NfXywKKyJjcmVhdGV0aW1lcmhhbmRsZXIoJHNlbGYsIG1pbGxpc2Vjb25kcywgZnVuYywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfQ1JFQVRFVElNRVJIQU5ETEVSX01FVEhPRERFRiAgICBcCisgICAgeyJjcmVhdGV0aW1lcmhhbmRsZXIiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfY3JlYXRldGltZXJoYW5kbGVyLCBNRVRIX1ZBUkFSR1MsIF90a2ludGVyX3RrYXBwX2NyZWF0ZXRpbWVyaGFuZGxlcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfY3JlYXRldGltZXJoYW5kbGVyX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGludCBtaWxsaXNlY29uZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9jcmVhdGV0aW1lcmhhbmRsZXIoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBtaWxsaXNlY29uZHM7CisgICAgUHlPYmplY3QgKmZ1bmM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOmNyZWF0ZXRpbWVyaGFuZGxlciIsCisgICAgICAgICZtaWxsaXNlY29uZHMsICZmdW5jKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2NyZWF0ZXRpbWVyaGFuZGxlcl9pbXBsKHNlbGYsIG1pbGxpc2Vjb25kcywgZnVuYyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX21haW5sb29wX19kb2NfXywKKyJtYWlubG9vcCgkc2VsZiwgdGhyZXNob2xkPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX01BSU5MT09QX01FVEhPRERFRiAgICBcCisgICAgeyJtYWlubG9vcCIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9tYWlubG9vcCwgTUVUSF9WQVJBUkdTLCBfdGtpbnRlcl90a2FwcF9tYWlubG9vcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfbWFpbmxvb3BfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgaW50IHRocmVzaG9sZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9tYWlubG9vcChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHRocmVzaG9sZCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOm1haW5sb29wIiwKKyAgICAgICAgJnRocmVzaG9sZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9tYWlubG9vcF9pbXBsKHNlbGYsIHRocmVzaG9sZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2Rvb25lZXZlbnRfX2RvY19fLAorImRvb25lZXZlbnQoJHNlbGYsIGZsYWdzPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0RPT05FRVZFTlRfTUVUSE9EREVGICAgIFwKKyAgICB7ImRvb25lZXZlbnQiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZG9vbmVldmVudCwgTUVUSF9WQVJBUkdTLCBfdGtpbnRlcl90a2FwcF9kb29uZWV2ZW50X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9kb29uZWV2ZW50X2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGludCBmbGFncyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9kb29uZWV2ZW50KFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmxhZ3MgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpkb29uZWV2ZW50IiwKKyAgICAgICAgJmZsYWdzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2Rvb25lZXZlbnRfaW1wbChzZWxmLCBmbGFncyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX3F1aXRfX2RvY19fLAorInF1aXQoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX1FVSVRfTUVUSE9EREVGICAgIFwKKyAgICB7InF1aXQiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfcXVpdCwgTUVUSF9OT0FSR1MsIF90a2ludGVyX3RrYXBwX3F1aXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX3F1aXRfaW1wbChUa2FwcE9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9xdWl0KFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfdGtpbnRlcl90a2FwcF9xdWl0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9pbnRlcnBhZGRyX19kb2NfXywKKyJpbnRlcnBhZGRyKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9JTlRFUlBBRERSX01FVEhPRERFRiAgICBcCisgICAgeyJpbnRlcnBhZGRyIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2ludGVycGFkZHIsIE1FVEhfTk9BUkdTLCBfdGtpbnRlcl90a2FwcF9pbnRlcnBhZGRyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9pbnRlcnBhZGRyX2ltcGwoVGthcHBPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfaW50ZXJwYWRkcihUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3RraW50ZXJfdGthcHBfaW50ZXJwYWRkcl9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfbG9hZHRrX19kb2NfXywKKyJsb2FkdGsoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0xPQURUS19NRVRIT0RERUYgICAgXAorICAgIHsibG9hZHRrIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2xvYWR0aywgTUVUSF9OT0FSR1MsIF90a2ludGVyX3RrYXBwX2xvYWR0a19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfbG9hZHRrX2ltcGwoVGthcHBPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfbG9hZHRrKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfdGtpbnRlcl90a2FwcF9sb2FkdGtfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX3dpbGxkaXNwYXRjaF9fZG9jX18sCisid2lsbGRpc3BhdGNoKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9XSUxMRElTUEFUQ0hfTUVUSE9EREVGICAgIFwKKyAgICB7IndpbGxkaXNwYXRjaCIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF93aWxsZGlzcGF0Y2gsIE1FVEhfTk9BUkdTLCBfdGtpbnRlcl90a2FwcF93aWxsZGlzcGF0Y2hfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX3dpbGxkaXNwYXRjaF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX3dpbGxkaXNwYXRjaChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3RraW50ZXJfdGthcHBfd2lsbGRpc3BhdGNoX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl9fZmxhdHRlbl9fZG9jX18sCisiX2ZsYXR0ZW4oJG1vZHVsZSwgaXRlbSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfX0ZMQVRURU5fTUVUSE9EREVGICAgIFwKKyAgICB7Il9mbGF0dGVuIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX19mbGF0dGVuLCBNRVRIX08sIF90a2ludGVyX19mbGF0dGVuX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl9jcmVhdGVfX2RvY19fLAorImNyZWF0ZSgkbW9kdWxlLCBzY3JlZW5OYW1lPU5vbmUsIGJhc2VOYW1lPU5vbmUsIGNsYXNzTmFtZT1cJ1RrXCcsXG4iCisiICAgICAgIGludGVyYWN0aXZlPUZhbHNlLCB3YW50b2JqZWN0cz1GYWxzZSwgd2FudFRrPVRydWUsIHN5bmM9RmFsc2UsXG4iCisiICAgICAgIHVzZT1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiXG4iCisiXG4iCisiICB3YW50VGtcbiIKKyIgICAgaWYgZmFsc2UsIHRoZW4gVGtfSW5pdCgpIGRvZXNuXCd0IGdldCBjYWxsZWRcbiIKKyIgIHN5bmNcbiIKKyIgICAgaWYgdHJ1ZSwgdGhlbiBwYXNzIC1zeW5jIHRvIHdpc2hcbiIKKyIgIHVzZVxuIgorIiAgICBpZiBub3QgTm9uZSwgdGhlbiBwYXNzIC11c2UgdG8gd2lzaCIpOworCisjZGVmaW5lIF9US0lOVEVSX0NSRUFURV9NRVRIT0RERUYgICAgXAorICAgIHsiY3JlYXRlIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX2NyZWF0ZSwgTUVUSF9WQVJBUkdTLCBfdGtpbnRlcl9jcmVhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX2NyZWF0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKnNjcmVlbk5hbWUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpiYXNlTmFtZSwgY29uc3QgY2hhciAqY2xhc3NOYW1lLAorICAgICAgICAgICAgICAgICAgICAgaW50IGludGVyYWN0aXZlLCBpbnQgd2FudG9iamVjdHMsIGludCB3YW50VGssIGludCBzeW5jLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX2NyZWF0ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpzY3JlZW5OYW1lID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpiYXNlTmFtZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqY2xhc3NOYW1lID0gIlRrIjsKKyAgICBpbnQgaW50ZXJhY3RpdmUgPSAwOworICAgIGludCB3YW50b2JqZWN0cyA9IDA7CisgICAgaW50IHdhbnRUayA9IDE7CisgICAgaW50IHN5bmMgPSAwOworICAgIGNvbnN0IGNoYXIgKnVzZSA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInx6c3NpaWlpejpjcmVhdGUiLAorICAgICAgICAmc2NyZWVuTmFtZSwgJmJhc2VOYW1lLCAmY2xhc3NOYW1lLCAmaW50ZXJhY3RpdmUsICZ3YW50b2JqZWN0cywgJndhbnRUaywgJnN5bmMsICZ1c2UpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfY3JlYXRlX2ltcGwobW9kdWxlLCBzY3JlZW5OYW1lLCBiYXNlTmFtZSwgY2xhc3NOYW1lLCBpbnRlcmFjdGl2ZSwgd2FudG9iamVjdHMsIHdhbnRUaywgc3luYywgdXNlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfc2V0YnVzeXdhaXRpbnRlcnZhbF9fZG9jX18sCisic2V0YnVzeXdhaXRpbnRlcnZhbCgkbW9kdWxlLCBuZXdfdmFsLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBidXN5LXdhaXQgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIGJldHdlZW4gc3VjY2Vzc2l2ZSBjYWxscyB0byBUY2xfRG9PbmVFdmVudCBpbiBhIHRocmVhZGVkIFB5dGhvbiBpbnRlcnByZXRlci5cbiIKKyJcbiIKKyJJdCBzaG91bGQgYmUgc2V0IHRvIGEgZGl2aXNvciBvZiB0aGUgbWF4aW11bSB0aW1lIGJldHdlZW4gZnJhbWVzIGluIGFuIGFuaW1hdGlvbi4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9TRVRCVVNZV0FJVElOVEVSVkFMX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRidXN5d2FpdGludGVydmFsIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3NldGJ1c3l3YWl0aW50ZXJ2YWwsIE1FVEhfTywgX3RraW50ZXJfc2V0YnVzeXdhaXRpbnRlcnZhbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfc2V0YnVzeXdhaXRpbnRlcnZhbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBuZXdfdmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3NldGJ1c3l3YWl0aW50ZXJ2YWwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbmV3X3ZhbDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzZXRidXN5d2FpdGludGVydmFsIiwgJm5ld192YWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfc2V0YnVzeXdhaXRpbnRlcnZhbF9pbXBsKG1vZHVsZSwgbmV3X3ZhbCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWxfX2RvY19fLAorImdldGJ1c3l3YWl0aW50ZXJ2YWwoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgY3VycmVudCBidXN5LXdhaXQgaW50ZXJ2YWwgYmV0d2VlbiBzdWNjZXNzaXZlIGNhbGxzIHRvIFRjbF9Eb09uZUV2ZW50IGluIGEgdGhyZWFkZWQgUHl0aG9uIGludGVycHJldGVyLiIpOworCisjZGVmaW5lIF9US0lOVEVSX0dFVEJVU1lXQUlUSU5URVJWQUxfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGJ1c3l3YWl0aW50ZXJ2YWwiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfZ2V0YnVzeXdhaXRpbnRlcnZhbCwgTUVUSF9OT0FSR1MsIF90a2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWxfX2RvY19ffSwKKworc3RhdGljIGludAorX3RraW50ZXJfZ2V0YnVzeXdhaXRpbnRlcnZhbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfZ2V0YnVzeXdhaXRpbnRlcnZhbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgX3JldHVybl92YWx1ZSA9IF90a2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWxfaW1wbChtb2R1bGUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWZuZGVmIF9US0lOVEVSX1RLQVBQX0NSRUFURUZJTEVIQU5ETEVSX01FVEhPRERFRgorICAgICNkZWZpbmUgX1RLSU5URVJfVEtBUFBfQ1JFQVRFRklMRUhBTkRMRVJfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1RLSU5URVJfVEtBUFBfQ1JFQVRFRklMRUhBTkRMRVJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9US0lOVEVSX1RLQVBQX0RFTEVURUZJTEVIQU5ETEVSX01FVEhPRERFRgorICAgICNkZWZpbmUgX1RLSU5URVJfVEtBUFBfREVMRVRFRklMRUhBTkRMRVJfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1RLSU5URVJfVEtBUFBfREVMRVRFRklMRUhBTkRMRVJfTUVUSE9EREVGKSAqLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZkZDY2N2I5MWNmOGFkZGQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3dlYWtyZWYuYy5oIGIvTW9kdWxlcy9jbGluaWMvX3dlYWtyZWYuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3YzcwMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fd2Vha3JlZi5jLmgKQEAgLTAsMCArMSwzMSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF93ZWFrcmVmX2dldHdlYWtyZWZjb3VudF9fZG9jX18sCisiZ2V0d2Vha3JlZmNvdW50KCRtb2R1bGUsIG9iamVjdCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgbnVtYmVyIG9mIHdlYWsgcmVmZXJlbmNlcyB0byBcJ29iamVjdFwnLiIpOworCisjZGVmaW5lIF9XRUFLUkVGX0dFVFdFQUtSRUZDT1VOVF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0d2Vha3JlZmNvdW50IiwgKFB5Q0Z1bmN0aW9uKV93ZWFrcmVmX2dldHdlYWtyZWZjb3VudCwgTUVUSF9PLCBfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfX2RvY19ffSwKKworc3RhdGljIFB5X3NzaXplX3QKK193ZWFrcmVmX2dldHdlYWtyZWZjb3VudF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmplY3QpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dlYWtyZWZfZ2V0d2Vha3JlZmNvdW50KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmplY3QpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOworCisgICAgX3JldHVybl92YWx1ZSA9IF93ZWFrcmVmX2dldHdlYWtyZWZjb3VudF9pbXBsKG1vZHVsZSwgb2JqZWN0KTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZGE5YWFkZTYzZWVkNzdmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL193aW5hcGkuYy5oIGIvTW9kdWxlcy9jbGluaWMvX3dpbmFwaS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ1MThlOAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL193aW5hcGkuYy5oCkBAIC0wLDAgKzEsODU0IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX3dpbmFwaV9PdmVybGFwcGVkX0dldE92ZXJsYXBwZWRSZXN1bHRfX2RvY19fLAorIkdldE92ZXJsYXBwZWRSZXN1bHQoJHNlbGYsIHdhaXQsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfT1ZFUkxBUFBFRF9HRVRPVkVSTEFQUEVEUkVTVUxUX01FVEhPRERFRiAgICBcCisgICAgeyJHZXRPdmVybGFwcGVkUmVzdWx0IiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfT3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0LCBNRVRIX08sIF93aW5hcGlfT3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX092ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdF9pbXBsKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYsIGludCB3YWl0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfT3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0KE92ZXJsYXBwZWRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHdhaXQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInA6R2V0T3ZlcmxhcHBlZFJlc3VsdCIsICZ3YWl0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfT3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0X2ltcGwoc2VsZiwgd2FpdCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfT3ZlcmxhcHBlZF9nZXRidWZmZXJfX2RvY19fLAorImdldGJ1ZmZlcigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9PVkVSTEFQUEVEX0dFVEJVRkZFUl9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0YnVmZmVyIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfT3ZlcmxhcHBlZF9nZXRidWZmZXIsIE1FVEhfTk9BUkdTLCBfd2luYXBpX092ZXJsYXBwZWRfZ2V0YnVmZmVyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX092ZXJsYXBwZWRfZ2V0YnVmZmVyX2ltcGwoT3ZlcmxhcHBlZE9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX092ZXJsYXBwZWRfZ2V0YnVmZmVyKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF93aW5hcGlfT3ZlcmxhcHBlZF9nZXRidWZmZXJfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfT3ZlcmxhcHBlZF9jYW5jZWxfX2RvY19fLAorImNhbmNlbCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9PVkVSTEFQUEVEX0NBTkNFTF9NRVRIT0RERUYgICAgXAorICAgIHsiY2FuY2VsIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfT3ZlcmxhcHBlZF9jYW5jZWwsIE1FVEhfTk9BUkdTLCBfd2luYXBpX092ZXJsYXBwZWRfY2FuY2VsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX092ZXJsYXBwZWRfY2FuY2VsX2ltcGwoT3ZlcmxhcHBlZE9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX092ZXJsYXBwZWRfY2FuY2VsKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF93aW5hcGlfT3ZlcmxhcHBlZF9jYW5jZWxfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfQ2xvc2VIYW5kbGVfX2RvY19fLAorIkNsb3NlSGFuZGxlKCRtb2R1bGUsIGhhbmRsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNsb3NlIGhhbmRsZS4iKTsKKworI2RlZmluZSBfV0lOQVBJX0NMT1NFSEFORExFX01FVEhPRERFRiAgICBcCisgICAgeyJDbG9zZUhhbmRsZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX0Nsb3NlSGFuZGxlLCBNRVRIX08sIF93aW5hcGlfQ2xvc2VIYW5kbGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ2xvc2VIYW5kbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ2xvc2VIYW5kbGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIQU5ETEUgaGFuZGxlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6Q2xvc2VIYW5kbGUiLCAmaGFuZGxlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ2xvc2VIYW5kbGVfaW1wbChtb2R1bGUsIGhhbmRsZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfQ29ubmVjdE5hbWVkUGlwZV9fZG9jX18sCisiQ29ubmVjdE5hbWVkUGlwZSgkbW9kdWxlLCAvLCBoYW5kbGUsIG92ZXJsYXBwZWQ9RmFsc2UpXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfQ09OTkVDVE5BTUVEUElQRV9NRVRIT0RERUYgICAgXAorICAgIHsiQ29ubmVjdE5hbWVkUGlwZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ29ubmVjdE5hbWVkUGlwZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdXNlX292ZXJsYXBwZWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaGFuZGxlIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIGludCB1c2Vfb3ZlcmxhcHBlZCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICIiIEZfSEFORExFICJ8aTpDb25uZWN0TmFtZWRQaXBlIiwgX2tleXdvcmRzLAorICAgICAgICAmaGFuZGxlLCAmdXNlX292ZXJsYXBwZWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlX2ltcGwobW9kdWxlLCBoYW5kbGUsIHVzZV9vdmVybGFwcGVkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9DcmVhdGVGaWxlX19kb2NfXywKKyJDcmVhdGVGaWxlKCRtb2R1bGUsIGZpbGVfbmFtZSwgZGVzaXJlZF9hY2Nlc3MsIHNoYXJlX21vZGUsXG4iCisiICAgICAgICAgICBzZWN1cml0eV9hdHRyaWJ1dGVzLCBjcmVhdGlvbl9kaXNwb3NpdGlvbixcbiIKKyIgICAgICAgICAgIGZsYWdzX2FuZF9hdHRyaWJ1dGVzLCB0ZW1wbGF0ZV9maWxlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfV0lOQVBJX0NSRUFURUZJTEVfTUVUSE9EREVGICAgIFwKKyAgICB7IkNyZWF0ZUZpbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9DcmVhdGVGaWxlLCBNRVRIX1ZBUkFSR1MsIF93aW5hcGlfQ3JlYXRlRmlsZV9fZG9jX199LAorCitzdGF0aWMgSEFORExFCitfd2luYXBpX0NyZWF0ZUZpbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBMUENUU1RSIGZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGRlc2lyZWRfYWNjZXNzLCBEV09SRCBzaGFyZV9tb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIHNlY3VyaXR5X2F0dHJpYnV0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBjcmVhdGlvbl9kaXNwb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGZsYWdzX2FuZF9hdHRyaWJ1dGVzLCBIQU5ETEUgdGVtcGxhdGVfZmlsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0NyZWF0ZUZpbGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgTFBDVFNUUiBmaWxlX25hbWU7CisgICAgRFdPUkQgZGVzaXJlZF9hY2Nlc3M7CisgICAgRFdPUkQgc2hhcmVfbW9kZTsKKyAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgc2VjdXJpdHlfYXR0cmlidXRlczsKKyAgICBEV09SRCBjcmVhdGlvbl9kaXNwb3NpdGlvbjsKKyAgICBEV09SRCBmbGFnc19hbmRfYXR0cmlidXRlczsKKyAgICBIQU5ETEUgdGVtcGxhdGVfZmlsZTsKKyAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic2trIiBGX1BPSU5URVIgImtrIiBGX0hBTkRMRSAiOkNyZWF0ZUZpbGUiLAorICAgICAgICAmZmlsZV9uYW1lLCAmZGVzaXJlZF9hY2Nlc3MsICZzaGFyZV9tb2RlLCAmc2VjdXJpdHlfYXR0cmlidXRlcywgJmNyZWF0aW9uX2Rpc3Bvc2l0aW9uLCAmZmxhZ3NfYW5kX2F0dHJpYnV0ZXMsICZ0ZW1wbGF0ZV9maWxlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0NyZWF0ZUZpbGVfaW1wbChtb2R1bGUsIGZpbGVfbmFtZSwgZGVzaXJlZF9hY2Nlc3MsIHNoYXJlX21vZGUsIHNlY3VyaXR5X2F0dHJpYnV0ZXMsIGNyZWF0aW9uX2Rpc3Bvc2l0aW9uLCBmbGFnc19hbmRfYXR0cmlidXRlcywgdGVtcGxhdGVfZmlsZSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX0NyZWF0ZUp1bmN0aW9uX19kb2NfXywKKyJDcmVhdGVKdW5jdGlvbigkbW9kdWxlLCBzcmNfcGF0aCwgZHN0X3BhdGgsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfQ1JFQVRFSlVOQ1RJT05fTUVUSE9EREVGICAgIFwKKyAgICB7IkNyZWF0ZUp1bmN0aW9uIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfQ3JlYXRlSnVuY3Rpb24sIE1FVEhfVkFSQVJHUywgX3dpbmFwaV9DcmVhdGVKdW5jdGlvbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9DcmVhdGVKdW5jdGlvbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIExQV1NUUiBzcmNfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUFdTVFIgZHN0X3BhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9DcmVhdGVKdW5jdGlvbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBMUFdTVFIgc3JjX3BhdGg7CisgICAgTFBXU1RSIGRzdF9wYXRoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1dTpDcmVhdGVKdW5jdGlvbiIsCisgICAgICAgICZzcmNfcGF0aCwgJmRzdF9wYXRoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ3JlYXRlSnVuY3Rpb25faW1wbChtb2R1bGUsIHNyY19wYXRoLCBkc3RfcGF0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfQ3JlYXRlTmFtZWRQaXBlX19kb2NfXywKKyJDcmVhdGVOYW1lZFBpcGUoJG1vZHVsZSwgbmFtZSwgb3Blbl9tb2RlLCBwaXBlX21vZGUsIG1heF9pbnN0YW5jZXMsXG4iCisiICAgICAgICAgICAgICAgIG91dF9idWZmZXJfc2l6ZSwgaW5fYnVmZmVyX3NpemUsIGRlZmF1bHRfdGltZW91dCxcbiIKKyIgICAgICAgICAgICAgICAgc2VjdXJpdHlfYXR0cmlidXRlcywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9DUkVBVEVOQU1FRFBJUEVfTUVUSE9EREVGICAgIFwKKyAgICB7IkNyZWF0ZU5hbWVkUGlwZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX0NyZWF0ZU5hbWVkUGlwZSwgTUVUSF9WQVJBUkdTLCBfd2luYXBpX0NyZWF0ZU5hbWVkUGlwZV9fZG9jX199LAorCitzdGF0aWMgSEFORExFCitfd2luYXBpX0NyZWF0ZU5hbWVkUGlwZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIExQQ1RTVFIgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgb3Blbl9tb2RlLCBEV09SRCBwaXBlX21vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIG1heF9pbnN0YW5jZXMsIERXT1JEIG91dF9idWZmZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgaW5fYnVmZmVyX3NpemUsIERXT1JEIGRlZmF1bHRfdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIHNlY3VyaXR5X2F0dHJpYnV0ZXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9DcmVhdGVOYW1lZFBpcGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgTFBDVFNUUiBuYW1lOworICAgIERXT1JEIG9wZW5fbW9kZTsKKyAgICBEV09SRCBwaXBlX21vZGU7CisgICAgRFdPUkQgbWF4X2luc3RhbmNlczsKKyAgICBEV09SRCBvdXRfYnVmZmVyX3NpemU7CisgICAgRFdPUkQgaW5fYnVmZmVyX3NpemU7CisgICAgRFdPUkQgZGVmYXVsdF90aW1lb3V0OworICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBzZWN1cml0eV9hdHRyaWJ1dGVzOworICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJza2tra2trIiBGX1BPSU5URVIgIjpDcmVhdGVOYW1lZFBpcGUiLAorICAgICAgICAmbmFtZSwgJm9wZW5fbW9kZSwgJnBpcGVfbW9kZSwgJm1heF9pbnN0YW5jZXMsICZvdXRfYnVmZmVyX3NpemUsICZpbl9idWZmZXJfc2l6ZSwgJmRlZmF1bHRfdGltZW91dCwgJnNlY3VyaXR5X2F0dHJpYnV0ZXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfQ3JlYXRlTmFtZWRQaXBlX2ltcGwobW9kdWxlLCBuYW1lLCBvcGVuX21vZGUsIHBpcGVfbW9kZSwgbWF4X2luc3RhbmNlcywgb3V0X2J1ZmZlcl9zaXplLCBpbl9idWZmZXJfc2l6ZSwgZGVmYXVsdF90aW1lb3V0LCBzZWN1cml0eV9hdHRyaWJ1dGVzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfQ3JlYXRlUGlwZV9fZG9jX18sCisiQ3JlYXRlUGlwZSgkbW9kdWxlLCBwaXBlX2F0dHJzLCBzaXplLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGFuIGFub255bW91cyBwaXBlLlxuIgorIlxuIgorIiAgcGlwZV9hdHRyc1xuIgorIiAgICBJZ25vcmVkIGludGVybmFsbHksIGNhbiBiZSBOb25lLlxuIgorIlxuIgorIlJldHVybnMgYSAyLXR1cGxlIG9mIGhhbmRsZXMsIHRvIHRoZSByZWFkIGFuZCB3cml0ZSBlbmRzIG9mIHRoZSBwaXBlLiIpOworCisjZGVmaW5lIF9XSU5BUElfQ1JFQVRFUElQRV9NRVRIT0RERUYgICAgXAorICAgIHsiQ3JlYXRlUGlwZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX0NyZWF0ZVBpcGUsIE1FVEhfVkFSQVJHUywgX3dpbmFwaV9DcmVhdGVQaXBlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0NyZWF0ZVBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcGlwZV9hdHRycywKKyAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIHNpemUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9DcmVhdGVQaXBlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwaXBlX2F0dHJzOworICAgIERXT1JEIHNpemU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9rOkNyZWF0ZVBpcGUiLAorICAgICAgICAmcGlwZV9hdHRycywgJnNpemUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9DcmVhdGVQaXBlX2ltcGwobW9kdWxlLCBwaXBlX2F0dHJzLCBzaXplKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9DcmVhdGVQcm9jZXNzX19kb2NfXywKKyJDcmVhdGVQcm9jZXNzKCRtb2R1bGUsIGFwcGxpY2F0aW9uX25hbWUsIGNvbW1hbmRfbGluZSwgcHJvY19hdHRycyxcbiIKKyIgICAgICAgICAgICAgIHRocmVhZF9hdHRycywgaW5oZXJpdF9oYW5kbGVzLCBjcmVhdGlvbl9mbGFncyxcbiIKKyIgICAgICAgICAgICAgIGVudl9tYXBwaW5nLCBjdXJyZW50X2RpcmVjdG9yeSwgc3RhcnR1cF9pbmZvLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgbmV3IHByb2Nlc3MgYW5kIGl0cyBwcmltYXJ5IHRocmVhZC5cbiIKKyJcbiIKKyIgIHByb2NfYXR0cnNcbiIKKyIgICAgSWdub3JlZCBpbnRlcm5hbGx5LCBjYW4gYmUgTm9uZS5cbiIKKyIgIHRocmVhZF9hdHRyc1xuIgorIiAgICBJZ25vcmVkIGludGVybmFsbHksIGNhbiBiZSBOb25lLlxuIgorIlxuIgorIlRoZSByZXR1cm4gdmFsdWUgaXMgYSB0dXBsZSBvZiB0aGUgcHJvY2VzcyBoYW5kbGUsIHRocmVhZCBoYW5kbGUsXG4iCisicHJvY2VzcyBJRCwgYW5kIHRocmVhZCBJRC4iKTsKKworI2RlZmluZSBfV0lOQVBJX0NSRUFURVBST0NFU1NfTUVUSE9EREVGICAgIFwKKyAgICB7IkNyZWF0ZVByb2Nlc3MiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9DcmVhdGVQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsIF93aW5hcGlfQ3JlYXRlUHJvY2Vzc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9DcmVhdGVQcm9jZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfVU5JQ09ERSAqYXBwbGljYXRpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKmNvbW1hbmRfbGluZSwgUHlPYmplY3QgKnByb2NfYXR0cnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGhyZWFkX2F0dHJzLCBCT09MIGluaGVyaXRfaGFuZGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGNyZWF0aW9uX2ZsYWdzLCBQeU9iamVjdCAqZW52X21hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpjdXJyZW50X2RpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdGFydHVwX2luZm8pOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9DcmVhdGVQcm9jZXNzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X1VOSUNPREUgKmFwcGxpY2F0aW9uX25hbWU7CisgICAgUHlfVU5JQ09ERSAqY29tbWFuZF9saW5lOworICAgIFB5T2JqZWN0ICpwcm9jX2F0dHJzOworICAgIFB5T2JqZWN0ICp0aHJlYWRfYXR0cnM7CisgICAgQk9PTCBpbmhlcml0X2hhbmRsZXM7CisgICAgRFdPUkQgY3JlYXRpb25fZmxhZ3M7CisgICAgUHlPYmplY3QgKmVudl9tYXBwaW5nOworICAgIFB5X1VOSUNPREUgKmN1cnJlbnRfZGlyZWN0b3J5OworICAgIFB5T2JqZWN0ICpzdGFydHVwX2luZm87CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlpaT09pa09aTzpDcmVhdGVQcm9jZXNzIiwKKyAgICAgICAgJmFwcGxpY2F0aW9uX25hbWUsICZjb21tYW5kX2xpbmUsICZwcm9jX2F0dHJzLCAmdGhyZWFkX2F0dHJzLCAmaW5oZXJpdF9oYW5kbGVzLCAmY3JlYXRpb25fZmxhZ3MsICZlbnZfbWFwcGluZywgJmN1cnJlbnRfZGlyZWN0b3J5LCAmc3RhcnR1cF9pbmZvKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ3JlYXRlUHJvY2Vzc19pbXBsKG1vZHVsZSwgYXBwbGljYXRpb25fbmFtZSwgY29tbWFuZF9saW5lLCBwcm9jX2F0dHJzLCB0aHJlYWRfYXR0cnMsIGluaGVyaXRfaGFuZGxlcywgY3JlYXRpb25fZmxhZ3MsIGVudl9tYXBwaW5nLCBjdXJyZW50X2RpcmVjdG9yeSwgc3RhcnR1cF9pbmZvKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9EdXBsaWNhdGVIYW5kbGVfX2RvY19fLAorIkR1cGxpY2F0ZUhhbmRsZSgkbW9kdWxlLCBzb3VyY2VfcHJvY2Vzc19oYW5kbGUsIHNvdXJjZV9oYW5kbGUsXG4iCisiICAgICAgICAgICAgICAgIHRhcmdldF9wcm9jZXNzX2hhbmRsZSwgZGVzaXJlZF9hY2Nlc3MsIGluaGVyaXRfaGFuZGxlLFxuIgorIiAgICAgICAgICAgICAgICBvcHRpb25zPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBkdXBsaWNhdGUgaGFuZGxlIG9iamVjdC5cbiIKKyJcbiIKKyJUaGUgZHVwbGljYXRlIGhhbmRsZSByZWZlcnMgdG8gdGhlIHNhbWUgb2JqZWN0IGFzIHRoZSBvcmlnaW5hbFxuIgorImhhbmRsZS4gVGhlcmVmb3JlLCBhbnkgY2hhbmdlcyB0byB0aGUgb2JqZWN0IGFyZSByZWZsZWN0ZWRcbiIKKyJ0aHJvdWdoIGJvdGggaGFuZGxlcy4iKTsKKworI2RlZmluZSBfV0lOQVBJX0RVUExJQ0FURUhBTkRMRV9NRVRIT0RERUYgICAgXAorICAgIHsiRHVwbGljYXRlSGFuZGxlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfRHVwbGljYXRlSGFuZGxlLCBNRVRIX1ZBUkFSR1MsIF93aW5hcGlfRHVwbGljYXRlSGFuZGxlX19kb2NfX30sCisKK3N0YXRpYyBIQU5ETEUKK193aW5hcGlfRHVwbGljYXRlSGFuZGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFIHNvdXJjZV9wcm9jZXNzX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFIHNvdXJjZV9oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSB0YXJnZXRfcHJvY2Vzc19oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGRlc2lyZWRfYWNjZXNzLCBCT09MIGluaGVyaXRfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBvcHRpb25zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfRHVwbGljYXRlSGFuZGxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhBTkRMRSBzb3VyY2VfcHJvY2Vzc19oYW5kbGU7CisgICAgSEFORExFIHNvdXJjZV9oYW5kbGU7CisgICAgSEFORExFIHRhcmdldF9wcm9jZXNzX2hhbmRsZTsKKyAgICBEV09SRCBkZXNpcmVkX2FjY2VzczsKKyAgICBCT09MIGluaGVyaXRfaGFuZGxlOworICAgIERXT1JEIG9wdGlvbnMgPSAwOworICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIEZfSEFORExFICIiIEZfSEFORExFICIiIEZfSEFORExFICJraXxrOkR1cGxpY2F0ZUhhbmRsZSIsCisgICAgICAgICZzb3VyY2VfcHJvY2Vzc19oYW5kbGUsICZzb3VyY2VfaGFuZGxlLCAmdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlLCAmZGVzaXJlZF9hY2Nlc3MsICZpbmhlcml0X2hhbmRsZSwgJm9wdGlvbnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfRHVwbGljYXRlSGFuZGxlX2ltcGwobW9kdWxlLCBzb3VyY2VfcHJvY2Vzc19oYW5kbGUsIHNvdXJjZV9oYW5kbGUsIHRhcmdldF9wcm9jZXNzX2hhbmRsZSwgZGVzaXJlZF9hY2Nlc3MsIGluaGVyaXRfaGFuZGxlLCBvcHRpb25zKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfRXhpdFByb2Nlc3NfX2RvY19fLAorIkV4aXRQcm9jZXNzKCRtb2R1bGUsIEV4aXRDb2RlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfV0lOQVBJX0VYSVRQUk9DRVNTX01FVEhPRERFRiAgICBcCisgICAgeyJFeGl0UHJvY2VzcyIsIChQeUNGdW5jdGlvbilfd2luYXBpX0V4aXRQcm9jZXNzLCBNRVRIX08sIF93aW5hcGlfRXhpdFByb2Nlc3NfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfRXhpdFByb2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBVSU5UIEV4aXRDb2RlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfRXhpdFByb2Nlc3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBVSU5UIEV4aXRDb2RlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJJOkV4aXRQcm9jZXNzIiwgJkV4aXRDb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfRXhpdFByb2Nlc3NfaW1wbChtb2R1bGUsIEV4aXRDb2RlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9HZXRDdXJyZW50UHJvY2Vzc19fZG9jX18sCisiR2V0Q3VycmVudFByb2Nlc3MoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGhhbmRsZSBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3MuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9HRVRDVVJSRU5UUFJPQ0VTU19NRVRIT0RERUYgICAgXAorICAgIHsiR2V0Q3VycmVudFByb2Nlc3MiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9HZXRDdXJyZW50UHJvY2VzcywgTUVUSF9OT0FSR1MsIF93aW5hcGlfR2V0Q3VycmVudFByb2Nlc3NfX2RvY19ffSwKKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9HZXRDdXJyZW50UHJvY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9HZXRDdXJyZW50UHJvY2VzcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOworCisgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfR2V0Q3VycmVudFByb2Nlc3NfaW1wbChtb2R1bGUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9HZXRFeGl0Q29kZVByb2Nlc3NfX2RvY19fLAorIkdldEV4aXRDb2RlUHJvY2VzcygkbW9kdWxlLCBwcm9jZXNzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB0ZXJtaW5hdGlvbiBzdGF0dXMgb2YgdGhlIHNwZWNpZmllZCBwcm9jZXNzLiIpOworCisjZGVmaW5lIF9XSU5BUElfR0VURVhJVENPREVQUk9DRVNTX01FVEhPRERFRiAgICBcCisgICAgeyJHZXRFeGl0Q29kZVByb2Nlc3MiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9HZXRFeGl0Q29kZVByb2Nlc3MsIE1FVEhfTywgX3dpbmFwaV9HZXRFeGl0Q29kZVByb2Nlc3NfX2RvY19ffSwKKworc3RhdGljIERXT1JECitfd2luYXBpX0dldEV4aXRDb2RlUHJvY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBwcm9jZXNzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEFORExFIHByb2Nlc3M7CisgICAgRFdPUkQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBGX0hBTkRMRSAiOkdldEV4aXRDb2RlUHJvY2VzcyIsICZwcm9jZXNzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldEV4aXRDb2RlUHJvY2Vzc19pbXBsKG1vZHVsZSwgcHJvY2Vzcyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IERXT1JEX01BWCkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5X0J1aWxkVmFsdWUoImsiLCBfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9HZXRMYXN0RXJyb3JfX2RvY19fLAorIkdldExhc3RFcnJvcigkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfV0lOQVBJX0dFVExBU1RFUlJPUl9NRVRIT0RERUYgICAgXAorICAgIHsiR2V0TGFzdEVycm9yIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfR2V0TGFzdEVycm9yLCBNRVRIX05PQVJHUywgX3dpbmFwaV9HZXRMYXN0RXJyb3JfX2RvY19ffSwKKworc3RhdGljIERXT1JECitfd2luYXBpX0dldExhc3RFcnJvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9HZXRMYXN0RXJyb3IoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBEV09SRCBfcmV0dXJuX3ZhbHVlOworCisgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfR2V0TGFzdEVycm9yX2ltcGwobW9kdWxlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gRFdPUkRfTUFYKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlfQnVpbGRWYWx1ZSgiayIsIF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX0dldE1vZHVsZUZpbGVOYW1lX19kb2NfXywKKyJHZXRNb2R1bGVGaWxlTmFtZSgkbW9kdWxlLCBtb2R1bGVfaGFuZGxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBmdWxseS1xdWFsaWZpZWQgcGF0aCBmb3IgdGhlIGZpbGUgdGhhdCBjb250YWlucyBtb2R1bGUuXG4iCisiXG4iCisiVGhlIG1vZHVsZSBtdXN0IGhhdmUgYmVlbiBsb2FkZWQgYnkgdGhlIGN1cnJlbnQgcHJvY2Vzcy5cbiIKKyJcbiIKKyJUaGUgbW9kdWxlIHBhcmFtZXRlciBzaG91bGQgYmUgYSBoYW5kbGUgdG8gdGhlIGxvYWRlZCBtb2R1bGVcbiIKKyJ3aG9zZSBwYXRoIGlzIGJlaW5nIHJlcXVlc3RlZC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgMCxcbiIKKyJHZXRNb2R1bGVGaWxlTmFtZSByZXRyaWV2ZXMgdGhlIHBhdGggb2YgdGhlIGV4ZWN1dGFibGUgZmlsZVxuIgorIm9mIHRoZSBjdXJyZW50IHByb2Nlc3MuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9HRVRNT0RVTEVGSUxFTkFNRV9NRVRIT0RERUYgICAgXAorICAgIHsiR2V0TW9kdWxlRmlsZU5hbWUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9HZXRNb2R1bGVGaWxlTmFtZSwgTUVUSF9PLCBfd2luYXBpX0dldE1vZHVsZUZpbGVOYW1lX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0dldE1vZHVsZUZpbGVOYW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSE1PRFVMRSBtb2R1bGVfaGFuZGxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfR2V0TW9kdWxlRmlsZU5hbWUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBITU9EVUxFIG1vZHVsZV9oYW5kbGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgRl9IQU5ETEUgIjpHZXRNb2R1bGVGaWxlTmFtZSIsICZtb2R1bGVfaGFuZGxlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfR2V0TW9kdWxlRmlsZU5hbWVfaW1wbChtb2R1bGUsIG1vZHVsZV9oYW5kbGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX0dldFN0ZEhhbmRsZV9fZG9jX18sCisiR2V0U3RkSGFuZGxlKCRtb2R1bGUsIHN0ZF9oYW5kbGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBoYW5kbGUgdG8gdGhlIHNwZWNpZmllZCBzdGFuZGFyZCBkZXZpY2UuXG4iCisiXG4iCisiICBzdGRfaGFuZGxlXG4iCisiICAgIE9uZSBvZiBTVERfSU5QVVRfSEFORExFLCBTVERfT1VUUFVUX0hBTkRMRSwgb3IgU1REX0VSUk9SX0hBTkRMRS5cbiIKKyJcbiIKKyJUaGUgaW50ZWdlciBhc3NvY2lhdGVkIHdpdGggdGhlIGhhbmRsZSBvYmplY3QgaXMgcmV0dXJuZWQuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9HRVRTVERIQU5ETEVfTUVUSE9EREVGICAgIFwKKyAgICB7IkdldFN0ZEhhbmRsZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX0dldFN0ZEhhbmRsZSwgTUVUSF9PLCBfd2luYXBpX0dldFN0ZEhhbmRsZV9fZG9jX199LAorCitzdGF0aWMgSEFORExFCitfd2luYXBpX0dldFN0ZEhhbmRsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIERXT1JEIHN0ZF9oYW5kbGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9HZXRTdGRIYW5kbGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBEV09SRCBzdGRfaGFuZGxlOworICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJrOkdldFN0ZEhhbmRsZSIsICZzdGRfaGFuZGxlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldFN0ZEhhbmRsZV9pbXBsKG1vZHVsZSwgc3RkX2hhbmRsZSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX0dldFZlcnNpb25fX2RvY19fLAorIkdldFZlcnNpb24oJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbS4iKTsKKworI2RlZmluZSBfV0lOQVBJX0dFVFZFUlNJT05fTUVUSE9EREVGICAgIFwKKyAgICB7IkdldFZlcnNpb24iLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9HZXRWZXJzaW9uLCBNRVRIX05PQVJHUywgX3dpbmFwaV9HZXRWZXJzaW9uX19kb2NfX30sCisKK3N0YXRpYyBsb25nCitfd2luYXBpX0dldFZlcnNpb25faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfR2V0VmVyc2lvbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGxvbmcgX3JldHVybl92YWx1ZTsKKworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldFZlcnNpb25faW1wbChtb2R1bGUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9PcGVuUHJvY2Vzc19fZG9jX18sCisiT3BlblByb2Nlc3MoJG1vZHVsZSwgZGVzaXJlZF9hY2Nlc3MsIGluaGVyaXRfaGFuZGxlLCBwcm9jZXNzX2lkLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfV0lOQVBJX09QRU5QUk9DRVNTX01FVEhPRERFRiAgICBcCisgICAgeyJPcGVuUHJvY2VzcyIsIChQeUNGdW5jdGlvbilfd2luYXBpX09wZW5Qcm9jZXNzLCBNRVRIX1ZBUkFSR1MsIF93aW5hcGlfT3BlblByb2Nlc3NfX2RvY19ffSwKKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9PcGVuUHJvY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIERXT1JEIGRlc2lyZWRfYWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEJPT0wgaW5oZXJpdF9oYW5kbGUsIERXT1JEIHByb2Nlc3NfaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9PcGVuUHJvY2VzcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBEV09SRCBkZXNpcmVkX2FjY2VzczsKKyAgICBCT09MIGluaGVyaXRfaGFuZGxlOworICAgIERXT1JEIHByb2Nlc3NfaWQ7CisgICAgSEFORExFIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImtpazpPcGVuUHJvY2VzcyIsCisgICAgICAgICZkZXNpcmVkX2FjY2VzcywgJmluaGVyaXRfaGFuZGxlLCAmcHJvY2Vzc19pZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9PcGVuUHJvY2Vzc19pbXBsKG1vZHVsZSwgZGVzaXJlZF9hY2Nlc3MsIGluaGVyaXRfaGFuZGxlLCBwcm9jZXNzX2lkKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfUGVla05hbWVkUGlwZV9fZG9jX18sCisiUGVla05hbWVkUGlwZSgkbW9kdWxlLCBoYW5kbGUsIHNpemU9MCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9QRUVLTkFNRURQSVBFX01FVEhPRERFRiAgICBcCisgICAgeyJQZWVrTmFtZWRQaXBlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfUGVla05hbWVkUGlwZSwgTUVUSF9WQVJBUkdTLCBfd2luYXBpX1BlZWtOYW1lZFBpcGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfUGVla05hbWVkUGlwZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsIGludCBzaXplKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfUGVla05hbWVkUGlwZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIGludCBzaXplID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAifGk6UGVla05hbWVkUGlwZSIsCisgICAgICAgICZoYW5kbGUsICZzaXplKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfUGVla05hbWVkUGlwZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCBzaXplKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9SZWFkRmlsZV9fZG9jX18sCisiUmVhZEZpbGUoJG1vZHVsZSwgLywgaGFuZGxlLCBzaXplLCBvdmVybGFwcGVkPUZhbHNlKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfV0lOQVBJX1JFQURGSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJSZWFkRmlsZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1JlYWRGaWxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3dpbmFwaV9SZWFkRmlsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9SZWFkRmlsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsIGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgIGludCB1c2Vfb3ZlcmxhcHBlZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1JlYWRGaWxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaGFuZGxlIiwgInNpemUiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIEhBTkRMRSBoYW5kbGU7CisgICAgaW50IHNpemU7CisgICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIiIgRl9IQU5ETEUgIml8aTpSZWFkRmlsZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmhhbmRsZSwgJnNpemUsICZ1c2Vfb3ZlcmxhcHBlZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1JlYWRGaWxlX2ltcGwobW9kdWxlLCBoYW5kbGUsIHNpemUsIHVzZV9vdmVybGFwcGVkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZV9fZG9jX18sCisiU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoJG1vZHVsZSwgbmFtZWRfcGlwZSwgbW9kZSxcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICBtYXhfY29sbGVjdGlvbl9jb3VudCwgY29sbGVjdF9kYXRhX3RpbWVvdXQsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfU0VUTkFNRURQSVBFSEFORExFU1RBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUsIE1FVEhfVkFSQVJHUywgX3dpbmFwaV9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBuYW1lZF9waXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXhfY29sbGVjdGlvbl9jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29sbGVjdF9kYXRhX3RpbWVvdXQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIQU5ETEUgbmFtZWRfcGlwZTsKKyAgICBQeU9iamVjdCAqbW9kZTsKKyAgICBQeU9iamVjdCAqbWF4X2NvbGxlY3Rpb25fY291bnQ7CisgICAgUHlPYmplY3QgKmNvbGxlY3RfZGF0YV90aW1lb3V0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIEZfSEFORExFICJPT086U2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUiLAorICAgICAgICAmbmFtZWRfcGlwZSwgJm1vZGUsICZtYXhfY29sbGVjdGlvbl9jb3VudCwgJmNvbGxlY3RfZGF0YV90aW1lb3V0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGVfaW1wbChtb2R1bGUsIG5hbWVkX3BpcGUsIG1vZGUsIG1heF9jb2xsZWN0aW9uX2NvdW50LCBjb2xsZWN0X2RhdGFfdGltZW91dCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfVGVybWluYXRlUHJvY2Vzc19fZG9jX18sCisiVGVybWluYXRlUHJvY2VzcygkbW9kdWxlLCBoYW5kbGUsIGV4aXRfY29kZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlRlcm1pbmF0ZSB0aGUgc3BlY2lmaWVkIHByb2Nlc3MgYW5kIGFsbCBvZiBpdHMgdGhyZWFkcy4iKTsKKworI2RlZmluZSBfV0lOQVBJX1RFUk1JTkFURVBST0NFU1NfTUVUSE9EREVGICAgIFwKKyAgICB7IlRlcm1pbmF0ZVByb2Nlc3MiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9UZXJtaW5hdGVQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsIF93aW5hcGlfVGVybWluYXRlUHJvY2Vzc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9UZXJtaW5hdGVQcm9jZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIGhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQgZXhpdF9jb2RlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfVGVybWluYXRlUHJvY2VzcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIFVJTlQgZXhpdF9jb2RlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIEZfSEFORExFICJJOlRlcm1pbmF0ZVByb2Nlc3MiLAorICAgICAgICAmaGFuZGxlLCAmZXhpdF9jb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfVGVybWluYXRlUHJvY2Vzc19pbXBsKG1vZHVsZSwgaGFuZGxlLCBleGl0X2NvZGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX1dhaXROYW1lZFBpcGVfX2RvY19fLAorIldhaXROYW1lZFBpcGUoJG1vZHVsZSwgbmFtZSwgdGltZW91dCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9XQUlUTkFNRURQSVBFX01FVEhPRERFRiAgICBcCisgICAgeyJXYWl0TmFtZWRQaXBlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfV2FpdE5hbWVkUGlwZSwgTUVUSF9WQVJBUkdTLCBfd2luYXBpX1dhaXROYW1lZFBpcGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfV2FpdE5hbWVkUGlwZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIExQQ1RTVFIgbmFtZSwgRFdPUkQgdGltZW91dCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1dhaXROYW1lZFBpcGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgTFBDVFNUUiBuYW1lOworICAgIERXT1JEIHRpbWVvdXQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNrOldhaXROYW1lZFBpcGUiLAorICAgICAgICAmbmFtZSwgJnRpbWVvdXQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9XYWl0TmFtZWRQaXBlX2ltcGwobW9kdWxlLCBuYW1lLCB0aW1lb3V0KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9XYWl0Rm9yTXVsdGlwbGVPYmplY3RzX19kb2NfXywKKyJXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKCRtb2R1bGUsIGhhbmRsZV9zZXEsIHdhaXRfZmxhZyxcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgIG1pbGxpc2Vjb25kcz1fd2luYXBpLklORklOSVRFLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfV0lOQVBJX1dBSVRGT1JNVUxUSVBMRU9CSkVDVFNfTUVUSE9EREVGICAgIFwKKyAgICB7IldhaXRGb3JNdWx0aXBsZU9iamVjdHMiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9XYWl0Rm9yTXVsdGlwbGVPYmplY3RzLCBNRVRIX1ZBUkFSR1MsIF93aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0c19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9XYWl0Rm9yTXVsdGlwbGVPYmplY3RzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpoYW5kbGVfc2VxLCBCT09MIHdhaXRfZmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIG1pbGxpc2Vjb25kcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1dhaXRGb3JNdWx0aXBsZU9iamVjdHMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmhhbmRsZV9zZXE7CisgICAgQk9PTCB3YWl0X2ZsYWc7CisgICAgRFdPUkQgbWlsbGlzZWNvbmRzID0gSU5GSU5JVEU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9pfGs6V2FpdEZvck11bHRpcGxlT2JqZWN0cyIsCisgICAgICAgICZoYW5kbGVfc2VxLCAmd2FpdF9mbGFnLCAmbWlsbGlzZWNvbmRzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0c19pbXBsKG1vZHVsZSwgaGFuZGxlX3NlcSwgd2FpdF9mbGFnLCBtaWxsaXNlY29uZHMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3RfX2RvY19fLAorIldhaXRGb3JTaW5nbGVPYmplY3QoJG1vZHVsZSwgaGFuZGxlLCBtaWxsaXNlY29uZHMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXYWl0IGZvciBhIHNpbmdsZSBvYmplY3QuXG4iCisiXG4iCisiV2FpdCB1bnRpbCB0aGUgc3BlY2lmaWVkIG9iamVjdCBpcyBpbiB0aGUgc2lnbmFsZWQgc3RhdGUgb3JcbiIKKyJ0aGUgdGltZS1vdXQgaW50ZXJ2YWwgZWxhcHNlcy4gVGhlIHRpbWVvdXQgdmFsdWUgaXMgc3BlY2lmaWVkXG4iCisiaW4gbWlsbGlzZWNvbmRzLiIpOworCisjZGVmaW5lIF9XSU5BUElfV0FJVEZPUlNJTkdMRU9CSkVDVF9NRVRIT0RERUYgICAgXAorICAgIHsiV2FpdEZvclNpbmdsZU9iamVjdCIsIChQeUNGdW5jdGlvbilfd2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3QsIE1FVEhfVkFSQVJHUywgX3dpbmFwaV9XYWl0Rm9yU2luZ2xlT2JqZWN0X19kb2NfX30sCisKK3N0YXRpYyBsb25nCitfd2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgbWlsbGlzZWNvbmRzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfV2FpdEZvclNpbmdsZU9iamVjdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIERXT1JEIG1pbGxpc2Vjb25kczsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgRl9IQU5ETEUgIms6V2FpdEZvclNpbmdsZU9iamVjdCIsCisgICAgICAgICZoYW5kbGUsICZtaWxsaXNlY29uZHMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfV2FpdEZvclNpbmdsZU9iamVjdF9pbXBsKG1vZHVsZSwgaGFuZGxlLCBtaWxsaXNlY29uZHMpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9Xcml0ZUZpbGVfX2RvY19fLAorIldyaXRlRmlsZSgkbW9kdWxlLCAvLCBoYW5kbGUsIGJ1ZmZlciwgb3ZlcmxhcHBlZD1GYWxzZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9XUklURUZJTEVfTUVUSE9EREVGICAgIFwKKyAgICB7IldyaXRlRmlsZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1dyaXRlRmlsZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF93aW5hcGlfV3JpdGVGaWxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1dyaXRlRmlsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsIFB5T2JqZWN0ICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgIGludCB1c2Vfb3ZlcmxhcHBlZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1dyaXRlRmlsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJidWZmZXIiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIEhBTkRMRSBoYW5kbGU7CisgICAgUHlPYmplY3QgKmJ1ZmZlcjsKKyAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBGX0hBTkRMRSAiT3xpOldyaXRlRmlsZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmhhbmRsZSwgJmJ1ZmZlciwgJnVzZV9vdmVybGFwcGVkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfV3JpdGVGaWxlX2ltcGwobW9kdWxlLCBoYW5kbGUsIGJ1ZmZlciwgdXNlX292ZXJsYXBwZWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTg3NzFjNjU4NDA1NmQxOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9hcnJheW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9hcnJheW1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRmMjQ3ZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL2FycmF5bW9kdWxlLmMuaApAQCAtMCwwICsxLDQ5OSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X19fY29weV9fX19kb2NfXywKKyJfX2NvcHlfXygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvcHkgb2YgdGhlIGFycmF5LiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX19fQ09QWV9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX2NvcHlfXyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9fX2NvcHlfXywgTUVUSF9OT0FSR1MsIGFycmF5X2FycmF5X19fY29weV9fX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9fX2NvcHlfX19pbXBsKGFycmF5b2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X19fY29weV9fKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBhcnJheV9hcnJheV9fX2NvcHlfX19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfX19kZWVwY29weV9fX19kb2NfXywKKyJfX2RlZXBjb3B5X18oJHNlbGYsIHVudXNlZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvcHkgb2YgdGhlIGFycmF5LiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX19fREVFUENPUFlfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X19fZGVlcGNvcHlfXywgTUVUSF9PLCBhcnJheV9hcnJheV9fX2RlZXBjb3B5X19fX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X2NvdW50X19kb2NfXywKKyJjb3VudCgkc2VsZiwgdiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2YgdiBpbiB0aGUgYXJyYXkuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfQ09VTlRfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvdW50IiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X2NvdW50LCBNRVRIX08sIGFycmF5X2FycmF5X2NvdW50X19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9pbmRleF9fZG9jX18sCisiaW5kZXgoJHNlbGYsIHYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gaW5kZXggb2YgZmlyc3Qgb2NjdXJyZW5jZSBvZiB2IGluIHRoZSBhcnJheS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9JTkRFWF9NRVRIT0RERUYgICAgXAorICAgIHsiaW5kZXgiLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfaW5kZXgsIE1FVEhfTywgYXJyYXlfYXJyYXlfaW5kZXhfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X3JlbW92ZV9fZG9jX18sCisicmVtb3ZlKCRzZWxmLCB2LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVtb3ZlIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHYgaW4gdGhlIGFycmF5LiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX1JFTU9WRV9NRVRIT0RERUYgICAgXAorICAgIHsicmVtb3ZlIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X3JlbW92ZSwgTUVUSF9PLCBhcnJheV9hcnJheV9yZW1vdmVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X3BvcF9fZG9jX18sCisicG9wKCRzZWxmLCBpPS0xLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBpLXRoIGVsZW1lbnQgYW5kIGRlbGV0ZSBpdCBmcm9tIHRoZSBhcnJheS5cbiIKKyJcbiIKKyJpIGRlZmF1bHRzIHRvIC0xLiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX1BPUF9NRVRIT0RERUYgICAgXAorICAgIHsicG9wIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X3BvcCwgTUVUSF9WQVJBUkdTLCBhcnJheV9hcnJheV9wb3BfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3BvcF9pbXBsKGFycmF5b2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGkpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfcG9wKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGkgPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cG9wIiwKKyAgICAgICAgJmkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfcG9wX2ltcGwoc2VsZiwgaSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X2V4dGVuZF9fZG9jX18sCisiZXh0ZW5kKCRzZWxmLCBiYiwgLylcbiIKKyItLVxuIgorIlxuIgorIkFwcGVuZCBpdGVtcyB0byB0aGUgZW5kIG9mIHRoZSBhcnJheS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9FWFRFTkRfTUVUSE9EREVGICAgIFwKKyAgICB7ImV4dGVuZCIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9leHRlbmQsIE1FVEhfTywgYXJyYXlfYXJyYXlfZXh0ZW5kX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9pbnNlcnRfX2RvY19fLAorImluc2VydCgkc2VsZiwgaSwgdiwgLylcbiIKKyItLVxuIgorIlxuIgorIkluc2VydCBhIG5ldyBpdGVtIHYgaW50byB0aGUgYXJyYXkgYmVmb3JlIHBvc2l0aW9uIGkuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfSU5TRVJUX01FVEhPRERFRiAgICBcCisgICAgeyJpbnNlcnQiLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfaW5zZXJ0LCBNRVRIX1ZBUkFSR1MsIGFycmF5X2FycmF5X2luc2VydF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfaW5zZXJ0X2ltcGwoYXJyYXlvYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaSwgUHlPYmplY3QgKnYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfaW5zZXJ0KGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlPYmplY3QgKnY7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm5POmluc2VydCIsCisgICAgICAgICZpLCAmdikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9pbnNlcnRfaW1wbChzZWxmLCBpLCB2KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfYnVmZmVyX2luZm9fX2RvY19fLAorImJ1ZmZlcl9pbmZvKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgdHVwbGUgKGFkZHJlc3MsIGxlbmd0aCkgZ2l2aW5nIHRoZSBjdXJyZW50IG1lbW9yeSBhZGRyZXNzIGFuZCB0aGUgbGVuZ3RoIGluIGl0ZW1zIG9mIHRoZSBidWZmZXIgdXNlZCB0byBob2xkIGFycmF5XCdzIGNvbnRlbnRzLlxuIgorIlxuIgorIlRoZSBsZW5ndGggc2hvdWxkIGJlIG11bHRpcGxpZWQgYnkgdGhlIGl0ZW1zaXplIGF0dHJpYnV0ZSB0byBjYWxjdWxhdGVcbiIKKyJ0aGUgYnVmZmVyIGxlbmd0aCBpbiBieXRlcy4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9CVUZGRVJfSU5GT19NRVRIT0RERUYgICAgXAorICAgIHsiYnVmZmVyX2luZm8iLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfYnVmZmVyX2luZm8sIE1FVEhfTk9BUkdTLCBhcnJheV9hcnJheV9idWZmZXJfaW5mb19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfYnVmZmVyX2luZm9faW1wbChhcnJheW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9idWZmZXJfaW5mbyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfYnVmZmVyX2luZm9faW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X2FwcGVuZF9fZG9jX18sCisiYXBwZW5kKCRzZWxmLCB2LCAvKVxuIgorIi0tXG4iCisiXG4iCisiQXBwZW5kIG5ldyB2YWx1ZSB2IHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5LiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX0FQUEVORF9NRVRIT0RERUYgICAgXAorICAgIHsiYXBwZW5kIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X2FwcGVuZCwgTUVUSF9PLCBhcnJheV9hcnJheV9hcHBlbmRfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X2J5dGVzd2FwX19kb2NfXywKKyJieXRlc3dhcCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkJ5dGVzd2FwIGFsbCBpdGVtcyBvZiB0aGUgYXJyYXkuXG4iCisiXG4iCisiSWYgdGhlIGl0ZW1zIGluIHRoZSBhcnJheSBhcmUgbm90IDEsIDIsIDQsIG9yIDggYnl0ZXMgaW4gc2l6ZSwgUnVudGltZUVycm9yIGlzXG4iCisicmFpc2VkLiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX0JZVEVTV0FQX01FVEhPRERFRiAgICBcCisgICAgeyJieXRlc3dhcCIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9ieXRlc3dhcCwgTUVUSF9OT0FSR1MsIGFycmF5X2FycmF5X2J5dGVzd2FwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9ieXRlc3dhcF9pbXBsKGFycmF5b2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2J5dGVzd2FwKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBhcnJheV9hcnJheV9ieXRlc3dhcF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfcmV2ZXJzZV9fZG9jX18sCisicmV2ZXJzZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldmVyc2UgdGhlIG9yZGVyIG9mIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXkuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfUkVWRVJTRV9NRVRIT0RERUYgICAgXAorICAgIHsicmV2ZXJzZSIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9yZXZlcnNlLCBNRVRIX05PQVJHUywgYXJyYXlfYXJyYXlfcmV2ZXJzZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfcmV2ZXJzZV9pbXBsKGFycmF5b2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3JldmVyc2UoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGFycmF5X2FycmF5X3JldmVyc2VfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X2Zyb21maWxlX19kb2NfXywKKyJmcm9tZmlsZSgkc2VsZiwgZiwgbiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlYWQgbiBvYmplY3RzIGZyb20gdGhlIGZpbGUgb2JqZWN0IGYgYW5kIGFwcGVuZCB0aGVtIHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5LiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX0ZST01GSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJmcm9tZmlsZSIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9mcm9tZmlsZSwgTUVUSF9WQVJBUkdTLCBhcnJheV9hcnJheV9mcm9tZmlsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfZnJvbWZpbGVfaW1wbChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmYsIFB5X3NzaXplX3Qgbik7CisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9mcm9tZmlsZShhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmY7CisgICAgUHlfc3NpemVfdCBuOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPbjpmcm9tZmlsZSIsCisgICAgICAgICZmLCAmbikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9mcm9tZmlsZV9pbXBsKHNlbGYsIGYsIG4pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV90b2ZpbGVfX2RvY19fLAorInRvZmlsZSgkc2VsZiwgZiwgLylcbiIKKyItLVxuIgorIlxuIgorIldyaXRlIGFsbCBpdGVtcyAoYXMgbWFjaGluZSB2YWx1ZXMpIHRvIHRoZSBmaWxlIG9iamVjdCBmLiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX1RPRklMRV9NRVRIT0RERUYgICAgXAorICAgIHsidG9maWxlIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X3RvZmlsZSwgTUVUSF9PLCBhcnJheV9hcnJheV90b2ZpbGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X2Zyb21saXN0X19kb2NfXywKKyJmcm9tbGlzdCgkc2VsZiwgbGlzdCwgLylcbiIKKyItLVxuIgorIlxuIgorIkFwcGVuZCBpdGVtcyB0byBhcnJheSBmcm9tIGxpc3QuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfRlJPTUxJU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImZyb21saXN0IiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X2Zyb21saXN0LCBNRVRIX08sIGFycmF5X2FycmF5X2Zyb21saXN0X19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV90b2xpc3RfX2RvY19fLAorInRvbGlzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkNvbnZlcnQgYXJyYXkgdG8gYW4gb3JkaW5hcnkgbGlzdCB3aXRoIHRoZSBzYW1lIGl0ZW1zLiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX1RPTElTVF9NRVRIT0RERUYgICAgXAorICAgIHsidG9saXN0IiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X3RvbGlzdCwgTUVUSF9OT0FSR1MsIGFycmF5X2FycmF5X3RvbGlzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfdG9saXN0X2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfdG9saXN0KGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBhcnJheV9hcnJheV90b2xpc3RfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X2Zyb21zdHJpbmdfX2RvY19fLAorImZyb21zdHJpbmcoJHNlbGYsIGJ1ZmZlciwgLylcbiIKKyItLVxuIgorIlxuIgorIkFwcGVuZHMgaXRlbXMgZnJvbSB0aGUgc3RyaW5nLCBpbnRlcnByZXRpbmcgaXQgYXMgYW4gYXJyYXkgb2YgbWFjaGluZSB2YWx1ZXMsIGFzIGlmIGl0IGhhZCBiZWVuIHJlYWQgZnJvbSBhIGZpbGUgdXNpbmcgdGhlIGZyb21maWxlKCkgbWV0aG9kKS5cbiIKKyJcbiIKKyJUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiBVc2UgZnJvbWJ5dGVzIGluc3RlYWQuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfRlJPTVNUUklOR19NRVRIT0RERUYgICAgXAorICAgIHsiZnJvbXN0cmluZyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9mcm9tc3RyaW5nLCBNRVRIX08sIGFycmF5X2FycmF5X2Zyb21zdHJpbmdfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2Zyb21zdHJpbmdfaW1wbChhcnJheW9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfZnJvbXN0cmluZyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzKjpmcm9tc3RyaW5nIiwgJmJ1ZmZlcikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9mcm9tc3RyaW5nX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCisgICAgaWYgKGJ1ZmZlci5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9mcm9tYnl0ZXNfX2RvY19fLAorImZyb21ieXRlcygkc2VsZiwgYnVmZmVyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQXBwZW5kcyBpdGVtcyBmcm9tIHRoZSBzdHJpbmcsIGludGVycHJldGluZyBpdCBhcyBhbiBhcnJheSBvZiBtYWNoaW5lIHZhbHVlcywgYXMgaWYgaXQgaGFkIGJlZW4gcmVhZCBmcm9tIGEgZmlsZSB1c2luZyB0aGUgZnJvbWZpbGUoKSBtZXRob2QpLiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX0ZST01CWVRFU19NRVRIT0RERUYgICAgXAorICAgIHsiZnJvbWJ5dGVzIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X2Zyb21ieXRlcywgTUVUSF9PLCBhcnJheV9hcnJheV9mcm9tYnl0ZXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2Zyb21ieXRlc19pbXBsKGFycmF5b2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9mcm9tYnl0ZXMoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6ZnJvbWJ5dGVzIiwgJmJ1ZmZlcikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9mcm9tYnl0ZXNfaW1wbChzZWxmLCAmYnVmZmVyKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KKyAgICBpZiAoYnVmZmVyLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X3RvYnl0ZXNfX2RvY19fLAorInRvYnl0ZXMoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb252ZXJ0IHRoZSBhcnJheSB0byBhbiBhcnJheSBvZiBtYWNoaW5lIHZhbHVlcyBhbmQgcmV0dXJuIHRoZSBieXRlcyByZXByZXNlbnRhdGlvbi4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9UT0JZVEVTX01FVEhPRERFRiAgICBcCisgICAgeyJ0b2J5dGVzIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X3RvYnl0ZXMsIE1FVEhfTk9BUkdTLCBhcnJheV9hcnJheV90b2J5dGVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV90b2J5dGVzX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfdG9ieXRlcyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfdG9ieXRlc19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfdG9zdHJpbmdfX2RvY19fLAorInRvc3RyaW5nKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ29udmVydCB0aGUgYXJyYXkgdG8gYW4gYXJyYXkgb2YgbWFjaGluZSB2YWx1ZXMgYW5kIHJldHVybiB0aGUgYnl0ZXMgcmVwcmVzZW50YXRpb24uXG4iCisiXG4iCisiVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gVXNlIHRvYnl0ZXMgaW5zdGVhZC4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9UT1NUUklOR19NRVRIT0RERUYgICAgXAorICAgIHsidG9zdHJpbmciLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfdG9zdHJpbmcsIE1FVEhfTk9BUkdTLCBhcnJheV9hcnJheV90b3N0cmluZ19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfdG9zdHJpbmdfaW1wbChhcnJheW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV90b3N0cmluZyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfdG9zdHJpbmdfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X2Zyb211bmljb2RlX19kb2NfXywKKyJmcm9tdW5pY29kZSgkc2VsZiwgdXN0ciwgLylcbiIKKyItLVxuIgorIlxuIgorIkV4dGVuZHMgdGhpcyBhcnJheSB3aXRoIGRhdGEgZnJvbSB0aGUgdW5pY29kZSBzdHJpbmcgdXN0ci5cbiIKKyJcbiIKKyJUaGUgYXJyYXkgbXVzdCBiZSBhIHVuaWNvZGUgdHlwZSBhcnJheTsgb3RoZXJ3aXNlIGEgVmFsdWVFcnJvciBpcyByYWlzZWQuXG4iCisiVXNlIGFycmF5LmZyb21ieXRlcyh1c3RyLmVuY29kZSguLi4pKSB0byBhcHBlbmQgVW5pY29kZSBkYXRhIHRvIGFuIGFycmF5IG9mXG4iCisic29tZSBvdGhlciB0eXBlLiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX0ZST01VTklDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJmcm9tdW5pY29kZSIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9mcm9tdW5pY29kZSwgTUVUSF9PLCBhcnJheV9hcnJheV9mcm9tdW5pY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfZnJvbXVuaWNvZGVfaW1wbChhcnJheW9iamVjdCAqc2VsZiwgUHlfVU5JQ09ERSAqdXN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCB1c3RyX2xlbmd0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9mcm9tdW5pY29kZShhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9VTklDT0RFICp1c3RyOworICAgIFB5X3NzaXplX2NsZWFuX3QgdXN0cl9sZW5ndGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInUjOmZyb211bmljb2RlIiwgJnVzdHIsICZ1c3RyX2xlbmd0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9mcm9tdW5pY29kZV9pbXBsKHNlbGYsIHVzdHIsIHVzdHJfbGVuZ3RoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfdG91bmljb2RlX19kb2NfXywKKyJ0b3VuaWNvZGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFeHRlbmRzIHRoaXMgYXJyYXkgd2l0aCBkYXRhIGZyb20gdGhlIHVuaWNvZGUgc3RyaW5nIHVzdHIuXG4iCisiXG4iCisiQ29udmVydCB0aGUgYXJyYXkgdG8gYSB1bmljb2RlIHN0cmluZy4gIFRoZSBhcnJheSBtdXN0IGJlIGEgdW5pY29kZSB0eXBlIGFycmF5O1xuIgorIm90aGVyd2lzZSBhIFZhbHVlRXJyb3IgaXMgcmFpc2VkLiAgVXNlIGFycmF5LnRvYnl0ZXMoKS5kZWNvZGUoKSB0byBvYnRhaW4gYVxuIgorInVuaWNvZGUgc3RyaW5nIGZyb20gYW4gYXJyYXkgb2Ygc29tZSBvdGhlciB0eXBlLiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX1RPVU5JQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidG91bmljb2RlIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X3RvdW5pY29kZSwgTUVUSF9OT0FSR1MsIGFycmF5X2FycmF5X3RvdW5pY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfdG91bmljb2RlX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfdG91bmljb2RlKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBhcnJheV9hcnJheV90b3VuaWNvZGVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X19fc2l6ZW9mX19fX2RvY19fLAorIl9fc2l6ZW9mX18oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTaXplIG9mIHRoZSBhcnJheSBpbiBtZW1vcnksIGluIGJ5dGVzLiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX19fU0laRU9GX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfX19zaXplb2ZfXywgTUVUSF9OT0FSR1MsIGFycmF5X2FycmF5X19fc2l6ZW9mX19fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X19fc2l6ZW9mX19faW1wbChhcnJheW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9fX3NpemVvZl9fKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBhcnJheV9hcnJheV9fX3NpemVvZl9fX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9fYXJyYXlfcmVjb25zdHJ1Y3Rvcl9fZG9jX18sCisiX2FycmF5X3JlY29uc3RydWN0b3IoJG1vZHVsZSwgYXJyYXl0eXBlLCB0eXBlY29kZSwgbWZvcm1hdF9jb2RlLCBpdGVtcyxcbiIKKyIgICAgICAgICAgICAgICAgICAgICAvKVxuIgorIi0tXG4iCisiXG4iCisiSW50ZXJuYWwuIFVzZWQgZm9yIHBpY2tsaW5nIHN1cHBvcnQuIik7CisKKyNkZWZpbmUgQVJSQVlfX0FSUkFZX1JFQ09OU1RSVUNUT1JfTUVUSE9EREVGICAgIFwKKyAgICB7Il9hcnJheV9yZWNvbnN0cnVjdG9yIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X19hcnJheV9yZWNvbnN0cnVjdG9yLCBNRVRIX1ZBUkFSR1MsIGFycmF5X19hcnJheV9yZWNvbnN0cnVjdG9yX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9fYXJyYXlfcmVjb25zdHJ1Y3Rvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5VHlwZU9iamVjdCAqYXJyYXl0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdHlwZWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gbWFjaGluZV9mb3JtYXRfY29kZSBtZm9ybWF0X2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9fYXJyYXlfcmVjb25zdHJ1Y3RvcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeVR5cGVPYmplY3QgKmFycmF5dHlwZTsKKyAgICBpbnQgdHlwZWNvZGU7CisgICAgZW51bSBtYWNoaW5lX2Zvcm1hdF9jb2RlIG1mb3JtYXRfY29kZTsKKyAgICBQeU9iamVjdCAqaXRlbXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9DaU86X2FycmF5X3JlY29uc3RydWN0b3IiLAorICAgICAgICAmYXJyYXl0eXBlLCAmdHlwZWNvZGUsICZtZm9ybWF0X2NvZGUsICZpdGVtcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9fYXJyYXlfcmVjb25zdHJ1Y3Rvcl9pbXBsKG1vZHVsZSwgYXJyYXl0eXBlLCB0eXBlY29kZSwgbWZvcm1hdF9jb2RlLCBpdGVtcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X19fcmVkdWNlX2V4X19fX2RvY19fLAorIl9fcmVkdWNlX2V4X18oJHNlbGYsIHZhbHVlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9fX1JFRFVDRV9FWF9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX3JlZHVjZV9leF9fIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X19fcmVkdWNlX2V4X18sIE1FVEhfTywgYXJyYXlfYXJyYXlfX19yZWR1Y2VfZXhfX19fZG9jX199LAorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3JlZHVjZV9fX19kb2NfXywKKyJfX3JlZHVjZV9fKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWUlURVJBVE9SX19fUkVEVUNFX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3JlZHVjZV9fLCBNRVRIX05PQVJHUywgYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3JlZHVjZV9fX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheWl0ZXJhdG9yX19fcmVkdWNlX19faW1wbChhcnJheWl0ZXJvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3JlZHVjZV9fKGFycmF5aXRlcm9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3JlZHVjZV9fX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheWl0ZXJhdG9yX19fc2V0c3RhdGVfX19fZG9jX18sCisiX19zZXRzdGF0ZV9fKCRzZWxmLCBzdGF0ZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWUlURVJBVE9SX19fU0VUU1RBVEVfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19zZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5aXRlcmF0b3JfX19zZXRzdGF0ZV9fLCBNRVRIX08sIGFycmF5X2FycmF5aXRlcmF0b3JfX19zZXRzdGF0ZV9fX19kb2NfX30sCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDJlODJjNjVlYTg0MWNmYyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9hdWRpb29wLmMuaCBiL01vZHVsZXMvY2xpbmljL2F1ZGlvb3AuYy5oCmluZGV4IDQwZWY1ZTIuLjNlZTI5NjYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL2F1ZGlvb3AuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL2F1ZGlvb3AuYy5oCkBAIC0xMiw3ICsxMiw4IEBACiAgICAgeyJnZXRzYW1wbGUiLCAoUHlDRnVuY3Rpb24pYXVkaW9vcF9nZXRzYW1wbGUsIE1FVEhfVkFSQVJHUywgYXVkaW9vcF9nZXRzYW1wbGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfZ2V0c2FtcGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBQeV9zc2l6ZV90IGluZGV4KTsKK2F1ZGlvb3BfZ2V0c2FtcGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGluZGV4KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGF1ZGlvb3BfZ2V0c2FtcGxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjIsOCArMjMsNyBAQAogICAgIGludCB3aWR0aDsKICAgICBQeV9zc2l6ZV90IGluZGV4OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KmluOmdldHNhbXBsZSIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmluOmdldHNhbXBsZSIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmaW5kZXgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9nZXRzYW1wbGVfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGluZGV4KTsKQEAgLTU1LDggKzU1LDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdpZHRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Kmk6bWF4IiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTptYXgiLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX21heF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CkBAIC04OCw4ICs4Nyw3IEBACiAgICAgUHlfYnVmZmVyIGZyYWdtZW50ID0ge05VTEwsIE5VTEx9OwogICAgIGludCB3aWR0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppOm1pbm1heCIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bWlubWF4IiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9taW5tYXhfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwpAQCAtMTIxLDggKzExOSw3IEBACiAgICAgUHlfYnVmZmVyIGZyYWdtZW50ID0ge05VTEwsIE5VTEx9OwogICAgIGludCB3aWR0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppOmF2ZyIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6YXZnIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hdmdfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwpAQCAtMTU0LDggKzE1MSw3IEBACiAgICAgUHlfYnVmZmVyIGZyYWdtZW50ID0ge05VTEwsIE5VTEx9OwogICAgIGludCB3aWR0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppOnJtcyIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6cm1zIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9ybXNfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwpAQCAtMTc4LDcgKzE3NCw4IEBACiAgICAgeyJmaW5kZml0IiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfZmluZGZpdCwgTUVUSF9WQVJBUkdTLCBhdWRpb29wX2ZpbmRmaXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfZmluZGZpdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIFB5X2J1ZmZlciAqcmVmZXJlbmNlKTsKK2F1ZGlvb3BfZmluZGZpdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsCisgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKnJlZmVyZW5jZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdWRpb29wX2ZpbmRmaXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC0xODcsOCArMTg0LDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgUHlfYnVmZmVyIHJlZmVyZW5jZSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSp5KjpmaW5kZml0IiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSo6ZmluZGZpdCIsCiAgICAgICAgICZmcmFnbWVudCwgJnJlZmVyZW5jZSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2ZpbmRmaXRfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgJnJlZmVyZW5jZSk7CkBAIC0yMTQsNyArMjEwLDggQEAKICAgICB7ImZpbmRmYWN0b3IiLCAoUHlDRnVuY3Rpb24pYXVkaW9vcF9maW5kZmFjdG9yLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfZmluZGZhY3Rvcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9maW5kZmFjdG9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgUHlfYnVmZmVyICpyZWZlcmVuY2UpOworYXVkaW9vcF9maW5kZmFjdG9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqcmVmZXJlbmNlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGF1ZGlvb3BfZmluZGZhY3RvcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTIyMyw4ICsyMjAsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBQeV9idWZmZXIgcmVmZXJlbmNlID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KnkqOmZpbmRmYWN0b3IiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KjpmaW5kZmFjdG9yIiwKICAgICAgICAgJmZyYWdtZW50LCAmcmVmZXJlbmNlKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfZmluZGZhY3Rvcl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCAmcmVmZXJlbmNlKTsKQEAgLTI1MCw3ICsyNDYsOCBAQAogICAgIHsiZmluZG1heCIsIChQeUNGdW5jdGlvbilhdWRpb29wX2ZpbmRtYXgsIE1FVEhfVkFSQVJHUywgYXVkaW9vcF9maW5kbWF4X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2ZpbmRtYXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBQeV9zc2l6ZV90IGxlbmd0aCk7CithdWRpb29wX2ZpbmRtYXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9maW5kbWF4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjU5LDggKzI1Niw3IEBACiAgICAgUHlfYnVmZmVyIGZyYWdtZW50ID0ge05VTEwsIE5VTEx9OwogICAgIFB5X3NzaXplX3QgbGVuZ3RoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Km46ZmluZG1heCIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Km46ZmluZG1heCIsCiAgICAgICAgICZmcmFnbWVudCwgJmxlbmd0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2ZpbmRtYXhfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgbGVuZ3RoKTsKQEAgLTI5Miw4ICsyODgsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTphdmdwcCIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6YXZncHAiLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2F2Z3BwX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTMyNSw4ICszMjAsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTptYXhwcCIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bWF4cHAiLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX21heHBwX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTM1OCw4ICszNTIsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTpjcm9zcyIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6Y3Jvc3MiLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2Nyb3NzX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTM4Miw3ICszNzUsOCBAQAogICAgIHsibXVsIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfbXVsLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfbXVsX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX211bF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgZG91YmxlIGZhY3Rvcik7CithdWRpb29wX211bF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgZG91YmxlIGZhY3Rvcik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdWRpb29wX211bChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTM5Miw4ICszODYsNyBAQAogICAgIGludCB3aWR0aDsKICAgICBkb3VibGUgZmFjdG9yOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KmlkOm11bCIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlkOm11bCIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmZmFjdG9yKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbXVsX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBmYWN0b3IpOwpAQCAtNDE2LDcgKzQwOSw4IEBACiAgICAgeyJ0b21vbm8iLCAoUHlDRnVuY3Rpb24pYXVkaW9vcF90b21vbm8sIE1FVEhfVkFSQVJHUywgYXVkaW9vcF90b21vbm9fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfdG9tb25vX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBkb3VibGUgbGZhY3RvciwgZG91YmxlIHJmYWN0b3IpOworYXVkaW9vcF90b21vbm9faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBsZmFjdG9yLCBkb3VibGUgcmZhY3Rvcik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdWRpb29wX3RvbW9ubyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTQyNyw4ICs0MjEsNyBAQAogICAgIGRvdWJsZSBsZmFjdG9yOwogICAgIGRvdWJsZSByZmFjdG9yOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KmlkZDp0b21vbm8iLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppZGQ6dG9tb25vIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZsZmFjdG9yLCAmcmZhY3RvcikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3RvbW9ub19pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgbGZhY3RvciwgcmZhY3Rvcik7CkBAIC00NTEsNyArNDQ0LDggQEAKICAgICB7InRvc3RlcmVvIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfdG9zdGVyZW8sIE1FVEhfVkFSQVJHUywgYXVkaW9vcF90b3N0ZXJlb19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF90b3N0ZXJlb19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgZG91YmxlIGxmYWN0b3IsIGRvdWJsZSByZmFjdG9yKTsKK2F1ZGlvb3BfdG9zdGVyZW9faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGxmYWN0b3IsIGRvdWJsZSByZmFjdG9yKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGF1ZGlvb3BfdG9zdGVyZW8oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC00NjIsOCArNDU2LDcgQEAKICAgICBkb3VibGUgbGZhY3RvcjsKICAgICBkb3VibGUgcmZhY3RvcjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppZGQ6dG9zdGVyZW8iLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppZGQ6dG9zdGVyZW8iLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmxmYWN0b3IsICZyZmFjdG9yKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfdG9zdGVyZW9faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGxmYWN0b3IsIHJmYWN0b3IpOwpAQCAtNDg2LDcgKzQ3OSw4IEBACiAgICAgeyJhZGQiLCAoUHlDRnVuY3Rpb24pYXVkaW9vcF9hZGQsIE1FVEhfVkFSQVJHUywgYXVkaW9vcF9hZGRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfYWRkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudDEsIFB5X2J1ZmZlciAqZnJhZ21lbnQyLCBpbnQgd2lkdGgpOworYXVkaW9vcF9hZGRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50MSwKKyAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpmcmFnbWVudDIsIGludCB3aWR0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdWRpb29wX2FkZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTQ5Niw4ICs0OTAsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudDIgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdpZHRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KnkqaTphZGQiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5Kmk6YWRkIiwKICAgICAgICAgJmZyYWdtZW50MSwgJmZyYWdtZW50MiwgJndpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYWRkX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQxLCAmZnJhZ21lbnQyLCB3aWR0aCk7CkBAIC01MjMsNyArNTE2LDggQEAKICAgICB7ImJpYXMiLCAoUHlDRnVuY3Rpb24pYXVkaW9vcF9iaWFzLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfYmlhc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9iaWFzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBpbnQgYmlhcyk7CithdWRpb29wX2JpYXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICBpbnQgYmlhcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdWRpb29wX2JpYXMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC01MzMsOCArNTI3LDcgQEAKICAgICBpbnQgd2lkdGg7CiAgICAgaW50IGJpYXM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaWk6YmlhcyIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlpOmJpYXMiLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmJpYXMpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9iaWFzX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBiaWFzKTsKQEAgLTU2Niw4ICs1NTksNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTpyZXZlcnNlIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTpyZXZlcnNlIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9yZXZlcnNlX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTU5OSw4ICs1OTEsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTpieXRlc3dhcCIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6Ynl0ZXN3YXAiLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2J5dGVzd2FwX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTYyMyw3ICs2MTQsOCBAQAogICAgIHsibGluMmxpbiIsIChQeUNGdW5jdGlvbilhdWRpb29wX2xpbjJsaW4sIE1FVEhfVkFSQVJHUywgYXVkaW9vcF9saW4ybGluX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2xpbjJsaW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsIGludCBuZXd3aWR0aCk7CithdWRpb29wX2xpbjJsaW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICBpbnQgbmV3d2lkdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9saW4ybGluKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQpAQCAtNjMzLDggKzYyNSw3IEBACiAgICAgaW50IHdpZHRoOwogICAgIGludCBuZXd3aWR0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppaTpsaW4ybGluIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWk6bGluMmxpbiIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbmV3d2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9saW4ybGluX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBuZXd3aWR0aCk7CkBAIC02NTgsNyArNjQ5LDkgQEAKICAgICB7InJhdGVjdiIsIChQeUNGdW5jdGlvbilhdWRpb29wX3JhdGVjdiwgTUVUSF9WQVJBUkdTLCBhdWRpb29wX3JhdGVjdl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9yYXRlY3ZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsIGludCBuY2hhbm5lbHMsIGludCBpbnJhdGUsIGludCBvdXRyYXRlLCBQeU9iamVjdCAqc3RhdGUsIGludCB3ZWlnaHRBLCBpbnQgd2VpZ2h0Qik7CithdWRpb29wX3JhdGVjdl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgaW50IG5jaGFubmVscywgaW50IGlucmF0ZSwgaW50IG91dHJhdGUsIFB5T2JqZWN0ICpzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgaW50IHdlaWdodEEsIGludCB3ZWlnaHRCKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGF1ZGlvb3BfcmF0ZWN2KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQpAQCAtNjczLDggKzY2Niw3IEBACiAgICAgaW50IHdlaWdodEEgPSAxOwogICAgIGludCB3ZWlnaHRCID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppaWlpT3xpaTpyYXRlY3YiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppaWlpT3xpaTpyYXRlY3YiLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJm5jaGFubmVscywgJmlucmF0ZSwgJm91dHJhdGUsICZzdGF0ZSwgJndlaWdodEEsICZ3ZWlnaHRCKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfcmF0ZWN2X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBuY2hhbm5lbHMsIGlucmF0ZSwgb3V0cmF0ZSwgc3RhdGUsIHdlaWdodEEsIHdlaWdodEIpOwpAQCAtNzA2LDggKzY5OCw3IEBACiAgICAgUHlfYnVmZmVyIGZyYWdtZW50ID0ge05VTEwsIE5VTEx9OwogICAgIGludCB3aWR0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppOmxpbjJ1bGF3IiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTpsaW4ydWxhdyIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbGluMnVsYXdfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwpAQCAtNzM5LDggKzczMCw3IEBACiAgICAgUHlfYnVmZmVyIGZyYWdtZW50ID0ge05VTEwsIE5VTEx9OwogICAgIGludCB3aWR0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppOnVsYXcybGluIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTp1bGF3MmxpbiIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfdWxhdzJsaW5faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwpAQCAtNzcyLDggKzc2Miw3IEBACiAgICAgUHlfYnVmZmVyIGZyYWdtZW50ID0ge05VTEwsIE5VTEx9OwogICAgIGludCB3aWR0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppOmxpbjJhbGF3IiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTpsaW4yYWxhdyIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbGluMmFsYXdfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwpAQCAtODA1LDggKzc5NCw3IEBACiAgICAgUHlfYnVmZmVyIGZyYWdtZW50ID0ge05VTEwsIE5VTEx9OwogICAgIGludCB3aWR0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppOmFsYXcybGluIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTphbGF3MmxpbiIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYWxhdzJsaW5faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwpAQCAtODI5LDcgKzgxNyw4IEBACiAgICAgeyJsaW4yYWRwY20iLCAoUHlDRnVuY3Rpb24pYXVkaW9vcF9saW4yYWRwY20sIE1FVEhfVkFSQVJHUywgYXVkaW9vcF9saW4yYWRwY21fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfbGluMmFkcGNtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBQeU9iamVjdCAqc3RhdGUpOworYXVkaW9vcF9saW4yYWRwY21faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdGF0ZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdWRpb29wX2xpbjJhZHBjbShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTgzOSw4ICs4MjgsNyBAQAogICAgIGludCB3aWR0aDsKICAgICBQeU9iamVjdCAqc3RhdGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaU86bGluMmFkcGNtIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaU86bGluMmFkcGNtIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZzdGF0ZSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2xpbjJhZHBjbV9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgc3RhdGUpOwpAQCAtODYzLDcgKzg1MSw4IEBACiAgICAgeyJhZHBjbTJsaW4iLCAoUHlDRnVuY3Rpb24pYXVkaW9vcF9hZHBjbTJsaW4sIE1FVEhfVkFSQVJHUywgYXVkaW9vcF9hZHBjbTJsaW5fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfYWRwY20ybGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBQeU9iamVjdCAqc3RhdGUpOworYXVkaW9vcF9hZHBjbTJsaW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdGF0ZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdWRpb29wX2FkcGNtMmxpbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTg3Myw4ICs4NjIsNyBAQAogICAgIGludCB3aWR0aDsKICAgICBQeU9iamVjdCAqc3RhdGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaU86YWRwY20ybGluIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaU86YWRwY20ybGluIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZzdGF0ZSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2FkcGNtMmxpbl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgc3RhdGUpOwpAQCAtODg2LDQgKzg3NCw0IEBACiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlODQwYmJhNWQ0MGMyY2UgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWEwNzZlMWIyMTNhODcyN2IgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvYmluYXNjaWkuYy5oIGIvTW9kdWxlcy9jbGluaWMvYmluYXNjaWkuYy5oCmluZGV4IGVmNjQ2ZGQuLmUzNDhiZWUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL2JpbmFzY2lpLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9iaW5hc2NpaS5jLmgKQEAgLTksMjAgKzksMTggQEAKICJEZWNvZGUgYSBsaW5lIG9mIHV1ZW5jb2RlZCBkYXRhLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0EyQl9VVV9NRVRIT0RERUYgICAgXAotICAgIHsiYTJiX3V1IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2EyYl91dSwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9hMmJfdXVfX2RvY19ffSwKKyAgICB7ImEyYl91dSIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9hMmJfdXUsIE1FVEhfTywgYmluYXNjaWlfYTJiX3V1X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9hMmJfdXVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYTJiX3V1KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYTJiX3V1KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIk8mOmEyYl91dSIsCi0gICAgICAgIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl91dSIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl91dV9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCkBAIC00MSwyMCArMzksMTggQEAKICJVdWVuY29kZSBsaW5lIG9mIGRhdGEuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfQjJBX1VVX01FVEhPRERFRiAgICBcCi0gICAgeyJiMmFfdXUiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX3V1LCBNRVRIX1ZBUkFSR1MsIGJpbmFzY2lpX2IyYV91dV9fZG9jX199LAorICAgIHsiYjJhX3V1IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV91dSwgTUVUSF9PLCBiaW5hc2NpaV9iMmFfdXVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJpbmFzY2lpX2IyYV91dV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9iMmFfdXUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCitiaW5hc2NpaV9iMmFfdXUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSo6YjJhX3V1IiwKLSAgICAgICAgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX3V1IiwgJmRhdGEpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX3V1X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKQEAgLTczLDIwICs2OSwxOCBAQAogIkRlY29kZSBhIGxpbmUgb2YgYmFzZTY0IGRhdGEuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfQTJCX0JBU0U2NF9NRVRIT0RERUYgICAgXAotICAgIHsiYTJiX2Jhc2U2NCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9hMmJfYmFzZTY0LCBNRVRIX1ZBUkFSR1MsIGJpbmFzY2lpX2EyYl9iYXNlNjRfX2RvY19ffSwKKyAgICB7ImEyYl9iYXNlNjQiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYTJiX2Jhc2U2NCwgTUVUSF9PLCBiaW5hc2NpaV9hMmJfYmFzZTY0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9hMmJfYmFzZTY0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2EyYl9iYXNlNjQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCitiaW5hc2NpaV9hMmJfYmFzZTY0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIk8mOmEyYl9iYXNlNjQiLAotICAgICAgICBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfYmFzZTY0IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYTJiX2Jhc2U2NF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCkBAIC0xMDUsMjAgKzk5LDE4IEBACiAiQmFzZTY0LWNvZGUgbGluZSBvZiBkYXRhLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0IyQV9CQVNFNjRfTUVUSE9EREVGICAgIFwKLSAgICB7ImIyYV9iYXNlNjQiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX2Jhc2U2NCwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9iMmFfYmFzZTY0X19kb2NfX30sCisgICAgeyJiMmFfYmFzZTY0IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9iYXNlNjQsIE1FVEhfTywgYmluYXNjaWlfYjJhX2Jhc2U2NF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYjJhX2Jhc2U2NF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9iMmFfYmFzZTY0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYjJhX2Jhc2U2NChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KjpiMmFfYmFzZTY0IiwKLSAgICAgICAgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2Jhc2U2NCIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV9iYXNlNjRfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtMTM3LDIwICsxMjksMTggQEAKICJEZWNvZGUgLmhxeCBjb2RpbmcuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfQTJCX0hRWF9NRVRIT0RERUYgICAgXAotICAgIHsiYTJiX2hxeCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9hMmJfaHF4LCBNRVRIX1ZBUkFSR1MsIGJpbmFzY2lpX2EyYl9ocXhfX2RvY19ffSwKKyAgICB7ImEyYl9ocXgiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYTJiX2hxeCwgTUVUSF9PLCBiaW5hc2NpaV9hMmJfaHF4X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9hMmJfaHF4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2EyYl9ocXgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCitiaW5hc2NpaV9hMmJfaHF4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIk8mOmEyYl9ocXgiLAotICAgICAgICBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfaHF4IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYTJiX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCkBAIC0xNjksMjAgKzE1OSwxOCBAQAogIkJpbmhleCBSTEUtY29kZSBiaW5hcnkgZGF0YS4iKTsKIAogI2RlZmluZSBCSU5BU0NJSV9STEVDT0RFX0hRWF9NRVRIT0RERUYgICAgXAotICAgIHsicmxlY29kZV9ocXgiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfcmxlY29kZV9ocXgsIE1FVEhfVkFSQVJHUywgYmluYXNjaWlfcmxlY29kZV9ocXhfX2RvY19ffSwKKyAgICB7InJsZWNvZGVfaHF4IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX3JsZWNvZGVfaHF4LCBNRVRIX08sIGJpbmFzY2lpX3JsZWNvZGVfaHF4X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9ybGVjb2RlX2hxeF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9ybGVjb2RlX2hxeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK2JpbmFzY2lpX3JsZWNvZGVfaHF4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqOnJsZWNvZGVfaHF4IiwKLSAgICAgICAgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6cmxlY29kZV9ocXgiLCAmZGF0YSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9ybGVjb2RlX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCkBAIC0yMDEsMjAgKzE4OSwxOCBAQAogIkVuY29kZSAuaHF4IGRhdGEuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfQjJBX0hRWF9NRVRIT0RERUYgICAgXAotICAgIHsiYjJhX2hxeCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9iMmFfaHF4LCBNRVRIX1ZBUkFSR1MsIGJpbmFzY2lpX2IyYV9ocXhfX2RvY19ffSwKKyAgICB7ImIyYV9ocXgiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX2hxeCwgTUVUSF9PLCBiaW5hc2NpaV9iMmFfaHF4X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9iMmFfaHF4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2IyYV9ocXgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCitiaW5hc2NpaV9iMmFfaHF4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqOmIyYV9ocXgiLAotICAgICAgICAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpiMmFfaHF4IiwgJmRhdGEpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCkBAIC0yMzMsMjAgKzIxOSwxOCBAQAogIkRlY29kZSBoZXhiaW4gUkxFLWNvZGVkIHN0cmluZy4iKTsKIAogI2RlZmluZSBCSU5BU0NJSV9STEVERUNPREVfSFFYX01FVEhPRERFRiAgICBcCi0gICAgeyJybGVkZWNvZGVfaHF4IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX3JsZWRlY29kZV9ocXgsIE1FVEhfVkFSQVJHUywgYmluYXNjaWlfcmxlZGVjb2RlX2hxeF9fZG9jX199LAorICAgIHsicmxlZGVjb2RlX2hxeCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9ybGVkZWNvZGVfaHF4LCBNRVRIX08sIGJpbmFzY2lpX3JsZWRlY29kZV9ocXhfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJpbmFzY2lpX3JsZWRlY29kZV9ocXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfcmxlZGVjb2RlX2hxeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK2JpbmFzY2lpX3JsZWRlY29kZV9ocXgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSo6cmxlZGVjb2RlX2hxeCIsCi0gICAgICAgICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJsZWRlY29kZV9ocXgiLCAmZGF0YSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9ybGVkZWNvZGVfaHF4X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKQEAgLTI3OCwxMiArMjYyLDExIEBACiAgICAgdW5zaWduZWQgaW50IGNyYzsKICAgICB1bnNpZ25lZCBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSpJOmNyY19ocXgiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSpJOmNyY19ocXgiLAogICAgICAgICAmZGF0YSwgJmNyYykpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICBfcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfY3JjX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEsIGNyYyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAodW5zaWduZWQgaW50KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpX3JldHVybl92YWx1ZSk7CiAKQEAgLTMxNSwxMiArMjk4LDExIEBACiAgICAgdW5zaWduZWQgaW50IGNyYyA9IDA7CiAgICAgdW5zaWduZWQgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqfEk6Y3JjMzIiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8STpjcmMzMiIsCiAgICAgICAgICZkYXRhLCAmY3JjKSkKICAgICAgICAgZ290byBleGl0OwogICAgIF9yZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9jcmMzMl9pbXBsKG1vZHVsZSwgJmRhdGEsIGNyYyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAodW5zaWduZWQgaW50KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpX3JldHVybl92YWx1ZSk7CiAKQEAgLTM0MiwyMCArMzI0LDE4IEBACiAiYXZhaWxhYmxlIGFzIFwiaGV4bGlmeSgpXCIuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfQjJBX0hFWF9NRVRIT0RERUYgICAgXAotICAgIHsiYjJhX2hleCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9iMmFfaGV4LCBNRVRIX1ZBUkFSR1MsIGJpbmFzY2lpX2IyYV9oZXhfX2RvY19ffSwKKyAgICB7ImIyYV9oZXgiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX2hleCwgTUVUSF9PLCBiaW5hc2NpaV9iMmFfaGV4X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9iMmFfaGV4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2IyYV9oZXgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCitiaW5hc2NpaV9iMmFfaGV4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqOmIyYV9oZXgiLAotICAgICAgICAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpiMmFfaGV4IiwgJmRhdGEpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX2hleF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCkBAIC0zNzYsMjAgKzM1NiwxOCBAQAogIlRoZSByZXR1cm4gdmFsdWUgaXMgYSBieXRlcyBvYmplY3QuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfSEVYTElGWV9NRVRIT0RERUYgICAgXAotICAgIHsiaGV4bGlmeSIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9oZXhsaWZ5LCBNRVRIX1ZBUkFSR1MsIGJpbmFzY2lpX2hleGxpZnlfX2RvY19ffSwKKyAgICB7ImhleGxpZnkiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfaGV4bGlmeSwgTUVUSF9PLCBiaW5hc2NpaV9oZXhsaWZ5X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9oZXhsaWZ5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2hleGxpZnkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCitiaW5hc2NpaV9oZXhsaWZ5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqOmhleGxpZnkiLAotICAgICAgICAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpoZXhsaWZ5IiwgJmRhdGEpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfaGV4bGlmeV9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCkBAIC00MTEsMjAgKzM4OSwxOCBAQAogIlRoaXMgZnVuY3Rpb24gaXMgYWxzbyBhdmFpbGFibGUgYXMgXCJ1bmhleGxpZnkoKVwiLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0EyQl9IRVhfTUVUSE9EREVGICAgIFwKLSAgICB7ImEyYl9oZXgiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYTJiX2hleCwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9hMmJfaGV4X19kb2NfX30sCisgICAgeyJhMmJfaGV4IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2EyYl9oZXgsIE1FVEhfTywgYmluYXNjaWlfYTJiX2hleF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYTJiX2hleF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqaGV4c3RyKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2EyYl9oZXgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCitiaW5hc2NpaV9hMmJfaGV4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGhleHN0ciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiTyY6YTJiX2hleCIsCi0gICAgICAgIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZoZXhzdHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2hleCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZoZXhzdHIpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYTJiX2hleF9pbXBsKG1vZHVsZSwgJmhleHN0cik7CiAKQEAgLTQ0NSwyMCArNDIxLDE4IEBACiAiaGV4c3RyIG11c3QgY29udGFpbiBhbiBldmVuIG51bWJlciBvZiBoZXggZGlnaXRzICh1cHBlciBvciBsb3dlciBjYXNlKS4iKTsKIAogI2RlZmluZSBCSU5BU0NJSV9VTkhFWExJRllfTUVUSE9EREVGICAgIFwKLSAgICB7InVuaGV4bGlmeSIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV91bmhleGxpZnksIE1FVEhfVkFSQVJHUywgYmluYXNjaWlfdW5oZXhsaWZ5X19kb2NfX30sCisgICAgeyJ1bmhleGxpZnkiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfdW5oZXhsaWZ5LCBNRVRIX08sIGJpbmFzY2lpX3VuaGV4bGlmeV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfdW5oZXhsaWZ5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpoZXhzdHIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfdW5oZXhsaWZ5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfdW5oZXhsaWZ5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGhleHN0ciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiTyY6dW5oZXhsaWZ5IiwKLSAgICAgICAgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmhleHN0cikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjp1bmhleGxpZnkiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmaGV4c3RyKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX3VuaGV4bGlmeV9pbXBsKG1vZHVsZSwgJmhleHN0cik7CiAKQEAgLTQ5MCw4ICs0NjQsNyBAQAogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIGludCBoZWFkZXIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAiTyZ8aTphMmJfcXAiLCBfa2V5d29yZHMsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aTphMmJfcXAiLCBfa2V5d29yZHMsCiAgICAgICAgIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhLCAmaGVhZGVyKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9xcF9pbXBsKG1vZHVsZSwgJmRhdGEsIGhlYWRlcik7CkBAIC01MTgsNyArNDkxLDggQEAKICAgICB7ImIyYV9xcCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9iMmFfcXAsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBiaW5hc2NpaV9iMmFfcXBfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2IyYV9xcF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IHF1b3RldGFicywgaW50IGlzdGV4dCwgaW50IGhlYWRlcik7CitiaW5hc2NpaV9iMmFfcXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBxdW90ZXRhYnMsCisgICAgICAgICAgICAgICAgICAgICBpbnQgaXN0ZXh0LCBpbnQgaGVhZGVyKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJpbmFzY2lpX2IyYV9xcChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKQEAgLTUzMCw4ICs1MDQsNyBAQAogICAgIGludCBpc3RleHQgPSAxOwogICAgIGludCBoZWFkZXIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAieSp8aWlpOmIyYV9xcCIsIF9rZXl3b3JkcywKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5KnxpaWk6YjJhX3FwIiwgX2tleXdvcmRzLAogICAgICAgICAmZGF0YSwgJnF1b3RldGFicywgJmlzdGV4dCwgJmhlYWRlcikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9iMmFfcXBfaW1wbChtb2R1bGUsICZkYXRhLCBxdW90ZXRhYnMsIGlzdGV4dCwgaGVhZGVyKTsKQEAgLTU0Myw0ICs1MTYsNCBAQAogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMjc2MWIzNmY0ZjllNWJiIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMWEzY2JmNzY2MGViYWE1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2NtYXRobW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL2NtYXRobW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDYxNjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvY21hdGhtb2R1bGUuYy5oCkBAIC0wLDAgKzEsODYwIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoY21hdGhfYWNvc19fZG9jX18sCisiYWNvcygkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBhcmMgY29zaW5lIG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfQUNPU19NRVRIT0RERUYgICAgXAorICAgIHsiYWNvcyIsIChQeUNGdW5jdGlvbiljbWF0aF9hY29zLCBNRVRIX08sIGNtYXRoX2Fjb3NfX2RvY19ffSwKKworc3RhdGljIFB5X2NvbXBsZXgKK2NtYXRoX2Fjb3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfYWNvcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YWNvcyIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KKyAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hY29zX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfYWNvc2hfX2RvY19fLAorImFjb3NoKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGludmVyc2UgaHlwZXJib2xpYyBjb3NpbmUgb2Ygei4iKTsKKworI2RlZmluZSBDTUFUSF9BQ09TSF9NRVRIT0RERUYgICAgXAorICAgIHsiYWNvc2giLCAoUHlDRnVuY3Rpb24pY21hdGhfYWNvc2gsIE1FVEhfTywgY21hdGhfYWNvc2hfX2RvY19ffSwKKworc3RhdGljIFB5X2NvbXBsZXgKK2NtYXRoX2Fjb3NoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2Fjb3NoKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphY29zaCIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KKyAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hY29zaF9pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX2FzaW5fX2RvY19fLAorImFzaW4oJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgYXJjIHNpbmUgb2Ygei4iKTsKKworI2RlZmluZSBDTUFUSF9BU0lOX01FVEhPRERFRiAgICBcCisgICAgeyJhc2luIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2FzaW4sIE1FVEhfTywgY21hdGhfYXNpbl9fZG9jX199LAorCitzdGF0aWMgUHlfY29tcGxleAorY21hdGhfYXNpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9hc2luKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphc2luIiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLworICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CisgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2FzaW5faW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9hc2luaF9fZG9jX18sCisiYXNpbmgoJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgaW52ZXJzZSBoeXBlcmJvbGljIHNpbmUgb2Ygei4iKTsKKworI2RlZmluZSBDTUFUSF9BU0lOSF9NRVRIT0RERUYgICAgXAorICAgIHsiYXNpbmgiLCAoUHlDRnVuY3Rpb24pY21hdGhfYXNpbmgsIE1FVEhfTywgY21hdGhfYXNpbmhfX2RvY19ffSwKKworc3RhdGljIFB5X2NvbXBsZXgKK2NtYXRoX2FzaW5oX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2FzaW5oKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphc2luaCIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KKyAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hc2luaF9pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX2F0YW5fX2RvY19fLAorImF0YW4oJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgYXJjIHRhbmdlbnQgb2Ygei4iKTsKKworI2RlZmluZSBDTUFUSF9BVEFOX01FVEhPRERFRiAgICBcCisgICAgeyJhdGFuIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2F0YW4sIE1FVEhfTywgY21hdGhfYXRhbl9fZG9jX199LAorCitzdGF0aWMgUHlfY29tcGxleAorY21hdGhfYXRhbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9hdGFuKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphdGFuIiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLworICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CisgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2F0YW5faW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9hdGFuaF9fZG9jX18sCisiYXRhbmgoJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgaW52ZXJzZSBoeXBlcmJvbGljIHRhbmdlbnQgb2Ygei4iKTsKKworI2RlZmluZSBDTUFUSF9BVEFOSF9NRVRIT0RERUYgICAgXAorICAgIHsiYXRhbmgiLCAoUHlDRnVuY3Rpb24pY21hdGhfYXRhbmgsIE1FVEhfTywgY21hdGhfYXRhbmhfX2RvY19ffSwKKworc3RhdGljIFB5X2NvbXBsZXgKK2NtYXRoX2F0YW5oX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2F0YW5oKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphdGFuaCIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KKyAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hdGFuaF9pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX2Nvc19fZG9jX18sCisiY29zKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGNvc2luZSBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX0NPU19NRVRIT0RERUYgICAgXAorICAgIHsiY29zIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2NvcywgTUVUSF9PLCBjbWF0aF9jb3NfX2RvY19ffSwKKworc3RhdGljIFB5X2NvbXBsZXgKK2NtYXRoX2Nvc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9jb3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmNvcyIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KKyAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9jb3NfaW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9jb3NoX19kb2NfXywKKyJjb3NoKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGh5cGVyYm9saWMgY29zaW5lIG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfQ09TSF9NRVRIT0RERUYgICAgXAorICAgIHsiY29zaCIsIChQeUNGdW5jdGlvbiljbWF0aF9jb3NoLCBNRVRIX08sIGNtYXRoX2Nvc2hfX2RvY19ffSwKKworc3RhdGljIFB5X2NvbXBsZXgKK2NtYXRoX2Nvc2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfY29zaChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6Y29zaCIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KKyAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9jb3NoX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfZXhwX19kb2NfXywKKyJleHAoJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZXhwb25lbnRpYWwgdmFsdWUgZSoqei4iKTsKKworI2RlZmluZSBDTUFUSF9FWFBfTUVUSE9EREVGICAgIFwKKyAgICB7ImV4cCIsIChQeUNGdW5jdGlvbiljbWF0aF9leHAsIE1FVEhfTywgY21hdGhfZXhwX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9leHBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfZXhwKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpleHAiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfZXhwX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfbG9nMTBfX2RvY19fLAorImxvZzEwKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGJhc2UtMTAgbG9nYXJpdGhtIG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfTE9HMTBfTUVUSE9EREVGICAgIFwKKyAgICB7ImxvZzEwIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2xvZzEwLCBNRVRIX08sIGNtYXRoX2xvZzEwX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9sb2cxMF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9sb2cxMChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6bG9nMTAiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfbG9nMTBfaW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9zaW5fX2RvY19fLAorInNpbigkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBzaW5lIG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfU0lOX01FVEhPRERFRiAgICBcCisgICAgeyJzaW4iLCAoUHlDRnVuY3Rpb24pY21hdGhfc2luLCBNRVRIX08sIGNtYXRoX3Npbl9fZG9jX199LAorCitzdGF0aWMgUHlfY29tcGxleAorY21hdGhfc2luX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX3NpbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6c2luIiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLworICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CisgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3Npbl9pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX3NpbmhfX2RvY19fLAorInNpbmgoJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgaHlwZXJib2xpYyBzaW5lIG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfU0lOSF9NRVRIT0RERUYgICAgXAorICAgIHsic2luaCIsIChQeUNGdW5jdGlvbiljbWF0aF9zaW5oLCBNRVRIX08sIGNtYXRoX3NpbmhfX2RvY19ffSwKKworc3RhdGljIFB5X2NvbXBsZXgKK2NtYXRoX3NpbmhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfc2luaChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6c2luaCIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KKyAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9zaW5oX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfc3FydF9fZG9jX18sCisic3FydCgkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBzcXVhcmUgcm9vdCBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX1NRUlRfTUVUSE9EREVGICAgIFwKKyAgICB7InNxcnQiLCAoUHlDRnVuY3Rpb24pY21hdGhfc3FydCwgTUVUSF9PLCBjbWF0aF9zcXJ0X19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9zcXJ0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX3NxcnQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNxcnQiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfc3FydF9pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX3Rhbl9fZG9jX18sCisidGFuKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHRhbmdlbnQgb2Ygei4iKTsKKworI2RlZmluZSBDTUFUSF9UQU5fTUVUSE9EREVGICAgIFwKKyAgICB7InRhbiIsIChQeUNGdW5jdGlvbiljbWF0aF90YW4sIE1FVEhfTywgY21hdGhfdGFuX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF90YW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfdGFuKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDp0YW4iLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfdGFuX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfdGFuaF9fZG9jX18sCisidGFuaCgkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBoeXBlcmJvbGljIHRhbmdlbnQgb2Ygei4iKTsKKworI2RlZmluZSBDTUFUSF9UQU5IX01FVEhPRERFRiAgICBcCisgICAgeyJ0YW5oIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX3RhbmgsIE1FVEhfTywgY21hdGhfdGFuaF9fZG9jX199LAorCitzdGF0aWMgUHlfY29tcGxleAorY21hdGhfdGFuaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF90YW5oKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDp0YW5oIiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLworICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CisgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3RhbmhfaW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9sb2dfX2RvY19fLAorImxvZygkbW9kdWxlLCB4LCB5X29iaj1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVGhlIGxvZ2FyaXRobSBvZiB6IHRvIHRoZSBnaXZlbiBiYXNlLlxuIgorIlxuIgorIklmIHRoZSBiYXNlIG5vdCBzcGVjaWZpZWQsIHJldHVybnMgdGhlIG5hdHVyYWwgbG9nYXJpdGhtIChiYXNlIGUpIG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfTE9HX01FVEhPRERFRiAgICBcCisgICAgeyJsb2ciLCAoUHlDRnVuY3Rpb24pY21hdGhfbG9nLCBNRVRIX1ZBUkFSR1MsIGNtYXRoX2xvZ19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfbG9nX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB4LCBQeU9iamVjdCAqeV9vYmopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfbG9nKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggeDsKKyAgICBQeU9iamVjdCAqeV9vYmogPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJEfE86bG9nIiwKKyAgICAgICAgJngsICZ5X29iaikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9sb2dfaW1wbChtb2R1bGUsIHgsIHlfb2JqKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfcGhhc2VfX2RvY19fLAorInBoYXNlKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYXJndW1lbnQsIGFsc28ga25vd24gYXMgdGhlIHBoYXNlIGFuZ2xlLCBvZiBhIGNvbXBsZXguIik7CisKKyNkZWZpbmUgQ01BVEhfUEhBU0VfTUVUSE9EREVGICAgIFwKKyAgICB7InBoYXNlIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX3BoYXNlLCBNRVRIX08sIGNtYXRoX3BoYXNlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9waGFzZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9waGFzZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpwaGFzZSIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX3BoYXNlX2ltcGwobW9kdWxlLCB6KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfcG9sYXJfX2RvY19fLAorInBvbGFyKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb252ZXJ0IGEgY29tcGxleCBmcm9tIHJlY3Rhbmd1bGFyIGNvb3JkaW5hdGVzIHRvIHBvbGFyIGNvb3JkaW5hdGVzLlxuIgorIlxuIgorInIgaXMgdGhlIGRpc3RhbmNlIGZyb20gMCBhbmQgcGhpIHRoZSBwaGFzZSBhbmdsZS4iKTsKKworI2RlZmluZSBDTUFUSF9QT0xBUl9NRVRIT0RERUYgICAgXAorICAgIHsicG9sYXIiLCAoUHlDRnVuY3Rpb24pY21hdGhfcG9sYXIsIE1FVEhfTywgY21hdGhfcG9sYXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX3BvbGFyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX3BvbGFyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnBvbGFyIiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfcG9sYXJfaW1wbChtb2R1bGUsIHopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9yZWN0X19kb2NfXywKKyJyZWN0KCRtb2R1bGUsIHIsIHBoaSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNvbnZlcnQgZnJvbSBwb2xhciBjb29yZGluYXRlcyB0byByZWN0YW5ndWxhciBjb29yZGluYXRlcy4iKTsKKworI2RlZmluZSBDTUFUSF9SRUNUX01FVEhPRERFRiAgICBcCisgICAgeyJyZWN0IiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX3JlY3QsIE1FVEhfVkFSQVJHUywgY21hdGhfcmVjdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfcmVjdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGRvdWJsZSByLCBkb3VibGUgcGhpKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX3JlY3QoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgZG91YmxlIHI7CisgICAgZG91YmxlIHBoaTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZGQ6cmVjdCIsCisgICAgICAgICZyLCAmcGhpKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX3JlY3RfaW1wbChtb2R1bGUsIHIsIHBoaSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX2lzZmluaXRlX19kb2NfXywKKyJpc2Zpbml0ZSgkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIFRydWUgaWYgYm90aCB0aGUgcmVhbCBhbmQgaW1hZ2luYXJ5IHBhcnRzIG9mIHogYXJlIGZpbml0ZSwgZWxzZSBGYWxzZS4iKTsKKworI2RlZmluZSBDTUFUSF9JU0ZJTklURV9NRVRIT0RERUYgICAgXAorICAgIHsiaXNmaW5pdGUiLCAoUHlDRnVuY3Rpb24pY21hdGhfaXNmaW5pdGUsIE1FVEhfTywgY21hdGhfaXNmaW5pdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2lzZmluaXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2lzZmluaXRlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmlzZmluaXRlIiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfaXNmaW5pdGVfaW1wbChtb2R1bGUsIHopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9pc25hbl9fZG9jX18sCisiaXNuYW4oJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIkNoZWNrcyBpZiB0aGUgcmVhbCBvciBpbWFnaW5hcnkgcGFydCBvZiB6IG5vdCBhIG51bWJlciAoTmFOKS4iKTsKKworI2RlZmluZSBDTUFUSF9JU05BTl9NRVRIT0RERUYgICAgXAorICAgIHsiaXNuYW4iLCAoUHlDRnVuY3Rpb24pY21hdGhfaXNuYW4sIE1FVEhfTywgY21hdGhfaXNuYW5fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2lzbmFuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2lzbmFuKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmlzbmFuIiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfaXNuYW5faW1wbChtb2R1bGUsIHopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9pc2luZl9fZG9jX18sCisiaXNpbmYoJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIkNoZWNrcyBpZiB0aGUgcmVhbCBvciBpbWFnaW5hcnkgcGFydCBvZiB6IGlzIGluZmluaXRlLiIpOworCisjZGVmaW5lIENNQVRIX0lTSU5GX01FVEhPRERFRiAgICBcCisgICAgeyJpc2luZiIsIChQeUNGdW5jdGlvbiljbWF0aF9pc2luZiwgTUVUSF9PLCBjbWF0aF9pc2luZl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfaXNpbmZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfaXNpbmYoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6aXNpbmYiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9pc2luZl9pbXBsKG1vZHVsZSwgeik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX2lzY2xvc2VfX2RvY19fLAorImlzY2xvc2UoJG1vZHVsZSwgLywgYSwgYiwgKiwgcmVsX3RvbD0xZS0wOSwgYWJzX3RvbD0wLjApXG4iCisiLS1cbiIKKyJcbiIKKyJEZXRlcm1pbmUgd2hldGhlciB0d28gY29tcGxleCBudW1iZXJzIGFyZSBjbG9zZSBpbiB2YWx1ZS5cbiIKKyJcbiIKKyIgIHJlbF90b2xcbiIKKyIgICAgbWF4aW11bSBkaWZmZXJlbmNlIGZvciBiZWluZyBjb25zaWRlcmVkIFwiY2xvc2VcIiwgcmVsYXRpdmUgdG8gdGhlXG4iCisiICAgIG1hZ25pdHVkZSBvZiB0aGUgaW5wdXQgdmFsdWVzXG4iCisiICBhYnNfdG9sXG4iCisiICAgIG1heGltdW0gZGlmZmVyZW5jZSBmb3IgYmVpbmcgY29uc2lkZXJlZCBcImNsb3NlXCIsIHJlZ2FyZGxlc3Mgb2YgdGhlXG4iCisiICAgIG1hZ25pdHVkZSBvZiB0aGUgaW5wdXQgdmFsdWVzXG4iCisiXG4iCisiUmV0dXJuIFRydWUgaWYgYSBpcyBjbG9zZSBpbiB2YWx1ZSB0byBiLCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuIgorIlxuIgorIkZvciB0aGUgdmFsdWVzIHRvIGJlIGNvbnNpZGVyZWQgY2xvc2UsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlbSBtdXN0IGJlXG4iCisic21hbGxlciB0aGFuIGF0IGxlYXN0IG9uZSBvZiB0aGUgdG9sZXJhbmNlcy5cbiIKKyJcbiIKKyItaW5mLCBpbmYgYW5kIE5hTiBiZWhhdmUgc2ltaWxhcmx5IHRvIHRoZSBJRUVFIDc1NCBTdGFuZGFyZC4gVGhhdCBpcywgTmFOIGlzXG4iCisibm90IGNsb3NlIHRvIGFueXRoaW5nLCBldmVuIGl0c2VsZi4gaW5mIGFuZCAtaW5mIGFyZSBvbmx5IGNsb3NlIHRvIHRoZW1zZWx2ZXMuIik7CisKKyNkZWZpbmUgQ01BVEhfSVNDTE9TRV9NRVRIT0RERUYgICAgXAorICAgIHsiaXNjbG9zZSIsIChQeUNGdW5jdGlvbiljbWF0aF9pc2Nsb3NlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgY21hdGhfaXNjbG9zZV9fZG9jX199LAorCitzdGF0aWMgaW50CitjbWF0aF9pc2Nsb3NlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIsCisgICAgICAgICAgICAgICAgICAgZG91YmxlIHJlbF90b2wsIGRvdWJsZSBhYnNfdG9sKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2lzY2xvc2UoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJhIiwgImIiLCAicmVsX3RvbCIsICJhYnNfdG9sIiwgTlVMTH07CisgICAgUHlfY29tcGxleCBhOworICAgIFB5X2NvbXBsZXggYjsKKyAgICBkb3VibGUgcmVsX3RvbCA9IDFlLTA5OworICAgIGRvdWJsZSBhYnNfdG9sID0gMC4wOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiRER8JGRkOmlzY2xvc2UiLCBfa2V5d29yZHMsCisgICAgICAgICZhLCAmYiwgJnJlbF90b2wsICZhYnNfdG9sKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9pc2Nsb3NlX2ltcGwobW9kdWxlLCBhLCBiLCByZWxfdG9sLCBhYnNfdG9sKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMjllOWM0OGM5ZDI3MzYyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2ZjbnRsbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL2ZjbnRsbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTNiMWMwCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvZmNudGxtb2R1bGUuYy5oCkBAIC0wLDAgKzEsMTg1IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoZmNudGxfZmNudGxfX2RvY19fLAorImZjbnRsKCRtb2R1bGUsIGZkLCBjbWQsIGFyZz0wLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUGVyZm9ybSB0aGUgb3BlcmF0aW9uIGBjbWRgIG9uIGZpbGUgZGVzY3JpcHRvciBmZC5cbiIKKyJcbiIKKyJUaGUgdmFsdWVzIHVzZWQgZm9yIGBjbWRgIGFyZSBvcGVyYXRpbmcgc3lzdGVtIGRlcGVuZGVudCwgYW5kIGFyZSBhdmFpbGFibGVcbiIKKyJhcyBjb25zdGFudHMgaW4gdGhlIGZjbnRsIG1vZHVsZSwgdXNpbmcgdGhlIHNhbWUgbmFtZXMgYXMgdXNlZCBpblxuIgorInRoZSByZWxldmFudCBDIGhlYWRlciBmaWxlcy4gIFRoZSBhcmd1bWVudCBhcmcgaXMgb3B0aW9uYWwsIGFuZFxuIgorImRlZmF1bHRzIHRvIDA7IGl0IG1heSBiZSBhbiBpbnQgb3IgYSBzdHJpbmcuICBJZiBhcmcgaXMgZ2l2ZW4gYXMgYSBzdHJpbmcsXG4iCisidGhlIHJldHVybiB2YWx1ZSBvZiBmY250bCBpcyBhIHN0cmluZyBvZiB0aGF0IGxlbmd0aCwgY29udGFpbmluZyB0aGVcbiIKKyJyZXN1bHRpbmcgdmFsdWUgcHV0IGluIHRoZSBhcmcgYnVmZmVyIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtLiAgVGhlIGxlbmd0aFxuIgorIm9mIHRoZSBhcmcgc3RyaW5nIGlzIG5vdCBhbGxvd2VkIHRvIGV4Y2VlZCAxMDI0IGJ5dGVzLiAgSWYgdGhlIGFyZyBnaXZlblxuIgorImlzIGFuIGludGVnZXIgb3IgaWYgbm9uZSBpcyBzcGVjaWZpZWQsIHRoZSByZXN1bHQgdmFsdWUgaXMgYW4gaW50ZWdlclxuIgorImNvcnJlc3BvbmRpbmcgdG8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZmNudGwgY2FsbCBpbiB0aGUgQyBjb2RlLiIpOworCisjZGVmaW5lIEZDTlRMX0ZDTlRMX01FVEhPRERFRiAgICBcCisgICAgeyJmY250bCIsIChQeUNGdW5jdGlvbilmY250bF9mY250bCwgTUVUSF9WQVJBUkdTLCBmY250bF9mY250bF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorZmNudGxfZmNudGxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBjb2RlLCBQeU9iamVjdCAqYXJnKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2ZjbnRsX2ZjbnRsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgY29kZTsKKyAgICBQeU9iamVjdCAqYXJnID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpfE86ZmNudGwiLAorICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZhcmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gZmNudGxfZmNudGxfaW1wbChtb2R1bGUsIGZkLCBjb2RlLCBhcmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihmY250bF9pb2N0bF9fZG9jX18sCisiaW9jdGwoJG1vZHVsZSwgZmQsIHJlcXVlc3QsIGFyZz0wLCBtdXRhdGVfZmxhZz1UcnVlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUGVyZm9ybSB0aGUgb3BlcmF0aW9uIGByZXF1ZXN0YCBvbiBmaWxlIGRlc2NyaXB0b3IgYGZkYC5cbiIKKyJcbiIKKyJUaGUgdmFsdWVzIHVzZWQgZm9yIGByZXF1ZXN0YCBhcmUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQsIGFuZCBhcmUgYXZhaWxhYmxlXG4iCisiYXMgY29uc3RhbnRzIGluIHRoZSBmY250bCBvciB0ZXJtaW9zIGxpYnJhcnkgbW9kdWxlcywgdXNpbmcgdGhlIHNhbWUgbmFtZXMgYXNcbiIKKyJ1c2VkIGluIHRoZSByZWxldmFudCBDIGhlYWRlciBmaWxlcy5cbiIKKyJcbiIKKyJUaGUgYXJndW1lbnQgYGFyZ2AgaXMgb3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byAwOyBpdCBtYXkgYmUgYW4gaW50IG9yIGFcbiIKKyJidWZmZXIgY29udGFpbmluZyBjaGFyYWN0ZXIgZGF0YSAobW9zdCBsaWtlbHkgYSBzdHJpbmcgb3IgYW4gYXJyYXkpLlxuIgorIlxuIgorIklmIHRoZSBhcmd1bWVudCBpcyBhIG11dGFibGUgYnVmZmVyIChzdWNoIGFzIGFuIGFycmF5KSBhbmQgaWYgdGhlXG4iCisibXV0YXRlX2ZsYWcgYXJndW1lbnQgKHdoaWNoIGlzIG9ubHkgYWxsb3dlZCBpbiB0aGlzIGNhc2UpIGlzIHRydWUgdGhlbiB0aGVcbiIKKyJidWZmZXIgaXMgKGluIGVmZmVjdCkgcGFzc2VkIHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGFuZCBjaGFuZ2VzIG1hZGUgYnlcbiIKKyJ0aGUgT1Mgd2lsbCBiZSByZWZsZWN0ZWQgaW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBidWZmZXIgYWZ0ZXIgdGhlIGNhbGwgaGFzXG4iCisicmV0dXJuZWQuICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBpbnRlZ2VyIHJldHVybmVkIGJ5IHRoZSBpb2N0bCBzeXN0ZW1cbiIKKyJjYWxsLlxuIgorIlxuIgorIklmIHRoZSBhcmd1bWVudCBpcyBhIG11dGFibGUgYnVmZmVyIGFuZCB0aGUgbXV0YWJsZV9mbGFnIGFyZ3VtZW50IGlzIGZhbHNlLFxuIgorInRoZSBiZWhhdmlvciBpcyBhcyBpZiBhIHN0cmluZyBoYWQgYmVlbiBwYXNzZWQuXG4iCisiXG4iCisiSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGltbXV0YWJsZSBidWZmZXIgKG1vc3QgbGlrZWx5IGEgc3RyaW5nKSB0aGVuIGEgY29weVxuIgorIm9mIHRoZSBidWZmZXIgaXMgcGFzc2VkIHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGFuZCB0aGUgcmV0dXJuIHZhbHVlIGlzIGFcbiIKKyJzdHJpbmcgb2YgdGhlIHNhbWUgbGVuZ3RoIGNvbnRhaW5pbmcgd2hhdGV2ZXIgdGhlIG9wZXJhdGluZyBzeXN0ZW0gcHV0IGluXG4iCisidGhlIGJ1ZmZlci4gIFRoZSBsZW5ndGggb2YgdGhlIGFyZyBidWZmZXIgaW4gdGhpcyBjYXNlIGlzIG5vdCBhbGxvd2VkIHRvXG4iCisiZXhjZWVkIDEwMjQgYnl0ZXMuXG4iCisiXG4iCisiSWYgdGhlIGFyZyBnaXZlbiBpcyBhbiBpbnRlZ2VyIG9yIGlmIG5vbmUgaXMgc3BlY2lmaWVkLCB0aGUgcmVzdWx0IHZhbHVlIGlzXG4iCisiYW4gaW50ZWdlciBjb3JyZXNwb25kaW5nIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGlvY3RsIGNhbGwgaW4gdGhlIENcbiIKKyJjb2RlLiIpOworCisjZGVmaW5lIEZDTlRMX0lPQ1RMX01FVEhPRERFRiAgICBcCisgICAgeyJpb2N0bCIsIChQeUNGdW5jdGlvbilmY250bF9pb2N0bCwgTUVUSF9WQVJBUkdTLCBmY250bF9pb2N0bF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorZmNudGxfaW9jdGxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIHVuc2lnbmVkIGludCBjb2RlLAorICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JfYXJnLCBpbnQgbXV0YXRlX2FyZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitmY250bF9pb2N0bChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgdW5zaWduZWQgaW50IGNvZGU7CisgICAgUHlPYmplY3QgKm9iX2FyZyA9IE5VTEw7CisgICAgaW50IG11dGF0ZV9hcmcgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJkl8T3A6aW9jdGwiLAorICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZvYl9hcmcsICZtdXRhdGVfYXJnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGZjbnRsX2lvY3RsX2ltcGwobW9kdWxlLCBmZCwgY29kZSwgb2JfYXJnLCBtdXRhdGVfYXJnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoZmNudGxfZmxvY2tfX2RvY19fLAorImZsb2NrKCRtb2R1bGUsIGZkLCBvcGVyYXRpb24sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJQZXJmb3JtIHRoZSBsb2NrIG9wZXJhdGlvbiBgb3BlcmF0aW9uYCBvbiBmaWxlIGRlc2NyaXB0b3IgYGZkYC5cbiIKKyJcbiIKKyJTZWUgdGhlIFVuaXggbWFudWFsIHBhZ2UgZm9yIGZsb2NrKDIpIGZvciBkZXRhaWxzIChPbiBzb21lIHN5c3RlbXMsIHRoaXNcbiIKKyJmdW5jdGlvbiBpcyBlbXVsYXRlZCB1c2luZyBmY250bCgpKS4iKTsKKworI2RlZmluZSBGQ05UTF9GTE9DS19NRVRIT0RERUYgICAgXAorICAgIHsiZmxvY2siLCAoUHlDRnVuY3Rpb24pZmNudGxfZmxvY2ssIE1FVEhfVkFSQVJHUywgZmNudGxfZmxvY2tfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2ZjbnRsX2Zsb2NrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgY29kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitmY250bF9mbG9jayhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IGNvZGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpmbG9jayIsCisgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBmY250bF9mbG9ja19pbXBsKG1vZHVsZSwgZmQsIGNvZGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihmY250bF9sb2NrZl9fZG9jX18sCisibG9ja2YoJG1vZHVsZSwgZmQsIGNtZCwgbGVuPTAsIHN0YXJ0PTAsIHdoZW5jZT0wLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQSB3cmFwcGVyIGFyb3VuZCB0aGUgZmNudGwoKSBsb2NraW5nIGNhbGxzLlxuIgorIlxuIgorImBmZGAgaXMgdGhlIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgZmlsZSB0byBsb2NrIG9yIHVubG9jaywgYW5kIG9wZXJhdGlvbiBpcyBvbmVcbiIKKyJvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcbiIKKyJcbiIKKyIgICAgTE9DS19VTiAtIHVubG9ja1xuIgorIiAgICBMT0NLX1NIIC0gYWNxdWlyZSBhIHNoYXJlZCBsb2NrXG4iCisiICAgIExPQ0tfRVggLSBhY3F1aXJlIGFuIGV4Y2x1c2l2ZSBsb2NrXG4iCisiXG4iCisiV2hlbiBvcGVyYXRpb24gaXMgTE9DS19TSCBvciBMT0NLX0VYLCBpdCBjYW4gYWxzbyBiZSBiaXR3aXNlIE9SZWQgd2l0aFxuIgorIkxPQ0tfTkIgdG8gYXZvaWQgYmxvY2tpbmcgb24gbG9jayBhY3F1aXNpdGlvbi4gIElmIExPQ0tfTkIgaXMgdXNlZCBhbmQgdGhlXG4iCisibG9jayBjYW5ub3QgYmUgYWNxdWlyZWQsIGFuIElPRXJyb3Igd2lsbCBiZSByYWlzZWQgYW5kIHRoZSBleGNlcHRpb24gd2lsbFxuIgorImhhdmUgYW4gZXJybm8gYXR0cmlidXRlIHNldCB0byBFQUNDRVMgb3IgRUFHQUlOIChkZXBlbmRpbmcgb24gdGhlIG9wZXJhdGluZ1xuIgorInN5c3RlbSAtLSBmb3IgcG9ydGFiaWxpdHksIGNoZWNrIGZvciBlaXRoZXIgdmFsdWUpLlxuIgorIlxuIgorImBsZW5gIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gbG9jaywgd2l0aCB0aGUgZGVmYXVsdCBtZWFuaW5nIHRvIGxvY2sgdG9cbiIKKyJFT0YuICBgc3RhcnRgIGlzIHRoZSBieXRlIG9mZnNldCwgcmVsYXRpdmUgdG8gYHdoZW5jZWAsIHRvIHRoYXQgdGhlIGxvY2tcbiIKKyJzdGFydHMuICBgd2hlbmNlYCBpcyBhcyB3aXRoIGZpbGVvYmouc2VlaygpLCBzcGVjaWZpY2FsbHk6XG4iCisiXG4iCisiICAgIDAgLSByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIGZpbGUgKFNFRUtfU0VUKVxuIgorIiAgICAxIC0gcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgYnVmZmVyIHBvc2l0aW9uIChTRUVLX0NVUilcbiIKKyIgICAgMiAtIHJlbGF0aXZlIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgKFNFRUtfRU5EKSIpOworCisjZGVmaW5lIEZDTlRMX0xPQ0tGX01FVEhPRERFRiAgICBcCisgICAgeyJsb2NrZiIsIChQeUNGdW5jdGlvbilmY250bF9sb2NrZiwgTUVUSF9WQVJBUkdTLCBmY250bF9sb2NrZl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorZmNudGxfbG9ja2ZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBjb2RlLCBQeU9iamVjdCAqbGVub2JqLAorICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhcnRvYmosIGludCB3aGVuY2UpOworCitzdGF0aWMgUHlPYmplY3QgKgorZmNudGxfbG9ja2YoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIGludCBjb2RlOworICAgIFB5T2JqZWN0ICpsZW5vYmogPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdGFydG9iaiA9IE5VTEw7CisgICAgaW50IHdoZW5jZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maXxPT2k6bG9ja2YiLAorICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZsZW5vYmosICZzdGFydG9iaiwgJndoZW5jZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBmY250bF9sb2NrZl9pbXBsKG1vZHVsZSwgZmQsIGNvZGUsIGxlbm9iaiwgc3RhcnRvYmosIHdoZW5jZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05Mjk2M2I2MzFkMDBmMGZlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2dycG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9ncnBtb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViNWI1OWQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9ncnBtb2R1bGUuYy5oCkBAIC0wLDAgKzEsODUgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihncnBfZ2V0Z3JnaWRfX2RvY19fLAorImdldGdyZ2lkKCRtb2R1bGUsIC8sIGlkKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBncm91cCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIG51bWVyaWMgZ3JvdXAgSUQuXG4iCisiXG4iCisiSWYgaWQgaXMgbm90IHZhbGlkLCByYWlzZSBLZXlFcnJvci4iKTsKKworI2RlZmluZSBHUlBfR0VUR1JHSURfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGdyZ2lkIiwgKFB5Q0Z1bmN0aW9uKWdycF9nZXRncmdpZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGdycF9nZXRncmdpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorZ3JwX2dldGdyZ2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmlkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2dycF9nZXRncmdpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImlkIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmlkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpnZXRncmdpZCIsIF9rZXl3b3JkcywKKyAgICAgICAgJmlkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGdycF9nZXRncmdpZF9pbXBsKG1vZHVsZSwgaWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihncnBfZ2V0Z3JuYW1fX2RvY19fLAorImdldGdybmFtKCRtb2R1bGUsIC8sIG5hbWUpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGdyb3VwIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gZ3JvdXAgbmFtZS5cbiIKKyJcbiIKKyJJZiBuYW1lIGlzIG5vdCB2YWxpZCwgcmFpc2UgS2V5RXJyb3IuIik7CisKKyNkZWZpbmUgR1JQX0dFVEdSTkFNX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRncm5hbSIsIChQeUNGdW5jdGlvbilncnBfZ2V0Z3JuYW0sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBncnBfZ2V0Z3JuYW1fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2dycF9nZXRncm5hbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2dycF9nZXRncm5hbShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im5hbWUiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIlU6Z2V0Z3JuYW0iLCBfa2V5d29yZHMsCisgICAgICAgICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGdycF9nZXRncm5hbV9pbXBsKG1vZHVsZSwgbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGdycF9nZXRncmFsbF9fZG9jX18sCisiZ2V0Z3JhbGwoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBncm91cCBlbnRyaWVzLCBpbiBhcmJpdHJhcnkgb3JkZXIuXG4iCisiXG4iCisiQW4gZW50cnkgd2hvc2UgbmFtZSBzdGFydHMgd2l0aCBcJytcJyBvciBcJy1cJyByZXByZXNlbnRzIGFuIGluc3RydWN0aW9uXG4iCisidG8gdXNlIFlQL05JUyBhbmQgbWF5IG5vdCBiZSBhY2Nlc3NpYmxlIHZpYSBnZXRncm5hbSBvciBnZXRncmdpZC4iKTsKKworI2RlZmluZSBHUlBfR0VUR1JBTExfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGdyYWxsIiwgKFB5Q0Z1bmN0aW9uKWdycF9nZXRncmFsbCwgTUVUSF9OT0FSR1MsIGdycF9nZXRncmFsbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorZ3JwX2dldGdyYWxsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitncnBfZ2V0Z3JhbGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gZ3JwX2dldGdyYWxsX2ltcGwobW9kdWxlKTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MTkxYzI1NjAwYWZiMWJkIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL21kNW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9tZDVtb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1YTMxMTcKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9tZDVtb2R1bGUuYy5oCkBAIC0wLDAgKzEsOTUgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihNRDVUeXBlX2NvcHlfX2RvY19fLAorImNvcHkoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4iKTsKKworI2RlZmluZSBNRDVUWVBFX0NPUFlfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvcHkiLCAoUHlDRnVuY3Rpb24pTUQ1VHlwZV9jb3B5LCBNRVRIX05PQVJHUywgTUQ1VHlwZV9jb3B5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitNRDVUeXBlX2NvcHlfaW1wbChNRDVvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorTUQ1VHlwZV9jb3B5KE1ENW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gTUQ1VHlwZV9jb3B5X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihNRDVUeXBlX2RpZ2VzdF9fZG9jX18sCisiZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisKKyNkZWZpbmUgTUQ1VFlQRV9ESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImRpZ2VzdCIsIChQeUNGdW5jdGlvbilNRDVUeXBlX2RpZ2VzdCwgTUVUSF9OT0FSR1MsIE1ENVR5cGVfZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitNRDVUeXBlX2RpZ2VzdF9pbXBsKE1ENW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitNRDVUeXBlX2RpZ2VzdChNRDVvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIE1ENVR5cGVfZGlnZXN0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihNRDVUeXBlX2hleGRpZ2VzdF9fZG9jX18sCisiaGV4ZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworCisjZGVmaW5lIE1ENVRZUEVfSEVYRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJoZXhkaWdlc3QiLCAoUHlDRnVuY3Rpb24pTUQ1VHlwZV9oZXhkaWdlc3QsIE1FVEhfTk9BUkdTLCBNRDVUeXBlX2hleGRpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorTUQ1VHlwZV9oZXhkaWdlc3RfaW1wbChNRDVvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorTUQ1VHlwZV9oZXhkaWdlc3QoTUQ1b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBNRDVUeXBlX2hleGRpZ2VzdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoTUQ1VHlwZV91cGRhdGVfX2RvY19fLAorInVwZGF0ZSgkc2VsZiwgb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVXBkYXRlIHRoaXMgaGFzaCBvYmplY3RcJ3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLiIpOworCisjZGVmaW5lIE1ENVRZUEVfVVBEQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ1cGRhdGUiLCAoUHlDRnVuY3Rpb24pTUQ1VHlwZV91cGRhdGUsIE1FVEhfTywgTUQ1VHlwZV91cGRhdGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9tZDVfbWQ1X19kb2NfXywKKyJtZDUoJG1vZHVsZSwgLywgc3RyaW5nPWJcJ1wnKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbmV3IE1ENSBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOworCisjZGVmaW5lIF9NRDVfTUQ1X01FVEhPRERFRiAgICBcCisgICAgeyJtZDUiLCAoUHlDRnVuY3Rpb24pX21kNV9tZDUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfbWQ1X21kNV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX21kNV9tZDVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19tZDVfbWQ1KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzptZDUiLCBfa2V5d29yZHMsCisgICAgICAgICZzdHJpbmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX21kNV9tZDVfaW1wbChtb2R1bGUsIHN0cmluZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZjgwM2RlZDcwMWFjYTU0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3Bvc2l4bW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3Bvc2l4bW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWY3MDJhCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvcG9zaXhtb2R1bGUuYy5oCkBAIC0wLDAgKzEsNTc5MSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKG9zX3N0YXRfX2RvY19fLAorInN0YXQoJG1vZHVsZSwgLywgcGF0aCwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiUGVyZm9ybSBhIHN0YXQgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguXG4iCisiXG4iCisiICBwYXRoXG4iCisiICAgIFBhdGggdG8gYmUgZXhhbWluZWQ7IGNhbiBiZSBzdHJpbmcsIGJ5dGVzLCBvciBvcGVuLWZpbGUtZGVzY3JpcHRvciBpbnQuXG4iCisiICBkaXJfZmRcbiIKKyIgICAgSWYgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgorIiAgICBhbmQgcGF0aCBzaG91bGQgYmUgYSByZWxhdGl2ZSBzdHJpbmc7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvXG4iCisiICAgIHRoYXQgZGlyZWN0b3J5LlxuIgorIiAgZm9sbG93X3N5bWxpbmtzXG4iCisiICAgIElmIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljIGxpbmssXG4iCisiICAgIHN0YXQgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG4iCisiICAgIHRoZSBsaW5rIHBvaW50cyB0by5cbiIKKyJcbiIKKyJkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkXG4iCisiICBvbiB5b3VyIHBsYXRmb3JtLiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhXG4iCisiICBOb3RJbXBsZW1lbnRlZEVycm9yLlxuIgorIlxuIgorIkl0XCdzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoIGFzXG4iCisiICBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4iKTsKKworI2RlZmluZSBPU19TVEFUX01FVEhPRERFRiAgICBcCisgICAgeyJzdGF0IiwgKFB5Q0Z1bmN0aW9uKW9zX3N0YXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zdGF0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zdGF0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkLAorICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3RhdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInN0YXQiLCAicGF0aCIsIDAsIDEpOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJnA6c3RhdCIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBGU1RBVEFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3RhdF9pbXBsKG1vZHVsZSwgJnBhdGgsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihvc19sc3RhdF9fZG9jX18sCisibHN0YXQoJG1vZHVsZSwgLywgcGF0aCwgKiwgZGlyX2ZkPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJQZXJmb3JtIGEgc3RhdCBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aCwgd2l0aG91dCBmb2xsb3dpbmcgc3ltYm9saWMgbGlua3MuXG4iCisiXG4iCisiTGlrZSBzdGF0KCksIGJ1dCBkbyBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLlxuIgorIkVxdWl2YWxlbnQgdG8gc3RhdChwYXRoLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOworCisjZGVmaW5lIE9TX0xTVEFUX01FVEhPRERFRiAgICBcCisgICAgeyJsc3RhdCIsIChQeUNGdW5jdGlvbilvc19sc3RhdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xzdGF0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19sc3RhdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19sc3RhdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibHN0YXQiLCAicGF0aCIsIDAsIDApOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpsc3RhdCIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBGU1RBVEFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfbHN0YXRfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX2FjY2Vzc19fZG9jX18sCisiYWNjZXNzKCRtb2R1bGUsIC8sIHBhdGgsIG1vZGUsICosIGRpcl9mZD1Ob25lLCBlZmZlY3RpdmVfaWRzPUZhbHNlLFxuIgorIiAgICAgICBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIlVzZSB0aGUgcmVhbCB1aWQvZ2lkIHRvIHRlc3QgZm9yIGFjY2VzcyB0byBhIHBhdGguXG4iCisiXG4iCisiICBwYXRoXG4iCisiICAgIFBhdGggdG8gYmUgdGVzdGVkOyBjYW4gYmUgc3RyaW5nLCBieXRlcywgb3Igb3Blbi1maWxlLWRlc2NyaXB0b3IgaW50LlxuIgorIiAgbW9kZVxuIgorIiAgICBPcGVyYXRpbmctc3lzdGVtIG1vZGUgYml0ZmllbGQuICBDYW4gYmUgRl9PSyB0byB0ZXN0IGV4aXN0ZW5jZSxcbiIKKyIgICAgb3IgdGhlIGluY2x1c2l2ZS1PUiBvZiBSX09LLCBXX09LLCBhbmQgWF9PSy5cbiIKKyIgIGRpcl9mZFxuIgorIiAgICBJZiBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICAgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdFxuIgorIiAgICBkaXJlY3RvcnkuXG4iCisiICBlZmZlY3RpdmVfaWRzXG4iCisiICAgIElmIFRydWUsIGFjY2VzcyB3aWxsIHVzZSB0aGUgZWZmZWN0aXZlIHVpZC9naWQgaW5zdGVhZCBvZlxuIgorIiAgICB0aGUgcmVhbCB1aWQvZ2lkLlxuIgorIiAgZm9sbG93X3N5bWxpbmtzXG4iCisiICAgIElmIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljIGxpbmssXG4iCisiICAgIGFjY2VzcyB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcbiIKKyIgICAgdGhlIGxpbmsgcG9pbnRzIHRvLlxuIgorIlxuIgorImRpcl9mZCwgZWZmZWN0aXZlX2lkcywgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkXG4iCisiICBvbiB5b3VyIHBsYXRmb3JtLiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhXG4iCisiICBOb3RJbXBsZW1lbnRlZEVycm9yLlxuIgorIlxuIgorIk5vdGUgdGhhdCBtb3N0IG9wZXJhdGlvbnMgd2lsbCB1c2UgdGhlIGVmZmVjdGl2ZSB1aWQvZ2lkLCB0aGVyZWZvcmUgdGhpc1xuIgorIiAgcm91dGluZSBjYW4gYmUgdXNlZCBpbiBhIHN1aWQvc2dpZCBlbnZpcm9ubWVudCB0byB0ZXN0IGlmIHRoZSBpbnZva2luZyB1c2VyXG4iCisiICBoYXMgdGhlIHNwZWNpZmllZCBhY2Nlc3MgdG8gdGhlIHBhdGguIik7CisKKyNkZWZpbmUgT1NfQUNDRVNTX01FVEhPRERFRiAgICBcCisgICAgeyJhY2Nlc3MiLCAoUHlDRnVuY3Rpb24pb3NfYWNjZXNzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfYWNjZXNzX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK29zX2FjY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQsCisgICAgICAgICAgICAgICBpbnQgZWZmZWN0aXZlX2lkcywgaW50IGZvbGxvd19zeW1saW5rcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19hY2Nlc3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgImVmZmVjdGl2ZV9pZHMiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiYWNjZXNzIiwgInBhdGgiLCAwLCAxKTsKKyAgICBpbnQgbW9kZTsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGVmZmVjdGl2ZV9pZHMgPSAwOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpfCRPJnBwOmFjY2VzcyIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgRkFDQ0VTU0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZlZmZlY3RpdmVfaWRzLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19hY2Nlc3NfaW1wbChtb2R1bGUsICZwYXRoLCBtb2RlLCBkaXJfZmQsIGVmZmVjdGl2ZV9pZHMsIGZvbGxvd19zeW1saW5rcyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9UVFlOQU1FKQorCitQeURvY19TVFJWQVIob3NfdHR5bmFtZV9fZG9jX18sCisidHR5bmFtZSgkbW9kdWxlLCBmZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgdGVybWluYWwgZGV2aWNlIGNvbm5lY3RlZCB0byBcJ2ZkXCcuXG4iCisiXG4iCisiICBmZFxuIgorIiAgICBJbnRlZ2VyIGZpbGUgZGVzY3JpcHRvciBoYW5kbGUuIik7CisKKyNkZWZpbmUgT1NfVFRZTkFNRV9NRVRIT0RERUYgICAgXAorICAgIHsidHR5bmFtZSIsIChQeUNGdW5jdGlvbilvc190dHluYW1lLCBNRVRIX08sIG9zX3R0eW5hbWVfX2RvY19ffSwKKworc3RhdGljIGNoYXIgKgorb3NfdHR5bmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc190dHluYW1lKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIGNoYXIgKl9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6dHR5bmFtZSIsICZmZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfdHR5bmFtZV9pbXBsKG1vZHVsZSwgZmQpOworICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfVFRZTkFNRSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9DVEVSTUlEKQorCitQeURvY19TVFJWQVIob3NfY3Rlcm1pZF9fZG9jX18sCisiY3Rlcm1pZCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjb250cm9sbGluZyB0ZXJtaW5hbCBmb3IgdGhpcyBwcm9jZXNzLiIpOworCisjZGVmaW5lIE9TX0NURVJNSURfTUVUSE9EREVGICAgIFwKKyAgICB7ImN0ZXJtaWQiLCAoUHlDRnVuY3Rpb24pb3NfY3Rlcm1pZCwgTUVUSF9OT0FSR1MsIG9zX2N0ZXJtaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2N0ZXJtaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2N0ZXJtaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfY3Rlcm1pZF9pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ1RFUk1JRCkgKi8KKworUHlEb2NfU1RSVkFSKG9zX2NoZGlyX19kb2NfXywKKyJjaGRpcigkbW9kdWxlLCAvLCBwYXRoKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBzcGVjaWZpZWQgcGF0aC5cbiIKKyJcbiIKKyJwYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLlxuIgorIk9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyIgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKKworI2RlZmluZSBPU19DSERJUl9NRVRIT0RERUYgICAgXAorICAgIHsiY2hkaXIiLCAoUHlDRnVuY3Rpb24pb3NfY2hkaXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19jaGRpcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfY2hkaXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfY2hkaXIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2hkaXIiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GQ0hESVIpOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6Y2hkaXIiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19jaGRpcl9pbXBsKG1vZHVsZSwgJnBhdGgpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9GQ0hESVIpCisKK1B5RG9jX1NUUlZBUihvc19mY2hkaXJfX2RvY19fLAorImZjaGRpcigkbW9kdWxlLCAvLCBmZClcbiIKKyItLVxuIgorIlxuIgorIkNoYW5nZSB0byB0aGUgZGlyZWN0b3J5IG9mIHRoZSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiXG4iCisiZmQgbXVzdCBiZSBvcGVuZWQgb24gYSBkaXJlY3RvcnksIG5vdCBhIGZpbGUuXG4iCisiRXF1aXZhbGVudCB0byBvcy5jaGRpcihmZCkuIik7CisKKyNkZWZpbmUgT1NfRkNIRElSX01FVEhPRERFRiAgICBcCisgICAgeyJmY2hkaXIiLCAoUHlDRnVuY3Rpb24pb3NfZmNoZGlyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZmNoZGlyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mY2hkaXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZmNoZGlyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBpbnQgZmQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpmY2hkaXIiLCBfa2V5d29yZHMsCisgICAgICAgIGZpbGRlc19jb252ZXJ0ZXIsICZmZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19mY2hkaXJfaW1wbChtb2R1bGUsIGZkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0ZDSERJUikgKi8KKworUHlEb2NfU1RSVkFSKG9zX2NobW9kX19kb2NfXywKKyJjaG1vZCgkbW9kdWxlLCAvLCBwYXRoLCBtb2RlLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiBhIGZpbGUuXG4iCisiXG4iCisiICBwYXRoXG4iCisiICAgIFBhdGggdG8gYmUgbW9kaWZpZWQuICBNYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0ciBvciBieXRlcy5cbiIKKyIgICAgT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIiAgICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uXG4iCisiICBtb2RlXG4iCisiICAgIE9wZXJhdGluZy1zeXN0ZW0gbW9kZSBiaXRmaWVsZC5cbiIKKyIgIGRpcl9mZFxuIgorIiAgICBJZiBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICAgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdFxuIgorIiAgICBkaXJlY3RvcnkuXG4iCisiICBmb2xsb3dfc3ltbGlua3NcbiIKKyIgICAgSWYgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMgbGluayxcbiIKKyIgICAgY2htb2Qgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcbiIKKyIgICAgdGhlIGxpbmsgcG9pbnRzIHRvLlxuIgorIlxuIgorIkl0IGlzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoIGFzXG4iCisiICBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyJkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG4iCisiICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworI2RlZmluZSBPU19DSE1PRF9NRVRIT0RERUYgICAgXAorICAgIHsiY2htb2QiLCAoUHlDRnVuY3Rpb24pb3NfY2htb2QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19jaG1vZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfY2htb2RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkLAorICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2NobW9kKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJjaG1vZCIsICJwYXRoIiwgMCwgUEFUSF9IQVZFX0ZDSE1PRCk7CisgICAgaW50IG1vZGU7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpfCRPJnA6Y2htb2QiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIEZDSE1PREFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2htb2RfaW1wbChtb2R1bGUsICZwYXRoLCBtb2RlLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX0ZDSE1PRCkKKworUHlEb2NfU1RSVkFSKG9zX2ZjaG1vZF9fZG9jX18sCisiZmNobW9kKCRtb2R1bGUsIC8sIGZkLCBtb2RlKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgb2YgdGhlIGZpbGUgZ2l2ZW4gYnkgZmlsZSBkZXNjcmlwdG9yIGZkLlxuIgorIlxuIgorIkVxdWl2YWxlbnQgdG8gb3MuY2htb2QoZmQsIG1vZGUpLiIpOworCisjZGVmaW5lIE9TX0ZDSE1PRF9NRVRIT0RERUYgICAgXAorICAgIHsiZmNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZjaG1vZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZjaG1vZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZmNobW9kX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgbW9kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mY2htb2QoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsICJtb2RlIiwgTlVMTH07CisgICAgaW50IGZkOworICAgIGludCBtb2RlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaWk6ZmNobW9kIiwgX2tleXdvcmRzLAorICAgICAgICAmZmQsICZtb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2ZjaG1vZF9pbXBsKG1vZHVsZSwgZmQsIG1vZGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfRkNITU9EKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0xDSE1PRCkKKworUHlEb2NfU1RSVkFSKG9zX2xjaG1vZF9fZG9jX18sCisibGNobW9kKCRtb2R1bGUsIC8sIHBhdGgsIG1vZGUpXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiBhIGZpbGUsIHdpdGhvdXQgZm9sbG93aW5nIHN5bWJvbGljIGxpbmtzLlxuIgorIlxuIgorIklmIHBhdGggaXMgYSBzeW1saW5rLCB0aGlzIGFmZmVjdHMgdGhlIGxpbmsgaXRzZWxmIHJhdGhlciB0aGFuIHRoZSB0YXJnZXQuXG4iCisiRXF1aXZhbGVudCB0byBjaG1vZChwYXRoLCBtb2RlLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLlwiIik7CisKKyNkZWZpbmUgT1NfTENITU9EX01FVEhPRERFRiAgICBcCisgICAgeyJsY2htb2QiLCAoUHlDRnVuY3Rpb24pb3NfbGNobW9kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbGNobW9kX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19sY2htb2RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2xjaG1vZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxjaG1vZCIsICJwYXRoIiwgMCwgMCk7CisgICAgaW50IG1vZGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJmk6bGNobW9kIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2xjaG1vZF9pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9MQ0hNT0QpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfQ0hGTEFHUykKKworUHlEb2NfU1RSVkFSKG9zX2NoZmxhZ3NfX2RvY19fLAorImNoZmxhZ3MoJG1vZHVsZSwgLywgcGF0aCwgZmxhZ3MsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IGZpbGUgZmxhZ3MuXG4iCisiXG4iCisiSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG4iCisiICBsaW5rLCBjaGZsYWdzIHdpbGwgY2hhbmdlIGZsYWdzIG9uIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZVxuIgorIiAgZmlsZSB0aGUgbGluayBwb2ludHMgdG8uXG4iCisiZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4gIElmIGl0IGlzXG4iCisidW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX0NIRkxBR1NfTUVUSE9EREVGICAgIFwKKyAgICB7ImNoZmxhZ3MiLCAoUHlDRnVuY3Rpb24pb3NfY2hmbGFncywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2NoZmxhZ3NfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2NoZmxhZ3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsCisgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jaGZsYWdzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJjaGZsYWdzIiwgInBhdGgiLCAwLCAwKTsKKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZrfHA6Y2hmbGFncyIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZmxhZ3MsICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2hmbGFnc19pbXBsKG1vZHVsZSwgJnBhdGgsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3MpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9DSEZMQUdTKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0xDSEZMQUdTKQorCitQeURvY19TVFJWQVIob3NfbGNoZmxhZ3NfX2RvY19fLAorImxjaGZsYWdzKCRtb2R1bGUsIC8sIHBhdGgsIGZsYWdzKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IGZpbGUgZmxhZ3MuXG4iCisiXG4iCisiVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuXG4iCisiRXF1aXZhbGVudCB0byBjaGZsYWdzKHBhdGgsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOworCisjZGVmaW5lIE9TX0xDSEZMQUdTX01FVEhPRERFRiAgICBcCisgICAgeyJsY2hmbGFncyIsIChQeUNGdW5jdGlvbilvc19sY2hmbGFncywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xjaGZsYWdzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19sY2hmbGFnc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgdW5zaWduZWQgbG9uZyBmbGFncyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19sY2hmbGFncyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsY2hmbGFncyIsICJwYXRoIiwgMCwgMCk7CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mazpsY2hmbGFncyIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZmxhZ3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfbGNoZmxhZ3NfaW1wbChtb2R1bGUsICZwYXRoLCBmbGFncyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0xDSEZMQUdTKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0NIUk9PVCkKKworUHlEb2NfU1RSVkFSKG9zX2Nocm9vdF9fZG9jX18sCisiY2hyb290KCRtb2R1bGUsIC8sIHBhdGgpXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFuZ2Ugcm9vdCBkaXJlY3RvcnkgdG8gcGF0aC4iKTsKKworI2RlZmluZSBPU19DSFJPT1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImNocm9vdCIsIChQeUNGdW5jdGlvbilvc19jaHJvb3QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19jaHJvb3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Nocm9vdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jaHJvb3QoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2hyb290IiwgInBhdGgiLCAwLCAwKTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmNocm9vdCIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2Nocm9vdF9pbXBsKG1vZHVsZSwgJnBhdGgpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9DSFJPT1QpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfRlNZTkMpCisKK1B5RG9jX1NUUlZBUihvc19mc3luY19fZG9jX18sCisiZnN5bmMoJG1vZHVsZSwgLywgZmQpXG4iCisiLS1cbiIKKyJcbiIKKyJGb3JjZSB3cml0ZSBvZiBmZCB0byBkaXNrLiIpOworCisjZGVmaW5lIE9TX0ZTWU5DX01FVEhPRERFRiAgICBcCisgICAgeyJmc3luYyIsIChQeUNGdW5jdGlvbilvc19mc3luYywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZzeW5jX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mc3luY19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mc3luYyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgaW50IGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6ZnN5bmMiLCBfa2V5d29yZHMsCisgICAgICAgIGZpbGRlc19jb252ZXJ0ZXIsICZmZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19mc3luY19pbXBsKG1vZHVsZSwgZmQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfRlNZTkMpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lOQykKKworUHlEb2NfU1RSVkFSKG9zX3N5bmNfX2RvY19fLAorInN5bmMoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkZvcmNlIHdyaXRlIG9mIGV2ZXJ5dGhpbmcgdG8gZGlzay4iKTsKKworI2RlZmluZSBPU19TWU5DX01FVEhPRERFRiAgICBcCisgICAgeyJzeW5jIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5bmMsIE1FVEhfTk9BUkdTLCBvc19zeW5jX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zeW5jX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zeW5jKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX3N5bmNfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZTkMpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfRkRBVEFTWU5DKQorCitQeURvY19TVFJWQVIob3NfZmRhdGFzeW5jX19kb2NfXywKKyJmZGF0YXN5bmMoJG1vZHVsZSwgLywgZmQpXG4iCisiLS1cbiIKKyJcbiIKKyJGb3JjZSB3cml0ZSBvZiBmZCB0byBkaXNrIHdpdGhvdXQgZm9yY2luZyB1cGRhdGUgb2YgbWV0YWRhdGEuIik7CisKKyNkZWZpbmUgT1NfRkRBVEFTWU5DX01FVEhPRERFRiAgICBcCisgICAgeyJmZGF0YXN5bmMiLCAoUHlDRnVuY3Rpb24pb3NfZmRhdGFzeW5jLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZmRhdGFzeW5jX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mZGF0YXN5bmNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZmRhdGFzeW5jKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBpbnQgZmQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpmZGF0YXN5bmMiLCBfa2V5d29yZHMsCisgICAgICAgIGZpbGRlc19jb252ZXJ0ZXIsICZmZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19mZGF0YXN5bmNfaW1wbChtb2R1bGUsIGZkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0ZEQVRBU1lOQykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9DSE9XTikKKworUHlEb2NfU1RSVkFSKG9zX2Nob3duX19kb2NfXywKKyJjaG93bigkbW9kdWxlLCAvLCBwYXRoLCB1aWQsIGdpZCwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgcGF0aCB0byB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZC5cXFxuIgorIlxuIgorIiAgcGF0aFxuIgorIiAgICBQYXRoIHRvIGJlIGV4YW1pbmVkOyBjYW4gYmUgc3RyaW5nLCBieXRlcywgb3Igb3Blbi1maWxlLWRlc2NyaXB0b3IgaW50LlxuIgorIiAgZGlyX2ZkXG4iCisiICAgIElmIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcbiIKKyIgICAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0XG4iCisiICAgIGRpcmVjdG9yeS5cbiIKKyIgIGZvbGxvd19zeW1saW5rc1xuIgorIiAgICBJZiBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYyBsaW5rLFxuIgorIiAgICBzdGF0IHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuIgorIiAgICB0aGUgbGluayBwb2ludHMgdG8uXG4iCisiXG4iCisicGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cbiIKKyJPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uXG4iCisiSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcbiIKKyIgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG4iCisiSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG4iCisiICBsaW5rLCBjaG93biB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGVcbiIKKyIgIGxpbmsgcG9pbnRzIHRvLlxuIgorIkl0IGlzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoIGFzXG4iCisiICBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyJkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG4iCisiICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworI2RlZmluZSBPU19DSE9XTl9NRVRIT0RERUYgICAgXAorICAgIHsiY2hvd24iLCAoUHlDRnVuY3Rpb24pb3NfY2hvd24sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19jaG93bl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfY2hvd25faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLAorICAgICAgICAgICAgICBpbnQgZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Nob3duKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJ1aWQiLCAiZ2lkIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJjaG93biIsICJwYXRoIiwgMCwgUEFUSF9IQVZFX0ZDSE9XTik7CisgICAgdWlkX3QgdWlkOworICAgIGdpZF90IGdpZDsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mTyZ8JE8mcDpjaG93biIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQsIEZDSE9XTkFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2hvd25faW1wbChtb2R1bGUsICZwYXRoLCB1aWQsIGdpZCwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9DSE9XTikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9GQ0hPV04pCisKK1B5RG9jX1NUUlZBUihvc19mY2hvd25fX2RvY19fLAorImZjaG93bigkbW9kdWxlLCAvLCBmZCwgdWlkLCBnaWQpXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgZmlsZSBkZXNjcmlwdG9yLlxuIgorIlxuIgorIkVxdWl2YWxlbnQgdG8gb3MuY2hvd24oZmQsIHVpZCwgZ2lkKS4iKTsKKworI2RlZmluZSBPU19GQ0hPV05fTUVUSE9EREVGICAgIFwKKyAgICB7ImZjaG93biIsIChQeUNGdW5jdGlvbilvc19mY2hvd24sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mY2hvd25fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZjaG93bl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZmNob3duKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCAidWlkIiwgImdpZCIsIE5VTEx9OworICAgIGludCBmZDsKKyAgICB1aWRfdCB1aWQ7CisgICAgZ2lkX3QgZ2lkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaU8mTyY6ZmNob3duIiwgX2tleXdvcmRzLAorICAgICAgICAmZmQsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19mY2hvd25faW1wbChtb2R1bGUsIGZkLCB1aWQsIGdpZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9GQ0hPV04pICovCisKKyNpZiBkZWZpbmVkKEhBVkVfTENIT1dOKQorCitQeURvY19TVFJWQVIob3NfbGNob3duX19kb2NfXywKKyJsY2hvd24oJG1vZHVsZSwgLywgcGF0aCwgdWlkLCBnaWQpXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiBwYXRoIHRvIHRoZSBudW1lcmljIHVpZCBhbmQgZ2lkLlxuIgorIlxuIgorIlRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLlxuIgorIkVxdWl2YWxlbnQgdG8gb3MuY2hvd24ocGF0aCwgdWlkLCBnaWQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CisKKyNkZWZpbmUgT1NfTENIT1dOX01FVEhPRERFRiAgICBcCisgICAgeyJsY2hvd24iLCAoUHlDRnVuY3Rpb24pb3NfbGNob3duLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbGNob3duX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19sY2hvd25faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2xjaG93bihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAidWlkIiwgImdpZCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxjaG93biIsICJwYXRoIiwgMCwgMCk7CisgICAgdWlkX3QgdWlkOworICAgIGdpZF90IGdpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZPJjpsY2hvd24iLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2xjaG93bl9pbXBsKG1vZHVsZSwgJnBhdGgsIHVpZCwgZ2lkKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTENIT1dOKSAqLworCitQeURvY19TVFJWQVIob3NfZ2V0Y3dkX19kb2NfXywKKyJnZXRjd2QoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIHVuaWNvZGUgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4iKTsKKworI2RlZmluZSBPU19HRVRDV0RfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGN3ZCIsIChQeUNGdW5jdGlvbilvc19nZXRjd2QsIE1FVEhfTk9BUkdTLCBvc19nZXRjd2RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGN3ZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0Y3dkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2dldGN3ZF9pbXBsKG1vZHVsZSk7Cit9CisKK1B5RG9jX1NUUlZBUihvc19nZXRjd2RiX19kb2NfXywKKyJnZXRjd2RiKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBieXRlcyBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiIpOworCisjZGVmaW5lIE9TX0dFVENXREJfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGN3ZGIiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0Y3dkYiwgTUVUSF9OT0FSR1MsIG9zX2dldGN3ZGJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGN3ZGJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGN3ZGIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZ2V0Y3dkYl9pbXBsKG1vZHVsZSk7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfTElOSykKKworUHlEb2NfU1RSVkFSKG9zX2xpbmtfX2RvY19fLAorImxpbmsoJG1vZHVsZSwgLywgc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lLFxuIgorIiAgICAgZm9sbG93X3N5bWxpbmtzPVRydWUpXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGUgYSBoYXJkIGxpbmsgdG8gYSBmaWxlLlxuIgorIlxuIgorIklmIGVpdGhlciBzcmNfZGlyX2ZkIG9yIGRzdF9kaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGVcbiIKKyIgIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KVxuIgorIiAgc2hvdWxkIGJlIHJlbGF0aXZlOyB0aGUgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG4iCisiSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiBzcmMgaXMgYSBzeW1ib2xpY1xuIgorIiAgbGluaywgbGluayB3aWxsIGNyZWF0ZSBhIGxpbmsgdG8gdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlXG4iCisiICBmaWxlIHRoZSBsaW5rIHBvaW50cyB0by5cbiIKKyJzcmNfZGlyX2ZkLCBkc3RfZGlyX2ZkLCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91clxuIgorIiAgcGxhdGZvcm0uICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGFcbiIKKyIgIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfTElOS19NRVRIT0RERUYgICAgXAorICAgIHsibGluayIsIChQeUNGdW5jdGlvbilvc19saW5rLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbGlua19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGlua19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwgaW50IHNyY19kaXJfZmQsCisgICAgICAgICAgICAgaW50IGRzdF9kaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGluayhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAic3JjX2Rpcl9mZCIsICJkc3RfZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBzcmMgPSBQQVRIX1RfSU5JVElBTElaRSgibGluayIsICJzcmMiLCAwLCAwKTsKKyAgICBwYXRoX3QgZHN0ID0gUEFUSF9UX0lOSVRJQUxJWkUoImxpbmsiLCAiZHN0IiwgMCwgMCk7CisgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkTyZPJnA6bGluayIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsIHBhdGhfY29udmVydGVyLCAmZHN0LCBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfbGlua19pbXBsKG1vZHVsZSwgJnNyYywgJmRzdCwgc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBzcmMgKi8KKyAgICBwYXRoX2NsZWFudXAoJnNyYyk7CisgICAgLyogQ2xlYW51cCBmb3IgZHN0ICovCisgICAgcGF0aF9jbGVhbnVwKCZkc3QpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9MSU5LKSAqLworCitQeURvY19TVFJWQVIob3NfbGlzdGRpcl9fZG9jX18sCisibGlzdGRpcigkbW9kdWxlLCAvLCBwYXRoPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBsaXN0IGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIHRoZSBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5LlxuIgorIlxuIgorInBhdGggY2FuIGJlIHNwZWNpZmllZCBhcyBlaXRoZXIgc3RyIG9yIGJ5dGVzLiAgSWYgcGF0aCBpcyBieXRlcyxcbiIKKyIgIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBhbHNvIGJlIGJ5dGVzOyBpbiBhbGwgb3RoZXIgY2lyY3Vtc3RhbmNlc1xuIgorIiAgdGhlIGZpbGVuYW1lcyByZXR1cm5lZCB3aWxsIGJlIHN0ci5cbiIKKyJJZiBwYXRoIGlzIE5vbmUsIHVzZXMgdGhlIHBhdGg9XCcuXCcuXG4iCisiT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yO1xcXG4iCisiICB0aGUgZmlsZSBkZXNjcmlwdG9yIG11c3QgcmVmZXIgdG8gYSBkaXJlY3RvcnkuXG4iCisiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBOb3RJbXBsZW1lbnRlZEVycm9yLlxuIgorIlxuIgorIlRoZSBsaXN0IGlzIGluIGFyYml0cmFyeSBvcmRlci4gIEl0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHNwZWNpYWxcbiIKKyJlbnRyaWVzIFwnLlwnIGFuZCBcJy4uXCcgZXZlbiBpZiB0aGV5IGFyZSBwcmVzZW50IGluIHRoZSBkaXJlY3RvcnkuIik7CisKKyNkZWZpbmUgT1NfTElTVERJUl9NRVRIT0RERUYgICAgXAorICAgIHsibGlzdGRpciIsIChQeUNGdW5jdGlvbilvc19saXN0ZGlyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbGlzdGRpcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGlzdGRpcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19saXN0ZGlyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxpc3RkaXIiLCAicGF0aCIsIDEsIFBBVEhfSEFWRV9GRE9QRU5ESVIpOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE8mOmxpc3RkaXIiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19saXN0ZGlyX2ltcGwobW9kdWxlLCAmcGF0aCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIob3NfX2dldGZ1bGxwYXRobmFtZV9fZG9jX18sCisiX2dldGZ1bGxwYXRobmFtZSgkbW9kdWxlLCBwYXRoLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBPU19fR0VURlVMTFBBVEhOQU1FX01FVEhPRERFRiAgICBcCisgICAgeyJfZ2V0ZnVsbHBhdGhuYW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX19nZXRmdWxscGF0aG5hbWUsIE1FVEhfTywgb3NfX2dldGZ1bGxwYXRobmFtZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfX2dldGZ1bGxwYXRobmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19fZ2V0ZnVsbHBhdGhuYW1lKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiX2dldGZ1bGxwYXRobmFtZSIsICJwYXRoIiwgMCwgMCk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl9nZXRmdWxscGF0aG5hbWUiLCBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfX2dldGZ1bGxwYXRobmFtZV9pbXBsKG1vZHVsZSwgJnBhdGgpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX19nZXRmaW5hbHBhdGhuYW1lX19kb2NfXywKKyJfZ2V0ZmluYWxwYXRobmFtZSgkbW9kdWxlLCBwYXRoLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQSBoZWxwZXIgZnVuY3Rpb24gZm9yIHNhbWVwYXRoIG9uIHdpbmRvd3MuIik7CisKKyNkZWZpbmUgT1NfX0dFVEZJTkFMUEFUSE5BTUVfTUVUSE9EREVGICAgIFwKKyAgICB7Il9nZXRmaW5hbHBhdGhuYW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX19nZXRmaW5hbHBhdGhuYW1lLCBNRVRIX08sIG9zX19nZXRmaW5hbHBhdGhuYW1lX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19fZ2V0ZmluYWxwYXRobmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX19nZXRmaW5hbHBhdGhuYW1lKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBhdGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6X2dldGZpbmFscGF0aG5hbWUiLCAmcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19fZ2V0ZmluYWxwYXRobmFtZV9pbXBsKG1vZHVsZSwgcGF0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX19pc2Rpcl9fZG9jX18sCisiX2lzZGlyKCRtb2R1bGUsIHBhdGgsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIE9TX19JU0RJUl9NRVRIT0RERUYgICAgXAorICAgIHsiX2lzZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX19pc2RpciwgTUVUSF9PLCBvc19faXNkaXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX19pc2Rpcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19faXNkaXIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJfaXNkaXIiLCAicGF0aCIsIDAsIDApOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfaXNkaXIiLCBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfX2lzZGlyX2ltcGwobW9kdWxlLCAmcGF0aCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIob3NfX2dldHZvbHVtZXBhdGhuYW1lX19kb2NfXywKKyJfZ2V0dm9sdW1lcGF0aG5hbWUoJG1vZHVsZSwgLywgcGF0aClcbiIKKyItLVxuIgorIlxuIgorIkEgaGVscGVyIGZ1bmN0aW9uIGZvciBpc21vdW50IG9uIFdpbjMyLiIpOworCisjZGVmaW5lIE9TX19HRVRWT0xVTUVQQVRITkFNRV9NRVRIT0RERUYgICAgXAorICAgIHsiX2dldHZvbHVtZXBhdGhuYW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX19nZXR2b2x1bWVwYXRobmFtZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX19nZXR2b2x1bWVwYXRobmFtZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfX2dldHZvbHVtZXBhdGhuYW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfX2dldHZvbHVtZXBhdGhuYW1lKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpwYXRoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiVTpfZ2V0dm9sdW1lcGF0aG5hbWUiLCBfa2V5d29yZHMsCisgICAgICAgICZwYXRoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX19nZXR2b2x1bWVwYXRobmFtZV9pbXBsKG1vZHVsZSwgcGF0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworUHlEb2NfU1RSVkFSKG9zX21rZGlyX19kb2NfXywKKyJta2RpcigkbW9kdWxlLCAvLCBwYXRoLCBtb2RlPTUxMSwgKiwgZGlyX2ZkPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGUgYSBkaXJlY3RvcnkuXG4iCisiXG4iCisiSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcbiIKKyIgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG4iCisiZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cbiIKKyIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci5cbiIKKyJcbiIKKyJUaGUgbW9kZSBhcmd1bWVudCBpcyBpZ25vcmVkIG9uIFdpbmRvd3MuIik7CisKKyNkZWZpbmUgT1NfTUtESVJfTUVUSE9EREVGICAgIFwKKyAgICB7Im1rZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX21rZGlyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbWtkaXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX21rZGlyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ta2RpcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJta2RpciIsICJwYXRoIiwgMCwgMCk7CisgICAgaW50IG1vZGUgPSA1MTE7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aSRPJjpta2RpciIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgTUtESVJBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX21rZGlyX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfTklDRSkKKworUHlEb2NfU1RSVkFSKG9zX25pY2VfX2RvY19fLAorIm5pY2UoJG1vZHVsZSwgaW5jcmVtZW50LCAvKVxuIgorIi0tXG4iCisiXG4iCisiQWRkIGluY3JlbWVudCB0byB0aGUgcHJpb3JpdHkgb2YgcHJvY2VzcyBhbmQgcmV0dXJuIHRoZSBuZXcgcHJpb3JpdHkuIik7CisKKyNkZWZpbmUgT1NfTklDRV9NRVRIT0RERUYgICAgXAorICAgIHsibmljZSIsIChQeUNGdW5jdGlvbilvc19uaWNlLCBNRVRIX08sIG9zX25pY2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX25pY2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgaW5jcmVtZW50KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX25pY2UoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgaW5jcmVtZW50OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOm5pY2UiLCAmaW5jcmVtZW50KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX25pY2VfaW1wbChtb2R1bGUsIGluY3JlbWVudCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9OSUNFKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVFBSSU9SSVRZKQorCitQeURvY19TVFJWQVIob3NfZ2V0cHJpb3JpdHlfX2RvY19fLAorImdldHByaW9yaXR5KCRtb2R1bGUsIC8sIHdoaWNoLCB3aG8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LiIpOworCisjZGVmaW5lIE9TX0dFVFBSSU9SSVRZX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRwcmlvcml0eSIsIChQeUNGdW5jdGlvbilvc19nZXRwcmlvcml0eSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2dldHByaW9yaXR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRwcmlvcml0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB3aGljaCwgaW50IHdobyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRwcmlvcml0eShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7IndoaWNoIiwgIndobyIsIE5VTEx9OworICAgIGludCB3aGljaDsKKyAgICBpbnQgd2hvOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaWk6Z2V0cHJpb3JpdHkiLCBfa2V5d29yZHMsCisgICAgICAgICZ3aGljaCwgJndobykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19nZXRwcmlvcml0eV9pbXBsKG1vZHVsZSwgd2hpY2gsIHdobyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRQUklPUklUWSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TRVRQUklPUklUWSkKKworUHlEb2NfU1RSVkFSKG9zX3NldHByaW9yaXR5X19kb2NfXywKKyJzZXRwcmlvcml0eSgkbW9kdWxlLCAvLCB3aGljaCwgd2hvLCBwcmlvcml0eSlcbiIKKyItLVxuIgorIlxuIgorIlNldCBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuIik7CisKKyNkZWZpbmUgT1NfU0VUUFJJT1JJVFlfTUVUSE9EREVGICAgIFwKKyAgICB7InNldHByaW9yaXR5IiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHByaW9yaXR5LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc2V0cHJpb3JpdHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHByaW9yaXR5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHdoaWNoLCBpbnQgd2hvLCBpbnQgcHJpb3JpdHkpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cHJpb3JpdHkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ3aGljaCIsICJ3aG8iLCAicHJpb3JpdHkiLCBOVUxMfTsKKyAgICBpbnQgd2hpY2g7CisgICAgaW50IHdobzsKKyAgICBpbnQgcHJpb3JpdHk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpaWk6c2V0cHJpb3JpdHkiLCBfa2V5d29yZHMsCisgICAgICAgICZ3aGljaCwgJndobywgJnByaW9yaXR5KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHByaW9yaXR5X2ltcGwobW9kdWxlLCB3aGljaCwgd2hvLCBwcmlvcml0eSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TRVRQUklPUklUWSkgKi8KKworUHlEb2NfU1RSVkFSKG9zX3JlbmFtZV9fZG9jX18sCisicmVuYW1lKCRtb2R1bGUsIC8sIHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJlbmFtZSBhIGZpbGUgb3IgZGlyZWN0b3J5LlxuIgorIlxuIgorIklmIGVpdGhlciBzcmNfZGlyX2ZkIG9yIGRzdF9kaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGVcbiIKKyIgIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KVxuIgorIiAgc2hvdWxkIGJlIHJlbGF0aXZlOyB0aGUgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG4iCisic3JjX2Rpcl9mZCBhbmQgZHN0X2Rpcl9mZCwgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfUkVOQU1FX01FVEhPRERFRiAgICBcCisgICAgeyJyZW5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfcmVuYW1lLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfcmVuYW1lX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19yZW5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsIGludCBzcmNfZGlyX2ZkLAorICAgICAgICAgICAgICAgaW50IGRzdF9kaXJfZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVuYW1lKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCBOVUxMfTsKKyAgICBwYXRoX3Qgc3JjID0gUEFUSF9UX0lOSVRJQUxJWkUoInJlbmFtZSIsICJzcmMiLCAwLCAwKTsKKyAgICBwYXRoX3QgZHN0ID0gUEFUSF9UX0lOSVRJQUxJWkUoInJlbmFtZSIsICJkc3QiLCAwLCAwKTsKKyAgICBpbnQgc3JjX2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBkc3RfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRPJk8mOnJlbmFtZSIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsIHBhdGhfY29udmVydGVyLCAmZHN0LCBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfcmVuYW1lX2ltcGwobW9kdWxlLCAmc3JjLCAmZHN0LCBzcmNfZGlyX2ZkLCBkc3RfZGlyX2ZkKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBzcmMgKi8KKyAgICBwYXRoX2NsZWFudXAoJnNyYyk7CisgICAgLyogQ2xlYW51cCBmb3IgZHN0ICovCisgICAgcGF0aF9jbGVhbnVwKCZkc3QpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX3JlcGxhY2VfX2RvY19fLAorInJlcGxhY2UoJG1vZHVsZSwgLywgc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmVuYW1lIGEgZmlsZSBvciBkaXJlY3RvcnksIG92ZXJ3cml0aW5nIHRoZSBkZXN0aW5hdGlvbi5cbiIKKyJcbiIKKyJJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG4iCisiICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdClcbiIKKyIgIHNob3VsZCBiZSByZWxhdGl2ZTsgdGhlIHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorInNyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQsIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cbiIKKyIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLlwiIik7CisKKyNkZWZpbmUgT1NfUkVQTEFDRV9NRVRIT0RERUYgICAgXAorICAgIHsicmVwbGFjZSIsIChQeUNGdW5jdGlvbilvc19yZXBsYWNlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfcmVwbGFjZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVwbGFjZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwKKyAgICAgICAgICAgICAgICBpbnQgc3JjX2Rpcl9mZCwgaW50IGRzdF9kaXJfZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVwbGFjZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAic3JjX2Rpcl9mZCIsICJkc3RfZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHNyYyA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZXBsYWNlIiwgInNyYyIsIDAsIDApOworICAgIHBhdGhfdCBkc3QgPSBQQVRIX1RfSU5JVElBTElaRSgicmVwbGFjZSIsICJkc3QiLCAwLCAwKTsKKyAgICBpbnQgc3JjX2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBkc3RfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRPJk8mOnJlcGxhY2UiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3JlcGxhY2VfaW1wbChtb2R1bGUsICZzcmMsICZkc3QsIHNyY19kaXJfZmQsIGRzdF9kaXJfZmQpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHNyYyAqLworICAgIHBhdGhfY2xlYW51cCgmc3JjKTsKKyAgICAvKiBDbGVhbnVwIGZvciBkc3QgKi8KKyAgICBwYXRoX2NsZWFudXAoJmRzdCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3Nfcm1kaXJfX2RvY19fLAorInJtZGlyKCRtb2R1bGUsIC8sIHBhdGgsICosIGRpcl9mZD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmVtb3ZlIGEgZGlyZWN0b3J5LlxuIgorIlxuIgorIklmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorImRpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG4iCisiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfUk1ESVJfTUVUSE9EREVGICAgIFwKKyAgICB7InJtZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX3JtZGlyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfcm1kaXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3JtZGlyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3JtZGlyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJybWRpciIsICJwYXRoIiwgMCwgMCk7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnJtZGlyIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfcm1kaXJfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9TWVNURU0pICYmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX3N5c3RlbV9fZG9jX18sCisic3lzdGVtKCRtb2R1bGUsIC8sIGNvbW1hbmQpXG4iCisiLS1cbiIKKyJcbiIKKyJFeGVjdXRlIHRoZSBjb21tYW5kIGluIGEgc3Vic2hlbGwuIik7CisKKyNkZWZpbmUgT1NfU1lTVEVNX01FVEhPRERFRiAgICBcCisgICAgeyJzeXN0ZW0iLCAoUHlDRnVuY3Rpb24pb3Nfc3lzdGVtLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc3lzdGVtX19kb2NfX30sCisKK3N0YXRpYyBsb25nCitvc19zeXN0ZW1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9VTklDT0RFICpjb21tYW5kKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N5c3RlbShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImNvbW1hbmQiLCBOVUxMfTsKKyAgICBQeV9VTklDT0RFICpjb21tYW5kOworICAgIGxvbmcgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInU6c3lzdGVtIiwgX2tleXdvcmRzLAorICAgICAgICAmY29tbWFuZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfc3lzdGVtX2ltcGwobW9kdWxlLCBjb21tYW5kKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TWVNURU0pICYmIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TWVNURU0pICYmICFkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19zeXN0ZW1fX2RvY19fLAorInN5c3RlbSgkbW9kdWxlLCAvLCBjb21tYW5kKVxuIgorIi0tXG4iCisiXG4iCisiRXhlY3V0ZSB0aGUgY29tbWFuZCBpbiBhIHN1YnNoZWxsLiIpOworCisjZGVmaW5lIE9TX1NZU1RFTV9NRVRIT0RERUYgICAgXAorICAgIHsic3lzdGVtIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5c3RlbSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N5c3RlbV9fZG9jX199LAorCitzdGF0aWMgbG9uZworb3Nfc3lzdGVtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmNvbW1hbmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3lzdGVtKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiY29tbWFuZCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpjb21tYW5kID0gTlVMTDsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpzeXN0ZW0iLCBfa2V5d29yZHMsCisgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJmNvbW1hbmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX3N5c3RlbV9pbXBsKG1vZHVsZSwgY29tbWFuZCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGNvbW1hbmQgKi8KKyAgICBQeV9YREVDUkVGKGNvbW1hbmQpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TWVNURU0pICYmICFkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKK1B5RG9jX1NUUlZBUihvc191bWFza19fZG9jX18sCisidW1hc2soJG1vZHVsZSwgbWFzaywgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgY3VycmVudCBudW1lcmljIHVtYXNrIGFuZCByZXR1cm4gdGhlIHByZXZpb3VzIHVtYXNrLiIpOworCisjZGVmaW5lIE9TX1VNQVNLX01FVEhPRERFRiAgICBcCisgICAgeyJ1bWFzayIsIChQeUNGdW5jdGlvbilvc191bWFzaywgTUVUSF9PLCBvc191bWFza19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdW1hc2tfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbWFzayk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc191bWFzayhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBtYXNrOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnVtYXNrIiwgJm1hc2spKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfdW1hc2tfaW1wbChtb2R1bGUsIG1hc2spOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihvc191bmxpbmtfX2RvY19fLAorInVubGluaygkbW9kdWxlLCAvLCBwYXRoLCAqLCBkaXJfZmQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJlbW92ZSBhIGZpbGUgKHNhbWUgYXMgcmVtb3ZlKCkpLlxuIgorIlxuIgorIklmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorImRpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG4iCisiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfVU5MSU5LX01FVEhPRERFRiAgICBcCisgICAgeyJ1bmxpbmsiLCAoUHlDRnVuY3Rpb24pb3NfdW5saW5rLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfdW5saW5rX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc191bmxpbmtfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdW5saW5rKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJ1bmxpbmsiLCAicGF0aCIsIDAsIDApOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjp1bmxpbmsiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc191bmxpbmtfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX3JlbW92ZV9fZG9jX18sCisicmVtb3ZlKCRtb2R1bGUsIC8sIHBhdGgsICosIGRpcl9mZD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmVtb3ZlIGEgZmlsZSAoc2FtZSBhcyB1bmxpbmsoKSkuXG4iCisiXG4iCisiSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcbiIKKyIgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG4iCisiZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cbiIKKyIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworI2RlZmluZSBPU19SRU1PVkVfTUVUSE9EREVGICAgIFwKKyAgICB7InJlbW92ZSIsIChQeUNGdW5jdGlvbilvc19yZW1vdmUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19yZW1vdmVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3JlbW92ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19yZW1vdmUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInJlbW92ZSIsICJwYXRoIiwgMCwgMCk7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnJlbW92ZSIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3JlbW92ZV9pbXBsKG1vZHVsZSwgJnBhdGgsIGRpcl9mZCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX1VOQU1FKQorCitQeURvY19TVFJWQVIob3NfdW5hbWVfX2RvY19fLAorInVuYW1lKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYW4gb2JqZWN0IGlkZW50aWZ5aW5nIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0uXG4iCisiXG4iCisiVGhlIG9iamVjdCBiZWhhdmVzIGxpa2UgYSBuYW1lZCB0dXBsZSB3aXRoIHRoZSBmb2xsb3dpbmcgZmllbGRzOlxuIgorIiAgKHN5c25hbWUsIG5vZGVuYW1lLCByZWxlYXNlLCB2ZXJzaW9uLCBtYWNoaW5lKSIpOworCisjZGVmaW5lIE9TX1VOQU1FX01FVEhPRERFRiAgICBcCisgICAgeyJ1bmFtZSIsIChQeUNGdW5jdGlvbilvc191bmFtZSwgTUVUSF9OT0FSR1MsIG9zX3VuYW1lX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc191bmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdW5hbWUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfdW5hbWVfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1VOQU1FKSAqLworCitQeURvY19TVFJWQVIob3NfdXRpbWVfX2RvY19fLAorInV0aW1lKCRtb2R1bGUsIC8sIHBhdGgsIHRpbWVzPU5vbmUsICosIG5zPU5vbmUsIGRpcl9mZD1Ob25lLFxuIgorIiAgICAgIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWUgb2YgcGF0aC5cbiIKKyJcbiIKKyJwYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLlxuIgorIk9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyIgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi5cbiIKKyJcbiIKKyJJZiB0aW1lcyBpcyBub3QgTm9uZSwgaXQgbXVzdCBiZSBhIHR1cGxlIChhdGltZSwgbXRpbWUpO1xuIgorIiAgICBhdGltZSBhbmQgbXRpbWUgc2hvdWxkIGJlIGV4cHJlc3NlZCBhcyBmbG9hdCBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaC5cbiIKKyJJZiBucyBpcyBzcGVjaWZpZWQsIGl0IG11c3QgYmUgYSB0dXBsZSAoYXRpbWVfbnMsIG10aW1lX25zKTtcbiIKKyIgICAgYXRpbWVfbnMgYW5kIG10aW1lX25zIHNob3VsZCBiZSBleHByZXNzZWQgYXMgaW50ZWdlciBuYW5vc2Vjb25kc1xuIgorIiAgICBzaW5jZSB0aGUgZXBvY2guXG4iCisiSWYgdGltZXMgaXMgTm9uZSBhbmQgbnMgaXMgdW5zcGVjaWZpZWQsIHV0aW1lIHVzZXMgdGhlIGN1cnJlbnQgdGltZS5cbiIKKyJTcGVjaWZ5aW5nIHR1cGxlcyBmb3IgYm90aCB0aW1lcyBhbmQgbnMgaXMgYW4gZXJyb3IuXG4iCisiXG4iCisiSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcbiIKKyIgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG4iCisiSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG4iCisiICBsaW5rLCB1dGltZSB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGVcbiIKKyIgIGxpbmsgcG9pbnRzIHRvLlxuIgorIkl0IGlzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoXG4iCisiICBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyJkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGF2YWlsYWJsZSBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfVVRJTUVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0aW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX3V0aW1lLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfdXRpbWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3V0aW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqdGltZXMsCisgICAgICAgICAgICAgIFB5T2JqZWN0ICpucywgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc191dGltZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAidGltZXMiLCAibnMiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInV0aW1lIiwgInBhdGgiLCAwLCBQQVRIX1VUSU1FX0hBVkVfRkQpOworICAgIFB5T2JqZWN0ICp0aW1lcyA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5zID0gTlVMTDsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxPJE9PJnA6dXRpbWUiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJnRpbWVzLCAmbnMsIEZVVElNRU5TQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc191dGltZV9pbXBsKG1vZHVsZSwgJnBhdGgsIHRpbWVzLCBucywgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX19leGl0X19kb2NfXywKKyJfZXhpdCgkbW9kdWxlLCAvLCBzdGF0dXMpXG4iCisiLS1cbiIKKyJcbiIKKyJFeGl0IHRvIHRoZSBzeXN0ZW0gd2l0aCBzcGVjaWZpZWQgc3RhdHVzLCB3aXRob3V0IG5vcm1hbCBleGl0IHByb2Nlc3NpbmcuIik7CisKKyNkZWZpbmUgT1NfX0VYSVRfTUVUSE9EREVGICAgIFwKKyAgICB7Il9leGl0IiwgKFB5Q0Z1bmN0aW9uKW9zX19leGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfX2V4aXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX19leGl0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19fZXhpdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIGludCBzdGF0dXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOl9leGl0IiwgX2tleXdvcmRzLAorICAgICAgICAmc3RhdHVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX19leGl0X2ltcGwobW9kdWxlLCBzdGF0dXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfRVhFQ1YpCisKK1B5RG9jX1NUUlZBUihvc19leGVjdl9fZG9jX18sCisiZXhlY3YoJG1vZHVsZSwgcGF0aCwgYXJndiwgLylcbiIKKyItLVxuIgorIlxuIgorIkV4ZWN1dGUgYW4gZXhlY3V0YWJsZSBwYXRoIHdpdGggYXJndW1lbnRzLCByZXBsYWNpbmcgY3VycmVudCBwcm9jZXNzLlxuIgorIlxuIgorIiAgcGF0aFxuIgorIiAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS5cbiIKKyIgIGFyZ3ZcbiIKKyIgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLiIpOworCisjZGVmaW5lIE9TX0VYRUNWX01FVEhPRERFRiAgICBcCisgICAgeyJleGVjdiIsIChQeUNGdW5jdGlvbilvc19leGVjdiwgTUVUSF9WQVJBUkdTLCBvc19leGVjdl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZXhlY3ZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZXhlY3YoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOworICAgIFB5T2JqZWN0ICphcmd2OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk86ZXhlY3YiLAorICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoLCAmYXJndikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19leGVjdl9pbXBsKG1vZHVsZSwgcGF0aCwgYXJndik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIFB5X1hERUNSRUYocGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0VYRUNWKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0VYRUNWKQorCitQeURvY19TVFJWQVIob3NfZXhlY3ZlX19kb2NfXywKKyJleGVjdmUoJG1vZHVsZSwgLywgcGF0aCwgYXJndiwgZW52KVxuIgorIi0tXG4iCisiXG4iCisiRXhlY3V0ZSBhbiBleGVjdXRhYmxlIHBhdGggd2l0aCBhcmd1bWVudHMsIHJlcGxhY2luZyBjdXJyZW50IHByb2Nlc3MuXG4iCisiXG4iCisiICBwYXRoXG4iCisiICAgIFBhdGggb2YgZXhlY3V0YWJsZSBmaWxlLlxuIgorIiAgYXJndlxuIgorIiAgICBUdXBsZSBvciBsaXN0IG9mIHN0cmluZ3MuXG4iCisiICBlbnZcbiIKKyIgICAgRGljdGlvbmFyeSBvZiBzdHJpbmdzIG1hcHBpbmcgdG8gc3RyaW5ncy4iKTsKKworI2RlZmluZSBPU19FWEVDVkVfTUVUSE9EREVGICAgIFwKKyAgICB7ImV4ZWN2ZSIsIChQeUNGdW5jdGlvbilvc19leGVjdmUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19leGVjdmVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2V4ZWN2ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsCisgICAgICAgICAgICAgICBQeU9iamVjdCAqZW52KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2V4ZWN2ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXJndiIsICJlbnYiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJleGVjdmUiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GRVhFQ1ZFKTsKKyAgICBQeU9iamVjdCAqYXJndjsKKyAgICBQeU9iamVjdCAqZW52OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPTzpleGVjdmUiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmFyZ3YsICZlbnYpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZXhlY3ZlX2ltcGwobW9kdWxlLCAmcGF0aCwgYXJndiwgZW52KTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfRVhFQ1YpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU1BBV05WKQorCitQeURvY19TVFJWQVIob3Nfc3Bhd252X19kb2NfXywKKyJzcGF3bnYoJG1vZHVsZSwgbW9kZSwgcGF0aCwgYXJndiwgLylcbiIKKyItLVxuIgorIlxuIgorIkV4ZWN1dGUgdGhlIHByb2dyYW0gc3BlY2lmaWVkIGJ5IHBhdGggaW4gYSBuZXcgcHJvY2Vzcy5cbiIKKyJcbiIKKyIgIG1vZGVcbiIKKyIgICAgTW9kZSBvZiBwcm9jZXNzIGNyZWF0aW9uLlxuIgorIiAgcGF0aFxuIgorIiAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS5cbiIKKyIgIGFyZ3ZcbiIKKyIgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLiIpOworCisjZGVmaW5lIE9TX1NQQVdOVl9NRVRIT0RERUYgICAgXAorICAgIHsic3Bhd252IiwgKFB5Q0Z1bmN0aW9uKW9zX3NwYXdudiwgTUVUSF9WQVJBUkdTLCBvc19zcGF3bnZfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NwYXdudl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBtb2RlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3Bhd252KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBtb2RlOworICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXJndjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTzpzcGF3bnYiLAorICAgICAgICAmbW9kZSwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCwgJmFyZ3YpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3Bhd252X2ltcGwobW9kdWxlLCBtb2RlLCBwYXRoLCBhcmd2KTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgUHlfWERFQ1JFRihwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1BBV05WKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NQQVdOVikKKworUHlEb2NfU1RSVkFSKG9zX3NwYXdudmVfX2RvY19fLAorInNwYXdudmUoJG1vZHVsZSwgbW9kZSwgcGF0aCwgYXJndiwgZW52LCAvKVxuIgorIi0tXG4iCisiXG4iCisiRXhlY3V0ZSB0aGUgcHJvZ3JhbSBzcGVjaWZpZWQgYnkgcGF0aCBpbiBhIG5ldyBwcm9jZXNzLlxuIgorIlxuIgorIiAgbW9kZVxuIgorIiAgICBNb2RlIG9mIHByb2Nlc3MgY3JlYXRpb24uXG4iCisiICBwYXRoXG4iCisiICAgIFBhdGggb2YgZXhlY3V0YWJsZSBmaWxlLlxuIgorIiAgYXJndlxuIgorIiAgICBUdXBsZSBvciBsaXN0IG9mIHN0cmluZ3MuXG4iCisiICBlbnZcbiIKKyIgICAgRGljdGlvbmFyeSBvZiBzdHJpbmdzIG1hcHBpbmcgdG8gc3RyaW5ncy4iKTsKKworI2RlZmluZSBPU19TUEFXTlZFX01FVEhPRERFRiAgICBcCisgICAgeyJzcGF3bnZlIiwgKFB5Q0Z1bmN0aW9uKW9zX3NwYXdudmUsIE1FVEhfVkFSQVJHUywgb3Nfc3Bhd252ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3Bhd252ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBtb2RlLCBQeU9iamVjdCAqcGF0aCwKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJndiwgUHlPYmplY3QgKmVudik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zcGF3bnZlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBtb2RlOworICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXJndjsKKyAgICBQeU9iamVjdCAqZW52OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPTzpzcGF3bnZlIiwKKyAgICAgICAgJm1vZGUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgsICZhcmd2LCAmZW52KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NwYXdudmVfaW1wbChtb2R1bGUsIG1vZGUsIHBhdGgsIGFyZ3YsIGVudik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIFB5X1hERUNSRUYocGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NQQVdOVikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9GT1JLMSkKKworUHlEb2NfU1RSVkFSKG9zX2ZvcmsxX19kb2NfXywKKyJmb3JrMSgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRm9yayBhIGNoaWxkIHByb2Nlc3Mgd2l0aCBhIHNpbmdsZSBtdWx0aXBsZXhlZCAoaS5lLiwgbm90IGJvdW5kKSB0aHJlYWQuXG4iCisiXG4iCisiUmV0dXJuIDAgdG8gY2hpbGQgcHJvY2VzcyBhbmQgUElEIG9mIGNoaWxkIHRvIHBhcmVudCBwcm9jZXNzLiIpOworCisjZGVmaW5lIE9TX0ZPUksxX01FVEhPRERFRiAgICBcCisgICAgeyJmb3JrMSIsIChQeUNGdW5jdGlvbilvc19mb3JrMSwgTUVUSF9OT0FSR1MsIG9zX2ZvcmsxX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mb3JrMV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZm9yazEoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZm9yazFfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0ZPUksxKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0ZPUkspCisKK1B5RG9jX1NUUlZBUihvc19mb3JrX19kb2NfXywKKyJmb3JrKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJGb3JrIGEgY2hpbGQgcHJvY2Vzcy5cbiIKKyJcbiIKKyJSZXR1cm4gMCB0byBjaGlsZCBwcm9jZXNzIGFuZCBQSUQgb2YgY2hpbGQgdG8gcGFyZW50IHByb2Nlc3MuIik7CisKKyNkZWZpbmUgT1NfRk9SS19NRVRIT0RERUYgICAgXAorICAgIHsiZm9yayIsIChQeUNGdW5jdGlvbilvc19mb3JrLCBNRVRIX05PQVJHUywgb3NfZm9ya19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZm9ya19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZm9yayhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19mb3JrX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9GT1JLKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYKQorCitQeURvY19TVFJWQVIob3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9fZG9jX18sCisic2NoZWRfZ2V0X3ByaW9yaXR5X21heCgkbW9kdWxlLCAvLCBwb2xpY3kpXG4iCisiLS1cbiIKKyJcbiIKKyJHZXQgdGhlIG1heGltdW0gc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgcG9saWN5LiIpOworCisjZGVmaW5lIE9TX1NDSEVEX0dFVF9QUklPUklUWV9NQVhfTUVUSE9EREVGICAgIFwKKyAgICB7InNjaGVkX2dldF9wcmlvcml0eV9tYXgiLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3NjaGVkX2dldF9wcmlvcml0eV9tYXhfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX2dldF9wcmlvcml0eV9tYXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgcG9saWN5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX2dldF9wcmlvcml0eV9tYXgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwb2xpY3kiLCBOVUxMfTsKKyAgICBpbnQgcG9saWN5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IiwgX2tleXdvcmRzLAorICAgICAgICAmcG9saWN5KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX2dldF9wcmlvcml0eV9tYXhfaW1wbChtb2R1bGUsIHBvbGljeSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfR0VUX1BSSU9SSVRZX01BWCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfR0VUX1BSSU9SSVRZX01BWCkKKworUHlEb2NfU1RSVkFSKG9zX3NjaGVkX2dldF9wcmlvcml0eV9taW5fX2RvY19fLAorInNjaGVkX2dldF9wcmlvcml0eV9taW4oJG1vZHVsZSwgLywgcG9saWN5KVxuIgorIi0tXG4iCisiXG4iCisiR2V0IHRoZSBtaW5pbXVtIHNjaGVkdWxpbmcgcHJpb3JpdHkgZm9yIHBvbGljeS4iKTsKKworI2RlZmluZSBPU19TQ0hFRF9HRVRfUFJJT1JJVFlfTUlOX01FVEhPRERFRiAgICBcCisgICAgeyJzY2hlZF9nZXRfcHJpb3JpdHlfbWluIiwgKFB5Q0Z1bmN0aW9uKW9zX3NjaGVkX2dldF9wcmlvcml0eV9taW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHBvbGljeSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicG9saWN5IiwgTlVMTH07CisgICAgaW50IHBvbGljeTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6c2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIF9rZXl3b3JkcywKKyAgICAgICAgJnBvbGljeSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX2ltcGwobW9kdWxlLCBwb2xpY3kpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVgpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUikKKworUHlEb2NfU1RSVkFSKG9zX3NjaGVkX2dldHNjaGVkdWxlcl9fZG9jX18sCisic2NoZWRfZ2V0c2NoZWR1bGVyKCRtb2R1bGUsIHBpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIkdldCB0aGUgc2NoZWR1bGluZyBwb2xpY3kgZm9yIHRoZSBwcm9jZXNzIGlkZW50aWZpZWR5IGJ5IHBpZC5cbiIKKyJcbiIKKyJQYXNzaW5nIDAgZm9yIHBpZCByZXR1cm5zIHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIGNhbGxpbmcgcHJvY2Vzcy4iKTsKKworI2RlZmluZSBPU19TQ0hFRF9HRVRTQ0hFRFVMRVJfTUVUSE9EREVGICAgIFwKKyAgICB7InNjaGVkX2dldHNjaGVkdWxlciIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRzY2hlZHVsZXIsIE1FVEhfTywgb3Nfc2NoZWRfZ2V0c2NoZWR1bGVyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF9nZXRzY2hlZHVsZXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfZ2V0c2NoZWR1bGVyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRzY2hlZHVsZXIiLCAmcGlkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX2dldHNjaGVkdWxlcl9pbXBsKG1vZHVsZSwgcGlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgKGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpIHx8IGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRQQVJBTSkpCisKK1B5RG9jX1NUUlZBUihvc19zY2hlZF9wYXJhbV9fZG9jX18sCisic2NoZWRfcGFyYW0oc2NoZWRfcHJpb3JpdHkpXG4iCisiLS1cbiIKKyJcbiIKKyJDdXJyZW50IGhhcyBvbmx5IG9uZSBmaWVsZDogc2NoZWRfcHJpb3JpdHlcIik7XG4iCisiXG4iCisiICBzY2hlZF9wcmlvcml0eVxuIgorIiAgICBBIHNjaGVkdWxpbmcgcGFyYW1ldGVyLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfcGFyYW1faW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpzY2hlZF9wcmlvcml0eSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF9wYXJhbShQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2NoZWRfcHJpb3JpdHkiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc2NoZWRfcHJpb3JpdHk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOnNjaGVkX3BhcmFtIiwgX2tleXdvcmRzLAorICAgICAgICAmc2NoZWRfcHJpb3JpdHkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfcGFyYW1faW1wbCh0eXBlLCBzY2hlZF9wcmlvcml0eSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiAoZGVmaW5lZChIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUikgfHwgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUU0NIRURVTEVSKQorCitQeURvY19TVFJWQVIob3Nfc2NoZWRfc2V0c2NoZWR1bGVyX19kb2NfXywKKyJzY2hlZF9zZXRzY2hlZHVsZXIoJG1vZHVsZSwgcGlkLCBwb2xpY3ksIHBhcmFtLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQuXG4iCisiXG4iCisiSWYgcGlkIGlzIDAsIHRoZSBjYWxsaW5nIHByb2Nlc3MgaXMgY2hhbmdlZC5cbiIKKyJwYXJhbSBpcyBhbiBpbnN0YW5jZSBvZiBzY2hlZF9wYXJhbS4iKTsKKworI2RlZmluZSBPU19TQ0hFRF9TRVRTQ0hFRFVMRVJfTUVUSE9EREVGICAgIFwKKyAgICB7InNjaGVkX3NldHNjaGVkdWxlciIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9zZXRzY2hlZHVsZXIsIE1FVEhfVkFSQVJHUywgb3Nfc2NoZWRfc2V0c2NoZWR1bGVyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF9zZXRzY2hlZHVsZXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsIGludCBwb2xpY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKnBhcmFtKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX3NldHNjaGVkdWxlcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBwaWRfdCBwaWQ7CisgICAgaW50IHBvbGljeTsKKyAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAiaU8mOnNjaGVkX3NldHNjaGVkdWxlciIsCisgICAgICAgICZwaWQsICZwb2xpY3ksIGNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9zZXRzY2hlZHVsZXJfaW1wbChtb2R1bGUsIHBpZCwgcG9saWN5LCAmcGFyYW0pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUUEFSQU0pCisKK1B5RG9jX1NUUlZBUihvc19zY2hlZF9nZXRwYXJhbV9fZG9jX18sCisic2NoZWRfZ2V0cGFyYW0oJG1vZHVsZSwgcGlkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgZm9yIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLlxuIgorIlxuIgorIklmIHBpZCBpcyAwLCByZXR1cm5zIHBhcmFtZXRlcnMgZm9yIHRoZSBjYWxsaW5nIHByb2Nlc3MuXG4iCisiUmV0dXJuIHZhbHVlIGlzIGFuIGluc3RhbmNlIG9mIHNjaGVkX3BhcmFtLiIpOworCisjZGVmaW5lIE9TX1NDSEVEX0dFVFBBUkFNX01FVEhPRERFRiAgICBcCisgICAgeyJzY2hlZF9nZXRwYXJhbSIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRwYXJhbSwgTUVUSF9PLCBvc19zY2hlZF9nZXRwYXJhbV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfZ2V0cGFyYW1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfZ2V0cGFyYW0oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBwaWRfdCBwaWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHBhcmFtIiwgJnBpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRwYXJhbV9pbXBsKG1vZHVsZSwgcGlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRQQVJBTSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUUEFSQU0pCisKK1B5RG9jX1NUUlZBUihvc19zY2hlZF9zZXRwYXJhbV9fZG9jX18sCisic2NoZWRfc2V0cGFyYW0oJG1vZHVsZSwgcGlkLCBwYXJhbSwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgZm9yIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLlxuIgorIlxuIgorIklmIHBpZCBpcyAwLCBzZXRzIHBhcmFtZXRlcnMgZm9yIHRoZSBjYWxsaW5nIHByb2Nlc3MuXG4iCisicGFyYW0gc2hvdWxkIGJlIGFuIGluc3RhbmNlIG9mIHNjaGVkX3BhcmFtLiIpOworCisjZGVmaW5lIE9TX1NDSEVEX1NFVFBBUkFNX01FVEhPRERFRiAgICBcCisgICAgeyJzY2hlZF9zZXRwYXJhbSIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9zZXRwYXJhbSwgTUVUSF9WQVJBUkdTLCBvc19zY2hlZF9zZXRwYXJhbV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfc2V0cGFyYW1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsCisgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY2hlZF9wYXJhbSAqcGFyYW0pOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfc2V0cGFyYW0oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJPJjpzY2hlZF9zZXRwYXJhbSIsCisgICAgICAgICZwaWQsIGNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9zZXRwYXJhbV9pbXBsKG1vZHVsZSwgcGlkLCAmcGFyYW0pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9SUl9HRVRfSU5URVJWQUwpCisKK1B5RG9jX1NUUlZBUihvc19zY2hlZF9ycl9nZXRfaW50ZXJ2YWxfX2RvY19fLAorInNjaGVkX3JyX2dldF9pbnRlcnZhbCgkbW9kdWxlLCBwaWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHJvdW5kLXJvYmluIHF1YW50dW0gZm9yIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLCBpbiBzZWNvbmRzLlxuIgorIlxuIgorIlZhbHVlIHJldHVybmVkIGlzIGEgZmxvYXQuIik7CisKKyNkZWZpbmUgT1NfU0NIRURfUlJfR0VUX0lOVEVSVkFMX01FVEhPRERFRiAgICBcCisgICAgeyJzY2hlZF9ycl9nZXRfaW50ZXJ2YWwiLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfcnJfZ2V0X2ludGVydmFsLCBNRVRIX08sIG9zX3NjaGVkX3JyX2dldF9pbnRlcnZhbF9fZG9jX199LAorCitzdGF0aWMgZG91YmxlCitvc19zY2hlZF9ycl9nZXRfaW50ZXJ2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfcnJfZ2V0X2ludGVydmFsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworICAgIGRvdWJsZSBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9ycl9nZXRfaW50ZXJ2YWwiLCAmcGlkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9ycl9nZXRfaW50ZXJ2YWxfaW1wbChtb2R1bGUsIHBpZCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xLjApICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUZsb2F0X0Zyb21Eb3VibGUoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfUlJfR0VUX0lOVEVSVkFMKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX0gpCisKK1B5RG9jX1NUUlZBUihvc19zY2hlZF95aWVsZF9fZG9jX18sCisic2NoZWRfeWllbGQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlZvbHVudGFyaWx5IHJlbGlucXVpc2ggdGhlIENQVS4iKTsKKworI2RlZmluZSBPU19TQ0hFRF9ZSUVMRF9NRVRIT0RERUYgICAgXAorICAgIHsic2NoZWRfeWllbGQiLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfeWllbGQsIE1FVEhfTk9BUkdTLCBvc19zY2hlZF95aWVsZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfeWllbGRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX3lpZWxkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX3NjaGVkX3lpZWxkX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRBRkZJTklUWSkKKworUHlEb2NfU1RSVkFSKG9zX3NjaGVkX3NldGFmZmluaXR5X19kb2NfXywKKyJzY2hlZF9zZXRhZmZpbml0eSgkbW9kdWxlLCBwaWQsIG1hc2ssIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIENQVSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZCB0byBtYXNrLlxuIgorIlxuIgorIm1hc2sgc2hvdWxkIGJlIGFuIGl0ZXJhYmxlIG9mIGludGVnZXJzIGlkZW50aWZ5aW5nIENQVXMuIik7CisKKyNkZWZpbmUgT1NfU0NIRURfU0VUQUZGSU5JVFlfTUVUSE9EREVGICAgIFwKKyAgICB7InNjaGVkX3NldGFmZmluaXR5IiwgKFB5Q0Z1bmN0aW9uKW9zX3NjaGVkX3NldGFmZmluaXR5LCBNRVRIX1ZBUkFSR1MsIG9zX3NjaGVkX3NldGFmZmluaXR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF9zZXRhZmZpbml0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCwgUHlPYmplY3QgKm1hc2spOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfc2V0YWZmaW5pdHkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworICAgIFB5T2JqZWN0ICptYXNrOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgIk86c2NoZWRfc2V0YWZmaW5pdHkiLAorICAgICAgICAmcGlkLCAmbWFzaykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9zZXRhZmZpbml0eV9pbXBsKG1vZHVsZSwgcGlkLCBtYXNrKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRBRkZJTklUWSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUQUZGSU5JVFkpCisKK1B5RG9jX1NUUlZBUihvc19zY2hlZF9nZXRhZmZpbml0eV9fZG9jX18sCisic2NoZWRfZ2V0YWZmaW5pdHkoJG1vZHVsZSwgcGlkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZC5cbiIKKyJcbiIKKyJUaGUgYWZmaW5pdHkgaXMgcmV0dXJuZWQgYXMgYSBzZXQgb2YgQ1BVIGlkZW50aWZpZXJzLiIpOworCisjZGVmaW5lIE9TX1NDSEVEX0dFVEFGRklOSVRZX01FVEhPRERFRiAgICBcCisgICAgeyJzY2hlZF9nZXRhZmZpbml0eSIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRhZmZpbml0eSwgTUVUSF9PLCBvc19zY2hlZF9nZXRhZmZpbml0eV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfZ2V0YWZmaW5pdHlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfZ2V0YWZmaW5pdHkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBwaWRfdCBwaWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldGFmZmluaXR5IiwgJnBpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRhZmZpbml0eV9pbXBsKG1vZHVsZSwgcGlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRBRkZJTklUWSkgKi8KKworI2lmIChkZWZpbmVkKEhBVkVfT1BFTlBUWSkgfHwgZGVmaW5lZChIQVZFX19HRVRQVFkpIHx8IGRlZmluZWQoSEFWRV9ERVZfUFRNWCkpCisKK1B5RG9jX1NUUlZBUihvc19vcGVucHR5X19kb2NfXywKKyJvcGVucHR5KCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJPcGVuIGEgcHNldWRvLXRlcm1pbmFsLlxuIgorIlxuIgorIlJldHVybiBhIHR1cGxlIG9mIChtYXN0ZXJfZmQsIHNsYXZlX2ZkKSBjb250YWluaW5nIG9wZW4gZmlsZSBkZXNjcmlwdG9yc1xuIgorImZvciBib3RoIHRoZSBtYXN0ZXIgYW5kIHNsYXZlIGVuZHMuIik7CisKKyNkZWZpbmUgT1NfT1BFTlBUWV9NRVRIT0RERUYgICAgXAorICAgIHsib3BlbnB0eSIsIChQeUNGdW5jdGlvbilvc19vcGVucHR5LCBNRVRIX05PQVJHUywgb3Nfb3BlbnB0eV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfb3BlbnB0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfb3BlbnB0eShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19vcGVucHR5X2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfT1BFTlBUWSkgfHwgZGVmaW5lZChIQVZFX19HRVRQVFkpIHx8IGRlZmluZWQoSEFWRV9ERVZfUFRNWCkpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfRk9SS1BUWSkKKworUHlEb2NfU1RSVkFSKG9zX2ZvcmtwdHlfX2RvY19fLAorImZvcmtwdHkoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkZvcmsgYSBuZXcgcHJvY2VzcyB3aXRoIGEgbmV3IHBzZXVkby10ZXJtaW5hbCBhcyBjb250cm9sbGluZyB0dHkuXG4iCisiXG4iCisiUmV0dXJucyBhIHR1cGxlIG9mIChwaWQsIG1hc3Rlcl9mZCkuXG4iCisiTGlrZSBmb3JrKCksIHJldHVybiBwaWQgb2YgMCB0byB0aGUgY2hpbGQgcHJvY2VzcyxcbiIKKyJhbmQgcGlkIG9mIGNoaWxkIHRvIHRoZSBwYXJlbnQgcHJvY2Vzcy5cbiIKKyJUbyBib3RoLCByZXR1cm4gZmQgb2YgbmV3bHkgb3BlbmVkIHBzZXVkby10ZXJtaW5hbC4iKTsKKworI2RlZmluZSBPU19GT1JLUFRZX01FVEhPRERFRiAgICBcCisgICAgeyJmb3JrcHR5IiwgKFB5Q0Z1bmN0aW9uKW9zX2ZvcmtwdHksIE1FVEhfTk9BUkdTLCBvc19mb3JrcHR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mb3JrcHR5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mb3JrcHR5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2ZvcmtwdHlfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0ZPUktQVFkpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VURUdJRCkKKworUHlEb2NfU1RSVkFSKG9zX2dldGVnaWRfX2RvY19fLAorImdldGVnaWQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzXCdzIGVmZmVjdGl2ZSBncm91cCBpZC4iKTsKKworI2RlZmluZSBPU19HRVRFR0lEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRlZ2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldGVnaWQsIE1FVEhfTk9BUkdTLCBvc19nZXRlZ2lkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRlZ2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRlZ2lkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2dldGVnaWRfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVEVHSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VURVVJRCkKKworUHlEb2NfU1RSVkFSKG9zX2dldGV1aWRfX2RvY19fLAorImdldGV1aWQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzXCdzIGVmZmVjdGl2ZSB1c2VyIGlkLiIpOworCisjZGVmaW5lIE9TX0dFVEVVSURfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGV1aWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0ZXVpZCwgTUVUSF9OT0FSR1MsIG9zX2dldGV1aWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGV1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGV1aWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZ2V0ZXVpZF9pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VURVVJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9HRVRHSUQpCisKK1B5RG9jX1NUUlZBUihvc19nZXRnaWRfX2RvY19fLAorImdldGdpZCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3NcJ3MgZ3JvdXAgaWQuIik7CisKKyNkZWZpbmUgT1NfR0VUR0lEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRnaWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0Z2lkLCBNRVRIX05PQVJHUywgb3NfZ2V0Z2lkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGdpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRnaWRfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVEdJRCkgKi8KKworUHlEb2NfU1RSVkFSKG9zX2dldHBpZF9fZG9jX18sCisiZ2V0cGlkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcyBpZC4iKTsKKworI2RlZmluZSBPU19HRVRQSURfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHBpZCIsIChQeUNGdW5jdGlvbilvc19nZXRwaWQsIE1FVEhfTk9BUkdTLCBvc19nZXRwaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHBpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cGlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2dldHBpZF9pbXBsKG1vZHVsZSk7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUR1JPVVBTKQorCitQeURvY19TVFJWQVIob3NfZ2V0Z3JvdXBzX19kb2NfXywKKyJnZXRncm91cHMoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBsaXN0IG9mIHN1cHBsZW1lbnRhbCBncm91cCBJRHMgZm9yIHRoZSBwcm9jZXNzLiIpOworCisjZGVmaW5lIE9TX0dFVEdST1VQU19NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0Z3JvdXBzIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldGdyb3VwcywgTUVUSF9OT0FSR1MsIG9zX2dldGdyb3Vwc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0Z3JvdXBzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRncm91cHMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZ2V0Z3JvdXBzX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRHUk9VUFMpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUUEdJRCkKKworUHlEb2NfU1RSVkFSKG9zX2dldHBnaWRfX2RvY19fLAorImdldHBnaWQoJG1vZHVsZSwgLywgcGlkKVxuIgorIi0tXG4iCisiXG4iCisiQ2FsbCB0aGUgc3lzdGVtIGNhbGwgZ2V0cGdpZCgpLCBhbmQgcmV0dXJuIHRoZSByZXN1bHQuIik7CisKKyNkZWZpbmUgT1NfR0VUUEdJRF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cGdpZCIsIChQeUNGdW5jdGlvbilvc19nZXRwZ2lkLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZ2V0cGdpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cGdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRwZ2lkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGlkIiwgTlVMTH07CisgICAgcGlkX3QgcGlkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBfUHlfUEFSU0VfUElEICI6Z2V0cGdpZCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnBpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19nZXRwZ2lkX2ltcGwobW9kdWxlLCBwaWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUUEdJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9HRVRQR1JQKQorCitQeURvY19TVFJWQVIob3NfZ2V0cGdycF9fZG9jX18sCisiZ2V0cGdycCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MgZ3JvdXAgaWQuIik7CisKKyNkZWZpbmUgT1NfR0VUUEdSUF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cGdycCIsIChQeUNGdW5jdGlvbilvc19nZXRwZ3JwLCBNRVRIX05PQVJHUywgb3NfZ2V0cGdycF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cGdycF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cGdycChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRwZ3JwX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRQR1JQKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVFBHUlApCisKK1B5RG9jX1NUUlZBUihvc19zZXRwZ3JwX19kb2NfXywKKyJzZXRwZ3JwKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJNYWtlIHRoZSBjdXJyZW50IHByb2Nlc3MgdGhlIGxlYWRlciBvZiBpdHMgcHJvY2VzcyBncm91cC4iKTsKKworI2RlZmluZSBPU19TRVRQR1JQX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRwZ3JwIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHBncnAsIE1FVEhfTk9BUkdTLCBvc19zZXRwZ3JwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRwZ3JwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRwZ3JwKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX3NldHBncnBfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVFBHUlApICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUUFBJRCkKKworUHlEb2NfU1RSVkFSKG9zX2dldHBwaWRfX2RvY19fLAorImdldHBwaWQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgcGFyZW50XCdzIHByb2Nlc3MgaWQuXG4iCisiXG4iCisiSWYgdGhlIHBhcmVudCBwcm9jZXNzIGhhcyBhbHJlYWR5IGV4aXRlZCwgV2luZG93cyBtYWNoaW5lcyB3aWxsIHN0aWxsXG4iCisicmV0dXJuIGl0cyBpZDsgb3RoZXJzIHN5c3RlbXMgd2lsbCByZXR1cm4gdGhlIGlkIG9mIHRoZSBcJ2luaXRcJyBwcm9jZXNzICgxKS4iKTsKKworI2RlZmluZSBPU19HRVRQUElEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRwcGlkIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHBwaWQsIE1FVEhfTk9BUkdTLCBvc19nZXRwcGlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRwcGlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRwcGlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2dldHBwaWRfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFBQSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUTE9HSU4pCisKK1B5RG9jX1NUUlZBUihvc19nZXRsb2dpbl9fZG9jX18sCisiZ2V0bG9naW4oJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgYWN0dWFsIGxvZ2luIG5hbWUuIik7CisKKyNkZWZpbmUgT1NfR0VUTE9HSU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGxvZ2luIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldGxvZ2luLCBNRVRIX05PQVJHUywgb3NfZ2V0bG9naW5fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGxvZ2luX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRsb2dpbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRsb2dpbl9pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUTE9HSU4pICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUVUlEKQorCitQeURvY19TVFJWQVIob3NfZ2V0dWlkX19kb2NfXywKKyJnZXR1aWQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzXCdzIHVzZXIgaWQuIik7CisKKyNkZWZpbmUgT1NfR0VUVUlEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXR1aWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0dWlkLCBNRVRIX05PQVJHUywgb3NfZ2V0dWlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXR1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHVpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXR1aWRfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFVJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9LSUxMKQorCitQeURvY19TVFJWQVIob3Nfa2lsbF9fZG9jX18sCisia2lsbCgkbW9kdWxlLCBwaWQsIHNpZ25hbCwgLylcbiIKKyItLVxuIgorIlxuIgorIktpbGwgYSBwcm9jZXNzIHdpdGggYSBzaWduYWwuIik7CisKKyNkZWZpbmUgT1NfS0lMTF9NRVRIT0RERUYgICAgXAorICAgIHsia2lsbCIsIChQeUNGdW5jdGlvbilvc19raWxsLCBNRVRIX1ZBUkFSR1MsIG9zX2tpbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2tpbGxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsIFB5X3NzaXplX3Qgc2lnbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2tpbGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworICAgIFB5X3NzaXplX3Qgc2lnbmFsOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgIm46a2lsbCIsCisgICAgICAgICZwaWQsICZzaWduYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfa2lsbF9pbXBsKG1vZHVsZSwgcGlkLCBzaWduYWwpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfS0lMTCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9LSUxMUEcpCisKK1B5RG9jX1NUUlZBUihvc19raWxscGdfX2RvY19fLAorImtpbGxwZygkbW9kdWxlLCBwZ2lkLCBzaWduYWwsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJLaWxsIGEgcHJvY2VzcyBncm91cCB3aXRoIGEgc2lnbmFsLiIpOworCisjZGVmaW5lIE9TX0tJTExQR19NRVRIT0RERUYgICAgXAorICAgIHsia2lsbHBnIiwgKFB5Q0Z1bmN0aW9uKW9zX2tpbGxwZywgTUVUSF9WQVJBUkdTLCBvc19raWxscGdfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2tpbGxwZ19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBnaWQsIGludCBzaWduYWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfa2lsbHBnKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHBpZF90IHBnaWQ7CisgICAgaW50IHNpZ25hbDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJpOmtpbGxwZyIsCisgICAgICAgICZwZ2lkLCAmc2lnbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2tpbGxwZ19pbXBsKG1vZHVsZSwgcGdpZCwgc2lnbmFsKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0tJTExQRykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9QTE9DSykKKworUHlEb2NfU1RSVkFSKG9zX3Bsb2NrX19kb2NfXywKKyJwbG9jaygkbW9kdWxlLCBvcCwgLylcbiIKKyItLVxuIgorIlxuIgorIkxvY2sgcHJvZ3JhbSBzZWdtZW50cyBpbnRvIG1lbW9yeS5cIik7Iik7CisKKyNkZWZpbmUgT1NfUExPQ0tfTUVUSE9EREVGICAgIFwKKyAgICB7InBsb2NrIiwgKFB5Q0Z1bmN0aW9uKW9zX3Bsb2NrLCBNRVRIX08sIG9zX3Bsb2NrX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wbG9ja19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBvcCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wbG9jayhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBvcDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpwbG9jayIsICZvcCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19wbG9ja19pbXBsKG1vZHVsZSwgb3ApOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfUExPQ0spICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0VUVUlEKQorCitQeURvY19TVFJWQVIob3Nfc2V0dWlkX19kb2NfXywKKyJzZXR1aWQoJG1vZHVsZSwgdWlkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBjdXJyZW50IHByb2Nlc3NcJ3MgdXNlciBpZC4iKTsKKworI2RlZmluZSBPU19TRVRVSURfTUVUSE9EREVGICAgIFwKKyAgICB7InNldHVpZCIsIChQeUNGdW5jdGlvbilvc19zZXR1aWQsIE1FVEhfTywgb3Nfc2V0dWlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXR1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCB1aWRfdCB1aWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0dWlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgdWlkX3QgdWlkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXR1aWQiLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zZXR1aWRfaW1wbChtb2R1bGUsIHVpZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TRVRVSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0VURVVJRCkKKworUHlEb2NfU1RSVkFSKG9zX3NldGV1aWRfX2RvY19fLAorInNldGV1aWQoJG1vZHVsZSwgZXVpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgY3VycmVudCBwcm9jZXNzXCdzIGVmZmVjdGl2ZSB1c2VyIGlkLiIpOworCisjZGVmaW5lIE9TX1NFVEVVSURfTUVUSE9EREVGICAgIFwKKyAgICB7InNldGV1aWQiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0ZXVpZCwgTUVUSF9PLCBvc19zZXRldWlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRldWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgdWlkX3QgZXVpZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRldWlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgdWlkX3QgZXVpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0ZXVpZCIsIF9QeV9VaWRfQ29udmVydGVyLCAmZXVpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRldWlkX2ltcGwobW9kdWxlLCBldWlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVEVVSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0VURUdJRCkKKworUHlEb2NfU1RSVkFSKG9zX3NldGVnaWRfX2RvY19fLAorInNldGVnaWQoJG1vZHVsZSwgZWdpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgY3VycmVudCBwcm9jZXNzXCdzIGVmZmVjdGl2ZSBncm91cCBpZC4iKTsKKworI2RlZmluZSBPU19TRVRFR0lEX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRlZ2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldGVnaWQsIE1FVEhfTywgb3Nfc2V0ZWdpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0ZWdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGdpZF90IGVnaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0ZWdpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGdpZF90IGVnaWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldGVnaWQiLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0ZWdpZF9pbXBsKG1vZHVsZSwgZWdpZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TRVRFR0lEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVFJFVUlEKQorCitQeURvY19TVFJWQVIob3Nfc2V0cmV1aWRfX2RvY19fLAorInNldHJldWlkKCRtb2R1bGUsIHJ1aWQsIGV1aWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyByZWFsIGFuZCBlZmZlY3RpdmUgdXNlciBpZHMuIik7CisKKyNkZWZpbmUgT1NfU0VUUkVVSURfTUVUSE9EREVGICAgIFwKKyAgICB7InNldHJldWlkIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHJldWlkLCBNRVRIX1ZBUkFSR1MsIG9zX3NldHJldWlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRyZXVpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHVpZF90IHJ1aWQsIHVpZF90IGV1aWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cmV1aWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgdWlkX3QgcnVpZDsKKyAgICB1aWRfdCBldWlkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mOnNldHJldWlkIiwKKyAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZydWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cmV1aWRfaW1wbChtb2R1bGUsIHJ1aWQsIGV1aWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUUkVVSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0VUUkVHSUQpCisKK1B5RG9jX1NUUlZBUihvc19zZXRyZWdpZF9fZG9jX18sCisic2V0cmVnaWQoJG1vZHVsZSwgcmdpZCwgZWdpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgY3VycmVudCBwcm9jZXNzXCdzIHJlYWwgYW5kIGVmZmVjdGl2ZSBncm91cCBpZHMuIik7CisKKyNkZWZpbmUgT1NfU0VUUkVHSURfTUVUSE9EREVGICAgIFwKKyAgICB7InNldHJlZ2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHJlZ2lkLCBNRVRIX1ZBUkFSR1MsIG9zX3NldHJlZ2lkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRyZWdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGdpZF90IHJnaWQsIGdpZF90IGVnaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cmVnaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgZ2lkX3QgcmdpZDsKKyAgICBnaWRfdCBlZ2lkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mOnNldHJlZ2lkIiwKKyAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZyZ2lkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cmVnaWRfaW1wbChtb2R1bGUsIHJnaWQsIGVnaWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUUkVHSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0VUR0lEKQorCitQeURvY19TVFJWQVIob3Nfc2V0Z2lkX19kb2NfXywKKyJzZXRnaWQoJG1vZHVsZSwgZ2lkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBjdXJyZW50IHByb2Nlc3NcJ3MgZ3JvdXAgaWQuIik7CisKKyNkZWZpbmUgT1NfU0VUR0lEX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRnaWQiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0Z2lkLCBNRVRIX08sIG9zX3NldGdpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0Z2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgZ2lkX3QgZ2lkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldGdpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGdpZF90IGdpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0Z2lkIiwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0Z2lkX2ltcGwobW9kdWxlLCBnaWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUR0lEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVEdST1VQUykKKworUHlEb2NfU1RSVkFSKG9zX3NldGdyb3Vwc19fZG9jX18sCisic2V0Z3JvdXBzKCRtb2R1bGUsIGdyb3VwcywgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgZ3JvdXBzIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MgdG8gbGlzdC4iKTsKKworI2RlZmluZSBPU19TRVRHUk9VUFNfTUVUSE9EREVGICAgIFwKKyAgICB7InNldGdyb3VwcyIsIChQeUNGdW5jdGlvbilvc19zZXRncm91cHMsIE1FVEhfTywgb3Nfc2V0Z3JvdXBzX19kb2NfX30sCisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUR1JPVVBTKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1dBSVQzKQorCitQeURvY19TVFJWQVIob3Nfd2FpdDNfX2RvY19fLAorIndhaXQzKCRtb2R1bGUsIC8sIG9wdGlvbnMpXG4iCisiLS1cbiIKKyJcbiIKKyJXYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgY2hpbGQgcHJvY2Vzcy5cbiIKKyJcbiIKKyJSZXR1cm5zIGEgdHVwbGUgb2YgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNoaWxkIHByb2Nlc3M6XG4iCisiICAocGlkLCBzdGF0dXMsIHJ1c2FnZSkiKTsKKworI2RlZmluZSBPU19XQUlUM19NRVRIT0RERUYgICAgXAorICAgIHsid2FpdDMiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdDMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc193YWl0M19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfd2FpdDNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgb3B0aW9ucyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc193YWl0MyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im9wdGlvbnMiLCBOVUxMfTsKKyAgICBpbnQgb3B0aW9uczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6d2FpdDMiLCBfa2V5d29yZHMsCisgICAgICAgICZvcHRpb25zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXQzX2ltcGwobW9kdWxlLCBvcHRpb25zKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1dBSVQzKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1dBSVQ0KQorCitQeURvY19TVFJWQVIob3Nfd2FpdDRfX2RvY19fLAorIndhaXQ0KCRtb2R1bGUsIC8sIHBpZCwgb3B0aW9ucylcbiIKKyItLVxuIgorIlxuIgorIldhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBzcGVjaWZpYyBjaGlsZCBwcm9jZXNzLlxuIgorIlxuIgorIlJldHVybnMgYSB0dXBsZSBvZiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2hpbGQgcHJvY2VzczpcbiIKKyIgIChwaWQsIHN0YXR1cywgcnVzYWdlKSIpOworCisjZGVmaW5lIE9TX1dBSVQ0X01FVEhPRERFRiAgICBcCisgICAgeyJ3YWl0NCIsIChQeUNGdW5jdGlvbilvc193YWl0NCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3dhaXQ0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc193YWl0NF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCwgaW50IG9wdGlvbnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfd2FpdDQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwaWQiLCAib3B0aW9ucyIsIE5VTEx9OworICAgIHBpZF90IHBpZDsKKyAgICBpbnQgb3B0aW9uczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIiIgX1B5X1BBUlNFX1BJRCAiaTp3YWl0NCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnBpZCwgJm9wdGlvbnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfd2FpdDRfaW1wbChtb2R1bGUsIHBpZCwgb3B0aW9ucyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9XQUlUNCkgKi8KKworI2lmIChkZWZpbmVkKEhBVkVfV0FJVElEKSAmJiAhZGVmaW5lZChfX0FQUExFX18pKQorCitQeURvY19TVFJWQVIob3Nfd2FpdGlkX19kb2NfXywKKyJ3YWl0aWQoJG1vZHVsZSwgaWR0eXBlLCBpZCwgb3B0aW9ucywgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIHJlc3VsdCBvZiB3YWl0aW5nIGZvciBhIHByb2Nlc3Mgb3IgcHJvY2Vzc2VzLlxuIgorIlxuIgorIiAgaWR0eXBlXG4iCisiICAgIE11c3QgYmUgb25lIG9mIGJlIFBfUElELCBQX1BHSUQgb3IgUF9BTEwuXG4iCisiICBpZFxuIgorIiAgICBUaGUgaWQgdG8gd2FpdCBvbi5cbiIKKyIgIG9wdGlvbnNcbiIKKyIgICAgQ29uc3RydWN0ZWQgZnJvbSB0aGUgT1Jpbmcgb2Ygb25lIG9yIG1vcmUgb2YgV0VYSVRFRCwgV1NUT1BQRURcbiIKKyIgICAgb3IgV0NPTlRJTlVFRCBhbmQgYWRkaXRpb25hbGx5IG1heSBiZSBPUmVkIHdpdGggV05PSEFORyBvciBXTk9XQUlULlxuIgorIlxuIgorIlJldHVybnMgZWl0aGVyIHdhaXRpZF9yZXN1bHQgb3IgTm9uZSBpZiBXTk9IQU5HIGlzIHNwZWNpZmllZCBhbmQgdGhlcmUgYXJlXG4iCisibm8gY2hpbGRyZW4gaW4gYSB3YWl0YWJsZSBzdGF0ZS4iKTsKKworI2RlZmluZSBPU19XQUlUSURfTUVUSE9EREVGICAgIFwKKyAgICB7IndhaXRpZCIsIChQeUNGdW5jdGlvbilvc193YWl0aWQsIE1FVEhfVkFSQVJHUywgb3Nfd2FpdGlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc193YWl0aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpZHR5cGVfdCBpZHR5cGUsIGlkX3QgaWQsIGludCBvcHRpb25zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dhaXRpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpZHR5cGVfdCBpZHR5cGU7CisgICAgaWRfdCBpZDsKKyAgICBpbnQgb3B0aW9uczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIgX1B5X1BBUlNFX1BJRCAiaTp3YWl0aWQiLAorICAgICAgICAmaWR0eXBlLCAmaWQsICZvcHRpb25zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXRpZF9pbXBsKG1vZHVsZSwgaWR0eXBlLCBpZCwgb3B0aW9ucyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfV0FJVElEKSAmJiAhZGVmaW5lZChfX0FQUExFX18pKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1dBSVRQSUQpCisKK1B5RG9jX1NUUlZBUihvc193YWl0cGlkX19kb2NfXywKKyJ3YWl0cGlkKCRtb2R1bGUsIHBpZCwgb3B0aW9ucywgLylcbiIKKyItLVxuIgorIlxuIgorIldhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBnaXZlbiBjaGlsZCBwcm9jZXNzLlxuIgorIlxuIgorIlJldHVybnMgYSB0dXBsZSBvZiBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIGNoaWxkIHByb2Nlc3M6XG4iCisiICAgIChwaWQsIHN0YXR1cylcbiIKKyJcbiIKKyJUaGUgb3B0aW9ucyBhcmd1bWVudCBpcyBpZ25vcmVkIG9uIFdpbmRvd3MuIik7CisKKyNkZWZpbmUgT1NfV0FJVFBJRF9NRVRIT0RERUYgICAgXAorICAgIHsid2FpdHBpZCIsIChQeUNGdW5jdGlvbilvc193YWl0cGlkLCBNRVRIX1ZBUkFSR1MsIG9zX3dhaXRwaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dhaXRwaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsIGludCBvcHRpb25zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dhaXRwaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworICAgIGludCBvcHRpb25zOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgImk6d2FpdHBpZCIsCisgICAgICAgICZwaWQsICZvcHRpb25zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXRwaWRfaW1wbChtb2R1bGUsIHBpZCwgb3B0aW9ucyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9XQUlUUElEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0NXQUlUKQorCitQeURvY19TVFJWQVIob3Nfd2FpdHBpZF9fZG9jX18sCisid2FpdHBpZCgkbW9kdWxlLCBwaWQsIG9wdGlvbnMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgZ2l2ZW4gcHJvY2Vzcy5cbiIKKyJcbiIKKyJSZXR1cm5zIGEgdHVwbGUgb2YgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSBwcm9jZXNzOlxuIgorIiAgICAocGlkLCBzdGF0dXMgPDwgOClcbiIKKyJcbiIKKyJUaGUgb3B0aW9ucyBhcmd1bWVudCBpcyBpZ25vcmVkIG9uIFdpbmRvd3MuIik7CisKKyNkZWZpbmUgT1NfV0FJVFBJRF9NRVRIT0RERUYgICAgXAorICAgIHsid2FpdHBpZCIsIChQeUNGdW5jdGlvbilvc193YWl0cGlkLCBNRVRIX1ZBUkFSR1MsIG9zX3dhaXRwaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dhaXRwaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9pbnRwdHJfdCBwaWQsIGludCBvcHRpb25zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dhaXRwaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfaW50cHRyX3QgcGlkOworICAgIGludCBvcHRpb25zOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9JTlRQVFIgImk6d2FpdHBpZCIsCisgICAgICAgICZwaWQsICZvcHRpb25zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXRwaWRfaW1wbChtb2R1bGUsIHBpZCwgb3B0aW9ucyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9DV0FJVCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9XQUlUKQorCitQeURvY19TVFJWQVIob3Nfd2FpdF9fZG9jX18sCisid2FpdCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV2FpdCBmb3IgY29tcGxldGlvbiBvZiBhIGNoaWxkIHByb2Nlc3MuXG4iCisiXG4iCisiUmV0dXJucyBhIHR1cGxlIG9mIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjaGlsZCBwcm9jZXNzOlxuIgorIiAgICAocGlkLCBzdGF0dXMpIik7CisKKyNkZWZpbmUgT1NfV0FJVF9NRVRIT0RERUYgICAgXAorICAgIHsid2FpdCIsIChQeUNGdW5jdGlvbilvc193YWl0LCBNRVRIX05PQVJHUywgb3Nfd2FpdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfd2FpdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfd2FpdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc193YWl0X2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9XQUlUKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NZTUxJTkspCisKK1B5RG9jX1NUUlZBUihvc19zeW1saW5rX19kb2NfXywKKyJzeW1saW5rKCRtb2R1bGUsIC8sIHNyYywgZHN0LCB0YXJnZXRfaXNfZGlyZWN0b3J5PUZhbHNlLCAqLCBkaXJfZmQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIkNyZWF0ZSBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdG8gc3JjIG5hbWVkIGRzdC5cbiIKKyJcbiIKKyJ0YXJnZXRfaXNfZGlyZWN0b3J5IGlzIHJlcXVpcmVkIG9uIFdpbmRvd3MgaWYgdGhlIHRhcmdldCBpcyB0byBiZVxuIgorIiAgaW50ZXJwcmV0ZWQgYXMgYSBkaXJlY3RvcnkuICAoT24gV2luZG93cywgc3ltbGluayByZXF1aXJlc1xuIgorIiAgV2luZG93cyA2LjAgb3IgZ3JlYXRlciwgYW5kIHJhaXNlcyBhIE5vdEltcGxlbWVudGVkRXJyb3Igb3RoZXJ3aXNlLilcbiIKKyIgIHRhcmdldF9pc19kaXJlY3RvcnkgaXMgaWdub3JlZCBvbiBub24tV2luZG93cyBwbGF0Zm9ybXMuXG4iCisiXG4iCisiSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcbiIKKyIgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG4iCisiZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cbiIKKyIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworI2RlZmluZSBPU19TWU1MSU5LX01FVEhPRERFRiAgICBcCisgICAgeyJzeW1saW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5bWxpbmssIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zeW1saW5rX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zeW1saW5rX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LAorICAgICAgICAgICAgICAgIGludCB0YXJnZXRfaXNfZGlyZWN0b3J5LCBpbnQgZGlyX2ZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N5bWxpbmsoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInRhcmdldF9pc19kaXJlY3RvcnkiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHNyYyA9IFBBVEhfVF9JTklUSUFMSVpFKCJzeW1saW5rIiwgInNyYyIsIDAsIDApOworICAgIHBhdGhfdCBkc3QgPSBQQVRIX1RfSU5JVElBTElaRSgic3ltbGluayIsICJkc3QiLCAwLCAwKTsKKyAgICBpbnQgdGFyZ2V0X2lzX2RpcmVjdG9yeSA9IDA7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnxwJE8mOnN5bWxpbmsiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgJnRhcmdldF9pc19kaXJlY3RvcnksIFNZTUxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3N5bWxpbmtfaW1wbChtb2R1bGUsICZzcmMsICZkc3QsIHRhcmdldF9pc19kaXJlY3RvcnksIGRpcl9mZCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Igc3JjICovCisgICAgcGF0aF9jbGVhbnVwKCZzcmMpOworICAgIC8qIENsZWFudXAgZm9yIGRzdCAqLworICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lNTElOSykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9USU1FUykKKworUHlEb2NfU1RSVkFSKG9zX3RpbWVzX19kb2NfXywKKyJ0aW1lcygkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgY29sbGVjdGlvbiBjb250YWluaW5nIHByb2Nlc3MgdGltaW5nIGluZm9ybWF0aW9uLlxuIgorIlxuIgorIlRoZSBvYmplY3QgcmV0dXJuZWQgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGVzZSBmaWVsZHM6XG4iCisiICAodXRpbWUsIHN0aW1lLCBjdXRpbWUsIGNzdGltZSwgZWxhcHNlZF90aW1lKVxuIgorIkFsbCBmaWVsZHMgYXJlIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIik7CisKKyNkZWZpbmUgT1NfVElNRVNfTUVUSE9EREVGICAgIFwKKyAgICB7InRpbWVzIiwgKFB5Q0Z1bmN0aW9uKW9zX3RpbWVzLCBNRVRIX05PQVJHUywgb3NfdGltZXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3RpbWVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc190aW1lcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc190aW1lc19pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfVElNRVMpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUU0lEKQorCitQeURvY19TVFJWQVIob3NfZ2V0c2lkX19kb2NfXywKKyJnZXRzaWQoJG1vZHVsZSwgcGlkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ2FsbCB0aGUgc3lzdGVtIGNhbGwgZ2V0c2lkKHBpZCkgYW5kIHJldHVybiB0aGUgcmVzdWx0LiIpOworCisjZGVmaW5lIE9TX0dFVFNJRF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0c2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHNpZCwgTUVUSF9PLCBvc19nZXRzaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHNpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRzaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBwaWRfdCBwaWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOmdldHNpZCIsICZwaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0c2lkX2ltcGwobW9kdWxlLCBwaWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUU0lEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVFNJRCkKKworUHlEb2NfU1RSVkFSKG9zX3NldHNpZF9fZG9jX18sCisic2V0c2lkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDYWxsIHRoZSBzeXN0ZW0gY2FsbCBzZXRzaWQoKS4iKTsKKworI2RlZmluZSBPU19TRVRTSURfTUVUSE9EREVGICAgIFwKKyAgICB7InNldHNpZCIsIChQeUNGdW5jdGlvbilvc19zZXRzaWQsIE1FVEhfTk9BUkdTLCBvc19zZXRzaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHNpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0c2lkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX3NldHNpZF9pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUU0lEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVFBHSUQpCisKK1B5RG9jX1NUUlZBUihvc19zZXRwZ2lkX19kb2NfXywKKyJzZXRwZ2lkKCRtb2R1bGUsIHBpZCwgcGdycCwgLylcbiIKKyItLVxuIgorIlxuIgorIkNhbGwgdGhlIHN5c3RlbSBjYWxsIHNldHBnaWQocGlkLCBwZ3JwKS4iKTsKKworI2RlZmluZSBPU19TRVRQR0lEX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRwZ2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHBnaWQsIE1FVEhfVkFSQVJHUywgb3Nfc2V0cGdpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cGdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCwgcGlkX3QgcGdycCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRwZ2lkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHBpZF90IHBpZDsKKyAgICBwaWRfdCBwZ3JwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgIiIgX1B5X1BBUlNFX1BJRCAiOnNldHBnaWQiLAorICAgICAgICAmcGlkLCAmcGdycCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRwZ2lkX2ltcGwobW9kdWxlLCBwaWQsIHBncnApOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUUEdJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9UQ0dFVFBHUlApCisKK1B5RG9jX1NUUlZBUihvc190Y2dldHBncnBfX2RvY19fLAorInRjZ2V0cGdycCgkbW9kdWxlLCBmZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgcHJvY2VzcyBncm91cCBhc3NvY2lhdGVkIHdpdGggdGhlIHRlcm1pbmFsIHNwZWNpZmllZCBieSBmZC4iKTsKKworI2RlZmluZSBPU19UQ0dFVFBHUlBfTUVUSE9EREVGICAgIFwKKyAgICB7InRjZ2V0cGdycCIsIChQeUNGdW5jdGlvbilvc190Y2dldHBncnAsIE1FVEhfTywgb3NfdGNnZXRwZ3JwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc190Y2dldHBncnBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdGNnZXRwZ3JwKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnRjZ2V0cGdycCIsICZmZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc190Y2dldHBncnBfaW1wbChtb2R1bGUsIGZkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1RDR0VUUEdSUCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9UQ1NFVFBHUlApCisKK1B5RG9jX1NUUlZBUihvc190Y3NldHBncnBfX2RvY19fLAorInRjc2V0cGdycCgkbW9kdWxlLCBmZCwgcGdpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgcHJvY2VzcyBncm91cCBhc3NvY2lhdGVkIHdpdGggdGhlIHRlcm1pbmFsIHNwZWNpZmllZCBieSBmZC4iKTsKKworI2RlZmluZSBPU19UQ1NFVFBHUlBfTUVUSE9EREVGICAgIFwKKyAgICB7InRjc2V0cGdycCIsIChQeUNGdW5jdGlvbilvc190Y3NldHBncnAsIE1FVEhfVkFSQVJHUywgb3NfdGNzZXRwZ3JwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc190Y3NldHBncnBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIHBpZF90IHBnaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdGNzZXRwZ3JwKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBwaWRfdCBwZ2lkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiBfUHlfUEFSU0VfUElEICI6dGNzZXRwZ3JwIiwKKyAgICAgICAgJmZkLCAmcGdpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc190Y3NldHBncnBfaW1wbChtb2R1bGUsIGZkLCBwZ2lkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1RDU0VUUEdSUCkgKi8KKworUHlEb2NfU1RSVkFSKG9zX29wZW5fX2RvY19fLAorIm9wZW4oJG1vZHVsZSwgLywgcGF0aCwgZmxhZ3MsIG1vZGU9NTExLCAqLCBkaXJfZmQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIk9wZW4gYSBmaWxlIGZvciBsb3cgbGV2ZWwgSU8uICBSZXR1cm5zIGEgZmlsZSBkZXNjcmlwdG9yIChpbnRlZ2VyKS5cbiIKKyJcbiIKKyJJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgorIiAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cbiIKKyJkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX09QRU5fTUVUSE9EREVGICAgIFwKKyAgICB7Im9wZW4iLCAoUHlDRnVuY3Rpb24pb3Nfb3BlbiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX29wZW5fX2RvY19ffSwKKworc3RhdGljIGludAorb3Nfb3Blbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGZsYWdzLCBpbnQgbW9kZSwKKyAgICAgICAgICAgICBpbnQgZGlyX2ZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX29wZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgib3BlbiIsICJwYXRoIiwgMCwgMCk7CisgICAgaW50IGZsYWdzOworICAgIGludCBtb2RlID0gNTExOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXxpJE8mOm9wZW4iLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzLCAmbW9kZSwgT1BFTkFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX29wZW5faW1wbChtb2R1bGUsICZwYXRoLCBmbGFncywgbW9kZSwgZGlyX2ZkKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3NfY2xvc2VfX2RvY19fLAorImNsb3NlKCRtb2R1bGUsIC8sIGZkKVxuIgorIi0tXG4iCisiXG4iCisiQ2xvc2UgYSBmaWxlIGRlc2NyaXB0b3IuIik7CisKKyNkZWZpbmUgT1NfQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKW9zX2Nsb3NlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Nsb3NlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Nsb3NlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBpbnQgZmQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOmNsb3NlIiwgX2tleXdvcmRzLAorICAgICAgICAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2xvc2VfaW1wbChtb2R1bGUsIGZkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3NfY2xvc2VyYW5nZV9fZG9jX18sCisiY2xvc2VyYW5nZSgkbW9kdWxlLCBmZF9sb3csIGZkX2hpZ2gsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZXMgYWxsIGZpbGUgZGVzY3JpcHRvcnMgaW4gW2ZkX2xvdywgZmRfaGlnaCksIGlnbm9yaW5nIGVycm9ycy4iKTsKKworI2RlZmluZSBPU19DTE9TRVJBTkdFX01FVEhPRERFRiAgICBcCisgICAgeyJjbG9zZXJhbmdlIiwgKFB5Q0Z1bmN0aW9uKW9zX2Nsb3NlcmFuZ2UsIE1FVEhfVkFSQVJHUywgb3NfY2xvc2VyYW5nZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfY2xvc2VyYW5nZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZF9sb3csIGludCBmZF9oaWdoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Nsb3NlcmFuZ2UoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkX2xvdzsKKyAgICBpbnQgZmRfaGlnaDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6Y2xvc2VyYW5nZSIsCisgICAgICAgICZmZF9sb3csICZmZF9oaWdoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2Nsb3NlcmFuZ2VfaW1wbChtb2R1bGUsIGZkX2xvdywgZmRfaGlnaCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX2R1cF9fZG9jX18sCisiZHVwKCRtb2R1bGUsIGZkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgZHVwbGljYXRlIG9mIGEgZmlsZSBkZXNjcmlwdG9yLiIpOworCisjZGVmaW5lIE9TX0RVUF9NRVRIT0RERUYgICAgXAorICAgIHsiZHVwIiwgKFB5Q0Z1bmN0aW9uKW9zX2R1cCwgTUVUSF9PLCBvc19kdXBfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfZHVwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2R1cChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpkdXAiLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX2R1cF9pbXBsKG1vZHVsZSwgZmQpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3NfZHVwMl9fZG9jX18sCisiZHVwMigkbW9kdWxlLCAvLCBmZCwgZmQyLCBpbmhlcml0YWJsZT1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiRHVwbGljYXRlIGZpbGUgZGVzY3JpcHRvci4iKTsKKworI2RlZmluZSBPU19EVVAyX01FVEhPRERFRiAgICBcCisgICAgeyJkdXAyIiwgKFB5Q0Z1bmN0aW9uKW9zX2R1cDIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19kdXAyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19kdXAyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgZmQyLCBpbnQgaW5oZXJpdGFibGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZHVwMihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgImZkMiIsICJpbmhlcml0YWJsZSIsIE5VTEx9OworICAgIGludCBmZDsKKyAgICBpbnQgZmQyOworICAgIGludCBpbmhlcml0YWJsZSA9IDE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpaXxwOmR1cDIiLCBfa2V5d29yZHMsCisgICAgICAgICZmZCwgJmZkMiwgJmluaGVyaXRhYmxlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2R1cDJfaW1wbChtb2R1bGUsIGZkLCBmZDIsIGluaGVyaXRhYmxlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX0xPQ0tGKQorCitQeURvY19TVFJWQVIob3NfbG9ja2ZfX2RvY19fLAorImxvY2tmKCRtb2R1bGUsIGZkLCBjb21tYW5kLCBsZW5ndGgsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBcHBseSwgdGVzdCBvciByZW1vdmUgYSBQT1NJWCBsb2NrIG9uIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIlxuIgorIiAgZmRcbiIKKyIgICAgQW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiICBjb21tYW5kXG4iCisiICAgIE9uZSBvZiBGX0xPQ0ssIEZfVExPQ0ssIEZfVUxPQ0sgb3IgRl9URVNULlxuIgorIiAgbGVuZ3RoXG4iCisiICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gbG9jaywgc3RhcnRpbmcgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uIik7CisKKyNkZWZpbmUgT1NfTE9DS0ZfTUVUSE9EREVGICAgIFwKKyAgICB7ImxvY2tmIiwgKFB5Q0Z1bmN0aW9uKW9zX2xvY2tmLCBNRVRIX1ZBUkFSR1MsIG9zX2xvY2tmX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19sb2NrZl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGNvbW1hbmQsIFB5X29mZl90IGxlbmd0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19sb2NrZihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IGNvbW1hbmQ7CisgICAgUHlfb2ZmX3QgbGVuZ3RoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU8mOmxvY2tmIiwKKyAgICAgICAgJmZkLCAmY29tbWFuZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2xvY2tmX2ltcGwobW9kdWxlLCBmZCwgY29tbWFuZCwgbGVuZ3RoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0xPQ0tGKSAqLworCitQeURvY19TVFJWQVIob3NfbHNlZWtfX2RvY19fLAorImxzZWVrKCRtb2R1bGUsIGZkLCBwb3NpdGlvbiwgaG93LCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBwb3NpdGlvbiBvZiBhIGZpbGUgZGVzY3JpcHRvci4gIFJldHVybiB0aGUgbmV3IHBvc2l0aW9uLlxuIgorIlxuIgorIlJldHVybiB0aGUgbmV3IGN1cnNvciBwb3NpdGlvbiBpbiBudW1iZXIgb2YgYnl0ZXNcbiIKKyJyZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLiIpOworCisjZGVmaW5lIE9TX0xTRUVLX01FVEhPRERFRiAgICBcCisgICAgeyJsc2VlayIsIChQeUNGdW5jdGlvbilvc19sc2VlaywgTUVUSF9WQVJBUkdTLCBvc19sc2Vla19fZG9jX199LAorCitzdGF0aWMgUHlfb2ZmX3QKK29zX2xzZWVrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9vZmZfdCBwb3NpdGlvbiwgaW50IGhvdyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19sc2VlayhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgUHlfb2ZmX3QgcG9zaXRpb247CisgICAgaW50IGhvdzsKKyAgICBQeV9vZmZfdCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZpOmxzZWVrIiwKKyAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZwb3NpdGlvbiwgJmhvdykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbHNlZWtfaW1wbChtb2R1bGUsIGZkLCBwb3NpdGlvbiwgaG93KTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVB5X29mZl90KF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihvc19yZWFkX19kb2NfXywKKyJyZWFkKCRtb2R1bGUsIGZkLCBsZW5ndGgsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IuICBSZXR1cm5zIGEgYnl0ZXMgb2JqZWN0LiIpOworCisjZGVmaW5lIE9TX1JFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pb3NfcmVhZCwgTUVUSF9WQVJBUkdTLCBvc19yZWFkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19yZWFkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9zc2l6ZV90IGxlbmd0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19yZWFkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaW46cmVhZCIsCisgICAgICAgICZmZCwgJmxlbmd0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19yZWFkX2ltcGwobW9kdWxlLCBmZCwgbGVuZ3RoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX1JFQURWKQorCitQeURvY19TVFJWQVIob3NfcmVhZHZfX2RvY19fLAorInJlYWR2KCRtb2R1bGUsIGZkLCBidWZmZXJzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yIGZkIGludG8gYW4gaXRlcmFibGUgb2YgYnVmZmVycy5cbiIKKyJcbiIKKyJUaGUgYnVmZmVycyBzaG91bGQgYmUgbXV0YWJsZSBidWZmZXJzIGFjY2VwdGluZyBieXRlcy5cbiIKKyJyZWFkdiB3aWxsIHRyYW5zZmVyIGRhdGEgaW50byBlYWNoIGJ1ZmZlciB1bnRpbCBpdCBpcyBmdWxsXG4iCisiYW5kIHRoZW4gbW92ZSBvbiB0byB0aGUgbmV4dCBidWZmZXIgaW4gdGhlIHNlcXVlbmNlIHRvIGhvbGRcbiIKKyJ0aGUgcmVzdCBvZiB0aGUgZGF0YS5cbiIKKyJcbiIKKyJyZWFkdiByZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgcmVhZCxcbiIKKyJ3aGljaCBtYXkgYmUgbGVzcyB0aGFuIHRoZSB0b3RhbCBjYXBhY2l0eSBvZiBhbGwgdGhlIGJ1ZmZlcnMuIik7CisKKyNkZWZpbmUgT1NfUkVBRFZfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWR2IiwgKFB5Q0Z1bmN0aW9uKW9zX3JlYWR2LCBNRVRIX1ZBUkFSR1MsIG9zX3JlYWR2X19kb2NfX30sCisKK3N0YXRpYyBQeV9zc2l6ZV90Citvc19yZWFkdl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlPYmplY3QgKmJ1ZmZlcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVhZHYoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIFB5T2JqZWN0ICpidWZmZXJzOworICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86cmVhZHYiLAorICAgICAgICAmZmQsICZidWZmZXJzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19yZWFkdl9pbXBsKG1vZHVsZSwgZmQsIGJ1ZmZlcnMpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1JFQURWKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1BSRUFEKQorCitQeURvY19TVFJWQVIob3NfcHJlYWRfX2RvY19fLAorInByZWFkKCRtb2R1bGUsIGZkLCBsZW5ndGgsIG9mZnNldCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlYWQgYSBudW1iZXIgb2YgYnl0ZXMgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciBzdGFydGluZyBhdCBhIHBhcnRpY3VsYXIgb2Zmc2V0LlxuIgorIlxuIgorIlJlYWQgbGVuZ3RoIGJ5dGVzIGZyb20gZmlsZSBkZXNjcmlwdG9yIGZkLCBzdGFydGluZyBhdCBvZmZzZXQgYnl0ZXMgZnJvbVxuIgorInRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUuICBUaGUgZmlsZSBvZmZzZXQgcmVtYWlucyB1bmNoYW5nZWQuIik7CisKKyNkZWZpbmUgT1NfUFJFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InByZWFkIiwgKFB5Q0Z1bmN0aW9uKW9zX3ByZWFkLCBNRVRIX1ZBUkFSR1MsIG9zX3ByZWFkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wcmVhZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGxlbmd0aCwgUHlfb2ZmX3Qgb2Zmc2V0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3ByZWFkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgbGVuZ3RoOworICAgIFB5X29mZl90IG9mZnNldDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPJjpwcmVhZCIsCisgICAgICAgICZmZCwgJmxlbmd0aCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3ByZWFkX2ltcGwobW9kdWxlLCBmZCwgbGVuZ3RoLCBvZmZzZXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfUFJFQUQpICovCisKK1B5RG9jX1NUUlZBUihvc193cml0ZV9fZG9jX18sCisid3JpdGUoJG1vZHVsZSwgZmQsIGRhdGEsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZSBhIGJ5dGVzIG9iamVjdCB0byBhIGZpbGUgZGVzY3JpcHRvci4iKTsKKworI2RlZmluZSBPU19XUklURV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pb3Nfd3JpdGUsIE1FVEhfVkFSQVJHUywgb3Nfd3JpdGVfX2RvY19ffSwKKworc3RhdGljIFB5X3NzaXplX3QKK29zX3dyaXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9idWZmZXIgKmRhdGEpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfd3JpdGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqOndyaXRlIiwKKyAgICAgICAgJmZkLCAmZGF0YSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfd3JpdGVfaW1wbChtb2R1bGUsIGZkLCAmZGF0YSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3NfZnN0YXRfX2RvY19fLAorImZzdGF0KCRtb2R1bGUsIC8sIGZkKVxuIgorIi0tXG4iCisiXG4iCisiUGVyZm9ybSBhIHN0YXQgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyJcbiIKKyJMaWtlIHN0YXQoKSwgYnV0IGZvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyJFcXVpdmFsZW50IHRvIG9zLnN0YXQoZmQpLiIpOworCisjZGVmaW5lIE9TX0ZTVEFUX01FVEhPRERFRiAgICBcCisgICAgeyJmc3RhdCIsIChQeUNGdW5jdGlvbilvc19mc3RhdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZzdGF0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mc3RhdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mc3RhdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgaW50IGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpmc3RhdCIsIF9rZXl3b3JkcywKKyAgICAgICAgJmZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2ZzdGF0X2ltcGwobW9kdWxlLCBmZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX2lzYXR0eV9fZG9jX18sCisiaXNhdHR5KCRtb2R1bGUsIGZkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIFRydWUgaWYgdGhlIGZkIGlzIGNvbm5lY3RlZCB0byBhIHRlcm1pbmFsLlxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3JcbiIKKyJjb25uZWN0ZWQgdG8gdGhlIHNsYXZlIGVuZCBvZiBhIHRlcm1pbmFsLiIpOworCisjZGVmaW5lIE9TX0lTQVRUWV9NRVRIT0RERUYgICAgXAorICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKW9zX2lzYXR0eSwgTUVUSF9PLCBvc19pc2F0dHlfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfaXNhdHR5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2lzYXR0eShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTppc2F0dHkiLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX2lzYXR0eV9pbXBsKG1vZHVsZSwgZmQpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX1BJUEUpCisKK1B5RG9jX1NUUlZBUihvc19waXBlX19kb2NfXywKKyJwaXBlKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGUgYSBwaXBlLlxuIgorIlxuIgorIlJldHVybnMgYSB0dXBsZSBvZiB0d28gZmlsZSBkZXNjcmlwdG9yczpcbiIKKyIgIChyZWFkX2ZkLCB3cml0ZV9mZCkiKTsKKworI2RlZmluZSBPU19QSVBFX01FVEhPRERFRiAgICBcCisgICAgeyJwaXBlIiwgKFB5Q0Z1bmN0aW9uKW9zX3BpcGUsIE1FVEhfTk9BUkdTLCBvc19waXBlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19waXBlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19waXBlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX3BpcGVfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1BJUEUpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfUElQRTIpCisKK1B5RG9jX1NUUlZBUihvc19waXBlMl9fZG9jX18sCisicGlwZTIoJG1vZHVsZSwgZmxhZ3MsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGUgYSBwaXBlIHdpdGggZmxhZ3Mgc2V0IGF0b21pY2FsbHkuXG4iCisiXG4iCisiUmV0dXJucyBhIHR1cGxlIG9mIHR3byBmaWxlIGRlc2NyaXB0b3JzOlxuIgorIiAgKHJlYWRfZmQsIHdyaXRlX2ZkKVxuIgorIlxuIgorImZsYWdzIGNhbiBiZSBjb25zdHJ1Y3RlZCBieSBPUmluZyB0b2dldGhlciBvbmUgb3IgbW9yZSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisiT19OT05CTE9DSywgT19DTE9FWEVDLiIpOworCisjZGVmaW5lIE9TX1BJUEUyX01FVEhPRERFRiAgICBcCisgICAgeyJwaXBlMiIsIChQeUNGdW5jdGlvbilvc19waXBlMiwgTUVUSF9PLCBvc19waXBlMl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcGlwZTJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmxhZ3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcGlwZTIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmxhZ3M7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6cGlwZTIiLCAmZmxhZ3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfcGlwZTJfaW1wbChtb2R1bGUsIGZsYWdzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1BJUEUyKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1dSSVRFVikKKworUHlEb2NfU1RSVkFSKG9zX3dyaXRldl9fZG9jX18sCisid3JpdGV2KCRtb2R1bGUsIGZkLCBidWZmZXJzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiSXRlcmF0ZSBvdmVyIGJ1ZmZlcnMsIGFuZCB3cml0ZSB0aGUgY29udGVudHMgb2YgZWFjaCB0byBhIGZpbGUgZGVzY3JpcHRvci5cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi5cbiIKKyJidWZmZXJzIG11c3QgYmUgYSBzZXF1ZW5jZSBvZiBieXRlcy1saWtlIG9iamVjdHMuIik7CisKKyNkZWZpbmUgT1NfV1JJVEVWX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZXYiLCAoUHlDRnVuY3Rpb24pb3Nfd3JpdGV2LCBNRVRIX1ZBUkFSR1MsIG9zX3dyaXRldl9fZG9jX199LAorCitzdGF0aWMgUHlfc3NpemVfdAorb3Nfd3JpdGV2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeU9iamVjdCAqYnVmZmVycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc193cml0ZXYoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIFB5T2JqZWN0ICpidWZmZXJzOworICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86d3JpdGV2IiwKKyAgICAgICAgJmZkLCAmYnVmZmVycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfd3JpdGV2X2ltcGwobW9kdWxlLCBmZCwgYnVmZmVycyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfV1JJVEVWKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1BXUklURSkKKworUHlEb2NfU1RSVkFSKG9zX3B3cml0ZV9fZG9jX18sCisicHdyaXRlKCRtb2R1bGUsIGZkLCBidWZmZXIsIG9mZnNldCwgLylcbiIKKyItLVxuIgorIlxuIgorIldyaXRlIGJ5dGVzIHRvIGEgZmlsZSBkZXNjcmlwdG9yIHN0YXJ0aW5nIGF0IGEgcGFydGljdWxhciBvZmZzZXQuXG4iCisiXG4iCisiV3JpdGUgYnVmZmVyIHRvIGZkLCBzdGFydGluZyBhdCBvZmZzZXQgYnl0ZXMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mXG4iCisidGhlIGZpbGUuICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlLiAgRG9lcyBub3QgY2hhbmdlIHRoZVxuIgorImN1cnJlbnQgZmlsZSBvZmZzZXQuIik7CisKKyNkZWZpbmUgT1NfUFdSSVRFX01FVEhPRERFRiAgICBcCisgICAgeyJwd3JpdGUiLCAoUHlDRnVuY3Rpb24pb3NfcHdyaXRlLCBNRVRIX1ZBUkFSR1MsIG9zX3B3cml0ZV9fZG9jX199LAorCitzdGF0aWMgUHlfc3NpemVfdAorb3NfcHdyaXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9idWZmZXIgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgIFB5X29mZl90IG9mZnNldCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wd3JpdGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfb2ZmX3Qgb2Zmc2V0OworICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqTyY6cHdyaXRlIiwKKyAgICAgICAgJmZkLCAmYnVmZmVyLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX3B3cml0ZV9pbXBsKG1vZHVsZSwgZmQsICZidWZmZXIsIG9mZnNldCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1BXUklURSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9NS0ZJRk8pCisKK1B5RG9jX1NUUlZBUihvc19ta2ZpZm9fX2RvY19fLAorIm1rZmlmbygkbW9kdWxlLCAvLCBwYXRoLCBtb2RlPTQzOCwgKiwgZGlyX2ZkPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGUgYSBcImZpZm9cIiAoYSBQT1NJWCBuYW1lZCBwaXBlKS5cbiIKKyJcbiIKKyJJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgorIiAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cbiIKKyJkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX01LRklGT19NRVRIT0RERUYgICAgXAorICAgIHsibWtmaWZvIiwgKFB5Q0Z1bmN0aW9uKW9zX21rZmlmbywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX21rZmlmb19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbWtmaWZvX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ta2ZpZm8oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibWtmaWZvIiwgInBhdGgiLCAwLCAwKTsKKyAgICBpbnQgbW9kZSA9IDQzODsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpJE8mOm1rZmlmbyIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgTUtGSUZPQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19ta2ZpZm9faW1wbChtb2R1bGUsICZwYXRoLCBtb2RlLCBkaXJfZmQpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9NS0ZJRk8pICovCisKKyNpZiAoZGVmaW5lZChIQVZFX01LTk9EKSAmJiBkZWZpbmVkKEhBVkVfTUFLRURFVikpCisKK1B5RG9jX1NUUlZBUihvc19ta25vZF9fZG9jX18sCisibWtub2QoJG1vZHVsZSwgLywgcGF0aCwgbW9kZT0zODQsIGRldmljZT0wLCAqLCBkaXJfZmQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIkNyZWF0ZSBhIG5vZGUgaW4gdGhlIGZpbGUgc3lzdGVtLlxuIgorIlxuIgorIkNyZWF0ZSBhIG5vZGUgaW4gdGhlIGZpbGUgc3lzdGVtIChmaWxlLCBkZXZpY2Ugc3BlY2lhbCBmaWxlIG9yIG5hbWVkIHBpcGUpXG4iCisiYXQgcGF0aC4gIG1vZGUgc3BlY2lmaWVzIGJvdGggdGhlIHBlcm1pc3Npb25zIHRvIHVzZSBhbmQgdGhlXG4iCisidHlwZSBvZiBub2RlIHRvIGJlIGNyZWF0ZWQsIGJlaW5nIGNvbWJpbmVkIChiaXR3aXNlIE9SKSB3aXRoIG9uZSBvZlxuIgorIlNfSUZSRUcsIFNfSUZDSFIsIFNfSUZCTEssIGFuZCBTX0lGSUZPLiAgSWYgU19JRkNIUiBvciBTX0lGQkxLIGlzIHNldCBvbiBtb2RlLFxuIgorImRldmljZSBkZWZpbmVzIHRoZSBuZXdseSBjcmVhdGVkIGRldmljZSBzcGVjaWFsIGZpbGUgKHByb2JhYmx5IHVzaW5nXG4iCisib3MubWFrZWRldigpKS4gIE90aGVyd2lzZSBkZXZpY2UgaXMgaWdub3JlZC5cbiIKKyJcbiIKKyJJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgorIiAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cbiIKKyJkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX01LTk9EX01FVEhPRERFRiAgICBcCisgICAgeyJta25vZCIsIChQeUNGdW5jdGlvbilvc19ta25vZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX21rbm9kX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ta25vZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGRldl90IGRldmljZSwKKyAgICAgICAgICAgICAgaW50IGRpcl9mZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ta25vZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkZXZpY2UiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibWtub2QiLCAicGF0aCIsIDAsIDApOworICAgIGludCBtb2RlID0gMzg0OworICAgIGRldl90IGRldmljZSA9IDA7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aU8mJE8mOm1rbm9kIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSwgTUtOT0RBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX21rbm9kX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGV2aWNlLCBkaXJfZmQpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfTUtOT0QpICYmIGRlZmluZWQoSEFWRV9NQUtFREVWKSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9ERVZJQ0VfTUFDUk9TKQorCitQeURvY19TVFJWQVIob3NfbWFqb3JfX2RvY19fLAorIm1ham9yKCRtb2R1bGUsIGRldmljZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkV4dHJhY3RzIGEgZGV2aWNlIG1ham9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIuIik7CisKKyNkZWZpbmUgT1NfTUFKT1JfTUVUSE9EREVGICAgIFwKKyAgICB7Im1ham9yIiwgKFB5Q0Z1bmN0aW9uKW9zX21ham9yLCBNRVRIX08sIG9zX21ham9yX19kb2NfX30sCisKK3N0YXRpYyB1bnNpZ25lZCBpbnQKK29zX21ham9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgZGV2X3QgZGV2aWNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX21ham9yKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgZGV2X3QgZGV2aWNlOworICAgIHVuc2lnbmVkIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjptYWpvciIsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19tYWpvcl9pbXBsKG1vZHVsZSwgZGV2aWNlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfREVWSUNFX01BQ1JPUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9ERVZJQ0VfTUFDUk9TKQorCitQeURvY19TVFJWQVIob3NfbWlub3JfX2RvY19fLAorIm1pbm9yKCRtb2R1bGUsIGRldmljZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkV4dHJhY3RzIGEgZGV2aWNlIG1pbm9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIuIik7CisKKyNkZWZpbmUgT1NfTUlOT1JfTUVUSE9EREVGICAgIFwKKyAgICB7Im1pbm9yIiwgKFB5Q0Z1bmN0aW9uKW9zX21pbm9yLCBNRVRIX08sIG9zX21pbm9yX19kb2NfX30sCisKK3N0YXRpYyB1bnNpZ25lZCBpbnQKK29zX21pbm9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgZGV2X3QgZGV2aWNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX21pbm9yKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgZGV2X3QgZGV2aWNlOworICAgIHVuc2lnbmVkIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjptaW5vciIsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19taW5vcl9pbXBsKG1vZHVsZSwgZGV2aWNlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfREVWSUNFX01BQ1JPUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9ERVZJQ0VfTUFDUk9TKQorCitQeURvY19TVFJWQVIob3NfbWFrZWRldl9fZG9jX18sCisibWFrZWRldigkbW9kdWxlLCBtYWpvciwgbWlub3IsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb21wb3NlcyBhIHJhdyBkZXZpY2UgbnVtYmVyIGZyb20gdGhlIG1ham9yIGFuZCBtaW5vciBkZXZpY2UgbnVtYmVycy4iKTsKKworI2RlZmluZSBPU19NQUtFREVWX01FVEhPRERFRiAgICBcCisgICAgeyJtYWtlZGV2IiwgKFB5Q0Z1bmN0aW9uKW9zX21ha2VkZXYsIE1FVEhfVkFSQVJHUywgb3NfbWFrZWRldl9fZG9jX199LAorCitzdGF0aWMgZGV2X3QKK29zX21ha2VkZXZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbWFqb3IsIGludCBtaW5vcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19tYWtlZGV2KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBtYWpvcjsKKyAgICBpbnQgbWlub3I7CisgICAgZGV2X3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6bWFrZWRldiIsCisgICAgICAgICZtYWpvciwgJm1pbm9yKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19tYWtlZGV2X2ltcGwobW9kdWxlLCBtYWpvciwgbWlub3IpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAoZGV2X3QpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfUHlMb25nX0Zyb21EZXYoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9ERVZJQ0VfTUFDUk9TKSAqLworCisjaWYgKGRlZmluZWQgSEFWRV9GVFJVTkNBVEUgfHwgZGVmaW5lZCBNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIob3NfZnRydW5jYXRlX19kb2NfXywKKyJmdHJ1bmNhdGUoJG1vZHVsZSwgZmQsIGxlbmd0aCwgLylcbiIKKyItLVxuIgorIlxuIgorIlRydW5jYXRlIGEgZmlsZSwgc3BlY2lmaWVkIGJ5IGZpbGUgZGVzY3JpcHRvciwgdG8gYSBzcGVjaWZpYyBsZW5ndGguIik7CisKKyNkZWZpbmUgT1NfRlRSVU5DQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJmdHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pb3NfZnRydW5jYXRlLCBNRVRIX1ZBUkFSR1MsIG9zX2Z0cnVuY2F0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnRydW5jYXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9vZmZfdCBsZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnRydW5jYXRlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBQeV9vZmZfdCBsZW5ndGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJjpmdHJ1bmNhdGUiLAorICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19mdHJ1bmNhdGVfaW1wbChtb2R1bGUsIGZkLCBsZW5ndGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiAoZGVmaW5lZCBIQVZFX0ZUUlVOQ0FURSB8fCBkZWZpbmVkIE1TX1dJTkRPV1MpICovCisKKyNpZiAoZGVmaW5lZCBIQVZFX1RSVU5DQVRFIHx8IGRlZmluZWQgTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX3RydW5jYXRlX19kb2NfXywKKyJ0cnVuY2F0ZSgkbW9kdWxlLCAvLCBwYXRoLCBsZW5ndGgpXG4iCisiLS1cbiIKKyJcbiIKKyJUcnVuY2F0ZSBhIGZpbGUsIHNwZWNpZmllZCBieSBwYXRoLCB0byBhIHNwZWNpZmljIGxlbmd0aC5cbiIKKyJcbiIKKyJPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CisKKyNkZWZpbmUgT1NfVFJVTkNBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKW9zX3RydW5jYXRlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfdHJ1bmNhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3RydW5jYXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeV9vZmZfdCBsZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdHJ1bmNhdGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImxlbmd0aCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInRydW5jYXRlIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRlRSVU5DQVRFKTsKKyAgICBQeV9vZmZfdCBsZW5ndGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mOnRydW5jYXRlIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc190cnVuY2F0ZV9pbXBsKG1vZHVsZSwgJnBhdGgsIGxlbmd0aCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogKGRlZmluZWQgSEFWRV9UUlVOQ0FURSB8fCBkZWZpbmVkIE1TX1dJTkRPV1MpICovCisKKyNpZiAoZGVmaW5lZChIQVZFX1BPU0lYX0ZBTExPQ0FURSkgJiYgIWRlZmluZWQoUE9TSVhfRkFEVklTRV9BSVhfQlVHKSkKKworUHlEb2NfU1RSVkFSKG9zX3Bvc2l4X2ZhbGxvY2F0ZV9fZG9jX18sCisicG9zaXhfZmFsbG9jYXRlKCRtb2R1bGUsIGZkLCBvZmZzZXQsIGxlbmd0aCwgLylcbiIKKyItLVxuIgorIlxuIgorIkVuc3VyZSBhIGZpbGUgaGFzIGFsbG9jYXRlZCBhdCBsZWFzdCBhIHBhcnRpY3VsYXIgbnVtYmVyIG9mIGJ5dGVzIG9uIGRpc2suXG4iCisiXG4iCisiRW5zdXJlIHRoYXQgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZkIGVuY29tcGFzc2VzIGEgcmFuZ2Ugb2YgYnl0ZXNcbiIKKyJzdGFydGluZyBhdCBvZmZzZXQgYnl0ZXMgZnJvbSB0aGUgYmVnaW5uaW5nIGFuZCBjb250aW51aW5nIGZvciBsZW5ndGggYnl0ZXMuIik7CisKKyNkZWZpbmUgT1NfUE9TSVhfRkFMTE9DQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJwb3NpeF9mYWxsb2NhdGUiLCAoUHlDRnVuY3Rpb24pb3NfcG9zaXhfZmFsbG9jYXRlLCBNRVRIX1ZBUkFSR1MsIG9zX3Bvc2l4X2ZhbGxvY2F0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcG9zaXhfZmFsbG9jYXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9vZmZfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9vZmZfdCBsZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcG9zaXhfZmFsbG9jYXRlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBQeV9vZmZfdCBvZmZzZXQ7CisgICAgUHlfb2ZmX3QgbGVuZ3RoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJjpwb3NpeF9mYWxsb2NhdGUiLAorICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3Bvc2l4X2ZhbGxvY2F0ZV9pbXBsKG1vZHVsZSwgZmQsIG9mZnNldCwgbGVuZ3RoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogKGRlZmluZWQoSEFWRV9QT1NJWF9GQUxMT0NBVEUpICYmICFkZWZpbmVkKFBPU0lYX0ZBRFZJU0VfQUlYX0JVRykpICovCisKKyNpZiAoZGVmaW5lZChIQVZFX1BPU0lYX0ZBRFZJU0UpICYmICFkZWZpbmVkKFBPU0lYX0ZBRFZJU0VfQUlYX0JVRykpCisKK1B5RG9jX1NUUlZBUihvc19wb3NpeF9mYWR2aXNlX19kb2NfXywKKyJwb3NpeF9mYWR2aXNlKCRtb2R1bGUsIGZkLCBvZmZzZXQsIGxlbmd0aCwgYWR2aWNlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQW5ub3VuY2UgYW4gaW50ZW50aW9uIHRvIGFjY2VzcyBkYXRhIGluIGEgc3BlY2lmaWMgcGF0dGVybi5cbiIKKyJcbiIKKyJBbm5vdW5jZSBhbiBpbnRlbnRpb24gdG8gYWNjZXNzIGRhdGEgaW4gYSBzcGVjaWZpYyBwYXR0ZXJuLCB0aHVzIGFsbG93aW5nXG4iCisidGhlIGtlcm5lbCB0byBtYWtlIG9wdGltaXphdGlvbnMuXG4iCisiVGhlIGFkdmljZSBhcHBsaWVzIHRvIHRoZSByZWdpb24gb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZkIHN0YXJ0aW5nIGF0XG4iCisib2Zmc2V0IGFuZCBjb250aW51aW5nIGZvciBsZW5ndGggYnl0ZXMuXG4iCisiYWR2aWNlIGlzIG9uZSBvZiBQT1NJWF9GQURWX05PUk1BTCwgUE9TSVhfRkFEVl9TRVFVRU5USUFMLFxuIgorIlBPU0lYX0ZBRFZfUkFORE9NLCBQT1NJWF9GQURWX05PUkVVU0UsIFBPU0lYX0ZBRFZfV0lMTE5FRUQsIG9yXG4iCisiUE9TSVhfRkFEVl9ET05UTkVFRC4iKTsKKworI2RlZmluZSBPU19QT1NJWF9GQURWSVNFX01FVEhPRERFRiAgICBcCisgICAgeyJwb3NpeF9mYWR2aXNlIiwgKFB5Q0Z1bmN0aW9uKW9zX3Bvc2l4X2ZhZHZpc2UsIE1FVEhfVkFSQVJHUywgb3NfcG9zaXhfZmFkdmlzZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcG9zaXhfZmFkdmlzZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfb2ZmX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgIFB5X29mZl90IGxlbmd0aCwgaW50IGFkdmljZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wb3NpeF9mYWR2aXNlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBQeV9vZmZfdCBvZmZzZXQ7CisgICAgUHlfb2ZmX3QgbGVuZ3RoOworICAgIGludCBhZHZpY2U7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk8maTpwb3NpeF9mYWR2aXNlIiwKKyAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCwgJmFkdmljZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19wb3NpeF9mYWR2aXNlX2ltcGwobW9kdWxlLCBmZCwgb2Zmc2V0LCBsZW5ndGgsIGFkdmljZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfUE9TSVhfRkFEVklTRSkgJiYgIWRlZmluZWQoUE9TSVhfRkFEVklTRV9BSVhfQlVHKSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9QVVRFTlYpICYmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX3B1dGVudl9fZG9jX18sCisicHV0ZW52KCRtb2R1bGUsIG5hbWUsIHZhbHVlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIG9yIGFkZCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4iKTsKKworI2RlZmluZSBPU19QVVRFTlZfTUVUSE9EREVGICAgIFwKKyAgICB7InB1dGVudiIsIChQeUNGdW5jdGlvbilvc19wdXRlbnYsIE1FVEhfVkFSQVJHUywgb3NfcHV0ZW52X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wdXRlbnZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3B1dGVudihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZTsKKyAgICBQeU9iamVjdCAqdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVVOnB1dGVudiIsCisgICAgICAgICZuYW1lLCAmdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfcHV0ZW52X2ltcGwobW9kdWxlLCBuYW1lLCB2YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9QVVRFTlYpICYmIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9QVVRFTlYpICYmICFkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19wdXRlbnZfX2RvY19fLAorInB1dGVudigkbW9kdWxlLCBuYW1lLCB2YWx1ZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNoYW5nZSBvciBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuIik7CisKKyNkZWZpbmUgT1NfUFVURU5WX01FVEhPRERFRiAgICBcCisgICAgeyJwdXRlbnYiLCAoUHlDRnVuY3Rpb24pb3NfcHV0ZW52LCBNRVRIX1ZBUkFSR1MsIG9zX3B1dGVudl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcHV0ZW52X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICp2YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wdXRlbnYoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICp2YWx1ZSA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyY6cHV0ZW52IiwKKyAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmbmFtZSwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfcHV0ZW52X2ltcGwobW9kdWxlLCBuYW1lLCB2YWx1ZSk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgbmFtZSAqLworICAgIFB5X1hERUNSRUYobmFtZSk7CisgICAgLyogQ2xlYW51cCBmb3IgdmFsdWUgKi8KKyAgICBQeV9YREVDUkVGKHZhbHVlKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfUFVURU5WKSAmJiAhZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1VOU0VURU5WKQorCitQeURvY19TVFJWQVIob3NfdW5zZXRlbnZfX2RvY19fLAorInVuc2V0ZW52KCRtb2R1bGUsIG5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJEZWxldGUgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuIik7CisKKyNkZWZpbmUgT1NfVU5TRVRFTlZfTUVUSE9EREVGICAgIFwKKyAgICB7InVuc2V0ZW52IiwgKFB5Q0Z1bmN0aW9uKW9zX3Vuc2V0ZW52LCBNRVRIX08sIG9zX3Vuc2V0ZW52X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc191bnNldGVudl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3Vuc2V0ZW52KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWUgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjp1bnNldGVudiIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfdW5zZXRlbnZfaW1wbChtb2R1bGUsIG5hbWUpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIG5hbWUgKi8KKyAgICBQeV9YREVDUkVGKG5hbWUpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9VTlNFVEVOVikgKi8KKworUHlEb2NfU1RSVkFSKG9zX3N0cmVycm9yX19kb2NfXywKKyJzdHJlcnJvcigkbW9kdWxlLCBjb2RlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVHJhbnNsYXRlIGFuIGVycm9yIGNvZGUgdG8gYSBtZXNzYWdlIHN0cmluZy4iKTsKKworI2RlZmluZSBPU19TVFJFUlJPUl9NRVRIT0RERUYgICAgXAorICAgIHsic3RyZXJyb3IiLCAoUHlDRnVuY3Rpb24pb3Nfc3RyZXJyb3IsIE1FVEhfTywgb3Nfc3RyZXJyb3JfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0cmVycm9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGNvZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3RyZXJyb3IoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY29kZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzdHJlcnJvciIsICZjb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3N0cmVycm9yX2ltcGwobW9kdWxlLCBjb2RlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV0NPUkVEVU1QKQorCitQeURvY19TVFJWQVIob3NfV0NPUkVEVU1QX19kb2NfXywKKyJXQ09SRURVTVAoJG1vZHVsZSwgc3RhdHVzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgZHVtcGVkIHRvIGEgY29yZSBmaWxlLiIpOworCisjZGVmaW5lIE9TX1dDT1JFRFVNUF9NRVRIT0RERUYgICAgXAorICAgIHsiV0NPUkVEVU1QIiwgKFB5Q0Z1bmN0aW9uKW9zX1dDT1JFRFVNUCwgTUVUSF9PLCBvc19XQ09SRURVTVBfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfV0NPUkVEVU1QX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19XQ09SRURVTVAoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgc3RhdHVzOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOldDT1JFRFVNUCIsICZzdGF0dXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX1dDT1JFRFVNUF9pbXBsKG1vZHVsZSwgc3RhdHVzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdDT1JFRFVNUCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdJRkNPTlRJTlVFRCkKKworUHlEb2NfU1RSVkFSKG9zX1dJRkNPTlRJTlVFRF9fZG9jX18sCisiV0lGQ09OVElOVUVEKCRtb2R1bGUsIC8sIHN0YXR1cylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIGEgcGFydGljdWxhciBwcm9jZXNzIHdhcyBjb250aW51ZWQgZnJvbSBhIGpvYiBjb250cm9sIHN0b3AuXG4iCisiXG4iCisiUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgY29udGludWVkIGZyb20gYVxuIgorImpvYiBjb250cm9sIHN0b3AuIik7CisKKyNkZWZpbmUgT1NfV0lGQ09OVElOVUVEX01FVEhPRERFRiAgICBcCisgICAgeyJXSUZDT05USU5VRUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGQ09OVElOVUVELCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV0lGQ09OVElOVUVEX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK29zX1dJRkNPTlRJTlVFRF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfV0lGQ09OVElOVUVEKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgaW50IHN0YXR1czsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V0lGQ09OVElOVUVEIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RhdHVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XSUZDT05USU5VRURfaW1wbChtb2R1bGUsIHN0YXR1cyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXSUZDT05USU5VRUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXSUZTVE9QUEVEKQorCitQeURvY19TVFJWQVIob3NfV0lGU1RPUFBFRF9fZG9jX18sCisiV0lGU1RPUFBFRCgkbW9kdWxlLCAvLCBzdGF0dXMpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgc3RhdHVzIHdhcyBzdG9wcGVkLiIpOworCisjZGVmaW5lIE9TX1dJRlNUT1BQRURfTUVUSE9EREVGICAgIFwKKyAgICB7IldJRlNUT1BQRUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGU1RPUFBFRCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dJRlNUT1BQRURfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfV0lGU1RPUFBFRF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfV0lGU1RPUFBFRChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIGludCBzdGF0dXM7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldJRlNUT1BQRUQiLCBfa2V5d29yZHMsCisgICAgICAgICZzdGF0dXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX1dJRlNUT1BQRURfaW1wbChtb2R1bGUsIHN0YXR1cyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXSUZTVE9QUEVEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV0lGU0lHTkFMRUQpCisKK1B5RG9jX1NUUlZBUihvc19XSUZTSUdOQUxFRF9fZG9jX18sCisiV0lGU0lHTkFMRUQoJG1vZHVsZSwgLywgc3RhdHVzKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgdGVybWluYXRlZCBieSBhIHNpZ25hbC4iKTsKKworI2RlZmluZSBPU19XSUZTSUdOQUxFRF9NRVRIT0RERUYgICAgXAorICAgIHsiV0lGU0lHTkFMRUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGU0lHTkFMRUQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XSUZTSUdOQUxFRF9fZG9jX199LAorCitzdGF0aWMgaW50Citvc19XSUZTSUdOQUxFRF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfV0lGU0lHTkFMRUQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBpbnQgc3RhdHVzOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXSUZTSUdOQUxFRCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0YXR1cykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0lGU0lHTkFMRURfaW1wbChtb2R1bGUsIHN0YXR1cyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXSUZTSUdOQUxFRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdJRkVYSVRFRCkKKworUHlEb2NfU1RSVkFSKG9zX1dJRkVYSVRFRF9fZG9jX18sCisiV0lGRVhJVEVEKCRtb2R1bGUsIC8sIHN0YXR1cylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgZXhpdGVkIHZpYSB0aGUgZXhpdCgpIHN5c3RlbSBjYWxsLiIpOworCisjZGVmaW5lIE9TX1dJRkVYSVRFRF9NRVRIT0RERUYgICAgXAorICAgIHsiV0lGRVhJVEVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRkVYSVRFRCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dJRkVYSVRFRF9fZG9jX199LAorCitzdGF0aWMgaW50Citvc19XSUZFWElURURfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX1dJRkVYSVRFRChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIGludCBzdGF0dXM7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldJRkVYSVRFRCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0YXR1cykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0lGRVhJVEVEX2ltcGwobW9kdWxlLCBzdGF0dXMpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV0lGRVhJVEVEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV0VYSVRTVEFUVVMpCisKK1B5RG9jX1NUUlZBUihvc19XRVhJVFNUQVRVU19fZG9jX18sCisiV0VYSVRTVEFUVVMoJG1vZHVsZSwgLywgc3RhdHVzKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBwcm9jZXNzIHJldHVybiBjb2RlIGZyb20gc3RhdHVzLiIpOworCisjZGVmaW5lIE9TX1dFWElUU1RBVFVTX01FVEhPRERFRiAgICBcCisgICAgeyJXRVhJVFNUQVRVUyIsIChQeUNGdW5jdGlvbilvc19XRVhJVFNUQVRVUywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dFWElUU1RBVFVTX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK29zX1dFWElUU1RBVFVTX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19XRVhJVFNUQVRVUyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIGludCBzdGF0dXM7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldFWElUU1RBVFVTIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RhdHVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XRVhJVFNUQVRVU19pbXBsKG1vZHVsZSwgc3RhdHVzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdFWElUU1RBVFVTKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV1RFUk1TSUcpCisKK1B5RG9jX1NUUlZBUihvc19XVEVSTVNJR19fZG9jX18sCisiV1RFUk1TSUcoJG1vZHVsZSwgLywgc3RhdHVzKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBzaWduYWwgdGhhdCB0ZXJtaW5hdGVkIHRoZSBwcm9jZXNzIHRoYXQgcHJvdmlkZWQgdGhlIHN0YXR1cyB2YWx1ZS4iKTsKKworI2RlZmluZSBPU19XVEVSTVNJR19NRVRIT0RERUYgICAgXAorICAgIHsiV1RFUk1TSUciLCAoUHlDRnVuY3Rpb24pb3NfV1RFUk1TSUcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XVEVSTVNJR19fZG9jX199LAorCitzdGF0aWMgaW50Citvc19XVEVSTVNJR19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfV1RFUk1TSUcoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBpbnQgc3RhdHVzOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXVEVSTVNJRyIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0YXR1cykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV1RFUk1TSUdfaW1wbChtb2R1bGUsIHN0YXR1cyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXVEVSTVNJRykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdTVE9QU0lHKQorCitQeURvY19TVFJWQVIob3NfV1NUT1BTSUdfX2RvY19fLAorIldTVE9QU0lHKCRtb2R1bGUsIC8sIHN0YXR1cylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgc2lnbmFsIHRoYXQgc3RvcHBlZCB0aGUgcHJvY2VzcyB0aGF0IHByb3ZpZGVkIHRoZSBzdGF0dXMgdmFsdWUuIik7CisKKyNkZWZpbmUgT1NfV1NUT1BTSUdfTUVUSE9EREVGICAgIFwKKyAgICB7IldTVE9QU0lHIiwgKFB5Q0Z1bmN0aW9uKW9zX1dTVE9QU0lHLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV1NUT1BTSUdfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfV1NUT1BTSUdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX1dTVE9QU0lHKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgaW50IHN0YXR1czsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V1NUT1BTSUciLCBfa2V5d29yZHMsCisgICAgICAgICZzdGF0dXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX1dTVE9QU0lHX2ltcGwobW9kdWxlLCBzdGF0dXMpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV1NUT1BTSUcpICovCisKKyNpZiAoZGVmaW5lZChIQVZFX0ZTVEFUVkZTKSAmJiBkZWZpbmVkKEhBVkVfU1lTX1NUQVRWRlNfSCkpCisKK1B5RG9jX1NUUlZBUihvc19mc3RhdHZmc19fZG9jX18sCisiZnN0YXR2ZnMoJG1vZHVsZSwgZmQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJQZXJmb3JtIGFuIGZzdGF0dmZzIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBmZC5cbiIKKyJcbiIKKyJFcXVpdmFsZW50IHRvIHN0YXR2ZnMoZmQpLiIpOworCisjZGVmaW5lIE9TX0ZTVEFUVkZTX01FVEhPRERFRiAgICBcCisgICAgeyJmc3RhdHZmcyIsIChQeUNGdW5jdGlvbilvc19mc3RhdHZmcywgTUVUSF9PLCBvc19mc3RhdHZmc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnN0YXR2ZnNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnN0YXR2ZnMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6ZnN0YXR2ZnMiLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZnN0YXR2ZnNfaW1wbChtb2R1bGUsIGZkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogKGRlZmluZWQoSEFWRV9GU1RBVFZGUykgJiYgZGVmaW5lZChIQVZFX1NZU19TVEFUVkZTX0gpKSAqLworCisjaWYgKGRlZmluZWQoSEFWRV9TVEFUVkZTKSAmJiBkZWZpbmVkKEhBVkVfU1lTX1NUQVRWRlNfSCkpCisKK1B5RG9jX1NUUlZBUihvc19zdGF0dmZzX19kb2NfXywKKyJzdGF0dmZzKCRtb2R1bGUsIC8sIHBhdGgpXG4iCisiLS1cbiIKKyJcbiIKKyJQZXJmb3JtIGEgc3RhdHZmcyBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC5cbiIKKyJcbiIKKyJwYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLlxuIgorIk9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyIgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKKworI2RlZmluZSBPU19TVEFUVkZTX01FVEhPRERFRiAgICBcCisgICAgeyJzdGF0dmZzIiwgKFB5Q0Z1bmN0aW9uKW9zX3N0YXR2ZnMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zdGF0dmZzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zdGF0dmZzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0YXR2ZnMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgic3RhdHZmcyIsICJwYXRoIiwgMCwgUEFUSF9IQVZFX0ZTVEFUVkZTKTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOnN0YXR2ZnMiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zdGF0dmZzX2ltcGwobW9kdWxlLCAmcGF0aCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogKGRlZmluZWQoSEFWRV9TVEFUVkZTKSAmJiBkZWZpbmVkKEhBVkVfU1lTX1NUQVRWRlNfSCkpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19fZ2V0ZGlza3VzYWdlX19kb2NfXywKKyJfZ2V0ZGlza3VzYWdlKCRtb2R1bGUsIC8sIHBhdGgpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gZGlzayB1c2FnZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBnaXZlbiBwYXRoIGFzIGEgKHRvdGFsLCBmcmVlKSB0dXBsZS4iKTsKKworI2RlZmluZSBPU19fR0VURElTS1VTQUdFX01FVEhPRERFRiAgICBcCisgICAgeyJfZ2V0ZGlza3VzYWdlIiwgKFB5Q0Z1bmN0aW9uKW9zX19nZXRkaXNrdXNhZ2UsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19fZ2V0ZGlza3VzYWdlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19fZ2V0ZGlza3VzYWdlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfVU5JQ09ERSAqcGF0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19fZ2V0ZGlza3VzYWdlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIFB5X1VOSUNPREUgKnBhdGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ1Ol9nZXRkaXNrdXNhZ2UiLCBfa2V5d29yZHMsCisgICAgICAgICZwYXRoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX19nZXRkaXNrdXNhZ2VfaW1wbChtb2R1bGUsIHBhdGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfRlBBVEhDT05GKQorCitQeURvY19TVFJWQVIob3NfZnBhdGhjb25mX19kb2NfXywKKyJmcGF0aGNvbmYoJG1vZHVsZSwgZmQsIG5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGNvbmZpZ3VyYXRpb24gbGltaXQgbmFtZSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciBmZC5cbiIKKyJcbiIKKyJJZiB0aGVyZSBpcyBubyBsaW1pdCwgcmV0dXJuIC0xLiIpOworCisjZGVmaW5lIE9TX0ZQQVRIQ09ORl9NRVRIT0RERUYgICAgXAorICAgIHsiZnBhdGhjb25mIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZwYXRoY29uZiwgTUVUSF9WQVJBUkdTLCBvc19mcGF0aGNvbmZfX2RvY19ffSwKKworc3RhdGljIGxvbmcKK29zX2ZwYXRoY29uZl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IG5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnBhdGhjb25mKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgbmFtZTsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJjpmcGF0aGNvbmYiLAorICAgICAgICAmZmQsIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX2ZwYXRoY29uZl9pbXBsKG1vZHVsZSwgZmQsIG5hbWUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0ZQQVRIQ09ORikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9QQVRIQ09ORikKKworUHlEb2NfU1RSVkFSKG9zX3BhdGhjb25mX19kb2NfXywKKyJwYXRoY29uZigkbW9kdWxlLCAvLCBwYXRoLCBuYW1lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBjb25maWd1cmF0aW9uIGxpbWl0IG5hbWUgZm9yIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBwYXRoLlxuIgorIlxuIgorIklmIHRoZXJlIGlzIG5vIGxpbWl0LCByZXR1cm4gLTEuXG4iCisiT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOworCisjZGVmaW5lIE9TX1BBVEhDT05GX01FVEhPRERFRiAgICBcCisgICAgeyJwYXRoY29uZiIsIChQeUNGdW5jdGlvbilvc19wYXRoY29uZiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3BhdGhjb25mX19kb2NfX30sCisKK3N0YXRpYyBsb25nCitvc19wYXRoY29uZl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcGF0aGNvbmYoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWUiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJwYXRoY29uZiIsICJwYXRoIiwgMCwgUEFUSF9IQVZFX0ZQQVRIQ09ORik7CisgICAgaW50IG5hbWU7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJjpwYXRoY29uZiIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBjb252X3BhdGhfY29uZm5hbWUsICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19wYXRoY29uZl9pbXBsKG1vZHVsZSwgJnBhdGgsIG5hbWUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfUEFUSENPTkYpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfQ09ORlNUUikKKworUHlEb2NfU1RSVkFSKG9zX2NvbmZzdHJfX2RvY19fLAorImNvbmZzdHIoJG1vZHVsZSwgbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIHN0cmluZy12YWx1ZWQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuIik7CisKKyNkZWZpbmUgT1NfQ09ORlNUUl9NRVRIT0RERUYgICAgXAorICAgIHsiY29uZnN0ciIsIChQeUNGdW5jdGlvbilvc19jb25mc3RyLCBNRVRIX08sIG9zX2NvbmZzdHJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2NvbmZzdHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jb25mc3RyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IG5hbWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmNvbmZzdHIiLCBjb252X2NvbmZzdHJfY29uZm5hbWUsICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2NvbmZzdHJfaW1wbChtb2R1bGUsIG5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ09ORlNUUikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TWVNDT05GKQorCitQeURvY19TVFJWQVIob3Nfc3lzY29uZl9fZG9jX18sCisic3lzY29uZigkbW9kdWxlLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGFuIGludGVnZXItdmFsdWVkIHN5c3RlbSBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiIpOworCisjZGVmaW5lIE9TX1NZU0NPTkZfTUVUSE9EREVGICAgIFwKKyAgICB7InN5c2NvbmYiLCAoUHlDRnVuY3Rpb24pb3Nfc3lzY29uZiwgTUVUSF9PLCBvc19zeXNjb25mX19kb2NfX30sCisKK3N0YXRpYyBsb25nCitvc19zeXNjb25mX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3lzY29uZihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBuYW1lOworICAgIGxvbmcgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c3lzY29uZiIsIGNvbnZfc3lzY29uZl9jb25mbmFtZSwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX3N5c2NvbmZfaW1wbChtb2R1bGUsIG5hbWUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZU0NPTkYpICovCisKK1B5RG9jX1NUUlZBUihvc19hYm9ydF9fZG9jX18sCisiYWJvcnQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkFib3J0IHRoZSBpbnRlcnByZXRlciBpbW1lZGlhdGVseS5cbiIKKyJcbiIKKyJUaGlzIGZ1bmN0aW9uIFwnZHVtcHMgY29yZVwnIG9yIG90aGVyd2lzZSBmYWlscyBpbiB0aGUgaGFyZGVzdCB3YXkgcG9zc2libGVcbiIKKyJvbiB0aGUgaG9zdGluZyBvcGVyYXRpbmcgc3lzdGVtLiAgVGhpcyBmdW5jdGlvbiBuZXZlciByZXR1cm5zLiIpOworCisjZGVmaW5lIE9TX0FCT1JUX01FVEhPRERFRiAgICBcCisgICAgeyJhYm9ydCIsIChQeUNGdW5jdGlvbilvc19hYm9ydCwgTUVUSF9OT0FSR1MsIG9zX2Fib3J0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19hYm9ydF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfYWJvcnQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfYWJvcnRfaW1wbChtb2R1bGUpOworfQorCisjaWYgZGVmaW5lZChIQVZFX0dFVExPQURBVkcpCisKK1B5RG9jX1NUUlZBUihvc19nZXRsb2FkYXZnX19kb2NfXywKKyJnZXRsb2FkYXZnKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYXZlcmFnZSByZWNlbnQgc3lzdGVtIGxvYWQgaW5mb3JtYXRpb24uXG4iCisiXG4iCisiUmV0dXJuIHRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIGluIHRoZSBzeXN0ZW0gcnVuIHF1ZXVlIGF2ZXJhZ2VkIG92ZXJcbiIKKyJ0aGUgbGFzdCAxLCA1LCBhbmQgMTUgbWludXRlcyBhcyBhIHR1cGxlIG9mIHRocmVlIGZsb2F0cy5cbiIKKyJSYWlzZXMgT1NFcnJvciBpZiB0aGUgbG9hZCBhdmVyYWdlIHdhcyB1bm9idGFpbmFibGUuIik7CisKKyNkZWZpbmUgT1NfR0VUTE9BREFWR19NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0bG9hZGF2ZyIsIChQeUNGdW5jdGlvbilvc19nZXRsb2FkYXZnLCBNRVRIX05PQVJHUywgb3NfZ2V0bG9hZGF2Z19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0bG9hZGF2Z19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0bG9hZGF2ZyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRsb2FkYXZnX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRMT0FEQVZHKSAqLworCitQeURvY19TVFJWQVIob3NfZGV2aWNlX2VuY29kaW5nX19kb2NfXywKKyJkZXZpY2VfZW5jb2RpbmcoJG1vZHVsZSwgLywgZmQpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgZW5jb2Rpbmcgb2YgYSB0ZXJtaW5hbFwncyBmaWxlIGRlc2NyaXB0b3IuXG4iCisiXG4iCisiVGhlIGZpbGUgZGVzY3JpcHRvciBtdXN0IGJlIGF0dGFjaGVkIHRvIGEgdGVybWluYWwuXG4iCisiSWYgdGhlIGRldmljZSBpcyBub3QgYSB0ZXJtaW5hbCwgcmV0dXJuIE5vbmUuIik7CisKKyNkZWZpbmUgT1NfREVWSUNFX0VOQ09ESU5HX01FVEhPRERFRiAgICBcCisgICAgeyJkZXZpY2VfZW5jb2RpbmciLCAoUHlDRnVuY3Rpb24pb3NfZGV2aWNlX2VuY29kaW5nLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZGV2aWNlX2VuY29kaW5nX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19kZXZpY2VfZW5jb2RpbmdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZGV2aWNlX2VuY29kaW5nKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBpbnQgZmQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOmRldmljZV9lbmNvZGluZyIsIF9rZXl3b3JkcywKKyAgICAgICAgJmZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2RldmljZV9lbmNvZGluZ19pbXBsKG1vZHVsZSwgZmQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfU0VUUkVTVUlEKQorCitQeURvY19TVFJWQVIob3Nfc2V0cmVzdWlkX19kb2NfXywKKyJzZXRyZXN1aWQoJG1vZHVsZSwgcnVpZCwgZXVpZCwgc3VpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgY3VycmVudCBwcm9jZXNzXCdzIHJlYWwsIGVmZmVjdGl2ZSwgYW5kIHNhdmVkIHVzZXIgaWRzLiIpOworCisjZGVmaW5lIE9TX1NFVFJFU1VJRF9NRVRIT0RERUYgICAgXAorICAgIHsic2V0cmVzdWlkIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHJlc3VpZCwgTUVUSF9WQVJBUkdTLCBvc19zZXRyZXN1aWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHJlc3VpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHVpZF90IHJ1aWQsIHVpZF90IGV1aWQsIHVpZF90IHN1aWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cmVzdWlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHVpZF90IHJ1aWQ7CisgICAgdWlkX3QgZXVpZDsKKyAgICB1aWRfdCBzdWlkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mTyY6c2V0cmVzdWlkIiwKKyAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZydWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQsIF9QeV9VaWRfQ29udmVydGVyLCAmc3VpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRyZXN1aWRfaW1wbChtb2R1bGUsIHJ1aWQsIGV1aWQsIHN1aWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUUkVTVUlEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVFJFU0dJRCkKKworUHlEb2NfU1RSVkFSKG9zX3NldHJlc2dpZF9fZG9jX18sCisic2V0cmVzZ2lkKCRtb2R1bGUsIHJnaWQsIGVnaWQsIHNnaWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCBncm91cCBpZHMuIik7CisKKyNkZWZpbmUgT1NfU0VUUkVTR0lEX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRyZXNnaWQiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0cmVzZ2lkLCBNRVRIX1ZBUkFSR1MsIG9zX3NldHJlc2dpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cmVzZ2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgZ2lkX3QgcmdpZCwgZ2lkX3QgZWdpZCwgZ2lkX3Qgc2dpZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRyZXNnaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgZ2lkX3QgcmdpZDsKKyAgICBnaWRfdCBlZ2lkOworICAgIGdpZF90IHNnaWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyZPJjpzZXRyZXNnaWQiLAorICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJnJnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZzZ2lkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHJlc2dpZF9pbXBsKG1vZHVsZSwgcmdpZCwgZWdpZCwgc2dpZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TRVRSRVNHSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUUkVTVUlEKQorCitQeURvY19TVFJWQVIob3NfZ2V0cmVzdWlkX19kb2NfXywKKyJnZXRyZXN1aWQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIHR1cGxlIG9mIHRoZSBjdXJyZW50IHByb2Nlc3NcJ3MgcmVhbCwgZWZmZWN0aXZlLCBhbmQgc2F2ZWQgdXNlciBpZHMuIik7CisKKyNkZWZpbmUgT1NfR0VUUkVTVUlEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRyZXN1aWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cmVzdWlkLCBNRVRIX05PQVJHUywgb3NfZ2V0cmVzdWlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRyZXN1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHJlc3VpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRyZXN1aWRfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFJFU1VJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9HRVRSRVNHSUQpCisKK1B5RG9jX1NUUlZBUihvc19nZXRyZXNnaWRfX2RvY19fLAorImdldHJlc2dpZCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgdHVwbGUgb2YgdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCBncm91cCBpZHMuIik7CisKKyNkZWZpbmUgT1NfR0VUUkVTR0lEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRyZXNnaWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cmVzZ2lkLCBNRVRIX05PQVJHUywgb3NfZ2V0cmVzZ2lkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRyZXNnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHJlc2dpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRyZXNnaWRfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFJFU0dJRCkgKi8KKworI2lmIGRlZmluZWQoVVNFX1hBVFRSUykKKworUHlEb2NfU1RSVkFSKG9zX2dldHhhdHRyX19kb2NfXywKKyJnZXR4YXR0cigkbW9kdWxlLCAvLCBwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB2YWx1ZSBvZiBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGguXG4iCisiXG4iCisicGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIklmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuIgorIiAgbGluaywgZ2V0eGF0dHIgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG4iCisiICB0aGUgbGluayBwb2ludHMgdG8uIik7CisKKyNkZWZpbmUgT1NfR0VUWEFUVFJfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHhhdHRyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZ2V0eGF0dHJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHhhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBwYXRoX3QgKmF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXR4YXR0cihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImdldHhhdHRyIiwgInBhdGgiLCAwLCAxKTsKKyAgICBwYXRoX3QgYXR0cmlidXRlID0gUEFUSF9UX0lOSVRJQUxJWkUoImdldHhhdHRyIiwgImF0dHJpYnV0ZSIsIDAsIDApOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkcDpnZXR4YXR0ciIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19nZXR4YXR0cl9pbXBsKG1vZHVsZSwgJnBhdGgsICZhdHRyaWJ1dGUsIGZvbGxvd19zeW1saW5rcyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgLyogQ2xlYW51cCBmb3IgYXR0cmlidXRlICovCisgICAgcGF0aF9jbGVhbnVwKCZhdHRyaWJ1dGUpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoVVNFX1hBVFRSUykgKi8KKworI2lmIGRlZmluZWQoVVNFX1hBVFRSUykKKworUHlEb2NfU1RSVkFSKG9zX3NldHhhdHRyX19kb2NfXywKKyJzZXR4YXR0cigkbW9kdWxlLCAvLCBwYXRoLCBhdHRyaWJ1dGUsIHZhbHVlLCBmbGFncz0wLCAqLFxuIgorIiAgICAgICAgIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aCB0byB2YWx1ZS5cbiIKKyJcbiIKKyJwYXRoIG1heSBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG4iCisiICBsaW5rLCBzZXR4YXR0ciB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuIgorIiAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCisjZGVmaW5lIE9TX1NFVFhBVFRSX01FVEhPRERFRiAgICBcCisgICAgeyJzZXR4YXR0ciIsIChQeUNGdW5jdGlvbilvc19zZXR4YXR0ciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3NldHhhdHRyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXR4YXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgcGF0aF90ICphdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqdmFsdWUsIGludCBmbGFncywgaW50IGZvbGxvd19zeW1saW5rcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXR4YXR0cihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgInZhbHVlIiwgImZsYWdzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInNldHhhdHRyIiwgInBhdGgiLCAwLCAxKTsKKyAgICBwYXRoX3QgYXR0cmlidXRlID0gUEFUSF9UX0lOSVRJQUxJWkUoInNldHhhdHRyIiwgImF0dHJpYnV0ZSIsIDAsIDApOworICAgIFB5X2J1ZmZlciB2YWx1ZSA9IHtOVUxMLCBOVUxMfTsKKyAgICBpbnQgZmxhZ3MgPSAwOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnkqfGkkcDpzZXR4YXR0ciIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwgJnZhbHVlLCAmZmxhZ3MsICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0eGF0dHJfaW1wbChtb2R1bGUsICZwYXRoLCAmYXR0cmlidXRlLCAmdmFsdWUsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3MpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIC8qIENsZWFudXAgZm9yIGF0dHJpYnV0ZSAqLworICAgIHBhdGhfY2xlYW51cCgmYXR0cmlidXRlKTsKKyAgICAvKiBDbGVhbnVwIGZvciB2YWx1ZSAqLworICAgIGlmICh2YWx1ZS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmFsdWUpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoVVNFX1hBVFRSUykgKi8KKworI2lmIGRlZmluZWQoVVNFX1hBVFRSUykKKworUHlEb2NfU1RSVkFSKG9zX3JlbW92ZXhhdHRyX19kb2NfXywKKyJyZW1vdmV4YXR0cigkbW9kdWxlLCAvLCBwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiUmVtb3ZlIGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aC5cbiIKKyJcbiIKKyJwYXRoIG1heSBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG4iCisiICBsaW5rLCByZW1vdmV4YXR0ciB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuIgorIiAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCisjZGVmaW5lIE9TX1JFTU9WRVhBVFRSX01FVEhPRERFRiAgICBcCisgICAgeyJyZW1vdmV4YXR0ciIsIChQeUNGdW5jdGlvbilvc19yZW1vdmV4YXR0ciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlbW92ZXhhdHRyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19yZW1vdmV4YXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgcGF0aF90ICphdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVtb3ZleGF0dHIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW1vdmV4YXR0ciIsICJwYXRoIiwgMCwgMSk7CisgICAgcGF0aF90IGF0dHJpYnV0ZSA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW1vdmV4YXR0ciIsICJhdHRyaWJ1dGUiLCAwLCAwKTsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JHA6cmVtb3ZleGF0dHIiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfcmVtb3ZleGF0dHJfaW1wbChtb2R1bGUsICZwYXRoLCAmYXR0cmlidXRlLCBmb2xsb3dfc3ltbGlua3MpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIC8qIENsZWFudXAgZm9yIGF0dHJpYnV0ZSAqLworICAgIHBhdGhfY2xlYW51cCgmYXR0cmlidXRlKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKFVTRV9YQVRUUlMpICovCisKKyNpZiBkZWZpbmVkKFVTRV9YQVRUUlMpCisKK1B5RG9jX1NUUlZBUihvc19saXN0eGF0dHJfX2RvY19fLAorImxpc3R4YXR0cigkbW9kdWxlLCAvLCBwYXRoPU5vbmUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIG9uIHBhdGguXG4iCisiXG4iCisicGF0aCBtYXkgYmUgZWl0aGVyIE5vbmUsIGEgc3RyaW5nLCBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyJpZiBwYXRoIGlzIE5vbmUsIGxpc3R4YXR0ciB3aWxsIGV4YW1pbmUgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LlxuIgorIklmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuIgorIiAgbGluaywgbGlzdHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuIgorIiAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCisjZGVmaW5lIE9TX0xJU1RYQVRUUl9NRVRIT0RERUYgICAgXAorICAgIHsibGlzdHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKW9zX2xpc3R4YXR0ciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xpc3R4YXR0cl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGlzdHhhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2xpc3R4YXR0cihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGlzdHhhdHRyIiwgInBhdGgiLCAxLCAxKTsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPJiRwOmxpc3R4YXR0ciIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2xpc3R4YXR0cl9pbXBsKG1vZHVsZSwgJnBhdGgsIGZvbGxvd19zeW1saW5rcyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChVU0VfWEFUVFJTKSAqLworCitQeURvY19TVFJWQVIob3NfdXJhbmRvbV9fZG9jX18sCisidXJhbmRvbSgkbW9kdWxlLCBzaXplLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgcmFuZG9tIGJ5dGVzIHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHVzZS4iKTsKKworI2RlZmluZSBPU19VUkFORE9NX01FVEhPRERFRiAgICBcCisgICAgeyJ1cmFuZG9tIiwgKFB5Q0Z1bmN0aW9uKW9zX3VyYW5kb20sIE1FVEhfTywgb3NfdXJhbmRvbV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdXJhbmRvbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X3NzaXplX3Qgc2l6ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc191cmFuZG9tKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBzaXplOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJuOnVyYW5kb20iLCAmc2l6ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc191cmFuZG9tX2ltcGwobW9kdWxlLCBzaXplKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3NfY3B1X2NvdW50X19kb2NfXywKKyJjcHVfY291bnQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbTsgcmV0dXJuIE5vbmUgaWYgaW5kZXRlcm1pbmFibGUuIik7CisKKyNkZWZpbmUgT1NfQ1BVX0NPVU5UX01FVEhPRERFRiAgICBcCisgICAgeyJjcHVfY291bnQiLCAoUHlDRnVuY3Rpb24pb3NfY3B1X2NvdW50LCBNRVRIX05PQVJHUywgb3NfY3B1X2NvdW50X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jcHVfY291bnRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2NwdV9jb3VudChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19jcHVfY291bnRfaW1wbChtb2R1bGUpOworfQorCitQeURvY19TVFJWQVIob3NfZ2V0X2luaGVyaXRhYmxlX19kb2NfXywKKyJnZXRfaW5oZXJpdGFibGUoJG1vZHVsZSwgZmQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJHZXQgdGhlIGNsb3NlLW9uLWV4ZSBmbGFnIG9mIHRoZSBzcGVjaWZpZWQgZmlsZSBkZXNjcmlwdG9yLiIpOworCisjZGVmaW5lIE9TX0dFVF9JTkhFUklUQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0X2luaGVyaXRhYmxlIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldF9pbmhlcml0YWJsZSwgTUVUSF9PLCBvc19nZXRfaW5oZXJpdGFibGVfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfZ2V0X2luaGVyaXRhYmxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldF9pbmhlcml0YWJsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpnZXRfaW5oZXJpdGFibGUiLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX2dldF9pbmhlcml0YWJsZV9pbXBsKG1vZHVsZSwgZmQpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3Nfc2V0X2luaGVyaXRhYmxlX19kb2NfXywKKyJzZXRfaW5oZXJpdGFibGUoJG1vZHVsZSwgZmQsIGluaGVyaXRhYmxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBpbmhlcml0YWJsZSBmbGFnIG9mIHRoZSBzcGVjaWZpZWQgZmlsZSBkZXNjcmlwdG9yLiIpOworCisjZGVmaW5lIE9TX1NFVF9JTkhFUklUQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsic2V0X2luaGVyaXRhYmxlIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldF9pbmhlcml0YWJsZSwgTUVUSF9WQVJBUkdTLCBvc19zZXRfaW5oZXJpdGFibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldF9pbmhlcml0YWJsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGluaGVyaXRhYmxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldF9pbmhlcml0YWJsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IGluaGVyaXRhYmxlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzZXRfaW5oZXJpdGFibGUiLAorICAgICAgICAmZmQsICZpbmhlcml0YWJsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRfaW5oZXJpdGFibGVfaW1wbChtb2R1bGUsIGZkLCBpbmhlcml0YWJsZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfX2RvY19fLAorImdldF9oYW5kbGVfaW5oZXJpdGFibGUoJG1vZHVsZSwgaGFuZGxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiR2V0IHRoZSBjbG9zZS1vbi1leGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4iKTsKKworI2RlZmluZSBPU19HRVRfSEFORExFX0lOSEVSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRfaGFuZGxlX2luaGVyaXRhYmxlIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGUsIE1FVEhfTywgb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9fZG9jX199LAorCitzdGF0aWMgaW50Citvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldF9oYW5kbGVfaW5oZXJpdGFibGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9pbnRwdHJfdCBoYW5kbGU7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX0lOVFBUUiAiOmdldF9oYW5kbGVfaW5oZXJpdGFibGUiLCAmaGFuZGxlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwobW9kdWxlLCBoYW5kbGUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIob3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9fZG9jX18sCisic2V0X2hhbmRsZV9pbmhlcml0YWJsZSgkbW9kdWxlLCBoYW5kbGUsIGluaGVyaXRhYmxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBpbmhlcml0YWJsZSBmbGFnIG9mIHRoZSBzcGVjaWZpZWQgaGFuZGxlLiIpOworCisjZGVmaW5lIE9TX1NFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InNldF9oYW5kbGVfaW5oZXJpdGFibGUiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZSwgTUVUSF9WQVJBUkdTLCBvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmhlcml0YWJsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2ludHB0cl90IGhhbmRsZTsKKyAgICBpbnQgaW5oZXJpdGFibGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX0lOVFBUUiAicDpzZXRfaGFuZGxlX2luaGVyaXRhYmxlIiwKKyAgICAgICAgJmhhbmRsZSwgJmluaGVyaXRhYmxlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChtb2R1bGUsIGhhbmRsZSwgaW5oZXJpdGFibGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZm5kZWYgT1NfVFRZTkFNRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1RUWU5BTUVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfVFRZTkFNRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfQ1RFUk1JRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0NURVJNSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfQ1RFUk1JRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRkNIRElSX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRkNIRElSX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0ZDSERJUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRkNITU9EX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRkNITU9EX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0ZDSE1PRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTENITU9EX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfTENITU9EX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0xDSE1PRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfQ0hGTEFHU19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0NIRkxBR1NfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfQ0hGTEFHU19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTENIRkxBR1NfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19MQ0hGTEFHU19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19MQ0hGTEFHU19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfQ0hST09UX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfQ0hST09UX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0NIUk9PVF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRlNZTkNfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19GU1lOQ19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19GU1lOQ19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU1lOQ19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NZTkNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU1lOQ19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRkRBVEFTWU5DX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRkRBVEFTWU5DX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0ZEQVRBU1lOQ19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfQ0hPV05fTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19DSE9XTl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19DSE9XTl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRkNIT1dOX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRkNIT1dOX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0ZDSE9XTl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTENIT1dOX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfTENIT1dOX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0xDSE9XTl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTElOS19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0xJTktfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfTElOS19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfX0dFVEZVTExQQVRITkFNRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX19HRVRGVUxMUEFUSE5BTUVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfX0dFVEZVTExQQVRITkFNRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfX0dFVEZJTkFMUEFUSE5BTUVfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19fR0VURklOQUxQQVRITkFNRV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19fR0VURklOQUxQQVRITkFNRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfX0lTRElSX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfX0lTRElSX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX19JU0RJUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfX0dFVFZPTFVNRVBBVEhOQU1FX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfX0dFVFZPTFVNRVBBVEhOQU1FX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX19HRVRWT0xVTUVQQVRITkFNRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTklDRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX05JQ0VfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfTklDRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUUFJJT1JJVFlfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRQUklPUklUWV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRQUklPUklUWV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUUFJJT1JJVFlfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TRVRQUklPUklUWV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRQUklPUklUWV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU1lTVEVNX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU1lTVEVNX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NZU1RFTV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfVU5BTUVfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19VTkFNRV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19VTkFNRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRVhFQ1ZfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19FWEVDVl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19FWEVDVl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRVhFQ1ZFX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRVhFQ1ZFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0VYRUNWRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU1BBV05WX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU1BBV05WX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NQQVdOVl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU1BBV05WRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NQQVdOVkVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU1BBV05WRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRk9SSzFfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19GT1JLMV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19GT1JLMV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRk9SS19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0ZPUktfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfRk9SS19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfR0VUX1BSSU9SSVRZX01BWF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NDSEVEX0dFVF9QUklPUklUWV9NQVhfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0NIRURfR0VUX1BSSU9SSVRZX01BWF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfR0VUX1BSSU9SSVRZX01JTl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NDSEVEX0dFVF9QUklPUklUWV9NSU5fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0NIRURfR0VUX1BSSU9SSVRZX01JTl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfR0VUU0NIRURVTEVSX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0NIRURfR0VUU0NIRURVTEVSX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NDSEVEX0dFVFNDSEVEVUxFUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfU0VUU0NIRURVTEVSX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0NIRURfU0VUU0NIRURVTEVSX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NDSEVEX1NFVFNDSEVEVUxFUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfR0VUUEFSQU1fTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TQ0hFRF9HRVRQQVJBTV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TQ0hFRF9HRVRQQVJBTV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfU0VUUEFSQU1fTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TQ0hFRF9TRVRQQVJBTV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TQ0hFRF9TRVRQQVJBTV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfUlJfR0VUX0lOVEVSVkFMX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0NIRURfUlJfR0VUX0lOVEVSVkFMX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NDSEVEX1JSX0dFVF9JTlRFUlZBTF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfWUlFTERfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TQ0hFRF9ZSUVMRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TQ0hFRF9ZSUVMRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfU0VUQUZGSU5JVFlfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TQ0hFRF9TRVRBRkZJTklUWV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TQ0hFRF9TRVRBRkZJTklUWV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfR0VUQUZGSU5JVFlfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TQ0hFRF9HRVRBRkZJTklUWV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TQ0hFRF9HRVRBRkZJTklUWV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfT1BFTlBUWV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX09QRU5QVFlfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfT1BFTlBUWV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRk9SS1BUWV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0ZPUktQVFlfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfRk9SS1BUWV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VURUdJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVEVHSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VURUdJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VURVVJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVEVVSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VURVVJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUR0lEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUR0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVEdJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUR1JPVVBTX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUR1JPVVBTX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVEdST1VQU19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUUEdJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVFBHSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUUEdJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUUEdSUF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVFBHUlBfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUUEdSUF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUUEdSUF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVFBHUlBfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VUUEdSUF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUUFBJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVFBQSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUUFBJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUTE9HSU5fTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRMT0dJTl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRMT0dJTl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUVUlEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUVUlEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFVJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfS0lMTF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0tJTExfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfS0lMTF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfS0lMTFBHX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfS0lMTFBHX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0tJTExQR19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUExPQ0tfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19QTE9DS19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19QTE9DS19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUVUlEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUVUlEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVFVJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VURVVJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVEVVSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VURVVJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VURUdJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVEVHSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VURUdJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUUkVVSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TRVRSRVVJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRSRVVJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUUkVHSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TRVRSRUdJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRSRUdJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUR0lEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUR0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVEdJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUR1JPVVBTX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUR1JPVVBTX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVEdST1VQU19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0FJVDNfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19XQUlUM19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XQUlUM19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0FJVDRfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19XQUlUNF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XQUlUNF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0FJVElEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV0FJVElEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1dBSVRJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0FJVFBJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1dBSVRQSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfV0FJVFBJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0FJVF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1dBSVRfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfV0FJVF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU1lNTElOS19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NZTUxJTktfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU1lNTElOS19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfVElNRVNfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19USU1FU19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19USU1FU19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUU0lEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUU0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFNJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUU0lEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUU0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVFNJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUUEdJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVFBHSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VUUEdJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfVENHRVRQR1JQX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfVENHRVRQR1JQX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1RDR0VUUEdSUF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfVENTRVRQR1JQX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfVENTRVRQR1JQX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1RDU0VUUEdSUF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTE9DS0ZfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19MT0NLRl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19MT0NLRl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUkVBRFZfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19SRUFEVl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19SRUFEVl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUFJFQURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19QUkVBRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19QUkVBRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUElQRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1BJUEVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfUElQRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUElQRTJfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19QSVBFMl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19QSVBFMl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV1JJVEVWX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV1JJVEVWX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1dSSVRFVl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUFdSSVRFX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfUFdSSVRFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1BXUklURV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTUtGSUZPX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfTUtGSUZPX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX01LRklGT19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTUtOT0RfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19NS05PRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19NS05PRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTUFKT1JfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19NQUpPUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19NQUpPUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTUlOT1JfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19NSU5PUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19NSU5PUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTUFLRURFVl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX01BS0VERVZfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfTUFLRURFVl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRlRSVU5DQVRFX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRlRSVU5DQVRFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0ZUUlVOQ0FURV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfVFJVTkNBVEVfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19UUlVOQ0FURV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19UUlVOQ0FURV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUE9TSVhfRkFMTE9DQVRFX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfUE9TSVhfRkFMTE9DQVRFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1BPU0lYX0ZBTExPQ0FURV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUE9TSVhfRkFEVklTRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1BPU0lYX0ZBRFZJU0VfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfUE9TSVhfRkFEVklTRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUFVURU5WX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfUFVURU5WX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1BVVEVOVl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfVU5TRVRFTlZfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19VTlNFVEVOVl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19VTlNFVEVOVl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0NPUkVEVU1QX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV0NPUkVEVU1QX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1dDT1JFRFVNUF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0lGQ09OVElOVUVEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV0lGQ09OVElOVUVEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1dJRkNPTlRJTlVFRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0lGU1RPUFBFRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1dJRlNUT1BQRURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfV0lGU1RPUFBFRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0lGU0lHTkFMRURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19XSUZTSUdOQUxFRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XSUZTSUdOQUxFRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0lGRVhJVEVEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV0lGRVhJVEVEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1dJRkVYSVRFRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0VYSVRTVEFUVVNfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19XRVhJVFNUQVRVU19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XRVhJVFNUQVRVU19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV1RFUk1TSUdfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19XVEVSTVNJR19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XVEVSTVNJR19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV1NUT1BTSUdfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19XU1RPUFNJR19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XU1RPUFNJR19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRlNUQVRWRlNfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19GU1RBVFZGU19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19GU1RBVFZGU19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU1RBVFZGU19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NUQVRWRlNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU1RBVFZGU19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfX0dFVERJU0tVU0FHRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX19HRVRESVNLVVNBR0VfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfX0dFVERJU0tVU0FHRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRlBBVEhDT05GX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRlBBVEhDT05GX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0ZQQVRIQ09ORl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUEFUSENPTkZfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19QQVRIQ09ORl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19QQVRIQ09ORl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfQ09ORlNUUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0NPTkZTVFJfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfQ09ORlNUUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU1lTQ09ORl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NZU0NPTkZfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU1lTQ09ORl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUTE9BREFWR19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVExPQURBVkdfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUTE9BREFWR19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUUkVTVUlEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUUkVTVUlEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVFJFU1VJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUUkVTR0lEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUUkVTR0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVFJFU0dJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUUkVTVUlEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUUkVTVUlEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFJFU1VJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUUkVTR0lEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUUkVTR0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFJFU0dJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUWEFUVFJfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRYQVRUUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRYQVRUUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUWEFUVFJfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TRVRYQVRUUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRYQVRUUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUkVNT1ZFWEFUVFJfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19SRU1PVkVYQVRUUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19SRU1PVkVYQVRUUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTElTVFhBVFRSX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfTElTVFhBVFRSX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0xJU1RYQVRUUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTU4MjRjNTJmZDAzNDY1NCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9wd2Rtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvcHdkbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGUyZTRmCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvcHdkbW9kdWxlLmMuaApAQCAtMCwwICsxLDcxIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIocHdkX2dldHB3dWlkX19kb2NfXywKKyJnZXRwd3VpZCgkbW9kdWxlLCB1aWRvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gbnVtZXJpYyB1c2VyIElELlxuIgorIlxuIgorIlNlZSBgaGVscChwd2QpYCBmb3IgbW9yZSBvbiBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLiIpOworCisjZGVmaW5lIFBXRF9HRVRQV1VJRF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cHd1aWQiLCAoUHlDRnVuY3Rpb24pcHdkX2dldHB3dWlkLCBNRVRIX08sIHB3ZF9nZXRwd3VpZF9fZG9jX199LAorCitQeURvY19TVFJWQVIocHdkX2dldHB3bmFtX19kb2NfXywKKyJnZXRwd25hbSgkbW9kdWxlLCBhcmcsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gdXNlciBuYW1lLlxuIgorIlxuIgorIlNlZSBgaGVscChwd2QpYCBmb3IgbW9yZSBvbiBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLiIpOworCisjZGVmaW5lIFBXRF9HRVRQV05BTV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cHduYW0iLCAoUHlDRnVuY3Rpb24pcHdkX2dldHB3bmFtLCBNRVRIX08sIHB3ZF9nZXRwd25hbV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHdkX2dldHB3bmFtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwd2RfZ2V0cHduYW0oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ18pCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmFyZzsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnXywgIlU6Z2V0cHduYW0iLCAmYXJnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHB3ZF9nZXRwd25hbV9pbXBsKG1vZHVsZSwgYXJnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX0dFVFBXRU5UKQorCitQeURvY19TVFJWQVIocHdkX2dldHB3YWxsX19kb2NfXywKKyJnZXRwd2FsbCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMsIGluIGFyYml0cmFyeSBvcmRlci5cbiIKKyJcbiIKKyJTZWUgaGVscChwd2QpIGZvciBtb3JlIG9uIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMuIik7CisKKyNkZWZpbmUgUFdEX0dFVFBXQUxMX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRwd2FsbCIsIChQeUNGdW5jdGlvbilwd2RfZ2V0cHdhbGwsIE1FVEhfTk9BUkdTLCBwd2RfZ2V0cHdhbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3B3ZF9nZXRwd2FsbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHdkX2dldHB3YWxsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIHB3ZF9nZXRwd2FsbF9pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUUFdFTlQpICovCisKKyNpZm5kZWYgUFdEX0dFVFBXQUxMX01FVEhPRERFRgorICAgICNkZWZpbmUgUFdEX0dFVFBXQUxMX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFBXRF9HRVRQV0FMTF9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmVkMGVjZjM0ZmQzZjk4ZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9weWV4cGF0LmMuaCBiL01vZHVsZXMvY2xpbmljL3B5ZXhwYXQuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3OWM1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9weWV4cGF0LmMuaApAQCAtMCwwICsxLDI4NCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHB5ZXhwYXRfeG1scGFyc2VyX1BhcnNlX19kb2NfXywKKyJQYXJzZSgkc2VsZiwgZGF0YSwgaXNmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlBhcnNlIFhNTCBkYXRhLlxuIgorIlxuIgorImBpc2ZpbmFsXCcgc2hvdWxkIGJlIHRydWUgYXQgZW5kIG9mIGlucHV0LiIpOworCisjZGVmaW5lIFBZRVhQQVRfWE1MUEFSU0VSX1BBUlNFX01FVEhPRERFRiAgICBcCisgICAgeyJQYXJzZSIsIChQeUNGdW5jdGlvbilweWV4cGF0X3htbHBhcnNlcl9QYXJzZSwgTUVUSF9WQVJBUkdTLCBweWV4cGF0X3htbHBhcnNlcl9QYXJzZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfUGFyc2VfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpc2ZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX1BhcnNlKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZGF0YTsKKyAgICBpbnQgaXNmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpQYXJzZSIsCisgICAgICAgICZkYXRhLCAmaXNmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3htbHBhcnNlcl9QYXJzZV9pbXBsKHNlbGYsIGRhdGEsIGlzZmluYWwpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihweWV4cGF0X3htbHBhcnNlcl9QYXJzZUZpbGVfX2RvY19fLAorIlBhcnNlRmlsZSgkc2VsZiwgZmlsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlBhcnNlIFhNTCBkYXRhIGZyb20gZmlsZS1saWtlIG9iamVjdC4iKTsKKworI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9QQVJTRUZJTEVfTUVUSE9EREVGICAgIFwKKyAgICB7IlBhcnNlRmlsZSIsIChQeUNGdW5jdGlvbilweWV4cGF0X3htbHBhcnNlcl9QYXJzZUZpbGUsIE1FVEhfTywgcHlleHBhdF94bWxwYXJzZXJfUGFyc2VGaWxlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihweWV4cGF0X3htbHBhcnNlcl9TZXRCYXNlX19kb2NfXywKKyJTZXRCYXNlKCRzZWxmLCBiYXNlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBiYXNlIFVSTCBmb3IgdGhlIHBhcnNlci4iKTsKKworI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9TRVRCQVNFX01FVEhPRERFRiAgICBcCisgICAgeyJTZXRCYXNlIiwgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfeG1scGFyc2VyX1NldEJhc2UsIE1FVEhfTywgcHlleHBhdF94bWxwYXJzZXJfU2V0QmFzZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfU2V0QmFzZV9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpiYXNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX1NldEJhc2UoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqYmFzZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpTZXRCYXNlIiwgJmJhc2UpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfU2V0QmFzZV9pbXBsKHNlbGYsIGJhc2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihweWV4cGF0X3htbHBhcnNlcl9HZXRCYXNlX19kb2NfXywKKyJHZXRCYXNlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGJhc2UgVVJMIHN0cmluZyBmb3IgdGhlIHBhcnNlci4iKTsKKworI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9HRVRCQVNFX01FVEhPRERFRiAgICBcCisgICAgeyJHZXRCYXNlIiwgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfeG1scGFyc2VyX0dldEJhc2UsIE1FVEhfTk9BUkdTLCBweWV4cGF0X3htbHBhcnNlcl9HZXRCYXNlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9HZXRCYXNlX2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfR2V0QmFzZSh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gcHlleHBhdF94bWxwYXJzZXJfR2V0QmFzZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIocHlleHBhdF94bWxwYXJzZXJfR2V0SW5wdXRDb250ZXh0X19kb2NfXywKKyJHZXRJbnB1dENvbnRleHQoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHVudHJhbnNsYXRlZCB0ZXh0IG9mIHRoZSBpbnB1dCB0aGF0IGNhdXNlZCB0aGUgY3VycmVudCBldmVudC5cbiIKKyJcbiIKKyJJZiB0aGUgZXZlbnQgd2FzIGdlbmVyYXRlZCBieSBhIGxhcmdlIGFtb3VudCBvZiB0ZXh0IChzdWNoIGFzIGEgc3RhcnQgdGFnXG4iCisiZm9yIGFuIGVsZW1lbnQgd2l0aCBtYW55IGF0dHJpYnV0ZXMpLCBub3QgYWxsIG9mIHRoZSB0ZXh0IG1heSBiZSBhdmFpbGFibGUuIik7CisKKyNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfR0VUSU5QVVRDT05URVhUX01FVEhPRERFRiAgICBcCisgICAgeyJHZXRJbnB1dENvbnRleHQiLCAoUHlDRnVuY3Rpb24pcHlleHBhdF94bWxwYXJzZXJfR2V0SW5wdXRDb250ZXh0LCBNRVRIX05PQVJHUywgcHlleHBhdF94bWxwYXJzZXJfR2V0SW5wdXRDb250ZXh0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9HZXRJbnB1dENvbnRleHRfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9HZXRJbnB1dENvbnRleHQoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIHB5ZXhwYXRfeG1scGFyc2VyX0dldElucHV0Q29udGV4dF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIocHlleHBhdF94bWxwYXJzZXJfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGVfX2RvY19fLAorIkV4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlKCRzZWxmLCBjb250ZXh0LCBlbmNvZGluZz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgcGFyc2VyIGZvciBwYXJzaW5nIGFuIGV4dGVybmFsIGVudGl0eSBiYXNlZCBvbiB0aGUgaW5mb3JtYXRpb24gcGFzc2VkIHRvIHRoZSBFeHRlcm5hbEVudGl0eVJlZkhhbmRsZXIuIik7CisKKyNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfRVhURVJOQUxFTlRJVFlQQVJTRVJDUkVBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IkV4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlIiwgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfeG1scGFyc2VyX0V4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlLCBNRVRIX1ZBUkFSR1MsIHB5ZXhwYXRfeG1scGFyc2VyX0V4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZV9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqY29udGV4dDsKKyAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInp8czpFeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSIsCisgICAgICAgICZjb250ZXh0LCAmZW5jb2RpbmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGVfaW1wbChzZWxmLCBjb250ZXh0LCBlbmNvZGluZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHB5ZXhwYXRfeG1scGFyc2VyX1NldFBhcmFtRW50aXR5UGFyc2luZ19fZG9jX18sCisiU2V0UGFyYW1FbnRpdHlQYXJzaW5nKCRzZWxmLCBmbGFnLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ29udHJvbHMgcGFyc2luZyBvZiBwYXJhbWV0ZXIgZW50aXRpZXMgKGluY2x1ZGluZyB0aGUgZXh0ZXJuYWwgRFREIHN1YnNldCkuXG4iCisiXG4iCisiUG9zc2libGUgZmxhZyB2YWx1ZXMgYXJlIFhNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19ORVZFUixcbiIKKyJYTUxfUEFSQU1fRU5USVRZX1BBUlNJTkdfVU5MRVNTX1NUQU5EQUxPTkUgYW5kXG4iCisiWE1MX1BBUkFNX0VOVElUWV9QQVJTSU5HX0FMV0FZUy4gUmV0dXJucyB0cnVlIGlmIHNldHRpbmcgdGhlIGZsYWdcbiIKKyJ3YXMgc3VjY2Vzc2Z1bC4iKTsKKworI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9TRVRQQVJBTUVOVElUWVBBUlNJTkdfTUVUSE9EREVGICAgIFwKKyAgICB7IlNldFBhcmFtRW50aXR5UGFyc2luZyIsIChQeUNGdW5jdGlvbilweWV4cGF0X3htbHBhcnNlcl9TZXRQYXJhbUVudGl0eVBhcnNpbmcsIE1FVEhfTywgcHlleHBhdF94bWxwYXJzZXJfU2V0UGFyYW1FbnRpdHlQYXJzaW5nX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9TZXRQYXJhbUVudGl0eVBhcnNpbmdfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgaW50IGZsYWcpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfU2V0UGFyYW1FbnRpdHlQYXJzaW5nKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmbGFnOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlNldFBhcmFtRW50aXR5UGFyc2luZyIsICZmbGFnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfeG1scGFyc2VyX1NldFBhcmFtRW50aXR5UGFyc2luZ19pbXBsKHNlbGYsIGZsYWcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiAoWE1MX0NPTUJJTkVEX1ZFUlNJT04gPj0gMTk1MDUpCisKK1B5RG9jX1NUUlZBUihweWV4cGF0X3htbHBhcnNlcl9Vc2VGb3JlaWduRFREX19kb2NfXywKKyJVc2VGb3JlaWduRFREKCRzZWxmLCBmbGFnPVRydWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBbGxvd3MgdGhlIGFwcGxpY2F0aW9uIHRvIHByb3ZpZGUgYW4gYXJ0aWZpY2lhbCBleHRlcm5hbCBzdWJzZXQgaWYgb25lIGlzIG5vdCBzcGVjaWZpZWQgYXMgcGFydCBvZiB0aGUgZG9jdW1lbnQgaW5zdGFuY2UuXG4iCisiXG4iCisiVGhpcyByZWFkaWx5IGFsbG93cyB0aGUgdXNlIG9mIGEgXCdkZWZhdWx0XCcgZG9jdW1lbnQgdHlwZSBjb250cm9sbGVkIGJ5IHRoZVxuIgorImFwcGxpY2F0aW9uLCB3aGlsZSBzdGlsbCBnZXR0aW5nIHRoZSBhZHZhbnRhZ2Ugb2YgcHJvdmlkaW5nIGRvY3VtZW50IHR5cGVcbiIKKyJpbmZvcm1hdGlvbiB0byB0aGUgcGFyc2VyLiBcJ2ZsYWdcJyBkZWZhdWx0cyB0byBUcnVlIGlmIG5vdCBwcm92aWRlZC4iKTsKKworI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRiAgICBcCisgICAgeyJVc2VGb3JlaWduRFREIiwgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfeG1scGFyc2VyX1VzZUZvcmVpZ25EVEQsIE1FVEhfVkFSQVJHUywgcHlleHBhdF94bWxwYXJzZXJfVXNlRm9yZWlnbkRURF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfVXNlRm9yZWlnbkRURF9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBpbnQgZmxhZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9Vc2VGb3JlaWduRFREKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmxhZyA9IDE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxwOlVzZUZvcmVpZ25EVEQiLAorICAgICAgICAmZmxhZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3htbHBhcnNlcl9Vc2VGb3JlaWduRFREX2ltcGwoc2VsZiwgZmxhZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChYTUxfQ09NQklORURfVkVSU0lPTiA+PSAxOTUwNSkgKi8KKworUHlEb2NfU1RSVkFSKHB5ZXhwYXRfeG1scGFyc2VyX19fZGlyX19fX2RvY19fLAorIl9fZGlyX18oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIFBZRVhQQVRfWE1MUEFSU0VSX19fRElSX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fZGlyX18iLCAoUHlDRnVuY3Rpb24pcHlleHBhdF94bWxwYXJzZXJfX19kaXJfXywgTUVUSF9OT0FSR1MsIHB5ZXhwYXRfeG1scGFyc2VyX19fZGlyX19fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX19fZGlyX19faW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9fX2Rpcl9fKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBweWV4cGF0X3htbHBhcnNlcl9fX2Rpcl9fX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihweWV4cGF0X1BhcnNlckNyZWF0ZV9fZG9jX18sCisiUGFyc2VyQ3JlYXRlKCRtb2R1bGUsIC8sIGVuY29kaW5nPU5vbmUsIG5hbWVzcGFjZV9zZXBhcmF0b3I9Tm9uZSxcbiIKKyIgICAgICAgICAgICAgaW50ZXJuPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBuZXcgWE1MIHBhcnNlciBvYmplY3QuIik7CisKKyNkZWZpbmUgUFlFWFBBVF9QQVJTRVJDUkVBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IlBhcnNlckNyZWF0ZSIsIChQeUNGdW5jdGlvbilweWV4cGF0X1BhcnNlckNyZWF0ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHB5ZXhwYXRfUGFyc2VyQ3JlYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X1BhcnNlckNyZWF0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lc3BhY2Vfc2VwYXJhdG9yLCBQeU9iamVjdCAqaW50ZXJuKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfUGFyc2VyQ3JlYXRlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAibmFtZXNwYWNlX3NlcGFyYXRvciIsICJpbnRlcm4iLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqbmFtZXNwYWNlX3NlcGFyYXRvciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmludGVybiA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8enpPOlBhcnNlckNyZWF0ZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmVuY29kaW5nLCAmbmFtZXNwYWNlX3NlcGFyYXRvciwgJmludGVybikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X1BhcnNlckNyZWF0ZV9pbXBsKG1vZHVsZSwgZW5jb2RpbmcsIG5hbWVzcGFjZV9zZXBhcmF0b3IsIGludGVybik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHB5ZXhwYXRfRXJyb3JTdHJpbmdfX2RvY19fLAorIkVycm9yU3RyaW5nKCRtb2R1bGUsIGNvZGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHN0cmluZyBlcnJvciBmb3IgZ2l2ZW4gbnVtYmVyLiIpOworCisjZGVmaW5lIFBZRVhQQVRfRVJST1JTVFJJTkdfTUVUSE9EREVGICAgIFwKKyAgICB7IkVycm9yU3RyaW5nIiwgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfRXJyb3JTdHJpbmcsIE1FVEhfTywgcHlleHBhdF9FcnJvclN0cmluZ19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF9FcnJvclN0cmluZ19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGxvbmcgY29kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X0Vycm9yU3RyaW5nKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgbG9uZyBjb2RlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJsOkVycm9yU3RyaW5nIiwgJmNvZGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF9FcnJvclN0cmluZ19pbXBsKG1vZHVsZSwgY29kZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmbmRlZiBQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRgorICAgICNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfVVNFRk9SRUlHTkRURF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZjRkOTljOTcwMmQ4YTZjIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3NoYTFtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc2hhMW1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE4NjViYQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL3NoYTFtb2R1bGUuYy5oCkBAIC0wLDAgKzEsOTUgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihTSEExVHlwZV9jb3B5X19kb2NfXywKKyJjb3B5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuIik7CisKKyNkZWZpbmUgU0hBMVRZUEVfQ09QWV9NRVRIT0RERUYgICAgXAorICAgIHsiY29weSIsIChQeUNGdW5jdGlvbilTSEExVHlwZV9jb3B5LCBNRVRIX05PQVJHUywgU0hBMVR5cGVfY29weV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorU0hBMVR5cGVfY29weV9pbXBsKFNIQTFvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBMVR5cGVfY29weShTSEExb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBTSEExVHlwZV9jb3B5X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihTSEExVHlwZV9kaWdlc3RfX2RvY19fLAorImRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLiIpOworCisjZGVmaW5lIFNIQTFUWVBFX0RJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKVNIQTFUeXBlX2RpZ2VzdCwgTUVUSF9OT0FSR1MsIFNIQTFUeXBlX2RpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorU0hBMVR5cGVfZGlnZXN0X2ltcGwoU0hBMW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEExVHlwZV9kaWdlc3QoU0hBMW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gU0hBMVR5cGVfZGlnZXN0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihTSEExVHlwZV9oZXhkaWdlc3RfX2RvY19fLAorImhleGRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4iKTsKKworI2RlZmluZSBTSEExVFlQRV9IRVhESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImhleGRpZ2VzdCIsIChQeUNGdW5jdGlvbilTSEExVHlwZV9oZXhkaWdlc3QsIE1FVEhfTk9BUkdTLCBTSEExVHlwZV9oZXhkaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTFUeXBlX2hleGRpZ2VzdF9pbXBsKFNIQTFvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBMVR5cGVfaGV4ZGlnZXN0KFNIQTFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIFNIQTFUeXBlX2hleGRpZ2VzdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoU0hBMVR5cGVfdXBkYXRlX19kb2NfXywKKyJ1cGRhdGUoJHNlbGYsIG9iaiwgLylcbiIKKyItLVxuIgorIlxuIgorIlVwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0XCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4iKTsKKworI2RlZmluZSBTSEExVFlQRV9VUERBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InVwZGF0ZSIsIChQeUNGdW5jdGlvbilTSEExVHlwZV91cGRhdGUsIE1FVEhfTywgU0hBMVR5cGVfdXBkYXRlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfc2hhMV9zaGExX19kb2NfXywKKyJzaGExKCRtb2R1bGUsIC8sIHN0cmluZz1iXCdcJylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIG5ldyBTSEExIGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CisKKyNkZWZpbmUgX1NIQTFfU0hBMV9NRVRIT0RERUYgICAgXAorICAgIHsic2hhMSIsIChQeUNGdW5jdGlvbilfc2hhMV9zaGExLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTFfc2hhMV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTFfc2hhMV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTFfc2hhMShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86c2hhMSIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0cmluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc2hhMV9zaGExX2ltcGwobW9kdWxlLCBzdHJpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmUxOTEwMmYzMTIwNDkwYSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zaGEyNTZtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc2hhMjU2bW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWZlMTg4Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvc2hhMjU2bW9kdWxlLmMuaApAQCAtMCwwICsxLDEyMyBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKFNIQTI1NlR5cGVfY29weV9fZG9jX18sCisiY29weSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworCisjZGVmaW5lIFNIQTI1NlRZUEVfQ09QWV9NRVRIT0RERUYgICAgXAorICAgIHsiY29weSIsIChQeUNGdW5jdGlvbilTSEEyNTZUeXBlX2NvcHksIE1FVEhfTk9BUkdTLCBTSEEyNTZUeXBlX2NvcHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTI1NlR5cGVfY29weV9pbXBsKFNIQW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEyNTZUeXBlX2NvcHkoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBTSEEyNTZUeXBlX2NvcHlfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKFNIQTI1NlR5cGVfZGlnZXN0X19kb2NfXywKKyJkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKworI2RlZmluZSBTSEEyNTZUWVBFX0RJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKVNIQTI1NlR5cGVfZGlnZXN0LCBNRVRIX05PQVJHUywgU0hBMjU2VHlwZV9kaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTI1NlR5cGVfZGlnZXN0X2ltcGwoU0hBb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTI1NlR5cGVfZGlnZXN0KFNIQW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gU0hBMjU2VHlwZV9kaWdlc3RfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKFNIQTI1NlR5cGVfaGV4ZGlnZXN0X19kb2NfXywKKyJoZXhkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuIik7CisKKyNkZWZpbmUgU0hBMjU2VFlQRV9IRVhESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImhleGRpZ2VzdCIsIChQeUNGdW5jdGlvbilTSEEyNTZUeXBlX2hleGRpZ2VzdCwgTUVUSF9OT0FSR1MsIFNIQTI1NlR5cGVfaGV4ZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEyNTZUeXBlX2hleGRpZ2VzdF9pbXBsKFNIQW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEyNTZUeXBlX2hleGRpZ2VzdChTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIFNIQTI1NlR5cGVfaGV4ZGlnZXN0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihTSEEyNTZUeXBlX3VwZGF0ZV9fZG9jX18sCisidXBkYXRlKCRzZWxmLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJVcGRhdGUgdGhpcyBoYXNoIG9iamVjdFwncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisKKyNkZWZpbmUgU0hBMjU2VFlQRV9VUERBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InVwZGF0ZSIsIChQeUNGdW5jdGlvbilTSEEyNTZUeXBlX3VwZGF0ZSwgTUVUSF9PLCBTSEEyNTZUeXBlX3VwZGF0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX3NoYTI1Nl9zaGEyNTZfX2RvY19fLAorInNoYTI1NigkbW9kdWxlLCAvLCBzdHJpbmc9YlwnXCcpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBuZXcgU0hBLTI1NiBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOworCisjZGVmaW5lIF9TSEEyNTZfU0hBMjU2X01FVEhPRERFRiAgICBcCisgICAgeyJzaGEyNTYiLCAoUHlDRnVuY3Rpb24pX3NoYTI1Nl9zaGEyNTYsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc2hhMjU2X3NoYTI1Nl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTI1Nl9zaGEyNTZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEyNTZfc2hhMjU2KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpzaGEyNTYiLCBfa2V5d29yZHMsCisgICAgICAgICZzdHJpbmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTI1Nl9zaGEyNTZfaW1wbChtb2R1bGUsIHN0cmluZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEyNTZfc2hhMjI0X19kb2NfXywKKyJzaGEyMjQoJG1vZHVsZSwgLywgc3RyaW5nPWJcJ1wnKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbmV3IFNIQS0yMjQgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKworI2RlZmluZSBfU0hBMjU2X1NIQTIyNF9NRVRIT0RERUYgICAgXAorICAgIHsic2hhMjI0IiwgKFB5Q0Z1bmN0aW9uKV9zaGEyNTZfc2hhMjI0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTI1Nl9zaGEyMjRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEyNTZfc2hhMjI0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhMjU2X3NoYTIyNChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86c2hhMjI0IiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zaGEyNTZfc2hhMjI0X2ltcGwobW9kdWxlLCBzdHJpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzU0Y2VkZjNiNjMyYzdiMiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zaGE1MTJtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc2hhNTEybW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzA4NzM5Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvc2hhNTEybW9kdWxlLmMuaApAQCAtMCwwICsxLDE3MSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQorCitQeURvY19TVFJWQVIoU0hBNTEyVHlwZV9jb3B5X19kb2NfXywKKyJjb3B5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuIik7CisKKyNkZWZpbmUgU0hBNTEyVFlQRV9DT1BZX01FVEhPRERFRiAgICBcCisgICAgeyJjb3B5IiwgKFB5Q0Z1bmN0aW9uKVNIQTUxMlR5cGVfY29weSwgTUVUSF9OT0FSR1MsIFNIQTUxMlR5cGVfY29weV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorU0hBNTEyVHlwZV9jb3B5X2ltcGwoU0hBb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTUxMlR5cGVfY29weShTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIFNIQTUxMlR5cGVfY29weV9pbXBsKHNlbGYpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCisKKyNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKKworUHlEb2NfU1RSVkFSKFNIQTUxMlR5cGVfZGlnZXN0X19kb2NfXywKKyJkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKworI2RlZmluZSBTSEE1MTJUWVBFX0RJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKVNIQTUxMlR5cGVfZGlnZXN0LCBNRVRIX05PQVJHUywgU0hBNTEyVHlwZV9kaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTUxMlR5cGVfZGlnZXN0X2ltcGwoU0hBb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTUxMlR5cGVfZGlnZXN0KFNIQW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gU0hBNTEyVHlwZV9kaWdlc3RfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLworCisjaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCisKK1B5RG9jX1NUUlZBUihTSEE1MTJUeXBlX2hleGRpZ2VzdF9fZG9jX18sCisiaGV4ZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworCisjZGVmaW5lIFNIQTUxMlRZUEVfSEVYRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJoZXhkaWdlc3QiLCAoUHlDRnVuY3Rpb24pU0hBNTEyVHlwZV9oZXhkaWdlc3QsIE1FVEhfTk9BUkdTLCBTSEE1MTJUeXBlX2hleGRpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorU0hBNTEyVHlwZV9oZXhkaWdlc3RfaW1wbChTSEFvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBNTEyVHlwZV9oZXhkaWdlc3QoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBTSEE1MTJUeXBlX2hleGRpZ2VzdF9pbXBsKHNlbGYpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCisKKyNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKKworUHlEb2NfU1RSVkFSKFNIQTUxMlR5cGVfdXBkYXRlX19kb2NfXywKKyJ1cGRhdGUoJHNlbGYsIG9iaiwgLylcbiIKKyItLVxuIgorIlxuIgorIlVwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0XCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4iKTsKKworI2RlZmluZSBTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYgICAgXAorICAgIHsidXBkYXRlIiwgKFB5Q0Z1bmN0aW9uKVNIQTUxMlR5cGVfdXBkYXRlLCBNRVRIX08sIFNIQTUxMlR5cGVfdXBkYXRlX19kb2NfX30sCisKKyNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KKworI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQorCitQeURvY19TVFJWQVIoX3NoYTUxMl9zaGE1MTJfX2RvY19fLAorInNoYTUxMigkbW9kdWxlLCAvLCBzdHJpbmc9YlwnXCcpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBuZXcgU0hBLTUxMiBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOworCisjZGVmaW5lIF9TSEE1MTJfU0hBNTEyX01FVEhPRERFRiAgICBcCisgICAgeyJzaGE1MTIiLCAoUHlDRnVuY3Rpb24pX3NoYTUxMl9zaGE1MTIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc2hhNTEyX3NoYTUxMl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTUxMl9zaGE1MTJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGE1MTJfc2hhNTEyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpzaGE1MTIiLCBfa2V5d29yZHMsCisgICAgICAgICZzdHJpbmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTUxMl9zaGE1MTJfaW1wbChtb2R1bGUsIHN0cmluZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLworCisjaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCisKK1B5RG9jX1NUUlZBUihfc2hhNTEyX3NoYTM4NF9fZG9jX18sCisic2hhMzg0KCRtb2R1bGUsIC8sIHN0cmluZz1iXCdcJylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIG5ldyBTSEEtMzg0IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CisKKyNkZWZpbmUgX1NIQTUxMl9TSEEzODRfTUVUSE9EREVGICAgIFwKKyAgICB7InNoYTM4NCIsIChQeUNGdW5jdGlvbilfc2hhNTEyX3NoYTM4NCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zaGE1MTJfc2hhMzg0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhNTEyX3NoYTM4NF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTUxMl9zaGEzODQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnNoYTM4NCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0cmluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc2hhNTEyX3NoYTM4NF9pbXBsKG1vZHVsZSwgc3RyaW5nKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCisKKyNpZm5kZWYgU0hBNTEyVFlQRV9DT1BZX01FVEhPRERFRgorICAgICNkZWZpbmUgU0hBNTEyVFlQRV9DT1BZX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFNIQTUxMlRZUEVfQ09QWV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0hBNTEyVFlQRV9ESUdFU1RfTUVUSE9EREVGCisgICAgI2RlZmluZSBTSEE1MTJUWVBFX0RJR0VTVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSEE1MTJUWVBFX0RJR0VTVF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0hBNTEyVFlQRV9IRVhESUdFU1RfTUVUSE9EREVGCisgICAgI2RlZmluZSBTSEE1MTJUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSEE1MTJUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0hBNTEyVFlQRV9VUERBVEVfTUVUSE9EREVGCisgICAgI2RlZmluZSBTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1NIQTUxMl9TSEE1MTJfTUVUSE9EREVGCisgICAgI2RlZmluZSBfU0hBNTEyX1NIQTUxMl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfU0hBNTEyX1NIQTUxMl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1NIQTUxMl9TSEEzODRfTUVUSE9EREVGCisgICAgI2RlZmluZSBfU0hBNTEyX1NIQTM4NF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfU0hBNTEyX1NIQTM4NF9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWM3ZDM4NTczMWZlZTdjMCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zaWduYWxtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc2lnbmFsbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzA3ZWYxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvc2lnbmFsbW9kdWxlLmMuaApAQCAtMCwwICsxLDQzMiBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworI2lmIGRlZmluZWQoSEFWRV9BTEFSTSkKKworUHlEb2NfU1RSVkFSKHNpZ25hbF9hbGFybV9fZG9jX18sCisiYWxhcm0oJG1vZHVsZSwgc2Vjb25kcywgLylcbiIKKyItLVxuIgorIlxuIgorIkFycmFuZ2UgZm9yIFNJR0FMUk0gdG8gYXJyaXZlIGFmdGVyIHRoZSBnaXZlbiBudW1iZXIgb2Ygc2Vjb25kcy4iKTsKKworI2RlZmluZSBTSUdOQUxfQUxBUk1fTUVUSE9EREVGICAgIFwKKyAgICB7ImFsYXJtIiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9hbGFybSwgTUVUSF9PLCBzaWduYWxfYWxhcm1fX2RvY19ffSwKKworc3RhdGljIGxvbmcKK3NpZ25hbF9hbGFybV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzZWNvbmRzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9hbGFybShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBzZWNvbmRzOworICAgIGxvbmcgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTphbGFybSIsICZzZWNvbmRzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBzaWduYWxfYWxhcm1faW1wbChtb2R1bGUsIHNlY29uZHMpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0FMQVJNKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1BBVVNFKQorCitQeURvY19TVFJWQVIoc2lnbmFsX3BhdXNlX19kb2NfXywKKyJwYXVzZSgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV2FpdCB1bnRpbCBhIHNpZ25hbCBhcnJpdmVzLiIpOworCisjZGVmaW5lIFNJR05BTF9QQVVTRV9NRVRIT0RERUYgICAgXAorICAgIHsicGF1c2UiLCAoUHlDRnVuY3Rpb24pc2lnbmFsX3BhdXNlLCBNRVRIX05PQVJHUywgc2lnbmFsX3BhdXNlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfcGF1c2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9wYXVzZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBzaWduYWxfcGF1c2VfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1BBVVNFKSAqLworCitQeURvY19TVFJWQVIoc2lnbmFsX3NpZ25hbF9fZG9jX18sCisic2lnbmFsKCRtb2R1bGUsIHNpZ25hbG51bSwgaGFuZGxlciwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgYWN0aW9uIGZvciB0aGUgZ2l2ZW4gc2lnbmFsLlxuIgorIlxuIgorIlRoZSBhY3Rpb24gY2FuIGJlIFNJR19ERkwsIFNJR19JR04sIG9yIGEgY2FsbGFibGUgUHl0aG9uIG9iamVjdC5cbiIKKyJUaGUgcHJldmlvdXMgYWN0aW9uIGlzIHJldHVybmVkLiAgU2VlIGdldHNpZ25hbCgpIGZvciBwb3NzaWJsZSByZXR1cm4gdmFsdWVzLlxuIgorIlxuIgorIioqKiBJTVBPUlRBTlQgTk9USUNFICoqKlxuIgorIkEgc2lnbmFsIGhhbmRsZXIgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czpcbiIKKyJ0aGUgZmlyc3QgaXMgdGhlIHNpZ25hbCBudW1iZXIsIHRoZSBzZWNvbmQgaXMgdGhlIGludGVycnVwdGVkIHN0YWNrIGZyYW1lLiIpOworCisjZGVmaW5lIFNJR05BTF9TSUdOQUxfTUVUSE9EREVGICAgIFwKKyAgICB7InNpZ25hbCIsIChQeUNGdW5jdGlvbilzaWduYWxfc2lnbmFsLCBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9zaWduYWxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zaWduYWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc2lnbmFsbnVtLCBQeU9iamVjdCAqaGFuZGxlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfc2lnbmFsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBzaWduYWxudW07CisgICAgUHlPYmplY3QgKmhhbmRsZXI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnNpZ25hbCIsCisgICAgICAgICZzaWduYWxudW0sICZoYW5kbGVyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9zaWduYWxfaW1wbChtb2R1bGUsIHNpZ25hbG51bSwgaGFuZGxlcik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHNpZ25hbF9nZXRzaWduYWxfX2RvY19fLAorImdldHNpZ25hbCgkbW9kdWxlLCBzaWduYWxudW0sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGN1cnJlbnQgYWN0aW9uIGZvciB0aGUgZ2l2ZW4gc2lnbmFsLlxuIgorIlxuIgorIlRoZSByZXR1cm4gdmFsdWUgY2FuIGJlOlxuIgorIiAgU0lHX0lHTiAtLSBpZiB0aGUgc2lnbmFsIGlzIGJlaW5nIGlnbm9yZWRcbiIKKyIgIFNJR19ERkwgLS0gaWYgdGhlIGRlZmF1bHQgYWN0aW9uIGZvciB0aGUgc2lnbmFsIGlzIGluIGVmZmVjdFxuIgorIiAgTm9uZSAgICAtLSBpZiBhbiB1bmtub3duIGhhbmRsZXIgaXMgaW4gZWZmZWN0XG4iCisiICBhbnl0aGluZyBlbHNlIC0tIHRoZSBjYWxsYWJsZSBQeXRob24gb2JqZWN0IHVzZWQgYXMgYSBoYW5kbGVyIik7CisKKyNkZWZpbmUgU0lHTkFMX0dFVFNJR05BTF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0c2lnbmFsIiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9nZXRzaWduYWwsIE1FVEhfTywgc2lnbmFsX2dldHNpZ25hbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX2dldHNpZ25hbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzaWduYWxudW0pOworCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX2dldHNpZ25hbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBzaWduYWxudW07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0c2lnbmFsIiwgJnNpZ25hbG51bSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfZ2V0c2lnbmFsX2ltcGwobW9kdWxlLCBzaWduYWxudW0pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfU0lHSU5URVJSVVBUKQorCitQeURvY19TVFJWQVIoc2lnbmFsX3NpZ2ludGVycnVwdF9fZG9jX18sCisic2lnaW50ZXJydXB0KCRtb2R1bGUsIHNpZ25hbG51bSwgZmxhZywgLylcbiIKKyItLVxuIgorIlxuIgorIkNoYW5nZSBzeXN0ZW0gY2FsbCByZXN0YXJ0IGJlaGF2aW91ci5cbiIKKyJcbiIKKyJJZiBmbGFnIGlzIEZhbHNlLCBzeXN0ZW0gY2FsbHMgd2lsbCBiZSByZXN0YXJ0ZWQgd2hlbiBpbnRlcnJ1cHRlZCBieVxuIgorInNpZ25hbCBzaWcsIGVsc2Ugc3lzdGVtIGNhbGxzIHdpbGwgYmUgaW50ZXJydXB0ZWQuIik7CisKKyNkZWZpbmUgU0lHTkFMX1NJR0lOVEVSUlVQVF9NRVRIT0RERUYgICAgXAorICAgIHsic2lnaW50ZXJydXB0IiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zaWdpbnRlcnJ1cHQsIE1FVEhfVkFSQVJHUywgc2lnbmFsX3NpZ2ludGVycnVwdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ2ludGVycnVwdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzaWduYWxudW0sIGludCBmbGFnKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zaWdpbnRlcnJ1cHQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHNpZ25hbG51bTsKKyAgICBpbnQgZmxhZzsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6c2lnaW50ZXJydXB0IiwKKyAgICAgICAgJnNpZ25hbG51bSwgJmZsYWcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3NpZ2ludGVycnVwdF9pbXBsKG1vZHVsZSwgc2lnbmFsbnVtLCBmbGFnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NJR0lOVEVSUlVQVCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TRVRJVElNRVIpCisKK1B5RG9jX1NUUlZBUihzaWduYWxfc2V0aXRpbWVyX19kb2NfXywKKyJzZXRpdGltZXIoJG1vZHVsZSwgd2hpY2gsIHNlY29uZHMsIGludGVydmFsPTAuMCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldHMgZ2l2ZW4gaXRpbWVyIChvbmUgb2YgSVRJTUVSX1JFQUwsIElUSU1FUl9WSVJUVUFMIG9yIElUSU1FUl9QUk9GKS5cbiIKKyJcbiIKKyJUaGUgdGltZXIgd2lsbCBmaXJlIGFmdGVyIHZhbHVlIHNlY29uZHMgYW5kIGFmdGVyIHRoYXQgZXZlcnkgaW50ZXJ2YWwgc2Vjb25kcy5cbiIKKyJUaGUgaXRpbWVyIGNhbiBiZSBjbGVhcmVkIGJ5IHNldHRpbmcgc2Vjb25kcyB0byB6ZXJvLlxuIgorIlxuIgorIlJldHVybnMgb2xkIHZhbHVlcyBhcyBhIHR1cGxlOiAoZGVsYXksIGludGVydmFsKS4iKTsKKworI2RlZmluZSBTSUdOQUxfU0VUSVRJTUVSX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRpdGltZXIiLCAoUHlDRnVuY3Rpb24pc2lnbmFsX3NldGl0aW1lciwgTUVUSF9WQVJBUkdTLCBzaWduYWxfc2V0aXRpbWVyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfc2V0aXRpbWVyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHdoaWNoLCBkb3VibGUgc2Vjb25kcywKKyAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgaW50ZXJ2YWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NldGl0aW1lcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgd2hpY2g7CisgICAgZG91YmxlIHNlY29uZHM7CisgICAgZG91YmxlIGludGVydmFsID0gMC4wOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpZHxkOnNldGl0aW1lciIsCisgICAgICAgICZ3aGljaCwgJnNlY29uZHMsICZpbnRlcnZhbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfc2V0aXRpbWVyX2ltcGwobW9kdWxlLCB3aGljaCwgc2Vjb25kcywgaW50ZXJ2YWwpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUSVRJTUVSKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVElUSU1FUikKKworUHlEb2NfU1RSVkFSKHNpZ25hbF9nZXRpdGltZXJfX2RvY19fLAorImdldGl0aW1lcigkbW9kdWxlLCB3aGljaCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgY3VycmVudCB2YWx1ZSBvZiBnaXZlbiBpdGltZXIuIik7CisKKyNkZWZpbmUgU0lHTkFMX0dFVElUSU1FUl9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0aXRpbWVyIiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9nZXRpdGltZXIsIE1FVEhfTywgc2lnbmFsX2dldGl0aW1lcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX2dldGl0aW1lcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB3aGljaCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfZ2V0aXRpbWVyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHdoaWNoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldGl0aW1lciIsICZ3aGljaCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfZ2V0aXRpbWVyX2ltcGwobW9kdWxlLCB3aGljaCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRJVElNRVIpICovCisKKyNpZiBkZWZpbmVkKFBZUFRIUkVBRF9TSUdNQVNLKQorCitQeURvY19TVFJWQVIoc2lnbmFsX3B0aHJlYWRfc2lnbWFza19fZG9jX18sCisicHRocmVhZF9zaWdtYXNrKCRtb2R1bGUsIGhvdywgbWFzaywgLylcbiIKKyItLVxuIgorIlxuIgorIkZldGNoIGFuZC9vciBjaGFuZ2UgdGhlIHNpZ25hbCBtYXNrIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4iKTsKKworI2RlZmluZSBTSUdOQUxfUFRIUkVBRF9TSUdNQVNLX01FVEhPRERFRiAgICBcCisgICAgeyJwdGhyZWFkX3NpZ21hc2siLCAoUHlDRnVuY3Rpb24pc2lnbmFsX3B0aHJlYWRfc2lnbWFzaywgTUVUSF9WQVJBUkdTLCBzaWduYWxfcHRocmVhZF9zaWdtYXNrX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfcHRocmVhZF9zaWdtYXNrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGhvdywgUHlPYmplY3QgKm1hc2spOworCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3B0aHJlYWRfc2lnbWFzayhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgaG93OworICAgIFB5T2JqZWN0ICptYXNrOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpwdGhyZWFkX3NpZ21hc2siLAorICAgICAgICAmaG93LCAmbWFzaykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfcHRocmVhZF9zaWdtYXNrX2ltcGwobW9kdWxlLCBob3csIG1hc2spOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKFBZUFRIUkVBRF9TSUdNQVNLKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NJR1BFTkRJTkcpCisKK1B5RG9jX1NUUlZBUihzaWduYWxfc2lncGVuZGluZ19fZG9jX18sCisic2lncGVuZGluZygkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRXhhbWluZSBwZW5kaW5nIHNpZ25hbHMuXG4iCisiXG4iCisiUmV0dXJucyBhIHNldCBvZiBzaWduYWwgbnVtYmVycyB0aGF0IGFyZSBwZW5kaW5nIGZvciBkZWxpdmVyeSB0b1xuIgorInRoZSBjYWxsaW5nIHRocmVhZC4iKTsKKworI2RlZmluZSBTSUdOQUxfU0lHUEVORElOR19NRVRIT0RERUYgICAgXAorICAgIHsic2lncGVuZGluZyIsIChQeUNGdW5jdGlvbilzaWduYWxfc2lncGVuZGluZywgTUVUSF9OT0FSR1MsIHNpZ25hbF9zaWdwZW5kaW5nX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfc2lncGVuZGluZ19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ3BlbmRpbmcoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gc2lnbmFsX3NpZ3BlbmRpbmdfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NJR1BFTkRJTkcpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0lHV0FJVCkKKworUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWd3YWl0X19kb2NfXywKKyJzaWd3YWl0KCRtb2R1bGUsIHNpZ3NldCwgLylcbiIKKyItLVxuIgorIlxuIgorIldhaXQgZm9yIGEgc2lnbmFsLlxuIgorIlxuIgorIlN1c3BlbmQgZXhlY3V0aW9uIG9mIHRoZSBjYWxsaW5nIHRocmVhZCB1bnRpbCB0aGUgZGVsaXZlcnkgb2Ygb25lIG9mIHRoZVxuIgorInNpZ25hbHMgc3BlY2lmaWVkIGluIHRoZSBzaWduYWwgc2V0IHNpZ3NldC4gIFRoZSBmdW5jdGlvbiBhY2NlcHRzIHRoZSBzaWduYWxcbiIKKyJhbmQgcmV0dXJucyB0aGUgc2lnbmFsIG51bWJlci4iKTsKKworI2RlZmluZSBTSUdOQUxfU0lHV0FJVF9NRVRIT0RERUYgICAgXAorICAgIHsic2lnd2FpdCIsIChQeUNGdW5jdGlvbilzaWduYWxfc2lnd2FpdCwgTUVUSF9PLCBzaWduYWxfc2lnd2FpdF9fZG9jX199LAorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NJR1dBSVQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0lHV0FJVElORk8pCisKK1B5RG9jX1NUUlZBUihzaWduYWxfc2lnd2FpdGluZm9fX2RvY19fLAorInNpZ3dhaXRpbmZvKCRtb2R1bGUsIHNpZ3NldCwgLylcbiIKKyItLVxuIgorIlxuIgorIldhaXQgc3luY2hyb25vdXNseSB1bnRpbCBvbmUgb2YgdGhlIHNpZ25hbHMgaW4gKnNpZ3NldCogaXMgZGVsaXZlcmVkLlxuIgorIlxuIgorIlJldHVybnMgYSBzdHJ1Y3Rfc2lnaW5mbyBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzaWduYWwuIik7CisKKyNkZWZpbmUgU0lHTkFMX1NJR1dBSVRJTkZPX01FVEhPRERFRiAgICBcCisgICAgeyJzaWd3YWl0aW5mbyIsIChQeUNGdW5jdGlvbilzaWduYWxfc2lnd2FpdGluZm8sIE1FVEhfTywgc2lnbmFsX3NpZ3dhaXRpbmZvX19kb2NfX30sCisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0lHV0FJVElORk8pICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0lHVElNRURXQUlUKQorCitQeURvY19TVFJWQVIoc2lnbmFsX3NpZ3RpbWVkd2FpdF9fZG9jX18sCisic2lndGltZWR3YWl0KCRtb2R1bGUsIHNpZ3NldCwgdGltZW91dCwgLylcbiIKKyItLVxuIgorIlxuIgorIkxpa2Ugc2lnd2FpdGluZm8oKSwgYnV0IHdpdGggYSB0aW1lb3V0LlxuIgorIlxuIgorIlRoZSB0aW1lb3V0IGlzIHNwZWNpZmllZCBpbiBzZWNvbmRzLCB3aXRoIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgYWxsb3dlZC4iKTsKKworI2RlZmluZSBTSUdOQUxfU0lHVElNRURXQUlUX01FVEhPRERFRiAgICBcCisgICAgeyJzaWd0aW1lZHdhaXQiLCAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3RpbWVkd2FpdCwgTUVUSF9WQVJBUkdTLCBzaWduYWxfc2lndGltZWR3YWl0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfc2lndGltZWR3YWl0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnNpZ3NldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGltZW91dF9vYmopOworCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ3RpbWVkd2FpdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc2lnc2V0OworICAgIFB5T2JqZWN0ICp0aW1lb3V0X29iajsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNpZ3RpbWVkd2FpdCIsCisgICAgICAgIDIsIDIsCisgICAgICAgICZzaWdzZXQsICZ0aW1lb3V0X29iaikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfc2lndGltZWR3YWl0X2ltcGwobW9kdWxlLCBzaWdzZXQsIHRpbWVvdXRfb2JqKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NJR1RJTUVEV0FJVCkgKi8KKworI2lmIChkZWZpbmVkKEhBVkVfUFRIUkVBRF9LSUxMKSAmJiBkZWZpbmVkKFdJVEhfVEhSRUFEKSkKKworUHlEb2NfU1RSVkFSKHNpZ25hbF9wdGhyZWFkX2tpbGxfX2RvY19fLAorInB0aHJlYWRfa2lsbCgkbW9kdWxlLCB0aHJlYWRfaWQsIHNpZ25hbG51bSwgLylcbiIKKyItLVxuIgorIlxuIgorIlNlbmQgYSBzaWduYWwgdG8gYSB0aHJlYWQuIik7CisKKyNkZWZpbmUgU0lHTkFMX1BUSFJFQURfS0lMTF9NRVRIT0RERUYgICAgXAorICAgIHsicHRocmVhZF9raWxsIiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9wdGhyZWFkX2tpbGwsIE1FVEhfVkFSQVJHUywgc2lnbmFsX3B0aHJlYWRfa2lsbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3B0aHJlYWRfa2lsbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGxvbmcgdGhyZWFkX2lkLCBpbnQgc2lnbmFsbnVtKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9wdGhyZWFkX2tpbGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgbG9uZyB0aHJlYWRfaWQ7CisgICAgaW50IHNpZ25hbG51bTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibGk6cHRocmVhZF9raWxsIiwKKyAgICAgICAgJnRocmVhZF9pZCwgJnNpZ25hbG51bSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfcHRocmVhZF9raWxsX2ltcGwobW9kdWxlLCB0aHJlYWRfaWQsIHNpZ25hbG51bSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfUFRIUkVBRF9LSUxMKSAmJiBkZWZpbmVkKFdJVEhfVEhSRUFEKSkgKi8KKworI2lmbmRlZiBTSUdOQUxfQUxBUk1fTUVUSE9EREVGCisgICAgI2RlZmluZSBTSUdOQUxfQUxBUk1fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX0FMQVJNX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfUEFVU0VfTUVUSE9EREVGCisgICAgI2RlZmluZSBTSUdOQUxfUEFVU0VfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX1BBVVNFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfU0lHSU5URVJSVVBUX01FVEhPRERFRgorICAgICNkZWZpbmUgU0lHTkFMX1NJR0lOVEVSUlVQVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSUdOQUxfU0lHSU5URVJSVVBUX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfU0VUSVRJTUVSX01FVEhPRERFRgorICAgICNkZWZpbmUgU0lHTkFMX1NFVElUSU1FUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSUdOQUxfU0VUSVRJTUVSX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfR0VUSVRJTUVSX01FVEhPRERFRgorICAgICNkZWZpbmUgU0lHTkFMX0dFVElUSU1FUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSUdOQUxfR0VUSVRJTUVSX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfUFRIUkVBRF9TSUdNQVNLX01FVEhPRERFRgorICAgICNkZWZpbmUgU0lHTkFMX1BUSFJFQURfU0lHTUFTS19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSUdOQUxfUFRIUkVBRF9TSUdNQVNLX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfU0lHUEVORElOR19NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNJR05BTF9TSUdQRU5ESU5HX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFNJR05BTF9TSUdQRU5ESU5HX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfU0lHV0FJVF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNJR05BTF9TSUdXQUlUX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFNJR05BTF9TSUdXQUlUX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfU0lHV0FJVElORk9fTUVUSE9EREVGCisgICAgI2RlZmluZSBTSUdOQUxfU0lHV0FJVElORk9fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX1NJR1dBSVRJTkZPX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfU0lHVElNRURXQUlUX01FVEhPRERFRgorICAgICNkZWZpbmUgU0lHTkFMX1NJR1RJTUVEV0FJVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSUdOQUxfU0lHVElNRURXQUlUX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfUFRIUkVBRF9LSUxMX01FVEhPRERFRgorICAgICNkZWZpbmUgU0lHTkFMX1BUSFJFQURfS0lMTF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSUdOQUxfUFRIUkVBRF9LSUxMX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iOTkyNzhjMTZjNDBlYTQzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3Nwd2Rtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc3B3ZG1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBkMThkYgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL3Nwd2Rtb2R1bGUuYy5oCkBAIC0wLDAgKzEsNjggQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUU1BOQU0pCisKK1B5RG9jX1NUUlZBUihzcHdkX2dldHNwbmFtX19kb2NfXywKKyJnZXRzcG5hbSgkbW9kdWxlLCBhcmcsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIHVzZXIgbmFtZS5cbiIKKyJcbiIKKyJTZWUgYGhlbHAoc3B3ZClgIGZvciBtb3JlIG9uIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLiIpOworCisjZGVmaW5lIFNQV0RfR0VUU1BOQU1fTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHNwbmFtIiwgKFB5Q0Z1bmN0aW9uKXNwd2RfZ2V0c3BuYW0sIE1FVEhfTywgc3B3ZF9nZXRzcG5hbV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc3B3ZF9nZXRzcG5hbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorc3B3ZF9nZXRzcG5hbShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnXykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXJnOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmdfLCAiVTpnZXRzcG5hbSIsICZhcmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gc3B3ZF9nZXRzcG5hbV9pbXBsKG1vZHVsZSwgYXJnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFNQTkFNKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVFNQRU5UKQorCitQeURvY19TVFJWQVIoc3B3ZF9nZXRzcGFsbF9fZG9jX18sCisiZ2V0c3BhbGwoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcywgaW4gYXJiaXRyYXJ5IG9yZGVyLlxuIgorIlxuIgorIlNlZSBgaGVscChzcHdkKWAgZm9yIG1vcmUgb24gc2hhZG93IHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMuIik7CisKKyNkZWZpbmUgU1BXRF9HRVRTUEFMTF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0c3BhbGwiLCAoUHlDRnVuY3Rpb24pc3B3ZF9nZXRzcGFsbCwgTUVUSF9OT0FSR1MsIHNwd2RfZ2V0c3BhbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3Nwd2RfZ2V0c3BhbGxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Nwd2RfZ2V0c3BhbGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gc3B3ZF9nZXRzcGFsbF9pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUU1BFTlQpICovCisKKyNpZm5kZWYgU1BXRF9HRVRTUE5BTV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNQV0RfR0VUU1BOQU1fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU1BXRF9HRVRTUE5BTV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU1BXRF9HRVRTUEFMTF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNQV0RfR0VUU1BBTExfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU1BXRF9HRVRTUEFMTF9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmMxNzg4MzA0MTNmNzc2MyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy91bmljb2RlZGF0YS5jLmggYi9Nb2R1bGVzL2NsaW5pYy91bmljb2RlZGF0YS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDUyMGMxZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL3VuaWNvZGVkYXRhLmMuaApAQCAtMCwwICsxLDM2OCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX1VDRF9kZWNpbWFsX19kb2NfXywKKyJkZWNpbWFsKCRzZWxmLCBjaHIsIGRlZmF1bHQ9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNvbnZlcnRzIGEgVW5pY29kZSBjaGFyYWN0ZXIgaW50byBpdHMgZXF1aXZhbGVudCBkZWNpbWFsIHZhbHVlLlxuIgorIlxuIgorIlJldHVybnMgdGhlIGRlY2ltYWwgdmFsdWUgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgaW50ZWdlci5cbiIKKyJJZiBubyBzdWNoIHZhbHVlIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZiBub3QgZ2l2ZW4sXG4iCisiVmFsdWVFcnJvciBpcyByYWlzZWQuIik7CisKKyNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX0RFQ0lNQUxfTUVUSE9EREVGICAgIFwKKyAgICB7ImRlY2ltYWwiLCAoUHlDRnVuY3Rpb24pdW5pY29kZWRhdGFfVUNEX2RlY2ltYWwsIE1FVEhfVkFSQVJHUywgdW5pY29kZWRhdGFfVUNEX2RlY2ltYWxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9kZWNpbWFsX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9kZWNpbWFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY2hyOworICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiQ3xPOmRlY2ltYWwiLAorICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfZGVjaW1hbF9pbXBsKHNlbGYsIGNociwgZGVmYXVsdF92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX1VDRF9kaWdpdF9fZG9jX18sCisiZGlnaXQoJHNlbGYsIGNociwgZGVmYXVsdD1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ29udmVydHMgYSBVbmljb2RlIGNoYXJhY3RlciBpbnRvIGl0cyBlcXVpdmFsZW50IGRpZ2l0IHZhbHVlLlxuIgorIlxuIgorIlJldHVybnMgdGhlIGRpZ2l0IHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGludGVnZXIuXG4iCisiSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBkZWZhdWx0IGlzIHJldHVybmVkLCBvciwgaWYgbm90IGdpdmVuLFxuIgorIlZhbHVlRXJyb3IgaXMgcmFpc2VkLiIpOworCisjZGVmaW5lIFVOSUNPREVEQVRBX1VDRF9ESUdJVF9NRVRIT0RERUYgICAgXAorICAgIHsiZGlnaXQiLCAoUHlDRnVuY3Rpb24pdW5pY29kZWRhdGFfVUNEX2RpZ2l0LCBNRVRIX1ZBUkFSR1MsIHVuaWNvZGVkYXRhX1VDRF9kaWdpdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX2RpZ2l0X2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9kaWdpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGNocjsKKyAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkN8TzpkaWdpdCIsCisgICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9kaWdpdF9pbXBsKHNlbGYsIGNociwgZGVmYXVsdF92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX1VDRF9udW1lcmljX19kb2NfXywKKyJudW1lcmljKCRzZWxmLCBjaHIsIGRlZmF1bHQ9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNvbnZlcnRzIGEgVW5pY29kZSBjaGFyYWN0ZXIgaW50byBpdHMgZXF1aXZhbGVudCBudW1lcmljIHZhbHVlLlxuIgorIlxuIgorIlJldHVybnMgdGhlIG51bWVyaWMgdmFsdWUgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgZmxvYXQuXG4iCisiSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBkZWZhdWx0IGlzIHJldHVybmVkLCBvciwgaWYgbm90IGdpdmVuLFxuIgorIlZhbHVlRXJyb3IgaXMgcmFpc2VkLiIpOworCisjZGVmaW5lIFVOSUNPREVEQVRBX1VDRF9OVU1FUklDX01FVEhPRERFRiAgICBcCisgICAgeyJudW1lcmljIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9udW1lcmljLCBNRVRIX1ZBUkFSR1MsIHVuaWNvZGVkYXRhX1VDRF9udW1lcmljX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfbnVtZXJpY19pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfbnVtZXJpYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGNocjsKKyAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkN8TzpudW1lcmljIiwKKyAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX251bWVyaWNfaW1wbChzZWxmLCBjaHIsIGRlZmF1bHRfdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfY2F0ZWdvcnlfX2RvY19fLAorImNhdGVnb3J5KCRzZWxmLCBjaHIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBnZW5lcmFsIGNhdGVnb3J5IGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIHN0cmluZy4iKTsKKworI2RlZmluZSBVTklDT0RFREFUQV9VQ0RfQ0FURUdPUllfTUVUSE9EREVGICAgIFwKKyAgICB7ImNhdGVnb3J5IiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9jYXRlZ29yeSwgTUVUSF9PLCB1bmljb2RlZGF0YV9VQ0RfY2F0ZWdvcnlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9jYXRlZ29yeV9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9jYXRlZ29yeShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY2hyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmNhdGVnb3J5IiwgJmNocikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfY2F0ZWdvcnlfaW1wbChzZWxmLCBjaHIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfYmlkaXJlY3Rpb25hbF9fZG9jX18sCisiYmlkaXJlY3Rpb25hbCgkc2VsZiwgY2hyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB0aGUgYmlkaXJlY3Rpb25hbCBjbGFzcyBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBzdHJpbmcuXG4iCisiXG4iCisiSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBhbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQuIik7CisKKyNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX0JJRElSRUNUSU9OQUxfTUVUSE9EREVGICAgIFwKKyAgICB7ImJpZGlyZWN0aW9uYWwiLCAoUHlDRnVuY3Rpb24pdW5pY29kZWRhdGFfVUNEX2JpZGlyZWN0aW9uYWwsIE1FVEhfTywgdW5pY29kZWRhdGFfVUNEX2JpZGlyZWN0aW9uYWxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9iaWRpcmVjdGlvbmFsX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX2JpZGlyZWN0aW9uYWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGNocjsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpiaWRpcmVjdGlvbmFsIiwgJmNocikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfYmlkaXJlY3Rpb25hbF9pbXBsKHNlbGYsIGNocik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX1VDRF9jb21iaW5pbmdfX2RvY19fLAorImNvbWJpbmluZygkc2VsZiwgY2hyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB0aGUgY2Fub25pY2FsIGNvbWJpbmluZyBjbGFzcyBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBpbnRlZ2VyLlxuIgorIlxuIgorIlJldHVybnMgMCBpZiBubyBjb21iaW5pbmcgY2xhc3MgaXMgZGVmaW5lZC4iKTsKKworI2RlZmluZSBVTklDT0RFREFUQV9VQ0RfQ09NQklOSU5HX01FVEhPRERFRiAgICBcCisgICAgeyJjb21iaW5pbmciLCAoUHlDRnVuY3Rpb24pdW5pY29kZWRhdGFfVUNEX2NvbWJpbmluZywgTUVUSF9PLCB1bmljb2RlZGF0YV9VQ0RfY29tYmluaW5nX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK3VuaWNvZGVkYXRhX1VDRF9jb21iaW5pbmdfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNocik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfY29tYmluaW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBjaHI7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6Y29tYmluaW5nIiwgJmNocikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2NvbWJpbmluZ19pbXBsKHNlbGYsIGNocik7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfbWlycm9yZWRfX2RvY19fLAorIm1pcnJvcmVkKCRzZWxmLCBjaHIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBtaXJyb3JlZCBwcm9wZXJ0eSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBpbnRlZ2VyLlxuIgorIlxuIgorIlJldHVybnMgMSBpZiB0aGUgY2hhcmFjdGVyIGhhcyBiZWVuIGlkZW50aWZpZWQgYXMgYSBcIm1pcnJvcmVkXCJcbiIKKyJjaGFyYWN0ZXIgaW4gYmlkaXJlY3Rpb25hbCB0ZXh0LCAwIG90aGVyd2lzZS4iKTsKKworI2RlZmluZSBVTklDT0RFREFUQV9VQ0RfTUlSUk9SRURfTUVUSE9EREVGICAgIFwKKyAgICB7Im1pcnJvcmVkIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9taXJyb3JlZCwgTUVUSF9PLCB1bmljb2RlZGF0YV9VQ0RfbWlycm9yZWRfX2RvY19ffSwKKworc3RhdGljIGludAordW5pY29kZWRhdGFfVUNEX21pcnJvcmVkX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX21pcnJvcmVkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBjaHI7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6bWlycm9yZWQiLCAmY2hyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfbWlycm9yZWRfaW1wbChzZWxmLCBjaHIpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIodW5pY29kZWRhdGFfVUNEX2Vhc3RfYXNpYW5fd2lkdGhfX2RvY19fLAorImVhc3RfYXNpYW5fd2lkdGgoJHNlbGYsIGNociwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIGVhc3QgYXNpYW4gd2lkdGggYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgc3RyaW5nLiIpOworCisjZGVmaW5lIFVOSUNPREVEQVRBX1VDRF9FQVNUX0FTSUFOX1dJRFRIX01FVEhPRERFRiAgICBcCisgICAgeyJlYXN0X2FzaWFuX3dpZHRoIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9lYXN0X2FzaWFuX3dpZHRoLCBNRVRIX08sIHVuaWNvZGVkYXRhX1VDRF9lYXN0X2FzaWFuX3dpZHRoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfZWFzdF9hc2lhbl93aWR0aF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9lYXN0X2FzaWFuX3dpZHRoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBjaHI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6ZWFzdF9hc2lhbl93aWR0aCIsICZjaHIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2Vhc3RfYXNpYW5fd2lkdGhfaW1wbChzZWxmLCBjaHIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfZGVjb21wb3NpdGlvbl9fZG9jX18sCisiZGVjb21wb3NpdGlvbigkc2VsZiwgY2hyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB0aGUgY2hhcmFjdGVyIGRlY29tcG9zaXRpb24gbWFwcGluZyBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBzdHJpbmcuXG4iCisiXG4iCisiQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGluIGNhc2Ugbm8gc3VjaCBtYXBwaW5nIGlzIGRlZmluZWQuIik7CisKKyNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX0RFQ09NUE9TSVRJT05fTUVUSE9EREVGICAgIFwKKyAgICB7ImRlY29tcG9zaXRpb24iLCAoUHlDRnVuY3Rpb24pdW5pY29kZWRhdGFfVUNEX2RlY29tcG9zaXRpb24sIE1FVEhfTywgdW5pY29kZWRhdGFfVUNEX2RlY29tcG9zaXRpb25fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9kZWNvbXBvc2l0aW9uX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX2RlY29tcG9zaXRpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGNocjsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpkZWNvbXBvc2l0aW9uIiwgJmNocikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfZGVjb21wb3NpdGlvbl9pbXBsKHNlbGYsIGNocik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX1VDRF9ub3JtYWxpemVfX2RvY19fLAorIm5vcm1hbGl6ZSgkc2VsZiwgZm9ybSwgdW5pc3RyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBub3JtYWwgZm9ybSBcJ2Zvcm1cJyBmb3IgdGhlIFVuaWNvZGUgc3RyaW5nIHVuaXN0ci5cbiIKKyJcbiIKKyJWYWxpZCB2YWx1ZXMgZm9yIGZvcm0gYXJlIFwnTkZDXCcsIFwnTkZLQ1wnLCBcJ05GRFwnLCBhbmQgXCdORktEXCcuIik7CisKKyNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX05PUk1BTElaRV9NRVRIT0RERUYgICAgXAorICAgIHsibm9ybWFsaXplIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9ub3JtYWxpemUsIE1FVEhfVkFSQVJHUywgdW5pY29kZWRhdGFfVUNEX25vcm1hbGl6ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX25vcm1hbGl6ZV9pbXBsKFB5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpmb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbnB1dCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0Rfbm9ybWFsaXplKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpmb3JtOworICAgIFB5T2JqZWN0ICppbnB1dDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08hOm5vcm1hbGl6ZSIsCisgICAgICAgICZmb3JtLCAmUHlVbmljb2RlX1R5cGUsICZpbnB1dCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0Rfbm9ybWFsaXplX2ltcGwoc2VsZiwgZm9ybSwgaW5wdXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfbmFtZV9fZG9jX18sCisibmFtZSgkc2VsZiwgY2hyLCBkZWZhdWx0PU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBuYW1lIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGEgc3RyaW5nLlxuIgorIlxuIgorIklmIG5vIG5hbWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmIG5vdCBnaXZlbixcbiIKKyJWYWx1ZUVycm9yIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBVTklDT0RFREFUQV9VQ0RfTkFNRV9NRVRIT0RERUYgICAgXAorICAgIHsibmFtZSIsIChQeUNGdW5jdGlvbil1bmljb2RlZGF0YV9VQ0RfbmFtZSwgTUVUSF9WQVJBUkdTLCB1bmljb2RlZGF0YV9VQ0RfbmFtZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX25hbWVfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNociwgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX25hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBjaHI7CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDfE86bmFtZSIsCisgICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9uYW1lX2ltcGwoc2VsZiwgY2hyLCBkZWZhdWx0X3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIodW5pY29kZWRhdGFfVUNEX2xvb2t1cF9fZG9jX18sCisibG9va3VwKCRzZWxmLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiTG9vayB1cCBjaGFyYWN0ZXIgYnkgbmFtZS5cbiIKKyJcbiIKKyJJZiBhIGNoYXJhY3RlciB3aXRoIHRoZSBnaXZlbiBuYW1lIGlzIGZvdW5kLCByZXR1cm4gdGhlXG4iCisiY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIuICBJZiBub3QgZm91bmQsIEtleUVycm9yIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBVTklDT0RFREFUQV9VQ0RfTE9PS1VQX01FVEhPRERFRiAgICBcCisgICAgeyJsb29rdXAiLCAoUHlDRnVuY3Rpb24pdW5pY29kZWRhdGFfVUNEX2xvb2t1cCwgTUVUSF9PLCB1bmljb2RlZGF0YV9VQ0RfbG9va3VwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfbG9va3VwX2ltcGwoUHlPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCBuYW1lX2xlbmd0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfbG9va3VwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgUHlfc3NpemVfY2xlYW5fdCBuYW1lX2xlbmd0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyM6bG9va3VwIiwgJm5hbWUsICZuYW1lX2xlbmd0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfbG9va3VwX2ltcGwoc2VsZiwgbmFtZSwgbmFtZV9sZW5ndGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGY4ZGEzM2M2YmM2ZWZjOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3psaWJtb2R1bGUuYy5oCmluZGV4IGY1NGE4MDUuLmM1Y2RmNDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3psaWJtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3psaWJtb2R1bGUuYy5oCkBAIC0yNiw4ICsyNiw3IEBACiAgICAgUHlfYnVmZmVyIGJ5dGVzID0ge05VTEwsIE5VTEx9OwogICAgIGludCBsZXZlbCA9IFpfREVGQVVMVF9DT01QUkVTU0lPTjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSp8aTpjb21wcmVzcyIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxpOmNvbXByZXNzIiwKICAgICAgICAgJmJ5dGVzLCAmbGV2ZWwpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9jb21wcmVzc19pbXBsKG1vZHVsZSwgJmJ5dGVzLCBsZXZlbCk7CkBAIC01Nyw3ICs1Niw4IEBACiAgICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLCB6bGliX2RlY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfZGVjb21wcmVzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IHdiaXRzLCB1bnNpZ25lZCBpbnQgYnVmc2l6ZSk7Cit6bGliX2RlY29tcHJlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCB3Yml0cywKKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBidWZzaXplKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfZGVjb21wcmVzcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTY3LDkgKzY3LDggQEAKICAgICBpbnQgd2JpdHMgPSBNQVhfV0JJVFM7CiAgICAgdW5zaWduZWQgaW50IGJ1ZnNpemUgPSBERUZfQlVGX1NJWkU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqfGlPJjpkZWNvbXByZXNzIiwKLSAgICAgICAgJmRhdGEsICZ3Yml0cywgdWludF9jb252ZXJ0ZXIsICZidWZzaXplKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfGlPJjpkZWNvbXByZXNzIiwKKyAgICAgICAgJmRhdGEsICZ3Yml0cywgY2FwcGVkX3VpbnRfY29udmVydGVyLCAmYnVmc2l6ZSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2RlY29tcHJlc3NfaW1wbChtb2R1bGUsICZkYXRhLCB3Yml0cywgYnVmc2l6ZSk7CiAKQEAgLTExMSw3ICsxMTAsOCBAQAogICAgIHsiY29tcHJlc3NvYmoiLCAoUHlDRnVuY3Rpb24pemxpYl9jb21wcmVzc29iaiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHpsaWJfY29tcHJlc3NvYmpfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfY29tcHJlc3NvYmpfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbGV2ZWwsIGludCBtZXRob2QsIGludCB3Yml0cywgaW50IG1lbUxldmVsLCBpbnQgc3RyYXRlZ3ksIFB5X2J1ZmZlciAqemRpY3QpOworemxpYl9jb21wcmVzc29ial9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBsZXZlbCwgaW50IG1ldGhvZCwgaW50IHdiaXRzLAorICAgICAgICAgICAgICAgICAgICAgIGludCBtZW1MZXZlbCwgaW50IHN0cmF0ZWd5LCBQeV9idWZmZXIgKnpkaWN0KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfY29tcHJlc3NvYmooUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCkBAIC0xMjUsOCArMTI1LDcgQEAKICAgICBpbnQgc3RyYXRlZ3kgPSBaX0RFRkFVTFRfU1RSQVRFR1k7CiAgICAgUHlfYnVmZmVyIHpkaWN0ID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAifGlpaWlpeSo6Y29tcHJlc3NvYmoiLCBfa2V5d29yZHMsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGlpaWlpeSo6Y29tcHJlc3NvYmoiLCBfa2V5d29yZHMsCiAgICAgICAgICZsZXZlbCwgJm1ldGhvZCwgJndiaXRzLCAmbWVtTGV2ZWwsICZzdHJhdGVneSwgJnpkaWN0KSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfY29tcHJlc3NvYmpfaW1wbChtb2R1bGUsIGxldmVsLCBtZXRob2QsIHdiaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3ksICZ6ZGljdCk7CkBAIC0xNjUsOCArMTY0LDcgQEAKICAgICBpbnQgd2JpdHMgPSBNQVhfV0JJVFM7CiAgICAgUHlPYmplY3QgKnpkaWN0ID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgInxpTzpkZWNvbXByZXNzb2JqIiwgX2tleXdvcmRzLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpTzpkZWNvbXByZXNzb2JqIiwgX2tleXdvcmRzLAogICAgICAgICAmd2JpdHMsICZ6ZGljdCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2RlY29tcHJlc3NvYmpfaW1wbChtb2R1bGUsIHdiaXRzLCB6ZGljdCk7CkBAIC0xODksMjAgKzE4NywxOCBAQAogIkNhbGwgdGhlIGZsdXNoKCkgbWV0aG9kIHRvIGNsZWFyIHRoZXNlIGJ1ZmZlcnMuIik7CiAKICNkZWZpbmUgWkxJQl9DT01QUkVTU19DT01QUkVTU19NRVRIT0RERUYgICAgXAotICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9Db21wcmVzc19jb21wcmVzcywgTUVUSF9WQVJBUkdTLCB6bGliX0NvbXByZXNzX2NvbXByZXNzX19kb2NfX30sCisgICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX0NvbXByZXNzX2NvbXByZXNzLCBNRVRIX08sIHpsaWJfQ29tcHJlc3NfY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfQ29tcHJlc3NfY29tcHJlc3NfaW1wbChjb21wb2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKmRhdGEpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9Db21wcmVzc19jb21wcmVzcyhjb21wb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3psaWJfQ29tcHJlc3NfY29tcHJlc3MoY29tcG9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSo6Y29tcHJlc3MiLAotICAgICAgICAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfQ29tcHJlc3NfY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSk7CiAKQEAgLTIzNSw3ICsyMzEsOCBAQAogICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLCB6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfaW1wbChjb21wb2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsIHVuc2lnbmVkIGludCBtYXhfbGVuZ3RoKTsKK3psaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX2ltcGwoY29tcG9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWF4X2xlbmd0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzcyhjb21wb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTI0NCw5ICsyNDEsOCBAQAogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIHVuc2lnbmVkIGludCBtYXhfbGVuZ3RoID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSp8TyY6ZGVjb21wcmVzcyIsCi0gICAgICAgICZkYXRhLCB1aW50X2NvbnZlcnRlciwgJm1heF9sZW5ndGgpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8TyY6ZGVjb21wcmVzcyIsCisgICAgICAgICZkYXRhLCBjYXBwZWRfdWludF9jb252ZXJ0ZXIsICZtYXhfbGVuZ3RoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEsIG1heF9sZW5ndGgpOwogCkBAIC0yODIsOCArMjc4LDcgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbW9kZSA9IFpfRklOSVNIOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ8aTpmbHVzaCIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpmbHVzaCIsCiAgICAgICAgICZtb2RlKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfQ29tcHJlc3NfZmx1c2hfaW1wbChzZWxmLCBtb2RlKTsKQEAgLTMxNCwxMCArMzA5LDYgQEAKIAogI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9aTElCX0NPUFkpICovCiAKLSNpZm5kZWYgWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRgotICAgICNkZWZpbmUgWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKFpMSUJfQ09NUFJFU1NfQ09QWV9NRVRIT0RERUYpICovCi0KICNpZiBkZWZpbmVkKEhBVkVfWkxJQl9DT1BZKQogCiBQeURvY19TVFJWQVIoemxpYl9EZWNvbXByZXNzX2NvcHlfX2RvY19fLApAQCAtMzQwLDEwICszMzEsNiBAQAogCiAjZW5kaWYgLyogZGVmaW5lZChIQVZFX1pMSUJfQ09QWSkgKi8KIAotI2lmbmRlZiBaTElCX0RFQ09NUFJFU1NfQ09QWV9NRVRIT0RERUYKLSAgICAjZGVmaW5lIFpMSUJfREVDT01QUkVTU19DT1BZX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKFpMSUJfREVDT01QUkVTU19DT1BZX01FVEhPRERFRikgKi8KLQogUHlEb2NfU1RSVkFSKHpsaWJfRGVjb21wcmVzc19mbHVzaF9fZG9jX18sCiAiZmx1c2goJHNlbGYsIGxlbmd0aD16bGliLkRFRl9CVUZfU0laRSwgLylcbiIKICItLVxuIgpAQCAtMzY1LDkgKzM1Miw4IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgdW5zaWduZWQgaW50IGxlbmd0aCA9IERFRl9CVUZfU0laRTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAifE8mOmZsdXNoIiwKLSAgICAgICAgdWludF9jb252ZXJ0ZXIsICZsZW5ndGgpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOmZsdXNoIiwKKyAgICAgICAgY2FwcGVkX3VpbnRfY29udmVydGVyLCAmbGVuZ3RoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfRGVjb21wcmVzc19mbHVzaF9pbXBsKHNlbGYsIGxlbmd0aCk7CiAKQEAgLTM5OSw4ICszODUsNyBAQAogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIHVuc2lnbmVkIGludCB2YWx1ZSA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqfEk6YWRsZXIzMiIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxJOmFkbGVyMzIiLAogICAgICAgICAmZGF0YSwgJnZhbHVlKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfYWRsZXIzMl9pbXBsKG1vZHVsZSwgJmRhdGEsIHZhbHVlKTsKQEAgLTQzNyw4ICs0MjIsNyBAQAogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIHVuc2lnbmVkIGludCB2YWx1ZSA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqfEk6Y3JjMzIiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8STpjcmMzMiIsCiAgICAgICAgICZkYXRhLCAmdmFsdWUpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9jcmMzMl9pbXBsKG1vZHVsZSwgJmRhdGEsIHZhbHVlKTsKQEAgLTQ1MCw0ICs0MzQsOCBAQAogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYzk0NzM3MjFjYTdjOTYyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKworI2lmbmRlZiBaTElCX0NPTVBSRVNTX0NPUFlfTUVUSE9EREVGCisgICAgI2RlZmluZSBaTElCX0NPTVBSRVNTX0NPUFlfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NzM0YWVjMDc5NTUwYmM4IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY21hdGhtb2R1bGUuYyBiL01vZHVsZXMvY21hdGhtb2R1bGUuYwppbmRleCBiMzQxYzM0Li43ZjZjMmM5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NtYXRobW9kdWxlLmMKKysrIGIvTW9kdWxlcy9jbWF0aG1vZHVsZS5jCkBAIC04LDYgKzgsNDAgQEAKICAgIGZsb2F0LmguICBXZSBhc3N1bWUgdGhhdCBGTFRfUkFESVggaXMgZWl0aGVyIDIgb3IgMTYuICovCiAjaW5jbHVkZSA8ZmxvYXQuaD4KIAorI2luY2x1ZGUgImNsaW5pYy9jbWF0aG1vZHVsZS5jLmgiCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgY21hdGgKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTMwOGQ2ODM5ZjRhNDYzMzNdKi8KKworLypbcHl0aG9uIGlucHV0XQorY2xhc3MgUHlfY29tcGxleF9wcm90ZWN0ZWRfY29udmVydGVyKFB5X2NvbXBsZXhfY29udmVydGVyKToKKyAgICBkZWYgbW9kaWZ5KHNlbGYpOgorICAgICAgICByZXR1cm4gJ2Vycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7JworCisKK2NsYXNzIFB5X2NvbXBsZXhfcHJvdGVjdGVkX3JldHVybl9jb252ZXJ0ZXIoQ1JldHVybkNvbnZlcnRlcik6CisgICAgdHlwZSA9ICJQeV9jb21wbGV4IgorCisgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CisgICAgICAgIHNlbGYuZGVjbGFyZShkYXRhKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgiIiIKK1B5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworaWYgKGVycm5vID09IEVET00pIHt7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgIGdvdG8gZXhpdDsKK319CitlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHt7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgZ290byBleGl0OworfX0KK2Vsc2Uge3sKKyAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworfX0KKyIiIi5zdHJpcCgpKQorW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MjMxMDE5MDM5YTZmYmI5YV0qLworCiAjaWYgKEZMVF9SQURJWCAhPSAyICYmIEZMVF9SQURJWCAhPSAxNikKICNlcnJvciAiTW9kdWxlcy9jbWF0aG1vZHVsZS5jIGV4cGVjdHMgRkxUX1JBRElYIHRvIGJlIDIgb3IgMTYiCiAjZW5kaWYKQEAgLTQ4LDEyICs4MiwxMiBAQAogI2RlZmluZSBDTV9TQ0FMRV9ET1dOICgtKENNX1NDQUxFX1VQKzEpLzIpCiAKIC8qIGZvcndhcmQgZGVjbGFyYXRpb25zICovCi1zdGF0aWMgUHlfY29tcGxleCBjX2FzaW5oKFB5X2NvbXBsZXgpOwotc3RhdGljIFB5X2NvbXBsZXggY19hdGFuaChQeV9jb21wbGV4KTsKLXN0YXRpYyBQeV9jb21wbGV4IGNfY29zaChQeV9jb21wbGV4KTsKLXN0YXRpYyBQeV9jb21wbGV4IGNfc2luaChQeV9jb21wbGV4KTsKLXN0YXRpYyBQeV9jb21wbGV4IGNfc3FydChQeV9jb21wbGV4KTsKLXN0YXRpYyBQeV9jb21wbGV4IGNfdGFuaChQeV9jb21wbGV4KTsKK3N0YXRpYyBQeV9jb21wbGV4IGNtYXRoX2FzaW5oX2ltcGwoUHlNb2R1bGVEZWYgKiwgUHlfY29tcGxleCk7CitzdGF0aWMgUHlfY29tcGxleCBjbWF0aF9hdGFuaF9pbXBsKFB5TW9kdWxlRGVmICosIFB5X2NvbXBsZXgpOworc3RhdGljIFB5X2NvbXBsZXggY21hdGhfY29zaF9pbXBsKFB5TW9kdWxlRGVmICosIFB5X2NvbXBsZXgpOworc3RhdGljIFB5X2NvbXBsZXggY21hdGhfc2luaF9pbXBsKFB5TW9kdWxlRGVmICosIFB5X2NvbXBsZXgpOworc3RhdGljIFB5X2NvbXBsZXggY21hdGhfc3FydF9pbXBsKFB5TW9kdWxlRGVmICosIFB5X2NvbXBsZXgpOworc3RhdGljIFB5X2NvbXBsZXggY21hdGhfdGFuaF9pbXBsKFB5TW9kdWxlRGVmICosIFB5X2NvbXBsZXgpOwogc3RhdGljIFB5T2JqZWN0ICogbWF0aF9lcnJvcih2b2lkKTsKIAogLyogQ29kZSB0byBkZWFsIHdpdGggc3BlY2lhbCB2YWx1ZXMgKGluZmluaXRpZXMsIE5hTnMsIGV0Yy4pLiAqLwpAQCAtMTIzLDggKzE1NywxOCBAQAogCiBzdGF0aWMgUHlfY29tcGxleCBhY29zX3NwZWNpYWxfdmFsdWVzWzddWzddOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5hY29zIC0+IFB5X2NvbXBsZXhfcHJvdGVjdGVkCisKKyAgICB6OiBQeV9jb21wbGV4X3Byb3RlY3RlZAorICAgIC8KKworUmV0dXJuIHRoZSBhcmMgY29zaW5lIG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX2Fjb3MoUHlfY29tcGxleCB6KQorY21hdGhfYWNvc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03YzFkZDIxZmY4MThkYjZiIGlucHV0PWJkNmNiZDc4YWU4NTE5MjddKi8KIHsKICAgICBQeV9jb21wbGV4IHMxLCBzMiwgcjsKIApAQCAtMTQ1LDEwICsxODksMTAgQEAKICAgICB9IGVsc2UgewogICAgICAgICBzMS5yZWFsID0gMS4tei5yZWFsOwogICAgICAgICBzMS5pbWFnID0gLXouaW1hZzsKLSAgICAgICAgczEgPSBjX3NxcnQoczEpOworICAgICAgICBzMSA9IGNtYXRoX3NxcnRfaW1wbChtb2R1bGUsIHMxKTsKICAgICAgICAgczIucmVhbCA9IDEuK3oucmVhbDsKICAgICAgICAgczIuaW1hZyA9IHouaW1hZzsKLSAgICAgICAgczIgPSBjX3NxcnQoczIpOworICAgICAgICBzMiA9IGNtYXRoX3NxcnRfaW1wbChtb2R1bGUsIHMyKTsKICAgICAgICAgci5yZWFsID0gMi4qYXRhbjIoczEucmVhbCwgczIucmVhbCk7CiAgICAgICAgIHIuaW1hZyA9IG1fYXNpbmgoczIucmVhbCpzMS5pbWFnIC0gczIuaW1hZypzMS5yZWFsKTsKICAgICB9CkBAIC0xNTYsMTYgKzIwMCwxOCBAQAogICAgIHJldHVybiByOwogfQogCi1QeURvY19TVFJWQVIoY19hY29zX2RvYywKLSJhY29zKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBhcmMgY29zaW5lIG9mIHguIik7Ci0KIAogc3RhdGljIFB5X2NvbXBsZXggYWNvc2hfc3BlY2lhbF92YWx1ZXNbN11bN107CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmFjb3NoID0gY21hdGguYWNvcworCitSZXR1cm4gdGhlIGludmVyc2UgaHlwZXJib2xpYyBjb3NpbmUgb2Ygei4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5X2NvbXBsZXgKLWNfYWNvc2goUHlfY29tcGxleCB6KQorY21hdGhfYWNvc2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzIzYzc3NjQyOWRlZjk4MSBpbnB1dD0zZjYxYmVlN2Q3MDNlNTNjXSovCiB7CiAgICAgUHlfY29tcGxleCBzMSwgczIsIHI7CiAKQEAgLTE3OCwxMCArMjI0LDEwIEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgczEucmVhbCA9IHoucmVhbCAtIDEuOwogICAgICAgICBzMS5pbWFnID0gei5pbWFnOwotICAgICAgICBzMSA9IGNfc3FydChzMSk7CisgICAgICAgIHMxID0gY21hdGhfc3FydF9pbXBsKG1vZHVsZSwgczEpOwogICAgICAgICBzMi5yZWFsID0gei5yZWFsICsgMS47CiAgICAgICAgIHMyLmltYWcgPSB6LmltYWc7Ci0gICAgICAgIHMyID0gY19zcXJ0KHMyKTsKKyAgICAgICAgczIgPSBjbWF0aF9zcXJ0X2ltcGwobW9kdWxlLCBzMik7CiAgICAgICAgIHIucmVhbCA9IG1fYXNpbmgoczEucmVhbCpzMi5yZWFsICsgczEuaW1hZypzMi5pbWFnKTsKICAgICAgICAgci5pbWFnID0gMi4qYXRhbjIoczEuaW1hZywgczIucmVhbCk7CiAgICAgfQpAQCAtMTg5LDM1ICsyMzUsMzggQEAKICAgICByZXR1cm4gcjsKIH0KIAotUHlEb2NfU1RSVkFSKGNfYWNvc2hfZG9jLAotImFjb3NoKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBpbnZlcnNlIGh5cGVyYm9saWMgY29zaW5lIG9mIHguIik7CisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5hc2luID0gY21hdGguYWNvcwogCitSZXR1cm4gdGhlIGFyYyBzaW5lIG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX2FzaW4oUHlfY29tcGxleCB6KQorY21hdGhfYXNpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MmQyMzQ2ZDQ2NjkwODI2IGlucHV0PWJlMGJmMGNmZGQ1MjM5YzVdKi8KIHsKICAgICAvKiBhc2luKHopID0gLWkgYXNpbmgoaXopICovCiAgICAgUHlfY29tcGxleCBzLCByOwogICAgIHMucmVhbCA9IC16LmltYWc7CiAgICAgcy5pbWFnID0gei5yZWFsOwotICAgIHMgPSBjX2FzaW5oKHMpOworICAgIHMgPSBjbWF0aF9hc2luaF9pbXBsKG1vZHVsZSwgcyk7CiAgICAgci5yZWFsID0gcy5pbWFnOwogICAgIHIuaW1hZyA9IC1zLnJlYWw7CiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX2FzaW5fZG9jLAotImFzaW4oeClcbiIKLSJcbiIKLSJSZXR1cm4gdGhlIGFyYyBzaW5lIG9mIHguIik7Ci0KIAogc3RhdGljIFB5X2NvbXBsZXggYXNpbmhfc3BlY2lhbF92YWx1ZXNbN11bN107CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmFzaW5oID0gY21hdGguYWNvcworCitSZXR1cm4gdGhlIGludmVyc2UgaHlwZXJib2xpYyBzaW5lIG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX2FzaW5oKFB5X2NvbXBsZXggeikKK2NtYXRoX2FzaW5oX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBjNjY2NDgyM2M3YjFiMzUgaW5wdXQ9NWMwOTQ0OGZjZmM4OWE3OV0qLwogewogICAgIFB5X2NvbXBsZXggczEsIHMyLCByOwogCkBAIC0yMzUsMTAgKzI4NCwxMCBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIHMxLnJlYWwgPSAxLit6LmltYWc7CiAgICAgICAgIHMxLmltYWcgPSAtei5yZWFsOwotICAgICAgICBzMSA9IGNfc3FydChzMSk7CisgICAgICAgIHMxID0gY21hdGhfc3FydF9pbXBsKG1vZHVsZSwgczEpOwogICAgICAgICBzMi5yZWFsID0gMS4tei5pbWFnOwogICAgICAgICBzMi5pbWFnID0gei5yZWFsOwotICAgICAgICBzMiA9IGNfc3FydChzMik7CisgICAgICAgIHMyID0gY21hdGhfc3FydF9pbXBsKG1vZHVsZSwgczIpOwogICAgICAgICByLnJlYWwgPSBtX2FzaW5oKHMxLnJlYWwqczIuaW1hZy1zMi5yZWFsKnMxLmltYWcpOwogICAgICAgICByLmltYWcgPSBhdGFuMih6LmltYWcsIHMxLnJlYWwqczIucmVhbC1zMS5pbWFnKnMyLmltYWcpOwogICAgIH0KQEAgLTI0NiwyMCArMjk1LDIyIEBACiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX2FzaW5oX2RvYywKLSJhc2luaCh4KVxuIgotIlxuIgotIlJldHVybiB0aGUgaW52ZXJzZSBoeXBlcmJvbGljIHNpbmUgb2YgeC4iKTsKIAorLypbY2xpbmljIGlucHV0XQorY21hdGguYXRhbiA9IGNtYXRoLmFjb3MKKworUmV0dXJuIHRoZSBhcmMgdGFuZ2VudCBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlfY29tcGxleAotY19hdGFuKFB5X2NvbXBsZXggeikKK2NtYXRoX2F0YW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjdkNDRmMDJjNmE1YzNiNSBpbnB1dD0zYjIxZmY3ZDVlYWM2MzJhXSovCiB7CiAgICAgLyogYXRhbih6KSA9IC1pIGF0YW5oKGl6KSAqLwogICAgIFB5X2NvbXBsZXggcywgcjsKICAgICBzLnJlYWwgPSAtei5pbWFnOwogICAgIHMuaW1hZyA9IHoucmVhbDsKLSAgICBzID0gY19hdGFuaChzKTsKKyAgICBzID0gY21hdGhfYXRhbmhfaW1wbChtb2R1bGUsIHMpOwogICAgIHIucmVhbCA9IHMuaW1hZzsKICAgICByLmltYWcgPSAtcy5yZWFsOwogICAgIHJldHVybiByOwpAQCAtMjk1LDE2ICszNDYsMTggQEAKICAgICByZXR1cm4gYXRhbjIoei5pbWFnLCB6LnJlYWwpOwogfQogCi1QeURvY19TVFJWQVIoY19hdGFuX2RvYywKLSJhdGFuKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBhcmMgdGFuZ2VudCBvZiB4LiIpOwotCiAKIHN0YXRpYyBQeV9jb21wbGV4IGF0YW5oX3NwZWNpYWxfdmFsdWVzWzddWzddOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5hdGFuaCA9IGNtYXRoLmFjb3MKKworUmV0dXJuIHRoZSBpbnZlcnNlIGh5cGVyYm9saWMgdGFuZ2VudCBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlfY29tcGxleAotY19hdGFuaChQeV9jb21wbGV4IHopCitjbWF0aF9hdGFuaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNzllMGI5ZmVmYzhkYTdjIGlucHV0PTJiM2ZkYjgyZmIzNDQ4N2JdKi8KIHsKICAgICBQeV9jb21wbGV4IHI7CiAgICAgZG91YmxlIGF5LCBoOwpAQCAtMzEzLDcgKzM2Niw3IEBACiAKICAgICAvKiBSZWR1Y2UgdG8gY2FzZSB3aGVyZSB6LnJlYWwgPj0gMC4sIHVzaW5nIGF0YW5oKHopID0gLWF0YW5oKC16KS4gKi8KICAgICBpZiAoei5yZWFsIDwgMC4pIHsKLSAgICAgICAgcmV0dXJuIGNfbmVnKGNfYXRhbmgoY19uZWcoeikpKTsKKyAgICAgICAgcmV0dXJuIF9QeV9jX25lZyhjbWF0aF9hdGFuaF9pbXBsKG1vZHVsZSwgX1B5X2NfbmVnKHopKSk7CiAgICAgfQogCiAgICAgYXkgPSBmYWJzKHouaW1hZyk7CkBAIC0zNTAsMzQgKzQwMywzOCBAQAogICAgIHJldHVybiByOwogfQogCi1QeURvY19TVFJWQVIoY19hdGFuaF9kb2MsCi0iYXRhbmgoeClcbiIKLSJcbiIKLSJSZXR1cm4gdGhlIGludmVyc2UgaHlwZXJib2xpYyB0YW5nZW50IG9mIHguIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmNvcyA9IGNtYXRoLmFjb3MKKworUmV0dXJuIHRoZSBjb3NpbmUgb2Ygei4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5X2NvbXBsZXgKLWNfY29zKFB5X2NvbXBsZXggeikKK2NtYXRoX2Nvc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZDFjZGMxYjVlNzYxNjY3IGlucHV0PTYwMjJlMzliNzcxMjdhYzddKi8KIHsKICAgICAvKiBjb3MoeikgPSBjb3NoKGl6KSAqLwogICAgIFB5X2NvbXBsZXggcjsKICAgICByLnJlYWwgPSAtei5pbWFnOwogICAgIHIuaW1hZyA9IHoucmVhbDsKLSAgICByID0gY19jb3NoKHIpOworICAgIHIgPSBjbWF0aF9jb3NoX2ltcGwobW9kdWxlLCByKTsKICAgICByZXR1cm4gcjsKIH0KIAotUHlEb2NfU1RSVkFSKGNfY29zX2RvYywKLSJjb3MoeClcbiIKLSJcbiIKLSJSZXR1cm4gdGhlIGNvc2luZSBvZiB4LiIpOwotCiAKIC8qIGNvc2goaW5maW5pdHkgKyBpKnkpIG5lZWRzIHRvIGJlIGRlYWx0IHdpdGggc3BlY2lhbGx5ICovCiBzdGF0aWMgUHlfY29tcGxleCBjb3NoX3NwZWNpYWxfdmFsdWVzWzddWzddOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5jb3NoID0gY21hdGguYWNvcworCitSZXR1cm4gdGhlIGh5cGVyYm9saWMgY29zaW5lIG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX2Nvc2goUHlfY29tcGxleCB6KQorY21hdGhfY29zaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mM2I1ZDMyODJiMzAyNGQzIGlucHV0PWQ2YjY2MzM5ZTljYzMzMmJdKi8KIHsKICAgICBQeV9jb21wbGV4IHI7CiAgICAgZG91YmxlIHhfbWludXNfb25lOwpAQCAtNDI2LDE4ICs0ODMsMjAgQEAKICAgICByZXR1cm4gcjsKIH0KIAotUHlEb2NfU1RSVkFSKGNfY29zaF9kb2MsCi0iY29zaCh4KVxuIgotIlxuIgotIlJldHVybiB0aGUgaHlwZXJib2xpYyBjb3NpbmUgb2YgeC4iKTsKLQogCiAvKiBleHAoaW5maW5pdHkgKyBpKnkpIGFuZCBleHAoLWluZmluaXR5ICsgaSp5KSBuZWVkIHNwZWNpYWwgdHJlYXRtZW50IGZvcgogICAgZmluaXRlIHkgKi8KIHN0YXRpYyBQeV9jb21wbGV4IGV4cF9zcGVjaWFsX3ZhbHVlc1s3XVs3XTsKIAorLypbY2xpbmljIGlucHV0XQorY21hdGguZXhwID0gY21hdGguYWNvcworCitSZXR1cm4gdGhlIGV4cG9uZW50aWFsIHZhbHVlIGUqKnouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX2V4cChQeV9jb21wbGV4IHopCitjbWF0aF9leHBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmY4ODI1ZWIyYmNhZDliYSBpbnB1dD04YjllNmNmOGE5MjE3NGMzXSovCiB7CiAgICAgUHlfY29tcGxleCByOwogICAgIGRvdWJsZSBsOwpAQCAtNDg2LDEyICs1NDUsNiBAQAogICAgIHJldHVybiByOwogfQogCi1QeURvY19TVFJWQVIoY19leHBfZG9jLAotImV4cCh4KVxuIgotIlxuIgotIlJldHVybiB0aGUgZXhwb25lbnRpYWwgdmFsdWUgZSoqeC4iKTsKLQotCiBzdGF0aWMgUHlfY29tcGxleCBsb2dfc3BlY2lhbF92YWx1ZXNbN11bN107CiAKIHN0YXRpYyBQeV9jb21wbGV4CkBAIC01NjQsOCArNjE3LDE1IEBACiB9CiAKIAorLypbY2xpbmljIGlucHV0XQorY21hdGgubG9nMTAgPSBjbWF0aC5hY29zCisKK1JldHVybiB0aGUgYmFzZS0xMCBsb2dhcml0aG0gb2Ygei4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5X2NvbXBsZXgKLWNfbG9nMTAoUHlfY29tcGxleCB6KQorY21hdGhfbG9nMTBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzdjNDI2Y2EwZTc4MjM0MSBpbnB1dD1jZmY1NjQ0ZjczYzE1MTljXSovCiB7CiAgICAgUHlfY29tcGxleCByOwogICAgIGludCBlcnJub19zYXZlOwpAQCAtNTc4LDM2ICs2MzgsNDAgQEAKICAgICByZXR1cm4gcjsKIH0KIAotUHlEb2NfU1RSVkFSKGNfbG9nMTBfZG9jLAotImxvZzEwKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBiYXNlLTEwIGxvZ2FyaXRobSBvZiB4LiIpOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5zaW4gPSBjbWF0aC5hY29zCisKK1JldHVybiB0aGUgc2luZSBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlfY29tcGxleAotY19zaW4oUHlfY29tcGxleCB6KQorY21hdGhfc2luX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU3ZjVlMmIyNTM4MjVhYzcgaW5wdXQ9MmQzNTE5ODQyYThiNGI4NV0qLwogewogICAgIC8qIHNpbih6KSA9IC1pIHNpbihpeikgKi8KICAgICBQeV9jb21wbGV4IHMsIHI7CiAgICAgcy5yZWFsID0gLXouaW1hZzsKICAgICBzLmltYWcgPSB6LnJlYWw7Ci0gICAgcyA9IGNfc2luaChzKTsKKyAgICBzID0gY21hdGhfc2luaF9pbXBsKG1vZHVsZSwgcyk7CiAgICAgci5yZWFsID0gcy5pbWFnOwogICAgIHIuaW1hZyA9IC1zLnJlYWw7CiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX3Npbl9kb2MsCi0ic2luKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBzaW5lIG9mIHguIik7Ci0KIAogLyogc2luaChpbmZpbml0eSArIGkqeSkgbmVlZHMgdG8gYmUgZGVhbHQgd2l0aCBzcGVjaWFsbHkgKi8KIHN0YXRpYyBQeV9jb21wbGV4IHNpbmhfc3BlY2lhbF92YWx1ZXNbN11bN107CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLnNpbmggPSBjbWF0aC5hY29zCisKK1JldHVybiB0aGUgaHlwZXJib2xpYyBzaW5lIG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX3NpbmgoUHlfY29tcGxleCB6KQorY21hdGhfc2luaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNzFmZmY4Mjk4MDQzYTk1IGlucHV0PWQyZDNmYzhjMWRkZmQyZGRdKi8KIHsKICAgICBQeV9jb21wbGV4IHI7CiAgICAgZG91YmxlIHhfbWludXNfb25lOwpAQCAtNjU1LDE2ICs3MTksMTggQEAKICAgICByZXR1cm4gcjsKIH0KIAotUHlEb2NfU1RSVkFSKGNfc2luaF9kb2MsCi0ic2luaCh4KVxuIgotIlxuIgotIlJldHVybiB0aGUgaHlwZXJib2xpYyBzaW5lIG9mIHguIik7Ci0KIAogc3RhdGljIFB5X2NvbXBsZXggc3FydF9zcGVjaWFsX3ZhbHVlc1s3XVs3XTsKIAorLypbY2xpbmljIGlucHV0XQorY21hdGguc3FydCA9IGNtYXRoLmFjb3MKKworUmV0dXJuIHRoZSBzcXVhcmUgcm9vdCBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlfY29tcGxleAotY19zcXJ0KFB5X2NvbXBsZXggeikKK2NtYXRoX3NxcnRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjZiZGEyODNkMGM1YTdiNCBpbnB1dD03MDg4YjE2NmZjOWE1OGM3XSovCiB7CiAgICAgLyoKICAgICAgICBNZXRob2Q6IHVzZSBzeW1tZXRyaWVzIHRvIHJlZHVjZSB0byB0aGUgY2FzZSB3aGVuIHggPSB6LnJlYWwgYW5kIHkKQEAgLTczMCwzNiArNzk2LDQwIEBACiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX3NxcnRfZG9jLAotInNxcnQoeClcbiIKLSJcbiIKLSJSZXR1cm4gdGhlIHNxdWFyZSByb290IG9mIHguIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLnRhbiA9IGNtYXRoLmFjb3MKKworUmV0dXJuIHRoZSB0YW5nZW50IG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX3RhbihQeV9jb21wbGV4IHopCitjbWF0aF90YW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGYzNzRiYWNmMzZkOTliNCBpbnB1dD1mYzE2N2U1Mjg3Njc4ODhlXSovCiB7CiAgICAgLyogdGFuKHopID0gLWkgdGFuaChpeikgKi8KICAgICBQeV9jb21wbGV4IHMsIHI7CiAgICAgcy5yZWFsID0gLXouaW1hZzsKICAgICBzLmltYWcgPSB6LnJlYWw7Ci0gICAgcyA9IGNfdGFuaChzKTsKKyAgICBzID0gY21hdGhfdGFuaF9pbXBsKG1vZHVsZSwgcyk7CiAgICAgci5yZWFsID0gcy5pbWFnOwogICAgIHIuaW1hZyA9IC1zLnJlYWw7CiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX3Rhbl9kb2MsCi0idGFuKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSB0YW5nZW50IG9mIHguIik7Ci0KIAogLyogdGFuaChpbmZpbml0eSArIGkqeSkgbmVlZHMgdG8gYmUgZGVhbHQgd2l0aCBzcGVjaWFsbHkgKi8KIHN0YXRpYyBQeV9jb21wbGV4IHRhbmhfc3BlY2lhbF92YWx1ZXNbN11bN107CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLnRhbmggPSBjbWF0aC5hY29zCisKK1JldHVybiB0aGUgaHlwZXJib2xpYyB0YW5nZW50IG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX3RhbmgoUHlfY29tcGxleCB6KQorY21hdGhfdGFuaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNTc4NzczZDI3YTE4ZTk2IGlucHV0PTIyZjY3ZjlkYzZkMjk2ODVdKi8KIHsKICAgICAvKiBGb3JtdWxhOgogCkBAIC04MjIsMjcgKzg5MiwzNSBAQAogICAgIHJldHVybiByOwogfQogCi1QeURvY19TVFJWQVIoY190YW5oX2RvYywKLSJ0YW5oKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBoeXBlcmJvbGljIHRhbmdlbnQgb2YgeC4iKTsKIAorLypbY2xpbmljIGlucHV0XQorY21hdGgubG9nCisKKyAgICB4OiBQeV9jb21wbGV4CisgICAgeV9vYmo6IG9iamVjdCA9IE5VTEwKKyAgICAvCisKK1RoZSBsb2dhcml0aG0gb2YgeiB0byB0aGUgZ2l2ZW4gYmFzZS4KKworSWYgdGhlIGJhc2Ugbm90IHNwZWNpZmllZCwgcmV0dXJucyB0aGUgbmF0dXJhbCBsb2dhcml0aG0gKGJhc2UgZSkgb2Ygei4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNtYXRoX2xvZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitjbWF0aF9sb2dfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHgsIFB5T2JqZWN0ICp5X29iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNWUyYTFlNTIyOWI1YTQ2IGlucHV0PWVlMGU4MjNhN2M2ZTY4ZWFdKi8KIHsKLSAgICBQeV9jb21wbGV4IHg7CiAgICAgUHlfY29tcGxleCB5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJEfEQiLCAmeCwgJnkpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGVycm5vID0gMDsKICAgICBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgcmV0dXJuIDApCiAgICAgeCA9IGNfbG9nKHgpOwotICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDIpIHsKKyAgICBpZiAoeV9vYmogIT0gTlVMTCkgeworICAgICAgICB5ID0gUHlDb21wbGV4X0FzQ0NvbXBsZXgoeV9vYmopOworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgeSA9IGNfbG9nKHkpOwotICAgICAgICB4ID0gY19xdW90KHgsIHkpOworICAgICAgICB4ID0gX1B5X2NfcXVvdCh4LCB5KTsKICAgICB9CiAgICAgUHlGUEVfRU5EX1BST1RFQ1QoeCkKICAgICBpZiAoZXJybm8gIT0gMCkKQEAgLTg1MCwxMCArOTI4LDYgQEAKICAgICByZXR1cm4gUHlDb21wbGV4X0Zyb21DQ29tcGxleCh4KTsKIH0KIAotUHlEb2NfU1RSVkFSKGNtYXRoX2xvZ19kb2MsCi0ibG9nKHhbLCBiYXNlXSkgLT4gdGhlIGxvZ2FyaXRobSBvZiB4IHRvIHRoZSBnaXZlbiBiYXNlLlxuXAotSWYgdGhlIGJhc2Ugbm90IHNwZWNpZmllZCwgcmV0dXJucyB0aGUgbmF0dXJhbCBsb2dhcml0aG0gKGJhc2UgZSkgb2YgeC4iKTsKLQogCiAvKiBBbmQgbm93IHRoZSBnbHVlIHRvIG1ha2UgdGhlbSBhdmFpbGFibGUgZnJvbSBQeXRob246ICovCiAKQEAgLTg2OSw1NyArOTQzLDIyIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1tYXRoXzEoUHlPYmplY3QgKmFyZ3MsIFB5X2NvbXBsZXggKCpmdW5jKShQeV9jb21wbGV4KSkKLXsKLSAgICBQeV9jb21wbGV4IHgsciA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJEIiwgJngpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBlcnJubyA9IDA7Ci0gICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIHJldHVybiAwKTsKLSAgICByID0gKCpmdW5jKSh4KTsKLSAgICBQeUZQRV9FTkRfUFJPVEVDVChyKTsKLSAgICBpZiAoZXJybm8gPT0gRURPTSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgocik7Ci0gICAgfQotfQogCi0jZGVmaW5lIEZVTkMxKHN0dWJuYW1lLCBmdW5jKSBcCi0gICAgc3RhdGljIFB5T2JqZWN0ICogc3R1Ym5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKSB7IFwKLSAgICAgICAgcmV0dXJuIG1hdGhfMShhcmdzLCBmdW5jKTsgXAotICAgIH0KKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLnBoYXNlCiAKLUZVTkMxKGNtYXRoX2Fjb3MsIGNfYWNvcykKLUZVTkMxKGNtYXRoX2Fjb3NoLCBjX2Fjb3NoKQotRlVOQzEoY21hdGhfYXNpbiwgY19hc2luKQotRlVOQzEoY21hdGhfYXNpbmgsIGNfYXNpbmgpCi1GVU5DMShjbWF0aF9hdGFuLCBjX2F0YW4pCi1GVU5DMShjbWF0aF9hdGFuaCwgY19hdGFuaCkKLUZVTkMxKGNtYXRoX2NvcywgY19jb3MpCi1GVU5DMShjbWF0aF9jb3NoLCBjX2Nvc2gpCi1GVU5DMShjbWF0aF9leHAsIGNfZXhwKQotRlVOQzEoY21hdGhfbG9nMTAsIGNfbG9nMTApCi1GVU5DMShjbWF0aF9zaW4sIGNfc2luKQotRlVOQzEoY21hdGhfc2luaCwgY19zaW5oKQotRlVOQzEoY21hdGhfc3FydCwgY19zcXJ0KQotRlVOQzEoY21hdGhfdGFuLCBjX3RhbikKLUZVTkMxKGNtYXRoX3RhbmgsIGNfdGFuaCkKKyAgICB6OiBQeV9jb21wbGV4CisgICAgLworCitSZXR1cm4gYXJndW1lbnQsIGFsc28ga25vd24gYXMgdGhlIHBoYXNlIGFuZ2xlLCBvZiBhIGNvbXBsZXguCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jbWF0aF9waGFzZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitjbWF0aF9waGFzZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMDllYWYzNzNjYjYyNGMzIGlucHV0PTVjZjc1MjI4YmE5NGI2OWRdKi8KIHsKLSAgICBQeV9jb21wbGV4IHo7CiAgICAgZG91YmxlIHBoaTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkQ6cGhhc2UiLCAmeikpCi0gICAgICAgIHJldHVybiBOVUxMOworCiAgICAgZXJybm8gPSAwOwogICAgIFB5RlBFX1NUQVJUX1BST1RFQ1QoImFyZyBmdW5jdGlvbiIsIHJldHVybiAwKQogICAgIHBoaSA9IGNfYXRhbjIoeik7CkBAIC05MzAsMjEgKzk2OSwyNyBAQAogICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHBoaSk7CiB9CiAKLVB5RG9jX1NUUlZBUihjbWF0aF9waGFzZV9kb2MsCi0icGhhc2UoeikgLT4gZmxvYXRcblxuXAotUmV0dXJuIGFyZ3VtZW50LCBhbHNvIGtub3duIGFzIHRoZSBwaGFzZSBhbmdsZSwgb2YgYSBjb21wbGV4LiIpOworLypbY2xpbmljIGlucHV0XQorY21hdGgucG9sYXIKKworICAgIHo6IFB5X2NvbXBsZXgKKyAgICAvCisKK0NvbnZlcnQgYSBjb21wbGV4IGZyb20gcmVjdGFuZ3VsYXIgY29vcmRpbmF0ZXMgdG8gcG9sYXIgY29vcmRpbmF0ZXMuCisKK3IgaXMgdGhlIGRpc3RhbmNlIGZyb20gMCBhbmQgcGhpIHRoZSBwaGFzZSBhbmdsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNtYXRoX3BvbGFyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2NtYXRoX3BvbGFyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA3ZDQxYjE2Yzg3Nzg3NWEgaW5wdXQ9MjZjMzUzNTc0ZmQxYTg2MV0qLwogewotICAgIFB5X2NvbXBsZXggejsKICAgICBkb3VibGUgciwgcGhpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiRDpwb2xhciIsICZ6KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBlcnJubyA9IDA7CiAgICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgicG9sYXIgZnVuY3Rpb24iLCByZXR1cm4gMCkKICAgICBwaGkgPSBjX2F0YW4yKHopOyAvKiBzaG91bGQgbm90IGNhdXNlIGFueSBleGNlcHRpb24gKi8KLSAgICByID0gY19hYnMoeik7IC8qIHNldHMgZXJybm8gdG8gRVJBTkdFIG9uIG92ZXJmbG93ICovCisgICAgciA9IF9QeV9jX2Ficyh6KTsgLyogc2V0cyBlcnJubyB0byBFUkFOR0Ugb24gb3ZlcmZsb3cgKi8KICAgICBQeUZQRV9FTkRfUFJPVEVDVChyKQogICAgIGlmIChlcnJubyAhPSAwKQogICAgICAgICByZXR1cm4gbWF0aF9lcnJvcigpOwpAQCAtOTUyLDExICs5OTcsNiBAQAogICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiZGQiLCByLCBwaGkpOwogfQogCi1QeURvY19TVFJWQVIoY21hdGhfcG9sYXJfZG9jLAotInBvbGFyKHopIC0+IHI6IGZsb2F0LCBwaGk6IGZsb2F0XG5cblwKLUNvbnZlcnQgYSBjb21wbGV4IGZyb20gcmVjdGFuZ3VsYXIgY29vcmRpbmF0ZXMgdG8gcG9sYXIgY29vcmRpbmF0ZXMuIHIgaXNcblwKLXRoZSBkaXN0YW5jZSBmcm9tIDAgYW5kIHBoaSB0aGUgcGhhc2UgYW5nbGUuIik7Ci0KIC8qCiAgIHJlY3QoKSBpc24ndCBjb3ZlcmVkIGJ5IHRoZSBDOTkgc3RhbmRhcmQsIGJ1dCBpdCdzIG5vdCB0b28gaGFyZCB0bwogICBmaWd1cmUgb3V0ICdzcGlyaXQgb2YgQzk5JyBydWxlcyBmb3Igc3BlY2lhbCB2YWx1ZSBoYW5kaW5nOgpAQCAtOTcwLDEzICsxMDEwLDIxIEBACiAKIHN0YXRpYyBQeV9jb21wbGV4IHJlY3Rfc3BlY2lhbF92YWx1ZXNbN11bN107CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLnJlY3QKKworICAgIHI6IGRvdWJsZQorICAgIHBoaTogZG91YmxlCisgICAgLworCitDb252ZXJ0IGZyb20gcG9sYXIgY29vcmRpbmF0ZXMgdG8gcmVjdGFuZ3VsYXIgY29vcmRpbmF0ZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1jbWF0aF9yZWN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2NtYXRoX3JlY3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBkb3VibGUgciwgZG91YmxlIHBoaSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kOTdhODc0OWJkNjNlOWQ1IGlucHV0PTI0YzU2NDZkMTQ3ZWZkNjldKi8KIHsKICAgICBQeV9jb21wbGV4IHo7Ci0gICAgZG91YmxlIHIsIHBoaTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImRkOnJlY3QiLCAmciwgJnBoaSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGVycm5vID0gMDsKICAgICBQeUZQRV9TVEFSVF9QUk9URUNUKCJyZWN0IGZ1bmN0aW9uIiwgcmV0dXJuIDApCiAKQEAgLTEwMjcsNzkgKzEwNzUsMTQzIEBACiAgICAgICAgIHJldHVybiBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KHopOwogfQogCi1QeURvY19TVFJWQVIoY21hdGhfcmVjdF9kb2MsCi0icmVjdChyLCBwaGkpIC0+IHo6IGNvbXBsZXhcblxuXAotQ29udmVydCBmcm9tIHBvbGFyIGNvb3JkaW5hdGVzIHRvIHJlY3Rhbmd1bGFyIGNvb3JkaW5hdGVzLiIpOworLypbY2xpbmljIGlucHV0XQorY21hdGguaXNmaW5pdGUgPSBjbWF0aC5wb2xhcgorCitSZXR1cm4gVHJ1ZSBpZiBib3RoIHRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgb2YgeiBhcmUgZmluaXRlLCBlbHNlIEZhbHNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY21hdGhfaXNmaW5pdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorY21hdGhfaXNmaW5pdGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGY2NjgyZmE5M2RlNDVkNiBpbnB1dD04NDhlN2VlNzAxODk1ODE1XSovCiB7Ci0gICAgUHlfY29tcGxleCB6OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiRDppc2Zpbml0ZSIsICZ6KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhQeV9JU19GSU5JVEUoei5yZWFsKSAmJiBQeV9JU19GSU5JVEUoei5pbWFnKSk7CiB9CiAKLVB5RG9jX1NUUlZBUihjbWF0aF9pc2Zpbml0ZV9kb2MsCi0iaXNmaW5pdGUoeikgLT4gYm9vbFxuXAotUmV0dXJuIFRydWUgaWYgYm90aCB0aGUgcmVhbCBhbmQgaW1hZ2luYXJ5IHBhcnRzIG9mIHogYXJlIGZpbml0ZSwgZWxzZSBGYWxzZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmlzbmFuID0gY21hdGgucG9sYXIKKworQ2hlY2tzIGlmIHRoZSByZWFsIG9yIGltYWdpbmFyeSBwYXJ0IG9mIHogbm90IGEgbnVtYmVyIChOYU4pLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY21hdGhfaXNuYW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorY21hdGhfaXNuYW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yjg1ZmU4YzIwNDc3MThlZSBpbnB1dD03MTc5OWY1ZDI4NGM5YmFmXSovCiB7Ci0gICAgUHlfY29tcGxleCB6OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiRDppc25hbiIsICZ6KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhQeV9JU19OQU4oei5yZWFsKSB8fCBQeV9JU19OQU4oei5pbWFnKSk7CiB9CiAKLVB5RG9jX1NUUlZBUihjbWF0aF9pc25hbl9kb2MsCi0iaXNuYW4oeikgLT4gYm9vbFxuXAotQ2hlY2tzIGlmIHRoZSByZWFsIG9yIGltYWdpbmFyeSBwYXJ0IG9mIHogbm90IGEgbnVtYmVyIChOYU4pIik7CisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5pc2luZiA9IGNtYXRoLnBvbGFyCisKK0NoZWNrcyBpZiB0aGUgcmVhbCBvciBpbWFnaW5hcnkgcGFydCBvZiB6IGlzIGluZmluaXRlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY21hdGhfaXNpbmYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorY21hdGhfaXNpbmZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGNhOWM2MTA5ZTQ2OGJmNCBpbnB1dD0zNjNkZjE1NWM3MTgxMzI5XSovCiB7Ci0gICAgUHlfY29tcGxleCB6OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiRDppc2luZiIsICZ6KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhQeV9JU19JTkZJTklUWSh6LnJlYWwpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9JU19JTkZJTklUWSh6LmltYWcpKTsKIH0KIAotUHlEb2NfU1RSVkFSKGNtYXRoX2lzaW5mX2RvYywKLSJpc2luZih6KSAtPiBib29sXG5cCi1DaGVja3MgaWYgdGhlIHJlYWwgb3IgaW1hZ2luYXJ5IHBhcnQgb2YgeiBpcyBpbmZpbml0ZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmlzY2xvc2UgLT4gYm9vbAogCisgICAgYTogUHlfY29tcGxleAorICAgIGI6IFB5X2NvbXBsZXgKKyAgICAqCisgICAgcmVsX3RvbDogZG91YmxlID0gMWUtMDkKKyAgICAgICAgbWF4aW11bSBkaWZmZXJlbmNlIGZvciBiZWluZyBjb25zaWRlcmVkICJjbG9zZSIsIHJlbGF0aXZlIHRvIHRoZQorICAgICAgICBtYWduaXR1ZGUgb2YgdGhlIGlucHV0IHZhbHVlcworICAgIGFic190b2w6IGRvdWJsZSA9IDAuMAorICAgICAgICBtYXhpbXVtIGRpZmZlcmVuY2UgZm9yIGJlaW5nIGNvbnNpZGVyZWQgImNsb3NlIiwgcmVnYXJkbGVzcyBvZiB0aGUKKyAgICAgICAgbWFnbml0dWRlIG9mIHRoZSBpbnB1dCB2YWx1ZXMKKworRGV0ZXJtaW5lIHdoZXRoZXIgdHdvIGNvbXBsZXggbnVtYmVycyBhcmUgY2xvc2UgaW4gdmFsdWUuCisKK1JldHVybiBUcnVlIGlmIGEgaXMgY2xvc2UgaW4gdmFsdWUgdG8gYiwgYW5kIEZhbHNlIG90aGVyd2lzZS4KKworRm9yIHRoZSB2YWx1ZXMgdG8gYmUgY29uc2lkZXJlZCBjbG9zZSwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGVtIG11c3QgYmUKK3NtYWxsZXIgdGhhbiBhdCBsZWFzdCBvbmUgb2YgdGhlIHRvbGVyYW5jZXMuCisKKy1pbmYsIGluZiBhbmQgTmFOIGJlaGF2ZSBzaW1pbGFybHkgdG8gdGhlIElFRUUgNzU0IFN0YW5kYXJkLiBUaGF0IGlzLCBOYU4gaXMKK25vdCBjbG9zZSB0byBhbnl0aGluZywgZXZlbiBpdHNlbGYuIGluZiBhbmQgLWluZiBhcmUgb25seSBjbG9zZSB0byB0aGVtc2VsdmVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50CitjbWF0aF9pc2Nsb3NlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIsCisgICAgICAgICAgICAgICAgICAgZG91YmxlIHJlbF90b2wsIGRvdWJsZSBhYnNfdG9sKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMGM1MzVmYjU0ZTIzMTAgaW5wdXQ9ZGY5NjM2ZDdkZTFkNGFjM10qLworeworICAgIGRvdWJsZSBkaWZmOworCisgICAgLyogc2FuaXR5IGNoZWNrIG9uIHRoZSBpbnB1dHMgKi8KKyAgICBpZiAocmVsX3RvbCA8IDAuMCB8fCBhYnNfdG9sIDwgMC4wICkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0b2xlcmFuY2VzIG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoIChhLnJlYWwgPT0gYi5yZWFsKSAmJiAoYS5pbWFnID09IGIuaW1hZykgKSB7CisgICAgICAgIC8qIHNob3J0IGNpcmN1aXQgZXhhY3QgZXF1YWxpdHkgLS0gbmVlZGVkIHRvIGNhdGNoIHR3byBpbmZpbml0aWVzIG9mCisgICAgICAgICAgIHRoZSBzYW1lIHNpZ24uIEFuZCBwZXJoYXBzIHNwZWVkcyB0aGluZ3MgdXAgYSBiaXQgc29tZXRpbWVzLgorICAgICAgICAqLworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICAvKiBUaGlzIGNhdGNoZXMgdGhlIGNhc2Ugb2YgdHdvIGluZmluaXRpZXMgb2Ygb3Bwb3NpdGUgc2lnbiwgb3IKKyAgICAgICBvbmUgaW5maW5pdHkgYW5kIG9uZSBmaW5pdGUgbnVtYmVyLiBUd28gaW5maW5pdGllcyBvZiBvcHBvc2l0ZQorICAgICAgIHNpZ24gd291bGQgb3RoZXJ3aXNlIGhhdmUgYW4gaW5maW5pdGUgcmVsYXRpdmUgdG9sZXJhbmNlLgorICAgICAgIFR3byBpbmZpbml0aWVzIG9mIHRoZSBzYW1lIHNpZ24gYXJlIGNhdWdodCBieSB0aGUgZXF1YWxpdHkgY2hlY2sKKyAgICAgICBhYm92ZS4KKyAgICAqLworCisgICAgaWYgKFB5X0lTX0lORklOSVRZKGEucmVhbCkgfHwgUHlfSVNfSU5GSU5JVFkoYS5pbWFnKSB8fAorICAgICAgICBQeV9JU19JTkZJTklUWShiLnJlYWwpIHx8IFB5X0lTX0lORklOSVRZKGIuaW1hZykpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogbm93IGRvIHRoZSByZWd1bGFyIGNvbXB1dGF0aW9uCisgICAgICAgdGhpcyBpcyBlc3NlbnRpYWxseSB0aGUgIndlYWsiIHRlc3QgZnJvbSB0aGUgQm9vc3QgbGlicmFyeQorICAgICovCisKKyAgICBkaWZmID0gX1B5X2NfYWJzKF9QeV9jX2RpZmYoYSwgYikpOworCisgICAgcmV0dXJuICgoKGRpZmYgPD0gcmVsX3RvbCAqIF9QeV9jX2FicyhiKSkgfHwKKyAgICAgICAgICAgICAoZGlmZiA8PSByZWxfdG9sICogX1B5X2NfYWJzKGEpKSkgfHwKKyAgICAgICAgICAgIChkaWZmIDw9IGFic190b2wpKTsKK30KIAogUHlEb2NfU1RSVkFSKG1vZHVsZV9kb2MsCiAiVGhpcyBtb2R1bGUgaXMgYWx3YXlzIGF2YWlsYWJsZS4gSXQgcHJvdmlkZXMgYWNjZXNzIHRvIG1hdGhlbWF0aWNhbFxuIgogImZ1bmN0aW9ucyBmb3IgY29tcGxleCBudW1iZXJzLiIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgY21hdGhfbWV0aG9kc1tdID0gewotICAgIHsiYWNvcyIsICAgY21hdGhfYWNvcywgIE1FVEhfVkFSQVJHUywgY19hY29zX2RvY30sCi0gICAgeyJhY29zaCIsICBjbWF0aF9hY29zaCwgTUVUSF9WQVJBUkdTLCBjX2Fjb3NoX2RvY30sCi0gICAgeyJhc2luIiwgICBjbWF0aF9hc2luLCAgTUVUSF9WQVJBUkdTLCBjX2FzaW5fZG9jfSwKLSAgICB7ImFzaW5oIiwgIGNtYXRoX2FzaW5oLCBNRVRIX1ZBUkFSR1MsIGNfYXNpbmhfZG9jfSwKLSAgICB7ImF0YW4iLCAgIGNtYXRoX2F0YW4sICBNRVRIX1ZBUkFSR1MsIGNfYXRhbl9kb2N9LAotICAgIHsiYXRhbmgiLCAgY21hdGhfYXRhbmgsIE1FVEhfVkFSQVJHUywgY19hdGFuaF9kb2N9LAotICAgIHsiY29zIiwgICAgY21hdGhfY29zLCAgIE1FVEhfVkFSQVJHUywgY19jb3NfZG9jfSwKLSAgICB7ImNvc2giLCAgIGNtYXRoX2Nvc2gsICBNRVRIX1ZBUkFSR1MsIGNfY29zaF9kb2N9LAotICAgIHsiZXhwIiwgICAgY21hdGhfZXhwLCAgIE1FVEhfVkFSQVJHUywgY19leHBfZG9jfSwKLSAgICB7ImlzZmluaXRlIiwgY21hdGhfaXNmaW5pdGUsIE1FVEhfVkFSQVJHUywgY21hdGhfaXNmaW5pdGVfZG9jfSwKLSAgICB7ImlzaW5mIiwgIGNtYXRoX2lzaW5mLCBNRVRIX1ZBUkFSR1MsIGNtYXRoX2lzaW5mX2RvY30sCi0gICAgeyJpc25hbiIsICBjbWF0aF9pc25hbiwgTUVUSF9WQVJBUkdTLCBjbWF0aF9pc25hbl9kb2N9LAotICAgIHsibG9nIiwgICAgY21hdGhfbG9nLCAgIE1FVEhfVkFSQVJHUywgY21hdGhfbG9nX2RvY30sCi0gICAgeyJsb2cxMCIsICBjbWF0aF9sb2cxMCwgTUVUSF9WQVJBUkdTLCBjX2xvZzEwX2RvY30sCi0gICAgeyJwaGFzZSIsICBjbWF0aF9waGFzZSwgTUVUSF9WQVJBUkdTLCBjbWF0aF9waGFzZV9kb2N9LAotICAgIHsicG9sYXIiLCAgY21hdGhfcG9sYXIsIE1FVEhfVkFSQVJHUywgY21hdGhfcG9sYXJfZG9jfSwKLSAgICB7InJlY3QiLCAgIGNtYXRoX3JlY3QsICBNRVRIX1ZBUkFSR1MsIGNtYXRoX3JlY3RfZG9jfSwKLSAgICB7InNpbiIsICAgIGNtYXRoX3NpbiwgICBNRVRIX1ZBUkFSR1MsIGNfc2luX2RvY30sCi0gICAgeyJzaW5oIiwgICBjbWF0aF9zaW5oLCAgTUVUSF9WQVJBUkdTLCBjX3NpbmhfZG9jfSwKLSAgICB7InNxcnQiLCAgIGNtYXRoX3NxcnQsICBNRVRIX1ZBUkFSR1MsIGNfc3FydF9kb2N9LAotICAgIHsidGFuIiwgICAgY21hdGhfdGFuLCAgIE1FVEhfVkFSQVJHUywgY190YW5fZG9jfSwKLSAgICB7InRhbmgiLCAgIGNtYXRoX3RhbmgsICBNRVRIX1ZBUkFSR1MsIGNfdGFuaF9kb2N9LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCisgICAgQ01BVEhfQUNPU19NRVRIT0RERUYKKyAgICBDTUFUSF9BQ09TSF9NRVRIT0RERUYKKyAgICBDTUFUSF9BU0lOX01FVEhPRERFRgorICAgIENNQVRIX0FTSU5IX01FVEhPRERFRgorICAgIENNQVRIX0FUQU5fTUVUSE9EREVGCisgICAgQ01BVEhfQVRBTkhfTUVUSE9EREVGCisgICAgQ01BVEhfQ09TX01FVEhPRERFRgorICAgIENNQVRIX0NPU0hfTUVUSE9EREVGCisgICAgQ01BVEhfRVhQX01FVEhPRERFRgorICAgIENNQVRIX0lTQ0xPU0VfTUVUSE9EREVGCisgICAgQ01BVEhfSVNGSU5JVEVfTUVUSE9EREVGCisgICAgQ01BVEhfSVNJTkZfTUVUSE9EREVGCisgICAgQ01BVEhfSVNOQU5fTUVUSE9EREVGCisgICAgQ01BVEhfTE9HX01FVEhPRERFRgorICAgIENNQVRIX0xPRzEwX01FVEhPRERFRgorICAgIENNQVRIX1BIQVNFX01FVEhPRERFRgorICAgIENNQVRIX1BPTEFSX01FVEhPRERFRgorICAgIENNQVRIX1JFQ1RfTUVUSE9EREVGCisgICAgQ01BVEhfU0lOX01FVEhPRERFRgorICAgIENNQVRIX1NJTkhfTUVUSE9EREVGCisgICAgQ01BVEhfU1FSVF9NRVRIT0RERUYKKyAgICBDTUFUSF9UQU5fTUVUSE9EREVGCisgICAgQ01BVEhfVEFOSF9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0gIC8qIHNlbnRpbmVsICovCiB9OwogCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvY29uZmlnLmMuaW4gYi9Nb2R1bGVzL2NvbmZpZy5jLmluCmluZGV4IDdhMjRlMmQuLjdiNzcxOTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY29uZmlnLmMuaW4KKysrIGIvTW9kdWxlcy9jb25maWcuYy5pbgpAQCAtMTMsNyArMTMsNyBAQAogLyogISEhICEhISAhISEgVGhpcyBmaWxlIGlzIGVkaXRlZCBieSB0aGUgbWFrZXNldHVwIHNjcmlwdCAhISEgISEhICEhISAqLwogCiAvKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHRhYmxlIG9mIGJ1aWx0LWluIG1vZHVsZXMuCi0gICBTZWUgaW5pdF9idWlsdGluKCkgaW4gaW1wb3J0LmMuICovCisgICBTZWUgY3JlYXRlX2J1aWx0aW4oKSBpbiBpbXBvcnQuYy4gKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jIGIvTW9kdWxlcy9mYXVsdGhhbmRsZXIuYwppbmRleCAxNDkzZjhkLi4xZWQyMmJmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCisrKyBiL01vZHVsZXMvZmF1bHRoYW5kbGVyLmMKQEAgLTUsNyArNSwxMyBAQAogI2luY2x1ZGUgPGZyYW1lb2JqZWN0Lmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfU0lHTUFTSykgJiYgIWRlZmluZWQoSEFWRV9CUk9LRU5fUFRIUkVBRF9TSUdNQVNLKQotI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyMgIGluY2x1ZGUgPHB0aHJlYWQuaD4KKyNlbmRpZgorI2lmZGVmIE1TX1dJTkRPV1MKKyMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1JFU09VUkNFX0gKKyMgIGluY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgogI2VuZGlmCiAKIC8qIEFsbG9jYXRlIGF0IG1heGltdW0gMTAwIE1CIG9mIHRoZSBzdGFjayB0byByYWlzZSB0aGUgc3RhY2sgb3ZlcmZsb3cgKi8KQEAgLTIyLDkgKzI4LDcgQEAKICMgIGRlZmluZSBGQVVMVEhBTkRMRVJfVVNFUgogI2VuZGlmCiAKLS8qIGNhc3Qgc2l6ZV90IHRvIGludCBiZWNhdXNlIHdyaXRlKCkgdGFrZXMgYW4gaW50IG9uIFdpbmRvd3MKLSAgIChhbnl3YXksIHRoZSBsZW5ndGggaXMgc21hbGxlciB0aGFuIDMwIGNoYXJhY3RlcnMpICovCi0jZGVmaW5lIFBVVFMoZmQsIHN0cikgd3JpdGUoZmQsIHN0ciwgKGludClzdHJsZW4oc3RyKSkKKyNkZWZpbmUgUFVUUyhmZCwgc3RyKSBfUHlfd3JpdGVfbm9yYWlzZShmZCwgc3RyLCBzdHJsZW4oc3RyKSkKIAogX1B5X0lERU5USUZJRVIoZW5hYmxlKTsKIF9QeV9JREVOVElGSUVSKGZpbGVubyk7CkBAIC0xMjcsMzIgKzEzMSw0NiBAQAogICAgY2FsbCBpdHMgZmx1c2goKSBtZXRob2QuCiAKICAgIElmIGZpbGUgaXMgTlVMTCBvciBQeV9Ob25lLCB1c2Ugc3lzLnN0ZGVyciBhcyB0aGUgbmV3IGZpbGUuCisgICBJZiBmaWxlIGlzIGFuIGludGVnZXIsIGl0IHdpbGwgYmUgdHJlYXRlZCBhcyBmaWxlIGRlc2NyaXB0b3IuCiAKLSAgIE9uIHN1Y2Nlc3MsIHJldHVybiB0aGUgbmV3IGZpbGUgYW5kIHdyaXRlIHRoZSBmaWxlIGRlc2NyaXB0b3IgaW50byAqcF9mZC4KLSAgIE9uIGVycm9yLCByZXR1cm4gTlVMTC4gKi8KKyAgIE9uIHN1Y2Nlc3MsIHJldHVybiB0aGUgZmlsZSBkZXNjcmlwdG9yIGFuZCB3cml0ZSB0aGUgbmV3IGZpbGUgaW50byAqZmlsZV9wdHIuCisgICBPbiBlcnJvciwgcmV0dXJuIC0xLiAqLwogCi1zdGF0aWMgUHlPYmplY3QqCi1mYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubyhQeU9iamVjdCAqZmlsZSwgaW50ICpwX2ZkKQorc3RhdGljIGludAorZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oUHlPYmplY3QgKipmaWxlX3B0cikKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGxvbmcgZmRfbG9uZzsKICAgICBpbnQgZmQ7CisgICAgUHlPYmplY3QgKmZpbGUgPSAqZmlsZV9wdHI7CiAKICAgICBpZiAoZmlsZSA9PSBOVUxMIHx8IGZpbGUgPT0gUHlfTm9uZSkgewogICAgICAgICBmaWxlID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGVycik7CiAgICAgICAgIGlmIChmaWxlID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJ1bmFibGUgdG8gZ2V0IHN5cy5zdGRlcnIiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGlmIChmaWxlID09IFB5X05vbmUpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJzeXMuc3RkZXJyIGlzIE5vbmUiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgfQorICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayhmaWxlKSkgeworICAgICAgICBmZCA9IF9QeUxvbmdfQXNJbnQoZmlsZSk7CisgICAgICAgIGlmIChmZCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoZmQgPCAwIHx8ICFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSBpcyBub3QgYSB2YWxpZCBmaWxlIGRlc2NyaXB0ZXIiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICAqZmlsZV9wdHIgPSBOVUxMOworICAgICAgICByZXR1cm4gZmQ7CisgICAgfQogCiAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9maWxlbm8sICIiKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAKICAgICBmZCA9IC0xOwogICAgIGlmIChQeUxvbmdfQ2hlY2socmVzdWx0KSkgewpAQCAtMTY1LDcgKzE4Myw3IEBACiAgICAgaWYgKGZkID09IC0xKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5maWxlbm8oKSBpcyBub3QgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKICAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbGUsICZQeUlkX2ZsdXNoLCAiIik7CkBAIC0xNzUsOCArMTkzLDggQEAKICAgICAgICAgLyogaWdub3JlIGZsdXNoKCkgZXJyb3IgKi8KICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICB9Ci0gICAgKnBfZmQgPSBmZDsKLSAgICByZXR1cm4gZmlsZTsKKyAgICAqZmlsZV9wdHIgPSBmaWxlOworICAgIHJldHVybiBmZDsKIH0KIAogLyogR2V0IHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCB0aHJlYWQ6IG9ubHkgY2FsbCB0aGlzIGZ1bmN0aW9uIGlmIHRoZSBjdXJyZW50CkBAIC0xOTMsNiArMjExLDQyIEBACiAgICAgcmV0dXJuIHRzdGF0ZTsKIH0KIAorc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFjayhpbnQgZmQsIGludCBhbGxfdGhyZWFkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCkKK3sKKyAgICBzdGF0aWMgdm9sYXRpbGUgaW50IHJlZW50cmFudCA9IDA7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworCisgICAgaWYgKHJlZW50cmFudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVlbnRyYW50ID0gMTsKKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgLyogU0lHU0VHViwgU0lHRlBFLCBTSUdBQlJULCBTSUdCVVMgYW5kIFNJR0lMTCBhcmUgc3luY2hyb25vdXMgc2lnbmFscyBhbmQKKyAgICAgICBhcmUgdGh1cyBkZWxpdmVyZWQgdG8gdGhlIHRocmVhZCB0aGF0IGNhdXNlZCB0aGUgZmF1bHQuIEdldCB0aGUgUHl0aG9uCisgICAgICAgdGhyZWFkIHN0YXRlIG9mIHRoZSBjdXJyZW50IHRocmVhZC4KKworICAgICAgIFB5VGhyZWFkU3RhdGVfR2V0KCkgZG9lc24ndCBnaXZlIHRoZSBzdGF0ZSBvZiB0aGUgdGhyZWFkIHRoYXQgY2F1c2VkIHRoZQorICAgICAgIGZhdWx0IGlmIHRoZSB0aHJlYWQgcmVsZWFzZWQgdGhlIEdJTCwgYW5kIHNvIHRoaXMgZnVuY3Rpb24gY2Fubm90IGJlCisgICAgICAgdXNlZC4gUmVhZCB0aGUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UgKFRMUykgaW5zdGVhZDogY2FsbAorICAgICAgIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkuICovCisgICAgdHN0YXRlID0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKTsKKyNlbHNlCisgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKKyNlbmRpZgorCisgICAgaWYgKGFsbF90aHJlYWRzKQorICAgICAgICBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIGludGVycCwgdHN0YXRlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHRzdGF0ZSAhPSBOVUxMKQorICAgICAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2soZmQsIHRzdGF0ZSk7CisgICAgfQorCisgICAgcmVlbnRyYW50ID0gMDsKK30KKwogc3RhdGljIFB5T2JqZWN0KgogZmF1bHRoYW5kbGVyX2R1bXBfdHJhY2ViYWNrX3B5KFB5T2JqZWN0ICpzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQpAQCAtMjA5LDggKzI2Myw4IEBACiAgICAgICAgICZmaWxlLCAmYWxsX3RocmVhZHMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGZpbGUgPSBmYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubyhmaWxlLCAmZmQpOwotICAgIGlmIChmaWxlID09IE5VTEwpCisgICAgZmQgPSBmYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubygmZmlsZSk7CisgICAgaWYgKGZkIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICB0c3RhdGUgPSBnZXRfdGhyZWFkX3N0YXRlKCk7CkBAIC0yMjcsNiArMjgxLDEwIEBACiAgICAgZWxzZSB7CiAgICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrKGZkLCB0c3RhdGUpOwogICAgIH0KKworICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtMjUwLDcgKzMwOCw2IEBACiAgICAgY29uc3QgaW50IGZkID0gZmF0YWxfZXJyb3IuZmQ7CiAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgZmF1bHRfaGFuZGxlcl90ICpoYW5kbGVyID0gTlVMTDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAgICAgaW50IHNhdmVfZXJybm8gPSBlcnJubzsKIAogICAgIGlmICghZmF0YWxfZXJyb3IuZW5hYmxlZCkKQEAgLTI3OCwyNiArMzM1LDggQEAKICAgICBQVVRTKGZkLCBoYW5kbGVyLT5uYW1lKTsKICAgICBQVVRTKGZkLCAiXG5cbiIpOwogCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICAvKiBTSUdTRUdWLCBTSUdGUEUsIFNJR0FCUlQsIFNJR0JVUyBhbmQgU0lHSUxMIGFyZSBzeW5jaHJvbm91cyBzaWduYWxzIGFuZAotICAgICAgIGFyZSB0aHVzIGRlbGl2ZXJlZCB0byB0aGUgdGhyZWFkIHRoYXQgY2F1c2VkIHRoZSBmYXVsdC4gR2V0IHRoZSBQeXRob24KLSAgICAgICB0aHJlYWQgc3RhdGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLgotCi0gICAgICAgUHlUaHJlYWRTdGF0ZV9HZXQoKSBkb2Vzbid0IGdpdmUgdGhlIHN0YXRlIG9mIHRoZSB0aHJlYWQgdGhhdCBjYXVzZWQgdGhlCi0gICAgICAgZmF1bHQgaWYgdGhlIHRocmVhZCByZWxlYXNlZCB0aGUgR0lMLCBhbmQgc28gdGhpcyBmdW5jdGlvbiBjYW5ub3QgYmUKLSAgICAgICB1c2VkLiBSZWFkIHRoZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoVExTKSBpbnN0ZWFkOiBjYWxsCi0gICAgICAgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKS4gKi8KLSAgICB0c3RhdGUgPSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpOwotI2Vsc2UKLSAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOwotI2VuZGlmCi0KLSAgICBpZiAoZmF0YWxfZXJyb3IuYWxsX3RocmVhZHMpCi0gICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgZmF0YWxfZXJyb3IuaW50ZXJwLCB0c3RhdGUpOwotICAgIGVsc2UgewotICAgICAgICBpZiAodHN0YXRlICE9IE5VTEwpCi0gICAgICAgICAgICBfUHlfRHVtcFRyYWNlYmFjayhmZCwgdHN0YXRlKTsKLSAgICB9CisgICAgZmF1bHRoYW5kbGVyX2R1bXBfdHJhY2ViYWNrKGZkLCBmYXRhbF9lcnJvci5hbGxfdGhyZWFkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmF0YWxfZXJyb3IuaW50ZXJwKTsKIAogICAgIGVycm5vID0gc2F2ZV9lcnJubzsKICNpZmRlZiBNU19XSU5ET1dTCkBAIC0zMzMsMTcgKzM3MiwxNiBAQAogICAgICAgICAifE9pOmVuYWJsZSIsIGt3bGlzdCwgJmZpbGUsICZhbGxfdGhyZWFkcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZmlsZSA9IGZhdWx0aGFuZGxlcl9nZXRfZmlsZW5vKGZpbGUsICZmZCk7Ci0gICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICBmZCA9IGZhdWx0aGFuZGxlcl9nZXRfZmlsZW5vKCZmaWxlKTsKKyAgICBpZiAoZmQgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHRzdGF0ZSA9IGdldF90aHJlYWRfc3RhdGUoKTsKICAgICBpZiAodHN0YXRlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgUHlfWERFQ1JFRihmYXRhbF9lcnJvci5maWxlKTsKLSAgICBQeV9JTkNSRUYoZmlsZSk7Ci0gICAgZmF0YWxfZXJyb3IuZmlsZSA9IGZpbGU7CisgICAgUHlfWElOQ1JFRihmaWxlKTsKKyAgICBQeV9TRVRSRUYoZmF0YWxfZXJyb3IuZmlsZSwgZmlsZSk7CiAgICAgZmF0YWxfZXJyb3IuZmQgPSBmZDsKICAgICBmYXRhbF9lcnJvci5hbGxfdGhyZWFkcyA9IGFsbF90aHJlYWRzOwogICAgIGZhdGFsX2Vycm9yLmludGVycCA9IHRzdGF0ZS0+aW50ZXJwOwpAQCAtNDUyLDkgKzQ5MCw5IEBACiAgICAgICAgIGFzc2VydChzdCA9PSBQWV9MT0NLX0ZBSUxVUkUpOwogCiAgICAgICAgIC8qIGdldCB0aGUgdGhyZWFkIGhvbGRpbmcgdGhlIEdJTCwgTlVMTCBpZiBubyB0aHJlYWQgaG9sZCB0aGUgR0lMICovCi0gICAgICAgIGN1cnJlbnQgPSBfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCk7CisgICAgICAgIGN1cnJlbnQgPSAoUHlUaHJlYWRTdGF0ZSopX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJl9QeVRocmVhZFN0YXRlX0N1cnJlbnQpOwogCi0gICAgICAgIHdyaXRlKHRocmVhZC5mZCwgdGhyZWFkLmhlYWRlciwgKGludCl0aHJlYWQuaGVhZGVyX2xlbik7CisgICAgICAgIF9QeV93cml0ZV9ub3JhaXNlKHRocmVhZC5mZCwgdGhyZWFkLmhlYWRlciwgKGludCl0aHJlYWQuaGVhZGVyX2xlbik7CiAKICAgICAgICAgZXJybXNnID0gX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKHRocmVhZC5mZCwgdGhyZWFkLmludGVycCwgY3VycmVudCk7CiAgICAgICAgIG9rID0gKGVycm1zZyA9PSBOVUxMKTsKQEAgLTU0Nyw4ICs1ODUsOCBAQAogICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBmaWxlID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oZmlsZSwgJmZkKTsKLSAgICBpZiAoZmlsZSA9PSBOVUxMKQorICAgIGZkID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oJmZpbGUpOworICAgIGlmIChmZCA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogZm9ybWF0IHRoZSB0aW1lb3V0ICovCkBAIC01NjAsOSArNTk4LDggQEAKICAgICAvKiBDYW5jZWwgcHJldmlvdXMgdGhyZWFkLCBpZiBydW5uaW5nICovCiAgICAgY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCk7CiAKLSAgICBQeV9YREVDUkVGKHRocmVhZC5maWxlKTsKLSAgICBQeV9JTkNSRUYoZmlsZSk7Ci0gICAgdGhyZWFkLmZpbGUgPSBmaWxlOworICAgIFB5X1hJTkNSRUYoZmlsZSk7CisgICAgUHlfU0VUUkVGKHRocmVhZC5maWxlLCBmaWxlKTsKICAgICB0aHJlYWQuZmQgPSBmZDsKICAgICB0aHJlYWQudGltZW91dF91cyA9IHRpbWVvdXRfdXM7CiAgICAgdGhyZWFkLnJlcGVhdCA9IHJlcGVhdDsKQEAgLTY0MCwyOCArNjc3LDE0IEBACiBmYXVsdGhhbmRsZXJfdXNlcihpbnQgc2lnbnVtKQogewogICAgIHVzZXJfc2lnbmFsX3QgKnVzZXI7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwogICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87CiAKICAgICB1c2VyID0gJnVzZXJfc2lnbmFsc1tzaWdudW1dOwogICAgIGlmICghdXNlci0+ZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICAvKiBQeVRocmVhZFN0YXRlX0dldCgpIGRvZXNuJ3QgZ2l2ZSB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkIGlmCi0gICAgICAgdGhlIHRocmVhZCBkb2Vzbid0IGhvbGQgdGhlIEdJTC4gUmVhZCB0aGUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UgKFRMUykKLSAgICAgICBpbnN0ZWFkOiBjYWxsIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkuICovCi0gICAgdHN0YXRlID0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKTsKLSNlbHNlCi0gICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKLSNlbmRpZgorICAgIGZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFjayh1c2VyLT5mZCwgdXNlci0+YWxsX3RocmVhZHMsIHVzZXItPmludGVycCk7CiAKLSAgICBpZiAodXNlci0+YWxsX3RocmVhZHMpCi0gICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyh1c2VyLT5mZCwgdXNlci0+aW50ZXJwLCB0c3RhdGUpOwotICAgIGVsc2UgewotICAgICAgICBpZiAodHN0YXRlICE9IE5VTEwpCi0gICAgICAgICAgICBfUHlfRHVtcFRyYWNlYmFjayh1c2VyLT5mZCwgdHN0YXRlKTsKLSAgICB9CiAjaWZkZWYgSEFWRV9TSUdBQ1RJT04KICAgICBpZiAodXNlci0+Y2hhaW4pIHsKICAgICAgICAgKHZvaWQpc2lnYWN0aW9uKHNpZ251bSwgJnVzZXItPnByZXZpb3VzLCBOVUxMKTsKQEAgLTczMSw4ICs3NTQsOCBAQAogICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBmaWxlID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oZmlsZSwgJmZkKTsKLSAgICBpZiAoZmlsZSA9PSBOVUxMKQorICAgIGZkID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oJmZpbGUpOworICAgIGlmIChmZCA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKHVzZXJfc2lnbmFscyA9PSBOVUxMKSB7CkBAIC03NTMsOSArNzc2LDggQEAKICAgICAgICAgdXNlci0+cHJldmlvdXMgPSBwcmV2aW91czsKICAgICB9CiAKLSAgICBQeV9YREVDUkVGKHVzZXItPmZpbGUpOwotICAgIFB5X0lOQ1JFRihmaWxlKTsKLSAgICB1c2VyLT5maWxlID0gZmlsZTsKKyAgICBQeV9YSU5DUkVGKGZpbGUpOworICAgIFB5X1NFVFJFRih1c2VyLT5maWxlLCBmaWxlKTsKICAgICB1c2VyLT5mZCA9IGZkOwogICAgIHVzZXItPmFsbF90aHJlYWRzID0gYWxsX3RocmVhZHM7CiAgICAgdXNlci0+Y2hhaW4gPSBjaGFpbjsKQEAgLTgwNCwxMiArODI2LDQxIEBACiAjZW5kaWYgICAvKiBGQVVMVEhBTkRMRVJfVVNFUiAqLwogCiAKK3N0YXRpYyB2b2lkCitmYXVsdGhhbmRsZXJfc3VwcHJlc3NfY3Jhc2hfcmVwb3J0KHZvaWQpCit7CisjaWZkZWYgTVNfV0lORE9XUworICAgIFVJTlQgbW9kZTsKKworICAgIC8qIENvbmZpZ3VyZSBXaW5kb3dzIHRvIG5vdCBkaXNwbGF5IHRoZSBXaW5kb3dzIEVycm9yIFJlcG9ydGluZyBkaWFsb2cgKi8KKyAgICBtb2RlID0gU2V0RXJyb3JNb2RlKFNFTV9OT0dQRkFVTFRFUlJPUkJPWCk7CisgICAgU2V0RXJyb3JNb2RlKG1vZGUgfCBTRU1fTk9HUEZBVUxURVJST1JCT1gpOworI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NZU19SRVNPVVJDRV9ICisgICAgc3RydWN0IHJsaW1pdCBybDsKKworICAgIC8qIERpc2FibGUgY3JlYXRpb24gb2YgY29yZSBkdW1wICovCisgICAgaWYgKGdldHJsaW1pdChSTElNSVRfQ09SRSwgJnJsKSAhPSAwKSB7CisgICAgICAgIHJsLnJsaW1fY3VyID0gMDsKKyAgICAgICAgc2V0cmxpbWl0KFJMSU1JVF9DT1JFLCAmcmwpOworICAgIH0KKyNlbmRpZgorCisjaWZkZWYgX01TQ19WRVIKKyAgICAvKiBWaXN1YWwgU3R1ZGlvOiBjb25maWd1cmUgYWJvcnQoKSB0byBub3QgZGlzcGxheSBhbiBlcnJvciBtZXNzYWdlIG5vcgorICAgICAgIG9wZW4gYSBwb3B1cCBhc2tpbmcgdG8gcmVwb3J0IHRoZSBmYXVsdC4gKi8KKyAgICBfc2V0X2Fib3J0X2JlaGF2aW9yKDAsIF9XUklURV9BQk9SVF9NU0cgfCBfQ0FMTF9SRVBPUlRGQVVMVCk7CisjZW5kaWYKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGZhdWx0aGFuZGxlcl9yZWFkX251bGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIHZvbGF0aWxlIGludCAqeDsKICAgICB2b2xhdGlsZSBpbnQgeTsKIAorICAgIGZhdWx0aGFuZGxlcl9zdXBwcmVzc19jcmFzaF9yZXBvcnQoKTsKICAgICB4ID0gTlVMTDsKICAgICB5ID0gKng7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh5KTsKQEAgLTgxOSw2ICs4NzAsNyBAQAogc3RhdGljIHZvaWQKIGZhdWx0aGFuZGxlcl9yYWlzZV9zaWdzZWd2KHZvaWQpCiB7CisgICAgZmF1bHRoYW5kbGVyX3N1cHByZXNzX2NyYXNoX3JlcG9ydCgpOwogI2lmIGRlZmluZWQoTVNfV0lORE9XUykKICAgICAvKiBGb3IgU0lHU0VHViwgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKCkgcmVzdG9yZXMgdGhlIHByZXZpb3VzIHNpZ25hbAogICAgICAgIGhhbmRsZXIgYW5kIHRoZW4gZ2l2ZXMgYmFjayB0aGUgZXhlY3V0aW9uIGZsb3cgdG8gdGhlIHByb2dyYW0gKHdpdGhvdXQKQEAgLTg2MSw2ICs5MTMsNyBAQAogICAgIC8qIERvIGFuIGludGVnZXIgZGl2aXNpb24gYnkgemVybzogcmFpc2UgYSBTSUdGUEUgb24gSW50ZWwgQ1BVLCBidXQgbm90IG9uCiAgICAgICAgUG93ZXJQQy4gVXNlIHZvbGF0aWxlIHRvIGRpc2FibGUgY29tcGlsZS10aW1lIG9wdGltaXphdGlvbnMuICovCiAgICAgdm9sYXRpbGUgaW50IHggPSAxLCB5ID0gMCwgejsKKyAgICBmYXVsdGhhbmRsZXJfc3VwcHJlc3NfY3Jhc2hfcmVwb3J0KCk7CiAgICAgeiA9IHggLyB5OwogICAgIC8qIElmIHRoZSBkaXZpc2lvbiBieSB6ZXJvIGRpZG4ndCByYWlzZSBhIFNJR0ZQRSAoZS5nLiBvbiBQb3dlclBDKSwKICAgICAgICByYWlzZSBpdCBtYW51YWxseS4gKi8KQEAgLTg3MywzOSArOTI2LDE4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZmF1bHRoYW5kbGVyX3NpZ2FicnQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotI2lmZGVmIF9NU0NfVkVSCi0gICAgLyogVmlzdWFsIFN0dWRpbzogY29uZmlndXJlIGFib3J0KCkgdG8gbm90IGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZSBub3IKLSAgICAgICBvcGVuIGEgcG9wdXAgYXNraW5nIHRvIHJlcG9ydCB0aGUgZmF1bHQuICovCi0gICAgX3NldF9hYm9ydF9iZWhhdmlvcigwLCBfV1JJVEVfQUJPUlRfTVNHIHwgX0NBTExfUkVQT1JURkFVTFQpOwotI2VuZGlmCisgICAgZmF1bHRoYW5kbGVyX3N1cHByZXNzX2NyYXNoX3JlcG9ydCgpOwogICAgIGFib3J0KCk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLSNpZmRlZiBTSUdCVVMKLXN0YXRpYyBQeU9iamVjdCAqCi1mYXVsdGhhbmRsZXJfc2lnYnVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICByYWlzZShTSUdCVVMpOwotICAgIFB5X1JFVFVSTl9OT05FOwotfQotI2VuZGlmCi0KLSNpZmRlZiBTSUdJTEwKLXN0YXRpYyBQeU9iamVjdCAqCi1mYXVsdGhhbmRsZXJfc2lnaWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICByYWlzZShTSUdJTEwpOwotICAgIFB5X1JFVFVSTl9OT05FOwotfQotI2VuZGlmCi0KIHN0YXRpYyBQeU9iamVjdCAqCiBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3JfcHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGNoYXIgKm1lc3NhZ2U7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5OmZhdGFsX2Vycm9yIiwgJm1lc3NhZ2UpKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmYXVsdGhhbmRsZXJfc3VwcHJlc3NfY3Jhc2hfcmVwb3J0KCk7CiAgICAgUHlfRmF0YWxFcnJvcihtZXNzYWdlKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KQEAgLTkzOSw2ICs5NzEsNyBAQAogICAgIFB5X3VpbnRwdHJfdCBzcCA9IChQeV91aW50cHRyX3QpJmRlcHRoOwogICAgIFB5X3VpbnRwdHJfdCBzdG9wOwogCisgICAgZmF1bHRoYW5kbGVyX3N1cHByZXNzX2NyYXNoX3JlcG9ydCgpOwogICAgIGRlcHRoID0gMDsKICAgICBzdG9wID0gc3RhY2tfb3ZlcmZsb3coc3AgLSBTVEFDS19PVkVSRkxPV19NQVhfU0laRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3AgKyBTVEFDS19PVkVSRkxPV19NQVhfU0laRSwKQEAgLTEwMjgsMTQgKzEwNjEsNiBAQAogICAgICBQeURvY19TVFIoIl9zaWdhYnJ0KCk6IHJhaXNlIGEgU0lHQUJSVCBzaWduYWwiKX0sCiAgICAgeyJfc2lnZnBlIiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9zaWdmcGUsIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIl9zaWdmcGUoKTogcmFpc2UgYSBTSUdGUEUgc2lnbmFsIil9LAotI2lmZGVmIFNJR0JVUwotICAgIHsiX3NpZ2J1cyIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfc2lnYnVzLCBNRVRIX05PQVJHUywKLSAgICAgUHlEb2NfU1RSKCJfc2lnYnVzKCk6IHJhaXNlIGEgU0lHQlVTIHNpZ25hbCIpfSwKLSNlbmRpZgotI2lmZGVmIFNJR0lMTAotICAgIHsiX3NpZ2lsbCIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfc2lnaWxsLCBNRVRIX05PQVJHUywKLSAgICAgUHlEb2NfU1RSKCJfc2lnaWxsKCk6IHJhaXNlIGEgU0lHSUxMIHNpZ25hbCIpfSwKLSNlbmRpZgogICAgIHsiX2ZhdGFsX2Vycm9yIiwgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX3B5LCBNRVRIX1ZBUkFSR1MsCiAgICAgIFB5RG9jX1NUUigiX2ZhdGFsX2Vycm9yKG1lc3NhZ2UpOiBjYWxsIFB5X0ZhdGFsRXJyb3IobWVzc2FnZSkiKX0sCiAjaWYgZGVmaW5lZChIQVZFX1NJR0FMVFNUQUNLKSAmJiBkZWZpbmVkKEhBVkVfU0lHQUNUSU9OKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9mY250bG1vZHVsZS5jIGIvTW9kdWxlcy9mY250bG1vZHVsZS5jCmluZGV4IDkzMjU5NDAuLjk3ZmYwN2MgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZmNudGxtb2R1bGUuYworKysgYi9Nb2R1bGVzL2ZjbnRsbW9kdWxlLmMKQEAgLTE1LDYgKzE1LDExIEBACiAjaW5jbHVkZSA8c3Ryb3B0cy5oPgogI2VuZGlmCiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBmY250bAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MTI0YjU4Mzg3YzE1ODE3OV0qLworCiBzdGF0aWMgaW50CiBjb252X2Rlc2NyaXB0b3IoUHlPYmplY3QgKm9iamVjdCwgaW50ICp0YXJnZXQpCiB7CkBAIC0yNiw0OCArMzEsNzIgQEAKICAgICByZXR1cm4gMTsKIH0KIAorLyogTXVzdCBjb21lIGFmdGVyIGNvbnZfZGVzY3JpcHRvciBkZWZpbml0aW9uLiAqLworI2luY2x1ZGUgImNsaW5pYy9mY250bG1vZHVsZS5jLmgiCiAKLS8qIGZjbnRsKGZkLCBvcCwgW2FyZ10pICovCisvKltjbGluaWMgaW5wdXRdCitmY250bC5mY250bAorCisgICAgZmQ6IG9iamVjdCh0eXBlPSdpbnQnLCBjb252ZXJ0ZXI9J2NvbnZfZGVzY3JpcHRvcicpCisgICAgY21kIGFzIGNvZGU6IGludAorICAgIGFyZzogb2JqZWN0KGNfZGVmYXVsdD0nTlVMTCcpID0gMAorICAgIC8KKworUGVyZm9ybSB0aGUgb3BlcmF0aW9uIGBjbWRgIG9uIGZpbGUgZGVzY3JpcHRvciBmZC4KKworVGhlIHZhbHVlcyB1c2VkIGZvciBgY21kYCBhcmUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQsIGFuZCBhcmUgYXZhaWxhYmxlCithcyBjb25zdGFudHMgaW4gdGhlIGZjbnRsIG1vZHVsZSwgdXNpbmcgdGhlIHNhbWUgbmFtZXMgYXMgdXNlZCBpbgordGhlIHJlbGV2YW50IEMgaGVhZGVyIGZpbGVzLiAgVGhlIGFyZ3VtZW50IGFyZyBpcyBvcHRpb25hbCwgYW5kCitkZWZhdWx0cyB0byAwOyBpdCBtYXkgYmUgYW4gaW50IG9yIGEgc3RyaW5nLiAgSWYgYXJnIGlzIGdpdmVuIGFzIGEgc3RyaW5nLAordGhlIHJldHVybiB2YWx1ZSBvZiBmY250bCBpcyBhIHN0cmluZyBvZiB0aGF0IGxlbmd0aCwgY29udGFpbmluZyB0aGUKK3Jlc3VsdGluZyB2YWx1ZSBwdXQgaW4gdGhlIGFyZyBidWZmZXIgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBUaGUgbGVuZ3RoCitvZiB0aGUgYXJnIHN0cmluZyBpcyBub3QgYWxsb3dlZCB0byBleGNlZWQgMTAyNCBieXRlcy4gIElmIHRoZSBhcmcgZ2l2ZW4KK2lzIGFuIGludGVnZXIgb3IgaWYgbm9uZSBpcyBzcGVjaWZpZWQsIHRoZSByZXN1bHQgdmFsdWUgaXMgYW4gaW50ZWdlcgorY29ycmVzcG9uZGluZyB0byB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmY250bCBjYWxsIGluIHRoZSBDIGNvZGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1mY250bF9mY250bChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitmY250bF9mY250bF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGNvZGUsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWZjNWJmYTc0YTAzZWYwZCBpbnB1dD04Y2VmYmU1OWIyOWVmYmUyXSovCiB7Ci0gICAgaW50IGZkOwotICAgIGludCBjb2RlOwotICAgIGludCBhcmc7CisgICAgdW5zaWduZWQgaW50IGludF9hcmcgPSAwOwogICAgIGludCByZXQ7CiAgICAgY2hhciAqc3RyOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIGNoYXIgYnVmWzEwMjRdOwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maXMjOmZjbnRsIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZzdHIsICZsZW4pKSB7Ci0gICAgICAgIGlmIChsZW4gPiBzaXplb2YgYnVmKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmNudGwgc3RyaW5nIGFyZyB0b28gbG9uZyIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGFyZyAhPSBOVUxMKSB7CisgICAgICAgIGludCBwYXJzZV9yZXN1bHQ7CisKKyAgICAgICAgaWYgKFB5QXJnX1BhcnNlKGFyZywgInMjIiwgJnN0ciwgJmxlbikpIHsKKyAgICAgICAgICAgIGlmICgoc2l6ZV90KWxlbiA+IHNpemVvZiBidWYpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZjbnRsIHN0cmluZyBhcmcgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1lbWNweShidWYsIHN0ciwgbGVuKTsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIHJldCA9IGZjbnRsKGZkLCBjb2RlLCBidWYpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBsZW4pOwogICAgICAgICB9Ci0gICAgICAgIG1lbWNweShidWYsIHN0ciwgbGVuKTsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICByZXQgPSBmY250bChmZCwgY29kZSwgYnVmKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKHJldCA8IDApIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHBhcnNlX3Jlc3VsdCA9IFB5QXJnX1BhcnNlKGFyZywKKyAgICAgICAgICAgICJJO2ZjbnRsIHJlcXVpcmVzIGEgZmlsZSBvciBmaWxlIGRlc2NyaXB0b3IsIgorICAgICAgICAgICAgIiBhbiBpbnRlZ2VyIGFuZCBvcHRpb25hbGx5IGEgdGhpcmQgaW50ZWdlciBvciBhIHN0cmluZyIsCisgICAgICAgICAgICAmaW50X2FyZyk7CisgICAgICAgIGlmICghcGFyc2VfcmVzdWx0KSB7CisgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBsZW4pOwogICAgIH0KIAotICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgYXJnID0gMDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgICJPJml8STtmY250bCByZXF1aXJlcyBhIGZpbGUgb3IgZmlsZSBkZXNjcmlwdG9yLCIKLSAgICAgICAgICIgYW4gaW50ZWdlciBhbmQgb3B0aW9uYWxseSBhIHRoaXJkIGludGVnZXIgb3IgYSBzdHJpbmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZhcmcpKSB7Ci0gICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJldCA9IGZjbnRsKGZkLCBjb2RlLCBhcmcpOworICAgIHJldCA9IGZjbnRsKGZkLCBjb2RlLCAoaW50KWludF9hcmcpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJldCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwpAQCAtNzYsMzMgKzEwNSw1NCBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpcmV0KTsKIH0KIAotUHlEb2NfU1RSVkFSKGZjbnRsX2RvYywKLSJmY250bChmZCwgb3AsIFthcmddKVxuXAotXG5cCi1QZXJmb3JtIHRoZSBvcGVyYXRpb24gb3Agb24gZmlsZSBkZXNjcmlwdG9yIGZkLiAgVGhlIHZhbHVlcyB1c2VkXG5cCi1mb3Igb3AgYXJlIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50LCBhbmQgYXJlIGF2YWlsYWJsZVxuXAotYXMgY29uc3RhbnRzIGluIHRoZSBmY250bCBtb2R1bGUsIHVzaW5nIHRoZSBzYW1lIG5hbWVzIGFzIHVzZWQgaW5cblwKLXRoZSByZWxldmFudCBDIGhlYWRlciBmaWxlcy4gIFRoZSBhcmd1bWVudCBhcmcgaXMgb3B0aW9uYWwsIGFuZFxuXAotZGVmYXVsdHMgdG8gMDsgaXQgbWF5IGJlIGFuIGludCBvciBhIHN0cmluZy4gIElmIGFyZyBpcyBnaXZlbiBhcyBhIHN0cmluZyxcblwKLXRoZSByZXR1cm4gdmFsdWUgb2YgZmNudGwgaXMgYSBzdHJpbmcgb2YgdGhhdCBsZW5ndGgsIGNvbnRhaW5pbmcgdGhlXG5cCi1yZXN1bHRpbmcgdmFsdWUgcHV0IGluIHRoZSBhcmcgYnVmZmVyIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtLiAgVGhlIGxlbmd0aFxuXAotb2YgdGhlIGFyZyBzdHJpbmcgaXMgbm90IGFsbG93ZWQgdG8gZXhjZWVkIDEwMjQgYnl0ZXMuICBJZiB0aGUgYXJnIGdpdmVuXG5cCi1pcyBhbiBpbnRlZ2VyIG9yIGlmIG5vbmUgaXMgc3BlY2lmaWVkLCB0aGUgcmVzdWx0IHZhbHVlIGlzIGFuIGludGVnZXJcblwKLWNvcnJlc3BvbmRpbmcgdG8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZmNudGwgY2FsbCBpbiB0aGUgQyBjb2RlLiIpOwogCisvKltjbGluaWMgaW5wdXRdCitmY250bC5pb2N0bAogCi0vKiBpb2N0bChmZCwgb3AsIFthcmddKSAqLworICAgIGZkOiBvYmplY3QodHlwZT0naW50JywgY29udmVydGVyPSdjb252X2Rlc2NyaXB0b3InKQorICAgIHJlcXVlc3QgYXMgY29kZTogdW5zaWduZWRfaW50KGJpdHdpc2U9VHJ1ZSkKKyAgICBhcmcgYXMgb2JfYXJnOiBvYmplY3QoY19kZWZhdWx0PSdOVUxMJykgPSAwCisgICAgbXV0YXRlX2ZsYWcgYXMgbXV0YXRlX2FyZzogYm9vbCA9IFRydWUKKyAgICAvCisKK1BlcmZvcm0gdGhlIG9wZXJhdGlvbiBgcmVxdWVzdGAgb24gZmlsZSBkZXNjcmlwdG9yIGBmZGAuCisKK1RoZSB2YWx1ZXMgdXNlZCBmb3IgYHJlcXVlc3RgIGFyZSBvcGVyYXRpbmcgc3lzdGVtIGRlcGVuZGVudCwgYW5kIGFyZSBhdmFpbGFibGUKK2FzIGNvbnN0YW50cyBpbiB0aGUgZmNudGwgb3IgdGVybWlvcyBsaWJyYXJ5IG1vZHVsZXMsIHVzaW5nIHRoZSBzYW1lIG5hbWVzIGFzCit1c2VkIGluIHRoZSByZWxldmFudCBDIGhlYWRlciBmaWxlcy4KKworVGhlIGFyZ3VtZW50IGBhcmdgIGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gMDsgaXQgbWF5IGJlIGFuIGludCBvciBhCitidWZmZXIgY29udGFpbmluZyBjaGFyYWN0ZXIgZGF0YSAobW9zdCBsaWtlbHkgYSBzdHJpbmcgb3IgYW4gYXJyYXkpLgorCitJZiB0aGUgYXJndW1lbnQgaXMgYSBtdXRhYmxlIGJ1ZmZlciAoc3VjaCBhcyBhbiBhcnJheSkgYW5kIGlmIHRoZQorbXV0YXRlX2ZsYWcgYXJndW1lbnQgKHdoaWNoIGlzIG9ubHkgYWxsb3dlZCBpbiB0aGlzIGNhc2UpIGlzIHRydWUgdGhlbiB0aGUKK2J1ZmZlciBpcyAoaW4gZWZmZWN0KSBwYXNzZWQgdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0gYW5kIGNoYW5nZXMgbWFkZSBieQordGhlIE9TIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRoZSBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGFmdGVyIHRoZSBjYWxsIGhhcworcmV0dXJuZWQuICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBpbnRlZ2VyIHJldHVybmVkIGJ5IHRoZSBpb2N0bCBzeXN0ZW0KK2NhbGwuCisKK0lmIHRoZSBhcmd1bWVudCBpcyBhIG11dGFibGUgYnVmZmVyIGFuZCB0aGUgbXV0YWJsZV9mbGFnIGFyZ3VtZW50IGlzIGZhbHNlLAordGhlIGJlaGF2aW9yIGlzIGFzIGlmIGEgc3RyaW5nIGhhZCBiZWVuIHBhc3NlZC4KKworSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGltbXV0YWJsZSBidWZmZXIgKG1vc3QgbGlrZWx5IGEgc3RyaW5nKSB0aGVuIGEgY29weQorb2YgdGhlIGJ1ZmZlciBpcyBwYXNzZWQgdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0gYW5kIHRoZSByZXR1cm4gdmFsdWUgaXMgYQorc3RyaW5nIG9mIHRoZSBzYW1lIGxlbmd0aCBjb250YWluaW5nIHdoYXRldmVyIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHB1dCBpbgordGhlIGJ1ZmZlci4gIFRoZSBsZW5ndGggb2YgdGhlIGFyZyBidWZmZXIgaW4gdGhpcyBjYXNlIGlzIG5vdCBhbGxvd2VkIHRvCitleGNlZWQgMTAyNCBieXRlcy4KKworSWYgdGhlIGFyZyBnaXZlbiBpcyBhbiBpbnRlZ2VyIG9yIGlmIG5vbmUgaXMgc3BlY2lmaWVkLCB0aGUgcmVzdWx0IHZhbHVlIGlzCithbiBpbnRlZ2VyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgaW9jdGwgY2FsbCBpbiB0aGUgQworY29kZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWZjbnRsX2lvY3RsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2ZjbnRsX2lvY3RsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCB1bnNpZ25lZCBpbnQgY29kZSwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iX2FyZywgaW50IG11dGF0ZV9hcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTAyZmFhMGY3ZWJlMjIxMCBpbnB1dD1lZGU3MGM0MzNjY2NiYmIyXSovCiB7CiAjZGVmaW5lIElPQ1RMX0JVRlNaIDEwMjQKLSAgICBpbnQgZmQ7Ci0gICAgLyogSW4gUHlBcmdfUGFyc2VUdXBsZSBiZWxvdywgd2UgdXNlIHRoZSB1bnNpZ25lZCBub24tY2hlY2tlZCAnSScKLSAgICAgICBmb3JtYXQgZm9yIHRoZSAnY29kZScgcGFyYW1ldGVyIGJlY2F1c2UgUHl0aG9uIHR1cm5zIDB4ODAwMDAwMAotICAgICAgIGludG8gZWl0aGVyIGEgbGFyZ2UgcG9zaXRpdmUgbnVtYmVyIChQeUxvbmcgb3IgUHlJbnQgb24gNjQtYml0Ci0gICAgICAgcGxhdGZvcm1zKSBvciBhIG5lZ2F0aXZlIG51bWJlciBvbiBvdGhlcnMgKDMyLWJpdCBQeUludCkKLSAgICAgICB3aGVyZWFzIHRoZSBzeXN0ZW0gZXhwZWN0cyBpdCB0byBiZSBhIDMyYml0IGJpdCBmaWVsZCB2YWx1ZQorICAgIC8qIFdlIHVzZSB0aGUgdW5zaWduZWQgbm9uLWNoZWNrZWQgJ0knIGZvcm1hdCBmb3IgdGhlICdjb2RlJyBwYXJhbWV0ZXIKKyAgICAgICBiZWNhdXNlIHRoZSBzeXN0ZW0gZXhwZWN0cyBpdCB0byBiZSBhIDMyYml0IGJpdCBmaWVsZCB2YWx1ZQogICAgICAgIHJlZ2FyZGxlc3Mgb2YgaXQgYmVpbmcgcGFzc2VkIGFzIGFuIGludCBvciB1bnNpZ25lZCBsb25nIG9uCiAgICAgICAgdmFyaW91cyBwbGF0Zm9ybXMuICBTZWUgdGhlIHRlcm1pb3MuVElPQ1NXSU5TWiBjb25zdGFudCBhY3Jvc3MKICAgICAgICBwbGF0Zm9ybXMgZm9yIGFuIGV4YW1wbGUgb2YgdGhpcy4KQEAgLTExMSwxMDEgKzE2MSw5OCBAQAogICAgICAgIGluIHRoZWlyIHVuc2lnbmVkIGxvbmcgaW9jdGwgY29kZXMgdGhpcyB3aWxsIGJyZWFrIGFuZCBuZWVkCiAgICAgICAgc3BlY2lhbCBjYXNpbmcgYmFzZWQgb24gdGhlIHBsYXRmb3JtIGJlaW5nIGJ1aWx0IG9uLgogICAgICAqLwotICAgIHVuc2lnbmVkIGludCBjb2RlOwotICAgIGludCBhcmc7CisgICAgaW50IGFyZyA9IDA7CiAgICAgaW50IHJldDsKICAgICBQeV9idWZmZXIgcHN0cjsKICAgICBjaGFyICpzdHI7CiAgICAgUHlfc3NpemVfdCBsZW47Ci0gICAgaW50IG11dGF0ZV9hcmcgPSAxOwogICAgIGNoYXIgYnVmW0lPQ1RMX0JVRlNaKzFdOyAgLyogYXJndW1lbnQgcGx1cyBOVUwgYnl0ZSAqLwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mSXcqfGk6aW9jdGwiLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmcHN0ciwgJm11dGF0ZV9hcmcpKSB7Ci0gICAgICAgIGNoYXIgKmFyZzsKLSAgICAgICAgc3RyID0gcHN0ci5idWY7Ci0gICAgICAgIGxlbiA9IHBzdHIubGVuOworICAgIGlmIChvYl9hcmcgIT0gTlVMTCkgeworICAgICAgICBpZiAoUHlBcmdfUGFyc2Uob2JfYXJnLCAidyo6aW9jdGwiLCAmcHN0cikpIHsKKyAgICAgICAgICAgIGNoYXIgKmFyZzsKKyAgICAgICAgICAgIHN0ciA9IHBzdHIuYnVmOworICAgICAgICAgICAgbGVuID0gcHN0ci5sZW47CiAKLSAgICAgICAgaWYgKG11dGF0ZV9hcmcpIHsKLSAgICAgICAgICAgIGlmIChsZW4gPD0gSU9DVExfQlVGU1opIHsKLSAgICAgICAgICAgICAgICBtZW1jcHkoYnVmLCBzdHIsIGxlbik7Ci0gICAgICAgICAgICAgICAgYnVmW2xlbl0gPSAnXDAnOwotICAgICAgICAgICAgICAgIGFyZyA9IGJ1ZjsKKyAgICAgICAgICAgIGlmIChtdXRhdGVfYXJnKSB7CisgICAgICAgICAgICAgICAgaWYgKGxlbiA8PSBJT0NUTF9CVUZTWikgeworICAgICAgICAgICAgICAgICAgICBtZW1jcHkoYnVmLCBzdHIsIGxlbik7CisgICAgICAgICAgICAgICAgICAgIGJ1ZltsZW5dID0gJ1wwJzsKKyAgICAgICAgICAgICAgICAgICAgYXJnID0gYnVmOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYXJnID0gc3RyOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGFyZyA9IHN0cjsKKyAgICAgICAgICAgICAgICBpZiAobGVuID4gSU9DVExfQlVGU1opIHsKKyAgICAgICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHN0cik7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImlvY3RsIHN0cmluZyBhcmcgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtZW1jcHkoYnVmLCBzdHIsIGxlbik7CisgICAgICAgICAgICAgICAgICAgIGJ1ZltsZW5dID0gJ1wwJzsKKyAgICAgICAgICAgICAgICAgICAgYXJnID0gYnVmOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChidWYgPT0gYXJnKSB7CisgICAgICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUyAvKiB0aGluayBhcnJheS5yZXNpemUoKSAqLworICAgICAgICAgICAgICAgIHJldCA9IGlvY3RsKGZkLCBjb2RlLCBhcmcpOworICAgICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXQgPSBpb2N0bChmZCwgY29kZSwgYXJnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtdXRhdGVfYXJnICYmIChsZW4gPD0gSU9DVExfQlVGU1opKSB7CisgICAgICAgICAgICAgICAgbWVtY3B5KHN0ciwgYnVmLCBsZW4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHN0cik7IC8qIE5vIGZ1cnRoZXIgYWNjZXNzIHRvIHN0ciBiZWxvdyB0aGlzIHBvaW50ICovCisgICAgICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtdXRhdGVfYXJnKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyZXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBsZW4pOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGlmIChQeUFyZ19QYXJzZShvYl9hcmcsICJzKjppb2N0bCIsICZwc3RyKSkgeworICAgICAgICAgICAgc3RyID0gcHN0ci5idWY7CisgICAgICAgICAgICBsZW4gPSBwc3RyLmxlbjsKICAgICAgICAgICAgIGlmIChsZW4gPiBJT0NUTF9CVUZTWikgewogICAgICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBzdHIpOwogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAiaW9jdGwgc3RyaW5nIGFyZyB0b28gbG9uZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW9jdGwgc3RyaW5nIGFyZyB0b28gbG9uZyIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbWVtY3B5KGJ1Ziwgc3RyLCBsZW4pOwotICAgICAgICAgICAgICAgIGJ1ZltsZW5dID0gJ1wwJzsKLSAgICAgICAgICAgICAgICBhcmcgPSBidWY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ1ZiA9PSBhcmcpIHsKLSAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMgLyogdGhpbmsgYXJyYXkucmVzaXplKCkgKi8KLSAgICAgICAgICAgIHJldCA9IGlvY3RsKGZkLCBjb2RlLCBhcmcpOworICAgICAgICAgICAgbWVtY3B5KGJ1Ziwgc3RyLCBsZW4pOworICAgICAgICAgICAgYnVmW2xlbl0gPSAnXDAnOworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgcmV0ID0gaW9jdGwoZmQsIGNvZGUsIGJ1Zik7CiAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmV0ID0gaW9jdGwoZmQsIGNvZGUsIGFyZyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG11dGF0ZV9hcmcgJiYgKGxlbiA8PSBJT0NUTF9CVUZTWikpIHsKLSAgICAgICAgICAgIG1lbWNweShzdHIsIGJ1ZiwgbGVuKTsKLSAgICAgICAgfQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwc3RyKTsgLyogTm8gZnVydGhlciBhY2Nlc3MgdG8gc3RyIGJlbG93IHRoaXMgcG9pbnQgKi8KLSAgICAgICAgaWYgKHJldCA8IDApIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtdXRhdGVfYXJnKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJldCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBzdHIpOworICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBzdHIpOwogICAgICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBsZW4pOwogICAgICAgICB9Ci0gICAgfQogCi0gICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZJcyo6aW9jdGwiLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJnBzdHIpKSB7Ci0gICAgICAgIHN0ciA9IHBzdHIuYnVmOwotICAgICAgICBsZW4gPSBwc3RyLmxlbjsKLSAgICAgICAgaWYgKGxlbiA+IElPQ1RMX0JVRlNaKSB7Ci0gICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwc3RyKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpb2N0bCBzdHJpbmcgYXJnIHRvbyBsb25nIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShvYl9hcmcsCisgICAgICAgICAgICAgImk7aW9jdGwgcmVxdWlyZXMgYSBmaWxlIG9yIGZpbGUgZGVzY3JpcHRvciwiCisgICAgICAgICAgICAgIiBhbiBpbnRlZ2VyIGFuZCBvcHRpb25hbGx5IGFuIGludGVnZXIgb3IgYnVmZmVyIGFyZ3VtZW50IiwKKyAgICAgICAgICAgICAmYXJnKSkgeworICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIG1lbWNweShidWYsIHN0ciwgbGVuKTsKLSAgICAgICAgYnVmW2xlbl0gPSAnXDAnOwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJldCA9IGlvY3RsKGZkLCBjb2RlLCBidWYpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAocmV0IDwgMCkgewotICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHN0cik7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwc3RyKTsKLSAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBsZW4pOwotICAgIH0KLQotICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgYXJnID0gMDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgICJPJkl8aTtpb2N0bCByZXF1aXJlcyBhIGZpbGUgb3IgZmlsZSBkZXNjcmlwdG9yLCIKLSAgICAgICAgICIgYW4gaW50ZWdlciBhbmQgb3B0aW9uYWxseSBhbiBpbnRlZ2VyIG9yIGJ1ZmZlciBhcmd1bWVudCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJmFyZykpIHsKLSAgICAgIHJldHVybiBOVUxMOworICAgICAgICAvLyBGYWxsLXRocm91Z2ggdG8gb3V0c2lkZSB0aGUgJ2lmJyBzdGF0ZW1lbnQuCiAgICAgfQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXQgPSBpb2N0bChmZCwgY29kZSwgYXJnKTsKQEAgLTIxOCw1MiArMjY1LDI1IEBACiAjdW5kZWYgSU9DVExfQlVGU1oKIH0KIAotUHlEb2NfU1RSVkFSKGlvY3RsX2RvYywKLSJpb2N0bChmZCwgb3BbLCBhcmdbLCBtdXRhdGVfZmxhZ11dKVxuXAotXG5cCi1QZXJmb3JtIHRoZSBvcGVyYXRpb24gb3Agb24gZmlsZSBkZXNjcmlwdG9yIGZkLiAgVGhlIHZhbHVlcyB1c2VkIGZvciBvcFxuXAotYXJlIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50LCBhbmQgYXJlIGF2YWlsYWJsZSBhcyBjb25zdGFudHMgaW4gdGhlXG5cCi1mY250bCBvciB0ZXJtaW9zIGxpYnJhcnkgbW9kdWxlcywgdXNpbmcgdGhlIHNhbWUgbmFtZXMgYXMgdXNlZCBpbiB0aGVcblwKLXJlbGV2YW50IEMgaGVhZGVyIGZpbGVzLlxuXAotXG5cCi1UaGUgYXJndW1lbnQgYXJnIGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gMDsgaXQgbWF5IGJlIGFuIGludCBvciBhXG5cCi1idWZmZXIgY29udGFpbmluZyBjaGFyYWN0ZXIgZGF0YSAobW9zdCBsaWtlbHkgYSBzdHJpbmcgb3IgYW4gYXJyYXkpLiBcblwKLVxuXAotSWYgdGhlIGFyZ3VtZW50IGlzIGEgbXV0YWJsZSBidWZmZXIgKHN1Y2ggYXMgYW4gYXJyYXkpIGFuZCBpZiB0aGVcblwKLW11dGF0ZV9mbGFnIGFyZ3VtZW50ICh3aGljaCBpcyBvbmx5IGFsbG93ZWQgaW4gdGhpcyBjYXNlKSBpcyB0cnVlIHRoZW4gdGhlXG5cCi1idWZmZXIgaXMgKGluIGVmZmVjdCkgcGFzc2VkIHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGFuZCBjaGFuZ2VzIG1hZGUgYnlcblwKLXRoZSBPUyB3aWxsIGJlIHJlZmxlY3RlZCBpbiB0aGUgY29udGVudHMgb2YgdGhlIGJ1ZmZlciBhZnRlciB0aGUgY2FsbCBoYXNcblwKLXJldHVybmVkLiAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaW50ZWdlciByZXR1cm5lZCBieSB0aGUgaW9jdGwgc3lzdGVtXG5cCi1jYWxsLlxuXAotXG5cCi1JZiB0aGUgYXJndW1lbnQgaXMgYSBtdXRhYmxlIGJ1ZmZlciBhbmQgdGhlIG11dGFibGVfZmxhZyBhcmd1bWVudCBpcyBub3RcblwKLXBhc3NlZCBvciBpcyBmYWxzZSwgdGhlIGJlaGF2aW9yIGlzIGFzIGlmIGEgc3RyaW5nIGhhZCBiZWVuIHBhc3NlZC4gIFRoaXNcblwKLWJlaGF2aW9yIHdpbGwgY2hhbmdlIGluIGZ1dHVyZSByZWxlYXNlcyBvZiBQeXRob24uXG5cCi1cblwKLUlmIHRoZSBhcmd1bWVudCBpcyBhbiBpbW11dGFibGUgYnVmZmVyIChtb3N0IGxpa2VseSBhIHN0cmluZykgdGhlbiBhIGNvcHlcblwKLW9mIHRoZSBidWZmZXIgaXMgcGFzc2VkIHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGFuZCB0aGUgcmV0dXJuIHZhbHVlIGlzIGFcblwKLXN0cmluZyBvZiB0aGUgc2FtZSBsZW5ndGggY29udGFpbmluZyB3aGF0ZXZlciB0aGUgb3BlcmF0aW5nIHN5c3RlbSBwdXQgaW5cblwKLXRoZSBidWZmZXIuICBUaGUgbGVuZ3RoIG9mIHRoZSBhcmcgYnVmZmVyIGluIHRoaXMgY2FzZSBpcyBub3QgYWxsb3dlZCB0b1xuXAotZXhjZWVkIDEwMjQgYnl0ZXMuXG5cCi1cblwKLUlmIHRoZSBhcmcgZ2l2ZW4gaXMgYW4gaW50ZWdlciBvciBpZiBub25lIGlzIHNwZWNpZmllZCwgdGhlIHJlc3VsdCB2YWx1ZSBpc1xuXAotYW4gaW50ZWdlciBjb3JyZXNwb25kaW5nIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGlvY3RsIGNhbGwgaW4gdGhlIENcblwKLWNvZGUuIik7CisvKltjbGluaWMgaW5wdXRdCitmY250bC5mbG9jawogCisgICAgZmQ6IG9iamVjdCh0eXBlPSdpbnQnLCBjb252ZXJ0ZXI9J2NvbnZfZGVzY3JpcHRvcicpCisgICAgb3BlcmF0aW9uIGFzIGNvZGU6IGludAorICAgIC8KIAotLyogZmxvY2soZmQsIG9wZXJhdGlvbikgKi8KK1BlcmZvcm0gdGhlIGxvY2sgb3BlcmF0aW9uIGBvcGVyYXRpb25gIG9uIGZpbGUgZGVzY3JpcHRvciBgZmRgLgorCitTZWUgdGhlIFVuaXggbWFudWFsIHBhZ2UgZm9yIGZsb2NrKDIpIGZvciBkZXRhaWxzIChPbiBzb21lIHN5c3RlbXMsIHRoaXMKK2Z1bmN0aW9uIGlzIGVtdWxhdGVkIHVzaW5nIGZjbnRsKCkpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZmNudGxfZmxvY2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorZmNudGxfZmxvY2tfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBjb2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM5MDM1MTMzYTdkYmZjOTYgaW5wdXQ9YjcwYTBhNDFjYTIyYThhMF0qLwogewotICAgIGludCBmZDsKLSAgICBpbnQgY29kZTsKICAgICBpbnQgcmV0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6ZmxvY2siLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogI2lmZGVmIEhBVkVfRkxPQ0sKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmV0ID0gZmxvY2soZmQsIGNvZGUpOwpAQCAtMjk5LDI5ICszMTksNTAgQEAKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoZmxvY2tfZG9jLAotImZsb2NrKGZkLCBvcGVyYXRpb24pXG5cCi1cblwKLVBlcmZvcm0gdGhlIGxvY2sgb3BlcmF0aW9uIG9wIG9uIGZpbGUgZGVzY3JpcHRvciBmZC4gIFNlZSB0aGUgVW5peCBcblwKLW1hbnVhbCBwYWdlIGZvciBmbG9jaygyKSBmb3IgZGV0YWlscy4gIChPbiBzb21lIHN5c3RlbXMsIHRoaXMgZnVuY3Rpb24gaXNcblwKLWVtdWxhdGVkIHVzaW5nIGZjbnRsKCkuKSIpOwogCisvKltjbGluaWMgaW5wdXRdCitmY250bC5sb2NrZgogCi0vKiBsb2NrZihmZCwgb3BlcmF0aW9uKSAqLworICAgIGZkOiBvYmplY3QodHlwZT0naW50JywgY29udmVydGVyPSdjb252X2Rlc2NyaXB0b3InKQorICAgIGNtZCBhcyBjb2RlOiBpbnQKKyAgICBsZW4gYXMgbGVub2JqOiBvYmplY3QoY19kZWZhdWx0PSdOVUxMJykgPSAwCisgICAgc3RhcnQgYXMgc3RhcnRvYmo6IG9iamVjdChjX2RlZmF1bHQ9J05VTEwnKSA9IDAKKyAgICB3aGVuY2U6IGludCA9IDAKKyAgICAvCisKK0Egd3JhcHBlciBhcm91bmQgdGhlIGZjbnRsKCkgbG9ja2luZyBjYWxscy4KKworYGZkYCBpcyB0aGUgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGxvY2sgb3IgdW5sb2NrLCBhbmQgb3BlcmF0aW9uIGlzIG9uZQorb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisKKyAgICBMT0NLX1VOIC0gdW5sb2NrCisgICAgTE9DS19TSCAtIGFjcXVpcmUgYSBzaGFyZWQgbG9jaworICAgIExPQ0tfRVggLSBhY3F1aXJlIGFuIGV4Y2x1c2l2ZSBsb2NrCisKK1doZW4gb3BlcmF0aW9uIGlzIExPQ0tfU0ggb3IgTE9DS19FWCwgaXQgY2FuIGFsc28gYmUgYml0d2lzZSBPUmVkIHdpdGgKK0xPQ0tfTkIgdG8gYXZvaWQgYmxvY2tpbmcgb24gbG9jayBhY3F1aXNpdGlvbi4gIElmIExPQ0tfTkIgaXMgdXNlZCBhbmQgdGhlCitsb2NrIGNhbm5vdCBiZSBhY3F1aXJlZCwgYW4gSU9FcnJvciB3aWxsIGJlIHJhaXNlZCBhbmQgdGhlIGV4Y2VwdGlvbiB3aWxsCitoYXZlIGFuIGVycm5vIGF0dHJpYnV0ZSBzZXQgdG8gRUFDQ0VTIG9yIEVBR0FJTiAoZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRpbmcKK3N5c3RlbSAtLSBmb3IgcG9ydGFiaWxpdHksIGNoZWNrIGZvciBlaXRoZXIgdmFsdWUpLgorCitgbGVuYCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGxvY2ssIHdpdGggdGhlIGRlZmF1bHQgbWVhbmluZyB0byBsb2NrIHRvCitFT0YuICBgc3RhcnRgIGlzIHRoZSBieXRlIG9mZnNldCwgcmVsYXRpdmUgdG8gYHdoZW5jZWAsIHRvIHRoYXQgdGhlIGxvY2sKK3N0YXJ0cy4gIGB3aGVuY2VgIGlzIGFzIHdpdGggZmlsZW9iai5zZWVrKCksIHNwZWNpZmljYWxseToKKworICAgIDAgLSByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIGZpbGUgKFNFRUtfU0VUKQorICAgIDEgLSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBidWZmZXIgcG9zaXRpb24gKFNFRUtfQ1VSKQorICAgIDIgLSByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIChTRUVLX0VORCkKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZjbnRsX2xvY2tmKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2ZjbnRsX2xvY2tmX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgY29kZSwgUHlPYmplY3QgKmxlbm9iaiwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0b2JqLCBpbnQgd2hlbmNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMxYWYzNWViYTA4YjlhZjcgaW5wdXQ9OWM1OTQzOTFkZTgyMWYyNF0qLwogewotICAgIGludCBmZCwgY29kZSwgcmV0LCB3aGVuY2UgPSAwOwotICAgIFB5T2JqZWN0ICpsZW5vYmogPSBOVUxMLCAqc3RhcnRvYmogPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJml8T09pOmxvY2tmIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbGVub2JqLCAmc3RhcnRvYmosICZ3aGVuY2UpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpbnQgcmV0OwogCiAjaWZuZGVmIExPQ0tfU0gKICNkZWZpbmUgTE9DS19TSCAgICAgICAgIDEgICAgICAgLyogc2hhcmVkIGxvY2sgKi8KQEAgLTM3NCw0MyArNDE1LDE3IEBACiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGxvY2tmX2RvYywKLSJsb2NrZiAoZmQsIG9wZXJhdGlvbiwgbGVuZ3RoPTAsIHN0YXJ0PTAsIHdoZW5jZT0wKVxuXAotXG5cCi1UaGlzIGlzIGVzc2VudGlhbGx5IGEgd3JhcHBlciBhcm91bmQgdGhlIGZjbnRsKCkgbG9ja2luZyBjYWxscy4gIGZkIGlzIHRoZVxuXAotZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGxvY2sgb3IgdW5sb2NrLCBhbmQgb3BlcmF0aW9uIGlzIG9uZSBvZiB0aGVcblwKLWZvbGxvd2luZyB2YWx1ZXM6XG5cCi1cblwKLSAgICBMT0NLX1VOIC0gdW5sb2NrXG5cCi0gICAgTE9DS19TSCAtIGFjcXVpcmUgYSBzaGFyZWQgbG9ja1xuXAotICAgIExPQ0tfRVggLSBhY3F1aXJlIGFuIGV4Y2x1c2l2ZSBsb2NrXG5cCi1cblwKLVdoZW4gb3BlcmF0aW9uIGlzIExPQ0tfU0ggb3IgTE9DS19FWCwgaXQgY2FuIGFsc28gYmUgYml0d2lzZSBPUmVkIHdpdGhcblwKLUxPQ0tfTkIgdG8gYXZvaWQgYmxvY2tpbmcgb24gbG9jayBhY3F1aXNpdGlvbi4gIElmIExPQ0tfTkIgaXMgdXNlZCBhbmQgdGhlXG5cCi1sb2NrIGNhbm5vdCBiZSBhY3F1aXJlZCwgYW4gSU9FcnJvciB3aWxsIGJlIHJhaXNlZCBhbmQgdGhlIGV4Y2VwdGlvbiB3aWxsXG5cCi1oYXZlIGFuIGVycm5vIGF0dHJpYnV0ZSBzZXQgdG8gRUFDQ0VTIG9yIEVBR0FJTiAoZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRpbmdcblwKLXN5c3RlbSAtLSBmb3IgcG9ydGFiaWxpdHksIGNoZWNrIGZvciBlaXRoZXIgdmFsdWUpLlxuXAotXG5cCi1sZW5ndGggaXMgdGhlIG51bWJlciBvZiBieXRlcyB0byBsb2NrLCB3aXRoIHRoZSBkZWZhdWx0IG1lYW5pbmcgdG8gbG9jayB0b1xuXAotRU9GLiAgc3RhcnQgaXMgdGhlIGJ5dGUgb2Zmc2V0LCByZWxhdGl2ZSB0byB3aGVuY2UsIHRvIHRoYXQgdGhlIGxvY2tcblwKLXN0YXJ0cy4gIHdoZW5jZSBpcyBhcyB3aXRoIGZpbGVvYmouc2VlaygpLCBzcGVjaWZpY2FsbHk6XG5cCi1cblwKLSAgICAwIC0gcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlIChTRUVLX1NFVClcblwKLSAgICAxIC0gcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgYnVmZmVyIHBvc2l0aW9uIChTRUVLX0NVUilcblwKLSAgICAyIC0gcmVsYXRpdmUgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSAoU0VFS19FTkQpIik7Ci0KIC8qIExpc3Qgb2YgZnVuY3Rpb25zICovCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBmY250bF9tZXRob2RzW10gPSB7Ci0gICAgeyJmY250bCIsICAgICAgICAgICBmY250bF9mY250bCwgTUVUSF9WQVJBUkdTLCBmY250bF9kb2N9LAotICAgIHsiaW9jdGwiLCAgICAgICAgICAgZmNudGxfaW9jdGwsIE1FVEhfVkFSQVJHUywgaW9jdGxfZG9jfSwKLSAgICB7ImZsb2NrIiwgICAgICAgICAgIGZjbnRsX2Zsb2NrLCBNRVRIX1ZBUkFSR1MsIGZsb2NrX2RvY30sCi0gICAgeyJsb2NrZiIsICAgICAgIGZjbnRsX2xvY2tmLCBNRVRIX1ZBUkFSR1MsIGxvY2tmX2RvY30sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KKyAgICBGQ05UTF9GQ05UTF9NRVRIT0RERUYKKyAgICBGQ05UTF9JT0NUTF9NRVRIT0RERUYKKyAgICBGQ05UTF9GTE9DS19NRVRIT0RERUYKKyAgICBGQ05UTF9MT0NLRl9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0gIC8qIHNlbnRpbmVsICovCiB9OwogCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2Ntb2R1bGUuYyBiL01vZHVsZXMvZ2Ntb2R1bGUuYwppbmRleCA5YmIzNjY2Li5jYjcyMjJkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2djbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9nY21vZHVsZS5jCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJmcmFtZW9iamVjdC5oIiAgICAgICAgLyogZm9yIFB5RnJhbWVfQ2xlYXJGcmVlTGlzdCAqLworI2luY2x1ZGUgInB5dGltZS5oIiAgICAgICAgICAgICAvKiBmb3IgX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICovCiAKIC8qIEdldCBhbiBvYmplY3QncyBHQyBoZWFkICovCiAjZGVmaW5lIEFTX0dDKG8pICgoUHlHQ19IZWFkICopKG8pLTEpCkBAIC0xNjYsNyArMTY3LDYgQEAKICAgICAgICAgICAgICAgICBERUJVR19VTkNPTExFQ1RBQkxFIHwgXAogICAgICAgICAgICAgICAgIERFQlVHX1NBVkVBTEwKIHN0YXRpYyBpbnQgZGVidWc7Ci1zdGF0aWMgUHlPYmplY3QgKnRtb2QgPSBOVUxMOwogCiAvKiBSdW5uaW5nIHN0YXRzIHBlciBnZW5lcmF0aW9uICovCiBzdHJ1Y3QgZ2NfZ2VuZXJhdGlvbl9zdGF0cyB7CkBAIC04OTQsMjYgKzg5NCw2IEBACiAgICAgKHZvaWQpUHlTZXRfQ2xlYXJGcmVlTGlzdCgpOwogfQogCi1zdGF0aWMgZG91YmxlCi1nZXRfdGltZSh2b2lkKQotewotICAgIGRvdWJsZSByZXN1bHQgPSAwOwotICAgIGlmICh0bW9kICE9IE5VTEwpIHsKLSAgICAgICAgX1B5X0lERU5USUZJRVIodGltZSk7Ci0KLSAgICAgICAgUHlPYmplY3QgKmYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRtb2QsICZQeUlkX3RpbWUsIE5VTEwpOwotICAgICAgICBpZiAoZiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKFB5RmxvYXRfQ2hlY2soZikpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlGbG9hdF9Bc0RvdWJsZShmKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiAvKiBUaGlzIGlzIHRoZSBtYWluIGZ1bmN0aW9uLiAgUmVhZCB0aGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZQogICogY29sbGVjdGlvbiBwcm9jZXNzIHdvcmtzLiAqLwogc3RhdGljIFB5X3NzaXplX3QKQEAgLTkyOCw3ICs5MDgsOCBAQAogICAgIFB5R0NfSGVhZCB1bnJlYWNoYWJsZTsgLyogbm9uLXByb2JsZW1hdGljIHVucmVhY2hhYmxlIHRyYXNoICovCiAgICAgUHlHQ19IZWFkIGZpbmFsaXplcnM7ICAvKiBvYmplY3RzIHdpdGgsICYgcmVhY2hhYmxlIGZyb20sIF9fZGVsX18gKi8KICAgICBQeUdDX0hlYWQgKmdjOwotICAgIGRvdWJsZSB0MSA9IDAuMDsKKyAgICBfUHlUaW1lX3QgdDEgPSAwOyAgIC8qIGluaXRpYWxpemUgdG8gcHJldmVudCBhIGNvbXBpbGVyIHdhcm5pbmcgKi8KKwogICAgIHN0cnVjdCBnY19nZW5lcmF0aW9uX3N0YXRzICpzdGF0cyA9ICZnZW5lcmF0aW9uX3N0YXRzW2dlbmVyYXRpb25dOwogCiAgICAgaWYgKGRlYnVnICYgREVCVUdfU1RBVFMpIHsKQEAgLTkzNiw5ICs5MTcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGlvbik7CiAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJnYzogb2JqZWN0cyBpbiBlYWNoIGdlbmVyYXRpb246Iik7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBOVU1fR0VORVJBVElPTlM7IGkrKykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIgJSIgUFlfRk9STUFUX1NJWkVfVCAiZCIsCisgICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoIiAlemQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NfbGlzdF9zaXplKEdFTl9IRUFEKGkpKSk7Ci0gICAgICAgIHQxID0gZ2V0X3RpbWUoKTsKKyAgICAgICAgdDEgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CisKICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIlxuIik7CiAgICAgfQogCkBAIC0xMDQyLDE5ICsxMDI0LDE2IEBACiAgICAgICAgICAgICBkZWJ1Z19jeWNsZSgidW5jb2xsZWN0YWJsZSIsIEZST01fR0MoZ2MpKTsKICAgICB9CiAgICAgaWYgKGRlYnVnICYgREVCVUdfU1RBVFMpIHsKLSAgICAgICAgZG91YmxlIHQyID0gZ2V0X3RpbWUoKTsKKyAgICAgICAgX1B5VGltZV90IHQyID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworCiAgICAgICAgIGlmIChtID09IDAgJiYgbiA9PSAwKQogICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImdjOiBkb25lIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKAotICAgICAgICAgICAgICAgICJnYzogZG9uZSwgIgotICAgICAgICAgICAgICAgICIlIiBQWV9GT1JNQVRfU0laRV9UICJkIHVucmVhY2hhYmxlLCAiCi0gICAgICAgICAgICAgICAgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgdW5jb2xsZWN0YWJsZSIsCisgICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoCisgICAgICAgICAgICAgICAgImdjOiBkb25lLCAlemQgdW5yZWFjaGFibGUsICV6ZCB1bmNvbGxlY3RhYmxlIiwKICAgICAgICAgICAgICAgICBuK20sIG4pOwotICAgICAgICBpZiAodDEgJiYgdDIpIHsKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIsICUuNGZzIGVsYXBzZWQiLCB0Mi10MSk7Ci0gICAgICAgIH0KLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIi5cbiIpOworICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiLCAlLjRmcyBlbGFwc2VkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX0FzU2Vjb25kc0RvdWJsZSh0MiAtIHQxKSk7CiAgICAgfQogCiAgICAgLyogQXBwZW5kIGluc3RhbmNlcyBpbiB0aGUgdW5jb2xsZWN0YWJsZSBzZXQgdG8gYSBQeXRob24KQEAgLTE1ODEsMTggKzE1NjAsNiBAQAogICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgImNhbGxiYWNrcyIsIGNhbGxiYWNrcykgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIC8qIEltcG9ydGluZyBjYW4ndCBiZSBkb25lIGluIGNvbGxlY3QoKSBiZWNhdXNlIGNvbGxlY3QoKQotICAgICAqIGNhbiBiZSBjYWxsZWQgdmlhIFB5R0NfQ29sbGVjdCgpIGluIFB5X0ZpbmFsaXplKCkuCi0gICAgICogVGhpcyB3b3VsZG4ndCBiZSBhIHByb2JsZW0sIGV4Y2VwdCB0aGF0IDxpbml0aWFsaXplZD4gaXMKLSAgICAgKiByZXNldCB0byAwIGJlZm9yZSBjYWxsaW5nIGNvbGxlY3Qgd2hpY2ggdHJpcHMgdXAKLSAgICAgKiB0aGUgaW1wb3J0IGFuZCB0cmlnZ2VycyBhbiBhc3NlcnRpb24uCi0gICAgICovCi0gICAgaWYgKHRtb2QgPT0gTlVMTCkgewotICAgICAgICB0bW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygidGltZSIpOwotICAgICAgICBpZiAodG1vZCA9PSBOVUxMKQotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0KICNkZWZpbmUgQUREX0lOVChOQU1FKSBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgI05BTUUsIE5BTUUpIDwgMCkgcmV0dXJuIE5VTEwKICAgICBBRERfSU5UKERFQlVHX1NUQVRTKTsKICAgICBBRERfSU5UKERFQlVHX0NPTExFQ1RBQkxFKTsKQEAgLTE2ODEsNyArMTY0OCw2IEBACiBfUHlHQ19GaW5pKHZvaWQpCiB7CiAgICAgUHlfQ0xFQVIoY2FsbGJhY2tzKTsKLSAgICBQeV9DTEVBUih0bW9kKTsKIH0KIAogLyogZm9yIGRlYnVnZ2luZyAqLwpAQCAtMTcxNSwxNSArMTY4MSwxOSBAQAogICAgICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhvcCk7CiB9CiAKLVB5T2JqZWN0ICoKLV9QeU9iamVjdF9HQ19NYWxsb2Moc2l6ZV90IGJhc2ljc2l6ZSkKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlPYmplY3RfR0NfQWxsb2MoaW50IHVzZV9jYWxsb2MsIHNpemVfdCBiYXNpY3NpemUpCiB7CiAgICAgUHlPYmplY3QgKm9wOwogICAgIFB5R0NfSGVhZCAqZzsKKyAgICBzaXplX3Qgc2l6ZTsKICAgICBpZiAoYmFzaWNzaXplID4gUFlfU1NJWkVfVF9NQVggLSBzaXplb2YoUHlHQ19IZWFkKSkKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgZyA9IChQeUdDX0hlYWQgKilQeU9iamVjdF9NQUxMT0MoCi0gICAgICAgIHNpemVvZihQeUdDX0hlYWQpICsgYmFzaWNzaXplKTsKKyAgICBzaXplID0gc2l6ZW9mKFB5R0NfSGVhZCkgKyBiYXNpY3NpemU7CisgICAgaWYgKHVzZV9jYWxsb2MpCisgICAgICAgIGcgPSAoUHlHQ19IZWFkICopUHlPYmplY3RfQ2FsbG9jKDEsIHNpemUpOworICAgIGVsc2UKKyAgICAgICAgZyA9IChQeUdDX0hlYWQgKilQeU9iamVjdF9NYWxsb2Moc2l6ZSk7CiAgICAgaWYgKGcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgZy0+Z2MuZ2NfcmVmcyA9IDA7CkBAIC0xNzQzLDYgKzE3MTMsMTggQEAKIH0KIAogUHlPYmplY3QgKgorX1B5T2JqZWN0X0dDX01hbGxvYyhzaXplX3QgYmFzaWNzaXplKQoreworICAgIHJldHVybiBfUHlPYmplY3RfR0NfQWxsb2MoMCwgYmFzaWNzaXplKTsKK30KKworUHlPYmplY3QgKgorX1B5T2JqZWN0X0dDX0NhbGxvYyhzaXplX3QgYmFzaWNzaXplKQoreworICAgIHJldHVybiBfUHlPYmplY3RfR0NfQWxsb2MoMSwgYmFzaWNzaXplKTsKK30KKworUHlPYmplY3QgKgogX1B5T2JqZWN0X0dDX05ldyhQeVR5cGVPYmplY3QgKnRwKQogewogICAgIFB5T2JqZWN0ICpvcCA9IF9QeU9iamVjdF9HQ19NYWxsb2MoX1B5T2JqZWN0X1NJWkUodHApKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2V0cGF0aC5jIGIvTW9kdWxlcy9nZXRwYXRoLmMKaW5kZXggMTNlMzgxNy4uMDNkMjkyYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9nZXRwYXRoLmMKKysrIGIvTW9kdWxlcy9nZXRwYXRoLmMKQEAgLTEzMSw2ICsxMzEsMjMgQEAKIHN0YXRpYyB3Y2hhcl90IHByb2dwYXRoW01BWFBBVEhMRU4rMV07CiBzdGF0aWMgd2NoYXJfdCAqbW9kdWxlX3NlYXJjaF9wYXRoID0gTlVMTDsKIAorLyogR2V0IGZpbGUgc3RhdHVzLiBFbmNvZGUgdGhlIHBhdGggdG8gdGhlIGxvY2FsZSBlbmNvZGluZy4gKi8KKworc3RhdGljIGludAorX1B5X3dzdGF0KGNvbnN0IHdjaGFyX3QqIHBhdGgsIHN0cnVjdCBzdGF0ICpidWYpCit7CisgICAgaW50IGVycjsKKyAgICBjaGFyICpmbmFtZTsKKyAgICBmbmFtZSA9IFB5X0VuY29kZUxvY2FsZShwYXRoLCBOVUxMKTsKKyAgICBpZiAoZm5hbWUgPT0gTlVMTCkgeworICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBlcnIgPSBzdGF0KGZuYW1lLCBidWYpOworICAgIFB5TWVtX0ZyZWUoZm5hbWUpOworICAgIHJldHVybiBlcnI7Cit9CisKIHN0YXRpYyB2b2lkCiByZWR1Y2Uod2NoYXJfdCAqZGlyKQogewpAQCAtMTUzLDE0ICsxNzAsMTQgQEAKIAogCiBzdGF0aWMgaW50Ci1pc21vZHVsZSh3Y2hhcl90ICpmaWxlbmFtZSkgICAgICAgIC8qIElzIG1vZHVsZSAtLSBjaGVjayBmb3IgLnB5Yy8ucHlvIHRvbyAqLworaXNtb2R1bGUod2NoYXJfdCAqZmlsZW5hbWUpICAgICAgICAvKiBJcyBtb2R1bGUgLS0gY2hlY2sgZm9yIC5weWMgdG9vICovCiB7CiAgICAgaWYgKGlzZmlsZShmaWxlbmFtZSkpCiAgICAgICAgIHJldHVybiAxOwogCiAgICAgLyogQ2hlY2sgZm9yIHRoZSBjb21waWxlZCB2ZXJzaW9uIG9mIHByZWZpeC4gKi8KICAgICBpZiAod2NzbGVuKGZpbGVuYW1lKSA8IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgd2NzY2F0KGZpbGVuYW1lLCBQeV9PcHRpbWl6ZUZsYWcgPyBMIm8iIDogTCJjIik7CisgICAgICAgIHdjc2NhdChmaWxlbmFtZSwgTCJjIik7CiAgICAgICAgIGlmIChpc2ZpbGUoZmlsZW5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQpAQCAtMzM2LDcgKzM1Myw3IEBACiAgICAgam9pbnBhdGgocHJlZml4LCBMIk1vZHVsZXMvU2V0dXAiKTsKICAgICBpZiAoaXNmaWxlKHByZWZpeCkpIHsKICAgICAgICAgLyogQ2hlY2sgVlBBVEggdG8gc2VlIGlmIGFyZ3YwX3BhdGggaXMgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeS4gKi8KLSAgICAgICAgdnBhdGggPSBfUHlfY2hhcjJ3Y2hhcihWUEFUSCwgTlVMTCk7CisgICAgICAgIHZwYXRoID0gUHlfRGVjb2RlTG9jYWxlKFZQQVRILCBOVUxMKTsKICAgICAgICAgaWYgKHZwYXRoICE9IE5VTEwpIHsKICAgICAgICAgICAgIHdjc25jcHkocHJlZml4LCBhcmd2MF9wYXRoLCBNQVhQQVRITEVOKTsKICAgICAgICAgICAgIHByZWZpeFtNQVhQQVRITEVOXSA9IEwnXDAnOwpAQCAtNDkxLDEwICs1MDgsMTAgQEAKICAgICB3Y2hhcl90ICpfcHl0aG9ucGF0aCwgKl9wcmVmaXgsICpfZXhlY19wcmVmaXg7CiAgICAgd2NoYXJfdCAqbGliX3B5dGhvbjsKIAotICAgIF9weXRob25wYXRoID0gX1B5X2NoYXIyd2NoYXIoUFlUSE9OUEFUSCwgTlVMTCk7Ci0gICAgX3ByZWZpeCA9IF9QeV9jaGFyMndjaGFyKFBSRUZJWCwgTlVMTCk7Ci0gICAgX2V4ZWNfcHJlZml4ID0gX1B5X2NoYXIyd2NoYXIoRVhFQ19QUkVGSVgsIE5VTEwpOwotICAgIGxpYl9weXRob24gPSBfUHlfY2hhcjJ3Y2hhcigibGliL3B5dGhvbiIgVkVSU0lPTiwgTlVMTCk7CisgICAgX3B5dGhvbnBhdGggPSBQeV9EZWNvZGVMb2NhbGUoUFlUSE9OUEFUSCwgTlVMTCk7CisgICAgX3ByZWZpeCA9IFB5X0RlY29kZUxvY2FsZShQUkVGSVgsIE5VTEwpOworICAgIF9leGVjX3ByZWZpeCA9IFB5X0RlY29kZUxvY2FsZShFWEVDX1BSRUZJWCwgTlVMTCk7CisgICAgbGliX3B5dGhvbiA9IFB5X0RlY29kZUxvY2FsZSgibGliL3B5dGhvbiIgVkVSU0lPTiwgTlVMTCk7CiAKICAgICBpZiAoIV9weXRob25wYXRoIHx8ICFfcHJlZml4IHx8ICFfZXhlY19wcmVmaXggfHwgIWxpYl9weXRob24pIHsKICAgICAgICAgUHlfRmF0YWxFcnJvcigKQEAgLTUwMyw3ICs1MjAsNyBAQAogICAgIH0KIAogICAgIGlmIChfcGF0aCkgewotICAgICAgICBwYXRoX2J1ZmZlciA9IF9QeV9jaGFyMndjaGFyKF9wYXRoLCBOVUxMKTsKKyAgICAgICAgcGF0aF9idWZmZXIgPSBQeV9EZWNvZGVMb2NhbGUoX3BhdGgsIE5VTEwpOwogICAgICAgICBwYXRoID0gcGF0aF9idWZmZXI7CiAgICAgfQogCkBAIC01ODQsNyArNjAxLDcgQEAKICAgICAgICAgKiogYmUgcnVubmluZyB0aGUgaW50ZXJwcmV0ZXIgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeSwgc28gd2UgdXNlIHRoZQogICAgICAgICAqKiBidWlsZC1kaXJlY3Rvcnktc3BlY2lmaWMgbG9naWMgdG8gZmluZCBMaWIgYW5kIHN1Y2guCiAgICAgICAgICovCi0gICAgICAgIHdjaGFyX3QqIHdidWYgPSBfUHlfY2hhcjJ3Y2hhcihtb2RQYXRoLCBOVUxMKTsKKyAgICAgICAgd2NoYXJfdCogd2J1ZiA9IFB5X0RlY29kZUxvY2FsZShtb2RQYXRoLCBOVUxMKTsKICAgICAgICAgaWYgKHdidWYgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2Fubm90IGRlY29kZSBmcmFtZXdvcmsgbG9jYXRpb24iKTsKICAgICAgICAgfQpAQCAtNzA5LDcgKzcyNiw3IEBACiAKICAgICBpZiAoX3J0cHlwYXRoICYmIF9ydHB5cGF0aFswXSAhPSAnXDAnKSB7CiAgICAgICAgIHNpemVfdCBydHB5cGF0aF9sZW47Ci0gICAgICAgIHJ0cHlwYXRoID0gX1B5X2NoYXIyd2NoYXIoX3J0cHlwYXRoLCAmcnRweXBhdGhfbGVuKTsKKyAgICAgICAgcnRweXBhdGggPSBQeV9EZWNvZGVMb2NhbGUoX3J0cHlwYXRoLCAmcnRweXBhdGhfbGVuKTsKICAgICAgICAgaWYgKHJ0cHlwYXRoICE9IE5VTEwpCiAgICAgICAgICAgICBidWZzeiArPSBydHB5cGF0aF9sZW4gKyAxOwogICAgIH0KQEAgLTg3NCw0ICs4OTEsMyBAQAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKLQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9ncnBtb2R1bGUuYyBiL01vZHVsZXMvZ3JwbW9kdWxlLmMKaW5kZXggZGE3ODI1My4uNDAzZTQzNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9ncnBtb2R1bGUuYworKysgYi9Nb2R1bGVzL2dycG1vZHVsZS5jCkBAIC02LDYgKzYsMTIgQEAKIAogI2luY2x1ZGUgPGdycC5oPgogCisjaW5jbHVkZSAiY2xpbmljL2dycG1vZHVsZS5jLmgiCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgZ3JwCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1jYWRlNjNmMmVkMWJkOWY4XSovCisKIHN0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHN0cnVjdF9ncm91cF90eXBlX2ZpZWxkc1tdID0gewogICAgeyJncl9uYW1lIiwgImdyb3VwIG5hbWUifSwKICAgIHsiZ3JfcGFzc3dkIiwgInBhc3N3b3JkIn0sCkBAIC03NiwxNCArODIsMjUgQEAKICAgICByZXR1cm4gdjsKIH0KIAorLypbY2xpbmljIGlucHV0XQorZ3JwLmdldGdyZ2lkCisKKyAgICBpZDogb2JqZWN0CisKK1JldHVybiB0aGUgZ3JvdXAgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiBudW1lcmljIGdyb3VwIElELgorCitJZiBpZCBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZ3JwX2dldGdyZ2lkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcHlvX2lkKQorZ3JwX2dldGdyZ2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmlkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThhMTFmNWZkZWI4Yzc4YTAgaW5wdXQ9MTVmYTBlMmNjZjVjZGEyNV0qLwogewogICAgIFB5T2JqZWN0ICpweV9pbnRfaWQ7CiAgICAgZ2lkX3QgZ2lkOwogICAgIHN0cnVjdCBncm91cCAqcDsKIAotICAgIHB5X2ludF9pZCA9IFB5TnVtYmVyX0xvbmcocHlvX2lkKTsKKyAgICBweV9pbnRfaWQgPSBQeU51bWJlcl9Mb25nKGlkKTsKICAgICBpZiAoIXB5X2ludF9pZCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghX1B5X0dpZF9Db252ZXJ0ZXIocHlfaW50X2lkLCAmZ2lkKSkgewpAQCAtMTAzLDIyICsxMjAsMzEgQEAKICAgICByZXR1cm4gbWtncmVudChwKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWdycF9nZXRncm5hbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqbmFtZTsKLSAgICBzdHJ1Y3QgZ3JvdXAgKnA7Ci0gICAgUHlPYmplY3QgKmFyZywgKmJ5dGVzLCAqcmV0dmFsID0gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK2dycC5nZXRncm5hbQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmdldGdybmFtIiwgJmFyZykpCisgICAgbmFtZTogdW5pY29kZQorCitSZXR1cm4gdGhlIGdyb3VwIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gZ3JvdXAgbmFtZS4KKworSWYgbmFtZSBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorZ3JwX2dldGdybmFtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2Q0NzUxMWY0ODU0ZGE4ZSBpbnB1dD0wOGRlZDI5YWZmYTNjODYzXSovCit7CisgICAgY2hhciAqbmFtZV9jaGFyczsKKyAgICBzdHJ1Y3QgZ3JvdXAgKnA7CisgICAgUHlPYmplY3QgKmJ5dGVzLCAqcmV0dmFsID0gTlVMTDsKKworICAgIGlmICgoYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KG5hbWUpKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoKGJ5dGVzID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChhcmcpKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUoYnl0ZXMsICZuYW1lLCBOVUxMKSA9PSAtMSkKKyAgICBpZiAoUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUoYnl0ZXMsICZuYW1lX2NoYXJzLCBOVUxMKSA9PSAtMSkKICAgICAgICAgZ290byBvdXQ7CiAKLSAgICBpZiAoKHAgPSBnZXRncm5hbShuYW1lKSkgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsICJnZXRncm5hbSgpOiBuYW1lIG5vdCBmb3VuZDogJXMiLCBuYW1lKTsKKyAgICBpZiAoKHAgPSBnZXRncm5hbShuYW1lX2NoYXJzKSkgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsICJnZXRncm5hbSgpOiBuYW1lIG5vdCBmb3VuZDogJXMiLCBuYW1lX2NoYXJzKTsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogICAgIHJldHZhbCA9IG1rZ3JlbnQocCk7CkBAIC0xMjcsOCArMTUzLDE4IEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorZ3JwLmdldGdyYWxsCisKK1JldHVybiBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBncm91cCBlbnRyaWVzLCBpbiBhcmJpdHJhcnkgb3JkZXIuCisKK0FuIGVudHJ5IHdob3NlIG5hbWUgc3RhcnRzIHdpdGggJysnIG9yICctJyByZXByZXNlbnRzIGFuIGluc3RydWN0aW9uCit0byB1c2UgWVAvTklTIGFuZCBtYXkgbm90IGJlIGFjY2Vzc2libGUgdmlhIGdldGdybmFtIG9yIGdldGdyZ2lkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZ3JwX2dldGdyYWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaWdub3JlKQorZ3JwX2dldGdyYWxsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hZGQ5MDM3YTIwYzIwMmRlIGlucHV0PWQ3ZGY3NmM4MjVjMzY3ZGZdKi8KIHsKICAgICBQeU9iamVjdCAqZDsKICAgICBzdHJ1Y3QgZ3JvdXAgKnA7CkBAIC0xNTEsMjAgKzE4NywxMCBAQAogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgZ3JwX21ldGhvZHNbXSA9IHsKLSAgICB7ImdldGdyZ2lkIiwgICAgICAgIGdycF9nZXRncmdpZCwgICBNRVRIX08sCi0gICAgICJnZXRncmdpZChpZCkgLT4gKGdyX25hbWUsZ3JfcGFzc3dkLGdyX2dpZCxncl9tZW0pXG5cCi1SZXR1cm4gdGhlIGdyb3VwIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gbnVtZXJpYyBncm91cCBJRC4gIElmXG5cCi1pZCBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLiJ9LAotICAgIHsiZ2V0Z3JuYW0iLCAgICAgICAgZ3JwX2dldGdybmFtLCAgIE1FVEhfVkFSQVJHUywKLSAgICAgImdldGdybmFtKG5hbWUpIC0+IChncl9uYW1lLGdyX3Bhc3N3ZCxncl9naWQsZ3JfbWVtKVxuXAotUmV0dXJuIHRoZSBncm91cCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIGdyb3VwIG5hbWUuICBJZlxuXAotbmFtZSBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLiJ9LAotICAgIHsiZ2V0Z3JhbGwiLCAgICAgICAgZ3JwX2dldGdyYWxsLCAgIE1FVEhfTk9BUkdTLAotICAgICAiZ2V0Z3JhbGwoKSAtPiBsaXN0IG9mIHR1cGxlc1xuXAotUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIGdyb3VwIGVudHJpZXMsIGluIGFyYml0cmFyeSBvcmRlci5cblwKLUFuIGVudHJ5IHdob3NlIG5hbWUgc3RhcnRzIHdpdGggJysnIG9yICctJyByZXByZXNlbnRzIGFuIGluc3RydWN0aW9uXG5cCi10byB1c2UgWVAvTklTIGFuZCBtYXkgbm90IGJlIGFjY2Vzc2libGUgdmlhIGdldGdybmFtIG9yIGdldGdyZ2lkLiJ9LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCisgICAgR1JQX0dFVEdSR0lEX01FVEhPRERFRgorICAgIEdSUF9HRVRHUk5BTV9NRVRIT0RERUYKKyAgICBHUlBfR0VUR1JBTExfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9CiB9OwogCiBQeURvY19TVFJWQVIoZ3JwX19kb2NfXywKZGlmZiAtLWdpdCBhL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMgYi9Nb2R1bGVzL2l0ZXJ0b29sc21vZHVsZS5jCmluZGV4IDU1ZDg4YTguLmNhYzAyYWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYwpAQCAtMTU3LDE1ICsxNTcsMTIgQEAKICAgICBQeU9iamVjdCAqY3VycmtleSwgKmN1cnJ2YWx1ZSwgKnRndGtleTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJPT08iLCAmY3VycmtleSwgJmN1cnJ2YWx1ZSwgJnRndGtleSkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0NMRUFSKGx6LT5jdXJya2V5KTsKLSAgICBsei0+Y3VycmtleSA9IGN1cnJrZXk7Ci0gICAgUHlfSU5DUkVGKGx6LT5jdXJya2V5KTsKLSAgICBQeV9DTEVBUihsei0+Y3VycnZhbHVlKTsKLSAgICBsei0+Y3VycnZhbHVlID0gY3VycnZhbHVlOwotICAgIFB5X0lOQ1JFRihsei0+Y3VycnZhbHVlKTsKLSAgICBQeV9DTEVBUihsei0+dGd0a2V5KTsKLSAgICBsei0+dGd0a2V5ID0gdGd0a2V5OwotICAgIFB5X0lOQ1JFRihsei0+dGd0a2V5KTsKKyAgICBQeV9JTkNSRUYoY3VycmtleSk7CisgICAgUHlfU0VUUkVGKGx6LT5jdXJya2V5LCBjdXJya2V5KTsKKyAgICBQeV9JTkNSRUYoY3VycnZhbHVlKTsKKyAgICBQeV9TRVRSRUYobHotPmN1cnJ2YWx1ZSwgY3VycnZhbHVlKTsKKyAgICBQeV9JTkNSRUYodGd0a2V5KTsKKyAgICBQeV9TRVRSRUYobHotPnRndGtleSwgdGd0a2V5KTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtNjM0LDggKzYzMSw3IEBACiAgICAgICAgIGxpbmsgPSB0ZWVkYXRhb2JqZWN0X2p1bXBsaW5rKHRvLT5kYXRhb2JqKTsKICAgICAgICAgaWYgKGxpbmsgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBQeV9ERUNSRUYodG8tPmRhdGFvYmopOwotICAgICAgICB0by0+ZGF0YW9iaiA9ICh0ZWVkYXRhb2JqZWN0ICopbGluazsKKyAgICAgICAgUHlfU0VUUkVGKHRvLT5kYXRhb2JqLCAodGVlZGF0YW9iamVjdCAqKWxpbmspOwogICAgICAgICB0by0+aW5kZXggPSAwOwogICAgIH0KICAgICB2YWx1ZSA9IHRlZWRhdGFvYmplY3RfZ2V0aXRlbSh0by0+ZGF0YW9iaiwgdG8tPmluZGV4KTsKQEAgLTc0Niw5ICs3NDIsOCBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkluZGV4IG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfQ0xFQVIodG8tPmRhdGFvYmopOwotICAgIHRvLT5kYXRhb2JqID0gdGRvOwotICAgIFB5X0lOQ1JFRih0by0+ZGF0YW9iaik7CisgICAgUHlfSU5DUkVGKHRkbyk7CisgICAgUHlfU0VUUkVGKHRvLT5kYXRhb2JqLCB0ZG8pOwogICAgIHRvLT5pbmRleCA9IGluZGV4OwogICAgIFB5X1JFVFVSTl9OT05FOwogfQpAQCAtOTczLDkgKzk2OCw4IEBACiAgICAgaW50IGZpcnN0cGFzczsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJPaSIsICZzYXZlZCwgJmZpcnN0cGFzcykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0NMRUFSKGx6LT5zYXZlZCk7Ci0gICAgbHotPnNhdmVkID0gc2F2ZWQ7Ci0gICAgUHlfWElOQ1JFRihsei0+c2F2ZWQpOworICAgIFB5X1hJTkNSRUYoc2F2ZWQpOworICAgIFB5X1NFVFJFRihsei0+c2F2ZWQsIHNhdmVkKTsKICAgICBsei0+Zmlyc3RwYXNzID0gZmlyc3RwYXNzICE9IDA7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CkBAIC0xOTAwLDEyICsxODk0LDEwIEBACiAgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk98TyIsICZzb3VyY2UsICZhY3RpdmUpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5X0NMRUFSKGx6LT5zb3VyY2UpOwotICAgIGx6LT5zb3VyY2UgPSBzb3VyY2U7Ci0gICAgUHlfSU5DUkVGKGx6LT5zb3VyY2UpOwotICAgIFB5X0NMRUFSKGx6LT5hY3RpdmUpOwotICAgIGx6LT5hY3RpdmUgPSBhY3RpdmU7Ci0gICAgUHlfWElOQ1JFRihsei0+YWN0aXZlKTsKKyAgICBQeV9JTkNSRUYoc291cmNlKTsKKyAgICBQeV9TRVRSRUYobHotPnNvdXJjZSwgc291cmNlKTsKKyAgICBQeV9YSU5DUkVGKGFjdGl2ZSk7CisgICAgUHlfU0VUUkVGKGx6LT5hY3RpdmUsIGFjdGl2ZSk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTIwODcsNyArMjA3OSw3IEBACiB7CiAgICAgUHlfc3NpemVfdCByZXM7CiAKLSAgICByZXMgPSBzaXplb2YocHJvZHVjdG9iamVjdCk7CisgICAgcmVzID0gX1B5T2JqZWN0X1NJWkUoUHlfVFlQRShseikpOwogICAgIHJlcyArPSBQeVR1cGxlX0dFVF9TSVpFKGx6LT5wb29scykgKiBzaXplb2YoUHlfc3NpemVfdCk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOwogfQpAQCAtMjI2MSw4ICsyMjUzLDcgQEAKICAgICAgICAgUHlfSU5DUkVGKGVsZW1lbnQpOwogICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgZWxlbWVudCk7CiAgICAgfQotICAgIFB5X0NMRUFSKGx6LT5yZXN1bHQpOwotICAgIGx6LT5yZXN1bHQgPSByZXN1bHQ7CisgICAgUHlfU0VUUkVGKGx6LT5yZXN1bHQsIHJlc3VsdCk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTI0MTgsNyArMjQwOSw3IEBACiB7CiAgICAgUHlfc3NpemVfdCByZXM7CiAKLSAgICByZXMgPSBzaXplb2YoY29tYmluYXRpb25zb2JqZWN0KTsKKyAgICByZXMgPSBfUHlPYmplY3RfU0laRShQeV9UWVBFKGNvKSk7CiAgICAgcmVzICs9IGNvLT5yICogc2l6ZW9mKFB5X3NzaXplX3QpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzKTsKIH0KQEAgLTI1ODQsOCArMjU3NSw3IEBACiAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCBpLCBlbGVtZW50KTsKICAgICB9CiAKLSAgICBQeV9DTEVBUihsei0+cmVzdWx0KTsKLSAgICBsei0+cmVzdWx0ID0gcmVzdWx0OworICAgIFB5X1NFVFJFRihsei0+cmVzdWx0LCByZXN1bHQpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC0yNzU5LDcgKzI3NDksNyBAQAogewogICAgIFB5X3NzaXplX3QgcmVzOwogCi0gICAgcmVzID0gc2l6ZW9mKGN3cm9iamVjdCk7CisgICAgcmVzID0gX1B5T2JqZWN0X1NJWkUoUHlfVFlQRShjbykpOwogICAgIHJlcyArPSBjby0+ciAqIHNpemVvZihQeV9zc2l6ZV90KTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7CiB9CkBAIC0yOTE1LDggKzI5MDUsNyBAQAogICAgICAgICBQeV9JTkNSRUYoZWxlbWVudCk7CiAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCBpLCBlbGVtZW50KTsKICAgICB9Ci0gICAgUHlfQ0xFQVIobHotPnJlc3VsdCk7Ci0gICAgbHotPnJlc3VsdCA9IHJlc3VsdDsKKyAgICBQeV9TRVRSRUYobHotPnJlc3VsdCwgcmVzdWx0KTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtMzEwOCw3ICszMDk3LDcgQEAKIHsKICAgICBQeV9zc2l6ZV90IHJlczsKIAotICAgIHJlcyA9IHNpemVvZihwZXJtdXRhdGlvbnNvYmplY3QpOworICAgIHJlcyA9IF9QeU9iamVjdF9TSVpFKFB5X1RZUEUocG8pKTsKICAgICByZXMgKz0gUHlUdXBsZV9HRVRfU0laRShwby0+cG9vbCkgKiBzaXplb2YoUHlfc3NpemVfdCk7CiAgICAgcmVzICs9IHBvLT5yICogc2l6ZW9mKFB5X3NzaXplX3QpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzKTsKQEAgLTMzMDksOCArMzI5OCw3IEBACiAgICAgICAgIFB5X0lOQ1JFRihlbGVtZW50KTsKICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIGksIGVsZW1lbnQpOwogICAgIH0KLSAgICBQeV9DTEVBUihwby0+cmVzdWx0KTsKLSAgICBwby0+cmVzdWx0ID0gcmVzdWx0OworICAgIFB5X1NFVFJFRihwby0+cmVzdWx0LCByZXN1bHQpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC0zNDgwLDkgKzM0NjgsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGFjY3VtdWxhdGVfc2V0c3RhdGUoYWNjdW11bGF0ZW9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKIHsKLSAgICBQeV9DTEVBUihsei0+dG90YWwpOwotICAgIGx6LT50b3RhbCA9IHN0YXRlOwotICAgIFB5X0lOQ1JFRihsei0+dG90YWwpOworICAgIFB5X0lOQ1JFRihzdGF0ZSk7CisgICAgUHlfU0VUUkVGKGx6LT50b3RhbCwgc3RhdGUpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC0zODgyLDcgKzM4NjksNyBAQAogCiBmYXN0X21vZGU6ICB3aGVuIGNudCBhbiBpbnRlZ2VyIDwgUFlfU1NJWkVfVF9NQVggYW5kIG5vIHN0ZXAgaXMgc3BlY2lmaWVkLgogCi0gICAgYXNzZXJ0KGNudCAhPSBQWV9TU0laRV9UX01BWCAmJiBsb25nX2NudCA9PSBOVUxMICYmIGxvbmdfc3RlcD09UHlJbnQoMSkpOworICAgIGFzc2VydChjbnQgIT0gUFlfU1NJWkVfVF9NQVggJiYgbG9uZ19jbnQgPT0gTlVMTCAmJiBsb25nX3N0ZXA9PVB5TG9uZygxKSk7CiAgICAgQWR2YW5jZXMgd2l0aDogIGNudCArPSAxCiAgICAgV2hlbiBjb3VudCBoaXRzIFlfU1NJWkVfVF9NQVgsIHN3aXRjaCB0byBzbG93X21vZGUuCiAKQEAgLTQ0NjMsOSArNDQ1MCw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogemlwX2xvbmdlc3Rfc2V0c3RhdGUoemlwbG9uZ2VzdG9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKIHsKLSAgICBQeV9DTEVBUihsei0+ZmlsbHZhbHVlKTsKLSAgICBsei0+ZmlsbHZhbHVlID0gc3RhdGU7Ci0gICAgUHlfSU5DUkVGKGx6LT5maWxsdmFsdWUpOworICAgIFB5X0lOQ1JFRihzdGF0ZSk7CisgICAgUHlfU0VUUkVGKGx6LT5maWxsdmFsdWUsIHN0YXRlKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9sZF9zb19haXguaW4gYi9Nb2R1bGVzL2xkX3NvX2FpeC5pbgppbmRleCA4NmE5ZjdlLi45NjE1MzJiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2xkX3NvX2FpeC5pbgorKysgYi9Nb2R1bGVzL2xkX3NvX2FpeC5pbgpAQCAtNSw3ICs1LDcgQEAKICMgICBUWVBFOiAgICAgICAgICAgZXhlY3V0YWJsZSwgdXNlcyBtYWtleHBfYWl4CiAjICAgU1lTVEVNOiAgICAgICAgIEFJWAogIwotIyAgIERFU0NSSVBUSU9OOiAgICBDcmVhdGVzIGEgc2hhcmVhYmxlIC5vIGZyb20gYSBzZXQgb2YgcHJlLWNvbXBpbGVkIAorIyAgIERFU0NSSVBUSU9OOiAgICBDcmVhdGVzIGEgc2hhcmVhYmxlIC5vIGZyb20gYSBzZXQgb2YgcHJlLWNvbXBpbGVkCiAjICAgICAgICAgICAgICAgICAgICh1bnNoYXJlZCkgLm8gZmlsZXMKICMKICMgICBVU0FHRTogICAgICAgICAgbGRfc29fYWl4IFtDQ10gW2FyZ3VtZW50c10KQEAgLTQ2LDcgKzQ2LDcgQEAKICMgICAgICAgICAgICAgICAgICAgNC4gIFVuY29tbWVudGluZyB0aGUgImVjaG8iIGxpbmVzIGdpdmVzIGRldGFpbGVkIG91dHB1dAogIyAgICAgICAgICAgICAgICAgICAgICAgYWJvdXQgdGhlIGNvbW1hbmRzIGV4ZWN1dGVkIGluIHRoZSBzY3JpcHQuCiAjCi0jICAgICAgICAgICAgICAgICAgICAgICAKKyMKICMgICBISVNUT1JZOiAgICAgICAgT2N0LTE5OTYgICAgLS0gU3VwcG9ydCBhZGRlZCBmb3IgbXVsdGlwbGUgLm8gZmlsZXMgLS0KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gYW5kIG9wdGlvbmFsIGFyZ3VtZW50cyBwcm9jZXNzaW5nLiAgLS0KICMgICAgICAgICAgICAgICAgICAgQ2hyaXMgTXllcnMgKG15ZXJzQHRjLmNvcm5lbGwuZWR1KSwgS2VpdGggS3dvawpAQCAtMTMyLDcgKzEzMiw3IEBACiBkb25lCiAKIGlmIHRlc3QgIiRvYmpmaWxlIiA9ICJsaWJweXRob25AVkVSU0lPTkBAQUJJRkxBR1NALnNvIjsgdGhlbgotICBsZHNvY29yZW1vZGU9InRydWUiIAorICBsZHNvY29yZW1vZGU9InRydWUiCiBmaQogCiBpZiB0ZXN0IC16ICIkb2JqcyI7IHRoZW4KZGlmZiAtLWdpdCBhL01vZHVsZXMvbWFpbi5jIGIvTW9kdWxlcy9tYWluLmMKaW5kZXggODdhMjFkNy4uZTRjOTU1ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tYWluLmMKKysrIGIvTW9kdWxlcy9tYWluLmMKQEAgLTksNyArOSw2IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2lmZGVmIEhBVkVfRkNOVExfSAogI2luY2x1ZGUgPGZjbnRsLmg+Ci0jZGVmaW5lIFBBVEhfTUFYIE1BWFBBVEhMRU4KICNlbmRpZgogI2VuZGlmCiAKQEAgLTg2LDExICs4NSwxMSBAQAogYXJnIC4uLjogYXJndW1lbnRzIHBhc3NlZCB0byBwcm9ncmFtIGluIHN5cy5hcmd2WzE6XVxuXG5cCiBPdGhlciBlbnZpcm9ubWVudCB2YXJpYWJsZXM6XG5cCiBQWVRIT05TVEFSVFVQOiBmaWxlIGV4ZWN1dGVkIG9uIGludGVyYWN0aXZlIHN0YXJ0dXAgKG5vIGRlZmF1bHQpXG5cCi1QWVRIT05QQVRIICAgOiAnJWMnLXNlcGFyYXRlZCBsaXN0IG9mIGRpcmVjdG9yaWVzIHByZWZpeGVkIHRvIHRoZVxuXAorUFlUSE9OUEFUSCAgIDogJyVsYyctc2VwYXJhdGVkIGxpc3Qgb2YgZGlyZWN0b3JpZXMgcHJlZml4ZWQgdG8gdGhlXG5cCiAgICAgICAgICAgICAgICBkZWZhdWx0IG1vZHVsZSBzZWFyY2ggcGF0aC4gIFRoZSByZXN1bHQgaXMgc3lzLnBhdGguXG5cCiAiOwogc3RhdGljIGNoYXIgKnVzYWdlXzUgPQotIlBZVEhPTkhPTUUgICA6IGFsdGVybmF0ZSA8cHJlZml4PiBkaXJlY3RvcnkgKG9yIDxwcmVmaXg+JWM8ZXhlY19wcmVmaXg+KS5cbiIKKyJQWVRIT05IT01FICAgOiBhbHRlcm5hdGUgPHByZWZpeD4gZGlyZWN0b3J5IChvciA8cHJlZml4PiVsYzxleGVjX3ByZWZpeD4pLlxuIgogIiAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IG1vZHVsZSBzZWFyY2ggcGF0aCB1c2VzICVzLlxuIgogIlBZVEhPTkNBU0VPSyA6IGlnbm9yZSBjYXNlIGluICdpbXBvcnQnIHN0YXRlbWVudHMgKFdpbmRvd3MpLlxuIgogIlBZVEhPTklPRU5DT0RJTkc6IEVuY29kaW5nWzplcnJvcnNdIHVzZWQgZm9yIHN0ZGluL3N0ZG91dC9zdGRlcnIuXG4iCkBAIC0xMTUsOCArMTE0LDggQEAKICAgICAgICAgZnB1dHModXNhZ2VfMSwgZik7CiAgICAgICAgIGZwdXRzKHVzYWdlXzIsIGYpOwogICAgICAgICBmcHV0cyh1c2FnZV8zLCBmKTsKLSAgICAgICAgZnByaW50ZihmLCB1c2FnZV80LCBERUxJTSk7Ci0gICAgICAgIGZwcmludGYoZiwgdXNhZ2VfNSwgREVMSU0sIFBZVEhPTkhPTUVIRUxQKTsKKyAgICAgICAgZnByaW50ZihmLCB1c2FnZV80LCAod2ludF90KURFTElNKTsKKyAgICAgICAgZnByaW50ZihmLCB1c2FnZV81LCAod2ludF90KURFTElNLCBQWVRIT05IT01FSEVMUCk7CiAgICAgICAgIGZwdXRzKHVzYWdlXzYsIGYpOwogICAgIH0KICAgICByZXR1cm4gZXhpdGNvZGU7CkBAIC0zNDMsNiArMzQyLDggQEAKICAgICBpbnQgdmVyc2lvbiA9IDA7CiAgICAgaW50IHNhd191bmJ1ZmZlcmVkX2ZsYWcgPSAwOwogICAgIFB5Q29tcGlsZXJGbGFncyBjZjsKKyAgICBQeU9iamVjdCAqd2FybmluZ19vcHRpb24gPSBOVUxMOworICAgIFB5T2JqZWN0ICp3YXJuaW5nX29wdGlvbnMgPSBOVUxMOwogCiAgICAgY2YuY2ZfZmxhZ3MgPSAwOwogCkBAIC00NjUsNyArNDY2LDE1IEBACiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdXJzoKLSAgICAgICAgICAgIFB5U3lzX0FkZFdhcm5PcHRpb24oX1B5T1Nfb3B0YXJnKTsKKyAgICAgICAgICAgIGlmICh3YXJuaW5nX29wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICB3YXJuaW5nX29wdGlvbnMgPSBQeUxpc3RfTmV3KDApOworICAgICAgICAgICAgaWYgKHdhcm5pbmdfb3B0aW9ucyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImZhaWx1cmUgaW4gaGFuZGxpbmcgb2YgLVcgYXJndW1lbnQiKTsKKyAgICAgICAgICAgIHdhcm5pbmdfb3B0aW9uID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihfUHlPU19vcHRhcmcsIC0xKTsKKyAgICAgICAgICAgIGlmICh3YXJuaW5nX29wdGlvbiA9PSBOVUxMKQorICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImZhaWx1cmUgaW4gaGFuZGxpbmcgb2YgLVcgYXJndW1lbnQiKTsKKyAgICAgICAgICAgIFB5TGlzdF9BcHBlbmQod2FybmluZ19vcHRpb25zLCB3YXJuaW5nX29wdGlvbik7CisgICAgICAgICAgICBQeV9ERUNSRUYod2FybmluZ19vcHRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAnWCc6CkBAIC01MTEsMTYgKzUyMCwxNiBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAoIVB5X0lnbm9yZUVudmlyb25tZW50RmxhZyAmJiAod3AgPSBfd2dldGVudihMIlBZVEhPTldBUk5JTkdTIikpICYmCiAgICAgICAgICp3cCAhPSBMJ1wwJykgewotICAgICAgICB3Y2hhcl90ICpidWYsICp3YXJuaW5nOworICAgICAgICB3Y2hhcl90ICpidWYsICp3YXJuaW5nLCAqY29udGV4dCA9IE5VTEw7CiAKICAgICAgICAgYnVmID0gKHdjaGFyX3QgKilQeU1lbV9SYXdNYWxsb2MoKHdjc2xlbih3cCkgKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgICAgIGlmIChidWYgPT0gTlVMTCkKICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICAibm90IGVub3VnaCBtZW1vcnkgdG8gY29weSBQWVRIT05XQVJOSU5HUyIpOwogICAgICAgICB3Y3NjcHkoYnVmLCB3cCk7Ci0gICAgICAgIGZvciAod2FybmluZyA9IHdjc3RvayhidWYsIEwiLCIpOworICAgICAgICBmb3IgKHdhcm5pbmcgPSB3Y3N0b2tfcyhidWYsIEwiLCIsICZjb250ZXh0KTsKICAgICAgICAgICAgICB3YXJuaW5nICE9IE5VTEw7Ci0gICAgICAgICAgICAgd2FybmluZyA9IHdjc3RvayhOVUxMLCBMIiwiKSkgeworICAgICAgICAgICAgIHdhcm5pbmcgPSB3Y3N0b2tfcyhOVUxMLCBMIiwiLCAmY29udGV4dCkpIHsKICAgICAgICAgICAgIFB5U3lzX0FkZFdhcm5PcHRpb24od2FybmluZyk7CiAgICAgICAgIH0KICAgICAgICAgUHlNZW1fUmF3RnJlZShidWYpOwpAQCAtNTU5LDYgKzU2OCwxMiBAQAogICAgICAgICBQeU1lbV9SYXdGcmVlKGJ1Zik7CiAgICAgfQogI2VuZGlmCisgICAgaWYgKHdhcm5pbmdfb3B0aW9ucyAhPSBOVUxMKSB7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5TGlzdF9HRVRfU0laRSh3YXJuaW5nX29wdGlvbnMpOyBpKyspIHsKKyAgICAgICAgICAgIFB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlKFB5TGlzdF9HRVRfSVRFTSh3YXJuaW5nX29wdGlvbnMsIGkpKTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIGlmIChjb21tYW5kID09IE5VTEwgJiYgbW9kdWxlID09IE5VTEwgJiYgX1B5T1Nfb3B0aW5kIDwgYXJnYyAmJgogICAgICAgICB3Y3NjbXAoYXJndltfUHlPU19vcHRpbmRdLCBMIi0iKSAhPSAwKQpAQCAtNjMxLDcgKzY0Niw3IEBACiAgICAgICAgICAgICAvKiBVc2VkIGJ5IE1hYy9Ub29scy9weXRob253LmMgdG8gZm9yd2FyZAogICAgICAgICAgICAgICogdGhlIGFyZ3YwIG9mIHRoZSBzdHViIGV4ZWN1dGFibGUKICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgd2NoYXJfdCogd2J1ZiA9IF9QeV9jaGFyMndjaGFyKHB5dmVudl9sYXVuY2hlciwgTlVMTCk7CisgICAgICAgICAgICB3Y2hhcl90KiB3YnVmID0gUHlfRGVjb2RlTG9jYWxlKHB5dmVudl9sYXVuY2hlciwgTlVMTCk7CiAKICAgICAgICAgICAgIGlmICh3YnVmID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW5ub3QgZGVjb2RlIF9fUFlWRU5WX0xBVU5DSEVSX18iKTsKQEAgLTY1Miw2ICs2NjcsNyBAQAogICAgIFB5X1NldFByb2dyYW1OYW1lKGFyZ3ZbMF0pOwogI2VuZGlmCiAgICAgUHlfSW5pdGlhbGl6ZSgpOworICAgIFB5X1hERUNSRUYod2FybmluZ19vcHRpb25zKTsKIAogICAgIGlmICghUHlfUXVpZXRGbGFnICYmIChQeV9WZXJib3NlRmxhZyB8fAogICAgICAgICAgICAgICAgICAgICAgICAgKGNvbW1hbmQgPT0gTlVMTCAmJiBmaWxlbmFtZSA9PSBOVUxMICYmCkBAIC03MTMsNyArNzI5LDcgQEAKICAgICAgICAgICAgICAgICBjaGFyICpjZmlsZW5hbWVfYnVmZmVyOwogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNmaWxlbmFtZTsKICAgICAgICAgICAgICAgICBpbnQgZXJyID0gZXJybm87Ci0gICAgICAgICAgICAgICAgY2ZpbGVuYW1lX2J1ZmZlciA9IF9QeV93Y2hhcjJjaGFyKGZpbGVuYW1lLCBOVUxMKTsKKyAgICAgICAgICAgICAgICBjZmlsZW5hbWVfYnVmZmVyID0gUHlfRW5jb2RlTG9jYWxlKGZpbGVuYW1lLCBOVUxMKTsKICAgICAgICAgICAgICAgICBpZiAoY2ZpbGVuYW1lX2J1ZmZlciAhPSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBjZmlsZW5hbWUgPSBjZmlsZW5hbWVfYnVmZmVyOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTczNiwxMSArNzUyLDEyIEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8qIFhYWDogZG9lcyB0aGlzIHdvcmsgb24gV2luL1dpbjY0PyAoc2VlIHBvc2l4X2ZzdGF0KSAqLwotICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0IHNiOwotICAgICAgICAgICAgICAgIGlmIChmc3RhdChmaWxlbm8oZnApLCAmc2IpID09IDAgJiYKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHNiOworICAgICAgICAgICAgICAgIGlmIChfUHlfZnN0YXRfbm9yYWlzZShmaWxlbm8oZnApLCAmc2IpID09IDAgJiYKICAgICAgICAgICAgICAgICAgICAgU19JU0RJUihzYi5zdF9tb2RlKSkgewotICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVsczogJyVscycgaXMgYSBkaXJlY3RvcnksIGNhbm5vdCBjb250aW51ZVxuIiwgYXJndlswXSwgZmlsZW5hbWUpOworICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWxzOiAnJWxzJyBpcyBhIGRpcmVjdG9yeSwgY2Fubm90IGNvbnRpbnVlXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3ZbMF0sIGZpbGVuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgZmNsb3NlKGZwKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tYWtlc2V0dXAgYi9Nb2R1bGVzL21ha2VzZXR1cAppbmRleCA4YjVjYzI4Li45MGRiNDJlIDEwMDc1NQotLS0gYS9Nb2R1bGVzL21ha2VzZXR1cAorKysgYi9Nb2R1bGVzL21ha2VzZXR1cApAQCAtMjY2LDcgKzI2Niw3IEBACiAJKikgIHNlZCAtZSAiCiAJCTFpJE5MLyogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgZnJvbSAkY29uZmlnIGJ5IG1ha2VzZXR1cC4gKi8KIAkJL01BUktFUiAxL2kkTkwkRVhUREVDTFMKLSAKKwogCQkvTUFSS0VSIDIvaSROTCRJTklUQklUUwogCiAJCSIgJGNvbmZpZyA+Y29uZmlnLmMKZGlmZiAtLWdpdCBhL01vZHVsZXMvbWF0aG1vZHVsZS5jIGIvTW9kdWxlcy9tYXRobW9kdWxlLmMKaW5kZXggMjQzZTJhMy4uOTM1OWViMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tYXRobW9kdWxlLmMKKysrIGIvTW9kdWxlcy9tYXRobW9kdWxlLmMKQEAgLTIyMyw2ICsyMjMsMzUgQEAKICAgICByZXR1cm4gbnVtL2RlbjsKIH0KIAorLyogQ29uc3RhbnQgZm9yICtpbmZpbml0eSwgZ2VuZXJhdGVkIGluIHRoZSBzYW1lIHdheSBhcyBmbG9hdCgnaW5mJykuICovCisKK3N0YXRpYyBkb3VibGUKK21faW5mKHZvaWQpCit7CisjaWZuZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIKKyAgICByZXR1cm4gX1B5X2RnX2luZmluaXR5KDApOworI2Vsc2UKKyAgICByZXR1cm4gUHlfSFVHRV9WQUw7CisjZW5kaWYKK30KKworLyogQ29uc3RhbnQgbmFuIHZhbHVlLCBnZW5lcmF0ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZsb2F0KCduYW4nKS4gKi8KKy8qIFdlIGRvbid0IGN1cnJlbnRseSBhc3N1bWUgdGhhdCBQeV9OQU4gaXMgZGVmaW5lZCBldmVyeXdoZXJlLiAqLworCisjaWYgIWRlZmluZWQoUFlfTk9fU0hPUlRfRkxPQVRfUkVQUikgfHwgZGVmaW5lZChQeV9OQU4pCisKK3N0YXRpYyBkb3VibGUKK21fbmFuKHZvaWQpCit7CisjaWZuZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIKKyAgICByZXR1cm4gX1B5X2RnX3N0ZG5hbigwKTsKKyNlbHNlCisgICAgcmV0dXJuIFB5X05BTjsKKyNlbmRpZgorfQorCisjZW5kaWYKKwogc3RhdGljIGRvdWJsZQogbV90Z2FtbWEoZG91YmxlIHgpCiB7CkBAIC02NTYsNiArNjg1LDMzIEBACiB9CiAKIAorc3RhdGljIFB5T2JqZWN0ICoKK21hdGhfZ2NkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqYSwgKmIsICpnOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzpnY2QiLCAmYSwgJmIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGEgPSBQeU51bWJlcl9JbmRleChhKTsKKyAgICBpZiAoYSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBiID0gUHlOdW1iZXJfSW5kZXgoYik7CisgICAgaWYgKGIgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBnID0gX1B5TG9uZ19HQ0QoYSwgYik7CisgICAgUHlfREVDUkVGKGEpOworICAgIFB5X0RFQ1JFRihiKTsKKyAgICByZXR1cm4gZzsKK30KKworUHlEb2NfU1RSVkFSKG1hdGhfZ2NkX2RvYywKKyJnY2QoeCwgeSkgLT4gaW50XG5cCitncmVhdGVzdCBjb21tb24gZGl2aXNvciBvZiB4IGFuZCB5Iik7CisKKwogLyogQ2FsbCBpc19lcnJvciB3aGVuIGVycm5vICE9IDAsIGFuZCB3aGVyZSB4IGlzIHRoZSByZXN1bHQgbGlibQogICogcmV0dXJuZWQuICBpc19lcnJvciB3aWxsIHVzdWFsbHkgc2V0IHVwIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuCiAgKiB0cnVlICgxKSwgYnV0IG1heSByZXR1cm4gZmFsc2UgKDApIHdpdGhvdXQgc2V0dGluZyB1cCBhbiBleGNlcHRpb24uCkBAIC0xMDEwLDcgKzEwNjYsNyBAQAogICAgIFB5X3NzaXplX3QgbSA9ICptX3B0cjsKIAogICAgIG0gKz0gbTsgIC8qIGRvdWJsZSAqLwotICAgIGlmIChuIDwgbSAmJiBtIDwgKFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKGRvdWJsZSkpKSB7CisgICAgaWYgKG4gPCBtICYmIChzaXplX3QpbSA8ICgoc2l6ZV90KVBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKGRvdWJsZSkpKSB7CiAgICAgICAgIGRvdWJsZSAqcCA9ICpwX3B0cjsKICAgICAgICAgaWYgKHAgPT0gcHMpIHsKICAgICAgICAgICAgIHYgPSBQeU1lbV9NYWxsb2Moc2l6ZW9mKGRvdWJsZSkgKiBtKTsKQEAgLTE0MDgsNiArMTQ2NCw3IEBACiBtYXRoX2ZhY3RvcmlhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKICAgICBsb25nIHg7CisgICAgaW50IG92ZXJmbG93OwogICAgIFB5T2JqZWN0ICpyZXN1bHQsICpvZGRfcGFydCwgKnR3b192YWx1YXRpb247CiAKICAgICBpZiAoUHlGbG9hdF9DaGVjayhhcmcpKSB7CkBAIC0xNDIxLDE1ICsxNDc4LDIyIEBACiAgICAgICAgIGx4ID0gUHlMb25nX0Zyb21Eb3VibGUoZHgpOwogICAgICAgICBpZiAobHggPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB4ID0gUHlMb25nX0FzTG9uZyhseCk7CisgICAgICAgIHggPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cobHgsICZvdmVyZmxvdyk7CiAgICAgICAgIFB5X0RFQ1JFRihseCk7CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgeCA9IFB5TG9uZ19Bc0xvbmcoYXJnKTsKKyAgICAgICAgeCA9IFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhhcmcsICZvdmVyZmxvdyk7CiAKLSAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHggPCAwKSB7CisgICAgfQorICAgIGVsc2UgaWYgKG92ZXJmbG93ID09IDEpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiZmFjdG9yaWFsKCkgYXJndW1lbnQgc2hvdWxkIG5vdCBleGNlZWQgJWxkIiwKKyAgICAgICAgICAgICAgICAgICAgIExPTkdfTUFYKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKG92ZXJmbG93ID09IC0xIHx8IHggPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImZhY3RvcmlhbCgpIG5vdCBkZWZpbmVkIGZvciBuZWdhdGl2ZSB2YWx1ZXMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xOTI2LDYgKzE5OTAsODMgQEAKICJpc2luZih4KSAtPiBib29sXG5cblwKIFJldHVybiBUcnVlIGlmIHggaXMgYSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbmZpbml0eSwgYW5kIEZhbHNlIG90aGVyd2lzZS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK21hdGhfaXNjbG9zZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgZG91YmxlIGEsIGI7CisgICAgZG91YmxlIHJlbF90b2wgPSAxZS05OworICAgIGRvdWJsZSBhYnNfdG9sID0gMC4wOworICAgIGRvdWJsZSBkaWZmID0gMC4wOworICAgIGxvbmcgcmVzdWx0ID0gMDsKKworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJhIiwgImIiLCAicmVsX3RvbCIsICJhYnNfdG9sIiwgTlVMTH07CisKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImRkfCRkZDppc2Nsb3NlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYSwgJmIsICZyZWxfdG9sLCAmYWJzX3RvbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogc2FuaXR5IGNoZWNrIG9uIHRoZSBpbnB1dHMgKi8KKyAgICBpZiAocmVsX3RvbCA8IDAuMCB8fCBhYnNfdG9sIDwgMC4wICkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0b2xlcmFuY2VzIG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICggYSA9PSBiICkgeworICAgICAgICAvKiBzaG9ydCBjaXJjdWl0IGV4YWN0IGVxdWFsaXR5IC0tIG5lZWRlZCB0byBjYXRjaCB0d28gaW5maW5pdGllcyBvZgorICAgICAgICAgICB0aGUgc2FtZSBzaWduLiBBbmQgcGVyaGFwcyBzcGVlZHMgdGhpbmdzIHVwIGEgYml0IHNvbWV0aW1lcy4KKyAgICAgICAgKi8KKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorCisgICAgLyogVGhpcyBjYXRjaGVzIHRoZSBjYXNlIG9mIHR3byBpbmZpbml0aWVzIG9mIG9wcG9zaXRlIHNpZ24sIG9yCisgICAgICAgb25lIGluZmluaXR5IGFuZCBvbmUgZmluaXRlIG51bWJlci4gVHdvIGluZmluaXRpZXMgb2Ygb3Bwb3NpdGUKKyAgICAgICBzaWduIHdvdWxkIG90aGVyd2lzZSBoYXZlIGFuIGluZmluaXRlIHJlbGF0aXZlIHRvbGVyYW5jZS4KKyAgICAgICBUd28gaW5maW5pdGllcyBvZiB0aGUgc2FtZSBzaWduIGFyZSBjYXVnaHQgYnkgdGhlIGVxdWFsaXR5IGNoZWNrCisgICAgICAgYWJvdmUuCisgICAgKi8KKworICAgIGlmIChQeV9JU19JTkZJTklUWShhKSB8fCBQeV9JU19JTkZJTklUWShiKSkgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorCisgICAgLyogbm93IGRvIHRoZSByZWd1bGFyIGNvbXB1dGF0aW9uCisgICAgICAgdGhpcyBpcyBlc3NlbnRpYWxseSB0aGUgIndlYWsiIHRlc3QgZnJvbSB0aGUgQm9vc3QgbGlicmFyeQorICAgICovCisKKyAgICBkaWZmID0gZmFicyhiIC0gYSk7CisKKyAgICByZXN1bHQgPSAoKChkaWZmIDw9IGZhYnMocmVsX3RvbCAqIGIpKSB8fAorICAgICAgICAgICAgICAgKGRpZmYgPD0gZmFicyhyZWxfdG9sICogYSkpKSB8fAorICAgICAgICAgICAgICAoZGlmZiA8PSBhYnNfdG9sKSk7CisKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUihtYXRoX2lzY2xvc2VfZG9jLAorImlzX2Nsb3NlKGEsIGIsICosIHJlbF90b2w9MWUtMDksIGFic190b2w9MC4wKSAtPiBib29sXG4iCisiXG4iCisiRGV0ZXJtaW5lIHdoZXRoZXIgdHdvIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgYXJlIGNsb3NlIGluIHZhbHVlLlxuIgorIlxuIgorIiAgIHJlbF90b2xcbiIKKyIgICAgICAgbWF4aW11bSBkaWZmZXJlbmNlIGZvciBiZWluZyBjb25zaWRlcmVkIFwiY2xvc2VcIiwgcmVsYXRpdmUgdG8gdGhlXG4iCisiICAgICAgIG1hZ25pdHVkZSBvZiB0aGUgaW5wdXQgdmFsdWVzXG4iCisiICAgIGFic190b2xcbiIKKyIgICAgICAgbWF4aW11bSBkaWZmZXJlbmNlIGZvciBiZWluZyBjb25zaWRlcmVkIFwiY2xvc2VcIiwgcmVnYXJkbGVzcyBvZiB0aGVcbiIKKyIgICAgICAgbWFnbml0dWRlIG9mIHRoZSBpbnB1dCB2YWx1ZXNcbiIKKyJcbiIKKyJSZXR1cm4gVHJ1ZSBpZiBhIGlzIGNsb3NlIGluIHZhbHVlIHRvIGIsIGFuZCBGYWxzZSBvdGhlcndpc2UuXG4iCisiXG4iCisiRm9yIHRoZSB2YWx1ZXMgdG8gYmUgY29uc2lkZXJlZCBjbG9zZSwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGVtXG4iCisibXVzdCBiZSBzbWFsbGVyIHRoYW4gYXQgbGVhc3Qgb25lIG9mIHRoZSB0b2xlcmFuY2VzLlxuIgorIlxuIgorIi1pbmYsIGluZiBhbmQgTmFOIGJlaGF2ZSBzaW1pbGFybHkgdG8gdGhlIElFRUUgNzU0IFN0YW5kYXJkLiAgVGhhdFxuIgorImlzLCBOYU4gaXMgbm90IGNsb3NlIHRvIGFueXRoaW5nLCBldmVuIGl0c2VsZi4gIGluZiBhbmQgLWluZiBhcmVcbiIKKyJvbmx5IGNsb3NlIHRvIHRoZW1zZWx2ZXMuIik7CisKIHN0YXRpYyBQeU1ldGhvZERlZiBtYXRoX21ldGhvZHNbXSA9IHsKICAgICB7ImFjb3MiLCAgICAgICAgICAgIG1hdGhfYWNvcywgICAgICBNRVRIX08sICAgICAgICAgbWF0aF9hY29zX2RvY30sCiAgICAgeyJhY29zaCIsICAgICAgICAgICBtYXRoX2Fjb3NoLCAgICAgTUVUSF9PLCAgICAgICAgIG1hdGhfYWNvc2hfZG9jfSwKQEAgLTE5NTAsNyArMjA5MSwxMCBAQAogICAgIHsiZnJleHAiLCAgICAgICAgICAgbWF0aF9mcmV4cCwgICAgIE1FVEhfTywgICAgICAgICBtYXRoX2ZyZXhwX2RvY30sCiAgICAgeyJmc3VtIiwgICAgICAgICAgICBtYXRoX2ZzdW0sICAgICAgTUVUSF9PLCAgICAgICAgIG1hdGhfZnN1bV9kb2N9LAogICAgIHsiZ2FtbWEiLCAgICAgICAgICAgbWF0aF9nYW1tYSwgICAgIE1FVEhfTywgICAgICAgICBtYXRoX2dhbW1hX2RvY30sCisgICAgeyJnY2QiLCAgICAgICAgICAgICBtYXRoX2djZCwgICAgICAgTUVUSF9WQVJBUkdTLCAgIG1hdGhfZ2NkX2RvY30sCiAgICAgeyJoeXBvdCIsICAgICAgICAgICBtYXRoX2h5cG90LCAgICAgTUVUSF9WQVJBUkdTLCAgIG1hdGhfaHlwb3RfZG9jfSwKKyAgICB7ImlzY2xvc2UiLCAoUHlDRnVuY3Rpb24pIG1hdGhfaXNjbG9zZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICBtYXRoX2lzY2xvc2VfZG9jfSwKICAgICB7ImlzZmluaXRlIiwgICAgICAgIG1hdGhfaXNmaW5pdGUsICBNRVRIX08sICAgICAgICAgbWF0aF9pc2Zpbml0ZV9kb2N9LAogICAgIHsiaXNpbmYiLCAgICAgICAgICAgbWF0aF9pc2luZiwgICAgIE1FVEhfTywgICAgICAgICBtYXRoX2lzaW5mX2RvY30sCiAgICAgeyJpc25hbiIsICAgICAgICAgICBtYXRoX2lzbmFuLCAgICAgTUVUSF9PLCAgICAgICAgIG1hdGhfaXNuYW5fZG9jfSwKQEAgLTIwMDEsNyArMjE0NSwxMSBAQAogCiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJwaSIsIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX1BJKSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlIiwgUHlGbG9hdF9Gcm9tRG91YmxlKFB5X01BVEhfRSkpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiaW5mIiwgUHlGbG9hdF9Gcm9tRG91YmxlKG1faW5mKCkpKTsKKyNpZiAhZGVmaW5lZChQWV9OT19TSE9SVF9GTE9BVF9SRVBSKSB8fCBkZWZpbmVkKFB5X05BTikKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIm5hbiIsIFB5RmxvYXRfRnJvbURvdWJsZShtX25hbigpKSk7CisjZW5kaWYKIAotICAgIGZpbmFsbHk6CisgIGZpbmFsbHk6CiAgICAgcmV0dXJuIG07CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL21kNW1vZHVsZS5jIGIvTW9kdWxlcy9tZDVtb2R1bGUuYwppbmRleCA1Y2IzZDM2Li5hOWViYzhjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL21kNW1vZHVsZS5jCisrKyBiL01vZHVsZXMvbWQ1bW9kdWxlLmMKQEAgLTE4LDcgKzE4LDEzIEBACiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJoYXNobGliLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKIAorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9tZDUKK2NsYXNzIE1ENVR5cGUgIk1ENW9iamVjdCAqIiAiJlB5VHlwZV9UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NmU1MjYxNzE5OTU3YTkxMl0qLwogCiAvKiBTb21lIHVzZWZ1bCB0eXBlcyAqLwogCkBAIC00OCw2ICs1NCw3IEBACiAgICAgc3RydWN0IG1kNV9zdGF0ZSBoYXNoX3N0YXRlOwogfSBNRDVvYmplY3Q7CiAKKyNpbmNsdWRlICJjbGluaWMvbWQ1bW9kdWxlLmMuaCIKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgpAQCAtMzMyLDMwICszMzksMzQgQEAKIAogLyogRXh0ZXJuYWwgbWV0aG9kcyBmb3IgYSBoYXNoIG9iamVjdCAqLwogCi1QeURvY19TVFJWQVIoTUQ1X2NvcHlfX2RvY19fLCAiUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuIik7CisvKltjbGluaWMgaW5wdXRdCitNRDVUeXBlLmNvcHkKKworUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1NRDVfY29weShNRDVvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitNRDVUeXBlX2NvcHlfaW1wbChNRDVvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTk2ZWIzNjg1MmYwMjA3MSBpbnB1dD0yYzA5ZTZkMjQ5M2YzMDc5XSovCiB7CiAgICAgTUQ1b2JqZWN0ICpuZXdvYmo7CiAKLSAgICBpZiAoUHlfVFlQRShzZWxmKSA9PSAmTUQ1dHlwZSkgewotICAgICAgICBpZiAoIChuZXdvYmogPSBuZXdNRDVvYmplY3QoKSk9PU5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoIChuZXdvYmogPSBuZXdNRDVvYmplY3QoKSk9PU5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaWYgKChuZXdvYmogPSBuZXdNRDVvYmplY3QoKSk9PU5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgbmV3b2JqLT5oYXNoX3N0YXRlID0gc2VsZi0+aGFzaF9zdGF0ZTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbmV3b2JqOwogfQogCi1QeURvY19TVFJWQVIoTUQ1X2RpZ2VzdF9fZG9jX18sCi0iUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisvKltjbGluaWMgaW5wdXRdCitNRDVUeXBlLmRpZ2VzdAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLU1ENV9kaWdlc3QoTUQ1b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorTUQ1VHlwZV9kaWdlc3RfaW1wbChNRDVvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWI2OTFkYzQxOTBhMDdlYyBpbnB1dD03Yjk2ZTY1Mzg5NDEyYTM0XSovCiB7CiAgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbTUQ1X0RJR0VTVFNJWkVdOwogICAgIHN0cnVjdCBtZDVfc3RhdGUgdGVtcDsKQEAgLTM2NSw1NCArMzc2LDQxIEBACiAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilkaWdlc3QsIE1ENV9ESUdFU1RTSVpFKTsKIH0KIAotUHlEb2NfU1RSVkFSKE1ENV9oZXhkaWdlc3RfX2RvY19fLAotIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK01ENVR5cGUuaGV4ZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLU1ENV9oZXhkaWdlc3QoTUQ1b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorTUQ1VHlwZV9oZXhkaWdlc3RfaW1wbChNRDVvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTdiYWRjZWQxZjNhYzkzMiBpbnB1dD1iNjBiMTlkZTY0NDc5OGRkXSovCiB7CiAgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbTUQ1X0RJR0VTVFNJWkVdOwogICAgIHN0cnVjdCBtZDVfc3RhdGUgdGVtcDsKLSAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIFB5X1VDUzEgKmhleF9kaWdlc3Q7Ci0gICAgaW50IGksIGo7CiAKICAgICAvKiBHZXQgdGhlIHJhdyAoYmluYXJ5KSBkaWdlc3QgdmFsdWUgKi8KICAgICB0ZW1wID0gc2VsZi0+aGFzaF9zdGF0ZTsKICAgICBtZDVfZG9uZSgmdGVtcCwgZGlnZXN0KTsKIAotICAgIC8qIENyZWF0ZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXR2YWwgPSBQeVVuaWNvZGVfTmV3KE1ENV9ESUdFU1RTSVpFICogMiwgMTI3KTsKLSAgICBpZiAoIXJldHZhbCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGhleF9kaWdlc3QgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXR2YWwpOwotCi0gICAgLyogTWFrZSBoZXggdmVyc2lvbiBvZiB0aGUgZGlnZXN0ICovCi0gICAgZm9yKGk9aj0wOyBpPE1ENV9ESUdFU1RTSVpFOyBpKyspIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjOwotICAgICAgICBjID0gKGRpZ2VzdFtpXSA+PiA0KSAmIDB4ZjsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwotICAgICAgICBjID0gKGRpZ2VzdFtpXSAmIDB4Zik7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKLSAgICB9Ci0jaWZkZWYgUHlfREVCVUcKLSAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJldHZhbCwgMSkpOwotI2VuZGlmCi0gICAgcmV0dXJuIHJldHZhbDsKKyAgICByZXR1cm4gX1B5X3N0cmhleCgoY29uc3QgY2hhciopZGlnZXN0LCBNRDVfRElHRVNUU0laRSk7CiB9CiAKLVB5RG9jX1NUUlZBUihNRDVfdXBkYXRlX19kb2NfXywKLSJVcGRhdGUgdGhpcyBoYXNoIG9iamVjdCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK01ENVR5cGUudXBkYXRlCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1NRDVfdXBkYXRlKE1ENW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitNRDVUeXBlX3VwZGF0ZShNRDVvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjZhZDE2ODQxNjMzODQyMyBpbnB1dD02ZTFlZmNkOWVjZjE3MDMyXSovCiB7Ci0gICAgUHlPYmplY3QgKm9iajsKICAgICBQeV9idWZmZXIgYnVmOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnVwZGF0ZSIsICZvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQob2JqLCAmYnVmKTsKIAogICAgIG1kNV9wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKQEAgLTQyMywxMCArNDIxLDEwIEBACiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBNRDVfbWV0aG9kc1tdID0gewotICAgIHsiY29weSIsICAgICAgKFB5Q0Z1bmN0aW9uKU1ENV9jb3B5LCAgICAgIE1FVEhfTk9BUkdTLCAgTUQ1X2NvcHlfX2RvY19ffSwKLSAgICB7ImRpZ2VzdCIsICAgIChQeUNGdW5jdGlvbilNRDVfZGlnZXN0LCAgICBNRVRIX05PQVJHUywgIE1ENV9kaWdlc3RfX2RvY19ffSwKLSAgICB7ImhleGRpZ2VzdCIsIChQeUNGdW5jdGlvbilNRDVfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgIE1ENV9oZXhkaWdlc3RfX2RvY19ffSwKLSAgICB7InVwZGF0ZSIsICAgIChQeUNGdW5jdGlvbilNRDVfdXBkYXRlLCAgICBNRVRIX1ZBUkFSR1MsIE1ENV91cGRhdGVfX2RvY19ffSwKKyAgICBNRDVUWVBFX0NPUFlfTUVUSE9EREVGCisgICAgTUQ1VFlQRV9ESUdFU1RfTUVUSE9EREVGCisgICAgTUQ1VFlQRV9IRVhESUdFU1RfTUVUSE9EREVGCisgICAgTUQ1VFlQRV9VUERBVEVfTUVUSE9EREVGCiAgICAge05VTEwsICAgICAgICBOVUxMfSAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC01MDIsMjcgKzUwMCwyNiBAQAogCiAvKiBUaGUgc2luZ2xlIG1vZHVsZS1sZXZlbCBmdW5jdGlvbjogbmV3KCkgKi8KIAotUHlEb2NfU1RSVkFSKE1ENV9uZXdfX2RvY19fLAotIlJldHVybiBhIG5ldyBNRDUgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19tZDUubWQ1CisKKyAgICBzdHJpbmc6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJworCitSZXR1cm4gYSBuZXcgTUQ1IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1NRDVfbmV3KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZGljdCkKK19tZDVfbWQ1X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNTI3NDM2YTIwOTBiOTU2IGlucHV0PWQxMmVmOGY3MmQ2ODRmN2JdKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InN0cmluZyIsIE5VTEx9OwogICAgIE1ENW9iamVjdCAqbmV3OwotICAgIFB5T2JqZWN0ICpkYXRhX29iaiA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgInxPOm5ldyIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9vYmopKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChkYXRhX29iaikKLSAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChkYXRhX29iaiwgJmJ1Zik7CisgICAgaWYgKHN0cmluZykKKyAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChzdHJpbmcsICZidWYpOwogCiAgICAgaWYgKChuZXcgPSBuZXdNRDVvYmplY3QoKSkgPT0gTlVMTCkgewotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC01MzEsMTEgKzUyOCwxMSBAQAogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgIGlmIChkYXRhX29iaikKKyAgICAgICAgaWYgKHN0cmluZykKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZGF0YV9vYmopIHsKKyAgICBpZiAoc3RyaW5nKSB7CiAgICAgICAgIG1kNV9wcm9jZXNzKCZuZXctPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4pOwogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgIH0KQEAgLTU0Nyw3ICs1NDQsNyBAQAogLyogTGlzdCBvZiBmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUgKi8KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBNRDVfZnVuY3Rpb25zW10gPSB7Ci0gICAgeyJtZDUiLCAoUHlDRnVuY3Rpb24pTUQ1X25ldywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIE1ENV9uZXdfX2RvY19ffSwKKyAgICBfTUQ1X01ENV9NRVRIT0RERUYKICAgICB7TlVMTCwgICAgICBOVUxMfSAgICAgICAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL21tYXBtb2R1bGUuYyBiL01vZHVsZXMvbW1hcG1vZHVsZS5jCmluZGV4IGEwY2NlZWIuLmJiOThhOTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbW1hcG1vZHVsZS5jCisrKyBiL01vZHVsZXMvbW1hcG1vZHVsZS5jCkBAIC0zMDEsMTYgKzMwMSwxNyBAQAogewogICAgIFB5X3NzaXplX3Qgc3RhcnQgPSBzZWxmLT5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmQgPSBzZWxmLT5zaXplOwotICAgIGNvbnN0IGNoYXIgKm5lZWRsZTsKLSAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeV9idWZmZXIgdmlldzsKIAogICAgIENIRUNLX1ZBTElEKE5VTEwpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCByZXZlcnNlID8gInkjfG5uOnJmaW5kIiA6ICJ5I3xubjpmaW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZWRsZSwgJmxlbiwgJnN0YXJ0LCAmZW5kKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCByZXZlcnNlID8gInkqfG5uOnJmaW5kIiA6ICJ5KnxubjpmaW5kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnZpZXcsICZzdGFydCwgJmVuZCkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKICAgICAgICAgY29uc3QgY2hhciAqcCwgKnN0YXJ0X3AsICplbmRfcDsKICAgICAgICAgaW50IHNpZ24gPSByZXZlcnNlID8gLTEgOiAxOworICAgICAgICBjb25zdCBjaGFyICpuZWVkbGUgPSB2aWV3LmJ1ZjsKKyAgICAgICAgUHlfc3NpemVfdCBsZW4gPSB2aWV3LmxlbjsKIAogICAgICAgICBpZiAoc3RhcnQgPCAwKQogICAgICAgICAgICAgc3RhcnQgKz0gc2VsZi0+c2l6ZTsKQEAgLTMzNSw5ICszMzYsMTEgQEAKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW4gJiYgbmVlZGxlW2ldID09IHBbaV07ICsraSkKICAgICAgICAgICAgICAgICAvKiBub3RoaW5nICovOwogICAgICAgICAgICAgaWYgKGkgPT0gbGVuKSB7CisgICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChwIC0gc2VsZi0+ZGF0YSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoLTEpOwogICAgIH0KIH0KQEAgLTM4NSwyMiArMzg4LDI1IEBACiBtbWFwX3dyaXRlX21ldGhvZChtbWFwX29iamVjdCAqc2VsZiwKICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgbGVuZ3RoOwotICAgIGNoYXIgKmRhdGE7CisgICAgUHlfYnVmZmVyIGRhdGE7CiAKICAgICBDSEVDS19WQUxJRChOVUxMKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjOndyaXRlIiwgJmRhdGEsICZsZW5ndGgpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6d3JpdGUiLCAmZGF0YSkpCiAgICAgICAgIHJldHVybihOVUxMKTsKIAotICAgIGlmICghaXNfd3JpdGFibGUoc2VsZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKChzZWxmLT5wb3MgKyBsZW5ndGgpID4gc2VsZi0+c2l6ZSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImRhdGEgb3V0IG9mIHJhbmdlIik7CisgICAgaWYgKCFpc193cml0YWJsZShzZWxmKSkgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG1lbWNweShzZWxmLT5kYXRhK3NlbGYtPnBvcywgZGF0YSwgbGVuZ3RoKTsKLSAgICBzZWxmLT5wb3MgPSBzZWxmLT5wb3MrbGVuZ3RoOworCisgICAgaWYgKChzZWxmLT5wb3MgKyBkYXRhLmxlbikgPiBzZWxmLT5zaXplKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZGF0YSBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBtZW1jcHkoc2VsZi0+ZGF0YSArIHNlbGYtPnBvcywgZGF0YS5idWYsIGRhdGEubGVuKTsKKyAgICBzZWxmLT5wb3MgPSBzZWxmLT5wb3MgKyBkYXRhLmxlbjsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CkBAIC00NTksMTUgKzQ2NSwxMyBAQAogCiAjaWZkZWYgVU5JWAogICAgIHsKLSAgICAgICAgc3RydWN0IHN0YXQgYnVmOwotICAgICAgICBpZiAoLTEgPT0gZnN0YXQoc2VsZi0+ZmQsICZidWYpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3RhdHVzOworICAgICAgICBpZiAoX1B5X2ZzdGF0KHNlbGYtPmZkLCAmc3RhdHVzKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAjaWZkZWYgSEFWRV9MQVJHRUZJTEVfU1VQUE9SVAotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyhidWYuc3Rfc2l6ZSk7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHN0YXR1cy5zdF9zaXplKTsKICNlbHNlCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoYnVmLnN0X3NpemUpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHN0YXR1cy5zdF9zaXplKTsKICNlbmRpZgogICAgIH0KICNlbmRpZiAvKiBVTklYICovCkBAIC03MTUsNyArNzE5LDcgQEAKIHsKICAgICBQeV9zc2l6ZV90IHJlczsKIAotICAgIHJlcyA9IHNpemVvZihtbWFwX29iamVjdCk7CisgICAgcmVzID0gX1B5T2JqZWN0X1NJWkUoUHlfVFlQRShzZWxmKSk7CiAgICAgaWYgKHNlbGYtPnRhZ25hbWUpCiAgICAgICAgIHJlcyArPSBzdHJsZW4oc2VsZi0+dGFnbmFtZSkgKyAxOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzKTsKQEAgLTExMDYsOSArMTExMCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbmV3X21tYXBfb2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RpY3QpCiB7Ci0jaWZkZWYgSEFWRV9GU1RBVAotICAgIHN0cnVjdCBzdGF0IHN0OwotI2VuZGlmCisgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdGF0dXM7CiAgICAgbW1hcF9vYmplY3QgKm1fb2JqOwogICAgIFB5T2JqZWN0ICptYXBfc2l6ZV9vYmogPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbWFwX3NpemU7CkBAIC0xMTczLDMyICsxMTc1LDMxIEBACiAgICAgaWYgKGZkICE9IC0xKQogICAgICAgICAodm9pZClmY250bChmZCwgRl9GVUxMRlNZTkMpOwogI2VuZGlmCi0jaWZkZWYgSEFWRV9GU1RBVAotICAgIGlmIChmZCAhPSAtMSAmJiBmc3RhdChmZCwgJnN0KSA9PSAwICYmIFNfSVNSRUcoc3Quc3RfbW9kZSkpIHsKKyAgICBpZiAoZmQgIT0gLTEgJiYgX1B5X2ZzdGF0X25vcmFpc2UoZmQsICZzdGF0dXMpID09IDAKKyAgICAgICAgJiYgU19JU1JFRyhzdGF0dXMuc3RfbW9kZSkpIHsKICAgICAgICAgaWYgKG1hcF9zaXplID09IDApIHsKLSAgICAgICAgICAgIGlmIChzdC5zdF9zaXplID09IDApIHsKKyAgICAgICAgICAgIGlmIChzdGF0dXMuc3Rfc2l6ZSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgbW1hcCBhbiBlbXB0eSBmaWxlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAob2Zmc2V0ID49IHN0LnN0X3NpemUpIHsKKyAgICAgICAgICAgIGlmIChvZmZzZXQgPj0gc3RhdHVzLnN0X3NpemUpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1tYXAgb2Zmc2V0IGlzIGdyZWF0ZXIgdGhhbiBmaWxlIHNpemUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzdC5zdF9zaXplIC0gb2Zmc2V0ID4gUFlfU1NJWkVfVF9NQVgpIHsKKyAgICAgICAgICAgIGlmIChzdGF0dXMuc3Rfc2l6ZSAtIG9mZnNldCA+IFBZX1NTSVpFX1RfTUFYKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW1hcCBsZW5ndGggaXMgdG9vIGxhcmdlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBtYXBfc2l6ZSA9IChQeV9zc2l6ZV90KSAoc3Quc3Rfc2l6ZSAtIG9mZnNldCk7Ci0gICAgICAgIH0gZWxzZSBpZiAob2Zmc2V0ICsgKHNpemVfdCltYXBfc2l6ZSA+IHN0LnN0X3NpemUpIHsKKyAgICAgICAgICAgIG1hcF9zaXplID0gKFB5X3NzaXplX3QpIChzdGF0dXMuc3Rfc2l6ZSAtIG9mZnNldCk7CisgICAgICAgIH0gZWxzZSBpZiAob2Zmc2V0ICsgbWFwX3NpemUgPiBzdGF0dXMuc3Rfc2l6ZSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1tYXAgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBmaWxlIHNpemUiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQotI2VuZGlmCiAgICAgbV9vYmogPSAobW1hcF9vYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAobV9vYmogPT0gTlVMTCkge3JldHVybiBOVUxMO30KICAgICBtX29iai0+ZGF0YSA9IE5VTEw7CkBAIC0xMjIxLDcgKzEyMjIsNiBAQAogICAgICAgICBmZCA9IGRldnplcm8gPSBfUHlfb3BlbigiL2Rldi96ZXJvIiwgT19SRFdSKTsKICAgICAgICAgaWYgKGRldnplcm8gPT0gLTEpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihtX29iaik7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogI2VuZGlmCkBAIC0xMzI1LDExICsxMzI1LDEzIEBACiAgICAgICovCiAgICAgaWYgKGZpbGVubyAhPSAtMSAmJiBmaWxlbm8gIT0gMCkgewogICAgICAgICAvKiBFbnN1cmUgdGhhdCBmaWxlbm8gaXMgd2l0aGluIHRoZSBDUlQncyB2YWxpZCByYW5nZSAqLwotICAgICAgICBpZiAoX1B5VmVyaWZ5X2ZkKGZpbGVubykgPT0gMCkgeworICAgICAgICBpZiAoIV9QeVZlcmlmeV9mZChmaWxlbm8pKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQorICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgICAgIGZoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlbm8pOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgICAgICBpZiAoZmg9PShIQU5ETEUpLTEpIHsKICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9uaXNtb2R1bGUuYyBiL01vZHVsZXMvbmlzbW9kdWxlLmMKaW5kZXggMGFmNDk1Zi4uNjRlYjVkYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9uaXNtb2R1bGUuYworKysgYi9Nb2R1bGVzL25pc21vZHVsZS5jCkBAIC00NTYsOCArNDU2LDggQEAKICAgICBOVUxMCiB9OwogCi1QeU9iamVjdCoKLVB5SW5pdF9uaXMgKHZvaWQpCitQeU1PRElOSVRfRlVOQworUHlJbml0X25pcyh2b2lkKQogewogICAgIFB5T2JqZWN0ICptLCAqZDsKICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZuaXNtb2R1bGUpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9vc3NhdWRpb2Rldi5jIGIvTW9kdWxlcy9vc3NhdWRpb2Rldi5jCmluZGV4IDJkMGRkMDkuLmQyZmQ1YzggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvb3NzYXVkaW9kZXYuYworKysgYi9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMKQEAgLTE5LDYgKzE5LDcgQEAKICAqICRJZCQKICAqLwogCisjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIApAQCAtNTEsOCArNTIsOCBAQAogICAgIGNoYXIgICAgKmRldmljZW5hbWU7ICAgICAgICAgICAgICAvKiBuYW1lIG9mIHRoZSBkZXZpY2UgZmlsZSAqLwogICAgIGludCAgICAgIGZkOyAgICAgICAgICAgICAgICAgICAgICAvKiBmaWxlIGRlc2NyaXB0b3IgKi8KICAgICBpbnQgICAgICBtb2RlOyAgICAgICAgICAgICAgICAgICAgLyogZmlsZSBtb2RlIChPX1JET05MWSwgZXRjLikgKi8KLSAgICBpbnQgICAgICBpY291bnQ7ICAgICAgICAgICAgICAgICAgLyogaW5wdXQgY291bnQgKi8KLSAgICBpbnQgICAgICBvY291bnQ7ICAgICAgICAgICAgICAgICAgLyogb3V0cHV0IGNvdW50ICovCisgICAgUHlfc3NpemVfdCBpY291bnQ7ICAgICAgICAgICAgICAgIC8qIGlucHV0IGNvdW50ICovCisgICAgUHlfc3NpemVfdCBvY291bnQ7ICAgICAgICAgICAgICAgIC8qIG91dHB1dCBjb3VudCAqLwogICAgIHVpbnQzMl90IGFmbXRzOyAgICAgICAgICAgICAgICAgICAvKiBhdWRpbyBmb3JtYXRzIHN1cHBvcnRlZCBieSBoYXJkd2FyZSAqLwogfSBvc3NfYXVkaW9fdDsKIApAQCAtMTE2LDExICsxMTcsOCBAQAogICAgICAgIHByb3ZpZGVzIGEgc3BlY2lhbCBpb2N0bCgpIGZvciBub24tYmxvY2tpbmcgcmVhZC93cml0ZSwgd2hpY2ggaXMKICAgICAgICBleHBvc2VkIHZpYSBvc3Nfbm9uYmxvY2soKSBiZWxvdy4gKi8KICAgICBmZCA9IF9QeV9vcGVuKGRldmljZW5hbWUsIGltb2RlfE9fTk9OQkxPQ0spOwotCi0gICAgaWYgKGZkID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZShQeUV4Y19JT0Vycm9yLCBkZXZpY2VuYW1lKTsKKyAgICBpZiAoZmQgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIC8qIEFuZCAodHJ5IHRvKSBwdXQgaXQgYmFjayBpbiBibG9ja2luZyBtb2RlIHNvIHdlIGdldCB0aGUKICAgICAgICBleHBlY3RlZCB3cml0ZSgpIHNlbWFudGljcy4gKi8KQEAgLTE4MCwxMCArMTc4LDggQEAKICAgICB9CiAKICAgICBmZCA9IF9QeV9vcGVuKGRldmljZW5hbWUsIE9fUkRXUik7Ci0gICAgaWYgKGZkID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZShQeUV4Y19JT0Vycm9yLCBkZXZpY2VuYW1lKTsKKyAgICBpZiAoZmQgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIGlmICgoc2VsZiA9IFB5T2JqZWN0X05ldyhvc3NfbWl4ZXJfdCwgJk9TU01peGVyVHlwZSkpID09IE5VTEwpIHsKICAgICAgICAgY2xvc2UoZmQpOwpAQCAtNDA0LDI5ICs0MDAsMjUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3NfcmVhZChvc3NfYXVkaW9fdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgaW50IHNpemUsIGNvdW50OwotICAgIGNoYXIgKmNwOworICAgIFB5X3NzaXplX3Qgc2l6ZSwgY291bnQ7CiAgICAgUHlPYmplY3QgKnJ2OwogCiAgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpyZWFkIiwgJnNpemUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibjpyZWFkIiwgJnNpemUpKQogICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJ2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKICAgICBpZiAocnYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgY3AgPSBQeUJ5dGVzX0FTX1NUUklORyhydik7CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgY291bnQgPSByZWFkKHNlbGYtPmZkLCBjcCwgc2l6ZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmIChjb3VudCA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgIGNvdW50ID0gX1B5X3JlYWQoc2VsZi0+ZmQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KSwgc2l6ZSk7CisgICAgaWYgKGNvdW50ID09IC0xKSB7CiAgICAgICAgIFB5X0RFQ1JFRihydik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKwogICAgIHNlbGYtPmljb3VudCArPSBjb3VudDsKICAgICBfUHlCeXRlc19SZXNpemUoJnJ2LCBjb3VudCk7CiAgICAgcmV0dXJuIHJ2OwpAQCAtNDM1LDMzICs0MjcsMzIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3Nfd3JpdGUob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGNoYXIgKmNwOwotICAgIGludCBydiwgc2l6ZTsKKyAgICBQeV9idWZmZXIgZGF0YTsKKyAgICBQeV9zc2l6ZV90IHJ2OwogCiAgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSM6d3JpdGUiLCAmY3AsICZzaXplKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6d3JpdGUiLCAmZGF0YSkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJ2ID0gd3JpdGUoc2VsZi0+ZmQsIGNwLCBzaXplKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIHJ2ID0gX1B5X3dyaXRlKHNlbGYtPmZkLCBkYXRhLmJ1ZiwgZGF0YS5sZW4pOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIGlmIChydiA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAocnYgPT0gLTEpIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICB9IGVsc2UgewotICAgICAgICBzZWxmLT5vY291bnQgKz0gcnY7Ci0gICAgfQorICAgIHNlbGYtPm9jb3VudCArPSBydjsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJ2KTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc193cml0ZWFsbChvc3NfYXVkaW9fdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqY3A7Ci0gICAgaW50IHJ2LCBzaXplOworICAgIFB5X2J1ZmZlciBkYXRhOworICAgIGNvbnN0IGNoYXIgKmNwOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHJ2OwogICAgIGZkX3NldCB3cml0ZV9zZXRfZmRzOwogICAgIGludCBzZWxlY3RfcnY7CiAKQEAgLTQ3NSw0MSArNDY2LDUwIEBACiAgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSM6d3JpdGUiLCAmY3AsICZzaXplKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOndyaXRlYWxsIiwgJmRhdGEpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghX1B5SXNTZWxlY3RhYmxlX2ZkKHNlbGYtPmZkKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIGRlc2NyaXB0b3Igb3V0IG9mIHJhbmdlIGZvciBzZWxlY3QiKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICAvKiB1c2Ugc2VsZWN0IHRvIHdhaXQgZm9yIGF1ZGlvIGRldmljZSB0byBiZSBhdmFpbGFibGUgKi8KICAgICBGRF9aRVJPKCZ3cml0ZV9zZXRfZmRzKTsKICAgICBGRF9TRVQoc2VsZi0+ZmQsICZ3cml0ZV9zZXRfZmRzKTsKKyAgICBjcCA9IChjb25zdCBjaGFyICopZGF0YS5idWY7CisgICAgc2l6ZSA9IGRhdGEubGVuOwogCiAgICAgd2hpbGUgKHNpemUgPiAwKSB7CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgc2VsZWN0X3J2ID0gc2VsZWN0KHNlbGYtPmZkKzEsIE5VTEwsICZ3cml0ZV9zZXRfZmRzLCBOVUxMLCBOVUxMKTsKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgYXNzZXJ0KHNlbGVjdF9ydiAhPSAwKTsgICAgICAgICAvKiBubyB0aW1lb3V0LCBjYW4ndCBleHBpcmUgKi8KLSAgICAgICAgaWYgKHNlbGVjdF9ydiA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBydiA9IHdyaXRlKHNlbGYtPmZkLCBjcCwgc2l6ZSk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChydiA9PSAtMSkgewotICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikgeyAgICAgIC8qIGJ1ZmZlciBpcyBmdWxsLCB0cnkgYWdhaW4gKi8KLSAgICAgICAgICAgICAgICBlcnJubyA9IDA7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9IGVsc2UgICAgICAgICAgICAgICAgICAgICAgLyogaXQncyBhIHJlYWwgZXJyb3IgKi8KLSAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHdyb3RlIHJ2IGJ5dGVzICovCi0gICAgICAgICAgICBzZWxmLT5vY291bnQgKz0gcnY7Ci0gICAgICAgICAgICBzaXplIC09IHJ2OwotICAgICAgICAgICAgY3AgKz0gcnY7CisgICAgICAgIGFzc2VydChzZWxlY3RfcnYgIT0gMCk7ICAgLyogbm8gdGltZW91dCwgY2FuJ3QgZXhwaXJlICovCisgICAgICAgIGlmIChzZWxlY3RfcnYgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgfQorCisgICAgICAgIHJ2ID0gX1B5X3dyaXRlKHNlbGYtPmZkLCBjcCwgUHlfTUlOKHNpemUsIElOVF9NQVgpKTsKKyAgICAgICAgaWYgKHJ2ID09IC0xKSB7CisgICAgICAgICAgICAvKiBidWZmZXIgaXMgZnVsbCwgdHJ5IGFnYWluICovCisgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIGl0J3MgYSByZWFsIGVycm9yICovCisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgLyogd3JvdGUgcnYgYnl0ZXMgKi8KKyAgICAgICAgc2VsZi0+b2NvdW50ICs9IHJ2OworICAgICAgICBzaXplIC09IHJ2OworICAgICAgICBjcCArPSBydjsKICAgICB9CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYyBiL01vZHVsZXMvcGFyc2VybW9kdWxlLmMKaW5kZXggMzZlOTg5My4uNjQ3MWI4ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYworKysgYi9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jCkBAIC0yMyw2ICsyMywxMSBAQAogICogIHRoYXQgbGludCBkZXRlY3RzIGFyZSBnb25lLCBidXQgdGhlcmUgYXJlIHN0aWxsIHdhcm5pbmdzIHdpdGgKICAqICBQeV9bWF1ERUNSRUYoKSBhbmQgUHlfW1hdSU5DUkVGKCkgbWFjcm9zLiAgVGhlIGxpbnQgYW5ub3RhdGlvbnMKICAqICBsb29rIGxpa2UgIk5PVEUoLi4uKSIuCisgKgorICogIFRvIGRlYnVnIHBhcnNlciBlcnJvcnMgbGlrZQorICogICAgICAicGFyc2VyLlBhcnNlckVycm9yOiBFeHBlY3RlZCBub2RlIHR5cGUgMTIsIGdvdCAzMzMuIgorICogIGRlY29kZSBzeW1ib2wgbnVtYmVycyB1c2luZyB0aGUgYXV0b21hdGljYWxseS1nZW5lcmF0ZWQgZmlsZXMKKyAqICBMaWIvc3ltYm9sLmggYW5kIEluY2x1ZGUvdG9rZW4uaC4KICAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiICAgICAgICAgICAgICAgICAgICAgLyogZ2VuZXJhbCBQeXRob24gQVBJICAgICAgICAgICAgICovCkBAIC0zOTIsNyArMzk3LDcgQEAKIHsKICAgICBQeV9zc2l6ZV90IHJlczsKIAotICAgIHJlcyA9IHNpemVvZihQeVNUX09iamVjdCkgKyBfUHlOb2RlX1NpemVPZihzdC0+c3Rfbm9kZSk7CisgICAgcmVzID0gX1B5T2JqZWN0X1NJWkUoUHlfVFlQRShzdCkpICsgX1B5Tm9kZV9TaXplT2Yoc3QtPnN0X25vZGUpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzKTsKIH0KIApAQCAtMTAzNiw2ICsxMDQxLDggQEAKIFZBTElEQVRFUihvcl90ZXN0KTsKIFZBTElEQVRFUih0ZXN0X25vY29uZCk7ICAgICAgICAgVkFMSURBVEVSKGxhbWJkZWZfbm9jb25kKTsKIFZBTElEQVRFUih5aWVsZF9hcmcpOworVkFMSURBVEVSKGFzeW5jX2Z1bmNkZWYpOyAgICAgICBWQUxJREFURVIoYXN5bmNfc3RtdCk7CitWQUxJREFURVIoYXRvbV9leHByKTsKIAogI3VuZGVmIFZBTElEQVRFUgogCkBAIC0xMDg3LDMwICsxMDk0LDU2IEBACiAgICAgcmV0dXJuIChyZXMpOwogfQogCi0KLS8qICBYICgnLCcgWCkgWycsJ10KLSAqLworLyogIFggKCcsJyBYKSBbJywnXSAqLwogc3RhdGljIGludAotdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3Qobm9kZSAqdHJlZSwgaW50IG50eXBlLCBpbnQgKCp2ZnVuYykobm9kZSAqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0IG5hbWUpCit2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdF92YXJpYWJsZShub2RlICp0cmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpc3Rfbm9kZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqdmFsaWRhdGVfY2hpbGRfZnVuY19pbmMpKG5vZGUgKiwgaW50ICopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb25zdCBsaXN0X25vZGVfdHlwZV9uYW1lKQogewogICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IChuY2ggJiYgdmFsaWRhdGVfbnR5cGUodHJlZSwgbnR5cGUpCi0gICAgICAgICAgICAgICAmJiB2ZnVuYyhDSElMRCh0cmVlLCAwKSkpOworICAgIGludCByZXMgPSAobmNoICYmIHZhbGlkYXRlX250eXBlKHRyZWUsIGxpc3Rfbm9kZV90eXBlKSk7CiAKLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsIG5hbWUpOworICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIC8qIFVuY29uZGl0aW9uYWxseSByYWlzZS4gKi8KKyAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsIGxpc3Rfbm9kZV90eXBlX25hbWUpOworICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgaWYgKGlzX2V2ZW4obmNoKSkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIC0tbmNoKSk7Ci0gICAgICAgIGlmIChyZXMgJiYgbmNoID4gMSkgewotICAgICAgICAgICAgaW50IHBvcyA9IDE7Ci0gICAgICAgICAgICBmb3IgKCA7IHJlcyAmJiBwb3MgPCBuY2g7IHBvcyArPSAyKQotICAgICAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBwb3MpKQotICAgICAgICAgICAgICAgICAgICAgICAmJiB2ZnVuYyhDSElMRCh0cmVlLCBwb3MgKyAxKSkpOworICAgICAgICBmb3IgKCA7IHJlcyAmJiAqcG9zIDwgbmNoOyApIHsKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NoaWxkX2Z1bmNfaW5jKHRyZWUsIHBvcyk7CisgICAgICAgICAgICBpZiAoIXJlcyB8fCAqcG9zID49IG5jaCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsICgqcG9zKSsrKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIChyZXMpOworICAgIHJldHVybiByZXM7Cit9CisKKy8qICBYICgnLCcgWCkgWycsJ10gKi8KK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX3JlcGVhdGluZ19saXN0KG5vZGUgKnRyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGlzdF9ub2RlX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCp2YWxpZGF0ZV9jaGlsZF9mdW5jKShub2RlICopLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29uc3QgbGlzdF9ub2RlX3R5cGVfbmFtZSkKK3sKKyAgICBpbnQgbmNoID0gTkNIKHRyZWUpOworICAgIGludCByZXMgPSAobmNoICYmIHZhbGlkYXRlX250eXBlKHRyZWUsIGxpc3Rfbm9kZV90eXBlKSk7CisgICAgaW50IHBvcyA9IDA7CisKKyAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAvKiBVbmNvbmRpdGlvbmFsbHkgcmFpc2UuICovCisgICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCBsaXN0X25vZGVfdHlwZV9uYW1lKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoIDsgcmVzICYmIHBvcyA8IG5jaDsgKSB7CisgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jaGlsZF9mdW5jKENISUxEKHRyZWUsIHBvcysrKSk7CisgICAgICAgICAgICBpZiAoIXJlcyB8fCBwb3MgPj0gbmNoKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgcG9zKyspKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzOwogfQogCiAKQEAgLTE1NzcsNiArMTYxMCw3IEBACiAgICAgICAgICAgfHwgKG50eXBlID09IHRyeV9zdG10KQogICAgICAgICAgIHx8IChudHlwZSA9PSB3aXRoX3N0bXQpCiAgICAgICAgICAgfHwgKG50eXBlID09IGZ1bmNkZWYpCisgICAgICAgICAgfHwgKG50eXBlID09IGFzeW5jX3N0bXQpCiAgICAgICAgICAgfHwgKG50eXBlID09IGNsYXNzZGVmKQogICAgICAgICAgIHx8IChudHlwZSA9PSBkZWNvcmF0ZWQpKQogICAgICAgICByZXMgPSB2YWxpZGF0ZV9ub2RlKHRyZWUpOwpAQCAtMjQwOSwyNyArMjQ0Myw2MCBAQAogCiAvKiAgcG93ZXI6CiAgKgotICogIHBvd2VyOiBhdG9tIHRyYWlsZXIqICgnKionIGZhY3RvcikqCisgKiAgcG93ZXI6IGF0b21fZXhwciB0cmFpbGVyKiBbJyoqJyBmYWN0b3JdCiAgKi8KIHN0YXRpYyBpbnQKIHZhbGlkYXRlX3Bvd2VyKG5vZGUgKnRyZWUpCiB7Ci0gICAgaW50IHBvcyA9IDE7CiAgICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKICAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHBvd2VyKSAmJiAobmNoID49IDEpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9hdG9tKENISUxEKHRyZWUsIDApKSk7CisgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9hdG9tX2V4cHIoQ0hJTEQodHJlZSwgMCkpKTsKIAotICAgIHdoaWxlIChyZXMgJiYgKHBvcyA8IG5jaCkgJiYgKFRZUEUoQ0hJTEQodHJlZSwgcG9zKSkgPT0gdHJhaWxlcikpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3RyYWlsZXIoQ0hJTEQodHJlZSwgcG9zKyspKTsKLSAgICBpZiAocmVzICYmIChwb3MgPCBuY2gpKSB7Ci0gICAgICAgIGlmICghaXNfZXZlbihuY2ggLSBwb3MpKSB7CisgICAgaWYgKG5jaCA+IDEpIHsKKyAgICAgICAgaWYgKG5jaCAhPSAzKSB7CiAgICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIG51bWJlciBvZiBub2RlcyBmb3IgJ3Bvd2VyJyIpOwogICAgICAgICAgICAgcmV0dXJuICgwKTsKICAgICAgICAgfQotICAgICAgICBmb3IgKCA7IHJlcyAmJiAocG9zIDwgKG5jaCAtIDEpKTsgcG9zICs9IDIpCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfZG91Ymxlc3RhcihDSElMRCh0cmVlLCBwb3MpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2ZhY3RvcihDSElMRCh0cmVlLCBwb3MgKyAxKSkpOworICAgICAgICByZXMgPSAodmFsaWRhdGVfZG91Ymxlc3RhcihDSElMRCh0cmVlLCAxKSkKKyAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2ZhY3RvcihDSElMRCh0cmVlLCAyKSkpOwogICAgIH0KKworICAgIHJldHVybiAocmVzKTsKK30KKworCisvKiAgYXRvbV9leHByOgorICoKKyAqICBhdG9tX2V4cHI6IFtBV0FJVF0gYXRvbSB0cmFpbGVyKgorICovCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9hdG9tX2V4cHIobm9kZSAqdHJlZSkKK3sKKyAgICBpbnQgc3RhcnQgPSAwOworICAgIGludCBuY2ggPSBOQ0godHJlZSk7CisgICAgaW50IHJlczsKKyAgICBpbnQgcG9zOworCisgICAgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgYXRvbV9leHByKSAmJiAobmNoID49IDEpOworICAgIGlmICghcmVzKSB7CisgICAgICAgIHJldHVybiAocmVzKTsKKyAgICB9CisKKyAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gQVdBSVQpIHsKKyAgICAgICAgc3RhcnQgPSAxOworICAgICAgICBpZiAobmNoIDwgMikgeworICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2Ygbm9kZXMgZm9yICdhdG9tX2V4cHInIik7CisgICAgICAgICAgICByZXR1cm4gKDApOworICAgICAgICB9CisgICAgfQorCisgICAgcmVzID0gdmFsaWRhdGVfYXRvbShDSElMRCh0cmVlLCBzdGFydCkpOworICAgIGlmIChyZXMpIHsKKyAgICAgICAgcG9zID0gc3RhcnQgKyAxOworICAgICAgICB3aGlsZSAocmVzICYmIChwb3MgPCBuY2gpICYmIChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IHRyYWlsZXIpKQorICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdHJhaWxlcihDSElMRCh0cmVlLCBwb3MrKykpOworICAgIH0KKwogICAgIHJldHVybiAocmVzKTsKIH0KIApAQCAtMjQ5MywzOSArMjU2MCwyOCBAQAogCiAKIC8qICB0ZXN0bGlzdF9jb21wOgotICogICAgdGVzdCAoIGNvbXBfZm9yIHwgKCcsJyB0ZXN0KSogWycsJ10gKQorICogICAgKHRlc3R8c3Rhcl9leHByKSAoIGNvbXBfZm9yIHwgKCcsJyAodGVzdHxzdGFyX2V4cHIpKSogWycsJ10gKQogICovCiBzdGF0aWMgaW50CiB2YWxpZGF0ZV90ZXN0bGlzdF9jb21wKG5vZGUgKnRyZWUpCiB7CiAgICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgb2sgPSBuY2g7CisgICAgaW50IG9rOwogCi0gICAgaWYgKG5jaCA9PSAwKQorICAgIGlmIChuY2ggPT0gMCkgewogICAgICAgICBlcnJfc3RyaW5nKCJtaXNzaW5nIGNoaWxkIG5vZGVzIG9mIHRlc3RsaXN0X2NvbXAiKTsKLSAgICBlbHNlIHsKLSAgICAgICAgb2sgPSB2YWxpZGF0ZV90ZXN0X29yX3N0YXJfZXhwcihDSElMRCh0cmVlLCAwKSk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIC8qCi0gICAgICogIGNvbXBfZm9yIHwgKCcsJyB0ZXN0KSogWycsJ10KLSAgICAgKi8KLSAgICBpZiAobmNoID09IDIgJiYgVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gY29tcF9mb3IpCi0gICAgICAgIG9rID0gdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgMSkpOworICAgIGlmIChuY2ggPT0gMiAmJiBUWVBFKENISUxEKHRyZWUsIDEpKSA9PSBjb21wX2ZvcikgeworICAgICAgICBvayA9ICh2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKQorICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIDEpKSk7CisgICAgfQogICAgIGVsc2UgewotICAgICAgICAvKiAgKCcsJyB0ZXN0KSogWycsJ10gICovCi0gICAgICAgIGludCBpID0gMTsKLSAgICAgICAgd2hpbGUgKG9rICYmIG5jaCAtIGkgPj0gMikgewotICAgICAgICAgICAgb2sgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgaSkpCi0gICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0X29yX3N0YXJfZXhwcihDSElMRCh0cmVlLCBpKzEpKSk7Ci0gICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG9rICYmIGkgPT0gbmNoLTEpCi0gICAgICAgICAgICBvayA9IHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGkpKTsKLSAgICAgICAgZWxzZSBpZiAoaSAhPSBuY2gpIHsKLSAgICAgICAgICAgIG9rID0gMDsKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgdHJhaWxpbmcgbm9kZXMgZm9yIHRlc3RsaXN0X2NvbXAiKTsKLSAgICAgICAgfQorICAgICAgICBvayA9IHZhbGlkYXRlX3JlcGVhdGluZ19saXN0KHRyZWUsCisgICAgICAgICAgICAgICAgdGVzdGxpc3RfY29tcCwKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZV90ZXN0X29yX3N0YXJfZXhwciwKKyAgICAgICAgICAgICAgICAidGVzdGxpc3RfY29tcCIpOwogICAgIH0KICAgICByZXR1cm4gb2s7CiB9CkBAIC0yNjM4LDYgKzI2OTQsNTUgQEAKICAgICByZXR1cm4gcmVzOwogfQogCisvKiBhc3luY19mdW5jZGVmOiBBU1lOQyBmdW5jZGVmICovCisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX2FzeW5jX2Z1bmNkZWYobm9kZSAqdHJlZSkKK3sKKyAgICBpbnQgbmNoID0gTkNIKHRyZWUpOworICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBhc3luY19mdW5jZGVmKTsKKyAgICBpZiAocmVzKSB7CisgICAgICAgIGlmIChuY2ggPT0gMikgeworICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDApLCBBU1lOQykKKyAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9mdW5jZGVmKENISUxEKHRyZWUsIDEpKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXMgPSAwOworICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yIGFzeW5jX2Z1bmNkZWYiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzOworfQorCisKKy8qIGFzeW5jX3N0bXQ6IEFTWU5DIChmdW5jZGVmIHwgd2l0aF9zdG10IHwgZm9yX3N0bXQpICovCisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX2FzeW5jX3N0bXQobm9kZSAqdHJlZSkKK3sKKyAgICBpbnQgbmNoID0gTkNIKHRyZWUpOworICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgYXN5bmNfc3RtdCkKKyAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAwKSwgQVNZTkMpKTsKKworICAgIGlmIChuY2ggIT0gMikgeworICAgICAgICByZXMgPSAwOworICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIG51bWJlciBvZiBjaGlsZHJlbiBmb3IgYXN5bmNfc3RtdCIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChUWVBFKENISUxEKHRyZWUsIDEpKSA9PSBmdW5jZGVmKSB7CisgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9mdW5jZGVmKENISUxEKHRyZWUsIDEpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChUWVBFKENISUxEKHRyZWUsIDEpKSA9PSB3aXRoX3N0bXQpIHsKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3dpdGhfc3RtdChDSElMRCh0cmVlLCAxKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gZm9yX3N0bXQpIHsKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ZvcihDSElMRCh0cmVlLCAxKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmVzOworfQorCisKIAogLyogZGVjb3JhdGVkCiAgKiAgIGRlY29yYXRvcnMgKGNsYXNzZGVmIHwgZnVuY2RlZikKQEAgLTI3MzIsOSArMjgzNyw2IEBACiAgICAgfQogICAgIG9rID0gMTsKICAgICBpZiAobmNoLWkgPiAwKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIGFyZ3VtZW50IHwgJyonIHRlc3QgWycsJyAnKionIHRlc3RdIHwgJyoqJyB0ZXN0Ci0gICAgICAgICAqLwogICAgICAgICBpbnQgc3ltID0gVFlQRShDSElMRCh0cmVlLCBpKSk7CiAKICAgICAgICAgaWYgKHN5bSA9PSBhcmd1bWVudCkgewpAQCAtMjc0NSwzMCArMjg0Nyw3IEBACiAgICAgICAgICAgICAgICAgb2sgPSAwOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHN5bSA9PSBTVEFSKSB7Ci0gICAgICAgICAgICBvayA9IHZhbGlkYXRlX3N0YXIoQ0hJTEQodHJlZSwgaSkpOwotICAgICAgICAgICAgaWYgKG9rICYmIChuY2gtaSA9PSAyKSkKLSAgICAgICAgICAgICAgICBvayA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsxKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChvayAmJiAobmNoLWkgPT0gNSkpCi0gICAgICAgICAgICAgICAgb2sgPSAodmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBpKzEpKQotICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGkrMikpCi0gICAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZG91Ymxlc3RhcihDSElMRCh0cmVlLCBpKzMpKQotICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSs0KSkpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCB1c2Ugb2YgJyonIGluIGFyZ2xpc3QiKTsKLSAgICAgICAgICAgICAgICBvayA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoc3ltID09IERPVUJMRVNUQVIpIHsKLSAgICAgICAgICAgIGlmIChuY2gtaSA9PSAyKQotICAgICAgICAgICAgICAgIG9rID0gKHZhbGlkYXRlX2RvdWJsZXN0YXIoQ0hJTEQodHJlZSwgaSkpCi0gICAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBpKzEpKSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIHVzZSBvZiAnKionIGluIGFyZ2xpc3QiKTsKLSAgICAgICAgICAgICAgICBvayA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7CisgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGFyZ2xpc3Qgc3BlY2lmaWNhdGlvbiIpOwogICAgICAgICAgICAgb2sgPSAwOwogICAgICAgICB9CkBAIC0yNzc4LDkgKzI4NTcsMTAgQEAKIAogCiAKLS8qICBhcmd1bWVudDoKLSAqCi0gKiAgW3Rlc3QgJz0nXSB0ZXN0IFtjb21wX2Zvcl0KKy8qICBhcmd1bWVudDogKCB0ZXN0IFtjb21wX2Zvcl0gfAorICogICAgICAgICAgICAgIHRlc3QgJz0nIHRlc3QgfAorICogICAgICAgICAgICAgICcqKicgdGVzdCB8CisgKiAgICAgICAgICAgICAgJyonIHRlc3QgKQogICovCiBzdGF0aWMgaW50CiB2YWxpZGF0ZV9hcmd1bWVudChub2RlICp0cmVlKQpAQCAtMjc4OCwxNCArMjg2OCwyNyBAQAogICAgIGludCBuY2ggPSBOQ0godHJlZSk7CiAgICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBhcmd1bWVudCkKICAgICAgICAgICAgICAgICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikgfHwgKG5jaCA9PSAzKSkpOwotICAgIGlmIChyZXMpIAotICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKTsKLSAgICBpZiAocmVzICYmIChuY2ggPT0gMikpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIDEpKTsKLSAgICBlbHNlIGlmIChyZXMgJiYgKG5jaCA9PSAzKSkKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2VxdWFsKENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAyKSkpOwogCisgICAgaWYgKHJlcykgeworICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gRE9VQkxFU1RBUikgeworICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gU1RBUikgeworICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobmNoID09IDEpIHsKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG5jaCA9PSAyKSB7CisgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgMSkpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChyZXMgJiYgKG5jaCA9PSAzKSkgeworICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpCisgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2VxdWFsKENISUxEKHRyZWUsIDEpKQorICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDIpKSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIChyZXMpOwogfQogCkBAIC0yOTQ4LDExICszMDQxLDQ0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9leHByX29yX3N0YXJfZXhwciwgImV4cHJsaXN0IikpOwogfQogCisvKiBJbmNyZW1lbnRpbmcgdmFsaWRhdGUgZnVuY3Rpb25zIHJldHVybnMgbm9uemVybyBpZmYgc3VjY2VzcyAobGlrZSBvdGhlcgorICogdmFsaWRhdGUgZnVuY3Rpb25zLCBhbmQgYWR2YW5jZSAqaSBieSB0aGUgbGVuZ3RoIG9mIHRoZSBtYXRjaGVkIHBhdHRlcm4uICovCisKKy8qIHRlc3QgJzonIHRlc3QgKi8KK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX3Rlc3RfY29sb25fdGVzdF9pbmMobm9kZSAqdHJlZSwgaW50ICppKQoreworICAgIHJldHVybiAodmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAoKmkpKyspKQorICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgKCppKSsrKSkKKyAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgKCppKSsrKSkpOworfQorCisvKiB0ZXN0ICc6JyB0ZXN0IHwgJyoqJyBleHByICovCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9kaWN0X2VsZW1lbnRfaW5jKG5vZGUgKnRyZWUsIGludCAqaSkKK3sKKyAgICBpbnQgbmNoID0gTkNIKHRyZWUpOworICAgIGludCByZXMgPSAwOworICAgIGlmIChuY2ggLSAqaSA+PSAyKSB7CisgICAgICAgIGlmIChUWVBFKENISUxEKHRyZWUsICppKzEpKSA9PSBDT0xPTikgeworICAgICAgICAgICAgLyogdGVzdCAnOicgdGVzdCAqLworICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdF9jb2xvbl90ZXN0X2luYyh0cmVlLCBpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qICcqKicgZXhwciAqLworICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2RvdWJsZXN0YXIoQ0hJTEQodHJlZSwgKCppKSsrKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZXhwcihDSElMRCh0cmVlLCAoKmkpKyspKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKwogLyoKICAqICBkaWN0b3JzZXRtYWtlcjoKICAqCi0gKiAgKHRlc3QgJzonIHRlc3QgKGNvbXBfZm9yIHwgKCcsJyB0ZXN0ICc6JyB0ZXN0KSogWycsJ10pKSB8Ci0gKiAgKHRlc3QgKGNvbXBfZm9yIHwgKCcsJyB0ZXN0KSogWycsJ10pKQorICogICAoICgodGVzdCAnOicgdGVzdCB8ICcqKicgZXhwcikKKyAqICAgICAgKGNvbXBfZm9yIHwgKCcsJyAodGVzdCAnOicgdGVzdCB8ICcqKicgZXhwcikpKiBbJywnXSkpIHwKKyAqICAgICAoKHRlc3QgfCAnKicgdGVzdCkKKyAqICAgICAgKGNvbXBfZm9yIHwgKCcsJyAodGVzdCB8ICcqJyB0ZXN0KSkqIFsnLCddKSkgKQogICovCiBzdGF0aWMgaW50CiB2YWxpZGF0ZV9kaWN0b3JzZXRtYWtlcihub2RlICp0cmVlKQpAQCAtMjk2Niw2NSArMzA5Miw0NCBAQAogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChuY2ggLSBpIDwgMSkgeworICAgICAgICAvKiBVbmNvbmRpdGlvbmFsbHkgcmFpc2UuICovCiAgICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAiZGljdG9yc2V0bWFrZXIiKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBpKyspKTsKLSAgICBpZiAoIXJlcykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAobmNoIC0gaSA+PSAyICYmIFRZUEUoQ0hJTEQodHJlZSwgaSkpID09IENPTE9OKSB7CisgICAgaWYgKG5jaCAtIGkgPj0gMgorICAgICAgICAmJiAoKFRZUEUoQ0hJTEQodHJlZSwgaSsxKSkgPT0gQ09MT04pIHx8CisgICAgICAgICAgICAoVFlQRShDSElMRCh0cmVlLCBpKSkgPT0gRE9VQkxFU1RBUikpKSB7CiAgICAgICAgIC8qIERpY3Rpb25hcnkgZGlzcGxheSBvciBkaWN0aW9uYXJ5IGNvbXByZWhlbnNpb24uICovCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBpKyspKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBpKyspKSk7Ci0gICAgICAgIGlmICghcmVzKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAgICAgaWYgKG5jaCAtIGkgPj0gMSAmJiBUWVBFKENISUxEKHRyZWUsIGkpKSA9PSBjb21wX2ZvcikgeworICAgICAgICBpZiAobmNoIC0gaSA+PSA0ICYmIFRZUEUoQ0hJTEQodHJlZSwgaSszKSkgPT0gY29tcF9mb3IpIHsKICAgICAgICAgICAgIC8qIERpY3Rpb25hcnkgY29tcHJlaGVuc2lvbi4gKi8KLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIGkrKykpOworICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3Rlc3RfY29sb25fdGVzdF9pbmModHJlZSwgJmkpCisgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIGkrKykpKTsKICAgICAgICAgICAgIGlmICghcmVzKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLyogRGljdGlvbmFyeSBkaXNwbGF5LiAqLwotICAgICAgICAgICAgd2hpbGUgKG5jaCAtIGkgPj0gNCkgewotICAgICAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBpKyspKQotICAgICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGkrKykpCi0gICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIGkrKykpCi0gICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsrKSkpOwotICAgICAgICAgICAgICAgIGlmICghcmVzKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChuY2ggLSBpID09IDEpIHsKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBpKyspKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3RfdmFyaWFibGUoCisgICAgICAgICAgICAgICAgICAgIHRyZWUsCisgICAgICAgICAgICAgICAgICAgIGRpY3RvcnNldG1ha2VyLAorICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9kaWN0X2VsZW1lbnRfaW5jLAorICAgICAgICAgICAgICAgICAgICAmaSwKKyAgICAgICAgICAgICAgICAgICAgImRpY3RvcnNldG1ha2VyIik7CiAgICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7CisgICAgfSBlbHNlIHsKICAgICAgICAgLyogU2V0IGRpc3BsYXkgb3Igc2V0IGNvbXByZWhlbnNpb24uICovCi0gICAgICAgIGlmIChuY2ggLSBpID49IDEgJiYgVFlQRShDSElMRCh0cmVlLCBpKSkgPT0gY29tcF9mb3IpIHsKKyAgICAgICAgaWYgKG5jaCAtIGkgPj0gMiAmJiBUWVBFKENISUxEKHRyZWUsIGkgKyAxKSkgPT0gY29tcF9mb3IpIHsKICAgICAgICAgICAgIC8qIFNldCBjb21wcmVoZW5zaW9uLiAqLwotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgaSsrKSk7CisgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBpKyspKQorICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIGkrKykpKTsKICAgICAgICAgICAgIGlmICghcmVzKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLyogU2V0IGRpc3BsYXkuICovCi0gICAgICAgICAgICB3aGlsZSAobmNoIC0gaSA+PSAyKSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGkrKykpCi0gICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsrKSkpOwotICAgICAgICAgICAgICAgIGlmICghcmVzKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChuY2ggLSBpID09IDEpIHsKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBpKyspKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdCh0cmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdG9yc2V0bWFrZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV90ZXN0X29yX3N0YXJfZXhwciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaWN0b3JzZXRtYWtlciIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMDY4LDYgKzMxNzMsMTIgQEAKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiAgRGVmaW5pdGlvbiBub2Rlcy4KICAgICAgICAgICAgICAqLworICAgICAgICAgIGNhc2UgYXN5bmNfZnVuY2RlZjoKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2FzeW5jX2Z1bmNkZWYodHJlZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIGFzeW5jX3N0bXQ6CisgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hc3luY19zdG10KHRyZWUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSBmdW5jZGVmOgogICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZnVuY2RlZih0cmVlKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9wb3NpeG1vZHVsZS5jIGIvTW9kdWxlcy9wb3NpeG1vZHVsZS5jCmluZGV4IDdjOTM3ZTAuLmU0YjI3YTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcG9zaXhtb2R1bGUuYworKysgYi9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMKQEAgLTYsNyArNiw3IEBACiAgICBmdW5jdGlvbnMgYXJlIGVpdGhlciB1bmltcGxlbWVudGVkIG9yIGltcGxlbWVudGVkIGRpZmZlcmVudGx5LiAgVGhlIHNvdXJjZQogICAgYXNzdW1lcyB0aGF0IGZvciBXaW5kb3dzIE5ULCB0aGUgbWFjcm8gJ01TX1dJTkRPV1MnIGlzIGRlZmluZWQgaW5kZXBlbmRlbnQKICAgIG9mIHRoZSBjb21waWxlciB1c2VkLiAgRGlmZmVyZW50IGNvbXBpbGVycyBkZWZpbmUgdGhlaXIgb3duIGZlYXR1cmUKLSAgIHRlc3QgbWFjcm8sIGUuZy4gJ19fQk9STEFORENfXycgb3IgJ19NU0NfVkVSJy4gKi8KKyAgIHRlc3QgbWFjcm8sIGUuZy4gJ19NU0NfVkVSJy4gKi8KIAogCiAKQEAgLTI1LDggKzI1LDExIEBACiAjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2lmbmRlZiBNU19XSU5ET1dTCiAjaW5jbHVkZSAicG9zaXhtb2R1bGUuaCIKKyNlbHNlCisjaW5jbHVkZSAid2lucmVwYXJzZS5oIgogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpAQCAtMTQxLDEzICsxNDQsNiBAQAogI2RlZmluZSBIQVZFX1NZU1RFTSAgICAgMQogI2luY2x1ZGUgPHByb2Nlc3MuaD4KICNlbHNlCi0jaWZkZWYgX19CT1JMQU5EQ19fICAgICAgICAgICAgIC8qIEJvcmxhbmQgY29tcGlsZXIgKi8KLSNkZWZpbmUgSEFWRV9FWEVDViAgICAgIDEKLSNkZWZpbmUgSEFWRV9PUEVORElSICAgIDEKLSNkZWZpbmUgSEFWRV9QSVBFICAgICAgIDEKLSNkZWZpbmUgSEFWRV9TWVNURU0gICAgIDEKLSNkZWZpbmUgSEFWRV9XQUlUICAgICAgIDEKLSNlbHNlCiAjaWZkZWYgX01TQ19WRVIgICAgICAgICAvKiBNaWNyb3NvZnQgY29tcGlsZXIgKi8KICNkZWZpbmUgSEFWRV9HRVRQUElEICAgIDEKICNkZWZpbmUgSEFWRV9HRVRMT0dJTiAgIDEKQEAgLTE3NywxNCArMTczLDE0IEBACiAjZGVmaW5lIEhBVkVfV0FJVCAgICAgICAxCiAjZGVmaW5lIEhBVkVfVFRZTkFNRSAgICAxCiAjZW5kaWYgIC8qIF9NU0NfVkVSICovCi0jZW5kaWYgIC8qIF9fQk9STEFORENfXyAqLwogI2VuZGlmICAvKiAhIF9fV0FUQ09NQ19fIHx8IF9fUU5YX18gKi8KIAogCiAvKltjbGluaWMgaW5wdXRdCisjIG9uZSBvZiB0aGUgZmV3IHRpbWVzIHdlIGxpZSBhYm91dCB0aGlzIG5hbWUhCiBtb2R1bGUgb3MKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PThjZmYwOTZkMTEzMzI4OGZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTk0YTBmMGY5NzhhY2FlMTddKi8KIAogI2lmbmRlZiBfTVNDX1ZFUgogCkBAIC0yMTEsMTEgKzIwNyw3IEBACiBleHRlcm4gaW50IGNoZGlyKGNvbnN0IGNoYXIgKik7CiBleHRlcm4gaW50IHJtZGlyKGNvbnN0IGNoYXIgKik7CiAjZW5kaWYKLSNpZmRlZiBfX0JPUkxBTkRDX18KLWV4dGVybiBpbnQgY2htb2QoY29uc3QgY2hhciAqLCBpbnQpOwotI2Vsc2UKIGV4dGVybiBpbnQgY2htb2QoY29uc3QgY2hhciAqLCBtb2RlX3QpOwotI2VuZGlmCiAvKiNpZmRlZiBIQVZFX0ZDSE1PRAogZXh0ZXJuIGludCBmY2htb2QoaW50LCBtb2RlX3QpOwogI2VuZGlmKi8KQEAgLTMwMSw2ICsyOTMsOSBAQAogI2lmbmRlZiBJT19SRVBBUlNFX1RBR19TWU1MSU5LCiAjZGVmaW5lIElPX1JFUEFSU0VfVEFHX1NZTUxJTksgKDB4QTAwMDAwMENMKQogI2VuZGlmCisjaWZuZGVmIElPX1JFUEFSU0VfVEFHX01PVU5UX1BPSU5UCisjZGVmaW5lIElPX1JFUEFSU0VfVEFHX01PVU5UX1BPSU5UICgweEEwMDAwMDAzTCkKKyNlbmRpZgogI2luY2x1ZGUgIm9zZGVmcy5oIgogI2luY2x1ZGUgPG1hbGxvYy5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KQEAgLTM1Niw4ICszNTEsOCBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICMgICAgICAgZGVmaW5lIFNUQVQgd2luMzJfc3RhdAogIyAgICAgICBkZWZpbmUgTFNUQVQgd2luMzJfbHN0YXQKLSMgICAgICAgZGVmaW5lIEZTVEFUIHdpbjMyX2ZzdGF0Ci0jICAgICAgIGRlZmluZSBTVFJVQ1RfU1RBVCBzdHJ1Y3Qgd2luMzJfc3RhdAorIyAgICAgICBkZWZpbmUgRlNUQVQgX1B5X2ZzdGF0X25vcmFpc2UKKyMgICAgICAgZGVmaW5lIFNUUlVDVF9TVEFUIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QKICNlbHNlCiAjICAgICAgIGRlZmluZSBTVEFUIHN0YXQKICMgICAgICAgZGVmaW5lIExTVEFUIGxzdGF0CkBAIC0zNzgsNiArMzczLDIwIEBACiAKICNkZWZpbmUgRFdPUkRfTUFYIDQyOTQ5NjcyOTVVCiAKKyNpZmRlZiBNU19XSU5ET1dTCisjZGVmaW5lIElOSVRGVU5DIFB5SW5pdF9udAorI2RlZmluZSBNT0ROQU1FICJudCIKKyNlbHNlCisjZGVmaW5lIElOSVRGVU5DIFB5SW5pdF9wb3NpeAorI2RlZmluZSBNT0ROQU1FICJwb3NpeCIKKyNlbmRpZgorCisjaWZkZWYgTVNfV0lORE9XUworLyogZGVmaW5lZCBpbiBmaWxldXRpbHMuYyAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlfdGltZV90X3RvX0ZJTEVfVElNRSh0aW1lX3QsIGludCwgRklMRVRJTUUgKik7CitQeUFQSV9GVU5DKHZvaWQpIF9QeV9hdHRyaWJ1dGVfZGF0YV90b19zdGF0KEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVMT05HLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICopOworI2VuZGlmCiAKICNpZmRlZiBNU19XSU5ET1dTCiBzdGF0aWMgaW50CkBAIC03MDEsNyArNzEwLDYgQEAKIH0KIAogCi0KIC8qCiAgKiBBIFB5QXJnX1BhcnNlVHVwbGUgImNvbnZlcnRlciIgZnVuY3Rpb24KICAqIHRoYXQgaGFuZGxlcyBmaWxlc3lzdGVtIHBhdGhzIGluIHRoZSBtYW5uZXIKQEAgLTc5Nyw4ICs4MDUsOCBAQAogICAgIFB5T2JqZWN0ICpjbGVhbnVwOwogfSBwYXRoX3Q7CiAKLSNkZWZpbmUgUEFUSF9UX0lOSVRJQUxJWkUoZnVuY3Rpb25fbmFtZSwgbnVsbGFibGUsIGFsbG93X2ZkKSBcCi0gICAge2Z1bmN0aW9uX25hbWUsIE5VTEwsIG51bGxhYmxlLCBhbGxvd19mZCwgTlVMTCwgTlVMTCwgMCwgMCwgTlVMTCwgTlVMTH0KKyNkZWZpbmUgUEFUSF9UX0lOSVRJQUxJWkUoZnVuY3Rpb25fbmFtZSwgYXJndW1lbnRfbmFtZSwgbnVsbGFibGUsIGFsbG93X2ZkKSBcCisgICAge2Z1bmN0aW9uX25hbWUsIGFyZ3VtZW50X25hbWUsIG51bGxhYmxlLCBhbGxvd19mZCwgTlVMTCwgTlVMTCwgLTEsIDAsIE5VTEwsIE5VTEx9CiAKIHN0YXRpYyB2b2lkCiBwYXRoX2NsZWFudXAocGF0aF90ICpwYXRoKSB7CkBAIC04NTksNyArODY3LDcgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIGlmICh3Y3NsZW4od2lkZSkgIT0gbGVuZ3RoKSB7Ci0gICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1R5cGVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CisgICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOwogICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KQEAgLTkyNSw4ICs5MzMsOCBAQAogI2VuZGlmCiAKICAgICBuYXJyb3cgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyk7Ci0gICAgaWYgKGxlbmd0aCAhPSBzdHJsZW4obmFycm93KSkgewotICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBOVUwgY2hhcmFjdGVyIGluICVzIik7CisgICAgaWYgKChzaXplX3QpbGVuZ3RoICE9IHN0cmxlbihuYXJyb3cpKSB7CisgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIGluICVzIik7CiAgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTEwMjcsOTcgKzEwMzUsNDYgQEAKICAgICByZXR1cm4gMDsKIH0KIAotLyogQSBoZWxwZXIgdXNlZCBieSBhIG51bWJlciBvZiBQT1NJWC1vbmx5IGZ1bmN0aW9ucyAqLwotI2lmbmRlZiBNU19XSU5ET1dTCi1zdGF0aWMgaW50Ci1fcGFyc2Vfb2ZmX3QoUHlPYmplY3QqIGFyZywgdm9pZCogYWRkcikKLXsKLSNpZiAhZGVmaW5lZChIQVZFX0xBUkdFRklMRV9TVVBQT1JUKQotICAgICooKG9mZl90KilhZGRyKSA9IFB5TG9uZ19Bc0xvbmcoYXJnKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgdHlwZWRlZiBQWV9MT05HX0xPTkcgUHlfb2ZmX3Q7CiAjZWxzZQotICAgICooKG9mZl90KilhZGRyKSA9IFB5TG9uZ19Bc0xvbmdMb25nKGFyZyk7CisgICAgdHlwZWRlZiBvZmZfdCBQeV9vZmZfdDsKKyNlbmRpZgorCitzdGF0aWMgaW50CitQeV9vZmZfdF9jb252ZXJ0ZXIoUHlPYmplY3QgKmFyZywgdm9pZCAqYWRkcikKK3sKKyNpZmRlZiBIQVZFX0xBUkdFRklMRV9TVVBQT1JUCisgICAgKigoUHlfb2ZmX3QgKilhZGRyKSA9IFB5TG9uZ19Bc0xvbmdMb25nKGFyZyk7CisjZWxzZQorICAgICooKFB5X29mZl90ICopYWRkcikgPSBQeUxvbmdfQXNMb25nKGFyZyk7CiAjZW5kaWYKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIDE7CiB9Ci0jZW5kaWYKIAotI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMAotLyogTWljcm9zb2Z0IENSVCBpbiBWUzIwMDUgYW5kIGhpZ2hlciB3aWxsIHZlcmlmeSB0aGF0IGEgZmlsZWhhbmRsZSBpcwotICogdmFsaWQgYW5kIHJhaXNlIGFuIGFzc2VydGlvbiBpZiBpdCBpc24ndC4KLSAqIE5vcm1hbGx5LCBhbiBpbnZhbGlkIGZkIGlzIGxpa2VseSB0byBiZSBhIEMgcHJvZ3JhbSBlcnJvciBhbmQgdGhlcmVmb3JlCi0gKiBhbiBhc3NlcnRpb24gY2FuIGJlIHVzZWZ1bCwgYnV0IGl0IGRvZXMgY29udHJhZGljdCB0aGUgUE9TSVggc3RhbmRhcmQKLSAqIHdoaWNoIGZvciB3cml0ZSgyKSBzdGF0ZXM6Ci0gKiAgICAiT3RoZXJ3aXNlLCAtMSBzaGFsbCBiZSByZXR1cm5lZCBhbmQgZXJybm8gc2V0IHRvIGluZGljYXRlIHRoZSBlcnJvci4iCi0gKiAgICAiW0VCQURGXSBUaGUgZmlsZGVzIGFyZ3VtZW50IGlzIG5vdCBhIHZhbGlkIGZpbGUgZGVzY3JpcHRvciBvcGVuIGZvcgotICogICAgIHdyaXRpbmcuIgotICogRnVydGhlcm1vcmUsIHB5dGhvbiBhbGxvd3MgdGhlIHVzZXIgdG8gZW50ZXIgYW55IG9sZCBpbnRlZ2VyCi0gKiBhcyBhIGZkIGFuZCBzaG91bGQgbWVyZWx5IHJhaXNlIGEgcHl0aG9uIGV4Y2VwdGlvbiBvbiBlcnJvci4KLSAqIFRoZSBNaWNyb3NvZnQgQ1JUIGRvZXNuJ3QgcHJvdmlkZSBhbiBvZmZpY2lhbCB3YXkgdG8gY2hlY2sgZm9yIHRoZQotICogdmFsaWRpdHkgb2YgYSBmaWxlIGRlc2NyaXB0b3IsIGJ1dCB3ZSBjYW4gZW11bGF0ZSBpdHMgaW50ZXJuYWwgYmVoYXZpb3VyCi0gKiBieSB1c2luZyB0aGUgZXhwb3J0ZWQgX19waW5mbyBkYXRhIG1lbWJlciBhbmQga25vd2xlZGdlIG9mIHRoZQotICogaW50ZXJuYWwgc3RydWN0dXJlcyBpbnZvbHZlZC4KLSAqIFRoZSBzdHJ1Y3R1cmVzIGJlbG93IG11c3QgYmUgdXBkYXRlZCBmb3IgZWFjaCB2ZXJzaW9uIG9mIHZpc3VhbCBzdHVkaW8KLSAqIGFjY29yZGluZyB0byB0aGUgZmlsZSBpbnRlcm5hbC5oIGluIHRoZSBDUlQgc291cmNlLCB1bnRpbCBNUyBjb21lcwotICogdXAgd2l0aCBhIGxlc3MgaGFja3kgd2F5IHRvIGRvIHRoaXMuCi0gKiAoYWxsIG9mIHRoaXMgaXMgdG8gYXZvaWQgZ2xvYmFsbHkgbW9kaWZ5aW5nIHRoZSBDUlQgYmVoYXZpb3VyIHVzaW5nCi0gKiBfc2V0X2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIoKSBhbmQgX0NydFNldFJlcG9ydE1vZGUoKSkKLSAqLwotLyogVGhlIGFjdHVhbCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaXMgZGV0ZXJtaW5lZCBhdCBydW50aW1lLgotICogT25seSB0aGUgZmlyc3QgaXRlbXMgbXVzdCBiZSBwcmVzZW50LgotICovCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgaW50cHRyX3Qgb3NmaG5kOwotICAgIGNoYXIgb3NmaWxlOwotfSBteV9pb2luZm87Ci0KLWV4dGVybiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY2hhciAqIF9fcGlvaW5mb1tdOwotI2RlZmluZSBJT0lORk9fTDJFIDUKLSNkZWZpbmUgSU9JTkZPX0FSUkFZX0VMVFMgICAoMSA8PCBJT0lORk9fTDJFKQotI2RlZmluZSBJT0lORk9fQVJSQVlTIDY0Ci0jZGVmaW5lIF9OSEFORExFXyAgICAgICAgICAgKElPSU5GT19BUlJBWVMgKiBJT0lORk9fQVJSQVlfRUxUUykKLSNkZWZpbmUgRk9QRU4gMHgwMQotI2RlZmluZSBfTk9fQ09OU09MRV9GSUxFTk8gKGludHB0cl90KS0yCi0KLS8qIFRoaXMgZnVuY3Rpb24gZW11bGF0ZXMgd2hhdCB0aGUgd2luZG93cyBDUlQgZG9lcyB0byB2YWxpZGF0ZSBmaWxlIGhhbmRsZXMgKi8KLWludAotX1B5VmVyaWZ5X2ZkKGludCBmZCkKK3N0YXRpYyBQeU9iamVjdCAqCitQeUxvbmdfRnJvbVB5X29mZl90KFB5X29mZl90IG9mZnNldCkKIHsKLSAgICBjb25zdCBpbnQgaTEgPSBmZCA+PiBJT0lORk9fTDJFOwotICAgIGNvbnN0IGludCBpMiA9IGZkICYgKCgxIDw8IElPSU5GT19MMkUpIC0gMSk7Ci0KLSAgICBzdGF0aWMgc2l6ZV90IHNpemVvZl9pb2luZm8gPSAwOwotCi0gICAgLyogRGV0ZXJtaW5lIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgaW9pbmZvIHN0cnVjdHVyZSwKLSAgICAgKiBhcyB1c2VkIGJ5IHRoZSBDUlQgbG9hZGVkIGluIG1lbW9yeQotICAgICAqLwotICAgIGlmIChzaXplb2ZfaW9pbmZvID09IDAgJiYgX19waW9pbmZvWzBdICE9IE5VTEwpIHsKLSAgICAgICAgc2l6ZW9mX2lvaW5mbyA9IF9tc2l6ZShfX3Bpb2luZm9bMF0pIC8gSU9JTkZPX0FSUkFZX0VMVFM7Ci0gICAgfQotICAgIGlmIChzaXplb2ZfaW9pbmZvID09IDApIHsKLSAgICAgICAgLyogVGhpcyBzaG91bGQgbm90IGhhcHBlbi4uLiAqLwotICAgICAgICBnb3RvIGZhaWw7Ci0gICAgfQotCi0gICAgLyogU2VlIHRoYXQgaXQgaXNuJ3QgYSBzcGVjaWFsIENMRUFSIGZpbGVubyAqLwotICAgIGlmIChmZCAhPSBfTk9fQ09OU09MRV9GSUxFTk8pIHsKLSAgICAgICAgLyogTWljcm9zb2Z0IENSVCB3b3VsZCBjaGVjayB0aGF0IDA8PWZkPF9uaGFuZGxlIGJ1dCB3ZSBjYW4ndCBkbyB0aGF0LiAgSW5zdGVhZAotICAgICAgICAgKiB3ZSBjaGVjayBwb2ludGVyIHZhbGlkaXR5IGFuZCBvdGhlciBpbmZvCi0gICAgICAgICAqLwotICAgICAgICBpZiAoMCA8PSBpMSAmJiBpMSA8IElPSU5GT19BUlJBWVMgJiYgX19waW9pbmZvW2kxXSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAvKiBmaW5hbGx5LCBjaGVjayB0aGF0IHRoZSBmaWxlIGlzIG9wZW4gKi8KLSAgICAgICAgICAgIG15X2lvaW5mbyogaW5mbyA9IChteV9pb2luZm8qKShfX3Bpb2luZm9baTFdICsgaTIgKiBzaXplb2ZfaW9pbmZvKTsKLSAgICAgICAgICAgIGlmIChpbmZvLT5vc2ZpbGUgJiBGT1BFTikgewotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICBmYWlsOgotICAgIGVycm5vID0gRUJBREY7Ci0gICAgcmV0dXJuIDA7CisjaWZkZWYgSEFWRV9MQVJHRUZJTEVfU1VQUE9SVAorICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKG9mZnNldCk7CisjZWxzZQorICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob2Zmc2V0KTsKKyNlbmRpZgogfQogCisKKyNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgX01TQ19WRVIgPCAxOTAwCisvKiBMZWdhY3kgaW1wbGVtZW50YXRpb24gb2YgX1B5VmVyaWZ5X2ZkX2R1cDIgd2hpbGUgdHJhbnNpdGlvbmluZyB0bworICogTVNWQyAxNC4wLiBUaGlzIHNob3VsZCBldmVudHVhbGx5IGJlIHJlbW92ZWQuIChpc3N1ZTIzNTI0KQorICovCisjZGVmaW5lIElPSU5GT19MMkUgNQorI2RlZmluZSBJT0lORk9fQVJSQVlTIDY0CisjZGVmaW5lIElPSU5GT19BUlJBWV9FTFRTICAgKDEgPDwgSU9JTkZPX0wyRSkKKyNkZWZpbmUgX05IQU5ETEVfICAgICAgICAgICAoSU9JTkZPX0FSUkFZUyAqIElPSU5GT19BUlJBWV9FTFRTKQorI2RlZmluZSBfTk9fQ09OU09MRV9GSUxFTk8gKGludHB0cl90KS0yCisKIC8qIHRoZSBzcGVjaWFsIGNhc2Ugb2YgY2hlY2tpbmcgZHVwMi4gIFRoZSB0YXJnZXQgZmQgbXVzdCBiZSBpbiBhIHNlbnNpYmxlIHJhbmdlICovCiBzdGF0aWMgaW50CiBfUHlWZXJpZnlfZmRfZHVwMihpbnQgZmQxLCBpbnQgZmQyKQpAQCAtMTEzMiw0NiArMTA4OSwxMCBAQAogICAgICAgICByZXR1cm4gMDsKIH0KICNlbHNlCi0vKiBkdW1teSB2ZXJzaW9uLiBfUHlWZXJpZnlfZmQoKSBpcyBhbHJlYWR5IGRlZmluZWQgaW4gZmlsZW9iamVjdC5oICovCi0jZGVmaW5lIF9QeVZlcmlmeV9mZF9kdXAyKEEsIEIpICgxKQorI2RlZmluZSBfUHlWZXJpZnlfZmRfZHVwMihmZDEsIGZkMikgKF9QeVZlcmlmeV9mZChmZDEpICYmIChmZDIpID49IDApCiAjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKLS8qIFRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIHdhcyBjb3BpZWQgZnJvbQotICAgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNzkxNTE0LmFzcHggYXMgdGhlIHJlcXVpcmVkCi0gICBpbmNsdWRlIGRvZXNuJ3Qgc2VlbSB0byBiZSBwcmVzZW50IGluIHRoZSBXaW5kb3dzIFNESyAoYXQgbGVhc3QgYXMgaW5jbHVkZWQKLSAgIHdpdGggVmlzdWFsIFN0dWRpbyBFeHByZXNzKS4gKi8KLXR5cGVkZWYgc3RydWN0IF9SRVBBUlNFX0RBVEFfQlVGRkVSIHsKLSAgICBVTE9ORyBSZXBhcnNlVGFnOwotICAgIFVTSE9SVCBSZXBhcnNlRGF0YUxlbmd0aDsKLSAgICBVU0hPUlQgUmVzZXJ2ZWQ7Ci0gICAgdW5pb24gewotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgVVNIT1JUIFN1YnN0aXR1dGVOYW1lT2Zmc2V0OwotICAgICAgICAgICAgVVNIT1JUIFN1YnN0aXR1dGVOYW1lTGVuZ3RoOwotICAgICAgICAgICAgVVNIT1JUIFByaW50TmFtZU9mZnNldDsKLSAgICAgICAgICAgIFVTSE9SVCBQcmludE5hbWVMZW5ndGg7Ci0gICAgICAgICAgICBVTE9ORyBGbGFnczsKLSAgICAgICAgICAgIFdDSEFSIFBhdGhCdWZmZXJbMV07Ci0gICAgICAgIH0gU3ltYm9saWNMaW5rUmVwYXJzZUJ1ZmZlcjsKLQotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgVVNIT1JUIFN1YnN0aXR1dGVOYW1lT2Zmc2V0OwotICAgICAgICAgICAgVVNIT1JUICBTdWJzdGl0dXRlTmFtZUxlbmd0aDsKLSAgICAgICAgICAgIFVTSE9SVCAgUHJpbnROYW1lT2Zmc2V0OwotICAgICAgICAgICAgVVNIT1JUICBQcmludE5hbWVMZW5ndGg7Ci0gICAgICAgICAgICBXQ0hBUiAgUGF0aEJ1ZmZlclsxXTsKLSAgICAgICAgfSBNb3VudFBvaW50UmVwYXJzZUJ1ZmZlcjsKLQotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgVUNIQVIgIERhdGFCdWZmZXJbMV07Ci0gICAgICAgIH0gR2VuZXJpY1JlcGFyc2VCdWZmZXI7Ci0gICAgfTsKLX0gUkVQQVJTRV9EQVRBX0JVRkZFUiwgKlBSRVBBUlNFX0RBVEFfQlVGRkVSOwotCi0jZGVmaW5lIFJFUEFSU0VfREFUQV9CVUZGRVJfSEVBREVSX1NJWkUgIEZJRUxEX09GRlNFVChSRVBBUlNFX0RBVEFfQlVGRkVSLFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyaWNSZXBhcnNlQnVmZmVyKQotI2RlZmluZSBNQVhJTVVNX1JFUEFSU0VfREFUQV9CVUZGRVJfU0laRSAgKCAxNiAqIDEwMjQgKQogCiBzdGF0aWMgaW50CiB3aW4zMl9nZXRfcmVwYXJzZV90YWcoSEFORExFIHJlcGFyc2VfcG9pbnRfaGFuZGxlLCBVTE9ORyAqcmVwYXJzZV90YWcpCkBAIC0xMzU2LDQ3ICsxMjc3LDM3IEBACiAKIC8qIFBPU0lYIGdlbmVyaWMgbWV0aG9kcyAqLwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZmlsZGVzKFB5T2JqZWN0ICpmZG9iaiwgaW50ICgqZnVuYykoaW50KSkKK3N0YXRpYyBpbnQKK2ZpbGRlc19jb252ZXJ0ZXIoUHlPYmplY3QgKm8sIHZvaWQgKnApCiB7CiAgICAgaW50IGZkOwotICAgIGludCByZXM7Ci0gICAgZmQgPSBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yKGZkb2JqKTsKKyAgICBpbnQgKnBvaW50ZXIgPSAoaW50ICopcDsKKyAgICBmZCA9IFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3Iobyk7CiAgICAgaWYgKGZkIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gKCpmdW5jKShmZCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICByZXR1cm4gMDsKKyAgICAqcG9pbnRlciA9IGZkOworICAgIHJldHVybiAxOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfMXN0cihjb25zdCBjaGFyICpmdW5jX25hbWUsIFB5T2JqZWN0ICphcmdzLCBjaGFyICpmb3JtYXQsCi0gICAgICAgICAgIGludCAoKmZ1bmMpKGNvbnN0IGNoYXIqKSkKK3Bvc2l4X2ZpbGRlc19mZChpbnQgZmQsIGludCAoKmZ1bmMpKGludCkpCiB7Ci0gICAgcGF0aF90IHBhdGg7CiAgICAgaW50IHJlczsKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gZnVuY19uYW1lOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSAoKmZ1bmMpKHBhdGgubmFycm93KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgIHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CisKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgcmVzID0gKCpmdW5jKShmZCk7CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmVzICE9IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChyZXMgIT0gMCkKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IHBvc2l4X2Vycm9yKCkgOiBOVUxMOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAKQEAgLTE0MzQsMTYgKzEzNDUsMTYgQEAKIHN0YXRpYyBCT09MIF9fc3RkY2FsbAogd2luMzJfd2NoZGlyKExQQ1dTVFIgcGF0aCkKIHsKLSAgICB3Y2hhcl90IF9uZXdfcGF0aFtNQVhfUEFUSF0sICpuZXdfcGF0aCA9IF9uZXdfcGF0aDsKKyAgICB3Y2hhcl90IHBhdGhfYnVmW01BWF9QQVRIXSwgKm5ld19wYXRoID0gcGF0aF9idWY7CiAgICAgaW50IHJlc3VsdDsKICAgICB3Y2hhcl90IGVudls0XSA9IEwiPXg6IjsKIAogICAgIGlmKCFTZXRDdXJyZW50RGlyZWN0b3J5VyhwYXRoKSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgIHJlc3VsdCA9IEdldEN1cnJlbnREaXJlY3RvcnlXKFB5X0FSUkFZX0xFTkdUSChuZXdfcGF0aCksIG5ld19wYXRoKTsKKyAgICByZXN1bHQgPSBHZXRDdXJyZW50RGlyZWN0b3J5VyhQeV9BUlJBWV9MRU5HVEgocGF0aF9idWYpLCBuZXdfcGF0aCk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICBpZiAocmVzdWx0ID4gUHlfQVJSQVlfTEVOR1RIKG5ld19wYXRoKSkgeworICAgIGlmIChyZXN1bHQgPiBQeV9BUlJBWV9MRU5HVEgocGF0aF9idWYpKSB7CiAgICAgICAgIG5ld19wYXRoID0gUHlNZW1fUmF3TWFsbG9jKHJlc3VsdCAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgICAgIGlmICghbmV3X3BhdGgpIHsKICAgICAgICAgICAgIFNldExhc3RFcnJvcihFUlJPUl9PVVRPRk1FTU9SWSk7CkBAIC0xNDYxLDcgKzEzNzIsNyBAQAogICAgICAgICByZXR1cm4gVFJVRTsKICAgICBlbnZbMV0gPSBuZXdfcGF0aFswXTsKICAgICByZXN1bHQgPSBTZXRFbnZpcm9ubWVudFZhcmlhYmxlVyhlbnYsIG5ld19wYXRoKTsKLSAgICBpZiAobmV3X3BhdGggIT0gX25ld19wYXRoKQorICAgIGlmIChuZXdfcGF0aCAhPSBwYXRoX2J1ZikKICAgICAgICAgUHlNZW1fUmF3RnJlZShuZXdfcGF0aCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE0NzUsODkgKzEzODYsNyBAQAogICAgVGhlcmVmb3JlLCB3ZSBpbXBsZW1lbnQgb3VyIG93biBzdGF0LCBiYXNlZCBvbiB0aGUgV2luMzIgQVBJIGRpcmVjdGx5LgogKi8KICNkZWZpbmUgSEFWRV9TVEFUX05TRUMgMQotCi1zdHJ1Y3Qgd2luMzJfc3RhdHsKLSAgICB1bnNpZ25lZCBsb25nIHN0X2RldjsKLSAgICBfX2ludDY0IHN0X2lubzsKLSAgICB1bnNpZ25lZCBzaG9ydCBzdF9tb2RlOwotICAgIGludCBzdF9ubGluazsKLSAgICBpbnQgc3RfdWlkOwotICAgIGludCBzdF9naWQ7Ci0gICAgdW5zaWduZWQgbG9uZyBzdF9yZGV2OwotICAgIF9faW50NjQgc3Rfc2l6ZTsKLSAgICB0aW1lX3Qgc3RfYXRpbWU7Ci0gICAgaW50IHN0X2F0aW1lX25zZWM7Ci0gICAgdGltZV90IHN0X210aW1lOwotICAgIGludCBzdF9tdGltZV9uc2VjOwotICAgIHRpbWVfdCBzdF9jdGltZTsKLSAgICBpbnQgc3RfY3RpbWVfbnNlYzsKLX07Ci0KLXN0YXRpYyBfX2ludDY0IHNlY3NfYmV0d2Vlbl9lcG9jaHMgPSAxMTY0NDQ3MzYwMDsgLyogU2Vjb25kcyBiZXR3ZWVuIDEuMS4xNjAxIGFuZCAxLjEuMTk3MCAqLwotCi1zdGF0aWMgdm9pZAotRklMRV9USU1FX3RvX3RpbWVfdF9uc2VjKEZJTEVUSU1FICppbl9wdHIsIHRpbWVfdCAqdGltZV9vdXQsIGludCogbnNlY19vdXQpCi17Ci0gICAgLyogWFhYIGVuZGlhbm5lc3MuIFNob3VsZG4ndCBtYXR0ZXIsIGFzIGFsbCBXaW5kb3dzIGltcGxlbWVudGF0aW9ucyBhcmUgbGl0dGxlLWVuZGlhbiAqLwotICAgIC8qIENhbm5vdCBzaW1wbHkgY2FzdCBhbmQgZGVyZWZlcmVuY2UgaW5fcHRyLAotICAgICAgIHNpbmNlIGl0IG1pZ2h0IG5vdCBiZSBhbGlnbmVkIHByb3Blcmx5ICovCi0gICAgX19pbnQ2NCBpbjsKLSAgICBtZW1jcHkoJmluLCBpbl9wdHIsIHNpemVvZihpbikpOwotICAgICpuc2VjX291dCA9IChpbnQpKGluICUgMTAwMDAwMDApICogMTAwOyAvKiBGSUxFVElNRSBpcyBpbiB1bml0cyBvZiAxMDAgbnNlYy4gKi8KLSAgICAqdGltZV9vdXQgPSBQeV9TQUZFX0RPV05DQVNUKChpbiAvIDEwMDAwMDAwKSAtIHNlY3NfYmV0d2Vlbl9lcG9jaHMsIF9faW50NjQsIHRpbWVfdCk7Ci19Ci0KLXN0YXRpYyB2b2lkCi10aW1lX3RfdG9fRklMRV9USU1FKHRpbWVfdCB0aW1lX2luLCBpbnQgbnNlY19pbiwgRklMRVRJTUUgKm91dF9wdHIpCi17Ci0gICAgLyogWFhYIGVuZGlhbm5lc3MgKi8KLSAgICBfX2ludDY0IG91dDsKLSAgICBvdXQgPSB0aW1lX2luICsgc2Vjc19iZXR3ZWVuX2Vwb2NoczsKLSAgICBvdXQgPSBvdXQgKiAxMDAwMDAwMCArIG5zZWNfaW4gLyAxMDA7Ci0gICAgbWVtY3B5KG91dF9wdHIsICZvdXQsIHNpemVvZihvdXQpKTsKLX0KLQotLyogQmVsb3csIHdlICprbm93KiB0aGF0IHVnbytyIGlzIDA0NDQgKi8KLSNpZiBfU19JUkVBRCAhPSAwNDAwCi0jZXJyb3IgVW5zdXBwb3J0ZWQgQyBsaWJyYXJ5Ci0jZW5kaWYKLXN0YXRpYyBpbnQKLWF0dHJpYnV0ZXNfdG9fbW9kZShEV09SRCBhdHRyKQotewotICAgIGludCBtID0gMDsKLSAgICBpZiAoYXR0ciAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKLSAgICAgICAgbSB8PSBfU19JRkRJUiB8IDAxMTE7IC8qIElGRVhFQyBmb3IgdXNlcixncm91cCxvdGhlciAqLwotICAgIGVsc2UKLSAgICAgICAgbSB8PSBfU19JRlJFRzsKLSAgICBpZiAoYXR0ciAmIEZJTEVfQVRUUklCVVRFX1JFQURPTkxZKQotICAgICAgICBtIHw9IDA0NDQ7Ci0gICAgZWxzZQotICAgICAgICBtIHw9IDA2NjY7Ci0gICAgcmV0dXJuIG07Ci19Ci0KLXN0YXRpYyBpbnQKLWF0dHJpYnV0ZV9kYXRhX3RvX3N0YXQoQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKmluZm8sIFVMT05HIHJlcGFyc2VfdGFnLCBzdHJ1Y3Qgd2luMzJfc3RhdCAqcmVzdWx0KQotewotICAgIG1lbXNldChyZXN1bHQsIDAsIHNpemVvZigqcmVzdWx0KSk7Ci0gICAgcmVzdWx0LT5zdF9tb2RlID0gYXR0cmlidXRlc190b19tb2RlKGluZm8tPmR3RmlsZUF0dHJpYnV0ZXMpOwotICAgIHJlc3VsdC0+c3Rfc2l6ZSA9ICgoKF9faW50NjQpaW5mby0+bkZpbGVTaXplSGlnaCk8PDMyKSArIGluZm8tPm5GaWxlU2l6ZUxvdzsKLSAgICByZXN1bHQtPnN0X2RldiA9IGluZm8tPmR3Vm9sdW1lU2VyaWFsTnVtYmVyOwotICAgIHJlc3VsdC0+c3RfcmRldiA9IHJlc3VsdC0+c3RfZGV2OwotICAgIEZJTEVfVElNRV90b190aW1lX3RfbnNlYygmaW5mby0+ZnRDcmVhdGlvblRpbWUsICZyZXN1bHQtPnN0X2N0aW1lLCAmcmVzdWx0LT5zdF9jdGltZV9uc2VjKTsKLSAgICBGSUxFX1RJTUVfdG9fdGltZV90X25zZWMoJmluZm8tPmZ0TGFzdFdyaXRlVGltZSwgJnJlc3VsdC0+c3RfbXRpbWUsICZyZXN1bHQtPnN0X210aW1lX25zZWMpOwotICAgIEZJTEVfVElNRV90b190aW1lX3RfbnNlYygmaW5mby0+ZnRMYXN0QWNjZXNzVGltZSwgJnJlc3VsdC0+c3RfYXRpbWUsICZyZXN1bHQtPnN0X2F0aW1lX25zZWMpOwotICAgIHJlc3VsdC0+c3RfbmxpbmsgPSBpbmZvLT5uTnVtYmVyT2ZMaW5rczsKLSAgICByZXN1bHQtPnN0X2lubyA9ICgoKF9faW50NjQpaW5mby0+bkZpbGVJbmRleEhpZ2gpPDwzMikgKyBpbmZvLT5uRmlsZUluZGV4TG93OwotICAgIGlmIChyZXBhcnNlX3RhZyA9PSBJT19SRVBBUlNFX1RBR19TWU1MSU5LKSB7Ci0gICAgICAgIC8qIGZpcnN0IGNsZWFyIHRoZSBTX0lGTVQgYml0cyAqLwotICAgICAgICByZXN1bHQtPnN0X21vZGUgXj0gKHJlc3VsdC0+c3RfbW9kZSAmIFNfSUZNVCk7Ci0gICAgICAgIC8qIG5vdyBzZXQgdGhlIGJpdHMgdGhhdCBtYWtlIHRoaXMgYSBzeW1saW5rICovCi0gICAgICAgIHJlc3VsdC0+c3RfbW9kZSB8PSBTX0lGTE5LOwotICAgIH0KLQotICAgIHJldHVybiAwOwotfQorI2RlZmluZSBIQVZFX1NUUlVDVF9TVEFUX1NUX0ZJTEVfQVRUUklCVVRFUyAxCiAKIHN0YXRpYyBCT09MCiBhdHRyaWJ1dGVzX2Zyb21fZGlyKExQQ1NUUiBwc3pGaWxlLCBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiAqaW5mbywgVUxPTkcgKnJlcGFyc2VfdGFnKQpAQCAtMTU4Miw2ICsxNDExLDI1IEBACiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKK3N0YXRpYyB2b2lkCitmaW5kX2RhdGFfdG9fZmlsZV9pbmZvX3coV0lOMzJfRklORF9EQVRBVyAqcEZpbGVEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgIFVMT05HICpyZXBhcnNlX3RhZykKK3sKKyAgICBtZW1zZXQoaW5mbywgMCwgc2l6ZW9mKCppbmZvKSk7CisgICAgaW5mby0+ZHdGaWxlQXR0cmlidXRlcyA9IHBGaWxlRGF0YS0+ZHdGaWxlQXR0cmlidXRlczsKKyAgICBpbmZvLT5mdENyZWF0aW9uVGltZSAgID0gcEZpbGVEYXRhLT5mdENyZWF0aW9uVGltZTsKKyAgICBpbmZvLT5mdExhc3RBY2Nlc3NUaW1lID0gcEZpbGVEYXRhLT5mdExhc3RBY2Nlc3NUaW1lOworICAgIGluZm8tPmZ0TGFzdFdyaXRlVGltZSAgPSBwRmlsZURhdGEtPmZ0TGFzdFdyaXRlVGltZTsKKyAgICBpbmZvLT5uRmlsZVNpemVIaWdoICAgID0gcEZpbGVEYXRhLT5uRmlsZVNpemVIaWdoOworICAgIGluZm8tPm5GaWxlU2l6ZUxvdyAgICAgPSBwRmlsZURhdGEtPm5GaWxlU2l6ZUxvdzsKKy8qICBpbmZvLT5uTnVtYmVyT2ZMaW5rcyAgID0gMTsgKi8KKyAgICBpZiAocEZpbGVEYXRhLT5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVCkKKyAgICAgICAgKnJlcGFyc2VfdGFnID0gcEZpbGVEYXRhLT5kd1Jlc2VydmVkMDsKKyAgICBlbHNlCisgICAgICAgICpyZXBhcnNlX3RhZyA9IDA7Cit9CisKIHN0YXRpYyBCT09MCiBhdHRyaWJ1dGVzX2Zyb21fZGlyX3coTFBDV1NUUiBwc3pGaWxlLCBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiAqaW5mbywgVUxPTkcgKnJlcGFyc2VfdGFnKQogewpAQCAtMTU5MSw0NSArMTQzOSwxMCBAQAogICAgIGlmIChoRmluZEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICBGaW5kQ2xvc2UoaEZpbmRGaWxlKTsKLSAgICBtZW1zZXQoaW5mbywgMCwgc2l6ZW9mKCppbmZvKSk7Ci0gICAgKnJlcGFyc2VfdGFnID0gMDsKLSAgICBpbmZvLT5kd0ZpbGVBdHRyaWJ1dGVzID0gRmlsZURhdGEuZHdGaWxlQXR0cmlidXRlczsKLSAgICBpbmZvLT5mdENyZWF0aW9uVGltZSAgID0gRmlsZURhdGEuZnRDcmVhdGlvblRpbWU7Ci0gICAgaW5mby0+ZnRMYXN0QWNjZXNzVGltZSA9IEZpbGVEYXRhLmZ0TGFzdEFjY2Vzc1RpbWU7Ci0gICAgaW5mby0+ZnRMYXN0V3JpdGVUaW1lICA9IEZpbGVEYXRhLmZ0TGFzdFdyaXRlVGltZTsKLSAgICBpbmZvLT5uRmlsZVNpemVIaWdoICAgID0gRmlsZURhdGEubkZpbGVTaXplSGlnaDsKLSAgICBpbmZvLT5uRmlsZVNpemVMb3cgICAgID0gRmlsZURhdGEubkZpbGVTaXplTG93OwotLyogIGluZm8tPm5OdW1iZXJPZkxpbmtzICAgPSAxOyAqLwotICAgIGlmIChGaWxlRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVCkKLSAgICAgICAgKnJlcGFyc2VfdGFnID0gRmlsZURhdGEuZHdSZXNlcnZlZDA7CisgICAgZmluZF9kYXRhX3RvX2ZpbGVfaW5mb193KCZGaWxlRGF0YSwgaW5mbywgcmVwYXJzZV90YWcpOwogICAgIHJldHVybiBUUlVFOwogfQogCi0vKiBHcmFiIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSBkeW5hbWljYWxseSBmcm9tIGtlcm5lbDMyICovCi1zdGF0aWMgaW50IGhhc19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUgPSAtMTsKLXN0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcpKEhBTkRMRSwgTFBXU1RSLCBEV09SRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEKTsKLXN0YXRpYyBpbnQKLWNoZWNrX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSgpCi17Ci0gICAgSElOU1RBTkNFIGhLZXJuZWwzMjsKLSAgICBEV09SRCAoQ0FMTEJBQ0sgKlB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZUEpKEhBTkRMRSwgTFBTVFIsIERXT1JELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQpOwotCi0gICAgLyogb25seSByZWNoZWNrICovCi0gICAgaWYgKC0xID09IGhhc19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUpCi0gICAgewotICAgICAgICBoS2VybmVsMzIgPSBHZXRNb2R1bGVIYW5kbGVXKEwiS0VSTkVMMzIiKTsKLSAgICAgICAgKihGQVJQUk9DKikmUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlQSA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVBIik7Ci0gICAgICAgICooRkFSUFJPQyopJlB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcgPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyIpOwotICAgICAgICBoYXNfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlID0gUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlQSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVzsKLSAgICB9Ci0gICAgcmV0dXJuIGhhc19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGU7Ci19Ci0KIHN0YXRpYyBCT09MCiBnZXRfdGFyZ2V0X3BhdGgoSEFORExFIGhkbCwgd2NoYXJfdCAqKnRhcmdldF9wYXRoKQogewpAQCAtMTYzOCw4ICsxNDUxLDggQEAKIAogICAgIC8qIFdlIGhhdmUgYSBnb29kIGhhbmRsZSB0byB0aGUgdGFyZ2V0LCB1c2UgaXQgdG8gZGV0ZXJtaW5lCiAgICAgICAgdGhlIHRhcmdldCBwYXRoIG5hbWUgKHRoZW4gd2UnbGwgY2FsbCBsc3RhdCBvbiBpdCkuICovCi0gICAgYnVmX3NpemUgPSBQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhkbCwgMCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVk9MVU1FX05BTUVfRE9TKTsKKyAgICBidWZfc2l6ZSA9IEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoaGRsLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWT0xVTUVfTkFNRV9ET1MpOwogICAgIGlmKCFidWZfc2l6ZSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCkBAIC0xNjQ5LDcgKzE0NjIsNyBAQAogICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgfQogCi0gICAgcmVzdWx0X2xlbmd0aCA9IFB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoaGRsLAorICAgIHJlc3VsdF9sZW5ndGggPSBHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhkbCwKICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCBidWZfc2l6ZSwgVk9MVU1FX05BTUVfRE9TKTsKIAogICAgIGlmKCFyZXN1bHRfbGVuZ3RoKSB7CkBAIC0xNjY5LDEwICsxNDgyLDEwIEBACiB9CiAKIHN0YXRpYyBpbnQKLXdpbjMyX3hzdGF0X2ltcGxfdyhjb25zdCB3Y2hhcl90ICpwYXRoLCBzdHJ1Y3Qgd2luMzJfc3RhdCAqcmVzdWx0LAord2luMzJfeHN0YXRfaW1wbF93KGNvbnN0IHdjaGFyX3QgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwKICAgICAgICAgICAgICAgICAgICBCT09MIHRyYXZlcnNlKTsKIHN0YXRpYyBpbnQKLXdpbjMyX3hzdGF0X2ltcGwoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHdpbjMyX3N0YXQgKnJlc3VsdCwKK3dpbjMyX3hzdGF0X2ltcGwoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LAogICAgICAgICAgICAgICAgICBCT09MIHRyYXZlcnNlKQogewogICAgIGludCBjb2RlOwpAQCAtMTY4MiwxMiArMTQ5NSw2IEBACiAgICAgd2NoYXJfdCAqdGFyZ2V0X3BhdGg7CiAgICAgY29uc3QgY2hhciAqZG90OwogCi0gICAgaWYoIWNoZWNrX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSgpKSB7Ci0gICAgICAgIC8qIElmIHRoZSBPUyBkb2Vzbid0IGhhdmUgR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlLCBkb24ndAotICAgICAgICAgICB0cmF2ZXJzZSByZXBhcnNlIHBvaW50LiAqLwotICAgICAgICB0cmF2ZXJzZSA9IEZBTFNFOwotICAgIH0KLQogICAgIGhGaWxlID0gQ3JlYXRlRmlsZUEoCiAgICAgICAgIHBhdGgsCiAgICAgICAgIEZJTEVfUkVBRF9BVFRSSUJVVEVTLCAvKiBkZXNpcmVkIGFjY2VzcyAqLwpAQCAtMTc1NSw3ICsxNTYyLDcgQEAKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBDbG9zZUhhbmRsZShoRmlsZSk7CiAgICAgfQotICAgIGF0dHJpYnV0ZV9kYXRhX3RvX3N0YXQoJmluZm8sIHJlcGFyc2VfdGFnLCByZXN1bHQpOworICAgIF9QeV9hdHRyaWJ1dGVfZGF0YV90b19zdGF0KCZpbmZvLCByZXBhcnNlX3RhZywgcmVzdWx0KTsKIAogICAgIC8qIFNldCBTX0lFWEVDIGlmIGl0IGlzIGFuIC5leGUsIC5iYXQsIC4uLiAqLwogICAgIGRvdCA9IHN0cnJjaHIocGF0aCwgJy4nKTsKQEAgLTE3NjgsNyArMTU3NSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXdpbjMyX3hzdGF0X2ltcGxfdyhjb25zdCB3Y2hhcl90ICpwYXRoLCBzdHJ1Y3Qgd2luMzJfc3RhdCAqcmVzdWx0LAord2luMzJfeHN0YXRfaW1wbF93KGNvbnN0IHdjaGFyX3QgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwKICAgICAgICAgICAgICAgICAgICBCT09MIHRyYXZlcnNlKQogewogICAgIGludCBjb2RlOwpAQCAtMTc3OCwxMiArMTU4NSw2IEBACiAgICAgd2NoYXJfdCAqdGFyZ2V0X3BhdGg7CiAgICAgY29uc3Qgd2NoYXJfdCAqZG90OwogCi0gICAgaWYoIWNoZWNrX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSgpKSB7Ci0gICAgICAgIC8qIElmIHRoZSBPUyBkb2Vzbid0IGhhdmUgR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlLCBkb24ndAotICAgICAgICAgICB0cmF2ZXJzZSByZXBhcnNlIHBvaW50LiAqLwotICAgICAgICB0cmF2ZXJzZSA9IEZBTFNFOwotICAgIH0KLQogICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcoCiAgICAgICAgIHBhdGgsCiAgICAgICAgIEZJTEVfUkVBRF9BVFRSSUJVVEVTLCAvKiBkZXNpcmVkIGFjY2VzcyAqLwpAQCAtMTg1MSw3ICsxNjUyLDcgQEAKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBDbG9zZUhhbmRsZShoRmlsZSk7CiAgICAgfQotICAgIGF0dHJpYnV0ZV9kYXRhX3RvX3N0YXQoJmluZm8sIHJlcGFyc2VfdGFnLCByZXN1bHQpOworICAgIF9QeV9hdHRyaWJ1dGVfZGF0YV90b19zdGF0KCZpbmZvLCByZXBhcnNlX3RhZywgcmVzdWx0KTsKIAogICAgIC8qIFNldCBTX0lFWEVDIGlmIGl0IGlzIGFuIC5leGUsIC5iYXQsIC4uLiAqLwogICAgIGRvdCA9IHdjc3JjaHIocGF0aCwgJy4nKTsKQEAgLTE4NjQsNyArMTY2NSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXdpbjMyX3hzdGF0KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCB3aW4zMl9zdGF0ICpyZXN1bHQsIEJPT0wgdHJhdmVyc2UpCit3aW4zMl94c3RhdChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQsIEJPT0wgdHJhdmVyc2UpCiB7CiAgICAgLyogUHJvdG9jb2wgdmlvbGF0aW9uOiB3ZSBleHBsaWNpdGx5IGNsZWFyIGVycm5vLCBpbnN0ZWFkIG9mCiAgICAgICAgc2V0dGluZyBpdCB0byBhIFBPU0lYIGVycm9yLiBDYWxsZXJzIHNob3VsZCB1c2UgR2V0TGFzdEVycm9yLiAqLwpAQCAtMTg3NCw3ICsxNjc1LDcgQEAKIH0KIAogc3RhdGljIGludAotd2luMzJfeHN0YXRfdyhjb25zdCB3Y2hhcl90ICpwYXRoLCBzdHJ1Y3Qgd2luMzJfc3RhdCAqcmVzdWx0LCBCT09MIHRyYXZlcnNlKQord2luMzJfeHN0YXRfdyhjb25zdCB3Y2hhcl90ICpwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQsIEJPT0wgdHJhdmVyc2UpCiB7CiAgICAgLyogUHJvdG9jb2wgdmlvbGF0aW9uOiB3ZSBleHBsaWNpdGx5IGNsZWFyIGVycm5vLCBpbnN0ZWFkIG9mCiAgICAgICAgc2V0dGluZyBpdCB0byBhIFBPU0lYIGVycm9yLiBDYWxsZXJzIHNob3VsZCB1c2UgR2V0TGFzdEVycm9yLiAqLwpAQCAtMTg5Niw4MCArMTY5NywyOSBAQAogICAgVGhlIF93IHJlcHJlc2VudCBVbmljb2RlIGVxdWl2YWxlbnRzIG9mIHRoZSBhZm9yZW1lbnRpb25lZCBBTlNJIGZ1bmN0aW9ucy4gKi8KIAogc3RhdGljIGludAotd2luMzJfbHN0YXQoY29uc3QgY2hhciogcGF0aCwgc3RydWN0IHdpbjMyX3N0YXQgKnJlc3VsdCkKK3dpbjMyX2xzdGF0KGNvbnN0IGNoYXIqIHBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCkKIHsKICAgICByZXR1cm4gd2luMzJfeHN0YXQocGF0aCwgcmVzdWx0LCBGQUxTRSk7CiB9CiAKIHN0YXRpYyBpbnQKLXdpbjMyX2xzdGF0X3coY29uc3Qgd2NoYXJfdCogcGF0aCwgc3RydWN0IHdpbjMyX3N0YXQgKnJlc3VsdCkKK3dpbjMyX2xzdGF0X3coY29uc3Qgd2NoYXJfdCogcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0KQogewogICAgIHJldHVybiB3aW4zMl94c3RhdF93KHBhdGgsIHJlc3VsdCwgRkFMU0UpOwogfQogCiBzdGF0aWMgaW50Ci13aW4zMl9zdGF0KGNvbnN0IGNoYXIqIHBhdGgsIHN0cnVjdCB3aW4zMl9zdGF0ICpyZXN1bHQpCit3aW4zMl9zdGF0KGNvbnN0IGNoYXIqIHBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCkKIHsKICAgICByZXR1cm4gd2luMzJfeHN0YXQocGF0aCwgcmVzdWx0LCBUUlVFKTsKIH0KIAogc3RhdGljIGludAotd2luMzJfc3RhdF93KGNvbnN0IHdjaGFyX3QqIHBhdGgsIHN0cnVjdCB3aW4zMl9zdGF0ICpyZXN1bHQpCit3aW4zMl9zdGF0X3coY29uc3Qgd2NoYXJfdCogcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0KQogewogICAgIHJldHVybiB3aW4zMl94c3RhdF93KHBhdGgsIHJlc3VsdCwgVFJVRSk7CiB9CiAKLXN0YXRpYyBpbnQKLXdpbjMyX2ZzdGF0KGludCBmaWxlX251bWJlciwgc3RydWN0IHdpbjMyX3N0YXQgKnJlc3VsdCkKLXsKLSAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBpbmZvOwotICAgIEhBTkRMRSBoOwotICAgIGludCB0eXBlOwotCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmlsZV9udW1iZXIpKQotICAgICAgICBoID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Ci0gICAgZWxzZQotICAgICAgICBoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlX251bWJlcik7Ci0KLSAgICAvKiBQcm90b2NvbCB2aW9sYXRpb246IHdlIGV4cGxpY2l0bHkgY2xlYXIgZXJybm8sIGluc3RlYWQgb2YKLSAgICAgICBzZXR0aW5nIGl0IHRvIGEgUE9TSVggZXJyb3IuIENhbGxlcnMgc2hvdWxkIHVzZSBHZXRMYXN0RXJyb3IuICovCi0gICAgZXJybm8gPSAwOwotCi0gICAgaWYgKGggPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgLyogVGhpcyBpcyByZWFsbHkgYSBDIGxpYnJhcnkgZXJyb3IgKGludmFsaWQgZmlsZSBoYW5kbGUpLgotICAgICAgICAgICBXZSBzZXQgdGhlIFdpbjMyIGVycm9yIHRvIHRoZSBjbG9zZXMgb25lIG1hdGNoaW5nLiAqLwotICAgICAgICBTZXRMYXN0RXJyb3IoRVJST1JfSU5WQUxJRF9IQU5ETEUpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIG1lbXNldChyZXN1bHQsIDAsIHNpemVvZigqcmVzdWx0KSk7Ci0KLSAgICB0eXBlID0gR2V0RmlsZVR5cGUoaCk7Ci0gICAgaWYgKHR5cGUgPT0gRklMRV9UWVBFX1VOS05PV04pIHsKLSAgICAgICAgRFdPUkQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKLSAgICAgICAgaWYgKGVycm9yICE9IDApIHsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICAvKiBlbHNlOiB2YWxpZCBidXQgdW5rbm93biBmaWxlICovCi0gICAgfQotCi0gICAgaWYgKHR5cGUgIT0gRklMRV9UWVBFX0RJU0spIHsKLSAgICAgICAgaWYgKHR5cGUgPT0gRklMRV9UWVBFX0NIQVIpCi0gICAgICAgICAgICByZXN1bHQtPnN0X21vZGUgPSBfU19JRkNIUjsKLSAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBGSUxFX1RZUEVfUElQRSkKLSAgICAgICAgICAgIHJlc3VsdC0+c3RfbW9kZSA9IF9TX0lGSUZPOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoIUdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGgsICZpbmZvKSkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgYXR0cmlidXRlX2RhdGFfdG9fc3RhdCgmaW5mbywgMCwgcmVzdWx0KTsKLSAgICAvKiBzcGVjaWZpYyB0byBmc3RhdCgpICovCi0gICAgcmVzdWx0LT5zdF9pbm8gPSAoKChfX2ludDY0KWluZm8ubkZpbGVJbmRleEhpZ2gpPDwzMikgKyBpbmZvLm5GaWxlSW5kZXhMb3c7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIFB5RG9jX1NUUlZBUihzdGF0X3Jlc3VsdF9fZG9jX18sCkBAIC0yMDE5LDYgKzE3NjksOSBAQAogI2lmZGVmIEhBVkVfU1RSVUNUX1NUQVRfU1RfQklSVEhUSU1FCiAgICAgeyJzdF9iaXJ0aHRpbWUiLCAgICJ0aW1lIG9mIGNyZWF0aW9uIn0sCiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0ZJTEVfQVRUUklCVVRFUworICAgIHsic3RfZmlsZV9hdHRyaWJ1dGVzIiwgIldpbmRvd3MgZmlsZSBhdHRyaWJ1dGUgYml0cyJ9LAorI2VuZGlmCiAgICAgezB9CiB9OwogCkBAIC0yMDU4LDYgKzE4MTEsMTIgQEAKICNkZWZpbmUgU1RfQklSVEhUSU1FX0lEWCBTVF9HRU5fSURYCiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU1RSVUNUX1NUQVRfU1RfRklMRV9BVFRSSUJVVEVTCisjZGVmaW5lIFNUX0ZJTEVfQVRUUklCVVRFU19JRFggKFNUX0JJUlRIVElNRV9JRFgrMSkKKyNlbHNlCisjZGVmaW5lIFNUX0ZJTEVfQVRUUklCVVRFU19JRFggU1RfQklSVEhUSU1FX0lEWAorI2VuZGlmCisKIHN0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0Rlc2Mgc3RhdF9yZXN1bHRfZGVzYyA9IHsKICAgICAic3RhdF9yZXN1bHQiLCAvKiBuYW1lICovCiAgICAgc3RhdF9yZXN1bHRfX2RvY19fLCAvKiBkb2MgKi8KQEAgLTIxNTksMTAgKzE5MTgsMTIgQEAKIFB5RG9jX1NUUlZBUihzdGF0X2Zsb2F0X3RpbWVzX19kb2NfXywKICJzdGF0X2Zsb2F0X3RpbWVzKFtuZXd2YWxdKSAtPiBvbGR2YWxcblxuXAogRGV0ZXJtaW5lIHdoZXRoZXIgb3MuW2xmXXN0YXQgcmVwcmVzZW50cyB0aW1lIHN0YW1wcyBhcyBmbG9hdCBvYmplY3RzLlxuXAotSWYgbmV3dmFsIGlzIFRydWUsIGZ1dHVyZSBjYWxscyB0byBzdGF0KCkgcmV0dXJuIGZsb2F0cywgaWYgaXQgaXMgRmFsc2UsXG5cCi1mdXR1cmUgY2FsbHMgcmV0dXJuIGludHMuIFxuXAotSWYgbmV3dmFsIGlzIG9taXR0ZWQsIHJldHVybiB0aGUgY3VycmVudCBzZXR0aW5nLlxuIik7CitcblwKK0lmIHZhbHVlIGlzIFRydWUsIGZ1dHVyZSBjYWxscyB0byBzdGF0KCkgcmV0dXJuIGZsb2F0czsgaWYgaXQgaXMgRmFsc2UsXG5cCitmdXR1cmUgY2FsbHMgcmV0dXJuIGludHMuXG5cCitJZiB2YWx1ZSBpcyBvbWl0dGVkLCByZXR1cm4gdGhlIGN1cnJlbnQgc2V0dGluZy5cbiIpOwogCisvKiBBQyAzLjU6IHRoZSBwdWJsaWMgZGVmYXVsdCB2YWx1ZSBzaG91bGQgYmUgTm9uZSwgbm90IHJlYWR5IGZvciB0aGF0IHlldCAqLwogc3RhdGljIFB5T2JqZWN0Kgogc3RhdF9mbG9hdF90aW1lcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0yMzIyLDYgKzIwODMsMTAgQEAKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIFNUX0ZMQUdTX0lEWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZygobG9uZylzdC0+c3RfZmxhZ3MpKTsKICNlbmRpZgorI2lmZGVmIEhBVkVfU1RSVUNUX1NUQVRfU1RfRklMRV9BVFRSSUJVVEVTCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCBTVF9GSUxFX0FUVFJJQlVURVNfSURYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoc3QtPnN0X2ZpbGVfYXR0cmlidXRlcykpOworI2VuZGlmCiAKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBQeV9ERUNSRUYodik7CkBAIC0yMzg1LDEyICsyMTUwLDE4MSBAQAogICAgIHJldHVybiBfcHlzdGF0X2Zyb21zdHJ1Y3RzdGF0KCZzdCk7CiB9CiAKLSNpZmRlZiBIQVZFX0ZTVEFUQVQKLSAgICAjZGVmaW5lIE9TX1NUQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCisvKltweXRob24gaW5wdXRdCisKK2ZvciBzIGluICIiIgorCitGQUNDRVNTQVQKK0ZDSE1PREFUCitGQ0hPV05BVAorRlNUQVRBVAorTElOS0FUCitNS0RJUkFUCitNS0ZJRk9BVAorTUtOT0RBVAorT1BFTkFUCitSRUFETElOS0FUCitTWU1MSU5LQVQKK1VOTElOS0FUCisKKyIiIi5zdHJpcCgpLnNwbGl0KCk6CisgICAgcyA9IHMuc3RyaXAoKQorICAgIHByaW50KCIiIgorI2lmZGVmIEhBVkVfe3N9CisgICAgI2RlZmluZSB7c31fRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCiAjZWxzZQotICAgICNkZWZpbmUgT1NfU1RBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF91bmF2YWlsYWJsZQorICAgICNkZWZpbmUge3N9X0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX3VuYXZhaWxhYmxlCisjZW5kaWYKKyIiIi5yc3RyaXAoKS5mb3JtYXQocz1zKSkKKworZm9yIHMgaW4gIiIiCisKK0ZDSERJUgorRkNITU9ECitGQ0hPV04KK0ZET1BFTkRJUgorRkVYRUNWRQorRlBBVEhDT05GCitGU1RBVFZGUworRlRSVU5DQVRFCisKKyIiIi5zdHJpcCgpLnNwbGl0KCk6CisgICAgcyA9IHMuc3RyaXAoKQorICAgIHByaW50KCIiIgorI2lmZGVmIEhBVkVfe3N9CisgICAgI2RlZmluZSBQQVRIX0hBVkVfe3N9IDEKKyNlbHNlCisgICAgI2RlZmluZSBQQVRIX0hBVkVfe3N9IDAKICNlbmRpZgogCisiIiIucnN0cmlwKCkuZm9ybWF0KHM9cykpCitbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKKyNpZmRlZiBIQVZFX0ZBQ0NFU1NBVAorICAgICNkZWZpbmUgRkFDQ0VTU0FUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorI2Vsc2UKKyAgICAjZGVmaW5lIEZBQ0NFU1NBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF91bmF2YWlsYWJsZQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZDSE1PREFUCisgICAgI2RlZmluZSBGQ0hNT0RBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF9jb252ZXJ0ZXIKKyNlbHNlCisgICAgI2RlZmluZSBGQ0hNT0RBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF91bmF2YWlsYWJsZQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZDSE9XTkFUCisgICAgI2RlZmluZSBGQ0hPV05BVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF9jb252ZXJ0ZXIKKyNlbHNlCisgICAgI2RlZmluZSBGQ0hPV05BVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF91bmF2YWlsYWJsZQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZTVEFUQVQKKyAgICAjZGVmaW5lIEZTVEFUQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCisjZWxzZQorICAgICNkZWZpbmUgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF91bmF2YWlsYWJsZQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xJTktBVAorICAgICNkZWZpbmUgTElOS0FUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorI2Vsc2UKKyAgICAjZGVmaW5lIExJTktBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF91bmF2YWlsYWJsZQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX01LRElSQVQKKyAgICAjZGVmaW5lIE1LRElSQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCisjZWxzZQorICAgICNkZWZpbmUgTUtESVJBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF91bmF2YWlsYWJsZQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX01LRklGT0FUCisgICAgI2RlZmluZSBNS0ZJRk9BVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF9jb252ZXJ0ZXIKKyNlbHNlCisgICAgI2RlZmluZSBNS0ZJRk9BVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF91bmF2YWlsYWJsZQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX01LTk9EQVQKKyAgICAjZGVmaW5lIE1LTk9EQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCisjZWxzZQorICAgICNkZWZpbmUgTUtOT0RBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF91bmF2YWlsYWJsZQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX09QRU5BVAorICAgICNkZWZpbmUgT1BFTkFUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorI2Vsc2UKKyAgICAjZGVmaW5lIE9QRU5BVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF91bmF2YWlsYWJsZQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1JFQURMSU5LQVQKKyAgICAjZGVmaW5lIFJFQURMSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCisjZWxzZQorICAgICNkZWZpbmUgUkVBRExJTktBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF91bmF2YWlsYWJsZQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NZTUxJTktBVAorICAgICNkZWZpbmUgU1lNTElOS0FUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorI2Vsc2UKKyAgICAjZGVmaW5lIFNZTUxJTktBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF91bmF2YWlsYWJsZQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1VOTElOS0FUCisgICAgI2RlZmluZSBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF9jb252ZXJ0ZXIKKyNlbHNlCisgICAgI2RlZmluZSBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF91bmF2YWlsYWJsZQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZDSERJUgorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZDSERJUiAxCisjZWxzZQorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZDSERJUiAwCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkNITU9ECisgICAgI2RlZmluZSBQQVRIX0hBVkVfRkNITU9EIDEKKyNlbHNlCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRkNITU9EIDAKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GQ0hPV04KKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GQ0hPV04gMQorI2Vsc2UKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GQ0hPV04gMAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZET1BFTkRJUgorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZET1BFTkRJUiAxCisjZWxzZQorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZET1BFTkRJUiAwCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkVYRUNWRQorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZFWEVDVkUgMQorI2Vsc2UKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GRVhFQ1ZFIDAKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GUEFUSENPTkYKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GUEFUSENPTkYgMQorI2Vsc2UKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GUEFUSENPTkYgMAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZTVEFUVkZTCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRlNUQVRWRlMgMQorI2Vsc2UKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GU1RBVFZGUyAwCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRlRSVU5DQVRFCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRlRSVU5DQVRFIDEKKyNlbHNlCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRlRSVU5DQVRFIDAKKyNlbmRpZgorLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRiZDRmNmY3ZDQxMjY3ZjEgaW5wdXQ9ODBiNGM4OTBiNjc3NGVhNV0qLworCisjaWZkZWYgTVNfV0lORE9XUworICAgICN1bmRlZiBQQVRIX0hBVkVfRlRSVU5DQVRFCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRlRSVU5DQVRFIDEKKyNlbmRpZgogCiAvKltweXRob24gaW5wdXRdCiAKQEAgLTI0MDUsMjIgKzIzMzksMjUgQEAKICAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZiwgKiwgYWxsb3dfZmQ9RmFsc2UsIG51bGxhYmxlPUZhbHNlKToKICAgICAgICAgIyByaWdodCBub3cgcGF0aF90IGRvZXNuJ3Qgc3VwcG9ydCBkZWZhdWx0IHZhbHVlcy4KICAgICAgICAgIyB0byBzdXBwb3J0IGEgZGVmYXVsdCB2YWx1ZSwgeW91J2xsIG5lZWQgdG8gb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpLgotICAgICAgICBpZiBzZWxmLmRlZmF1bHQgaXMgbm90IHVuc3BlY2lmaWVkOgorICAgICAgICBpZiBzZWxmLmRlZmF1bHQgbm90IGluICh1bnNwZWNpZmllZCwgTm9uZSk6CiAgICAgICAgICAgICBmYWlsKCJDYW4ndCBzcGVjaWZ5IGEgZGVmYXVsdCB0byB0aGUgcGF0aF90IGNvbnZlcnRlciEiKQogCi0gICAgICAgIGlmIHNlbGYuY19kZWZhdWx0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZmFpbCgiQ2FuJ3Qgc3BlY2lmeSBhIGNfZGVmYXVsdCB0byB0aGUgcGF0aF90IGNvbnZlcnRlciEiKQorICAgICAgICBpZiBzZWxmLmNfZGVmYXVsdCBub3QgaW4gKE5vbmUsICdQeV9Ob25lJyk6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbid0IHNwZWNpZnkgYSBjX2RlZmF1bHQgdG8gdGhlIHBhdGhfdCBjb252ZXJ0ZXIhIikKIAogICAgICAgICBzZWxmLm51bGxhYmxlID0gbnVsbGFibGUKICAgICAgICAgc2VsZi5hbGxvd19mZCA9IGFsbG93X2ZkCiAKICAgICBkZWYgcHJlX3JlbmRlcihzZWxmKToKICAgICAgICAgZGVmIHN0cmlmeSh2YWx1ZSk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZQogICAgICAgICAgICAgcmV0dXJuIHN0cihpbnQoYm9vbCh2YWx1ZSkpKQogCiAgICAgICAgICMgYWRkIHNlbGYucHlfbmFtZSBoZXJlIHdoZW4gbWVyZ2luZyB3aXRoIHBvc2l4bW9kdWxlIGNvbnZlcnNpb24KLSAgICAgICAgc2VsZi5jX2RlZmF1bHQgPSAnUEFUSF9UX0lOSVRJQUxJWkUoInt9Iiwge30sIHt9KScuZm9ybWF0KAorICAgICAgICBzZWxmLmNfZGVmYXVsdCA9ICdQQVRIX1RfSU5JVElBTElaRSgie30iLCAie30iLCB7fSwge30pJy5mb3JtYXQoCiAgICAgICAgICAgICBzZWxmLmZ1bmN0aW9uLm5hbWUsCisgICAgICAgICAgICBzZWxmLm5hbWUsCiAgICAgICAgICAgICBzdHJpZnkoc2VsZi5udWxsYWJsZSksCiAgICAgICAgICAgICBzdHJpZnkoc2VsZi5hbGxvd19mZCksCiAgICAgICAgICAgICApCkBAIC0yNDMxLDE1ICsyMzY4LDg3IEBACiAKIGNsYXNzIGRpcl9mZF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CiAgICAgdHlwZSA9ICdpbnQnCi0gICAgY29udmVydGVyID0gJ09TX1NUQVRfRElSX0ZEX0NPTlZFUlRFUicKIAotICAgIGRlZiBjb252ZXJ0ZXJfaW5pdChzZWxmKToKKyAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZiwgcmVxdWlyZXM9Tm9uZSk6CiAgICAgICAgIGlmIHNlbGYuZGVmYXVsdCBpbiAodW5zcGVjaWZpZWQsIE5vbmUpOgogICAgICAgICAgICAgc2VsZi5jX2RlZmF1bHQgPSAnREVGQVVMVF9ESVJfRkQnCisgICAgICAgIGlmIGlzaW5zdGFuY2UocmVxdWlyZXMsIHN0cik6CisgICAgICAgICAgICBzZWxmLmNvbnZlcnRlciA9IHJlcXVpcmVzLnVwcGVyKCkgKyAnX0RJUl9GRF9DT05WRVJURVInCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNvbnZlcnRlciA9ICdkaXJfZmRfY29udmVydGVyJwogCitjbGFzcyBmaWxkZXNfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnaW50JworICAgIGNvbnZlcnRlciA9ICdmaWxkZXNfY29udmVydGVyJworCitjbGFzcyB1aWRfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICJ1aWRfdCIKKyAgICBjb252ZXJ0ZXIgPSAnX1B5X1VpZF9Db252ZXJ0ZXInCisKK2NsYXNzIGdpZF90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gImdpZF90IgorICAgIGNvbnZlcnRlciA9ICdfUHlfR2lkX0NvbnZlcnRlcicKKworY2xhc3MgZGV2X3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnZGV2X3QnCisgICAgY29udmVydGVyID0gJ19QeV9EZXZfQ29udmVydGVyJworCitjbGFzcyBkZXZfdF9yZXR1cm5fY29udmVydGVyKHVuc2lnbmVkX2xvbmdfcmV0dXJuX2NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdkZXZfdCcKKyAgICBjb252ZXJzaW9uX2ZuID0gJ19QeUxvbmdfRnJvbURldicKKyAgICB1bnNpZ25lZF9jYXN0ID0gJyhkZXZfdCknCisKK2NsYXNzIEZTQ29udmVydGVyX2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ1B5T2JqZWN0IConCisgICAgY29udmVydGVyID0gJ1B5VW5pY29kZV9GU0NvbnZlcnRlcicKKyAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuZGVmYXVsdCBpcyBub3QgdW5zcGVjaWZpZWQ6CisgICAgICAgICAgICBmYWlsKCJGU0NvbnZlcnRlcl9jb252ZXJ0ZXIgZG9lcyBub3Qgc3VwcG9ydCBkZWZhdWx0IHZhbHVlcyIpCisgICAgICAgIHNlbGYuY19kZWZhdWx0ID0gJ05VTEwnCisKKyAgICBkZWYgY2xlYW51cChzZWxmKToKKyAgICAgICAgcmV0dXJuICJQeV9YREVDUkVGKCIgKyBzZWxmLm5hbWUgKyAiKTtcbiIKKworY2xhc3MgcGlkX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAncGlkX3QnCisgICAgZm9ybWF0X3VuaXQgPSAnIiBfUHlfUEFSU0VfUElEICInCisKK2NsYXNzIGlkdHlwZV90X2NvbnZlcnRlcihpbnRfY29udmVydGVyKToKKyAgICB0eXBlID0gJ2lkdHlwZV90JworCitjbGFzcyBpZF90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ2lkX3QnCisgICAgZm9ybWF0X3VuaXQgPSAnIiBfUHlfUEFSU0VfUElEICInCisKK2NsYXNzIFB5X2ludHB0cl90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ1B5X2ludHB0cl90JworICAgIGZvcm1hdF91bml0ID0gJyIgX1B5X1BBUlNFX0lOVFBUUiAiJworCitjbGFzcyBQeV9vZmZfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdQeV9vZmZfdCcKKyAgICBjb252ZXJ0ZXIgPSAnUHlfb2ZmX3RfY29udmVydGVyJworCitjbGFzcyBQeV9vZmZfdF9yZXR1cm5fY29udmVydGVyKGxvbmdfcmV0dXJuX2NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdQeV9vZmZfdCcKKyAgICBjb252ZXJzaW9uX2ZuID0gJ1B5TG9uZ19Gcm9tUHlfb2ZmX3QnCisKK2NsYXNzIHBhdGhfY29uZm5hbWVfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGU9ImludCIKKyAgICBjb252ZXJ0ZXI9ImNvbnZfcGF0aF9jb25mbmFtZSIKKworY2xhc3MgY29uZnN0cl9jb25mbmFtZV9jb252ZXJ0ZXIocGF0aF9jb25mbmFtZV9jb252ZXJ0ZXIpOgorICAgIGNvbnZlcnRlcj0nY29udl9jb25mc3RyX2NvbmZuYW1lJworCitjbGFzcyBzeXNjb25mX2NvbmZuYW1lX2NvbnZlcnRlcihwYXRoX2NvbmZuYW1lX2NvbnZlcnRlcik6CisgICAgY29udmVydGVyPSJjb252X3N5c2NvbmZfY29uZm5hbWUiCisKK2NsYXNzIHNjaGVkX3BhcmFtX2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ3N0cnVjdCBzY2hlZF9wYXJhbScKKyAgICBjb252ZXJ0ZXIgPSAnY29udmVydF9zY2hlZF9wYXJhbScKKyAgICBpbXBsX2J5X3JlZmVyZW5jZSA9IFRydWU7CiAKIFtweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTVjOWY0NTZmNTMyNDRmYzNdKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWFmZmU2ODMxNmYxNjA0MDFdKi8KIAogLypbY2xpbmljIGlucHV0XQogCkBAIC0yNDUwLDcgKzI0NTksNyBAQAogCiAgICAgKgogCi0gICAgZGlyX2ZkIDogZGlyX2ZkID0gTm9uZQorICAgIGRpcl9mZCA6IGRpcl9mZChyZXF1aXJlcz0nZnN0YXRhdCcpID0gTm9uZQogICAgICAgICBJZiBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCiAgICAgICAgIGFuZCBwYXRoIHNob3VsZCBiZSBhIHJlbGF0aXZlIHN0cmluZzsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8KICAgICAgICAgdGhhdCBkaXJlY3RvcnkuCkBAIC0yNDcxLDEwMyArMjQ4MCw0MSBAQAogCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihvc19zdGF0X19kb2NfXywKLSJzdGF0KCRtb2R1bGUsIC8sIHBhdGgsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKLSItLVxuIgotIlxuIgotIlBlcmZvcm0gYSBzdGF0IHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLlxuIgotIlxuIgotIiAgcGF0aFxuIgotIiAgICBQYXRoIHRvIGJlIGV4YW1pbmVkOyBjYW4gYmUgc3RyaW5nLCBieXRlcywgb3Igb3Blbi1maWxlLWRlc2NyaXB0b3IgaW50LlxuIgotIiAgZGlyX2ZkXG4iCi0iICAgIElmIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcbiIKLSIgICAgYW5kIHBhdGggc2hvdWxkIGJlIGEgcmVsYXRpdmUgc3RyaW5nOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0b1xuIgotIiAgICB0aGF0IGRpcmVjdG9yeS5cbiIKLSIgIGZvbGxvd19zeW1saW5rc1xuIgotIiAgICBJZiBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYyBsaW5rLFxuIgotIiAgICBzdGF0IHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuIgotIiAgICB0aGUgbGluayBwb2ludHMgdG8uXG4iCi0iXG4iCi0iZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZFxuIgotIiAgb24geW91ciBwbGF0Zm9ybS4gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYVxuIgotIiAgTm90SW1wbGVtZW50ZWRFcnJvci5cbiIKLSJcbiIKLSJJdFwncyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhc1xuIgotIiAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuIik7Ci0KLSNkZWZpbmUgT1NfU1RBVF9NRVRIT0RERUYgICAgXAotICAgIHsic3RhdCIsIChQeUNGdW5jdGlvbilvc19zdGF0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc3RhdF9fZG9jX199LAotCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3RhdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcyk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1vc19zdGF0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07Ci0gICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgic3RhdCIsIDAsIDEpOwotICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgIk8mfCRPJnA6c3RhdCIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBPU19TVEFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3RhdF9pbXBsKG1vZHVsZSwgJnBhdGgsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKLQotZXhpdDoKLSAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCi0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLQotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1vc19zdGF0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYxZGNhYTVlMjRkYjk4ODIgaW5wdXQ9NWFlMTU1YmQ0NzVmZDIwYV0qLworb3Nfc3RhdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCwKKyAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU0Zjc1NjlmOTVkNTIzY2EgaW5wdXQ9MDk5ZDM1NmMzMDZmYTI0YV0qLwogewogICAgIHJldHVybiBwb3NpeF9kb19zdGF0KCJzdGF0IiwgcGF0aCwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOwogfQogCi1QeURvY19TVFJWQVIocG9zaXhfbHN0YXRfX2RvY19fLAotImxzdGF0KHBhdGgsICosIGRpcl9mZD1Ob25lKSAtPiBzdGF0IHJlc3VsdFxuXG5cCi1MaWtlIHN0YXQoKSwgYnV0IGRvIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuXG5cCi1FcXVpdmFsZW50IHRvIHN0YXQocGF0aCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MubHN0YXQKKworICAgIHBhdGggOiBwYXRoX3QKKworICAgICoKKworICAgIGRpcl9mZCA6IGRpcl9mZChyZXF1aXJlcz0nZnN0YXRhdCcpID0gTm9uZQorCitQZXJmb3JtIGEgc3RhdCBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aCwgd2l0aG91dCBmb2xsb3dpbmcgc3ltYm9saWMgbGlua3MuCisKK0xpa2Ugc3RhdCgpLCBidXQgZG8gbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy4KK0VxdWl2YWxlbnQgdG8gc3RhdChwYXRoLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfbHN0YXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbHN0YXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2E3NDhlMzMzZmNiMzliZCBpbnB1dD0wYjc0NzQ3NjU5MjdiOTI1XSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAwOwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7Ci0KLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gImxzdGF0IjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6bHN0YXQiLCBrZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotI2lmZGVmIEhBVkVfRlNUQVRBVAotICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCi0jZWxzZQotICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKLSNlbmRpZgotICAgICAgICApKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm5fdmFsdWUgPSBwb3NpeF9kb19zdGF0KCJsc3RhdCIsICZwYXRoLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworICAgIHJldHVybiBwb3NpeF9kb19zdGF0KCJsc3RhdCIsIHBhdGgsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKIH0KIAogCi0jaWZkZWYgSEFWRV9GQUNDRVNTQVQKLSAgICAjZGVmaW5lIE9TX0FDQ0VTU19ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF9jb252ZXJ0ZXIKLSNlbHNlCi0gICAgI2RlZmluZSBPU19BQ0NFU1NfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKLSNlbmRpZgogLypbY2xpbmljIGlucHV0XQotb3MuYWNjZXNzCitvcy5hY2Nlc3MgLT4gYm9vbAogCiAgICAgcGF0aDogcGF0aF90KGFsbG93X2ZkPVRydWUpCiAgICAgICAgIFBhdGggdG8gYmUgdGVzdGVkOyBjYW4gYmUgc3RyaW5nLCBieXRlcywgb3Igb3Blbi1maWxlLWRlc2NyaXB0b3IgaW50LgpAQCAtMjU3OCw3ICsyNTI1LDcgQEAKIAogICAgICoKIAotICAgIGRpcl9mZCA6IGRpcl9mZCA9IE5vbmUKKyAgICBkaXJfZmQgOiBkaXJfZmQocmVxdWlyZXM9J2ZhY2Nlc3NhdCcpID0gTm9uZQogICAgICAgICBJZiBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCiAgICAgICAgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdAogICAgICAgICBkaXJlY3RvcnkuCkBAIC0yNjA1LDczICsyNTUyLDEyIEBACiAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKG9zX2FjY2Vzc19fZG9jX18sCi0iYWNjZXNzKCRtb2R1bGUsIC8sIHBhdGgsIG1vZGUsICosIGRpcl9mZD1Ob25lLCBlZmZlY3RpdmVfaWRzPUZhbHNlLFxuIgotIiAgICAgICBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKLSItLVxuIgotIlxuIgotIlVzZSB0aGUgcmVhbCB1aWQvZ2lkIHRvIHRlc3QgZm9yIGFjY2VzcyB0byBhIHBhdGguXG4iCi0iXG4iCi0iICBwYXRoXG4iCi0iICAgIFBhdGggdG8gYmUgdGVzdGVkOyBjYW4gYmUgc3RyaW5nLCBieXRlcywgb3Igb3Blbi1maWxlLWRlc2NyaXB0b3IgaW50LlxuIgotIiAgbW9kZVxuIgotIiAgICBPcGVyYXRpbmctc3lzdGVtIG1vZGUgYml0ZmllbGQuICBDYW4gYmUgRl9PSyB0byB0ZXN0IGV4aXN0ZW5jZSxcbiIKLSIgICAgb3IgdGhlIGluY2x1c2l2ZS1PUiBvZiBSX09LLCBXX09LLCBhbmQgWF9PSy5cbiIKLSIgIGRpcl9mZFxuIgotIiAgICBJZiBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCi0iICAgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdFxuIgotIiAgICBkaXJlY3RvcnkuXG4iCi0iICBlZmZlY3RpdmVfaWRzXG4iCi0iICAgIElmIFRydWUsIGFjY2VzcyB3aWxsIHVzZSB0aGUgZWZmZWN0aXZlIHVpZC9naWQgaW5zdGVhZCBvZlxuIgotIiAgICB0aGUgcmVhbCB1aWQvZ2lkLlxuIgotIiAgZm9sbG93X3N5bWxpbmtzXG4iCi0iICAgIElmIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljIGxpbmssXG4iCi0iICAgIGFjY2VzcyB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcbiIKLSIgICAgdGhlIGxpbmsgcG9pbnRzIHRvLlxuIgotIlxuIgotImRpcl9mZCwgZWZmZWN0aXZlX2lkcywgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkXG4iCi0iICBvbiB5b3VyIHBsYXRmb3JtLiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhXG4iCi0iICBOb3RJbXBsZW1lbnRlZEVycm9yLlxuIgotIlxuIgotIk5vdGUgdGhhdCBtb3N0IG9wZXJhdGlvbnMgd2lsbCB1c2UgdGhlIGVmZmVjdGl2ZSB1aWQvZ2lkLCB0aGVyZWZvcmUgdGhpc1xuIgotIiAgcm91dGluZSBjYW4gYmUgdXNlZCBpbiBhIHN1aWQvc2dpZCBlbnZpcm9ubWVudCB0byB0ZXN0IGlmIHRoZSBpbnZva2luZyB1c2VyXG4iCi0iICBoYXMgdGhlIHNwZWNpZmllZCBhY2Nlc3MgdG8gdGhlIHBhdGguIik7Ci0KLSNkZWZpbmUgT1NfQUNDRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJhY2Nlc3MiLCAoUHlDRnVuY3Rpb24pb3NfYWNjZXNzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfYWNjZXNzX19kb2NfX30sCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1vc19hY2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkLCBpbnQgZWZmZWN0aXZlX2lkcywgaW50IGZvbGxvd19zeW1saW5rcyk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1vc19hY2Nlc3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitzdGF0aWMgaW50Citvc19hY2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkLAorICAgICAgICAgICAgICAgaW50IGVmZmVjdGl2ZV9pZHMsIGludCBmb2xsb3dfc3ltbGlua3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWJhYTUzMzQwMjEwMDg4ZCBpbnB1dD1iNzVhNzU2Nzk3YWY0NWVjXSovCiB7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgImVmZmVjdGl2ZV9pZHMiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07Ci0gICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiYWNjZXNzIiwgMCwgMSk7Ci0gICAgaW50IG1vZGU7Ci0gICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwotICAgIGludCBlZmZlY3RpdmVfaWRzID0gMDsKLSAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgIk8maXwkTyZwcDphY2Nlc3MiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIE9TX1NUQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmVmZmVjdGl2ZV9pZHMsICZmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gb3NfYWNjZXNzX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkLCBlZmZlY3RpdmVfaWRzLCBmb2xsb3dfc3ltbGlua3MpOwotCi1leGl0OgotICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotCi0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLW9zX2FjY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQsIGludCBlZmZlY3RpdmVfaWRzLCBpbnQgZm9sbG93X3N5bWxpbmtzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE2ZWQ0ZjE1MWJlOWRmMGYgaW5wdXQ9MmUyZTc1OTQzNzFmNWI3ZV0qLwotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCByZXR1cm5fdmFsdWU7CiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgRFdPUkQgYXR0cjsKQEAgLTI2ODEsMTEgKzI1NjcsMTEgQEAKIAogI2lmbmRlZiBIQVZFX0ZBQ0NFU1NBVAogICAgIGlmIChmb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKCJhY2Nlc3MiLCBmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmIChlZmZlY3RpdmVfaWRzKSB7CiAgICAgICAgIGFyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKCJhY2Nlc3MiLCAiZWZmZWN0aXZlX2lkcyIpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAjZW5kaWYKIApAQCAtMjcwNSwxMSArMjU5MSwxMCBAQAogICAgICAqICAgICAqIG9yIGl0J3MgYSBkaXJlY3RvcnkuCiAgICAgICogKERpcmVjdG9yaWVzIGNhbm5vdCBiZSByZWFkLW9ubHkgb24gV2luZG93cy4pCiAgICAgKi8KLSAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoCi0gICAgICAgIChhdHRyICE9IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKSAmJgorICAgIHJldHVybl92YWx1ZSA9IChhdHRyICE9IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKSAmJgogICAgICAgICAgICAgKCEobW9kZSAmIDIpIHx8CiAgICAgICAgICAgICAhKGF0dHIgJiBGSUxFX0FUVFJJQlVURV9SRUFET05MWSkgfHwKLSAgICAgICAgICAgIChhdHRyICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSkpOworICAgICAgICAgICAgKGF0dHIgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpKTsKICNlbHNlCiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC0yNzI4LDEyICsyNjEzLDkgQEAKICNlbmRpZgogICAgICAgICByZXN1bHQgPSBhY2Nlc3MocGF0aC0+bmFycm93LCBtb2RlKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZyghcmVzdWx0KTsKKyAgICByZXR1cm5fdmFsdWUgPSAhcmVzdWx0OwogI2VuZGlmCiAKLSNpZm5kZWYgSEFWRV9GQUNDRVNTQVQKLWV4aXQ6Ci0jZW5kaWYKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCkBAIC0yNzUyLDcgKzI2MzQsNiBAQAogCiAKICNpZmRlZiBIQVZFX1RUWU5BTUUKLQogLypbY2xpbmljIGlucHV0XQogb3MudHR5bmFtZSAtPiBEZWNvZGVGU0RlZmF1bHQKIApAQCAtMjc2NCw0NCArMjY0NSw5IEBACiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHRlcm1pbmFsIGRldmljZSBjb25uZWN0ZWQgdG8gJ2ZkJy4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKG9zX3R0eW5hbWVfX2RvY19fLAotInR0eW5hbWUoJG1vZHVsZSwgZmQsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHRlcm1pbmFsIGRldmljZSBjb25uZWN0ZWQgdG8gXCdmZFwnLlxuIgotIlxuIgotIiAgZmRcbiIKLSIgICAgSW50ZWdlciBmaWxlIGRlc2NyaXB0b3IgaGFuZGxlLiIpOwotCi0jZGVmaW5lIE9TX1RUWU5BTUVfTUVUSE9EREVGICAgIFwKLSAgICB7InR0eW5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfdHR5bmFtZSwgTUVUSF9WQVJBUkdTLCBvc190dHluYW1lX19kb2NfX30sCi0KLXN0YXRpYyBjaGFyICoKLW9zX3R0eW5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotb3NfdHR5bmFtZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBpbnQgZmQ7Ci0gICAgY2hhciAqX3JldHVybl92YWx1ZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiaTp0dHluYW1lIiwKLSAgICAgICAgJmZkKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIF9yZXR1cm5fdmFsdWUgPSBvc190dHluYW1lX2ltcGwobW9kdWxlLCBmZCk7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoX3JldHVybl92YWx1ZSk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQogc3RhdGljIGNoYXIgKgogb3NfdHR5bmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jZWU3YmM0Y2ZmZWMwMWEyIGlucHV0PTVmNzJjYTgzZTc2YjNiNDVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wM2FkM2Q1Y2NhZWY3NWMzIGlucHV0PTVmNzJjYTgzZTc2YjNiNDVdKi8KIHsKICAgICBjaGFyICpyZXQ7CiAKQEAgLTI4MTAsMTcgKzI2NTYsMTggQEAKICAgICAgICAgcG9zaXhfZXJyb3IoKTsKICAgICByZXR1cm4gcmV0OwogfQotI2Vsc2UKLSNkZWZpbmUgT1NfVFRZTkFNRV9NRVRIT0RERUYKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9DVEVSTUlECi1QeURvY19TVFJWQVIocG9zaXhfY3Rlcm1pZF9fZG9jX18sCi0iY3Rlcm1pZCgpIC0+IHN0cmluZ1xuXG5cCi1SZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGNvbnRyb2xsaW5nIHRlcm1pbmFsIGZvciB0aGlzIHByb2Nlc3MuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5jdGVybWlkCisKK1JldHVybiB0aGUgbmFtZSBvZiB0aGUgY29udHJvbGxpbmcgdGVybWluYWwgZm9yIHRoaXMgcHJvY2Vzcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2N0ZXJtaWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19jdGVybWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xYjczNzg4MjAxZTBhZWJkIGlucHV0PTNiODdmZGQ1MjU1NjM4MmRdKi8KIHsKICAgICBjaGFyICpyZXQ7CiAgICAgY2hhciBidWZmZXJbTF9jdGVybWlkXTsKQEAgLTI4MzQsMTA2ICsyNjgxLDExMiBAQAogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChidWZmZXIpOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9DVEVSTUlEICovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9jaGRpcl9fZG9jX18sCi0iY2hkaXIocGF0aClcblxuXAotQ2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBzcGVjaWZpZWQgcGF0aC5cblwKLVxuXAotcGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cblwKLU9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLSAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5jaGRpcgorCisgICAgcGF0aDogcGF0aF90KGFsbG93X2ZkPSdQQVRIX0hBVkVfRkNIRElSJykKKworQ2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBzcGVjaWZpZWQgcGF0aC4KKworcGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy4KK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY2hkaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2hkaXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzM1OGUzYTIwZmI1YWE5MyBpbnB1dD0xYTRhMTViNGQxMmNiMTVkXSovCiB7Ci0gICAgcGF0aF90IHBhdGg7CiAgICAgaW50IHJlc3VsdDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OwotCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJjaGRpciI7Ci0jaWZkZWYgSEFWRV9GQ0hESVIKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSNlbmRpZgotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmNoZGlyIiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aAotICAgICAgICApKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKHBhdGgud2lkZSkKLSAgICAgICAgcmVzdWx0ID0gd2luMzJfd2NoZGlyKHBhdGgud2lkZSk7CisgICAgaWYgKHBhdGgtPndpZGUpCisgICAgICAgIHJlc3VsdCA9IHdpbjMyX3djaGRpcihwYXRoLT53aWRlKTsKICAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IHdpbjMyX2NoZGlyKHBhdGgubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gd2luMzJfY2hkaXIocGF0aC0+bmFycm93KTsKICAgICByZXN1bHQgPSAhcmVzdWx0OyAvKiBvbiB1bml4LCBzdWNjZXNzID0gMCwgb24gd2luZG93cywgc3VjY2VzcyA9ICEwICovCiAjZWxzZQogI2lmZGVmIEhBVkVfRkNIRElSCi0gICAgaWYgKHBhdGguZmQgIT0gLTEpCi0gICAgICAgIHJlc3VsdCA9IGZjaGRpcihwYXRoLmZkKTsKKyAgICBpZiAocGF0aC0+ZmQgIT0gLTEpCisgICAgICAgIHJlc3VsdCA9IGZjaGRpcihwYXRoLT5mZCk7CiAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgIHJlc3VsdCA9IGNoZGlyKHBhdGgubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gY2hkaXIocGF0aC0+bmFycm93KTsKICNlbmRpZgogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOwogICAgIH0KIAotICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorCiAjaWZkZWYgSEFWRV9GQ0hESVIKLVB5RG9jX1NUUlZBUihwb3NpeF9mY2hkaXJfX2RvY19fLAotImZjaGRpcihmZClcblxuXAotQ2hhbmdlIHRvIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIGdpdmVuIGZpbGUgZGVzY3JpcHRvci4gIGZkIG11c3QgYmVcblwKLW9wZW5lZCBvbiBhIGRpcmVjdG9yeSwgbm90IGEgZmlsZS4gIEVxdWl2YWxlbnQgdG8gb3MuY2hkaXIoZmQpLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZmNoZGlyCisKKyAgICBmZDogZmlsZGVzCisKK0NoYW5nZSB0byB0aGUgZGlyZWN0b3J5IG9mIHRoZSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IuCisKK2ZkIG11c3QgYmUgb3BlbmVkIG9uIGEgZGlyZWN0b3J5LCBub3QgYSBmaWxlLgorRXF1aXZhbGVudCB0byBvcy5jaGRpcihmZCkuCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2ZjaGRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZkb2JqKQorb3NfZmNoZGlyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM2MWQzMGRmNmIyZDM0MTggaW5wdXQ9MThlODE2NDc5YTJmYTk4NV0qLwogewotICAgIHJldHVybiBwb3NpeF9maWxkZXMoZmRvYmosIGZjaGRpcik7CisgICAgcmV0dXJuIHBvc2l4X2ZpbGRlc19mZChmZCwgZmNoZGlyKTsKIH0KICNlbmRpZiAvKiBIQVZFX0ZDSERJUiAqLwogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9jaG1vZF9fZG9jX18sCi0iY2htb2QocGF0aCwgbW9kZSwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCi1DaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiBhIGZpbGUuXG5cCi1cblwKLXBhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCi1PbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi0gIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi5cblwKLUlmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCi0gIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1JZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKLSAgbGluaywgY2htb2Qgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG5cCi0gIGxpbmsgcG9pbnRzIHRvLlxuXAotSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGggYXNcblwKLSAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi1kaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCi0gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuY2htb2QKKworICAgIHBhdGg6IHBhdGhfdChhbGxvd19mZD0nUEFUSF9IQVZFX0ZDSE1PRCcpCisgICAgICAgIFBhdGggdG8gYmUgbW9kaWZpZWQuICBNYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0ciBvciBieXRlcy4KKyAgICAgICAgT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICAgICAgICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uCisKKyAgICBtb2RlOiBpbnQKKyAgICAgICAgT3BlcmF0aW5nLXN5c3RlbSBtb2RlIGJpdGZpZWxkLgorCisgICAgKgorCisgICAgZGlyX2ZkIDogZGlyX2ZkKHJlcXVpcmVzPSdmY2htb2RhdCcpID0gTm9uZQorICAgICAgICBJZiBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCisgICAgICAgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdAorICAgICAgICBkaXJlY3RvcnkuCisKKyAgICBmb2xsb3dfc3ltbGlua3M6IGJvb2wgPSBUcnVlCisgICAgICAgIElmIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljIGxpbmssCisgICAgICAgIGNobW9kIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlCisgICAgICAgIHRoZSBsaW5rIHBvaW50cyB0by4KKworQ2hhbmdlIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgb2YgYSBmaWxlLgorCitJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhcworICBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KK2Rpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KKyAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2NobW9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2NobW9kX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCwKKyAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNWU3ZjczYjFhODQzYmEyIGlucHV0PTdmMTYxOGU1ZTE1Y2MxOTZdKi8KIHsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICBpbnQgbW9kZTsKLSAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7Ci0gICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAgICAgaW50IHJlc3VsdDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OwogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIERXT1JEIGF0dHI7CkBAIC0yOTQzLDMzICsyNzk2LDE3IEBACiAgICAgaW50IGZjaG1vZGF0X25vZm9sbG93X3Vuc3VwcG9ydGVkID0gMDsKICNlbmRpZgogCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJjaG1vZCI7Ci0jaWZkZWYgSEFWRV9GQ0hNT0QKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSNlbmRpZgotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXwkTyZwOmNobW9kIiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgJm1vZGUsCi0jaWZkZWYgSEFWRV9GQ0hNT0RBVAotICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkLAotI2Vsc2UKLSAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkLAotI2VuZGlmCi0gICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogI2lmICEoZGVmaW5lZChIQVZFX0ZDSE1PREFUKSB8fCBkZWZpbmVkKEhBVkVfTENITU9EKSkKICAgICBpZiAoZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgiY2htb2QiLCBmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiBOVUxMOwogI2VuZGlmCiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChwYXRoLndpZGUpCi0gICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC53aWRlKTsKKyAgICBpZiAocGF0aC0+d2lkZSkKKyAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLT53aWRlKTsKICAgICBlbHNlCi0gICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aC5uYXJyb3cpOworICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgtPm5hcnJvdyk7CiAgICAgaWYgKGF0dHIgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpCiAgICAgICAgIHJlc3VsdCA9IDA7CiAgICAgZWxzZSB7CkBAIC0yOTc3LDI3ICsyODE0LDI2IEBACiAgICAgICAgICAgICBhdHRyICY9IH5GSUxFX0FUVFJJQlVURV9SRUFET05MWTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXR0ciB8PSBGSUxFX0FUVFJJQlVURV9SRUFET05MWTsKLSAgICAgICAgaWYgKHBhdGgud2lkZSkKLSAgICAgICAgICAgIHJlc3VsdCA9IFNldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLndpZGUsIGF0dHIpOworICAgICAgICBpZiAocGF0aC0+d2lkZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IFNldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLT53aWRlLCBhdHRyKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gU2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgubmFycm93LCBhdHRyKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IFNldEZpbGVBdHRyaWJ1dGVzQShwYXRoLT5uYXJyb3csIGF0dHIpOwogICAgIH0KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7CiAgICAgfQogI2Vsc2UgLyogTVNfV0lORE9XUyAqLwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBIQVZFX0ZDSE1PRAotICAgIGlmIChwYXRoLmZkICE9IC0xKQotICAgICAgICByZXN1bHQgPSBmY2htb2QocGF0aC5mZCwgbW9kZSk7CisgICAgaWYgKHBhdGgtPmZkICE9IC0xKQorICAgICAgICByZXN1bHQgPSBmY2htb2QocGF0aC0+ZmQsIG1vZGUpOwogICAgIGVsc2UKICNlbmRpZgogI2lmZGVmIEhBVkVfTENITU9ECiAgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKLSAgICAgICAgcmVzdWx0ID0gbGNobW9kKHBhdGgubmFycm93LCBtb2RlKTsKKyAgICAgICAgcmVzdWx0ID0gbGNobW9kKHBhdGgtPm5hcnJvdywgbW9kZSk7CiAgICAgZWxzZQogI2VuZGlmCiAjaWZkZWYgSEFWRV9GQ0hNT0RBVApAQCAtMzAxMiw3ICsyODQ4LDcgQEAKICAgICAgICAgICogc3VwcG9ydCBkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcz1GYWxzZS4gIChIb3BlZnVsbHkuKQogICAgICAgICAgKiBVbnRpbCB0aGVuLCB3ZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hhdCBleGNlcHRpb24gd2UgcmFpc2UuCiAgICAgICAgICAqLwotICAgICAgICByZXN1bHQgPSBmY2htb2RhdChkaXJfZmQsIHBhdGgubmFycm93LCBtb2RlLAorICAgICAgICByZXN1bHQgPSBmY2htb2RhdChkaXJfZmQsIHBhdGgtPm5hcnJvdywgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzID8gMCA6IEFUX1NZTUxJTktfTk9GT0xMT1cpOwogICAgICAgICAvKgogICAgICAgICAgKiBCdXQgd2FpdCEgIFdlIGNhbid0IHRocm93IHRoZSBleGNlcHRpb24gd2l0aG91dCBhbGxvd2luZyB0aHJlYWRzLApAQCAtMzAyNSw3ICsyODYxLDcgQEAKICAgICB9CiAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgIHJlc3VsdCA9IGNobW9kKHBhdGgubmFycm93LCBtb2RlKTsKKyAgICAgICAgcmVzdWx0ID0gY2htb2QocGF0aC0+bmFycm93LCBtb2RlKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlc3VsdCkgewpAQCAtMzAzOSwyNzIgKzI4NzUsMjg5IEBACiAgICAgICAgIH0KICAgICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKICAgICB9CiAjZW5kaWYKIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIAogI2lmZGVmIEhBVkVfRkNITU9ECi1QeURvY19TVFJWQVIocG9zaXhfZmNobW9kX19kb2NfXywKLSJmY2htb2QoZmQsIG1vZGUpXG5cblwKLUNoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIHRoZSBmaWxlIGdpdmVuIGJ5IGZpbGVcblwKLWRlc2NyaXB0b3IgZmQuICBFcXVpdmFsZW50IHRvIG9zLmNobW9kKGZkLCBtb2RlKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZjaG1vZAorCisgICAgZmQ6IGludAorICAgIG1vZGU6IGludAorCitDaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiB0aGUgZmlsZSBnaXZlbiBieSBmaWxlIGRlc2NyaXB0b3IgZmQuCisKK0VxdWl2YWxlbnQgdG8gb3MuY2htb2QoZmQsIG1vZGUpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZmNobW9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2ZjaG1vZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IG1vZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmVlMzFjYTIyNmQxZWQzMyBpbnB1dD04YWIxMTk3NWNhMDFlZTViXSovCiB7Ci0gICAgaW50IGZkLCBtb2RlLCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpmY2htb2QiLCAmZmQsICZtb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGZjaG1vZChmZCwgbW9kZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgaW50IHJlczsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXMgPSBmY2htb2QoZmQsIG1vZGUpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlcyAhPSAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBpZiAocmVzICE9IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKKwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIEhBVkVfRkNITU9EICovCiAKKwogI2lmZGVmIEhBVkVfTENITU9ECi1QeURvY19TVFJWQVIocG9zaXhfbGNobW9kX19kb2NfXywKLSJsY2htb2QocGF0aCwgbW9kZSlcblxuXAotQ2hhbmdlIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgb2YgYSBmaWxlLiBJZiBwYXRoIGlzIGEgc3ltbGluaywgdGhpc1xuXAotYWZmZWN0cyB0aGUgbGluayBpdHNlbGYgcmF0aGVyIHRoYW4gdGhlIHRhcmdldC5cblwKLUVxdWl2YWxlbnQgdG8gY2htb2QocGF0aCwgbW9kZSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmxjaG1vZAorCisgICAgcGF0aDogcGF0aF90CisgICAgbW9kZTogaW50CisKK0NoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIGEgZmlsZSwgd2l0aG91dCBmb2xsb3dpbmcgc3ltYm9saWMgbGlua3MuCisKK0lmIHBhdGggaXMgYSBzeW1saW5rLCB0aGlzIGFmZmVjdHMgdGhlIGxpbmsgaXRzZWxmIHJhdGhlciB0aGFuIHRoZSB0YXJnZXQuCitFcXVpdmFsZW50IHRvIGNobW9kKHBhdGgsIG1vZGUsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfbGNobW9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2xjaG1vZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2MwY2M0NjU4OGQ4OWU0NiBpbnB1dD05MGM1NjYzYzc0NjVkMjRmXSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgaW50IGk7CiAgICAgaW50IHJlczsKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gImxjaG1vZCI7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6bGNobW9kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmaSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBsY2htb2QocGF0aC5uYXJyb3csIGkpOworICAgIHJlcyA9IGxjaG1vZChwYXRoLT5uYXJyb3csIG1vZGUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgICAgIHBhdGhfZXJyb3IocGF0aCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIEhBVkVfTENITU9EICovCiAKIAogI2lmZGVmIEhBVkVfQ0hGTEFHUwotUHlEb2NfU1RSVkFSKHBvc2l4X2NoZmxhZ3NfX2RvY19fLAotImNoZmxhZ3MocGF0aCwgZmxhZ3MsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCi1TZXQgZmlsZSBmbGFncy5cblwKLVxuXAotSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCi0gIGxpbmssIGNoZmxhZ3Mgd2lsbCBjaGFuZ2UgZmxhZ3Mgb24gdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlXG5cCi0gIGZpbGUgdGhlIGxpbmsgcG9pbnRzIHRvLlxuXAotZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4gIElmIGl0IGlzXG5cCi11bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5jaGZsYWdzCisKKyAgICBwYXRoOiBwYXRoX3QKKyAgICBmbGFnczogdW5zaWduZWRfbG9uZyhiaXR3aXNlPVRydWUpCisgICAgZm9sbG93X3N5bWxpbmtzOiBib29sPVRydWUKKworU2V0IGZpbGUgZmxhZ3MuCisKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYworICBsaW5rLCBjaGZsYWdzIHdpbGwgY2hhbmdlIGZsYWdzIG9uIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZQorICBmaWxlIHRoZSBsaW5rIHBvaW50cyB0by4KK2ZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uICBJZiBpdCBpcwordW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jaGZsYWdzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2NoZmxhZ3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsCisgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZjJkNmU3MzUzNGE5NWI5IGlucHV0PTAzMjdlMjlmZWI4NzYyMzZdKi8KIHsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwotICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogICAgIGludCByZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07Ci0KLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gImNoZmxhZ3MiOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8ma3wkaTpjaGZsYWdzIiwga2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmZsYWdzLCAmZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICNpZm5kZWYgSEFWRV9MQ0hGTEFHUwogICAgIGlmIChmb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKCJjaGZsYWdzIiwgZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gTlVMTDsKICNlbmRpZgogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIEhBVkVfTENIRkxBR1MKICAgICBpZiAoIWZvbGxvd19zeW1saW5rcykKLSAgICAgICAgcmVzdWx0ID0gbGNoZmxhZ3MocGF0aC5uYXJyb3csIGZsYWdzKTsKKyAgICAgICAgcmVzdWx0ID0gbGNoZmxhZ3MocGF0aC0+bmFycm93LCBmbGFncyk7CiAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgIHJlc3VsdCA9IGNoZmxhZ3MocGF0aC5uYXJyb3csIGZsYWdzKTsKKyAgICAgICAgcmVzdWx0ID0gY2hmbGFncyhwYXRoLT5uYXJyb3csIGZsYWdzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgZ290byBleGl0OwotICAgIH0KKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKIAotICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX0NIRkxBR1MgKi8KIAorCiAjaWZkZWYgSEFWRV9MQ0hGTEFHUwotUHlEb2NfU1RSVkFSKHBvc2l4X2xjaGZsYWdzX19kb2NfXywKLSJsY2hmbGFncyhwYXRoLCBmbGFncylcblxuXAotU2V0IGZpbGUgZmxhZ3MuXG5cCi1UaGlzIGZ1bmN0aW9uIHdpbGwgbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy5cblwKLUVxdWl2YWxlbnQgdG8gY2hmbGFncyhwYXRoLCBmbGFncywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmxjaGZsYWdzCisKKyAgICBwYXRoOiBwYXRoX3QKKyAgICBmbGFnczogdW5zaWduZWRfbG9uZyhiaXR3aXNlPVRydWUpCisKK1NldCBmaWxlIGZsYWdzLgorCitUaGlzIGZ1bmN0aW9uIHdpbGwgbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy4KK0VxdWl2YWxlbnQgdG8gY2hmbGFncyhwYXRoLCBmbGFncywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xjaGZsYWdzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2xjaGZsYWdzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1bnNpZ25lZCBsb25nIGZsYWdzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY3NDEzMjJmYjk0OTY2MWIgaW5wdXQ9ZjlmODJlYThiNTg1Y2E5ZF0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgaW50IHJlczsKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gImxjaGZsYWdzIjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mazpsY2hmbGFncyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGxjaGZsYWdzKHBhdGgubmFycm93LCBmbGFncyk7CisgICAgcmVzID0gbGNoZmxhZ3MocGF0aC0+bmFycm93LCBmbGFncyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzIDwgMCkgewotICAgICAgICBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOwogICAgIH0KLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIEhBVkVfTENIRkxBR1MgKi8KIAorCiAjaWZkZWYgSEFWRV9DSFJPT1QKLVB5RG9jX1NUUlZBUihwb3NpeF9jaHJvb3RfX2RvY19fLAotImNocm9vdChwYXRoKVxuXG5cCi1DaGFuZ2Ugcm9vdCBkaXJlY3RvcnkgdG8gcGF0aC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmNocm9vdAorICAgIHBhdGg6IHBhdGhfdAorCitDaGFuZ2Ugcm9vdCBkaXJlY3RvcnkgdG8gcGF0aC4KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY2hyb290KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2Nocm9vdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNmRiZmFiZTc0ZWNhYTlkIGlucHV0PTE0ODIyOTY1NjUyYzNkYzNdKi8KIHsKLSAgICByZXR1cm4gcG9zaXhfMXN0cigiY2hyb290IiwgYXJncywgIk8mOmNocm9vdCIsIGNocm9vdCk7CisgICAgaW50IHJlczsKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzID0gY2hyb290KHBhdGgtPm5hcnJvdyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0NIUk9PVCAqLworCiAKICNpZmRlZiBIQVZFX0ZTWU5DCi1QeURvY19TVFJWQVIocG9zaXhfZnN5bmNfX2RvY19fLAotImZzeW5jKGZpbGRlcylcblxuXAotZm9yY2Ugd3JpdGUgb2YgZmlsZSB3aXRoIGZpbGVkZXNjcmlwdG9yIHRvIGRpc2suIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5mc3luYworCisgICAgZmQ6IGZpbGRlcworCitGb3JjZSB3cml0ZSBvZiBmZCB0byBkaXNrLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZnN5bmMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmZG9iaikKK29zX2ZzeW5jX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgzYTM1MDg1MTA2NGFlYTcgaW5wdXQ9MjFjMzY0NWMwNTY5NjdmMl0qLwogewotICAgIHJldHVybiBwb3NpeF9maWxkZXMoZmRvYmosIGZzeW5jKTsKKyAgICByZXR1cm4gcG9zaXhfZmlsZGVzX2ZkKGZkLCBmc3luYyk7CiB9CiAjZW5kaWYgLyogSEFWRV9GU1lOQyAqLwogCisKICNpZmRlZiBIQVZFX1NZTkMKLVB5RG9jX1NUUlZBUihwb3NpeF9zeW5jX19kb2NfXywKLSJzeW5jKClcblxuXAotRm9yY2Ugd3JpdGUgb2YgZXZlcnl0aGluZyB0byBkaXNrLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc3luYworCitGb3JjZSB3cml0ZSBvZiBldmVyeXRoaW5nIHRvIGRpc2suCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zeW5jKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3Nfc3luY19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmE1MjRmNjU2YzIwMWM0MCBpbnB1dD04NDc0OWZlNWU5YjQwNGZmXSovCiB7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHN5bmMoKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIFB5X1JFVFVSTl9OT05FOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9TWU5DICovCisKIAogI2lmZGVmIEhBVkVfRkRBVEFTWU5DCi0KICNpZmRlZiBfX2hwdXgKIGV4dGVybiBpbnQgZmRhdGFzeW5jKGludCk7IC8qIE9uIEhQLVVYLCBpbiBsaWJjIGJ1dCBub3QgaW4gdW5pc3RkLmggKi8KICNlbmRpZgogCi1QeURvY19TVFJWQVIocG9zaXhfZmRhdGFzeW5jX19kb2NfXywKLSJmZGF0YXN5bmMoZmlsZGVzKVxuXG5cCi1mb3JjZSB3cml0ZSBvZiBmaWxlIHdpdGggZmlsZWRlc2NyaXB0b3IgdG8gZGlzay5cblwKLSBkb2VzIG5vdCBmb3JjZSB1cGRhdGUgb2YgbWV0YWRhdGEuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5mZGF0YXN5bmMKKworICAgIGZkOiBmaWxkZXMKKworRm9yY2Ugd3JpdGUgb2YgZmQgdG8gZGlzayB3aXRob3V0IGZvcmNpbmcgdXBkYXRlIG9mIG1ldGFkYXRhLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZmRhdGFzeW5jKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmRvYmopCitvc19mZGF0YXN5bmNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTBmMDRhM2FmZjUxNWI3NSBpbnB1dD1iYzc0NzkxZWU1NGRkMjkxXSovCiB7Ci0gICAgcmV0dXJuIHBvc2l4X2ZpbGRlcyhmZG9iaiwgZmRhdGFzeW5jKTsKKyAgICByZXR1cm4gcG9zaXhfZmlsZGVzX2ZkKGZkLCBmZGF0YXN5bmMpOwogfQogI2VuZGlmIC8qIEhBVkVfRkRBVEFTWU5DICovCiAKIAogI2lmZGVmIEhBVkVfQ0hPV04KLVB5RG9jX1NUUlZBUihwb3NpeF9jaG93bl9fZG9jX18sCi0iY2hvd24ocGF0aCwgdWlkLCBnaWQsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAotQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgcGF0aCB0byB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZC5cblwKLVxuXAotcGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cblwKLU9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLSAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuXAotSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKLSAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKLUlmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAotICBsaW5rLCBjaG93biB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGVcblwKLSAgbGluayBwb2ludHMgdG8uXG5cCi1JdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhc1xuXAotICBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLWRpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5jaG93bgorCisgICAgcGF0aCA6IHBhdGhfdChhbGxvd19mZD0nUEFUSF9IQVZFX0ZDSE9XTicpCisgICAgICAgIFBhdGggdG8gYmUgZXhhbWluZWQ7IGNhbiBiZSBzdHJpbmcsIGJ5dGVzLCBvciBvcGVuLWZpbGUtZGVzY3JpcHRvciBpbnQuCisKKyAgICB1aWQ6IHVpZF90CisKKyAgICBnaWQ6IGdpZF90CisKKyAgICAqCisKKyAgICBkaXJfZmQgOiBkaXJfZmQocmVxdWlyZXM9J2ZjaG93bmF0JykgPSBOb25lCisgICAgICAgIElmIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKKyAgICAgICAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0CisgICAgICAgIGRpcmVjdG9yeS4KKworICAgIGZvbGxvd19zeW1saW5rczogYm9vbCA9IFRydWUKKyAgICAgICAgSWYgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMgbGluaywKKyAgICAgICAgc3RhdCB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUKKyAgICAgICAgdGhlIGxpbmsgcG9pbnRzIHRvLgorCitDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiBwYXRoIHRvIHRoZSBudW1lcmljIHVpZCBhbmQgZ2lkLlwKKworcGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy4KK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLgorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYworICBsaW5rLCBjaG93biB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGUKKyAgbGluayBwb2ludHMgdG8uCitJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhcworICBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KK2Rpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KKyAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2Nob3duKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2Nob3duX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwKKyAgICAgICAgICAgICAgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMGE0NTU5ZjM5NGRiZDkxIGlucHV0PWE2MWNjMzU1NzQ4MTRkNWRdKi8KIHsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICB1aWRfdCB1aWQ7Ci0gICAgZ2lkX3QgZ2lkOwotICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKICAgICBpbnQgcmVzdWx0OwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgInVpZCIsICJnaWQiLCAiZGlyX2ZkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07Ci0KLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gImNob3duIjsKLSNpZmRlZiBIQVZFX0ZDSE9XTgotICAgIHBhdGguYWxsb3dfZmQgPSAxOwotI2VuZGlmCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJk8mfCRPJnA6Y2hvd24iLCBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQsCi0jaWZkZWYgSEFWRV9GQ0hPV05BVAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQsCi0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZCwKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogI2lmICEoZGVmaW5lZChIQVZFX0xDSE9XTikgfHwgZGVmaW5lZChIQVZFX0ZDSE9XTkFUKSkKICAgICBpZiAoZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgiY2hvd24iLCBmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiBOVUxMOwogI2VuZGlmCi0gICAgaWYgKGRpcl9mZF9hbmRfZmRfaW52YWxpZCgiY2hvd24iLCBkaXJfZmQsIHBhdGguZmQpIHx8Ci0gICAgICAgIGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgiY2hvd24iLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKGRpcl9mZF9hbmRfZmRfaW52YWxpZCgiY2hvd24iLCBkaXJfZmQsIHBhdGgtPmZkKSB8fAorICAgICAgICBmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoImNob3duIiwgcGF0aC0+ZmQsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAjaWZkZWYgX19BUFBMRV9fCiAgICAgLyoKQEAgLTMzMTUsMTAyICszMTY4LDk4IEBACiAgICAgICovCiAgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAobGNob3duID09IE5VTEwpKSB7CiAgICAgICAgIGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNob3duIiwgZm9sbG93X3N5bWxpbmtzKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAjZW5kaWYKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBIQVZFX0ZDSE9XTgotICAgIGlmIChwYXRoLmZkICE9IC0xKQotICAgICAgICByZXN1bHQgPSBmY2hvd24ocGF0aC5mZCwgdWlkLCBnaWQpOworICAgIGlmIChwYXRoLT5mZCAhPSAtMSkKKyAgICAgICAgcmVzdWx0ID0gZmNob3duKHBhdGgtPmZkLCB1aWQsIGdpZCk7CiAgICAgZWxzZQogI2VuZGlmCiAjaWZkZWYgSEFWRV9MQ0hPV04KICAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpKQotICAgICAgICByZXN1bHQgPSBsY2hvd24ocGF0aC5uYXJyb3csIHVpZCwgZ2lkKTsKKyAgICAgICAgcmVzdWx0ID0gbGNob3duKHBhdGgtPm5hcnJvdywgdWlkLCBnaWQpOwogICAgIGVsc2UKICNlbmRpZgogI2lmZGVmIEhBVkVfRkNIT1dOQVQKICAgICBpZiAoKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwgKCFmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICByZXN1bHQgPSBmY2hvd25hdChkaXJfZmQsIHBhdGgubmFycm93LCB1aWQsIGdpZCwKKyAgICAgICAgcmVzdWx0ID0gZmNob3duYXQoZGlyX2ZkLCBwYXRoLT5uYXJyb3csIHVpZCwgZ2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3MgPyAwIDogQVRfU1lNTElOS19OT0ZPTExPVyk7CiAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgIHJlc3VsdCA9IGNob3duKHBhdGgubmFycm93LCB1aWQsIGdpZCk7CisgICAgICAgIHJlc3VsdCA9IGNob3duKHBhdGgtPm5hcnJvdywgdWlkLCBnaWQpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOwogCi0gICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0KLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIEhBVkVfQ0hPV04gKi8KIAorCiAjaWZkZWYgSEFWRV9GQ0hPV04KLVB5RG9jX1NUUlZBUihwb3NpeF9mY2hvd25fX2RvY19fLAotImZjaG93bihmZCwgdWlkLCBnaWQpXG5cblwKLUNoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHRoZSBmaWxlIGdpdmVuIGJ5IGZpbGUgZGVzY3JpcHRvclxuXAotZmQgdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuICBFcXVpdmFsZW50IHRvIG9zLmNob3duKGZkLCB1aWQsIGdpZCkuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5mY2hvd24KKworICAgIGZkOiBpbnQKKyAgICB1aWQ6IHVpZF90CisgICAgZ2lkOiBnaWRfdAorCitDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgZmlsZSBkZXNjcmlwdG9yLgorCitFcXVpdmFsZW50IHRvIG9zLmNob3duKGZkLCB1aWQsIGdpZCkuCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2ZjaG93bihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19mY2hvd25faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc1NDVhYmY4ZjYwODZkNzYgaW5wdXQ9M2FmNTQ0YmExYjEzYTBkN10qLwogewotICAgIGludCBmZDsKLSAgICB1aWRfdCB1aWQ7Ci0gICAgZ2lkX3QgZ2lkOwogICAgIGludCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJjpmY2hvd24iLCAmZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBmY2hvd24oZmQsIHVpZCwgZ2lkKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXMgPSBmY2hvd24oZmQsIHVpZCwgZ2lkKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXMgIT0gMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHJlcyAhPSAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX0ZDSE9XTiAqLwogCisKICNpZmRlZiBIQVZFX0xDSE9XTgotUHlEb2NfU1RSVkFSKHBvc2l4X2xjaG93bl9fZG9jX18sCi0ibGNob3duKHBhdGgsIHVpZCwgZ2lkKVxuXG5cCi1DaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiBwYXRoIHRvIHRoZSBudW1lcmljIHVpZCBhbmQgZ2lkLlxuXAotVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuXG5cCi1FcXVpdmFsZW50IHRvIG9zLmNob3duKHBhdGgsIHVpZCwgZ2lkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOworLypbY2xpbmljIGlucHV0XQorb3MubGNob3duCisKKyAgICBwYXRoIDogcGF0aF90CisgICAgdWlkOiB1aWRfdAorICAgIGdpZDogZ2lkX3QKKworQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgcGF0aCB0byB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZC4KKworVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuCitFcXVpdmFsZW50IHRvIG9zLmNob3duKHBhdGgsIHVpZCwgZ2lkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfbGNob3duKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2xjaG93bl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmIwZDJkYTE1NzlhYzI3NSBpbnB1dD1iMWM2MDE0ZDU2M2E3MTYxXSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgdWlkX3QgdWlkOwotICAgIGdpZF90IGdpZDsKICAgICBpbnQgcmVzOwotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAibGNob3duIjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyZPJjpsY2hvd24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBsY2hvd24ocGF0aC5uYXJyb3csIHVpZCwgZ2lkKTsKKyAgICByZXMgPSBsY2hvd24ocGF0aC0+bmFycm93LCB1aWQsIGdpZCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzIDwgMCkgewotICAgICAgICBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOwogICAgIH0KLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX0xDSE9XTiAqLwogCkBAIC0zNDg3LDE0OCArMzMzNiwxMjUgQEAKICAgICByZXR1cm4gb2JqOwogfQogCi1QeURvY19TVFJWQVIocG9zaXhfZ2V0Y3dkX19kb2NfXywKLSJnZXRjd2QoKSAtPiBwYXRoXG5cblwKLVJldHVybiBhIHVuaWNvZGUgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0Y3dkCisKK1JldHVybiBhIHVuaWNvZGUgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldGN3ZF91bmljb2RlKFB5T2JqZWN0ICpzZWxmKQorb3NfZ2V0Y3dkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lZmUzYThjMDEyMTUyNWVhIGlucHV0PWYwNjkyMTFiYjcwZTNkMzldKi8KIHsKICAgICByZXR1cm4gcG9zaXhfZ2V0Y3dkKDApOwogfQogCi1QeURvY19TVFJWQVIocG9zaXhfZ2V0Y3dkYl9fZG9jX18sCi0iZ2V0Y3dkYigpIC0+IHBhdGhcblxuXAotUmV0dXJuIGEgYnl0ZXMgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0Y3dkYgorCitSZXR1cm4gYSBieXRlcyBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0Y3dkX2J5dGVzKFB5T2JqZWN0ICpzZWxmKQorb3NfZ2V0Y3dkYl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2ZjZTQyZWU0YjJhMjk2YSBpbnB1dD1mNmY2YTM3OGRhZDNkOWNiXSovCiB7CiAgICAgcmV0dXJuIHBvc2l4X2dldGN3ZCgxKTsKIH0KIAorCiAjaWYgKCghZGVmaW5lZChIQVZFX0xJTkspKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpKQogI2RlZmluZSBIQVZFX0xJTksgMQogI2VuZGlmCiAKICNpZmRlZiBIQVZFX0xJTksKLVB5RG9jX1NUUlZBUihwb3NpeF9saW5rX19kb2NfXywKLSJsaW5rKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKLUNyZWF0ZSBhIGhhcmQgbGluayB0byBhIGZpbGUuXG5cCi1cblwKLUlmIGVpdGhlciBzcmNfZGlyX2ZkIG9yIGRzdF9kaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGVcblwKLSAgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHJlc3BlY3RpdmUgcGF0aCBzdHJpbmcgKHNyYyBvciBkc3QpXG5cCi0gIHNob3VsZCBiZSByZWxhdGl2ZTsgdGhlIHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiBzcmMgaXMgYSBzeW1ib2xpY1xuXAotICBsaW5rLCBsaW5rIHdpbGwgY3JlYXRlIGEgbGluayB0byB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGVcblwKLSAgZmlsZSB0aGUgbGluayBwb2ludHMgdG8uXG5cCi1zcmNfZGlyX2ZkLCBkc3RfZGlyX2ZkLCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91clxuXAotICBwbGF0Zm9ybS4gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYVxuXAotICBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworLypbY2xpbmljIGlucHV0XQorCitvcy5saW5rCisKKyAgICBzcmMgOiBwYXRoX3QKKyAgICBkc3QgOiBwYXRoX3QKKyAgICAqCisgICAgc3JjX2Rpcl9mZCA6IGRpcl9mZCA9IE5vbmUKKyAgICBkc3RfZGlyX2ZkIDogZGlyX2ZkID0gTm9uZQorICAgIGZvbGxvd19zeW1saW5rczogYm9vbCA9IFRydWUKKworQ3JlYXRlIGEgaGFyZCBsaW5rIHRvIGEgZmlsZS4KKworSWYgZWl0aGVyIHNyY19kaXJfZmQgb3IgZHN0X2Rpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZQorICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdCkKKyAgc2hvdWxkIGJlIHJlbGF0aXZlOyB0aGUgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHNyYyBpcyBhIHN5bWJvbGljCisgIGxpbmssIGxpbmsgd2lsbCBjcmVhdGUgYSBsaW5rIHRvIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZQorICBmaWxlIHRoZSBsaW5rIHBvaW50cyB0by4KK3NyY19kaXJfZmQsIGRzdF9kaXJfZmQsIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyCisgIHBsYXRmb3JtLiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhCisgIE5vdEltcGxlbWVudGVkRXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xpbmtfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsIGludCBzcmNfZGlyX2ZkLAorICAgICAgICAgICAgIGludCBkc3RfZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY0N2E3ZTg4ZjdiMzkxYjYgaW5wdXQ9YjAwOTVlYmJjYmFhN2UwNF0qLwogewotICAgIHBhdGhfdCBzcmMsIGRzdDsKLSAgICBpbnQgc3JjX2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwotICAgIGludCBkc3RfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7Ci0gICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAic3JjX2Rpcl9mZCIsICJkc3RfZGlyX2ZkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CiAjaWZkZWYgTVNfV0lORE9XUwogICAgIEJPT0wgcmVzdWx0OwogI2Vsc2UKICAgICBpbnQgcmVzdWx0OwogI2VuZGlmCiAKLSAgICBtZW1zZXQoJnNyYywgMCwgc2l6ZW9mKHNyYykpOwotICAgIG1lbXNldCgmZHN0LCAwLCBzaXplb2YoZHN0KSk7Ci0gICAgc3JjLmZ1bmN0aW9uX25hbWUgPSAibGluayI7Ci0gICAgZHN0LmZ1bmN0aW9uX25hbWUgPSAibGluayI7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnxPJk8mcDpsaW5rIiwga2V5d29yZHMsCi0gICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywKLSAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmZHN0LAotICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsCi0gICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCwKLSAgICAgICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogI2lmbmRlZiBIQVZFX0xJTktBVAogICAgIGlmICgoc3JjX2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwgKGRzdF9kaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpKSB7CiAgICAgICAgIGFyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKCJsaW5rIiwgInNyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQiKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAjZW5kaWYKIAotICAgIGlmICgoc3JjLm5hcnJvdyAmJiBkc3Qud2lkZSkgfHwgKHNyYy53aWRlICYmIGRzdC5uYXJyb3cpKSB7CisgICAgaWYgKChzcmMtPm5hcnJvdyAmJiBkc3QtPndpZGUpIHx8IChzcmMtPndpZGUgJiYgZHN0LT5uYXJyb3cpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImxpbms6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHNyYy53aWRlKQotICAgICAgICByZXN1bHQgPSBDcmVhdGVIYXJkTGlua1coZHN0LndpZGUsIHNyYy53aWRlLCBOVUxMKTsKKyAgICBpZiAoc3JjLT53aWRlKQorICAgICAgICByZXN1bHQgPSBDcmVhdGVIYXJkTGlua1coZHN0LT53aWRlLCBzcmMtPndpZGUsIE5VTEwpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gQ3JlYXRlSGFyZExpbmtBKGRzdC5uYXJyb3csIHNyYy5uYXJyb3csIE5VTEwpOworICAgICAgICByZXN1bHQgPSBDcmVhdGVIYXJkTGlua0EoZHN0LT5uYXJyb3csIHNyYy0+bmFycm93LCBOVUxMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcjIoJnNyYywgJmRzdCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yMihzcmMsIGRzdCk7CiAjZWxzZQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBIQVZFX0xJTktBVAogICAgIGlmICgoc3JjX2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwKICAgICAgICAgKGRzdF9kaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8CiAgICAgICAgICghZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgcmVzdWx0ID0gbGlua2F0KHNyY19kaXJfZmQsIHNyYy5uYXJyb3csCi0gICAgICAgICAgICBkc3RfZGlyX2ZkLCBkc3QubmFycm93LAorICAgICAgICByZXN1bHQgPSBsaW5rYXQoc3JjX2Rpcl9mZCwgc3JjLT5uYXJyb3csCisgICAgICAgICAgICBkc3RfZGlyX2ZkLCBkc3QtPm5hcnJvdywKICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rcyA/IEFUX1NZTUxJTktfRk9MTE9XIDogMCk7CiAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgIHJlc3VsdCA9IGxpbmsoc3JjLm5hcnJvdywgZHN0Lm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IGxpbmsoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yMigmc3JjLCAmZHN0KTsKLSAgICAgICAgZ290byBleGl0OwotICAgIH0KKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXR1cm4gcGF0aF9lcnJvcjIoc3JjLCBkc3QpOwogI2VuZGlmCiAKLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLQotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnNyYyk7Ci0gICAgcGF0aF9jbGVhbnVwKCZkc3QpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYKIAogCi0KLVB5RG9jX1NUUlZBUihwb3NpeF9saXN0ZGlyX19kb2NfXywKLSJsaXN0ZGlyKHBhdGg9Jy4nKSAtPiBsaXN0X29mX2ZpbGVuYW1lc1xuXG5cCi1SZXR1cm4gYSBsaXN0IGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIHRoZSBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5LlxuXAotVGhlIGxpc3QgaXMgaW4gYXJiaXRyYXJ5IG9yZGVyLiAgSXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgc3BlY2lhbFxuXAotZW50cmllcyAnLicgYW5kICcuLicgZXZlbiBpZiB0aGV5IGFyZSBwcmVzZW50IGluIHRoZSBkaXJlY3RvcnkuXG5cCi1cblwKLXBhdGggY2FuIGJlIHNwZWNpZmllZCBhcyBlaXRoZXIgc3RyIG9yIGJ5dGVzLiAgSWYgcGF0aCBpcyBieXRlcyxcblwKLSAgdGhlIGZpbGVuYW1lcyByZXR1cm5lZCB3aWxsIGFsc28gYmUgYnl0ZXM7IGluIGFsbCBvdGhlciBjaXJjdW1zdGFuY2VzXG5cCi0gIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBiZSBzdHIuXG5cCi1PbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3I7XG5cCi0gIHRoZSBmaWxlIGRlc2NyaXB0b3IgbXVzdCByZWZlciB0byBhIGRpcmVjdG9yeS5cblwKLSAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKLQogI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoSEFWRV9PUEVORElSKQogc3RhdGljIFB5T2JqZWN0ICoKIF9saXN0ZGlyX3dpbmRvd3Nfbm9fb3BlbmRpcihwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICpsaXN0KQogewotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CiAgICAgUHlPYmplY3QgKnY7CiAgICAgSEFORExFIGhGaW5kRmlsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwogICAgIEJPT0wgcmVzdWx0OwpAQCAtMzg4NywxMjMgKzM3MTMsMTE3IEBACiB9ICAvKiBlbmQgb2YgX3Bvc2l4X2xpc3RkaXIgKi8KICNlbmRpZiAgLyogd2hpY2ggT1MgKi8KIAorCisvKltjbGluaWMgaW5wdXRdCitvcy5saXN0ZGlyCisKKyAgICBwYXRoIDogcGF0aF90KG51bGxhYmxlPVRydWUsIGFsbG93X2ZkPSdQQVRIX0hBVkVfRkRPUEVORElSJykgPSBOb25lCisKK1JldHVybiBhIGxpc3QgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuCisKK3BhdGggY2FuIGJlIHNwZWNpZmllZCBhcyBlaXRoZXIgc3RyIG9yIGJ5dGVzLiAgSWYgcGF0aCBpcyBieXRlcywKKyAgdGhlIGZpbGVuYW1lcyByZXR1cm5lZCB3aWxsIGFsc28gYmUgYnl0ZXM7IGluIGFsbCBvdGhlciBjaXJjdW1zdGFuY2VzCisgIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBiZSBzdHIuCitJZiBwYXRoIGlzIE5vbmUsIHVzZXMgdGhlIHBhdGg9Jy4nLgorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yO1wKKyAgdGhlIGZpbGUgZGVzY3JpcHRvciBtdXN0IHJlZmVyIHRvIGEgZGlyZWN0b3J5LgorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBOb3RJbXBsZW1lbnRlZEVycm9yLgorCitUaGUgbGlzdCBpcyBpbiBhcmJpdHJhcnkgb3JkZXIuICBJdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzcGVjaWFsCitlbnRyaWVzICcuJyBhbmQgJy4uJyBldmVuIGlmIHRoZXkgYXJlIHByZXNlbnQgaW4gdGhlIGRpcmVjdG9yeS4KKworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9saXN0ZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xpc3RkaXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWZiZTY3YzFmNzgwYzhiNyBpbnB1dD0wOWUzMDA0MTZlM2NkNzI5XSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgUHlPYmplY3QgKmxpc3QgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZTsKLQotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAibGlzdGRpciI7Ci0gICAgcGF0aC5udWxsYWJsZSA9IDE7Ci0jaWZkZWYgSEFWRV9GRE9QRU5ESVIKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSAgICBwYXRoLmZkID0gLTE7Ci0jZW5kaWYKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPJjpsaXN0ZGlyIiwga2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKEhBVkVfT1BFTkRJUikKLSAgICByZXR1cm5fdmFsdWUgPSBfbGlzdGRpcl93aW5kb3dzX25vX29wZW5kaXIoJnBhdGgsIGxpc3QpOworICAgIHJldHVybiBfbGlzdGRpcl93aW5kb3dzX25vX29wZW5kaXIocGF0aCwgTlVMTCk7CiAjZWxzZQotICAgIHJldHVybl92YWx1ZSA9IF9wb3NpeF9saXN0ZGlyKCZwYXRoLCBsaXN0KTsKKyAgICByZXR1cm4gX3Bvc2l4X2xpc3RkaXIocGF0aCwgTlVMTCk7CiAjZW5kaWYKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKICNpZmRlZiBNU19XSU5ET1dTCiAvKiBBIGhlbHBlciBmdW5jdGlvbiBmb3IgYWJzcGF0aCBvbiB3aW4zMiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X19nZXRmdWxscGF0aG5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGNvbnN0IGNoYXIgKnBhdGg7Ci0gICAgY2hhciBvdXRidWZbTUFYX1BBVEhdOwotICAgIGNoYXIgKnRlbXA7Ci0gICAgUHlPYmplY3QgKnBvOworLypbY2xpbmljIGlucHV0XQorb3MuX2dldGZ1bGxwYXRobmFtZQogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Ol9nZXRmdWxscGF0aG5hbWUiLCAmcG8pKQorICAgIHBhdGg6IHBhdGhfdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfX2dldGZ1bGxwYXRobmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iOTBiMWYxMDNiMDg3NzNmIGlucHV0PTMzMmVkNTM3YzI5ZDBhM2VdKi8KK3sKKyAgICBpZiAoIXBhdGgtPm5hcnJvdykKICAgICB7Ci0gICAgICAgIHdjaGFyX3QgKndwYXRoOwogICAgICAgICB3Y2hhcl90IHdvdXRidWZbTUFYX1BBVEhdLCAqd291dGJ1ZnAgPSB3b3V0YnVmOwogICAgICAgICB3Y2hhcl90ICp3dGVtcDsKICAgICAgICAgRFdPUkQgcmVzdWx0OwogICAgICAgICBQeU9iamVjdCAqdjsKIAotICAgICAgICB3cGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUocG8pOwotICAgICAgICBpZiAod3BhdGggPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXN1bHQgPSBHZXRGdWxsUGF0aE5hbWVXKHdwYXRoLAorICAgICAgICByZXN1bHQgPSBHZXRGdWxsUGF0aE5hbWVXKHBhdGgtPndpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfQVJSQVlfTEVOR1RIKHdvdXRidWYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvdXRidWYsICZ3dGVtcCk7CiAgICAgICAgIGlmIChyZXN1bHQgPiBQeV9BUlJBWV9MRU5HVEgod291dGJ1ZikpIHsKICAgICAgICAgICAgIHdvdXRidWZwID0gUHlNZW1fTmV3KHdjaGFyX3QsIHJlc3VsdCk7CiAgICAgICAgICAgICBpZiAoIXdvdXRidWZwKQogICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyh3cGF0aCwgcmVzdWx0LCB3b3V0YnVmcCwgJnd0ZW1wKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IEdldEZ1bGxQYXRoTmFtZVcocGF0aC0+d2lkZSwgcmVzdWx0LCB3b3V0YnVmcCwgJnd0ZW1wKTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod291dGJ1ZnAsIHdjc2xlbih3b3V0YnVmcCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB2ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGdWxsUGF0aE5hbWVXIiwgcG8pOworICAgICAgICAgICAgdiA9IHdpbjMyX2Vycm9yX29iamVjdCgiR2V0RnVsbFBhdGhOYW1lVyIsIHBhdGgtPm9iamVjdCk7CiAgICAgICAgIGlmICh3b3V0YnVmcCAhPSB3b3V0YnVmKQogICAgICAgICAgICAgUHlNZW1fRnJlZSh3b3V0YnVmcCk7CiAgICAgICAgIHJldHVybiB2OwogICAgIH0KLSAgICAvKiBEcm9wIHRoZSBhcmd1bWVudCBwYXJzaW5nIGVycm9yIGFzIG5hcnJvdyBzdHJpbmdzCi0gICAgICAgYXJlIGFsc28gdmFsaWQuICovCi0gICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgY2hhciBvdXRidWZbTUFYX1BBVEhdOworICAgICAgICBjaGFyICp0ZW1wOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlIChhcmdzLCAieTpfZ2V0ZnVsbHBhdGhuYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXRoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHdpbjMyX3dhcm5fYnl0ZXNfYXBpKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghR2V0RnVsbFBhdGhOYW1lKHBhdGgsIFB5X0FSUkFZX0xFTkdUSChvdXRidWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgIG91dGJ1ZiwgJnRlbXApKSB7Ci0gICAgICAgIHdpbjMyX2Vycm9yKCJHZXRGdWxsUGF0aE5hbWUiLCBwYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICghR2V0RnVsbFBhdGhOYW1lKHBhdGgtPm5hcnJvdywgUHlfQVJSQVlfTEVOR1RIKG91dGJ1ZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGJ1ZiwgJnRlbXApKSB7CisgICAgICAgICAgICB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZ1bGxQYXRoTmFtZSIsIHBhdGgtPm9iamVjdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nKG91dGJ1Zik7CiAgICAgfQotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soUHlUdXBsZV9HZXRJdGVtKGFyZ3MsIDApKSkgewotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZShvdXRidWYsIHN0cmxlbihvdXRidWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nLCBOVUxMKTsKLSAgICB9Ci0gICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZyhvdXRidWYpOwotfSAvKiBlbmQgb2YgcG9zaXhfX2dldGZ1bGxwYXRobmFtZSAqLworfQogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK29zLl9nZXRmaW5hbHBhdGhuYW1lCiAKLS8qIEEgaGVscGVyIGZ1bmN0aW9uIGZvciBzYW1lcGF0aCBvbiB3aW5kb3dzICovCisgICAgcGF0aDogdW5pY29kZQorICAgIC8KKworQSBoZWxwZXIgZnVuY3Rpb24gZm9yIHNhbWVwYXRoIG9uIHdpbmRvd3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9fZ2V0ZmluYWxwYXRobmFtZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19fZ2V0ZmluYWxwYXRobmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThiZTgxYTVmNTFhMzRiY2YgaW5wdXQ9NzFkNWU4OTMzNDg5MWJmNF0qLwogewogICAgIEhBTkRMRSBoRmlsZTsKICAgICBpbnQgYnVmX3NpemU7CiAgICAgd2NoYXJfdCAqdGFyZ2V0X3BhdGg7CiAgICAgaW50IHJlc3VsdF9sZW5ndGg7Ci0gICAgUHlPYmplY3QgKnBvLCAqcmVzdWx0OwotICAgIHdjaGFyX3QgKnBhdGg7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICB3Y2hhcl90ICpwYXRoX3djaGFyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfDpfZ2V0ZmluYWxwYXRobmFtZSIsICZwbykpCisgICAgcGF0aF93Y2hhciA9IFB5VW5pY29kZV9Bc1VuaWNvZGUocGF0aCk7CisgICAgaWYgKHBhdGhfd2NoYXIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUocG8pOwotICAgIGlmIChwYXRoID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYoIWNoZWNrX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSgpKSB7Ci0gICAgICAgIC8qIElmIHRoZSBPUyBkb2Vzbid0IGhhdmUgR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlLCByZXR1cm4gYQotICAgICAgICAgICBOb3RJbXBsZW1lbnRlZEVycm9yLiAqLwotICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCi0gICAgICAgICAgICAiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlIG5vdCBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSIpOwotICAgIH0KIAogICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcoCi0gICAgICAgIHBhdGgsCisgICAgICAgIHBhdGhfd2NoYXIsCiAgICAgICAgIDAsIC8qIGRlc2lyZWQgYWNjZXNzICovCiAgICAgICAgIDAsIC8qIHNoYXJlIG1vZGUgKi8KICAgICAgICAgTlVMTCwgLyogc2VjdXJpdHkgYXR0cmlidXRlcyAqLwpAQCAtNDAxMyw4OSArMzgzMyw4NCBAQAogICAgICAgICBOVUxMKTsKIAogICAgIGlmKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJDcmVhdGVGaWxlVyIsIHBvKTsKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiQ3JlYXRlRmlsZVciLCBwYXRoKTsKIAogICAgIC8qIFdlIGhhdmUgYSBnb29kIGhhbmRsZSB0byB0aGUgdGFyZ2V0LCB1c2UgaXQgdG8gZGV0ZXJtaW5lIHRoZQogICAgICAgIHRhcmdldCBwYXRoIG5hbWUuICovCi0gICAgYnVmX3NpemUgPSBQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhGaWxlLCAwLCAwLCBWT0xVTUVfTkFNRV9OVCk7CisgICAgYnVmX3NpemUgPSBHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhGaWxlLCAwLCAwLCBWT0xVTUVfTkFNRV9OVCk7CiAKICAgICBpZighYnVmX3NpemUpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSIsIHBvKTsKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlIiwgcGF0aCk7CiAKICAgICB0YXJnZXRfcGF0aCA9IFB5TWVtX05ldyh3Y2hhcl90LCBidWZfc2l6ZSsxKTsKICAgICBpZighdGFyZ2V0X3BhdGgpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogCi0gICAgcmVzdWx0X2xlbmd0aCA9IFB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoaEZpbGUsIHRhcmdldF9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zl9zaXplLCBWT0xVTUVfTkFNRV9ET1MpOworICAgIHJlc3VsdF9sZW5ndGggPSBHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhGaWxlLCB0YXJnZXRfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZfc2l6ZSwgVk9MVU1FX05BTUVfRE9TKTsKICAgICBpZighcmVzdWx0X2xlbmd0aCkKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiR2V0RmluYWxQYXRoTmFteUJ5SGFuZGxlIiwgcG8pOworICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGaW5hbFBhdGhOYW15QnlIYW5kbGUiLCBwYXRoKTsKIAogICAgIGlmKCFDbG9zZUhhbmRsZShoRmlsZSkpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkNsb3NlSGFuZGxlIiwgcG8pOworICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJDbG9zZUhhbmRsZSIsIHBhdGgpOwogCiAgICAgdGFyZ2V0X3BhdGhbcmVzdWx0X2xlbmd0aF0gPSAwOwogICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIodGFyZ2V0X3BhdGgsIHJlc3VsdF9sZW5ndGgpOwogICAgIFB5TWVtX0ZyZWUodGFyZ2V0X3BhdGgpOwogICAgIHJldHVybiByZXN1bHQ7Ci0KLX0gLyogZW5kIG9mIHBvc2l4X19nZXRmaW5hbHBhdGhuYW1lICovCit9CiAKIFB5RG9jX1NUUlZBUihwb3NpeF9faXNkaXJfX2RvY19fLAogIlJldHVybiB0cnVlIGlmIHRoZSBwYXRobmFtZSByZWZlcnMgdG8gYW4gZXhpc3RpbmcgZGlyZWN0b3J5LiIpOwogCisvKltjbGluaWMgaW5wdXRdCitvcy5faXNkaXIKKworICAgIHBhdGg6IHBhdGhfdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfX2lzZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX19pc2Rpcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMTdiMmQ0ZTE5OTRiMGZmIGlucHV0PWU3OTRmMTJmYWFiNjJhMmFdKi8KIHsKLSAgICBjb25zdCBjaGFyICpwYXRoOwotICAgIFB5T2JqZWN0ICpwbzsKICAgICBEV09SRCBhdHRyaWJ1dGVzOwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Ol9pc2RpciIsICZwbykpIHsKLSAgICAgICAgd2NoYXJfdCAqd3BhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBvKTsKLSAgICAgICAgaWYgKHdwYXRoID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIXBhdGgtPm5hcnJvdykKKyAgICAgICAgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLT53aWRlKTsKKyAgICBlbHNlCisgICAgICAgIGF0dHJpYnV0ZXMgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aC0+bmFycm93KTsKIAotICAgICAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHdwYXRoKTsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZXMgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpCi0gICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgICAgIGdvdG8gY2hlY2s7Ci0gICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Ol9pc2RpciIsICZwYXRoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHdpbjMyX3dhcm5fYnl0ZXNfYXBpKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGF0dHJpYnV0ZXMgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aCk7CiAgICAgaWYgKGF0dHJpYnV0ZXMgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpCiAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKIAotY2hlY2s6CiAgICAgaWYgKGF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCiAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwogICAgIGVsc2UKICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogfQogCi1QeURvY19TVFJWQVIocG9zaXhfX2dldHZvbHVtZXBhdGhuYW1lX19kb2NfXywKLSJSZXR1cm4gdm9sdW1lIG1vdW50IHBvaW50IG9mIHRoZSBzcGVjaWZpZWQgcGF0aC4iKTsKIAotLyogQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGlzbW91bnQgb24gd2luZG93cyAqLworLypbY2xpbmljIGlucHV0XQorb3MuX2dldHZvbHVtZXBhdGhuYW1lCisKKyAgICBwYXRoOiB1bmljb2RlCisKK0EgaGVscGVyIGZ1bmN0aW9uIGZvciBpc21vdW50IG9uIFdpbjMyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfX2dldHZvbHVtZXBhdGhuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX19nZXR2b2x1bWVwYXRobmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc5YTBiYTcyOWY5NTZkYmUgaW5wdXQ9N2VhY2FkYzQwYWNiZGE2Yl0qLwogewotICAgIFB5T2JqZWN0ICpwbywgKnJlc3VsdDsKLSAgICB3Y2hhcl90ICpwYXRoLCAqbW91bnRwYXRoPU5VTEw7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICB3Y2hhcl90ICpwYXRoX3djaGFyLCAqbW91bnRwYXRoPU5VTEw7CiAgICAgc2l6ZV90IGJ1ZmxlbjsKICAgICBCT09MIHJldDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXw6X2dldHZvbHVtZXBhdGhuYW1lIiwgJnBvKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHBvLCAmYnVmbGVuKTsKLSAgICBpZiAocGF0aCA9PSBOVUxMKQorICAgIHBhdGhfd2NoYXIgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShwYXRoLCAmYnVmbGVuKTsKKyAgICBpZiAocGF0aF93Y2hhciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBidWZsZW4gKz0gMTsKIApAQCAtNDExMiwxMiArMzkyNywxMiBAQAogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXQgPSBHZXRWb2x1bWVQYXRoTmFtZVcocGF0aCwgbW91bnRwYXRoLAorICAgIHJldCA9IEdldFZvbHVtZVBhdGhOYW1lVyhwYXRoX3djaGFyLCBtb3VudHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1NBRkVfRE9XTkNBU1QoYnVmbGVuLCBzaXplX3QsIERXT1JEKSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmICghcmV0KSB7Ci0gICAgICAgIHJlc3VsdCA9IHdpbjMyX2Vycm9yX29iamVjdCgiX2dldHZvbHVtZXBhdGhuYW1lIiwgcG8pOworICAgICAgICByZXN1bHQgPSB3aW4zMl9lcnJvcl9vYmplY3QoIl9nZXR2b2x1bWVwYXRobmFtZSIsIHBhdGgpOwogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQogICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIobW91bnRwYXRoLCB3Y3NsZW4obW91bnRwYXRoKSk7CkBAIC00MTI2LDc4ICszOTQxLDY2IEBACiAgICAgUHlNZW1fRnJlZShtb3VudHBhdGgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9Ci0vKiBlbmQgb2YgcG9zaXhfX2dldHZvbHVtZXBhdGhuYW1lICovCiAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9ta2Rpcl9fZG9jX18sCi0ibWtkaXIocGF0aCwgbW9kZT0wbzc3NywgKiwgZGlyX2ZkPU5vbmUpXG5cblwKLUNyZWF0ZSBhIGRpcmVjdG9yeS5cblwKLVxuXAotSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKLSAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKLWRpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCi0gIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci5cblwKLVxuXAotVGhlIG1vZGUgYXJndW1lbnQgaXMgaWdub3JlZCBvbiBXaW5kb3dzLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5ta2RpcgorCisgICAgcGF0aCA6IHBhdGhfdAorCisgICAgbW9kZTogaW50ID0gMG83NzcKKworICAgICoKKworICAgIGRpcl9mZCA6IGRpcl9mZChyZXF1aXJlcz0nbWtkaXJhdCcpID0gTm9uZQorCisjICJta2RpcihwYXRoLCBtb2RlPTBvNzc3LCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAorCitDcmVhdGUgYSBkaXJlY3RvcnkuCisKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLgorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuCisKK1RoZSBtb2RlIGFyZ3VtZW50IGlzIGlnbm9yZWQgb24gV2luZG93cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X21rZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX21rZGlyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04YmYxZjczODg3M2VmMmM1IGlucHV0PWU5NjVmNjgzNzdlOWIxY2VdKi8KIHsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICBpbnQgbW9kZSA9IDA3Nzc7Ci0gICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IHJlc3VsdDsKIAotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAibWtkaXIiOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGkkTyY6bWtkaXIiLCBrZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwKLSNpZmRlZiBIQVZFX01LRElSQVQKLSAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAotI2Vsc2UKLSAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCi0jZW5kaWYKLSAgICAgICAgKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChwYXRoLndpZGUpCi0gICAgICAgIHJlc3VsdCA9IENyZWF0ZURpcmVjdG9yeVcocGF0aC53aWRlLCBOVUxMKTsKKyAgICBpZiAocGF0aC0+d2lkZSkKKyAgICAgICAgcmVzdWx0ID0gQ3JlYXRlRGlyZWN0b3J5VyhwYXRoLT53aWRlLCBOVUxMKTsKICAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IENyZWF0ZURpcmVjdG9yeUEocGF0aC5uYXJyb3csIE5VTEwpOworICAgICAgICByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnlBKHBhdGgtPm5hcnJvdywgTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKICNlbHNlCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmIEhBVkVfTUtESVJBVAogICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCi0gICAgICAgIHJlc3VsdCA9IG1rZGlyYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgbW9kZSk7CisgICAgICAgIHJlc3VsdCA9IG1rZGlyYXQoZGlyX2ZkLCBwYXRoLT5uYXJyb3csIG1vZGUpOwogICAgIGVsc2UKICNlbmRpZgogI2lmICggZGVmaW5lZChfX1dBVENPTUNfXykgfHwgZGVmaW5lZChQWUNDX1ZBQ1BQKSApICYmICFkZWZpbmVkKF9fUU5YX18pCi0gICAgICAgIHJlc3VsdCA9IG1rZGlyKHBhdGgubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gbWtkaXIocGF0aC0+bmFycm93KTsKICNlbHNlCi0gICAgICAgIHJlc3VsdCA9IG1rZGlyKHBhdGgubmFycm93LCBtb2RlKTsKKyAgICAgICAgcmVzdWx0ID0gbWtkaXIocGF0aC0+bmFycm93LCBtb2RlKTsKICNlbmRpZgogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlc3VsdCA8IDApIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9CisgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOwogI2VuZGlmCi0gICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogCkBAIC00MjA4LDE3ICs0MDExLDIwIEBACiAKIAogI2lmZGVmIEhBVkVfTklDRQotUHlEb2NfU1RSVkFSKHBvc2l4X25pY2VfX2RvY19fLAotIm5pY2UoaW5jKSAtPiBuZXdfcHJpb3JpdHlcblxuXAotRGVjcmVhc2UgdGhlIHByaW9yaXR5IG9mIHByb2Nlc3MgYnkgaW5jIGFuZCByZXR1cm4gdGhlIG5ldyBwcmlvcml0eS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLm5pY2UKKworICAgIGluY3JlbWVudDogaW50CisgICAgLworCitBZGQgaW5jcmVtZW50IHRvIHRoZSBwcmlvcml0eSBvZiBwcm9jZXNzIGFuZCByZXR1cm4gdGhlIG5ldyBwcmlvcml0eS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X25pY2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfbmljZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBpbmNyZW1lbnQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODg3MDQxOGEzZmMwN2I1MSBpbnB1dD04NjRiZTJkNDAyYTIxZGEyXSovCiB7Ci0gICAgaW50IGluY3JlbWVudCwgdmFsdWU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6bmljZSIsICZpbmNyZW1lbnQpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpbnQgdmFsdWU7CiAKICAgICAvKiBUaGVyZSBhcmUgdHdvIGZsYXZvdXJzIG9mICduaWNlJzogb25lIHRoYXQgcmV0dXJucyB0aGUgbmV3CiAgICAgICAgcHJpb3JpdHkgKGFzIHJlcXVpcmVkIGJ5IGFsbW9zdCBhbGwgc3RhbmRhcmRzIG91dCB0aGVyZSkgYW5kIHRoZQpAQCAtNDI0NSwxNyArNDA1MSwyMSBAQAogCiAKICNpZmRlZiBIQVZFX0dFVFBSSU9SSVRZCi1QeURvY19TVFJWQVIocG9zaXhfZ2V0cHJpb3JpdHlfX2RvY19fLAotImdldHByaW9yaXR5KHdoaWNoLCB3aG8pIC0+IGN1cnJlbnRfcHJpb3JpdHlcblxuXAotR2V0IHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHByaW9yaXR5CisKKyAgICB3aGljaDogaW50CisgICAgd2hvOiBpbnQKKworUmV0dXJuIHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldHByaW9yaXR5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2dldHByaW9yaXR5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHdoaWNoLCBpbnQgd2hvKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ3NTk5MzdhYTViNjdlZDYgaW5wdXQ9OWJlNjE1ZDQwZTI1NDRlZl0qLwogewotICAgIGludCB3aGljaCwgd2hvLCByZXR2YWw7CisgICAgaW50IHJldHZhbDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWkiLCAmd2hpY2gsICZ3aG8pKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBlcnJubyA9IDA7CiAgICAgcmV0dmFsID0gZ2V0cHJpb3JpdHkod2hpY2gsIHdobyk7CiAgICAgaWYgKGVycm5vICE9IDApCkBAIC00MjY2LDE4ICs0MDc2LDIzIEBACiAKIAogI2lmZGVmIEhBVkVfU0VUUFJJT1JJVFkKLVB5RG9jX1NUUlZBUihwb3NpeF9zZXRwcmlvcml0eV9fZG9jX18sCi0ic2V0cHJpb3JpdHkod2hpY2gsIHdobywgcHJpbykgLT4gTm9uZVxuXG5cCi1TZXQgcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2V0cHJpb3JpdHkKKworICAgIHdoaWNoOiBpbnQKKyAgICB3aG86IGludAorICAgIHByaW9yaXR5OiBpbnQKKworU2V0IHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldHByaW9yaXR5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NldHByaW9yaXR5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHdoaWNoLCBpbnQgd2hvLCBpbnQgcHJpb3JpdHkpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjQ5N2QzMzAxNTQ3ZTdkNSBpbnB1dD03MTBjY2JmNjViOWRjNTEzXSovCiB7Ci0gICAgaW50IHdoaWNoLCB3aG8sIHByaW8sIHJldHZhbDsKKyAgICBpbnQgcmV0dmFsOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaWkiLCAmd2hpY2gsICZ3aG8sICZwcmlvKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dmFsID0gc2V0cHJpb3JpdHkod2hpY2gsIHdobywgcHJpbyk7CisgICAgcmV0dmFsID0gc2V0cHJpb3JpdHkod2hpY2gsIHdobywgcHJpb3JpdHkpOwogICAgIGlmIChyZXR2YWwgPT0gLTEpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtNDI4NiwxNyArNDEwMSwxMCBAQAogCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1pbnRlcm5hbF9yZW5hbWUoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MsIGludCBpc19yZXBsYWNlKQoraW50ZXJuYWxfcmVuYW1lKHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwgaW50IHNyY19kaXJfZmQsIGludCBkc3RfZGlyX2ZkLCBpbnQgaXNfcmVwbGFjZSkKIHsKICAgICBjaGFyICpmdW5jdGlvbl9uYW1lID0gaXNfcmVwbGFjZSA/ICJyZXBsYWNlIiA6ICJyZW5hbWUiOwotICAgIHBhdGhfdCBzcmM7Ci0gICAgcGF0aF90IGRzdDsKLSAgICBpbnQgc3JjX2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwotICAgIGludCBkc3RfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGRpcl9mZF9zcGVjaWZpZWQ7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgY2hhciBmb3JtYXRbMjRdOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsIE5VTEx9OwogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIEJPT0wgcmVzdWx0OwpAQCAtNDMwNSwyMTAgKzQxMTMsMjAwIEBACiAgICAgaW50IHJlc3VsdDsKICNlbmRpZgogCi0gICAgbWVtc2V0KCZzcmMsIDAsIHNpemVvZihzcmMpKTsKLSAgICBtZW1zZXQoJmRzdCwgMCwgc2l6ZW9mKGRzdCkpOwotICAgIHNyYy5mdW5jdGlvbl9uYW1lID0gZnVuY3Rpb25fbmFtZTsKLSAgICBkc3QuZnVuY3Rpb25fbmFtZSA9IGZ1bmN0aW9uX25hbWU7Ci0gICAgc3RyY3B5KGZvcm1hdCwgIk8mTyZ8JE8mTyY6Iik7Ci0gICAgc3RyY2F0KGZvcm1hdCwgZnVuY3Rpb25fbmFtZSk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCBmb3JtYXQsIGtleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZkc3QsCi0gICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLAotICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgZGlyX2ZkX3NwZWNpZmllZCA9IChzcmNfZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAoZHN0X2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCk7CiAjaWZuZGVmIEhBVkVfUkVOQU1FQVQKICAgICBpZiAoZGlyX2ZkX3NwZWNpZmllZCkgewogICAgICAgICBhcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcihmdW5jdGlvbl9uYW1lLCAic3JjX2Rpcl9mZCBhbmQgZHN0X2Rpcl9mZCIpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKChzcmMubmFycm93ICYmIGRzdC53aWRlKSB8fCAoc3JjLndpZGUgJiYgZHN0Lm5hcnJvdykpIHsKKyAgICBpZiAoKHNyYy0+bmFycm93ICYmIGRzdC0+d2lkZSkgfHwgKHNyYy0+d2lkZSAmJiBkc3QtPm5hcnJvdykpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiJXM6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIsIGZ1bmN0aW9uX25hbWUpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHNyYy53aWRlKQotICAgICAgICByZXN1bHQgPSBNb3ZlRmlsZUV4VyhzcmMud2lkZSwgZHN0LndpZGUsIGZsYWdzKTsKKyAgICBpZiAoc3JjLT53aWRlKQorICAgICAgICByZXN1bHQgPSBNb3ZlRmlsZUV4VyhzcmMtPndpZGUsIGRzdC0+d2lkZSwgZmxhZ3MpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gTW92ZUZpbGVFeEEoc3JjLm5hcnJvdywgZHN0Lm5hcnJvdywgZmxhZ3MpOworICAgICAgICByZXN1bHQgPSBNb3ZlRmlsZUV4QShzcmMtPm5hcnJvdywgZHN0LT5uYXJyb3csIGZsYWdzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcjIoJnNyYywgJmRzdCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yMihzcmMsIGRzdCk7CiAKICNlbHNlCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIEhBVkVfUkVOQU1FQVQKICAgICBpZiAoZGlyX2ZkX3NwZWNpZmllZCkKLSAgICAgICAgcmVzdWx0ID0gcmVuYW1lYXQoc3JjX2Rpcl9mZCwgc3JjLm5hcnJvdywgZHN0X2Rpcl9mZCwgZHN0Lm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IHJlbmFtZWF0KHNyY19kaXJfZmQsIHNyYy0+bmFycm93LCBkc3RfZGlyX2ZkLCBkc3QtPm5hcnJvdyk7CiAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgIHJlc3VsdCA9IHJlbmFtZShzcmMubmFycm93LCBkc3QubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gcmVuYW1lKHNyYy0+bmFycm93LCBkc3QtPm5hcnJvdyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcjIoJnNyYywgJmRzdCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IyKHNyYywgZHN0KTsKICNlbmRpZgotCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7Ci1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmc3JjKTsKLSAgICBwYXRoX2NsZWFudXAoJmRzdCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3JlbmFtZV9fZG9jX18sCi0icmVuYW1lKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSlcblxuXAotUmVuYW1lIGEgZmlsZSBvciBkaXJlY3RvcnkuXG5cCi1cblwKLUlmIGVpdGhlciBzcmNfZGlyX2ZkIG9yIGRzdF9kaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGVcblwKLSAgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHJlc3BlY3RpdmUgcGF0aCBzdHJpbmcgKHNyYyBvciBkc3QpXG5cCi0gIHNob3VsZCBiZSByZWxhdGl2ZTsgdGhlIHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotc3JjX2Rpcl9mZCBhbmQgZHN0X2Rpcl9mZCwgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MucmVuYW1lCisKKyAgICBzcmMgOiBwYXRoX3QKKyAgICBkc3QgOiBwYXRoX3QKKyAgICAqCisgICAgc3JjX2Rpcl9mZCA6IGRpcl9mZCA9IE5vbmUKKyAgICBkc3RfZGlyX2ZkIDogZGlyX2ZkID0gTm9uZQorCitSZW5hbWUgYSBmaWxlIG9yIGRpcmVjdG9yeS4KKworSWYgZWl0aGVyIHNyY19kaXJfZmQgb3IgZHN0X2Rpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZQorICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdCkKKyAgc2hvdWxkIGJlIHJlbGF0aXZlOyB0aGUgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCitzcmNfZGlyX2ZkIGFuZCBkc3RfZGlyX2ZkLCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcmVuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3JlbmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwgaW50IHNyY19kaXJfZmQsCisgICAgICAgICAgICAgICBpbnQgZHN0X2Rpcl9mZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wODAzM2JiMmVjMjdmYjVmIGlucHV0PWZhYTYxYzg0NzkxMmM4NTBdKi8KIHsKLSAgICByZXR1cm4gaW50ZXJuYWxfcmVuYW1lKGFyZ3MsIGt3YXJncywgMCk7CisgICAgcmV0dXJuIGludGVybmFsX3JlbmFtZShzcmMsIGRzdCwgc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCwgMCk7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9yZXBsYWNlX19kb2NfXywKLSJyZXBsYWNlKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSlcblxuXAotUmVuYW1lIGEgZmlsZSBvciBkaXJlY3RvcnksIG92ZXJ3cml0aW5nIHRoZSBkZXN0aW5hdGlvbi5cblwKLVxuXAotSWYgZWl0aGVyIHNyY19kaXJfZmQgb3IgZHN0X2Rpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZVxuXAotICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdClcblwKLSAgc2hvdWxkIGJlIHJlbGF0aXZlOyB0aGUgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1zcmNfZGlyX2ZkIGFuZCBkc3RfZGlyX2ZkLCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCi0gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5yZXBsYWNlID0gb3MucmVuYW1lCisKK1JlbmFtZSBhIGZpbGUgb3IgZGlyZWN0b3J5LCBvdmVyd3JpdGluZyB0aGUgZGVzdGluYXRpb24uCisKK0lmIGVpdGhlciBzcmNfZGlyX2ZkIG9yIGRzdF9kaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUKKyAgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHJlc3BlY3RpdmUgcGF0aCBzdHJpbmcgKHNyYyBvciBkc3QpCisgIHNob3VsZCBiZSByZWxhdGl2ZTsgdGhlIHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5Lgorc3JjX2Rpcl9mZCBhbmQgZHN0X2Rpcl9mZCwgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLgorICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9yZXBsYWNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3JlcGxhY2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsCisgICAgICAgICAgICAgICAgaW50IHNyY19kaXJfZmQsIGludCBkc3RfZGlyX2ZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEzMWQwMTJlZWQ4ZDNiOGIgaW5wdXQ9MjU1MTVkZmIxMDdjODQyMV0qLwogewotICAgIHJldHVybiBpbnRlcm5hbF9yZW5hbWUoYXJncywga3dhcmdzLCAxKTsKKyAgICByZXR1cm4gaW50ZXJuYWxfcmVuYW1lKHNyYywgZHN0LCBzcmNfZGlyX2ZkLCBkc3RfZGlyX2ZkLCAxKTsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3JtZGlyX19kb2NfXywKLSJybWRpcihwYXRoLCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAotUmVtb3ZlIGEgZGlyZWN0b3J5LlxuXAotXG5cCi1JZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAotICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5ybWRpcgorCisgICAgcGF0aDogcGF0aF90CisgICAgKgorICAgIGRpcl9mZDogZGlyX2ZkKHJlcXVpcmVzPSd1bmxpbmthdCcpID0gTm9uZQorCitSZW1vdmUgYSBkaXJlY3RvcnkuCisKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLgorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9ybWRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19ybWRpcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYWJhZGVjODBkNWE3N2M3IGlucHV0PTM4YzhiMzc1Y2EzNGE3ZTJdKi8KIHsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CiAgICAgaW50IHJlc3VsdDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLQotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAicm1kaXIiOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpybWRpciIsIGtleXdvcmRzLAotICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotI2lmZGVmIEhBVkVfVU5MSU5LQVQKLSAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKLSNlbHNlCi0gICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKLSNlbmRpZgotICAgICAgICAgICAgKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChwYXRoLndpZGUpCi0gICAgICAgIHJlc3VsdCA9IFJlbW92ZURpcmVjdG9yeVcocGF0aC53aWRlKTsKKyAgICBpZiAocGF0aC0+d2lkZSkKKyAgICAgICAgcmVzdWx0ID0gUmVtb3ZlRGlyZWN0b3J5VyhwYXRoLT53aWRlKTsKICAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFJlbW92ZURpcmVjdG9yeUEocGF0aC5uYXJyb3cpOworICAgICAgICByZXN1bHQgPSBSZW1vdmVEaXJlY3RvcnlBKHBhdGgtPm5hcnJvdyk7CiAgICAgcmVzdWx0ID0gIXJlc3VsdDsgLyogV2luZG93cywgc3VjY2Vzcz0xLCBVTklYLCBzdWNjZXNzPTAgKi8KICNlbHNlCiAjaWZkZWYgSEFWRV9VTkxJTktBVAogICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCi0gICAgICAgIHJlc3VsdCA9IHVubGlua2F0KGRpcl9mZCwgcGF0aC5uYXJyb3csIEFUX1JFTU9WRURJUik7CisgICAgICAgIHJlc3VsdCA9IHVubGlua2F0KGRpcl9mZCwgcGF0aC0+bmFycm93LCBBVF9SRU1PVkVESVIpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSBybWRpcihwYXRoLm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IHJtZGlyKHBhdGgtPm5hcnJvdyk7CiAjZW5kaWYKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgZ290byBleGl0OwotICAgIH0KKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKIAotICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogCiAjaWZkZWYgSEFWRV9TWVNURU0KLVB5RG9jX1NUUlZBUihwb3NpeF9zeXN0ZW1fX2RvY19fLAotInN5c3RlbShjb21tYW5kKSAtPiBleGl0X3N0YXR1c1xuXG5cCi1FeGVjdXRlIHRoZSBjb21tYW5kIChhIHN0cmluZykgaW4gYSBzdWJzaGVsbC4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3N5c3RlbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgbG9uZyBzdHM7CiAjaWZkZWYgTVNfV0lORE9XUwotICAgIHdjaGFyX3QgKmNvbW1hbmQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1OnN5c3RlbSIsICZjb21tYW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitvcy5zeXN0ZW0gLT4gbG9uZwogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHN0cyA9IF93c3lzdGVtKGNvbW1hbmQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0jZWxzZQotICAgIFB5T2JqZWN0ICpjb21tYW5kX29iajsKLSAgICBjaGFyICpjb21tYW5kOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6c3lzdGVtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmY29tbWFuZF9vYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBjb21tYW5kOiBQeV9VTklDT0RFCiAKLSAgICBjb21tYW5kID0gUHlCeXRlc19Bc1N0cmluZyhjb21tYW5kX29iaik7CitFeGVjdXRlIHRoZSBjb21tYW5kIGluIGEgc3Vic2hlbGwuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCitvc19zeXN0ZW1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9VTklDT0RFICpjb21tYW5kKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRjM2JkNWFiY2Q5YzI5ZTcgaW5wdXQ9MzAzZjVjZTk3ZGY2MDZiMF0qLworeworICAgIGxvbmcgcmVzdWx0OwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzdHMgPSBzeXN0ZW0oY29tbWFuZCk7CisgICAgcmVzdWx0ID0gX3dzeXN0ZW0oY29tbWFuZCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9ERUNSRUYoY29tbWFuZF9vYmopOwotI2VuZGlmCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzdHMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZWxzZSAvKiBNU19XSU5ET1dTICovCisvKltjbGluaWMgaW5wdXRdCitvcy5zeXN0ZW0gLT4gbG9uZworCisgICAgY29tbWFuZDogRlNDb252ZXJ0ZXIKKworRXhlY3V0ZSB0aGUgY29tbWFuZCBpbiBhIHN1YnNoZWxsLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgbG9uZworb3Nfc3lzdGVtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmNvbW1hbmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODAwZjc3NWUxMGI3YmU1NSBpbnB1dD04NmE1ODU1NGJhNjA5NGFmXSovCit7CisgICAgbG9uZyByZXN1bHQ7CisgICAgY2hhciAqYnl0ZXMgPSBQeUJ5dGVzX0FzU3RyaW5nKGNvbW1hbmQpOworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXN1bHQgPSBzeXN0ZW0oYnl0ZXMpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZgorI2VuZGlmIC8qIEhBVkVfU1lTVEVNICovCiAKIAotUHlEb2NfU1RSVkFSKHBvc2l4X3VtYXNrX19kb2NfXywKLSJ1bWFzayhuZXdfbWFzaykgLT4gb2xkX21hc2tcblxuXAotU2V0IHRoZSBjdXJyZW50IG51bWVyaWMgdW1hc2sgYW5kIHJldHVybiB0aGUgcHJldmlvdXMgdW1hc2suIik7CisvKltjbGluaWMgaW5wdXRdCitvcy51bWFzaworCisgICAgbWFzazogaW50CisgICAgLworCitTZXQgdGhlIGN1cnJlbnQgbnVtZXJpYyB1bWFzayBhbmQgcmV0dXJuIHRoZSBwcmV2aW91cyB1bWFzay4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3VtYXNrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3VtYXNrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG1hc2spCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWUxZmUzYzlmMTRkNmEwNSBpbnB1dD1hYjZiZmQ5YjI0ZDhhN2U4XSovCiB7Ci0gICAgaW50IGk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnVtYXNrIiwgJmkpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpID0gKGludCl1bWFzayhpKTsKKyAgICBpbnQgaSA9IChpbnQpdW1hc2sobWFzayk7CiAgICAgaWYgKGkgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKWkpOwpAQCAtNDUzNyw3ICs0MzM1LDEwIEBACiAgICAgICAgICAgICBmaW5kX2RhdGFfaGFuZGxlID0gRmluZEZpcnN0RmlsZVcobHBGaWxlTmFtZSwgJmZpbmRfZGF0YSk7CiAKICAgICAgICAgICAgIGlmKGZpbmRfZGF0YV9oYW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgICAgICAgICBpc19saW5rID0gZmluZF9kYXRhLmR3UmVzZXJ2ZWQwID09IElPX1JFUEFSU0VfVEFHX1NZTUxJTks7CisgICAgICAgICAgICAgICAgLyogSU9fUkVQQVJTRV9UQUdfU1lNTElOSyBpZiBpdCBpcyBhIHN5bWxpbmsgYW5kCisgICAgICAgICAgICAgICAgICAgSU9fUkVQQVJTRV9UQUdfTU9VTlRfUE9JTlQgaWYgaXQgaXMgYSBqdW5jdGlvbiBwb2ludC4gKi8KKyAgICAgICAgICAgICAgICBpc19saW5rID0gZmluZF9kYXRhLmR3UmVzZXJ2ZWQwID09IElPX1JFUEFSU0VfVEFHX1NZTUxJTksgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZF9kYXRhLmR3UmVzZXJ2ZWQwID09IElPX1JFUEFSU0VfVEFHX01PVU5UX1BPSU5UOwogICAgICAgICAgICAgICAgIEZpbmRDbG9zZShmaW5kX2RhdGFfaGFuZGxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDU1MCw4MSArNDM1MSw3MyBAQAogfQogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3VubGlua19fZG9jX18sCi0idW5saW5rKHBhdGgsICosIGRpcl9mZD1Ob25lKVxuXG5cCi1SZW1vdmUgYSBmaWxlIChzYW1lIGFzIHJlbW92ZSgpKS5cblwKLVxuXAotSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKLSAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKLWRpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCi0gIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAotUHlEb2NfU1RSVkFSKHBvc2l4X3JlbW92ZV9fZG9jX18sCi0icmVtb3ZlKHBhdGgsICosIGRpcl9mZD1Ob25lKVxuXG5cCi1SZW1vdmUgYSBmaWxlIChzYW1lIGFzIHVubGluaygpKS5cblwKLVxuXAotSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKLSAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKLWRpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCi0gIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnVubGluaworCisgICAgcGF0aDogcGF0aF90CisgICAgKgorICAgIGRpcl9mZDogZGlyX2ZkKHJlcXVpcmVzPSd1bmxpbmthdCcpPU5vbmUKKworUmVtb3ZlIGEgZmlsZSAoc2FtZSBhcyByZW1vdmUoKSkuCisKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLgorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3VubGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc191bmxpbmtfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDc0YWZkNWNkMDliMjM3ZSBpbnB1dD1kN2JjZGUyYjFiMmEyNTUyXSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OwogICAgIGludCByZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0KLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gInVubGluayI7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnVubGluayIsIGtleXdvcmRzLAotICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotI2lmZGVmIEhBVkVfVU5MSU5LQVQKLSAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKLSNlbHNlCi0gICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKLSNlbmRpZgotICAgICAgICAgICAgKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAocGF0aC53aWRlKQotICAgICAgICByZXN1bHQgPSBQeV9EZWxldGVGaWxlVyhwYXRoLndpZGUpOworICAgIGlmIChwYXRoLT53aWRlKQorICAgICAgICByZXN1bHQgPSBQeV9EZWxldGVGaWxlVyhwYXRoLT53aWRlKTsKICAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IERlbGV0ZUZpbGVBKHBhdGgubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gRGVsZXRlRmlsZUEocGF0aC0+bmFycm93KTsKICAgICByZXN1bHQgPSAhcmVzdWx0OyAvKiBXaW5kb3dzLCBzdWNjZXNzPTEsIFVOSVgsIHN1Y2Nlc3M9MCAqLwogI2Vsc2UKICNpZmRlZiBIQVZFX1VOTElOS0FUCiAgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKLSAgICAgICAgcmVzdWx0ID0gdW5saW5rYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgMCk7CisgICAgICAgIHJlc3VsdCA9IHVubGlua2F0KGRpcl9mZCwgcGF0aC0+bmFycm93LCAwKTsKICAgICBlbHNlCiAjZW5kaWYgLyogSEFWRV9VTkxJTktBVCAqLwotICAgICAgICByZXN1bHQgPSB1bmxpbmsocGF0aC5uYXJyb3cpOworICAgICAgICByZXN1bHQgPSB1bmxpbmsocGF0aC0+bmFycm93KTsKICNlbmRpZgorICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7CiAKLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLQotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIAotUHlEb2NfU1RSVkFSKHBvc2l4X3VuYW1lX19kb2NfXywKLSJ1bmFtZSgpIC0+IHVuYW1lX3Jlc3VsdFxuXG5cCi1SZXR1cm4gYW4gb2JqZWN0IGlkZW50aWZ5aW5nIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0uXG5cCi1UaGUgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhIG5hbWVkIHR1cGxlIHdpdGggdGhlIGZvbGxvd2luZyBmaWVsZHM6XG5cCi0gIChzeXNuYW1lLCBub2RlbmFtZSwgcmVsZWFzZSwgdmVyc2lvbiwgbWFjaGluZSkiKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnJlbW92ZSA9IG9zLnVubGluaworCitSZW1vdmUgYSBmaWxlIChzYW1lIGFzIHVubGluaygpKS4KKworSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3JlbW92ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMGQ1MTQ5ZTY0ODMyYjllIGlucHV0PWUwNWM1YWI1NWNkMzA5ODNdKi8KK3sKKyAgICByZXR1cm4gb3NfdW5saW5rX2ltcGwobW9kdWxlLCBwYXRoLCBkaXJfZmQpOworfQorCiAKIHN0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHVuYW1lX3Jlc3VsdF9maWVsZHNbXSA9IHsKICAgICB7InN5c25hbWUiLCAgICAib3BlcmF0aW5nIHN5c3RlbSBuYW1lIn0sCkBAIC00NjU0LDggKzQ0NDcsMTkgQEAKIAogCiAjaWZkZWYgSEFWRV9VTkFNRQorLypbY2xpbmljIGlucHV0XQorb3MudW5hbWUKKworUmV0dXJuIGFuIG9iamVjdCBpZGVudGlmeWluZyB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLgorCitUaGUgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhIG5hbWVkIHR1cGxlIHdpdGggdGhlIGZvbGxvd2luZyBmaWVsZHM6CisgIChzeXNuYW1lLCBub2RlbmFtZSwgcmVsZWFzZSwgdmVyc2lvbiwgbWFjaGluZSkKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdW5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc191bmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDFlMTQyMWI3NTdlNzUzZiBpbnB1dD1lNjhiZDI0NmRiMzA0M2VkXSovCiB7CiAgICAgc3RydWN0IHV0c25hbWUgdTsKICAgICBpbnQgcmVzOwpAQCAtNDY5NCwzMSArNDQ5OCw2IEBACiAjZW5kaWYgLyogSEFWRV9VTkFNRSAqLwogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF91dGltZV9fZG9jX18sCi0idXRpbWUocGF0aCwgdGltZXM9Tm9uZSwgKlssIG5zXSwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXAotU2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWUgb2YgcGF0aC5cblwKLVxuXAotcGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cblwKLU9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLSAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuXAotXG5cCi1JZiB0aW1lcyBpcyBub3QgTm9uZSwgaXQgbXVzdCBiZSBhIHR1cGxlIChhdGltZSwgbXRpbWUpO1xuXAotICAgIGF0aW1lIGFuZCBtdGltZSBzaG91bGQgYmUgZXhwcmVzc2VkIGFzIGZsb2F0IHNlY29uZHMgc2luY2UgdGhlIGVwb2NoLlxuXAotSWYgbnMgaXMgc3BlY2lmaWVkLCBpdCBtdXN0IGJlIGEgdHVwbGUgKGF0aW1lX25zLCBtdGltZV9ucyk7XG5cCi0gICAgYXRpbWVfbnMgYW5kIG10aW1lX25zIHNob3VsZCBiZSBleHByZXNzZWQgYXMgaW50ZWdlciBuYW5vc2Vjb25kc1xuXAotICAgIHNpbmNlIHRoZSBlcG9jaC5cblwKLUlmIHRpbWVzIGlzIE5vbmUgYW5kIG5zIGlzIHVuc3BlY2lmaWVkLCB1dGltZSB1c2VzIHRoZSBjdXJyZW50IHRpbWUuXG5cCi1TcGVjaWZ5aW5nIHR1cGxlcyBmb3IgYm90aCB0aW1lcyBhbmQgbnMgaXMgYW4gZXJyb3IuXG5cCi1cblwKLUlmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCi0gIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1JZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKLSAgbGluaywgdXRpbWUgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG5cCi0gIGxpbmsgcG9pbnRzIHRvLlxuXAotSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGhcblwKLSAgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi1kaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGF2YWlsYWJsZSBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIGludCAgICBub3c7CkBAIC00ODAyLDYgKzQ1ODEsOSBAQAogI2VuZGlmCiB9CiAKKyAgICAjZGVmaW5lIEZVVElNRU5TQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCisjZWxzZQorICAgICNkZWZpbmUgRlVUSU1FTlNBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF91bmF2YWlsYWJsZQogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEhBVkVfRlVUSU1FUykgfHwgZGVmaW5lZChIQVZFX0ZVVElNRU5TKQpAQCAtNDgxOCw2ICs0NjAwLDkgQEAKICNlbmRpZgogfQogCisgICAgI2RlZmluZSBQQVRIX1VUSU1FX0hBVkVfRkQgMQorI2Vsc2UKKyAgICAjZGVmaW5lIFBBVEhfVVRJTUVfSEFWRV9GRCAwCiAjZW5kaWYKIAogCkBAIC00ODgzLDE5ICs0NjY4LDUwIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorCisvKltjbGluaWMgaW5wdXRdCitvcy51dGltZQorCisgICAgcGF0aDogcGF0aF90KGFsbG93X2ZkPSdQQVRIX1VUSU1FX0hBVkVfRkQnKQorICAgIHRpbWVzOiBvYmplY3QgPSBOVUxMCisgICAgKgorICAgIG5zOiBvYmplY3QgPSBOVUxMCisgICAgZGlyX2ZkOiBkaXJfZmQocmVxdWlyZXM9J2Z1dGltZW5zYXQnKSA9IE5vbmUKKyAgICBmb2xsb3dfc3ltbGlua3M6IGJvb2w9VHJ1ZQorCisjICJ1dGltZShwYXRoLCB0aW1lcz1Ob25lLCAqWywgbnNdLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cCisKK1NldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lIG9mIHBhdGguCisKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KKworSWYgdGltZXMgaXMgbm90IE5vbmUsIGl0IG11c3QgYmUgYSB0dXBsZSAoYXRpbWUsIG10aW1lKTsKKyAgICBhdGltZSBhbmQgbXRpbWUgc2hvdWxkIGJlIGV4cHJlc3NlZCBhcyBmbG9hdCBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaC4KK0lmIG5zIGlzIHNwZWNpZmllZCwgaXQgbXVzdCBiZSBhIHR1cGxlIChhdGltZV9ucywgbXRpbWVfbnMpOworICAgIGF0aW1lX25zIGFuZCBtdGltZV9ucyBzaG91bGQgYmUgZXhwcmVzc2VkIGFzIGludGVnZXIgbmFub3NlY29uZHMKKyAgICBzaW5jZSB0aGUgZXBvY2guCitJZiB0aW1lcyBpcyBOb25lIGFuZCBucyBpcyB1bnNwZWNpZmllZCwgdXRpbWUgdXNlcyB0aGUgY3VycmVudCB0aW1lLgorU3BlY2lmeWluZyB0dXBsZXMgZm9yIGJvdGggdGltZXMgYW5kIG5zIGlzIGFuIGVycm9yLgorCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljCisgIGxpbmssIHV0aW1lIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlIHRoZQorICBsaW5rIHBvaW50cyB0by4KK0l0IGlzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoCisgIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBhdmFpbGFibGUgb24geW91ciBwbGF0Zm9ybS4KKyAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3V0aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3V0aW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqdGltZXMsCisgICAgICAgICAgICAgIFB5T2JqZWN0ICpucywgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMWYzNDM0ZTU2MGJhMmYwIGlucHV0PTA4MWNkYzU0Y2E2ODUzODVdKi8KIHsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICBQeU9iamVjdCAqdGltZXMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpucyA9IE5VTEw7Ci0gICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwotICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwotICAgIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAidGltZXMiLCAibnMiLCAiZGlyX2ZkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKLQotICAgIHV0aW1lX3QgdXRpbWU7Ci0KICNpZmRlZiBNU19XSU5ET1dTCiAgICAgSEFORExFIGhGaWxlOwogICAgIEZJTEVUSU1FIGF0aW1lLCBtdGltZTsKQEAgLTQ5MDQsMjUgKzQ3MjAsOSBAQAogI2VuZGlmCiAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICB1dGltZV90IHV0aW1lOwogCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJ1dGltZSI7CiAgICAgbWVtc2V0KCZ1dGltZSwgMCwgc2l6ZW9mKHV0aW1lX3QpKTsKLSNpZiBkZWZpbmVkKEhBVkVfRlVUSU1FUykgfHwgZGVmaW5lZChIQVZFX0ZVVElNRU5TKQotICAgIHBhdGguYWxsb3dfZmQgPSAxOwotI2VuZGlmCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAgICAgIk8mfE8kT08mcDp1dGltZSIsIGtleXdvcmRzLAotICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICAgICAgJnRpbWVzLCAmbnMsCi0jaWYgZGVmaW5lZChIQVZFX0ZVVElNRVNBVCkgfHwgZGVmaW5lZChIQVZFX1VUSU1FTlNBVCkKLSAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQsCi0jZWxzZQotICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkLAotI2VuZGlmCi0gICAgICAgICAgICAmZm9sbG93X3N5bWxpbmtzCi0gICAgICAgICAgICApKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICh0aW1lcyAmJiAodGltZXMgIT0gUHlfTm9uZSkgJiYgbnMpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCkBAIC00OTQyLDkgKzQ3NDIsOSBAQAogICAgICAgICB9CiAgICAgICAgIHV0aW1lLm5vdyA9IDA7CiAgICAgICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXNwZWMoUHlUdXBsZV9HRVRfSVRFTSh0aW1lcywgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFfc2VjLCAmYV9uc2VjLCBfUHlUaW1lX1JPVU5EX0RPV04pID09IC0xIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFfc2VjLCAmYV9uc2VjLCBfUHlUaW1lX1JPVU5EX0ZMT09SKSA9PSAtMSB8fAogICAgICAgICAgICAgX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKFB5VHVwbGVfR0VUX0lURU0odGltZXMsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtX3NlYywgJm1fbnNlYywgX1B5VGltZV9ST1VORF9ET1dOKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtX3NlYywgJm1fbnNlYywgX1B5VGltZV9ST1VORF9GTE9PUikgPT0gLTEpIHsKICAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgfQogICAgICAgICB1dGltZS5hdGltZV9zID0gYV9zZWM7CkBAIC00OTc2LDkgKzQ3NzYsOSBAQAogICAgICAgICBnb3RvIGV4aXQ7CiAjZW5kaWYKIAotICAgIGlmIChwYXRoX2FuZF9kaXJfZmRfaW52YWxpZCgidXRpbWUiLCAmcGF0aCwgZGlyX2ZkKSB8fAotICAgICAgICBkaXJfZmRfYW5kX2ZkX2ludmFsaWQoInV0aW1lIiwgZGlyX2ZkLCBwYXRoLmZkKSB8fAotICAgICAgICBmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoInV0aW1lIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAocGF0aF9hbmRfZGlyX2ZkX2ludmFsaWQoInV0aW1lIiwgcGF0aCwgZGlyX2ZkKSB8fAorICAgICAgICBkaXJfZmRfYW5kX2ZkX2ludmFsaWQoInV0aW1lIiwgZGlyX2ZkLCBwYXRoLT5mZCkgfHwKKyAgICAgICAgZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJ1dGltZSIsIHBhdGgtPmZkLCBmb2xsb3dfc3ltbGlua3MpKQogICAgICAgICBnb3RvIGV4aXQ7CiAKICNpZiAhZGVmaW5lZChIQVZFX1VUSU1FTlNBVCkKQEAgLTQ5OTIsMTcgKzQ3OTIsMTcgQEAKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHBhdGgud2lkZSkKLSAgICAgICAgaEZpbGUgPSBDcmVhdGVGaWxlVyhwYXRoLndpZGUsIEZJTEVfV1JJVEVfQVRUUklCVVRFUywgMCwKKyAgICBpZiAocGF0aC0+d2lkZSkKKyAgICAgICAgaEZpbGUgPSBDcmVhdGVGaWxlVyhwYXRoLT53aWRlLCBGSUxFX1dSSVRFX0FUVFJJQlVURVMsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgT1BFTl9FWElTVElORywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7CiAgICAgZWxzZQotICAgICAgICBoRmlsZSA9IENyZWF0ZUZpbGVBKHBhdGgubmFycm93LCBGSUxFX1dSSVRFX0FUVFJJQlVURVMsIDAsCisgICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZUEocGF0aC0+bmFycm93LCBGSUxFX1dSSVRFX0FUVFJJQlVURVMsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgT1BFTl9FWElTVElORywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoaEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7CisgICAgICAgIHBhdGhfZXJyb3IocGF0aCk7CiAgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAKQEAgLTUwMTEsOCArNDgxMSw4IEBACiAgICAgICAgIGF0aW1lID0gbXRpbWU7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICB0aW1lX3RfdG9fRklMRV9USU1FKHV0aW1lLmF0aW1lX3MsIHV0aW1lLmF0aW1lX25zLCAmYXRpbWUpOwotICAgICAgICB0aW1lX3RfdG9fRklMRV9USU1FKHV0aW1lLm10aW1lX3MsIHV0aW1lLm10aW1lX25zLCAmbXRpbWUpOworICAgICAgICBfUHlfdGltZV90X3RvX0ZJTEVfVElNRSh1dGltZS5hdGltZV9zLCB1dGltZS5hdGltZV9ucywgJmF0aW1lKTsKKyAgICAgICAgX1B5X3RpbWVfdF90b19GSUxFX1RJTUUodXRpbWUubXRpbWVfcywgdXRpbWUubXRpbWVfbnMsICZtdGltZSk7CiAgICAgfQogICAgIGlmICghU2V0RmlsZVRpbWUoaEZpbGUsIE5VTEwsICZhdGltZSwgJm10aW1lKSkgewogICAgICAgICAvKiBBdm9pZCBwdXR0aW5nIHRoZSBmaWxlIG5hbWUgaW50byB0aGUgZXJyb3IgaGVyZSwKQEAgLTUwMjcsMjMgKzQ4MjcsMjMgQEAKIAogI2lmIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKICAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpKQotICAgICAgICByZXN1bHQgPSB1dGltZV9ub2ZvbGxvd19zeW1saW5rcygmdXRpbWUsIHBhdGgubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gdXRpbWVfbm9mb2xsb3dfc3ltbGlua3MoJnV0aW1lLCBwYXRoLT5uYXJyb3cpOwogICAgIGVsc2UKICNlbmRpZgogCiAjaWYgZGVmaW5lZChIQVZFX0ZVVElNRVNBVCkgfHwgZGVmaW5lZChIQVZFX1VUSU1FTlNBVCkKICAgICBpZiAoKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwgKCFmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICByZXN1bHQgPSB1dGltZV9kaXJfZmQoJnV0aW1lLCBkaXJfZmQsIHBhdGgubmFycm93LCBmb2xsb3dfc3ltbGlua3MpOworICAgICAgICByZXN1bHQgPSB1dGltZV9kaXJfZmQoJnV0aW1lLCBkaXJfZmQsIHBhdGgtPm5hcnJvdywgZm9sbG93X3N5bWxpbmtzKTsKICAgICBlbHNlCiAjZW5kaWYKIAogI2lmIGRlZmluZWQoSEFWRV9GVVRJTUVTKSB8fCBkZWZpbmVkKEhBVkVfRlVUSU1FTlMpCi0gICAgaWYgKHBhdGguZmQgIT0gLTEpCi0gICAgICAgIHJlc3VsdCA9IHV0aW1lX2ZkKCZ1dGltZSwgcGF0aC5mZCk7CisgICAgaWYgKHBhdGgtPmZkICE9IC0xKQorICAgICAgICByZXN1bHQgPSB1dGltZV9mZCgmdXRpbWUsIHBhdGgtPmZkKTsKICAgICBlbHNlCiAjZW5kaWYKIAotICAgIHJlc3VsdCA9IHV0aW1lX2RlZmF1bHQoJnV0aW1lLCBwYXRoLm5hcnJvdyk7CisgICAgcmVzdWx0ID0gdXRpbWVfZGVmYXVsdCgmdXRpbWUsIHBhdGgtPm5hcnJvdyk7CiAKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCkBAIC01MDU5LDcgKzQ4NTksNiBAQAogICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CiAKIGV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKGhGaWxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQogICAgICAgICBDbG9zZUhhbmRsZShoRmlsZSk7CkBAIC01MDY5LDE3ICs0ODY4LDIwIEBACiAKIC8qIFByb2Nlc3Mgb3BlcmF0aW9ucyAqLwogCi1QeURvY19TVFJWQVIocG9zaXhfX2V4aXRfX2RvY19fLAotIl9leGl0KHN0YXR1cylcblxuXAotRXhpdCB0byB0aGUgc3lzdGVtIHdpdGggc3BlY2lmaWVkIHN0YXR1cywgd2l0aG91dCBub3JtYWwgZXhpdCBwcm9jZXNzaW5nLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5fZXhpdAorCisgICAgc3RhdHVzOiBpbnQKKworRXhpdCB0byB0aGUgc3lzdGVtIHdpdGggc3BlY2lmaWVkIHN0YXR1cywgd2l0aG91dCBub3JtYWwgZXhpdCBwcm9jZXNzaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfX2V4aXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfX2V4aXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ3MmEzY2JhZjY4ZjM2MjEgaW5wdXQ9NWU2ZDU3NTU2YjBjNGE2Ml0qLwogewotICAgIGludCBzdHM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOl9leGl0IiwgJnN0cykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIF9leGl0KHN0cyk7CisgICAgX2V4aXQoc3RhdHVzKTsKICAgICByZXR1cm4gTlVMTDsgLyogTWFrZSBnY2MgLVdhbGwgaGFwcHkgKi8KIH0KIApAQCAtNTIxNyw5NiArNTAxOSw4MyBAQAogfQogI2VuZGlmCiAKKwogI2lmZGVmIEhBVkVfRVhFQ1YKLVB5RG9jX1NUUlZBUihwb3NpeF9leGVjdl9fZG9jX18sCi0iZXhlY3YocGF0aCwgYXJncylcblxuXAotRXhlY3V0ZSBhbiBleGVjdXRhYmxlIHBhdGggd2l0aCBhcmd1bWVudHMsIHJlcGxhY2luZyBjdXJyZW50IHByb2Nlc3MuXG5cCi1cblwKLSAgICBwYXRoOiBwYXRoIG9mIGV4ZWN1dGFibGUgZmlsZVxuXAotICAgIGFyZ3M6IHR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncyIpOworLypbY2xpbmljIGlucHV0XQorb3MuZXhlY3YKKworICAgIHBhdGg6IEZTQ29udmVydGVyCisgICAgICAgIFBhdGggb2YgZXhlY3V0YWJsZSBmaWxlLgorICAgIGFyZ3Y6IG9iamVjdAorICAgICAgICBUdXBsZSBvciBsaXN0IG9mIHN0cmluZ3MuCisgICAgLworCitFeGVjdXRlIGFuIGV4ZWN1dGFibGUgcGF0aCB3aXRoIGFyZ3VtZW50cywgcmVwbGFjaW5nIGN1cnJlbnQgcHJvY2Vzcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2V4ZWN2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2V4ZWN2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkyMjFmMDgxNDMxNDZmZmYgaW5wdXQ9OTYwNDE1NTk5MjVlNTIyOV0qLwogewotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOwotICAgIFB5T2JqZWN0ICphcmd2OworICAgIGNoYXIgKnBhdGhfY2hhcjsKICAgICBjaGFyICoqYXJndmxpc3Q7CiAgICAgUHlfc3NpemVfdCBhcmdjOwogCiAgICAgLyogZXhlY3YgaGFzIHR3byBhcmd1bWVudHM6IChwYXRoLCBhcmd2KSwgd2hlcmUKICAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzLiAqLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk86ZXhlY3YiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvcGF0aCwgJmFyZ3YpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7CisgICAgcGF0aF9jaGFyID0gUHlCeXRlc19Bc1N0cmluZyhwYXRoKTsKICAgICBpZiAoIVB5TGlzdF9DaGVjayhhcmd2KSAmJiAhUHlUdXBsZV9DaGVjayhhcmd2KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImV4ZWN2KCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGFyZ2MgPSBQeVNlcXVlbmNlX1NpemUoYXJndik7CiAgICAgaWYgKGFyZ2MgPCAxKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZXhlY3YoKSBhcmcgMiBtdXN0IG5vdCBiZSBlbXB0eSIpOwotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBhcmd2bGlzdCA9IHBhcnNlX2FyZ2xpc3QoYXJndiwgJmFyZ2MpOwogICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGV4ZWN2KHBhdGgsIGFyZ3ZsaXN0KTsKKyAgICBleGVjdihwYXRoX2NoYXIsIGFyZ3ZsaXN0KTsKIAogICAgIC8qIElmIHdlIGdldCBoZXJlIGl0J3MgZGVmaW5pdGVseSBhbiBlcnJvciAqLwogCiAgICAgZnJlZV9zdHJpbmdfYXJyYXkoYXJndmxpc3QsIGFyZ2MpOwotICAgIFB5X0RFQ1JFRihvcGF0aCk7CiAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9leGVjdmVfX2RvY19fLAotImV4ZWN2ZShwYXRoLCBhcmdzLCBlbnYpXG5cblwKLUV4ZWN1dGUgYSBwYXRoIHdpdGggYXJndW1lbnRzIGFuZCBlbnZpcm9ubWVudCwgcmVwbGFjaW5nIGN1cnJlbnQgcHJvY2Vzcy5cblwKLVxuXAotICAgIHBhdGg6IHBhdGggb2YgZXhlY3V0YWJsZSBmaWxlXG5cCi0gICAgYXJnczogdHVwbGUgb3IgbGlzdCBvZiBhcmd1bWVudHNcblwKLSAgICBlbnY6IGRpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3NcblwKLVxuXAotT24gc29tZSBwbGF0Zm9ybXMsIHlvdSBtYXkgc3BlY2lmeSBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgcGF0aDtcblwKLSAgZXhlY3ZlIHdpbGwgZXhlY3V0ZSB0aGUgcHJvZ3JhbSB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIG9wZW4gdG8uXG5cCi0gIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmV4ZWN2ZQorCisgICAgcGF0aDogcGF0aF90KGFsbG93X2ZkPSdQQVRIX0hBVkVfRkVYRUNWRScpCisgICAgICAgIFBhdGggb2YgZXhlY3V0YWJsZSBmaWxlLgorICAgIGFyZ3Y6IG9iamVjdAorICAgICAgICBUdXBsZSBvciBsaXN0IG9mIHN0cmluZ3MuCisgICAgZW52OiBvYmplY3QKKyAgICAgICAgRGljdGlvbmFyeSBvZiBzdHJpbmdzIG1hcHBpbmcgdG8gc3RyaW5ncy4KKworRXhlY3V0ZSBhbiBleGVjdXRhYmxlIHBhdGggd2l0aCBhcmd1bWVudHMsIHJlcGxhY2luZyBjdXJyZW50IHByb2Nlc3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9leGVjdmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZXhlY3ZlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndiwKKyAgICAgICAgICAgICAgIFB5T2JqZWN0ICplbnYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTgxODg0ZmNkYjIxNTA4ZSBpbnB1dD02MjY4MDRmYTA5MjYwNmQ5XSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgUHlPYmplY3QgKmFyZ3YsICplbnY7CiAgICAgY2hhciAqKmFyZ3ZsaXN0ID0gTlVMTDsKICAgICBjaGFyICoqZW52bGlzdDsKICAgICBQeV9zc2l6ZV90IGFyZ2MsIGVudmM7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiYXJndiIsICJlbnZpcm9ubWVudCIsIE5VTEx9OwogCiAgICAgLyogZXhlY3ZlIGhhcyB0aHJlZSBhcmd1bWVudHM6IChwYXRoLCBhcmd2LCBlbnYpLCB3aGVyZQogICAgICAgIGFyZ3YgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MgYW5kIGVudiBpcyBhIGRpY3Rpb25hcnkKICAgICAgICBsaWtlIHBvc2l4LmVudmlyb24uICovCiAKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gImV4ZWN2ZSI7Ci0jaWZkZWYgSEFWRV9GRVhFQ1ZFCi0gICAgcGF0aC5hbGxvd19mZCA9IDE7Ci0jZW5kaWYKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk9POmV4ZWN2ZSIsIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZhcmd2LCAmZW52Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKCFQeUxpc3RfQ2hlY2soYXJndikgJiYgIVB5VHVwbGVfQ2hlY2soYXJndikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdmU6IGFyZ3YgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKQEAgLTUzMjksMTUgKzUxMTgsMTUgQEAKICAgICAgICAgZ290byBmYWlsOwogCiAjaWZkZWYgSEFWRV9GRVhFQ1ZFCi0gICAgaWYgKHBhdGguZmQgPiAtMSkKLSAgICAgICAgZmV4ZWN2ZShwYXRoLmZkLCBhcmd2bGlzdCwgZW52bGlzdCk7CisgICAgaWYgKHBhdGgtPmZkID4gLTEpCisgICAgICAgIGZleGVjdmUocGF0aC0+ZmQsIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgZXhlY3ZlKHBhdGgubmFycm93LCBhcmd2bGlzdCwgZW52bGlzdCk7CisgICAgICAgIGV4ZWN2ZShwYXRoLT5uYXJyb3csIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKIAogICAgIC8qIElmIHdlIGdldCBoZXJlIGl0J3MgZGVmaW5pdGVseSBhbiBlcnJvciAqLwogCi0gICAgcGF0aF9lcnJvcigmcGF0aCk7CisgICAgcGF0aF9lcnJvcihwYXRoKTsKIAogICAgIHdoaWxlICgtLWVudmMgPj0gMCkKICAgICAgICAgUHlNZW1fREVMKGVudmxpc3RbZW52Y10pOwpAQCAtNTM0NSwyOSArNTEzNCwzMyBAQAogICBmYWlsOgogICAgIGlmIChhcmd2bGlzdCkKICAgICAgICAgZnJlZV9zdHJpbmdfYXJyYXkoYXJndmxpc3QsIGFyZ2MpOwotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAjZW5kaWYgLyogSEFWRV9FWEVDViAqLwogCiAKICNpZmRlZiBIQVZFX1NQQVdOVgotUHlEb2NfU1RSVkFSKHBvc2l4X3NwYXdudl9fZG9jX18sCi0ic3Bhd252KG1vZGUsIHBhdGgsIGFyZ3MpXG5cblwKLUV4ZWN1dGUgdGhlIHByb2dyYW0gJ3BhdGgnIGluIGEgbmV3IHByb2Nlc3MuXG5cCi1cblwKLSAgICBtb2RlOiBtb2RlIG9mIHByb2Nlc3MgY3JlYXRpb25cblwKLSAgICBwYXRoOiBwYXRoIG9mIGV4ZWN1dGFibGUgZmlsZVxuXAotICAgIGFyZ3M6IHR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncyIpOworLypbY2xpbmljIGlucHV0XQorb3Muc3Bhd252CisKKyAgICBtb2RlOiBpbnQKKyAgICAgICAgTW9kZSBvZiBwcm9jZXNzIGNyZWF0aW9uLgorICAgIHBhdGg6IEZTQ29udmVydGVyCisgICAgICAgIFBhdGggb2YgZXhlY3V0YWJsZSBmaWxlLgorICAgIGFyZ3Y6IG9iamVjdAorICAgICAgICBUdXBsZSBvciBsaXN0IG9mIHN0cmluZ3MuCisgICAgLworCitFeGVjdXRlIHRoZSBwcm9ncmFtIHNwZWNpZmllZCBieSBwYXRoIGluIGEgbmV3IHByb2Nlc3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zcGF3bnYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc3Bhd252X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG1vZGUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqYXJndikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNDBhNzk0NTQ4NGM4Y2M1IGlucHV0PTA0MmM5MWRmYzFlNmRlYmNdKi8KIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBQeU9iamVjdCAqYXJndjsKKyAgICBjaGFyICpwYXRoX2NoYXI7CiAgICAgY2hhciAqKmFyZ3ZsaXN0OwotICAgIGludCBtb2RlLCBpOworICAgIGludCBpOwogICAgIFB5X3NzaXplX3QgYXJnYzsKICAgICBQeV9pbnRwdHJfdCBzcGF3bnZhbDsKICAgICBQeU9iamVjdCAqKCpnZXRpdGVtKShQeU9iamVjdCAqLCBQeV9zc2l6ZV90KTsKQEAgLTUzNzUsMTEgKzUxNjgsNyBAQAogICAgIC8qIHNwYXdudiBoYXMgdGhyZWUgYXJndW1lbnRzOiAobW9kZSwgcGF0aCwgYXJndiksIHdoZXJlCiAgICAgICAgYXJndiBpcyBhIGxpc3Qgb3IgdHVwbGUgb2Ygc3RyaW5ncy4gKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTzpzcGF3bnYiLCAmbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmb3BhdGgsICZhcmd2KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOworICAgIHBhdGhfY2hhciA9IFB5Qnl0ZXNfQXNTdHJpbmcocGF0aCk7CiAgICAgaWYgKFB5TGlzdF9DaGVjayhhcmd2KSkgewogICAgICAgICBhcmdjID0gUHlMaXN0X1NpemUoYXJndik7CiAgICAgICAgIGdldGl0ZW0gPSBQeUxpc3RfR2V0SXRlbTsKQEAgLTUzOTEsMTMgKzUxODAsMTEgQEAKICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJzcGF3bnYoKSBhcmcgMiBtdXN0IGJlIGEgdHVwbGUgb3IgbGlzdCIpOwotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBhcmd2bGlzdCA9IFB5TWVtX05FVyhjaGFyICosIGFyZ2MrMSk7CiAgICAgaWYgKGFyZ3ZsaXN0ID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQogICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKQEAgLTU0MDcsNyArNTE5NCw2IEBACiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCiAgICAgICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICJzcGF3bnYoKSBhcmcgMiBtdXN0IGNvbnRhaW4gb25seSBzdHJpbmdzIik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CkBAIC01NDE3LDExICs1MjAzLDEwIEBACiAgICAgICAgIG1vZGUgPSBfUF9PVkVSTEFZOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHNwYXdudmFsID0gX3NwYXdudihtb2RlLCBwYXRoLCBhcmd2bGlzdCk7CisgICAgc3Bhd252YWwgPSBfc3Bhd252KG1vZGUsIHBhdGhfY2hhciwgYXJndmxpc3QpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKIAogICAgIGlmIChzcGF3bnZhbCA9PSAtMSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CkBAIC01NDMwLDI1ICs1MjE1LDMxIEBACiB9CiAKIAotUHlEb2NfU1RSVkFSKHBvc2l4X3NwYXdudmVfX2RvY19fLAotInNwYXdudmUobW9kZSwgcGF0aCwgYXJncywgZW52KVxuXG5cCi1FeGVjdXRlIHRoZSBwcm9ncmFtICdwYXRoJyBpbiBhIG5ldyBwcm9jZXNzLlxuXAotXG5cCi0gICAgbW9kZTogbW9kZSBvZiBwcm9jZXNzIGNyZWF0aW9uXG5cCi0gICAgcGF0aDogcGF0aCBvZiBleGVjdXRhYmxlIGZpbGVcblwKLSAgICBhcmdzOiB0dXBsZSBvciBsaXN0IG9mIGFyZ3VtZW50c1xuXAotICAgIGVudjogZGljdGlvbmFyeSBvZiBzdHJpbmdzIG1hcHBpbmcgdG8gc3RyaW5ncyIpOworLypbY2xpbmljIGlucHV0XQorb3Muc3Bhd252ZQorCisgICAgbW9kZTogaW50CisgICAgICAgIE1vZGUgb2YgcHJvY2VzcyBjcmVhdGlvbi4KKyAgICBwYXRoOiBGU0NvbnZlcnRlcgorICAgICAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS4KKyAgICBhcmd2OiBvYmplY3QKKyAgICAgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLgorICAgIGVudjogb2JqZWN0CisgICAgICAgIERpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3MuCisgICAgLworCitFeGVjdXRlIHRoZSBwcm9ncmFtIHNwZWNpZmllZCBieSBwYXRoIGluIGEgbmV3IHByb2Nlc3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zcGF3bnZlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NwYXdudmVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbW9kZSwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3YsIFB5T2JqZWN0ICplbnYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTdmNWYwNzAzNjEwNTMxZiBpbnB1dD0wMjM2MmZkOTM3OTYzZjhmXSovCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7Ci0gICAgUHlPYmplY3QgKmFyZ3YsICplbnY7CisgICAgY2hhciAqcGF0aF9jaGFyOwogICAgIGNoYXIgKiphcmd2bGlzdDsKICAgICBjaGFyICoqZW52bGlzdDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKLSAgICBpbnQgbW9kZTsKICAgICBQeV9zc2l6ZV90IGFyZ2MsIGksIGVudmM7CiAgICAgUHlfaW50cHRyX3Qgc3Bhd252YWw7CiAgICAgUHlPYmplY3QgKigqZ2V0aXRlbSkoUHlPYmplY3QgKiwgUHlfc3NpemVfdCk7CkBAIC01NDU4LDExICs1MjQ5LDcgQEAKICAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzIGFuZCBlbnYgaXMgYSBkaWN0aW9uYXJ5CiAgICAgICAgbGlrZSBwb3NpeC5lbnZpcm9uLiAqLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPTzpzcGF3bnZlIiwgJm1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wYXRoLCAmYXJndiwgJmVudikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKKyAgICBwYXRoX2NoYXIgPSBQeUJ5dGVzX0FzU3RyaW5nKHBhdGgpOwogICAgIGlmIChQeUxpc3RfQ2hlY2soYXJndikpIHsKICAgICAgICAgYXJnYyA9IFB5TGlzdF9TaXplKGFyZ3YpOwogICAgICAgICBnZXRpdGVtID0gUHlMaXN0X0dldEl0ZW07CkBAIC01NTA2LDcgKzUyOTMsNyBAQAogICAgICAgICBtb2RlID0gX1BfT1ZFUkxBWTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzcGF3bnZhbCA9IF9zcGF3bnZlKG1vZGUsIHBhdGgsIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKKyAgICBzcGF3bnZhbCA9IF9zcGF3bnZlKG1vZGUsIHBhdGhfY2hhciwgYXJndmxpc3QsIGVudmxpc3QpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoc3Bhd252YWwgPT0gLTEpCkBAIC01NTIwLDcgKzUzMDcsNiBAQAogICBmYWlsXzE6CiAgICAgZnJlZV9zdHJpbmdfYXJyYXkoYXJndmxpc3QsIGxhc3RhcmcpOwogICBmYWlsXzA6Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKICAgICByZXR1cm4gcmVzOwogfQogCkBAIC01NTI4LDE0ICs1MzE0LDE3IEBACiAKIAogI2lmZGVmIEhBVkVfRk9SSzEKLVB5RG9jX1NUUlZBUihwb3NpeF9mb3JrMV9fZG9jX18sCi0iZm9yazEoKSAtPiBwaWRcblxuXAotRm9yayBhIGNoaWxkIHByb2Nlc3Mgd2l0aCBhIHNpbmdsZSBtdWx0aXBsZXhlZCAoaS5lLiwgbm90IGJvdW5kKSB0aHJlYWQuXG5cCi1cblwKLVJldHVybiAwIHRvIGNoaWxkIHByb2Nlc3MgYW5kIFBJRCBvZiBjaGlsZCB0byBwYXJlbnQgcHJvY2Vzcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZvcmsxCisKK0ZvcmsgYSBjaGlsZCBwcm9jZXNzIHdpdGggYSBzaW5nbGUgbXVsdGlwbGV4ZWQgKGkuZS4sIG5vdCBib3VuZCkgdGhyZWFkLgorCitSZXR1cm4gMCB0byBjaGlsZCBwcm9jZXNzIGFuZCBQSUQgb2YgY2hpbGQgdG8gcGFyZW50IHByb2Nlc3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9mb3JrMShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2ZvcmsxX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMjdiNGY2NjQxOWM5ZGNmIGlucHV0PTEyZGIwMjE2Nzg5MzkyNmVdKi8KIHsKICAgICBwaWRfdCBwaWQ7CiAgICAgaW50IHJlc3VsdCA9IDA7CkBAIC01NTU4LDE3ICs1MzQ3LDIxIEBACiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbVBpZChwaWQpOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9GT1JLMSAqLwogCiAKICNpZmRlZiBIQVZFX0ZPUksKLVB5RG9jX1NUUlZBUihwb3NpeF9mb3JrX19kb2NfXywKLSJmb3JrKCkgLT4gcGlkXG5cblwKLUZvcmsgYSBjaGlsZCBwcm9jZXNzLlxuXAotUmV0dXJuIDAgdG8gY2hpbGQgcHJvY2VzcyBhbmQgUElEIG9mIGNoaWxkIHRvIHBhcmVudCBwcm9jZXNzLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZm9yaworCitGb3JrIGEgY2hpbGQgcHJvY2Vzcy4KKworUmV0dXJuIDAgdG8gY2hpbGQgcHJvY2VzcyBhbmQgUElEIG9mIGNoaWxkIHRvIHBhcmVudCBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZm9yayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2ZvcmtfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg5OGIxZWNkMzQ5OGJhMTIgaW5wdXQ9MTNjOTU2NDEzMTEwZWVhYV0qLwogewogICAgIHBpZF90IHBpZDsKICAgICBpbnQgcmVzdWx0ID0gMDsKQEAgLTU1OTEsOTIgKzUzODQsMTA2IEBACiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbVBpZChwaWQpOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9GT1JLICovCisKIAogI2lmZGVmIEhBVkVfU0NIRURfSAotCiAjaWZkZWYgSEFWRV9TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYCisvKltjbGluaWMgaW5wdXRdCitvcy5zY2hlZF9nZXRfcHJpb3JpdHlfbWF4CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X19kb2NfXywKLSJzY2hlZF9nZXRfcHJpb3JpdHlfbWF4KHBvbGljeSlcblxuXAotR2V0IHRoZSBtYXhpbXVtIHNjaGVkdWxpbmcgcHJpb3JpdHkgZm9yICpwb2xpY3kqLiIpOworICAgIHBvbGljeTogaW50CisKK0dldCB0aGUgbWF4aW11bSBzY2hlZHVsaW5nIHByaW9yaXR5IGZvciBwb2xpY3kuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NjaGVkX2dldF9wcmlvcml0eV9tYXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgcG9saWN5KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE2YTMwZmE1MDcxZjJkODEgaW5wdXQ9MjA5N2I3OTk4ZWNhNjg3NF0qLwogewotICAgIGludCBwb2xpY3ksIG1heDsKKyAgICBpbnQgbWF4OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnNjaGVkX2dldF9wcmlvcml0eV9tYXgiLCAmcG9saWN5KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbWF4ID0gc2NoZWRfZ2V0X3ByaW9yaXR5X21heChwb2xpY3kpOwogICAgIGlmIChtYXggPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG1heCk7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWluX19kb2NfXywKLSJzY2hlZF9nZXRfcHJpb3JpdHlfbWluKHBvbGljeSlcblxuXAotR2V0IHRoZSBtaW5pbXVtIHNjaGVkdWxpbmcgcHJpb3JpdHkgZm9yICpwb2xpY3kqLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5zY2hlZF9nZXRfcHJpb3JpdHlfbWluCisKKyAgICBwb2xpY3k6IGludAorCitHZXQgdGhlIG1pbmltdW0gc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgcG9saWN5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHBvbGljeSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01Y2EzZWQ2YmM0M2U5YjIwIGlucHV0PTIxYmM4ZmEwZDcwOTgzYmZdKi8KIHsKLSAgICBpbnQgcG9saWN5LCBtaW47Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6c2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsICZwb2xpY3kpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBtaW4gPSBzY2hlZF9nZXRfcHJpb3JpdHlfbWluKHBvbGljeSk7CisgICAgaW50IG1pbiA9IHNjaGVkX2dldF9wcmlvcml0eV9taW4ocG9saWN5KTsKICAgICBpZiAobWluIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhtaW4pOwogfQotCiAjZW5kaWYgLyogSEFWRV9TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYICovCiAKLSNpZmRlZiBIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUgogCi1QeURvY19TVFJWQVIocG9zaXhfc2NoZWRfZ2V0c2NoZWR1bGVyX19kb2NfXywKLSJzY2hlZF9nZXRzY2hlZHVsZXIocGlkKVxuXG5cCi1HZXQgdGhlIHNjaGVkdWxpbmcgcG9saWN5IGZvciB0aGUgcHJvY2VzcyB3aXRoIGEgUElEIG9mICpwaWQqLlxuXAotUGFzc2luZyBhIFBJRCBvZiAwIHJldHVybnMgdGhlIHNjaGVkdWxpbmcgcG9saWN5IGZvciB0aGUgY2FsbGluZyBwcm9jZXNzLiIpOworI2lmZGVmIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCisvKltjbGluaWMgaW5wdXRdCitvcy5zY2hlZF9nZXRzY2hlZHVsZXIKKyAgICBwaWQ6IHBpZF90CisgICAgLworCitHZXQgdGhlIHNjaGVkdWxpbmcgcG9saWN5IGZvciB0aGUgcHJvY2VzcyBpZGVudGlmaWVkeSBieSBwaWQuCisKK1Bhc3NpbmcgMCBmb3IgcGlkIHJldHVybnMgdGhlIHNjaGVkdWxpbmcgcG9saWN5IGZvciB0aGUgY2FsbGluZyBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfZ2V0c2NoZWR1bGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NjaGVkX2dldHNjaGVkdWxlcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04Y2Q2M2MxNWNhZjU0ZmE5IGlucHV0PTVmMTRjZmQxZjE4OWUxYTBdKi8KIHsKLSAgICBwaWRfdCBwaWQ7CiAgICAgaW50IHBvbGljeTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0c2NoZWR1bGVyIiwgJnBpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHBvbGljeSA9IHNjaGVkX2dldHNjaGVkdWxlcihwaWQpOwogICAgIGlmIChwb2xpY3kgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHBvbGljeSk7CiB9CisjZW5kaWYgLyogSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIgKi8KIAotI2VuZGlmCiAKICNpZiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUU0NIRURVTEVSKSB8fCBkZWZpbmVkKEhBVkVfU0NIRURfU0VUUEFSQU0pCisvKltjbGluaWMgaW5wdXRdCitjbGFzcyBvcy5zY2hlZF9wYXJhbSAiUHlPYmplY3QgKiIgIiZTY2hlZFBhcmFtVHlwZSIKKworQGNsYXNzbWV0aG9kCitvcy5zY2hlZF9wYXJhbS5fX25ld19fCisKKyAgICBzY2hlZF9wcmlvcml0eTogb2JqZWN0CisgICAgICAgIEEgc2NoZWR1bGluZyBwYXJhbWV0ZXIuCisKK0N1cnJlbnQgaGFzIG9ubHkgb25lIGZpZWxkOiBzY2hlZF9wcmlvcml0eSIpOworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc2NoZWRfcGFyYW1fbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19zY2hlZF9wYXJhbV9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnNjaGVkX3ByaW9yaXR5KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ4ZjQwNjdkNjBmNDhjMTMgaW5wdXQ9NzNhNGMyMmY3MDcxZmM2Ml0qLwogewotICAgIFB5T2JqZWN0ICpyZXMsICpwcmlvcml0eTsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNjaGVkX3ByaW9yaXR5IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJlczsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk86c2NoZWRfcGFyYW0iLCBrd2xpc3QsICZwcmlvcml0eSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJlcyA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KHR5cGUpOwogICAgIGlmICghcmVzKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9JTkNSRUYocHJpb3JpdHkpOwotICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzLCAwLCBwcmlvcml0eSk7CisgICAgUHlfSU5DUkVGKHNjaGVkX3ByaW9yaXR5KTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlcywgMCwgc2NoZWRfcHJpb3JpdHkpOwogICAgIHJldHVybiByZXM7CiB9CiAKLVB5RG9jX1NUUlZBUihzY2hlZF9wYXJhbV9fZG9jX18sCi0ic2NoZWRfcGFyYW0oc2NoZWRfcHJpb3JpdHkpOiBBIHNjaGVkdWxpbmcgcGFyYW1ldGVyLlxuXG5cCi1DdXJyZW50IGhhcyBvbmx5IG9uZSBmaWVsZDogc2NoZWRfcHJpb3JpdHkiKTsKKworUHlEb2NfVkFSKG9zX3NjaGVkX3BhcmFtX19kb2NfXyk7CiAKIHN0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHNjaGVkX3BhcmFtX2ZpZWxkc1tdID0gewogICAgIHsic2NoZWRfcHJpb3JpdHkiLCAidGhlIHNjaGVkdWxpbmcgcHJpb3JpdHkifSwKQEAgLTU2ODUsNyArNTQ5Miw3IEBACiAKIHN0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0Rlc2Mgc2NoZWRfcGFyYW1fZGVzYyA9IHsKICAgICAic2NoZWRfcGFyYW0iLCAvKiBuYW1lICovCi0gICAgc2NoZWRfcGFyYW1fX2RvY19fLCAvKiBkb2MgKi8KKyAgICBvc19zY2hlZF9wYXJhbV9fZG9jX18sIC8qIGRvYyAqLwogICAgIHNjaGVkX3BhcmFtX2ZpZWxkcywKICAgICAxCiB9OwpAQCAtNTcwOSwxMTggKzU1MTYsMTM0IEBACiAgICAgcmVzLT5zY2hlZF9wcmlvcml0eSA9IFB5X1NBRkVfRE9XTkNBU1QocHJpb3JpdHksIGxvbmcsIGludCk7CiAgICAgcmV0dXJuIDE7CiB9CisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUikgfHwgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKSAqLwogCi0jZW5kaWYKIAogI2lmZGVmIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCisvKltjbGluaWMgaW5wdXRdCitvcy5zY2hlZF9zZXRzY2hlZHVsZXIKIAotUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX3NldHNjaGVkdWxlcl9fZG9jX18sCi0ic2NoZWRfc2V0c2NoZWR1bGVyKHBpZCwgcG9saWN5LCBwYXJhbSlcblxuXAotU2V0IHRoZSBzY2hlZHVsaW5nIHBvbGljeSwgKnBvbGljeSosIGZvciAqcGlkKi5cblwKLUlmICpwaWQqIGlzIDAsIHRoZSBjYWxsaW5nIHByb2Nlc3MgaXMgY2hhbmdlZC5cblwKLSpwYXJhbSogaXMgYW4gaW5zdGFuY2Ugb2Ygc2NoZWRfcGFyYW0uIik7CisgICAgcGlkOiBwaWRfdAorICAgIHBvbGljeTogaW50CisgICAgcGFyYW06IHNjaGVkX3BhcmFtCisgICAgLworCitTZXQgdGhlIHNjaGVkdWxpbmcgcG9saWN5IGZvciB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZC4KKworSWYgcGlkIGlzIDAsIHRoZSBjYWxsaW5nIHByb2Nlc3MgaXMgY2hhbmdlZC4KK3BhcmFtIGlzIGFuIGluc3RhbmNlIG9mIHNjaGVkX3BhcmFtLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfc2V0c2NoZWR1bGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NjaGVkX3NldHNjaGVkdWxlcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCwgaW50IHBvbGljeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY2hlZF9wYXJhbSAqcGFyYW0pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzcwNTNlNWM1MjhjMzVjOSBpbnB1dD1jNTgxZjk0NjlhNTMyN2RkXSovCiB7Ci0gICAgcGlkX3QgcGlkOwotICAgIGludCBwb2xpY3k7Ci0gICAgc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgImlPJjpzY2hlZF9zZXRzY2hlZHVsZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGlkLCAmcG9saWN5LCAmY29udmVydF9zY2hlZF9wYXJhbSwgJnBhcmFtKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICAvKgogICAgICoqIHNjaGVkX3NldHNjaGVkdWxlcigpIHJldHVybnMgMCBpbiBMaW51eCwgYnV0IHRoZSBwcmV2aW91cwogICAgICoqIHNjaGVkdWxpbmcgcG9saWN5IHVuZGVyIFNvbGFyaXMvSWxsdW1vcywgYW5kIG90aGVycy4KICAgICAqKiBPbiBlcnJvciwgLTEgaXMgcmV0dXJuZWQgaW4gYWxsIE9wZXJhdGluZyBTeXN0ZW1zLgogICAgICovCi0gICAgaWYgKHNjaGVkX3NldHNjaGVkdWxlcihwaWQsIHBvbGljeSwgJnBhcmFtKSA9PSAtMSkKKyAgICBpZiAoc2NoZWRfc2V0c2NoZWR1bGVyKHBpZCwgcG9saWN5LCBwYXJhbSkgPT0gLTEpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQorI2VuZGlmICAvKiBIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUiovCiAKLSNlbmRpZgogCiAjaWZkZWYgSEFWRV9TQ0hFRF9TRVRQQVJBTQorLypbY2xpbmljIGlucHV0XQorb3Muc2NoZWRfZ2V0cGFyYW0KKyAgICBwaWQ6IHBpZF90CisgICAgLwogCi1QeURvY19TVFJWQVIocG9zaXhfc2NoZWRfZ2V0cGFyYW1fX2RvY19fLAotInNjaGVkX2dldHBhcmFtKHBpZCkgLT4gc2NoZWRfcGFyYW1cblxuXAotUmV0dXJucyBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgZm9yIHRoZSBwcm9jZXNzIHdpdGggKnBpZCogYXMgYW4gaW5zdGFuY2Ugb2YgdGhlXG5cCi1zY2hlZF9wYXJhbSBjbGFzcy4gQSBQSUQgb2YgMCBtZWFucyB0aGUgY2FsbGluZyBwcm9jZXNzLiIpOworUmV0dXJucyBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgZm9yIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLgorCitJZiBwaWQgaXMgMCwgcmV0dXJucyBwYXJhbWV0ZXJzIGZvciB0aGUgY2FsbGluZyBwcm9jZXNzLgorUmV0dXJuIHZhbHVlIGlzIGFuIGluc3RhbmNlIG9mIHNjaGVkX3BhcmFtLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfZ2V0cGFyYW0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc2NoZWRfZ2V0cGFyYW1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjQyYzViZDI2MDRlY2QwOCBpbnB1dD0xOGExZWY5YzJlZmFlMjk2XSovCiB7Ci0gICAgcGlkX3QgcGlkOwogICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKLSAgICBQeU9iamVjdCAqcmVzLCAqcHJpb3JpdHk7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqcHJpb3JpdHk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHBhcmFtIiwgJnBpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzY2hlZF9nZXRwYXJhbShwaWQsICZwYXJhbSkpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIHJlcyA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZTY2hlZFBhcmFtVHlwZSk7Ci0gICAgaWYgKCFyZXMpCisgICAgcmVzdWx0ID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcoJlNjaGVkUGFyYW1UeXBlKTsKKyAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcHJpb3JpdHkgPSBQeUxvbmdfRnJvbUxvbmcocGFyYW0uc2NoZWRfcHJpb3JpdHkpOwogICAgIGlmICghcHJpb3JpdHkpIHsKLSAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXMsIDAsIHByaW9yaXR5KTsKLSAgICByZXR1cm4gcmVzOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCAwLCBwcmlvcml0eSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX3NldHBhcmFtX19kb2NfXywKLSJzY2hlZF9zZXRwYXJhbShwaWQsIHBhcmFtKVxuXG5cCi1TZXQgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIGZvciBhIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCouXG5cCi1BIFBJRCBvZiAwIG1lYW5zIHRoZSBjYWxsaW5nIHByb2Nlc3MuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNjaGVkX3NldHBhcmFtCisgICAgcGlkOiBwaWRfdAorICAgIHBhcmFtOiBzY2hlZF9wYXJhbQorICAgIC8KKworU2V0IHNjaGVkdWxpbmcgcGFyYW1ldGVycyBmb3IgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQuCisKK0lmIHBpZCBpcyAwLCBzZXRzIHBhcmFtZXRlcnMgZm9yIHRoZSBjYWxsaW5nIHByb2Nlc3MuCitwYXJhbSBzaG91bGQgYmUgYW4gaW5zdGFuY2Ugb2Ygc2NoZWRfcGFyYW0uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zY2hlZF9zZXRwYXJhbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zY2hlZF9zZXRwYXJhbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjaGVkX3BhcmFtICpwYXJhbSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iN2EzYzU4OTQzNmNlYzliIGlucHV0PTZiOGQ2ZGZjZWNkYzIxYmRdKi8KIHsKLSAgICBwaWRfdCBwaWQ7Ci0gICAgc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIk8mOnNjaGVkX3NldHBhcmFtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBpZCwgJmNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzY2hlZF9zZXRwYXJhbShwaWQsICZwYXJhbSkpCisgICAgaWYgKHNjaGVkX3NldHBhcmFtKHBpZCwgcGFyYW0pKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KKyNlbmRpZiAvKiBIQVZFX1NDSEVEX1NFVFBBUkFNICovCiAKLSNlbmRpZgogCiAjaWZkZWYgSEFWRV9TQ0hFRF9SUl9HRVRfSU5URVJWQUwKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNjaGVkX3JyX2dldF9pbnRlcnZhbCAtPiBkb3VibGUKKyAgICBwaWQ6IHBpZF90CisgICAgLwogCi1QeURvY19TVFJWQVIocG9zaXhfc2NoZWRfcnJfZ2V0X2ludGVydmFsX19kb2NfXywKLSJzY2hlZF9ycl9nZXRfaW50ZXJ2YWwocGlkKSAtPiBmbG9hdFxuXG5cCi1SZXR1cm4gdGhlIHJvdW5kLXJvYmluIHF1YW50dW0gZm9yIHRoZSBwcm9jZXNzIHdpdGggUElEICpwaWQqIGluIHNlY29uZHMuIik7CitSZXR1cm4gdGhlIHJvdW5kLXJvYmluIHF1YW50dW0gZm9yIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLCBpbiBzZWNvbmRzLgogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfcnJfZ2V0X2ludGVydmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK1ZhbHVlIHJldHVybmVkIGlzIGEgZmxvYXQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBkb3VibGUKK29zX3NjaGVkX3JyX2dldF9pbnRlcnZhbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03YWRjMTM3YTg2ZGVhNTgxIGlucHV0PTJhOTczZGExNWNjYTZmYWVdKi8KIHsKLSAgICBwaWRfdCBwaWQ7CiAgICAgc3RydWN0IHRpbWVzcGVjIGludGVydmFsOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9ycl9nZXRfaW50ZXJ2YWwiLCAmcGlkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNjaGVkX3JyX2dldF9pbnRlcnZhbChwaWQsICZpbnRlcnZhbCkpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoKGRvdWJsZSlpbnRlcnZhbC50dl9zZWMgKyAxZS05KmludGVydmFsLnR2X25zZWMpOworICAgIGlmIChzY2hlZF9ycl9nZXRfaW50ZXJ2YWwocGlkLCAmaW50ZXJ2YWwpKSB7CisgICAgICAgIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIHJldHVybiAtMS4wOworICAgIH0KKyAgICByZXR1cm4gKGRvdWJsZSlpbnRlcnZhbC50dl9zZWMgKyAxZS05KmludGVydmFsLnR2X25zZWM7CiB9CisjZW5kaWYgLyogSEFWRV9TQ0hFRF9SUl9HRVRfSU5URVJWQUwgKi8KIAotI2VuZGlmCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF95aWVsZF9fZG9jX18sCi0ic2NoZWRfeWllbGQoKVxuXG5cCi1Wb2x1bnRhcmlseSByZWxpbnF1aXNoIHRoZSBDUFUuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zY2hlZF95aWVsZAorCitWb2x1bnRhcmlseSByZWxpbnF1aXNoIHRoZSBDUFUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zY2hlZF95aWVsZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX3NjaGVkX3lpZWxkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kN2JkNTE4NjljNGNiNmE4IGlucHV0PWU1NGQ2Zjk4MTg5MzkxZDRdKi8KIHsKICAgICBpZiAoc2NoZWRfeWllbGQoKSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CkBAIC01ODI4LDM5ICs1NjUxLDQxIEBACiB9CiAKICNpZmRlZiBIQVZFX1NDSEVEX1NFVEFGRklOSVRZCi0KIC8qIFRoZSBtaW5pbXVtIG51bWJlciBvZiBDUFVzIGFsbG9jYXRlZCBpbiBhIGNwdV9zZXRfdCAqLwogc3RhdGljIGNvbnN0IGludCBOQ1BVU19TVEFSVCA9IHNpemVvZih1bnNpZ25lZCBsb25nKSAqIENIQVJfQklUOwogCi1QeURvY19TVFJWQVIocG9zaXhfc2NoZWRfc2V0YWZmaW5pdHlfX2RvY19fLAotInNjaGVkX3NldGFmZmluaXR5KHBpZCwgY3B1X3NldClcblxuXAotU2V0IHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKiB0byAqY3B1X3NldCouIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zY2hlZF9zZXRhZmZpbml0eQorICAgIHBpZDogcGlkX3QKKyAgICBtYXNrIDogb2JqZWN0CisgICAgLworCitTZXQgdGhlIENQVSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZCB0byBtYXNrLgorCittYXNrIHNob3VsZCBiZSBhbiBpdGVyYWJsZSBvZiBpbnRlZ2VycyBpZGVudGlmeWluZyBDUFVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfc2V0YWZmaW5pdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc2NoZWRfc2V0YWZmaW5pdHlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsIFB5T2JqZWN0ICptYXNrKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU4MmJjYmY0MGQzMjUzYTkgaW5wdXQ9YTA3OTFhNTk3YzcwODViYV0qLwogewotICAgIHBpZF90IHBpZDsKICAgICBpbnQgbmNwdXM7CiAgICAgc2l6ZV90IHNldHNpemU7Ci0gICAgY3B1X3NldF90ICptYXNrID0gTlVMTDsKLSAgICBQeU9iamVjdCAqaXRlcmFibGUsICppdGVyYXRvciA9IE5VTEwsICppdGVtOworICAgIGNwdV9zZXRfdCAqY3B1X3NldCA9IE5VTEw7CisgICAgUHlPYmplY3QgKml0ZXJhdG9yID0gTlVMTCwgKml0ZW07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiTzpzY2hlZF9zZXRhZmZpbml0eSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwaWQsICZpdGVyYWJsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaXRlcmF0b3IgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKKyAgICBpdGVyYXRvciA9IFB5T2JqZWN0X0dldEl0ZXIobWFzayk7CiAgICAgaWYgKGl0ZXJhdG9yID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgbmNwdXMgPSBOQ1BVU19TVEFSVDsKICAgICBzZXRzaXplID0gQ1BVX0FMTE9DX1NJWkUobmNwdXMpOwotICAgIG1hc2sgPSBDUFVfQUxMT0MobmNwdXMpOwotICAgIGlmIChtYXNrID09IE5VTEwpIHsKKyAgICBjcHVfc2V0ID0gQ1BVX0FMTE9DKG5jcHVzKTsKKyAgICBpZiAoY3B1X3NldCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIENQVV9aRVJPX1Moc2V0c2l6ZSwgbWFzayk7CisgICAgQ1BVX1pFUk9fUyhzZXRzaXplLCBjcHVfc2V0KTsKIAogICAgIHdoaWxlICgoaXRlbSA9IFB5SXRlcl9OZXh0KGl0ZXJhdG9yKSkpIHsKICAgICAgICAgbG9uZyBjcHU7CkBAIC01OTAxLDQ4ICs1NzI2LDUwIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBuZXdzZXRzaXplID0gQ1BVX0FMTE9DX1NJWkUobmV3bmNwdXMpOwogICAgICAgICAgICAgQ1BVX1pFUk9fUyhuZXdzZXRzaXplLCBuZXdtYXNrKTsKLSAgICAgICAgICAgIG1lbWNweShuZXdtYXNrLCBtYXNrLCBzZXRzaXplKTsKLSAgICAgICAgICAgIENQVV9GUkVFKG1hc2spOworICAgICAgICAgICAgbWVtY3B5KG5ld21hc2ssIGNwdV9zZXQsIHNldHNpemUpOworICAgICAgICAgICAgQ1BVX0ZSRUUoY3B1X3NldCk7CiAgICAgICAgICAgICBzZXRzaXplID0gbmV3c2V0c2l6ZTsKLSAgICAgICAgICAgIG1hc2sgPSBuZXdtYXNrOworICAgICAgICAgICAgY3B1X3NldCA9IG5ld21hc2s7CiAgICAgICAgICAgICBuY3B1cyA9IG5ld25jcHVzOwogICAgICAgICB9Ci0gICAgICAgIENQVV9TRVRfUyhjcHUsIHNldHNpemUsIG1hc2spOworICAgICAgICBDUFVfU0VUX1MoY3B1LCBzZXRzaXplLCBjcHVfc2V0KTsKICAgICB9CiAgICAgUHlfQ0xFQVIoaXRlcmF0b3IpOwogCi0gICAgaWYgKHNjaGVkX3NldGFmZmluaXR5KHBpZCwgc2V0c2l6ZSwgbWFzaykpIHsKKyAgICBpZiAoc2NoZWRfc2V0YWZmaW5pdHkocGlkLCBzZXRzaXplLCBjcHVfc2V0KSkgewogICAgICAgICBwb3NpeF9lcnJvcigpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICBDUFVfRlJFRShtYXNrKTsKKyAgICBDUFVfRlJFRShjcHVfc2V0KTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIAogZXJyb3I6Ci0gICAgaWYgKG1hc2spCi0gICAgICAgIENQVV9GUkVFKG1hc2spOworICAgIGlmIChjcHVfc2V0KQorICAgICAgICBDUFVfRlJFRShjcHVfc2V0KTsKICAgICBQeV9YREVDUkVGKGl0ZXJhdG9yKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX2dldGFmZmluaXR5X19kb2NfXywKLSJzY2hlZF9nZXRhZmZpbml0eShwaWQsIG5jcHVzKSAtPiBjcHVfc2V0XG5cblwKLVJldHVybiB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCouXG5cCi1UaGUgcmV0dXJuZWQgY3B1X3NldCB3aWxsIGJlIG9mIHNpemUgKm5jcHVzKi4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3Muc2NoZWRfZ2V0YWZmaW5pdHkKKyAgICBwaWQ6IHBpZF90CisgICAgLworCitSZXR1cm4gdGhlIGFmZmluaXR5IG9mIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLgorCitUaGUgYWZmaW5pdHkgaXMgcmV0dXJuZWQgYXMgYSBzZXQgb2YgQ1BVIGlkZW50aWZpZXJzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfZ2V0YWZmaW5pdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc2NoZWRfZ2V0YWZmaW5pdHlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjQzMWE4ZjMxMGUzNjllNyBpbnB1dD1lYWYxNjE5MzY4NzRiOGExXSovCiB7Ci0gICAgcGlkX3QgcGlkOwogICAgIGludCBjcHUsIG5jcHVzLCBjb3VudDsKICAgICBzaXplX3Qgc2V0c2l6ZTsKICAgICBjcHVfc2V0X3QgKm1hc2sgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRhZmZpbml0eSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIG5jcHVzID0gTkNQVVNfU1RBUlQ7CiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgc2V0c2l6ZSA9IENQVV9BTExPQ19TSVpFKG5jcHVzKTsKQEAgLTU5OTIsNiArNTgxOSw3IEBACiAKICNlbmRpZiAvKiBIQVZFX1NDSEVEX0ggKi8KIAorCiAvKiBBSVggdXNlcyAvZGV2L3B0YyBidXQgaXMgb3RoZXJ3aXNlIHRoZSBzYW1lIGFzIC9kZXYvcHRteCAqLwogLyogSVJJWCBoYXMgYm90aCAvZGV2L3B0YyBhbmQgL2Rldi9wdG14LCB1c2UgcHRteCAqLwogI2lmIGRlZmluZWQoSEFWRV9ERVZfUFRDKSAmJiAhZGVmaW5lZChIQVZFX0RFVl9QVE1YKQpAQCAtNjAxOCwxMyArNTg0NiwyMCBAQAogI2VuZGlmCiAjZW5kaWYgLyogZGVmaW5lZChIQVZFX09QRU5QVFkpIHx8IGRlZmluZWQoSEFWRV9GT1JLUFRZKSB8fCBkZWZpbmVkKEhBVkVfREVWX1BUTVggKi8KIAorCiAjaWYgZGVmaW5lZChIQVZFX09QRU5QVFkpIHx8IGRlZmluZWQoSEFWRV9fR0VUUFRZKSB8fCBkZWZpbmVkKEhBVkVfREVWX1BUTVgpCi1QeURvY19TVFJWQVIocG9zaXhfb3BlbnB0eV9fZG9jX18sCi0ib3BlbnB0eSgpIC0+IChtYXN0ZXJfZmQsIHNsYXZlX2ZkKVxuXG5cCi1PcGVuIGEgcHNldWRvLXRlcm1pbmFsLCByZXR1cm5pbmcgb3BlbiBmZCdzIGZvciBib3RoIG1hc3RlciBhbmQgc2xhdmUgZW5kLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5vcGVucHR5CisKK09wZW4gYSBwc2V1ZG8tdGVybWluYWwuCisKK1JldHVybiBhIHR1cGxlIG9mIChtYXN0ZXJfZmQsIHNsYXZlX2ZkKSBjb250YWluaW5nIG9wZW4gZmlsZSBkZXNjcmlwdG9ycworZm9yIGJvdGggdGhlIG1hc3RlciBhbmQgc2xhdmUgZW5kcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X29wZW5wdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19vcGVucHR5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNThlNTcxYzFiYTEzNWVlIGlucHV0PWYzZDk5ZmQ5OWU3NjI5MDddKi8KIHsKICAgICBpbnQgbWFzdGVyX2ZkID0gLTEsIHNsYXZlX2ZkID0gLTE7CiAjaWZuZGVmIEhBVkVfT1BFTlBUWQpAQCAtNjA1NSw3ICs1ODkwLDcgQEAKIAogICAgIHNsYXZlX2ZkID0gX1B5X29wZW4oc2xhdmVfbmFtZSwgT19SRFdSKTsKICAgICBpZiAoc2xhdmVfZmQgPCAwKQotICAgICAgICBnb3RvIHBvc2l4X2Vycm9yOworICAgICAgICBnb3RvIGVycm9yOwogCiAjZWxzZQogICAgIG1hc3Rlcl9mZCA9IG9wZW4oREVWX1BUWV9GSUxFLCBPX1JEV1IgfCBPX05PQ1RUWSk7IC8qIG9wZW4gbWFzdGVyICovCkBAIC02MDgzLDggKzU5MTgsOCBAQAogICAgICAgICBnb3RvIHBvc2l4X2Vycm9yOwogCiAgICAgc2xhdmVfZmQgPSBfUHlfb3BlbihzbGF2ZV9uYW1lLCBPX1JEV1IgfCBPX05PQ1RUWSk7IC8qIG9wZW4gc2xhdmUgKi8KLSAgICBpZiAoc2xhdmVfZmQgPCAwKQotICAgICAgICBnb3RvIHBvc2l4X2Vycm9yOworICAgIGlmIChzbGF2ZV9mZCA9PSAtMSkKKyAgICAgICAgZ290byBlcnJvcjsKIAogICAgIGlmIChfUHlfc2V0X2luaGVyaXRhYmxlKG1hc3Rlcl9mZCwgMCwgTlVMTCkgPCAwKQogICAgICAgICBnb3RvIHBvc2l4X2Vycm9yOwpAQCAtNjEwMiw5ICs1OTM3LDcgQEAKIAogcG9zaXhfZXJyb3I6CiAgICAgcG9zaXhfZXJyb3IoKTsKLSNpZiBkZWZpbmVkKEhBVkVfT1BFTlBUWSkgfHwgZGVmaW5lZChIQVZFX19HRVRQVFkpCiBlcnJvcjoKLSNlbmRpZgogICAgIGlmIChtYXN0ZXJfZmQgIT0gLTEpCiAgICAgICAgIGNsb3NlKG1hc3Rlcl9mZCk7CiAgICAgaWYgKHNsYXZlX2ZkICE9IC0xKQpAQCAtNjExMywxNSArNTk0NiwyMiBAQAogfQogI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9PUEVOUFRZKSB8fCBkZWZpbmVkKEhBVkVfX0dFVFBUWSkgfHwgZGVmaW5lZChIQVZFX0RFVl9QVE1YKSAqLwogCisKICNpZmRlZiBIQVZFX0ZPUktQVFkKLVB5RG9jX1NUUlZBUihwb3NpeF9mb3JrcHR5X19kb2NfXywKLSJmb3JrcHR5KCkgLT4gKHBpZCwgbWFzdGVyX2ZkKVxuXG5cCi1Gb3JrIGEgbmV3IHByb2Nlc3Mgd2l0aCBhIG5ldyBwc2V1ZG8tdGVybWluYWwgYXMgY29udHJvbGxpbmcgdHR5LlxuXG5cCi1MaWtlIGZvcmsoKSwgcmV0dXJuIDAgYXMgcGlkIHRvIGNoaWxkIHByb2Nlc3MsIGFuZCBQSUQgb2YgY2hpbGQgdG8gcGFyZW50LlxuXAotVG8gYm90aCwgcmV0dXJuIGZkIG9mIG5ld2x5IG9wZW5lZCBwc2V1ZG8tdGVybWluYWwuXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZvcmtwdHkKKworRm9yayBhIG5ldyBwcm9jZXNzIHdpdGggYSBuZXcgcHNldWRvLXRlcm1pbmFsIGFzIGNvbnRyb2xsaW5nIHR0eS4KKworUmV0dXJucyBhIHR1cGxlIG9mIChwaWQsIG1hc3Rlcl9mZCkuCitMaWtlIGZvcmsoKSwgcmV0dXJuIHBpZCBvZiAwIHRvIHRoZSBjaGlsZCBwcm9jZXNzLAorYW5kIHBpZCBvZiBjaGlsZCB0byB0aGUgcGFyZW50IHByb2Nlc3MuCitUbyBib3RoLCByZXR1cm4gZmQgb2YgbmV3bHkgb3BlbmVkIHBzZXVkby10ZXJtaW5hbC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2ZvcmtwdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19mb3JrcHR5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMTFiODM5MWRjZTNjYjU3IGlucHV0PWYxZjdmNGJhZTM5NjYwMTBdKi8KIHsKICAgICBpbnQgbWFzdGVyX2ZkID0gLTEsIHJlc3VsdCA9IDA7CiAgICAgcGlkX3QgcGlkOwpAQCAtNjE0NSw1OSArNTk4NSw3MyBAQAogICAgIH0KICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE5pKSIsIFB5TG9uZ19Gcm9tUGlkKHBpZCksIG1hc3Rlcl9mZCk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0ZPUktQVFkgKi8KIAogCiAjaWZkZWYgSEFWRV9HRVRFR0lECi1QeURvY19TVFJWQVIocG9zaXhfZ2V0ZWdpZF9fZG9jX18sCi0iZ2V0ZWdpZCgpIC0+IGVnaWRcblxuXAotUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MncyBlZmZlY3RpdmUgZ3JvdXAgaWQuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5nZXRlZ2lkCisKK1JldHVybiB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZWZmZWN0aXZlIGdyb3VwIGlkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0ZWdpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2dldGVnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkwZjQzM2E4YzBiMWQ5MTkgaW5wdXQ9MTU5NmY3OWFkMTEwN2Q1ZF0qLwogewogICAgIHJldHVybiBfUHlMb25nX0Zyb21HaWQoZ2V0ZWdpZCgpKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfR0VURUdJRCAqLwogCiAKICNpZmRlZiBIQVZFX0dFVEVVSUQKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRldWlkX19kb2NfXywKLSJnZXRldWlkKCkgLT4gZXVpZFxuXG5cCi1SZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcydzIGVmZmVjdGl2ZSB1c2VyIGlkLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0ZXVpZAorCitSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcydzIGVmZmVjdGl2ZSB1c2VyIGlkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0ZXVpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2dldGV1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFhNTMyYzRhNjY4NzQzNTcgaW5wdXQ9NDY0NGM2NjJkM2JkOWYxOV0qLwogewogICAgIHJldHVybiBfUHlMb25nX0Zyb21VaWQoZ2V0ZXVpZCgpKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfR0VURVVJRCAqLwogCiAKICNpZmRlZiBIQVZFX0dFVEdJRAotUHlEb2NfU1RSVkFSKHBvc2l4X2dldGdpZF9fZG9jX18sCi0iZ2V0Z2lkKCkgLT4gZ2lkXG5cblwKLVJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZ3JvdXAgaWQuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5nZXRnaWQKKworUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MncyBncm91cCBpZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldGdpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2dldGdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTFhMjIwMjFiNzRlYTQ2YiBpbnB1dD01ODc5NjM0NGNkODdjMGY2XSovCiB7CiAgICAgcmV0dXJuIF9QeUxvbmdfRnJvbUdpZChnZXRnaWQoKSk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0dFVEdJRCAqLwogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRwaWRfX2RvY19fLAotImdldHBpZCgpIC0+IHBpZFxuXG5cCi1SZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcyBpZCIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0cGlkCisKK1JldHVybiB0aGUgY3VycmVudCBwcm9jZXNzIGlkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0cGlkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3NfZ2V0cGlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZmJmM2E5MzRlZTA5ZTYyIGlucHV0PTVhOWEwMGYwYWI2OGFhMDBdKi8KIHsKICAgICByZXR1cm4gUHlMb25nX0Zyb21QaWQoZ2V0cGlkKCkpOwogfQogCiAjaWZkZWYgSEFWRV9HRVRHUk9VUExJU1QKKworLyogQUMgMy41OiBmdW5ueSBhcHBsZSBsb2dpYyBiZWxvdyAqLwogUHlEb2NfU1RSVkFSKHBvc2l4X2dldGdyb3VwbGlzdF9fZG9jX18sCiAiZ2V0Z3JvdXBsaXN0KHVzZXIsIGdyb3VwKSAtPiBsaXN0IG9mIGdyb3VwcyB0byB3aGljaCBhIHVzZXIgYmVsb25nc1xuXG5cCiBSZXR1cm5zIGEgbGlzdCBvZiBncm91cHMgdG8gd2hpY2ggYSB1c2VyIGJlbG9uZ3MuXG5cblwKQEAgLTYyNzAsMTUgKzYxMjQsMTkgQEAKIAogICAgIHJldHVybiBsaXN0OwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9HRVRHUk9VUExJU1QgKi8KKwogCiAjaWZkZWYgSEFWRV9HRVRHUk9VUFMKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRncm91cHNfX2RvY19fLAotImdldGdyb3VwcygpIC0+IGxpc3Qgb2YgZ3JvdXAgSURzXG5cblwKLVJldHVybiBsaXN0IG9mIHN1cHBsZW1lbnRhbCBncm91cCBJRHMgZm9yIHRoZSBwcm9jZXNzLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0Z3JvdXBzCisKK1JldHVybiBsaXN0IG9mIHN1cHBsZW1lbnRhbCBncm91cCBJRHMgZm9yIHRoZSBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0Z3JvdXBzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3NfZ2V0Z3JvdXBzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZTdjNGZkMmRiNmQ1YzYwIGlucHV0PWQzZjEwOTQxMmU2YTE1NWNdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIApAQCAtNjM3Nyw3ICs2MjM1LDcgQEAKIAogICAgIHJldHVybiByZXN1bHQ7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0dFVEdST1VQUyAqLwogCiAjaWZkZWYgSEFWRV9JTklUR1JPVVBTCiBQeURvY19TVFJWQVIocG9zaXhfaW5pdGdyb3Vwc19fZG9jX18sCkBAIC02Mzg2LDYgKzYyNDQsNyBAQAogdGhlIGdyb3VwcyBvZiB3aGljaCB0aGUgc3BlY2lmaWVkIHVzZXJuYW1lIGlzIGEgbWVtYmVyLCBwbHVzIHRoZSBzcGVjaWZpZWRcblwKIGdyb3VwIGlkLiIpOwogCisvKiBBQyAzLjU6IGZ1bm55IGFwcGxlIGxvZ2ljICovCiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfaW5pdGdyb3VwcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC02NDE4LDIwICs2Mjc3LDIzIEBACiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9JTklUR1JPVVBTICovCisKIAogI2lmZGVmIEhBVkVfR0VUUEdJRAotUHlEb2NfU1RSVkFSKHBvc2l4X2dldHBnaWRfX2RvY19fLAotImdldHBnaWQocGlkKSAtPiBwZ2lkXG5cblwKLUNhbGwgdGhlIHN5c3RlbSBjYWxsIGdldHBnaWQoKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHBnaWQKKworICAgIHBpZDogcGlkX3QKKworQ2FsbCB0aGUgc3lzdGVtIGNhbGwgZ2V0cGdpZCgpLCBhbmQgcmV0dXJuIHRoZSByZXN1bHQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXRwZ2lkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2dldHBnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzBlNzEzYjRkNTRiN2M2MSBpbnB1dD0zOWQ3MTBhZTNiYWFmMWM3XSovCiB7Ci0gICAgcGlkX3QgcGlkLCBwZ2lkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICI6Z2V0cGdpZCIsICZwaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwZ2lkID0gZ2V0cGdpZChwaWQpOworICAgIHBpZF90IHBnaWQgPSBnZXRwZ2lkKHBpZCk7CiAgICAgaWYgKHBnaWQgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21QaWQocGdpZCk7CkBAIC02NDQwLDEyICs2MzAyLDE1IEBACiAKIAogI2lmZGVmIEhBVkVfR0VUUEdSUAotUHlEb2NfU1RSVkFSKHBvc2l4X2dldHBncnBfX2RvY19fLAotImdldHBncnAoKSAtPiBwZ3JwXG5cblwKLVJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzIGdyb3VwIGlkLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0cGdycAorCitSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcyBncm91cCBpZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldHBncnAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19nZXRwZ3JwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jZjM0MDM1ODU4NDY4MTFmIGlucHV0PTY4NDZmYjJiYjlhMzcwNWVdKi8KIHsKICNpZmRlZiBHRVRQR1JQX0hBVkVfQVJHCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tUGlkKGdldHBncnAoMCkpOwpAQCAtNjQ1NywxMiArNjMyMiwxNSBAQAogCiAKICNpZmRlZiBIQVZFX1NFVFBHUlAKLVB5RG9jX1NUUlZBUihwb3NpeF9zZXRwZ3JwX19kb2NfXywKLSJzZXRwZ3JwKClcblxuXAotTWFrZSB0aGlzIHByb2Nlc3MgdGhlIHByb2Nlc3MgZ3JvdXAgbGVhZGVyLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2V0cGdycAorCitNYWtlIHRoZSBjdXJyZW50IHByb2Nlc3MgdGhlIGxlYWRlciBvZiBpdHMgcHJvY2VzcyBncm91cC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldHBncnAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19zZXRwZ3JwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01OTY1MGY1NWE5NjNkN2FjIGlucHV0PTFmMDYxOWZjYjU3MzFlN2VdKi8KIHsKICNpZmRlZiBTRVRQR1JQX0hBVkVfQVJHCiAgICAgaWYgKHNldHBncnAoMCwgMCkgPCAwKQpAQCAtNjQ3Myw3ICs2MzQxLDYgQEAKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9Ci0KICNlbmRpZiAvKiBIQVZFX1NFVFBHUlAgKi8KIAogI2lmZGVmIEhBVkVfR0VUUFBJRApAQCAtNjUyMCwxNCArNjM4NywxOSBAQAogfQogI2VuZGlmIC8qTVNfV0lORE9XUyovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRwcGlkX19kb2NfXywKLSJnZXRwcGlkKCkgLT4gcHBpZFxuXG5cCi1SZXR1cm4gdGhlIHBhcmVudCdzIHByb2Nlc3MgaWQuICBJZiB0aGUgcGFyZW50IHByb2Nlc3MgaGFzIGFscmVhZHkgZXhpdGVkLFxuXAotV2luZG93cyBtYWNoaW5lcyB3aWxsIHN0aWxsIHJldHVybiBpdHMgaWQ7IG90aGVycyBzeXN0ZW1zIHdpbGwgcmV0dXJuIHRoZSBpZFxuXAotb2YgdGhlICdpbml0JyBwcm9jZXNzICgxKS4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0cHBpZAorCitSZXR1cm4gdGhlIHBhcmVudCdzIHByb2Nlc3MgaWQuCisKK0lmIHRoZSBwYXJlbnQgcHJvY2VzcyBoYXMgYWxyZWFkeSBleGl0ZWQsIFdpbmRvd3MgbWFjaGluZXMgd2lsbCBzdGlsbAorcmV0dXJuIGl0cyBpZDsgb3RoZXJzIHN5c3RlbXMgd2lsbCByZXR1cm4gdGhlIGlkIG9mIHRoZSAnaW5pdCcgcHJvY2VzcyAoMSkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXRwcGlkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3NfZ2V0cHBpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGU0OWM4ZTdhODczOGNkMiBpbnB1dD1lNjM3Y2I4NzUzOWMwMzBlXSovCiB7CiAjaWZkZWYgTVNfV0lORE9XUwogICAgIHJldHVybiB3aW4zMl9nZXRwcGlkKCk7CkBAIC02NTM5LDEyICs2NDExLDE1IEBACiAKIAogI2lmZGVmIEhBVkVfR0VUTE9HSU4KLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRsb2dpbl9fZG9jX18sCi0iZ2V0bG9naW4oKSAtPiBzdHJpbmdcblxuXAotUmV0dXJuIHRoZSBhY3R1YWwgbG9naW4gbmFtZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldGxvZ2luCisKK1JldHVybiB0aGUgYWN0dWFsIGxvZ2luIG5hbWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXRsb2dpbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2dldGxvZ2luX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMzdlYmRiM2U0YjVkYWMxIGlucHV0PTJhMjFhYjFlOTE3MTYzZGZdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICNpZmRlZiBNU19XSU5ET1dTCkBAIC02NTc3LDc3ICs2NDUyLDU0IEBACiB9CiAjZW5kaWYgLyogSEFWRV9HRVRMT0dJTiAqLwogCisKICNpZmRlZiBIQVZFX0dFVFVJRAotUHlEb2NfU1RSVkFSKHBvc2l4X2dldHVpZF9fZG9jX18sCi0iZ2V0dWlkKCkgLT4gdWlkXG5cblwKLVJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzJ3MgdXNlciBpZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHVpZAorCitSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcydzIHVzZXIgaWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXR1aWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19nZXR1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAzYThiODk0Y2VmYjNmYTUgaW5wdXQ9YjUzYzhiMzVmMTEwYTUxNl0qLwogewogICAgIHJldHVybiBfUHlMb25nX0Zyb21VaWQoZ2V0dWlkKCkpOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9HRVRVSUQgKi8KIAogCi0jaWZkZWYgSEFWRV9LSUxMCi1QeURvY19TVFJWQVIocG9zaXhfa2lsbF9fZG9jX18sCi0ia2lsbChwaWQsIHNpZylcblxuXAotS2lsbCBhIHByb2Nlc3Mgd2l0aCBhIHNpZ25hbC4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2tpbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIHBpZF90IHBpZDsKLSAgICBpbnQgc2lnOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICJpOmtpbGwiLCAmcGlkLCAmc2lnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGtpbGwocGlkLCBzaWcpID09IC0xKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIEhBVkVfS0lMTFBHCi1QeURvY19TVFJWQVIocG9zaXhfa2lsbHBnX19kb2NfXywKLSJraWxscGcocGdpZCwgc2lnKVxuXG5cCi1LaWxsIGEgcHJvY2VzcyBncm91cCB3aXRoIGEgc2lnbmFsLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfa2lsbHBnKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpbnQgc2lnOwotICAgIHBpZF90IHBnaWQ7Ci0gICAgLyogWFhYIHNvbWUgbWFuIHBhZ2VzIG1ha2UgdGhlIGBwZ2lkYCBwYXJhbWV0ZXIgYW4gaW50LCBvdGhlcnMKLSAgICAgICBhIHBpZF90LiBTaW5jZSBnZXRwZ3JwKCkgcmV0dXJucyBhIHBpZF90LCB3ZSBhc3N1bWUga2lsbHBnIHNob3VsZAotICAgICAgIHRha2UgdGhlIHNhbWUgdHlwZS4gTW9yZW92ZXIsIHBpZF90IGlzIGFsd2F5cyBhdCBsZWFzdCBhcyB3aWRlIGFzCi0gICAgICAgaW50IChlbHNlIGNvbXBpbGF0aW9uIG9mIHRoaXMgbW9kdWxlIGZhaWxzKSwgd2hpY2ggaXMgc2FmZS4gKi8KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiaTpraWxscGciLCAmcGdpZCwgJnNpZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChraWxscGcocGdpZCwgc2lnKSA9PSAtMSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotfQotI2VuZGlmCi0KICNpZmRlZiBNU19XSU5ET1dTCi1QeURvY19TVFJWQVIod2luMzJfa2lsbF9fZG9jX18sCi0ia2lsbChwaWQsIHNpZylcblxuXAotS2lsbCBhIHByb2Nlc3Mgd2l0aCBhIHNpZ25hbC4iKTsKKyNkZWZpbmUgSEFWRV9LSUxMCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworCisjaWZkZWYgSEFWRV9LSUxMCisvKltjbGluaWMgaW5wdXRdCitvcy5raWxsCisKKyAgICBwaWQ6IHBpZF90CisgICAgc2lnbmFsOiBQeV9zc2l6ZV90CisgICAgLworCitLaWxsIGEgcHJvY2VzcyB3aXRoIGEgc2lnbmFsLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luMzJfa2lsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19raWxsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkLCBQeV9zc2l6ZV90IHNpZ25hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NGY5MDdkZDAwYTgzYzI2IGlucHV0PTYxYTM2Yjg2Y2EyNzVhYjldKi8KKyNpZm5kZWYgTVNfV0lORE9XUworeworICAgIGlmIChraWxsKHBpZCwgKGludClzaWduYWwpID09IC0xKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbHNlIC8qICFNU19XSU5ET1dTICovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBwaWRfdCBwaWQ7Ci0gICAgRFdPUkQgc2lnLCBlcnI7CisgICAgRFdPUkQgc2lnID0gKERXT1JEKXNpZ25hbDsKKyAgICBEV09SRCBlcnI7CiAgICAgSEFORExFIGhhbmRsZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICJrOmtpbGwiLCAmcGlkLCAmc2lnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICAvKiBDb25zb2xlIHByb2Nlc3NlcyB3aGljaCBzaGFyZSBhIGNvbW1vbiBjb25zb2xlIGNhbiBiZSBzZW50IENUUkwrQyBvcgogICAgICAgIENUUkwrQlJFQUsgZXZlbnRzLCBwcm92aWRlZCB0aGV5IGhhbmRsZSBzYWlkIGV2ZW50cy4gKi8KICAgICBpZiAoc2lnID09IENUUkxfQ19FVkVOVCB8fCBzaWcgPT0gQ1RSTF9CUkVBS19FVkVOVCkgewpAQCAtNjY3OCwxMDMgKzY1MzAsMTM4IEBACiAgICAgQ2xvc2VIYW5kbGUoaGFuZGxlKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKyNlbmRpZiAvKiAhTVNfV0lORE9XUyAqLworI2VuZGlmIC8qIEhBVkVfS0lMTCAqLworCisKKyNpZmRlZiBIQVZFX0tJTExQRworLypbY2xpbmljIGlucHV0XQorb3Mua2lsbHBnCisKKyAgICBwZ2lkOiBwaWRfdAorICAgIHNpZ25hbDogaW50CisgICAgLworCitLaWxsIGEgcHJvY2VzcyBncm91cCB3aXRoIGEgc2lnbmFsLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfa2lsbHBnX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGdpZCwgaW50IHNpZ25hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNDM0YTc2NmVmOTQ1ZjkzIGlucHV0PTM4YjU0NDllYjhmYWVjMTldKi8KK3sKKyAgICAvKiBYWFggc29tZSBtYW4gcGFnZXMgbWFrZSB0aGUgYHBnaWRgIHBhcmFtZXRlciBhbiBpbnQsIG90aGVycworICAgICAgIGEgcGlkX3QuIFNpbmNlIGdldHBncnAoKSByZXR1cm5zIGEgcGlkX3QsIHdlIGFzc3VtZSBraWxscGcgc2hvdWxkCisgICAgICAgdGFrZSB0aGUgc2FtZSB0eXBlLiBNb3Jlb3ZlciwgcGlkX3QgaXMgYWx3YXlzIGF0IGxlYXN0IGFzIHdpZGUgYXMKKyAgICAgICBpbnQgKGVsc2UgY29tcGlsYXRpb24gb2YgdGhpcyBtb2R1bGUgZmFpbHMpLCB3aGljaCBpcyBzYWZlLiAqLworICAgIGlmIChraWxscGcocGdpZCwgc2lnbmFsKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYgLyogSEFWRV9LSUxMUEcgKi8KKwogCiAjaWZkZWYgSEFWRV9QTE9DSwotCiAjaWZkZWYgSEFWRV9TWVNfTE9DS19ICiAjaW5jbHVkZSA8c3lzL2xvY2suaD4KICNlbmRpZgogCi1QeURvY19TVFJWQVIocG9zaXhfcGxvY2tfX2RvY19fLAotInBsb2NrKG9wKVxuXG5cCisvKltjbGluaWMgaW5wdXRdCitvcy5wbG9jaworICAgIG9wOiBpbnQKKyAgICAvCisKIExvY2sgcHJvZ3JhbSBzZWdtZW50cyBpbnRvIG1lbW9yeS4iKTsKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3Bsb2NrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3Bsb2NrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG9wKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVjYjg1MWY4MWI5MTQ5ODQgaW5wdXQ9ZTZlNWUzNDhlMTUyNWY2MF0qLwogewotICAgIGludCBvcDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6cGxvY2siLCAmb3ApKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAocGxvY2sob3ApID09IC0xKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1BMT0NLICovCisKIAogI2lmZGVmIEhBVkVfU0VUVUlECi1QeURvY19TVFJWQVIocG9zaXhfc2V0dWlkX19kb2NfXywKLSJzZXR1aWQodWlkKVxuXG5cCi1TZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHVzZXIgaWQuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zZXR1aWQKKworICAgIHVpZDogdWlkX3QKKyAgICAvCisKK1NldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgdXNlciBpZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldHVpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zZXR1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCB1aWRfdCB1aWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTQxZWE5YThkMWU1ZDU2NSBpbnB1dD1jOTIxYTMyODVhYTIyMjU2XSovCiB7Ci0gICAgdWlkX3QgdWlkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6c2V0dWlkIiwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2V0dWlkKHVpZCkgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogSEFWRV9TRVRVSUQgKi8KIAogCiAjaWZkZWYgSEFWRV9TRVRFVUlECi1QeURvY19TVFJWQVIocG9zaXhfc2V0ZXVpZF9fZG9jX18sCi0ic2V0ZXVpZCh1aWQpXG5cblwKLVNldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZWZmZWN0aXZlIHVzZXIgaWQuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zZXRldWlkCisKKyAgICBldWlkOiB1aWRfdAorICAgIC8KKworU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyBlZmZlY3RpdmUgdXNlciBpZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldGV1aWQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NldGV1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCB1aWRfdCBldWlkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY2ZjRmNjgyM2E2NDhkNmQgaW5wdXQ9YmE5M2Q5MjdlNDc4MWFhOV0qLwogewotICAgIHVpZF90IGV1aWQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpzZXRldWlkIiwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNldGV1aWQoZXVpZCkgPCAwKSB7CisgICAgaWYgKHNldGV1aWQoZXVpZCkgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX1NFVEVVSUQgKi8KIAorCiAjaWZkZWYgSEFWRV9TRVRFR0lECi1QeURvY19TVFJWQVIocG9zaXhfc2V0ZWdpZF9fZG9jX18sCi0ic2V0ZWdpZChnaWQpXG5cblwKLVNldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZWZmZWN0aXZlIGdyb3VwIGlkLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2V0ZWdpZAorCisgICAgZWdpZDogZ2lkX3QKKyAgICAvCisKK1NldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZWZmZWN0aXZlIGdyb3VwIGlkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2V0ZWdpZCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc2V0ZWdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGdpZF90IGVnaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2EwOTRhNjlhMDgxYTYwZiBpbnB1dD00MDgwNTI2ZDBjY2Q2Y2UzXSovCiB7Ci0gICAgZ2lkX3QgZWdpZDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOnNldGVnaWQiLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2V0ZWdpZChlZ2lkKSA8IDApIHsKKyAgICBpZiAoc2V0ZWdpZChlZ2lkKSA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgfQorICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIEhBVkVfU0VURUdJRCAqLwogCisKICNpZmRlZiBIQVZFX1NFVFJFVUlECi1QeURvY19TVFJWQVIocG9zaXhfc2V0cmV1aWRfX2RvY19fLAotInNldHJldWlkKHJ1aWQsIGV1aWQpXG5cblwKLVNldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgcmVhbCBhbmQgZWZmZWN0aXZlIHVzZXIgaWRzLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2V0cmV1aWQKKworICAgIHJ1aWQ6IHVpZF90CisgICAgZXVpZDogdWlkX3QKKyAgICAvCisKK1NldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgcmVhbCBhbmQgZWZmZWN0aXZlIHVzZXIgaWRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2V0cmV1aWQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NldHJldWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgdWlkX3QgcnVpZCwgdWlkX3QgZXVpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMjkzOGMzZTczZDI3ZWM3IGlucHV0PTBjYTg5NzhkZTY2Mzg4MGNdKi8KIHsKLSAgICB1aWRfdCBydWlkLCBldWlkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJjpzZXRyZXVpZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmcnVpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNldHJldWlkKHJ1aWQsIGV1aWQpIDwgMCkgewogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICB9IGVsc2UgewpAQCAtNjc4NCw1MyArNjY3MSw2MiBAQAogfQogI2VuZGlmIC8qIEhBVkVfU0VUUkVVSUQgKi8KIAorCiAjaWZkZWYgSEFWRV9TRVRSRUdJRAotUHlEb2NfU1RSVkFSKHBvc2l4X3NldHJlZ2lkX19kb2NfXywKLSJzZXRyZWdpZChyZ2lkLCBlZ2lkKVxuXG5cCi1TZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHJlYWwgYW5kIGVmZmVjdGl2ZSBncm91cCBpZHMuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zZXRyZWdpZAorCisgICAgcmdpZDogZ2lkX3QKKyAgICBlZ2lkOiBnaWRfdAorICAgIC8KKworU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsIGFuZCBlZmZlY3RpdmUgZ3JvdXAgaWRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2V0cmVnaWQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NldHJlZ2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgZ2lkX3QgcmdpZCwgZ2lkX3QgZWdpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYjE4ZjE4MzlhYmFiZTNkIGlucHV0PWM1OTQ5OWY3Mjg0NmRiNzhdKi8KIHsKLSAgICBnaWRfdCByZ2lkLCBlZ2lkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJjpzZXRyZWdpZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmcmdpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNldHJlZ2lkKHJnaWQsIGVnaWQpIDwgMCkgeworICAgIGlmIChzZXRyZWdpZChyZ2lkLCBlZ2lkKSA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgfQorICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIEhBVkVfU0VUUkVHSUQgKi8KIAorCiAjaWZkZWYgSEFWRV9TRVRHSUQKLVB5RG9jX1NUUlZBUihwb3NpeF9zZXRnaWRfX2RvY19fLAotInNldGdpZChnaWQpXG5cblwKLVNldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZ3JvdXAgaWQuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zZXRnaWQKKyAgICBnaWQ6IGdpZF90CisgICAgLworCitTZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIGdyb3VwIGlkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2V0Z2lkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NldGdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGdpZF90IGdpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NTZjYjQyYzZhYmQ5ZDg3IGlucHV0PTI3ZDMwYzQwNTkwNDVkYzZdKi8KIHsKLSAgICBnaWRfdCBnaWQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpzZXRnaWQiLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzZXRnaWQoZ2lkKSA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX1NFVEdJRCAqLwogCisKICNpZmRlZiBIQVZFX1NFVEdST1VQUwotUHlEb2NfU1RSVkFSKHBvc2l4X3NldGdyb3Vwc19fZG9jX18sCi0ic2V0Z3JvdXBzKGxpc3QpXG5cblwKLVNldCB0aGUgZ3JvdXBzIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MgdG8gbGlzdC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldGdyb3VwcworCisgICAgZ3JvdXBzOiBvYmplY3QKKyAgICAvCisKK1NldCB0aGUgZ3JvdXBzIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MgdG8gbGlzdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldGdyb3VwcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmdyb3VwcykKK29zX3NldGdyb3VwcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZ3JvdXBzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc5NDVjMmUzY2M4MTdjNTggaW5wdXQ9ZmE3NDJjYTNkYWY4NWE3ZV0qLwogewogICAgIGludCBpLCBsZW47CiAgICAgZ2lkX3QgZ3JvdXBsaXN0W01BWF9HUk9VUFNdOwpAQCAtNjkzMSw4MyArNjgyNywxMTQgQEAKIH0KICNlbmRpZiAvKiBIQVZFX1dBSVQzIHx8IEhBVkVfV0FJVDQgKi8KIAorCiAjaWZkZWYgSEFWRV9XQUlUMwotUHlEb2NfU1RSVkFSKHBvc2l4X3dhaXQzX19kb2NfXywKLSJ3YWl0MyhvcHRpb25zKSAtPiAocGlkLCBzdGF0dXMsIHJ1c2FnZSlcblxuXAotV2FpdCBmb3IgY29tcGxldGlvbiBvZiBhIGNoaWxkIHByb2Nlc3MuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy53YWl0MworCisgICAgb3B0aW9uczogaW50CitXYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgY2hpbGQgcHJvY2Vzcy4KKworUmV0dXJucyBhIHR1cGxlIG9mIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjaGlsZCBwcm9jZXNzOgorICAocGlkLCBzdGF0dXMsIHJ1c2FnZSkKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3dhaXQzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3dhaXQzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG9wdGlvbnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTE4YWY0OTI0ZGM1NDk0NSBpbnB1dD04YWM0YzU2OTU2YjYxNzEwXSovCiB7CiAgICAgcGlkX3QgcGlkOwotICAgIGludCBvcHRpb25zOwogICAgIHN0cnVjdCBydXNhZ2UgcnU7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAgICAgV0FJVF9UWVBFIHN0YXR1czsKICAgICBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6d2FpdDMiLCAmb3B0aW9ucykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHBpZCA9IHdhaXQzKCZzdGF0dXMsIG9wdGlvbnMsICZydSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcGlkID0gd2FpdDMoJnN0YXR1cywgb3B0aW9ucywgJnJ1KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChwaWQgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBpZiAocGlkIDwgMCkKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IHBvc2l4X2Vycm9yKCkgOiBOVUxMOwogCiAgICAgcmV0dXJuIHdhaXRfaGVscGVyKHBpZCwgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cyksICZydSk7CiB9CiAjZW5kaWYgLyogSEFWRV9XQUlUMyAqLwogCisKICNpZmRlZiBIQVZFX1dBSVQ0Ci1QeURvY19TVFJWQVIocG9zaXhfd2FpdDRfX2RvY19fLAotIndhaXQ0KHBpZCwgb3B0aW9ucykgLT4gKHBpZCwgc3RhdHVzLCBydXNhZ2UpXG5cblwKLVdhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBnaXZlbiBjaGlsZCBwcm9jZXNzLiIpOworLypbY2xpbmljIGlucHV0XQorCitvcy53YWl0NAorCisgICAgcGlkOiBwaWRfdAorICAgIG9wdGlvbnM6IGludAorCitXYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgc3BlY2lmaWMgY2hpbGQgcHJvY2Vzcy4KKworUmV0dXJucyBhIHR1cGxlIG9mIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjaGlsZCBwcm9jZXNzOgorICAocGlkLCBzdGF0dXMsIHJ1c2FnZSkKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3dhaXQ0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3dhaXQ0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkLCBpbnQgb3B0aW9ucykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MTRmMTllNmZmMDFlMDk5IGlucHV0PWQxMWRlZWQwNzUwNjAwYmFdKi8KIHsKLSAgICBwaWRfdCBwaWQ7Ci0gICAgaW50IG9wdGlvbnM7CisgICAgcGlkX3QgcmVzOwogICAgIHN0cnVjdCBydXNhZ2UgcnU7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAgICAgV0FJVF9UWVBFIHN0YXR1czsKICAgICBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiaTp3YWl0NCIsICZwaWQsICZvcHRpb25zKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlcyA9IHdhaXQ0KHBpZCwgJnN0YXR1cywgb3B0aW9ucywgJnJ1KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXMgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IHBvc2l4X2Vycm9yKCkgOiBOVUxMOwogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHBpZCA9IHdhaXQ0KHBpZCwgJnN0YXR1cywgb3B0aW9ucywgJnJ1KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgcmV0dXJuIHdhaXRfaGVscGVyKHBpZCwgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cyksICZydSk7CisgICAgcmV0dXJuIHdhaXRfaGVscGVyKHJlcywgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cyksICZydSk7CiB9CiAjZW5kaWYgLyogSEFWRV9XQUlUNCAqLwogCisKICNpZiBkZWZpbmVkKEhBVkVfV0FJVElEKSAmJiAhZGVmaW5lZChfX0FQUExFX18pCi1QeURvY19TVFJWQVIocG9zaXhfd2FpdGlkX19kb2NfXywKLSJ3YWl0aWQoaWR0eXBlLCBpZCwgb3B0aW9ucykgLT4gd2FpdGlkX3Jlc3VsdFxuXG5cCi1XYWl0IGZvciB0aGUgY29tcGxldGlvbiBvZiBvbmUgb3IgbW9yZSBjaGlsZCBwcm9jZXNzZXMuXG5cblwKLWlkdHlwZSBjYW4gYmUgUF9QSUQsIFBfUEdJRCBvciBQX0FMTC5cblwKLWlkIHNwZWNpZmllcyB0aGUgcGlkIHRvIHdhaXQgb24uXG5cCi1vcHRpb25zIGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIE9SaW5nIG9mIG9uZSBvciBtb3JlIG9mIFdFWElURUQsIFdTVE9QUEVEXG5cCi1vciBXQ09OVElOVUVEIGFuZCBhZGRpdGlvbmFsbHkgbWF5IGJlIE9SZWQgd2l0aCBXTk9IQU5HIG9yIFdOT1dBSVQuXG5cCi1SZXR1cm5zIGVpdGhlciB3YWl0aWRfcmVzdWx0IG9yIE5vbmUgaWYgV05PSEFORyBpcyBzcGVjaWZpZWQgYW5kIHRoZXJlIGFyZVxuXAotbm8gY2hpbGRyZW4gaW4gYSB3YWl0YWJsZSBzdGF0ZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLndhaXRpZAorCisgICAgaWR0eXBlOiBpZHR5cGVfdAorICAgICAgICBNdXN0IGJlIG9uZSBvZiBiZSBQX1BJRCwgUF9QR0lEIG9yIFBfQUxMLgorICAgIGlkOiBpZF90CisgICAgICAgIFRoZSBpZCB0byB3YWl0IG9uLgorICAgIG9wdGlvbnM6IGludAorICAgICAgICBDb25zdHJ1Y3RlZCBmcm9tIHRoZSBPUmluZyBvZiBvbmUgb3IgbW9yZSBvZiBXRVhJVEVELCBXU1RPUFBFRAorICAgICAgICBvciBXQ09OVElOVUVEIGFuZCBhZGRpdGlvbmFsbHkgbWF5IGJlIE9SZWQgd2l0aCBXTk9IQU5HIG9yIFdOT1dBSVQuCisgICAgLworCitSZXR1cm5zIHRoZSByZXN1bHQgb2Ygd2FpdGluZyBmb3IgYSBwcm9jZXNzIG9yIHByb2Nlc3Nlcy4KKworUmV0dXJucyBlaXRoZXIgd2FpdGlkX3Jlc3VsdCBvciBOb25lIGlmIFdOT0hBTkcgaXMgc3BlY2lmaWVkIGFuZCB0aGVyZSBhcmUKK25vIGNoaWxkcmVuIGluIGEgd2FpdGFibGUgc3RhdGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF93YWl0aWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfd2FpdGlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaWR0eXBlX3QgaWR0eXBlLCBpZF90IGlkLCBpbnQgb3B0aW9ucykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01YzAxOTI3NTBlMjJmYTJlIGlucHV0PWQ4ZTdmNzZlMDUyYjc5MjBdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIGlkdHlwZV90IGlkdHlwZTsKLSAgICBpZF90IGlkOwotICAgIGludCBvcHRpb25zLCByZXM7CisgICAgaW50IHJlczsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKICAgICBzaWdpbmZvX3Qgc2k7CiAgICAgc2kuc2lfcGlkID0gMDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiIF9QeV9QQVJTRV9QSUQgImk6d2FpdGlkIiwgJmlkdHlwZSwgJmlkLCAmb3B0aW9ucykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSB3YWl0aWQoaWR0eXBlLCBpZCwgJnNpLCBvcHRpb25zKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPT0gLTEpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlcyA9IHdhaXRpZChpZHR5cGUsIGlkLCAmc2ksIG9wdGlvbnMpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlcyA8IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAKICAgICBpZiAoc2kuc2lfcGlkID09IDApCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtNzAyOCw3OSArNjk1NSwxMTEgQEAKIAogICAgIHJldHVybiByZXN1bHQ7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfV0FJVElEKSAmJiAhZGVmaW5lZChfX0FQUExFX18pICovCiAKLSNpZmRlZiBIQVZFX1dBSVRQSUQKLVB5RG9jX1NUUlZBUihwb3NpeF93YWl0cGlkX19kb2NfXywKLSJ3YWl0cGlkKHBpZCwgb3B0aW9ucykgLT4gKHBpZCwgc3RhdHVzKVxuXG5cCi1XYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgZ2l2ZW4gY2hpbGQgcHJvY2Vzcy4iKTsKKworI2lmIGRlZmluZWQoSEFWRV9XQUlUUElEKQorLypbY2xpbmljIGlucHV0XQorb3Mud2FpdHBpZAorICAgIHBpZDogcGlkX3QKKyAgICBvcHRpb25zOiBpbnQKKyAgICAvCisKK1dhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBnaXZlbiBjaGlsZCBwcm9jZXNzLgorCitSZXR1cm5zIGEgdHVwbGUgb2YgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSBjaGlsZCBwcm9jZXNzOgorICAgIChwaWQsIHN0YXR1cykKKworVGhlIG9wdGlvbnMgYXJndW1lbnQgaXMgaWdub3JlZCBvbiBXaW5kb3dzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfd2FpdHBpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc193YWl0cGlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkLCBpbnQgb3B0aW9ucykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ZTM1OTMzNTNkNTRiMTViIGlucHV0PTBiZjE2NjZiODc1OGZkYTNdKi8KIHsKLSAgICBwaWRfdCBwaWQ7Ci0gICAgaW50IG9wdGlvbnM7CisgICAgcGlkX3QgcmVzOworICAgIGludCBhc3luY19lcnIgPSAwOwogICAgIFdBSVRfVFlQRSBzdGF0dXM7CiAgICAgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgImk6d2FpdHBpZCIsICZwaWQsICZvcHRpb25zKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHBpZCA9IHdhaXRwaWQocGlkLCAmc3RhdHVzLCBvcHRpb25zKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChwaWQgPT0gLTEpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXMgPSB3YWl0cGlkKHBpZCwgJnN0YXR1cywgb3B0aW9ucyk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmVzIDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKIAotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOaSIsIFB5TG9uZ19Gcm9tUGlkKHBpZCksIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpKTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmkiLCBQeUxvbmdfRnJvbVBpZChyZXMpLCBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSk7CiB9Ci0KICNlbGlmIGRlZmluZWQoSEFWRV9DV0FJVCkKLQogLyogTVMgQyBoYXMgYSB2YXJpYW50IG9mIHdhaXRwaWQoKSB0aGF0J3MgdXNhYmxlIGZvciBtb3N0IHB1cnBvc2VzLiAqLwotUHlEb2NfU1RSVkFSKHBvc2l4X3dhaXRwaWRfX2RvY19fLAotIndhaXRwaWQocGlkLCBvcHRpb25zKSAtPiAocGlkLCBzdGF0dXMgPDwgOClcblxuIgotIldhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBnaXZlbiBwcm9jZXNzLiAgb3B0aW9ucyBpcyBpZ25vcmVkIG9uIFdpbmRvd3MuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy53YWl0cGlkCisgICAgcGlkOiBQeV9pbnRwdHJfdAorICAgIG9wdGlvbnM6IGludAorICAgIC8KKworV2FpdCBmb3IgY29tcGxldGlvbiBvZiBhIGdpdmVuIHByb2Nlc3MuCisKK1JldHVybnMgYSB0dXBsZSBvZiBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIHByb2Nlc3M6CisgICAgKHBpZCwgc3RhdHVzIDw8IDgpCisKK1RoZSBvcHRpb25zIGFyZ3VtZW50IGlzIGlnbm9yZWQgb24gV2luZG93cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3dhaXRwaWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfd2FpdHBpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2ludHB0cl90IHBpZCwgaW50IG9wdGlvbnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmMxZDUyMGRiMDE5NjI1ZiBpbnB1dD00NDRjOGY1MWNjYTViODYyXSovCiB7Ci0gICAgUHlfaW50cHRyX3QgcGlkOwotICAgIGludCBzdGF0dXMsIG9wdGlvbnM7CisgICAgaW50IHN0YXR1czsKKyAgICBQeV9pbnRwdHJfdCByZXM7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX0lOVFBUUiAiaTp3YWl0cGlkIiwgJnBpZCwgJm9wdGlvbnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcGlkID0gX2N3YWl0KCZzdGF0dXMsIHBpZCwgb3B0aW9ucyk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocGlkID09IC0xKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmVzID0gX2N3YWl0KCZzdGF0dXMsIHBpZCwgb3B0aW9ucyk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmVzIDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKIAogICAgIC8qIHNoaWZ0IHRoZSBzdGF0dXMgbGVmdCBhIGJ5dGUgc28gdGhpcyBpcyBtb3JlIGxpa2UgdGhlIFBPU0lYIHdhaXRwaWQgKi8KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShfUHlfUEFSU0VfSU5UUFRSICJpIiwgcGlkLCBzdGF0dXMgPDwgOCk7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoX1B5X1BBUlNFX0lOVFBUUiAiaSIsIHJlcywgc3RhdHVzIDw8IDgpOwogfQotI2VuZGlmIC8qIEhBVkVfV0FJVFBJRCB8fCBIQVZFX0NXQUlUICovCisjZW5kaWYKKwogCiAjaWZkZWYgSEFWRV9XQUlUCi1QeURvY19TVFJWQVIocG9zaXhfd2FpdF9fZG9jX18sCi0id2FpdCgpIC0+IChwaWQsIHN0YXR1cylcblxuXAotV2FpdCBmb3IgY29tcGxldGlvbiBvZiBhIGNoaWxkIHByb2Nlc3MuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy53YWl0CisKK1dhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBjaGlsZCBwcm9jZXNzLgorCitSZXR1cm5zIGEgdHVwbGUgb2YgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNoaWxkIHByb2Nlc3M6CisgICAgKHBpZCwgc3RhdHVzKQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfd2FpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX3dhaXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRhN2Y0OTc4MzkzZTA2NTQgaW5wdXQ9MDNiMDE4MmQ0YTQ3MDBjZV0qLwogewogICAgIHBpZF90IHBpZDsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKICAgICBXQUlUX1RZUEUgc3RhdHVzOwogICAgIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpID0gMDsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBwaWQgPSB3YWl0KCZzdGF0dXMpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHBpZCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHBpZCA9IHdhaXQoJnN0YXR1cyk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocGlkIDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHBpZCA8IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKIAogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOaSIsIFB5TG9uZ19Gcm9tUGlkKHBpZCksIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfV0FJVCAqLwogCiAKICNpZiBkZWZpbmVkKEhBVkVfUkVBRExJTkspIHx8IGRlZmluZWQoTVNfV0lORE9XUykKQEAgLTcxMTYsNiArNzA3NSw3IEBACiAKICNpZmRlZiBIQVZFX1JFQURMSU5LCiAKKy8qIEFDIDMuNTogbWVyZ2Ugd2luMzIgYW5kIG5vdCB0b2dldGhlciAqLwogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X3JlYWRsaW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKQEAgLTcxMzAsMTIgKzcwOTAsNyBAQAogICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJyZWFkbGluayI7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnJlYWRsaW5rIiwga2V5d29yZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSNpZmRlZiBIQVZFX1JFQURMSU5LQVQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUkVBRExJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC03MTYxLDIzICs3MTE2LDg2IEBACiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotCiAjZW5kaWYgLyogSEFWRV9SRUFETElOSyAqLwogCisjaWYgIWRlZmluZWQoSEFWRV9SRUFETElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKQorCitzdGF0aWMgUHlPYmplY3QgKgord2luX3JlYWRsaW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICB3Y2hhcl90ICpwYXRoOworICAgIERXT1JEIG5fYnl0ZXNfcmV0dXJuZWQ7CisgICAgRFdPUkQgaW9fcmVzdWx0OworICAgIFB5T2JqZWN0ICpwbywgKnJlc3VsdDsKKyAgICAgICAgaW50IGRpcl9mZDsKKyAgICBIQU5ETEUgcmVwYXJzZV9wb2ludF9oYW5kbGU7CisKKyAgICBjaGFyIHRhcmdldF9idWZmZXJbTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkVdOworICAgIFJFUEFSU0VfREFUQV9CVUZGRVIgKnJkYiA9IChSRVBBUlNFX0RBVEFfQlVGRkVSICopdGFyZ2V0X2J1ZmZlcjsKKyAgICB3Y2hhcl90ICpwcmludF9uYW1lOworCisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJVfCRPJjpyZWFkbGluayIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmcG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorICAgICAgICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBvKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIEZpcnN0IGdldCBhIGhhbmRsZSB0byB0aGUgcmVwYXJzZSBwb2ludCAqLworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXBhcnNlX3BvaW50X2hhbmRsZSA9IENyZWF0ZUZpbGVXKAorICAgICAgICBwYXRoLAorICAgICAgICAwLAorICAgICAgICAwLAorICAgICAgICAwLAorICAgICAgICBPUEVOX0VYSVNUSU5HLAorICAgICAgICBGSUxFX0ZMQUdfT1BFTl9SRVBBUlNFX1BPSU5UfEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTLAorICAgICAgICAwKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlcGFyc2VfcG9pbnRfaGFuZGxlPT1JTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgicmVhZGxpbmsiLCBwbyk7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgLyogTmV3IGNhbGwgRGV2aWNlSW9Db250cm9sIHRvIHJlYWQgdGhlIHJlcGFyc2UgcG9pbnQgKi8KKyAgICBpb19yZXN1bHQgPSBEZXZpY2VJb0NvbnRyb2woCisgICAgICAgIHJlcGFyc2VfcG9pbnRfaGFuZGxlLAorICAgICAgICBGU0NUTF9HRVRfUkVQQVJTRV9QT0lOVCwKKyAgICAgICAgMCwgMCwgLyogaW4gYnVmZmVyICovCisgICAgICAgIHRhcmdldF9idWZmZXIsIHNpemVvZih0YXJnZXRfYnVmZmVyKSwKKyAgICAgICAgJm5fYnl0ZXNfcmV0dXJuZWQsCisgICAgICAgIDAgLyogd2UncmUgbm90IHVzaW5nIE9WRVJMQVBQRURfSU8gKi8KKyAgICAgICAgKTsKKyAgICBDbG9zZUhhbmRsZShyZXBhcnNlX3BvaW50X2hhbmRsZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChpb19yZXN1bHQ9PTApCisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoInJlYWRsaW5rIiwgcG8pOworCisgICAgaWYgKHJkYi0+UmVwYXJzZVRhZyAhPSBJT19SRVBBUlNFX1RBR19TWU1MSU5LKQorICAgIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm5vdCBhIHN5bWJvbGljIGxpbmsiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHByaW50X25hbWUgPSByZGItPlN5bWJvbGljTGlua1JlcGFyc2VCdWZmZXIuUGF0aEJ1ZmZlciArCisgICAgICAgICAgICAgICAgIHJkYi0+U3ltYm9saWNMaW5rUmVwYXJzZUJ1ZmZlci5QcmludE5hbWVPZmZzZXQ7CisKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHByaW50X25hbWUsCisgICAgICAgICAgICAgICAgICAgIHJkYi0+U3ltYm9saWNMaW5rUmVwYXJzZUJ1ZmZlci5QcmludE5hbWVMZW5ndGgvMik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlmIC8qICFkZWZpbmVkKEhBVkVfUkVBRExJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworCiAKICNpZmRlZiBIQVZFX1NZTUxJTksKLVB5RG9jX1NUUlZBUihwb3NpeF9zeW1saW5rX19kb2NfXywKLSJzeW1saW5rKHNyYywgZHN0LCB0YXJnZXRfaXNfZGlyZWN0b3J5PUZhbHNlLCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAotQ3JlYXRlIGEgc3ltYm9saWMgbGluayBwb2ludGluZyB0byBzcmMgbmFtZWQgZHN0LlxuXG5cCi10YXJnZXRfaXNfZGlyZWN0b3J5IGlzIHJlcXVpcmVkIG9uIFdpbmRvd3MgaWYgdGhlIHRhcmdldCBpcyB0byBiZVxuXAotICBpbnRlcnByZXRlZCBhcyBhIGRpcmVjdG9yeS4gIChPbiBXaW5kb3dzLCBzeW1saW5rIHJlcXVpcmVzXG5cCi0gIFdpbmRvd3MgNi4wIG9yIGdyZWF0ZXIsIGFuZCByYWlzZXMgYSBOb3RJbXBsZW1lbnRlZEVycm9yIG90aGVyd2lzZS4pXG5cCi0gIHRhcmdldF9pc19kaXJlY3RvcnkgaXMgaWdub3JlZCBvbiBub24tV2luZG93cyBwbGF0Zm9ybXMuXG5cCi1cblwKLUlmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCi0gIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1kaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAKQEAgLTczMjMsMTg5ICs3MzQxLDEwMiBAQAogICAgICAgICAmJiBzcmNfaW5mby5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZCiAgICAgKTsKIH0KLQogI2VuZGlmCiAKKworLypbY2xpbmljIGlucHV0XQorb3Muc3ltbGluaworICAgIHNyYzogcGF0aF90CisgICAgZHN0OiBwYXRoX3QKKyAgICB0YXJnZXRfaXNfZGlyZWN0b3J5OiBib29sID0gRmFsc2UKKyAgICAqCisgICAgZGlyX2ZkOiBkaXJfZmQocmVxdWlyZXM9J3N5bWxpbmthdCcpPU5vbmUKKworIyAic3ltbGluayhzcmMsIGRzdCwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1GYWxzZSwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKKworQ3JlYXRlIGEgc3ltYm9saWMgbGluayBwb2ludGluZyB0byBzcmMgbmFtZWQgZHN0LgorCit0YXJnZXRfaXNfZGlyZWN0b3J5IGlzIHJlcXVpcmVkIG9uIFdpbmRvd3MgaWYgdGhlIHRhcmdldCBpcyB0byBiZQorICBpbnRlcnByZXRlZCBhcyBhIGRpcmVjdG9yeS4gIChPbiBXaW5kb3dzLCBzeW1saW5rIHJlcXVpcmVzCisgIFdpbmRvd3MgNi4wIG9yIGdyZWF0ZXIsIGFuZCByYWlzZXMgYSBOb3RJbXBsZW1lbnRlZEVycm9yIG90aGVyd2lzZS4pCisgIHRhcmdldF9pc19kaXJlY3RvcnkgaXMgaWdub3JlZCBvbiBub24tV2luZG93cyBwbGF0Zm9ybXMuCisKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLgorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3N5bWxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc3ltbGlua19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwKKyAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X2lzX2RpcmVjdG9yeSwgaW50IGRpcl9mZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMDFiNGJjZjMyNDAzY2NkIGlucHV0PWU4MjBlYzQ0NzI1NDdiYzNdKi8KIHsKLSAgICBwYXRoX3Qgc3JjOwotICAgIHBhdGhfdCBkc3Q7Ci0gICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwotICAgIGludCB0YXJnZXRfaXNfZGlyZWN0b3J5ID0gMDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJ0YXJnZXRfaXNfZGlyZWN0b3J5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyX2ZkIiwgTlVMTH07Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZTsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgRFdPUkQgcmVzdWx0OwogI2Vsc2UKICAgICBpbnQgcmVzdWx0OwogI2VuZGlmCiAKLSAgICBtZW1zZXQoJnNyYywgMCwgc2l6ZW9mKHNyYykpOwotICAgIHNyYy5mdW5jdGlvbl9uYW1lID0gInN5bWxpbmsiOwotICAgIHNyYy5hcmd1bWVudF9uYW1lID0gInNyYyI7Ci0gICAgbWVtc2V0KCZkc3QsIDAsIHNpemVvZihkc3QpKTsKLSAgICBkc3QuZnVuY3Rpb25fbmFtZSA9ICJzeW1saW5rIjsKLSAgICBkc3QuYXJndW1lbnRfbmFtZSA9ICJkc3QiOwotCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmICghY2hlY2tfQ3JlYXRlU3ltYm9saWNMaW5rKCkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCiAgICAgICAgICAgICAiQ3JlYXRlU3ltYm9saWNMaW5rIGZ1bmN0aW9ucyBub3QgZm91bmQiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICBpZiAoIXdpbjMyX2Nhbl9zeW1saW5rKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAic3ltYm9saWMgbGluayBwcml2aWxlZ2Ugbm90IGhlbGQiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnxpJE8mOnN5bWxpbmsiLAotICAgICAgICAgICAga2V5d29yZHMsCi0gICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywKLSAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmZHN0LAotICAgICAgICAgICAgJnRhcmdldF9pc19kaXJlY3RvcnksCi0jaWZkZWYgSEFWRV9TWU1MSU5LQVQKLSAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKLSNlbHNlCi0gICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKLSNlbmRpZgotICAgICAgICAgICAgKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoKHNyYy5uYXJyb3cgJiYgZHN0LndpZGUpIHx8IChzcmMud2lkZSAmJiBkc3QubmFycm93KSkgeworICAgIGlmICgoc3JjLT5uYXJyb3cgJiYgZHN0LT53aWRlKSB8fCAoc3JjLT53aWRlICYmIGRzdC0+bmFycm93KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICJzeW1saW5rOiBzcmMgYW5kIGRzdCBtdXN0IGJlIHRoZSBzYW1lIHR5cGUiKTsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICNpZmRlZiBNU19XSU5ET1dTCiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKGRzdC53aWRlKSB7CisgICAgaWYgKGRzdC0+d2lkZSkgewogICAgICAgICAvKiBpZiBzcmMgaXMgYSBkaXJlY3RvcnksIGVuc3VyZSB0YXJnZXRfaXNfZGlyZWN0b3J5PT0xICovCi0gICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkgfD0gX2NoZWNrX2Rpclcoc3JjLndpZGUsIGRzdC53aWRlKTsKLSAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyhkc3Qud2lkZSwgc3JjLndpZGUsCisgICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkgfD0gX2NoZWNrX2Rpclcoc3JjLT53aWRlLCBkc3QtPndpZGUpOworICAgICAgICByZXN1bHQgPSBQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKGRzdC0+d2lkZSwgc3JjLT53aWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogaWYgc3JjIGlzIGEgZGlyZWN0b3J5LCBlbnN1cmUgdGFyZ2V0X2lzX2RpcmVjdG9yeT09MSAqLwotICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5IHw9IF9jaGVja19kaXJBKHNyYy5uYXJyb3csIGRzdC5uYXJyb3cpOwotICAgICAgICByZXN1bHQgPSBQeV9DcmVhdGVTeW1ib2xpY0xpbmtBKGRzdC5uYXJyb3csIHNyYy5uYXJyb3csCisgICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkgfD0gX2NoZWNrX2RpckEoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rQShkc3QtPm5hcnJvdywgc3JjLT5uYXJyb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7CiAgICAgfQogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yMigmc3JjLCAmZHN0KTsKLSAgICAgICAgZ290byBleGl0OwotICAgIH0KKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IyKHNyYywgZHN0KTsKIAogI2Vsc2UKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZiBIQVZFX1NZTUxJTktBVAogICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCi0gICAgICAgIHJlc3VsdCA9IHN5bWxpbmthdChzcmMubmFycm93LCBkaXJfZmQsIGRzdC5uYXJyb3cpOworICAgICAgICByZXN1bHQgPSBzeW1saW5rYXQoc3JjLT5uYXJyb3csIGRpcl9mZCwgZHN0LT5uYXJyb3cpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSBzeW1saW5rKHNyYy5uYXJyb3csIGRzdC5uYXJyb3cpOworICAgICAgICByZXN1bHQgPSBzeW1saW5rKHNyYy0+bmFycm93LCBkc3QtPm5hcnJvdyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcjIoJnNyYywgJmRzdCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IyKHNyYywgZHN0KTsKICNlbmRpZgogCi0gICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgZ290byBleGl0OyAvKiBzaWxlbmNlICJ1bnVzZWQgbGFiZWwiIHdhcm5pbmcgKi8KLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZzcmMpOwotICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOwogfQotCiAjZW5kaWYgLyogSEFWRV9TWU1MSU5LICovCiAKIAotI2lmICFkZWZpbmVkKEhBVkVfUkVBRExJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykKLQotc3RhdGljIFB5T2JqZWN0ICoKLXdpbl9yZWFkbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCi17Ci0gICAgd2NoYXJfdCAqcGF0aDsKLSAgICBEV09SRCBuX2J5dGVzX3JldHVybmVkOwotICAgIERXT1JEIGlvX3Jlc3VsdDsKLSAgICBQeU9iamVjdCAqcG8sICpyZXN1bHQ7Ci0gICAgICAgIGludCBkaXJfZmQ7Ci0gICAgSEFORExFIHJlcGFyc2VfcG9pbnRfaGFuZGxlOwotCi0gICAgY2hhciB0YXJnZXRfYnVmZmVyW01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKLSAgICBSRVBBUlNFX0RBVEFfQlVGRkVSICpyZGIgPSAoUkVQQVJTRV9EQVRBX0JVRkZFUiAqKXRhcmdldF9idWZmZXI7Ci0gICAgd2NoYXJfdCAqcHJpbnRfbmFtZTsKLQotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiVXwkTyY6cmVhZGxpbmsiLCBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBvLAotICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwbyk7Ci0gICAgaWYgKHBhdGggPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiBGaXJzdCBnZXQgYSBoYW5kbGUgdG8gdGhlIHJlcGFyc2UgcG9pbnQgKi8KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVwYXJzZV9wb2ludF9oYW5kbGUgPSBDcmVhdGVGaWxlVygKLSAgICAgICAgcGF0aCwKLSAgICAgICAgMCwKLSAgICAgICAgMCwKLSAgICAgICAgMCwKLSAgICAgICAgT1BFTl9FWElTVElORywKLSAgICAgICAgRklMRV9GTEFHX09QRU5fUkVQQVJTRV9QT0lOVHxGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywKLSAgICAgICAgMCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmIChyZXBhcnNlX3BvaW50X2hhbmRsZT09SU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoInJlYWRsaW5rIiwgcG8pOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIC8qIE5ldyBjYWxsIERldmljZUlvQ29udHJvbCB0byByZWFkIHRoZSByZXBhcnNlIHBvaW50ICovCi0gICAgaW9fcmVzdWx0ID0gRGV2aWNlSW9Db250cm9sKAotICAgICAgICByZXBhcnNlX3BvaW50X2hhbmRsZSwKLSAgICAgICAgRlNDVExfR0VUX1JFUEFSU0VfUE9JTlQsCi0gICAgICAgIDAsIDAsIC8qIGluIGJ1ZmZlciAqLwotICAgICAgICB0YXJnZXRfYnVmZmVyLCBzaXplb2YodGFyZ2V0X2J1ZmZlciksCi0gICAgICAgICZuX2J5dGVzX3JldHVybmVkLAotICAgICAgICAwIC8qIHdlJ3JlIG5vdCB1c2luZyBPVkVSTEFQUEVEX0lPICovCi0gICAgICAgICk7Ci0gICAgQ2xvc2VIYW5kbGUocmVwYXJzZV9wb2ludF9oYW5kbGUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAoaW9fcmVzdWx0PT0wKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJyZWFkbGluayIsIHBvKTsKLQotICAgIGlmIChyZGItPlJlcGFyc2VUYWcgIT0gSU9fUkVQQVJTRV9UQUdfU1lNTElOSykKLSAgICB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICJub3QgYSBzeW1ib2xpYyBsaW5rIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBwcmludF9uYW1lID0gcmRiLT5TeW1ib2xpY0xpbmtSZXBhcnNlQnVmZmVyLlBhdGhCdWZmZXIgKwotICAgICAgICAgICAgICAgICByZGItPlN5bWJvbGljTGlua1JlcGFyc2VCdWZmZXIuUHJpbnROYW1lT2Zmc2V0OwotCi0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihwcmludF9uYW1lLAotICAgICAgICAgICAgICAgICAgICByZGItPlN5bWJvbGljTGlua1JlcGFyc2VCdWZmZXIuUHJpbnROYW1lTGVuZ3RoLzIpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLSNlbmRpZiAvKiAhZGVmaW5lZChIQVZFX1JFQURMSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCiAKIAogc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgdGltZXNfcmVzdWx0X2ZpZWxkc1tdID0gewpAQCAtNzU3MSwxNSArNzUwMiwyNiBAQAogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3RpbWVzX19kb2NfXywKLSJ0aW1lcygpIC0+IHRpbWVzX3Jlc3VsdFxuXG5cCi1SZXR1cm4gYW4gb2JqZWN0IGNvbnRhaW5pbmcgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBpbmRpY2F0aW5nIHByb2Nlc3NcblwKLXRpbWVzLiAgVGhlIG9iamVjdCBiZWhhdmVzIGxpa2UgYSBuYW1lZCB0dXBsZSB3aXRoIHRoZXNlIGZpZWxkczpcblwKLSAgKHV0aW1lLCBzdGltZSwgY3V0aW1lLCBjc3RpbWUsIGVsYXBzZWRfdGltZSkiKTsKIAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyNpZm5kZWYgTVNfV0lORE9XUworI2RlZmluZSBORUVEX1RJQ0tTX1BFUl9TRUNPTkQKK3N0YXRpYyBsb25nIHRpY2tzX3Blcl9zZWNvbmQgPSAtMTsKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnRpbWVzCisKK1JldHVybiBhIGNvbGxlY3Rpb24gY29udGFpbmluZyBwcm9jZXNzIHRpbWluZyBpbmZvcm1hdGlvbi4KKworVGhlIG9iamVjdCByZXR1cm5lZCBiZWhhdmVzIGxpa2UgYSBuYW1lZCB0dXBsZSB3aXRoIHRoZXNlIGZpZWxkczoKKyAgKHV0aW1lLCBzdGltZSwgY3V0aW1lLCBjc3RpbWUsIGVsYXBzZWRfdGltZSkKK0FsbCBmaWVsZHMgYXJlIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF90aW1lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX3RpbWVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kZjBhNjNlYmU2ZTZmMDkxIGlucHV0PTJiZjlkZjNkNmFiMmU0OGJdKi8KKyNpZmRlZiBNU19XSU5ET1dTCiB7CiAgICAgRklMRVRJTUUgY3JlYXRlLCBleGl0LCBrZXJuZWwsIHVzZXI7CiAgICAgSEFORExFIGhQcm9jOwpAQCAtNzU5OSwxMiArNzU0MSwxMCBAQAogICAgICAgICAoZG91YmxlKTAsCiAgICAgICAgIChkb3VibGUpMCk7CiB9Ci0jZWxzZSAvKiBOb3QgV2luZG93cyAqLwotI2RlZmluZSBORUVEX1RJQ0tTX1BFUl9TRUNPTkQKLXN0YXRpYyBsb25nIHRpY2tzX3Blcl9zZWNvbmQgPSAtMTsKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF90aW1lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKKyNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KIHsKKworCiAgICAgc3RydWN0IHRtcyB0OwogICAgIGNsb2NrX3QgYzsKICAgICBlcnJubyA9IDA7CkBAIC03NjE4LDIzICs3NTU4LDI1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl0LnRtc19jc3RpbWUgLyB0aWNrc19wZXJfc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpYyAvIHRpY2tzX3Blcl9zZWNvbmQpOwogfQotI2VuZGlmCi0KKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAjZW5kaWYgLyogSEFWRV9USU1FUyAqLwogCiAKICNpZmRlZiBIQVZFX0dFVFNJRAotUHlEb2NfU1RSVkFSKHBvc2l4X2dldHNpZF9fZG9jX18sCi0iZ2V0c2lkKHBpZCkgLT4gc2lkXG5cblwKLUNhbGwgdGhlIHN5c3RlbSBjYWxsIGdldHNpZCgpLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0c2lkCisKKyAgICBwaWQ6IHBpZF90CisgICAgLworCitDYWxsIHRoZSBzeXN0ZW0gY2FsbCBnZXRzaWQocGlkKSBhbmQgcmV0dXJuIHRoZSByZXN1bHQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXRzaWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfZ2V0c2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWEwNzRmODBjMGU2YmZiMzggaW5wdXQ9ZWViMmI5MjNhMzBjZTA0ZV0qLwogewotICAgIHBpZF90IHBpZDsKICAgICBpbnQgc2lkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICI6Z2V0c2lkIiwgJnBpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHNpZCA9IGdldHNpZChwaWQpOwogICAgIGlmIChzaWQgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKQEAgLTc2NDQsNTMgKzc1ODYsNjAgQEAKIAogCiAjaWZkZWYgSEFWRV9TRVRTSUQKLVB5RG9jX1NUUlZBUihwb3NpeF9zZXRzaWRfX2RvY19fLAotInNldHNpZCgpXG5cblwKLUNhbGwgdGhlIHN5c3RlbSBjYWxsIHNldHNpZCgpLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2V0c2lkCisKK0NhbGwgdGhlIHN5c3RlbSBjYWxsIHNldHNpZCgpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2V0c2lkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3Nfc2V0c2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zOThmYzE1MmFlMzI3MzMwIGlucHV0PTVmZmY0NTg1OGUyZjA3NzZdKi8KIHsKICAgICBpZiAoc2V0c2lkKCkgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogSEFWRV9TRVRTSUQgKi8KIAorCiAjaWZkZWYgSEFWRV9TRVRQR0lECi1QeURvY19TVFJWQVIocG9zaXhfc2V0cGdpZF9fZG9jX18sCi0ic2V0cGdpZChwaWQsIHBncnApXG5cblwKLUNhbGwgdGhlIHN5c3RlbSBjYWxsIHNldHBnaWQoKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldHBnaWQKKworICAgIHBpZDogcGlkX3QKKyAgICBwZ3JwOiBwaWRfdAorICAgIC8KKworQ2FsbCB0aGUgc3lzdGVtIGNhbGwgc2V0cGdpZChwaWQsIHBncnApLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2V0cGdpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zZXRwZ2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkLCBwaWRfdCBwZ3JwKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTcwNzlhOGU5MzI5MTI4NDEgaW5wdXQ9ZmNlYjM5NWVjYTU3MmUxYV0qLwogewotICAgIHBpZF90IHBpZDsKLSAgICBpbnQgcGdycDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiaTpzZXRwZ2lkIiwgJnBpZCwgJnBncnApKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2V0cGdpZChwaWQsIHBncnApIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIEhBVkVfU0VUUEdJRCAqLwogCiAKICNpZmRlZiBIQVZFX1RDR0VUUEdSUAotUHlEb2NfU1RSVkFSKHBvc2l4X3RjZ2V0cGdycF9fZG9jX18sCi0idGNnZXRwZ3JwKGZkKSAtPiBwZ2lkXG5cblwKLVJldHVybiB0aGUgcHJvY2VzcyBncm91cCBhc3NvY2lhdGVkIHdpdGggdGhlIHRlcm1pbmFsIGdpdmVuIGJ5IGEgZmQuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy50Y2dldHBncnAKKworICAgIGZkOiBpbnQKKyAgICAvCisKK1JldHVybiB0aGUgcHJvY2VzcyBncm91cCBhc3NvY2lhdGVkIHdpdGggdGhlIHRlcm1pbmFsIHNwZWNpZmllZCBieSBmZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3RjZ2V0cGdycChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc190Y2dldHBncnBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWJiNmRjNWYxMTFjN2RjMCBpbnB1dD03ZjZjMThlYWMxMGFkYTg2XSovCiB7Ci0gICAgaW50IGZkOwotICAgIHBpZF90IHBnaWQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnRjZ2V0cGdycCIsICZmZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBnaWQgPSB0Y2dldHBncnAoZmQpOworICAgIHBpZF90IHBnaWQgPSB0Y2dldHBncnAoZmQpOwogICAgIGlmIChwZ2lkIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tUGlkKHBnaWQpOwpAQCAtNzY5OSwyMSArNzY0OCwyMyBAQAogCiAKICNpZmRlZiBIQVZFX1RDU0VUUEdSUAotUHlEb2NfU1RSVkFSKHBvc2l4X3Rjc2V0cGdycF9fZG9jX18sCi0idGNzZXRwZ3JwKGZkLCBwZ2lkKVxuXG5cCi1TZXQgdGhlIHByb2Nlc3MgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXJtaW5hbCBnaXZlbiBieSBhIGZkLiIpOworLypbY2xpbmljIGlucHV0XQorb3MudGNzZXRwZ3JwCisKKyAgICBmZDogaW50CisgICAgcGdpZDogcGlkX3QKKyAgICAvCisKK1NldCB0aGUgcHJvY2VzcyBncm91cCBhc3NvY2lhdGVkIHdpdGggdGhlIHRlcm1pbmFsIHNwZWNpZmllZCBieSBmZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3Rjc2V0cGdycChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc190Y3NldHBncnBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIHBpZF90IHBnaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2U0YjA1MTc3NDYyY2QyMiBpbnB1dD01YmRjOTk3YzZhNjE5MDIwXSovCiB7Ci0gICAgaW50IGZkOwotICAgIHBpZF90IHBnaWQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiBfUHlfUEFSU0VfUElEICI6dGNzZXRwZ3JwIiwgJmZkLCAmcGdpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICh0Y3NldHBncnAoZmQsIHBnaWQpIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIEhBVkVfVENTRVRQR1JQICovCiAKQEAgLTc3MjMsMTU4ICs3Njc0LDE2NiBAQAogZXh0ZXJuIGludCBfUHlfb3Blbl9jbG9leGVjX3dvcmtzOwogI2VuZGlmCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9vcGVuX19kb2NfXywKLSJvcGVuKHBhdGgsIGZsYWdzLCBtb2RlPTBvNzc3LCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAotT3BlbiBhIGZpbGUgZm9yIGxvdyBsZXZlbCBJTy4gIFJldHVybnMgYSBmaWxlIGhhbmRsZSAoaW50ZWdlcikuXG5cCi1cblwKLUlmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCi0gIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1kaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9vcGVuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK29zLm9wZW4gLT4gaW50CisgICAgcGF0aDogcGF0aF90CisgICAgZmxhZ3M6IGludAorICAgIG1vZGU6IGludCA9IDBvNzc3CisgICAgKgorICAgIGRpcl9mZDogZGlyX2ZkKHJlcXVpcmVzPSdvcGVuYXQnKSA9IE5vbmUKKworIyAib3BlbihwYXRoLCBmbGFncywgbW9kZT0wbzc3NywgKiwgZGlyX2ZkPU5vbmUpXG5cblwKKworT3BlbiBhIGZpbGUgZm9yIGxvdyBsZXZlbCBJTy4gIFJldHVybnMgYSBmaWxlIGRlc2NyaXB0b3IgKGludGVnZXIpLgorCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50Citvc19vcGVuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZmxhZ3MsIGludCBtb2RlLAorICAgICAgICAgICAgIGludCBkaXJfZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDdlOGNjNjM1NTlmNWRkZCBpbnB1dD1hZDg2MjNiMjlhY2QyOTM0XSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgaW50IGZsYWdzOwotICAgIGludCBtb2RlID0gMDc3NzsKLSAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGZkOwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgaW50IGFzeW5jX2VyciA9IDA7CisKICNpZmRlZiBPX0NMT0VYRUMKICAgICBpbnQgKmF0b21pY19mbGFnX3dvcmtzID0gJl9QeV9vcGVuX2Nsb2V4ZWNfd29ya3M7CiAjZWxpZiAhZGVmaW5lZChNU19XSU5ET1dTKQogICAgIGludCAqYXRvbWljX2ZsYWdfd29ya3MgPSBOVUxMOwogI2VuZGlmCiAKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gIm9wZW4iOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXxpJE8mOm9wZW4iLCBrZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICAmZmxhZ3MsICZtb2RlLAotI2lmZGVmIEhBVkVfT1BFTkFUCi0gICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKLSNlbHNlCi0gICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAotI2VuZGlmCi0gICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGZsYWdzIHw9IE9fTk9JTkhFUklUOwogI2VsaWYgZGVmaW5lZChPX0NMT0VYRUMpCiAgICAgZmxhZ3MgfD0gT19DTE9FWEVDOwogI2VuZGlmCiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAocGF0aC53aWRlKQotICAgICAgICBmZCA9IF93b3BlbihwYXRoLndpZGUsIGZsYWdzLCBtb2RlKTsKLSAgICBlbHNlCisgICAgICAgIGlmIChwYXRoLT53aWRlKQorICAgICAgICAgICAgZmQgPSBfd29wZW4ocGF0aC0+d2lkZSwgZmxhZ3MsIG1vZGUpOworICAgICAgICBlbHNlCiAjZW5kaWYKICNpZmRlZiBIQVZFX09QRU5BVAotICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCi0gICAgICAgIGZkID0gb3BlbmF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIGZsYWdzLCBtb2RlKTsKLSAgICBlbHNlCisgICAgICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgICAgICBmZCA9IG9wZW5hdChkaXJfZmQsIHBhdGgtPm5hcnJvdywgZmxhZ3MsIG1vZGUpOworICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgZmQgPSBvcGVuKHBhdGgubmFycm93LCBmbGFncywgbW9kZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGZkID0gb3BlbihwYXRoLT5uYXJyb3csIGZsYWdzLCBtb2RlKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChmZCA8IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAKLSAgICBpZiAoZmQgPT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIHBhdGgub2JqZWN0KTsKLSAgICAgICAgZ290byBleGl0OworICAgIGlmIChmZCA8IDApIHsKKyAgICAgICAgaWYgKCFhc3luY19lcnIpCisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwgcGF0aC0+b2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAogI2lmbmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKF9QeV9zZXRfaW5oZXJpdGFibGUoZmQsIDAsIGF0b21pY19mbGFnX3dvcmtzKSA8IDApIHsKICAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylmZCk7Ci0KLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworICAgIHJldHVybiBmZDsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X2Nsb3NlX19kb2NfXywKLSJjbG9zZShmZClcblxuXAotQ2xvc2UgYSBmaWxlIGRlc2NyaXB0b3IgKGZvciBsb3cgbGV2ZWwgSU8pLiIpOwogCi0vKgotVGhlIHVuZGVyc2NvcmUgYXQgZW5kIG9mIGZ1bmN0aW9uIG5hbWUgYXZvaWRzIGEgbmFtZSBjbGFzaCB3aXRoIHRoZSBsaWJjCi1mdW5jdGlvbiBwb3NpeF9jbG9zZS4KLSovCisvKltjbGluaWMgaW5wdXRdCitvcy5jbG9zZQorCisgICAgZmQ6IGludAorCitDbG9zZSBhIGZpbGUgZGVzY3JpcHRvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2Nsb3NlXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19jbG9zZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00N2JmMmVhNTM2NDQ1YTI2IGlucHV0PTJiYzQyNDUxY2E1YzMyMjNdKi8KIHsKLSAgICBpbnQgZmQsIHJlczsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6Y2xvc2UiLCAmZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpbnQgcmVzOwogICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgLyogV2UgZG8gbm90IHdhbnQgdG8gcmV0cnkgdXBvbiBFSU5UUjogc2VlIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzU3NjQ3OC8KKyAgICAgKiBhbmQgaHR0cDovL2xpbnV4LmRlcmtlaWxlci5jb20vTWFpbGluZy1MaXN0cy9LZXJuZWwvMjAwNS0wOS8zMDAwLmh0bWwKKyAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAqLwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgcmVzID0gY2xvc2UoZmQpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9jbG9zZXJhbmdlX19kb2NfXywKLSJjbG9zZXJhbmdlKGZkX2xvdywgZmRfaGlnaClcblxuXAotQ2xvc2VzIGFsbCBmaWxlIGRlc2NyaXB0b3JzIGluIFtmZF9sb3csIGZkX2hpZ2gpLCBpZ25vcmluZyBlcnJvcnMuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5jbG9zZXJhbmdlCisKKyAgICBmZF9sb3c6IGludAorICAgIGZkX2hpZ2g6IGludAorICAgIC8KKworQ2xvc2VzIGFsbCBmaWxlIGRlc2NyaXB0b3JzIGluIFtmZF9sb3csIGZkX2hpZ2gpLCBpZ25vcmluZyBlcnJvcnMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jbG9zZXJhbmdlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2Nsb3NlcmFuZ2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmRfbG93LCBpbnQgZmRfaGlnaCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MGU2YWRiOTUyMjBiYTk2IGlucHV0PTU4NTVhM2QwNTNlYmQ0ZWNdKi8KIHsKLSAgICBpbnQgZmRfZnJvbSwgZmRfdG8sIGk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpjbG9zZXJhbmdlIiwgJmZkX2Zyb20sICZmZF90bykpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGludCBpOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBmb3IgKGkgPSBmZF9mcm9tOyBpIDwgZmRfdG87IGkrKykKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgZm9yIChpID0gZmRfbG93OyBpIDwgZmRfaGlnaDsgaSsrKQogICAgICAgICBpZiAoX1B5VmVyaWZ5X2ZkKGkpKQogICAgICAgICAgICAgY2xvc2UoaSk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9kdXBfX2RvY19fLAotImR1cChmZCkgLT4gZmQyXG5cblwKLVJldHVybiBhIGR1cGxpY2F0ZSBvZiBhIGZpbGUgZGVzY3JpcHRvci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmR1cCAtPiBpbnQKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2R1cChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgZmQ6IGludAorICAgIC8KKworUmV0dXJuIGEgZHVwbGljYXRlIG9mIGEgZmlsZSBkZXNjcmlwdG9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50Citvc19kdXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjRiYmFjOGM3NjUyZDA1ZSBpbnB1dD02ZjEwZjdlYTk3Zjc4NTJhXSovCiB7Ci0gICAgaW50IGZkOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmR1cCIsICZmZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZmQgPSBfUHlfZHVwKGZkKTsKLSAgICBpZiAoZmQgPT0gLTEpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylmZCk7CisgICAgcmV0dXJuIF9QeV9kdXAoZmQpOwogfQogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9kdXAyX19kb2NfXywKLSJkdXAyKG9sZF9mZCwgbmV3X2ZkKVxuXG5cCi1EdXBsaWNhdGUgZmlsZSBkZXNjcmlwdG9yLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZHVwMgorICAgIGZkOiBpbnQKKyAgICBmZDI6IGludAorICAgIGluaGVyaXRhYmxlOiBib29sPVRydWUKKworRHVwbGljYXRlIGZpbGUgZGVzY3JpcHRvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2R1cDIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZHVwMl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGZkMiwgaW50IGluaGVyaXRhYmxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlhMDk5ZDk1ODgxYTc5MjMgaW5wdXQ9NzZlOTZmNTExYmUwMzUyZl0qLwogewotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJmZCIsICJmZDIiLCAiaW5oZXJpdGFibGUiLCBOVUxMfTsKLSAgICBpbnQgZmQsIGZkMjsKLSAgICBpbnQgaW5oZXJpdGFibGUgPSAxOwogICAgIGludCByZXM7CiAjaWYgZGVmaW5lZChIQVZFX0RVUDMpICYmIFwKICAgICAhKGRlZmluZWQoSEFWRV9GQ05UTF9IKSAmJiBkZWZpbmVkKEZfRFVQMkZEX0NMT0VYRUMpKQpAQCAtNzg4MiwxNiArNzg0MSwxOCBAQAogICAgIGludCBkdXAzX3dvcmtzID0gLTE7CiAjZW5kaWYKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlpfGk6ZHVwMiIsIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmZCwgJmZkMiwgJmluaGVyaXRhYmxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoIV9QeVZlcmlmeV9mZF9kdXAyKGZkLCBmZDIpKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKIAorICAgIC8qIGR1cDIoKSBjYW4gZmFpbCB3aXRoIEVJTlRSIGlmIHRoZSB0YXJnZXQgRkQgaXMgYWxyZWFkeSBvcGVuLCBiZWNhdXNlIGl0CisgICAgICogdGhlbiBoYXMgdG8gYmUgY2xvc2VkLiBTZWUgb3NfY2xvc2VfaW1wbCgpIGZvciB3aHkgd2UgZG9uJ3QgaGFuZGxlIEVJTlRSCisgICAgICogdXBvbiBjbG9zZSgpLCBhbmQgdGhlcmVmb3JlIGJlbG93LgorICAgICAqLwogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIHJlcyA9IGR1cDIoZmQsIGZkMik7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyZXMgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKQEAgLTc5NDYsMzAgKzc5MDcsMzQgQEAKIAogI2VuZGlmCiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKwogI2lmZGVmIEhBVkVfTE9DS0YKLVB5RG9jX1NUUlZBUihwb3NpeF9sb2NrZl9fZG9jX18sCi0ibG9ja2YoZmQsIGNtZCwgbGVuKVxuXG5cCi1BcHBseSwgdGVzdCBvciByZW1vdmUgYSBQT1NJWCBsb2NrIG9uIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXG5cCi1mZCBpcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLWNtZCBzcGVjaWZpZXMgdGhlIGNvbW1hbmQgdG8gdXNlIC0gb25lIG9mIEZfTE9DSywgRl9UTE9DSywgRl9VTE9DSyBvclxuXAotRl9URVNULlxuXAotbGVuIHNwZWNpZmllcyB0aGUgc2VjdGlvbiBvZiB0aGUgZmlsZSB0byBsb2NrLiIpOworLypbY2xpbmljIGlucHV0XQorb3MubG9ja2YKKworICAgIGZkOiBpbnQKKyAgICAgICAgQW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgICAgY29tbWFuZDogaW50CisgICAgICAgIE9uZSBvZiBGX0xPQ0ssIEZfVExPQ0ssIEZfVUxPQ0sgb3IgRl9URVNULgorICAgIGxlbmd0aDogUHlfb2ZmX3QKKyAgICAgICAgVGhlIG51bWJlciBvZiBieXRlcyB0byBsb2NrLCBzdGFydGluZyBhdCB0aGUgY3VycmVudCBwb3NpdGlvbi4KKyAgICAvCisKK0FwcGx5LCB0ZXN0IG9yIHJlbW92ZSBhIFBPU0lYIGxvY2sgb24gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xvY2tmKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2xvY2tmX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgY29tbWFuZCwgUHlfb2ZmX3QgbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI1ZmY3NzhmOWUyZmJmMWIgaW5wdXQ9NjVkYTQxZDIxMDZlOWI3OV0qLwogewotICAgIGludCBmZCwgY21kLCByZXM7Ci0gICAgb2ZmX3QgbGVuOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPJjpsb2NrZiIsCi0gICAgICAgICAgICAmZmQsICZjbWQsIF9wYXJzZV9vZmZfdCwgJmxlbikpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGludCByZXM7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gbG9ja2YoZmQsIGNtZCwgbGVuKTsKKyAgICByZXMgPSBsb2NrZihmZCwgY29tbWFuZCwgbGVuZ3RoKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlcyA8IDApCkBAIC03OTc3LDk1ICs3OTQyLDEwNSBAQAogCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0xPQ0tGICovCiAKIAotUHlEb2NfU1RSVkFSKHBvc2l4X2xzZWVrX19kb2NfXywKLSJsc2VlayhmZCwgcG9zLCBob3cpIC0+IG5ld3Bvc1xuXG5cCi1TZXQgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgYSBmaWxlIGRlc2NyaXB0b3IuXG5cCi1SZXR1cm4gdGhlIG5ldyBjdXJzb3IgcG9zaXRpb24gaW4gYnl0ZXMsIHN0YXJ0aW5nIGZyb20gdGhlIGJlZ2lubmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmxzZWVrIC0+IFB5X29mZl90CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9sc2VlayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgZmQ6IGludAorICAgIHBvc2l0aW9uOiBQeV9vZmZfdAorICAgIGhvdzogaW50CisgICAgLworCitTZXQgdGhlIHBvc2l0aW9uIG9mIGEgZmlsZSBkZXNjcmlwdG9yLiAgUmV0dXJuIHRoZSBuZXcgcG9zaXRpb24uCisKK1JldHVybiB0aGUgbmV3IGN1cnNvciBwb3NpdGlvbiBpbiBudW1iZXIgb2YgYnl0ZXMKK3JlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeV9vZmZfdAorb3NfbHNlZWtfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIFB5X29mZl90IHBvc2l0aW9uLCBpbnQgaG93KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY1ZDRhYjk2ZDY2NDk5OGMgaW5wdXQ9OTAyNjU0YWQzZjk2YTZkM10qLwogewotICAgIGludCBmZCwgaG93OwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBQWV9MT05HX0xPTkcgcG9zLCByZXM7Ci0jZWxzZQotICAgIG9mZl90IHBvcywgcmVzOwotI2VuZGlmCi0gICAgUHlPYmplY3QgKnBvc29iajsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPaTpsc2VlayIsICZmZCwgJnBvc29iaiwgJmhvdykpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X29mZl90IHJlc3VsdDsKKworICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogI2lmZGVmIFNFRUtfU0VUCiAgICAgLyogVHVybiAwLCAxLCAyIGludG8gU0VFS197U0VULENVUixFTkR9ICovCiAgICAgc3dpdGNoIChob3cpIHsKLSAgICBjYXNlIDA6IGhvdyA9IFNFRUtfU0VUOyBicmVhazsKLSAgICBjYXNlIDE6IGhvdyA9IFNFRUtfQ1VSOyBicmVhazsKLSAgICBjYXNlIDI6IGhvdyA9IFNFRUtfRU5EOyBicmVhazsKKyAgICAgICAgY2FzZSAwOiBob3cgPSBTRUVLX1NFVDsgYnJlYWs7CisgICAgICAgIGNhc2UgMTogaG93ID0gU0VFS19DVVI7IGJyZWFrOworICAgICAgICBjYXNlIDI6IGhvdyA9IFNFRUtfRU5EOyBicmVhazsKICAgICB9CiAjZW5kaWYgLyogU0VFS19FTkQgKi8KIAotI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCi0gICAgcG9zID0gUHlMb25nX0FzTG9uZyhwb3NvYmopOwotI2Vsc2UKLSAgICBwb3MgPSBQeUxvbmdfQXNMb25nTG9uZyhwb3NvYmopOwotI2VuZGlmCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwotICAgIHJlcyA9IF9sc2Vla2k2NChmZCwgcG9zLCBob3cpOworICAgIHJlc3VsdCA9IF9sc2Vla2k2NChmZCwgcG9zaXRpb24sIGhvdyk7CiAjZWxzZQotICAgIHJlcyA9IGxzZWVrKGZkLCBwb3MsIGhvdyk7CisgICAgcmVzdWx0ID0gbHNlZWsoZmQsIHBvc2l0aW9uLCBob3cpOwogI2VuZGlmCisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgcG9zaXhfZXJyb3IoKTsKIAotI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyZXMpOwotI2Vsc2UKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyhyZXMpOwotI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogCi1QeURvY19TVFJWQVIocG9zaXhfcmVhZF9fZG9jX18sCi0icmVhZChmZCwgYnVmZmVyc2l6ZSkgLT4gYnl0ZXNcblxuXAotUmVhZCBhIGZpbGUgZGVzY3JpcHRvci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnJlYWQKKyAgICBmZDogaW50CisgICAgbGVuZ3RoOiBQeV9zc2l6ZV90CisgICAgLworCitSZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IuICBSZXR1cm5zIGEgYnl0ZXMgb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcmVhZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19yZWFkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9zc2l6ZV90IGxlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZTI0ZjQ0MTc4NDU1ZThiIGlucHV0PTFkZjJlYWEyN2MwYmYxZDNdKi8KIHsKLSAgICBpbnQgZmQsIHNpemU7CiAgICAgUHlfc3NpemVfdCBuOwogICAgIFB5T2JqZWN0ICpidWZmZXI7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpyZWFkIiwgJmZkLCAmc2l6ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzaXplIDwgMCkgeworCisgICAgaWYgKGxlbmd0aCA8IDApIHsKICAgICAgICAgZXJybm8gPSBFSU5WQUw7CiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIH0KLSAgICBidWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgc2l6ZSk7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogT24gV2luZG93cywgdGhlIGNvdW50IHBhcmFtZXRlciBvZiByZWFkKCkgaXMgYW4gaW50ICovCisgICAgaWYgKGxlbmd0aCA+IElOVF9NQVgpCisgICAgICAgIGxlbmd0aCA9IElOVF9NQVg7CisjZW5kaWYKKworICAgIGJ1ZmZlciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCBsZW5ndGgpOwogICAgIGlmIChidWZmZXIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7CisKKyAgICBuID0gX1B5X3JlYWQoZmQsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZmZlciksIGxlbmd0aCk7CisgICAgaWYgKG4gPT0gLTEpIHsKICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7Ci0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIG4gPSByZWFkKGZkLCBQeUJ5dGVzX0FTX1NUUklORyhidWZmZXIpLCBzaXplKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChuIDwgMCkgewotICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgfQotICAgIGlmIChuICE9IHNpemUpCisKKyAgICBpZiAobiAhPSBsZW5ndGgpCiAgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmYnVmZmVyLCBuKTsKKwogICAgIHJldHVybiBidWZmZXI7CiB9CiAKQEAgLTgxMjcsMTIwICs4MTAyLDEzNSBAQAogfQogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX1JFQURWCi1QeURvY19TVFJWQVIocG9zaXhfcmVhZHZfX2RvY19fLAotInJlYWR2KGZkLCBidWZmZXJzKSAtPiBieXRlc3JlYWRcblxuXAotUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yIGZkIGludG8gYSBudW1iZXIgb2YgbXV0YWJsZSwgYnl0ZXMtbGlrZVxuXAotb2JqZWN0cyAoXCJidWZmZXJzXCIpLiAgcmVhZHYgd2lsbCB0cmFuc2ZlciBkYXRhIGludG8gZWFjaCBidWZmZXJcblwKLXVudGlsIGl0IGlzIGZ1bGwgYW5kIHRoZW4gbW92ZSBvbiB0byB0aGUgbmV4dCBidWZmZXIgaW4gdGhlIHNlcXVlbmNlXG5cCi10byBob2xkIHRoZSByZXN0IG9mIHRoZSBkYXRhLlxuXG5cCi1yZWFkdiByZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgcmVhZCAod2hpY2ggbWF5IGJlIGxlc3MgdGhhblxuXAotdGhlIHRvdGFsIGNhcGFjaXR5IG9mIGFsbCB0aGUgYnVmZmVycy4iKTsKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3JlYWR2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyNpZmRlZiBIQVZFX1JFQURWCisvKltjbGluaWMgaW5wdXRdCitvcy5yZWFkdiAtPiBQeV9zc2l6ZV90CisKKyAgICBmZDogaW50CisgICAgYnVmZmVyczogb2JqZWN0CisgICAgLworCitSZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IgZmQgaW50byBhbiBpdGVyYWJsZSBvZiBidWZmZXJzLgorCitUaGUgYnVmZmVycyBzaG91bGQgYmUgbXV0YWJsZSBidWZmZXJzIGFjY2VwdGluZyBieXRlcy4KK3JlYWR2IHdpbGwgdHJhbnNmZXIgZGF0YSBpbnRvIGVhY2ggYnVmZmVyIHVudGlsIGl0IGlzIGZ1bGwKK2FuZCB0aGVuIG1vdmUgb24gdG8gdGhlIG5leHQgYnVmZmVyIGluIHRoZSBzZXF1ZW5jZSB0byBob2xkCit0aGUgcmVzdCBvZiB0aGUgZGF0YS4KKworcmVhZHYgcmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHJlYWQsCit3aGljaCBtYXkgYmUgbGVzcyB0aGFuIHRoZSB0b3RhbCBjYXBhY2l0eSBvZiBhbGwgdGhlIGJ1ZmZlcnMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeV9zc2l6ZV90Citvc19yZWFkdl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlPYmplY3QgKmJ1ZmZlcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDBmYzU2ZmYxODAwMDU5ZiBpbnB1dD1lNjc5ZWI1ZGJmYTAzNTdkXSovCiB7Ci0gICAgaW50IGZkLCBjbnQ7CisgICAgaW50IGNudDsKICAgICBQeV9zc2l6ZV90IG47Ci0gICAgUHlPYmplY3QgKnNlcTsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKICAgICBzdHJ1Y3QgaW92ZWMgKmlvdjsKICAgICBQeV9idWZmZXIgKmJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86cmVhZHYiLCAmZmQsICZzZXEpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2soc2VxKSkgeworICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhidWZmZXJzKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgInJlYWR2KCkgYXJnIDIgbXVzdCBiZSBhIHNlcXVlbmNlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGNudCA9IFB5U2VxdWVuY2VfU2l6ZShzZXEpOwogCi0gICAgaWYgKGlvdl9zZXR1cCgmaW92LCAmYnVmLCBzZXEsIGNudCwgUHlCVUZfV1JJVEFCTEUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgY250ID0gUHlTZXF1ZW5jZV9TaXplKGJ1ZmZlcnMpOwogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIG4gPSByZWFkdihmZCwgaW92LCBjbnQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKGlvdl9zZXR1cCgmaW92LCAmYnVmLCBidWZmZXJzLCBjbnQsIFB5QlVGX1dSSVRBQkxFKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBuID0gcmVhZHYoZmQsIGlvdiwgY250KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CiAKICAgICBpb3ZfY2xlYW51cChpb3YsIGJ1ZiwgY250KTsKLSAgICBpZiAobiA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIGlmIChuIDwgMCkgeworICAgICAgICBpZiAoIWFzeW5jX2VycikKKyAgICAgICAgICAgIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KG4pOworICAgIHJldHVybiBuOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9SRUFEViAqLworCiAKICNpZmRlZiBIQVZFX1BSRUFECi1QeURvY19TVFJWQVIocG9zaXhfcHJlYWRfX2RvY19fLAotInByZWFkKGZkLCBidWZmZXJzaXplLCBvZmZzZXQpIC0+IHN0cmluZ1xuXG5cCi1SZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IsIGZkLCBhdCBhIHBvc2l0aW9uIG9mIG9mZnNldC4gSXQgd2lsbCByZWFkIHVwXG5cCi10byBidWZmZXJzaXplIG51bWJlciBvZiBieXRlcy4gVGhlIGZpbGUgb2Zmc2V0IHJlbWFpbnMgdW5jaGFuZ2VkLiIpOworLypbY2xpbmljIGlucHV0XQorIyBUT0RPIGxlbmd0aCBzaG91bGQgYmUgc2l6ZV90ISAgYnV0IFB5dGhvbiBkb2Vzbid0IHN1cHBvcnQgcGFyc2luZyBzaXplX3QgeWV0Lgorb3MucHJlYWQKKworICAgIGZkOiBpbnQKKyAgICBsZW5ndGg6IGludAorICAgIG9mZnNldDogUHlfb2ZmX3QKKyAgICAvCisKK1JlYWQgYSBudW1iZXIgb2YgYnl0ZXMgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciBzdGFydGluZyBhdCBhIHBhcnRpY3VsYXIgb2Zmc2V0LgorCitSZWFkIGxlbmd0aCBieXRlcyBmcm9tIGZpbGUgZGVzY3JpcHRvciBmZCwgc3RhcnRpbmcgYXQgb2Zmc2V0IGJ5dGVzIGZyb20KK3RoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUuICBUaGUgZmlsZSBvZmZzZXQgcmVtYWlucyB1bmNoYW5nZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9wcmVhZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19wcmVhZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGxlbmd0aCwgUHlfb2ZmX3Qgb2Zmc2V0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkwZDFmZWQ4N2Y2OGZhMzMgaW5wdXQ9MDg0OTQ4ZGNiYWEzNWQ0Y10qLwogewotICAgIGludCBmZCwgc2l6ZTsKLSAgICBvZmZfdCBvZmZzZXQ7CiAgICAgUHlfc3NpemVfdCBuOworICAgIGludCBhc3luY19lcnIgPSAwOwogICAgIFB5T2JqZWN0ICpidWZmZXI7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU8mOnByZWFkIiwgJmZkLCAmc2l6ZSwgX3BhcnNlX29mZl90LCAmb2Zmc2V0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICBpZiAobGVuZ3RoIDwgMCkgewogICAgICAgICBlcnJubyA9IEVJTlZBTDsKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgfQotICAgIGJ1ZmZlciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCBzaXplKTsKKyAgICBidWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgbGVuZ3RoKTsKICAgICBpZiAoYnVmZmVyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewogICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgfQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBuID0gcHJlYWQoZmQsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZmZlciksIHNpemUsIG9mZnNldCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgIG4gPSBwcmVhZChmZCwgUHlCeXRlc19BU19TVFJJTkcoYnVmZmVyKSwgbGVuZ3RoLCBvZmZzZXQpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKG4gPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKwogICAgIGlmIChuIDwgMCkgewogICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKICAgICB9Ci0gICAgaWYgKG4gIT0gc2l6ZSkKKyAgICBpZiAobiAhPSBsZW5ndGgpCiAgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmYnVmZmVyLCBuKTsKICAgICByZXR1cm4gYnVmZmVyOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9QUkVBRCAqLwogCi1QeURvY19TVFJWQVIocG9zaXhfd3JpdGVfX2RvY19fLAotIndyaXRlKGZkLCBkYXRhKSAtPiBieXRlc3dyaXR0ZW5cblxuXAotV3JpdGUgYnl0ZXMgdG8gYSBmaWxlIGRlc2NyaXB0b3IuIik7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF93cml0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitvcy53cml0ZSAtPiBQeV9zc2l6ZV90CisKKyAgICBmZDogaW50CisgICAgZGF0YTogUHlfYnVmZmVyCisgICAgLworCitXcml0ZSBhIGJ5dGVzIG9iamVjdCB0byBhIGZpbGUgZGVzY3JpcHRvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5X3NzaXplX3QKK29zX3dyaXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9idWZmZXIgKmRhdGEpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTg4NDVjOTNjOWVlMWRkYSBpbnB1dD0zMjA3ZTI4OTYzMjM0ZjNjXSovCiB7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgaW50IGZkOwotICAgIFB5X3NzaXplX3Qgc2l6ZSwgbGVuOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSo6d3JpdGUiLCAmZmQsICZwYnVmKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICB9Ci0gICAgbGVuID0gcGJ1Zi5sZW47Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAobGVuID4gSU5UX01BWCkKLSAgICAgICAgbGVuID0gSU5UX01BWDsKLSAgICBzaXplID0gd3JpdGUoZmQsIHBidWYuYnVmLCAoaW50KWxlbik7Ci0jZWxzZQotICAgIHNpemUgPSB3cml0ZShmZCwgcGJ1Zi5idWYsIGxlbik7Ci0jZW5kaWYKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmIChzaXplIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzaXplKTsKKyAgICByZXR1cm4gX1B5X3dyaXRlKGZkLCBkYXRhLT5idWYsIGRhdGEtPmxlbik7CiB9CiAKICNpZmRlZiBIQVZFX1NFTkRGSUxFCkBAIC04MjUwLDExICs4MjQwLDEzIEBACiAgICAgICAgICAgICAtPiBieXRlc3dyaXR0ZW5cblwKIENvcHkgY291bnQgYnl0ZXMgZnJvbSBmaWxlIGRlc2NyaXB0b3IgaW4gdG8gZmlsZSBkZXNjcmlwdG9yIG91dC4iKTsKIAorLyogQUMgMy41OiBkb24ndCBib3RoZXIgY29udmVydGluZywgaGFzIG9wdGlvbmFsIGdyb3VwKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9zZW5kZmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RpY3QpCiB7CiAgICAgaW50IGluLCBvdXQ7CiAgICAgUHlfc3NpemVfdCByZXQ7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAgICAgb2ZmX3Qgb2Zmc2V0OwogCiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykKQEAgLTgyNzYsMTAgKzgyNjgsMTAgQEAKIAogI2lmZGVmIF9fQVBQTEVfXwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgImlpTyZPJnxPT2k6c2VuZGZpbGUiLAotICAgICAgICBrZXl3b3JkcywgJm91dCwgJmluLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQsIF9wYXJzZV9vZmZfdCwgJnNieXRlcywKKyAgICAgICAga2V5d29yZHMsICZvdXQsICZpbiwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0LCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZzYnl0ZXMsCiAjZWxzZQogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgImlpTyZufE9PaTpzZW5kZmlsZSIsCi0gICAgICAgIGtleXdvcmRzLCAmb3V0LCAmaW4sIF9wYXJzZV9vZmZfdCwgJm9mZnNldCwgJmxlbiwKKyAgICAgICAga2V5d29yZHMsICZvdXQsICZpbiwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0LCAmbGVuLAogI2VuZGlmCiAgICAgICAgICAgICAgICAgJmhlYWRlcnMsICZ0cmFpbGVycywgJmZsYWdzKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtODMxOCwxMyArODMxMCwxNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBfX0FQUExFX18KLSAgICByZXQgPSBzZW5kZmlsZShpbiwgb3V0LCBvZmZzZXQsICZzYnl0ZXMsICZzZiwgZmxhZ3MpOworICAgICAgICByZXQgPSBzZW5kZmlsZShpbiwgb3V0LCBvZmZzZXQsICZzYnl0ZXMsICZzZiwgZmxhZ3MpOwogI2Vsc2UKLSAgICByZXQgPSBzZW5kZmlsZShpbiwgb3V0LCBvZmZzZXQsIGxlbiwgJnNmLCAmc2J5dGVzLCBmbGFncyk7CisgICAgICAgIHJldCA9IHNlbmRmaWxlKGluLCBvdXQsIG9mZnNldCwgbGVuLCAmc2YsICZzYnl0ZXMsIGZsYWdzKTsKICNlbmRpZgotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmV0IDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKIAogICAgIGlmIChzZi5oZWFkZXJzICE9IE5VTEwpCiAgICAgICAgIGlvdl9jbGVhbnVwKHNmLmhlYWRlcnMsIGhidWYsIHNmLmhkcl9jbnQpOwpAQCAtODM0Myw3ICs4MzM5LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IHBvc2l4X2Vycm9yKCkgOiBOVUxMOwogICAgIH0KICAgICBnb3RvIGRvbmU7CiAKQEAgLTgzNjQsNzYgKzgzNjAsMTA2IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogI2lmZGVmIGxpbnV4CiAgICAgaWYgKG9mZm9iaiA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmV0ID0gc2VuZGZpbGUob3V0LCBpbiwgTlVMTCwgY291bnQpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBkbyB7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICByZXQgPSBzZW5kZmlsZShvdXQsIGluLCBOVUxMLCBjb3VudCk7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICB9IHdoaWxlIChyZXQgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKICAgICAgICAgaWYgKHJldCA8IDApCi0gICAgICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIm4iLCByZXQpOwogICAgIH0KICNlbmRpZgotICAgIGlmICghX3BhcnNlX29mZl90KG9mZm9iaiwgJm9mZnNldCkpCisgICAgaWYgKCFQeV9vZmZfdF9jb252ZXJ0ZXIob2Zmb2JqLCAmb2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJldCA9IHNlbmRmaWxlKG91dCwgaW4sICZvZmZzZXQsIGNvdW50KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJldCA9IHNlbmRmaWxlKG91dCwgaW4sICZvZmZzZXQsIGNvdW50KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXQgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKICAgICBpZiAocmV0IDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgibiIsIHJldCk7CiAjZW5kaWYKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfU0VOREZJTEUgKi8KIAotUHlEb2NfU1RSVkFSKHBvc2l4X2ZzdGF0X19kb2NfXywKLSJmc3RhdChmZCkgLT4gc3RhdCByZXN1bHRcblxuXAotTGlrZSBzdGF0KCksIGJ1dCBmb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi1FcXVpdmFsZW50IHRvIHN0YXQoZmQ9ZmQpLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5mc3RhdAorCisgICAgZmQgOiBpbnQKKworUGVyZm9ybSBhIHN0YXQgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIGZpbGUgZGVzY3JpcHRvci4KKworTGlrZSBzdGF0KCksIGJ1dCBmb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCitFcXVpdmFsZW50IHRvIG9zLnN0YXQoZmQpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZnN0YXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfZnN0YXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDcxZmU5OGJmMDQyYjYyNiBpbnB1dD0yN2UwZTBlYmJlNTYwMGM5XSovCiB7Ci0gICAgaW50IGZkOwogICAgIFNUUlVDVF9TVEFUIHN0OwogICAgIGludCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmZzdGF0IiwgJmZkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IEZTVEFUKGZkLCAmc3QpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaW50IGFzeW5jX2VyciA9IDA7CisKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmVzID0gRlNUQVQoZmQsICZzdCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmVzICE9IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOwogICAgIGlmIChyZXMgIT0gMCkgewogI2lmZGVmIE1TX1dJTkRPV1MKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKICNlbmRpZgogICAgIH0KIAogICAgIHJldHVybiBfcHlzdGF0X2Zyb21zdHJ1Y3RzdGF0KCZzdCk7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9pc2F0dHlfX2RvY19fLAotImlzYXR0eShmZCkgLT4gYm9vbFxuXG5cCi1SZXR1cm4gVHJ1ZSBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yICdmZCcgaXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3JcblwKLWNvbm5lY3RlZCB0byB0aGUgc2xhdmUgZW5kIG9mIGEgdGVybWluYWwuIik7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9pc2F0dHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorLypbY2xpbmljIGlucHV0XQorb3MuaXNhdHR5IC0+IGJvb2wKKyAgICBmZDogaW50CisgICAgLworCitSZXR1cm4gVHJ1ZSBpZiB0aGUgZmQgaXMgY29ubmVjdGVkIHRvIGEgdGVybWluYWwuCisKK1JldHVybiBUcnVlIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IKK2Nvbm5lY3RlZCB0byB0aGUgc2xhdmUgZW5kIG9mIGEgdGVybWluYWwuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK29zX2lzYXR0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hY2VjOWQzYzI5ZDE2ZDMzIGlucHV0PTA4Y2U5NGFhMWVhZjdiNWVdKi8KIHsKLSAgICBpbnQgZmQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmlzYXR0eSIsICZmZCkpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGludCByZXR1cm5fdmFsdWU7CiAgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoaXNhdHR5KGZkKSk7CisgICAgICAgIHJldHVybiAwOworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICByZXR1cm5fdmFsdWUgPSBpc2F0dHkoZmQpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAorCiAjaWZkZWYgSEFWRV9QSVBFCi1QeURvY19TVFJWQVIocG9zaXhfcGlwZV9fZG9jX18sCi0icGlwZSgpIC0+IChyZWFkX2VuZCwgd3JpdGVfZW5kKVxuXG5cCi1DcmVhdGUgYSBwaXBlLiIpOworLypbY2xpbmljIGlucHV0XQorb3MucGlwZQorCitDcmVhdGUgYSBwaXBlLgorCitSZXR1cm5zIGEgdHVwbGUgb2YgdHdvIGZpbGUgZGVzY3JpcHRvcnM6CisgIChyZWFkX2ZkLCB3cml0ZV9mZCkKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3BpcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19waXBlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YjBjZDNmODY4ZWMzYzQwIGlucHV0PTAyNTM1ZThjOGZhNmM0ZDRdKi8KIHsKICAgICBpbnQgZmRzWzJdOwogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTg1MDEsMjUgKzg1MjcsMzAgQEAKIH0KICNlbmRpZiAgLyogSEFWRV9QSVBFICovCiAKKwogI2lmZGVmIEhBVkVfUElQRTIKLVB5RG9jX1NUUlZBUihwb3NpeF9waXBlMl9fZG9jX18sCi0icGlwZTIoZmxhZ3MpIC0+IChyZWFkX2VuZCwgd3JpdGVfZW5kKVxuXG5cCi1DcmVhdGUgYSBwaXBlIHdpdGggZmxhZ3Mgc2V0IGF0b21pY2FsbHkuXG5cCi1mbGFncyBjYW4gYmUgY29uc3RydWN0ZWQgYnkgT1JpbmcgdG9nZXRoZXIgb25lIG9yIG1vcmUgb2YgdGhlc2UgdmFsdWVzOlxuXAotT19OT05CTE9DSywgT19DTE9FWEVDLlxuXAotIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5waXBlMgorCisgICAgZmxhZ3M6IGludAorICAgIC8KKworQ3JlYXRlIGEgcGlwZSB3aXRoIGZsYWdzIHNldCBhdG9taWNhbGx5LgorCitSZXR1cm5zIGEgdHVwbGUgb2YgdHdvIGZpbGUgZGVzY3JpcHRvcnM6CisgIChyZWFkX2ZkLCB3cml0ZV9mZCkKKworZmxhZ3MgY2FuIGJlIGNvbnN0cnVjdGVkIGJ5IE9SaW5nIHRvZ2V0aGVyIG9uZSBvciBtb3JlIG9mIHRoZXNlIHZhbHVlczoKK09fTk9OQkxPQ0ssIE9fQ0xPRVhFQy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3BpcGUyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQorb3NfcGlwZTJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmxhZ3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzE1YjYwNzVkMGM2YjJlNyBpbnB1dD1mMjYxYjZlN2U2M2M2ODE3XSovCiB7Ci0gICAgaW50IGZsYWdzOwogICAgIGludCBmZHNbMl07CiAgICAgaW50IHJlczsKIAotICAgIGZsYWdzID0gX1B5TG9uZ19Bc0ludChhcmcpOwotICAgIGlmIChmbGFncyA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHJlcyA9IHBpcGUyKGZkcywgZmxhZ3MpOwogICAgIGlmIChyZXMgIT0gMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CkBAIC04NTI3LDMwNiArODU1OCwzNDAgQEAKIH0KICNlbmRpZiAvKiBIQVZFX1BJUEUyICovCiAKLSNpZmRlZiBIQVZFX1dSSVRFVgotUHlEb2NfU1RSVkFSKHBvc2l4X3dyaXRldl9fZG9jX18sCi0id3JpdGV2KGZkLCBidWZmZXJzKSAtPiBieXRlc3dyaXR0ZW5cblxuXAotV3JpdGUgdGhlIGNvbnRlbnRzIG9mICpidWZmZXJzKiB0byBmaWxlIGRlc2NyaXB0b3IgKmZkKi4gKmJ1ZmZlcnMqXG5cCi1tdXN0IGJlIGEgc2VxdWVuY2Ugb2YgYnl0ZXMtbGlrZSBvYmplY3RzLlxuXG5cCi13cml0ZXYgd3JpdGVzIHRoZSBjb250ZW50cyBvZiBlYWNoIG9iamVjdCB0byB0aGUgZmlsZSBkZXNjcmlwdG9yXG5cCi1hbmQgcmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uIik7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF93cml0ZXYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorI2lmZGVmIEhBVkVfV1JJVEVWCisvKltjbGluaWMgaW5wdXRdCitvcy53cml0ZXYgLT4gUHlfc3NpemVfdAorICAgIGZkOiBpbnQKKyAgICBidWZmZXJzOiBvYmplY3QKKyAgICAvCisKK0l0ZXJhdGUgb3ZlciBidWZmZXJzLCBhbmQgd3JpdGUgdGhlIGNvbnRlbnRzIG9mIGVhY2ggdG8gYSBmaWxlIGRlc2NyaXB0b3IuCisKK1JldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorYnVmZmVycyBtdXN0IGJlIGEgc2VxdWVuY2Ugb2YgYnl0ZXMtbGlrZSBvYmplY3RzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlfc3NpemVfdAorb3Nfd3JpdGV2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeU9iamVjdCAqYnVmZmVycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNDg5MjVkYmYyZDVjMjM4IGlucHV0PTViOGQxN2ZlNDE4OWQyZmVdKi8KIHsKLSAgICBpbnQgZmQsIGNudDsKLSAgICBQeV9zc2l6ZV90IHJlczsKLSAgICBQeU9iamVjdCAqc2VxOworICAgIGludCBjbnQ7CisgICAgUHlfc3NpemVfdCByZXN1bHQ7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAgICAgc3RydWN0IGlvdmVjICppb3Y7CiAgICAgUHlfYnVmZmVyICpidWY7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzp3cml0ZXYiLCAmZmQsICZzZXEpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2soc2VxKSkgeworCisgICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKGJ1ZmZlcnMpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAid3JpdGV2KCkgYXJnIDIgbXVzdCBiZSBhIHNlcXVlbmNlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGNudCA9IFB5U2VxdWVuY2VfU2l6ZShzZXEpOworICAgIGNudCA9IFB5U2VxdWVuY2VfU2l6ZShidWZmZXJzKTsKIAotICAgIGlmIChpb3Zfc2V0dXAoJmlvdiwgJmJ1Ziwgc2VxLCBjbnQsIFB5QlVGX1NJTVBMRSkgPCAwKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpb3Zfc2V0dXAoJmlvdiwgJmJ1ZiwgYnVmZmVycywgY250LCBQeUJVRl9TSU1QTEUpIDwgMCkgeworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IHdyaXRldihmZCwgaW92LCBjbnQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlc3VsdCA9IHdyaXRldihmZCwgaW92LCBjbnQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlc3VsdCA8IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOwogCiAgICAgaW92X2NsZWFudXAoaW92LCBidWYsIGNudCk7Ci0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIGlmIChyZXN1bHQgPCAwICYmICFhc3luY19lcnIpCisgICAgICAgIHBvc2l4X2Vycm9yKCk7CiAKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIEhBVkVfUFdSSVRFCi1QeURvY19TVFJWQVIocG9zaXhfcHdyaXRlX19kb2NfXywKLSJwd3JpdGUoZmQsIHN0cmluZywgb2Zmc2V0KSAtPiBieXRlc3dyaXR0ZW5cblxuXAotV3JpdGUgc3RyaW5nIHRvIGEgZmlsZSBkZXNjcmlwdG9yLCBmZCwgZnJvbSBvZmZzZXQsIGxlYXZpbmcgdGhlIGZpbGVcblwKLW9mZnNldCB1bmNoYW5nZWQuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9wd3JpdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIGludCBmZDsKLSAgICBvZmZfdCBvZmZzZXQ7Ci0gICAgUHlfc3NpemVfdCBzaXplOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSpPJjpwd3JpdGUiLCAmZmQsICZwYnVmLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgfQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzaXplID0gcHdyaXRlKGZkLCBwYnVmLmJ1ZiwgKHNpemVfdClwYnVmLmxlbiwgb2Zmc2V0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmIChzaXplIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzaXplKTsKLX0KLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9NS0ZJRk8KLVB5RG9jX1NUUlZBUihwb3NpeF9ta2ZpZm9fX2RvY19fLAotIm1rZmlmbyhwYXRoLCBtb2RlPTBvNjY2LCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAotQ3JlYXRlIGEgRklGTyAoYSBQT1NJWCBuYW1lZCBwaXBlKS5cblwKLVxuXAotSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKLSAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKLWRpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCi0gIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X21rZmlmbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCi17Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgaW50IG1vZGUgPSAwNjY2OwotICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBpbnQgcmVzdWx0OwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07Ci0KLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aSRPJjpta2ZpZm8iLCBrZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICAmbW9kZSwKLSNpZmRlZiBIQVZFX01LRklGT0FUCi0gICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKLSNlbHNlCi0gICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAotI2VuZGlmCi0gICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotI2lmZGVmIEhBVkVfTUtGSUZPQVQKLSAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQotICAgICAgICByZXN1bHQgPSBta2ZpZm9hdChkaXJfZmQsIHBhdGgubmFycm93LCBtb2RlKTsKLSAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgcmVzdWx0ID0gbWtmaWZvKHBhdGgubmFycm93LCBtb2RlKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKHJlc3VsdCA8IDApIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgZ290byBleGl0OwotICAgIH0KLQotICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChIQVZFX01LTk9EKSAmJiBkZWZpbmVkKEhBVkVfTUFLRURFVikKLVB5RG9jX1NUUlZBUihwb3NpeF9ta25vZF9fZG9jX18sCi0ibWtub2QocGF0aCwgbW9kZT0wbzYwMCwgZGV2aWNlPTAsICosIGRpcl9mZD1Ob25lKVxuXG5cCi1DcmVhdGUgYSBmaWxlc3lzdGVtIG5vZGUgKGZpbGUsIGRldmljZSBzcGVjaWFsIGZpbGUgb3IgbmFtZWQgcGlwZSlcblwKLW5hbWVkIHBhdGguIG1vZGUgc3BlY2lmaWVzIGJvdGggdGhlIHBlcm1pc3Npb25zIHRvIHVzZSBhbmQgdGhlXG5cCi10eXBlIG9mIG5vZGUgdG8gYmUgY3JlYXRlZCwgYmVpbmcgY29tYmluZWQgKGJpdHdpc2UgT1IpIHdpdGggb25lIG9mXG5cCi1TX0lGUkVHLCBTX0lGQ0hSLCBTX0lGQkxLLCBhbmQgU19JRklGTy4gRm9yIFNfSUZDSFIgYW5kIFNfSUZCTEssXG5cCi1kZXZpY2UgZGVmaW5lcyB0aGUgbmV3bHkgY3JlYXRlZCBkZXZpY2Ugc3BlY2lhbCBmaWxlIChwcm9iYWJseSB1c2luZ1xuXAotb3MubWFrZWRldigpKSwgb3RoZXJ3aXNlIGl0IGlzIGlnbm9yZWQuXG5cCi1cblwKLUlmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCi0gIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1kaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7Ci0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X21rbm9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKLXsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICBpbnQgbW9kZSA9IDA2NjY7Ci0gICAgZGV2X3QgZGV2aWNlID0gMDsKLSAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7Ci0gICAgaW50IHJlc3VsdDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRldmljZSIsICJkaXJfZmQiLCBOVUxMfTsKLQotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpTyYkTyY6bWtub2QiLCBrZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICAmbW9kZSwgX1B5X0Rldl9Db252ZXJ0ZXIsICZkZXZpY2UsCi0jaWZkZWYgSEFWRV9NS05PREFUCi0gICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKLSNlbHNlCi0gICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAotI2VuZGlmCi0gICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotI2lmZGVmIEhBVkVfTUtOT0RBVAotICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCi0gICAgICAgIHJlc3VsdCA9IG1rbm9kYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgbW9kZSwgZGV2aWNlKTsKLSAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgcmVzdWx0ID0gbWtub2QocGF0aC5uYXJyb3csIG1vZGUsIGRldmljZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmIChyZXN1bHQgPCAwKSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9Ci0KLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLQotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIEhBVkVfREVWSUNFX01BQ1JPUwotUHlEb2NfU1RSVkFSKHBvc2l4X21ham9yX19kb2NfXywKLSJtYWpvcihkZXZpY2UpIC0+IG1ham9yIG51bWJlclxuXAotRXh0cmFjdHMgYSBkZXZpY2UgbWFqb3IgbnVtYmVyIGZyb20gYSByYXcgZGV2aWNlIG51bWJlci4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X21ham9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBkZXZfdCBkZXZpY2U7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjptYWpvciIsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZyltYWpvcihkZXZpY2UpKTsKLX0KLQotUHlEb2NfU1RSVkFSKHBvc2l4X21pbm9yX19kb2NfXywKLSJtaW5vcihkZXZpY2UpIC0+IG1pbm9yIG51bWJlclxuXAotRXh0cmFjdHMgYSBkZXZpY2UgbWlub3IgbnVtYmVyIGZyb20gYSByYXcgZGV2aWNlIG51bWJlci4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X21pbm9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBkZXZfdCBkZXZpY2U7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjptaW5vciIsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZyltaW5vcihkZXZpY2UpKTsKLX0KLQotUHlEb2NfU1RSVkFSKHBvc2l4X21ha2VkZXZfX2RvY19fLAotIm1ha2VkZXYobWFqb3IsIG1pbm9yKSAtPiBkZXZpY2UgbnVtYmVyXG5cCi1Db21wb3NlcyBhIHJhdyBkZXZpY2UgbnVtYmVyIGZyb20gdGhlIG1ham9yIGFuZCBtaW5vciBkZXZpY2UgbnVtYmVycy4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X21ha2VkZXYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGludCBtYWpvciwgbWlub3I7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTptYWtlZGV2IiwgJm1ham9yLCAmbWlub3IpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gX1B5TG9uZ19Gcm9tRGV2KG1ha2VkZXYobWFqb3IsIG1pbm9yKSk7Ci19Ci0jZW5kaWYgLyogZGV2aWNlIG1hY3JvcyAqLwotCi0KLSNpZmRlZiBIQVZFX0ZUUlVOQ0FURQotUHlEb2NfU1RSVkFSKHBvc2l4X2Z0cnVuY2F0ZV9fZG9jX18sCi0iZnRydW5jYXRlKGZkLCBsZW5ndGgpXG5cblwKLVRydW5jYXRlIGEgZmlsZSB0byBhIHNwZWNpZmllZCBsZW5ndGguIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9mdHJ1bmNhdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGludCBmZDsKLSAgICBvZmZfdCBsZW5ndGg7Ci0gICAgaW50IHJlczsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mOmZ0cnVuY2F0ZSIsICZmZCwgX3BhcnNlX29mZl90LCAmbGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gZnRydW5jYXRlKGZkLCBsZW5ndGgpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLX0KLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9UUlVOQ0FURQotUHlEb2NfU1RSVkFSKHBvc2l4X3RydW5jYXRlX19kb2NfXywKLSJ0cnVuY2F0ZShwYXRoLCBsZW5ndGgpXG5cblwKLVRydW5jYXRlIHRoZSBmaWxlIGdpdmVuIGJ5IHBhdGggdG8gbGVuZ3RoIGJ5dGVzLlxuXAotT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF90cnVuY2F0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCi17Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgb2ZmX3QgbGVuZ3RoOwotICAgIGludCByZXM7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibGVuZ3RoIiwgTlVMTH07Ci0KLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gInRydW5jYXRlIjsKLSNpZmRlZiBIQVZFX0ZUUlVOQ0FURQotICAgIHBhdGguYWxsb3dfZmQgPSAxOwotI2VuZGlmCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJjp0cnVuY2F0ZSIsIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcGFyc2Vfb2ZmX3QsICZsZW5ndGgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSNpZmRlZiBIQVZFX0ZUUlVOQ0FURQotICAgIGlmIChwYXRoLmZkICE9IC0xKQotICAgICAgICByZXMgPSBmdHJ1bmNhdGUocGF0aC5mZCwgbGVuZ3RoKTsKLSAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgcmVzID0gdHJ1bmNhdGUocGF0aC5uYXJyb3csIGxlbmd0aCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmVzdWx0ID0gcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmVzdWx0ID0gUHlfTm9uZTsKLSAgICB9Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQorI2VuZGlmIC8qIEhBVkVfV1JJVEVWICovCisKKworI2lmZGVmIEhBVkVfUFdSSVRFCisvKltjbGluaWMgaW5wdXRdCitvcy5wd3JpdGUgLT4gUHlfc3NpemVfdAorCisgICAgZmQ6IGludAorICAgIGJ1ZmZlcjogUHlfYnVmZmVyCisgICAgb2Zmc2V0OiBQeV9vZmZfdAorICAgIC8KKworV3JpdGUgYnl0ZXMgdG8gYSBmaWxlIGRlc2NyaXB0b3Igc3RhcnRpbmcgYXQgYSBwYXJ0aWN1bGFyIG9mZnNldC4KKworV3JpdGUgYnVmZmVyIHRvIGZkLCBzdGFydGluZyBhdCBvZmZzZXQgYnl0ZXMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mCit0aGUgZmlsZS4gIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGUuICBEb2VzIG5vdCBjaGFuZ2UgdGhlCitjdXJyZW50IGZpbGUgb2Zmc2V0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlfc3NpemVfdAorb3NfcHdyaXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9idWZmZXIgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgIFB5X29mZl90IG9mZnNldCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05M2FhYmRiNDBlMTdkMzI1IGlucHV0PTE5OTAzZjFiM2RkMjYzNzddKi8KK3sKKyAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CisKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgIHNpemUgPSBwd3JpdGUoZmQsIGJ1ZmZlci0+YnVmLCAoc2l6ZV90KWJ1ZmZlci0+bGVuLCBvZmZzZXQpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHNpemUgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKworICAgIGlmIChzaXplIDwgMCAmJiAhYXN5bmNfZXJyKQorICAgICAgICBwb3NpeF9lcnJvcigpOworICAgIHJldHVybiBzaXplOworfQorI2VuZGlmIC8qIEhBVkVfUFdSSVRFICovCisKKworI2lmZGVmIEhBVkVfTUtGSUZPCisvKltjbGluaWMgaW5wdXRdCitvcy5ta2ZpZm8KKworICAgIHBhdGg6IHBhdGhfdAorICAgIG1vZGU6IGludD0wbzY2NgorICAgICoKKyAgICBkaXJfZmQ6IGRpcl9mZChyZXF1aXJlcz0nbWtmaWZvYXQnKT1Ob25lCisKK0NyZWF0ZSBhICJmaWZvIiAoYSBQT1NJWCBuYW1lZCBwaXBlKS4KKworSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX21rZmlmb19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGY1ZjVlNzJjNjMwMDQ5YSBpbnB1dD03MzAzMmU5OGEzNmUwZTE5XSovCit7CisgICAgaW50IHJlc3VsdDsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfTUtGSUZPQVQKKyAgICAgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgICAgIHJlc3VsdCA9IG1rZmlmb2F0KGRpcl9mZCwgcGF0aC0+bmFycm93LCBtb2RlKTsKKyAgICAgICAgZWxzZQogI2VuZGlmCisgICAgICAgICAgICByZXN1bHQgPSBta2ZpZm8ocGF0aC0+bmFycm93LCBtb2RlKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXN1bHQgIT0gMCAmJiBlcnJubyA9PSBFSU5UUiAmJgorICAgICAgICAgICAgICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmIC8qIEhBVkVfTUtGSUZPICovCisKKworI2lmIGRlZmluZWQoSEFWRV9NS05PRCkgJiYgZGVmaW5lZChIQVZFX01BS0VERVYpCisvKltjbGluaWMgaW5wdXRdCitvcy5ta25vZAorCisgICAgcGF0aDogcGF0aF90CisgICAgbW9kZTogaW50PTBvNjAwCisgICAgZGV2aWNlOiBkZXZfdD0wCisgICAgKgorICAgIGRpcl9mZDogZGlyX2ZkKHJlcXVpcmVzPSdta25vZGF0Jyk9Tm9uZQorCitDcmVhdGUgYSBub2RlIGluIHRoZSBmaWxlIHN5c3RlbS4KKworQ3JlYXRlIGEgbm9kZSBpbiB0aGUgZmlsZSBzeXN0ZW0gKGZpbGUsIGRldmljZSBzcGVjaWFsIGZpbGUgb3IgbmFtZWQgcGlwZSkKK2F0IHBhdGguICBtb2RlIHNwZWNpZmllcyBib3RoIHRoZSBwZXJtaXNzaW9ucyB0byB1c2UgYW5kIHRoZQordHlwZSBvZiBub2RlIHRvIGJlIGNyZWF0ZWQsIGJlaW5nIGNvbWJpbmVkIChiaXR3aXNlIE9SKSB3aXRoIG9uZSBvZgorU19JRlJFRywgU19JRkNIUiwgU19JRkJMSywgYW5kIFNfSUZJRk8uICBJZiBTX0lGQ0hSIG9yIFNfSUZCTEsgaXMgc2V0IG9uIG1vZGUsCitkZXZpY2UgZGVmaW5lcyB0aGUgbmV3bHkgY3JlYXRlZCBkZXZpY2Ugc3BlY2lhbCBmaWxlIChwcm9iYWJseSB1c2luZworb3MubWFrZWRldigpKS4gIE90aGVyd2lzZSBkZXZpY2UgaXMgaWdub3JlZC4KKworSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX21rbm9kX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgZGV2X3QgZGV2aWNlLAorICAgICAgICAgICAgICBpbnQgZGlyX2ZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUxNTFhOGE5Zjc1NGQyNzIgaW5wdXQ9ZWU0NDUzMTU1MWE0ZDgzYl0qLworeworICAgIGludCByZXN1bHQ7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CisKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBIQVZFX01LTk9EQVQKKyAgICAgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgICAgIHJlc3VsdCA9IG1rbm9kYXQoZGlyX2ZkLCBwYXRoLT5uYXJyb3csIG1vZGUsIGRldmljZSk7CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgcmVzdWx0ID0gbWtub2QocGF0aC0+bmFycm93LCBtb2RlLCBkZXZpY2UpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlc3VsdCAhPSAwICYmIGVycm5vID09IEVJTlRSICYmCisgICAgICAgICAgICAgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IHBvc2l4X2Vycm9yKCkgOiBOVUxMOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYgLyogZGVmaW5lZChIQVZFX01LTk9EKSAmJiBkZWZpbmVkKEhBVkVfTUFLRURFVikgKi8KKworCisjaWZkZWYgSEFWRV9ERVZJQ0VfTUFDUk9TCisvKltjbGluaWMgaW5wdXRdCitvcy5tYWpvciAtPiB1bnNpZ25lZF9pbnQKKworICAgIGRldmljZTogZGV2X3QKKyAgICAvCisKK0V4dHJhY3RzIGEgZGV2aWNlIG1ham9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyB1bnNpZ25lZCBpbnQKK29zX21ham9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgZGV2X3QgZGV2aWNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJhNTU2OTNhYjQ5YmFjMzQgaW5wdXQ9MWUxNmE0ZDMwYzRkNDQ2Ml0qLworeworICAgIHJldHVybiBtYWpvcihkZXZpY2UpOworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLm1pbm9yIC0+IHVuc2lnbmVkX2ludAorCisgICAgZGV2aWNlOiBkZXZfdAorICAgIC8KKworRXh0cmFjdHMgYSBkZXZpY2UgbWlub3IgbnVtYmVyIGZyb20gYSByYXcgZGV2aWNlIG51bWJlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIHVuc2lnbmVkIGludAorb3NfbWlub3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBkZXZfdCBkZXZpY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjg2NzIxOWViZjI3NGUyNyBpbnB1dD0wODQyYzZkMjNmMjRjNjVlXSovCit7CisgICAgcmV0dXJuIG1pbm9yKGRldmljZSk7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorb3MubWFrZWRldiAtPiBkZXZfdAorCisgICAgbWFqb3I6IGludAorICAgIG1pbm9yOiBpbnQKKyAgICAvCisKK0NvbXBvc2VzIGEgcmF3IGRldmljZSBudW1iZXIgZnJvbSB0aGUgbWFqb3IgYW5kIG1pbm9yIGRldmljZSBudW1iZXJzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgZGV2X3QKK29zX21ha2VkZXZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbWFqb3IsIGludCBtaW5vcikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03Y2I2MjY0MzUyNDM3NjYwIGlucHV0PTRiOWZkOGZjNzNjYmU0OGZdKi8KK3sKKyAgICByZXR1cm4gbWFrZWRldihtYWpvciwgbWlub3IpOworfQorI2VuZGlmIC8qIEhBVkVfREVWSUNFX01BQ1JPUyAqLworCisKKyNpZiBkZWZpbmVkIEhBVkVfRlRSVU5DQVRFIHx8IGRlZmluZWQgTVNfV0lORE9XUworLypbY2xpbmljIGlucHV0XQorb3MuZnRydW5jYXRlCisKKyAgICBmZDogaW50CisgICAgbGVuZ3RoOiBQeV9vZmZfdAorICAgIC8KKworVHJ1bmNhdGUgYSBmaWxlLCBzcGVjaWZpZWQgYnkgZmlsZSBkZXNjcmlwdG9yLCB0byBhIHNwZWNpZmljIGxlbmd0aC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Z0cnVuY2F0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfb2ZmX3QgbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM2NjZmNDAxZDc2YmY4MzQgaW5wdXQ9NjNiNDM2NDFlNTI4MThmMl0qLworeworICAgIGludCByZXN1bHQ7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CisKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIHJlc3VsdCA9IF9jaHNpemVfcyhmZCwgbGVuZ3RoKTsKKyNlbHNlCisgICAgICAgIHJlc3VsdCA9IGZ0cnVuY2F0ZShmZCwgbGVuZ3RoKTsKKyNlbmRpZgorICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlc3VsdCAhPSAwICYmIGVycm5vID09IEVJTlRSICYmCisgICAgICAgICAgICAgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IHBvc2l4X2Vycm9yKCkgOiBOVUxMOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmIC8qIEhBVkVfRlRSVU5DQVRFIHx8IE1TX1dJTkRPV1MgKi8KKworCisjaWYgZGVmaW5lZCBIQVZFX1RSVU5DQVRFIHx8IGRlZmluZWQgTVNfV0lORE9XUworLypbY2xpbmljIGlucHV0XQorb3MudHJ1bmNhdGUKKyAgICBwYXRoOiBwYXRoX3QoYWxsb3dfZmQ9J1BBVEhfSEFWRV9GVFJVTkNBVEUnKQorICAgIGxlbmd0aDogUHlfb2ZmX3QKKworVHJ1bmNhdGUgYSBmaWxlLCBzcGVjaWZpZWQgYnkgcGF0aCwgdG8gYSBzcGVjaWZpYyBsZW5ndGguCisKK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdHJ1bmNhdGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIFB5X29mZl90IGxlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNjBhOWUwODM3MGU5ZTJlIGlucHV0PTc3MjI5Y2YwYjUwYTliNzddKi8KK3sKKyAgICBpbnQgcmVzdWx0OworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpbnQgZmQ7CisjZW5kaWYKKworICAgIGlmIChwYXRoLT5mZCAhPSAtMSkKKyAgICAgICAgcmV0dXJuIG9zX2Z0cnVuY2F0ZV9pbXBsKG1vZHVsZSwgcGF0aC0+ZmQsIGxlbmd0aCk7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAocGF0aC0+d2lkZSkKKyAgICAgICAgZmQgPSBfd29wZW4ocGF0aC0+d2lkZSwgX09fV1JPTkxZIHwgX09fQklOQVJZIHwgX09fTk9JTkhFUklUKTsKKyAgICBlbHNlCisgICAgICAgIGZkID0gX29wZW4ocGF0aC0+bmFycm93LCBfT19XUk9OTFkgfCBfT19CSU5BUlkgfCBfT19OT0lOSEVSSVQpOworICAgIGlmIChmZCA8IDApCisgICAgICAgIHJlc3VsdCA9IC0xOworICAgIGVsc2UgeworICAgICAgICByZXN1bHQgPSBfY2hzaXplX3MoZmQsIGxlbmd0aCk7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgICAgICBlcnJubyA9IHJlc3VsdDsKKyAgICB9CisjZWxzZQorICAgIHJlc3VsdCA9IHRydW5jYXRlKHBhdGgtPm5hcnJvdywgbGVuZ3RoKTsKKyNlbmRpZgorICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZiAvKiBIQVZFX1RSVU5DQVRFIHx8IE1TX1dJTkRPV1MgKi8KKwogCiAvKiBJc3N1ZSAjMjIzOTY6IE9uIDMyLWJpdCBBSVggcGxhdGZvcm0sIHRoZSBwcm90b3R5cGVzIG9mIG9zLnBvc2l4X2ZhZHZpc2UoKQogICAgYW5kIG9zLnBvc2l4X2ZhbGxvY2F0ZSgpIGluIHN5c3RlbSBoZWFkZXJzIGFyZSB3cm9uZyBpZiBfTEFSR0VfRklMRVMgaXMKQEAgLTg4MzYsMTg2ICs4OTAxLDIxMSBAQAogIyAgZGVmaW5lIFBPU0lYX0ZBRFZJU0VfQUlYX0JVRwogI2VuZGlmCiAKKwogI2lmIGRlZmluZWQoSEFWRV9QT1NJWF9GQUxMT0NBVEUpICYmICFkZWZpbmVkKFBPU0lYX0ZBRFZJU0VfQUlYX0JVRykKLVB5RG9jX1NUUlZBUihwb3NpeF9wb3NpeF9mYWxsb2NhdGVfX2RvY19fLAotInBvc2l4X2ZhbGxvY2F0ZShmZCwgb2Zmc2V0LCBsZW4pXG5cblwKLUVuc3VyZXMgdGhhdCBlbm91Z2ggZGlzayBzcGFjZSBpcyBhbGxvY2F0ZWQgZm9yIHRoZSBmaWxlIHNwZWNpZmllZCBieSBmZFxuXAotc3RhcnRpbmcgZnJvbSBvZmZzZXQgYW5kIGNvbnRpbnVpbmcgZm9yIGxlbiBieXRlcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnBvc2l4X2ZhbGxvY2F0ZQorCisgICAgZmQ6IGludAorICAgIG9mZnNldDogUHlfb2ZmX3QKKyAgICBsZW5ndGg6IFB5X29mZl90CisgICAgLworCitFbnN1cmUgYSBmaWxlIGhhcyBhbGxvY2F0ZWQgYXQgbGVhc3QgYSBwYXJ0aWN1bGFyIG51bWJlciBvZiBieXRlcyBvbiBkaXNrLgorCitFbnN1cmUgdGhhdCB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgZmQgZW5jb21wYXNzZXMgYSByYW5nZSBvZiBieXRlcworc3RhcnRpbmcgYXQgb2Zmc2V0IGJ5dGVzIGZyb20gdGhlIGJlZ2lubmluZyBhbmQgY29udGludWluZyBmb3IgbGVuZ3RoIGJ5dGVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcG9zaXhfZmFsbG9jYXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3Bvc2l4X2ZhbGxvY2F0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfb2ZmX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfb2ZmX3QgbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmNmY4N2E4Yzc1MWUxYjQgaW5wdXQ9ZDdhMmVmMGFiMmNhNTJmYl0qLwogewotICAgIG9mZl90IGxlbiwgb2Zmc2V0OwotICAgIGludCByZXMsIGZkOworICAgIGludCByZXN1bHQ7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk8mOnBvc2l4X2ZhbGxvY2F0ZSIsCi0gICAgICAgICAgICAmZmQsIF9wYXJzZV9vZmZfdCwgJm9mZnNldCwgX3BhcnNlX29mZl90LCAmbGVuKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gcG9zaXhfZmFsbG9jYXRlKGZkLCBvZmZzZXQsIGxlbik7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzICE9IDApIHsKLSAgICAgICAgZXJybm8gPSByZXM7Ci0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIH0KKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmVzdWx0ID0gcG9zaXhfZmFsbG9jYXRlKGZkLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmVzdWx0ICE9IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYKKyAgICAgICAgICAgICAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1BPU0lYX0ZBTExPQ0FURSkgJiYgIVBPU0lYX0ZBRFZJU0VfQUlYX0JVRyAqLworCiAKICNpZiBkZWZpbmVkKEhBVkVfUE9TSVhfRkFEVklTRSkgJiYgIWRlZmluZWQoUE9TSVhfRkFEVklTRV9BSVhfQlVHKQotUHlEb2NfU1RSVkFSKHBvc2l4X3Bvc2l4X2ZhZHZpc2VfX2RvY19fLAotInBvc2l4X2ZhZHZpc2UoZmQsIG9mZnNldCwgbGVuLCBhZHZpY2UpXG5cblwKLUFubm91bmNlcyBhbiBpbnRlbnRpb24gdG8gYWNjZXNzIGRhdGEgaW4gYSBzcGVjaWZpYyBwYXR0ZXJuIHRodXMgYWxsb3dpbmdcblwKLXRoZSBrZXJuZWwgdG8gbWFrZSBvcHRpbWl6YXRpb25zLlxuXAotVGhlIGFkdmljZSBhcHBsaWVzIHRvIHRoZSByZWdpb24gb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZkIHN0YXJ0aW5nIGF0XG5cCi1vZmZzZXQgYW5kIGNvbnRpbnVpbmcgZm9yIGxlbiBieXRlcy5cblwKLWFkdmljZSBpcyBvbmUgb2YgUE9TSVhfRkFEVl9OT1JNQUwsIFBPU0lYX0ZBRFZfU0VRVUVOVElBTCxcblwKLVBPU0lYX0ZBRFZfUkFORE9NLCBQT1NJWF9GQURWX05PUkVVU0UsIFBPU0lYX0ZBRFZfV0lMTE5FRUQgb3JcblwKLVBPU0lYX0ZBRFZfRE9OVE5FRUQuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5wb3NpeF9mYWR2aXNlCisKKyAgICBmZDogaW50CisgICAgb2Zmc2V0OiBQeV9vZmZfdAorICAgIGxlbmd0aDogUHlfb2ZmX3QKKyAgICBhZHZpY2U6IGludAorICAgIC8KKworQW5ub3VuY2UgYW4gaW50ZW50aW9uIHRvIGFjY2VzcyBkYXRhIGluIGEgc3BlY2lmaWMgcGF0dGVybi4KKworQW5ub3VuY2UgYW4gaW50ZW50aW9uIHRvIGFjY2VzcyBkYXRhIGluIGEgc3BlY2lmaWMgcGF0dGVybiwgdGh1cyBhbGxvd2luZwordGhlIGtlcm5lbCB0byBtYWtlIG9wdGltaXphdGlvbnMuCitUaGUgYWR2aWNlIGFwcGxpZXMgdG8gdGhlIHJlZ2lvbiBvZiB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgZmQgc3RhcnRpbmcgYXQKK29mZnNldCBhbmQgY29udGludWluZyBmb3IgbGVuZ3RoIGJ5dGVzLgorYWR2aWNlIGlzIG9uZSBvZiBQT1NJWF9GQURWX05PUk1BTCwgUE9TSVhfRkFEVl9TRVFVRU5USUFMLAorUE9TSVhfRkFEVl9SQU5ET00sIFBPU0lYX0ZBRFZfTk9SRVVTRSwgUE9TSVhfRkFEVl9XSUxMTkVFRCwgb3IKK1BPU0lYX0ZBRFZfRE9OVE5FRUQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9wb3NpeF9mYWR2aXNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3Bvc2l4X2ZhZHZpc2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIFB5X29mZl90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICBQeV9vZmZfdCBsZW5ndGgsIGludCBhZHZpY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDU3Y2U2YTY3MTg5ZTEwZCBpbnB1dD0wZmJlNTU0ZWRjMmYwNGI1XSovCiB7Ci0gICAgb2ZmX3QgbGVuLCBvZmZzZXQ7Ci0gICAgaW50IHJlcywgZmQsIGFkdmljZTsKKyAgICBpbnQgcmVzdWx0OworICAgIGludCBhc3luY19lcnIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJmk6cG9zaXhfZmFkdmlzZSIsCi0gICAgICAgICAgICAmZmQsIF9wYXJzZV9vZmZfdCwgJm9mZnNldCwgX3BhcnNlX29mZl90LCAmbGVuLCAmYWR2aWNlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gcG9zaXhfZmFkdmlzZShmZCwgb2Zmc2V0LCBsZW4sIGFkdmljZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzICE9IDApIHsKLSAgICAgICAgZXJybm8gPSByZXM7Ci0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIH0KKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmVzdWx0ID0gcG9zaXhfZmFkdmlzZShmZCwgb2Zmc2V0LCBsZW5ndGgsIGFkdmljZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmVzdWx0ICE9IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYKKyAgICAgICAgICAgICAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1BPU0lYX0ZBRFZJU0UgJiYgIVBPU0lYX0ZBRFZJU0VfQUlYX0JVRyAqLwogCiAjaWZkZWYgSEFWRV9QVVRFTlYKLVB5RG9jX1NUUlZBUihwb3NpeF9wdXRlbnZfX2RvY19fLAotInB1dGVudihrZXksIHZhbHVlKVxuXG5cCi1DaGFuZ2Ugb3IgYWRkIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLiIpOwogCiAvKiBTYXZlIHB1dGVudigpIHBhcmFtZXRlcnMgYXMgdmFsdWVzIGhlcmUsIHNvIHdlIGNhbiBjb2xsZWN0IHRoZW0gd2hlbiB0aGV5CiAgKiBnZXQgcmUtc2V0IHdpdGggYW5vdGhlciBjYWxsIGZvciB0aGUgc2FtZSBrZXkuICovCiBzdGF0aWMgUHlPYmplY3QgKnBvc2l4X3B1dGVudl9nYXJiYWdlOwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcHV0ZW52KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3N0YXRpYyB2b2lkCitwb3NpeF9wdXRlbnZfZ2FyYmFnZV9zZXRpdGVtKFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKm5ld3N0ciA9IE5VTEw7CisgICAgLyogSW5zdGFsbCB0aGUgZmlyc3QgYXJnIGFuZCBuZXdzdHIgaW4gcG9zaXhfcHV0ZW52X2dhcmJhZ2U7CisgICAgICogdGhpcyB3aWxsIGNhdXNlIHByZXZpb3VzIHZhbHVlIHRvIGJlIGNvbGxlY3RlZC4gIFRoaXMgaGFzIHRvCisgICAgICogaGFwcGVuIGFmdGVyIHRoZSByZWFsIHB1dGVudigpIGNhbGwgYmVjYXVzZSB0aGUgb2xkIHZhbHVlCisgICAgICogd2FzIHN0aWxsIGFjY2Vzc2libGUgdW50aWwgdGhlbi4gKi8KKyAgICBpZiAoUHlEaWN0X1NldEl0ZW0ocG9zaXhfcHV0ZW52X2dhcmJhZ2UsIG5hbWUsIHZhbHVlKSkKKyAgICAgICAgLyogcmVhbGx5IG5vdCBtdWNoIHdlIGNhbiBkbzsganVzdCBsZWFrICovCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgZWxzZQorICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworfQorCisKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgUHlPYmplY3QgKm9zMSwgKm9zMjsKLSAgICB3Y2hhcl90ICpuZXdlbnY7CisvKltjbGluaWMgaW5wdXRdCitvcy5wdXRlbnYKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVVU6cHV0ZW52IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9zMSwgJm9zMikpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIG5hbWU6IHVuaWNvZGUKKyAgICB2YWx1ZTogdW5pY29kZQorICAgIC8KIAotICAgIG5ld3N0ciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVT0lVSIsIG9zMSwgb3MyKTsKLSAgICBpZiAobmV3c3RyID09IE5VTEwpIHsKK0NoYW5nZSBvciBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wdXRlbnZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWEyNDM4Y2Y5NWU1YTBjMWMgaW5wdXQ9YmE1ODY1ODFjMmU2MTA1Zl0qLworeworICAgIHdjaGFyX3QgKmVudjsKKworICAgIFB5T2JqZWN0ICp1bmljb2RlID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVPSVVIiwgbmFtZSwgdmFsdWUpOworICAgIGlmICh1bmljb2RlID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChfTUFYX0VOViA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5ld3N0cikpIHsKKyAgICBpZiAoX01BWF9FTlYgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbG9uZ2VyIHRoYW4gJXUgY2hhcmFjdGVycyIsCiAgICAgICAgICAgICAgICAgICAgICBfTUFYX0VOVik7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCi0gICAgbmV3ZW52ID0gUHlVbmljb2RlX0FzVW5pY29kZShuZXdzdHIpOwotICAgIGlmIChuZXdlbnYgPT0gTlVMTCkKKyAgICBlbnYgPSBQeVVuaWNvZGVfQXNVbmljb2RlKHVuaWNvZGUpOworICAgIGlmIChlbnYgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICBpZiAoX3dwdXRlbnYobmV3ZW52KSkgeworICAgIGlmIChfd3B1dGVudihlbnYpKSB7CiAgICAgICAgIHBvc2l4X2Vycm9yKCk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotI2Vsc2UKLSAgICBQeU9iamVjdCAqb3MxLCAqb3MyOwotICAgIGNoYXIgKnMxLCAqczI7Ci0gICAgY2hhciAqbmV3ZW52OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJPJk8mOnB1dGVudiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3MyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgczEgPSBQeUJ5dGVzX0FzU3RyaW5nKG9zMSk7Ci0gICAgczIgPSBQeUJ5dGVzX0FzU3RyaW5nKG9zMik7Ci0KLSAgICBuZXdzdHIgPSBQeUJ5dGVzX0Zyb21Gb3JtYXQoIiVzPSVzIiwgczEsIHMyKTsKLSAgICBpZiAobmV3c3RyID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICBuZXdlbnYgPSBQeUJ5dGVzX0FTX1NUUklORyhuZXdzdHIpOwotICAgIGlmIChwdXRlbnYobmV3ZW52KSkgewotICAgICAgICBwb3NpeF9lcnJvcigpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSNlbmRpZgotCi0gICAgLyogSW5zdGFsbCB0aGUgZmlyc3QgYXJnIGFuZCBuZXdzdHIgaW4gcG9zaXhfcHV0ZW52X2dhcmJhZ2U7Ci0gICAgICogdGhpcyB3aWxsIGNhdXNlIHByZXZpb3VzIHZhbHVlIHRvIGJlIGNvbGxlY3RlZC4gIFRoaXMgaGFzIHRvCi0gICAgICogaGFwcGVuIGFmdGVyIHRoZSByZWFsIHB1dGVudigpIGNhbGwgYmVjYXVzZSB0aGUgb2xkIHZhbHVlCi0gICAgICogd2FzIHN0aWxsIGFjY2Vzc2libGUgdW50aWwgdGhlbi4gKi8KLSAgICBpZiAoUHlEaWN0X1NldEl0ZW0ocG9zaXhfcHV0ZW52X2dhcmJhZ2UsIG9zMSwgbmV3c3RyKSkgewotICAgICAgICAvKiByZWFsbHkgbm90IG11Y2ggd2UgY2FuIGRvOyBqdXN0IGxlYWsgKi8KLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5X0RFQ1JFRihuZXdzdHIpOwotICAgIH0KLQotI2lmbmRlZiBNU19XSU5ET1dTCi0gICAgUHlfREVDUkVGKG9zMSk7Ci0gICAgUHlfREVDUkVGKG9zMik7Ci0jZW5kaWYKKyAgICBwb3NpeF9wdXRlbnZfZ2FyYmFnZV9zZXRpdGVtKG5hbWUsIHVuaWNvZGUpOwogICAgIFB5X1JFVFVSTl9OT05FOwogCiBlcnJvcjoKLSNpZm5kZWYgTVNfV0lORE9XUwotICAgIFB5X0RFQ1JFRihvczEpOwotICAgIFB5X0RFQ1JFRihvczIpOwotI2VuZGlmCi0gICAgUHlfWERFQ1JFRihuZXdzdHIpOworICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKICAgICByZXR1cm4gTlVMTDsKIH0KLSNlbmRpZiAvKiBwdXRlbnYgKi8KKyNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KKy8qW2NsaW5pYyBpbnB1dF0KK29zLnB1dGVudgogCi0jaWZkZWYgSEFWRV9VTlNFVEVOVgotUHlEb2NfU1RSVkFSKHBvc2l4X3Vuc2V0ZW52X19kb2NfXywKLSJ1bnNldGVudihrZXkpXG5cblwKLURlbGV0ZSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4iKTsKKyAgICBuYW1lOiBGU0NvbnZlcnRlcgorICAgIHZhbHVlOiBGU0NvbnZlcnRlcgorICAgIC8KKworQ2hhbmdlIG9yIGFkZCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3Vuc2V0ZW52KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3B1dGVudl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTI0MzhjZjk1ZTVhMGMxYyBpbnB1dD1hOTdiYzYxNTJmNjg4ZDMxXSovCiB7Ci0gICAgUHlPYmplY3QgKm5hbWU7CisgICAgUHlPYmplY3QgKmJ5dGVzID0gTlVMTDsKKyAgICBjaGFyICplbnY7CisgICAgY2hhciAqbmFtZV9zdHJpbmcgPSBQeUJ5dGVzX0FzU3RyaW5nKG5hbWUpOworICAgIGNoYXIgKnZhbHVlX3N0cmluZyA9IFB5Qnl0ZXNfQXNTdHJpbmcodmFsdWUpOworCisgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21Gb3JtYXQoIiVzPSVzIiwgbmFtZV9zdHJpbmcsIHZhbHVlX3N0cmluZyk7CisgICAgaWYgKGJ5dGVzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZW52ID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOworICAgIGlmIChwdXRlbnYoZW52KSkgeworICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisKKyAgICBwb3NpeF9wdXRlbnZfZ2FyYmFnZV9zZXRpdGVtKG5hbWUsIGJ5dGVzKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCisjZW5kaWYgLyogSEFWRV9QVVRFTlYgKi8KKworCisjaWZkZWYgSEFWRV9VTlNFVEVOVgorLypbY2xpbmljIGlucHV0XQorb3MudW5zZXRlbnYKKyAgICBuYW1lOiBGU0NvbnZlcnRlcgorICAgIC8KKworRGVsZXRlIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdW5zZXRlbnZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNTk5NGI1NzAxNmEyZGM5IGlucHV0PTJiYjUyODhhNTk5YzcxMDddKi8KK3sKICNpZm5kZWYgSEFWRV9CUk9LRU5fVU5TRVRFTlYKICAgICBpbnQgZXJyOwogI2VuZGlmCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOnVuc2V0ZW52IiwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZuYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICNpZmRlZiBIQVZFX0JST0tFTl9VTlNFVEVOVgogICAgIHVuc2V0ZW52KFB5Qnl0ZXNfQVNfU1RSSU5HKG5hbWUpKTsKICNlbHNlCiAgICAgZXJyID0gdW5zZXRlbnYoUHlCeXRlc19BU19TVFJJTkcobmFtZSkpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgIGlmIChlcnIpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIH0KICNlbmRpZgogCiAgICAgLyogUmVtb3ZlIHRoZSBrZXkgZnJvbSBwb3NpeF9wdXRlbnZfZ2FyYmFnZTsKQEAgLTkwMjcsMjMgKzkxMTcsMjUgQEAKICAgICAgICAgLyogcmVhbGx5IG5vdCBtdWNoIHdlIGNhbiBkbzsganVzdCBsZWFrICovCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgfQotICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KLSNlbmRpZiAvKiB1bnNldGVudiAqLworI2VuZGlmIC8qIEhBVkVfVU5TRVRFTlYgKi8KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3N0cmVycm9yX19kb2NfXywKLSJzdHJlcnJvcihjb2RlKSAtPiBzdHJpbmdcblxuXAotVHJhbnNsYXRlIGFuIGVycm9yIGNvZGUgdG8gYSBtZXNzYWdlIHN0cmluZy4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3Muc3RyZXJyb3IKKworICAgIGNvZGU6IGludAorICAgIC8KKworVHJhbnNsYXRlIGFuIGVycm9yIGNvZGUgdG8gYSBtZXNzYWdlIHN0cmluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3N0cmVycm9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3N0cmVycm9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGNvZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDI4MGM2YWY1MWU1YzlmZSBpbnB1dD03NWE4NjczZDk3OTE1YTkxXSovCiB7Ci0gICAgaW50IGNvZGU7Ci0gICAgY2hhciAqbWVzc2FnZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6c3RyZXJyb3IiLCAmY29kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIG1lc3NhZ2UgPSBzdHJlcnJvcihjb2RlKTsKKyAgICBjaGFyICptZXNzYWdlID0gc3RyZXJyb3IoY29kZSk7CiAgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJlcnJvcigpIGFyZ3VtZW50IG91dCBvZiByYW5nZSIpOwpAQCAtOTA1NCwxNTUgKzkxNDYsMTY4IEBACiAKIAogI2lmZGVmIEhBVkVfU1lTX1dBSVRfSAotCiAjaWZkZWYgV0NPUkVEVU1QCi1QeURvY19TVFJWQVIocG9zaXhfV0NPUkVEVU1QX19kb2NfXywKLSJXQ09SRURVTVAoc3RhdHVzKSAtPiBib29sXG5cblwKLVJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyAnc3RhdHVzJyB3YXMgZHVtcGVkIHRvIGEgY29yZSBmaWxlLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuV0NPUkVEVU1QIC0+IGJvb2wKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X1dDT1JFRFVNUChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgc3RhdHVzOiBpbnQKKyAgICAvCisKK1JldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgd2FzIGR1bXBlZCB0byBhIGNvcmUgZmlsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfV0NPUkVEVU1QX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMzRmNzBiYmU2M2ZiZjQxIGlucHV0PThiMDVlN2FiMzg1MjhkMDRdKi8KIHsKLSAgICBXQUlUX1RZUEUgc3RhdHVzOwotICAgIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpXQ09SRURVTVAiLCAmV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoV0NPUkVEVU1QKHN0YXR1cykpOworICAgIFdBSVRfVFlQRSB3YWl0X3N0YXR1czsKKyAgICBXQUlUX1NUQVRVU19JTlQod2FpdF9zdGF0dXMpID0gc3RhdHVzOworICAgIHJldHVybiBXQ09SRURVTVAod2FpdF9zdGF0dXMpOwogfQogI2VuZGlmIC8qIFdDT1JFRFVNUCAqLwogCisKICNpZmRlZiBXSUZDT05USU5VRUQKLVB5RG9jX1NUUlZBUihwb3NpeF9XSUZDT05USU5VRURfX2RvY19fLAotIldJRkNPTlRJTlVFRChzdGF0dXMpIC0+IGJvb2xcblxuXAotUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nICdzdGF0dXMnIHdhcyBjb250aW51ZWQgZnJvbSBhXG5cCi1qb2IgY29udHJvbCBzdG9wLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuV0lGQ09OVElOVUVEIC0+IGJvb2wKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X1dJRkNPTlRJTlVFRChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgc3RhdHVzOiBpbnQKKworUmV0dXJuIFRydWUgaWYgYSBwYXJ0aWN1bGFyIHByb2Nlc3Mgd2FzIGNvbnRpbnVlZCBmcm9tIGEgam9iIGNvbnRyb2wgc3RvcC4KKworUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgY29udGludWVkIGZyb20gYQoram9iIGNvbnRyb2wgc3RvcC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfV0lGQ09OVElOVUVEX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05Y2RkMjY1NDNlYmI2ZGNkIGlucHV0PWU3NzdlN2QzOGViMjViZDldKi8KIHsKLSAgICBXQUlUX1RZUEUgc3RhdHVzOwotICAgIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpXQ09OVElOVUVEIiwgJldBSVRfU1RBVFVTX0lOVChzdGF0dXMpKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKFdJRkNPTlRJTlVFRChzdGF0dXMpKTsKKyAgICBXQUlUX1RZUEUgd2FpdF9zdGF0dXM7CisgICAgV0FJVF9TVEFUVVNfSU5UKHdhaXRfc3RhdHVzKSA9IHN0YXR1czsKKyAgICByZXR1cm4gV0lGQ09OVElOVUVEKHdhaXRfc3RhdHVzKTsKIH0KICNlbmRpZiAvKiBXSUZDT05USU5VRUQgKi8KIAorCiAjaWZkZWYgV0lGU1RPUFBFRAotUHlEb2NfU1RSVkFSKHBvc2l4X1dJRlNUT1BQRURfX2RvY19fLAotIldJRlNUT1BQRUQoc3RhdHVzKSAtPiBib29sXG5cblwKLVJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyAnc3RhdHVzJyB3YXMgc3RvcHBlZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLldJRlNUT1BQRUQgLT4gYm9vbAogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfV0lGU1RPUFBFRChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgc3RhdHVzOiBpbnQKKworUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgc3RvcHBlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfV0lGU1RPUFBFRF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzNiZjM1ZTQ0OTk0YTcyNCBpbnB1dD0wNDNjYjdmMTI4OWVmOTA0XSovCiB7Ci0gICAgV0FJVF9UWVBFIHN0YXR1czsKLSAgICBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6V0lGU1RPUFBFRCIsICZXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhXSUZTVE9QUEVEKHN0YXR1cykpOworICAgIFdBSVRfVFlQRSB3YWl0X3N0YXR1czsKKyAgICBXQUlUX1NUQVRVU19JTlQod2FpdF9zdGF0dXMpID0gc3RhdHVzOworICAgIHJldHVybiBXSUZTVE9QUEVEKHdhaXRfc3RhdHVzKTsKIH0KICNlbmRpZiAvKiBXSUZTVE9QUEVEICovCiAKKwogI2lmZGVmIFdJRlNJR05BTEVECi1QeURvY19TVFJWQVIocG9zaXhfV0lGU0lHTkFMRURfX2RvY19fLAotIldJRlNJR05BTEVEKHN0YXR1cykgLT4gYm9vbFxuXG5cCi1SZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgJ3N0YXR1cycgd2FzIHRlcm1pbmF0ZWQgYnkgYSBzaWduYWwuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5XSUZTSUdOQUxFRCAtPiBib29sCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9XSUZTSUdOQUxFRChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgc3RhdHVzOiBpbnQKKworUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgdGVybWluYXRlZCBieSBhIHNpZ25hbC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfV0lGU0lHTkFMRURfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI2OTc5NzU3NzE4NzI0MjAgaW5wdXQ9ZDU1YmE3Y2M5Y2U1ZGM0M10qLwogewotICAgIFdBSVRfVFlQRSBzdGF0dXM7Ci0gICAgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykgPSAwOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOldJRlNJR05BTEVEIiwgJldBSVRfU1RBVFVTX0lOVChzdGF0dXMpKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKFdJRlNJR05BTEVEKHN0YXR1cykpOworICAgIFdBSVRfVFlQRSB3YWl0X3N0YXR1czsKKyAgICBXQUlUX1NUQVRVU19JTlQod2FpdF9zdGF0dXMpID0gc3RhdHVzOworICAgIHJldHVybiBXSUZTSUdOQUxFRCh3YWl0X3N0YXR1cyk7CiB9CiAjZW5kaWYgLyogV0lGU0lHTkFMRUQgKi8KIAorCiAjaWZkZWYgV0lGRVhJVEVECi1QeURvY19TVFJWQVIocG9zaXhfV0lGRVhJVEVEX19kb2NfXywKLSJXSUZFWElURUQoc3RhdHVzKSAtPiBib29sXG5cblwKLVJldHVybiB0cnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyAnc3RhdHVzJyBleGl0ZWQgdXNpbmcgdGhlIGV4aXQoKVxuXAotc3lzdGVtIGNhbGwuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5XSUZFWElURUQgLT4gYm9vbAogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfV0lGRVhJVEVEKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAgICBzdGF0dXM6IGludAorCitSZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgc3RhdHVzIGV4aXRlZCB2aWEgdGhlIGV4aXQoKSBzeXN0ZW0gY2FsbC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfV0lGRVhJVEVEX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYThmOGM2MWYwYjg1MzJlIGlucHV0PWQ2Mzc3NWE2NzkxNTg2YzBdKi8KIHsKLSAgICBXQUlUX1RZUEUgc3RhdHVzOwotICAgIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpXSUZFWElURUQiLCAmV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoV0lGRVhJVEVEKHN0YXR1cykpOworICAgIFdBSVRfVFlQRSB3YWl0X3N0YXR1czsKKyAgICBXQUlUX1NUQVRVU19JTlQod2FpdF9zdGF0dXMpID0gc3RhdHVzOworICAgIHJldHVybiBXSUZFWElURUQod2FpdF9zdGF0dXMpOwogfQogI2VuZGlmIC8qIFdJRkVYSVRFRCAqLwogCisKICNpZmRlZiBXRVhJVFNUQVRVUwotUHlEb2NfU1RSVkFSKHBvc2l4X1dFWElUU1RBVFVTX19kb2NfXywKLSJXRVhJVFNUQVRVUyhzdGF0dXMpIC0+IGludGVnZXJcblxuXAotUmV0dXJuIHRoZSBwcm9jZXNzIHJldHVybiBjb2RlIGZyb20gJ3N0YXR1cycuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5XRVhJVFNUQVRVUyAtPiBpbnQKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X1dFWElUU1RBVFVTKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAgICBzdGF0dXM6IGludAorCitSZXR1cm4gdGhlIHByb2Nlc3MgcmV0dXJuIGNvZGUgZnJvbSBzdGF0dXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK29zX1dFWElUU1RBVFVTX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYTU0ZGEyM2Q5ZTBmNmFmIGlucHV0PWUxZmI0OTQ0ZTM3NzU4NWJdKi8KIHsKLSAgICBXQUlUX1RZUEUgc3RhdHVzOwotICAgIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpXRVhJVFNUQVRVUyIsICZXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBXRVhJVFNUQVRVUyhzdGF0dXMpKTsKKyAgICBXQUlUX1RZUEUgd2FpdF9zdGF0dXM7CisgICAgV0FJVF9TVEFUVVNfSU5UKHdhaXRfc3RhdHVzKSA9IHN0YXR1czsKKyAgICByZXR1cm4gV0VYSVRTVEFUVVMod2FpdF9zdGF0dXMpOwogfQogI2VuZGlmIC8qIFdFWElUU1RBVFVTICovCiAKKwogI2lmZGVmIFdURVJNU0lHCi1QeURvY19TVFJWQVIocG9zaXhfV1RFUk1TSUdfX2RvY19fLAotIldURVJNU0lHKHN0YXR1cykgLT4gaW50ZWdlclxuXG5cCi1SZXR1cm4gdGhlIHNpZ25hbCB0aGF0IHRlcm1pbmF0ZWQgdGhlIHByb2Nlc3MgdGhhdCBwcm92aWRlZCB0aGUgJ3N0YXR1cydcblwKLXZhbHVlLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuV1RFUk1TSUcgLT4gaW50CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9XVEVSTVNJRyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgc3RhdHVzOiBpbnQKKworUmV0dXJuIHRoZSBzaWduYWwgdGhhdCB0ZXJtaW5hdGVkIHRoZSBwcm9jZXNzIHRoYXQgcHJvdmlkZWQgdGhlIHN0YXR1cyB2YWx1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfV1RFUk1TSUdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRkMjUzNjcwMjZjYjg1MmMgaW5wdXQ9NzI3ZmQ3Zjg0ZWMzZjI0M10qLwogewotICAgIFdBSVRfVFlQRSBzdGF0dXM7Ci0gICAgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykgPSAwOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOldURVJNU0lHIiwgJldBSVRfU1RBVFVTX0lOVChzdGF0dXMpKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIFdURVJNU0lHKHN0YXR1cykpOworICAgIFdBSVRfVFlQRSB3YWl0X3N0YXR1czsKKyAgICBXQUlUX1NUQVRVU19JTlQod2FpdF9zdGF0dXMpID0gc3RhdHVzOworICAgIHJldHVybiBXVEVSTVNJRyh3YWl0X3N0YXR1cyk7CiB9CiAjZW5kaWYgLyogV1RFUk1TSUcgKi8KIAorCiAjaWZkZWYgV1NUT1BTSUcKLVB5RG9jX1NUUlZBUihwb3NpeF9XU1RPUFNJR19fZG9jX18sCi0iV1NUT1BTSUcoc3RhdHVzKSAtPiBpbnRlZ2VyXG5cblwKLVJldHVybiB0aGUgc2lnbmFsIHRoYXQgc3RvcHBlZCB0aGUgcHJvY2VzcyB0aGF0IHByb3ZpZGVkXG5cCi10aGUgJ3N0YXR1cycgdmFsdWUuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5XU1RPUFNJRyAtPiBpbnQKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X1dTVE9QU0lHKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAgICBzdGF0dXM6IGludAorCitSZXR1cm4gdGhlIHNpZ25hbCB0aGF0IHN0b3BwZWQgdGhlIHByb2Nlc3MgdGhhdCBwcm92aWRlZCB0aGUgc3RhdHVzIHZhbHVlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50Citvc19XU1RPUFNJR19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTRlYjljMTNiMDAxYWRiNCBpbnB1dD00NmViZjFkMWIyOTNjNWMxXSovCiB7Ci0gICAgV0FJVF9UWVBFIHN0YXR1czsKLSAgICBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6V1NUT1BTSUciLCAmV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpIiwgV1NUT1BTSUcoc3RhdHVzKSk7CisgICAgV0FJVF9UWVBFIHdhaXRfc3RhdHVzOworICAgIFdBSVRfU1RBVFVTX0lOVCh3YWl0X3N0YXR1cykgPSBzdGF0dXM7CisgICAgcmV0dXJuIFdTVE9QU0lHKHdhaXRfc3RhdHVzKTsKIH0KICNlbmRpZiAvKiBXU1RPUFNJRyAqLwotCiAjZW5kaWYgLyogSEFWRV9TWVNfV0FJVF9IICovCiAKIApAQCAtOTI1NywxMDQgKzkzNjIsMTAxIEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9mc3RhdHZmc19fZG9jX18sCi0iZnN0YXR2ZnMoZmQpIC0+IHN0YXR2ZnMgcmVzdWx0XG5cblwKLVBlcmZvcm0gYW4gZnN0YXR2ZnMgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIGZkLlxuXAotRXF1aXZhbGVudCB0byBzdGF0dmZzKGZkKS4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MuZnN0YXR2ZnMKKyAgICBmZDogaW50CisgICAgLworCitQZXJmb3JtIGFuIGZzdGF0dmZzIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBmZC4KKworRXF1aXZhbGVudCB0byBzdGF0dmZzKGZkKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2ZzdGF0dmZzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2ZzdGF0dmZzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU4NGE5NGE3NTQ0OTdhYzAgaW5wdXQ9ZDgxMjIyNDNhYzUwOTc1ZV0qLwogewotICAgIGludCBmZCwgcmVzOworICAgIGludCByZXN1bHQ7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAgICAgc3RydWN0IHN0YXR2ZnMgc3Q7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6ZnN0YXR2ZnMiLCAmZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gZnN0YXR2ZnMoZmQsICZzdCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzICE9IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXN1bHQgPSBmc3RhdHZmcyhmZCwgJnN0KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXN1bHQgIT0gMCAmJiBlcnJubyA9PSBFSU5UUiAmJgorICAgICAgICAgICAgICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKIAogICAgIHJldHVybiBfcHlzdGF0dmZzX2Zyb21zdHJ1Y3RzdGF0dmZzKHN0KTsKIH0KLSNlbmRpZiAvKiBIQVZFX0ZTVEFUVkZTICYmIEhBVkVfU1lTX1NUQVRWRlNfSCAqLworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9GU1RBVFZGUykgJiYgZGVmaW5lZChIQVZFX1NZU19TVEFUVkZTX0gpICovCiAKIAogI2lmIGRlZmluZWQoSEFWRV9TVEFUVkZTKSAmJiBkZWZpbmVkKEhBVkVfU1lTX1NUQVRWRlNfSCkKICNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgorLypbY2xpbmljIGlucHV0XQorb3Muc3RhdHZmcwogCi1QeURvY19TVFJWQVIocG9zaXhfc3RhdHZmc19fZG9jX18sCi0ic3RhdHZmcyhwYXRoKVxuXG5cCi1QZXJmb3JtIGEgc3RhdHZmcyBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC5cblwKLVxuXAotcGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cblwKLU9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLSAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOworICAgIHBhdGg6IHBhdGhfdChhbGxvd19mZD0nUEFUSF9IQVZFX0ZTVEFUVkZTJykKKworUGVyZm9ybSBhIHN0YXR2ZnMgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguCisKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3N0YXR2ZnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc3RhdHZmc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01Y2VkMDdhMmNmOTMxZjQxIGlucHV0PTNmNWMzNTc5MWM2NjliZDldKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OwotICAgIHBhdGhfdCBwYXRoOwogICAgIGludCByZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgc3RydWN0IHN0YXR2ZnMgc3Q7CiAKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gInN0YXR2ZnMiOwotI2lmZGVmIEhBVkVfRlNUQVRWRlMKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSNlbmRpZgotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOnN0YXR2ZnMiLCBrZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoCi0gICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIEhBVkVfRlNUQVRWRlMKLSAgICBpZiAocGF0aC5mZCAhPSAtMSkgeworICAgIGlmIChwYXRoLT5mZCAhPSAtMSkgewogI2lmZGVmIF9fQVBQTEVfXwogICAgICAgICAvKiBoYW5kbGUgd2Vhay1saW5raW5nIG9uIE1hYyBPUyBYIDEwLjMgKi8KICAgICAgICAgaWYgKGZzdGF0dmZzID09IE5VTEwpIHsKLSAgICAgICAgICAgIGZkX3NwZWNpZmllZCgic3RhdHZmcyIsIHBhdGguZmQpOwotICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgZmRfc3BlY2lmaWVkKCJzdGF0dmZzIiwgcGF0aC0+ZmQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICByZXN1bHQgPSBmc3RhdHZmcyhwYXRoLmZkLCAmc3QpOworICAgICAgICByZXN1bHQgPSBmc3RhdHZmcyhwYXRoLT5mZCwgJnN0KTsKICAgICB9CiAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgIHJlc3VsdCA9IHN0YXR2ZnMocGF0aC5uYXJyb3csICZzdCk7CisgICAgICAgIHJlc3VsdCA9IHN0YXR2ZnMocGF0aC0+bmFycm93LCAmc3QpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOwogICAgIH0KIAotICAgIHJldHVybl92YWx1ZSA9IF9weXN0YXR2ZnNfZnJvbXN0cnVjdHN0YXR2ZnMoc3QpOwotCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICByZXR1cm4gX3B5c3RhdHZmc19mcm9tc3RydWN0c3RhdHZmcyhzdCk7CiB9Ci0jZW5kaWYgLyogSEFWRV9TVEFUVkZTICovCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NUQVRWRlMpICYmIGRlZmluZWQoSEFWRV9TWVNfU1RBVFZGU19IKSAqLworCiAKICNpZmRlZiBNU19XSU5ET1dTCi1QeURvY19TVFJWQVIod2luMzJfX2dldGRpc2t1c2FnZV9fZG9jX18sCi0iX2dldGRpc2t1c2FnZShwYXRoKSAtPiAodG90YWwsIGZyZWUpXG5cblwKLVJldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGggYXMgKHRvdGFsLCBmcmVlKSB0dXBsZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLl9nZXRkaXNrdXNhZ2UKKworICAgIHBhdGg6IFB5X1VOSUNPREUKKworUmV0dXJuIGRpc2sgdXNhZ2Ugc3RhdGlzdGljcyBhYm91dCB0aGUgZ2l2ZW4gcGF0aCBhcyBhICh0b3RhbCwgZnJlZSkgdHVwbGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9fZ2V0ZGlza3VzYWdlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX19nZXRkaXNrdXNhZ2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9VTklDT0RFICpwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTYwYTljZjMzNDQ5ZGIxZGQgaW5wdXQ9NjQ1ODEzM2FlZDg5M2M3OF0qLwogewogICAgIEJPT0wgcmV0dmFsOwogICAgIFVMQVJHRV9JTlRFR0VSIF8sIHRvdGFsLCBmcmVlOwotICAgIGNvbnN0IHdjaGFyX3QgKnBhdGg7Ci0KLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1IiwgJnBhdGgpKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXR2YWwgPSBHZXREaXNrRnJlZVNwYWNlRXhXKHBhdGgsICZfLCAmdG90YWwsICZmcmVlKTsKQEAgLTkzNjQsNyArOTQ2Niw3IEBACiAKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKExMKSIsIHRvdGFsLlF1YWRQYXJ0LCBmcmVlLlF1YWRQYXJ0KTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogCiAvKiBUaGlzIGlzIHVzZWQgZm9yIGZwYXRoY29uZigpLCBwYXRoY29uZigpLCBjb25mc3RyKCkgYW5kIHN5c2NvbmYoKS4KQEAgLTk1MjEsODEgKzk2MjMsNzMgQEAKIH0KICNlbmRpZgogCisKICNpZmRlZiBIQVZFX0ZQQVRIQ09ORgotUHlEb2NfU1RSVkFSKHBvc2l4X2ZwYXRoY29uZl9fZG9jX18sCi0iZnBhdGhjb25mKGZkLCBuYW1lKSAtPiBpbnRlZ2VyXG5cblwKLVJldHVybiB0aGUgY29uZmlndXJhdGlvbiBsaW1pdCBuYW1lIGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkLlxuXAotSWYgdGhlcmUgaXMgbm8gbGltaXQsIHJldHVybiAtMS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZwYXRoY29uZiAtPiBsb25nCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9mcGF0aGNvbmYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIGZkOiBpbnQKKyAgICBuYW1lOiBwYXRoX2NvbmZuYW1lCisgICAgLworCitSZXR1cm4gdGhlIGNvbmZpZ3VyYXRpb24gbGltaXQgbmFtZSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciBmZC4KKworSWYgdGhlcmUgaXMgbm8gbGltaXQsIHJldHVybiAtMS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK29zX2ZwYXRoY29uZl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IG5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDgyYjI5MjJkNDQ0MWRlNyBpbnB1dD01OTQyYTAyNGQzNzc3ODEwXSovCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgaW50IG5hbWUsIGZkOworICAgIGxvbmcgbGltaXQ7CiAKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mOmZwYXRoY29uZiIsICZmZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb252X3BhdGhfY29uZm5hbWUsICZuYW1lKSkgewotICAgICAgICBsb25nIGxpbWl0OworICAgIGVycm5vID0gMDsKKyAgICBsaW1pdCA9IGZwYXRoY29uZihmZCwgbmFtZSk7CisgICAgaWYgKGxpbWl0ID09IC0xICYmIGVycm5vICE9IDApCisgICAgICAgIHBvc2l4X2Vycm9yKCk7CiAKLSAgICAgICAgZXJybm8gPSAwOwotICAgICAgICBsaW1pdCA9IGZwYXRoY29uZihmZCwgbmFtZSk7Ci0gICAgICAgIGlmIChsaW1pdCA9PSAtMSAmJiBlcnJubyAhPSAwKQotICAgICAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gUHlMb25nX0Zyb21Mb25nKGxpbWl0KTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gbGltaXQ7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0ZQQVRIQ09ORiAqLwogCiAKICNpZmRlZiBIQVZFX1BBVEhDT05GCi1QeURvY19TVFJWQVIocG9zaXhfcGF0aGNvbmZfX2RvY19fLAotInBhdGhjb25mKHBhdGgsIG5hbWUpIC0+IGludGVnZXJcblxuXAotUmV0dXJuIHRoZSBjb25maWd1cmF0aW9uIGxpbWl0IG5hbWUgZm9yIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBwYXRoLlxuXAotSWYgdGhlcmUgaXMgbm8gbGltaXQsIHJldHVybiAtMS5cblwKLU9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLSAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOworLypbY2xpbmljIGlucHV0XQorb3MucGF0aGNvbmYgLT4gbG9uZworICAgIHBhdGg6IHBhdGhfdChhbGxvd19mZD0nUEFUSF9IQVZFX0ZQQVRIQ09ORicpCisgICAgbmFtZTogcGF0aF9jb25mbmFtZQogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcGF0aGNvbmYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorUmV0dXJuIHRoZSBjb25maWd1cmF0aW9uIGxpbWl0IG5hbWUgZm9yIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBwYXRoLgorCitJZiB0aGVyZSBpcyBubyBsaW1pdCwgcmV0dXJuIC0xLgorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCitvc19wYXRoY29uZl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzcxMzAyOWU5NTAxZjVhYiBpbnB1dD1iYzNlMmE5ODVhZjI3ZTVlXSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgaW50IG5hbWU7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZSIsIE5VTEx9OwotCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJwYXRoY29uZiI7Ci0jaWZkZWYgSEFWRV9GUEFUSENPTkYKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSNlbmRpZgotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJjpwYXRoY29uZiIsIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpIHsKICAgICBsb25nIGxpbWl0OwogCiAgICAgZXJybm8gPSAwOwogI2lmZGVmIEhBVkVfRlBBVEhDT05GCi0gICAgaWYgKHBhdGguZmQgIT0gLTEpCi0gICAgICAgIGxpbWl0ID0gZnBhdGhjb25mKHBhdGguZmQsIG5hbWUpOworICAgIGlmIChwYXRoLT5mZCAhPSAtMSkKKyAgICAgICAgbGltaXQgPSBmcGF0aGNvbmYocGF0aC0+ZmQsIG5hbWUpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgICBsaW1pdCA9IHBhdGhjb25mKHBhdGgubmFycm93LCBuYW1lKTsKKyAgICAgICAgbGltaXQgPSBwYXRoY29uZihwYXRoLT5uYXJyb3csIG5hbWUpOwogICAgIGlmIChsaW1pdCA9PSAtMSAmJiBlcnJubyAhPSAwKSB7CiAgICAgICAgIGlmIChlcnJubyA9PSBFSU5WQUwpCiAgICAgICAgICAgICAvKiBjb3VsZCBiZSBhIHBhdGggb3IgbmFtZSBwcm9ibGVtICovCiAgICAgICAgICAgICBwb3NpeF9lcnJvcigpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBwYXRoX2Vycm9yKCZwYXRoKTsKKyAgICAgICAgICAgIHBhdGhfZXJyb3IocGF0aCk7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gUHlMb25nX0Zyb21Mb25nKGxpbWl0KTsKLSAgICB9Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICByZXR1cm4gcmVzdWx0OworCisgICAgcmV0dXJuIGxpbWl0OwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9QQVRIQ09ORiAqLwogCiAjaWZkZWYgSEFWRV9DT05GU1RSCiBzdGF0aWMgc3RydWN0IGNvbnN0ZGVmIHBvc2l4X2NvbnN0YW50c19jb25mc3RyW10gPSB7CkBAIC05NzU5LDIxICs5ODUzLDI0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIHNpemVvZihzdHJ1Y3QgY29uc3RkZWYpKTsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X2NvbmZzdHJfX2RvY19fLAotImNvbmZzdHIobmFtZSkgLT4gc3RyaW5nXG5cblwKLVJldHVybiBhIHN0cmluZy12YWx1ZWQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmNvbmZzdHIKKworICAgIG5hbWU6IGNvbmZzdHJfY29uZm5hbWUKKyAgICAvCisKK1JldHVybiBhIHN0cmluZy12YWx1ZWQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jb25mc3RyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2NvbmZzdHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZmY3OWM5ZWVkOGMyZGFmIGlucHV0PTE4ZmI0ZDA1NjcyNDJlNjVdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBpbnQgbmFtZTsKICAgICBjaGFyIGJ1ZmZlclsyNTVdOwogICAgIHNpemVfdCBsZW47CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmNvbmZzdHIiLCBjb252X2NvbmZzdHJfY29uZm5hbWUsICZuYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBlcnJubyA9IDA7CiAgICAgbGVuID0gY29uZnN0cihuYW1lLCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKICAgICBpZiAobGVuID09IDApIHsKQEAgLTk3ODcsMTggKzk4ODQsMjAgQEAKICAgICB9CiAKICAgICBpZiAobGVuID49IHNpemVvZihidWZmZXIpKSB7CisgICAgICAgIHNpemVfdCBsZW4yOwogICAgICAgICBjaGFyICpidWYgPSBQeU1lbV9NYWxsb2MobGVuKTsKICAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGNvbmZzdHIobmFtZSwgYnVmLCBsZW4pOwotICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShidWYsIGxlbi0xKTsKKyAgICAgICAgbGVuMiA9IGNvbmZzdHIobmFtZSwgYnVmLCBsZW4pOworICAgICAgICBhc3NlcnQobGVuID09IGxlbjIpOworICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShidWYsIGxlbjItMSk7CiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShidWZmZXIsIGxlbi0xKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9DT05GU1RSICovCiAKIAogI2lmZGVmIEhBVkVfU1lTQ09ORgpAQCAtMTAzMDUsMjkgKzEwNDA0LDI4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIHNpemVvZihzdHJ1Y3QgY29uc3RkZWYpKTsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3N5c2NvbmZfX2RvY19fLAotInN5c2NvbmYobmFtZSkgLT4gaW50ZWdlclxuXG5cCi1SZXR1cm4gYW4gaW50ZWdlci12YWx1ZWQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuIik7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zeXNjb25mKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnN5c2NvbmYgLT4gbG9uZworICAgIG5hbWU6IHN5c2NvbmZfY29uZm5hbWUKKyAgICAvCisKK1JldHVybiBhbiBpbnRlZ2VyLXZhbHVlZCBzeXN0ZW0gY29uZmlndXJhdGlvbiB2YXJpYWJsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK29zX3N5c2NvbmZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lZDU2NzMwNmY1OGQ2OWM0IGlucHV0PTI3OWUzNDMwYTMzZjI5ZTRdKi8KIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBpbnQgbmFtZTsKKyAgICBsb25nIHZhbHVlOwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOnN5c2NvbmYiLCBjb252X3N5c2NvbmZfY29uZm5hbWUsICZuYW1lKSkgewotICAgICAgICBsb25nIHZhbHVlOwotCi0gICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgdmFsdWUgPSBzeXNjb25mKG5hbWUpOwotICAgICAgICBpZiAodmFsdWUgPT0gLTEgJiYgZXJybm8gIT0gMCkKLSAgICAgICAgICAgIHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5TG9uZ19Gcm9tTG9uZyh2YWx1ZSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7CisgICAgZXJybm8gPSAwOworICAgIHZhbHVlID0gc3lzY29uZihuYW1lKTsKKyAgICBpZiAodmFsdWUgPT0gLTEgJiYgZXJybm8gIT0gMCkKKyAgICAgICAgcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1NZU0NPTkYgKi8KIAogCiAvKiBUaGlzIGNvZGUgaXMgdXNlZCB0byBlbnN1cmUgdGhhdCB0aGUgdGFibGVzIG9mIGNvbmZpZ3VyYXRpb24gdmFsdWUgbmFtZXMKQEAgLTEwNDA0LDEzICsxMDUwMiwxOCBAQAogfQogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9hYm9ydF9fZG9jX18sCi0iYWJvcnQoKSAtPiBkb2VzIG5vdCByZXR1cm4hXG5cblwKLUFib3J0IHRoZSBpbnRlcnByZXRlciBpbW1lZGlhdGVseS4gIFRoaXMgJ2R1bXBzIGNvcmUnIG9yIG90aGVyd2lzZSBmYWlsc1xuXAotaW4gdGhlIGhhcmRlc3Qgd2F5IHBvc3NpYmxlIG9uIHRoZSBob3N0aW5nIG9wZXJhdGluZyBzeXN0ZW0uIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5hYm9ydAorCitBYm9ydCB0aGUgaW50ZXJwcmV0ZXIgaW1tZWRpYXRlbHkuCisKK1RoaXMgZnVuY3Rpb24gJ2R1bXBzIGNvcmUnIG9yIG90aGVyd2lzZSBmYWlscyBpbiB0aGUgaGFyZGVzdCB3YXkgcG9zc2libGUKK29uIHRoZSBob3N0aW5nIG9wZXJhdGluZyBzeXN0ZW0uICBUaGlzIGZ1bmN0aW9uIG5ldmVyIHJldHVybnMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9hYm9ydChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2Fib3J0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ODZiYjk2NjQ3YzI5OWIzIGlucHV0PWNmMmM3ZDk4YmM1MDQwNDddKi8KIHsKICAgICBhYm9ydCgpOwogICAgIC8qTk9UUkVBQ0hFRCovCkBAIC0xMDQxOSw5ICsxMDUyMiwxMSBAQAogfQogCiAjaWZkZWYgTVNfV0lORE9XUworLyogQUMgMy41OiBjaGFuZ2UgdG8gcGF0aF90PyBidXQgdGhhdCBtaWdodCBjaGFuZ2UgZXhjZXB0aW9ucyAqLwogUHlEb2NfU1RSVkFSKHdpbjMyX3N0YXJ0ZmlsZV9fZG9jX18sCi0ic3RhcnRmaWxlKGZpbGVwYXRoIFssIG9wZXJhdGlvbl0pIC0gU3RhcnQgYSBmaWxlIHdpdGggaXRzIGFzc29jaWF0ZWRcblwKLWFwcGxpY2F0aW9uLlxuXAorInN0YXJ0ZmlsZShmaWxlcGF0aCBbLCBvcGVyYXRpb25dKVxuXAorXG5cCitTdGFydCBhIGZpbGUgd2l0aCBpdHMgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbi5cblwKIFxuXAogV2hlbiBcIm9wZXJhdGlvblwiIGlzIG5vdCBzcGVjaWZpZWQgb3IgXCJvcGVuXCIsIHRoaXMgYWN0cyBsaWtlXG5cCiBkb3VibGUtY2xpY2tpbmcgdGhlIGZpbGUgaW4gRXhwbG9yZXIsIG9yIGdpdmluZyB0aGUgZmlsZSBuYW1lIGFzIGFuXG5cCkBAIC0xMDQzOCw2ICsxMDU0MywzNyBAQAogYW4gYWJzb2x1dGUgcGF0aCwgbWFrZSBzdXJlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgbm90IGEgc2xhc2ggKFwiL1wiKTtcblwKIHRoZSB1bmRlcmx5aW5nIFdpbjMyIFNoZWxsRXhlY3V0ZSBmdW5jdGlvbiBkb2Vzbid0IHdvcmsgaWYgaXQgaXMuIik7CiAKKy8qIEdyYWIgU2hlbGxFeGVjdXRlIGR5bmFtaWNhbGx5IGZyb20gc2hlbGwzMiAqLworc3RhdGljIGludCBoYXNfU2hlbGxFeGVjdXRlID0gLTE7CitzdGF0aWMgSElOU1RBTkNFIChDQUxMQkFDSyAqUHlfU2hlbGxFeGVjdXRlQSkoSFdORCwgTFBDU1RSLCBMUENTVFIsIExQQ1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENTVFIsIElOVCk7CitzdGF0aWMgSElOU1RBTkNFIChDQUxMQkFDSyAqUHlfU2hlbGxFeGVjdXRlVykoSFdORCwgTFBDV1NUUiwgTFBDV1NUUiwgTFBDV1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENXU1RSLCBJTlQpOworc3RhdGljIGludAorY2hlY2tfU2hlbGxFeGVjdXRlKCkKK3sKKyAgICBISU5TVEFOQ0UgaFNoZWxsMzI7CisKKyAgICAvKiBvbmx5IHJlY2hlY2sgKi8KKyAgICBpZiAoLTEgPT0gaGFzX1NoZWxsRXhlY3V0ZSkgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGhTaGVsbDMyID0gTG9hZExpYnJhcnlXKEwiU0hFTEwzMiIpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAoaFNoZWxsMzIpIHsKKyAgICAgICAgICAgICooRkFSUFJPQyopJlB5X1NoZWxsRXhlY3V0ZUEgPSBHZXRQcm9jQWRkcmVzcyhoU2hlbGwzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoZWxsRXhlY3V0ZUEiKTsKKyAgICAgICAgICAgICooRkFSUFJPQyopJlB5X1NoZWxsRXhlY3V0ZVcgPSBHZXRQcm9jQWRkcmVzcyhoU2hlbGwzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoZWxsRXhlY3V0ZVciKTsKKyAgICAgICAgICAgIGhhc19TaGVsbEV4ZWN1dGUgPSBQeV9TaGVsbEV4ZWN1dGVBICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfU2hlbGxFeGVjdXRlVzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGhhc19TaGVsbEV4ZWN1dGUgPSAwOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBoYXNfU2hlbGxFeGVjdXRlOworfQorCisKIHN0YXRpYyBQeU9iamVjdCAqCiB3aW4zMl9zdGFydGZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTA0NDgsNiArMTA1ODQsMTQgQEAKICAgICBISU5TVEFOQ0UgcmM7CiAKICAgICBQeU9iamVjdCAqdW5pcGF0aCwgKnVvcGVyYXRpb24gPSBOVUxMOworCisgICAgaWYoIWNoZWNrX1NoZWxsRXhlY3V0ZSgpKSB7CisgICAgICAgIC8qIElmIHRoZSBPUyBkb2Vzbid0IGhhdmUgU2hlbGxFeGVjdXRlLCByZXR1cm4gYQorICAgICAgICAgICBOb3RJbXBsZW1lbnRlZEVycm9yLiAqLworICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAic3RhcnRmaWxlIG5vdCBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSIpOworICAgIH0KKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXxzOnN0YXJ0ZmlsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1bmlwYXRoLCAmb3BlcmF0aW9uKSkgewogICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMTA0NzYsOCArMTA2MjAsOCBAQAogICAgICAgICB3b3BlcmF0aW9uID0gTlVMTDsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByYyA9IFNoZWxsRXhlY3V0ZVcoKEhXTkQpMCwgd29wZXJhdGlvbiwgd3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIFNXX1NIT1dOT1JNQUwpOworICAgIHJjID0gUHlfU2hlbGxFeGVjdXRlVygoSFdORCkwLCB3b3BlcmF0aW9uLCB3cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgU1dfU0hPV05PUk1BTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIFB5X1hERUNSRUYodW9wZXJhdGlvbik7CkBAIC0xMDQ5OSw4ICsxMDY0Myw4IEBACiAgICAgfQogICAgIGZpbGVwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvZmlsZXBhdGgpOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByYyA9IFNoZWxsRXhlY3V0ZSgoSFdORCkwLCBvcGVyYXRpb24sIGZpbGVwYXRoLAotICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIFNXX1NIT1dOT1JNQUwpOworICAgIHJjID0gUHlfU2hlbGxFeGVjdXRlQSgoSFdORCkwLCBvcGVyYXRpb24sIGZpbGVwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyYyA8PSAoSElOU1RBTkNFKTMyKSB7CiAgICAgICAgIFB5T2JqZWN0ICplcnJ2YWwgPSB3aW4zMl9lcnJvcigic3RhcnRmaWxlIiwgZmlsZXBhdGgpOwpAQCAtMTA1MTEsMTcgKzEwNjU1LDIzIEBACiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQotI2VuZGlmCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworCiAKICNpZmRlZiBIQVZFX0dFVExPQURBVkcKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRsb2FkYXZnX19kb2NfXywKLSJnZXRsb2FkYXZnKCkgLT4gKGZsb2F0LCBmbG9hdCwgZmxvYXQpXG5cblwKLVJldHVybiB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBpbiB0aGUgc3lzdGVtIHJ1biBxdWV1ZSBhdmVyYWdlZCBvdmVyXG5cCi10aGUgbGFzdCAxLCA1LCBhbmQgMTUgbWludXRlcyBvciByYWlzZXMgT1NFcnJvciBpZiB0aGUgbG9hZCBhdmVyYWdlXG5cCi13YXMgdW5vYnRhaW5hYmxlIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5nZXRsb2FkYXZnCisKK1JldHVybiBhdmVyYWdlIHJlY2VudCBzeXN0ZW0gbG9hZCBpbmZvcm1hdGlvbi4KKworUmV0dXJuIHRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIGluIHRoZSBzeXN0ZW0gcnVuIHF1ZXVlIGF2ZXJhZ2VkIG92ZXIKK3RoZSBsYXN0IDEsIDUsIGFuZCAxNSBtaW51dGVzIGFzIGEgdHVwbGUgb2YgdGhyZWUgZmxvYXRzLgorUmFpc2VzIE9TRXJyb3IgaWYgdGhlIGxvYWQgYXZlcmFnZSB3YXMgdW5vYnRhaW5hYmxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0bG9hZGF2ZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2dldGxvYWRhdmdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJiNjRjNWI2NzVkNzRjMTQgaW5wdXQ9M2Q2ZDgyNmI3NmQ4YTM0ZV0qLwogewogICAgIGRvdWJsZSBsb2FkYXZnWzNdOwogICAgIGlmIChnZXRsb2FkYXZnKGxvYWRhdmcsIDMpIT0zKSB7CkBAIC0xMDUzMCw3MiArMTA2ODAsODMgQEAKICAgICB9IGVsc2UKICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImRkZCIsIGxvYWRhdmdbMF0sIGxvYWRhdmdbMV0sIGxvYWRhdmdbMl0pOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9HRVRMT0FEQVZHICovCiAKLVB5RG9jX1NUUlZBUihkZXZpY2VfZW5jb2RpbmdfX2RvY19fLAotImRldmljZV9lbmNvZGluZyhmZCkgLT4gc3RyXG5cblwKLVJldHVybiBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBlbmNvZGluZyBvZiB0aGUgZGV2aWNlXG5cCi1pZiB0aGUgb3V0cHV0IGlzIGEgdGVybWluYWw7IGVsc2UgcmV0dXJuIE5vbmUuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmRldmljZV9lbmNvZGluZworICAgIGZkOiBpbnQKKworUmV0dXJuIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGVuY29kaW5nIG9mIGEgdGVybWluYWwncyBmaWxlIGRlc2NyaXB0b3IuCisKK1RoZSBmaWxlIGRlc2NyaXB0b3IgbXVzdCBiZSBhdHRhY2hlZCB0byBhIHRlcm1pbmFsLgorSWYgdGhlIGRldmljZSBpcyBub3QgYSB0ZXJtaW5hbCwgcmV0dXJuIE5vbmUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kZXZpY2VfZW5jb2RpbmcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfZGV2aWNlX2VuY29kaW5nX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM0ZjE0ZTMzNDY4NDE5YzEgaW5wdXQ9OWUxZDRhNDJiNjZkZjMxMl0qLwogewotICAgIGludCBmZDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpkZXZpY2VfZW5jb2RpbmciLCAmZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHJldHVybiBfUHlfZGV2aWNlX2VuY29kaW5nKGZkKTsKIH0KIAotI2lmZGVmIEhBVkVfU0VUUkVTVUlECi1QeURvY19TVFJWQVIocG9zaXhfc2V0cmVzdWlkX19kb2NfXywKLSJzZXRyZXN1aWQocnVpZCwgZXVpZCwgc3VpZClcblxuXAotU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCB1c2VyIGlkcy4iKTsKIAotc3RhdGljIFB5T2JqZWN0KgotcG9zaXhfc2V0cmVzdWlkIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisjaWZkZWYgSEFWRV9TRVRSRVNVSUQKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldHJlc3VpZAorCisgICAgcnVpZDogdWlkX3QKKyAgICBldWlkOiB1aWRfdAorICAgIHN1aWQ6IHVpZF90CisgICAgLworCitTZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHJlYWwsIGVmZmVjdGl2ZSwgYW5kIHNhdmVkIHVzZXIgaWRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cmVzdWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgdWlkX3QgcnVpZCwgdWlkX3QgZXVpZCwgdWlkX3Qgc3VpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MmNjMzMwODEyYzZlZDBmIGlucHV0PTllMzNjYjc5YTgyNzkyZjNdKi8KIHsKLSAgICAvKiBXZSBhc3N1bWUgdWlkX3QgaXMgbm8gbGFyZ2VyIHRoYW4gYSBsb25nLiAqLwotICAgIHVpZF90IHJ1aWQsIGV1aWQsIHN1aWQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mTyY6c2V0cmVzdWlkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZydWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmc3VpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzZXRyZXN1aWQocnVpZCwgZXVpZCwgc3VpZCkgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfU0VUUkVTVUlEICovCisKIAogI2lmZGVmIEhBVkVfU0VUUkVTR0lECi1QeURvY19TVFJWQVIocG9zaXhfc2V0cmVzZ2lkX19kb2NfXywKLSJzZXRyZXNnaWQocmdpZCwgZWdpZCwgc2dpZClcblxuXAotU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCBncm91cCBpZHMuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zZXRyZXNnaWQKIAotc3RhdGljIFB5T2JqZWN0KgotcG9zaXhfc2V0cmVzZ2lkIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgcmdpZDogZ2lkX3QKKyAgICBlZ2lkOiBnaWRfdAorICAgIHNnaWQ6IGdpZF90CisgICAgLworCitTZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHJlYWwsIGVmZmVjdGl2ZSwgYW5kIHNhdmVkIGdyb3VwIGlkcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHJlc2dpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGdpZF90IHJnaWQsIGdpZF90IGVnaWQsIGdpZF90IHNnaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTkxZGM0ODQyYTYwNDQyOSBpbnB1dD0zM2U5ZTA3ODVlZjQyNmIxXSovCiB7Ci0gICAgZ2lkX3QgcmdpZCwgZWdpZCwgc2dpZDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyZPJjpzZXRyZXNnaWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJnJnaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZzZ2lkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNldHJlc2dpZChyZ2lkLCBlZ2lkLCBzZ2lkKSA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9TRVRSRVNHSUQgKi8KKwogCiAjaWZkZWYgSEFWRV9HRVRSRVNVSUQKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRyZXN1aWRfX2RvY19fLAotImdldHJlc3VpZCgpIC0+IChydWlkLCBldWlkLCBzdWlkKVxuXG5cCi1HZXQgdHVwbGUgb2YgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHJlYWwsIGVmZmVjdGl2ZSwgYW5kIHNhdmVkIHVzZXIgaWRzLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0cmVzdWlkCiAKLXN0YXRpYyBQeU9iamVjdCoKLXBvc2l4X2dldHJlc3VpZCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitSZXR1cm4gYSB0dXBsZSBvZiB0aGUgY3VycmVudCBwcm9jZXNzJ3MgcmVhbCwgZWZmZWN0aXZlLCBhbmQgc2F2ZWQgdXNlciBpZHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRyZXN1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlkZGVmNjJmYWFlOGU0NzcgaW5wdXQ9NDFjY2ZhOGUxZjY1MTdhZF0qLwogewogICAgIHVpZF90IHJ1aWQsIGV1aWQsIHN1aWQ7CiAgICAgaWYgKGdldHJlc3VpZCgmcnVpZCwgJmV1aWQsICZzdWlkKSA8IDApCkBAIC0xMDYwNCw5MCArMTA3NjUsODggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlMb25nX0Zyb21VaWQoZXVpZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5TG9uZ19Gcm9tVWlkKHN1aWQpKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfR0VUUkVTVUlEICovCisKIAogI2lmZGVmIEhBVkVfR0VUUkVTR0lECi1QeURvY19TVFJWQVIocG9zaXhfZ2V0cmVzZ2lkX19kb2NfXywKLSJnZXRyZXNnaWQoKSAtPiAocmdpZCwgZWdpZCwgc2dpZClcblxuXAotR2V0IHR1cGxlIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCBncm91cCBpZHMuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5nZXRyZXNnaWQKIAotc3RhdGljIFB5T2JqZWN0KgotcG9zaXhfZ2V0cmVzZ2lkIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK1JldHVybiBhIHR1cGxlIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCBncm91cCBpZHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRyZXNnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUxYTU1M2NiY2YxNjIzNGMgaW5wdXQ9NTE3ZTY4ZGI5Y2EzMmRmNl0qLwogewotICAgIHVpZF90IHJnaWQsIGVnaWQsIHNnaWQ7CisgICAgZ2lkX3QgcmdpZCwgZWdpZCwgc2dpZDsKICAgICBpZiAoZ2V0cmVzZ2lkKCZyZ2lkLCAmZWdpZCwgJnNnaWQpIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihOTk4pIiwgX1B5TG9uZ19Gcm9tR2lkKHJnaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUxvbmdfRnJvbUdpZChlZ2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlMb25nX0Zyb21HaWQoc2dpZCkpOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9HRVRSRVNHSUQgKi8KKwogCiAjaWZkZWYgVVNFX1hBVFRSUworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0eGF0dHIKIAotUHlEb2NfU1RSVkFSKHBvc2l4X2dldHhhdHRyX19kb2NfXywKLSJnZXR4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKSAtPiB2YWx1ZVxuXG5cCi1SZXR1cm4gdGhlIHZhbHVlIG9mIGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aC5cblwKLVxuXAotcGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCi0gIGxpbmssIGdldHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuXAotICB0aGUgbGluayBwb2ludHMgdG8uIik7CisgICAgcGF0aDogcGF0aF90KGFsbG93X2ZkPVRydWUpCisgICAgYXR0cmlidXRlOiBwYXRoX3QKKyAgICAqCisgICAgZm9sbG93X3N5bWxpbmtzOiBib29sID0gVHJ1ZQorCitSZXR1cm4gdGhlIHZhbHVlIG9mIGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aC4KKworcGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljCisgIGxpbmssIGdldHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZQorICB0aGUgbGluayBwb2ludHMgdG8uCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldHhhdHRyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2dldHhhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBwYXRoX3QgKmF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jZjJjZWRlNzRiZDVkNDEyIGlucHV0PThjOGVhM2JhYjc4ZDg5YzJdKi8KIHsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICBwYXRoX3QgYXR0cmlidXRlOwotICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIFB5X3NzaXplX3QgaTsKICAgICBQeU9iamVjdCAqYnVmZmVyID0gTlVMTDsKLSAgICBpbnQgaTsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CiAKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgbWVtc2V0KCZhdHRyaWJ1dGUsIDAsIHNpemVvZihhdHRyaWJ1dGUpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAiZ2V0eGF0dHIiOwotICAgIGF0dHJpYnV0ZS5mdW5jdGlvbl9uYW1lID0gImdldHhhdHRyIjsKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRwOmdldHhhdHRyIiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsCi0gICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmIChmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoImdldHhhdHRyIiwgcGF0aC0+ZmQsIGZvbGxvd19zeW1saW5rcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgiZ2V0eGF0dHIiLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0KICAgICBmb3IgKGkgPSAwOyA7IGkrKykgewogICAgICAgICB2b2lkICpwdHI7CiAgICAgICAgIHNzaXplX3QgcmVzdWx0OwogICAgICAgICBzdGF0aWMgUHlfc3NpemVfdCBidWZmZXJfc2l6ZXNbXSA9IHsxMjgsIFhBVFRSX1NJWkVfTUFYLCAwfTsKICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplc1tpXTsKICAgICAgICAgaWYgKCFidWZmZXJfc2l6ZSkgewotICAgICAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBwYXRoX2Vycm9yKHBhdGgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgYnVmZmVyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBidWZmZXJfc2l6ZSk7CiAgICAgICAgIGlmICghYnVmZmVyKQotICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHB0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZmZlcik7CiAKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKLSAgICAgICAgaWYgKHBhdGguZmQgPj0gMCkKLSAgICAgICAgICAgIHJlc3VsdCA9IGZnZXR4YXR0cihwYXRoLmZkLCBhdHRyaWJ1dGUubmFycm93LCBwdHIsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgaWYgKHBhdGgtPmZkID49IDApCisgICAgICAgICAgICByZXN1bHQgPSBmZ2V0eGF0dHIocGF0aC0+ZmQsIGF0dHJpYnV0ZS0+bmFycm93LCBwdHIsIGJ1ZmZlcl9zaXplKTsKICAgICAgICAgZWxzZSBpZiAoZm9sbG93X3N5bWxpbmtzKQotICAgICAgICAgICAgcmVzdWx0ID0gZ2V0eGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3csIHB0ciwgYnVmZmVyX3NpemUpOworICAgICAgICAgICAgcmVzdWx0ID0gZ2V0eGF0dHIocGF0aC0+bmFycm93LCBhdHRyaWJ1dGUtPm5hcnJvdywgcHRyLCBidWZmZXJfc2l6ZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IGxnZXR4YXR0cihwYXRoLm5hcnJvdywgYXR0cmlidXRlLm5hcnJvdywgcHRyLCBidWZmZXJfc2l6ZSk7CisgICAgICAgICAgICByZXN1bHQgPSBsZ2V0eGF0dHIocGF0aC0+bmFycm93LCBhdHRyaWJ1dGUtPm5hcnJvdywgcHRyLCBidWZmZXJfc2l6ZSk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTOwogCiAgICAgICAgIGlmIChyZXN1bHQgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKLSAgICAgICAgICAgIGJ1ZmZlciA9IE5VTEw7CiAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRVJBTkdFKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBwYXRoX2Vycm9yKHBhdGgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAocmVzdWx0ICE9IGJ1ZmZlcl9zaXplKSB7CkBAIC0xMDY5NywxNjggKzEwODU2LDEzNCBAQAogICAgICAgICBicmVhazsKICAgICB9CiAKLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICBwYXRoX2NsZWFudXAoJmF0dHJpYnV0ZSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3NldHhhdHRyX19kb2NfXywKLSJzZXR4YXR0cihwYXRoLCBhdHRyaWJ1dGUsIHZhbHVlLCBmbGFncz0wLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAotU2V0IGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aCB0byB2YWx1ZS5cblwKLXBhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLUlmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAotICBsaW5rLCBzZXR4YXR0ciB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuXAotICB0aGUgbGluayBwb2ludHMgdG8uIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldHhhdHRyCisKKyAgICBwYXRoOiBwYXRoX3QoYWxsb3dfZmQ9VHJ1ZSkKKyAgICBhdHRyaWJ1dGU6IHBhdGhfdAorICAgIHZhbHVlOiBQeV9idWZmZXIKKyAgICBmbGFnczogaW50ID0gMAorICAgICoKKyAgICBmb2xsb3dfc3ltbGlua3M6IGJvb2wgPSBUcnVlCisKK1NldCBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGggdG8gdmFsdWUuCisKK3BhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYworICBsaW5rLCBzZXR4YXR0ciB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZQorICB0aGUgbGluayBwb2ludHMgdG8uCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldHhhdHRyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3NldHhhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBwYXRoX3QgKmF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICp2YWx1ZSwgaW50IGZsYWdzLCBpbnQgZm9sbG93X3N5bWxpbmtzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFiMzk1ZWY4Mjg4MGZlYTAgaW5wdXQ9ZjBkMjY4MzM5OTIwMTVjMl0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIHBhdGhfdCBhdHRyaWJ1dGU7Ci0gICAgUHlfYnVmZmVyIHZhbHVlOwotICAgIGludCBmbGFncyA9IDA7Ci0gICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7Ci0gICAgaW50IHJlc3VsdDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAidmFsdWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzc2l6ZV90IHJlc3VsdDsKIAotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAic2V0eGF0dHIiOwotICAgIHBhdGguYWxsb3dfZmQgPSAxOwotICAgIG1lbXNldCgmYXR0cmlidXRlLCAwLCBzaXplb2YoYXR0cmlidXRlKSk7Ci0gICAgbWVtc2V0KCZ2YWx1ZSwgMCwgc2l6ZW9mKHZhbHVlKSk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnkqfGkkcDpzZXR4YXR0ciIsCi0gICAgICAgIGtleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLAotICAgICAgICAmdmFsdWUsICZmbGFncywKLSAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgic2V0eGF0dHIiLCBwYXRoLT5mZCwgZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJzZXR4YXR0ciIsIHBhdGguZmQsIGZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIGdvdG8gZXhpdDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7Ci0gICAgaWYgKHBhdGguZmQgPiAtMSkKLSAgICAgICAgcmVzdWx0ID0gZnNldHhhdHRyKHBhdGguZmQsIGF0dHJpYnV0ZS5uYXJyb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5idWYsIHZhbHVlLmxlbiwgZmxhZ3MpOworICAgIGlmIChwYXRoLT5mZCA+IC0xKQorICAgICAgICByZXN1bHQgPSBmc2V0eGF0dHIocGF0aC0+ZmQsIGF0dHJpYnV0ZS0+bmFycm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUtPmJ1ZiwgdmFsdWUtPmxlbiwgZmxhZ3MpOwogICAgIGVsc2UgaWYgKGZvbGxvd19zeW1saW5rcykKLSAgICAgICAgcmVzdWx0ID0gc2V0eGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5idWYsIHZhbHVlLmxlbiwgZmxhZ3MpOworICAgICAgICByZXN1bHQgPSBzZXR4YXR0cihwYXRoLT5uYXJyb3csIGF0dHJpYnV0ZS0+bmFycm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUtPmJ1ZiwgdmFsdWUtPmxlbiwgZmxhZ3MpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gbHNldHhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuYnVmLCB2YWx1ZS5sZW4sIGZsYWdzKTsKKyAgICAgICAgcmVzdWx0ID0gbHNldHhhdHRyKHBhdGgtPm5hcnJvdywgYXR0cmlidXRlLT5uYXJyb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS0+YnVmLCB2YWx1ZS0+bGVuLCBmbGFncyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFM7CiAKICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHBhdGhfZXJyb3IocGF0aCk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7Ci0gICAgUHlfSU5DUkVGKHJldHVybl92YWx1ZSk7Ci0KLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICBwYXRoX2NsZWFudXAoJmF0dHJpYnV0ZSk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmdmFsdWUpOwotCi0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3JlbW92ZXhhdHRyX19kb2NfXywKLSJyZW1vdmV4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCi1SZW1vdmUgZXh0ZW5kZWQgYXR0cmlidXRlIGF0dHJpYnV0ZSBvbiBwYXRoLlxuXAotcGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCi0gIGxpbmssIHJlbW92ZXhhdHRyIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG5cCi0gIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MucmVtb3ZleGF0dHIKKworICAgIHBhdGg6IHBhdGhfdChhbGxvd19mZD1UcnVlKQorICAgIGF0dHJpYnV0ZTogcGF0aF90CisgICAgKgorICAgIGZvbGxvd19zeW1saW5rczogYm9vbCA9IFRydWUKKworUmVtb3ZlIGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aC4KKworcGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljCisgIGxpbmssIHJlbW92ZXhhdHRyIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlCisgIHRoZSBsaW5rIHBvaW50cyB0by4KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcmVtb3ZleGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfcmVtb3ZleGF0dHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHBhdGhfdCAqYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY5MmJiMzlhYjk5MjY1MGQgaW5wdXQ9Y2RiNTQ4MzQxNjFlMzMyOV0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIHBhdGhfdCBhdHRyaWJ1dGU7Ci0gICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7Ci0gICAgaW50IHJlc3VsdDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3NpemVfdCByZXN1bHQ7CiAKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gInJlbW92ZXhhdHRyIjsKLSAgICBtZW1zZXQoJmF0dHJpYnV0ZSwgMCwgc2l6ZW9mKGF0dHJpYnV0ZSkpOwotICAgIGF0dHJpYnV0ZS5mdW5jdGlvbl9uYW1lID0gInJlbW92ZXhhdHRyIjsKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRwOnJlbW92ZXhhdHRyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgicmVtb3ZleGF0dHIiLCBwYXRoLT5mZCwgZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJyZW1vdmV4YXR0ciIsIHBhdGguZmQsIGZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIGdvdG8gZXhpdDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7Ci0gICAgaWYgKHBhdGguZmQgPiAtMSkKLSAgICAgICAgcmVzdWx0ID0gZnJlbW92ZXhhdHRyKHBhdGguZmQsIGF0dHJpYnV0ZS5uYXJyb3cpOworICAgIGlmIChwYXRoLT5mZCA+IC0xKQorICAgICAgICByZXN1bHQgPSBmcmVtb3ZleGF0dHIocGF0aC0+ZmQsIGF0dHJpYnV0ZS0+bmFycm93KTsKICAgICBlbHNlIGlmIChmb2xsb3dfc3ltbGlua3MpCi0gICAgICAgIHJlc3VsdCA9IHJlbW92ZXhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gcmVtb3ZleGF0dHIocGF0aC0+bmFycm93LCBhdHRyaWJ1dGUtPm5hcnJvdyk7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBscmVtb3ZleGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3cpOworICAgICAgICByZXN1bHQgPSBscmVtb3ZleGF0dHIocGF0aC0+bmFycm93LCBhdHRyaWJ1dGUtPm5hcnJvdyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFM7CiAKICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOwogICAgIH0KIAotICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7Ci0gICAgUHlfSU5DUkVGKHJldHVybl92YWx1ZSk7Ci0KLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICBwYXRoX2NsZWFudXAoJmF0dHJpYnV0ZSk7Ci0KLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIocG9zaXhfbGlzdHhhdHRyX19kb2NfXywKLSJsaXN0eGF0dHIocGF0aD0nLicsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCi1SZXR1cm4gYSBsaXN0IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb24gcGF0aC5cblwKLVxuXAotcGF0aCBtYXkgYmUgZWl0aGVyIE5vbmUsIGEgc3RyaW5nLCBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLWlmIHBhdGggaXMgTm9uZSwgbGlzdHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuXG5cCi1JZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKLSAgbGluaywgbGlzdHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuXAotICB0aGUgbGluayBwb2ludHMgdG8uIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmxpc3R4YXR0cgorCisgICAgcGF0aDogcGF0aF90KGFsbG93X2ZkPVRydWUsIG51bGxhYmxlPVRydWUpID0gTm9uZQorICAgICoKKyAgICBmb2xsb3dfc3ltbGlua3M6IGJvb2wgPSBUcnVlCisKK1JldHVybiBhIGxpc3Qgb2YgZXh0ZW5kZWQgYXR0cmlidXRlcyBvbiBwYXRoLgorCitwYXRoIG1heSBiZSBlaXRoZXIgTm9uZSwgYSBzdHJpbmcsIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgoraWYgcGF0aCBpcyBOb25lLCBsaXN0eGF0dHIgd2lsbCBleGFtaW5lIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYworICBsaW5rLCBsaXN0eGF0dHIgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlCisgIHRoZSBsaW5rIHBvaW50cyB0by4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xpc3R4YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19saXN0eGF0dHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBmb2xsb3dfc3ltbGlua3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTg3YWQ2Y2U1NmU0MmE0ZiBpbnB1dD0wOGNjYTUzYWMwYjA3YzEzXSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgY2hhciAqYnVmZmVyID0gTlVMTDsKLSAgICBjaGFyICpuYW1lOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OwogCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJsaXN0eGF0dHIiOwotICAgIHBhdGguYWxsb3dfZmQgPSAxOwotICAgIHBhdGguZmQgPSAtMTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TyYkcDpsaXN0eGF0dHIiLCBrZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJsaXN0eGF0dHIiLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmIChmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoImxpc3R4YXR0ciIsIHBhdGgtPmZkLCBmb2xsb3dfc3ltbGlua3MpKQogICAgICAgICBnb3RvIGV4aXQ7CiAKLSAgICBuYW1lID0gcGF0aC5uYXJyb3cgPyBwYXRoLm5hcnJvdyA6ICIuIjsKKyAgICBuYW1lID0gcGF0aC0+bmFycm93ID8gcGF0aC0+bmFycm93IDogIi4iOworCiAgICAgZm9yIChpID0gMDsgOyBpKyspIHsKICAgICAgICAgY2hhciAqc3RhcnQsICp0cmFjZSwgKmVuZDsKICAgICAgICAgc3NpemVfdCBsZW5ndGg7CkBAIC0xMDg2Niw3ICsxMDk5MSw3IEBACiAgICAgICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZXNbaV07CiAgICAgICAgIGlmICghYnVmZmVyX3NpemUpIHsKICAgICAgICAgICAgIC8qIEVSQU5HRSAqLwotICAgICAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7CisgICAgICAgICAgICBwYXRoX2Vycm9yKHBhdGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgYnVmZmVyID0gUHlNZW1fTUFMTE9DKGJ1ZmZlcl9zaXplKTsKQEAgLTEwODc2LDggKzExMDAxLDggQEAKICAgICAgICAgfQogCiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7Ci0gICAgICAgIGlmIChwYXRoLmZkID4gLTEpCi0gICAgICAgICAgICBsZW5ndGggPSBmbGlzdHhhdHRyKHBhdGguZmQsIGJ1ZmZlciwgYnVmZmVyX3NpemUpOworICAgICAgICBpZiAocGF0aC0+ZmQgPiAtMSkKKyAgICAgICAgICAgIGxlbmd0aCA9IGZsaXN0eGF0dHIocGF0aC0+ZmQsIGJ1ZmZlciwgYnVmZmVyX3NpemUpOwogICAgICAgICBlbHNlIGlmIChmb2xsb3dfc3ltbGlua3MpCiAgICAgICAgICAgICBsZW5ndGggPSBsaXN0eGF0dHIobmFtZSwgYnVmZmVyLCBidWZmZXJfc2l6ZSk7CiAgICAgICAgIGVsc2UKQEAgLTEwODkwLDcgKzExMDE1LDcgQEAKICAgICAgICAgICAgICAgICBidWZmZXIgPSBOVUxMOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7CisgICAgICAgICAgICBwYXRoX2Vycm9yKHBhdGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMTA5MjMsNDMgKzExMDQ4LDQzIEBACiAgICAgYnJlYWs7CiAgICAgfQogZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIFB5TWVtX0ZSRUUoYnVmZmVyKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQotCiAjZW5kaWYgLyogVVNFX1hBVFRSUyAqLwogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF91cmFuZG9tX19kb2NfXywKLSJ1cmFuZG9tKG4pIC0+IHN0clxuXG5cCi1SZXR1cm4gbiByYW5kb20gYnl0ZXMgc3VpdGFibGUgZm9yIGNyeXB0b2dyYXBoaWMgdXNlLiIpOworLypbY2xpbmljIGlucHV0XQorb3MudXJhbmRvbQorCisgICAgc2l6ZTogUHlfc3NpemVfdAorICAgIC8KKworUmV0dXJuIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgcmFuZG9tIGJ5dGVzIHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHVzZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3VyYW5kb20oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfdXJhbmRvbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X3NzaXplX3Qgc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMDAxMWYwMjE1MDFmMDNiIGlucHV0PTQwNjdjZGIxYjY3NzZjMjldKi8KIHsKLSAgICBQeV9zc2l6ZV90IHNpemU7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBpbnQgcmV0OworICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICBpbnQgcmVzdWx0OwogCi0gICAgIC8qIFJlYWQgYXJndW1lbnRzICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuOnVyYW5kb20iLCAmc2l6ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzaXplIDwgMCkKICAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBhcmd1bWVudCBub3QgYWxsb3dlZCIpOwotICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKKyAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXQgPSBfUHlPU19VUmFuZG9tKFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCksCi0gICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkpOwotICAgIGlmIChyZXQgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgcmVzdWx0ID0gX1B5T1NfVVJhbmRvbShQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksCisgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSk7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gYnl0ZXM7CiB9CiAKIC8qIFRlcm1pbmFsIHNpemUgcXVlcnlpbmcgKi8KQEAgLTEwOTgzLDYgKzExMTA4LDcgQEAKIH07CiAKICNpZiBkZWZpbmVkKFRFUk1TSVpFX1VTRV9DT05JTykgfHwgZGVmaW5lZChURVJNU0laRV9VU0VfSU9DVEwpCisvKiBBQyAzLjU6IGZkIHNob3VsZCBhY2NlcHQgTm9uZSAqLwogUHlEb2NfU1RSVkFSKHRlcm1zaXplX19kb2NfXywKICAgICAiUmV0dXJuIHRoZSBzaXplIG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cgYXMgKGNvbHVtbnMsIGxpbmVzKS5cbiIgICAgICAgIFwKICAgICAiXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTExMDY4LDEzICsxMTE5NCwxNiBAQAogfQogI2VuZGlmIC8qIGRlZmluZWQoVEVSTVNJWkVfVVNFX0NPTklPKSB8fCBkZWZpbmVkKFRFUk1TSVpFX1VTRV9JT0NUTCkgKi8KIAotUHlEb2NfU1RSVkFSKHBvc2l4X2NwdV9jb3VudF9fZG9jX18sCi0iY3B1X2NvdW50KCkgLT4gaW50ZWdlclxuXG5cCi1SZXR1cm4gdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZSBzeXN0ZW0sIG9yIE5vbmUgaWYgdGhpcyB2YWx1ZSBjYW5ub3QgYmVcblwKLWVzdGFibGlzaGVkLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5jcHVfY291bnQKKworUmV0dXJuIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtOyByZXR1cm4gTm9uZSBpZiBpbmRldGVybWluYWJsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2NwdV9jb3VudChQeU9iamVjdCAqc2VsZikKK29zX2NwdV9jb3VudF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzU5ZWU3ZjZiY2U4MzJiOCBpbnB1dD1kNTVlMmY4ZjM4MjNhNjI4XSovCiB7CiAgICAgaW50IG5jcHUgPSAwOwogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTExMTAzLDExMSArMTEyMzIsOTQzIEBACiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoZ2V0X2luaGVyaXRhYmxlX19kb2NfXywKLSAgICAiZ2V0X2luaGVyaXRhYmxlKGZkKSAtPiBib29sXG4iIFwKLSAgICAiXG4iIFwKLSAgICAiR2V0IHRoZSBjbG9zZS1vbi1leGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4iKTsKIAotc3RhdGljIFB5T2JqZWN0KgotcG9zaXhfZ2V0X2luaGVyaXRhYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldF9pbmhlcml0YWJsZSAtPiBib29sCisKKyAgICBmZDogaW50CisgICAgLworCitHZXQgdGhlIGNsb3NlLW9uLWV4ZSBmbGFnIG9mIHRoZSBzcGVjaWZpZWQgZmlsZSBkZXNjcmlwdG9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50Citvc19nZXRfaW5oZXJpdGFibGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzYxMTBiYjM2ZWZhYTIxZSBpbnB1dD04OWFjMDA4ZGM5YWI2Yjk1XSovCiB7Ci0gICAgaW50IGZkOwotICAgIGludCBpbmhlcml0YWJsZTsKKyAgICBpbnQgcmV0dXJuX3ZhbHVlOworICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmdldF9pbmhlcml0YWJsZSIsICZmZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLQotICAgIGluaGVyaXRhYmxlID0gX1B5X2dldF9pbmhlcml0YWJsZShmZCk7Ci0gICAgaWYgKGluaGVyaXRhYmxlIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhpbmhlcml0YWJsZSk7CisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIHJldHVybl92YWx1ZSA9IF9QeV9nZXRfaW5oZXJpdGFibGUoZmQpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotUHlEb2NfU1RSVkFSKHNldF9pbmhlcml0YWJsZV9fZG9jX18sCi0gICAgInNldF9pbmhlcml0YWJsZShmZCwgaW5oZXJpdGFibGUpXG4iIFwKLSAgICAiXG4iIFwKLSAgICAiU2V0IHRoZSBpbmhlcml0YWJsZSBmbGFnIG9mIHRoZSBzcGVjaWZpZWQgZmlsZSBkZXNjcmlwdG9yLiIpOwogCi1zdGF0aWMgUHlPYmplY3QqCi1wb3NpeF9zZXRfaW5oZXJpdGFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorLypbY2xpbmljIGlucHV0XQorb3Muc2V0X2luaGVyaXRhYmxlCisgICAgZmQ6IGludAorICAgIGluaGVyaXRhYmxlOiBpbnQKKyAgICAvCisKK1NldCB0aGUgaW5oZXJpdGFibGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldF9pbmhlcml0YWJsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGluaGVyaXRhYmxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJhYzVjNmNlODYyM2YwNDUgaW5wdXQ9OWNlYWVhZDg3YTFlMjQwMl0qLwogewotICAgIGludCBmZCwgaW5oZXJpdGFibGU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOnNldF9pbmhlcml0YWJsZSIsICZmZCwgJmluaGVyaXRhYmxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KKyAgICBpbnQgcmVzdWx0OwogICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAKLSAgICBpZiAoX1B5X3NldF9pbmhlcml0YWJsZShmZCwgaW5oZXJpdGFibGUsIE5VTEwpIDwgMCkKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgcmVzdWx0ID0gX1B5X3NldF9pbmhlcml0YWJsZShmZCwgaW5oZXJpdGFibGUsIE5VTEwpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgaWYgKHJlc3VsdCA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAKICNpZmRlZiBNU19XSU5ET1dTCi1QeURvY19TVFJWQVIoZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9fZG9jX18sCi0gICAgImdldF9oYW5kbGVfaW5oZXJpdGFibGUoZmQpIC0+IGJvb2xcbiIgXAotICAgICJcbiIgXAotICAgICJHZXQgdGhlIGNsb3NlLW9uLWV4ZSBmbGFnIG9mIHRoZSBzcGVjaWZpZWQgZmlsZSBkZXNjcmlwdG9yLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0X2hhbmRsZV9pbmhlcml0YWJsZSAtPiBib29sCisgICAgaGFuZGxlOiBQeV9pbnRwdHJfdAorICAgIC8KIAotc3RhdGljIFB5T2JqZWN0KgotcG9zaXhfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitHZXQgdGhlIGNsb3NlLW9uLWV4ZSBmbGFnIG9mIHRoZSBzcGVjaWZpZWQgZmlsZSBkZXNjcmlwdG9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50Citvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNiN2IzZTFiNDNmMzEyYjYgaW5wdXQ9NWY3NzU5NDQzYWFlM2RjNV0qLwogewotICAgIFB5X2ludHB0cl90IGhhbmRsZTsKICAgICBEV09SRCBmbGFnczsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfSU5UUFRSICI6Z2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsICZoYW5kbGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmICghR2V0SGFuZGxlSW5mb3JtYXRpb24oKEhBTkRMRSloYW5kbGUsICZmbGFncykpIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhmbGFncyAmIEhBTkRMRV9GTEFHX0lOSEVSSVQpOworICAgIHJldHVybiBmbGFncyAmIEhBTkRMRV9GTEFHX0lOSEVSSVQ7CiB9CiAKLVB5RG9jX1NUUlZBUihzZXRfaGFuZGxlX2luaGVyaXRhYmxlX19kb2NfXywKLSAgICAic2V0X2hhbmRsZV9pbmhlcml0YWJsZShmZCwgaW5oZXJpdGFibGUpXG4iIFwKLSAgICAiXG4iIFwKLSAgICAiU2V0IHRoZSBpbmhlcml0YWJsZSBmbGFnIG9mIHRoZSBzcGVjaWZpZWQgaGFuZGxlLiIpOwogCi1zdGF0aWMgUHlPYmplY3QqCi1wb3NpeF9zZXRfaGFuZGxlX2luaGVyaXRhYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldF9oYW5kbGVfaW5oZXJpdGFibGUKKyAgICBoYW5kbGU6IFB5X2ludHB0cl90CisgICAgaW5oZXJpdGFibGU6IGJvb2wKKyAgICAvCisKK1NldCB0aGUgaW5oZXJpdGFibGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGhhbmRsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluaGVyaXRhYmxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQyZTExMWE5NmM5ZWIyOTYgaW5wdXQ9ZTY0YjJiMjczMDQ2OWRlZl0qLwogewotICAgIGludCBpbmhlcml0YWJsZSA9IDE7Ci0gICAgUHlfaW50cHRyX3QgaGFuZGxlOwotICAgIERXT1JEIGZsYWdzOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9JTlRQVFIgImk6c2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZoYW5kbGUsICZpbmhlcml0YWJsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGluaGVyaXRhYmxlKQotICAgICAgICBmbGFncyA9IEhBTkRMRV9GTEFHX0lOSEVSSVQ7Ci0gICAgZWxzZQotICAgICAgICBmbGFncyA9IDA7CisgICAgRFdPUkQgZmxhZ3MgPSBpbmhlcml0YWJsZSA/IEhBTkRMRV9GTEFHX0lOSEVSSVQgOiAwOwogICAgIGlmICghU2V0SGFuZGxlSW5mb3JtYXRpb24oKEhBTkRMRSloYW5kbGUsIEhBTkRMRV9GTEFHX0lOSEVSSVQsIGZsYWdzKSkgewogICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X1JFVFVSTl9OT05FOwogfQotI2VuZGlmICAgLyogTVNfV0lORE9XUyAqLworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAorI2lmbmRlZiBNU19XSU5ET1dTCitQeURvY19TVFJWQVIoZ2V0X2Jsb2NraW5nX19kb2NfXywKKyAgICAiZ2V0X2Jsb2NraW5nKGZkKSAtPiBib29sXG4iIFwKKyAgICAiXG4iIFwKKyAgICAiR2V0IHRoZSBibG9ja2luZyBtb2RlIG9mIHRoZSBmaWxlIGRlc2NyaXB0b3I6XG4iIFwKKyAgICAiRmFsc2UgaWYgdGhlIE9fTk9OQkxPQ0sgZmxhZyBpcyBzZXQsIFRydWUgaWYgdGhlIGZsYWcgaXMgY2xlYXJlZC4iKTsKKworc3RhdGljIFB5T2JqZWN0KgorcG9zaXhfZ2V0X2Jsb2NraW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgZmQ7CisgICAgaW50IGJsb2NraW5nOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmdldF9ibG9ja2luZyIsICZmZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICBibG9ja2luZyA9IF9QeV9nZXRfYmxvY2tpbmcoZmQpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgaWYgKGJsb2NraW5nIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhibG9ja2luZyk7Cit9CisKK1B5RG9jX1NUUlZBUihzZXRfYmxvY2tpbmdfX2RvY19fLAorICAgICJzZXRfYmxvY2tpbmcoZmQsIGJsb2NraW5nKVxuIiBcCisgICAgIlxuIiBcCisgICAgIlNldCB0aGUgYmxvY2tpbmcgbW9kZSBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci5cbiIgXAorICAgICJTZXQgdGhlIE9fTk9OQkxPQ0sgZmxhZyBpZiBibG9ja2luZyBpcyBGYWxzZSxcbiIgXAorICAgICJjbGVhciB0aGUgT19OT05CTE9DSyBmbGFnIG90aGVyd2lzZS4iKTsKKworc3RhdGljIFB5T2JqZWN0KgorcG9zaXhfc2V0X2Jsb2NraW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgZmQsIGJsb2NraW5nLCByZXN1bHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOnNldF9ibG9ja2luZyIsICZmZCwgJmJsb2NraW5nKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIHJlc3VsdCA9IF9QeV9zZXRfYmxvY2tpbmcoZmQsIGJsb2NraW5nKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIGlmIChyZXN1bHQgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZiAgIC8qICFNU19XSU5ET1dTICovCisKKworUHlEb2NfU1RSVkFSKHBvc2l4X3NjYW5kaXJfX2RvY19fLAorInNjYW5kaXIocGF0aD0nLicpIC0+IGl0ZXJhdG9yIG9mIERpckVudHJ5IG9iamVjdHMgZm9yIGdpdmVuIHBhdGgiKTsKKworc3RhdGljIGNoYXIgKmZvbGxvd19zeW1saW5rc19rZXl3b3Jkc1tdID0geyJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeU9iamVjdCAqbmFtZTsKKyAgICBQeU9iamVjdCAqcGF0aDsKKyAgICBQeU9iamVjdCAqc3RhdDsKKyAgICBQeU9iamVjdCAqbHN0YXQ7CisjaWZkZWYgTVNfV0lORE9XUworICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgd2luMzJfbHN0YXQ7CisgICAgX19pbnQ2NCB3aW4zMl9maWxlX2luZGV4OworICAgIGludCBnb3RfZmlsZV9pbmRleDsKKyNlbHNlIC8qIFBPU0lYICovCisjaWZkZWYgSEFWRV9ESVJFTlRfRF9UWVBFCisgICAgdW5zaWduZWQgY2hhciBkX3R5cGU7CisjZW5kaWYKKyAgICBpbm9fdCBkX2lubzsKKyNlbmRpZgorfSBEaXJFbnRyeTsKKworc3RhdGljIHZvaWQKK0RpckVudHJ5X2RlYWxsb2MoRGlyRW50cnkgKmVudHJ5KQoreworICAgIFB5X1hERUNSRUYoZW50cnktPm5hbWUpOworICAgIFB5X1hERUNSRUYoZW50cnktPnBhdGgpOworICAgIFB5X1hERUNSRUYoZW50cnktPnN0YXQpOworICAgIFB5X1hERUNSRUYoZW50cnktPmxzdGF0KTsKKyAgICBQeV9UWVBFKGVudHJ5KS0+dHBfZnJlZSgoUHlPYmplY3QgKillbnRyeSk7Cit9CisKKy8qIEZvcndhcmQgcmVmZXJlbmNlICovCitzdGF0aWMgaW50CitEaXJFbnRyeV90ZXN0X21vZGUoRGlyRW50cnkgKnNlbGYsIGludCBmb2xsb3dfc3ltbGlua3MsIHVuc2lnbmVkIHNob3J0IG1vZGVfYml0cyk7CisKKy8qIFNldCBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvciwgMCBmb3IgRmFsc2UsIDEgZm9yIFRydWUgKi8KK3N0YXRpYyBpbnQKK0RpckVudHJ5X2lzX3N5bWxpbmsoRGlyRW50cnkgKnNlbGYpCit7CisjaWZkZWYgTVNfV0lORE9XUworICAgIHJldHVybiAoc2VsZi0+d2luMzJfbHN0YXQuc3RfbW9kZSAmIFNfSUZNVCkgPT0gU19JRkxOSzsKKyNlbGlmIGRlZmluZWQoSEFWRV9ESVJFTlRfRF9UWVBFKQorICAgIC8qIFBPU0lYICovCisgICAgaWYgKHNlbGYtPmRfdHlwZSAhPSBEVF9VTktOT1dOKQorICAgICAgICByZXR1cm4gc2VsZi0+ZF90eXBlID09IERUX0xOSzsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBEaXJFbnRyeV90ZXN0X21vZGUoc2VsZiwgMCwgU19JRkxOSyk7CisjZWxzZQorICAgIC8qIFBPU0lYIHdpdGhvdXQgZF90eXBlICovCisgICAgcmV0dXJuIERpckVudHJ5X3Rlc3RfbW9kZShzZWxmLCAwLCBTX0lGTE5LKTsKKyNlbmRpZgorfQorCitzdGF0aWMgUHlPYmplY3QgKgorRGlyRW50cnlfcHlfaXNfc3ltbGluayhEaXJFbnRyeSAqc2VsZikKK3sKKyAgICBpbnQgcmVzdWx0OworCisgICAgcmVzdWx0ID0gRGlyRW50cnlfaXNfc3ltbGluayhzZWxmKTsKKyAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitEaXJFbnRyeV9mZXRjaF9zdGF0KERpckVudHJ5ICpzZWxmLCBpbnQgZm9sbG93X3N5bWxpbmtzKQoreworICAgIGludCByZXN1bHQ7CisgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdDsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB3Y2hhcl90ICpwYXRoOworCisgICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUoc2VsZi0+cGF0aCk7CisgICAgaWYgKCFwYXRoKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChmb2xsb3dfc3ltbGlua3MpCisgICAgICAgIHJlc3VsdCA9IHdpbjMyX3N0YXRfdyhwYXRoLCAmc3QpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gd2luMzJfbHN0YXRfdyhwYXRoLCAmc3QpOworCisgICAgaWYgKHJlc3VsdCAhPSAwKSB7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19PU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgc2VsZi0+cGF0aCk7CisgICAgfQorI2Vsc2UgLyogUE9TSVggKi8KKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgY2hhciAqcGF0aDsKKworICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKHNlbGYtPnBhdGgsICZieXRlcykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHBhdGggPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyk7CisKKyAgICBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICByZXN1bHQgPSBTVEFUKHBhdGgsICZzdCk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBMU1RBVChwYXRoLCAmc3QpOworICAgIFB5X0RFQ1JFRihieXRlcyk7CisKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwgc2VsZi0+cGF0aCk7CisjZW5kaWYKKworICAgIHJldHVybiBfcHlzdGF0X2Zyb21zdHJ1Y3RzdGF0KCZzdCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitEaXJFbnRyeV9nZXRfbHN0YXQoRGlyRW50cnkgKnNlbGYpCit7CisgICAgaWYgKCFzZWxmLT5sc3RhdCkgeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgc2VsZi0+bHN0YXQgPSBfcHlzdGF0X2Zyb21zdHJ1Y3RzdGF0KCZzZWxmLT53aW4zMl9sc3RhdCk7CisjZWxzZSAvKiBQT1NJWCAqLworICAgICAgICBzZWxmLT5sc3RhdCA9IERpckVudHJ5X2ZldGNoX3N0YXQoc2VsZiwgMCk7CisjZW5kaWYKKyAgICB9CisgICAgUHlfWElOQ1JFRihzZWxmLT5sc3RhdCk7CisgICAgcmV0dXJuIHNlbGYtPmxzdGF0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRGlyRW50cnlfZ2V0X3N0YXQoRGlyRW50cnkgKnNlbGYsIGludCBmb2xsb3dfc3ltbGlua3MpCit7CisgICAgaWYgKCFmb2xsb3dfc3ltbGlua3MpCisgICAgICAgIHJldHVybiBEaXJFbnRyeV9nZXRfbHN0YXQoc2VsZik7CisKKyAgICBpZiAoIXNlbGYtPnN0YXQpIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IERpckVudHJ5X2lzX3N5bWxpbmsoc2VsZik7CisgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZWxzZSBpZiAocmVzdWx0KQorICAgICAgICAgICAgc2VsZi0+c3RhdCA9IERpckVudHJ5X2ZldGNoX3N0YXQoc2VsZiwgMSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlbGYtPnN0YXQgPSBEaXJFbnRyeV9nZXRfbHN0YXQoc2VsZik7CisgICAgfQorCisgICAgUHlfWElOQ1JFRihzZWxmLT5zdGF0KTsKKyAgICByZXR1cm4gc2VsZi0+c3RhdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X3N0YXQoRGlyRW50cnkgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifCRwOkRpckVudHJ5LnN0YXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rc19rZXl3b3JkcywgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIERpckVudHJ5X2dldF9zdGF0KHNlbGYsIGZvbGxvd19zeW1saW5rcyk7Cit9CisKKy8qIFNldCBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvciwgMCBmb3IgRmFsc2UsIDEgZm9yIFRydWUgKi8KK3N0YXRpYyBpbnQKK0RpckVudHJ5X3Rlc3RfbW9kZShEaXJFbnRyeSAqc2VsZiwgaW50IGZvbGxvd19zeW1saW5rcywgdW5zaWduZWQgc2hvcnQgbW9kZV9iaXRzKQoreworICAgIFB5T2JqZWN0ICpzdGF0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RfbW9kZSA9IE5VTEw7CisgICAgbG9uZyBtb2RlOworICAgIGludCByZXN1bHQ7CisjaWYgZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKEhBVkVfRElSRU5UX0RfVFlQRSkKKyAgICBpbnQgaXNfc3ltbGluazsKKyAgICBpbnQgbmVlZF9zdGF0OworI2VuZGlmCisjaWZkZWYgTVNfV0lORE9XUworICAgIHVuc2lnbmVkIGxvbmcgZGlyX2JpdHM7CisjZW5kaWYKKyAgICBfUHlfSURFTlRJRklFUihzdF9tb2RlKTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpc19zeW1saW5rID0gKHNlbGYtPndpbjMyX2xzdGF0LnN0X21vZGUgJiBTX0lGTVQpID09IFNfSUZMTks7CisgICAgbmVlZF9zdGF0ID0gZm9sbG93X3N5bWxpbmtzICYmIGlzX3N5bWxpbms7CisjZWxpZiBkZWZpbmVkKEhBVkVfRElSRU5UX0RfVFlQRSkKKyAgICBpc19zeW1saW5rID0gc2VsZi0+ZF90eXBlID09IERUX0xOSzsKKyAgICBuZWVkX3N0YXQgPSBzZWxmLT5kX3R5cGUgPT0gRFRfVU5LTk9XTiB8fCAoZm9sbG93X3N5bWxpbmtzICYmIGlzX3N5bWxpbmspOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoSEFWRV9ESVJFTlRfRF9UWVBFKQorICAgIGlmIChuZWVkX3N0YXQpIHsKKyNlbmRpZgorICAgICAgICBzdGF0ID0gRGlyRW50cnlfZ2V0X3N0YXQoc2VsZiwgZm9sbG93X3N5bWxpbmtzKTsKKyAgICAgICAgaWYgKCFzdGF0KSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19GaWxlTm90Rm91bmRFcnJvcikpIHsKKyAgICAgICAgICAgICAgICAvKiBJZiBmaWxlIGRvZXNuJ3QgZXhpc3QgKGFueW1vcmUpLCB0aGVuIHJldHVybiBGYWxzZQorICAgICAgICAgICAgICAgICAgIChpLmUuLCBzYXkgaXQncyBub3QgYSBmaWxlL2RpcmVjdG9yeSkgKi8KKyAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBzdF9tb2RlID0gX1B5T2JqZWN0X0dldEF0dHJJZChzdGF0LCAmUHlJZF9zdF9tb2RlKTsKKyAgICAgICAgaWYgKCFzdF9tb2RlKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICBtb2RlID0gUHlMb25nX0FzTG9uZyhzdF9tb2RlKTsKKyAgICAgICAgaWYgKG1vZGUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIFB5X0NMRUFSKHN0X21vZGUpOworICAgICAgICBQeV9DTEVBUihzdGF0KTsKKyAgICAgICAgcmVzdWx0ID0gKG1vZGUgJiBTX0lGTVQpID09IG1vZGVfYml0czsKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoSEFWRV9ESVJFTlRfRF9UWVBFKQorICAgIH0KKyAgICBlbHNlIGlmIChpc19zeW1saW5rKSB7CisgICAgICAgIGFzc2VydChtb2RlX2JpdHMgIT0gU19JRkxOSyk7CisgICAgICAgIHJlc3VsdCA9IDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQobW9kZV9iaXRzID09IFNfSUZESVIgfHwgbW9kZV9iaXRzID09IFNfSUZSRUcpOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgZGlyX2JpdHMgPSBzZWxmLT53aW4zMl9sc3RhdC5zdF9maWxlX2F0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlk7CisgICAgICAgIGlmIChtb2RlX2JpdHMgPT0gU19JRkRJUikKKyAgICAgICAgICAgIHJlc3VsdCA9IGRpcl9iaXRzICE9IDA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IGRpcl9iaXRzID09IDA7CisjZWxzZSAvKiBQT1NJWCAqLworICAgICAgICBpZiAobW9kZV9iaXRzID09IFNfSUZESVIpCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLT5kX3R5cGUgPT0gRFRfRElSOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLT5kX3R5cGUgPT0gRFRfUkVHOworI2VuZGlmCisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHN0X21vZGUpOworICAgIFB5X1hERUNSRUYoc3RhdCk7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRGlyRW50cnlfcHlfdGVzdF9tb2RlKERpckVudHJ5ICpzZWxmLCBpbnQgZm9sbG93X3N5bWxpbmtzLCB1bnNpZ25lZCBzaG9ydCBtb2RlX2JpdHMpCit7CisgICAgaW50IHJlc3VsdDsKKworICAgIHJlc3VsdCA9IERpckVudHJ5X3Rlc3RfbW9kZShzZWxmLCBmb2xsb3dfc3ltbGlua3MsIG1vZGVfYml0cyk7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRGlyRW50cnlfaXNfZGlyKERpckVudHJ5ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInwkcDpEaXJFbnRyeS5pc19kaXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rc19rZXl3b3JkcywgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIERpckVudHJ5X3B5X3Rlc3RfbW9kZShzZWxmLCBmb2xsb3dfc3ltbGlua3MsIFNfSUZESVIpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRGlyRW50cnlfaXNfZmlsZShEaXJFbnRyeSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8JHA6RGlyRW50cnkuaXNfZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzX2tleXdvcmRzLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gRGlyRW50cnlfcHlfdGVzdF9tb2RlKHNlbGYsIGZvbGxvd19zeW1saW5rcywgU19JRlJFRyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitEaXJFbnRyeV9pbm9kZShEaXJFbnRyeSAqc2VsZikKK3sKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKCFzZWxmLT5nb3RfZmlsZV9pbmRleCkgeworICAgICAgICB3Y2hhcl90ICpwYXRoOworICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0YXQ7CisKKyAgICAgICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUoc2VsZi0+cGF0aCk7CisgICAgICAgIGlmICghcGF0aCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGlmICh3aW4zMl9sc3RhdF93KHBhdGgsICZzdGF0KSAhPSAwKSB7CisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBzZWxmLT5wYXRoKTsKKyAgICAgICAgfQorCisgICAgICAgIHNlbGYtPndpbjMyX2ZpbGVfaW5kZXggPSBzdGF0LnN0X2lubzsKKyAgICAgICAgc2VsZi0+Z290X2ZpbGVfaW5kZXggPSAxOworICAgIH0KKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXNlbGYtPndpbjMyX2ZpbGVfaW5kZXgpOworI2Vsc2UgLyogUE9TSVggKi8KKyNpZmRlZiBIQVZFX0xBUkdFRklMRV9TVVBQT1JUCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORylzZWxmLT5kX2lubyk7CisjZWxzZQorICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpc2VsZi0+ZF9pbm8pOworI2VuZGlmCisjZW5kaWYKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X3JlcHIoRGlyRW50cnkgKnNlbGYpCit7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8RGlyRW50cnkgJVI+Iiwgc2VsZi0+bmFtZSk7Cit9CisKK3N0YXRpYyBQeU1lbWJlckRlZiBEaXJFbnRyeV9tZW1iZXJzW10gPSB7CisgICAgeyJuYW1lIiwgVF9PQkpFQ1RfRVgsIG9mZnNldG9mKERpckVudHJ5LCBuYW1lKSwgUkVBRE9OTFksCisgICAgICJ0aGUgZW50cnkncyBiYXNlIGZpbGVuYW1lLCByZWxhdGl2ZSB0byBzY2FuZGlyKCkgXCJwYXRoXCIgYXJndW1lbnQifSwKKyAgICB7InBhdGgiLCBUX09CSkVDVF9FWCwgb2Zmc2V0b2YoRGlyRW50cnksIHBhdGgpLCBSRUFET05MWSwKKyAgICAgInRoZSBlbnRyeSdzIGZ1bGwgcGF0aCBuYW1lOyBlcXVpdmFsZW50IHRvIG9zLnBhdGguam9pbihzY2FuZGlyX3BhdGgsIGVudHJ5Lm5hbWUpIn0sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlNZXRob2REZWYgRGlyRW50cnlfbWV0aG9kc1tdID0geworICAgIHsiaXNfZGlyIiwgKFB5Q0Z1bmN0aW9uKURpckVudHJ5X2lzX2RpciwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgInJldHVybiBUcnVlIGlmIHRoZSBlbnRyeSBpcyBhIGRpcmVjdG9yeTsgY2FjaGVkIHBlciBlbnRyeSIKKyAgICB9LAorICAgIHsiaXNfZmlsZSIsIChQeUNGdW5jdGlvbilEaXJFbnRyeV9pc19maWxlLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAicmV0dXJuIFRydWUgaWYgdGhlIGVudHJ5IGlzIGEgZmlsZTsgY2FjaGVkIHBlciBlbnRyeSIKKyAgICB9LAorICAgIHsiaXNfc3ltbGluayIsIChQeUNGdW5jdGlvbilEaXJFbnRyeV9weV9pc19zeW1saW5rLCBNRVRIX05PQVJHUywKKyAgICAgInJldHVybiBUcnVlIGlmIHRoZSBlbnRyeSBpcyBhIHN5bWJvbGljIGxpbms7IGNhY2hlZCBwZXIgZW50cnkiCisgICAgfSwKKyAgICB7InN0YXQiLCAoUHlDRnVuY3Rpb24pRGlyRW50cnlfc3RhdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgInJldHVybiBzdGF0X3Jlc3VsdCBvYmplY3QgZm9yIHRoZSBlbnRyeTsgY2FjaGVkIHBlciBlbnRyeSIKKyAgICB9LAorICAgIHsiaW5vZGUiLCAoUHlDRnVuY3Rpb24pRGlyRW50cnlfaW5vZGUsIE1FVEhfTk9BUkdTLAorICAgICAicmV0dXJuIGlub2RlIG9mIHRoZSBlbnRyeTsgY2FjaGVkIHBlciBlbnRyeSIsCisgICAgfSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgRGlyRW50cnlUeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgIE1PRE5BTUUgIi5EaXJFbnRyeSIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKERpckVudHJ5KSwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3RvcilEaXJFbnRyeV9kZWFsbG9jLCAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY29tcGFyZSAqLworICAgIChyZXByZnVuYylEaXJFbnRyeV9yZXByLCAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgRGlyRW50cnlfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBEaXJFbnRyeV9tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworfTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKworc3RhdGljIHdjaGFyX3QgKgoram9pbl9wYXRoX2ZpbGVuYW1lVyh3Y2hhcl90ICpwYXRoX3dpZGUsIHdjaGFyX3QqIGZpbGVuYW1lKQoreworICAgIFB5X3NzaXplX3QgcGF0aF9sZW47CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIHdjaGFyX3QgKnJlc3VsdDsKKyAgICB3Y2hhcl90IGNoOworCisgICAgaWYgKCFwYXRoX3dpZGUpIHsgLyogRGVmYXVsdCBhcmc6ICIuIiAqLworICAgICAgICBwYXRoX3dpZGUgPSBMIi4iOworICAgICAgICBwYXRoX2xlbiA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBwYXRoX2xlbiA9IHdjc2xlbihwYXRoX3dpZGUpOworICAgIH0KKworICAgIC8qIFRoZSArMSdzIGFyZSBmb3IgdGhlIHBhdGggc2VwYXJhdG9yIGFuZCB0aGUgTlVMICovCisgICAgc2l6ZSA9IHBhdGhfbGVuICsgMSArIHdjc2xlbihmaWxlbmFtZSkgKyAxOworICAgIHJlc3VsdCA9IFB5TWVtX05ldyh3Y2hhcl90LCBzaXplKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgd2NzY3B5KHJlc3VsdCwgcGF0aF93aWRlKTsKKyAgICBpZiAocGF0aF9sZW4gPiAwKSB7CisgICAgICAgIGNoID0gcmVzdWx0W3BhdGhfbGVuIC0gMV07CisgICAgICAgIGlmIChjaCAhPSBTRVAgJiYgY2ggIT0gQUxUU0VQICYmIGNoICE9IEwnOicpCisgICAgICAgICAgICByZXN1bHRbcGF0aF9sZW4rK10gPSBTRVA7CisgICAgICAgIHdjc2NweShyZXN1bHQgKyBwYXRoX2xlbiwgZmlsZW5hbWUpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRGlyRW50cnlfZnJvbV9maW5kX2RhdGEocGF0aF90ICpwYXRoLCBXSU4zMl9GSU5EX0RBVEFXICpkYXRhVykKK3sKKyAgICBEaXJFbnRyeSAqZW50cnk7CisgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gZmlsZV9pbmZvOworICAgIFVMT05HIHJlcGFyc2VfdGFnOworICAgIHdjaGFyX3QgKmpvaW5lZF9wYXRoOworCisgICAgZW50cnkgPSBQeU9iamVjdF9OZXcoRGlyRW50cnksICZEaXJFbnRyeVR5cGUpOworICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGVudHJ5LT5uYW1lID0gTlVMTDsKKyAgICBlbnRyeS0+cGF0aCA9IE5VTEw7CisgICAgZW50cnktPnN0YXQgPSBOVUxMOworICAgIGVudHJ5LT5sc3RhdCA9IE5VTEw7CisgICAgZW50cnktPmdvdF9maWxlX2luZGV4ID0gMDsKKworICAgIGVudHJ5LT5uYW1lID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihkYXRhVy0+Y0ZpbGVOYW1lLCAtMSk7CisgICAgaWYgKCFlbnRyeS0+bmFtZSkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGpvaW5lZF9wYXRoID0gam9pbl9wYXRoX2ZpbGVuYW1lVyhwYXRoLT53aWRlLCBkYXRhVy0+Y0ZpbGVOYW1lKTsKKyAgICBpZiAoIWpvaW5lZF9wYXRoKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgZW50cnktPnBhdGggPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGpvaW5lZF9wYXRoLCAtMSk7CisgICAgUHlNZW1fRnJlZShqb2luZWRfcGF0aCk7CisgICAgaWYgKCFlbnRyeS0+cGF0aCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGZpbmRfZGF0YV90b19maWxlX2luZm9fdyhkYXRhVywgJmZpbGVfaW5mbywgJnJlcGFyc2VfdGFnKTsKKyAgICBfUHlfYXR0cmlidXRlX2RhdGFfdG9fc3RhdCgmZmlsZV9pbmZvLCByZXBhcnNlX3RhZywgJmVudHJ5LT53aW4zMl9sc3RhdCk7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopZW50cnk7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihlbnRyeSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKyNlbHNlIC8qIFBPU0lYICovCisKK3N0YXRpYyBjaGFyICoKK2pvaW5fcGF0aF9maWxlbmFtZShjaGFyICpwYXRoX25hcnJvdywgY2hhciogZmlsZW5hbWUsIFB5X3NzaXplX3QgZmlsZW5hbWVfbGVuKQoreworICAgIFB5X3NzaXplX3QgcGF0aF9sZW47CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIGNoYXIgKnJlc3VsdDsKKworICAgIGlmICghcGF0aF9uYXJyb3cpIHsgLyogRGVmYXVsdCBhcmc6ICIuIiAqLworICAgICAgICBwYXRoX25hcnJvdyA9ICIuIjsKKyAgICAgICAgcGF0aF9sZW4gPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcGF0aF9sZW4gPSBzdHJsZW4ocGF0aF9uYXJyb3cpOworICAgIH0KKworICAgIGlmIChmaWxlbmFtZV9sZW4gPT0gLTEpCisgICAgICAgIGZpbGVuYW1lX2xlbiA9IHN0cmxlbihmaWxlbmFtZSk7CisKKyAgICAvKiBUaGUgKzEncyBhcmUgZm9yIHRoZSBwYXRoIHNlcGFyYXRvciBhbmQgdGhlIE5VTCAqLworICAgIHNpemUgPSBwYXRoX2xlbiArIDEgKyBmaWxlbmFtZV9sZW4gKyAxOworICAgIHJlc3VsdCA9IFB5TWVtX05ldyhjaGFyLCBzaXplKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgc3RyY3B5KHJlc3VsdCwgcGF0aF9uYXJyb3cpOworICAgIGlmIChwYXRoX2xlbiA+IDAgJiYgcmVzdWx0W3BhdGhfbGVuIC0gMV0gIT0gJy8nKQorICAgICAgICByZXN1bHRbcGF0aF9sZW4rK10gPSAnLyc7CisgICAgc3RyY3B5KHJlc3VsdCArIHBhdGhfbGVuLCBmaWxlbmFtZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X2Zyb21fcG9zaXhfaW5mbyhwYXRoX3QgKnBhdGgsIGNoYXIgKm5hbWUsIFB5X3NzaXplX3QgbmFtZV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgaW5vX3QgZF9pbm8KKyNpZmRlZiBIQVZFX0RJUkVOVF9EX1RZUEUKKyAgICAgICAgICAgICAgICAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIgZF90eXBlCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisgICAgRGlyRW50cnkgKmVudHJ5OworICAgIGNoYXIgKmpvaW5lZF9wYXRoOworCisgICAgZW50cnkgPSBQeU9iamVjdF9OZXcoRGlyRW50cnksICZEaXJFbnRyeVR5cGUpOworICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGVudHJ5LT5uYW1lID0gTlVMTDsKKyAgICBlbnRyeS0+cGF0aCA9IE5VTEw7CisgICAgZW50cnktPnN0YXQgPSBOVUxMOworICAgIGVudHJ5LT5sc3RhdCA9IE5VTEw7CisKKyAgICBqb2luZWRfcGF0aCA9IGpvaW5fcGF0aF9maWxlbmFtZShwYXRoLT5uYXJyb3csIG5hbWUsIG5hbWVfbGVuKTsKKyAgICBpZiAoIWpvaW5lZF9wYXRoKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgaWYgKCFwYXRoLT5uYXJyb3cgfHwgIVB5Qnl0ZXNfQ2hlY2socGF0aC0+b2JqZWN0KSkgeworICAgICAgICBlbnRyeS0+bmFtZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKG5hbWUsIG5hbWVfbGVuKTsKKyAgICAgICAgZW50cnktPnBhdGggPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGpvaW5lZF9wYXRoKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGVudHJ5LT5uYW1lID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShuYW1lLCBuYW1lX2xlbik7CisgICAgICAgIGVudHJ5LT5wYXRoID0gUHlCeXRlc19Gcm9tU3RyaW5nKGpvaW5lZF9wYXRoKTsKKyAgICB9CisgICAgUHlNZW1fRnJlZShqb2luZWRfcGF0aCk7CisgICAgaWYgKCFlbnRyeS0+bmFtZSB8fCAhZW50cnktPnBhdGgpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyNpZmRlZiBIQVZFX0RJUkVOVF9EX1RZUEUKKyAgICBlbnRyeS0+ZF90eXBlID0gZF90eXBlOworI2VuZGlmCisgICAgZW50cnktPmRfaW5vID0gZF9pbm87CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopZW50cnk7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoZW50cnkpOworICAgIHJldHVybiBOVUxMOworfQorCisjZW5kaWYKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIHBhdGhfdCBwYXRoOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIFdJTjMyX0ZJTkRfREFUQVcgZmlsZV9kYXRhOworICAgIGludCBmaXJzdF90aW1lOworI2Vsc2UgLyogUE9TSVggKi8KKyAgICBESVIgKmRpcnA7CisjZW5kaWYKK30gU2NhbmRpckl0ZXJhdG9yOworCisjaWZkZWYgTVNfV0lORE9XUworCitzdGF0aWMgdm9pZAorU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCit7CisgICAgaWYgKGl0ZXJhdG9yLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybjsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBGaW5kQ2xvc2UoaXRlcmF0b3ItPmhhbmRsZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpdGVyYXRvci0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitTY2FuZGlySXRlcmF0b3JfaXRlcm5leHQoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXICpmaWxlX2RhdGEgPSAmaXRlcmF0b3ItPmZpbGVfZGF0YTsKKyAgICBCT09MIHN1Y2Nlc3M7CisKKyAgICAvKiBIYXBwZW5zIGlmIHRoZSBpdGVyYXRvciBpcyBpdGVyYXRlZCB0d2ljZSAqLworICAgIGlmIChpdGVyYXRvci0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIGlmICghaXRlcmF0b3ItPmZpcnN0X3RpbWUpIHsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBGaW5kTmV4dEZpbGVXKGl0ZXJhdG9yLT5oYW5kbGUsIGZpbGVfZGF0YSk7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICAgICAgaWYgKEdldExhc3RFcnJvcigpICE9IEVSUk9SX05PX01PUkVfRklMRVMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKCZpdGVyYXRvci0+cGF0aCk7CisgICAgICAgICAgICAgICAgLyogTm8gbW9yZSBmaWxlcyBmb3VuZCBpbiBkaXJlY3RvcnksIHN0b3AgaXRlcmF0aW5nICovCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaXRlcmF0b3ItPmZpcnN0X3RpbWUgPSAwOworCisgICAgICAgIC8qIFNraXAgb3ZlciAuIGFuZCAuLiAqLworICAgICAgICBpZiAod2NzY21wKGZpbGVfZGF0YS0+Y0ZpbGVOYW1lLCBMIi4iKSAhPSAwICYmCisgICAgICAgICAgICAgICAgd2NzY21wKGZpbGVfZGF0YS0+Y0ZpbGVOYW1lLCBMIi4uIikgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiBEaXJFbnRyeV9mcm9tX2ZpbmRfZGF0YSgmaXRlcmF0b3ItPnBhdGgsIGZpbGVfZGF0YSk7CisKKyAgICAgICAgLyogTG9vcCB0aWxsIHdlIGdldCBhIG5vbi1kb3QgZGlyZWN0b3J5IG9yIGZpbmlzaCBpdGVyYXRpbmcgKi8KKyAgICB9CisKKyAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2UoaXRlcmF0b3IpOworCisgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworI2Vsc2UgLyogUE9TSVggKi8KKworc3RhdGljIHZvaWQKK1NjYW5kaXJJdGVyYXRvcl9jbG9zZShTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQoreworICAgIGlmICghaXRlcmF0b3ItPmRpcnApCisgICAgICAgIHJldHVybjsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBjbG9zZWRpcihpdGVyYXRvci0+ZGlycCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpdGVyYXRvci0+ZGlycCA9IE5VTEw7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorU2NhbmRpckl0ZXJhdG9yX2l0ZXJuZXh0KFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCit7CisgICAgc3RydWN0IGRpcmVudCAqZGlyZW50cDsKKyAgICBQeV9zc2l6ZV90IG5hbWVfbGVuOworICAgIGludCBpc19kb3Q7CisKKyAgICAvKiBIYXBwZW5zIGlmIHRoZSBpdGVyYXRvciBpcyBpdGVyYXRlZCB0d2ljZSAqLworICAgIGlmICghaXRlcmF0b3ItPmRpcnApIHsKKyAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgZXJybm8gPSAwOworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGRpcmVudHAgPSByZWFkZGlyKGl0ZXJhdG9yLT5kaXJwKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgICAgICBpZiAoIWRpcmVudHApIHsKKyAgICAgICAgICAgIGlmIChlcnJubyAhPSAwKQorICAgICAgICAgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKCZpdGVyYXRvci0+cGF0aCk7CisgICAgICAgICAgICAvKiBObyBtb3JlIGZpbGVzIGZvdW5kIGluIGRpcmVjdG9yeSwgc3RvcCBpdGVyYXRpbmcgKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLyogU2tpcCBvdmVyIC4gYW5kIC4uICovCisgICAgICAgIG5hbWVfbGVuID0gTkFNTEVOKGRpcmVudHApOworICAgICAgICBpc19kb3QgPSBkaXJlbnRwLT5kX25hbWVbMF0gPT0gJy4nICYmCisgICAgICAgICAgICAgICAgIChuYW1lX2xlbiA9PSAxIHx8IChkaXJlbnRwLT5kX25hbWVbMV0gPT0gJy4nICYmIG5hbWVfbGVuID09IDIpKTsKKyAgICAgICAgaWYgKCFpc19kb3QpIHsKKyAgICAgICAgICAgIHJldHVybiBEaXJFbnRyeV9mcm9tX3Bvc2l4X2luZm8oJml0ZXJhdG9yLT5wYXRoLCBkaXJlbnRwLT5kX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfbGVuLCBkaXJlbnRwLT5kX2lubworI2lmZGVmIEhBVkVfRElSRU5UX0RfVFlQRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGRpcmVudHAtPmRfdHlwZQorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICAvKiBMb29wIHRpbGwgd2UgZ2V0IGEgbm9uLWRvdCBkaXJlY3Rvcnkgb3IgZmluaXNoIGl0ZXJhdGluZyAqLworICAgIH0KKworICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZShpdGVyYXRvcik7CisKKyAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgIHJldHVybiBOVUxMOworfQorCisjZW5kaWYKKworc3RhdGljIHZvaWQKK1NjYW5kaXJJdGVyYXRvcl9kZWFsbG9jKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCit7CisgICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKGl0ZXJhdG9yKTsKKyAgICBQeV9YREVDUkVGKGl0ZXJhdG9yLT5wYXRoLm9iamVjdCk7CisgICAgcGF0aF9jbGVhbnVwKCZpdGVyYXRvci0+cGF0aCk7CisgICAgUHlfVFlQRShpdGVyYXRvciktPnRwX2ZyZWUoKFB5T2JqZWN0ICopaXRlcmF0b3IpOworfQorCitzdGF0aWMgUHlUeXBlT2JqZWN0IFNjYW5kaXJJdGVyYXRvclR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgTU9ETkFNRSAiLlNjYW5kaXJJdGVyYXRvciIsICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoU2NhbmRpckl0ZXJhdG9yKSwgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKVNjYW5kaXJJdGVyYXRvcl9kZWFsbG9jLCAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAoaXRlcm5leHRmdW5jKVNjYW5kaXJJdGVyYXRvcl9pdGVybmV4dCwgLyogdHBfaXRlcm5leHQgKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2FuZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisjaWZkZWYgTVNfV0lORE9XUworICAgIHdjaGFyX3QgKnBhdGhfc3RyVzsKKyNlbHNlCisgICAgY2hhciAqcGF0aDsKKyNlbmRpZgorCisgICAgaXRlcmF0b3IgPSBQeU9iamVjdF9OZXcoU2NhbmRpckl0ZXJhdG9yLCAmU2NhbmRpckl0ZXJhdG9yVHlwZSk7CisgICAgaWYgKCFpdGVyYXRvcikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbWVtc2V0KCZpdGVyYXRvci0+cGF0aCwgMCwgc2l6ZW9mKHBhdGhfdCkpOworICAgIGl0ZXJhdG9yLT5wYXRoLmZ1bmN0aW9uX25hbWUgPSAic2NhbmRpciI7CisgICAgaXRlcmF0b3ItPnBhdGgubnVsbGFibGUgPSAxOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGl0ZXJhdG9yLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKyNlbHNlCisgICAgaXRlcmF0b3ItPmRpcnAgPSBOVUxMOworI2VuZGlmCisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TyY6c2NhbmRpciIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmaXRlcmF0b3ItPnBhdGgpKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgLyogcGF0aF9jb252ZXJ0ZXIgZG9lc24ndCBrZWVwIHBhdGgub2JqZWN0IGFyb3VuZCwgc28gZG8gaXQKKyAgICAgICBtYW51YWxseSBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBpdGVyYXRvciBoZXJlICh0aGUgcmVmY291bnQKKyAgICAgICBpcyBkZWNyZW1lbnRlZCBpbiBTY2FuZGlySXRlcmF0b3JfZGVhbGxvYykKKyAgICAqLworICAgIFB5X1hJTkNSRUYoaXRlcmF0b3ItPnBhdGgub2JqZWN0KTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoaXRlcmF0b3ItPnBhdGgubmFycm93KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAib3Muc2NhbmRpcigpIGRvZXNuJ3Qgc3VwcG9ydCBieXRlcyBwYXRoIG9uIFdpbmRvd3MsIHVzZSBVbmljb2RlIGluc3RlYWQiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaXRlcmF0b3ItPmZpcnN0X3RpbWUgPSAxOworCisgICAgcGF0aF9zdHJXID0gam9pbl9wYXRoX2ZpbGVuYW1lVyhpdGVyYXRvci0+cGF0aC53aWRlLCBMIiouKiIpOworICAgIGlmICghcGF0aF9zdHJXKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGl0ZXJhdG9yLT5oYW5kbGUgPSBGaW5kRmlyc3RGaWxlVyhwYXRoX3N0clcsICZpdGVyYXRvci0+ZmlsZV9kYXRhKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgUHlNZW1fRnJlZShwYXRoX3N0clcpOworCisgICAgaWYgKGl0ZXJhdG9yLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgcGF0aF9lcnJvcigmaXRlcmF0b3ItPnBhdGgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyNlbHNlIC8qIFBPU0lYICovCisgICAgaWYgKGl0ZXJhdG9yLT5wYXRoLm5hcnJvdykKKyAgICAgICAgcGF0aCA9IGl0ZXJhdG9yLT5wYXRoLm5hcnJvdzsKKyAgICBlbHNlCisgICAgICAgIHBhdGggPSAiLiI7CisKKyAgICBlcnJubyA9IDA7CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGl0ZXJhdG9yLT5kaXJwID0gb3BlbmRpcihwYXRoKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFpdGVyYXRvci0+ZGlycCkgeworICAgICAgICBwYXRoX2Vycm9yKCZpdGVyYXRvci0+cGF0aCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopaXRlcmF0b3I7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihpdGVyYXRvcik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworI2luY2x1ZGUgImNsaW5pYy9wb3NpeG1vZHVsZS5jLmgiCiAKIC8qW2NsaW5pYyBpbnB1dF0KIGR1bXAgYnVmZmVyCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0KLSNpZm5kZWYgT1NfVFRZTkFNRV9NRVRIT0RERUYKLSAgICAjZGVmaW5lIE9TX1RUWU5BTUVfTUVUSE9EREVGCi0jZW5kaWYgLyogIWRlZmluZWQoT1NfVFRZTkFNRV9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWQwNzFiYmM4ZjQ5ZWExMiBpbnB1dD01MjRjZTJlMDIxZTRlYmE2XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD01MjRjZTJlMDIxZTRlYmE2XSovCiAKIAogc3RhdGljIFB5TWV0aG9kRGVmIHBvc2l4X21ldGhvZHNbXSA9IHsKQEAgLTExMjE1LDcxICsxMjE3NiwyNiBAQAogICAgIE9TX1NUQVRfTUVUSE9EREVGCiAgICAgT1NfQUNDRVNTX01FVEhPRERFRgogICAgIE9TX1RUWU5BTUVfTUVUSE9EREVGCi0KLSAgICB7ImNoZGlyIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9jaGRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9jaGRpcl9fZG9jX199LAotI2lmZGVmIEhBVkVfQ0hGTEFHUwotICAgIHsiY2hmbGFncyIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2NoZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfY2hmbGFnc19fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfQ0hGTEFHUyAqLwotICAgIHsiY2htb2QiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2NobW9kLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2NobW9kX19kb2NfX30sCi0jaWZkZWYgSEFWRV9GQ0hNT0QKLSAgICB7ImZjaG1vZCIsICAgICAgICAgIHBvc2l4X2ZjaG1vZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9mY2htb2RfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0ZDSE1PRCAqLwotI2lmZGVmIEhBVkVfQ0hPV04KLSAgICB7ImNob3duIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9jaG93biwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9jaG93bl9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfQ0hPV04gKi8KLSNpZmRlZiBIQVZFX0xDSE1PRAotICAgIHsibGNobW9kIiwgICAgICAgICAgcG9zaXhfbGNobW9kLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xjaG1vZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfTENITU9EICovCi0jaWZkZWYgSEFWRV9GQ0hPV04KLSAgICB7ImZjaG93biIsICAgICAgICAgIHBvc2l4X2ZjaG93biwgTUVUSF9WQVJBUkdTLCBwb3NpeF9mY2hvd25fX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0ZDSE9XTiAqLwotI2lmZGVmIEhBVkVfTENIRkxBR1MKLSAgICB7ImxjaGZsYWdzIiwgICAgICAgIHBvc2l4X2xjaGZsYWdzLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xjaGZsYWdzX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9MQ0hGTEFHUyAqLwotI2lmZGVmIEhBVkVfTENIT1dOCi0gICAgeyJsY2hvd24iLCAgICAgICAgICBwb3NpeF9sY2hvd24sIE1FVEhfVkFSQVJHUywgcG9zaXhfbGNob3duX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9MQ0hPV04gKi8KLSNpZmRlZiBIQVZFX0NIUk9PVAotICAgIHsiY2hyb290IiwgICAgICAgICAgcG9zaXhfY2hyb290LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2Nocm9vdF9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9DVEVSTUlECi0gICAgeyJjdGVybWlkIiwgICAgICAgICBwb3NpeF9jdGVybWlkLCBNRVRIX05PQVJHUywgcG9zaXhfY3Rlcm1pZF9fZG9jX199LAotI2VuZGlmCi0gICAgeyJnZXRjd2QiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfZ2V0Y3dkX3VuaWNvZGUsCi0gICAgTUVUSF9OT0FSR1MsIHBvc2l4X2dldGN3ZF9fZG9jX199LAotICAgIHsiZ2V0Y3dkYiIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2dldGN3ZF9ieXRlcywKLSAgICBNRVRIX05PQVJHUywgcG9zaXhfZ2V0Y3dkYl9fZG9jX199LAotI2lmIGRlZmluZWQoSEFWRV9MSU5LKSB8fCBkZWZpbmVkKE1TX1dJTkRPV1MpCi0gICAgeyJsaW5rIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbGluaywKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9saW5rX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9MSU5LICovCi0gICAgeyJsaXN0ZGlyIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbGlzdGRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9saXN0ZGlyX19kb2NfX30sCi0gICAgeyJsc3RhdCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbHN0YXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbHN0YXRfX2RvY19ffSwKLSAgICB7Im1rZGlyIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9ta2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9ta2Rpcl9fZG9jX199LAotI2lmZGVmIEhBVkVfTklDRQotICAgIHsibmljZSIsICAgICAgICAgICAgcG9zaXhfbmljZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9uaWNlX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9OSUNFICovCi0jaWZkZWYgSEFWRV9HRVRQUklPUklUWQotICAgIHsiZ2V0cHJpb3JpdHkiLCAgICAgcG9zaXhfZ2V0cHJpb3JpdHksIE1FVEhfVkFSQVJHUywgcG9zaXhfZ2V0cHJpb3JpdHlfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0dFVFBSSU9SSVRZICovCi0jaWZkZWYgSEFWRV9TRVRQUklPUklUWQotICAgIHsic2V0cHJpb3JpdHkiLCAgICAgcG9zaXhfc2V0cHJpb3JpdHksIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0cHJpb3JpdHlfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1NFVFBSSU9SSVRZICovCisgICAgT1NfQ0hESVJfTUVUSE9EREVGCisgICAgT1NfQ0hGTEFHU19NRVRIT0RERUYKKyAgICBPU19DSE1PRF9NRVRIT0RERUYKKyAgICBPU19GQ0hNT0RfTUVUSE9EREVGCisgICAgT1NfTENITU9EX01FVEhPRERFRgorICAgIE9TX0NIT1dOX01FVEhPRERFRgorICAgIE9TX0ZDSE9XTl9NRVRIT0RERUYKKyAgICBPU19MQ0hPV05fTUVUSE9EREVGCisgICAgT1NfTENIRkxBR1NfTUVUSE9EREVGCisgICAgT1NfQ0hST09UX01FVEhPRERFRgorICAgIE9TX0NURVJNSURfTUVUSE9EREVGCisgICAgT1NfR0VUQ1dEX01FVEhPRERFRgorICAgIE9TX0dFVENXREJfTUVUSE9EREVGCisgICAgT1NfTElOS19NRVRIT0RERUYKKyAgICBPU19MSVNURElSX01FVEhPRERFRgorICAgIE9TX0xTVEFUX01FVEhPRERFRgorICAgIE9TX01LRElSX01FVEhPRERFRgorICAgIE9TX05JQ0VfTUVUSE9EREVGCisgICAgT1NfR0VUUFJJT1JJVFlfTUVUSE9EREVGCisgICAgT1NfU0VUUFJJT1JJVFlfTUVUSE9EREVGCiAjaWZkZWYgSEFWRV9SRUFETElOSwogICAgIHsicmVhZGxpbmsiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JlYWRsaW5rLAogICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKQEAgLTExMjkwLDM3NiArMTIyMDYsMTYyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAogICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGxpbmtfX2RvY19ffSwKICNlbmRpZiAvKiAhZGVmaW5lZChIQVZFX1JFQURMSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCi0gICAgeyJyZW5hbWUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfcmVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3JlbmFtZV9fZG9jX199LAotICAgIHsicmVwbGFjZSIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JlcGxhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfcmVwbGFjZV9fZG9jX199LAotICAgIHsicm1kaXIiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JtZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3JtZGlyX19kb2NfX30sCisgICAgT1NfUkVOQU1FX01FVEhPRERFRgorICAgIE9TX1JFUExBQ0VfTUVUSE9EREVGCisgICAgT1NfUk1ESVJfTUVUSE9EREVGCiAgICAgeyJzdGF0X2Zsb2F0X3RpbWVzIiwgc3RhdF9mbG9hdF90aW1lcywgTUVUSF9WQVJBUkdTLCBzdGF0X2Zsb2F0X3RpbWVzX19kb2NfX30sCi0jaWYgZGVmaW5lZChIQVZFX1NZTUxJTkspCi0gICAgeyJzeW1saW5rIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfc3ltbGluaywKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9zeW1saW5rX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TWU1MSU5LICovCi0jaWZkZWYgSEFWRV9TWVNURU0KLSAgICB7InN5c3RlbSIsICAgICAgICAgIHBvc2l4X3N5c3RlbSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zeXN0ZW1fX2RvY19ffSwKLSNlbmRpZgotICAgIHsidW1hc2siLCAgICAgICAgICAgcG9zaXhfdW1hc2ssIE1FVEhfVkFSQVJHUywgcG9zaXhfdW1hc2tfX2RvY19ffSwKLSNpZmRlZiBIQVZFX1VOQU1FCi0gICAgeyJ1bmFtZSIsICAgICAgICAgICBwb3NpeF91bmFtZSwgTUVUSF9OT0FSR1MsIHBvc2l4X3VuYW1lX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9VTkFNRSAqLwotICAgIHsidW5saW5rIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3VubGluaywKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF91bmxpbmtfX2RvY19ffSwKLSAgICB7InJlbW92ZSIsICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF91bmxpbmssCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfcmVtb3ZlX19kb2NfX30sCi0gICAgeyJ1dGltZSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfdXRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBwb3NpeF91dGltZV9fZG9jX199LAotI2lmZGVmIEhBVkVfVElNRVMKLSAgICB7InRpbWVzIiwgICAgICAgICAgIHBvc2l4X3RpbWVzLCBNRVRIX05PQVJHUywgcG9zaXhfdGltZXNfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1RJTUVTICovCi0gICAgeyJfZXhpdCIsICAgICAgICAgICBwb3NpeF9fZXhpdCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9fZXhpdF9fZG9jX199LAotI2lmZGVmIEhBVkVfRVhFQ1YKLSAgICB7ImV4ZWN2IiwgICAgICAgICAgIHBvc2l4X2V4ZWN2LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2V4ZWN2X19kb2NfX30sCi0gICAgeyJleGVjdmUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfZXhlY3ZlLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2V4ZWN2ZV9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfRVhFQ1YgKi8KLSNpZmRlZiBIQVZFX1NQQVdOVgotICAgIHsic3Bhd252IiwgICAgICAgICAgcG9zaXhfc3Bhd252LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NwYXdudl9fZG9jX199LAotICAgIHsic3Bhd252ZSIsICAgICAgICAgcG9zaXhfc3Bhd252ZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zcGF3bnZlX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TUEFXTlYgKi8KLSNpZmRlZiBIQVZFX0ZPUksxCi0gICAgeyJmb3JrMSIsICAgICAgIHBvc2l4X2ZvcmsxLCBNRVRIX05PQVJHUywgcG9zaXhfZm9yazFfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0ZPUksxICovCi0jaWZkZWYgSEFWRV9GT1JLCi0gICAgeyJmb3JrIiwgICAgICAgICAgICBwb3NpeF9mb3JrLCBNRVRIX05PQVJHUywgcG9zaXhfZm9ya19fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfRk9SSyAqLwotI2lmZGVmIEhBVkVfU0NIRURfSAotI2lmZGVmIEhBVkVfU0NIRURfR0VUX1BSSU9SSVRZX01BWAotICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsIHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9tYXgsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9fZG9jX199LAotICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9taW4sIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9TQ0hFRF9TRVRQQVJBTQotICAgIHsic2NoZWRfZ2V0cGFyYW0iLCBwb3NpeF9zY2hlZF9nZXRwYXJhbSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9nZXRwYXJhbV9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIKLSAgICB7InNjaGVkX2dldHNjaGVkdWxlciIsIHBvc2l4X3NjaGVkX2dldHNjaGVkdWxlciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9nZXRzY2hlZHVsZXJfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfU0NIRURfUlJfR0VUX0lOVEVSVkFMCi0gICAgeyJzY2hlZF9ycl9nZXRfaW50ZXJ2YWwiLCBwb3NpeF9zY2hlZF9ycl9nZXRfaW50ZXJ2YWwsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfcnJfZ2V0X2ludGVydmFsX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NDSEVEX1NFVFBBUkFNCi0gICAgeyJzY2hlZF9zZXRwYXJhbSIsIHBvc2l4X3NjaGVkX3NldHBhcmFtLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX3NldHBhcmFtX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUgotICAgIHsic2NoZWRfc2V0c2NoZWR1bGVyIiwgcG9zaXhfc2NoZWRfc2V0c2NoZWR1bGVyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX3NldHNjaGVkdWxlcl9fZG9jX199LAotI2VuZGlmCi0gICAgeyJzY2hlZF95aWVsZCIsICAgICBwb3NpeF9zY2hlZF95aWVsZCwgTUVUSF9OT0FSR1MsIHBvc2l4X3NjaGVkX3lpZWxkX19kb2NfX30sCi0jaWZkZWYgSEFWRV9TQ0hFRF9TRVRBRkZJTklUWQotICAgIHsic2NoZWRfc2V0YWZmaW5pdHkiLCBwb3NpeF9zY2hlZF9zZXRhZmZpbml0eSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9zZXRhZmZpbml0eV9fZG9jX199LAotICAgIHsic2NoZWRfZ2V0YWZmaW5pdHkiLCBwb3NpeF9zY2hlZF9nZXRhZmZpbml0eSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9nZXRhZmZpbml0eV9fZG9jX199LAotI2VuZGlmCi0jZW5kaWYgLyogSEFWRV9TQ0hFRF9IICovCi0jaWYgZGVmaW5lZChIQVZFX09QRU5QVFkpIHx8IGRlZmluZWQoSEFWRV9fR0VUUFRZKSB8fCBkZWZpbmVkKEhBVkVfREVWX1BUTVgpCi0gICAgeyJvcGVucHR5IiwgICAgICAgICBwb3NpeF9vcGVucHR5LCBNRVRIX05PQVJHUywgcG9zaXhfb3BlbnB0eV9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfT1BFTlBUWSB8fCBIQVZFX19HRVRQVFkgfHwgSEFWRV9ERVZfUFRNWCAqLwotI2lmZGVmIEhBVkVfRk9SS1BUWQotICAgIHsiZm9ya3B0eSIsICAgICAgICAgcG9zaXhfZm9ya3B0eSwgTUVUSF9OT0FSR1MsIHBvc2l4X2ZvcmtwdHlfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0ZPUktQVFkgKi8KLSNpZmRlZiBIQVZFX0dFVEVHSUQKLSAgICB7ImdldGVnaWQiLCAgICAgICAgIHBvc2l4X2dldGVnaWQsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRlZ2lkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9HRVRFR0lEICovCi0jaWZkZWYgSEFWRV9HRVRFVUlECi0gICAgeyJnZXRldWlkIiwgICAgICAgICBwb3NpeF9nZXRldWlkLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0ZXVpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfR0VURVVJRCAqLwotI2lmZGVmIEhBVkVfR0VUR0lECi0gICAgeyJnZXRnaWQiLCAgICAgICAgICBwb3NpeF9nZXRnaWQsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRnaWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0dFVEdJRCAqLworICAgIE9TX1NZTUxJTktfTUVUSE9EREVGCisgICAgT1NfU1lTVEVNX01FVEhPRERFRgorICAgIE9TX1VNQVNLX01FVEhPRERFRgorICAgIE9TX1VOQU1FX01FVEhPRERFRgorICAgIE9TX1VOTElOS19NRVRIT0RERUYKKyAgICBPU19SRU1PVkVfTUVUSE9EREVGCisgICAgT1NfVVRJTUVfTUVUSE9EREVGCisgICAgT1NfVElNRVNfTUVUSE9EREVGCisgICAgT1NfX0VYSVRfTUVUSE9EREVGCisgICAgT1NfRVhFQ1ZfTUVUSE9EREVGCisgICAgT1NfRVhFQ1ZFX01FVEhPRERFRgorICAgIE9TX1NQQVdOVl9NRVRIT0RERUYKKyAgICBPU19TUEFXTlZFX01FVEhPRERFRgorICAgIE9TX0ZPUksxX01FVEhPRERFRgorICAgIE9TX0ZPUktfTUVUSE9EREVGCisgICAgT1NfU0NIRURfR0VUX1BSSU9SSVRZX01BWF9NRVRIT0RERUYKKyAgICBPU19TQ0hFRF9HRVRfUFJJT1JJVFlfTUlOX01FVEhPRERFRgorICAgIE9TX1NDSEVEX0dFVFBBUkFNX01FVEhPRERFRgorICAgIE9TX1NDSEVEX0dFVFNDSEVEVUxFUl9NRVRIT0RERUYKKyAgICBPU19TQ0hFRF9SUl9HRVRfSU5URVJWQUxfTUVUSE9EREVGCisgICAgT1NfU0NIRURfU0VUUEFSQU1fTUVUSE9EREVGCisgICAgT1NfU0NIRURfU0VUU0NIRURVTEVSX01FVEhPRERFRgorICAgIE9TX1NDSEVEX1lJRUxEX01FVEhPRERFRgorICAgIE9TX1NDSEVEX1NFVEFGRklOSVRZX01FVEhPRERFRgorICAgIE9TX1NDSEVEX0dFVEFGRklOSVRZX01FVEhPRERFRgorICAgIE9TX09QRU5QVFlfTUVUSE9EREVGCisgICAgT1NfRk9SS1BUWV9NRVRIT0RERUYKKyAgICBPU19HRVRFR0lEX01FVEhPRERFRgorICAgIE9TX0dFVEVVSURfTUVUSE9EREVGCisgICAgT1NfR0VUR0lEX01FVEhPRERFRgogI2lmZGVmIEhBVkVfR0VUR1JPVVBMSVNUCiAgICAgeyJnZXRncm91cGxpc3QiLCAgICBwb3NpeF9nZXRncm91cGxpc3QsIE1FVEhfVkFSQVJHUywgcG9zaXhfZ2V0Z3JvdXBsaXN0X19kb2NfX30sCiAjZW5kaWYKLSNpZmRlZiBIQVZFX0dFVEdST1VQUwotICAgIHsiZ2V0Z3JvdXBzIiwgICAgICAgcG9zaXhfZ2V0Z3JvdXBzLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0Z3JvdXBzX19kb2NfX30sCi0jZW5kaWYKLSAgICB7ImdldHBpZCIsICAgICAgICAgIHBvc2l4X2dldHBpZCwgTUVUSF9OT0FSR1MsIHBvc2l4X2dldHBpZF9fZG9jX199LAotI2lmZGVmIEhBVkVfR0VUUEdSUAotICAgIHsiZ2V0cGdycCIsICAgICAgICAgcG9zaXhfZ2V0cGdycCwgTUVUSF9OT0FSR1MsIHBvc2l4X2dldHBncnBfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0dFVFBHUlAgKi8KLSNpZmRlZiBIQVZFX0dFVFBQSUQKLSAgICB7ImdldHBwaWQiLCAgICAgICAgIHBvc2l4X2dldHBwaWQsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRwcGlkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9HRVRQUElEICovCi0jaWZkZWYgSEFWRV9HRVRVSUQKLSAgICB7ImdldHVpZCIsICAgICAgICAgIHBvc2l4X2dldHVpZCwgTUVUSF9OT0FSR1MsIHBvc2l4X2dldHVpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfR0VUVUlEICovCi0jaWZkZWYgSEFWRV9HRVRMT0dJTgotICAgIHsiZ2V0bG9naW4iLCAgICAgICAgcG9zaXhfZ2V0bG9naW4sIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRsb2dpbl9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9LSUxMCi0gICAgeyJraWxsIiwgICAgICAgICAgICBwb3NpeF9raWxsLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2tpbGxfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0tJTEwgKi8KLSNpZmRlZiBIQVZFX0tJTExQRwotICAgIHsia2lsbHBnIiwgICAgICAgICAgcG9zaXhfa2lsbHBnLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2tpbGxwZ19fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfS0lMTFBHICovCi0jaWZkZWYgSEFWRV9QTE9DSwotICAgIHsicGxvY2siLCAgICAgICAgICAgcG9zaXhfcGxvY2ssIE1FVEhfVkFSQVJHUywgcG9zaXhfcGxvY2tfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1BMT0NLICovCisgICAgT1NfR0VUR1JPVVBTX01FVEhPRERFRgorICAgIE9TX0dFVFBJRF9NRVRIT0RERUYKKyAgICBPU19HRVRQR1JQX01FVEhPRERFRgorICAgIE9TX0dFVFBQSURfTUVUSE9EREVGCisgICAgT1NfR0VUVUlEX01FVEhPRERFRgorICAgIE9TX0dFVExPR0lOX01FVEhPRERFRgorICAgIE9TX0tJTExfTUVUSE9EREVGCisgICAgT1NfS0lMTFBHX01FVEhPRERFRgorICAgIE9TX1BMT0NLX01FVEhPRERFRgogI2lmZGVmIE1TX1dJTkRPV1MKICAgICB7InN0YXJ0ZmlsZSIsICAgICAgIHdpbjMyX3N0YXJ0ZmlsZSwgTUVUSF9WQVJBUkdTLCB3aW4zMl9zdGFydGZpbGVfX2RvY19ffSwKLSAgICB7ImtpbGwiLCAgICB3aW4zMl9raWxsLCBNRVRIX1ZBUkFSR1MsIHdpbjMyX2tpbGxfX2RvY19ffSwKICNlbmRpZgotI2lmZGVmIEhBVkVfU0VUVUlECi0gICAgeyJzZXR1aWQiLCAgICAgICAgICBwb3NpeF9zZXR1aWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0dWlkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TRVRVSUQgKi8KLSNpZmRlZiBIQVZFX1NFVEVVSUQKLSAgICB7InNldGV1aWQiLCAgICAgICAgIHBvc2l4X3NldGV1aWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0ZXVpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfU0VURVVJRCAqLwotI2lmZGVmIEhBVkVfU0VURUdJRAotICAgIHsic2V0ZWdpZCIsICAgICAgICAgcG9zaXhfc2V0ZWdpZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zZXRlZ2lkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TRVRFR0lEICovCi0jaWZkZWYgSEFWRV9TRVRSRVVJRAotICAgIHsic2V0cmV1aWQiLCAgICAgICAgcG9zaXhfc2V0cmV1aWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0cmV1aWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1NFVFJFVUlEICovCi0jaWZkZWYgSEFWRV9TRVRSRUdJRAotICAgIHsic2V0cmVnaWQiLCAgICAgICAgcG9zaXhfc2V0cmVnaWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0cmVnaWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1NFVFJFR0lEICovCi0jaWZkZWYgSEFWRV9TRVRHSUQKLSAgICB7InNldGdpZCIsICAgICAgICAgIHBvc2l4X3NldGdpZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zZXRnaWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1NFVEdJRCAqLwotI2lmZGVmIEhBVkVfU0VUR1JPVVBTCi0gICAgeyJzZXRncm91cHMiLCAgICAgICBwb3NpeF9zZXRncm91cHMsIE1FVEhfTywgcG9zaXhfc2V0Z3JvdXBzX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TRVRHUk9VUFMgKi8KKyAgICBPU19TRVRVSURfTUVUSE9EREVGCisgICAgT1NfU0VURVVJRF9NRVRIT0RERUYKKyAgICBPU19TRVRSRVVJRF9NRVRIT0RERUYKKyAgICBPU19TRVRHSURfTUVUSE9EREVGCisgICAgT1NfU0VURUdJRF9NRVRIT0RERUYKKyAgICBPU19TRVRSRUdJRF9NRVRIT0RERUYKKyAgICBPU19TRVRHUk9VUFNfTUVUSE9EREVGCiAjaWZkZWYgSEFWRV9JTklUR1JPVVBTCiAgICAgeyJpbml0Z3JvdXBzIiwgICAgICBwb3NpeF9pbml0Z3JvdXBzLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2luaXRncm91cHNfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX0lOSVRHUk9VUFMgKi8KLSNpZmRlZiBIQVZFX0dFVFBHSUQKLSAgICB7ImdldHBnaWQiLCAgICAgICAgIHBvc2l4X2dldHBnaWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfZ2V0cGdpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfR0VUUEdJRCAqLwotI2lmZGVmIEhBVkVfU0VUUEdSUAotICAgIHsic2V0cGdycCIsICAgICAgICAgcG9zaXhfc2V0cGdycCwgTUVUSF9OT0FSR1MsIHBvc2l4X3NldHBncnBfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1NFVFBHUlAgKi8KLSNpZmRlZiBIQVZFX1dBSVQKLSAgICB7IndhaXQiLCAgICAgICAgICAgIHBvc2l4X3dhaXQsIE1FVEhfTk9BUkdTLCBwb3NpeF93YWl0X19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9XQUlUICovCi0jaWZkZWYgSEFWRV9XQUlUMwotICAgIHsid2FpdDMiLCAgICAgICAgICAgcG9zaXhfd2FpdDMsIE1FVEhfVkFSQVJHUywgcG9zaXhfd2FpdDNfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1dBSVQzICovCi0jaWZkZWYgSEFWRV9XQUlUNAotICAgIHsid2FpdDQiLCAgICAgICAgICAgcG9zaXhfd2FpdDQsIE1FVEhfVkFSQVJHUywgcG9zaXhfd2FpdDRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1dBSVQ0ICovCi0jaWYgZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQotICAgIHsid2FpdGlkIiwgICAgICAgICAgcG9zaXhfd2FpdGlkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dhaXRpZF9fZG9jX199LAotI2VuZGlmCi0jaWYgZGVmaW5lZChIQVZFX1dBSVRQSUQpIHx8IGRlZmluZWQoSEFWRV9DV0FJVCkKLSAgICB7IndhaXRwaWQiLCAgICAgICAgIHBvc2l4X3dhaXRwaWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfd2FpdHBpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfV0FJVFBJRCAqLwotI2lmZGVmIEhBVkVfR0VUU0lECi0gICAgeyJnZXRzaWQiLCAgICAgICAgICBwb3NpeF9nZXRzaWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfZ2V0c2lkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9HRVRTSUQgKi8KLSNpZmRlZiBIQVZFX1NFVFNJRAotICAgIHsic2V0c2lkIiwgICAgICAgICAgcG9zaXhfc2V0c2lkLCBNRVRIX05PQVJHUywgcG9zaXhfc2V0c2lkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TRVRTSUQgKi8KLSNpZmRlZiBIQVZFX1NFVFBHSUQKLSAgICB7InNldHBnaWQiLCAgICAgICAgIHBvc2l4X3NldHBnaWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0cGdpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfU0VUUEdJRCAqLwotI2lmZGVmIEhBVkVfVENHRVRQR1JQCi0gICAgeyJ0Y2dldHBncnAiLCAgICAgICBwb3NpeF90Y2dldHBncnAsIE1FVEhfVkFSQVJHUywgcG9zaXhfdGNnZXRwZ3JwX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9UQ0dFVFBHUlAgKi8KLSNpZmRlZiBIQVZFX1RDU0VUUEdSUAotICAgIHsidGNzZXRwZ3JwIiwgICAgICAgcG9zaXhfdGNzZXRwZ3JwLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3Rjc2V0cGdycF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfVENTRVRQR1JQICovCi0gICAgeyJvcGVuIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfb3BlbixcCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfb3Blbl9fZG9jX199LAotICAgIHsiY2xvc2UiLCAgICAgICAgICAgcG9zaXhfY2xvc2VfLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2Nsb3NlX19kb2NfX30sCi0gICAgeyJjbG9zZXJhbmdlIiwgICAgICBwb3NpeF9jbG9zZXJhbmdlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2Nsb3NlcmFuZ2VfX2RvY19ffSwKLSAgICB7ImRldmljZV9lbmNvZGluZyIsIGRldmljZV9lbmNvZGluZywgTUVUSF9WQVJBUkdTLCBkZXZpY2VfZW5jb2RpbmdfX2RvY19ffSwKLSAgICB7ImR1cCIsICAgICAgICAgICAgIHBvc2l4X2R1cCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9kdXBfX2RvY19ffSwKLSAgICB7ImR1cDIiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9kdXAyLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcG9zaXhfZHVwMl9fZG9jX199LAotI2lmZGVmIEhBVkVfTE9DS0YKLSAgICB7ImxvY2tmIiwgICAgICAgICAgIHBvc2l4X2xvY2tmLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xvY2tmX19kb2NfX30sCi0jZW5kaWYKLSAgICB7ImxzZWVrIiwgICAgICAgICAgIHBvc2l4X2xzZWVrLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xzZWVrX19kb2NfX30sCi0gICAgeyJyZWFkIiwgICAgICAgICAgICBwb3NpeF9yZWFkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3JlYWRfX2RvY19ffSwKLSNpZmRlZiBIQVZFX1JFQURWCi0gICAgeyJyZWFkdiIsICAgICAgICAgICBwb3NpeF9yZWFkdiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9yZWFkdl9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9QUkVBRAotICAgIHsicHJlYWQiLCAgICAgICAgICAgcG9zaXhfcHJlYWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfcHJlYWRfX2RvY19ffSwKLSNlbmRpZgotICAgIHsid3JpdGUiLCAgICAgICAgICAgcG9zaXhfd3JpdGUsIE1FVEhfVkFSQVJHUywgcG9zaXhfd3JpdGVfX2RvY19ffSwKLSNpZmRlZiBIQVZFX1dSSVRFVgotICAgIHsid3JpdGV2IiwgICAgICAgICAgcG9zaXhfd3JpdGV2LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dyaXRldl9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9QV1JJVEUKLSAgICB7InB3cml0ZSIsICAgICAgICAgIHBvc2l4X3B3cml0ZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9wd3JpdGVfX2RvY19ffSwKLSNlbmRpZgorICAgIE9TX0dFVFBHSURfTUVUSE9EREVGCisgICAgT1NfU0VUUEdSUF9NRVRIT0RERUYKKyAgICBPU19XQUlUX01FVEhPRERFRgorICAgIE9TX1dBSVQzX01FVEhPRERFRgorICAgIE9TX1dBSVQ0X01FVEhPRERFRgorICAgIE9TX1dBSVRJRF9NRVRIT0RERUYKKyAgICBPU19XQUlUUElEX01FVEhPRERFRgorICAgIE9TX0dFVFNJRF9NRVRIT0RERUYKKyAgICBPU19TRVRTSURfTUVUSE9EREVGCisgICAgT1NfU0VUUEdJRF9NRVRIT0RERUYKKyAgICBPU19UQ0dFVFBHUlBfTUVUSE9EREVGCisgICAgT1NfVENTRVRQR1JQX01FVEhPRERFRgorICAgIE9TX09QRU5fTUVUSE9EREVGCisgICAgT1NfQ0xPU0VfTUVUSE9EREVGCisgICAgT1NfQ0xPU0VSQU5HRV9NRVRIT0RERUYKKyAgICBPU19ERVZJQ0VfRU5DT0RJTkdfTUVUSE9EREVGCisgICAgT1NfRFVQX01FVEhPRERFRgorICAgIE9TX0RVUDJfTUVUSE9EREVGCisgICAgT1NfTE9DS0ZfTUVUSE9EREVGCisgICAgT1NfTFNFRUtfTUVUSE9EREVGCisgICAgT1NfUkVBRF9NRVRIT0RERUYKKyAgICBPU19SRUFEVl9NRVRIT0RERUYKKyAgICBPU19QUkVBRF9NRVRIT0RERUYKKyAgICBPU19XUklURV9NRVRIT0RERUYKKyAgICBPU19XUklURVZfTUVUSE9EREVGCisgICAgT1NfUFdSSVRFX01FVEhPRERFRgogI2lmZGVmIEhBVkVfU0VOREZJTEUKICAgICB7InNlbmRmaWxlIiwgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9zZW5kZmlsZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9zZW5kZmlsZV9fZG9jX199LAogI2VuZGlmCi0gICAgeyJmc3RhdCIsICAgICAgICAgICBwb3NpeF9mc3RhdCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9mc3RhdF9fZG9jX199LAotICAgIHsiaXNhdHR5IiwgICAgICAgICAgcG9zaXhfaXNhdHR5LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2lzYXR0eV9fZG9jX199LAotI2lmZGVmIEhBVkVfUElQRQotICAgIHsicGlwZSIsICAgICAgICAgICAgcG9zaXhfcGlwZSwgTUVUSF9OT0FSR1MsIHBvc2l4X3BpcGVfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfUElQRTIKLSAgICB7InBpcGUyIiwgICAgICAgICAgIHBvc2l4X3BpcGUyLCBNRVRIX08sIHBvc2l4X3BpcGUyX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX01LRklGTwotICAgIHsibWtmaWZvIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X21rZmlmbywKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9ta2ZpZm9fX2RvY19ffSwKLSNlbmRpZgotI2lmIGRlZmluZWQoSEFWRV9NS05PRCkgJiYgZGVmaW5lZChIQVZFX01BS0VERVYpCi0gICAgeyJta25vZCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbWtub2QsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbWtub2RfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfREVWSUNFX01BQ1JPUwotICAgIHsibWFqb3IiLCAgICAgICAgICAgcG9zaXhfbWFqb3IsIE1FVEhfVkFSQVJHUywgcG9zaXhfbWFqb3JfX2RvY19ffSwKLSAgICB7Im1pbm9yIiwgICAgICAgICAgIHBvc2l4X21pbm9yLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X21pbm9yX19kb2NfX30sCi0gICAgeyJtYWtlZGV2IiwgICAgICAgICBwb3NpeF9tYWtlZGV2LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X21ha2VkZXZfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfRlRSVU5DQVRFCi0gICAgeyJmdHJ1bmNhdGUiLCAgICAgICBwb3NpeF9mdHJ1bmNhdGUsIE1FVEhfVkFSQVJHUywgcG9zaXhfZnRydW5jYXRlX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1RSVU5DQVRFCi0gICAgeyJ0cnVuY2F0ZSIsICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfdHJ1bmNhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfdHJ1bmNhdGVfX2RvY19ffSwKLSNlbmRpZgotI2lmIGRlZmluZWQoSEFWRV9QT1NJWF9GQUxMT0NBVEUpICYmICFkZWZpbmVkKFBPU0lYX0ZBRFZJU0VfQUlYX0JVRykKLSAgICB7InBvc2l4X2ZhbGxvY2F0ZSIsIHBvc2l4X3Bvc2l4X2ZhbGxvY2F0ZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9wb3NpeF9mYWxsb2NhdGVfX2RvY19ffSwKLSNlbmRpZgotI2lmIGRlZmluZWQoSEFWRV9QT1NJWF9GQURWSVNFKSAmJiAhZGVmaW5lZChQT1NJWF9GQURWSVNFX0FJWF9CVUcpCi0gICAgeyJwb3NpeF9mYWR2aXNlIiwgICBwb3NpeF9wb3NpeF9mYWR2aXNlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3Bvc2l4X2ZhZHZpc2VfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfUFVURU5WCi0gICAgeyJwdXRlbnYiLCAgICAgICAgICBwb3NpeF9wdXRlbnYsIE1FVEhfVkFSQVJHUywgcG9zaXhfcHV0ZW52X19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1VOU0VURU5WCi0gICAgeyJ1bnNldGVudiIsICAgICAgICBwb3NpeF91bnNldGVudiwgTUVUSF9WQVJBUkdTLCBwb3NpeF91bnNldGVudl9fZG9jX199LAotI2VuZGlmCi0gICAgeyJzdHJlcnJvciIsICAgICAgICBwb3NpeF9zdHJlcnJvciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zdHJlcnJvcl9fZG9jX199LAotI2lmZGVmIEhBVkVfRkNIRElSCi0gICAgeyJmY2hkaXIiLCAgICAgICAgICBwb3NpeF9mY2hkaXIsIE1FVEhfTywgcG9zaXhfZmNoZGlyX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX0ZTWU5DCi0gICAgeyJmc3luYyIsICAgICAgIHBvc2l4X2ZzeW5jLCBNRVRIX08sIHBvc2l4X2ZzeW5jX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZTkMKLSAgICB7InN5bmMiLCAgICAgICAgcG9zaXhfc3luYywgTUVUSF9OT0FSR1MsIHBvc2l4X3N5bmNfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfRkRBVEFTWU5DCi0gICAgeyJmZGF0YXN5bmMiLCAgIHBvc2l4X2ZkYXRhc3luYywgIE1FVEhfTywgcG9zaXhfZmRhdGFzeW5jX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZU19XQUlUX0gKLSNpZmRlZiBXQ09SRURVTVAKLSAgICB7IldDT1JFRFVNUCIsICAgICAgIHBvc2l4X1dDT1JFRFVNUCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9XQ09SRURVTVBfX2RvY19ffSwKLSNlbmRpZiAvKiBXQ09SRURVTVAgKi8KLSNpZmRlZiBXSUZDT05USU5VRUQKLSAgICB7IldJRkNPTlRJTlVFRCIscG9zaXhfV0lGQ09OVElOVUVELCBNRVRIX1ZBUkFSR1MsIHBvc2l4X1dJRkNPTlRJTlVFRF9fZG9jX199LAotI2VuZGlmIC8qIFdJRkNPTlRJTlVFRCAqLwotI2lmZGVmIFdJRlNUT1BQRUQKLSAgICB7IldJRlNUT1BQRUQiLCAgICAgIHBvc2l4X1dJRlNUT1BQRUQsIE1FVEhfVkFSQVJHUywgcG9zaXhfV0lGU1RPUFBFRF9fZG9jX199LAotI2VuZGlmIC8qIFdJRlNUT1BQRUQgKi8KLSNpZmRlZiBXSUZTSUdOQUxFRAotICAgIHsiV0lGU0lHTkFMRUQiLCAgICAgcG9zaXhfV0lGU0lHTkFMRUQsIE1FVEhfVkFSQVJHUywgcG9zaXhfV0lGU0lHTkFMRURfX2RvY19ffSwKLSNlbmRpZiAvKiBXSUZTSUdOQUxFRCAqLwotI2lmZGVmIFdJRkVYSVRFRAotICAgIHsiV0lGRVhJVEVEIiwgICAgICAgcG9zaXhfV0lGRVhJVEVELCBNRVRIX1ZBUkFSR1MsIHBvc2l4X1dJRkVYSVRFRF9fZG9jX199LAotI2VuZGlmIC8qIFdJRkVYSVRFRCAqLwotI2lmZGVmIFdFWElUU1RBVFVTCi0gICAgeyJXRVhJVFNUQVRVUyIsICAgICBwb3NpeF9XRVhJVFNUQVRVUywgTUVUSF9WQVJBUkdTLCBwb3NpeF9XRVhJVFNUQVRVU19fZG9jX199LAotI2VuZGlmIC8qIFdFWElUU1RBVFVTICovCi0jaWZkZWYgV1RFUk1TSUcKLSAgICB7IldURVJNU0lHIiwgICAgICAgIHBvc2l4X1dURVJNU0lHLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X1dURVJNU0lHX19kb2NfX30sCi0jZW5kaWYgLyogV1RFUk1TSUcgKi8KLSNpZmRlZiBXU1RPUFNJRwotICAgIHsiV1NUT1BTSUciLCAgICAgICAgcG9zaXhfV1NUT1BTSUcsIE1FVEhfVkFSQVJHUywgcG9zaXhfV1NUT1BTSUdfX2RvY19ffSwKLSNlbmRpZiAvKiBXU1RPUFNJRyAqLwotI2VuZGlmIC8qIEhBVkVfU1lTX1dBSVRfSCAqLwotI2lmIGRlZmluZWQoSEFWRV9GU1RBVFZGUykgJiYgZGVmaW5lZChIQVZFX1NZU19TVEFUVkZTX0gpCi0gICAgeyJmc3RhdHZmcyIsICAgICAgICBwb3NpeF9mc3RhdHZmcywgTUVUSF9WQVJBUkdTLCBwb3NpeF9mc3RhdHZmc19fZG9jX199LAotI2VuZGlmCi0jaWYgZGVmaW5lZChIQVZFX1NUQVRWRlMpICYmIGRlZmluZWQoSEFWRV9TWVNfU1RBVFZGU19IKQotICAgIHsic3RhdHZmcyIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3N0YXR2ZnMsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfc3RhdHZmc19fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9DT05GU1RSCi0gICAgeyJjb25mc3RyIiwgICAgICAgICBwb3NpeF9jb25mc3RyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2NvbmZzdHJfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfU1lTQ09ORgotICAgIHsic3lzY29uZiIsICAgICAgICAgcG9zaXhfc3lzY29uZiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zeXNjb25mX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX0ZQQVRIQ09ORgotICAgIHsiZnBhdGhjb25mIiwgICAgICAgcG9zaXhfZnBhdGhjb25mLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2ZwYXRoY29uZl9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9QQVRIQ09ORgotICAgIHsicGF0aGNvbmYiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3BhdGhjb25mLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3BhdGhjb25mX19kb2NfX30sCi0jZW5kaWYKLSAgICB7ImFib3J0IiwgICAgICAgICAgIHBvc2l4X2Fib3J0LCBNRVRIX05PQVJHUywgcG9zaXhfYWJvcnRfX2RvY19ffSwKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgeyJfZ2V0ZnVsbHBhdGhuYW1lIiwgICAgICAgIHBvc2l4X19nZXRmdWxscGF0aG5hbWUsIE1FVEhfVkFSQVJHUywgTlVMTH0sCi0gICAgeyJfZ2V0ZmluYWxwYXRobmFtZSIsICAgICAgIHBvc2l4X19nZXRmaW5hbHBhdGhuYW1lLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAotICAgIHsiX2lzZGlyIiwgICAgICAgICAgICAgICAgICBwb3NpeF9faXNkaXIsIE1FVEhfVkFSQVJHUywgcG9zaXhfX2lzZGlyX19kb2NfX30sCi0gICAgeyJfZ2V0ZGlza3VzYWdlIiwgICAgICAgICAgIHdpbjMyX19nZXRkaXNrdXNhZ2UsIE1FVEhfVkFSQVJHUywgd2luMzJfX2dldGRpc2t1c2FnZV9fZG9jX199LAotICAgIHsiX2dldHZvbHVtZXBhdGhuYW1lIiwgICAgICBwb3NpeF9fZ2V0dm9sdW1lcGF0aG5hbWUsIE1FVEhfVkFSQVJHUywgcG9zaXhfX2dldHZvbHVtZXBhdGhuYW1lX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX0dFVExPQURBVkcKLSAgICB7ImdldGxvYWRhdmciLCAgICAgIHBvc2l4X2dldGxvYWRhdmcsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRsb2FkYXZnX19kb2NfX30sCi0jZW5kaWYKLSAgICB7InVyYW5kb20iLCAgICAgICAgIHBvc2l4X3VyYW5kb20sICAgTUVUSF9WQVJBUkdTLCBwb3NpeF91cmFuZG9tX19kb2NfX30sCi0jaWZkZWYgSEFWRV9TRVRSRVNVSUQKLSAgICB7InNldHJlc3VpZCIsICAgICAgIHBvc2l4X3NldHJlc3VpZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zZXRyZXN1aWRfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfU0VUUkVTR0lECi0gICAgeyJzZXRyZXNnaWQiLCAgICAgICBwb3NpeF9zZXRyZXNnaWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0cmVzZ2lkX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX0dFVFJFU1VJRAotICAgIHsiZ2V0cmVzdWlkIiwgICAgICAgcG9zaXhfZ2V0cmVzdWlkLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0cmVzdWlkX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX0dFVFJFU0dJRAotICAgIHsiZ2V0cmVzZ2lkIiwgICAgICAgcG9zaXhfZ2V0cmVzZ2lkLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0cmVzZ2lkX19kb2NfX30sCi0jZW5kaWYKKyAgICBPU19GU1RBVF9NRVRIT0RERUYKKyAgICBPU19JU0FUVFlfTUVUSE9EREVGCisgICAgT1NfUElQRV9NRVRIT0RERUYKKyAgICBPU19QSVBFMl9NRVRIT0RERUYKKyAgICBPU19NS0ZJRk9fTUVUSE9EREVGCisgICAgT1NfTUtOT0RfTUVUSE9EREVGCisgICAgT1NfTUFKT1JfTUVUSE9EREVGCisgICAgT1NfTUlOT1JfTUVUSE9EREVGCisgICAgT1NfTUFLRURFVl9NRVRIT0RERUYKKyAgICBPU19GVFJVTkNBVEVfTUVUSE9EREVGCisgICAgT1NfVFJVTkNBVEVfTUVUSE9EREVGCisgICAgT1NfUE9TSVhfRkFMTE9DQVRFX01FVEhPRERFRgorICAgIE9TX1BPU0lYX0ZBRFZJU0VfTUVUSE9EREVGCisgICAgT1NfUFVURU5WX01FVEhPRERFRgorICAgIE9TX1VOU0VURU5WX01FVEhPRERFRgorICAgIE9TX1NUUkVSUk9SX01FVEhPRERFRgorICAgIE9TX0ZDSERJUl9NRVRIT0RERUYKKyAgICBPU19GU1lOQ19NRVRIT0RERUYKKyAgICBPU19TWU5DX01FVEhPRERFRgorICAgIE9TX0ZEQVRBU1lOQ19NRVRIT0RERUYKKyAgICBPU19XQ09SRURVTVBfTUVUSE9EREVGCisgICAgT1NfV0lGQ09OVElOVUVEX01FVEhPRERFRgorICAgIE9TX1dJRlNUT1BQRURfTUVUSE9EREVGCisgICAgT1NfV0lGU0lHTkFMRURfTUVUSE9EREVGCisgICAgT1NfV0lGRVhJVEVEX01FVEhPRERFRgorICAgIE9TX1dFWElUU1RBVFVTX01FVEhPRERFRgorICAgIE9TX1dURVJNU0lHX01FVEhPRERFRgorICAgIE9TX1dTVE9QU0lHX01FVEhPRERFRgorICAgIE9TX0ZTVEFUVkZTX01FVEhPRERFRgorICAgIE9TX1NUQVRWRlNfTUVUSE9EREVGCisgICAgT1NfQ09ORlNUUl9NRVRIT0RERUYKKyAgICBPU19TWVNDT05GX01FVEhPRERFRgorICAgIE9TX0ZQQVRIQ09ORl9NRVRIT0RERUYKKyAgICBPU19QQVRIQ09ORl9NRVRIT0RERUYKKyAgICBPU19BQk9SVF9NRVRIT0RERUYKKyAgICBPU19fR0VURlVMTFBBVEhOQU1FX01FVEhPRERFRgorICAgIE9TX19JU0RJUl9NRVRIT0RERUYKKyAgICBPU19fR0VURElTS1VTQUdFX01FVEhPRERFRgorICAgIE9TX19HRVRGSU5BTFBBVEhOQU1FX01FVEhPRERFRgorICAgIE9TX19HRVRWT0xVTUVQQVRITkFNRV9NRVRIT0RERUYKKyAgICBPU19HRVRMT0FEQVZHX01FVEhPRERFRgorICAgIE9TX1VSQU5ET01fTUVUSE9EREVGCisgICAgT1NfU0VUUkVTVUlEX01FVEhPRERFRgorICAgIE9TX1NFVFJFU0dJRF9NRVRIT0RERUYKKyAgICBPU19HRVRSRVNVSURfTUVUSE9EREVGCisgICAgT1NfR0VUUkVTR0lEX01FVEhPRERFRgogCi0jaWZkZWYgVVNFX1hBVFRSUwotICAgIHsic2V0eGF0dHIiLCAoUHlDRnVuY3Rpb24pcG9zaXhfc2V0eGF0dHIsCi0gICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgIHBvc2l4X3NldHhhdHRyX19kb2NfX30sCi0gICAgeyJnZXR4YXR0ciIsIChQeUNGdW5jdGlvbilwb3NpeF9nZXR4YXR0ciwKLSAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgcG9zaXhfZ2V0eGF0dHJfX2RvY19ffSwKLSAgICB7InJlbW92ZXhhdHRyIiwgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JlbW92ZXhhdHRyLAotICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICBwb3NpeF9yZW1vdmV4YXR0cl9fZG9jX199LAotICAgIHsibGlzdHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKXBvc2l4X2xpc3R4YXR0ciwKLSAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgcG9zaXhfbGlzdHhhdHRyX19kb2NfX30sCi0jZW5kaWYKKyAgICBPU19HRVRYQVRUUl9NRVRIT0RERUYKKyAgICBPU19TRVRYQVRUUl9NRVRIT0RERUYKKyAgICBPU19SRU1PVkVYQVRUUl9NRVRIT0RERUYKKyAgICBPU19MSVNUWEFUVFJfTUVUSE9EREVGCisKICNpZiBkZWZpbmVkKFRFUk1TSVpFX1VTRV9DT05JTykgfHwgZGVmaW5lZChURVJNU0laRV9VU0VfSU9DVEwpCiAgICAgeyJnZXRfdGVybWluYWxfc2l6ZSIsIGdldF90ZXJtaW5hbF9zaXplLCBNRVRIX1ZBUkFSR1MsIHRlcm1zaXplX19kb2NfX30sCiAjZW5kaWYKLSAgICB7ImNwdV9jb3VudCIsIChQeUNGdW5jdGlvbilwb3NpeF9jcHVfY291bnQsCi0gICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgcG9zaXhfY3B1X2NvdW50X19kb2NfX30sCi0gICAgeyJnZXRfaW5oZXJpdGFibGUiLCBwb3NpeF9nZXRfaW5oZXJpdGFibGUsIE1FVEhfVkFSQVJHUywgZ2V0X2luaGVyaXRhYmxlX19kb2NfX30sCi0gICAgeyJzZXRfaW5oZXJpdGFibGUiLCBwb3NpeF9zZXRfaW5oZXJpdGFibGUsIE1FVEhfVkFSQVJHUywgc2V0X2luaGVyaXRhYmxlX19kb2NfX30sCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIHsiZ2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsIHBvc2l4X2dldF9oYW5kbGVfaW5oZXJpdGFibGUsCi0gICAgIE1FVEhfVkFSQVJHUywgZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9fZG9jX199LAotICAgIHsic2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsIHBvc2l4X3NldF9oYW5kbGVfaW5oZXJpdGFibGUsCi0gICAgIE1FVEhfVkFSQVJHUywgc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9fZG9jX199LAorICAgIE9TX0NQVV9DT1VOVF9NRVRIT0RERUYKKyAgICBPU19HRVRfSU5IRVJJVEFCTEVfTUVUSE9EREVGCisgICAgT1NfU0VUX0lOSEVSSVRBQkxFX01FVEhPRERFRgorICAgIE9TX0dFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGCisgICAgT1NfU0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYKKyNpZm5kZWYgTVNfV0lORE9XUworICAgIHsiZ2V0X2Jsb2NraW5nIiwgcG9zaXhfZ2V0X2Jsb2NraW5nLCBNRVRIX1ZBUkFSR1MsIGdldF9ibG9ja2luZ19fZG9jX199LAorICAgIHsic2V0X2Jsb2NraW5nIiwgcG9zaXhfc2V0X2Jsb2NraW5nLCBNRVRIX1ZBUkFSR1MsIHNldF9ibG9ja2luZ19fZG9jX199LAogI2VuZGlmCisgICAgeyJzY2FuZGlyIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfc2NhbmRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9zY2FuZGlyX19kb2NfX30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCkBAIC0xMjEwMiwxNSArMTI4MDQsNiBAQAogfQogCiAKLSNpZiAoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1dBVENPTUNfXykgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pKSAmJiAhZGVmaW5lZChfX1FOWF9fKQotI2RlZmluZSBJTklURlVOQyBQeUluaXRfbnQKLSNkZWZpbmUgTU9ETkFNRSAibnQiCi0KLSNlbHNlCi0jZGVmaW5lIElOSVRGVU5DIFB5SW5pdF9wb3NpeAotI2RlZmluZSBNT0ROQU1FICJwb3NpeCIKLSNlbmRpZgotCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIHBvc2l4bW9kdWxlID0gewogICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKICAgICBNT0ROQU1FLApAQCAtMTIxNzAsNyArMTI4NjMsNyBAQAogICAgICJIQVZFX0ZTVEFUVkZTIiwKICNlbmRpZgogCi0jaWZkZWYgSEFWRV9GVFJVTkNBVEUKKyNpZiBkZWZpbmVkIEhBVkVfRlRSVU5DQVRFIHx8IGRlZmluZWQgTVNfV0lORE9XUwogICAgICJIQVZFX0ZUUlVOQ0FURSIsCiAjZW5kaWYKIApAQCAtMTIzMjQsMTMgKzEzMDE3LDE5IEBACiAgICAgICAgIHNjaGVkX3BhcmFtX2Rlc2MubmFtZSA9IE1PRE5BTUUgIi5zY2hlZF9wYXJhbSI7CiAgICAgICAgIGlmIChQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlMigmU2NoZWRQYXJhbVR5cGUsICZzY2hlZF9wYXJhbV9kZXNjKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgU2NoZWRQYXJhbVR5cGUudHBfbmV3ID0gc2NoZWRfcGFyYW1fbmV3OworICAgICAgICBTY2hlZFBhcmFtVHlwZS50cF9uZXcgPSBvc19zY2hlZF9wYXJhbTsKICNlbmRpZgogCiAgICAgICAgIC8qIGluaXRpYWxpemUgVGVybWluYWxTaXplX2luZm8gKi8KICAgICAgICAgaWYgKFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyKCZUZXJtaW5hbFNpemVUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlRlcm1pbmFsU2l6ZV9kZXNjKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICAvKiBpbml0aWFsaXplIHNjYW5kaXIgdHlwZXMgKi8KKyAgICAgICAgaWYgKFB5VHlwZV9SZWFkeSgmU2NhbmRpckl0ZXJhdG9yVHlwZSkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeVR5cGVfUmVhZHkoJkRpckVudHJ5VHlwZSkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogI2lmIGRlZmluZWQoSEFWRV9XQUlUSUQpICYmICFkZWZpbmVkKF9fQVBQTEVfXykKICAgICBQeV9JTkNSRUYoKFB5T2JqZWN0KikgJldhaXRpZFJlc3VsdFR5cGUpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9wd2Rtb2R1bGUuYyBiL01vZHVsZXMvcHdkbW9kdWxlLmMKaW5kZXggZWJiODcxMi4uMjgxYzMwYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9wd2Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL3B3ZG1vZHVsZS5jCkBAIC02LDYgKzYsMTIgQEAKIAogI2luY2x1ZGUgPHB3ZC5oPgogCisjaW5jbHVkZSAiY2xpbmljL3B3ZG1vZHVsZS5jLmgiCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgcHdkCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD02MGY2MjhlZjM1NmI5N2I2XSovCisKIHN0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHN0cnVjdF9wd2RfdHlwZV9maWVsZHNbXSA9IHsKICAgICB7InB3X25hbWUiLCAidXNlciBuYW1lIn0sCiAgICAgeyJwd19wYXNzd2QiLCAicGFzc3dvcmQifSwKQEAgLTg3LDE4ICs5MywyNSBAQAogICAgIHJldHVybiB2OwogfQogCi1QeURvY19TVFJWQVIocHdkX2dldHB3dWlkX19kb2NfXywKLSJnZXRwd3VpZCh1aWQpIC0+IChwd19uYW1lLHB3X3Bhc3N3ZCxwd191aWQsXG5cCi0gICAgICAgICAgICAgICAgICBwd19naWQscHdfZ2Vjb3MscHdfZGlyLHB3X3NoZWxsKVxuXAotUmV0dXJuIHRoZSBwYXNzd29yZCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIG51bWVyaWMgdXNlciBJRC5cblwKLVNlZSBoZWxwKHB3ZCkgZm9yIG1vcmUgb24gcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B3ZC5nZXRwd3VpZAorCisgICAgdWlkb2JqOiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgcGFzc3dvcmQgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiBudW1lcmljIHVzZXIgSUQuCisKK1NlZSBgaGVscChwd2QpYCBmb3IgbW9yZSBvbiBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcHdkX2dldHB3dWlkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3B3ZF9nZXRwd3VpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqdWlkb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWNiYTI5YWU0YzJiY2I4ZTEgaW5wdXQ9YWU2NGQ1MDdhMWM2ZDNlOF0qLwogewogICAgIHVpZF90IHVpZDsKICAgICBzdHJ1Y3QgcGFzc3dkICpwOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6Z2V0cHd1aWQiLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCkpIHsKKworICAgIGlmICghX1B5X1VpZF9Db252ZXJ0ZXIodWlkb2JqLCAmdWlkKSkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19LZXlFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2V0cHd1aWQoKTogdWlkIG5vdCBmb3VuZCIpOwpAQCAtMTE2LDIxICsxMjksMjUgQEAKICAgICByZXR1cm4gbWtwd2VudChwKTsKIH0KIAotUHlEb2NfU1RSVkFSKHB3ZF9nZXRwd25hbV9fZG9jX18sCi0iZ2V0cHduYW0obmFtZSkgLT4gKHB3X25hbWUscHdfcGFzc3dkLHB3X3VpZCxcblwKLSAgICAgICAgICAgICAgICAgICAgcHdfZ2lkLHB3X2dlY29zLHB3X2Rpcixwd19zaGVsbClcblwKLVJldHVybiB0aGUgcGFzc3dvcmQgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiB1c2VyIG5hbWUuXG5cCi1TZWUgaGVscChwd2QpIGZvciBtb3JlIG9uIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMuIik7CisvKltjbGluaWMgaW5wdXRdCitwd2QuZ2V0cHduYW0KKworICAgIGFyZzogdW5pY29kZQorICAgIC8KKworUmV0dXJuIHRoZSBwYXNzd29yZCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIHVzZXIgbmFtZS4KKworU2VlIGBoZWxwKHB3ZClgIGZvciBtb3JlIG9uIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wd2RfZ2V0cHduYW0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcHdkX2dldHB3bmFtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02Njg0OGQ0MmQzODZmY2EzIGlucHV0PWQ1ZjdlNzAwOTE5YjAyZDNdKi8KIHsKICAgICBjaGFyICpuYW1lOwogICAgIHN0cnVjdCBwYXNzd2QgKnA7Ci0gICAgUHlPYmplY3QgKmFyZywgKmJ5dGVzLCAqcmV0dmFsID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYnl0ZXMsICpyZXR2YWwgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmdldHB3bmFtIiwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICgoYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KGFyZykpID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZShieXRlcywgJm5hbWUsIE5VTEwpID09IC0xKQpAQCAtMTQ3LDE0ICsxNjQsMTcgQEAKIH0KIAogI2lmZGVmIEhBVkVfR0VUUFdFTlQKLVB5RG9jX1NUUlZBUihwd2RfZ2V0cHdhbGxfX2RvY19fLAotImdldHB3YWxsKCkgLT4gbGlzdF9vZl9lbnRyaWVzXG5cCi1SZXR1cm4gYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcywgXAotaW4gYXJiaXRyYXJ5IG9yZGVyLlxuXAotU2VlIGhlbHAocHdkKSBmb3IgbW9yZSBvbiBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLiIpOworLypbY2xpbmljIGlucHV0XQorcHdkLmdldHB3YWxsCisKK1JldHVybiBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLCBpbiBhcmJpdHJhcnkgb3JkZXIuCisKK1NlZSBoZWxwKHB3ZCkgZm9yIG1vcmUgb24gcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXB3ZF9nZXRwd2FsbChQeU9iamVjdCAqc2VsZikKK3B3ZF9nZXRwd2FsbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWIzMGUzN2JmMjZkNDMxZCBpbnB1dD1kN2VjZWJmZDkwMjE5Yjg1XSovCiB7CiAgICAgUHlPYmplY3QgKmQ7CiAgICAgc3RydWN0IHBhc3N3ZCAqcDsKQEAgLTE3NywxMSArMTk3LDEwIEBACiAjZW5kaWYKIAogc3RhdGljIFB5TWV0aG9kRGVmIHB3ZF9tZXRob2RzW10gPSB7Ci0gICAgeyJnZXRwd3VpZCIsICAgICAgICBwd2RfZ2V0cHd1aWQsIE1FVEhfVkFSQVJHUywgcHdkX2dldHB3dWlkX19kb2NfX30sCi0gICAgeyJnZXRwd25hbSIsICAgICAgICBwd2RfZ2V0cHduYW0sIE1FVEhfVkFSQVJHUywgcHdkX2dldHB3bmFtX19kb2NfX30sCisgICAgUFdEX0dFVFBXVUlEX01FVEhPRERFRgorICAgIFBXRF9HRVRQV05BTV9NRVRIT0RERUYKICNpZmRlZiBIQVZFX0dFVFBXRU5UCi0gICAgeyJnZXRwd2FsbCIsICAgICAgICAoUHlDRnVuY3Rpb24pcHdkX2dldHB3YWxsLAotICAgICAgICBNRVRIX05PQVJHUywgIHB3ZF9nZXRwd2FsbF9fZG9jX199LAorICAgIFBXRF9HRVRQV0FMTF9NRVRIT0RERUYKICNlbmRpZgogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9weWV4cGF0LmMgYi9Nb2R1bGVzL3B5ZXhwYXQuYwppbmRleCA2YTkwMWY3Li45YTZkYTczIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3B5ZXhwYXQuYworKysgYi9Nb2R1bGVzL3B5ZXhwYXQuYwpAQCAtNiw2ICs2LDEzIEBACiAKICNpbmNsdWRlICJweWV4cGF0LmgiCiAKKy8qIERvIG5vdCBlbWl0IENsaW5pYyBvdXRwdXQgdG8gYSBmaWxlIGFzIHRoYXQgd3JlYWtzIGhhdm9jIHdpdGggY29uZGl0aW9uYWxseQorICAgaW5jbHVkZWQgbWV0aG9kcy4gKi8KKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBweWV4cGF0CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1iMTY4ZDUwM2E0NDkwYzE1XSovCisKICNkZWZpbmUgWE1MX0NPTUJJTkVEX1ZFUlNJT04gKDEwMDAwKlhNTF9NQUpPUl9WRVJTSU9OKzEwMCpYTUxfTUlOT1JfVkVSU0lPTitYTUxfTUlDUk9fVkVSU0lPTikKIAogc3RhdGljIFhNTF9NZW1vcnlfSGFuZGxpbmdfU3VpdGUgRXhwYXRNZW1vcnlIYW5kbGVyID0gewpAQCAtNjEsNiArNjgsOCBAQAogICAgIFB5T2JqZWN0ICoqaGFuZGxlcnM7CiB9IHhtbHBhcnNlb2JqZWN0OwogCisjaW5jbHVkZSAiY2xpbmljL3B5ZXhwYXQuYy5oIgorCiAjZGVmaW5lIENIQVJBQ1RFUl9EQVRBX0JVRkZFUl9TSVpFIDgxOTIKIAogc3RhdGljIFB5VHlwZU9iamVjdCBYbWxwYXJzZXR5cGU7CkBAIC02NzEsNiArNjgwLDExIEBACiBWT0lEX0hBTkRMRVIoRW5kRG9jdHlwZURlY2wsICh2b2lkICp1c2VyRGF0YSksICgiKCkiKSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLypbY2xpbmljIGlucHV0XQorY2xhc3MgcHlleHBhdC54bWxwYXJzZXIgInhtbHBhcnNlb2JqZWN0ICoiICImWG1scGFyc2V0eXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MjM5MzE2MjM4NTIzMmUxY10qLworCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZXRfcGFyc2VfcmVzdWx0KHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBpbnQgcnYpCkBAIC02ODcsMjUgKzcwMSwzMCBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocnYpOwogfQogCi1QeURvY19TVFJWQVIoeG1scGFyc2VfUGFyc2VfX2RvY19fLAotIlBhcnNlKGRhdGFbLCBpc2ZpbmFsXSlcblwKLVBhcnNlIFhNTCBkYXRhLiAgYGlzZmluYWwnIHNob3VsZCBiZSB0cnVlIGF0IGVuZCBvZiBpbnB1dC4iKTsKLQogI2RlZmluZSBNQVhfQ0hVTktfU0laRSAoMSA8PCAyMCkKIAorLypbY2xpbmljIGlucHV0XQorcHlleHBhdC54bWxwYXJzZXIuUGFyc2UKKworICAgIGRhdGE6IG9iamVjdAorICAgIGlzZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgLworCitQYXJzZSBYTUwgZGF0YS4KKworYGlzZmluYWwnIHNob3VsZCBiZSB0cnVlIGF0IGVuZCBvZiBpbnB1dC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXhtbHBhcnNlX1BhcnNlKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3B5ZXhwYXRfeG1scGFyc2VyX1BhcnNlX2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaXNmaW5hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNGRiODQzZGQxZjRlZDRiIGlucHV0PTE5OWQ5ZThlOTJlYmJiNGJdKi8KIHsKLSAgICBQeU9iamVjdCAqZGF0YTsKLSAgICBpbnQgaXNGaW5hbCA9IDA7CiAgICAgY29uc3QgY2hhciAqczsKICAgICBQeV9zc2l6ZV90IHNsZW47CiAgICAgUHlfYnVmZmVyIHZpZXc7CiAgICAgaW50IHJjOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6UGFyc2UiLCAmZGF0YSwgJmlzRmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soZGF0YSkpIHsKICAgICAgICAgdmlldy5idWYgPSBOVUxMOwogICAgICAgICBzID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoZGF0YSwgJnNsZW4pOwpAQCAtNzI5LDcgKzc0OCw3IEBACiAgICAgICAgIHNsZW4gLT0gTUFYX0NIVU5LX1NJWkU7CiAgICAgfQogICAgIGFzc2VydChNQVhfQ0hVTktfU0laRSA8IElOVF9NQVggJiYgc2xlbiA8IElOVF9NQVgpOwotICAgIHJjID0gWE1MX1BhcnNlKHNlbGYtPml0c2VsZiwgcywgKGludClzbGVuLCBpc0ZpbmFsKTsKKyAgICByYyA9IFhNTF9QYXJzZShzZWxmLT5pdHNlbGYsIHMsIChpbnQpc2xlbiwgaXNmaW5hbCk7CiAKIGRvbmU6CiAgICAgaWYgKHZpZXcuYnVmICE9IE5VTEwpCkBAIC03ODAsMTggKzc5OSwyNCBAQAogICAgIHJldHVybiAtMTsKIH0KIAotUHlEb2NfU1RSVkFSKHhtbHBhcnNlX1BhcnNlRmlsZV9fZG9jX18sCi0iUGFyc2VGaWxlKGZpbGUpXG5cCi1QYXJzZSBYTUwgZGF0YSBmcm9tIGZpbGUtbGlrZSBvYmplY3QuIik7CisvKltjbGluaWMgaW5wdXRdCitweWV4cGF0LnhtbHBhcnNlci5QYXJzZUZpbGUKKworICAgIGZpbGU6IG9iamVjdAorICAgIC8KKworUGFyc2UgWE1MIGRhdGEgZnJvbSBmaWxlLWxpa2Ugb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgoteG1scGFyc2VfUGFyc2VGaWxlKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZikKK3B5ZXhwYXRfeG1scGFyc2VyX1BhcnNlRmlsZSh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmFkYzZhMTMxMDBjYzQyYiBpbnB1dD1mYmI1YTEyYjYwMzhkNzM1XSovCiB7CiAgICAgaW50IHJ2ID0gMTsKICAgICBQeU9iamVjdCAqcmVhZG1ldGhvZCA9IE5VTEw7CiAgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CiAKLSAgICByZWFkbWV0aG9kID0gX1B5T2JqZWN0X0dldEF0dHJJZChmLCAmUHlJZF9yZWFkKTsKKyAgICByZWFkbWV0aG9kID0gX1B5T2JqZWN0X0dldEF0dHJJZChmaWxlLCAmUHlJZF9yZWFkKTsKICAgICBpZiAocmVhZG1ldGhvZCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBoYXZlICdyZWFkJyBhdHRyaWJ1dGUiKTsKQEAgLTgyMyw0MiArODQ4LDUwIEBACiAgICAgcmV0dXJuIGdldF9wYXJzZV9yZXN1bHQoc2VsZiwgcnYpOwogfQogCi1QeURvY19TVFJWQVIoeG1scGFyc2VfU2V0QmFzZV9fZG9jX18sCi0iU2V0QmFzZShiYXNlX3VybClcblwKLVNldCB0aGUgYmFzZSBVUkwgZm9yIHRoZSBwYXJzZXIuIik7CisvKltjbGluaWMgaW5wdXRdCitweWV4cGF0LnhtbHBhcnNlci5TZXRCYXNlCisKKyAgICBiYXNlOiBzdHIKKyAgICAvCisKK1NldCB0aGUgYmFzZSBVUkwgZm9yIHRoZSBwYXJzZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi14bWxwYXJzZV9TZXRCYXNlKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3B5ZXhwYXRfeG1scGFyc2VyX1NldEJhc2VfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqYmFzZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jMjEyZGRjZWI2MDdiNTM5IGlucHV0PWM2ODRlNWRlODk1ZWUxYThdKi8KIHsKLSAgICBjaGFyICpiYXNlOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOlNldEJhc2UiLCAmYmFzZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghWE1MX1NldEJhc2Uoc2VsZi0+aXRzZWxmLCBiYXNlKSkgewogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoeG1scGFyc2VfR2V0QmFzZV9fZG9jX18sCi0iR2V0QmFzZSgpIC0+IHVybFxuXAotUmV0dXJuIGJhc2UgVVJMIHN0cmluZyBmb3IgdGhlIHBhcnNlci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B5ZXhwYXQueG1scGFyc2VyLkdldEJhc2UKKworUmV0dXJuIGJhc2UgVVJMIHN0cmluZyBmb3IgdGhlIHBhcnNlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXhtbHBhcnNlX0dldEJhc2UoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitweWV4cGF0X3htbHBhcnNlcl9HZXRCYXNlX2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjg4NmNiMjFmOWE4NzM5YSBpbnB1dD05MThkNzFjMzgwMDk2MjBlXSovCiB7CiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoInoiLCBYTUxfR2V0QmFzZShzZWxmLT5pdHNlbGYpKTsKIH0KIAotUHlEb2NfU1RSVkFSKHhtbHBhcnNlX0dldElucHV0Q29udGV4dF9fZG9jX18sCi0iR2V0SW5wdXRDb250ZXh0KCkgLT4gc3RyaW5nXG5cCi1SZXR1cm4gdGhlIHVudHJhbnNsYXRlZCB0ZXh0IG9mIHRoZSBpbnB1dCB0aGF0IGNhdXNlZCB0aGUgY3VycmVudCBldmVudC5cblwKLUlmIHRoZSBldmVudCB3YXMgZ2VuZXJhdGVkIGJ5IGEgbGFyZ2UgYW1vdW50IG9mIHRleHQgKHN1Y2ggYXMgYSBzdGFydCB0YWdcblwKLWZvciBhbiBlbGVtZW50IHdpdGggbWFueSBhdHRyaWJ1dGVzKSwgbm90IGFsbCBvZiB0aGUgdGV4dCBtYXkgYmUgYXZhaWxhYmxlLiIpOworLypbY2xpbmljIGlucHV0XQorcHlleHBhdC54bWxwYXJzZXIuR2V0SW5wdXRDb250ZXh0CisKK1JldHVybiB0aGUgdW50cmFuc2xhdGVkIHRleHQgb2YgdGhlIGlucHV0IHRoYXQgY2F1c2VkIHRoZSBjdXJyZW50IGV2ZW50LgorCitJZiB0aGUgZXZlbnQgd2FzIGdlbmVyYXRlZCBieSBhIGxhcmdlIGFtb3VudCBvZiB0ZXh0IChzdWNoIGFzIGEgc3RhcnQgdGFnCitmb3IgYW4gZWxlbWVudCB3aXRoIG1hbnkgYXR0cmlidXRlcyksIG5vdCBhbGwgb2YgdGhlIHRleHQgbWF5IGJlIGF2YWlsYWJsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXhtbHBhcnNlX0dldElucHV0Q29udGV4dCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK3B5ZXhwYXRfeG1scGFyc2VyX0dldElucHV0Q29udGV4dF9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE4ODAyNmQ2ODNmYzIyY2MgaW5wdXQ9MDM0ZGY4NzEyZGI2ODM3OV0qLwogewogICAgIGlmIChzZWxmLT5pbl9jYWxsYmFjaykgewogICAgICAgICBpbnQgb2Zmc2V0LCBzaXplOwpAQCAtODc1LDI0ICs5MDgsMjUgQEAKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUih4bWxwYXJzZV9FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZV9fZG9jX18sCi0iRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGUoY29udGV4dFssIGVuY29kaW5nXSlcblwKLUNyZWF0ZSBhIHBhcnNlciBmb3IgcGFyc2luZyBhbiBleHRlcm5hbCBlbnRpdHkgYmFzZWQgb24gdGhlXG5cCi1pbmZvcm1hdGlvbiBwYXNzZWQgdG8gdGhlIEV4dGVybmFsRW50aXR5UmVmSGFuZGxlci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B5ZXhwYXQueG1scGFyc2VyLkV4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlCisKKyAgICBjb250ZXh0OiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICBlbmNvZGluZzogc3RyID0gTlVMTAorICAgIC8KKworQ3JlYXRlIGEgcGFyc2VyIGZvciBwYXJzaW5nIGFuIGV4dGVybmFsIGVudGl0eSBiYXNlZCBvbiB0aGUgaW5mb3JtYXRpb24gcGFzc2VkIHRvIHRoZSBFeHRlcm5hbEVudGl0eVJlZkhhbmRsZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi14bWxwYXJzZV9FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitweWV4cGF0X3htbHBhcnNlcl9FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZV9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MzVjZGE5ZDdhMGZiY2Q2IGlucHV0PWI5MDY3MTRjYzEyMmMzMjJdKi8KIHsKLSAgICBjaGFyICpjb250ZXh0OwotICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKICAgICB4bWxwYXJzZW9iamVjdCAqbmV3X3BhcnNlcjsKICAgICBpbnQgaTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAienxzOkV4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbnRleHQsICZlbmNvZGluZykpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCiAgICAgbmV3X3BhcnNlciA9IFB5T2JqZWN0X0dDX05ldyh4bWxwYXJzZW9iamVjdCwgJlhtbHBhcnNldHlwZSk7CiAgICAgaWYgKG5ld19wYXJzZXIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC05NDgsNDEgKzk4Miw0OSBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdfcGFyc2VyOwogfQogCi1QeURvY19TVFJWQVIoeG1scGFyc2VfU2V0UGFyYW1FbnRpdHlQYXJzaW5nX19kb2NfXywKLSJTZXRQYXJhbUVudGl0eVBhcnNpbmcoZmxhZykgLT4gc3VjY2Vzc1xuXAotQ29udHJvbHMgcGFyc2luZyBvZiBwYXJhbWV0ZXIgZW50aXRpZXMgKGluY2x1ZGluZyB0aGUgZXh0ZXJuYWwgRFREXG5cCi1zdWJzZXQpLiBQb3NzaWJsZSBmbGFnIHZhbHVlcyBhcmUgWE1MX1BBUkFNX0VOVElUWV9QQVJTSU5HX05FVkVSLFxuXAotWE1MX1BBUkFNX0VOVElUWV9QQVJTSU5HX1VOTEVTU19TVEFOREFMT05FIGFuZFxuXAotWE1MX1BBUkFNX0VOVElUWV9QQVJTSU5HX0FMV0FZUy4gUmV0dXJucyB0cnVlIGlmIHNldHRpbmcgdGhlIGZsYWdcblwKLXdhcyBzdWNjZXNzZnVsLiIpOworLypbY2xpbmljIGlucHV0XQorcHlleHBhdC54bWxwYXJzZXIuU2V0UGFyYW1FbnRpdHlQYXJzaW5nCiAKLXN0YXRpYyBQeU9iamVjdCoKLXhtbHBhcnNlX1NldFBhcmFtRW50aXR5UGFyc2luZyh4bWxwYXJzZW9iamVjdCAqcCwgUHlPYmplY3QqIGFyZ3MpCisgICAgZmxhZzogaW50CisgICAgLworCitDb250cm9scyBwYXJzaW5nIG9mIHBhcmFtZXRlciBlbnRpdGllcyAoaW5jbHVkaW5nIHRoZSBleHRlcm5hbCBEVEQgc3Vic2V0KS4KKworUG9zc2libGUgZmxhZyB2YWx1ZXMgYXJlIFhNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19ORVZFUiwKK1hNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19VTkxFU1NfU1RBTkRBTE9ORSBhbmQKK1hNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19BTFdBWVMuIFJldHVybnMgdHJ1ZSBpZiBzZXR0aW5nIHRoZSBmbGFnCit3YXMgc3VjY2Vzc2Z1bC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX1NldFBhcmFtRW50aXR5UGFyc2luZ19pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBpbnQgZmxhZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xODY2OGVlOGU3NjBkNjRjIGlucHV0PThhZWExOWI0YjE1ZTlhZjFdKi8KIHsKLSAgICBpbnQgZmxhZzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiLCAmZmxhZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGZsYWcgPSBYTUxfU2V0UGFyYW1FbnRpdHlQYXJzaW5nKHAtPml0c2VsZiwgZmxhZyk7CisgICAgZmxhZyA9IFhNTF9TZXRQYXJhbUVudGl0eVBhcnNpbmcoc2VsZi0+aXRzZWxmLCBmbGFnKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGZsYWcpOwogfQogCiAKICNpZiBYTUxfQ09NQklORURfVkVSU0lPTiA+PSAxOTUwNQotUHlEb2NfU1RSVkFSKHhtbHBhcnNlX1VzZUZvcmVpZ25EVERfX2RvY19fLAotIlVzZUZvcmVpZ25EVEQoW2ZsYWddKVxuXAotQWxsb3dzIHRoZSBhcHBsaWNhdGlvbiB0byBwcm92aWRlIGFuIGFydGlmaWNpYWwgZXh0ZXJuYWwgc3Vic2V0IGlmIG9uZSBpc1xuXAotbm90IHNwZWNpZmllZCBhcyBwYXJ0IG9mIHRoZSBkb2N1bWVudCBpbnN0YW5jZS4gIFRoaXMgcmVhZGlseSBhbGxvd3MgdGhlXG5cCi11c2Ugb2YgYSAnZGVmYXVsdCcgZG9jdW1lbnQgdHlwZSBjb250cm9sbGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiwgd2hpbGUgc3RpbGxcblwKLWdldHRpbmcgdGhlIGFkdmFudGFnZSBvZiBwcm92aWRpbmcgZG9jdW1lbnQgdHlwZSBpbmZvcm1hdGlvbiB0byB0aGUgcGFyc2VyLlxuXAotJ2ZsYWcnIGRlZmF1bHRzIHRvIFRydWUgaWYgbm90IHByb3ZpZGVkLiIpOworLypbY2xpbmljIGlucHV0XQorcHlleHBhdC54bWxwYXJzZXIuVXNlRm9yZWlnbkRURAorCisgICAgZmxhZzogYm9vbCA9IFRydWUKKyAgICAvCisKK0FsbG93cyB0aGUgYXBwbGljYXRpb24gdG8gcHJvdmlkZSBhbiBhcnRpZmljaWFsIGV4dGVybmFsIHN1YnNldCBpZiBvbmUgaXMgbm90IHNwZWNpZmllZCBhcyBwYXJ0IG9mIHRoZSBkb2N1bWVudCBpbnN0YW5jZS4KKworVGhpcyByZWFkaWx5IGFsbG93cyB0aGUgdXNlIG9mIGEgJ2RlZmF1bHQnIGRvY3VtZW50IHR5cGUgY29udHJvbGxlZCBieSB0aGUKK2FwcGxpY2F0aW9uLCB3aGlsZSBzdGlsbCBnZXR0aW5nIHRoZSBhZHZhbnRhZ2Ugb2YgcHJvdmlkaW5nIGRvY3VtZW50IHR5cGUKK2luZm9ybWF0aW9uIHRvIHRoZSBwYXJzZXIuICdmbGFnJyBkZWZhdWx0cyB0byBUcnVlIGlmIG5vdCBwcm92aWRlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXhtbHBhcnNlX1VzZUZvcmVpZ25EVEQoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcHlleHBhdF94bWxwYXJzZXJfVXNlRm9yZWlnbkRURF9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBpbnQgZmxhZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jZmFhOWFhNTBiYjBmNjVjIGlucHV0PTc4MTQ0YzUxOWQxMTZhNmVdKi8KIHsKLSAgICBpbnQgZmxhZyA9IDE7CiAgICAgZW51bSBYTUxfRXJyb3IgcmM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8cDpVc2VGb3JlaWduRFREIiwgJmZsYWcpKQotICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJjID0gWE1MX1VzZUZvcmVpZ25EVEQoc2VsZi0+aXRzZWxmLCBmbGFnID8gWE1MX1RSVUUgOiBYTUxfRkFMU0UpOwogICAgIGlmIChyYyAhPSBYTUxfRVJST1JfTk9ORSkgewogICAgICAgICByZXR1cm4gc2V0X2Vycm9yKHNlbGYsIHJjKTsKQEAgLTk5MiwyOSArMTAzNCw3MCBAQAogfQogI2VuZGlmCiAKLXN0YXRpYyBQeU9iamVjdCAqeG1scGFyc2VfZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCogbm9hcmdzKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B5ZXhwYXQueG1scGFyc2VyLl9fZGlyX18KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX19fZGlyX19faW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYzIyNDUxZWZiOWU0ZDE3IGlucHV0PTc2YWE0NTVmMmE2NjEzODRdKi8KK3sKKyNkZWZpbmUgQVBQRU5EKGxpc3QsIHN0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKm8gPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhzdHIpOyAgICAgICAgXAorICAgICAgICAgICAgICAgIGlmIChvICE9IE5VTEwpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBQeUxpc3RfQXBwZW5kKGxpc3QsIG8pOyAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKG8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IHdoaWxlICgwKQorCisgICAgaW50IGk7CisgICAgUHlPYmplY3QgKnJjID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAoIXJjKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmb3IgKGkgPSAwOyBoYW5kbGVyX2luZm9baV0ubmFtZSAhPSBOVUxMOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKm8gPSBnZXRfaGFuZGxlcl9uYW1lKCZoYW5kbGVyX2luZm9baV0pOworICAgICAgICBpZiAobyAhPSBOVUxMKQorICAgICAgICAgICAgUHlMaXN0X0FwcGVuZChyYywgbyk7CisgICAgICAgIFB5X1hERUNSRUYobyk7CisgICAgfQorICAgIEFQUEVORChyYywgIkVycm9yQ29kZSIpOworICAgIEFQUEVORChyYywgIkVycm9yTGluZU51bWJlciIpOworICAgIEFQUEVORChyYywgIkVycm9yQ29sdW1uTnVtYmVyIik7CisgICAgQVBQRU5EKHJjLCAiRXJyb3JCeXRlSW5kZXgiKTsKKyAgICBBUFBFTkQocmMsICJDdXJyZW50TGluZU51bWJlciIpOworICAgIEFQUEVORChyYywgIkN1cnJlbnRDb2x1bW5OdW1iZXIiKTsKKyAgICBBUFBFTkQocmMsICJDdXJyZW50Qnl0ZUluZGV4Iik7CisgICAgQVBQRU5EKHJjLCAiYnVmZmVyX3NpemUiKTsKKyAgICBBUFBFTkQocmMsICJidWZmZXJfdGV4dCIpOworICAgIEFQUEVORChyYywgImJ1ZmZlcl91c2VkIik7CisgICAgQVBQRU5EKHJjLCAibmFtZXNwYWNlX3ByZWZpeGVzIik7CisgICAgQVBQRU5EKHJjLCAib3JkZXJlZF9hdHRyaWJ1dGVzIik7CisgICAgQVBQRU5EKHJjLCAic3BlY2lmaWVkX2F0dHJpYnV0ZXMiKTsKKyAgICBBUFBFTkQocmMsICJpbnRlcm4iKTsKKworI3VuZGVmIEFQUEVORAorCisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKHJjKTsKKyAgICAgICAgcmMgPSBOVUxMOworICAgIH0KKworICAgIHJldHVybiByYzsKK30KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiB4bWxwYXJzZV9tZXRob2RzW10gPSB7Ci0gICAgeyJQYXJzZSIsICAgICAoUHlDRnVuY3Rpb24peG1scGFyc2VfUGFyc2UsCi0gICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsIHhtbHBhcnNlX1BhcnNlX19kb2NfX30sCi0gICAgeyJQYXJzZUZpbGUiLCAoUHlDRnVuY3Rpb24peG1scGFyc2VfUGFyc2VGaWxlLAotICAgICAgICAgICAgICAgICAgTUVUSF9PLCAgICAgICB4bWxwYXJzZV9QYXJzZUZpbGVfX2RvY19ffSwKLSAgICB7IlNldEJhc2UiLCAgIChQeUNGdW5jdGlvbil4bWxwYXJzZV9TZXRCYXNlLAotICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCB4bWxwYXJzZV9TZXRCYXNlX19kb2NfX30sCi0gICAgeyJHZXRCYXNlIiwgICAoUHlDRnVuY3Rpb24peG1scGFyc2VfR2V0QmFzZSwKLSAgICAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTLCB4bWxwYXJzZV9HZXRCYXNlX19kb2NfX30sCi0gICAgeyJFeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSIsIChQeUNGdW5jdGlvbil4bWxwYXJzZV9FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSwKLSAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywgeG1scGFyc2VfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGVfX2RvY19ffSwKLSAgICB7IlNldFBhcmFtRW50aXR5UGFyc2luZyIsIChQeUNGdW5jdGlvbil4bWxwYXJzZV9TZXRQYXJhbUVudGl0eVBhcnNpbmcsCi0gICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsIHhtbHBhcnNlX1NldFBhcmFtRW50aXR5UGFyc2luZ19fZG9jX199LAotICAgIHsiR2V0SW5wdXRDb250ZXh0IiwgKFB5Q0Z1bmN0aW9uKXhtbHBhcnNlX0dldElucHV0Q29udGV4dCwKLSAgICAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTLCB4bWxwYXJzZV9HZXRJbnB1dENvbnRleHRfX2RvY19ffSwKKyAgICBQWUVYUEFUX1hNTFBBUlNFUl9QQVJTRV9NRVRIT0RERUYKKyAgICBQWUVYUEFUX1hNTFBBUlNFUl9QQVJTRUZJTEVfTUVUSE9EREVGCisgICAgUFlFWFBBVF9YTUxQQVJTRVJfU0VUQkFTRV9NRVRIT0RERUYKKyAgICBQWUVYUEFUX1hNTFBBUlNFUl9HRVRCQVNFX01FVEhPRERFRgorICAgIFBZRVhQQVRfWE1MUEFSU0VSX0dFVElOUFVUQ09OVEVYVF9NRVRIT0RERUYKKyAgICBQWUVYUEFUX1hNTFBBUlNFUl9FWFRFUk5BTEVOVElUWVBBUlNFUkNSRUFURV9NRVRIT0RERUYKKyAgICBQWUVYUEFUX1hNTFBBUlNFUl9TRVRQQVJBTUVOVElUWVBBUlNJTkdfTUVUSE9EREVGCiAjaWYgWE1MX0NPTUJJTkVEX1ZFUlNJT04gPj0gMTk1MDUKLSAgICB7IlVzZUZvcmVpZ25EVEQiLCAoUHlDRnVuY3Rpb24peG1scGFyc2VfVXNlRm9yZWlnbkRURCwKLSAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywgeG1scGFyc2VfVXNlRm9yZWlnbkRURF9fZG9jX199LAorICAgIFBZRVhQQVRfWE1MUEFSU0VSX1VTRUZPUkVJR05EVERfTUVUSE9EREVGCiAjZW5kaWYKLSAgICB7Il9fZGlyX18iLCB4bWxwYXJzZV9kaXIsIE1FVEhfTk9BUkdTfSwKLSAgICB7TlVMTCwgICAgICAgIE5VTEx9ICAgICAgICAgLyogc2VudGluZWwgKi8KKyAgICBQWUVYUEFUX1hNTFBBUlNFUl9fX0RJUl9fX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfSAgLyogc2VudGluZWwgKi8KIH07CiAKIC8qIC0tLS0tLS0tLS0gKi8KQEAgLTEwNzcsNyArMTE2MCw3IEBACiAKIAogc3RhdGljIFB5T2JqZWN0ICoKLW5ld3htbHBhcnNlb2JqZWN0KGNoYXIgKmVuY29kaW5nLCBjaGFyICpuYW1lc3BhY2Vfc2VwYXJhdG9yLCBQeU9iamVjdCAqaW50ZXJuKQorbmV3eG1scGFyc2VvYmplY3QoY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKm5hbWVzcGFjZV9zZXBhcmF0b3IsIFB5T2JqZWN0ICppbnRlcm4pCiB7CiAgICAgaW50IGk7CiAgICAgeG1scGFyc2VvYmplY3QgKnNlbGY7CkBAIC0xMjU1LDUyICsxMzM4LDYgQEAKICAgICByZXR1cm4gUHlPYmplY3RfR2VuZXJpY0dldEF0dHIoKFB5T2JqZWN0KilzZWxmLCBuYW1lb2JqKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLXhtbHBhcnNlX2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QqIG5vYXJncykKLXsKLSNkZWZpbmUgQVBQRU5EKGxpc3QsIHN0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgUHlPYmplY3QgKm8gPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhzdHIpOyAgICAgICAgXAotICAgICAgICAgICAgICAgIGlmIChvICE9IE5VTEwpICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICBQeUxpc3RfQXBwZW5kKGxpc3QsIG8pOyAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKG8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9IHdoaWxlICgwKQotCi0gICAgaW50IGk7Ci0gICAgUHlPYmplY3QgKnJjID0gUHlMaXN0X05ldygwKTsKLSAgICBpZiAoIXJjKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmb3IgKGkgPSAwOyBoYW5kbGVyX2luZm9baV0ubmFtZSAhPSBOVUxMOyBpKyspIHsKLSAgICAgICAgUHlPYmplY3QgKm8gPSBnZXRfaGFuZGxlcl9uYW1lKCZoYW5kbGVyX2luZm9baV0pOwotICAgICAgICBpZiAobyAhPSBOVUxMKQotICAgICAgICAgICAgUHlMaXN0X0FwcGVuZChyYywgbyk7Ci0gICAgICAgIFB5X1hERUNSRUYobyk7Ci0gICAgfQotICAgIEFQUEVORChyYywgIkVycm9yQ29kZSIpOwotICAgIEFQUEVORChyYywgIkVycm9yTGluZU51bWJlciIpOwotICAgIEFQUEVORChyYywgIkVycm9yQ29sdW1uTnVtYmVyIik7Ci0gICAgQVBQRU5EKHJjLCAiRXJyb3JCeXRlSW5kZXgiKTsKLSAgICBBUFBFTkQocmMsICJDdXJyZW50TGluZU51bWJlciIpOwotICAgIEFQUEVORChyYywgIkN1cnJlbnRDb2x1bW5OdW1iZXIiKTsKLSAgICBBUFBFTkQocmMsICJDdXJyZW50Qnl0ZUluZGV4Iik7Ci0gICAgQVBQRU5EKHJjLCAiYnVmZmVyX3NpemUiKTsKLSAgICBBUFBFTkQocmMsICJidWZmZXJfdGV4dCIpOwotICAgIEFQUEVORChyYywgImJ1ZmZlcl91c2VkIik7Ci0gICAgQVBQRU5EKHJjLCAibmFtZXNwYWNlX3ByZWZpeGVzIik7Ci0gICAgQVBQRU5EKHJjLCAib3JkZXJlZF9hdHRyaWJ1dGVzIik7Ci0gICAgQVBQRU5EKHJjLCAic3BlY2lmaWVkX2F0dHJpYnV0ZXMiKTsKLSAgICBBUFBFTkQocmMsICJpbnRlcm4iKTsKLQotI3VuZGVmIEFQUEVORAotCi0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgUHlfREVDUkVGKHJjKTsKLSAgICAgICAgcmMgPSBOVUxMOwotICAgIH0KLQotICAgIHJldHVybiByYzsKLX0KLQogc3RhdGljIGludAogc2V0aGFuZGxlcih4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0KiB2KQogewpAQCAtMTUxMiwyNCArMTU0OSwyNCBAQAogLyogRW5kIG9mIGNvZGUgZm9yIHhtbHBhcnNlciBvYmplY3RzICovCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1QeURvY19TVFJWQVIocHlleHBhdF9QYXJzZXJDcmVhdGVfX2RvY19fLAotIlBhcnNlckNyZWF0ZShbZW5jb2RpbmdbLCBuYW1lc3BhY2Vfc2VwYXJhdG9yXV0pIC0+IHBhcnNlclxuXAotUmV0dXJuIGEgbmV3IFhNTCBwYXJzZXIgb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorcHlleHBhdC5QYXJzZXJDcmVhdGUKKworICAgIGVuY29kaW5nOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgbmFtZXNwYWNlX3NlcGFyYXRvcjogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGludGVybjogb2JqZWN0ID0gTlVMTAorCitSZXR1cm4gYSBuZXcgWE1MIHBhcnNlciBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1weWV4cGF0X1BhcnNlckNyZWF0ZShQeU9iamVjdCAqbm90dXNlZCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKK3B5ZXhwYXRfUGFyc2VyQ3JlYXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWVzcGFjZV9zZXBhcmF0b3IsIFB5T2JqZWN0ICppbnRlcm4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODFmY2NkMjMzZTE3NDNhOCBpbnB1dD0yM2QyOTcwNGFjYWQzODVkXSovCiB7Ci0gICAgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwotICAgIGNoYXIgKm5hbWVzcGFjZV9zZXBhcmF0b3IgPSBOVUxMOwotICAgIFB5T2JqZWN0ICppbnRlcm4gPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgaW50IGludGVybl9kZWNyZWYgPSAwOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZW5jb2RpbmciLCAibmFtZXNwYWNlX3NlcGFyYXRvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcm4iLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifHp6TzpQYXJzZXJDcmVhdGUiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVuY29kaW5nLCAmbmFtZXNwYWNlX3NlcGFyYXRvciwgJmludGVybikpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChuYW1lc3BhY2Vfc2VwYXJhdG9yICE9IE5VTEwKICAgICAgICAgJiYgc3RybGVuKG5hbWVzcGFjZV9zZXBhcmF0b3IpID4gMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKQEAgLTE1NTksMjkgKzE1OTYsMjggQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QeURvY19TVFJWQVIocHlleHBhdF9FcnJvclN0cmluZ19fZG9jX18sCi0iRXJyb3JTdHJpbmcoZXJybm8pIC0+IHN0cmluZ1xuXAotUmV0dXJucyBzdHJpbmcgZXJyb3IgZm9yIGdpdmVuIG51bWJlci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B5ZXhwYXQuRXJyb3JTdHJpbmcKKworICAgIGNvZGU6IGxvbmcKKyAgICAvCisKK1JldHVybnMgc3RyaW5nIGVycm9yIGZvciBnaXZlbiBudW1iZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1weWV4cGF0X0Vycm9yU3RyaW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3B5ZXhwYXRfRXJyb3JTdHJpbmdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBsb25nIGNvZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDg3NjY4MTA4YjY4NjhlNSBpbnB1dD1jYzY3ZGUwMTBkOWU2MmIzXSovCiB7Ci0gICAgbG9uZyBjb2RlID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibDpFcnJvclN0cmluZyIsICZjb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoInoiLCBYTUxfRXJyb3JTdHJpbmcoKGludCljb2RlKSk7CiB9CiAKIC8qIExpc3Qgb2YgbWV0aG9kcyBkZWZpbmVkIGluIHRoZSBtb2R1bGUgKi8KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBweWV4cGF0X21ldGhvZHNbXSA9IHsKLSAgICB7IlBhcnNlckNyZWF0ZSIsICAgIChQeUNGdW5jdGlvbilweWV4cGF0X1BhcnNlckNyZWF0ZSwKLSAgICAgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHB5ZXhwYXRfUGFyc2VyQ3JlYXRlX19kb2NfX30sCi0gICAgeyJFcnJvclN0cmluZyIsICAgICAoUHlDRnVuY3Rpb24pcHlleHBhdF9FcnJvclN0cmluZywKLSAgICAgTUVUSF9WQVJBUkdTLCAgICAgIHB5ZXhwYXRfRXJyb3JTdHJpbmdfX2RvY19ffSwKLQotICAgIHtOVUxMLCAgICAgICAoUHlDRnVuY3Rpb24pTlVMTCwgMCwgTlVMTH0gICAgICAgICAgICAvKiBzZW50aW5lbCAqLworICAgIFBZRVhQQVRfUEFSU0VSQ1JFQVRFX01FVEhPRERFRgorICAgIFBZRVhQQVRfRVJST1JTVFJJTkdfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9ICAvKiBzZW50aW5lbCAqLwogfTsKIAogLyogTW9kdWxlIGRvY3N0cmluZyAqLwpAQCAtMTU5OSwxNiArMTYzNSw2IEBACiAjZGVmaW5lIE1PRFVMRV9JTklURlVOQyBQeUluaXRfcHlleHBhdAogI2VuZGlmCiAKLSNpZm5kZWYgUHlNT0RJTklUX0ZVTkMKLSMgICBpZmRlZiBNU19XSU5ET1dTCi0jICAgICAgIGRlZmluZSBQeU1PRElOSVRfRlVOQyBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZAotIyAgIGVsc2UKLSMgICAgICAgZGVmaW5lIFB5TU9ESU5JVF9GVU5DIHZvaWQKLSMgICBlbmRpZgotI2VuZGlmCi0KLVB5TU9ESU5JVF9GVU5DIE1PRFVMRV9JTklURlVOQyh2b2lkKTsgIC8qIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzICovCi0KIHN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgcHlleHBhdG1vZHVsZSA9IHsKICAgICAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAogICAgICAgICBNT0RVTEVfTkFNRSwKQEAgLTE2NjYsNyArMTY5Miw3IEBACiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJYTUxQYXJzZXJUeXBlIiwgKFB5T2JqZWN0ICopICZYbWxwYXJzZXR5cGUpOwogCiAgICAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIkVYUEFUX1ZFUlNJT04iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopIFhNTF9FeHBhdFZlcnNpb24oKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX0V4cGF0VmVyc2lvbigpKTsKICAgICB7CiAgICAgICAgIFhNTF9FeHBhdF9WZXJzaW9uIGluZm8gPSBYTUxfRXhwYXRWZXJzaW9uSW5mbygpOwogICAgICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInZlcnNpb25faW5mbyIsCkBAIC0xNzQ2LDcgKzE3NzIsNyBAQAogCiAjZGVmaW5lIE1ZQ09OU1QobmFtZSkgXAogICAgIGlmIChQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChlcnJvcnNfbW9kdWxlLCAjbmFtZSwgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopWE1MX0Vycm9yU3RyaW5nKG5hbWUpKSA8IDApIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX0Vycm9yU3RyaW5nKG5hbWUpKSA8IDApICAgICAgICAgXAogICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdG1wbnVtID0gUHlMb25nX0Zyb21Mb25nKG5hbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBpZiAodG1wbnVtID09IE5VTEwpIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTk1NywzICsxOTgzLDggQEAKIAogICAgIHtOVUxMLCBOVUxMLCBOVUxMfSAvKiBzZW50aW5lbCAqLwogfTsKKworLypbY2xpbmljIGlucHV0XQorZHVtcCBidWZmZXIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTUyNGNlMmUwMjFlNGViYTZdKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvcmVhZGxpbmUuYyBiL01vZHVsZXMvcmVhZGxpbmUuYwppbmRleCBlOWVhYmY1Li5hNjU4MWIwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3JlYWRsaW5lLmMKKysrIGIvTW9kdWxlcy9yZWFkbGluZS5jCkBAIC0yMzcsNiArMjM3LDQzIEBACiBUaGUgZGVmYXVsdCBmaWxlbmFtZSBpcyB+Ly5oaXN0b3J5LiIpOwogCiAKKyNpZmRlZiBIQVZFX1JMX0FQUEVORF9ISVNUT1JZCisvKiBFeHBvcnRlZCBmdW5jdGlvbiB0byBzYXZlIHBhcnQgb2YgYSByZWFkbGluZSBoaXN0b3J5IGZpbGUgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2FwcGVuZF9oaXN0b3J5X2ZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBuZWxlbWVudHM7CisgICAgUHlPYmplY3QgKmZpbGVuYW1lX29iaiA9IFB5X05vbmUsICpmaWxlbmFtZV9ieXRlczsKKyAgICBjaGFyICpmaWxlbmFtZTsKKyAgICBpbnQgZXJyOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXxPOmFwcGVuZF9oaXN0b3J5X2ZpbGUiLCAmbmVsZW1lbnRzLCAmZmlsZW5hbWVfb2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGZpbGVuYW1lX29iaiAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKGZpbGVuYW1lX29iaiwgJmZpbGVuYW1lX2J5dGVzKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBmaWxlbmFtZSA9IFB5Qnl0ZXNfQXNTdHJpbmcoZmlsZW5hbWVfYnl0ZXMpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZpbGVuYW1lX2J5dGVzID0gTlVMTDsKKyAgICAgICAgZmlsZW5hbWUgPSBOVUxMOworICAgIH0KKyAgICBlcnJubyA9IGVyciA9IGFwcGVuZF9oaXN0b3J5KG5lbGVtZW50cywgZmlsZW5hbWUpOworICAgIGlmICghZXJyICYmIF9oaXN0b3J5X2xlbmd0aCA+PSAwKQorICAgICAgICBoaXN0b3J5X3RydW5jYXRlX2ZpbGUoZmlsZW5hbWUsIF9oaXN0b3J5X2xlbmd0aCk7CisgICAgUHlfWERFQ1JFRihmaWxlbmFtZV9ieXRlcyk7CisgICAgZXJybm8gPSBlcnI7CisgICAgaWYgKGVycm5vKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoZG9jX2FwcGVuZF9oaXN0b3J5X2ZpbGUsCisiYXBwZW5kX2hpc3RvcnlfZmlsZShuZWxlbWVudHNbLCBmaWxlbmFtZV0pIC0+IE5vbmVcblwKK0FwcGVuZCB0aGUgbGFzdCBuZWxlbWVudHMgb2YgdGhlIGhpc3RvcnkgbGlzdCB0byBmaWxlLlxuXAorVGhlIGRlZmF1bHQgZmlsZW5hbWUgaXMgfi8uaGlzdG9yeS4iKTsKKyNlbmRpZgorCisKIC8qIFNldCBoaXN0b3J5IGxlbmd0aCAqLwogCiBzdGF0aWMgUHlPYmplY3QqCkBAIC03NDgsNiArNzg1LDEwIEBACiAgICAgIE1FVEhfVkFSQVJHUywgZG9jX3JlYWRfaGlzdG9yeV9maWxlfSwKICAgICB7IndyaXRlX2hpc3RvcnlfZmlsZSIsIHdyaXRlX2hpc3RvcnlfZmlsZSwKICAgICAgTUVUSF9WQVJBUkdTLCBkb2Nfd3JpdGVfaGlzdG9yeV9maWxlfSwKKyNpZmRlZiBIQVZFX1JMX0FQUEVORF9ISVNUT1JZCisgICAgeyJhcHBlbmRfaGlzdG9yeV9maWxlIiwgYXBwZW5kX2hpc3RvcnlfZmlsZSwKKyAgICAgTUVUSF9WQVJBUkdTLCBkb2NfYXBwZW5kX2hpc3RvcnlfZmlsZX0sCisjZW5kaWYKICAgICB7ImdldF9oaXN0b3J5X2l0ZW0iLCBnZXRfaGlzdG9yeV9pdGVtLAogICAgICBNRVRIX1ZBUkFSR1MsIGRvY19nZXRfaGlzdG9yeV9pdGVtfSwKICAgICB7ImdldF9jdXJyZW50X2hpc3RvcnlfbGVuZ3RoIiwgKFB5Q0Z1bmN0aW9uKWdldF9jdXJyZW50X2hpc3RvcnlfbGVuZ3RoLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYyBiL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMKaW5kZXggNjVmYjZhNC4uYjNhYzgwNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jCkBAIC0xOTMsNTEgKzE5MywzMiBAQAogI2VuZGlmIC8qIFNFTEVDVF9VU0VTX0hFQVAgKi8KICAgICBQeU9iamVjdCAqaWZkbGlzdCwgKm9mZGxpc3QsICplZmRsaXN0OwogICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICp0b3V0ID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqdGltZW91dF9vYmogPSBQeV9Ob25lOwogICAgIGZkX3NldCBpZmRzZXQsIG9mZHNldCwgZWZkc2V0OwogICAgIHN0cnVjdCB0aW1ldmFsIHR2LCAqdHZwOwogICAgIGludCBpbWF4LCBvbWF4LCBlbWF4LCBtYXg7CiAgICAgaW50IG47CisgICAgX1B5VGltZV90IHRpbWVvdXQsIGRlYWRsaW5lID0gMDsKIAogICAgIC8qIGNvbnZlcnQgYXJndW1lbnRzICovCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic2VsZWN0IiwgMywgNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmlmZGxpc3QsICZvZmRsaXN0LCAmZWZkbGlzdCwgJnRvdXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAmaWZkbGlzdCwgJm9mZGxpc3QsICZlZmRsaXN0LCAmdGltZW91dF9vYmopKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICh0b3V0ID09IFB5X05vbmUpCi0gICAgICAgIHR2cCA9IChzdHJ1Y3QgdGltZXZhbCAqKTA7Ci0gICAgZWxzZSBpZiAoIVB5TnVtYmVyX0NoZWNrKHRvdXQpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIGEgZmxvYXQgb3IgTm9uZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaWYgKHRpbWVvdXRfb2JqID09IFB5X05vbmUpCisgICAgICAgIHR2cCA9IChzdHJ1Y3QgdGltZXZhbCAqKU5VTEw7CiAgICAgZWxzZSB7Ci0gICAgICAgIC8qIE9uIE9wZW5CU0QgNS40LCB0aW1ldmFsLnR2X3NlYyBpcyBhIGxvbmcuCi0gICAgICAgICAqIEV4YW1wbGU6IGxvbmcgaXMgNjQtYml0LCB3aGVyZWFzIHRpbWVfdCBpcyAzMi1iaXQuICovCi0gICAgICAgIHRpbWVfdCBzZWM7Ci0gICAgICAgIC8qIE9uIE9TIFggNjQtYml0LCB0aW1ldmFsLnR2X3VzZWMgaXMgYW4gaW50IChhbmQgdGh1cyBzdGlsbCA0Ci0gICAgICAgICAgIGJ5dGVzIGFzIHJlcXVpcmVkKSwgYnV0IG5vIGxvbmdlciBkZWZpbmVkIGJ5IGEgbG9uZy4gKi8KLSAgICAgICAgbG9uZyB1c2VjOwotICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWV2YWwodG91dCwgJnNlYywgJnVzZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX1JPVU5EX1VQKSA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgLyogT24gV2luZG93cywgdGltZXZhbC50dl9zZWMgaXMgYSBsb25nICgzMiBiaXQpLAotICAgICAgICAgKiB3aGVyZWFzIHRpbWVfdCBjYW4gYmUgNjQtYml0LiAqLwotICAgICAgICBhc3NlcnQoc2l6ZW9mKHR2LnR2X3NlYykgPT0gc2l6ZW9mKGxvbmcpKTsKLSNpZiBTSVpFT0ZfVElNRV9UID4gU0laRU9GX0xPTkcKLSAgICAgICAgaWYgKHNlYyA+IExPTkdfTUFYKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBpcyB0b28gbGFyZ2UiKTsKKyAgICAgICAgaWYgKF9QeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoJnRpbWVvdXQsIHRpbWVvdXRfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIDwgMCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IG11c3QgYmUgYSBmbG9hdCBvciBOb25lIik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIHR2LnR2X3NlYyA9IChsb25nKXNlYzsKLSNlbHNlCi0gICAgICAgIGFzc2VydChzaXplb2YodHYudHZfc2VjKSA+PSBzaXplb2Yoc2VjKSk7Ci0gICAgICAgIHR2LnR2X3NlYyA9IHNlYzsKLSNlbmRpZgotICAgICAgICB0di50dl91c2VjID0gdXNlYzsKKworICAgICAgICBpZiAoX1B5VGltZV9Bc1RpbWV2YWwodGltZW91dCwgJnR2LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICh0di50dl9zZWMgPCAwKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInRpbWVvdXQgbXVzdCBiZSBub24tbmVnYXRpdmUiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjQ1LDcgKzIyNiw2IEBACiAgICAgICAgIHR2cCA9ICZ0djsKICAgICB9CiAKLQogI2lmZGVmIFNFTEVDVF9VU0VTX0hFQVAKICAgICAvKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBsaXN0cyAqLwogICAgIHJmZDJvYmogPSBQeU1lbV9ORVcocHlsaXN0LCBGRF9TRVRTSVpFICsgMSk7CkBAIC0yNTgsNiArMjM4LDcgQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQogI2VuZGlmIC8qIFNFTEVDVF9VU0VTX0hFQVAgKi8KKwogICAgIC8qIENvbnZlcnQgc2VxdWVuY2VzIHRvIGZkX3NldHMsIGFuZCBnZXQgbWF4aW11bSBmZCBudW1iZXIKICAgICAgKiBwcm9wYWdhdGVzIHRoZSBQeXRob24gZXhjZXB0aW9uIHNldCBpbiBzZXEyc2V0KCkKICAgICAgKi8KQEAgLTI3MCwxMyArMjUxLDM3IEBACiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICBpZiAoKGVtYXg9c2VxMnNldChlZmRsaXN0LCAmZWZkc2V0LCBlZmQyb2JqKSkgPCAwKQogICAgICAgICBnb3RvIGZpbmFsbHk7CisKICAgICBtYXggPSBpbWF4OwogICAgIGlmIChvbWF4ID4gbWF4KSBtYXggPSBvbWF4OwogICAgIGlmIChlbWF4ID4gbWF4KSBtYXggPSBlbWF4OwogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIG4gPSBzZWxlY3QobWF4LCAmaWZkc2V0LCAmb2Zkc2V0LCAmZWZkc2V0LCB0dnApOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHR2cCkKKyAgICAgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyB0aW1lb3V0OworCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgbiA9IHNlbGVjdChtYXgsICZpZmRzZXQsICZvZmRzZXQsICZlZmRzZXQsIHR2cCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyogc2VsZWN0KCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsICovCisgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKworICAgICAgICBpZiAodHZwKSB7CisgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CisgICAgICAgICAgICBpZiAodGltZW91dCA8IDApIHsKKyAgICAgICAgICAgICAgICBuID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9QeVRpbWVfQXNUaW1ldmFsX25vcmFpc2UodGltZW91dCwgJnR2LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworICAgICAgICAgICAgLyogcmV0cnkgc2VsZWN0KCkgd2l0aCB0aGUgcmVjb21wdXRlZCB0aW1lb3V0ICovCisgICAgICAgIH0KKyAgICB9IHdoaWxlICgxKTsKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAobiA9PSBTT0NLRVRfRVJST1IpIHsKQEAgLTUxNiwzMCArNTIxLDM5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcG9sbF9wb2xsKHBvbGxPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpyZXN1bHRfbGlzdCA9IE5VTEwsICp0b3V0ID0gTlVMTDsKLSAgICBpbnQgdGltZW91dCA9IDAsIHBvbGxfcmVzdWx0LCBpLCBqOworICAgIFB5T2JqZWN0ICpyZXN1bHRfbGlzdCA9IE5VTEwsICp0aW1lb3V0X29iaiA9IE5VTEw7CisgICAgaW50IHBvbGxfcmVzdWx0LCBpLCBqOwogICAgIFB5T2JqZWN0ICp2YWx1ZSA9IE5VTEwsICpudW0gPSBOVUxMOworICAgIF9QeVRpbWVfdCB0aW1lb3V0LCBtcywgZGVhZGxpbmU7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJwb2xsIiwgMCwgMSwgJnRvdXQpKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8Tzpwb2xsIiwgJnRpbWVvdXRfb2JqKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICAvKiBDaGVjayB2YWx1ZXMgZm9yIHRpbWVvdXQgKi8KLSAgICBpZiAodG91dCA9PSBOVUxMIHx8IHRvdXQgPT0gUHlfTm9uZSkKKyAgICBpZiAodGltZW91dF9vYmogPT0gTlVMTCB8fCB0aW1lb3V0X29iaiA9PSBQeV9Ob25lKSB7CiAgICAgICAgIHRpbWVvdXQgPSAtMTsKLSAgICBlbHNlIGlmICghUHlOdW1iZXJfQ2hlY2sodG91dCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IG11c3QgYmUgYW4gaW50ZWdlciBvciBOb25lIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBtcyA9IC0xOworICAgICAgICBkZWFkbGluZSA9IDA7ICAgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCiAgICAgfQogICAgIGVsc2UgewotICAgICAgICB0b3V0ID0gUHlOdW1iZXJfTG9uZyh0b3V0KTsKLSAgICAgICAgaWYgKCF0b3V0KQorICAgICAgICBpZiAoX1B5VGltZV9Gcm9tTWlsbGlzZWNvbmRzT2JqZWN0KCZ0aW1lb3V0LCB0aW1lb3V0X29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIDwgMCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IG11c3QgYmUgYW4gaW50ZWdlciBvciBOb25lIik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgdGltZW91dCA9IF9QeUxvbmdfQXNJbnQodG91dCk7Ci0gICAgICAgIFB5X0RFQ1JFRih0b3V0KTsKLSAgICAgICAgaWYgKHRpbWVvdXQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgfQorCisgICAgICAgIG1zID0gX1B5VGltZV9Bc01pbGxpc2Vjb25kcyh0aW1lb3V0LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworICAgICAgICBpZiAobXMgPCBJTlRfTUlOIHx8IG1zID4gSU5UX01BWCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJ0aW1lb3V0IGlzIHRvbyBsYXJnZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBkZWFkbGluZSA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKSArIHRpbWVvdXQ7CiAgICAgfQogCiAgICAgLyogQXZvaWQgY29uY3VycmVudCBwb2xsKCkgaW52b2NhdGlvbiwgaXNzdWUgODg2NSAqLwpAQCAtNTU3LDE0ICs1NzEsMzggQEAKICAgICBzZWxmLT5wb2xsX3J1bm5pbmcgPSAxOwogCiAgICAgLyogY2FsbCBwb2xsKCkgKi8KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcG9sbF9yZXN1bHQgPSBwb2xsKHNlbGYtPnVmZHMsIHNlbGYtPnVmZF9sZW4sIHRpbWVvdXQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgYXN5bmNfZXJyID0gMDsKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZXJybm8gPSAwOworICAgICAgICBwb2xsX3Jlc3VsdCA9IHBvbGwoc2VsZi0+dWZkcywgc2VsZi0+dWZkX2xlbiwgKGludCltcyk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyogcG9sbCgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAqLworICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKKyAgICAgICAgICAgIGFzeW5jX2VyciA9IDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aW1lb3V0ID49IDApIHsKKyAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKyAgICAgICAgICAgIGlmICh0aW1lb3V0IDwgMCkgeworICAgICAgICAgICAgICAgIHBvbGxfcmVzdWx0ID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1zID0gX1B5VGltZV9Bc01pbGxpc2Vjb25kcyh0aW1lb3V0LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworICAgICAgICAgICAgLyogcmV0cnkgcG9sbCgpIHdpdGggdGhlIHJlY29tcHV0ZWQgdGltZW91dCAqLworICAgICAgICB9CisgICAgfSB3aGlsZSAoMSk7CiAKICAgICBzZWxmLT5wb2xsX3J1bm5pbmcgPSAwOwogCiAgICAgaWYgKHBvbGxfcmVzdWx0IDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIGlmICghYXN5bmNfZXJyKQorICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTU3Myw0MSArNjExLDQwIEBACiAgICAgcmVzdWx0X2xpc3QgPSBQeUxpc3RfTmV3KHBvbGxfcmVzdWx0KTsKICAgICBpZiAoIXJlc3VsdF9saXN0KQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBlbHNlIHsKLSAgICAgICAgZm9yIChpID0gMCwgaiA9IDA7IGogPCBwb2xsX3Jlc3VsdDsgaisrKSB7Ci0gICAgICAgICAgICAvKiBza2lwIHRvIHRoZSBuZXh0IGZpcmVkIGRlc2NyaXB0b3IgKi8KLSAgICAgICAgICAgIHdoaWxlICghc2VsZi0+dWZkc1tpXS5yZXZlbnRzKSB7Ci0gICAgICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogaWYgd2UgaGl0IGEgTlVMTCByZXR1cm4sIHNldCB2YWx1ZSB0byBOVUxMCi0gICAgICAgICAgICAgICBhbmQgYnJlYWsgb3V0IG9mIGxvb3A7IGNvZGUgYXQgZW5kIHdpbGwKLSAgICAgICAgICAgICAgIGNsZWFuIHVwIHJlc3VsdF9saXN0ICovCi0gICAgICAgICAgICB2YWx1ZSA9IFB5VHVwbGVfTmV3KDIpOwotICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIG51bSA9IFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT51ZmRzW2ldLmZkKTsKLSAgICAgICAgICAgIGlmIChudW0gPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odmFsdWUsIDAsIG51bSk7CiAKLSAgICAgICAgICAgIC8qIFRoZSAmMHhmZmZmIGlzIGEgd29ya2Fyb3VuZCBmb3IgQUlYLiAgJ3JldmVudHMnCi0gICAgICAgICAgICAgICBpcyBhIDE2LWJpdCBzaG9ydCwgYW5kIElCTSBhc3NpZ25lZCBQT0xMTlZBTAotICAgICAgICAgICAgICAgdG8gYmUgMHg4MDAwLCBzbyB0aGUgY29udmVyc2lvbiB0byBpbnQgcmVzdWx0cwotICAgICAgICAgICAgICAgaW4gYSBuZWdhdGl2ZSBudW1iZXIuIFNlZSBTRiBidWcgIzkyMzMxNS4gKi8KLSAgICAgICAgICAgIG51bSA9IFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT51ZmRzW2ldLnJldmVudHMgJiAweGZmZmYpOwotICAgICAgICAgICAgaWYgKG51bSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh2YWx1ZSwgMSwgbnVtKTsKLSAgICAgICAgICAgIGlmICgoUHlMaXN0X1NldEl0ZW0ocmVzdWx0X2xpc3QsIGosIHZhbHVlKSkgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgZm9yIChpID0gMCwgaiA9IDA7IGogPCBwb2xsX3Jlc3VsdDsgaisrKSB7CisgICAgICAgIC8qIHNraXAgdG8gdGhlIG5leHQgZmlyZWQgZGVzY3JpcHRvciAqLworICAgICAgICB3aGlsZSAoIXNlbGYtPnVmZHNbaV0ucmV2ZW50cykgewogICAgICAgICAgICAgaSsrOwogICAgICAgICB9CisgICAgICAgIC8qIGlmIHdlIGhpdCBhIE5VTEwgcmV0dXJuLCBzZXQgdmFsdWUgdG8gTlVMTAorICAgICAgICAgICBhbmQgYnJlYWsgb3V0IG9mIGxvb3A7IGNvZGUgYXQgZW5kIHdpbGwKKyAgICAgICAgICAgY2xlYW4gdXAgcmVzdWx0X2xpc3QgKi8KKyAgICAgICAgdmFsdWUgPSBQeVR1cGxlX05ldygyKTsKKyAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBudW0gPSBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+dWZkc1tpXS5mZCk7CisgICAgICAgIGlmIChudW0gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh2YWx1ZSwgMCwgbnVtKTsKKworICAgICAgICAvKiBUaGUgJjB4ZmZmZiBpcyBhIHdvcmthcm91bmQgZm9yIEFJWC4gICdyZXZlbnRzJworICAgICAgICAgICBpcyBhIDE2LWJpdCBzaG9ydCwgYW5kIElCTSBhc3NpZ25lZCBQT0xMTlZBTAorICAgICAgICAgICB0byBiZSAweDgwMDAsIHNvIHRoZSBjb252ZXJzaW9uIHRvIGludCByZXN1bHRzCisgICAgICAgICAgIGluIGEgbmVnYXRpdmUgbnVtYmVyLiBTZWUgU0YgYnVnICM5MjMzMTUuICovCisgICAgICAgIG51bSA9IFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT51ZmRzW2ldLnJldmVudHMgJiAweGZmZmYpOworICAgICAgICBpZiAobnVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odmFsdWUsIDEsIG51bSk7CisgICAgICAgIGlmICgoUHlMaXN0X1NldEl0ZW0ocmVzdWx0X2xpc3QsIGosIHZhbHVlKSkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGkrKzsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdF9saXN0OwogCkBAIC03MTgsMTQgKzc1NSwxMCBAQAogICAgIHNpemUgPSBzaXplb2Yoc3RydWN0IHBvbGxmZCkqc2VsZi0+bl9mZHM7CiAgICAgc2VsZi0+bl9mZHMgPSAwOwogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIG4gPSB3cml0ZShzZWxmLT5mZF9kZXZwb2xsLCBzZWxmLT5mZHMsIHNpemUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAobiA9PSAtMSApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgIG4gPSBfUHlfd3JpdGUoc2VsZi0+ZmRfZGV2cG9sbCwgc2VsZi0+ZmRzLCBzaXplKTsKKyAgICBpZiAobiA9PSAtMSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKwogICAgIGlmIChuIDwgc2l6ZSkgewogICAgICAgICAvKgogICAgICAgICAqKiBEYXRhIHdyaXRlZCB0byAvZGV2L3BvbGwgaXMgYSBiaW5hcnkgZGF0YSBzdHJ1Y3R1cmUuIEl0IGlzIG5vdApAQCAtODQzLDQwICs4NzYsMzggQEAKIGRldnBvbGxfcG9sbChkZXZwb2xsT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBzdHJ1Y3QgZHZwb2xsIGR2cDsKLSAgICBQeU9iamVjdCAqcmVzdWx0X2xpc3QgPSBOVUxMLCAqdG91dCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlc3VsdF9saXN0ID0gTlVMTCwgKnRpbWVvdXRfb2JqID0gTlVMTDsKICAgICBpbnQgcG9sbF9yZXN1bHQsIGk7Ci0gICAgbG9uZyB0aW1lb3V0OwogICAgIFB5T2JqZWN0ICp2YWx1ZSwgKm51bTEsICpudW0yOworICAgIF9QeVRpbWVfdCB0aW1lb3V0LCBtcywgZGVhZGxpbmUgPSAwOwogCiAgICAgaWYgKHNlbGYtPmZkX2RldnBvbGwgPCAwKQogICAgICAgICByZXR1cm4gZGV2cG9sbF9lcnJfY2xvc2VkKCk7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJwb2xsIiwgMCwgMSwgJnRvdXQpKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8Tzpwb2xsIiwgJnRpbWVvdXRfb2JqKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICAvKiBDaGVjayB2YWx1ZXMgZm9yIHRpbWVvdXQgKi8KLSAgICBpZiAodG91dCA9PSBOVUxMIHx8IHRvdXQgPT0gUHlfTm9uZSkKKyAgICBpZiAodGltZW91dF9vYmogPT0gTlVMTCB8fCB0aW1lb3V0X29iaiA9PSBQeV9Ob25lKSB7CiAgICAgICAgIHRpbWVvdXQgPSAtMTsKLSAgICBlbHNlIGlmICghUHlOdW1iZXJfQ2hlY2sodG91dCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IG11c3QgYmUgYW4gaW50ZWdlciBvciBOb25lIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBtcyA9IC0xOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdG91dCA9IFB5TnVtYmVyX0xvbmcodG91dCk7Ci0gICAgICAgIGlmICghdG91dCkKKyAgICAgICAgaWYgKF9QeVRpbWVfRnJvbU1pbGxpc2Vjb25kc09iamVjdCgmdGltZW91dCwgdGltZW91dF9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIGFuIGludGVnZXIgb3IgTm9uZSIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHRpbWVvdXQgPSBQeUxvbmdfQXNMb25nKHRvdXQpOwotICAgICAgICBQeV9ERUNSRUYodG91dCk7Ci0gICAgICAgIGlmICh0aW1lb3V0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgICAgIH0KIAotICAgIGlmICgodGltZW91dCA8IC0xKSB8fCAodGltZW91dCA+IElOVF9NQVgpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgaXMgb3V0IG9mIHJhbmdlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBtcyA9IF9QeVRpbWVfQXNNaWxsaXNlY29uZHModGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKKyAgICAgICAgaWYgKG1zIDwgLTEgfHwgbXMgPiBJTlRfTUFYKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInRpbWVvdXQgaXMgdG9vIGxhcmdlIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChkZXZwb2xsX2ZsdXNoKHNlbGYpKQpAQCAtODg0LDEyICs5MTUsMzYgQEAKIAogICAgIGR2cC5kcF9mZHMgPSBzZWxmLT5mZHM7CiAgICAgZHZwLmRwX25mZHMgPSBzZWxmLT5tYXhfbl9mZHM7Ci0gICAgZHZwLmRwX3RpbWVvdXQgPSB0aW1lb3V0OworICAgIGR2cC5kcF90aW1lb3V0ID0gKGludCltczsKIAotICAgIC8qIGNhbGwgZGV2cG9sbCgpICovCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHBvbGxfcmVzdWx0ID0gaW9jdGwoc2VsZi0+ZmRfZGV2cG9sbCwgRFBfUE9MTCwgJmR2cCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAodGltZW91dCA+PSAwKQorICAgICAgICBkZWFkbGluZSA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKSArIHRpbWVvdXQ7CisKKyAgICBkbyB7CisgICAgICAgIC8qIGNhbGwgZGV2cG9sbCgpICovCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZXJybm8gPSAwOworICAgICAgICBwb2xsX3Jlc3VsdCA9IGlvY3RsKHNlbGYtPmZkX2RldnBvbGwsIERQX1BPTEwsICZkdnApOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIGRldnBvbGwoKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKi8KKyAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgaWYgKHRpbWVvdXQgPj0gMCkgeworICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworICAgICAgICAgICAgaWYgKHRpbWVvdXQgPCAwKSB7CisgICAgICAgICAgICAgICAgcG9sbF9yZXN1bHQgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbXMgPSBfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKHRpbWVvdXQsIF9QeVRpbWVfUk9VTkRfQ0VJTElORyk7CisgICAgICAgICAgICBkdnAuZHBfdGltZW91dCA9IChpbnQpbXM7CisgICAgICAgICAgICAvKiByZXRyeSBkZXZwb2xsKCkgd2l0aCB0aGUgcmVjb21wdXRlZCB0aW1lb3V0ICovCisgICAgICAgIH0KKyAgICB9IHdoaWxlICgxKTsKIAogICAgIGlmIChwb2xsX3Jlc3VsdCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwpAQCAtODk3LDI4ICs5NTIsMjYgQEAKICAgICB9CiAKICAgICAvKiBidWlsZCB0aGUgcmVzdWx0IGxpc3QgKi8KLQogICAgIHJlc3VsdF9saXN0ID0gUHlMaXN0X05ldyhwb2xsX3Jlc3VsdCk7CiAgICAgaWYgKCFyZXN1bHRfbGlzdCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBwb2xsX3Jlc3VsdDsgaSsrKSB7Ci0gICAgICAgICAgICBudW0xID0gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmZkc1tpXS5mZCk7Ci0gICAgICAgICAgICBudW0yID0gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmZkc1tpXS5yZXZlbnRzKTsKLSAgICAgICAgICAgIGlmICgobnVtMSA9PSBOVUxMKSB8fCAobnVtMiA9PSBOVUxMKSkgewotICAgICAgICAgICAgICAgIFB5X1hERUNSRUYobnVtMSk7Ci0gICAgICAgICAgICAgICAgUHlfWERFQ1JFRihudW0yKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFsdWUgPSBQeVR1cGxlX1BhY2soMiwgbnVtMSwgbnVtMik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobnVtMSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobnVtMik7Ci0gICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgaWYgKChQeUxpc3RfU2V0SXRlbShyZXN1bHRfbGlzdCwgaSwgdmFsdWUpKSA9PSAtMSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBwb2xsX3Jlc3VsdDsgaSsrKSB7CisgICAgICAgIG51bTEgPSBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+ZmRzW2ldLmZkKTsKKyAgICAgICAgbnVtMiA9IFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5mZHNbaV0ucmV2ZW50cyk7CisgICAgICAgIGlmICgobnVtMSA9PSBOVUxMKSB8fCAobnVtMiA9PSBOVUxMKSkgeworICAgICAgICAgICAgUHlfWERFQ1JFRihudW0xKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYobnVtMik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIHZhbHVlID0gUHlUdXBsZV9QYWNrKDIsIG51bTEsIG51bTIpOworICAgICAgICBQeV9ERUNSRUYobnVtMSk7CisgICAgICAgIFB5X0RFQ1JFRihudW0yKTsKKyAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoKFB5TGlzdF9TZXRJdGVtKHJlc3VsdF9saXN0LCBpLCB2YWx1ZSkpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTAxMyw3ICsxMDY2LDYgQEAKICAgICBzdHJ1Y3QgcG9sbGZkICpmZHM7CiAgICAgc3RydWN0IHJsaW1pdCBsaW1pdDsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAvKgogICAgICoqIElmIHdlIHRyeSB0byBwcm9jZXNzIG1vcmUgdGhhdCBnZXRybGltaXQoKQogICAgICoqIGZkcywgdGhlIGtlcm5lbCB3aWxsIGdpdmUgYW4gZXJyb3IsIHNvCkBAIC0xMDIxLDE4ICsxMDczLDE0IEBACiAgICAgKiogdmFsdWUsIGJlY2F1c2Ugd2UgY2FuIGNoYW5nZSBybGltaXQoKSBhbnl0aW1lLgogICAgICovCiAgICAgbGltaXRfcmVzdWx0ID0gZ2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZsaW1pdCk7Ci0gICAgaWYgKGxpbWl0X3Jlc3VsdCAhPSAtMSkKLSAgICAgICAgZmRfZGV2cG9sbCA9IF9QeV9vcGVuKCIvZGV2L3BvbGwiLCBPX1JEV1IpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KICAgICBpZiAobGltaXRfcmVzdWx0ID09IC0xKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChmZF9kZXZwb2xsID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZShQeUV4Y19JT0Vycm9yLCAiL2Rldi9wb2xsIik7CisKKyAgICBmZF9kZXZwb2xsID0gX1B5X29wZW4oIi9kZXYvcG9sbCIsIE9fUkRXUik7CisgICAgaWYgKGZkX2RldnBvbGwgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIGZkcyA9IFB5TWVtX05FVyhzdHJ1Y3QgcG9sbGZkLCBsaW1pdC5ybGltX2N1cik7CiAgICAgaWYgKGZkcyA9PSBOVUxMKSB7CkBAIC0xNDM3LDM0ICsxNDg1LDQ2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcHllcG9sbF9wb2xsKHB5RXBvbGxfT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgZG91YmxlIGR0aW1lb3V0ID0gLTEuOwotICAgIGludCB0aW1lb3V0OworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsidGltZW91dCIsICJtYXhldmVudHMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqdGltZW91dF9vYmogPSBOVUxMOwogICAgIGludCBtYXhldmVudHMgPSAtMTsKICAgICBpbnQgbmZkcywgaTsKICAgICBQeU9iamVjdCAqZWxpc3QgPSBOVUxMLCAqZXR1cGxlID0gTlVMTDsKICAgICBzdHJ1Y3QgZXBvbGxfZXZlbnQgKmV2cyA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJ0aW1lb3V0IiwgIm1heGV2ZW50cyIsIE5VTEx9OworICAgIF9QeVRpbWVfdCB0aW1lb3V0LCBtcywgZGVhZGxpbmU7CiAKICAgICBpZiAoc2VsZi0+ZXBmZCA8IDApCiAgICAgICAgIHJldHVybiBweWVwb2xsX2Vycl9jbG9zZWQoKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8ZGk6cG9sbCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZHRpbWVvdXQsICZtYXhldmVudHMpKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPaTpwb2xsIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aW1lb3V0X29iaiwgJm1heGV2ZW50cykpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGR0aW1lb3V0IDwgMCkgeworICAgIGlmICh0aW1lb3V0X29iaiA9PSBOVUxMIHx8IHRpbWVvdXRfb2JqID09IFB5X05vbmUpIHsKICAgICAgICAgdGltZW91dCA9IC0xOwotICAgIH0KLSAgICBlbHNlIGlmIChkdGltZW91dCAqIDEwMDAuMCA+IElOVF9NQVgpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBpcyB0b28gbGFyZ2UiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIG1zID0gLTE7CisgICAgICAgIGRlYWRsaW5lID0gMDsgICAvKiBpbml0aWFsaXplIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIC8qIGVwb2xsX3dhaXQoKSBoYXMgYSByZXNvbHV0aW9uIG9mIDEgbWlsbGlzZWNvbmQsIHJvdW5kIGF3YXkgZnJvbSB6ZXJvCi0gICAgICAgICAgIHRvIHdhaXQgKmF0IGxlYXN0KiBkdGltZW91dCBzZWNvbmRzLiAqLwotICAgICAgICB0aW1lb3V0ID0gKGludCljZWlsKGR0aW1lb3V0ICogMTAwMC4wKTsKKyAgICAgICAgLyogZXBvbGxfd2FpdCgpIGhhcyBhIHJlc29sdXRpb24gb2YgMSBtaWxsaXNlY29uZCwgcm91bmQgdG93YXJkcworICAgICAgICAgICBpbmZpbml0eSB0byB3YWl0IGF0IGxlYXN0IHRpbWVvdXQgc2Vjb25kcy4gKi8KKyAgICAgICAgaWYgKF9QeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoJnRpbWVvdXQsIHRpbWVvdXRfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIDwgMCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IG11c3QgYmUgYW4gaW50ZWdlciBvciBOb25lIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIG1zID0gX1B5VGltZV9Bc01pbGxpc2Vjb25kcyh0aW1lb3V0LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworICAgICAgICBpZiAobXMgPCBJTlRfTUlOIHx8IG1zID4gSU5UX01BWCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJ0aW1lb3V0IGlzIHRvbyBsYXJnZSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBkZWFkbGluZSA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKSArIHRpbWVvdXQ7CiAgICAgfQogCiAgICAgaWYgKG1heGV2ZW50cyA9PSAtMSkgewpAQCAtMTQ4Myw5ICsxNTQzLDMwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBuZmRzID0gZXBvbGxfd2FpdChzZWxmLT5lcGZkLCBldnMsIG1heGV2ZW50cywgdGltZW91dCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZXJybm8gPSAwOworICAgICAgICBuZmRzID0gZXBvbGxfd2FpdChzZWxmLT5lcGZkLCBldnMsIG1heGV2ZW50cywgKGludCltcyk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyogcG9sbCgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAqLworICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmICh0aW1lb3V0ID49IDApIHsKKyAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKyAgICAgICAgICAgIGlmICh0aW1lb3V0IDwgMCkgeworICAgICAgICAgICAgICAgIG5mZHMgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbXMgPSBfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKHRpbWVvdXQsIF9QeVRpbWVfUk9VTkRfQ0VJTElORyk7CisgICAgICAgICAgICAvKiByZXRyeSBlcG9sbF93YWl0KCkgd2l0aCB0aGUgcmVjb21wdXRlZCB0aW1lb3V0ICovCisgICAgICAgIH0KKyAgICB9IHdoaWxlKDEpOworCiAgICAgaWYgKG5mZHMgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTIwMjIsOCArMjEwMyw5IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgc3RydWN0IGtldmVudCAqZXZsID0gTlVMTDsKICAgICBzdHJ1Y3Qga2V2ZW50ICpjaGwgPSBOVUxMOwotICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lb3V0OworICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lb3V0c3BlYzsKICAgICBzdHJ1Y3QgdGltZXNwZWMgKnB0aW1lb3V0c3BlYzsKKyAgICBfUHlUaW1lX3QgdGltZW91dCwgZGVhZGxpbmUgPSAwOwogCiAgICAgaWYgKHNlbGYtPmtxZmQgPCAwKQogICAgICAgICByZXR1cm4ga3F1ZXVlX3F1ZXVlX2Vycl9jbG9zZWQoKTsKQEAgLTIwNDEsMjQgKzIxMjMsMjUgQEAKICAgICBpZiAob3RpbWVvdXQgPT0gUHlfTm9uZSB8fCBvdGltZW91dCA9PSBOVUxMKSB7CiAgICAgICAgIHB0aW1lb3V0c3BlYyA9IE5VTEw7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5TnVtYmVyX0NoZWNrKG90aW1lb3V0KSkgewotICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKG90aW1lb3V0LCAmdGltZW91dC50dl9zZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRpbWVvdXQudHZfbnNlYywgX1B5VGltZV9ST1VORF9VUCkgPT0gLTEpCisgICAgZWxzZSB7CisgICAgICAgIGlmIChfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KCZ0aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgInRpbWVvdXQgYXJndW1lbnQgbXVzdCBiZSBhbiBudW1iZXIgIgorICAgICAgICAgICAgICAgICJvciBOb25lLCBnb3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICBQeV9UWVBFKG90aW1lb3V0KS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChfUHlUaW1lX0FzVGltZXNwZWModGltZW91dCwgJnRpbWVvdXRzcGVjKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgICAgIGlmICh0aW1lb3V0LnR2X3NlYyA8IDApIHsKKyAgICAgICAgaWYgKHRpbWVvdXRzcGVjLnR2X3NlYyA8IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IG11c3QgYmUgcG9zaXRpdmUgb3IgTm9uZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcHRpbWVvdXRzcGVjID0gJnRpbWVvdXQ7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgInRpbWVvdXQgYXJndW1lbnQgbXVzdCBiZSBhbiBudW1iZXIgIgotICAgICAgICAgICAgIm9yIE5vbmUsIGdvdCAlLjIwMHMiLAotICAgICAgICAgICAgUHlfVFlQRShvdGltZW91dCktPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcHRpbWVvdXRzcGVjID0gJnRpbWVvdXRzcGVjOwogICAgIH0KIAogICAgIGlmIChjaCAhPSBOVUxMICYmIGNoICE9IFB5X05vbmUpIHsKQEAgLTIxMDMsMTAgKzIxODYsMzQgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBnb3RldmVudHMgPSBrZXZlbnQoc2VsZi0+a3FmZCwgY2hsLCBuY2hhbmdlcywKLSAgICAgICAgICAgICAgICAgICAgICAgZXZsLCBuZXZlbnRzLCBwdGltZW91dHNwZWMpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHB0aW1lb3V0c3BlYykKKyAgICAgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyB0aW1lb3V0OworCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgZ290ZXZlbnRzID0ga2V2ZW50KHNlbGYtPmtxZmQsIGNobCwgbmNoYW5nZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBldmwsIG5ldmVudHMsIHB0aW1lb3V0c3BlYyk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoga2V2ZW50KCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsICovCisgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgaWYgKHB0aW1lb3V0c3BlYykgeworICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworICAgICAgICAgICAgaWYgKHRpbWVvdXQgPCAwKSB7CisgICAgICAgICAgICAgICAgZ290ZXZlbnRzID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChfUHlUaW1lX0FzVGltZXNwZWModGltZW91dCwgJnRpbWVvdXRzcGVjKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgLyogcmV0cnkga2V2ZW50KCkgd2l0aCB0aGUgcmVjb21wdXRlZCB0aW1lb3V0ICovCisgICAgICAgIH0KKyAgICB9IHdoaWxlICgxKTsKIAogICAgIGlmIChnb3RldmVudHMgPT0gLTEpIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaGExbW9kdWxlLmMgYi9Nb2R1bGVzL3NoYTFtb2R1bGUuYwppbmRleCBiNDRmZTE4Li43NGI5NGJhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NoYTFtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NoYTFtb2R1bGUuYwpAQCAtMTgsNyArMTgsMTMgQEAKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgImhhc2hsaWIuaCIKKyNpbmNsdWRlICJweXN0cmhleC5oIgogCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX3NoYTEKK2NsYXNzIFNIQTFUeXBlICJTSEExb2JqZWN0ICoiICImUHlUeXBlX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0zZGM5YTIwZDFiZWNiNzU5XSovCiAKIC8qIFNvbWUgdXNlZnVsIHR5cGVzICovCiAKQEAgLTQ4LDYgKzU0LDcgQEAKICAgICBzdHJ1Y3Qgc2hhMV9zdGF0ZSBoYXNoX3N0YXRlOwogfSBTSEExb2JqZWN0OwogCisjaW5jbHVkZSAiY2xpbmljL3NoYTFtb2R1bGUuYy5oIgogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCkBAIC0zMDksMTAgKzMxNiwxNSBAQAogCiAvKiBFeHRlcm5hbCBtZXRob2RzIGZvciBhIGhhc2ggb2JqZWN0ICovCiAKLVB5RG9jX1NUUlZBUihTSEExX2NvcHlfX2RvY19fLCAiUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuIik7CisvKltjbGluaWMgaW5wdXRdCitTSEExVHlwZS5jb3B5CisKK1JldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMV9jb3B5KFNIQTFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitTSEExVHlwZV9jb3B5X2ltcGwoU0hBMW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNGUwMDEyNjQ2MjBmMDJhIGlucHV0PWI3ZWFlMTBkZjZmODliMzZdKi8KIHsKICAgICBTSEExb2JqZWN0ICpuZXdvYmo7CiAKQEAgLTMyMywxMSArMzM1LDE1IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld29iajsKIH0KIAotUHlEb2NfU1RSVkFSKFNIQTFfZGlnZXN0X19kb2NfXywKLSJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK1NIQTFUeXBlLmRpZ2VzdAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVNIQTFfZGlnZXN0KFNIQTFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitTSEExVHlwZV9kaWdlc3RfaW1wbChTSEExb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJmMDUzMDJhN2FhMmI1Y2IgaW5wdXQ9MjA1ZDQ3ZTE5MjdmZDAwOV0qLwogewogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQTFfRElHRVNUU0laRV07CiAgICAgc3RydWN0IHNoYTFfc3RhdGUgdGVtcDsKQEAgLTMzNyw1NCArMzUzLDQxIEBACiAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilkaWdlc3QsIFNIQTFfRElHRVNUU0laRSk7CiB9CiAKLVB5RG9jX1NUUlZBUihTSEExX2hleGRpZ2VzdF9fZG9jX18sCi0iUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworLypbY2xpbmljIGlucHV0XQorU0hBMVR5cGUuaGV4ZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVNIQTFfaGV4ZGlnZXN0KFNIQTFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitTSEExVHlwZV9oZXhkaWdlc3RfaW1wbChTSEExb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQxNjFmZDcxZTY4YzY2NTkgaW5wdXQ9OTc2OTEwNTVjMGM3NGFiMF0qLwogewogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQTFfRElHRVNUU0laRV07CiAgICAgc3RydWN0IHNoYTFfc3RhdGUgdGVtcDsKLSAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIFB5X1VDUzEgKmhleF9kaWdlc3Q7Ci0gICAgaW50IGksIGo7CiAKICAgICAvKiBHZXQgdGhlIHJhdyAoYmluYXJ5KSBkaWdlc3QgdmFsdWUgKi8KICAgICB0ZW1wID0gc2VsZi0+aGFzaF9zdGF0ZTsKICAgICBzaGExX2RvbmUoJnRlbXAsIGRpZ2VzdCk7CiAKLSAgICAvKiBDcmVhdGUgYSBuZXcgc3RyaW5nICovCi0gICAgcmV0dmFsID0gUHlVbmljb2RlX05ldyhTSEExX0RJR0VTVFNJWkUgKiAyLCAxMjcpOwotICAgIGlmICghcmV0dmFsKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJldHZhbCk7Ci0KLSAgICAvKiBNYWtlIGhleCB2ZXJzaW9uIG9mIHRoZSBkaWdlc3QgKi8KLSAgICBmb3IoaT1qPTA7IGk8U0hBMV9ESUdFU1RTSVpFOyBpKyspIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjOwotICAgICAgICBjID0gKGRpZ2VzdFtpXSA+PiA0KSAmIDB4ZjsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwotICAgICAgICBjID0gKGRpZ2VzdFtpXSAmIDB4Zik7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKLSAgICB9Ci0jaWZkZWYgUHlfREVCVUcKLSAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJldHZhbCwgMSkpOwotI2VuZGlmCi0gICAgcmV0dXJuIHJldHZhbDsKKyAgICByZXR1cm4gX1B5X3N0cmhleCgoY29uc3QgY2hhciAqKWRpZ2VzdCwgU0hBMV9ESUdFU1RTSVpFKTsKIH0KIAotUHlEb2NfU1RSVkFSKFNIQTFfdXBkYXRlX19kb2NfXywKLSJVcGRhdGUgdGhpcyBoYXNoIG9iamVjdCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK1NIQTFUeXBlLnVwZGF0ZQorCisgICAgb2JqOiBvYmplY3QKKyAgICAvCisKK1VwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMV91cGRhdGUoU0hBMW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitTSEExVHlwZV91cGRhdGUoU0hBMW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kOTkwMmYwZTUwMTVlOWFlIGlucHV0PWFhZDhlMDc4MTJlZGJiYTNdKi8KIHsKLSAgICBQeU9iamVjdCAqb2JqOwogICAgIFB5X2J1ZmZlciBidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86dXBkYXRlIiwgJm9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChvYmosICZidWYpOwogCiAgICAgc2hhMV9wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKQEAgLTM5NSwxMCArMzk4LDEwIEBACiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBTSEExX21ldGhvZHNbXSA9IHsKLSAgICB7ImNvcHkiLCAgICAgIChQeUNGdW5jdGlvbilTSEExX2NvcHksICAgICAgTUVUSF9OT0FSR1MsICBTSEExX2NvcHlfX2RvY19ffSwKLSAgICB7ImRpZ2VzdCIsICAgIChQeUNGdW5jdGlvbilTSEExX2RpZ2VzdCwgICAgTUVUSF9OT0FSR1MsICBTSEExX2RpZ2VzdF9fZG9jX199LAotICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKVNIQTFfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgIFNIQTFfaGV4ZGlnZXN0X19kb2NfX30sCi0gICAgeyJ1cGRhdGUiLCAgICAoUHlDRnVuY3Rpb24pU0hBMV91cGRhdGUsICAgIE1FVEhfVkFSQVJHUywgU0hBMV91cGRhdGVfX2RvY19ffSwKKyAgICBTSEExVFlQRV9DT1BZX01FVEhPRERFRgorICAgIFNIQTFUWVBFX0RJR0VTVF9NRVRIT0RERUYKKyAgICBTSEExVFlQRV9IRVhESUdFU1RfTUVUSE9EREVGCisgICAgU0hBMVRZUEVfVVBEQVRFX01FVEhPRERFRgogICAgIHtOVUxMLCAgICAgICAgTlVMTH0gICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtNDc0LDI3ICs0NzcsMjYgQEAKIAogLyogVGhlIHNpbmdsZSBtb2R1bGUtbGV2ZWwgZnVuY3Rpb246IG5ldygpICovCiAKLVB5RG9jX1NUUlZBUihTSEExX25ld19fZG9jX18sCi0iUmV0dXJuIGEgbmV3IFNIQTEgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGExLnNoYTEKKworICAgIHN0cmluZzogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gYicnCisKK1JldHVybiBhIG5ldyBTSEExIGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEExX25ldyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RpY3QpCitfc2hhMV9zaGExX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zZTRlODQxMzg2YjllOGRiIGlucHV0PTI3ZWE1NDI4MWQ5OTVlYzJdKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InN0cmluZyIsIE5VTEx9OwogICAgIFNIQTFvYmplY3QgKm5ldzsKLSAgICBQeU9iamVjdCAqZGF0YV9vYmogPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJ8TzpuZXciLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfb2JqKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YV9vYmopCi0gICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoZGF0YV9vYmosICZidWYpOworICAgIGlmIChzdHJpbmcpCisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoc3RyaW5nLCAmYnVmKTsKIAogICAgIGlmICgobmV3ID0gbmV3U0hBMW9iamVjdCgpKSA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChkYXRhX29iaikKKyAgICAgICAgaWYgKHN0cmluZykKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTUwMywxMSArNTA1LDExIEBACiAKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBQeV9ERUNSRUYobmV3KTsKLSAgICAgICAgaWYgKGRhdGFfb2JqKQorICAgICAgICBpZiAoc3RyaW5nKQogICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChkYXRhX29iaikgeworICAgIGlmIChzdHJpbmcpIHsKICAgICAgICAgc2hhMV9wcm9jZXNzKCZuZXctPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4pOwogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgIH0KQEAgLTUxOSw3ICs1MjEsNyBAQAogLyogTGlzdCBvZiBmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUgKi8KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBTSEExX2Z1bmN0aW9uc1tdID0gewotICAgIHsic2hhMSIsKFB5Q0Z1bmN0aW9uKVNIQTFfbmV3LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUyxTSEExX25ld19fZG9jX199LAorICAgIF9TSEExX1NIQTFfTUVUSE9EREVGCiAgICAge05VTEwsICAgICAgTlVMTH0gICAgICAgICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaGEyNTZtb2R1bGUuYyBiL01vZHVsZXMvc2hhMjU2bW9kdWxlLmMKaW5kZXggYjA1YmZjMS4uOGM0ZGVmMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaGEyNTZtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NoYTI1Nm1vZHVsZS5jCkBAIC0xOSw3ICsxOSwxMyBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgImhhc2hsaWIuaCIKKyNpbmNsdWRlICJweXN0cmhleC5oIgogCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX3NoYTI1NgorY2xhc3MgU0hBMjU2VHlwZSAiU0hBb2JqZWN0ICoiICImUHlUeXBlX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD03MWEzOTE3NGQ0ZjBhNzQ0XSovCiAKIC8qIFNvbWUgdXNlZnVsIHR5cGVzICovCiAKQEAgLTQ3LDYgKzUzLDggQEAKICAgICBpbnQgZGlnZXN0c2l6ZTsKIH0gU0hBb2JqZWN0OwogCisjaW5jbHVkZSAiY2xpbmljL3NoYTI1Nm1vZHVsZS5jLmgiCisKIC8qIFdoZW4gcnVuIG9uIGEgbGl0dGxlLWVuZGlhbiBDUFUgd2UgbmVlZCB0byBwZXJmb3JtIGJ5dGUgcmV2ZXJzYWwgb24gYW4KICAgIGFycmF5IG9mIGxvbmd3b3Jkcy4gKi8KIApAQCAtMzkzLDEwICs0MDEsMTUgQEAKIAogLyogRXh0ZXJuYWwgbWV0aG9kcyBmb3IgYSBoYXNoIG9iamVjdCAqLwogCi1QeURvY19TVFJWQVIoU0hBMjU2X2NvcHlfX2RvY19fLCAiUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuIik7CisvKltjbGluaWMgaW5wdXRdCitTSEEyNTZUeXBlLmNvcHkKKworUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEEyNTZfY29weShTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitTSEEyNTZUeXBlX2NvcHlfaW1wbChTSEFvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWE4YmJkNjZhMGM5YzE2OCBpbnB1dD1mNTg4NDBhNjE4ZDRmMmE3XSovCiB7CiAgICAgU0hBb2JqZWN0ICpuZXdvYmo7CiAKQEAgLTQxMiwxMSArNDI1LDE1IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld29iajsKIH0KIAotUHlEb2NfU1RSVkFSKFNIQTI1Nl9kaWdlc3RfX2RvY19fLAotIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLiIpOworLypbY2xpbmljIGlucHV0XQorU0hBMjU2VHlwZS5kaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEEyNTZfZGlnZXN0KFNIQW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK1NIQTI1NlR5cGVfZGlnZXN0X2ltcGwoU0hBb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ2NjE2YTVlOTA5ZmJjM2QgaW5wdXQ9MWZiNzUyZTU4OTU0MTU3ZF0qLwogewogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQV9ESUdFU1RTSVpFXTsKICAgICBTSEFvYmplY3QgdGVtcDsKQEAgLTQyNiw1NCArNDQzLDQxIEBACiAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilkaWdlc3QsIHNlbGYtPmRpZ2VzdHNpemUpOwogfQogCi1QeURvY19TVFJWQVIoU0hBMjU2X2hleGRpZ2VzdF9fZG9jX18sCi0iUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworLypbY2xpbmljIGlucHV0XQorU0hBMjU2VHlwZS5oZXhkaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMjU2X2hleGRpZ2VzdChTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitTSEEyNTZUeXBlX2hleGRpZ2VzdF9pbXBsKFNIQW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MjVmOGE3MDQxYWU5N2YzIGlucHV0PTBjYzRjNzE0NjkzMDEwZDFdKi8KIHsKICAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEFfRElHRVNUU0laRV07CiAgICAgU0hBb2JqZWN0IHRlbXA7Ci0gICAgUHlPYmplY3QgKnJldHZhbDsKLSAgICBQeV9VQ1MxICpoZXhfZGlnZXN0OwotICAgIGludCBpLCBqOwogCiAgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCiAgICAgU0hBY29weShzZWxmLCAmdGVtcCk7CiAgICAgc2hhX2ZpbmFsKGRpZ2VzdCwgJnRlbXApOwogCi0gICAgLyogQ3JlYXRlIGEgbmV3IHN0cmluZyAqLwotICAgIHJldHZhbCA9IFB5VW5pY29kZV9OZXcoc2VsZi0+ZGlnZXN0c2l6ZSAqIDIsIDEyNyk7Ci0gICAgaWYgKCFyZXR2YWwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmV0dmFsKTsKLQotICAgIC8qIE1ha2UgaGV4IHZlcnNpb24gb2YgdGhlIGRpZ2VzdCAqLwotICAgIGZvcihpPWo9MDsgaTxzZWxmLT5kaWdlc3RzaXplOyBpKyspIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjOwotICAgICAgICBjID0gKGRpZ2VzdFtpXSA+PiA0KSAmIDB4ZjsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwotICAgICAgICBjID0gKGRpZ2VzdFtpXSAmIDB4Zik7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKLSAgICB9Ci0jaWZkZWYgUHlfREVCVUcKLSAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJldHZhbCwgMSkpOwotI2VuZGlmCi0gICAgcmV0dXJuIHJldHZhbDsKKyAgICByZXR1cm4gX1B5X3N0cmhleCgoY29uc3QgY2hhciAqKWRpZ2VzdCwgc2VsZi0+ZGlnZXN0c2l6ZSk7CiB9CiAKLVB5RG9jX1NUUlZBUihTSEEyNTZfdXBkYXRlX19kb2NfXywKLSJVcGRhdGUgdGhpcyBoYXNoIG9iamVjdCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK1NIQTI1NlR5cGUudXBkYXRlCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEEyNTZfdXBkYXRlKFNIQW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitTSEEyNTZUeXBlX3VwZGF0ZShTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDk2N2ZiMjg2MGM2NmFmNyBpbnB1dD1iMmQ0NDlkNWIzMGYwZjVhXSovCiB7Ci0gICAgUHlPYmplY3QgKm9iajsKICAgICBQeV9idWZmZXIgYnVmOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnVwZGF0ZSIsICZvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQob2JqLCAmYnVmKTsKIAogICAgIHNoYV91cGRhdGUoc2VsZiwgYnVmLmJ1ZiwgYnVmLmxlbik7CkBAIC00ODQsMTAgKzQ4OCwxMCBAQAogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgU0hBX21ldGhvZHNbXSA9IHsKLSAgICB7ImNvcHkiLCAgICAgIChQeUNGdW5jdGlvbilTSEEyNTZfY29weSwgICAgICBNRVRIX05PQVJHUywgIFNIQTI1Nl9jb3B5X19kb2NfX30sCi0gICAgeyJkaWdlc3QiLCAgICAoUHlDRnVuY3Rpb24pU0hBMjU2X2RpZ2VzdCwgICAgTUVUSF9OT0FSR1MsICBTSEEyNTZfZGlnZXN0X19kb2NfX30sCi0gICAgeyJoZXhkaWdlc3QiLCAoUHlDRnVuY3Rpb24pU0hBMjU2X2hleGRpZ2VzdCwgTUVUSF9OT0FSR1MsICBTSEEyNTZfaGV4ZGlnZXN0X19kb2NfX30sCi0gICAgeyJ1cGRhdGUiLCAgICAoUHlDRnVuY3Rpb24pU0hBMjU2X3VwZGF0ZSwgICAgTUVUSF9WQVJBUkdTLCBTSEEyNTZfdXBkYXRlX19kb2NfX30sCisgICAgU0hBMjU2VFlQRV9DT1BZX01FVEhPRERFRgorICAgIFNIQTI1NlRZUEVfRElHRVNUX01FVEhPRERFRgorICAgIFNIQTI1NlRZUEVfSEVYRElHRVNUX01FVEhPRERFRgorICAgIFNIQTI1NlRZUEVfVVBEQVRFX01FVEhPRERFRgogICAgIHtOVUxMLCAgICAgICAgTlVMTH0gICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtNTk0LDI3ICs1OTgsMjYgQEAKIAogLyogVGhlIHNpbmdsZSBtb2R1bGUtbGV2ZWwgZnVuY3Rpb246IG5ldygpICovCiAKLVB5RG9jX1NUUlZBUihTSEEyNTZfbmV3X19kb2NfXywKLSJSZXR1cm4gYSBuZXcgU0hBLTI1NiBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOworLypbY2xpbmljIGlucHV0XQorX3NoYTI1Ni5zaGEyNTYKKworICAgIHN0cmluZzogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gYicnCisKK1JldHVybiBhIG5ldyBTSEEtMjU2IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEEyNTZfbmV3KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZGljdCkKK19zaGEyNTZfc2hhMjU2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNzBlNmUyZDk3MTEyODQ0IGlucHV0PTA5Y2NlM2ZiODU1MDU2YjJdKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InN0cmluZyIsIE5VTEx9OwogICAgIFNIQW9iamVjdCAqbmV3OwotICAgIFB5T2JqZWN0ICpkYXRhX29iaiA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgInxPOm5ldyIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9vYmopKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChkYXRhX29iaikKLSAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChkYXRhX29iaiwgJmJ1Zik7CisgICAgaWYgKHN0cmluZykKKyAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChzdHJpbmcsICZidWYpOwogCiAgICAgaWYgKChuZXcgPSBuZXdTSEEyNTZvYmplY3QoKSkgPT0gTlVMTCkgewotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC02MjMsMTEgKzYyNiwxMSBAQAogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgIGlmIChkYXRhX29iaikKKyAgICAgICAgaWYgKHN0cmluZykKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZGF0YV9vYmopIHsKKyAgICBpZiAoc3RyaW5nKSB7CiAgICAgICAgIHNoYV91cGRhdGUobmV3LCBidWYuYnVmLCBidWYubGVuKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICB9CkBAIC02MzUsMjcgKzYzOCwyNiBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKiluZXc7CiB9CiAKLVB5RG9jX1NUUlZBUihTSEEyMjRfbmV3X19kb2NfXywKLSJSZXR1cm4gYSBuZXcgU0hBLTIyNCBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOworLypbY2xpbmljIGlucHV0XQorX3NoYTI1Ni5zaGEyMjQKKworICAgIHN0cmluZzogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gYicnCisKK1JldHVybiBhIG5ldyBTSEEtMjI0IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEEyMjRfbmV3KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZGljdCkKK19zaGEyNTZfc2hhMjI0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMjgyMmJmMjg0MTZiNDJhIGlucHV0PTI3YTA0YmEyNGMzNTNhNzNdKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InN0cmluZyIsIE5VTEx9OwogICAgIFNIQW9iamVjdCAqbmV3OwotICAgIFB5T2JqZWN0ICpkYXRhX29iaiA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgInxPOm5ldyIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9vYmopKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChkYXRhX29iaikKLSAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChkYXRhX29iaiwgJmJ1Zik7CisgICAgaWYgKHN0cmluZykKKyAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChzdHJpbmcsICZidWYpOwogCiAgICAgaWYgKChuZXcgPSBuZXdTSEEyMjRvYmplY3QoKSkgPT0gTlVMTCkgewotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC02NjQsMTEgKzY2NiwxMSBAQAogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgIGlmIChkYXRhX29iaikKKyAgICAgICAgaWYgKHN0cmluZykKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZGF0YV9vYmopIHsKKyAgICBpZiAoc3RyaW5nKSB7CiAgICAgICAgIHNoYV91cGRhdGUobmV3LCBidWYuYnVmLCBidWYubGVuKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICB9CkBAIC02ODAsOCArNjgyLDggQEAKIC8qIExpc3Qgb2YgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlICovCiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgU0hBX2Z1bmN0aW9uc1tdID0gewotICAgIHsic2hhMjU2IiwgKFB5Q0Z1bmN0aW9uKVNIQTI1Nl9uZXcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBTSEEyNTZfbmV3X19kb2NfX30sCi0gICAgeyJzaGEyMjQiLCAoUHlDRnVuY3Rpb24pU0hBMjI0X25ldywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIFNIQTIyNF9uZXdfX2RvY19ffSwKKyAgICBfU0hBMjU2X1NIQTI1Nl9NRVRIT0RERUYKKyAgICBfU0hBMjU2X1NIQTIyNF9NRVRIT0RERUYKICAgICB7TlVMTCwgICAgICBOVUxMfSAgICAgICAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jIGIvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYwppbmRleCA0N2M1N2U1Li44MjM3ZDg2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKQEAgLTE5LDYgKzE5LDEzIEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAjaW5jbHVkZSAiaGFzaGxpYi5oIgorI2luY2x1ZGUgInB5c3RyaGV4LmgiCisKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfc2hhNTEyCitjbGFzcyBTSEE1MTJUeXBlICJTSEFvYmplY3QgKiIgIiZQeVR5cGVfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTgxYTNjY2RlOTJiY2ZlOGRdKi8KIAogI2lmZGVmIFBZX0xPTkdfTE9ORyAvKiBJZiBubyBQWV9MT05HX0xPTkcsIGRvbid0IGNvbXBpbGUgYW55dGhpbmchICovCiAKQEAgLTQ5LDYgKzU2LDggQEAKICAgICBpbnQgZGlnZXN0c2l6ZTsKIH0gU0hBb2JqZWN0OwogCisjaW5jbHVkZSAiY2xpbmljL3NoYTUxMm1vZHVsZS5jLmgiCisKIC8qIFdoZW4gcnVuIG9uIGEgbGl0dGxlLWVuZGlhbiBDUFUgd2UgbmVlZCB0byBwZXJmb3JtIGJ5dGUgcmV2ZXJzYWwgb24gYW4KICAgIGFycmF5IG9mIGxvbmd3b3Jkcy4gKi8KIApAQCAtNDU5LDEwICs0NjgsMTUgQEAKIAogLyogRXh0ZXJuYWwgbWV0aG9kcyBmb3IgYSBoYXNoIG9iamVjdCAqLwogCi1QeURvY19TVFJWQVIoU0hBNTEyX2NvcHlfX2RvY19fLCAiUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuIik7CisvKltjbGluaWMgaW5wdXRdCitTSEE1MTJUeXBlLmNvcHkKKworUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEE1MTJfY29weShTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitTSEE1MTJUeXBlX2NvcHlfaW1wbChTSEFvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWRlYTg5NmVkMzE2NDgyMSBpbnB1dD05ZjVmMzFlNmM0NTc3NzZhXSovCiB7CiAgICAgU0hBb2JqZWN0ICpuZXdvYmo7CiAKQEAgLTQ3OCwxMSArNDkyLDE1IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld29iajsKIH0KIAotUHlEb2NfU1RSVkFSKFNIQTUxMl9kaWdlc3RfX2RvY19fLAotIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLiIpOworLypbY2xpbmljIGlucHV0XQorU0hBNTEyVHlwZS5kaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEE1MTJfZGlnZXN0KFNIQW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK1NIQTUxMlR5cGVfZGlnZXN0X2ltcGwoU0hBb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEwODBiYmVlZWY3ZGRlMWIgaW5wdXQ9NjBjMmNlZGU5ZTAyMzAxOF0qLwogewogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQV9ESUdFU1RTSVpFXTsKICAgICBTSEFvYmplY3QgdGVtcDsKQEAgLTQ5Miw1NCArNTEwLDQxIEBACiAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilkaWdlc3QsIHNlbGYtPmRpZ2VzdHNpemUpOwogfQogCi1QeURvY19TVFJWQVIoU0hBNTEyX2hleGRpZ2VzdF9fZG9jX18sCi0iUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworLypbY2xpbmljIGlucHV0XQorU0hBNTEyVHlwZS5oZXhkaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBNTEyX2hleGRpZ2VzdChTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitTSEE1MTJUeXBlX2hleGRpZ2VzdF9pbXBsKFNIQW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MzczMzA1Yjg2MDFlMThiIGlucHV0PTQ5OGI4NzdiMjVjYmUwYTJdKi8KIHsKICAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEFfRElHRVNUU0laRV07CiAgICAgU0hBb2JqZWN0IHRlbXA7Ci0gICAgUHlPYmplY3QgKnJldHZhbDsKLSAgICBQeV9VQ1MxICpoZXhfZGlnZXN0OwotICAgIGludCBpLCBqOwogCiAgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCiAgICAgU0hBY29weShzZWxmLCAmdGVtcCk7CiAgICAgc2hhNTEyX2ZpbmFsKGRpZ2VzdCwgJnRlbXApOwogCi0gICAgLyogQ3JlYXRlIGEgbmV3IHN0cmluZyAqLwotICAgIHJldHZhbCA9IFB5VW5pY29kZV9OZXcoc2VsZi0+ZGlnZXN0c2l6ZSAqIDIsIDEyNyk7Ci0gICAgaWYgKCFyZXR2YWwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmV0dmFsKTsKLQotICAgIC8qIE1ha2UgaGV4IHZlcnNpb24gb2YgdGhlIGRpZ2VzdCAqLwotICAgIGZvciAoaT1qPTA7IGk8c2VsZi0+ZGlnZXN0c2l6ZTsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKLSAgICAgICAgYyA9IChkaWdlc3RbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKLSAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107Ci0gICAgfQotI2lmZGVmIFB5X0RFQlVHCi0gICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXR2YWwsIDEpKTsKLSNlbmRpZgotICAgIHJldHVybiByZXR2YWw7CisgICAgcmV0dXJuIF9QeV9zdHJoZXgoKGNvbnN0IGNoYXIgKilkaWdlc3QsIHNlbGYtPmRpZ2VzdHNpemUpOwogfQogCi1QeURvY19TVFJWQVIoU0hBNTEyX3VwZGF0ZV9fZG9jX18sCi0iVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisvKltjbGluaWMgaW5wdXRdCitTSEE1MTJUeXBlLnVwZGF0ZQorCisgICAgb2JqOiBvYmplY3QKKyAgICAvCisKK1VwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBNTEyX3VwZGF0ZShTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorU0hBNTEyVHlwZV91cGRhdGUoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFjZjMzM2U3Mzk5NWE3OWUgaW5wdXQ9ZGVkMmI0NjY1NjU2NjI4M10qLwogewotICAgIFB5T2JqZWN0ICpvYmo7CiAgICAgUHlfYnVmZmVyIGJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp1cGRhdGUiLCAmb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1VUKG9iaiwgJmJ1Zik7CiAKICAgICBzaGE1MTJfdXBkYXRlKHNlbGYsIGJ1Zi5idWYsIGJ1Zi5sZW4pOwpAQCAtNTQ4LDEyICs1NTMsMTYgQEAKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CisvKltjbGluaWMgaW5wdXRdCitkdW1wIGJ1ZmZlcgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NTI0Y2UyZTAyMWU0ZWJhNl0qLwogCiBzdGF0aWMgUHlNZXRob2REZWYgU0hBX21ldGhvZHNbXSA9IHsKLSAgICB7ImNvcHkiLCAgICAgIChQeUNGdW5jdGlvbilTSEE1MTJfY29weSwgICAgICBNRVRIX05PQVJHUywgU0hBNTEyX2NvcHlfX2RvY19ffSwKLSAgICB7ImRpZ2VzdCIsICAgIChQeUNGdW5jdGlvbilTSEE1MTJfZGlnZXN0LCAgICBNRVRIX05PQVJHUywgU0hBNTEyX2RpZ2VzdF9fZG9jX199LAotICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKVNIQTUxMl9oZXhkaWdlc3QsIE1FVEhfTk9BUkdTLCBTSEE1MTJfaGV4ZGlnZXN0X19kb2NfX30sCi0gICAgeyJ1cGRhdGUiLCAgICAoUHlDRnVuY3Rpb24pU0hBNTEyX3VwZGF0ZSwgICAgTUVUSF9WQVJBUkdTLCBTSEE1MTJfdXBkYXRlX19kb2NfX30sCisgICAgU0hBNTEyVFlQRV9DT1BZX01FVEhPRERFRgorICAgIFNIQTUxMlRZUEVfRElHRVNUX01FVEhPRERFRgorICAgIFNIQTUxMlRZUEVfSEVYRElHRVNUX01FVEhPRERFRgorICAgIFNIQTUxMlRZUEVfVVBEQVRFX01FVEhPRERFRgogICAgIHtOVUxMLCAgICAgICAgTlVMTH0gICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtNjYwLDI3ICs2NjksMjYgQEAKIAogLyogVGhlIHNpbmdsZSBtb2R1bGUtbGV2ZWwgZnVuY3Rpb246IG5ldygpICovCiAKLVB5RG9jX1NUUlZBUihTSEE1MTJfbmV3X19kb2NfXywKLSJSZXR1cm4gYSBuZXcgU0hBLTUxMiBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOworLypbY2xpbmljIGlucHV0XQorX3NoYTUxMi5zaGE1MTIKKworICAgIHN0cmluZzogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gYicnCisKK1JldHVybiBhIG5ldyBTSEEtNTEyIGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEE1MTJfbmV3KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZGljdCkKK19zaGE1MTJfc2hhNTEyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTEzYmMwYTk0ZGE2ZGUzIGlucHV0PWU2OWJhZDlhZTliNmEzMDhdKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InN0cmluZyIsIE5VTEx9OwogICAgIFNIQW9iamVjdCAqbmV3OwotICAgIFB5T2JqZWN0ICpkYXRhX29iaiA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgInxPOm5ldyIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9vYmopKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChkYXRhX29iaikKLSAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChkYXRhX29iaiwgJmJ1Zik7CisgICAgaWYgKHN0cmluZykKKyAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChzdHJpbmcsICZidWYpOwogCiAgICAgaWYgKChuZXcgPSBuZXdTSEE1MTJvYmplY3QoKSkgPT0gTlVMTCkgewotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC02ODksMTEgKzY5NywxMSBAQAogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgIGlmIChkYXRhX29iaikKKyAgICAgICAgaWYgKHN0cmluZykKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZGF0YV9vYmopIHsKKyAgICBpZiAoc3RyaW5nKSB7CiAgICAgICAgIHNoYTUxMl91cGRhdGUobmV3LCBidWYuYnVmLCBidWYubGVuKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICB9CkBAIC03MDEsMjcgKzcwOSwyNiBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKiluZXc7CiB9CiAKLVB5RG9jX1NUUlZBUihTSEEzODRfbmV3X19kb2NfXywKLSJSZXR1cm4gYSBuZXcgU0hBLTM4NCBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOworLypbY2xpbmljIGlucHV0XQorX3NoYTUxMi5zaGEzODQKKworICAgIHN0cmluZzogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gYicnCisKK1JldHVybiBhIG5ldyBTSEEtMzg0IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEEzODRfbmV3KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZGljdCkKK19zaGE1MTJfc2hhMzg0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hYzczMWFlYTU1MDkxNzRkIGlucHV0PWM5MzI3Nzg4ZDRlYTQ1NDVdKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InN0cmluZyIsIE5VTEx9OwogICAgIFNIQW9iamVjdCAqbmV3OwotICAgIFB5T2JqZWN0ICpkYXRhX29iaiA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgInxPOm5ldyIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9vYmopKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChkYXRhX29iaikKLSAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChkYXRhX29iaiwgJmJ1Zik7CisgICAgaWYgKHN0cmluZykKKyAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChzdHJpbmcsICZidWYpOwogCiAgICAgaWYgKChuZXcgPSBuZXdTSEEzODRvYmplY3QoKSkgPT0gTlVMTCkgewotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC03MzAsMTEgKzczNywxMSBAQAogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgIGlmIChkYXRhX29iaikKKyAgICAgICAgaWYgKHN0cmluZykKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZGF0YV9vYmopIHsKKyAgICBpZiAoc3RyaW5nKSB7CiAgICAgICAgIHNoYTUxMl91cGRhdGUobmV3LCBidWYuYnVmLCBidWYubGVuKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICB9CkBAIC03NDMsMTEgKzc1MCwxNiBAQAogfQogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK2R1bXAgYnVmZmVyCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD01MjRjZTJlMDIxZTRlYmE2XSovCisKIC8qIExpc3Qgb2YgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlICovCiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgU0hBX2Z1bmN0aW9uc1tdID0gewotICAgIHsic2hhNTEyIiwgKFB5Q0Z1bmN0aW9uKVNIQTUxMl9uZXcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBTSEE1MTJfbmV3X19kb2NfX30sCi0gICAgeyJzaGEzODQiLCAoUHlDRnVuY3Rpb24pU0hBMzg0X25ldywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIFNIQTM4NF9uZXdfX2RvY19ffSwKKyAgICBfU0hBNTEyX1NIQTUxMl9NRVRIT0RERUYKKyAgICBfU0hBNTEyX1NIQTM4NF9NRVRIT0RERUYKICAgICB7TlVMTCwgICAgICBOVUxMfSAgICAgICAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jIGIvTW9kdWxlcy9zaWduYWxtb2R1bGUuYwppbmRleCBmZWRhZGRmLi5kYTQ1NGRlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKQEAgLTcsNiArNyw5IEBACiAjaWZuZGVmIE1TX1dJTkRPV1MKICNpbmNsdWRlICJwb3NpeG1vZHVsZS5oIgogI2VuZGlmCisjaWZkZWYgTVNfV0lORE9XUworI2luY2x1ZGUgInNvY2tldG1vZHVsZS5oIiAgIC8qIG5lZWRlZCBmb3IgU09DS0VUX1QgKi8KKyNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUwogI2luY2x1ZGUgPHdpbmRvd3MuaD4KQEAgLTQ5LDYgKzUyLDEzIEBACiAjIGVuZGlmCiAjZW5kaWYKIAorI2luY2x1ZGUgImNsaW5pYy9zaWduYWxtb2R1bGUuYy5oIgorCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgc2lnbmFsCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1iMDMwMWEzYmRlNWZlOWQzXSovCisKIAogLyoKICAgIE5PVEVTIE9OIFRIRSBJTlRFUkFDVElPTiBCRVRXRUVOIFNJR05BTFMgQU5EIFRIUkVBRFMKQEAgLTg3LDcgKzk3LDIwIEBACiAgICAgUHlPYmplY3QgKmZ1bmM7CiB9IEhhbmRsZXJzW05TSUddOwogCisjaWZkZWYgTVNfV0lORE9XUworI2RlZmluZSBJTlZBTElEX0ZEICgoU09DS0VUX1QpLTEpCisKK3N0YXRpYyB2b2xhdGlsZSBzdHJ1Y3QgeworICAgIFNPQ0tFVF9UIGZkOworICAgIGludCB1c2Vfc2VuZDsKKyAgICBpbnQgc2VuZF9lcnJfc2V0OworICAgIGludCBzZW5kX2Vycm5vOworICAgIGludCBzZW5kX3dpbl9lcnJvcjsKK30gd2FrZXVwID0ge0lOVkFMSURfRkQsIDAsIDB9OworI2Vsc2UKKyNkZWZpbmUgSU5WQUxJRF9GRCAoLTEpCiBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IHdha2V1cF9mZCA9IC0xOworI2VuZGlmCiAKIC8qIFNwZWVkIHVwIHNpZ2NoZWNrKCkgd2hlbiBub25lIHRyaXBwZWQgKi8KIHN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgaXNfdHJpcHBlZCA9IDA7CkBAIC0xNzIsNyArMTk1LDcgQEAKIH0KIAogc3RhdGljIGludAotcmVwb3J0X3dha2V1cF9lcnJvcih2b2lkICpkYXRhKQorcmVwb3J0X3dha2V1cF93cml0ZV9lcnJvcih2b2lkICpkYXRhKQogewogICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87CiAgICAgZXJybm8gPSAoaW50KSAoUHlfaW50cHRyX3QpIGRhdGE7CkBAIC0xODQsMjUgKzIwNyw4NyBAQAogICAgIHJldHVybiAwOwogfQogCisjaWZkZWYgTVNfV0lORE9XUworc3RhdGljIGludAorcmVwb3J0X3dha2V1cF9zZW5kX2Vycm9yKHZvaWQqIFB5X1VOVVNFRChkYXRhKSkKK3sKKyAgICBQeU9iamVjdCAqcmVzOworCisgICAgaWYgKHdha2V1cC5zZW5kX3dpbl9lcnJvcikgeworICAgICAgICAvKiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycigpIGludm9rZXMgRm9ybWF0TWVzc2FnZSgpIHdoaWNoCisgICAgICAgICAgIHJlY29nbml6ZXMgdGhlIGVycm9yIGNvZGVzIHVzZWQgYnkgYm90aCBHZXRMYXN0RXJyb3IoKSBhbmQKKyAgICAgICAgICAgV1NBR2V0TGFzdEVycm9yICovCisgICAgICAgIHJlcyA9IFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX09TRXJyb3IsIHdha2V1cC5zZW5kX3dpbl9lcnJvcik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBlcnJubyA9IHdha2V1cC5zZW5kX2Vycm5vOworICAgICAgICByZXMgPSBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgfQorCisgICAgYXNzZXJ0KHJlcyA9PSBOVUxMKTsKKyAgICB3YWtldXAuc2VuZF9lcnJfc2V0ID0gMDsKKworICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJFeGNlcHRpb24gaWdub3JlZCB3aGVuIHRyeWluZyB0byBzZW5kIHRvIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbCB3YWtldXAgZmQ6XG4iKTsKKyAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoTlVMTCk7CisKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZiAgIC8qIE1TX1dJTkRPV1MgKi8KKwogc3RhdGljIHZvaWQKIHRyaXBfc2lnbmFsKGludCBzaWdfbnVtKQogewogICAgIHVuc2lnbmVkIGNoYXIgYnl0ZTsKLSAgICBpbnQgcmMgPSAwOworICAgIGludCBmZDsKKyAgICBQeV9zc2l6ZV90IHJjOwogCiAgICAgSGFuZGxlcnNbc2lnX251bV0udHJpcHBlZCA9IDE7Ci0gICAgaWYgKHdha2V1cF9mZCAhPSAtMSkgeworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGZkID0gUHlfU0FGRV9ET1dOQ0FTVCh3YWtldXAuZmQsIFNPQ0tFVF9ULCBpbnQpOworI2Vsc2UKKyAgICBmZCA9IHdha2V1cF9mZDsKKyNlbmRpZgorCisgICAgaWYgKGZkICE9IElOVkFMSURfRkQpIHsKICAgICAgICAgYnl0ZSA9ICh1bnNpZ25lZCBjaGFyKXNpZ19udW07Ci0gICAgICAgIHdoaWxlICgocmMgPSB3cml0ZSh3YWtldXBfZmQsICZieXRlLCAxKSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpOwotICAgICAgICBpZiAocmMgPT0gLTEpCi0gICAgICAgICAgICBQeV9BZGRQZW5kaW5nQ2FsbChyZXBvcnRfd2FrZXVwX2Vycm9yLCAodm9pZCAqKSAoUHlfaW50cHRyX3QpIGVycm5vKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIGlmICh3YWtldXAudXNlX3NlbmQpIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICByYyA9IHNlbmQoZmQsICZieXRlLCAxLCAwKTsKKyAgICAgICAgICAgIH0gd2hpbGUgKHJjIDwgMCAmJiBlcnJubyA9PSBFSU5UUik7CisKKyAgICAgICAgICAgIC8qIHdlIG9ubHkgaGF2ZSBhIHN0b3JhZ2UgZm9yIG9uZSBlcnJvciBpbiB0aGUgd2FrZXVwIHN0cnVjdHVyZSAqLworICAgICAgICAgICAgaWYgKHJjIDwgMCAmJiAhd2FrZXVwLnNlbmRfZXJyX3NldCkgeworICAgICAgICAgICAgICAgIHdha2V1cC5zZW5kX2Vycl9zZXQgPSAxOworICAgICAgICAgICAgICAgIHdha2V1cC5zZW5kX2Vycm5vID0gZXJybm87CisgICAgICAgICAgICAgICAgd2FrZXVwLnNlbmRfd2luX2Vycm9yID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgICAgICAgICAgUHlfQWRkUGVuZGluZ0NhbGwocmVwb3J0X3dha2V1cF9zZW5kX2Vycm9yLCBOVUxMKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgeworICAgICAgICAgICAgYnl0ZSA9ICh1bnNpZ25lZCBjaGFyKXNpZ19udW07CisKKyAgICAgICAgICAgIC8qIF9QeV93cml0ZV9ub3JhaXNlKCkgcmV0cmllcyB3cml0ZSgpIGlmIHdyaXRlKCkgaXMgaW50ZXJydXB0ZWQgYnkKKyAgICAgICAgICAgICAgIGEgc2lnbmFsIChmYWlscyB3aXRoIEVJTlRSKS4gKi8KKyAgICAgICAgICAgIHJjID0gX1B5X3dyaXRlX25vcmFpc2UoZmQsICZieXRlLCAxKTsKKworICAgICAgICAgICAgaWYgKHJjIDwgMCkgeworICAgICAgICAgICAgICAgIFB5X0FkZFBlbmRpbmdDYWxsKHJlcG9ydF93YWtldXBfd3JpdGVfZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikoUHlfaW50cHRyX3QpZXJybm8pOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQotICAgIGlmIChpc190cmlwcGVkKQotICAgICAgICByZXR1cm47Ci0gICAgLyogU2V0IGlzX3RyaXBwZWQgYWZ0ZXIgc2V0dGluZyAudHJpcHBlZCwgYXMgaXQgZ2V0cwotICAgICAgIGNsZWFyZWQgaW4gUHlFcnJfQ2hlY2tTaWduYWxzKCkgYmVmb3JlIC50cmlwcGVkLiAqLwotICAgIGlzX3RyaXBwZWQgPSAxOwotICAgIFB5X0FkZFBlbmRpbmdDYWxsKGNoZWNrc2lnbmFsc193aXRoYXJnLCBOVUxMKTsKKworICAgIGlmICghaXNfdHJpcHBlZCkgeworICAgICAgICAvKiBTZXQgaXNfdHJpcHBlZCBhZnRlciBzZXR0aW5nIC50cmlwcGVkLCBhcyBpdCBnZXRzCisgICAgICAgICAgIGNsZWFyZWQgaW4gUHlFcnJfQ2hlY2tTaWduYWxzKCkgYmVmb3JlIC50cmlwcGVkLiAqLworICAgICAgICBpc190cmlwcGVkID0gMTsKKyAgICAgICAgUHlfQWRkUGVuZGluZ0NhbGwoY2hlY2tzaWduYWxzX3dpdGhhcmcsIE5VTEwpOworICAgIH0KIH0KIAogc3RhdGljIHZvaWQKQEAgLTIyNyw3ICszMTIsNyBAQAogICAgIGlmIChzaWdfbnVtICE9IFNJR0NITEQpCiAjZW5kaWYKICAgICAvKiBJZiB0aGUgaGFuZGxlciB3YXMgbm90IHNldCB1cCB3aXRoIHNpZ2FjdGlvbiwgcmVpbnN0YWxsIGl0LiAgU2VlCi0gICAgICogUHl0aG9uL3B5dGhvbnJ1bi5jIGZvciB0aGUgaW1wbGVtZW50YXRpb24gb2YgUHlPU19zZXRzaWcgd2hpY2gKKyAgICAgKiBQeXRob24vcHlsaWZlY3ljbGUuYyBmb3IgdGhlIGltcGxlbWVudGF0aW9uIG9mIFB5T1Nfc2V0c2lnIHdoaWNoCiAgICAgICogbWFrZXMgdGhpcyB0cnVlLiAgU2VlIGFsc28gaXNzdWU4MzU0LiAqLwogICAgIFB5T1Nfc2V0c2lnKHNpZ19udW0sIHNpZ25hbF9oYW5kbGVyKTsKICNlbmRpZgpAQCAtMjQ0LDI1ICszMjksMzcgQEAKIAogCiAjaWZkZWYgSEFWRV9BTEFSTQotc3RhdGljIFB5T2JqZWN0ICoKLXNpZ25hbF9hbGFybShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisKKy8qW2NsaW5pYyBpbnB1dF0KK3NpZ25hbC5hbGFybSAtPiBsb25nCisKKyAgICBzZWNvbmRzOiBpbnQKKyAgICAvCisKK0FycmFuZ2UgZm9yIFNJR0FMUk0gdG8gYXJyaXZlIGFmdGVyIHRoZSBnaXZlbiBudW1iZXIgb2Ygc2Vjb25kcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK3NpZ25hbF9hbGFybV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzZWNvbmRzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY1ZjliYWRhYWIyNWQzZTcgaW5wdXQ9MGQ1ZTk3ZTBlNmYzOWU4Nl0qLwogewotICAgIGludCB0OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTphbGFybSIsICZ0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgLyogYWxhcm0oKSByZXR1cm5zIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyByZW1haW5pbmcgKi8KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKWFsYXJtKHQpKTsKKyAgICByZXR1cm4gKGxvbmcpYWxhcm0oc2Vjb25kcyk7CiB9CiAKLVB5RG9jX1NUUlZBUihhbGFybV9kb2MsCi0iYWxhcm0oc2Vjb25kcylcblwKLVxuXAotQXJyYW5nZSBmb3IgU0lHQUxSTSB0byBhcnJpdmUgYWZ0ZXIgdGhlIGdpdmVuIG51bWJlciBvZiBzZWNvbmRzLiIpOwogI2VuZGlmCiAKICNpZmRlZiBIQVZFX1BBVVNFCisKKy8qW2NsaW5pYyBpbnB1dF0KK3NpZ25hbC5wYXVzZQorCitXYWl0IHVudGlsIGEgc2lnbmFsIGFycml2ZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfcGF1c2UoUHlPYmplY3QgKnNlbGYpCitzaWduYWxfcGF1c2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkyNDU3MDRjYWE2M2JiZTkgaW5wdXQ9ZjAzZGUwZjg3NTc1MjA2Ml0qLwogewogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAodm9pZClwYXVzZSgpOwpAQCAtMjczLDI5ICszNzAsMzggQEAKICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQotUHlEb2NfU1RSVkFSKHBhdXNlX2RvYywKLSJwYXVzZSgpXG5cCi1cblwKLVdhaXQgdW50aWwgYSBzaWduYWwgYXJyaXZlcy4iKTsKIAogI2VuZGlmCiAKIAorLypbY2xpbmljIGlucHV0XQorc2lnbmFsLnNpZ25hbAorCisgICAgc2lnbmFsbnVtOiBpbnQKKyAgICBoYW5kbGVyOiAgIG9iamVjdAorICAgIC8KKworU2V0IHRoZSBhY3Rpb24gZm9yIHRoZSBnaXZlbiBzaWduYWwuCisKK1RoZSBhY3Rpb24gY2FuIGJlIFNJR19ERkwsIFNJR19JR04sIG9yIGEgY2FsbGFibGUgUHl0aG9uIG9iamVjdC4KK1RoZSBwcmV2aW91cyBhY3Rpb24gaXMgcmV0dXJuZWQuICBTZWUgZ2V0c2lnbmFsKCkgZm9yIHBvc3NpYmxlIHJldHVybiB2YWx1ZXMuCisKKyoqKiBJTVBPUlRBTlQgTk9USUNFICoqKgorQSBzaWduYWwgaGFuZGxlciBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOgordGhlIGZpcnN0IGlzIHRoZSBzaWduYWwgbnVtYmVyLCB0aGUgc2Vjb25kIGlzIHRoZSBpbnRlcnJ1cHRlZCBzdGFjayBmcmFtZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNpZ25hbF9zaWduYWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorc2lnbmFsX3NpZ25hbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzaWduYWxudW0sIFB5T2JqZWN0ICpoYW5kbGVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTYyMmQ3ZDBiZWViZWE1NDYgaW5wdXQ9ZGVlZTg0YWY1ZmEwNDMyY10qLwogewotICAgIFB5T2JqZWN0ICpvYmo7Ci0gICAgaW50IHNpZ19udW07CiAgICAgUHlPYmplY3QgKm9sZF9oYW5kbGVyOwogICAgIHZvaWQgKCpmdW5jKShpbnQpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86c2lnbmFsIiwgJnNpZ19udW0sICZvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgLyogVmFsaWRhdGUgdGhhdCBzaWdfbnVtIGlzIG9uZSBvZiB0aGUgYWxsb3dhYmxlIHNpZ25hbHMgKi8KLSAgICBzd2l0Y2ggKHNpZ19udW0pIHsKKyAgICAvKiBWYWxpZGF0ZSB0aGF0IHNpZ25hbG51bSBpcyBvbmUgb2YgdGhlIGFsbG93YWJsZSBzaWduYWxzICovCisgICAgc3dpdGNoIChzaWduYWxudW0pIHsKICAgICAgICAgY2FzZSBTSUdBQlJUOiBicmVhazsKICNpZmRlZiBTSUdCUkVBSwogICAgICAgICAvKiBJc3N1ZSAjMTAwMDM6IFNJR0JSRUFLIGlzIG5vdCBkb2N1bWVudGVkIGFzIHBlcm1pdHRlZCwgYnV0IHdvcmtzCkBAIC0zMTksNjEgKzQyNSw2MyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAjZW5kaWYKLSAgICBpZiAoc2lnX251bSA8IDEgfHwgc2lnX251bSA+PSBOU0lHKSB7CisgICAgaWYgKHNpZ25hbG51bSA8IDEgfHwgc2lnbmFsbnVtID49IE5TSUcpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsIG51bWJlciBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChvYmogPT0gSWdub3JlSGFuZGxlcikKKyAgICBpZiAoaGFuZGxlciA9PSBJZ25vcmVIYW5kbGVyKQogICAgICAgICBmdW5jID0gU0lHX0lHTjsKLSAgICBlbHNlIGlmIChvYmogPT0gRGVmYXVsdEhhbmRsZXIpCisgICAgZWxzZSBpZiAoaGFuZGxlciA9PSBEZWZhdWx0SGFuZGxlcikKICAgICAgICAgZnVuYyA9IFNJR19ERkw7Ci0gICAgZWxzZSBpZiAoIVB5Q2FsbGFibGVfQ2hlY2sob2JqKSkgeworICAgIGVsc2UgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGhhbmRsZXIpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAic2lnbmFsIGhhbmRsZXIgbXVzdCBiZSBzaWduYWwuU0lHX0lHTiwgc2lnbmFsLlNJR19ERkwsIG9yIGEgY2FsbGFibGUgb2JqZWN0Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgZnVuYyA9IHNpZ25hbF9oYW5kbGVyOwotICAgIGlmIChQeU9TX3NldHNpZyhzaWdfbnVtLCBmdW5jKSA9PSBTSUdfRVJSKSB7CisgICAgaWYgKFB5T1Nfc2V0c2lnKHNpZ25hbG51bSwgZnVuYykgPT0gU0lHX0VSUikgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBvbGRfaGFuZGxlciA9IEhhbmRsZXJzW3NpZ19udW1dLmZ1bmM7Ci0gICAgSGFuZGxlcnNbc2lnX251bV0udHJpcHBlZCA9IDA7Ci0gICAgUHlfSU5DUkVGKG9iaik7Ci0gICAgSGFuZGxlcnNbc2lnX251bV0uZnVuYyA9IG9iajsKKyAgICBvbGRfaGFuZGxlciA9IEhhbmRsZXJzW3NpZ25hbG51bV0uZnVuYzsKKyAgICBIYW5kbGVyc1tzaWduYWxudW1dLnRyaXBwZWQgPSAwOworICAgIFB5X0lOQ1JFRihoYW5kbGVyKTsKKyAgICBIYW5kbGVyc1tzaWduYWxudW1dLmZ1bmMgPSBoYW5kbGVyOwogICAgIGlmIChvbGRfaGFuZGxlciAhPSBOVUxMKQogICAgICAgICByZXR1cm4gb2xkX2hhbmRsZXI7CiAgICAgZWxzZQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKHNpZ25hbF9kb2MsCi0ic2lnbmFsKHNpZywgYWN0aW9uKSAtPiBhY3Rpb25cblwKLVxuXAotU2V0IHRoZSBhY3Rpb24gZm9yIHRoZSBnaXZlbiBzaWduYWwuICBUaGUgYWN0aW9uIGNhbiBiZSBTSUdfREZMLFxuXAotU0lHX0lHTiwgb3IgYSBjYWxsYWJsZSBQeXRob24gb2JqZWN0LiAgVGhlIHByZXZpb3VzIGFjdGlvbiBpc1xuXAotcmV0dXJuZWQuICBTZWUgZ2V0c2lnbmFsKCkgZm9yIHBvc3NpYmxlIHJldHVybiB2YWx1ZXMuXG5cCi1cblwKLSoqKiBJTVBPUlRBTlQgTk9USUNFICoqKlxuXAotQSBzaWduYWwgaGFuZGxlciBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOlxuXAotdGhlIGZpcnN0IGlzIHRoZSBzaWduYWwgbnVtYmVyLCB0aGUgc2Vjb25kIGlzIHRoZSBpbnRlcnJ1cHRlZCBzdGFjayBmcmFtZS4iKTsKIAorLypbY2xpbmljIGlucHV0XQorc2lnbmFsLmdldHNpZ25hbAorCisgICAgc2lnbmFsbnVtOiBpbnQKKyAgICAvCisKK1JldHVybiB0aGUgY3VycmVudCBhY3Rpb24gZm9yIHRoZSBnaXZlbiBzaWduYWwuCisKK1RoZSByZXR1cm4gdmFsdWUgY2FuIGJlOgorICBTSUdfSUdOIC0tIGlmIHRoZSBzaWduYWwgaXMgYmVpbmcgaWdub3JlZAorICBTSUdfREZMIC0tIGlmIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgdGhlIHNpZ25hbCBpcyBpbiBlZmZlY3QKKyAgTm9uZSAgICAtLSBpZiBhbiB1bmtub3duIGhhbmRsZXIgaXMgaW4gZWZmZWN0CisgIGFueXRoaW5nIGVsc2UgLS0gdGhlIGNhbGxhYmxlIFB5dGhvbiBvYmplY3QgdXNlZCBhcyBhIGhhbmRsZXIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXNpZ25hbF9nZXRzaWduYWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorc2lnbmFsX2dldHNpZ25hbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzaWduYWxudW0pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDUwZWMzNTU3NTdlMzYwYyBpbnB1dD1hYzIzYTAwZjE5ZGZhNTA5XSovCiB7Ci0gICAgaW50IHNpZ19udW07CiAgICAgUHlPYmplY3QgKm9sZF9oYW5kbGVyOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpnZXRzaWduYWwiLCAmc2lnX251bSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzaWdfbnVtIDwgMSB8fCBzaWdfbnVtID49IE5TSUcpIHsKKyAgICBpZiAoc2lnbmFsbnVtIDwgMSB8fCBzaWduYWxudW0gPj0gTlNJRykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWwgbnVtYmVyIG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgb2xkX2hhbmRsZXIgPSBIYW5kbGVyc1tzaWdfbnVtXS5mdW5jOworICAgIG9sZF9oYW5kbGVyID0gSGFuZGxlcnNbc2lnbmFsbnVtXS5mdW5jOwogICAgIGlmIChvbGRfaGFuZGxlciAhPSBOVUxMKSB7CiAgICAgICAgIFB5X0lOQ1JFRihvbGRfaGFuZGxlcik7CiAgICAgICAgIHJldHVybiBvbGRfaGFuZGxlcjsKQEAgLTM4Myw1MyArNDkxLDY1IEBACiAgICAgfQogfQogCi1QeURvY19TVFJWQVIoZ2V0c2lnbmFsX2RvYywKLSJnZXRzaWduYWwoc2lnKSAtPiBhY3Rpb25cblwKLVxuXAotUmV0dXJuIHRoZSBjdXJyZW50IGFjdGlvbiBmb3IgdGhlIGdpdmVuIHNpZ25hbC4gIFRoZSByZXR1cm4gdmFsdWUgY2FuIGJlOlxuXAotU0lHX0lHTiAtLSBpZiB0aGUgc2lnbmFsIGlzIGJlaW5nIGlnbm9yZWRcblwKLVNJR19ERkwgLS0gaWYgdGhlIGRlZmF1bHQgYWN0aW9uIGZvciB0aGUgc2lnbmFsIGlzIGluIGVmZmVjdFxuXAotTm9uZSAtLSBpZiBhbiB1bmtub3duIGhhbmRsZXIgaXMgaW4gZWZmZWN0XG5cCi1hbnl0aGluZyBlbHNlIC0tIHRoZSBjYWxsYWJsZSBQeXRob24gb2JqZWN0IHVzZWQgYXMgYSBoYW5kbGVyIik7Ci0KICNpZmRlZiBIQVZFX1NJR0lOVEVSUlVQVAotUHlEb2NfU1RSVkFSKHNpZ2ludGVycnVwdF9kb2MsCi0ic2lnaW50ZXJydXB0KHNpZywgZmxhZykgLT4gTm9uZVxuXAotY2hhbmdlIHN5c3RlbSBjYWxsIHJlc3RhcnQgYmVoYXZpb3VyOiBpZiBmbGFnIGlzIEZhbHNlLCBzeXN0ZW0gY2FsbHNcblwKLXdpbGwgYmUgcmVzdGFydGVkIHdoZW4gaW50ZXJydXB0ZWQgYnkgc2lnbmFsIHNpZywgZWxzZSBzeXN0ZW0gY2FsbHNcblwKLXdpbGwgYmUgaW50ZXJydXB0ZWQuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK3NpZ25hbC5zaWdpbnRlcnJ1cHQKKworICAgIHNpZ25hbG51bTogaW50CisgICAgZmxhZzogICAgICBpbnQKKyAgICAvCisKK0NoYW5nZSBzeXN0ZW0gY2FsbCByZXN0YXJ0IGJlaGF2aW91ci4KKworSWYgZmxhZyBpcyBGYWxzZSwgc3lzdGVtIGNhbGxzIHdpbGwgYmUgcmVzdGFydGVkIHdoZW4gaW50ZXJydXB0ZWQgYnkKK3NpZ25hbCBzaWcsIGVsc2Ugc3lzdGVtIGNhbGxzIHdpbGwgYmUgaW50ZXJydXB0ZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfc2lnaW50ZXJydXB0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3NpZ25hbF9zaWdpbnRlcnJ1cHRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc2lnbmFsbnVtLCBpbnQgZmxhZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ZGNmOGIwMzFiMGU4MDQ0IGlucHV0PTQxNjBhY2FjY2EzZTIwOTldKi8KIHsKLSAgICBpbnQgc2lnX251bTsKLSAgICBpbnQgZmxhZzsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6c2lnaW50ZXJydXB0IiwgJnNpZ19udW0sICZmbGFnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNpZ19udW0gPCAxIHx8IHNpZ19udW0gPj0gTlNJRykgeworICAgIGlmIChzaWduYWxudW0gPCAxIHx8IHNpZ25hbG51bSA+PSBOU0lHKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbCBudW1iZXIgb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoc2lnaW50ZXJydXB0KHNpZ19udW0sIGZsYWcpPDApIHsKKyAgICBpZiAoc2lnaW50ZXJydXB0KHNpZ25hbG51bSwgZmxhZyk8MCkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogI2VuZGlmCiAKLXN0YXRpYyBQeU9iamVjdCAqCisKK3N0YXRpYyBQeU9iamVjdCoKIHNpZ25hbF9zZXRfd2FrZXVwX2ZkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBzdHJ1Y3Qgc3RhdCBidWY7CisgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdGF0dXM7CisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5T2JqZWN0ICpmZG9iajsKKyAgICBTT0NLRVRfVCBzb2NrZmQsIG9sZF9zb2NrZmQ7CisgICAgaW50IHJlczsKKyAgICBpbnQgcmVzX3NpemUgPSBzaXplb2YgcmVzOworICAgIFB5T2JqZWN0ICptb2Q7CisgICAgaW50IGlzX3NvY2tldDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpzZXRfd2FrZXVwX2ZkIiwgJmZkb2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzb2NrZmQgPSBQeUxvbmdfQXNTb2NrZXRfdChmZG9iaik7CisgICAgaWYgKHNvY2tmZCA9PSAoU09DS0VUX1QpKC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbHNlCiAgICAgaW50IGZkLCBvbGRfZmQ7CisKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6c2V0X3dha2V1cF9mZCIsICZmZCkpCiAgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCisKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIGlmIChQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCkgIT0gbWFpbl90aHJlYWQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCkBAIC00MzcsMjEgKzU1Nyw5MCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAjZW5kaWYKLSAgICBpZiAoZmQgIT0gLTEgJiYgKCFfUHlWZXJpZnlfZmQoZmQpIHx8IGZzdGF0KGZkLCAmYnVmKSAhPSAwKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgZmQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaXNfc29ja2V0ID0gMDsKKyAgICBpZiAoc29ja2ZkICE9IElOVkFMSURfRkQpIHsKKyAgICAgICAgLyogSW1wb3J0IHRoZSBfc29ja2V0IG1vZHVsZSB0byBjYWxsIFdTQVN0YXJ0dXAoKSAqLworICAgICAgICBtb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJfc29ja2V0Iik7CisgICAgICAgIGlmIChtb2QgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9ERUNSRUYobW9kKTsKKworICAgICAgICAvKiB0ZXN0IHRoZSBzb2NrZXQgKi8KKyAgICAgICAgaWYgKGdldHNvY2tvcHQoc29ja2ZkLCBTT0xfU09DS0VULCBTT19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikmcmVzLCAmcmVzX3NpemUpICE9IDApIHsKKyAgICAgICAgICAgIGludCBmZCwgZXJyOworCisgICAgICAgICAgICBlcnIgPSBXU0FHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgICAgIGlmIChlcnIgIT0gV1NBRU5PVFNPQ0spIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19PU0Vycm9yLCBlcnIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmZCA9IChpbnQpc29ja2ZkOworICAgICAgICAgICAgaWYgKChTT0NLRVRfVClmZCAhPSBzb2NrZmQgfHwgIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgZmQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKF9QeV9mc3RhdChmZCwgJnN0YXR1cykgIT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICAgICAgLyogb24gV2luZG93cywgYSBmaWxlIGNhbm5vdCBiZSBzZXQgdG8gbm9uLWJsb2NraW5nIG1vZGUgKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlzX3NvY2tldCA9IDE7CisKKyAgICAgICAgICAgIC8qIFdpbmRvd3MgZG9lcyBub3QgcHJvdmlkZSBhIGZ1bmN0aW9uIHRvIHRlc3QgaWYgYSBzb2NrZXQKKyAgICAgICAgICAgICAgIGlzIGluIG5vbi1ibG9ja2luZyBtb2RlICovCisgICAgICAgIH0KICAgICB9CisKKyAgICBvbGRfc29ja2ZkID0gd2FrZXVwLmZkOworICAgIHdha2V1cC5mZCA9IHNvY2tmZDsKKyAgICB3YWtldXAudXNlX3NlbmQgPSBpc19zb2NrZXQ7CisKKyAgICBpZiAob2xkX3NvY2tmZCAhPSBJTlZBTElEX0ZEKQorICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Tb2NrZXRfdChvbGRfc29ja2ZkKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoLTEpOworI2Vsc2UKKyAgICBpZiAoZmQgIT0gLTEpIHsKKyAgICAgICAgaW50IGJsb2NraW5nOworCisgICAgICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGZkIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChfUHlfZnN0YXQoZmQsICZzdGF0dXMpICE9IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBibG9ja2luZyA9IF9QeV9nZXRfYmxvY2tpbmcoZmQpOworICAgICAgICBpZiAoYmxvY2tpbmcgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChibG9ja2luZykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBmZCAlaSBtdXN0IGJlIGluIG5vbi1ibG9ja2luZyBtb2RlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmZCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKwogICAgIG9sZF9mZCA9IHdha2V1cF9mZDsKICAgICB3YWtldXBfZmQgPSBmZDsKKwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob2xkX2ZkKTsKKyNlbmRpZgogfQogCiBQeURvY19TVFJWQVIoc2V0X3dha2V1cF9mZF9kb2MsCiAic2V0X3dha2V1cF9mZChmZCkgLT4gZmRcblwKIFxuXAotU2V0cyB0aGUgZmQgdG8gYmUgd3JpdHRlbiB0byAod2l0aCAnXFwwJykgd2hlbiBhIHNpZ25hbFxuXAorU2V0cyB0aGUgZmQgdG8gYmUgd3JpdHRlbiB0byAod2l0aCB0aGUgc2lnbmFsIG51bWJlcikgd2hlbiBhIHNpZ25hbFxuXAogY29tZXMgaW4uICBBIGxpYnJhcnkgY2FuIHVzZSB0aGlzIHRvIHdha2V1cCBzZWxlY3Qgb3IgcG9sbC5cblwKLVRoZSBwcmV2aW91cyBmZCBpcyByZXR1cm5lZC5cblwKK1RoZSBwcmV2aW91cyBmZCBvciAtMSBpcyByZXR1cm5lZC5cblwKIFxuXAogVGhlIGZkIG11c3QgYmUgbm9uLWJsb2NraW5nLiIpOwogCkBAIC00NTksNzEgKzY0OCw4NSBAQAogaW50CiBQeVNpZ25hbF9TZXRXYWtldXBGZChpbnQgZmQpCiB7Ci0gICAgaW50IG9sZF9mZCA9IHdha2V1cF9mZDsKKyAgICBpbnQgb2xkX2ZkOwogICAgIGlmIChmZCA8IDApCiAgICAgICAgIGZkID0gLTE7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgb2xkX2ZkID0gUHlfU0FGRV9ET1dOQ0FTVCh3YWtldXAuZmQsIFNPQ0tFVF9ULCBpbnQpOworICAgIHdha2V1cC5mZCA9IGZkOworI2Vsc2UKKyAgICBvbGRfZmQgPSB3YWtldXBfZmQ7CiAgICAgd2FrZXVwX2ZkID0gZmQ7CisjZW5kaWYKICAgICByZXR1cm4gb2xkX2ZkOwogfQogCiAKICNpZmRlZiBIQVZFX1NFVElUSU1FUgorCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwuc2V0aXRpbWVyCisKKyAgICB3aGljaDogICAgaW50CisgICAgc2Vjb25kczogIGRvdWJsZQorICAgIGludGVydmFsOiBkb3VibGUgPSAwLjAKKyAgICAvCisKK1NldHMgZ2l2ZW4gaXRpbWVyIChvbmUgb2YgSVRJTUVSX1JFQUwsIElUSU1FUl9WSVJUVUFMIG9yIElUSU1FUl9QUk9GKS4KKworVGhlIHRpbWVyIHdpbGwgZmlyZSBhZnRlciB2YWx1ZSBzZWNvbmRzIGFuZCBhZnRlciB0aGF0IGV2ZXJ5IGludGVydmFsIHNlY29uZHMuCitUaGUgaXRpbWVyIGNhbiBiZSBjbGVhcmVkIGJ5IHNldHRpbmcgc2Vjb25kcyB0byB6ZXJvLgorCitSZXR1cm5zIG9sZCB2YWx1ZXMgYXMgYSB0dXBsZTogKGRlbGF5LCBpbnRlcnZhbCkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfc2V0aXRpbWVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3NpZ25hbF9zZXRpdGltZXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgd2hpY2gsIGRvdWJsZSBzZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBpbnRlcnZhbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05YTkyMjdhMjdiZDA1OTg4IGlucHV0PTBkMjdkNDE3Y2ZjYmQ1MWFdKi8KIHsKLSAgICBkb3VibGUgZmlyc3Q7Ci0gICAgZG91YmxlIGludGVydmFsID0gMDsKLSAgICBpbnQgd2hpY2g7CiAgICAgc3RydWN0IGl0aW1lcnZhbCBuZXcsIG9sZDsKIAotICAgIGlmKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpZHxkOnNldGl0aW1lciIsICZ3aGljaCwgJmZpcnN0LCAmaW50ZXJ2YWwpKQotICAgIHJldHVybiBOVUxMOwotCi0gICAgdGltZXZhbF9mcm9tX2RvdWJsZShmaXJzdCwgJm5ldy5pdF92YWx1ZSk7CisgICAgdGltZXZhbF9mcm9tX2RvdWJsZShzZWNvbmRzLCAmbmV3Lml0X3ZhbHVlKTsKICAgICB0aW1ldmFsX2Zyb21fZG91YmxlKGludGVydmFsLCAmbmV3Lml0X2ludGVydmFsKTsKICAgICAvKiBMZXQgT1MgY2hlY2sgIndoaWNoIiB2YWx1ZSAqLwogICAgIGlmIChzZXRpdGltZXIod2hpY2gsICZuZXcsICZvbGQpICE9IDApIHsKLSAgICBQeUVycl9TZXRGcm9tRXJybm8oSXRpbWVyRXJyb3IpOwotICAgIHJldHVybiBOVUxMOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oSXRpbWVyRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICByZXR1cm4gaXRpbWVyX3JldHZhbCgmb2xkKTsKIH0KIAotUHlEb2NfU1RSVkFSKHNldGl0aW1lcl9kb2MsCi0ic2V0aXRpbWVyKHdoaWNoLCBzZWNvbmRzWywgaW50ZXJ2YWxdKVxuXAotXG5cCi1TZXRzIGdpdmVuIGl0aW1lciAob25lIG9mIElUSU1FUl9SRUFMLCBJVElNRVJfVklSVFVBTFxuXAotb3IgSVRJTUVSX1BST0YpIHRvIGZpcmUgYWZ0ZXIgdmFsdWUgc2Vjb25kcyBhbmQgYWZ0ZXJcblwKLXRoYXQgZXZlcnkgaW50ZXJ2YWwgc2Vjb25kcy5cblwKLVRoZSBpdGltZXIgY2FuIGJlIGNsZWFyZWQgYnkgc2V0dGluZyBzZWNvbmRzIHRvIHplcm8uXG5cCi1cblwKLVJldHVybnMgb2xkIHZhbHVlcyBhcyBhIHR1cGxlOiAoZGVsYXksIGludGVydmFsKS4iKTsKICNlbmRpZgogCiAKICNpZmRlZiBIQVZFX0dFVElUSU1FUgorCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwuZ2V0aXRpbWVyCisKKyAgICB3aGljaDogICAgaW50CisgICAgLworCitSZXR1cm5zIGN1cnJlbnQgdmFsdWUgb2YgZ2l2ZW4gaXRpbWVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2lnbmFsX2dldGl0aW1lcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitzaWduYWxfZ2V0aXRpbWVyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHdoaWNoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQxMzQ5YWIxOGFhZGM1NjkgaW5wdXQ9ZjdkMjFkMzhmMzQ5MDYyN10qLwogewotICAgIGludCB3aGljaDsKICAgICBzdHJ1Y3QgaXRpbWVydmFsIG9sZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpnZXRpdGltZXIiLCAmd2hpY2gpKQotICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKGdldGl0aW1lcih3aGljaCwgJm9sZCkgIT0gMCkgewotICAgIFB5RXJyX1NldEZyb21FcnJubyhJdGltZXJFcnJvcik7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhJdGltZXJFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIHJldHVybiBpdGltZXJfcmV0dmFsKCZvbGQpOwogfQogCi1QeURvY19TVFJWQVIoZ2V0aXRpbWVyX2RvYywKLSJnZXRpdGltZXIod2hpY2gpXG5cCi1cblwKLVJldHVybnMgY3VycmVudCB2YWx1ZSBvZiBnaXZlbiBpdGltZXIuIik7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoUFlQVEhSRUFEX1NJR01BU0spIHx8IGRlZmluZWQoSEFWRV9TSUdXQUlUKSB8fCBcCkBAIC02MTQsMjEgKzgxNywyOCBAQAogI2VuZGlmCiAKICNpZmRlZiBQWVBUSFJFQURfU0lHTUFTSworCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwucHRocmVhZF9zaWdtYXNrCisKKyAgICBob3c6ICBpbnQKKyAgICBtYXNrOiBvYmplY3QKKyAgICAvCisKK0ZldGNoIGFuZC9vciBjaGFuZ2UgdGhlIHNpZ25hbCBtYXNrIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNpZ25hbF9wdGhyZWFkX3NpZ21hc2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorc2lnbmFsX3B0aHJlYWRfc2lnbWFza19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBob3csIFB5T2JqZWN0ICptYXNrKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWIwNDNhOWYwZWViMWUwNzUgaW5wdXQ9ZjNiN2Q3YTYxYjdiODI4M10qLwogewotICAgIGludCBob3c7Ci0gICAgUHlPYmplY3QgKnNpZ25hbHM7Ci0gICAgc2lnc2V0X3QgbWFzaywgcHJldmlvdXM7CisgICAgc2lnc2V0X3QgbmV3bWFzaywgcHJldmlvdXM7CiAgICAgaW50IGVycjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86cHRocmVhZF9zaWdtYXNrIiwgJmhvdywgJnNpZ25hbHMpKQorICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQobWFzaywgJm5ld21hc2spKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQoc2lnbmFscywgJm1hc2spKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGVyciA9IHB0aHJlYWRfc2lnbWFzayhob3csICZtYXNrLCAmcHJldmlvdXMpOworICAgIGVyciA9IHB0aHJlYWRfc2lnbWFzayhob3csICZuZXdtYXNrLCAmcHJldmlvdXMpOwogICAgIGlmIChlcnIgIT0gMCkgewogICAgICAgICBlcnJubyA9IGVycjsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwpAQCAtNjQyLDE2ICs4NTIsMjMgQEAKICAgICByZXR1cm4gc2lnc2V0X3RvX3NldChwcmV2aW91cyk7CiB9CiAKLVB5RG9jX1NUUlZBUihzaWduYWxfcHRocmVhZF9zaWdtYXNrX2RvYywKLSJwdGhyZWFkX3NpZ21hc2soaG93LCBtYXNrKSAtPiBvbGQgbWFza1xuXAotXG5cCi1GZXRjaCBhbmQvb3IgY2hhbmdlIHRoZSBzaWduYWwgbWFzayBvZiB0aGUgY2FsbGluZyB0aHJlYWQuIik7CiAjZW5kaWYgICAvKiAjaWZkZWYgUFlQVEhSRUFEX1NJR01BU0sgKi8KIAogCiAjaWZkZWYgSEFWRV9TSUdQRU5ESU5HCisKKy8qW2NsaW5pYyBpbnB1dF0KK3NpZ25hbC5zaWdwZW5kaW5nCisKK0V4YW1pbmUgcGVuZGluZyBzaWduYWxzLgorCitSZXR1cm5zIGEgc2V0IG9mIHNpZ25hbCBudW1iZXJzIHRoYXQgYXJlIHBlbmRpbmcgZm9yIGRlbGl2ZXJ5IHRvCit0aGUgY2FsbGluZyB0aHJlYWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfc2lncGVuZGluZyhQeU9iamVjdCAqc2VsZikKK3NpZ25hbF9zaWdwZW5kaW5nX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZjRjZWQ4MDNlN2U1MWRkIGlucHV0PWUwMDM2YzAxNmY4NzRlMjldKi8KIHsKICAgICBpbnQgZXJyOwogICAgIHNpZ3NldF90IG1hc2s7CkBAIC02NjEsMjUgKzg3OCwzMiBAQAogICAgIHJldHVybiBzaWdzZXRfdG9fc2V0KG1hc2spOwogfQogCi1QeURvY19TVFJWQVIoc2lnbmFsX3NpZ3BlbmRpbmdfZG9jLAotInNpZ3BlbmRpbmcoKSAtPiBsaXN0XG5cCi1cblwKLUV4YW1pbmUgcGVuZGluZyBzaWduYWxzLiIpOwogI2VuZGlmICAgLyogI2lmZGVmIEhBVkVfU0lHUEVORElORyAqLwogCiAKICNpZmRlZiBIQVZFX1NJR1dBSVQKKworLypbY2xpbmljIGlucHV0XQorc2lnbmFsLnNpZ3dhaXQKKworICAgIHNpZ3NldDogb2JqZWN0CisgICAgLworCitXYWl0IGZvciBhIHNpZ25hbC4KKworU3VzcGVuZCBleGVjdXRpb24gb2YgdGhlIGNhbGxpbmcgdGhyZWFkIHVudGlsIHRoZSBkZWxpdmVyeSBvZiBvbmUgb2YgdGhlCitzaWduYWxzIHNwZWNpZmllZCBpbiB0aGUgc2lnbmFsIHNldCBzaWdzZXQuICBUaGUgZnVuY3Rpb24gYWNjZXB0cyB0aGUgc2lnbmFsCithbmQgcmV0dXJucyB0aGUgc2lnbmFsIG51bWJlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNpZ25hbF9zaWd3YWl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3NpZ25hbF9zaWd3YWl0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzaWdzZXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGFlNTMwNDhiMDMzNmE1YyBpbnB1dD0xMWFmMmQ4MmQ4M2MyZTk0XSovCiB7Ci0gICAgUHlPYmplY3QgKnNpZ25hbHM7CiAgICAgc2lnc2V0X3Qgc2V0OwogICAgIGludCBlcnIsIHNpZ251bTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpzaWd3YWl0IiwgJnNpZ25hbHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQoc2lnbmFscywgJnNldCkpCisgICAgaWYgKGl0ZXJhYmxlX3RvX3NpZ3NldChzaWdzZXQsICZzZXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTY5MywxMSArOTE3LDggQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNpZ251bSk7CiB9CiAKLVB5RG9jX1NUUlZBUihzaWduYWxfc2lnd2FpdF9kb2MsCi0ic2lnd2FpdChzaWdzZXQpIC0+IHNpZ251bVxuXAotXG5cCi1XYWl0IGEgc2lnbmFsLiIpOwotI2VuZGlmICAgLyogI2lmZGVmIEhBVkVfU0lHUEVORElORyAqLworI2VuZGlmICAgLyogI2lmZGVmIEhBVkVfU0lHV0FJVCAqLworCiAKICNpZiBkZWZpbmVkKEhBVkVfU0lHV0FJVElORk8pIHx8IGRlZmluZWQoSEFWRV9TSUdUSU1FRFdBSVQpCiBzdGF0aWMgaW50IGluaXRpYWxpemVkOwpAQCAtNzUyLDEwMCArOTczLDEzNiBAQAogI2VuZGlmCiAKICNpZmRlZiBIQVZFX1NJR1dBSVRJTkZPCisKKy8qW2NsaW5pYyBpbnB1dF0KK3NpZ25hbC5zaWd3YWl0aW5mbworCisgICAgc2lnc2V0OiBvYmplY3QKKyAgICAvCisKK1dhaXQgc3luY2hyb25vdXNseSB1bnRpbCBvbmUgb2YgdGhlIHNpZ25hbHMgaW4gKnNpZ3NldCogaXMgZGVsaXZlcmVkLgorCitSZXR1cm5zIGEgc3RydWN0X3NpZ2luZm8gY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2lnbmFsLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2lnbmFsX3NpZ3dhaXRpbmZvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3NpZ25hbF9zaWd3YWl0aW5mbyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc2lnc2V0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiYjUzYjA3ZTVlOTI2YjUgaW5wdXQ9ZjM3NzlhNzRhOTkxZTE3MV0qLwogewotICAgIFB5T2JqZWN0ICpzaWduYWxzOwogICAgIHNpZ3NldF90IHNldDsKICAgICBzaWdpbmZvX3Qgc2k7CiAgICAgaW50IGVycjsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpzaWd3YWl0aW5mbyIsICZzaWduYWxzKSkKKyAgICBpZiAoaXRlcmFibGVfdG9fc2lnc2V0KHNpZ3NldCwgJnNldCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGl0ZXJhYmxlX3RvX3NpZ3NldChzaWduYWxzLCAmc2V0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZXJyID0gc2lnd2FpdGluZm8oJnNldCwgJnNpKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBlcnIgPSBzaWd3YWl0aW5mbygmc2V0LCAmc2kpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKGVyciA9PSAtMQorICAgICAgICAgICAgICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKICAgICBpZiAoZXJyID09IC0xKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpIDogTlVMTDsKIAogICAgIHJldHVybiBmaWxsX3NpZ2luZm8oJnNpKTsKIH0KIAotUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWd3YWl0aW5mb19kb2MsCi0ic2lnd2FpdGluZm8oc2lnc2V0KSAtPiBzdHJ1Y3Rfc2lnaW5mb1xuXAotXG5cCi1XYWl0IHN5bmNocm9ub3VzbHkgZm9yIGEgc2lnbmFsIHVudGlsIG9uZSBvZiB0aGUgc2lnbmFscyBpbiAqc2lnc2V0KiBpc1xuXAotZGVsaXZlcmVkLlxuXAotUmV0dXJucyBhIHN0cnVjdF9zaWdpbmZvIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNpZ25hbC4iKTsKICNlbmRpZiAgIC8qICNpZmRlZiBIQVZFX1NJR1dBSVRJTkZPICovCiAKICNpZmRlZiBIQVZFX1NJR1RJTUVEV0FJVAorCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwuc2lndGltZWR3YWl0CisKKyAgICBzaWdzZXQ6ICBvYmplY3QKKyAgICB0aW1lb3V0IGFzIHRpbWVvdXRfb2JqOiBvYmplY3QKKyAgICAvCisKK0xpa2Ugc2lnd2FpdGluZm8oKSwgYnV0IHdpdGggYSB0aW1lb3V0LgorCitUaGUgdGltZW91dCBpcyBzcGVjaWZpZWQgaW4gc2Vjb25kcywgd2l0aCBmbG9hdGluZyBwb2ludCBudW1iZXJzIGFsbG93ZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfc2lndGltZWR3YWl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3NpZ25hbF9zaWd0aW1lZHdhaXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc2lnc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0aW1lb3V0X29iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jMTk2MGI1Y2VhMTM5OTI5IGlucHV0PTUzZmQ0ZWEzZTM3MjRlYjhdKi8KIHsKLSAgICBQeU9iamVjdCAqc2lnbmFscywgKnRpbWVvdXQ7Ci0gICAgc3RydWN0IHRpbWVzcGVjIGJ1ZjsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7CiAgICAgc2lnc2V0X3Qgc2V0OwogICAgIHNpZ2luZm9fdCBzaTsKLSAgICB0aW1lX3QgdHZfc2VjOwotICAgIGxvbmcgdHZfbnNlYzsKLSAgICBpbnQgZXJyOworICAgIGludCByZXM7CisgICAgX1B5VGltZV90IHRpbWVvdXQsIGRlYWRsaW5lLCBtb25vdG9uaWM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POnNpZ3RpbWVkd2FpdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzaWduYWxzLCAmdGltZW91dCkpCisgICAgaWYgKF9QeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoJnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9vYmosIF9QeVRpbWVfUk9VTkRfQ0VJTElORykgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXNwZWModGltZW91dCwgJnR2X3NlYywgJnR2X25zZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX1JPVU5EX0RPV04pID09IC0xKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBidWYudHZfc2VjID0gdHZfc2VjOwotICAgIGJ1Zi50dl9uc2VjID0gdHZfbnNlYzsKLQotICAgIGlmIChidWYudHZfc2VjIDwgMCB8fCBidWYudHZfbnNlYyA8IDApIHsKKyAgICBpZiAodGltZW91dCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0aW1lb3V0IG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQoc2lnbmFscywgJnNldCkpCisgICAgaWYgKGl0ZXJhYmxlX3RvX3NpZ3NldChzaWdzZXQsICZzZXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBlcnIgPSBzaWd0aW1lZHdhaXQoJnNldCwgJnNpLCAmYnVmKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChlcnIgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikKLSAgICAgICAgICAgIFB5X1JFVFVSTl9OT05FOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgIH0KKyAgICBkZWFkbGluZSA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKSArIHRpbWVvdXQ7CisKKyAgICBkbyB7CisgICAgICAgIGlmIChfUHlUaW1lX0FzVGltZXNwZWModGltZW91dCwgJnRzKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlcyA9IHNpZ3RpbWVkd2FpdCgmc2V0LCAmc2ksICZ0cyk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKHJlcyAhPSAtMSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgeworICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikKKyAgICAgICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICB9CisKKyAgICAgICAgLyogc2lndGltZWR3YWl0KCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIChFSU5UUikgKi8KKyAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgbW9ub3RvbmljID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSBtb25vdG9uaWM7CisgICAgICAgIGlmICh0aW1lb3V0IDwgMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0gd2hpbGUgKDEpOwogCiAgICAgcmV0dXJuIGZpbGxfc2lnaW5mbygmc2kpOwogfQogCi1QeURvY19TVFJWQVIoc2lnbmFsX3NpZ3RpbWVkd2FpdF9kb2MsCi0ic2lndGltZWR3YWl0KHNpZ3NldCwgKHRpbWVvdXRfc2VjLCB0aW1lb3V0X25zZWMpKSAtPiBzdHJ1Y3Rfc2lnaW5mb1xuXAotXG5cCi1MaWtlIHNpZ3dhaXRpbmZvKCksIGJ1dCB3aXRoIGEgdGltZW91dCBzcGVjaWZpZWQgYXMgYSB0dXBsZSBvZiAoc2Vjb25kcyxcblwKLW5hbm9zZWNvbmRzKS4iKTsKICNlbmRpZiAgIC8qICNpZmRlZiBIQVZFX1NJR1RJTUVEV0FJVCAqLwogCiAKICNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9LSUxMKSAmJiBkZWZpbmVkKFdJVEhfVEhSRUFEKQorCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwucHRocmVhZF9raWxsCisKKyAgICB0aHJlYWRfaWQ6ICBsb25nCisgICAgc2lnbmFsbnVtOiAgaW50CisgICAgLworCitTZW5kIGEgc2lnbmFsIHRvIGEgdGhyZWFkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2lnbmFsX3B0aHJlYWRfa2lsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitzaWduYWxfcHRocmVhZF9raWxsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgbG9uZyB0aHJlYWRfaWQsIGludCBzaWduYWxudW0pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzVhZWQyNzEzYzc1NmQ3YSBpbnB1dD03N2VkNmEzYjZmMmE4MTIyXSovCiB7Ci0gICAgbG9uZyB0aWQ7Ci0gICAgaW50IHNpZ251bTsKICAgICBpbnQgZXJyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJsaTpwdGhyZWFkX2tpbGwiLCAmdGlkLCAmc2lnbnVtKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBlcnIgPSBwdGhyZWFkX2tpbGwoKHB0aHJlYWRfdCl0aWQsIHNpZ251bSk7CisgICAgZXJyID0gcHRocmVhZF9raWxsKChwdGhyZWFkX3QpdGhyZWFkX2lkLCBzaWduYWxudW0pOwogICAgIGlmIChlcnIgIT0gMCkgewogICAgICAgICBlcnJubyA9IGVycjsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwpAQCAtODU5LDYyICsxMTE2LDI5IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihzaWduYWxfcHRocmVhZF9raWxsX2RvYywKLSJwdGhyZWFkX2tpbGwodGhyZWFkX2lkLCBzaWdudW0pXG5cCi1cblwKLVNlbmQgYSBzaWduYWwgdG8gYSB0aHJlYWQuIik7CiAjZW5kaWYgICAvKiAjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfS0lMTCkgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkgKi8KIAogCiAKLS8qIExpc3Qgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSAqLworLyogTGlzdCBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIC0tIHNvbWUgb2YgdGhlIG1ldGhvZGRlZnMgYXJlCisgICBkZWZpbmVkIHRvIG5vdGhpbmcgaWYgdGhlIGNvcnJlc3BvbmRpbmcgQyBmdW5jdGlvbiBpcyBub3QgYXZhaWxhYmxlLiAqLwogc3RhdGljIFB5TWV0aG9kRGVmIHNpZ25hbF9tZXRob2RzW10gPSB7Ci0jaWZkZWYgSEFWRV9BTEFSTQotICAgIHsiYWxhcm0iLCAgICAgICAgICAgICAgICAgICBzaWduYWxfYWxhcm0sIE1FVEhfVkFSQVJHUywgYWxhcm1fZG9jfSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfU0VUSVRJTUVSCi0gICAgeyJzZXRpdGltZXIiLCAgICAgICBzaWduYWxfc2V0aXRpbWVyLCBNRVRIX1ZBUkFSR1MsIHNldGl0aW1lcl9kb2N9LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9HRVRJVElNRVIKLSAgICB7ImdldGl0aW1lciIsICAgICAgIHNpZ25hbF9nZXRpdGltZXIsIE1FVEhfVkFSQVJHUywgZ2V0aXRpbWVyX2RvY30sCi0jZW5kaWYKLSAgICB7InNpZ25hbCIsICAgICAgICAgICAgICAgICAgc2lnbmFsX3NpZ25hbCwgTUVUSF9WQVJBUkdTLCBzaWduYWxfZG9jfSwKLSAgICB7ImdldHNpZ25hbCIsICAgICAgICAgICAgICAgc2lnbmFsX2dldHNpZ25hbCwgTUVUSF9WQVJBUkdTLCBnZXRzaWduYWxfZG9jfSwKKyAgICB7ImRlZmF1bHRfaW50X2hhbmRsZXIiLCBzaWduYWxfZGVmYXVsdF9pbnRfaGFuZGxlciwgTUVUSF9WQVJBUkdTLCBkZWZhdWx0X2ludF9oYW5kbGVyX2RvY30sCisgICAgU0lHTkFMX0FMQVJNX01FVEhPRERFRgorICAgIFNJR05BTF9TRVRJVElNRVJfTUVUSE9EREVGCisgICAgU0lHTkFMX0dFVElUSU1FUl9NRVRIT0RERUYKKyAgICBTSUdOQUxfU0lHTkFMX01FVEhPRERFRgorICAgIFNJR05BTF9HRVRTSUdOQUxfTUVUSE9EREVGCiAgICAgeyJzZXRfd2FrZXVwX2ZkIiwgICAgICAgICAgIHNpZ25hbF9zZXRfd2FrZXVwX2ZkLCBNRVRIX1ZBUkFSR1MsIHNldF93YWtldXBfZmRfZG9jfSwKLSNpZmRlZiBIQVZFX1NJR0lOVEVSUlVQVAotICAgIHsic2lnaW50ZXJydXB0IiwgICAgICAgICAgICBzaWduYWxfc2lnaW50ZXJydXB0LCBNRVRIX1ZBUkFSR1MsIHNpZ2ludGVycnVwdF9kb2N9LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9QQVVTRQotICAgIHsicGF1c2UiLCAgICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3BhdXNlLAotICAgICBNRVRIX05PQVJHUywgcGF1c2VfZG9jfSwKLSNlbmRpZgotICAgIHsiZGVmYXVsdF9pbnRfaGFuZGxlciIsIHNpZ25hbF9kZWZhdWx0X2ludF9oYW5kbGVyLAotICAgICBNRVRIX1ZBUkFSR1MsIGRlZmF1bHRfaW50X2hhbmRsZXJfZG9jfSwKLSNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9LSUxMKSAmJiBkZWZpbmVkKFdJVEhfVEhSRUFEKQotICAgIHsicHRocmVhZF9raWxsIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3B0aHJlYWRfa2lsbCwKLSAgICAgTUVUSF9WQVJBUkdTLCBzaWduYWxfcHRocmVhZF9raWxsX2RvY30sCi0jZW5kaWYKLSNpZmRlZiBQWVBUSFJFQURfU0lHTUFTSwotICAgIHsicHRocmVhZF9zaWdtYXNrIiwgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3B0aHJlYWRfc2lnbWFzaywKLSAgICAgTUVUSF9WQVJBUkdTLCBzaWduYWxfcHRocmVhZF9zaWdtYXNrX2RvY30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NJR1BFTkRJTkcKLSAgICB7InNpZ3BlbmRpbmciLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zaWdwZW5kaW5nLAotICAgICBNRVRIX05PQVJHUywgc2lnbmFsX3NpZ3BlbmRpbmdfZG9jfSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfU0lHV0FJVAotICAgIHsic2lnd2FpdCIsICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3dhaXQsCi0gICAgIE1FVEhfVkFSQVJHUywgc2lnbmFsX3NpZ3dhaXRfZG9jfSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfU0lHV0FJVElORk8KLSAgICB7InNpZ3dhaXRpbmZvIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zaWd3YWl0aW5mbywKLSAgICAgTUVUSF9WQVJBUkdTLCBzaWduYWxfc2lnd2FpdGluZm9fZG9jfSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfU0lHVElNRURXQUlUCi0gICAgeyJzaWd0aW1lZHdhaXQiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfc2lndGltZWR3YWl0LAotICAgICBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9zaWd0aW1lZHdhaXRfZG9jfSwKLSNlbmRpZgotICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KKyAgICBTSUdOQUxfU0lHSU5URVJSVVBUX01FVEhPRERFRgorICAgIFNJR05BTF9QQVVTRV9NRVRIT0RERUYKKyAgICBTSUdOQUxfUFRIUkVBRF9LSUxMX01FVEhPRERFRgorICAgIFNJR05BTF9QVEhSRUFEX1NJR01BU0tfTUVUSE9EREVGCisgICAgU0lHTkFMX1NJR1BFTkRJTkdfTUVUSE9EREVGCisgICAgU0lHTkFMX1NJR1dBSVRfTUVUSE9EREVGCisgICAgU0lHTkFMX1NJR1dBSVRJTkZPX01FVEhPRERFRgorICAgIFNJR05BTF9TSUdUSU1FRFdBSVRfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogCkBAIC05NTYsNyArMTE4MCw3IEBACiAKIHN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgc2lnbmFsbW9kdWxlID0gewogICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKLSAgICAic2lnbmFsIiwKKyAgICAiX3NpZ25hbCIsCiAgICAgbW9kdWxlX2RvYywKICAgICAtMSwKICAgICBzaWduYWxfbWV0aG9kcywKQEAgLTk2Nyw3ICsxMTkxLDcgQEAKIH07CiAKIFB5TU9ESU5JVF9GVU5DCi1QeUluaXRfc2lnbmFsKHZvaWQpCitQeUluaXRfX3NpZ25hbCh2b2lkKQogewogICAgIFB5T2JqZWN0ICptLCAqZCwgKng7CiAgICAgaW50IGk7CkBAIC0xMDQyLDggKzEyNjYsNyBAQAogICAgIGlmIChIYW5kbGVyc1tTSUdJTlRdLmZ1bmMgPT0gRGVmYXVsdEhhbmRsZXIpIHsKICAgICAgICAgLyogSW5zdGFsbCBkZWZhdWx0IGludCBoYW5kbGVyICovCiAgICAgICAgIFB5X0lOQ1JFRihJbnRIYW5kbGVyKTsKLSAgICAgICAgUHlfREVDUkVGKEhhbmRsZXJzW1NJR0lOVF0uZnVuYyk7Ci0gICAgICAgIEhhbmRsZXJzW1NJR0lOVF0uZnVuYyA9IEludEhhbmRsZXI7CisgICAgICAgIFB5X1NFVFJFRihIYW5kbGVyc1tTSUdJTlRdLmZ1bmMsIEludEhhbmRsZXIpOwogICAgICAgICBvbGRfc2lnaW50aGFuZGxlciA9IFB5T1Nfc2V0c2lnKFNJR0lOVCwgc2lnbmFsX2hhbmRsZXIpOwogICAgIH0KIApAQCAtMTM4MCw3ICsxNjAzLDcgQEAKIHZvaWQKIFB5T1NfSW5pdEludGVycnVwdHModm9pZCkKIHsKLSAgICBQeU9iamVjdCAqbSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgic2lnbmFsIik7CisgICAgUHlPYmplY3QgKm0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIl9zaWduYWwiKTsKICAgICBpZiAobSkgewogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYyBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKaW5kZXggMjMwMTllZS4uYmFlOTYzNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCkBAIC0xMjEsNyArMTIxLDcgQEAKIGdldHNvY2tuYW1lKCkgLS0gcmV0dXJuIGxvY2FsIGFkZHJlc3NcblwKIGdldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWVbLCBidWZsZW5dKSAtLSBnZXQgc29ja2V0IG9wdGlvbnNcblwKIGdldHRpbWVvdXQoKSAtLSByZXR1cm4gdGltZW91dCBvciBOb25lXG5cCi1saXN0ZW4obikgLS0gc3RhcnQgbGlzdGVuaW5nIGZvciBpbmNvbWluZyBjb25uZWN0aW9uc1xuXAorbGlzdGVuKFtuXSkgLS0gc3RhcnQgbGlzdGVuaW5nIGZvciBpbmNvbWluZyBjb25uZWN0aW9uc1xuXAogcmVjdihidWZsZW5bLCBmbGFnc10pIC0tIHJlY2VpdmUgZGF0YVxuXAogcmVjdl9pbnRvKGJ1ZmZlclssIG5ieXRlc1ssIGZsYWdzXV0pIC0tIHJlY2VpdmUgZGF0YSAoaW50byBhIGJ1ZmZlcilcblwKIHJlY3Zmcm9tKGJ1ZmxlblssIGZsYWdzXSkgLS0gcmVjZWl2ZSBkYXRhIGFuZCBzZW5kZXJcJ3MgYWRkcmVzc1xuXApAQCAtMjg0LDE0ICsyODQsMTUgQEAKICMgIGluY2x1ZGUgPGZjbnRsLmg+CiAjIGVuZGlmCiAKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxODAwCisvKiBQcm92aWRlcyB0aGUgSXNXaW5kb3dzN1NQMU9yR3JlYXRlcigpIGZ1bmN0aW9uICovCisjaW5jbHVkZSA8VmVyc2lvbkhlbHBlcnMuaD4KKyNlbmRpZgorCiAjZW5kaWYKIAogI2luY2x1ZGUgPHN0ZGRlZi5oPgogCi0jaWZuZGVmIG9mZnNldG9mCi0jIGRlZmluZSBvZmZzZXRvZih0eXBlLCBtZW1iZXIpICgoc2l6ZV90KSgmKCh0eXBlICopMCktPm1lbWJlcikpCi0jZW5kaWYKLQogI2lmbmRlZiBPX05PTkJMT0NLCiAjIGRlZmluZSBPX05PTkJMT0NLIE9fTkRFTEFZCiAjZW5kaWYKQEAgLTQ1OSw3ICs0NjAsNyBAQAogI2Vsc2UKIC8qIElmIHRoZXJlJ3Mgbm8gdGltZW91dCBsZWZ0LCB3ZSBkb24ndCBoYXZlIHRvIGNhbGwgc2VsZWN0LCBzbyBpdCdzIGEgc2FmZSwKICAqIGxpdHRsZSB3aGl0ZSBsaWUuICovCi0jZGVmaW5lIElTX1NFTEVDVEFCTEUocykgKF9QeUlzU2VsZWN0YWJsZV9mZCgocyktPnNvY2tfZmQpIHx8IChzKS0+c29ja190aW1lb3V0IDw9IDAuMCkKKyNkZWZpbmUgSVNfU0VMRUNUQUJMRShzKSAoX1B5SXNTZWxlY3RhYmxlX2ZkKChzKS0+c29ja19mZCkgfHwgKHMpLT5zb2NrX3RpbWVvdXQgPD0gMCkKICNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QqCkBAIC00ODEsNiArNDgyLDE5IEBACiAjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKKyMgIGRlZmluZSBHRVRfU09DS19FUlJPUiBXU0FHZXRMYXN0RXJyb3IoKQorIyAgZGVmaW5lIFNFVF9TT0NLX0VSUk9SKGVycikgV1NBU2V0TGFzdEVycm9yKGVycikKKyMgIGRlZmluZSBTT0NLX1RJTUVPVVRfRVJSIFdTQUVXT1VMREJMT0NLCisjICBkZWZpbmUgU09DS19JTlBST0dSRVNTX0VSUiBXU0FFV09VTERCTE9DSworI2Vsc2UKKyMgIGRlZmluZSBHRVRfU09DS19FUlJPUiBlcnJubworIyAgZGVmaW5lIFNFVF9TT0NLX0VSUk9SKGVycikgZG8geyBlcnJubyA9IGVycjsgfSB3aGlsZSAoMCkKKyMgIGRlZmluZSBTT0NLX1RJTUVPVVRfRVJSIEVXT1VMREJMT0NLCisjICBkZWZpbmUgU09DS19JTlBST0dSRVNTX0VSUiBFSU5QUk9HUkVTUworI2VuZGlmCisKKworI2lmZGVmIE1TX1dJTkRPV1MKIC8qIERvZXMgV1NBU29ja2V0KCkgc3VwcG9ydCB0aGUgV1NBX0ZMQUdfTk9fSEFORExFX0lOSEVSSVQgZmxhZz8gKi8KIHN0YXRpYyBpbnQgc3VwcG9ydF93c2Ffbm9faW5oZXJpdCA9IC0xOwogI2VuZGlmCkBAIC01NTIsNiArNTY2LDkgQEAKIHN0YXRpYyBpbnQKIGludGVybmFsX3NldGJsb2NraW5nKFB5U29ja2V0U29ja09iamVjdCAqcywgaW50IGJsb2NrKQogeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB1X2xvbmcgYXJnOworI2VuZGlmCiAjaWYgIWRlZmluZWQoTVNfV0lORE9XUykgXAogICAgICYmICEoKGRlZmluZWQoSEFWRV9TWVNfSU9DVExfSCkgJiYgZGVmaW5lZChGSU9OQklPKSkpCiAgICAgaW50IGRlbGF5X2ZsYWcsIG5ld19kZWxheV9mbGFnOwpAQCAtNTc4LDggKzU5NSw4IEBACiAgICAgICAgIGZjbnRsKHMtPnNvY2tfZmQsIEZfU0VURkwsIG5ld19kZWxheV9mbGFnKTsKICNlbmRpZgogI2Vsc2UgLyogTVNfV0lORE9XUyAqLwotICAgIGJsb2NrID0gIWJsb2NrOwotICAgIGlvY3Rsc29ja2V0KHMtPnNvY2tfZmQsIEZJT05CSU8sICh1X2xvbmcqKSZibG9jayk7CisgICAgYXJnID0gIWJsb2NrOworICAgIGlvY3Rsc29ja2V0KHMtPnNvY2tfZmQsIEZJT05CSU8sICZhcmcpOwogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCkBAIC01ODcsNjAgKzYwNCw3OSBAQAogICAgIHJldHVybiAxOwogfQogCi0vKiBEbyBhIHNlbGVjdCgpL3BvbGwoKSBvbiB0aGUgc29ja2V0LCBpZiBuZWNlc3NhcnkgKHNvY2tfdGltZW91dCA+IDApLgotICAgVGhlIGFyZ3VtZW50IHdyaXRpbmcgaW5kaWNhdGVzIHRoZSBkaXJlY3Rpb24uCi0gICBUaGlzIGRvZXMgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbjsgd2UnbGwgbGV0IG91ciBjYWxsZXIgZG8gdGhhdAotICAgYWZ0ZXIgdGhleSd2ZSByZWFjcXVpcmVkIHRoZSBpbnRlcnByZXRlciBsb2NrLgotICAgUmV0dXJucyAxIG9uIHRpbWVvdXQsIC0xIG9uIGVycm9yLCAwIG90aGVyd2lzZS4gKi8KIHN0YXRpYyBpbnQKLWludGVybmFsX3NlbGVjdF9leChQeVNvY2tldFNvY2tPYmplY3QgKnMsIGludCB3cml0aW5nLCBkb3VibGUgaW50ZXJ2YWwpCitpbnRlcm5hbF9zZWxlY3QoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBpbnQgd3JpdGluZywgX1B5VGltZV90IGludGVydmFsLAorICAgICAgICAgICAgICAgIGludCBjb25uZWN0KQogewogICAgIGludCBuOworI2lmZGVmIEhBVkVfUE9MTAorICAgIHN0cnVjdCBwb2xsZmQgcG9sbGZkOworICAgIF9QeVRpbWVfdCBtczsKKyNlbHNlCisgICAgZmRfc2V0IGZkcywgZWZkczsKKyAgICBzdHJ1Y3QgdGltZXZhbCB0diwgKnR2cDsKKyNlbmRpZgogCi0gICAgLyogTm90aGluZyB0byBkbyB1bmxlc3Mgd2UncmUgaW4gdGltZW91dCBtb2RlIChub3Qgbm9uLWJsb2NraW5nKSAqLwotICAgIGlmIChzLT5zb2NrX3RpbWVvdXQgPD0gMC4wKQotICAgICAgICByZXR1cm4gMDsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIC8qIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIEdJTCBoZWxkICovCisgICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7CisjZW5kaWYKKworICAgIC8qIEVycm9yIGNvbmRpdGlvbiBpcyBmb3Igb3V0cHV0IG9ubHkgKi8KKyAgICBhc3NlcnQoIShjb25uZWN0ICYmICF3cml0aW5nKSk7CiAKICAgICAvKiBHdWFyZCBhZ2FpbnN0IGNsb3NlZCBzb2NrZXQgKi8KICAgICBpZiAocy0+c29ja19mZCA8IDApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgLyogSGFuZGxpbmcgdGhpcyBjb25kaXRpb24gaGVyZSBzaW1wbGlmaWVzIHRoZSBzZWxlY3QgbG9vcHMgKi8KLSAgICBpZiAoaW50ZXJ2YWwgPCAwLjApCi0gICAgICAgIHJldHVybiAxOwotCiAgICAgLyogUHJlZmVyIHBvbGwsIGlmIGF2YWlsYWJsZSwgc2luY2UgeW91IGNhbiBwb2xsKCkgYW55IGZkCiAgICAgICogd2hpY2ggY2FuJ3QgYmUgZG9uZSB3aXRoIHNlbGVjdCgpLiAqLwogI2lmZGVmIEhBVkVfUE9MTAotICAgIHsKLSAgICAgICAgc3RydWN0IHBvbGxmZCBwb2xsZmQ7Ci0gICAgICAgIGludCB0aW1lb3V0OwotCi0gICAgICAgIHBvbGxmZC5mZCA9IHMtPnNvY2tfZmQ7Ci0gICAgICAgIHBvbGxmZC5ldmVudHMgPSB3cml0aW5nID8gUE9MTE9VVCA6IFBPTExJTjsKLQotICAgICAgICAvKiBzLT5zb2NrX3RpbWVvdXQgaXMgaW4gc2Vjb25kcywgdGltZW91dCBpbiBtcyAqLwotICAgICAgICB0aW1lb3V0ID0gKGludCkoaW50ZXJ2YWwgKiAxMDAwICsgMC41KTsKLSAgICAgICAgbiA9IHBvbGwoJnBvbGxmZCwgMSwgdGltZW91dCk7CisgICAgcG9sbGZkLmZkID0gcy0+c29ja19mZDsKKyAgICBwb2xsZmQuZXZlbnRzID0gd3JpdGluZyA/IFBPTExPVVQgOiBQT0xMSU47CisgICAgaWYgKGNvbm5lY3QpIHsKKyAgICAgICAgLyogT24gV2luZG93cywgdGhlIHNvY2tldCBiZWNvbWVzIHdyaXRhYmxlIG9uIGNvbm5lY3Rpb24gc3VjY2VzcywKKyAgICAgICAgICAgYnV0IGEgY29ubmVjdGlvbiBmYWlsdXJlIGlzIG5vdGlmaWVkIGFzIGFuIGVycm9yLiBPbiBQT1NJWCwgdGhlCisgICAgICAgICAgIHNvY2tldCBiZWNvbWVzIHdyaXRhYmxlIG9uIGNvbm5lY3Rpb24gc3VjY2VzcyBvciBvbiBjb25uZWN0aW9uCisgICAgICAgICAgIGZhaWx1cmUuICovCisgICAgICAgIHBvbGxmZC5ldmVudHMgfD0gUE9MTEVSUjsKICAgICB9CisKKyAgICAvKiBzLT5zb2NrX3RpbWVvdXQgaXMgaW4gc2Vjb25kcywgdGltZW91dCBpbiBtcyAqLworICAgIG1zID0gX1B5VGltZV9Bc01pbGxpc2Vjb25kcyhpbnRlcnZhbCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKKyAgICBhc3NlcnQobXMgPD0gSU5UX01BWCk7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOworICAgIG4gPSBwb2xsKCZwb2xsZmQsIDEsIChpbnQpbXMpOworICAgIFB5X0VORF9BTExPV19USFJFQURTOwogI2Vsc2UKLSAgICB7Ci0gICAgICAgIC8qIENvbnN0cnVjdCB0aGUgYXJndW1lbnRzIHRvIHNlbGVjdCAqLwotICAgICAgICBmZF9zZXQgZmRzOwotICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKLSAgICAgICAgdHYudHZfc2VjID0gKGludClpbnRlcnZhbDsKLSAgICAgICAgdHYudHZfdXNlYyA9IChpbnQpKChpbnRlcnZhbCAtIHR2LnR2X3NlYykgKiAxZTYpOwotICAgICAgICBGRF9aRVJPKCZmZHMpOwotICAgICAgICBGRF9TRVQocy0+c29ja19mZCwgJmZkcyk7Ci0KLSAgICAgICAgLyogU2VlIGlmIHRoZSBzb2NrZXQgaXMgcmVhZHkgKi8KLSAgICAgICAgaWYgKHdyaXRpbmcpCi0gICAgICAgICAgICBuID0gc2VsZWN0KFB5X1NBRkVfRE9XTkNBU1Qocy0+c29ja19mZCsxLCBTT0NLRVRfVCwgaW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgJmZkcywgTlVMTCwgJnR2KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbiA9IHNlbGVjdChQeV9TQUZFX0RPV05DQVNUKHMtPnNvY2tfZmQrMSwgU09DS0VUX1QsIGludCksCi0gICAgICAgICAgICAgICAgICAgICAgICZmZHMsIE5VTEwsIE5VTEwsICZ0dik7CisgICAgaWYgKGludGVydmFsID49IDApIHsKKyAgICAgICAgX1B5VGltZV9Bc1RpbWV2YWxfbm9yYWlzZShpbnRlcnZhbCwgJnR2LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworICAgICAgICB0dnAgPSAmdHY7CiAgICAgfQorICAgIGVsc2UKKyAgICAgICAgdHZwID0gTlVMTDsKKworICAgIEZEX1pFUk8oJmZkcyk7CisgICAgRkRfU0VUKHMtPnNvY2tfZmQsICZmZHMpOworICAgIEZEX1pFUk8oJmVmZHMpOworICAgIGlmIChjb25uZWN0KSB7CisgICAgICAgIC8qIE9uIFdpbmRvd3MsIHRoZSBzb2NrZXQgYmVjb21lcyB3cml0YWJsZSBvbiBjb25uZWN0aW9uIHN1Y2Nlc3MsCisgICAgICAgICAgIGJ1dCBhIGNvbm5lY3Rpb24gZmFpbHVyZSBpcyBub3RpZmllZCBhcyBhbiBlcnJvci4gT24gUE9TSVgsIHRoZQorICAgICAgICAgICBzb2NrZXQgYmVjb21lcyB3cml0YWJsZSBvbiBjb25uZWN0aW9uIHN1Y2Nlc3Mgb3Igb24gY29ubmVjdGlvbgorICAgICAgICAgICBmYWlsdXJlLiAqLworICAgICAgICBGRF9TRVQocy0+c29ja19mZCwgJmVmZHMpOworICAgIH0KKworICAgIC8qIFNlZSBpZiB0aGUgc29ja2V0IGlzIHJlYWR5ICovCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKKyAgICBpZiAod3JpdGluZykKKyAgICAgICAgbiA9IHNlbGVjdChQeV9TQUZFX0RPV05DQVNUKHMtPnNvY2tfZmQrMSwgU09DS0VUX1QsIGludCksCisgICAgICAgICAgICAgICAgICAgTlVMTCwgJmZkcywgJmVmZHMsIHR2cCk7CisgICAgZWxzZQorICAgICAgICBuID0gc2VsZWN0KFB5X1NBRkVfRE9XTkNBU1Qocy0+c29ja19mZCsxLCBTT0NLRVRfVCwgaW50KSwKKyAgICAgICAgICAgICAgICAgICAmZmRzLCBOVUxMLCAmZWZkcywgdHZwKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKICNlbmRpZgogCiAgICAgaWYgKG4gPCAwKQpAQCAtNjUwLDU2ICs2ODYsMTY4IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKy8qIENhbGwgYSBzb2NrZXQgZnVuY3Rpb24uCisKKyAgIE9uIGVycm9yLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBpZiBlcnIgaXMgc2V0LCBvciBmaWxsIGVyciBhbmQKKyAgIHJldHVybiAtMSBvdGhlcndpc2UuIElmIGEgc2lnbmFsIHdhcyByZWNlaXZlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIHJhaXNlZAorICAgYW4gZXhjZXB0aW9uLCByZXR1cm4gLTEsIGFuZCBzZXQgZXJyIHRvIC0xIGlmIGVyciBpcyBzZXQuCisKKyAgIE9uIHN1Y2Nlc3MsIHJldHVybiAwLCBhbmQgc2V0IGVyciB0byAwIGlmIGVyciBpcyBzZXQuCisKKyAgIElmIHRoZSBzb2NrZXQgaGFzIGEgdGltZW91dCwgd2FpdCB1bnRpbCB0aGUgc29ja2V0IGlzIHJlYWR5IGJlZm9yZSBjYWxsaW5nCisgICB0aGUgZnVuY3Rpb246IHdhaXQgdW50aWwgdGhlIHNvY2tldCBpcyB3cml0YWJsZSBpZiB3cml0aW5nIGlzIG5vbnplcm8sIHdhaXQKKyAgIHVudGlsIHRoZSBzb2NrZXQgcmVjZWl2ZWQgZGF0YSBvdGhlcndpc2UuCisKKyAgIElmIHRoZSBzb2NrZXQgZnVuY3Rpb24gaXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKGZhaWxlZCB3aXRoIEVJTlRSKTogcmV0cnkKKyAgIHRoZSBmdW5jdGlvbiwgZXhjZXB0IGlmIHRoZSBzaWduYWwgaGFuZGxlciByYWlzZWQgYW4gZXhjZXB0aW9uIChQRVAgNDc1KS4KKworICAgV2hlbiB0aGUgZnVuY3Rpb24gaXMgcmV0cmllZCwgcmVjb21wdXRlIHRoZSB0aW1lb3V0IHVzaW5nIGEgbW9ub3RvbmljIGNsb2NrLgorCisgICBzb2NrX2NhbGxfZXgoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBHSUwgaGVsZC4gVGhlIHNvY2tldCBmdW5jdGlvbiBpcworICAgY2FsbGVkIHdpdGggdGhlIEdJTCByZWxlYXNlZC4gKi8KIHN0YXRpYyBpbnQKLWludGVybmFsX3NlbGVjdChQeVNvY2tldFNvY2tPYmplY3QgKnMsIGludCB3cml0aW5nKQorc29ja19jYWxsX2V4KFB5U29ja2V0U29ja09iamVjdCAqcywKKyAgICAgICAgICAgICBpbnQgd3JpdGluZywKKyAgICAgICAgICAgICBpbnQgKCpzb2NrX2Z1bmMpIChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpLAorICAgICAgICAgICAgIHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgaW50IGNvbm5lY3QsCisgICAgICAgICAgICAgaW50ICplcnIsCisgICAgICAgICAgICAgX1B5VGltZV90IHRpbWVvdXQpCiB7Ci0gICAgcmV0dXJuIGludGVybmFsX3NlbGVjdF9leChzLCB3cml0aW5nLCBzLT5zb2NrX3RpbWVvdXQpOwotfQorICAgIGludCBoYXNfdGltZW91dCA9ICh0aW1lb3V0ID4gMCk7CisgICAgX1B5VGltZV90IGRlYWRsaW5lID0gMDsKKyAgICBpbnQgZGVhZGxpbmVfaW5pdGlhbGl6ZWQgPSAwOworICAgIGludCByZXM7CiAKLS8qCi0gICBUd28gbWFjcm9zIGZvciBhdXRvbWF0aWMgcmV0cnkgb2Ygc2VsZWN0KCkgaW4gY2FzZSBvZiBmYWxzZSBwb3NpdGl2ZXMKLSAgIChmb3IgZXhhbXBsZSwgc2VsZWN0KCkgY291bGQgaW5kaWNhdGUgYSBzb2NrZXQgaXMgcmVhZHkgZm9yIHJlYWRpbmcKLSAgICBidXQgdGhlIGRhdGEgdGhlbiBkaXNjYXJkZWQgYnkgdGhlIE9TIGJlY2F1c2Ugb2YgYSB3cm9uZyBjaGVja3N1bSkuCi0gICBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgdXNlOgorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgLyogc29ja19jYWxsKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgR0lMIGhlbGQuICovCisgICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7CisjZW5kaWYKIAotICAgIEJFR0lOX1NFTEVDVF9MT09QKHMpCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHRpbWVvdXQgPSBpbnRlcm5hbF9zZWxlY3RfZXgocywgMCwgaW50ZXJ2YWwpOwotICAgIGlmICghdGltZW91dCkKLSAgICAgICAgb3V0bGVuID0gcmVjdihzLT5zb2NrX2ZkLCBjYnVmLCBsZW4sIGZsYWdzKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmICh0aW1lb3V0ID09IDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF90aW1lb3V0LCAidGltZWQgb3V0Iik7CisgICAgLyogb3V0ZXIgbG9vcCB0byByZXRyeSBzZWxlY3QoKSB3aGVuIHNlbGVjdCgpIGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsCisgICAgICAgb3IgdG8gcmV0cnkgc2VsZWN0KCkrc29ja19mdW5jKCkgb24gZmFsc2UgcG9zaXRpdmUgKHNlZSBhYm92ZSkgKi8KKyAgICB3aGlsZSAoMSkgeworICAgICAgICAvKiBGb3IgY29ubmVjdCgpLCBwb2xsIGV2ZW4gZm9yIGJsb2NraW5nIHNvY2tldC4gVGhlIGNvbm5lY3Rpb24KKyAgICAgICAgICAgcnVucyBhc3luY2hyb25vdXNseS4gKi8KKyAgICAgICAgaWYgKGhhc190aW1lb3V0IHx8IGNvbm5lY3QpIHsKKyAgICAgICAgICAgIGlmIChoYXNfdGltZW91dCkgeworICAgICAgICAgICAgICAgIF9QeVRpbWVfdCBpbnRlcnZhbDsKKworICAgICAgICAgICAgICAgIGlmIChkZWFkbGluZV9pbml0aWFsaXplZCkgeworICAgICAgICAgICAgICAgICAgICAvKiByZWNvbXB1dGUgdGhlIHRpbWVvdXQgKi8KKyAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSBkZWFkbGluZSAtIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGRlYWRsaW5lX2luaXRpYWxpemVkID0gMTsKKyAgICAgICAgICAgICAgICAgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyB0aW1lb3V0OworICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbCA9IHRpbWVvdXQ7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGludGVydmFsID49IDApCisgICAgICAgICAgICAgICAgICAgIHJlcyA9IGludGVybmFsX3NlbGVjdChzLCB3cml0aW5nLCBpbnRlcnZhbCwgY29ubmVjdCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXMgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzID0gaW50ZXJuYWxfc2VsZWN0KHMsIHdyaXRpbmcsIHRpbWVvdXQsIGNvbm5lY3QpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgICAgICAgICAgaWYgKGVycikKKyAgICAgICAgICAgICAgICAgICAgKmVyciA9IEdFVF9TT0NLX0VSUk9SOworCisgICAgICAgICAgICAgICAgaWYgKENIRUNLX0VSUk5PKEVJTlRSKSkgeworICAgICAgICAgICAgICAgICAgICAvKiBzZWxlY3QoKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICplcnIgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8qIHJldHJ5IHNlbGVjdCgpICovCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qIHNlbGVjdCgpIGZhaWxlZCAqLworICAgICAgICAgICAgICAgIHMtPmVycm9yaGFuZGxlcigpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHJlcyA9PSAxKSB7CisgICAgICAgICAgICAgICAgaWYgKGVycikKKyAgICAgICAgICAgICAgICAgICAgKmVyciA9IFNPQ0tfVElNRU9VVF9FUlI7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIHRoZSBzb2NrZXQgaXMgcmVhZHkgKi8KKyAgICAgICAgfQorCisgICAgICAgIC8qIGlubmVyIGxvb3AgdG8gcmV0cnkgc29ja19mdW5jKCkgd2hlbiBzb2NrX2Z1bmMoKSBpcyBpbnRlcnJ1cHRlZAorICAgICAgICAgICBieSBhIHNpZ25hbCAqLworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgcmVzID0gc29ja19mdW5jKHMsIGRhdGEpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgICAgICAgICAgaWYgKHJlcykgeworICAgICAgICAgICAgICAgIC8qIHNvY2tfZnVuYygpIHN1Y2NlZWRlZCAqLworICAgICAgICAgICAgICAgIGlmIChlcnIpCisgICAgICAgICAgICAgICAgICAgICplcnIgPSAwOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZXJyKQorICAgICAgICAgICAgICAgICplcnIgPSBHRVRfU09DS19FUlJPUjsKKworICAgICAgICAgICAgaWYgKCFDSEVDS19FUlJOTyhFSU5UUikpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIC8qIHNvY2tfZnVuYygpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAqLworICAgICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKSB7CisgICAgICAgICAgICAgICAgaWYgKGVycikKKyAgICAgICAgICAgICAgICAgICAgKmVyciA9IC0xOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogcmV0cnkgc29ja19mdW5jKCkgKi8KKyAgICAgICAgfQorCisgICAgICAgIGlmIChzLT5zb2NrX3RpbWVvdXQgPiAwCisgICAgICAgICAgICAmJiAoQ0hFQ0tfRVJSTk8oRVdPVUxEQkxPQ0spIHx8IENIRUNLX0VSUk5PKEVBR0FJTikpKSB7CisgICAgICAgICAgICAvKiBGYWxzZSBwb3NpdGl2ZTogc29ja19mdW5jKCkgZmFpbGVkIHdpdGggRVdPVUxEQkxPQ0sgb3IgRUFHQUlOLgorCisgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc2VsZWN0KCkgY291bGQgaW5kaWNhdGUgYSBzb2NrZXQgaXMgcmVhZHkgZm9yCisgICAgICAgICAgICAgICByZWFkaW5nLCBidXQgdGhlIGRhdGEgdGhlbiBkaXNjYXJkZWQgYnkgdGhlIE9TIGJlY2F1c2Ugb2YgYQorICAgICAgICAgICAgICAgd3JvbmcgY2hlY2tzdW0uCisKKyAgICAgICAgICAgICAgIExvb3Agb24gc2VsZWN0KCkgdG8gcmVjaGVjayBmb3Igc29ja2V0IHJlYWR5bmVzcy4gKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLyogc29ja19mdW5jKCkgZmFpbGVkICovCisgICAgICAgIGlmICghZXJyKQorICAgICAgICAgICAgcy0+ZXJyb3JoYW5kbGVyKCk7CisgICAgICAgIC8qIGVsc2U6IGVyciB3YXMgYWxyZWFkeSBzZXQgYmVmb3JlICovCiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgRU5EX1NFTEVDVF9MT09QKHMpCi0qLworfQogCi0jZGVmaW5lIEJFR0lOX1NFTEVDVF9MT09QKHMpIFwKLSAgICB7IFwKLSAgICAgICAgX1B5VGltZV90aW1ldmFsIG5vdywgZGVhZGxpbmUgPSB7MCwgMH07IFwKLSAgICAgICAgZG91YmxlIGludGVydmFsID0gcy0+c29ja190aW1lb3V0OyBcCi0gICAgICAgIGludCBoYXNfdGltZW91dCA9IHMtPnNvY2tfdGltZW91dCA+IDAuMDsgXAotICAgICAgICBpZiAoaGFzX3RpbWVvdXQpIHsgXAotICAgICAgICAgICAgX1B5VGltZV9nZXR0aW1lb2ZkYXkoJm5vdyk7IFwKLSAgICAgICAgICAgIGRlYWRsaW5lID0gbm93OyBcCi0gICAgICAgICAgICBfUHlUaW1lX0FERF9TRUNPTkRTKGRlYWRsaW5lLCBzLT5zb2NrX3RpbWVvdXQpOyBcCi0gICAgICAgIH0gXAotICAgICAgICB3aGlsZSAoMSkgeyBcCi0gICAgICAgICAgICBlcnJubyA9IDA7IFwKK3N0YXRpYyBpbnQKK3NvY2tfY2FsbChQeVNvY2tldFNvY2tPYmplY3QgKnMsCisgICAgICAgICAgaW50IHdyaXRpbmcsCisgICAgICAgICAgaW50ICgqZnVuYykgKFB5U29ja2V0U29ja09iamVjdCAqcywgdm9pZCAqZGF0YSksCisgICAgICAgICAgdm9pZCAqZGF0YSkKK3sKKyAgICByZXR1cm4gc29ja19jYWxsX2V4KHMsIHdyaXRpbmcsIGZ1bmMsIGRhdGEsIDAsIE5VTEwsIHMtPnNvY2tfdGltZW91dCk7Cit9CiAKLSNkZWZpbmUgRU5EX1NFTEVDVF9MT09QKHMpIFwKLSAgICAgICAgICAgIGlmICghaGFzX3RpbWVvdXQgfHwgXAotICAgICAgICAgICAgICAgICghQ0hFQ0tfRVJSTk8oRVdPVUxEQkxPQ0spICYmICFDSEVDS19FUlJOTyhFQUdBSU4pKSkgXAotICAgICAgICAgICAgICAgIGJyZWFrOyBcCi0gICAgICAgICAgICBfUHlUaW1lX2dldHRpbWVvZmRheSgmbm93KTsgXAotICAgICAgICAgICAgaW50ZXJ2YWwgPSBfUHlUaW1lX0lOVEVSVkFMKG5vdywgZGVhZGxpbmUpOyBcCi0gICAgICAgIH0gXAotICAgIH0gXAogCiAvKiBJbml0aWFsaXplIGEgbmV3IHNvY2tldCBvYmplY3QuICovCiAKLXN0YXRpYyBkb3VibGUgZGVmYXVsdHRpbWVvdXQgPSAtMS4wOyAvKiBEZWZhdWx0IHRpbWVvdXQgZm9yIG5ldyBzb2NrZXRzICovCisvKiBEZWZhdWx0IHRpbWVvdXQgZm9yIG5ldyBzb2NrZXRzICovCitzdGF0aWMgX1B5VGltZV90IGRlZmF1bHR0aW1lb3V0ID0gX1BZVElNRV9GUk9NU0VDT05EUygtMSk7CiAKIHN0YXRpYyB2b2lkCiBpbml0X3NvY2tvYmplY3QoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLApAQCAtNzEzLDEyICs4NjEsMTIgQEAKICAgICBzLT5lcnJvcmhhbmRsZXIgPSAmc2V0X2Vycm9yOwogI2lmZGVmIFNPQ0tfTk9OQkxPQ0sKICAgICBpZiAodHlwZSAmIFNPQ0tfTk9OQkxPQ0spCi0gICAgICAgIHMtPnNvY2tfdGltZW91dCA9IDAuMDsKKyAgICAgICAgcy0+c29ja190aW1lb3V0ID0gMDsKICAgICBlbHNlCiAjZW5kaWYKICAgICB7CiAgICAgICAgIHMtPnNvY2tfdGltZW91dCA9IGRlZmF1bHR0aW1lb3V0OwotICAgICAgICBpZiAoZGVmYXVsdHRpbWVvdXQgPj0gMC4wKQorICAgICAgICBpZiAoZGVmYXVsdHRpbWVvdXQgPj0gMCkKICAgICAgICAgICAgIGludGVybmFsX3NldGJsb2NraW5nKHMsIDApOwogICAgIH0KIApAQCAtMTIxNCw2ICsxMzYyLDcxIEBACiAgICAgfQogfQogCisvKiBIZWxwZXIgZm9yIGdldHNvY2thZGRyYXJnOiBieXBhc3MgSUROQSBmb3IgQVNDSUktb25seSBob3N0IG5hbWVzCisgICAoaW4gcGFydGljdWxhciwgbnVtZXJpYyBJUCBhZGRyZXNzZXMpLiAqLworc3RydWN0IG1heWJlX2lkbmEgeworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgY2hhciAqYnVmOworfTsKKworc3RhdGljIHZvaWQKK2lkbmFfY2xlYW51cChzdHJ1Y3QgbWF5YmVfaWRuYSAqZGF0YSkKK3sKKyAgICBQeV9DTEVBUihkYXRhLT5vYmopOworfQorCitzdGF0aWMgaW50CitpZG5hX2NvbnZlcnRlcihQeU9iamVjdCAqb2JqLCBzdHJ1Y3QgbWF5YmVfaWRuYSAqZGF0YSkKK3sKKyAgICBzaXplX3QgbGVuOworICAgIFB5T2JqZWN0ICpvYmoyLCAqb2JqMzsKKyAgICBpZiAob2JqID09IE5VTEwpIHsKKyAgICAgICAgaWRuYV9jbGVhbnVwKGRhdGEpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgZGF0YS0+b2JqID0gTlVMTDsKKyAgICBsZW4gPSAtMTsKKyAgICBpZiAoUHlCeXRlc19DaGVjayhvYmopKSB7CisgICAgICAgIGRhdGEtPmJ1ZiA9IFB5Qnl0ZXNfQXNTdHJpbmcob2JqKTsKKyAgICAgICAgbGVuID0gUHlCeXRlc19TaXplKG9iaik7CisgICAgfQorICAgIGVsc2UgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKG9iaikpIHsKKyAgICAgICAgZGF0YS0+YnVmID0gUHlCeXRlQXJyYXlfQXNTdHJpbmcob2JqKTsKKyAgICAgICAgbGVuID0gUHlCeXRlQXJyYXlfU2l6ZShvYmopOworICAgIH0KKyAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSAmJiBQeVVuaWNvZGVfUkVBRFkob2JqKSA9PSAwICYmIFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9iaikpIHsKKyAgICAgICAgZGF0YS0+YnVmID0gUHlVbmljb2RlX0RBVEEob2JqKTsKKyAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG9iajIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChvYmopOworICAgICAgICBpZiAoIW9iajIpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJzdHJpbmcgb3IgdW5pY29kZSB0ZXh0IGJ1ZmZlciBleHBlY3RlZCwgbm90ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvYmotPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgb2JqMyA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcob2JqMiwgImlkbmEiLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKG9iajIpOworICAgICAgICBpZiAoIW9iajMpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbmNvZGluZyBvZiBob3N0bmFtZSBmYWlsZWQiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhvYmozKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKG9iajMpOworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVuY29kaW5nIG9mIGhvc3RuYW1lIGZhaWxlZCB0byByZXR1cm4gYnl0ZXMiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGRhdGEtPm9iaiA9IG9iajM7CisgICAgICAgIGRhdGEtPmJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG9iajMpOworICAgICAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKG9iajMpOworICAgIH0KKyAgICBpZiAoc3RybGVuKGRhdGEtPmJ1ZikgIT0gbGVuKSB7CisgICAgICAgIFB5X0NMRUFSKGRhdGEtPm9iaik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJob3N0IG5hbWUgbXVzdCBub3QgY29udGFpbiBudWxsIGNoYXJhY3RlciIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIFB5X0NMRUFOVVBfU1VQUE9SVEVEOworfQogCiAvKiBQYXJzZSBhIHNvY2tldCBhZGRyZXNzIGFyZ3VtZW50IGFjY29yZGluZyB0byB0aGUgc29ja2V0IG9iamVjdCdzCiAgICBhZGRyZXNzIGZhbWlseS4gIFJldHVybiAxIGlmIHRoZSBhZGRyZXNzIHdhcyBpbiB0aGUgcHJvcGVyIGZvcm1hdCwKQEAgLTEyMzAsOCArMTQ0Myw3IEBACiAgICAgY2FzZSBBRl9VTklYOgogICAgIHsKICAgICAgICAgc3RydWN0IHNvY2thZGRyX3VuKiBhZGRyOwotICAgICAgICBjaGFyICpwYXRoOwotICAgICAgICBpbnQgbGVuOworICAgICAgICBQeV9idWZmZXIgcGF0aDsKICAgICAgICAgaW50IHJldHZhbCA9IDA7CiAKICAgICAgICAgLyogUEVQIDM4My4gIE5vdCB1c2luZyBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIgc2luY2Ugd2UgbmVlZCB0bwpAQCAtMTI0MiwxNCArMTQ1NCwxNyBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFB5X0lOQ1JFRihhcmdzKTsKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShhcmdzLCAieSMiLCAmcGF0aCwgJmxlbikpCi0gICAgICAgICAgICBnb3RvIHVuaXhfb3V0OworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZ3MsICJ5KiIsICZwYXRoKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICAgICAgcmV0dXJuIHJldHZhbDsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQocGF0aC5sZW4gPj0gMCk7CiAKICAgICAgICAgYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHJfdW4qKWFkZHJfcmV0OwogI2lmZGVmIGxpbnV4Ci0gICAgICAgIGlmIChsZW4gPiAwICYmIHBhdGhbMF0gPT0gMCkgeworICAgICAgICBpZiAocGF0aC5sZW4gPiAwICYmICooY29uc3QgY2hhciAqKXBhdGguYnVmID09IDApIHsKICAgICAgICAgICAgIC8qIExpbnV4IGFic3RyYWN0IG5hbWVzcGFjZSBleHRlbnNpb24gKi8KLSAgICAgICAgICAgIGlmIChsZW4gPiBzaXplb2YgYWRkci0+c3VuX3BhdGgpIHsKKyAgICAgICAgICAgIGlmICgoc2l6ZV90KXBhdGgubGVuID4gc2l6ZW9mIGFkZHItPnN1bl9wYXRoKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBRl9VTklYIHBhdGggdG9vIGxvbmciKTsKICAgICAgICAgICAgICAgICBnb3RvIHVuaXhfb3V0OwpAQCAtMTI1OSwxOCArMTQ3NCwxOSBAQAogI2VuZGlmIC8qIGxpbnV4ICovCiAgICAgICAgIHsKICAgICAgICAgICAgIC8qIHJlZ3VsYXIgTlVMTC10ZXJtaW5hdGVkIHN0cmluZyAqLwotICAgICAgICAgICAgaWYgKGxlbiA+PSBzaXplb2YgYWRkci0+c3VuX3BhdGgpIHsKKyAgICAgICAgICAgIGlmICgoc2l6ZV90KXBhdGgubGVuID49IHNpemVvZiBhZGRyLT5zdW5fcGF0aCkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUZfVU5JWCBwYXRoIHRvbyBsb25nIik7CiAgICAgICAgICAgICAgICAgZ290byB1bml4X291dDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFkZHItPnN1bl9wYXRoW2xlbl0gPSAwOworICAgICAgICAgICAgYWRkci0+c3VuX3BhdGhbcGF0aC5sZW5dID0gMDsKICAgICAgICAgfQogICAgICAgICBhZGRyLT5zdW5fZmFtaWx5ID0gcy0+c29ja19mYW1pbHk7Ci0gICAgICAgIG1lbWNweShhZGRyLT5zdW5fcGF0aCwgcGF0aCwgbGVuKTsKLSAgICAgICAgKmxlbl9yZXQgPSBsZW4gKyBvZmZzZXRvZihzdHJ1Y3Qgc29ja2FkZHJfdW4sIHN1bl9wYXRoKTsKKyAgICAgICAgbWVtY3B5KGFkZHItPnN1bl9wYXRoLCBwYXRoLmJ1ZiwgcGF0aC5sZW4pOworICAgICAgICAqbGVuX3JldCA9IHBhdGgubGVuICsgb2Zmc2V0b2Yoc3RydWN0IHNvY2thZGRyX3VuLCBzdW5fcGF0aCk7CiAgICAgICAgIHJldHZhbCA9IDE7CiAgICAgdW5peF9vdXQ6CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBhdGgpOwogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgICAgIHJldHVybiByZXR2YWw7CiAgICAgfQpAQCAtMTMwOCw3ICsxNTI0LDcgQEAKICAgICBjYXNlIEFGX0lORVQ6CiAgICAgewogICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4qIGFkZHI7Ci0gICAgICAgIGNoYXIgKmhvc3Q7CisgICAgICAgIHN0cnVjdCBtYXliZV9pZG5hIGhvc3QgPSB7TlVMTCwgTlVMTH07CiAgICAgICAgIGludCBwb3J0LCByZXN1bHQ7CiAgICAgICAgIGlmICghUHlUdXBsZV9DaGVjayhhcmdzKSkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KApAQCAtMTMxOCwxMyArMTUzNCwxMyBAQAogICAgICAgICAgICAgICAgIFB5X1RZUEUoYXJncyktPnRwX25hbWUpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJldGk6Z2V0c29ja2FkZHJhcmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlkbmEiLCAmaG9zdCwgJnBvcnQpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpnZXRzb2NrYWRkcmFyZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZG5hX2NvbnZlcnRlciwgJmhvc3QsICZwb3J0KSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBhZGRyPShzdHJ1Y3Qgc29ja2FkZHJfaW4qKWFkZHJfcmV0OwotICAgICAgICByZXN1bHQgPSBzZXRpcGFkZHIoaG9zdCwgKHN0cnVjdCBzb2NrYWRkciAqKWFkZHIsCisgICAgICAgIHJlc3VsdCA9IHNldGlwYWRkcihob3N0LmJ1ZiwgKHN0cnVjdCBzb2NrYWRkciAqKWFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoKmFkZHIpLCAgQUZfSU5FVCk7Ci0gICAgICAgIFB5TWVtX0ZyZWUoaG9zdCk7CisgICAgICAgIGlkbmFfY2xlYW51cCgmaG9zdCk7CiAgICAgICAgIGlmIChyZXN1bHQgPCAwKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmIChwb3J0IDwgMCB8fCBwb3J0ID4gMHhmZmZmKSB7CkBAIC0xMzQzLDcgKzE1NTksNyBAQAogICAgIGNhc2UgQUZfSU5FVDY6CiAgICAgewogICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42KiBhZGRyOwotICAgICAgICBjaGFyICpob3N0OworICAgICAgICBzdHJ1Y3QgbWF5YmVfaWRuYSBob3N0ID0ge05VTEwsIE5VTEx9OwogICAgICAgICBpbnQgcG9ydCwgcmVzdWx0OwogICAgICAgICB1bnNpZ25lZCBpbnQgZmxvd2luZm8sIHNjb3BlX2lkOwogICAgICAgICBmbG93aW5mbyA9IHNjb3BlX2lkID0gMDsKQEAgLTEzNTUsMTUgKzE1NzEsMTUgQEAKICAgICAgICAgICAgICAgICBQeV9UWVBFKGFyZ3MpLT50cF9uYW1lKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZXRpfElJIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpZG5hIiwgJmhvc3QsICZwb3J0LCAmZmxvd2luZm8sCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpfElJIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkbmFfY29udmVydGVyLCAmaG9zdCwgJnBvcnQsICZmbG93aW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzY29wZV9pZCkpIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIGFkZHIgPSAoc3RydWN0IHNvY2thZGRyX2luNiopYWRkcl9yZXQ7Ci0gICAgICAgIHJlc3VsdCA9IHNldGlwYWRkcihob3N0LCAoc3RydWN0IHNvY2thZGRyICopYWRkciwKKyAgICAgICAgcmVzdWx0ID0gc2V0aXBhZGRyKGhvc3QuYnVmLCAoc3RydWN0IHNvY2thZGRyICopYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZigqYWRkciksIEFGX0lORVQ2KTsKLSAgICAgICAgUHlNZW1fRnJlZShob3N0KTsKKyAgICAgICAgaWRuYV9jbGVhbnVwKCZob3N0KTsKICAgICAgICAgaWYgKHJlc3VsdCA8IDApCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgaWYgKHBvcnQgPCAwIHx8IHBvcnQgPiAweGZmZmYpIHsKQEAgLTE0OTIsOCArMTcwOCw3IEBACiAgICAgICAgIGludCBwcm90b051bWJlcjsKICAgICAgICAgaW50IGhhdHlwZSA9IDA7CiAgICAgICAgIGludCBwa3R0eXBlID0gMDsKLSAgICAgICAgY2hhciAqaGFkZHIgPSBOVUxMOwotICAgICAgICB1bnNpZ25lZCBpbnQgaGFsZW4gPSAwOworICAgICAgICBQeV9idWZmZXIgaGFkZHIgPSB7TlVMTCwgTlVMTH07CiAKICAgICAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCkBAIC0xNTAzLDI1ICsxNzE4LDI4IEBACiAgICAgICAgICAgICAgICAgUHlfVFlQRShhcmdzKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNpfGlpeSMiLCAmaW50ZXJmYWNlTmFtZSwKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzaXxpaXkqIiwgJmludGVyZmFjZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJvdG9OdW1iZXIsICZwa3R0eXBlLCAmaGF0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhZGRyLCAmaGFsZW4pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhZGRyKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBzdHJuY3B5KGlmci5pZnJfbmFtZSwgaW50ZXJmYWNlTmFtZSwgc2l6ZW9mKGlmci5pZnJfbmFtZSkpOwogICAgICAgICBpZnIuaWZyX25hbWVbKHNpemVvZihpZnIuaWZyX25hbWUpKS0xXSA9ICdcMCc7CiAgICAgICAgIGlmIChpb2N0bChzLT5zb2NrX2ZkLCBTSU9DR0lGSU5ERVgsICZpZnIpIDwgMCkgewogICAgICAgICAgICAgcy0+ZXJyb3JoYW5kbGVyKCk7CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZoYWRkcik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBpZiAoaGFsZW4gPiA4KSB7Ci0gICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJIYXJkd2FyZSBhZGRyZXNzIG11c3QgYmUgOCBieXRlcyBvciBsZXNzIik7Ci0gICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChoYWRkci5idWYgJiYgaGFkZHIubGVuID4gOCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhhcmR3YXJlIGFkZHJlc3MgbXVzdCBiZSA4IGJ5dGVzIG9yIGxlc3MiKTsKKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmhhZGRyKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIGlmIChwcm90b051bWJlciA8IDAgfHwgcHJvdG9OdW1iZXIgPiAweGZmZmYpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKICAgICAgICAgICAgICAgICBQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICJnZXRzb2NrYWRkcmFyZzogcHJvdG9OdW1iZXIgbXVzdCBiZSAwLTY1NTM1LiIpOworICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmaGFkZHIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHJfbGwqKWFkZHJfcmV0OwpAQCAtMTUzMCwxMSArMTc0OCwxNCBAQAogICAgICAgICBhZGRyLT5zbGxfaWZpbmRleCA9IGlmci5pZnJfaWZpbmRleDsKICAgICAgICAgYWRkci0+c2xsX3BrdHR5cGUgPSBwa3R0eXBlOwogICAgICAgICBhZGRyLT5zbGxfaGF0eXBlID0gaGF0eXBlOwotICAgICAgICBpZiAoaGFsZW4gIT0gMCkgewotICAgICAgICAgIG1lbWNweSgmYWRkci0+c2xsX2FkZHIsIGhhZGRyLCBoYWxlbik7CisgICAgICAgIGlmIChoYWRkci5idWYpIHsKKyAgICAgICAgICAgIG1lbWNweSgmYWRkci0+c2xsX2FkZHIsIGhhZGRyLmJ1ZiwgaGFkZHIubGVuKTsKKyAgICAgICAgICAgIGFkZHItPnNsbF9oYWxlbiA9IGhhZGRyLmxlbjsKICAgICAgICAgfQotICAgICAgICBhZGRyLT5zbGxfaGFsZW4gPSBoYWxlbjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkci0+c2xsX2hhbGVuID0gMDsKICAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YgKmFkZHI7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmhhZGRyKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogI2VuZGlmCkBAIC0xNjExLDcgKzE4MzIsNyBAQAogCiAgICAgICAgICAgICBpZiAobGVuID09IDApIHsKICAgICAgICAgICAgICAgICBpZnIuaWZyX2lmaW5kZXggPSAwOwotICAgICAgICAgICAgfSBlbHNlIGlmIChsZW4gPCBzaXplb2YoaWZyLmlmcl9uYW1lKSkgeworICAgICAgICAgICAgfSBlbHNlIGlmICgoc2l6ZV90KWxlbiA8IHNpemVvZihpZnIuaWZyX25hbWUpKSB7CiAgICAgICAgICAgICAgICAgc3RybmNweShpZnIuaWZyX25hbWUsIFB5Qnl0ZXNfQVNfU1RSSU5HKGludGVyZmFjZU5hbWUpLCBzaXplb2YoaWZyLmlmcl9uYW1lKSk7CiAgICAgICAgICAgICAgICAgaWZyLmlmcl9uYW1lWyhzaXplb2YoaWZyLmlmcl9uYW1lKSktMV0gPSAnXDAnOwogICAgICAgICAgICAgICAgIGlmIChpb2N0bChzLT5zb2NrX2ZkLCBTSU9DR0lGSU5ERVgsICZpZnIpIDwgMCkgewpAQCAtMTY2MSw3ICsxODgyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUoY3RsX25hbWUpID4gc2l6ZW9mKGluZm8uY3RsX25hbWUpKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUoY3RsX25hbWUpID4gKFB5X3NzaXplX3Qpc2l6ZW9mKGluZm8uY3RsX25hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByb3ZpZGVkIHN0cmluZyBpcyB0b28gbG9uZyIpOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY3RsX25hbWUpOwpAQCAtMTg5Niw4ICsyMTE3LDE1IEBACiAgICAgI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICAgICAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd0YXV0b2xvZ2ljYWwtY29tcGFyZSIKICAgICAjZW5kaWYKKyAgICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKChfX0dOVUNfXyA+IDQpIHx8ICgoX19HTlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fID4gNSkpKQorICAgICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorICAgICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd0eXBlLWxpbWl0cyIKKyAgICAjZW5kaWYKICAgICBpZiAobXNnLT5tc2dfY29udHJvbGxlbiA8IDApCiAgICAgICAgIHJldHVybiAwOworICAgICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKF9fR05VQ19fID4gNCkgfHwgKChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPiA1KSkpCisgICAgI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyAgICAjZW5kaWYKICAgICAjaWZkZWYgX19jbGFuZ19fCiAgICAgI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogICAgICNlbmRpZgpAQCAtMTk1NSwyMiArMjE4Myw1NiBAQAogI2VuZGlmICAgIC8qIENNU0dfTEVOICovCiAKIAorc3RydWN0IHNvY2tfYWNjZXB0IHsKKyAgICBzb2NrbGVuX3QgKmFkZHJsZW47CisgICAgc29ja19hZGRyX3QgKmFkZHJidWY7CisgICAgU09DS0VUX1QgcmVzdWx0OworfTsKKworI2lmIGRlZmluZWQoSEFWRV9BQ0NFUFQ0KSAmJiBkZWZpbmVkKFNPQ0tfQ0xPRVhFQykKKy8qIGFjY2VwdDQoKSBpcyBhdmFpbGFibGUgb24gTGludXggMi42LjI4KyBhbmQgZ2xpYmMgMi4xMCAqLworc3RhdGljIGludCBhY2NlcHQ0X3dvcmtzID0gLTE7CisjZW5kaWYKKworc3RhdGljIGludAorc29ja19hY2NlcHRfaW1wbChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpCit7CisgICAgc3RydWN0IHNvY2tfYWNjZXB0ICpjdHggPSBkYXRhOworCisjaWYgZGVmaW5lZChIQVZFX0FDQ0VQVDQpICYmIGRlZmluZWQoU09DS19DTE9FWEVDKQorICAgIGlmIChhY2NlcHQ0X3dvcmtzICE9IDApIHsKKyAgICAgICAgY3R4LT5yZXN1bHQgPSBhY2NlcHQ0KHMtPnNvY2tfZmQsIFNBUzJTQShjdHgtPmFkZHJidWYpLCBjdHgtPmFkZHJsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT0NLX0NMT0VYRUMpOworICAgICAgICBpZiAoY3R4LT5yZXN1bHQgPT0gSU5WQUxJRF9TT0NLRVQgJiYgYWNjZXB0NF93b3JrcyA9PSAtMSkgeworICAgICAgICAgICAgLyogT24gTGludXggb2xkZXIgdGhhbiAyLjYuMjgsIGFjY2VwdDQoKSBmYWlscyB3aXRoIEVOT1NZUyAqLworICAgICAgICAgICAgYWNjZXB0NF93b3JrcyA9IChlcnJubyAhPSBFTk9TWVMpOworICAgICAgICB9CisgICAgfQorICAgIGlmIChhY2NlcHQ0X3dvcmtzID09IDApCisgICAgICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0KHMtPnNvY2tfZmQsIFNBUzJTQShjdHgtPmFkZHJidWYpLCBjdHgtPmFkZHJsZW4pOworI2Vsc2UKKyAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdChzLT5zb2NrX2ZkLCBTQVMyU0EoY3R4LT5hZGRyYnVmKSwgY3R4LT5hZGRybGVuKTsKKyNlbmRpZgorCisjaWZkZWYgTVNfV0lORE9XUworICAgIHJldHVybiAoY3R4LT5yZXN1bHQgIT0gSU5WQUxJRF9TT0NLRVQpOworI2Vsc2UKKyAgICByZXR1cm4gKGN0eC0+cmVzdWx0ID49IDApOworI2VuZGlmCit9CisKIC8qIHMuX2FjY2VwdCgpIC0+IChmZCwgYWRkcmVzcykgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIHNvY2tfYWNjZXB0KFB5U29ja2V0U29ja09iamVjdCAqcykKIHsKICAgICBzb2NrX2FkZHJfdCBhZGRyYnVmOwotICAgIFNPQ0tFVF9UIG5ld2ZkID0gSU5WQUxJRF9TT0NLRVQ7CisgICAgU09DS0VUX1QgbmV3ZmQ7CiAgICAgc29ja2xlbl90IGFkZHJsZW47CiAgICAgUHlPYmplY3QgKnNvY2sgPSBOVUxMOwogICAgIFB5T2JqZWN0ICphZGRyID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKLSAgICBpbnQgdGltZW91dDsKLSNpZiBkZWZpbmVkKEhBVkVfQUNDRVBUNCkgJiYgZGVmaW5lZChTT0NLX0NMT0VYRUMpCi0gICAgLyogYWNjZXB0NCgpIGlzIGF2YWlsYWJsZSBvbiBMaW51eCAyLjYuMjgrIGFuZCBnbGliYyAyLjEwICovCi0gICAgc3RhdGljIGludCBhY2NlcHQ0X3dvcmtzID0gLTE7Ci0jZW5kaWYKKyAgICBzdHJ1Y3Qgc29ja19hY2NlcHQgY3R4OwogCiAgICAgaWYgKCFnZXRzb2NrYWRkcmxlbihzLCAmYWRkcmxlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTk3OSwzNiArMjI0MSwxMSBAQAogICAgIGlmICghSVNfU0VMRUNUQUJMRShzKSkKICAgICAgICAgcmV0dXJuIHNlbGVjdF9lcnJvcigpOwogCi0gICAgQkVHSU5fU0VMRUNUX0xPT1AocykKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICB0aW1lb3V0ID0gaW50ZXJuYWxfc2VsZWN0X2V4KHMsIDAsIGludGVydmFsKTsKLSAgICBpZiAoIXRpbWVvdXQpIHsKLSNpZiBkZWZpbmVkKEhBVkVfQUNDRVBUNCkgJiYgZGVmaW5lZChTT0NLX0NMT0VYRUMpCi0gICAgICAgIGlmIChhY2NlcHQ0X3dvcmtzICE9IDApIHsKLSAgICAgICAgICAgIG5ld2ZkID0gYWNjZXB0NChzLT5zb2NrX2ZkLCBTQVMyU0EoJmFkZHJidWYpLCAmYWRkcmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT0NLX0NMT0VYRUMpOwotICAgICAgICAgICAgaWYgKG5ld2ZkID09IElOVkFMSURfU09DS0VUICYmIGFjY2VwdDRfd29ya3MgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICAvKiBPbiBMaW51eCBvbGRlciB0aGFuIDIuNi4yOCwgYWNjZXB0NCgpIGZhaWxzIHdpdGggRU5PU1lTICovCi0gICAgICAgICAgICAgICAgYWNjZXB0NF93b3JrcyA9IChlcnJubyAhPSBFTk9TWVMpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChhY2NlcHQ0X3dvcmtzID09IDApCi0gICAgICAgICAgICBuZXdmZCA9IGFjY2VwdChzLT5zb2NrX2ZkLCBTQVMyU0EoJmFkZHJidWYpLCAmYWRkcmxlbik7Ci0jZWxzZQotICAgICAgICBuZXdmZCA9IGFjY2VwdChzLT5zb2NrX2ZkLCBTQVMyU0EoJmFkZHJidWYpLCAmYWRkcmxlbik7Ci0jZW5kaWYKLSAgICB9Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmICh0aW1lb3V0ID09IDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF90aW1lb3V0LCAidGltZWQgb3V0Iik7CisgICAgY3R4LmFkZHJsZW4gPSAmYWRkcmxlbjsKKyAgICBjdHguYWRkcmJ1ZiA9ICZhZGRyYnVmOworICAgIGlmIChzb2NrX2NhbGwocywgMCwgc29ja19hY2NlcHRfaW1wbCwgJmN0eCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgRU5EX1NFTEVDVF9MT09QKHMpCi0KLSAgICBpZiAobmV3ZmQgPT0gSU5WQUxJRF9TT0NLRVQpCi0gICAgICAgIHJldHVybiBzLT5lcnJvcmhhbmRsZXIoKTsKKyAgICBuZXdmZCA9IGN0eC5yZXN1bHQ7CiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKCFTZXRIYW5kbGVJbmZvcm1hdGlvbigoSEFORExFKW5ld2ZkLCBIQU5ETEVfRkxBR19JTkhFUklULCAwKSkgewpAQCAtMjA2OSw3ICsyMzA2LDcgQEAKICAgICBpZiAoYmxvY2sgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBzLT5zb2NrX3RpbWVvdXQgPSBibG9jayA/IC0xLjAgOiAwLjA7CisgICAgcy0+c29ja190aW1lb3V0ID0gX1B5VGltZV9Gcm9tU2Vjb25kcyhibG9jayA/IC0xIDogMCk7CiAgICAgaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgYmxvY2spOwogCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwpAQCAtMjA4Myw2ICsyMzIwLDQ3IEBACiBzZXRibG9ja2luZyhUcnVlKSBpcyBlcXVpdmFsZW50IHRvIHNldHRpbWVvdXQoTm9uZSk7XG5cCiBzZXRibG9ja2luZyhGYWxzZSkgaXMgZXF1aXZhbGVudCB0byBzZXR0aW1lb3V0KDAuMCkuIik7CiAKK3N0YXRpYyBpbnQKK3NvY2tldF9wYXJzZV90aW1lb3V0KF9QeVRpbWVfdCAqdGltZW91dCwgUHlPYmplY3QgKnRpbWVvdXRfb2JqKQoreworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBzdHJ1Y3QgdGltZXZhbCB0djsKKyNlbmRpZgorI2lmbmRlZiBIQVZFX1BPTEwKKyAgICBfUHlUaW1lX3QgbXM7CisjZW5kaWYKKyAgICBpbnQgb3ZlcmZsb3cgPSAwOworCisgICAgaWYgKHRpbWVvdXRfb2JqID09IFB5X05vbmUpIHsKKyAgICAgICAgKnRpbWVvdXQgPSBfUHlUaW1lX0Zyb21TZWNvbmRzKC0xKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKF9QeVRpbWVfRnJvbVNlY29uZHNPYmplY3QodGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X29iaiwgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmICgqdGltZW91dCA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJUaW1lb3V0IHZhbHVlIG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisjaWZkZWYgTVNfV0lORE9XUworICAgIG92ZXJmbG93IHw9IChfUHlUaW1lX0FzVGltZXZhbCgqdGltZW91dCwgJnR2LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIDwgMCk7CisjZW5kaWYKKyNpZm5kZWYgSEFWRV9QT0xMCisgICAgbXMgPSBfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKCp0aW1lb3V0LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworICAgIG92ZXJmbG93IHw9IChtcyA+IElOVF9NQVgpOworI2VuZGlmCisgICAgaWYgKG92ZXJmbG93KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgZG9lc24ndCBmaXQgaW50byBDIHRpbWV2YWwiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCiAvKiBzLnNldHRpbWVvdXQodGltZW91dCkgbWV0aG9kLiAgQXJndW1lbnQ6CiAgICBOb25lIC0tIG5vIHRpbWVvdXQsIGJsb2NraW5nIG1vZGU7IHNhbWUgYXMgc2V0YmxvY2tpbmcoVHJ1ZSkKICAgIDAuMCAgLS0gbm9uLWJsb2NraW5nIG1vZGU7IHNhbWUgYXMgc2V0YmxvY2tpbmcoRmFsc2UpCkBAIC0yMDkyLDIyICsyMzcwLDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogc29ja19zZXR0aW1lb3V0KFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZykKIHsKLSAgICBkb3VibGUgdGltZW91dDsKKyAgICBfUHlUaW1lX3QgdGltZW91dDsKIAotICAgIGlmIChhcmcgPT0gUHlfTm9uZSkKLSAgICAgICAgdGltZW91dCA9IC0xLjA7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRpbWVvdXQgPSBQeUZsb2F0X0FzRG91YmxlKGFyZyk7Ci0gICAgICAgIGlmICh0aW1lb3V0IDwgMC4wKSB7Ci0gICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaW1lb3V0IHZhbHVlIG91dCBvZiByYW5nZSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9CisgICAgaWYgKHNvY2tldF9wYXJzZV90aW1lb3V0KCZ0aW1lb3V0LCBhcmcpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzLT5zb2NrX3RpbWVvdXQgPSB0aW1lb3V0OwotICAgIGludGVybmFsX3NldGJsb2NraW5nKHMsIHRpbWVvdXQgPCAwLjApOworICAgIGludGVybmFsX3NldGJsb2NraW5nKHMsIHRpbWVvdXQgPCAwKTsKIAogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKQEAgLTIxMjYsMTIgKzIzOTUsMTQgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzb2NrX2dldHRpbWVvdXQoUHlTb2NrZXRTb2NrT2JqZWN0ICpzKQogewotICAgIGlmIChzLT5zb2NrX3RpbWVvdXQgPCAwLjApIHsKKyAgICBpZiAocy0+c29ja190aW1lb3V0IDwgMCkgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUocy0+c29ja190aW1lb3V0KTsKKyAgICBlbHNlIHsKKyAgICAgICAgZG91YmxlIHNlY29uZHMgPSBfUHlUaW1lX0FzU2Vjb25kc0RvdWJsZShzLT5zb2NrX3RpbWVvdXQpOworICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHNlY29uZHMpOworICAgIH0KIH0KIAogUHlEb2NfU1RSVkFSKGdldHRpbWVvdXRfZG9jLApAQCAtMjE1MiwyMiArMjQyMywyMiBAQAogICAgIGludCBsZXZlbDsKICAgICBpbnQgb3B0bmFtZTsKICAgICBpbnQgcmVzOwotICAgIGNoYXIgKmJ1ZjsKLSAgICBpbnQgYnVmbGVuOworICAgIFB5X2J1ZmZlciBvcHR2YWw7CiAgICAgaW50IGZsYWc7CiAKICAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlpOnNldHNvY2tvcHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICZsZXZlbCwgJm9wdG5hbWUsICZmbGFnKSkgewotICAgICAgICBidWYgPSAoY2hhciAqKSAmZmxhZzsKLSAgICAgICAgYnVmbGVuID0gc2l6ZW9mIGZsYWc7CisgICAgICAgIHJlcyA9IHNldHNvY2tvcHQocy0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKSZmbGFnLCBzaXplb2YgZmxhZyk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpeSM6c2V0c29ja29wdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGV2ZWwsICZvcHRuYW1lLCAmYnVmLCAmYnVmbGVuKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaXkqOnNldHNvY2tvcHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxldmVsLCAmb3B0bmFtZSwgJm9wdHZhbCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLmJ1Ziwgb3B0dmFsLmxlbik7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJm9wdHZhbCk7CiAgICAgfQotICAgIHJlcyA9IHNldHNvY2tvcHQocy0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsICh2b2lkICopYnVmLCBidWZsZW4pOwogICAgIGlmIChyZXMgPCAwKQogICAgICAgICByZXR1cm4gcy0+ZXJyb3JoYW5kbGVyKCk7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwpAQCAtMjI3MSw2ICsyNTQyLDEwIEBACiB7CiAgICAgU09DS0VUX1QgZmQ7CiAKKyAgICAvKiBXZSBkbyBub3Qgd2FudCB0byByZXRyeSB1cG9uIEVJTlRSOiBzZWUgaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvNTc2NDc4LworICAgICAqIGFuZCBodHRwOi8vbGludXguZGVya2VpbGVyLmNvbS9NYWlsaW5nLUxpc3RzL0tlcm5lbC8yMDA1LTA5LzMwMDAuaHRtbAorICAgICAqIGZvciBtb3JlIGRldGFpbHMuCisgICAgICovCiAgICAgaWYgKChmZCA9IHMtPnNvY2tfZmQpICE9IC0xKSB7CiAgICAgICAgIHMtPnNvY2tfZmQgPSAtMTsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtMjMwMiw5MiArMjU3Nyw5MCBAQAogY2FuIGJlIHJldXNlZCBmb3Igb3RoZXIgcHVycG9zZXMuICBUaGUgZmlsZSBkZXNjcmlwdG9yIGlzIHJldHVybmVkLiIpOwogCiBzdGF0aWMgaW50Ci1pbnRlcm5hbF9jb25uZWN0KFB5U29ja2V0U29ja09iamVjdCAqcywgc3RydWN0IHNvY2thZGRyICphZGRyLCBpbnQgYWRkcmxlbiwKLSAgICAgICAgICAgICAgICAgaW50ICp0aW1lb3V0cCkKK3NvY2tfY29ubmVjdF9pbXBsKFB5U29ja2V0U29ja09iamVjdCAqcywgdm9pZCogUHlfVU5VU0VEKGRhdGEpKQogewotICAgIGludCByZXMsIHRpbWVvdXQ7CisgICAgaW50IGVycjsKKyAgICBzb2NrbGVuX3Qgc2l6ZSA9IHNpemVvZiBlcnI7CiAKLSAgICB0aW1lb3V0ID0gMDsKKyAgICBpZiAoZ2V0c29ja29wdChzLT5zb2NrX2ZkLCBTT0xfU09DS0VULCBTT19FUlJPUiwgKHZvaWQgKikmZXJyLCAmc2l6ZSkpIHsKKyAgICAgICAgLyogZ2V0c29ja29wdCgpIGZhaWxlZCAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoZXJyID09IEVJU0NPTk4pCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICAvKiBzb2NrX2NhbGxfZXgoKSB1c2VzIEdFVF9TT0NLX0VSUk9SKCkgdG8gZ2V0IHRoZSBlcnJvciBjb2RlICovCisgICAgICAgIFNFVF9TT0NLX0VSUk9SKGVycik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAoraW50ZXJuYWxfY29ubmVjdChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgaW50IGFkZHJsZW4sCisgICAgICAgICAgICAgICAgIGludCByYWlzZSkKK3sKKyAgICBpbnQgcmVzLCBlcnIsIHdhaXRfY29ubmVjdDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXMgPSBjb25uZWN0KHMtPnNvY2tfZmQsIGFkZHIsIGFkZHJsZW4pOworICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSNpZmRlZiBNU19XSU5ET1dTCi0KLSAgICBpZiAocy0+c29ja190aW1lb3V0ID4gMC4wKSB7Ci0gICAgICAgIGlmIChyZXMgPCAwICYmIFdTQUdldExhc3RFcnJvcigpID09IFdTQUVXT1VMREJMT0NLICYmCi0gICAgICAgICAgICBJU19TRUxFQ1RBQkxFKHMpKSB7Ci0gICAgICAgICAgICAvKiBUaGlzIGlzIGEgbWVzcy4gIEJlc3Qgc29sdXRpb246IHRydXN0IHNlbGVjdCAqLwotICAgICAgICAgICAgZmRfc2V0IGZkczsKLSAgICAgICAgICAgIGZkX3NldCBmZHNfZXhjOwotICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgdHY7Ci0gICAgICAgICAgICB0di50dl9zZWMgPSAoaW50KXMtPnNvY2tfdGltZW91dDsKLSAgICAgICAgICAgIHR2LnR2X3VzZWMgPSAoaW50KSgocy0+c29ja190aW1lb3V0IC0gdHYudHZfc2VjKSAqIDFlNik7Ci0gICAgICAgICAgICBGRF9aRVJPKCZmZHMpOwotICAgICAgICAgICAgRkRfU0VUKHMtPnNvY2tfZmQsICZmZHMpOwotICAgICAgICAgICAgRkRfWkVSTygmZmRzX2V4Yyk7Ci0gICAgICAgICAgICBGRF9TRVQocy0+c29ja19mZCwgJmZkc19leGMpOwotICAgICAgICAgICAgcmVzID0gc2VsZWN0KFB5X1NBRkVfRE9XTkNBU1Qocy0+c29ja19mZCsxLCBTT0NLRVRfVCwgaW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAmZmRzLCAmZmRzX2V4YywgJnR2KTsKLSAgICAgICAgICAgIGlmIChyZXMgPT0gMCkgewotICAgICAgICAgICAgICAgIHJlcyA9IFdTQUVXT1VMREJMT0NLOwotICAgICAgICAgICAgICAgIHRpbWVvdXQgPSAxOwotICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPiAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKEZEX0lTU0VUKHMtPnNvY2tfZmQsICZmZHMpKQotICAgICAgICAgICAgICAgICAgICAvKiBUaGUgc29ja2V0IGlzIGluIHRoZSB3cml0YWJsZSBzZXQgLSB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgIG1lYW5zIGNvbm5lY3RlZCAqLwotICAgICAgICAgICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvKiBBcyBwZXIgTVMgZG9jcywgd2UgbmVlZCB0byBjYWxsIGdldHNvY2tvcHQoKQotICAgICAgICAgICAgICAgICAgICAgICB0byBnZXQgdGhlIHVuZGVybHlpbmcgZXJyb3IgKi8KLSAgICAgICAgICAgICAgICAgICAgaW50IHJlc19zaXplID0gc2l6ZW9mIHJlczsKLSAgICAgICAgICAgICAgICAgICAgLyogSXQgbXVzdCBiZSBpbiB0aGUgZXhjZXB0aW9uIHNldCAqLwotICAgICAgICAgICAgICAgICAgICBhc3NlcnQoRkRfSVNTRVQocy0+c29ja19mZCwgJmZkc19leGMpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT0gZ2V0c29ja29wdChzLT5zb2NrX2ZkLCBTT0xfU09DS0VULCBTT19FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSZyZXMsICZyZXNfc2l6ZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAvKiBnZXRzb2Nrb3B0IGFsc28gY2xlYXJzIFdTQUdldExhc3RFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvIHJlc2V0IGl0IGJhY2suICovCi0gICAgICAgICAgICAgICAgICAgICAgICBXU0FTZXRMYXN0RXJyb3IocmVzKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gV1NBR2V0TGFzdEVycm9yKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogZWxzZSBpZiAocmVzIDwgMCkgYW4gZXJyb3Igb2NjdXJyZWQgKi8KLSAgICAgICAgfQorICAgIGlmICghcmVzKSB7CisgICAgICAgIC8qIGNvbm5lY3QoKSBzdWNjZWVkZWQsIHRoZSBzb2NrZXQgaXMgY29ubmVjdGVkICovCisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXMgPSBXU0FHZXRMYXN0RXJyb3IoKTsKKyAgICAvKiBjb25uZWN0KCkgZmFpbGVkICovCiAKLSNlbHNlCisgICAgLyogc2F2ZSBlcnJvciwgUHlFcnJfQ2hlY2tTaWduYWxzKCkgY2FuIHJlcGxhY2UgaXQgKi8KKyAgICBlcnIgPSBHRVRfU09DS19FUlJPUjsKKyAgICBpZiAoQ0hFQ0tfRVJSTk8oRUlOVFIpKSB7CisgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKIAotICAgIGlmIChzLT5zb2NrX3RpbWVvdXQgPiAwLjApIHsKLSAgICAgICAgaWYgKHJlcyA8IDAgJiYgZXJybm8gPT0gRUlOUFJPR1JFU1MgJiYgSVNfU0VMRUNUQUJMRShzKSkgewotICAgICAgICAgICAgdGltZW91dCA9IGludGVybmFsX3NlbGVjdChzLCAxKTsKLSAgICAgICAgICAgIGlmICh0aW1lb3V0ID09IDApIHsKLSAgICAgICAgICAgICAgICAvKiBCdWcgIzEwMTk4MDg6IGluIGNhc2Ugb2YgYW4gRUlOUFJPR1JFU1MsCi0gICAgICAgICAgICAgICAgICAgdXNlIGdldHNvY2tvcHQoU09fRVJST1IpIHRvIGdldCB0aGUgcmVhbAotICAgICAgICAgICAgICAgICAgIGVycm9yLiAqLwotICAgICAgICAgICAgICAgIHNvY2tsZW5fdCByZXNfc2l6ZSA9IHNpemVvZiByZXM7Ci0gICAgICAgICAgICAgICAgKHZvaWQpZ2V0c29ja29wdChzLT5zb2NrX2ZkLCBTT0xfU09DS0VULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU09fRVJST1IsICZyZXMsICZyZXNfc2l6ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBFSVNDT05OKQotICAgICAgICAgICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgICAgIGVycm5vID0gcmVzOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAodGltZW91dCA9PSAtMSkgewotICAgICAgICAgICAgICAgIHJlcyA9IGVycm5vOyAgICAgICAgICAgIC8qIGhhZCBlcnJvciAqLwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlcyA9IEVXT1VMREJMT0NLOyAgICAgICAgICAgICAgICAgICAgICAvKiB0aW1lZCBvdXQgKi8KLSAgICAgICAgfQorICAgICAgICAvKiBJc3N1ZSAjMjM2MTg6IHdoZW4gY29ubmVjdCgpIGZhaWxzIHdpdGggRUlOVFIsIHRoZSBjb25uZWN0aW9uIGlzCisgICAgICAgICAgIHJ1bm5pbmcgYXN5bmNocm9ub3VzbHkuCisKKyAgICAgICAgICAgSWYgdGhlIHNvY2tldCBpcyBibG9ja2luZyBvciBoYXMgYSB0aW1lb3V0LCB3YWl0IHVudGlsIHRoZQorICAgICAgICAgICBjb25uZWN0aW9uIGNvbXBsZXRlcywgZmFpbHMgb3IgdGltZWQgb3V0IHVzaW5nIHNlbGVjdCgpLCBhbmQgdGhlbgorICAgICAgICAgICBnZXQgdGhlIGNvbm5lY3Rpb24gc3RhdHVzIHVzaW5nIGdldHNvY2tvcHQoU09fRVJST1IpLgorCisgICAgICAgICAgIElmIHRoZSBzb2NrZXQgaXMgbm9uLWJsb2NraW5nLCByYWlzZSBJbnRlcnJ1cHRlZEVycm9yLiBUaGUgY2FsbGVyIGlzCisgICAgICAgICAgIHJlc3BvbnNpYmxlIHRvIHdhaXQgdW50aWwgdGhlIGNvbm5lY3Rpb24gY29tcGxldGVzLCBmYWlscyBvciB0aW1lZAorICAgICAgICAgICBvdXQgKGl0J3MgdGhlIGNhc2UgaW4gYXN5bmNpbyBmb3IgZXhhbXBsZSkuICovCisgICAgICAgIHdhaXRfY29ubmVjdCA9IChzLT5zb2NrX3RpbWVvdXQgIT0gMCAmJiBJU19TRUxFQ1RBQkxFKHMpKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHdhaXRfY29ubmVjdCA9IChzLT5zb2NrX3RpbWVvdXQgPiAwICYmIGVyciA9PSBTT0NLX0lOUFJPR1JFU1NfRVJSCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBJU19TRUxFQ1RBQkxFKHMpKTsKICAgICB9CiAKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmVzID0gZXJybm87CisgICAgaWYgKCF3YWl0X2Nvbm5lY3QpIHsKKyAgICAgICAgaWYgKHJhaXNlKSB7CisgICAgICAgICAgICAvKiByZXN0b3JlIGVycm9yLCBtYXliZSByZXBsYWNlZCBieSBQeUVycl9DaGVja1NpZ25hbHMoKSAqLworICAgICAgICAgICAgU0VUX1NPQ0tfRVJST1IoZXJyKTsKKyAgICAgICAgICAgIHMtPmVycm9yaGFuZGxlcigpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAgfQogCi0jZW5kaWYKLSAgICAqdGltZW91dHAgPSB0aW1lb3V0OwotCi0gICAgcmV0dXJuIHJlczsKKyAgICBpZiAocmFpc2UpIHsKKyAgICAgICAgLyogc29ja2V0LmNvbm5lY3QoKSByYWlzZXMgYW4gZXhjZXB0aW9uIG9uIGVycm9yICovCisgICAgICAgIGlmIChzb2NrX2NhbGxfZXgocywgMSwgc29ja19jb25uZWN0X2ltcGwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgMSwgTlVMTCwgcy0+c29ja190aW1lb3V0KSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBzb2NrZXQuY29ubmVjdF9leCgpIHJldHVybnMgdGhlIGVycm9yIGNvZGUgb24gZXJyb3IgKi8KKyAgICAgICAgaWYgKHNvY2tfY2FsbF9leChzLCAxLCBzb2NrX2Nvbm5lY3RfaW1wbCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAxLCAmZXJyLCBzLT5zb2NrX3RpbWVvdXQpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorICAgIHJldHVybiAwOwogfQogCiAvKiBzLmNvbm5lY3Qoc29ja2FkZHIpIG1ldGhvZCAqLwpAQCAtMjM5OCwyMyArMjY3MSwxNSBAQAogICAgIHNvY2tfYWRkcl90IGFkZHJidWY7CiAgICAgaW50IGFkZHJsZW47CiAgICAgaW50IHJlczsKLSAgICBpbnQgdGltZW91dDsKIAogICAgIGlmICghZ2V0c29ja2FkZHJhcmcocywgYWRkcm8sIFNBUzJTQSgmYWRkcmJ1ZiksICZhZGRybGVuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gaW50ZXJuYWxfY29ubmVjdChzLCBTQVMyU0EoJmFkZHJidWYpLCBhZGRybGVuLCAmdGltZW91dCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmICh0aW1lb3V0ID09IDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF90aW1lb3V0LCAidGltZWQgb3V0Iik7CisgICAgcmVzID0gaW50ZXJuYWxfY29ubmVjdChzLCBTQVMyU0EoJmFkZHJidWYpLCBhZGRybGVuLCAxKTsKKyAgICBpZiAocmVzIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChyZXMgIT0gMCkKLSAgICAgICAgcmV0dXJuIHMtPmVycm9yaGFuZGxlcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeURvY19TVFJWQVIoY29ubmVjdF9kb2MsCkBAIC0yNDMyLDIxICsyNjk3LDEzIEBACiAgICAgc29ja19hZGRyX3QgYWRkcmJ1ZjsKICAgICBpbnQgYWRkcmxlbjsKICAgICBpbnQgcmVzOwotICAgIGludCB0aW1lb3V0OwogCiAgICAgaWYgKCFnZXRzb2NrYWRkcmFyZyhzLCBhZGRybywgU0FTMlNBKCZhZGRyYnVmKSwgJmFkZHJsZW4pKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBpbnRlcm5hbF9jb25uZWN0KHMsIFNBUzJTQSgmYWRkcmJ1ZiksIGFkZHJsZW4sICZ0aW1lb3V0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgLyogU2lnbmFscyBhcmUgbm90IGVycm9ycyAodGhvdWdoIHRoZXkgbWF5IHJhaXNlIGV4Y2VwdGlvbnMpLiAgQWRhcHRlZAotICAgICAgIGZyb20gUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KCkuICovCi0jaWZkZWYgRUlOVFIKLSAgICBpZiAocmVzID09IEVJTlRSICYmIFB5RXJyX0NoZWNrU2lnbmFscygpKQorICAgIHJlcyA9IGludGVybmFsX2Nvbm5lY3QocywgU0FTMlNBKCZhZGRyYnVmKSwgYWRkcmxlbiwgMCk7CisgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotI2VuZGlmCiAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKSByZXMpOwogfQpAQCAtMjUzNCwxNCArMjc5MSwxNiBAQAogLyogcy5saXN0ZW4obikgbWV0aG9kICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zb2NrX2xpc3RlbihQeVNvY2tldFNvY2tPYmplY3QgKnMsIFB5T2JqZWN0ICphcmcpCitzb2NrX2xpc3RlbihQeVNvY2tldFNvY2tPYmplY3QgKnMsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGludCBiYWNrbG9nOworICAgIC8qIFdlIHRyeSB0byBjaG9vc2UgYSBkZWZhdWx0IGJhY2tsb2cgaGlnaCBlbm91Z2ggdG8gYXZvaWQgY29ubmVjdGlvbiBkcm9wcworICAgICAqIGZvciBjb21tb24gd29ya2xvYWRzLCB5ZXQgbm90IHRvbyBoaWdoIHRvIGxpbWl0IHJlc291cmNlIHVzYWdlLiAqLworICAgIGludCBiYWNrbG9nID0gUHlfTUlOKFNPTUFYQ09OTiwgMTI4KTsKICAgICBpbnQgcmVzOwogCi0gICAgYmFja2xvZyA9IF9QeUxvbmdfQXNJbnQoYXJnKTsKLSAgICBpZiAoYmFja2xvZyA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6bGlzdGVuIiwgJmJhY2tsb2cpKQogICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAvKiBUbyBhdm9pZCBwcm9ibGVtcyBvbiBzeXN0ZW1zIHRoYXQgZG9uJ3QgYWxsb3cgYSBuZWdhdGl2ZSBiYWNrbG9nCiAgICAgICogKHdoaWNoIGRvZXNuJ3QgbWFrZSBzZW5zZSBhbnl3YXkpIHdlIGZvcmNlIGEgbWluaW11bSB2YWx1ZSBvZiAwLiAqLwpAQCAtMjU1NiwxMiArMjgxNSwzNCBAQAogfQogCiBQeURvY19TVFJWQVIobGlzdGVuX2RvYywKLSJsaXN0ZW4oYmFja2xvZylcblwKKyJsaXN0ZW4oW2JhY2tsb2ddKVxuXAogXG5cCi1FbmFibGUgYSBzZXJ2ZXIgdG8gYWNjZXB0IGNvbm5lY3Rpb25zLiAgVGhlIGJhY2tsb2cgYXJndW1lbnQgbXVzdCBiZSBhdFxuXAotbGVhc3QgMCAoaWYgaXQgaXMgbG93ZXIsIGl0IGlzIHNldCB0byAwKTsgaXQgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2ZcblwKK0VuYWJsZSBhIHNlcnZlciB0byBhY2NlcHQgY29ubmVjdGlvbnMuICBJZiBiYWNrbG9nIGlzIHNwZWNpZmllZCwgaXQgbXVzdCBiZVxuXAorYXQgbGVhc3QgMCAoaWYgaXQgaXMgbG93ZXIsIGl0IGlzIHNldCB0byAwKTsgaXQgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2ZcblwKIHVuYWNjZXB0ZWQgY29ubmVjdGlvbnMgdGhhdCB0aGUgc3lzdGVtIHdpbGwgYWxsb3cgYmVmb3JlIHJlZnVzaW5nIG5ld1xuXAotY29ubmVjdGlvbnMuIik7Citjb25uZWN0aW9ucy4gSWYgbm90IHNwZWNpZmllZCwgYSBkZWZhdWx0IHJlYXNvbmFibGUgdmFsdWUgaXMgY2hvc2VuLiIpOworCitzdHJ1Y3Qgc29ja19yZWN2IHsKKyAgICBjaGFyICpjYnVmOworICAgIFB5X3NzaXplX3QgbGVuOworICAgIGludCBmbGFnczsKKyAgICBQeV9zc2l6ZV90IHJlc3VsdDsKK307CisKK3N0YXRpYyBpbnQKK3NvY2tfcmVjdl9pbXBsKFB5U29ja2V0U29ja09iamVjdCAqcywgdm9pZCAqZGF0YSkKK3sKKyAgICBzdHJ1Y3Qgc29ja19yZWN2ICpjdHggPSBkYXRhOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChjdHgtPmxlbiA+IElOVF9NQVgpCisgICAgICAgIGN0eC0+bGVuID0gSU5UX01BWDsKKyAgICBjdHgtPnJlc3VsdCA9IHJlY3Yocy0+c29ja19mZCwgY3R4LT5jYnVmLCAoaW50KWN0eC0+bGVuLCBjdHgtPmZsYWdzKTsKKyNlbHNlCisgICAgY3R4LT5yZXN1bHQgPSByZWN2KHMtPnNvY2tfZmQsIGN0eC0+Y2J1ZiwgY3R4LT5sZW4sIGN0eC0+ZmxhZ3MpOworI2VuZGlmCisgICAgcmV0dXJuIChjdHgtPnJlc3VsdCA+PSAwKTsKK30KIAogCiAvKgpAQCAtMjU3Niw4ICsyODU3LDcgQEAKIHN0YXRpYyBQeV9zc2l6ZV90CiBzb2NrX3JlY3ZfZ3V0cyhQeVNvY2tldFNvY2tPYmplY3QgKnMsIGNoYXIqIGNidWYsIFB5X3NzaXplX3QgbGVuLCBpbnQgZmxhZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCBvdXRsZW4gPSAtMTsKLSAgICBpbnQgdGltZW91dDsKKyAgICBzdHJ1Y3Qgc29ja19yZWN2IGN0eDsKIAogICAgIGlmICghSVNfU0VMRUNUQUJMRShzKSkgewogICAgICAgICBzZWxlY3RfZXJyb3IoKTsKQEAgLTI1ODgsMzIgKzI4NjgsMTMgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgQkVHSU5fU0VMRUNUX0xPT1AocykKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgdGltZW91dCA9IGludGVybmFsX3NlbGVjdF9leChzLCAwLCBpbnRlcnZhbCk7Ci0gICAgaWYgKCF0aW1lb3V0KSB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgICAgICBpZiAobGVuID4gSU5UX01BWCkKLSAgICAgICAgICAgIGxlbiA9IElOVF9NQVg7Ci0gICAgICAgIG91dGxlbiA9IHJlY3Yocy0+c29ja19mZCwgY2J1ZiwgKGludClsZW4sIGZsYWdzKTsKLSNlbHNlCi0gICAgICAgIG91dGxlbiA9IHJlY3Yocy0+c29ja19mZCwgY2J1ZiwgbGVuLCBmbGFncyk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBjdHguY2J1ZiA9IGNidWY7CisgICAgY3R4LmxlbiA9IGxlbjsKKyAgICBjdHguZmxhZ3MgPSBmbGFnczsKKyAgICBpZiAoc29ja19jYWxsKHMsIDAsIHNvY2tfcmVjdl9pbXBsLCAmY3R4KSA8IDApCisgICAgICAgIHJldHVybiAtMTsKIAotICAgIGlmICh0aW1lb3V0ID09IDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF90aW1lb3V0LCAidGltZWQgb3V0Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgRU5EX1NFTEVDVF9MT09QKHMpCi0gICAgaWYgKG91dGxlbiA8IDApIHsKLSAgICAgICAgLyogTm90ZTogdGhlIGNhbGwgdG8gZXJyb3JoYW5kbGVyKCkgQUxXQVlTIGluZGlyZWN0bHkgcmV0dXJuZWQKLSAgICAgICAgICAgTlVMTCwgc28gaWdub3JlIGl0cyByZXR1cm4gdmFsdWUgKi8KLSAgICAgICAgcy0+ZXJyb3JoYW5kbGVyKCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgcmV0dXJuIG91dGxlbjsKKyAgICByZXR1cm4gY3R4LnJlc3VsdDsKIH0KIAogCkBAIC0yNzI3LDYgKzI5ODgsMzQgQEAKIFxuXAogU2VlIHJlY3YoKSBmb3IgZG9jdW1lbnRhdGlvbiBhYm91dCB0aGUgZmxhZ3MuIik7CiAKK3N0cnVjdCBzb2NrX3JlY3Zmcm9tIHsKKyAgICBjaGFyKiBjYnVmOworICAgIFB5X3NzaXplX3QgbGVuOworICAgIGludCBmbGFnczsKKyAgICBzb2NrbGVuX3QgKmFkZHJsZW47CisgICAgc29ja19hZGRyX3QgKmFkZHJidWY7CisgICAgUHlfc3NpemVfdCByZXN1bHQ7Cit9OworCitzdGF0aWMgaW50Citzb2NrX3JlY3Zmcm9tX2ltcGwoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCB2b2lkICpkYXRhKQoreworICAgIHN0cnVjdCBzb2NrX3JlY3Zmcm9tICpjdHggPSBkYXRhOworCisgICAgbWVtc2V0KGN0eC0+YWRkcmJ1ZiwgMCwgKmN0eC0+YWRkcmxlbik7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKGN0eC0+bGVuID4gSU5UX01BWCkKKyAgICAgICAgY3R4LT5sZW4gPSBJTlRfTUFYOworICAgIGN0eC0+cmVzdWx0ID0gcmVjdmZyb20ocy0+c29ja19mZCwgY3R4LT5jYnVmLCAoaW50KWN0eC0+bGVuLCBjdHgtPmZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU0FTMlNBKGN0eC0+YWRkcmJ1ZiksIGN0eC0+YWRkcmxlbik7CisjZWxzZQorICAgIGN0eC0+cmVzdWx0ID0gcmVjdmZyb20ocy0+c29ja19mZCwgY3R4LT5jYnVmLCBjdHgtPmxlbiwgY3R4LT5mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNBUzJTQShjdHgtPmFkZHJidWYpLCBjdHgtPmFkZHJsZW4pOworI2VuZGlmCisgICAgcmV0dXJuIChjdHgtPnJlc3VsdCA+PSAwKTsKK30KKwogCiAvKgogICogVGhpcyBpcyB0aGUgZ3V0cyBvZiB0aGUgcmVjdmZyb20oKSBhbmQgcmVjdmZyb21faW50bygpIG1ldGhvZHMsIHdoaWNoIHJlYWRzCkBAIC0yNzQ0LDkgKzMwMzMsOCBAQAogICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0KiogYWRkcikKIHsKICAgICBzb2NrX2FkZHJfdCBhZGRyYnVmOwotICAgIGludCB0aW1lb3V0OwotICAgIFB5X3NzaXplX3QgbiA9IC0xOwogICAgIHNvY2tsZW5fdCBhZGRybGVuOworICAgIHN0cnVjdCBzb2NrX3JlY3Zmcm9tIGN0eDsKIAogICAgICphZGRyID0gTlVMTDsKIApAQCAtMjc1OCwzOCArMzA0NiwyMCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgQkVHSU5fU0VMRUNUX0xPT1AocykKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgbWVtc2V0KCZhZGRyYnVmLCAwLCBhZGRybGVuKTsKLSAgICB0aW1lb3V0ID0gaW50ZXJuYWxfc2VsZWN0X2V4KHMsIDAsIGludGVydmFsKTsKLSAgICBpZiAoIXRpbWVvdXQpIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIGlmIChsZW4gPiBJTlRfTUFYKQotICAgICAgICAgICAgbGVuID0gSU5UX01BWDsKLSAgICAgICAgbiA9IHJlY3Zmcm9tKHMtPnNvY2tfZmQsIGNidWYsIChpbnQpbGVuLCBmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICh2b2lkICopICZhZGRyYnVmLCAmYWRkcmxlbik7Ci0jZWxzZQotICAgICAgICBuID0gcmVjdmZyb20ocy0+c29ja19mZCwgY2J1ZiwgbGVuLCBmbGFncywKLSAgICAgICAgICAgICAgICAgICAgIFNBUzJTQSgmYWRkcmJ1ZiksICZhZGRybGVuKTsKLSNlbmRpZgotICAgIH0KLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKHRpbWVvdXQgPT0gMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBFTkRfU0VMRUNUX0xPT1AocykKLSAgICBpZiAobiA8IDApIHsKLSAgICAgICAgcy0+ZXJyb3JoYW5kbGVyKCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBpZiAoISgqYWRkciA9IG1ha2Vzb2NrYWRkcihzLT5zb2NrX2ZkLCBTQVMyU0EoJmFkZHJidWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJsZW4sIHMtPnNvY2tfcHJvdG8pKSkKKyAgICBjdHguY2J1ZiA9IGNidWY7CisgICAgY3R4LmxlbiA9IGxlbjsKKyAgICBjdHguZmxhZ3MgPSBmbGFnczsKKyAgICBjdHguYWRkcmJ1ZiA9ICZhZGRyYnVmOworICAgIGN0eC5hZGRybGVuID0gJmFkZHJsZW47CisgICAgaWYgKHNvY2tfY2FsbChzLCAwLCBzb2NrX3JlY3Zmcm9tX2ltcGwsICZjdHgpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgcmV0dXJuIG47CisgICAgKmFkZHIgPSBtYWtlc29ja2FkZHIocy0+c29ja19mZCwgU0FTMlNBKCZhZGRyYnVmKSwgYWRkcmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzLT5zb2NrX3Byb3RvKTsKKyAgICBpZiAoKmFkZHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIGN0eC5yZXN1bHQ7CiB9CiAKIC8qIHMucmVjdmZyb20obmJ5dGVzIFssZmxhZ3NdKSBtZXRob2QgKi8KQEAgLTI5MDAsMTAgKzMxNzAsMjQgQEAKIFxuXAogTGlrZSByZWN2X2ludG8oYnVmZmVyWywgbmJ5dGVzWywgZmxhZ3NdXSkgYnV0IGFsc28gcmV0dXJuIHRoZSBzZW5kZXIncyBhZGRyZXNzIGluZm8uIik7CiAKLQogLyogVGhlIHNlbmRtc2coKSBhbmQgcmVjdm1zZ1tfaW50b10oKSBtZXRob2RzIHJlcXVpcmUgYSB3b3JraW5nCiAgICBDTVNHX0xFTigpLiAgU2VlIHRoZSBjb21tZW50IG5lYXIgZ2V0X0NNU0dfTEVOKCkuICovCiAjaWZkZWYgQ01TR19MRU4KK3N0cnVjdCBzb2NrX3JlY3Ztc2cgeworICAgIHN0cnVjdCBtc2doZHIgKm1zZzsKKyAgICBpbnQgZmxhZ3M7CisgICAgc3NpemVfdCByZXN1bHQ7Cit9OworCitzdGF0aWMgaW50Citzb2NrX3JlY3Ztc2dfaW1wbChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpCit7CisgICAgc3RydWN0IHNvY2tfcmVjdm1zZyAqY3R4ID0gZGF0YTsKKworICAgIGN0eC0+cmVzdWx0ID0gcmVjdm1zZyhzLT5zb2NrX2ZkLCBjdHgtPm1zZywgY3R4LT5mbGFncyk7CisgICAgcmV0dXJuICAoY3R4LT5yZXN1bHQgPj0gMCk7Cit9CisKIC8qCiAgKiBDYWxsIHJlY3Ztc2coKSB3aXRoIHRoZSBzdXBwbGllZCBpb3ZlYyBzdHJ1Y3R1cmVzLCBmbGFncywgYW5kCiAgKiBhbmNpbGxhcnkgZGF0YSBidWZmZXIgc2l6ZSAoY29udHJvbGxlbikuICBSZXR1cm5zIHRoZSB0dXBsZSByZXR1cm4KQEAgLTI5MTksOCArMzIwMyw2IEBACiAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsIFB5X3NzaXplX3QgY29udHJvbGxlbiwKICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICooKm1ha2V2YWwpKHNzaXplX3QsIHZvaWQgKiksIHZvaWQgKm1ha2V2YWxfZGF0YSkKIHsKLSAgICBzc2l6ZV90IGJ5dGVzX3JlY2VpdmVkID0gLTE7Ci0gICAgaW50IHRpbWVvdXQ7CiAgICAgc29ja19hZGRyX3QgYWRkcmJ1ZjsKICAgICBzb2NrbGVuX3QgYWRkcmJ1ZmxlbjsKICAgICBzdHJ1Y3QgbXNnaGRyIG1zZyA9IHswfTsKQEAgLTI5MjksNiArMzIxMSw3IEBACiAgICAgc3RydWN0IGNtc2doZHIgKmNtc2doOwogICAgIHNpemVfdCBjbXNnZGF0YWxlbiA9IDA7CiAgICAgaW50IGNtc2dfc3RhdHVzOworICAgIHN0cnVjdCBzb2NrX3JlY3Ztc2cgY3R4OwogCiAgICAgLyogWFhYOiBQT1NJWCBzYXlzIHRoYXQgbXNnX25hbWUgYW5kIG1zZ19uYW1lbGVuICJzaGFsbCBiZQogICAgICAgIGlnbm9yZWQiIHdoZW4gdGhlIHNvY2tldCBpcyBjb25uZWN0ZWQgKExpbnV4IGZpbGxzIHRoZW0gaW4KQEAgLTI5NTUsMjggKzMyMzgsMTcgQEAKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIH0KIAotICAgIEJFR0lOX1NFTEVDVF9MT09QKHMpCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKICAgICBtc2cubXNnX25hbWUgPSBTQVMyU0EoJmFkZHJidWYpOwogICAgIG1zZy5tc2dfbmFtZWxlbiA9IGFkZHJidWZsZW47CiAgICAgbXNnLm1zZ19pb3YgPSBpb3Y7CiAgICAgbXNnLm1zZ19pb3ZsZW4gPSBpb3ZsZW47CiAgICAgbXNnLm1zZ19jb250cm9sID0gY29udHJvbGJ1ZjsKICAgICBtc2cubXNnX2NvbnRyb2xsZW4gPSBjb250cm9sbGVuOwotICAgIHRpbWVvdXQgPSBpbnRlcm5hbF9zZWxlY3RfZXgocywgMCwgaW50ZXJ2YWwpOwotICAgIGlmICghdGltZW91dCkKLSAgICAgICAgYnl0ZXNfcmVjZWl2ZWQgPSByZWN2bXNnKHMtPnNvY2tfZmQsICZtc2csIGZsYWdzKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKLSAgICBpZiAodGltZW91dCA9PSAxKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOwotICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgfQotICAgIEVORF9TRUxFQ1RfTE9PUChzKQogCi0gICAgaWYgKGJ5dGVzX3JlY2VpdmVkIDwgMCkgewotICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKKyAgICBjdHgubXNnID0gJm1zZzsKKyAgICBjdHguZmxhZ3MgPSBmbGFnczsKKyAgICBpZiAoc29ja19jYWxsKHMsIDAsIHNvY2tfcmVjdm1zZ19pbXBsLCAmY3R4KSA8IDApCiAgICAgICAgIGdvdG8gZmluYWxseTsKLSAgICB9CiAKICAgICAvKiBNYWtlIGxpc3Qgb2YgKGxldmVsLCB0eXBlLCBkYXRhKSB0dXBsZXMgZnJvbSBjb250cm9sIG1lc3NhZ2VzLiAqLwogICAgIGlmICgoY21zZ19saXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkKQEAgLTMwMTgsNyArMzI5MCw3IEBACiAgICAgfQogCiAgICAgcmV0dmFsID0gUHlfQnVpbGRWYWx1ZSgiTk9pTiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoKm1ha2V2YWwpKGJ5dGVzX3JlY2VpdmVkLCBtYWtldmFsX2RhdGEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCptYWtldmFsKShjdHgucmVzdWx0LCBtYWtldmFsX2RhdGEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zZ19saXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltc2cubXNnX2ZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZXNvY2thZGRyKHMtPnNvY2tfZmQsIFNBUzJTQSgmYWRkcmJ1ZiksCkBAIC0zMjI2LDE1ICszNDk4LDM2IEBACiAjZW5kaWYgICAgLyogQ01TR19MRU4gKi8KIAogCitzdHJ1Y3Qgc29ja19zZW5kIHsKKyAgICBjaGFyICpidWY7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgaW50IGZsYWdzOworICAgIFB5X3NzaXplX3QgcmVzdWx0OworfTsKKworc3RhdGljIGludAorc29ja19zZW5kX2ltcGwoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCB2b2lkICpkYXRhKQoreworICAgIHN0cnVjdCBzb2NrX3NlbmQgKmN0eCA9IGRhdGE7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKGN0eC0+bGVuID4gSU5UX01BWCkKKyAgICAgICAgY3R4LT5sZW4gPSBJTlRfTUFYOworICAgIGN0eC0+cmVzdWx0ID0gc2VuZChzLT5zb2NrX2ZkLCBjdHgtPmJ1ZiwgKGludCljdHgtPmxlbiwgY3R4LT5mbGFncyk7CisjZWxzZQorICAgIGN0eC0+cmVzdWx0ID0gc2VuZChzLT5zb2NrX2ZkLCBjdHgtPmJ1ZiwgY3R4LT5sZW4sIGN0eC0+ZmxhZ3MpOworI2VuZGlmCisgICAgcmV0dXJuIChjdHgtPnJlc3VsdCA+PSAwKTsKK30KKwogLyogcy5zZW5kKGRhdGEgWyxmbGFnc10pIG1ldGhvZCAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgogc29ja19zZW5kKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqYnVmOwotICAgIFB5X3NzaXplX3QgbGVuLCBuID0gLTE7Ci0gICAgaW50IGZsYWdzID0gMCwgdGltZW91dDsKKyAgICBpbnQgZmxhZ3MgPSAwOwogICAgIFB5X2J1ZmZlciBwYnVmOworICAgIHN0cnVjdCBzb2NrX3NlbmQgY3R4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxpOnNlbmQiLCAmcGJ1ZiwgJmZsYWdzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMjQzLDMzICszNTM2LDE2IEBACiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwogICAgICAgICByZXR1cm4gc2VsZWN0X2Vycm9yKCk7CiAgICAgfQotICAgIGJ1ZiA9IHBidWYuYnVmOwotICAgIGxlbiA9IHBidWYubGVuOwotCi0gICAgQkVHSU5fU0VMRUNUX0xPT1AocykKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgdGltZW91dCA9IGludGVybmFsX3NlbGVjdF9leChzLCAxLCBpbnRlcnZhbCk7Ci0gICAgaWYgKCF0aW1lb3V0KSB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgICAgICBpZiAobGVuID4gSU5UX01BWCkKLSAgICAgICAgICAgIGxlbiA9IElOVF9NQVg7Ci0gICAgICAgIG4gPSBzZW5kKHMtPnNvY2tfZmQsIGJ1ZiwgKGludClsZW4sIGZsYWdzKTsKLSNlbHNlCi0gICAgICAgIG4gPSBzZW5kKHMtPnNvY2tfZmQsIGJ1ZiwgbGVuLCBmbGFncyk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAodGltZW91dCA9PSAxKSB7CisgICAgY3R4LmJ1ZiA9IHBidWYuYnVmOworICAgIGN0eC5sZW4gPSBwYnVmLmxlbjsKKyAgICBjdHguZmxhZ3MgPSBmbGFnczsKKyAgICBpZiAoc29ja19jYWxsKHMsIDEsIHNvY2tfc2VuZF9pbXBsLCAmY3R4KSA8IDApIHsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgRU5EX1NFTEVDVF9MT09QKHMpCi0KICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAobiA8IDApCi0gICAgICAgIHJldHVybiBzLT5lcnJvcmhhbmRsZXIoKTsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KG4pOworCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChjdHgucmVzdWx0KTsKIH0KIAogUHlEb2NfU1RSVkFSKHNlbmRfZG9jLApAQCAtMzI4Niw5ICszNTYyLDE1IEBACiBzb2NrX3NlbmRhbGwoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBjaGFyICpidWY7Ci0gICAgUHlfc3NpemVfdCBsZW4sIG4gPSAtMTsKLSAgICBpbnQgZmxhZ3MgPSAwLCB0aW1lb3V0LCBzYXZlZF9lcnJubzsKKyAgICBQeV9zc2l6ZV90IGxlbiwgbjsKKyAgICBpbnQgZmxhZ3MgPSAwOwogICAgIFB5X2J1ZmZlciBwYnVmOworICAgIHN0cnVjdCBzb2NrX3NlbmQgY3R4OworICAgIGludCBoYXNfdGltZW91dCA9IChzLT5zb2NrX3RpbWVvdXQgPiAwKTsKKyAgICBfUHlUaW1lX3QgaW50ZXJ2YWwgPSBzLT5zb2NrX3RpbWVvdXQ7CisgICAgX1B5VGltZV90IGRlYWRsaW5lID0gMDsKKyAgICBpbnQgZGVhZGxpbmVfaW5pdGlhbGl6ZWQgPSAwOworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxpOnNlbmRhbGwiLCAmcGJ1ZiwgJmZsYWdzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMzAxLDUwICszNTgzLDQ3IEBACiAgICAgfQogCiAgICAgZG8gewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHRpbWVvdXQgPSBpbnRlcm5hbF9zZWxlY3QocywgMSk7Ci0gICAgICAgIG4gPSAtMTsKLSAgICAgICAgaWYgKCF0aW1lb3V0KSB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgICAgICAgICAgaWYgKGxlbiA+IElOVF9NQVgpCi0gICAgICAgICAgICAgICAgbGVuID0gSU5UX01BWDsKLSAgICAgICAgICAgIG4gPSBzZW5kKHMtPnNvY2tfZmQsIGJ1ZiwgKGludClsZW4sIGZsYWdzKTsKLSNlbHNlCi0gICAgICAgICAgICBuID0gc2VuZChzLT5zb2NrX2ZkLCBidWYsIGxlbiwgZmxhZ3MpOwotI2VuZGlmCisgICAgICAgIGlmIChoYXNfdGltZW91dCkgeworICAgICAgICAgICAgaWYgKGRlYWRsaW5lX2luaXRpYWxpemVkKSB7CisgICAgICAgICAgICAgICAgLyogcmVjb21wdXRlIHRoZSB0aW1lb3V0ICovCisgICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSBkZWFkbGluZSAtIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGRlYWRsaW5lX2luaXRpYWxpemVkID0gMTsKKyAgICAgICAgICAgICAgICBkZWFkbGluZSA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKSArIHMtPnNvY2tfdGltZW91dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGludGVydmFsIDw9IDApIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKHRpbWVvdXQgPT0gMSkgewotICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIC8qIFB5RXJyX0NoZWNrU2lnbmFscygpIG1pZ2h0IGNoYW5nZSBlcnJubyAqLwotICAgICAgICBzYXZlZF9lcnJubyA9IGVycm5vOworCisgICAgICAgIGN0eC5idWYgPSBidWY7CisgICAgICAgIGN0eC5sZW4gPSBsZW47CisgICAgICAgIGN0eC5mbGFncyA9IGZsYWdzOworICAgICAgICBpZiAoc29ja19jYWxsX2V4KHMsIDEsIHNvY2tfc2VuZF9pbXBsLCAmY3R4LCAwLCBOVUxMLCBpbnRlcnZhbCkgPCAwKQorICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICBuID0gY3R4LnJlc3VsdDsKKyAgICAgICAgYXNzZXJ0KG4gPj0gMCk7CisKKyAgICAgICAgYnVmICs9IG47CisgICAgICAgIGxlbiAtPSBuOworCiAgICAgICAgIC8qIFdlIG11c3QgcnVuIG91ciBzaWduYWwgaGFuZGxlcnMgYmVmb3JlIGxvb3BpbmcgYWdhaW4uCiAgICAgICAgICAgIHNlbmQoKSBjYW4gcmV0dXJuIGEgc3VjY2Vzc2Z1bCBwYXJ0aWFsIHdyaXRlIHdoZW4gaXQgaXMKICAgICAgICAgICAgaW50ZXJydXB0ZWQsIHNvIHdlIGNhbid0IHJlc3RyaWN0IG91cnNlbHZlcyB0byBFSU5UUi4gKi8KLSAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKSB7Ci0gICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChuIDwgMCkgewotICAgICAgICAgICAgLyogSWYgaW50ZXJydXB0ZWQsIHRyeSBhZ2FpbiAqLwotICAgICAgICAgICAgaWYgKHNhdmVkX2Vycm5vID09IEVJTlRSKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGJ1ZiArPSBuOwotICAgICAgICBsZW4gLT0gbjsKKyAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQorICAgICAgICAgICAgZ290byBkb25lOwogICAgIH0gd2hpbGUgKGxlbiA+IDApOwogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwogCi0gICAgaWYgKG4gPCAwKQotICAgICAgICByZXR1cm4gcy0+ZXJyb3JoYW5kbGVyKCk7Ci0KICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgcmVzID0gUHlfTm9uZTsKKworZG9uZToKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKKyAgICByZXR1cm4gcmVzOwogfQogCiBQeURvY19TVFJWQVIoc2VuZGFsbF9kb2MsCkBAIC0zMzU2LDYgKzM2MzUsMzIgQEAKIHRvIHRlbGwgaG93IG11Y2ggZGF0YSBoYXMgYmVlbiBzZW50LiIpOwogCiAKK3N0cnVjdCBzb2NrX3NlbmR0byB7CisgICAgY2hhciAqYnVmOworICAgIFB5X3NzaXplX3QgbGVuOworICAgIGludCBmbGFnczsKKyAgICBpbnQgYWRkcmxlbjsKKyAgICBzb2NrX2FkZHJfdCAqYWRkcmJ1ZjsKKyAgICBQeV9zc2l6ZV90IHJlc3VsdDsKK307CisKK3N0YXRpYyBpbnQKK3NvY2tfc2VuZHRvX2ltcGwoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCB2b2lkICpkYXRhKQoreworICAgIHN0cnVjdCBzb2NrX3NlbmR0byAqY3R4ID0gZGF0YTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoY3R4LT5sZW4gPiBJTlRfTUFYKQorICAgICAgICBjdHgtPmxlbiA9IElOVF9NQVg7CisgICAgY3R4LT5yZXN1bHQgPSBzZW5kdG8ocy0+c29ja19mZCwgY3R4LT5idWYsIChpbnQpY3R4LT5sZW4sIGN0eC0+ZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgU0FTMlNBKGN0eC0+YWRkcmJ1ZiksIGN0eC0+YWRkcmxlbik7CisjZWxzZQorICAgIGN0eC0+cmVzdWx0ID0gc2VuZHRvKHMtPnNvY2tfZmQsIGN0eC0+YnVmLCBjdHgtPmxlbiwgY3R4LT5mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICBTQVMyU0EoY3R4LT5hZGRyYnVmKSwgY3R4LT5hZGRybGVuKTsKKyNlbmRpZgorICAgIHJldHVybiAoY3R4LT5yZXN1bHQgPj0gMCk7Cit9CisKIC8qIHMuc2VuZHRvKGRhdGEsIFtmbGFncyxdIHNvY2thZGRyKSBtZXRob2QgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTMzNjMsMTEgKzM2NjgsMTAgQEAKIHsKICAgICBQeV9idWZmZXIgcGJ1ZjsKICAgICBQeU9iamVjdCAqYWRkcm87Ci0gICAgY2hhciAqYnVmOwotICAgIFB5X3NzaXplX3QgbGVuLCBhcmdsZW47CisgICAgUHlfc3NpemVfdCBhcmdsZW47CiAgICAgc29ja19hZGRyX3QgYWRkcmJ1ZjsKLSAgICBpbnQgYWRkcmxlbiwgZmxhZ3MsIHRpbWVvdXQ7Ci0gICAgUHlfc3NpemVfdCBuID0gLTE7CisgICAgaW50IGFkZHJsZW4sIGZsYWdzOworICAgIHN0cnVjdCBzb2NrX3NlbmR0byBjdHg7CiAKICAgICBmbGFncyA9IDA7CiAgICAgYXJnbGVuID0gUHlUdXBsZV9TaXplKGFyZ3MpOwpAQCAtMzM4OCw5ICszNjkyLDYgQEAKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBidWYgPSBwYnVmLmJ1ZjsKLSAgICBsZW4gPSBwYnVmLmxlbjsKLQogICAgIGlmICghSVNfU0VMRUNUQUJMRShzKSkgewogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKICAgICAgICAgcmV0dXJuIHNlbGVjdF9lcnJvcigpOwpAQCAtMzQwMSwzMiArMzcwMiwxOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBCRUdJTl9TRUxFQ1RfTE9PUChzKQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICB0aW1lb3V0ID0gaW50ZXJuYWxfc2VsZWN0X2V4KHMsIDEsIGludGVydmFsKTsKLSAgICBpZiAoIXRpbWVvdXQpIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIGlmIChsZW4gPiBJTlRfTUFYKQotICAgICAgICAgICAgbGVuID0gSU5UX01BWDsKLSAgICAgICAgbiA9IHNlbmR0byhzLT5zb2NrX2ZkLCBidWYsIChpbnQpbGVuLCBmbGFncywKLSAgICAgICAgICAgICAgICAgICBTQVMyU0EoJmFkZHJidWYpLCBhZGRybGVuKTsKLSNlbHNlCi0gICAgICAgIG4gPSBzZW5kdG8ocy0+c29ja19mZCwgYnVmLCBsZW4sIGZsYWdzLAotICAgICAgICAgICAgICAgICAgIFNBUzJTQSgmYWRkcmJ1ZiksIGFkZHJsZW4pOwotI2VuZGlmCi0gICAgfQotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAodGltZW91dCA9PSAxKSB7CisgICAgY3R4LmJ1ZiA9IHBidWYuYnVmOworICAgIGN0eC5sZW4gPSBwYnVmLmxlbjsKKyAgICBjdHguZmxhZ3MgPSBmbGFnczsKKyAgICBjdHguYWRkcmxlbiA9IGFkZHJsZW47CisgICAgY3R4LmFkZHJidWYgPSAmYWRkcmJ1ZjsKKyAgICBpZiAoc29ja19jYWxsKHMsIDEsIHNvY2tfc2VuZHRvX2ltcGwsICZjdHgpIDwgMCkgewogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF90aW1lb3V0LCAidGltZWQgb3V0Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBFTkRfU0VMRUNUX0xPT1AocykKICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAobiA8IDApCi0gICAgICAgIHJldHVybiBzLT5lcnJvcmhhbmRsZXIoKTsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KG4pOworCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChjdHgucmVzdWx0KTsKIH0KIAogUHlEb2NfU1RSVkFSKHNlbmR0b19kb2MsCkBAIC0zNDM5LDYgKzM3MjYsMjEgQEAKIC8qIFRoZSBzZW5kbXNnKCkgYW5kIHJlY3Ztc2dbX2ludG9dKCkgbWV0aG9kcyByZXF1aXJlIGEgd29ya2luZwogICAgQ01TR19MRU4oKS4gIFNlZSB0aGUgY29tbWVudCBuZWFyIGdldF9DTVNHX0xFTigpLiAqLwogI2lmZGVmIENNU0dfTEVOCitzdHJ1Y3Qgc29ja19zZW5kbXNnIHsKKyAgICBzdHJ1Y3QgbXNnaGRyICptc2c7CisgICAgaW50IGZsYWdzOworICAgIHNzaXplX3QgcmVzdWx0OworfTsKKworc3RhdGljIGludAorc29ja19zZW5kbXNnX2ltcGwoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCB2b2lkICpkYXRhKQoreworICAgIHN0cnVjdCBzb2NrX3NlbmRtc2cgKmN0eCA9IGRhdGE7CisKKyAgICBjdHgtPnJlc3VsdCA9IHNlbmRtc2cocy0+c29ja19mZCwgY3R4LT5tc2csIGN0eC0+ZmxhZ3MpOworICAgIHJldHVybiAoY3R4LT5yZXN1bHQgPj0gMCk7Cit9CisKIC8qIHMuc2VuZG1zZyhidWZmZXJzWywgYW5jZGF0YVssIGZsYWdzWywgYWRkcmVzc11dXSkgbWV0aG9kICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zNDU2LDEwICszNzU4LDEwIEBACiAgICAgfSAqY21zZ3MgPSBOVUxMOwogICAgIHZvaWQgKmNvbnRyb2xidWYgPSBOVUxMOwogICAgIHNpemVfdCBjb250cm9sbGVuLCBjb250cm9sbGVuX2xhc3Q7Ci0gICAgc3NpemVfdCBieXRlc19zZW50ID0gLTE7Ci0gICAgaW50IGFkZHJsZW4sIHRpbWVvdXQsIGZsYWdzID0gMDsKKyAgICBpbnQgYWRkcmxlbiwgZmxhZ3MgPSAwOwogICAgIFB5T2JqZWN0ICpkYXRhX2FyZywgKmNtc2dfYXJnID0gTlVMTCwgKmFkZHJfYXJnID0gTlVMTCwgKmRhdGFfZmFzdCA9IE5VTEwsCiAgICAgICAgICpjbXNnX2Zhc3QgPSBOVUxMLCAqcmV0dmFsID0gTlVMTDsKKyAgICBzdHJ1Y3Qgc29ja19zZW5kbXNnIGN0eDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPaU86c2VuZG1zZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhX2FyZywgJmNtc2dfYXJnLCAmZmxhZ3MsICZhZGRyX2FyZykpCkBAIC0zNjEzLDIzICszOTE1LDEyIEBACiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICB9CiAKLSAgICBCRUdJTl9TRUxFQ1RfTE9PUChzKQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7Ci0gICAgdGltZW91dCA9IGludGVybmFsX3NlbGVjdF9leChzLCAxLCBpbnRlcnZhbCk7Ci0gICAgaWYgKCF0aW1lb3V0KQotICAgICAgICBieXRlc19zZW50ID0gc2VuZG1zZyhzLT5zb2NrX2ZkLCAmbXNnLCBmbGFncyk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFM7Ci0gICAgaWYgKHRpbWVvdXQgPT0gMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKKyAgICBjdHgubXNnID0gJm1zZzsKKyAgICBjdHguZmxhZ3MgPSBmbGFnczsKKyAgICBpZiAoc29ja19jYWxsKHMsIDEsIHNvY2tfc2VuZG1zZ19pbXBsLCAmY3R4KSA8IDApCiAgICAgICAgIGdvdG8gZmluYWxseTsKLSAgICB9Ci0gICAgRU5EX1NFTEVDVF9MT09QKHMpCiAKLSAgICBpZiAoYnl0ZXNfc2VudCA8IDApIHsKLSAgICAgICAgcy0+ZXJyb3JoYW5kbGVyKCk7Ci0gICAgICAgIGdvdG8gZmluYWxseTsKLSAgICB9Ci0gICAgcmV0dmFsID0gUHlMb25nX0Zyb21Tc2l6ZV90KGJ5dGVzX3NlbnQpOworICAgIHJldHZhbCA9IFB5TG9uZ19Gcm9tU3NpemVfdChjdHgucmVzdWx0KTsKIAogZmluYWxseToKICAgICBQeU1lbV9GcmVlKGNvbnRyb2xidWYpOwpAQCAtMzc5Niw3ICs0MDg3LDcgQEAKICAgICB7InNoYXJlIiwgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19zaGFyZSwgTUVUSF9WQVJBUkdTLAogICAgICAgICAgICAgICAgICAgICAgIHNvY2tfc2hhcmVfZG9jfSwKICNlbmRpZgotICAgIHsibGlzdGVuIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19saXN0ZW4sIE1FVEhfTywKKyAgICB7Imxpc3RlbiIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfbGlzdGVuLCBNRVRIX1ZBUkFSR1MsCiAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuX2RvY30sCiAgICAgeyJyZWN2IiwgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilzb2NrX3JlY3YsIE1FVEhfVkFSQVJHUywKICAgICAgICAgICAgICAgICAgICAgICByZWN2X2RvY30sCkBAIC0zODM4LDEwICs0MTI5LDE0IEBACiAgICAgICAgeyJmYW1pbHkiLCBUX0lOVCwgb2Zmc2V0b2YoUHlTb2NrZXRTb2NrT2JqZWN0LCBzb2NrX2ZhbWlseSksIFJFQURPTkxZLCAidGhlIHNvY2tldCBmYW1pbHkifSwKICAgICAgICB7InR5cGUiLCBUX0lOVCwgb2Zmc2V0b2YoUHlTb2NrZXRTb2NrT2JqZWN0LCBzb2NrX3R5cGUpLCBSRUFET05MWSwgInRoZSBzb2NrZXQgdHlwZSJ9LAogICAgICAgIHsicHJvdG8iLCBUX0lOVCwgb2Zmc2V0b2YoUHlTb2NrZXRTb2NrT2JqZWN0LCBzb2NrX3Byb3RvKSwgUkVBRE9OTFksICJ0aGUgc29ja2V0IHByb3RvY29sIn0sCi0gICAgICAgeyJ0aW1lb3V0IiwgVF9ET1VCTEUsIG9mZnNldG9mKFB5U29ja2V0U29ja09iamVjdCwgc29ja190aW1lb3V0KSwgUkVBRE9OTFksICJ0aGUgc29ja2V0IHRpbWVvdXQifSwKICAgICAgICB7MH0sCiB9OwogCitzdGF0aWMgUHlHZXRTZXREZWYgc29ja19nZXRzZXRsaXN0W10gPSB7CisgICAgeyJ0aW1lb3V0IiwgKGdldHRlcilzb2NrX2dldHRpbWVvdXQsIE5VTEwsIFB5RG9jX1NUUigidGhlIHNvY2tldCB0aW1lb3V0Iil9LAorICAgIHtOVUxMfSAvKiBzZW50aW5lbCAqLworfTsKKwogLyogRGVhbGxvY2F0ZSBhIHNvY2tldCBvYmplY3QgaW4gcmVzcG9uc2UgdG8gdGhlIGxhc3QgUHlfREVDUkVGKCkuCiAgICBGaXJzdCBjbG9zZSB0aGUgZmlsZSBkZXNjcmlwdGlvbi4gKi8KIApAQCAtMzkwNSw3ICs0MjAwLDcgQEAKICAgICBuZXcgPSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAobmV3ICE9IE5VTEwpIHsKICAgICAgICAgKChQeVNvY2tldFNvY2tPYmplY3QgKiluZXcpLT5zb2NrX2ZkID0gLTE7Ci0gICAgICAgICgoUHlTb2NrZXRTb2NrT2JqZWN0ICopbmV3KS0+c29ja190aW1lb3V0ID0gLTEuMDsKKyAgICAgICAgKChQeVNvY2tldFNvY2tPYmplY3QgKiluZXcpLT5zb2NrX3RpbWVvdXQgPSBfUHlUaW1lX0Zyb21TZWNvbmRzKC0xKTsKICAgICAgICAgKChQeVNvY2tldFNvY2tPYmplY3QgKiluZXcpLT5lcnJvcmhhbmRsZXIgPSAmc2V0X2Vycm9yOwogICAgIH0KICAgICByZXR1cm4gbmV3OwpAQCAtNDA4OCw3ICs0MzgzLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgc29ja19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgc29ja19tZW1iZXJsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICBzb2NrX2dldHNldGxpc3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCkBAIC00MjI3LDcgKzQ1MjIsNyBAQAogLyogQ29udmVuaWVuY2UgZnVuY3Rpb24gY29tbW9uIHRvIGdldGhvc3RieW5hbWVfZXggYW5kIGdldGhvc3RieWFkZHIgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWdldGhvc3RfY29tbW9uKHN0cnVjdCBob3N0ZW50ICpoLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIGludCBhbGVuLCBpbnQgYWYpCitnZXRob3N0X2NvbW1vbihzdHJ1Y3QgaG9zdGVudCAqaCwgc3RydWN0IHNvY2thZGRyICphZGRyLCBzaXplX3QgYWxlbiwgaW50IGFmKQogewogICAgIGNoYXIgKipwY2g7CiAgICAgUHlPYmplY3QgKnJ0bl90dXBsZSA9IChQeU9iamVjdCAqKU5VTEw7CkBAIC00OTQ0LDIxICs1MjM5LDIyIEBACiBzdGF0aWMgUHlPYmplY3QqCiBzb2NrZXRfaW5ldF9udG9hKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpwYWNrZWRfc3RyOwotICAgIGludCBhZGRyX2xlbjsKKyAgICBQeV9idWZmZXIgcGFja2VkX2lwOwogICAgIHN0cnVjdCBpbl9hZGRyIHBhY2tlZF9hZGRyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5IzppbmV0X250b2EiLCAmcGFja2VkX3N0ciwgJmFkZHJfbGVuKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6aW5ldF9udG9hIiwgJnBhY2tlZF9pcCkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGFkZHJfbGVuICE9IHNpemVvZihwYWNrZWRfYWRkcikpIHsKKyAgICBpZiAocGFja2VkX2lwLmxlbiAhPSBzaXplb2YocGFja2VkX2FkZHIpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgInBhY2tlZCBJUCB3cm9uZyBsZW5ndGggZm9yIGluZXRfbnRvYSIpOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYWNrZWRfaXApOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBtZW1jcHkoJnBhY2tlZF9hZGRyLCBwYWNrZWRfc3RyLCBhZGRyX2xlbik7CisgICAgbWVtY3B5KCZwYWNrZWRfYWRkciwgcGFja2VkX2lwLmJ1ZiwgcGFja2VkX2lwLmxlbik7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGFja2VkX2lwKTsKIAogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhpbmV0X250b2EocGFja2VkX2FkZHIpKTsKIH0KQEAgLTUwNjksOCArNTM2NSw3IEBACiBzb2NrZXRfaW5ldF9udG9wKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgYWY7Ci0gICAgY2hhciogcGFja2VkOwotICAgIGludCBsZW47CisgICAgUHlfYnVmZmVyIHBhY2tlZF9pcDsKICAgICBjb25zdCBjaGFyKiByZXR2YWw7CiAjaWZkZWYgRU5BQkxFX0lQVjYKICAgICBjaGFyIGlwW1B5X01BWChJTkVUX0FERFJTVFJMRU4sIElORVQ2X0FERFJTVFJMRU4pICsgMV07CkBAIC01MDgxLDMxICs1Mzc2LDM1IEBACiAgICAgLyogR3VhcmFudGVlIE5VTC10ZXJtaW5hdGlvbiBmb3IgUHlVbmljb2RlX0Zyb21TdHJpbmcoKSBiZWxvdyAqLwogICAgIG1lbXNldCgodm9pZCAqKSAmaXBbMF0sICdcMCcsIHNpemVvZihpcCkpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSM6aW5ldF9udG9wIiwgJmFmLCAmcGFja2VkLCAmbGVuKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqOmluZXRfbnRvcCIsICZhZiwgJnBhY2tlZF9pcCkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgaWYgKGFmID09IEFGX0lORVQpIHsKLSAgICAgICAgaWYgKGxlbiAhPSBzaXplb2Yoc3RydWN0IGluX2FkZHIpKSB7CisgICAgICAgIGlmIChwYWNrZWRfaXAubGVuICE9IHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICJpbnZhbGlkIGxlbmd0aCBvZiBwYWNrZWQgSVAgYWRkcmVzcyBzdHJpbmciKTsKKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBhY2tlZF9pcCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogI2lmZGVmIEVOQUJMRV9JUFY2CiAgICAgfSBlbHNlIGlmIChhZiA9PSBBRl9JTkVUNikgewotICAgICAgICBpZiAobGVuICE9IHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKSB7CisgICAgICAgIGlmIChwYWNrZWRfaXAubGVuICE9IHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAiaW52YWxpZCBsZW5ndGggb2YgcGFja2VkIElQIGFkZHJlc3Mgc3RyaW5nIik7CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYWNrZWRfaXApOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICNlbmRpZgogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgInVua25vd24gYWRkcmVzcyBmYW1pbHkgJWQiLCBhZik7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBhY2tlZF9pcCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJldHZhbCA9IGluZXRfbnRvcChhZiwgcGFja2VkLCBpcCwgc2l6ZW9mKGlwKSk7CisgICAgcmV0dmFsID0gaW5ldF9udG9wKGFmLCBwYWNrZWRfaXAuYnVmLCBpcCwgc2l6ZW9mKGlwKSk7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGFja2VkX2lwKTsKICAgICBpZiAoIXJldHZhbCkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTEyNCw4ICs1NDIzLDcgQEAKIHNvY2tldF9pbmV0X250b3AoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGludCBhZjsKLSAgICBjaGFyKiBwYWNrZWQ7Ci0gICAgaW50IGxlbjsKKyAgICBQeV9idWZmZXIgcGFja2VkX2lwOwogICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgYWRkcjsKICAgICBEV09SRCBhZGRybGVuLCByZXQsIHJldGxlbjsKICNpZmRlZiBFTkFCTEVfSVBWNgpAQCAtNTEzNywzOCArNTQzNSw0MiBAQAogICAgIC8qIEd1YXJhbnRlZSBOVUwtdGVybWluYXRpb24gZm9yIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCkgYmVsb3cgKi8KICAgICBtZW1zZXQoKHZvaWQgKikgJmlwWzBdLCAnXDAnLCBzaXplb2YoaXApKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkjOmluZXRfbnRvcCIsICZhZiwgJnBhY2tlZCwgJmxlbikpIHsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5KjppbmV0X250b3AiLCAmYWYsICZwYWNrZWRfaXApKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIGlmIChhZiA9PSBBRl9JTkVUKSB7CiAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqIGFkZHI0ID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSZhZGRyOwogCi0gICAgICAgIGlmIChsZW4gIT0gc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSkgeworICAgICAgICBpZiAocGFja2VkX2lwLmxlbiAhPSBzaXplb2Yoc3RydWN0IGluX2FkZHIpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAiaW52YWxpZCBsZW5ndGggb2YgcGFja2VkIElQIGFkZHJlc3Mgc3RyaW5nIik7CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYWNrZWRfaXApOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgbWVtc2V0KGFkZHI0LCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CiAgICAgICAgIGFkZHI0LT5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKLSAgICAgICAgbWVtY3B5KCYoYWRkcjQtPnNpbl9hZGRyKSwgcGFja2VkLCBzaXplb2YoYWRkcjQtPnNpbl9hZGRyKSk7CisgICAgICAgIG1lbWNweSgmKGFkZHI0LT5zaW5fYWRkciksIHBhY2tlZF9pcC5idWYsIHNpemVvZihhZGRyNC0+c2luX2FkZHIpKTsKICAgICAgICAgYWRkcmxlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOwogICAgIH0gZWxzZSBpZiAoYWYgPT0gQUZfSU5FVDYpIHsKLSAgICAgICAgaWYgKGxlbiAhPSBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSkgeworICAgICAgICBpZiAocGFja2VkX2lwLmxlbiAhPSBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgImludmFsaWQgbGVuZ3RoIG9mIHBhY2tlZCBJUCBhZGRyZXNzIHN0cmluZyIpOworICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGFja2VkX2lwKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKICAgICAgICAgbWVtc2V0KCZhZGRyLCAwLCBzaXplb2YoYWRkcikpOwogICAgICAgICBhZGRyLnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7Ci0gICAgICAgIG1lbWNweSgmKGFkZHIuc2luNl9hZGRyKSwgcGFja2VkLCBzaXplb2YoYWRkci5zaW42X2FkZHIpKTsKKyAgICAgICAgbWVtY3B5KCYoYWRkci5zaW42X2FkZHIpLCBwYWNrZWRfaXAuYnVmLCBzaXplb2YoYWRkci5zaW42X2FkZHIpKTsKICAgICAgICAgYWRkcmxlbiA9IHNpemVvZihhZGRyKTsKICAgICB9IGVsc2UgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICJ1bmtub3duIGFkZHJlc3MgZmFtaWx5ICVkIiwgYWYpOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYWNrZWRfaXApOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGFja2VkX2lwKTsKIAogICAgIHJldGxlbiA9IHNpemVvZihpcCk7CiAgICAgcmV0ID0gV1NBQWRkcmVzc1RvU3RyaW5nQSgoc3RydWN0IHNvY2thZGRyKikmYWRkciwgYWRkcmxlbiwgTlVMTCwKQEAgLTU0MDMsMTIgKzU3MDUsMTQgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzb2NrZXRfZ2V0ZGVmYXVsdHRpbWVvdXQoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgaWYgKGRlZmF1bHR0aW1lb3V0IDwgMC4wKSB7CisgICAgaWYgKGRlZmF1bHR0aW1lb3V0IDwgMCkgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoZGVmYXVsdHRpbWVvdXQpOworICAgIGVsc2UgeworICAgICAgICBkb3VibGUgc2Vjb25kcyA9IF9QeVRpbWVfQXNTZWNvbmRzRG91YmxlKGRlZmF1bHR0aW1lb3V0KTsKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShzZWNvbmRzKTsKKyAgICB9CiB9CiAKIFB5RG9jX1NUUlZBUihnZXRkZWZhdWx0dGltZW91dF9kb2MsCkBAIC01NDIxLDE5ICs1NzI1LDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogc29ja2V0X3NldGRlZmF1bHR0aW1lb3V0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQogewotICAgIGRvdWJsZSB0aW1lb3V0OworICAgIF9QeVRpbWVfdCB0aW1lb3V0OwogCi0gICAgaWYgKGFyZyA9PSBQeV9Ob25lKQotICAgICAgICB0aW1lb3V0ID0gLTEuMDsKLSAgICBlbHNlIHsKLSAgICAgICAgdGltZW91dCA9IFB5RmxvYXRfQXNEb3VibGUoYXJnKTsKLSAgICAgICAgaWYgKHRpbWVvdXQgPCAwLjApIHsKLSAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRpbWVvdXQgdmFsdWUgb3V0IG9mIHJhbmdlIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KKyAgICBpZiAoc29ja2V0X3BhcnNlX3RpbWVvdXQoJnRpbWVvdXQsIGFyZykgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGRlZmF1bHR0aW1lb3V0ID0gdGltZW91dDsKIApAQCAtNTc4MCwxMSArNjA3NSwxNSBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmIChzdXBwb3J0X3dzYV9ub19pbmhlcml0ID09IC0xKSB7CisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTgwMAorICAgICAgICBzdXBwb3J0X3dzYV9ub19pbmhlcml0ID0gSXNXaW5kb3dzN1NQMU9yR3JlYXRlcigpOworI2Vsc2UKICAgICAgICAgRFdPUkQgdmVyc2lvbiA9IEdldFZlcnNpb24oKTsKICAgICAgICAgRFdPUkQgbWFqb3IgPSAoRFdPUkQpTE9CWVRFKExPV09SRCh2ZXJzaW9uKSk7CiAgICAgICAgIERXT1JEIG1pbm9yID0gKERXT1JEKUhJQllURShMT1dPUkQodmVyc2lvbikpOwogICAgICAgICAvKiBuZWVkIFdpbmRvd3MgNyBTUDEsIDIwMDggUjIgU1AxIG9yIGxhdGVyICovCi0gICAgICAgIHN1cHBvcnRfd3NhX25vX2luaGVyaXQgPSAobWFqb3IgPj0gNiAmJiBtaW5vciA+PSAxKTsKKyAgICAgICAgc3VwcG9ydF93c2Ffbm9faW5oZXJpdCA9IG1ham9yID4gNiB8fCAobWFqb3IgPT0gNiAmJiBtaW5vciA+PSAxKTsKKyNlbmRpZgogICAgIH0KICNlbmRpZgogCkBAIC02MTgzLDYgKzY0ODIsOSBAQAogI2lmZGVmICBTT19QUklPUklUWQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX1BSSU9SSVRZKTsKICNlbmRpZgorI2lmZGVmICBTT19NQVJLCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fTUFSSyk7CisjZW5kaWYKIAogICAgIC8qIE1heGltdW0gbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGZvciAibGlzdGVuIiAqLwogI2lmZGVmICBTT01BWENPTk4KQEAgLTYzMjAsNiArNjYyMiw5IEBACiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0FOX1JBV19MT09QQkFDSyk7CiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0FOX1JBV19SRUNWX09XTl9NU0dTKTsKICNlbmRpZgorI2lmZGVmIEhBVkVfTElOVVhfQ0FOX1JBV19GRF9GUkFNRVMKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDQU5fUkFXX0ZEX0ZSQU1FUyk7CisjZW5kaWYKICNpZmRlZiBIQVZFX0xJTlVYX0NBTl9CQ01fSAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENBTl9CQ00pOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fQkNNX1RYX1NFVFVQIiwgVFhfU0VUVVApOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zb2NrZXRtb2R1bGUuaCBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmgKaW5kZXggYjgzZjlhZi4uM2NjZTkyNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zb2NrZXRtb2R1bGUuaAorKysgYi9Nb2R1bGVzL3NvY2tldG1vZHVsZS5oCkBAIC0xNCw2ICsxNCwxMyBAQAogCiAjZWxzZSAvKiBNU19XSU5ET1dTICovCiAjIGluY2x1ZGUgPHdpbnNvY2syLmg+CisvKiBXaW5kb3dzICdzdXBwb3J0cycgQ01TR19MRU4sIGJ1dCBkb2VzIG5vdCBmb2xsb3cgdGhlIFBPU0lYIHN0YW5kYXJkCisgKiBpbnRlcmZhY2UgYXQgYWxsLCBzbyB0aGVyZSBpcyBubyBwb2ludCBpbmNsdWRpbmcgdGhlIGNvZGUgdGhhdAorICogYXR0ZW1wdHMgdG8gdXNlIGl0LgorICovCisjIGlmZGVmIFB5U29ja2V0X0JVSUxESU5HX1NPQ0tFVAorIyAgdW5kZWYgQ01TR19MRU4KKyMgZW5kaWYKICMgaW5jbHVkZSA8d3MydGNwaXAuaD4KIC8qIFZDNiBpcyBzaGlwcGVkIHdpdGggb2xkIHBsYXRmb3JtIGhlYWRlcnMsIGFuZCBkb2VzIG5vdCBoYXZlIE1TVGNwSVAuaAogICogU2VwYXJhdGUgU0RLcyBoYXZlIGFsbCB0aGUgZnVuY3Rpb25zIHdlIHdhbnQsIGJ1dCBvbGRlciBvbmVzIGRvbid0IGhhdmUKQEAgLTE2Nyw3ICsxNzQsNyBAQAogICAgIFB5T2JqZWN0ICooKmVycm9yaGFuZGxlcikodm9pZCk7IC8qIEVycm9yIGhhbmRsZXI7IGNoZWNrcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vLCByZXR1cm5zIE5VTEwgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0cyBhIFB5dGhvbiBleGNlcHRpb24gKi8KLSAgICBkb3VibGUgc29ja190aW1lb3V0OyAgICAgICAgICAgICAgICAgLyogT3BlcmF0aW9uIHRpbWVvdXQgaW4gc2Vjb25kczsKKyAgICBfUHlUaW1lX3Qgc29ja190aW1lb3V0OyAgICAgLyogT3BlcmF0aW9uIHRpbWVvdXQgaW4gc2Vjb25kczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjAgbWVhbnMgbm9uLWJsb2NraW5nICovCiB9IFB5U29ja2V0U29ja09iamVjdDsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zcHdkbW9kdWxlLmMgYi9Nb2R1bGVzL3Nwd2Rtb2R1bGUuYwppbmRleCA2OGVhMWI1Li40OTMyNGQ1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Nwd2Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL3Nwd2Rtb2R1bGUuYwpAQCAtMTAsNiArMTAsMTIgQEAKICNpbmNsdWRlIDxzaGFkb3cuaD4KICNlbmRpZgogCisjaW5jbHVkZSAiY2xpbmljL3Nwd2Rtb2R1bGUuYy5oIgorCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgc3B3ZAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YzBiODQxYjkwYTZhMDdjZV0qLwogCiBQeURvY19TVFJWQVIoc3B3ZF9fZG9jX18sCiAiVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBVbml4IHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZS5cblwKQEAgLTEwNywyMCArMTEzLDI1IEBACiAKICNpZmRlZiBIQVZFX0dFVFNQTkFNCiAKLVB5RG9jX1NUUlZBUihzcHdkX2dldHNwbmFtX19kb2NfXywKLSJnZXRzcG5hbShuYW1lKSAtPiAoc3BfbmFtcCwgc3BfcHdkcCwgc3BfbHN0Y2hnLCBzcF9taW4sIHNwX21heCxcblwKLSAgICAgICAgICAgICAgICAgICAgc3Bfd2Fybiwgc3BfaW5hY3QsIHNwX2V4cGlyZSwgc3BfZmxhZylcblwKLVJldHVybiB0aGUgc2hhZG93IHBhc3N3b3JkIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gdXNlciBuYW1lLlxuXAotU2VlIHNwd2QuX19kb2NfXyBmb3IgbW9yZSBvbiBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3Nwd2QuZ2V0c3BuYW0KIAotc3RhdGljIFB5T2JqZWN0KiBzcHdkX2dldHNwbmFtKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAgICBhcmc6IHVuaWNvZGUKKyAgICAvCisKK1JldHVybiB0aGUgc2hhZG93IHBhc3N3b3JkIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gdXNlciBuYW1lLgorCitTZWUgYGhlbHAoc3B3ZClgIGZvciBtb3JlIG9uIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorc3B3ZF9nZXRzcG5hbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWY2YmJlNTFhNGViM2IyMSBpbnB1dD1kZDg5NDI5ZTYxNjdhMDBmXSovCiB7CiAgICAgY2hhciAqbmFtZTsKICAgICBzdHJ1Y3Qgc3B3ZCAqcDsKLSAgICBQeU9iamVjdCAqYXJnLCAqYnl0ZXMsICpyZXR2YWwgPSBOVUxMOworICAgIFB5T2JqZWN0ICpieXRlcywgKnJldHZhbCA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6Z2V0c3BuYW0iLCAmYXJnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKChieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoYXJnKSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplKGJ5dGVzLCAmbmFtZSwgTlVMTCkgPT0gLTEpCkBAIC0xMzksMTQgKzE1MCwxNyBAQAogCiAjaWZkZWYgSEFWRV9HRVRTUEVOVAogCi1QeURvY19TVFJWQVIoc3B3ZF9nZXRzcGFsbF9fZG9jX18sCi0iZ2V0c3BhbGwoKSAtPiBsaXN0X29mX2VudHJpZXNcblwKLVJldHVybiBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcywgXAotaW4gYXJiaXRyYXJ5IG9yZGVyLlxuXAotU2VlIHNwd2QuX19kb2NfXyBmb3IgbW9yZSBvbiBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3Nwd2QuZ2V0c3BhbGwKKworUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLCBpbiBhcmJpdHJhcnkgb3JkZXIuCisKK1NlZSBgaGVscChzcHdkKWAgZm9yIG1vcmUgb24gc2hhZG93IHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zcHdkX2dldHNwYWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Nwd2RfZ2V0c3BhbGxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWIxMmQ4ZWM3YmRiMjk2MTIgaW5wdXQ9YjJjODRiNzg1N2Q2MjJiZF0qLwogewogICAgIFB5T2JqZWN0ICpkOwogICAgIHN0cnVjdCBzcHdkICpwOwpAQCAtMTcxLDEwICsxODUsMTAgQEAKIAogc3RhdGljIFB5TWV0aG9kRGVmIHNwd2RfbWV0aG9kc1tdID0gewogI2lmZGVmIEhBVkVfR0VUU1BOQU0KLSAgICB7ImdldHNwbmFtIiwgICAgICAgIHNwd2RfZ2V0c3BuYW0sIE1FVEhfVkFSQVJHUywgc3B3ZF9nZXRzcG5hbV9fZG9jX199LAorICAgIFNQV0RfR0VUU1BOQU1fTUVUSE9EREVGCiAjZW5kaWYKICNpZmRlZiBIQVZFX0dFVFNQRU5UCi0gICAgeyJnZXRzcGFsbCIsICAgICAgICBzcHdkX2dldHNwYWxsLCBNRVRIX05PQVJHUywgc3B3ZF9nZXRzcGFsbF9fZG9jX199LAorICAgIFNQV0RfR0VUU1BBTExfTUVUSE9EREVGCiAjZW5kaWYKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc3JlLmggYi9Nb2R1bGVzL3NyZS5oCmluZGV4IDQyZmUyOGQuLmI2MzIxNjUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc3JlLmgKKysrIGIvTW9kdWxlcy9zcmUuaApAQCAtMTgsOCArMTgsMTAgQEAKICNkZWZpbmUgU1JFX0NPREUgUHlfVUNTNAogI2lmIFNJWkVPRl9TSVpFX1QgPiA0CiAjIGRlZmluZSBTUkVfTUFYUkVQRUFUICh+KFNSRV9DT0RFKTApCisjIGRlZmluZSBTUkVfTUFYR1JPVVBTICgofihTUkVfQ09ERSkwKSAvIDIpCiAjZWxzZQogIyBkZWZpbmUgU1JFX01BWFJFUEVBVCAoKFNSRV9DT0RFKVBZX1NTSVpFX1RfTUFYKQorIyBkZWZpbmUgU1JFX01BWEdST1VQUyAoKFNSRV9DT0RFKVBZX1NTSVpFX1RfTUFYIC8gU0laRU9GX1NJWkVfVCAvIDIpCiAjZW5kaWYKIAogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtNTIsOSArNTQsNiBAQAogCiB0eXBlZGVmIHVuc2lnbmVkIGludCAoKlNSRV9UT0xPV0VSX0hPT0spKHVuc2lnbmVkIGludCBjaCk7CiAKLS8qIEZJWE1FOiA8Zmw+IHNob3VsZG4ndCBiZSBhIGNvbnN0YW50LCByZWFsbHkuLi4gKi8KLSNkZWZpbmUgU1JFX01BUktfU0laRSAyMDAKLQogdHlwZWRlZiBzdHJ1Y3QgU1JFX1JFUEVBVF9UIHsKICAgICBQeV9zc2l6ZV90IGNvdW50OwogICAgIFNSRV9DT0RFKiBwYXR0ZXJuOyAvKiBwb2ludHMgdG8gUkVQRUFUIG9wZXJhdG9yIGFyZ3VtZW50cyAqLwpAQCAtNzYsNyArNzUsNyBAQAogICAgIC8qIHJlZ2lzdGVycyAqLwogICAgIFB5X3NzaXplX3QgbGFzdGluZGV4OwogICAgIFB5X3NzaXplX3QgbGFzdG1hcms7Ci0gICAgdm9pZCogbWFya1tTUkVfTUFSS19TSVpFXTsKKyAgICB2b2lkKiogbWFyazsKICAgICAvKiBkeW5hbWljYWxseSBhbGxvY2F0ZWQgc3R1ZmYgKi8KICAgICBjaGFyKiBkYXRhX3N0YWNrOwogICAgIHNpemVfdCBkYXRhX3N0YWNrX3NpemU7CkBAIC04NSw3ICs4NCw3IEBACiAgICAgLyogY3VycmVudCByZXBlYXQgY29udGV4dCAqLwogICAgIFNSRV9SRVBFQVQgKnJlcGVhdDsKICAgICAvKiBob29rcyAqLwotICAgIFNSRV9UT0xPV0VSX0hPT0sgbG93ZXI7CisgICAgU1JFX1RPTE9XRVJfSE9PSyBsb3dlciwgdXBwZXI7CiB9IFNSRV9TVEFURTsKIAogdHlwZWRlZiBzdHJ1Y3QgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zcmVfY29uc3RhbnRzLmggYi9Nb2R1bGVzL3NyZV9jb25zdGFudHMuaAppbmRleCA1OTQwZDVhLi42NjMyNDQyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NyZV9jb25zdGFudHMuaAorKysgYi9Nb2R1bGVzL3NyZV9jb25zdGFudHMuaApAQCAtMTEsNyArMTEsNyBAQAogICogU2VlIHRoZSBfc3JlLmMgZmlsZSBmb3IgaW5mb3JtYXRpb24gb24gdXNhZ2UgYW5kIHJlZGlzdHJpYnV0aW9uLgogICovCiAKLSNkZWZpbmUgU1JFX01BR0lDIDIwMDMxMDE3CisjZGVmaW5lIFNSRV9NQUdJQyAyMDE0MDkxNwogI2RlZmluZSBTUkVfT1BfRkFJTFVSRSAwCiAjZGVmaW5lIFNSRV9PUF9TVUNDRVNTIDEKICNkZWZpbmUgU1JFX09QX0FOWSAyCkBAIC00NCw2ICs0NCw3IEBACiAjZGVmaW5lIFNSRV9PUF9SRVBFQVRfT05FIDI5CiAjZGVmaW5lIFNSRV9PUF9TVUJQQVRURVJOIDMwCiAjZGVmaW5lIFNSRV9PUF9NSU5fUkVQRUFUX09ORSAzMQorI2RlZmluZSBTUkVfT1BfUkFOR0VfSUdOT1JFIDMyCiAjZGVmaW5lIFNSRV9BVF9CRUdJTk5JTkcgMAogI2RlZmluZSBTUkVfQVRfQkVHSU5OSU5HX0xJTkUgMQogI2RlZmluZSBTUkVfQVRfQkVHSU5OSU5HX1NUUklORyAyCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NyZV9saWIuaCBiL01vZHVsZXMvc3JlX2xpYi5oCmluZGV4IDEwNDlkZTQuLjEyOGM3MWUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc3JlX2xpYi5oCisrKyBiL01vZHVsZXMvc3JlX2xpYi5oCkBAIC0xMDEsNyArMTAxLDcgQEAKIH0KIAogTE9DQUwoaW50KQotU1JFKGNoYXJzZXQpKFNSRV9DT0RFKiBzZXQsIFNSRV9DT0RFIGNoKQorU1JFKGNoYXJzZXQpKFNSRV9TVEFURSogc3RhdGUsIFNSRV9DT0RFKiBzZXQsIFNSRV9DT0RFIGNoKQogewogICAgIC8qIGNoZWNrIGlmIGNoYXJhY3RlciBpcyBhIG1lbWJlciBvZiB0aGUgZ2l2ZW4gc2V0ICovCiAKQEAgLTE0Miw2ICsxNDIsMjAgQEAKICAgICAgICAgICAgIHNldCArPSAyOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBTUkVfT1BfUkFOR0VfSUdOT1JFOgorICAgICAgICAgICAgLyogPFJBTkdFX0lHTk9SRT4gPGxvd2VyPiA8dXBwZXI+ICovCisgICAgICAgIHsKKyAgICAgICAgICAgIFNSRV9DT0RFIHVjaDsKKyAgICAgICAgICAgIC8qIGNoIGlzIGFscmVhZHkgbG93ZXIgY2FzZWQgKi8KKyAgICAgICAgICAgIGlmIChzZXRbMF0gPD0gY2ggJiYgY2ggPD0gc2V0WzFdKQorICAgICAgICAgICAgICAgIHJldHVybiBvazsKKyAgICAgICAgICAgIHVjaCA9IHN0YXRlLT51cHBlcihjaCk7CisgICAgICAgICAgICBpZiAoc2V0WzBdIDw9IHVjaCAmJiB1Y2ggPD0gc2V0WzFdKQorICAgICAgICAgICAgICAgIHJldHVybiBvazsKKyAgICAgICAgICAgIHNldCArPSAyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFNSRV9PUF9ORUdBVEU6CiAgICAgICAgICAgICBvayA9ICFvazsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTkzLDcgKzIwNyw3IEBACiAgICAgY2FzZSBTUkVfT1BfSU46CiAgICAgICAgIC8qIHJlcGVhdGVkIHNldCAqLwogICAgICAgICBUUkFDRSgoInwlcHwlcHxDT1VOVCBJTlxuIiwgcGF0dGVybiwgcHRyKSk7Ci0gICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgU1JFKGNoYXJzZXQpKHBhdHRlcm4gKyAyLCAqcHRyKSkKKyAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiBTUkUoY2hhcnNldCkoc3RhdGUsIHBhdHRlcm4gKyAyLCAqcHRyKSkKICAgICAgICAgICAgIHB0cisrOwogICAgICAgICBicmVhazsKIApAQCAtNjI4LDcgKzY0Miw4IEBACiAgICAgICAgICAgICAvKiBtYXRjaCBzZXQgbWVtYmVyIChvciBub25fbWVtYmVyKSAqLwogICAgICAgICAgICAgLyogPElOPiA8c2tpcD4gPHNldD4gKi8KICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfElOXG4iLCBjdHgtPnBhdHRlcm4sIGN0eC0+cHRyKSk7Ci0gICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8ICFTUkUoY2hhcnNldCkoY3R4LT5wYXR0ZXJuICsgMSwgKmN0eC0+cHRyKSkKKyAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwKKyAgICAgICAgICAgICAgICAhU1JFKGNoYXJzZXQpKHN0YXRlLCBjdHgtPnBhdHRlcm4gKyAxLCAqY3R4LT5wdHIpKQogICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgY3R4LT5wYXR0ZXJuICs9IGN0eC0+cGF0dGVyblswXTsKICAgICAgICAgICAgIGN0eC0+cHRyKys7CkBAIC02NTcsNyArNjcyLDcgQEAKICAgICAgICAgY2FzZSBTUkVfT1BfSU5fSUdOT1JFOgogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8SU5fSUdOT1JFXG4iLCBjdHgtPnBhdHRlcm4sIGN0eC0+cHRyKSk7CiAgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kCi0gICAgICAgICAgICAgICAgfHwgIVNSRShjaGFyc2V0KShjdHgtPnBhdHRlcm4rMSwKKyAgICAgICAgICAgICAgICB8fCAhU1JFKGNoYXJzZXQpKHN0YXRlLCBjdHgtPnBhdHRlcm4rMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTUkVfQ09ERSlzdGF0ZS0+bG93ZXIoKmN0eC0+cHRyKSkpCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICBjdHgtPnBhdHRlcm4gKz0gY3R4LT5wYXR0ZXJuWzBdOwpAQCAtNjg4LDcgKzcwMyw4IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChjdHgtPnBhdHRlcm5bMV0gPT0gU1JFX09QX0lOICYmCiAgICAgICAgICAgICAgICAgICAgIChjdHgtPnB0ciA+PSBlbmQgfHwKLSAgICAgICAgICAgICAgICAgICAgICFTUkUoY2hhcnNldCkoY3R4LT5wYXR0ZXJuICsgMywgKFNSRV9DT0RFKSAqY3R4LT5wdHIpKSkKKyAgICAgICAgICAgICAgICAgICAgICFTUkUoY2hhcnNldCkoc3RhdGUsIGN0eC0+cGF0dGVybiArIDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTUkVfQ09ERSkgKmN0eC0+cHRyKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIHN0YXRlLT5wdHIgPSBjdHgtPnB0cjsKICAgICAgICAgICAgICAgICBET19KVU1QKEpVTVBfQlJBTkNILCBqdW1wX2JyYW5jaCwgY3R4LT5wYXR0ZXJuKzEpOwpAQCAtMTMxOCw3ICsxMzM0LDcgQEAKICAgICAgICAgLyogcGF0dGVybiBzdGFydHMgd2l0aCBhIGNoYXJhY3RlciBmcm9tIGEga25vd24gc2V0ICovCiAgICAgICAgIGVuZCA9IChTUkVfQ0hBUiAqKXN0YXRlLT5lbmQ7CiAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgIVNSRShjaGFyc2V0KShjaGFyc2V0LCAqcHRyKSkKKyAgICAgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgIVNSRShjaGFyc2V0KShzdGF0ZSwgY2hhcnNldCwgKnB0cikpCiAgICAgICAgICAgICAgICAgcHRyKys7CiAgICAgICAgICAgICBpZiAocHRyID49IGVuZCkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc3ltdGFibGVtb2R1bGUuYyBiL01vZHVsZXMvc3ltdGFibGVtb2R1bGUuYwppbmRleCBjZGI0ZmZjLi5mODRjYzc4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zeW10YWJsZW1vZHVsZS5jCkBAIC04NCw5ICs4NCw2IEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRZUEVfQ0xBU1MiLCBDbGFzc0Jsb2NrKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiVFlQRV9NT0RVTEUiLCBNb2R1bGVCbG9jayk7CiAKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPUFRfSU1QT1JUX1NUQVIpOwotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9QVF9UT1BMRVZFTCk7Ci0KICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0NBTCk7CiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgR0xPQkFMX0VYUExJQ0lUKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBHTE9CQUxfSU1QTElDSVQpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy90aW1lbW9kdWxlLmMgYi9Nb2R1bGVzL3RpbWVtb2R1bGUuYwppbmRleCBkNzFiM2FjLi5kMmNhYWNkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3RpbWVtb2R1bGUuYworKysgYi9Nb2R1bGVzL3RpbWVtb2R1bGUuYwpAQCAtMjcsMjggKzI3LDEzIEBACiAjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSAicHl0aHJlYWQuaCIKLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKQotLyogVGhlc2Ugb3ZlcnJpZGVzIG5vdCBuZWVkZWQgZm9yIFdpbjMyICovCi0jZGVmaW5lIHRpbWV6b25lIF90aW1lem9uZQotI2RlZmluZSB0em5hbWUgX3R6bmFtZQotI2RlZmluZSBkYXlsaWdodCBfZGF5bGlnaHQKLSNlbmRpZiAvKiBfX0JPUkxBTkRDX18gKi8KICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAjZW5kaWYgLyogIV9fV0FUQ09NQ19fIHx8IF9fUU5YX18gKi8KIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKQotI2luY2x1ZGUgPG1hY2gvbWFjaF90aW1lLmg+Ci0jZW5kaWYKLQogLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KLXN0YXRpYyBpbnQgZmxvYXRzbGVlcChkb3VibGUpOworc3RhdGljIGludCBweXNsZWVwKF9QeVRpbWVfdCk7CiBzdGF0aWMgUHlPYmplY3QqIGZsb2F0dGltZShfUHlfY2xvY2tfaW5mb190ICppbmZvKTsKIAotI2lmZGVmIE1TX1dJTkRPV1MKLXN0YXRpYyBPU1ZFUlNJT05JTkZPRVggd2ludmVyOwotI2VuZGlmCi0KIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX3RpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCiB7CkBAIC05MiwxMiArNzcsMTIgQEAKIH0KICNlbmRpZiAvKiBIQVZFX0NMT0NLICovCiAKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKF9fQk9STEFORENfXykKKyNpZmRlZiBNU19XSU5ET1dTCiAjZGVmaW5lIFdJTjMyX1BFUkZfQ09VTlRFUgogLyogV2luMzIgaGFzIGJldHRlciBjbG9jayByZXBsYWNlbWVudDsgd2UgaGF2ZSBvdXIgb3duIHZlcnNpb24sIGR1ZSB0byBNYXJrCiAgICBIYW1tb25kIGFuZCBUaW0gUGV0ZXJzICovCi1zdGF0aWMgaW50Ci13aW5fcGVyZl9jb3VudGVyKF9QeV9jbG9ja19pbmZvX3QgKmluZm8sIFB5T2JqZWN0ICoqcmVzdWx0KQorc3RhdGljIFB5T2JqZWN0Kgord2luX3BlcmZfY291bnRlcihfUHlfY2xvY2tfaW5mb190ICppbmZvKQogewogICAgIHN0YXRpYyBMT05HTE9ORyBjcHVfZnJlcXVlbmN5ID0gMDsKICAgICBzdGF0aWMgTE9OR0xPTkcgY3RyU3RhcnQ7CkBAIC0xMDksMTAgKzk0LDggQEAKICAgICAgICAgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoJm5vdyk7CiAgICAgICAgIGN0clN0YXJ0ID0gbm93LlF1YWRQYXJ0OwogICAgICAgICBpZiAoIVF1ZXJ5UGVyZm9ybWFuY2VGcmVxdWVuY3koJmZyZXEpIHx8IGZyZXEuUXVhZFBhcnQgPT0gMCkgewotICAgICAgICAgICAgLyogVW5saWtlbHkgdG8gaGFwcGVuIC0gdGhpcyB3b3JrcyBvbiBhbGwgaW50ZWwKLSAgICAgICAgICAgICAgIG1hY2hpbmVzIGF0IGxlYXN0ISAgUmV2ZXJ0IHRvIGNsb2NrKCkgKi8KLSAgICAgICAgICAgICpyZXN1bHQgPSBOVUxMOwotICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBjcHVfZnJlcXVlbmN5ID0gZnJlcS5RdWFkUGFydDsKICAgICB9CkBAIC0xMjQsMTAgKzEwNyw5IEBACiAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CiAgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOwogICAgIH0KLSAgICAqcmVzdWx0ID0gUHlGbG9hdF9Gcm9tRG91YmxlKGRpZmYgLyAoZG91YmxlKWNwdV9mcmVxdWVuY3kpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoZGlmZiAvIChkb3VibGUpY3B1X2ZyZXF1ZW5jeSk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAgIC8qIE1TX1dJTkRPV1MgKi8KIAogI2lmIGRlZmluZWQoV0lOMzJfUEVSRl9DT1VOVEVSKSB8fCBkZWZpbmVkKEhBVkVfQ0xPQ0spCiAjZGVmaW5lIFBZQ0xPQ0sKQEAgLTEzNSwxMSArMTE3LDEwIEBACiBweWNsb2NrKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCiB7CiAjaWZkZWYgV0lOMzJfUEVSRl9DT1VOVEVSCi0gICAgUHlPYmplY3QgKnJlczsKLSAgICBpZiAod2luX3BlcmZfY291bnRlcihpbmZvLCAmcmVzKSA9PSAwKQotICAgICAgICByZXR1cm4gcmVzOwotI2VuZGlmCisgICAgcmV0dXJuIHdpbl9wZXJmX2NvdW50ZXIoaW5mbyk7CisjZWxzZQogICAgIHJldHVybiBmbG9hdGNsb2NrKGluZm8pOworI2VuZGlmCiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xNjksNyArMTUwLDcgQEAKIAogICAgIHJldCA9IGNsb2NrX2dldHRpbWUoKGNsb2NraWRfdCljbGtfaWQsICZ0cCk7CiAgICAgaWYgKHJldCAhPSAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh0cC50dl9zZWMgKyB0cC50dl9uc2VjICogMWUtOSk7CkBAIC0xODUsMjIgKzE2NiwyMiBAQAogewogICAgIGludCBjbGtfaWQ7CiAgICAgUHlPYmplY3QgKm9iajsKLSAgICB0aW1lX3QgdHZfc2VjOwotICAgIGxvbmcgdHZfbnNlYzsKKyAgICBfUHlUaW1lX3QgdDsKICAgICBzdHJ1Y3QgdGltZXNwZWMgdHA7CiAgICAgaW50IHJldDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86Y2xvY2tfc2V0dGltZSIsICZjbGtfaWQsICZvYmopKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXNwZWMob2JqLCAmdHZfc2VjLCAmdHZfbnNlYywgX1B5VGltZV9ST1VORF9ET1dOKSA9PSAtMSkKKyAgICBpZiAoX1B5VGltZV9Gcm9tU2Vjb25kc09iamVjdCgmdCwgb2JqLCBfUHlUaW1lX1JPVU5EX0ZMT09SKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHRwLnR2X3NlYyA9IHR2X3NlYzsKLSAgICB0cC50dl9uc2VjID0gdHZfbnNlYzsKKworICAgIGlmIChfUHlUaW1lX0FzVGltZXNwZWModCwgJnRwKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICByZXQgPSBjbG9ja19zZXR0aW1lKChjbG9ja2lkX3QpY2xrX2lkLCAmdHApOwogICAgIGlmIChyZXQgIT0gMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMjIzLDcgKzIwNCw3IEBACiAKICAgICByZXQgPSBjbG9ja19nZXRyZXMoKGNsb2NraWRfdCljbGtfaWQsICZ0cCk7CiAgICAgaWYgKHJldCAhPSAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTIzNywxNyArMjE4LDE3IEBACiAjZW5kaWYgICAvKiBIQVZFX0NMT0NLX0dFVFRJTUUgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXRpbWVfc2xlZXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordGltZV9zbGVlcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKIHsKLSAgICBkb3VibGUgc2VjczsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImQ6c2xlZXAiLCAmc2VjcykpCisgICAgX1B5VGltZV90IHNlY3M7CisgICAgaWYgKF9QeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoJnNlY3MsIG9iaiwgX1B5VGltZV9ST1VORF9DRUlMSU5HKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNlY3MgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInNsZWVwIGxlbmd0aCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKGZsb2F0c2xlZXAoc2VjcykgIT0gMCkKKyAgICBpZiAocHlzbGVlcChzZWNzKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CkBAIC0zNDEsNyArMzIyLDcgQEAKICAgICAgICAgd2hlbnQgPSB0aW1lKE5VTEwpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lX3Qob3QsICZ3aGVudCwgX1B5VGltZV9ST1VORF9ET1dOKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lX3Qob3QsICZ3aGVudCwgX1B5VGltZV9ST1VORF9GTE9PUikgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgKnB3aGVuID0gd2hlbnQ7CkBAIC02MjksMjEgKzYxMCwxNSBAQAogCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChIQVZFX1dDU0ZUSU1FKQogICAgIC8qIGNoZWNrIHRoYXQgdGhlIGZvcm1hdCBzdHJpbmcgY29udGFpbnMgb25seSB2YWxpZCBkaXJlY3RpdmVzICovCi0gICAgZm9yKG91dGJ1ZiA9IHN0cmNocihmbXQsICclJyk7CisgICAgZm9yIChvdXRidWYgPSBzdHJjaHIoZm10LCAnJScpOwogICAgICAgICBvdXRidWYgIT0gTlVMTDsKICAgICAgICAgb3V0YnVmID0gc3RyY2hyKG91dGJ1ZisyLCAnJScpKQogICAgIHsKLSAgICAgICAgaWYgKG91dGJ1ZlsxXT09JyMnKQorICAgICAgICBpZiAob3V0YnVmWzFdID09ICcjJykKICAgICAgICAgICAgICsrb3V0YnVmOyAvKiBub3QgZG9jdW1lbnRlZCBieSBweXRob24sICovCi0gICAgICAgIGlmIChvdXRidWZbMV09PSdcMCcgfHwKLSAgICAgICAgICAgICFzdHJjaHIoImFBYkJjZEhJam1NcFNVd1d4WHlZelolIiwgb3V0YnVmWzFdKSkKLSAgICAgICAgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIGZvcm1hdCBzdHJpbmciKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmb3JtYXQpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKChvdXRidWZbMV0gPT0gJ3knKSAmJiBidWYudG1feWVhciA8IDApCi0gICAgICAgIHsKKyAgICAgICAgaWYgKG91dGJ1ZlsxXSA9PSAnXDAnKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICgob3V0YnVmWzFdID09ICd5JykgJiYgYnVmLnRtX3llYXIgPCAwKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXQgJXkgcmVxdWlyZXMgeWVhciA+PSAxOTAwIG9uIFdpbmRvd3MiKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihmb3JtYXQpOwpAQCAtNjUxLDcgKzYyNiw3IEBACiAgICAgICAgIH0KICAgICB9CiAjZWxpZiAoZGVmaW5lZChfQUlYKSB8fCBkZWZpbmVkKHN1bikpICYmIGRlZmluZWQoSEFWRV9XQ1NGVElNRSkKLSAgICBmb3Iob3V0YnVmID0gd2NzY2hyKGZtdCwgJyUnKTsKKyAgICBmb3IgKG91dGJ1ZiA9IHdjc2NocihmbXQsICclJyk7CiAgICAgICAgIG91dGJ1ZiAhPSBOVUxMOwogICAgICAgICBvdXRidWYgPSB3Y3NjaHIob3V0YnVmKzIsICclJykpCiAgICAgewpAQCAtNjczLDE3ICs2NDgsMjQgQEAKICAgICAgKiB3aWxsIGJlIGFoZWFkIG9mIHRpbWUuLi4KICAgICAgKi8KICAgICBmb3IgKGkgPSAxMDI0OyA7IGkgKz0gaSkgewotI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAmJiBkZWZpbmVkKF9fU1REQ19TRUNVUkVfTElCX18pCi0gICAgICAgIGludCBlcnI7Ci0jZW5kaWYKICAgICAgICAgb3V0YnVmID0gKHRpbWVfY2hhciAqKVB5TWVtX01hbGxvYyhpKnNpemVvZih0aW1lX2NoYXIpKTsKICAgICAgICAgaWYgKG91dGJ1ZiA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgYnVmbGVuID0gZm9ybWF0X3RpbWUob3V0YnVmLCBpLCBmbXQsICZidWYpOwogI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAmJiBkZWZpbmVkKF9fU1REQ19TRUNVUkVfTElCX18pCi0gICAgICAgIGVyciA9IGVycm5vOworICAgICAgICBlcnJubyA9IDA7CisjZW5kaWYKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBidWZsZW4gPSBmb3JtYXRfdGltZShvdXRidWYsIGksIGZtdCwgJmJ1Zik7CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisjaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmIGRlZmluZWQoX19TVERDX1NFQ1VSRV9MSUJfXykKKyAgICAgICAgLyogVmlzdWFsU3R1ZGlvIC5ORVQgMjAwNSBkb2VzIHRoaXMgcHJvcGVybHkgKi8KKyAgICAgICAgaWYgKGJ1ZmxlbiA9PSAwICYmIGVycm5vID09IEVJTlZBTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIGZvcm1hdCBzdHJpbmciKTsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUob3V0YnVmKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgaWYgKGJ1ZmxlbiA+IDAgfHwgaSA+PSAyNTYgKiBmbXRsZW4pIHsKICAgICAgICAgICAgIC8qIElmIHRoZSBidWZmZXIgaXMgMjU2IHRpbWVzIGFzIGxvbmcgYXMgdGhlIGZvcm1hdCwKQEAgLTcwMSwxMyArNjgzLDYgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIFB5TWVtX0ZyZWUob3V0YnVmKTsKLSNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgZGVmaW5lZChfX1NURENfU0VDVVJFX0xJQl9fKQotICAgICAgICAvKiBWaXN1YWxTdHVkaW8gLk5FVCAyMDA1IGRvZXMgdGhpcyBwcm9wZXJseSAqLwotICAgICAgICBpZiAoYnVmbGVuID09IDAgJiYgZXJyID09IEVJTlZBTCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIGZvcm1hdCBzdHJpbmciKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0jZW5kaWYKICAgICB9CiAjaWZkZWYgSEFWRV9XQ1NGVElNRQogICAgIFB5TWVtX0ZyZWUoZm9ybWF0KTsKQEAgLTkwNSwxMjIgKzg4MCwxNyBAQAogc2hvdWxkIG5vdCBiZSByZWxpZWQgb24uIik7CiAjZW5kaWYgLyogSEFWRV9XT1JLSU5HX1RaU0VUICovCiAKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoX19BUFBMRV9fKSBcCi0gICAgfHwgKGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKSBcCi0gICAgICAgICYmIChkZWZpbmVkKENMT0NLX0hJR0hSRVMpIHx8IGRlZmluZWQoQ0xPQ0tfTU9OT1RPTklDKSkpCi0jZGVmaW5lIFBZTU9OT1RPTklDCi0jZW5kaWYKLQotI2lmZGVmIFBZTU9OT1RPTklDCi1zdGF0aWMgUHlPYmplY3QqCitzdGF0aWMgUHlPYmplY3QgKgogcHltb25vdG9uaWMoX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKIHsKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCi0gICAgc3RhdGljIFVMT05HTE9ORyAoKkdldFRpY2tDb3VudDY0KSAodm9pZCkgPSBOVUxMOwotICAgIHN0YXRpYyBVTE9OR0xPTkcgKENBTExCQUNLICpQeV9HZXRUaWNrQ291bnQ2NCkodm9pZCk7Ci0gICAgc3RhdGljIGludCBoYXNfZ2V0aWNrY291bnQ2NCA9IC0xOwotICAgIGRvdWJsZSByZXN1bHQ7Ci0KLSAgICBpZiAoaGFzX2dldGlja2NvdW50NjQgPT0gLTEpIHsKLSAgICAgICAgLyogR2V0VGlja0NvdW50NjQoKSB3YXMgYWRkZWQgdG8gV2luZG93cyBWaXN0YSAqLwotICAgICAgICBpZiAod2ludmVyLmR3TWFqb3JWZXJzaW9uID49IDYpIHsKLSAgICAgICAgICAgIEhJTlNUQU5DRSBoS2VybmVsMzI7Ci0gICAgICAgICAgICBoS2VybmVsMzIgPSBHZXRNb2R1bGVIYW5kbGVXKEwiS0VSTkVMMzIiKTsKLSAgICAgICAgICAgICooRkFSUFJPQyopJlB5X0dldFRpY2tDb3VudDY0ID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2V0VGlja0NvdW50NjQiKTsKLSAgICAgICAgICAgIGhhc19nZXRpY2tjb3VudDY0ID0gKFB5X0dldFRpY2tDb3VudDY0ICE9IE5VTEwpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGhhc19nZXRpY2tjb3VudDY0ID0gMDsKLSAgICB9Ci0KLSAgICBpZiAoaGFzX2dldGlja2NvdW50NjQpIHsKLSAgICAgICAgVUxPTkdMT05HIHRpY2tzOwotICAgICAgICB0aWNrcyA9IFB5X0dldFRpY2tDb3VudDY0KCk7Ci0gICAgICAgIHJlc3VsdCA9IChkb3VibGUpdGlja3MgKiAxZS0zOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgc3RhdGljIERXT1JEIGxhc3RfdGlja3MgPSAwOwotICAgICAgICBzdGF0aWMgRFdPUkQgbl9vdmVyZmxvdyA9IDA7Ci0gICAgICAgIERXT1JEIHRpY2tzOwotCi0gICAgICAgIHRpY2tzID0gR2V0VGlja0NvdW50KCk7Ci0gICAgICAgIGlmICh0aWNrcyA8IGxhc3RfdGlja3MpCi0gICAgICAgICAgICBuX292ZXJmbG93Kys7Ci0gICAgICAgIGxhc3RfdGlja3MgPSB0aWNrczsKLQotICAgICAgICByZXN1bHQgPSBsZGV4cChuX292ZXJmbG93LCAzMik7Ci0gICAgICAgIHJlc3VsdCArPSB0aWNrczsKLSAgICAgICAgcmVzdWx0ICo9IDFlLTM7Ci0gICAgfQotCi0gICAgaWYgKGluZm8pIHsKLSAgICAgICAgRFdPUkQgdGltZUFkanVzdG1lbnQsIHRpbWVJbmNyZW1lbnQ7Ci0gICAgICAgIEJPT0wgaXNUaW1lQWRqdXN0bWVudERpc2FibGVkLCBvazsKLSAgICAgICAgaWYgKGhhc19nZXRpY2tjb3VudDY0KQotICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiR2V0VGlja0NvdW50NjQoKSI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIkdldFRpY2tDb3VudCgpIjsKLSAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKLSAgICAgICAgb2sgPSBHZXRTeXN0ZW1UaW1lQWRqdXN0bWVudCgmdGltZUFkanVzdG1lbnQsICZ0aW1lSW5jcmVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQpOwotICAgICAgICBpZiAoIW9rKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGluZm8tPnJlc29sdXRpb24gPSB0aW1lSW5jcmVtZW50ICogMWUtNzsKLSAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7Ci0gICAgfQotICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUocmVzdWx0KTsKLQotI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCi0gICAgc3RhdGljIG1hY2hfdGltZWJhc2VfaW5mb19kYXRhX3QgdGltZWJhc2U7Ci0gICAgdWludDY0X3QgdGltZTsKLSAgICBkb3VibGUgc2VjczsKLQotICAgIGlmICh0aW1lYmFzZS5kZW5vbSA9PSAwKSB7Ci0gICAgICAgIC8qIEFjY29yZGluZyB0byB0aGUgVGVjaG5pY2FsIFEmQSBRQTEzOTgsIG1hY2hfdGltZWJhc2VfaW5mbygpIGNhbm5vdAotICAgICAgICAgICBmYWlsOiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9tYWMvI3FhL3FhMTM5OC8gKi8KLSAgICAgICAgKHZvaWQpbWFjaF90aW1lYmFzZV9pbmZvKCZ0aW1lYmFzZSk7Ci0gICAgfQotCi0gICAgdGltZSA9IG1hY2hfYWJzb2x1dGVfdGltZSgpOwotICAgIHNlY3MgPSAoZG91YmxlKXRpbWUgKiB0aW1lYmFzZS5udW1lciAvIHRpbWViYXNlLmRlbm9tICogMWUtOTsKLSAgICBpZiAoaW5mbykgewotICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJtYWNoX2Fic29sdXRlX3RpbWUoKSI7Ci0gICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAoZG91YmxlKXRpbWViYXNlLm51bWVyIC8gdGltZWJhc2UuZGVub20gKiAxZS05OwotICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOwotICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShzZWNzKTsKLQotI2VsaWYgZGVmaW5lZChIQVZFX0NMT0NLX0dFVFRJTUUpICYmIChkZWZpbmVkKENMT0NLX0hJR0hSRVMpIHx8IGRlZmluZWQoQ0xPQ0tfTU9OT1RPTklDKSkKLSAgICBzdHJ1Y3QgdGltZXNwZWMgdHA7Ci0jaWZkZWYgQ0xPQ0tfSElHSFJFUwotICAgIGNvbnN0IGNsb2NraWRfdCBjbGtfaWQgPSBDTE9DS19ISUdIUkVTOwotICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfSElHSFJFUykiOwotI2Vsc2UKLSAgICBjb25zdCBjbG9ja2lkX3QgY2xrX2lkID0gQ0xPQ0tfTU9OT1RPTklDOwotICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDKSI7Ci0jZW5kaWYKLQotICAgIGlmIChjbG9ja19nZXR0aW1lKGNsa19pZCwgJnRwKSAhPSAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICBfUHlUaW1lX3QgdDsKKyAgICBkb3VibGUgZDsKKyAgICBpZiAoX1B5VGltZV9HZXRNb25vdG9uaWNDbG9ja1dpdGhJbmZvKCZ0LCBpbmZvKSA8IDApIHsKKyAgICAgICAgYXNzZXJ0KGluZm8gIT0gTlVMTCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIGlmIChpbmZvKSB7Ci0gICAgICAgIHN0cnVjdCB0aW1lc3BlYyByZXM7Ci0gICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7Ci0gICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gZnVuY3Rpb247Ci0gICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOwotICAgICAgICBpZiAoY2xvY2tfZ2V0cmVzKGNsa19pZCwgJnJlcykgPT0gMCkKLSAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSByZXMudHZfc2VjICsgcmVzLnR2X25zZWMgKiAxZS05OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtOTsKLSAgICB9Ci0gICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh0cC50dl9zZWMgKyB0cC50dl9uc2VjICogMWUtOSk7Ci0jZW5kaWYKKyAgICBkID0gX1B5VGltZV9Bc1NlY29uZHNEb3VibGUodCk7CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShkKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEwMzMsNDAgKzkwMywxNSBAQAogIm1vbm90b25pYygpIC0+IGZsb2F0XG5cCiBcblwKIE1vbm90b25pYyBjbG9jaywgY2Fubm90IGdvIGJhY2t3YXJkLiIpOwotI2VuZGlmICAgLyogUFlNT05PVE9OSUMgKi8KIAogc3RhdGljIFB5T2JqZWN0KgogcGVyZl9jb3VudGVyKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCiB7Ci0jaWYgZGVmaW5lZChXSU4zMl9QRVJGX0NPVU5URVIpIHx8IGRlZmluZWQoUFlNT05PVE9OSUMpCi0gICAgUHlPYmplY3QgKnJlczsKLSNlbmRpZgotI2lmIGRlZmluZWQoV0lOMzJfUEVSRl9DT1VOVEVSKQotICAgIHN0YXRpYyBpbnQgdXNlX3BlcmZfY291bnRlciA9IDE7Ci0jZW5kaWYKLSNpZmRlZiBQWU1PTk9UT05JQwotICAgIHN0YXRpYyBpbnQgdXNlX21vbm90b25pYyA9IDE7Ci0jZW5kaWYKLQogI2lmZGVmIFdJTjMyX1BFUkZfQ09VTlRFUgotICAgIGlmICh1c2VfcGVyZl9jb3VudGVyKSB7Ci0gICAgICAgIGlmICh3aW5fcGVyZl9jb3VudGVyKGluZm8sICZyZXMpID09IDApCi0gICAgICAgICAgICByZXR1cm4gcmVzOwotICAgICAgICB1c2VfcGVyZl9jb3VudGVyID0gMDsKLSAgICB9CisgICAgcmV0dXJuIHdpbl9wZXJmX2NvdW50ZXIoaW5mbyk7CisjZWxzZQorICAgIHJldHVybiBweW1vbm90b25pYyhpbmZvKTsKICNlbmRpZgotCi0jaWZkZWYgUFlNT05PVE9OSUMKLSAgICBpZiAodXNlX21vbm90b25pYykgewotICAgICAgICByZXMgPSBweW1vbm90b25pYyhpbmZvKTsKLSAgICAgICAgaWYgKHJlcyAhPSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIHJlczsKLSAgICAgICAgdXNlX21vbm90b25pYyA9IDA7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gZmxvYXR0aW1lKGluZm8pOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTIzMywxMCArMTA3OCw4IEBACiAgICAgZWxzZSBpZiAoc3RyY21wKG5hbWUsICJjbG9jayIpID09IDApCiAgICAgICAgIG9iaiA9IHB5Y2xvY2soJmluZm8pOwogI2VuZGlmCi0jaWZkZWYgUFlNT05PVE9OSUMKICAgICBlbHNlIGlmIChzdHJjbXAobmFtZSwgIm1vbm90b25pYyIpID09IDApCiAgICAgICAgIG9iaiA9IHB5bW9ub3RvbmljKCZpbmZvKTsKLSNlbmRpZgogICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAicGVyZl9jb3VudGVyIikgPT0gMCkKICAgICAgICAgb2JqID0gcGVyZl9jb3VudGVyKCZpbmZvKTsKICAgICBlbHNlIGlmIChzdHJjbXAobmFtZSwgInByb2Nlc3NfdGltZSIpID09IDApCkBAIC0xNDEzLDcgKzEyNTYsNyBAQAogICAgIHsiY2xvY2tfc2V0dGltZSIsICAgdGltZV9jbG9ja19zZXR0aW1lLCBNRVRIX1ZBUkFSR1MsIGNsb2NrX3NldHRpbWVfZG9jfSwKICAgICB7ImNsb2NrX2dldHJlcyIsICAgIHRpbWVfY2xvY2tfZ2V0cmVzLCBNRVRIX1ZBUkFSR1MsIGNsb2NrX2dldHJlc19kb2N9LAogI2VuZGlmCi0gICAgeyJzbGVlcCIsICAgICAgICAgICB0aW1lX3NsZWVwLCBNRVRIX1ZBUkFSR1MsIHNsZWVwX2RvY30sCisgICAgeyJzbGVlcCIsICAgICAgICAgICB0aW1lX3NsZWVwLCBNRVRIX08sIHNsZWVwX2RvY30sCiAgICAgeyJnbXRpbWUiLCAgICAgICAgICB0aW1lX2dtdGltZSwgTUVUSF9WQVJBUkdTLCBnbXRpbWVfZG9jfSwKICAgICB7ImxvY2FsdGltZSIsICAgICAgIHRpbWVfbG9jYWx0aW1lLCBNRVRIX1ZBUkFSR1MsIGxvY2FsdGltZV9kb2N9LAogICAgIHsiYXNjdGltZSIsICAgICAgICAgdGltZV9hc2N0aW1lLCBNRVRIX1ZBUkFSR1MsIGFzY3RpbWVfZG9jfSwKQEAgLTE0MjgsOSArMTI3MSw3IEBACiAjaWZkZWYgSEFWRV9XT1JLSU5HX1RaU0VUCiAgICAgeyJ0enNldCIsICAgICAgICAgICB0aW1lX3R6c2V0LCBNRVRIX05PQVJHUywgdHpzZXRfZG9jfSwKICNlbmRpZgotI2lmZGVmIFBZTU9OT1RPTklDCiAgICAgeyJtb25vdG9uaWMiLCAgICAgICB0aW1lX21vbm90b25pYywgTUVUSF9OT0FSR1MsIG1vbm90b25pY19kb2N9LAotI2VuZGlmCiAgICAgeyJwcm9jZXNzX3RpbWUiLCAgICB0aW1lX3Byb2Nlc3NfdGltZSwgTUVUSF9OT0FSR1MsIHByb2Nlc3NfdGltZV9kb2N9LAogICAgIHsicGVyZl9jb3VudGVyIiwgICAgdGltZV9wZXJmX2NvdW50ZXIsIE1FVEhfTk9BUkdTLCBwZXJmX2NvdW50ZXJfZG9jfSwKICAgICB7ImdldF9jbG9ja19pbmZvIiwgIHRpbWVfZ2V0X2Nsb2NrX2luZm8sIE1FVEhfVkFSQVJHUywgZ2V0X2Nsb2NrX2luZm9fZG9jfSwKQEAgLTE1MTIsMTUgKzEzNTMsNiBAQAogICAgICAgICBpZiAoUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZTIoJlN0cnVjdFRpbWVUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cnVjdF90aW1lX3R5cGVfZGVzYykgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIHdpbnZlci5kd09TVmVyc2lvbkluZm9TaXplID0gc2l6ZW9mKHdpbnZlcik7Ci0gICAgICAgIGlmICghR2V0VmVyc2lvbkV4KChPU1ZFUlNJT05JTkZPKikmd2ludmVyKSkgewotICAgICAgICAgICAgUHlfREVDUkVGKG0pOwotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotI2VuZGlmCiAgICAgfQogICAgIFB5X0lOQ1JFRigmU3RydWN0VGltZVR5cGUpOwogI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKQEAgLTE1MzYsMTA5ICsxMzY4LDkzIEBACiBzdGF0aWMgUHlPYmplY3QqCiBmbG9hdHRpbWUoX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKIHsKLSAgICBfUHlUaW1lX3RpbWV2YWwgdDsKLSNpZmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKLSAgICBzdHJ1Y3QgdGltZXNwZWMgdHA7Ci0gICAgaW50IHJldDsKLQotICAgIC8qIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCkgZG9lcyBub3QgdXNlIGNsb2NrX2dldHRpbWUoKQotICAgICAgIGJlY2F1c2UgaXQgd291bGQgcmVxdWlyZSB0byBsaW5rIFB5dGhvbiB0byB0aGUgcnQgKHJlYWwtdGltZSkKLSAgICAgICBsaWJyYXJ5LCBhdCBsZWFzdCBvbiBMaW51eCAqLwotICAgIHJldCA9IGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZ0cCk7Ci0gICAgaWYgKHJldCA9PSAwKSB7Ci0gICAgICAgIGlmIChpbmZvKSB7Ci0gICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgcmVzOwotICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSkiOwotICAgICAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMDsKLSAgICAgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAxOwotICAgICAgICAgICAgaWYgKGNsb2NrX2dldHJlcyhDTE9DS19SRUFMVElNRSwgJnJlcykgPT0gMCkKLSAgICAgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gcmVzLnR2X3NlYyArIHJlcy50dl9uc2VjICogMWUtOTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtOTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRwLnR2X3NlYyArIHRwLnR2X25zZWMgKiAxZS05KTsKKyAgICBfUHlUaW1lX3QgdDsKKyAgICBkb3VibGUgZDsKKyAgICBpZiAoX1B5VGltZV9HZXRTeXN0ZW1DbG9ja1dpdGhJbmZvKCZ0LCBpbmZvKSA8IDApIHsKKyAgICAgICAgYXNzZXJ0KGluZm8gIT0gTlVMTCk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSNlbmRpZgotICAgIF9QeVRpbWVfZ2V0dGltZW9mZGF5X2luZm8oJnQsIGluZm8pOwotICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoKGRvdWJsZSl0LnR2X3NlYyArIHQudHZfdXNlYyAqIDFlLTYpOworICAgIGQgPSBfUHlUaW1lX0FzU2Vjb25kc0RvdWJsZSh0KTsKKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKGQpOwogfQogCiAKLS8qIEltcGxlbWVudCBmbG9hdHNsZWVwKCkgZm9yIHZhcmlvdXMgcGxhdGZvcm1zLgorLyogSW1wbGVtZW50IHB5c2xlZXAoKSBmb3IgdmFyaW91cyBwbGF0Zm9ybXMuCiAgICBXaGVuIGludGVycnVwdGVkIChvciB3aGVuIGFub3RoZXIgZXJyb3Igb2NjdXJzKSwgcmV0dXJuIC0xIGFuZAogICAgc2V0IGFuIGV4Y2VwdGlvbjsgZWxzZSByZXR1cm4gMC4gKi8KIAogc3RhdGljIGludAotZmxvYXRzbGVlcChkb3VibGUgc2VjcykKK3B5c2xlZXAoX1B5VGltZV90IHNlY3MpCiB7Ci0vKiBYWFggU2hvdWxkIHRlc3QgZm9yIE1TX1dJTkRPV1MgZmlyc3QhICovCi0jaWYgZGVmaW5lZChIQVZFX1NFTEVDVCkgJiYgIWRlZmluZWQoX19FTVhfXykKLSAgICBzdHJ1Y3QgdGltZXZhbCB0OwotICAgIGRvdWJsZSBmcmFjOwotICAgIGludCBlcnI7Ci0KLSAgICBmcmFjID0gZm1vZChzZWNzLCAxLjApOwotICAgIHNlY3MgPSBmbG9vcihzZWNzKTsKLSAgICB0LnR2X3NlYyA9IChsb25nKXNlY3M7Ci0gICAgdC50dl91c2VjID0gKGxvbmcpKGZyYWMqMTAwMDAwMC4wKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZXJyID0gc2VsZWN0KDAsIChmZF9zZXQgKikwLCAoZmRfc2V0ICopMCwgKGZkX3NldCAqKTAsICZ0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChlcnIgIT0gMCkgewotI2lmZGVmIEVJTlRSCi0gICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgewotICAgICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCisgICAgX1B5VGltZV90IGRlYWRsaW5lLCBtb25vdG9uaWM7CisjaWZuZGVmIE1TX1dJTkRPV1MKKyAgICBzdHJ1Y3QgdGltZXZhbCB0aW1lb3V0OworICAgIGludCBlcnIgPSAwOworI2Vsc2UKKyAgICBfUHlUaW1lX3QgbWlsbGlzZWNzOworICAgIHVuc2lnbmVkIGxvbmcgdWxfbWlsbGlzOworICAgIERXT1JEIHJjOworICAgIEhBTkRMRSBoSW50ZXJydXB0RXZlbnQ7CiAjZW5kaWYKLSAgICAgICAgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworCisgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyBzZWNzOworCisgICAgZG8geworI2lmbmRlZiBNU19XSU5ET1dTCisgICAgICAgIGlmIChfUHlUaW1lX0FzVGltZXZhbChzZWNzLCAmdGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBlcnIgPSBzZWxlY3QoMCwgKGZkX3NldCAqKTAsIChmZF9zZXQgKikwLCAoZmRfc2V0ICopMCwgJnRpbWVvdXQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmIChlcnIgPT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgeworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgfQotI2VsaWYgZGVmaW5lZChfX1dBVENPTUNfXykgJiYgIWRlZmluZWQoX19RTlhfXykKLSAgICAvKiBYWFggQ2FuJ3QgaW50ZXJydXB0IHRoaXMgc2xlZXAgKi8KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZGVsYXkoKGludCkoc2VjcyAqIDEwMDAgKyAwLjUpKTsgIC8qIGRlbGF5KCkgdXNlcyBtaWxsaXNlY29uZHMgKi8KLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotI2VsaWYgZGVmaW5lZChNU19XSU5ET1dTKQotICAgIHsKLSAgICAgICAgZG91YmxlIG1pbGxpc2VjcyA9IHNlY3MgKiAxMDAwLjA7Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgdWxfbWlsbGlzOwotCisjZWxzZQorICAgICAgICBtaWxsaXNlY3MgPSBfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKHNlY3MsIF9QeVRpbWVfUk9VTkRfQ0VJTElORyk7CiAgICAgICAgIGlmIChtaWxsaXNlY3MgPiAoZG91YmxlKVVMT05HX01BWCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNsZWVwIGxlbmd0aCBpcyB0b28gbGFyZ2UiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisKICAgICAgICAgLyogQWxsb3cgc2xlZXAoMCkgdG8gbWFpbnRhaW4gd2luMzIgc2VtYW50aWNzLCBhbmQgYXMgZGVjcmVlZAogICAgICAgICAgKiBieSBHdWlkbywgb25seSB0aGUgbWFpbiB0aHJlYWQgY2FuIGJlIGludGVycnVwdGVkLgogICAgICAgICAgKi8KICAgICAgICAgdWxfbWlsbGlzID0gKHVuc2lnbmVkIGxvbmcpbWlsbGlzZWNzOwotICAgICAgICBpZiAodWxfbWlsbGlzID09IDAgfHwgIV9QeU9TX0lzTWFpblRocmVhZCgpKQorICAgICAgICBpZiAodWxfbWlsbGlzID09IDAgfHwgIV9QeU9TX0lzTWFpblRocmVhZCgpKSB7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgICAgICBTbGVlcCh1bF9taWxsaXMpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIERXT1JEIHJjOwotICAgICAgICAgICAgSEFORExFIGhJbnRlcnJ1cHRFdmVudCA9IF9QeU9TX1NpZ2ludEV2ZW50KCk7Ci0gICAgICAgICAgICBSZXNldEV2ZW50KGhJbnRlcnJ1cHRFdmVudCk7Ci0gICAgICAgICAgICByYyA9IFdhaXRGb3JTaW5nbGVPYmplY3RFeChoSW50ZXJydXB0RXZlbnQsIHVsX21pbGxpcywgRkFMU0UpOwotICAgICAgICAgICAgaWYgKHJjID09IFdBSVRfT0JKRUNUXzApIHsKLSAgICAgICAgICAgICAgICBQeV9CTE9DS19USFJFQURTCi0gICAgICAgICAgICAgICAgZXJybm8gPSBFSU5UUjsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKKyAgICAgICAgaEludGVycnVwdEV2ZW50ID0gX1B5T1NfU2lnaW50RXZlbnQoKTsKKyAgICAgICAgUmVzZXRFdmVudChoSW50ZXJydXB0RXZlbnQpOworCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmMgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0RXgoaEludGVycnVwdEV2ZW50LCB1bF9taWxsaXMsIEZBTFNFKTsKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICB9Ci0jZWxzZQotICAgIC8qIFhYWCBDYW4ndCBpbnRlcnJ1cHQgdGhpcyBzbGVlcCAqLwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzbGVlcCgoaW50KXNlY3MpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKHJjICE9IFdBSVRfT0JKRUNUXzApCisgICAgICAgICAgICBicmVhazsKICNlbmRpZgogCisgICAgICAgIC8qIHNsZWVwIHdhcyBpbnRlcnJ1cHRlZCBieSBTSUdJTlQgKi8KKyAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgIG1vbm90b25pYyA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKyAgICAgICAgc2VjcyA9IGRlYWRsaW5lIC0gbW9ub3RvbmljOworICAgICAgICBpZiAoc2VjcyA8IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLyogcmV0cnkgd2l0aCB0aGUgcmVjb21wdXRlZCBkZWxheSAqLworICAgIH0gd2hpbGUgKDEpOworCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3RrYXBwaW5pdC5jIGIvTW9kdWxlcy90a2FwcGluaXQuYwppbmRleCAyZWQ4NTk0Li43NjE2ZDlkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3RrYXBwaW5pdC5jCisrKyBiL01vZHVsZXMvdGthcHBpbml0LmMKQEAgLTI2LDkgKzI2LDYgQEAKIGludAogVGNsX0FwcEluaXQoVGNsX0ludGVycCAqaW50ZXJwKQogewotI2lmZGVmIFdJVEhfTU9SRUJVVFRPTlMKLSAgICBUa19XaW5kb3cgbWFpbl93aW5kb3c7Ci0jZW5kaWYKICAgICBjb25zdCBjaGFyICpfdGtpbnRlcl9za2lwX3RrX2luaXQ7CiAjaWZkZWYgVEtJTlRFUl9QUk9URUNUX0xPQURUSwogICAgIGNvbnN0IGNoYXIgKl90a2ludGVyX3RrX2ZhaWxlZDsKQEAgLTExMywyOSArMTEwLDEzIEBACiAgICAgICAgIHJldHVybiBUQ0xfRVJST1I7CiAgICAgfQogCi0jaWZkZWYgV0lUSF9NT1JFQlVUVE9OUwotICAgIG1haW5fd2luZG93ID0gVGtfTWFpbldpbmRvdyhpbnRlcnApOwotI2Vsc2UKICAgICBUa19NYWluV2luZG93KGludGVycCk7Ci0jZW5kaWYKIAogI2lmZGVmIFRLX0FRVUEKICAgICBUa01hY09TWEluaXRBcHBsZUV2ZW50cyhpbnRlcnApOwogICAgIFRrTWFjT1NYSW5pdE1lbnVzKGludGVycCk7CiAjZW5kaWYKIAotI2lmZGVmIFdJVEhfTU9SRUJVVFRPTlMKLSAgICB7Ci0gICAgICAgIGV4dGVybiBUY2xfQ21kUHJvYyBzdHVkQnV0dG9uQ21kOwotICAgICAgICBleHRlcm4gVGNsX0NtZFByb2MgdHJpQnV0dG9uQ21kOwotCi0gICAgICAgIFRjbF9DcmVhdGVDb21tYW5kKGludGVycCwgInN0dWRidXR0b24iLCBzdHVkQnV0dG9uQ21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoQ2xpZW50RGF0YSkgbWFpbl93aW5kb3csIE5VTEwpOwotICAgICAgICBUY2xfQ3JlYXRlQ29tbWFuZChpbnRlcnAsICJ0cmlidXR0b24iLCB0cmlCdXR0b25DbWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChDbGllbnREYXRhKSBtYWluX3dpbmRvdywgTlVMTCk7Ci0gICAgfQotI2VuZGlmCi0KICNpZmRlZiBXSVRIX1BJTCAvKiAwLjJiNSBhbmQgbGF0ZXIgLS0gbm90IHlldCByZWxlYXNlZCBhcyBvZiBNYXkgMTQgKi8KICAgICB7CiAgICAgICAgIGV4dGVybiB2b2lkIFRrSW1hZ2luZ19Jbml0KFRjbF9JbnRlcnAgKik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3RraW50ZXIuaCBiL01vZHVsZXMvdGtpbnRlci5oCmluZGV4IDNjNTU2NzYuLmNiNWE4MDYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGtpbnRlci5oCisrKyBiL01vZHVsZXMvdGtpbnRlci5oCkBAIC0xNiwxNCArMTYsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgKFRLX1JFTEVBU0VfTEVWRUwgPDwgOCkgfCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAoVEtfUkVMRUFTRV9TRVJJQUwgPDwgMCkpCiAKLS8qIFRLX1ZFUlNJT05fSEVYIHBhY2tzIGZpZWxkcyBpbiB3cm9uZyBvcmRlciwgbm90IHN1aXRhYmxlIGZvciBjb21wYXJpbmcgb2YKLSAqIG5vbi1maW5hbCByZWxlYXNlcy4gIExlZnQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCi0gKi8KLSNkZWZpbmUgVEtfVkVSU0lPTl9IRVggKChUS19NQUpPUl9WRVJTSU9OIDw8IDI0KSB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIChUS19NSU5PUl9WRVJTSU9OIDw8IDE2KSB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIChUS19SRUxFQVNFX1NFUklBTCA8PCA4KSB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIChUS19SRUxFQVNFX0xFVkVMIDw8IDApKQotCiAvKiBQcm90ZWN0IFRrIDguNC4xMyBhbmQgb2xkZXIgZnJvbSBhIGRlYWRsb2NrIHRoYXQgaGFwcGVucyB3aGVuIHRyeWluZwogICogdG8gbG9hZCB0ayBhZnRlciBhIGZhaWxlZCBhdHRlbXB0LiAqLwogI2lmIFRLX0hFWF9WRVJTSU9OIDwgMHgwODA0MDIwZQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlZGF0YS5jIGIvTW9kdWxlcy91bmljb2RlZGF0YS5jCmluZGV4IDUwN2NlZjMuLmZlNGU5MDggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZWRhdGEuYworKysgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMKQEAgLTczLDYgKzczLDggQEAKICAgICBQeV9VQ1M0ICgqbm9ybWFsaXphdGlvbikoUHlfVUNTNCk7CiB9IFByZXZpb3VzREJWZXJzaW9uOwogCisjaW5jbHVkZSAiY2xpbmljL3VuaWNvZGVkYXRhLmMuaCIKKwogI2RlZmluZSBnZXRfb2xkX3JlY29yZChzZWxmLCB2KSAgICAoKCgoUHJldmlvdXNEQlZlcnNpb24qKXNlbGYpLT5nZXRyZWNvcmQpKHYpKQogCiBzdGF0aWMgUHlNZW1iZXJEZWYgREJfbWVtYmVyc1tdID0gewpAQCAtOTksODEgKzEwMSwzMSBAQAogfQogCiAKLXN0YXRpYyBQeV9VQ1M0IGdldHVjaGFyKFB5VW5pY29kZU9iamVjdCAqb2JqKQotewotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSkKLSAgICAgICAgcmV0dXJuIChQeV9VQ1M0KS0xOwotICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopID09IDEpIHsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopKQotICAgICAgICAgICAgcmV0dXJuIChQeV9VQ1M0KS0xOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX1JFQURfQ0hBUihvYmosIDApOwotICAgIH0KLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAibmVlZCBhIHNpbmdsZSBVbmljb2RlIGNoYXJhY3RlciBhcyBwYXJhbWV0ZXIiKTsKLSAgICByZXR1cm4gKFB5X1VDUzQpLTE7Ci19Ci0KIC8qIC0tLSBNb2R1bGUgQVBJIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAvKltjbGluaWMgaW5wdXRdCi0KIHVuaWNvZGVkYXRhLlVDRC5kZWNpbWFsCiAKLSAgICB1bmljaHI6IG9iamVjdCh0eXBlPSdQeVVuaWNvZGVPYmplY3QgKicsIHN1YmNsYXNzX29mPScmUHlVbmljb2RlX1R5cGUnKQorICAgIHNlbGY6IHNlbGYKKyAgICBjaHI6IGludChhY2NlcHQ9e3N0cn0pCiAgICAgZGVmYXVsdDogb2JqZWN0PU5VTEwKICAgICAvCiAKIENvbnZlcnRzIGEgVW5pY29kZSBjaGFyYWN0ZXIgaW50byBpdHMgZXF1aXZhbGVudCBkZWNpbWFsIHZhbHVlLgogCi1SZXR1cm5zIHRoZSBkZWNpbWFsIHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlIGNoYXJhY3RlciB1bmljaHIKLWFzIGludGVnZXIuIElmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmCi1ub3QgZ2l2ZW4sIFZhbHVlRXJyb3IgaXMgcmFpc2VkLgorUmV0dXJucyB0aGUgZGVjaW1hbCB2YWx1ZSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBpbnRlZ2VyLgorSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBkZWZhdWx0IGlzIHJldHVybmVkLCBvciwgaWYgbm90IGdpdmVuLAorVmFsdWVFcnJvciBpcyByYWlzZWQuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfZGVjaW1hbF9fZG9jX18sCi0iZGVjaW1hbCgkc2VsZiwgdW5pY2hyLCBkZWZhdWx0PU5vbmUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJDb252ZXJ0cyBhIFVuaWNvZGUgY2hhcmFjdGVyIGludG8gaXRzIGVxdWl2YWxlbnQgZGVjaW1hbCB2YWx1ZS5cbiIKLSJcbiIKLSJSZXR1cm5zIHRoZSBkZWNpbWFsIHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlIGNoYXJhY3RlciB1bmljaHJcbiIKLSJhcyBpbnRlZ2VyLiBJZiBubyBzdWNoIHZhbHVlIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZlxuIgotIm5vdCBnaXZlbiwgVmFsdWVFcnJvciBpcyByYWlzZWQuIik7Ci0KLSNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX0RFQ0lNQUxfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY2ltYWwiLCAoUHlDRnVuY3Rpb24pdW5pY29kZWRhdGFfVUNEX2RlY2ltYWwsIE1FVEhfVkFSQVJHUywgdW5pY29kZWRhdGFfVUNEX2RlY2ltYWxfX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVkYXRhX1VDRF9kZWNpbWFsX2ltcGwoUHJldmlvdXNEQlZlcnNpb24gKnNlbGYsIFB5VW5pY29kZU9iamVjdCAqdW5pY2hyLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9VQ0RfZGVjaW1hbChQcmV2aW91c0RCVmVyc2lvbiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1bmljaHI7Ci0gICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJPIXxPOmRlY2ltYWwiLAotICAgICAgICAmUHlVbmljb2RlX1R5cGUsICZ1bmljaHIsICZkZWZhdWx0X3ZhbHVlKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9kZWNpbWFsX2ltcGwoc2VsZiwgdW5pY2hyLCBkZWZhdWx0X3ZhbHVlKTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZWRhdGFfVUNEX2RlY2ltYWxfaW1wbChQcmV2aW91c0RCVmVyc2lvbiAqc2VsZiwgUHlVbmljb2RlT2JqZWN0ICp1bmljaHIsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg2ODk2Njk4OTZkMjkzZGYgaW5wdXQ9YzI1YzlkMmI0ZGUwNzZiMV0qLwordW5pY29kZWRhdGFfVUNEX2RlY2ltYWxfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNociwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmUyMzM3NmUxYTE4NTIzMSBpbnB1dD05MzNmODEwNzk5M2YyM2QwXSovCiB7CiAgICAgaW50IGhhdmVfb2xkID0gMDsKICAgICBsb25nIHJjOwotICAgIFB5X1VDUzQgYzsKLQotICAgIGMgPSBnZXR1Y2hhcih1bmljaHIpOwotICAgIGlmIChjID09IChQeV9VQ1M0KS0xKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9VQ1M0IGMgPSAoUHlfVUNTNCljaHI7CiAKICAgICBpZiAoc2VsZiAmJiBVQ0RfQ2hlY2soc2VsZikpIHsKICAgICAgICAgY29uc3QgY2hhbmdlX3JlY29yZCAqb2xkID0gZ2V0X29sZF9yZWNvcmQoc2VsZiwgYyk7CkBAIC0yMDQsNjEgKzE1Niw2NCBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocmMpOwogfQogCi1QeURvY19TVFJWQVIodW5pY29kZWRhdGFfZGlnaXRfX2RvY19fLAotImRpZ2l0KHVuaWNoclssIGRlZmF1bHRdKVxuXAotXG5cCi1SZXR1cm5zIHRoZSBkaWdpdCB2YWx1ZSBhc3NpZ25lZCB0byB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgdW5pY2hyIGFzXG5cCi1pbnRlZ2VyLiBJZiBubyBzdWNoIHZhbHVlIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZlxuXAotbm90IGdpdmVuLCBWYWx1ZUVycm9yIGlzIHJhaXNlZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3VuaWNvZGVkYXRhLlVDRC5kaWdpdAorCisgICAgc2VsZjogc2VsZgorICAgIGNocjogaW50KGFjY2VwdD17c3RyfSkKKyAgICBkZWZhdWx0OiBvYmplY3Q9TlVMTAorICAgIC8KKworQ29udmVydHMgYSBVbmljb2RlIGNoYXJhY3RlciBpbnRvIGl0cyBlcXVpdmFsZW50IGRpZ2l0IHZhbHVlLgorCitSZXR1cm5zIHRoZSBkaWdpdCB2YWx1ZSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBpbnRlZ2VyLgorSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBkZWZhdWx0IGlzIHJldHVybmVkLCBvciwgaWYgbm90IGdpdmVuLAorVmFsdWVFcnJvciBpcyByYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9kaWdpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlZGF0YV9VQ0RfZGlnaXRfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNociwgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTZlMThjOTUwMTcxZmQyZiBpbnB1dD1lMjdkNmU0NTY1Y2QyOWYyXSovCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwotICAgIFB5T2JqZWN0ICpkZWZvYmogPSBOVUxMOwogICAgIGxvbmcgcmM7Ci0gICAgUHlfVUNTNCBjOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIXxPOmRpZ2l0IiwgJlB5VW5pY29kZV9UeXBlLCAmdiwgJmRlZm9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGMgPSBnZXR1Y2hhcih2KTsKLSAgICBpZiAoYyA9PSAoUHlfVUNTNCktMSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfVUNTNCBjID0gKFB5X1VDUzQpY2hyOwogICAgIHJjID0gUHlfVU5JQ09ERV9UT0RJR0lUKGMpOwogICAgIGlmIChyYyA8IDApIHsKLSAgICAgICAgaWYgKGRlZm9iaiA9PSBOVUxMKSB7CisgICAgICAgIGlmIChkZWZhdWx0X3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibm90IGEgZGlnaXQiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlfSU5DUkVGKGRlZm9iaik7Ci0gICAgICAgICAgICByZXR1cm4gZGVmb2JqOworICAgICAgICAgICAgUHlfSU5DUkVGKGRlZmF1bHRfdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyYyk7CiB9CiAKLVB5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9udW1lcmljX19kb2NfXywKLSJudW1lcmljKHVuaWNoclssIGRlZmF1bHRdKVxuXAotXG5cCi1SZXR1cm5zIHRoZSBudW1lcmljIHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlIGNoYXJhY3RlciB1bmljaHJcblwKLWFzIGZsb2F0LiBJZiBubyBzdWNoIHZhbHVlIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZlxuXAotbm90IGdpdmVuLCBWYWx1ZUVycm9yIGlzIHJhaXNlZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3VuaWNvZGVkYXRhLlVDRC5udW1lcmljCisKKyAgICBzZWxmOiBzZWxmCisgICAgY2hyOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIGRlZmF1bHQ6IG9iamVjdD1OVUxMCisgICAgLworCitDb252ZXJ0cyBhIFVuaWNvZGUgY2hhcmFjdGVyIGludG8gaXRzIGVxdWl2YWxlbnQgbnVtZXJpYyB2YWx1ZS4KKworUmV0dXJucyB0aGUgbnVtZXJpYyB2YWx1ZSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBmbG9hdC4KK0lmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmIG5vdCBnaXZlbiwKK1ZhbHVlRXJyb3IgaXMgcmFpc2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZWRhdGFfbnVtZXJpYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlZGF0YV9VQ0RfbnVtZXJpY19pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01M2NlMjgxZmU4NWIxMGM0IGlucHV0PWZkZjU4NzFhNTU0Mjg5M2NdKi8KIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnY7Ci0gICAgUHlPYmplY3QgKmRlZm9iaiA9IE5VTEw7CiAgICAgaW50IGhhdmVfb2xkID0gMDsKICAgICBkb3VibGUgcmM7Ci0gICAgUHlfVUNTNCBjOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIXxPOm51bWVyaWMiLCAmUHlVbmljb2RlX1R5cGUsICZ2LCAmZGVmb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYyA9IGdldHVjaGFyKHYpOwotICAgIGlmIChjID09IChQeV9VQ1M0KS0xKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9VQ1M0IGMgPSAoUHlfVUNTNCljaHI7CiAKICAgICBpZiAoc2VsZiAmJiBVQ0RfQ2hlY2soc2VsZikpIHsKICAgICAgICAgY29uc3QgY2hhbmdlX3JlY29yZCAqb2xkID0gZ2V0X29sZF9yZWNvcmQoc2VsZiwgYyk7CkBAIC0yNzYsMzcgKzIzMSwzNCBAQAogICAgIGlmICghaGF2ZV9vbGQpCiAgICAgICAgIHJjID0gUHlfVU5JQ09ERV9UT05VTUVSSUMoYyk7CiAgICAgaWYgKHJjID09IC0xLjApIHsKLSAgICAgICAgaWYgKGRlZm9iaiA9PSBOVUxMKSB7CisgICAgICAgIGlmIChkZWZhdWx0X3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibm90IGEgbnVtZXJpYyBjaGFyYWN0ZXIiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlfSU5DUkVGKGRlZm9iaik7Ci0gICAgICAgICAgICByZXR1cm4gZGVmb2JqOworICAgICAgICAgICAgUHlfSU5DUkVGKGRlZmF1bHRfdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShyYyk7CiB9CiAKLVB5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9jYXRlZ29yeV9fZG9jX18sCi0iY2F0ZWdvcnkodW5pY2hyKVxuXAotXG5cCi1SZXR1cm5zIHRoZSBnZW5lcmFsIGNhdGVnb3J5IGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuXAotdW5pY2hyIGFzIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3VuaWNvZGVkYXRhLlVDRC5jYXRlZ29yeQorCisgICAgc2VsZjogc2VsZgorICAgIGNocjogaW50KGFjY2VwdD17c3RyfSkKKyAgICAvCisKK1JldHVybnMgdGhlIGdlbmVyYWwgY2F0ZWdvcnkgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZWRhdGFfY2F0ZWdvcnkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZWRhdGFfVUNEX2NhdGVnb3J5X2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODU3MTUzOWVlMmU2NzgzYSBpbnB1dD0yN2Q2ZjNkODUwNTBiYzA2XSovCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwogICAgIGludCBpbmRleDsKLSAgICBQeV9VQ1M0IGM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hOmNhdGVnb3J5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VW5pY29kZV9UeXBlLCAmdikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGMgPSBnZXR1Y2hhcih2KTsKLSAgICBpZiAoYyA9PSAoUHlfVUNTNCktMSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfVUNTNCBjID0gKFB5X1VDUzQpY2hyOwogICAgIGluZGV4ID0gKGludCkgX2dldHJlY29yZF9leChjKS0+Y2F0ZWdvcnk7CiAgICAgaWYgKHNlbGYgJiYgVUNEX0NoZWNrKHNlbGYpKSB7CiAgICAgICAgIGNvbnN0IGNoYW5nZV9yZWNvcmQgKm9sZCA9IGdldF9vbGRfcmVjb3JkKHNlbGYsIGMpOwpAQCAtMzE2LDI2ICsyNjgsMjQgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoX1B5VW5pY29kZV9DYXRlZ29yeU5hbWVzW2luZGV4XSk7CiB9CiAKLVB5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9iaWRpcmVjdGlvbmFsX19kb2NfXywKLSJiaWRpcmVjdGlvbmFsKHVuaWNocilcblwKLVxuXAotUmV0dXJucyB0aGUgYmlkaXJlY3Rpb25hbCBjbGFzcyBhc3NpZ25lZCB0byB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcblwKLXVuaWNociBhcyBzdHJpbmcuIElmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgYW4gZW1wdHkgc3RyaW5nIGlzXG5cCi1yZXR1cm5lZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3VuaWNvZGVkYXRhLlVDRC5iaWRpcmVjdGlvbmFsCisKKyAgICBzZWxmOiBzZWxmCisgICAgY2hyOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIC8KKworUmV0dXJucyB0aGUgYmlkaXJlY3Rpb25hbCBjbGFzcyBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBzdHJpbmcuCisKK0lmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZWRhdGFfYmlkaXJlY3Rpb25hbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlZGF0YV9VQ0RfYmlkaXJlY3Rpb25hbF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQzNjMxMGNlMjAzOWJiOTIgaW5wdXQ9YjNkOGY0MmNlYmZjZjQ3NV0qLwogewotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKICAgICBpbnQgaW5kZXg7Ci0gICAgUHlfVUNTNCBjOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPITpiaWRpcmVjdGlvbmFsIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VW5pY29kZV9UeXBlLCAmdikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGMgPSBnZXR1Y2hhcih2KTsKLSAgICBpZiAoYyA9PSAoUHlfVUNTNCktMSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfVUNTNCBjID0gKFB5X1VDUzQpY2hyOwogICAgIGluZGV4ID0gKGludCkgX2dldHJlY29yZF9leChjKS0+YmlkaXJlY3Rpb25hbDsKICAgICBpZiAoc2VsZiAmJiBVQ0RfQ2hlY2soc2VsZikpIHsKICAgICAgICAgY29uc3QgY2hhbmdlX3JlY29yZCAqb2xkID0gZ2V0X29sZF9yZWNvcmQoc2VsZiwgYyk7CkBAIC0zNDcsNTUgKzI5Nyw1MiBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhfUHlVbmljb2RlX0JpZGlyZWN0aW9uYWxOYW1lc1tpbmRleF0pOwogfQogCi1QeURvY19TVFJWQVIodW5pY29kZWRhdGFfY29tYmluaW5nX19kb2NfXywKLSJjb21iaW5pbmcodW5pY2hyKVxuXAotXG5cCi1SZXR1cm5zIHRoZSBjYW5vbmljYWwgY29tYmluaW5nIGNsYXNzIGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlXG5cCi1jaGFyYWN0ZXIgdW5pY2hyIGFzIGludGVnZXIuIFJldHVybnMgMCBpZiBubyBjb21iaW5pbmcgY2xhc3MgaXNcblwKLWRlZmluZWQuIik7CisvKltjbGluaWMgaW5wdXRdCit1bmljb2RlZGF0YS5VQ0QuY29tYmluaW5nIC0+IGludAogCi1zdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZWRhdGFfY29tYmluaW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAgICBzZWxmOiBzZWxmCisgICAgY2hyOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIC8KKworUmV0dXJucyB0aGUgY2Fub25pY2FsIGNvbWJpbmluZyBjbGFzcyBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBpbnRlZ2VyLgorCitSZXR1cm5zIDAgaWYgbm8gY29tYmluaW5nIGNsYXNzIGlzIGRlZmluZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK3VuaWNvZGVkYXRhX1VDRF9jb21iaW5pbmdfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNocikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYWQwNTZkMGNiNmE1OTIwIGlucHV0PTlmMmQ2YjJhOTVkMGEyMmFdKi8KIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnY7CiAgICAgaW50IGluZGV4OwotICAgIFB5X1VDUzQgYzsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyE6Y29tYmluaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VW5pY29kZV9UeXBlLCAmdikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGMgPSBnZXR1Y2hhcih2KTsKLSAgICBpZiAoYyA9PSAoUHlfVUNTNCktMSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfVUNTNCBjID0gKFB5X1VDUzQpY2hyOwogICAgIGluZGV4ID0gKGludCkgX2dldHJlY29yZF9leChjKS0+Y29tYmluaW5nOwogICAgIGlmIChzZWxmICYmIFVDRF9DaGVjayhzZWxmKSkgewogICAgICAgICBjb25zdCBjaGFuZ2VfcmVjb3JkICpvbGQgPSBnZXRfb2xkX3JlY29yZChzZWxmLCBjKTsKICAgICAgICAgaWYgKG9sZC0+Y2F0ZWdvcnlfY2hhbmdlZCA9PSAwKQogICAgICAgICAgICAgaW5kZXggPSAwOyAvKiB1bmFzc2lnbmVkICovCiAgICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoaW5kZXgpOworICAgIHJldHVybiBpbmRleDsKIH0KIAotUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX21pcnJvcmVkX19kb2NfXywKLSJtaXJyb3JlZCh1bmljaHIpXG5cCi1cblwKLVJldHVybnMgdGhlIG1pcnJvcmVkIHByb3BlcnR5IGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuXAotdW5pY2hyIGFzIGludGVnZXIuIFJldHVybnMgMSBpZiB0aGUgY2hhcmFjdGVyIGhhcyBiZWVuIGlkZW50aWZpZWQgYXNcblwKLWEgXCJtaXJyb3JlZFwiIGNoYXJhY3RlciBpbiBiaWRpcmVjdGlvbmFsIHRleHQsIDAgb3RoZXJ3aXNlLiIpOworLypbY2xpbmljIGlucHV0XQordW5pY29kZWRhdGEuVUNELm1pcnJvcmVkIC0+IGludAogCi1zdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZWRhdGFfbWlycm9yZWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHNlbGY6IHNlbGYKKyAgICBjaHI6IGludChhY2NlcHQ9e3N0cn0pCisgICAgLworCitSZXR1cm5zIHRoZSBtaXJyb3JlZCBwcm9wZXJ0eSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBpbnRlZ2VyLgorCitSZXR1cm5zIDEgaWYgdGhlIGNoYXJhY3RlciBoYXMgYmVlbiBpZGVudGlmaWVkIGFzIGEgIm1pcnJvcmVkIgorY2hhcmFjdGVyIGluIGJpZGlyZWN0aW9uYWwgdGV4dCwgMCBvdGhlcndpc2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK3VuaWNvZGVkYXRhX1VDRF9taXJyb3JlZF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI1MzJkYmY4MTIxYjUwZTYgaW5wdXQ9NWRkNDAwZDM1MWFlNmYzYl0qLwogewotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKICAgICBpbnQgaW5kZXg7Ci0gICAgUHlfVUNTNCBjOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPITptaXJyb3JlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZQeVVuaWNvZGVfVHlwZSwgJnYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjID0gZ2V0dWNoYXIodik7Ci0gICAgaWYgKGMgPT0gKFB5X1VDUzQpLTEpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1VDUzQgYyA9IChQeV9VQ1M0KWNocjsKICAgICBpbmRleCA9IChpbnQpIF9nZXRyZWNvcmRfZXgoYyktPm1pcnJvcmVkOwogICAgIGlmIChzZWxmICYmIFVDRF9DaGVjayhzZWxmKSkgewogICAgICAgICBjb25zdCBjaGFuZ2VfcmVjb3JkICpvbGQgPSBnZXRfb2xkX3JlY29yZChzZWxmLCBjKTsKQEAgLTQwNCwyOCArMzUxLDI1IEBACiAgICAgICAgIGVsc2UgaWYgKG9sZC0+bWlycm9yZWRfY2hhbmdlZCAhPSAweEZGKQogICAgICAgICAgICAgaW5kZXggPSBvbGQtPm1pcnJvcmVkX2NoYW5nZWQ7CiAgICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoaW5kZXgpOworICAgIHJldHVybiBpbmRleDsKIH0KIAotUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX2Vhc3RfYXNpYW5fd2lkdGhfX2RvY19fLAotImVhc3RfYXNpYW5fd2lkdGgodW5pY2hyKVxuXAotXG5cCi1SZXR1cm5zIHRoZSBlYXN0IGFzaWFuIHdpZHRoIGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuXAotdW5pY2hyIGFzIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3VuaWNvZGVkYXRhLlVDRC5lYXN0X2FzaWFuX3dpZHRoCisKKyAgICBzZWxmOiBzZWxmCisgICAgY2hyOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIC8KKworUmV0dXJucyB0aGUgZWFzdCBhc2lhbiB3aWR0aCBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9lYXN0X2FzaWFuX3dpZHRoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVkYXRhX1VDRF9lYXN0X2FzaWFuX3dpZHRoX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDg0ZTg1MzdkOWVlODE5NyBpbnB1dD1jNDg1NDc5OGFhYjAyNmUwXSovCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwogICAgIGludCBpbmRleDsKLSAgICBQeV9VQ1M0IGM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hOmVhc3RfYXNpYW5fd2lkdGgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlVbmljb2RlX1R5cGUsICZ2KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYyA9IGdldHVjaGFyKHYpOwotICAgIGlmIChjID09IChQeV9VQ1M0KS0xKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9VQ1M0IGMgPSAoUHlfVUNTNCljaHI7CiAgICAgaW5kZXggPSAoaW50KSBfZ2V0cmVjb3JkX2V4KGMpLT5lYXN0X2FzaWFuX3dpZHRoOwogICAgIGlmIChzZWxmICYmIFVDRF9DaGVjayhzZWxmKSkgewogICAgICAgICBjb25zdCBjaGFuZ2VfcmVjb3JkICpvbGQgPSBnZXRfb2xkX3JlY29yZChzZWxmLCBjKTsKQEAgLTQzNSwyOSArMzc5LDI3IEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKF9QeVVuaWNvZGVfRWFzdEFzaWFuV2lkdGhOYW1lc1tpbmRleF0pOwogfQogCi1QeURvY19TVFJWQVIodW5pY29kZWRhdGFfZGVjb21wb3NpdGlvbl9fZG9jX18sCi0iZGVjb21wb3NpdGlvbih1bmljaHIpXG5cCi1cblwKLVJldHVybnMgdGhlIGNoYXJhY3RlciBkZWNvbXBvc2l0aW9uIG1hcHBpbmcgYXNzaWduZWQgdG8gdGhlIFVuaWNvZGVcblwKLWNoYXJhY3RlciB1bmljaHIgYXMgc3RyaW5nLiBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaW4gY2FzZSBub1xuXAotc3VjaCBtYXBwaW5nIGlzIGRlZmluZWQuIik7CisvKltjbGluaWMgaW5wdXRdCit1bmljb2RlZGF0YS5VQ0QuZGVjb21wb3NpdGlvbgorCisgICAgc2VsZjogc2VsZgorICAgIGNocjogaW50KGFjY2VwdD17c3RyfSkKKyAgICAvCisKK1JldHVybnMgdGhlIGNoYXJhY3RlciBkZWNvbXBvc2l0aW9uIG1hcHBpbmcgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgc3RyaW5nLgorCitBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaW4gY2FzZSBubyBzdWNoIG1hcHBpbmcgaXMgZGVmaW5lZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVkYXRhX2RlY29tcG9zaXRpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZWRhdGFfVUNEX2RlY29tcG9zaXRpb25faW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNocikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZDY5OWYzZWM3NTY1ZDI3IGlucHV0PWU0YzEyNDU5YWQ2ODUwN2JdKi8KIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnY7CiAgICAgY2hhciBkZWNvbXBbMjU2XTsKICAgICBpbnQgY29kZSwgaW5kZXgsIGNvdW50OwogICAgIHNpemVfdCBpOwogICAgIHVuc2lnbmVkIGludCBwcmVmaXhfaW5kZXg7Ci0gICAgUHlfVUNTNCBjOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPITpkZWNvbXBvc2l0aW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VW5pY29kZV9UeXBlLCAmdikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGMgPSBnZXR1Y2hhcih2KTsKLSAgICBpZiAoYyA9PSAoUHlfVUNTNCktMSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfVUNTNCBjID0gKFB5X1VDUzQpY2hyOwogCiAgICAgY29kZSA9IChpbnQpYzsKIApAQCAtODU4LDIyICs4MDAsMjQgQEAKICAgICByZXR1cm4gMTsgLyogY2VydGFpbmx5IG5vcm1hbGl6ZWQgKi8KIH0KIAotUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX25vcm1hbGl6ZV9fZG9jX18sCi0ibm9ybWFsaXplKGZvcm0sIHVuaXN0cilcblwKLVxuXAotUmV0dXJuIHRoZSBub3JtYWwgZm9ybSAnZm9ybScgZm9yIHRoZSBVbmljb2RlIHN0cmluZyB1bmlzdHIuICBWYWxpZFxuXAotdmFsdWVzIGZvciBmb3JtIGFyZSAnTkZDJywgJ05GS0MnLCAnTkZEJywgYW5kICdORktEJy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3VuaWNvZGVkYXRhLlVDRC5ub3JtYWxpemUKIAotc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZWRhdGFfbm9ybWFsaXplKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAgICBzZWxmOiBzZWxmCisgICAgZm9ybTogc3RyCisgICAgdW5pc3RyIGFzIGlucHV0OiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeVVuaWNvZGVfVHlwZScpCisgICAgLworCitSZXR1cm4gdGhlIG5vcm1hbCBmb3JtICdmb3JtJyBmb3IgdGhlIFVuaWNvZGUgc3RyaW5nIHVuaXN0ci4KKworVmFsaWQgdmFsdWVzIGZvciBmb3JtIGFyZSAnTkZDJywgJ05GS0MnLCAnTkZEJywgYW5kICdORktEJy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9ub3JtYWxpemVfaW1wbChQeU9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW5wdXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjJkMWY4ODcwMDI3ZWZkYyBpbnB1dD1jZDA5MmU2MzFjZjExODgzXSovCiB7Ci0gICAgY2hhciAqZm9ybTsKLSAgICBQeU9iamVjdCAqaW5wdXQ7Ci0KLSAgICBpZighUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08hOm5vcm1hbGl6ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm0sICZQeVVuaWNvZGVfVHlwZSwgJmlucHV0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGlucHV0KSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTk3NywxMCArOTIxLDExIEBACiB7CiAgICAgcmV0dXJuCiAgICAgICAgICgweDM0MDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4NERCNSkgICB8fCAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBBICovCi0gICAgICAgICgweDRFMDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4OUZDQykgICB8fCAvKiBDSksgSWRlb2dyYXBoICovCisgICAgICAgICgweDRFMDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4OUZENSkgICB8fCAvKiBDSksgSWRlb2dyYXBoICovCiAgICAgICAgICgweDIwMDAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDJBNkQ2KSB8fCAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBCICovCiAgICAgICAgICgweDJBNzAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDJCNzM0KSB8fCAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBDICovCi0gICAgICAgICgweDJCNzQwIDw9IGNvZGUgJiYgY29kZSA8PSAweDJCODFEKTsgICAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBEICovCisgICAgICAgICgweDJCNzQwIDw9IGNvZGUgJiYgY29kZSA8PSAweDJCODFEKSB8fCAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBEICovCisgICAgICAgICgweDJCODIwIDw9IGNvZGUgJiYgY29kZSA8PSAweDJDRUExKTsgICAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBFICovCiB9CiAKIC8qIG1hY3JvcyB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgZ2l2ZW4gY29kZSBwb2ludCBpcyBpbiB0aGUgUFVBIHJhbmdlIHRoYXQKQEAgLTEyMzIsNjQgKzExNzcsNjcgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAvKiBQeXRob24gYmluZGluZ3MgKi8KIAotUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX25hbWVfX2RvY19fLAotIm5hbWUodW5pY2hyWywgZGVmYXVsdF0pXG5cCi1SZXR1cm5zIHRoZSBuYW1lIGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlIGNoYXJhY3RlciB1bmljaHIgYXMgYVxuXAotc3RyaW5nLiBJZiBubyBuYW1lIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZiBub3RcblwKLWdpdmVuLCBWYWx1ZUVycm9yIGlzIHJhaXNlZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3VuaWNvZGVkYXRhLlVDRC5uYW1lCisKKyAgICBzZWxmOiBzZWxmCisgICAgY2hyOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIGRlZmF1bHQ6IG9iamVjdD1OVUxMCisgICAgLworCitSZXR1cm5zIHRoZSBuYW1lIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGEgc3RyaW5nLgorCitJZiBubyBuYW1lIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZiBub3QgZ2l2ZW4sCitWYWx1ZUVycm9yIGlzIHJhaXNlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVkYXRhX25hbWUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQordW5pY29kZWRhdGFfVUNEX25hbWVfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNociwgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmJiYjM3YTMyNjQwNzcwNyBpbnB1dD0zZTAzNjdmNTM0ZGU1NmQ5XSovCiB7CiAgICAgY2hhciBuYW1lW05BTUVfTUFYTEVOXTsKLSAgICBQeV9VQ1M0IGM7Ci0KLSAgICBQeVVuaWNvZGVPYmplY3QqIHY7Ci0gICAgUHlPYmplY3QqIGRlZm9iaiA9IE5VTEw7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIXxPOm5hbWUiLCAmUHlVbmljb2RlX1R5cGUsICZ2LCAmZGVmb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBjID0gZ2V0dWNoYXIodik7Ci0gICAgaWYgKGMgPT0gKFB5X1VDUzQpLTEpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1VDUzQgYyA9IChQeV9VQ1M0KWNocjsKIAogICAgIGlmICghX2dldHVjbmFtZShzZWxmLCBjLCBuYW1lLCBzaXplb2YobmFtZSksIDApKSB7Ci0gICAgICAgIGlmIChkZWZvYmogPT0gTlVMTCkgeworICAgICAgICBpZiAoZGVmYXVsdF92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5vIHN1Y2ggbmFtZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoZGVmb2JqKTsKLSAgICAgICAgICAgIHJldHVybiBkZWZvYmo7CisgICAgICAgICAgICBQeV9JTkNSRUYoZGVmYXVsdF92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKIH0KIAotUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX2xvb2t1cF9fZG9jX18sCi0ibG9va3VwKG5hbWUpXG5cCi1cblwKLUxvb2sgdXAgY2hhcmFjdGVyIGJ5IG5hbWUuICBJZiBhIGNoYXJhY3RlciB3aXRoIHRoZVxuXAotZ2l2ZW4gbmFtZSBpcyBmb3VuZCwgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIFVuaWNvZGVcblwKLWNoYXJhY3Rlci4gIElmIG5vdCBmb3VuZCwgS2V5RXJyb3IgaXMgcmFpc2VkLiIpOworLypbY2xpbmljIGlucHV0XQordW5pY29kZWRhdGEuVUNELmxvb2t1cAorCisgICAgc2VsZjogc2VsZgorICAgIG5hbWU6IHN0cihhY2NlcHQ9e3N0ciwgcm9idWZmZXJ9LCB6ZXJvZXM9VHJ1ZSkKKyAgICAvCisKK0xvb2sgdXAgY2hhcmFjdGVyIGJ5IG5hbWUuCisKK0lmIGEgY2hhcmFjdGVyIHdpdGggdGhlIGdpdmVuIG5hbWUgaXMgZm91bmQsIHJldHVybiB0aGUKK2NvcnJlc3BvbmRpbmcgY2hhcmFjdGVyLiAgSWYgbm90IGZvdW5kLCBLZXlFcnJvciBpcyByYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9sb29rdXAoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQordW5pY29kZWRhdGFfVUNEX2xvb2t1cF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX2NsZWFuX3QgbmFtZV9sZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzY1Y2I4MTg2Nzg4ZTZiZSBpbnB1dD1hNTU3YmUwZjg2MDdhMGQ2XSovCiB7CiAgICAgUHlfVUNTNCBjb2RlOwotCi0gICAgY2hhciogbmFtZTsKLSAgICBQeV9zc2l6ZV90IG5hbWVsZW47CiAgICAgdW5zaWduZWQgaW50IGluZGV4OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyM6bG9va3VwIiwgJm5hbWUsICZuYW1lbGVuKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG5hbWVsZW4gPiBJTlRfTUFYKSB7CisgICAgaWYgKG5hbWVfbGVuZ3RoID4gSU5UX01BWCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsICJuYW1lIHRvbyBsb25nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmICghX2dldGNvZGUoc2VsZiwgbmFtZSwgKGludCluYW1lbGVuLCAmY29kZSwgMSkpIHsKKyAgICBpZiAoIV9nZXRjb2RlKHNlbGYsIG5hbWUsIChpbnQpbmFtZV9sZW5ndGgsICZjb2RlLCAxKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsICJ1bmRlZmluZWQgY2hhcmFjdGVyIG5hbWUgJyVzJyIsIG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xMzA4LDI0ICsxMjU2LDE3IEBACiAKIHN0YXRpYyBQeU1ldGhvZERlZiB1bmljb2RlZGF0YV9mdW5jdGlvbnNbXSA9IHsKICAgICBVTklDT0RFREFUQV9VQ0RfREVDSU1BTF9NRVRIT0RERUYKLSAgICB7ImRpZ2l0IiwgdW5pY29kZWRhdGFfZGlnaXQsIE1FVEhfVkFSQVJHUywgdW5pY29kZWRhdGFfZGlnaXRfX2RvY19ffSwKLSAgICB7Im51bWVyaWMiLCB1bmljb2RlZGF0YV9udW1lcmljLCBNRVRIX1ZBUkFSR1MsIHVuaWNvZGVkYXRhX251bWVyaWNfX2RvY19ffSwKLSAgICB7ImNhdGVnb3J5IiwgdW5pY29kZWRhdGFfY2F0ZWdvcnksIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgdW5pY29kZWRhdGFfY2F0ZWdvcnlfX2RvY19ffSwKLSAgICB7ImJpZGlyZWN0aW9uYWwiLCB1bmljb2RlZGF0YV9iaWRpcmVjdGlvbmFsLCBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgdW5pY29kZWRhdGFfYmlkaXJlY3Rpb25hbF9fZG9jX199LAotICAgIHsiY29tYmluaW5nIiwgdW5pY29kZWRhdGFfY29tYmluaW5nLCBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICB1bmljb2RlZGF0YV9jb21iaW5pbmdfX2RvY19ffSwKLSAgICB7Im1pcnJvcmVkIiwgdW5pY29kZWRhdGFfbWlycm9yZWQsIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgdW5pY29kZWRhdGFfbWlycm9yZWRfX2RvY19ffSwKLSAgICB7ImVhc3RfYXNpYW5fd2lkdGgiLCB1bmljb2RlZGF0YV9lYXN0X2FzaWFuX3dpZHRoLCBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZWRhdGFfZWFzdF9hc2lhbl93aWR0aF9fZG9jX199LAotICAgIHsiZGVjb21wb3NpdGlvbiIsIHVuaWNvZGVkYXRhX2RlY29tcG9zaXRpb24sIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlZGF0YV9kZWNvbXBvc2l0aW9uX19kb2NfX30sCi0gICAgeyJuYW1lIiwgdW5pY29kZWRhdGFfbmFtZSwgTUVUSF9WQVJBUkdTLCB1bmljb2RlZGF0YV9uYW1lX19kb2NfX30sCi0gICAgeyJsb29rdXAiLCB1bmljb2RlZGF0YV9sb29rdXAsIE1FVEhfVkFSQVJHUywgdW5pY29kZWRhdGFfbG9va3VwX19kb2NfX30sCi0gICAgeyJub3JtYWxpemUiLCB1bmljb2RlZGF0YV9ub3JtYWxpemUsIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhX25vcm1hbGl6ZV9fZG9jX199LAorICAgIFVOSUNPREVEQVRBX1VDRF9ESUdJVF9NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfTlVNRVJJQ19NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfQ0FURUdPUllfTUVUSE9EREVGCisgICAgVU5JQ09ERURBVEFfVUNEX0JJRElSRUNUSU9OQUxfTUVUSE9EREVGCisgICAgVU5JQ09ERURBVEFfVUNEX0NPTUJJTklOR19NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfTUlSUk9SRURfTUVUSE9EREVGCisgICAgVU5JQ09ERURBVEFfVUNEX0VBU1RfQVNJQU5fV0lEVEhfTUVUSE9EREVGCisgICAgVU5JQ09ERURBVEFfVUNEX0RFQ09NUE9TSVRJT05fTUVUSE9EREVGCisgICAgVU5JQ09ERURBVEFfVUNEX05BTUVfTUVUSE9EREVGCisgICAgVU5JQ09ERURBVEFfVUNEX0xPT0tVUF9NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfTk9STUFMSVpFX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfSAgICAgICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oIGIvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oCmluZGV4IGVjMTFmYTEuLjg5ZDg3NjggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaAorKysgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmgKQEAgLTEsNiArMSw2IEBACiAvKiB0aGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBUb29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weSAzLjIgKi8KIAotI2RlZmluZSBVTklEQVRBX1ZFUlNJT04gIjYuMy4wIgorI2RlZmluZSBVTklEQVRBX1ZFUlNJT04gIjguMC4wIgogLyogYSBsaXN0IG9mIHVuaXF1ZSBkYXRhYmFzZSByZWNvcmRzICovCiBjb25zdCBfUHlVbmljb2RlX0RhdGFiYXNlUmVjb3JkIF9QeVVuaWNvZGVfRGF0YWJhc2VfUmVjb3Jkc1tdID0gewogICAgIHswLCAwLCAwLCAwLCAwLCAwfSwKQEAgLTMyMyw3ICszMjMsMTEgQEAKICAgICB7MjcsIDAsIDE5LCAwLCAxLCAxMzZ9LAogICAgIHsxNCwgMCwgMTksIDAsIDUsIDB9LAogICAgIHs4LCAwLCAxOSwgMCwgNSwgMH0sCisgICAgezksIDAsIDksIDAsIDUsIDB9LAogICAgIHs5LCAwLCA0LCAwLCA1LCAwfSwKKyAgICB7MzAsIDAsIDQsIDAsIDUsIDB9LAorICAgIHsxLCAwLCA0LCAwLCA1LCAwfSwKKyAgICB7MiwgMCwgNCwgMCwgNSwgMH0sCiAgICAgezksIDAsIDEyLCAwLCA1LCAwfSwKICAgICB7MzAsIDAsIDEsIDAsIDUsIDE3MH0sCiAgICAgezUsIDIxNiwgMSwgMCwgNSwgMH0sCkBAIC0zMzUsOCArMzM5LDggQEAKIH07CiAKIC8qIFJlaW5kZXhpbmcgb2YgTkZDIGZpcnN0IGNoYXJhY3RlcnMuICovCi0jZGVmaW5lIFRPVEFMX0ZJUlNUIDM3MgotI2RlZmluZSBUT1RBTF9MQVNUIDU2CisjZGVmaW5lIFRPVEFMX0ZJUlNUIDM3NgorI2RlZmluZSBUT1RBTF9MQVNUIDYyCiBzdHJ1Y3QgcmVpbmRleHtpbnQgc3RhcnQ7c2hvcnQgY291bnQsaW5kZXg7fTsKIHN0YXRpYyBzdHJ1Y3QgcmVpbmRleCBuZmNfZmlyc3RbXSA9IHsKICAgeyA2MCwgMiwgMH0sCkBAIC01NDYsNiArNTUwLDkgQEAKICAgeyA2OTc4NywgMCwgMzY4fSwKICAgeyA2OTc5NywgMCwgMzY5fSwKICAgeyA2OTkzNywgMSwgMzcwfSwKKyAgeyA3MDQ3MSwgMCwgMzcyfSwKKyAgeyA3MDg0MSwgMCwgMzczfSwKKyAgeyA3MTA5NiwgMSwgMzc0fSwKICAgezAsMCwwfQogfTsKIApAQCAtNTgzLDYgKzU5MCwxMiBAQAogICB7IDEyNDQxLCAxLCA1Mn0sCiAgIHsgNjk4MTgsIDAsIDU0fSwKICAgeyA2OTkyNywgMCwgNTV9LAorICB7IDcwNDYyLCAwLCA1Nn0sCisgIHsgNzA0ODcsIDAsIDU3fSwKKyAgeyA3MDgzMiwgMCwgNTh9LAorICB7IDcwODQyLCAwLCA1OX0sCisgIHsgNzA4NDUsIDAsIDYwfSwKKyAgeyA3MTA4NywgMCwgNjF9LAogICB7MCwwLDB9CiB9OwogCkBAIC03MTQsMzYgKzcyNyw0MyBAQAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjIsIDEyMiwgMTIzLCAxMjQsIAotICAgIDEyNSwgMTI2LCAxMjcsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCA4NCwgCi0gICAgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDE0MywgODQsIDE0NCwgMTQ1LCAxNDYsIAotICAgIDg0LCAxNDcsIDg0LCAxNDgsIDg0LCA4NCwgODQsIDE0OSwgODQsIDg0LCA4NCwgMTUwLCAxNTEsIDE1MiwgMTUzLCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAxNTQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE1NSwgODQsIDE1NiwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE1NywgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDQxLCA0MSwgNDEsIDQxLCAxNTgsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDE1OSwgMTYwLCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDE2MSwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgNzgsIDE2MiwgMTYzLCAxNjQsIDE2NSwgODQsIDE2NiwgODQsIDE2NywgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIAotICAgIDE3MywgMTc0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDE3NSwgMTc2LCA4NCwgODQsIDE3NywgMTc4LCAxNzksIAotICAgIDE4MCwgMTgxLCA4NCwgMTgyLCAxODMsIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAxODksIDE5MCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMjUsIDEyNiwgMTI3LCAxMjcsIDEyOCwgMTI5LCAxMzAsIDEzMSwgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgCisgICAgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAxMzgsIDQxLCA0MSwgMTQ1LCAxMzgsIDE0NiwgMTQ3LCAxNDgsIAorICAgIDE0OSwgMTUwLCAxNTEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTM4LCAxMzgsIDE1NiwgMTM4LCAxMzgsIDEzOCwgMTU3LCAKKyAgICAxNTgsIDE1OSwgMTYwLCAxNjEsIDE2MiwgMTYzLCAxMzgsIDEzOCwgMTY0LCAxMzgsIDE2NSwgMTY2LCAxNjcsIDE2OCwgCisgICAgMTM4LCAxMzgsIDE2OSwgMTM4LCAxMzgsIDEzOCwgMTcwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNzEsIDE3MiwgNDEsIDE3MywgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNzQsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDE3NSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCA0MSwgNDEsIDQxLCA0MSwgMTc2LCAxNzcsIDE3OCwgMTc5LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxODAsIDE4MSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE4MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDE4MywgMTg0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNzgsIDE4NSwgCisgICAgMTg2LCAxODcsIDE4OCwgMTM4LCAxODksIDEzOCwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTcsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCAxOTgsIDE5OSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDIwMCwgMjAxLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDIwMiwgMjAzLCAxMzgsIDEzOCwgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDEzOCwgMjA5LCAyMTAsIDIwOSwgMjA5LCAKKyAgICAyMTEsIDIxMiwgMjA5LCAyMTMsIDIxNCwgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIApAQCAtNzY3LDM1OSArNzg3LDQ1OSBAQAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxOTEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjIwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTkyLCAKLSAgICAxMDEsIDE5MywgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDEyMiwgMTIyLCAxMjIsIDEyMiwgMTk0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICAxOTUsIDg0LCAxOTYsIDE5NywgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMjEsIDEwMSwgMjIyLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMjIzLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEyMiwgMTIyLCAxMjIsIDEyMiwgMjI0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAyMjUsIDEzOCwgMjI2LCAyMjcsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIApAQCAtMTE1NSw4ICsxMjc1LDggQEAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDIyOCwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAotICAgIDE5OCwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKQEAgLTExOTIsNyArMTMxMiw3IEBACiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCi0gICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDE5OCwgCisgICAgMTIxLCAyMjgsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIHNob3J0IGluZGV4MltdID0gewpAQCAtMTI0NCw3ICsxMzY0LDcgQEAKICAgICA2OSwgNTksIDY5LCA2OSwgNzAsIDYwLCA2MiwgNjIsIDYyLCA2MCwgNjAsIDYwLCA2MiwgNjIsIDcxLCA2MCwgNjAsIDYwLCAKICAgICA2MiwgNjIsIDYyLCA2MiwgNjAsIDYxLCA2MiwgNjIsIDYwLCA3MiwgNzMsIDczLCA3MiwgNzMsIDczLCA3MiwgNjAsIDYwLCAKICAgICA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDQ0LCA0NywgNDQsIDQ3LCA3NCwgNTQsIDQ0LCAKLSAgICA0NywgMCwgMCwgNTEsIDQ3LCA0NywgNDcsIDc1LCAwLCAwLCAwLCAwLCAwLCA1OCwgNzYsIDM4LCA3NSwgMzgsIDM4LCAzOCwgCisgICAgNDcsIDAsIDAsIDUxLCA0NywgNDcsIDQ3LCA3NSwgNDQsIDAsIDAsIDAsIDAsIDU4LCA3NiwgMzgsIDc1LCAzOCwgMzgsIDM4LCAKICAgICAwLCAzOCwgMCwgMzgsIDM4LCA0MywgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIAogICAgIDM5LCAzOSwgMzksIDM5LCAwLCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgCiAgICAgNDMsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgCkBAIC0xMjY3LDk3ICsxMzg3LDk4IEBACiAgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ3LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCiAgICAgMzgsIDQzLCA0NCwgNDcsIDM4LCA0MywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCiAgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCA1MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgNDcsIDQ3LCA0NywgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgNTMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMzUsIAotICAgIDAsIDgzLCA4NCwgMCwgMCwgMCwgMCwgODUsIDAsIDg2LCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODEsIDg3LCA4NiwgCi0gICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4NywgCi0gICAgODgsIDgxLCA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLCAKLSAgICAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNCwgODEsIDg2LCAxMDQsIDk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMDcsIDEwNywgMTA3LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4LCAxMDgsIAotICAgIDEwOCwgMTA4LCAxMDgsIDAsIDc4LCA3OCwgMTA5LCAxMTAsIDExMCwgMTExLCAxMTIsIDExMywgMjYsIDI2LCA4MSwgODEsIAotICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDExNCwgMTE1LCAxMTYsIDExMywgMTE3LCAwLCAxMTMsIDExMywgMTE4LCAxMTgsIAotICAgIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDEyMCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMjEsIAotICAgIDEyMiwgMTIzLCAxMTQsIDExNSwgMTE2LCAxMjQsIDEyNSwgMTI2LCAxMjYsIDEyNywgODYsIDgxLCA4MSwgODEsIDgxLCA4MSwgCi0gICAgODYsIDgxLCA4MSwgODYsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTEwLCAKLSAgICAxMjksIDEyOSwgMTEzLCAxMTgsIDExOCwgMTMwLCAxMTgsIDExOCwgMTE4LCAxMTgsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOSwgMTE4LCAxMTksIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE5LCAxMTMsIDExOCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAotICAgIDEwOCwgMjYsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDEyMCwgMTIwLCA4MSwgODEsIDI2LCA4NiwgODEsIDgxLCA4NiwgCi0gICAgMTE4LCAxMTgsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTE4LCAxMTgsIAotICAgIDExOCwgMTMzLCAxMzMsIDExOCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDExNywgMTE4LCAxMzQsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDgxLCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCAKLSAgICA4NiwgODYsIDg2LCA4MSwgODYsIDg2LCA4MSwgODYsIDgxLCA4MSwgODEsIDg2LCA4MSwgODYsIDgxLCA4NiwgODEsIDg2LCAKLSAgICA4MSwgODEsIDAsIDAsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzYsIAotICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDgxLCAKLSAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDEzNywgMTM3LCAyNiwgMTM4LCAxMzgsIDEzOCwgMTM3LCAwLCAwLCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDM1LCAwLCA4MywgODQsIDAsIDAsIDI2LCAyNiwgODUsIDAsIDg2LCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCAKKyAgICA4MSwgODEsIDg3LCA4NiwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCAKKyAgICA4NiwgODEsIDgxLCA4NywgODgsIDgxLCA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTgsIDk5LCAKKyAgICAxMDAsIDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNCwgODEsIDg2LCAxMDQsIDk3LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDgxLCA4MSwgODEsIDgxLCAxMzcsIDgxLCA4MSwgCi0gICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDEzNywgODEsIDgxLCA4MSwgMTM3LCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIAotICAgIDAsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAKLSAgICAxMDQsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgODYsIDg2LCA4NiwgCi0gICAgMCwgMCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgCisgICAgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDc4LCA3OCwgMTA5LCAxMTAsIDExMCwgMTExLCAxMTIsIDExMywgMjYsIAorICAgIDI2LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDExNCwgMTE1LCAxMTYsIDExMywgMTE3LCAwLCAxMTMsIDExMywgCisgICAgMTE4LCAxMTgsIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDEyMCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMjEsIDEyMiwgMTIzLCAxMTQsIDExNSwgMTE2LCAxMjQsIDEyNSwgMTI2LCAxMjYsIDEyNywgODYsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODYsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAorICAgIDEyOCwgMTEwLCAxMjksIDEyOSwgMTEzLCAxMTgsIDExOCwgMTMwLCAxMTgsIDExOCwgMTE4LCAxMTgsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOSwgMTE4LCAxMTksIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE5LCAxMTMsIDExOCwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDEwOCwgMjYsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDEyMCwgMTIwLCA4MSwgODEsIDI2LCA4NiwgCisgICAgODEsIDgxLCA4NiwgMTE4LCAxMTgsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgCisgICAgMTE4LCAxMTgsIDExOCwgMTMzLCAxMzMsIDExOCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDExNywgMTE4LCAxMzQsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDgxLCA4NiwgODEsIDgxLCAKKyAgICA4NiwgODEsIDgxLCA4NiwgODYsIDg2LCA4MSwgODYsIDg2LCA4MSwgODYsIDgxLCA4MSwgODEsIDg2LCA4MSwgODYsIDgxLCAKKyAgICA4NiwgODEsIDg2LCA4MSwgODEsIDAsIDAsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDEzNywgMTM3LCAyNiwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM3LCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDgxLCA4MSwgCisgICAgODEsIDgxLCAxMzcsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDEzNywgODEsIDgxLCA4MSwgMTM3LCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIAorICAgIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgODYsIDg2LCA4NiwgMCwgMCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTgsIDAsIDExOCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAogICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIAotICAgIDgxLCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgMTIxLCAxMjIsIDEyMywgODEsIDgxLCA4MSwgCi0gICAgODYsIDgxLCA4MSwgODYsIDg2LCA4MSwgODEsIDgxLCA4MSwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4NiwgODEsIAorICAgIDgxLCA4MSwgODYsIDg2LCA4NiwgMTIxLCAxMjIsIDEyMywgODEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODYsIDg2LCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDEzNSwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIAotICAgIDE0MSwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDE0MiwgMTM5LCAxMzksIDQ4LCA4MSwgODYsIDgxLCA4MSwgMTM1LCAxMzUsIDEzNSwgMTQzLCAxNDMsIAotICAgIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDQ4LCA0OCwgMTM1LCAxMzUsIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKLSAgICA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMCwgMCwgMTM5LCAxMzksIDAsIDAsIDE0NywgMTQ3LCAxNDIsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNDYsIDAsIDAsIDAsIDAsIDE0MywgMTQzLCAwLCAxNDMsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA4NSwgODUsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDgwLCA4NSwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCAxNDMsIDAsIDQ4LCAxNDMsIDAsIDQ4LCA0OCwgMCwgMCwgMTQ1LCAwLCAxMzksIDEzOSwgMTM5LCAxMzUsIAotICAgIDEzNSwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDAsIDAsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDEzNSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTQzLCAxNDMsIDE0MywgNDgsIDAsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgMTM1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgMTM5LCAxMzksIDE0MiwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgCi0gICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTQwLCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTQxLCA0OCwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTQyLCAxMzksIAorICAgIDEzOSwgNDgsIDgxLCA4NiwgODEsIDgxLCAxMzUsIDEzNSwgMTM1LCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAKKyAgICAxNDMsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDgzLCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgCisgICAgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIAorICAgIDEzOSwgMTM5LCAwLCAwLCAxNDcsIDE0NywgMTQyLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAKKyAgICAwLCAxNDMsIDE0MywgMCwgMTQzLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgODUsIDg1LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICA4MCwgODUsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgMTQzLCAwLCA0OCwgMTQzLCAwLCA0OCwgNDgsIDAsIDAsIDE0NSwgMCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDAsIDAsIAorICAgIDAsIDAsIDEzNSwgMTM1LCAwLCAwLCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0MywgMTQzLCAxNDMsIDQ4LCAwLCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDEzOSwgMTM5LCAxNDIsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDEzOSwgCiAgICAgMTQ3LCAwLCAwLCAxNDcsIDE0NywgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDksIDE0NiwgMCwgMCwgMCwgMCwgCkBAIC0xMzY5LDEyMyArMTQ5MCwxMjQgQEAKICAgICA0OCwgMCwgMCwgMCwgMCwgMTQ2LCAxMzksIDEzNSwgMTM5LCAxMzksIDAsIDAsIDAsIDEzOSwgMTM5LCAxMzksIDAsIDE0NywgCiAgICAgMTQ3LCAxNDcsIDE0MiwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4NSwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCAKKyAgICAxNDgsIDE0OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODUsIDI2LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzOSwgMTM5LCAKICAgICAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAogICAgIDAsIDAsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIDEzNSwgMTM1LCAxNTAsIDAsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUxLCAxNTIsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUxLCAxNTIsIDAsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIAogICAgIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCA4MCwgMCwgMCwgCisgICAgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDgwLCAwLCAKKyAgICAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTM5LCAxNTQsIDE0NywgMTM5LCAxNDYsIDEzOSwgMTM5LCAwLCAxNTQsIDE0NywgCisgICAgMTQ3LCAwLCAxNDcsIDE0NywgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAwLCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgCiAgICAgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDE1NCwgMTQ3LCAxMzksIDE0NiwgMTM5LCAxMzksIDAsIDE1NCwgMTQ3LCAxNDcsIAotICAgIDAsIDE0NywgMTQ3LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ4LCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCAKLSAgICAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzOSwgMTM5LCAKKyAgICAxMzksIDAsIDE0NywgMTQ3LCAxNDcsIDE0MiwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgODAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDAsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDAsIDAsIDE1NSwgMCwgMCwgMCwgMCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAwLCAxMzksIDEzOSwgCisgICAgMTQ3LCAxMzksIDE0NywgMTQ3LCAxNDcsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAxMzksIDEzOSwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgMCwgNDgsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM5LCAxMzksIDEzOSwgMCwgCi0gICAgMTQ3LCAxNDcsIDE0NywgMTQyLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDgwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCAwLCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKLSAgICAxNTUsIDAsIDAsIDAsIDAsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMCwgMTM5LCAxMzksIDE0NywgCi0gICAgMTM5LCAxNDcsIDE0NywgMTQ3LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEzOSwgMTM5LCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgMTU2LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE1NywgCi0gICAgMTU3LCAxNDIsIDAsIDAsIDAsIDAsIDg1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgMTM1LCAxNTgsIDE1OCwgMTU4LCAKLSAgICAxNTgsIDEzNSwgMTM1LCAxMzUsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCAKLSAgICAwLCA0OCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAxMzUsIDQ4LCAxNTYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTU5LCAxNTksIDAsIDEzNSwgMTM1LCA0OCwgMCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA1MywgMCwgMTYwLCAxNjAsIDE2MCwgMTYwLCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAxNTYsIDE1NiwgNDgsIDQ4LCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDE1NiwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNTcsIDE1NywgMTQyLCAwLCAwLCAwLCAwLCA4NSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNTMsIDEzNSwgMTU4LCAxNTgsIDE1OCwgMTU4LCAxMzUsIDEzNSwgMTM1LCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQ4LCA4MCwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDE2MSwgODMsIAotICAgIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgzLCA4MCwgODAsIDgwLCA4NiwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgODYsIDgwLCA4NiwgODAsIDE2MiwgMTYzLCAxNjQsIDE2MywgCi0gICAgMTY0LCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAxNjUsIAotICAgIDE2NiwgMTY3LCAxNjgsIDE2NywgMTY3LCAxNjksIDE2NywgMTY5LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDEzNSwgMTM5LCAKLSAgICAxNjYsIDE2NywgODEsIDgxLCAxNDIsIDgzLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDAsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODAsIDgwLCA4MCwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAKKyAgICAwLCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCAxNTYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTU5LCAKKyAgICAxNTksIDAsIDEzNSwgMTM1LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA1MywgMCwgMTYwLCAxNjAsIDE2MCwgCisgICAgMTYwLCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAKKyAgICAwLCAxNTYsIDE1NiwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgODAsIDgwLCA4MCwgODMsIDgzLCA4MywgCisgICAgODMsIDgzLCA4MywgODMsIDgzLCAxNjEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MywgODAsIDgwLCA4MCwgODYsIAorICAgIDg2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDg2LCA4MCwgODYsIAorICAgIDgwLCAxNjIsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjcsIDE2NywgMTY5LCAxNjcsIDE2OSwgMTY2LCAxNjYsIAorICAgIDE2NiwgMTY2LCAxMzUsIDEzOSwgMTY2LCAxNjcsIDgxLCA4MSwgMTQyLCA4MywgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDg2LCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCAwLCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgwLCA4MCwgODAsIDgzLCAKKyAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTQ5LCAxMzUsIAotICAgIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQ1LCAxMzksIDE0MiwgMTQyLCAxMzksIDEzOSwgMTM1LCAKLSAgICAxMzUsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4MywgODMsIAotICAgIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDEzNSwgMTM1LCAxMzUsIDQ4LCAxMzksIDEzOSwgMTM5LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDg2LCA0OCwgMTM5LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzNSwgODAsIDgwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgCisgICAgMTM5LCAxMzUsIDE0OSwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0NSwgMTM5LCAxNDIsIAorICAgIDE0MiwgMTM5LCAxMzksIDEzNSwgMTM1LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCA0OCwgMTM5LCAxMzksIDEzOSwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCA4NiwgNDgsIDEzOSwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxMzksIDEzOSwgMTM5LCAxMzUsIDgwLCA4MCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDQ0LCAwLCAwLCAwLCAwLCAwLCA0NCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NCwgMCwgMCwgMCwgMCwgMCwgNDQsIDAsIDAsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDgzLCA1MSwgNDgsIDQ4LCA0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgNTEsIDQ4LCA0OCwgNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDQ4LCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCA0OCwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKKyAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKICAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgODEsIDgxLCAKLSAgICA4MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIAotICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg0LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKKyAgICA4MSwgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDAsIDAsIDg0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCkBAIC0xNTA1LDM1NyArMTYyNywzNTkgQEAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMTcyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE2MywgMTY0LCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE2MywgMTY0LCAKKyAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCAxNzMsIDE3MywgMTczLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMTM1LCAxMzUsIDE0MiwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgMTczLCAxNzMsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgCi0gICAgMTQyLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDE0MiwgMTM1LCA4MywgODMsIDgzLCA1MywgODMsIDgzLCA4MywgODUsIDQ4LCA4MSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDg0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzNSwgMTM1LCAxMzUsIDE3NCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM5LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzUsIAotICAgIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDIsIDEzNSwgODMsIDgzLCAKLSAgICA4MywgNTMsIDgzLCA4MywgODMsIDg1LCA0OCwgODEsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAotICAgIDE1MywgMTUzLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzUsIDEzNSwgMTM1LCAxNzQsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODgsIDQ4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDg4LCA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIAotICAgIDEzOSwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgODcsIDgxLCA4NiwgCi0gICAgMCwgMCwgMCwgMCwgMjYsIDAsIDAsIDAsIDEzOCwgMTM4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgCi0gICAgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDg2LCAxMzksIDEzOSwgMTM1LCAwLCAwLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIDEzOSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxNDIsIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCA4MSwgODEsIAotICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDg2LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDUzLCA4MywgODMsIDgzLCA4MywgCi0gICAgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgNDgsIDE0MCwgNDgsIAotICAgIDE0MCwgNDgsIDE0MCwgNDgsIDE0MCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDUsIDE0NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDE0NywgMTM1LCAxNDcsIDEzOSwgMTM5LCAxNDcsIDE0NywgMTM1LCAxNDcsIDE3NSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCAKLSAgICA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MSwgODYsIDgxLCAKLSAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAxMzUsIAotICAgIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxNzUsIDE0MiwgMTM5LCAxMzksIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgODcsIDgxLCA4NiwgMCwgMCwgMCwgMCwgMjYsIDAsIDAsIDAsIDEzOCwgMTM4LCAxNDQsIDE0NCwgMTQ0LCAKICAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ1LCAKLSAgICAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTc1LCAxNzUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTQ1LCAwLCAwLCAwLCA4MywgCi0gICAgODMsIDgzLCA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA4MywgODMsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0OCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDg2LCAxMzksIDEzOSwgMTM1LCAwLCAwLCA4MywgODMsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIDEzOSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxNDIsIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDg2LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDUzLCA4MywgODMsIDgzLCAKKyAgICA4MywgODMsIDgzLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgxLCA4MSwgODYsIAorICAgIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzOSwgNDgsIDE0MCwgNDgsIDE0MCwgNDgsIDE0MCwgNDgsIDE0MCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDUsIDE0NiwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0NywgMTM1LCAxNDcsIDEzOSwgMTM5LCAxNDcsIDE0NywgMTM1LCAxNDcsIDE3NSwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MSwgODYsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxNzUsIDE0MiwgMTM1LCAKKyAgICAxMzUsIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzNSwgCisgICAgMTM1LCAxMzUsIDE3NSwgMTc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzksIDEzOSwgMTM1LCAxNDUsIDAsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgCi0gICAgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MywgMTc2LCA4NiwgODYsIDg2LCA4NiwgODYsIAotICAgIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDgxLCAxMzksIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NiwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDg2LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDgxLCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICAwLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIAorICAgIDgzLCAxNzYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCA4NiwgODYsIDg2LCA4NiwgODEsIDEzOSwgMTc2LCAxNzYsIAorICAgIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCA0OCwgNDgsIDQ4LCA0OCwgODYsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgCisgICAgODEsIDQ4LCA0OCwgMCwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MywgNTEsIAogICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgODEsIDgxLCA4NiwgODEsIAotICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4MSwgODEsIDE3NywgMTc4LCA4NiwgMTc5LCA4MSwgODEsIDgxLCA4MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDgxLCAxNzcsIAorICAgIDE3OCwgODYsIDE3OSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCiAgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgwLCA4NiwgCi0gICAgODEsIDg2LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgMzUsIDE4MSwgNDcsIDQ3LCA0NCwgNDcsIAotICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAotICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAotICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAotICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAotICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIAotICAgIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAwLCAKLSAgICAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIAorICAgIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAxODAsIDg2LCA4MSwgODYsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDQzLCA0MywgNDMsIDQzLCAzNSwgMTgxLCA0NywgNDcsIDQ0LCA0NywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDMsIAogICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIAogICAgIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIAotICAgIDQzLCA0MywgMCwgMzgsIDAsIDM4LCAwLCAzOCwgMCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIAotICAgIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCAKLSAgICA0MywgMTgyLCA0MywgMTgyLCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIAotICAgIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIAotICAgIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIAotICAgIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAKLSAgICAxODMsIDU4LCAxODIsIDU4LCA1OCwgNzYsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDE4NCwgMzgsIDE4NCwgMTgzLCAKLSAgICA3NiwgNzYsIDc2LCA0MywgNDMsIDQzLCAxODIsIDAsIDAsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAwLCA3NiwgNzYsIAotICAgIDc2LCA0MywgNDMsIDQzLCAxODIsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODQsIDM4LCA3NiwgMTg1LCAxODUsIAotICAgIDAsIDAsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDE4NCwgMzgsIDE4NCwgMTgzLCAxODUsIDU4LCAwLCAxODYsIDE4NiwgCi0gICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTc0LCAxNzQsIDE3NCwgMTg4LCAxODksIAotICAgIDE5MCwgMTkxLCA4NCwgMTkwLCAxOTAsIDE5MCwgMjIsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTMsIDE5NCwgMTk1LCAKLSAgICAxOTYsIDIyLCAyMiwgMjIsIDEzOCwgMTk3LCAxOTcsIDE5NywgMjIsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIAotICAgIDIwNCwgMjEsIDIwNSwgMTEwLCAyMDUsIDIwNiwgMjA3LCAyMiwgMTkyLCAxOTIsIDEzOCwgMjgsIDM2LCAyMiwgMTkyLCAKLSAgICAxMzgsIDE5NywgMjA4LCAyMDgsIDEzOCwgMTM4LCAxMzgsIDIwOSwgMTYzLCAxNjQsIDE5MiwgMTkyLCAxOTIsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA3OCwgMTM4LCAyMDgsIDEzOCwgMTM4LCAxOTIsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTg3LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMCwgMjEwLCAyMTEsIDIxMiwgCi0gICAgMjEzLCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAyMTQsIDUxLCAwLCAwLCAzNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAKLSAgICAyMTQsIDIxNSwgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksIDIxNCwgMzQsIDM0LCAzNCwgMzQsIDIxNCwgMjE0LCAyMTQsIAotICAgIDIxNCwgMjE0LCAyMTUsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMCwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDAsIDAsIDAsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgMjIwLCAyMjEsIDg1LCAKLSAgICA4NSwgMjMsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCAxNzYsIDE3NiwgCi0gICAgODEsIDgxLCA4MSwgODEsIDE3NiwgMTc2LCAxNzYsIDgxLCA4MSwgODIsIDgyLCA4MiwgODIsIDgxLCA4MiwgODIsIDgyLCAKLSAgICAxNzYsIDE3NiwgODEsIDg2LCA4MSwgMTc2LCAxNzYsIDg2LCA4NiwgODYsIDg2LCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjIyLCAyMjIsIDQ5LCAyMjMsIDI2LCAyMjMsIDIyMiwgNDksIDI2LCAyMjMsIDM1LCAKLSAgICA0OSwgNDksIDQ5LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ2LCAyNiwgNDksIDIyMywgMjYsIDc4LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDI2LCAyNiwgMjIyLCAyMjMsIDIyMywgMjYsIDQ5LCAyNiwgMjI0LCAyNiwgNDksIDI2LCAxODQsIDIyNCwgNDksIDQ5LCAKLSAgICAyMjUsIDM1LCA0OSwgNDksIDQ0LCA0OSwgMzUsIDE1NiwgMTU2LCAxNTYsIDE1NiwgMzUsIDI2LCAyMjIsIDM1LCAzNSwgNDksIAotICAgIDQ5LCAyMjYsIDc4LCA3OCwgNzgsIDc4LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDI2LCA3OCwgMjYsIDI2LCA0NywgODAsIDIyNywgCi0gICAgMjI3LCAyMjcsIDM3LCAzNywgMjI3LCAyMjcsIDIyNywgMjI3LCAyMjcsIDIyNywgMzcsIDM3LCAzNywgMzcsIDIyNywgMjI4LCAKLSAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI5LCAyMjksIDIyOSwgCi0gICAgMjI5LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOSwgMjI5LCAyMjksIAotICAgIDIyOSwgMjI5LCAyMjksIDE3MywgMTczLCAxNzMsIDQ0LCA0NywgMTczLCAxNzMsIDE3MywgMTczLCAzNywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDAsIDQwLCA0MCwgNDAsIDQwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDIzMCwgMjMwLCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgNzgsIDI2LCAyNiwgNzgsIDI2LCAyNiwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzAsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMSwgMjMwLCAyMzAsIDI2LCAyNiwgNDAsIDI2LCA0MCwgCisgICAgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgCisgICAgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAKKyAgICAzOCwgMzgsIDM4LCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDM4LCAwLCAzOCwgMCwgMzgsIDAsIAorICAgIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIAorICAgIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgMCwgMCwgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMTgzLCA1OCwgMTgyLCA1OCwgNTgsIDc2LCA0MywgNDMsIAorICAgIDQzLCAwLCA0MywgNDMsIDM4LCAxODQsIDM4LCAxODQsIDE4MywgNzYsIDc2LCA3NiwgNDMsIDQzLCA0MywgMTgyLCAwLCAwLCAKKyAgICA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMCwgNzYsIDc2LCA3NiwgNDMsIDQzLCA0MywgMTgyLCA0MywgNDMsIDQzLCA0MywgCisgICAgMzgsIDM4LCAzOCwgMTg0LCAzOCwgNzYsIDE4NSwgMTg1LCAwLCAwLCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAxODQsIAorICAgIDM4LCAxODQsIDE4MywgMTg1LCA1OCwgMCwgMTg2LCAxODYsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCAxODcsIDE3NCwgMTc0LCAxNzQsIDE4OCwgMTg5LCAxOTAsIDE5MSwgODQsIDE5MCwgMTkwLCAxOTAsIDIyLCAxOTIsIAorICAgIDE5MywgMTk0LCAxOTUsIDE5NiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAyMiwgMjIsIDIyLCAxMzgsIDE5NywgMTk3LCAxOTcsIAorICAgIDIyLCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCAyMDQsIDIxLCAyMDUsIDExMCwgMjA1LCAyMDYsIDIwNywgMjIsIAorICAgIDE5MiwgMTkyLCAxMzgsIDI4LCAzNiwgMjIsIDE5MiwgMTM4LCAxOTcsIDIwOCwgMjA4LCAxMzgsIDEzOCwgMTM4LCAyMDksIAorICAgIDE2MywgMTY0LCAxOTIsIDE5MiwgMTkyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNzgsIDEzOCwgCisgICAgMjA4LCAxMzgsIDEzOCwgMTkyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE4NywgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDAsIDIxMCwgMjExLCAyMTIsIDIxMywgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMjE0LCAKKyAgICA1MSwgMCwgMCwgMzQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTUsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCAyMTQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE1LCAyMTUsIDIxNiwgMjE3LCAyMTgsIDAsIDUxLCAKKyAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAwLCAwLCAwLCA4NSwgODUsIDg1LCA4NSwgCisgICAgODUsIDg1LCA4NSwgODUsIDIyMCwgMjIxLCA4NSwgODUsIDIzLCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAKKyAgICA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDE3NiwgMTc2LCA4MSwgODEsIDgxLCA4MSwgMTc2LCAxNzYsIDE3NiwgODEsIDgxLCAKKyAgICA4MiwgODIsIDgyLCA4MiwgODEsIDgyLCA4MiwgODIsIDE3NiwgMTc2LCA4MSwgODYsIDgxLCAxNzYsIDE3NiwgODYsIDg2LCAKKyAgICA4NiwgODYsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjIsIDIyMiwgNDksIAorICAgIDIyMywgMjYsIDIyMywgMjIyLCA0OSwgMjYsIDIyMywgMzUsIDQ5LCA0OSwgNDksIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDYsIAorICAgIDI2LCA0OSwgMjIzLCAyNiwgNzgsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMjYsIDI2LCAyMjIsIDIyMywgMjIzLCAyNiwgNDksIAorICAgIDI2LCAyMjQsIDI2LCA0OSwgMjYsIDE4NCwgMjI0LCA0OSwgNDksIDIyNSwgMzUsIDQ5LCA0OSwgNDQsIDQ5LCAzNSwgMTU2LCAKKyAgICAxNTYsIDE1NiwgMTU2LCAzNSwgMjYsIDIyMiwgMzUsIDM1LCA0OSwgNDksIDIyNiwgNzgsIDc4LCA3OCwgNzgsIDQ5LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMjYsIDc4LCAyNiwgMjYsIDQ3LCA4MCwgMjI3LCAyMjcsIDIyNywgMzcsIDM3LCAyMjcsIDIyNywgMjI3LCAKKyAgICAyMjcsIDIyNywgMjI3LCAzNywgMzcsIDM3LCAzNywgMjI3LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI5LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOSwgMTczLCAxNzMsIDE3MywgNDQsIAorICAgIDQ3LCAxNzMsIDE3MywgMTczLCAxNzMsIDM3LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAyMzAsIDIzMCwgMjYsIDI2LCAyNiwgMjYsIDc4LCAyNiwgMjYsIDc4LCAyNiwgMjYsIDc4LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA0MCwgMjMyLCAyMzMsIDIzMywgMjM0LCA3OCwgNzgsIDQwLCAyMzMsIDIzNCwgCi0gICAgMjMyLCAyMzMsIDIzNCwgMjMyLCA3OCwgNDAsIDc4LCAyMzMsIDIzNSwgMjM2LCA3OCwgMjMzLCAyMzIsIDc4LCA3OCwgNzgsIAotICAgIDIzMywgMjMyLCAyMzIsIDIzMywgNDAsIDIzMywgMjMzLCAyMzIsIDIzMiwgNDAsIDIzNCwgNDAsIDIzNCwgNDAsIDQwLCA0MCwgCi0gICAgNDAsIDIzMywgMjM3LCAyMjYsIDIzMywgMjI2LCAyMjYsIDIzMiwgMjMyLCAyMzIsIDQwLCA0MCwgNDAsIDQwLCA3OCwgMjMyLCAKLSAgICA3OCwgMjMyLCAyMzMsIDIzMywgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzMsIAotICAgIDIzNCwgMjMyLCAyMzIsIDIzMywgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzMsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjM4LCA0MCwgMjM0LCA3OCwgMjMzLCAyMzMsIDIzMywgMjMzLCAyMzIsIAotICAgIDIzMiwgMjMzLCAyMzMsIDc4LCAyMzAsIDIzOCwgMjM4LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzIsIDIzMiwgCi0gICAgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzMsIDIzMywgMjM0LCAyMzQsIAotICAgIDIzMywgMjMzLCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgCi0gICAgNDAsIDc4LCA3OCwgMjMyLCA0MCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDQwLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzMsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIAotICAgIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjM0LCAKLSAgICAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgNzgsIDc4LCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMiwgMjMyLCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyNDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDIzMSwgMjMwLCAyMzAsIDI2LCAyNiwgNDAsIDI2LCA0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDQwLCAKKyAgICAyMzIsIDIzMywgMjMzLCAyMzQsIDc4LCA3OCwgNDAsIDIzMywgMjM0LCAyMzIsIDIzMywgMjM0LCAyMzIsIDc4LCA0MCwgNzgsIAorICAgIDIzMywgMjM1LCAyMzYsIDc4LCAyMzMsIDIzMiwgNzgsIDc4LCA3OCwgMjMzLCAyMzIsIDIzMiwgMjMzLCA0MCwgMjMzLCAKKyAgICAyMzMsIDIzMiwgMjMyLCA0MCwgMjM0LCA0MCwgMjM0LCA0MCwgNDAsIDQwLCA0MCwgMjMzLCAyMzcsIDIyNiwgMjMzLCAyMjYsIAorICAgIDIyNiwgMjMyLCAyMzIsIDIzMiwgNDAsIDQwLCA0MCwgNDAsIDc4LCAyMzIsIDc4LCAyMzIsIDIzMywgMjMzLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzMywgMjM0LCAyMzIsIDIzMiwgMjMzLCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDIzMywgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAKKyAgICAyMzgsIDQwLCAyMzQsIDc4LCAyMzMsIDIzMywgMjMzLCAyMzMsIDIzMiwgMjMyLCAyMzMsIDIzMywgNzgsIDIzMCwgMjM4LCAKKyAgICAyMzgsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMywgMjMzLCAyMzQsIDIzNCwgMjMzLCAyMzMsIDIzNCwgMjM0LCAyMzIsIAorICAgIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA0MCwgNzgsIDc4LCAyMzIsIDQwLCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNDAsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMywgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjM0LCAyMzQsIDIzNCwgMjM0LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAxNjMsIDE2NCwgMTYzLCAxNjQsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMyLCAyMzIsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIAorICAgIDI0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAyNiwgNzgsIDI2LCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAyNiwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3LCAzNywgMzcsIDM3LCAzNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAKICAgICAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAKLSAgICAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDI0MSwgMjQxLCAKICAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCiAgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAogICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKICAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDIyNywgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAotICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKLSAgICAyNDIsIDI0MiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyMjcsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAzMCwgMzAsIDI2LCAyNiwgMzAsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCA0MCwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAKLSAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAKLSAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAKLSAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIDI2LCA0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAKKyAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAKKyAgICAyNiwgMzAsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCA0MCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKKyAgICAzMCwgMzAsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKKyAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAzMCwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAzMCwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMjYsIDMwLCAzMCwgMjYsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIAorICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgCi0gICAgMTYzLCAxNjQsIDE2MywgMTY0LCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIAorICAgIDE2MywgMTY0LCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDE1MywgMTUzLCAKICAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgCi0gICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzIsIDc4LCA3OCwgCi0gICAgMjMyLCAyMzIsIDE2MywgMTY0LCA3OCwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDksIDEwLCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMyLCA3OCwgNzgsIDIzMiwgCisgICAgMjMyLCAxNjMsIDE2NCwgNzgsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCA5LCAxMCwgOSwgMTAsIDksIDEwLCA5LCAxMCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMTYzLCAKKyAgICAxNjQsIDksIDEwLCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAKKyAgICAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgCisgICAgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDE2MywgMTY0LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjI2LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDc4LCA3OCwgMjMyLCA3OCwgMjMyLCA3OCwgNzgsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDE2MywgMTY0LCA5LCAxMCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIAotICAgIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgMTYzLCAxNjQsIDE2MywgMTY0LCAyMzIsIDc4LCA3OCwgNzgsIAotICAgIDc4LCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIyNiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgNzgsIDIzMiwgNzgsIDc4LCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAKLSAgICAyMjYsIDIxNiwgMjE2LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjI2LCAyMTYsIAorICAgIDIxNiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKICAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCiAgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIAogICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDI0MywgNzgsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDc4LCAyMzIsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgMjQzLCA3OCwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgNzgsIDIzMiwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgNDcsIDQ3LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NCwgCi0gICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA1MSwgNTEsIDQ0LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA0NCwgNDcsIDQ0LCA0NywgODEsIDgxLCA4MSwgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDE1MywgMTM4LCAxMzgsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDAsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDQ0LCA0NCwgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgODEsIDgxLCA4MSwgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE1MywgMTM4LCAxMzgsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MSwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE0MiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MSwgODMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAogICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAotICAgIDEzOCwgMTM4LCAyOCwgMzYsIDI4LCAzNiwgMTM4LCAxMzgsIDEzOCwgMjgsIDM2LCAxMzgsIDI4LCAzNiwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDEzOCwgMTM4LCA4NCwgMTM4LCAyOCwgMzYsIDEzOCwgCi0gICAgMTM4LCAyOCwgMzYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgNTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDg0LCAwLCAwLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDEzOCwgMTM4LCAyOCwgMzYsIDI4LCAzNiwgMTM4LCAxMzgsIDEzOCwgCisgICAgMjgsIDM2LCAxMzgsIDI4LCAzNiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIAorICAgIDEzOCwgMTM4LCA4NCwgMTM4LCAyOCwgMzYsIDEzOCwgMTM4LCAyOCwgMzYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAKKyAgICAxNjQsIDE2MywgMTY0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDg0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCAxMzgsIDE5NSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKICAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ1LCAyNDQsIAorICAgIDI0NCwgMjQ0LCAyNDQsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ1LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKICAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCiAgICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAogICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKICAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCiAgICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCisgICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKICAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCiAgICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAogICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKQEAgLTE4NzAsNjMgKzE5OTQsNjIgQEAKICAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCiAgICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAogICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAwLCAwLCAwLCAwLCAyNDYsIDI0NywgMjQ3LCAyNDcsIAotICAgIDI0NCwgMjQ4LCAxNzAsIDI0OSwgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUwLCAyNTEsIDI1MCwgMjUxLCAKLSAgICAyNDQsIDI0NCwgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUwLCAyNTEsIDI1MiwgMjUzLCAyNTQsIDI1NCwgCi0gICAgMjQ0LCAyNDksIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNTUsIDI1NiwgMjU3LCAyNTgsIAotICAgIDI1OSwgMjU5LCAyNTIsIDI0OCwgMjQ4LCAyNDgsIDI0OCwgMjQ4LCAyNDUsIDI0NCwgMjYwLCAyNjAsIDI2MCwgMjQ4LCAKLSAgICAxNzAsIDI0NywgMjQ0LCAyNiwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCisgICAgMjQ0LCAyNDQsIDAsIDAsIDAsIDAsIDI0NiwgMjQ3LCAyNDcsIDI0NywgMjQ0LCAyNDgsIDE3MCwgMjQ5LCAyNTAsIDI1MSwgCisgICAgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUwLCAyNTEsIDI0NCwgMjQ0LCAyNTAsIDI1MSwgMjUwLCAyNTEsIAorICAgIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU0LCAyNDQsIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAKKyAgICAyNDksIDI0OSwgMjQ5LCAyNDksIDI1NSwgMjU2LCAyNTcsIDI1OCwgMjU5LCAyNTksIDI1MiwgMjQ4LCAyNDgsIDI0OCwgCisgICAgMjQ4LCAyNDgsIDI0NSwgMjQ0LCAyNjAsIDI2MCwgMjYwLCAyNDgsIDE3MCwgMjQ3LCAyNDQsIDI2LCAwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIAogICAgIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAKLSAgICAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMTcwLCAyNjEsIDE3MCwgCi0gICAgMjYxLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIAotICAgIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIAorICAgIDE3MCwgMjYxLCAyNjEsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMCwgCisgICAgMCwgMjYyLCAyNjIsIDI2MywgMjYzLCAyNDgsIDI2NCwgMjY1LCAyNTIsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAKKyAgICAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgCisgICAgMTcwLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIAorICAgIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMCwgMCwgMjYyLCAyNjIsIDI2MywgMjYzLCAyNDgsIDI2NCwgMjY1LCAKLSAgICAyNTIsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDE3MCwgCi0gICAgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIAotICAgIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgCi0gICAgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNDcsIDI0OCwgMjQ4LCAyNjQsIDI2NSwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDI2MSwgMTcwLCAxNzAsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjQ3LCAyNDgsIDI0OCwgMjY0LCAyNjUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAogICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKICAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCiAgICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAogICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKICAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCiAgICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMCwgMjY2LCAyNjYsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAxNzAsIDE3MCwgCisgICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAwLCAyNjYsIDI2NiwgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKICAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCiAgICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI0NCwgMjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMCwgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAwLCAKKyAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNDUsIDI3MCwgMjcwLCAKLSAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI0NSwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjY2LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNDUsIDI2NiwgMjY3LCAyNjcsIAorICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKLSAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCkBAIC0xOTM0LDE3ICsyMDU3LDE4IEBACiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI0NSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIApAQCAtMTk1NywyMCArMjA4MSwyMCBAQAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgCisgICAgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMjYsIDI2LCAyNiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIApAQCAtMTk3OSwxNCArMjEwMywxNCBAQAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCisgICAgMTcwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKICAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCiAgICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAogICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA1MywgNTMsIDUzLCA1MywgCi0gICAgNTMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDEzOCwgMTM4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAKKyAgICA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCAxMzgsIDEzOCwgCiAgICAgMTM4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ0LCAKICAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCkBAIC0xOTk0LDc3ICsyMTE4LDgwIEBACiAgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCiAgICAgNDQsIDQ3LCA0OCwgODEsIDgyLCA4MiwgODIsIDEzOCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAogICAgIDEzOCwgNTIsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTEsIDUxLCA4MSwgODEsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCAKLSAgICA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTQsIDU0LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgNDQsIDQ3LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIAorICAgIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDU0LCA1NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDcsIAogICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAogICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAogICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ0LCA0NywgNDQsIAotICAgIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUyLCAyNzEsIDI3MSwgNDQsIDQ3LCA0NCwgCi0gICAgNDcsIDAsIDQ0LCA0NywgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDcsIDQ0LCAKLSAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDQsIAorICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTIsIDI3MSwgMjcxLCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDgsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEsIDUxLCA0NywgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgMTQyLCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDUxLCA1MSwgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgNDgsIDE0MiwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4MCwgODUsIDIyNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMTQ4LCA4MCwgODAsIDg1LCAyMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgNDgsIDgzLCA0OCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKLSAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA4MywgODMsIDgzLCA0OCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDg2LCAKLSAgICA4NiwgODYsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCAxNzAsIAorICAgIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODYsIDg2LCA4NiwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDE3NSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgCi0gICAgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgCi0gICAgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTc1LCA4MywgODMsIAotICAgIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgNTMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAKKyAgICAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTc1LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCA4MywgMCwgNTMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgCisgICAgMCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgCiAgICAgMTM5LCAxMzksIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAogICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODAsIDgwLCA4MCwgCi0gICAgNDgsIDEzOSwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAxMzksIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgCi0gICAgNDgsIDgxLCA4MSwgODYsIDQ4LCA0OCwgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4MSwgNDgsIDgxLCA0OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDgsIDQ4LCA1MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM1LCAKLSAgICAxMzUsIDEzOSwgMTM5LCA4MywgODMsIDQ4LCA1MywgNTMsIDEzOSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDgxLCA0OCwgODEsIDgxLCA4NiwgNDgsIDQ4LCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA0OCwgCisgICAgODEsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDUzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDgzLCA4MywgNDgsIDUzLCA1MywgMTM5LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDI3MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgODMsIDEzOSwgCiAgICAgMTQyLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIApAQCAtMjE1OSw3ICsyMjg2LDcgQEAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxOTUsIDI3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMjc5LCAxOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIApAQCAtMjE3MywxMiArMjMwMCwxMiBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDI4MCwgMjYsIDAsIDAsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAogICAgIDcxLCA3MSwgNzEsIDcxLCAyODEsIDI4MSwgMjgxLCAyODEsIDI4MSwgMjgxLCAyODEsIDI4MiwgMjgzLCAyODEsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODEsIAotICAgIDI4NCwgMjg0LCAyODUsIDI4NSwgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAKLSAgICAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyNDcsIDI0NywgMjgyLCAyODMsIDI4MSwgMjgxLCAyODEsIDI4MSwgCi0gICAgMjg1LCAyODUsIDI4NSwgMjg2LCAyODEsIDI4NiwgMCwgMjgxLCAyODYsIDI4MSwgMjgxLCAyODQsIDI4NywgMjg4LCAyODcsIAotICAgIDI4OCwgMjg3LCAyODgsIDI4OSwgMjgxLCAyODEsIDI5MCwgMjkxLCAyOTIsIDI5MiwgMjkzLCAwLCAyODEsIDI5NCwgMjg5LCAKLSAgICAyODEsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDExOCwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MSwgCisgICAgODEsIDI4MSwgMjg0LCAyODQsIDI4NSwgMjg1LCAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAKKyAgICAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI0NywgMjQ3LCAyODIsIDI4MywgMjgxLCAyODEsIDI4MSwgCisgICAgMjgxLCAyODUsIDI4NSwgMjg1LCAyODYsIDI4MSwgMjg2LCAwLCAyODEsIDI4NiwgMjgxLCAyODEsIDI4NCwgMjg3LCAyODgsIAorICAgIDI4NywgMjg4LCAyODcsIDI4OCwgMjg5LCAyODEsIDI4MSwgMjkwLCAyOTEsIDI5MiwgMjkyLCAyOTMsIDAsIDI4MSwgMjk0LCAKKyAgICAyODksIDI4MSwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTE4LCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCkBAIC0yMTg4LDcyICsyMzE1LDc5IEBACiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAxNzQsIDAsIDI5NSwgMjk1LCAyOTYsIDI5NywgMjk2LCAyOTUsIDI5NSwgMjk4LCAKLSAgICAyOTksIDI5NSwgMzAwLCAzMDEsIDMwMiwgMzAxLCAzMDEsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgCi0gICAgMzAzLCAzMDMsIDMwMywgMzAxLCAyOTUsIDMwNCwgMzA1LCAzMDQsIDI5NSwgMjk1LCAzMDYsIDMwNiwgMzA2LCAzMDYsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAxNzQsIDAsIDI5NSwgMjk1LCAyOTYsIDI5NywgMjk2LCAyOTUsIDI5NSwgCisgICAgMjk4LCAyOTksIDI5NSwgMzAwLCAzMDEsIDMwMiwgMzAxLCAzMDEsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIAorICAgIDMwMywgMzAzLCAzMDMsIDMwMywgMzAxLCAyOTUsIDMwNCwgMzA1LCAzMDQsIDI5NSwgMjk1LCAzMDYsIDMwNiwgMzA2LCAKICAgICAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgCi0gICAgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDI5OCwgMjk1LCAyOTksIDMwNywgMzA4LCAzMDcsIAotICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAKLSAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAyOTgsIDMwNSwgCi0gICAgMjk5LCAzMDUsIDI5OCwgMjk5LCAzMTAsIDMxMSwgMzEyLCAzMTAsIDMxMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTQsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKKyAgICAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAyOTgsIDI5NSwgMjk5LCAzMDcsIDMwOCwgCisgICAgMzA3LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAorICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMjk4LCAKKyAgICAzMDUsIDI5OSwgMzA1LCAyOTgsIDI5OSwgMzEwLCAzMTEsIDMxMiwgMzEwLCAzMTAsIDMxMywgMzEzLCAzMTMsIDMxMywgCisgICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzE0LCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAogICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKICAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzE0LCAzMTQsIDMxMywgMzEzLCAzMTMsIAorICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzE0LCAzMTQsIDMxMywgMzEzLCAKICAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDAsIAotICAgIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDAsIDAsIDAsIDI5NywgCi0gICAgMjk3LCAzMDUsIDMwNywgMzE1LCAyOTcsIDI5NywgMCwgMzE2LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNiwgMzE2LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTgsIDMxOCwgMzE4LCAyNiwgMzAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKKyAgICAzMTMsIDAsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgCisgICAgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDAsIDAsIAorICAgIDAsIDI5NywgMjk3LCAzMDUsIDMwNywgMzE1LCAyOTcsIDI5NywgMCwgMzE2LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNiwgCisgICAgMzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTgsIDMxOCwgMzE4LCAyNiwgMzAsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCA4MywgMTM4LCA4MywgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDgzLCAxMzgsIDgzLCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAKICAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCiAgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgCisgICAgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgCiAgICAgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIAogICAgIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAKICAgICAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgCi0gICAgMzE5LCAzMTksIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNTMsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTUzLCAxNTMsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4NiwgMCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA4MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODYsIDMyMCwgMzIwLCAzMjAsIAorICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAKKyAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA4MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKQEAgLTIyNjYsMjk4ICsyNDAwLDQ4NyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDEwNywgMCwgMTA3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMTA3LCAwLCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAxMDcsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAxMDcsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMCwgMTA0LCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA3LCAxMDcsIDEwNywgMCwgMTA0LCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMiwgMzIyLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCisgICAgMzIxLCAzMjEsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAorICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgCi0gICAgMzIwLCAwLCAwLCAwLCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAzMjEsIAorICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjEsIDMyMSwgCisgICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAwLCAwLCAwLCAwLCAwLCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAzMjEsIDMyMSwgMTA3LCAxMDcsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKKyAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMzIxLCAzMjEsIAorICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKKyAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCisgICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAorICAgIDMyMSwgMzIxLCAxMDcsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDg2LCAxMzUsIAorICAgIDgxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDgxLCAxNzYsIDg2LCAwLCAwLCAwLCAKKyAgICAwLCAxNDIsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMzIxLCAzMjEsIDEwNCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjIsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgODEsIDg2LCAwLCAwLCAwLCAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAorICAgIDMyMSwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgCisgICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgCisgICAgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIxLCAKKyAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDcsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDg2LCAxMzUsIDgxLCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgODEsIDE3NiwgODYsIDAsIDAsIDAsIDAsIDE0MiwgCi0gICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNCwgMTA0LCAKLSAgICAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjAsIDMyMCwgCi0gICAgMTA0LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMCwgMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMCwgMCwgMCwgMCwgMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgCisgICAgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIAorICAgIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAKKyAgICAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAxMzksIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIAorICAgIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAKKyAgICAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMCwgMTM5LCAxMzUsIDEzOSwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0MiwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgCi0gICAgODMsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAKLSAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDE0MiwgMTQxLCA4MywgODMsIDE4OCwgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDgxLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDE0OSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzNSwgMTUwLCAxNTAsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDE0MiwgMTQyLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCAKLSAgICA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDE3NSwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDgzLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIAotICAgIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTc1LCAxNDUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDIsIDgzLCAKKyAgICA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDIsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgMTQwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDE0MiwgMTQxLCA4MywgODMsIDE4OCwgODMsIAorICAgIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0OSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzNSwgCisgICAgMTUwLCAxNTAsIDEzNSwgMTM1LCAxMzUsIDE0MiwgMTQyLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgODMsIAorICAgIDgzLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM5LCAxNzUsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCA4MywgODMsIDE0NSwgMTM1LCAxMzUsIAorICAgIDgzLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA4MywgNDgsIAorICAgIDgzLCA4MywgODMsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAKKyAgICAxMzksIDEzNSwgMTc1LCAxNDUsIDEzNSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQ1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTQ2LCAKKyAgICAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAwLCAxMzksIDEzOSwgMCwgMCwgMTQ3LCAxNDcsIDE3NSwgMCwgMCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgCisgICAgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxNDksIDE0NywgMTQ3LCAxNDYsIAorICAgIDE0NywgMTM1LCAxMzUsIDEzOSwgMTQyLCAxNDUsIDQ4LCA0OCwgODMsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ2LCAxMzksIAorICAgIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAwLCAxMzksIDEzOSwgMTQ3LCAxNDcsIDEzNSwgMTM1LCAxMzksIDE0MiwgCisgICAgMTQ1LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTQyLCAxMzUsIDgzLCA4MywgCisgICAgODMsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTc1LCAxNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQyLCAwLCAKKyAgICAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCA4MywgCisgICAgODMsIDgzLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCA4MywgODMsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCAKKyAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgwLCA4MCwgODAsIAorICAgIDUzLCA1MywgNTMsIDUzLCA4MywgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAogICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKICAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDUzLCA1MywgNTMsIAotICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgCisgICAgNTMsIDUzLCA1MywgNTMsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDAsIDgwLCAxMzUsIDE3NiwgODMsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgCisgICAgMzI3LCAzMjcsIDE3NiwgMTc2LCAxNzYsIDgwLCA4MCwgODAsIDMyOCwgMzI3LCAzMjcsIDMyNywgMzI3LCAzMjcsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgwLCAKKyAgICA4MCwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgxLCA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIzLCAzMjMsIDE3NiwgMTc2LCAxNzYsIDgwLCA4MCwgODAsIAotICAgIDMyNCwgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCA4NiwgCi0gICAgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgwLCA4MCwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgxLCA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MSwgODEsIDgxLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODEsIDgxLCA4MSwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDAsIAotICAgIDQ5LCA0OSwgMCwgMCwgNDksIDAsIDAsIDQ5LCA0OSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgMCwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIAotICAgIDQ5LCAwLCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgCiAgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCiAgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgCiAgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKICAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKICAgICA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAwLCA0OSwgNDksIDAsIDAsIDQ5LCAwLCAKKyAgICAwLCA0OSwgNDksIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAwLCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDAsIDAsIDAsIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCAKICAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCAzMjUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAogICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgCisgICAgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjksIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAzNSwgMCwgMCwgMzI2LCAzMjYsIAotICAgIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAKLSAgICAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgCi0gICAgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIAotICAgIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMCwgCi0gICAgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMCwgMTMxLCAwLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMCwgMCwgMCwgMCwgMTMxLCAwLCAxMzEsIAotICAgIDAsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMCwgMTMxLCAwLCAxMzEsIDAsIDEzMSwgCi0gICAgMCwgMTMxLCAwLCAxMzEsIDAsIDEzMSwgMTMxLCAwLCAxMzEsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMCwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzI5LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgMzI5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzI5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzI5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgMzUsIDAsIDAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIAorICAgIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAKKyAgICAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgCisgICAgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIAorICAgIDMzMCwgMzMwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDgwLCA4MCwgODAsIDgwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCAxMzUsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgMTM1LCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4LCA3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgCisgICAgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgCisgICAgODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAKKyAgICAxMzEsIDAsIDEzMSwgMCwgMCwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAwLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMCwgMCwgCisgICAgMCwgMCwgMTMxLCAwLCAxMzEsIDAsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMCwgCisgICAgMTMxLCAwLCAxMzEsIDAsIDEzMSwgMCwgMTMxLCAwLCAxMzEsIDAsIDEzMSwgMTMxLCAwLCAxMzEsIDAsIDAsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4LCA3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAwLCAwLCAwLCAwLCAwLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE1MywgMTUzLCAwLCAwLCAwLCAyNDEsIDI0MSwgMjQxLCAKICAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMzI3LCAwLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMzMxLCAwLCAKICAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDMyOCwgMzI4LCAzMjgsIAotICAgIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAKLSAgICAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAyMjIsIDIyMiwgMCwgMCwgMCwgMCwgMzI4LCAKLSAgICAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgCi0gICAgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIAotICAgIDMyOCwgMzI4LCAzMjgsIDI0MSwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAwLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAorICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKKyAgICAzMzIsIDMzMiwgMjIyLCAyMjIsIDAsIDAsIDAsIDAsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKKyAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCisgICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAyNDEsIDMzMiwgMzMyLCAzMzIsIAorICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjgsIDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjgsIAorICAgIDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNTQsIDU0LCAKKyAgICA1NCwgNTQsIDU0LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAwLCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCkBAIC0yNTY2LDYwICsyODg5LDc2IEBACiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIApAQCAtMzE0NiwzNTkgKzM0ODUsMzU1IEBACiAgICAgNTAsIDQ5LCAyNjA4NSwgNzcwLCA1MCwgNTAsIDI2MDg1LCA3NzAsIDUwLCA1MSwgMjYwODUsIDc3MCwgNTAsIDUyLCAKICAgICAyNjA4NSwgNzcwLCA1MCwgNTMsIDI2MDg1LCA3NzAsIDUwLCA1NCwgMjYwODUsIDc3MCwgNTAsIDU1LCAyNjA4NSwgNzcwLCAKICAgICA1MCwgNTYsIDI2MDg1LCA3NzAsIDUwLCA1NywgMjYwODUsIDc3MCwgNTEsIDQ4LCAyNjA4NSwgNzcwLCA1MSwgNDksIAotICAgIDI2MDg1LCA3NzgsIDEwMywgOTcsIDEwOCwgMjU5LCA0Mjg2MywgMjU5LCAyOTQsIDI1OSwgMzM5LCAyNTYsIDM1OTEyLCAKLSAgICAyNTYsIDI2MzU2LCAyNTYsIDM2NTU0LCAyNTYsIDM2MDQwLCAyNTYsIDI4MzY5LCAyNTYsIDIwMDE4LCAyNTYsIDIxNDc3LCAKLSAgICAyNTYsIDQwODYwLCAyNTYsIDQwODYwLCAyNTYsIDIyODY1LCAyNTYsIDM3MzI5LCAyNTYsIDIxODk1LCAyNTYsIDIyODU2LCAKLSAgICAyNTYsIDI1MDc4LCAyNTYsIDMwMzEzLCAyNTYsIDMyNjQ1LCAyNTYsIDM0MzY3LCAyNTYsIDM0NzQ2LCAyNTYsIDM1MDY0LCAKLSAgICAyNTYsIDM3MDA3LCAyNTYsIDI3MTM4LCAyNTYsIDI3OTMxLCAyNTYsIDI4ODg5LCAyNTYsIDI5NjYyLCAyNTYsIDMzODUzLCAKLSAgICAyNTYsIDM3MjI2LCAyNTYsIDM5NDA5LCAyNTYsIDIwMDk4LCAyNTYsIDIxMzY1LCAyNTYsIDI3Mzk2LCAyNTYsIDI5MjExLCAKLSAgICAyNTYsIDM0MzQ5LCAyNTYsIDQwNDc4LCAyNTYsIDIzODg4LCAyNTYsIDI4NjUxLCAyNTYsIDM0MjUzLCAyNTYsIDM1MTcyLCAKLSAgICAyNTYsIDI1Mjg5LCAyNTYsIDMzMjQwLCAyNTYsIDM0ODQ3LCAyNTYsIDI0MjY2LCAyNTYsIDI2MzkxLCAyNTYsIDI4MDEwLCAKLSAgICAyNTYsIDI5NDM2LCAyNTYsIDM3MDcwLCAyNTYsIDIwMzU4LCAyNTYsIDIwOTE5LCAyNTYsIDIxMjE0LCAyNTYsIDI1Nzk2LCAKLSAgICAyNTYsIDI3MzQ3LCAyNTYsIDI5MjAwLCAyNTYsIDMwNDM5LCAyNTYsIDMyNzY5LCAyNTYsIDM0MzEwLCAyNTYsIDM0Mzk2LCAKLSAgICAyNTYsIDM2MzM1LCAyNTYsIDM4NzA2LCAyNTYsIDM5NzkxLCAyNTYsIDQwNDQyLCAyNTYsIDMwODYwLCAyNTYsIDMxMTAzLCAKLSAgICAyNTYsIDMyMTYwLCAyNTYsIDMzNzM3LCAyNTYsIDM3NjM2LCAyNTYsIDQwNTc1LCAyNTYsIDM1NTQyLCAyNTYsIDIyNzUxLCAKLSAgICAyNTYsIDI0MzI0LCAyNTYsIDMxODQwLCAyNTYsIDMyODk0LCAyNTYsIDI5MjgyLCAyNTYsIDMwOTIyLCAyNTYsIDM2MDM0LCAKLSAgICAyNTYsIDM4NjQ3LCAyNTYsIDIyNzQ0LCAyNTYsIDIzNjUwLCAyNTYsIDI3MTU1LCAyNTYsIDI4MTIyLCAyNTYsIDI4NDMxLCAKLSAgICAyNTYsIDMyMDQ3LCAyNTYsIDMyMzExLCAyNTYsIDM4NDc1LCAyNTYsIDIxMjAyLCAyNTYsIDMyOTA3LCAyNTYsIDIwOTU2LCAKLSAgICAyNTYsIDIwOTQwLCAyNTYsIDMxMjYwLCAyNTYsIDMyMTkwLCAyNTYsIDMzNzc3LCAyNTYsIDM4NTE3LCAyNTYsIDM1NzEyLCAKLSAgICAyNTYsIDI1Mjk1LCAyNTYsIDI3MTM4LCAyNTYsIDM1NTgyLCAyNTYsIDIwMDI1LCAyNTYsIDIzNTI3LCAyNTYsIDI0NTk0LCAKLSAgICAyNTYsIDI5NTc1LCAyNTYsIDMwMDY0LCAyNTYsIDIxMjcxLCAyNTYsIDMwOTcxLCAyNTYsIDIwNDE1LCAyNTYsIDI0NDg5LCAKLSAgICAyNTYsIDE5OTgxLCAyNTYsIDI3ODUyLCAyNTYsIDI1OTc2LCAyNTYsIDMyMDM0LCAyNTYsIDIxNDQzLCAyNTYsIDIyNjIyLCAKLSAgICAyNTYsIDMwNDY1LCAyNTYsIDMzODY1LCAyNTYsIDM1NDk4LCAyNTYsIDI3NTc4LCAyNTYsIDM2Nzg0LCAyNTYsIDI3Nzg0LCAKLSAgICAyNTYsIDI1MzQyLCAyNTYsIDMzNTA5LCAyNTYsIDI1NTA0LCAyNTYsIDMwMDUzLCAyNTYsIDIwMTQyLCAyNTYsIDIwODQxLCAKLSAgICAyNTYsIDIwOTM3LCAyNTYsIDI2NzUzLCAyNTYsIDMxOTc1LCAyNTYsIDMzMzkxLCAyNTYsIDM1NTM4LCAyNTYsIDM3MzI3LCAKLSAgICAyNTYsIDIxMjM3LCAyNTYsIDIxNTcwLCAyNTYsIDIyODk5LCAyNTYsIDI0MzAwLCAyNTYsIDI2MDUzLCAyNTYsIDI4NjcwLCAKLSAgICAyNTYsIDMxMDE4LCAyNTYsIDM4MzE3LCAyNTYsIDM5NTMwLCAyNTYsIDQwNTk5LCAyNTYsIDQwNjU0LCAyNTYsIDIxMTQ3LCAKLSAgICAyNTYsIDI2MzEwLCAyNTYsIDI3NTExLCAyNTYsIDM2NzA2LCAyNTYsIDI0MTgwLCAyNTYsIDI0OTc2LCAyNTYsIDI1MDg4LCAKLSAgICAyNTYsIDI1NzU0LCAyNTYsIDI4NDUxLCAyNTYsIDI5MDAxLCAyNTYsIDI5ODMzLCAyNTYsIDMxMTc4LCAyNTYsIDMyMjQ0LCAKLSAgICAyNTYsIDMyODc5LCAyNTYsIDM2NjQ2LCAyNTYsIDM0MDMwLCAyNTYsIDM2ODk5LCAyNTYsIDM3NzA2LCAyNTYsIDIxMDE1LCAKLSAgICAyNTYsIDIxMTU1LCAyNTYsIDIxNjkzLCAyNTYsIDI4ODcyLCAyNTYsIDM1MDEwLCAyNTYsIDM1NDk4LCAyNTYsIDI0MjY1LCAKLSAgICAyNTYsIDI0NTY1LCAyNTYsIDI1NDY3LCAyNTYsIDI3NTY2LCAyNTYsIDMxODA2LCAyNTYsIDI5NTU3LCAyNTYsIDIwMTk2LCAKLSAgICAyNTYsIDIyMjY1LCAyNTYsIDIzNTI3LCAyNTYsIDIzOTk0LCAyNTYsIDI0NjA0LCAyNTYsIDI5NjE4LCAyNTYsIDI5ODAxLCAKLSAgICAyNTYsIDMyNjY2LCAyNTYsIDMyODM4LCAyNTYsIDM3NDI4LCAyNTYsIDM4NjQ2LCAyNTYsIDM4NzI4LCAyNTYsIDM4OTM2LCAKLSAgICAyNTYsIDIwMzYzLCAyNTYsIDMxMTUwLCAyNTYsIDM3MzAwLCAyNTYsIDM4NTg0LCAyNTYsIDI0ODAxLCAyNTYsIDIwMTAyLCAKLSAgICAyNTYsIDIwNjk4LCAyNTYsIDIzNTM0LCAyNTYsIDIzNjE1LCAyNTYsIDI2MDA5LCAyNTYsIDI3MTM4LCAyNTYsIDI5MTM0LCAKLSAgICAyNTYsIDMwMjc0LCAyNTYsIDM0MDQ0LCAyNTYsIDM2OTg4LCAyNTYsIDQwODQ1LCAyNTYsIDI2MjQ4LCAyNTYsIDM4NDQ2LCAKLSAgICAyNTYsIDIxMTI5LCAyNTYsIDI2NDkxLCAyNTYsIDI2NjExLCAyNTYsIDI3OTY5LCAyNTYsIDI4MzE2LCAyNTYsIDI5NzA1LCAKLSAgICAyNTYsIDMwMDQxLCAyNTYsIDMwODI3LCAyNTYsIDMyMDE2LCAyNTYsIDM5MDA2LCAyNTYsIDIwODQ1LCAyNTYsIDI1MTM0LCAKLSAgICAyNTYsIDM4NTIwLCAyNTYsIDIwNTIzLCAyNTYsIDIzODMzLCAyNTYsIDI4MTM4LCAyNTYsIDM2NjUwLCAyNTYsIDI0NDU5LCAKLSAgICAyNTYsIDI0OTAwLCAyNTYsIDI2NjQ3LCAyNTYsIDI5NTc1LCAyNTYsIDM4NTM0LCAyNTYsIDIxMDMzLCAyNTYsIDIxNTE5LCAKLSAgICAyNTYsIDIzNjUzLCAyNTYsIDI2MTMxLCAyNTYsIDI2NDQ2LCAyNTYsIDI2NzkyLCAyNTYsIDI3ODc3LCAyNTYsIDI5NzAyLCAKLSAgICAyNTYsIDMwMTc4LCAyNTYsIDMyNjMzLCAyNTYsIDM1MDIzLCAyNTYsIDM1MDQxLCAyNTYsIDM3MzI0LCAyNTYsIDM4NjI2LCAKLSAgICAyNTYsIDIxMzExLCAyNTYsIDI4MzQ2LCAyNTYsIDIxNTMzLCAyNTYsIDI5MTM2LCAyNTYsIDI5ODQ4LCAyNTYsIDM0Mjk4LCAKLSAgICAyNTYsIDM4NTYzLCAyNTYsIDQwMDIzLCAyNTYsIDQwNjA3LCAyNTYsIDI2NTE5LCAyNTYsIDI4MTA3LCAyNTYsIDMzMjU2LCAKLSAgICAyNTYsIDMxNDM1LCAyNTYsIDMxNTIwLCAyNTYsIDMxODkwLCAyNTYsIDI5Mzc2LCAyNTYsIDI4ODI1LCAyNTYsIDM1NjcyLCAKLSAgICAyNTYsIDIwMTYwLCAyNTYsIDMzNTkwLCAyNTYsIDIxMDUwLCAyNTYsIDIwOTk5LCAyNTYsIDI0MjMwLCAyNTYsIDI1Mjk5LCAKLSAgICAyNTYsIDMxOTU4LCAyNTYsIDIzNDI5LCAyNTYsIDI3OTM0LCAyNTYsIDI2MjkyLCAyNTYsIDM2NjY3LCAyNTYsIDM0ODkyLCAKLSAgICAyNTYsIDM4NDc3LCAyNTYsIDM1MjExLCAyNTYsIDI0Mjc1LCAyNTYsIDIwODAwLCAyNTYsIDIxOTUyLCAyNTYsIDIyNjE4LCAKLSAgICAyNTYsIDI2MjI4LCAyNTYsIDIwOTU4LCAyNTYsIDI5NDgyLCAyNTYsIDMwNDEwLCAyNTYsIDMxMDM2LCAyNTYsIDMxMDcwLCAKLSAgICAyNTYsIDMxMDc3LCAyNTYsIDMxMTE5LCAyNTYsIDM4NzQyLCAyNTYsIDMxOTM0LCAyNTYsIDMyNzAxLCAyNTYsIDM0MzIyLCAKLSAgICAyNTYsIDM1NTc2LCAyNTYsIDM2OTIwLCAyNTYsIDM3MTE3LCAyNTYsIDM5MTUxLCAyNTYsIDM5MTY0LCAyNTYsIDM5MjA4LCAKLSAgICAyNTYsIDQwMzcyLCAyNTYsIDM3MDg2LCAyNTYsIDM4NTgzLCAyNTYsIDIwMzk4LCAyNTYsIDIwNzExLCAyNTYsIDIwODEzLCAKLSAgICAyNTYsIDIxMTkzLCAyNTYsIDIxMjIwLCAyNTYsIDIxMzI5LCAyNTYsIDIxOTE3LCAyNTYsIDIyMDIyLCAyNTYsIDIyMTIwLCAKLSAgICAyNTYsIDIyNTkyLCAyNTYsIDIyNjk2LCAyNTYsIDIzNjUyLCAyNTYsIDIzNjYyLCAyNTYsIDI0NzI0LCAyNTYsIDI0OTM2LCAKLSAgICAyNTYsIDI0OTc0LCAyNTYsIDI1MDc0LCAyNTYsIDI1OTM1LCAyNTYsIDI2MDgyLCAyNTYsIDI2MjU3LCAyNTYsIDI2NzU3LCAKLSAgICAyNTYsIDI4MDIzLCAyNTYsIDI4MTg2LCAyNTYsIDI4NDUwLCAyNTYsIDI5MDM4LCAyNTYsIDI5MjI3LCAyNTYsIDI5NzMwLCAKLSAgICAyNTYsIDMwODY1LCAyNTYsIDMxMDM4LCAyNTYsIDMxMDQ5LCAyNTYsIDMxMDQ4LCAyNTYsIDMxMDU2LCAyNTYsIDMxMDYyLCAKLSAgICAyNTYsIDMxMDY5LCAyNTYsIDMxMTE3LCAyNTYsIDMxMTE4LCAyNTYsIDMxMjk2LCAyNTYsIDMxMzYxLCAyNTYsIDMxNjgwLCAKLSAgICAyNTYsIDMyMjQ0LCAyNTYsIDMyMjY1LCAyNTYsIDMyMzIxLCAyNTYsIDMyNjI2LCAyNTYsIDMyNzczLCAyNTYsIDMzMjYxLCAKLSAgICAyNTYsIDMzNDAxLCAyNTYsIDMzNDAxLCAyNTYsIDMzODc5LCAyNTYsIDM1MDg4LCAyNTYsIDM1MjIyLCAyNTYsIDM1NTg1LCAKLSAgICAyNTYsIDM1NjQxLCAyNTYsIDM2MDUxLCAyNTYsIDM2MTA0LCAyNTYsIDM2NzkwLCAyNTYsIDM2OTIwLCAyNTYsIDM4NjI3LCAKLSAgICAyNTYsIDM4OTExLCAyNTYsIDM4OTcxLCAyNTYsIDI0NjkzLCAyNTYsIDE0ODIwNiwgMjU2LCAzMzMwNCwgMjU2LCAyMDAwNiwgCi0gICAgMjU2LCAyMDkxNywgMjU2LCAyMDg0MCwgMjU2LCAyMDM1MiwgMjU2LCAyMDgwNSwgMjU2LCAyMDg2NCwgMjU2LCAyMTE5MSwgCi0gICAgMjU2LCAyMTI0MiwgMjU2LCAyMTkxNywgMjU2LCAyMTg0NSwgMjU2LCAyMTkxMywgMjU2LCAyMTk4NiwgMjU2LCAyMjYxOCwgCi0gICAgMjU2LCAyMjcwNywgMjU2LCAyMjg1MiwgMjU2LCAyMjg2OCwgMjU2LCAyMzEzOCwgMjU2LCAyMzMzNiwgMjU2LCAyNDI3NCwgCi0gICAgMjU2LCAyNDI4MSwgMjU2LCAyNDQyNSwgMjU2LCAyNDQ5MywgMjU2LCAyNDc5MiwgMjU2LCAyNDkxMCwgMjU2LCAyNDg0MCwgCi0gICAgMjU2LCAyNDk3NCwgMjU2LCAyNDkyOCwgMjU2LCAyNTA3NCwgMjU2LCAyNTE0MCwgMjU2LCAyNTU0MCwgMjU2LCAyNTYyOCwgCi0gICAgMjU2LCAyNTY4MiwgMjU2LCAyNTk0MiwgMjU2LCAyNjIyOCwgMjU2LCAyNjM5MSwgMjU2LCAyNjM5NSwgMjU2LCAyNjQ1NCwgCi0gICAgMjU2LCAyNzUxMywgMjU2LCAyNzU3OCwgMjU2LCAyNzk2OSwgMjU2LCAyODM3OSwgMjU2LCAyODM2MywgMjU2LCAyODQ1MCwgCi0gICAgMjU2LCAyODcwMiwgMjU2LCAyOTAzOCwgMjU2LCAzMDYzMSwgMjU2LCAyOTIzNywgMjU2LCAyOTM1OSwgMjU2LCAyOTQ4MiwgCi0gICAgMjU2LCAyOTgwOSwgMjU2LCAyOTk1OCwgMjU2LCAzMDAxMSwgMjU2LCAzMDIzNywgMjU2LCAzMDIzOSwgMjU2LCAzMDQxMCwgCi0gICAgMjU2LCAzMDQyNywgMjU2LCAzMDQ1MiwgMjU2LCAzMDUzOCwgMjU2LCAzMDUyOCwgMjU2LCAzMDkyNCwgMjU2LCAzMTQwOSwgCi0gICAgMjU2LCAzMTY4MCwgMjU2LCAzMTg2NywgMjU2LCAzMjA5MSwgMjU2LCAzMjI0NCwgMjU2LCAzMjU3NCwgMjU2LCAzMjc3MywgCi0gICAgMjU2LCAzMzYxOCwgMjU2LCAzMzc3NSwgMjU2LCAzNDY4MSwgMjU2LCAzNTEzNywgMjU2LCAzNTIwNiwgMjU2LCAzNTIyMiwgCi0gICAgMjU2LCAzNTUxOSwgMjU2LCAzNTU3NiwgMjU2LCAzNTUzMSwgMjU2LCAzNTU4NSwgMjU2LCAzNTU4MiwgMjU2LCAzNTU2NSwgCi0gICAgMjU2LCAzNTY0MSwgMjU2LCAzNTcyMiwgMjU2LCAzNjEwNCwgMjU2LCAzNjY2NCwgMjU2LCAzNjk3OCwgMjU2LCAzNzI3MywgCi0gICAgMjU2LCAzNzQ5NCwgMjU2LCAzODUyNCwgMjU2LCAzODYyNywgMjU2LCAzODc0MiwgMjU2LCAzODg3NSwgMjU2LCAzODkxMSwgCi0gICAgMjU2LCAzODkyMywgMjU2LCAzODk3MSwgMjU2LCAzOTY5OCwgMjU2LCA0MDg2MCwgMjU2LCAxNDEzODYsIDI1NiwgMTQxMzgwLCAKLSAgICAyNTYsIDE0NDM0MSwgMjU2LCAxNTI2MSwgMjU2LCAxNjQwOCwgMjU2LCAxNjQ0MSwgMjU2LCAxNTIxMzcsIDI1NiwgCi0gICAgMTU0ODMyLCAyNTYsIDE2MzUzOSwgMjU2LCA0MDc3MSwgMjU2LCA0MDg0NiwgNTE0LCAxMDIsIDEwMiwgNTE0LCAxMDIsIAotICAgIDEwNSwgNTE0LCAxMDIsIDEwOCwgNzcwLCAxMDIsIDEwMiwgMTA1LCA3NzAsIDEwMiwgMTAyLCAxMDgsIDUxNCwgMzgzLCAKLSAgICAxMTYsIDUxNCwgMTE1LCAxMTYsIDUxNCwgMTM5NiwgMTM5OCwgNTE0LCAxMzk2LCAxMzgxLCA1MTQsIDEzOTYsIDEzODcsIAotICAgIDUxNCwgMTQwNiwgMTM5OCwgNTE0LCAxMzk2LCAxMzg5LCA1MTIsIDE0OTcsIDE0NjAsIDUxMiwgMTUyMiwgMTQ2MywgMjYyLCAKLSAgICAxNTA2LCAyNjIsIDE0ODgsIDI2MiwgMTQ5MSwgMjYyLCAxNDkyLCAyNjIsIDE0OTksIDI2MiwgMTUwMCwgMjYyLCAxNTAxLCAKLSAgICAyNjIsIDE1MTIsIDI2MiwgMTUxNCwgMjYyLCA0MywgNTEyLCAxNTEzLCAxNDczLCA1MTIsIDE1MTMsIDE0NzQsIDUxMiwgCi0gICAgNjQzMjksIDE0NzMsIDUxMiwgNjQzMjksIDE0NzQsIDUxMiwgMTQ4OCwgMTQ2MywgNTEyLCAxNDg4LCAxNDY0LCA1MTIsIAotICAgIDE0ODgsIDE0NjgsIDUxMiwgMTQ4OSwgMTQ2OCwgNTEyLCAxNDkwLCAxNDY4LCA1MTIsIDE0OTEsIDE0NjgsIDUxMiwgMTQ5MiwgCi0gICAgMTQ2OCwgNTEyLCAxNDkzLCAxNDY4LCA1MTIsIDE0OTQsIDE0NjgsIDUxMiwgMTQ5NiwgMTQ2OCwgNTEyLCAxNDk3LCAxNDY4LCAKLSAgICA1MTIsIDE0OTgsIDE0NjgsIDUxMiwgMTQ5OSwgMTQ2OCwgNTEyLCAxNTAwLCAxNDY4LCA1MTIsIDE1MDIsIDE0NjgsIDUxMiwgCi0gICAgMTUwNCwgMTQ2OCwgNTEyLCAxNTA1LCAxNDY4LCA1MTIsIDE1MDcsIDE0NjgsIDUxMiwgMTUwOCwgMTQ2OCwgNTEyLCAxNTEwLCAKLSAgICAxNDY4LCA1MTIsIDE1MTEsIDE0NjgsIDUxMiwgMTUxMiwgMTQ2OCwgNTEyLCAxNTEzLCAxNDY4LCA1MTIsIDE1MTQsIDE0NjgsIAotICAgIDUxMiwgMTQ5MywgMTQ2NSwgNTEyLCAxNDg5LCAxNDcxLCA1MTIsIDE0OTksIDE0NzEsIDUxMiwgMTUwOCwgMTQ3MSwgNTE0LCAKLSAgICAxNDg4LCAxNTAwLCAyNjcsIDE2NDksIDI2OCwgMTY0OSwgMjY3LCAxNjU5LCAyNjgsIDE2NTksIDI2OSwgMTY1OSwgMjcwLCAKLSAgICAxNjU5LCAyNjcsIDE2NjIsIDI2OCwgMTY2MiwgMjY5LCAxNjYyLCAyNzAsIDE2NjIsIDI2NywgMTY2NCwgMjY4LCAxNjY0LCAKLSAgICAyNjksIDE2NjQsIDI3MCwgMTY2NCwgMjY3LCAxNjU4LCAyNjgsIDE2NTgsIDI2OSwgMTY1OCwgMjcwLCAxNjU4LCAyNjcsIAotICAgIDE2NjMsIDI2OCwgMTY2MywgMjY5LCAxNjYzLCAyNzAsIDE2NjMsIDI2NywgMTY1NywgMjY4LCAxNjU3LCAyNjksIDE2NTcsIAotICAgIDI3MCwgMTY1NywgMjY3LCAxNzAwLCAyNjgsIDE3MDAsIDI2OSwgMTcwMCwgMjcwLCAxNzAwLCAyNjcsIDE3MDIsIDI2OCwgCi0gICAgMTcwMiwgMjY5LCAxNzAyLCAyNzAsIDE3MDIsIDI2NywgMTY2OCwgMjY4LCAxNjY4LCAyNjksIDE2NjgsIDI3MCwgMTY2OCwgCi0gICAgMjY3LCAxNjY3LCAyNjgsIDE2NjcsIDI2OSwgMTY2NywgMjcwLCAxNjY3LCAyNjcsIDE2NzAsIDI2OCwgMTY3MCwgMjY5LCAKLSAgICAxNjcwLCAyNzAsIDE2NzAsIDI2NywgMTY3MSwgMjY4LCAxNjcxLCAyNjksIDE2NzEsIDI3MCwgMTY3MSwgMjY3LCAxNjc3LCAKLSAgICAyNjgsIDE2NzcsIDI2NywgMTY3NiwgMjY4LCAxNjc2LCAyNjcsIDE2NzgsIDI2OCwgMTY3OCwgMjY3LCAxNjcyLCAyNjgsIAotICAgIDE2NzIsIDI2NywgMTY4OCwgMjY4LCAxNjg4LCAyNjcsIDE2ODEsIDI2OCwgMTY4MSwgMjY3LCAxNzA1LCAyNjgsIDE3MDUsIAotICAgIDI2OSwgMTcwNSwgMjcwLCAxNzA1LCAyNjcsIDE3MTEsIDI2OCwgMTcxMSwgMjY5LCAxNzExLCAyNzAsIDE3MTEsIDI2NywgCi0gICAgMTcxNSwgMjY4LCAxNzE1LCAyNjksIDE3MTUsIDI3MCwgMTcxNSwgMjY3LCAxNzEzLCAyNjgsIDE3MTMsIDI2OSwgMTcxMywgCi0gICAgMjcwLCAxNzEzLCAyNjcsIDE3MjIsIDI2OCwgMTcyMiwgMjY3LCAxNzIzLCAyNjgsIDE3MjMsIDI2OSwgMTcyMywgMjcwLCAKLSAgICAxNzIzLCAyNjcsIDE3MjgsIDI2OCwgMTcyOCwgMjY3LCAxNzI5LCAyNjgsIDE3MjksIDI2OSwgMTcyOSwgMjcwLCAxNzI5LCAKLSAgICAyNjcsIDE3MjYsIDI2OCwgMTcyNiwgMjY5LCAxNzI2LCAyNzAsIDE3MjYsIDI2NywgMTc0NiwgMjY4LCAxNzQ2LCAyNjcsIAotICAgIDE3NDcsIDI2OCwgMTc0NywgMjY3LCAxNzA5LCAyNjgsIDE3MDksIDI2OSwgMTcwOSwgMjcwLCAxNzA5LCAyNjcsIDE3MzUsIAotICAgIDI2OCwgMTczNSwgMjY3LCAxNzM0LCAyNjgsIDE3MzQsIDI2NywgMTczNiwgMjY4LCAxNzM2LCAyNjcsIDE2NTUsIDI2NywgCi0gICAgMTczOSwgMjY4LCAxNzM5LCAyNjcsIDE3MzMsIDI2OCwgMTczMywgMjY3LCAxNzM3LCAyNjgsIDE3MzcsIDI2NywgMTc0NCwgCi0gICAgMjY4LCAxNzQ0LCAyNjksIDE3NDQsIDI3MCwgMTc0NCwgMjY5LCAxNjA5LCAyNzAsIDE2MDksIDUyMywgMTU3NCwgMTU3NSwgCi0gICAgNTI0LCAxNTc0LCAxNTc1LCA1MjMsIDE1NzQsIDE3NDksIDUyNCwgMTU3NCwgMTc0OSwgNTIzLCAxNTc0LCAxNjA4LCA1MjQsIAotICAgIDE1NzQsIDE2MDgsIDUyMywgMTU3NCwgMTczNSwgNTI0LCAxNTc0LCAxNzM1LCA1MjMsIDE1NzQsIDE3MzQsIDUyNCwgMTU3NCwgCi0gICAgMTczNCwgNTIzLCAxNTc0LCAxNzM2LCA1MjQsIDE1NzQsIDE3MzYsIDUyMywgMTU3NCwgMTc0NCwgNTI0LCAxNTc0LCAxNzQ0LCAKLSAgICA1MjUsIDE1NzQsIDE3NDQsIDUyMywgMTU3NCwgMTYwOSwgNTI0LCAxNTc0LCAxNjA5LCA1MjUsIDE1NzQsIDE2MDksIDI2NywgCi0gICAgMTc0MCwgMjY4LCAxNzQwLCAyNjksIDE3NDAsIDI3MCwgMTc0MCwgNTIzLCAxNTc0LCAxNTgwLCA1MjMsIDE1NzQsIDE1ODEsIAotICAgIDUyMywgMTU3NCwgMTYwNSwgNTIzLCAxNTc0LCAxNjA5LCA1MjMsIDE1NzQsIDE2MTAsIDUyMywgMTU3NiwgMTU4MCwgNTIzLCAKLSAgICAxNTc2LCAxNTgxLCA1MjMsIDE1NzYsIDE1ODIsIDUyMywgMTU3NiwgMTYwNSwgNTIzLCAxNTc2LCAxNjA5LCA1MjMsIDE1NzYsIAotICAgIDE2MTAsIDUyMywgMTU3OCwgMTU4MCwgNTIzLCAxNTc4LCAxNTgxLCA1MjMsIDE1NzgsIDE1ODIsIDUyMywgMTU3OCwgMTYwNSwgCi0gICAgNTIzLCAxNTc4LCAxNjA5LCA1MjMsIDE1NzgsIDE2MTAsIDUyMywgMTU3OSwgMTU4MCwgNTIzLCAxNTc5LCAxNjA1LCA1MjMsIAotICAgIDE1NzksIDE2MDksIDUyMywgMTU3OSwgMTYxMCwgNTIzLCAxNTgwLCAxNTgxLCA1MjMsIDE1ODAsIDE2MDUsIDUyMywgMTU4MSwgCi0gICAgMTU4MCwgNTIzLCAxNTgxLCAxNjA1LCA1MjMsIDE1ODIsIDE1ODAsIDUyMywgMTU4MiwgMTU4MSwgNTIzLCAxNTgyLCAxNjA1LCAKLSAgICA1MjMsIDE1ODcsIDE1ODAsIDUyMywgMTU4NywgMTU4MSwgNTIzLCAxNTg3LCAxNTgyLCA1MjMsIDE1ODcsIDE2MDUsIDUyMywgCi0gICAgMTU4OSwgMTU4MSwgNTIzLCAxNTg5LCAxNjA1LCA1MjMsIDE1OTAsIDE1ODAsIDUyMywgMTU5MCwgMTU4MSwgNTIzLCAxNTkwLCAKLSAgICAxNTgyLCA1MjMsIDE1OTAsIDE2MDUsIDUyMywgMTU5MSwgMTU4MSwgNTIzLCAxNTkxLCAxNjA1LCA1MjMsIDE1OTIsIDE2MDUsIAotICAgIDUyMywgMTU5MywgMTU4MCwgNTIzLCAxNTkzLCAxNjA1LCA1MjMsIDE1OTQsIDE1ODAsIDUyMywgMTU5NCwgMTYwNSwgNTIzLCAKLSAgICAxNjAxLCAxNTgwLCA1MjMsIDE2MDEsIDE1ODEsIDUyMywgMTYwMSwgMTU4MiwgNTIzLCAxNjAxLCAxNjA1LCA1MjMsIDE2MDEsIAotICAgIDE2MDksIDUyMywgMTYwMSwgMTYxMCwgNTIzLCAxNjAyLCAxNTgxLCA1MjMsIDE2MDIsIDE2MDUsIDUyMywgMTYwMiwgMTYwOSwgCi0gICAgNTIzLCAxNjAyLCAxNjEwLCA1MjMsIDE2MDMsIDE1NzUsIDUyMywgMTYwMywgMTU4MCwgNTIzLCAxNjAzLCAxNTgxLCA1MjMsIAotICAgIDE2MDMsIDE1ODIsIDUyMywgMTYwMywgMTYwNCwgNTIzLCAxNjAzLCAxNjA1LCA1MjMsIDE2MDMsIDE2MDksIDUyMywgMTYwMywgCi0gICAgMTYxMCwgNTIzLCAxNjA0LCAxNTgwLCA1MjMsIDE2MDQsIDE1ODEsIDUyMywgMTYwNCwgMTU4MiwgNTIzLCAxNjA0LCAxNjA1LCAKLSAgICA1MjMsIDE2MDQsIDE2MDksIDUyMywgMTYwNCwgMTYxMCwgNTIzLCAxNjA1LCAxNTgwLCA1MjMsIDE2MDUsIDE1ODEsIDUyMywgCi0gICAgMTYwNSwgMTU4MiwgNTIzLCAxNjA1LCAxNjA1LCA1MjMsIDE2MDUsIDE2MDksIDUyMywgMTYwNSwgMTYxMCwgNTIzLCAxNjA2LCAKLSAgICAxNTgwLCA1MjMsIDE2MDYsIDE1ODEsIDUyMywgMTYwNiwgMTU4MiwgNTIzLCAxNjA2LCAxNjA1LCA1MjMsIDE2MDYsIDE2MDksIAotICAgIDUyMywgMTYwNiwgMTYxMCwgNTIzLCAxNjA3LCAxNTgwLCA1MjMsIDE2MDcsIDE2MDUsIDUyMywgMTYwNywgMTYwOSwgNTIzLCAKLSAgICAxNjA3LCAxNjEwLCA1MjMsIDE2MTAsIDE1ODAsIDUyMywgMTYxMCwgMTU4MSwgNTIzLCAxNjEwLCAxNTgyLCA1MjMsIDE2MTAsIAotICAgIDE2MDUsIDUyMywgMTYxMCwgMTYwOSwgNTIzLCAxNjEwLCAxNjEwLCA1MjMsIDE1ODQsIDE2NDgsIDUyMywgMTU4NSwgMTY0OCwgCi0gICAgNTIzLCAxNjA5LCAxNjQ4LCA3NzksIDMyLCAxNjEyLCAxNjE3LCA3NzksIDMyLCAxNjEzLCAxNjE3LCA3NzksIDMyLCAxNjE0LCAKLSAgICAxNjE3LCA3NzksIDMyLCAxNjE1LCAxNjE3LCA3NzksIDMyLCAxNjE2LCAxNjE3LCA3NzksIDMyLCAxNjE3LCAxNjQ4LCA1MjQsIAotICAgIDE1NzQsIDE1ODUsIDUyNCwgMTU3NCwgMTU4NiwgNTI0LCAxNTc0LCAxNjA1LCA1MjQsIDE1NzQsIDE2MDYsIDUyNCwgMTU3NCwgCi0gICAgMTYwOSwgNTI0LCAxNTc0LCAxNjEwLCA1MjQsIDE1NzYsIDE1ODUsIDUyNCwgMTU3NiwgMTU4NiwgNTI0LCAxNTc2LCAxNjA1LCAKLSAgICA1MjQsIDE1NzYsIDE2MDYsIDUyNCwgMTU3NiwgMTYwOSwgNTI0LCAxNTc2LCAxNjEwLCA1MjQsIDE1NzgsIDE1ODUsIDUyNCwgCi0gICAgMTU3OCwgMTU4NiwgNTI0LCAxNTc4LCAxNjA1LCA1MjQsIDE1NzgsIDE2MDYsIDUyNCwgMTU3OCwgMTYwOSwgNTI0LCAxNTc4LCAKLSAgICAxNjEwLCA1MjQsIDE1NzksIDE1ODUsIDUyNCwgMTU3OSwgMTU4NiwgNTI0LCAxNTc5LCAxNjA1LCA1MjQsIDE1NzksIDE2MDYsIAotICAgIDUyNCwgMTU3OSwgMTYwOSwgNTI0LCAxNTc5LCAxNjEwLCA1MjQsIDE2MDEsIDE2MDksIDUyNCwgMTYwMSwgMTYxMCwgNTI0LCAKLSAgICAxNjAyLCAxNjA5LCA1MjQsIDE2MDIsIDE2MTAsIDUyNCwgMTYwMywgMTU3NSwgNTI0LCAxNjAzLCAxNjA0LCA1MjQsIDE2MDMsIAotICAgIDE2MDUsIDUyNCwgMTYwMywgMTYwOSwgNTI0LCAxNjAzLCAxNjEwLCA1MjQsIDE2MDQsIDE2MDUsIDUyNCwgMTYwNCwgMTYwOSwgCi0gICAgNTI0LCAxNjA0LCAxNjEwLCA1MjQsIDE2MDUsIDE1NzUsIDUyNCwgMTYwNSwgMTYwNSwgNTI0LCAxNjA2LCAxNTg1LCA1MjQsIAotICAgIDE2MDYsIDE1ODYsIDUyNCwgMTYwNiwgMTYwNSwgNTI0LCAxNjA2LCAxNjA2LCA1MjQsIDE2MDYsIDE2MDksIDUyNCwgMTYwNiwgCi0gICAgMTYxMCwgNTI0LCAxNjA5LCAxNjQ4LCA1MjQsIDE2MTAsIDE1ODUsIDUyNCwgMTYxMCwgMTU4NiwgNTI0LCAxNjEwLCAxNjA1LCAKLSAgICA1MjQsIDE2MTAsIDE2MDYsIDUyNCwgMTYxMCwgMTYwOSwgNTI0LCAxNjEwLCAxNjEwLCA1MjUsIDE1NzQsIDE1ODAsIDUyNSwgCi0gICAgMTU3NCwgMTU4MSwgNTI1LCAxNTc0LCAxNTgyLCA1MjUsIDE1NzQsIDE2MDUsIDUyNSwgMTU3NCwgMTYwNywgNTI1LCAxNTc2LCAKLSAgICAxNTgwLCA1MjUsIDE1NzYsIDE1ODEsIDUyNSwgMTU3NiwgMTU4MiwgNTI1LCAxNTc2LCAxNjA1LCA1MjUsIDE1NzYsIDE2MDcsIAotICAgIDUyNSwgMTU3OCwgMTU4MCwgNTI1LCAxNTc4LCAxNTgxLCA1MjUsIDE1NzgsIDE1ODIsIDUyNSwgMTU3OCwgMTYwNSwgNTI1LCAKLSAgICAxNTc4LCAxNjA3LCA1MjUsIDE1NzksIDE2MDUsIDUyNSwgMTU4MCwgMTU4MSwgNTI1LCAxNTgwLCAxNjA1LCA1MjUsIDE1ODEsIAotICAgIDE1ODAsIDUyNSwgMTU4MSwgMTYwNSwgNTI1LCAxNTgyLCAxNTgwLCA1MjUsIDE1ODIsIDE2MDUsIDUyNSwgMTU4NywgMTU4MCwgCi0gICAgNTI1LCAxNTg3LCAxNTgxLCA1MjUsIDE1ODcsIDE1ODIsIDUyNSwgMTU4NywgMTYwNSwgNTI1LCAxNTg5LCAxNTgxLCA1MjUsIAotICAgIDE1ODksIDE1ODIsIDUyNSwgMTU4OSwgMTYwNSwgNTI1LCAxNTkwLCAxNTgwLCA1MjUsIDE1OTAsIDE1ODEsIDUyNSwgMTU5MCwgCi0gICAgMTU4MiwgNTI1LCAxNTkwLCAxNjA1LCA1MjUsIDE1OTEsIDE1ODEsIDUyNSwgMTU5MiwgMTYwNSwgNTI1LCAxNTkzLCAxNTgwLCAKLSAgICA1MjUsIDE1OTMsIDE2MDUsIDUyNSwgMTU5NCwgMTU4MCwgNTI1LCAxNTk0LCAxNjA1LCA1MjUsIDE2MDEsIDE1ODAsIDUyNSwgCi0gICAgMTYwMSwgMTU4MSwgNTI1LCAxNjAxLCAxNTgyLCA1MjUsIDE2MDEsIDE2MDUsIDUyNSwgMTYwMiwgMTU4MSwgNTI1LCAxNjAyLCAKLSAgICAxNjA1LCA1MjUsIDE2MDMsIDE1ODAsIDUyNSwgMTYwMywgMTU4MSwgNTI1LCAxNjAzLCAxNTgyLCA1MjUsIDE2MDMsIDE2MDQsIAotICAgIDUyNSwgMTYwMywgMTYwNSwgNTI1LCAxNjA0LCAxNTgwLCA1MjUsIDE2MDQsIDE1ODEsIDUyNSwgMTYwNCwgMTU4MiwgNTI1LCAKLSAgICAxNjA0LCAxNjA1LCA1MjUsIDE2MDQsIDE2MDcsIDUyNSwgMTYwNSwgMTU4MCwgNTI1LCAxNjA1LCAxNTgxLCA1MjUsIDE2MDUsIAotICAgIDE1ODIsIDUyNSwgMTYwNSwgMTYwNSwgNTI1LCAxNjA2LCAxNTgwLCA1MjUsIDE2MDYsIDE1ODEsIDUyNSwgMTYwNiwgMTU4MiwgCi0gICAgNTI1LCAxNjA2LCAxNjA1LCA1MjUsIDE2MDYsIDE2MDcsIDUyNSwgMTYwNywgMTU4MCwgNTI1LCAxNjA3LCAxNjA1LCA1MjUsIAotICAgIDE2MDcsIDE2NDgsIDUyNSwgMTYxMCwgMTU4MCwgNTI1LCAxNjEwLCAxNTgxLCA1MjUsIDE2MTAsIDE1ODIsIDUyNSwgMTYxMCwgCi0gICAgMTYwNSwgNTI1LCAxNjEwLCAxNjA3LCA1MjYsIDE1NzQsIDE2MDUsIDUyNiwgMTU3NCwgMTYwNywgNTI2LCAxNTc2LCAxNjA1LCAKLSAgICA1MjYsIDE1NzYsIDE2MDcsIDUyNiwgMTU3OCwgMTYwNSwgNTI2LCAxNTc4LCAxNjA3LCA1MjYsIDE1NzksIDE2MDUsIDUyNiwgCi0gICAgMTU3OSwgMTYwNywgNTI2LCAxNTg3LCAxNjA1LCA1MjYsIDE1ODcsIDE2MDcsIDUyNiwgMTU4OCwgMTYwNSwgNTI2LCAxNTg4LCAKLSAgICAxNjA3LCA1MjYsIDE2MDMsIDE2MDQsIDUyNiwgMTYwMywgMTYwNSwgNTI2LCAxNjA0LCAxNjA1LCA1MjYsIDE2MDYsIDE2MDUsIAotICAgIDUyNiwgMTYwNiwgMTYwNywgNTI2LCAxNjEwLCAxNjA1LCA1MjYsIDE2MTAsIDE2MDcsIDc4MiwgMTYwMCwgMTYxNCwgMTYxNywgCi0gICAgNzgyLCAxNjAwLCAxNjE1LCAxNjE3LCA3ODIsIDE2MDAsIDE2MTYsIDE2MTcsIDUyMywgMTU5MSwgMTYwOSwgNTIzLCAxNTkxLCAKLSAgICAxNjEwLCA1MjMsIDE1OTMsIDE2MDksIDUyMywgMTU5MywgMTYxMCwgNTIzLCAxNTk0LCAxNjA5LCA1MjMsIDE1OTQsIDE2MTAsIAotICAgIDUyMywgMTU4NywgMTYwOSwgNTIzLCAxNTg3LCAxNjEwLCA1MjMsIDE1ODgsIDE2MDksIDUyMywgMTU4OCwgMTYxMCwgNTIzLCAKLSAgICAxNTgxLCAxNjA5LCA1MjMsIDE1ODEsIDE2MTAsIDUyMywgMTU4MCwgMTYwOSwgNTIzLCAxNTgwLCAxNjEwLCA1MjMsIDE1ODIsIAotICAgIDE2MDksIDUyMywgMTU4MiwgMTYxMCwgNTIzLCAxNTg5LCAxNjA5LCA1MjMsIDE1ODksIDE2MTAsIDUyMywgMTU5MCwgMTYwOSwgCi0gICAgNTIzLCAxNTkwLCAxNjEwLCA1MjMsIDE1ODgsIDE1ODAsIDUyMywgMTU4OCwgMTU4MSwgNTIzLCAxNTg4LCAxNTgyLCA1MjMsIAotICAgIDE1ODgsIDE2MDUsIDUyMywgMTU4OCwgMTU4NSwgNTIzLCAxNTg3LCAxNTg1LCA1MjMsIDE1ODksIDE1ODUsIDUyMywgMTU5MCwgCi0gICAgMTU4NSwgNTI0LCAxNTkxLCAxNjA5LCA1MjQsIDE1OTEsIDE2MTAsIDUyNCwgMTU5MywgMTYwOSwgNTI0LCAxNTkzLCAxNjEwLCAKLSAgICA1MjQsIDE1OTQsIDE2MDksIDUyNCwgMTU5NCwgMTYxMCwgNTI0LCAxNTg3LCAxNjA5LCA1MjQsIDE1ODcsIDE2MTAsIDUyNCwgCi0gICAgMTU4OCwgMTYwOSwgNTI0LCAxNTg4LCAxNjEwLCA1MjQsIDE1ODEsIDE2MDksIDUyNCwgMTU4MSwgMTYxMCwgNTI0LCAxNTgwLCAKLSAgICAxNjA5LCA1MjQsIDE1ODAsIDE2MTAsIDUyNCwgMTU4MiwgMTYwOSwgNTI0LCAxNTgyLCAxNjEwLCA1MjQsIDE1ODksIDE2MDksIAotICAgIDUyNCwgMTU4OSwgMTYxMCwgNTI0LCAxNTkwLCAxNjA5LCA1MjQsIDE1OTAsIDE2MTAsIDUyNCwgMTU4OCwgMTU4MCwgNTI0LCAKLSAgICAxNTg4LCAxNTgxLCA1MjQsIDE1ODgsIDE1ODIsIDUyNCwgMTU4OCwgMTYwNSwgNTI0LCAxNTg4LCAxNTg1LCA1MjQsIDE1ODcsIAotICAgIDE1ODUsIDUyNCwgMTU4OSwgMTU4NSwgNTI0LCAxNTkwLCAxNTg1LCA1MjUsIDE1ODgsIDE1ODAsIDUyNSwgMTU4OCwgMTU4MSwgCi0gICAgNTI1LCAxNTg4LCAxNTgyLCA1MjUsIDE1ODgsIDE2MDUsIDUyNSwgMTU4NywgMTYwNywgNTI1LCAxNTg4LCAxNjA3LCA1MjUsIAotICAgIDE1OTEsIDE2MDUsIDUyNiwgMTU4NywgMTU4MCwgNTI2LCAxNTg3LCAxNTgxLCA1MjYsIDE1ODcsIDE1ODIsIDUyNiwgMTU4OCwgCi0gICAgMTU4MCwgNTI2LCAxNTg4LCAxNTgxLCA1MjYsIDE1ODgsIDE1ODIsIDUyNiwgMTU5MSwgMTYwNSwgNTI2LCAxNTkyLCAxNjA1LCAKLSAgICA1MjQsIDE1NzUsIDE2MTEsIDUyMywgMTU3NSwgMTYxMSwgNzgxLCAxNTc4LCAxNTgwLCAxNjA1LCA3ODAsIDE1NzgsIDE1ODEsIAotICAgIDE1ODAsIDc4MSwgMTU3OCwgMTU4MSwgMTU4MCwgNzgxLCAxNTc4LCAxNTgxLCAxNjA1LCA3ODEsIDE1NzgsIDE1ODIsIAotICAgIDE2MDUsIDc4MSwgMTU3OCwgMTYwNSwgMTU4MCwgNzgxLCAxNTc4LCAxNjA1LCAxNTgxLCA3ODEsIDE1NzgsIDE2MDUsIAotICAgIDE1ODIsIDc4MCwgMTU4MCwgMTYwNSwgMTU4MSwgNzgxLCAxNTgwLCAxNjA1LCAxNTgxLCA3ODAsIDE1ODEsIDE2MDUsIAotICAgIDE2MTAsIDc4MCwgMTU4MSwgMTYwNSwgMTYwOSwgNzgxLCAxNTg3LCAxNTgxLCAxNTgwLCA3ODEsIDE1ODcsIDE1ODAsIAotICAgIDE1ODEsIDc4MCwgMTU4NywgMTU4MCwgMTYwOSwgNzgwLCAxNTg3LCAxNjA1LCAxNTgxLCA3ODEsIDE1ODcsIDE2MDUsIAotICAgIDE1ODEsIDc4MSwgMTU4NywgMTYwNSwgMTU4MCwgNzgwLCAxNTg3LCAxNjA1LCAxNjA1LCA3ODEsIDE1ODcsIDE2MDUsIAotICAgIDE2MDUsIDc4MCwgMTU4OSwgMTU4MSwgMTU4MSwgNzgxLCAxNTg5LCAxNTgxLCAxNTgxLCA3ODAsIDE1ODksIDE2MDUsIAotICAgIDE2MDUsIDc4MCwgMTU4OCwgMTU4MSwgMTYwNSwgNzgxLCAxNTg4LCAxNTgxLCAxNjA1LCA3ODAsIDE1ODgsIDE1ODAsIAotICAgIDE2MTAsIDc4MCwgMTU4OCwgMTYwNSwgMTU4MiwgNzgxLCAxNTg4LCAxNjA1LCAxNTgyLCA3ODAsIDE1ODgsIDE2MDUsIAotICAgIDE2MDUsIDc4MSwgMTU4OCwgMTYwNSwgMTYwNSwgNzgwLCAxNTkwLCAxNTgxLCAxNjA5LCA3ODAsIDE1OTAsIDE1ODIsIAotICAgIDE2MDUsIDc4MSwgMTU5MCwgMTU4MiwgMTYwNSwgNzgwLCAxNTkxLCAxNjA1LCAxNTgxLCA3ODEsIDE1OTEsIDE2MDUsIAotICAgIDE1ODEsIDc4MSwgMTU5MSwgMTYwNSwgMTYwNSwgNzgwLCAxNTkxLCAxNjA1LCAxNjEwLCA3ODAsIDE1OTMsIDE1ODAsIAotICAgIDE2MDUsIDc4MCwgMTU5MywgMTYwNSwgMTYwNSwgNzgxLCAxNTkzLCAxNjA1LCAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIAotICAgIDE2MDksIDc4MCwgMTU5NCwgMTYwNSwgMTYwNSwgNzgwLCAxNTk0LCAxNjA1LCAxNjEwLCA3ODAsIDE1OTQsIDE2MDUsIAotICAgIDE2MDksIDc4MCwgMTYwMSwgMTU4MiwgMTYwNSwgNzgxLCAxNjAxLCAxNTgyLCAxNjA1LCA3ODAsIDE2MDIsIDE2MDUsIAotICAgIDE1ODEsIDc4MCwgMTYwMiwgMTYwNSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgxLCAxNjA1LCA3ODAsIDE2MDQsIDE1ODEsIAotICAgIDE2MTAsIDc4MCwgMTYwNCwgMTU4MSwgMTYwOSwgNzgxLCAxNjA0LCAxNTgwLCAxNTgwLCA3ODAsIDE2MDQsIDE1ODAsIAotICAgIDE1ODAsIDc4MCwgMTYwNCwgMTU4MiwgMTYwNSwgNzgxLCAxNjA0LCAxNTgyLCAxNjA1LCA3ODAsIDE2MDQsIDE2MDUsIAotICAgIDE1ODEsIDc4MSwgMTYwNCwgMTYwNSwgMTU4MSwgNzgxLCAxNjA1LCAxNTgxLCAxNTgwLCA3ODEsIDE2MDUsIDE1ODEsIAotICAgIDE2MDUsIDc4MCwgMTYwNSwgMTU4MSwgMTYxMCwgNzgxLCAxNjA1LCAxNTgwLCAxNTgxLCA3ODEsIDE2MDUsIDE1ODAsIAotICAgIDE2MDUsIDc4MSwgMTYwNSwgMTU4MiwgMTU4MCwgNzgxLCAxNjA1LCAxNTgyLCAxNjA1LCA3ODEsIDE2MDUsIDE1ODAsIAotICAgIDE1ODIsIDc4MSwgMTYwNywgMTYwNSwgMTU4MCwgNzgxLCAxNjA3LCAxNjA1LCAxNjA1LCA3ODEsIDE2MDYsIDE1ODEsIAotICAgIDE2MDUsIDc4MCwgMTYwNiwgMTU4MSwgMTYwOSwgNzgwLCAxNjA2LCAxNTgwLCAxNjA1LCA3ODEsIDE2MDYsIDE1ODAsIAotICAgIDE2MDUsIDc4MCwgMTYwNiwgMTU4MCwgMTYwOSwgNzgwLCAxNjA2LCAxNjA1LCAxNjEwLCA3ODAsIDE2MDYsIDE2MDUsIAotICAgIDE2MDksIDc4MCwgMTYxMCwgMTYwNSwgMTYwNSwgNzgxLCAxNjEwLCAxNjA1LCAxNjA1LCA3ODAsIDE1NzYsIDE1ODIsIAotICAgIDE2MTAsIDc4MCwgMTU3OCwgMTU4MCwgMTYxMCwgNzgwLCAxNTc4LCAxNTgwLCAxNjA5LCA3ODAsIDE1NzgsIDE1ODIsIAotICAgIDE2MTAsIDc4MCwgMTU3OCwgMTU4MiwgMTYwOSwgNzgwLCAxNTc4LCAxNjA1LCAxNjEwLCA3ODAsIDE1NzgsIDE2MDUsIAotICAgIDE2MDksIDc4MCwgMTU4MCwgMTYwNSwgMTYxMCwgNzgwLCAxNTgwLCAxNTgxLCAxNjA5LCA3ODAsIDE1ODAsIDE2MDUsIAotICAgIDE2MDksIDc4MCwgMTU4NywgMTU4MiwgMTYwOSwgNzgwLCAxNTg5LCAxNTgxLCAxNjEwLCA3ODAsIDE1ODgsIDE1ODEsIAotICAgIDE2MTAsIDc4MCwgMTU5MCwgMTU4MSwgMTYxMCwgNzgwLCAxNjA0LCAxNTgwLCAxNjEwLCA3ODAsIDE2MDQsIDE2MDUsIAotICAgIDE2MTAsIDc4MCwgMTYxMCwgMTU4MSwgMTYxMCwgNzgwLCAxNjEwLCAxNTgwLCAxNjEwLCA3ODAsIDE2MTAsIDE2MDUsIAotICAgIDE2MTAsIDc4MCwgMTYwNSwgMTYwNSwgMTYxMCwgNzgwLCAxNjAyLCAxNjA1LCAxNjEwLCA3ODAsIDE2MDYsIDE1ODEsIAotICAgIDE2MTAsIDc4MSwgMTYwMiwgMTYwNSwgMTU4MSwgNzgxLCAxNjA0LCAxNTgxLCAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIAotICAgIDE2MTAsIDc4MCwgMTYwMywgMTYwNSwgMTYxMCwgNzgxLCAxNjA2LCAxNTgwLCAxNTgxLCA3ODAsIDE2MDUsIDE1ODIsIAotICAgIDE2MTAsIDc4MSwgMTYwNCwgMTU4MCwgMTYwNSwgNzgwLCAxNjAzLCAxNjA1LCAxNjA1LCA3ODAsIDE2MDQsIDE1ODAsIAotICAgIDE2MDUsIDc4MCwgMTYwNiwgMTU4MCwgMTU4MSwgNzgwLCAxNTgwLCAxNTgxLCAxNjEwLCA3ODAsIDE1ODEsIDE1ODAsIAotICAgIDE2MTAsIDc4MCwgMTYwNSwgMTU4MCwgMTYxMCwgNzgwLCAxNjAxLCAxNjA1LCAxNjEwLCA3ODAsIDE1NzYsIDE1ODEsIAotICAgIDE2MTAsIDc4MSwgMTYwMywgMTYwNSwgMTYwNSwgNzgxLCAxNTkzLCAxNTgwLCAxNjA1LCA3ODEsIDE1ODksIDE2MDUsIAotICAgIDE2MDUsIDc4MCwgMTU4NywgMTU4MiwgMTYxMCwgNzgwLCAxNjA2LCAxNTgwLCAxNjEwLCA3NzksIDE1ODksIDE2MDQsIAotICAgIDE3NDYsIDc3OSwgMTYwMiwgMTYwNCwgMTc0NiwgMTAzNSwgMTU3NSwgMTYwNCwgMTYwNCwgMTYwNywgMTAzNSwgMTU3NSwgCi0gICAgMTYwMywgMTU3NiwgMTU4NSwgMTAzNSwgMTYwNSwgMTU4MSwgMTYwNSwgMTU4MywgMTAzNSwgMTU4OSwgMTYwNCwgMTU5MywgCi0gICAgMTYwNSwgMTAzNSwgMTU4NSwgMTU4NywgMTYwOCwgMTYwNCwgMTAzNSwgMTU5MywgMTYwNCwgMTYxMCwgMTYwNywgMTAzNSwgCi0gICAgMTYwOCwgMTU4NywgMTYwNCwgMTYwNSwgNzc5LCAxNTg5LCAxNjA0LCAxNjA5LCA0NjE5LCAxNTg5LCAxNjA0LCAxNjA5LCAKLSAgICAzMiwgMTU3NSwgMTYwNCwgMTYwNCwgMTYwNywgMzIsIDE1OTMsIDE2MDQsIDE2MTAsIDE2MDcsIDMyLCAxNjA4LCAxNTg3LCAKLSAgICAxNjA0LCAxNjA1LCAyMDU5LCAxNTgwLCAxNjA0LCAzMiwgMTU4MCwgMTYwNCwgMTU3NSwgMTYwNCwgMTYwNywgMTAzNSwgCi0gICAgMTU4NSwgMTc0MCwgMTU3NSwgMTYwNCwgMjY1LCA0NCwgMjY1LCAxMjI4OSwgMjY1LCAxMjI5MCwgMjY1LCA1OCwgMjY1LCAKLSAgICA1OSwgMjY1LCAzMywgMjY1LCA2MywgMjY1LCAxMjMxMCwgMjY1LCAxMjMxMSwgMjY1LCA4MjMwLCAyNjUsIDgyMjksIDI2NSwgCi0gICAgODIxMiwgMjY1LCA4MjExLCAyNjUsIDk1LCAyNjUsIDk1LCAyNjUsIDQwLCAyNjUsIDQxLCAyNjUsIDEyMywgMjY1LCAxMjUsIAotICAgIDI2NSwgMTIzMDgsIDI2NSwgMTIzMDksIDI2NSwgMTIzMDQsIDI2NSwgMTIzMDUsIDI2NSwgMTIyOTgsIDI2NSwgMTIyOTksIAotICAgIDI2NSwgMTIyOTYsIDI2NSwgMTIyOTcsIDI2NSwgMTIzMDAsIDI2NSwgMTIzMDEsIDI2NSwgMTIzMDIsIDI2NSwgMTIzMDMsIAotICAgIDI2NSwgOTEsIDI2NSwgOTMsIDI1OCwgODI1NCwgMjU4LCA4MjU0LCAyNTgsIDgyNTQsIDI1OCwgODI1NCwgMjU4LCA5NSwgCi0gICAgMjU4LCA5NSwgMjU4LCA5NSwgMjcxLCA0NCwgMjcxLCAxMjI4OSwgMjcxLCA0NiwgMjcxLCA1OSwgMjcxLCA1OCwgMjcxLCAKLSAgICA2MywgMjcxLCAzMywgMjcxLCA4MjEyLCAyNzEsIDQwLCAyNzEsIDQxLCAyNzEsIDEyMywgMjcxLCAxMjUsIDI3MSwgMTIzMDgsIAotICAgIDI3MSwgMTIzMDksIDI3MSwgMzUsIDI3MSwgMzgsIDI3MSwgNDIsIDI3MSwgNDMsIDI3MSwgNDUsIDI3MSwgNjAsIDI3MSwgCi0gICAgNjIsIDI3MSwgNjEsIDI3MSwgOTIsIDI3MSwgMzYsIDI3MSwgMzcsIDI3MSwgNjQsIDUyMywgMzIsIDE2MTEsIDUyNiwgCi0gICAgMTYwMCwgMTYxMSwgNTIzLCAzMiwgMTYxMiwgNTIzLCAzMiwgMTYxMywgNTIzLCAzMiwgMTYxNCwgNTI2LCAxNjAwLCAxNjE0LCAKLSAgICA1MjMsIDMyLCAxNjE1LCA1MjYsIDE2MDAsIDE2MTUsIDUyMywgMzIsIDE2MTYsIDUyNiwgMTYwMCwgMTYxNiwgNTIzLCAzMiwgCi0gICAgMTYxNywgNTI2LCAxNjAwLCAxNjE3LCA1MjMsIDMyLCAxNjE4LCA1MjYsIDE2MDAsIDE2MTgsIDI2NywgMTU2OSwgMjY3LCAKLSAgICAxNTcwLCAyNjgsIDE1NzAsIDI2NywgMTU3MSwgMjY4LCAxNTcxLCAyNjcsIDE1NzIsIDI2OCwgMTU3MiwgMjY3LCAxNTczLCAKLSAgICAyNjgsIDE1NzMsIDI2NywgMTU3NCwgMjY4LCAxNTc0LCAyNjksIDE1NzQsIDI3MCwgMTU3NCwgMjY3LCAxNTc1LCAyNjgsIAotICAgIDE1NzUsIDI2NywgMTU3NiwgMjY4LCAxNTc2LCAyNjksIDE1NzYsIDI3MCwgMTU3NiwgMjY3LCAxNTc3LCAyNjgsIDE1NzcsIAotICAgIDI2NywgMTU3OCwgMjY4LCAxNTc4LCAyNjksIDE1NzgsIDI3MCwgMTU3OCwgMjY3LCAxNTc5LCAyNjgsIDE1NzksIDI2OSwgCi0gICAgMTU3OSwgMjcwLCAxNTc5LCAyNjcsIDE1ODAsIDI2OCwgMTU4MCwgMjY5LCAxNTgwLCAyNzAsIDE1ODAsIDI2NywgMTU4MSwgCi0gICAgMjY4LCAxNTgxLCAyNjksIDE1ODEsIDI3MCwgMTU4MSwgMjY3LCAxNTgyLCAyNjgsIDE1ODIsIDI2OSwgMTU4MiwgMjcwLCAKLSAgICAxNTgyLCAyNjcsIDE1ODMsIDI2OCwgMTU4MywgMjY3LCAxNTg0LCAyNjgsIDE1ODQsIDI2NywgMTU4NSwgMjY4LCAxNTg1LCAKLSAgICAyNjcsIDE1ODYsIDI2OCwgMTU4NiwgMjY3LCAxNTg3LCAyNjgsIDE1ODcsIDI2OSwgMTU4NywgMjcwLCAxNTg3LCAyNjcsIAotICAgIDE1ODgsIDI2OCwgMTU4OCwgMjY5LCAxNTg4LCAyNzAsIDE1ODgsIDI2NywgMTU4OSwgMjY4LCAxNTg5LCAyNjksIDE1ODksIAotICAgIDI3MCwgMTU4OSwgMjY3LCAxNTkwLCAyNjgsIDE1OTAsIDI2OSwgMTU5MCwgMjcwLCAxNTkwLCAyNjcsIDE1OTEsIDI2OCwgCi0gICAgMTU5MSwgMjY5LCAxNTkxLCAyNzAsIDE1OTEsIDI2NywgMTU5MiwgMjY4LCAxNTkyLCAyNjksIDE1OTIsIDI3MCwgMTU5MiwgCi0gICAgMjY3LCAxNTkzLCAyNjgsIDE1OTMsIDI2OSwgMTU5MywgMjcwLCAxNTkzLCAyNjcsIDE1OTQsIDI2OCwgMTU5NCwgMjY5LCAKLSAgICAxNTk0LCAyNzAsIDE1OTQsIDI2NywgMTYwMSwgMjY4LCAxNjAxLCAyNjksIDE2MDEsIDI3MCwgMTYwMSwgMjY3LCAxNjAyLCAKLSAgICAyNjgsIDE2MDIsIDI2OSwgMTYwMiwgMjcwLCAxNjAyLCAyNjcsIDE2MDMsIDI2OCwgMTYwMywgMjY5LCAxNjAzLCAyNzAsIAotICAgIDE2MDMsIDI2NywgMTYwNCwgMjY4LCAxNjA0LCAyNjksIDE2MDQsIDI3MCwgMTYwNCwgMjY3LCAxNjA1LCAyNjgsIDE2MDUsIAotICAgIDI2OSwgMTYwNSwgMjcwLCAxNjA1LCAyNjcsIDE2MDYsIDI2OCwgMTYwNiwgMjY5LCAxNjA2LCAyNzAsIDE2MDYsIDI2NywgCi0gICAgMTYwNywgMjY4LCAxNjA3LCAyNjksIDE2MDcsIDI3MCwgMTYwNywgMjY3LCAxNjA4LCAyNjgsIDE2MDgsIDI2NywgMTYwOSwgCi0gICAgMjY4LCAxNjA5LCAyNjcsIDE2MTAsIDI2OCwgMTYxMCwgMjY5LCAxNjEwLCAyNzAsIDE2MTAsIDUyMywgMTYwNCwgMTU3MCwgCi0gICAgNTI0LCAxNjA0LCAxNTcwLCA1MjMsIDE2MDQsIDE1NzEsIDUyNCwgMTYwNCwgMTU3MSwgNTIzLCAxNjA0LCAxNTczLCA1MjQsIAotICAgIDE2MDQsIDE1NzMsIDUyMywgMTYwNCwgMTU3NSwgNTI0LCAxNjA0LCAxNTc1LCAyNjQsIDMzLCAyNjQsIDM0LCAyNjQsIDM1LCAKLSAgICAyNjQsIDM2LCAyNjQsIDM3LCAyNjQsIDM4LCAyNjQsIDM5LCAyNjQsIDQwLCAyNjQsIDQxLCAyNjQsIDQyLCAyNjQsIDQzLCAKLSAgICAyNjQsIDQ0LCAyNjQsIDQ1LCAyNjQsIDQ2LCAyNjQsIDQ3LCAyNjQsIDQ4LCAyNjQsIDQ5LCAyNjQsIDUwLCAyNjQsIDUxLCAKLSAgICAyNjQsIDUyLCAyNjQsIDUzLCAyNjQsIDU0LCAyNjQsIDU1LCAyNjQsIDU2LCAyNjQsIDU3LCAyNjQsIDU4LCAyNjQsIDU5LCAKLSAgICAyNjQsIDYwLCAyNjQsIDYxLCAyNjQsIDYyLCAyNjQsIDYzLCAyNjQsIDY0LCAyNjQsIDY1LCAyNjQsIDY2LCAyNjQsIDY3LCAKLSAgICAyNjQsIDY4LCAyNjQsIDY5LCAyNjQsIDcwLCAyNjQsIDcxLCAyNjQsIDcyLCAyNjQsIDczLCAyNjQsIDc0LCAyNjQsIDc1LCAKLSAgICAyNjQsIDc2LCAyNjQsIDc3LCAyNjQsIDc4LCAyNjQsIDc5LCAyNjQsIDgwLCAyNjQsIDgxLCAyNjQsIDgyLCAyNjQsIDgzLCAKLSAgICAyNjQsIDg0LCAyNjQsIDg1LCAyNjQsIDg2LCAyNjQsIDg3LCAyNjQsIDg4LCAyNjQsIDg5LCAyNjQsIDkwLCAyNjQsIDkxLCAKLSAgICAyNjQsIDkyLCAyNjQsIDkzLCAyNjQsIDk0LCAyNjQsIDk1LCAyNjQsIDk2LCAyNjQsIDk3LCAyNjQsIDk4LCAyNjQsIDk5LCAKLSAgICAyNjQsIDEwMCwgMjY0LCAxMDEsIDI2NCwgMTAyLCAyNjQsIDEwMywgMjY0LCAxMDQsIDI2NCwgMTA1LCAyNjQsIDEwNiwgCi0gICAgMjY0LCAxMDcsIDI2NCwgMTA4LCAyNjQsIDEwOSwgMjY0LCAxMTAsIDI2NCwgMTExLCAyNjQsIDExMiwgMjY0LCAxMTMsIAotICAgIDI2NCwgMTE0LCAyNjQsIDExNSwgMjY0LCAxMTYsIDI2NCwgMTE3LCAyNjQsIDExOCwgMjY0LCAxMTksIDI2NCwgMTIwLCAKLSAgICAyNjQsIDEyMSwgMjY0LCAxMjIsIDI2NCwgMTIzLCAyNjQsIDEyNCwgMjY0LCAxMjUsIDI2NCwgMTI2LCAyNjQsIDEwNjI5LCAKLSAgICAyNjQsIDEwNjMwLCAyNzIsIDEyMjkwLCAyNzIsIDEyMzAwLCAyNzIsIDEyMzAxLCAyNzIsIDEyMjg5LCAyNzIsIDEyNTM5LCAKLSAgICAyNzIsIDEyNTMwLCAyNzIsIDEyNDQ5LCAyNzIsIDEyNDUxLCAyNzIsIDEyNDUzLCAyNzIsIDEyNDU1LCAyNzIsIDEyNDU3LCAKLSAgICAyNzIsIDEyNTE1LCAyNzIsIDEyNTE3LCAyNzIsIDEyNTE5LCAyNzIsIDEyNDgzLCAyNzIsIDEyNTQwLCAyNzIsIDEyNDUwLCAKLSAgICAyNzIsIDEyNDUyLCAyNzIsIDEyNDU0LCAyNzIsIDEyNDU2LCAyNzIsIDEyNDU4LCAyNzIsIDEyNDU5LCAyNzIsIDEyNDYxLCAKLSAgICAyNzIsIDEyNDYzLCAyNzIsIDEyNDY1LCAyNzIsIDEyNDY3LCAyNzIsIDEyNDY5LCAyNzIsIDEyNDcxLCAyNzIsIDEyNDczLCAKLSAgICAyNzIsIDEyNDc1LCAyNzIsIDEyNDc3LCAyNzIsIDEyNDc5LCAyNzIsIDEyNDgxLCAyNzIsIDEyNDg0LCAyNzIsIDEyNDg2LCAKLSAgICAyNzIsIDEyNDg4LCAyNzIsIDEyNDkwLCAyNzIsIDEyNDkxLCAyNzIsIDEyNDkyLCAyNzIsIDEyNDkzLCAyNzIsIDEyNDk0LCAKLSAgICAyNzIsIDEyNDk1LCAyNzIsIDEyNDk4LCAyNzIsIDEyNTAxLCAyNzIsIDEyNTA0LCAyNzIsIDEyNTA3LCAyNzIsIDEyNTEwLCAKLSAgICAyNzIsIDEyNTExLCAyNzIsIDEyNTEyLCAyNzIsIDEyNTEzLCAyNzIsIDEyNTE0LCAyNzIsIDEyNTE2LCAyNzIsIDEyNTE4LCAKLSAgICAyNzIsIDEyNTIwLCAyNzIsIDEyNTIxLCAyNzIsIDEyNTIyLCAyNzIsIDEyNTIzLCAyNzIsIDEyNTI0LCAyNzIsIDEyNTI1LCAKLSAgICAyNzIsIDEyNTI3LCAyNzIsIDEyNTMxLCAyNzIsIDEyNDQxLCAyNzIsIDEyNDQyLCAyNzIsIDEyNjQ0LCAyNzIsIDEyNTkzLCAKLSAgICAyNzIsIDEyNTk0LCAyNzIsIDEyNTk1LCAyNzIsIDEyNTk2LCAyNzIsIDEyNTk3LCAyNzIsIDEyNTk4LCAyNzIsIDEyNTk5LCAKLSAgICAyNzIsIDEyNjAwLCAyNzIsIDEyNjAxLCAyNzIsIDEyNjAyLCAyNzIsIDEyNjAzLCAyNzIsIDEyNjA0LCAyNzIsIDEyNjA1LCAKLSAgICAyNzIsIDEyNjA2LCAyNzIsIDEyNjA3LCAyNzIsIDEyNjA4LCAyNzIsIDEyNjA5LCAyNzIsIDEyNjEwLCAyNzIsIDEyNjExLCAKLSAgICAyNzIsIDEyNjEyLCAyNzIsIDEyNjEzLCAyNzIsIDEyNjE0LCAyNzIsIDEyNjE1LCAyNzIsIDEyNjE2LCAyNzIsIDEyNjE3LCAKLSAgICAyNzIsIDEyNjE4LCAyNzIsIDEyNjE5LCAyNzIsIDEyNjIwLCAyNzIsIDEyNjIxLCAyNzIsIDEyNjIyLCAyNzIsIDEyNjIzLCAKLSAgICAyNzIsIDEyNjI0LCAyNzIsIDEyNjI1LCAyNzIsIDEyNjI2LCAyNzIsIDEyNjI3LCAyNzIsIDEyNjI4LCAyNzIsIDEyNjI5LCAKLSAgICAyNzIsIDEyNjMwLCAyNzIsIDEyNjMxLCAyNzIsIDEyNjMyLCAyNzIsIDEyNjMzLCAyNzIsIDEyNjM0LCAyNzIsIDEyNjM1LCAKLSAgICAyNzIsIDEyNjM2LCAyNzIsIDEyNjM3LCAyNzIsIDEyNjM4LCAyNzIsIDEyNjM5LCAyNzIsIDEyNjQwLCAyNzIsIDEyNjQxLCAKLSAgICAyNzIsIDEyNjQyLCAyNzIsIDEyNjQzLCAyNjQsIDE2MiwgMjY0LCAxNjMsIDI2NCwgMTcyLCAyNjQsIDE3NSwgMjY0LCAxNjYsIAotICAgIDI2NCwgMTY1LCAyNjQsIDgzNjEsIDI3MiwgOTQ3NCwgMjcyLCA4NTkyLCAyNzIsIDg1OTMsIDI3MiwgODU5NCwgMjcyLCAKLSAgICA4NTk1LCAyNzIsIDk2MzIsIDI3MiwgOTY3NSwgNTEyLCA2OTc4NSwgNjk4MTgsIDUxMiwgNjk3ODcsIDY5ODE4LCA1MTIsIAotICAgIDY5Nzk3LCA2OTgxOCwgNTEyLCA2OTkzNywgNjk5MjcsIDUxMiwgNjk5MzgsIDY5OTI3LCA1MTIsIDExOTEyNywgMTE5MTQxLCAKLSAgICA1MTIsIDExOTEyOCwgMTE5MTQxLCA1MTIsIDExOTEzNSwgMTE5MTUwLCA1MTIsIDExOTEzNSwgMTE5MTUxLCA1MTIsIAotICAgIDExOTEzNSwgMTE5MTUyLCA1MTIsIDExOTEzNSwgMTE5MTUzLCA1MTIsIDExOTEzNSwgMTE5MTU0LCA1MTIsIDExOTIyNSwgCi0gICAgMTE5MTQxLCA1MTIsIDExOTIyNiwgMTE5MTQxLCA1MTIsIDExOTIyNywgMTE5MTUwLCA1MTIsIDExOTIyOCwgMTE5MTUwLCAKLSAgICA1MTIsIDExOTIyNywgMTE5MTUxLCA1MTIsIDExOTIyOCwgMTE5MTUxLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIAotICAgIDY4LCAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIAotICAgIDc2LCAyNjIsIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIAotICAgIDg0LCAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIAotICAgIDk4LCAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDQsIDI2MiwgMTA1LCAKLSAgICAyNjIsIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTExLCAyNjIsIDExMiwgCi0gICAgMjYyLCAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAxMTksIAotICAgIDI2MiwgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgNjgsIDI2MiwgCi0gICAgNjksIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzIsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgCi0gICAgNzcsIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgCi0gICAgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgCi0gICAgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAKLSAgICAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIDExMSwgMjYyLCAxMTIsIDI2MiwgMTEzLCAyNjIsIDExNCwgCi0gICAgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAyNjIsIDEyMCwgMjYyLCAxMjEsIAotICAgIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAKLSAgICAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAyNjIsIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAKLSAgICAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAKLSAgICAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIAotICAgIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDQsIDI2MiwgMTA1LCAyNjIsIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAKKyAgICAyNjA4NSwgNzc4LCAxMDMsIDk3LCAxMDgsIDI1OSwgMTA5OCwgMjU5LCAxMTAwLCAyNTksIDQyODYzLCAyNTksIDI5NCwgCisgICAgMjU5LCAzMzksIDI1OSwgNDI3OTEsIDI1OSwgNDM4MzEsIDI1OSwgNjE5LCAyNTksIDQzODU4LCAyNTYsIDM1OTEyLCAyNTYsIAorICAgIDI2MzU2LCAyNTYsIDM2NTU0LCAyNTYsIDM2MDQwLCAyNTYsIDI4MzY5LCAyNTYsIDIwMDE4LCAyNTYsIDIxNDc3LCAyNTYsIAorICAgIDQwODYwLCAyNTYsIDQwODYwLCAyNTYsIDIyODY1LCAyNTYsIDM3MzI5LCAyNTYsIDIxODk1LCAyNTYsIDIyODU2LCAyNTYsIAorICAgIDI1MDc4LCAyNTYsIDMwMzEzLCAyNTYsIDMyNjQ1LCAyNTYsIDM0MzY3LCAyNTYsIDM0NzQ2LCAyNTYsIDM1MDY0LCAyNTYsIAorICAgIDM3MDA3LCAyNTYsIDI3MTM4LCAyNTYsIDI3OTMxLCAyNTYsIDI4ODg5LCAyNTYsIDI5NjYyLCAyNTYsIDMzODUzLCAyNTYsIAorICAgIDM3MjI2LCAyNTYsIDM5NDA5LCAyNTYsIDIwMDk4LCAyNTYsIDIxMzY1LCAyNTYsIDI3Mzk2LCAyNTYsIDI5MjExLCAyNTYsIAorICAgIDM0MzQ5LCAyNTYsIDQwNDc4LCAyNTYsIDIzODg4LCAyNTYsIDI4NjUxLCAyNTYsIDM0MjUzLCAyNTYsIDM1MTcyLCAyNTYsIAorICAgIDI1Mjg5LCAyNTYsIDMzMjQwLCAyNTYsIDM0ODQ3LCAyNTYsIDI0MjY2LCAyNTYsIDI2MzkxLCAyNTYsIDI4MDEwLCAyNTYsIAorICAgIDI5NDM2LCAyNTYsIDM3MDcwLCAyNTYsIDIwMzU4LCAyNTYsIDIwOTE5LCAyNTYsIDIxMjE0LCAyNTYsIDI1Nzk2LCAyNTYsIAorICAgIDI3MzQ3LCAyNTYsIDI5MjAwLCAyNTYsIDMwNDM5LCAyNTYsIDMyNzY5LCAyNTYsIDM0MzEwLCAyNTYsIDM0Mzk2LCAyNTYsIAorICAgIDM2MzM1LCAyNTYsIDM4NzA2LCAyNTYsIDM5NzkxLCAyNTYsIDQwNDQyLCAyNTYsIDMwODYwLCAyNTYsIDMxMTAzLCAyNTYsIAorICAgIDMyMTYwLCAyNTYsIDMzNzM3LCAyNTYsIDM3NjM2LCAyNTYsIDQwNTc1LCAyNTYsIDM1NTQyLCAyNTYsIDIyNzUxLCAyNTYsIAorICAgIDI0MzI0LCAyNTYsIDMxODQwLCAyNTYsIDMyODk0LCAyNTYsIDI5MjgyLCAyNTYsIDMwOTIyLCAyNTYsIDM2MDM0LCAyNTYsIAorICAgIDM4NjQ3LCAyNTYsIDIyNzQ0LCAyNTYsIDIzNjUwLCAyNTYsIDI3MTU1LCAyNTYsIDI4MTIyLCAyNTYsIDI4NDMxLCAyNTYsIAorICAgIDMyMDQ3LCAyNTYsIDMyMzExLCAyNTYsIDM4NDc1LCAyNTYsIDIxMjAyLCAyNTYsIDMyOTA3LCAyNTYsIDIwOTU2LCAyNTYsIAorICAgIDIwOTQwLCAyNTYsIDMxMjYwLCAyNTYsIDMyMTkwLCAyNTYsIDMzNzc3LCAyNTYsIDM4NTE3LCAyNTYsIDM1NzEyLCAyNTYsIAorICAgIDI1Mjk1LCAyNTYsIDI3MTM4LCAyNTYsIDM1NTgyLCAyNTYsIDIwMDI1LCAyNTYsIDIzNTI3LCAyNTYsIDI0NTk0LCAyNTYsIAorICAgIDI5NTc1LCAyNTYsIDMwMDY0LCAyNTYsIDIxMjcxLCAyNTYsIDMwOTcxLCAyNTYsIDIwNDE1LCAyNTYsIDI0NDg5LCAyNTYsIAorICAgIDE5OTgxLCAyNTYsIDI3ODUyLCAyNTYsIDI1OTc2LCAyNTYsIDMyMDM0LCAyNTYsIDIxNDQzLCAyNTYsIDIyNjIyLCAyNTYsIAorICAgIDMwNDY1LCAyNTYsIDMzODY1LCAyNTYsIDM1NDk4LCAyNTYsIDI3NTc4LCAyNTYsIDM2Nzg0LCAyNTYsIDI3Nzg0LCAyNTYsIAorICAgIDI1MzQyLCAyNTYsIDMzNTA5LCAyNTYsIDI1NTA0LCAyNTYsIDMwMDUzLCAyNTYsIDIwMTQyLCAyNTYsIDIwODQxLCAyNTYsIAorICAgIDIwOTM3LCAyNTYsIDI2NzUzLCAyNTYsIDMxOTc1LCAyNTYsIDMzMzkxLCAyNTYsIDM1NTM4LCAyNTYsIDM3MzI3LCAyNTYsIAorICAgIDIxMjM3LCAyNTYsIDIxNTcwLCAyNTYsIDIyODk5LCAyNTYsIDI0MzAwLCAyNTYsIDI2MDUzLCAyNTYsIDI4NjcwLCAyNTYsIAorICAgIDMxMDE4LCAyNTYsIDM4MzE3LCAyNTYsIDM5NTMwLCAyNTYsIDQwNTk5LCAyNTYsIDQwNjU0LCAyNTYsIDIxMTQ3LCAyNTYsIAorICAgIDI2MzEwLCAyNTYsIDI3NTExLCAyNTYsIDM2NzA2LCAyNTYsIDI0MTgwLCAyNTYsIDI0OTc2LCAyNTYsIDI1MDg4LCAyNTYsIAorICAgIDI1NzU0LCAyNTYsIDI4NDUxLCAyNTYsIDI5MDAxLCAyNTYsIDI5ODMzLCAyNTYsIDMxMTc4LCAyNTYsIDMyMjQ0LCAyNTYsIAorICAgIDMyODc5LCAyNTYsIDM2NjQ2LCAyNTYsIDM0MDMwLCAyNTYsIDM2ODk5LCAyNTYsIDM3NzA2LCAyNTYsIDIxMDE1LCAyNTYsIAorICAgIDIxMTU1LCAyNTYsIDIxNjkzLCAyNTYsIDI4ODcyLCAyNTYsIDM1MDEwLCAyNTYsIDM1NDk4LCAyNTYsIDI0MjY1LCAyNTYsIAorICAgIDI0NTY1LCAyNTYsIDI1NDY3LCAyNTYsIDI3NTY2LCAyNTYsIDMxODA2LCAyNTYsIDI5NTU3LCAyNTYsIDIwMTk2LCAyNTYsIAorICAgIDIyMjY1LCAyNTYsIDIzNTI3LCAyNTYsIDIzOTk0LCAyNTYsIDI0NjA0LCAyNTYsIDI5NjE4LCAyNTYsIDI5ODAxLCAyNTYsIAorICAgIDMyNjY2LCAyNTYsIDMyODM4LCAyNTYsIDM3NDI4LCAyNTYsIDM4NjQ2LCAyNTYsIDM4NzI4LCAyNTYsIDM4OTM2LCAyNTYsIAorICAgIDIwMzYzLCAyNTYsIDMxMTUwLCAyNTYsIDM3MzAwLCAyNTYsIDM4NTg0LCAyNTYsIDI0ODAxLCAyNTYsIDIwMTAyLCAyNTYsIAorICAgIDIwNjk4LCAyNTYsIDIzNTM0LCAyNTYsIDIzNjE1LCAyNTYsIDI2MDA5LCAyNTYsIDI3MTM4LCAyNTYsIDI5MTM0LCAyNTYsIAorICAgIDMwMjc0LCAyNTYsIDM0MDQ0LCAyNTYsIDM2OTg4LCAyNTYsIDQwODQ1LCAyNTYsIDI2MjQ4LCAyNTYsIDM4NDQ2LCAyNTYsIAorICAgIDIxMTI5LCAyNTYsIDI2NDkxLCAyNTYsIDI2NjExLCAyNTYsIDI3OTY5LCAyNTYsIDI4MzE2LCAyNTYsIDI5NzA1LCAyNTYsIAorICAgIDMwMDQxLCAyNTYsIDMwODI3LCAyNTYsIDMyMDE2LCAyNTYsIDM5MDA2LCAyNTYsIDIwODQ1LCAyNTYsIDI1MTM0LCAyNTYsIAorICAgIDM4NTIwLCAyNTYsIDIwNTIzLCAyNTYsIDIzODMzLCAyNTYsIDI4MTM4LCAyNTYsIDM2NjUwLCAyNTYsIDI0NDU5LCAyNTYsIAorICAgIDI0OTAwLCAyNTYsIDI2NjQ3LCAyNTYsIDI5NTc1LCAyNTYsIDM4NTM0LCAyNTYsIDIxMDMzLCAyNTYsIDIxNTE5LCAyNTYsIAorICAgIDIzNjUzLCAyNTYsIDI2MTMxLCAyNTYsIDI2NDQ2LCAyNTYsIDI2NzkyLCAyNTYsIDI3ODc3LCAyNTYsIDI5NzAyLCAyNTYsIAorICAgIDMwMTc4LCAyNTYsIDMyNjMzLCAyNTYsIDM1MDIzLCAyNTYsIDM1MDQxLCAyNTYsIDM3MzI0LCAyNTYsIDM4NjI2LCAyNTYsIAorICAgIDIxMzExLCAyNTYsIDI4MzQ2LCAyNTYsIDIxNTMzLCAyNTYsIDI5MTM2LCAyNTYsIDI5ODQ4LCAyNTYsIDM0Mjk4LCAyNTYsIAorICAgIDM4NTYzLCAyNTYsIDQwMDIzLCAyNTYsIDQwNjA3LCAyNTYsIDI2NTE5LCAyNTYsIDI4MTA3LCAyNTYsIDMzMjU2LCAyNTYsIAorICAgIDMxNDM1LCAyNTYsIDMxNTIwLCAyNTYsIDMxODkwLCAyNTYsIDI5Mzc2LCAyNTYsIDI4ODI1LCAyNTYsIDM1NjcyLCAyNTYsIAorICAgIDIwMTYwLCAyNTYsIDMzNTkwLCAyNTYsIDIxMDUwLCAyNTYsIDIwOTk5LCAyNTYsIDI0MjMwLCAyNTYsIDI1Mjk5LCAyNTYsIAorICAgIDMxOTU4LCAyNTYsIDIzNDI5LCAyNTYsIDI3OTM0LCAyNTYsIDI2MjkyLCAyNTYsIDM2NjY3LCAyNTYsIDM0ODkyLCAyNTYsIAorICAgIDM4NDc3LCAyNTYsIDM1MjExLCAyNTYsIDI0Mjc1LCAyNTYsIDIwODAwLCAyNTYsIDIxOTUyLCAyNTYsIDIyNjE4LCAyNTYsIAorICAgIDI2MjI4LCAyNTYsIDIwOTU4LCAyNTYsIDI5NDgyLCAyNTYsIDMwNDEwLCAyNTYsIDMxMDM2LCAyNTYsIDMxMDcwLCAyNTYsIAorICAgIDMxMDc3LCAyNTYsIDMxMTE5LCAyNTYsIDM4NzQyLCAyNTYsIDMxOTM0LCAyNTYsIDMyNzAxLCAyNTYsIDM0MzIyLCAyNTYsIAorICAgIDM1NTc2LCAyNTYsIDM2OTIwLCAyNTYsIDM3MTE3LCAyNTYsIDM5MTUxLCAyNTYsIDM5MTY0LCAyNTYsIDM5MjA4LCAyNTYsIAorICAgIDQwMzcyLCAyNTYsIDM3MDg2LCAyNTYsIDM4NTgzLCAyNTYsIDIwMzk4LCAyNTYsIDIwNzExLCAyNTYsIDIwODEzLCAyNTYsIAorICAgIDIxMTkzLCAyNTYsIDIxMjIwLCAyNTYsIDIxMzI5LCAyNTYsIDIxOTE3LCAyNTYsIDIyMDIyLCAyNTYsIDIyMTIwLCAyNTYsIAorICAgIDIyNTkyLCAyNTYsIDIyNjk2LCAyNTYsIDIzNjUyLCAyNTYsIDIzNjYyLCAyNTYsIDI0NzI0LCAyNTYsIDI0OTM2LCAyNTYsIAorICAgIDI0OTc0LCAyNTYsIDI1MDc0LCAyNTYsIDI1OTM1LCAyNTYsIDI2MDgyLCAyNTYsIDI2MjU3LCAyNTYsIDI2NzU3LCAyNTYsIAorICAgIDI4MDIzLCAyNTYsIDI4MTg2LCAyNTYsIDI4NDUwLCAyNTYsIDI5MDM4LCAyNTYsIDI5MjI3LCAyNTYsIDI5NzMwLCAyNTYsIAorICAgIDMwODY1LCAyNTYsIDMxMDM4LCAyNTYsIDMxMDQ5LCAyNTYsIDMxMDQ4LCAyNTYsIDMxMDU2LCAyNTYsIDMxMDYyLCAyNTYsIAorICAgIDMxMDY5LCAyNTYsIDMxMTE3LCAyNTYsIDMxMTE4LCAyNTYsIDMxMjk2LCAyNTYsIDMxMzYxLCAyNTYsIDMxNjgwLCAyNTYsIAorICAgIDMyMjQ0LCAyNTYsIDMyMjY1LCAyNTYsIDMyMzIxLCAyNTYsIDMyNjI2LCAyNTYsIDMyNzczLCAyNTYsIDMzMjYxLCAyNTYsIAorICAgIDMzNDAxLCAyNTYsIDMzNDAxLCAyNTYsIDMzODc5LCAyNTYsIDM1MDg4LCAyNTYsIDM1MjIyLCAyNTYsIDM1NTg1LCAyNTYsIAorICAgIDM1NjQxLCAyNTYsIDM2MDUxLCAyNTYsIDM2MTA0LCAyNTYsIDM2NzkwLCAyNTYsIDM2OTIwLCAyNTYsIDM4NjI3LCAyNTYsIAorICAgIDM4OTExLCAyNTYsIDM4OTcxLCAyNTYsIDI0NjkzLCAyNTYsIDE0ODIwNiwgMjU2LCAzMzMwNCwgMjU2LCAyMDAwNiwgMjU2LCAKKyAgICAyMDkxNywgMjU2LCAyMDg0MCwgMjU2LCAyMDM1MiwgMjU2LCAyMDgwNSwgMjU2LCAyMDg2NCwgMjU2LCAyMTE5MSwgMjU2LCAKKyAgICAyMTI0MiwgMjU2LCAyMTkxNywgMjU2LCAyMTg0NSwgMjU2LCAyMTkxMywgMjU2LCAyMTk4NiwgMjU2LCAyMjYxOCwgMjU2LCAKKyAgICAyMjcwNywgMjU2LCAyMjg1MiwgMjU2LCAyMjg2OCwgMjU2LCAyMzEzOCwgMjU2LCAyMzMzNiwgMjU2LCAyNDI3NCwgMjU2LCAKKyAgICAyNDI4MSwgMjU2LCAyNDQyNSwgMjU2LCAyNDQ5MywgMjU2LCAyNDc5MiwgMjU2LCAyNDkxMCwgMjU2LCAyNDg0MCwgMjU2LCAKKyAgICAyNDk3NCwgMjU2LCAyNDkyOCwgMjU2LCAyNTA3NCwgMjU2LCAyNTE0MCwgMjU2LCAyNTU0MCwgMjU2LCAyNTYyOCwgMjU2LCAKKyAgICAyNTY4MiwgMjU2LCAyNTk0MiwgMjU2LCAyNjIyOCwgMjU2LCAyNjM5MSwgMjU2LCAyNjM5NSwgMjU2LCAyNjQ1NCwgMjU2LCAKKyAgICAyNzUxMywgMjU2LCAyNzU3OCwgMjU2LCAyNzk2OSwgMjU2LCAyODM3OSwgMjU2LCAyODM2MywgMjU2LCAyODQ1MCwgMjU2LCAKKyAgICAyODcwMiwgMjU2LCAyOTAzOCwgMjU2LCAzMDYzMSwgMjU2LCAyOTIzNywgMjU2LCAyOTM1OSwgMjU2LCAyOTQ4MiwgMjU2LCAKKyAgICAyOTgwOSwgMjU2LCAyOTk1OCwgMjU2LCAzMDAxMSwgMjU2LCAzMDIzNywgMjU2LCAzMDIzOSwgMjU2LCAzMDQxMCwgMjU2LCAKKyAgICAzMDQyNywgMjU2LCAzMDQ1MiwgMjU2LCAzMDUzOCwgMjU2LCAzMDUyOCwgMjU2LCAzMDkyNCwgMjU2LCAzMTQwOSwgMjU2LCAKKyAgICAzMTY4MCwgMjU2LCAzMTg2NywgMjU2LCAzMjA5MSwgMjU2LCAzMjI0NCwgMjU2LCAzMjU3NCwgMjU2LCAzMjc3MywgMjU2LCAKKyAgICAzMzYxOCwgMjU2LCAzMzc3NSwgMjU2LCAzNDY4MSwgMjU2LCAzNTEzNywgMjU2LCAzNTIwNiwgMjU2LCAzNTIyMiwgMjU2LCAKKyAgICAzNTUxOSwgMjU2LCAzNTU3NiwgMjU2LCAzNTUzMSwgMjU2LCAzNTU4NSwgMjU2LCAzNTU4MiwgMjU2LCAzNTU2NSwgMjU2LCAKKyAgICAzNTY0MSwgMjU2LCAzNTcyMiwgMjU2LCAzNjEwNCwgMjU2LCAzNjY2NCwgMjU2LCAzNjk3OCwgMjU2LCAzNzI3MywgMjU2LCAKKyAgICAzNzQ5NCwgMjU2LCAzODUyNCwgMjU2LCAzODYyNywgMjU2LCAzODc0MiwgMjU2LCAzODg3NSwgMjU2LCAzODkxMSwgMjU2LCAKKyAgICAzODkyMywgMjU2LCAzODk3MSwgMjU2LCAzOTY5OCwgMjU2LCA0MDg2MCwgMjU2LCAxNDEzODYsIDI1NiwgMTQxMzgwLCAyNTYsIAorICAgIDE0NDM0MSwgMjU2LCAxNTI2MSwgMjU2LCAxNjQwOCwgMjU2LCAxNjQ0MSwgMjU2LCAxNTIxMzcsIDI1NiwgMTU0ODMyLCAKKyAgICAyNTYsIDE2MzUzOSwgMjU2LCA0MDc3MSwgMjU2LCA0MDg0NiwgNTE0LCAxMDIsIDEwMiwgNTE0LCAxMDIsIDEwNSwgNTE0LCAKKyAgICAxMDIsIDEwOCwgNzcwLCAxMDIsIDEwMiwgMTA1LCA3NzAsIDEwMiwgMTAyLCAxMDgsIDUxNCwgMzgzLCAxMTYsIDUxNCwgCisgICAgMTE1LCAxMTYsIDUxNCwgMTM5NiwgMTM5OCwgNTE0LCAxMzk2LCAxMzgxLCA1MTQsIDEzOTYsIDEzODcsIDUxNCwgMTQwNiwgCisgICAgMTM5OCwgNTE0LCAxMzk2LCAxMzg5LCA1MTIsIDE0OTcsIDE0NjAsIDUxMiwgMTUyMiwgMTQ2MywgMjYyLCAxNTA2LCAyNjIsIAorICAgIDE0ODgsIDI2MiwgMTQ5MSwgMjYyLCAxNDkyLCAyNjIsIDE0OTksIDI2MiwgMTUwMCwgMjYyLCAxNTAxLCAyNjIsIDE1MTIsIAorICAgIDI2MiwgMTUxNCwgMjYyLCA0MywgNTEyLCAxNTEzLCAxNDczLCA1MTIsIDE1MTMsIDE0NzQsIDUxMiwgNjQzMjksIDE0NzMsIAorICAgIDUxMiwgNjQzMjksIDE0NzQsIDUxMiwgMTQ4OCwgMTQ2MywgNTEyLCAxNDg4LCAxNDY0LCA1MTIsIDE0ODgsIDE0NjgsIDUxMiwgCisgICAgMTQ4OSwgMTQ2OCwgNTEyLCAxNDkwLCAxNDY4LCA1MTIsIDE0OTEsIDE0NjgsIDUxMiwgMTQ5MiwgMTQ2OCwgNTEyLCAxNDkzLCAKKyAgICAxNDY4LCA1MTIsIDE0OTQsIDE0NjgsIDUxMiwgMTQ5NiwgMTQ2OCwgNTEyLCAxNDk3LCAxNDY4LCA1MTIsIDE0OTgsIDE0NjgsIAorICAgIDUxMiwgMTQ5OSwgMTQ2OCwgNTEyLCAxNTAwLCAxNDY4LCA1MTIsIDE1MDIsIDE0NjgsIDUxMiwgMTUwNCwgMTQ2OCwgNTEyLCAKKyAgICAxNTA1LCAxNDY4LCA1MTIsIDE1MDcsIDE0NjgsIDUxMiwgMTUwOCwgMTQ2OCwgNTEyLCAxNTEwLCAxNDY4LCA1MTIsIDE1MTEsIAorICAgIDE0NjgsIDUxMiwgMTUxMiwgMTQ2OCwgNTEyLCAxNTEzLCAxNDY4LCA1MTIsIDE1MTQsIDE0NjgsIDUxMiwgMTQ5MywgMTQ2NSwgCisgICAgNTEyLCAxNDg5LCAxNDcxLCA1MTIsIDE0OTksIDE0NzEsIDUxMiwgMTUwOCwgMTQ3MSwgNTE0LCAxNDg4LCAxNTAwLCAyNjcsIAorICAgIDE2NDksIDI2OCwgMTY0OSwgMjY3LCAxNjU5LCAyNjgsIDE2NTksIDI2OSwgMTY1OSwgMjcwLCAxNjU5LCAyNjcsIDE2NjIsIAorICAgIDI2OCwgMTY2MiwgMjY5LCAxNjYyLCAyNzAsIDE2NjIsIDI2NywgMTY2NCwgMjY4LCAxNjY0LCAyNjksIDE2NjQsIDI3MCwgCisgICAgMTY2NCwgMjY3LCAxNjU4LCAyNjgsIDE2NTgsIDI2OSwgMTY1OCwgMjcwLCAxNjU4LCAyNjcsIDE2NjMsIDI2OCwgMTY2MywgCisgICAgMjY5LCAxNjYzLCAyNzAsIDE2NjMsIDI2NywgMTY1NywgMjY4LCAxNjU3LCAyNjksIDE2NTcsIDI3MCwgMTY1NywgMjY3LCAKKyAgICAxNzAwLCAyNjgsIDE3MDAsIDI2OSwgMTcwMCwgMjcwLCAxNzAwLCAyNjcsIDE3MDIsIDI2OCwgMTcwMiwgMjY5LCAxNzAyLCAKKyAgICAyNzAsIDE3MDIsIDI2NywgMTY2OCwgMjY4LCAxNjY4LCAyNjksIDE2NjgsIDI3MCwgMTY2OCwgMjY3LCAxNjY3LCAyNjgsIAorICAgIDE2NjcsIDI2OSwgMTY2NywgMjcwLCAxNjY3LCAyNjcsIDE2NzAsIDI2OCwgMTY3MCwgMjY5LCAxNjcwLCAyNzAsIDE2NzAsIAorICAgIDI2NywgMTY3MSwgMjY4LCAxNjcxLCAyNjksIDE2NzEsIDI3MCwgMTY3MSwgMjY3LCAxNjc3LCAyNjgsIDE2NzcsIDI2NywgCisgICAgMTY3NiwgMjY4LCAxNjc2LCAyNjcsIDE2NzgsIDI2OCwgMTY3OCwgMjY3LCAxNjcyLCAyNjgsIDE2NzIsIDI2NywgMTY4OCwgCisgICAgMjY4LCAxNjg4LCAyNjcsIDE2ODEsIDI2OCwgMTY4MSwgMjY3LCAxNzA1LCAyNjgsIDE3MDUsIDI2OSwgMTcwNSwgMjcwLCAKKyAgICAxNzA1LCAyNjcsIDE3MTEsIDI2OCwgMTcxMSwgMjY5LCAxNzExLCAyNzAsIDE3MTEsIDI2NywgMTcxNSwgMjY4LCAxNzE1LCAKKyAgICAyNjksIDE3MTUsIDI3MCwgMTcxNSwgMjY3LCAxNzEzLCAyNjgsIDE3MTMsIDI2OSwgMTcxMywgMjcwLCAxNzEzLCAyNjcsIAorICAgIDE3MjIsIDI2OCwgMTcyMiwgMjY3LCAxNzIzLCAyNjgsIDE3MjMsIDI2OSwgMTcyMywgMjcwLCAxNzIzLCAyNjcsIDE3MjgsIAorICAgIDI2OCwgMTcyOCwgMjY3LCAxNzI5LCAyNjgsIDE3MjksIDI2OSwgMTcyOSwgMjcwLCAxNzI5LCAyNjcsIDE3MjYsIDI2OCwgCisgICAgMTcyNiwgMjY5LCAxNzI2LCAyNzAsIDE3MjYsIDI2NywgMTc0NiwgMjY4LCAxNzQ2LCAyNjcsIDE3NDcsIDI2OCwgMTc0NywgCisgICAgMjY3LCAxNzA5LCAyNjgsIDE3MDksIDI2OSwgMTcwOSwgMjcwLCAxNzA5LCAyNjcsIDE3MzUsIDI2OCwgMTczNSwgMjY3LCAKKyAgICAxNzM0LCAyNjgsIDE3MzQsIDI2NywgMTczNiwgMjY4LCAxNzM2LCAyNjcsIDE2NTUsIDI2NywgMTczOSwgMjY4LCAxNzM5LCAKKyAgICAyNjcsIDE3MzMsIDI2OCwgMTczMywgMjY3LCAxNzM3LCAyNjgsIDE3MzcsIDI2NywgMTc0NCwgMjY4LCAxNzQ0LCAyNjksIAorICAgIDE3NDQsIDI3MCwgMTc0NCwgMjY5LCAxNjA5LCAyNzAsIDE2MDksIDUyMywgMTU3NCwgMTU3NSwgNTI0LCAxNTc0LCAxNTc1LCAKKyAgICA1MjMsIDE1NzQsIDE3NDksIDUyNCwgMTU3NCwgMTc0OSwgNTIzLCAxNTc0LCAxNjA4LCA1MjQsIDE1NzQsIDE2MDgsIDUyMywgCisgICAgMTU3NCwgMTczNSwgNTI0LCAxNTc0LCAxNzM1LCA1MjMsIDE1NzQsIDE3MzQsIDUyNCwgMTU3NCwgMTczNCwgNTIzLCAxNTc0LCAKKyAgICAxNzM2LCA1MjQsIDE1NzQsIDE3MzYsIDUyMywgMTU3NCwgMTc0NCwgNTI0LCAxNTc0LCAxNzQ0LCA1MjUsIDE1NzQsIDE3NDQsIAorICAgIDUyMywgMTU3NCwgMTYwOSwgNTI0LCAxNTc0LCAxNjA5LCA1MjUsIDE1NzQsIDE2MDksIDI2NywgMTc0MCwgMjY4LCAxNzQwLCAKKyAgICAyNjksIDE3NDAsIDI3MCwgMTc0MCwgNTIzLCAxNTc0LCAxNTgwLCA1MjMsIDE1NzQsIDE1ODEsIDUyMywgMTU3NCwgMTYwNSwgCisgICAgNTIzLCAxNTc0LCAxNjA5LCA1MjMsIDE1NzQsIDE2MTAsIDUyMywgMTU3NiwgMTU4MCwgNTIzLCAxNTc2LCAxNTgxLCA1MjMsIAorICAgIDE1NzYsIDE1ODIsIDUyMywgMTU3NiwgMTYwNSwgNTIzLCAxNTc2LCAxNjA5LCA1MjMsIDE1NzYsIDE2MTAsIDUyMywgMTU3OCwgCisgICAgMTU4MCwgNTIzLCAxNTc4LCAxNTgxLCA1MjMsIDE1NzgsIDE1ODIsIDUyMywgMTU3OCwgMTYwNSwgNTIzLCAxNTc4LCAxNjA5LCAKKyAgICA1MjMsIDE1NzgsIDE2MTAsIDUyMywgMTU3OSwgMTU4MCwgNTIzLCAxNTc5LCAxNjA1LCA1MjMsIDE1NzksIDE2MDksIDUyMywgCisgICAgMTU3OSwgMTYxMCwgNTIzLCAxNTgwLCAxNTgxLCA1MjMsIDE1ODAsIDE2MDUsIDUyMywgMTU4MSwgMTU4MCwgNTIzLCAxNTgxLCAKKyAgICAxNjA1LCA1MjMsIDE1ODIsIDE1ODAsIDUyMywgMTU4MiwgMTU4MSwgNTIzLCAxNTgyLCAxNjA1LCA1MjMsIDE1ODcsIDE1ODAsIAorICAgIDUyMywgMTU4NywgMTU4MSwgNTIzLCAxNTg3LCAxNTgyLCA1MjMsIDE1ODcsIDE2MDUsIDUyMywgMTU4OSwgMTU4MSwgNTIzLCAKKyAgICAxNTg5LCAxNjA1LCA1MjMsIDE1OTAsIDE1ODAsIDUyMywgMTU5MCwgMTU4MSwgNTIzLCAxNTkwLCAxNTgyLCA1MjMsIDE1OTAsIAorICAgIDE2MDUsIDUyMywgMTU5MSwgMTU4MSwgNTIzLCAxNTkxLCAxNjA1LCA1MjMsIDE1OTIsIDE2MDUsIDUyMywgMTU5MywgMTU4MCwgCisgICAgNTIzLCAxNTkzLCAxNjA1LCA1MjMsIDE1OTQsIDE1ODAsIDUyMywgMTU5NCwgMTYwNSwgNTIzLCAxNjAxLCAxNTgwLCA1MjMsIAorICAgIDE2MDEsIDE1ODEsIDUyMywgMTYwMSwgMTU4MiwgNTIzLCAxNjAxLCAxNjA1LCA1MjMsIDE2MDEsIDE2MDksIDUyMywgMTYwMSwgCisgICAgMTYxMCwgNTIzLCAxNjAyLCAxNTgxLCA1MjMsIDE2MDIsIDE2MDUsIDUyMywgMTYwMiwgMTYwOSwgNTIzLCAxNjAyLCAxNjEwLCAKKyAgICA1MjMsIDE2MDMsIDE1NzUsIDUyMywgMTYwMywgMTU4MCwgNTIzLCAxNjAzLCAxNTgxLCA1MjMsIDE2MDMsIDE1ODIsIDUyMywgCisgICAgMTYwMywgMTYwNCwgNTIzLCAxNjAzLCAxNjA1LCA1MjMsIDE2MDMsIDE2MDksIDUyMywgMTYwMywgMTYxMCwgNTIzLCAxNjA0LCAKKyAgICAxNTgwLCA1MjMsIDE2MDQsIDE1ODEsIDUyMywgMTYwNCwgMTU4MiwgNTIzLCAxNjA0LCAxNjA1LCA1MjMsIDE2MDQsIDE2MDksIAorICAgIDUyMywgMTYwNCwgMTYxMCwgNTIzLCAxNjA1LCAxNTgwLCA1MjMsIDE2MDUsIDE1ODEsIDUyMywgMTYwNSwgMTU4MiwgNTIzLCAKKyAgICAxNjA1LCAxNjA1LCA1MjMsIDE2MDUsIDE2MDksIDUyMywgMTYwNSwgMTYxMCwgNTIzLCAxNjA2LCAxNTgwLCA1MjMsIDE2MDYsIAorICAgIDE1ODEsIDUyMywgMTYwNiwgMTU4MiwgNTIzLCAxNjA2LCAxNjA1LCA1MjMsIDE2MDYsIDE2MDksIDUyMywgMTYwNiwgMTYxMCwgCisgICAgNTIzLCAxNjA3LCAxNTgwLCA1MjMsIDE2MDcsIDE2MDUsIDUyMywgMTYwNywgMTYwOSwgNTIzLCAxNjA3LCAxNjEwLCA1MjMsIAorICAgIDE2MTAsIDE1ODAsIDUyMywgMTYxMCwgMTU4MSwgNTIzLCAxNjEwLCAxNTgyLCA1MjMsIDE2MTAsIDE2MDUsIDUyMywgMTYxMCwgCisgICAgMTYwOSwgNTIzLCAxNjEwLCAxNjEwLCA1MjMsIDE1ODQsIDE2NDgsIDUyMywgMTU4NSwgMTY0OCwgNTIzLCAxNjA5LCAxNjQ4LCAKKyAgICA3NzksIDMyLCAxNjEyLCAxNjE3LCA3NzksIDMyLCAxNjEzLCAxNjE3LCA3NzksIDMyLCAxNjE0LCAxNjE3LCA3NzksIDMyLCAKKyAgICAxNjE1LCAxNjE3LCA3NzksIDMyLCAxNjE2LCAxNjE3LCA3NzksIDMyLCAxNjE3LCAxNjQ4LCA1MjQsIDE1NzQsIDE1ODUsIAorICAgIDUyNCwgMTU3NCwgMTU4NiwgNTI0LCAxNTc0LCAxNjA1LCA1MjQsIDE1NzQsIDE2MDYsIDUyNCwgMTU3NCwgMTYwOSwgNTI0LCAKKyAgICAxNTc0LCAxNjEwLCA1MjQsIDE1NzYsIDE1ODUsIDUyNCwgMTU3NiwgMTU4NiwgNTI0LCAxNTc2LCAxNjA1LCA1MjQsIDE1NzYsIAorICAgIDE2MDYsIDUyNCwgMTU3NiwgMTYwOSwgNTI0LCAxNTc2LCAxNjEwLCA1MjQsIDE1NzgsIDE1ODUsIDUyNCwgMTU3OCwgMTU4NiwgCisgICAgNTI0LCAxNTc4LCAxNjA1LCA1MjQsIDE1NzgsIDE2MDYsIDUyNCwgMTU3OCwgMTYwOSwgNTI0LCAxNTc4LCAxNjEwLCA1MjQsIAorICAgIDE1NzksIDE1ODUsIDUyNCwgMTU3OSwgMTU4NiwgNTI0LCAxNTc5LCAxNjA1LCA1MjQsIDE1NzksIDE2MDYsIDUyNCwgMTU3OSwgCisgICAgMTYwOSwgNTI0LCAxNTc5LCAxNjEwLCA1MjQsIDE2MDEsIDE2MDksIDUyNCwgMTYwMSwgMTYxMCwgNTI0LCAxNjAyLCAxNjA5LCAKKyAgICA1MjQsIDE2MDIsIDE2MTAsIDUyNCwgMTYwMywgMTU3NSwgNTI0LCAxNjAzLCAxNjA0LCA1MjQsIDE2MDMsIDE2MDUsIDUyNCwgCisgICAgMTYwMywgMTYwOSwgNTI0LCAxNjAzLCAxNjEwLCA1MjQsIDE2MDQsIDE2MDUsIDUyNCwgMTYwNCwgMTYwOSwgNTI0LCAxNjA0LCAKKyAgICAxNjEwLCA1MjQsIDE2MDUsIDE1NzUsIDUyNCwgMTYwNSwgMTYwNSwgNTI0LCAxNjA2LCAxNTg1LCA1MjQsIDE2MDYsIDE1ODYsIAorICAgIDUyNCwgMTYwNiwgMTYwNSwgNTI0LCAxNjA2LCAxNjA2LCA1MjQsIDE2MDYsIDE2MDksIDUyNCwgMTYwNiwgMTYxMCwgNTI0LCAKKyAgICAxNjA5LCAxNjQ4LCA1MjQsIDE2MTAsIDE1ODUsIDUyNCwgMTYxMCwgMTU4NiwgNTI0LCAxNjEwLCAxNjA1LCA1MjQsIDE2MTAsIAorICAgIDE2MDYsIDUyNCwgMTYxMCwgMTYwOSwgNTI0LCAxNjEwLCAxNjEwLCA1MjUsIDE1NzQsIDE1ODAsIDUyNSwgMTU3NCwgMTU4MSwgCisgICAgNTI1LCAxNTc0LCAxNTgyLCA1MjUsIDE1NzQsIDE2MDUsIDUyNSwgMTU3NCwgMTYwNywgNTI1LCAxNTc2LCAxNTgwLCA1MjUsIAorICAgIDE1NzYsIDE1ODEsIDUyNSwgMTU3NiwgMTU4MiwgNTI1LCAxNTc2LCAxNjA1LCA1MjUsIDE1NzYsIDE2MDcsIDUyNSwgMTU3OCwgCisgICAgMTU4MCwgNTI1LCAxNTc4LCAxNTgxLCA1MjUsIDE1NzgsIDE1ODIsIDUyNSwgMTU3OCwgMTYwNSwgNTI1LCAxNTc4LCAxNjA3LCAKKyAgICA1MjUsIDE1NzksIDE2MDUsIDUyNSwgMTU4MCwgMTU4MSwgNTI1LCAxNTgwLCAxNjA1LCA1MjUsIDE1ODEsIDE1ODAsIDUyNSwgCisgICAgMTU4MSwgMTYwNSwgNTI1LCAxNTgyLCAxNTgwLCA1MjUsIDE1ODIsIDE2MDUsIDUyNSwgMTU4NywgMTU4MCwgNTI1LCAxNTg3LCAKKyAgICAxNTgxLCA1MjUsIDE1ODcsIDE1ODIsIDUyNSwgMTU4NywgMTYwNSwgNTI1LCAxNTg5LCAxNTgxLCA1MjUsIDE1ODksIDE1ODIsIAorICAgIDUyNSwgMTU4OSwgMTYwNSwgNTI1LCAxNTkwLCAxNTgwLCA1MjUsIDE1OTAsIDE1ODEsIDUyNSwgMTU5MCwgMTU4MiwgNTI1LCAKKyAgICAxNTkwLCAxNjA1LCA1MjUsIDE1OTEsIDE1ODEsIDUyNSwgMTU5MiwgMTYwNSwgNTI1LCAxNTkzLCAxNTgwLCA1MjUsIDE1OTMsIAorICAgIDE2MDUsIDUyNSwgMTU5NCwgMTU4MCwgNTI1LCAxNTk0LCAxNjA1LCA1MjUsIDE2MDEsIDE1ODAsIDUyNSwgMTYwMSwgMTU4MSwgCisgICAgNTI1LCAxNjAxLCAxNTgyLCA1MjUsIDE2MDEsIDE2MDUsIDUyNSwgMTYwMiwgMTU4MSwgNTI1LCAxNjAyLCAxNjA1LCA1MjUsIAorICAgIDE2MDMsIDE1ODAsIDUyNSwgMTYwMywgMTU4MSwgNTI1LCAxNjAzLCAxNTgyLCA1MjUsIDE2MDMsIDE2MDQsIDUyNSwgMTYwMywgCisgICAgMTYwNSwgNTI1LCAxNjA0LCAxNTgwLCA1MjUsIDE2MDQsIDE1ODEsIDUyNSwgMTYwNCwgMTU4MiwgNTI1LCAxNjA0LCAxNjA1LCAKKyAgICA1MjUsIDE2MDQsIDE2MDcsIDUyNSwgMTYwNSwgMTU4MCwgNTI1LCAxNjA1LCAxNTgxLCA1MjUsIDE2MDUsIDE1ODIsIDUyNSwgCisgICAgMTYwNSwgMTYwNSwgNTI1LCAxNjA2LCAxNTgwLCA1MjUsIDE2MDYsIDE1ODEsIDUyNSwgMTYwNiwgMTU4MiwgNTI1LCAxNjA2LCAKKyAgICAxNjA1LCA1MjUsIDE2MDYsIDE2MDcsIDUyNSwgMTYwNywgMTU4MCwgNTI1LCAxNjA3LCAxNjA1LCA1MjUsIDE2MDcsIDE2NDgsIAorICAgIDUyNSwgMTYxMCwgMTU4MCwgNTI1LCAxNjEwLCAxNTgxLCA1MjUsIDE2MTAsIDE1ODIsIDUyNSwgMTYxMCwgMTYwNSwgNTI1LCAKKyAgICAxNjEwLCAxNjA3LCA1MjYsIDE1NzQsIDE2MDUsIDUyNiwgMTU3NCwgMTYwNywgNTI2LCAxNTc2LCAxNjA1LCA1MjYsIDE1NzYsIAorICAgIDE2MDcsIDUyNiwgMTU3OCwgMTYwNSwgNTI2LCAxNTc4LCAxNjA3LCA1MjYsIDE1NzksIDE2MDUsIDUyNiwgMTU3OSwgMTYwNywgCisgICAgNTI2LCAxNTg3LCAxNjA1LCA1MjYsIDE1ODcsIDE2MDcsIDUyNiwgMTU4OCwgMTYwNSwgNTI2LCAxNTg4LCAxNjA3LCA1MjYsIAorICAgIDE2MDMsIDE2MDQsIDUyNiwgMTYwMywgMTYwNSwgNTI2LCAxNjA0LCAxNjA1LCA1MjYsIDE2MDYsIDE2MDUsIDUyNiwgMTYwNiwgCisgICAgMTYwNywgNTI2LCAxNjEwLCAxNjA1LCA1MjYsIDE2MTAsIDE2MDcsIDc4MiwgMTYwMCwgMTYxNCwgMTYxNywgNzgyLCAxNjAwLCAKKyAgICAxNjE1LCAxNjE3LCA3ODIsIDE2MDAsIDE2MTYsIDE2MTcsIDUyMywgMTU5MSwgMTYwOSwgNTIzLCAxNTkxLCAxNjEwLCA1MjMsIAorICAgIDE1OTMsIDE2MDksIDUyMywgMTU5MywgMTYxMCwgNTIzLCAxNTk0LCAxNjA5LCA1MjMsIDE1OTQsIDE2MTAsIDUyMywgMTU4NywgCisgICAgMTYwOSwgNTIzLCAxNTg3LCAxNjEwLCA1MjMsIDE1ODgsIDE2MDksIDUyMywgMTU4OCwgMTYxMCwgNTIzLCAxNTgxLCAxNjA5LCAKKyAgICA1MjMsIDE1ODEsIDE2MTAsIDUyMywgMTU4MCwgMTYwOSwgNTIzLCAxNTgwLCAxNjEwLCA1MjMsIDE1ODIsIDE2MDksIDUyMywgCisgICAgMTU4MiwgMTYxMCwgNTIzLCAxNTg5LCAxNjA5LCA1MjMsIDE1ODksIDE2MTAsIDUyMywgMTU5MCwgMTYwOSwgNTIzLCAxNTkwLCAKKyAgICAxNjEwLCA1MjMsIDE1ODgsIDE1ODAsIDUyMywgMTU4OCwgMTU4MSwgNTIzLCAxNTg4LCAxNTgyLCA1MjMsIDE1ODgsIDE2MDUsIAorICAgIDUyMywgMTU4OCwgMTU4NSwgNTIzLCAxNTg3LCAxNTg1LCA1MjMsIDE1ODksIDE1ODUsIDUyMywgMTU5MCwgMTU4NSwgNTI0LCAKKyAgICAxNTkxLCAxNjA5LCA1MjQsIDE1OTEsIDE2MTAsIDUyNCwgMTU5MywgMTYwOSwgNTI0LCAxNTkzLCAxNjEwLCA1MjQsIDE1OTQsIAorICAgIDE2MDksIDUyNCwgMTU5NCwgMTYxMCwgNTI0LCAxNTg3LCAxNjA5LCA1MjQsIDE1ODcsIDE2MTAsIDUyNCwgMTU4OCwgMTYwOSwgCisgICAgNTI0LCAxNTg4LCAxNjEwLCA1MjQsIDE1ODEsIDE2MDksIDUyNCwgMTU4MSwgMTYxMCwgNTI0LCAxNTgwLCAxNjA5LCA1MjQsIAorICAgIDE1ODAsIDE2MTAsIDUyNCwgMTU4MiwgMTYwOSwgNTI0LCAxNTgyLCAxNjEwLCA1MjQsIDE1ODksIDE2MDksIDUyNCwgMTU4OSwgCisgICAgMTYxMCwgNTI0LCAxNTkwLCAxNjA5LCA1MjQsIDE1OTAsIDE2MTAsIDUyNCwgMTU4OCwgMTU4MCwgNTI0LCAxNTg4LCAxNTgxLCAKKyAgICA1MjQsIDE1ODgsIDE1ODIsIDUyNCwgMTU4OCwgMTYwNSwgNTI0LCAxNTg4LCAxNTg1LCA1MjQsIDE1ODcsIDE1ODUsIDUyNCwgCisgICAgMTU4OSwgMTU4NSwgNTI0LCAxNTkwLCAxNTg1LCA1MjUsIDE1ODgsIDE1ODAsIDUyNSwgMTU4OCwgMTU4MSwgNTI1LCAxNTg4LCAKKyAgICAxNTgyLCA1MjUsIDE1ODgsIDE2MDUsIDUyNSwgMTU4NywgMTYwNywgNTI1LCAxNTg4LCAxNjA3LCA1MjUsIDE1OTEsIDE2MDUsIAorICAgIDUyNiwgMTU4NywgMTU4MCwgNTI2LCAxNTg3LCAxNTgxLCA1MjYsIDE1ODcsIDE1ODIsIDUyNiwgMTU4OCwgMTU4MCwgNTI2LCAKKyAgICAxNTg4LCAxNTgxLCA1MjYsIDE1ODgsIDE1ODIsIDUyNiwgMTU5MSwgMTYwNSwgNTI2LCAxNTkyLCAxNjA1LCA1MjQsIDE1NzUsIAorICAgIDE2MTEsIDUyMywgMTU3NSwgMTYxMSwgNzgxLCAxNTc4LCAxNTgwLCAxNjA1LCA3ODAsIDE1NzgsIDE1ODEsIDE1ODAsIDc4MSwgCisgICAgMTU3OCwgMTU4MSwgMTU4MCwgNzgxLCAxNTc4LCAxNTgxLCAxNjA1LCA3ODEsIDE1NzgsIDE1ODIsIDE2MDUsIDc4MSwgCisgICAgMTU3OCwgMTYwNSwgMTU4MCwgNzgxLCAxNTc4LCAxNjA1LCAxNTgxLCA3ODEsIDE1NzgsIDE2MDUsIDE1ODIsIDc4MCwgCisgICAgMTU4MCwgMTYwNSwgMTU4MSwgNzgxLCAxNTgwLCAxNjA1LCAxNTgxLCA3ODAsIDE1ODEsIDE2MDUsIDE2MTAsIDc4MCwgCisgICAgMTU4MSwgMTYwNSwgMTYwOSwgNzgxLCAxNTg3LCAxNTgxLCAxNTgwLCA3ODEsIDE1ODcsIDE1ODAsIDE1ODEsIDc4MCwgCisgICAgMTU4NywgMTU4MCwgMTYwOSwgNzgwLCAxNTg3LCAxNjA1LCAxNTgxLCA3ODEsIDE1ODcsIDE2MDUsIDE1ODEsIDc4MSwgCisgICAgMTU4NywgMTYwNSwgMTU4MCwgNzgwLCAxNTg3LCAxNjA1LCAxNjA1LCA3ODEsIDE1ODcsIDE2MDUsIDE2MDUsIDc4MCwgCisgICAgMTU4OSwgMTU4MSwgMTU4MSwgNzgxLCAxNTg5LCAxNTgxLCAxNTgxLCA3ODAsIDE1ODksIDE2MDUsIDE2MDUsIDc4MCwgCisgICAgMTU4OCwgMTU4MSwgMTYwNSwgNzgxLCAxNTg4LCAxNTgxLCAxNjA1LCA3ODAsIDE1ODgsIDE1ODAsIDE2MTAsIDc4MCwgCisgICAgMTU4OCwgMTYwNSwgMTU4MiwgNzgxLCAxNTg4LCAxNjA1LCAxNTgyLCA3ODAsIDE1ODgsIDE2MDUsIDE2MDUsIDc4MSwgCisgICAgMTU4OCwgMTYwNSwgMTYwNSwgNzgwLCAxNTkwLCAxNTgxLCAxNjA5LCA3ODAsIDE1OTAsIDE1ODIsIDE2MDUsIDc4MSwgCisgICAgMTU5MCwgMTU4MiwgMTYwNSwgNzgwLCAxNTkxLCAxNjA1LCAxNTgxLCA3ODEsIDE1OTEsIDE2MDUsIDE1ODEsIDc4MSwgCisgICAgMTU5MSwgMTYwNSwgMTYwNSwgNzgwLCAxNTkxLCAxNjA1LCAxNjEwLCA3ODAsIDE1OTMsIDE1ODAsIDE2MDUsIDc4MCwgCisgICAgMTU5MywgMTYwNSwgMTYwNSwgNzgxLCAxNTkzLCAxNjA1LCAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIDE2MDksIDc4MCwgCisgICAgMTU5NCwgMTYwNSwgMTYwNSwgNzgwLCAxNTk0LCAxNjA1LCAxNjEwLCA3ODAsIDE1OTQsIDE2MDUsIDE2MDksIDc4MCwgCisgICAgMTYwMSwgMTU4MiwgMTYwNSwgNzgxLCAxNjAxLCAxNTgyLCAxNjA1LCA3ODAsIDE2MDIsIDE2MDUsIDE1ODEsIDc4MCwgCisgICAgMTYwMiwgMTYwNSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgxLCAxNjA1LCA3ODAsIDE2MDQsIDE1ODEsIDE2MTAsIDc4MCwgCisgICAgMTYwNCwgMTU4MSwgMTYwOSwgNzgxLCAxNjA0LCAxNTgwLCAxNTgwLCA3ODAsIDE2MDQsIDE1ODAsIDE1ODAsIDc4MCwgCisgICAgMTYwNCwgMTU4MiwgMTYwNSwgNzgxLCAxNjA0LCAxNTgyLCAxNjA1LCA3ODAsIDE2MDQsIDE2MDUsIDE1ODEsIDc4MSwgCisgICAgMTYwNCwgMTYwNSwgMTU4MSwgNzgxLCAxNjA1LCAxNTgxLCAxNTgwLCA3ODEsIDE2MDUsIDE1ODEsIDE2MDUsIDc4MCwgCisgICAgMTYwNSwgMTU4MSwgMTYxMCwgNzgxLCAxNjA1LCAxNTgwLCAxNTgxLCA3ODEsIDE2MDUsIDE1ODAsIDE2MDUsIDc4MSwgCisgICAgMTYwNSwgMTU4MiwgMTU4MCwgNzgxLCAxNjA1LCAxNTgyLCAxNjA1LCA3ODEsIDE2MDUsIDE1ODAsIDE1ODIsIDc4MSwgCisgICAgMTYwNywgMTYwNSwgMTU4MCwgNzgxLCAxNjA3LCAxNjA1LCAxNjA1LCA3ODEsIDE2MDYsIDE1ODEsIDE2MDUsIDc4MCwgCisgICAgMTYwNiwgMTU4MSwgMTYwOSwgNzgwLCAxNjA2LCAxNTgwLCAxNjA1LCA3ODEsIDE2MDYsIDE1ODAsIDE2MDUsIDc4MCwgCisgICAgMTYwNiwgMTU4MCwgMTYwOSwgNzgwLCAxNjA2LCAxNjA1LCAxNjEwLCA3ODAsIDE2MDYsIDE2MDUsIDE2MDksIDc4MCwgCisgICAgMTYxMCwgMTYwNSwgMTYwNSwgNzgxLCAxNjEwLCAxNjA1LCAxNjA1LCA3ODAsIDE1NzYsIDE1ODIsIDE2MTAsIDc4MCwgCisgICAgMTU3OCwgMTU4MCwgMTYxMCwgNzgwLCAxNTc4LCAxNTgwLCAxNjA5LCA3ODAsIDE1NzgsIDE1ODIsIDE2MTAsIDc4MCwgCisgICAgMTU3OCwgMTU4MiwgMTYwOSwgNzgwLCAxNTc4LCAxNjA1LCAxNjEwLCA3ODAsIDE1NzgsIDE2MDUsIDE2MDksIDc4MCwgCisgICAgMTU4MCwgMTYwNSwgMTYxMCwgNzgwLCAxNTgwLCAxNTgxLCAxNjA5LCA3ODAsIDE1ODAsIDE2MDUsIDE2MDksIDc4MCwgCisgICAgMTU4NywgMTU4MiwgMTYwOSwgNzgwLCAxNTg5LCAxNTgxLCAxNjEwLCA3ODAsIDE1ODgsIDE1ODEsIDE2MTAsIDc4MCwgCisgICAgMTU5MCwgMTU4MSwgMTYxMCwgNzgwLCAxNjA0LCAxNTgwLCAxNjEwLCA3ODAsIDE2MDQsIDE2MDUsIDE2MTAsIDc4MCwgCisgICAgMTYxMCwgMTU4MSwgMTYxMCwgNzgwLCAxNjEwLCAxNTgwLCAxNjEwLCA3ODAsIDE2MTAsIDE2MDUsIDE2MTAsIDc4MCwgCisgICAgMTYwNSwgMTYwNSwgMTYxMCwgNzgwLCAxNjAyLCAxNjA1LCAxNjEwLCA3ODAsIDE2MDYsIDE1ODEsIDE2MTAsIDc4MSwgCisgICAgMTYwMiwgMTYwNSwgMTU4MSwgNzgxLCAxNjA0LCAxNTgxLCAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIDE2MTAsIDc4MCwgCisgICAgMTYwMywgMTYwNSwgMTYxMCwgNzgxLCAxNjA2LCAxNTgwLCAxNTgxLCA3ODAsIDE2MDUsIDE1ODIsIDE2MTAsIDc4MSwgCisgICAgMTYwNCwgMTU4MCwgMTYwNSwgNzgwLCAxNjAzLCAxNjA1LCAxNjA1LCA3ODAsIDE2MDQsIDE1ODAsIDE2MDUsIDc4MCwgCisgICAgMTYwNiwgMTU4MCwgMTU4MSwgNzgwLCAxNTgwLCAxNTgxLCAxNjEwLCA3ODAsIDE1ODEsIDE1ODAsIDE2MTAsIDc4MCwgCisgICAgMTYwNSwgMTU4MCwgMTYxMCwgNzgwLCAxNjAxLCAxNjA1LCAxNjEwLCA3ODAsIDE1NzYsIDE1ODEsIDE2MTAsIDc4MSwgCisgICAgMTYwMywgMTYwNSwgMTYwNSwgNzgxLCAxNTkzLCAxNTgwLCAxNjA1LCA3ODEsIDE1ODksIDE2MDUsIDE2MDUsIDc4MCwgCisgICAgMTU4NywgMTU4MiwgMTYxMCwgNzgwLCAxNjA2LCAxNTgwLCAxNjEwLCA3NzksIDE1ODksIDE2MDQsIDE3NDYsIDc3OSwgCisgICAgMTYwMiwgMTYwNCwgMTc0NiwgMTAzNSwgMTU3NSwgMTYwNCwgMTYwNCwgMTYwNywgMTAzNSwgMTU3NSwgMTYwMywgMTU3NiwgCisgICAgMTU4NSwgMTAzNSwgMTYwNSwgMTU4MSwgMTYwNSwgMTU4MywgMTAzNSwgMTU4OSwgMTYwNCwgMTU5MywgMTYwNSwgMTAzNSwgCisgICAgMTU4NSwgMTU4NywgMTYwOCwgMTYwNCwgMTAzNSwgMTU5MywgMTYwNCwgMTYxMCwgMTYwNywgMTAzNSwgMTYwOCwgMTU4NywgCisgICAgMTYwNCwgMTYwNSwgNzc5LCAxNTg5LCAxNjA0LCAxNjA5LCA0NjE5LCAxNTg5LCAxNjA0LCAxNjA5LCAzMiwgMTU3NSwgCisgICAgMTYwNCwgMTYwNCwgMTYwNywgMzIsIDE1OTMsIDE2MDQsIDE2MTAsIDE2MDcsIDMyLCAxNjA4LCAxNTg3LCAxNjA0LCAxNjA1LCAKKyAgICAyMDU5LCAxNTgwLCAxNjA0LCAzMiwgMTU4MCwgMTYwNCwgMTU3NSwgMTYwNCwgMTYwNywgMTAzNSwgMTU4NSwgMTc0MCwgCisgICAgMTU3NSwgMTYwNCwgMjY1LCA0NCwgMjY1LCAxMjI4OSwgMjY1LCAxMjI5MCwgMjY1LCA1OCwgMjY1LCA1OSwgMjY1LCAzMywgCisgICAgMjY1LCA2MywgMjY1LCAxMjMxMCwgMjY1LCAxMjMxMSwgMjY1LCA4MjMwLCAyNjUsIDgyMjksIDI2NSwgODIxMiwgMjY1LCAKKyAgICA4MjExLCAyNjUsIDk1LCAyNjUsIDk1LCAyNjUsIDQwLCAyNjUsIDQxLCAyNjUsIDEyMywgMjY1LCAxMjUsIDI2NSwgMTIzMDgsIAorICAgIDI2NSwgMTIzMDksIDI2NSwgMTIzMDQsIDI2NSwgMTIzMDUsIDI2NSwgMTIyOTgsIDI2NSwgMTIyOTksIDI2NSwgMTIyOTYsIAorICAgIDI2NSwgMTIyOTcsIDI2NSwgMTIzMDAsIDI2NSwgMTIzMDEsIDI2NSwgMTIzMDIsIDI2NSwgMTIzMDMsIDI2NSwgOTEsIDI2NSwgCisgICAgOTMsIDI1OCwgODI1NCwgMjU4LCA4MjU0LCAyNTgsIDgyNTQsIDI1OCwgODI1NCwgMjU4LCA5NSwgMjU4LCA5NSwgMjU4LCAKKyAgICA5NSwgMjcxLCA0NCwgMjcxLCAxMjI4OSwgMjcxLCA0NiwgMjcxLCA1OSwgMjcxLCA1OCwgMjcxLCA2MywgMjcxLCAzMywgCisgICAgMjcxLCA4MjEyLCAyNzEsIDQwLCAyNzEsIDQxLCAyNzEsIDEyMywgMjcxLCAxMjUsIDI3MSwgMTIzMDgsIDI3MSwgMTIzMDksIAorICAgIDI3MSwgMzUsIDI3MSwgMzgsIDI3MSwgNDIsIDI3MSwgNDMsIDI3MSwgNDUsIDI3MSwgNjAsIDI3MSwgNjIsIDI3MSwgNjEsIAorICAgIDI3MSwgOTIsIDI3MSwgMzYsIDI3MSwgMzcsIDI3MSwgNjQsIDUyMywgMzIsIDE2MTEsIDUyNiwgMTYwMCwgMTYxMSwgNTIzLCAKKyAgICAzMiwgMTYxMiwgNTIzLCAzMiwgMTYxMywgNTIzLCAzMiwgMTYxNCwgNTI2LCAxNjAwLCAxNjE0LCA1MjMsIDMyLCAxNjE1LCAKKyAgICA1MjYsIDE2MDAsIDE2MTUsIDUyMywgMzIsIDE2MTYsIDUyNiwgMTYwMCwgMTYxNiwgNTIzLCAzMiwgMTYxNywgNTI2LCAKKyAgICAxNjAwLCAxNjE3LCA1MjMsIDMyLCAxNjE4LCA1MjYsIDE2MDAsIDE2MTgsIDI2NywgMTU2OSwgMjY3LCAxNTcwLCAyNjgsIAorICAgIDE1NzAsIDI2NywgMTU3MSwgMjY4LCAxNTcxLCAyNjcsIDE1NzIsIDI2OCwgMTU3MiwgMjY3LCAxNTczLCAyNjgsIDE1NzMsIAorICAgIDI2NywgMTU3NCwgMjY4LCAxNTc0LCAyNjksIDE1NzQsIDI3MCwgMTU3NCwgMjY3LCAxNTc1LCAyNjgsIDE1NzUsIDI2NywgCisgICAgMTU3NiwgMjY4LCAxNTc2LCAyNjksIDE1NzYsIDI3MCwgMTU3NiwgMjY3LCAxNTc3LCAyNjgsIDE1NzcsIDI2NywgMTU3OCwgCisgICAgMjY4LCAxNTc4LCAyNjksIDE1NzgsIDI3MCwgMTU3OCwgMjY3LCAxNTc5LCAyNjgsIDE1NzksIDI2OSwgMTU3OSwgMjcwLCAKKyAgICAxNTc5LCAyNjcsIDE1ODAsIDI2OCwgMTU4MCwgMjY5LCAxNTgwLCAyNzAsIDE1ODAsIDI2NywgMTU4MSwgMjY4LCAxNTgxLCAKKyAgICAyNjksIDE1ODEsIDI3MCwgMTU4MSwgMjY3LCAxNTgyLCAyNjgsIDE1ODIsIDI2OSwgMTU4MiwgMjcwLCAxNTgyLCAyNjcsIAorICAgIDE1ODMsIDI2OCwgMTU4MywgMjY3LCAxNTg0LCAyNjgsIDE1ODQsIDI2NywgMTU4NSwgMjY4LCAxNTg1LCAyNjcsIDE1ODYsIAorICAgIDI2OCwgMTU4NiwgMjY3LCAxNTg3LCAyNjgsIDE1ODcsIDI2OSwgMTU4NywgMjcwLCAxNTg3LCAyNjcsIDE1ODgsIDI2OCwgCisgICAgMTU4OCwgMjY5LCAxNTg4LCAyNzAsIDE1ODgsIDI2NywgMTU4OSwgMjY4LCAxNTg5LCAyNjksIDE1ODksIDI3MCwgMTU4OSwgCisgICAgMjY3LCAxNTkwLCAyNjgsIDE1OTAsIDI2OSwgMTU5MCwgMjcwLCAxNTkwLCAyNjcsIDE1OTEsIDI2OCwgMTU5MSwgMjY5LCAKKyAgICAxNTkxLCAyNzAsIDE1OTEsIDI2NywgMTU5MiwgMjY4LCAxNTkyLCAyNjksIDE1OTIsIDI3MCwgMTU5MiwgMjY3LCAxNTkzLCAKKyAgICAyNjgsIDE1OTMsIDI2OSwgMTU5MywgMjcwLCAxNTkzLCAyNjcsIDE1OTQsIDI2OCwgMTU5NCwgMjY5LCAxNTk0LCAyNzAsIAorICAgIDE1OTQsIDI2NywgMTYwMSwgMjY4LCAxNjAxLCAyNjksIDE2MDEsIDI3MCwgMTYwMSwgMjY3LCAxNjAyLCAyNjgsIDE2MDIsIAorICAgIDI2OSwgMTYwMiwgMjcwLCAxNjAyLCAyNjcsIDE2MDMsIDI2OCwgMTYwMywgMjY5LCAxNjAzLCAyNzAsIDE2MDMsIDI2NywgCisgICAgMTYwNCwgMjY4LCAxNjA0LCAyNjksIDE2MDQsIDI3MCwgMTYwNCwgMjY3LCAxNjA1LCAyNjgsIDE2MDUsIDI2OSwgMTYwNSwgCisgICAgMjcwLCAxNjA1LCAyNjcsIDE2MDYsIDI2OCwgMTYwNiwgMjY5LCAxNjA2LCAyNzAsIDE2MDYsIDI2NywgMTYwNywgMjY4LCAKKyAgICAxNjA3LCAyNjksIDE2MDcsIDI3MCwgMTYwNywgMjY3LCAxNjA4LCAyNjgsIDE2MDgsIDI2NywgMTYwOSwgMjY4LCAxNjA5LCAKKyAgICAyNjcsIDE2MTAsIDI2OCwgMTYxMCwgMjY5LCAxNjEwLCAyNzAsIDE2MTAsIDUyMywgMTYwNCwgMTU3MCwgNTI0LCAxNjA0LCAKKyAgICAxNTcwLCA1MjMsIDE2MDQsIDE1NzEsIDUyNCwgMTYwNCwgMTU3MSwgNTIzLCAxNjA0LCAxNTczLCA1MjQsIDE2MDQsIDE1NzMsIAorICAgIDUyMywgMTYwNCwgMTU3NSwgNTI0LCAxNjA0LCAxNTc1LCAyNjQsIDMzLCAyNjQsIDM0LCAyNjQsIDM1LCAyNjQsIDM2LCAKKyAgICAyNjQsIDM3LCAyNjQsIDM4LCAyNjQsIDM5LCAyNjQsIDQwLCAyNjQsIDQxLCAyNjQsIDQyLCAyNjQsIDQzLCAyNjQsIDQ0LCAKKyAgICAyNjQsIDQ1LCAyNjQsIDQ2LCAyNjQsIDQ3LCAyNjQsIDQ4LCAyNjQsIDQ5LCAyNjQsIDUwLCAyNjQsIDUxLCAyNjQsIDUyLCAKKyAgICAyNjQsIDUzLCAyNjQsIDU0LCAyNjQsIDU1LCAyNjQsIDU2LCAyNjQsIDU3LCAyNjQsIDU4LCAyNjQsIDU5LCAyNjQsIDYwLCAKKyAgICAyNjQsIDYxLCAyNjQsIDYyLCAyNjQsIDYzLCAyNjQsIDY0LCAyNjQsIDY1LCAyNjQsIDY2LCAyNjQsIDY3LCAyNjQsIDY4LCAKKyAgICAyNjQsIDY5LCAyNjQsIDcwLCAyNjQsIDcxLCAyNjQsIDcyLCAyNjQsIDczLCAyNjQsIDc0LCAyNjQsIDc1LCAyNjQsIDc2LCAKKyAgICAyNjQsIDc3LCAyNjQsIDc4LCAyNjQsIDc5LCAyNjQsIDgwLCAyNjQsIDgxLCAyNjQsIDgyLCAyNjQsIDgzLCAyNjQsIDg0LCAKKyAgICAyNjQsIDg1LCAyNjQsIDg2LCAyNjQsIDg3LCAyNjQsIDg4LCAyNjQsIDg5LCAyNjQsIDkwLCAyNjQsIDkxLCAyNjQsIDkyLCAKKyAgICAyNjQsIDkzLCAyNjQsIDk0LCAyNjQsIDk1LCAyNjQsIDk2LCAyNjQsIDk3LCAyNjQsIDk4LCAyNjQsIDk5LCAyNjQsIDEwMCwgCisgICAgMjY0LCAxMDEsIDI2NCwgMTAyLCAyNjQsIDEwMywgMjY0LCAxMDQsIDI2NCwgMTA1LCAyNjQsIDEwNiwgMjY0LCAxMDcsIAorICAgIDI2NCwgMTA4LCAyNjQsIDEwOSwgMjY0LCAxMTAsIDI2NCwgMTExLCAyNjQsIDExMiwgMjY0LCAxMTMsIDI2NCwgMTE0LCAKKyAgICAyNjQsIDExNSwgMjY0LCAxMTYsIDI2NCwgMTE3LCAyNjQsIDExOCwgMjY0LCAxMTksIDI2NCwgMTIwLCAyNjQsIDEyMSwgCisgICAgMjY0LCAxMjIsIDI2NCwgMTIzLCAyNjQsIDEyNCwgMjY0LCAxMjUsIDI2NCwgMTI2LCAyNjQsIDEwNjI5LCAyNjQsIDEwNjMwLCAKKyAgICAyNzIsIDEyMjkwLCAyNzIsIDEyMzAwLCAyNzIsIDEyMzAxLCAyNzIsIDEyMjg5LCAyNzIsIDEyNTM5LCAyNzIsIDEyNTMwLCAKKyAgICAyNzIsIDEyNDQ5LCAyNzIsIDEyNDUxLCAyNzIsIDEyNDUzLCAyNzIsIDEyNDU1LCAyNzIsIDEyNDU3LCAyNzIsIDEyNTE1LCAKKyAgICAyNzIsIDEyNTE3LCAyNzIsIDEyNTE5LCAyNzIsIDEyNDgzLCAyNzIsIDEyNTQwLCAyNzIsIDEyNDUwLCAyNzIsIDEyNDUyLCAKKyAgICAyNzIsIDEyNDU0LCAyNzIsIDEyNDU2LCAyNzIsIDEyNDU4LCAyNzIsIDEyNDU5LCAyNzIsIDEyNDYxLCAyNzIsIDEyNDYzLCAKKyAgICAyNzIsIDEyNDY1LCAyNzIsIDEyNDY3LCAyNzIsIDEyNDY5LCAyNzIsIDEyNDcxLCAyNzIsIDEyNDczLCAyNzIsIDEyNDc1LCAKKyAgICAyNzIsIDEyNDc3LCAyNzIsIDEyNDc5LCAyNzIsIDEyNDgxLCAyNzIsIDEyNDg0LCAyNzIsIDEyNDg2LCAyNzIsIDEyNDg4LCAKKyAgICAyNzIsIDEyNDkwLCAyNzIsIDEyNDkxLCAyNzIsIDEyNDkyLCAyNzIsIDEyNDkzLCAyNzIsIDEyNDk0LCAyNzIsIDEyNDk1LCAKKyAgICAyNzIsIDEyNDk4LCAyNzIsIDEyNTAxLCAyNzIsIDEyNTA0LCAyNzIsIDEyNTA3LCAyNzIsIDEyNTEwLCAyNzIsIDEyNTExLCAKKyAgICAyNzIsIDEyNTEyLCAyNzIsIDEyNTEzLCAyNzIsIDEyNTE0LCAyNzIsIDEyNTE2LCAyNzIsIDEyNTE4LCAyNzIsIDEyNTIwLCAKKyAgICAyNzIsIDEyNTIxLCAyNzIsIDEyNTIyLCAyNzIsIDEyNTIzLCAyNzIsIDEyNTI0LCAyNzIsIDEyNTI1LCAyNzIsIDEyNTI3LCAKKyAgICAyNzIsIDEyNTMxLCAyNzIsIDEyNDQxLCAyNzIsIDEyNDQyLCAyNzIsIDEyNjQ0LCAyNzIsIDEyNTkzLCAyNzIsIDEyNTk0LCAKKyAgICAyNzIsIDEyNTk1LCAyNzIsIDEyNTk2LCAyNzIsIDEyNTk3LCAyNzIsIDEyNTk4LCAyNzIsIDEyNTk5LCAyNzIsIDEyNjAwLCAKKyAgICAyNzIsIDEyNjAxLCAyNzIsIDEyNjAyLCAyNzIsIDEyNjAzLCAyNzIsIDEyNjA0LCAyNzIsIDEyNjA1LCAyNzIsIDEyNjA2LCAKKyAgICAyNzIsIDEyNjA3LCAyNzIsIDEyNjA4LCAyNzIsIDEyNjA5LCAyNzIsIDEyNjEwLCAyNzIsIDEyNjExLCAyNzIsIDEyNjEyLCAKKyAgICAyNzIsIDEyNjEzLCAyNzIsIDEyNjE0LCAyNzIsIDEyNjE1LCAyNzIsIDEyNjE2LCAyNzIsIDEyNjE3LCAyNzIsIDEyNjE4LCAKKyAgICAyNzIsIDEyNjE5LCAyNzIsIDEyNjIwLCAyNzIsIDEyNjIxLCAyNzIsIDEyNjIyLCAyNzIsIDEyNjIzLCAyNzIsIDEyNjI0LCAKKyAgICAyNzIsIDEyNjI1LCAyNzIsIDEyNjI2LCAyNzIsIDEyNjI3LCAyNzIsIDEyNjI4LCAyNzIsIDEyNjI5LCAyNzIsIDEyNjMwLCAKKyAgICAyNzIsIDEyNjMxLCAyNzIsIDEyNjMyLCAyNzIsIDEyNjMzLCAyNzIsIDEyNjM0LCAyNzIsIDEyNjM1LCAyNzIsIDEyNjM2LCAKKyAgICAyNzIsIDEyNjM3LCAyNzIsIDEyNjM4LCAyNzIsIDEyNjM5LCAyNzIsIDEyNjQwLCAyNzIsIDEyNjQxLCAyNzIsIDEyNjQyLCAKKyAgICAyNzIsIDEyNjQzLCAyNjQsIDE2MiwgMjY0LCAxNjMsIDI2NCwgMTcyLCAyNjQsIDE3NSwgMjY0LCAxNjYsIDI2NCwgMTY1LCAKKyAgICAyNjQsIDgzNjEsIDI3MiwgOTQ3NCwgMjcyLCA4NTkyLCAyNzIsIDg1OTMsIDI3MiwgODU5NCwgMjcyLCA4NTk1LCAyNzIsIAorICAgIDk2MzIsIDI3MiwgOTY3NSwgNTEyLCA2OTc4NSwgNjk4MTgsIDUxMiwgNjk3ODcsIDY5ODE4LCA1MTIsIDY5Nzk3LCA2OTgxOCwgCisgICAgNTEyLCA2OTkzNywgNjk5MjcsIDUxMiwgNjk5MzgsIDY5OTI3LCA1MTIsIDcwNDcxLCA3MDQ2MiwgNTEyLCA3MDQ3MSwgCisgICAgNzA0ODcsIDUxMiwgNzA4NDEsIDcwODQyLCA1MTIsIDcwODQxLCA3MDgzMiwgNTEyLCA3MDg0MSwgNzA4NDUsIDUxMiwgCisgICAgNzEwOTYsIDcxMDg3LCA1MTIsIDcxMDk3LCA3MTA4NywgNTEyLCAxMTkxMjcsIDExOTE0MSwgNTEyLCAxMTkxMjgsIAorICAgIDExOTE0MSwgNTEyLCAxMTkxMzUsIDExOTE1MCwgNTEyLCAxMTkxMzUsIDExOTE1MSwgNTEyLCAxMTkxMzUsIDExOTE1MiwgCisgICAgNTEyLCAxMTkxMzUsIDExOTE1MywgNTEyLCAxMTkxMzUsIDExOTE1NCwgNTEyLCAxMTkyMjUsIDExOTE0MSwgNTEyLCAKKyAgICAxMTkyMjYsIDExOTE0MSwgNTEyLCAxMTkyMjcsIDExOTE1MCwgNTEyLCAxMTkyMjgsIDExOTE1MCwgNTEyLCAxMTkyMjcsIAorICAgIDExOTE1MSwgNTEyLCAxMTkyMjgsIDExOTE1MSwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCA2OSwgCisgICAgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MiwgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3NiwgMjYyLCA3NywgCisgICAgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgMjYyLCA4MSwgMjYyLCA4MiwgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCA4NSwgCisgICAgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCA5OSwgCisgICAgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA0LCAyNjIsIDEwNSwgMjYyLCAxMDYsIAorICAgIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIDExMSwgMjYyLCAxMTIsIDI2MiwgMTEzLCAKKyAgICAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAyNjIsIDEyMCwgCisgICAgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAyNjIsIDY5LCAyNjIsIDcwLCAKKyAgICAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAyNjIsIDc3LCAyNjIsIDc4LCAKKyAgICAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIDg1LCAyNjIsIDg2LCAKKyAgICAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAyNjIsIDk5LCAyNjIsIDEwMCwgCisgICAgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIAogICAgIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgMTEyLCAyNjIsIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAKICAgICAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgCi0gICAgMjYyLCA2NSwgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCA3MSwgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3OCwgMjYyLCA3OSwgCi0gICAgMjYyLCA4MCwgMjYyLCA4MSwgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCA4NSwgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgCi0gICAgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCA5OSwgMjYyLCAxMDAsIDI2MiwgMTAyLCAyNjIsIAotICAgIDEwNCwgMjYyLCAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAKLSAgICAxMTIsIDI2MiwgMTEzLCAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgCi0gICAgMTE5LCAyNjIsIDEyMCwgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAKLSAgICAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAKLSAgICAyNjIsIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIDg0LCAKLSAgICAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAKLSAgICAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDQsIDI2MiwgMTA1LCAyNjIsIAotICAgIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTExLCAyNjIsIDExMiwgMjYyLCAKLSAgICAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAxMTksIDI2MiwgCi0gICAgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjgsIDI2MiwgNjksIDI2MiwgNzAsIAotICAgIDI2MiwgNzEsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgNzcsIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIAorICAgIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgNjgsIDI2MiwgNjksIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzIsIAorICAgIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgNzcsIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIAorICAgIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIAorICAgIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAKKyAgICAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNCwgMjYyLCAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgCisgICAgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgMTEyLCAyNjIsIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIAorICAgIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCA2NSwgCisgICAgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCA3MSwgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgCiAgICAgMjYyLCA4MSwgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCA4NSwgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgCi0gICAgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCA5OSwgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgCi0gICAgMTA0LCAyNjIsIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIAotICAgIDExMSwgMjYyLCAxMTIsIDI2MiwgMTEzLCAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAKLSAgICAxMTgsIDI2MiwgMTE5LCAyNjIsIDEyMCwgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY4LCAKLSAgICAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAyNjIsIDc3LCAKLSAgICAyNjIsIDc5LCAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAKLSAgICAyNjIsIDk3LCAyNjIsIDk4LCAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAKLSAgICAxMDQsIDI2MiwgMTA1LCAyNjIsIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgCi0gICAgMTExLCAyNjIsIDExMiwgMjYyLCAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIAotICAgIDExOCwgMjYyLCAxMTksIDI2MiwgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIAotICAgIDI2MiwgNjgsIDI2MiwgNjksIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzIsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIAotICAgIDI2MiwgNzYsIDI2MiwgNzcsIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIAotICAgIDI2MiwgODQsIDI2MiwgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIAorICAgIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgOTksIDI2MiwgMTAwLCAyNjIsIDEwMiwgMjYyLCAxMDQsIDI2MiwgCisgICAgMTA1LCAyNjIsIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTEyLCAyNjIsIAorICAgIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAKKyAgICAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCA2OSwgCisgICAgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MiwgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3NiwgMjYyLCA3NywgCisgICAgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgMjYyLCA4MSwgMjYyLCA4MiwgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCA4NSwgCisgICAgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCA5OSwgCisgICAgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA0LCAyNjIsIDEwNSwgMjYyLCAxMDYsIAorICAgIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIDExMSwgMjYyLCAxMTIsIDI2MiwgMTEzLCAKKyAgICAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAyNjIsIDEyMCwgCisgICAgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY4LCAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAKKyAgICAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAyNjIsIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAKKyAgICAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDk3LCAKKyAgICAyNjIsIDk4LCAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDQsIDI2MiwgCisgICAgMTA1LCAyNjIsIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTExLCAyNjIsIAorICAgIDExMiwgMjYyLCAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAKKyAgICAxMTksIDI2MiwgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjgsIDI2MiwgNjksIAorICAgIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgNzcsIDI2MiwgNzksIAorICAgIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTcsIAogICAgIDI2MiwgOTgsIDI2MiwgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNCwgMjYyLCAKICAgICAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgCiAgICAgMTEyLCAyNjIsIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIApAQCAtMzUzNiwzMyArMzg3MSwxNSBAQAogICAgIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAKICAgICAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNCwgMjYyLCAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgCiAgICAgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgMTEyLCAyNjIsIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIAotICAgIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCAKLSAgICAzMDUsIDI2MiwgNTY3LCAyNjIsIDkxMywgMjYyLCA5MTQsIDI2MiwgOTE1LCAyNjIsIDkxNiwgMjYyLCA5MTcsIDI2MiwgCi0gICAgOTE4LCAyNjIsIDkxOSwgMjYyLCA5MjAsIDI2MiwgOTIxLCAyNjIsIDkyMiwgMjYyLCA5MjMsIDI2MiwgOTI0LCAyNjIsIAotICAgIDkyNSwgMjYyLCA5MjYsIDI2MiwgOTI3LCAyNjIsIDkyOCwgMjYyLCA5MjksIDI2MiwgMTAxMiwgMjYyLCA5MzEsIDI2MiwgCi0gICAgOTMyLCAyNjIsIDkzMywgMjYyLCA5MzQsIDI2MiwgOTM1LCAyNjIsIDkzNiwgMjYyLCA5MzcsIDI2MiwgODcxMSwgMjYyLCAKLSAgICA5NDUsIDI2MiwgOTQ2LCAyNjIsIDk0NywgMjYyLCA5NDgsIDI2MiwgOTQ5LCAyNjIsIDk1MCwgMjYyLCA5NTEsIDI2MiwgCi0gICAgOTUyLCAyNjIsIDk1MywgMjYyLCA5NTQsIDI2MiwgOTU1LCAyNjIsIDk1NiwgMjYyLCA5NTcsIDI2MiwgOTU4LCAyNjIsIAotICAgIDk1OSwgMjYyLCA5NjAsIDI2MiwgOTYxLCAyNjIsIDk2MiwgMjYyLCA5NjMsIDI2MiwgOTY0LCAyNjIsIDk2NSwgMjYyLCAKLSAgICA5NjYsIDI2MiwgOTY3LCAyNjIsIDk2OCwgMjYyLCA5NjksIDI2MiwgODcwNiwgMjYyLCAxMDEzLCAyNjIsIDk3NywgMjYyLCAKLSAgICAxMDA4LCAyNjIsIDk4MSwgMjYyLCAxMDA5LCAyNjIsIDk4MiwgMjYyLCA5MTMsIDI2MiwgOTE0LCAyNjIsIDkxNSwgMjYyLCAKLSAgICA5MTYsIDI2MiwgOTE3LCAyNjIsIDkxOCwgMjYyLCA5MTksIDI2MiwgOTIwLCAyNjIsIDkyMSwgMjYyLCA5MjIsIDI2MiwgCi0gICAgOTIzLCAyNjIsIDkyNCwgMjYyLCA5MjUsIDI2MiwgOTI2LCAyNjIsIDkyNywgMjYyLCA5MjgsIDI2MiwgOTI5LCAyNjIsIAotICAgIDEwMTIsIDI2MiwgOTMxLCAyNjIsIDkzMiwgMjYyLCA5MzMsIDI2MiwgOTM0LCAyNjIsIDkzNSwgMjYyLCA5MzYsIDI2MiwgCi0gICAgOTM3LCAyNjIsIDg3MTEsIDI2MiwgOTQ1LCAyNjIsIDk0NiwgMjYyLCA5NDcsIDI2MiwgOTQ4LCAyNjIsIDk0OSwgMjYyLCAKLSAgICA5NTAsIDI2MiwgOTUxLCAyNjIsIDk1MiwgMjYyLCA5NTMsIDI2MiwgOTU0LCAyNjIsIDk1NSwgMjYyLCA5NTYsIDI2MiwgCi0gICAgOTU3LCAyNjIsIDk1OCwgMjYyLCA5NTksIDI2MiwgOTYwLCAyNjIsIDk2MSwgMjYyLCA5NjIsIDI2MiwgOTYzLCAyNjIsIAotICAgIDk2NCwgMjYyLCA5NjUsIDI2MiwgOTY2LCAyNjIsIDk2NywgMjYyLCA5NjgsIDI2MiwgOTY5LCAyNjIsIDg3MDYsIDI2MiwgCi0gICAgMTAxMywgMjYyLCA5NzcsIDI2MiwgMTAwOCwgMjYyLCA5ODEsIDI2MiwgMTAwOSwgMjYyLCA5ODIsIDI2MiwgOTEzLCAyNjIsIAotICAgIDkxNCwgMjYyLCA5MTUsIDI2MiwgOTE2LCAyNjIsIDkxNywgMjYyLCA5MTgsIDI2MiwgOTE5LCAyNjIsIDkyMCwgMjYyLCAKLSAgICA5MjEsIDI2MiwgOTIyLCAyNjIsIDkyMywgMjYyLCA5MjQsIDI2MiwgOTI1LCAyNjIsIDkyNiwgMjYyLCA5MjcsIDI2MiwgCi0gICAgOTI4LCAyNjIsIDkyOSwgMjYyLCAxMDEyLCAyNjIsIDkzMSwgMjYyLCA5MzIsIDI2MiwgOTMzLCAyNjIsIDkzNCwgMjYyLCAKLSAgICA5MzUsIDI2MiwgOTM2LCAyNjIsIDkzNywgMjYyLCA4NzExLCAyNjIsIDk0NSwgMjYyLCA5NDYsIDI2MiwgOTQ3LCAyNjIsIAotICAgIDk0OCwgMjYyLCA5NDksIDI2MiwgOTUwLCAyNjIsIDk1MSwgMjYyLCA5NTIsIDI2MiwgOTUzLCAyNjIsIDk1NCwgMjYyLCAKLSAgICA5NTUsIDI2MiwgOTU2LCAyNjIsIDk1NywgMjYyLCA5NTgsIDI2MiwgOTU5LCAyNjIsIDk2MCwgMjYyLCA5NjEsIDI2MiwgCi0gICAgOTYyLCAyNjIsIDk2MywgMjYyLCA5NjQsIDI2MiwgOTY1LCAyNjIsIDk2NiwgMjYyLCA5NjcsIDI2MiwgOTY4LCAyNjIsIAotICAgIDk2OSwgMjYyLCA4NzA2LCAyNjIsIDEwMTMsIDI2MiwgOTc3LCAyNjIsIDEwMDgsIDI2MiwgOTgxLCAyNjIsIDEwMDksIDI2MiwgCi0gICAgOTgyLCAyNjIsIDkxMywgMjYyLCA5MTQsIDI2MiwgOTE1LCAyNjIsIDkxNiwgMjYyLCA5MTcsIDI2MiwgOTE4LCAyNjIsIAorICAgIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCA2NSwgCisgICAgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCA2OSwgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MiwgMjYyLCA3MywgCisgICAgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3NiwgMjYyLCA3NywgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgMjYyLCA4MSwgCisgICAgMjYyLCA4MiwgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCA4NSwgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgCisgICAgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCA5OSwgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAKKyAgICAxMDMsIDI2MiwgMTA0LCAyNjIsIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgCisgICAgMTEwLCAyNjIsIDExMSwgMjYyLCAxMTIsIDI2MiwgMTEzLCAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIAorICAgIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAyNjIsIDEyMCwgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDMwNSwgMjYyLCAKKyAgICA1NjcsIDI2MiwgOTEzLCAyNjIsIDkxNCwgMjYyLCA5MTUsIDI2MiwgOTE2LCAyNjIsIDkxNywgMjYyLCA5MTgsIDI2MiwgCiAgICAgOTE5LCAyNjIsIDkyMCwgMjYyLCA5MjEsIDI2MiwgOTIyLCAyNjIsIDkyMywgMjYyLCA5MjQsIDI2MiwgOTI1LCAyNjIsIAogICAgIDkyNiwgMjYyLCA5MjcsIDI2MiwgOTI4LCAyNjIsIDkyOSwgMjYyLCAxMDEyLCAyNjIsIDkzMSwgMjYyLCA5MzIsIDI2MiwgCiAgICAgOTMzLCAyNjIsIDkzNCwgMjYyLCA5MzUsIDI2MiwgOTM2LCAyNjIsIDkzNywgMjYyLCA4NzExLCAyNjIsIDk0NSwgMjYyLCAKQEAgLTM1NzgsMzM5ICszODk1LDU0NiBAQAogICAgIDk1MSwgMjYyLCA5NTIsIDI2MiwgOTUzLCAyNjIsIDk1NCwgMjYyLCA5NTUsIDI2MiwgOTU2LCAyNjIsIDk1NywgMjYyLCAKICAgICA5NTgsIDI2MiwgOTU5LCAyNjIsIDk2MCwgMjYyLCA5NjEsIDI2MiwgOTYyLCAyNjIsIDk2MywgMjYyLCA5NjQsIDI2MiwgCiAgICAgOTY1LCAyNjIsIDk2NiwgMjYyLCA5NjcsIDI2MiwgOTY4LCAyNjIsIDk2OSwgMjYyLCA4NzA2LCAyNjIsIDEwMTMsIDI2MiwgCi0gICAgOTc3LCAyNjIsIDEwMDgsIDI2MiwgOTgxLCAyNjIsIDEwMDksIDI2MiwgOTgyLCAyNjIsIDk4OCwgMjYyLCA5ODksIDI2MiwgCi0gICAgNDgsIDI2MiwgNDksIDI2MiwgNTAsIDI2MiwgNTEsIDI2MiwgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgCi0gICAgNTYsIDI2MiwgNTcsIDI2MiwgNDgsIDI2MiwgNDksIDI2MiwgNTAsIDI2MiwgNTEsIDI2MiwgNTIsIDI2MiwgNTMsIDI2MiwgCi0gICAgNTQsIDI2MiwgNTUsIDI2MiwgNTYsIDI2MiwgNTcsIDI2MiwgNDgsIDI2MiwgNDksIDI2MiwgNTAsIDI2MiwgNTEsIDI2MiwgCi0gICAgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgNTYsIDI2MiwgNTcsIDI2MiwgNDgsIDI2MiwgNDksIDI2MiwgCi0gICAgNTAsIDI2MiwgNTEsIDI2MiwgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgNTYsIDI2MiwgNTcsIDI2MiwgCi0gICAgNDgsIDI2MiwgNDksIDI2MiwgNTAsIDI2MiwgNTEsIDI2MiwgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgCi0gICAgNTYsIDI2MiwgNTcsIDI2MiwgMTU3NSwgMjYyLCAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTU4MywgMjYyLCAxNjA4LCAyNjIsIAotICAgIDE1ODYsIDI2MiwgMTU4MSwgMjYyLCAxNTkxLCAyNjIsIDE2MTAsIDI2MiwgMTYwMywgMjYyLCAxNjA0LCAyNjIsIDE2MDUsIAotICAgIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgCi0gICAgMTU4NSwgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIDI2MiwgMTU3OSwgMjYyLCAxNTgyLCAyNjIsIDE1ODQsIDI2MiwgMTU5MCwgCi0gICAgMjYyLCAxNTkyLCAyNjIsIDE1OTQsIDI2MiwgMTY0NiwgMjYyLCAxNzIyLCAyNjIsIDE2OTcsIDI2MiwgMTY0NywgMjYyLCAKLSAgICAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTYwNywgMjYyLCAxNTgxLCAyNjIsIDE2MTAsIDI2MiwgMTYwMywgMjYyLCAxNjA0LCAKLSAgICAyNjIsIDE2MDUsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIAotICAgIDE2MDIsIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAyNjIsIDE1NzksIDI2MiwgMTU4MiwgMjYyLCAxNTkwLCAyNjIsIDE1OTQsIAotICAgIDI2MiwgMTU4MCwgMjYyLCAxNTgxLCAyNjIsIDE2MTAsIDI2MiwgMTYwNCwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgCi0gICAgMTU5MywgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgMTU4OCwgMjYyLCAxNTgyLCAyNjIsIDE1OTAsIDI2MiwgMTU5NCwgCi0gICAgMjYyLCAxNzIyLCAyNjIsIDE2NDcsIDI2MiwgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE2MDcsIDI2MiwgMTU4MSwgMjYyLCAKLSAgICAxNTkxLCAyNjIsIDE2MTAsIDI2MiwgMTYwMywgMjYyLCAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAKLSAgICAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODgsIDI2MiwgMTU3OCwgMjYyLCAxNTc5LCAyNjIsIAotICAgIDE1ODIsIDI2MiwgMTU5MCwgMjYyLCAxNTkyLCAyNjIsIDE1OTQsIDI2MiwgMTY0NiwgMjYyLCAxNjk3LCAyNjIsIDE1NzUsIAotICAgIDI2MiwgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE1ODMsIDI2MiwgMTYwNywgMjYyLCAxNjA4LCAyNjIsIDE1ODYsIDI2MiwgCi0gICAgMTU4MSwgMjYyLCAxNTkxLCAyNjIsIDE2MTAsIDI2MiwgMTYwNCwgMjYyLCAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgCi0gICAgMjYyLCAxNTkzLCAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODUsIDI2MiwgMTU4OCwgMjYyLCAKLSAgICAxNTc4LCAyNjIsIDE1NzksIDI2MiwgMTU4MiwgMjYyLCAxNTg0LCAyNjIsIDE1OTAsIDI2MiwgMTU5MiwgMjYyLCAxNTk0LCAKLSAgICAyNjIsIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNTgzLCAyNjIsIDE2MDgsIDI2MiwgMTU4NiwgMjYyLCAxNTgxLCAyNjIsIAotICAgIDE1OTEsIDI2MiwgMTYxMCwgMjYyLCAxNjA0LCAyNjIsIDE2MDUsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIAotICAgIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgMTU4NSwgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIDI2MiwgCi0gICAgMTU3OSwgMjYyLCAxNTgyLCAyNjIsIDE1ODQsIDI2MiwgMTU5MCwgMjYyLCAxNTkyLCAyNjIsIDE1OTQsIDUxNCwgNDgsIDQ2LCAKLSAgICA1MTQsIDQ4LCA0NCwgNTE0LCA0OSwgNDQsIDUxNCwgNTAsIDQ0LCA1MTQsIDUxLCA0NCwgNTE0LCA1MiwgNDQsIDUxNCwgNTMsIAotICAgIDQ0LCA1MTQsIDU0LCA0NCwgNTE0LCA1NSwgNDQsIDUxNCwgNTYsIDQ0LCA1MTQsIDU3LCA0NCwgNzcwLCA0MCwgNjUsIDQxLCAKLSAgICA3NzAsIDQwLCA2NiwgNDEsIDc3MCwgNDAsIDY3LCA0MSwgNzcwLCA0MCwgNjgsIDQxLCA3NzAsIDQwLCA2OSwgNDEsIDc3MCwgCi0gICAgNDAsIDcwLCA0MSwgNzcwLCA0MCwgNzEsIDQxLCA3NzAsIDQwLCA3MiwgNDEsIDc3MCwgNDAsIDczLCA0MSwgNzcwLCA0MCwgCi0gICAgNzQsIDQxLCA3NzAsIDQwLCA3NSwgNDEsIDc3MCwgNDAsIDc2LCA0MSwgNzcwLCA0MCwgNzcsIDQxLCA3NzAsIDQwLCA3OCwgCi0gICAgNDEsIDc3MCwgNDAsIDc5LCA0MSwgNzcwLCA0MCwgODAsIDQxLCA3NzAsIDQwLCA4MSwgNDEsIDc3MCwgNDAsIDgyLCA0MSwgCi0gICAgNzcwLCA0MCwgODMsIDQxLCA3NzAsIDQwLCA4NCwgNDEsIDc3MCwgNDAsIDg1LCA0MSwgNzcwLCA0MCwgODYsIDQxLCA3NzAsIAotICAgIDQwLCA4NywgNDEsIDc3MCwgNDAsIDg4LCA0MSwgNzcwLCA0MCwgODksIDQxLCA3NzAsIDQwLCA5MCwgNDEsIDc3MCwgCi0gICAgMTIzMDgsIDgzLCAxMjMwOSwgMjYzLCA2NywgMjYzLCA4MiwgNTE5LCA2NywgNjgsIDUxOSwgODcsIDkwLCAyNjYsIDY1LCAKLSAgICAyNjYsIDY2LCAyNjYsIDY3LCAyNjYsIDY4LCAyNjYsIDY5LCAyNjYsIDcwLCAyNjYsIDcxLCAyNjYsIDcyLCAyNjYsIDczLCAKLSAgICAyNjYsIDc0LCAyNjYsIDc1LCAyNjYsIDc2LCAyNjYsIDc3LCAyNjYsIDc4LCAyNjYsIDc5LCAyNjYsIDgwLCAyNjYsIDgxLCAKLSAgICAyNjYsIDgyLCAyNjYsIDgzLCAyNjYsIDg0LCAyNjYsIDg1LCAyNjYsIDg2LCAyNjYsIDg3LCAyNjYsIDg4LCAyNjYsIDg5LCAKLSAgICAyNjYsIDkwLCA1MjIsIDcyLCA4NiwgNTIyLCA3NywgODYsIDUyMiwgODMsIDY4LCA1MjIsIDgzLCA4MywgNzc4LCA4MCwgODAsIAotICAgIDg2LCA1MjIsIDg3LCA2NywgNTE1LCA3NywgNjcsIDUxNSwgNzcsIDY4LCA1MjIsIDY4LCA3NCwgNTIyLCAxMjQxMSwgCi0gICAgMTIzNjMsIDUyMiwgMTI0NjcsIDEyNDY3LCAyNjYsIDEyNDY5LCAyNjYsIDI1MTYzLCAyNjYsIDIzMzgzLCAyNjYsIDIxNDUyLCAKLSAgICAyNjYsIDEyNDg3LCAyNjYsIDIwMTA4LCAyNjYsIDIyODEwLCAyNjYsIDM1Mjk5LCAyNjYsIDIyODI1LCAyNjYsIDIwMTMyLCAKLSAgICAyNjYsIDI2MTQ0LCAyNjYsIDI4OTYxLCAyNjYsIDI2MDA5LCAyNjYsIDIxMDY5LCAyNjYsIDI0NDYwLCAyNjYsIDIwODc3LCAKLSAgICAyNjYsIDI2MDMyLCAyNjYsIDIxMDIxLCAyNjYsIDMyMDY2LCAyNjYsIDI5OTgzLCAyNjYsIDM2MDA5LCAyNjYsIDIyNzY4LCAKLSAgICAyNjYsIDIxNTYxLCAyNjYsIDI4NDM2LCAyNjYsIDI1MjM3LCAyNjYsIDI1NDI5LCAyNjYsIDE5OTY4LCAyNjYsIDE5OTc3LCAKLSAgICAyNjYsIDM2OTM4LCAyNjYsIDI0MDM4LCAyNjYsIDIwMDEzLCAyNjYsIDIxNDkxLCAyNjYsIDI1MzUxLCAyNjYsIDM2MjA4LCAKLSAgICAyNjYsIDI1MTcxLCAyNjYsIDMxMTA1LCAyNjYsIDMxMzU0LCAyNjYsIDIxNTEyLCAyNjYsIDI4Mjg4LCAyNjYsIDI2Mzc3LCAKLSAgICAyNjYsIDI2Mzc2LCAyNjYsIDMwMDAzLCAyNjYsIDIxMTA2LCAyNjYsIDIxOTQyLCA3NzAsIDEyMzA4LCAyNjQxMiwgMTIzMDksIAotICAgIDc3MCwgMTIzMDgsIDE5OTc3LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjAxMDgsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMzQzMywgCi0gICAgMTIzMDksIDc3MCwgMTIzMDgsIDI4ODU3LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjUxNzEsIDEyMzA5LCA3NzAsIDEyMzA4LCAKLSAgICAzMDQyMywgMTIzMDksIDc3MCwgMTIzMDgsIDIxMjEzLCAxMjMwOSwgNzcwLCAxMjMwOCwgMjU5NDMsIDEyMzA5LCAyNjMsIAotICAgIDI0NDcxLCAyNjMsIDIxNDg3LCAyNTYsIDIwMDI5LCAyNTYsIDIwMDI0LCAyNTYsIDIwMDMzLCAyNTYsIDEzMTM2MiwgMjU2LCAKLSAgICAyMDMyMCwgMjU2LCAyMDM5OCwgMjU2LCAyMDQxMSwgMjU2LCAyMDQ4MiwgMjU2LCAyMDYwMiwgMjU2LCAyMDYzMywgMjU2LCAKLSAgICAyMDcxMSwgMjU2LCAyMDY4NywgMjU2LCAxMzQ3MCwgMjU2LCAxMzI2NjYsIDI1NiwgMjA4MTMsIDI1NiwgMjA4MjAsIDI1NiwgCi0gICAgMjA4MzYsIDI1NiwgMjA4NTUsIDI1NiwgMTMyMzgwLCAyNTYsIDEzNDk3LCAyNTYsIDIwODM5LCAyNTYsIDIwODc3LCAyNTYsIAotICAgIDEzMjQyNywgMjU2LCAyMDg4NywgMjU2LCAyMDkwMCwgMjU2LCAyMDE3MiwgMjU2LCAyMDkwOCwgMjU2LCAyMDkxNywgMjU2LCAKLSAgICAxNjg0MTUsIDI1NiwgMjA5ODEsIDI1NiwgMjA5OTUsIDI1NiwgMTM1MzUsIDI1NiwgMjEwNTEsIDI1NiwgMjEwNjIsIDI1NiwgCi0gICAgMjExMDYsIDI1NiwgMjExMTEsIDI1NiwgMTM1ODksIDI1NiwgMjExOTEsIDI1NiwgMjExOTMsIDI1NiwgMjEyMjAsIDI1NiwgCi0gICAgMjEyNDIsIDI1NiwgMjEyNTMsIDI1NiwgMjEyNTQsIDI1NiwgMjEyNzEsIDI1NiwgMjEzMjEsIDI1NiwgMjEzMjksIDI1NiwgCi0gICAgMjEzMzgsIDI1NiwgMjEzNjMsIDI1NiwgMjEzNzMsIDI1NiwgMjEzNzUsIDI1NiwgMjEzNzUsIDI1NiwgMjEzNzUsIDI1NiwgCi0gICAgMTMzNjc2LCAyNTYsIDI4Nzg0LCAyNTYsIDIxNDUwLCAyNTYsIDIxNDcxLCAyNTYsIDEzMzk4NywgMjU2LCAyMTQ4MywgMjU2LCAKLSAgICAyMTQ4OSwgMjU2LCAyMTUxMCwgMjU2LCAyMTY2MiwgMjU2LCAyMTU2MCwgMjU2LCAyMTU3NiwgMjU2LCAyMTYwOCwgMjU2LCAKLSAgICAyMTY2NiwgMjU2LCAyMTc1MCwgMjU2LCAyMTc3NiwgMjU2LCAyMTg0MywgMjU2LCAyMTg1OSwgMjU2LCAyMTg5MiwgMjU2LCAKLSAgICAyMTg5MiwgMjU2LCAyMTkxMywgMjU2LCAyMTkzMSwgMjU2LCAyMTkzOSwgMjU2LCAyMTk1NCwgMjU2LCAyMjI5NCwgMjU2LCAKLSAgICAyMjAyMiwgMjU2LCAyMjI5NSwgMjU2LCAyMjA5NywgMjU2LCAyMjEzMiwgMjU2LCAyMDk5OSwgMjU2LCAyMjc2NiwgMjU2LCAKLSAgICAyMjQ3OCwgMjU2LCAyMjUxNiwgMjU2LCAyMjU0MSwgMjU2LCAyMjQxMSwgMjU2LCAyMjU3OCwgMjU2LCAyMjU3NywgMjU2LCAKLSAgICAyMjcwMCwgMjU2LCAxMzY0MjAsIDI1NiwgMjI3NzAsIDI1NiwgMjI3NzUsIDI1NiwgMjI3OTAsIDI1NiwgMjI4MTAsIDI1NiwgCi0gICAgMjI4MTgsIDI1NiwgMjI4ODIsIDI1NiwgMTM2ODcyLCAyNTYsIDEzNjkzOCwgMjU2LCAyMzAyMCwgMjU2LCAyMzA2NywgMjU2LCAKLSAgICAyMzA3OSwgMjU2LCAyMzAwMCwgMjU2LCAyMzE0MiwgMjU2LCAxNDA2MiwgMjU2LCAxNDA3NiwgMjU2LCAyMzMwNCwgMjU2LCAKLSAgICAyMzM1OCwgMjU2LCAyMzM1OCwgMjU2LCAxMzc2NzIsIDI1NiwgMjM0OTEsIDI1NiwgMjM1MTIsIDI1NiwgMjM1MjcsIDI1NiwgCi0gICAgMjM1MzksIDI1NiwgMTM4MDA4LCAyNTYsIDIzNTUxLCAyNTYsIDIzNTU4LCAyNTYsIDI0NDAzLCAyNTYsIDIzNTg2LCAyNTYsIAotICAgIDE0MjA5LCAyNTYsIDIzNjQ4LCAyNTYsIDIzNjYyLCAyNTYsIDIzNzQ0LCAyNTYsIDIzNjkzLCAyNTYsIDEzODcyNCwgMjU2LCAKLSAgICAyMzg3NSwgMjU2LCAxMzg3MjYsIDI1NiwgMjM5MTgsIDI1NiwgMjM5MTUsIDI1NiwgMjM5MzIsIDI1NiwgMjQwMzMsIDI1NiwgCi0gICAgMjQwMzQsIDI1NiwgMTQzODMsIDI1NiwgMjQwNjEsIDI1NiwgMjQxMDQsIDI1NiwgMjQxMjUsIDI1NiwgMjQxNjksIDI1NiwgCi0gICAgMTQ0MzQsIDI1NiwgMTM5NjUxLCAyNTYsIDE0NDYwLCAyNTYsIDI0MjQwLCAyNTYsIDI0MjQzLCAyNTYsIDI0MjQ2LCAyNTYsIAotICAgIDI0MjY2LCAyNTYsIDE3Mjk0NiwgMjU2LCAyNDMxOCwgMjU2LCAxNDAwODEsIDI1NiwgMTQwMDgxLCAyNTYsIDMzMjgxLCAKLSAgICAyNTYsIDI0MzU0LCAyNTYsIDI0MzU0LCAyNTYsIDE0NTM1LCAyNTYsIDE0NDA1NiwgMjU2LCAxNTYxMjIsIDI1NiwgMjQ0MTgsIAotICAgIDI1NiwgMjQ0MjcsIDI1NiwgMTQ1NjMsIDI1NiwgMjQ0NzQsIDI1NiwgMjQ1MjUsIDI1NiwgMjQ1MzUsIDI1NiwgMjQ1NjksIAotICAgIDI1NiwgMjQ3MDUsIDI1NiwgMTQ2NTAsIDI1NiwgMTQ2MjAsIDI1NiwgMjQ3MjQsIDI1NiwgMTQxMDEyLCAyNTYsIDI0Nzc1LCAKLSAgICAyNTYsIDI0OTA0LCAyNTYsIDI0OTA4LCAyNTYsIDI0OTEwLCAyNTYsIDI0OTA4LCAyNTYsIDI0OTU0LCAyNTYsIDI0OTc0LCAKLSAgICAyNTYsIDI1MDEwLCAyNTYsIDI0OTk2LCAyNTYsIDI1MDA3LCAyNTYsIDI1MDU0LCAyNTYsIDI1MDc0LCAyNTYsIDI1MDc4LCAKLSAgICAyNTYsIDI1MTA0LCAyNTYsIDI1MTE1LCAyNTYsIDI1MTgxLCAyNTYsIDI1MjY1LCAyNTYsIDI1MzAwLCAyNTYsIDI1NDI0LCAKLSAgICAyNTYsIDE0MjA5MiwgMjU2LCAyNTQwNSwgMjU2LCAyNTM0MCwgMjU2LCAyNTQ0OCwgMjU2LCAyNTQ3NSwgMjU2LCAyNTU3MiwgCi0gICAgMjU2LCAxNDIzMjEsIDI1NiwgMjU2MzQsIDI1NiwgMjU1NDEsIDI1NiwgMjU1MTMsIDI1NiwgMTQ4OTQsIDI1NiwgMjU3MDUsIAotICAgIDI1NiwgMjU3MjYsIDI1NiwgMjU3NTcsIDI1NiwgMjU3MTksIDI1NiwgMTQ5NTYsIDI1NiwgMjU5MzUsIDI1NiwgMjU5NjQsIAotICAgIDI1NiwgMTQzMzcwLCAyNTYsIDI2MDgzLCAyNTYsIDI2MzYwLCAyNTYsIDI2MTg1LCAyNTYsIDE1MTI5LCAyNTYsIDI2MjU3LCAKLSAgICAyNTYsIDE1MTEyLCAyNTYsIDE1MDc2LCAyNTYsIDIwODgyLCAyNTYsIDIwODg1LCAyNTYsIDI2MzY4LCAyNTYsIDI2MjY4LCAKLSAgICAyNTYsIDMyOTQxLCAyNTYsIDE3MzY5LCAyNTYsIDI2MzkxLCAyNTYsIDI2Mzk1LCAyNTYsIDI2NDAxLCAyNTYsIDI2NDYyLCAKLSAgICAyNTYsIDI2NDUxLCAyNTYsIDE0NDMyMywgMjU2LCAxNTE3NywgMjU2LCAyNjYxOCwgMjU2LCAyNjUwMSwgMjU2LCAyNjcwNiwgCi0gICAgMjU2LCAyNjc1NywgMjU2LCAxNDQ0OTMsIDI1NiwgMjY3NjYsIDI1NiwgMjY2NTUsIDI1NiwgMjY5MDAsIDI1NiwgMTUyNjEsIAotICAgIDI1NiwgMjY5NDYsIDI1NiwgMjcwNDMsIDI1NiwgMjcxMTQsIDI1NiwgMjczMDQsIDI1NiwgMTQ1MDU5LCAyNTYsIDI3MzU1LCAKLSAgICAyNTYsIDE1Mzg0LCAyNTYsIDI3NDI1LCAyNTYsIDE0NTU3NSwgMjU2LCAyNzQ3NiwgMjU2LCAxNTQzOCwgMjU2LCAyNzUwNiwgCi0gICAgMjU2LCAyNzU1MSwgMjU2LCAyNzU3OCwgMjU2LCAyNzU3OSwgMjU2LCAxNDYwNjEsIDI1NiwgMTM4NTA3LCAyNTYsIAotICAgIDE0NjE3MCwgMjU2LCAyNzcyNiwgMjU2LCAxNDY2MjAsIDI1NiwgMjc4MzksIDI1NiwgMjc4NTMsIDI1NiwgMjc3NTEsIDI1NiwgCi0gICAgMjc5MjYsIDI1NiwgMjc5NjYsIDI1NiwgMjgwMjMsIDI1NiwgMjc5NjksIDI1NiwgMjgwMDksIDI1NiwgMjgwMjQsIDI1NiwgCi0gICAgMjgwMzcsIDI1NiwgMTQ2NzE4LCAyNTYsIDI3OTU2LCAyNTYsIDI4MjA3LCAyNTYsIDI4MjcwLCAyNTYsIDE1NjY3LCAyNTYsIAotICAgIDI4MzYzLCAyNTYsIDI4MzU5LCAyNTYsIDE0NzE1MywgMjU2LCAyODE1MywgMjU2LCAyODUyNiwgMjU2LCAxNDcyOTQsIDI1NiwgCi0gICAgMTQ3MzQyLCAyNTYsIDI4NjE0LCAyNTYsIDI4NzI5LCAyNTYsIDI4NzAyLCAyNTYsIDI4Njk5LCAyNTYsIDE1NzY2LCAyNTYsIAotICAgIDI4NzQ2LCAyNTYsIDI4Nzk3LCAyNTYsIDI4NzkxLCAyNTYsIDI4ODQ1LCAyNTYsIDEzMjM4OSwgMjU2LCAyODk5NywgMjU2LCAKLSAgICAxNDgwNjcsIDI1NiwgMjkwODQsIDI1NiwgMTQ4Mzk1LCAyNTYsIDI5MjI0LCAyNTYsIDI5MjM3LCAyNTYsIDI5MjY0LCAyNTYsIAotICAgIDE0OTAwMCwgMjU2LCAyOTMxMiwgMjU2LCAyOTMzMywgMjU2LCAxNDkzMDEsIDI1NiwgMTQ5NTI0LCAyNTYsIDI5NTYyLCAKLSAgICAyNTYsIDI5NTc5LCAyNTYsIDE2MDQ0LCAyNTYsIDI5NjA1LCAyNTYsIDE2MDU2LCAyNTYsIDE2MDU2LCAyNTYsIDI5NzY3LCAKLSAgICAyNTYsIDI5Nzg4LCAyNTYsIDI5ODA5LCAyNTYsIDI5ODI5LCAyNTYsIDI5ODk4LCAyNTYsIDE2MTU1LCAyNTYsIDI5OTg4LCAKLSAgICAyNTYsIDE1MDU4MiwgMjU2LCAzMDAxNCwgMjU2LCAxNTA2NzQsIDI1NiwgMzAwNjQsIDI1NiwgMTM5Njc5LCAyNTYsIAotICAgIDMwMjI0LCAyNTYsIDE1MTQ1NywgMjU2LCAxNTE0ODAsIDI1NiwgMTUxNjIwLCAyNTYsIDE2MzgwLCAyNTYsIDE2MzkyLCAKLSAgICAyNTYsIDMwNDUyLCAyNTYsIDE1MTc5NSwgMjU2LCAxNTE3OTQsIDI1NiwgMTUxODMzLCAyNTYsIDE1MTg1OSwgMjU2LCAKLSAgICAzMDQ5NCwgMjU2LCAzMDQ5NSwgMjU2LCAzMDQ5NSwgMjU2LCAzMDUzOCwgMjU2LCAxNjQ0MSwgMjU2LCAzMDYwMywgMjU2LCAKLSAgICAxNjQ1NCwgMjU2LCAxNjUzNCwgMjU2LCAxNTI2MDUsIDI1NiwgMzA3OTgsIDI1NiwgMzA4NjAsIDI1NiwgMzA5MjQsIDI1NiwgCi0gICAgMTY2MTEsIDI1NiwgMTUzMTI2LCAyNTYsIDMxMDYyLCAyNTYsIDE1MzI0MiwgMjU2LCAxNTMyODUsIDI1NiwgMzExMTksIAotICAgIDI1NiwgMzEyMTEsIDI1NiwgMTY2ODcsIDI1NiwgMzEyOTYsIDI1NiwgMzEzMDYsIDI1NiwgMzEzMTEsIDI1NiwgMTUzOTgwLCAKLSAgICAyNTYsIDE1NDI3OSwgMjU2LCAxNTQyNzksIDI1NiwgMzE0NzAsIDI1NiwgMTY4OTgsIDI1NiwgMTU0NTM5LCAyNTYsIAotICAgIDMxNjg2LCAyNTYsIDMxNjg5LCAyNTYsIDE2OTM1LCAyNTYsIDE1NDc1MiwgMjU2LCAzMTk1NCwgMjU2LCAxNzA1NiwgMjU2LCAKLSAgICAzMTk3NiwgMjU2LCAzMTk3MSwgMjU2LCAzMjAwMCwgMjU2LCAxNTU1MjYsIDI1NiwgMzIwOTksIDI1NiwgMTcxNTMsIDI1NiwgCi0gICAgMzIxOTksIDI1NiwgMzIyNTgsIDI1NiwgMzIzMjUsIDI1NiwgMTcyMDQsIDI1NiwgMTU2MjAwLCAyNTYsIDE1NjIzMSwgMjU2LCAKLSAgICAxNzI0MSwgMjU2LCAxNTYzNzcsIDI1NiwgMzI2MzQsIDI1NiwgMTU2NDc4LCAyNTYsIDMyNjYxLCAyNTYsIDMyNzYyLCAyNTYsIAotICAgIDMyNzczLCAyNTYsIDE1Njg5MCwgMjU2LCAxNTY5NjMsIDI1NiwgMzI4NjQsIDI1NiwgMTU3MDk2LCAyNTYsIDMyODgwLCAKLSAgICAyNTYsIDE0NDIyMywgMjU2LCAxNzM2NSwgMjU2LCAzMjk0NiwgMjU2LCAzMzAyNywgMjU2LCAxNzQxOSwgMjU2LCAzMzA4NiwgCi0gICAgMjU2LCAyMzIyMSwgMjU2LCAxNTc2MDcsIDI1NiwgMTU3NjIxLCAyNTYsIDE0NDI3NSwgMjU2LCAxNDQyODQsIDI1NiwgCi0gICAgMzMyODEsIDI1NiwgMzMyODQsIDI1NiwgMzY3NjYsIDI1NiwgMTc1MTUsIDI1NiwgMzM0MjUsIDI1NiwgMzM0MTksIDI1NiwgCi0gICAgMzM0MzcsIDI1NiwgMjExNzEsIDI1NiwgMzM0NTcsIDI1NiwgMzM0NTksIDI1NiwgMzM0NjksIDI1NiwgMzM1MTAsIDI1NiwgCi0gICAgMTU4NTI0LCAyNTYsIDMzNTA5LCAyNTYsIDMzNTY1LCAyNTYsIDMzNjM1LCAyNTYsIDMzNzA5LCAyNTYsIDMzNTcxLCAyNTYsIAotICAgIDMzNzI1LCAyNTYsIDMzNzY3LCAyNTYsIDMzODc5LCAyNTYsIDMzNjE5LCAyNTYsIDMzNzM4LCAyNTYsIDMzNzQwLCAyNTYsIAotICAgIDMzNzU2LCAyNTYsIDE1ODc3NCwgMjU2LCAxNTkwODMsIDI1NiwgMTU4OTMzLCAyNTYsIDE3NzA3LCAyNTYsIDM0MDMzLCAKLSAgICAyNTYsIDM0MDM1LCAyNTYsIDM0MDcwLCAyNTYsIDE2MDcxNCwgMjU2LCAzNDE0OCwgMjU2LCAxNTk1MzIsIDI1NiwgMTc3NTcsIAotICAgIDI1NiwgMTc3NjEsIDI1NiwgMTU5NjY1LCAyNTYsIDE1OTk1NCwgMjU2LCAxNzc3MSwgMjU2LCAzNDM4NCwgMjU2LCAzNDM5NiwgCi0gICAgMjU2LCAzNDQwNywgMjU2LCAzNDQwOSwgMjU2LCAzNDQ3MywgMjU2LCAzNDQ0MCwgMjU2LCAzNDU3NCwgMjU2LCAzNDUzMCwgCi0gICAgMjU2LCAzNDY4MSwgMjU2LCAzNDYwMCwgMjU2LCAzNDY2NywgMjU2LCAzNDY5NCwgMjU2LCAxNzg3OSwgMjU2LCAzNDc4NSwgCi0gICAgMjU2LCAzNDgxNywgMjU2LCAxNzkxMywgMjU2LCAzNDkxMiwgMjU2LCAzNDkxNSwgMjU2LCAxNjEzODMsIDI1NiwgMzUwMzEsIAotICAgIDI1NiwgMzUwMzgsIDI1NiwgMTc5NzMsIDI1NiwgMzUwNjYsIDI1NiwgMTM0OTksIDI1NiwgMTYxOTY2LCAyNTYsIDE2MjE1MCwgCi0gICAgMjU2LCAxODExMCwgMjU2LCAxODExOSwgMjU2LCAzNTQ4OCwgMjU2LCAzNTU2NSwgMjU2LCAzNTcyMiwgMjU2LCAzNTkyNSwgCi0gICAgMjU2LCAxNjI5ODQsIDI1NiwgMzYwMTEsIDI1NiwgMzYwMzMsIDI1NiwgMzYxMjMsIDI1NiwgMzYyMTUsIDI1NiwgMTYzNjMxLCAKLSAgICAyNTYsIDEzMzEyNCwgMjU2LCAzNjI5OSwgMjU2LCAzNjI4NCwgMjU2LCAzNjMzNiwgMjU2LCAxMzMzNDIsIDI1NiwgMzY1NjQsIAotICAgIDI1NiwgMzY2NjQsIDI1NiwgMTY1MzMwLCAyNTYsIDE2NTM1NywgMjU2LCAzNzAxMiwgMjU2LCAzNzEwNSwgMjU2LCAzNzEzNywgCi0gICAgMjU2LCAxNjU2NzgsIDI1NiwgMzcxNDcsIDI1NiwgMzc0MzIsIDI1NiwgMzc1OTEsIDI1NiwgMzc1OTIsIDI1NiwgMzc1MDAsIAotICAgIDI1NiwgMzc4ODEsIDI1NiwgMzc5MDksIDI1NiwgMTY2OTA2LCAyNTYsIDM4MjgzLCAyNTYsIDE4ODM3LCAyNTYsIDM4MzI3LCAKLSAgICAyNTYsIDE2NzI4NywgMjU2LCAxODkxOCwgMjU2LCAzODU5NSwgMjU2LCAyMzk4NiwgMjU2LCAzODY5MSwgMjU2LCAxNjgyNjEsIAotICAgIDI1NiwgMTY4NDc0LCAyNTYsIDE5MDU0LCAyNTYsIDE5MDYyLCAyNTYsIDM4ODgwLCAyNTYsIDE2ODk3MCwgMjU2LCAxOTEyMiwgCi0gICAgMjU2LCAxNjkxMTAsIDI1NiwgMzg5MjMsIDI1NiwgMzg5MjMsIDI1NiwgMzg5NTMsIDI1NiwgMTY5Mzk4LCAyNTYsIDM5MTM4LCAKLSAgICAyNTYsIDE5MjUxLCAyNTYsIDM5MjA5LCAyNTYsIDM5MzM1LCAyNTYsIDM5MzYyLCAyNTYsIDM5NDIyLCAyNTYsIDE5NDA2LCAKLSAgICAyNTYsIDE3MDgwMCwgMjU2LCAzOTY5OCwgMjU2LCA0MDAwMCwgMjU2LCA0MDE4OSwgMjU2LCAxOTY2MiwgMjU2LCAxOTY5MywgCi0gICAgMjU2LCA0MDI5NSwgMjU2LCAxNzIyMzgsIDI1NiwgMTk3MDQsIDI1NiwgMTcyMjkzLCAyNTYsIDE3MjU1OCwgMjU2LCAKLSAgICAxNzI2ODksIDI1NiwgNDA2MzUsIDI1NiwgMTk3OTgsIDI1NiwgNDA2OTcsIDI1NiwgNDA3MDIsIDI1NiwgNDA3MDksIDI1NiwgCi0gICAgNDA3MTksIDI1NiwgNDA3MjYsIDI1NiwgNDA3NjMsIDI1NiwgMTczNTY4LCAKKyAgICA5NzcsIDI2MiwgMTAwOCwgMjYyLCA5ODEsIDI2MiwgMTAwOSwgMjYyLCA5ODIsIDI2MiwgOTEzLCAyNjIsIDkxNCwgMjYyLCAKKyAgICA5MTUsIDI2MiwgOTE2LCAyNjIsIDkxNywgMjYyLCA5MTgsIDI2MiwgOTE5LCAyNjIsIDkyMCwgMjYyLCA5MjEsIDI2MiwgCisgICAgOTIyLCAyNjIsIDkyMywgMjYyLCA5MjQsIDI2MiwgOTI1LCAyNjIsIDkyNiwgMjYyLCA5MjcsIDI2MiwgOTI4LCAyNjIsIAorICAgIDkyOSwgMjYyLCAxMDEyLCAyNjIsIDkzMSwgMjYyLCA5MzIsIDI2MiwgOTMzLCAyNjIsIDkzNCwgMjYyLCA5MzUsIDI2MiwgCisgICAgOTM2LCAyNjIsIDkzNywgMjYyLCA4NzExLCAyNjIsIDk0NSwgMjYyLCA5NDYsIDI2MiwgOTQ3LCAyNjIsIDk0OCwgMjYyLCAKKyAgICA5NDksIDI2MiwgOTUwLCAyNjIsIDk1MSwgMjYyLCA5NTIsIDI2MiwgOTUzLCAyNjIsIDk1NCwgMjYyLCA5NTUsIDI2MiwgCisgICAgOTU2LCAyNjIsIDk1NywgMjYyLCA5NTgsIDI2MiwgOTU5LCAyNjIsIDk2MCwgMjYyLCA5NjEsIDI2MiwgOTYyLCAyNjIsIAorICAgIDk2MywgMjYyLCA5NjQsIDI2MiwgOTY1LCAyNjIsIDk2NiwgMjYyLCA5NjcsIDI2MiwgOTY4LCAyNjIsIDk2OSwgMjYyLCAKKyAgICA4NzA2LCAyNjIsIDEwMTMsIDI2MiwgOTc3LCAyNjIsIDEwMDgsIDI2MiwgOTgxLCAyNjIsIDEwMDksIDI2MiwgOTgyLCAyNjIsIAorICAgIDkxMywgMjYyLCA5MTQsIDI2MiwgOTE1LCAyNjIsIDkxNiwgMjYyLCA5MTcsIDI2MiwgOTE4LCAyNjIsIDkxOSwgMjYyLCAKKyAgICA5MjAsIDI2MiwgOTIxLCAyNjIsIDkyMiwgMjYyLCA5MjMsIDI2MiwgOTI0LCAyNjIsIDkyNSwgMjYyLCA5MjYsIDI2MiwgCisgICAgOTI3LCAyNjIsIDkyOCwgMjYyLCA5MjksIDI2MiwgMTAxMiwgMjYyLCA5MzEsIDI2MiwgOTMyLCAyNjIsIDkzMywgMjYyLCAKKyAgICA5MzQsIDI2MiwgOTM1LCAyNjIsIDkzNiwgMjYyLCA5MzcsIDI2MiwgODcxMSwgMjYyLCA5NDUsIDI2MiwgOTQ2LCAyNjIsIAorICAgIDk0NywgMjYyLCA5NDgsIDI2MiwgOTQ5LCAyNjIsIDk1MCwgMjYyLCA5NTEsIDI2MiwgOTUyLCAyNjIsIDk1MywgMjYyLCAKKyAgICA5NTQsIDI2MiwgOTU1LCAyNjIsIDk1NiwgMjYyLCA5NTcsIDI2MiwgOTU4LCAyNjIsIDk1OSwgMjYyLCA5NjAsIDI2MiwgCisgICAgOTYxLCAyNjIsIDk2MiwgMjYyLCA5NjMsIDI2MiwgOTY0LCAyNjIsIDk2NSwgMjYyLCA5NjYsIDI2MiwgOTY3LCAyNjIsIAorICAgIDk2OCwgMjYyLCA5NjksIDI2MiwgODcwNiwgMjYyLCAxMDEzLCAyNjIsIDk3NywgMjYyLCAxMDA4LCAyNjIsIDk4MSwgMjYyLCAKKyAgICAxMDA5LCAyNjIsIDk4MiwgMjYyLCA5MTMsIDI2MiwgOTE0LCAyNjIsIDkxNSwgMjYyLCA5MTYsIDI2MiwgOTE3LCAyNjIsIAorICAgIDkxOCwgMjYyLCA5MTksIDI2MiwgOTIwLCAyNjIsIDkyMSwgMjYyLCA5MjIsIDI2MiwgOTIzLCAyNjIsIDkyNCwgMjYyLCAKKyAgICA5MjUsIDI2MiwgOTI2LCAyNjIsIDkyNywgMjYyLCA5MjgsIDI2MiwgOTI5LCAyNjIsIDEwMTIsIDI2MiwgOTMxLCAyNjIsIAorICAgIDkzMiwgMjYyLCA5MzMsIDI2MiwgOTM0LCAyNjIsIDkzNSwgMjYyLCA5MzYsIDI2MiwgOTM3LCAyNjIsIDg3MTEsIDI2MiwgCisgICAgOTQ1LCAyNjIsIDk0NiwgMjYyLCA5NDcsIDI2MiwgOTQ4LCAyNjIsIDk0OSwgMjYyLCA5NTAsIDI2MiwgOTUxLCAyNjIsIAorICAgIDk1MiwgMjYyLCA5NTMsIDI2MiwgOTU0LCAyNjIsIDk1NSwgMjYyLCA5NTYsIDI2MiwgOTU3LCAyNjIsIDk1OCwgMjYyLCAKKyAgICA5NTksIDI2MiwgOTYwLCAyNjIsIDk2MSwgMjYyLCA5NjIsIDI2MiwgOTYzLCAyNjIsIDk2NCwgMjYyLCA5NjUsIDI2MiwgCisgICAgOTY2LCAyNjIsIDk2NywgMjYyLCA5NjgsIDI2MiwgOTY5LCAyNjIsIDg3MDYsIDI2MiwgMTAxMywgMjYyLCA5NzcsIDI2MiwgCisgICAgMTAwOCwgMjYyLCA5ODEsIDI2MiwgMTAwOSwgMjYyLCA5ODIsIDI2MiwgOTg4LCAyNjIsIDk4OSwgMjYyLCA0OCwgMjYyLCAKKyAgICA0OSwgMjYyLCA1MCwgMjYyLCA1MSwgMjYyLCA1MiwgMjYyLCA1MywgMjYyLCA1NCwgMjYyLCA1NSwgMjYyLCA1NiwgMjYyLCAKKyAgICA1NywgMjYyLCA0OCwgMjYyLCA0OSwgMjYyLCA1MCwgMjYyLCA1MSwgMjYyLCA1MiwgMjYyLCA1MywgMjYyLCA1NCwgMjYyLCAKKyAgICA1NSwgMjYyLCA1NiwgMjYyLCA1NywgMjYyLCA0OCwgMjYyLCA0OSwgMjYyLCA1MCwgMjYyLCA1MSwgMjYyLCA1MiwgMjYyLCAKKyAgICA1MywgMjYyLCA1NCwgMjYyLCA1NSwgMjYyLCA1NiwgMjYyLCA1NywgMjYyLCA0OCwgMjYyLCA0OSwgMjYyLCA1MCwgMjYyLCAKKyAgICA1MSwgMjYyLCA1MiwgMjYyLCA1MywgMjYyLCA1NCwgMjYyLCA1NSwgMjYyLCA1NiwgMjYyLCA1NywgMjYyLCA0OCwgMjYyLCAKKyAgICA0OSwgMjYyLCA1MCwgMjYyLCA1MSwgMjYyLCA1MiwgMjYyLCA1MywgMjYyLCA1NCwgMjYyLCA1NSwgMjYyLCA1NiwgMjYyLCAKKyAgICA1NywgMjYyLCAxNTc1LCAyNjIsIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNTgzLCAyNjIsIDE2MDgsIDI2MiwgMTU4NiwgCisgICAgMjYyLCAxNTgxLCAyNjIsIDE1OTEsIDI2MiwgMTYxMCwgMjYyLCAxNjAzLCAyNjIsIDE2MDQsIDI2MiwgMTYwNSwgMjYyLCAKKyAgICAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgMTU5MywgMjYyLCAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg1LCAKKyAgICAyNjIsIDE1ODgsIDI2MiwgMTU3OCwgMjYyLCAxNTc5LCAyNjIsIDE1ODIsIDI2MiwgMTU4NCwgMjYyLCAxNTkwLCAyNjIsIAorICAgIDE1OTIsIDI2MiwgMTU5NCwgMjYyLCAxNjQ2LCAyNjIsIDE3MjIsIDI2MiwgMTY5NywgMjYyLCAxNjQ3LCAyNjIsIDE1NzYsIAorICAgIDI2MiwgMTU4MCwgMjYyLCAxNjA3LCAyNjIsIDE1ODEsIDI2MiwgMTYxMCwgMjYyLCAxNjAzLCAyNjIsIDE2MDQsIDI2MiwgCisgICAgMTYwNSwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgMTU5MywgMjYyLCAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgCisgICAgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIDI2MiwgMTU3OSwgMjYyLCAxNTgyLCAyNjIsIDE1OTAsIDI2MiwgMTU5NCwgMjYyLCAKKyAgICAxNTgwLCAyNjIsIDE1ODEsIDI2MiwgMTYxMCwgMjYyLCAxNjA0LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAKKyAgICAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg4LCAyNjIsIDE1ODIsIDI2MiwgMTU5MCwgMjYyLCAxNTk0LCAyNjIsIAorICAgIDE3MjIsIDI2MiwgMTY0NywgMjYyLCAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTYwNywgMjYyLCAxNTgxLCAyNjIsIDE1OTEsIAorICAgIDI2MiwgMTYxMCwgMjYyLCAxNjAzLCAyNjIsIDE2MDUsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIDI2MiwgCisgICAgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAyNjIsIDE1NzksIDI2MiwgMTU4MiwgCisgICAgMjYyLCAxNTkwLCAyNjIsIDE1OTIsIDI2MiwgMTU5NCwgMjYyLCAxNjQ2LCAyNjIsIDE2OTcsIDI2MiwgMTU3NSwgMjYyLCAKKyAgICAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTU4MywgMjYyLCAxNjA3LCAyNjIsIDE2MDgsIDI2MiwgMTU4NiwgMjYyLCAxNTgxLCAKKyAgICAyNjIsIDE1OTEsIDI2MiwgMTYxMCwgMjYyLCAxNjA0LCAyNjIsIDE2MDUsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIAorICAgIDE1OTMsIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgMTU4NSwgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIAorICAgIDI2MiwgMTU3OSwgMjYyLCAxNTgyLCAyNjIsIDE1ODQsIDI2MiwgMTU5MCwgMjYyLCAxNTkyLCAyNjIsIDE1OTQsIDI2MiwgCisgICAgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE1ODMsIDI2MiwgMTYwOCwgMjYyLCAxNTg2LCAyNjIsIDE1ODEsIDI2MiwgMTU5MSwgCisgICAgMjYyLCAxNjEwLCAyNjIsIDE2MDQsIDI2MiwgMTYwNSwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgMTU5MywgMjYyLCAKKyAgICAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg1LCAyNjIsIDE1ODgsIDI2MiwgMTU3OCwgMjYyLCAxNTc5LCAKKyAgICAyNjIsIDE1ODIsIDI2MiwgMTU4NCwgMjYyLCAxNTkwLCAyNjIsIDE1OTIsIDI2MiwgMTU5NCwgNTE0LCA0OCwgNDYsIDUxNCwgCisgICAgNDgsIDQ0LCA1MTQsIDQ5LCA0NCwgNTE0LCA1MCwgNDQsIDUxNCwgNTEsIDQ0LCA1MTQsIDUyLCA0NCwgNTE0LCA1MywgNDQsIAorICAgIDUxNCwgNTQsIDQ0LCA1MTQsIDU1LCA0NCwgNTE0LCA1NiwgNDQsIDUxNCwgNTcsIDQ0LCA3NzAsIDQwLCA2NSwgNDEsIDc3MCwgCisgICAgNDAsIDY2LCA0MSwgNzcwLCA0MCwgNjcsIDQxLCA3NzAsIDQwLCA2OCwgNDEsIDc3MCwgNDAsIDY5LCA0MSwgNzcwLCA0MCwgCisgICAgNzAsIDQxLCA3NzAsIDQwLCA3MSwgNDEsIDc3MCwgNDAsIDcyLCA0MSwgNzcwLCA0MCwgNzMsIDQxLCA3NzAsIDQwLCA3NCwgCisgICAgNDEsIDc3MCwgNDAsIDc1LCA0MSwgNzcwLCA0MCwgNzYsIDQxLCA3NzAsIDQwLCA3NywgNDEsIDc3MCwgNDAsIDc4LCA0MSwgCisgICAgNzcwLCA0MCwgNzksIDQxLCA3NzAsIDQwLCA4MCwgNDEsIDc3MCwgNDAsIDgxLCA0MSwgNzcwLCA0MCwgODIsIDQxLCA3NzAsIAorICAgIDQwLCA4MywgNDEsIDc3MCwgNDAsIDg0LCA0MSwgNzcwLCA0MCwgODUsIDQxLCA3NzAsIDQwLCA4NiwgNDEsIDc3MCwgNDAsIAorICAgIDg3LCA0MSwgNzcwLCA0MCwgODgsIDQxLCA3NzAsIDQwLCA4OSwgNDEsIDc3MCwgNDAsIDkwLCA0MSwgNzcwLCAxMjMwOCwgCisgICAgODMsIDEyMzA5LCAyNjMsIDY3LCAyNjMsIDgyLCA1MTksIDY3LCA2OCwgNTE5LCA4NywgOTAsIDI2NiwgNjUsIDI2NiwgNjYsIAorICAgIDI2NiwgNjcsIDI2NiwgNjgsIDI2NiwgNjksIDI2NiwgNzAsIDI2NiwgNzEsIDI2NiwgNzIsIDI2NiwgNzMsIDI2NiwgNzQsIAorICAgIDI2NiwgNzUsIDI2NiwgNzYsIDI2NiwgNzcsIDI2NiwgNzgsIDI2NiwgNzksIDI2NiwgODAsIDI2NiwgODEsIDI2NiwgODIsIAorICAgIDI2NiwgODMsIDI2NiwgODQsIDI2NiwgODUsIDI2NiwgODYsIDI2NiwgODcsIDI2NiwgODgsIDI2NiwgODksIDI2NiwgOTAsIAorICAgIDUyMiwgNzIsIDg2LCA1MjIsIDc3LCA4NiwgNTIyLCA4MywgNjgsIDUyMiwgODMsIDgzLCA3NzgsIDgwLCA4MCwgODYsIDUyMiwgCisgICAgODcsIDY3LCA1MTUsIDc3LCA2NywgNTE1LCA3NywgNjgsIDUyMiwgNjgsIDc0LCA1MjIsIDEyNDExLCAxMjM2MywgNTIyLCAKKyAgICAxMjQ2NywgMTI0NjcsIDI2NiwgMTI0NjksIDI2NiwgMjUxNjMsIDI2NiwgMjMzODMsIDI2NiwgMjE0NTIsIDI2NiwgMTI0ODcsIAorICAgIDI2NiwgMjAxMDgsIDI2NiwgMjI4MTAsIDI2NiwgMzUyOTksIDI2NiwgMjI4MjUsIDI2NiwgMjAxMzIsIDI2NiwgMjYxNDQsIAorICAgIDI2NiwgMjg5NjEsIDI2NiwgMjYwMDksIDI2NiwgMjEwNjksIDI2NiwgMjQ0NjAsIDI2NiwgMjA4NzcsIDI2NiwgMjYwMzIsIAorICAgIDI2NiwgMjEwMjEsIDI2NiwgMzIwNjYsIDI2NiwgMjk5ODMsIDI2NiwgMzYwMDksIDI2NiwgMjI3NjgsIDI2NiwgMjE1NjEsIAorICAgIDI2NiwgMjg0MzYsIDI2NiwgMjUyMzcsIDI2NiwgMjU0MjksIDI2NiwgMTk5NjgsIDI2NiwgMTk5NzcsIDI2NiwgMzY5MzgsIAorICAgIDI2NiwgMjQwMzgsIDI2NiwgMjAwMTMsIDI2NiwgMjE0OTEsIDI2NiwgMjUzNTEsIDI2NiwgMzYyMDgsIDI2NiwgMjUxNzEsIAorICAgIDI2NiwgMzExMDUsIDI2NiwgMzEzNTQsIDI2NiwgMjE1MTIsIDI2NiwgMjgyODgsIDI2NiwgMjYzNzcsIDI2NiwgMjYzNzYsIAorICAgIDI2NiwgMzAwMDMsIDI2NiwgMjExMDYsIDI2NiwgMjE5NDIsIDc3MCwgMTIzMDgsIDI2NDEyLCAxMjMwOSwgNzcwLCAxMjMwOCwgCisgICAgMTk5NzcsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMDEwOCwgMTIzMDksIDc3MCwgMTIzMDgsIDIzNDMzLCAxMjMwOSwgNzcwLCAKKyAgICAxMjMwOCwgMjg4NTcsIDEyMzA5LCA3NzAsIDEyMzA4LCAyNTE3MSwgMTIzMDksIDc3MCwgMTIzMDgsIDMwNDIzLCAxMjMwOSwgCisgICAgNzcwLCAxMjMwOCwgMjEyMTMsIDEyMzA5LCA3NzAsIDEyMzA4LCAyNTk0MywgMTIzMDksIDI2MywgMjQ0NzEsIDI2MywgCisgICAgMjE0ODcsIDI1NiwgMjAwMjksIDI1NiwgMjAwMjQsIDI1NiwgMjAwMzMsIDI1NiwgMTMxMzYyLCAyNTYsIDIwMzIwLCAyNTYsIAorICAgIDIwMzk4LCAyNTYsIDIwNDExLCAyNTYsIDIwNDgyLCAyNTYsIDIwNjAyLCAyNTYsIDIwNjMzLCAyNTYsIDIwNzExLCAyNTYsIAorICAgIDIwNjg3LCAyNTYsIDEzNDcwLCAyNTYsIDEzMjY2NiwgMjU2LCAyMDgxMywgMjU2LCAyMDgyMCwgMjU2LCAyMDgzNiwgMjU2LCAKKyAgICAyMDg1NSwgMjU2LCAxMzIzODAsIDI1NiwgMTM0OTcsIDI1NiwgMjA4MzksIDI1NiwgMjA4NzcsIDI1NiwgMTMyNDI3LCAyNTYsIAorICAgIDIwODg3LCAyNTYsIDIwOTAwLCAyNTYsIDIwMTcyLCAyNTYsIDIwOTA4LCAyNTYsIDIwOTE3LCAyNTYsIDE2ODQxNSwgMjU2LCAKKyAgICAyMDk4MSwgMjU2LCAyMDk5NSwgMjU2LCAxMzUzNSwgMjU2LCAyMTA1MSwgMjU2LCAyMTA2MiwgMjU2LCAyMTEwNiwgMjU2LCAKKyAgICAyMTExMSwgMjU2LCAxMzU4OSwgMjU2LCAyMTE5MSwgMjU2LCAyMTE5MywgMjU2LCAyMTIyMCwgMjU2LCAyMTI0MiwgMjU2LCAKKyAgICAyMTI1MywgMjU2LCAyMTI1NCwgMjU2LCAyMTI3MSwgMjU2LCAyMTMyMSwgMjU2LCAyMTMyOSwgMjU2LCAyMTMzOCwgMjU2LCAKKyAgICAyMTM2MywgMjU2LCAyMTM3MywgMjU2LCAyMTM3NSwgMjU2LCAyMTM3NSwgMjU2LCAyMTM3NSwgMjU2LCAxMzM2NzYsIDI1NiwgCisgICAgMjg3ODQsIDI1NiwgMjE0NTAsIDI1NiwgMjE0NzEsIDI1NiwgMTMzOTg3LCAyNTYsIDIxNDgzLCAyNTYsIDIxNDg5LCAyNTYsIAorICAgIDIxNTEwLCAyNTYsIDIxNjYyLCAyNTYsIDIxNTYwLCAyNTYsIDIxNTc2LCAyNTYsIDIxNjA4LCAyNTYsIDIxNjY2LCAyNTYsIAorICAgIDIxNzUwLCAyNTYsIDIxNzc2LCAyNTYsIDIxODQzLCAyNTYsIDIxODU5LCAyNTYsIDIxODkyLCAyNTYsIDIxODkyLCAyNTYsIAorICAgIDIxOTEzLCAyNTYsIDIxOTMxLCAyNTYsIDIxOTM5LCAyNTYsIDIxOTU0LCAyNTYsIDIyMjk0LCAyNTYsIDIyMDIyLCAyNTYsIAorICAgIDIyMjk1LCAyNTYsIDIyMDk3LCAyNTYsIDIyMTMyLCAyNTYsIDIwOTk5LCAyNTYsIDIyNzY2LCAyNTYsIDIyNDc4LCAyNTYsIAorICAgIDIyNTE2LCAyNTYsIDIyNTQxLCAyNTYsIDIyNDExLCAyNTYsIDIyNTc4LCAyNTYsIDIyNTc3LCAyNTYsIDIyNzAwLCAyNTYsIAorICAgIDEzNjQyMCwgMjU2LCAyMjc3MCwgMjU2LCAyMjc3NSwgMjU2LCAyMjc5MCwgMjU2LCAyMjgxMCwgMjU2LCAyMjgxOCwgMjU2LCAKKyAgICAyMjg4MiwgMjU2LCAxMzY4NzIsIDI1NiwgMTM2OTM4LCAyNTYsIDIzMDIwLCAyNTYsIDIzMDY3LCAyNTYsIDIzMDc5LCAyNTYsIAorICAgIDIzMDAwLCAyNTYsIDIzMTQyLCAyNTYsIDE0MDYyLCAyNTYsIDE0MDc2LCAyNTYsIDIzMzA0LCAyNTYsIDIzMzU4LCAyNTYsIAorICAgIDIzMzU4LCAyNTYsIDEzNzY3MiwgMjU2LCAyMzQ5MSwgMjU2LCAyMzUxMiwgMjU2LCAyMzUyNywgMjU2LCAyMzUzOSwgMjU2LCAKKyAgICAxMzgwMDgsIDI1NiwgMjM1NTEsIDI1NiwgMjM1NTgsIDI1NiwgMjQ0MDMsIDI1NiwgMjM1ODYsIDI1NiwgMTQyMDksIDI1NiwgCisgICAgMjM2NDgsIDI1NiwgMjM2NjIsIDI1NiwgMjM3NDQsIDI1NiwgMjM2OTMsIDI1NiwgMTM4NzI0LCAyNTYsIDIzODc1LCAyNTYsIAorICAgIDEzODcyNiwgMjU2LCAyMzkxOCwgMjU2LCAyMzkxNSwgMjU2LCAyMzkzMiwgMjU2LCAyNDAzMywgMjU2LCAyNDAzNCwgMjU2LCAKKyAgICAxNDM4MywgMjU2LCAyNDA2MSwgMjU2LCAyNDEwNCwgMjU2LCAyNDEyNSwgMjU2LCAyNDE2OSwgMjU2LCAxNDQzNCwgMjU2LCAKKyAgICAxMzk2NTEsIDI1NiwgMTQ0NjAsIDI1NiwgMjQyNDAsIDI1NiwgMjQyNDMsIDI1NiwgMjQyNDYsIDI1NiwgMjQyNjYsIDI1NiwgCisgICAgMTcyOTQ2LCAyNTYsIDI0MzE4LCAyNTYsIDE0MDA4MSwgMjU2LCAxNDAwODEsIDI1NiwgMzMyODEsIDI1NiwgMjQzNTQsIAorICAgIDI1NiwgMjQzNTQsIDI1NiwgMTQ1MzUsIDI1NiwgMTQ0MDU2LCAyNTYsIDE1NjEyMiwgMjU2LCAyNDQxOCwgMjU2LCAyNDQyNywgCisgICAgMjU2LCAxNDU2MywgMjU2LCAyNDQ3NCwgMjU2LCAyNDUyNSwgMjU2LCAyNDUzNSwgMjU2LCAyNDU2OSwgMjU2LCAyNDcwNSwgCisgICAgMjU2LCAxNDY1MCwgMjU2LCAxNDYyMCwgMjU2LCAyNDcyNCwgMjU2LCAxNDEwMTIsIDI1NiwgMjQ3NzUsIDI1NiwgMjQ5MDQsIAorICAgIDI1NiwgMjQ5MDgsIDI1NiwgMjQ5MTAsIDI1NiwgMjQ5MDgsIDI1NiwgMjQ5NTQsIDI1NiwgMjQ5NzQsIDI1NiwgMjUwMTAsIAorICAgIDI1NiwgMjQ5OTYsIDI1NiwgMjUwMDcsIDI1NiwgMjUwNTQsIDI1NiwgMjUwNzQsIDI1NiwgMjUwNzgsIDI1NiwgMjUxMDQsIAorICAgIDI1NiwgMjUxMTUsIDI1NiwgMjUxODEsIDI1NiwgMjUyNjUsIDI1NiwgMjUzMDAsIDI1NiwgMjU0MjQsIDI1NiwgMTQyMDkyLCAKKyAgICAyNTYsIDI1NDA1LCAyNTYsIDI1MzQwLCAyNTYsIDI1NDQ4LCAyNTYsIDI1NDc1LCAyNTYsIDI1NTcyLCAyNTYsIDE0MjMyMSwgCisgICAgMjU2LCAyNTYzNCwgMjU2LCAyNTU0MSwgMjU2LCAyNTUxMywgMjU2LCAxNDg5NCwgMjU2LCAyNTcwNSwgMjU2LCAyNTcyNiwgCisgICAgMjU2LCAyNTc1NywgMjU2LCAyNTcxOSwgMjU2LCAxNDk1NiwgMjU2LCAyNTkzNSwgMjU2LCAyNTk2NCwgMjU2LCAxNDMzNzAsIAorICAgIDI1NiwgMjYwODMsIDI1NiwgMjYzNjAsIDI1NiwgMjYxODUsIDI1NiwgMTUxMjksIDI1NiwgMjYyNTcsIDI1NiwgMTUxMTIsIAorICAgIDI1NiwgMTUwNzYsIDI1NiwgMjA4ODIsIDI1NiwgMjA4ODUsIDI1NiwgMjYzNjgsIDI1NiwgMjYyNjgsIDI1NiwgMzI5NDEsIAorICAgIDI1NiwgMTczNjksIDI1NiwgMjYzOTEsIDI1NiwgMjYzOTUsIDI1NiwgMjY0MDEsIDI1NiwgMjY0NjIsIDI1NiwgMjY0NTEsIAorICAgIDI1NiwgMTQ0MzIzLCAyNTYsIDE1MTc3LCAyNTYsIDI2NjE4LCAyNTYsIDI2NTAxLCAyNTYsIDI2NzA2LCAyNTYsIDI2NzU3LCAKKyAgICAyNTYsIDE0NDQ5MywgMjU2LCAyNjc2NiwgMjU2LCAyNjY1NSwgMjU2LCAyNjkwMCwgMjU2LCAxNTI2MSwgMjU2LCAyNjk0NiwgCisgICAgMjU2LCAyNzA0MywgMjU2LCAyNzExNCwgMjU2LCAyNzMwNCwgMjU2LCAxNDUwNTksIDI1NiwgMjczNTUsIDI1NiwgMTUzODQsIAorICAgIDI1NiwgMjc0MjUsIDI1NiwgMTQ1NTc1LCAyNTYsIDI3NDc2LCAyNTYsIDE1NDM4LCAyNTYsIDI3NTA2LCAyNTYsIDI3NTUxLCAKKyAgICAyNTYsIDI3NTc4LCAyNTYsIDI3NTc5LCAyNTYsIDE0NjA2MSwgMjU2LCAxMzg1MDcsIDI1NiwgMTQ2MTcwLCAyNTYsIAorICAgIDI3NzI2LCAyNTYsIDE0NjYyMCwgMjU2LCAyNzgzOSwgMjU2LCAyNzg1MywgMjU2LCAyNzc1MSwgMjU2LCAyNzkyNiwgMjU2LCAKKyAgICAyNzk2NiwgMjU2LCAyODAyMywgMjU2LCAyNzk2OSwgMjU2LCAyODAwOSwgMjU2LCAyODAyNCwgMjU2LCAyODAzNywgMjU2LCAKKyAgICAxNDY3MTgsIDI1NiwgMjc5NTYsIDI1NiwgMjgyMDcsIDI1NiwgMjgyNzAsIDI1NiwgMTU2NjcsIDI1NiwgMjgzNjMsIDI1NiwgCisgICAgMjgzNTksIDI1NiwgMTQ3MTUzLCAyNTYsIDI4MTUzLCAyNTYsIDI4NTI2LCAyNTYsIDE0NzI5NCwgMjU2LCAxNDczNDIsIAorICAgIDI1NiwgMjg2MTQsIDI1NiwgMjg3MjksIDI1NiwgMjg3MDIsIDI1NiwgMjg2OTksIDI1NiwgMTU3NjYsIDI1NiwgMjg3NDYsIAorICAgIDI1NiwgMjg3OTcsIDI1NiwgMjg3OTEsIDI1NiwgMjg4NDUsIDI1NiwgMTMyMzg5LCAyNTYsIDI4OTk3LCAyNTYsIDE0ODA2NywgCisgICAgMjU2LCAyOTA4NCwgMjU2LCAxNDgzOTUsIDI1NiwgMjkyMjQsIDI1NiwgMjkyMzcsIDI1NiwgMjkyNjQsIDI1NiwgMTQ5MDAwLCAKKyAgICAyNTYsIDI5MzEyLCAyNTYsIDI5MzMzLCAyNTYsIDE0OTMwMSwgMjU2LCAxNDk1MjQsIDI1NiwgMjk1NjIsIDI1NiwgMjk1NzksIAorICAgIDI1NiwgMTYwNDQsIDI1NiwgMjk2MDUsIDI1NiwgMTYwNTYsIDI1NiwgMTYwNTYsIDI1NiwgMjk3NjcsIDI1NiwgMjk3ODgsIAorICAgIDI1NiwgMjk4MDksIDI1NiwgMjk4MjksIDI1NiwgMjk4OTgsIDI1NiwgMTYxNTUsIDI1NiwgMjk5ODgsIDI1NiwgMTUwNTgyLCAKKyAgICAyNTYsIDMwMDE0LCAyNTYsIDE1MDY3NCwgMjU2LCAzMDA2NCwgMjU2LCAxMzk2NzksIDI1NiwgMzAyMjQsIDI1NiwgCisgICAgMTUxNDU3LCAyNTYsIDE1MTQ4MCwgMjU2LCAxNTE2MjAsIDI1NiwgMTYzODAsIDI1NiwgMTYzOTIsIDI1NiwgMzA0NTIsIAorICAgIDI1NiwgMTUxNzk1LCAyNTYsIDE1MTc5NCwgMjU2LCAxNTE4MzMsIDI1NiwgMTUxODU5LCAyNTYsIDMwNDk0LCAyNTYsIAorICAgIDMwNDk1LCAyNTYsIDMwNDk1LCAyNTYsIDMwNTM4LCAyNTYsIDE2NDQxLCAyNTYsIDMwNjAzLCAyNTYsIDE2NDU0LCAyNTYsIAorICAgIDE2NTM0LCAyNTYsIDE1MjYwNSwgMjU2LCAzMDc5OCwgMjU2LCAzMDg2MCwgMjU2LCAzMDkyNCwgMjU2LCAxNjYxMSwgMjU2LCAKKyAgICAxNTMxMjYsIDI1NiwgMzEwNjIsIDI1NiwgMTUzMjQyLCAyNTYsIDE1MzI4NSwgMjU2LCAzMTExOSwgMjU2LCAzMTIxMSwgCisgICAgMjU2LCAxNjY4NywgMjU2LCAzMTI5NiwgMjU2LCAzMTMwNiwgMjU2LCAzMTMxMSwgMjU2LCAxNTM5ODAsIDI1NiwgMTU0Mjc5LCAKKyAgICAyNTYsIDE1NDI3OSwgMjU2LCAzMTQ3MCwgMjU2LCAxNjg5OCwgMjU2LCAxNTQ1MzksIDI1NiwgMzE2ODYsIDI1NiwgMzE2ODksIAorICAgIDI1NiwgMTY5MzUsIDI1NiwgMTU0NzUyLCAyNTYsIDMxOTU0LCAyNTYsIDE3MDU2LCAyNTYsIDMxOTc2LCAyNTYsIDMxOTcxLCAKKyAgICAyNTYsIDMyMDAwLCAyNTYsIDE1NTUyNiwgMjU2LCAzMjA5OSwgMjU2LCAxNzE1MywgMjU2LCAzMjE5OSwgMjU2LCAzMjI1OCwgCisgICAgMjU2LCAzMjMyNSwgMjU2LCAxNzIwNCwgMjU2LCAxNTYyMDAsIDI1NiwgMTU2MjMxLCAyNTYsIDE3MjQxLCAyNTYsIAorICAgIDE1NjM3NywgMjU2LCAzMjYzNCwgMjU2LCAxNTY0NzgsIDI1NiwgMzI2NjEsIDI1NiwgMzI3NjIsIDI1NiwgMzI3NzMsIDI1NiwgCisgICAgMTU2ODkwLCAyNTYsIDE1Njk2MywgMjU2LCAzMjg2NCwgMjU2LCAxNTcwOTYsIDI1NiwgMzI4ODAsIDI1NiwgMTQ0MjIzLCAKKyAgICAyNTYsIDE3MzY1LCAyNTYsIDMyOTQ2LCAyNTYsIDMzMDI3LCAyNTYsIDE3NDE5LCAyNTYsIDMzMDg2LCAyNTYsIDIzMjIxLCAKKyAgICAyNTYsIDE1NzYwNywgMjU2LCAxNTc2MjEsIDI1NiwgMTQ0Mjc1LCAyNTYsIDE0NDI4NCwgMjU2LCAzMzI4MSwgMjU2LCAKKyAgICAzMzI4NCwgMjU2LCAzNjc2NiwgMjU2LCAxNzUxNSwgMjU2LCAzMzQyNSwgMjU2LCAzMzQxOSwgMjU2LCAzMzQzNywgMjU2LCAKKyAgICAyMTE3MSwgMjU2LCAzMzQ1NywgMjU2LCAzMzQ1OSwgMjU2LCAzMzQ2OSwgMjU2LCAzMzUxMCwgMjU2LCAxNTg1MjQsIDI1NiwgCisgICAgMzM1MDksIDI1NiwgMzM1NjUsIDI1NiwgMzM2MzUsIDI1NiwgMzM3MDksIDI1NiwgMzM1NzEsIDI1NiwgMzM3MjUsIDI1NiwgCisgICAgMzM3NjcsIDI1NiwgMzM4NzksIDI1NiwgMzM2MTksIDI1NiwgMzM3MzgsIDI1NiwgMzM3NDAsIDI1NiwgMzM3NTYsIDI1NiwgCisgICAgMTU4Nzc0LCAyNTYsIDE1OTA4MywgMjU2LCAxNTg5MzMsIDI1NiwgMTc3MDcsIDI1NiwgMzQwMzMsIDI1NiwgMzQwMzUsIAorICAgIDI1NiwgMzQwNzAsIDI1NiwgMTYwNzE0LCAyNTYsIDM0MTQ4LCAyNTYsIDE1OTUzMiwgMjU2LCAxNzc1NywgMjU2LCAxNzc2MSwgCisgICAgMjU2LCAxNTk2NjUsIDI1NiwgMTU5OTU0LCAyNTYsIDE3NzcxLCAyNTYsIDM0Mzg0LCAyNTYsIDM0Mzk2LCAyNTYsIDM0NDA3LCAKKyAgICAyNTYsIDM0NDA5LCAyNTYsIDM0NDczLCAyNTYsIDM0NDQwLCAyNTYsIDM0NTc0LCAyNTYsIDM0NTMwLCAyNTYsIDM0NjgxLCAKKyAgICAyNTYsIDM0NjAwLCAyNTYsIDM0NjY3LCAyNTYsIDM0Njk0LCAyNTYsIDE3ODc5LCAyNTYsIDM0Nzg1LCAyNTYsIDM0ODE3LCAKKyAgICAyNTYsIDE3OTEzLCAyNTYsIDM0OTEyLCAyNTYsIDM0OTE1LCAyNTYsIDE2MTM4MywgMjU2LCAzNTAzMSwgMjU2LCAzNTAzOCwgCisgICAgMjU2LCAxNzk3MywgMjU2LCAzNTA2NiwgMjU2LCAxMzQ5OSwgMjU2LCAxNjE5NjYsIDI1NiwgMTYyMTUwLCAyNTYsIDE4MTEwLCAKKyAgICAyNTYsIDE4MTE5LCAyNTYsIDM1NDg4LCAyNTYsIDM1NTY1LCAyNTYsIDM1NzIyLCAyNTYsIDM1OTI1LCAyNTYsIDE2Mjk4NCwgCisgICAgMjU2LCAzNjAxMSwgMjU2LCAzNjAzMywgMjU2LCAzNjEyMywgMjU2LCAzNjIxNSwgMjU2LCAxNjM2MzEsIDI1NiwgMTMzMTI0LCAKKyAgICAyNTYsIDM2Mjk5LCAyNTYsIDM2Mjg0LCAyNTYsIDM2MzM2LCAyNTYsIDEzMzM0MiwgMjU2LCAzNjU2NCwgMjU2LCAzNjY2NCwgCisgICAgMjU2LCAxNjUzMzAsIDI1NiwgMTY1MzU3LCAyNTYsIDM3MDEyLCAyNTYsIDM3MTA1LCAyNTYsIDM3MTM3LCAyNTYsIAorICAgIDE2NTY3OCwgMjU2LCAzNzE0NywgMjU2LCAzNzQzMiwgMjU2LCAzNzU5MSwgMjU2LCAzNzU5MiwgMjU2LCAzNzUwMCwgMjU2LCAKKyAgICAzNzg4MSwgMjU2LCAzNzkwOSwgMjU2LCAxNjY5MDYsIDI1NiwgMzgyODMsIDI1NiwgMTg4MzcsIDI1NiwgMzgzMjcsIDI1NiwgCisgICAgMTY3Mjg3LCAyNTYsIDE4OTE4LCAyNTYsIDM4NTk1LCAyNTYsIDIzOTg2LCAyNTYsIDM4NjkxLCAyNTYsIDE2ODI2MSwgMjU2LCAKKyAgICAxNjg0NzQsIDI1NiwgMTkwNTQsIDI1NiwgMTkwNjIsIDI1NiwgMzg4ODAsIDI1NiwgMTY4OTcwLCAyNTYsIDE5MTIyLCAyNTYsIAorICAgIDE2OTExMCwgMjU2LCAzODkyMywgMjU2LCAzODkyMywgMjU2LCAzODk1MywgMjU2LCAxNjkzOTgsIDI1NiwgMzkxMzgsIDI1NiwgCisgICAgMTkyNTEsIDI1NiwgMzkyMDksIDI1NiwgMzkzMzUsIDI1NiwgMzkzNjIsIDI1NiwgMzk0MjIsIDI1NiwgMTk0MDYsIDI1NiwgCisgICAgMTcwODAwLCAyNTYsIDM5Njk4LCAyNTYsIDQwMDAwLCAyNTYsIDQwMTg5LCAyNTYsIDE5NjYyLCAyNTYsIDE5NjkzLCAyNTYsIAorICAgIDQwMjk1LCAyNTYsIDE3MjIzOCwgMjU2LCAxOTcwNCwgMjU2LCAxNzIyOTMsIDI1NiwgMTcyNTU4LCAyNTYsIDE3MjY4OSwgCisgICAgMjU2LCA0MDYzNSwgMjU2LCAxOTc5OCwgMjU2LCA0MDY5NywgMjU2LCA0MDcwMiwgMjU2LCA0MDcwOSwgMjU2LCA0MDcxOSwgCisgICAgMjU2LCA0MDcyNiwgMjU2LCA0MDc2MywgMjU2LCAxNzM1NjgsIAogfTsKIAogLyogaW5kZXggdGFibGVzIGZvciB0aGUgZGVjb21wb3NpdGlvbiBkYXRhICovCi0jZGVmaW5lIERFQ09NUF9TSElGVCA4CisjZGVmaW5lIERFQ09NUF9TSElGVCA3CiBzdGF0aWMgdW5zaWduZWQgY2hhciBkZWNvbXBfaW5kZXgxW10gPSB7Ci0gICAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgMTYsIDcsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgNywgNywgNywgNywgNywgMjUsIAotICAgIDcsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgMzQsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIAotICAgIDQxLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA0MiwgNDMsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDQ0LCA3LCA3LCA0NSwgCi0gICAgNDYsIDQ3LCA0OCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNDksIDcsIDcsIDUwLCA1MSwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNTIsIDUzLCA1NCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCisgICAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMCwgMTAsIDExLCAxMiwgMCwgMCwgMCwgMCwgMTMsIDE0LCAxNSwgMCwgCisgICAgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgsIDAsIDAsIDAsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIAorICAgIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCAwLCA0MiwgNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCAKKyAgICA0NSwgMCwgMCwgNDYsIDAsIDQ3LCAwLCAwLCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5LCA2MCwgNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDYyLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MywgNjQsIDY1LCA2NiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIAorICAgIDc0LCA3NSwgNzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc3LCA3OCwgMCwgMCwgMCwgNzksIDAsIDAsIDgwLCAwLCAKKyAgICA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODIsIDgzLCAwLCAwLCAwLCAwLCA4NCwgODUsIAorICAgIDg2LCA4NywgODgsIDg5LCA5MCwgOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDkyLCA5MywgMCwgMCwgMCwgMCwgOTQsIDk1LCA5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTcsIDk4LCA5OSwgMTAwLCAxMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIHNob3J0IGRlY29tcF9pbmRleDJbXSA9IHsKQEAgLTM5NzgsMzggKzQ1MDIsMjIgQEAKICAgICAwLCAwLCAwLCAwLCAxMDY2LCAxMDY5LCAxMDcyLCAxMDc1LCAwLCAwLCAxMDc4LCAxMDgxLCAwLCAwLCAxMDg0LCAxMDg3LCAKICAgICAxMDkwLCAxMDkzLCAxMDk2LCAxMDk5LCAwLCAwLCAxMTAyLCAxMTA1LCAxMTA4LCAxMTExLCAxMTE0LCAxMTE3LCAwLCAwLCAKICAgICAxMTIwLCAxMTIzLCAxMTI2LCAxMTI5LCAxMTMyLCAxMTM1LCAxMTM4LCAxMTQxLCAxMTQ0LCAxMTQ3LCAxMTUwLCAxMTUzLCAKLSAgICAwLCAwLCAxMTU2LCAxMTU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTY1LCAxMTY4LCAxMTcxLCAxMTc0LCAKLSAgICAxMTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTgwLCAxMTgzLCAxMTg2LCAxMTg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTkyLCAwLCAxMTk1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMTU2LCAxMTU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTYyLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTY1LCAxMTY4LCAxMTcxLCAxMTc0LCAxMTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMTgwLCAxMTgzLCAxMTg2LCAxMTg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTkyLCAwLCAxMTk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMTk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjAxLCAwLCAwLCAwLCAKQEAgLTQwMzEsMTkxICs0NTM5LDE3NSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEyNjcsIDAsIDAsIDEyNzAsIDEyNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyNzYsIDEyNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODUsIDEyODgsIDEyOTEsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNjcsIDAsIDAsIDEyNzAsIDEyNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzYsIDEyNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODIsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEyODUsIDEyODgsIDEyOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEyOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDAsIDEzMDMsIDAsIAotICAgIDEzMDYsIDEzMDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTIsIDEzMTUsIDEzMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEyOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDAsIDEzMDMsIDAsIDEzMDYsIDEzMDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMjEsIDAsIDEzMjQsIDEzMjcsIDEzMzAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEzMTIsIDEzMTUsIDEzMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMzYsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMzksIDEzNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEzMjEsIDAsIDEzMjQsIDEzMjcsIDEzMzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEzMzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEzMzksIDEzNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEzNTAsIDAsIDAsIDAsIDAsIDEzNTMsIDAsIDAsIDAsIDAsIDEzNTYsIDAsIDAsIDAsIDAsIDEzNTksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNjUsIDAsIAorICAgIDEzNjgsIDEzNzEsIDEzNzQsIDEzNzcsIDEzODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzODksIDAsIDAsIDAsIDAsIDEzOTIsIDAsIDAsIDAsIDAsIDEzOTUsIDAsIDAsIDAsIDAsIDEzOTgsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MDQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MDcsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MDksIDAsIDE0MTIsIDAsIDE0MTUsIDAsIDE0MTgsIDAsIDE0MjEsIDAsIDAsIAorICAgIDAsIDE0MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MjcsIDAsIDE0MzAsIAorICAgIDAsIDAsIDE0MzMsIDE0MzYsIDAsIDE0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NDIsIDE0NDQsIDE0NDYsIDAsIAorICAgIDE0NDgsIDE0NTAsIDE0NTIsIDE0NTQsIDE0NTYsIDE0NTgsIDE0NjAsIDE0NjIsIDE0NjQsIDE0NjYsIDE0NjgsIDAsIAorICAgIDE0NzAsIDE0NzIsIDE0NzQsIDE0NzYsIDE0NzgsIDE0ODAsIDE0ODIsIDE0ODQsIDE0ODYsIDE0ODgsIDE0OTAsIDE0OTIsIAorICAgIDE0OTQsIDE0OTYsIDE0OTgsIDE1MDAsIDE1MDIsIDE1MDQsIDAsIDE1MDYsIDE1MDgsIDE1MTAsIDE1MTIsIDE1MTQsIAorICAgIDE1MTYsIDE1MTgsIDE1MjAsIDE1MjIsIDE1MjQsIDE1MjYsIDE1MjgsIDE1MzAsIDE1MzIsIDE1MzQsIDE1MzYsIDE1MzgsIAorICAgIDE1NDAsIDE1NDIsIDE1NDQsIDE1NDYsIDE1NDgsIDE1NTAsIDE1NTIsIDE1NTQsIDE1NTYsIDE1NTgsIDE1NjAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEzNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNTAsIDAsIDAsIDAsIDAsIDEzNTMsIDAsIDAsIDAsIDAsIAotICAgIDEzNTYsIDAsIDAsIDAsIDAsIDEzNTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNjIsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNjUsIDAsIDEzNjgsIDEzNzEsIDEzNzQsIDEzNzcsIDEzODAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEzODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODksIDAsIDAsIDAsIDAsIDEzOTIsIDAsIDAsIDAsIDAsIDEzOTUsIDAsIAotICAgIDAsIDAsIDAsIDEzOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MDEsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE1NjQsIDE1NjYsIDE1NjgsIDE1NzAsIDE1NzIsIDE1NzQsIDE1NzYsIDE1NzgsIDE1ODAsIDE1ODIsIDE1ODQsIDE1ODYsIAorICAgIDE1ODgsIDE1OTAsIDE1OTIsIDE1OTQsIDE1OTYsIDE1OTgsIDE2MDAsIDE2MDIsIDE2MDQsIDE2MDYsIDE2MDgsIDE2MTAsIAorICAgIDE2MTIsIDE2MTQsIDE2MTYsIDE2MTgsIDE2MjAsIDE2MjIsIDE2MjQsIDE2MjYsIDE2MjgsIDE2MzAsIDE2MzIsIDE2MzQsIAorICAgIDE2MzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MzgsIDE2NDEsIDE2NDQsIAorICAgIDE2NDcsIDE2NTAsIDE2NTMsIDE2NTYsIDE2NTksIDE2NjIsIDE2NjUsIDE2NjgsIDE2NzEsIDE2NzQsIDE2NzcsIDE2ODAsIAorICAgIDE2ODMsIDE2ODYsIDE2ODksIDE2OTIsIDE2OTUsIDE2OTgsIDE3MDEsIDE3MDQsIDE3MDcsIDE3MTAsIDE3MTMsIDE3MTYsIAorICAgIDE3MTksIDE3MjIsIDE3MjUsIDE3MjgsIDE3MzEsIDE3MzQsIDE3MzcsIDE3NDAsIDE3NDMsIDE3NDYsIDE3NDksIDE3NTIsIAorICAgIDE3NTUsIDE3NTgsIDE3NjEsIDE3NjQsIDE3NjcsIDE3NzAsIDE3NzMsIDE3NzYsIDE3NzksIDE3ODIsIDE3ODUsIDE3ODgsIAorICAgIDE3OTEsIDE3OTQsIDE3OTcsIDE4MDAsIDE4MDMsIDE4MDYsIDE4MDksIDE4MTIsIDE4MTUsIDE4MTgsIDE4MjEsIDE4MjQsIAorICAgIDE4MjcsIDE4MzAsIDE4MzMsIDE4MzYsIDE4MzksIDE4NDIsIDE4NDUsIDE4NDgsIDE4NTEsIDE4NTQsIDE4NTcsIDE4NjAsIAorICAgIDE4NjMsIDE4NjYsIDE4NjksIDE4NzIsIDE4NzUsIDE4NzgsIDE4ODEsIDE4ODQsIDE4ODcsIDE4OTAsIDE4OTMsIDE4OTYsIAorICAgIDE4OTksIDE5MDIsIDE5MDUsIDE5MDgsIDE5MTEsIDE5MTQsIDE5MTcsIDE5MjAsIDE5MjMsIDE5MjYsIDE5MjksIDE5MzIsIAorICAgIDE5MzUsIDE5MzgsIDE5NDEsIDE5NDQsIDE5NDcsIDE5NTAsIDE5NTMsIDE5NTYsIDE5NTksIDE5NjIsIDE5NjUsIDE5NjgsIAorICAgIDE5NzEsIDE5NzQsIDE5NzcsIDE5ODAsIDE5ODMsIDE5ODYsIDE5ODksIDE5OTIsIDE5OTUsIDE5OTgsIDIwMDEsIDIwMDQsIAorICAgIDIwMDcsIDIwMTAsIDIwMTMsIDIwMTYsIDIwMTksIDIwMjIsIDIwMjUsIDIwMjgsIDIwMzEsIDIwMzQsIDIwMzcsIDIwNDAsIAorICAgIDIwNDMsIDIwNDYsIDIwNDksIDIwNTIsIDIwNTUsIDIwNTgsIDIwNjEsIDIwNjQsIDIwNjcsIDIwNzAsIDIwNzMsIDIwNzYsIAorICAgIDIwNzksIDIwODIsIDIwODUsIDIwODgsIDIwOTEsIDIwOTQsIDIwOTcsIDIxMDAsIDIxMDMsIDAsIDAsIDAsIDAsIDIxMDYsIAorICAgIDIxMDksIDIxMTIsIDIxMTUsIDIxMTgsIDIxMjEsIDIxMjQsIDIxMjcsIDIxMzAsIDIxMzMsIDIxMzYsIDIxMzksIDIxNDIsIAorICAgIDIxNDUsIDIxNDgsIDIxNTEsIDIxNTQsIDIxNTcsIDIxNjAsIDIxNjMsIDIxNjYsIDIxNjksIDIxNzIsIDIxNzUsIDIxNzgsIAorICAgIDIxODEsIDIxODQsIDIxODcsIDIxOTAsIDIxOTMsIDIxOTYsIDIxOTksIDIyMDIsIDIyMDUsIDIyMDgsIDIyMTEsIDIyMTQsIAorICAgIDIyMTcsIDIyMjAsIDIyMjMsIDIyMjYsIDIyMjksIDIyMzIsIDIyMzUsIDIyMzgsIDIyNDEsIDIyNDQsIDIyNDcsIDIyNTAsIAorICAgIDIyNTMsIDIyNTYsIDIyNTksIDIyNjIsIDIyNjUsIDIyNjgsIDIyNzEsIDIyNzQsIDIyNzcsIDIyODAsIDIyODMsIDIyODYsIAorICAgIDIyODksIDIyOTIsIDIyOTUsIDIyOTgsIDIzMDEsIDIzMDQsIDIzMDcsIDIzMTAsIDIzMTMsIDIzMTYsIDIzMTksIDIzMjIsIAorICAgIDIzMjUsIDIzMjgsIDIzMzEsIDIzMzQsIDIzMzcsIDIzNDAsIDIzNDMsIDIzNDYsIDIzNDksIDIzNTIsIDIzNTUsIDIzNTgsIAorICAgIDIzNjEsIDIzNjQsIDIzNjcsIDIzNzAsIDIzNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDIzNzYsIDIzNzksIDIzODIsIDIzODUsIAorICAgIDIzODgsIDIzOTEsIDIzOTQsIDIzOTcsIDI0MDAsIDI0MDMsIDI0MDYsIDI0MDksIDI0MTIsIDI0MTUsIDI0MTgsIDI0MjEsIAorICAgIDI0MjQsIDI0MjcsIDI0MzAsIDI0MzMsIDI0MzYsIDI0MzksIDAsIDAsIDI0NDIsIDI0NDUsIDI0NDgsIDI0NTEsIDI0NTQsIAorICAgIDI0NTcsIDAsIDAsIDI0NjAsIDI0NjMsIDI0NjYsIDI0NjksIDI0NzIsIDI0NzUsIDI0NzgsIDI0ODEsIDI0ODQsIDI0ODcsIAorICAgIDI0OTAsIDI0OTMsIDI0OTYsIDI0OTksIDI1MDIsIDI1MDUsIDI1MDgsIDI1MTEsIDI1MTQsIDI1MTcsIDI1MjAsIDI1MjMsIAorICAgIDI1MjYsIDI1MjksIDI1MzIsIDI1MzUsIDI1MzgsIDI1NDEsIDI1NDQsIDI1NDcsIDI1NTAsIDI1NTMsIDI1NTYsIDI1NTksIAorICAgIDI1NjIsIDI1NjUsIDI1NjgsIDI1NzEsIDAsIDAsIDI1NzQsIDI1NzcsIDI1ODAsIDI1ODMsIDI1ODYsIDI1ODksIDAsIDAsIAorICAgIDI1OTIsIDI1OTUsIDI1OTgsIDI2MDEsIDI2MDQsIDI2MDcsIDI2MTAsIDI2MTMsIDAsIDI2MTYsIDAsIDI2MTksIDAsIAorICAgIDI2MjIsIDAsIDI2MjUsIDI2MjgsIDI2MzEsIDI2MzQsIDI2MzcsIDI2NDAsIDI2NDMsIDI2NDYsIDI2NDksIDI2NTIsIAorICAgIDI2NTUsIDI2NTgsIDI2NjEsIDI2NjQsIDI2NjcsIDI2NzAsIDI2NzMsIDI2NzYsIDI2NzksIDI2ODEsIDI2ODQsIDI2ODYsIAorICAgIDI2ODksIDI2OTEsIDI2OTQsIDI2OTYsIDI2OTksIDI3MDEsIDI3MDQsIDI3MDYsIDI3MDksIDAsIDAsIDI3MTEsIDI3MTQsIAorICAgIDI3MTcsIDI3MjAsIDI3MjMsIDI3MjYsIDI3MjksIDI3MzIsIDI3MzUsIDI3MzgsIDI3NDEsIDI3NDQsIDI3NDcsIDI3NTAsIAorICAgIDI3NTMsIDI3NTYsIDI3NTksIDI3NjIsIDI3NjUsIDI3NjgsIDI3NzEsIDI3NzQsIDI3NzcsIDI3ODAsIDI3ODMsIDI3ODYsIAorICAgIDI3ODksIDI3OTIsIDI3OTUsIDI3OTgsIDI4MDEsIDI4MDQsIDI4MDcsIDI4MTAsIDI4MTMsIDI4MTYsIDI4MTksIDI4MjIsIAorICAgIDI4MjUsIDI4MjgsIDI4MzEsIDI4MzQsIDI4MzcsIDI4NDAsIDI4NDMsIDI4NDYsIDI4NDksIDI4NTIsIDI4NTUsIDI4NTgsIAorICAgIDI4NjEsIDI4NjQsIDI4NjcsIDAsIDI4NzAsIDI4NzMsIDI4NzYsIDI4NzksIDI4ODIsIDI4ODUsIDI4ODcsIDI4OTAsIAorICAgIDI4OTMsIDI4OTUsIDI4OTgsIDI5MDEsIDI5MDQsIDI5MDcsIDI5MTAsIDAsIDI5MTMsIDI5MTYsIDI5MTksIDI5MjIsIAorICAgIDI5MjQsIDI5MjcsIDI5MjksIDI5MzIsIDI5MzUsIDI5MzgsIDI5NDEsIDI5NDQsIDI5NDcsIDI5NTAsIDAsIDAsIDI5NTIsIAorICAgIDI5NTUsIDI5NTgsIDI5NjEsIDI5NjQsIDI5NjcsIDAsIDI5NjksIDI5NzIsIDI5NzUsIDI5NzgsIDI5ODEsIDI5ODQsIAorICAgIDI5ODcsIDI5ODksIDI5OTIsIDI5OTUsIDI5OTgsIDMwMDEsIDMwMDQsIDMwMDcsIDMwMTAsIDMwMTIsIDMwMTUsIDMwMTgsIAorICAgIDMwMjAsIDAsIDAsIDMwMjIsIDMwMjUsIDMwMjgsIDAsIDMwMzEsIDMwMzQsIDMwMzcsIDMwNDAsIDMwNDIsIDMwNDUsIAorICAgIDMwNDcsIDMwNTAsIDMwNTIsIDAsIDMwNTUsIDMwNTcsIDMwNTksIDMwNjEsIDMwNjMsIDMwNjUsIDMwNjcsIDMwNjksIAorICAgIDMwNzEsIDMwNzMsIDMwNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDMwNzcsIDAsIDAsIDAsIDAsIDAsIDMwNzksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwODIsIDMwODQsIDMwODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMwOTEsIDAsIDAsIDAsIDMwOTMsIDMwOTYsIDAsIDMxMDAsIDMxMDMsIDAsIDAsIDAsIDAsIDMxMDcsIDAsIDMxMTAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMTMsIDMxMTYsIDMxMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDMxMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDMxMjksIDMxMzEsIDAsIDAsIDMxMzMsIDMxMzUsIDMxMzcsIDMxMzksIDMxNDEsIDMxNDMsIAorICAgIDMxNDUsIDMxNDcsIDMxNDksIDMxNTEsIDMxNTMsIDMxNTUsIDMxNTcsIDMxNTksIDMxNjEsIDMxNjMsIDMxNjUsIDMxNjcsIAorICAgIDMxNjksIDMxNzEsIDMxNzMsIDMxNzUsIDMxNzcsIDMxNzksIDMxODEsIDMxODMsIDMxODUsIDAsIDMxODcsIDMxODksIAorICAgIDMxOTEsIDMxOTMsIDMxOTUsIDMxOTcsIDMxOTksIDMyMDEsIDMyMDMsIDMyMDUsIDMyMDcsIDMyMDksIDMyMTEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDMyMTYsIDMyMjAsIDMyMjQsIDMyMjYsIDAsIDMyMjksIDMyMzMsIDMyMzcsIDAsIDMyMzksIDMyNDIsIDMyNDQsIAorICAgIDMyNDYsIDMyNDgsIDMyNTAsIDMyNTIsIDMyNTQsIDMyNTYsIDMyNTgsIDMyNjAsIDAsIDMyNjIsIDMyNjQsIDAsIDAsIAorICAgIDMyNjcsIDMyNjksIDMyNzEsIDMyNzMsIDMyNzUsIDAsIDAsIDMyNzcsIDMyODAsIDMyODQsIDAsIDMyODcsIDAsIDMyODksIAorICAgIDAsIDMyOTEsIDAsIDMyOTMsIDMyOTUsIDMyOTcsIDMyOTksIDAsIDMzMDEsIDMzMDMsIDMzMDUsIDAsIDMzMDcsIDMzMDksIAorICAgIDMzMTEsIDMzMTMsIDMzMTUsIDMzMTcsIDMzMTksIDAsIDMzMjEsIDMzMjUsIDMzMjcsIDMzMjksIDMzMzEsIDMzMzMsIDAsIAorICAgIDAsIDAsIDAsIDMzMzUsIDMzMzcsIDMzMzksIDMzNDEsIDMzNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDMzNDUsIDMzNDksIAorICAgIDMzNTMsIDMzNTgsIDMzNjIsIDMzNjYsIDMzNzAsIDMzNzQsIDMzNzgsIDMzODIsIDMzODYsIDMzOTAsIDMzOTQsIDMzOTgsIAorICAgIDM0MDIsIDM0MDYsIDM0MDksIDM0MTEsIDM0MTQsIDM0MTgsIDM0MjEsIDM0MjMsIDM0MjYsIDM0MzAsIDM0MzUsIDM0MzgsIAorICAgIDM0NDAsIDM0NDMsIDM0NDcsIDM0NDksIDM0NTEsIDM0NTMsIDM0NTUsIDM0NTcsIDM0NjAsIDM0NjQsIDM0NjcsIDM0NjksIAorICAgIDM0NzIsIDM0NzYsIDM0ODEsIDM0ODQsIDM0ODYsIDM0ODksIDM0OTMsIDM0OTUsIDM0OTcsIDM0OTksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDM1MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM1MDUsIDM1MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MTEsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM1MTQsIDM1MTcsIDM1MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MjMsIDAsIDAsIDAsIDAsIDM1MjYsIAorICAgIDAsIDAsIDM1MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDM1MzIsIDAsIDM1MzUsIDAsIDAsIDAsIDAsIDAsIDM1MzgsIDM1NDEsIDAsIDM1NDUsIDM1NDgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NTIsIDAsIDAsIDM1NTUsIDAsIDAsIDM1NTgsIAorICAgIDAsIDM1NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDM1NjQsIDAsIDM1NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NzAsIDM1NzMsIDM1NzYsIDM1NzksIAorICAgIDM1ODIsIDAsIDAsIDM1ODUsIDM1ODgsIDAsIDAsIDM1OTEsIDM1OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDM1OTcsIDM2MDAsIAorICAgIDAsIDAsIDM2MDMsIDM2MDYsIDAsIDAsIDM2MDksIDM2MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MTUsIAorICAgIDM2MTgsIDM2MjEsIDM2MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM2MjcsIDM2MzAsIDM2MzMsIDM2MzYsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MzksIDM2NDIsIAorICAgIDM2NDUsIDM2NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE0MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MDksIDAsIDE0MTIsIDAsIAotICAgIDE0MTUsIDAsIDE0MTgsIDAsIDE0MjEsIDAsIDAsIDAsIDE0MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE0MjcsIDAsIDE0MzAsIDAsIDAsIDE0MzMsIDE0MzYsIDAsIDE0MzksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NDIsIDE0NDQsIDE0NDYsIDAsIDE0NDgsIDE0NTAsIDE0NTIsIAotICAgIDE0NTQsIDE0NTYsIDE0NTgsIDE0NjAsIDE0NjIsIDE0NjQsIDE0NjYsIDE0NjgsIDAsIDE0NzAsIDE0NzIsIDE0NzQsIAotICAgIDE0NzYsIDE0NzgsIDE0ODAsIDE0ODIsIDE0ODQsIDE0ODYsIDE0ODgsIDE0OTAsIDE0OTIsIDE0OTQsIDE0OTYsIDE0OTgsIAotICAgIDE1MDAsIDE1MDIsIDE1MDQsIDAsIDE1MDYsIDE1MDgsIDE1MTAsIDE1MTIsIDE1MTQsIDE1MTYsIDE1MTgsIDE1MjAsIAotICAgIDE1MjIsIDE1MjQsIDE1MjYsIDE1MjgsIDE1MzAsIDE1MzIsIDE1MzQsIDE1MzYsIDE1MzgsIDE1NDAsIDE1NDIsIDE1NDQsIAotICAgIDE1NDYsIDE1NDgsIDE1NTAsIDE1NTIsIDE1NTQsIDE1NTYsIDE1NTgsIDE1NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE1NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NjQsIDE1NjYsIDE1NjgsIAotICAgIDE1NzAsIDE1NzIsIDE1NzQsIDE1NzYsIDE1NzgsIDE1ODAsIDE1ODIsIDE1ODQsIDE1ODYsIDE1ODgsIDE1OTAsIDE1OTIsIAotICAgIDE1OTQsIDE1OTYsIDE1OTgsIDE2MDAsIDE2MDIsIDE2MDQsIDE2MDYsIDE2MDgsIDE2MTAsIDE2MTIsIDE2MTQsIDE2MTYsIAotICAgIDE2MTgsIDE2MjAsIDE2MjIsIDE2MjQsIDE2MjYsIDE2MjgsIDE2MzAsIDE2MzIsIDE2MzQsIDE2MzYsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MzgsIDE2NDEsIDE2NDQsIDE2NDcsIDE2NTAsIDE2NTMsIAotICAgIDE2NTYsIDE2NTksIDE2NjIsIDE2NjUsIDE2NjgsIDE2NzEsIDE2NzQsIDE2NzcsIDE2ODAsIDE2ODMsIDE2ODYsIDE2ODksIAotICAgIDE2OTIsIDE2OTUsIDE2OTgsIDE3MDEsIDE3MDQsIDE3MDcsIDE3MTAsIDE3MTMsIDE3MTYsIDE3MTksIDE3MjIsIDE3MjUsIAotICAgIDE3MjgsIDE3MzEsIDE3MzQsIDE3MzcsIDE3NDAsIDE3NDMsIDE3NDYsIDE3NDksIDE3NTIsIDE3NTUsIDE3NTgsIDE3NjEsIAotICAgIDE3NjQsIDE3NjcsIDE3NzAsIDE3NzMsIDE3NzYsIDE3NzksIDE3ODIsIDE3ODUsIDE3ODgsIDE3OTEsIDE3OTQsIDE3OTcsIAotICAgIDE4MDAsIDE4MDMsIDE4MDYsIDE4MDksIDE4MTIsIDE4MTUsIDE4MTgsIDE4MjEsIDE4MjQsIDE4MjcsIDE4MzAsIDE4MzMsIAotICAgIDE4MzYsIDE4MzksIDE4NDIsIDE4NDUsIDE4NDgsIDE4NTEsIDE4NTQsIDE4NTcsIDE4NjAsIDE4NjMsIDE4NjYsIDE4NjksIAotICAgIDE4NzIsIDE4NzUsIDE4NzgsIDE4ODEsIDE4ODQsIDE4ODcsIDE4OTAsIDE4OTMsIDE4OTYsIDE4OTksIDE5MDIsIDE5MDUsIAotICAgIDE5MDgsIDE5MTEsIDE5MTQsIDE5MTcsIDE5MjAsIDE5MjMsIDE5MjYsIDE5MjksIDE5MzIsIDE5MzUsIDE5MzgsIDE5NDEsIAotICAgIDE5NDQsIDE5NDcsIDE5NTAsIDE5NTMsIDE5NTYsIDE5NTksIDE5NjIsIDE5NjUsIDE5NjgsIDE5NzEsIDE5NzQsIDE5NzcsIAotICAgIDE5ODAsIDE5ODMsIDE5ODYsIDE5ODksIDE5OTIsIDE5OTUsIDE5OTgsIDIwMDEsIDIwMDQsIDIwMDcsIDIwMTAsIDIwMTMsIAotICAgIDIwMTYsIDIwMTksIDIwMjIsIDIwMjUsIDIwMjgsIDIwMzEsIDIwMzQsIDIwMzcsIDIwNDAsIDIwNDMsIDIwNDYsIDIwNDksIAotICAgIDIwNTIsIDIwNTUsIDIwNTgsIDIwNjEsIDIwNjQsIDIwNjcsIDIwNzAsIDIwNzMsIDIwNzYsIDIwNzksIDIwODIsIDIwODUsIAotICAgIDIwODgsIDIwOTEsIDIwOTQsIDIwOTcsIDIxMDAsIDIxMDMsIDAsIDAsIDAsIDAsIDIxMDYsIDIxMDksIDIxMTIsIDIxMTUsIAotICAgIDIxMTgsIDIxMjEsIDIxMjQsIDIxMjcsIDIxMzAsIDIxMzMsIDIxMzYsIDIxMzksIDIxNDIsIDIxNDUsIDIxNDgsIDIxNTEsIAotICAgIDIxNTQsIDIxNTcsIDIxNjAsIDIxNjMsIDIxNjYsIDIxNjksIDIxNzIsIDIxNzUsIDIxNzgsIDIxODEsIDIxODQsIDIxODcsIAotICAgIDIxOTAsIDIxOTMsIDIxOTYsIDIxOTksIDIyMDIsIDIyMDUsIDIyMDgsIDIyMTEsIDIyMTQsIDIyMTcsIDIyMjAsIDIyMjMsIAotICAgIDIyMjYsIDIyMjksIDIyMzIsIDIyMzUsIDIyMzgsIDIyNDEsIDIyNDQsIDIyNDcsIDIyNTAsIDIyNTMsIDIyNTYsIDIyNTksIAotICAgIDIyNjIsIDIyNjUsIDIyNjgsIDIyNzEsIDIyNzQsIDIyNzcsIDIyODAsIDIyODMsIDIyODYsIDIyODksIDIyOTIsIDIyOTUsIAotICAgIDIyOTgsIDIzMDEsIDIzMDQsIDIzMDcsIDIzMTAsIDIzMTMsIDIzMTYsIDIzMTksIDIzMjIsIDIzMjUsIDIzMjgsIDIzMzEsIAotICAgIDIzMzQsIDIzMzcsIDIzNDAsIDIzNDMsIDIzNDYsIDIzNDksIDIzNTIsIDIzNTUsIDIzNTgsIDIzNjEsIDIzNjQsIDIzNjcsIAotICAgIDIzNzAsIDIzNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDIzNzYsIDIzNzksIDIzODIsIDIzODUsIDIzODgsIDIzOTEsIDIzOTQsIAotICAgIDIzOTcsIDI0MDAsIDI0MDMsIDI0MDYsIDI0MDksIDI0MTIsIDI0MTUsIDI0MTgsIDI0MjEsIDI0MjQsIDI0MjcsIDI0MzAsIAotICAgIDI0MzMsIDI0MzYsIDI0MzksIDAsIDAsIDI0NDIsIDI0NDUsIDI0NDgsIDI0NTEsIDI0NTQsIDI0NTcsIDAsIDAsIDI0NjAsIAotICAgIDI0NjMsIDI0NjYsIDI0NjksIDI0NzIsIDI0NzUsIDI0NzgsIDI0ODEsIDI0ODQsIDI0ODcsIDI0OTAsIDI0OTMsIDI0OTYsIAotICAgIDI0OTksIDI1MDIsIDI1MDUsIDI1MDgsIDI1MTEsIDI1MTQsIDI1MTcsIDI1MjAsIDI1MjMsIDI1MjYsIDI1MjksIDI1MzIsIAotICAgIDI1MzUsIDI1MzgsIDI1NDEsIDI1NDQsIDI1NDcsIDI1NTAsIDI1NTMsIDI1NTYsIDI1NTksIDI1NjIsIDI1NjUsIDI1NjgsIAotICAgIDI1NzEsIDAsIDAsIDI1NzQsIDI1NzcsIDI1ODAsIDI1ODMsIDI1ODYsIDI1ODksIDAsIDAsIDI1OTIsIDI1OTUsIDI1OTgsIAotICAgIDI2MDEsIDI2MDQsIDI2MDcsIDI2MTAsIDI2MTMsIDAsIDI2MTYsIDAsIDI2MTksIDAsIDI2MjIsIDAsIDI2MjUsIDI2MjgsIAotICAgIDI2MzEsIDI2MzQsIDI2MzcsIDI2NDAsIDI2NDMsIDI2NDYsIDI2NDksIDI2NTIsIDI2NTUsIDI2NTgsIDI2NjEsIDI2NjQsIAotICAgIDI2NjcsIDI2NzAsIDI2NzMsIDI2NzYsIDI2NzksIDI2ODEsIDI2ODQsIDI2ODYsIDI2ODksIDI2OTEsIDI2OTQsIDI2OTYsIAotICAgIDI2OTksIDI3MDEsIDI3MDQsIDI3MDYsIDI3MDksIDAsIDAsIDI3MTEsIDI3MTQsIDI3MTcsIDI3MjAsIDI3MjMsIDI3MjYsIAotICAgIDI3MjksIDI3MzIsIDI3MzUsIDI3MzgsIDI3NDEsIDI3NDQsIDI3NDcsIDI3NTAsIDI3NTMsIDI3NTYsIDI3NTksIDI3NjIsIAotICAgIDI3NjUsIDI3NjgsIDI3NzEsIDI3NzQsIDI3NzcsIDI3ODAsIDI3ODMsIDI3ODYsIDI3ODksIDI3OTIsIDI3OTUsIDI3OTgsIAotICAgIDI4MDEsIDI4MDQsIDI4MDcsIDI4MTAsIDI4MTMsIDI4MTYsIDI4MTksIDI4MjIsIDI4MjUsIDI4MjgsIDI4MzEsIDI4MzQsIAotICAgIDI4MzcsIDI4NDAsIDI4NDMsIDI4NDYsIDI4NDksIDI4NTIsIDI4NTUsIDI4NTgsIDI4NjEsIDI4NjQsIDI4NjcsIDAsIAotICAgIDI4NzAsIDI4NzMsIDI4NzYsIDI4NzksIDI4ODIsIDI4ODUsIDI4ODcsIDI4OTAsIDI4OTMsIDI4OTUsIDI4OTgsIDI5MDEsIAotICAgIDI5MDQsIDI5MDcsIDI5MTAsIDAsIDI5MTMsIDI5MTYsIDI5MTksIDI5MjIsIDI5MjQsIDI5MjcsIDI5MjksIDI5MzIsIAotICAgIDI5MzUsIDI5MzgsIDI5NDEsIDI5NDQsIDI5NDcsIDI5NTAsIDAsIDAsIDI5NTIsIDI5NTUsIDI5NTgsIDI5NjEsIDI5NjQsIAotICAgIDI5NjcsIDAsIDI5NjksIDI5NzIsIDI5NzUsIDI5NzgsIDI5ODEsIDI5ODQsIDI5ODcsIDI5ODksIDI5OTIsIDI5OTUsIAotICAgIDI5OTgsIDMwMDEsIDMwMDQsIDMwMDcsIDMwMTAsIDMwMTIsIDMwMTUsIDMwMTgsIDMwMjAsIDAsIDAsIDMwMjIsIDMwMjUsIAotICAgIDMwMjgsIDAsIDMwMzEsIDMwMzQsIDMwMzcsIDMwNDAsIDMwNDIsIDMwNDUsIDMwNDcsIDMwNTAsIDMwNTIsIDAsIDMwNTUsIAotICAgIDMwNTcsIDMwNTksIDMwNjEsIDMwNjMsIDMwNjUsIDMwNjcsIDMwNjksIDMwNzEsIDMwNzMsIDMwNzUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDMwNzcsIDAsIDAsIDAsIDAsIDAsIDMwNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDMwODIsIDMwODQsIDMwODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwOTEsIDAsIDAsIDAsIDMwOTMsIDMwOTYsIDAsIAotICAgIDMxMDAsIDMxMDMsIDAsIDAsIDAsIDAsIDMxMDcsIDAsIDMxMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMTMsIAotICAgIDMxMTYsIDMxMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMjIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDMxMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMjksIDMxMzEsIAotICAgIDAsIDAsIDMxMzMsIDMxMzUsIDMxMzcsIDMxMzksIDMxNDEsIDMxNDMsIDMxNDUsIDMxNDcsIDMxNDksIDMxNTEsIDMxNTMsIAotICAgIDMxNTUsIDMxNTcsIDMxNTksIDMxNjEsIDMxNjMsIDMxNjUsIDMxNjcsIDMxNjksIDMxNzEsIDMxNzMsIDMxNzUsIDMxNzcsIAotICAgIDMxNzksIDMxODEsIDMxODMsIDMxODUsIDAsIDMxODcsIDMxODksIDMxOTEsIDMxOTMsIDMxOTUsIDMxOTcsIDMxOTksIAotICAgIDMyMDEsIDMyMDMsIDMyMDUsIDMyMDcsIDMyMDksIDMyMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDMyMTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMTYsIDMyMjAsIDMyMjQsIAotICAgIDMyMjYsIDAsIDMyMjksIDMyMzMsIDMyMzcsIDAsIDMyMzksIDMyNDIsIDMyNDQsIDMyNDYsIDMyNDgsIDMyNTAsIDMyNTIsIAotICAgIDMyNTQsIDMyNTYsIDMyNTgsIDMyNjAsIDAsIDMyNjIsIDMyNjQsIDAsIDAsIDMyNjcsIDMyNjksIDMyNzEsIDMyNzMsIAotICAgIDMyNzUsIDAsIDAsIDMyNzcsIDMyODAsIDMyODQsIDAsIDMyODcsIDAsIDMyODksIDAsIDMyOTEsIDAsIDMyOTMsIDMyOTUsIAotICAgIDMyOTcsIDMyOTksIDAsIDMzMDEsIDMzMDMsIDMzMDUsIDAsIDMzMDcsIDMzMDksIDMzMTEsIDMzMTMsIDMzMTUsIDMzMTcsIAotICAgIDMzMTksIDAsIDMzMjEsIDMzMjUsIDMzMjcsIDMzMjksIDMzMzEsIDMzMzMsIDAsIDAsIDAsIDAsIDMzMzUsIDMzMzcsIAotICAgIDMzMzksIDMzNDEsIDMzNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDMzNDUsIDMzNDksIDMzNTMsIDMzNTgsIDMzNjIsIDMzNjYsIAotICAgIDMzNzAsIDMzNzQsIDMzNzgsIDMzODIsIDMzODYsIDMzOTAsIDMzOTQsIDMzOTgsIDM0MDIsIDM0MDYsIDM0MDksIDM0MTEsIAotICAgIDM0MTQsIDM0MTgsIDM0MjEsIDM0MjMsIDM0MjYsIDM0MzAsIDM0MzUsIDM0MzgsIDM0NDAsIDM0NDMsIDM0NDcsIDM0NDksIAotICAgIDM0NTEsIDM0NTMsIDM0NTUsIDM0NTcsIDM0NjAsIDM0NjQsIDM0NjcsIDM0NjksIDM0NzIsIDM0NzYsIDM0ODEsIDM0ODQsIAotICAgIDM0ODYsIDM0ODksIDM0OTMsIDM0OTUsIDM0OTcsIDM0OTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MDEsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MDUsIDM1MDgsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MTQsIAotICAgIDM1MTcsIDM1MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MjMsIDAsIDAsIDAsIDAsIDM1MjYsIDAsIDAsIDM1MjksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MzIsIDAsIDM1MzUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDM1MzgsIDM1NDEsIDAsIDM1NDUsIDM1NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM1NTIsIDAsIDAsIDM1NTUsIDAsIDAsIDM1NTgsIDAsIDM1NjEsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NjQsIDAsIDM1NjcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NzAsIDM1NzMsIDM1NzYsIDM1NzksIDM1ODIsIDAsIDAsIDM1ODUsIDM1ODgsIAotICAgIDAsIDAsIDM1OTEsIDM1OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDM1OTcsIDM2MDAsIDAsIDAsIDM2MDMsIDM2MDYsIDAsIDAsIAotICAgIDM2MDksIDM2MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MTUsIDM2MTgsIDM2MjEsIDM2MjQsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MjcsIAotICAgIDM2MzAsIDM2MzMsIDM2MzYsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MzksIDM2NDIsIDM2NDUsIDM2NDgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2NTEsIDM2NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2NTEsIDM2NTMsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNDI1NiwyMyArNDc0OCw3IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDEwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEwMSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEwMywgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC00MzcwLDE3MiArNDg0Niw3IEBACiAgICAgNjUzMCwgNjUzMywgNjUzNiwgNjUzOSwgNjU0MiwgNjU0NSwgNjU0OCwgNjU1MSwgNjU1NCwgNjU1OCwgNjU2MiwgNjU2NiwgCiAgICAgNjU3MCwgNjU3NCwgNjU3OCwgNjU4MiwgNjU4NiwgNjU5MCwgNjU5NCwgNjU5OCwgNjYwMiwgNjYwNiwgNjYxMCwgNjYxNCwgCiAgICAgNjYxOCwgNjYyMiwgNjYyNiwgNjYzMCwgNjYzNCwgNjYzOCwgNjY0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNjY0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjY0OCwgNjY1MCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY1MiwgNjY1NCwgNjY1NiwgNjY1OCwgNjY2MCwgNjY2MiwgNjY2NCwgCi0gICAgNjY2NiwgNjY2OCwgNjY3MCwgNjY3MiwgNjY3NCwgNjY3NiwgNjY3OCwgNjY4MCwgNjY4MiwgNjY4NCwgNjY4NiwgNjY4OCwgCi0gICAgNjY5MCwgNjY5MiwgNjY5NCwgNjY5NiwgNjY5OCwgNjcwMCwgNjcwMiwgNjcwNCwgNjcwNiwgNjcwOCwgNjcxMCwgNjcxMiwgCi0gICAgNjcxNCwgNjcxNiwgNjcxOCwgNjcyMCwgNjcyMiwgNjcyNCwgNjcyNiwgNjcyOCwgNjczMCwgNjczMiwgNjczNCwgNjczNiwgCi0gICAgNjczOCwgNjc0MCwgNjc0MiwgNjc0NCwgNjc0NiwgNjc0OCwgNjc1MCwgNjc1MiwgNjc1NCwgNjc1NiwgNjc1OCwgNjc2MCwgCi0gICAgNjc2MiwgNjc2NCwgNjc2NiwgNjc2OCwgNjc3MCwgNjc3MiwgNjc3NCwgNjc3NiwgNjc3OCwgNjc4MCwgNjc4MiwgNjc4NCwgCi0gICAgNjc4NiwgNjc4OCwgNjc5MCwgNjc5MiwgNjc5NCwgNjc5NiwgNjc5OCwgNjgwMCwgNjgwMiwgNjgwNCwgNjgwNiwgNjgwOCwgCi0gICAgNjgxMCwgNjgxMiwgNjgxNCwgNjgxNiwgNjgxOCwgNjgyMCwgNjgyMiwgNjgyNCwgNjgyNiwgNjgyOCwgNjgzMCwgNjgzMiwgCi0gICAgNjgzNCwgNjgzNiwgNjgzOCwgNjg0MCwgNjg0MiwgNjg0NCwgNjg0NiwgNjg0OCwgNjg1MCwgNjg1MiwgNjg1NCwgNjg1NiwgCi0gICAgNjg1OCwgNjg2MCwgNjg2MiwgNjg2NCwgNjg2NiwgNjg2OCwgNjg3MCwgNjg3MiwgNjg3NCwgNjg3NiwgNjg3OCwgNjg4MCwgCi0gICAgNjg4MiwgNjg4NCwgNjg4NiwgNjg4OCwgNjg5MCwgNjg5MiwgNjg5NCwgNjg5NiwgNjg5OCwgNjkwMCwgNjkwMiwgNjkwNCwgCi0gICAgNjkwNiwgNjkwOCwgNjkxMCwgNjkxMiwgNjkxNCwgNjkxNiwgNjkxOCwgNjkyMCwgNjkyMiwgNjkyNCwgNjkyNiwgNjkyOCwgCi0gICAgNjkzMCwgNjkzMiwgNjkzNCwgNjkzNiwgNjkzOCwgNjk0MCwgNjk0MiwgNjk0NCwgNjk0NiwgNjk0OCwgNjk1MCwgNjk1MiwgCi0gICAgNjk1NCwgNjk1NiwgNjk1OCwgNjk2MCwgNjk2MiwgNjk2NCwgNjk2NiwgNjk2OCwgNjk3MCwgNjk3MiwgNjk3NCwgNjk3NiwgCi0gICAgNjk3OCwgNjk4MCwgNjk4MiwgNjk4NCwgNjk4NiwgNjk4OCwgNjk5MCwgNjk5MiwgNjk5NCwgNjk5NiwgNjk5OCwgNzAwMCwgCi0gICAgNzAwMiwgNzAwNCwgNzAwNiwgNzAwOCwgNzAxMCwgNzAxMiwgNzAxNCwgNzAxNiwgNzAxOCwgNzAyMCwgNzAyMiwgNzAyNCwgCi0gICAgNzAyNiwgNzAyOCwgNzAzMCwgNzAzMiwgNzAzNCwgNzAzNiwgNzAzOCwgNzA0MCwgNzA0MiwgNzA0NCwgNzA0NiwgNzA0OCwgCi0gICAgNzA1MCwgNzA1MiwgNzA1NCwgNzA1NiwgNzA1OCwgNzA2MCwgNzA2MiwgNzA2NCwgNzA2NiwgNzA2OCwgNzA3MCwgNzA3MiwgCi0gICAgNzA3NCwgNzA3NiwgNzA3OCwgNzA4MCwgNzA4MiwgNzA4NCwgNzA4NiwgNzA4OCwgNzA5MCwgNzA5MiwgNzA5NCwgNzA5NiwgCi0gICAgNzA5OCwgNzEwMCwgNzEwMiwgNzEwNCwgNzEwNiwgNzEwOCwgNzExMCwgNzExMiwgNzExNCwgNzExNiwgNzExOCwgNzEyMCwgCi0gICAgNzEyMiwgNzEyNCwgNzEyNiwgNzEyOCwgNzEzMCwgNzEzMiwgNzEzNCwgNzEzNiwgNzEzOCwgNzE0MCwgNzE0MiwgNzE0NCwgCi0gICAgNzE0NiwgNzE0OCwgNzE1MCwgNzE1MiwgNzE1NCwgNzE1NiwgNzE1OCwgNzE2MCwgNzE2MiwgNzE2NCwgNzE2NiwgNzE2OCwgCi0gICAgNzE3MCwgNzE3MiwgNzE3NCwgNzE3NiwgNzE3OCwgNzE4MCwgNzE4MiwgNzE4NCwgNzE4NiwgNzE4OCwgNzE5MCwgMCwgMCwgCi0gICAgNzE5MiwgMCwgNzE5NCwgMCwgMCwgNzE5NiwgNzE5OCwgNzIwMCwgNzIwMiwgNzIwNCwgNzIwNiwgNzIwOCwgNzIxMCwgCi0gICAgNzIxMiwgNzIxNCwgMCwgNzIxNiwgMCwgNzIxOCwgMCwgMCwgNzIyMCwgNzIyMiwgMCwgMCwgMCwgNzIyNCwgNzIyNiwgCi0gICAgNzIyOCwgNzIzMCwgNzIzMiwgNzIzNCwgNzIzNiwgNzIzOCwgNzI0MCwgNzI0MiwgNzI0NCwgNzI0NiwgNzI0OCwgNzI1MCwgCi0gICAgNzI1MiwgNzI1NCwgNzI1NiwgNzI1OCwgNzI2MCwgNzI2MiwgNzI2NCwgNzI2NiwgNzI2OCwgNzI3MCwgNzI3MiwgNzI3NCwgCi0gICAgNzI3NiwgNzI3OCwgNzI4MCwgNzI4MiwgNzI4NCwgNzI4NiwgNzI4OCwgNzI5MCwgNzI5MiwgNzI5NCwgNzI5NiwgNzI5OCwgCi0gICAgNzMwMCwgNzMwMiwgNzMwNCwgNzMwNiwgNzMwOCwgNzMxMCwgNzMxMiwgNzMxNCwgNzMxNiwgNzMxOCwgNzMyMCwgNzMyMiwgCi0gICAgNzMyNCwgNzMyNiwgNzMyOCwgNzMzMCwgNzMzMiwgNzMzNCwgNzMzNiwgNzMzOCwgNzM0MCwgNzM0MiwgNzM0NCwgNzM0NiwgCi0gICAgNzM0OCwgNzM1MCwgNzM1MiwgNzM1NCwgNzM1NiwgNzM1OCwgMCwgMCwgNzM2MCwgNzM2MiwgNzM2NCwgNzM2NiwgNzM2OCwgCi0gICAgNzM3MCwgNzM3MiwgNzM3NCwgNzM3NiwgNzM3OCwgNzM4MCwgNzM4MiwgNzM4NCwgNzM4NiwgNzM4OCwgNzM5MCwgNzM5MiwgCi0gICAgNzM5NCwgNzM5NiwgNzM5OCwgNzQwMCwgNzQwMiwgNzQwNCwgNzQwNiwgNzQwOCwgNzQxMCwgNzQxMiwgNzQxNCwgNzQxNiwgCi0gICAgNzQxOCwgNzQyMCwgNzQyMiwgNzQyNCwgNzQyNiwgNzQyOCwgNzQzMCwgNzQzMiwgNzQzNCwgNzQzNiwgNzQzOCwgNzQ0MCwgCi0gICAgNzQ0MiwgNzQ0NCwgNzQ0NiwgNzQ0OCwgNzQ1MCwgNzQ1MiwgNzQ1NCwgNzQ1NiwgNzQ1OCwgNzQ2MCwgNzQ2MiwgNzQ2NCwgCi0gICAgNzQ2NiwgNzQ2OCwgNzQ3MCwgNzQ3MiwgNzQ3NCwgNzQ3NiwgNzQ3OCwgNzQ4MCwgNzQ4MiwgNzQ4NCwgNzQ4NiwgNzQ4OCwgCi0gICAgNzQ5MCwgNzQ5MiwgNzQ5NCwgNzQ5NiwgNzQ5OCwgNzUwMCwgNzUwMiwgNzUwNCwgNzUwNiwgNzUwOCwgNzUxMCwgNzUxMiwgCi0gICAgNzUxNCwgNzUxNiwgNzUxOCwgNzUyMCwgNzUyMiwgNzUyNCwgNzUyNiwgNzUyOCwgNzUzMCwgNzUzMiwgNzUzNCwgNzUzNiwgCi0gICAgNzUzOCwgNzU0MCwgNzU0MiwgNzU0NCwgNzU0NiwgNzU0OCwgNzU1MCwgNzU1MiwgNzU1NCwgNzU1NiwgNzU1OCwgNzU2MCwgCi0gICAgNzU2MiwgNzU2NCwgNzU2NiwgNzU2OCwgNzU3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNzU3MiwgNzU3NSwgNzU3OCwgNzU4MSwgNzU4NSwgNzU4OSwgNzU5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNzU5NSwgNzU5OCwgNzYwMSwgNzYwNCwgNzYwNywgMCwgMCwgMCwgMCwgMCwgNzYxMCwgMCwgNzYxMywgNzYxNiwgCi0gICAgNzYxOCwgNzYyMCwgNzYyMiwgNzYyNCwgNzYyNiwgNzYyOCwgNzYzMCwgNzYzMiwgNzYzNCwgNzYzNiwgNzYzOSwgNzY0MiwgCi0gICAgNzY0NSwgNzY0OCwgNzY1MSwgNzY1NCwgNzY1NywgNzY2MCwgNzY2MywgNzY2NiwgNzY2OSwgNzY3MiwgMCwgNzY3NSwgCi0gICAgNzY3OCwgNzY4MSwgNzY4NCwgNzY4NywgMCwgNzY5MCwgMCwgNzY5MywgNzY5NiwgMCwgNzY5OSwgNzcwMiwgMCwgNzcwNSwgCi0gICAgNzcwOCwgNzcxMSwgNzcxNCwgNzcxNywgNzcyMCwgNzcyMywgNzcyNiwgNzcyOSwgNzczMiwgNzczNSwgNzczNywgNzczOSwgCi0gICAgNzc0MSwgNzc0MywgNzc0NSwgNzc0NywgNzc0OSwgNzc1MSwgNzc1MywgNzc1NSwgNzc1NywgNzc1OSwgNzc2MSwgNzc2MywgCi0gICAgNzc2NSwgNzc2NywgNzc2OSwgNzc3MSwgNzc3MywgNzc3NSwgNzc3NywgNzc3OSwgNzc4MSwgNzc4MywgNzc4NSwgNzc4NywgCi0gICAgNzc4OSwgNzc5MSwgNzc5MywgNzc5NSwgNzc5NywgNzc5OSwgNzgwMSwgNzgwMywgNzgwNSwgNzgwNywgNzgwOSwgNzgxMSwgCi0gICAgNzgxMywgNzgxNSwgNzgxNywgNzgxOSwgNzgyMSwgNzgyMywgNzgyNSwgNzgyNywgNzgyOSwgNzgzMSwgNzgzMywgNzgzNSwgCi0gICAgNzgzNywgNzgzOSwgNzg0MSwgNzg0MywgNzg0NSwgNzg0NywgNzg0OSwgNzg1MSwgNzg1MywgNzg1NSwgNzg1NywgNzg1OSwgCi0gICAgNzg2MSwgNzg2MywgNzg2NSwgNzg2NywgNzg2OSwgNzg3MSwgNzg3MywgNzg3NSwgNzg3NywgNzg3OSwgNzg4MSwgNzg4MywgCi0gICAgNzg4NSwgNzg4NywgNzg4OSwgNzg5MSwgNzg5MywgNzg5NSwgNzg5NywgNzg5OSwgNzkwMSwgNzkwMywgNzkwNSwgNzkwNywgCi0gICAgNzkwOSwgNzkxMSwgNzkxMywgNzkxNSwgNzkxNywgNzkxOSwgNzkyMSwgNzkyMywgNzkyNSwgNzkyNywgNzkyOSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzkzMSwgNzkzMywgNzkzNSwgNzkzNywgNzkzOSwgNzk0MSwgNzk0MywgNzk0NSwgCi0gICAgNzk0NywgNzk0OSwgNzk1MSwgNzk1MywgNzk1NSwgNzk1NywgNzk1OSwgNzk2MSwgNzk2MywgNzk2NSwgNzk2NywgNzk2OSwgCi0gICAgNzk3MSwgNzk3MywgNzk3NSwgNzk3NywgNzk4MCwgNzk4MywgNzk4NiwgNzk4OSwgNzk5MiwgNzk5NSwgNzk5OCwgODAwMSwgCi0gICAgODAwNCwgODAwNywgODAxMCwgODAxMywgODAxNiwgODAxOSwgODAyMiwgODAyNSwgODAyOCwgODAzMSwgODAzMywgODAzNSwgCi0gICAgODAzNywgODAzOSwgODA0MiwgODA0NSwgODA0OCwgODA1MSwgODA1NCwgODA1NywgODA2MCwgODA2MywgODA2NiwgODA2OSwgCi0gICAgODA3MiwgODA3NSwgODA3OCwgODA4MSwgODA4NCwgODA4NywgODA5MCwgODA5MywgODA5NiwgODA5OSwgODEwMiwgODEwNSwgCi0gICAgODEwOCwgODExMSwgODExNCwgODExNywgODEyMCwgODEyMywgODEyNiwgODEyOSwgODEzMiwgODEzNSwgODEzOCwgODE0MSwgCi0gICAgODE0NCwgODE0NywgODE1MCwgODE1MywgODE1NiwgODE1OSwgODE2MiwgODE2NSwgODE2OCwgODE3MSwgODE3NCwgODE3NywgCi0gICAgODE4MCwgODE4MywgODE4NiwgODE4OSwgODE5MiwgODE5NSwgODE5OCwgODIwMSwgODIwNCwgODIwNywgODIxMCwgODIxMywgCi0gICAgODIxNiwgODIxOSwgODIyMiwgODIyNSwgODIyOCwgODIzMSwgODIzNCwgODIzNywgODI0MCwgODI0MywgODI0NiwgODI0OSwgCi0gICAgODI1MiwgODI1NSwgODI1OCwgODI2MSwgODI2NCwgODI2NywgODI3MCwgODI3MywgODI3NiwgODI3OSwgODI4MiwgODI4NSwgCi0gICAgODI4OCwgODI5MSwgODI5NCwgODI5NywgODMwMCwgODMwMywgODMwNiwgODMwOSwgODMxMiwgODMxNSwgODMxOCwgODMyMSwgCi0gICAgODMyNSwgODMyOSwgODMzMywgODMzNywgODM0MSwgODM0NSwgODM0OCwgODM1MSwgODM1NCwgODM1NywgODM2MCwgODM2MywgCi0gICAgODM2NiwgODM2OSwgODM3MiwgODM3NSwgODM3OCwgODM4MSwgODM4NCwgODM4NywgODM5MCwgODM5MywgODM5NiwgODM5OSwgCi0gICAgODQwMiwgODQwNSwgODQwOCwgODQxMSwgODQxNCwgODQxNywgODQyMCwgODQyMywgODQyNiwgODQyOSwgODQzMiwgODQzNSwgCi0gICAgODQzOCwgODQ0MSwgODQ0NCwgODQ0NywgODQ1MCwgODQ1MywgODQ1NiwgODQ1OSwgODQ2MiwgODQ2NSwgODQ2OCwgODQ3MSwgCi0gICAgODQ3NCwgODQ3NywgODQ4MCwgODQ4MywgODQ4NiwgODQ4OSwgODQ5MiwgODQ5NSwgODQ5OCwgODUwMSwgODUwNCwgODUwNywgCi0gICAgODUxMCwgODUxMywgODUxNiwgODUxOSwgODUyMiwgODUyNSwgODUyOCwgODUzMSwgODUzNCwgODUzNywgODU0MCwgODU0MywgCi0gICAgODU0NiwgODU0OSwgODU1MiwgODU1NSwgODU1OCwgODU2MSwgODU2NCwgODU2NywgODU3MCwgODU3MywgODU3NiwgODU3OSwgCi0gICAgODU4MiwgODU4NSwgODU4OCwgODU5MSwgODU5NCwgODU5NywgODYwMCwgODYwMywgODYwNiwgODYwOSwgODYxMiwgODYxNSwgCi0gICAgODYxOCwgODYyMSwgODYyNCwgODYyNywgODYzMCwgODYzMywgODYzNiwgODYzOSwgODY0MiwgODY0NSwgODY0OCwgODY1MSwgCi0gICAgODY1NCwgODY1NywgODY2MCwgODY2MywgODY2NiwgODY2OSwgODY3MiwgODY3NSwgODY3OCwgODY4MSwgODY4NCwgODY4NywgCi0gICAgODY5MCwgODY5MywgODY5NiwgODY5OSwgODcwMiwgODcwNSwgODcwOCwgODcxMSwgODcxNCwgODcxNywgODcyMCwgODcyMywgCi0gICAgODcyNiwgODcyOSwgODczMiwgODczNSwgODczOCwgODc0MSwgODc0NCwgODc0NywgODc1MCwgODc1MywgODc1NiwgODc1OSwgCi0gICAgODc2MiwgODc2NSwgODc2OCwgODc3MSwgODc3NSwgODc3OSwgODc4MywgODc4NiwgODc4OSwgODc5MiwgODc5NSwgODc5OCwgCi0gICAgODgwMSwgODgwNCwgODgwNywgODgxMCwgODgxMywgODgxNiwgODgxOSwgODgyMiwgODgyNSwgODgyOCwgODgzMSwgODgzNCwgCi0gICAgODgzNywgODg0MCwgODg0MywgODg0NiwgODg0OSwgODg1MiwgODg1NSwgODg1OCwgODg2MSwgODg2NCwgODg2NywgODg3MCwgCi0gICAgODg3MywgODg3NiwgODg3OSwgODg4MiwgODg4NSwgODg4OCwgODg5MSwgODg5NCwgODg5NywgODkwMCwgODkwMywgODkwNiwgCi0gICAgODkwOSwgODkxMiwgODkxNSwgODkxOCwgODkyMSwgODkyNCwgODkyNywgODkzMCwgODkzMywgODkzNiwgODkzOSwgODk0MiwgCi0gICAgODk0NSwgODk0OCwgODk1MSwgODk1NCwgODk1NywgODk2MCwgODk2MywgODk2NiwgODk2OSwgODk3MiwgODk3NSwgODk3OCwgCi0gICAgODk4MSwgODk4NCwgODk4NywgODk5MCwgODk5MywgODk5NiwgODk5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTAwMiwgOTAwNiwgOTAxMCwgOTAxNCwgOTAxOCwgOTAyMiwgOTAyNiwgOTAzMCwgCi0gICAgOTAzNCwgOTAzOCwgOTA0MiwgOTA0NiwgOTA1MCwgOTA1NCwgOTA1OCwgOTA2MiwgOTA2NiwgOTA3MCwgOTA3NCwgOTA3OCwgCi0gICAgOTA4MiwgOTA4NiwgOTA5MCwgOTA5NCwgOTA5OCwgOTEwMiwgOTEwNiwgOTExMCwgOTExNCwgOTExOCwgOTEyMiwgOTEyNiwgCi0gICAgOTEzMCwgOTEzNCwgOTEzOCwgOTE0MiwgOTE0NiwgOTE1MCwgOTE1NCwgOTE1OCwgOTE2MiwgOTE2NiwgOTE3MCwgOTE3NCwgCi0gICAgOTE3OCwgOTE4MiwgOTE4NiwgOTE5MCwgOTE5NCwgOTE5OCwgOTIwMiwgOTIwNiwgOTIxMCwgOTIxNCwgOTIxOCwgOTIyMiwgCi0gICAgOTIyNiwgOTIzMCwgOTIzNCwgOTIzOCwgOTI0MiwgOTI0NiwgOTI1MCwgOTI1NCwgMCwgMCwgOTI1OCwgOTI2MiwgOTI2NiwgCi0gICAgOTI3MCwgOTI3NCwgOTI3OCwgOTI4MiwgOTI4NiwgOTI5MCwgOTI5NCwgOTI5OCwgOTMwMiwgOTMwNiwgOTMxMCwgOTMxNCwgCi0gICAgOTMxOCwgOTMyMiwgOTMyNiwgOTMzMCwgOTMzNCwgOTMzOCwgOTM0MiwgOTM0NiwgOTM1MCwgOTM1NCwgOTM1OCwgOTM2MiwgCi0gICAgOTM2NiwgOTM3MCwgOTM3NCwgOTM3OCwgOTM4MiwgOTM4NiwgOTM5MCwgOTM5NCwgOTM5OCwgOTQwMiwgOTQwNiwgOTQxMCwgCi0gICAgOTQxNCwgOTQxOCwgOTQyMiwgOTQyNiwgOTQzMCwgOTQzNCwgOTQzOCwgOTQ0MiwgOTQ0NiwgOTQ1MCwgOTQ1NCwgOTQ1OCwgCi0gICAgOTQ2MiwgOTQ2NiwgOTQ3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTQ3NCwgCi0gICAgOTQ3OCwgOTQ4MiwgOTQ4NywgOTQ5MiwgOTQ5NywgOTUwMiwgOTUwNywgOTUxMiwgOTUxNywgOTUyMSwgOTU0MCwgOTU0OSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU1NCwgOTU1NiwgCi0gICAgOTU1OCwgOTU2MCwgOTU2MiwgOTU2NCwgOTU2NiwgOTU2OCwgOTU3MCwgOTU3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU3NCwgOTU3NiwgOTU3OCwgOTU4MCwgOTU4MiwgCi0gICAgOTU4NCwgOTU4NiwgOTU4OCwgOTU5MCwgOTU5MiwgOTU5NCwgOTU5NiwgOTU5OCwgOTYwMCwgOTYwMiwgOTYwNCwgOTYwNiwgCi0gICAgOTYwOCwgOTYxMCwgOTYxMiwgOTYxNCwgMCwgMCwgOTYxNiwgOTYxOCwgOTYyMCwgOTYyMiwgOTYyNCwgOTYyNiwgOTYyOCwgCi0gICAgOTYzMCwgOTYzMiwgOTYzNCwgOTYzNiwgOTYzOCwgMCwgOTY0MCwgOTY0MiwgOTY0NCwgOTY0NiwgOTY0OCwgOTY1MCwgCi0gICAgOTY1MiwgOTY1NCwgOTY1NiwgOTY1OCwgOTY2MCwgOTY2MiwgOTY2NCwgOTY2NiwgOTY2OCwgOTY3MCwgOTY3MiwgOTY3NCwgCi0gICAgOTY3NiwgMCwgOTY3OCwgOTY4MCwgOTY4MiwgOTY4NCwgMCwgMCwgMCwgMCwgOTY4NiwgOTY4OSwgOTY5MiwgMCwgOTY5NSwgCi0gICAgMCwgOTY5OCwgOTcwMSwgOTcwNCwgOTcwNywgOTcxMCwgOTcxMywgOTcxNiwgOTcxOSwgOTcyMiwgOTcyNSwgOTcyOCwgCi0gICAgOTczMCwgOTczMiwgOTczNCwgOTczNiwgOTczOCwgOTc0MCwgOTc0MiwgOTc0NCwgOTc0NiwgOTc0OCwgOTc1MCwgOTc1MiwgCi0gICAgOTc1NCwgOTc1NiwgOTc1OCwgOTc2MCwgOTc2MiwgOTc2NCwgOTc2NiwgOTc2OCwgOTc3MCwgOTc3MiwgOTc3NCwgOTc3NiwgCi0gICAgOTc3OCwgOTc4MCwgOTc4MiwgOTc4NCwgOTc4NiwgOTc4OCwgOTc5MCwgOTc5MiwgOTc5NCwgOTc5NiwgOTc5OCwgOTgwMCwgCi0gICAgOTgwMiwgOTgwNCwgOTgwNiwgOTgwOCwgOTgxMCwgOTgxMiwgOTgxNCwgOTgxNiwgOTgxOCwgOTgyMCwgOTgyMiwgOTgyNCwgCi0gICAgOTgyNiwgOTgyOCwgOTgzMCwgOTgzMiwgOTgzNCwgOTgzNiwgOTgzOCwgOTg0MCwgOTg0MiwgOTg0NCwgOTg0NiwgOTg0OCwgCi0gICAgOTg1MCwgOTg1MiwgOTg1NCwgOTg1NiwgOTg1OCwgOTg2MCwgOTg2MiwgOTg2NCwgOTg2NiwgOTg2OCwgOTg3MCwgOTg3MiwgCi0gICAgOTg3NCwgOTg3NiwgOTg3OCwgOTg4MCwgOTg4MiwgOTg4NCwgOTg4NiwgOTg4OCwgOTg5MCwgOTg5MiwgOTg5NCwgOTg5NiwgCi0gICAgOTg5OCwgOTkwMCwgOTkwMiwgOTkwNCwgOTkwNiwgOTkwOCwgOTkxMCwgOTkxMiwgOTkxNCwgOTkxNiwgOTkxOCwgOTkyMCwgCi0gICAgOTkyMiwgOTkyNCwgOTkyNiwgOTkyOCwgOTkzMCwgOTkzMiwgOTkzNCwgOTkzNiwgOTkzOCwgOTk0MCwgOTk0MiwgOTk0NCwgCi0gICAgOTk0NiwgOTk0OCwgOTk1MCwgOTk1MiwgOTk1NCwgOTk1NiwgOTk1OCwgOTk2MCwgOTk2MiwgOTk2NSwgOTk2OCwgOTk3MSwgCi0gICAgOTk3NCwgOTk3NywgOTk4MCwgOTk4MywgMCwgMCwgMCwgMCwgOTk4NiwgOTk4OCwgOTk5MCwgOTk5MiwgOTk5NCwgOTk5NiwgCi0gICAgOTk5OCwgMTAwMDAsIDEwMDAyLCAxMDAwNCwgMTAwMDYsIDEwMDA4LCAxMDAxMCwgMTAwMTIsIDEwMDE0LCAxMDAxNiwgCi0gICAgMTAwMTgsIDEwMDIwLCAxMDAyMiwgMTAwMjQsIDEwMDI2LCAxMDAyOCwgMTAwMzAsIDEwMDMyLCAxMDAzNCwgMTAwMzYsIAotICAgIDEwMDM4LCAxMDA0MCwgMTAwNDIsIDEwMDQ0LCAxMDA0NiwgMTAwNDgsIDEwMDUwLCAxMDA1MiwgMTAwNTQsIDEwMDU2LCAKLSAgICAxMDA1OCwgMTAwNjAsIDEwMDYyLCAxMDA2NCwgMTAwNjYsIDEwMDY4LCAxMDA3MCwgMTAwNzIsIDEwMDc0LCAxMDA3NiwgCi0gICAgMTAwNzgsIDEwMDgwLCAxMDA4MiwgMTAwODQsIDEwMDg2LCAxMDA4OCwgMTAwOTAsIDEwMDkyLCAxMDA5NCwgMTAwOTYsIAotICAgIDEwMDk4LCAxMDEwMCwgMTAxMDIsIDEwMTA0LCAxMDEwNiwgMTAxMDgsIDEwMTEwLCAxMDExMiwgMTAxMTQsIDEwMTE2LCAKLSAgICAxMDExOCwgMTAxMjAsIDEwMTIyLCAxMDEyNCwgMTAxMjYsIDEwMTI4LCAxMDEzMCwgMTAxMzIsIDEwMTM0LCAxMDEzNiwgCi0gICAgMTAxMzgsIDEwMTQwLCAxMDE0MiwgMTAxNDQsIDEwMTQ2LCAxMDE0OCwgMTAxNTAsIDEwMTUyLCAxMDE1NCwgMTAxNTYsIAotICAgIDEwMTU4LCAxMDE2MCwgMTAxNjIsIDEwMTY0LCAxMDE2NiwgMTAxNjgsIDEwMTcwLCAxMDE3MiwgMTAxNzQsIDEwMTc2LCAKLSAgICAxMDE3OCwgMTAxODAsIDEwMTgyLCAxMDE4NCwgMTAxODYsIDEwMTg4LCAxMDE5MCwgMTAxOTIsIDEwMTk0LCAxMDE5NiwgCi0gICAgMTAxOTgsIDEwMjAwLCAxMDIwMiwgMTAyMDQsIDEwMjA2LCAxMDIwOCwgMTAyMTAsIDEwMjEyLCAxMDIxNCwgMTAyMTYsIAotICAgIDEwMjE4LCAxMDIyMCwgMTAyMjIsIDEwMjI0LCAxMDIyNiwgMTAyMjgsIDEwMjMwLCAxMDIzMiwgMTAyMzQsIDEwMjM2LCAKLSAgICAxMDIzOCwgMTAyNDAsIDEwMjQyLCAxMDI0NCwgMTAyNDYsIDEwMjQ4LCAxMDI1MCwgMTAyNTIsIDEwMjU0LCAxMDI1NiwgCi0gICAgMTAyNTgsIDEwMjYwLCAxMDI2MiwgMTAyNjQsIDEwMjY2LCAxMDI2OCwgMTAyNzAsIDEwMjcyLCAxMDI3NCwgMTAyNzYsIAotICAgIDEwMjc4LCAxMDI4MCwgMTAyODIsIDEwMjg0LCAxMDI4NiwgMTAyODgsIDEwMjkwLCAxMDI5MiwgMTAyOTQsIDEwMjk2LCAKLSAgICAxMDI5OCwgMTAzMDAsIDEwMzAyLCAxMDMwNCwgMTAzMDYsIDEwMzA4LCAxMDMxMCwgMTAzMTIsIDEwMzE0LCAxMDMxNiwgCi0gICAgMTAzMTgsIDEwMzIwLCAxMDMyMiwgMTAzMjQsIDEwMzI2LCAxMDMyOCwgMTAzMzAsIDEwMzMyLCAxMDMzNCwgMTAzMzYsIAotICAgIDEwMzM4LCAxMDM0MCwgMTAzNDIsIDEwMzQ0LCAxMDM0NiwgMTAzNDgsIDEwMzUwLCAxMDM1MiwgMTAzNTQsIDEwMzU2LCAKLSAgICAxMDM1OCwgMTAzNjAsIDEwMzYyLCAxMDM2NCwgMCwgMCwgMCwgMTAzNjYsIDEwMzY4LCAxMDM3MCwgMTAzNzIsIDEwMzc0LCAKLSAgICAxMDM3NiwgMCwgMCwgMTAzNzgsIDEwMzgwLCAxMDM4MiwgMTAzODQsIDEwMzg2LCAxMDM4OCwgMCwgMCwgMTAzOTAsIAotICAgIDEwMzkyLCAxMDM5NCwgMTAzOTYsIDEwMzk4LCAxMDQwMCwgMCwgMCwgMTA0MDIsIDEwNDA0LCAxMDQwNiwgMCwgMCwgMCwgCi0gICAgMTA0MDgsIDEwNDEwLCAxMDQxMiwgMTA0MTQsIDEwNDE2LCAxMDQxOCwgMTA0MjAsIDAsIDEwNDIyLCAxMDQyNCwgMTA0MjYsIAotICAgIDEwNDI4LCAxMDQzMCwgMTA0MzIsIDEwNDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQzNiwgMCwgMTA0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ0NSwgMTA0NDgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2NDYsIDY2NDgsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNDU0NCw2MTEgKzQ4NTUsODEzIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY1MCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NTEsIDEwNDU0LCAxMDQ1NywgMTA0NjAsIDEwNDYzLCAKLSAgICAxMDQ2NiwgMTA0NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2NTIsIDY2NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDcyLCAxMDQ3NSwgCi0gICAgMTA0NzgsIDEwNDgxLCAxMDQ4NCwgMTA0ODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2NTYsIDY2NTgsIDY2NjAsIDY2NjIsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwNDkwLCAxMDQ5MiwgMTA0OTQsIDEwNDk2LCAxMDQ5OCwgMTA1MDAsIDEwNTAyLCAxMDUwNCwgMTA1MDYsIDEwNTA4LCAKLSAgICAxMDUxMCwgMTA1MTIsIDEwNTE0LCAxMDUxNiwgMTA1MTgsIDEwNTIwLCAxMDUyMiwgMTA1MjQsIDEwNTI2LCAxMDUyOCwgCi0gICAgMTA1MzAsIDEwNTMyLCAxMDUzNCwgMTA1MzYsIDEwNTM4LCAxMDU0MCwgMTA1NDIsIDEwNTQ0LCAxMDU0NiwgMTA1NDgsIAotICAgIDEwNTUwLCAxMDU1MiwgMTA1NTQsIDEwNTU2LCAxMDU1OCwgMTA1NjAsIDEwNTYyLCAxMDU2NCwgMTA1NjYsIDEwNTY4LCAKLSAgICAxMDU3MCwgMTA1NzIsIDEwNTc0LCAxMDU3NiwgMTA1NzgsIDEwNTgwLCAxMDU4MiwgMTA1ODQsIDEwNTg2LCAxMDU4OCwgCi0gICAgMTA1OTAsIDEwNTkyLCAxMDU5NCwgMTA1OTYsIDEwNTk4LCAxMDYwMCwgMTA2MDIsIDEwNjA0LCAxMDYwNiwgMTA2MDgsIAotICAgIDEwNjEwLCAxMDYxMiwgMTA2MTQsIDEwNjE2LCAxMDYxOCwgMTA2MjAsIDEwNjIyLCAxMDYyNCwgMTA2MjYsIDEwNjI4LCAKLSAgICAxMDYzMCwgMTA2MzIsIDEwNjM0LCAxMDYzNiwgMTA2MzgsIDEwNjQwLCAxMDY0MiwgMTA2NDQsIDEwNjQ2LCAxMDY0OCwgCi0gICAgMTA2NTAsIDEwNjUyLCAxMDY1NCwgMTA2NTYsIDEwNjU4LCAwLCAxMDY2MCwgMTA2NjIsIDEwNjY0LCAxMDY2NiwgMTA2NjgsIAotICAgIDEwNjcwLCAxMDY3MiwgMTA2NzQsIDEwNjc2LCAxMDY3OCwgMTA2ODAsIDEwNjgyLCAxMDY4NCwgMTA2ODYsIDEwNjg4LCAKLSAgICAxMDY5MCwgMTA2OTIsIDEwNjk0LCAxMDY5NiwgMTA2OTgsIDEwNzAwLCAxMDcwMiwgMTA3MDQsIDEwNzA2LCAxMDcwOCwgCi0gICAgMTA3MTAsIDEwNzEyLCAxMDcxNCwgMTA3MTYsIDEwNzE4LCAxMDcyMCwgMTA3MjIsIDEwNzI0LCAxMDcyNiwgMTA3MjgsIAotICAgIDEwNzMwLCAxMDczMiwgMTA3MzQsIDEwNzM2LCAxMDczOCwgMTA3NDAsIDEwNzQyLCAxMDc0NCwgMTA3NDYsIDEwNzQ4LCAKLSAgICAxMDc1MCwgMTA3NTIsIDEwNzU0LCAxMDc1NiwgMTA3NTgsIDEwNzYwLCAxMDc2MiwgMTA3NjQsIDEwNzY2LCAxMDc2OCwgCi0gICAgMTA3NzAsIDEwNzcyLCAxMDc3NCwgMTA3NzYsIDEwNzc4LCAxMDc4MCwgMTA3ODIsIDEwNzg0LCAxMDc4NiwgMTA3ODgsIAotICAgIDEwNzkwLCAxMDc5MiwgMTA3OTQsIDEwNzk2LCAxMDc5OCwgMTA4MDAsIDAsIDEwODAyLCAxMDgwNCwgMCwgMCwgMTA4MDYsIAotICAgIDAsIDAsIDEwODA4LCAxMDgxMCwgMCwgMCwgMTA4MTIsIDEwODE0LCAxMDgxNiwgMTA4MTgsIDAsIDEwODIwLCAxMDgyMiwgCi0gICAgMTA4MjQsIDEwODI2LCAxMDgyOCwgMTA4MzAsIDEwODMyLCAxMDgzNCwgMTA4MzYsIDEwODM4LCAxMDg0MCwgMTA4NDIsIDAsIAotICAgIDEwODQ0LCAwLCAxMDg0NiwgMTA4NDgsIDEwODUwLCAxMDg1MiwgMTA4NTQsIDEwODU2LCAxMDg1OCwgMCwgMTA4NjAsIAotICAgIDEwODYyLCAxMDg2NCwgMTA4NjYsIDEwODY4LCAxMDg3MCwgMTA4NzIsIDEwODc0LCAxMDg3NiwgMTA4NzgsIDEwODgwLCAKLSAgICAxMDg4MiwgMTA4ODQsIDEwODg2LCAxMDg4OCwgMTA4OTAsIDEwODkyLCAxMDg5NCwgMTA4OTYsIDEwODk4LCAxMDkwMCwgCi0gICAgMTA5MDIsIDEwOTA0LCAxMDkwNiwgMTA5MDgsIDEwOTEwLCAxMDkxMiwgMTA5MTQsIDEwOTE2LCAxMDkxOCwgMTA5MjAsIAotICAgIDEwOTIyLCAxMDkyNCwgMTA5MjYsIDEwOTI4LCAxMDkzMCwgMTA5MzIsIDEwOTM0LCAxMDkzNiwgMTA5MzgsIDEwOTQwLCAKLSAgICAxMDk0MiwgMTA5NDQsIDEwOTQ2LCAxMDk0OCwgMTA5NTAsIDEwOTUyLCAxMDk1NCwgMTA5NTYsIDEwOTU4LCAxMDk2MCwgCi0gICAgMTA5NjIsIDEwOTY0LCAxMDk2NiwgMTA5NjgsIDEwOTcwLCAxMDk3MiwgMTA5NzQsIDEwOTc2LCAxMDk3OCwgMTA5ODAsIAotICAgIDEwOTgyLCAxMDk4NCwgMTA5ODYsIDEwOTg4LCAwLCAxMDk5MCwgMTA5OTIsIDEwOTk0LCAxMDk5NiwgMCwgMCwgMTA5OTgsIAotICAgIDExMDAwLCAxMTAwMiwgMTEwMDQsIDExMDA2LCAxMTAwOCwgMTEwMTAsIDExMDEyLCAwLCAxMTAxNCwgMTEwMTYsIDExMDE4LCAKLSAgICAxMTAyMCwgMTEwMjIsIDExMDI0LCAxMTAyNiwgMCwgMTEwMjgsIDExMDMwLCAxMTAzMiwgMTEwMzQsIDExMDM2LCAxMTAzOCwgCi0gICAgMTEwNDAsIDExMDQyLCAxMTA0NCwgMTEwNDYsIDExMDQ4LCAxMTA1MCwgMTEwNTIsIDExMDU0LCAxMTA1NiwgMTEwNTgsIAotICAgIDExMDYwLCAxMTA2MiwgMTEwNjQsIDExMDY2LCAxMTA2OCwgMTEwNzAsIDExMDcyLCAxMTA3NCwgMTEwNzYsIDExMDc4LCAKLSAgICAxMTA4MCwgMTEwODIsIDAsIDExMDg0LCAxMTA4NiwgMTEwODgsIDExMDkwLCAwLCAxMTA5MiwgMTEwOTQsIDExMDk2LCAKLSAgICAxMTA5OCwgMTExMDAsIDAsIDExMTAyLCAwLCAwLCAwLCAxMTEwNCwgMTExMDYsIDExMTA4LCAxMTExMCwgMTExMTIsIAotICAgIDExMTE0LCAxMTExNiwgMCwgMTExMTgsIDExMTIwLCAxMTEyMiwgMTExMjQsIDExMTI2LCAxMTEyOCwgMTExMzAsIDExMTMyLCAKLSAgICAxMTEzNCwgMTExMzYsIDExMTM4LCAxMTE0MCwgMTExNDIsIDExMTQ0LCAxMTE0NiwgMTExNDgsIDExMTUwLCAxMTE1MiwgCi0gICAgMTExNTQsIDExMTU2LCAxMTE1OCwgMTExNjAsIDExMTYyLCAxMTE2NCwgMTExNjYsIDExMTY4LCAxMTE3MCwgMTExNzIsIAotICAgIDExMTc0LCAxMTE3NiwgMTExNzgsIDExMTgwLCAxMTE4MiwgMTExODQsIDExMTg2LCAxMTE4OCwgMTExOTAsIDExMTkyLCAKLSAgICAxMTE5NCwgMTExOTYsIDExMTk4LCAxMTIwMCwgMTEyMDIsIDExMjA0LCAxMTIwNiwgMTEyMDgsIDExMjEwLCAxMTIxMiwgCi0gICAgMTEyMTQsIDExMjE2LCAxMTIxOCwgMTEyMjAsIDExMjIyLCAxMTIyNCwgMTEyMjYsIDExMjI4LCAxMTIzMCwgMTEyMzIsIAotICAgIDExMjM0LCAxMTIzNiwgMTEyMzgsIDExMjQwLCAxMTI0MiwgMTEyNDQsIDExMjQ2LCAxMTI0OCwgMTEyNTAsIDExMjUyLCAKLSAgICAxMTI1NCwgMTEyNTYsIDExMjU4LCAxMTI2MCwgMTEyNjIsIDExMjY0LCAxMTI2NiwgMTEyNjgsIDExMjcwLCAxMTI3MiwgCi0gICAgMTEyNzQsIDExMjc2LCAxMTI3OCwgMTEyODAsIDExMjgyLCAxMTI4NCwgMTEyODYsIDExMjg4LCAxMTI5MCwgMTEyOTIsIAotICAgIDExMjk0LCAxMTI5NiwgMTEyOTgsIDExMzAwLCAxMTMwMiwgMTEzMDQsIDExMzA2LCAxMTMwOCwgMTEzMTAsIDExMzEyLCAKLSAgICAxMTMxNCwgMTEzMTYsIDExMzE4LCAxMTMyMCwgMTEzMjIsIDExMzI0LCAxMTMyNiwgMTEzMjgsIDExMzMwLCAxMTMzMiwgCi0gICAgMTEzMzQsIDExMzM2LCAxMTMzOCwgMTEzNDAsIDExMzQyLCAxMTM0NCwgMTEzNDYsIDExMzQ4LCAxMTM1MCwgMTEzNTIsIAotICAgIDExMzU0LCAxMTM1NiwgMTEzNTgsIDExMzYwLCAxMTM2MiwgMTEzNjQsIDExMzY2LCAxMTM2OCwgMTEzNzAsIDExMzcyLCAKLSAgICAxMTM3NCwgMTEzNzYsIDExMzc4LCAxMTM4MCwgMTEzODIsIDExMzg0LCAxMTM4NiwgMTEzODgsIDExMzkwLCAxMTM5MiwgCi0gICAgMTEzOTQsIDExMzk2LCAxMTM5OCwgMTE0MDAsIDExNDAyLCAxMTQwNCwgMTE0MDYsIDExNDA4LCAxMTQxMCwgMTE0MTIsIAotICAgIDExNDE0LCAxMTQxNiwgMTE0MTgsIDExNDIwLCAxMTQyMiwgMTE0MjQsIDExNDI2LCAxMTQyOCwgMTE0MzAsIDExNDMyLCAKLSAgICAxMTQzNCwgMTE0MzYsIDExNDM4LCAxMTQ0MCwgMTE0NDIsIDExNDQ0LCAxMTQ0NiwgMTE0NDgsIDExNDUwLCAxMTQ1MiwgCi0gICAgMTE0NTQsIDExNDU2LCAxMTQ1OCwgMTE0NjAsIDExNDYyLCAxMTQ2NCwgMTE0NjYsIDExNDY4LCAxMTQ3MCwgMTE0NzIsIAotICAgIDExNDc0LCAxMTQ3NiwgMTE0NzgsIDExNDgwLCAxMTQ4MiwgMTE0ODQsIDExNDg2LCAxMTQ4OCwgMTE0OTAsIDExNDkyLCAKLSAgICAxMTQ5NCwgMTE0OTYsIDExNDk4LCAxMTUwMCwgMTE1MDIsIDExNTA0LCAxMTUwNiwgMTE1MDgsIDExNTEwLCAxMTUxMiwgCi0gICAgMTE1MTQsIDExNTE2LCAxMTUxOCwgMTE1MjAsIDExNTIyLCAxMTUyNCwgMTE1MjYsIDExNTI4LCAxMTUzMCwgMTE1MzIsIAotICAgIDExNTM0LCAxMTUzNiwgMTE1MzgsIDExNTQwLCAxMTU0MiwgMTE1NDQsIDExNTQ2LCAxMTU0OCwgMTE1NTAsIDExNTUyLCAKLSAgICAxMTU1NCwgMTE1NTYsIDExNTU4LCAxMTU2MCwgMTE1NjIsIDExNTY0LCAxMTU2NiwgMTE1NjgsIDExNTcwLCAxMTU3MiwgCi0gICAgMTE1NzQsIDExNTc2LCAxMTU3OCwgMTE1ODAsIDExNTgyLCAxMTU4NCwgMTE1ODYsIDExNTg4LCAxMTU5MCwgMTE1OTIsIAotICAgIDExNTk0LCAxMTU5NiwgMTE1OTgsIDExNjAwLCAxMTYwMiwgMTE2MDQsIDExNjA2LCAxMTYwOCwgMTE2MTAsIDExNjEyLCAKLSAgICAxMTYxNCwgMTE2MTYsIDExNjE4LCAxMTYyMCwgMTE2MjIsIDExNjI0LCAxMTYyNiwgMTE2MjgsIDExNjMwLCAxMTYzMiwgCi0gICAgMTE2MzQsIDExNjM2LCAxMTYzOCwgMTE2NDAsIDExNjQyLCAxMTY0NCwgMTE2NDYsIDExNjQ4LCAxMTY1MCwgMTE2NTIsIAotICAgIDExNjU0LCAxMTY1NiwgMTE2NTgsIDExNjYwLCAxMTY2MiwgMTE2NjQsIDExNjY2LCAxMTY2OCwgMTE2NzAsIDExNjcyLCAKLSAgICAxMTY3NCwgMTE2NzYsIDExNjc4LCAxMTY4MCwgMTE2ODIsIDExNjg0LCAxMTY4NiwgMTE2ODgsIDExNjkwLCAxMTY5MiwgCi0gICAgMTE2OTQsIDExNjk2LCAxMTY5OCwgMTE3MDAsIDExNzAyLCAxMTcwNCwgMTE3MDYsIDExNzA4LCAxMTcxMCwgMTE3MTIsIAotICAgIDExNzE0LCAxMTcxNiwgMTE3MTgsIDExNzIwLCAxMTcyMiwgMTE3MjQsIDExNzI2LCAxMTcyOCwgMTE3MzAsIDExNzMyLCAKLSAgICAxMTczNCwgMTE3MzYsIDExNzM4LCAxMTc0MCwgMTE3NDIsIDExNzQ0LCAxMTc0NiwgMTE3NDgsIDExNzUwLCAxMTc1MiwgCi0gICAgMTE3NTQsIDExNzU2LCAxMTc1OCwgMTE3NjAsIDExNzYyLCAxMTc2NCwgMTE3NjYsIDExNzY4LCAxMTc3MCwgMTE3NzIsIAotICAgIDExNzc0LCAxMTc3NiwgMTE3NzgsIDExNzgwLCAxMTc4MiwgMTE3ODQsIDExNzg2LCAxMTc4OCwgMTE3OTAsIDExNzkyLCAKLSAgICAxMTc5NCwgMTE3OTYsIDAsIDAsIDExNzk4LCAxMTgwMCwgMTE4MDIsIDExODA0LCAxMTgwNiwgMTE4MDgsIDExODEwLCAKLSAgICAxMTgxMiwgMTE4MTQsIDExODE2LCAxMTgxOCwgMTE4MjAsIDExODIyLCAxMTgyNCwgMTE4MjYsIDExODI4LCAxMTgzMCwgCi0gICAgMTE4MzIsIDExODM0LCAxMTgzNiwgMTE4MzgsIDExODQwLCAxMTg0MiwgMTE4NDQsIDExODQ2LCAxMTg0OCwgMTE4NTAsIAotICAgIDExODUyLCAxMTg1NCwgMTE4NTYsIDExODU4LCAxMTg2MCwgMTE4NjIsIDExODY0LCAxMTg2NiwgMTE4NjgsIDExODcwLCAKLSAgICAxMTg3MiwgMTE4NzQsIDExODc2LCAxMTg3OCwgMTE4ODAsIDExODgyLCAxMTg4NCwgMTE4ODYsIDExODg4LCAxMTg5MCwgCi0gICAgMTE4OTIsIDExODk0LCAxMTg5NiwgMTE4OTgsIDExOTAwLCAxMTkwMiwgMTE5MDQsIDExOTA2LCAxMTkwOCwgMTE5MTAsIAotICAgIDExOTEyLCAxMTkxNCwgMTE5MTYsIDExOTE4LCAxMTkyMCwgMTE5MjIsIDExOTI0LCAxMTkyNiwgMTE5MjgsIDExOTMwLCAKLSAgICAxMTkzMiwgMTE5MzQsIDExOTM2LCAxMTkzOCwgMTE5NDAsIDExOTQyLCAxMTk0NCwgMTE5NDYsIDExOTQ4LCAxMTk1MCwgCi0gICAgMTE5NTIsIDExOTU0LCAxMTk1NiwgMTE5NTgsIDExOTYwLCAxMTk2MiwgMTE5NjQsIDExOTY2LCAxMTk2OCwgMTE5NzAsIAotICAgIDExOTcyLCAxMTk3NCwgMTE5NzYsIDExOTc4LCAxMTk4MCwgMTE5ODIsIDExOTg0LCAxMTk4NiwgMTE5ODgsIDExOTkwLCAKLSAgICAxMTk5MiwgMTE5OTQsIDExOTk2LCAxMTk5OCwgMTIwMDAsIDEyMDAyLCAxMjAwNCwgMTIwMDYsIDEyMDA4LCAxMjAxMCwgCi0gICAgMTIwMTIsIDEyMDE0LCAxMjAxNiwgMTIwMTgsIDEyMDIwLCAxMjAyMiwgMTIwMjQsIDEyMDI2LCAxMjAyOCwgMTIwMzAsIAotICAgIDEyMDMyLCAxMjAzNCwgMTIwMzYsIDEyMDM4LCAxMjA0MCwgMTIwNDIsIDEyMDQ0LCAxMjA0NiwgMTIwNDgsIDEyMDUwLCAKLSAgICAxMjA1MiwgMTIwNTQsIDEyMDU2LCAxMjA1OCwgMTIwNjAsIDEyMDYyLCAxMjA2NCwgMTIwNjYsIDEyMDY4LCAxMjA3MCwgCi0gICAgMTIwNzIsIDEyMDc0LCAxMjA3NiwgMTIwNzgsIDEyMDgwLCAxMjA4MiwgMTIwODQsIDEyMDg2LCAxMjA4OCwgMTIwOTAsIAotICAgIDEyMDkyLCAxMjA5NCwgMTIwOTYsIDEyMDk4LCAxMjEwMCwgMTIxMDIsIDEyMTA0LCAxMjEwNiwgMTIxMDgsIDEyMTEwLCAKLSAgICAxMjExMiwgMTIxMTQsIDEyMTE2LCAxMjExOCwgMTIxMjAsIDEyMTIyLCAxMjEyNCwgMTIxMjYsIDEyMTI4LCAxMjEzMCwgCi0gICAgMTIxMzIsIDEyMTM0LCAxMjEzNiwgMTIxMzgsIDEyMTQwLCAxMjE0MiwgMTIxNDQsIDEyMTQ2LCAxMjE0OCwgMTIxNTAsIAotICAgIDEyMTUyLCAxMjE1NCwgMTIxNTYsIDEyMTU4LCAxMjE2MCwgMTIxNjIsIDEyMTY0LCAxMjE2NiwgMTIxNjgsIDEyMTcwLCAKLSAgICAxMjE3MiwgMTIxNzQsIDEyMTc2LCAxMjE3OCwgMTIxODAsIDEyMTgyLCAxMjE4NCwgMTIxODYsIDEyMTg4LCAxMjE5MCwgCi0gICAgMTIxOTIsIDEyMTk0LCAxMjE5NiwgMTIxOTgsIDEyMjAwLCAxMjIwMiwgMTIyMDQsIDEyMjA2LCAxMjIwOCwgMTIyMTAsIAotICAgIDEyMjEyLCAxMjIxNCwgMTIyMTYsIDEyMjE4LCAxMjIyMCwgMTIyMjIsIDEyMjI0LCAxMjIyNiwgMTIyMjgsIDEyMjMwLCAKLSAgICAxMjIzMiwgMTIyMzQsIDEyMjM2LCAxMjIzOCwgMTIyNDAsIDEyMjQyLCAxMjI0NCwgMTIyNDYsIDEyMjQ4LCAxMjI1MCwgCi0gICAgMTIyNTIsIDEyMjU0LCAxMjI1NiwgMTIyNTgsIDEyMjYwLCAxMjI2MiwgMTIyNjQsIDEyMjY2LCAxMjI2OCwgMTIyNzAsIAotICAgIDEyMjcyLCAxMjI3NCwgMTIyNzYsIDEyMjc4LCAxMjI4MCwgMTIyODIsIDEyMjg0LCAxMjI4NiwgMTIyODgsIDEyMjkwLCAKLSAgICAxMjI5MiwgMTIyOTQsIDEyMjk2LCAxMjI5OCwgMTIzMDAsIDEyMzAyLCAxMjMwNCwgMTIzMDYsIDEyMzA4LCAxMjMxMCwgCi0gICAgMTIzMTIsIDEyMzE0LCAxMjMxNiwgMTIzMTgsIDEyMzIwLCAxMjMyMiwgMTIzMjQsIDEyMzI2LCAxMjMyOCwgMTIzMzAsIAotICAgIDEyMzMyLCAxMjMzNCwgMTIzMzYsIDEyMzM4LCAxMjM0MCwgMTIzNDIsIDEyMzQ0LCAxMjM0NiwgMTIzNDgsIDEyMzUwLCAKLSAgICAxMjM1MiwgMTIzNTQsIDEyMzU2LCAxMjM1OCwgMTIzNjAsIDEyMzYyLCAxMjM2NCwgMTIzNjYsIDEyMzY4LCAxMjM3MCwgCi0gICAgMTIzNzIsIDEyMzc0LCAxMjM3NiwgMTIzNzgsIDEyMzgwLCAwLCAwLCAxMjM4MiwgMTIzODQsIDEyMzg2LCAxMjM4OCwgCi0gICAgMTIzOTAsIDEyMzkyLCAxMjM5NCwgMTIzOTYsIDEyMzk4LCAxMjQwMCwgMTI0MDIsIDEyNDA0LCAxMjQwNiwgMTI0MDgsIAotICAgIDEyNDEwLCAxMjQxMiwgMTI0MTQsIDEyNDE2LCAxMjQxOCwgMTI0MjAsIDEyNDIyLCAxMjQyNCwgMTI0MjYsIDEyNDI4LCAKLSAgICAxMjQzMCwgMTI0MzIsIDEyNDM0LCAxMjQzNiwgMTI0MzgsIDEyNDQwLCAxMjQ0MiwgMTI0NDQsIDEyNDQ2LCAxMjQ0OCwgCi0gICAgMTI0NTAsIDEyNDUyLCAxMjQ1NCwgMTI0NTYsIDEyNDU4LCAxMjQ2MCwgMTI0NjIsIDEyNDY0LCAxMjQ2NiwgMTI0NjgsIAotICAgIDEyNDcwLCAxMjQ3MiwgMTI0NzQsIDEyNDc2LCAxMjQ3OCwgMTI0ODAsIDEyNDgyLCAxMjQ4NCwgMTI0ODYsIDEyNDg4LCAwLCAKLSAgICAxMjQ5MCwgMTI0OTIsIDEyNDk0LCAxMjQ5NiwgMTI0OTgsIDEyNTAwLCAxMjUwMiwgMTI1MDQsIDEyNTA2LCAxMjUwOCwgCi0gICAgMTI1MTAsIDEyNTEyLCAxMjUxNCwgMTI1MTYsIDEyNTE4LCAxMjUyMCwgMTI1MjIsIDEyNTI0LCAxMjUyNiwgMTI1MjgsIAotICAgIDEyNTMwLCAxMjUzMiwgMTI1MzQsIDEyNTM2LCAxMjUzOCwgMTI1NDAsIDEyNTQyLCAwLCAxMjU0NCwgMTI1NDYsIDAsIAotICAgIDEyNTQ4LCAwLCAwLCAxMjU1MCwgMCwgMTI1NTIsIDEyNTU0LCAxMjU1NiwgMTI1NTgsIDEyNTYwLCAxMjU2MiwgMTI1NjQsIAotICAgIDEyNTY2LCAxMjU2OCwgMTI1NzAsIDAsIDEyNTcyLCAxMjU3NCwgMTI1NzYsIDEyNTc4LCAwLCAxMjU4MCwgMCwgMTI1ODIsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTg0LCAwLCAwLCAwLCAwLCAxMjU4NiwgMCwgMTI1ODgsIDAsIDEyNTkwLCAwLCAxMjU5MiwgCi0gICAgMTI1OTQsIDEyNTk2LCAwLCAxMjU5OCwgMTI2MDAsIDAsIDEyNjAyLCAwLCAwLCAxMjYwNCwgMCwgMTI2MDYsIDAsIDEyNjA4LCAKLSAgICAwLCAxMjYxMCwgMCwgMTI2MTIsIDAsIDEyNjE0LCAxMjYxNiwgMCwgMTI2MTgsIDAsIDAsIDEyNjIwLCAxMjYyMiwgMTI2MjQsIAotICAgIDEyNjI2LCAwLCAxMjYyOCwgMTI2MzAsIDEyNjMyLCAxMjYzNCwgMTI2MzYsIDEyNjM4LCAxMjY0MCwgMCwgMTI2NDIsIAotICAgIDEyNjQ0LCAxMjY0NiwgMTI2NDgsIDAsIDEyNjUwLCAxMjY1MiwgMTI2NTQsIDEyNjU2LCAwLCAxMjY1OCwgMCwgMTI2NjAsIAotICAgIDEyNjYyLCAxMjY2NCwgMTI2NjYsIDEyNjY4LCAxMjY3MCwgMTI2NzIsIDEyNjc0LCAxMjY3NiwgMTI2NzgsIDAsIDEyNjgwLCAKLSAgICAxMjY4MiwgMTI2ODQsIDEyNjg2LCAxMjY4OCwgMTI2OTAsIDEyNjkyLCAxMjY5NCwgMTI2OTYsIDEyNjk4LCAxMjcwMCwgCi0gICAgMTI3MDIsIDEyNzA0LCAxMjcwNiwgMTI3MDgsIDEyNzEwLCAxMjcxMiwgMCwgMCwgMCwgMCwgMCwgMTI3MTQsIDEyNzE2LCAKLSAgICAxMjcxOCwgMCwgMTI3MjAsIDEyNzIyLCAxMjcyNCwgMTI3MjYsIDEyNzI4LCAwLCAxMjczMCwgMTI3MzIsIDEyNzM0LCAKLSAgICAxMjczNiwgMTI3MzgsIDEyNzQwLCAxMjc0MiwgMTI3NDQsIDEyNzQ2LCAxMjc0OCwgMTI3NTAsIDEyNzUyLCAxMjc1NCwgCi0gICAgMTI3NTYsIDEyNzU4LCAxMjc2MCwgMTI3NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2NjQsIDY2NjYsIDY2NjgsIDY2NzAsIDY2NzIsIDY2NzQsIDY2NzYsIDY2NzgsIAorICAgIDY2ODAsIDY2ODIsIDY2ODQsIDY2ODYsIDY2ODgsIDY2OTAsIDY2OTIsIDY2OTQsIDY2OTYsIDY2OTgsIDY3MDAsIDY3MDIsIAorICAgIDY3MDQsIDY3MDYsIDY3MDgsIDY3MTAsIDY3MTIsIDY3MTQsIDY3MTYsIDY3MTgsIDY3MjAsIDY3MjIsIDY3MjQsIDY3MjYsIAorICAgIDY3MjgsIDY3MzAsIDY3MzIsIDY3MzQsIDY3MzYsIDY3MzgsIDY3NDAsIDY3NDIsIDY3NDQsIDY3NDYsIDY3NDgsIDY3NTAsIAorICAgIDY3NTIsIDY3NTQsIDY3NTYsIDY3NTgsIDY3NjAsIDY3NjIsIDY3NjQsIDY3NjYsIDY3NjgsIDY3NzAsIDY3NzIsIDY3NzQsIAorICAgIDY3NzYsIDY3NzgsIDY3ODAsIDY3ODIsIDY3ODQsIDY3ODYsIDY3ODgsIDY3OTAsIDY3OTIsIDY3OTQsIDY3OTYsIDY3OTgsIAorICAgIDY4MDAsIDY4MDIsIDY4MDQsIDY4MDYsIDY4MDgsIDY4MTAsIDY4MTIsIDY4MTQsIDY4MTYsIDY4MTgsIDY4MjAsIDY4MjIsIAorICAgIDY4MjQsIDY4MjYsIDY4MjgsIDY4MzAsIDY4MzIsIDY4MzQsIDY4MzYsIDY4MzgsIDY4NDAsIDY4NDIsIDY4NDQsIDY4NDYsIAorICAgIDY4NDgsIDY4NTAsIDY4NTIsIDY4NTQsIDY4NTYsIDY4NTgsIDY4NjAsIDY4NjIsIDY4NjQsIDY4NjYsIDY4NjgsIDY4NzAsIAorICAgIDY4NzIsIDY4NzQsIDY4NzYsIDY4NzgsIDY4ODAsIDY4ODIsIDY4ODQsIDY4ODYsIDY4ODgsIDY4OTAsIDY4OTIsIDY4OTQsIAorICAgIDY4OTYsIDY4OTgsIDY5MDAsIDY5MDIsIDY5MDQsIDY5MDYsIDY5MDgsIDY5MTAsIDY5MTIsIDY5MTQsIDY5MTYsIDY5MTgsIAorICAgIDY5MjAsIDY5MjIsIDY5MjQsIDY5MjYsIDY5MjgsIDY5MzAsIDY5MzIsIDY5MzQsIDY5MzYsIDY5MzgsIDY5NDAsIDY5NDIsIAorICAgIDY5NDQsIDY5NDYsIDY5NDgsIDY5NTAsIDY5NTIsIDY5NTQsIDY5NTYsIDY5NTgsIDY5NjAsIDY5NjIsIDY5NjQsIDY5NjYsIAorICAgIDY5NjgsIDY5NzAsIDY5NzIsIDY5NzQsIDY5NzYsIDY5NzgsIDY5ODAsIDY5ODIsIDY5ODQsIDY5ODYsIDY5ODgsIDY5OTAsIAorICAgIDY5OTIsIDY5OTQsIDY5OTYsIDY5OTgsIDcwMDAsIDcwMDIsIDcwMDQsIDcwMDYsIDcwMDgsIDcwMTAsIDcwMTIsIDcwMTQsIAorICAgIDcwMTYsIDcwMTgsIDcwMjAsIDcwMjIsIDcwMjQsIDcwMjYsIDcwMjgsIDcwMzAsIDcwMzIsIDcwMzQsIDcwMzYsIDcwMzgsIAorICAgIDcwNDAsIDcwNDIsIDcwNDQsIDcwNDYsIDcwNDgsIDcwNTAsIDcwNTIsIDcwNTQsIDcwNTYsIDcwNTgsIDcwNjAsIDcwNjIsIAorICAgIDcwNjQsIDcwNjYsIDcwNjgsIDcwNzAsIDcwNzIsIDcwNzQsIDcwNzYsIDcwNzgsIDcwODAsIDcwODIsIDcwODQsIDcwODYsIAorICAgIDcwODgsIDcwOTAsIDcwOTIsIDcwOTQsIDcwOTYsIDcwOTgsIDcxMDAsIDcxMDIsIDcxMDQsIDcxMDYsIDcxMDgsIDcxMTAsIAorICAgIDcxMTIsIDcxMTQsIDcxMTYsIDcxMTgsIDcxMjAsIDcxMjIsIDcxMjQsIDcxMjYsIDcxMjgsIDcxMzAsIDcxMzIsIDcxMzQsIAorICAgIDcxMzYsIDcxMzgsIDcxNDAsIDcxNDIsIDcxNDQsIDcxNDYsIDcxNDgsIDcxNTAsIDcxNTIsIDcxNTQsIDcxNTYsIDcxNTgsIAorICAgIDcxNjAsIDcxNjIsIDcxNjQsIDcxNjYsIDcxNjgsIDcxNzAsIDcxNzIsIDcxNzQsIDcxNzYsIDcxNzgsIDcxODAsIDcxODIsIAorICAgIDcxODQsIDcxODYsIDcxODgsIDcxOTAsIDcxOTIsIDcxOTQsIDcxOTYsIDcxOTgsIDcyMDAsIDcyMDIsIDAsIDAsIDcyMDQsIAorICAgIDAsIDcyMDYsIDAsIDAsIDcyMDgsIDcyMTAsIDcyMTIsIDcyMTQsIDcyMTYsIDcyMTgsIDcyMjAsIDcyMjIsIDcyMjQsIAorICAgIDcyMjYsIDAsIDcyMjgsIDAsIDcyMzAsIDAsIDAsIDcyMzIsIDcyMzQsIDAsIDAsIDAsIDcyMzYsIDcyMzgsIDcyNDAsIAorICAgIDcyNDIsIDcyNDQsIDcyNDYsIDcyNDgsIDcyNTAsIDcyNTIsIDcyNTQsIDcyNTYsIDcyNTgsIDcyNjAsIDcyNjIsIDcyNjQsIAorICAgIDcyNjYsIDcyNjgsIDcyNzAsIDcyNzIsIDcyNzQsIDcyNzYsIDcyNzgsIDcyODAsIDcyODIsIDcyODQsIDcyODYsIDcyODgsIAorICAgIDcyOTAsIDcyOTIsIDcyOTQsIDcyOTYsIDcyOTgsIDczMDAsIDczMDIsIDczMDQsIDczMDYsIDczMDgsIDczMTAsIDczMTIsIAorICAgIDczMTQsIDczMTYsIDczMTgsIDczMjAsIDczMjIsIDczMjQsIDczMjYsIDczMjgsIDczMzAsIDczMzIsIDczMzQsIDczMzYsIAorICAgIDczMzgsIDczNDAsIDczNDIsIDczNDQsIDczNDYsIDczNDgsIDczNTAsIDczNTIsIDczNTQsIDczNTYsIDczNTgsIDczNjAsIAorICAgIDczNjIsIDczNjQsIDczNjYsIDczNjgsIDczNzAsIDAsIDAsIDczNzIsIDczNzQsIDczNzYsIDczNzgsIDczODAsIDczODIsIAorICAgIDczODQsIDczODYsIDczODgsIDczOTAsIDczOTIsIDczOTQsIDczOTYsIDczOTgsIDc0MDAsIDc0MDIsIDc0MDQsIDc0MDYsIAorICAgIDc0MDgsIDc0MTAsIDc0MTIsIDc0MTQsIDc0MTYsIDc0MTgsIDc0MjAsIDc0MjIsIDc0MjQsIDc0MjYsIDc0MjgsIDc0MzAsIAorICAgIDc0MzIsIDc0MzQsIDc0MzYsIDc0MzgsIDc0NDAsIDc0NDIsIDc0NDQsIDc0NDYsIDc0NDgsIDc0NTAsIDc0NTIsIDc0NTQsIAorICAgIDc0NTYsIDc0NTgsIDc0NjAsIDc0NjIsIDc0NjQsIDc0NjYsIDc0NjgsIDc0NzAsIDc0NzIsIDc0NzQsIDc0NzYsIDc0NzgsIAorICAgIDc0ODAsIDc0ODIsIDc0ODQsIDc0ODYsIDc0ODgsIDc0OTAsIDc0OTIsIDc0OTQsIDc0OTYsIDc0OTgsIDc1MDAsIDc1MDIsIAorICAgIDc1MDQsIDc1MDYsIDc1MDgsIDc1MTAsIDc1MTIsIDc1MTQsIDc1MTYsIDc1MTgsIDc1MjAsIDc1MjIsIDc1MjQsIDc1MjYsIAorICAgIDc1MjgsIDc1MzAsIDc1MzIsIDc1MzQsIDc1MzYsIDc1MzgsIDc1NDAsIDc1NDIsIDc1NDQsIDc1NDYsIDc1NDgsIDc1NTAsIAorICAgIDc1NTIsIDc1NTQsIDc1NTYsIDc1NTgsIDc1NjAsIDc1NjIsIDc1NjQsIDc1NjYsIDc1NjgsIDc1NzAsIDc1NzIsIDc1NzQsIAorICAgIDc1NzYsIDc1NzgsIDc1ODAsIDc1ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1ODQsIAorICAgIDc1ODcsIDc1OTAsIDc1OTMsIDc1OTcsIDc2MDEsIDc2MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDc2MDcsIDc2MTAsIDc2MTMsIDc2MTYsIDc2MTksIDAsIDAsIDAsIDAsIDAsIDc2MjIsIDAsIDc2MjUsIDc2MjgsIDc2MzAsIAorICAgIDc2MzIsIDc2MzQsIDc2MzYsIDc2MzgsIDc2NDAsIDc2NDIsIDc2NDQsIDc2NDYsIDc2NDgsIDc2NTEsIDc2NTQsIDc2NTcsIAorICAgIDc2NjAsIDc2NjMsIDc2NjYsIDc2NjksIDc2NzIsIDc2NzUsIDc2NzgsIDc2ODEsIDc2ODQsIDAsIDc2ODcsIDc2OTAsIAorICAgIDc2OTMsIDc2OTYsIDc2OTksIDAsIDc3MDIsIDAsIDc3MDUsIDc3MDgsIDAsIDc3MTEsIDc3MTQsIDAsIDc3MTcsIDc3MjAsIAorICAgIDc3MjMsIDc3MjYsIDc3MjksIDc3MzIsIDc3MzUsIDc3MzgsIDc3NDEsIDc3NDQsIDc3NDcsIDc3NDksIDc3NTEsIDc3NTMsIAorICAgIDc3NTUsIDc3NTcsIDc3NTksIDc3NjEsIDc3NjMsIDc3NjUsIDc3NjcsIDc3NjksIDc3NzEsIDc3NzMsIDc3NzUsIDc3NzcsIAorICAgIDc3NzksIDc3ODEsIDc3ODMsIDc3ODUsIDc3ODcsIDc3ODksIDc3OTEsIDc3OTMsIDc3OTUsIDc3OTcsIDc3OTksIDc4MDEsIAorICAgIDc4MDMsIDc4MDUsIDc4MDcsIDc4MDksIDc4MTEsIDc4MTMsIDc4MTUsIDc4MTcsIDc4MTksIDc4MjEsIDc4MjMsIDc4MjUsIAorICAgIDc4MjcsIDc4MjksIDc4MzEsIDc4MzMsIDc4MzUsIDc4MzcsIDc4MzksIDc4NDEsIDc4NDMsIDc4NDUsIDc4NDcsIDc4NDksIAorICAgIDc4NTEsIDc4NTMsIDc4NTUsIDc4NTcsIDc4NTksIDc4NjEsIDc4NjMsIDc4NjUsIDc4NjcsIDc4NjksIDc4NzEsIDc4NzMsIAorICAgIDc4NzUsIDc4NzcsIDc4NzksIDc4ODEsIDc4ODMsIDc4ODUsIDc4ODcsIDc4ODksIDc4OTEsIDc4OTMsIDc4OTUsIDc4OTcsIAorICAgIDc4OTksIDc5MDEsIDc5MDMsIDc5MDUsIDc5MDcsIDc5MDksIDc5MTEsIDc5MTMsIDc5MTUsIDc5MTcsIDc5MTksIDc5MjEsIAorICAgIDc5MjMsIDc5MjUsIDc5MjcsIDc5MjksIDc5MzEsIDc5MzMsIDc5MzUsIDc5MzcsIDc5MzksIDc5NDEsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDc5NDMsIDc5NDUsIDc5NDcsIDc5NDksIDc5NTEsIDc5NTMsIDc5NTUsIDc5NTcsIDc5NTksIAorICAgIDc5NjEsIDc5NjMsIDc5NjUsIDc5NjcsIDc5NjksIDc5NzEsIDc5NzMsIDc5NzUsIDc5NzcsIDc5NzksIDc5ODEsIDc5ODMsIAorICAgIDc5ODUsIDc5ODcsIDc5ODksIDc5OTIsIDc5OTUsIDc5OTgsIDgwMDEsIDgwMDQsIDgwMDcsIDgwMTAsIDgwMTMsIDgwMTYsIAorICAgIDgwMTksIDgwMjIsIDgwMjUsIDgwMjgsIDgwMzEsIDgwMzQsIDgwMzcsIDgwNDAsIDgwNDMsIDgwNDUsIDgwNDcsIDgwNDksIAorICAgIDgwNTEsIDgwNTQsIDgwNTcsIDgwNjAsIDgwNjMsIDgwNjYsIDgwNjksIDgwNzIsIDgwNzUsIDgwNzgsIDgwODEsIDgwODQsIAorICAgIDgwODcsIDgwOTAsIDgwOTMsIDgwOTYsIDgwOTksIDgxMDIsIDgxMDUsIDgxMDgsIDgxMTEsIDgxMTQsIDgxMTcsIDgxMjAsIAorICAgIDgxMjMsIDgxMjYsIDgxMjksIDgxMzIsIDgxMzUsIDgxMzgsIDgxNDEsIDgxNDQsIDgxNDcsIDgxNTAsIDgxNTMsIDgxNTYsIAorICAgIDgxNTksIDgxNjIsIDgxNjUsIDgxNjgsIDgxNzEsIDgxNzQsIDgxNzcsIDgxODAsIDgxODMsIDgxODYsIDgxODksIDgxOTIsIAorICAgIDgxOTUsIDgxOTgsIDgyMDEsIDgyMDQsIDgyMDcsIDgyMTAsIDgyMTMsIDgyMTYsIDgyMTksIDgyMjIsIDgyMjUsIDgyMjgsIAorICAgIDgyMzEsIDgyMzQsIDgyMzcsIDgyNDAsIDgyNDMsIDgyNDYsIDgyNDksIDgyNTIsIDgyNTUsIDgyNTgsIDgyNjEsIDgyNjQsIAorICAgIDgyNjcsIDgyNzAsIDgyNzMsIDgyNzYsIDgyNzksIDgyODIsIDgyODUsIDgyODgsIDgyOTEsIDgyOTQsIDgyOTcsIDgzMDAsIAorICAgIDgzMDMsIDgzMDYsIDgzMDksIDgzMTIsIDgzMTUsIDgzMTgsIDgzMjEsIDgzMjQsIDgzMjcsIDgzMzAsIDgzMzMsIDgzMzcsIAorICAgIDgzNDEsIDgzNDUsIDgzNDksIDgzNTMsIDgzNTcsIDgzNjAsIDgzNjMsIDgzNjYsIDgzNjksIDgzNzIsIDgzNzUsIDgzNzgsIAorICAgIDgzODEsIDgzODQsIDgzODcsIDgzOTAsIDgzOTMsIDgzOTYsIDgzOTksIDg0MDIsIDg0MDUsIDg0MDgsIDg0MTEsIDg0MTQsIAorICAgIDg0MTcsIDg0MjAsIDg0MjMsIDg0MjYsIDg0MjksIDg0MzIsIDg0MzUsIDg0MzgsIDg0NDEsIDg0NDQsIDg0NDcsIDg0NTAsIAorICAgIDg0NTMsIDg0NTYsIDg0NTksIDg0NjIsIDg0NjUsIDg0NjgsIDg0NzEsIDg0NzQsIDg0NzcsIDg0ODAsIDg0ODMsIDg0ODYsIAorICAgIDg0ODksIDg0OTIsIDg0OTUsIDg0OTgsIDg1MDEsIDg1MDQsIDg1MDcsIDg1MTAsIDg1MTMsIDg1MTYsIDg1MTksIDg1MjIsIAorICAgIDg1MjUsIDg1MjgsIDg1MzEsIDg1MzQsIDg1MzcsIDg1NDAsIDg1NDMsIDg1NDYsIDg1NDksIDg1NTIsIDg1NTUsIDg1NTgsIAorICAgIDg1NjEsIDg1NjQsIDg1NjcsIDg1NzAsIDg1NzMsIDg1NzYsIDg1NzksIDg1ODIsIDg1ODUsIDg1ODgsIDg1OTEsIDg1OTQsIAorICAgIDg1OTcsIDg2MDAsIDg2MDMsIDg2MDYsIDg2MDksIDg2MTIsIDg2MTUsIDg2MTgsIDg2MjEsIDg2MjQsIDg2MjcsIDg2MzAsIAorICAgIDg2MzMsIDg2MzYsIDg2MzksIDg2NDIsIDg2NDUsIDg2NDgsIDg2NTEsIDg2NTQsIDg2NTcsIDg2NjAsIDg2NjMsIDg2NjYsIAorICAgIDg2NjksIDg2NzIsIDg2NzUsIDg2NzgsIDg2ODEsIDg2ODQsIDg2ODcsIDg2OTAsIDg2OTMsIDg2OTYsIDg2OTksIDg3MDIsIAorICAgIDg3MDUsIDg3MDgsIDg3MTEsIDg3MTQsIDg3MTcsIDg3MjAsIDg3MjMsIDg3MjYsIDg3MjksIDg3MzIsIDg3MzUsIDg3MzgsIAorICAgIDg3NDEsIDg3NDQsIDg3NDcsIDg3NTAsIDg3NTMsIDg3NTYsIDg3NTksIDg3NjIsIDg3NjUsIDg3NjgsIDg3NzEsIDg3NzQsIAorICAgIDg3NzcsIDg3ODAsIDg3ODMsIDg3ODcsIDg3OTEsIDg3OTUsIDg3OTgsIDg4MDEsIDg4MDQsIDg4MDcsIDg4MTAsIDg4MTMsIAorICAgIDg4MTYsIDg4MTksIDg4MjIsIDg4MjUsIDg4MjgsIDg4MzEsIDg4MzQsIDg4MzcsIDg4NDAsIDg4NDMsIDg4NDYsIDg4NDksIAorICAgIDg4NTIsIDg4NTUsIDg4NTgsIDg4NjEsIDg4NjQsIDg4NjcsIDg4NzAsIDg4NzMsIDg4NzYsIDg4NzksIDg4ODIsIDg4ODUsIAorICAgIDg4ODgsIDg4OTEsIDg4OTQsIDg4OTcsIDg5MDAsIDg5MDMsIDg5MDYsIDg5MDksIDg5MTIsIDg5MTUsIDg5MTgsIDg5MjEsIAorICAgIDg5MjQsIDg5MjcsIDg5MzAsIDg5MzMsIDg5MzYsIDg5MzksIDg5NDIsIDg5NDUsIDg5NDgsIDg5NTEsIDg5NTQsIDg5NTcsIAorICAgIDg5NjAsIDg5NjMsIDg5NjYsIDg5NjksIDg5NzIsIDg5NzUsIDg5NzgsIDg5ODEsIDg5ODQsIDg5ODcsIDg5OTAsIDg5OTMsIAorICAgIDg5OTYsIDg5OTksIDkwMDIsIDkwMDUsIDkwMDgsIDkwMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDkwMTQsIDkwMTgsIDkwMjIsIDkwMjYsIDkwMzAsIDkwMzQsIDkwMzgsIDkwNDIsIDkwNDYsIAorICAgIDkwNTAsIDkwNTQsIDkwNTgsIDkwNjIsIDkwNjYsIDkwNzAsIDkwNzQsIDkwNzgsIDkwODIsIDkwODYsIDkwOTAsIDkwOTQsIAorICAgIDkwOTgsIDkxMDIsIDkxMDYsIDkxMTAsIDkxMTQsIDkxMTgsIDkxMjIsIDkxMjYsIDkxMzAsIDkxMzQsIDkxMzgsIDkxNDIsIAorICAgIDkxNDYsIDkxNTAsIDkxNTQsIDkxNTgsIDkxNjIsIDkxNjYsIDkxNzAsIDkxNzQsIDkxNzgsIDkxODIsIDkxODYsIDkxOTAsIAorICAgIDkxOTQsIDkxOTgsIDkyMDIsIDkyMDYsIDkyMTAsIDkyMTQsIDkyMTgsIDkyMjIsIDkyMjYsIDkyMzAsIDkyMzQsIDkyMzgsIAorICAgIDkyNDIsIDkyNDYsIDkyNTAsIDkyNTQsIDkyNTgsIDkyNjIsIDkyNjYsIDAsIDAsIDkyNzAsIDkyNzQsIDkyNzgsIDkyODIsIAorICAgIDkyODYsIDkyOTAsIDkyOTQsIDkyOTgsIDkzMDIsIDkzMDYsIDkzMTAsIDkzMTQsIDkzMTgsIDkzMjIsIDkzMjYsIDkzMzAsIAorICAgIDkzMzQsIDkzMzgsIDkzNDIsIDkzNDYsIDkzNTAsIDkzNTQsIDkzNTgsIDkzNjIsIDkzNjYsIDkzNzAsIDkzNzQsIDkzNzgsIAorICAgIDkzODIsIDkzODYsIDkzOTAsIDkzOTQsIDkzOTgsIDk0MDIsIDk0MDYsIDk0MTAsIDk0MTQsIDk0MTgsIDk0MjIsIDk0MjYsIAorICAgIDk0MzAsIDk0MzQsIDk0MzgsIDk0NDIsIDk0NDYsIDk0NTAsIDk0NTQsIDk0NTgsIDk0NjIsIDk0NjYsIDk0NzAsIDk0NzQsIAorICAgIDk0NzgsIDk0ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk0ODYsIDk0OTAsIAorICAgIDk0OTQsIDk0OTksIDk1MDQsIDk1MDksIDk1MTQsIDk1MTksIDk1MjQsIDk1MjksIDk1MzMsIDk1NTIsIDk1NjEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1NjYsIDk1NjgsIDk1NzAsIAorICAgIDk1NzIsIDk1NzQsIDk1NzYsIDk1NzgsIDk1ODAsIDk1ODIsIDk1ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1ODYsIDk1ODgsIDk1OTAsIDk1OTIsIDk1OTQsIDk1OTYsIAorICAgIDk1OTgsIDk2MDAsIDk2MDIsIDk2MDQsIDk2MDYsIDk2MDgsIDk2MTAsIDk2MTIsIDk2MTQsIDk2MTYsIDk2MTgsIDk2MjAsIAorICAgIDk2MjIsIDk2MjQsIDk2MjYsIDAsIDAsIDk2MjgsIDk2MzAsIDk2MzIsIDk2MzQsIDk2MzYsIDk2MzgsIDk2NDAsIDk2NDIsIAorICAgIDk2NDQsIDk2NDYsIDk2NDgsIDk2NTAsIDAsIDk2NTIsIDk2NTQsIDk2NTYsIDk2NTgsIDk2NjAsIDk2NjIsIDk2NjQsIAorICAgIDk2NjYsIDk2NjgsIDk2NzAsIDk2NzIsIDk2NzQsIDk2NzYsIDk2NzgsIDk2ODAsIDk2ODIsIDk2ODQsIDk2ODYsIDk2ODgsIAorICAgIDAsIDk2OTAsIDk2OTIsIDk2OTQsIDk2OTYsIDAsIDAsIDAsIDAsIDk2OTgsIDk3MDEsIDk3MDQsIDAsIDk3MDcsIDAsIAorICAgIDk3MTAsIDk3MTMsIDk3MTYsIDk3MTksIDk3MjIsIDk3MjUsIDk3MjgsIDk3MzEsIDk3MzQsIDk3MzcsIDk3NDAsIDk3NDIsIAorICAgIDk3NDQsIDk3NDYsIDk3NDgsIDk3NTAsIDk3NTIsIDk3NTQsIDk3NTYsIDk3NTgsIDk3NjAsIDk3NjIsIDk3NjQsIDk3NjYsIAorICAgIDk3NjgsIDk3NzAsIDk3NzIsIDk3NzQsIDk3NzYsIDk3NzgsIDk3ODAsIDk3ODIsIDk3ODQsIDk3ODYsIDk3ODgsIDk3OTAsIAorICAgIDk3OTIsIDk3OTQsIDk3OTYsIDk3OTgsIDk4MDAsIDk4MDIsIDk4MDQsIDk4MDYsIDk4MDgsIDk4MTAsIDk4MTIsIDk4MTQsIAorICAgIDk4MTYsIDk4MTgsIDk4MjAsIDk4MjIsIDk4MjQsIDk4MjYsIDk4MjgsIDk4MzAsIDk4MzIsIDk4MzQsIDk4MzYsIDk4MzgsIAorICAgIDk4NDAsIDk4NDIsIDk4NDQsIDk4NDYsIDk4NDgsIDk4NTAsIDk4NTIsIDk4NTQsIDk4NTYsIDk4NTgsIDk4NjAsIDk4NjIsIAorICAgIDk4NjQsIDk4NjYsIDk4NjgsIDk4NzAsIDk4NzIsIDk4NzQsIDk4NzYsIDk4NzgsIDk4ODAsIDk4ODIsIDk4ODQsIDk4ODYsIAorICAgIDk4ODgsIDk4OTAsIDk4OTIsIDk4OTQsIDk4OTYsIDk4OTgsIDk5MDAsIDk5MDIsIDk5MDQsIDk5MDYsIDk5MDgsIDk5MTAsIAorICAgIDk5MTIsIDk5MTQsIDk5MTYsIDk5MTgsIDk5MjAsIDk5MjIsIDk5MjQsIDk5MjYsIDk5MjgsIDk5MzAsIDk5MzIsIDk5MzQsIAorICAgIDk5MzYsIDk5MzgsIDk5NDAsIDk5NDIsIDk5NDQsIDk5NDYsIDk5NDgsIDk5NTAsIDk5NTIsIDk5NTQsIDk5NTYsIDk5NTgsIAorICAgIDk5NjAsIDk5NjIsIDk5NjQsIDk5NjYsIDk5NjgsIDk5NzAsIDk5NzIsIDk5NzQsIDk5NzcsIDk5ODAsIDk5ODMsIDk5ODYsIAorICAgIDk5ODksIDk5OTIsIDk5OTUsIDAsIDAsIDAsIDAsIDk5OTgsIDEwMDAwLCAxMDAwMiwgMTAwMDQsIDEwMDA2LCAxMDAwOCwgCisgICAgMTAwMTAsIDEwMDEyLCAxMDAxNCwgMTAwMTYsIDEwMDE4LCAxMDAyMCwgMTAwMjIsIDEwMDI0LCAxMDAyNiwgMTAwMjgsIAorICAgIDEwMDMwLCAxMDAzMiwgMTAwMzQsIDEwMDM2LCAxMDAzOCwgMTAwNDAsIDEwMDQyLCAxMDA0NCwgMTAwNDYsIDEwMDQ4LCAKKyAgICAxMDA1MCwgMTAwNTIsIDEwMDU0LCAxMDA1NiwgMTAwNTgsIDEwMDYwLCAxMDA2MiwgMTAwNjQsIDEwMDY2LCAxMDA2OCwgCisgICAgMTAwNzAsIDEwMDcyLCAxMDA3NCwgMTAwNzYsIDEwMDc4LCAxMDA4MCwgMTAwODIsIDEwMDg0LCAxMDA4NiwgMTAwODgsIAorICAgIDEwMDkwLCAxMDA5MiwgMTAwOTQsIDEwMDk2LCAxMDA5OCwgMTAxMDAsIDEwMTAyLCAxMDEwNCwgMTAxMDYsIDEwMTA4LCAKKyAgICAxMDExMCwgMTAxMTIsIDEwMTE0LCAxMDExNiwgMTAxMTgsIDEwMTIwLCAxMDEyMiwgMTAxMjQsIDEwMTI2LCAxMDEyOCwgCisgICAgMTAxMzAsIDEwMTMyLCAxMDEzNCwgMTAxMzYsIDEwMTM4LCAxMDE0MCwgMTAxNDIsIDEwMTQ0LCAxMDE0NiwgMTAxNDgsIAorICAgIDEwMTUwLCAxMDE1MiwgMTAxNTQsIDEwMTU2LCAxMDE1OCwgMTAxNjAsIDEwMTYyLCAxMDE2NCwgMTAxNjYsIDEwMTY4LCAKKyAgICAxMDE3MCwgMTAxNzIsIDEwMTc0LCAxMDE3NiwgMTAxNzgsIDEwMTgwLCAxMDE4MiwgMTAxODQsIDEwMTg2LCAxMDE4OCwgCisgICAgMTAxOTAsIDEwMTkyLCAxMDE5NCwgMTAxOTYsIDEwMTk4LCAxMDIwMCwgMTAyMDIsIDEwMjA0LCAxMDIwNiwgMTAyMDgsIAorICAgIDEwMjEwLCAxMDIxMiwgMTAyMTQsIDEwMjE2LCAxMDIxOCwgMTAyMjAsIDEwMjIyLCAxMDIyNCwgMTAyMjYsIDEwMjI4LCAKKyAgICAxMDIzMCwgMTAyMzIsIDEwMjM0LCAxMDIzNiwgMTAyMzgsIDEwMjQwLCAxMDI0MiwgMTAyNDQsIDEwMjQ2LCAxMDI0OCwgCisgICAgMTAyNTAsIDEwMjUyLCAxMDI1NCwgMTAyNTYsIDEwMjU4LCAxMDI2MCwgMTAyNjIsIDEwMjY0LCAxMDI2NiwgMTAyNjgsIAorICAgIDEwMjcwLCAxMDI3MiwgMTAyNzQsIDEwMjc2LCAxMDI3OCwgMTAyODAsIDEwMjgyLCAxMDI4NCwgMTAyODYsIDEwMjg4LCAKKyAgICAxMDI5MCwgMTAyOTIsIDEwMjk0LCAxMDI5NiwgMTAyOTgsIDEwMzAwLCAxMDMwMiwgMTAzMDQsIDEwMzA2LCAxMDMwOCwgCisgICAgMTAzMTAsIDEwMzEyLCAxMDMxNCwgMTAzMTYsIDEwMzE4LCAxMDMyMCwgMTAzMjIsIDEwMzI0LCAxMDMyNiwgMTAzMjgsIAorICAgIDEwMzMwLCAxMDMzMiwgMTAzMzQsIDEwMzM2LCAxMDMzOCwgMTAzNDAsIDEwMzQyLCAxMDM0NCwgMTAzNDYsIDEwMzQ4LCAKKyAgICAxMDM1MCwgMTAzNTIsIDEwMzU0LCAxMDM1NiwgMTAzNTgsIDEwMzYwLCAxMDM2MiwgMTAzNjQsIDEwMzY2LCAxMDM2OCwgCisgICAgMTAzNzAsIDEwMzcyLCAxMDM3NCwgMTAzNzYsIDAsIDAsIDAsIDEwMzc4LCAxMDM4MCwgMTAzODIsIDEwMzg0LCAxMDM4NiwgCisgICAgMTAzODgsIDAsIDAsIDEwMzkwLCAxMDM5MiwgMTAzOTQsIDEwMzk2LCAxMDM5OCwgMTA0MDAsIDAsIDAsIDEwNDAyLCAKKyAgICAxMDQwNCwgMTA0MDYsIDEwNDA4LCAxMDQxMCwgMTA0MTIsIDAsIDAsIDEwNDE0LCAxMDQxNiwgMTA0MTgsIDAsIDAsIDAsIAorICAgIDEwNDIwLCAxMDQyMiwgMTA0MjQsIDEwNDI2LCAxMDQyOCwgMTA0MzAsIDEwNDMyLCAwLCAxMDQzNCwgMTA0MzYsIDEwNDM4LCAKKyAgICAxMDQ0MCwgMTA0NDIsIDEwNDQ0LCAxMDQ0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTI3NjQsIDEyNzY3LCAxMjc3MCwgMTI3NzMsIDEyNzc2LCAxMjc3OSwgMTI3ODIsIDEyNzg1LCAKLSAgICAxMjc4OCwgMTI3OTEsIDEyNzk0LCAwLCAwLCAwLCAwLCAwLCAxMjc5NywgMTI4MDEsIDEyODA1LCAxMjgwOSwgMTI4MTMsIAotICAgIDEyODE3LCAxMjgyMSwgMTI4MjUsIDEyODI5LCAxMjgzMywgMTI4MzcsIDEyODQxLCAxMjg0NSwgMTI4NDksIDEyODUzLCAKLSAgICAxMjg1NywgMTI4NjEsIDEyODY1LCAxMjg2OSwgMTI4NzMsIDEyODc3LCAxMjg4MSwgMTI4ODUsIDEyODg5LCAxMjg5MywgCi0gICAgMTI4OTcsIDEyOTAxLCAxMjkwNSwgMTI5MDcsIDEyOTA5LCAxMjkxMiwgMCwgMTI5MTUsIDEyOTE3LCAxMjkxOSwgMTI5MjEsIAotICAgIDEyOTIzLCAxMjkyNSwgMTI5MjcsIDEyOTI5LCAxMjkzMSwgMTI5MzMsIDEyOTM1LCAxMjkzNywgMTI5MzksIDEyOTQxLCAKLSAgICAxMjk0MywgMTI5NDUsIDEyOTQ3LCAxMjk0OSwgMTI5NTEsIDEyOTUzLCAxMjk1NSwgMTI5NTcsIDEyOTU5LCAxMjk2MSwgCi0gICAgMTI5NjMsIDEyOTY1LCAxMjk2NywgMTI5NzAsIDEyOTczLCAxMjk3NiwgMTI5NzksIDEyOTgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk4NiwgMTI5ODksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMDQ0OCwgMCwgMTA0NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMjk5NSwgMTI5OTgsIDEzMDAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMzAwMywgMTMwMDUsIDEzMDA3LCAxMzAwOSwgMTMwMTEsIDEzMDEzLCAxMzAxNSwgMTMwMTcsIDEzMDE5LCAxMzAyMSwgCi0gICAgMTMwMjMsIDEzMDI1LCAxMzAyNywgMTMwMjksIDEzMDMxLCAxMzAzMywgMTMwMzUsIDEzMDM3LCAxMzAzOSwgMTMwNDEsIAotICAgIDEzMDQzLCAxMzA0NSwgMTMwNDcsIDEzMDQ5LCAxMzA1MSwgMTMwNTMsIDEzMDU1LCAxMzA1NywgMTMwNTksIDEzMDYxLCAKLSAgICAxMzA2MywgMTMwNjUsIDEzMDY3LCAxMzA2OSwgMTMwNzEsIDEzMDczLCAxMzA3NSwgMTMwNzcsIDEzMDc5LCAxMzA4MSwgCi0gICAgMTMwODMsIDEzMDg1LCAxMzA4NywgMCwgMCwgMCwgMCwgMCwgMTMwODksIDEzMDkzLCAxMzA5NywgMTMxMDEsIDEzMTA1LCAKLSAgICAxMzEwOSwgMTMxMTMsIDEzMTE3LCAxMzEyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxMjUsIDEzMTI3LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ1NywgMTA0NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEwNDYzLCAxMDQ2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTMxMjksIDEzMTMxLCAxMzEzMywgMTMxMzUsIDEzMTM3LCAxMzEzOSwgMTMxNDEsIDEzMTQzLCAxMzE0NSwgCi0gICAgMTMxNDcsIDEzMTQ5LCAxMzE1MSwgMTMxNTMsIDEzMTU1LCAxMzE1NywgMTMxNTksIDEzMTYxLCAxMzE2MywgMTMxNjUsIAotICAgIDEzMTY3LCAxMzE2OSwgMTMxNzEsIDEzMTczLCAxMzE3NSwgMTMxNzcsIDEzMTc5LCAxMzE4MSwgMTMxODMsIDEzMTg1LCAKLSAgICAxMzE4NywgMTMxODksIDEzMTkxLCAxMzE5MywgMTMxOTUsIDEzMTk3LCAxMzE5OSwgMTMyMDEsIDEzMjAzLCAxMzIwNSwgCi0gICAgMTMyMDcsIDEzMjA5LCAxMzIxMSwgMTMyMTMsIDEzMjE1LCAxMzIxNywgMTMyMTksIDEzMjIxLCAxMzIyMywgMTMyMjUsIAotICAgIDEzMjI3LCAxMzIyOSwgMTMyMzEsIDEzMjMzLCAxMzIzNSwgMTMyMzcsIDEzMjM5LCAxMzI0MSwgMTMyNDMsIDEzMjQ1LCAKLSAgICAxMzI0NywgMTMyNDksIDEzMjUxLCAxMzI1MywgMTMyNTUsIDEzMjU3LCAxMzI1OSwgMTMyNjEsIDEzMjYzLCAxMzI2NSwgCi0gICAgMTMyNjcsIDEzMjY5LCAxMzI3MSwgMTMyNzMsIDEzMjc1LCAxMzI3NywgMTMyNzksIDEzMjgxLCAxMzI4MywgMTMyODUsIAotICAgIDEzMjg3LCAxMzI4OSwgMTMyOTEsIDEzMjkzLCAxMzI5NSwgMTMyOTcsIDEzMjk5LCAxMzMwMSwgMTMzMDMsIDEzMzA1LCAKLSAgICAxMzMwNywgMTMzMDksIDEzMzExLCAxMzMxMywgMTMzMTUsIDEzMzE3LCAxMzMxOSwgMTMzMjEsIDEzMzIzLCAxMzMyNSwgCi0gICAgMTMzMjcsIDEzMzI5LCAxMzMzMSwgMTMzMzMsIDEzMzM1LCAxMzMzNywgMTMzMzksIDEzMzQxLCAxMzM0MywgMTMzNDUsIAotICAgIDEzMzQ3LCAxMzM0OSwgMTMzNTEsIDEzMzUzLCAxMzM1NSwgMTMzNTcsIDEzMzU5LCAxMzM2MSwgMTMzNjMsIDEzMzY1LCAKLSAgICAxMzM2NywgMTMzNjksIDEzMzcxLCAxMzM3MywgMTMzNzUsIDEzMzc3LCAxMzM3OSwgMTMzODEsIDEzMzgzLCAxMzM4NSwgCi0gICAgMTMzODcsIDEzMzg5LCAxMzM5MSwgMTMzOTMsIDEzMzk1LCAxMzM5NywgMTMzOTksIDEzNDAxLCAxMzQwMywgMTM0MDUsIAotICAgIDEzNDA3LCAxMzQwOSwgMTM0MTEsIDEzNDEzLCAxMzQxNSwgMTM0MTcsIDEzNDE5LCAxMzQyMSwgMTM0MjMsIDEzNDI1LCAKLSAgICAxMzQyNywgMTM0MjksIDEzNDMxLCAxMzQzMywgMTM0MzUsIDEzNDM3LCAxMzQzOSwgMTM0NDEsIDEzNDQzLCAxMzQ0NSwgCi0gICAgMTM0NDcsIDEzNDQ5LCAxMzQ1MSwgMTM0NTMsIDEzNDU1LCAxMzQ1NywgMTM0NTksIDEzNDYxLCAxMzQ2MywgMTM0NjUsIAotICAgIDEzNDY3LCAxMzQ2OSwgMTM0NzEsIDEzNDczLCAxMzQ3NSwgMTM0NzcsIDEzNDc5LCAxMzQ4MSwgMTM0ODMsIDEzNDg1LCAKLSAgICAxMzQ4NywgMTM0ODksIDEzNDkxLCAxMzQ5MywgMTM0OTUsIDEzNDk3LCAxMzQ5OSwgMTM1MDEsIDEzNTAzLCAxMzUwNSwgCi0gICAgMTM1MDcsIDEzNTA5LCAxMzUxMSwgMTM1MTMsIDEzNTE1LCAxMzUxNywgMTM1MTksIDEzNTIxLCAxMzUyMywgMTM1MjUsIAotICAgIDEzNTI3LCAxMzUyOSwgMTM1MzEsIDEzNTMzLCAxMzUzNSwgMTM1MzcsIDEzNTM5LCAxMzU0MSwgMTM1NDMsIDEzNTQ1LCAKLSAgICAxMzU0NywgMTM1NDksIDEzNTUxLCAxMzU1MywgMTM1NTUsIDEzNTU3LCAxMzU1OSwgMTM1NjEsIDEzNTYzLCAxMzU2NSwgCi0gICAgMTM1NjcsIDEzNTY5LCAxMzU3MSwgMTM1NzMsIDEzNTc1LCAxMzU3NywgMTM1NzksIDEzNTgxLCAxMzU4MywgMTM1ODUsIAotICAgIDEzNTg3LCAxMzU4OSwgMTM1OTEsIDEzNTkzLCAxMzU5NSwgMTM1OTcsIDEzNTk5LCAxMzYwMSwgMTM2MDMsIDEzNjA1LCAKLSAgICAxMzYwNywgMTM2MDksIDEzNjExLCAxMzYxMywgMTM2MTUsIDEzNjE3LCAxMzYxOSwgMTM2MjEsIDEzNjIzLCAxMzYyNSwgCi0gICAgMTM2MjcsIDEzNjI5LCAxMzYzMSwgMTM2MzMsIDEzNjM1LCAxMzYzNywgMTM2MzksIDEzNjQxLCAxMzY0MywgMTM2NDUsIAotICAgIDEzNjQ3LCAxMzY0OSwgMTM2NTEsIDEzNjUzLCAxMzY1NSwgMTM2NTcsIDEzNjU5LCAxMzY2MSwgMTM2NjMsIDEzNjY1LCAKLSAgICAxMzY2NywgMTM2NjksIDEzNjcxLCAxMzY3MywgMTM2NzUsIDEzNjc3LCAxMzY3OSwgMTM2ODEsIDEzNjgzLCAxMzY4NSwgCi0gICAgMTM2ODcsIDEzNjg5LCAxMzY5MSwgMTM2OTMsIDEzNjk1LCAxMzY5NywgMTM2OTksIDEzNzAxLCAxMzcwMywgMTM3MDUsIAotICAgIDEzNzA3LCAxMzcwOSwgMTM3MTEsIDEzNzEzLCAxMzcxNSwgMTM3MTcsIDEzNzE5LCAxMzcyMSwgMTM3MjMsIDEzNzI1LCAKLSAgICAxMzcyNywgMTM3MjksIDEzNzMxLCAxMzczMywgMTM3MzUsIDEzNzM3LCAxMzczOSwgMTM3NDEsIDEzNzQzLCAxMzc0NSwgCi0gICAgMTM3NDcsIDEzNzQ5LCAxMzc1MSwgMTM3NTMsIDEzNzU1LCAxMzc1NywgMTM3NTksIDEzNzYxLCAxMzc2MywgMTM3NjUsIAotICAgIDEzNzY3LCAxMzc2OSwgMTM3NzEsIDEzNzczLCAxMzc3NSwgMTM3NzcsIDEzNzc5LCAxMzc4MSwgMTM3ODMsIDEzNzg1LCAKLSAgICAxMzc4NywgMTM3ODksIDEzNzkxLCAxMzc5MywgMTM3OTUsIDEzNzk3LCAxMzc5OSwgMTM4MDEsIDEzODAzLCAxMzgwNSwgCi0gICAgMTM4MDcsIDEzODA5LCAxMzgxMSwgMTM4MTMsIDEzODE1LCAxMzgxNywgMTM4MTksIDEzODIxLCAxMzgyMywgMTM4MjUsIAotICAgIDEzODI3LCAxMzgyOSwgMTM4MzEsIDEzODMzLCAxMzgzNSwgMTM4MzcsIDEzODM5LCAxMzg0MSwgMTM4NDMsIDEzODQ1LCAKLSAgICAxMzg0NywgMTM4NDksIDEzODUxLCAxMzg1MywgMTM4NTUsIDEzODU3LCAxMzg1OSwgMTM4NjEsIDEzODYzLCAxMzg2NSwgCi0gICAgMTM4NjcsIDEzODY5LCAxMzg3MSwgMTM4NzMsIDEzODc1LCAxMzg3NywgMTM4NzksIDEzODgxLCAxMzg4MywgMTM4ODUsIAotICAgIDEzODg3LCAxMzg4OSwgMTM4OTEsIDEzODkzLCAxMzg5NSwgMTM4OTcsIDEzODk5LCAxMzkwMSwgMTM5MDMsIDEzOTA1LCAKLSAgICAxMzkwNywgMTM5MDksIDEzOTExLCAxMzkxMywgMTM5MTUsIDEzOTE3LCAxMzkxOSwgMTM5MjEsIDEzOTIzLCAxMzkyNSwgCi0gICAgMTM5MjcsIDEzOTI5LCAxMzkzMSwgMTM5MzMsIDEzOTM1LCAxMzkzNywgMTM5MzksIDEzOTQxLCAxMzk0MywgMTM5NDUsIAotICAgIDEzOTQ3LCAxMzk0OSwgMTM5NTEsIDEzOTUzLCAxMzk1NSwgMTM5NTcsIDEzOTU5LCAxMzk2MSwgMTM5NjMsIDEzOTY1LCAKLSAgICAxMzk2NywgMTM5NjksIDEzOTcxLCAxMzk3MywgMTM5NzUsIDEzOTc3LCAxMzk3OSwgMTM5ODEsIDEzOTgzLCAxMzk4NSwgCi0gICAgMTM5ODcsIDEzOTg5LCAxMzk5MSwgMTM5OTMsIDEzOTk1LCAxMzk5NywgMTM5OTksIDE0MDAxLCAxNDAwMywgMTQwMDUsIAotICAgIDE0MDA3LCAxNDAwOSwgMTQwMTEsIDE0MDEzLCAxNDAxNSwgMTQwMTcsIDE0MDE5LCAxNDAyMSwgMTQwMjMsIDE0MDI1LCAKLSAgICAxNDAyNywgMTQwMjksIDE0MDMxLCAxNDAzMywgMTQwMzUsIDE0MDM3LCAxNDAzOSwgMTQwNDEsIDE0MDQzLCAxNDA0NSwgCi0gICAgMTQwNDcsIDE0MDQ5LCAxNDA1MSwgMTQwNTMsIDE0MDU1LCAxNDA1NywgMTQwNTksIDE0MDYxLCAxNDA2MywgMTQwNjUsIAotICAgIDE0MDY3LCAxNDA2OSwgMTQwNzEsIDE0MDczLCAxNDA3NSwgMTQwNzcsIDE0MDc5LCAxNDA4MSwgMTQwODMsIDE0MDg1LCAKLSAgICAxNDA4NywgMTQwODksIDE0MDkxLCAxNDA5MywgMTQwOTUsIDE0MDk3LCAxNDA5OSwgMTQxMDEsIDE0MTAzLCAxNDEwNSwgCi0gICAgMTQxMDcsIDE0MTA5LCAxNDExMSwgMTQxMTMsIDE0MTE1LCAxNDExNywgMTQxMTksIDE0MTIxLCAxNDEyMywgMTQxMjUsIAotICAgIDE0MTI3LCAxNDEyOSwgMTQxMzEsIDE0MTMzLCAxNDEzNSwgMTQxMzcsIDE0MTM5LCAxNDE0MSwgMTQxNDMsIDE0MTQ1LCAKLSAgICAxNDE0NywgMTQxNDksIDE0MTUxLCAxNDE1MywgMTQxNTUsIDE0MTU3LCAxNDE1OSwgMTQxNjEsIDE0MTYzLCAxNDE2NSwgCi0gICAgMTQxNjcsIDE0MTY5LCAxNDE3MSwgMTQxNzMsIDE0MTc1LCAxNDE3NywgMTQxNzksIDE0MTgxLCAxNDE4MywgMTQxODUsIAotICAgIDE0MTg3LCAxNDE4OSwgMTQxOTEsIDE0MTkzLCAxNDE5NSwgMTQxOTcsIDE0MTk5LCAxNDIwMSwgMTQyMDMsIDE0MjA1LCAKLSAgICAxNDIwNywgMTQyMDksIDE0MjExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ2OSwgCisgICAgMTA0NzIsIDAsIDEwNDc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ3OCwgMTA0ODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDg0LCAxMDQ4NywgMTA0OTAsIDEwNDkzLCAxMDQ5NiwgMTA0OTksIDEwNTAyLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDUwNSwgMTA1MDgsIDEwNTExLCAxMDUxNCwgMTA1MTcsIAorICAgIDEwNTIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDUyMywgMTA1MjUsIDEwNTI3LCAKKyAgICAxMDUyOSwgMTA1MzEsIDEwNTMzLCAxMDUzNSwgMTA1MzcsIDEwNTM5LCAxMDU0MSwgMTA1NDMsIDEwNTQ1LCAxMDU0NywgCisgICAgMTA1NDksIDEwNTUxLCAxMDU1MywgMTA1NTUsIDEwNTU3LCAxMDU1OSwgMTA1NjEsIDEwNTYzLCAxMDU2NSwgMTA1NjcsIAorICAgIDEwNTY5LCAxMDU3MSwgMTA1NzMsIDEwNTc1LCAxMDU3NywgMTA1NzksIDEwNTgxLCAxMDU4MywgMTA1ODUsIDEwNTg3LCAKKyAgICAxMDU4OSwgMTA1OTEsIDEwNTkzLCAxMDU5NSwgMTA1OTcsIDEwNTk5LCAxMDYwMSwgMTA2MDMsIDEwNjA1LCAxMDYwNywgCisgICAgMTA2MDksIDEwNjExLCAxMDYxMywgMTA2MTUsIDEwNjE3LCAxMDYxOSwgMTA2MjEsIDEwNjIzLCAxMDYyNSwgMTA2MjcsIAorICAgIDEwNjI5LCAxMDYzMSwgMTA2MzMsIDEwNjM1LCAxMDYzNywgMTA2MzksIDEwNjQxLCAxMDY0MywgMTA2NDUsIDEwNjQ3LCAKKyAgICAxMDY0OSwgMTA2NTEsIDEwNjUzLCAxMDY1NSwgMTA2NTcsIDEwNjU5LCAxMDY2MSwgMTA2NjMsIDEwNjY1LCAxMDY2NywgCisgICAgMTA2NjksIDEwNjcxLCAxMDY3MywgMTA2NzUsIDEwNjc3LCAxMDY3OSwgMTA2ODEsIDEwNjgzLCAxMDY4NSwgMTA2ODcsIAorICAgIDEwNjg5LCAxMDY5MSwgMCwgMTA2OTMsIDEwNjk1LCAxMDY5NywgMTA2OTksIDEwNzAxLCAxMDcwMywgMTA3MDUsIDEwNzA3LCAKKyAgICAxMDcwOSwgMTA3MTEsIDEwNzEzLCAxMDcxNSwgMTA3MTcsIDEwNzE5LCAxMDcyMSwgMTA3MjMsIDEwNzI1LCAxMDcyNywgCisgICAgMTA3MjksIDEwNzMxLCAxMDczMywgMTA3MzUsIDEwNzM3LCAxMDczOSwgMTA3NDEsIDEwNzQzLCAxMDc0NSwgMTA3NDcsIAorICAgIDEwNzQ5LCAxMDc1MSwgMTA3NTMsIDEwNzU1LCAxMDc1NywgMTA3NTksIDEwNzYxLCAxMDc2MywgMTA3NjUsIDEwNzY3LCAKKyAgICAxMDc2OSwgMTA3NzEsIDEwNzczLCAxMDc3NSwgMTA3NzcsIDEwNzc5LCAxMDc4MSwgMTA3ODMsIDEwNzg1LCAxMDc4NywgCisgICAgMTA3ODksIDEwNzkxLCAxMDc5MywgMTA3OTUsIDEwNzk3LCAxMDc5OSwgMTA4MDEsIDEwODAzLCAxMDgwNSwgMTA4MDcsIAorICAgIDEwODA5LCAxMDgxMSwgMTA4MTMsIDEwODE1LCAxMDgxNywgMTA4MTksIDEwODIxLCAxMDgyMywgMTA4MjUsIDEwODI3LCAKKyAgICAxMDgyOSwgMTA4MzEsIDEwODMzLCAwLCAxMDgzNSwgMTA4MzcsIDAsIDAsIDEwODM5LCAwLCAwLCAxMDg0MSwgMTA4NDMsIDAsIAorICAgIDAsIDEwODQ1LCAxMDg0NywgMTA4NDksIDEwODUxLCAwLCAxMDg1MywgMTA4NTUsIDEwODU3LCAxMDg1OSwgMTA4NjEsIAorICAgIDEwODYzLCAxMDg2NSwgMTA4NjcsIDEwODY5LCAxMDg3MSwgMTA4NzMsIDEwODc1LCAwLCAxMDg3NywgMCwgMTA4NzksIAorICAgIDEwODgxLCAxMDg4MywgMTA4ODUsIDEwODg3LCAxMDg4OSwgMTA4OTEsIDAsIDEwODkzLCAxMDg5NSwgMTA4OTcsIDEwODk5LCAKKyAgICAxMDkwMSwgMTA5MDMsIDEwOTA1LCAxMDkwNywgMTA5MDksIDEwOTExLCAxMDkxMywgMTA5MTUsIDEwOTE3LCAxMDkxOSwgCisgICAgMTA5MjEsIDEwOTIzLCAxMDkyNSwgMTA5MjcsIDEwOTI5LCAxMDkzMSwgMTA5MzMsIDEwOTM1LCAxMDkzNywgMTA5MzksIAorICAgIDEwOTQxLCAxMDk0MywgMTA5NDUsIDEwOTQ3LCAxMDk0OSwgMTA5NTEsIDEwOTUzLCAxMDk1NSwgMTA5NTcsIDEwOTU5LCAKKyAgICAxMDk2MSwgMTA5NjMsIDEwOTY1LCAxMDk2NywgMTA5NjksIDEwOTcxLCAxMDk3MywgMTA5NzUsIDEwOTc3LCAxMDk3OSwgCisgICAgMTA5ODEsIDEwOTgzLCAxMDk4NSwgMTA5ODcsIDEwOTg5LCAxMDk5MSwgMTA5OTMsIDEwOTk1LCAxMDk5NywgMTA5OTksIAorICAgIDExMDAxLCAxMTAwMywgMTEwMDUsIDExMDA3LCAxMTAwOSwgMTEwMTEsIDExMDEzLCAxMTAxNSwgMTEwMTcsIDExMDE5LCAKKyAgICAxMTAyMSwgMCwgMTEwMjMsIDExMDI1LCAxMTAyNywgMTEwMjksIDAsIDAsIDExMDMxLCAxMTAzMywgMTEwMzUsIDExMDM3LCAKKyAgICAxMTAzOSwgMTEwNDEsIDExMDQzLCAxMTA0NSwgMCwgMTEwNDcsIDExMDQ5LCAxMTA1MSwgMTEwNTMsIDExMDU1LCAxMTA1NywgCisgICAgMTEwNTksIDAsIDExMDYxLCAxMTA2MywgMTEwNjUsIDExMDY3LCAxMTA2OSwgMTEwNzEsIDExMDczLCAxMTA3NSwgMTEwNzcsIAorICAgIDExMDc5LCAxMTA4MSwgMTEwODMsIDExMDg1LCAxMTA4NywgMTEwODksIDExMDkxLCAxMTA5MywgMTEwOTUsIDExMDk3LCAKKyAgICAxMTA5OSwgMTExMDEsIDExMTAzLCAxMTEwNSwgMTExMDcsIDExMTA5LCAxMTExMSwgMTExMTMsIDExMTE1LCAwLCAxMTExNywgCisgICAgMTExMTksIDExMTIxLCAxMTEyMywgMCwgMTExMjUsIDExMTI3LCAxMTEyOSwgMTExMzEsIDExMTMzLCAwLCAxMTEzNSwgMCwgCisgICAgMCwgMCwgMTExMzcsIDExMTM5LCAxMTE0MSwgMTExNDMsIDExMTQ1LCAxMTE0NywgMTExNDksIDAsIDExMTUxLCAxMTE1MywgCisgICAgMTExNTUsIDExMTU3LCAxMTE1OSwgMTExNjEsIDExMTYzLCAxMTE2NSwgMTExNjcsIDExMTY5LCAxMTE3MSwgMTExNzMsIAorICAgIDExMTc1LCAxMTE3NywgMTExNzksIDExMTgxLCAxMTE4MywgMTExODUsIDExMTg3LCAxMTE4OSwgMTExOTEsIDExMTkzLCAKKyAgICAxMTE5NSwgMTExOTcsIDExMTk5LCAxMTIwMSwgMTEyMDMsIDExMjA1LCAxMTIwNywgMTEyMDksIDExMjExLCAxMTIxMywgCisgICAgMTEyMTUsIDExMjE3LCAxMTIxOSwgMTEyMjEsIDExMjIzLCAxMTIyNSwgMTEyMjcsIDExMjI5LCAxMTIzMSwgMTEyMzMsIAorICAgIDExMjM1LCAxMTIzNywgMTEyMzksIDExMjQxLCAxMTI0MywgMTEyNDUsIDExMjQ3LCAxMTI0OSwgMTEyNTEsIDExMjUzLCAKKyAgICAxMTI1NSwgMTEyNTcsIDExMjU5LCAxMTI2MSwgMTEyNjMsIDExMjY1LCAxMTI2NywgMTEyNjksIDExMjcxLCAxMTI3MywgCisgICAgMTEyNzUsIDExMjc3LCAxMTI3OSwgMTEyODEsIDExMjgzLCAxMTI4NSwgMTEyODcsIDExMjg5LCAxMTI5MSwgMTEyOTMsIAorICAgIDExMjk1LCAxMTI5NywgMTEyOTksIDExMzAxLCAxMTMwMywgMTEzMDUsIDExMzA3LCAxMTMwOSwgMTEzMTEsIDExMzEzLCAKKyAgICAxMTMxNSwgMTEzMTcsIDExMzE5LCAxMTMyMSwgMTEzMjMsIDExMzI1LCAxMTMyNywgMTEzMjksIDExMzMxLCAxMTMzMywgCisgICAgMTEzMzUsIDExMzM3LCAxMTMzOSwgMTEzNDEsIDExMzQzLCAxMTM0NSwgMTEzNDcsIDExMzQ5LCAxMTM1MSwgMTEzNTMsIAorICAgIDExMzU1LCAxMTM1NywgMTEzNTksIDExMzYxLCAxMTM2MywgMTEzNjUsIDExMzY3LCAxMTM2OSwgMTEzNzEsIDExMzczLCAKKyAgICAxMTM3NSwgMTEzNzcsIDExMzc5LCAxMTM4MSwgMTEzODMsIDExMzg1LCAxMTM4NywgMTEzODksIDExMzkxLCAxMTM5MywgCisgICAgMTEzOTUsIDExMzk3LCAxMTM5OSwgMTE0MDEsIDExNDAzLCAxMTQwNSwgMTE0MDcsIDExNDA5LCAxMTQxMSwgMTE0MTMsIAorICAgIDExNDE1LCAxMTQxNywgMTE0MTksIDExNDIxLCAxMTQyMywgMTE0MjUsIDExNDI3LCAxMTQyOSwgMTE0MzEsIDExNDMzLCAKKyAgICAxMTQzNSwgMTE0MzcsIDExNDM5LCAxMTQ0MSwgMTE0NDMsIDExNDQ1LCAxMTQ0NywgMTE0NDksIDExNDUxLCAxMTQ1MywgCisgICAgMTE0NTUsIDExNDU3LCAxMTQ1OSwgMTE0NjEsIDExNDYzLCAxMTQ2NSwgMTE0NjcsIDExNDY5LCAxMTQ3MSwgMTE0NzMsIAorICAgIDExNDc1LCAxMTQ3NywgMTE0NzksIDExNDgxLCAxMTQ4MywgMTE0ODUsIDExNDg3LCAxMTQ4OSwgMTE0OTEsIDExNDkzLCAKKyAgICAxMTQ5NSwgMTE0OTcsIDExNDk5LCAxMTUwMSwgMTE1MDMsIDExNTA1LCAxMTUwNywgMTE1MDksIDExNTExLCAxMTUxMywgCisgICAgMTE1MTUsIDExNTE3LCAxMTUxOSwgMTE1MjEsIDExNTIzLCAxMTUyNSwgMTE1MjcsIDExNTI5LCAxMTUzMSwgMTE1MzMsIAorICAgIDExNTM1LCAxMTUzNywgMTE1MzksIDExNTQxLCAxMTU0MywgMTE1NDUsIDExNTQ3LCAxMTU0OSwgMTE1NTEsIDExNTUzLCAKKyAgICAxMTU1NSwgMTE1NTcsIDExNTU5LCAxMTU2MSwgMTE1NjMsIDExNTY1LCAxMTU2NywgMTE1NjksIDExNTcxLCAxMTU3MywgCisgICAgMTE1NzUsIDExNTc3LCAxMTU3OSwgMTE1ODEsIDExNTgzLCAxMTU4NSwgMTE1ODcsIDExNTg5LCAxMTU5MSwgMTE1OTMsIAorICAgIDExNTk1LCAxMTU5NywgMTE1OTksIDExNjAxLCAxMTYwMywgMTE2MDUsIDExNjA3LCAxMTYwOSwgMTE2MTEsIDExNjEzLCAKKyAgICAxMTYxNSwgMTE2MTcsIDExNjE5LCAxMTYyMSwgMTE2MjMsIDExNjI1LCAxMTYyNywgMTE2MjksIDExNjMxLCAxMTYzMywgCisgICAgMTE2MzUsIDExNjM3LCAxMTYzOSwgMTE2NDEsIDExNjQzLCAxMTY0NSwgMTE2NDcsIDExNjQ5LCAxMTY1MSwgMTE2NTMsIAorICAgIDExNjU1LCAxMTY1NywgMTE2NTksIDExNjYxLCAxMTY2MywgMTE2NjUsIDExNjY3LCAxMTY2OSwgMTE2NzEsIDExNjczLCAKKyAgICAxMTY3NSwgMTE2NzcsIDExNjc5LCAxMTY4MSwgMTE2ODMsIDExNjg1LCAxMTY4NywgMTE2ODksIDExNjkxLCAxMTY5MywgCisgICAgMTE2OTUsIDExNjk3LCAxMTY5OSwgMTE3MDEsIDExNzAzLCAxMTcwNSwgMTE3MDcsIDExNzA5LCAxMTcxMSwgMTE3MTMsIAorICAgIDExNzE1LCAxMTcxNywgMTE3MTksIDExNzIxLCAxMTcyMywgMTE3MjUsIDExNzI3LCAxMTcyOSwgMTE3MzEsIDExNzMzLCAKKyAgICAxMTczNSwgMTE3MzcsIDExNzM5LCAxMTc0MSwgMTE3NDMsIDExNzQ1LCAxMTc0NywgMTE3NDksIDExNzUxLCAxMTc1MywgCisgICAgMTE3NTUsIDExNzU3LCAxMTc1OSwgMTE3NjEsIDExNzYzLCAxMTc2NSwgMTE3NjcsIDExNzY5LCAxMTc3MSwgMTE3NzMsIAorICAgIDExNzc1LCAxMTc3NywgMTE3NzksIDExNzgxLCAxMTc4MywgMTE3ODUsIDExNzg3LCAxMTc4OSwgMTE3OTEsIDExNzkzLCAKKyAgICAxMTc5NSwgMTE3OTcsIDExNzk5LCAxMTgwMSwgMTE4MDMsIDExODA1LCAxMTgwNywgMTE4MDksIDExODExLCAxMTgxMywgCisgICAgMTE4MTUsIDExODE3LCAxMTgxOSwgMTE4MjEsIDExODIzLCAxMTgyNSwgMTE4MjcsIDExODI5LCAwLCAwLCAxMTgzMSwgCisgICAgMTE4MzMsIDExODM1LCAxMTgzNywgMTE4MzksIDExODQxLCAxMTg0MywgMTE4NDUsIDExODQ3LCAxMTg0OSwgMTE4NTEsIAorICAgIDExODUzLCAxMTg1NSwgMTE4NTcsIDExODU5LCAxMTg2MSwgMTE4NjMsIDExODY1LCAxMTg2NywgMTE4NjksIDExODcxLCAKKyAgICAxMTg3MywgMTE4NzUsIDExODc3LCAxMTg3OSwgMTE4ODEsIDExODgzLCAxMTg4NSwgMTE4ODcsIDExODg5LCAxMTg5MSwgCisgICAgMTE4OTMsIDExODk1LCAxMTg5NywgMTE4OTksIDExOTAxLCAxMTkwMywgMTE5MDUsIDExOTA3LCAxMTkwOSwgMTE5MTEsIAorICAgIDExOTEzLCAxMTkxNSwgMTE5MTcsIDExOTE5LCAxMTkyMSwgMTE5MjMsIDExOTI1LCAxMTkyNywgMTE5MjksIDExOTMxLCAKKyAgICAxMTkzMywgMTE5MzUsIDExOTM3LCAxMTkzOSwgMTE5NDEsIDExOTQzLCAxMTk0NSwgMTE5NDcsIDExOTQ5LCAxMTk1MSwgCisgICAgMTE5NTMsIDExOTU1LCAxMTk1NywgMTE5NTksIDExOTYxLCAxMTk2MywgMTE5NjUsIDExOTY3LCAxMTk2OSwgMTE5NzEsIAorICAgIDExOTczLCAxMTk3NSwgMTE5NzcsIDExOTc5LCAxMTk4MSwgMTE5ODMsIDExOTg1LCAxMTk4NywgMTE5ODksIDExOTkxLCAKKyAgICAxMTk5MywgMTE5OTUsIDExOTk3LCAxMTk5OSwgMTIwMDEsIDEyMDAzLCAxMjAwNSwgMTIwMDcsIDEyMDA5LCAxMjAxMSwgCisgICAgMTIwMTMsIDEyMDE1LCAxMjAxNywgMTIwMTksIDEyMDIxLCAxMjAyMywgMTIwMjUsIDEyMDI3LCAxMjAyOSwgMTIwMzEsIAorICAgIDEyMDMzLCAxMjAzNSwgMTIwMzcsIDEyMDM5LCAxMjA0MSwgMTIwNDMsIDEyMDQ1LCAxMjA0NywgMTIwNDksIDEyMDUxLCAKKyAgICAxMjA1MywgMTIwNTUsIDEyMDU3LCAxMjA1OSwgMTIwNjEsIDEyMDYzLCAxMjA2NSwgMTIwNjcsIDEyMDY5LCAxMjA3MSwgCisgICAgMTIwNzMsIDEyMDc1LCAxMjA3NywgMTIwNzksIDEyMDgxLCAxMjA4MywgMTIwODUsIDEyMDg3LCAxMjA4OSwgMTIwOTEsIAorICAgIDEyMDkzLCAxMjA5NSwgMTIwOTcsIDEyMDk5LCAxMjEwMSwgMTIxMDMsIDEyMTA1LCAxMjEwNywgMTIxMDksIDEyMTExLCAKKyAgICAxMjExMywgMTIxMTUsIDEyMTE3LCAxMjExOSwgMTIxMjEsIDEyMTIzLCAxMjEyNSwgMTIxMjcsIDEyMTI5LCAxMjEzMSwgCisgICAgMTIxMzMsIDEyMTM1LCAxMjEzNywgMTIxMzksIDEyMTQxLCAxMjE0MywgMTIxNDUsIDEyMTQ3LCAxMjE0OSwgMTIxNTEsIAorICAgIDEyMTUzLCAxMjE1NSwgMTIxNTcsIDEyMTU5LCAxMjE2MSwgMTIxNjMsIDEyMTY1LCAxMjE2NywgMTIxNjksIDEyMTcxLCAKKyAgICAxMjE3MywgMTIxNzUsIDEyMTc3LCAxMjE3OSwgMTIxODEsIDEyMTgzLCAxMjE4NSwgMTIxODcsIDEyMTg5LCAxMjE5MSwgCisgICAgMTIxOTMsIDEyMTk1LCAxMjE5NywgMTIxOTksIDEyMjAxLCAxMjIwMywgMTIyMDUsIDEyMjA3LCAxMjIwOSwgMTIyMTEsIAorICAgIDEyMjEzLCAxMjIxNSwgMTIyMTcsIDEyMjE5LCAxMjIyMSwgMTIyMjMsIDEyMjI1LCAxMjIyNywgMTIyMjksIDEyMjMxLCAKKyAgICAxMjIzMywgMTIyMzUsIDEyMjM3LCAxMjIzOSwgMTIyNDEsIDEyMjQzLCAxMjI0NSwgMTIyNDcsIDEyMjQ5LCAxMjI1MSwgCisgICAgMTIyNTMsIDEyMjU1LCAxMjI1NywgMTIyNTksIDEyMjYxLCAxMjI2MywgMTIyNjUsIDEyMjY3LCAxMjI2OSwgMTIyNzEsIAorICAgIDEyMjczLCAxMjI3NSwgMTIyNzcsIDEyMjc5LCAxMjI4MSwgMTIyODMsIDEyMjg1LCAxMjI4NywgMTIyODksIDEyMjkxLCAKKyAgICAxMjI5MywgMTIyOTUsIDEyMjk3LCAxMjI5OSwgMTIzMDEsIDEyMzAzLCAxMjMwNSwgMTIzMDcsIDEyMzA5LCAxMjMxMSwgCisgICAgMTIzMTMsIDEyMzE1LCAxMjMxNywgMTIzMTksIDEyMzIxLCAxMjMyMywgMTIzMjUsIDEyMzI3LCAxMjMyOSwgMTIzMzEsIAorICAgIDEyMzMzLCAxMjMzNSwgMTIzMzcsIDEyMzM5LCAxMjM0MSwgMTIzNDMsIDEyMzQ1LCAxMjM0NywgMTIzNDksIDEyMzUxLCAKKyAgICAxMjM1MywgMTIzNTUsIDEyMzU3LCAxMjM1OSwgMTIzNjEsIDEyMzYzLCAxMjM2NSwgMTIzNjcsIDEyMzY5LCAxMjM3MSwgCisgICAgMTIzNzMsIDEyMzc1LCAxMjM3NywgMTIzNzksIDEyMzgxLCAxMjM4MywgMTIzODUsIDEyMzg3LCAxMjM4OSwgMTIzOTEsIAorICAgIDEyMzkzLCAxMjM5NSwgMTIzOTcsIDEyMzk5LCAxMjQwMSwgMTI0MDMsIDEyNDA1LCAxMjQwNywgMTI0MDksIDEyNDExLCAKKyAgICAxMjQxMywgMCwgMCwgMTI0MTUsIDEyNDE3LCAxMjQxOSwgMTI0MjEsIDEyNDIzLCAxMjQyNSwgMTI0MjcsIDEyNDI5LCAKKyAgICAxMjQzMSwgMTI0MzMsIDEyNDM1LCAxMjQzNywgMTI0MzksIDEyNDQxLCAxMjQ0MywgMTI0NDUsIDEyNDQ3LCAxMjQ0OSwgCisgICAgMTI0NTEsIDEyNDUzLCAxMjQ1NSwgMTI0NTcsIDEyNDU5LCAxMjQ2MSwgMTI0NjMsIDEyNDY1LCAxMjQ2NywgMTI0NjksIAorICAgIDEyNDcxLCAxMjQ3MywgMTI0NzUsIDEyNDc3LCAxMjQ3OSwgMTI0ODEsIDEyNDgzLCAxMjQ4NSwgMTI0ODcsIDEyNDg5LCAKKyAgICAxMjQ5MSwgMTI0OTMsIDEyNDk1LCAxMjQ5NywgMTI0OTksIDEyNTAxLCAxMjUwMywgMTI1MDUsIDEyNTA3LCAxMjUwOSwgCisgICAgMTI1MTEsIDEyNTEzLCAxMjUxNSwgMTI1MTcsIDEyNTE5LCAxMjUyMSwgMCwgMTI1MjMsIDEyNTI1LCAxMjUyNywgMTI1MjksIAorICAgIDEyNTMxLCAxMjUzMywgMTI1MzUsIDEyNTM3LCAxMjUzOSwgMTI1NDEsIDEyNTQzLCAxMjU0NSwgMTI1NDcsIDEyNTQ5LCAKKyAgICAxMjU1MSwgMTI1NTMsIDEyNTU1LCAxMjU1NywgMTI1NTksIDEyNTYxLCAxMjU2MywgMTI1NjUsIDEyNTY3LCAxMjU2OSwgCisgICAgMTI1NzEsIDEyNTczLCAxMjU3NSwgMCwgMTI1NzcsIDEyNTc5LCAwLCAxMjU4MSwgMCwgMCwgMTI1ODMsIDAsIDEyNTg1LCAKKyAgICAxMjU4NywgMTI1ODksIDEyNTkxLCAxMjU5MywgMTI1OTUsIDEyNTk3LCAxMjU5OSwgMTI2MDEsIDEyNjAzLCAwLCAxMjYwNSwgCisgICAgMTI2MDcsIDEyNjA5LCAxMjYxMSwgMCwgMTI2MTMsIDAsIDEyNjE1LCAwLCAwLCAwLCAwLCAwLCAwLCAxMjYxNywgMCwgMCwgCisgICAgMCwgMCwgMTI2MTksIDAsIDEyNjIxLCAwLCAxMjYyMywgMCwgMTI2MjUsIDEyNjI3LCAxMjYyOSwgMCwgMTI2MzEsIDEyNjMzLCAKKyAgICAwLCAxMjYzNSwgMCwgMCwgMTI2MzcsIDAsIDEyNjM5LCAwLCAxMjY0MSwgMCwgMTI2NDMsIDAsIDEyNjQ1LCAwLCAxMjY0NywgCisgICAgMTI2NDksIDAsIDEyNjUxLCAwLCAwLCAxMjY1MywgMTI2NTUsIDEyNjU3LCAxMjY1OSwgMCwgMTI2NjEsIDEyNjYzLCAKKyAgICAxMjY2NSwgMTI2NjcsIDEyNjY5LCAxMjY3MSwgMTI2NzMsIDAsIDEyNjc1LCAxMjY3NywgMTI2NzksIDEyNjgxLCAwLCAKKyAgICAxMjY4MywgMTI2ODUsIDEyNjg3LCAxMjY4OSwgMCwgMTI2OTEsIDAsIDEyNjkzLCAxMjY5NSwgMTI2OTcsIDEyNjk5LCAKKyAgICAxMjcwMSwgMTI3MDMsIDEyNzA1LCAxMjcwNywgMTI3MDksIDEyNzExLCAwLCAxMjcxMywgMTI3MTUsIDEyNzE3LCAxMjcxOSwgCisgICAgMTI3MjEsIDEyNzIzLCAxMjcyNSwgMTI3MjcsIDEyNzI5LCAxMjczMSwgMTI3MzMsIDEyNzM1LCAxMjczNywgMTI3MzksIAorICAgIDEyNzQxLCAxMjc0MywgMTI3NDUsIDAsIDAsIDAsIDAsIDAsIDEyNzQ3LCAxMjc0OSwgMTI3NTEsIDAsIDEyNzUzLCAxMjc1NSwgCisgICAgMTI3NTcsIDEyNzU5LCAxMjc2MSwgMCwgMTI3NjMsIDEyNzY1LCAxMjc2NywgMTI3NjksIDEyNzcxLCAxMjc3MywgMTI3NzUsIAorICAgIDEyNzc3LCAxMjc3OSwgMTI3ODEsIDEyNzgzLCAxMjc4NSwgMTI3ODcsIDEyNzg5LCAxMjc5MSwgMTI3OTMsIDEyNzk1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjc5NywgMTI4MDAsIAorICAgIDEyODAzLCAxMjgwNiwgMTI4MDksIDEyODEyLCAxMjgxNSwgMTI4MTgsIDEyODIxLCAxMjgyNCwgMTI4MjcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEyODMwLCAxMjgzNCwgMTI4MzgsIDEyODQyLCAxMjg0NiwgMTI4NTAsIDEyODU0LCAxMjg1OCwgMTI4NjIsIAorICAgIDEyODY2LCAxMjg3MCwgMTI4NzQsIDEyODc4LCAxMjg4MiwgMTI4ODYsIDEyODkwLCAxMjg5NCwgMTI4OTgsIDEyOTAyLCAKKyAgICAxMjkwNiwgMTI5MTAsIDEyOTE0LCAxMjkxOCwgMTI5MjIsIDEyOTI2LCAxMjkzMCwgMTI5MzQsIDEyOTM4LCAxMjk0MCwgCisgICAgMTI5NDIsIDEyOTQ1LCAwLCAxMjk0OCwgMTI5NTAsIDEyOTUyLCAxMjk1NCwgMTI5NTYsIDEyOTU4LCAxMjk2MCwgMTI5NjIsIAorICAgIDEyOTY0LCAxMjk2NiwgMTI5NjgsIDEyOTcwLCAxMjk3MiwgMTI5NzQsIDEyOTc2LCAxMjk3OCwgMTI5ODAsIDEyOTgyLCAKKyAgICAxMjk4NCwgMTI5ODYsIDEyOTg4LCAxMjk5MCwgMTI5OTIsIDEyOTk0LCAxMjk5NiwgMTI5OTgsIDEzMDAwLCAxMzAwMywgCisgICAgMTMwMDYsIDEzMDA5LCAxMzAxMiwgMTMwMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDE5LCAxMzAyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTMwMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDI4LCAxMzAzMSwgCisgICAgMTMwMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDM2LCAxMzAzOCwgMTMwNDAsIDEzMDQyLCAKKyAgICAxMzA0NCwgMTMwNDYsIDEzMDQ4LCAxMzA1MCwgMTMwNTIsIDEzMDU0LCAxMzA1NiwgMTMwNTgsIDEzMDYwLCAxMzA2MiwgCisgICAgMTMwNjQsIDEzMDY2LCAxMzA2OCwgMTMwNzAsIDEzMDcyLCAxMzA3NCwgMTMwNzYsIDEzMDc4LCAxMzA4MCwgMTMwODIsIAorICAgIDEzMDg0LCAxMzA4NiwgMTMwODgsIDEzMDkwLCAxMzA5MiwgMTMwOTQsIDEzMDk2LCAxMzA5OCwgMTMxMDAsIDEzMTAyLCAKKyAgICAxMzEwNCwgMTMxMDYsIDEzMTA4LCAxMzExMCwgMTMxMTIsIDEzMTE0LCAxMzExNiwgMTMxMTgsIDEzMTIwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMzEyMiwgMTMxMjYsIDEzMTMwLCAxMzEzNCwgMTMxMzgsIDEzMTQyLCAxMzE0NiwgMTMxNTAsIDEzMTU0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMzE1OCwgMTMxNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTYyLCAxMzE2NCwgMTMxNjYsIDEzMTY4LCAxMzE3MCwgMTMxNzIsIDEzMTc0LCAKKyAgICAxMzE3NiwgMTMxNzgsIDEzMTgwLCAxMzE4MiwgMTMxODQsIDEzMTg2LCAxMzE4OCwgMTMxOTAsIDEzMTkyLCAxMzE5NCwgCisgICAgMTMxOTYsIDEzMTk4LCAxMzIwMCwgMTMyMDIsIDEzMjA0LCAxMzIwNiwgMTMyMDgsIDEzMjEwLCAxMzIxMiwgMTMyMTQsIAorICAgIDEzMjE2LCAxMzIxOCwgMTMyMjAsIDEzMjIyLCAxMzIyNCwgMTMyMjYsIDEzMjI4LCAxMzIzMCwgMTMyMzIsIDEzMjM0LCAKKyAgICAxMzIzNiwgMTMyMzgsIDEzMjQwLCAxMzI0MiwgMTMyNDQsIDEzMjQ2LCAxMzI0OCwgMTMyNTAsIDEzMjUyLCAxMzI1NCwgCisgICAgMTMyNTYsIDEzMjU4LCAxMzI2MCwgMTMyNjIsIDEzMjY0LCAxMzI2NiwgMTMyNjgsIDEzMjcwLCAxMzI3MiwgMTMyNzQsIAorICAgIDEzMjc2LCAxMzI3OCwgMTMyODAsIDEzMjgyLCAxMzI4NCwgMTMyODYsIDEzMjg4LCAxMzI5MCwgMTMyOTIsIDEzMjk0LCAKKyAgICAxMzI5NiwgMTMyOTgsIDEzMzAwLCAxMzMwMiwgMTMzMDQsIDEzMzA2LCAxMzMwOCwgMTMzMTAsIDEzMzEyLCAxMzMxNCwgCisgICAgMTMzMTYsIDEzMzE4LCAxMzMyMCwgMTMzMjIsIDEzMzI0LCAxMzMyNiwgMTMzMjgsIDEzMzMwLCAxMzMzMiwgMTMzMzQsIAorICAgIDEzMzM2LCAxMzMzOCwgMTMzNDAsIDEzMzQyLCAxMzM0NCwgMTMzNDYsIDEzMzQ4LCAxMzM1MCwgMTMzNTIsIDEzMzU0LCAKKyAgICAxMzM1NiwgMTMzNTgsIDEzMzYwLCAxMzM2MiwgMTMzNjQsIDEzMzY2LCAxMzM2OCwgMTMzNzAsIDEzMzcyLCAxMzM3NCwgCisgICAgMTMzNzYsIDEzMzc4LCAxMzM4MCwgMTMzODIsIDEzMzg0LCAxMzM4NiwgMTMzODgsIDEzMzkwLCAxMzM5MiwgMTMzOTQsIAorICAgIDEzMzk2LCAxMzM5OCwgMTM0MDAsIDEzNDAyLCAxMzQwNCwgMTM0MDYsIDEzNDA4LCAxMzQxMCwgMTM0MTIsIDEzNDE0LCAKKyAgICAxMzQxNiwgMTM0MTgsIDEzNDIwLCAxMzQyMiwgMTM0MjQsIDEzNDI2LCAxMzQyOCwgMTM0MzAsIDEzNDMyLCAxMzQzNCwgCisgICAgMTM0MzYsIDEzNDM4LCAxMzQ0MCwgMTM0NDIsIDEzNDQ0LCAxMzQ0NiwgMTM0NDgsIDEzNDUwLCAxMzQ1MiwgMTM0NTQsIAorICAgIDEzNDU2LCAxMzQ1OCwgMTM0NjAsIDEzNDYyLCAxMzQ2NCwgMTM0NjYsIDEzNDY4LCAxMzQ3MCwgMTM0NzIsIDEzNDc0LCAKKyAgICAxMzQ3NiwgMTM0NzgsIDEzNDgwLCAxMzQ4MiwgMTM0ODQsIDEzNDg2LCAxMzQ4OCwgMTM0OTAsIDEzNDkyLCAxMzQ5NCwgCisgICAgMTM0OTYsIDEzNDk4LCAxMzUwMCwgMTM1MDIsIDEzNTA0LCAxMzUwNiwgMTM1MDgsIDEzNTEwLCAxMzUxMiwgMTM1MTQsIAorICAgIDEzNTE2LCAxMzUxOCwgMTM1MjAsIDEzNTIyLCAxMzUyNCwgMTM1MjYsIDEzNTI4LCAxMzUzMCwgMTM1MzIsIDEzNTM0LCAKKyAgICAxMzUzNiwgMTM1MzgsIDEzNTQwLCAxMzU0MiwgMTM1NDQsIDEzNTQ2LCAxMzU0OCwgMTM1NTAsIDEzNTUyLCAxMzU1NCwgCisgICAgMTM1NTYsIDEzNTU4LCAxMzU2MCwgMTM1NjIsIDEzNTY0LCAxMzU2NiwgMTM1NjgsIDEzNTcwLCAxMzU3MiwgMTM1NzQsIAorICAgIDEzNTc2LCAxMzU3OCwgMTM1ODAsIDEzNTgyLCAxMzU4NCwgMTM1ODYsIDEzNTg4LCAxMzU5MCwgMTM1OTIsIDEzNTk0LCAKKyAgICAxMzU5NiwgMTM1OTgsIDEzNjAwLCAxMzYwMiwgMTM2MDQsIDEzNjA2LCAxMzYwOCwgMTM2MTAsIDEzNjEyLCAxMzYxNCwgCisgICAgMTM2MTYsIDEzNjE4LCAxMzYyMCwgMTM2MjIsIDEzNjI0LCAxMzYyNiwgMTM2MjgsIDEzNjMwLCAxMzYzMiwgMTM2MzQsIAorICAgIDEzNjM2LCAxMzYzOCwgMTM2NDAsIDEzNjQyLCAxMzY0NCwgMTM2NDYsIDEzNjQ4LCAxMzY1MCwgMTM2NTIsIDEzNjU0LCAKKyAgICAxMzY1NiwgMTM2NTgsIDEzNjYwLCAxMzY2MiwgMTM2NjQsIDEzNjY2LCAxMzY2OCwgMTM2NzAsIDEzNjcyLCAxMzY3NCwgCisgICAgMTM2NzYsIDEzNjc4LCAxMzY4MCwgMTM2ODIsIDEzNjg0LCAxMzY4NiwgMTM2ODgsIDEzNjkwLCAxMzY5MiwgMTM2OTQsIAorICAgIDEzNjk2LCAxMzY5OCwgMTM3MDAsIDEzNzAyLCAxMzcwNCwgMTM3MDYsIDEzNzA4LCAxMzcxMCwgMTM3MTIsIDEzNzE0LCAKKyAgICAxMzcxNiwgMTM3MTgsIDEzNzIwLCAxMzcyMiwgMTM3MjQsIDEzNzI2LCAxMzcyOCwgMTM3MzAsIDEzNzMyLCAxMzczNCwgCisgICAgMTM3MzYsIDEzNzM4LCAxMzc0MCwgMTM3NDIsIDEzNzQ0LCAxMzc0NiwgMTM3NDgsIDEzNzUwLCAxMzc1MiwgMTM3NTQsIAorICAgIDEzNzU2LCAxMzc1OCwgMTM3NjAsIDEzNzYyLCAxMzc2NCwgMTM3NjYsIDEzNzY4LCAxMzc3MCwgMTM3NzIsIDEzNzc0LCAKKyAgICAxMzc3NiwgMTM3NzgsIDEzNzgwLCAxMzc4MiwgMTM3ODQsIDEzNzg2LCAxMzc4OCwgMTM3OTAsIDEzNzkyLCAxMzc5NCwgCisgICAgMTM3OTYsIDEzNzk4LCAxMzgwMCwgMTM4MDIsIDEzODA0LCAxMzgwNiwgMTM4MDgsIDEzODEwLCAxMzgxMiwgMTM4MTQsIAorICAgIDEzODE2LCAxMzgxOCwgMTM4MjAsIDEzODIyLCAxMzgyNCwgMTM4MjYsIDEzODI4LCAxMzgzMCwgMTM4MzIsIDEzODM0LCAKKyAgICAxMzgzNiwgMTM4MzgsIDEzODQwLCAxMzg0MiwgMTM4NDQsIDEzODQ2LCAxMzg0OCwgMTM4NTAsIDEzODUyLCAxMzg1NCwgCisgICAgMTM4NTYsIDEzODU4LCAxMzg2MCwgMTM4NjIsIDEzODY0LCAxMzg2NiwgMTM4NjgsIDEzODcwLCAxMzg3MiwgMTM4NzQsIAorICAgIDEzODc2LCAxMzg3OCwgMTM4ODAsIDEzODgyLCAxMzg4NCwgMTM4ODYsIDEzODg4LCAxMzg5MCwgMTM4OTIsIDEzODk0LCAKKyAgICAxMzg5NiwgMTM4OTgsIDEzOTAwLCAxMzkwMiwgMTM5MDQsIDEzOTA2LCAxMzkwOCwgMTM5MTAsIDEzOTEyLCAxMzkxNCwgCisgICAgMTM5MTYsIDEzOTE4LCAxMzkyMCwgMTM5MjIsIDEzOTI0LCAxMzkyNiwgMTM5MjgsIDEzOTMwLCAxMzkzMiwgMTM5MzQsIAorICAgIDEzOTM2LCAxMzkzOCwgMTM5NDAsIDEzOTQyLCAxMzk0NCwgMTM5NDYsIDEzOTQ4LCAxMzk1MCwgMTM5NTIsIDEzOTU0LCAKKyAgICAxMzk1NiwgMTM5NTgsIDEzOTYwLCAxMzk2MiwgMTM5NjQsIDEzOTY2LCAxMzk2OCwgMTM5NzAsIDEzOTcyLCAxMzk3NCwgCisgICAgMTM5NzYsIDEzOTc4LCAxMzk4MCwgMTM5ODIsIDEzOTg0LCAxMzk4NiwgMTM5ODgsIDEzOTkwLCAxMzk5MiwgMTM5OTQsIAorICAgIDEzOTk2LCAxMzk5OCwgMTQwMDAsIDE0MDAyLCAxNDAwNCwgMTQwMDYsIDE0MDA4LCAxNDAxMCwgMTQwMTIsIDE0MDE0LCAKKyAgICAxNDAxNiwgMTQwMTgsIDE0MDIwLCAxNDAyMiwgMTQwMjQsIDE0MDI2LCAxNDAyOCwgMTQwMzAsIDE0MDMyLCAxNDAzNCwgCisgICAgMTQwMzYsIDE0MDM4LCAxNDA0MCwgMTQwNDIsIDE0MDQ0LCAxNDA0NiwgMTQwNDgsIDE0MDUwLCAxNDA1MiwgMTQwNTQsIAorICAgIDE0MDU2LCAxNDA1OCwgMTQwNjAsIDE0MDYyLCAxNDA2NCwgMTQwNjYsIDE0MDY4LCAxNDA3MCwgMTQwNzIsIDE0MDc0LCAKKyAgICAxNDA3NiwgMTQwNzgsIDE0MDgwLCAxNDA4MiwgMTQwODQsIDE0MDg2LCAxNDA4OCwgMTQwOTAsIDE0MDkyLCAxNDA5NCwgCisgICAgMTQwOTYsIDE0MDk4LCAxNDEwMCwgMTQxMDIsIDE0MTA0LCAxNDEwNiwgMTQxMDgsIDE0MTEwLCAxNDExMiwgMTQxMTQsIAorICAgIDE0MTE2LCAxNDExOCwgMTQxMjAsIDE0MTIyLCAxNDEyNCwgMTQxMjYsIDE0MTI4LCAxNDEzMCwgMTQxMzIsIDE0MTM0LCAKKyAgICAxNDEzNiwgMTQxMzgsIDE0MTQwLCAxNDE0MiwgMTQxNDQsIDE0MTQ2LCAxNDE0OCwgMTQxNTAsIDE0MTUyLCAxNDE1NCwgCisgICAgMTQxNTYsIDE0MTU4LCAxNDE2MCwgMTQxNjIsIDE0MTY0LCAxNDE2NiwgMTQxNjgsIDE0MTcwLCAxNDE3MiwgMTQxNzQsIAorICAgIDE0MTc2LCAxNDE3OCwgMTQxODAsIDE0MTgyLCAxNDE4NCwgMTQxODYsIDE0MTg4LCAxNDE5MCwgMTQxOTIsIDE0MTk0LCAKKyAgICAxNDE5NiwgMTQxOTgsIDE0MjAwLCAxNDIwMiwgMTQyMDQsIDE0MjA2LCAxNDIwOCwgMTQyMTAsIDE0MjEyLCAxNDIxNCwgCisgICAgMTQyMTYsIDE0MjE4LCAxNDIyMCwgMTQyMjIsIDE0MjI0LCAxNDIyNiwgMTQyMjgsIDE0MjMwLCAxNDIzMiwgMTQyMzQsIAorICAgIDE0MjM2LCAxNDIzOCwgMTQyNDAsIDE0MjQyLCAxNDI0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiAvKiBORkMgcGFpcnMgKi8KICNkZWZpbmUgQ09NUF9TSElGVCAyCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgY29tcF9pbmRleFtdID0gewotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQsIDUsIDYsIDcsIDgsIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwLCAwLCAwLCAxMSwgMCwgMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzLCAKLSAgICAxNCwgMTUsIDAsIDAsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTgsIDAsIDE5LCAyMCwgMjEsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAsIDMxLCAzMiwgMCwgMCwgMzMsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDM0LCAzNSwgMzYsIDAsIDM3LCAzOCwgMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwLCA0MSwgNDIsIDQzLCA0NCwgCi0gICAgNDUsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDgsIDAsIDQ5LCAwLCA1MCwgNTEsIDUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MywgMCwgNTQsIDAsIDU1LCA1NiwgNTcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4LCA1OSwgMCwgMCwgNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxLCA2MiwgCi0gICAgNjMsIDAsIDY0LCA2NSwgNjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDczLCA3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzUsIDc2LCA3NywgCi0gICAgNzgsIDc5LCA4MCwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyLCA4MywgODQsIDAsIDg1LCA4NiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgODcsIDg4LCAwLCA4OSwgOTAsIDkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MiwgOTMsIDk0LCAKLSAgICA5NSwgOTYsIDk3LCA5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTksIDAsIDAsIDAsIDEwMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTAxLCAxMDIsIDAsIDAsIDEwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDUsIDEwNiwgMTA3LCAwLCAxMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEwOSwgMTEwLCAxMTEsIDAsIDExMiwgMCwgMTEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTQsIDExNSwgMTE2LCAKLSAgICAxMTcsIDExOCwgMTE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjAsIDAsIDAsIDEyMSwgMCwgMTIyLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMjMsIDEyNCwgMTI1LCAwLCAwLCAxMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNywgCi0gICAgMTI4LCAwLCAxMjksIDEzMCwgMTMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAKLSAgICAxMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTQwLCAxNDEsIDE0MiwgMCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NSwgMTQ2LCAwLCAxNDcsIAotICAgIDE0OCwgMTQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTAsIDE1MSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxNTYsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE1NywgMCwgMTU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTksIDAsIDE2MCwgCi0gICAgMCwgMTYxLCAxNjIsIDE2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY0LCAwLCAxNjUsIDAsIDE2NiwgMTY3LCAxNjgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE2OSwgMTcwLCAwLCAwLCAxNzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MiwgCi0gICAgMTczLCAxNzQsIDAsIDE3NSwgMTc2LCAxNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3OCwgMTc5LCAxODAsIDE4MSwgMTgyLCAKLSAgICAxODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4NCwgMTg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxODYsIDE4NywgMTg4LCAxODksIDE5MCwgMTkxLCAxOTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5MywgMTk0LCAxOTUsIAotICAgIDAsIDE5NiwgMTk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOTgsIDE5OSwgMCwgMjAwLCAyMDEsIDIwMiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjAzLCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMjA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyMTAsIDAsIDAsIDAsIDIxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEyLCAyMTMsIDIxNCwgMCwgMjE1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxNywgCi0gICAgMjE4LCAyMTksIDAsIDIyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjIxLCAyMjIsIDIyMywgMCwgMjI0LCAwLCAKLSAgICAyMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjI3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyMjgsIDAsIDIyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjMwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzMiwgMjMzLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDIzNSwgMCwgMjM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzcsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOCwgMCwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNDAsIDI0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ1LCAKLSAgICAyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NywgMCwgMjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1MCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUxLCAyNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU0LCAwLCAyNTUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU3LCAwLCAKLSAgICAyNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1OSwgMjYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYzLCAyNjQsIDI2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjY2LCAwLCAyNjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OCwgMCwgMjY5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgxLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI4MywgMCwgMjg0LCAwLCAyODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4NiwgMCwgMjg3LCAwLCAKLSAgICAyODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4OSwgMCwgMjkwLCAwLCAyOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI5MiwgMCwgMjkzLCAwLCAyOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5NSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDMwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzA1LCAzMDYsIDAsIDMwNywgCi0gICAgMCwgMCwgMCwgMzA4LCAwLCAwLCAwLCAwLCAwLCAwLCAzMDksIDAsIDAsIDMxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMzExLCAwLCAwLCAzMTIsIDAsIDAsIDAsIDMxMywgMCwgMCwgMCwgMCwgMCwgMCwgMzE0LCAzMTUsIDAsIDMxNiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE3LCAwLCAwLCAzMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDMxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIwLCAzMjEsIDAsIDMyMiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIzLCAwLCAwLCAzMjQsIDAsIDAsIDAsIDMyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMzI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDMyOCwgMzI5LCAwLCAzMzAsIDAsIDAsIDAsIDMzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMzMyLCAwLCAwLCAKLSAgICAzMzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzNCwgMCwgMCwgMzM1LCAwLCAwLCAwLCAzMzYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDMzNywgMzM4LCAwLCAzMzksIDAsIDAsIDAsIDM0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQxLCAwLCAwLCAKLSAgICAzNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMzQ0LCAzNDUsIDAsIDM0NiwgMCwgMCwgMCwgMzQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAzNDgsIDAsIDAsIDM0OSwgCi0gICAgMCwgMCwgMCwgMzUwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMzUzLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDM1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMzU2LCAzNTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDM1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAzNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MSwgMzYyLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDM2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzY1LCAzNjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzY4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjksIDM3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMzcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc0LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDM3NiwgMzc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzgwLCAKLSAgICAzODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMzgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODQsIDM4NSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAzODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMzg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMzkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTYsIDM5NywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQwOSwgNDEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEzLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTQsIDQxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDE5LCA0MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjMsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzMywgMCwgCi0gICAgMCwgNDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQwLCA0NDEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ0MiwgNDQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCA0NTAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUyLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDU4LCAwLCAwLCAwLCAwLCAwLCAwLCA0NTksIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY0LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0NjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNDcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzEsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MiwgMCwgMCwgMCwgMCwgMCwgMCwgNDczLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQ3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQ4MSwgMCwgMCwgMCwgMCwgMCwgMCwgNDgyLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODMsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODYsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkxLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MywgMCwgMCwgMCwgMCwgMCwgMCwgNDk0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NiwgMCwgMCwgMCwgMCwgMCwgMCwgNDk3LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0OTgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5OSwgMCwgMCwgMCwgMCwgMCwgMCwgNTAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDUwNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTA2LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDUwOCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxMSwgMCwgMCwgMCwgMCwgMCwgMCwgNTEyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTksIDAsIDAsIDAsIDAsIDAsIDAsIDUyMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTIxLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDUyMywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMzLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDUzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzcsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDUzOCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDMsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ4LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTgsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYzLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2OCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzMsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc4LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgxLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1ODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4NiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTEsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDU5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2MDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwMSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDYxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjExLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxNiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjEsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDYyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjI2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzMSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MzMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQsIDUsIAorICAgIDYsIDcsIDgsIDksIDEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMSwgMCwgMCwgMTIsIDAsIDEzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNCwgMTUsIDE2LCAxNywgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE5LCAyMCwgMCwgMjEsIDIyLCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgCisgICAgMzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAzMiwgMzMsIDM0LCAzNSwgMCwgMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3LCAzOCwgMzksIDAsIAorICAgIDQwLCA0MSwgNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzLCA0NCwgNDUsIDQ2LCA0NywgMCwgNDgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgMCwgMCwgCisgICAgNTEsIDUyLCA1MywgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NiwgMCwgNTcsIDU4LCA1OSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjAsIDAsIDYxLCAwLCA2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjMsIDY0LCA2NSwgMCwgNjYsIDY3LCA2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjksIDcwLCA3MSwgNzIsIDczLCAwLCAKKyAgICA3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzUsIDc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA3NywgMCwgNzgsIDc5LCA4MCwgODEsIDAsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODQsIDg1LCAKKyAgICAwLCA4NiwgODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4LCA4OSwgOTAsIDkxLCA5MiwgOTMsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTAxLCAwLCAwLCAxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMywgMTA0LCAwLCAwLCAxMDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTA3LCAxMDgsIDEwOSwgMCwgMTEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTEsIDExMiwgMTEzLCAKKyAgICAxMTQsIDExNSwgMCwgMCwgMTE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTcsIDExOCwgMTE5LCAxMjAsIDEyMSwgCisgICAgMTIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjMsIDAsIDEyNCwgMCwgMCwgMTI1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMjYsIDEyNywgMTI4LCAwLCAwLCAxMjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzMCwgMTMxLCAxMzIsIDEzMywgMTM0LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNiwgMTM3LCAxMzgsIDEzOSwgCisgICAgMTQwLCAxNDEsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NSwgMTQ2LCAwLCAwLCAxNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMTUyLCAxNTMsIDE1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU1LCAxNTYsIDE1NywgCisgICAgMTU4LCAxNTksIDE2MCwgMTYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjIsIDAsIDE2MywgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY0LCAwLCAxNjUsIDAsIDE2NiwgMTY3LCAxNjgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE2OSwgMCwgMCwgMTcwLCAxNzEsIDE3MiwgMTczLCAxNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3NSwgCisgICAgMTc2LCAwLCAwLCAxNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3OCwgMTc5LCAxODAsIDE4MSwgMTgyLCAKKyAgICAxODMsIDE4NCwgMTg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODYsIDE4NywgMTg4LCAxODksIDE5MCwgMTkxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOTIsIDAsIDE5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTk0LCAxOTUsIDE5NiwgMTk3LCAxOTgsIDE5OSwgMjAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMDEsIDIwMiwgCisgICAgMjAzLCAyMDQsIDIwNSwgMjA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMDcsIDIwOCwgMCwgMjA5LCAKKyAgICAyMTAsIDIxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEyLCAyMTMsIDIxNCwgMjE1LCAyMTYsIDIxNywgMjE4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTksIDAsIDAsIDAsIDIyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjIxLCAyMjIsIDIyMywgMCwgMjI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyNiwgMjI3LCAyMjgsIDAsIDIyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjMwLCAyMzEsIDIzMiwgMCwgMjMzLCAwLCAyMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzcsIDAsIDIzOCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MSwgMjQyLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI0NCwgMjQ1LCAyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ4LCAyNDksIDI1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMjUxLCAyNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1MywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAyNTUsIDI1NiwgMCwgMjU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTgsIDAsIAorICAgIDI1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MiwgCisgICAgMjYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2NSwgMjY2LCAyNjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY5LCAyNzAsIDI3MSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcyLCAyNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDI3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzYsIDI3NywgMCwgMjc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNzksIDAsIDI4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgxLCAyODIsIAorICAgIDI4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4NiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5MiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyOTcsIDI5OCwgMjk5LCAwLCAzMDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMwMSwgMCwgMzAyLCAwLCAzMDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwNCwgMzA1LCAzMDYsIDAsIDMwNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzA4LCAwLCAzMDksIDAsIDMxMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTIsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMzE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMzIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjEsIDMyMiwgMCwgMCwgCisgICAgMzIzLCAwLCAwLCAzMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNSwgMCwgMCwgMzI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzMjcsIDAsIDAsIDAsIDMyOCwgMCwgMCwgMzI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzAsIAorICAgIDMzMSwgMCwgMzMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzMsIDAsIDAsIDAsIDMzNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzMzYsIDMzNywgMzM4LCAwLCAzMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MCwgMCwgMCwgMzQxLCAKKyAgICAwLCAwLCAwLCAzNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MywgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDUsIDM0NiwgMCwgCisgICAgMCwgMzQ3LCAwLCAwLCAzNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0OSwgMCwgMCwgMzUwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAzNTEsIDAsIDAsIDAsIDM1MiwgMCwgMCwgMzUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzNTQsIDM1NSwgMCwgMzU2LCAwLCAwLCAwLCAzNTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1OCwgMCwgMCwgMCwgMzU5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDM2MSwgMzYyLCAzNjMsIDAsIDM2NCwgMCwgMCwgMzY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjYsIDAsIAorICAgIDAsIDM2NywgMCwgMCwgMCwgMzY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjksIDAsIDAsIDAsIDAsIDAsIDAsIDM3MCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzcxLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc0LCAzNzUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3OSwgMzgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAzODEsIDM4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzgzLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODQsIDM4NSwgMzg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAzODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4OCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg5LCAzOTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDM5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzkyLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDM5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTYsIDM5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzk4LCAzOTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAxLCA0MDIsIDQwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwNiwgNDA3LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIyLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI4LCAKKyAgICA0MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzMywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0MzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM3LCA0MzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQzLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUyLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTMsIDAsIDAsIDAsIDQ1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTYsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDYxLCA0NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0NjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY3LCAwLCAwLCAwLCAwLCAwLCAwLCA0NjgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ2OSwgMCwgMCwgMCwgMCwgMCwgMCwgNDcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0NzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc5LCAwLCAwLCAwLCAwLCAwLCAwLCA0ODAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODMsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODYsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDg4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkxLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MywgMCwgMCwgMCwgMCwgMCwgMCwgNDk0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDk3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAzLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwOCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxMSwgMCwgMCwgMCwgMCwgMCwgMCwgNTEyLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTE1LCAwLCAwLCAwLCAwLCAwLCAwLCA1MTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDUyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIxLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDUyMywgMCwgMCwgMCwgMCwgMCwgMCwgNTI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDUyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI3LCAwLCAwLCAwLCAwLCAwLCAwLCA1MjgsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDUyOSwgMCwgMCwgMCwgMCwgMCwgMCwgNTMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDUzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDUzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDUzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM5LCAwLCAwLCAwLCAwLCAwLCAwLCA1NDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU0MSwgMCwgMCwgMCwgMCwgMCwgMCwgNTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0NCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0NywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MywgMCwgMCwgMCwgMCwgMCwgMCwgNTU0LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU3LCAwLCAwLCAwLCAwLCAwLCAwLCA1NTgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjcsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzYsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTQsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNjA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDYsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNjA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNjExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTIsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNjE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNjE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNjIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNjIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjQsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNjI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjcsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNjI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNjMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNjM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTQsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjU2LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgY29tcF9kYXRhW10gPSB7Ci0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODgxNCwgMCwgMCwgMCwgODgwMCwgMCwgMCwgMCwgODgxNSwgMTkyLCAxOTMsIDE5NCwgCi0gICAgMTk1LCAyNTYsIDI1OCwgNTUwLCAxOTYsIDc4NDIsIDE5NywgMCwgNDYxLCA1MTIsIDUxNCwgMCwgMCwgMCwgNzg0MCwgMCwgCi0gICAgNzY4MCwgMCwgMCwgMjYwLCAwLCAwLCAwLCA3NjgyLCAwLCAwLCA3Njg0LCAwLCAwLCAwLCAwLCA3Njg2LCAwLCAwLCAyNjIsIAotICAgIDI2NCwgMCwgMCwgMCwgMjY2LCAwLCAwLCAwLCAwLCAyNjgsIDAsIDE5OSwgMCwgMCwgMCwgMCwgNzY5MCwgMCwgMCwgMCwgMCwgCi0gICAgMjcwLCAwLCA3NjkyLCAwLCAwLCAwLCA3Njk2LCAwLCA3Njk4LCAwLCAwLCA3Njk0LCAwLCAyMDAsIDIwMSwgMjAyLCA3ODY4LCAKLSAgICAyNzQsIDI3NiwgMjc4LCAyMDMsIDc4NjYsIDAsIDAsIDI4MiwgNTE2LCA1MTgsIDAsIDAsIDAsIDc4NjQsIDAsIDAsIDAsIAotICAgIDU1MiwgMjgwLCA3NzA0LCAwLCA3NzA2LCAwLCAwLCAwLCAwLCA3NzEwLCAwLCAwLCA1MDAsIDI4NCwgMCwgNzcxMiwgMjg2LCAKLSAgICAyODgsIDAsIDAsIDAsIDAsIDQ4NiwgMCwgMjkwLCAwLCAwLCAwLCAwLCAyOTIsIDAsIDAsIDAsIDc3MTQsIDc3MTgsIDAsIDAsIAotICAgIDAsIDU0MiwgMCwgNzcxNiwgMCwgMCwgMCwgNzcyMCwgMCwgMCwgNzcyMiwgMCwgMCwgMCwgMjA0LCAyMDUsIDIwNiwgMjk2LCAKLSAgICAyOTgsIDMwMCwgMzA0LCAyMDcsIDc4ODAsIDAsIDAsIDQ2MywgNTIwLCA1MjIsIDAsIDAsIDAsIDc4ODIsIDAsIDAsIDAsIDAsIAotICAgIDMwMiwgMCwgMCwgNzcyNCwgMCwgMCwgMCwgMCwgMzA4LCAwLCAwLCA3NzI4LCAwLCAwLCAwLCAwLCAwLCA0ODgsIDAsIAotICAgIDc3MzAsIDAsIDAsIDAsIDMxMCwgMCwgMCwgMCwgMCwgNzczMiwgMCwgMCwgMzEzLCAwLCAwLCAwLCAwLCAwLCAzMTcsIDAsIAotICAgIDc3MzQsIDAsIDAsIDAsIDMxNSwgMCwgNzc0MCwgMCwgMCwgNzczOCwgMCwgMCwgNzc0MiwgMCwgMCwgMCwgMCwgNzc0NCwgMCwgCi0gICAgMCwgNzc0NiwgMCwgMCwgNTA0LCAzMjMsIDAsIDIwOSwgMCwgMCwgNzc0OCwgMCwgMCwgMCwgMCwgMzI3LCAwLCA3NzUwLCAwLCAKLSAgICAwLCAwLCAzMjUsIDAsIDc3NTQsIDAsIDAsIDc3NTIsIDAsIDIxMCwgMjExLCAyMTIsIDIxMywgMzMyLCAzMzQsIDU1OCwgCi0gICAgMjE0LCA3ODg2LCAwLCAzMzYsIDQ2NSwgNTI0LCA1MjYsIDAsIDAsIDQxNiwgNzg4NCwgMCwgMCwgMCwgMCwgNDkwLCAwLCAwLCAKLSAgICA3NzY0LCAwLCAwLCAwLCAwLCA3NzY2LCAwLCAwLCAzNDAsIDAsIDAsIDAsIDAsIDc3NjgsIDAsIDAsIDAsIDAsIDM0NCwgCi0gICAgNTI4LCA1MzAsIDAsIDAsIDAsIDc3NzAsIDAsIDAsIDAsIDM0MiwgMCwgMCwgMCwgMCwgNzc3NCwgMCwgMCwgMzQ2LCAzNDgsIAotICAgIDAsIDAsIDAsIDc3NzYsIDAsIDAsIDAsIDAsIDM1MiwgMCwgNzc3OCwgMCwgMCwgNTM2LCAzNTAsIDAsIDAsIDAsIDAsIAotICAgIDc3ODYsIDAsIDAsIDAsIDAsIDM1NiwgMCwgNzc4OCwgMCwgMCwgNTM4LCAzNTQsIDAsIDc3OTIsIDAsIDAsIDc3OTAsIDAsIAotICAgIDIxNywgMjE4LCAyMTksIDM2MCwgMzYyLCAzNjQsIDAsIDIyMCwgNzkxMCwgMzY2LCAzNjgsIDQ2NywgNTMyLCA1MzQsIDAsIAotICAgIDAsIDQzMSwgNzkwOCwgNzc5NCwgMCwgMCwgMCwgMzcwLCA3Nzk4LCAwLCA3Nzk2LCAwLCAwLCAwLCAwLCAwLCA3ODA0LCAwLCAKLSAgICA3ODA2LCAwLCAwLCA3ODA4LCA3ODEwLCAzNzIsIDAsIDAsIDAsIDc4MTQsIDc4MTIsIDAsIDc4MTYsIDAsIDAsIDAsIDAsIAotICAgIDc4MTgsIDc4MjAsIDc5MjIsIDIyMSwgMzc0LCA3OTI4LCA1NjIsIDAsIDc4MjIsIDM3NiwgNzkyNiwgMCwgMCwgMCwgMCwgCi0gICAgNzkyNCwgMCwgMCwgMCwgMzc3LCA3ODI0LCAwLCAwLCAwLCAzNzksIDAsIDAsIDAsIDAsIDM4MSwgMCwgNzgyNiwgMCwgMCwgCi0gICAgMCwgMCwgNzgyOCwgMCwgMjI0LCAyMjUsIDIyNiwgMjI3LCAyNTcsIDI1OSwgNTUxLCAyMjgsIDc4NDMsIDIyOSwgMCwgNDYyLCAKLSAgICA1MTMsIDUxNSwgMCwgMCwgMCwgNzg0MSwgMCwgNzY4MSwgMCwgMCwgMjYxLCAwLCAwLCAwLCA3NjgzLCAwLCAwLCA3Njg1LCAKLSAgICAwLCAwLCAwLCAwLCA3Njg3LCAwLCAwLCAyNjMsIDI2NSwgMCwgMCwgMCwgMjY3LCAwLCAwLCAwLCAwLCAyNjksIDAsIDIzMSwgCi0gICAgMCwgMCwgMCwgMCwgNzY5MSwgMCwgMCwgMCwgMCwgMjcxLCAwLCA3NjkzLCAwLCAwLCAwLCA3Njk3LCAwLCA3Njk5LCAwLCAwLCAKLSAgICA3Njk1LCAwLCAyMzIsIDIzMywgMjM0LCA3ODY5LCAyNzUsIDI3NywgMjc5LCAyMzUsIDc4NjcsIDAsIDAsIDI4MywgNTE3LCAKLSAgICA1MTksIDAsIDAsIDAsIDc4NjUsIDAsIDAsIDAsIDU1MywgMjgxLCA3NzA1LCAwLCA3NzA3LCAwLCAwLCAwLCAwLCA3NzExLCAKLSAgICAwLCAwLCA1MDEsIDI4NSwgMCwgNzcxMywgMjg3LCAyODksIDAsIDAsIDAsIDAsIDQ4NywgMCwgMjkxLCAwLCAwLCAwLCAwLCAKLSAgICAyOTMsIDAsIDAsIDAsIDc3MTUsIDc3MTksIDAsIDAsIDAsIDU0MywgMCwgNzcxNywgMCwgMCwgMCwgNzcyMSwgMCwgMCwgCi0gICAgNzcyMywgMCwgNzgzMCwgMCwgMjM2LCAyMzcsIDIzOCwgMjk3LCAyOTksIDMwMSwgMCwgMjM5LCA3ODgxLCAwLCAwLCA0NjQsIAotICAgIDUyMSwgNTIzLCAwLCAwLCAwLCA3ODgzLCAwLCAwLCAwLCAwLCAzMDMsIDAsIDAsIDc3MjUsIDAsIDAsIDAsIDAsIDMwOSwgMCwgCi0gICAgMCwgMCwgMCwgNDk2LCAwLCA3NzI5LCAwLCAwLCAwLCAwLCAwLCA0ODksIDAsIDc3MzEsIDAsIDAsIDAsIDMxMSwgMCwgMCwgCi0gICAgMCwgMCwgNzczMywgMCwgMCwgMzE0LCAwLCAwLCAwLCAwLCAwLCAzMTgsIDAsIDc3MzUsIDAsIDAsIDAsIDMxNiwgMCwgCi0gICAgNzc0MSwgMCwgMCwgNzczOSwgMCwgMCwgNzc0MywgMCwgMCwgMCwgMCwgNzc0NSwgMCwgMCwgNzc0NywgMCwgMCwgNTA1LCAKLSAgICAzMjQsIDAsIDI0MSwgMCwgMCwgNzc0OSwgMCwgMCwgMCwgMCwgMzI4LCAwLCA3NzUxLCAwLCAwLCAwLCAzMjYsIDAsIDc3NTUsIAotICAgIDAsIDAsIDc3NTMsIDAsIDI0MiwgMjQzLCAyNDQsIDI0NSwgMzMzLCAzMzUsIDU1OSwgMjQ2LCA3ODg3LCAwLCAzMzcsIDQ2NiwgCi0gICAgNTI1LCA1MjcsIDAsIDAsIDQxNywgNzg4NSwgMCwgMCwgMCwgMCwgNDkxLCAwLCAwLCA3NzY1LCAwLCAwLCAwLCAwLCA3NzY3LCAKLSAgICAwLCAwLCAzNDEsIDAsIDAsIDAsIDAsIDc3NjksIDAsIDAsIDAsIDAsIDM0NSwgNTI5LCA1MzEsIDAsIDAsIDAsIDc3NzEsIDAsIAotICAgIDAsIDAsIDM0MywgMCwgMCwgMCwgMCwgNzc3NSwgMCwgMCwgMzQ3LCAzNDksIDAsIDAsIDAsIDc3NzcsIDAsIDAsIDAsIDAsIAotICAgIDM1MywgMCwgNzc3OSwgMCwgMCwgNTM3LCAzNTEsIDAsIDAsIDAsIDAsIDc3ODcsIDc4MzEsIDAsIDAsIDAsIDM1NywgMCwgCi0gICAgNzc4OSwgMCwgMCwgNTM5LCAzNTUsIDAsIDc3OTMsIDAsIDAsIDc3OTEsIDAsIDI0OSwgMjUwLCAyNTEsIDM2MSwgMzYzLCAKLSAgICAzNjUsIDAsIDI1MiwgNzkxMSwgMzY3LCAzNjksIDQ2OCwgNTMzLCA1MzUsIDAsIDAsIDQzMiwgNzkwOSwgNzc5NSwgMCwgMCwgCi0gICAgMCwgMzcxLCA3Nzk5LCAwLCA3Nzk3LCAwLCAwLCAwLCAwLCAwLCA3ODA1LCAwLCA3ODA3LCAwLCAwLCA3ODA5LCA3ODExLCAKLSAgICAzNzMsIDAsIDAsIDAsIDc4MTUsIDc4MTMsIDAsIDc4MzIsIDAsIDAsIDAsIDc4MTcsIDAsIDAsIDAsIDAsIDc4MTksIDc4MjEsIAotICAgIDc5MjMsIDI1MywgMzc1LCA3OTI5LCA1NjMsIDAsIDc4MjMsIDI1NSwgNzkyNywgNzgzMywgMCwgMCwgMCwgNzkyNSwgMCwgMCwgCi0gICAgMCwgMzc4LCA3ODI1LCAwLCAwLCAwLCAzODAsIDAsIDAsIDAsIDAsIDM4MiwgMCwgNzgyNywgMCwgMCwgMCwgMCwgNzgyOSwgCi0gICAgMCwgODE3MywgOTAxLCAwLCAwLCA4MTI5LCAwLCAwLCAwLCA3ODQ2LCA3ODQ0LCAwLCA3ODUwLCA3ODQ4LCAwLCAwLCAwLCAKLSAgICA0NzgsIDAsIDAsIDAsIDAsIDUwNiwgMCwgMCwgMCwgNTA4LCAwLCAwLCA0ODIsIDAsIDAsIDAsIDAsIDc2ODgsIDAsIDAsIAotICAgIDc4NzIsIDc4NzAsIDAsIDc4NzYsIDc4NzQsIDAsIDAsIDAsIDAsIDc3MjYsIDAsIDAsIDc4OTAsIDc4ODgsIDAsIDc4OTQsIAotICAgIDc4OTIsIDAsIDAsIDAsIDAsIDc3NTYsIDAsIDAsIDU1NiwgMCwgMCwgNzc1OCwgNTU0LCAwLCAwLCAwLCAwLCA1MTAsIDAsIAotICAgIDAsIDQ3NSwgNDcxLCAwLCAwLCA0NjksIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MywgNzg0NywgNzg0NSwgMCwgNzg1MSwgNzg0OSwgCi0gICAgMCwgMCwgMCwgNDc5LCAwLCAwLCAwLCAwLCA1MDcsIDAsIDAsIDAsIDUwOSwgMCwgMCwgNDgzLCAwLCAwLCAwLCAwLCA3Njg5LCAKLSAgICAwLCAwLCA3ODczLCA3ODcxLCAwLCA3ODc3LCA3ODc1LCAwLCAwLCAwLCAwLCA3NzI3LCAwLCAwLCA3ODkxLCA3ODg5LCAwLCAKLSAgICA3ODk1LCA3ODkzLCAwLCAwLCAwLCAwLCA3NzU3LCAwLCAwLCA1NTcsIDAsIDAsIDc3NTksIDU1NSwgMCwgMCwgMCwgMCwgCi0gICAgNTExLCAwLCAwLCA0NzYsIDQ3MiwgMCwgMCwgNDcwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzQsIDc4NTYsIDc4NTQsIDAsIAotICAgIDc4NjAsIDc4NTgsIDAsIDAsIDAsIDc4NTcsIDc4NTUsIDAsIDc4NjEsIDc4NTksIDAsIDAsIDAsIDc3MDAsIDc3MDIsIDAsIAotICAgIDAsIDc3MDEsIDc3MDMsIDAsIDAsIDc3NjAsIDc3NjIsIDAsIDAsIDc3NjEsIDc3NjMsIDAsIDAsIDAsIDAsIDc3ODAsIDAsIAotICAgIDAsIDAsIDc3ODEsIDAsIDAsIDAsIDc3ODIsIDAsIDAsIDAsIDc3ODMsIDAsIDAsIDc4MDAsIDAsIDAsIDAsIDc4MDEsIDAsIAotICAgIDAsIDAsIDAsIDAsIDc4MDIsIDAsIDAsIDAsIDc4MDMsIDAsIDAsIDc4MzUsIDAsIDc5MDAsIDc4OTgsIDAsIDc5MDQsIAotICAgIDc5MDIsIDAsIDAsIDAsIDAsIDc5MDYsIDAsIDAsIDc5MDEsIDc4OTksIDAsIDc5MDUsIDc5MDMsIDAsIDAsIDAsIDAsIAotICAgIDc5MDcsIDAsIDAsIDc5MTQsIDc5MTIsIDAsIDc5MTgsIDc5MTYsIDAsIDAsIDAsIDAsIDc5MjAsIDAsIDAsIDc5MTUsIAotICAgIDc5MTMsIDAsIDc5MTksIDc5MTcsIDAsIDAsIDAsIDAsIDc5MjEsIDAsIDAsIDAsIDAsIDAsIDQ5NCwgNDkyLCAwLCAwLCAwLCAKLSAgICA0OTMsIDAsIDAsIDAsIDQ4MCwgMCwgMCwgMCwgNDgxLCAwLCAwLCAwLCAwLCA3NzA4LCAwLCAwLCAwLCA3NzA5LCAwLCAwLCAKLSAgICA1NjAsIDAsIDAsIDAsIDU2MSwgMCwgMCwgMCwgMCwgMCwgMCwgNDk1LCA4MTIyLCA5MDIsIDAsIDAsIDgxMjEsIDgxMjAsIDAsIAotICAgIDAsIDAsIDAsIDc5NDQsIDc5NDUsIDAsIDgxMjQsIDAsIDAsIDgxMzYsIDkwNCwgMCwgMCwgMCwgMCwgNzk2MCwgNzk2MSwgCi0gICAgODEzOCwgOTA1LCAwLCAwLCAwLCAwLCA3OTc2LCA3OTc3LCAwLCA4MTQwLCAwLCAwLCA4MTU0LCA5MDYsIDAsIDAsIDgxNTMsIAotICAgIDgxNTIsIDAsIDkzOCwgMCwgMCwgNzk5MiwgNzk5MywgODE4NCwgOTA4LCAwLCAwLCAwLCAwLCA4MDA4LCA4MDA5LCAwLCAwLCAKLSAgICAwLCA4MTcyLCA4MTcwLCA5MTAsIDAsIDAsIDgxNjksIDgxNjgsIDAsIDkzOSwgMCwgMCwgMCwgODAyNSwgODE4NiwgOTExLCAKLSAgICAwLCAwLCAwLCAwLCA4MDQwLCA4MDQxLCAwLCA4MTg4LCAwLCAwLCAwLCA4MTE2LCAwLCAwLCAwLCA4MTMyLCAwLCAwLCAKLSAgICA4MDQ4LCA5NDAsIDAsIDAsIDgxMTMsIDgxMTIsIDAsIDAsIDAsIDAsIDc5MzYsIDc5MzcsIDgxMTgsIDgxMTUsIDAsIDAsIAotICAgIDgwNTAsIDk0MSwgMCwgMCwgMCwgMCwgNzk1MiwgNzk1MywgODA1MiwgOTQyLCAwLCAwLCAwLCAwLCA3OTY4LCA3OTY5LCAKLSAgICA4MTM0LCA4MTMxLCAwLCAwLCA4MDU0LCA5NDMsIDAsIDAsIDgxNDUsIDgxNDQsIDAsIDk3MCwgMCwgMCwgNzk4NCwgNzk4NSwgCi0gICAgODE1MCwgMCwgMCwgMCwgODA1NiwgOTcyLCAwLCAwLCAwLCAwLCA4MDAwLCA4MDAxLCAwLCAwLCA4MTY0LCA4MTY1LCA4MDU4LCAKLSAgICA5NzMsIDAsIDAsIDgxNjEsIDgxNjAsIDAsIDk3MSwgMCwgMCwgODAxNiwgODAxNywgODE2NiwgMCwgMCwgMCwgODA2MCwgCi0gICAgOTc0LCAwLCAwLCAwLCAwLCA4MDMyLCA4MDMzLCA4MTgyLCA4MTc5LCAwLCAwLCA4MTQ2LCA5MTIsIDAsIDAsIDgxNTEsIDAsIAotICAgIDAsIDAsIDgxNjIsIDk0NCwgMCwgMCwgODE2NywgMCwgMCwgMCwgMCwgODE4MCwgMCwgMCwgMCwgOTc5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCA5ODAsIDAsIDAsIDAsIDEwMzEsIDAsIDEyMzIsIDAsIDEyMzQsIDAsIDEwMjcsIDAsIDAsIDEwMjQsIDAsIDAsIDAsIDAsIAotICAgIDEyMzgsIDAsIDEwMjUsIDAsIDEyMTcsIDAsIDEyNDQsIDAsIDAsIDAsIDEyNDYsIDEwMzcsIDAsIDAsIDAsIDEyNTAsIAotICAgIDEwNDksIDAsIDEyNTIsIDAsIDEwMzYsIDAsIDAsIDAsIDAsIDAsIDEyNTQsIDEyNjIsIDEwMzgsIDAsIDEyNjQsIDAsIDAsIAotICAgIDEyNjYsIDAsIDAsIDAsIDAsIDEyNjgsIDAsIDAsIDAsIDEyNzIsIDAsIDAsIDAsIDEyNjAsIDAsIDEyMzMsIDAsIDEyMzUsIAotICAgIDAsIDExMDcsIDAsIDAsIDExMDQsIDAsIDAsIDAsIDAsIDEyMzksIDAsIDExMDUsIDAsIDEyMTgsIDAsIDEyNDUsIDAsIDAsIAotICAgIDAsIDEyNDcsIDExMTcsIDAsIDAsIDAsIDEyNTEsIDEwODEsIDAsIDEyNTMsIDAsIDExMTYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyNTUsIDEyNjMsIDExMTgsIDAsIDEyNjUsIDAsIDAsIDEyNjcsIDAsIDAsIDAsIDAsIDEyNjksIDAsIDAsIDAsIDEyNzMsIAotICAgIDAsIDAsIDAsIDEyNjEsIDAsIDAsIDAsIDExMTEsIDExNDIsIDAsIDAsIDAsIDExNDMsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyNDIsIDAsIDAsIDAsIDEyNDMsIDAsIDAsIDAsIDEyNTgsIDAsIDAsIDAsIDEyNTksIDAsIDAsIDE1NzAsIDE1NzEsIAotICAgIDE1NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzIsIDAsIDAsIDAsIDE1NzQsIDAsIDAsIDAsIDE3MzAsIDAsIDAsIDAsIAotICAgIDE3NDcsIDAsIDAsIDAsIDE3MjgsIDAsIDIzNDUsIDAsIDAsIDAsIDIzNTMsIDAsIDAsIDAsIDIzNTYsIDAsIDAsIDAsIDAsIAotICAgIDI1MDcsIDI1MDgsIDI4OTEsIDI4ODgsIDI4OTIsIDAsIDI5NjQsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMTgsIDMwMjAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDMwMTksIDAsIDMxNDQsIDAsIDAsIDAsIDAsIDAsIDMyNjQsIDAsIDAsIDMyNzQsIDMyNzEsIAotICAgIDMyNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNzUsIDAsIDM0MDIsIDM0MDQsIDAsIDAsIDM0MDMsIDAsIDAsIDAsIDAsIDAsIAotICAgIDM1NDYsIDM1NDgsIDM1NTAsIDAsIDAsIDAsIDAsIDAsIDM1NDksIDAsIDAsIDQxMzQsIDAsIDAsIDAsIDAsIDY5MTgsIDAsIAotICAgIDAsIDAsIDY5MjAsIDAsIDAsIDAsIDY5MjIsIDAsIDAsIDAsIDY5MjQsIDAsIDAsIDAsIDY5MjYsIDAsIDAsIDAsIDY5MzAsIAotICAgIDAsIDAsIDAsIDY5NzEsIDAsIDAsIDAsIDY5NzMsIDAsIDAsIDAsIDY5NzYsIDAsIDAsIDAsIDY5NzcsIDAsIDAsIDAsIAotICAgIDY5NzksIDc3MzYsIDAsIDAsIDAsIDc3MzcsIDAsIDAsIDAsIDc3NzIsIDAsIDAsIDAsIDc3NzMsIDAsIDAsIDAsIDAsIDAsIAotICAgIDc3ODQsIDAsIDAsIDAsIDc3ODUsIDAsIDAsIDAsIDc4NTIsIDAsIDAsIDc4NjIsIDAsIDAsIDAsIDAsIDc4NTMsIDAsIDAsIAotICAgIDc4NjMsIDAsIDAsIDAsIDAsIDc4NzgsIDAsIDAsIDAsIDc4NzksIDAsIDAsIDAsIDc4OTYsIDAsIDAsIDAsIDc4OTcsIDAsIAotICAgIDc5MzgsIDc5NDAsIDAsIDAsIDc5NDIsIDgwNjQsIDAsIDAsIDc5MzksIDc5NDEsIDAsIDAsIDc5NDMsIDgwNjUsIDAsIDAsIAotICAgIDAsIDgwNjYsIDAsIDAsIDAsIDgwNjcsIDAsIDAsIDAsIDgwNjgsIDAsIDAsIDAsIDgwNjksIDAsIDAsIDAsIDgwNzAsIDAsIAotICAgIDAsIDAsIDgwNzEsIDAsIDAsIDc5NDYsIDc5NDgsIDAsIDAsIDc5NTAsIDgwNzIsIDAsIDAsIDc5NDcsIDc5NDksIDAsIDAsIAotICAgIDc5NTEsIDgwNzMsIDAsIDAsIDAsIDgwNzQsIDAsIDAsIDAsIDgwNzUsIDAsIDAsIDAsIDgwNzYsIDAsIDAsIDAsIDgwNzcsIAotICAgIDAsIDAsIDAsIDgwNzgsIDAsIDAsIDAsIDgwNzksIDAsIDAsIDc5NTQsIDc5NTYsIDAsIDAsIDc5NTUsIDc5NTcsIDAsIDAsIAotICAgIDc5NjIsIDc5NjQsIDAsIDAsIDc5NjMsIDc5NjUsIDAsIDAsIDc5NzAsIDc5NzIsIDAsIDAsIDc5NzQsIDgwODAsIDAsIDAsIAotICAgIDc5NzEsIDc5NzMsIDAsIDAsIDc5NzUsIDgwODEsIDAsIDAsIDAsIDgwODIsIDAsIDAsIDAsIDgwODMsIDAsIDAsIDAsIAotICAgIDgwODQsIDAsIDAsIDAsIDgwODUsIDAsIDAsIDAsIDgwODYsIDAsIDAsIDAsIDgwODcsIDAsIDAsIDc5NzgsIDc5ODAsIDAsIAotICAgIDAsIDc5ODIsIDgwODgsIDAsIDAsIDc5NzksIDc5ODEsIDAsIDAsIDc5ODMsIDgwODksIDAsIDAsIDAsIDgwOTAsIDAsIDAsIAotICAgIDAsIDgwOTEsIDAsIDAsIDAsIDgwOTIsIDAsIDAsIDAsIDgwOTMsIDAsIDAsIDAsIDgwOTQsIDAsIDAsIDAsIDgwOTUsIDAsIAotICAgIDAsIDc5ODYsIDc5ODgsIDAsIDAsIDc5OTAsIDAsIDAsIDAsIDc5ODcsIDc5ODksIDAsIDAsIDc5OTEsIDAsIDAsIDAsIAotICAgIDc5OTQsIDc5OTYsIDAsIDAsIDc5OTgsIDAsIDAsIDAsIDc5OTUsIDc5OTcsIDAsIDAsIDc5OTksIDAsIDAsIDAsIDgwMDIsIAotICAgIDgwMDQsIDAsIDAsIDgwMDMsIDgwMDUsIDAsIDAsIDgwMTAsIDgwMTIsIDAsIDAsIDgwMTEsIDgwMTMsIDAsIDAsIDgwMTgsIAotICAgIDgwMjAsIDAsIDAsIDgwMjIsIDAsIDAsIDAsIDgwMTksIDgwMjEsIDAsIDAsIDgwMjMsIDAsIDAsIDAsIDgwMjcsIDgwMjksIAotICAgIDAsIDAsIDgwMzEsIDAsIDAsIDAsIDgwMzQsIDgwMzYsIDAsIDAsIDgwMzgsIDgwOTYsIDAsIDAsIDgwMzUsIDgwMzcsIDAsIAotICAgIDAsIDgwMzksIDgwOTcsIDAsIDAsIDAsIDgwOTgsIDAsIDAsIDAsIDgwOTksIDAsIDAsIDAsIDgxMDAsIDAsIDAsIDAsIAotICAgIDgxMDEsIDAsIDAsIDAsIDgxMDIsIDAsIDAsIDAsIDgxMDMsIDAsIDAsIDgwNDIsIDgwNDQsIDAsIDAsIDgwNDYsIDgxMDQsIAotICAgIDAsIDAsIDgwNDMsIDgwNDUsIDAsIDAsIDgwNDcsIDgxMDUsIDAsIDAsIDAsIDgxMDYsIDAsIDAsIDAsIDgxMDcsIDAsIDAsIAotICAgIDAsIDgxMDgsIDAsIDAsIDAsIDgxMDksIDAsIDAsIDAsIDgxMTAsIDAsIDAsIDAsIDgxMTEsIDAsIDAsIDAsIDgxMTQsIDAsIAotICAgIDAsIDAsIDgxMzAsIDAsIDAsIDAsIDgxNzgsIDAsIDAsIDAsIDgxMTksIDAsIDAsIDgxNDEsIDgxNDIsIDAsIDAsIDgxNDMsIAotICAgIDAsIDAsIDAsIDAsIDgxMzUsIDAsIDAsIDAsIDgxODMsIDAsIDAsIDgxNTcsIDgxNTgsIDAsIDAsIDgxNTksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDg2MDIsIDAsIDAsIDAsIDg2MDMsIDAsIDAsIDAsIDg2MjIsIDAsIDAsIDAsIDg2NTMsIDAsIDAsIDAsIAotICAgIDg2NTUsIDAsIDAsIDAsIDg2NTQsIDAsIDAsIDAsIDg3MDgsIDAsIDAsIDAsIDg3MTMsIDAsIDAsIDAsIDg3MTYsIDAsIDAsIAotICAgIDAsIDg3NDAsIDAsIDAsIDAsIDg3NDIsIDAsIDAsIDAsIDg3NjksIDAsIDAsIDAsIDg3NzIsIDAsIDAsIDAsIDg3NzUsIDAsIAotICAgIDAsIDAsIDg3NzcsIDAsIDAsIDAsIDg4MTMsIDAsIDAsIDAsIDg4MDIsIDAsIDAsIDAsIDg4MTYsIDAsIDAsIDAsIDg4MTcsIAotICAgIDAsIDAsIDAsIDg4MjAsIDAsIDAsIDAsIDg4MjEsIDAsIDAsIDAsIDg4MjQsIDAsIDAsIDAsIDg4MjUsIDAsIDAsIDAsIAotICAgIDg4MzIsIDAsIDAsIDAsIDg4MzMsIDAsIDAsIDAsIDg5MjgsIDAsIDAsIDAsIDg5MjksIDAsIDAsIDAsIDg4MzYsIDAsIDAsIAotICAgIDAsIDg4MzcsIDAsIDAsIDAsIDg4NDAsIDAsIDAsIDAsIDg4NDEsIDAsIDAsIDAsIDg5MzAsIDAsIDAsIDAsIDg5MzEsIDAsIAotICAgIDAsIDAsIDg4NzYsIDAsIDAsIDAsIDg4NzcsIDAsIDAsIDAsIDg4NzgsIDAsIDAsIDAsIDg4NzksIDAsIDAsIDAsIDg5MzgsIAotICAgIDAsIDAsIDAsIDg5MzksIDAsIDAsIDAsIDg5NDAsIDAsIDAsIDAsIDg5NDEsIDEyNDM2LCAwLCAwLCAwLCAxMjM2NCwgMCwgMCwgCi0gICAgMCwgMTIzNjYsIDAsIDAsIDAsIDEyMzY4LCAwLCAwLCAwLCAxMjM3MCwgMCwgMCwgMCwgMTIzNzIsIDAsIDAsIDAsIDEyMzc0LCAKLSAgICAwLCAwLCAwLCAxMjM3NiwgMCwgMCwgMCwgMTIzNzgsIDAsIDAsIDAsIDEyMzgwLCAwLCAwLCAwLCAxMjM4MiwgMCwgMCwgMCwgCi0gICAgMTIzODQsIDAsIDAsIDAsIDEyMzg2LCAwLCAwLCAwLCAxMjM4OSwgMCwgMCwgMCwgMTIzOTEsIDAsIDAsIDAsIDEyMzkzLCAwLCAKLSAgICAwLCAwLCAxMjQwMCwgMTI0MDEsIDAsIDAsIDEyNDAzLCAxMjQwNCwgMCwgMCwgMTI0MDYsIDEyNDA3LCAwLCAwLCAxMjQwOSwgCi0gICAgMTI0MTAsIDAsIDAsIDEyNDEyLCAxMjQxMywgMCwgMCwgMTI0NDYsIDAsIDAsIDAsIDEyNTMyLCAwLCAwLCAwLCAxMjQ2MCwgCi0gICAgMCwgMCwgMCwgMTI0NjIsIDAsIDAsIDAsIDEyNDY0LCAwLCAwLCAwLCAxMjQ2NiwgMCwgMCwgMCwgMTI0NjgsIDAsIDAsIDAsIAotICAgIDEyNDcwLCAwLCAwLCAwLCAxMjQ3MiwgMCwgMCwgMCwgMTI0NzQsIDAsIDAsIDAsIDEyNDc2LCAwLCAwLCAwLCAxMjQ3OCwgMCwgCi0gICAgMCwgMCwgMTI0ODAsIDAsIDAsIDAsIDEyNDgyLCAwLCAwLCAwLCAxMjQ4NSwgMCwgMCwgMCwgMTI0ODcsIDAsIDAsIDAsIAotICAgIDEyNDg5LCAwLCAwLCAwLCAxMjQ5NiwgMTI0OTcsIDAsIDAsIDEyNDk5LCAxMjUwMCwgMCwgMCwgMTI1MDIsIDEyNTAzLCAwLCAKLSAgICAwLCAxMjUwNSwgMTI1MDYsIDAsIDAsIDEyNTA4LCAxMjUwOSwgMCwgMCwgMTI1MzUsIDAsIDAsIDAsIDEyNTM2LCAwLCAwLCAKLSAgICAwLCAxMjUzNywgMCwgMCwgMCwgMTI1MzgsIDAsIDAsIDAsIDEyNTQyLCAwLCAwLCAwLCAwLCAwLCA2OTc4NiwgMCwgMCwgMCwgCi0gICAgNjk3ODgsIDAsIDAsIDAsIDY5ODAzLCAwLCAwLCAwLCAwLCA2OTkzNCwgMCwgMCwgMCwgNjk5MzUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4MTQsIDAsIDg4MDAsIDAsIDAsIDAsIDAsIDAsIDg4MTUsIDAsIDAsIDE5MiwgMTkzLCAKKyAgICAxOTQsIDE5NSwgMjU2LCAyNTgsIDU1MCwgMTk2LCA3ODQyLCAxOTcsIDAsIDQ2MSwgNTEyLCA1MTQsIDAsIDAsIDAsIDc4NDAsIAorICAgIDAsIDc2ODAsIDAsIDAsIDI2MCwgMCwgMCwgMCwgMCwgMCwgNzY4MiwgMCwgMCwgNzY4NCwgMCwgMCwgMCwgMCwgNzY4NiwgMCwgCisgICAgMCwgMCwgMCwgMjYyLCAyNjQsIDAsIDAsIDAsIDI2NiwgMCwgMCwgMCwgMCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAxOTksIDAsIAorICAgIDAsIDc2OTAsIDAsIDAsIDAsIDAsIDI3MCwgMCwgNzY5MiwgMCwgMCwgMCwgNzY5NiwgMCwgNzY5OCwgMCwgMCwgNzY5NCwgMCwgCisgICAgMCwgMCwgMjAwLCAyMDEsIDIwMiwgNzg2OCwgMjc0LCAyNzYsIDI3OCwgMjAzLCA3ODY2LCAwLCAwLCAyODIsIDUxNiwgNTE4LCAKKyAgICAwLCAwLCAwLCA3ODY0LCAwLCAwLCAwLCA1NTIsIDI4MCwgNzcwNCwgMCwgNzcwNiwgMCwgMCwgNzcxMCwgMCwgMCwgMCwgMCwgCisgICAgNTAwLCAyODQsIDAsIDc3MTIsIDI4NiwgMjg4LCAwLCAwLCAwLCAwLCA0ODYsIDAsIDAsIDAsIDAsIDAsIDI5MCwgMCwgMCwgCisgICAgMjkyLCAwLCAwLCAwLCA3NzE0LCA3NzE4LCAwLCAwLCAwLCA1NDIsIDAsIDc3MTYsIDAsIDAsIDAsIDc3MjAsIDAsIDAsIAorICAgIDc3MjIsIDAsIDAsIDAsIDAsIDAsIDIwNCwgMjA1LCAyMDYsIDI5NiwgMjk4LCAzMDAsIDMwNCwgMjA3LCA3ODgwLCAwLCAwLCAKKyAgICA0NjMsIDUyMCwgNTIyLCAwLCAwLCAwLCA3ODgyLCAzMDIsIDAsIDAsIDc3MjQsIDAsIDAsIDMwOCwgMCwgMCwgMCwgMCwgCisgICAgNzcyOCwgMCwgNDg4LCAwLCAwLCAwLCAwLCAwLCA3NzMwLCAwLCAwLCAwLCAzMTAsIDc3MzIsIDAsIDAsIDAsIDAsIDMxMywgCisgICAgMCwgMCwgMCwgMCwgMCwgMzE3LCAwLCA3NzM0LCAwLCAwLCAwLCAzMTUsIDAsIDc3NDAsIDAsIDAsIDc3MzgsIDAsIDAsIDAsIAorICAgIDAsIDc3NDIsIDc3NDQsIDAsIDAsIDAsIDAsIDAsIDAsIDc3NDYsIDUwNCwgMzIzLCAwLCAyMDksIDAsIDAsIDc3NDgsIDAsIAorICAgIDAsIDAsIDAsIDMyNywgMCwgNzc1MCwgMCwgMCwgMCwgMzI1LCAwLCA3NzU0LCAwLCAwLCA3NzUyLCAwLCAwLCAwLCAyMTAsIAorICAgIDIxMSwgMjEyLCAyMTMsIDMzMiwgMzM0LCA1NTgsIDIxNCwgNzg4NiwgMCwgMzM2LCA0NjUsIDUyNCwgNTI2LCAwLCAwLCAKKyAgICA0MTYsIDc4ODQsIDQ5MCwgMCwgMCwgMCwgMCwgNzc2NCwgMCwgMCwgMCwgMCwgNzc2NiwgMCwgMCwgMCwgMCwgMzQwLCAKKyAgICA3NzY4LCAwLCAwLCAwLCAwLCAzNDQsIDUyOCwgNTMwLCAwLCAwLCAwLCA3NzcwLCAwLCAwLCAwLCAzNDIsIDc3NzQsIDAsIDAsIAorICAgIDAsIDAsIDM0NiwgMzQ4LCAwLCAwLCAwLCA3Nzc2LCAwLCAwLCAwLCAwLCAzNTIsIDAsIDc3NzgsIDAsIDAsIDUzNiwgMzUwLCAKKyAgICAwLCAwLCA3Nzg2LCAwLCAwLCAwLCAwLCAzNTYsIDAsIDAsIDAsIDAsIDAsIDc3ODgsIDAsIDAsIDUzOCwgMzU0LCAwLCAKKyAgICA3NzkyLCAwLCAwLCA3NzkwLCAwLCAwLCAwLCAyMTcsIDIxOCwgMjE5LCAzNjAsIDM2MiwgMzY0LCAwLCAyMjAsIDc5MTAsIAorICAgIDM2NiwgMzY4LCA0NjcsIDUzMiwgNTM0LCAwLCAwLCA0MzEsIDc5MDgsIDc3OTQsIDAsIDAsIDAsIDM3MCwgNzc5OCwgMCwgCisgICAgNzc5NiwgMCwgMCwgMCwgNzgwNCwgMCwgMCwgMCwgMCwgMCwgNzgwNiwgNzgwOCwgNzgxMCwgMzcyLCAwLCAwLCAwLCA3ODE0LCAKKyAgICA3ODEyLCAwLCA3ODE2LCAwLCAwLCA3ODE4LCA3ODIwLCAwLCAwLCA3OTIyLCAyMjEsIDM3NCwgNzkyOCwgNTYyLCAwLCAKKyAgICA3ODIyLCAzNzYsIDc5MjYsIDAsIDAsIDAsIDAsIDc5MjQsIDAsIDAsIDAsIDAsIDAsIDM3NywgNzgyNCwgMCwgMCwgMCwgCisgICAgMzc5LCAwLCAwLCAwLCAwLCAzODEsIDAsIDAsIDAsIDAsIDAsIDc4MjYsIDc4MjgsIDAsIDAsIDAsIDIyNCwgMjI1LCAyMjYsIAorICAgIDIyNywgMjU3LCAyNTksIDU1MSwgMjI4LCA3ODQzLCAyMjksIDAsIDQ2MiwgNTEzLCA1MTUsIDAsIDAsIDAsIDc4NDEsIDAsIAorICAgIDc2ODEsIDAsIDAsIDI2MSwgMCwgNzY4MywgMCwgMCwgMCwgMCwgMCwgMCwgNzY4NSwgNzY4NywgMCwgMCwgMCwgMCwgMjYzLCAKKyAgICAyNjUsIDAsIDAsIDAsIDI2NywgMCwgMCwgMCwgMCwgMjY5LCAwLCAyMzEsIDAsIDAsIDc2OTEsIDAsIDAsIDAsIDAsIDI3MSwgCisgICAgMCwgMCwgMCwgMCwgMCwgNzY5MywgMCwgMCwgMCwgNzY5NywgMCwgNzY5OSwgMCwgMCwgNzY5NSwgMCwgMCwgMCwgMjMyLCAKKyAgICAyMzMsIDIzNCwgNzg2OSwgMjc1LCAyNzcsIDI3OSwgMjM1LCA3ODY3LCAwLCAwLCAyODMsIDUxNywgNTE5LCAwLCAwLCAwLCAKKyAgICA3ODY1LCAwLCAwLCAwLCA1NTMsIDI4MSwgNzcwNSwgMCwgNzcwNywgMCwgMCwgNzcxMSwgMCwgMCwgMCwgMCwgNTAxLCAyODUsIAorICAgIDAsIDc3MTMsIDI4NywgMjg5LCAwLCAwLCAwLCAwLCA0ODcsIDAsIDI5MSwgMCwgMCwgMjkzLCAwLCAwLCAwLCA3NzE1LCAKKyAgICA3NzE5LCAwLCAwLCAwLCA1NDMsIDAsIDAsIDAsIDAsIDAsIDc3MTcsIDAsIDAsIDAsIDc3MjEsIDAsIDAsIDc3MjMsIDAsIAorICAgIDc4MzAsIDAsIDAsIDAsIDIzNiwgMjM3LCAyMzgsIDI5NywgMjk5LCAzMDEsIDAsIDIzOSwgNzg4MSwgMCwgMCwgNDY0LCAKKyAgICA1MjEsIDUyMywgMCwgMCwgMCwgNzg4MywgMCwgMCwgMCwgMCwgMzAzLCAwLCAwLCA3NzI1LCAwLCAwLCAzMDksIDAsIDAsIDAsIAorICAgIDAsIDQ5NiwgMCwgMCwgMCwgNzcyOSwgMCwgMCwgMCwgMCwgMCwgNDg5LCAwLCA3NzMxLCAwLCAwLCAwLCAzMTEsIDAsIDAsIAorICAgIDAsIDAsIDc3MzMsIDAsIDAsIDAsIDAsIDMxNCwgMCwgMzE4LCAwLCAwLCAwLCAwLCAwLCA3NzM1LCAwLCAwLCAwLCAzMTYsIAorICAgIDAsIDc3NDEsIDAsIDAsIDc3MzksIDAsIDAsIDAsIDAsIDc3NDMsIDAsIDAsIDAsIDAsIDc3NDUsIDAsIDAsIDc3NDcsIDAsIAorICAgIDAsIDAsIDAsIDUwNSwgMzI0LCAwLCAyNDEsIDAsIDAsIDc3NDksIDAsIDAsIDAsIDAsIDMyOCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNzc1MSwgMCwgMCwgMCwgMzI2LCAwLCA3NzU1LCAwLCAwLCA3NzUzLCAwLCAwLCAwLCAyNDIsIDI0MywgMjQ0LCAyNDUsIAorICAgIDMzMywgMzM1LCA1NTksIDI0NiwgNzg4NywgMCwgMzM3LCA0NjYsIDUyNSwgNTI3LCAwLCAwLCA0MTcsIDc4ODUsIDAsIDAsIAorICAgIDAsIDAsIDQ5MSwgMCwgMCwgMCwgMCwgNzc2NSwgNzc2NywgMCwgMCwgMCwgMCwgMzQxLCAwLCAwLCAwLCAwLCA3NzY5LCAwLCAKKyAgICAwLCAwLCAwLCAzNDUsIDUyOSwgNTMxLCAwLCAwLCAwLCA3NzcxLCAwLCAwLCAwLCAzNDMsIDAsIDAsIDAsIDAsIDc3NzUsIDAsIAorICAgIDAsIDAsIDAsIDM0NywgMzQ5LCAwLCAwLCAwLCA3Nzc3LCAwLCAwLCAwLCAwLCAzNTMsIDAsIDAsIDAsIDAsIDAsIDc3NzksIAorICAgIDAsIDAsIDUzNywgMzUxLCAwLCAwLCA3Nzg3LCA3ODMxLCAwLCAwLCAwLCAzNTcsIDAsIDc3ODksIDAsIDAsIDUzOSwgMzU1LCAKKyAgICAwLCA3NzkzLCAwLCAwLCA3NzkxLCAwLCAwLCAwLCAyNDksIDI1MCwgMjUxLCAzNjEsIDM2MywgMzY1LCAwLCAyNTIsIDc5MTEsIAorICAgIDM2NywgMzY5LCA0NjgsIDUzMywgNTM1LCAwLCAwLCA0MzIsIDc5MDksIDc3OTUsIDAsIDAsIDAsIDM3MSwgNzc5OSwgMCwgCisgICAgNzc5NywgMCwgMCwgMCwgNzgwNSwgMCwgNzgwNywgMCwgMCwgMCwgMCwgNzgwOSwgNzgxMSwgMzczLCAwLCAwLCAwLCA3ODE1LCAKKyAgICA3ODEzLCAwLCA3ODMyLCAwLCAwLCAwLCA3ODE3LCAwLCAwLCA3ODE5LCA3ODIxLCAwLCAwLCA3OTIzLCAyNTMsIDM3NSwgCisgICAgNzkyOSwgNTYzLCAwLCA3ODIzLCAyNTUsIDc5MjcsIDc4MzMsIDAsIDAsIDAsIDc5MjUsIDAsIDM3OCwgNzgyNSwgMCwgMCwgCisgICAgMCwgMzgwLCAwLCAwLCAwLCAwLCAzODIsIDAsIDc4MjcsIDAsIDAsIDAsIDAsIDc4MjksIDAsIDAsIDAsIDgxNzMsIDkwMSwgCisgICAgMCwgMCwgODEyOSwgMCwgNzg0NiwgNzg0NCwgMCwgNzg1MCwgNzg0OCwgMCwgMCwgMCwgMCwgMCwgNDc4LCAwLCAwLCA1MDYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUwOCwgMCwgMCwgNDgyLCAwLCAwLCA3Njg4LCAwLCAwLCAwLCAwLCA3ODcyLCA3ODcwLCAwLCAKKyAgICA3ODc2LCAwLCAwLCAwLCAwLCA3ODc0LCAwLCAwLCA3NzI2LCAwLCAwLCAwLCAwLCA3ODkwLCA3ODg4LCAwLCA3ODk0LCAwLCAKKyAgICAwLCAwLCAwLCA3ODkyLCAwLCAwLCA3NzU2LCAwLCAwLCA1NTYsIDAsIDAsIDc3NTgsIDAsIDAsIDU1NCwgMCwgMCwgNTEwLCAKKyAgICAwLCAwLCAwLCAwLCA0NzUsIDQ3MSwgMCwgMCwgNDY5LCAwLCAwLCA0NzMsIDAsIDAsIDc4NDcsIDc4NDUsIDAsIDc4NTEsIAorICAgIDc4NDksIDAsIDAsIDAsIDAsIDAsIDQ3OSwgMCwgMCwgNTA3LCAwLCAwLCAwLCAwLCAwLCA1MDksIDAsIDAsIDQ4MywgMCwgMCwgCisgICAgNzY4OSwgMCwgMCwgMCwgMCwgNzg3MywgNzg3MSwgMCwgNzg3NywgMCwgMCwgMCwgMCwgNzg3NSwgMCwgMCwgNzcyNywgMCwgCisgICAgMCwgMCwgMCwgNzg5MSwgNzg4OSwgMCwgNzg5NSwgMCwgMCwgMCwgMCwgNzg5MywgMCwgMCwgNzc1NywgMCwgMCwgNTU3LCAwLCAKKyAgICAwLCA3NzU5LCAwLCAwLCA1NTUsIDAsIDAsIDUxMSwgMCwgMCwgMCwgMCwgNDc2LCA0NzIsIDAsIDAsIDQ3MCwgMCwgMCwgCisgICAgNDc0LCAwLCAwLCA3ODU2LCA3ODU0LCAwLCA3ODYwLCA3ODU4LCAwLCAwLCAwLCAwLCAwLCA3ODU3LCA3ODU1LCAwLCA3ODYxLCAKKyAgICAwLCAwLCAwLCAwLCA3ODU5LCAwLCA3NzAwLCA3NzAyLCAwLCAwLCAwLCAwLCA3NzAxLCA3NzAzLCA3NzYwLCA3NzYyLCAwLCAKKyAgICAwLCAwLCAwLCA3NzYxLCA3NzYzLCAwLCAwLCA3NzgwLCAwLCA3NzgxLCAwLCAwLCAwLCAwLCAwLCA3NzgyLCAwLCA3NzgzLCAKKyAgICAwLCAwLCAwLCAwLCA3ODAwLCAwLCAwLCAwLCAwLCAwLCA3ODAxLCAwLCAwLCAwLCA3ODAyLCAwLCA3ODAzLCAwLCAwLCAwLCAKKyAgICAwLCA3ODM1LCAwLCAwLCAwLCA3OTAwLCA3ODk4LCAwLCA3OTA0LCAwLCAwLCAwLCAwLCA3OTAyLCAwLCAwLCAwLCAwLCAKKyAgICA3OTA2LCA3OTAxLCA3ODk5LCAwLCA3OTA1LCA3OTAzLCAwLCAwLCAwLCAwLCA3OTA3LCAwLCAwLCAwLCAwLCA3OTE0LCAKKyAgICA3OTEyLCAwLCA3OTE4LCAwLCAwLCAwLCAwLCA3OTE2LCAwLCAwLCAwLCAwLCA3OTIwLCA3OTE1LCA3OTEzLCAwLCA3OTE5LCAKKyAgICA3OTE3LCAwLCAwLCAwLCAwLCA3OTIxLCAwLCAwLCAwLCA0OTQsIDAsIDAsIDQ5MiwgMCwgMCwgMCwgMCwgMCwgNDkzLCAwLCAKKyAgICA0ODAsIDAsIDAsIDAsIDAsIDAsIDQ4MSwgMCwgMCwgNzcwOCwgMCwgMCwgMCwgMCwgMCwgNzcwOSwgNTYwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NjEsIDAsIDAsIDAsIDAsIDQ5NSwgMCwgMCwgODEyMiwgOTAyLCAwLCAwLCA4MTIxLCA4MTIwLCA3OTQ0LCAKKyAgICA3OTQ1LCAwLCAwLCAwLCAwLCAwLCA4MTI0LCA4MTM2LCA5MDQsIDAsIDAsIDAsIDAsIDc5NjAsIDc5NjEsIDAsIDAsIDgxMzgsIAorICAgIDkwNSwgNzk3NiwgNzk3NywgMCwgMCwgMCwgMCwgMCwgODE0MCwgODE1NCwgOTA2LCAwLCAwLCA4MTUzLCA4MTUyLCAwLCAKKyAgICA5MzgsIDAsIDAsIDc5OTIsIDc5OTMsIDAsIDAsIDgxODQsIDkwOCwgODAwOCwgODAwOSwgMCwgMCwgMCwgMCwgMCwgODE3MiwgCisgICAgMCwgMCwgODE3MCwgOTEwLCAwLCAwLCA4MTY5LCA4MTY4LCAwLCA5MzksIDAsIDAsIDAsIDgwMjUsIDAsIDAsIDgxODYsIAorICAgIDkxMSwgMCwgMCwgMCwgMCwgODA0MCwgODA0MSwgMCwgODE4OCwgMCwgMCwgMCwgMCwgMCwgODExNiwgMCwgODEzMiwgMCwgMCwgCisgICAgMCwgMCwgODA0OCwgOTQwLCAwLCAwLCA4MTEzLCA4MTEyLCA3OTM2LCA3OTM3LCAwLCAwLCAwLCAwLCA4MTE4LCA4MTE1LCAKKyAgICA4MDUwLCA5NDEsIDAsIDAsIDAsIDAsIDc5NTIsIDc5NTMsIDAsIDAsIDgwNTIsIDk0MiwgNzk2OCwgNzk2OSwgMCwgMCwgMCwgCisgICAgMCwgODEzNCwgODEzMSwgODA1NCwgOTQzLCAwLCAwLCA4MTQ1LCA4MTQ0LCAwLCA5NzAsIDAsIDAsIDc5ODQsIDc5ODUsIAorICAgIDgxNTAsIDAsIDAsIDAsIDAsIDAsIDgwNTYsIDk3MiwgODAwMCwgODAwMSwgMCwgMCwgMCwgMCwgODE2NCwgODE2NSwgMCwgMCwgCisgICAgODA1OCwgOTczLCAwLCAwLCA4MTYxLCA4MTYwLCAwLCA5NzEsIDAsIDAsIDgwMTYsIDgwMTcsIDAsIDAsIDAsIDAsIDgxNjYsIAorICAgIDAsIDgwNjAsIDk3NCwgMCwgMCwgMCwgMCwgODAzMiwgODAzMywgODE4MiwgODE3OSwgMCwgMCwgMCwgMCwgODE0NiwgOTEyLCAKKyAgICAwLCAwLCA4MTUxLCAwLCA4MTYyLCA5NDQsIDAsIDAsIDgxNjcsIDAsIDAsIDAsIDAsIDAsIDAsIDgxODAsIDAsIDk3OSwgMCwgCisgICAgMCwgMCwgMCwgMCwgOTgwLCAwLCAxMDMxLCAwLCAwLCAwLCAxMjMyLCAwLCAxMjM0LCAwLCAwLCAwLCAxMDI3LCAxMDI0LCAwLCAKKyAgICAwLCAwLCAwLCAxMjM4LCAwLCAxMDI1LCAwLCAwLCAwLCAxMjE3LCAwLCAxMjQ0LCAwLCAwLCAwLCAwLCAwLCAxMjQ2LCAwLCAKKyAgICAwLCAxMDM3LCAwLCAwLCAwLCAxMjUwLCAxMDQ5LCAwLCAxMjUyLCAwLCAwLCAwLCAxMDM2LCAwLCAwLCAwLCAxMjU0LCAwLCAKKyAgICAwLCAxMjYyLCAxMDM4LCAwLCAxMjY0LCAwLCAwLCAxMjY2LCAwLCAwLCAxMjY4LCAwLCAwLCAwLCAwLCAwLCAxMjcyLCAwLCAKKyAgICAxMjYwLCAwLCAwLCAwLCAxMjMzLCAwLCAxMjM1LCAwLCAwLCAwLCAxMTA3LCAxMTA0LCAwLCAwLCAwLCAwLCAxMjM5LCAwLCAKKyAgICAxMTA1LCAwLCAwLCAwLCAxMjE4LCAwLCAxMjQ1LCAwLCAwLCAwLCAwLCAwLCAxMjQ3LCAwLCAwLCAxMTE3LCAwLCAwLCAwLCAKKyAgICAxMjUxLCAxMDgxLCAwLCAxMjUzLCAwLCAwLCAwLCAxMTE2LCAwLCAwLCAwLCAxMjU1LCAwLCAwLCAxMjYzLCAxMTE4LCAwLCAKKyAgICAxMjY1LCAwLCAwLCAxMjY3LCAwLCAwLCAxMjY5LCAwLCAwLCAwLCAwLCAwLCAxMjczLCAwLCAxMjYxLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMTExLCAwLCAwLCAxMTQyLCAwLCAxMTQzLCAwLCAwLCAwLCAwLCAxMjQyLCAwLCAwLCAwLCAwLCAwLCAxMjQzLCAwLCAKKyAgICAxMjU4LCAwLCAwLCAwLCAwLCAwLCAxMjU5LCAxNTcwLCAxNTcxLCAxNTczLCAwLCAwLCAwLCAwLCAxNTcyLCAwLCAxNTc0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNzMwLCAwLCAxNzQ3LCAwLCAwLCAwLCAwLCAwLCAxNzI4LCAwLCAwLCAwLCAyMzQ1LCAwLCAKKyAgICAyMzUzLCAwLCAwLCAwLCAwLCAwLCAyMzU2LCAwLCAwLCAyNTA3LCAyNTA4LCAwLCAwLCAyODkxLCAyODg4LCAyODkyLCAwLCAKKyAgICAwLCAwLCAyOTY0LCAwLCAwLCAwLCAwLCAzMDE4LCAzMDIwLCAwLCAwLCAwLCAwLCAzMDE5LCAwLCAwLCAwLCAzMTQ0LCAwLCAKKyAgICAwLCAwLCAzMjY0LCAzMjc0LCAzMjcxLCAzMjcyLCAwLCAwLCAwLCAwLCAzMjc1LCAwLCAwLCAwLCAzNDAyLCAzNDA0LCAwLCAKKyAgICAwLCAwLCAwLCAzNDAzLCAwLCAwLCAwLCAzNTQ2LCAzNTQ4LCAzNTUwLCAwLCAwLCAwLCAzNTQ5LCA0MTM0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA2OTE4LCAwLCA2OTIwLCAwLCAwLCAwLCAwLCAwLCA2OTIyLCAwLCA2OTI0LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2OTI2LCAwLCA2OTMwLCAwLCAwLCAwLCAwLCAwLCA2OTcxLCAwLCA2OTczLCAwLCAwLCAwLCAwLCAwLCA2OTc2LCAwLCAKKyAgICA2OTc3LCAwLCAwLCAwLCAwLCAwLCA2OTc5LCAwLCAwLCA3NzM2LCAwLCA3NzM3LCAwLCAwLCAwLCAwLCAwLCA3NzcyLCAwLCAKKyAgICA3NzczLCAwLCAwLCAwLCA3Nzg0LCAwLCAwLCAwLCAwLCAwLCA3Nzg1LCAwLCA3ODUyLCAwLCAwLCA3ODYyLCAwLCAwLCAKKyAgICA3ODUzLCAwLCAwLCA3ODYzLCAwLCAwLCA3ODc4LCAwLCAwLCAwLCAwLCAwLCA3ODc5LCAwLCA3ODk2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCA3ODk3LCAwLCAwLCAwLCA3OTM4LCA3OTQwLCAwLCAwLCA3OTQyLCA4MDY0LCA3OTM5LCA3OTQxLCAwLCAwLCA3OTQzLCAKKyAgICA4MDY1LCAwLCAwLCAwLCAwLCAwLCA4MDY2LCAwLCA4MDY3LCAwLCAwLCAwLCAwLCAwLCA4MDY4LCAwLCA4MDY5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCA4MDcwLCAwLCA4MDcxLCAwLCAwLCAwLCAwLCA3OTQ2LCA3OTQ4LCAwLCAwLCA3OTUwLCA4MDcyLCA3OTQ3LCAKKyAgICA3OTQ5LCAwLCAwLCA3OTUxLCA4MDczLCAwLCAwLCAwLCAwLCAwLCA4MDc0LCAwLCA4MDc1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4MDc2LCAwLCA4MDc3LCAwLCAwLCAwLCAwLCAwLCA4MDc4LCAwLCA4MDc5LCAwLCAwLCAwLCAwLCA3OTU0LCA3OTU2LCAKKyAgICA3OTU1LCA3OTU3LCAwLCAwLCAwLCAwLCA3OTYyLCA3OTY0LCA3OTYzLCA3OTY1LCAwLCAwLCAwLCAwLCA3OTcwLCA3OTcyLCAKKyAgICAwLCAwLCA3OTc0LCA4MDgwLCA3OTcxLCA3OTczLCAwLCAwLCA3OTc1LCA4MDgxLCAwLCAwLCAwLCAwLCAwLCA4MDgyLCAwLCAKKyAgICA4MDgzLCAwLCAwLCAwLCAwLCAwLCA4MDg0LCAwLCA4MDg1LCAwLCAwLCAwLCAwLCAwLCA4MDg2LCAwLCA4MDg3LCAwLCAwLCAKKyAgICAwLCAwLCA3OTc4LCA3OTgwLCAwLCAwLCA3OTgyLCA4MDg4LCA3OTc5LCA3OTgxLCAwLCAwLCA3OTgzLCA4MDg5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCA4MDkwLCAwLCA4MDkxLCAwLCAwLCAwLCAwLCAwLCA4MDkyLCAwLCA4MDkzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4MDk0LCAwLCA4MDk1LCAwLCAwLCAwLCAwLCA3OTg2LCA3OTg4LCAwLCAwLCA3OTkwLCAwLCA3OTg3LCA3OTg5LCAwLCAwLCAKKyAgICA3OTkxLCAwLCAwLCAwLCAwLCAwLCA3OTk0LCA3OTk2LCAwLCAwLCA3OTk4LCAwLCA3OTk1LCA3OTk3LCAwLCAwLCA3OTk5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA4MDAyLCA4MDA0LCA4MDAzLCA4MDA1LCAwLCAwLCAwLCAwLCA4MDEwLCA4MDEyLCA4MDExLCAKKyAgICA4MDEzLCAwLCAwLCAwLCAwLCA4MDE4LCA4MDIwLCAwLCAwLCA4MDIyLCAwLCA4MDE5LCA4MDIxLCAwLCAwLCA4MDIzLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA4MDI3LCA4MDI5LCAwLCAwLCA4MDMxLCAwLCA4MDM0LCA4MDM2LCAwLCAwLCA4MDM4LCA4MDk2LCAwLCAKKyAgICAwLCAwLCAwLCA4MDM1LCA4MDM3LCAwLCAwLCA4MDM5LCA4MDk3LCAwLCA4MDk4LCAwLCAwLCAwLCAwLCAwLCA4MDk5LCAwLCAKKyAgICA4MTAwLCAwLCAwLCAwLCAwLCAwLCA4MTAxLCAwLCA4MTAyLCAwLCAwLCAwLCAwLCAwLCA4MTAzLCA4MDQyLCA4MDQ0LCAwLCAKKyAgICAwLCA4MDQ2LCA4MTA0LCAwLCAwLCAwLCAwLCA4MDQzLCA4MDQ1LCAwLCAwLCA4MDQ3LCA4MTA1LCAwLCA4MTA2LCAwLCAwLCAKKyAgICAwLCAwLCAwLCA4MTA3LCAwLCA4MTA4LCAwLCAwLCAwLCAwLCAwLCA4MTA5LCAwLCA4MTEwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4MTExLCAwLCA4MTE0LCAwLCAwLCAwLCAwLCAwLCA4MTMwLCAwLCA4MTc4LCAwLCAwLCAwLCAwLCAwLCA4MTE5LCA4MTQxLCAKKyAgICA4MTQyLCAwLCAwLCA4MTQzLCAwLCAwLCAwLCAwLCAwLCAwLCA4MTM1LCAwLCA4MTgzLCAwLCAwLCAwLCAwLCA4MTU3LCAKKyAgICA4MTU4LCAwLCAwLCA4MTU5LCAwLCAwLCAwLCAwLCA4NjAyLCAwLCA4NjAzLCAwLCAwLCAwLCAwLCAwLCA4NjIyLCAwLCAKKyAgICA4NjUzLCAwLCAwLCAwLCAwLCAwLCA4NjU1LCAwLCA4NjU0LCAwLCAwLCAwLCAwLCAwLCA4NzA4LCAwLCA4NzEzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA4NzE2LCAwLCA4NzQwLCAwLCAwLCAwLCAwLCAwLCA4NzQyLCAwLCA4NzY5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4NzcyLCAwLCA4Nzc1LCAwLCAwLCAwLCAwLCAwLCA4Nzc3LCAwLCA4ODEzLCAwLCAwLCAwLCAwLCAwLCA4ODAyLCAwLCAKKyAgICA4ODE2LCAwLCAwLCAwLCAwLCAwLCA4ODE3LCAwLCA4ODIwLCAwLCAwLCAwLCAwLCAwLCA4ODIxLCAwLCA4ODI0LCAwLCAwLCAKKyAgICAwLCAwLCAwLCA4ODI1LCAwLCA4ODMyLCAwLCAwLCAwLCAwLCAwLCA4ODMzLCAwLCA4OTI4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4OTI5LCAwLCA4ODM2LCAwLCAwLCAwLCAwLCAwLCA4ODM3LCAwLCA4ODQwLCAwLCAwLCAwLCAwLCAwLCA4ODQxLCAwLCAKKyAgICA4OTMwLCAwLCAwLCAwLCAwLCAwLCA4OTMxLCAwLCA4ODc2LCAwLCAwLCAwLCAwLCAwLCA4ODc3LCAwLCA4ODc4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCA4ODc5LCAwLCA4OTM4LCAwLCAwLCAwLCAwLCAwLCA4OTM5LCAwLCA4OTQwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4OTQxLCAwLCAwLCAxMjQzNiwgMCwgMTIzNjQsIDAsIDAsIDAsIDAsIDAsIDEyMzY2LCAwLCAxMjM2OCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTIzNzAsIDAsIDEyMzcyLCAwLCAwLCAwLCAwLCAwLCAxMjM3NCwgMCwgMTIzNzYsIDAsIDAsIDAsIDAsIDAsIDEyMzc4LCAKKyAgICAwLCAxMjM4MCwgMCwgMCwgMCwgMCwgMCwgMTIzODIsIDAsIDEyMzg0LCAwLCAwLCAwLCAwLCAwLCAxMjM4NiwgMCwgMTIzODksIAorICAgIDAsIDAsIDAsIDAsIDAsIDEyMzkxLCAwLCAxMjM5MywgMCwgMCwgMCwgMCwgMCwgMTI0MDAsIDEyNDAxLCAxMjQwMywgCisgICAgMTI0MDQsIDAsIDAsIDAsIDAsIDEyNDA2LCAxMjQwNywgMTI0MDksIDEyNDEwLCAwLCAwLCAwLCAwLCAxMjQxMiwgMTI0MTMsIAorICAgIDEyNDQ2LCAwLCAwLCAwLCAwLCAwLCAxMjUzMiwgMCwgMTI0NjAsIDAsIDAsIDAsIDAsIDAsIDEyNDYyLCAwLCAxMjQ2NCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTI0NjYsIDAsIDEyNDY4LCAwLCAwLCAwLCAwLCAwLCAxMjQ3MCwgMCwgMTI0NzIsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEyNDc0LCAwLCAxMjQ3NiwgMCwgMCwgMCwgMCwgMCwgMTI0NzgsIDAsIDEyNDgwLCAwLCAwLCAwLCAwLCAwLCAxMjQ4MiwgCisgICAgMCwgMTI0ODUsIDAsIDAsIDAsIDAsIDAsIDEyNDg3LCAwLCAxMjQ4OSwgMCwgMCwgMCwgMCwgMCwgMTI0OTYsIDEyNDk3LCAKKyAgICAxMjQ5OSwgMTI1MDAsIDAsIDAsIDAsIDAsIDEyNTAyLCAxMjUwMywgMTI1MDUsIDEyNTA2LCAwLCAwLCAwLCAwLCAxMjUwOCwgCisgICAgMTI1MDksIDEyNTM1LCAwLCAwLCAwLCAwLCAwLCAxMjUzNiwgMCwgMTI1MzcsIDAsIDAsIDAsIDAsIDAsIDEyNTM4LCAwLCAKKyAgICAxMjU0MiwgMCwgMCwgMCwgNjk3ODYsIDAsIDAsIDAsIDAsIDAsIDY5Nzg4LCAwLCA2OTgwMywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjk5MzQsIDAsIDY5OTM1LCAwLCAwLCA3MDQ3NSwgNzA0NzYsIDAsIDAsIDcwODQ0LCA3MDg0MywgNzA4NDYsIDAsIDAsIAorICAgIDcxMDk4LCAwLCAwLCAwLCAwLCAwLCA3MTA5OSwgCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhbmdlX3JlY29yZCBjaGFuZ2VfcmVjb3Jkc18zXzJfMFtdID0gewpAQCAtNTE4Myw2ICs1Njk2LDcgQEAKIAl7IDI1NSwgNywgNywgMjU1LCAwIH0sCiAJeyAyNTUsIDcsIDgsIDI1NSwgMCB9LAogCXsgMjU1LCA3LCA5LCAyNTUsIDAgfSwKKwl7IDI1NSwgMTksIDI1NSwgMjU1LCAwIH0sCiAJeyAxLCA1LCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAxMCwgMjU1LCAyNTUsIDAgfSwKIAl7IDE4LCAyNTUsIDI1NSwgMjU1LCAwIH0sCkBAIC01MjA0LDc5ICs1NzE4LDgwIEBACiAJeyAyNTUsIDIwLCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsxNiB9LAogCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsyMCB9LAotCXsgMjU1LCAxOSwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgMTksIDI1NSwgMjU1LCAtMSB9LAogCXsgMSwgMjU1LCAyNTUsIDAsIDAgfSwKIH07CiBzdGF0aWMgdW5zaWduZWQgY2hhciBjaGFuZ2VzXzNfMl8wX2luZGV4W10gPSB7CiAgICAgMCwgMSwgMiwgMiwgMywgNCwgNSwgNiwgMiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgCi0gICAgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMiwgMiwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAKLSAgICAzNiwgMiwgMiwgMiwgMzcsIDM4LCAyLCAzOSwgMiwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIAotICAgIDUwLCAyLCA1MSwgMiwgMiwgNTIsIDUzLCA1NCwgNTUsIDU2LCAyLCA1NywgNTgsIDU5LCA2MCwgMiwgMiwgNjEsIDYyLCA2MywgCi0gICAgNjQsIDY1LCA2NSwgMiwgMiwgMiwgMiwgNjYsIDIsIDY3LCA2OCwgNjksIDcwLCA3MSwgMiwgMiwgMiwgNzIsIDczLCA3NCwgCi0gICAgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDIsIDIsIDIsIDIsIDIsIDIsIDgyLCAyLCAyLCAyLCAyLCAyLCA4MywgMiwgCisgICAgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDIsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAKKyAgICAzNiwgMzcsIDIsIDIsIDIsIDM4LCAzOSwgMiwgNDAsIDIsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIAorICAgIDUwLCA1MSwgMiwgNTIsIDIsIDIsIDUzLCA1NCwgNTUsIDU2LCA1NywgMiwgNTgsIDU5LCA2MCwgNjEsIDIsIDIsIDYyLCA2MywgCisgICAgNjQsIDY1LCA2NiwgNjYsIDIsIDIsIDIsIDIsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCAyLCAyLCAyLCA3NCwgNzUsIAorICAgIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgMiwgMiwgMiwgMiwgMiwgMiwgODQsIDIsIDIsIDIsIDIsIDIsIDg1LCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NCwgMiwgODUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg2LCAKLSAgICA4NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg5LCA5MCwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODYsIDIsIDg3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICA4OCwgODksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MSwgCisgICAgOTIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTQsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NiwgOTcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk4LCA1MCwgNTAsIAorICAgIDk5LCAxMDAsIDUwLCAxMDEsIDEwMiwgMTAzLCAxMDQsIDEwNSwgMTA2LCAxMDcsIDEwOCwgMTA5LCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk0LCA5NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTYsIDQ5LCA0OSwgCi0gICAgOTcsIDk4LCA0OSwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxMTAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDEwOCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMiwgMiwgMTE3LCAxMTgsIDExOSwgMiwgMTIwLCAKKyAgICAxMjEsIDEyMiwgMTIzLCAxMjQsIDEyNSwgMiwgMTI2LCAxMjcsIDEyOCwgMTI5LCAxMzAsIDEzMSwgMiwgNTAsIDUwLCAxMzIsIAorICAgIDIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMiwgMiwgMTQzLCAyLCAyLCAyLCAKKyAgICAxNDQsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDIsIDIsIDE1MSwgMiwgMTUyLCAxNTMsIDE1NCwgMTU1LCAyLCAKKyAgICAyLCAxNTYsIDIsIDIsIDIsIDE1NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDE1OCwgMTU5LCA1MCwgMTYwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE2MSwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMTA5LCAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMiwgMiwgMiwgMTE1LCAxMTYsIDIsIDExNywgMTE4LCAKLSAgICAxMTksIDEyMCwgMTIxLCAxMjIsIDIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAyLCAyLCAyLCAyLCAyLCAyLCAxMjgsIDIsIAotICAgIDEyOSwgMTMwLCAxMzEsIDIsIDEzMiwgMiwgMTMzLCAyLCAyLCAyLCAxMzQsIDIsIDIsIDIsIDEzNSwgMTM2LCAxMzcsIDEzOCwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTM5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAxNDAsIDIsIDE0MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCAxNDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDUwLCA1MCwgNTAsIDUwLCAxNjIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDQ5LCA0OSwgNDksIDQ5LCAxNDMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDE0NCwgMTQ1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgMTYzLCAxNjQsIDE2NSwgMTY2LCAyLCAyLCAyLCAyLCAyLCAyLCAxNjcsIDE2OCwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTQ2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNDcsIDIsIDE0OCwgMiwgMTQ5LCAyLCAyLCAxNTAsIDIsIDIsIDIsIDE1MSwgMTUyLCAKLSAgICAxNTMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE1NCwgMTU1LCAKLSAgICAyLCAyLCAxNTYsIDE1NywgMTU4LCAxNTksIDE2MCwgMiwgMTYxLCAxNjIsIDE2MywgMTY0LCAxNjUsIDE2NiwgMTY3LCAxNDgsIAotICAgIDE2OCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTY5LCAxNzAsIDkzLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4MiwgMTcxLCAyLCAxNzIsIDE3MywgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTY5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzAsIDE3MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTc0LCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE3NiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMTcyLCAxNzMsIDE3NCwgMiwgMTc1LCAyLCAyLCAxNzYsIDIsIDIsIDIsIDE3NywgMTc4LCAxNzksIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgMTgwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgMTgxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxODIsIAorICAgIDE4MywgMiwgMiwgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDIsIDUwLCA1MCwgNTAsIDUwLCAxODksIDE5MCwgNTAsIDE5MSwgCisgICAgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTk4LCAKKyAgICAxOTksIDk1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NCwgMjAwLCAyLCAyMDEsIAorICAgIDIwMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMjAzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIwNSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMTc3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMTc4LCA0OSwgMTc5LCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDIwNywgNTAsIDIwOCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAyMDksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwMywgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMTc0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKQEAgLTU1MTEsNyArNjAyNiw3IEBACiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNDksIDE4MCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDIxMCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCkBAIC01NTc1LDcgKzYwOTAsNyBAQAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGNoYXIgY2hhbmdlc18zXzJfMF9kYXRhW10gPSB7CkBAIC01NjExLDcgKzYxMjYsNyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDEwLCAwLCA5LCA5LCAwLCAwLCAwLCA5LCA5LCAKLSAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTU2MjMsMTYgKzYxMzgsMTYgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCiAgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC01NjYwLDE2ICs2MTc1LDE2IEBACiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC01Njg1LDcgKzYyMDAsNyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNTY5Niw4MjcgKzYyMTEsMzM4IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCA5LCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCi0gICAgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjIsIDIzLCAKLSAgICAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMSwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCA0LCAwLCAwLCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCAxLCAxLCAwLCAwLCAwLCAKLSAgICA0LCAzNSwgOCwgNiwgNywgMzYsIDM3LCAzOCwgMzksIDQwLCA0MSwgMSwgMSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDUsIDQ2LCAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgCi0gICAgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMTksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgCisgICAgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgCisgICAgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgCisgICAgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgCisgICAgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgCisgICAgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzIsIDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAzNiwgNCwgMCwgMCwgCisgICAgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgMSwgMSwgMCwgMCwgMCwgNCwgMzYsIDgsIDYsIDcsIDM3LCAzOCwgMzksIDQwLCAKKyAgICA0MSwgNDIsIDEsIDEsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUsIDQ1LCA0NSwgNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2LCA0NywgMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMSwgMSwgMjEsIDIxLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAxLCAwLCAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQsIDE0LCAxNCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCAKLSAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAKLSAgICAwLCAwLCAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDksIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDksIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIAotICAgIDksIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIAotICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNjUyOCwyNiArNjU1NCw2NzYgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIAorICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDE5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAxLCAxLCAyMSwgMjEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDEsIDAsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNCwgMTQsIDE0LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDksIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDksIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDksIDksIDAsIDAsIDksIDksIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgOSwgMCwgOSwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogfTsKIAogc3RhdGljIGNvbnN0IGNoYW5nZV9yZWNvcmQqIGdldF9jaGFuZ2VfM18yXzAoUHlfVUNTNCBuKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oIGIvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oCmluZGV4IDdjY2IxMjYuLmQwZjljYjQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaAorKysgYi9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmgKQEAgLTQsMjQ5ICs0LDI2NSBAQAogCiAvKiBsZXhpY29uICovCiBzdGF0aWMgdW5zaWduZWQgY2hhciBsZXhpY29uW10gPSB7Ci0gICAgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDg3LCA3MywgODQsIDIwMCwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzYsIAotICAgIDE5NywgODMsIDc3LCA2NSwgNzYsIDIwNCwgODMsIDczLCA3MSwgMjA2LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCAyMDQsIAotICAgIDc2LCA2NSwgODQsIDczLCAyMDYsIDg5LCAyMDEsIDY1LCA4MiwgNjUsIDY2LCA3MywgMTk1LCA2NywgNzQsIDIwMywgNzcsIAotICAgIDY1LCA4NCwgNzIsIDY5LCA3NywgNjUsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3MSwgODksIDgwLCA4NCwgNzMsIDY1LCAKLSAgICAyMDYsIDcyLCA3MywgNjksIDgyLCA3OSwgNzEsIDc2LCA4OSwgODAsIDIwMCwgNjcsIDc5LCA3NywgODAsIDY1LCA4NCwgNzMsIAotICAgIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA2NywgODUsIDc4LCA2OSwgNzMsIDcwLCA3OSwgODIsIDIwNSwgODMsIDg5LCA3NywgCi0gICAgNjYsIDc5LCAyMDQsIDcwLCA3OSwgODIsIDc3LCAxMjgsIDY3LCA2NSwgNzgsIDY1LCA2OCwgNzMsIDY1LCAyMDYsIDgzLCAKLSAgICA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCA2NywgMjExLCA2NiwgNjUsIDc3LCA4NSwgMjA1LCA2OCwgNzMsIDcxLCA3MywgCi0gICAgMjEyLCA2NSwgNzgsIDE5NiwgNjYsIDc5LCA3NiwgMTk2LCA3MiwgNjUsIDc4LCA3MSwgODUsIDIwNCwgODYsIDc5LCA4NywgCi0gICAgNjksIDIwNCwgNzEsIDgyLCA2OSwgNjksIDIwMywgNzYsIDczLCA3MSwgNjUsIDg0LCA4NSwgODIsIDE5NywgNzcsIDg1LCAKLSAgICA4MywgNzMsIDY3LCA2NSwgMjA0LCA2OSwgODQsIDcyLCA3MywgNzksIDgwLCA3MywgMTk1LCA4NCwgNzMsIDc3LCA2OSwgCi0gICAgMjExLCA3MCwgNzksIDIxMCwgNzMsIDg0LCA2NSwgNzYsIDczLCAxOTUsIDY3LCA4OSwgODIsIDczLCA3NiwgNzYsIDczLCAKLSAgICAxOTUsIDgyLCA2NSwgNjgsIDczLCA2NywgNjUsIDIwNCwgODMsIDY1LCA3OCwgODMsIDQ1LCA4MywgNjksIDgyLCA3MywgCi0gICAgMTk4LCA4NCwgNjUsIDc3LCA3MywgMjA0LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCAxOTYsIDY3LCA3OSwgNzcsIDY2LCAKLSAgICA3MywgNzgsIDczLCA3OCwgMTk5LCA4NCwgNjUsIDIwMSwgNzAsIDczLCA3OCwgNjUsIDIwNCwgODYsIDY1LCAyMDEsIDgzLCAKLSAgICA4MSwgODUsIDY1LCA4MiwgMTk3LCA3NiwgNjksIDcwLCAyMTIsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDg2LCA2NSwgODIsIAotICAgIDczLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NiwgODIsIDY1LCA3MywgNzYsIDc2LCAxOTcsIDgwLCA2NSwgODQsIDg0LCA2OSwgCi0gICAgODIsIDIwNiwgNjUsIDY2LCA3OSwgODYsIDY5LCAxMjgsIDY2LCA4OSwgOTAsIDY1LCA3OCwgODQsIDczLCA3OCwgMTk3LCAKLSAgICA4MywgNzMsIDcxLCA3OCwgMTI4LCA2NiwgNjksIDc2LCA3OSwgODcsIDEyOCwgNjgsIDc5LCA4NSwgNjYsIDc2LCAxOTcsIAotICAgIDczLCA4MywgNzksIDc2LCA2NSwgODQsIDY5LCAxOTYsIDc4LCA4NSwgNzcsIDY2LCA2OSwgMjEwLCA3NSwgNjUsIDg0LCA2NSwgCi0gICAgNzUsIDY1LCA3OCwgMTkzLCAxOTQsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCAyMTAsIDY4LCA3OSwgMjEyLCA3NSwgCi0gICAgNjUsIDc4LCA3MSwgODgsIDIwMSwgNjUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDg0LCA3MywgNjYsIDY5LCAKLSAgICA4NCwgNjUsIDIwNiwgNzksIDE5OCwgNzMsIDc4LCA3MywgODQsIDczLCA2NSwgMjA0LCA3NywgNjksIDY5LCAyMDUsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDc3LCA4OSwgNjUsIDc4LCA3NywgNjUsIDIxMCwgODUsIDEyOCwgNzUsIAotICAgIDcyLCA3NywgNjksIDIxMCwgODcsIDcyLCA3MywgODQsIDE5NywgNjUsIDY2LCA3OSwgODYsIDE5NywgNjcsIDY1LCA4MiwgCi0gICAgODIsIDczLCA2OSwgMjEwLCA3MywgMTI4LCA2NSwgODIsIDgyLCA3OSwgODcsIDEyOCwgODksIDY5LCAyMDAsIDc5LCAxMjgsIAotICAgIDc3LCA2NSwgODIsIDc1LCAxMjgsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDY3LCA3OSwgODAsIDg0LCA3MywgMTk1LCA4MCwgCi0gICAgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTcsIDc3LCA3OSwgNzgsIDcxLCA3OSwgNzYsIDczLCA2NSwgMjA2LCA2OCwgNjksIDg2LCAKLSAgICA2NSwgNzgsIDY1LCA3MSwgNjUsIDgyLCAyMDEsIDY2LCA3NiwgNjUsIDY3LCAyMDMsIDg0LCA3MywgNzYsIDE5NywgODMsIAotICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgOTAsIDY5LCAKLSAgICAxOTYsIDg0LCA3MiwgNjUsIDIwNSwgNzQsIDc5LCA3OCwgNzEsIDgzLCA2OSwgNzksIDc4LCAxOTksIDgzLCA4NCwgODIsIAotICAgIDc5LCA3NSwgNjksIDEyOCwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgMTk2LCA2NiwgNzksIDIxNiwgNzIsIDY5LCA2NiwgCi0gICAgODIsIDY5LCAyMTUsIDc3LCA3MywgNjUsIDIwNywgODAsIDc2LCA4NSwgMjExLCA4MiwgNzMsIDcxLCA3MiwgODQsIDg3LCAKLSAgICA2NSwgODIsIDY4LCAyMTEsIDcxLCA2OSwgNzksIDgyLCA3MSwgNzMsIDY1LCAyMDYsIDY4LCA4MiwgNjUsIDg3LCA3MywgNzgsIAotICAgIDcxLCAyMTEsIDY3LCA3MiwgNzksIDgzLCA2OSwgNzksIDc4LCAxOTksIDcyLCA2NSwgNzYsIDcwLCA4NywgNzMsIDY4LCA4NCwgCi0gICAgMjAwLCA2NiwgNjUsIDc2LCA3MywgNzgsIDY5LCA4MywgMTk3LCA3MiwgNzksIDc5LCA3NSwgMTI4LCAyMTMsIDg0LCA4NywgCi0gICAgNzksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk2LCAKLSAgICA2NSwgNzYsIDY3LCA3MiwgNjksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDY1LCA3NiwgNjksIDE5OCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgNzksIDEyOCwgODQsIDg3LCAyMDcsIAotICAgIDcyLCA2OSwgNjUsIDg2LCAyMTcsIDc5LCA4NiwgNjksIDIxMCwgNjcsIDc5LCA3OCwgODMsIDc5LCA3OCwgNjUsIDc4LCAKLSAgICAyMTIsIDY2LCA4MiwgNjUsIDcyLCA3NywgMjAxLCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODUsIDIwOCwgNzYsIDc5LCAKLSAgICAyMTUsIDcyLCA2NSwgMjAwLCA3OSwgNzgsIDE5NywgNjgsIDc5LCA4NywgMjA2LCA3MiwgNzMsIDcxLCAyMDAsIDcwLCA4NSwgCi0gICAgNzYsIDc2LCA4NywgNzMsIDY4LCA4NCwgMjAwLCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgMTI4LCA2OSwgODEsIDg1LCAKLSAgICA2NSwgMjA0LCA4NCwgNjUsIDE5OSwgNjYsIDY1LCA4MiwgMTI4LCA2OCwgNzksIDc3LCA3MywgNzgsIDIwNywgNzgsIDg1LCAKLSAgICA3NywgNjksIDgyLCA3MywgMTk1LCA3MCwgODIsIDY1LCA3NSwgODQsIDg1LCAyMTAsIDg0LCA3MiwgODIsIDY5LCAxOTcsIAotICAgIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgMjEwLCA3NywgNjUsIDc2LCA2NSwgODksIDY1LCA3NiwgNjUsIDIwNSwgCi0gICAgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk1LCA4NCwgNzksIDc4LCAxOTcsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCAKLSAgICA4MywgODQsIDgyLCA4NSwgNjcsIDIwMywgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDcyLCA3MywgODIsIAotICAgIDY1LCA3MSwgNjUsIDc4LCAxOTMsIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA3NCwgODUsIDc4LCA3MSwgODMsIDY5LCA3OSwgCi0gICAgNzgsIDE5OSwgNzEsIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDg0LCA3MywgMTk1LCA2NiwgNjksIDc4LCA3MSwgNjUsIDc2LCAKLSAgICAyMDEsIDc3LCA2OSwgNjgsIDczLCA2NSwgMjA0LCA4NCwgNjksIDc2LCA4NSwgNzEsIDIxMywgODYsIDc5LCA2NywgNjUsIAotICAgIDc2LCA3MywgMTk1LCA2NSwgODIsIDc3LCA2OSwgNzgsIDczLCA2NSwgMjA2LCA3NCwgNjksIDY5LCAyMDUsIDc4LCA2OSwgCi0gICAgNzEsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NCwgNjUsIDg2LCAKLSAgICA2NSwgNzgsIDY5LCA4MywgMTk3LCA3OSwgODIsIDczLCA4OSwgMTkzLCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODcsIAotICAgIDY5LCA4MywgODQsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDcyLCA2NSwgMTI4LCA3MiwgCi0gICAgNjUsIDc2LCAxOTgsIDc3LCA2NSwgODIsIDIwMywgNzUsIDY1LCA3OCwgNzgsIDY1LCA2OCwgMTkzLCA3OCwgNjksIDIxNSwgCi0gICAgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTkzLCA4NCwgNzIsIDY1LCAyMDEsIDY3LCA3MiwgNjksIDgyLCA3OSwgNzUsIDY5LCAKLSAgICAxOTcsIDY4LCA3OSwgODQsIDIxMSwgNzEsIDg1LCA3NCwgNjUsIDgyLCA2NSwgODQsIDIwMSwgNjcsIDcyLCA2NSwgMjA1LCAKLSAgICA3NiwgODUsIDE5NywgODMsIDcyLCA2NSwgODIsIDY1LCA2OCwgMTkzLCA4MywgNzMsIDc4LCA3MiwgNjUsIDc2LCAxOTMsIAotICAgIDc1LCA2NSwgMTI4LCA4MiwgODUsIDc4LCA3MywgMTk1LCA4MywgNjUsIDg1LCA4MiwgNjUsIDgzLCA3MiwgODQsIDgyLCAKLSAgICAxOTMsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzEsIDgyLCA2NSwgMjA1LCA2OCwgNjksIDgzLCA2OSwgODIsIDY5LCAyMTIsIAotICAgIDcyLCA2NSwgNzcsIDkwLCAxOTMsIDgzLCA4OSwgODIsIDczLCA2NSwgMTk1LCA4NCwgNzMsIDc2LCA2OCwgNjksIDEyOCwgCi0gICAgNzEsIDg1LCA4MiwgNzcsIDg1LCA3NSwgNzIsIDIwMSwgNzcsIDY1LCAxMjgsIDc3LCA2NSwgODksIDY5LCAyMDMsIDc3LCAKLSAgICA2OSwgNjksIDg0LCA2OSwgMjAxLCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MCwgNzMsIDg2LCA2OSwgCi0gICAgMTI4LCA4MCwgNjUsIDEyOCwgODksIDY1LCAxMjgsIDc2LCA3MywgNzEsIDcyLCAyMTIsIDgzLCA3MywgODgsIDEyOCwgNjksIAotICAgIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc2LCA2OSwgODAsIDY3LCA3MiwgMTkzLCA3OCwgNjUsIDEyOCwgODMsIDY5LCA4NiwgCi0gICAgNjksIDc4LCAxMjgsIDc2LCA3OSwgNzgsIDE5OSwgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDg1LCA4MiwgNzUsIDczLCAKLSAgICAxOTUsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDIwNCwgNzksIDgwLCA2OSwgMjA2LCA4MiwgNjUsIAotICAgIDEyOCwgODMsIDY1LCAxMjgsIDgzLCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA4NiwgNzMsIDY5LCAyMTIsIAotICAgIDc2LCA2NSwgMjA3LCA5MCwgOTAsIDg5LCA4OCwgMTI4LCA5MCwgOTAsIDg5LCA4NCwgMTI4LCA5MCwgOTAsIDg5LCA4MiwgCi0gICAgODgsIDEyOCwgOTAsIDkwLCA4OSwgODIsIDEyOCwgOTAsIDkwLCA4OSwgODAsIDEyOCwgOTAsIDkwLCA4OSwgNjUsIDEyOCwgCi0gICAgOTAsIDkwLCA4OSwgMTI4LCA5MCwgOTAsIDg1LCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgODgsIDEyOCwgOTAsIDkwLCAKLSAgICA4NSwgODIsIDEyOCwgOTAsIDkwLCA4NSwgODAsIDEyOCwgOTAsIDkwLCA4NSwgMTI4LCA5MCwgOTAsIDgzLCA4OSwgNjUsIAotICAgIDEyOCwgOTAsIDkwLCA4MywgNjUsIDEyOCwgOTAsIDkwLCA3OSwgODgsIDEyOCwgOTAsIDkwLCA3OSwgODAsIDEyOCwgOTAsIAotICAgIDkwLCA3OSwgMTI4LCA5MCwgOTAsIDczLCA4OCwgMTI4LCA5MCwgOTAsIDczLCA4NCwgMTI4LCA5MCwgOTAsIDczLCA4MCwgCi0gICAgMTI4LCA5MCwgOTAsIDczLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA3MywgNjksIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCAKLSAgICA4MCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgMTI4LCA5MCwgOTAsIDczLCAxMjgsIDkwLCA5MCwgNjksIDg4LCAxMjgsIDkwLCAKLSAgICA5MCwgNjksIDgwLCAxMjgsIDkwLCA5MCwgNjksIDY5LCAxMjgsIDkwLCA5MCwgNjksIDEyOCwgOTAsIDkwLCA2NSwgODgsIAotICAgIDEyOCwgOTAsIDkwLCA2NSwgODQsIDEyOCwgOTAsIDkwLCA2NSwgODAsIDEyOCwgOTAsIDkwLCA2NSwgNjUsIDEyOCwgOTAsIAotICAgIDkwLCA2NSwgMTI4LCA5MCwgODksIDcxLCA3OSwgODMsIDEyOCwgOTAsIDg3LCA4MywgODAsIDEyOCwgOTAsIDg3LCA3OCwgCi0gICAgNzQsIDEyOCwgOTAsIDg3LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc0LCAxMjgsIDkwLCA4NywgNjUsIDgyLCAKKyAgICA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgODMsIDczLCA3MSwgMjA2LCA4NywgNzMsIDg0LCAyMDAsIDgzLCA4OSwgNzYsIAorICAgIDc2LCA2NSwgNjYsIDc2LCAxOTcsIDgzLCA3NywgNjUsIDc2LCAyMDQsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDIwNCwgCisgICAgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgMjAwLCA3NiwgNjUsIDg0LCA3MywgMjA2LCA2NywgODUsIDc4LCAKKyAgICA2OSwgNzMsIDcwLCA3OSwgODIsIDIwNSwgNjUsIDgyLCA2NSwgNjYsIDczLCAxOTUsIDg5LCAyMDEsIDY3LCA3NCwgMjAzLCAKKyAgICA3NywgNjUsIDg0LCA3MiwgNjksIDc3LCA2NSwgODQsIDczLCA2NywgNjUsIDIwNCwgNjksIDcxLCA4OSwgODAsIDg0LCA3MywgCisgICAgNjUsIDIwNiwgNjcsIDc5LCA3NywgODAsIDY1LCA4NCwgNzMsIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA4MywgODksIDc3LCAKKyAgICA2NiwgNzksIDIwNCwgNjgsIDczLCA3MSwgNzMsIDIxMiwgNzAsIDc5LCA4MiwgNzcsIDEyOCwgNjcsIDY1LCA3OCwgNjUsIAorICAgIDY4LCA3MywgNjUsIDIwNiwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDY3LCAyMTEsIDgzLCA3MywgNzEsIDc4LCA4NywgCisgICAgODIsIDczLCA4NCwgNzMsIDc4LCAxOTksIDg2LCA3OSwgODcsIDY5LCAyMDQsIDg0LCA3MywgNzcsIDY5LCAyMTEsIDY2LCAKKyAgICA2NSwgNzcsIDg1LCAyMDUsIDY1LCA3OCwgMTk2LCA2NiwgNzksIDc2LCAxOTYsIDY1LCA3OCwgNjUsIDg0LCA3OSwgNzYsIAorICAgIDczLCA2NSwgMjA2LCA3MiwgNjUsIDc4LCA3MSwgODUsIDIwNCwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDcxLCA4MiwgCisgICAgNjksIDY5LCAyMDMsIDc3LCA4NSwgODMsIDczLCA2NywgNjUsIDIwNCwgNzYsIDczLCA3MSwgNjUsIDg0LCA4NSwgODIsIAorICAgIDE5NywgNjksIDg0LCA3MiwgNzMsIDc5LCA4MCwgNzMsIDE5NSwgMTkzLCA3MCwgNzksIDIxMCwgNjcsIDg5LCA4MiwgNzMsIAorICAgIDc2LCA3NiwgNzMsIDE5NSwgNzMsIDg0LCA2NSwgNzYsIDczLCAxOTUsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDczLCA3OCwgCisgICAgMTk5LCA4MiwgNjUsIDY4LCA3MywgNjcsIDY1LCAyMDQsIDgzLCA2NSwgNzgsIDgzLCA0NSwgODMsIDY5LCA4MiwgNzMsIAorICAgIDE5OCwgNzgsIDg1LCA3NywgNjYsIDY5LCAyMTAsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDE5NiwgODQsIDY1LCA3NywgCisgICAgNzMsIDIwNCwgODQsIDY1LCAyMDEsIDcwLCA3MywgNzgsIDY1LCAyMDQsIDY1LCA4MiwgODIsIDc5LCA4NywgMTI4LCA4NiwgCisgICAgNjUsIDIwMSwgNzYsIDY5LCA3MCwgMjEyLCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA4MywgODEsIDg1LCA2NSwgODIsIDE5NywgCisgICAgNjgsIDc5LCA4NSwgNjYsIDc2LCAxOTcsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDgzLCA3MywgNzEsIDc4LCAxMjgsIDY1LCAKKyAgICA2NiwgNzksIDg2LCA2OSwgMTI4LCA2NiwgNjksIDc2LCA3OSwgODcsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDY1LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDY2LCA4MiwgNjUsIDczLCA3NiwgNzYsIDE5NywgODAsIDY1LCA4NCwgODQsIDY5LCA4MiwgMjA2LCA2NiwgCisgICAgODksIDkwLCA2NSwgNzgsIDg0LCA3MywgNzgsIDE5NywgODcsIDcyLCA3MywgODQsIDE5NywgNjYsIDc2LCA2NSwgNjcsIAorICAgIDIwMywgNjUsIDEyOCwgNzMsIDgzLCA3OSwgNzYsIDY1LCA4NCwgNjksIDE5NiwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgCisgICAgNjksIDIxMCwgMTk0LCA3NSwgNjUsIDg0LCA2NSwgNzUsIDY1LCA3OCwgMTkzLCA4NSwgMTI4LCA3NywgODksIDY1LCA3OCwgCisgICAgNzcsIDY1LCAyMTAsIDY4LCA3OSwgMjEyLCA3NSwgNjUsIDc4LCA3MSwgODgsIDIwMSwgNzUsIDczLCA3NSwgNjUsIDc1LCAKKyAgICA4NSwgMjAxLCA3NywgNjksIDc4LCA2OCwgMTk3LCA3MywgMTI4LCA3OSwgMTk4LCA4NCwgNzMsIDY2LCA2OSwgODQsIDY1LCAKKyAgICAyMDYsIDc5LCAxMjgsIDcyLCA2OSwgNjUsIDg2LCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDczLCAKKyAgICA3OCwgNzMsIDg0LCA3MywgNjUsIDIwNCwgNzcsIDY1LCA4MiwgNzUsIDEyOCwgNzcsIDY5LCA2OSwgMjA1LCA2NywgNzksIAorICAgIDgwLCA4NCwgNzMsIDE5NSwgNzUsIDcyLCA3NywgNjksIDIxMCwgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIDgyLCA2OCwgCisgICAgMjExLCA2NSwgNjYsIDc5LCA4NiwgMTk3LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAyMTAsIDg5LCA2OSwgMjAwLCA2NywgCisgICAgNzIsIDY5LCA4MiwgNzksIDc1LCA2OSwgMTk3LCA4MCwgNzYsIDg1LCAyMTEsIDY4LCA2OSwgODYsIDY1LCA3OCwgNjUsIDcxLCAKKyAgICA2NSwgODIsIDIwMSwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk3LCA3NywgNzksIDc4LCA3MSwgNzksIDc2LCA3MywgNjUsIAorICAgIDIwNiwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMTI4LCA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgCisgICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgMTI4LCA2NiwgNzksIDIxNiwgODQsIDczLCA3NiwgMTk3LCA2OCwgODUsIDgwLCAKKyAgICA3NiwgNzksIDg5LCA2NSwgMjA2LCA3NywgNzMsIDY4LCA2OCwgNzYsIDE5NywgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIAorICAgIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCAxOTYsIDg0LCA3MiwgNjUsIDIwNSwgCisgICAgNzksIDc4LCA2OSwgMTI4LCAyMTMsIDc0LCA3OSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA4NCwgODcsIDc5LCAKKyAgICAxMjgsIDY3LCA3OSwgNzgsIDgzLCA3OSwgNzgsIDY1LCA3OCwgMjEyLCA3MiwgNjksIDY2LCA4MiwgNjksIDIxNSwgNzcsIAorICAgIDczLCA2NSwgMjA3LCA4NSwgMjA4LCA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MSwgNjksIDc5LCA4MiwgNzEsIDczLCA2NSwgCisgICAgMjA2LCA3OSwgODYsIDY5LCAyMTAsIDY4LCA4MiwgNjUsIDg3LCA3MywgNzgsIDcxLCAyMTEsIDcyLCA3NywgNzksIDc4LCAKKyAgICAxOTksIDc5LCA3OCwgMTk3LCA4MCwgNjUsIDcyLCA2NSwgODcsIDIwMCwgODQsIDg3LCAyMDcsIDY4LCA3OSwgODcsIDIwNiwgCisgICAgNzMsIDc4LCA2OCwgNjksIDIxNiwgNjcsIDcyLCA3OSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgNzYsIDc5LCAyMTUsIDg2LCAKKyAgICA3OSwgNjcsIDY1LCA3NiwgNzMsIDE5NSwgODQsIDcyLCA4MiwgNjksIDE5NywgNzIsIDY1LCA3NiwgNzAsIDg3LCA3MywgNjgsIAorICAgIDg0LCAyMDAsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDczLCA4MywgMjEyLCA3NywgNjksIDgyLCA3OSwgNzMsIDg0LCA3MywgCisgICAgMTk1LCA2NiwgNjUsIDc2LCA3MywgNzgsIDY5LCA4MywgMTk3LCA3NywgNjUsIDgyLCAyMDMsIDgzLCA2NywgODIsIDczLCAKKyAgICA4MCwgMjEyLCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTYsIAorICAgIDg0LCA3OSwgMTI4LCA2NSwgNzYsIDY3LCA3MiwgNjksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDY1LCA3NiwgNjksIDE5OCwgCisgICAgNzIsIDczLCA3MSwgMjAwLCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCA4MywgNzMsIDc4LCAKKyAgICA3MiwgNjUsIDc2LCAxOTMsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNzMsIDE5NSwgNjYsIDY1LCA4MiwgMTI4LCA4NCwgNzksIAorICAgIDc4LCAxOTcsIDY2LCA4MiwgNjUsIDcyLCA3NywgMjAxLCA3MiwgODUsIDc4LCA3MSwgNjUsIDgyLCA3MywgNjUsIDIwNiwgCisgICAgODQsIDcyLCA4MiwgNjksIDY5LCAxMjgsIDg0LCA3MiwgODUsIDc3LCAxOTQsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDY2LCAKKyAgICA2NSwgODIsIDE5NCwgNzIsIDY1LCAyMDAsIDcyLCA2NSwgMTI4LCA3OCwgNzksIDgyLCA4NCwgMjAwLCA3MCwgODUsIDc2LCAKKyAgICA3NiwgODcsIDczLCA2OCwgODQsIDIwMCwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODQsIDEyOCwgNjksIDgxLCA4NSwgNjUsIAorICAgIDIwNCwgNzYsIDczLCA3MSwgNzIsIDIxMiwgODQsIDY1LCAxOTksIDY4LCA3OSwgNzcsIDczLCA3OCwgMjA3LCA3MiwgNjUsIAorICAgIDc2LCAxOTgsIDc2LCA3OSwgNzgsIDE5OSwgNzcsIDY1LCA3NiwgNjUsIDg5LCA2NSwgNzYsIDY1LCAyMDUsIDY1LCA2NywgCisgICAgODUsIDg0LCA2OSwgMTI4LCA3MCwgODIsIDY1LCA3NSwgODQsIDg1LCAyMTAsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCAKKyAgICA2OSwgMjEwLCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTUsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA4MywgODQsIAorICAgIDgyLCA4NSwgNjcsIDIwMywgNzAsIDczLCA4NiwgNjksIDEyOCwgNzksIDgwLCA2OSwgMjA2LCA3MiwgNzMsIDgyLCA2NSwgCisgICAgNzEsIDY1LCA3OCwgMTkzLCA3NSwgNjUsIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDY1LCAyMDQsIDg0LCA2OSwgNzYsIDg1LCAKKyAgICA3MSwgMjEzLCA3NCwgODUsIDc4LCA3MSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgCisgICAgMjExLCA2NSwgODIsIDc3LCA2OSwgNzgsIDczLCA2NSwgMjA2LCA2NiwgNjksIDc4LCA3MSwgNjUsIDc2LCAyMDEsIDcxLCAKKyAgICA3NiwgNjUsIDcxLCA3OSwgNzYsIDczLCA4NCwgNzMsIDE5NSwgODMsIDcyLCA2NSwgODIsIDY1LCA2OCwgMTkzLCA3OCwgNjksIAorICAgIDcxLCA2NSwgODQsIDczLCA4NiwgMTk3LCA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgNzQsIDY5LCA2OSwgCisgICAgMjA1LCA4MCwgNjUsIDEyOCwgODMsIDczLCA2OCwgNjgsIDcyLCA2NSwgMjA1LCA2OCwgNzksIDg0LCAyMTEsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NCwgNjUsIDg2LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA2NywgODUsIDgyLCAKKyAgICA4MywgNzMsIDg2LCAxOTcsIDc3LCA2NSwgMTI4LCA3OSwgODIsIDczLCA4OSwgMTkzLCA4MywgMTI4LCA4MywgNzMsIDg4LCAKKyAgICAxMjgsIDg3LCA2OSwgODMsIDg0LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4MiwgODUsIDc4LCA3MywgMTk1LCA4OSwgNjUsIAorICAgIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc1LCA2NSwgNzgsIDc4LCA2NSwgNjgsIDE5MywgNzgsIDY1LCAxMjgsIAorICAgIDkwLCA5MCwgODksIDg4LCAxMjgsIDkwLCA5MCwgODksIDg0LCAxMjgsIDkwLCA5MCwgODksIDgyLCA4OCwgMTI4LCA5MCwgCisgICAgOTAsIDg5LCA4MiwgMTI4LCA5MCwgOTAsIDg5LCA4MCwgMTI4LCA5MCwgOTAsIDg5LCA2NSwgMTI4LCA5MCwgOTAsIDg5LCAKKyAgICAxMjgsIDkwLCA5MCwgODUsIDg4LCAxMjgsIDkwLCA5MCwgODUsIDgyLCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgMTI4LCAKKyAgICA5MCwgOTAsIDg1LCA4MCwgMTI4LCA5MCwgOTAsIDg1LCAxMjgsIDkwLCA5MCwgODMsIDg5LCA2NSwgMTI4LCA5MCwgOTAsIAorICAgIDgzLCA2NSwgMTI4LCA5MCwgOTAsIDc5LCA4OCwgMTI4LCA5MCwgOTAsIDc5LCA4MCwgMTI4LCA5MCwgOTAsIDc5LCAxMjgsIAorICAgIDkwLCA5MCwgNzMsIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDgwLCAxMjgsIDkwLCA5MCwgCisgICAgNzMsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODQsIDEyOCwgOTAsIDkwLCA3MywgNjksIDgwLCAxMjgsIDkwLCAKKyAgICA5MCwgNzMsIDY5LCAxMjgsIDkwLCA5MCwgNzMsIDEyOCwgOTAsIDkwLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA2OSwgODAsIAorICAgIDEyOCwgOTAsIDkwLCA2OSwgNjksIDEyOCwgOTAsIDkwLCA2OSwgMTI4LCA5MCwgOTAsIDY1LCA4OCwgMTI4LCA5MCwgOTAsIAorICAgIDY1LCA4NCwgMTI4LCA5MCwgOTAsIDY1LCA4MCwgMTI4LCA5MCwgOTAsIDY1LCA2NSwgMTI4LCA5MCwgOTAsIDY1LCAxMjgsIAorICAgIDkwLCA4OSwgNzEsIDc5LCA4MywgMTI4LCA5MCwgODcsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc4LCA3NCwgMTI4LCA5MCwgCisgICAgODcsIDc4LCA2NiwgODMsIDgwLCAxMjgsIDkwLCA4NywgNzQsIDEyOCwgOTAsIDg3LCAyMDIsIDkwLCA4NywgNjUsIDgyLCAKICAgICA2NSwgNzUsIDY1LCA4OSwgMTI4LCA5MCwgODcsIDY1LCAxMjgsIDkwLCA4NSwgODQsIDEyOCwgOTAsIDg1LCA3OSwgODgsIAogICAgIDEyOCwgOTAsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDg1LCA3OSwgMTI4LCA5MCwgODUsIDc3LCAxMjgsIDkwLCA4NSwgNjYsIAotICAgIDg1LCA4MiwgMTI4LCA5MCwgODUsIDUzLCAxMjgsIDkwLCA4NSwgMTgxLCA5MCwgODMsIDcyLCA2NSwgMTI4LCA5MCwgODIsIAotICAgIDY1LCAxMjgsIDkwLCA4MSwgNjUsIDgwLCA3MiwgMTkzLCA5MCwgNzksIDg0LCAxMjgsIDkwLCA3OSwgNzksIDEyOCwgOTAsIAotICAgIDc5LCA2NSwgMTI4LCA5MCwgNzYsIDY1LCA3NywgMTkzLCA5MCwgNzYsIDY1LCAxMjgsIDkwLCA3NiwgMTkzLCA5MCwgNzQsIAotICAgIDY5LCAxMjgsIDkwLCA3MywgOTAsIDUwLCAxMjgsIDkwLCA3MywgODEsIDY1LCA2NSwgMTI4LCA5MCwgNzMsIDc4LCA3OSwgCi0gICAgODIsIDEyOCwgOTAsIDczLCA3NiwgNjgsIDY5LCAxMjgsIDkwLCA3MywgNzEsIDkwLCA2NSwgMTk5LCA5MCwgNzMsIDcxLCAKLSAgICAxMjgsIDkwLCA3MywgNjgsIDE5MywgOTAsIDczLCA2NiwgMTI4LCA5MCwgNzMsIDE5NCwgOTAsIDczLCA1MSwgMTI4LCA5MCwgCi0gICAgMjAxLCA5MCwgNzIsIDg5LCA4OCwgMTI4LCA5MCwgNzIsIDg5LCA4NCwgMTI4LCA5MCwgNzIsIDg5LCA4MiwgODgsIDEyOCwgCi0gICAgOTAsIDcyLCA4OSwgODIsIDEyOCwgOTAsIDcyLCA4OSwgODAsIDEyOCwgOTAsIDcyLCA4OSwgMTI4LCA5MCwgNzIsIDg3LCAKLSAgICA2OSwgMTI4LCA5MCwgNzIsIDg3LCA2NSwgMTI4LCA5MCwgNzIsIDg1LCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4NCwgMTI4LCAKLSAgICA5MCwgNzIsIDg1LCA4MiwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODIsIDEyOCwgOTAsIDcyLCA4NSwgODAsIDEyOCwgOTAsIAotICAgIDcyLCA4NSwgNzksIDg4LCAxMjgsIDkwLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgMTI4LCA5MCwgCi0gICAgNzIsIDg1LCAxMjgsIDkwLCA3MiwgNzksIDg4LCAxMjgsIDkwLCA3MiwgNzksIDg0LCAxMjgsIDkwLCA3MiwgNzksIDgwLCAKLSAgICAxMjgsIDkwLCA3MiwgNzksIDc5LCAxMjgsIDkwLCA3MiwgNzksIDEyOCwgOTAsIDcyLCA3MywgODYsIDY5LCA4NCwgNjksIAotICAgIDEyOCwgOTAsIDcyLCA3MywgMTI4LCA5MCwgNzIsIDY5LCA4OCwgMTI4LCA5MCwgNzIsIDY5LCA4NCwgMTI4LCA5MCwgNzIsIAotICAgIDY5LCA4MCwgMTI4LCA5MCwgNzIsIDY5LCA2OSwgMTI4LCA5MCwgNzIsIDY5LCAxMjgsIDkwLCA3MiwgMTk3LCA5MCwgNzIsIAotICAgIDY1LCA4OCwgMTI4LCA5MCwgNzIsIDY1LCA4NCwgMTI4LCA5MCwgNzIsIDY1LCA4MiwgMTI4LCA5MCwgNzIsIDY1LCA4MCwgCi0gICAgMTI4LCA5MCwgNzIsIDY1LCA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgNjUsIDEyOCwgOTAsIDcyLCA2NSwgMTI4LCA5MCwgCi0gICAgNzIsIDEyOCwgOTAsIDY5LCA4NCwgNjUsIDEyOCwgOTAsIDY5LCA4MiwgNzksIDEyOCwgOTAsIDY5LCA4MiwgMjA3LCA5MCwgCi0gICAgNjksIDc4LCAxMjgsIDkwLCA2OSwgNzcsIDc2LCA4OSwgNjUsIDEyOCwgOTAsIDY5LCA3NywgNzYsIDc0LCA2NSwgMTI4LCAKLSAgICA5MCwgNjksIDUwLCAxMjgsIDkwLCAxOTcsIDkwLCA2NSwgODksIDc4LCAxMjgsIDkwLCA2NSwgODksIDczLCA3OCwgMTI4LCAKLSAgICA5MCwgNjUsIDg5LCA3MywgMjA2LCA5MCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgOTAsIDY1LCA4NCwgNjUsIAotICAgIDEyOCwgOTAsIDY1LCA4MiwgODEsIDY1LCAxMjgsIDkwLCA2NSwgODEsIDY5LCAxOTgsIDkwLCA2NSwgNzcsIDg4LCAxMjgsIAotICAgIDkwLCA2NSwgMjA0LCA5MCwgNjUsIDczLCA3OCwgMTI4LCA5MCwgNjUsIDczLCAyMDYsIDkwLCA2NSwgNzMsIDEyOCwgOTAsIAotICAgIDY1LCA3MiwgMTI4LCA5MCwgNjUsIDIwMCwgOTAsIDY1LCA3MSwgMTI4LCA5MCwgNjUsIDY5LCA3MCwgMTI4LCA5MCwgNDgsIAotICAgIDQ5LCA1NCwgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcxLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MCwgMTI4LCA5MCwgCi0gICAgNDgsIDQ5LCA1NCwgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY4LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NywgMTI4LCAKLSAgICA5MCwgNDgsIDQ5LCA1NCwgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAxMjgsIAotICAgIDkwLCA0OCwgNDksIDUzLCA3MywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcxLCAKLSAgICAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIAotICAgIDY4LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgCi0gICAgNTMsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDUzLCAxMjgsIDkwLCA0OCwgNDksIDUyLCAxMjgsIDkwLCA0OCwgNDksIDUxLCAKLSAgICAxMjgsIDkwLCA0OCwgNDksIDUwLCAxMjgsIDkwLCA0OCwgNDksIDQ5LCAxMjgsIDkwLCA0OCwgNDksIDQ4LCAxMjgsIDkwLCAKLSAgICA0OCwgNDgsIDU3LCAxMjgsIDkwLCA0OCwgNDgsIDU2LCAxMjgsIDkwLCA0OCwgNDgsIDU1LCAxMjgsIDkwLCA0OCwgNDgsIAotICAgIDU0LCAxMjgsIDkwLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MywgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgCi0gICAgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCAKLSAgICA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjgsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIAotICAgIDY3LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgCi0gICAgNTAsIDEyOCwgOTAsIDQ4LCA0OCwgNDksIDEyOCwgOTAsIDEyOCwgMjE4LCA4OSwgODksIDg4LCAxMjgsIDg5LCA4OSwgODQsIAotICAgIDEyOCwgODksIDg5LCA4MiwgODgsIDEyOCwgODksIDg5LCA4MiwgMTI4LCA4OSwgODksIDgwLCAxMjgsIDg5LCA4OSwgNjksIAotICAgIDEyOCwgODksIDg5LCA2NSwgNjUsIDEyOCwgODksIDg5LCA2NSwgMTI4LCA4OSwgODksIDEyOCwgODksIDg3LCA3OSwgNzksIAotICAgIDEyOCwgODksIDg3LCA3OSwgMTI4LCA4OSwgODcsIDczLCA3MywgMTI4LCA4OSwgODcsIDczLCAxMjgsIDg5LCA4NywgNjksIAotICAgIDEyOCwgODksIDg3LCA2NSwgNjUsIDEyOCwgODksIDg3LCA2NSwgMTI4LCA4OSwgODYsIDEyOCwgODksIDg1LCA4OCwgMTI4LCAKLSAgICA4OSwgODUsIDg3LCA3OSwgODEsIDEyOCwgODksIDg1LCA4NSwgNzUsIDY1LCA3NiwgNjksIDY1LCA4MCwgNzMsIDc4LCA4NCwgCi0gICAgODUsIDEyOCwgODksIDg1LCA4NSwgMTI4LCA4OSwgODUsIDg0LCAxMjgsIDg5LCA4NSwgODMsIDEyOCwgODksIDg1LCAyMTEsIAotICAgIDg5LCA4NSwgODIsIDg4LCAxMjgsIDg5LCA4NSwgODIsIDEyOCwgODksIDg1LCA4MSwgMTI4LCA4OSwgODUsIDIwOSwgODksIAotICAgIDg1LCA4MCwgMTI4LCA4OSwgODUsIDc5LCA4OCwgMTI4LCA4OSwgODUsIDc5LCA4NCwgMTI4LCA4OSwgODUsIDc5LCA4MCwgCi0gICAgMTI4LCA4OSwgODUsIDc5LCA3NywgMTI4LCA4OSwgODUsIDc5LCAxMjgsIDg5LCA4NSwgNzgsIDEyOCwgODksIDg1LCA3NywgCi0gICAgMTI4LCA4OSwgODUsIDY5LCA4MSwgMTI4LCA4OSwgODUsIDY5LCAxMjgsIDg5LCA4NSwgNjgsIDcyLCAxMjgsIDg5LCA4NSwgCi0gICAgNjgsIDIwMCwgODksIDg1LCA2NSwgNzgsIDEyOCwgODksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDg5LCA4NSwgNDUsIDg5LCAKLSAgICA2OSwgNzksIDEyOCwgODksIDg1LCA0NSwgODksIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDg1LCAxMjgsIDg5LCA4NSwgNDUsIAotICAgIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDczLCAxMjgsIDg5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA2OSwgCi0gICAgMTI4LCA4OSwgODUsIDQ1LCA2NSwgNjksIDEyOCwgODksIDg1LCA0NSwgNjUsIDEyOCwgODksIDg1LCAxMjgsIDg5LCAyMTMsIAotICAgIDg5LCA4MCwgODMsIDczLCA3NiwgNzMsIDEyOCwgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzMsIDEyOCwgODksIDgwLCA3OSwgCi0gICAgNzUsIDgyLCA3MywgODMsIDczLCA4MywgMTI4LCA4OSwgODAsIDc5LCA3NSwgODIsIDczLCA4MywgNzMsIDIxMSwgODksIDgwLCAKLSAgICA3OSwgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODksIDc5LCA4OSwgMTI4LCA4OSwgNzksIAotICAgIDg4LCAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCA3NiwgNzgsIDY5LCA4MywgODMsIDEyOCwgODksIDc5LCA4NSwgCi0gICAgODQsIDcyLCA3MCwgODUsIDIwNCwgODksIDc5LCA4NCwgMTI4LCA4OSwgNzksIDgyLCA3MywgMTI4LCA4OSwgNzksIDgxLCAKLSAgICAxMjgsIDg5LCA3OSwgMjA5LCA4OSwgNzksIDgwLCAxMjgsIDg5LCA3OSwgNzksIDEyOCwgODksIDc5LCA3NywgNzksIDEyOCwgCi0gICAgODksIDc5LCA3MSwgNzIsIDEyOCwgODksIDc5LCA2OCwgNzIsIDEyOCwgODksIDc5LCA2OCwgMTI4LCA4OSwgNzksIDE5NiwgCi0gICAgODksIDc5LCA2NSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgNjksIAotICAgIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDczLCAxMjgsIAotICAgIDg5LCA3OSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA2NSwgNjksIDEyOCwgODksIDc5LCA0NSwgNjUsIDEyOCwgCi0gICAgODksIDc5LCAxMjgsIDg5LCAyMDcsIDg5LCA3MywgOTAsIDY5LCA4NCwgMTI4LCA4OSwgNzMsIDg4LCAxMjgsIDg5LCA3MywgCi0gICAgODcsIDc4LCAxMjgsIDg5LCA3MywgODQsIDEyOCwgODksIDczLCA4MCwgMTI4LCA4OSwgNzMsIDc4LCA3MSwgMTI4LCA4OSwgCi0gICAgNzMsIDczLCAxMjgsIDg5LCA3MywgMTk5LCA4OSwgNzMsIDY5LCA4OCwgMTI4LCA4OSwgNzMsIDY5LCA4NCwgMTI4LCA4OSwgCi0gICAgNzMsIDY5LCA4MCwgMTI4LCA4OSwgNzMsIDY5LCA2OSwgMTI4LCA4OSwgNzMsIDY5LCAxMjgsIDg5LCA3MywgNjgsIDY4LCAKLSAgICA3MywgODMsIDIwMCwgODksIDczLCA0NSwgODUsIDEyOCwgODksIDczLCAxMjgsIDg5LCA3MCwgNjksIDgzLCA3MywgODMsIAotICAgIDEyOCwgODksIDcwLCA2OSwgODMsIDczLCAyMTEsIDg5LCA3MCwgNjksIDIwNiwgODksIDY5LCA4OSwgMTI4LCA4OSwgNjksIAotICAgIDg3LCAxMjgsIDg5LCA2OSwgODUsIDg4LCAxMjgsIDg5LCA2OSwgODUsIDgyLCA2NSwgNjksIDEyOCwgODksIDY5LCA4NSwgCi0gICAgODEsIDEyOCwgODksIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4OSwgNjksIDg1LCAKLSAgICA2NSwgNjksIDEyOCwgODksIDY5LCA4NCwgNzMsIDg2LCAxMjgsIDg5LCA2OSwgODMsIDg0LCA4NSwgMTI4LCA4OSwgNjksIAotICAgIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCAKLSAgICA3OCwgNzEsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgCi0gICAgNzEsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzIsIAotICAgIDczLCA2OSwgODUsIDcyLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4OSwgNjksIDgyLCA4NSwgCi0gICAgMTI4LCA4OSwgNjksIDgyLCAyMTMsIDg5LCA2OSwgODIsIDczLCAxMjgsIDg5LCA2OSwgODIsIDY1LCAyMDAsIDg5LCA2OSwgCi0gICAgODIsIDEyOCwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDg5LCA2OSwgNzksIDQ1LCAKLSAgICA4OSwgNjUsIDEyOCwgODksIDY5LCA3OSwgNDUsIDg1LCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA3OSwgMTI4LCA4OSwgNjksIAotICAgIDc4LCA3MywgODMsIDY5LCAyMDEsIDg5LCA2OSwgNzgsIDY1LCA4MCwgMTI4LCA4OSwgNjksIDc4LCAxMjgsIDg5LCA2OSwgCi0gICAgMjA2LCA4OSwgNjksIDc2LCA3NiwgNzksIDg3LCAxMjgsIDg5LCA2OSwgNzYsIDc2LCA3OSwgMjE1LCA4OSwgNjksIDcyLCAKLSAgICAxMjgsIDg5LCA2OSwgNjksIDEyOCwgODksIDY5LCA2NSwgMjEwLCA4OSwgNjksIDY1LCAxMjgsIDg5LCA2NSwgOTAsIDkwLCAKLSAgICAxMjgsIDg5LCA2NSwgOTAsIDcyLCAxMjgsIDg5LCA2NSwgOTAsIDEyOCwgODksIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgODksIDY1LCA4OSwgMTI4LCA4OSwgNjUsIDg3LCAxMjgsIDg5LCA2NSwgODYsIDEyOCwgODksIDY1LCA4NSwgMTI4LCAKLSAgICA4OSwgNjUsIDg0LCA4NCwgMTI4LCA4OSwgNjUsIDg0LCA3MywgMTI4LCA4OSwgNjUsIDg0LCA3MiwgMTI4LCA4OSwgNjUsIAotICAgIDg0LCAxMjgsIDg5LCA2NSwgODMsIDgzLCAxMjgsIDg5LCA2NSwgODMsIDcyLCAxMjgsIDg5LCA2NSwgODMsIDEyOCwgODksIAotICAgIDY1LCA4MiwgODIsIDEyOCwgODksIDY1LCA4MiwgMTI4LCA4OSwgNjUsIDIxMCwgODksIDY1LCA4MSwgMTI4LCA4OSwgNjUsIAotICAgIDgwLCAxMjgsIDg5LCA2NSwgNzgsIDgzLCA2NSwgODksIDY1LCAxMjgsIDg5LCA2NSwgNzgsIDcxLCAxMjgsIDg5LCA2NSwgCi0gICAgNzgsIDE5OSwgODksIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCA3OSwgNzUsIDEyOCwgODksIDY1LCA3NywgNjUsIDc1LCAKLSAgICA3NSwgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIDEyOCwgODksIDY1LCA3NiwgMTI4LCA4OSwgNjUsIDc1LCA3MiwgNzIsIAotICAgIDEyOCwgODksIDY1LCA3NSwgNzIsIDEyOCwgODksIDY1LCA3NSwgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDc1LCAxMjgsIAotICAgIDg5LCA2NSwgNzQsIDg1LCA4MiwgODYsIDY5LCA2OCwgNzMsIDE5NSwgODksIDY1LCA3NCwgMTI4LCA4OSwgNjUsIDczLCAKLSAgICAxMjgsIDg5LCA2NSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzIsIDEyOCwgODksIDY1LCA3MSwgNzgsIDEyOCwgODksIDY1LCAKLSAgICA3MSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDEyOCwgODksIDY1LCA3MCwgMjEzLCAKLSAgICA4OSwgNjUsIDcwLCAxMjgsIDg5LCA2NSwgNjksIDc3LCA3NywgNjUsIDY5LCAxMjgsIDg5LCA2NSwgNjgsIDcyLCAxMjgsIAotICAgIDg5LCA2NSwgNjgsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCA2OCwgMTI4LCA4OSwgNjUsIDY4LCAxMjgsIDg5LCA2NSwgCi0gICAgNjcsIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDEyOCwgODksIDY1LCA2NSwgODIsIDg1LCAKLSAgICAxMjgsIDg5LCA2NSwgNjUsIDczLCAxMjgsIDg5LCA2NSwgNjUsIDY4LCA3OSwgMTI4LCA4OSwgNjUsIDQ1LCA4OSwgNzksIAotICAgIDEyOCwgODksIDY1LCA0NSwgODUsIDEyOCwgODksIDY1LCA0NSwgNzksIDEyOCwgODksIDQ4LCA0OCwgNTYsIDEyOCwgODksIAotICAgIDQ4LCA0OCwgNTUsIDEyOCwgODksIDQ4LCA0OCwgNTQsIDEyOCwgODksIDQ4LCA0OCwgNTMsIDEyOCwgODksIDQ4LCA0OCwgCi0gICAgNTIsIDEyOCwgODksIDQ4LCA0OCwgNTEsIDEyOCwgODksIDQ4LCA0OCwgNTAsIDEyOCwgODksIDQ4LCA0OCwgNDksIDY1LCAKLSAgICAxMjgsIDg5LCA0OCwgNDgsIDQ5LCAxMjgsIDg5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4OCwgODksIDg4LCAxMjgsIDg4LCAKLSAgICA4OSwgODUsIDEyOCwgODgsIDg5LCA4NCwgMTI4LCA4OCwgODksIDgyLCA4OCwgMTI4LCA4OCwgODksIDgyLCAxMjgsIDg4LCAKLSAgICA4OSwgODAsIDEyOCwgODgsIDg5LCA3OSwgMTI4LCA4OCwgODksIDczLCAxMjgsIDg4LCA4OSwgNjksIDY5LCAxMjgsIDg4LCAKLSAgICA4OSwgNjksIDEyOCwgODgsIDg5LCA2NSwgNjUsIDEyOCwgODgsIDg5LCA2NSwgMTI4LCA4OCwgODksIDEyOCwgODgsIDg3LCAKLSAgICA3MywgMTI4LCA4OCwgODcsIDY5LCA2OSwgMTI4LCA4OCwgODcsIDY5LCAxMjgsIDg4LCA4NywgNjUsIDY1LCAxMjgsIDg4LCAKLSAgICA4NywgNjUsIDEyOCwgODgsIDg2LCA2OSwgMTI4LCA4OCwgODYsIDY1LCAxMjgsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDg4LCAKLSAgICA4NSwgNzksIDEyOCwgODgsIDg1LCAxMjgsIDg4LCA4MywgNzIsIDY1LCA2NSwgODksIDY1LCA4NCwgNzIsIDczLCA4OSwgNjUsIAotICAgIDEyOCwgODgsIDc5LCA4OCwgMTI4LCA4OCwgNzksIDg0LCAxMjgsIDg4LCA3OSwgODIsIDEyOCwgODgsIDc5LCA4MCwgMTI4LCAKLSAgICA4OCwgNzksIDY1LCAxMjgsIDg4LCA3OSwgMTI4LCA4OCwgNzMsIDg4LCAxMjgsIDg4LCA3MywgODQsIDEyOCwgODgsIDczLCAKLSAgICA4MiwgNzksIDIwNiwgODgsIDczLCA4MCwgMTI4LCA4OCwgNzMsIDY5LCA4OCwgMTI4LCA4OCwgNzMsIDY5LCA4NCwgMTI4LCAKLSAgICA4OCwgNzMsIDY5LCA4MCwgMTI4LCA4OCwgNzMsIDY5LCAxMjgsIDg4LCA3MywgMTI4LCA4OCwgNzEsIDEyOCwgODgsIDY5LCAKLSAgICA4MywgODQsIDY5LCAyMTEsIDg4LCA2OSwgNzIsIDEyOCwgODgsIDY5LCA2OSwgMTI4LCA4OCwgNjksIDEyOCwgODgsIDY1LCAKLSAgICA3OCwgMTI4LCA4OCwgNjUsIDY1LCAxMjgsIDg4LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgODgsIDQ4LCAKLSAgICA0OCwgNTYsIDEyOCwgODgsIDQ4LCA0OCwgNTUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIAotICAgIDU0LCAxMjgsIDg4LCA0OCwgNDgsIDUzLCAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NiwgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgCi0gICAgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDEyOCwgODgsIDQ4LCA0OCwgNTEsIDEyOCwgODgsIDQ4LCA0OCwgNTAsIDEyOCwgCi0gICAgODgsIDQ4LCA0OCwgNDksIDEyOCwgODcsIDkwLCAxMjgsIDg3LCA4OSwgNzgsIDc4LCAxMjgsIDg3LCA4OSwgNzgsIDIwNiwgCi0gICAgODcsIDg2LCAxMjgsIDg3LCA4NSwgODAsIDEyOCwgODcsIDg1LCA3OSwgODgsIDEyOCwgODcsIDg1LCA3OSwgODAsIDEyOCwgCi0gICAgODcsIDg1LCA3OSwgMTI4LCA4NywgODUsIDc4LCA3NCwgMjA3LCA4NywgODUsIDc4LCAxMjgsIDg3LCA4NSwgNzYsIDg1LCAKLSAgICAxMjgsIDg3LCA4NSwgNzYsIDIxMywgODcsIDg1LCA2OSwgMTI4LCA4NywgODUsIDY1LCA2OSwgODQsIDEyOCwgODcsIDg1LCAKLSAgICA2NSwgNjksIDc4LCAxMjgsIDg3LCA4NSwgMTI4LCA4NywgODIsIDIxNywgODcsIDgyLCA3OSwgNzgsIDcxLCAxMjgsIDg3LCAKLSAgICA4MiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgODcsIDgyLCA2OSwgNzgsIDY3LCA3MiwgMTI4LCA4NywgODIsIDY5LCA2NSwgODQsIAotICAgIDIwMCwgODcsIDgyLCA2NSwgODAsIDgwLCA2OSwgMTk2LCA4NywgODIsIDY1LCA4MCwgMTI4LCA4NywgNzksIDg4LCAxMjgsIAotICAgIDg3LCA3OSwgODIsIDgyLCA3MywgNjksIDE5NiwgODcsIDc5LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA4NywgNzksIDgyLCA3NSwgCi0gICAgMTI4LCA4NywgNzksIDgyLCAyMDMsIDg3LCA3OSwgODIsIDY4LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgODcsIDc5LCAKLSAgICA4MiwgMTk2LCA4NywgNzksIDgwLCAxMjgsIDg3LCA3OSwgNzksIDc4LCAxMjgsIDg3LCA3OSwgNzksIDc2LCAxMjgsIDg3LCAKLSAgICA3OSwgNzksIDY4LCA4MywgNDUsIDY3LCA4MiwgNjksIDE5NywgODcsIDc5LCA3OSwgNjgsIDEyOCwgODcsIDc5LCA3OCwgCi0gICAgMTI4LCA4NywgNzksIDIwNiwgODcsIDc5LCA3NywgNjksIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY5LCAyMDYsIDg3LCA3OSwgCi0gICAgNzcsIDY1LCA3OCwgMjExLCA4NywgNzksIDc3LCA2NSwgNzgsIDEyOCwgODcsIDc5LCA3NywgNjUsIDIwNiwgODcsIDc5LCAKLSAgICA3NiwgNzksIDgzLCA3OSwgMTI4LCA4NywgNzksIDc2LCAxOTgsIDg3LCA3OSwgNjksIDEyOCwgODcsIDc5LCA2NSwgMTI4LCAKLSAgICA4NywgNzMsIDg0LCA3MiwgNzksIDg1LCAyMTIsIDg3LCA3MywgODQsIDcyLCA3MywgNzgsIDEyOCwgODcsIDczLCA3OCwgODQsIAotICAgIDY5LCA4MiwgMTI4LCA4NywgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIDg3LCA3MywgNzgsIDc0LCA2NSwgMTI4LCA4NywgCi0gICAgNzMsIDc4LCA3MSwgODMsIDEyOCwgODcsIDczLCA3OCwgNjksIDEyOCwgODcsIDczLCA3OCwgMTk3LCA4NywgNzMsIDc4LCAKLSAgICA2OCwgODUsIDEyOCwgODcsIDczLCA3OCwgNjgsIDEyOCwgODcsIDczLCA3OCwgMTk2LCA4NywgNzMsIDc4LCAxMjgsIDg3LCAKLSAgICA3MywgNzEsIDc4LCA4OSwgNjUsIDc4LCAxMjgsIDg3LCA3MywgNzEsIDcxLCA3NiwgMjE3LCA4NywgNzMsIDY4LCA2OSwgNDUsIAotICAgIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA4NywgNzMsIDY4LCAxOTcsIDg3LCA3MywgNjUsIDc4LCA3MSwgODcsIDY1LCA2NSwgCi0gICAgNzUsIDEyOCwgODcsIDczLCA2NSwgNzgsIDcxLCAxMjgsIDg3LCA3MiwgNzksIDc2LCAxOTcsIDg3LCA3MiwgNzMsIDg0LCAKLSAgICA2OSwgNDUsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCA2OSwgMTk2LCA4NywgNzIsIDczLCA4NCwgNjksIDEyOCwgODcsIAotICAgIDcyLCA2OSwgNjksIDc2LCA2OSwgMTk2LCA4NywgNzIsIDY5LCA2OSwgNzYsIDY3LCA3MiwgNjUsIDczLCAyMTAsIDg3LCA3MiwgCi0gICAgNjksIDY5LCA3NiwgMTI4LCA4NywgNzIsIDY5LCA2OSwgMjA0LCA4NywgNzIsIDY5LCA2NSwgODQsIDEyOCwgODcsIDcyLCAKLSAgICA2NSwgNzYsIDY5LCAxMjgsIDg3LCA3MSwgMTI4LCA4NywgNjksIDg4LCAxMjgsIDg3LCA2OSwgODUsIDg4LCAxMjgsIDg3LCAKLSAgICA2OSwgODMsIDg0LCA2OSwgODIsIDIwNiwgODcsIDY5LCA4MywgODQsIDEyOCwgODcsIDY5LCA4MywgMjEyLCA4NywgNjksIAotICAgIDgwLCAxMjgsIDg3LCA2OSwgNzksIDEyOCwgODcsIDY5LCA3OCwgMTI4LCA4NywgNjksIDc2LCA3NiwgMTI4LCA4NywgNjksIAotICAgIDczLCA3MSwgNzIsIDIxMiwgODcsIDY5LCA3MywgNjksIDgyLCA4MywgODQsIDgyLCA2NSwgODMsIDIxMSwgODcsIDY5LCA2OSwgCi0gICAgNzgsIDEyOCwgODcsIDY5LCA2OCwgNzEsIDY5LCA0NSwgODQsIDY1LCA3MywgNzYsIDY5LCAxOTYsIDg3LCA2OSwgNjgsIDY4LCAKLSAgICA3MywgNzgsIDcxLCAxMjgsIDg3LCA2OSwgNjUsIDgyLCAyMTcsIDg3LCA2OSwgNjUsIDgwLCA3OSwgNzgsIDEyOCwgODcsIAotICAgIDY3LCAxMjgsIDg3LCA2NiwgMTI4LCA4NywgNjUsIDg5LCAxMjgsIDg3LCA2NSwgMjE3LCA4NywgNjUsIDg4LCA3MywgNzgsIAotICAgIDE5OSwgODcsIDY1LCA4OCwgMTI4LCA4NywgNjUsIDg3LCA0NSwgNjUsIDg5LCA3MywgNzgsIDQ1LCA4MiwgNjksIDgzLCA3MiwgCi0gICAgMTI4LCA4NywgNjUsIDg3LCAxMjgsIDg3LCA2NSwgMjE1LCA4NywgNjUsIDg2LCAyMTcsIDg3LCA2NSwgODYsIDczLCA3OCwgCi0gICAgMTk5LCA4NywgNjUsIDg2LCA2OSwgODMsIDEyOCwgODcsIDY1LCA4NiwgNjksIDEyOCwgODcsIDY1LCA4NiwgMTk3LCA4NywgCi0gICAgNjUsIDg1LCAxMjgsIDg3LCA2NSwgODQsIDg0LCA3OSwgMTI4LCA4NywgNjUsIDg0LCA2OSwgODIsIDc3LCA2OSwgNzYsIDc5LCAKLSAgICA3OCwgMTI4LCA4NywgNjUsIDg0LCA2OSwgODIsIDEyOCwgODcsIDY1LCA4NCwgNjksIDIxMCwgODcsIDY1LCA4NCwgNjcsIAotICAgIDcyLCAxMjgsIDg3LCA2NSwgODQsIDEyOCwgODcsIDY1LCA4MywgODQsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY1LCA4MywgCi0gICAgODMsIDY1LCA3NiwgNzYsIDY1LCA3NywgMTI4LCA4NywgNjUsIDgzLCA3NiwgNjUsIDEyOCwgODcsIDY1LCA4MywgNzYsIAotICAgIDE5MywgODcsIDY1LCA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCA2NSwgODMsIDY1LCA3NiwgNzYsIDY1LCAKLSAgICAyMDUsIDg3LCA2NSwgODIsIDc4LCA3MywgNzgsIDE5OSwgODcsIDY1LCA4MCwgMTI4LCA4NywgNjUsIDc4LCA3MywgNzgsIAotICAgIDE5OSwgODcsIDY1LCA3OCwgNzEsIDc1LCA4NSwgNzksIDgxLCAxMjgsIDg3LCA2NSwgNzgsIDY4LCA2OSwgODIsIDY5LCA4MiwgCi0gICAgMTI4LCA4NywgNjUsIDc4LCAxMjgsIDg3LCA2NSwgNzYsIDc2LCAxMjgsIDg3LCA2NSwgNzYsIDc1LCAxMjgsIDg3LCA2NSwgCi0gICAgNzYsIDIwMywgODcsIDY1LCA3MywgODQsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY1LCA3MywgMTI4LCA4NywgNjUsIDY5LCAKLSAgICA3OCwgMTI4LCA4NywgNjUsIDY5LCAxMjgsIDg3LCA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NywgNDgsIDUwLCA1MywgMTI4LCAKKyAgICA4NSwgODIsIDEyOCwgOTAsIDg1LCA1MywgMTI4LCA5MCwgODUsIDE4MSwgOTAsIDIxMywgOTAsIDgzLCA3MiwgNjUsIDEyOCwgCisgICAgOTAsIDgyLCA2NSwgMTI4LCA5MCwgODEsIDY1LCA4MCwgNzIsIDE5MywgOTAsIDc5LCA4NCwgMTI4LCA5MCwgNzksIDc5LCAKKyAgICAxMjgsIDkwLCA3OSwgNjUsIDEyOCwgOTAsIDc2LCA2NSwgNzcsIDE5MywgOTAsIDc2LCA2NSwgMTI4LCA5MCwgNzYsIDE5MywgCisgICAgOTAsIDc0LCA2OSwgMTI4LCA5MCwgNzMsIDkwLCA1MCwgMTI4LCA5MCwgNzMsIDgxLCA2NSwgNjUsIDEyOCwgOTAsIDczLCAKKyAgICA4MCwgODAsIDY5LCA4MiwgNDUsIDc3LCA3OSwgODUsIDg0LCAyMDAsIDkwLCA3MywgNzgsIDc5LCA4MiwgMTI4LCA5MCwgNzMsIAorICAgIDc2LCA2OCwgNjksIDEyOCwgOTAsIDczLCA3MSwgOTAsIDY1LCAxOTksIDkwLCA3MywgNzEsIDEyOCwgOTAsIDczLCA2OCwgCisgICAgMTkzLCA5MCwgNzMsIDY2LCAxMjgsIDkwLCA3MywgMTk0LCA5MCwgNzMsIDUxLCAxMjgsIDkwLCAyMDEsIDkwLCA3MiwgODksIAorICAgIDg4LCAxMjgsIDkwLCA3MiwgODksIDg0LCAxMjgsIDkwLCA3MiwgODksIDgyLCA4OCwgMTI4LCA5MCwgNzIsIDg5LCA4MiwgCisgICAgMTI4LCA5MCwgNzIsIDg5LCA4MCwgMTI4LCA5MCwgNzIsIDg5LCAxMjgsIDkwLCA3MiwgODcsIDY5LCAxMjgsIDkwLCA3MiwgCisgICAgODcsIDY1LCAxMjgsIDkwLCA3MiwgODUsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDg0LCAxMjgsIDkwLCA3MiwgODUsIDgyLCAKKyAgICA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4MiwgMTI4LCA5MCwgNzIsIDg1LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgODgsIAorICAgIDEyOCwgOTAsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCAxMjgsIDkwLCA3MiwgODUsIDEyOCwgOTAsIAorICAgIDcyLCA3OSwgODgsIDEyOCwgOTAsIDcyLCA3OSwgODQsIDEyOCwgOTAsIDcyLCA3OSwgODAsIDEyOCwgOTAsIDcyLCA3OSwgCisgICAgNzksIDEyOCwgOTAsIDcyLCA3OSwgNzMsIDEyOCwgOTAsIDcyLCA3OSwgMTI4LCA5MCwgNzIsIDczLCA4NiwgNjksIDg0LCAKKyAgICA2OSwgMTI4LCA5MCwgNzIsIDczLCA3NiwgMTI4LCA5MCwgNzIsIDczLCAxMjgsIDkwLCA3MiwgNjksIDg4LCAxMjgsIDkwLCAKKyAgICA3MiwgNjksIDg0LCAxMjgsIDkwLCA3MiwgNjksIDgwLCAxMjgsIDkwLCA3MiwgNjksIDY5LCAxMjgsIDkwLCA3MiwgNjksIAorICAgIDEyOCwgOTAsIDcyLCAxOTcsIDkwLCA3MiwgNjUsIDg5LCA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgODgsIDEyOCwgOTAsIAorICAgIDcyLCA2NSwgODQsIDEyOCwgOTAsIDcyLCA2NSwgODIsIDEyOCwgOTAsIDcyLCA2NSwgODAsIDEyOCwgOTAsIDcyLCA2NSwgCisgICAgNzMsIDc4LCAxMjgsIDkwLCA3MiwgNjUsIDY1LCAxMjgsIDkwLCA3MiwgNjUsIDEyOCwgOTAsIDcyLCAxMjgsIDkwLCA2OSwgCisgICAgODQsIDY1LCAxMjgsIDkwLCA2OSwgODIsIDc5LCAxMjgsIDkwLCA2OSwgODIsIDIwNywgOTAsIDY5LCA3OCwgMTI4LCA5MCwgCisgICAgNjksIDc3LCA3NiwgODksIDY1LCAxMjgsIDkwLCA2OSwgNzcsIDc2LCA3NCwgNjUsIDEyOCwgOTAsIDY5LCA1MCwgMTI4LCAKKyAgICA5MCwgMTk3LCA5MCwgNjUsIDg5LCA3OCwgMTI4LCA5MCwgNjUsIDg5LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA4OSwgNzMsIAorICAgIDIwNiwgOTAsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDkwLCA2NSwgODQsIDY1LCAxMjgsIDkwLCA2NSwgCisgICAgODIsIDgxLCA2NSwgMTI4LCA5MCwgNjUsIDgyLCA3NiwgMTI4LCA5MCwgNjUsIDgxLCA2OSwgMTk4LCA5MCwgNjUsIDc3LCAKKyAgICA4OCwgMTI4LCA5MCwgNjUsIDIwNCwgOTAsIDY1LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA3MywgMjA2LCA5MCwgNjUsIDczLCAKKyAgICAxMjgsIDkwLCA2NSwgNzIsIDEyOCwgOTAsIDY1LCAyMDAsIDkwLCA2NSwgNzEsIDEyOCwgOTAsIDY1LCA2OSwgNzAsIDEyOCwgCisgICAgOTAsIDY1LCA1NSwgMTI4LCA5MCwgMTkzLCA5MCwgNDgsIDQ5LCA1NCwgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcxLCAKKyAgICAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIAorICAgIDY4LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgCisgICAgNTQsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MywgMTI4LCA5MCwgNDgsIDQ5LCAKKyAgICA1MywgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcxLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MCwgMTI4LCA5MCwgNDgsIAorICAgIDQ5LCA1MywgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY4LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NywgMTI4LCA5MCwgCisgICAgNDgsIDQ5LCA1MywgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDUzLCAxMjgsIDkwLCAKKyAgICA0OCwgNDksIDUyLCAxMjgsIDkwLCA0OCwgNDksIDUxLCAxMjgsIDkwLCA0OCwgNDksIDUwLCAxMjgsIDkwLCA0OCwgNDksIAorICAgIDQ5LCAxMjgsIDkwLCA0OCwgNDksIDQ4LCAxMjgsIDkwLCA0OCwgNDgsIDU3LCAxMjgsIDkwLCA0OCwgNDgsIDU2LCAxMjgsIAorICAgIDkwLCA0OCwgNDgsIDU1LCAxMjgsIDkwLCA0OCwgNDgsIDU0LCAxMjgsIDkwLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA5MCwgCisgICAgNDgsIDQ4LCA1MywgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIDEyOCwgOTAsIDQ4LCAKKyAgICA0OCwgNTEsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgMTI4LCA5MCwgNDgsIAorICAgIDQ4LCA1MCwgNjgsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NiwgMTI4LCA5MCwgCisgICAgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDEyOCwgOTAsIDQ4LCA0OCwgNDksIDEyOCwgOTAsIDEyOCwgCisgICAgMjE4LCA4OSwgODksIDg4LCAxMjgsIDg5LCA4OSwgODQsIDEyOCwgODksIDg5LCA4MiwgODgsIDEyOCwgODksIDg5LCA4MiwgCisgICAgMTI4LCA4OSwgODksIDgwLCAxMjgsIDg5LCA4OSwgNjksIDEyOCwgODksIDg5LCA2NSwgNjUsIDEyOCwgODksIDg5LCA2NSwgCisgICAgMTI4LCA4OSwgODksIDEyOCwgODksIDg3LCA3OSwgNzksIDEyOCwgODksIDg3LCA3OSwgMTI4LCA4OSwgODcsIDczLCA3MywgCisgICAgMTI4LCA4OSwgODcsIDczLCAxMjgsIDg5LCA4NywgNjksIDEyOCwgODksIDg3LCA2NSwgNjUsIDEyOCwgODksIDg3LCA2NSwgCisgICAgMTI4LCA4OSwgODYsIDEyOCwgODksIDg1LCA4OCwgMTI4LCA4OSwgODUsIDg3LCA3OSwgODEsIDEyOCwgODksIDg1LCA4NSwgCisgICAgNzUsIDY1LCA3NiwgNjksIDY1LCA4MCwgNzMsIDc4LCA4NCwgODUsIDEyOCwgODksIDg1LCA4NSwgMTI4LCA4OSwgODUsIDg0LCAKKyAgICAxMjgsIDg5LCA4NSwgODMsIDEyOCwgODksIDg1LCAyMTEsIDg5LCA4NSwgODIsIDg4LCAxMjgsIDg5LCA4NSwgODIsIDEyOCwgCisgICAgODksIDg1LCA4MSwgMTI4LCA4OSwgODUsIDIwOSwgODksIDg1LCA4MCwgMTI4LCA4OSwgODUsIDc5LCA4OCwgMTI4LCA4OSwgCisgICAgODUsIDc5LCA4NCwgMTI4LCA4OSwgODUsIDc5LCA4MCwgMTI4LCA4OSwgODUsIDc5LCA3NywgMTI4LCA4OSwgODUsIDc5LCAKKyAgICAxMjgsIDg5LCA4NSwgNzgsIDEyOCwgODksIDg1LCA3NywgMTI4LCA4OSwgODUsIDc0LCAxMjgsIDg5LCA4NSwgNjksIDgxLCAKKyAgICAxMjgsIDg5LCA4NSwgNjksIDEyOCwgODksIDg1LCA2OCwgNzIsIDEyOCwgODksIDg1LCA2OCwgMjAwLCA4OSwgODUsIDY1LCAKKyAgICA3OCwgMTI4LCA4OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODksIDg1LCA0NSwgODksIDY5LCA3OSwgMTI4LCA4OSwgODUsIAorICAgIDQ1LCA4OSwgNjksIDEyOCwgODksIDg1LCA0NSwgODUsIDEyOCwgODksIDg1LCA0NSwgNzksIDEyOCwgODksIDg1LCA0NSwgCisgICAgNzMsIDEyOCwgODksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDY1LCAKKyAgICA2OSwgMTI4LCA4OSwgODUsIDQ1LCA2NSwgMTI4LCA4OSwgODUsIDEyOCwgODksIDIxMywgODksIDgyLCA4OSwgMTI4LCA4OSwgCisgICAgODAsIDgzLCA3MywgNzYsIDczLCAxMjgsIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDczLCAxMjgsIDg5LCA4MCwgNzksIDc1LCAKKyAgICA4MiwgNzMsIDgzLCA3MywgODMsIDEyOCwgODksIDgwLCA3OSwgNzUsIDgyLCA3MywgODMsIDczLCAyMTEsIDg5LCA4MCwgNzksIAorICAgIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIDg5LCA3OSwgODksIDEyOCwgODksIDc5LCA4OCwgCisgICAgMTI4LCA4OSwgNzksIDg3LCA2OCwgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCA4NSwgNzYsIDc4LCA2OSwgODMsIDgzLCAKKyAgICAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCAyMDQsIDg5LCA3OSwgODQsIDEyOCwgODksIDc5LCA4MiwgNzMsIAorICAgIDEyOCwgODksIDc5LCA4MSwgMTI4LCA4OSwgNzksIDIwOSwgODksIDc5LCA4MCwgMTI4LCA4OSwgNzksIDc5LCAxMjgsIDg5LCAKKyAgICA3OSwgNzcsIDc5LCAxMjgsIDg5LCA3OSwgNzEsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIAorICAgIDEyOCwgODksIDc5LCAxOTYsIDg5LCA3OSwgNjUsIDEyOCwgODksIDc5LCA0NSwgODksIDY5LCA3OSwgMTI4LCA4OSwgNzksIAorICAgIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgNzksIDQ1LCA3OSwgMTI4LCA4OSwgCisgICAgNzksIDQ1LCA3MywgMTI4LCA4OSwgNzksIDQ1LCA2OSwgNzksIDEyOCwgODksIDc5LCA0NSwgNjUsIDY5LCAxMjgsIDg5LCAKKyAgICA3OSwgNDUsIDY1LCAxMjgsIDg5LCA3OSwgMTI4LCA4OSwgMjA3LCA4OSwgNzMsIDkwLCA2OSwgODQsIDEyOCwgODksIDczLCAKKyAgICA4OCwgMTI4LCA4OSwgNzMsIDg3LCA3OCwgMTI4LCA4OSwgNzMsIDg0LCAxMjgsIDg5LCA3MywgODAsIDEyOCwgODksIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgODksIDczLCA3MywgMTI4LCA4OSwgNzMsIDE5OSwgODksIDczLCA2OSwgODgsIDEyOCwgODksIDczLCAKKyAgICA2OSwgODQsIDEyOCwgODksIDczLCA2OSwgODAsIDEyOCwgODksIDczLCA2OSwgNjksIDEyOCwgODksIDczLCA2OSwgMTI4LCAKKyAgICA4OSwgNzMsIDY4LCA2OCwgNzMsIDgzLCAyMDAsIDg5LCA3MywgNDUsIDg1LCAxMjgsIDg5LCA3MywgMTI4LCA4OSwgNzAsIAorICAgIDY5LCA4MywgNzMsIDgzLCAxMjgsIDg5LCA3MCwgNjksIDgzLCA3MywgMjExLCA4OSwgNzAsIDY5LCAyMDYsIDg5LCA2OSwgCisgICAgODksIDEyOCwgODksIDY5LCA4NywgMTI4LCA4OSwgNjksIDg1LCA4OCwgMTI4LCA4OSwgNjksIDg1LCA4MiwgNjUsIDY5LCAKKyAgICAxMjgsIDg5LCA2OSwgODUsIDgxLCAxMjgsIDg5LCA2OSwgODUsIDc3LCAxMjgsIDg5LCA2OSwgODUsIDY1LCA2OSwgODQsIAorICAgIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg5LCA2OSwgODQsIDczLCA4NiwgMTI4LCA4OSwgNjksIDgzLCA4NCwgCisgICAgODUsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCAKKyAgICA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCA4MywgCisgICAgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIAorICAgIDc4LCA3MSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgCisgICAgODksIDY5LCA4MiwgODUsIDEyOCwgODksIDY5LCA4MiwgMjEzLCA4OSwgNjksIDgyLCA3MywgMTI4LCA4OSwgNjksIDgyLCAKKyAgICA2NSwgMjAwLCA4OSwgNjksIDgyLCAxMjgsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgCisgICAgMTI4LCA4OSwgNjksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA4NSwgMTI4LCA4OSwgNjksIDc5LCAKKyAgICA0NSwgNzksIDEyOCwgODksIDY5LCA3OCwgNzMsIDgzLCA2OSwgMjAxLCA4OSwgNjksIDc4LCA2NSwgODAsIDEyOCwgODksIAorICAgIDY5LCA3OCwgMTI4LCA4OSwgNjksIDIwNiwgODksIDY5LCA3NiwgNzYsIDc5LCA4NywgMTI4LCA4OSwgNjksIDc2LCA3NiwgCisgICAgNzksIDIxNSwgODksIDY5LCA3MywgNzgsIDEyOCwgODksIDY5LCA3MiwgMTI4LCA4OSwgNjksIDY5LCA3MSwgMTI4LCA4OSwgCisgICAgNjksIDY5LCAxMjgsIDg5LCA2OSwgNjUsIDIxMCwgODksIDY5LCA2NSwgMTI4LCA4OSwgNjUsIDkwLCA5MCwgMTI4LCA4OSwgCisgICAgNjUsIDkwLCA3MiwgMTI4LCA4OSwgNjUsIDkwLCAxMjgsIDg5LCA2NSwgODksIDY4LCAxMjgsIDg5LCA2NSwgODksIDY1LCAKKyAgICA3OCwgNzgsIDY1LCAxMjgsIDg5LCA2NSwgODksIDEyOCwgODksIDY1LCA4NywgNzgsIDEyOCwgODksIDY1LCA4NywgMTI4LCAKKyAgICA4OSwgNjUsIDg2LCAxMjgsIDg5LCA2NSwgODUsIDEyOCwgODksIDY1LCA4NCwgODQsIDEyOCwgODksIDY1LCA4NCwgNzMsIAorICAgIDEyOCwgODksIDY1LCA4NCwgNzIsIDEyOCwgODksIDY1LCA4NCwgMTI4LCA4OSwgNjUsIDgzLCA4MywgMTI4LCA4OSwgNjUsIAorICAgIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDgzLCAxMjgsIDg5LCA2NSwgODIsIDgyLCAxMjgsIDg5LCA2NSwgODIsIDEyOCwgODksIAorICAgIDY1LCAyMTAsIDg5LCA2NSwgODEsIDEyOCwgODksIDY1LCA4MCwgMTI4LCA4OSwgNjUsIDc4LCA4MywgNjUsIDg5LCA2NSwgCisgICAgMTI4LCA4OSwgNjUsIDc4LCA3MSwgMTI4LCA4OSwgNjUsIDc4LCAxOTksIDg5LCA2NSwgNzgsIDEyOCwgODksIDY1LCA3NywgCisgICAgNzksIDc1LCAxMjgsIDg5LCA2NSwgNzcsIDY1LCA3NSwgNzUsIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCAxMjgsIDg5LCAKKyAgICA2NSwgNzYsIDEyOCwgODksIDY1LCA3NSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIAorICAgIDY1LCA4MywgNzIsIDEyOCwgODksIDY1LCA3NSwgMTI4LCA4OSwgNjUsIDc0LCA4NSwgODIsIDg2LCA2OSwgNjgsIDczLCAKKyAgICAxOTUsIDg5LCA2NSwgNzQsIDEyOCwgODksIDY1LCA3MywgMTI4LCA4OSwgNjUsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcyLCAKKyAgICAxMjgsIDg5LCA2NSwgNzEsIDc4LCAxMjgsIDg5LCA2NSwgNzEsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcxLCA3MiwgMTI4LCAKKyAgICA4OSwgNjUsIDcxLCAxMjgsIDg5LCA2NSwgNzAsIDIxMywgODksIDY1LCA3MCwgMTI4LCA4OSwgNjUsIDY5LCA3NywgNzcsIAorICAgIDY1LCA2OSwgMTI4LCA4OSwgNjUsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCA2OCwgNzIsIDEyOCwgODksIDY1LCA2OCwgCisgICAgNjgsIDEyOCwgODksIDY1LCA2OCwgMTI4LCA4OSwgNjUsIDY3LCA3MiwgMTI4LCA4OSwgNjUsIDY2LCA3MiwgMTI4LCA4OSwgCisgICAgNjUsIDY2LCAxMjgsIDg5LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA4OSwgNjUsIDY1LCA3MywgMTI4LCA4OSwgNjUsIDY1LCAKKyAgICA2OCwgNzksIDEyOCwgODksIDY1LCA0NSwgODksIDc5LCAxMjgsIDg5LCA2NSwgNDUsIDg1LCAxMjgsIDg5LCA2NSwgNDUsIAorICAgIDc5LCAxMjgsIDg5LCA0OCwgNDgsIDU2LCAxMjgsIDg5LCA0OCwgNDgsIDU1LCAxMjgsIDg5LCA0OCwgNDgsIDU0LCAxMjgsIAorICAgIDg5LCA0OCwgNDgsIDUzLCAxMjgsIDg5LCA0OCwgNDgsIDUyLCAxMjgsIDg5LCA0OCwgNDgsIDUxLCAxMjgsIDg5LCA0OCwgCisgICAgNDgsIDUwLCAxMjgsIDg5LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA4OSwgNDgsIDQ4LCA0OSwgMTI4LCA4OSwgNDUsIDY3LCAKKyAgICA4MiwgNjksIDE5NywgODgsIDg5LCA4OCwgMTI4LCA4OCwgODksIDg1LCAxMjgsIDg4LCA4OSwgODQsIDEyOCwgODgsIDg5LCAKKyAgICA4MiwgODgsIDEyOCwgODgsIDg5LCA4MiwgMTI4LCA4OCwgODksIDgwLCAxMjgsIDg4LCA4OSwgNzksIDc5LCA3NCwgMTI4LCAKKyAgICA4OCwgODksIDc5LCA3OSwgMTI4LCA4OCwgODksIDc5LCAxMjgsIDg4LCA4OSwgNzMsIDEyOCwgODgsIDg5LCA2OSwgNjksIAorICAgIDIwNSwgODgsIDg5LCA2OSwgNjksIDEyOCwgODgsIDg5LCA2OSwgMTI4LCA4OCwgODksIDY1LCA2NSwgMTI4LCA4OCwgODksIAorICAgIDY1LCAxMjgsIDg4LCA4OSwgMTI4LCA4OCwgODcsIDczLCAxMjgsIDg4LCA4NywgNjksIDY5LCAxMjgsIDg4LCA4NywgNjksIAorICAgIDEyOCwgODgsIDg3LCA2NSwgNjUsIDEyOCwgODgsIDg3LCA2NSwgMTI4LCA4OCwgODcsIDEyOCwgODgsIDg2LCA2OSwgMTI4LCAKKyAgICA4OCwgODYsIDY1LCAxMjgsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDg4LCA4NSwgNzksIDEyOCwgODgsIDg1LCAxMjgsIDg4LCAKKyAgICA4MywgNzIsIDY1LCA2NSwgODksIDY1LCA4NCwgNzIsIDczLCA4OSwgNjUsIDEyOCwgODgsIDc5LCA4OCwgMTI4LCA4OCwgNzksIAorICAgIDg0LCAxMjgsIDg4LCA3OSwgODIsIDEyOCwgODgsIDc5LCA4MCwgNzIsIDEyOCwgODgsIDc5LCA4MCwgMTI4LCA4OCwgNzksIAorICAgIDY1LCAxMjgsIDg4LCA3OSwgMTI4LCA4OCwgNzMsIDg4LCAxMjgsIDg4LCA3MywgODQsIDEyOCwgODgsIDczLCA4MiwgNzksIAorICAgIDIwNiwgODgsIDczLCA4MCwgMTI4LCA4OCwgNzMsIDY5LCA4OCwgMTI4LCA4OCwgNzMsIDY5LCA4NCwgMTI4LCA4OCwgNzMsIAorICAgIDY5LCA4MCwgMTI4LCA4OCwgNzMsIDY5LCAxMjgsIDg4LCA3MywgNjUsIDY2LCAxMjgsIDg4LCA3MywgMTI4LCA4OCwgNzEsIAorICAgIDEyOCwgODgsIDY5LCA4OSwgNzgsIDEyOCwgODgsIDY5LCA4MywgODQsIDY5LCAyMTEsIDg4LCA2OSwgNzIsIDEyOCwgODgsIAorICAgIDY5LCA2OSwgMTI4LCA4OCwgNjksIDEyOCwgODgsIDY1LCA4NSwgODMsIDEyOCwgODgsIDY1LCA4NSwgMTI4LCA4OCwgNjUsIAorICAgIDgwLCA3MiwgMTI4LCA4OCwgNjUsIDc4LCAxMjgsIDg4LCA2NSwgNjUsIDEyOCwgODgsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIAorICAgIDU2LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgMTI4LCA4OCwgNDgsIDQ4LCA1NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgCisgICAgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDEyOCwgODgsIDQ4LCA0OCwgNTMsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY2LCAKKyAgICAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgMTI4LCA4OCwgNDgsIDQ4LCA1MSwgMTI4LCAKKyAgICA4OCwgNDgsIDQ4LCA1MCwgMTI4LCA4OCwgNDgsIDQ4LCA0OSwgMTI4LCA4OCwgNDUsIDIxNiwgODcsIDkwLCAxMjgsIDg3LCAKKyAgICA4OSwgNzgsIDc4LCAxMjgsIDg3LCA4OSwgNzgsIDIwNiwgODcsIDg2LCA3MywgMTI4LCA4NywgODYsIDY5LCAxMjgsIDg3LCAKKyAgICA4NiwgNjUsIDEyOCwgODcsIDg2LCAxMjgsIDg3LCA4NSwgODAsIDEyOCwgODcsIDg1LCA3OSwgODgsIDEyOCwgODcsIDg1LCAKKyAgICA3OSwgODAsIDEyOCwgODcsIDg1LCA3OSwgMTI4LCA4NywgODUsIDc4LCA3NCwgMjA3LCA4NywgODUsIDc4LCAxMjgsIDg3LCAKKyAgICA4NSwgNzYsIDg1LCAxMjgsIDg3LCA4NSwgNzYsIDIxMywgODcsIDg1LCA3MywgMTI4LCA4NywgODUsIDY5LCAxMjgsIDg3LCAKKyAgICA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4NywgODUsIDY1LCA2OSwgNzgsIDEyOCwgODcsIDg1LCAxMjgsIDg3LCA4MiwgMjE3LCAKKyAgICA4NywgODIsIDc5LCA3OCwgNzEsIDEyOCwgODcsIDgyLCA3MywgODMsIDIxMiwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIAorICAgIDgzLCAxMjgsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCAyMTEsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCA2OCwgCisgICAgMTI4LCA4NywgODIsIDY5LCA3OCwgNjcsIDcyLCAxMjgsIDg3LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA4NywgODIsIDY1LCAKKyAgICA4MCwgODAsIDY5LCAxOTYsIDg3LCA4MiwgNjUsIDgwLCAxMjgsIDg3LCA3OSwgODgsIDEyOCwgODcsIDc5LCA4NywgMTI4LCAKKyAgICA4NywgNzksIDgyLCA4MywgNzIsIDczLCA4MCwgMTI4LCA4NywgNzksIDgyLCA4MiwgNzMsIDY5LCAxOTYsIDg3LCA3OSwgODIsIAorICAgIDc2LCAxOTYsIDg3LCA3OSwgODIsIDc1LCA2OSwgODIsIDEyOCwgODcsIDc5LCA4MiwgNzUsIDEyOCwgODcsIDc5LCA4MiwgCisgICAgMjAzLCA4NywgNzksIDgyLCA2OCwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDg3LCA3OSwgODIsIDE5NiwgODcsIDc5LCAKKyAgICA4MCwgMTI4LCA4NywgNzksIDc5LCA3OCwgMTI4LCA4NywgNzksIDc5LCA3NiwgMTI4LCA4NywgNzksIDc5LCA2OCwgODMsIAorICAgIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg3LCA3OSwgNzksIDY4LCAxMjgsIDg3LCA3OSwgNzgsIDEyOCwgODcsIDc5LCAyMDYsIAorICAgIDg3LCA3OSwgNzcsIDY5LCA3OCwgMjExLCA4NywgNzksIDc3LCA2OSwgMjA2LCA4NywgNzksIDc3LCA2NSwgNzgsIDIxMSwgCisgICAgODcsIDc5LCA3NywgNjUsIDc4LCAxMjgsIDg3LCA3OSwgNzcsIDY1LCAyMDYsIDg3LCA3OSwgNzYsIDc5LCA4MywgNzksIAorICAgIDEyOCwgODcsIDc5LCA3NiwgMTk4LCA4NywgNzksIDY5LCAxMjgsIDg3LCA3OSwgNjUsIDEyOCwgODcsIDczLCA4NCwgNzIsIAorICAgIDc5LCA4NSwgMjEyLCA4NywgNzMsIDg0LCA3MiwgNzMsIDc4LCAxMjgsIDg3LCA3MywgODQsIDcyLCA3MywgMjA2LCA4NywgCisgICAgNzMsIDgyLCA2OSwgMTk2LCA4NywgNzMsIDc4LCA4NCwgNjksIDgyLCAxMjgsIDg3LCA3MywgNzgsIDc1LCA3MywgNzgsIAorICAgIDE5OSwgODcsIDczLCA3OCwgNzUsIDEyOCwgODcsIDczLCA3OCwgNzQsIDY1LCAxMjgsIDg3LCA3MywgNzgsIDcxLCA4MywgCisgICAgMTI4LCA4NywgNzMsIDc4LCA2OSwgMTI4LCA4NywgNzMsIDc4LCAxOTcsIDg3LCA3MywgNzgsIDY4LCA4NSwgMTI4LCA4NywgCisgICAgNzMsIDc4LCA2OCwgNzksIDg3LCAxMjgsIDg3LCA3MywgNzgsIDY4LCAxMjgsIDg3LCA3MywgNzgsIDE5NiwgODcsIDczLCAKKyAgICA3OCwgMTI4LCA4NywgNzMsIDcxLCA3OCwgODksIDY1LCA3OCwgMTI4LCA4NywgNzMsIDcxLCA3MSwgNzYsIDIxNywgODcsIAorICAgIDczLCA3MSwgNzEsIDc2LCA2OSwgODMsIDEyOCwgODcsIDczLCA2OCwgODQsIDcyLCAxMjgsIDg3LCA3MywgNjgsIDY5LCA3OCwgCisgICAgNzMsIDc4LCAxOTksIDg3LCA3MywgNjgsIDY5LCA0NSwgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDg3LCA3MywgNjgsIAorICAgIDE5NywgODcsIDczLCA2NSwgNzgsIDcxLCA4NywgNjUsIDY1LCA3NSwgMTI4LCA4NywgNzMsIDY1LCA3OCwgNzEsIDEyOCwgCisgICAgODcsIDcyLCA3OSwgNzYsIDE5NywgODcsIDcyLCA3MywgODQsIDY5LCA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIAorICAgIDY5LCAxOTYsIDg3LCA3MiwgNzMsIDg0LCA2OSwgMTI4LCA4NywgNzIsIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDg3LCA3MiwgCisgICAgNjksIDY5LCA3NiwgNjcsIDcyLCA2NSwgNzMsIDIxMCwgODcsIDcyLCA2OSwgNjksIDc2LCAxMjgsIDg3LCA3MiwgNjksIDY5LCAKKyAgICAyMDQsIDg3LCA3MiwgNjksIDY1LCA4NCwgMTI4LCA4NywgNzIsIDY1LCA3NiwgNjksIDEyOCwgODcsIDcyLCAxMjgsIDg3LCAKKyAgICA3MSwgMTI4LCA4NywgNjksIDg4LCAxMjgsIDg3LCA2OSwgODUsIDg4LCAxMjgsIDg3LCA2OSwgODMsIDg0LCA2OSwgODIsIAorICAgIDIwNiwgODcsIDY5LCA4MywgODQsIDEyOCwgODcsIDY5LCA4MywgMjEyLCA4NywgNjksIDgwLCAxMjgsIDg3LCA2OSwgNzksIAorICAgIDEyOCwgODcsIDY5LCA3OCwgMTI4LCA4NywgNjksIDc2LCA3NiwgMTI4LCA4NywgNjksIDczLCA3MSwgNzIsIDIxMiwgODcsIAorICAgIDY5LCA3MywgNjksIDgyLCA4MywgODQsIDgyLCA2NSwgODMsIDIxMSwgODcsIDY5LCA3MywgMTI4LCA4NywgNjksIDY5LCA3OCwgCisgICAgMTI4LCA4NywgNjksIDY4LCA3MSwgNjksIDQ1LCA4NCwgNjUsIDczLCA3NiwgNjksIDE5NiwgODcsIDY5LCA2OCwgNzEsIDY5LCAKKyAgICAxMjgsIDg3LCA2OSwgNjgsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDg3LCA2OSwgNjYsIDEyOCwgODcsIDY5LCA2NSwgODIsIAorICAgIDIxNywgODcsIDY5LCA2NSwgODAsIDc5LCA3OCwgMTI4LCA4NywgNjcsIDEyOCwgODcsIDY2LCAxMjgsIDg3LCA2NSwgODksIAorICAgIDEyOCwgODcsIDY1LCAyMTcsIDg3LCA2NSwgODgsIDczLCA3OCwgMTk5LCA4NywgNjUsIDg4LCAxMjgsIDg3LCA2NSwgODcsIAorICAgIDQ1LCA2NSwgODksIDczLCA3OCwgNDUsIDgyLCA2OSwgODMsIDcyLCAxMjgsIDg3LCA2NSwgODcsIDEyOCwgODcsIDY1LCAKKyAgICAyMTUsIDg3LCA2NSwgODYsIDIxNywgODcsIDY1LCA4NiwgNzMsIDc4LCAxOTksIDg3LCA2NSwgODYsIDY5LCA4MywgMTI4LCAKKyAgICA4NywgNjUsIDg2LCA2OSwgMTI4LCA4NywgNjUsIDg2LCAxOTcsIDg3LCA2NSwgODUsIDEyOCwgODcsIDY1LCA4NCwgODQsIAorICAgIDc5LCAxMjgsIDg3LCA2NSwgODQsIDY5LCA4MiwgNzcsIDY5LCA3NiwgNzksIDc4LCAxMjgsIDg3LCA2NSwgODQsIDY5LCA4MiwgCisgICAgMTI4LCA4NywgNjUsIDg0LCA2OSwgMjEwLCA4NywgNjUsIDg0LCA2NywgNzIsIDEyOCwgODcsIDY1LCA4NCwgMTI4LCA4NywgCisgICAgNjUsIDgzLCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjUsIDgzLCA4NCwgNjksIDY2LCA2NSwgODMsIDc1LCA2OSwgODQsIAorICAgIDEyOCwgODcsIDY1LCA4MywgODMsIDY1LCA3NiwgNzYsIDY1LCA3NywgMTI4LCA4NywgNjUsIDgzLCA3NiwgNjUsIDEyOCwgCisgICAgODcsIDY1LCA4MywgNzYsIDE5MywgODcsIDY1LCA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCA2NSwgODMsIDY1LCAKKyAgICA3NiwgNzYsIDY1LCAyMDUsIDg3LCA2NSwgODIsIDc4LCA3MywgNzgsIDE5OSwgODcsIDY1LCA4MiwgNjUsIDc4LCAxOTksIAorICAgIDg3LCA2NSwgODAsIDEyOCwgODcsIDY1LCA3OCwgNzMsIDc4LCAxOTksIDg3LCA2NSwgNzgsIDcxLCA3NSwgODUsIDc5LCA4MSwgCisgICAgMTI4LCA4NywgNjUsIDc4LCA2OCwgNjksIDgyLCA2OSwgODIsIDEyOCwgODcsIDY1LCA3OCwgMTI4LCA4NywgNjUsIDc2LCAKKyAgICA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODcsIDY1LCA3NiwgNzYsIDEyOCwgODcsIDY1LCA3NiwgMjA0LCA4NywgNjUsIAorICAgIDc2LCA3NSwgMTI4LCA4NywgNjUsIDc2LCAyMDMsIDg3LCA2NSwgNzMsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDg3LCA2NSwgCisgICAgNzMsIDgzLCA4NCwgMTI4LCA4NywgNjUsIDczLCAxMjgsIDg3LCA2NSwgNjksIDc4LCAxMjgsIDg3LCA2NSwgNjksIDEyOCwgCisgICAgODcsIDY1LCA2OCwgNjgsIDY1LCAxMjgsIDg3LCA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NywgNDgsIDUwLCA1MywgMTI4LCAKICAgICA4NywgNDgsIDUwLCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA1MCwgNTIsIDEyOCwgODcsIDQ4LCA1MCwgNTEsIDEyOCwgODcsIAogICAgIDQ4LCA1MCwgNTAsIDEyOCwgODcsIDQ4LCA1MCwgNDksIDEyOCwgODcsIDQ4LCA1MCwgNDgsIDEyOCwgODcsIDQ4LCA0OSwgCiAgICAgNTcsIDEyOCwgODcsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDU2LCAxMjgsIDg3LCA0OCwgNDksIDU1LCAKQEAgLTI1OCwxMDAgKzI3NCwxMDIgQEAKICAgICA4NywgNDgsIDQ4LCA1MiwgMTI4LCA4NywgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODcsIDQ4LCA0OCwgNTEsIDEyOCwgODcsIAogICAgIDQ4LCA0OCwgNTAsIDEyOCwgODcsIDQ4LCA0OCwgNDksIDEyOCwgODYsIDkwLCA3NywgNjksIDg0LCAxMjgsIDg2LCA4OSwgCiAgICAgODgsIDEyOCwgODYsIDg5LCA4NCwgMTI4LCA4NiwgODksIDgyLCA4OCwgMTI4LCA4NiwgODksIDgyLCAxMjgsIDg2LCA4OSwgCi0gICAgODAsIDEyOCwgODYsIDg5LCAxMjgsIDg2LCA4NywgNjUsIDEyOCwgODYsIDg1LCA4OCwgMTI4LCA4NiwgODUsIDg1LCAxMjgsIAotICAgIDg2LCA4NSwgODQsIDEyOCwgODYsIDg1LCA4MiwgODgsIDEyOCwgODYsIDg1LCA4MiwgMTI4LCA4NiwgODUsIDgwLCAxMjgsIAotICAgIDg2LCA4NSwgNzYsIDcxLCA2NSwgMjEwLCA4NiwgODUsIDY5LCA4MSwgMTI4LCA4NiwgODQsIDgzLCAxMjgsIDg2LCA4NCwgCi0gICAgMTI4LCA4NiwgODMsIDU3LCA1NywgMTI4LCA4NiwgODMsIDU3LCA1NiwgMTI4LCA4NiwgODMsIDU3LCA1NSwgMTI4LCA4NiwgCi0gICAgODMsIDU3LCA1NCwgMTI4LCA4NiwgODMsIDU3LCA1MywgMTI4LCA4NiwgODMsIDU3LCA1MiwgMTI4LCA4NiwgODMsIDU3LCAKLSAgICA1MSwgMTI4LCA4NiwgODMsIDU3LCA1MCwgMTI4LCA4NiwgODMsIDU3LCA0OSwgMTI4LCA4NiwgODMsIDU3LCA0OCwgMTI4LCAKLSAgICA4NiwgODMsIDU3LCAxMjgsIDg2LCA4MywgNTYsIDU3LCAxMjgsIDg2LCA4MywgNTYsIDU2LCAxMjgsIDg2LCA4MywgNTYsIAotICAgIDU1LCAxMjgsIDg2LCA4MywgNTYsIDU0LCAxMjgsIDg2LCA4MywgNTYsIDUzLCAxMjgsIDg2LCA4MywgNTYsIDUyLCAxMjgsIAotICAgIDg2LCA4MywgNTYsIDUxLCAxMjgsIDg2LCA4MywgNTYsIDUwLCAxMjgsIDg2LCA4MywgNTYsIDQ5LCAxMjgsIDg2LCA4MywgCi0gICAgNTYsIDQ4LCAxMjgsIDg2LCA4MywgNTYsIDEyOCwgODYsIDgzLCA1NSwgNTcsIDEyOCwgODYsIDgzLCA1NSwgNTYsIDEyOCwgCi0gICAgODYsIDgzLCA1NSwgNTUsIDEyOCwgODYsIDgzLCA1NSwgNTQsIDEyOCwgODYsIDgzLCA1NSwgNTMsIDEyOCwgODYsIDgzLCAKLSAgICA1NSwgNTIsIDEyOCwgODYsIDgzLCA1NSwgNTEsIDEyOCwgODYsIDgzLCA1NSwgNTAsIDEyOCwgODYsIDgzLCA1NSwgNDksIAotICAgIDEyOCwgODYsIDgzLCA1NSwgNDgsIDEyOCwgODYsIDgzLCA1NSwgMTI4LCA4NiwgODMsIDU0LCA1NywgMTI4LCA4NiwgODMsIAotICAgIDU0LCA1NiwgMTI4LCA4NiwgODMsIDU0LCA1NSwgMTI4LCA4NiwgODMsIDU0LCA1NCwgMTI4LCA4NiwgODMsIDU0LCA1MywgCi0gICAgMTI4LCA4NiwgODMsIDU0LCA1MiwgMTI4LCA4NiwgODMsIDU0LCA1MSwgMTI4LCA4NiwgODMsIDU0LCA1MCwgMTI4LCA4NiwgCi0gICAgODMsIDU0LCA0OSwgMTI4LCA4NiwgODMsIDU0LCA0OCwgMTI4LCA4NiwgODMsIDU0LCAxMjgsIDg2LCA4MywgNTMsIDU3LCAKLSAgICAxMjgsIDg2LCA4MywgNTMsIDU2LCAxMjgsIDg2LCA4MywgNTMsIDU1LCAxMjgsIDg2LCA4MywgNTMsIDU0LCAxMjgsIDg2LCAKLSAgICA4MywgNTMsIDUzLCAxMjgsIDg2LCA4MywgNTMsIDUyLCAxMjgsIDg2LCA4MywgNTMsIDUxLCAxMjgsIDg2LCA4MywgNTMsIAotICAgIDUwLCAxMjgsIDg2LCA4MywgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNTMsIDEyOCwgODYsIAotICAgIDgzLCA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MiwgNTYsIDEyOCwgODYsIDgzLCA1MiwgNTUsIDEyOCwgODYsIDgzLCA1MiwgCi0gICAgNTQsIDEyOCwgODYsIDgzLCA1MiwgNTMsIDEyOCwgODYsIDgzLCA1MiwgNTIsIDEyOCwgODYsIDgzLCA1MiwgNTEsIDEyOCwgCi0gICAgODYsIDgzLCA1MiwgNTAsIDEyOCwgODYsIDgzLCA1MiwgNDksIDEyOCwgODYsIDgzLCA1MiwgNDgsIDEyOCwgODYsIDgzLCAKLSAgICA1MiwgMTI4LCA4NiwgODMsIDUxLCA1NywgMTI4LCA4NiwgODMsIDUxLCA1NiwgMTI4LCA4NiwgODMsIDUxLCA1NSwgMTI4LCAKLSAgICA4NiwgODMsIDUxLCA1NCwgMTI4LCA4NiwgODMsIDUxLCA1MywgMTI4LCA4NiwgODMsIDUxLCA1MiwgMTI4LCA4NiwgODMsIAotICAgIDUxLCA1MSwgMTI4LCA4NiwgODMsIDUxLCA1MCwgMTI4LCA4NiwgODMsIDUxLCA0OSwgMTI4LCA4NiwgODMsIDUxLCA0OCwgCi0gICAgMTI4LCA4NiwgODMsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDU2LCAxMjgsIDg2LCA4MywgCi0gICAgNTAsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1NCwgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA1MywgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MSwgMTI4LCA4NiwgODMsIAotICAgIDUwLCA1MywgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUzLCA0OCwgMTI4LCA4NiwgCi0gICAgODMsIDUwLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU2LCAxMjgsIDg2LCAKLSAgICA4MywgNTAsIDUyLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUzLCAxMjgsIAotICAgIDg2LCA4MywgNTAsIDUyLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUwLCAKLSAgICAxMjgsIDg2LCA4MywgNTAsIDUyLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTIsIAotICAgIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgCi0gICAgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MywgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA1MSwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MCwgMTI4LCA4NiwgODMsIAotICAgIDUwLCA1MSwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUxLCAxMjgsIDg2LCA4MywgCi0gICAgNTAsIDUwLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU1LCAxMjgsIDg2LCAKLSAgICA4MywgNTAsIDUwLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUyLCAxMjgsIAotICAgIDg2LCA4MywgNTAsIDUwLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDQ5LCAKLSAgICAxMjgsIDg2LCA4MywgNTAsIDUwLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTcsIAotICAgIDEyOCwgODYsIDgzLCA1MCwgNDksIDU2LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgCi0gICAgNTQsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUzLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA0OSwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA0OSwgMTI4LCA4NiwgODMsIAotICAgIDUwLCA0OSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU3LCAxMjgsIDg2LCA4MywgCi0gICAgNTAsIDQ4LCA1NiwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU0LCAxMjgsIDg2LCAKLSAgICA4MywgNTAsIDQ4LCA1MywgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUxLCAxMjgsIAotICAgIDg2LCA4MywgNTAsIDQ4LCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNDgsIDQ4LCAKLSAgICAxMjgsIDg2LCA4MywgNTAsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU3LCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDU3LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU0LCAxMjgsIAotICAgIDg2LCA4MywgNDksIDU3LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUxLCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDU3LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNDksIDEyOCwgODYsIDgzLCA0OSwgNTcsIAotICAgIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU3LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgCi0gICAgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1NiwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MSwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1NiwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU2LCA0OCwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU2LCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDU1LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUzLCAxMjgsIAotICAgIDg2LCA4MywgNDksIDU1LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUwLCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDU1LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTUsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgCi0gICAgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MywgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1NCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MCwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1NCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTQsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU0LCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDUzLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU1LCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDUzLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUyLCAxMjgsIAotICAgIDg2LCA4MywgNDksIDUzLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDQ5LCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDUzLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTcsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgCi0gICAgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1MiwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUyLCA0OSwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1MiwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU3LCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDUxLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU0LCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDUxLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUxLCAxMjgsIAotICAgIDg2LCA4MywgNDksIDUxLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTEsIDQ4LCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDUxLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTYsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgCi0gICAgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1MCwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUwLCA0OCwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU2LCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUzLCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUwLCAxMjgsIAotICAgIDg2LCA4MywgNDksIDQ5LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNDksIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNDgsIDU3LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTUsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU0LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA0OCwgCi0gICAgNTIsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUxLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA0OCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDgsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDQ4LCAxMjgsIDg2LCA4MywgNDksIAotICAgIDEyOCwgODYsIDgzLCAxMjgsIDg2LCA4MiwgNjUsIDY3LCA3MiwgODksIDEyOCwgODYsIDc5LCA4OCwgMTI4LCA4NiwgNzksIAotICAgIDg3LCA2OSwgNzYsIDQ1LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAyMTAsIDg2LCA3OSwgODcsIDEyOCwgODYsIDc5LCA4NSwgCi0gICAgMTI4LCA4NiwgNzksIDg0LCAxMjgsIDg2LCA3OSwgODAsIDEyOCwgODYsIDc5LCA3OSwgMTI4LCA4NiwgNzksIDc3LCAxMjgsIAotICAgIDg2LCA3OSwgNzYsIDg1LCA3NywgMTk3LCA4NiwgNzksIDc2LCA4NCwgNjUsIDcxLCAxOTcsIDg2LCA3OSwgNzYsIDY3LCA2NSwgCi0gICAgNzgsIDc5LCAxMjgsIDg2LCA3OSwgNzMsIDE5NiwgODYsIDc5LCA3MywgNjcsIDczLCA3OCwgNzEsIDEyOCwgODYsIDc5LCAKLSAgICA3MywgNjcsIDY5LCA3NiwgNjksIDgzLCAyMTEsIDg2LCA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4NiwgNzksIDY3LCA2NSwgNzYsIAotICAgIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDc5LCA2NywgNjUsIDIwNCwgODYsIDc5LCAxMjgsIDg2LCA3MywgCisgICAgODAsIDEyOCwgODYsIDg5LCAxMjgsIDg2LCA4NywgNzQsIDEyOCwgODYsIDg3LCA2NSwgMTI4LCA4NiwgODUsIDg4LCAxMjgsIAorICAgIDg2LCA4NSwgODUsIDEyOCwgODYsIDg1LCA4NCwgMTI4LCA4NiwgODUsIDgyLCA4OCwgMTI4LCA4NiwgODUsIDgyLCAxMjgsIAorICAgIDg2LCA4NSwgODAsIDEyOCwgODYsIDg1LCA3NiwgNzEsIDY1LCAyMTAsIDg2LCA4NSwgNjksIDgxLCAxMjgsIDg2LCA4NCwgCisgICAgODMsIDEyOCwgODYsIDg0LCAxMjgsIDg2LCA4MywgNTcsIDU3LCAxMjgsIDg2LCA4MywgNTcsIDU2LCAxMjgsIDg2LCA4MywgCisgICAgNTcsIDU1LCAxMjgsIDg2LCA4MywgNTcsIDU0LCAxMjgsIDg2LCA4MywgNTcsIDUzLCAxMjgsIDg2LCA4MywgNTcsIDUyLCAKKyAgICAxMjgsIDg2LCA4MywgNTcsIDUxLCAxMjgsIDg2LCA4MywgNTcsIDUwLCAxMjgsIDg2LCA4MywgNTcsIDQ5LCAxMjgsIDg2LCAKKyAgICA4MywgNTcsIDQ4LCAxMjgsIDg2LCA4MywgNTcsIDEyOCwgODYsIDgzLCA1NiwgNTcsIDEyOCwgODYsIDgzLCA1NiwgNTYsIAorICAgIDEyOCwgODYsIDgzLCA1NiwgNTUsIDEyOCwgODYsIDgzLCA1NiwgNTQsIDEyOCwgODYsIDgzLCA1NiwgNTMsIDEyOCwgODYsIAorICAgIDgzLCA1NiwgNTIsIDEyOCwgODYsIDgzLCA1NiwgNTEsIDEyOCwgODYsIDgzLCA1NiwgNTAsIDEyOCwgODYsIDgzLCA1NiwgCisgICAgNDksIDEyOCwgODYsIDgzLCA1NiwgNDgsIDEyOCwgODYsIDgzLCA1NiwgMTI4LCA4NiwgODMsIDU1LCA1NywgMTI4LCA4NiwgCisgICAgODMsIDU1LCA1NiwgMTI4LCA4NiwgODMsIDU1LCA1NSwgMTI4LCA4NiwgODMsIDU1LCA1NCwgMTI4LCA4NiwgODMsIDU1LCAKKyAgICA1MywgMTI4LCA4NiwgODMsIDU1LCA1MiwgMTI4LCA4NiwgODMsIDU1LCA1MSwgMTI4LCA4NiwgODMsIDU1LCA1MCwgMTI4LCAKKyAgICA4NiwgODMsIDU1LCA0OSwgMTI4LCA4NiwgODMsIDU1LCA0OCwgMTI4LCA4NiwgODMsIDU1LCAxMjgsIDg2LCA4MywgNTQsIAorICAgIDU3LCAxMjgsIDg2LCA4MywgNTQsIDU2LCAxMjgsIDg2LCA4MywgNTQsIDU1LCAxMjgsIDg2LCA4MywgNTQsIDU0LCAxMjgsIAorICAgIDg2LCA4MywgNTQsIDUzLCAxMjgsIDg2LCA4MywgNTQsIDUyLCAxMjgsIDg2LCA4MywgNTQsIDUxLCAxMjgsIDg2LCA4MywgCisgICAgNTQsIDUwLCAxMjgsIDg2LCA4MywgNTQsIDQ5LCAxMjgsIDg2LCA4MywgNTQsIDQ4LCAxMjgsIDg2LCA4MywgNTQsIDEyOCwgCisgICAgODYsIDgzLCA1MywgNTcsIDEyOCwgODYsIDgzLCA1MywgNTYsIDEyOCwgODYsIDgzLCA1MywgNTUsIDEyOCwgODYsIDgzLCAKKyAgICA1MywgNTQsIDEyOCwgODYsIDgzLCA1MywgNTMsIDEyOCwgODYsIDgzLCA1MywgNTIsIDEyOCwgODYsIDgzLCA1MywgNTEsIAorICAgIDEyOCwgODYsIDgzLCA1MywgNTAsIDEyOCwgODYsIDgzLCA1MywgNDksIDEyOCwgODYsIDgzLCA1MywgNDgsIDEyOCwgODYsIAorICAgIDgzLCA1MywgMTI4LCA4NiwgODMsIDUyLCA1NywgMTI4LCA4NiwgODMsIDUyLCA1NiwgMTI4LCA4NiwgODMsIDUyLCA1NSwgCisgICAgMTI4LCA4NiwgODMsIDUyLCA1NCwgMTI4LCA4NiwgODMsIDUyLCA1MywgMTI4LCA4NiwgODMsIDUyLCA1MiwgMTI4LCA4NiwgCisgICAgODMsIDUyLCA1MSwgMTI4LCA4NiwgODMsIDUyLCA1MCwgMTI4LCA4NiwgODMsIDUyLCA0OSwgMTI4LCA4NiwgODMsIDUyLCAKKyAgICA0OCwgMTI4LCA4NiwgODMsIDUyLCAxMjgsIDg2LCA4MywgNTEsIDU3LCAxMjgsIDg2LCA4MywgNTEsIDU2LCAxMjgsIDg2LCAKKyAgICA4MywgNTEsIDU1LCAxMjgsIDg2LCA4MywgNTEsIDU0LCAxMjgsIDg2LCA4MywgNTEsIDUzLCAxMjgsIDg2LCA4MywgNTEsIAorICAgIDUyLCAxMjgsIDg2LCA4MywgNTEsIDUxLCAxMjgsIDg2LCA4MywgNTEsIDUwLCAxMjgsIDg2LCA4MywgNTEsIDQ5LCAxMjgsIAorICAgIDg2LCA4MywgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDU0LCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MywgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTMsIAorICAgIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MywgNDksIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NywgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MiwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NCwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1MiwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MSwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA1MiwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA0OCwgMTI4LCAKKyAgICA4NiwgODMsIDUwLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU2LCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDUxLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUzLCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTEsIAorICAgIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NiwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MywgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1MCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MCwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA1MCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTAsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUwLCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDQ5LCA1NywgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNDksIDU1LCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUyLCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNDksIAorICAgIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgCisgICAgNTcsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NSwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA0OCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MiwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA0OCwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA0OSwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA0OCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NywgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NSwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1NywgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MiwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1NywgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU3LCA0OSwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1NywgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU3LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU2LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU0LCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDU2LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTYsIAorICAgIDUxLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNDksIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTYsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU2LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NywgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NCwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1NSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MSwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1NSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU1LCA0OCwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU2LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU0LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUzLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDU0LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTQsIAorICAgIDUwLCAxMjgsIDg2LCA4MywgNDksIDU0LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1MywgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MywgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1MywgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MCwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1MywgNDksIDEyOCwgODYsIDgzLCA0OSwgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUzLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUyLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU1LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDUyLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUyLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDUyLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTIsIAorICAgIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUyLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgCisgICAgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1MSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MiwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1MSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUxLCA0OSwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1MSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU3LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUwLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU0LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDUwLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUxLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDUwLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTAsIAorICAgIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA0OSwgCisgICAgNTYsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU1LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA0OSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUyLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MSwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA0OSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNDksIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA0OCwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU2LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDQ4LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUzLCAxMjgsIAorICAgIDg2LCA4MywgNDksIDQ4LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUwLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDQ4LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNDgsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgMTI4LCA4NiwgODMsIDEyOCwgODYsIDgyLCA2NSwgNjcsIDcyLCA4OSwgMTI4LCA4NiwgNzksIAorICAgIDg4LCAxMjgsIDg2LCA3OSwgODcsIDY5LCA3NiwgNDUsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIDIxMCwgODYsIDc5LCA4NywgCisgICAgMTI4LCA4NiwgNzksIDg1LCAxMjgsIDg2LCA3OSwgODQsIDEyOCwgODYsIDc5LCAyMTEsIDg2LCA3OSwgODAsIDEyOCwgODYsIAorICAgIDc5LCA3OSwgNzMsIDEyOCwgODYsIDc5LCA3OSwgMTI4LCA4NiwgNzksIDc3LCAxMjgsIDg2LCA3OSwgNzYsIDg1LCA3NywgCisgICAgMTk3LCA4NiwgNzksIDc2LCA4NCwgNjUsIDcxLCAxOTcsIDg2LCA3OSwgNzYsIDc2LCA2OSwgODksIDY2LCA2NSwgNzYsIDc2LCAKKyAgICAxMjgsIDg2LCA3OSwgNzYsIDY3LCA2NSwgNzgsIDc5LCAxMjgsIDg2LCA3OSwgNzYsIDY1LCA4MCwgODUsIDIwMywgODYsIAorICAgIDc5LCA3MywgMTk2LCA4NiwgNzksIDczLCA2NywgNzMsIDc4LCA3MSwgMTI4LCA4NiwgNzksIDczLCA2NywgNjksIDc2LCA2OSwgCisgICAgODMsIDIxMSwgODYsIDc5LCA3MywgNjcsIDY5LCAxOTYsIDg2LCA3OSwgNjcsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA4NiwgNzksIDY3LCA2NSwgMjA0LCA4NiwgNzksIDEyOCwgODYsIDczLCA4OSwgNzksIDEyOCwgODYsIDczLCAKICAgICA4OCwgMTI4LCA4NiwgNzMsIDg0LCA4MiwgNzMsIDc5LCA3NiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIAogICAgIDc2LCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgMTI4LCA4NiwgCiAgICAgNzMsIDg0LCAxMjgsIDg2LCA3MywgODMsIDczLCA3MSwgNzksIDg0LCA3MiwgNzMsIDE5NSwgODYsIDczLCA4MywgNjUsIDgyLCAKQEAgLTM2MCwxMjMgKzM3OCwxMjcgQEAKICAgICA4MiwgNzEsIDY1LCAxMjgsIDg2LCA3MywgODIsIDY1LCA3NywgNjUsIDEyOCwgODYsIDczLCA4MCwgMTI4LCA4NiwgNzMsIAogICAgIDc5LCA3NiwgNzMsIDc4LCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCA0NSwgNTEsIDEyOCwgODYsIDczLCA3OCwgCiAgICAgNjksIDcxLCA2NSwgODIsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgMTI4LCA4NiwgNzMsIDc4LCAKLSAgICA2OSwgNzEsIDY1LCAyMTAsIDg2LCA3MywgNzgsIDY5LCAxMjgsIDg2LCA3MywgNzgsIDEyOCwgODYsIDczLCA3NiwgNzYsIAotICAgIDY1LCA3MSwgNjksIDEyOCwgODYsIDczLCA3MywgMTI4LCA4NiwgNzMsIDY5LCA4OCwgMTI4LCA4NiwgNzMsIDY5LCA4NywgCi0gICAgNzMsIDc4LCAxOTksIDg2LCA3MywgNjksIDg3LCA2OCwgNjUsIDg0LCAxOTMsIDg2LCA3MywgNjksIDg0LCAxMjgsIDg2LCAKLSAgICA3MywgNjksIDgwLCAxMjgsIDg2LCA3MywgNjksIDEyOCwgODYsIDczLCA2OCwgNzQsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIAotICAgIDY4LCA3NCwgMTI4LCA4NiwgNzMsIDY4LCA2OSwgNzksIDY3LCA2NSwgODMsIDgzLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4NiwgCi0gICAgNzMsIDY4LCA2OSwgMjA3LCA4NiwgNzMsIDY4LCA2NSwgMTI4LCA4NiwgNzMsIDY3LCA4NCwgNzksIDgyLCAyMTcsIDg2LCAKLSAgICA3MywgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzMsIDEyOCwgODYsIDcwLCA2NSwgMTI4LCA4NiwgNjksIAotICAgIDg4LCAxMjgsIDg2LCA2OSwgODcsIDEyOCwgODYsIDY5LCAyMTUsIDg2LCA2OSwgODUsIDg4LCAxMjgsIDg2LCA2OSwgODUsIAotICAgIDc3LCAxMjgsIDg2LCA2OSwgODUsIDY1LCA2OSwgODAsIDY5LCA3OCwgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDEyOCwgCi0gICAgODYsIDY5LCA4MywgODQsIDY1LCAxMjgsIDg2LCA2OSwgODMsIDgzLCA2OSwgMjA0LCA4NiwgNjksIDgyLCAyMTcsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDg5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNzYsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1NCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgCi0gICAgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MywgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgCi0gICAgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MiwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgCi0gICAgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgCi0gICAgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgCi0gICAgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgCi0gICAgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA0OSwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgCi0gICAgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgCi0gICAgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgMTI4LCA4NiwgNjksIDgyLCA4MywgNzMsIDY3LCA3NiwgNjksIDEyOCwgODYsIAotICAgIDY5LCA4MiwgODMsIDE5NywgODYsIDY5LCA4MiwgNzEsIDY5LCAxMjgsIDg2LCA2OSwgODIsIDY4LCA3MywgNzEsIDgyLCA3MywgCi0gICAgODMsIDEyOCwgODYsIDY5LCA4MCwgMTI4LCA4NiwgNjksIDc4LCA2OCwgMTI4LCA4NiwgNjksIDczLCA3NiwgMTI4LCA4NiwgCi0gICAgNjksIDcyLCA3MywgNjcsIDc2LCA2OSwgMTI4LCA4NiwgNjksIDcyLCAxMjgsIDg2LCA2OSwgMjAwLCA4NiwgNjksIDY5LCAKLSAgICAxMjgsIDg2LCA2OSwgMTk3LCA4NiwgNjksIDY4LCA2OSwgMTI4LCA4NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODYsIDY1LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODYsIDY1LCA4OCwgMTI4LCA4NiwgNjUsIDg2LCAxMjgsIDg2LCA2NSwgMjE0LCAKLSAgICA4NiwgNjUsIDg1LCAxMjgsIDg2LCA2NSwgODQsIDcyLCA4OSwgMTI4LCA4NiwgNjUsIDg0LCAxMjgsIDg2LCA2NSwgODMsIAotICAgIDg0LCA3OCwgNjksIDgzLCAyMTEsIDg2LCA2NSwgODMsIDczLCA4MywgMTI4LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4NiwgCi0gICAgNjUsIDgyLCA3MywgNzUsIDY1LCAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgNzgsIDIxMiwgODYsIDY1LCA4MiwgNzMsIDY1LCAKLSAgICAxMjgsIDg2LCA2NSwgODIsIDczLCAxOTMsIDg2LCA2NSwgODIsIDY5LCA3MywgNjUsIDIwMSwgODYsIDY1LCA4MiwgNjksIAotICAgIDczLCAxOTMsIDg2LCA2NSwgODAsIDc5LCA4NSwgODIsIDgzLCAxMjgsIDg2LCA2NSwgODAsIDEyOCwgODYsIDY1LCA3OCwgCi0gICAgNjksIDEyOCwgODYsIDY1LCA3NywgNjUsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDg2LCA2NSwgNzcsIDY1LCAKLSAgICA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCAxOTMsIDg2LCA2NSwgNzYsIDc2LCA2OSwgODksIDEyOCwgODYsIDY1LCA3MywgCi0gICAgMTI4LCA4NiwgNjUsIDcyLCAxMjgsIDg2LCA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NiwgNjUsIDY1LCAxMjgsIDg2LCA0OCwgCi0gICAgNTIsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIDUyLCA0OCwgMTI4LCA4NiwgNDgsIDUxLCA1NywgMTI4LCA4NiwgNDgsIDUxLCAKLSAgICA1NiwgMTI4LCA4NiwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNTUsIDEyOCwgODYsIDQ4LCA1MSwgNTQsIAotICAgIDEyOCwgODYsIDQ4LCA1MSwgNTMsIDEyOCwgODYsIDQ4LCA1MSwgNTIsIDEyOCwgODYsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIAotICAgIDg2LCA0OCwgNTEsIDUxLCAxMjgsIDg2LCA0OCwgNTEsIDUwLCAxMjgsIDg2LCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA4NiwgCi0gICAgNDgsIDUxLCA0OSwgMTI4LCA4NiwgNDgsIDUxLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNDgsIDEyOCwgODYsIDQ4LCAKLSAgICA1MCwgNTcsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDU3LCAxMjgsIDg2LCA0OCwgNTAsIDU2LCA2NSwgMTI4LCA4NiwgNDgsIAotICAgIDUwLCA1NiwgMTI4LCA4NiwgNDgsIDUwLCA1NSwgMTI4LCA4NiwgNDgsIDUwLCA1NCwgMTI4LCA4NiwgNDgsIDUwLCA1MywgCi0gICAgMTI4LCA4NiwgNDgsIDUwLCA1MiwgMTI4LCA4NiwgNDgsIDUwLCA1MSwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTEsIDEyOCwgCi0gICAgODYsIDQ4LCA1MCwgNTAsIDEyOCwgODYsIDQ4LCA1MCwgNDksIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDc2LCAxMjgsIDg2LCAKLSAgICA0OCwgNTAsIDQ4LCA3NSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzQsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDczLCAxMjgsIAotICAgIDg2LCA0OCwgNTAsIDQ4LCA3MiwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzEsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDcwLCAKLSAgICAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2OSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjgsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIAotICAgIDY3LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2NiwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgCi0gICAgNDgsIDEyOCwgODYsIDQ4LCA0OSwgNTcsIDEyOCwgODYsIDQ4LCA0OSwgNTYsIDEyOCwgODYsIDQ4LCA0OSwgNTUsIDEyOCwgCi0gICAgODYsIDQ4LCA0OSwgNTQsIDEyOCwgODYsIDQ4LCA0OSwgNTMsIDEyOCwgODYsIDQ4LCA0OSwgNTIsIDEyOCwgODYsIDQ4LCAKLSAgICA0OSwgNTEsIDEyOCwgODYsIDQ4LCA0OSwgNTAsIDY2LCAxMjgsIDg2LCA0OCwgNDksIDUwLCA2NSwgMTI4LCA4NiwgNDgsIAotICAgIDQ5LCA1MCwgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgNjcsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDY2LCAxMjgsIDg2LCA0OCwgCi0gICAgNDksIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgMTI4LCA4NiwgNDgsIDQ5LCA0OCwgMTI4LCA4NiwgNDgsIDQ4LCAKLSAgICA1NywgMTI4LCA4NiwgNDgsIDQ4LCA1NiwgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgODYsIDQ4LCA0OCwgNTUsIAotICAgIDY1LCAxMjgsIDg2LCA0OCwgNDgsIDU1LCAxMjgsIDg2LCA0OCwgNDgsIDU0LCAxMjgsIDg2LCA0OCwgNDgsIDUzLCAxMjgsIAotICAgIDg2LCA0OCwgNDgsIDUyLCAxMjgsIDg2LCA0OCwgNDgsIDUxLCAxMjgsIDg2LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4NiwgCi0gICAgNDgsIDQ4LCA1MCwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNzMsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDcyLCAxMjgsIDg2LCAKLSAgICA0OCwgNDgsIDQ5LCA3MSwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNzAsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY5LCAxMjgsIAotICAgIDg2LCA0OCwgNDgsIDQ5LCA2OCwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjcsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY2LCAKLSAgICAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgMTI4LCA4NSwgOTAsIDg1LCAxMjgsIDg1LCAKLSAgICA5MCwgNTEsIDEyOCwgODUsIDkwLCAxNzksIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODUsIDg5LCAxMjgsIDg1LCAKLSAgICA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4NSwgODUsIDg1LCAxMjgsIDg1LCA4NSwgODUsIDUxLCAxMjgsIAotICAgIDg1LCA4NSwgODUsIDUwLCAxMjgsIDg1LCA4NSwgNjksIDEyOCwgODUsIDg0LCA4NSwgNzUsIDczLCAxMjgsIDg1LCA4MywgCi0gICAgODMsIDg1LCA1MSwgMTI4LCA4NSwgODMsIDgzLCA4NSwgMTI4LCA4NSwgODMsIDcyLCA4OCwgMTI4LCA4NSwgODMsIDcyLCAKLSAgICA4NSwgNzcsIDg4LCAxMjgsIDg1LCA4MywgNzIsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4MywgNzIsIDUwLCAxMjgsIAotICAgIDg1LCA4MywgNzIsIDEyOCwgODUsIDgzLCAyMDAsIDg1LCA4MywgNjksIDE5NiwgODUsIDgzLCA2OSwgNDUsIDUwLCAxMjgsIAotICAgIDg1LCA4MywgNjksIDQ1LCA0OSwgMTI4LCA4NSwgODMsIDY5LCAxMjgsIDg1LCA4MywgMTk3LCA4NSwgODIsIDg1LCAyMTgsIAotICAgIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg1LCA4MiwgODUsIDY4LCA2NSwgMTI4LCA4NSwgODIsIDg1LCA2OCwgMTkzLCA4NSwgCi0gICAgODIsIDg1LCAxMjgsIDg1LCA4MiwgMjEzLCA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4NSwgCi0gICAgODIsIDczLCA1MSwgMTI4LCA4NSwgODIsIDczLCAxMjgsIDg1LCA4MiwgNjUsIDc4LCA4NSwgODMsIDEyOCwgODUsIDgyLCAKLSAgICA2NSwgMTI4LCA4NSwgODIsIDUyLCAxMjgsIDg1LCA4MiwgNTAsIDEyOCwgODUsIDgyLCAxNzgsIDg1LCA4MCwgODcsIDY1LCAKLSAgICA4MiwgNjgsIDgzLCAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgCi0gICAgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDE5NiwgODUsIDgwLCA4NCwgODUsIDgyLCA3OCwgMTI4LCA4NSwgODAsIDgzLCAKLSAgICA3MywgNzYsIDc5LCA3OCwgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIDc5LCAyMDYsIDg1LCA4MCwgODIsIDczLCA3MSwgNzIsIAotICAgIDIxMiwgODUsIDgwLCA4MCwgNjksIDIxMCwgODUsIDgwLCA2NSwgNjgsIDcyLCA3NywgNjUsIDc4LCA3MywgODksIDY1LCAKLSAgICAxMjgsIDg1LCA4MCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDg1LCA3OSwgNzgsIDEyOCwgODUsIAotICAgIDc4LCA3OCwgMTI4LCA4NSwgNzgsIDc3LCA2NSwgODIsIDgyLCA3MywgNjksIDE5NiwgODUsIDc4LCA3NSwgNzgsIDc5LCA4NywgCi0gICAgNzgsIDEyOCwgODUsIDc4LCA3MywgODYsIDY5LCA4MiwgODMsIDY1LCAyMDQsIDg1LCA3OCwgNzMsIDg0LCA4OSwgMTI4LCAKLSAgICA4NSwgNzgsIDczLCA4NCwgMTI4LCA4NSwgNzgsIDczLCAyMTIsIDg1LCA3OCwgNzMsIDc5LCA3OCwgMTI4LCA4NSwgNzgsIAotICAgIDczLCA3OSwgMjA2LCA4NSwgNzgsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDg1LCA3OCwgNjgsIDIwNywgODUsIDc4LCA2OCwgCi0gICAgNjksIDgyLCA4NCwgNzMsIDY5LCAxMjgsIDg1LCA3OCwgNjgsIDY5LCA4MiwgNzYsIDczLCA3OCwgMTk3LCA4NSwgNzgsIDY4LCAKLSAgICA2OSwgODIsIDY4LCA3OSwgODQsIDEyOCwgODUsIDc4LCA2OCwgNjksIDgyLCA2NiwgNjUsIDgyLCAxMjgsIDg1LCA3OCwgNjgsIAotICAgIDY5LCAyMTAsIDg1LCA3OCwgNjcsIDczLCAxOTMsIDg1LCA3OCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDY5LCA2OCwgCi0gICAgMTI4LCA4NSwgNzgsIDY1LCA4MCwgMTI4LCA4NSwgNzgsIDY1LCA3NywgODUsIDgzLCA2OSwgMTk2LCA4NSwgNzgsIDY1LCAKLSAgICAxMjgsIDg1LCAyMDYsIDg1LCA3NywgODUsIDc3LCAxMjgsIDg1LCA3NywgODUsIDIwNSwgODUsIDc3LCA2NiwgODIsIDY5LCAKLSAgICA3NiwgNzYsIDY1LCAxMjgsIDg1LCA3NywgNjYsIDgyLCA2OSwgNzYsIDc2LCAxOTMsIDg1LCA3NywgNjYsIDczLCA3OCwgCisgICAgNjksIDcxLCA2NSwgMjEwLCA4NiwgNzMsIDc4LCA2OSwgMTI4LCA4NiwgNzMsIDc4LCAxOTcsIDg2LCA3MywgNzgsIDEyOCwgCisgICAgODYsIDczLCA3NiwgNzYsIDY1LCA3MSwgNjksIDEyOCwgODYsIDczLCA3MywgMTI4LCA4NiwgNzMsIDY5LCA4OCwgMTI4LCAKKyAgICA4NiwgNzMsIDY5LCA4NywgNzMsIDc4LCAxOTksIDg2LCA3MywgNjksIDg3LCA2OCwgNjUsIDg0LCAxOTMsIDg2LCA3MywgNjksIAorICAgIDg0LCAxMjgsIDg2LCA3MywgNjksIDIxMiwgODYsIDczLCA2OSwgODAsIDEyOCwgODYsIDczLCA2OSwgMTI4LCA4NiwgNzMsIAorICAgIDY4LCA3NCwgNDUsIDUwLCAxMjgsIDg2LCA3MywgNjgsIDc0LCAxMjgsIDg2LCA3MywgNjgsIDY5LCA3OSwgNjcsIDY1LCA4MywgCisgICAgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDg2LCA3MywgNjgsIDY5LCAyMDcsIDg2LCA3MywgNjgsIDY1LCAxMjgsIDg2LCAKKyAgICA3MywgNjcsIDg0LCA3OSwgODIsIDIxNywgODYsIDczLCA2NiwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3MCwgNjUsIAorICAgIDEyOCwgODYsIDY5LCA4OSwgOTAsIDEyOCwgODYsIDY5LCA4OCwgMTI4LCA4NiwgNjksIDg3LCAxMjgsIDg2LCA2OSwgMjE1LCAKKyAgICA4NiwgNjksIDg1LCA4OCwgMTI4LCA4NiwgNjksIDg1LCA3NywgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDgwLCA2OSwgNzgsIAorICAgIDEyOCwgODYsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg2LCA2OSwgODMsIDg0LCA2NSwgMTI4LCA4NiwgNjksIDgzLCA4MywgCisgICAgNjksIDIwNCwgODYsIDY5LCA4MiwgMjE3LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCA4OSwgMTI4LCAKKyAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIAorICAgIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUyLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIAorICAgIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUzLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIAorICAgIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDU0LCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIAorICAgIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ4LCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIAorICAgIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ5LCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIAorICAgIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUwLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIAorICAgIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUxLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIAorICAgIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUyLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODMsIDczLCA2NywgNzYsIDY5LCAxMjgsIDg2LCA2OSwgODIsIDgzLCAxOTcsIDg2LCA2OSwgODIsIDcxLCA2OSwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA2OCwgNzMsIDcxLCA4MiwgNzMsIDgzLCAxMjgsIDg2LCA2OSwgODIsIDEyOCwgODYsIDY5LCAKKyAgICA4MCwgMTI4LCA4NiwgNjksIDc4LCA2OCwgMTI4LCA4NiwgNjksIDczLCA3NiwgMTI4LCA4NiwgNjksIDcyLCA3MywgNjcsIAorICAgIDc2LCA2OSwgMTI4LCA4NiwgNjksIDcyLCAxMjgsIDg2LCA2OSwgMjAwLCA4NiwgNjksIDY5LCAxMjgsIDg2LCA2OSwgMTk3LCAKKyAgICA4NiwgNjksIDY4LCA2OSwgMTI4LCA4NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgODYsIDY1LCA4OCwgMTI4LCA4NiwgNjUsIDg2LCAxMjgsIDg2LCA2NSwgMjE0LCA4NiwgNjUsIDg1LCAxMjgsIDg2LCAKKyAgICA2NSwgODQsIDcyLCA4OSwgMTI4LCA4NiwgNjUsIDg0LCAxMjgsIDg2LCA2NSwgODMsIDg0LCA3OCwgNjksIDgzLCAyMTEsIAorICAgIDg2LCA2NSwgODMsIDczLCA4MywgMTI4LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4NiwgNjUsIDgyLCA3MywgNzUsIDY1LCAKKyAgICAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgNzgsIDg0LCAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgNzgsIDIxMiwgODYsIAorICAgIDY1LCA4MiwgNzMsIDY1LCAxMjgsIDg2LCA2NSwgODIsIDczLCAxOTMsIDg2LCA2NSwgODIsIDY5LCA3MywgNjUsIDIwMSwgCisgICAgODYsIDY1LCA4MiwgNjksIDczLCAxOTMsIDg2LCA2NSwgODAsIDc5LCA4NSwgODIsIDgzLCAxMjgsIDg2LCA2NSwgODAsIAorICAgIDEyOCwgODYsIDY1LCA3OCwgNjksIDEyOCwgODYsIDY1LCA3NywgNjUsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAKKyAgICAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCAxOTMsIDg2LCA2NSwgNzYsIDc2LCA2OSwgODksIAorICAgIDEyOCwgODYsIDY1LCA3NCwgMTI4LCA4NiwgNjUsIDczLCAxMjgsIDg2LCA2NSwgNzIsIDEyOCwgODYsIDY1LCAyMDAsIDg2LCAKKyAgICA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NiwgNjUsIDY1LCAxMjgsIDg2LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIAorICAgIDUyLCA0OCwgMTI4LCA4NiwgNDgsIDUxLCA1NywgMTI4LCA4NiwgNDgsIDUxLCA1NiwgMTI4LCA4NiwgNDgsIDUxLCA1NSwgCisgICAgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNTUsIDEyOCwgODYsIDQ4LCA1MSwgNTQsIDEyOCwgODYsIDQ4LCA1MSwgNTMsIDEyOCwgCisgICAgODYsIDQ4LCA1MSwgNTIsIDEyOCwgODYsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDUxLCAxMjgsIDg2LCAKKyAgICA0OCwgNTEsIDUwLCAxMjgsIDg2LCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIDUxLCA0OSwgMTI4LCA4NiwgNDgsIAorICAgIDUxLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNDgsIDEyOCwgODYsIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDg2LCA0OCwgCisgICAgNTAsIDU3LCAxMjgsIDg2LCA0OCwgNTAsIDU2LCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA1NiwgMTI4LCA4NiwgNDgsIDUwLCAKKyAgICA1NSwgMTI4LCA4NiwgNDgsIDUwLCA1NCwgMTI4LCA4NiwgNDgsIDUwLCA1MywgMTI4LCA4NiwgNDgsIDUwLCA1MiwgMTI4LCAKKyAgICA4NiwgNDgsIDUwLCA1MSwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTEsIDEyOCwgODYsIDQ4LCA1MCwgNTAsIDEyOCwgODYsIAorICAgIDQ4LCA1MCwgNDksIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDc2LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3NSwgMTI4LCA4NiwgCisgICAgNDgsIDUwLCA0OCwgNzQsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDczLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MiwgMTI4LCAKKyAgICA4NiwgNDgsIDUwLCA0OCwgNzEsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDcwLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2OSwgCisgICAgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjgsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY3LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCAKKyAgICA2NiwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDEyOCwgODYsIDQ4LCA0OSwgNTcsIAorICAgIDEyOCwgODYsIDQ4LCA0OSwgNTYsIDEyOCwgODYsIDQ4LCA0OSwgNTUsIDEyOCwgODYsIDQ4LCA0OSwgNTQsIDEyOCwgODYsIAorICAgIDQ4LCA0OSwgNTMsIDEyOCwgODYsIDQ4LCA0OSwgNTIsIDEyOCwgODYsIDQ4LCA0OSwgNTEsIDEyOCwgODYsIDQ4LCA0OSwgCisgICAgNTAsIDY2LCAxMjgsIDg2LCA0OCwgNDksIDUwLCA2NSwgMTI4LCA4NiwgNDgsIDQ5LCA1MCwgMTI4LCA4NiwgNDgsIDQ5LCAKKyAgICA0OSwgNjcsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDY2LCAxMjgsIDg2LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIAorICAgIDQ5LCA0OSwgMTI4LCA4NiwgNDgsIDQ5LCA0OCwgMTI4LCA4NiwgNDgsIDQ4LCA1NywgMTI4LCA4NiwgNDgsIDQ4LCA1NiwgCisgICAgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgODYsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDg2LCA0OCwgNDgsIDU1LCAKKyAgICAxMjgsIDg2LCA0OCwgNDgsIDU0LCAxMjgsIDg2LCA0OCwgNDgsIDUzLCAxMjgsIDg2LCA0OCwgNDgsIDUyLCAxMjgsIDg2LCAKKyAgICA0OCwgNDgsIDUxLCAxMjgsIDg2LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4NiwgNDgsIDQ4LCA1MCwgMTI4LCA4NiwgNDgsIAorICAgIDQ4LCA0OSwgNzMsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDcyLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MSwgMTI4LCA4NiwgCisgICAgNDgsIDQ4LCA0OSwgNzAsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY5LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2OCwgMTI4LCAKKyAgICA4NiwgNDgsIDQ4LCA0OSwgNjcsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY2LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2NSwgCisgICAgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgMTI4LCA4NSwgOTAsIDg1LCAxMjgsIDg1LCA5MCwgNTEsIDEyOCwgODUsIDkwLCAxNzksIAorICAgIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODUsIDg5LCAxMjgsIDg1LCA4NywgODUsIDEyOCwgODUsIDg1LCA4OSwgCisgICAgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODUsIDg1LCA4NSwgODUsIDEyOCwgODUsIDg1LCA4NSwgNTEsIDEyOCwgODUsIDg1LCAKKyAgICA4NSwgNTAsIDEyOCwgODUsIDg1LCA2OSwgMTI4LCA4NSwgODQsIDg1LCA3NSwgNzMsIDEyOCwgODUsIDgzLCA4MywgODUsIAorICAgIDUxLCAxMjgsIDg1LCA4MywgODMsIDg1LCAxMjgsIDg1LCA4MywgNzIsIDg4LCAxMjgsIDg1LCA4MywgNzIsIDg1LCA3NywgCisgICAgODgsIDEyOCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgODUsIDgzLCA3MiwgNTAsIDEyOCwgODUsIDgzLCAKKyAgICA3MiwgMTI4LCA4NSwgODMsIDIwMCwgODUsIDgzLCA2OSwgMTk2LCA4NSwgODMsIDY5LCA0NSwgNTAsIDEyOCwgODUsIDgzLCAKKyAgICA2OSwgNDUsIDQ5LCAxMjgsIDg1LCA4MywgNjksIDEyOCwgODUsIDgzLCAxOTcsIDg1LCA4MiwgODUsIDIxOCwgODUsIDgyLCAKKyAgICA4NSwgODMsIDEyOCwgODUsIDgyLCA4NSwgNjgsIDY1LCAxMjgsIDg1LCA4MiwgODUsIDY4LCAxOTMsIDg1LCA4MiwgODUsIAorICAgIDEyOCwgODUsIDgyLCAyMTMsIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg1LCA4MiwgNzMsIAorICAgIDUxLCAxMjgsIDg1LCA4MiwgNzMsIDEyOCwgODUsIDgyLCA2NSwgNzgsIDg1LCA4MywgMTI4LCA4NSwgODIsIDY1LCAxMjgsIAorICAgIDg1LCA4MiwgNTIsIDEyOCwgODUsIDgyLCA1MCwgMTI4LCA4NSwgODIsIDE3OCwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgCisgICAgODMsIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDE5NiwgODUsIDgwLCAKKyAgICA4NCwgODUsIDgyLCA3OCwgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIDc5LCA3OCwgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIAorICAgIDc5LCAyMDYsIDg1LCA4MCwgODMsIDczLCA2OCwgNjksIDQ1LCA2OCwgNzksIDg3LCAyMDYsIDg1LCA4MCwgODIsIDczLCA3MSwgCisgICAgNzIsIDIxMiwgODUsIDgwLCA4MCwgNjksIDgyLCAxMjgsIDg1LCA4MCwgODAsIDY5LCAyMTAsIDg1LCA4MCwgNjUsIDY4LCAKKyAgICA3MiwgNzcsIDY1LCA3OCwgNzMsIDg5LCA2NSwgMTI4LCA4NSwgODAsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgCisgICAgMTk5LCA4NSwgNzksIDc4LCAxMjgsIDg1LCA3OCwgNzgsIDEyOCwgODUsIDc4LCA3NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAKKyAgICAxOTYsIDg1LCA3OCwgNzUsIDc4LCA3OSwgODcsIDc4LCAxMjgsIDg1LCA3OCwgNzUsIDEyOCwgODUsIDc4LCA3MywgODYsIAorICAgIDY5LCA4MiwgODMsIDY1LCAyMDQsIDg1LCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA4NSwgNzgsIDczLCA4NCwgMTI4LCA4NSwgCisgICAgNzgsIDczLCAyMTIsIDg1LCA3OCwgNzMsIDc5LCA3OCwgMTI4LCA4NSwgNzgsIDczLCA3OSwgMjA2LCA4NSwgNzgsIDczLCAKKyAgICA3MCwgNzMsIDY5LCAxOTYsIDg1LCA3OCwgNzMsIDY3LCA3OSwgODIsIDIwNiwgODUsIDc4LCA2OCwgMjA3LCA4NSwgNzgsIAorICAgIDY4LCA2OSwgODIsIDg0LCA3MywgNjksIDEyOCwgODUsIDc4LCA2OCwgNjksIDgyLCA3NiwgNzMsIDc4LCAxOTcsIDg1LCA3OCwgCisgICAgNjgsIDY5LCA4MiwgNjgsIDc5LCA4NCwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgODIsIDY2LCA2NSwgODIsIDEyOCwgODUsIDc4LCAKKyAgICA2OCwgNjksIDgyLCAxMjgsIDg1LCA3OCwgNjgsIDY5LCAyMTAsIDg1LCA3OCwgNjcsIDczLCAxOTMsIDg1LCA3OCwgNjcsIAorICAgIDY5LCA4MiwgODQsIDY1LCA3MywgNzgsIDg0LCAyMTcsIDg1LCA3OCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDY5LCAKKyAgICA2OCwgMTI4LCA4NSwgNzgsIDY1LCA4MCwgMTI4LCA4NSwgNzgsIDY1LCA3NywgODUsIDgzLCA2OSwgMTk2LCA4NSwgNzgsIAorICAgIDY1LCAxMjgsIDg1LCAyMDYsIDg1LCA3NywgODUsIDc3LCAxMjgsIDg1LCA3NywgODUsIDIwNSwgODUsIDc3LCA2NiwgODIsIAorICAgIDY5LCA3NiwgNzYsIDY1LCAxMjgsIDg1LCA3NywgNjYsIDgyLCA2OSwgNzYsIDc2LCAxOTMsIDg1LCA3NywgNjYsIDczLCA3OCwgCiAgICAgMTI4LCA4NSwgNzUsIDg1LCAxMjgsIDg1LCA3NSwgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA4NSwgNzUsIDY1LCAKICAgICA4MiwgNjUsIDEyOCwgODUsIDc1LCA2NSwgODIsIDE5MywgODUsIDc1LCAxMjgsIDg1LCA3MywgNzYsIDc2LCA2OSwgNjUsIAogICAgIDc4LCA3OCwgMTI4LCA4NSwgNzMsIDcxLCA3MiwgODUsIDIxMCwgODUsIDcxLCA2NSwgODIsIDczLCA4NCwgNzMsIDE5NSwgCkBAIC00OTksNTA1ICs1MjEsNTc2IEBACiAgICAgODUsIDQ4LCA0OCwgNTcsIDEyOCwgODUsIDQ4LCA0OCwgNTYsIDEyOCwgODUsIDQ4LCA0OCwgNTUsIDEyOCwgODUsIDQ4LCAKICAgICA0OCwgNTQsIDY2LCAxMjgsIDg1LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4NSwgNDgsIDQ4LCA1NCwgMTI4LCA4NSwgNDgsIAogICAgIDQ4LCA1MywgMTI4LCA4NSwgNDgsIDQ4LCA1MiwgMTI4LCA4NSwgNDgsIDQ4LCA1MSwgMTI4LCA4NSwgNDgsIDQ4LCA1MCwgCi0gICAgMTI4LCA4NSwgNDgsIDQ4LCA0OSwgMTI4LCA4NSwgNDUsIDczLCA0NSwgNzMsIDEyOCwgODUsIDQ1LCA2OSwgNzksIDQ1LCAKLSAgICA2OSwgODUsIDEyOCwgODUsIDQ1LCA2NiwgODIsIDc0LCA3MSwgODUsIDEyOCwgODQsIDkwLCA4NSwgMTI4LCA4NCwgOTAsIAotICAgIDc5LCA2NSwgMTI4LCA4NCwgOTAsIDc5LCAxMjgsIDg0LCA5MCwgNzMsIDIxMCwgODQsIDkwLCA3MywgMTI4LCA4NCwgOTAsIAotICAgIDY5LCA2OSwgMTI4LCA4NCwgOTAsIDY5LCAxMjgsIDg0LCA5MCwgNjUsIDY1LCAxMjgsIDg0LCA5MCwgNjUsIDEyOCwgODQsIAotICAgIDkwLCAxMjgsIDg0LCA4OSwgMjEwLCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MywgODQsIDg5LCA4MCwgNjksIDQ1LCAxODIsIAotICAgIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgxLCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MCwgODQsIDg5LCA4MCwgNjksIDQ1LCAKLSAgICAxNzksIDg0LCA4OSwgODAsIDY5LCA0NSwgMTc4LCA4NCwgODksIDgwLCA2OSwgNDUsIDE3NywgODQsIDg5LCA4MCwgMTk3LCAKLSAgICA4NCwgODksIDc5LCAxMjgsIDg0LCA4OSwgNzMsIDEyOCwgODQsIDg5LCA2OSwgMTI4LCA4NCwgODksIDY1LCAxMjgsIDg0LCAKLSAgICA4NywgNzksIDc5LCAxMjgsIDg0LCA4NywgNzksIDQ1LCA4NywgNjUsIDIxNywgODQsIDg3LCA3OSwgNDUsIDg0LCA3MiwgNzMsIAotICAgIDgyLCA4NCwgODksIDEyOCwgODQsIDg3LCA3OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODQsIDg3LCA3OSwgNDUsIDcyLCA2OSwgCi0gICAgNjUsIDY4LCA2OSwgMTk2LCA4NCwgODcsIDc5LCA0NSwgNjksIDIwNSwgODQsIDg3LCA3MywgODMsIDg0LCA2OSwgMTk2LCAKLSAgICA4NCwgODcsIDczLCA3MywgMTI4LCA4NCwgODcsIDczLCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgODcsIAotICAgIDc5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODQsIDg3LCA2OSwgCi0gICAgNzgsIDg0LCA4OSwgNDUsIDgzLCA3MywgODgsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDgzLCA2OSwgODYsIAotICAgIDY5LCA3OCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgCi0gICAgODQsIDg5LCA0NSwgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIAotICAgIDgyLCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgCi0gICAgODQsIDg5LCA0NSwgNjksIDczLCA3MSwgNzIsIDg0LCAyMDAsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA2OSwgNzMsIAotICAgIDcxLCA3MiwgODQsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDIxNywgCi0gICAgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDg3LCA2OSwgNzYsIAotICAgIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIDE5NywgODQsIDg3LCA2OSwgMTI4LCA4NCwgODcsIDY1LCA2NSwgCi0gICAgMTI4LCA4NCwgODcsIDY1LCAxMjgsIDg0LCA4NiwgODIsIDczLCA2OCwgNzksIDEyOCwgODQsIDg2LCA3MywgNzcsIDY1LCAKLSAgICA2OCwgODUsIDIxMCwgODQsIDg1LCA4OCwgMTI4LCA4NCwgODUsIDg1LCA3NywgODUsIDEyOCwgODQsIDg1LCA4NSwgMTI4LCAKLSAgICA4NCwgODUsIDg0LCA4NCwgODksIDEyOCwgODQsIDg1LCA4NCwgNjksIDg5LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4NCwgODUsIAotICAgIDg0LCAxMjgsIDg0LCA4NSwgODIsIDg4LCAxMjgsIDg0LCA4NSwgODIsIDg1LCAxMjgsIDg0LCA4NSwgODIsIDg0LCA3NiwgCi0gICAgNjksIDEyOCwgODQsIDg1LCA4MiwgNzksIDUwLCAxMjgsIDg0LCA4NSwgODIsIDc4LCA4MywgODQsIDczLCA3NiwgNjksIAotICAgIDEyOCwgODQsIDg1LCA4MiwgNzgsIDY5LCAxOTYsIDg0LCA4NSwgODIsIDIwNiwgODQsIDg1LCA4MiwgNzUsIDczLCA4MywgCi0gICAgMjAwLCA4NCwgODUsIDgyLCA2NiwgNjUsIDc4LCAxMjgsIDg0LCA4NSwgODIsIDEyOCwgODQsIDg1LCA4MCwgMTI4LCA4NCwgCi0gICAgODUsIDc5LCA4OCwgMTI4LCA4NCwgODUsIDc5LCA4NCwgMTI4LCA4NCwgODUsIDc5LCA4MCwgMTI4LCA4NCwgODUsIDc5LCAKLSAgICAxMjgsIDg0LCA4NSwgNzgsIDc4LCA4OSwgMTI4LCA4NCwgODUsIDc3LCA2OSwgODQsIDY5LCA4MywgMTI4LCA4NCwgODUsIAotICAgIDc3LCA2NSwgNjksIDEyOCwgODQsIDg1LCA3NywgMTI4LCA4NCwgODUsIDc2LCA3MywgODAsIDEyOCwgODQsIDg1LCA3NSwgCi0gICAgODcsIDY5LCA3OCwgODQsIDczLCA4MywgMTI4LCA4NCwgODUsIDc1LCAxMjgsIDg0LCA4NSwgNzEsIDgyLCA3MywgMjAzLCAKLSAgICA4NCwgODUsIDcxLCA1MCwgMTI4LCA4NCwgODUsIDcxLCAxNzgsIDg0LCA4NSwgNjUsIDgyLCA2OSwgMTk5LCA4NCwgODUsIAotICAgIDY1LCA2OSwgODAsIDEyOCwgODQsIDg1LCA2NSwgNjksIDEyOCwgODQsIDIxMywgODQsIDg0LCA4NSwgODUsIDEyOCwgODQsIAotICAgIDg0LCA4NSwgNjgsIDY4LCA2NSwgNzEsIDEyOCwgODQsIDg0LCA4NSwgNjgsIDY4LCA2NSwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgCi0gICAgODUsIDEyOCwgODQsIDg0LCA4NCwgNzIsIDY1LCAxMjgsIDg0LCA4NCwgODQsIDY1LCAxMjgsIDg0LCA4NCwgODMsIDg1LCAKLSAgICAxMjgsIDg0LCA4NCwgODMsIDc5LCAxMjgsIDg0LCA4NCwgODMsIDczLCAxMjgsIDg0LCA4NCwgODMsIDY5LCA2OSwgMTI4LCAKLSAgICA4NCwgODQsIDgzLCA2OSwgMTI4LCA4NCwgODQsIDgzLCA2NSwgMTI4LCA4NCwgODQsIDc5LCA3OSwgMTI4LCA4NCwgODQsIAotICAgIDczLCA3MywgMTI4LCA4NCwgODQsIDczLCAxMjgsIDg0LCA4NCwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA4NSwgCi0gICAgMTI4LCA4NCwgODQsIDcyLCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzMsIDEyOCwgCi0gICAgODQsIDg0LCA3MiwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY1LCA2NSwgMTI4LCAKLSAgICA4NCwgODQsIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCAyMDAsIAotICAgIDg0LCA4NCwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDIwMCwgODQsIDg0LCA2OSwgNjksIDEyOCwgODQsIDg0LCA2NSwgCi0gICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA4NCwgNjUsIDg1LCAxMjgsIDg0LCA4NCwgNjUsIDczLCAxMjgsIDg0LCAKLSAgICA4NCwgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNTAsIDEyOCwgODQsIDgzLCA4NywgNjksIDEyOCwgODQsIDgzLCA4NywgNjUsIAotICAgIDEyOCwgODQsIDgzLCA4NiwgMTI4LCA4NCwgODMsIDgzLCA2OSwgMTI4LCA4NCwgODMsIDgzLCA2NSwgMTI4LCA4NCwgODMsIAotICAgIDcyLCA4NSwgNzEsIDgzLCAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgNzUsIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCAKLSAgICAyMDMsIDg0LCA4MywgNzIsIDY5LCA4MywgMTI4LCA4NCwgODMsIDcyLCA2OSwgNzEsIDEyOCwgODQsIDgzLCA3MiwgNjksIAotICAgIDE5OSwgODQsIDgzLCA3MiwgNjksIDEyOCwgODQsIDgzLCA3MiwgNjUsIDEyOCwgODQsIDgzLCA2OSwgODIsIDY5LCAxMjgsIAotICAgIDg0LCA4MywgNjUsIDY4LCA3MywgMTI4LCA4NCwgODMsIDY1LCA2OCwgMjAxLCA4NCwgODMsIDY1LCA2NSwgNjgsIDczLCA4OSwgCi0gICAgMTI4LCA4NCwgODMsIDY1LCA2NSwgMTI4LCA4NCwgODMsIDE5MywgODQsIDgyLCA4OSwgNjYsIDc2LCA3MywgNzksIDIwNiwgCi0gICAgODQsIDgyLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA4MiwgODUsIDc4LCA3NSwgMTI4LCA4NCwgODIsIDg1LCA3OCwgNjcsIDY1LCAKLSAgICA4NCwgNjksIDE5NiwgODQsIDgyLCA4NSwgNzcsIDgwLCA2OSwgODQsIDEyOCwgODQsIDgyLCA4NSwgNjksIDEyOCwgODQsIAotICAgIDgyLCA4NSwgNjcsIDc1LCAxMjgsIDg0LCA4MiwgNzksIDgwLCA3MywgNjcsIDY1LCAyMDQsIDg0LCA4MiwgNzksIDgwLCA3MiwgCi0gICAgODksIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDg0LCAKLSAgICA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc4LCAxMjgsIDg0LCA4MiwgCi0gICAgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgNjUsIDEyOCwgODQsIAotICAgIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAyMDYsIDg0LCA4MiwgCi0gICAgNzksIDc3LCA3MywgNzUsIDc5LCA3NiwgODksIDcxLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NiwgNzYsIAotICAgIDY5LCA4OSwgNjYsIDg1LCA4MywgMTI4LCA4NCwgODIsIDc5LCA3NSwgODUsIDg0LCA2NSwgODMsIDg0LCAyMDEsIDg0LCA4MiwgCi0gICAgNzksIDY5LCA5MCwgNjksIDc4LCA3MywgNjUsIDIwNiwgODQsIDgyLCA3MywgODUsIDc3LCA4MCwgNzIsIDEyOCwgODQsIDgyLCAKLSAgICA3MywgODQsIDc5LCAyMTEsIDg0LCA4MiwgNzMsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgODIsIAotICAgIDczLCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgODQsIDgyLCA3MywgODMsIDY5LCA3NywgNjksIDEyOCwgODQsIDgyLCA3MywgCi0gICAgODAsIDc5LCA2OCwgMTI4LCA4NCwgODIsIDczLCA4MCwgNzYsIDczLCAxMjgsIDg0LCA4MiwgNzMsIDgwLCA3NiwgMTk3LCAKLSAgICA4NCwgODIsIDczLCA3OSwgMjA2LCA4NCwgODIsIDczLCA3MywgODMsIDY1LCA4MCwgMTI4LCA4NCwgODIsIDczLCA3MSwgODIsIAotICAgIDY1LCA3NywgNzcsIDc5LCAyMTEsIDg0LCA4MiwgNzMsIDcxLCA4MiwgNjUsIDIwNSwgODQsIDgyLCA3MywgNzEsIDc5LCA4MiwgCi0gICAgNzEsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDg0LCA4MiwgNzMsIDcwLCAKLSAgICA3OSwgNzYsIDczLCA2NSwgODQsIDE5NywgODQsIDgyLCA3MywgNjgsIDY5LCA3OCwgODQsIDEyOCwgODQsIDgyLCA3MywgNjgsIAotICAgIDY5LCA3OCwgMjEyLCA4NCwgODIsIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgCi0gICAgODUsIDc2LCA2NSwgMjEwLCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MiwgNzksIDg1LCA3OCwgMTk2LCAKLSAgICA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgODQsIDgyLCA3MywgCi0gICAgNjUsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCAxOTcsIDg0LCA4MiwgNzMsIDY1LCAKLSAgICAxMjgsIDg0LCA4MiwgNzMsIDEyOCwgODQsIDgyLCA2OSwgODMsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDg0LCA4MiwgNjksIAotICAgIDc4LCA2OCwgMTI4LCA4NCwgODIsIDY5LCA3OCwgMTk2LCA4NCwgODIsIDY5LCA3NywgNzksIDc2LCA3OSwgNDUsIDUxLCAKLSAgICAxMjgsIDg0LCA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCA0NSwgNTAsIDEyOCwgODQsIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIAotICAgIDQ1LCA0OSwgMTI4LCA4NCwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODIsIDY5LCAxOTcsIDg0LCA4MiwgNjksIDY1LCA2OCwgCi0gICAgNzMsIDc4LCA3MSwgMTI4LCA4NCwgODIsIDY1LCA4OSwgMTI4LCA4NCwgODIsIDY1LCA4MCwgNjksIDkwLCA3MywgODUsIDc3LCAKLSAgICAxMjgsIDg0LCA4MiwgNjUsIDc4LCA4MywgODYsIDY5LCA4MiwgODMsIDY1LCAyMDQsIDg0LCA4MiwgNjUsIDc4LCA4MywgODAsIAotICAgIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgODQsIDgyLCA2NSwgNzgsIDgzLCA3NywgNzMsIDIxMiwgODQsIDgyLCA2NSwgCi0gICAgNzgsIDgzLCA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDY1LCA3OCwgODMsIDc3LCA3MywgODMsIAotICAgIDgzLCA3MywgNzksIDIwNiwgODQsIDgyLCA2NSwgNzcsIDg3LCA2NSwgODksIDEyOCwgODQsIDgyLCA2NSwgNzcsIDEyOCwgCi0gICAgODQsIDgyLCA2NSwgMjA1LCA4NCwgODIsIDY1LCA3MywgNzgsIDEyOCwgODQsIDgyLCA2NSwgNzMsIDIwNiwgODQsIDgyLCAKLSAgICA2NSwgNzMsIDc2LCA3MywgNzgsIDE5OSwgODQsIDgyLCA2NSwgNzAsIDcwLCA3MywgNjcsIDEyOCwgODQsIDgyLCA2NSwgNzAsIAotICAgIDcwLCA3MywgMTk1LCA4NCwgODIsIDY1LCA2OCwgMTk3LCA4NCwgODIsIDY1LCA2NywgODQsIDc5LCA4MiwgMTI4LCA4NCwgCi0gICAgODIsIDY1LCA2NywgNzUsIDEyOCwgODQsIDgyLCAxMjgsIDg0LCA3OSwgODgsIDEyOCwgODQsIDc5LCA4NywgNjksIDgyLCAKLSAgICAxMjgsIDg0LCA3OSwgODUsIDgyLCA3OCwgNzksIDczLCAyMTEsIDg0LCA3OSwgODQsIDY1LCAyMDQsIDg0LCA3OSwgODQsIAotICAgIDEyOCwgODQsIDc5LCA4MiwgODQsIDc5LCA3MywgODMsIDE5NywgODQsIDc5LCA4MiwgNjcsIDg1LCA3NiwgODUsIDgzLCAKLSAgICAxMjgsIDg0LCA3OSwgODIsIDY3LCA4NSwgNzYsIDg1LCAyMTEsIDg0LCA3OSwgODIsIDY3LCA3MiwgMTI4LCA4NCwgNzksIAotICAgIDgxLCAxMjgsIDg0LCA3OSwgODAsIDY2LCA2NSwgODIsIDEyOCwgODQsIDc5LCA4MCwgNDUsIDc2LCA3MywgNzEsIDcyLCA4NCwgCi0gICAgNjksIDE5NiwgODQsIDc5LCA4MCwgMTI4LCA4NCwgNzksIDIwOCwgODQsIDc5LCA3OSwgODQsIDcyLCAxMjgsIDg0LCA3OSwgCi0gICAgNzksIDc4LCAxMjgsIDg0LCA3OSwgNzgsIDc5LCA4MywgMTI4LCA4NCwgNzksIDc4LCA3MSwgODUsIDY5LCAxMjgsIDg0LCAKLSAgICA3OSwgNzgsIDcxLCA4NSwgMTk3LCA4NCwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDU2LCAxMjgsIAotICAgIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTUsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1NCwgMTI4LCA4NCwgNzksIDc4LCA2OSwgCi0gICAgNDUsIDUzLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTIsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MSwgMTI4LCAKLSAgICA4NCwgNzksIDc4LCA2OSwgNDUsIDUwLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNDksIDEyOCwgODQsIDc5LCA3OCwgNjksIAotICAgIDEyOCwgODQsIDc5LCA3OCwgNjUsIDIwNCwgODQsIDc5LCA3NywgODAsIDczLCAxMjgsIDg0LCA3OSwgNzcsIDY1LCA4NCwgCi0gICAgNzksIDEyOCwgODQsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzksIDc1LCA4OSwgMjA3LCA4NCwgNzksIDczLCAKLSAgICA3NiwgNjksIDg0LCAxMjgsIDg0LCA3OSwgNzEsIDY5LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA4NCwgNzksIDY4LCAyMDcsIAotICAgIDg0LCA3OSwgNjUsIDc4LCA2OCwgNjUsIDc1LCA3MiwgNzMsIDY1LCA4NCwgMTI4LCA4NCwgNzksIDY1LCAxMjgsIDg0LCA3OCwgCi0gICAgMTI4LCA4NCwgNzYsIDg2LCAxMjgsIDg0LCA3NiwgODUsIDEyOCwgODQsIDc2LCA3OSwgMTI4LCA4NCwgNzYsIDczLCAxMjgsIAotICAgIDg0LCA3NiwgNzIsIDg5LCA2NSwgMTI4LCA4NCwgNzYsIDcyLCA4NywgNjksIDEyOCwgODQsIDc2LCA3MiwgODUsIDEyOCwgCi0gICAgODQsIDc2LCA3MiwgNzksIDc5LCAxMjgsIDg0LCA3NiwgNzIsIDc5LCAxMjgsIDg0LCA3NiwgNzIsIDczLCAxMjgsIDg0LCAKLSAgICA3NiwgNzIsIDY5LCA2OSwgMTI4LCA4NCwgNzYsIDcyLCA2OSwgMTI4LCA4NCwgNzYsIDcyLCA2NSwgMTI4LCA4NCwgNzYsIAotICAgIDY5LCA2OSwgMTI4LCA4NCwgNzYsIDY1LCAxMjgsIDg0LCA3NCwgNjksIDEyOCwgODQsIDczLCA4OCwgMTI4LCA4NCwgNzMsIAotICAgIDg3LCA3OCwgMTI4LCA4NCwgNzMsIDg3LCA2NSwgMjE4LCA4NCwgNzMsIDg0LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA4NCwgCi0gICAgNzMsIDg0LCA3NiwgNzksIDEyOCwgODQsIDczLCA4NCwgMTkzLCA4NCwgNzMsIDg0LCAxMjgsIDg0LCA3MywgODIsIDg5LCAKLSAgICA2NSwgNzUsIDEyOCwgODQsIDczLCA4MiwgODQsIDE5MywgODQsIDczLCA4MiwgNzksIDc4LCA3MywgNjUsIDIwNiwgODQsIAotICAgIDczLCA4MiwgNjksIDE5NiwgODQsIDczLCA4MiwgMTI4LCA4NCwgNzMsIDIxMCwgODQsIDczLCA4MCwgODAsIDczLCAxMjgsIAotICAgIDg0LCA3MywgODAsIDY5LCA3MiwgNjUsIDEyOCwgODQsIDczLCA4MCwgMTI4LCA4NCwgNzMsIDIwOCwgODQsIDczLCA3OCwgCi0gICAgODksIDEyOCwgODQsIDczLCA3OCwgMjE3LCA4NCwgNzMsIDc4LCA3OCwgNjksIDEyOCwgODQsIDczLCA3OCwgNjcsIDg0LCAKLSAgICA4NSwgODIsIDY5LCAxMjgsIDg0LCA3MywgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDg0LCA3MywgNzcsIDY5LCA4MywgCi0gICAgMTI4LCA4NCwgNzMsIDc3LCA2OSwgMjEwLCA4NCwgNzMsIDc3LCA2OSwgMTI4LCA4NCwgNzMsIDc2LCA2OCwgMTk3LCA4NCwgCi0gICAgNzMsIDc2LCAxMjgsIDg0LCA3MywgMjA0LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCAKLSAgICA4NCwgNzIsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgCi0gICAgNjksIDc5LCA3NSwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODQsIDczLCAKLSAgICA3NSwgNjksIDg1LCA4NCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgCi0gICAgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIAotICAgIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODQsIDczLCA3NSwgCi0gICAgNjksIDg1LCA4NCwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNjcsIAotICAgIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgCi0gICAgODUsIDIxMiwgODQsIDczLCA3MSwgNzIsIDg0LCA3NiwgODksIDQ1LCA2NywgNzYsIDc5LCA4MywgNjksIDE5NiwgODQsIDczLCAKLSAgICA3MSwgNzIsIDIxMiwgODQsIDczLCA3MSwgNjksIDgyLCAxMjgsIDg0LCA3MywgNzEsIDY5LCAyMTAsIDg0LCA3MywgNzAsIAotICAgIDczLCA3OCwgNjUsIDcxLCAyMDAsIDg0LCA3MywgNjksIDg4LCAxMjgsIDg0LCA3MywgNjksIDgwLCAxMjgsIDg0LCA3MywgCi0gICAgMTk3LCA4NCwgNzMsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDg0LCA3MywgNjcsIDIwMywgCi0gICAgODQsIDczLCA2NSwgODIsIDY1LCAxMjgsIDg0LCA3MiwgOTAsIDEyOCwgODQsIDcyLCA4OSwgNzksIDc5LCAyMDUsIDg0LCAKLSAgICA3MiwgODcsIDc5LCA3OSwgMTI4LCA4NCwgNzIsIDg3LCA3OSwgMTI4LCA4NCwgNzIsIDg3LCA3MywgNzMsIDEyOCwgODQsIAotICAgIDcyLCA4NywgNzMsIDEyOCwgODQsIDcyLCA4NywgNjksIDY5LCAxMjgsIDg0LCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4NCwgCi0gICAgNzIsIDg3LCA2NSwgMTI4LCA4NCwgNzIsIDg1LCA4MiwgMjExLCA4NCwgNzIsIDg1LCA4MiwgNzMsIDgzLCA2NSwgMjE4LCAKLSAgICA4NCwgNzIsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDcyLCA4NSwgNzgsIDY4LCA2OSwgODIsIDgzLCA4NCwgNzksIDgyLCA3NywgCi0gICAgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCA4MiwgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCAyMTAsIDg0LCAKLSAgICA3MiwgODUsIDc3LCA2NiwgMjExLCA4NCwgNzIsIDgyLCA3OSwgODcsIDczLCA3OCwgMTk5LCA4NCwgNzIsIDgyLCA3OSwgODUsIAotICAgIDcxLCA3MiwgMTI4LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCAyMDAsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDg0LCA3MiwgCi0gICAgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDg0LCAKLSAgICA3MiwgODIsIDY5LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgNjksIDIwNSwgODQsIAotICAgIDcyLCA4MiwgNjksIDY5LCA0NSwgMTk2LCA4NCwgNzIsIDgyLCA2OSwgNjUsIDY4LCAxMjgsIDg0LCA3MiwgNzksIDg1LCA4MywgCi0gICAgNjUsIDc4LCA2OCwgMjExLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgNjgsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCAKLSAgICA2NSwgNzgsIDE5NiwgODQsIDcyLCA3OSwgODUsIDcxLCA3MiwgMjEyLCA4NCwgNzIsIDc5LCA4NSwgMTI4LCA4NCwgNzIsIAotICAgIDc5LCA4MiwgNzgsIDEyOCwgODQsIDcyLCA3OSwgODIsIDIwNiwgODQsIDcyLCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3MiwgCi0gICAgNzksIDY1LCAxMjgsIDg0LCA3MiwgMjA3LCA4NCwgNzIsIDczLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA3MiwgNzMsIDg0LCAKLSAgICA2NSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCA0NSwgODMsIDY5LCA2NywgNzksIDc4LCAxOTYsIDg0LCA3MiwgNzMsIAotICAgIDgyLCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgMjE3LCA4NCwgNzIsIDczLCA4MiwgCi0gICAgODQsIDY5LCA2OSwgNzgsIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIDIwNiwgODQsIDcyLCA3MywgODIsIDY4LCAKLSAgICA4MywgMTI4LCA4NCwgNzIsIDczLCA4MiwgNjgsIDIxMSwgODQsIDcyLCA3MywgODIsIDY4LCAxMjgsIDg0LCA3MiwgNzMsIAotICAgIDgyLCAxOTYsIDg0LCA3MiwgNzMsIDIwNiwgODQsIDcyLCA3MywgNzMsIDEyOCwgODQsIDcyLCA3MywgNzEsIDcyLCAxMjgsIAotICAgIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDIwMCwgODQsIDcyLCA2OSwgODksIDEyOCwgODQsIDcyLCA2OSwgODQsIDcyLCA2OSwgCi0gICAgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA2OSwgODQsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDg0LCAKLSAgICAxOTMsIDg0LCA3MiwgNjksIDgzLCA4MCwgNzMsIDY1LCAyMDYsIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDgzLCAxMjgsIAotICAgIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDIxMSwgODQsIDcyLCA2OSwgMjExLCA4NCwgNzIsIDY5LCA4MiwgNzcsIDc5LCA2OCwgCi0gICAgODksIDc4LCA2NSwgNzcsIDczLCA2NywgMTI4LCA4NCwgNzIsIDY5LCA4MiwgNjksIDcwLCA3OSwgODIsIDY5LCAxMjgsIDg0LCAKLSAgICA3MiwgNjksIDgyLCAxOTcsIDg0LCA3MiwgNjksIDIwNiwgODQsIDcyLCA2OSwgNzcsIDY1LCA4NCwgNzMsIDgzLCA3NywgNzksIAotICAgIDIxMSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDc3LCAxOTMsIDg0LCA3MiwgNjksIDcyLCAxMjgsIAotICAgIDg0LCA3MiwgNjksIDIwMCwgODQsIDcyLCAxOTcsIDg0LCA3MiwgNjUsIDg3LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCA4NCwgCi0gICAgNzIsIDY1LCA3NSwgNzIsIDY1LCA4NCwgMTI4LCA4NCwgNzIsIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCAKLSAgICAxMjgsIDg0LCA3MiwgNjUsIDIwNiwgODQsIDcyLCA2NSwgNzYsIDEyOCwgODQsIDcyLCA2NSwgMjA0LCA4NCwgNzIsIDY1LCAKLSAgICA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDY1LCA3OCwgMTkzLCA4NCwgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIAotICAgIDg0LCA3MiwgNDUsIDY3LCA4MiwgNjksIDE5NywgODQsIDY5LCA4OCwgODQsIDEyOCwgODQsIDY5LCA4OCwgMTI4LCA4NCwgCi0gICAgNjksIDg2LCA3MywgODIsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCA4NSwgODgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCAKLSAgICA4NSwgODcsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgMTI4LCA4NCwgNjksIDg1LCA3OCwgMTI4LCA4NCwgNjksIAotICAgIDg1LCA2NSwgNjksIDgxLCAxMjgsIDg0LCA2OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgMTI4LCA4NCwgCi0gICAgNjksIDg0LCA4MiwgNjUsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgzLCA2OSwgNzcsIAotICAgIDY5LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODAsIDc2LCA3MywgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDcwLCA3OSwgCi0gICAgNzgsIDczLCA2NSwgODMsIDEyOCwgODQsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA4NCwgMjAwLCA4NCwgNjksIDg0LCAKLSAgICA2NSwgODIsIDg0LCA3OSwgMjExLCA4NCwgNjksIDg0LCA2NSwgODIsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA4NCwgNjksIDg0LCAxMjgsIDg0LCA2OSwgMjEyLCA4NCwgNjksIDgzLCA4MywgNjksIDgyLCA2NSwgMTI4LCA4NCwgCi0gICAgNjksIDgzLCA4MywgNjksIDgyLCAxOTMsIDg0LCA2OSwgODMsIDgzLCA2NSwgODIsIDc5LCAyMDYsIDg0LCA2OSwgODMsIAotICAgIDIwMCwgODQsIDY5LCA4MiwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODQsIDY5LCA4MCwgMTI4LCA4NCwgCi0gICAgNjksIDc4LCA4NSwgODQsIDc5LCAxMjgsIDg0LCA2OSwgNzgsIDg1LCAxMjgsIDg0LCA2OSwgNzgsIDIxMywgODQsIDY5LCAKLSAgICA3OCwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNzgsIDg0LCAxMjgsIDg0LCA2OSwgNzgsIDIxMSwgODQsIDY5LCA3OCwgNzgsIAotICAgIDczLCAyMTEsIDg0LCA2OSwgNzgsIDcxLCAxOTcsIDg0LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAKLSAgICAxMjgsIDg0LCA2OSwgNzgsIDEyOCwgODQsIDY5LCAyMDYsIDg0LCA2OSwgNzcsIDgwLCA4NSwgMjExLCA4NCwgNjksIDc2LCAKLSAgICA4NSwgMTI4LCA4NCwgNjksIDc2LCA3OSwgODUsIDIxMSwgODQsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDg0LCA2OSwgNzYsIAotICAgIDczLCA4MywgNzIsIDE5MywgODQsIDY5LCA3NiwgNjksIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY5LCA3NiwgCi0gICAgNjksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDg0LCAKLSAgICA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgMTk3LCA4NCwgNjksIDc2LCA2OSwgNzMsIDY1LCAxMjgsIDg0LCA2OSwgNzYsIAotICAgIDY5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA4NCwgNjksIDczLCA4NywgODMsIDEyOCwgODQsIDY5LCA3MSwgNjksIDcyLCAKLSAgICAxMjgsIDg0LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA4NCwgNjksIDE5NywgODQsIDY5LCA2OCwgODUsIDc4LCA3MSwgMTI4LCAKLSAgICA4NCwgNjksIDY1LCA4MiwgMjExLCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgODAsIDc5LCA3NSwgCi0gICAgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIDcyLCA2NSwgNzgsIDc1LCA2OSwgMTk2LCAKLSAgICA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA2NiwgNjUsIDgyLCA2NiwgNjksIDE5NiwgODQsIDY5LCA2NSwgCi0gICAgODIsIDQ1LCA3OSwgNzAsIDE5OCwgODQsIDY5LCA2NSwgNjcsIDg1LCAyMDgsIDg0LCA2OSwgNDUsIDg1LCAxMjgsIDg0LCAKLSAgICA2OSwgNDUsIDUwLCAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIAotICAgIDIwMCwgODQsIDY3LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA2NywgNzIsIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCAxMjgsIAotICAgIDg0LCAxOTUsIDg0LCA2NSwgODksIDEyOCwgODQsIDY1LCA4OCwgNzMsIDEyOCwgODQsIDY1LCA4OCwgMTI4LCA4NCwgNjUsIAotICAgIDg3LCA2OSwgNzYsIDc2LCA2OSwgNzcsIDY5LCAyMTIsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDg0LCA2NSwgODcsIDEyOCwgCi0gICAgODQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDg0LCA2NSwgODYsIDEyOCwgODQsIDY1LCAyMTQsIDg0LCAKLSAgICA2NSwgODUsIDgyLCA4NSwgODMsIDEyOCwgODQsIDY1LCAyMTMsIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDc2LCAxMjgsIAotICAgIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDIwNCwgODQsIDY1LCA4NCwgODQsIDc5LCA3OSwgNjksIDE5NiwgODQsIDY1LCA4NCwgCisgICAgMTI4LCA4NSwgNDgsIDQ4LCA0OSwgMTI4LCA4NSwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA4NSwgNDUsIDczLCAKKyAgICA0NSwgNzMsIDEyOCwgODUsIDQ1LCA2OSwgNzksIDQ1LCA2OSwgODUsIDEyOCwgODUsIDQ1LCA2NiwgODIsIDc0LCA3MSwgODUsIAorICAgIDEyOCwgODQsIDkwLCA4NSwgMTI4LCA4NCwgOTAsIDc5LCA2NSwgMTI4LCA4NCwgOTAsIDc5LCAxMjgsIDg0LCA5MCwgNzMsIAorICAgIDIxMCwgODQsIDkwLCA3MywgMTI4LCA4NCwgOTAsIDY5LCA2OSwgMTI4LCA4NCwgOTAsIDY5LCAxMjgsIDg0LCA5MCwgNjUsIAorICAgIDY1LCAxMjgsIDg0LCA5MCwgNjUsIDEyOCwgODQsIDkwLCAxMjgsIDg0LCA4OSwgMjEwLCA4NCwgODksIDgwLCA2OSwgNDUsIAorICAgIDE4MywgODQsIDg5LCA4MCwgNjksIDQ1LCA1NCwgMTI4LCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MiwgODQsIDg5LCA4MCwgCisgICAgNjksIDQ1LCA1MywgMTI4LCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MSwgODQsIDg5LCA4MCwgNjksIDQ1LCA1MiwgMTI4LCAKKyAgICA4NCwgODksIDgwLCA2OSwgNDUsIDE4MCwgODQsIDg5LCA4MCwgNjksIDQ1LCA1MSwgMTI4LCA4NCwgODksIDgwLCA2OSwgNDUsIAorICAgIDE3OSwgODQsIDg5LCA4MCwgNjksIDQ1LCAxNzgsIDg0LCA4OSwgODAsIDY5LCA0NSwgNDksIDQ1LCA1MCwgMTI4LCA4NCwgCisgICAgODksIDgwLCA2OSwgNDUsIDE3NywgODQsIDg5LCA4MCwgMTk3LCA4NCwgODksIDc5LCAxMjgsIDg0LCA4OSwgNzMsIDEyOCwgCisgICAgODQsIDg5LCA2OSwgMTI4LCA4NCwgODksIDY1LCA4OSwgMTI4LCA4NCwgODksIDY1LCAxMjgsIDg0LCA4OCwgODcsIDg2LCAKKyAgICAxMjgsIDg0LCA4OCwgODcsIDIxNCwgODQsIDg4LCA3MiwgNjksIDY5LCAyMDIsIDg0LCA4NywgNzksIDc5LCAxMjgsIDg0LCAKKyAgICA4NywgNzksIDQ1LCA4NywgNjUsIDIxNywgODQsIDg3LCA3OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIAorICAgIDg3LCA3OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODQsIDg3LCA3OSwgNDUsIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA4NCwgCisgICAgODcsIDc5LCA0NSwgNjksIDIwNSwgODQsIDg3LCA3OSwgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA4NCwgODcsIDczLCAKKyAgICA4MywgODQsIDczLCA3OCwgNzEsIDEyOCwgODQsIDg3LCA3MywgODMsIDg0LCA2OSwgMTk2LCA4NCwgODcsIDczLCA3MywgCisgICAgMTI4LCA4NCwgODcsIDczLCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgODcsIDc5LCAxMjgsIDg0LCAKKyAgICA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgCisgICAgNDUsIDgzLCA3MywgODgsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDgzLCA2OSwgODYsIDY5LCA3OCwgMTI4LCAKKyAgICA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgCisgICAgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDg0LCAKKyAgICA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgCisgICAgNjksIDczLCA3MSwgNzIsIDg0LCAyMDAsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgODQsIAorICAgIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDIxNywgODQsIDg3LCA2OSwgCisgICAgNzYsIDg2LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgMTI4LCAKKyAgICA4NCwgODcsIDY5LCA3NiwgODYsIDE5NywgODQsIDg3LCA2OSwgNzYsIDcwLCA4NCwgNzIsIDgzLCAxMjgsIDg0LCA4NywgNjksIAorICAgIDc2LCA3MCwgODQsIDcyLCAxMjgsIDg0LCA4NywgNjksIDEyOCwgODQsIDg3LCA2NSwgNjUsIDEyOCwgODQsIDg3LCA2NSwgCisgICAgMTI4LCA4NCwgODYsIDgyLCA3MywgNjgsIDc5LCAxMjgsIDg0LCA4NiwgNzMsIDc3LCA2NSwgNjgsIDg1LCAyMTAsIDg0LCAKKyAgICA4NSwgODgsIDEyOCwgODQsIDg1LCA4NSwgNzcsIDg1LCAxMjgsIDg0LCA4NSwgODUsIDEyOCwgODQsIDg1LCA4NCwgODQsIAorICAgIDg5LCAxMjgsIDg0LCA4NSwgODQsIDY5LCA4OSwgNjUsIDgzLCA2NSwgODQsIDEyOCwgODQsIDg1LCA4NCwgMTI4LCA4NCwgCisgICAgODUsIDgyLCA4OCwgMTI4LCA4NCwgODUsIDgyLCA4NSwgMTI4LCA4NCwgODUsIDgyLCA4NCwgNzYsIDY5LCAxMjgsIDg0LCAKKyAgICA4NSwgODIsIDc5LCA1MCwgMTI4LCA4NCwgODUsIDgyLCA3OCwgODMsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDg0LCA4NSwgODIsIAorICAgIDc4LCA2OSwgMTk2LCA4NCwgODUsIDgyLCAyMDYsIDg0LCA4NSwgODIsIDc1LCA3MywgODMsIDIwMCwgODQsIDg1LCA4MiwgCisgICAgNzUsIDczLCAxOTUsIDg0LCA4NSwgODIsIDc1LCA2OSwgODksIDEyOCwgODQsIDg1LCA4MiwgNjYsIDY1LCA3OCwgMTI4LCAKKyAgICA4NCwgODUsIDgyLCAxMjgsIDg0LCA4NSwgODAsIDEyOCwgODQsIDg1LCA3OSwgODgsIDEyOCwgODQsIDg1LCA3OSwgODQsIAorICAgIDEyOCwgODQsIDg1LCA3OSwgODAsIDEyOCwgODQsIDg1LCA3OSwgMTI4LCA4NCwgODUsIDc4LCA3OCwgODksIDEyOCwgODQsIAorICAgIDg1LCA3NywgNjksIDg0LCA2OSwgODMsIDEyOCwgODQsIDg1LCA3NywgNjUsIDY5LCAxMjgsIDg0LCA4NSwgNzcsIDEyOCwgCisgICAgODQsIDg1LCAyMDUsIDg0LCA4NSwgNzYsIDczLCA4MCwgMTI4LCA4NCwgODUsIDc1LCA4NywgNjksIDc4LCA4NCwgNzMsIDgzLCAKKyAgICAxMjgsIDg0LCA4NSwgNzUsIDEyOCwgODQsIDg1LCA3MSwgODIsIDczLCAyMDMsIDg0LCA4NSwgNzEsIDUwLCAxMjgsIDg0LCAKKyAgICA4NSwgNzEsIDE3OCwgODQsIDg1LCA2NiwgMTI4LCA4NCwgODUsIDY1LCA4MiwgNjksIDE5OSwgODQsIDg1LCA2NSwgNjksIAorICAgIDgwLCAxMjgsIDg0LCA4NSwgNjUsIDY5LCAxMjgsIDg0LCAyMTMsIDg0LCA4NCwgODUsIDg1LCAxMjgsIDg0LCA4NCwgODUsIAorICAgIDY4LCA2OCwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgODUsIDY4LCA2OCwgNjUsIDY1LCA3MSwgMTI4LCA4NCwgODQsIDg1LCAKKyAgICAxMjgsIDg0LCA4NCwgODQsIDcyLCA2NSwgMTI4LCA4NCwgODQsIDg0LCA2NSwgMTI4LCA4NCwgODQsIDgzLCA4NSwgMTI4LCAKKyAgICA4NCwgODQsIDgzLCA3OSwgMTI4LCA4NCwgODQsIDgzLCA3MywgMTI4LCA4NCwgODQsIDgzLCA2OSwgNjksIDEyOCwgODQsIAorICAgIDg0LCA4MywgNjksIDEyOCwgODQsIDg0LCA4MywgNjUsIDEyOCwgODQsIDg0LCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MywgCisgICAgNzMsIDEyOCwgODQsIDg0LCA3MywgMTI4LCA4NCwgODQsIDcyLCA4NywgNjksIDEyOCwgODQsIDg0LCA3MiwgODUsIDEyOCwgCisgICAgODQsIDg0LCA3MiwgNzksIDc5LCAxMjgsIDg0LCA4NCwgNzIsIDc5LCAxMjgsIDg0LCA4NCwgNzIsIDczLCAxMjgsIDg0LCAKKyAgICA4NCwgNzIsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA2OSwgMTI4LCA4NCwgODQsIDcyLCA2NSwgNjUsIDEyOCwgODQsIAorICAgIDg0LCA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgMjAwLCA4NCwgCisgICAgODQsIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCAyMDAsIDg0LCA4NCwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNjUsIDg5LCAKKyAgICA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NCwgODQsIDY1LCA4NSwgMTI4LCA4NCwgODQsIDY1LCA3MywgMTI4LCA4NCwgODQsIAorICAgIDY1LCA2NSwgMTI4LCA4NCwgODQsIDUwLCAxMjgsIDg0LCA4MywgODcsIDY5LCAxMjgsIDg0LCA4MywgODcsIDY2LCAxMjgsIAorICAgIDg0LCA4MywgODcsIDY1LCAxMjgsIDg0LCA4MywgODYsIDEyOCwgODQsIDgzLCA4MywgNjksIDEyOCwgODQsIDgzLCA4MywgCisgICAgNjUsIDEyOCwgODQsIDgzLCA3OSwgMjE0LCA4NCwgODMsIDczLCA4NSwgMTI4LCA4NCwgODMsIDcyLCA4NSwgNzEsIDgzLCAKKyAgICAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgNzUsIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCAyMDMsIDg0LCA4MywgNzIsIAorICAgIDc5LCA3OSwgNzQsIDEyOCwgODQsIDgzLCA3MiwgNjksIDgzLCAxMjgsIDg0LCA4MywgNzIsIDY5LCA3MSwgMTI4LCA4NCwgCisgICAgODMsIDcyLCA2OSwgMTk5LCA4NCwgODMsIDcyLCA2OSwgNjksIDc0LCAxMjgsIDg0LCA4MywgNzIsIDY5LCAxMjgsIDg0LCAKKyAgICA4MywgNzIsIDY1LCAxOTQsIDg0LCA4MywgNzIsIDY1LCAxMjgsIDg0LCA4MywgNjksIDgyLCA2OSwgMTI4LCA4NCwgODMsIAorICAgIDY5LCA2OSwgNjYsIDEyOCwgODQsIDgzLCA2NSwgNjgsIDczLCAxMjgsIDg0LCA4MywgNjUsIDY4LCAyMDEsIDg0LCA4MywgCisgICAgNjUsIDY2LCAxMjgsIDg0LCA4MywgNjUsIDY1LCA2OCwgNzMsIDg5LCAxMjgsIDg0LCA4MywgNjUsIDY1LCAxMjgsIDg0LCAKKyAgICA4MywgMTkzLCA4NCwgODIsIDg5LCA2NiwgNzYsIDczLCA3OSwgMjA2LCA4NCwgODIsIDg1LCA4NCwgNzIsIDEyOCwgODQsIAorICAgIDgyLCA4NSwgNzgsIDc1LCAxMjgsIDg0LCA4MiwgODUsIDc4LCA2NywgNjUsIDg0LCA2OSwgMTk2LCA4NCwgODIsIDg1LCA3NywgCisgICAgODAsIDY5LCA4NCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCAKKyAgICA1NiwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NCwgCisgICAgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MiwgMTI4LCAKKyAgICA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgNDksIDEyOCwgODQsIAorICAgIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTAsIDQ4LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCAxMjgsIDg0LCA4MiwgCisgICAgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTYsIDEyOCwgODQsIDgyLCAKKyAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDU1LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NCwgMTI4LCA4NCwgODIsIAorICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgNTMsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDUyLCAxMjgsIDg0LCA4MiwgCisgICAgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTAsIDEyOCwgODQsIDgyLCAKKyAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDQ5LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA0OCwgMTI4LCA4NCwgODIsIAorICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgMTI4LCA4NCwgODIsIDg1LCA2OSwgMTI4LCA4NCwgODIsIDg1LCA2NywgNzUsIDEyOCwgCisgICAgODQsIDgyLCA3OSwgODAsIDczLCA2NywgNjUsIDIwNCwgODQsIDgyLCA3OSwgODAsIDcyLCA4OSwgMTI4LCA4NCwgODIsIDc5LCAKKyAgICA3NywgNzMsIDc1LCA3OSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgCisgICAgNzksIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIAorICAgIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCAKKyAgICA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDIwNiwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIAorICAgIDc2LCA4OSwgNzEsIDczLCA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc2LCA3NiwgNjksIDg5LCA2NiwgODUsIDgzLCAKKyAgICAxMjgsIDg0LCA4MiwgNzksIDc1LCA4NSwgODQsIDY1LCA4MywgODQsIDIwMSwgODQsIDgyLCA3OSwgNjksIDkwLCA2OSwgNzgsIAorICAgIDczLCA2NSwgMjA2LCA4NCwgODIsIDczLCA4NSwgNzcsIDgwLCA3MiwgMTI4LCA4NCwgODIsIDczLCA4NCwgNzksIDIxMSwgCisgICAgODQsIDgyLCA3MywgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzMsIDgzLCA3MywgNzcsIAorICAgIDc5LCA4NSwgMTI4LCA4NCwgODIsIDczLCA4MywgNjksIDc3LCA2OSwgMTI4LCA4NCwgODIsIDczLCA4MCwgNzksIDY4LCAKKyAgICAxMjgsIDg0LCA4MiwgNzMsIDgwLCA3NiwgNzMsIDEyOCwgODQsIDgyLCA3MywgODAsIDc2LCA2OSwgMTI4LCA4NCwgODIsIAorICAgIDczLCA4MCwgNzYsIDE5NywgODQsIDgyLCA3MywgNzksIDIwNiwgODQsIDgyLCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCA4MywgCisgICAgMTI4LCA4NCwgODIsIDczLCA3MywgODMsIDY1LCA4MCwgMTI4LCA4NCwgODIsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAKKyAgICAyMTEsIDg0LCA4MiwgNzMsIDcxLCA4MiwgNjUsIDIwNSwgODQsIDgyLCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCA3OCwgCisgICAgMTI4LCA4NCwgODIsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDg0LCA4MiwgNzMsIDcwLCA3OSwgNzYsIDczLCAKKyAgICA2NSwgODQsIDE5NywgODQsIDgyLCA3MywgNjgsIDY5LCA3OCwgODQsIDEyOCwgODQsIDgyLCA3MywgNjgsIDY5LCA3OCwgCisgICAgMjEyLCA4NCwgODIsIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCAKKyAgICA2NSwgMjEwLCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4NCwgODIsIAorICAgIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgODQsIDgyLCA3MywgNjUsIDc4LCAKKyAgICA3MSwgNzYsIDY5LCAxMjgsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCAxOTcsIDg0LCA4MiwgNzMsIDY1LCAxMjgsIAorICAgIDg0LCA4MiwgNzMsIDEyOCwgODQsIDgyLCA2OSwgODMsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDg0LCA4MiwgNjksIDc4LCA2OCwgCisgICAgMTI4LCA4NCwgODIsIDY5LCA3OCwgMTk2LCA4NCwgODIsIDY5LCA3NywgNzksIDc2LCA3OSwgNDUsIDUxLCAxMjgsIDg0LCAKKyAgICA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCA0NSwgNTAsIDEyOCwgODQsIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIDQ1LCA0OSwgCisgICAgMTI4LCA4NCwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODIsIDY5LCAxOTcsIDg0LCA4MiwgNjksIDY1LCA2OCwgNzMsIDc4LCAKKyAgICA3MSwgMTI4LCA4NCwgODIsIDY1LCA4OSwgMTI4LCA4NCwgODIsIDY1LCA4NiwgNjksIDc2LCA0NSwgODcsIDY1LCA3NiwgNzYsIAorICAgIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDg0LCA4MiwgNjUsIDg2LCA2OSwgNzYsIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCAKKyAgICA3NiwgNjUsIDc4LCAxOTcsIDg0LCA4MiwgNjUsIDgwLCA2OSwgOTAsIDczLCA4NSwgNzcsIDEyOCwgODQsIDgyLCA2NSwgNzgsIAorICAgIDgzLCA4NiwgNjksIDgyLCA4MywgNjUsIDIwNCwgODQsIDgyLCA2NSwgNzgsIDgzLCA4MCwgNzksIDgzLCA3MywgODQsIDczLCAKKyAgICA3OSwgMjA2LCA4NCwgODIsIDY1LCA3OCwgODMsIDc3LCA3MywgMjEyLCA4NCwgODIsIDY1LCA3OCwgODMsIDc3LCA3MywgODMsIAorICAgIDgzLCA3MywgNzksIDc4LCAxMjgsIDg0LCA4MiwgNjUsIDc4LCA4MywgNzcsIDczLCA4MywgODMsIDczLCA3OSwgMjA2LCA4NCwgCisgICAgODIsIDY1LCA3NywgODcsIDY1LCA4OSwgMTI4LCA4NCwgODIsIDY1LCA3NywgMTI4LCA4NCwgODIsIDY1LCAyMDUsIDg0LCAKKyAgICA4MiwgNjUsIDczLCA3OCwgMTI4LCA4NCwgODIsIDY1LCA3MywgMjA2LCA4NCwgODIsIDY1LCA3MywgNzYsIDczLCA3OCwgCisgICAgMTk5LCA4NCwgODIsIDY1LCA3MCwgNzAsIDczLCA2NywgMTI4LCA4NCwgODIsIDY1LCA3MCwgNzAsIDczLCAxOTUsIDg0LCAKKyAgICA4MiwgNjUsIDY4LCAxOTcsIDg0LCA4MiwgNjUsIDY3LCA4NCwgNzksIDgyLCAxMjgsIDg0LCA4MiwgNjUsIDY3LCA3NSwgNjYsIAorICAgIDY1LCA3NiwgNzYsIDEyOCwgODQsIDgyLCA2NSwgNjcsIDc1LCAxMjgsIDg0LCA4MiwgNjUsIDEyOCwgODQsIDgyLCAxMjgsIAorICAgIDg0LCA3OSwgODgsIDEyOCwgODQsIDc5LCA4NywgNjksIDgyLCAxMjgsIDg0LCA3OSwgODcsIDY1LCA4MiwgNjgsIDIxMSwgCisgICAgODQsIDc5LCA4NiwgMTI4LCA4NCwgNzksIDg1LCA4MiwgNzgsIDc5LCA3MywgMjExLCA4NCwgNzksIDg1LCA2NywgNzIsIDg0LCAKKyAgICA3OSwgNzgsIDE5NywgODQsIDc5LCA4NSwgNjcsIDcyLCA3MywgNzgsIDE5OSwgODQsIDc5LCA4NSwgNjcsIDcyLCA2OSwgCisgICAgMjExLCA4NCwgNzksIDg1LCA2NywgMjAwLCA4NCwgNzksIDg0LCA2NSwgMjA0LCA4NCwgNzksIDg0LCAxMjgsIDg0LCA3OSwgCisgICAgODMsIDEyOCwgODQsIDc5LCA4MiwgODQsIDc5LCA3MywgODMsIDE5NywgODQsIDc5LCA4MiwgODMsIDc5LCA0NSwgODcsIDY1LCAKKyAgICA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDg0LCA3OSwgODIsIDgzLCA3OSwgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgCisgICAgODAsIDc2LCA2NSwgNzgsIDE5NywgODQsIDc5LCA4MiwgODMsIDc5LCAxMjgsIDg0LCA3OSwgODIsIDc4LCA2NSwgNjgsIDc5LCAKKyAgICAxMjgsIDg0LCA3OSwgODIsIDY3LCA4NSwgNzYsIDg1LCA4MywgMTI4LCA4NCwgNzksIDgyLCA2NywgODUsIDc2LCA4NSwgCisgICAgMjExLCA4NCwgNzksIDgyLCA2NywgNzIsIDEyOCwgODQsIDc5LCA4MSwgMTI4LCA4NCwgNzksIDgwLCA2NiwgNjUsIDgyLCAKKyAgICAxMjgsIDg0LCA3OSwgODAsIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIDg0LCA3OSwgODAsIDEyOCwgODQsIAorICAgIDc5LCAyMDgsIDg0LCA3OSwgNzksIDg0LCA3MiwgMTI4LCA4NCwgNzksIDc5LCA3OCwgMTI4LCA4NCwgNzksIDc4LCA3OSwgCisgICAgODMsIDEyOCwgODQsIDc5LCA3OCwgNzEsIDg1LCA2OSwgMTI4LCA4NCwgNzksIDc4LCA3MSwgODUsIDE5NywgODQsIDc5LCAKKyAgICA3OCwgNzEsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1NiwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDU1LCAxMjgsIAorICAgIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTQsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MywgMTI4LCA4NCwgNzksIDc4LCA2OSwgCisgICAgNDUsIDUyLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTEsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MCwgMTI4LCAKKyAgICA4NCwgNzksIDc4LCA2OSwgNDUsIDQ5LCAxMjgsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA3OSwgNzgsIDY1LCAyMDQsIAorICAgIDg0LCA3OSwgNzcsIDgwLCA3MywgMTI4LCA4NCwgNzksIDc3LCA2NSwgODQsIDc5LCAxMjgsIDg0LCA3OSwgNzYsIDc5LCA3OCwgCisgICAgNzEsIDEyOCwgODQsIDc5LCA3NSwgODksIDIwNywgODQsIDc5LCA3MywgNzYsIDY5LCA4NCwgMTI4LCA4NCwgNzksIDcxLCAKKyAgICA2OSwgODQsIDcyLCA2OSwgODIsIDEyOCwgODQsIDc5LCA2OCwgMjA3LCA4NCwgNzksIDY1LCA3OCwgNjgsIDY1LCA3NSwgNzIsIAorICAgIDczLCA2NSwgODQsIDEyOCwgODQsIDc5LCA2NSwgMTI4LCA4NCwgNzgsIDEyOCwgODQsIDc2LCA4NiwgMTI4LCA4NCwgNzYsIAorICAgIDg1LCAxMjgsIDg0LCA3NiwgNzksIDEyOCwgODQsIDc2LCA3MywgMTI4LCA4NCwgNzYsIDcyLCA4OSwgNjUsIDEyOCwgODQsIAorICAgIDc2LCA3MiwgODcsIDY5LCAxMjgsIDg0LCA3NiwgNzIsIDg1LCAxMjgsIDg0LCA3NiwgNzIsIDc5LCA3OSwgMTI4LCA4NCwgCisgICAgNzYsIDcyLCA3OSwgMTI4LCA4NCwgNzYsIDcyLCA3MywgMTI4LCA4NCwgNzYsIDcyLCA2OSwgNjksIDEyOCwgODQsIDc2LCAKKyAgICA3MiwgNjksIDEyOCwgODQsIDc2LCA3MiwgNjUsIDEyOCwgODQsIDc2LCA2OSwgNjksIDEyOCwgODQsIDc2LCA2NSwgMTI4LCAKKyAgICA4NCwgNzQsIDY5LCAxMjgsIDg0LCA3MywgODgsIDEyOCwgODQsIDczLCA4NywgODIsIDEyOCwgODQsIDczLCA4NywgNzgsIAorICAgIDEyOCwgODQsIDczLCA4NywgNjUsIDIxOCwgODQsIDczLCA4NCwgODUsIDY1LCA2OSwgODAsIDEyOCwgODQsIDczLCA4NCwgCisgICAgNzYsIDc5LCAxMjgsIDg0LCA3MywgODQsIDc2LCAyMDcsIDg0LCA3MywgODQsIDE5MywgODQsIDczLCA4NCwgMTI4LCA4NCwgCisgICAgNzMsIDgyLCA4OSwgNjUsIDc1LCAxMjgsIDg0LCA3MywgODIsIDg0LCAxOTMsIDg0LCA3MywgODIsIDc5LCA3OCwgNzMsIDY1LCAKKyAgICAyMDYsIDg0LCA3MywgODIsIDcyLCA4NSwgODQsIDE5MywgODQsIDczLCA4MiwgNjksIDE5NiwgODQsIDczLCA4MiwgMTI4LCAKKyAgICA4NCwgNzMsIDIxMCwgODQsIDczLCA4MCwgODAsIDczLCAxMjgsIDg0LCA3MywgODAsIDY5LCA3MiwgNjUsIDEyOCwgODQsIAorICAgIDczLCA4MCwgMTI4LCA4NCwgNzMsIDIwOCwgODQsIDczLCA3OCwgODksIDEyOCwgODQsIDczLCA3OCwgMjE3LCA4NCwgNzMsIAorICAgIDc4LCA3OCwgNjksIDEyOCwgODQsIDczLCA3OCwgNjcsIDg0LCA4NSwgODIsIDY5LCAxMjgsIDg0LCA3MywgNzgsIDY1LCA3MSwgCisgICAgNzcsIDY1LCAxMjgsIDg0LCA3MywgNzcsIDY5LCA4MywgMTI4LCA4NCwgNzMsIDc3LCA2OSwgMjEwLCA4NCwgNzMsIDc3LCAKKyAgICA2OSwgMTI4LCA4NCwgNzMsIDc2LCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NCwgNzMsIDc2LCA4NCwgNzMsIDc4LCAxOTksIAorICAgIDg0LCA3MywgNzYsIDg0LCAxMjgsIDg0LCA3MywgNzYsIDY5LCA4MywgMTI4LCA4NCwgNzMsIDc2LCA2OCwgNjksIDEyOCwgCisgICAgODQsIDczLCA3NiwgNjgsIDE5NywgODQsIDczLCA3NiwgMTI4LCA4NCwgNzMsIDIwNCwgODQsIDczLCA3NSwgNjksIDg1LCAKKyAgICA4NCwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIAorICAgIDgzLCA3MywgNzksIDgzLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgCisgICAgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIAorICAgIDg0LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3NSwgNzMsIDg5LCAKKyAgICA2OSwgNzksIDc1LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODQsIAorICAgIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDg0LCA3MywgNzUsIDY5LCAKKyAgICA4NSwgODQsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCAyMTIsIDg0LCA3MywgNzEsIDcyLCA4NCwgNzYsIDg5LCA0NSwgNjcsIAorICAgIDc2LCA3OSwgODMsIDY5LCAxOTYsIDg0LCA3MywgNzEsIDcyLCAyMTIsIDg0LCA3MywgNzEsIDY5LCA4MiwgMTI4LCA4NCwgCisgICAgNzMsIDcxLCA2OSwgMjEwLCA4NCwgNzMsIDcwLCA3MywgNzgsIDY1LCA3MSwgMjAwLCA4NCwgNzMsIDY5LCA4OCwgMTI4LCAKKyAgICA4NCwgNzMsIDY5LCA4MCwgMTI4LCA4NCwgNzMsIDE5NywgODQsIDczLCA2NywgNzUsIDY5LCA4NCwgODMsIDEyOCwgODQsIAorICAgIDczLCA2NywgNzUsIDY5LCA4NCwgMTI4LCA4NCwgNzMsIDY3LCA3NSwgMTI4LCA4NCwgNzMsIDY3LCAyMDMsIDg0LCA3MywgCisgICAgNjUsIDgyLCA2NSwgMTI4LCA4NCwgNzMsIDUwLCAxMjgsIDg0LCA3MiwgOTAsIDEyOCwgODQsIDcyLCA4OSwgNzksIDc5LCAKKyAgICAyMDUsIDg0LCA3MiwgODcsIDc5LCA3OSwgMTI4LCA4NCwgNzIsIDg3LCA3OSwgMTI4LCA4NCwgNzIsIDg3LCA3MywgNzMsIAorICAgIDEyOCwgODQsIDcyLCA4NywgNzMsIDEyOCwgODQsIDcyLCA4NywgNjksIDY5LCAxMjgsIDg0LCA3MiwgODcsIDY1LCA2NSwgCisgICAgMTI4LCA4NCwgNzIsIDg3LCA2NSwgMTI4LCA4NCwgNzIsIDg1LCA4MiwgMjExLCA4NCwgNzIsIDg1LCA4MiwgNzMsIDgzLCAKKyAgICA2NSwgMjE4LCA4NCwgNzIsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDcyLCA4NSwgNzgsIDY4LCA2OSwgODIsIDgzLCA4NCwgNzksIAorICAgIDgyLCA3NywgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCA4MiwgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCAKKyAgICAyMTAsIDg0LCA3MiwgODUsIDc3LCA2NiwgMjExLCA4NCwgNzIsIDg1LCA3NywgNjYsIDEyOCwgODQsIDcyLCA4MiwgNzksIAorICAgIDg3LCA3MywgNzgsIDE5OSwgODQsIDcyLCA4MiwgNzksIDg1LCA3MSwgNzIsIDEyOCwgODQsIDcyLCA4MiwgNzksIDg1LCA3MSwgCisgICAgMjAwLCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDg0LCA3MiwgODIsIDY5LCAKKyAgICA2OSwgNDUsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDIxMCwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgODAsIDY5LCA4MiwgCisgICAgNDUsIDY5LCAyMDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODQsIDcyLCA4MiwgNjksIDY5LCAKKyAgICA0NSwgNjksIDIwNSwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgMTk2LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA2NywgNzMsIAorICAgIDgyLCA2NywgNzYsIDE5NywgODQsIDcyLCA4MiwgNjksIDY1LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgCisgICAgNjgsIDgzLCAxMjgsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgMjExLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCAKKyAgICA3OCwgNjgsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDE5NiwgODQsIDcyLCA3OSwgODUsIDcxLCA3MiwgCisgICAgMjEyLCA4NCwgNzIsIDc5LCA4NSwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgNzgsIDEyOCwgODQsIDcyLCA3OSwgODIsIDIwNiwgCisgICAgODQsIDcyLCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3MiwgNzksIDc3LCAxMjgsIDg0LCA3MiwgNzksIDc0LCAxMjgsIDg0LCAKKyAgICA3MiwgNzksIDY1LCAxMjgsIDg0LCA3MiwgMjA3LCA4NCwgNzIsIDczLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA3MiwgNzMsIAorICAgIDg0LCA2NSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCA0NSwgODMsIDY5LCA2NywgNzksIDc4LCAxOTYsIDg0LCA3MiwgCisgICAgNzMsIDgyLCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgMjE3LCA4NCwgNzIsIDczLCAKKyAgICA4MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIDIwNiwgODQsIDcyLCA3MywgODIsIAorICAgIDY4LCA4MywgMTI4LCA4NCwgNzIsIDczLCA4MiwgNjgsIDIxMSwgODQsIDcyLCA3MywgODIsIDY4LCA0NSwgODMsIDg0LCA2NSwgCisgICAgNzEsIDE5NywgODQsIDcyLCA3MywgODIsIDY4LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCAxOTYsIDg0LCA3MiwgNzMsIDc4LCAKKyAgICA3NSwgNzMsIDc4LCAxOTksIDg0LCA3MiwgNzMsIDczLCAxMjgsIDg0LCA3MiwgNzMsIDcxLCA3MiwgMTI4LCA4NCwgNzIsIAorICAgIDczLCA2OSwgODUsIDg0LCAyMDAsIDg0LCA3MiwgNzMsIDY3LCAyMDMsIDg0LCA3MiwgNzMsIDY1LCA2NiwgMTI4LCA4NCwgCisgICAgNzIsIDY5LCA4OSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgMTI4LCAKKyAgICA4NCwgNzIsIDY5LCA4NCwgNjUsIDEyOCwgODQsIDcyLCA2OSwgODQsIDE5MywgODQsIDcyLCA2OSwgODMsIDgwLCA3MywgNjUsIAorICAgIDIwNiwgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgODMsIDEyOCwgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgMjExLCA4NCwgCisgICAgNzIsIDY5LCAyMTEsIDg0LCA3MiwgNjksIDgyLCA3NywgNzksIDc3LCA2OSwgODQsIDY5LCA4MiwgMTI4LCA4NCwgNzIsIDY5LCAKKyAgICA4MiwgNzcsIDc5LCA2OCwgODksIDc4LCA2NSwgNzcsIDczLCA2NywgMTI4LCA4NCwgNzIsIDY5LCA4MiwgNjksIDcwLCA3OSwgCisgICAgODIsIDY5LCAxMjgsIDg0LCA3MiwgNjksIDgyLCAxOTcsIDg0LCA3MiwgNjksIDIwNiwgODQsIDcyLCA2OSwgNzcsIDY1LCAKKyAgICA4NCwgNzMsIDgzLCA3NywgNzksIDIxMSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDc3LCAxOTMsIAorICAgIDg0LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA3MiwgNjksIDIwMCwgODQsIDcyLCA2OSwgNjUsIDEyOCwgODQsIDcyLCAxOTcsIAorICAgIDg0LCA3MiwgNjUsIDg3LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCA4NCwgNzIsIDY1LCA3NSwgNzIsIDY1LCA4NCwgMTI4LCA4NCwgCisgICAgNzIsIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDIwNiwgODQsIDcyLCAKKyAgICA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgODQsIDcyLCA2NSwgNzYsIDEyOCwgODQsIDcyLCA2NSwgMjA0LCA4NCwgNzIsIAorICAgIDY1LCA3NCwgMTI4LCA4NCwgNzIsIDY1LCAyMDEsIDg0LCA3MiwgNjUsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgCisgICAgNjUsIDc4LCAxOTMsIDg0LCA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgODQsIDcyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCAKKyAgICA4NCwgNjksIDg4LCA4NCwgMTI4LCA4NCwgNjksIDg4LCAyMTIsIDg0LCA2OSwgODgsIDEyOCwgODQsIDY5LCA4NiwgNzMsIAorICAgIDgyLCAxMjgsIDg0LCA2OSwgODUsIDg0LCA2OSwgODUsIDg4LCAxMjgsIDg0LCA2OSwgODUsIDg0LCA2OSwgODUsIDg3LCA2OSwgCisgICAgNzgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDEyOCwgODQsIDY5LCA4NSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgNjUsIDY5LCAKKyAgICA4MSwgMTI4LCA4NCwgNjksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIDEyOCwgODQsIDY5LCA4NCwgODIsIAorICAgIDY1LCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MywgNjksIDc3LCA2OSwgMTI4LCA4NCwgCisgICAgNjksIDg0LCA4MiwgNjUsIDgwLCA3NiwgNzMsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDg0LCAKKyAgICA2OSwgODQsIDgyLCA2NSwgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA4NCwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNjksIAorICAgIDg0LCAyMDAsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDc5LCAyMTEsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDczLCA3NywgCisgICAgNzksIDgyLCA3MywgNzksIDc4LCAxMjgsIDg0LCA2OSwgODQsIDEyOCwgODQsIDY5LCAyMTIsIDg0LCA2OSwgODMsIDgzLCAKKyAgICA2OSwgODIsIDY1LCAxMjgsIDg0LCA2OSwgODMsIDgzLCA2OSwgODIsIDE5MywgODQsIDY5LCA4MywgODMsIDY1LCA4MiwgNzksIAorICAgIDIwNiwgODQsIDY5LCA4MywgMjAwLCA4NCwgNjksIDgyLCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4NCwgCisgICAgNjksIDgwLCAxMjgsIDg0LCA2OSwgNzgsIDg1LCA4NCwgNzksIDEyOCwgODQsIDY5LCA3OCwgODUsIDEyOCwgODQsIDY5LCAKKyAgICA3OCwgMjEzLCA4NCwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA3OCwgODQsIDEyOCwgODQsIDY5LCA3OCwgODMsIAorICAgIDY5LCAxMjgsIDg0LCA2OSwgNzgsIDgzLCAxOTcsIDg0LCA2OSwgNzgsIDgzLCAxMjgsIDg0LCA2OSwgNzgsIDIxMSwgODQsIAorICAgIDY5LCA3OCwgNzgsIDczLCAyMTEsIDg0LCA2OSwgNzgsIDcxLCAxOTcsIDg0LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgCisgICAgODQsIDg5LCAxMjgsIDg0LCA2OSwgNzgsIDEyOCwgODQsIDY5LCAyMDYsIDg0LCA2OSwgNzcsIDgwLCA4NSwgMjExLCA4NCwgCisgICAgNjksIDc2LCA4NSwgMTI4LCA4NCwgNjksIDc2LCA3OSwgODUsIDIxMSwgODQsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDg0LCAKKyAgICA2OSwgNzYsIDczLCA4MywgNzIsIDE5MywgODQsIDY5LCA3NiwgNjksIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODQsIAorICAgIDY5LCA3NiwgNjksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAKKyAgICAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgMTk3LCA4NCwgNjksIDc2LCA2OSwgNzMsIDY1LCAxMjgsIAorICAgIDg0LCA2OSwgNzYsIDY5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA4NCwgNjksIDc1LCAxMjgsIDg0LCA2OSwgNzMsIDg3LCA4MywgCisgICAgMTI4LCA4NCwgNjksIDcxLCA2OSwgNzIsIDEyOCwgODQsIDY5LCA2OSwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNjksIDg0LCAKKyAgICAyMDAsIDg0LCA2OSwgNjksIDc4LCA4MywgMTI4LCA4NCwgNjksIDY5LCA2OSwgNjksIDEyOCwgODQsIDY5LCAxOTcsIDg0LCAKKyAgICA2OSwgNjgsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDY5LCA2NSwgODIsIDIxMSwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIAorICAgIDgwLCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCAKKyAgICA3MiwgNjUsIDc4LCA3NSwgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgNjYsIDY1LCA4MiwgCisgICAgNjYsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA0NSwgNzksIDcwLCAxOTgsIDg0LCA2OSwgNjUsIDY3LCA4NSwgMjA4LCAKKyAgICA4NCwgNjksIDQ1LCA4NSwgMTI4LCA4NCwgNjksIDQ1LCA1MCwgMTI4LCA4NCwgNjcsIDcyLCA2OSwgNzIsIDY5LCA3MiwgCisgICAgMTI4LCA4NCwgNjcsIDcyLCA2OSwgNzIsIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCA3MiwgMTI4LCA4NCwgNjcsIDcyLCAKKyAgICA2OSwgMjAwLCA4NCwgNjcsIDcyLCA2OSwgMTI4LCA4NCwgMTk1LCA4NCwgNjUsIDg5LCAxMjgsIDg0LCA2NSwgODgsIDczLCAKKyAgICAxMjgsIDg0LCA2NSwgODgsIDEyOCwgODQsIDY1LCA4NywgNjksIDc2LCA3NiwgNjksIDc3LCA2OSwgMjEyLCA4NCwgNjUsIAorICAgIDg3LCA2NSwgMTI4LCA4NCwgNjUsIDg3LCAxMjgsIDg0LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4NCwgCisgICAgNjUsIDg2LCAxMjgsIDg0LCA2NSwgMjE0LCA4NCwgNjUsIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg0LCA2NSwgODUsIDc3LCAKKyAgICAxMjgsIDg0LCA2NSwgMjEzLCA4NCwgNjUsIDg0LCA4NywgNjksIDY5LCA3NiwgMTI4LCA4NCwgNjUsIDg0LCA4NywgNjksIAorICAgIDY5LCAyMDQsIDg0LCA2NSwgODQsIDg0LCA3OSwgNzksIDY5LCAxOTYsIDg0LCA2NSwgODQsIDEyOCwgODQsIDY1LCA4MywgCiAgICAgMTI4LCA4NCwgNjUsIDgyLCA4NSwgNzgsIDcxLCAxMjgsIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDQ1LCA1MCwgMTI4LCAKLSAgICA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCAxMjgsIDg0LCA2NSwgODEsIDEyOCwgODQsIDY1LCA4MCwgNjksIDgyLCAxMjgsIAotICAgIDg0LCA2NSwgODAsIDE5NywgODQsIDY1LCA4MCwgMTI4LCA4NCwgNjUsIDc5LCAxMjgsIDg0LCA2NSwgNzgsIDc4LCA2OSwgCi0gICAgMTk2LCA4NCwgNjUsIDc4LCA3MSwgNjksIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg0LCA2NSwgNzgsIDE5OSwgODQsIDY1LCAKLSAgICA3OCwgNjUsIDY2LCA2NSwgODQsIDE5MywgODQsIDY1LCA3OCwgMTI4LCA4NCwgNjUsIDc3LCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDg0LCA2NSwgNzcsIDEyOCwgODQsIDY1LCA3NiwgNzYsIDEyOCwgODQsIDY1LCA3NiwgMjA0LCA4NCwgNjUsIDc2LCA3MywgCi0gICAgNzgsIDcxLCAxMjgsIDg0LCA2NSwgNzYsIDczLCA3OCwgMTk5LCA4NCwgNjUsIDc2LCA2OSwgNzgsIDg0LCA4MywgMTI4LCAKLSAgICA4NCwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgODQsIDY1LCA3NSwgODIsIDIwMSwgODQsIDY1LCA3NSwgNzIsIDY1LCA3NiwgNzYsIAotICAgIDg1LCA4MywgMTI4LCA4NCwgNjUsIDc1LCA2OSwgMTI4LCA4NCwgNjUsIDc1LCA1MiwgMTI4LCA4NCwgNjUsIDc1LCAxMjgsIAotICAgIDg0LCA2NSwgNzMsIDgzLCA4OSwgNzksIDg1LCAxMjgsIDg0LCA2NSwgNzMsIDc2LCA3NiwgNjksIDgzLCAyMTEsIDg0LCA2NSwgCi0gICAgNzMsIDc2LCAxMjgsIDg0LCA2NSwgNzMsIDIwNCwgODQsIDY1LCA3MiwgMTI4LCA4NCwgNjUsIDIwMCwgODQsIDY1LCA3MSwgCi0gICAgNjYsIDY1LCA3OCwgODcsIDE5MywgODQsIDY1LCA3MSwgNjUsIDc2LCA3OSwgMTk5LCA4NCwgNjUsIDcxLCAxMjgsIDg0LCAKLSAgICA2NSwgNjksIDIwNiwgODQsIDY1LCA2NywgNzUsIDEyOCwgODQsIDY1LCA2NywgMjAzLCA4NCwgNjUsIDY2LCA4NSwgNzYsIAotICAgIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjUsIDY2LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg0LCA2NSwgCi0gICAgNjYsIDgzLCAxMjgsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4NCwgNjUsIDY2LCAxMjgsIDg0LCA2NSwgMTk0LCA4NCwgCi0gICAgNjUsIDY1LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4NCwgNjUsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIDY1LCA3NywgMTI4LCAKLSAgICA4NCwgNjUsIDY1LCA3NiwgODUsIDc0LCAxOTMsIDg0LCA2NSwgNjUsIDczLCAxMjgsIDg0LCA2NSwgNjUsIDcwLCAxMjgsIAotICAgIDg0LCA2NSwgNTAsIDEyOCwgODQsIDY1LCA0NSwgODIsIDc5LCA3NiwgMTI4LCA4NCwgNjUsIDQ1LCA1MCwgMTI4LCA4NCwgCi0gICAgNDgsIDUxLCA1NCwgMTI4LCA4NCwgNDgsIDUxLCA1MywgMTI4LCA4NCwgNDgsIDUxLCA1MiwgMTI4LCA4NCwgNDgsIDUxLCAKLSAgICA1MSwgNjUsIDEyOCwgODQsIDQ4LCA1MSwgNTEsIDEyOCwgODQsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIDg0LCA0OCwgNTEsIAotICAgIDUwLCAxMjgsIDg0LCA0OCwgNTEsIDQ5LCAxMjgsIDg0LCA0OCwgNTEsIDQ4LCAxMjgsIDg0LCA0OCwgNTAsIDU3LCAxMjgsIAotICAgIDg0LCA0OCwgNTAsIDU2LCAxMjgsIDg0LCA0OCwgNTAsIDU1LCAxMjgsIDg0LCA0OCwgNTAsIDU0LCAxMjgsIDg0LCA0OCwgCi0gICAgNTAsIDUzLCAxMjgsIDg0LCA0OCwgNTAsIDUyLCAxMjgsIDg0LCA0OCwgNTAsIDUxLCAxMjgsIDg0LCA0OCwgNTAsIDUwLCAKLSAgICAxMjgsIDg0LCA0OCwgNTAsIDQ5LCAxMjgsIDg0LCA0OCwgNTAsIDQ4LCAxMjgsIDg0LCA0OCwgNDksIDU3LCAxMjgsIDg0LCAKLSAgICA0OCwgNDksIDU2LCAxMjgsIDg0LCA0OCwgNDksIDU1LCAxMjgsIDg0LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4NCwgNDgsIAotICAgIDQ5LCA1NCwgMTI4LCA4NCwgNDgsIDQ5LCA1MywgMTI4LCA4NCwgNDgsIDQ5LCA1MiwgMTI4LCA4NCwgNDgsIDQ5LCA1MSwgCi0gICAgMTI4LCA4NCwgNDgsIDQ5LCA1MCwgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgODQsIDQ4LCA0OSwgNDksIDEyOCwgCi0gICAgODQsIDQ4LCA0OSwgNDgsIDEyOCwgODQsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU3LCAxMjgsIDg0LCAKLSAgICA0OCwgNDgsIDU2LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NiwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgODQsIAotICAgIDQ4LCA0OCwgNTUsIDEyOCwgODQsIDQ4LCA0OCwgNTQsIDEyOCwgODQsIDQ4LCA0OCwgNTMsIDEyOCwgODQsIDQ4LCA0OCwgCi0gICAgNTIsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDUxLCAxMjgsIDg0LCA0OCwgNDgsIDUwLCAKLSAgICAxMjgsIDg0LCA0OCwgNDgsIDQ5LCAxMjgsIDg0LCA0NSwgODMsIDcyLCA3MywgODIsIDg0LCAxMjgsIDgzLCA5MCwgOTAsIAotICAgIDEyOCwgODMsIDkwLCA4NywgNzEsIDEyOCwgODMsIDkwLCA4NywgNjUsIDEyOCwgODMsIDkwLCA4NSwgMTI4LCA4MywgOTAsIAotICAgIDc5LCAxMjgsIDgzLCA5MCwgNzMsIDEyOCwgODMsIDkwLCA2OSwgNjksIDEyOCwgODMsIDkwLCA2OSwgMTI4LCA4MywgOTAsIAotICAgIDY1LCA2NSwgMTI4LCA4MywgOTAsIDY1LCAxMjgsIDgzLCA5MCwgMTI4LCA4MywgODksIDg4LCAxMjgsIDgzLCA4OSwgODQsIAotICAgIDEyOCwgODMsIDg5LCA4MywgODQsIDY5LCAyMDUsIDgzLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA4OSwgODIsIDc3LCA2NSwgCi0gICAgODQsIDczLCA3NSwgNzMsIDEyOCwgODMsIDg5LCA4MiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgODIsIDczLCA3OCwgNzEsIDY5LCAKLSAgICAxMjgsIDgzLCA4OSwgODIsIDEyOCwgODMsIDg5LCA4MCwgMTI4LCA4MywgODksIDc5LCA4NSwgODcsIDY1LCAxMjgsIDgzLCAKLSAgICA4OSwgNzgsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgNzgsIDY4LCA2OSwgODMsIDc3LCA3OSwgMjExLCA4MywgODksIAotICAgIDc4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgMjExLCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCAxOTMsIDgzLCA4OSwgCi0gICAgNzgsIDY1LCA3MCwgNzMsIDEyOCwgODMsIDg5LCA3OCwgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCA4MiwgODksIAotICAgIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCA4NCwgODIsIDczLCAxOTUsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDgzLCAKLSAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTYsIAotICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NCwgCi0gICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKLSAgICA1MywgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAotICAgIDc2LCA0NSwgNTMsIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNDgsIDEyOCwgODMsIDg5LCA3NywgCi0gICAgNjYsIDc5LCA3NiwgNDUsIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTcsIDEyOCwgODMsIDg5LCAKLSAgICA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU1LCAxMjgsIAotICAgIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCAKLSAgICA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAotICAgIDQ1LCA1MiwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCi0gICAgNzYsIDQ1LCA1MSwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NiwgMTI4LCA4MywgODksIDc3LCAKLSAgICA2NiwgNzksIDc2LCA0NSwgNTEsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTQsIDEyOCwgODMsIAotICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDQ4LCAKLSAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIAotICAgIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCi0gICAgNDUsIDUwLCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCAKLSAgICA3OSwgNzYsIDQ1LCA1MCwgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MSwgMTI4LCA4MywgODksIAotICAgIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNDksIDEyOCwgCi0gICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIAotICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCi0gICAgNDksIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKLSAgICA3NiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUzLCAxMjgsIDgzLCA4OSwgNzcsIAotICAgIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MSwgMTI4LCA4MywgCi0gICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNDksIAotICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCi0gICAgNDksIDEyOCwgODMsIDg5LCA3NiwgNzksIDg0LCAyMDEsIDgzLCA4OSwgMTI4LCA4MywgODcsIDkwLCAxMjgsIDgzLCA4NywgCi0gICAgODUsIDc4LCAxOTksIDgzLCA4NywgNzksIDgyLCA2OCwgODMsIDEyOCwgODMsIDg3LCA3OSwgODIsIDY4LCAxMjgsIDgzLCAKLSAgICA4NywgNzksIDc5LCAxMjgsIDgzLCA4NywgNzksIDEyOCwgODMsIDg3LCA3MywgODIsIDIwNCwgODMsIDg3LCA3MywgNzcsIAotICAgIDc3LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNzMsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NywgNzMsIDczLCAKLSAgICAxMjgsIDgzLCA4NywgNzMsIDEyOCwgODMsIDg3LCA3MSwgMTI4LCA4MywgODcsIDY5LCA2OSwgODQsIDEyOCwgODMsIDg3LCAKLSAgICA2OSwgNjksIDIxMiwgODMsIDg3LCA2OSwgNjUsIDg0LCAxMjgsIDgzLCA4NywgNjksIDY1LCAyMTIsIDgzLCA4NywgNjUsIAotICAgIDgzLCAyMDAsIDgzLCA4NywgNjUsIDgwLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDY1LCA2NSwgMTI4LCA4MywgCi0gICAgODcsIDEyOCwgODMsIDg2LCA2NSwgODMsIDg0LCAyMDEsIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDY1LCAxMjgsIDgzLCAKLSAgICA4NiwgNjUsIDgyLCA3MywgODQsIDE5MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODUsIDg1LCAxMjgsIDgzLCA4NSwgODQsIAotICAgIDEyOCwgODMsIDg1LCA4MywgODAsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCA4MywgODUsIDgzLCA3MiwgNzMsIDEyOCwgCi0gICAgODMsIDg1LCA4MiwgODksIDY1LCAxMjgsIDgzLCA4NSwgODIsIDg4LCAxMjgsIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCAKLSAgICA2OCwgMTI4LCA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4MywgODUsIDgyLCA3MCwgNjksIDgyLCAxMjgsIAotICAgIDgzLCA4NSwgODIsIDcwLCA2NSwgNjcsIDE5NywgODMsIDg1LCA4MiwgNjksIDEyOCwgODMsIDg1LCA4MiwgNjUsIDc4LCA3MSwgCi0gICAgMTI4LCA4MywgODUsIDgyLCA1NywgMTI4LCA4MywgODUsIDgyLCAxMjgsIDgzLCA4NSwgMjEwLCA4MywgODUsIDgwLCA4MiwgCi0gICAgNjUsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDgwLCA2OSwgODIsIDg2LCA3MywgODMsIDY5LCAxMjgsIDgzLCAKLSAgICA4NSwgODAsIDY5LCA4MiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCA2OSwgMjEyLCA4MywgODUsIAotICAgIDgwLCA2OSwgODIsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIDgwLCA2OSwgODIsIDczLCA3NywgODAsIDc5LCAKLSAgICA4MywgNjksIDE5NiwgODMsIDg1LCA4MCwgNjksIDgyLCA3MCwgNzMsIDg4LCA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgCi0gICAgMjEwLCA4MywgODUsIDgwLCAxMjgsIDgzLCA4NSwgNzksIDg4LCAxMjgsIDgzLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA4NSwgCi0gICAgNzksIDEyOCwgODMsIDg1LCA3OCwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNzgsIDgyLCA3MywgODMsIDY5LCAxMjgsIDgzLCAKLSAgICA4NSwgNzgsIDgyLCA3MywgODMsIDE5NywgODMsIDg1LCA3OCwgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgODMsIAotICAgIDg1LCA3OCwgNzEsIDEyOCwgODMsIDg1LCA3OCwgNzAsIDc2LCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgODUsIDc4LCAKLSAgICAxMjgsIDgzLCA4NSwgMjA2LCA4MywgODUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgODMsIDg1LCA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA4NSwgNzcsIDY1LCA4MywgCi0gICAgNzIsIDEyOCwgODMsIDg1LCA3NywgMTI4LCA4MywgODUsIDc2LCA3MCwgODUsIDgyLCAxMjgsIDgzLCA4NSwgNzUsIDg1LCAKLSAgICA3OCwgMTI4LCA4MywgODUsIDc1LCA4NSwgMjA2LCA4MywgODUsIDc1LCA4NSwgMTI4LCA4MywgODUsIDc1LCAyMTMsIDgzLCAKLSAgICA4NSwgNzMsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4MywgODUsIDczLCA4NCwgMTI4LCA4MywgODUsIDcyLCA4NSwgODIsIAotICAgIDEyOCwgODMsIDg1LCA2OSwgMTI4LCA4MywgODUsIDY4LCA1MCwgMTI4LCA4MywgODUsIDY4LCAxMjgsIDgzLCA4NSwgNjcsIAotICAgIDY3LCA2OSwgNjksIDY4LCA4MywgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgMjExLCA4MywgODUsIDY3LCA2NywgCi0gICAgNjksIDY5LCA2OCwgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDg1LCA3OCwgNzMsIDg0LCAKLSAgICAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDczLCA3OSwgMjA2LCA4MywgODUsIDY2LCA4MywgODQsIAotICAgIDczLCA4NCwgODUsIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCAxOTcsIDgzLCA4NSwgCi0gICAgNjYsIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA2NiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNjYsIDgzLCA2NywgODIsIDczLCAKLSAgICA4MCwgMjEyLCA4MywgODUsIDY2LCA4MCwgODUsIDc4LCA2NywgODQsIDczLCA4MywgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIAotICAgIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgCi0gICAgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDQ1LCA1MSwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIAotICAgIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA3NiwgCi0gICAgNzMsIDc3LCA2NSwgODQsIDE5NywgODMsIDg1LCA2NiwgNzQsIDc5LCA3MywgNzgsIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDc0LCAKLSAgICA2OSwgNjcsIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDczLCA4NCwgNzksIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIAotICAgIDgwLCAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCAyMDgsIDgzLCA4NSwgNjYsIDEyOCwgODMsIDg1LCA2NSwgCi0gICAgNjksIDg0LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA4MywgODUsIDY1LCAKLSAgICAxMjgsIDgzLCAyMTMsIDgzLCA4NCwgODgsIDEyOCwgODMsIDg0LCA4NywgNjUsIDEyOCwgODMsIDg0LCA4NSwgNjgsIDg5LCAKLSAgICAxMjgsIDgzLCA4NCwgODUsIDY3LCA3NSwgNDUsIDc5LCA4NSwgMjEyLCA4MywgODQsIDgzLCAxMjgsIDgzLCA4NCwgODIsIAotICAgIDc5LCA3OCwgMTk5LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA4MywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAKLSAgICAyMTEsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTYsIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU1LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NCwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTMsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUyLCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTAsIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgCi0gICAgNDksIDQ4LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIAotICAgIDE5NywgODMsIDg0LCA4MiwgNzMsIDgwLCA2OSwgMTI4LCA4MywgODQsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NCwgCi0gICAgODIsIDczLCA3OCwgMTk5LCA4MywgODQsIDgyLCA3MywgNzUsIDY5LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3MywgNjgsIDY5LCAxMjgsIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDc2LCAyMTcsIDgzLCA4NCwgODIsIAotICAgIDY5LCA4NCwgNjcsIDcyLCA2OSwgMTk2LCA4MywgODQsIDgyLCA2OSwgODMsIDIxMSwgODMsIDg0LCA4MiwgNjksIDc4LCA3MSwgCi0gICAgODQsIDcyLCAxMjgsIDgzLCA4NCwgODIsIDY5LCA2NSwgNzcsIDY5LCA4MiwgMTI4LCA4MywgODQsIDgyLCA2NSwgODcsIDY2LCAKLSAgICA2OSwgODIsIDgyLCA4OSwgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCA3NywgNDUsIDUwLCAxMjgsIDgzLCA4NCwgODIsIAotICAgIDY1LCA4NCwgODUsIDc3LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDIwNSwgODMsIDg0LCA4MiwgNjUsIDg0LCA3MywgCi0gICAgNjUsIDIwNiwgODMsIDg0LCA4MiwgNjUsIDczLCA3OCwgNjksIDgyLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCAKLSAgICA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDIxMiwgODMsIDg0LCA4MiwgNjUsIAotICAgIDczLCA3MCwgMTI4LCA4MywgODQsIDgyLCA2NSwgNzEsIDcxLCA3MywgODMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA4NCwgCi0gICAgNzksIDg2LCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MiwgNjksIDEyOCwgODMsIDg0LCA3OSwgODAsIDg3LCA2NSwgODQsIDY3LCAKLSAgICA3MiwgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCA3OSwgODAsIDgwLCA2NSwgNzEsIAotICAgIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgwLCAxMjgsIDgzLCA4NCwgNzksIDIwOCwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIAotICAgIDgzLCA4NCwgNzksIDY3LCA3NSwgMTI4LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDgzLCA4NCwgNzMsIDc2LCAKLSAgICAyMDQsIDgzLCA4NCwgNzMsIDc2LCAxOTcsIDgzLCA4NCwgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDg0LCA2OSwgODAsIAotICAgIDEyOCwgODMsIDg0LCA2OSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgODMsIDg0LCA2OSwgCi0gICAgNjUsIDc3LCAxMjgsIDgzLCA4NCwgNjksIDY1LCAyMDUsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDg1LCAxMjgsIDgzLCAKLSAgICA4NCwgNjUsIDg2LCA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDIxMSwgODMsIDg0LCA2NSwgODUsIAotICAgIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgODQsIDg1LCAxOTcsIDgzLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDgzLCA4NCwgNjUsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA2OSwgMTI4LCA4MywgODQsIAotICAgIDY1LCA4MiwgMjEyLCA4MywgODQsIDY1LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgODIsIDgyLCA2OSwgMTk2LCA4MywgCi0gICAgODQsIDY1LCA4MiwgNzUsIDEyOCwgODMsIDg0LCA2NSwgODIsIDEyOCwgODMsIDg0LCA2NSwgMjEwLCA4MywgODQsIDY1LCAKLSAgICA3OCwgNjgsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCA4MywgODQsIDY1LCA3OCwgNjgsIDY1LCA4MiwgMTk2LCA4MywgODQsIAotICAgIDY1LCA3OCwgNjgsIDEyOCwgODMsIDg0LCA2NSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgNzYsIDc2LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDgzLCA4NCwgNjUsIDcwLCA3MCwgMTI4LCA4MywgODQsIDY1LCA3MCwgMTk4LCA4MywgODQsIDY1LCA2NywgNjcsIAotICAgIDY1LCA4NCwgNzksIDEyOCwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDczLCA4MywgODMsIDczLCA3NywgNzksIDEyOCwgCi0gICAgODMsIDg0LCA1MCwgMTI4LCA4MywgODMsIDg5LCA4OCwgMTI4LCA4MywgODMsIDg5LCA4NCwgMTI4LCA4MywgODMsIDg5LCAKLSAgICA4MiwgODgsIDEyOCwgODMsIDgzLCA4OSwgODIsIDEyOCwgODMsIDgzLCA4OSwgODAsIDEyOCwgODMsIDgzLCA4OSwgMTI4LCAKLSAgICA4MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODMsIDg1LCA4NSwgMTI4LCA4MywgODMsIDg1LCA4NCwgMTI4LCA4MywgODMsIAotICAgIDg1LCA4MCwgMTI4LCA4MywgODMsIDc5LCA4OCwgMTI4LCA4MywgODMsIDc5LCA4NCwgMTI4LCA4MywgODMsIDc5LCA4MCwgCi0gICAgMTI4LCA4MywgODMsIDc5LCA3OSwgMTI4LCA4MywgODMsIDc5LCAxMjgsIDgzLCA4MywgNzMsIDg4LCAxMjgsIDgzLCA4MywgCi0gICAgNzMsIDg0LCAxMjgsIDgzLCA4MywgNzMsIDgwLCAxMjgsIDgzLCA4MywgNzMsIDczLCAxMjgsIDgzLCA4MywgNzMsIDY5LCAKLSAgICA4OCwgMTI4LCA4MywgODMsIDczLCA2OSwgODAsIDEyOCwgODMsIDgzLCA3MywgNjksIDEyOCwgODMsIDgzLCA3MywgMTI4LCAKLSAgICA4MywgODMsIDcyLCA2OSwgMTI4LCA4MywgODMsIDY5LCA4OCwgMTI4LCA4MywgODMsIDY5LCA4MCwgMTI4LCA4MywgODMsIAotICAgIDY5LCA2OSwgMTI4LCA4MywgODMsIDY1LCA4OCwgMTI4LCA4MywgODMsIDY1LCA4NSwgMTI4LCA4MywgODMsIDY1LCA4NCwgCi0gICAgMTI4LCA4MywgODMsIDY1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCAKLSAgICA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MCwgCi0gICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgzLCAKLSAgICA4MywgNjUsIDc4LCA3MSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgCi0gICAgNzMsIDc5LCA4MywgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIAotICAgIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAKLSAgICA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIAotICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIAotICAgIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgCi0gICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIDgzLCAKLSAgICA2NSwgNzgsIDcxLCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgCi0gICAgNzksIDc1LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA4MywgNjUsIDc4LCAKLSAgICA3MSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgCi0gICAgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgzLCAKLSAgICA4MywgNjUsIDc4LCA3MSwgNjUsIDgyLCA2NSwgNjksIDY1LCAxMjgsIDgzLCA4MywgNjUsIDczLCAxMjgsIDgzLCA4MywgNjUsIAotICAgIDY1LCAxMjgsIDgzLCA4MywgNTEsIDEyOCwgODMsIDgzLCA1MCwgMTI4LCA4MywgODIsIDEyOCwgODMsIDgxLCA4NSwgNzMsIAotICAgIDgzLCAyMDAsIDgzLCA4MSwgODUsIDczLCA4MiwgODIsIDY5LCAyMDQsIDgzLCA4MSwgODUsIDczLCA3MSwgNzEsIDc2LCAKLSAgICAxOTcsIDgzLCA4MSwgODUsIDY1LCAyMTIsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDgzLCAxMjgsIDgzLCA4MSwgODUsIAotICAgIDY1LCA4MiwgNjksIDY4LCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDEyOCwgODMsIDgwLCA4NywgNjUsIDEyOCwgCi0gICAgODMsIDgwLCA4NSwgNzgsIDcxLCAyMTEsIDgzLCA4MCwgODIsIDc5LCA4NSwgODQsIDEyOCwgODMsIDgwLCA4MiwgNzMsIDc4LCAKLSAgICA3MSwgODMsIDEyOCwgODMsIDgwLCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODAsIDgyLCA2OSwgNjcsIDcyLCA3MSwgNjksIAotICAgIDgzLCA2NSwgNzgsIDE5OSwgODMsIDgwLCA3OSwgODUsIDg0LCA3MywgNzgsIDE5OSwgODMsIDgwLCA3OSwgODQsIDEyOCwgCi0gICAgODMsIDgwLCA3OSwgNzksIDc4LCAxMjgsIDgzLCA4MCwgNzYsIDczLCA4NCwgODQsIDczLCA3OCwgMTk5LCA4MywgODAsIDc2LCAKLSAgICA2NSwgODMsIDcyLCA3MywgNzgsIDE5OSwgODMsIDgwLCA3MywgODIsIDczLCA4NCwgODUsIDIxMSwgODMsIDgwLCA3MywgODIsIAotICAgIDczLCA4NCwgMTI4LCA4MywgODAsIDczLCA4MiwgNzMsIDIxMiwgODMsIDgwLCA3MywgODIsIDY1LCA3OCwgODQsIDEyOCwgCi0gICAgODMsIDgwLCA3MywgODIsIDY1LCA3NiwgMTI4LCA4MywgODAsIDczLCA4MiwgNjUsIDIwNCwgODMsIDgwLCA3MywgNjgsIDY5LCAKLSAgICA4MiwgMjE3LCA4MywgODAsIDczLCA2NywgNjksIDEyOCwgODMsIDgwLCA3MiwgNjksIDgyLCA3MywgNjcsIDY1LCAyMDQsIAorICAgIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDEyOCwgODQsIDY1LCA4MiwgNzEsIDY5LCA4NCwgMTI4LCA4NCwgNjUsIDgxLCAKKyAgICAxMjgsIDg0LCA2NSwgODAsIDY5LCA4MiwgMTI4LCA4NCwgNjUsIDgwLCAxOTcsIDg0LCA2NSwgODAsIDEyOCwgODQsIDY1LCAKKyAgICA3OSwgMTI4LCA4NCwgNjUsIDc4LCA3OCwgNjksIDE5NiwgODQsIDY1LCA3OCwgNzEsIDY5LCA4MiwgNzMsIDc4LCA2OSwgCisgICAgMTI4LCA4NCwgNjUsIDc4LCA3MSwgNjksIDc4LCA4NCwgMTI4LCA4NCwgNjUsIDc4LCA3MSwgNjksIDc4LCAyMTIsIDg0LCAKKyAgICA2NSwgNzgsIDE5OSwgODQsIDY1LCA3OCwgNjUsIDY2LCA2NSwgODQsIDE5MywgODQsIDY1LCA3OCwgMTI4LCA4NCwgNjUsIAorICAgIDc3LCA3MywgNzgsIDcxLCAxMjgsIDg0LCA2NSwgNzcsIDEyOCwgODQsIDY1LCA3NiwgNzYsIDEyOCwgODQsIDY1LCA3NiwgCisgICAgMjA0LCA4NCwgNjUsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDg0LCA2NSwgNzYsIDczLCA3OCwgMTk5LCA4NCwgNjUsIDc2LCAKKyAgICA2OSwgNzgsIDg0LCA4MywgMTI4LCA4NCwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgODQsIDY1LCA3NSwgODIsIDIwMSwgODQsIAorICAgIDY1LCA3NSwgNzIsIDY1LCA3NiwgNzYsIDg1LCA4MywgMTI4LCA4NCwgNjUsIDc1LCA2OSwgMTI4LCA4NCwgNjUsIDc1LCA1MiwgCisgICAgMTI4LCA4NCwgNjUsIDc1LCAxODAsIDg0LCA2NSwgNzUsIDEyOCwgODQsIDY1LCA3MywgODMsIDg5LCA3OSwgODUsIDEyOCwgCisgICAgODQsIDY1LCA3MywgNzYsIDc2LCA2OSwgODMsIDIxMSwgODQsIDY1LCA3MywgNzYsIDEyOCwgODQsIDY1LCA3MywgMjA0LCAKKyAgICA4NCwgNjUsIDcyLCAxMjgsIDg0LCA2NSwgMjAwLCA4NCwgNjUsIDcxLCA2NiwgNjUsIDc4LCA4NywgMTkzLCA4NCwgNjUsIAorICAgIDcxLCA2NSwgNzYsIDc5LCAxOTksIDg0LCA2NSwgNzEsIDEyOCwgODQsIDY1LCA2OSwgMjA2LCA4NCwgNjUsIDY3LCA3OSwgCisgICAgMTI4LCA4NCwgNjUsIDY3LCA3NSwgMTI4LCA4NCwgNjUsIDY3LCAyMDMsIDg0LCA2NSwgNjYsIDg1LCA3NiwgNjUsIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDg0LCA2NSwgNjYsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODQsIDY1LCA2NiwgODMsIAorICAgIDEyOCwgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDg0LCA2NSwgNjYsIDEyOCwgODQsIAorICAgIDY1LCAxOTQsIDg0LCA2NSwgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDg0LCA2NSwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgCisgICAgNjUsIDc3LCAxMjgsIDg0LCA2NSwgNjUsIDc2LCA4NSwgNzQsIDE5MywgODQsIDY1LCA2NSwgNzMsIDEyOCwgODQsIDY1LCAKKyAgICA2NSwgNzAsIDEyOCwgODQsIDY1LCA1MCwgMTI4LCA4NCwgNjUsIDQ1LCA4MiwgNzksIDc2LCAxMjgsIDg0LCA2NSwgNDUsIAorICAgIDUwLCAxMjgsIDg0LCA0OCwgNTEsIDU0LCAxMjgsIDg0LCA0OCwgNTEsIDUzLCAxMjgsIDg0LCA0OCwgNTEsIDUyLCAxMjgsIAorICAgIDg0LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA4NCwgNDgsIDUxLCA1MSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgCisgICAgODQsIDQ4LCA1MSwgNTAsIDEyOCwgODQsIDQ4LCA1MSwgNDksIDEyOCwgODQsIDQ4LCA1MSwgNDgsIDEyOCwgODQsIDQ4LCAKKyAgICA1MCwgNTcsIDEyOCwgODQsIDQ4LCA1MCwgNTYsIDEyOCwgODQsIDQ4LCA1MCwgNTUsIDEyOCwgODQsIDQ4LCA1MCwgNTQsIAorICAgIDEyOCwgODQsIDQ4LCA1MCwgNTMsIDEyOCwgODQsIDQ4LCA1MCwgNTIsIDEyOCwgODQsIDQ4LCA1MCwgNTEsIDEyOCwgODQsIAorICAgIDQ4LCA1MCwgNTAsIDEyOCwgODQsIDQ4LCA1MCwgNDksIDEyOCwgODQsIDQ4LCA1MCwgNDgsIDEyOCwgODQsIDQ4LCA0OSwgCisgICAgNTcsIDEyOCwgODQsIDQ4LCA0OSwgNTYsIDEyOCwgODQsIDQ4LCA0OSwgNTUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDY1LCAKKyAgICAxMjgsIDg0LCA0OCwgNDksIDU0LCAxMjgsIDg0LCA0OCwgNDksIDUzLCAxMjgsIDg0LCA0OCwgNDksIDUyLCAxMjgsIDg0LCAKKyAgICA0OCwgNDksIDUxLCAxMjgsIDg0LCA0OCwgNDksIDUwLCAxMjgsIDg0LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NCwgNDgsIAorICAgIDQ5LCA0OSwgMTI4LCA4NCwgNDgsIDQ5LCA0OCwgMTI4LCA4NCwgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODQsIDQ4LCA0OCwgCisgICAgNTcsIDEyOCwgODQsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU2LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCAKKyAgICA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NCwgMTI4LCA4NCwgNDgsIDQ4LCA1MywgMTI4LCAKKyAgICA4NCwgNDgsIDQ4LCA1MiwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDEyOCwgODQsIAorICAgIDQ4LCA0OCwgNTAsIDEyOCwgODQsIDQ4LCA0OCwgNDksIDEyOCwgODQsIDQ1LCA4MywgNzIsIDczLCA4MiwgODQsIDEyOCwgCisgICAgODMsIDkwLCA5MCwgMTI4LCA4MywgOTAsIDg3LCA3MSwgMTI4LCA4MywgOTAsIDg3LCA2NSwgMTI4LCA4MywgOTAsIDg1LCAKKyAgICAxMjgsIDgzLCA5MCwgNzksIDEyOCwgODMsIDkwLCA3MywgMTI4LCA4MywgOTAsIDY5LCA2OSwgMTI4LCA4MywgOTAsIDY5LCAKKyAgICAxMjgsIDgzLCA5MCwgNjUsIDY1LCAxMjgsIDgzLCA5MCwgNjUsIDEyOCwgODMsIDkwLCAxMjgsIDgzLCA4OSwgODgsIDEyOCwgCisgICAgODMsIDg5LCA4NCwgMTI4LCA4MywgODksIDgzLCA4NCwgNjksIDIwNSwgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDg5LCAKKyAgICA4MiwgNzcsIDY1LCA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MywgODksIDgyLCA3NywgNjUsIDEyOCwgODMsIDg5LCA4MiwgNzMsIAorICAgIDc4LCA3MSwgNjksIDEyOCwgODMsIDg5LCA4MiwgNzMsIDY1LCAxOTUsIDgzLCA4OSwgODIsIDEyOCwgODMsIDg5LCA4MCwgCisgICAgMTI4LCA4MywgODksIDc5LCA4NSwgODcsIDY1LCAxMjgsIDgzLCA4OSwgNzgsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDgzLCAKKyAgICA4OSwgNzgsIDY4LCA2OSwgODMsIDc3LCA3OSwgMjExLCA4MywgODksIDc4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgCisgICAgMjExLCA4MywgODksIDc4LCA2NSwgNzEsIDc5LCA3MSwgODUsIDY5LCAxMjgsIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIAorICAgIDE5MywgODMsIDg5LCA3OCwgNjUsIDcwLCA3MywgMTI4LCA4MywgODksIDc4LCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgCisgICAgODQsIDgyLCA4OSwgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCA4MiwgNzMsIDE5NSwgODMsIDg5LCA3NywgNjYsIDc5LCAKKyAgICA3NiwgODMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAorICAgIDQ1LCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCisgICAgNDUsIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKKyAgICA3NiwgNDUsIDUzLCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIAorICAgIDY2LCA3OSwgNzYsIDQ1LCA1MywgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgCisgICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NywgMTI4LCAKKyAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgCisgICAgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKKyAgICA0NSwgNTIsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIAorICAgIDc5LCA3NiwgNDUsIDUyLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDEyOCwgODMsIDg5LCA3NywgCisgICAgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU2LCAxMjgsIDgzLCAKKyAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NCwgCisgICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA1MSwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAorICAgIDQ1LCA1MCwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgCisgICAgNzksIDc2LCA0NSwgNTAsIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTMsIDEyOCwgODMsIDg5LCAKKyAgICA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUxLCAxMjgsIAorICAgIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCAKKyAgICA0OSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAorICAgIDQ1LCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCisgICAgNzYsIDQ1LCA0OSwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NSwgMTI4LCA4MywgODksIDc3LCAKKyAgICA2NiwgNzksIDc2LCA0NSwgNDksIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIAorICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUxLCAKKyAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAorICAgIDQ5LCA0OSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCisgICAgNzYsIDQ1LCA0OSwgMTI4LCA4MywgODksIDc2LCA3OSwgODQsIDIwMSwgODMsIDg5LCAxMjgsIDgzLCA4NywgOTAsIDEyOCwgCisgICAgODMsIDg3LCA4NSwgNzgsIDE5OSwgODMsIDg3LCA3OSwgODIsIDY4LCA4MywgMTI4LCA4MywgODcsIDc5LCA4MiwgNjgsIAorICAgIDEyOCwgODMsIDg3LCA3OSwgNzksIDEyOCwgODMsIDg3LCA3OSwgMTI4LCA4MywgODcsIDczLCA4MiwgMjA0LCA4MywgODcsIAorICAgIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA3MywgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg3LCA3MywgCisgICAgNzMsIDEyOCwgODMsIDg3LCA3MywgMTI4LCA4MywgODcsIDcxLCAxMjgsIDgzLCA4NywgNjksIDY5LCA4NCwgMTI4LCA4MywgCisgICAgODcsIDY5LCA2OSwgMjEyLCA4MywgODcsIDY5LCA2NSwgODQsIDEyOCwgODMsIDg3LCA2OSwgNjUsIDIxMiwgODMsIDg3LCAKKyAgICA2NSwgODMsIDIwMCwgODMsIDg3LCA2NSwgODAsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNjUsIDY1LCAxMjgsIAorICAgIDgzLCA4NywgMTI4LCA4MywgODYsIDY1LCA4MywgODQsIDIwMSwgODMsIDg2LCA2NSwgODIsIDczLCA4NCwgNjUsIDEyOCwgCisgICAgODMsIDg2LCA2NSwgODIsIDczLCA4NCwgMTkzLCA4MywgODUsIDg4LCAxMjgsIDgzLCA4NSwgODUsIDEyOCwgODMsIDg1LCAKKyAgICA4NCwgODIsIDE5MywgODMsIDg1LCA4NCwgMTI4LCA4MywgODUsIDgzLCA4MCwgNjksIDc4LCA4MywgNzMsIDc5LCAyMDYsIAorICAgIDgzLCA4NSwgODMsIDcyLCA3MywgMTI4LCA4MywgODUsIDgyLCA4OSwgNjUsIDEyOCwgODMsIDg1LCA4MiwgODgsIDEyOCwgCisgICAgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDgzLCAKKyAgICA4NSwgODIsIDcwLCA2OSwgODIsIDEyOCwgODMsIDg1LCA4MiwgNzAsIDY1LCA2NywgMTk3LCA4MywgODUsIDgyLCA2OSwgCisgICAgMTI4LCA4MywgODUsIDgyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCA4NSwgODIsIDU3LCAxMjgsIDgzLCA4NSwgODIsIDEyOCwgCisgICAgODMsIDg1LCAyMTAsIDgzLCA4NSwgODAsIDgyLCA2NSwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgODAsIDY5LCAKKyAgICA4MiwgODYsIDczLCA4MywgNjksIDEyOCwgODMsIDg1LCA4MCwgNjksIDgyLCA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgODAsIAorICAgIDY5LCA4MiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgODAsIDY5LCA4MiwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgCisgICAgODAsIDY5LCA4MiwgNzMsIDc3LCA4MCwgNzksIDgzLCA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgODIsIDcwLCA3MywgODgsIAorICAgIDY5LCAxOTYsIDgzLCA4NSwgODAsIDY5LCAyMTAsIDgzLCA4NSwgODAsIDEyOCwgODMsIDg1LCA3OSwgODgsIDEyOCwgODMsIAorICAgIDg1LCA3OSwgODAsIDEyOCwgODMsIDg1LCA3OSwgMTI4LCA4MywgODUsIDc4LCA4MywgNjksIDIxMiwgODMsIDg1LCA3OCwgCisgICAgODIsIDczLCA4MywgNjksIDEyOCwgODMsIDg1LCA3OCwgODIsIDczLCA4MywgMTk3LCA4MywgODUsIDc4LCA3MSwgNzYsIDY1LCAKKyAgICA4MywgODMsIDY5LCA4MywgMTI4LCA4MywgODUsIDc4LCA3MSwgMTI4LCA4MywgODUsIDc4LCA3MCwgNzYsIDc5LCA4NywgNjksIAorICAgIDgyLCAxMjgsIDgzLCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA4MywgODUsIDc4LCAxMjgsIDgzLCA4NSwgCisgICAgMjA2LCA4MywgODUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgODMsIDg1LCA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA4NSwgNzcsIDY1LCA4MywgNzIsIDEyOCwgCisgICAgODMsIDg1LCA3NywgMTI4LCA4MywgODUsIDc2LCA3MCwgODUsIDgyLCAxMjgsIDgzLCA4NSwgNzUsIDg1LCA3OCwgMTI4LCAKKyAgICA4MywgODUsIDc1LCA4NSwgMjA2LCA4MywgODUsIDc1LCA4NSwgMTI4LCA4MywgODUsIDc1LCAyMTMsIDgzLCA4NSwgNzMsIAorICAgIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4MywgODUsIDczLCA4NCwgMTI4LCA4MywgODUsIDczLCAyMTIsIDgzLCA4NSwgCisgICAgNzIsIDg1LCA4MiwgMTI4LCA4MywgODUsIDY5LCAxMjgsIDgzLCA4NSwgNjgsIDUwLCAxMjgsIDgzLCA4NSwgNjgsIDEyOCwgCisgICAgODMsIDg1LCA2NywgNzUsIDczLCA3OCwgMTk5LCA4MywgODUsIDY3LCA3NSwgNjksIDY4LCAxMjgsIDgzLCA4NSwgNjcsIAorICAgIDIwMywgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDgzLCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCAKKyAgICAyMTEsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDE5NiwgODMsIAorICAgIDg1LCA2NiwgODUsIDc4LCA3MywgODQsIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIAorICAgIDg0LCA4NSwgODQsIDE5NywgODMsIDg1LCA2NiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDY2LCA4MywgNjksIDIxMiwgCisgICAgODMsIDg1LCA2NiwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgNjYsIDgwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIAorICAgIDgzLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgCisgICAgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgNDUsIDUxLCAxMjgsIDgzLCAKKyAgICA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDQ1LCA1MCwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgCisgICAgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgMTk3LCA4MywgODUsIDY2LCA3NCwgNzksIDczLCAKKyAgICA3OCwgNjksIDE5NiwgODMsIDg1LCA2NiwgNzQsIDY5LCA2NywgODQsIDEyOCwgODMsIDg1LCA2NiwgNzMsIDg0LCA3OSwgCisgICAgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgODAsIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIAorICAgIDIwOCwgODMsIDg1LCA2NiwgMTI4LCA4MywgODUsIDY1LCA3NywgMTI4LCA4MywgODUsIDY1LCA2OSwgODQsIDEyOCwgODMsIAorICAgIDg1LCA2NSwgNjksIDc4LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA4NSwgNjUsIDY2LCAxMjgsIDgzLCA4NSwgCisgICAgNjUsIDEyOCwgODMsIDIxMywgODMsIDg0LCA4OCwgMTI4LCA4MywgODQsIDg3LCA2NSwgMTI4LCA4MywgODQsIDg1LCA2OCwgCisgICAgODksIDEyOCwgODMsIDg0LCA4NSwgNjgsIDczLCAyMDcsIDgzLCA4NCwgODUsIDY3LCA3NSwgNDUsIDc5LCA4NSwgMjEyLCAKKyAgICA4MywgODQsIDgzLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3OCwgMTk5LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA4MywgCisgICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAyMTEsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NywgMTI4LCAKKyAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTYsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU1LCAxMjgsIAorICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTMsIDEyOCwgCisgICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUyLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MSwgMTI4LCAKKyAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCA0OSwgCisgICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCAKKyAgICA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDE5NywgODMsIDg0LCA4MiwgNzMsIDgwLCA2OSwgMTI4LCA4MywgODQsIAorICAgIDgyLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgODQsIDgyLCA3MywgNzUsIDY5LCA4NCwgCisgICAgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA4MywgODQsIDgyLCA3MywgNzUsIDE5NywgODMsIDg0LCA4MiwgNzMsIDY4LCAKKyAgICA2OSwgMTI4LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCA3NiwgMjE3LCA4MywgODQsIDgyLCA2OSwgODQsIDY3LCA3MiwgNjksIAorICAgIDE5NiwgODMsIDg0LCA4MiwgNjksIDg0LCA2NywgNzIsIDEyOCwgODMsIDg0LCA4MiwgNjksIDgzLCAyMTEsIDgzLCA4NCwgCisgICAgODIsIDY5LCA3OCwgNzEsIDg0LCA3MiwgMTI4LCA4MywgODQsIDgyLCA2OSwgNjUsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg0LCAKKyAgICA4MiwgNjUsIDg3LCA2NiwgNjksIDgyLCA4MiwgODksIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgNzcsIDQ1LCA1MCwgCisgICAgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCA3NywgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCAyMDUsIDgzLCAKKyAgICA4NCwgODIsIDY1LCA4NCwgNzMsIDY1LCAyMDYsIDgzLCA4NCwgODIsIDY1LCA3MywgNzgsIDY5LCA4MiwgMTI4LCA4MywgODQsIAorICAgIDgyLCA2NSwgNzMsIDcxLCA3MiwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCAKKyAgICA4NCwgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgMjEyLCA4MywgODQsIDgyLCA2NSwgNzMsIDcwLCAxMjgsIAorICAgIDgzLCA4NCwgODIsIDY1LCA3MSwgNzEsIDczLCA4MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDg0LCA3OSwgODYsIDY5LCAKKyAgICAxMjgsIDgzLCA4NCwgNzksIDgyLCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODcsIDY1LCA4NCwgNjcsIDcyLCAxMjgsIAorICAgIDgzLCA4NCwgNzksIDgwLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDY1LCA3MSwgNjksIDEyOCwgCisgICAgODMsIDg0LCA3OSwgODAsIDEyOCwgODMsIDg0LCA3OSwgMjA4LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgODMsIDg0LCAKKyAgICA3OSwgNjcsIDc1LCAxMjgsIDgzLCA4NCwgNzksIDY3LCAyMDMsIDgzLCA4NCwgNzMsIDgyLCA4MiwgODUsIDIwOCwgODMsIAorICAgIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA4MywgODQsIDczLCA3NiwgMjA0LCA4MywgODQsIDczLCA3NiwgMTk3LCA4MywgCisgICAgODQsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCA4NCwgNzMsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA4NCwgNzMsIDY3LCAKKyAgICAyMDMsIDgzLCA4NCwgNjksIDgyLCA2OSwgNzksIDEyOCwgODMsIDg0LCA2OSwgODAsIDEyOCwgODMsIDg0LCA2OSwgNzgsIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAxOTUsIDgzLCA4NCwgNjksIDc3LCAxMjgsIDgzLCA4NCwgNjksIDY1LCA3NywgCisgICAgNzMsIDc4LCAxOTksIDgzLCA4NCwgNjksIDY1LCA3NywgMTI4LCA4MywgODQsIDY5LCA2NSwgMjA1LCA4MywgODQsIDY1LCAKKyAgICA4NiwgODIsIDc5LCA4NSwgMTI4LCA4MywgODQsIDY1LCA4NiwgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NiwgODIsIAorICAgIDc5LCAyMTEsIDgzLCA4NCwgNjUsIDg1LCA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA4NSwgMTk3LCA4MywgCisgICAgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODQsIDY1LCA4NCwgNjksIDgyLCA4MywgMTI4LCA4MywgODQsIDY1LCAKKyAgICA4NCwgNjksIDEyOCwgODMsIDg0LCA2NSwgODIsIDIxMiwgODMsIDg0LCA2NSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIAorICAgIDgyLCA4MiwgNjksIDE5NiwgODMsIDg0LCA2NSwgODIsIDc1LCAxMjgsIDgzLCA4NCwgNjUsIDgyLCAxMjgsIDgzLCA4NCwgCisgICAgNjUsIDIxMCwgODMsIDg0LCA2NSwgNzgsIDY4LCA4MywgODQsIDczLCA3NiwgNzYsIDEyOCwgODMsIDg0LCA2NSwgNzgsIDY4LCAKKyAgICA2NSwgODIsIDE5NiwgODMsIDg0LCA2NSwgNzgsIDY4LCAxMjgsIDgzLCA4NCwgNjUsIDc4LCAxMjgsIDgzLCA4NCwgNjUsIAorICAgIDc3LCA4MCwgNjksIDE5NiwgODMsIDg0LCA2NSwgNzYsIDc2LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDcwLCA3MCwgCisgICAgMTI4LCA4MywgODQsIDY1LCA3MCwgMTk4LCA4MywgODQsIDY1LCA2OCwgNzMsIDg1LCA3NywgMTI4LCA4MywgODQsIDY1LCAKKyAgICA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDczLCA4MywgODMsIDczLCA3NywgCisgICAgNzksIDEyOCwgODMsIDg0LCA1MCwgMTI4LCA4MywgODMsIDg5LCA4OCwgMTI4LCA4MywgODMsIDg5LCA4NCwgMTI4LCA4MywgCisgICAgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDgzLCA4OSwgODIsIDEyOCwgODMsIDgzLCA4OSwgODAsIDEyOCwgODMsIDgzLCAKKyAgICA4OSwgMTI4LCA4MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODMsIDg1LCA4NSwgMTI4LCA4MywgODMsIDg1LCA4NCwgMTI4LCAKKyAgICA4MywgODMsIDg1LCA4MCwgMTI4LCA4MywgODMsIDc5LCA4OCwgMTI4LCA4MywgODMsIDc5LCA4NCwgMTI4LCA4MywgODMsIAorICAgIDc5LCA4MCwgMTI4LCA4MywgODMsIDc5LCA3OSwgMTI4LCA4MywgODMsIDc5LCAxMjgsIDgzLCA4MywgNzMsIDg4LCAxMjgsIAorICAgIDgzLCA4MywgNzMsIDg0LCAxMjgsIDgzLCA4MywgNzMsIDgwLCAxMjgsIDgzLCA4MywgNzMsIDczLCAxMjgsIDgzLCA4MywgCisgICAgNzMsIDY5LCA4OCwgMTI4LCA4MywgODMsIDczLCA2OSwgODAsIDEyOCwgODMsIDgzLCA3MywgNjksIDEyOCwgODMsIDgzLCAKKyAgICA3MywgMTI4LCA4MywgODMsIDcyLCA3MywgNzgsIDEyOCwgODMsIDgzLCA3MiwgNjksIDEyOCwgODMsIDgzLCA2OSwgODgsIAorICAgIDEyOCwgODMsIDgzLCA2OSwgODAsIDEyOCwgODMsIDgzLCA2OSwgNjksIDEyOCwgODMsIDgzLCA2NSwgODgsIDEyOCwgODMsIAorICAgIDgzLCA2NSwgODUsIDEyOCwgODMsIDgzLCA2NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgCisgICAgNzgsIDcxLCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIAorICAgIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCAKKyAgICA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MiwgNzMsIDY5LCA4NSwgCisgICAgODQsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIAorICAgIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgCisgICAgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIAorICAgIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCA3MywgNjksIDg1LCAKKyAgICA3NiwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCA2OSwgCisgICAgODUsIDc2LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCAKKyAgICA3MSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIAorICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDczLCAKKyAgICA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIAorICAgIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY1LCA4MiwgNjUsIDY5LCA2NSwgCisgICAgMTI4LCA4MywgODMsIDY1LCA3MywgMTI4LCA4MywgODMsIDY1LCA2NSwgMTI4LCA4MywgODMsIDUxLCAxMjgsIDgzLCA4MywgCisgICAgNTAsIDEyOCwgODMsIDgyLCAxMjgsIDgzLCA4MSwgODUsIDczLCA4MywgMjAwLCA4MywgODEsIDg1LCA3MywgODIsIDgyLCAKKyAgICA2OSwgMjA0LCA4MywgODEsIDg1LCA3MywgNzEsIDcxLCA3NiwgMTk3LCA4MywgODEsIDg1LCA2OSwgNjksIDkwLCA2OSwgNjgsIAorICAgIDEyOCwgODMsIDgxLCA4NSwgNjksIDY5LCA5MCwgMTk3LCA4MywgODEsIDg1LCA2NSwgMjEyLCA4MywgODEsIDg1LCA2NSwgCisgICAgODIsIDY5LCA4MywgMTI4LCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCA2OCwgMTI4LCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCAKKyAgICAxMjgsIDgzLCA4MCwgODksIDEyOCwgODMsIDgwLCA4NywgNjUsIDEyOCwgODMsIDgwLCA4NSwgNzgsIDcxLCAyMTEsIDgzLCAKKyAgICA4MCwgODIsIDc5LCA4NSwgODQsIDEyOCwgODMsIDgwLCA4MiwgNzMsIDc4LCA3MSwgODMsIDEyOCwgODMsIDgwLCA4MiwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA4MywgODAsIDgyLCA2OSwgNjcsIDcyLCA3MSwgNjksIDgzLCA2NSwgNzgsIDE5OSwgODMsIDgwLCA4MiwgCisgICAgNjksIDY1LCA2OCwgMTI4LCA4MywgODAsIDgyLCA2OSwgNjUsIDE5NiwgODMsIDgwLCA3OSwgODUsIDg0LCA3MywgNzgsIAorICAgIDE5OSwgODMsIDgwLCA3OSwgODQsIDEyOCwgODMsIDgwLCA3OSwgODIsIDg0LCAyMTEsIDgzLCA4MCwgNzksIDc5LCA3OCwgCisgICAgMTI4LCA4MywgODAsIDc2LCA3MywgODQsIDg0LCA3MywgNzgsIDE5OSwgODMsIDgwLCA3NiwgNzMsIDg0LCAxMjgsIDgzLCAKKyAgICA4MCwgNzYsIDczLCAyMTIsIDgzLCA4MCwgNzYsIDY1LCA4OSwgNjksIDY4LCAxMjgsIDgzLCA4MCwgNzYsIDY1LCA4MywgNzIsIAorICAgIDczLCA3OCwgMTk5LCA4MywgODAsIDczLCA4MiwgNzMsIDg0LCA4NSwgMjExLCA4MywgODAsIDczLCA4MiwgNzMsIDg0LCAKKyAgICAxMjgsIDgzLCA4MCwgNzMsIDgyLCA3MywgMjEyLCA4MywgODAsIDczLCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA4MywgODAsIAorICAgIDczLCA4MiwgNjUsIDc2LCAxMjgsIDgzLCA4MCwgNzMsIDgyLCA2NSwgMjA0LCA4MywgODAsIDczLCA3OCwgNjksIDEyOCwgCisgICAgODMsIDgwLCA3MywgNjgsIDY5LCA4MiwgMjE3LCA4MywgODAsIDczLCA2OCwgNjksIDgyLCAxMjgsIDgzLCA4MCwgNzMsIDY4LCAKKyAgICA2OSwgMjEwLCA4MywgODAsIDczLCA2NywgNjksIDEyOCwgODMsIDgwLCA3MiwgNjksIDgyLCA3MywgNjcsIDY1LCAyMDQsIAogICAgIDgzLCA4MCwgNjksIDgzLCA3NywgNzMsIDc2LCAyMDcsIDgzLCA4MCwgNjksIDY5LCA2OCwgNjYsIDc5LCA2NSwgODQsIDEyOCwgCiAgICAgODMsIDgwLCA2OSwgNjksIDY3LCA3MiwgMTI4LCA4MywgODAsIDY5LCA2OSwgNjcsIDIwMCwgODMsIDgwLCA2OSwgNjcsIDczLCAKLSAgICA2NSwgNzYsIDEyOCwgODMsIDgwLCA2OSwgNjUsIDgyLCAxMjgsIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDgyLCAxMjgsIAotICAgIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDIxMCwgODMsIDgwLCA2OSwgNjUsIDc1LCA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCAKLSAgICA3MywgMjA0LCA4MywgODAsIDY1LCA4NCwgNzIsIDczLCAxMjgsIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDczLCA3OCwgCi0gICAgMTk5LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCA2OSwgODMsIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNjksIDgyLCAKLSAgICAxMjgsIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDY5LCAxMjgsIDgzLCA4MCwgNjUsIDcxLCA3MiwgNjksIDg0LCA4NCwgNzMsIAotICAgIDEyOCwgODMsIDgwLCA2NSwgNjgsIDY5LCA4MywgMTI4LCA4MywgODAsIDY1LCA2OCwgMTk3LCA4MywgODAsIDY1LCA2NywgCi0gICAgNzMsIDc4LCAxOTksIDgzLCA4MCwgNjUsIDY3LCAxOTcsIDgzLCA4MCwgNjUsIDEyOCwgODMsIDc5LCA4OSwgMTI4LCA4MywgCi0gICAgNzksIDg3LCA3MywgNzYsIDIwNywgODMsIDc5LCA4NywgMTI4LCA4MywgNzksIDg1LCA4NCwgNzIsIDY5LCA4MiwgMjA2LCAKLSAgICA4MywgNzksIDg1LCA4NCwgNzIsIDQ1LCA4MywgNzYsIDY1LCA4NiwgNjksIDIxNywgODMsIDc5LCA4NSwgODQsIDIwMCwgODMsIAotICAgIDc5LCA4NSwgODIsIDY3LCA2OSwgMTI4LCA4MywgNzksIDg1LCA3OCwgNjgsIDEyOCwgODMsIDc5LCA4NSwgNzgsIDE5NiwgCi0gICAgODMsIDc5LCA4NSwgNzgsIDY1LCA4MCwgMTI4LCA4MywgNzksIDg1LCAxMjgsIDgzLCA3OSwgODMsIDEyOCwgODMsIDc5LCAKLSAgICA4MiwgMTkzLCA4MywgNzksIDgxLCAxMjgsIDgzLCA3OSwgNzksIDIwNiwgODMsIDc5LCA3OCwgNzQsIDY1LCA3NywgMTI4LCAKLSAgICA4MywgNzksIDc4LCA3MSwgMTI4LCA4MywgNzksIDc4LCAxMjgsIDgzLCA3OSwgNzcsIDgwLCA2OSwgNzgsIDE5OSwgODMsIAotICAgIDc5LCA3NywgMTI4LCA4MywgNzksIDc2LCA3MywgNjgsIDg1LCA4MywgMTI4LCA4MywgNzksIDc2LCA3MywgNjgsIDg1LCAKLSAgICAyMTEsIDgzLCA3OSwgNzIsIDEyOCwgODMsIDc5LCA3MSwgNjgsIDczLCA2NSwgMjA2LCA4MywgNzksIDcwLCA4NCwgODcsIAotICAgIDY1LCA4MiwgNjksIDQ1LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgMjA2LCA4MywgNzksIDcwLCA4NCwgNzgsIDY5LCAKLSAgICA4MywgODMsIDEyOCwgODMsIDc5LCA3MCwgMjEyLCA4MywgNzksIDE5OCwgODMsIDc5LCA2NywgNzMsIDY5LCA4NCwgODksIAotICAgIDEyOCwgODMsIDc5LCA2NywgNjcsIDY5LCAyMTAsIDgzLCA3OSwgNjUsIDgwLCAxMjgsIDgzLCA3OSwgNjUsIDEyOCwgODMsIAotICAgIDIwNywgODMsIDc4LCA3OSwgODcsIDc3LCA2NSwgNzgsIDEyOCwgODMsIDc4LCA3OSwgODcsIDc3LCA2NSwgMjA2LCA4MywgCi0gICAgNzgsIDc5LCA4NywgNzAsIDc2LCA2NSwgNzUsIDY5LCAxMjgsIDgzLCA3OCwgNzksIDg3LCA2NiwgNzksIDY1LCA4MiwgNjgsIAotICAgIDY5LCA4MiwgMTI4LCA4MywgNzgsIDc5LCA4NywgMTI4LCA4MywgNzgsIDc5LCA4NSwgODQsIDEyOCwgODMsIDc4LCA3OSwgCi0gICAgODUsIDIxMiwgODMsIDc4LCA2NSwgMjA4LCA4MywgNzgsIDY1LCA3NSwgNjksIDEyOCwgODMsIDc4LCA2NSwgNzUsIDE5NywgCi0gICAgODMsIDc4LCA2NSwgNzMsIDc2LCAxMjgsIDgzLCA3OCwgMTkzLCA4MywgNzcsIDc5LCA3NSwgNzMsIDc4LCAxOTksIDgzLCAKLSAgICA3NywgNzMsIDgyLCA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDc2LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgNzYsIAotICAgIDY5LCAxMjgsIDgzLCA3NywgNjksIDY1LCA4MiwgMTI4LCA4MywgNzcsIDY1LCA4MywgMjAwLCA4MywgNzcsIDY1LCA3NiwgCi0gICAgNzYsIDY5LCAyMTAsIDgzLCA3NywgNjUsIDc2LCA3NiwgMTI4LCA4MywgNzYsIDg1LCA4MiwgMTI4LCA4MywgNzYsIDc5LCAKLSAgICA4NywgNzYsIDg5LCAxMjgsIDgzLCA3NiwgNzksIDIxNSwgODMsIDc2LCA3OSwgODYsIDc5LCAxMjgsIDgzLCA3NiwgNzksIAotICAgIDIxMiwgODMsIDc2LCA3OSwgODAsIDczLCA3OCwgMTk5LCA4MywgNzYsIDc5LCA4MCwgNjksIDEyOCwgODMsIDc2LCA3MywgCi0gICAgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIDY3LCA2OSwgMTI4LCAKLSAgICA4MywgNzYsIDczLCA2NywgMTk3LCA4MywgNzYsIDY5LCA2OSwgODAsIDIxNywgODMsIDc2LCA2OSwgNjksIDgwLCA3MywgNzgsIAorICAgIDY1LCA3NiwgMTI4LCA4MywgODAsIDY5LCA2NSwgODIsIDEyOCwgODMsIDgwLCA2OSwgNjUsIDc1LCA3MywgNzgsIDE5OSwgCisgICAgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgMjEwLCA4MywgODAsIDY5LCAKKyAgICA2NSwgNzUsIDQ1LCA3OCwgNzksIDQ1LCA2OSwgODYsIDczLCAyMDQsIDgzLCA4MCwgNjUsIDg0LCA3MiwgNzMsIDEyOCwgODMsIAorICAgIDgwLCA2NSwgODIsIDc1LCA3NiwgNzMsIDc4LCAxOTksIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDY5LCA4MywgMTI4LCA4MywgCisgICAgODAsIDY1LCA4MiwgNzUsIDc2LCA2OSwgODIsIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNjksIDEyOCwgODMsIDgwLCAKKyAgICA2NSwgNzEsIDcyLCA2OSwgODQsIDg0LCA3MywgMTI4LCA4MywgODAsIDY1LCA2OCwgNjksIDgzLCAxMjgsIDgzLCA4MCwgNjUsIAorICAgIDY4LCAxOTcsIDgzLCA4MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgODMsIDgwLCA2NSwgNjcsIDE5NywgODMsIDgwLCA2NSwgCisgICAgMTI4LCA4MywgNzksIDg5LCAxMjgsIDgzLCA3OSwgODcsIDczLCA3NiwgMjA3LCA4MywgNzksIDg3LCAxMjgsIDgzLCA3OSwgCisgICAgODUsIDg0LCA3MiwgNjksIDgyLCAyMDYsIDgzLCA3OSwgODUsIDg0LCA3MiwgNDUsIDgzLCA3NiwgNjUsIDg2LCA2OSwgMjE3LCAKKyAgICA4MywgNzksIDg1LCA4NCwgMjAwLCA4MywgNzksIDg1LCA4MiwgNjcsIDY5LCAxMjgsIDgzLCA3OSwgODUsIDc4LCA2OCwgCisgICAgMTI4LCA4MywgNzksIDg1LCA3OCwgMTk2LCA4MywgNzksIDg1LCA3OCwgNjUsIDgwLCAxMjgsIDgzLCA3OSwgODUsIDEyOCwgCisgICAgODMsIDc5LCA4MywgMTI4LCA4MywgNzksIDgyLCAxOTMsIDgzLCA3OSwgODEsIDEyOCwgODMsIDc5LCA3OSwgMjA2LCA4MywgCisgICAgNzksIDc4LCA3NCwgNjUsIDc3LCAxMjgsIDgzLCA3OSwgNzgsIDcxLCAxMjgsIDgzLCA3OSwgNzgsIDEyOCwgODMsIDc5LCAKKyAgICA3NywgODAsIDY5LCA3OCwgMTk5LCA4MywgNzksIDc3LCAxMjgsIDgzLCA3OSwgNzYsIDczLCA2OCwgODUsIDgzLCAxMjgsIAorICAgIDgzLCA3OSwgNzYsIDczLCA2OCwgODUsIDIxMSwgODMsIDc5LCA3NiwgNzMsIDE5NiwgODMsIDc5LCA3MiwgMTI4LCA4MywgCisgICAgNzksIDcxLCA2OCwgNzMsIDY1LCAyMDYsIDgzLCA3OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OSwgNDUsIDcwLCA4NSwgNzgsIAorICAgIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA3OSwgNzAsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgNzksIDcwLCAKKyAgICAyMTIsIDgzLCA3OSwgMTk4LCA4MywgNzksIDY3LCA3MywgNjksIDg0LCA4OSwgMTI4LCA4MywgNzksIDY3LCA2NywgNjksIAorICAgIDIxMCwgODMsIDc5LCA2NSwgODAsIDEyOCwgODMsIDc5LCA2NSwgMTI4LCA4MywgMjA3LCA4MywgNzgsIDc5LCA4NywgNzcsIAorICAgIDY1LCA3OCwgMTI4LCA4MywgNzgsIDc5LCA4NywgNzcsIDY1LCAyMDYsIDgzLCA3OCwgNzksIDg3LCA3MCwgNzYsIDY1LCA3NSwgCisgICAgNjksIDEyOCwgODMsIDc4LCA3OSwgODcsIDY2LCA3OSwgNjUsIDgyLCA2OCwgNjksIDgyLCAxMjgsIDgzLCA3OCwgNzksIDg3LCAKKyAgICAxMjgsIDgzLCA3OCwgNzksIDIxNSwgODMsIDc4LCA3OSwgODUsIDg0LCAxMjgsIDgzLCA3OCwgNzksIDg1LCAyMTIsIDgzLCAKKyAgICA3OCwgNjUsIDIwOCwgODMsIDc4LCA2NSwgNzUsIDY5LCAxMjgsIDgzLCA3OCwgNjUsIDc1LCAxOTcsIDgzLCA3OCwgNjUsIAorICAgIDczLCA3NiwgMTI4LCA4MywgNzgsIDE5MywgODMsIDc3LCA3OSwgNzUsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA4MiwgCisgICAgNzUsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA3NiwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDc2LCA2OSwgMTI4LCAKKyAgICA4MywgNzcsIDczLCA3NiwgMTk3LCA4MywgNzcsIDY5LCA2NSwgODIsIDEyOCwgODMsIDc3LCA2NSwgODMsIDIwMCwgODMsIAorICAgIDc3LCA2NSwgNzYsIDc2LCA2OSwgMjEwLCA4MywgNzcsIDY1LCA3NiwgNzYsIDEyOCwgODMsIDc2LCA4NSwgODIsIDEyOCwgCisgICAgODMsIDc2LCA3OSwgODcsIDc2LCA4OSwgMTI4LCA4MywgNzYsIDc5LCA4NywgMTI4LCA4MywgNzYsIDc5LCAyMTUsIDgzLCAKKyAgICA3NiwgNzksIDg2LCA3OSwgMTI4LCA4MywgNzYsIDc5LCAyMTIsIDgzLCA3NiwgNzksIDgwLCA3MywgNzgsIDE5OSwgODMsIAorICAgIDc2LCA3OSwgODAsIDY5LCAxMjgsIDgzLCA3NiwgNzksIDY1LCAyMDYsIDgzLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgCisgICAgNzYsIDczLCA3MSwgNzIsIDg0LCA3NiwgMjE3LCA4MywgNzYsIDczLCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzYsIDczLCAKKyAgICA2OCwgNjksIDgyLCAxMjgsIDgzLCA3NiwgNzMsIDY3LCA2OSwgMTI4LCA4MywgNzYsIDczLCA2NywgMTk3LCA4MywgNzYsIAorICAgIDY5LCA4NSwgODQsIDIwMCwgODMsIDc2LCA2OSwgNjksIDgwLCAyMTcsIDgzLCA3NiwgNjksIDY5LCA4MCwgNzMsIDc4LCAKICAgICAxOTksIDgzLCA3NiwgNjUsIDg2LCA3OSwgNzgsIDczLCAxOTUsIDgzLCA3NiwgNjUsIDg2LCA2OSwgMTI4LCA4MywgNzYsIAogICAgIDY1LCA4MywgNzIsIDEyOCwgODMsIDc2LCA2NSwgODMsIDIwMCwgODMsIDc2LCA2NSwgNzgsIDg0LCA2OSwgMTk2LCA4MywgCiAgICAgNzUsIDg3LCA2NSwgMTI4LCA4MywgNzUsIDg3LCAxMjgsIDgzLCA3NSwgODUsIDc2LCA3NiwgMTI4LCA4MywgNzUsIDg1LCAKICAgICA3NiwgMjA0LCA4MywgNzUsIDc2LCA3MywgODIsIDc5LCAyMDYsIDgzLCA3NSwgNzMsIDc4LCAxMjgsIDgzLCA3NSwgNzMsIAogICAgIDY5LCA4MiwgMTI4LCA4MywgNzUsIDIwMSwgODMsIDc1LCA2OSwgODcsIDY5LCAxOTYsIDgzLCA3NSwgNjUsIDg0LCA2OSwgCi0gICAgMTI4LCA4MywgNzUsIDEyOCwgODMsIDc0LCA2OSwgMTI4LCA4MywgNzMsIDg4LCA4NCwgODksIDQ1LCA3MCwgNzksIDg1LCAKLSAgICA4MiwgODQsIDIwMCwgODMsIDczLCA4OCwgODQsIDg5LCAxMjgsIDgzLCA3MywgODgsIDg0LCAyMTcsIDgzLCA3MywgODgsIAotICAgIDg0LCA3MiwgODMsIDEyOCwgODMsIDczLCA4OCwgODQsIDcyLCAyMTEsIDgzLCA3MywgODgsIDg0LCA3MiwgMTI4LCA4MywgCi0gICAgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIAotICAgIDcyLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgMjAwLCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgCi0gICAgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCAyMDYsIDgzLCA3MywgODgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAKLSAgICAxMjgsIDgzLCA3MywgODgsIDQ1LCA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgODMsIDczLCA4OCwgNDUsIDgwLCA2OSwgODIsIAotICAgIDQ1LCA2OSwgMjA1LCA4MywgNzMsIDg4LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIDIxNiwgODMsIDczLCA4NCwgCi0gICAgNjksIDEyOCwgODMsIDczLCA4MywgNjUsIDEyOCwgODMsIDczLCA4MiwgNzMsIDc4LCA3MSwgODUsIDEyOCwgODMsIDczLCAKLSAgICA3OSwgODMsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgzLCA4MywgCi0gICAgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKLSAgICAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIAotICAgIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc4LCA3MywgNjksIDg1LCAKLSAgICA3OCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAotICAgIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCAKLSAgICA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3MywgNjksIDg1LCA3OCwgCi0gICAgNzEsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCAKLSAgICA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgCi0gICAgMTI4LCA4MywgNzMsIDc5LCAyMTEsIDgzLCA3MywgNzgsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3MywgNzgsIDcxLCAKLSAgICA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MSwgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCA0NSwgCi0gICAgODMsIDcyLCA3MywgNzAsIDg0LCA0NSwgNTAsIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDc2LCA3MywgNzgsIAotICAgIDE5NywgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIDE5NywgODMsIDczLCA3OCwgCi0gICAgNzEsIDY1LCA2NSwgODQsIDEyOCwgODMsIDczLCA3OCwgMTk3LCA4MywgNzMsIDc4LCA2OCwgNzIsIDIwMSwgODMsIDczLCAKLSAgICAyMDYsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgODMsIDczLCA3NywgNzMsIDc2LCA2NSwgODIsIAotICAgIDEyOCwgODMsIDczLCA3NywgNzMsIDc2LCA2NSwgMjEwLCA4MywgNzMsIDc3LCA2NSwgNzgsIDgzLCA3MywgMjExLCA4MywgCi0gICAgNzMsIDc3LCA2NSwgNzYsIDg1LCA3OCwgNzEsIDg1LCAyMDYsIDgzLCA3MywgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzYsIDg2LCAKLSAgICA2OSwgODIsIDEyOCwgODMsIDczLCA3NiwgNzUsIDEyOCwgODMsIDczLCA3NiwgNzMsIDgxLCA4NSwgMTkzLCA4MywgNzMsIAotICAgIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCAKLSAgICAxOTcsIDgzLCA3MywgNzYsIDY1LCA1MSwgMTI4LCA4MywgNzMsIDc1LCA3MywgMTI4LCA4MywgNzMsIDc1LCA1MCwgMTI4LCAKLSAgICA4MywgNzMsIDc1LCAxNzgsIDgzLCA3MywgNzEsIDc4LCA4MywgMTI4LCA4MywgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIAotICAgIDczLCA3MSwgNzcsIDE5MywgODMsIDczLCA3MSwgNjksIDIwNCwgODMsIDczLCA3MSwgNTIsIDEyOCwgODMsIDczLCA3MSwgCi0gICAgMTgwLCA4MywgNzMsIDcxLCAxMjgsIDgzLCA3MywgNjksIDY5LCAxMjgsIDgzLCA3MywgNjgsIDY5LCA4NywgNjUsIDg5LCAKLSAgICAyMTEsIDgzLCA3MywgNjcsIDc1LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgNzMsIDY3LCA3NSwgNzYsIDY5LCAxMjgsIAotICAgIDgzLCA3MywgNjYsIDE5NywgODMsIDIwMSwgODMsIDcyLCA4OSwgODgsIDEyOCwgODMsIDcyLCA4OSwgODQsIDEyOCwgODMsIAotICAgIDcyLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA3MiwgODksIDgyLCAxMjgsIDgzLCA3MiwgODksIDgwLCAxMjgsIDgzLCA3MiwgCi0gICAgODksIDY5LCAxMjgsIDgzLCA3MiwgODksIDY1LCAxMjgsIDgzLCA3MiwgODksIDEyOCwgODMsIDcyLCA4NywgNzksIDg5LCAKLSAgICAxMjgsIDgzLCA3MiwgODcsIDc5LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3MywgNzMsIAotICAgIDEyOCwgODMsIDcyLCA4NywgNzMsIDEyOCwgODMsIDcyLCA4NywgNjksIDEyOCwgODMsIDcyLCA4NywgNjUsIDY1LCAxMjgsIAotICAgIDgzLCA3MiwgODcsIDY1LCAxMjgsIDgzLCA3MiwgODUsIDg4LCAxMjgsIDgzLCA3MiwgODUsIDg1LCAxMjgsIDgzLCA3MiwgCi0gICAgODUsIDg0LCAxMjgsIDgzLCA3MiwgODUsIDgyLCA4OCwgMTI4LCA4MywgNzIsIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCAKLSAgICA4MCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgODgsIDEyOCwgODMsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA3MiwgODUsIAotICAgIDc5LCAxMjgsIDgzLCA3MiwgODUsIDc3LCAxMjgsIDgzLCA3MiwgODUsIDcwLCA3MCwgNzYsIDE5NywgODMsIDcyLCA4NSwgCisgICAgMTI4LCA4MywgNzUsIDEyOCwgODMsIDc0LCA2OSwgMTI4LCA4MywgNzMsIDkwLCAxOTcsIDgzLCA3MywgODgsIDg0LCA4OSwgCisgICAgNDUsIDcwLCA3OSwgODUsIDgyLCA4NCwgMjAwLCA4MywgNzMsIDg4LCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgODQsIAorICAgIDIxNywgODMsIDczLCA4OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgNzIsIDIxMSwgODMsIDczLCA4OCwgCisgICAgODQsIDcyLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCAKKyAgICA2OSwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCAyMDAsIDgzLCA3MywgODgsIAorICAgIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDIwNiwgODMsIDczLCA4OCwgNDUsIDg0LCA3MiwgCisgICAgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgNDUsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgNzMsIDg4LCAKKyAgICA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDgzLCA3MywgODgsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgCisgICAgMjE2LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA4MywgNzMsIDgzLCA2NSwgMTI4LCA4MywgNzMsIDgyLCA3MywgNzgsIDcxLCAKKyAgICA4NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgzLCA3MywgNzksIAorICAgIDgzLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgyLCAKKyAgICA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc1LCA3MywgCisgICAgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCAKKyAgICA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgCisgICAgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgzLCAKKyAgICA3MywgNzksIDgzLCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgCisgICAgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAorICAgIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MiwgNzMsIAorICAgIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDgzLCA3MywgNzksIDIxMSwgODMsIDczLCA3OCwgODUsIDgzLCA3OSwgNzMsIDE5NiwgCisgICAgODMsIDczLCA3OCwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgODMsIDczLCA3OCwgNzUsIDczLCA3OCwgNzEsIAorICAgIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUxLCAxMjgsIDgzLCA3MywgCisgICAgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIAorICAgIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgCisgICAgMTk3LCA4MywgNzMsIDc4LCA3MSwgNjUsIDY1LCA4NCwgMTI4LCA4MywgNzMsIDc4LCAxOTcsIDgzLCA3MywgNzgsIDY4LCAKKyAgICA3MiwgMjAxLCA4MywgNzMsIDIwNiwgODMsIDczLCA3NywgODUsIDc2LCA4NCwgNjUsIDc4LCA2OSwgNzksIDg1LCA4MywgCisgICAgMTI4LCA4MywgNzMsIDc3LCA4NSwgNzYsIDg0LCA2NSwgNzgsIDY5LCA3OSwgODUsIDIxMSwgODMsIDczLCA3NywgODAsIDc2LCAKKyAgICA3MywgNzAsIDczLCA2OSwgMTk2LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCA4MiwgMTI4LCA4MywgNzMsIDc3LCA3MywgNzYsIAorICAgIDY1LCAyMTAsIDgzLCA3MywgNzcsIDY1LCA3OCwgODMsIDczLCAyMTEsIDgzLCA3MywgNzcsIDY1LCA3NiwgODUsIDc4LCA3MSwgCisgICAgODUsIDIwNiwgODMsIDczLCA3NywgNjUsIDEyOCwgODMsIDczLCA3NiwgODYsIDY5LCA4MiwgMTI4LCA4MywgNzMsIDc2LCAKKyAgICA3NSwgMTI4LCA4MywgNzMsIDc2LCA3MywgODEsIDg1LCAxOTMsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIAorICAgIDY5LCAxMjgsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDE5NywgODMsIDczLCA3NiwgNjUsIDUxLCAKKyAgICAxMjgsIDgzLCA3MywgNzUsIDczLCAxMjgsIDgzLCA3MywgNzUsIDUwLCAxMjgsIDgzLCA3MywgNzUsIDE3OCwgODMsIDczLCAKKyAgICA3MSwgNzgsIDgzLCAxMjgsIDgzLCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDcxLCA3NywgMTkzLCA4MywgNzMsIAorICAgIDcxLCA2OSwgMjA0LCA4MywgNzMsIDcxLCA1MiwgMTI4LCA4MywgNzMsIDcxLCAxODAsIDgzLCA3MywgNzEsIDEyOCwgODMsIAorICAgIDczLCA2OSwgNjksIDEyOCwgODMsIDczLCA2OCwgNjksIDg3LCA2NSwgODksIDIxMSwgODMsIDczLCA2OCwgNjksIDEyOCwgCisgICAgODMsIDczLCA2OCwgMTk3LCA4MywgNzMsIDY4LCA2OCwgNzIsIDY1LCA3NywgMTI4LCA4MywgNzMsIDY3LCA3NSwgNzgsIDY5LCAKKyAgICA4MywgODMsIDEyOCwgODMsIDczLCA2NywgNzUsIDc2LCA2OSwgMTI4LCA4MywgNzMsIDY2LCAxOTcsIDgzLCA3MywgNjUsIAorICAgIDEyOCwgODMsIDIwMSwgODMsIDcyLCA4OSwgODgsIDEyOCwgODMsIDcyLCA4OSwgODQsIDEyOCwgODMsIDcyLCA4OSwgODIsIAorICAgIDg4LCAxMjgsIDgzLCA3MiwgODksIDgyLCAxMjgsIDgzLCA3MiwgODksIDgwLCAxMjgsIDgzLCA3MiwgODksIDY5LCAxMjgsIAorICAgIDgzLCA3MiwgODksIDY1LCAxMjgsIDgzLCA3MiwgODksIDEyOCwgODMsIDcyLCA4NywgNzksIDg5LCAxMjgsIDgzLCA3MiwgCisgICAgODcsIDc5LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3MywgNzMsIDEyOCwgODMsIDcyLCAKKyAgICA4NywgNzMsIDEyOCwgODMsIDcyLCA4NywgNjksIDEyOCwgODMsIDcyLCA4NywgMTk3LCA4MywgNzIsIDg3LCA2NSwgNjUsIAorICAgIDEyOCwgODMsIDcyLCA4NywgNjUsIDEyOCwgODMsIDcyLCA4NSwgODgsIDEyOCwgODMsIDcyLCA4NSwgODUsIDEyOCwgODMsIAorICAgIDcyLCA4NSwgODQsIDg0LCA3NiwgNjksIDY3LCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgODUsIDg0LCAxMjgsIDgzLCA3MiwgCisgICAgODUsIDgyLCA4OCwgMTI4LCA4MywgNzIsIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCA4MCwgMTI4LCA4MywgNzIsIDg1LCAKKyAgICA3OSwgODgsIDEyOCwgODMsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCAxMjgsIDgzLCA3MiwgODUsIAorICAgIDc3LCAxMjgsIDgzLCA3MiwgODUsIDc2LCAxMjgsIDgzLCA3MiwgODUsIDcwLCA3MCwgNzYsIDE5NywgODMsIDcyLCA4NSwgCiAgICAgNjksIDgxLCAxMjgsIDgzLCA3MiwgODUsIDY5LCA3OCwgODMsIDcyLCA4NSwgNjksIDg0LCAxMjgsIDgzLCA3MiwgODUsIDY2LCAKICAgICA4NSwgODIsIDEyOCwgODMsIDcyLCA4NSwgNTAsIDEyOCwgODMsIDcyLCA4NSwgMTc4LCA4MywgNzIsIDg1LCAxMjgsIDgzLCAKICAgICA3MiwgMjEzLCA4MywgNzIsIDg0LCA2NSwgODAsIDczLCA2NywgMTI4LCA4MywgNzIsIDg0LCA2NSwgMTI4LCA4MywgNzIsIAogICAgIDgyLCA3MywgNzgsIDY5LCAxMjgsIDgzLCA3MiwgODIsIDczLCA3NywgODAsIDEyOCwgODMsIDcyLCA4MiwgNzMsIDczLCAKLSAgICAxMjgsIDgzLCA3MiwgNzksIDg5LCAxMjgsIDgzLCA3MiwgNzksIDg4LCAxMjgsIDgzLCA3MiwgNzksIDg3LCA2OSwgODIsIAotICAgIDEyOCwgODMsIDcyLCA3OSwgODUsIDc2LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MywgNzIsIDc5LCA4NCwgMTI4LCA4MywgCi0gICAgNzIsIDc5LCA4MiwgODQsIDgzLCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgMjExLCA4MywgNzIsIDc5LCA4MiwgODQsIDY5LCAKLSAgICA3OCwgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgNjcsIDY1LCA3NSwgNjksIDEyOCwgODMsIDcyLCA3OSwgODIsIAotICAgIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA4OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCAKLSAgICA3MywgNzEsIDQ1LCA4NCwgODksIDIxMCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA4MywgCi0gICAgNzksIDIwNCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3OSwgODMsIDIxMSwgODMsIDcyLCAKLSAgICA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3OCwgNjUsIDg1LCAxOTYsIDgzLCA3MiwgNzksIDgyLCA4NCwgCi0gICAgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzcsIDY1LCA2OCwgMjEwLCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIAotICAgIDczLCA3MSwgNDUsIDcyLCA2NSwgNzEsIDY1LCA3NiwgMjA0LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCAKLSAgICA3MSwgNDUsIDY2LCA3NCwgNjUsIDgyLCA3NSwgNjUsIDIwNiwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgCi0gICAgNzEsIDQ1LCA2NSwgMjEwLCA4MywgNzIsIDc5LCA4MiwgODQsIDEyOCwgODMsIDcyLCA3OSwgODIsIDIxMiwgODMsIDcyLCAKLSAgICA3OSwgODEsIDEyOCwgODMsIDcyLCA3OSwgMjA5LCA4MywgNzIsIDc5LCA4MCwgMTI4LCA4MywgNzIsIDc5LCA3OSwgODQsIAotICAgIDczLCA3OCwgMTk5LCA4MywgNzIsIDc5LCA3OSwgODQsIDEyOCwgODMsIDcyLCA3OSwgNzksIDEyOCwgODMsIDcyLCA3OSwgCi0gICAgNzEsIDIwMSwgODMsIDcyLCA3OSwgMTk5LCA4MywgNzIsIDc5LCA2OSwgMTI4LCA4MywgNzIsIDc5LCAxOTcsIDgzLCA3MiwgCi0gICAgNzksIDY1LCAxMjgsIDgzLCA3MiwgNzksIDEyOCwgODMsIDcyLCA3MywgODksIDg5LCA2NSwgNjUsIDc2LCA2NSwgNjUsIAorICAgIDEyOCwgODMsIDcyLCA4MiwgNzMsIDEyOCwgODMsIDcyLCA3OSwgODksIDEyOCwgODMsIDcyLCA3OSwgODgsIDEyOCwgODMsIAorICAgIDcyLCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4NSwgNzYsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgzLCA3MiwgCisgICAgNzksIDg1LCA3NiwgNjgsIDY5LCAyMTAsIDgzLCA3MiwgNzksIDg0LCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgODMsIAorICAgIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCAyMTEsIDgzLCA3MiwgNzksIDgyLCA4NCwgNzIsIDY1LCA3OCwgMTk2LCA4MywgCisgICAgNzIsIDc5LCA4MiwgODQsIDY5LCA3OCwgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgNjcsIDY1LCA3NSwgNjksIAorICAgIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA4OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgCisgICAgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA4NCwgODksIDIxMCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIAorICAgIDg3LCA3MywgNzEsIDQ1LCA4MywgNzksIDIwNCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCAKKyAgICA3OSwgODMsIDIxMSwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3OCwgNjUsIDg1LCAxOTYsIAorICAgIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzcsIDY1LCA2OCwgMjEwLCA4MywgNzIsIDc5LCAKKyAgICA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDcyLCA2NSwgNzEsIDY1LCA3NiwgMjA0LCA4MywgNzIsIDc5LCA4MiwgCisgICAgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDY2LCA3NCwgNjUsIDgyLCA3NSwgNjUsIDIwNiwgODMsIDcyLCA3OSwgODIsIAorICAgIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA2NSwgMjEwLCA4MywgNzIsIDc5LCA4MiwgODQsIDEyOCwgODMsIDcyLCA3OSwgCisgICAgODIsIDIxMiwgODMsIDcyLCA3OSwgODEsIDEyOCwgODMsIDcyLCA3OSwgMjA5LCA4MywgNzIsIDc5LCA4MCwgODAsIDczLCAKKyAgICA3OCwgMTk5LCA4MywgNzIsIDc5LCA4MCwgMTI4LCA4MywgNzIsIDc5LCA3OSwgODQsIDczLCA3OCwgMTk5LCA4MywgNzIsIAorICAgIDc5LCA3OSwgODQsIDEyOCwgODMsIDcyLCA3OSwgNzksIDczLCAxMjgsIDgzLCA3MiwgNzksIDc5LCAxMjgsIDgzLCA3MiwgCisgICAgNzksIDcxLCAyMDEsIDgzLCA3MiwgNzksIDE5OSwgODMsIDcyLCA3OSwgNjksIDEyOCwgODMsIDcyLCA3OSwgMTk3LCA4MywgCisgICAgNzIsIDc5LCA2NSwgMTI4LCA4MywgNzIsIDc5LCAxMjgsIDgzLCA3MiwgNzMsIDg5LCA4OSwgNjUsIDY1LCA3NiwgNjUsIDY1LCAKICAgICAxMjgsIDgzLCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA4MywgNzIsIDczLCA4NCwgMTkzLCA4MywgNzIsIDczLCA4MiwgMjEyLCAKICAgICA4MywgNzIsIDczLCA4MiwgNjUsIDY5LCAxMjgsIDgzLCA3MiwgNzMsIDgyLCAxMjgsIDgzLCA3MiwgNzMsIDIxMCwgODMsIAotICAgIDcyLCA3MywgODEsIDEyOCwgODMsIDcyLCA3MywgODAsIDEyOCwgODMsIDcyLCA3MywgNzgsIDg0LCAyMDcsIDgzLCA3MiwgCi0gICAgNzMsIDc4LCA3MywgNzEsIDEyOCwgODMsIDcyLCA3MywgNzgsIDY4LCAxOTMsIDgzLCA3MiwgNzMsIDc4LCAxMjgsIDgzLCAKLSAgICA3MiwgNzMsIDIwNiwgODMsIDcyLCA3MywgNzcsIDY1LCAxMjgsIDgzLCA3MiwgNzMsIDc3LCAxOTMsIDgzLCA3MiwgNzMsIAotICAgIDc3LCAxMjgsIDgzLCA3MiwgNzMsIDIwNSwgODMsIDcyLCA3MywgNzMsIDc4LCAxMjgsIDgzLCA3MiwgNzMsIDczLCAxMjgsIAotICAgIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDgzLCA3MiwgNzMsIDY5LCA3NiwgNjgsIDEyOCwgODMsIDcyLCA3MywgNjgsIDEyOCwgCi0gICAgODMsIDcyLCA3MywgMTk2LCA4MywgNzIsIDcyLCA2NSwgMTI4LCA4MywgNzIsIDcyLCAxOTMsIDgzLCA3MiwgNjksIDg4LCAKLSAgICAxMjgsIDgzLCA3MiwgNjksIDg2LCA2NSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgODgsIDEyOCwgODMsIDcyLCA2OSwgODUsIAotICAgIDc5LCA4MSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MSwgODQsIDg1LCAxMjgsIDgzLCA3MiwgNjksIDg1LCA2NSwgCi0gICAgNjksIDgxLCAxMjgsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgODMsIDcyLCA2OSwgODQsIDEyOCwgODMsIDcyLCAKLSAgICA2OSwgMjEyLCA4MywgNzIsIDY5LCA4MywgNzIsIDc2LCA2NSwgNzcsIDEyOCwgODMsIDcyLCA2OSwgODMsIDcyLCA3MywgNzEsIAotICAgIDEyOCwgODMsIDcyLCA2OSwgODMsIDcyLCA3MywgMTk5LCA4MywgNzIsIDY5LCA4MywgNzIsIDUwLCAxMjgsIDgzLCA3MiwgCi0gICAgNjksIDgzLCA3MiwgMTI4LCA4MywgNzIsIDY5LCA4MSwgNjksIDIwNCwgODMsIDcyLCA2OSwgODAsIDEyOCwgODMsIDcyLCAKLSAgICA2OSwgNzgsIDEyOCwgODMsIDcyLCA2OSwgNzYsIDc2LCAxMjgsIDgzLCA3MiwgNjksIDc2LCAyMDQsIDgzLCA3MiwgNjksIAotICAgIDc2LCA3MCwgMTI4LCA4MywgNzIsIDY5LCA3MywgMTI4LCA4MywgNzIsIDY5LCA3MSwgNTcsIDEyOCwgODMsIDcyLCA2OSwgCi0gICAgNjksIDgwLCAxMjgsIDgzLCA3MiwgNjksIDY5LCA3OCwgODUsIDEyOCwgODMsIDcyLCA2OSwgNjksIDc4LCAxMjgsIDgzLCAKLSAgICA3MiwgNjksIDY5LCAyMDYsIDgzLCA3MiwgNjksIDY5LCAxMjgsIDgzLCA3MiwgNjksIDQ1LCA3MSwgNzksIDY1LCA4NCwgCi0gICAgMTI4LCA4MywgNzIsIDE5NywgODMsIDcyLCA2NywgNzIsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDg5LCAxMjgsIDgzLCA3MiwgCi0gICAgNjUsIDg4LCAxMjgsIDgzLCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODMsIDcyLCA2NSwgODYsIDczLCAKLSAgICA2NSwgMjA2LCA4MywgNzIsIDY1LCA4NiwgNjksIDE5NiwgODMsIDcyLCA2NSwgODUsIDEyOCwgODMsIDcyLCA2NSwgODQsIAotICAgIDEyOCwgODMsIDcyLCA2NSwgODIsIDg1LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMTMsIDgzLCA3MiwgNjUsIDgyLCA4MCwgCi0gICAgMTI4LCA4MywgNzIsIDY1LCA4MiwgMjA4LCA4MywgNzIsIDY1LCA4MiwgNjUsIDEyOCwgODMsIDcyLCA2NSwgODIsIDUwLCAKLSAgICAxMjgsIDgzLCA3MiwgNjUsIDgyLCAxNzgsIDgzLCA3MiwgNjUsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIAotICAgIDgwLCA2OSwgODMsIDEyOCwgODMsIDcyLCA2NSwgODAsIDE5NywgODMsIDcyLCA2NSwgODAsIDEyOCwgODMsIDcyLCA2NSwgCi0gICAgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDgzLCA3MiwgNjUsIDIwNiwgODMsIDcyLCA2NSwgNzcsIDgyLCAKLSAgICA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgNjUsIDc2LCA4MywgNzIsIDY5LCA3NiwgNjksIDg0LCAxMjgsIDgzLCA3MiwgNjUsIAotICAgIDc1LCA4NCwgNzMsIDEyOCwgODMsIDcyLCA2NSwgNzMsIDEyOCwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgCi0gICAgODMsIDcyLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA3MiwgNjUsIDY4LCA2OCwgNjUsIDEyOCwgODMsIDcyLCA2NSwgNjgsIDY4LCAKLSAgICAxOTMsIDgzLCA3MiwgNjUsIDY4LCAxMjgsIDgzLCA3MiwgNjUsIDE5NiwgODMsIDcyLCA2NSwgNjYsIDU0LCAxMjgsIDgzLCAKLSAgICA3MiwgNjUsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDU0LCAxMjgsIDgzLCA3MiwgNjUsIDUxLCAxMjgsIDgzLCA3MiwgNjUsIAotICAgIDE3OSwgODMsIDcxLCA4MiwgMTkzLCA4MywgNzEsIDc5LCAyMTAsIDgzLCA3MSwgNjcsIDEyOCwgODMsIDcxLCA2NSwgMjE1LCAKLSAgICA4MywgNzEsIDY1LCAxOTQsIDgzLCA3MSwgMTI4LCA4MywgNjksIDg4LCA4NCwgODUsIDc2LCAxOTMsIDgzLCA2OSwgODgsIAorICAgIDcyLCA3MywgODEsIDEyOCwgODMsIDcyLCA3MywgNzgsIDg0LCAyMDcsIDgzLCA3MiwgNzMsIDc4LCA3MywgNzEsIDEyOCwgCisgICAgODMsIDcyLCA3MywgNzgsIDY4LCAxOTMsIDgzLCA3MiwgNzMsIDIwNiwgODMsIDcyLCA3MywgNzcsIDY1LCAxMjgsIDgzLCAKKyAgICA3MiwgNzMsIDc3LCAxOTMsIDgzLCA3MiwgNzMsIDc3LCAxMjgsIDgzLCA3MiwgNzMsIDIwNSwgODMsIDcyLCA3MywgNzMsIAorICAgIDc4LCAxMjgsIDgzLCA3MiwgNzMsIDczLCAxMjgsIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDgzLCA3MiwgNzMsIDY5LCA3NiwgCisgICAgNjgsIDEyOCwgODMsIDcyLCA3MywgNjgsIDEyOCwgODMsIDcyLCA3MywgMTk2LCA4MywgNzIsIDcyLCA2NSwgMTI4LCA4MywgCisgICAgNzIsIDcyLCAxOTMsIDgzLCA3MiwgNjksIDg4LCAxMjgsIDgzLCA3MiwgNjksIDg2LCA2NSwgMTI4LCA4MywgNzIsIDY5LCAKKyAgICA4NSwgODgsIDEyOCwgODMsIDcyLCA2OSwgODUsIDc5LCA4MSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MSwgODQsIAorICAgIDg1LCAxMjgsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgCisgICAgODMsIDcyLCA2OSwgODQsIDEyOCwgODMsIDcyLCA2OSwgMjEyLCA4MywgNzIsIDY5LCA4MywgNzIsIDc2LCA2NSwgNzcsIAorICAgIDEyOCwgODMsIDcyLCA2OSwgODMsIDcyLCA3MywgNzEsIDEyOCwgODMsIDcyLCA2OSwgODMsIDcyLCA3MywgMTk5LCA4MywgCisgICAgNzIsIDY5LCA4MywgNzIsIDUwLCAxMjgsIDgzLCA3MiwgNjksIDgzLCA3MiwgMTI4LCA4MywgNzIsIDY5LCA4MywgMjAwLCAKKyAgICA4MywgNzIsIDY5LCA4MSwgNjksIDIwNCwgODMsIDcyLCA2OSwgODAsIDEyOCwgODMsIDcyLCA2OSwgNzgsIDEyOCwgODMsIAorICAgIDcyLCA2OSwgNzYsIDc2LCAxMjgsIDgzLCA3MiwgNjksIDc2LCAyMDQsIDgzLCA3MiwgNjksIDc2LCA3MCwgMTI4LCA4MywgCisgICAgNzIsIDY5LCA3MywgMTI4LCA4MywgNzIsIDY5LCA3MSwgNTcsIDEyOCwgODMsIDcyLCA2OSwgNjksIDgwLCAxMjgsIDgzLCAKKyAgICA3MiwgNjksIDY5LCA3OCwgODUsIDEyOCwgODMsIDcyLCA2OSwgNjksIDc4LCAxMjgsIDgzLCA3MiwgNjksIDY5LCAyMDYsIAorICAgIDgzLCA3MiwgNjksIDY5LCAxMjgsIDgzLCA3MiwgNjksIDQ1LCA3MSwgNzksIDY1LCA4NCwgMTI4LCA4MywgNzIsIDE5NywgCisgICAgODMsIDcyLCA2NywgNzIsIDc5LCA3OSwgNzMsIDEyOCwgODMsIDcyLCA2NywgNzIsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDg5LCAKKyAgICAxMjgsIDgzLCA3MiwgNjUsIDg4LCAxMjgsIDgzLCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgODYsIDczLCA2NSwgMjA2LCA4MywgNzIsIDY1LCA4NiwgNjksIDE5NiwgODMsIDcyLCA2NSwgODUsIDEyOCwgCisgICAgODMsIDcyLCA2NSwgODQsIDEyOCwgODMsIDcyLCA2NSwgODIsIDg1LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMTMsIDgzLCAKKyAgICA3MiwgNjUsIDgyLCA4MCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMjA4LCA4MywgNzIsIDY1LCA4MiwgNjUsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgODIsIDUwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAxNzgsIDgzLCA3MiwgNjUsIDgwLCA3MywgNzgsIDcxLCAKKyAgICAxMjgsIDgzLCA3MiwgNjUsIDgwLCA2OSwgODMsIDEyOCwgODMsIDcyLCA2NSwgODAsIDE5NywgODMsIDcyLCA2NSwgODAsIAorICAgIDEyOCwgODMsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDgzLCA3MiwgNjUsIDIwNiwgODMsIAorICAgIDcyLCA2NSwgNzcsIDgyLCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgNjUsIDc2LCA4MywgNzIsIDY5LCA3NiwgNjksIDg0LCAKKyAgICAxMjgsIDgzLCA3MiwgNjUsIDc1LCA4NCwgNzMsIDEyOCwgODMsIDcyLCA2NSwgNzUsIDczLCA3OCwgNzEsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgNzUsIDczLCA3OCwgMTk5LCA4MywgNzIsIDY1LCA3NSwgMTI4LCA4MywgNzIsIDY1LCA3MywgMTI4LCA4MywgCisgICAgNzIsIDY1LCA3MCwgODQsIDEyOCwgODMsIDcyLCA2NSwgNzAsIDIxMiwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIAorICAgIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTI4LCA4MywgNzIsIDY1LCA2OCwgCisgICAgNjgsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDY4LCA2OCwgMTkzLCA4MywgNzIsIDY1LCA2OCwgMTI4LCA4MywgNzIsIDY1LCAKKyAgICAxOTYsIDgzLCA3MiwgNjUsIDY2LCA1NCwgMTI4LCA4MywgNzIsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDY1LCA1NCwgMTI4LCAKKyAgICA4MywgNzIsIDY1LCAxODIsIDgzLCA3MiwgNjUsIDUxLCAxMjgsIDgzLCA3MiwgNjUsIDE3OSwgODMsIDcxLCA4MiwgMTkzLCAKKyAgICA4MywgNzEsIDc5LCAyMTAsIDgzLCA3MSwgNjcsIDEyOCwgODMsIDcxLCA2NSwgMjE1LCA4MywgNzEsIDY1LCAxOTQsIDgzLCAKKyAgICA3MSwgMTI4LCA4MywgNjksIDg5LCA3NSwgMTI4LCA4MywgNjksIDg4LCA4NCwgODUsIDc2LCAxOTMsIDgzLCA2OSwgODgsIAogICAgIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA2OSwgODgsIDg0LCA2NSwgNzgsIDIxMSwgODMsIDY5LCA4NiwgNjksIDgyLCA2NSwgCiAgICAgNzgsIDY3LCA2OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCAKICAgICAyMTcsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDcyLCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCA2OSwgNzgsIApAQCAtMTAwNywxMTk5ICsxMTAwLDEzNjQgQEAKICAgICA3OCwgMTI4LCA4MywgNjksIDgzLCA4NCwgNjksIDgyLCA4NCwgNzMsIDg1LCAyMTEsIDgzLCA2OSwgODMsIDgxLCA4NSwgNzMsIAogICAgIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDg0LCA2OSwgMTI4LCA4MywgNjksIDgzLCA2NSwgNzcsIDE5NywgODMsIDY5LCA4MiwgCiAgICAgODYsIDczLCA2NywgMTk3LCA4MywgNjksIDgyLCA3MywgNzAsIDgzLCAxMjgsIDgzLCA2OSwgODIsIDczLCA3MCwgMjExLCAKLSAgICA4MywgNjksIDgxLCA4NSwgNjksIDc4LCA2NywgMTk3LCA4MywgNjksIDgwLCA4NCwgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIAotICAgIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCAKLSAgICAyMTAsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MywgNjksIDc4LCA4NCwgNzMsIDEyOCwgODMsIDY5LCA3NywgODUsIAotICAgIDc4LCA2NywgNzMsIDE5MywgODMsIDY5LCA3NywgNzUsIDY1LCA4NCwgNzIsIDEyOCwgODMsIDY5LCA3NywgNzUsIDEyOCwgCi0gICAgODMsIDY5LCA3NywgNzMsIDg2LCA3OSwgODcsIDY5LCAyMDQsIDgzLCA2OSwgNzcsIDczLCA4MywgNzksIDcwLCAyMTIsIDgzLCAKLSAgICA2OSwgNzcsIDczLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgNjksIDc3LCA3MywgNzcsIDczLCA3OCwgCi0gICAgNzMsIDc3LCAxOTMsIDgzLCA2OSwgNzcsIDczLCA2OCwgNzMsIDgyLCA2OSwgNjcsIDIxMiwgODMsIDY5LCA3NywgNzMsIDY3LCAKLSAgICA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4MywgNjksIDc3LCA3MywgNjcsIDc5LCA3NiwgNzksIDIwNiwgODMsIDY5LCA3NywgNzMsIAotICAgIDY3LCA3MywgODIsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgzLCA2OSwgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgCi0gICAgODMsIDY5LCA3NywgNzMsIDY2LCA4MiwgNjksIDg2LCA3MywgMjExLCA4MywgNjksIDc3LCA3MywgNDUsIDg2LCA3OSwgNzMsIAotICAgIDY3LCA2OSwgMTk2LCA4MywgNjksIDc2LCA3MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NiwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUyLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDQ5LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTcsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTQsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTEsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDgsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NiwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAKLSAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAKLSAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAKLSAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU3LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU0LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTEsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgCi0gICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU1LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIAotICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDgsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAKLSAgICA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUyLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNDgsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUwLCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDQ5LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NiwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDQ5LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTcsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MywgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCAKLSAgICA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTEsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDgsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU1LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDU2LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUyLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNDgsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NiwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUyLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDU1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIAotICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1NCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NiwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAKLSAgICA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDQ5LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgCi0gICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NiwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MywgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTcsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTcsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTQsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTQsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgCi0gICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIAotICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTEsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTEsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDgsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDY5LCAxOTYsIDgzLCA2OSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODMsIDY5LCA3MywgODMsIDc3LCAxOTMsIAotICAgIDgzLCA2OSwgNzIsIDEyOCwgODMsIDY5LCA3MSwgNzksIDc2LCAxMjgsIDgzLCA2OSwgNzEsIDc4LCA3OSwgMTI4LCA4MywgCi0gICAgNjksIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA4MywgNjksIDY5LCA3OCwgODUsIDEyOCwgODMsIDY5LCA2OSwgNzgsIAotICAgIDEyOCwgODMsIDY5LCA2OSwgMjA2LCA4MywgNjksIDY5LCA2OCwgNzYsIDczLCA3OCwgNzEsIDEyOCwgODMsIDY5LCA2OSwgCi0gICAgNDUsIDc4LCA3OSwgNDUsIDY5LCA4NiwgNzMsIDIwNCwgODMsIDY5LCA2NywgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDY3LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA2OSwgNjcsIDgyLCA2OSwgODQsIAotICAgIDEyOCwgODMsIDY5LCA2NywgNzksIDc4LCA2OCwgMTI4LCA4MywgNjksIDY2LCA2NSwgODQsIDY2LCA2OSwgNzMsIDIxMiwgCi0gICAgODMsIDY5LCA2NSwgODQsIDEyOCwgODMsIDY5LCA2NSwgNzYsIDEyOCwgODMsIDY5LCA2NSwgNzEsIDg1LCA3NiwgMjA0LCAKLSAgICA4MywgNjgsIDc5LCA3OCwgMTk5LCA4MywgNjgsIDEyOCwgODMsIDY3LCA4NywgNjUsIDEyOCwgODMsIDY3LCA4MiwgODUsIAotICAgIDgwLCA3NiwgNjksIDEyOCwgODMsIDY3LCA4MiwgNzksIDc2LCA3NiwgMTI4LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCAKLSAgICAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCAyMDYsIDgzLCA2NywgODIsIAotICAgIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCA4MywgNjcsIDc5LCA4MiwgODAsIDczLCA4NSwgODMsIDEyOCwgODMsIDY3LCA3OSwgCi0gICAgODIsIDY5LCAxMjgsIDgzLCA2NywgNzMsIDgzLCA4MywgNzksIDgyLCA4MywgMTI4LCA4MywgNjcsIDczLCAxMjgsIDgzLCAKLSAgICA2NywgNzIsIDg3LCA2NSwgMTI4LCA4MywgNjcsIDcyLCA4NywgMTkzLCA4MywgNjcsIDcyLCA4MiwgNzksIDY5LCA2OCwgNjksIAotICAgIDgyLCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgNzYsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCAyMDQsIDgzLCA2NywgCi0gICAgNzIsIDc5LCA3NiwgNjUsIDgyLCAxMjgsIDgzLCA2NywgNzIsIDY5LCA3NywgMTkzLCA4MywgNjcsIDY5LCA4MCwgODQsIDY5LCAKLSAgICAyMTAsIDgzLCA2NywgNjUsIDc4LCA2OCwgNzMsIDY3LCA4NSwgODMsIDEyOCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgNjcsIAotICAgIDg1LCAyMTEsIDgzLCA2NywgNjUsIDIwNiwgODMsIDY3LCA2NSwgNzYsIDY5LCA4MywgMTI4LCA4MywgNjYsIDg1LCAxOTQsIAotICAgIDgzLCA2NiwgODIsIDg1LCAyMDQsIDgzLCA2NSwgODksIDczLCA4MywgMjAxLCA4MywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA4MywgNjUsIDg5LCAxMjgsIDgzLCA2NSwgODgsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgODMsIDY1LCAKLSAgICA4OCwgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA2NSwgODcsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDg3LCAxMjgsIAotICAgIDgzLCA2NSwgODYsIDc5LCA4NSwgODIsIDczLCA3OCwgMTk5LCA4MywgNjUsIDg1LCA3MywgNzYsIDEyOCwgODMsIDY1LCA4NCwgCi0gICAgODUsIDgyLCA3OCwgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCA3OCwgNzUsIDg1LCA4NSwgMTI4LCA4MywgNjUsIDg0LCAKLSAgICA3NSwgNjUsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCA3MywgODQsIDE5NywgODMsIDY1LCA4NCwgNjcsIAotICAgIDcyLCA2OSwgNzYsIDEyOCwgODMsIDY1LCA4NCwgNjUsIDc4LCA3MSwgNjUsIDEyOCwgODMsIDY1LCA4MywgNzIsIDEyOCwgCi0gICAgODMsIDY1LCA4MywgNjUsIDc1LCAxMjgsIDgzLCA2NSwgODIsIDczLCAxMjgsIDgzLCA2NSwgODIsIDE5MywgODMsIDY1LCAKLSAgICA4MiwgMTI4LCA4MywgNjUsIDgxLCAxMjgsIDgzLCA2NSwgODAsIDY1LCAxMjgsIDgzLCA2NSwgNzgsIDg5LCA3OSwgNzksIAotICAgIDcxLCAxOTMsIDgzLCA2NSwgNzgsIDg5LCA2NSwgNzUsIDE5MywgODMsIDY1LCA3OCwgODQsIDczLCA3MywgNzcsIDg1LCAKLSAgICAxMjgsIDgzLCA2NSwgNzgsIDc4LCA4OSwgNjUsIDEyOCwgODMsIDY1LCA3OCwgNzEsIDY1LCA1MCwgMTI4LCA4MywgNjUsIAotICAgIDc4LCA2OCwgNjUsIDc2LCAxMjgsIDgzLCA2NSwgNzgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDc4LCAxMjgsIDgzLCA2NSwgCi0gICAgNzcsIDg5LCA3OSwgMjAzLCA4MywgNjUsIDc3LCA4NiwgNjUsIDg0LCAxMjgsIDgzLCA2NSwgNzcsIDgwLCA3MywgMTI4LCAKLSAgICA4MywgNjUsIDc3LCA4MCwgNzIsIDY1LCA3OSwgMTI4LCA4MywgNjUsIDc3LCA3NSwgNjUsIDEyOCwgODMsIDY1LCA3NywgNjksIAotICAgIDc1LCA3MiwgMTI4LCA4MywgNjUsIDc3LCA2OSwgNzUsIDIwMCwgODMsIDY1LCA3NywgNjYsIDY1LCAxMjgsIDgzLCA2NSwgCi0gICAgNzcsIDY1LCA4MiwgNzMsIDg0LCA2NSwgMjA2LCA4MywgNjUsIDc3LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA3MywgODIsIDY5LCAKLSAgICAxMjgsIDgzLCA2NSwgNzYsIDg0LCA3MywgNzYsIDc2LCA3OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgNDUsIDUwLCAxMjgsIAotICAgIDgzLCA2NSwgNzYsIDg0LCAxMjgsIDgzLCA2NSwgNzYsIDIxMiwgODMsIDY1LCA3NiwgNzYsIDY1LCA3NiwgNzYsIDY1LCA3MiwgCi0gICAgNzksIDIxMywgODMsIDY1LCA3NiwgNzYsIDE5MywgODMsIDY1LCA3NiwgNjUsIDIwNSwgODMsIDY1LCA3NiwgNjUsIDEyOCwgCi0gICAgODMsIDY1LCA3NiwgNDUsIDY1LCA3NywgNzcsIDc5LCA3OCwgNzMsIDY1LCA2NywgMTI4LCA4MywgNjUsIDc2LCAxMjgsIDgzLCAKLSAgICA2NSwgNzUsIDc5LCA4NCwgMTI4LCA4MywgNjUsIDc1LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4MywgNjUsIDc1LCAxOTcsIAotICAgIDgzLCA2NSwgNzQsIDY4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3MywgNzYsIDY2LCA3OSwgNjUsIDg0LCAxMjgsIDgzLCA2NSwgCi0gICAgNzMsIDc2LCAxMjgsIDgzLCA2NSwgNzMsIDc1LCA4NSwgODIsIDg1LCAxMjgsIDgzLCA2NSwgNzIsIDEyOCwgODMsIDY1LCAKLSAgICA3MSwgNzMsIDg0LCA4NCwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NSwgNzEsIDY1LCAxMjgsIDgzLCA2NSwgNzEsIAotICAgIDEyOCwgODMsIDY1LCAxOTksIDgzLCA2NSwgNzAsIDcyLCA2NSwgMTI4LCA4MywgNjUsIDY4LCA3MiwgNjksIDEyOCwgODMsIAotICAgIDY1LCA2OCwgNjksIDEyOCwgODMsIDY1LCA2OCwgMTI4LCA4MywgNjUsIDE5NiwgODMsIDY1LCA2NywgODIsIDczLCA3MCwgCi0gICAgNzMsIDY3LCA3MywgNjUsIDIwNCwgODMsIDY1LCA2NSwgNzMsIDEyOCwgODMsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCAKLSAgICA4MywgNjUsIDQ1LCA3MywgMTI4LCA4MywgNjUsIDQ1LCA1MCwgMTI4LCA4MywgNDgsIDUyLCA1NCwgMTI4LCA4MywgNDgsIAotICAgIDUyLCA1MywgMTI4LCA4MywgNDgsIDUyLCA1MiwgMTI4LCA4MywgNDgsIDUyLCA1MSwgMTI4LCA4MywgNDgsIDUyLCA1MCwgCi0gICAgMTI4LCA4MywgNDgsIDUyLCA0OSwgMTI4LCA4MywgNDgsIDUyLCA0OCwgMTI4LCA4MywgNDgsIDUxLCA1NywgMTI4LCA4MywgCi0gICAgNDgsIDUxLCA1NiwgMTI4LCA4MywgNDgsIDUxLCA1NSwgMTI4LCA4MywgNDgsIDUxLCA1NCwgMTI4LCA4MywgNDgsIDUxLCAKLSAgICA1MywgNjUsIDEyOCwgODMsIDQ4LCA1MSwgNTMsIDEyOCwgODMsIDQ4LCA1MSwgNTIsIDEyOCwgODMsIDQ4LCA1MSwgNTEsIAotICAgIDEyOCwgODMsIDQ4LCA1MSwgNTAsIDEyOCwgODMsIDQ4LCA1MSwgNDksIDEyOCwgODMsIDQ4LCA1MSwgNDgsIDEyOCwgODMsIAotICAgIDQ4LCA1MCwgNTcsIDEyOCwgODMsIDQ4LCA1MCwgNTYsIDEyOCwgODMsIDQ4LCA1MCwgNTUsIDEyOCwgODMsIDQ4LCA1MCwgCi0gICAgNTQsIDY2LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDUwLCA1NCwgMTI4LCA4MywgNDgsIDUwLCAKLSAgICA1MywgMTI4LCA4MywgNDgsIDUwLCA1MiwgMTI4LCA4MywgNDgsIDUwLCA1MSwgMTI4LCA4MywgNDgsIDUwLCA1MCwgMTI4LCAKLSAgICA4MywgNDgsIDUwLCA0OSwgMTI4LCA4MywgNDgsIDUwLCA0OCwgMTI4LCA4MywgNDgsIDQ5LCA1NywgMTI4LCA4MywgNDgsIAotICAgIDQ5LCA1NiwgMTI4LCA4MywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgODMsIDQ4LCA0OSwgNTUsIDEyOCwgODMsIDQ4LCA0OSwgCi0gICAgNTQsIDEyOCwgODMsIDQ4LCA0OSwgNTMsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDY2LCAxMjgsIDgzLCA0OCwgNDksIDUyLCAKLSAgICA2NSwgMTI4LCA4MywgNDgsIDQ5LCA1MiwgMTI4LCA4MywgNDgsIDQ5LCA1MSwgMTI4LCA4MywgNDgsIDQ5LCA1MCwgMTI4LCAKLSAgICA4MywgNDgsIDQ5LCA0OSwgMTI4LCA4MywgNDgsIDQ5LCA0OCwgMTI4LCA4MywgNDgsIDQ4LCA1NywgMTI4LCA4MywgNDgsIAotICAgIDQ4LCA1NiwgMTI4LCA4MywgNDgsIDQ4LCA1NSwgMTI4LCA4MywgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgCi0gICAgNTQsIDEyOCwgODMsIDQ4LCA0OCwgNTMsIDEyOCwgODMsIDQ4LCA0OCwgNTIsIDEyOCwgODMsIDQ4LCA0OCwgNTEsIDEyOCwgCi0gICAgODMsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDgzLCA0OCwgNDgsIDUwLCAxMjgsIDgzLCA0OCwgNDgsIDQ5LCAxMjgsIDgzLCAKLSAgICA0NSwgODcsIDEyOCwgODMsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgODIsIDg5LCA4OSwgMTI4LCA4MiwgODksIAotICAgIDg4LCAxMjgsIDgyLCA4OSwgODQsIDEyOCwgODIsIDg5LCA4MiwgODgsIDEyOCwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODksIAotICAgIDgwLCAxMjgsIDgyLCA4NywgNzksIDc5LCAxMjgsIDgyLCA4NywgNzksIDEyOCwgODIsIDg3LCA3MywgNzMsIDEyOCwgODIsIAotICAgIDg3LCA3MywgMTI4LCA4MiwgODcsIDY5LCA2OSwgMTI4LCA4MiwgODcsIDY5LCAxMjgsIDgyLCA4NywgNjUsIDcyLCA2NSwgCi0gICAgMTI4LCA4MiwgODcsIDY1LCA2NSwgMTI4LCA4MiwgODcsIDY1LCAxMjgsIDgyLCA4NSwgODgsIDEyOCwgODIsIDg1LCA4NSwgCi0gICAgNjYsIDg1LCA4MiwgODUsIDEyOCwgODIsIDg1LCA4NSwgMTI4LCA4MiwgODUsIDg0LCAxMjgsIDgyLCA4NSwgODMsIDczLCAKLSAgICAxMjgsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDgyLCA4NSwgODIsIDEyOCwgODIsIDg1LCA4MCwgNzMsIDczLCAxMjgsIDgyLCAKLSAgICA4NSwgODAsIDY5LCAxOTcsIDgyLCA4NSwgODAsIDEyOCwgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIDg1LCA3OSwgODAsIAotICAgIDEyOCwgODIsIDg1LCA3OSwgMTI4LCA4MiwgODUsIDc4LCA3OSwgODUsIDg0LCAxMjgsIDgyLCA4NSwgNzgsIDc4LCA3MywgCi0gICAgNzgsIDE5OSwgODIsIDg1LCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA4MiwgODUsIDc4LCAxMjgsIDgyLCA4NSwgNzcsIDIwMSwgCi0gICAgODIsIDg1LCA3NywgNjUsIDIwMSwgODIsIDg1LCA3NywgMTI4LCA4MiwgODUsIDIwNSwgODIsIDg1LCA3NiwgNjksIDgyLCAKLSAgICAxMjgsIDgyLCA4NSwgNzYsIDY5LCA0NSwgNjgsIDY5LCA3NiwgNjUsIDg5LCA2OSwgNjgsIDEyOCwgODIsIDg1LCA3NiwgNjksIAotICAgIDEyOCwgODIsIDg1LCA3NSwgNzUsIDY1LCA3NSwgNzIsIDY1LCAxMjgsIDgyLCA4NSwgNzMsIDgzLCAxMjgsIDgyLCA4NSwgCi0gICAgNzEsIDY2LCAyMTcsIDgyLCA4NSwgMTk0LCA4MiwgODUsIDY1LCAxMjgsIDgyLCA4NCwgNzIsIDY1LCA3OCwgMTk5LCA4MiwgCi0gICAgODQsIDY1LCA3MSwgODMsIDEyOCwgODIsIDg0LCA2NSwgNzEsIDIxMSwgODIsIDgyLCA4OSwgODgsIDEyOCwgODIsIDgyLCAKLSAgICA4OSwgODQsIDEyOCwgODIsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDgyLCA4MiwgODksIDgyLCAxMjgsIDgyLCA4MiwgODksIAotICAgIDgwLCAxMjgsIDgyLCA4MiwgODUsIDg4LCAxMjgsIDgyLCA4MiwgODUsIDg1LCAxMjgsIDgyLCA4MiwgODUsIDg0LCAxMjgsIAotICAgIDgyLCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgODIsIDg1LCA4MiwgMTI4LCA4MiwgODIsIDg1LCA4MCwgMTI4LCA4MiwgCi0gICAgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIDgyLCA4NSwgNzksIDEyOCwgODIsIDgyLCA4NSwgMTI4LCA4MiwgODIsIDc5LCAKLSAgICA4OCwgMTI4LCA4MiwgODIsIDc5LCA4NCwgMTI4LCA4MiwgODIsIDc5LCA4MCwgMTI4LCA4MiwgODIsIDc5LCA3OSwgMTI4LCAKLSAgICA4MiwgODIsIDc5LCAxMjgsIDgyLCA4MiwgNzMsIDczLCAxMjgsIDgyLCA4MiwgNzMsIDEyOCwgODIsIDgyLCA2OSwgODgsIAotICAgIDEyOCwgODIsIDgyLCA2OSwgODQsIDEyOCwgODIsIDgyLCA2OSwgODAsIDEyOCwgODIsIDgyLCA2OSwgNzIsIDEyOCwgODIsIAotICAgIDgyLCA2OSwgMjAwLCA4MiwgODIsIDY5LCA2OSwgMTI4LCA4MiwgODIsIDY5LCAxMjgsIDgyLCA4MiwgNjUsIDg4LCAxMjgsIAotICAgIDgyLCA4MiwgNjUsIDg1LCAxMjgsIDgyLCA4MiwgNjUsIDczLCAxMjgsIDgyLCA4MiwgNjUsIDY1LCAxMjgsIDgyLCA4MiwgCi0gICAgNjUsIDEyOCwgODIsIDc5LCA4NywgNjYsIDc5LCA2NSwgODQsIDEyOCwgODIsIDc5LCA4NSwgNzgsIDY4LCA2OSwgMTk2LCAKLSAgICA4MiwgNzksIDg1LCA3OCwgNjgsIDQ1LCA4NCwgNzMsIDgwLCA4MCwgNjksIDE5NiwgODIsIDc5LCA4NCwgODUsIDc4LCA2OCwgCi0gICAgNjUsIDEyOCwgODIsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA4MiwgNzksIDgzLCA3MiwgMTI4LCA4MiwgNzksIDgzLCAKLSAgICA2OSwgODQsIDg0LCA2OSwgMTI4LCA4MiwgNzksIDgzLCA2OSwgMTI4LCA4MiwgNzksIDc5LCA4NCwgMTI4LCA4MiwgNzksIAotICAgIDc5LCA4MywgODQsIDY5LCA4MiwgMTI4LCA4MiwgNzksIDc5LCA3NSwgMTI4LCA4MiwgNzksIDc5LCA3MCwgMTI4LCA4MiwgCi0gICAgNzksIDc3LCA2NSwgMjA2LCA4MiwgNzksIDc3LCAxMjgsIDgyLCA3OSwgNzYsIDc2LCA2OSwgMjEwLCA4MiwgNzksIDcyLCAKLSAgICA3MywgNzgsIDcxLCA4OSwgMTkzLCA4MiwgNzksIDE5NiwgODIsIDc5LCA2NywgNzUsIDY5LCA4NCwgMTI4LCA4MiwgNzksIAotICAgIDY3LCAyMDMsIDgyLCA3OSwgNjcsIDEyOCwgODIsIDc5LCA2NiwgNjUsIDg0LCAxMjgsIDgyLCA3OSwgNjUsIDgzLCA4NCwgCi0gICAgNjksIDE5NiwgODIsIDc5LCA2NSwgODIsIDEyOCwgODIsIDc5LCA2NSwgMTI4LCA4MiwgNzgsIDg5LCA3MywgNzgsIDE5OSwgCi0gICAgODIsIDc4LCA3OSwgNzksIDc4LCAxMjgsIDgyLCA3OCwgNzksIDc5LCAyMDYsIDgyLCA3OCwgNjUsIDIwNSwgODIsIDc3LCAKLSAgICA4NCwgMTI4LCA4MiwgNzYsIDc5LCAxMjgsIDgyLCA3NiwgNzcsIDEyOCwgODIsIDc2LCA3MywgMTI4LCA4MiwgNzYsIDY5LCAKLSAgICAxMjgsIDgyLCA3NCwgNjksIDIxMSwgODIsIDc0LCA2OSwgMTI4LCA4MiwgNzQsIDE5NywgODIsIDczLCA4NiwgNjksIDgyLCAKLSAgICAxMjgsIDgyLCA3MywgODQsIDg1LCA2NSwgNzYsIDEyOCwgODIsIDczLCA4NCwgODQsIDc5LCA4MiwgODUsIDEyOCwgODIsIAotICAgIDczLCA4NCwgODMsIDczLCAxMjgsIDgyLCA3MywgODMsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDgzLCA3MiwgMTI4LCA4MiwgCi0gICAgNzMsIDgyLCA2NSwgMTI4LCA4MiwgNzMsIDgwLCAxMjgsIDgyLCA3MywgNzgsIDcxLCAyMTEsIDgyLCA3MywgNzgsIDcwLCAKLSAgICA3OSwgODIsIDkwLCA2NSwgNzgsIDY4LCA3OSwgMTI4LCA4MiwgNzMsIDIwNiwgODIsIDczLCA3NywgNzEsIDY2LCA2NSwgCi0gICAgMTI4LCA4MiwgNzMsIDc1LCA4MiwgNzMsIDc1LCAxMjgsIDgyLCA3MywgNzEsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDgyLCAKLSAgICA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzIsIDY1LCA3OCwgCi0gICAgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzksIDQ1LCA3NiwgNjksIDcwLCAyMTIsIDgyLCA3MywgNzEsIDcyLCAKLSAgICA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgCi0gICAgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCAKLSAgICA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgCi0gICAgNzgsIDY4LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDgyLCA3MywgNzEsIDcyLCAKLSAgICA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIAotICAgIDc2LCA0NSwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCAKLSAgICA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgCi0gICAgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCAKLSAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIAotICAgIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCAKLSAgICA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgCi0gICAgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIAotICAgIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgCi0gICAgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIAotICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAKLSAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgCi0gICAgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDY1LCA3OCwgCi0gICAgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgCi0gICAgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgCi0gICAgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIAotICAgIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKLSAgICA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgCi0gICAgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDcyLCA3MywgNjksIAotICAgIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODIsIDczLCA2OSwgCi0gICAgODUsIDIwNCwgODIsIDczLCA2OSwgNzYsIDEyOCwgODIsIDczLCA2OSwgNjksIDEyOCwgODIsIDczLCA2NywgNjksIDc3LCAKLSAgICAxMjgsIDgyLCA3MywgNjcsIDY5LCAxMjgsIDgyLCA3MywgNjcsIDE5NywgODIsIDczLCA2NiwgNjYsIDc5LCA3OCwgMTI4LCAKLSAgICA4MiwgNzMsIDY1LCAyMDQsIDgyLCA3MiwgNzksIDg0LCA3MywgMTk1LCA4MiwgNzIsIDc5LCAxMjgsIDgyLCA3MiwgMjA3LCAKLSAgICA4MiwgNzIsIDY1LCAxMjgsIDgyLCA3MSwgODksIDczLCA3OCwgNzEsIDgzLCAxMjgsIDgyLCA3MSwgODksIDY1LCA3OCwgCi0gICAgMTI4LCA4MiwgNzEsIDg5LCAxOTMsIDgyLCA2OSwgODYsIDc5LCA3NiwgODYsIDczLCA3OCwgMTk5LCA4MiwgNjksIDg2LCAKLSAgICA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDg2LCA3NywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNzMsIAotICAgIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgCi0gICAgMTk2LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCAxOTcsIDgyLCA2OSwgODUsIDg4LCAxMjgsIDgyLCA2OSwgODUsIDEyOCwgCi0gICAgODIsIDY5LCA4NCwgODUsIDgyLCA3OCwgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDIwNiwgODIsIDY5LCA4NCwgODIsIDc5LCAKLSAgICA3MCwgNzYsIDY5LCAyMTYsIDgyLCA2OSwgODQsIDgyLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCA2OSwgODQsIDc5LCA4MiwgODQsIAotICAgIDEyOCwgODIsIDY5LCA4MywgODUsIDgwLCA3MywgNzgsIDg1LCA4MywgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDc5LCA3OSwgCi0gICAgNzcsIDEyOCwgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCA2OSwgMTk2LCA4MiwgNjksIDgzLCA4NCwgMTI4LCAKLSAgICA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCA4MywgNjksIDEyOCwgODIsIDY5LCA4MywgNzksIDg1LCA4MiwgNjcsIDY5LCAxMjgsIAotICAgIDgyLCA2OSwgODMsIDc5LCA3NiwgODUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgODMsIDczLCA4MywgODQsIDY1LCAKLSAgICA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDczLCA2OCwgNjksIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgCi0gICAgMjAwLCA4MiwgNjksIDgyLCA2OSwgNzgsIDcxLCA3MSwgNjUsIDc4LCAxMjgsIDgyLCA2OSwgODIsIDY5LCA3NSwgNjUsIDc4LCAKLSAgICAxMjgsIDgyLCA2OSwgODAsIDgyLCA2OSwgODMsIDY5LCA3OCwgODQsIDEyOCwgODIsIDY5LCA4MCwgNzYsIDY1LCA2NywgNjksIAotICAgIDc3LCA2OSwgNzgsIDIxMiwgODIsIDY5LCA4MCwgNzIsIDEyOCwgODIsIDY5LCA4MCwgNjksIDg0LCA3MywgODQsIDczLCA3OSwgCi0gICAgMjA2LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCA2OSwgMTk2LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCAKLSAgICA2OSwgODAsIDY5LCA2NSwgMjEyLCA4MiwgNjksIDgwLCA2NSwgODksIDY1LCAxMjgsIDgyLCA2OSwgODAsIDY1LCAxMjgsIAotICAgIDgyLCA2OSwgODAsIDE5MywgODIsIDY5LCA3OCwgODQsIDc5LCA3MSwgNjksIDc4LCAxMjgsIDgyLCA2OSwgNzgsIDEyOCwgCi0gICAgODIsIDY5LCAyMDYsIDgyLCA2OSwgNzcsIDg1LCAxMjgsIDgyLCA2OSwgNzcsIDY5LCA2OCwgODksIDEyOCwgODIsIDY5LCAKLSAgICA3NiwgNzMsIDcxLCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNzYsIDczLCA2OSwgODYsIDY5LCAxOTYsIDgyLCA2OSwgNzYsIAotICAgIDY5LCA2NSwgODMsIDY5LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA3NiwgCi0gICAgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA2NSwgMTI4LCA4MiwgNjksIDc0LCA2NSwgNzgsIAotICAgIDE5OSwgODIsIDY5LCA3MywgMTk2LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUyLCAxMjgsIDgyLCA2OSwgCi0gICAgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTEsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MCwgMTI4LCAKLSAgICA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCAyMTEsIDgyLCA2OSwgNzEsIAotICAgIDczLCA4MywgODQsIDY5LCA4MiwgNjksIDE5NiwgODIsIDY5LCA3MSwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA3MSwgCi0gICAgNzMsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgNzAsIDc5LCA4MiwgNzcsIDY5LCAKLSAgICAxOTYsIDgyLCA2OSwgNzAsIDY5LCA4MiwgNjksIDc4LCA2NywgMTk3LCA4MiwgNjksIDY4LCA4NSwgODAsIDc2LCA3MywgNjcsIAotICAgIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA3MywgNzgsIDE5OSwgODIsIDY5LCA2NywgCi0gICAgODksIDY3LCA3NiwgNjksIDE5NiwgODIsIDY5LCA2NywgODQsIDczLCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODIsIDY5LCAKLSAgICA2NywgODQsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDIxMCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDc2LCA2OSwgCi0gICAgMTI4LCA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgNzYsIDE5NywgODIsIDY5LCA2NywgODIsIDY5LCA2NSwgODQsIDczLCAKLSAgICA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNjcsIDc5LCA4MiwgNjgsIDczLCA3OCwgMTk5LCA4MiwgNjksIDY3LCA3OSwgODIsIAotICAgIDY4LCA2OSwgODIsIDEyOCwgODIsIDY5LCA2NywgNzksIDgyLCAxOTYsIDgyLCA2OSwgNjcsIDY5LCA4MCwgODQsIDczLCA4NiwgCi0gICAgMTk3LCA4MiwgNjksIDY3LCA2OSwgNzMsIDg2LCA2OSwgODIsIDEyOCwgODIsIDY5LCA2NSwgNzYsIDcxLCA2NSwgODIsIDQ1LCAKLSAgICA1MCwgMTI4LCA4MiwgNjksIDY1LCA3NiwgNzEsIDY1LCA4MiwgMTI4LCA4MiwgNjksIDY1LCA3MiwgNzcsIDg1LCA3NSwgCi0gICAgMTI4LCA4MiwgNjksIDY1LCA2NywgNzIsIDEyOCwgODIsIDY4LCAyMDcsIDgyLCA2OCwgNjksIDIwNCwgODIsIDY2LCA2NSwgCi0gICAgODMsIDE5MywgODIsIDY1LCA4OSwgODMsIDEyOCwgODIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODIsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCAxMjgsIDgyLCA2NSwgODQsIDcyLCA2NSwgMTI4LCA4MiwgNjUsIDg0LCA3MiwgMTkzLCA4MiwgNjUsIAotICAgIDg0LCA2NSwgMTI4LCA4MiwgNjUsIDg0LCAxMjgsIDgyLCA2NSwgODMsIDg3LCA2NSwgNjgsIDczLCAxMjgsIDgyLCA2NSwgCi0gICAgODMsIDc5LCA4NSwgMjA0LCA4MiwgNjUsIDgzLCA3MiwgNjUsIDEyOCwgODIsIDY1LCA4MSwgMTI4LCA4MiwgNjUsIDgwLCAKLSAgICA3MywgODMsIDc3LCA2NSwgMTI4LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA4MiwgNjUsIAotICAgIDc4LCAxMjgsIDgyLCA2NSwgNzcsIDIxMSwgODIsIDY1LCA3NywgNjYsIDY1LCA4NCwgMTI4LCA4MiwgNjUsIDc1LCA3MiwgCi0gICAgNjUsIDc4LCA3MSwgMTI4LCA4MiwgNjUsIDc1LCA2NSwgNjUsIDgyLCA2NSwgNjUsIDc4LCA4MywgNjUsIDg5LCA2NSwgMTI4LCAKLSAgICA4MiwgNjUsIDczLCA4MywgNzMsIDc4LCAxOTksIDgyLCA2NSwgNzMsIDgzLCA2OSwgMTk2LCA4MiwgNjUsIDczLCA3OCwgNjYsIAotICAgIDc5LCA4NywgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCA4OSwgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCAKLSAgICAyMTcsIDgyLCA2NSwgNzMsIDc2LCAxMjgsIDgyLCA2NSwgNzMsIDY4LCAyMDcsIDgyLCA2NSwgNzMsIDY4LCA2NSwgMTI4LCAKLSAgICA4MiwgNjUsIDcyLCA3NywgNjUsIDg0LCA4NSwgNzYsIDc2LCA2NSwgMjAwLCA4MiwgNjUsIDcyLCAxMjgsIDgyLCA2NSwgNzAsIAotICAgIDY5LCAxMjgsIDgyLCA2NSwgNjksIDc3LCAxMjgsIDgyLCA2NSwgNjgsIDczLCA3OSwgNjUsIDY3LCA4NCwgNzMsIDg2LCAKLSAgICAxOTcsIDgyLCA2NSwgNjgsIDczLCA3OSwgMTI4LCA4MiwgNjUsIDY4LCA3MywgMjA3LCA4MiwgNjUsIDY4LCAyMDEsIDgyLCAKLSAgICA2NSwgNjgsIDEyOCwgODIsIDY1LCAxOTYsIDgyLCA2NSwgNjcsIDgxLCA4NSwgNjksIDIxMiwgODIsIDY1LCA2NywgNzMsIAotICAgIDc4LCA3MSwgMTI4LCA4MiwgNjUsIDY2LCA2NiwgNzMsIDg0LCAxMjgsIDgyLCA2NSwgNjYsIDY2LCA3MywgMjEyLCA4MiwgCi0gICAgNjUsIDY2LCAxMjgsIDgyLCA2NSwgNjUsIDczLCAxMjgsIDgyLCA2NSwgNTEsIDEyOCwgODIsIDY1LCA1MCwgMTI4LCA4MiwgCi0gICAgNjUsIDQ1LCA1MCwgMTI4LCA4MiwgNDgsIDUwLCA1NywgMTI4LCA4MiwgNDgsIDUwLCA1NiwgMTI4LCA4MiwgNDgsIDUwLCAKLSAgICA1NSwgMTI4LCA4MiwgNDgsIDUwLCA1NCwgMTI4LCA4MiwgNDgsIDUwLCA1MywgMTI4LCA4MiwgNDgsIDUwLCA1MiwgMTI4LCAKLSAgICA4MiwgNDgsIDUwLCA1MSwgMTI4LCA4MiwgNDgsIDUwLCA1MCwgMTI4LCA4MiwgNDgsIDUwLCA0OSwgMTI4LCA4MiwgNDgsIAotICAgIDUwLCA0OCwgMTI4LCA4MiwgNDgsIDQ5LCA1NywgMTI4LCA4MiwgNDgsIDQ5LCA1NiwgMTI4LCA4MiwgNDgsIDQ5LCA1NSwgCi0gICAgMTI4LCA4MiwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgODIsIDQ4LCA0OSwgNTQsIDEyOCwgODIsIDQ4LCA0OSwgNTMsIDEyOCwgCi0gICAgODIsIDQ4LCA0OSwgNTIsIDEyOCwgODIsIDQ4LCA0OSwgNTEsIDEyOCwgODIsIDQ4LCA0OSwgNTAsIDEyOCwgODIsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgODIsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDgyLCA0OCwgNDksIDQ4LCAxMjgsIDgyLCA0OCwgNDgsIAotICAgIDU3LCAxMjgsIDgyLCA0OCwgNDgsIDU2LCAxMjgsIDgyLCA0OCwgNDgsIDU1LCAxMjgsIDgyLCA0OCwgNDgsIDU0LCAxMjgsIAotICAgIDgyLCA0OCwgNDgsIDUzLCAxMjgsIDgyLCA0OCwgNDgsIDUyLCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NiwgMTI4LCA4MiwgCi0gICAgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDgyLCAKLSAgICA0OCwgNDgsIDUwLCAxMjgsIDgyLCA0OCwgNDgsIDQ5LCAxMjgsIDgyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4MSwgODksIAotICAgIDg4LCAxMjgsIDgxLCA4OSwgODUsIDEyOCwgODEsIDg5LCA4NCwgMTI4LCA4MSwgODksIDgyLCA4OCwgMTI4LCA4MSwgODksIAotICAgIDgyLCAxMjgsIDgxLCA4OSwgODAsIDEyOCwgODEsIDg5LCA3OSwgMTI4LCA4MSwgODksIDczLCAxMjgsIDgxLCA4OSwgNjksIAotICAgIDY5LCAxMjgsIDgxLCA4OSwgNjksIDEyOCwgODEsIDg5LCA2NSwgNjUsIDEyOCwgODEsIDg5LCA2NSwgMTI4LCA4MSwgODksIAotICAgIDEyOCwgODEsIDg3LCA3MywgMTI4LCA4MSwgODcsIDY5LCA2OSwgMTI4LCA4MSwgODcsIDY5LCAxMjgsIDgxLCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDgxLCA4NywgNjUsIDEyOCwgODEsIDg1LCA4OCwgMTI4LCA4MSwgODUsIDg2LCAxMjgsIDgxLCA4NSwgODUsIAotICAgIDg2LCAxMjgsIDgxLCA4NSwgODUsIDEyOCwgODEsIDg1LCA4NCwgMTI4LCA4MSwgODUsIDgzLCA3MiwgODMsIDcyLCA2NSwgCi0gICAgODksIDY1LCAxMjgsIDgxLCA4NSwgODIsIDg4LCAxMjgsIDgxLCA4NSwgODIsIDEyOCwgODEsIDg1LCA4MCwgMTI4LCA4MSwgCi0gICAgODUsIDc5LCA4OCwgMTI4LCA4MSwgODUsIDc5LCA4NCwgMTk3LCA4MSwgODUsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgODEsIDg1LCA3OSwgODQsIDEyOCwgODEsIDg1LCA3OSwgODAsIDEyOCwgODEsIDg1LCA3OSwgMTI4LCA4MSwgODUsIAotICAgIDc1LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA4NCwgNjksIDgzLCA4MywgNjksIDc4LCA2NywgNjksIDEyOCwgODEsIDg1LCA3MywgCi0gICAgNzgsIDY4LCA3MywgNjcsIDY5LCA4MywgNzMsIDc3LCAxOTMsIDgxLCA4NSwgNzMsIDc4LCA2NywgODUsIDc4LCA4OCwgMTI4LCAKLSAgICA4MSwgODUsIDczLCA3OCwgNjUsIDgyLCA3MywgODUsIDIxMSwgODEsIDg1LCA3MywgNzYsIDc2LCAxMjgsIDgxLCA4NSwgNzMsIAotICAgIDY3LCAyMDMsIDgxLCA4NSwgNzMsIDEyOCwgODEsIDg1LCA3MCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgCi0gICAgNzgsIDY5LCAxOTYsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCAKLSAgICA3OSwgMjA2LCA4MSwgODUsIDY5LCA2OSwgNzgsIDEyOCwgODEsIDg1LCA2OSwgNjksIDIwNiwgODEsIDg1LCA2OSwgMTI4LCAKLSAgICA4MSwgODUsIDY2LCA4NSwgODQsIDgzLCAxMjgsIDgxLCA4NSwgNjUsIDg0LCA2OSwgODIsIDc4LCA3MywgNzksIDIwNiwgODEsIAotICAgIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCAyMTEsIDgxLCA4NSwgCi0gICAgNjUsIDgyLCA4NCwgNjksIDgyLCAxMjgsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDIxMCwgODEsIDg1LCA2NSwgNzgsIDg0LCAKLSAgICA3MywgODQsIDIxNywgODEsIDg1LCA2NSwgNjgsIDgyLCA4NSwgODAsIDc2LCAxOTcsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIAotICAgIDc4LCA4NCwgMTI4LCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA3OCwgMjEyLCA4MSwgODUsIDY1LCA2OCwgMTI4LCA4MSwgCi0gICAgODUsIDY1LCAxOTYsIDgxLCA4NSwgNjUsIDEyOCwgODEsIDg1LCAxMjgsIDgxLCAyMDgsIDgxLCA3OSwgODgsIDEyOCwgODEsIAotICAgIDc5LCA4NCwgMTI4LCA4MSwgNzksIDgwLCA3MiwgMTI4LCA4MSwgNzksIDgwLCA2NSwgMTI4LCA4MSwgNzksIDgwLCAxMjgsIAotICAgIDgxLCA3OSwgNzksIDEyOCwgODEsIDc5LCAyMDcsIDgxLCA3OSwgNzAsIDEyOCwgODEsIDc5LCAxOTgsIDgxLCA3OSwgNjUsIAotICAgIDEyOCwgODEsIDc5LCAxMjgsIDgxLCA3OCwgMTI4LCA4MSwgNzMsIDg4LCAxMjgsIDgxLCA3MywgODQsIDgzLCA2NSwgMTI4LCAKLSAgICA4MSwgNzMsIDg0LCAxMjgsIDgxLCA3MywgODAsIDEyOCwgODEsIDczLCA3MywgMTI4LCA4MSwgNzMsIDY5LCA4OCwgMTI4LCAKLSAgICA4MSwgNzMsIDY5LCA4NCwgMTI4LCA4MSwgNzMsIDY5LCA4MCwgMTI4LCA4MSwgNzMsIDY5LCAxMjgsIDgxLCA3MywgMTI4LCAKLSAgICA4MSwgNzIsIDg3LCA3MywgMTI4LCA4MSwgNzIsIDg3LCA2OSwgNjksIDEyOCwgODEsIDcyLCA4NywgNjksIDEyOCwgODEsIAotICAgIDcyLCA4NywgNjUsIDY1LCAxMjgsIDgxLCA3MiwgODcsIDY1LCAxMjgsIDgxLCA3MiwgODUsIDEyOCwgODEsIDcyLCA3OSwgCi0gICAgMTI4LCA4MSwgNzIsIDczLCAxMjgsIDgxLCA3MiwgNjksIDY5LCAxMjgsIDgxLCA3MiwgNjksIDEyOCwgODEsIDcyLCA2NSwgCi0gICAgNjUsIDEyOCwgODEsIDcyLCA2NSwgMTI4LCA4MSwgNzEsIDY1LCAxMjgsIDgxLCA2OSwgODQsIDY1LCA3OCwgNjUsIDEyOCwgCi0gICAgODEsIDY5LCA2OSwgMTI4LCA4MSwgNjksIDEyOCwgODEsIDY1LCA4NSwgMTI4LCA4MSwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgCi0gICAgODEsIDY1LCA4MiwgNzgsIDY5LCAyMTcsIDgxLCA2NSwgODIsIDEyOCwgODEsIDY1LCA4MSwgMTI4LCA4MSwgNjUsIDgwLCAKLSAgICA3MiwgMTI4LCA4MSwgNjUsIDc3LCA2NSwgODQsIDgzLCAxMjgsIDgxLCA2NSwgNzcsIDY1LCA4NCwgMjExLCA4MSwgNjUsIAotICAgIDc2LCAxOTMsIDgxLCA2NSwgNzMsIDgyLCA4NCwgNzIsIDgyLCA2NSwgMTI4LCA4MSwgNjUsIDczLCAxMjgsIDgxLCA2NSwgCi0gICAgNzAsIDEyOCwgODEsIDY1LCAxOTgsIDgxLCA2NSwgNjgsIDc3LCA2NSwgMTI4LCA4MSwgNjUsIDY1LCA3MywgMTI4LCA4MSwgCi0gICAgNjUsIDY1LCA3MCwgODUsIDEyOCwgODEsIDY1LCA2NSwgNzAsIDEyOCwgODEsIDQ4LCA0OCwgNTUsIDEyOCwgODEsIDQ4LCAKLSAgICA0OCwgNTQsIDEyOCwgODEsIDQ4LCA0OCwgNTMsIDEyOCwgODEsIDQ4LCA0OCwgNTIsIDEyOCwgODEsIDQ4LCA0OCwgNTEsIAotICAgIDEyOCwgODEsIDQ4LCA0OCwgNTAsIDEyOCwgODEsIDQ4LCA0OCwgNDksIDEyOCwgODAsIDkwLCAxMjgsIDgwLCA4OSwgODgsIAotICAgIDEyOCwgODAsIDg5LCA4NCwgMTI4LCA4MCwgODksIDgyLCA4OCwgMTI4LCA4MCwgODksIDgyLCAxMjgsIDgwLCA4OSwgODAsIAotICAgIDEyOCwgODAsIDg5LCAxMjgsIDgwLCA4NywgNzksIDg5LCAxMjgsIDgwLCA4NywgNzksIDc5LCAxMjgsIDgwLCA4NywgNzksIAotICAgIDEyOCwgODAsIDg3LCAyMDcsIDgwLCA4NywgNzMsIDczLCAxMjgsIDgwLCA4NywgNzMsIDEyOCwgODAsIDg3LCA2OSwgNjksIAotICAgIDEyOCwgODAsIDg3LCA2OSwgMTI4LCA4MCwgODcsIDY1LCA2NSwgMTI4LCA4MCwgODcsIDEyOCwgODAsIDg2LCAxMjgsIDgwLCAKLSAgICA4NSwgODgsIDEyOCwgODAsIDg1LCA4NSwgODQsIDEyOCwgODAsIDg1LCA4NSwgMTI4LCA4MCwgODUsIDg0LCA4MiwgNjksIAotICAgIDcwLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgODQsIDEyOCwgODAsIDg1LCAyMTIsIDgwLCA4NSwgCi0gICAgODMsIDcyLCA4MCwgNzMsIDc4LCAxMjgsIDgwLCA4NSwgODMsIDcyLCA4MCwgNzMsIDc1LCA2NSwgMTI4LCA4MCwgODUsIDgzLCAKLSAgICA3MiwgNzMsIDc4LCAxOTksIDgwLCA4NSwgODIsIDg4LCAxMjgsIDgwLCA4NSwgODIsIDgzLCA2OSwgMTI4LCA4MCwgODUsIAotICAgIDgyLCA4MCwgNzYsIDE5NywgODAsIDg1LCA4MiwgNzgsIDY1LCA3NywgNjUsIDEyOCwgODAsIDg1LCA4MiwgNzMsIDg0LCA4OSwgCi0gICAgMTI4LCA4MCwgODUsIDgyLCA3MywgNzAsIDg5LCAxMjgsIDgwLCA4NSwgODIsIDEyOCwgODAsIDg1LCA4MSwgMTI4LCA4MCwgCi0gICAgODUsIDgwLCAxMjgsIDgwLCA4NSwgNzksIDg4LCAxMjgsIDgwLCA4NSwgNzksIDgwLCAxMjgsIDgwLCA4NSwgNzksIDEyOCwgCi0gICAgODAsIDg1LCA3OCwgNzEsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDg1LCA3OCwgNzEsIDEyOCwgODAsIDg1LCA3OCwgNjcsIDg0LCAKLSAgICA4NSwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIAotICAgIDgwLCA4NSwgNzcsIDgwLCAxMjgsIDgwLCA4NSwgNzcsIDEyOCwgODAsIDg1LCA2OSwgMTI4LCA4MCwgODUsIDY2LCA3NiwgCi0gICAgNzMsIDE5NSwgODAsIDg1LCA2NSwgODEsIDEyOCwgODAsIDg1LCA2NSwgNjksIDEyOCwgODAsIDg1LCA1MCwgMTI4LCA4MCwgCi0gICAgODUsIDQ5LCAxMjgsIDgwLCA4NSwgMTI4LCA4MCwgODQsIDcyLCA2NSwgNzIsIDE5MywgODAsIDg0LCA2OSwgMTI4LCA4MCwgCi0gICAgODMsIDczLCA3NiwgMjAxLCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIAotICAgIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCAKLSAgICA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgMjA2LCA4MCwgODMsIDczLCA3MCwgNzMsIAotICAgIDgzLCA4NCwgNzksIDc2LCA4OSwgNzEsIDczLCA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDEyOCwgODAsIDgzLCAKKyAgICA4MywgNjksIDgyLCA3MywgNzAsIDEyOCwgODMsIDY5LCA4MSwgODUsIDY5LCA3OCwgODQsIDczLCA2NSwgNzYsIDEyOCwgODMsIAorICAgIDY5LCA4MSwgODUsIDY5LCA3OCwgNjcsIDE5NywgODMsIDY5LCA4MCwgODQsIDg1LCA4MCwgNzYsIDE5NywgODMsIDY5LCA4MCwgCisgICAgODQsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA4MywgNjksIDgwLCA2NSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDgzLCAKKyAgICA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgMjEwLCA4MywgNjksIDc4LCA4NCwgNzksIDEyOCwgODMsIDY5LCA3OCwgODQsIAorICAgIDczLCAxMjgsIDgzLCA2OSwgNzcsIDg1LCA3OCwgNjcsIDczLCAxOTMsIDgzLCA2OSwgNzcsIDc1LCA2NSwgODQsIDcyLCAKKyAgICAxMjgsIDgzLCA2OSwgNzcsIDc1LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA4NiwgNzksIDg3LCA2OSwgMjA0LCA4MywgNjksIAorICAgIDc3LCA3MywgODMsIDc5LCA3MCwgMjEyLCA4MywgNjksIDc3LCA3MywgODMsIDY5LCA4OCwgODQsIDczLCA3NiwgNjksIDEyOCwgCisgICAgODMsIDY5LCA3NywgNzMsIDc3LCA3MywgNzgsIDczLCA3NywgMTkzLCA4MywgNjksIDc3LCA3MywgNjgsIDczLCA4MiwgNjksIAorICAgIDY3LCAyMTIsIDgzLCA2OSwgNzcsIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODMsIDY5LCA3NywgNzMsIDY3LCA3OSwgCisgICAgNzYsIDc5LCAyMDYsIDgzLCA2OSwgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgODUsIDc2LCA2NSwgMjEwLCA4MywgNjksIDc3LCAKKyAgICA3MywgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDgzLCA2OSwgNzcsIDczLCA2NiwgODIsIDY5LCA4NiwgNzMsIDIxMSwgODMsIAorICAgIDY5LCA3NywgNzMsIDQ1LCA4NiwgNzksIDczLCA2NywgNjksIDE5NiwgODMsIDY5LCA3NiwgNzAsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTUsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU3LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNDksIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIAorICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIAorICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIAorICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTcsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDU1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTQsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDU1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTEsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDU1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNDgsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NiwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTQsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MywgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTQsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTQsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU1LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUyLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDQ5LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTcsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTQsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTEsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDgsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTMsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTAsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU0LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTAsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU0LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDUxLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIAorICAgIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MCwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCAKKyAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTAsIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUxLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUwLCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAorICAgIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUxLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDQ4LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA0OCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MiwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDQ4LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDQ4LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU3LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDU3LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIAorICAgIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTMsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTAsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDU2LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU0LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTAsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTYsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDU1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU0LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDU1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUxLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTUsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1NCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUxLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIAorICAgIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1MywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCAKKyAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDQ4LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgCisgICAgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MiwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTYsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MiwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA0OSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTYsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTMsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA0OSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU3LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTMsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNDksIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgCisgICAgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU3LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDQ4LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIAorICAgIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNDgsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTAsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNjksIDE5NiwgODMsIDY5LCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MywgNjksIDczLCA4MywgNzcsIDE5MywgODMsIDY5LCAKKyAgICA3MiwgMTI4LCA4MywgNjksIDcxLCA3OSwgNzYsIDEyOCwgODMsIDY5LCA3MSwgNzgsIDc5LCAxMjgsIDgzLCA2OSwgNzEsIAorICAgIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDgzLCA2OSwgNjksIDg2LCAxMjgsIDgzLCA2OSwgNjksIDc4LCA4NSwgMTI4LCA4MywgCisgICAgNjksIDY5LCA3OCwgMTI4LCA4MywgNjksIDY5LCAyMDYsIDgzLCA2OSwgNjksIDY4LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCAKKyAgICA4MywgNjksIDY5LCA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgMjA0LCA4MywgNjksIDY3LCA4NCwgNzksIDgyLCAxMjgsIAorICAgIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgODMsIDY5LCA2NywgCisgICAgODIsIDY5LCA4NCwgMTI4LCA4MywgNjksIDY3LCA3OSwgNzgsIDY4LCAxMjgsIDgzLCA2OSwgNjcsIDY1LCA3OCwgODQsIAorICAgIDEyOCwgODMsIDY5LCA2NiwgNjUsIDg0LCA2NiwgNjksIDczLCAyMTIsIDgzLCA2OSwgNjUsIDg0LCAxMjgsIDgzLCA2OSwgCisgICAgNjUsIDc2LCAxMjgsIDgzLCA2OSwgNjUsIDcxLCA4NSwgNzYsIDIwNCwgODMsIDY4LCA3OSwgNzgsIDE5OSwgODMsIDY4LCAKKyAgICAxMjgsIDgzLCA2NywgODcsIDY1LCAxMjgsIDgzLCA2NywgODIsIDg1LCA4MCwgNzYsIDY5LCAxMjgsIDgzLCA2NywgODIsIAorICAgIDc5LCA3NiwgNzYsIDEyOCwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIDc4LCAKKyAgICAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgMjA2LCA4MywgNjcsIDgyLCA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgODMsIAorICAgIDY3LCA3OSwgODIsIDgwLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NywgNzksIDgyLCA4MCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgCisgICAgNjcsIDc5LCA4MiwgNjksIDEyOCwgODMsIDY3LCA3MywgODMsIDgzLCA3OSwgODIsIDgzLCAxMjgsIDgzLCA2NywgNzMsIAorICAgIDEyOCwgODMsIDY3LCA3MiwgODcsIDY1LCAxMjgsIDgzLCA2NywgNzIsIDg3LCAxOTMsIDgzLCA2NywgNzIsIDgyLCA3OSwgCisgICAgNjksIDY4LCA2OSwgODIsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCA3NiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIAorICAgIDIwNCwgODMsIDY3LCA3MiwgNzksIDc2LCA2NSwgODIsIDEyOCwgODMsIDY3LCA3MiwgNjksIDc3LCAxOTMsIDgzLCA2NywgCisgICAgNjksIDgwLCA4NCwgNjksIDIxMCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgNjcsIDg1LCA4MywgMTI4LCA4MywgNjcsIDY1LCAKKyAgICA3OCwgNjgsIDczLCA2NywgODUsIDIxMSwgODMsIDY3LCA2NSwgMjA2LCA4MywgNjcsIDY1LCA3NiwgNjksIDgzLCAxMjgsIAorICAgIDgzLCA2NiwgODUsIDE5NCwgODMsIDY2LCA4MiwgODUsIDIwNCwgODMsIDY1LCA4OSwgNzMsIDgzLCAyMDEsIDgzLCA2NSwgCisgICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgzLCA2NSwgODksIDEyOCwgODMsIDY1LCA4OCwgNzksIDgwLCA3MiwgNzksIDc4LCAKKyAgICA2OSwgMTI4LCA4MywgNjUsIDg4LCA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDY1LCA4NywgNjUsIDc4LCAxMjgsIAorICAgIDgzLCA2NSwgODcsIDEyOCwgODMsIDY1LCA4NiwgNzksIDg1LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA2NSwgODUsIDgyLCA2NSwgCisgICAgODMsIDcyLCA4NCwgODIsIDE5MywgODMsIDY1LCA4NSwgNzMsIDc2LCAxMjgsIDgzLCA2NSwgODQsIDg1LCA4MiwgNzgsIAorICAgIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgNzgsIDc1LCA4NSwgODUsIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgCisgICAgNzgsIDEyOCwgODMsIDY1LCA4NCwgNjksIDc2LCA3NiwgNzMsIDg0LCA2OSwgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCAKKyAgICA3MywgODQsIDE5NywgODMsIDY1LCA4NCwgNjcsIDcyLCA2OSwgNzYsIDEyOCwgODMsIDY1LCA4NCwgNjUsIDc4LCA3MSwgNjUsIAorICAgIDEyOCwgODMsIDY1LCA4MywgNzIsIDEyOCwgODMsIDY1LCA4MywgNjUsIDc1LCAxMjgsIDgzLCA2NSwgODIsIDczLCAxMjgsIAorICAgIDgzLCA2NSwgODIsIDE5MywgODMsIDY1LCA4MiwgMTI4LCA4MywgNjUsIDgxLCAxMjgsIDgzLCA2NSwgODAsIDY1LCAxMjgsIAorICAgIDgzLCA2NSwgNzgsIDg5LCA3OSwgNzksIDcxLCAxOTMsIDgzLCA2NSwgNzgsIDg5LCA2NSwgNzUsIDE5MywgODMsIDY1LCA3OCwgCisgICAgODQsIDczLCA3MywgNzcsIDg1LCAxMjgsIDgzLCA2NSwgNzgsIDc4LCA4OSwgNjUsIDEyOCwgODMsIDY1LCA3OCwgNzEsIDY1LCAKKyAgICA1MCwgMTI4LCA4MywgNjUsIDc4LCA2OCwgNzIsIDIwMSwgODMsIDY1LCA3OCwgNjgsIDY1LCA3NiwgMTI4LCA4MywgNjUsIAorICAgIDc4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDc3LCA4OSwgNzksIDIwMywgODMsIDY1LCA3NywgCisgICAgODYsIDY1LCA4NCwgMTI4LCA4MywgNjUsIDc3LCA4MCwgNzMsIDEyOCwgODMsIDY1LCA3NywgODAsIDcyLCA2NSwgNzksIAorICAgIDEyOCwgODMsIDY1LCA3NywgNzUsIDY1LCAxMjgsIDgzLCA2NSwgNzcsIDY5LCA3NSwgNzIsIDEyOCwgODMsIDY1LCA3NywgCisgICAgNjksIDc1LCAyMDAsIDgzLCA2NSwgNzcsIDY2LCA2NSwgMTI4LCA4MywgNjUsIDc3LCA2NSwgODIsIDczLCA4NCwgNjUsIAorICAgIDIwNiwgODMsIDY1LCA3NywgMTI4LCA4MywgNjUsIDc2LCA4NCwgNzMsIDgyLCA2OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgCisgICAgNzMsIDc2LCA3NiwgNzksIDEyOCwgODMsIDY1LCA3NiwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNjUsIDc2LCA4NCwgMTI4LCAKKyAgICA4MywgNjUsIDc2LCAyMTIsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzYsIDc2LCA2NSwgNzIsIDc5LCAyMTMsIDgzLCA2NSwgNzYsIAorICAgIDc2LCAxOTMsIDgzLCA2NSwgNzYsIDY1LCAyMDUsIDgzLCA2NSwgNzYsIDY1LCAxMjgsIDgzLCA2NSwgNzYsIDQ1LCA2NSwgCisgICAgNzcsIDc3LCA3OSwgNzgsIDczLCA2NSwgNjcsIDEyOCwgODMsIDY1LCA3NiwgMTI4LCA4MywgNjUsIDc1LCA3OSwgODQsIAorICAgIDEyOCwgODMsIDY1LCA3NSwgNzIsIDE5MywgODMsIDY1LCA3NSwgNjksIDg1LCA2NSwgNjksIDEyOCwgODMsIDY1LCA3NSwgCisgICAgMTk3LCA4MywgNjUsIDc0LCA2OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzMsIDc2LCA2NiwgNzksIDY1LCA4NCwgMTI4LCAKKyAgICA4MywgNjUsIDczLCA3NiwgMTI4LCA4MywgNjUsIDczLCA3NSwgODUsIDgyLCA4NSwgMTI4LCA4MywgNjUsIDcyLCAxMjgsIAorICAgIDgzLCA2NSwgNzEsIDczLCA4NCwgODQsIDY1LCA4MiwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjUsIDcxLCA2NSwgMTI4LCA4MywgCisgICAgNjUsIDcxLCAxMjgsIDgzLCA2NSwgMTk5LCA4MywgNjUsIDcwLCA3MiwgNjUsIDEyOCwgODMsIDY1LCA3MCwgNjksIDg0LCAKKyAgICAyMTcsIDgzLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA4MywgNjUsIDY4LCA2OSwgMTI4LCA4MywgNjUsIDY4LCAxMjgsIDgzLCAKKyAgICA2NSwgMTk2LCA4MywgNjUsIDY3LCA4MiwgNzMsIDcwLCA3MywgNjcsIDczLCA2NSwgMjA0LCA4MywgNjUsIDY1LCA3MywgCisgICAgMTI4LCA4MywgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIDgzLCA2NSwgNDUsIDczLCAxMjgsIDgzLCA2NSwgNDUsIDUwLCAKKyAgICAxMjgsIDgzLCA0OCwgNTIsIDU0LCAxMjgsIDgzLCA0OCwgNTIsIDUzLCAxMjgsIDgzLCA0OCwgNTIsIDUyLCAxMjgsIDgzLCAKKyAgICA0OCwgNTIsIDUxLCAxMjgsIDgzLCA0OCwgNTIsIDUwLCAxMjgsIDgzLCA0OCwgNTIsIDQ5LCAxMjgsIDgzLCA0OCwgNTIsIAorICAgIDQ4LCAxMjgsIDgzLCA0OCwgNTEsIDU3LCAxMjgsIDgzLCA0OCwgNTEsIDU2LCAxMjgsIDgzLCA0OCwgNTEsIDU1LCAxMjgsIAorICAgIDgzLCA0OCwgNTEsIDU0LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCA2NSwgMTI4LCA4MywgNDgsIDUxLCA1MywgMTI4LCA4MywgCisgICAgNDgsIDUxLCA1MiwgMTI4LCA4MywgNDgsIDUxLCA1MSwgMTI4LCA4MywgNDgsIDUxLCA1MCwgMTI4LCA4MywgNDgsIDUxLCAKKyAgICA0OSwgMTI4LCA4MywgNDgsIDUxLCA0OCwgMTI4LCA4MywgNDgsIDUwLCA1NywgMTI4LCA4MywgNDgsIDUwLCA1NiwgMTI4LCAKKyAgICA4MywgNDgsIDUwLCA1NSwgMTI4LCA4MywgNDgsIDUwLCA1NCwgNjYsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIAorICAgIDgzLCA0OCwgNTAsIDU0LCAxMjgsIDgzLCA0OCwgNTAsIDUzLCAxMjgsIDgzLCA0OCwgNTAsIDUyLCAxMjgsIDgzLCA0OCwgCisgICAgNTAsIDUxLCAxMjgsIDgzLCA0OCwgNTAsIDUwLCAxMjgsIDgzLCA0OCwgNTAsIDQ5LCAxMjgsIDgzLCA0OCwgNTAsIDQ4LCAKKyAgICAxMjgsIDgzLCA0OCwgNDksIDU3LCAxMjgsIDgzLCA0OCwgNDksIDU2LCAxMjgsIDgzLCA0OCwgNDksIDU1LCA2NSwgMTI4LCAKKyAgICA4MywgNDgsIDQ5LCA1NSwgMTI4LCA4MywgNDgsIDQ5LCA1NCwgMTI4LCA4MywgNDgsIDQ5LCA1MywgMTI4LCA4MywgNDgsIAorICAgIDQ5LCA1MiwgNjYsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDgzLCA0OCwgNDksIDUyLCAxMjgsIDgzLCA0OCwgCisgICAgNDksIDUxLCAxMjgsIDgzLCA0OCwgNDksIDUwLCAxMjgsIDgzLCA0OCwgNDksIDQ5LCAxMjgsIDgzLCA0OCwgNDksIDQ4LCAKKyAgICAxMjgsIDgzLCA0OCwgNDgsIDU3LCAxMjgsIDgzLCA0OCwgNDgsIDU2LCAxMjgsIDgzLCA0OCwgNDgsIDU1LCAxMjgsIDgzLCAKKyAgICA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDQ4LCA1NCwgMTI4LCA4MywgNDgsIDQ4LCA1MywgMTI4LCA4MywgNDgsIAorICAgIDQ4LCA1MiwgMTI4LCA4MywgNDgsIDQ4LCA1MSwgMTI4LCA4MywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgCisgICAgNTAsIDEyOCwgODMsIDQ4LCA0OCwgNDksIDEyOCwgODMsIDQ1LCA4NywgMTI4LCA4MywgNDUsIDgzLCA3MiwgNjUsIDgwLCAKKyAgICA2OSwgMTk2LCA4MiwgODksIDg5LCAxMjgsIDgyLCA4OSwgODgsIDEyOCwgODIsIDg5LCA4NCwgMTI4LCA4MiwgODksIDgyLCAKKyAgICA4OCwgMTI4LCA4MiwgODksIDgyLCAxMjgsIDgyLCA4OSwgODAsIDEyOCwgODIsIDg3LCA3OSwgNzksIDEyOCwgODIsIDg3LCAKKyAgICA3OSwgMTI4LCA4MiwgODcsIDczLCA3MywgMTI4LCA4MiwgODcsIDczLCAxMjgsIDgyLCA4NywgNjksIDY5LCAxMjgsIDgyLCAKKyAgICA4NywgNjksIDEyOCwgODIsIDg3LCA2NSwgNzIsIDY1LCAxMjgsIDgyLCA4NywgNjUsIDY1LCAxMjgsIDgyLCA4NywgNjUsIAorICAgIDEyOCwgODIsIDg1LCA4OCwgMTI4LCA4MiwgODUsIDg1LCA2NiwgODUsIDgyLCA4NSwgMTI4LCA4MiwgODUsIDg1LCAxMjgsIAorICAgIDgyLCA4NSwgODQsIDEyOCwgODIsIDg1LCA4MywgNzMsIDEyOCwgODIsIDg1LCA4MiwgODgsIDEyOCwgODIsIDg1LCA4MiwgCisgICAgMTI4LCA4MiwgODUsIDgwLCA3MywgNzMsIDEyOCwgODIsIDg1LCA4MCwgNjksIDE5NywgODIsIDg1LCA4MCwgMTI4LCA4MiwgCisgICAgODUsIDc5LCA4OCwgMTI4LCA4MiwgODUsIDc5LCA4MCwgMTI4LCA4MiwgODUsIDc5LCAxMjgsIDgyLCA4NSwgNzgsIDc5LCAKKyAgICA4NSwgODQsIDEyOCwgODIsIDg1LCA3OCwgNzgsIDczLCA3OCwgMTk5LCA4MiwgODUsIDc4LCA3OCwgNjksIDgyLCAxMjgsIAorICAgIDgyLCA4NSwgNzgsIDEyOCwgODIsIDg1LCA3NywgMjAxLCA4MiwgODUsIDc3LCA2NSwgMjAxLCA4MiwgODUsIDc3LCAxMjgsIAorICAgIDgyLCA4NSwgMjA1LCA4MiwgODUsIDc2LCA2OSwgODIsIDEyOCwgODIsIDg1LCA3NiwgNjksIDQ1LCA2OCwgNjksIDc2LCA2NSwgCisgICAgODksIDY5LCA2OCwgMTI4LCA4MiwgODUsIDc2LCA2OSwgMTI4LCA4MiwgODUsIDc2LCA2NSwgNzMsIDEyOCwgODIsIDg1LCAKKyAgICA3NSwgNzUsIDY1LCA3NSwgNzIsIDY1LCAxMjgsIDgyLCA4NSwgNzMsIDgzLCAxMjgsIDgyLCA4NSwgNzEsIDY2LCAyMTcsIAorICAgIDgyLCA4NSwgNjgsIDczLCA3NywgNjksIDc4LCA4NCwgMTkzLCA4MiwgODUsIDY2LCA3NiwgMTk3LCA4MiwgODUsIDE5NCwgCisgICAgODIsIDg1LCA2NSwgMTI4LCA4MiwgODQsIDcyLCA2NSwgNzgsIDE5OSwgODIsIDg0LCA2NSwgNzEsIDgzLCAxMjgsIDgyLCAKKyAgICA4NCwgNjUsIDcxLCAyMTEsIDgyLCA4MiwgODksIDg4LCAxMjgsIDgyLCA4MiwgODksIDg0LCAxMjgsIDgyLCA4MiwgODksIAorICAgIDgyLCA4OCwgMTI4LCA4MiwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODIsIDg5LCA4MCwgMTI4LCA4MiwgODIsIDg1LCA4OCwgCisgICAgMTI4LCA4MiwgODIsIDg1LCA4NSwgMTI4LCA4MiwgODIsIDg1LCA4NCwgMTI4LCA4MiwgODIsIDg1LCA4MiwgODgsIDEyOCwgCisgICAgODIsIDgyLCA4NSwgODIsIDEyOCwgODIsIDgyLCA4NSwgODAsIDEyOCwgODIsIDgyLCA4NSwgNzksIDg4LCAxMjgsIDgyLCAKKyAgICA4MiwgODUsIDc5LCAxMjgsIDgyLCA4MiwgODUsIDEyOCwgODIsIDgyLCA4MiwgNjUsIDEyOCwgODIsIDgyLCA3OSwgODgsIAorICAgIDEyOCwgODIsIDgyLCA3OSwgODQsIDEyOCwgODIsIDgyLCA3OSwgODAsIDEyOCwgODIsIDgyLCA3OSwgNzksIDEyOCwgODIsIAorICAgIDgyLCA3OSwgMTI4LCA4MiwgODIsIDczLCA3MywgMTI4LCA4MiwgODIsIDczLCAxMjgsIDgyLCA4MiwgNjksIDg4LCAxMjgsIAorICAgIDgyLCA4MiwgNjksIDg0LCAxMjgsIDgyLCA4MiwgNjksIDgwLCAxMjgsIDgyLCA4MiwgNjksIDcyLCAxMjgsIDgyLCA4MiwgCisgICAgNjksIDIwMCwgODIsIDgyLCA2OSwgNjksIDEyOCwgODIsIDgyLCA2OSwgMTI4LCA4MiwgODIsIDY1LCA4OCwgMTI4LCA4MiwgCisgICAgODIsIDY1LCA4NSwgMTI4LCA4MiwgODIsIDY1LCA3MywgMTI4LCA4MiwgODIsIDY1LCA2NSwgMTI4LCA4MiwgNzksIDg3LCAKKyAgICA2NiwgNzksIDY1LCA4NCwgMTI4LCA4MiwgNzksIDg1LCA3OCwgNjgsIDY5LCAxOTYsIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIAorICAgIDg0LCA3MywgODAsIDgwLCA2OSwgMTk2LCA4MiwgNzksIDg0LCA4NSwgNzgsIDY4LCA2NSwgMTI4LCA4MiwgNzksIDg0LCA2NSwgCisgICAgODQsIDczLCA3OSwgNzgsIDgzLCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDg3LCA2NSwgNzYsIAorICAgIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4MiwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA3MCwgNzYsIDc5LCAKKyAgICA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNzksIAorICAgIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDgyLCA3OSwgODMsIDcyLCAKKyAgICAxMjgsIDgyLCA3OSwgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgyLCA3OSwgODMsIDY5LCAxMjgsIDgyLCA3OSwgNzksIAorICAgIDg0LCAxMjgsIDgyLCA3OSwgNzksIDgzLCA4NCwgNjksIDgyLCAxMjgsIDgyLCA3OSwgNzksIDc1LCAxMjgsIDgyLCA3OSwgCisgICAgNzksIDcwLCAxMjgsIDgyLCA3OSwgNzcsIDY1LCA3OCwgNzMsIDY1LCAyMDYsIDgyLCA3OSwgNzcsIDY1LCAyMDYsIDgyLCAKKyAgICA3OSwgNzcsIDEyOCwgODIsIDc5LCA3NiwgNzYsIDczLCA3OCwgMTk5LCA4MiwgNzksIDc2LCA3NiwgNjksIDIxMCwgODIsIAorICAgIDc5LCA3NiwgNzYsIDY5LCA2OCwgNDUsIDg1LCAyMDgsIDgyLCA3OSwgNzIsIDczLCA3OCwgNzEsIDg5LCAxOTMsIDgyLCA3OSwgCisgICAgNzEsIDEyOCwgODIsIDc5LCAxOTYsIDgyLCA3OSwgNjcsIDc1LCA2OSwgODQsIDEyOCwgODIsIDc5LCA2NywgMjAzLCA4MiwgCisgICAgNzksIDY3LCAxMjgsIDgyLCA3OSwgNjYsIDc5LCAyMTIsIDgyLCA3OSwgNjYsIDY1LCA4NCwgMTI4LCA4MiwgNzksIDY1LCAKKyAgICA4MywgODQsIDY5LCAxOTYsIDgyLCA3OSwgNjUsIDgyLCAxMjgsIDgyLCA3OSwgNjUsIDEyOCwgODIsIDc4LCA4OSwgNzMsIAorICAgIDc4LCAxOTksIDgyLCA3OCwgNzksIDc5LCA3OCwgMTI4LCA4MiwgNzgsIDc5LCA3OSwgMjA2LCA4MiwgNzgsIDY1LCAyMDUsIAorICAgIDgyLCA3NywgODQsIDEyOCwgODIsIDc2LCA3OSwgMTI4LCA4MiwgNzYsIDc3LCAxMjgsIDgyLCA3NiwgNzMsIDEyOCwgODIsIAorICAgIDc2LCA2OSwgMTI4LCA4MiwgNzQsIDY5LCAyMTEsIDgyLCA3NCwgNjksIDEyOCwgODIsIDc0LCAxOTcsIDgyLCA3MywgODYsIAorICAgIDY5LCA4MiwgMTI4LCA4MiwgNzMsIDg0LCA4NSwgNjUsIDc2LCAxMjgsIDgyLCA3MywgODQsIDg0LCA3OSwgODIsIDg1LCAKKyAgICAxMjgsIDgyLCA3MywgODQsIDgzLCA3MywgMTI4LCA4MiwgNzMsIDgzLCA3MywgNzgsIDE5OSwgODIsIDczLCA4MywgNzIsIAorICAgIDEyOCwgODIsIDczLCA4MiwgNjUsIDEyOCwgODIsIDczLCA4MCwgODAsIDc2LCAxOTcsIDgyLCA3MywgODAsIDEyOCwgODIsIAorICAgIDczLCA3OCwgNzEsIDIxMSwgODIsIDczLCA3OCwgNzEsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDc4LCA3MCwgNzksIDgyLCA5MCwgCisgICAgNjUsIDc4LCA2OCwgNzksIDEyOCwgODIsIDczLCAyMDYsIDgyLCA3MywgNzcsIDcxLCA2NiwgNjUsIDEyOCwgODIsIDczLCAKKyAgICA3NywgMTI4LCA4MiwgNzMsIDc1LCA4MiwgNzMsIDc1LCAxMjgsIDgyLCA3MywgNzEsIDg2LCA2OSwgNjgsIDczLCAxOTUsIAorICAgIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzIsIDY1LCAKKyAgICA3OCwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzksIDQ1LCA3NiwgNjksIDcwLCAyMTIsIDgyLCA3MywgNzEsIAorICAgIDcyLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDc5LCAKKyAgICA4NywgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDgyLCA3MywgNzEsIAorICAgIDcyLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDc2LCAKKyAgICA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgNjgsIDY5LCAxOTYsIAorICAgIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzAsIDY1LCAKKyAgICA2NywgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIAorICAgIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA3OSwgODIsIDczLCAKKyAgICA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCAKKyAgICA3NiwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDcyLCA3MywgCisgICAgNjksIDg1LCA4NCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIAorICAgIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCAKKyAgICA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgCisgICAgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIAorICAgIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIAorICAgIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgCisgICAgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIAorICAgIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzIsIDczLCAKKyAgICA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgCisgICAgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgCisgICAgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgCisgICAgNzUsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIAorICAgIDc1LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCAKKyAgICA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCAKKyAgICA3MywgNjksIDg1LCA3NiwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgMjA0LCA4MiwgNzMsIAorICAgIDY5LCA3NiwgMTI4LCA4MiwgNzMsIDY5LCA2OSwgMTI4LCA4MiwgNzMsIDY3LCA2OSwgNzcsIDEyOCwgODIsIDczLCA2NywgCisgICAgNjksIDEyOCwgODIsIDczLCA2NywgMTk3LCA4MiwgNzMsIDY2LCA2NiwgNzksIDc4LCAxMjgsIDgyLCA3MywgNjYsIDY2LCAKKyAgICA3OSwgMjA2LCA4MiwgNzMsIDY1LCAyMDQsIDgyLCA3MiwgNzksIDg0LCA3MywgMTk1LCA4MiwgNzIsIDc5LCAxMjgsIDgyLCAKKyAgICA3MiwgMjA3LCA4MiwgNzIsIDY1LCAxMjgsIDgyLCA3MiwgMTI4LCA4MiwgNzEsIDg5LCA3MywgNzgsIDcxLCA4MywgMTI4LCAKKyAgICA4MiwgNzEsIDg5LCA2NSwgNzgsIDEyOCwgODIsIDcxLCA4OSwgMTkzLCA4MiwgNjksIDg2LCA3OSwgNzYsIDg2LCA3MywgNzgsIAorICAgIDE5OSwgODIsIDY5LCA4NiwgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA4NiwgNzcsIDY1LCAKKyAgICAxMjgsIDgyLCA2OSwgODYsIDczLCA2NSwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDQ1LCA4MywgNjcsIAorICAgIDcyLCA4NywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgCisgICAgODMsIDY5LCAxOTYsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDE5NywgODIsIDY5LCA4NSwgODgsIDEyOCwgODIsIDY5LCAKKyAgICA4NSwgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDc4LCAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgMjA2LCA4MiwgNjksIAorICAgIDg0LCA4MiwgNzksIDcwLCA3NiwgNjksIDIxNiwgODIsIDY5LCA4NCwgODIsIDY5LCA2NSwgODQsIDEyOCwgODIsIDY5LCA4NCwgCisgICAgNzksIDgyLCA4NCwgMTI4LCA4MiwgNjksIDgzLCA4NSwgODAsIDczLCA3OCwgODUsIDgzLCAxMjgsIDgyLCA2OSwgODMsIDg0LCAKKyAgICA4MiwgNzksIDc5LCA3NywgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDY5LCAxOTYsIDgyLCA2OSwgODMsIAorICAgIDg0LCAxMjgsIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDgzLCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3OSwgODUsIDgyLCA2NywgCisgICAgNjksIDEyOCwgODIsIDY5LCA4MywgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA4MywgNzMsIDgzLCAKKyAgICA4NCwgNjUsIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgNzMsIDY4LCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIAorICAgIDgzLCAyMDAsIDgyLCA2OSwgODIsIDY5LCA3OCwgNzEsIDcxLCA2NSwgNzgsIDEyOCwgODIsIDY5LCA4MiwgNjksIDc1LCA2NSwgCisgICAgNzgsIDEyOCwgODIsIDY5LCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgMTI4LCA4MiwgNjksIDgwLCA3NiwgNjUsIDY3LCAKKyAgICA2OSwgNzcsIDY5LCA3OCwgMjEyLCA4MiwgNjksIDgwLCA3MiwgMTI4LCA4MiwgNjksIDgwLCA2OSwgODQsIDczLCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDY5LCAxOTYsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDEyOCwgCisgICAgODIsIDY5LCA4MCwgNjksIDY1LCAyMTIsIDgyLCA2OSwgODAsIDY1LCA4OSwgNjUsIDEyOCwgODIsIDY5LCA4MCwgNjUsIAorICAgIDEyOCwgODIsIDY5LCA4MCwgMTkzLCA4MiwgNjksIDc4LCA4NCwgNzksIDcxLCA2OSwgNzgsIDEyOCwgODIsIDY5LCA3OCwgCisgICAgMTI4LCA4MiwgNjksIDIwNiwgODIsIDY5LCA3NywgODUsIDEyOCwgODIsIDY5LCA3NywgNzMsIDc4LCA2OCwgNjksIDIxMCwgCisgICAgODIsIDY5LCA3NywgNjksIDY4LCA4OSwgMTI4LCA4MiwgNjksIDc2LCA3MywgNzEsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCAKKyAgICA3NiwgNzMsIDY5LCA4NiwgNjksIDE5NiwgODIsIDY5LCA3NiwgNjksIDY1LCA4MywgNjksIDEyOCwgODIsIDY5LCA3NiwgNjUsIAorICAgIDg4LCA2OSwgNjgsIDEyOCwgODIsIDY5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDc2LCA2NSwgCisgICAgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA3NiwgNjUsIDY1LCAxMjgsIDgyLCA2OSwgNzQsIDY1LCA3OCwgMTk5LCAKKyAgICA4MiwgNjksIDczLCAxOTYsIDgyLCA2OSwgNzMsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MiwgCisgICAgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUxLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCAKKyAgICA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgCisgICAgMjExLCA4MiwgNjksIDcxLCA3MywgODMsIDg0LCA2OSwgODIsIDY5LCAxOTYsIDgyLCA2OSwgNzEsIDczLCA3OSwgNzgsIDY1LCAKKyAgICAyMDQsIDgyLCA2OSwgNzEsIDczLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNzEsIDczLCA2NSwgMTI4LCA4MiwgNjksIAorICAgIDcwLCA3OSwgODIsIDc3LCA2OSwgMTk2LCA4MiwgNjksIDcwLCA2OSwgODIsIDY5LCA3OCwgNjcsIDE5NywgODIsIDY5LCA2OCwgCisgICAgODUsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNzMsIAorICAgIDc4LCAxOTksIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDY5LCAxOTYsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzYsIDczLCA3OCwgCisgICAgNjksIDY1LCAyMTAsIDgyLCA2OSwgNjcsIDg0LCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAyMTAsIDgyLCA2OSwgNjcsIDg0LCAKKyAgICA2NSwgNzgsIDcxLCA3NiwgNjksIDEyOCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDc2LCAxOTcsIDgyLCA2OSwgNjcsIAorICAgIDgyLCA2OSwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDY3LCA3OSwgODIsIDY4LCA3MywgNzgsIDE5OSwgCisgICAgODIsIDY5LCA2NywgNzksIDgyLCA2OCwgNjksIDgyLCAxMjgsIDgyLCA2OSwgNjcsIDc5LCA4MiwgNjgsIDEyOCwgODIsIDY5LCAKKyAgICA2NywgNzksIDgyLCAxOTYsIDgyLCA2OSwgNjcsIDczLCA4NCwgNjUsIDg0LCA3MywgODYsIDE5NywgODIsIDY5LCA2NywgNjksIAorICAgIDgwLCA4NCwgNzMsIDg2LCAxOTcsIDgyLCA2OSwgNjcsIDY5LCA3MywgODYsIDY5LCA4MiwgMTI4LCA4MiwgNjksIDY3LCA2OSwgCisgICAgNzMsIDg2LCA2OSwgMjEwLCA4MiwgNjksIDY1LCA3NiwgNzEsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNjUsIDc2LCAKKyAgICA3MSwgNjUsIDgyLCAxMjgsIDgyLCA2OSwgNjUsIDcyLCA3NywgODUsIDc1LCAxMjgsIDgyLCA2OSwgNjUsIDY3LCA3MiwgCisgICAgMTI4LCA4MiwgNjgsIDIwNywgODIsIDY4LCA2OSwgMjA0LCA4MiwgNjYsIDY1LCA4MywgMTkzLCA4MiwgNjUsIDg5LCA4MywgCisgICAgMTI4LCA4MiwgNjUsIDg5LCAyMTEsIDgyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgyLCA2NSwgODQsIDczLCAKKyAgICA3OSwgMTI4LCA4MiwgNjUsIDg0LCA3MiwgNjUsIDEyOCwgODIsIDY1LCA4NCwgNzIsIDE5MywgODIsIDY1LCA4NCwgNjUsIAorICAgIDEyOCwgODIsIDY1LCA4NCwgMTI4LCA4MiwgNjUsIDgzLCA4NywgNjUsIDY4LCA3MywgMTI4LCA4MiwgNjUsIDgzLCA3OSwgCisgICAgODUsIDIwNCwgODIsIDY1LCA4MywgNzIsIDY1LCAxMjgsIDgyLCA2NSwgODEsIDEyOCwgODIsIDY1LCA4MCwgNzMsIDgzLCAKKyAgICA3NywgNjUsIDEyOCwgODIsIDY1LCA3OCwgNzEsIDE5NywgODIsIDY1LCA3OCwgNjUsIDEyOCwgODIsIDY1LCA3OCwgMTI4LCAKKyAgICA4MiwgNjUsIDc3LCAyMTEsIDgyLCA2NSwgNzcsIDY2LCA2NSwgODQsIDEyOCwgODIsIDY1LCA3NSwgNzIsIDY1LCA3OCwgNzEsIAorICAgIDEyOCwgODIsIDY1LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY1LCA3OCwgODMsIDY1LCA4OSwgNjUsIDEyOCwgODIsIDY1LCA3MywgCisgICAgODMsIDczLCA3OCwgMTk5LCA4MiwgNjUsIDczLCA4MywgNjksIDE5NiwgODIsIDY1LCA3MywgNzgsIDY2LCA3OSwgODcsIAorICAgIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgODksIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgMjE3LCA4MiwgCisgICAgNjUsIDczLCA3NiwgMTI4LCA4MiwgNjUsIDczLCA2OCwgMjA3LCA4MiwgNjUsIDczLCA2OCwgNjUsIDEyOCwgODIsIDY1LCAKKyAgICA3MiwgNzcsIDY1LCA4NCwgODUsIDc2LCA3NiwgNjUsIDIwMCwgODIsIDY1LCA3MiwgMTI4LCA4MiwgNjUsIDcwLCA2OSwgCisgICAgMTI4LCA4MiwgNjUsIDY5LCA3NywgMTI4LCA4MiwgNjUsIDY4LCA3MywgNzksIDY1LCA2NywgODQsIDczLCA4NiwgMTk3LCAKKyAgICA4MiwgNjUsIDY4LCA3MywgNzksIDEyOCwgODIsIDY1LCA2OCwgNzMsIDIwNywgODIsIDY1LCA2OCwgMjAxLCA4MiwgNjUsIAorICAgIDY4LCAxMjgsIDgyLCA2NSwgMTk2LCA4MiwgNjUsIDY3LCA4MSwgODUsIDY5LCAyMTIsIDgyLCA2NSwgNjcsIDczLCA3OCwgCisgICAgNzEsIDEyOCwgODIsIDY1LCA2NywgNzMsIDc4LCAxOTksIDgyLCA2NSwgNjYsIDY2LCA3MywgODQsIDEyOCwgODIsIDY1LCAKKyAgICA2NiwgNjYsIDczLCAyMTIsIDgyLCA2NSwgNjYsIDEyOCwgODIsIDY1LCA2NSwgNzMsIDEyOCwgODIsIDY1LCA1MSwgMTI4LCAKKyAgICA4MiwgNjUsIDUwLCAxMjgsIDgyLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDU3LCAxMjgsIDgyLCA0OCwgNTAsIAorICAgIDU2LCAxMjgsIDgyLCA0OCwgNTAsIDU1LCAxMjgsIDgyLCA0OCwgNTAsIDU0LCAxMjgsIDgyLCA0OCwgNTAsIDUzLCAxMjgsIAorICAgIDgyLCA0OCwgNTAsIDUyLCAxMjgsIDgyLCA0OCwgNTAsIDUxLCAxMjgsIDgyLCA0OCwgNTAsIDUwLCAxMjgsIDgyLCA0OCwgCisgICAgNTAsIDQ5LCAxMjgsIDgyLCA0OCwgNTAsIDQ4LCAxMjgsIDgyLCA0OCwgNDksIDU3LCAxMjgsIDgyLCA0OCwgNDksIDU2LCAKKyAgICAxMjgsIDgyLCA0OCwgNDksIDU1LCAxMjgsIDgyLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4MiwgNDgsIDQ5LCA1NCwgMTI4LCAKKyAgICA4MiwgNDgsIDQ5LCA1MywgMTI4LCA4MiwgNDgsIDQ5LCA1MiwgMTI4LCA4MiwgNDgsIDQ5LCA1MSwgMTI4LCA4MiwgNDgsIAorICAgIDQ5LCA1MCwgMTI4LCA4MiwgNDgsIDQ5LCA0OSwgMTI4LCA4MiwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgODIsIDQ4LCA0OSwgCisgICAgNDgsIDEyOCwgODIsIDQ4LCA0OCwgNTcsIDEyOCwgODIsIDQ4LCA0OCwgNTYsIDEyOCwgODIsIDQ4LCA0OCwgNTUsIDEyOCwgCisgICAgODIsIDQ4LCA0OCwgNTQsIDEyOCwgODIsIDQ4LCA0OCwgNTMsIDEyOCwgODIsIDQ4LCA0OCwgNTIsIDEyOCwgODIsIDQ4LCAKKyAgICA0OCwgNTEsIDY2LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgMTI4LCA4MiwgNDgsIAorICAgIDQ4LCA1MCwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDEyOCwgODIsIDQ4LCA0OCwgNDksIDEyOCwgODIsIDQ1LCA2NywgCisgICAgODIsIDY5LCAxOTcsIDgxLCA4OSwgODgsIDEyOCwgODEsIDg5LCA4NSwgMTI4LCA4MSwgODksIDg0LCAxMjgsIDgxLCA4OSwgCisgICAgODIsIDg4LCAxMjgsIDgxLCA4OSwgODIsIDEyOCwgODEsIDg5LCA4MCwgMTI4LCA4MSwgODksIDc5LCAxMjgsIDgxLCA4OSwgCisgICAgNzMsIDEyOCwgODEsIDg5LCA2OSwgNjksIDEyOCwgODEsIDg5LCA2OSwgMTI4LCA4MSwgODksIDY1LCA2NSwgMTI4LCA4MSwgCisgICAgODksIDY1LCAxMjgsIDgxLCA4OSwgMTI4LCA4MSwgODcsIDczLCAxMjgsIDgxLCA4NywgNjksIDY5LCAxMjgsIDgxLCA4NywgCisgICAgNjksIDEyOCwgODEsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDg3LCA2NSwgMTI4LCA4MSwgODUsIDg4LCAxMjgsIDgxLCA4NSwgCisgICAgODYsIDEyOCwgODEsIDg1LCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgMTI4LCA4MSwgODUsIDg0LCAxMjgsIDgxLCA4NSwgCisgICAgODMsIDcyLCA4MywgNzIsIDY1LCA4OSwgNjUsIDEyOCwgODEsIDg1LCA4MiwgODgsIDEyOCwgODEsIDg1LCA4MiwgMTI4LCAKKyAgICA4MSwgODUsIDgwLCAxMjgsIDgxLCA4NSwgNzksIDg4LCAxMjgsIDgxLCA4NSwgNzksIDg0LCAxOTcsIDgxLCA4NSwgNzksIAorICAgIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDc5LCA4NCwgMTI4LCA4MSwgODUsIDc5LCA4MCwgMTI4LCA4MSwgCisgICAgODUsIDc5LCAxMjgsIDgxLCA4NSwgNzUsIDEyOCwgODEsIDg1LCA3MywgNzgsIDg0LCA2OSwgODMsIDgzLCA2OSwgNzgsIDY3LCAKKyAgICA2OSwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjgsIDczLCA2NywgNjksIDgzLCA3MywgNzcsIDE5MywgODEsIDg1LCA3MywgNzgsIAorICAgIDY3LCA4NSwgNzgsIDg4LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2NSwgODIsIDczLCA4NSwgMjExLCA4MSwgODUsIDczLCA3NiwgCisgICAgMjEyLCA4MSwgODUsIDczLCA3NiwgNzYsIDEyOCwgODEsIDg1LCA3MywgNjcsIDIwMywgODEsIDg1LCA3MywgMTI4LCA4MSwgCisgICAgODUsIDcwLCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgNjksIDE5NiwgODEsIDg1LCA2OSwgODMsIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNjksIDY5LCA3OCwgCisgICAgMTI4LCA4MSwgODUsIDY5LCA2OSwgMjA2LCA4MSwgODUsIDY5LCAxMjgsIDgxLCA4NSwgNjYsIDg1LCA4NCwgODMsIDEyOCwgCisgICAgODEsIDg1LCA2NSwgODQsIDY5LCA4MiwgNzgsIDczLCA3OSwgMjA2LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgODMsIAorICAgIDEyOCwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDIxMSwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDEyOCwgCisgICAgODEsIDg1LCA2NSwgNzgsIDg0LCA3MywgODQsIDIxNywgODEsIDg1LCA2NSwgNjgsIDgyLCA4NSwgODAsIDc2LCAxOTcsIDgxLCAKKyAgICA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA3OCwgMjEyLCA4MSwgODUsIAorICAgIDY1LCA2OCwgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjUsIDY4LCAxMjgsIDgxLCA4NSwgNjUsIDE5NiwgCisgICAgODEsIDg1LCA2NSwgMTI4LCA4MSwgODUsIDEyOCwgODEsIDIwOCwgODEsIDc5LCA4OCwgMTI4LCA4MSwgNzksIDg0LCAxMjgsIAorICAgIDgxLCA3OSwgODAsIDcyLCAxMjgsIDgxLCA3OSwgODAsIDY1LCAxMjgsIDgxLCA3OSwgODAsIDEyOCwgODEsIDc5LCA3OSwgCisgICAgMTI4LCA4MSwgNzksIDIwNywgODEsIDc5LCA3MCwgMTI4LCA4MSwgNzksIDE5OCwgODEsIDc5LCA2NSwgMTI4LCA4MSwgNzksIAorICAgIDEyOCwgODEsIDc4LCAxMjgsIDgxLCA3MywgODgsIDEyOCwgODEsIDczLCA4NCwgODMsIDY1LCAxMjgsIDgxLCA3MywgODQsIAorICAgIDEyOCwgODEsIDczLCA4MCwgMTI4LCA4MSwgNzMsIDczLCAxMjgsIDgxLCA3MywgNjksIDg4LCAxMjgsIDgxLCA3MywgNjksIAorICAgIDg0LCAxMjgsIDgxLCA3MywgNjksIDgwLCAxMjgsIDgxLCA3MywgNjksIDEyOCwgODEsIDczLCAxMjgsIDgxLCA3MiwgODcsIAorICAgIDczLCAxMjgsIDgxLCA3MiwgODcsIDY5LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgCisgICAgNjUsIDEyOCwgODEsIDcyLCA4NywgNjUsIDEyOCwgODEsIDcyLCA4NSwgMTI4LCA4MSwgNzIsIDc5LCA4MCwgNzIsIDEyOCwgCisgICAgODEsIDcyLCA3OSwgMTI4LCA4MSwgNzIsIDczLCAxMjgsIDgxLCA3MiwgNjksIDY5LCAxMjgsIDgxLCA3MiwgNjksIDEyOCwgCisgICAgODEsIDcyLCA2NSwgODUsIDEyOCwgODEsIDcyLCA2NSwgNjUsIDEyOCwgODEsIDcyLCA2NSwgMTI4LCA4MSwgNzEsIDY1LCAKKyAgICAxMjgsIDgxLCA2OSwgODQsIDY1LCA3OCwgNjUsIDEyOCwgODEsIDY5LCA2OSwgMTI4LCA4MSwgNjksIDEyOCwgODEsIDY1LCAKKyAgICA4OSwgMTI4LCA4MSwgNjUsIDg1LCAxMjgsIDgxLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA4MSwgNjUsIDgyLCA3OCwgNjksIAorICAgIDIxNywgODEsIDY1LCA4MiwgMTI4LCA4MSwgNjUsIDgxLCAxMjgsIDgxLCA2NSwgODAsIDcyLCAxMjgsIDgxLCA2NSwgNzcsIAorICAgIDY1LCA4NCwgODMsIDEyOCwgODEsIDY1LCA3NywgNjUsIDg0LCAyMTEsIDgxLCA2NSwgNzYsIDE5MywgODEsIDY1LCA3MywgCisgICAgODIsIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgxLCA2NSwgNzMsIDEyOCwgODEsIDY1LCA3MCwgMTI4LCA4MSwgNjUsIDE5OCwgCisgICAgODEsIDY1LCA2OCwgNzcsIDY1LCAxMjgsIDgxLCA2NSwgNjUsIDczLCAxMjgsIDgxLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCAKKyAgICA4MSwgNjUsIDY1LCA3MCwgMTI4LCA4MSwgNDgsIDQ4LCA1NSwgMTI4LCA4MSwgNDgsIDQ4LCA1NCwgMTI4LCA4MSwgNDgsIAorICAgIDQ4LCA1MywgMTI4LCA4MSwgNDgsIDQ4LCA1MiwgMTI4LCA4MSwgNDgsIDQ4LCA1MSwgMTI4LCA4MSwgNDgsIDQ4LCA1MCwgCisgICAgMTI4LCA4MSwgNDgsIDQ4LCA0OSwgMTI4LCA4MCwgOTAsIDEyOCwgODAsIDg5LCA4OCwgMTI4LCA4MCwgODksIDg0LCAxMjgsIAorICAgIDgwLCA4OSwgODIsIDg4LCAxMjgsIDgwLCA4OSwgODIsIDEyOCwgODAsIDg5LCA4MCwgMTI4LCA4MCwgODcsIDc5LCA4OSwgCisgICAgMTI4LCA4MCwgODcsIDc5LCA3OSwgMTI4LCA4MCwgODcsIDc5LCAxMjgsIDgwLCA4NywgMjA3LCA4MCwgODcsIDczLCA3MywgCisgICAgMTI4LCA4MCwgODcsIDczLCAxMjgsIDgwLCA4NywgNjksIDY5LCAxMjgsIDgwLCA4NywgNjksIDEyOCwgODAsIDg3LCA2NSwgCisgICAgNjUsIDEyOCwgODAsIDg3LCAxMjgsIDgwLCA4NiwgMTI4LCA4MCwgODUsIDg4LCAxMjgsIDgwLCA4NSwgODUsIDg0LCAxMjgsIAorICAgIDgwLCA4NSwgODUsIDEyOCwgODAsIDg1LCA4NCwgODIsIDY5LCA3MCwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgCisgICAgODUsIDg0LCAxMjgsIDgwLCA4NSwgMjEyLCA4MCwgODUsIDgzLCA3MiwgODAsIDczLCA3OCwgMTI4LCA4MCwgODUsIDgzLCAKKyAgICA3MiwgODAsIDczLCA3NSwgNjUsIDEyOCwgODAsIDg1LCA4MywgNzIsIDczLCA3OCwgMTk5LCA4MCwgODUsIDgyLCA4OCwgCisgICAgMTI4LCA4MCwgODUsIDgyLCA4MywgNjksIDEyOCwgODAsIDg1LCA4MiwgODAsIDc2LCAxOTcsIDgwLCA4NSwgODIsIDc4LCAKKyAgICA2NSwgNzcsIDY1LCAxMjgsIDgwLCA4NSwgODIsIDczLCA4NCwgODksIDEyOCwgODAsIDg1LCA4MiwgNzMsIDcwLCA4OSwgCisgICAgMTI4LCA4MCwgODUsIDgyLCAxMjgsIDgwLCA4NSwgODEsIDEyOCwgODAsIDg1LCA4MCwgMTI4LCA4MCwgODUsIDc5LCA4OCwgCisgICAgMTI4LCA4MCwgODUsIDc5LCA4MCwgMTI4LCA4MCwgODUsIDc5LCAxMjgsIDgwLCA4NSwgNzgsIDcxLCA2NSwgNjUsIDc3LCAKKyAgICAxMjgsIDgwLCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4MCwgODUsIDc4LCA2NywgODQsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MCwgODUsIDc3LCA4MCwgMTI4LCAKKyAgICA4MCwgODUsIDc3LCAxMjgsIDgwLCA4NSwgNzAsIDcwLCA2OSwgNjgsIDEyOCwgODAsIDg1LCA2OSwgMTI4LCA4MCwgODUsIAorICAgIDY3LCA3NSwgMTI4LCA4MCwgODUsIDY2LCA3NiwgNzMsIDE5NSwgODAsIDg1LCAxOTQsIDgwLCA4NSwgNjUsIDgxLCAxMjgsIAorICAgIDgwLCA4NSwgNjUsIDY5LCAxMjgsIDgwLCA4NSwgNTAsIDEyOCwgODAsIDg1LCA0OSwgMTI4LCA4MCwgODUsIDEyOCwgODAsIAorICAgIDg0LCA3MiwgNjUsIDcyLCAxOTMsIDgwLCA4NCwgNjksIDEyOCwgODAsIDgzLCA3MywgNzYsIDIwMSwgODAsIDgzLCA3MywgCisgICAgNzAsIDczLCA4MywgODQsIDc5LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIAorICAgIDgzLCA4NCwgNzksIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCAKKyAgICA3MCwgNzMsIDgzLCA4NCwgNzksIDIwNiwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA3NiwgODksIDcxLCA3MywgCisgICAgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCAxMjgsIDgwLCA4MywgNjUsIDc2LCA4NCwgNjksIDIxMCwgODAsIDgzLCAKICAgICAxMjgsIDgwLCA4MiwgNzksIDg2LCA2OSwgMTI4LCA4MCwgODIsIDc5LCA4NCwgNzksIDg2LCA2NSwgODIsIDg5LCAyMTEsIAogICAgIDgwLCA4MiwgNzksIDg0LCA3OSwgMjExLCA4MCwgODIsIDc5LCA4NCwgNjksIDY3LCA4NCwgNjksIDE5NiwgODAsIDgyLCA3OSwgCiAgICAgODMsIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIAogICAgIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MCwgODIsIDc5LCA4MCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgCiAgICAgODIsIDc5LCA4MCwgNjksIDgyLCA4NCwgMjE3LCA4MCwgODIsIDc5LCA4MCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODAsIDgyLCAKICAgICA3OSwgNzksIDcwLCAxMjgsIDgwLCA4MiwgNzksIDc2LCA3OSwgNzgsIDcxLCA2OSwgMTk2LCA4MCwgODIsIDc5LCA3NiwgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCAxOTcsIDgwLCA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCA3MywgODYsIDY5LCAxMjgsIDgwLCA4MiwgCi0gICAgNzksIDc0LCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4MiwgNzksIDcxLCA4MiwgNjksIDgzLCA4MywgMTI4LCAKLSAgICA4MCwgODIsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA4MiwgNzksIDcwLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MCwgODIsIAotICAgIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCAyMTIsIDgwLCA4MiwgNzMsIDg2LCA2NSwgCi0gICAgODQsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDg2LCA2NSwgODQsIDE5NywgODAsIDgyLCA3MywgODYsIDY1LCA2NywgMjE3LCAKLSAgICA4MCwgODIsIDczLCA4MywgNzIsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODQsIDgyLCAxOTMsIDgwLCA4MiwgNzMsIDc4LCA4NCwgCi0gICAgODMsIDEyOCwgODAsIDgyLCA3MywgNzgsIDg0LCAxMjgsIDgwLCA4MiwgNzMsIDc4LCAyMTIsIDgwLCA4MiwgNzMsIDc4LCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgMTk3LCA4MCwgODIsIDc5LCA3NCwgNjksIDY3LCA4NCwgNzksIDgyLCAxMjgsIDgwLCA4MiwgNzksIAorICAgIDc0LCA2OSwgNjcsIDg0LCA3MywgODYsIDY5LCAxMjgsIDgwLCA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDgwLCA4MiwgNzksIDcyLCA3MywgNjYsIDczLCA4NCwgNjksIDE5NiwgODAsIDgyLCA3OSwgNzEsIDgyLCA2OSwgODMsIAorICAgIDgzLCAxMjgsIDgwLCA4MiwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDgyLCA3OSwgNzAsIDc5LCA4NSwgNzgsIDY4LCAKKyAgICAxMjgsIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDIxMiwgODAsIAorICAgIDgyLCA3MywgODYsIDY1LCA4NCwgNjksIDEyOCwgODAsIDgyLCA3MywgODYsIDY1LCA4NCwgMTk3LCA4MCwgODIsIDczLCA4NiwgCisgICAgNjUsIDY3LCAyMTcsIDgwLCA4MiwgNzMsIDgzLCA3MiwgODQsIDcyLCA2NSwgNzcsIDY1LCA4NCwgODIsIDE5MywgODAsIDgyLCAKKyAgICA3MywgNzgsIDg0LCA4MywgMTI4LCA4MCwgODIsIDczLCA3OCwgODQsIDY5LCA4MiwgMTI4LCA4MCwgODIsIDczLCA3OCwgODQsIAorICAgIDY5LCAyMTAsIDgwLCA4MiwgNzMsIDc4LCA4NCwgMTI4LCA4MCwgODIsIDczLCA3OCwgMjEyLCA4MCwgODIsIDczLCA3OCwgCiAgICAgNjcsIDY5LCA4MywgODMsIDEyOCwgODAsIDgyLCA3MywgNzcsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDc3LCAxOTcsIDgwLCAKLSAgICA4MiwgNjksIDg2LCA3MywgNzksIDg1LCAyMTEsIDgwLCA4MiwgNjksIDgzLCA2OSwgODQsIDEyOCwgODAsIDgyLCA2OSwgODMsIAotICAgIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA4MCwgODIsIDY5LCA4MCwgNzksIDc4LCA2OCwgNjksIDgyLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MCwgODIsIAotICAgIDY5LCA3OCwgNzUsIDcyLCA2NSwgMTI4LCA4MCwgODIsIDY5LCA3MCwgNjUsIDY3LCAxOTcsIDgwLCA4MiwgNjksIDY3LCA3MywgCi0gICAgODAsIDczLCA4NCwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA3MywgNzgsIDE5OSwgODAsIDgyLCAKLSAgICA2OSwgNjcsIDY5LCA2OCwgNjksIDgzLCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAyMTEsIDgwLCA4MiwgNjksIAotICAgIDY3LCA2OSwgNjgsIDY5LCAxOTYsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgCi0gICAgNjgsIDE5NywgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgODAsIDczLCAKLSAgICAyMDEsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNzcsIDg1LCA3OSwgODksIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIAotICAgIDc5LCAyMTcsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDg1LCA3OSwgNzgsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgCi0gICAgODUsIDc5LCAyMDYsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCA3MywgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCAKLSAgICA2OSwgMjAxLCA4MCwgODIsIDY1LCA3NywgMTI4LCA4MCwgODIsIDY1LCAyMDUsIDgwLCA4MiwgMTI4LCA4MCwgODAsIDg2LCAKLSAgICAxMjgsIDgwLCA4MCwgNzcsIDEyOCwgODAsIDgwLCA2NSwgMTI4LCA4MCwgNzksIDg5LCAxMjgsIDgwLCA3OSwgODgsIDEyOCwgCi0gICAgODAsIDc5LCA4NywgNjksIDgyLCAyMTEsIDgwLCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCAKLSAgICA2OSwgMTk2LCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCAxMjgsIDgwLCA3OSwgODUsIDc4LCAxOTYsIDgwLCA3OSwgODUsIAotICAgIDc2LCA4NCwgODIsIDIxNywgODAsIDc5LCA4NSwgNjcsIDcyLCAxMjgsIDgwLCA3OSwgODQsIDY1LCA4NCwgNzksIDEyOCwgCi0gICAgODAsIDc5LCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA4MCwgNzksIDIxMiwgODAsIDc5LCA4MywgODQsIDgwLCA3OSwgODMsIDczLCAKLSAgICA4NCwgNzMsIDc5LCAyMDYsIDgwLCA3OSwgODMsIDg0LCA2NiwgNzksIDg4LCAxMjgsIDgwLCA3OSwgODMsIDg0LCA2NSwgCi0gICAgMjA0LCA4MCwgNzksIDgzLCA4NCwgMTI4LCA4MCwgNzksIDgzLCAyMTIsIDgwLCA3OSwgODMsIDgzLCA2OSwgODMsIDgzLCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDgwLCA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCA4NSwgODMsIDEyOCwgODAsIDc5LCA4MiwgODIsIAotICAgIDY5LCA2NywgODQsIDg1LCAyMTEsIDgwLCA3OSwgODAsIDgwLCA2OSwgODIsIDEyOCwgODAsIDc5LCA4MCwgMTI4LCA4MCwgCi0gICAgNzksIDIwOCwgODAsIDc5LCA3OSwgNjgsIDc2LCA2OSwgMTI4LCA4MCwgNzksIDc5LCAxMjgsIDgwLCA3OSwgNzgsIDY4LCAKLSAgICA3OSwgMTI4LCA4MCwgNzksIDIwNiwgODAsIDc5LCA3NywgNzcsIDY5LCA2OSwgMTI4LCA4MCwgNzksIDc3LCA3NywgNjksIAotICAgIDE5NywgODAsIDc5LCA3NiwgNzMsIDgzLCA3MiwgMTI4LCA4MCwgNzksIDc2LCA3MywgNjcsIDE5NywgODAsIDc5LCA3NiwgCi0gICAgMjAxLCA4MCwgNzksIDc2LCA2OSwgMTI4LCA4MCwgNzksIDc2LCAxOTcsIDgwLCA3OSwgNzUsIDgyLCA4OSwgODQsIDczLCAKLSAgICA2OSwgMTI4LCA4MCwgNzksIDc1LCA3OSwgNzQsIDczLCAxMjgsIDgwLCA3OSwgNzMsIDc4LCA4NCwgMjExLCA4MCwgNzksIAotICAgIDczLCA3OCwgODQsIDc5LCAxMjgsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDgyLCAxMjgsIDgwLCA3OSwgNzMsIDc4LCA4NCwgCi0gICAgNjksIDE5NiwgODAsIDc5LCA3MywgNzgsIDg0LCAxMjgsIDgwLCA3OSwgNzMsIDc4LCAyMTIsIDgwLCA3OSwgNjksIDg0LCAKLSAgICA4MiwgMjE3LCA4MCwgNzksIDY5LCA4NCwgNzMsIDE5NSwgODAsIDc5LCA2OCwgNjUsIDg0LCA4NSwgODMsIDEyOCwgODAsIAotICAgIDc5LCA2NSwgMTI4LCA4MCwgNzksIDEyOCwgODAsIDIwNywgODAsIDc4LCA2OSwgODUsIDc3LCA2NSwgODQsIDY1LCAxMjgsIAotICAgIDgwLCA3NiwgODUsIDg0LCA3OSwgMTI4LCA4MCwgNzYsIDg1LCA4MywgNDUsIDc3LCA3MywgNzgsIDg1LCAyMTEsIDgwLCA3NiwgCi0gICAgODUsIDgzLCAxMjgsIDgwLCA3NiwgODUsIDgyLCA2NSwgNzYsIDEyOCwgODAsIDc2LCA4NSwgNzcsIDY5LCAxOTYsIDgwLCAKLSAgICA3NiwgODUsIDc3LCAxMjgsIDgwLCA3NiwgODUsIDc1LCAxMjgsIDgwLCA3NiwgODUsIDcxLCAxMjgsIDgwLCA3NiwgODUsIAotICAgIDEyOCwgODAsIDc2LCA3OSwgODcsIDEyOCwgODAsIDc2LCA3OSwgODAsIDcyLCA4NSwgMTI4LCA4MCwgNzYsIDY5LCA4NCwgCi0gICAgNzIsIDgyLCA3OSwgNzgsIDEyOCwgODAsIDc2LCA2OCwgMTI4LCA4MCwgNzYsIDY1LCA4OSwgNzMsIDc4LCAxOTksIDgwLCAKKyAgICA4MiwgNjksIDg2LCA3MywgNzksIDg1LCAyMTEsIDgwLCA4MiwgNjksIDgzLCA4MywgNjksIDE5NiwgODAsIDgyLCA2OSwgODMsIAorICAgIDY5LCA4NCwgMTI4LCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCA2OSwgCisgICAgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgwLCA3OSwgNzgsIDY4LCA2OSwgODIsIAorICAgIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDc4LCA3NSwgNzIsIDY1LCAxMjgsIDgwLCA4MiwgNjksIDcwLCA2NSwgCisgICAgNjcsIDE5NywgODAsIDgyLCA2OSwgNjcsIDczLCA4MCwgNzMsIDg0LCA2NSwgODQsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCAKKyAgICA2OSwgNjgsIDczLCA3OCwgMTk5LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgODMsIDEyOCwgODAsIDgyLCA2OSwgNjcsIAorICAgIDY5LCA2OCwgNjksIDIxMSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDE5NiwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgCisgICAgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgMTk3LCA4MCwgODIsIDY1LCA4OSwgNjksIDIxMCwgODAsIDgyLCAKKyAgICA2NSwgNzcsIDQ1LCA4MCwgNzMsIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgODAsIDczLCAyMDEsIDgwLCA4MiwgNjUsIAorICAgIDc3LCA0NSwgNzcsIDg1LCA3OSwgODksIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIDc5LCAyMTcsIDgwLCA4MiwgCisgICAgNjUsIDc3LCA0NSwgNjYsIDg1LCA3OSwgNzgsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgODUsIDc5LCAyMDYsIDgwLCAKKyAgICA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCA3MywgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA2OSwgMjAxLCA4MCwgODIsIAorICAgIDY1LCA3NywgMTI4LCA4MCwgODIsIDY1LCAyMDUsIDgwLCA4MiwgMTI4LCA4MCwgODAsIDg2LCAxMjgsIDgwLCA4MCwgNzcsIAorICAgIDEyOCwgODAsIDgwLCA2NSwgMTI4LCA4MCwgNzksIDg5LCAxMjgsIDgwLCA3OSwgODgsIDEyOCwgODAsIDc5LCA4NywgNjksIAorICAgIDgyLCAyMTEsIDgwLCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MCwgCisgICAgNzksIDg3LCA2OCwgNjksIDgyLCAxMjgsIDgwLCA3OSwgODUsIDc4LCAxOTYsIDgwLCA3OSwgODUsIDc2LCA4NCwgODIsIAorICAgIDIxNywgODAsIDc5LCA4NSwgNjcsIDcyLCAxMjgsIDgwLCA3OSwgODQsIDY1LCA4NCwgNzksIDEyOCwgODAsIDc5LCA4NCwgCisgICAgNjUsIDY2LCA3NiwgMTk3LCA4MCwgNzksIDIxMiwgODAsIDc5LCA4MywgODQsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDgwLCA3OSwgODMsIDg0LCA2NiwgNzksIDg4LCAxMjgsIDgwLCA3OSwgODMsIDg0LCA2NSwgMjA0LCA4MCwgNzksIAorICAgIDgzLCA4NCwgMTI4LCA4MCwgNzksIDgzLCAyMTIsIDgwLCA3OSwgODMsIDgzLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgODMsIDEyOCwgODAsIDc5LCA4MiwgODQsIDY1LCA2NiwgNzYsIAorICAgIDE5NywgODAsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgCisgICAgODUsIDIxMSwgODAsIDc5LCA4MCwgODAsIDczLCA3OCwgMTk5LCA4MCwgNzksIDgwLCA4MCwgNjksIDgyLCAxMjgsIDgwLCAKKyAgICA3OSwgODAsIDY3LCA3OSwgODIsIDc4LCAxMjgsIDgwLCA3OSwgODAsIDEyOCwgODAsIDc5LCAyMDgsIDgwLCA3OSwgNzksIAorICAgIDY4LCA3NiwgNjksIDEyOCwgODAsIDc5LCA3OSwgMTI4LCA4MCwgNzksIDc4LCA2OCwgNzksIDEyOCwgODAsIDc5LCAyMDYsIAorICAgIDgwLCA3OSwgNzcsIDc3LCA2OSwgNjksIDEyOCwgODAsIDc5LCA3NywgNzcsIDY5LCAxOTcsIDgwLCA3OSwgNzYsIDczLCA4MywgCisgICAgNzIsIDEyOCwgODAsIDc5LCA3NiwgNzMsIDY3LCAxOTcsIDgwLCA3OSwgNzYsIDIwMSwgODAsIDc5LCA3NiwgNjksIDEyOCwgCisgICAgODAsIDc5LCA3NiwgMTk3LCA4MCwgNzksIDc1LCA4MiwgODksIDg0LCA3MywgNjksIDEyOCwgODAsIDc5LCA3NSwgNzksIDc0LCAKKyAgICA3MywgMTI4LCA4MCwgNzksIDczLCA3OCwgODQsIDIxMSwgODAsIDc5LCA3MywgNzgsIDg0LCA3OSwgMTI4LCA4MCwgNzksIAorICAgIDczLCA3OCwgODQsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDgwLCA3OSwgNzMsIDc4LCA4NCwgCisgICAgMTI4LCA4MCwgNzksIDczLCA3OCwgMjEyLCA4MCwgNzksIDY5LCA4NCwgODIsIDIxNywgODAsIDc5LCA2OSwgODQsIDczLCAKKyAgICAxOTUsIDgwLCA3OSwgNjgsIDY1LCA4NCwgODUsIDgzLCAxMjgsIDgwLCA3OSwgNjcsIDc1LCA2OSwgMjEyLCA4MCwgNzksIAorICAgIDY1LCAxMjgsIDgwLCA3OSwgMTI4LCA4MCwgMjA3LCA4MCwgNzgsIDY5LCA4NSwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODAsIAorICAgIDc2LCA4NSwgODQsIDc5LCAxMjgsIDgwLCA3NiwgODUsIDg0LCA2NSwgMTI4LCA4MCwgNzYsIDg1LCA4MywgNDUsIDc3LCA3MywgCisgICAgNzgsIDg1LCAyMTEsIDgwLCA3NiwgODUsIDgzLCAxMjgsIDgwLCA3NiwgODUsIDgyLCA2NSwgNzYsIDEyOCwgODAsIDc2LCAKKyAgICA4NSwgNzcsIDY5LCAxOTYsIDgwLCA3NiwgODUsIDc3LCAxMjgsIDgwLCA3NiwgODUsIDc1LCAxMjgsIDgwLCA3NiwgODUsIAorICAgIDcxLCAxMjgsIDgwLCA3NiwgODUsIDEyOCwgODAsIDc2LCA3OSwgODcsIDEyOCwgODAsIDc2LCA3OSwgODAsIDcyLCA4NSwgCisgICAgMTI4LCA4MCwgNzYsIDcyLCA2NSwgODUsIDEyOCwgODAsIDc2LCA2OSwgODQsIDcyLCA4MiwgNzksIDc4LCAxMjgsIDgwLCAKKyAgICA3NiwgNjgsIDEyOCwgODAsIDc2LCA2NSwgODksIDczLCA3OCwgMTk5LCA4MCwgNzYsIDY1LCA4NCwgNjksIDEyOCwgODAsIAogICAgIDc2LCA2NSwgODMsIDg0LCA3MywgNjcsIDgzLCAxMjgsIDgwLCA3NiwgNjUsIDc4LCA2OSwgMTI4LCA4MCwgNzYsIDY1LCA3OCwgCi0gICAgMTk3LCA4MCwgNzYsIDY1LCA3OCwgNjcsIDIwMywgODAsIDc2LCA2NSwgNzUsIDEyOCwgODAsIDc2LCA2NSwgNzEsIDczLCAKLSAgICA3OSwgMjExLCA4MCwgNzYsIDY1LCA2NywgNjksIDcyLCA3OSwgNzYsIDY4LCA2OSwgMjEwLCA4MCwgNzYsIDY1LCA2NywgCi0gICAgMTk3LCA4MCwgNzYsIDY1LCAxMjgsIDgwLCA3MywgOTAsIDkwLCA3MywgNjcsIDY1LCA4NCwgNzksIDEyOCwgODAsIDczLCAKLSAgICA5MCwgOTAsIDY1LCAxMjgsIDgwLCA3MywgODgsIDEyOCwgODAsIDczLCA4NywgODIsIDEyOCwgODAsIDczLCA4NCwgNjcsIAotICAgIDcyLCA3MCwgNzksIDgyLCA3NSwgMTI4LCA4MCwgNzMsIDg0LCA2NywgNzIsIDcwLCA3OSwgODIsIDIwMywgODAsIDczLCA4NCwgCi0gICAgMTI4LCA4MCwgNzMsIDgzLCA4NCwgNzksIDc2LCAxMjgsIDgwLCA3MywgODMsIDY5LCA3NiwgNjksIDcyLCAxMjgsIDgwLCAKLSAgICA3MywgODMsIDY3LCA2OSwgODMsIDEyOCwgODAsIDczLCA4MiwgNzMsIDcxLCAxMjgsIDgwLCA3MywgODIsIDczLCAxOTksIAotICAgIDgwLCA3MywgODIsIDczLCA2OSwgNjksIDc4LCAxMjgsIDgwLCA3MywgODAsIDczLCA3OCwgNzEsIDEyOCwgODAsIDczLCA4MCwgCi0gICAgNjUsIDY5LCA3NywgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIDgwLCA3MywgODAsIDY1LCA2OSwgNzcsIDY2LCA2NSwgMTI4LCAKLSAgICA4MCwgNzMsIDgwLCAxMjgsIDgwLCA3MywgNzgsIDg3LCA3MiwgNjksIDY5LCAyMDQsIDgwLCA3MywgNzgsIDY5LCA2NSwgODAsIAotICAgIDgwLCA3NiwgNjksIDEyOCwgODAsIDczLCA3OCwgMTk3LCA4MCwgNzMsIDc4LCA2NSwgODIsIDY2LCA3OSwgODIsIDY1LCA4MywgCi0gICAgMTI4LCA4MCwgNzMsIDc2LCA3NiwgMTI4LCA4MCwgNzMsIDc2LCAxOTcsIDgwLCA3MywgNzYsIDY3LCA4MiwgNzksIDIxNSwgCi0gICAgODAsIDczLCA3NSwgODUsIDgyLCA4NSwgMTI4LCA4MCwgNzMsIDc1LCA3OSwgMTI4LCA4MCwgNzMsIDcxLCAxMjgsIDgwLCAKLSAgICA3MywgMTk5LCA4MCwgNzMsIDY5LCA4OCwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIAotICAgIDg0LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAKLSAgICAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgCi0gICAgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIAotICAgIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAKLSAgICAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCi0gICAgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCAKLSAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCAKLSAgICA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODAsIDczLCA2OSwgODUsIAotICAgIDgwLCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc3LCA3MywgNjksIDg1LCAKLSAgICA3NywgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MCwgNzMsIAotICAgIDY5LCA4NSwgODAsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNjcsIDcyLCAKLSAgICA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDIwOCwgODAsIDczLCA2OSwgODQsIDEyOCwgODAsIAotICAgIDczLCA2OSwgODAsIDEyOCwgODAsIDczLCA2OSwgNjksIDg0LCAxMjgsIDgwLCA3MywgNjksIDY5LCA4MSwgMTI4LCA4MCwgCi0gICAgNzMsIDY5LCA2NywgNjksIDEyOCwgODAsIDczLCA2OSwgMTI4LCA4MCwgNzMsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDgwLCAKLSAgICA3MywgNjcsIDc1LCAxMjgsIDgwLCA3MywgNjUsIDgzLCA4NSwgODQsIDc5LCA4MiwgODUsIDEyOCwgODAsIDczLCA2NSwgODMsIAotICAgIDc3LCAxOTMsIDgwLCA3MywgNjUsIDc4LCA3OSwgMTI4LCA4MCwgMjAxLCA4MCwgNzIsIDg3LCA2NSwgMTI4LCA4MCwgNzIsIAotICAgIDg1LCA4NCwgNzIsIDY1LCA3OSwgMTI4LCA4MCwgNzIsIDg1LCAyMTAsIDgwLCA3MiwgODUsIDc4LCA3MSwgMTI4LCA4MCwgCi0gICAgNzIsIDgyLCA2NSwgODMsIDY5LCAxMjgsIDgwLCA3MiwgNzksIDc4LCA2OSwgODMsIDEyOCwgODAsIDcyLCA3OSwgNjksIDc4LCAKLSAgICA3MywgNjcsIDczLCA2NSwgMjA2LCA4MCwgNzIsIDc5LCA2NSwgMTI4LCA4MCwgNzIsIDc5LCAxMjgsIDgwLCA3MiwgMjA3LCAKLSAgICA4MCwgNzIsIDc4LCA2NSwgNjksIDIwMywgODAsIDcyLCA3MywgNzgsIDg0LCA3MiwgODUsIDEyOCwgODAsIDcyLCA3MywgNzYsIAotICAgIDc5LCA4MywgNzksIDgwLCA3MiwgNjksIDgyLCAyMTEsIDgwLCA3MiwgNzMsIDc2LCA3MywgODAsIDgwLCA3MywgNzgsIDE5NywgCi0gICAgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MCwgNzIsIAotICAgIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAKLSAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgNzIsIDczLCA2OSwgCi0gICAgODUsIDcyLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDIwMCwgODAsIDcyLCA3MywgMTI4LCA4MCwgNzIsIDIwMSwgCi0gICAgODAsIDcyLCA2OSwgNjksIDEyOCwgODAsIDcyLCA2OSwgMTI4LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTgsIDgwLCAKLSAgICA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NCwgODAsIDcyLCA2NSwgODIsIDg5LCA3OCwgNzEsIDY5LCA2NSwgMjA0LCA4MCwgNzIsIAotICAgIDY1LCA4MiwgMTI4LCA4MCwgNzIsIDY1LCA3OCwgMTI4LCA4MCwgNzIsIDY1LCA3NywgMTI4LCA4MCwgNzIsIDY1LCA3MywgCi0gICAgODMsIDg0LCA3OSwgMjExLCA4MCwgNzIsIDY1LCA3MSwgODMsIDQ1LCA4MCwgMTkzLCA4MCwgNzIsIDY1LCA2NSwgODIsIDc1LCAKLSAgICA2NSwgNjUsIDEyOCwgODAsIDcyLCA2NSwgNjUsIDEyOCwgODAsIDcyLCA2NSwgMTI4LCA4MCwgNzEsIDEyOCwgODAsIDcwLCAKLSAgICAxMjgsIDgwLCA2OSwgODUsIDg4LCAxMjgsIDgwLCA2OSwgODUsIDg0LCA2NSwgNjksIDEyOCwgODAsIDY5LCA4NSwgODQsIAotICAgIDEyOCwgODAsIDY5LCA4NCwgNjUsIDgzLCA4NCwgNzksIDc1LCA3OSwgODUsIDcwLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MCwgCi0gICAgNjksIDg0LCA2NSwgODMsIDg0LCA3MywgMTI4LCA4MCwgNjksIDg0LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA4MCwgNjksIDg0LCAKLSAgICA2NSwgNzYsIDc2LCA2OSwgMTk2LCA4MCwgNjksIDgzLCA3OSwgMTI4LCA4MCwgNjksIDgzLCAyMDcsIDgwLCA2OSwgODMsIAotICAgIDcyLCA1MCwgMTI4LCA4MCwgNjksIDgzLCA2OSwgODQsIDE5MywgODAsIDY5LCAyMTEsIDgwLCA2OSwgODIsIDg0LCA3MiwgCi0gICAgMjA3LCA4MCwgNjksIDgyLCA4MywgODAsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDEyOCwgODAsIDY5LCA4MiwgODMsIDc5LCAKLSAgICA3OCwgNjUsIDIwNCwgODAsIDY5LCA4MiwgODMsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDgyLCA4MywgNzksIDIwNiwgODAsIAotICAgIDY5LCA4MiwgODMsIDczLCA2NSwgMjA2LCA4MCwgNjksIDgyLCA4MywgNjksIDg2LCA2OSwgODIsIDczLCA3OCwgMTk5LCA4MCwgCi0gICAgNjksIDgyLCA4MCwgNjksIDc4LCA2OCwgNzMsIDY3LCA4NSwgNzYsIDY1LCA4MiwgMTI4LCA4MCwgNjksIDgyLCA4MCwgNjksIAotICAgIDc4LCA2OCwgNzMsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgwLCA2OSwgODIsIDc3LCA3MywgODQsIDg0LCA2OSwgMTk2LCA4MCwgCi0gICAgNjksIDgyLCA3NywgNjUsIDc4LCA2OSwgNzgsIDIxMiwgODAsIDY5LCA4MiwgNzMsIDgzLCA4MCwgNzksIDc3LCA2OSwgNzgsIAotICAgIDczLCAxMjgsIDgwLCA2OSwgODIsIDczLCA4MywgODAsIDc5LCA3NywgNjksIDc4LCAyMDEsIDgwLCA2OSwgODIsIDcwLCA3OSwgCi0gICAgODIsIDc3LCA3MywgNzgsIDE5OSwgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDg1LCAyMDUsIDgwLCA2OSwgODIsIDcwLCAKLSAgICA2OSwgNjcsIDg0LCA2NSwgMTI4LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgMTkzLCA4MCwgNjksIDgyLCA2NywgODUsIAotICAgIDgzLCA4MywgNzMsIDg2LCA2OSwgMTI4LCA4MCwgNjksIDgyLCA2NywgNjksIDc4LCAyMTIsIDgwLCA2OSwgODAsIDY5LCA4NCwgCi0gICAgMTI4LCA4MCwgNjksIDgwLCA2OSwgMjEyLCA4MCwgNjksIDc5LCA4MiwgODQsIDIwMCwgODAsIDY5LCA3OSwgODAsIDc2LCAKLSAgICA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgNzEsIAotICAgIDgyLCA2NSwgNzcsIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDgzLCA4NSwgCi0gICAgMTI4LCA4MCwgNjksIDc4LCA4MywgNzMsIDg2LCAxOTcsIDgwLCA2OSwgNzgsIDc4LCAyMTcsIDgwLCA2OSwgNzgsIDczLCAKLSAgICA3MiwgNzMsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDg1LCA3MywgNzgsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDc1LCA2NSwgNzYsIAotICAgIDEyOCwgODAsIDY5LCA3OCwgNjksIDg0LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDY3LCA3MywgCi0gICAgNzYsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCA4NCwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgODQsIDc5LCAKLSAgICAyMDYsIDgwLCA2OSwgNzMsIDg0LCA3MiwgMTI4LCA4MCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODAsIDY5LCA3MiwgNjksIAotICAgIDIwMCwgODAsIDY5LCA3MiwgMTI4LCA4MCwgNjksIDIwMCwgODAsIDY5LCA2OSwgOTAsIDczLCAxMjgsIDgwLCA2OSwgNjksIAotICAgIDgzLCA3MiwgNzMsIDEyOCwgODAsIDY5LCA2OSwgODAsIDEyOCwgODAsIDY5LCA2OSwgNzcsIDEyOCwgODAsIDY5LCA2OSwgCi0gICAgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA4MiwgNzMsIDY1LCA3OCwgODMsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCAKLSAgICA4NCwgODIsIDczLCA2NSwgNzgsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNjgsIAotICAgIDY5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA2OSwgNjgsIDY1LCAyMDQsIDgwLCA2OSwgNjUsIDY3LCA3MiwgMTI4LCA4MCwgCi0gICAgNjksIDY1LCA2NywgNjksIDEyOCwgODAsIDY5LCA2NSwgNjcsIDE5NywgODAsIDY4LCA3MywgMTI4LCA4MCwgNjgsIDcwLCAKLSAgICAxMjgsIDgwLCA2OCwgMTI4LCA4MCwgNjcsIDEyOCwgODAsIDY1LCA5MCwgNjksIDgyLCAxMjgsIDgwLCA2NSwgODksIDY5LCAKLSAgICA4MiwgNzksIDc1LCAxMjgsIDgwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgwLCA2NSwgODksIDEyOCwgODAsIAotICAgIDY1LCA4OCwgMTI4LCA4MCwgNjUsIDg3LCA3OCwgMTI4LCA4MCwgNjUsIDIxNSwgODAsIDY1LCA4NiwgNzMsIDg5LCA2NSwgCi0gICAgNzgsIDczLCAxMjgsIDgwLCA2NSwgODUsIDEyOCwgODAsIDY1LCA4NCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgODAsIDY1LCAKLSAgICA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgODAsIDY1LCA4NCwgMjAwLCA4MCwgNjUsIDg0LCA2NSwgNzUsIAotICAgIDEyOCwgODAsIDY1LCA4NCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgODQsIDEyOCwgODAsIDY1LCA4MywgODUsIDgxLCAxMjgsIAotICAgIDgwLCA2NSwgODMsIDgzLCA4MCwgNzksIDgyLCAyMTIsIDgwLCA2NSwgODMsIDgzLCA3MywgODYsIDY5LCA0NSwgODAsIDg1LCAKLSAgICA3NiwgNzYsIDQ1LCA4NSwgODAsIDQ1LCA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgODAsIDY1LCA4MywgODMsIDczLCA4NiwgCi0gICAgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDY4LCA3OSwgODcsIDc4LCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIAotICAgIDgwLCA2NSwgODMsIDcyLCA4NCwgNjUsIDEyOCwgODAsIDY1LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDgzLCA2OSwgCi0gICAgODEsIDEyOCwgODAsIDY1LCA4MywgNjUsIDc4LCA3MSwgNjUsIDIwNiwgODAsIDY1LCA4MiwgODUsIDc3LCAxMjgsIDgwLCAKLSAgICA2NSwgODIsIDg0LCAyMTcsIDgwLCA2NSwgODIsIDg0LCA3OCwgNjksIDgyLCA4MywgNzIsIDczLCAyMDgsIDgwLCA2NSwgODIsIAotICAgIDg0LCA3MywgNjUsIDc2LCA3NiwgODksIDQ1LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTk2LCA4MCwgNjUsIDgyLCAKLSAgICA4NCwgNzMsIDY1LCAyMDQsIDgwLCA2NSwgODIsIDg0LCA3MiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgODIsIDIxMiwgODAsIAotICAgIDY1LCA4MiwgNzMsIDY3LCA3MiwgNzksIDc4LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA4MywgODQsIDczLCA3MSwgNzcsIDY5LCAKLSAgICA3OCwgNzksIDIwNiwgODAsIDY1LCA4MiwgNjksIDgyLCA2OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIAotICAgIDY5LCA4MywgNzMsIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCAyMTEsIDgwLCA2NSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDgyLCA2NSwgODMsIDE5NywgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgNzcsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NiwgCi0gICAgNzYsIDY5LCAyMDQsIDgwLCA2NSwgODIsIDY1LCA3NSwgNzYsIDczLCA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MCwgNjUsIDgyLCAKLSAgICA2NSwgNzUsIDc2LCA3MywgODQsIDczLCA3NSwgMjAxLCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgCi0gICAgMTkzLCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3OSwgODMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgODAsIDY1LCA4MiwgNjUsIAotICAgIDEyOCwgODAsIDY1LCA4MiwgMTI4LCA4MCwgNjUsIDgwLCA4OSwgODIsIDg1LCA4MywgMTI4LCA4MCwgNjUsIDgwLCA2OSwgCi0gICAgODIsIDY3LCA3NiwgNzMsIDgwLCAxMjgsIDgwLCA2NSwgODAsIDY5LCAyMTAsIDgwLCA2NSwgODAsIDEyOCwgODAsIDY1LCAKLSAgICAyMDgsIDgwLCA2NSwgMjA3LCA4MCwgNjUsIDc4LCA4OSwgODUsIDc1LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNzMsIAotICAgIDc1LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjksIDY3LCA2OSwgNzUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3OCwgCi0gICAgNzEsIDcxLCA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc1LCA4MiwgNjUsIDEyOCwgODAsIDY1LCA3OCwgODQsIDczLCAKLSAgICAxMjgsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIAotICAgIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIAotICAgIDEyOCwgODAsIDY1LCA3OCwgNzksIDc4LCA3MSwgNzksIDc4LCA2NSwgNzgsIDEyOCwgODAsIDY1LCA3OCwgNzksIDc2LCA3OSwgCi0gICAgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4NywgNzMsIDgzLCA2NSwgNjgsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDgyLCAKLSAgICA2NSwgNzgsIDcxLCA3NSwgNjksIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3OSwgNzYsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIAotICAgIDc4LCA3MSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc2LCA2NSwgODksIDY1LCA4MiwgMTI4LCA4MCwgCi0gICAgNjUsIDc4LCA3MSwgNzUsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzUsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDc4LCAKLSAgICA3MSwgNzIsIDg1LCA3NiwgODUsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNjksIDg1LCA3NiwgNjksIAotICAgIDg1LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNjgsIDE5MywgODAsIDY1LCA3OCwgNjUsIDY5LCA3NiwgNjUsIDY5LCA3OCwgCi0gICAgNzEsIDEyOCwgODAsIDY1LCA3OCwgMTI4LCA4MCwgNjUsIDc3LCA4NSwgNzgsIDcxLCA3NSwgNjUsIDcyLCAxMjgsIDgwLCAKLSAgICA2NSwgNzcsIDg1LCA2OCwgODAsIDc5LCA2OCwgMTI4LCA4MCwgNjUsIDc3LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIAotICAgIDc3LCA4MCwgNzIsIDg5LCA3NiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgNzcsIDczLCA3OCwgNzEsIDc1LCA2NSwgNzYsIDEyOCwgCi0gICAgODAsIDY1LCA3NywgNjksIDgwLCA2OSwgODQsIDEyOCwgODAsIDY1LCA3NywgNjksIDc4LCA2OSwgNzgsIDcxLCAxMjgsIDgwLCAKLSAgICA2NSwgNzcsIDY1LCA2OCwgNjUsIDEyOCwgODAsIDY1LCA3NywgNjUsIDY1LCA2OSwgNzIsIDEyOCwgODAsIDY1LCA3NiwgODUsIAotICAgIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3OSwgNjcsIDcyLCA3NSwgNjUsIDEyOCwgODAsIDY1LCA3NiwgMjA1LCA4MCwgCi0gICAgNjUsIDc2LCA3NiwgNjUsIDg3LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3NiwgNjUsIDgzLCAxMjgsIDgwLCA2NSwgNzYsIDY5LCAKLSAgICA4NCwgODQsIDY5LCAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NSwgNzgsIDE5OSwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIAotICAgIDczLCA5MCwgNjksIDE5NiwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDIwNCwgODAsIDY1LCA3NSwgODAsIDY1LCAyMDMsIDgwLCA2NSwgNzMsIAotICAgIDg5LCA2NSwgNzgsIDc4LCA3OSwgNzMsIDEyOCwgODAsIDY1LCA3MywgODIsIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgwLCA2NSwgCi0gICAgNzMsIDgyLCA2OSwgMTk2LCA4MCwgNjUsIDczLCAxMjgsIDgwLCA2NSwgNzIsIDc2LCA2NSwgODYsIDIwMSwgODAsIDY1LCAKLSAgICA3MiwgMTI4LCA4MCwgNjUsIDcxLCA2OSwgODIsIDEyOCwgODAsIDY1LCA3MSwgMTk3LCA4MCwgNjUsIDY4LCA3NywgMTkzLCAKLSAgICA4MCwgNjUsIDY4LCA2OCwgNzMsIDc4LCAxOTksIDgwLCA2NSwgNjgsIDE5MywgODAsIDY1LCA2OCwgMTI4LCA4MCwgNjUsIAotICAgIDY3LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgNjUsIDcxLCA2OSwgMTI4LCA4MCwgNjUsIDY1LCA4NCwgCi0gICAgODUsIDEyOCwgODAsIDY1LCA2NSwgODMsIDY5LCA3OCwgODQsIDc5LCAxMjgsIDgwLCA2NSwgNjUsIDgyLCA2NSwgNjksIAotICAgIDEyOCwgODAsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDY1LCA2NSwgNzMsIDEyOCwgODAsIDY1LCA2NSwgNDUsIDgwLCA3MywgCi0gICAgNzYsIDc2LCA2NSwgMTI4LCA4MCwgNjUsIDY1LCAxMjgsIDgwLCA1MCwgMTI4LCA4MCwgNDgsIDQ5LCA0OSwgMTI4LCA4MCwgCi0gICAgNDgsIDQ5LCA0OCwgMTI4LCA4MCwgNDgsIDQ4LCA1NywgMTI4LCA4MCwgNDgsIDQ4LCA1NiwgMTI4LCA4MCwgNDgsIDQ4LCAKLSAgICA1NSwgMTI4LCA4MCwgNDgsIDQ4LCA1NCwgMTI4LCA4MCwgNDgsIDQ4LCA1MywgMTI4LCA4MCwgNDgsIDQ4LCA1MiwgMTI4LCAKLSAgICA4MCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODAsIDQ4LCA0OCwgNTEsIDEyOCwgODAsIDQ4LCA0OCwgNTAsIDEyOCwgODAsIAotICAgIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDgwLCA0OCwgNDgsIDQ5LCAxMjgsIDc5LCA4OSwgODIsIDY1LCA3OCwgNzMsIDgzLCA3NywgCi0gICAgMTkzLCA3OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc5LCA4OCwgNzMsIDY1LCAxMjgsIDc5LCA4OCwgNzMsIDE5MywgCi0gICAgNzksIDg4LCA2OSwgNzMsIDY1LCAyMDEsIDc5LCA4OCwgNjksIDczLCAxOTMsIDc5LCA4NiwgNjksIDgyLCA4MiwgNzMsIDY4LCAKLSAgICA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDc5LCA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIAotICAgIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODAsIDgwLCA3MywgCi0gICAgNzgsIDE5OSwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgNzMsIDY4LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA2NiwgNjUsIDgyLCAKLSAgICAxMjgsIDc5LCA4NiwgNjUsIDIwNCwgNzksIDg2LCAxMjgsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxOTYsIDc5LCAKLSAgICA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NSwgODQsIDY5LCAyMTAsIDc5LCA4NSwgODQsIDY2LCA3OSwgCi0gICAgMjE2LCA3OSwgODUsIDc4LCA3NSwgNzMsIDE5MywgNzksIDg1LCA3OCwgNjcsIDY5LCAxMjgsIDc5LCA4NSwgNzgsIDY3LCAKLSAgICAxOTcsIDc5LCA4NCwgODUsIDEyOCwgNzksIDg0LCA4NCwgNjUsIDg2LCAxOTMsIDc5LCA4NCwgODQsIDEyOCwgNzksIDg0LCAKLSAgICA3MiwgNjUsIDc2LCA2NSwgMjA2LCA3OSwgODQsIDcyLCA2NSwgNzYsIDEyOCwgNzksIDgzLCA3NywgNjUsIDc4LCA4OSwgCi0gICAgMTkzLCA3OSwgODMsIDY3LCAxMjgsIDc5LCA4MiwgODQsIDcyLCA3OSwgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNzksIDgyLCAKLSAgICA4NCwgNzIsIDc5LCA2OCwgNzksIDIxNiwgNzksIDgyLCA3OCwgNjUsIDg0LCAxOTcsIDc5LCA4MiwgNzgsIDY1LCA3NywgNjksIAotICAgIDc4LCA4NCwgMTI4LCA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgMjEyLCA3OSwgODIsIDc1LCA3MiwgNzksIDIwNiwgCi0gICAgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgMTI4LCA3OSwgODIsIDY5LCAKLSAgICA0NSwgNTAsIDEyOCwgNzksIDgyLCA2OCwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIDY4LCA2OSwgMjEwLCA3OSwgODIsIAotICAgIDY3LCA3MiwgNzMsIDY4LCAxMjgsIDc5LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA3OSwgODAsIDg0LCA3MywgNzksIDIwNiwgCi0gICAgNzksIDgwLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3OSwgODAsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA3OSwgODAsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgODAsIDgwLCA3OSwgODMsIDczLCA3OCwgCi0gICAgMTk5LCA3OSwgODAsIDgwLCA3OSwgODMsIDY5LCAxMjgsIDc5LCA4MCwgNzIsIDczLCA4NSwgNjcsIDcyLCA4NSwgODMsIAorICAgIDY3LCAyMDMsIDgwLCA3NiwgNjUsIDc1LCAxMjgsIDgwLCA3NiwgNjUsIDcxLCA3MywgNzksIDIxMSwgODAsIDc2LCA2NSwgCisgICAgNjcsIDY5LCA3MiwgNzksIDc2LCA2OCwgNjksIDIxMCwgODAsIDc2LCA2NSwgNjcsIDE5NywgODAsIDc2LCA2NSwgMTI4LCAKKyAgICA4MCwgNzMsIDkwLCA5MCwgNzMsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDgwLCA3MywgOTAsIDkwLCA2NSwgMTI4LCA4MCwgNzMsIAorICAgIDg4LCAxMjgsIDgwLCA3MywgODcsIDgyLCAxMjgsIDgwLCA3MywgODQsIDY3LCA3MiwgNzAsIDc5LCA4MiwgNzUsIDEyOCwgCisgICAgODAsIDczLCA4NCwgNjcsIDcyLCA3MCwgNzksIDgyLCAyMDMsIDgwLCA3MywgODQsIDEyOCwgODAsIDczLCA4MywgODQsIDc5LCAKKyAgICA3NiwgMTI4LCA4MCwgNzMsIDgzLCA2OSwgNzYsIDY5LCA3MiwgMTI4LCA4MCwgNzMsIDgzLCA2NywgNjksIDgzLCAxMjgsIAorICAgIDgwLCA3MywgODIsIDczLCA3MSwgMTI4LCA4MCwgNzMsIDgyLCA3MywgMTk5LCA4MCwgNzMsIDgyLCA3MywgNjksIDY5LCA3OCwgCisgICAgMTI4LCA4MCwgNzMsIDgyLCA2NSwgNjcsIDg5LCAxMjgsIDgwLCA3MywgODIsIDUwLCAxMjgsIDgwLCA3MywgODAsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgODAsIDczLCA4MCwgNjUsIDY5LCA3NywgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIDgwLCA3MywgODAsIAorICAgIDY1LCA2OSwgNzcsIDY2LCA2NSwgMTI4LCA4MCwgNzMsIDgwLCAxMjgsIDgwLCA3MywgNzgsIDg3LCA3MiwgNjksIDY5LCAKKyAgICAyMDQsIDgwLCA3MywgNzgsIDY5LCA2NSwgODAsIDgwLCA3NiwgNjksIDEyOCwgODAsIDczLCA3OCwgMTk3LCA4MCwgNzMsIAorICAgIDc4LCA2NSwgODIsIDY2LCA3OSwgODIsIDY1LCA4MywgMTI4LCA4MCwgNzMsIDc2LCA3NiwgMTI4LCA4MCwgNzMsIDc2LCAKKyAgICAxOTcsIDgwLCA3MywgNzYsIDY3LCA4MiwgNzksIDIxNSwgODAsIDczLCA3NSwgODUsIDgyLCA4NSwgMTI4LCA4MCwgNzMsIAorICAgIDc1LCA3OSwgMTI4LCA4MCwgNzMsIDcxLCAxMjgsIDgwLCA3MywgMTk5LCA4MCwgNzMsIDY5LCA4OCwgMTI4LCA4MCwgNzMsIAorICAgIDY5LCA4NSwgODAsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCAKKyAgICA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgCisgICAgNzksIDgzLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIAorICAgIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCAKKyAgICA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgCisgICAgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIAorICAgIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MiwgNzMsIDY5LCAKKyAgICA4NSwgNzYsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MiwgCisgICAgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NSwgCisgICAgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIAorICAgIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODAsIDczLCA2OSwgCisgICAgODUsIDIwOCwgODAsIDczLCA2OSwgODQsIDEyOCwgODAsIDczLCA2OSwgODAsIDEyOCwgODAsIDczLCA2OSwgNjksIDg0LCAKKyAgICAxMjgsIDgwLCA3MywgNjksIDY5LCA4MSwgMTI4LCA4MCwgNzMsIDY5LCA2NywgNjksIDEyOCwgODAsIDczLCA2OSwgMTI4LCAKKyAgICA4MCwgNzMsIDY3LCA4NCwgODUsIDgyLCA2OSwgMTI4LCA4MCwgNzMsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDgwLCA3MywgNjcsIAorICAgIDc1LCAxMjgsIDgwLCA3MywgNjUsIDgzLCA4NSwgODQsIDc5LCA4MiwgODUsIDEyOCwgODAsIDczLCA2NSwgODMsIDc3LCAKKyAgICAxOTMsIDgwLCA3MywgNjUsIDc4LCA3OSwgMTI4LCA4MCwgMjAxLCA4MCwgNzIsIDg3LCA2NSwgMTI4LCA4MCwgNzIsIDg1LCAKKyAgICA4NCwgNzIsIDY1LCA3OSwgMTI4LCA4MCwgNzIsIDg1LCAyMTAsIDgwLCA3MiwgODUsIDc4LCA3MSwgMTI4LCA4MCwgNzIsIAorICAgIDgyLCA2NSwgODMsIDY5LCAxMjgsIDgwLCA3MiwgNzksIDc4LCA2OSwgODMsIDEyOCwgODAsIDcyLCA3OSwgNjksIDc4LCA3MywgCisgICAgNjcsIDczLCA2NSwgMjA2LCA4MCwgNzIsIDc5LCA2NSwgMTI4LCA4MCwgNzIsIDc5LCAxMjgsIDgwLCA3MiwgMjA3LCA4MCwgCisgICAgNzIsIDc4LCA2NSwgNjksIDIwMywgODAsIDcyLCA3MywgNzgsIDg0LCA3MiwgODUsIDEyOCwgODAsIDcyLCA3MywgNzYsIDc5LCAKKyAgICA4MywgNzksIDgwLCA3MiwgNjksIDgyLCAyMTEsIDgwLCA3MiwgNzMsIDc2LCA3MywgODAsIDgwLCA3MywgNzgsIDE5NywgODAsIAorICAgIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MCwgNzIsIDczLCAKKyAgICA2OSwgODUsIDgwLCA3MiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgCisgICAgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgNzIsIDczLCA2OSwgODUsIAorICAgIDcyLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDIwMCwgODAsIDcyLCA3MywgMTI4LCA4MCwgNzIsIDIwMSwgODAsIAorICAgIDcyLCA2OSwgNjksIDEyOCwgODAsIDcyLCA2OSwgMTI4LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTgsIDgwLCA3MiwgCisgICAgNjUsIDgzLCA2OSwgNDUsIDE5NCwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTkzLCA4MCwgNzIsIDY1LCA4MiwgODksIDc4LCAKKyAgICA3MSwgNjksIDY1LCAyMDQsIDgwLCA3MiwgNjUsIDgyLCAxMjgsIDgwLCA3MiwgNjUsIDc4LCAxMjgsIDgwLCA3MiwgNjUsIAorICAgIDc3LCAxMjgsIDgwLCA3MiwgNjUsIDczLCA4MywgODQsIDc5LCAyMTEsIDgwLCA3MiwgNjUsIDcxLCA4MywgNDUsIDgwLCAKKyAgICAxOTMsIDgwLCA3MiwgNjUsIDY2LCAxMjgsIDgwLCA3MiwgNjUsIDY1LCA4MiwgNzUsIDY1LCA2NSwgMTI4LCA4MCwgNzIsIAorICAgIDY1LCA2NSwgMTI4LCA4MCwgNzIsIDY1LCAxMjgsIDgwLCA3MSwgMTI4LCA4MCwgNzAsIDEyOCwgODAsIDY5LCA4NSwgODgsIAorICAgIDEyOCwgODAsIDY5LCA4NSwgODQsIDY1LCA2OSwgMTI4LCA4MCwgNjksIDg1LCA4NCwgMTI4LCA4MCwgNjksIDg0LCA2NSwgCisgICAgODMsIDg0LCA3OSwgNzUsIDc5LCA4NSwgNzAsIDczLCA4MywgNzcsIDY1LCAxMjgsIDgwLCA2OSwgODQsIDY1LCA4MywgODQsIAorICAgIDczLCAxMjgsIDgwLCA2OSwgODQsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDgwLCA2OSwgODQsIDY1LCA3NiwgNzYsIDY5LCAKKyAgICAxOTYsIDgwLCA2OSwgODMsIDc5LCAxMjgsIDgwLCA2OSwgODMsIDIwNywgODAsIDY5LCA4MywgNzIsIDUwLCAxMjgsIDgwLCAKKyAgICA2OSwgODMsIDcyLCAxNzgsIDgwLCA2OSwgODMsIDY5LCA4NCwgMTkzLCA4MCwgNjksIDIxMSwgODAsIDY5LCA4MiwgODQsIAorICAgIDcyLCAyMDcsIDgwLCA2OSwgODIsIDgzLCA4MCwgNjksIDY3LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA4MCwgNjksIDgyLCA4MywgCisgICAgNzksIDc4LCA2NSwgMjA0LCA4MCwgNjksIDgyLCA4MywgNzksIDc4LCAxMjgsIDgwLCA2OSwgODIsIDgzLCA3OSwgMjA2LCAKKyAgICA4MCwgNjksIDgyLCA4MywgNzMsIDY1LCAyMDYsIDgwLCA2OSwgODIsIDgzLCA2OSwgODYsIDY5LCA4MiwgNzMsIDc4LCAxOTksIAorICAgIDgwLCA2OSwgODIsIDgwLCA2OSwgNzgsIDY4LCA3MywgNjcsIDg1LCA3NiwgNjUsIDgyLCAxMjgsIDgwLCA2OSwgODIsIDgwLCAKKyAgICA2OSwgNzgsIDY4LCA3MywgNjcsIDg1LCA3NiwgNjUsIDIxMCwgODAsIDY5LCA4MiwgNzgsIDczLCAyMDYsIDgwLCA2OSwgODIsIAorICAgIDc3LCA3MywgODQsIDg0LCA2OSwgMTk2LCA4MCwgNjksIDgyLCA3NywgNzMsIDE5NSwgODAsIDY5LCA4MiwgNzcsIDY1LCA3OCwgCisgICAgNjksIDc4LCAyMTIsIDgwLCA2OSwgODIsIDczLCA4MywgODAsIDc5LCA3NywgNjksIDc4LCA3MywgMTI4LCA4MCwgNjksIDgyLCAKKyAgICA3MywgODMsIDgwLCA3OSwgNzcsIDY5LCA3OCwgMjAxLCA4MCwgNjksIDgyLCA3MCwgNzksIDgyLCA3NywgNzMsIDc4LCAxOTksIAorICAgIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA4NSwgMjA1LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgNjUsIDEyOCwgCisgICAgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgODAsIDY5LCA4MiwgNjcsIDg1LCA4MywgODMsIDczLCA4NiwgNjksIAorICAgIDEyOCwgODAsIDY5LCA4MiwgNjcsIDY5LCA3OCwgMjEyLCA4MCwgNjksIDgwLCA4MCwgNjksIDgyLCAxMjgsIDgwLCA2OSwgCisgICAgODAsIDY5LCA4NCwgMTI4LCA4MCwgNjksIDgwLCA2OSwgMjEyLCA4MCwgNjksIDc5LCA4MiwgODQsIDIwMCwgODAsIDY5LCAKKyAgICA3OSwgODAsIDc2LCA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIAorICAgIDg0LCA2NSwgNzEsIDgyLCA2NSwgNzcsIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDgwLCA2OSwgCisgICAgNzgsIDgzLCA4NSwgMTI4LCA4MCwgNjksIDc4LCA4MywgNzMsIDg2LCAxOTcsIDgwLCA2OSwgNzgsIDc4LCAyMTcsIDgwLCAKKyAgICA2OSwgNzgsIDc4LCA2NSwgNzgsIDg0LCAxMjgsIDgwLCA2OSwgNzgsIDczLCA3MiwgNzMsIDEyOCwgODAsIDY5LCA3OCwgNzEsIAorICAgIDg1LCA3MywgNzgsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDc1LCA2NSwgNzYsIDEyOCwgODAsIDY5LCA3OCwgNjksIDg0LCA4MiwgCisgICAgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDY3LCA3MywgNzYsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCAKKyAgICA4NCwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgODQsIDc5LCAyMDYsIDgwLCA2OSwgNzMsIDg0LCA3MiwgCisgICAgMTI4LCA4MCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODAsIDY5LCA3MiwgNjksIDIwMCwgODAsIDY5LCA3MiwgMTI4LCA4MCwgCisgICAgNjksIDIwMCwgODAsIDY5LCA2OSwgOTAsIDczLCAxMjgsIDgwLCA2OSwgNjksIDgzLCA3MiwgNzMsIDEyOCwgODAsIDY5LCAKKyAgICA2OSwgODAsIDEyOCwgODAsIDY5LCA2OSwgNzcsIDEyOCwgODAsIDY5LCA2OSwgNzMsIDEyOCwgODAsIDY5LCA2OSwgMTI4LCAKKyAgICA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA4MiwgNzMsIDY1LCA3OCwgODMsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgCisgICAgODIsIDczLCA2NSwgNzgsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCAKKyAgICA4MywgODQsIDY1LCAyMDQsIDgwLCA2OSwgNjgsIDY1LCAyMDQsIDgwLCA2OSwgNjUsIDc1LCAyMTEsIDgwLCA2OSwgNjUsIAorICAgIDY3LCA3MiwgMTI4LCA4MCwgNjksIDY1LCA2NywgNjksIDEyOCwgODAsIDY5LCA2NSwgNjcsIDE5NywgODAsIDY4LCA3MywgCisgICAgMTI4LCA4MCwgNjgsIDcwLCAxMjgsIDgwLCA2OCwgMTI4LCA4MCwgNjcsIDEyOCwgODAsIDY1LCA5MCwgNjksIDgyLCAxMjgsIAorICAgIDgwLCA2NSwgODksIDY5LCA4MiwgNzksIDc1LCAxMjgsIDgwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgwLCA2NSwgCisgICAgODksIDEyOCwgODAsIDY1LCA4OCwgMTI4LCA4MCwgNjUsIDg3LCA3OCwgMTI4LCA4MCwgNjUsIDIxNSwgODAsIDY1LCA4NiwgCisgICAgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDgwLCA2NSwgODUsIDEyOCwgODAsIDY1LCAyMTMsIDgwLCA2NSwgODQsIDg0LCAKKyAgICA2OSwgODIsIDc4LCAxMjgsIDgwLCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIDg0LCAxMjgsIDgwLCA2NSwgODQsIAorICAgIDIwMCwgODAsIDY1LCA4NCwgNjUsIDc1LCAxMjgsIDgwLCA2NSwgODQsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDg0LCAxMjgsIAorICAgIDgwLCA2NSwgODMsIDg1LCA4MSwgMTI4LCA4MCwgNjUsIDgzLCA4MywgODAsIDc5LCA4MiwgMjEyLCA4MCwgNjUsIDgzLCA4MywgCisgICAgNzMsIDg2LCA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgODUsIDgwLCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIAorICAgIDgwLCA2NSwgODMsIDgzLCA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA2OCwgNzksIDg3LCA3OCwgNDUsIAorICAgIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA4MCwgNjUsIDgzLCA4MywgNjksIDc4LCA3MSwgNjksIDIxMCwgODAsIDY1LCA4MywgCisgICAgNzIsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgODMsIDY5LCA4MSwgMTI4LCAKKyAgICA4MCwgNjUsIDgzLCA2NSwgNzgsIDcxLCA2NSwgMjA2LCA4MCwgNjUsIDgyLCA4NSwgNzcsIDEyOCwgODAsIDY1LCA4MiwgODQsIAorICAgIDIxNywgODAsIDY1LCA4MiwgODQsIDc4LCA2OSwgODIsIDgzLCA3MiwgNzMsIDIwOCwgODAsIDY1LCA4MiwgODQsIDczLCA2NSwgCisgICAgNzYsIDc2LCA4OSwgNDUsIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDY5LCAxOTYsIDgwLCA2NSwgODIsIDg0LCA3MywgNjUsIAorICAgIDIwNCwgODAsIDY1LCA4MiwgODQsIDcyLCA3MywgNjUsIDIwNiwgODAsIDY1LCA4MiwgMjEyLCA4MCwgNjUsIDgyLCA3NSwgCisgICAgMTI4LCA4MCwgNjUsIDgyLCA3MywgNjcsIDcyLCA3OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDgzLCA4NCwgNzMsIDcxLCAKKyAgICA3NywgNjksIDc4LCA3OSwgMjA2LCA4MCwgNjUsIDgyLCA2OSwgODIsIDY5LCA3OCwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIAorICAgIDg0LCA3MiwgNjksIDgzLCA3MywgODMsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNzMsIDIxMSwgCisgICAgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNjksIDIxMSwgODAsIDY1LCA4MiwgNjUsIDgwLCA3MiwgODIsIAorICAgIDY1LCA4MywgMTk3LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDc5LCA3MSwgODIsIDY1LCA3NywgMTI4LCA4MCwgCisgICAgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDIwNCwgODAsIDY1LCAKKyAgICA4MiwgNjUsIDc1LCA3NiwgNzMsIDg0LCA3MywgNzUsIDczLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NSwgNzYsIDczLCA4NCwgCisgICAgNzMsIDc1LCAyMDEsIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCAxOTMsIDgwLCA2NSwgODIsIDY1LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDc5LCA4MywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDcyLCAxMjgsIAorICAgIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA4MCwgNjUsIDgyLCA2NSwgMTI4LCA4MCwgNjUsIDgyLCAKKyAgICAxMjgsIDgwLCA2NSwgODAsIDg5LCA4MiwgODUsIDgzLCAxMjgsIDgwLCA2NSwgODAsIDY5LCA4MiwgNjcsIDc2LCA3MywgODAsIAorICAgIDgzLCAxMjgsIDgwLCA2NSwgODAsIDY5LCA4MiwgNjcsIDc2LCA3MywgODAsIDEyOCwgODAsIDY1LCA4MCwgNjksIDIxMCwgCisgICAgODAsIDY1LCA4MCwgMTI4LCA4MCwgNjUsIDIwOCwgODAsIDY1LCAyMDcsIDgwLCA2NSwgNzgsIDg5LCA4NSwgNzUsIDg1LCAKKyAgICAxMjgsIDgwLCA2NSwgNzgsIDg5LCA3MywgNzUsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2OSwgNjcsIDY5LCA3NSwgCisgICAgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc4LCA3MSwgNzEsIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzUsIDgyLCAKKyAgICA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4NCwgNzMsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIAorICAgIDY5LCA4NSwgODAsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCAKKyAgICA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzgsIDcxLCA3OSwgNzgsIDY1LCA3OCwgCisgICAgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDg3LCA3MywgODMsIDY1LCAKKyAgICA2OCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODIsIDY1LCA3OCwgNzEsIDc1LCA2OSwgODAsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAorICAgIDc5LCA3NiwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCisgICAgNzYsIDY1LCA4OSwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NSwgNzksIDc4LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKKyAgICA3NSwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3MiwgODUsIDc2LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCisgICAgMTI4LCA4MCwgNjUsIDc4LCA2OSwgODUsIDc2LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA2OCwgMTkzLCAKKyAgICA4MCwgNjUsIDc4LCA2NSwgNjksIDc2LCA2NSwgNjksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCAxMjgsIDgwLCA2NSwgNzcsIAorICAgIDg1LCA3OCwgNzEsIDc1LCA2NSwgNzIsIDEyOCwgODAsIDY1LCA3NywgODUsIDY4LCA4MCwgNzksIDY4LCAxMjgsIDgwLCA2NSwgCisgICAgNzcsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgNzcsIDgwLCA3MiwgODksIDc2LCA3MywgNjUsIDIwNiwgODAsIDY1LCAKKyAgICA3NywgNzMsIDc4LCA3MSwgNzUsIDY1LCA3NiwgMTI4LCA4MCwgNjUsIDc3LCA2OSwgODAsIDY5LCA4NCwgMTI4LCA4MCwgNjUsIAorICAgIDc3LCA2OSwgNzgsIDY5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3NywgNjUsIDY4LCA2NSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgCisgICAgNjUsIDY5LCA3MiwgMTI4LCA4MCwgNjUsIDc2LCA4NSwgODQsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc5LCA2NywgNzIsIDc1LCAKKyAgICA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3NywgODksIDgyLCA2OSwgNzgsIDE5NywgODAsIDY1LCA3NiwgMjA1LCA4MCwgNjUsIAorICAgIDc2LCA3NiwgNjUsIDg3LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3NiwgNjUsIDgzLCAxMjgsIDgwLCA2NSwgNzYsIDY5LCA4NCwgCisgICAgODQsIDY5LCAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NSwgNzgsIDE5OSwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCAKKyAgICA5MCwgNjksIDE5NiwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAorICAgIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDIwNCwgODAsIDY1LCA3NSwgODAsIDY1LCAyMDMsIDgwLCA2NSwgNzMsIDg5LCA2NSwgCisgICAgNzgsIDc4LCA3OSwgNzMsIDEyOCwgODAsIDY1LCA3MywgODIsIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgwLCA2NSwgNzMsIDgyLCAKKyAgICA2OSwgMTk2LCA4MCwgNjUsIDczLCA3OCwgODQsIDY2LCA4MiwgODUsIDgzLCA3MiwgMTI4LCA4MCwgNjUsIDczLCAxMjgsIAorICAgIDgwLCA2NSwgNzIsIDc2LCA2NSwgODYsIDIwMSwgODAsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDcxLCA2OSwgODMsIDEyOCwgCisgICAgODAsIDY1LCA3MSwgNjksIDgyLCAxMjgsIDgwLCA2NSwgNzEsIDE5NywgODAsIDY1LCA2OCwgNzcsIDE5MywgODAsIDY1LCAKKyAgICA2OCwgNjgsIDc2LCAxOTcsIDgwLCA2NSwgNjgsIDY4LCA3MywgNzgsIDE5OSwgODAsIDY1LCA2OCwgMTkzLCA4MCwgNjUsIAorICAgIDY4LCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA2NSwgNzEsIDY5LCAKKyAgICAxMjgsIDgwLCA2NSwgNjUsIDg0LCA4NSwgMTI4LCA4MCwgNjUsIDY1LCA4MywgNjksIDc4LCA4NCwgNzksIDEyOCwgODAsIAorICAgIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDY1LCA3NywgMTI4LCA4MCwgNjUsIDY1LCA3MywgMTI4LCA4MCwgCisgICAgNjUsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDgwLCA2NSwgNjUsIDEyOCwgODAsIDUwLCAxMjgsIDgwLCAKKyAgICA0OCwgNDksIDQ5LCAxMjgsIDgwLCA0OCwgNDksIDQ4LCAxMjgsIDgwLCA0OCwgNDgsIDU3LCAxMjgsIDgwLCA0OCwgNDgsIAorICAgIDU2LCAxMjgsIDgwLCA0OCwgNDgsIDU1LCAxMjgsIDgwLCA0OCwgNDgsIDU0LCAxMjgsIDgwLCA0OCwgNDgsIDUzLCAxMjgsIAorICAgIDgwLCA0OCwgNDgsIDUyLCAxMjgsIDgwLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MCwgNDgsIDQ4LCA1MSwgMTI4LCA4MCwgCisgICAgNDgsIDQ4LCA1MCwgMTI4LCA4MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgODAsIDQ4LCA0OCwgNDksIDEyOCwgNzksIDg5LCAKKyAgICA4MiwgNjUsIDc4LCA3MywgODMsIDc3LCAxOTMsIDc5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDg4LCA3MywgNjUsIAorICAgIDEyOCwgNzksIDg4LCA3MywgMTkzLCA3OSwgODgsIDY5LCA3MywgNjUsIDIwMSwgNzksIDg4LCA2OSwgNzMsIDE5MywgNzksIAorICAgIDg2LCA2OSwgODIsIDgyLCA3MywgNjgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNzksIDc4LCAxOTksIDc5LCA4NiwgCisgICAgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4OSwgMTI4LCA3OSwgODYsIDY5LCAKKyAgICA4MiwgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4MCwgMTI4LCA3OSwgODYsIAorICAgIDY5LCA4MiwgNzYsIDY1LCA3MywgNjgsIDEyOCwgNzksIDg2LCA2OSwgODIsIDY2LCA2NSwgODIsIDEyOCwgNzksIDg2LCA2NSwgCisgICAgNzYsIDEyOCwgNzksIDg2LCA2NSwgMjA0LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgMTk2LCA3OSwgODUsIDg0LCAKKyAgICA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODUsIDg0LCA2OSwgMjEwLCA3OSwgODUsIDg0LCA2NiwgNzksIDIxNiwgNzksIAorICAgIDg1LCA3OCwgNzUsIDczLCAxOTMsIDc5LCA4NSwgNzgsIDY3LCA2OSwgMTI4LCA3OSwgODUsIDc4LCA2NywgMTk3LCA3OSwgCisgICAgODQsIDg1LCAxMjgsIDc5LCA4NCwgODQsIDY1LCA4NiwgMTkzLCA3OSwgODQsIDg0LCAxMjgsIDc5LCA4NCwgNzIsIDY5LCAKKyAgICA4MiwgMjExLCA3OSwgODQsIDcyLCA2OSwgMjEwLCA3OSwgODQsIDcyLCA2NSwgNzYsIDY1LCAyMDYsIDc5LCA4NCwgNzIsIAorICAgIDY1LCA3NiwgMTI4LCA3OSwgODMsIDc3LCA2NSwgNzgsIDg5LCAxOTMsIDc5LCA4MywgNjcsIDEyOCwgNzksIDgyLCA4NCwgCisgICAgNzIsIDc5LCA3MSwgNzksIDc4LCA2NSwgMjA0LCA3OSwgODIsIDg0LCA3MiwgNzksIDY4LCA3OSwgMjE2LCA3OSwgODIsIDc4LCAKKyAgICA2NSwgODQsIDE5NywgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDg0LCA4MywgMTI4LCA3OSwgODIsIDc4LCA2NSwgNzcsIAorICAgIDY5LCA3OCwgODQsIDEyOCwgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDIxMiwgNzksIDgyLCA3NSwgNzIsIDc5LCAKKyAgICAyMDYsIDc5LCA4MiwgNzMsIDcxLCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgNzMsIDcxLCA3MywgNzgsIDEyOCwgNzksIAorICAgIDgyLCA2OSwgNDUsIDUwLCAxMjgsIDc5LCA4MiwgNjgsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCA2OCwgNjksIDIxMCwgCisgICAgNzksIDgyLCA2NywgNzIsIDczLCA2OCwgMTI4LCA3OSwgODIsIDY1LCA3OCwgNzEsIDE5NywgNzksIDgwLCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDc5LCA4MCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzksIDgwLCA4MCwgODIsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNzksIDgwLCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDgwLCA4MCwgNzksIDgzLCA3MywgCisgICAgNzgsIDE5OSwgNzksIDgwLCA4MCwgNzksIDgzLCA2OSwgMTI4LCA3OSwgODAsIDcyLCA3MywgODUsIDY3LCA3MiwgODUsIDgzLCAKICAgICAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3OSwgCiAgICAgMjEwLCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzgsIDE5OSwgNzksIDgwLCA2OSwgNzgsIDczLCA3OCwgMTk5LCAKICAgICA3OSwgODAsIDY5LCA3OCwgNDUsIDgwLCAxMjgsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgCi0gICAgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCAKLSAgICA2NywgNzMsIDgyLCA2NywgODUsIDczLCA4NCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA3OSwgNzksIDkwLCA2OSwgCi0gICAgMTI4LCA3OSwgNzksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OSwgNzksIDg1LCAxMjgsIDc5LCA3OSwgNzcsIDg1LCAKLSAgICAxMjgsIDc5LCA3OSwgNjksIDEyOCwgNzksIDc5LCA2NiwgNzksIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgNzgsIAotICAgIDg1LCAxMjgsIDc5LCA3OCwgODMsIDg1LCAxMjgsIDc5LCA3OCwgNzgsIDEyOCwgNzksIDc4LCA3NSwgNjUsIDgyLCAxMjgsIAotICAgIDc5LCA3OCwgNjksIDgzLCA2OSwgNzYsIDcwLCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA4NywgNjUsIDIxNywgNzksIDc4LCA2OSwgCi0gICAgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzksIDc4LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzksIDc4LCAKLSAgICA2NywgNzksIDc3LCA3MywgNzgsIDE5OSwgNzksIDc4LCA2NSwgODAsIDEyOCwgNzksIDc3LCA3MywgODMsIDgzLCA3MywgNzksIAotICAgIDIwNiwgNzksIDc3LCA3MywgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzksIDc3LCA3MywgNjcsIDgyLCA3OSwgMjA2LCA3OSwgCi0gICAgNzcsIDY5LCA3MSwgNjUsIDEyOCwgNzksIDc3LCA2OSwgNzEsIDE5MywgNzksIDc3LCA2NSwgNzYsIDc5LCA3OCwgMTI4LCAKLSAgICA3OSwgNzYsIDczLCA4NiwgNjksIDEyOCwgNzksIDc2LCA3MywgNzEsIDc5LCAyMDYsIDc5LCA3NiwgNjgsIDEyOCwgNzksIAotICAgIDc1LCA4NCwgMjA3LCA3OSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNzksIDc1LCA2NSwgODIsIDE5MywgNzksIDc0LCA3MywgCi0gICAgNjYsIDg3LCA2NSwgMjE3LCA3OSwgNzQsIDY5LCA3OSwgNzgsIDEyOCwgNzksIDczLCA3NiwgMTI4LCA3OSwgNzIsIDc3LCAKLSAgICAxMjgsIDc5LCA3MiwgMjA1LCA3OSwgNzEsIDgyLCA2OSwgMTI4LCA3OSwgNzEsIDc5LCA3OCwgNjksIDc1LCAxMjgsIDc5LCAKLSAgICA3MSwgNzksIDc4LCA2OSwgMjAzLCA3OSwgNzEsIDcyLCA2NSwgMjA1LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCA4MiwgCi0gICAgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgMTk3LCA3OSwgNzAsIDcwLCAKLSAgICAxMjgsIDc5LCA2OSwgODksIDEyOCwgNzksIDY5LCA3NSwgMTI4LCA3OSwgNjgsIDY5LCA3OCwgMTI4LCA3OSwgNjgsIDE5NiwgCi0gICAgNzksIDY3LCA4NCwgNzksIDgwLCA4NSwgODMsIDEyOCwgNzksIDY3LCA4NCwgNzksIDY2LCA2OSwgODIsIDEyOCwgNzksIDY3LCAKLSAgICA4NCwgNjksIDIxMiwgNzksIDY3LCAyMTAsIDc5LCA2NywgNzYsIDc5LCA2NywgNzUsIDEyOCwgNzksIDY3LCA2NywgNzYsIAotICAgIDg1LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA3OSwgNjYsIDgzLCA4NCwgODIsIDg1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNzksIDY2LCA3OSwgNzYsIDIxMSwgNzksIDY2LCA3OSwgMjA0LCA3OSwgNjYsIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCAKLSAgICA3OSwgNjYsIDc2LCA3MywgODEsIDg1LCAxOTcsIDc5LCA2NiwgNzQsIDY5LCA2NywgMjEyLCA3OSwgNjYsIDY5LCA3NiwgODUsIAotICAgIDgzLCAxMjgsIDc5LCA2NiwgNjksIDc2LCA3OSwgODMsIDEyOCwgNzksIDY2LCAxMjgsIDc5LCA2NSwgODksIDEyOCwgNzksIAotICAgIDY1LCA3NSwgMTI4LCA3OSwgNjUsIDY2LCA3OSwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCAxOTMsIDc5LCA0OCwgCi0gICAgNTMsIDQ5LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCAKLSAgICA1MywgNDgsIDEyOCwgNzksIDQ4LCA1MiwgNTcsIDEyOCwgNzksIDQ4LCA1MiwgNTYsIDEyOCwgNzksIDQ4LCA1MiwgNTUsIAotICAgIDEyOCwgNzksIDQ4LCA1MiwgNTQsIDEyOCwgNzksIDQ4LCA1MiwgNTMsIDEyOCwgNzksIDQ4LCA1MiwgNTIsIDEyOCwgNzksIAotICAgIDQ4LCA1MiwgNTEsIDEyOCwgNzksIDQ4LCA1MiwgNTAsIDEyOCwgNzksIDQ4LCA1MiwgNDksIDEyOCwgNzksIDQ4LCA1MiwgCi0gICAgNDgsIDEyOCwgNzksIDQ4LCA1MSwgNTcsIDEyOCwgNzksIDQ4LCA1MSwgNTYsIDEyOCwgNzksIDQ4LCA1MSwgNTUsIDEyOCwgCi0gICAgNzksIDQ4LCA1MSwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NywgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjYsIAotICAgIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCAxMjgsIDc5LCA0OCwgNTEsIDUzLCAxMjgsIAotICAgIDc5LCA0OCwgNTEsIDUyLCAxMjgsIDc5LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA1MSwgMTI4LCA3OSwgCi0gICAgNDgsIDUxLCA1MCwgMTI4LCA3OSwgNDgsIDUxLCA0OSwgMTI4LCA3OSwgNDgsIDUxLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCAKLSAgICA1MSwgNDgsIDEyOCwgNzksIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDU3LCAxMjgsIDc5LCA0OCwgNTAsIAotICAgIDU2LCAxMjgsIDc5LCA0OCwgNTAsIDU1LCAxMjgsIDc5LCA0OCwgNTAsIDU0LCAxMjgsIDc5LCA0OCwgNTAsIDUzLCA2NSwgCi0gICAgMTI4LCA3OSwgNDgsIDUwLCA1MywgMTI4LCA3OSwgNDgsIDUwLCA1MiwgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIDEyOCwgCi0gICAgNzksIDQ4LCA1MCwgNTEsIDEyOCwgNzksIDQ4LCA1MCwgNTAsIDEyOCwgNzksIDQ4LCA1MCwgNDksIDEyOCwgNzksIDQ4LCAKLSAgICA1MCwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCAxMjgsIDc5LCA0OCwgNDksIDU3LCA2NSwgMTI4LCA3OSwgNDgsIAotICAgIDQ5LCA1NywgMTI4LCA3OSwgNDgsIDQ5LCA1NiwgMTI4LCA3OSwgNDgsIDQ5LCA1NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NCwgCi0gICAgMTI4LCA3OSwgNDgsIDQ5LCA1MywgMTI4LCA3OSwgNDgsIDQ5LCA1MiwgMTI4LCA3OSwgNDgsIDQ5LCA1MSwgMTI4LCA3OSwgCi0gICAgNDgsIDQ5LCA1MCwgMTI4LCA3OSwgNDgsIDQ5LCA0OSwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjcsIDEyOCwgNzksIDQ4LCAKLSAgICA0OSwgNDgsIDY2LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgMTI4LCA3OSwgNDgsIAotICAgIDQ4LCA1NywgMTI4LCA3OSwgNDgsIDQ4LCA1NiwgMTI4LCA3OSwgNDgsIDQ4LCA1NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgCi0gICAgNzAsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY5LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDQ4LCAKLSAgICA1NCwgNjcsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIAotICAgIDQ4LCA1NCwgMTI4LCA3OSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNTMsIDEyOCwgNzksIDQ4LCA0OCwgCi0gICAgNTIsIDEyOCwgNzksIDQ4LCA0OCwgNTEsIDEyOCwgNzksIDQ4LCA0OCwgNTAsIDEyOCwgNzksIDQ4LCA0OCwgNDksIDY1LCAKLSAgICAxMjgsIDc5LCA0OCwgNDgsIDQ5LCAxMjgsIDc5LCA0NSwgODksIDY5LCAxMjgsIDc5LCA0NSwgNzksIDQ1LCA3MywgMTI4LCAKLSAgICA3OSwgNDUsIDY5LCAxMjgsIDc4LCA5MCwgODksIDg4LCAxMjgsIDc4LCA5MCwgODksIDg0LCAxMjgsIDc4LCA5MCwgODksIAotICAgIDgyLCA4OCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgMTI4LCA3OCwgOTAsIDg5LCA4MCwgMTI4LCA3OCwgOTAsIDg5LCAxMjgsIAotICAgIDc4LCA5MCwgODUsIDg4LCAxMjgsIDc4LCA5MCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA4MiwgMTI4LCA3OCwgCi0gICAgOTAsIDg1LCA4MSwgMTI4LCA3OCwgOTAsIDg1LCA4MCwgMTI4LCA3OCwgOTAsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDkwLCAKLSAgICA4NSwgNzksIDEyOCwgNzgsIDkwLCA4NSwgMjA2LCA3OCwgOTAsIDg1LCAxMjgsIDc4LCA5MCwgNzksIDg4LCAxMjgsIDc4LCAKLSAgICA5MCwgNzksIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDg4LCAxMjgsIDc4LCA5MCwgNzMsIDg0LCAxMjgsIDc4LCA5MCwgNzMsIAotICAgIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgODAsIDEyOCwgNzgsIDkwLCA3MywgCi0gICAgNjksIDEyOCwgNzgsIDkwLCA3MywgMTI4LCA3OCwgOTAsIDY5LCA4OCwgMTI4LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgCi0gICAgNzgsIDkwLCA2OSwgMTI4LCA3OCwgOTAsIDY1LCA4OCwgMTI4LCA3OCwgOTAsIDY1LCA4NCwgMTI4LCA3OCwgOTAsIDY1LCAKLSAgICA4MSwgMTI4LCA3OCwgOTAsIDY1LCA4MCwgMTI4LCA3OCwgOTAsIDY1LCAxMjgsIDc4LCA5MCwgMTkzLCA3OCwgODksIDg3LCAKLSAgICA2NSwgMTI4LCA3OCwgODksIDg1LCA4OCwgMTI4LCA3OCwgODksIDg1LCA4NSwgMTI4LCA3OCwgODksIDg1LCA4NCwgMTI4LCAKLSAgICA3OCwgODksIDg1LCA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgODgsIDEyOCwgNzgsIDg5LCA4NSwgNzksIDgwLCAxMjgsIAotICAgIDc4LCA4OSwgODUsIDc5LCAxMjgsIDc4LCA4OSwgODUsIDY5LCAxMjgsIDc4LCA4OSwgODUsIDEyOCwgNzgsIDg5LCA3OSwgCi0gICAgODgsIDEyOCwgNzgsIDg5LCA3OSwgODQsIDEyOCwgNzgsIDg5LCA3OSwgODAsIDEyOCwgNzgsIDg5LCA3OSwgNzksIDEyOCwgCisgICAgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3OSwgMTI4LCA3OSwgODAsIDY5LCA3OCwgNDUsIDIwNywgNzksIDgwLCAKKyAgICA2OSwgNzgsIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA2NywgNzMsIDgyLCA2NywgCisgICAgODUsIDczLCA4NCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA3OSwgODAsIDY5LCA3OCwgMTI4LCA3OSwgNzksIDkwLCAKKyAgICA2OSwgMTI4LCA3OSwgNzksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OSwgNzksIDg1LCAxMjgsIDc5LCA3OSwgNzcsIAorICAgIDg1LCAxMjgsIDc5LCA3OSwgNzIsIDEyOCwgNzksIDc5LCA2OSwgMTI4LCA3OSwgNzksIDY2LCA3OSwgNzksIDcwLCA3MywgCisgICAgNzYsIDczLCAxMjgsIDc5LCA3OCwgODUsIDEyOCwgNzksIDc4LCA4MywgODUsIDEyOCwgNzksIDc4LCA3OCwgMTI4LCA3OSwgCisgICAgNzgsIDc1LCA2NSwgODIsIDEyOCwgNzksIDc4LCA2OSwgODMsIDY5LCA3NiwgNzAsIDEyOCwgNzksIDc4LCA2OSwgNDUsIDg3LCAKKyAgICA2NSwgMjE3LCA3OSwgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgNzYsIAorICAgIDczLCA3OCwgMTk3LCA3OSwgNzgsIDY3LCA3OSwgNzcsIDczLCA3OCwgMTk5LCA3OSwgNzgsIDY1LCA4MCwgMTI4LCA3OSwgCisgICAgNzcsIDczLCA4MywgODMsIDczLCA3OSwgMjA2LCA3OSwgNzcsIDczLCA2NywgODIsIDc5LCA3OCwgMTI4LCA3OSwgNzcsIDczLCAKKyAgICA2NywgODIsIDc5LCAyMDYsIDc5LCA3NywgNjksIDcxLCA2NSwgMTI4LCA3OSwgNzcsIDY5LCA3MSwgMTkzLCA3OSwgNzcsIAorICAgIDY1LCA3NiwgNzksIDc4LCAxMjgsIDc5LCA3NiwgNzMsIDg2LCA2OSwgMTI4LCA3OSwgNzYsIDczLCA3MSwgNzksIDIwNiwgCisgICAgNzksIDc2LCA2OCwgMTI4LCA3OSwgNzUsIDg0LCAyMDcsIDc5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3OSwgNzUsIDY1LCAKKyAgICA4MiwgMTkzLCA3OSwgNzQsIDczLCA2NiwgODcsIDY1LCAyMTcsIDc5LCA3NCwgNjksIDc5LCA3OCwgMTI4LCA3OSwgNzMsIAorICAgIDc2LCAxMjgsIDc5LCA3MywgMjA0LCA3OSwgNzIsIDc3LCAxMjgsIDc5LCA3MiwgMjA1LCA3OSwgNzEsIDgyLCA2OSwgMTI4LCAKKyAgICA3OSwgNzEsIDc5LCA3OCwgNjksIDc1LCAxMjgsIDc5LCA3MSwgNzksIDc4LCA2OSwgMjAzLCA3OSwgNzEsIDcyLCA2NSwgCisgICAgMjA1LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCA4MiwgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCAxMjgsIDc5LCAKKyAgICA3MCwgNzAsIDczLCA2NywgMTk3LCA3OSwgNzAsIDcwLCAxMjgsIDc5LCA2OSwgODksIDEyOCwgNzksIDY5LCA3NSwgMTI4LCAKKyAgICA3OSwgNjksIDY5LCAxMjgsIDc5LCA2OCwgNjksIDc4LCAxMjgsIDc5LCA2OCwgNjgsIDEyOCwgNzksIDY4LCAxOTYsIDc5LCAKKyAgICA2NywgODQsIDc5LCA4MCwgODUsIDgzLCAxMjgsIDc5LCA2NywgODQsIDc5LCA2NiwgNjksIDgyLCAxMjgsIDc5LCA2NywgODQsIAorICAgIDY5LCAyMTIsIDc5LCA2NywgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDc5LCA2NywgMjEwLCA3OSwgNjcsIDc2LCA3OSwgCisgICAgNjcsIDc1LCAxMjgsIDc5LCA2NywgNjcsIDc2LCA4NSwgODMsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA4MywgODQsIDgyLCAKKyAgICA4NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc5LCA2NiwgNzksIDc2LCAyMTEsIDc5LCA2NiwgNzksIDIwNCwgNzksIAorICAgIDY2LCA3OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDY2LCA3NiwgNzMsIDgxLCA4NSwgMTk3LCA3OSwgNjYsIDc0LCA2OSwgCisgICAgNjcsIDIxMiwgNzksIDY2LCA2OSwgNzYsIDg1LCA4MywgMTI4LCA3OSwgNjYsIDY5LCA3NiwgNzksIDgzLCAxMjgsIDc5LCAKKyAgICA2NiwgMTI4LCA3OSwgNjUsIDg5LCAxMjgsIDc5LCA2NSwgNzUsIDEyOCwgNzksIDY1LCA2NiwgNzksIDY1LCA3MCwgNzMsIAorICAgIDc2LCA3MywgMTI4LCA3OSwgMTkzLCA3OSwgNDgsIDUzLCA0OSwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNzksIAorICAgIDQ4LCA1MywgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCAxMjgsIDc5LCA0OCwgNTIsIDU3LCAxMjgsIDc5LCA0OCwgCisgICAgNTIsIDU2LCAxMjgsIDc5LCA0OCwgNTIsIDU1LCAxMjgsIDc5LCA0OCwgNTIsIDU0LCAxMjgsIDc5LCA0OCwgNTIsIDUzLCAKKyAgICAxMjgsIDc5LCA0OCwgNTIsIDUyLCAxMjgsIDc5LCA0OCwgNTIsIDUxLCAxMjgsIDc5LCA0OCwgNTIsIDUwLCAxMjgsIDc5LCAKKyAgICA0OCwgNTIsIDQ5LCAxMjgsIDc5LCA0OCwgNTIsIDQ4LCAxMjgsIDc5LCA0OCwgNTEsIDU3LCAxMjgsIDc5LCA0OCwgNTEsIAorICAgIDU2LCAxMjgsIDc5LCA0OCwgNTEsIDU1LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgCisgICAgNjcsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY2LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDUxLCAKKyAgICA1NCwgMTI4LCA3OSwgNDgsIDUxLCA1MywgMTI4LCA3OSwgNDgsIDUxLCA1MiwgMTI4LCA3OSwgNDgsIDUxLCA1MSwgNjUsIAorICAgIDEyOCwgNzksIDQ4LCA1MSwgNTEsIDEyOCwgNzksIDQ4LCA1MSwgNTAsIDEyOCwgNzksIDQ4LCA1MSwgNDksIDEyOCwgNzksIAorICAgIDQ4LCA1MSwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDQ4LCAxMjgsIDc5LCA0OCwgNTAsIDU3LCA2NSwgMTI4LCA3OSwgCisgICAgNDgsIDUwLCA1NywgMTI4LCA3OSwgNDgsIDUwLCA1NiwgMTI4LCA3OSwgNDgsIDUwLCA1NSwgMTI4LCA3OSwgNDgsIDUwLCAKKyAgICA1NCwgMTI4LCA3OSwgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTMsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIAorICAgIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDUyLCAxMjgsIDc5LCA0OCwgNTAsIDUxLCAxMjgsIDc5LCA0OCwgNTAsIDUwLCAxMjgsIAorICAgIDc5LCA0OCwgNTAsIDQ5LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA0OCwgMTI4LCA3OSwgCisgICAgNDgsIDQ5LCA1NywgNjUsIDEyOCwgNzksIDQ4LCA0OSwgNTcsIDEyOCwgNzksIDQ4LCA0OSwgNTYsIDEyOCwgNzksIDQ4LCAKKyAgICA0OSwgNTUsIDEyOCwgNzksIDQ4LCA0OSwgNTQsIDEyOCwgNzksIDQ4LCA0OSwgNTMsIDEyOCwgNzksIDQ4LCA0OSwgNTIsIAorICAgIDEyOCwgNzksIDQ4LCA0OSwgNTEsIDEyOCwgNzksIDQ4LCA0OSwgNTAsIDEyOCwgNzksIDQ4LCA0OSwgNDksIDEyOCwgNzksIAorICAgIDQ4LCA0OSwgNDgsIDY3LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NiwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgCisgICAgNzksIDQ4LCA0OSwgNDgsIDEyOCwgNzksIDQ4LCA0OCwgNTcsIDEyOCwgNzksIDQ4LCA0OCwgNTYsIDEyOCwgNzksIDQ4LCAKKyAgICA0OCwgNTUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDcwLCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2OSwgMTI4LCA3OSwgNDgsIAorICAgIDQ4LCA1NCwgNjgsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY3LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NiwgMTI4LCA3OSwgCisgICAgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDEyOCwgNzksIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc5LCAKKyAgICA0OCwgNDgsIDUzLCAxMjgsIDc5LCA0OCwgNDgsIDUyLCAxMjgsIDc5LCA0OCwgNDgsIDUxLCAxMjgsIDc5LCA0OCwgNDgsIAorICAgIDUwLCAxMjgsIDc5LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA0OSwgMTI4LCA3OSwgNDUsIDg5LCA2OSwgCisgICAgMTI4LCA3OSwgNDUsIDc5LCA0NSwgNzMsIDEyOCwgNzksIDQ1LCA2OSwgMTI4LCA3OCwgOTAsIDg5LCA4OCwgMTI4LCA3OCwgCisgICAgOTAsIDg5LCA4NCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDkwLCA4OSwgODIsIDEyOCwgNzgsIDkwLCAKKyAgICA4OSwgODAsIDEyOCwgNzgsIDkwLCA4OSwgMTI4LCA3OCwgOTAsIDg1LCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA4MiwgODgsIAorICAgIDEyOCwgNzgsIDkwLCA4NSwgODIsIDEyOCwgNzgsIDkwLCA4NSwgODEsIDEyOCwgNzgsIDkwLCA4NSwgODAsIDEyOCwgNzgsIAorICAgIDkwLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA5MCwgODUsIDc5LCAxMjgsIDc4LCA5MCwgODUsIDIwNiwgNzgsIDkwLCA4NSwgCisgICAgMTI4LCA3OCwgOTAsIDc5LCA4OCwgMTI4LCA3OCwgOTAsIDc5LCA4MCwgMTI4LCA3OCwgOTAsIDczLCA4OCwgMTI4LCA3OCwgCisgICAgOTAsIDczLCA4NCwgMTI4LCA3OCwgOTAsIDczLCA4MCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgODgsIDEyOCwgNzgsIDkwLCAKKyAgICA3MywgNjksIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCAxMjgsIDc4LCA5MCwgNzMsIDEyOCwgNzgsIDkwLCA2OSwgODgsIAorICAgIDEyOCwgNzgsIDkwLCA2OSwgODUsIDc3LCAxMjgsIDc4LCA5MCwgNjksIDEyOCwgNzgsIDkwLCA2NSwgODgsIDEyOCwgNzgsIAorICAgIDkwLCA2NSwgODQsIDEyOCwgNzgsIDkwLCA2NSwgODEsIDEyOCwgNzgsIDkwLCA2NSwgODAsIDEyOCwgNzgsIDkwLCA2NSwgCisgICAgMTI4LCA3OCwgOTAsIDE5MywgNzgsIDg5LCA4NywgNjUsIDEyOCwgNzgsIDg5LCA4NSwgODgsIDEyOCwgNzgsIDg5LCA4NSwgCisgICAgODUsIDEyOCwgNzgsIDg5LCA4NSwgODQsIDEyOCwgNzgsIDg5LCA4NSwgODAsIDEyOCwgNzgsIDg5LCA4NSwgNzksIDg4LCAKKyAgICAxMjgsIDc4LCA4OSwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgMTI4LCA3OCwgODksIDg1LCA3OCwgMTI4LCAKKyAgICA3OCwgODksIDg1LCA2OSwgMTI4LCA3OCwgODksIDg1LCAxMjgsIDc4LCA4OSwgNzksIDg4LCAxMjgsIDc4LCA4OSwgNzksIAorICAgIDg0LCAxMjgsIDc4LCA4OSwgNzksIDgwLCAxMjgsIDc4LCA4OSwgNzksIDc5LCAxMjgsIDc4LCA4OSwgNzksIDc4LCAxMjgsIAogICAgIDc4LCA4OSwgNzksIDY1LCAxMjgsIDc4LCA4OSwgNzksIDEyOCwgNzgsIDg5LCA3NCwgNjUsIDEyOCwgNzgsIDg5LCA3MywgCiAgICAgODgsIDEyOCwgNzgsIDg5LCA3MywgODQsIDEyOCwgNzgsIDg5LCA3MywgMjEyLCA3OCwgODksIDczLCAyMTEsIDc4LCA4OSwgCiAgICAgNzMsIDIxMCwgNzgsIDg5LCA3MywgODAsIDEyOCwgNzgsIDg5LCA3MywgNzgsIDQ1LCA2OCwgNzksIDEyOCwgNzgsIDg5LCAKLSAgICA3MywgNzMsIDEyOCwgNzgsIDg5LCA3MywgNjksIDg4LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4NCwgMTI4LCA3OCwgODksIAotICAgIDczLCA2OSwgODAsIDEyOCwgNzgsIDg5LCA3MywgNjksIDEyOCwgNzgsIDg5LCA3MywgMTI4LCA3OCwgODksIDIwMSwgNzgsIAotICAgIDg5LCA3MiwgNjUsIDEyOCwgNzgsIDg5LCA2OSwgODQsIDEyOCwgNzgsIDg5LCA2OSwgMjEyLCA3OCwgODksIDY5LCA3MiwgCi0gICAgMTI4LCA3OCwgODksIDY5LCAyMDAsIDc4LCA4OSwgNjksIDY5LCAxMjgsIDc4LCA4OSwgNjksIDEyOCwgNzgsIDg5LCAxOTYsIAotICAgIDc4LCA4OSwgNjcsIDY1LCAxMjgsIDc4LCA4OSwgNjUsIDg1LCAxMjgsIDc4LCA4OSwgNjUsIDczLCAxMjgsIDc4LCA4OSwgCi0gICAgNjUsIDcyLCAxMjgsIDc4LCA4OSwgNjUsIDY5LCA3NywgNjUsIDY5LCAxMjgsIDc4LCA4OSwgNjUsIDY1LCAxMjgsIDc4LCAKLSAgICA4NywgNzksIDc5LCAxMjgsIDc4LCA4NywgNzksIDEyOCwgNzgsIDg3LCA3MywgNzMsIDEyOCwgNzgsIDg3LCA3MywgMTI4LCAKLSAgICA3OCwgODcsIDY5LCAxMjgsIDc4LCA4NywgNjUsIDY1LCAxMjgsIDc4LCA4NywgNjUsIDEyOCwgNzgsIDg3LCAxMjgsIDc4LCAKLSAgICA4NiwgMTI4LCA3OCwgODUsIDg4LCAxMjgsIDc4LCA4NSwgODUsIDc4LCAxMjgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDg1LCAKLSAgICA4NCwgNzMsIDc2LCA3NiwgODUsIDEyOCwgNzgsIDg1LCA4NCwgMTI4LCA3OCwgODUsIDIxMiwgNzgsIDg1LCA4MiwgODgsIAotICAgIDEyOCwgNzgsIDg1LCA4MiwgMTI4LCA3OCwgODUsIDgwLCAxMjgsIDc4LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA4NSwgNzksIAotICAgIDgwLCAxMjgsIDc4LCA4NSwgNzksIDEyOCwgNzgsIDg1LCA3OCwgODUsIDkwLCAxMjgsIDc4LCA4NSwgNzgsIDg1LCAyMTgsIAotICAgIDc4LCA4NSwgNzgsIDcxLCAxMjgsIDc4LCA4NSwgNzgsIDY1LCA4NiwgODUsIDIxMiwgNzgsIDg1LCA3OCwgNjUsIDg2LCA3MywgCi0gICAgMjAzLCA3OCwgODUsIDc4LCAxMjgsIDc4LCA4NSwgMjA2LCA3OCwgODUsIDc3LCA2OSwgODIsIDIwNywgNzgsIDg1LCA3NywgCi0gICAgNjksIDgyLCA2NSwgODQsIDc5LCAyMTAsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDIwNCwgNzgsIDg1LCA3NywgNjYsIDY5LCAKLSAgICA4MiwgODMsIDEyOCwgNzgsIDg1LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA3OCwgODUsIDc3LCAxMjgsIDc4LCA4NSwgNzYsIAotICAgIDc2LCAxMjgsIDc4LCA4NSwgNzYsIDIwNCwgNzgsIDg1LCA3NiwgMTI4LCA3OCwgODUsIDc1LCA4NCwgNjUsIDEyOCwgNzgsIAotICAgIDg1LCA2OSwgNzgsIDcxLCAxMjgsIDc4LCA4NSwgNjksIDEyOCwgNzgsIDg1LCA2NiwgNzMsIDY1LCAyMDYsIDc4LCA4NSwgCi0gICAgNjUsIDY5LCAxMjgsIDc4LCA4NSwgNDksIDQ5LCAxMjgsIDc4LCA4NSwgNDksIDE3NywgNzgsIDg1LCA0OCwgNTAsIDUwLCAKLSAgICA2NSwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCA4NSwgNDgsIAotICAgIDUwLCA0OCwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTcsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgCi0gICAgODUsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NCwgMTI4LCAKLSAgICA3OCwgODUsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUyLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MSwgCi0gICAgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIAotICAgIDg1LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTUsIDEyOCwgCi0gICAgNzgsIDg1LCA0OCwgNDgsIDU0LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTIsIAotICAgIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgNzgsIDg0LCA4NSwgODUsIDEyOCwgNzgsIDg0LCA4NSwgNzcsIDEyOCwgNzgsIDg0LCAyMTMsIDc4LCA4NCwgCi0gICAgNzksIDgxLCA4MCwgNjksIDc4LCAxMjgsIDc4LCA4NCwgNzMsIDY5LCAxOTcsIDc4LCA4NCwgNjksIDg1LCA3OCwgNzEsIDY2LCAKLSAgICA2NSwgMTI4LCA3OCwgODQsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDg0LCA2OSwgNzgsIDEyOCwgNzgsIDg0LCA2OSwgNjksIAotICAgIDEyOCwgNzgsIDg0LCA2NSwgODAsIDEyOCwgNzgsIDg0LCA2NSwgMjA4LCA3OCwgODQsIDY1LCA2NSwgMTI4LCA3OCwgODMsIAotICAgIDg1LCA3OSwgMjEyLCA3OCwgODMsIDg1LCA3OCwgMTI4LCA3OCwgODMsIDg1LCA3NywgMTI4LCA3OCwgODMsIDc5LCA3NywgCi0gICAgMTI4LCA3OCwgODMsIDczLCA2OSwgNjksIDg0LCAxMjgsIDc4LCA4MywgNzMsIDY5LCA2OSwgODAsIDEyOCwgNzgsIDgzLCAKLSAgICA3MywgNjksIDY5LCAxMjgsIDc4LCA4MywgNzIsIDg1LCA4NCwgMTI4LCA3OCwgODMsIDcyLCA4NSwgMjEyLCA3OCwgODMsIAotICAgIDcyLCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4MywgNzIsIDg1LCA2OSwgMTI4LCA3OCwgODMsIDcyLCA3MywgNjksIDY5LCAKLSAgICAxMjgsIDc4LCA4MywgNzIsIDY5LCA2OSwgMTI4LCA3OCwgODMsIDcyLCA2NSwgODEsIDEyOCwgNzgsIDgzLCA3MiwgNjUsIAotICAgIDEyOCwgNzgsIDgzLCA2OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDgzLCA2OSwgNzgsIDEyOCwgNzgsIDgzLCA2NSwgCi0gICAgMTI4LCA3OCwgODIsIDg5LCA4OCwgMTI4LCA3OCwgODIsIDg5LCA4NCwgMTI4LCA3OCwgODIsIDg5LCA4MiwgODgsIDEyOCwgCi0gICAgNzgsIDgyLCA4OSwgODIsIDEyOCwgNzgsIDgyLCA4OSwgODAsIDEyOCwgNzgsIDgyLCA4OSwgMTI4LCA3OCwgODIsIDg1LCAKLSAgICA4OCwgMTI4LCA3OCwgODIsIDg1LCA4NCwgMTI4LCA3OCwgODIsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDgyLCA4NSwgODIsIAotICAgIDEyOCwgNzgsIDgyLCA4NSwgODAsIDEyOCwgNzgsIDgyLCA4NSwgMTI4LCA3OCwgODIsIDc5LCA4OCwgMTI4LCA3OCwgODIsIAotICAgIDc5LCA4MCwgMTI4LCA3OCwgODIsIDc5LCAxMjgsIDc4LCA4MiwgNjksIDg4LCAxMjgsIDc4LCA4MiwgNjksIDg0LCAxMjgsIAotICAgIDc4LCA4MiwgNjksIDgwLCAxMjgsIDc4LCA4MiwgNjksIDEyOCwgNzgsIDgyLCA2NSwgODgsIDEyOCwgNzgsIDgyLCA2NSwgCi0gICAgODQsIDEyOCwgNzgsIDgyLCA2NSwgODAsIDEyOCwgNzgsIDgyLCA2NSwgMTI4LCA3OCwgNzksIDg5LCAxMjgsIDc4LCA3OSwgCi0gICAgODgsIDEyOCwgNzgsIDc5LCA4NiwgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc4LCA3OSwgODQsIDg0LCA3OSwgMTI4LCAKLSAgICA3OCwgNzksIDg0LCA2OSwgODMsIDEyOCwgNzgsIDc5LCA4NCwgNjksIDcyLCA2OSwgNjUsIDY4LCAxMjgsIDc4LCA3OSwgODQsIAotICAgIDY5LCA3MiwgNjksIDY1LCAxOTYsIDc4LCA3OSwgODQsIDY5LCA2NiwgNzksIDc5LCA3NSwgMTI4LCA3OCwgNzksIDg0LCA2OSwgCi0gICAgNjYsIDc5LCA3OSwgMjAzLCA3OCwgNzksIDg0LCA2OSwgMTI4LCA3OCwgNzksIDg0LCAxOTcsIDc4LCA3OSwgODQsIDY3LCAKLSAgICA3MiwgNjksIDE5NiwgNzgsIDc5LCA4NCwgNjcsIDcyLCAxMjgsIDc4LCA3OSwgODQsIDEyOCwgNzgsIDc5LCAyMTIsIDc4LCAKLSAgICA3OSwgODMsIDY5LCAxMjgsIDc4LCA3OSwgODIsIDg0LCA3MiwgODcsIDY5LCA4MywgMjEyLCA3OCwgNzksIDgyLCA4NCwgNzIsIAotICAgIDY5LCA4MiwgMjA2LCA3OCwgNzksIDgyLCA4NCwgMjAwLCA3OCwgNzksIDgyLCA3NywgNjUsIDIwNCwgNzgsIDc5LCAyMTAsIAotICAgIDc4LCA3OSwgODAsIDEyOCwgNzgsIDc5LCA3OSwgNzgsIDg1LCAxMjgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc5LCA3OCwgCi0gICAgNzAsIDc5LCA4MiwgNzUsIDczLCA3OCwgNzEsIDEyOCwgNzgsIDc5LCA3OCwgNDUsIDgwLCA3OSwgODQsIDY1LCA2NiwgNzYsIAotICAgIDE5NywgNzgsIDc5LCA3OCwgNDUsIDc0LCA3OSwgNzMsIDc4LCA2OSwgODIsIDEyOCwgNzgsIDc5LCA3OCwgNDUsIDY2LCA4MiwgCi0gICAgNjksIDY1LCA3NSwgNzMsIDc4LCAxOTksIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDIwNCwgNzgsIDc5LCA3NSwgNzIsIDg1LCAKLSAgICA3NSwgMTI4LCA3OCwgNzksIDY4LCA2OSwgMTI4LCA3OCwgNzksIDY1LCAxMjgsIDc4LCA3OSwgNDUsIDY2LCA4MiwgNjksIAotICAgIDY1LCAyMDMsIDc4LCA3OCwgODUsIDg1LCAxMjgsIDc4LCA3OCwgODUsIDEyOCwgNzgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIAotICAgIDc4LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDc4LCA3OCwgODUsIDEyOCwgNzgsIDc4LCA3OCwgCi0gICAgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDczLCA3MywgMTI4LCA3OCwgNzgsIDc4LCAKLSAgICA3MywgMTI4LCA3OCwgNzgsIDc4LCA2OSwgNjksIDEyOCwgNzgsIDc4LCA3OCwgNjksIDEyOCwgNzgsIDc4LCA3OCwgNjUsIAotICAgIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA3MywgMTI4LCA3OCwgNzgsIDc4LCA2NSwgNjUsIDEyOCwgNzgsIDc4LCA3OCwgCi0gICAgNjUsIDEyOCwgNzgsIDc4LCA3OCwgMTI4LCA3OCwgNzgsIDcyLCA2NSwgMTI4LCA3OCwgNzgsIDcxLCA3OSwgNzksIDEyOCwgCi0gICAgNzgsIDc4LCA3MSwgNzksIDEyOCwgNzgsIDc4LCA3MSwgNzMsIDczLCAxMjgsIDc4LCA3OCwgNzEsIDczLCAxMjgsIDc4LCAKLSAgICA3OCwgNzEsIDY1LCA2NSwgMTI4LCA3OCwgNzgsIDcxLCA2NSwgMTI4LCA3OCwgNzgsIDcxLCAxMjgsIDc4LCA3OCwgNjYsIAotICAgIDgzLCA4MCwgMTI4LCA3OCwgNzcsIDEyOCwgNzgsIDc2LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NywgCi0gICAgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCAKLSAgICA0OSwgNTUsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNzYsIAotICAgIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgCi0gICAgNzYsIDQ4LCA0OSwgNDksIDEyOCwgNzgsIDc2LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NywgMTI4LCAKLSAgICA3OCwgNzYsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NCwgCi0gICAgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCAKLSAgICA0OCwgNTIsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNzYsIAotICAgIDQ4LCA0OCwgNDksIDEyOCwgNzgsIDc2LCAxMjgsIDc4LCA3NSwgNzksIDc3LCAxMjgsIDc4LCA3NSwgMjA3LCA3OCwgNzUsIAotICAgIDczLCA3OCwgNjgsIDczLCAxMjgsIDc4LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCA3NCwgODksIDg4LCAKLSAgICAxMjgsIDc4LCA3NCwgODksIDg0LCAxMjgsIDc4LCA3NCwgODksIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg5LCA4MiwgMTI4LCAKLSAgICA3OCwgNzQsIDg5LCA4MCwgMTI4LCA3OCwgNzQsIDg5LCAxMjgsIDc4LCA3NCwgODUsIDg4LCAxMjgsIDc4LCA3NCwgODUsIAotICAgIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA4MiwgMTI4LCA3OCwgNzQsIDg1LCA4MSwgNjUsIDEyOCwgNzgsIDc0LCA4NSwgCi0gICAgODAsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3NCwgODUsIDc5LCAxMjgsIDc4LCA3NCwgODUsIDY5LCAKLSAgICA4MSwgMTI4LCA3OCwgNzQsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDc0LCA4NSwgMTI4LCA3OCwgNzQsIDc5LCA4OCwgMTI4LCAKLSAgICA3OCwgNzQsIDc5LCA4NCwgMTI4LCA3OCwgNzQsIDc5LCA4MCwgMTI4LCA3OCwgNzQsIDc5LCA3OSwgMTI4LCA3OCwgNzQsIAotICAgIDc5LCAxMjgsIDc4LCA3NCwgNzMsIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDg0LCAxMjgsIDc4LCA3NCwgNzMsIDgwLCAxMjgsIAotICAgIDc4LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzgsIDc0LCA3MywgNjksIDgwLCAKLSAgICAxMjgsIDc4LCA3NCwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDczLCA2OSwgMTI4LCA3OCwgNzQsIDczLCAxMjgsIDc4LCAKLSAgICA3NCwgMjAxLCA3OCwgNzQsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3NCwgNjksIAotICAgIDg1LCA2NSwgNjksIDc4LCA2NSwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzQsIDY5LCA2OSwgCi0gICAgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDE5NywgNzgsIDc0LCA2OSwgMTI4LCA3OCwgCi0gICAgNzQsIDY1LCA4MSwgMTI4LCA3OCwgNzQsIDY1LCA4MCwgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIDc2LCA3MywgMTI4LCAKLSAgICA3OCwgNzQsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDc0LCA2NSwgNjUsIDEyOCwgNzgsIDczLCA4OCwgMTI4LCA3OCwgNzMsIAotICAgIDg0LCA4MiwgNjksIDEyOCwgNzgsIDczLCA4MywgNjUsIDcxLCAxMjgsIDc4LCA3MywgODIsIDg1LCA3MSwgODUsIDEyOCwgCi0gICAgNzgsIDczLCA4MCwgMTI4LCA3OCwgNzMsIDc4LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA3OCwgNjksIDg0LCA4OSwgMTI4LCAKLSAgICA3OCwgNzMsIDc4LCA2OSwgODQsIDIxNywgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgNjksIDc4LCAxMjgsIDc4LCA3MywgNzgsIAotICAgIDY5LCA4NCwgNjksIDY5LCAyMDYsIDc4LCA3MywgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3OCwgCi0gICAgNzMsIDc4LCAxOTcsIDc4LCA3MywgNzgsIDY4LCA2NSwgNTAsIDEyOCwgNzgsIDczLCA3OCwgNjgsIDY1LCAxNzgsIDc4LCAKLSAgICA3MywgNzcsIDEyOCwgNzgsIDczLCAyMDUsIDc4LCA3MywgNzUsIDcyLCA2NSwgNzIsIDczLCA4NCwgMTI4LCA3OCwgNzMsIAotICAgIDc1LCA2NSwgNzIsIDczLCA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgMTI4LCA3OCwgNzMsIDcyLCA4MywgNzIsIDg2LCA2NSwgCi0gICAgODMsIDY1LCAxMjgsIDc4LCA3MywgNzEsIDczLCA2OCwgNjUsIDc3LCA3MywgNzgsIDEyOCwgNzgsIDczLCA3MSwgNzMsIDY4LCAKLSAgICA2NSwgNjksIDgzLCA3MiwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzgsIDczLCA3MSwgNzIsIDIxMiwgNzgsIAotICAgIDczLCA3MSwgNzEsIDY1LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA3OCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgCi0gICAgNzgsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDg0LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgODQsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MCwgNzMsIAotICAgIDY5LCA4NSwgODAsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgCi0gICAgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIAotICAgIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAKLSAgICAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc4LCA3MywgNjksIAotICAgIDg1LCAyMDYsIDc4LCA3MywgNjksIDgwLCAxMjgsIDc4LCA3MywgNjksIDEyOCwgNzgsIDczLCA2NiwgMTI4LCA3OCwgNzMsIAotICAgIDY1LCAxMjgsIDc4LCA3MywgNTAsIDEyOCwgNzgsIDcyLCA4NSwgNjksIDEyOCwgNzgsIDcyLCA3NCwgNjUsIDEyOCwgNzgsIAotICAgIDcyLCAxMjgsIDc4LCA3MSwgODksIDY5LCAxMjgsIDc4LCA3MSwgODYsIDY5LCAxMjgsIDc4LCA3MSwgODUsIDg1LCAxMjgsIAotICAgIDc4LCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODQsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDEyOCwgCi0gICAgNzgsIDcxLCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3OSwgODgsIAotICAgIDEyOCwgNzgsIDcxLCA3OSwgODUsIDEyOCwgNzgsIDcxLCA3OSwgMjEzLCA3OCwgNzEsIDc5LCA4NCwgMTI4LCA3OCwgNzEsIAotICAgIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDc5LCA4MCwgMTI4LCA3OCwgNzEsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDc5LCA3NywgCi0gICAgMTI4LCA3OCwgNzEsIDc5LCA2OSwgNzIsIDEyOCwgNzgsIDcxLCA3OSwgNjksIDIwMCwgNzgsIDcxLCAyMDcsIDc4LCA3MSwgCi0gICAgNzUsIDg5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3NSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDgwLCAKLSAgICAxMjgsIDc4LCA3MSwgNzUsIDg1LCA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIAotICAgIDY5LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDE5NywgNzgsIDcxLCA3NSwgNzMsIDc4LCA2OCwgCi0gICAgMjAxLCA3OCwgNzEsIDc1LCA3MywgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDcxLCAKLSAgICA3NSwgNjksIDg1LCA4MiwgNzMsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc4LCA3MSwgNzUsIAotICAgIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgwLCAKLSAgICAxMjgsIDc4LCA3MSwgNzUsIDY1LCA2NSwgNzcsIDczLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCAxMjgsIDc4LCA3MSwgNzMsIAotICAgIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDczLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA3MywgNjksIDEyOCwgNzgsIDcxLCA3MiwgCi0gICAgNjUsIDEyOCwgNzgsIDcxLCA3MSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgyLCA2NSwgNjksIAotICAgIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgODEsIDEyOCwgNzgsIDcxLCA3MSwgCi0gICAgODUsIDc5LCAyMDksIDc4LCA3MSwgNzEsIDg1LCA3OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCA3NywgMTI4LCAKLSAgICA3OCwgNzEsIDcxLCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgODUsIAotICAgIDY1LCA2OSwgODMsIDcyLCA2NSwgMTk3LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCAyMDYsIDc4LCA3MSwgNzEsIDg1LCAKKyAgICA3MywgNzgsIDEyOCwgNzgsIDg5LCA3MywgNzMsIDEyOCwgNzgsIDg5LCA3MywgNjksIDg4LCAxMjgsIDc4LCA4OSwgNzMsIAorICAgIDY5LCA4NCwgMTI4LCA3OCwgODksIDczLCA2OSwgODAsIDEyOCwgNzgsIDg5LCA3MywgNjksIDEyOCwgNzgsIDg5LCA3MywgCisgICAgMTI4LCA3OCwgODksIDIwMSwgNzgsIDg5LCA3MiwgNjUsIDEyOCwgNzgsIDg5LCA2OSwgODQsIDEyOCwgNzgsIDg5LCA2OSwgCisgICAgMjEyLCA3OCwgODksIDY5LCA3OCwgMTI4LCA3OCwgODksIDY5LCA3MiwgMTI4LCA3OCwgODksIDY5LCAyMDAsIDc4LCA4OSwgCisgICAgNjksIDY5LCAxMjgsIDc4LCA4OSwgNjksIDEyOCwgNzgsIDg5LCAxOTYsIDc4LCA4OSwgNjcsIDY1LCAxMjgsIDc4LCA4OSwgCisgICAgNjUsIDg1LCAxMjgsIDc4LCA4OSwgNjUsIDczLCAxMjgsIDc4LCA4OSwgNjUsIDcyLCAxMjgsIDc4LCA4OSwgNjUsIDY5LCAKKyAgICA3NywgNjUsIDY5LCAxMjgsIDc4LCA4OSwgNjUsIDY1LCAxMjgsIDc4LCA4NywgNzksIDc5LCAxMjgsIDc4LCA4NywgNzksIAorICAgIDEyOCwgNzgsIDg3LCA3MywgNzMsIDEyOCwgNzgsIDg3LCA3MywgMTI4LCA3OCwgODcsIDY5LCAxMjgsIDc4LCA4NywgNjUsIAorICAgIDY1LCAxMjgsIDc4LCA4NywgNjUsIDEyOCwgNzgsIDg3LCAxMjgsIDc4LCA4NiwgMTI4LCA3OCwgODUsIDg4LCAxMjgsIDc4LCAKKyAgICA4NSwgODUsIDc4LCAxMjgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDg1LCA4NCwgNzMsIDc2LCA3NiwgODUsIDEyOCwgNzgsIAorICAgIDg1LCA4NCwgMTI4LCA3OCwgODUsIDIxMiwgNzgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDg1LCA4MiwgMTI4LCA3OCwgODUsIAorICAgIDgwLCAxMjgsIDc4LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4NSwgNzksIDEyOCwgNzgsIAorICAgIDg1LCA3OCwgODUsIDkwLCAxMjgsIDc4LCA4NSwgNzgsIDg1LCAyMTgsIDc4LCA4NSwgNzgsIDcxLCAxMjgsIDc4LCA4NSwgCisgICAgNzgsIDY1LCA4NiwgODUsIDIxMiwgNzgsIDg1LCA3OCwgNjUsIDg2LCA3MywgMjAzLCA3OCwgODUsIDc4LCAxMjgsIDc4LCAKKyAgICA4NSwgMjA2LCA3OCwgODUsIDc3LCA2OSwgODIsIDIwNywgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgODQsIDc5LCAyMTAsIAorICAgIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDIwNCwgNzgsIDg1LCA3NywgNjYsIDY5LCA4MiwgODMsIDEyOCwgNzgsIDg1LCA3NywgCisgICAgNjYsIDY5LCA4MiwgMTI4LCA3OCwgODUsIDc3LCAxMjgsIDc4LCA4NSwgNzYsIDc2LCAxMjgsIDc4LCA4NSwgNzYsIDIwNCwgCisgICAgNzgsIDg1LCA3NiwgMTI4LCA3OCwgODUsIDc1LCA4NCwgNjUsIDEyOCwgNzgsIDg1LCA2OSwgNzgsIDcxLCAxMjgsIDc4LCAKKyAgICA4NSwgNjksIDEyOCwgNzgsIDg1LCA2NiwgNzMsIDY1LCAyMDYsIDc4LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA4NSwgNDksIAorICAgIDQ5LCAxMjgsIDc4LCA4NSwgNDksIDE3NywgNzgsIDg1LCA0OCwgNTAsIDUwLCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgCisgICAgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCA4NSwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgODUsIDQ4LCAKKyAgICA0OSwgNTcsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIAorICAgIDg1LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTMsIDEyOCwgCisgICAgNzgsIDg1LCA0OCwgNDksIDUyLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTAsIAorICAgIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDksIDEyOCwgNzgsIDg1LCA0OCwgCisgICAgNDksIDQ4LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCAKKyAgICA4NSwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU0LCAxMjgsIAorICAgIDc4LCA4NSwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUxLCAKKyAgICAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIDg0LCA4OCwgNzMsIAorICAgIDg2LCAxMjgsIDc4LCA4NCwgODUsIDg1LCAxMjgsIDc4LCA4NCwgODUsIDc3LCAxMjgsIDc4LCA4NCwgODUsIDc0LCAxMjgsIAorICAgIDc4LCA4NCwgMjEzLCA3OCwgODQsIDgzLCA2NSwgODUsIDEyOCwgNzgsIDg0LCA3OSwgODEsIDgwLCA2OSwgNzgsIDEyOCwgCisgICAgNzgsIDg0LCA3OSwgNzEsIDEyOCwgNzgsIDg0LCA3OSwgMTk5LCA3OCwgODQsIDczLCA2OSwgMTk3LCA3OCwgODQsIDcyLCAKKyAgICA2NSwgODUsIDEyOCwgNzgsIDg0LCA2OSwgODUsIDc4LCA3MSwgNjYsIDY1LCAxMjgsIDc4LCA4NCwgNjksIDg1LCA3NywgCisgICAgMTI4LCA3OCwgODQsIDY5LCA3OCwgMTI4LCA3OCwgODQsIDY5LCA2OSwgMTI4LCA3OCwgODQsIDY1LCA4MCwgMTI4LCA3OCwgCisgICAgODQsIDY1LCAyMDgsIDc4LCA4NCwgNjUsIDY1LCAxMjgsIDc4LCA4MywgODUsIDc5LCAyMTIsIDc4LCA4MywgODUsIDc4LCAKKyAgICAxMjgsIDc4LCA4MywgODUsIDc3LCAxMjgsIDc4LCA4MywgNzksIDc3LCAxMjgsIDc4LCA4MywgNzMsIDY5LCA2OSwgODQsIAorICAgIDEyOCwgNzgsIDgzLCA3MywgNjksIDY5LCA4MCwgMTI4LCA3OCwgODMsIDczLCA2OSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgCisgICAgODUsIDg0LCAxMjgsIDc4LCA4MywgNzIsIDg1LCAyMTIsIDc4LCA4MywgNzIsIDg1LCA3OSwgODAsIDEyOCwgNzgsIDgzLCAKKyAgICA3MiwgODUsIDY5LCAxMjgsIDc4LCA4MywgNzIsIDczLCA2OSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgNjksIDY5LCAxMjgsIAorICAgIDc4LCA4MywgNzIsIDY1LCA4MSwgMTI4LCA3OCwgODMsIDcyLCA2NSwgMTI4LCA3OCwgODMsIDY5LCA4NSwgNjUsIDY5LCA3OCwgCisgICAgMTI4LCA3OCwgODMsIDY5LCA3OCwgMTI4LCA3OCwgODMsIDY1LCAxMjgsIDc4LCA4MiwgODksIDg4LCAxMjgsIDc4LCA4MiwgCisgICAgODksIDg0LCAxMjgsIDc4LCA4MiwgODksIDgyLCA4OCwgMTI4LCA3OCwgODIsIDg5LCA4MiwgMTI4LCA3OCwgODIsIDg5LCAKKyAgICA4MCwgMTI4LCA3OCwgODIsIDg5LCAxMjgsIDc4LCA4MiwgODUsIDg4LCAxMjgsIDc4LCA4MiwgODUsIDg0LCAxMjgsIDc4LCAKKyAgICA4MiwgODUsIDgyLCA4OCwgMTI4LCA3OCwgODIsIDg1LCA4MiwgMTI4LCA3OCwgODIsIDg1LCA4MCwgMTI4LCA3OCwgODIsIAorICAgIDg1LCA2NSwgMTI4LCA3OCwgODIsIDg1LCAxMjgsIDc4LCA4MiwgNzksIDg4LCAxMjgsIDc4LCA4MiwgNzksIDgwLCAxMjgsIAorICAgIDc4LCA4MiwgNzksIDEyOCwgNzgsIDgyLCA2OSwgODgsIDEyOCwgNzgsIDgyLCA2OSwgODQsIDEyOCwgNzgsIDgyLCA2OSwgCisgICAgMjExLCA3OCwgODIsIDY5LCA4MCwgMTI4LCA3OCwgODIsIDY5LCAxMjgsIDc4LCA4MiwgNjUsIDg4LCAxMjgsIDc4LCA4MiwgCisgICAgNjUsIDg0LCAxMjgsIDc4LCA4MiwgNjUsIDgwLCAxMjgsIDc4LCA4MiwgNjUsIDEyOCwgNzgsIDgxLCA3MywgNzEsIDEyOCwgCisgICAgNzgsIDc5LCA4OSwgMTI4LCA3OCwgNzksIDg4LCAxMjgsIDc4LCA3OSwgODcsIDY3LCAxMjgsIDc4LCA3OSwgODYsIDY5LCAKKyAgICA3NywgNjYsIDY5LCA4MiwgMTI4LCA3OCwgNzksIDg0LCA4NCwgNzksIDEyOCwgNzgsIDc5LCA4NCwgNjksIDgzLCAxMjgsIAorICAgIDc4LCA3OSwgODQsIDY5LCA3MiwgNjksIDY1LCA2OCwgMTI4LCA3OCwgNzksIDg0LCA2OSwgNzIsIDY5LCA2NSwgMTk2LCA3OCwgCisgICAgNzksIDg0LCA2OSwgNjYsIDc5LCA3OSwgNzUsIDEyOCwgNzgsIDc5LCA4NCwgNjksIDY2LCA3OSwgNzksIDIwMywgNzgsIDc5LCAKKyAgICA4NCwgNjksIDEyOCwgNzgsIDc5LCA4NCwgMTk3LCA3OCwgNzksIDg0LCA2NywgNzIsIDY5LCAxOTYsIDc4LCA3OSwgODQsIAorICAgIDY3LCA3MiwgMTI4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNzksIDg0LCAxMjgsIDc4LCA3OSwgCisgICAgMjEyLCA3OCwgNzksIDgzLCA2OSwgMTI4LCA3OCwgNzksIDgzLCAxOTcsIDc4LCA3OSwgODIsIDg0LCA3MiwgODcsIDY5LCAKKyAgICA4MywgMjEyLCA3OCwgNzksIDgyLCA4NCwgNzIsIDY5LCA4MiwgMjA2LCA3OCwgNzksIDgyLCA4NCwgNzIsIDY5LCA2NSwgODMsIAorICAgIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNzgsIDc5LCA4MiwgNzcsIDY1LCAyMDQsIDc4LCA3OSwgCisgICAgODIsIDY4LCA3MywgMTk1LCA3OCwgNzksIDIxMCwgNzgsIDc5LCA4MCwgMTI4LCA3OCwgNzksIDc5LCA3OCwgODUsIDEyOCwgCisgICAgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzksIDc4LCA3MCwgNzksIDgyLCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA3OCwgNzksIDc4LCAKKyAgICA0NSwgODAsIDc5LCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3OCwgNzksIDc4LCA0NSwgNzQsIDc5LCA3MywgNzgsIDY5LCA4MiwgCisgICAgMTI4LCA3OCwgNzksIDc4LCA0NSwgNjYsIDgyLCA2OSwgNjUsIDc1LCA3MywgNzgsIDE5OSwgNzgsIDc5LCA3OCwgMTI4LCAKKyAgICA3OCwgNzksIDc3LCA3MywgNzgsIDY1LCAyMDQsIDc4LCA3OSwgNzUsIDcyLCA4NSwgNzUsIDEyOCwgNzgsIDc5LCA2OCwgNjksIAorICAgIDEyOCwgNzgsIDc5LCA2NSwgMTI4LCA3OCwgNzksIDQ1LCA2NiwgODIsIDY5LCA2NSwgMjAzLCA3OCwgNzgsIDg1LCA4NSwgCisgICAgMTI4LCA3OCwgNzgsIDg1LCAxMjgsIDc4LCA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCA3OCwgCisgICAgODUsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCAKKyAgICA3OSwgMTI4LCA3OCwgNzgsIDc4LCA3MywgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNjksIAorICAgIDY5LCAxMjgsIDc4LCA3OCwgNzgsIDY5LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgCisgICAgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDY1LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCAxMjgsIDc4LCA3OCwgNzgsIDEyOCwgCisgICAgNzgsIDc4LCA3MiwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzEsIDc5LCAxMjgsIDc4LCAKKyAgICA3OCwgNzEsIDczLCA3MywgMTI4LCA3OCwgNzgsIDcxLCA3MywgMTI4LCA3OCwgNzgsIDcxLCA2NSwgNjUsIDEyOCwgNzgsIAorICAgIDc4LCA3MSwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgMTI4LCA3OCwgNzgsIDY2LCA4MywgODAsIDEyOCwgNzgsIDc3LCAxMjgsIAorICAgIDc4LCA3NiwgNjUsIDg1LCAxMjgsIDc4LCA3NiwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTcsIDEyOCwgCisgICAgNzgsIDc2LCA0OCwgNDksIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCAKKyAgICAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDksIAorICAgIDUyLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgCisgICAgNDksIDQ5LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDc2LCAKKyAgICA0OCwgNDgsIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIAorICAgIDc2LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUyLCAKKyAgICAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIAorICAgIDQ5LCAxMjgsIDc4LCA3NiwgMTI4LCA3OCwgNzUsIDc5LCA3NywgMTI4LCA3OCwgNzUsIDIwNywgNzgsIDc1LCA3MywgNzgsIAorICAgIDY4LCA3MywgMTI4LCA3OCwgNzUsIDY1LCA4NSwgMTI4LCA3OCwgNzUsIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgCisgICAgNzQsIDg5LCA4OCwgMTI4LCA3OCwgNzQsIDg5LCA4NCwgMTI4LCA3OCwgNzQsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDc0LCAKKyAgICA4OSwgODIsIDEyOCwgNzgsIDc0LCA4OSwgODAsIDEyOCwgNzgsIDc0LCA4OSwgMTI4LCA3OCwgNzQsIDg1LCA4OCwgMTI4LCAKKyAgICA3OCwgNzQsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDc0LCA4NSwgODIsIDEyOCwgNzgsIDc0LCA4NSwgODEsIDY1LCAxMjgsIAorICAgIDc4LCA3NCwgODUsIDgwLCAxMjgsIDc4LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgMTI4LCA3OCwgCisgICAgNzQsIDg1LCA2OSwgODEsIDEyOCwgNzgsIDc0LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA3NCwgODUsIDEyOCwgNzgsIDc0LCAKKyAgICA3OSwgODgsIDEyOCwgNzgsIDc0LCA3OSwgODQsIDEyOCwgNzgsIDc0LCA3OSwgODAsIDEyOCwgNzgsIDc0LCA3OSwgNzksIAorICAgIDEyOCwgNzgsIDc0LCA3OSwgMTI4LCA3OCwgNzQsIDczLCA4OCwgMTI4LCA3OCwgNzQsIDczLCA4NCwgMTI4LCA3OCwgNzQsIAorICAgIDczLCA4MCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODgsIDEyOCwgNzgsIDc0LCA3MywgNjksIDg0LCAxMjgsIDc4LCA3NCwgCisgICAgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgNjksIDEyOCwgNzgsIDc0LCA3MywgNjksIDEyOCwgNzgsIDc0LCAKKyAgICA3MywgMTI4LCA3OCwgNzQsIDIwMSwgNzgsIDc0LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA4NCwgMTI4LCAKKyAgICA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3OCwgNjUsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIAorICAgIDc0LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDY5LCAxOTcsIDc4LCA3NCwgCisgICAgNjksIDEyOCwgNzgsIDc0LCA2NSwgODEsIDEyOCwgNzgsIDc0LCA2NSwgODAsIDEyOCwgNzgsIDc0LCA2NSwgNjksIDc3LCAKKyAgICA3NiwgNzMsIDEyOCwgNzgsIDc0LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3NCwgNjUsIDY1LCAxMjgsIDc4LCA3MywgODgsIAorICAgIDEyOCwgNzgsIDczLCA4NCwgODIsIDY5LCAxMjgsIDc4LCA3MywgODMsIDY1LCA3MSwgMTI4LCA3OCwgNzMsIDgyLCA4NSwgCisgICAgNzEsIDg1LCAxMjgsIDc4LCA3MywgODAsIDEyOCwgNzgsIDczLCA3OCwgODQsIDcyLCAxMjgsIDc4LCA3MywgNzgsIDY5LCAKKyAgICA4NCwgODksIDEyOCwgNzgsIDczLCA3OCwgNjksIDg0LCAyMTcsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIDY5LCA3OCwgCisgICAgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDY5LCA2OSwgMjA2LCA3OCwgNzMsIDc4LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCAKKyAgICA4NCwgODksIDEyOCwgNzgsIDczLCA3OCwgMTk3LCA3OCwgNzMsIDc4LCA2OCwgNjUsIDUwLCAxMjgsIDc4LCA3MywgNzgsIAorICAgIDY4LCA2NSwgMTc4LCA3OCwgNzMsIDc4LCA1NywgMTI4LCA3OCwgNzMsIDc4LCAxMjgsIDc4LCA3MywgNzcsIDEyOCwgNzgsIAorICAgIDczLCAyMDUsIDc4LCA3MywgNzUsIDc5LCA3NiwgODMsIDY2LCA4NSwgODIsIDE5OSwgNzgsIDczLCA3NSwgNzIsIDY1LCA3MiwgCisgICAgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCA3MiwgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCAxMjgsIDc4LCAKKyAgICA3MywgNzIsIDgzLCA3MiwgODYsIDY1LCA4MywgNjUsIDEyOCwgNzgsIDczLCA3MSwgNzMsIDY4LCA2NSwgNzcsIDczLCA3OCwgCisgICAgMTI4LCA3OCwgNzMsIDcxLCA3MywgNjgsIDY1LCA2OSwgODMsIDcyLCAxMjgsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCAKKyAgICA3OCwgNzMsIDcxLCA3MiwgMjEyLCA3OCwgNzMsIDcxLCA3MSwgNjUsIDcyLCA3MywgODQsIDY1LCAxMjgsIDc4LCA3MywgNjksIAorICAgIDg4LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDczLCA2OSwgCisgICAgODUsIDc4LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODMsIAorICAgIDczLCA3OSwgODMsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc4LCA3MywgCisgICAgNjksIDg1LCA3OCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MCwgNjUsIAorICAgIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKKyAgICAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIAorICAgIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCAKKyAgICA2NywgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDIwNiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzgsIDczLCA2OSwgMTI4LCAKKyAgICA3OCwgNzMsIDY2LCAxMjgsIDc4LCA3MywgNjUsIDEyOCwgNzgsIDczLCA1MCwgMTI4LCA3OCwgNzIsIDg1LCA2OSwgMTI4LCAKKyAgICA3OCwgNzIsIDc0LCA2NSwgMTI4LCA3OCwgNzIsIDEyOCwgNzgsIDcxLCA4OSwgNjksIDEyOCwgNzgsIDcxLCA4NiwgNjksIAorICAgIDEyOCwgNzgsIDcxLCA4NSwgODUsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4NCwgCisgICAgMTI4LCA3OCwgNzEsIDg1LCA3OSwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNzgsIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDY5LCAKKyAgICA4NCwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3OSwgODgsIDEyOCwgNzgsIDcxLCA3OSwgODUsIAorICAgIDEyOCwgNzgsIDcxLCA3OSwgMjEzLCA3OCwgNzEsIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIAorICAgIDc5LCA4MCwgMTI4LCA3OCwgNzEsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDc5LCA2OSwgCisgICAgNzIsIDEyOCwgNzgsIDcxLCA3OSwgNjksIDIwMCwgNzgsIDcxLCAyMDcsIDc4LCA3MSwgNzUsIDg5LCA2OSwgNjksIDEyOCwgCisgICAgNzgsIDcxLCA3NSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDg1LCAKKyAgICA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDY5LCA3OCwgOTAsIDY5LCA4NSwgNzcsIAorICAgIDEyOCwgNzgsIDcxLCA3NSwgODUsIDE5NywgNzgsIDcxLCA3NSwgNzMsIDc4LCA2OCwgMjAxLCA3OCwgNzEsIDc1LCA3MywgCisgICAgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA4MiwgNzMsIAorICAgIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA3NywgCisgICAgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCAKKyAgICA2NSwgNzcsIDczLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIAorICAgIDczLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA3MywgNjksIDEyOCwgNzgsIDcxLCA3MiwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgCisgICAgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgwLCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgODEsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCAyMDksIDc4LCA3MSwgNzEsIAorICAgIDg1LCA3OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzcsIDEyOCwgCisgICAgNzgsIDcxLCA3MSwgODUsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgODMsIDcyLCA2NSwgMTk3LCAKKyAgICA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCAyMDYsIDc4LCA3MSwgNzEsIDg1LCA2NSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgCiAgICAgMTI4LCA3OCwgNzEsIDcxLCA3OSwgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzMsIDEyOCwgCiAgICAgNzgsIDcxLCA3MSwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDcxLCAKICAgICA3MSwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDIxMywgNzgsIDcxLCA3MSwgNjksIDc4LCAxMjgsIAogICAgIDc4LCA3MSwgNzEsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgCiAgICAgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDcxLCAKLSAgICA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgMTI4LCA3OCwgNzEsIDcxLCAxMjgsIAotICAgIDc4LCA3MSwgNjksIDg4LCAxMjgsIDc4LCA3MSwgNjksIDg1LCA4MiwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNzEsIDY5LCA4MCwgCi0gICAgMTI4LCA3OCwgNzEsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDY5LCA2NSwgNjgsIDY1LCAKLSAgICA3NiwgMTI4LCA3OCwgNzEsIDY1LCA4OCwgMTI4LCA3OCwgNzEsIDY1LCA4NSwgMTI4LCA3OCwgNzEsIDY1LCA4NCwgMTI4LCAKLSAgICA3OCwgNzEsIDY1LCAyMTEsIDc4LCA3MSwgNjUsIDgxLCAxMjgsIDc4LCA3MSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNjUsIAotICAgIDc4LCA3MSwgODUsIDEyOCwgNzgsIDcxLCA2NSwgNzgsIDEyOCwgNzgsIDcxLCA2NSwgNzMsIDEyOCwgNzgsIDcxLCA2NSwgCi0gICAgNzIsIDEyOCwgNzgsIDcxLCA2NSwgNjUsIDczLCAxMjgsIDc4LCA3MSwgMTkzLCA3OCwgNzAsIDEyOCwgNzgsIDY5LCA4OCwgCi0gICAgMjEyLCA3OCwgNjksIDg4LCAxMjgsIDc4LCA2OSwgODcsIDgzLCA4MCwgNjUsIDgwLCA2OSwgODIsIDEyOCwgNzgsIDY5LCAKLSAgICA4NywgNzYsIDczLCA3OCwgNjksIDEyOCwgNzgsIDY5LCA4NywgMTI4LCA3OCwgNjksIDg1LCA4NCwgODIsIDY1LCAyMDQsIAotICAgIDc4LCA2OSwgODUsIDg0LCA2OSwgODIsIDEyOCwgNzgsIDY5LCA4NCwgMTI4LCA3OCwgNjksIDIxMiwgNzgsIDY5LCA4MywgCi0gICAgODQsIDY5LCAxOTYsIDc4LCA2OSwgODEsIDg1LCA2OCwgNjUsIDY1LCAxMjgsIDc4LCA2OSwgODAsIDg0LCA4NSwgNzgsIDY5LCAKLSAgICAxMjgsIDc4LCA2OSwgODAsIDEyOCwgNzgsIDY5LCA3OSwgMTI4LCA3OCwgNjksIDIwNywgNzgsIDY5LCA3OCwgNjUsIDc4LCAKLSAgICA3OSwgMTI4LCA3OCwgNjksIDc4LCAxMjgsIDc4LCA2OSwgNzYsIDEyOCwgNzgsIDY5LCA3MywgODQsIDcyLCA2OSwgMjEwLCAKLSAgICA3OCwgNjksIDcxLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNjksIDcxLCA2NSwgODQsIDY5LCAxOTYsIDc4LCA2OSwgNjcsIAotICAgIDc1LCA4NCwgNzMsIDY5LCAxMjgsIDc4LCA2OSwgNjYsIDY5LCA3OCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3OCwgCi0gICAgNjgsIDg1LCA4OCwgMTI4LCA3OCwgNjgsIDg1LCA4NCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDY4LCAKLSAgICA4NSwgODIsIDEyOCwgNzgsIDY4LCA4NSwgODAsIDEyOCwgNzgsIDY4LCA4NSwgNzgsIDEyOCwgNzgsIDY4LCAyMTMsIDc4LCAKLSAgICA2OCwgNzksIDg4LCAxMjgsIDc4LCA2OCwgNzksIDg0LCAxMjgsIDc4LCA2OCwgNzksIDgwLCAxMjgsIDc4LCA2OCwgNzksIAotICAgIDc5LCAxMjgsIDc4LCA2OCwgNzksIDc4LCAxMjgsIDc4LCA2OCwgNzksIDc3LCA2NiwgODUsIDEyOCwgNzgsIDY4LCA3OSwgCi0gICAgNzYsIDE5NywgNzgsIDY4LCA3MywgODgsIDEyOCwgNzgsIDY4LCA3MywgODQsIDEyOCwgNzgsIDY4LCA3MywgODEsIDEyOCwgCi0gICAgNzgsIDY4LCA3MywgODAsIDEyOCwgNzgsIDY4LCA3MywgNjksIDg4LCAxMjgsIDc4LCA2OCwgNzMsIDY5LCAxMjgsIDc4LCAKLSAgICA2OCwgNzMsIDY4LCA2NSwgMTI4LCA3OCwgNjgsIDczLCA2NSwgODEsIDEyOCwgNzgsIDY4LCA2OSwgODgsIDEyOCwgNzgsIAotICAgIDY4LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgNjUsIDY5LCA4MiwgCi0gICAgNjksIDY5LCAxMjgsIDc4LCA2OCwgNjksIDgwLCAxMjgsIDc4LCA2OCwgNjksIDY5LCAxMjgsIDc4LCA2OCwgNjksIDEyOCwgCi0gICAgNzgsIDY4LCA2NSwgODgsIDEyOCwgNzgsIDY4LCA2NSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgODAsIDEyOCwgNzgsIDY4LCAKLSAgICA2NSwgNzcsIDEyOCwgNzgsIDY4LCA2NSwgNjUsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNjgsIAotICAgIDY1LCA2NSwgMTI4LCA3OCwgNjgsIDY1LCAxOTMsIDc4LCA2NiwgODksIDg4LCAxMjgsIDc4LCA2NiwgODksIDg0LCAxMjgsIAotICAgIDc4LCA2NiwgODksIDgyLCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4MiwgMTI4LCA3OCwgNjYsIDg5LCA4MCwgMTI4LCA3OCwgCi0gICAgNjYsIDg5LCAxMjgsIDc4LCA2NiwgODUsIDg4LCAxMjgsIDc4LCA2NiwgODUsIDg0LCAxMjgsIDc4LCA2NiwgODUsIDgyLCAKLSAgICA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4MiwgMTI4LCA3OCwgNjYsIDg1LCA4MCwgMTI4LCA3OCwgNjYsIDg1LCAxMjgsIDc4LCAKLSAgICA2NiwgNzksIDg4LCAxMjgsIDc4LCA2NiwgNzksIDg0LCAxMjgsIDc4LCA2NiwgNzksIDgwLCAxMjgsIDc4LCA2NiwgNzksIAotICAgIDEyOCwgNzgsIDY2LCA3MywgODgsIDEyOCwgNzgsIDY2LCA3MywgODQsIDEyOCwgNzgsIDY2LCA3MywgODAsIDEyOCwgNzgsIAotICAgIDY2LCA3MywgNjksIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgMTI4LCA3OCwgCi0gICAgNjYsIDczLCAxMjgsIDc4LCA2NiwgNzIsIDEyOCwgNzgsIDY2LCA2NSwgODgsIDEyOCwgNzgsIDY2LCA2NSwgODQsIDEyOCwgCi0gICAgNzgsIDY2LCA2NSwgODAsIDEyOCwgNzgsIDY2LCA2NSwgMTI4LCA3OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCAKLSAgICA3OCwgNjUsIDg5LCAxMjgsIDc4LCA2NSwgODgsIDczLCA2NSwgMjA2LCA3OCwgNjUsIDg4LCAxMjgsIDc4LCA2NSwgODUsIAotICAgIDg0LCA3MiwgODMsIDEyOCwgNzgsIDY1LCA4NSwgNjgsIDczLCAyMTgsIDc4LCA2NSwgODQsIDg1LCA4MiwgNjUsIDIwNCwgCi0gICAgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzgsIDY1LCA4MywgNzUsIDY1LCA4MCwgMjAxLCA3OCwgNjUsIDgzLCAKLSAgICA3MiwgNzMsIDEyOCwgNzgsIDY1LCA4MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OCwgNjUsIAotICAgIDgzLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzgsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDc4LCA2NSwgCi0gICAgODIsIDEyOCwgNzgsIDY1LCA4MSwgMTI4LCA3OCwgNjUsIDc5LCAyMTEsIDc4LCA2NSwgNzgsIDgzLCA2NSwgNzgsIDY1LCAKLSAgICA4MSwgMTI4LCA3OCwgNjUsIDc4LCA3MSwgNzcsIDc5LCA3OCwgODQsIDcyLCA3OSwgMTI4LCA3OCwgNjUsIDc4LCA2OCwgCi0gICAgMTI4LCA3OCwgNjUsIDc4LCA2NSwgMTI4LCA3OCwgNjUsIDc3LCA2OSwgMTI4LCA3OCwgNjUsIDc3LCAxOTcsIDc4LCA2NSwgCi0gICAgNzcsIDUwLCAxMjgsIDc4LCA2NSwgNzcsIDEyOCwgNzgsIDY1LCA3NSwgMTI4LCA3OCwgNjUsIDczLCA4MiwgMTkzLCA3OCwgCi0gICAgNjUsIDczLCAyMDQsIDc4LCA2NSwgNzEsIDgyLCAyMDEsIDc4LCA2NSwgNzEsIDY1LCA4MiwgMTI4LCA3OCwgNjUsIDcxLCAKLSAgICA2NSwgMTI4LCA3OCwgNjUsIDcxLCAxOTMsIDc4LCA2NSwgNzEsIDEyOCwgNzgsIDY1LCAxOTksIDc4LCA2NSwgNjksIDEyOCwgCi0gICAgNzgsIDY1LCA2NiwgNzYsIDY1LCAxMjgsIDc4LCA2NSwgNjUsIDgzLCA3MywgNzUsIDg5LCA2NSwgODksIDY1LCAxMjgsIDc4LCAKLSAgICA2NSwgNjUsIDc1LCA4MywgNzMsIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNjUsIAotICAgIDE5MywgNzgsIDY1LCA1MCwgMTI4LCA3OCwgNjUsIDQ1LCA1MCwgMTI4LCA3OCwgNDgsIDUyLCA1MCwgMTI4LCA3OCwgNDgsIAotICAgIDUyLCA0OSwgMTI4LCA3OCwgNDgsIDUyLCA0OCwgMTI4LCA3OCwgNDgsIDUxLCA1NywgMTI4LCA3OCwgNDgsIDUxLCA1NiwgCi0gICAgMTI4LCA3OCwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDEyOCwgNzgsIDQ4LCA1MSwgNTQsIDEyOCwgCi0gICAgNzgsIDQ4LCA1MSwgNTMsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUzLCAxMjgsIDc4LCA0OCwgNTEsIDUyLCA2NSwgMTI4LCAKLSAgICA3OCwgNDgsIDUxLCA1MiwgMTI4LCA3OCwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTEsIDEyOCwgNzgsIAotICAgIDQ4LCA1MSwgNTAsIDEyOCwgNzgsIDQ4LCA1MSwgNDksIDEyOCwgNzgsIDQ4LCA1MSwgNDgsIDEyOCwgNzgsIDQ4LCA1MCwgCi0gICAgNTcsIDEyOCwgNzgsIDQ4LCA1MCwgNTYsIDEyOCwgNzgsIDQ4LCA1MCwgNTUsIDEyOCwgNzgsIDQ4LCA1MCwgNTQsIDEyOCwgCi0gICAgNzgsIDQ4LCA1MCwgNTMsIDY1LCAxMjgsIDc4LCA0OCwgNTAsIDUzLCAxMjgsIDc4LCA0OCwgNTAsIDUyLCAxMjgsIDc4LCAKLSAgICA0OCwgNTAsIDUxLCAxMjgsIDc4LCA0OCwgNTAsIDUwLCAxMjgsIDc4LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCA0OCwgNTAsIAotICAgIDQ4LCAxMjgsIDc4LCA0OCwgNDksIDU3LCAxMjgsIDc4LCA0OCwgNDksIDU2LCA2NiwgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgCi0gICAgNjUsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDQ4LCA0OSwgNTQsIDEyOCwgCi0gICAgNzgsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDQ4LCA0OSwgNTEsIDEyOCwgNzgsIDQ4LCAKLSAgICA0OSwgNTAsIDEyOCwgNzgsIDQ4LCA0OSwgNDksIDEyOCwgNzgsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDQ4LCA0OCwgNTcsIAotICAgIDEyOCwgNzgsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIAotICAgIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDQ4LCA0OCwgCi0gICAgNTAsIDEyOCwgNzgsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc4LCA0NSwgNjUsIDgyLCAKLSAgICAyMTcsIDc3LCA4OSwgODgsIDEyOCwgNzcsIDg5LCA4NCwgMTI4LCA3NywgODksIDgzLCA3NiwgNzMsIDg0LCA2OSwgMTI4LCAKLSAgICA3NywgODksIDgwLCAxMjgsIDc3LCA4OSwgNjUsIDEyOCwgNzcsIDg5LCAxOTMsIDc3LCA4OSwgMTI4LCA3NywgMjE3LCA3NywgCi0gICAgODcsIDc5LCA3OSwgMTI4LCA3NywgODcsIDc5LCAxMjgsIDc3LCA4NywgNzMsIDczLCAxMjgsIDc3LCA4NywgNzMsIDEyOCwgCi0gICAgNzcsIDg3LCA2OSwgNjksIDEyOCwgNzcsIDg3LCA2OSwgMTI4LCA3NywgODcsIDY1LCA2NSwgMTI4LCA3NywgODcsIDY1LCAKLSAgICAxMjgsIDc3LCA4NywgMTI4LCA3NywgMjE1LCA3NywgODYsIDgzLCAxMjgsIDc3LCA4NiwgNzksIDgwLCAxMjgsIDc3LCA4NiwgCi0gICAgNzMsIDEyOCwgNzcsIDg2LCA2OSwgODUsIDY1LCA2OSwgNzgsIDcxLCA2NSwgNzcsIDEyOCwgNzcsIDg2LCAxMjgsIDc3LCAKLSAgICAyMTQsIDc3LCA4NSwgODgsIDEyOCwgNzcsIDg1LCA4NSwgODMsIDczLCA3NSwgNjUsIDg0LCA3OSwgNjUsIDc4LCAxMjgsIAotICAgIDc3LCA4NSwgODUsIDgyLCA2OCwgNzIsIDY1LCA3NCwgMTkzLCA3NywgODUsIDg1LCAxMjgsIDc3LCA4NSwgODQsIDEyOCwgCi0gICAgNzcsIDg1LCA4MywgNzMsIDY3LCAxMjgsIDc3LCA4NSwgODMsIDczLCAxOTUsIDc3LCA4NSwgODMsIDcyLCA4MiwgNzksIDc5LCAKLSAgICA3NywgMTI4LCA3NywgODUsIDgzLCA3MiwgNTEsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDE3OSwgNzcsIDg1LCA4MywgNzIsIAotICAgIDEyOCwgNzcsIDg1LCA4MywgMjAwLCA3NywgODUsIDgyLCA4OCwgMTI4LCA3NywgODUsIDgyLCA3MSwgODUsIDUwLCAxMjgsIAotICAgIDc3LCA4NSwgODIsIDY5LCAxMjgsIDc3LCA4NSwgODIsIDY4LCA2NSwgMTI4LCA3NywgODUsIDgyLCA2OCwgMTkzLCA3NywgCi0gICAgODUsIDgyLCAxMjgsIDc3LCA4NSwgODEsIDY4LCA2NSwgNzcsIDEyOCwgNzcsIDg1LCA4MCwgMTI4LCA3NywgODUsIDc5LCAKLSAgICA4OCwgMTI4LCA3NywgODUsIDc5LCA4NCwgMTI4LCA3NywgODUsIDc5LCA4MCwgMTI4LCA3NywgODUsIDc5LCA3NywgNjUsIAotICAgIDY5LCAxMjgsIDc3LCA4NSwgNzksIDEyOCwgNzcsIDg1LCA3OCwgODMsIDg1LCA2NiwgMTI4LCA3NywgODUsIDc4LCA2NSwgCi0gICAgNzIsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MywgNjksIDg0LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODMsIDY5LCAKLSAgICAyMTIsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3NywgODUsIAotICAgIDc2LCA4NCwgNzMsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCAKLSAgICA3NiwgMTk3LCA3NywgODUsIDc2LCA4NCwgNzMsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NywgODUsIDc2LCA4NCwgNzMsIAotICAgIDc3LCA2NSwgODAsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDIwMSwgNzcsIDg1LCA3NSwgODAsIDcyLCA4MiwgNjksIDc4LCA3MSwgCi0gICAgMTI4LCA3NywgODUsIDczLCA3OCwgMTI4LCA3NywgODUsIDcxLCA4MywgMTI4LCA3NywgODUsIDcxLCAxMjgsIDc3LCA4NSwgCi0gICAgMTk5LCA3NywgODUsIDY5LCAxMjgsIDc3LCA4NSwgNjcsIDcyLCAxMjgsIDc3LCA4NSwgNjcsIDIwMCwgNzcsIDg1LCA2NywgCi0gICAgNjUsIDY1LCA2OCwgMTI4LCA3NywgODUsIDY1LCA3OCwgMTI4LCA3NywgODUsIDY1LCA2OSwgMTI4LCA3NywgODUsIDQ1LCAKLSAgICA3MSwgNjUsIDY1LCA3MiwgNzYsIDY1LCAxOTMsIDc3LCAyMTMsIDc3LCA4MywgMTI4LCA3NywgODAsIDY1LCAxMjgsIDc3LCAKLSAgICA3OSwgODksIDY1LCA3MywgMTI4LCA3NywgNzksIDg4LCAxMjgsIDc3LCA3OSwgODYsIDczLCAxOTcsIDc3LCA3OSwgODYsIAotICAgIDY5LCAxOTYsIDc3LCA3OSwgODUsIDg0LCA3MiwgMTI4LCA3NywgNzksIDg1LCA4NCwgMjAwLCA3NywgNzksIDg1LCA4MywgCi0gICAgNjksIDEyOCwgNzcsIDc5LCA4NSwgODMsIDE5NywgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCA4MywgMTI4LCAKLSAgICA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNzcsIAotICAgIDc5LCA4NSwgNzgsIDIxMiwgNzcsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDc3LCA3OSwgODUsIDc4LCAxOTYsIDc3LCA3OSwgCi0gICAgODQsIDcyLCA2OSwgODIsIDEyOCwgNzcsIDc5LCA4NCwgMTI4LCA3NywgNzksIDgyLCA4NCwgODUsIDg1LCA3NywgMTI4LCAKLSAgICA3NywgNzksIDgyLCA4NCwgNjUsIDgyLCAxMjgsIDc3LCA3OSwgODIsIDgwLCA3MiwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgCi0gICAgNjUsIDIwNCwgNzcsIDc5LCA4MiwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDc5LCA4MCwgMTI4LCA3NywgNzksIDc5LCAKLSAgICA4MywgNjksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc3LCA3OSwgNzksIDc4LCAxMjgsIDc3LCA3OSwgNzksIDIwNiwgNzcsIAotICAgIDc5LCA3OSwgNzcsIDgwLCA4NSwgODEsIDEyOCwgNzcsIDc5LCA3OSwgNzcsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDc5LCA3OSwgCi0gICAgMTI4LCA3NywgNzksIDc4LCA4NCwgNzMsIDY5LCA2OSwgNzgsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDcyLCAxMjgsIDc3LCAKLSAgICA3OSwgNzgsIDg0LCAyMDAsIDc3LCA3OSwgNzgsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDc3LCA3OSwgNzgsIDc5LCA4MywgODQsIAotICAgIDY1LCA2NiwgNzYsIDE5NywgNzcsIDc5LCA3OCwgNzksIDgzLCA4MCwgNjUsIDY3LCAxOTcsIDc3LCA3OSwgNzgsIDc5LCA4MiwgCi0gICAgNjUsIDczLCA3NiwgMTI4LCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgNzcsIDc5LCA3OCwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDc3LCA3NywgNzksIDIxMSwgNzcsIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDIwNSwgNzcsIDc5LCA3OCwgNzksIAotICAgIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCA3OSwgCi0gICAgNzgsIDc1LCA2OSwgODksIDEyOCwgNzcsIDc5LCA3OCwgNzUsIDY5LCAyMTcsIDc3LCA3OSwgNzgsIDczLCAxMjgsIDc3LCAKLSAgICA3OSwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc3LCA3OSwgNzgsIDY5LCAyMTcsIDc3LCA3OSwgNzgsIAotICAgIDEyOCwgNzcsIDc5LCAyMDYsIDc3LCA3OSwgNzYsIDEyOCwgNzcsIDc5LCA3MiwgNjUsIDc3LCA3NywgNjUsIDE5NiwgNzcsIAotICAgIDc5LCA2OCwgODUsIDc2LCAyMDcsIDc3LCA3OSwgNjgsIDY5LCA4MywgODQsIDg5LCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA3NiwgCi0gICAgODMsIDEyOCwgNzcsIDc5LCA2OCwgNjksIDc2LCAxMjgsIDc3LCA3OSwgNjgsIDY5LCAxMjgsIDc3LCA3OSwgNjYsIDczLCAKLSAgICA3NiwgMTk3LCA3NywgNzksIDY1LCAxMjgsIDc3LCAyMDcsIDc3LCA3OCwgODksIDY1LCAyMDUsIDc3LCA3OCwgNjUsIDgzLCAKLSAgICAxMjgsIDc3LCA3NywgODMsIDgwLCAxMjgsIDc3LCA3NywgMTI4LCA3NywgMjA1LCA3NywgNzYsIDY1LCAxMjgsIDc3LCA3NiwgCi0gICAgMTI4LCA3NywgNzUsIDgwLCA2NSwgODIsIDY1LCAyMDksIDc3LCA3MywgODgsIDEyOCwgNzcsIDczLCA4NCwgMTI4LCA3NywgCi0gICAgNzMsIDgzLCA4MiwgNjUsIDEyOCwgNzcsIDczLCA4MiwgNzMsIDY2LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA3NywgNzMsIDgyLCAKLSAgICA3MywgMTI4LCA3NywgNzMsIDgyLCA2OSwgNjgsIDEyOCwgNzcsIDczLCA4MCwgMTI4LCA3NywgNzMsIDc4LCA4OSwgMTI4LCAKLSAgICA3NywgNzMsIDc4LCA4NSwgODMsIDQ1LCA3OSwgODIsIDQ1LCA4MCwgNzYsIDg1LCAyMTEsIDc3LCA3MywgNzgsIDg1LCA4MywgCi0gICAgMTI4LCA3NywgNzMsIDc4LCA3MywgODMsIDg0LCA2OSwgODIsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDc3LCA2NSwgMTI4LCAKLSAgICA3NywgNzMsIDc4LCA3MywgNjgsIDczLCA4MywgNjcsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY2LCA4NSwgODMsIDEyOCwgNzcsIAotICAgIDczLCA3NywgNjksIDEyOCwgNzcsIDczLCA3NywgMTI4LCA3NywgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgMjExLCA3NywgCi0gICAgNzMsIDc2LCA3NiwgNjksIDg0LCAxMjgsIDc3LCA3MywgNzYsIDc2LCAxOTcsIDc3LCA3MywgNzYsIDIwNCwgNzcsIDczLCAKLSAgICA3NiwgNzUsIDIxNywgNzcsIDczLCA3NiwgMTI4LCA3NywgNzMsIDc1LCA4NSwgODIsIDc5LCA3OCwgMTI4LCA3NywgNzMsIAotICAgIDc1LCA4MiwgNzksIDIwNiwgNzcsIDczLCA3NSwgODIsIDczLCAxMjgsIDc3LCA3MywgNzMsIDc4LCAxMjgsIDc3LCA3MywgCi0gICAgNzMsIDEyOCwgNzcsIDczLCAxOTksIDc3LCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDg0LCAKLSAgICA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgCi0gICAgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc4LCA3MywgNjksIAotICAgIDg1LCA3OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzcsIDczLCA2OSwgCi0gICAgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIAotICAgIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA2NSwgNzgsIDgzLCAKLSAgICA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3NywgNzMsIAotICAgIDY5LCA4NSwgNzcsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNjcsIDcyLCAKLSAgICA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzcsIDczLCA2OSwgODUsIDIwNSwgNzcsIDczLCA2OSwgODAsIDEyOCwgNzcsIAotICAgIDczLCA2OSwgNjksIDEyOCwgNzcsIDczLCA2OSwgMTI4LCA3NywgNzMsIDY4LCA3NiwgNzMsIDc4LCAxOTcsIDc3LCA3MywgCi0gICAgNjgsIDY4LCA3NiwgNjksIDQ1LCA4NywgNjksIDc2LCA4MywgMjAwLCA3NywgNzMsIDY4LCA2OCwgNzYsIDE5NywgNzcsIDczLCAKLSAgICAxOTYsIDc3LCA3MywgNjcsIDgyLCA3OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCA3OSwgODAsIAotICAgIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCAyMDcsIDc3LCA3MywgNjcsIDIxMCwgNzcsIDcyLCA5MCwgCi0gICAgMTI4LCA3NywgNzIsIDY1LCAxMjgsIDc3LCA3MiwgMTI4LCA3NywgNzEsIDg1LCA4OCwgMTI4LCA3NywgNzEsIDg1LCA4NCwgCi0gICAgMTI4LCA3NywgNzEsIDg1LCA4MiwgODgsIDEyOCwgNzcsIDcxLCA4NSwgODIsIDEyOCwgNzcsIDcxLCA4NSwgODAsIDEyOCwgCi0gICAgNzcsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDc3LCA3MSwgODUsIDc5LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgMTI4LCAKLSAgICA3NywgNzEsIDg1LCAxMjgsIDc3LCA3MSwgNzksIDg4LCAxMjgsIDc3LCA3MSwgNzksIDg0LCAxMjgsIDc3LCA3MSwgNzksIAotICAgIDgwLCAxMjgsIDc3LCA3MSwgNzksIDEyOCwgNzcsIDcxLCAyMDcsIDc3LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3NywgNzEsIAotICAgIDczLCA2OSwgMTI4LCA3NywgNzEsIDY5LCA4OCwgMTI4LCA3NywgNzEsIDY5LCA4MCwgMTI4LCA3NywgNzEsIDY5LCAxMjgsIAotICAgIDc3LCA3MSwgNjYsIDg1LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCA3OSwgMTI4LCA3NywgNzEsIDY2LCA3OSwgNzAsIDg1LCA3NywgCi0gICAgMTI4LCA3NywgNzEsIDY2LCA3OSwgMTI4LCA3NywgNzEsIDY2LCA3MywgMTI4LCA3NywgNzEsIDY2LCA2OSwgODUsIDc4LCAKLSAgICAxMjgsIDc3LCA3MSwgNjYsIDY5LCA3OCwgMTI4LCA3NywgNzEsIDY2LCA2OSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgNjksIAotICAgIDEyOCwgNzcsIDcxLCA2NiwgNjUsIDgzLCA2NSwgODEsIDEyOCwgNzcsIDcxLCA2NiwgNjUsIDgzLCA2NSwgMTI4LCA3NywgCi0gICAgNzEsIDY1LCA4OCwgMTI4LCA3NywgNzEsIDY1LCA4NCwgMTI4LCA3NywgNzEsIDY1LCA4MCwgMTI4LCA3NywgNzEsIDY1LCAKLSAgICAxMjgsIDc3LCA3MSwgMTI4LCA3NywgNzAsIDc5LCA3OCwgMTI4LCA3NywgNzAsIDc5LCAyMDYsIDc3LCA3MCwgNzksIDEyOCwgCi0gICAgNzcsIDcwLCA3MywgODksIDY1LCA4MSwgMTI4LCA3NywgNzAsIDczLCA2OSwgNjksIDEyOCwgNzcsIDcwLCA2OSwgODUsIDg0LCAKLSAgICAxMjgsIDc3LCA3MCwgNjksIDg1LCA4MSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA3MCwgNjUsIAotICAgIDY1LCAxMjgsIDc3LCA2OSwgOTAsIDkwLCA3OSwgMTI4LCA3NywgNjksIDg4LCAxMjgsIDc3LCA2OSwgODUsIDIxMiwgNzcsIAotICAgIDY5LCA4NSwgODEsIDEyOCwgNzcsIDY5LCA4NSwgNzgsIDc0LCA3OSwgNzcsIDc4LCA2OCwgNjksIDg1LCA4MSwgMTI4LCA3NywgCi0gICAgNjksIDg1LCA3OCwgMTI4LCA3NywgNjksIDg0LCA4MiwgNzksIDEyOCwgNzcsIDY5LCA4NCwgODIsIDczLCA2NywgNjUsIAotICAgIDIwNCwgNzcsIDY5LCA4NCwgODIsIDczLCA2NSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNjksIDg0LCA2OSwgMjExLCA3NywgCi0gICAgNjksIDg0LCA3OSwgNjYsIDY5LCA3NiwgODUsIDgzLCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3NSwgMTI4LCA3NywgNjksIDg0LCAKLSAgICA2OSwgNzEsIDEyOCwgNzcsIDY5LCA4NCwgNjUsIDc2LCAxMjgsIDc3LCA2OSwgODQsIDE5MywgNzcsIDY5LCA4MywgODMsIAotICAgIDY5LCA3OCwgNzMsIDY1LCAyMDYsIDc3LCA2OSwgODMsIDgzLCA2NSwgNzEsIDY5LCAxMjgsIDc3LCA2OSwgODMsIDgzLCA2NSwgCi0gICAgNzEsIDE5NywgNzcsIDY5LCA4MywgNzksIDEyOCwgNzcsIDY5LCA4MywgNzMsIDEyOCwgNzcsIDY5LCA4MywgNzIsIDEyOCwgCi0gICAgNzcsIDY5LCA4MiwgNzksIDczLCA4NCwgNzMsIDE5NSwgNzcsIDY5LCA4MiwgNzUsIDcyLCA2NSwgMTI4LCA3NywgNjksIDgyLCAKLSAgICA3NSwgNzIsIDE5MywgNzcsIDY5LCA4MiwgNzMsIDY4LCA3MywgNjUsIDc4LCA4MywgMTI4LCA3NywgNjksIDgyLCA3MywgCi0gICAgMTI4LCA3NywgNjksIDgyLCA3MSwgNjksIDEyOCwgNzcsIDY5LCA4MiwgNjcsIDg1LCA4MiwgODksIDEyOCwgNzcsIDY5LCAKLSAgICA4MiwgNjcsIDg1LCA4MiwgMjE3LCA3NywgNjksIDc4LCA2OCwgODUsIDg0LCAxMjgsIDc3LCA2OSwgNzgsIDEyOCwgNzcsIAotICAgIDY5LCA3NywgNzksIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgODMsIDcyLCA3MywgODAsIDEyOCwgNzcsIDY5LCA3NywgCi0gICAgNjYsIDY5LCA4MiwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDIxMCwgNzcsIDY5LCA3NywgNDUsIDgxLCA3OSwgODAsIDcyLCAKLSAgICAxMjgsIDc3LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCAyMDUsIDc3LCA2OSwgNzYsIDc5LCA2OCwgNzMsIDE5NSwgNzcsIDY5LCAKLSAgICA3NiwgNzMsIDc1LCAxMjgsIDc3LCA2OSwgNzMsIDkwLCA3MywgMTI4LCA3NywgNjksIDcxLCA2NSwgODQsIDc5LCA3OCwgCisgICAgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDEyOCwgNzgsIDcxLCA2OSwgODgsIDEyOCwgNzgsIDcxLCA2OSwgODUsIDgyLCA2OSwgODUsIAorICAgIDg0LCAxMjgsIDc4LCA3MSwgNjksIDgwLCAxMjgsIDc4LCA3MSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNjksIDY5LCAxMjgsIAorICAgIDc4LCA3MSwgNjksIDY1LCA2OCwgNjUsIDc2LCAxMjgsIDc4LCA3MSwgNjUsIDg4LCAxMjgsIDc4LCA3MSwgNjUsIDg1LCAKKyAgICAxMjgsIDc4LCA3MSwgNjUsIDg0LCAxMjgsIDc4LCA3MSwgNjUsIDIxMSwgNzgsIDcxLCA2NSwgODEsIDEyOCwgNzgsIDcxLCAKKyAgICA2NSwgODAsIDEyOCwgNzgsIDcxLCA2NSwgNzgsIDcxLCA4NSwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgMTI4LCA3OCwgNzEsIAorICAgIDY1LCA3MywgMTI4LCA3OCwgNzEsIDY1LCA3MiwgMTI4LCA3OCwgNzEsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDcxLCAxOTMsIAorICAgIDc4LCA3MCwgMTI4LCA3OCwgNjksIDg4LCAyMTIsIDc4LCA2OSwgODgsIDEyOCwgNzgsIDY5LCA4NywgODMsIDgwLCA2NSwgCisgICAgODAsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg3LCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OCwgNjksIDg3LCA3NiwgNzMsIDc4LCAKKyAgICAxOTcsIDc4LCA2OSwgODcsIDEyOCwgNzgsIDY5LCAyMTUsIDc4LCA2OSwgODUsIDg0LCA4MiwgNjUsIDc2LCAxMjgsIDc4LCAKKyAgICA2OSwgODUsIDg0LCA4MiwgNjUsIDIwNCwgNzgsIDY5LCA4NSwgODQsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg0LCA4NywgNzksIAorICAgIDgyLCA3NSwgNjksIDE5NiwgNzgsIDY5LCA4NCwgMTI4LCA3OCwgNjksIDIxMiwgNzgsIDY5LCA4MywgODQsIDY5LCAxOTYsIAorICAgIDc4LCA2OSwgODIsIDE5NiwgNzgsIDY5LCA4MSwgODUsIDY4LCA2NSwgNjUsIDEyOCwgNzgsIDY5LCA4MCwgODQsIDg1LCA3OCwgCisgICAgNjksIDEyOCwgNzgsIDY5LCA4MCwgMTI4LCA3OCwgNjksIDc5LCAxMjgsIDc4LCA2OSwgMjA3LCA3OCwgNjksIDc4LCA3OSwgCisgICAgNjksIDEyOCwgNzgsIDY5LCA3OCwgNjUsIDc4LCA3OSwgMTI4LCA3OCwgNjksIDc4LCAxMjgsIDc4LCA2OSwgNzYsIDEyOCwgCisgICAgNzgsIDY5LCA3MywgODQsIDcyLCA2OSwgMjEwLCA3OCwgNjksIDcxLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNjksIDcxLCAKKyAgICA2NSwgODQsIDY5LCAxOTYsIDc4LCA2OSwgNjcsIDc1LCA4NCwgNzMsIDY5LCAxMjgsIDc4LCA2OSwgNjcsIDc1LCAxMjgsIAorICAgIDc4LCA2OSwgNjYsIDY5LCA3OCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3OCwgNjgsIDg1LCA4OCwgMTI4LCA3OCwgCisgICAgNjgsIDg1LCA4NCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDY4LCA4NSwgODIsIDEyOCwgNzgsIDY4LCAKKyAgICA4NSwgODAsIDEyOCwgNzgsIDY4LCA4NSwgNzgsIDEyOCwgNzgsIDY4LCAyMTMsIDc4LCA2OCwgNzksIDg4LCAxMjgsIDc4LCAKKyAgICA2OCwgNzksIDg0LCAxMjgsIDc4LCA2OCwgNzksIDgwLCAxMjgsIDc4LCA2OCwgNzksIDc5LCAxMjgsIDc4LCA2OCwgNzksIAorICAgIDc4LCAxMjgsIDc4LCA2OCwgNzksIDc3LCA2NiwgODUsIDEyOCwgNzgsIDY4LCA3OSwgNzYsIDE5NywgNzgsIDY4LCA3MywgCisgICAgODgsIDEyOCwgNzgsIDY4LCA3MywgODQsIDEyOCwgNzgsIDY4LCA3MywgODEsIDEyOCwgNzgsIDY4LCA3MywgODAsIDEyOCwgCisgICAgNzgsIDY4LCA3MywgNjksIDg4LCAxMjgsIDc4LCA2OCwgNzMsIDY5LCAxMjgsIDc4LCA2OCwgNzMsIDY4LCA2NSwgMTI4LCAKKyAgICA3OCwgNjgsIDczLCA2NSwgODEsIDEyOCwgNzgsIDY4LCA2OSwgODgsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDg4LCAxMjgsIAorICAgIDc4LCA2OCwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjksIDY5LCAxMjgsIDc4LCA2OCwgCisgICAgNjksIDgwLCAxMjgsIDc4LCA2OCwgNjksIDY5LCAxMjgsIDc4LCA2OCwgNjksIDEyOCwgNzgsIDY4LCA2NSwgODgsIDEyOCwgCisgICAgNzgsIDY4LCA2NSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgODAsIDEyOCwgNzgsIDY4LCA2NSwgNzcsIDEyOCwgNzgsIDY4LCAKKyAgICA2NSwgNjUsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA2NSwgMTI4LCA3OCwgNjgsIAorICAgIDY1LCAxOTMsIDc4LCA2NywgNzIsIDY1LCA4NSwgMTI4LCA3OCwgNjYsIDg5LCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4NCwgCisgICAgMTI4LCA3OCwgNjYsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODIsIDEyOCwgNzgsIDY2LCA4OSwgODAsIDEyOCwgCisgICAgNzgsIDY2LCA4OSwgMTI4LCA3OCwgNjYsIDg1LCA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4NCwgMTI4LCA3OCwgNjYsIDg1LCAKKyAgICA4MiwgODgsIDEyOCwgNzgsIDY2LCA4NSwgODIsIDEyOCwgNzgsIDY2LCA4NSwgODAsIDEyOCwgNzgsIDY2LCA4NSwgMTI4LCAKKyAgICA3OCwgNjYsIDc5LCA4OCwgMTI4LCA3OCwgNjYsIDc5LCA4NCwgMTI4LCA3OCwgNjYsIDc5LCA4MCwgMTI4LCA3OCwgNjYsIAorICAgIDc5LCAxMjgsIDc4LCA2NiwgNzMsIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDg0LCAxMjgsIDc4LCA2NiwgNzMsIDgwLCAxMjgsIAorICAgIDc4LCA2NiwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgODAsIDEyOCwgNzgsIDY2LCA3MywgNjksIDEyOCwgCisgICAgNzgsIDY2LCA3MywgMTI4LCA3OCwgNjYsIDcyLCAxMjgsIDc4LCA2NiwgNjUsIDg4LCAxMjgsIDc4LCA2NiwgNjUsIDg0LCAKKyAgICAxMjgsIDc4LCA2NiwgNjUsIDgwLCAxMjgsIDc4LCA2NiwgNjUsIDEyOCwgNzgsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgNzgsIDY1LCA4OSwgMTI4LCA3OCwgNjUsIDg4LCA3MywgNjUsIDIwNiwgNzgsIDY1LCA4OCwgMTI4LCA3OCwgNjUsIAorICAgIDg1LCA4NCwgNzIsIDgzLCAxMjgsIDc4LCA2NSwgODUsIDY4LCA3MywgMjE4LCA3OCwgNjUsIDg0LCA4NSwgODIsIDY1LCAKKyAgICAyMDQsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDc4LCA2NSwgODMsIDc1LCA2NSwgODAsIDIwMSwgNzgsIAorICAgIDY1LCA4MywgNzIsIDczLCAxMjgsIDc4LCA2NSwgODMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgNzgsIDY1LCA4MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA2NSwgODMsIDY1LCAyMDQsIDc4LCAKKyAgICA2NSwgODIsIDgyLCA3OSwgMjE1LCA3OCwgNjUsIDgyLCAxMjgsIDc4LCA2NSwgODEsIDEyOCwgNzgsIDY1LCA3OSwgMjExLCAKKyAgICA3OCwgNjUsIDc4LCA4MywgNjUsIDc4LCA2NSwgODEsIDEyOCwgNzgsIDY1LCA3OCwgNzEsIDc3LCA3OSwgNzgsIDg0LCA3MiwgCisgICAgNzksIDEyOCwgNzgsIDY1LCA3OCwgNjgsIDEyOCwgNzgsIDY1LCA3OCwgNjUsIDEyOCwgNzgsIDY1LCA3NywgNjksIDEyOCwgCisgICAgNzgsIDY1LCA3NywgMTk3LCA3OCwgNjUsIDc3LCA1MCwgMTI4LCA3OCwgNjUsIDc3LCAxMjgsIDc4LCA2NSwgNzUsIDEyOCwgCisgICAgNzgsIDY1LCA3MywgODIsIDE5MywgNzgsIDY1LCA3MywgMjA0LCA3OCwgNjUsIDcxLCA4MiwgMjAxLCA3OCwgNjUsIDcxLCAKKyAgICA2NSwgODIsIDEyOCwgNzgsIDY1LCA3MSwgNjUsIDEyOCwgNzgsIDY1LCA3MSwgMTkzLCA3OCwgNjUsIDcxLCAxMjgsIDc4LCAKKyAgICA2NSwgMTk5LCA3OCwgNjUsIDY5LCAxMjgsIDc4LCA2NSwgNjYsIDc2LCA2NSwgMTI4LCA3OCwgNjUsIDY2LCA2NSwgODQsIAorICAgIDY1LCA2OSwgNjUsIDIwNiwgNzgsIDY1LCA2NSwgODMsIDczLCA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgCisgICAgNzUsIDgzLCA3MywgNzUsIDg5LCA2NSwgODksIDY1LCAxMjgsIDc4LCA2NSwgNjUsIDczLCAxMjgsIDc4LCA2NSwgMTkzLCAKKyAgICA3OCwgNjUsIDUyLCAxMjgsIDc4LCA2NSwgNTAsIDEyOCwgNzgsIDY1LCA0NSwgNTAsIDEyOCwgNzgsIDQ4LCA1MiwgNTAsIAorICAgIDEyOCwgNzgsIDQ4LCA1MiwgNDksIDEyOCwgNzgsIDQ4LCA1MiwgNDgsIDEyOCwgNzgsIDQ4LCA1MSwgNTcsIDEyOCwgNzgsIAorICAgIDQ4LCA1MSwgNTYsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDU1LCAxMjgsIDc4LCA0OCwgCisgICAgNTEsIDU0LCAxMjgsIDc4LCA0OCwgNTEsIDUzLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MywgMTI4LCA3OCwgNDgsIDUxLCAKKyAgICA1MiwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDEyOCwgNzgsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIAorICAgIDUxLCAxMjgsIDc4LCA0OCwgNTEsIDUwLCAxMjgsIDc4LCA0OCwgNTEsIDQ5LCAxMjgsIDc4LCA0OCwgNTEsIDQ4LCAxMjgsIAorICAgIDc4LCA0OCwgNTAsIDU3LCAxMjgsIDc4LCA0OCwgNTAsIDU2LCAxMjgsIDc4LCA0OCwgNTAsIDU1LCAxMjgsIDc4LCA0OCwgCisgICAgNTAsIDU0LCAxMjgsIDc4LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OCwgNDgsIDUwLCA1MywgMTI4LCA3OCwgNDgsIDUwLCAKKyAgICA1MiwgMTI4LCA3OCwgNDgsIDUwLCA1MSwgMTI4LCA3OCwgNDgsIDUwLCA1MCwgMTI4LCA3OCwgNDgsIDUwLCA0OSwgMTI4LCAKKyAgICA3OCwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNDgsIDQ5LCA1NywgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgNjYsIDEyOCwgNzgsIAorICAgIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDc4LCA0OCwgNDksIDU2LCAxMjgsIDc4LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA0OCwgCisgICAgNDksIDU0LCAxMjgsIDc4LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA0OCwgNDksIDUyLCAxMjgsIDc4LCA0OCwgNDksIDUxLCAKKyAgICAxMjgsIDc4LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA0OCwgNDksIDQ5LCAxMjgsIDc4LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCAKKyAgICA0OCwgNDgsIDU3LCAxMjgsIDc4LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA0OCwgNDgsIAorICAgIDU0LCAxMjgsIDc4LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA0OCwgNDgsIDUyLCAxMjgsIDc4LCA0OCwgNDgsIDUxLCAxMjgsIAorICAgIDc4LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA0OCwgNDgsIDQ5LCAxMjgsIDc4LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3OCwgCisgICAgNDUsIDY1LCA4MiwgMjE3LCA3NywgODksIDg4LCAxMjgsIDc3LCA4OSwgODQsIDEyOCwgNzcsIDg5LCA4MywgNzYsIDczLCAKKyAgICA4NCwgNjksIDEyOCwgNzcsIDg5LCA4MCwgMTI4LCA3NywgODksIDY1LCAxMjgsIDc3LCA4OSwgMTkzLCA3NywgODksIDEyOCwgCisgICAgNzcsIDIxNywgNzcsIDg3LCA3OSwgNzksIDEyOCwgNzcsIDg3LCA3OSwgMTI4LCA3NywgODcsIDczLCA3MywgMTI4LCA3NywgCisgICAgODcsIDczLCAxMjgsIDc3LCA4NywgNjksIDY5LCAxMjgsIDc3LCA4NywgNjksIDEyOCwgNzcsIDg3LCA2NSwgNjUsIDEyOCwgCisgICAgNzcsIDg3LCA2NSwgMTI4LCA3NywgODcsIDEyOCwgNzcsIDIxNSwgNzcsIDg2LCA4MywgMTI4LCA3NywgODYsIDc5LCA4MCwgCisgICAgMTI4LCA3NywgODYsIDczLCAxMjgsIDc3LCA4NiwgNjksIDg1LCA2NSwgNjksIDc4LCA3MSwgNjUsIDc3LCAxMjgsIDc3LCAKKyAgICA4NiwgMTI4LCA3NywgMjE0LCA3NywgODUsIDg4LCAxMjgsIDc3LCA4NSwgODUsIDgzLCA3MywgNzUsIDY1LCA4NCwgNzksIAorICAgIDY1LCA3OCwgMTI4LCA3NywgODUsIDg1LCA4MiwgNjgsIDcyLCA2NSwgNzQsIDE5MywgNzcsIDg1LCA4NSwgMTI4LCA3NywgCisgICAgODUsIDg0LCAxMjgsIDc3LCA4NSwgODMsIDczLCA2NywgMTI4LCA3NywgODUsIDgzLCA3MywgMTk1LCA3NywgODUsIDgzLCAKKyAgICA3MiwgODIsIDc5LCA3OSwgNzcsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDUxLCAxMjgsIDc3LCA4NSwgODMsIDcyLCAxNzksIAorICAgIDc3LCA4NSwgODMsIDcyLCAxMjgsIDc3LCA4NSwgODMsIDIwMCwgNzcsIDg1LCA4MywgMTI4LCA3NywgODUsIDgyLCA4OCwgCisgICAgMTI4LCA3NywgODUsIDgyLCA3MSwgODUsIDUwLCAxMjgsIDc3LCA4NSwgODIsIDY5LCAxMjgsIDc3LCA4NSwgODIsIDY4LCAKKyAgICA2NSwgMTI4LCA3NywgODUsIDgyLCA2OCwgMTkzLCA3NywgODUsIDgyLCAxMjgsIDc3LCA4NSwgODEsIDY4LCA2NSwgNzcsIAorICAgIDEyOCwgNzcsIDg1LCA4MCwgMTI4LCA3NywgODUsIDc5LCA4OCwgMTI4LCA3NywgODUsIDc5LCA4NCwgMTI4LCA3NywgODUsIAorICAgIDc5LCA4MCwgMTI4LCA3NywgODUsIDc5LCA3NywgNjUsIDY5LCAxMjgsIDc3LCA4NSwgNzksIDEyOCwgNzcsIDg1LCA3OCwgCisgICAgODMsIDg1LCA2NiwgMTI4LCA3NywgODUsIDc4LCA2NSwgNzIsIDEyOCwgNzcsIDg1LCA3OCwgMTI4LCA3NywgODUsIDc2LCAKKyAgICA4NCwgNzMsIDgzLCA2OSwgODQsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MywgNjksIDIxMiwgNzcsIDg1LCA3NiwgODQsIAorICAgIDczLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCAKKyAgICA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCA2OSwgMTI4LCA3NywgODUsIAorICAgIDc2LCA4NCwgNzMsIDgwLCA3NiwgMTk3LCA3NywgODUsIDc2LCA4NCwgNzMsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NywgCisgICAgODUsIDc2LCA4NCwgNzMsIDc3LCA2NSwgODAsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDIwMSwgNzcsIDg1LCA3NiwgODQsIDY1LCAKKyAgICA3OCwgMjAxLCA3NywgODUsIDc1LCA4MCwgNzIsIDgyLCA2OSwgNzgsIDcxLCAxMjgsIDc3LCA4NSwgNzMsIDc4LCAxMjgsIAorICAgIDc3LCA4NSwgNzEsIDgzLCAxMjgsIDc3LCA4NSwgNzEsIDEyOCwgNzcsIDg1LCAxOTksIDc3LCA4NSwgNjksIDc4LCAxMjgsIAorICAgIDc3LCA4NSwgNjksIDEyOCwgNzcsIDg1LCA2NywgNzIsIDEyOCwgNzcsIDg1LCA2NywgMjAwLCA3NywgODUsIDY3LCA2NSwgCisgICAgNjUsIDY4LCAxMjgsIDc3LCA4NSwgNjUsIDgzLCAxMjgsIDc3LCA4NSwgNjUsIDc4LCAxMjgsIDc3LCA4NSwgNjUsIDY5LCAKKyAgICAxMjgsIDc3LCA4NSwgNDUsIDcxLCA2NSwgNjUsIDcyLCA3NiwgNjUsIDE5MywgNzcsIDIxMywgNzcsIDgzLCAxMjgsIDc3LCAKKyAgICA4MiwgMjA3LCA3NywgODAsIDY1LCAxMjgsIDc3LCA3OSwgODksIDY1LCA3MywgMTI4LCA3NywgNzksIDg4LCAxMjgsIDc3LCAKKyAgICA3OSwgODYsIDczLCAxOTcsIDc3LCA3OSwgODYsIDY5LCAyMTEsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIAorICAgIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA3MiwgNzMsIDc4LCA3MSwgMTk3LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCA3MCwgNzYsIDc5LCA3OSwgCisgICAgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIDY4LCA3MywgNjUsIAorICAgIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA3NywgNzksIDg2LCA2OSwgCisgICAgNzcsIDY5LCA3OCwgMjEyLCA3NywgNzksIDg2LCA2OSwgMTk2LCA3NywgNzksIDg2LCA2OSwgMTI4LCA3NywgNzksIDg1LCAKKyAgICA4NCwgNzIsIDEyOCwgNzcsIDc5LCA4NSwgODMsIDY5LCAxMjgsIDc3LCA3OSwgODUsIDgzLCAxOTcsIDc3LCA3OSwgODUsIAorICAgIDc4LCA4NCwgNjUsIDczLCA3OCwgODMsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAxMjgsIDc3LCA3OSwgCisgICAgODUsIDc4LCA4NCwgNjUsIDczLCAyMDYsIDc3LCA3OSwgODUsIDc4LCAyMTIsIDc3LCA3OSwgODUsIDc4LCA2OCwgMTI4LCAKKyAgICA3NywgNzksIDg1LCA3OCwgMTk2LCA3NywgNzksIDg0LCA3OSwgODIsIDg3LCA2NSwgODksIDEyOCwgNzcsIDc5LCA4NCwgNzksIAorICAgIDgyLCA2NywgODksIDY3LCA3NiwgNjksIDEyOCwgNzcsIDc5LCA4NCwgNzksIDIxMCwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4MiwgCisgICAgMTI4LCA3NywgNzksIDg0LCAxMjgsIDc3LCA3OSwgODMsIDgxLCA4NSwgNjksIDEyOCwgNzcsIDc5LCA4MiwgODQsIDg1LCAKKyAgICA4NSwgNzcsIDEyOCwgNzcsIDc5LCA4MiwgODQsIDY1LCA4MiwgMTI4LCA3NywgNzksIDgyLCA4MCwgNzIsIDc5LCA3NiwgNzksIAorICAgIDcxLCA3MywgNjcsIDY1LCAyMDQsIDc3LCA3OSwgODIsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc3LCA3OSwgODAsIDEyOCwgCisgICAgNzcsIDc5LCA3OSwgODMsIDY5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3NywgNzksIDc5LCA3OCwgMTI4LCA3NywgNzksIDc5LCAKKyAgICAyMDYsIDc3LCA3OSwgNzksIDc3LCA4MCwgODUsIDgxLCAxMjgsIDc3LCA3OSwgNzksIDc3LCA2OSwgODUsIDg0LCAxMjgsIAorICAgIDc3LCA3OSwgNzksIDY4LCAxMjgsIDc3LCA3OSwgNzksIDE5NiwgNzcsIDc5LCA3OSwgMTI4LCA3NywgNzksIDc4LCA4NCwgCisgICAgNzMsIDY5LCA2OSwgNzgsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDcyLCAxMjgsIDc3LCA3OSwgNzgsIDg0LCAyMDAsIDc3LCAKKyAgICA3OSwgNzgsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDc3LCA3OSwgNzgsIDc5LCA4MywgODQsIDY1LCA2NiwgNzYsIDE5NywgNzcsIAorICAgIDc5LCA3OCwgNzksIDgzLCA4MCwgNjUsIDY3LCAxOTcsIDc3LCA3OSwgNzgsIDc5LCA4MiwgNjUsIDczLCA3NiwgMTI4LCA3NywgCisgICAgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgNzcsIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDc3LCA3NywgNzksIAorICAgIDIxMSwgNzcsIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDIwNSwgNzcsIDc5LCA3OCwgNzksIDcwLCA3OSwgNzgsIDczLCA2NSwgCisgICAgODMsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCA3OSwgNzgsIDc1LCA2OSwgODksIAorICAgIDEyOCwgNzcsIDc5LCA3OCwgNzUsIDY5LCAyMTcsIDc3LCA3OSwgNzgsIDczLCAxMjgsIDc3LCA3OSwgNzgsIDcxLCA3NSwgCisgICAgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc3LCA3OSwgNzgsIDY5LCA4OSwgNDUsIDc3LCA3OSwgODUsIDg0LCAyMDAsIDc3LCAKKyAgICA3OSwgNzgsIDY5LCAyMTcsIDc3LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCAyMDYsIDc3LCA3OSwgNzYsIDEyOCwgNzcsIDc5LCAKKyAgICA3MiwgNjUsIDc3LCA3NywgNjUsIDE5NiwgNzcsIDc5LCA2OCwgODUsIDc2LCAyMDcsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIAorICAgIDY5LCA4MiwgNDUsIDU3LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDU2LCAxMjgsIDc3LCA3OSwgCisgICAgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDU1LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIAorICAgIDU0LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDUzLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgCisgICAgNzMsIDY5LCA4MiwgNDUsIDUyLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDUxLCAxMjgsIDc3LCAKKyAgICA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDUwLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgCisgICAgNDUsIDQ5LCA1NCwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTMsIDEyOCwgNzcsIDc5LCAKKyAgICA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDUyLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgCisgICAgNDUsIDQ5LCA1MSwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTAsIDEyOCwgNzcsIDc5LCAKKyAgICA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDQ5LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgCisgICAgNDUsIDQ5LCA0OCwgMTI4LCA3NywgNzksIDY4LCAyMDEsIDc3LCA3OSwgNjgsIDY5LCA4MywgODQsIDg5LCAxMjgsIDc3LCAKKyAgICA3OSwgNjgsIDY5LCA3NywgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIDgzLCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA3NiwgCisgICAgMTI4LCA3NywgNzksIDY4LCA2OSwgMTI4LCA3NywgNzksIDY2LCA3MywgNzYsIDE5NywgNzcsIDc5LCA2NSwgMTI4LCA3NywgCisgICAgMjA3LCA3NywgNzgsIDg5LCA2NSwgMjA1LCA3NywgNzgsIDY1LCA4MywgMTI4LCA3NywgNzcsIDgzLCA4MCwgMTI4LCA3NywgCisgICAgNzcsIDEyOCwgNzcsIDIwNSwgNzcsIDc2LCA2NSwgMTI4LCA3NywgNzYsIDEyOCwgNzcsIDc1LCA4MCwgNjUsIDgyLCA2NSwgCisgICAgMjA5LCA3NywgNzMsIDg4LCAxMjgsIDc3LCA3MywgODQsIDEyOCwgNzcsIDczLCA4MywgODIsIDY1LCAxMjgsIDc3LCA3MywgCisgICAgODIsIDczLCA2NiwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzcsIDczLCA4MiwgNzMsIDEyOCwgNzcsIDczLCA4MiwgNjksIDY4LCAKKyAgICAxMjgsIDc3LCA3MywgODAsIDEyOCwgNzcsIDczLCA3OCwgODksIDEyOCwgNzcsIDczLCA3OCwgODUsIDgzLCA0NSwgNzksIAorICAgIDgyLCA0NSwgODAsIDc2LCA4NSwgMjExLCA3NywgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDgzLCA4NCwgCisgICAgNjksIDgyLCAxMjgsIDc3LCA3MywgNzgsIDczLCA3NywgNzMsIDkwLCA2OSwgMTI4LCA3NywgNzMsIDc4LCA3MywgNzcsIDY1LCAKKyAgICAxMjgsIDc3LCA3MywgNzgsIDczLCA2OCwgNzMsIDgzLCA2NywgMTI4LCA3NywgNzMsIDc4LCA3MywgNjYsIDg1LCA4MywgCisgICAgMTI4LCA3NywgNzMsIDc3LCA2OSwgMTI4LCA3NywgNzMsIDc3LCAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCAKKyAgICA4MywgMTI4LCA3NywgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgMjExLCA3NywgNzMsIDc2LCA3NiwgNjksIDg0LCAxMjgsIAorICAgIDc3LCA3MywgNzYsIDc2LCAxOTcsIDc3LCA3MywgNzYsIDIwNCwgNzcsIDczLCA3NiwgNzUsIDIxNywgNzcsIDczLCA3NiwgCisgICAgNzMsIDg0LCA2NSwgODIsIDIxNywgNzcsIDczLCA3NiwgMTI4LCA3NywgNzMsIDc1LCA4NSwgODIsIDc5LCA3OCwgMTI4LCAKKyAgICA3NywgNzMsIDc1LCA4MiwgNzksIDIwNiwgNzcsIDczLCA3NSwgODIsIDczLCAxMjgsIDc3LCA3MywgNzMsIDc4LCAxMjgsIAorICAgIDc3LCA3MywgNzMsIDEyOCwgNzcsIDczLCAxOTksIDc3LCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgCisgICAgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCA2NSwgNzgsIAorICAgIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc4LCAKKyAgICA3MywgNjksIDg1LCA3OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzcsIAorICAgIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCAKKyAgICA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA2NSwgCisgICAgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCAKKyAgICA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgCisgICAgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzcsIDczLCA2OSwgODUsIDIwNSwgNzcsIDczLCA2OSwgODAsIAorICAgIDEyOCwgNzcsIDczLCA2OSwgNjksIDEyOCwgNzcsIDczLCA2OSwgMTI4LCA3NywgNzMsIDY4LCA3NiwgNzMsIDc4LCAxOTcsIAorICAgIDc3LCA3MywgNjgsIDY4LCA3NiwgNjksIDQ1LCA4NywgNjksIDc2LCA4MywgMjAwLCA3NywgNzMsIDY4LCA2OCwgNzYsIDY5LCAKKyAgICAxMjgsIDc3LCA3MywgNjgsIDQ1LCA3NiwgNjksIDg2LCA2OSwgMjA0LCA3NywgNzMsIDE5NiwgNzcsIDczLCA2NywgODIsIAorICAgIDc5LCA4MywgNjcsIDc5LCA4MCwgNjksIDEyOCwgNzcsIDczLCA2NywgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgCisgICAgNzcsIDczLCA2NywgODIsIDIwNywgNzcsIDczLCA2NywgMjEwLCA3NywgNzIsIDkwLCAxMjgsIDc3LCA3MiwgNjUsIDEyOCwgCisgICAgNzcsIDcyLCAxMjgsIDc3LCA3MSwgODUsIDg4LCAxMjgsIDc3LCA3MSwgODUsIDg0LCAxMjgsIDc3LCA3MSwgODUsIDgyLCAKKyAgICA4OCwgMTI4LCA3NywgNzEsIDg1LCA4MiwgMTI4LCA3NywgNzEsIDg1LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgODgsIAorICAgIDEyOCwgNzcsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCAxMjgsIDc3LCA3MSwgODUsIDEyOCwgNzcsIAorICAgIDcxLCA3OSwgODgsIDEyOCwgNzcsIDcxLCA3OSwgODQsIDEyOCwgNzcsIDcxLCA3OSwgODAsIDEyOCwgNzcsIDcxLCA3OSwgCisgICAgMTI4LCA3NywgNzEsIDIwNywgNzcsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MSwgNzMsIDY5LCAxMjgsIDc3LCA3MSwgCisgICAgNjksIDg4LCAxMjgsIDc3LCA3MSwgNjksIDgwLCAxMjgsIDc3LCA3MSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgODUsIDEyOCwgCisgICAgNzcsIDcxLCA2NiwgNzksIDc5LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCA3MCwgODUsIDc3LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCAKKyAgICAxMjgsIDc3LCA3MSwgNjYsIDczLCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDcxLCA2NiwgNjksIAorICAgIDc4LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgCisgICAgODMsIDY1LCA4MSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgODMsIDY1LCAxMjgsIDc3LCA3MSwgNjUsIDg4LCAxMjgsIDc3LCAKKyAgICA3MSwgNjUsIDg0LCAxMjgsIDc3LCA3MSwgNjUsIDgwLCAxMjgsIDc3LCA3MSwgNjUsIDEyOCwgNzcsIDcxLCAxMjgsIDc3LCAKKyAgICA3MCwgNzksIDc4LCAxMjgsIDc3LCA3MCwgNzksIDIwNiwgNzcsIDcwLCA3OSwgMTI4LCA3NywgNzAsIDczLCA4OSwgNjUsIAorICAgIDgxLCAxMjgsIDc3LCA3MCwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDcwLCA2OSwgCisgICAgODUsIDgxLCAxMjgsIDc3LCA3MCwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzcsIDcwLCA2NSwgNjUsIDEyOCwgNzcsIDY5LCAKKyAgICA5MCwgOTAsIDc5LCAxMjgsIDc3LCA2OSwgODgsIDEyOCwgNzcsIDY5LCA4NSwgMjEyLCA3NywgNjksIDg1LCA4MSwgMTI4LCAKKyAgICA3NywgNjksIDg1LCA3OCwgNzQsIDc5LCA3NywgNzgsIDY4LCA2OSwgODUsIDgxLCAxMjgsIDc3LCA2OSwgODUsIDc4LCAxMjgsIAorICAgIDc3LCA2OSwgODQsIDgyLCA3OSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNjksIDg0LCA4MiwgCisgICAgNzMsIDY1LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA2OSwgODQsIDY5LCAyMTEsIDc3LCA2OSwgODQsIDc5LCA2NiwgNjksIDc2LCAKKyAgICA4NSwgODMsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDc1LCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3MSwgMTI4LCA3NywgNjksIAorICAgIDg0LCA2NSwgNzYsIDEyOCwgNzcsIDY5LCA4NCwgMTkzLCA3NywgNjksIDgzLCA4MywgNjksIDc4LCA3MywgNjUsIDIwNiwgCisgICAgNzcsIDY5LCA4MywgODMsIDY1LCA3MSwgNjksIDEyOCwgNzcsIDY5LCA4MywgODMsIDY1LCA3MSwgMTk3LCA3NywgNjksIDgzLCAKKyAgICA3OSwgMTI4LCA3NywgNjksIDgzLCA3MywgMTI4LCA3NywgNjksIDgzLCA3MiwgMTI4LCA3NywgNjksIDgyLCA3NSwgNzIsIAorICAgIDY1LCAxMjgsIDc3LCA2OSwgODIsIDc1LCA3MiwgMTkzLCA3NywgNjksIDgyLCA3MywgNjgsIDczLCA2NSwgNzgsIDgzLCAKKyAgICAxMjgsIDc3LCA2OSwgODIsIDczLCAxMjgsIDc3LCA2OSwgODIsIDcxLCA2OSwgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIAorICAgIDgyLCA4OSwgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIDgyLCAyMTcsIDc3LCA2OSwgNzgsIDc5LCA4MiwgNjUsIDIwMCwgCisgICAgNzcsIDY5LCA3OCwgNzksIDY5LCAxMjgsIDc3LCA2OSwgNzgsIDY4LCA4NSwgODQsIDEyOCwgNzcsIDY5LCA3OCwgMTI4LCAKKyAgICA3NywgNjksIDc3LCA3OSwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDgyLCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NywgNjksIAorICAgIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgMjEwLCA3NywgNjksIDc3LCA0NSwgODEsIDc5LCA4MCwgCisgICAgNzIsIDEyOCwgNzcsIDY5LCA3NywgMTI4LCA3NywgNjksIDIwNSwgNzcsIDY5LCA3NiwgNzksIDY4LCA3MywgMTk1LCA3NywgCisgICAgNjksIDc2LCA3MywgNzUsIDEyOCwgNzcsIDY5LCA3MywgOTAsIDczLCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4NCwgNzksIDc4LCAKICAgICAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDc2LCA3MywgCi0gICAgMTI4LCA3NywgNjksIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NywgNjksIDY5LCA4NCwgMTI4LCA3NywgNjksIDY5LCAKLSAgICA3NywgODUsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc3LCA2OSwgNjgsIAotICAgIDczLCA4NSwgNzcsIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDg1LCAyMDUsIDc3LCA2OSwgNjgsIDczLCA2NywgNzMsIDc4LCA2OSwgCi0gICAgMTI4LCA3NywgNjksIDY4LCA3MywgNjcsIDY1LCAyMDQsIDc3LCA2OSwgNjUsIDg0LCAxMjgsIDc3LCA2OSwgNjUsIDIxMiwgCi0gICAgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDE5NiwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDY5LCAKLSAgICA2NSwgODMsIDg1LCA4MiwgMTk3LCA3NywgNjgsIDg1LCAyMDYsIDc3LCAxOTYsIDc3LCA2NywgNzIsIDIxMywgNzcsIDY3LCAKLSAgICA3MiwgNjUsIDIwNiwgNzcsIDE5NSwgNzcsIDY2LCA4NSwgNzksIDgxLCAxMjgsIDc3LCA2NiwgODUsIDc5LCAxMjgsIDc3LCAKLSAgICA2NiwgODUsIDY5LCAxMjgsIDc3LCA2NiwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzcsIDY2LCA4NSwgNjUsIDY5LCAxMjgsIAotICAgIDc3LCA2NiwgNzksIDc5LCAxMjgsIDc3LCA2NiwgNzksIDEyOCwgNzcsIDY2LCA3MywgODQsIDEyOCwgNzcsIDY2LCA3MywgCi0gICAgMjEyLCA3NywgNjYsIDczLCA4MiwgNzMsIDY5LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCA3MywgMTI4LCA3NywgNjYsIDY5LCAKLSAgICA4NSwgODgsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDgyLCA3MywgMTI4LCA3NywgNjYsIDY5LCA4NSwgNzcsIDEyOCwgNzcsIAotICAgIDY2LCA2OSwgODIsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDY5LCA3OCwgMTI4LCA3NywgNjYsIDY5LCA2OSwgNzUsIDY5LCA2OSwgCi0gICAgODQsIDEyOCwgNzcsIDY2LCA2OSwgNjksIDEyOCwgNzcsIDY2LCA2OSwgMTI4LCA3NywgNjYsIDY1LCA4MSwgMTI4LCA3NywgCi0gICAgNjYsIDY1LCA3OCwgODksIDczLCAxMjgsIDc3LCA2NiwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNjUsIDY1LCAKLSAgICA3NSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgNjUsIDY1LCAxMjgsIDc3LCA2NiwgNjUsIDE5MywgNzcsIDY2LCAxOTMsIDc3LCAKLSAgICA2NiwgNTIsIDEyOCwgNzcsIDY2LCA1MSwgMTI4LCA3NywgNjYsIDUwLCAxMjgsIDc3LCA2NiwgMTI4LCA3NywgMTk0LCA3NywgCi0gICAgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NywgNjUsIDg5LCAxMjgsIDc3LCA2NSwgODgsIDczLCA3NywgNjUsIAotICAgIDEyOCwgNzcsIDY1LCA4OCwgMTI4LCA3NywgNjUsIDg1LCAxMjgsIDc3LCA2NSwgODQsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIAotICAgIDc3LCA2NSwgODQsIDgyLCA3MywgODgsIDEyOCwgNzcsIDY1LCA4NCwgNjksIDgyLCA3MywgNjUsIDc2LCA4MywgMTI4LCA3NywgCi0gICAgNjUsIDg0LCAxMjgsIDc3LCA2NSwgODMsIDIxMywgNzcsIDY1LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDY1LCAKLSAgICA4MywgODMsIDY1LCA3MSwgNjksIDEyOCwgNzcsIDY1LCA4MywgNzksIDgyLCAxOTMsIDc3LCA2NSwgODMsIDc1LCAxMjgsIAotICAgIDc3LCA2NSwgODMsIDcyLCA3MCwgNjUsIDY1LCA4NCwgMTI4LCA3NywgNjUsIDgzLCA3MiwgNTAsIDEyOCwgNzcsIDY1LCA4MywgCi0gICAgNjcsIDg1LCA3NiwgNzMsIDc4LCAxOTcsIDc3LCA2NSwgODIsIDg5LCAxMjgsIDc3LCA2NSwgODIsIDg1LCA3NSwgODUsIAotICAgIDEyOCwgNzcsIDY1LCA4MiwgODQsIDg5LCA4MiwgNzMsIDE5MywgNzcsIDY1LCA4MiwgODIsIDg5LCA3MywgNzgsIDE5OSwgCi0gICAgNzcsIDY1LCA4MiwgODIsIDczLCA2NSwgNzEsIDE5NywgNzcsIDY1LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA3NywgNjUsIDgyLCAKLSAgICA3NSwgNDUsIDUyLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTEsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MCwgCi0gICAgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDQ5LCAxMjgsIDc3LCA2NSwgODIsIDY5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCAKLSAgICA3MiwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDg0LCA3OSwgNDUsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgCi0gICAgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDg0LCA3OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDgzLCA3MywgODQsIDY5LCAKLSAgICAxMjgsIDc3LCA2NSwgODIsIDY2LCA4NSwgODQsIDY1LCAxMjgsIDc3LCA2NSwgODIsIDY2LCA4NSwgODQsIDE5MywgNzcsIAotICAgIDY1LCA4MiwgMTI4LCA3NywgNjUsIDgxLCA2NSwgNzAsIDEyOCwgNzcsIDY1LCA4MSwgMTI4LCA3NywgNjUsIDgwLCA3NiwgCi0gICAgMTk3LCA3NywgNjUsIDgwLCA3MywgODEsIDEyOCwgNzcsIDY1LCAyMDgsIDc3LCA2NSwgNzksIDEyOCwgNzcsIDY1LCA3OCwgCi0gICAgODMsIDg5LCA3OSwgNzgsIDEyOCwgNzcsIDY1LCA3OCwgODMsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAyMTgsIDc3LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NywgNjUsIDc4LCA3MSwgNjUsIDc2LCA2NSwgNzcsIDEyOCwgNzcsIAotICAgIDY1LCA3OCwgNjgsIDY1LCA3MywgNzYsIDczLCA3OCwgMTk5LCA3NywgNjUsIDc4LCA2OCwgNjUsIDczLCAxOTUsIDc3LCA2NSwgCi0gICAgNzgsIDY3LCA3MiwgMjEzLCA3NywgNjUsIDc4LCA2NSwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNzcsIDY1LCA3NiwgODQsIDY5LCAKLSAgICA4MywgMTk3LCA3NywgNjUsIDc2LCA2OSwgNjksIDgyLCA3MywgMTI4LCA3NywgNjUsIDc2LCA2OSwgMTI4LCA3NywgNjUsIAotICAgIDc2LCAxOTcsIDc3LCA2NSwgNzYsIDY1LCA3NSwgNzksIDIwNiwgNzcsIDY1LCA3NSwgODMsIDg1LCA4MiwgNjUsIDEyOCwgCi0gICAgNzcsIDY1LCA3NSwgODMsIDg1LCA4MiwgMTkzLCA3NywgNjUsIDczLCA5MCwgNjksIDEyOCwgNzcsIDY1LCA3MywgODksIDY1LCAKLSAgICA3NywgNzksIDc1LCAxMjgsIDc3LCA2NSwgNzMsIDg0LCA2NSwgNzMsIDc1LCA3MiwgODUsIDEyOCwgNzcsIDY1LCA3MywgODIsIAotICAgIDg1LCAxMjgsIDc3LCA2NSwgNzMsIDc3LCA4NSwgNjUsIDc4LCAxMjgsIDc3LCA2NSwgNzMsIDc3LCA2NSwgNzYsIDY1LCA3MywgCisgICAgMTI4LCA3NywgNjksIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NywgNjksIDY5LCA4NCwgNjksIDIwMSwgNzcsIDY5LCAKKyAgICA2OSwgODQsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIDg1LCAxMjgsIDc3LCA2OSwgNjksIDc3LCAxMjgsIDc3LCA2OSwgNjksIAorICAgIDIwMiwgNzcsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA4NSwgNzcsIDEyOCwgNzcsIDY5LCA2OCwgCisgICAgNzMsIDg1LCAyMDUsIDc3LCA2OSwgNjgsIDczLCA2NywgNzMsIDc4LCA2OSwgMTI4LCA3NywgNjksIDY4LCA3MywgNjcsIDY1LCAKKyAgICAyMDQsIDc3LCA2OSwgNjgsIDY1LCA3NiwgMTI4LCA3NywgNjksIDY1LCA4NCwgMTI4LCA3NywgNjksIDY1LCAyMTIsIDc3LCAKKyAgICA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxOTYsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxMjgsIDc3LCA2OSwgNjUsIAorICAgIDgzLCA4NSwgODIsIDE5NywgNzcsIDY4LCA4NSwgMjA2LCA3NywgMTk2LCA3NywgNjcsIDcyLCAyMTMsIDc3LCA2NywgNzIsIAorICAgIDY1LCAyMDYsIDc3LCAxOTUsIDc3LCA2NiwgODUsIDg1LCAxMjgsIDc3LCA2NiwgODUsIDc5LCA4MSwgMTI4LCA3NywgNjYsIAorICAgIDg1LCA3OSwgMTI4LCA3NywgNjYsIDg1LCA2OSwgMTI4LCA3NywgNjYsIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc3LCA2NiwgCisgICAgODUsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDc5LCA3OSwgMTI4LCA3NywgNjYsIDc5LCAxMjgsIDc3LCA2NiwgNzMsIDg0LCAKKyAgICAxMjgsIDc3LCA2NiwgNzMsIDIxMiwgNzcsIDY2LCA3MywgODIsIDczLCA2OSwgNjksIDc4LCAxMjgsIDc3LCA2NiwgNzMsIAorICAgIDEyOCwgNzcsIDY2LCA2OSwgODUsIDg4LCAxMjgsIDc3LCA2NiwgNjksIDg1LCA4MiwgNzMsIDEyOCwgNzcsIDY2LCA2OSwgCisgICAgODUsIDc3LCAxMjgsIDc3LCA2NiwgNjksIDgyLCA2NSwgNjksIDEyOCwgNzcsIDY2LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCAKKyAgICA2OSwgNjksIDc1LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgNjksIDY5LCAxMjgsIDc3LCA2NiwgNjksIDEyOCwgNzcsIAorICAgIDY2LCA2NSwgODEsIDEyOCwgNzcsIDY2LCA2NSwgNzgsIDg5LCA3MywgMTI4LCA3NywgNjYsIDY1LCA2NSwgODIsIDY1LCA2OSwgCisgICAgMTI4LCA3NywgNjYsIDY1LCA2NSwgNzUsIDY5LCA4NCwgMTI4LCA3NywgNjYsIDY1LCA2NSwgMTI4LCA3NywgNjYsIDY1LCAKKyAgICAxOTMsIDc3LCA2NiwgMTkzLCA3NywgNjYsIDUyLCAxMjgsIDc3LCA2NiwgNTEsIDEyOCwgNzcsIDY2LCA1MCwgMTI4LCA3NywgCisgICAgNjUsIDg5LCA2OSwgMjAzLCA3NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NywgNjUsIDg5LCAxMjgsIDc3LCAKKyAgICA2NSwgODgsIDczLCA3NywgNzMsIDkwLCA2OSwgMTI4LCA3NywgNjUsIDg4LCA3MywgNzcsIDY1LCAxMjgsIDc3LCA2NSwgODgsIAorICAgIDEyOCwgNzcsIDY1LCA4NSwgMTI4LCA3NywgNjUsIDg0LCA4NCwgNzksIDY3LCA3NSwgMTI4LCA3NywgNjUsIDg0LCA4MiwgCisgICAgNzMsIDg4LCAxMjgsIDc3LCA2NSwgODQsIDY5LCA4MiwgNzMsIDY1LCA3NiwgODMsIDEyOCwgNzcsIDY1LCA4NCwgMTI4LCAKKyAgICA3NywgNjUsIDgzLCAyMTMsIDc3LCA2NSwgODMsIDgzLCA3MywgNzgsIDcxLCAxMjgsIDc3LCA2NSwgODMsIDgzLCA2NSwgNzEsIAorICAgIDY5LCAxMjgsIDc3LCA2NSwgODMsIDc5LCA4MiwgMTkzLCA3NywgNjUsIDgzLCA3NSwgMTI4LCA3NywgNjUsIDgzLCA3MiwgCisgICAgNzAsIDY1LCA2NSwgODQsIDEyOCwgNzcsIDY1LCA4MywgNzIsIDUwLCAxMjgsIDc3LCA2NSwgODMsIDY3LCA4NSwgNzYsIDczLCAKKyAgICA3OCwgMTk3LCA3NywgNjUsIDgyLCA4OSwgMTI4LCA3NywgNjUsIDgyLCA4NywgNjUsIDgyLCAyMDEsIDc3LCA2NSwgODIsIAorICAgIDg1LCA3NSwgODUsIDEyOCwgNzcsIDY1LCA4MiwgODQsIDg5LCA4MiwgNzMsIDE5MywgNzcsIDY1LCA4MiwgODIsIDg5LCA3MywgCisgICAgNzgsIDE5OSwgNzcsIDY1LCA4MiwgODIsIDczLCA2NSwgNzEsIDE5NywgNzcsIDY1LCA4MiwgNzUsIDIxMSwgNzcsIDY1LCAKKyAgICA4MiwgNzUsIDY5LCA4MiwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUyLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTEsIAorICAgIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MCwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDQ5LCAxMjgsIDc3LCA2NSwgCisgICAgODIsIDY5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA3MiwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDg0LCA3OSwgNDUsIDgzLCAKKyAgICA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDg0LCA3OSwgMTI4LCA3NywgNjUsIAorICAgIDgyLCA2NywgNjUsIDgzLCA3MywgODQsIDY5LCAxMjgsIDc3LCA2NSwgODIsIDY2LCA4NSwgODQsIDY1LCAxMjgsIDc3LCA2NSwgCisgICAgODIsIDY2LCA4NSwgODQsIDE5MywgNzcsIDY1LCA4MiwgMTI4LCA3NywgNjUsIDgxLCA2NSwgNzAsIDEyOCwgNzcsIDY1LCAKKyAgICA4MSwgMTI4LCA3NywgNjUsIDgwLCA3NiwgMTk3LCA3NywgNjUsIDgwLCA3MywgODEsIDEyOCwgNzcsIDY1LCAyMDgsIDc3LCAKKyAgICA2NSwgNzksIDEyOCwgNzcsIDY1LCA3OCwgODQsIDY5LCA3NiwgODAsIDczLCA2OSwgNjcsIDE5NywgNzcsIDY1LCA3OCwgODMsIAorICAgIDg5LCA3OSwgNzgsIDEyOCwgNzcsIDY1LCA3OCwgODMsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAyMTgsIDc3LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NywgNjUsIDc4LCA3MywgNjcsIDcyLCA2NSwgNjksIDY1LCAyMDYsIAorICAgIDc3LCA2NSwgNzgsIDcxLCA2NSwgNzYsIDY1LCA3NywgMTI4LCA3NywgNjUsIDc4LCA2OCwgNjUsIDczLCA3NiwgNzMsIDc4LCAKKyAgICAxOTksIDc3LCA2NSwgNzgsIDY4LCA2NSwgNzMsIDE5NSwgNzcsIDY1LCA3OCwgNjcsIDcyLCAyMTMsIDc3LCA2NSwgNzgsIAorICAgIDY1LCAyMTIsIDc3LCA2NSwgNzgsIDY1LCA2NywgNzYsIDY5LCA4MywgMTI4LCA3NywgNjUsIDc2LCA4NCwgNjksIDgzLCAKKyAgICAxOTcsIDc3LCA2NSwgNzYsIDY5LCA2OSwgODIsIDczLCAxMjgsIDc3LCA2NSwgNzYsIDY5LCAxMjgsIDc3LCA2NSwgNzYsIAorICAgIDE5NywgNzcsIDY1LCA3NiwgNjUsIDc1LCA3OSwgMjA2LCA3NywgNjUsIDc1LCA4MywgODUsIDgyLCA2NSwgMTI4LCA3NywgCisgICAgNjUsIDc1LCA4MywgODUsIDgyLCAxOTMsIDc3LCA2NSwgNzMsIDkwLCA2OSwgMTI4LCA3NywgNjUsIDczLCA4OSwgNjUsIDc3LCAKKyAgICA3OSwgNzUsIDEyOCwgNzcsIDY1LCA3MywgODQsIDY1LCA3MywgNzUsIDcyLCA4NSwgMTI4LCA3NywgNjUsIDczLCA4MiwgODUsIAorICAgIDEyOCwgNzcsIDY1LCA3MywgNzcsIDg1LCA2NSwgNzgsIDEyOCwgNzcsIDY1LCA3MywgNzcsIDY1LCA3NiwgNjUsIDczLCAKICAgICAxMjgsIDc3LCA2NSwgNzMsIDc2LCA2NiwgNzksIDIxNiwgNzcsIDY1LCA3MywgNzUsIDg1LCA4MiwgNzksIDEyOCwgNzcsIAogICAgIDY1LCA3MywgNjgsIDY5LCA3OCwgMTI4LCA3NywgNjUsIDczLCAxMjgsIDc3LCA2NSwgNzIsIDc0LCA3OSwgNzgsIDE5OSwgCiAgICAgNzcsIDY1LCA3MiwgNzIsIDY1LCAxMjgsIDc3LCA2NSwgNzIsIDY1LCA4MCwgODIsIDY1LCA3OCwgNjUsIDEyOCwgNzcsIDY1LCAKLSAgICA3MiwgNjUsIDgwLCA2NSwgNzUsIDcyLCAxMjgsIDc3LCA2NSwgNzIsIDY1LCA2NSwgODAsIDgyLCA2NSwgNjUsIDc4LCAxOTMsIAotICAgIDc3LCA2NSwgNzIsIDEyOCwgNzcsIDY1LCA3MSwgNzgsIDczLCA3MCwgODksIDczLCA3OCwgMTk5LCA3NywgNjUsIDY5LCA4MywgCi0gICAgNzMsIDEyOCwgNzcsIDY1LCA2OSwgNzgsIDg5LCA3MywgMTI4LCA3NywgNjUsIDY5LCA3OCwgNzQsIDY5LCA4NCwgMTI4LCAKLSAgICA3NywgNjUsIDY5LCA3NywgODYsIDY5LCA4NSwgODgsIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDc1LCA4MCwgNjksIDc4LCAxMjgsIAotICAgIDc3LCA2NSwgNjksIDc3LCA3MSwgNjYsIDczLCA2OSwgNjksIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDY2LCA3MSwgNjYsIDczLCAKLSAgICA2OSwgNjksIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDY2LCA2NSwgMTI4LCA3NywgNjUsIDY5LCA3NywgMTI4LCA3NywgNjUsIAotICAgIDY5LCA3NiwgNjksIDY5LCAxMjgsIDc3LCA2NSwgNjksIDc1LCA2OSwgODUsIDgwLCAxMjgsIDc3LCA2NSwgNjgsIDg5LCA2NSwgCi0gICAgMTI4LCA3NywgNjUsIDY4LCA4NSwgMTI4LCA3NywgNjUsIDY4LCA2OCwgNjUsIDIwMCwgNzcsIDY1LCA2OCwgNjgsIDY1LCAKLSAgICAxMjgsIDc3LCA2NSwgNjgsIDY4LCAxOTMsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIAotICAgIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgNDUsIDY2LCA4MiwgNjksIDg2LCA2OSwgMTI4LCA3NywgNjUsIDY3LCA4MiwgCi0gICAgNzksIDc4LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzcsIDY1LCAKLSAgICA2NywgODIsIDc5LCAyMDYsIDc3LCA2NSwgNjcsIDcyLCA3MywgNzgsIDY5LCAxMjgsIDc3LCA2NSwgNjUsIDg5LCA4OSwgNjUsIAotICAgIDY1LCAxMjgsIDc3LCA2NSwgNjUsIDczLCAxMjgsIDc3LCA2NSwgNjUsIDEyOCwgNzcsIDY1LCA1MCwgMTI4LCA3NywgNDgsIAotICAgIDUyLCA1MiwgMTI4LCA3NywgNDgsIDUyLCA1MSwgMTI4LCA3NywgNDgsIDUyLCA1MCwgMTI4LCA3NywgNDgsIDUyLCA0OSwgCi0gICAgMTI4LCA3NywgNDgsIDUyLCA0OCwgNjUsIDEyOCwgNzcsIDQ4LCA1MiwgNDgsIDEyOCwgNzcsIDQ4LCA1MSwgNTcsIDEyOCwgCi0gICAgNzcsIDQ4LCA1MSwgNTYsIDEyOCwgNzcsIDQ4LCA1MSwgNTUsIDEyOCwgNzcsIDQ4LCA1MSwgNTQsIDEyOCwgNzcsIDQ4LCAKLSAgICA1MSwgNTMsIDEyOCwgNzcsIDQ4LCA1MSwgNTIsIDEyOCwgNzcsIDQ4LCA1MSwgNTEsIDY2LCAxMjgsIDc3LCA0OCwgNTEsIAotICAgIDUxLCA2NSwgMTI4LCA3NywgNDgsIDUxLCA1MSwgMTI4LCA3NywgNDgsIDUxLCA1MCwgMTI4LCA3NywgNDgsIDUxLCA0OSwgCi0gICAgNjUsIDEyOCwgNzcsIDQ4LCA1MSwgNDksIDEyOCwgNzcsIDQ4LCA1MSwgNDgsIDEyOCwgNzcsIDQ4LCA1MCwgNTcsIDEyOCwgCi0gICAgNzcsIDQ4LCA1MCwgNTYsIDY1LCAxMjgsIDc3LCA0OCwgNTAsIDU2LCAxMjgsIDc3LCA0OCwgNTAsIDU1LCAxMjgsIDc3LCAKLSAgICA0OCwgNTAsIDU0LCAxMjgsIDc3LCA0OCwgNTAsIDUzLCAxMjgsIDc3LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA3NywgNDgsIAotICAgIDUwLCA1MiwgMTI4LCA3NywgNDgsIDUwLCA1MSwgMTI4LCA3NywgNDgsIDUwLCA1MCwgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgCi0gICAgNTAsIDEyOCwgNzcsIDQ4LCA1MCwgNDksIDEyOCwgNzcsIDQ4LCA1MCwgNDgsIDEyOCwgNzcsIDQ4LCA0OSwgNTcsIDEyOCwgCi0gICAgNzcsIDQ4LCA0OSwgNTYsIDEyOCwgNzcsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDU1LCAxMjgsIDc3LCAKLSAgICA0OCwgNDksIDU0LCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA1NCwgMTI4LCA3NywgNDgsIDQ5LCA1MywgNjUsIDEyOCwgNzcsIAotICAgIDQ4LCA0OSwgNTMsIDEyOCwgNzcsIDQ4LCA0OSwgNTIsIDEyOCwgNzcsIDQ4LCA0OSwgNTEsIDEyOCwgNzcsIDQ4LCA0OSwgCisgICAgNzIsIDY1LCA4MCwgNjUsIDc1LCA3MiwgMTI4LCA3NywgNjUsIDcyLCA2NSwgNzQsIDY1LCA3OCwgMjAxLCA3NywgNjUsIDcyLCAKKyAgICA2NSwgNjUsIDgwLCA4MiwgNjUsIDY1LCA3OCwgMTkzLCA3NywgNjUsIDcyLCAxMjgsIDc3LCA2NSwgNzEsIDc4LCA3MywgNzAsIAorICAgIDg5LCA3MywgNzgsIDE5OSwgNzcsIDY1LCA2OSwgODMsIDczLCAxMjgsIDc3LCA2NSwgNjksIDc4LCA4OSwgNzMsIDEyOCwgCisgICAgNzcsIDY1LCA2OSwgNzgsIDc0LCA2OSwgODQsIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDg2LCA2OSwgODUsIDg4LCAxMjgsIDc3LCAKKyAgICA2NSwgNjksIDc3LCA3NSwgODAsIDY5LCA3OCwgMTI4LCA3NywgNjUsIDY5LCA3NywgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIAorICAgIDc3LCA2NSwgNjksIDc3LCA2NiwgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIDc3LCA2NSwgNjksIDc3LCA2NiwgNjUsIDEyOCwgCisgICAgNzcsIDY1LCA2OSwgNzcsIDEyOCwgNzcsIDY1LCA2OSwgNzYsIDY5LCA2OSwgMTI4LCA3NywgNjUsIDY5LCA3NSwgNjksIDg1LCAKKyAgICA4MCwgMTI4LCA3NywgNjUsIDY4LCA4OSwgNjUsIDEyOCwgNzcsIDY1LCA2OCwgODUsIDEyOCwgNzcsIDY1LCA2OCwgNjgsIAorICAgIDY1LCAyMDAsIDc3LCA2NSwgNjgsIDY4LCA2NSwgMTI4LCA3NywgNjUsIDY4LCA2OCwgMTkzLCA3NywgNjUsIDY3LCA4MiwgCisgICAgNzksIDc4LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDQ1LCA2NiwgODIsIAorICAgIDY5LCA4NiwgNjksIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA3NywgCisgICAgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCA3OSwgMjA2LCA3NywgNjUsIDY3LCA3MiwgNzMsIDc4LCAKKyAgICA2OSwgMTI4LCA3NywgNjUsIDY1LCA4OSwgODksIDY1LCA2NSwgMTI4LCA3NywgNjUsIDY1LCA3MywgMTI4LCA3NywgNjUsIAorICAgIDY1LCAxMjgsIDc3LCA2NSwgNTAsIDEyOCwgNzcsIDQ5LCA1NywgMTgzLCA3NywgNDksIDU3LCAxODIsIDc3LCA0OSwgNTcsIAorICAgIDE4MSwgNzcsIDQ5LCA1NywgMTgwLCA3NywgNDksIDU3LCAxNzksIDc3LCA0OSwgNTcsIDE3OCwgNzcsIDQ5LCA1NywgMTc3LCAKKyAgICA3NywgNDksIDU3LCAxNzYsIDc3LCA0OSwgNTYsIDE4NSwgNzcsIDQ5LCA1NiwgMTg0LCA3NywgNDksIDU2LCAxODMsIDc3LCAKKyAgICA0OSwgNTYsIDE4MiwgNzcsIDQ5LCA1NiwgMTgxLCA3NywgNDksIDU2LCAxODAsIDc3LCA0OSwgNTYsIDE3OSwgNzcsIDQ5LCAKKyAgICA1NiwgMTc4LCA3NywgNDksIDU2LCAxNzcsIDc3LCA0OSwgNTYsIDE3NiwgNzcsIDQ5LCA1NSwgMTg1LCA3NywgNDksIDU1LCAKKyAgICAxODQsIDc3LCA0OSwgNTUsIDE4MywgNzcsIDQ5LCA1NSwgMTgyLCA3NywgNDksIDU1LCAxODEsIDc3LCA0OSwgNTUsIDE4MCwgCisgICAgNzcsIDQ5LCA1NSwgMTc5LCA3NywgNDksIDU1LCAxNzgsIDc3LCA0OSwgNTUsIDE3NywgNzcsIDQ5LCA1NSwgMTc2LCA3NywgCisgICAgNDksIDU0LCAxODUsIDc3LCA0OSwgNTQsIDE4NCwgNzcsIDQ5LCA1NCwgMTgzLCA3NywgNDksIDU0LCAxODIsIDc3LCA0OSwgCisgICAgNTQsIDE4MSwgNzcsIDQ5LCA1NCwgMTgwLCA3NywgNDksIDU0LCAxNzksIDc3LCA0OSwgNTQsIDE3OCwgNzcsIDQ5LCA1NCwgCisgICAgMTc3LCA3NywgNDksIDU0LCAxNzYsIDc3LCA0OSwgNTMsIDE4NSwgNzcsIDQ5LCA1MywgMTg0LCA3NywgNDksIDUzLCAxODMsIAorICAgIDc3LCA0OSwgNTMsIDE4MiwgNzcsIDQ5LCA1MywgMTgxLCA3NywgNDksIDUzLCAxODAsIDc3LCA0OSwgNTMsIDE3OSwgNzcsIAorICAgIDQ5LCA1MywgMTc4LCA3NywgNDksIDUzLCAxNzcsIDc3LCA0OSwgNTMsIDE3NiwgNzcsIDQ5LCA1MiwgMTg1LCA3NywgNDksIAorICAgIDUyLCAxODQsIDc3LCA0OSwgNTIsIDE4MywgNzcsIDQ5LCA1MiwgMTgyLCA3NywgNDksIDUyLCAxODEsIDc3LCA0OSwgNTIsIAorICAgIDE4MCwgNzcsIDQ5LCA1MiwgMTc5LCA3NywgNDksIDUyLCAxNzgsIDc3LCA0OSwgNTIsIDE3NywgNzcsIDQ5LCA1MiwgMTc2LCAKKyAgICA3NywgNDksIDUxLCAxODUsIDc3LCA0OSwgNTEsIDE4NCwgNzcsIDQ5LCA1MSwgMTgzLCA3NywgNDksIDUxLCAxODIsIDc3LCAKKyAgICA0OSwgNTEsIDE4MSwgNzcsIDQ5LCA1MSwgMTgwLCA3NywgNDksIDUxLCAxNzksIDc3LCA0OSwgNTEsIDE3OCwgNzcsIDQ5LCAKKyAgICA1MSwgMTc3LCA3NywgNDksIDUxLCAxNzYsIDc3LCA0OSwgNTAsIDE4NSwgNzcsIDQ5LCA1MCwgMTg0LCA3NywgNDksIDUwLCAKKyAgICAxODMsIDc3LCA0OSwgNTAsIDE4MiwgNzcsIDQ5LCA1MCwgMTgxLCA3NywgNDksIDUwLCAxODAsIDc3LCA0OSwgNTAsIDE3OSwgCisgICAgNzcsIDQ5LCA1MCwgMTc4LCA3NywgNDksIDUwLCAxNzcsIDc3LCA0OSwgNTAsIDE3NiwgNzcsIDQ5LCA0OSwgMTg1LCA3NywgCisgICAgNDksIDQ5LCAxODQsIDc3LCA0OSwgNDksIDE4MywgNzcsIDQ5LCA0OSwgMTgyLCA3NywgNDksIDQ5LCAxODEsIDc3LCA0OSwgCisgICAgNDksIDE4MCwgNzcsIDQ5LCA0OSwgMTc5LCA3NywgNDksIDQ5LCAxNzgsIDc3LCA0OSwgNDksIDE3NywgNzcsIDQ5LCA0OSwgCisgICAgMTc2LCA3NywgNDksIDQ4LCAxODUsIDc3LCA0OSwgNDgsIDE4NCwgNzcsIDQ5LCA0OCwgMTgzLCA3NywgNDksIDQ4LCAxODIsIAorICAgIDc3LCA0OSwgNDgsIDE4MSwgNzcsIDQ5LCA0OCwgMTgwLCA3NywgNDksIDQ4LCAxNzksIDc3LCA0OSwgNDgsIDE3OCwgNzcsIAorICAgIDQ5LCA0OCwgMTc3LCA3NywgNDksIDQ4LCAxNzYsIDc3LCA0OCwgNTcsIDE4NSwgNzcsIDQ4LCA1NywgMTg0LCA3NywgNDgsIAorICAgIDU3LCAxODMsIDc3LCA0OCwgNTcsIDE4MiwgNzcsIDQ4LCA1NywgMTgxLCA3NywgNDgsIDU3LCAxODAsIDc3LCA0OCwgNTcsIAorICAgIDE3OSwgNzcsIDQ4LCA1NywgMTc4LCA3NywgNDgsIDU3LCAxNzcsIDc3LCA0OCwgNTcsIDE3NiwgNzcsIDQ4LCA1NiwgMTg1LCAKKyAgICA3NywgNDgsIDU2LCAxODQsIDc3LCA0OCwgNTYsIDE4MywgNzcsIDQ4LCA1NiwgMTgyLCA3NywgNDgsIDU2LCAxODEsIDc3LCAKKyAgICA0OCwgNTYsIDE4MCwgNzcsIDQ4LCA1NiwgMTc5LCA3NywgNDgsIDU2LCAxNzgsIDc3LCA0OCwgNTYsIDE3NywgNzcsIDQ4LCAKKyAgICA1NiwgMTc2LCA3NywgNDgsIDU1LCAxODUsIDc3LCA0OCwgNTUsIDE4NCwgNzcsIDQ4LCA1NSwgMTgzLCA3NywgNDgsIDU1LCAKKyAgICAxODIsIDc3LCA0OCwgNTUsIDE4MSwgNzcsIDQ4LCA1NSwgMTgwLCA3NywgNDgsIDU1LCAxNzksIDc3LCA0OCwgNTUsIDE3OCwgCisgICAgNzcsIDQ4LCA1NSwgMTc3LCA3NywgNDgsIDU1LCAxNzYsIDc3LCA0OCwgNTQsIDE4NSwgNzcsIDQ4LCA1NCwgMTg0LCA3NywgCisgICAgNDgsIDU0LCAxODMsIDc3LCA0OCwgNTQsIDE4MiwgNzcsIDQ4LCA1NCwgMTgxLCA3NywgNDgsIDU0LCAxODAsIDc3LCA0OCwgCisgICAgNTQsIDE3OSwgNzcsIDQ4LCA1NCwgMTc4LCA3NywgNDgsIDU0LCAxNzcsIDc3LCA0OCwgNTQsIDE3NiwgNzcsIDQ4LCA1MywgCisgICAgMTg1LCA3NywgNDgsIDUzLCAxODQsIDc3LCA0OCwgNTMsIDE4MywgNzcsIDQ4LCA1MywgMTgyLCA3NywgNDgsIDUzLCAxODEsIAorICAgIDc3LCA0OCwgNTMsIDE4MCwgNzcsIDQ4LCA1MywgMTc5LCA3NywgNDgsIDUzLCAxNzgsIDc3LCA0OCwgNTMsIDE3NywgNzcsIAorICAgIDQ4LCA1MywgMTc2LCA3NywgNDgsIDUyLCAxODUsIDc3LCA0OCwgNTIsIDE4NCwgNzcsIDQ4LCA1MiwgMTgzLCA3NywgNDgsIAorICAgIDUyLCAxODIsIDc3LCA0OCwgNTIsIDE4MSwgNzcsIDQ4LCA1MiwgNTIsIDEyOCwgNzcsIDQ4LCA1MiwgMTgwLCA3NywgNDgsIAorICAgIDUyLCA1MSwgMTI4LCA3NywgNDgsIDUyLCAxNzksIDc3LCA0OCwgNTIsIDUwLCAxMjgsIDc3LCA0OCwgNTIsIDE3OCwgNzcsIAorICAgIDQ4LCA1MiwgNDksIDEyOCwgNzcsIDQ4LCA1MiwgMTc3LCA3NywgNDgsIDUyLCA0OCwgNjUsIDEyOCwgNzcsIDQ4LCA1MiwgCisgICAgNDgsIDEyOCwgNzcsIDQ4LCA1MiwgMTc2LCA3NywgNDgsIDUxLCA1NywgMTI4LCA3NywgNDgsIDUxLCAxODUsIDc3LCA0OCwgCisgICAgNTEsIDU2LCAxMjgsIDc3LCA0OCwgNTEsIDE4NCwgNzcsIDQ4LCA1MSwgNTUsIDEyOCwgNzcsIDQ4LCA1MSwgMTgzLCA3NywgCisgICAgNDgsIDUxLCA1NCwgMTI4LCA3NywgNDgsIDUxLCAxODIsIDc3LCA0OCwgNTEsIDUzLCAxMjgsIDc3LCA0OCwgNTEsIDE4MSwgCisgICAgNzcsIDQ4LCA1MSwgNTIsIDEyOCwgNzcsIDQ4LCA1MSwgMTgwLCA3NywgNDgsIDUxLCA1MSwgNjYsIDEyOCwgNzcsIDQ4LCAKKyAgICA1MSwgNTEsIDY1LCAxMjgsIDc3LCA0OCwgNTEsIDUxLCAxMjgsIDc3LCA0OCwgNTEsIDE3OSwgNzcsIDQ4LCA1MSwgNTAsIAorICAgIDEyOCwgNzcsIDQ4LCA1MSwgMTc4LCA3NywgNDgsIDUxLCA0OSwgNjUsIDEyOCwgNzcsIDQ4LCA1MSwgNDksIDEyOCwgNzcsIAorICAgIDQ4LCA1MSwgMTc3LCA3NywgNDgsIDUxLCA0OCwgMTI4LCA3NywgNDgsIDUxLCAxNzYsIDc3LCA0OCwgNTAsIDU3LCAxMjgsIAorICAgIDc3LCA0OCwgNTAsIDE4NSwgNzcsIDQ4LCA1MCwgNTYsIDY1LCAxMjgsIDc3LCA0OCwgNTAsIDU2LCAxMjgsIDc3LCA0OCwgCisgICAgNTAsIDE4NCwgNzcsIDQ4LCA1MCwgNTUsIDEyOCwgNzcsIDQ4LCA1MCwgMTgzLCA3NywgNDgsIDUwLCA1NCwgMTI4LCA3NywgCisgICAgNDgsIDUwLCAxODIsIDc3LCA0OCwgNTAsIDUzLCAxMjgsIDc3LCA0OCwgNTAsIDE4MSwgNzcsIDQ4LCA1MCwgNTIsIDY1LCAKKyAgICAxMjgsIDc3LCA0OCwgNTAsIDUyLCAxMjgsIDc3LCA0OCwgNTAsIDE4MCwgNzcsIDQ4LCA1MCwgNTEsIDEyOCwgNzcsIDQ4LCAKKyAgICA1MCwgMTc5LCA3NywgNDgsIDUwLCA1MCwgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgNTAsIDEyOCwgNzcsIDQ4LCA1MCwgMTc4LCAKKyAgICA3NywgNDgsIDUwLCA0OSwgMTI4LCA3NywgNDgsIDUwLCAxNzcsIDc3LCA0OCwgNTAsIDQ4LCAxMjgsIDc3LCA0OCwgNTAsIAorICAgIDE3NiwgNzcsIDQ4LCA0OSwgNTcsIDEyOCwgNzcsIDQ4LCA0OSwgMTg1LCA3NywgNDgsIDQ5LCA1NiwgMTI4LCA3NywgNDgsIAorICAgIDQ5LCAxODQsIDc3LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA1NSwgMTI4LCA3NywgNDgsIDQ5LCAxODMsIAorICAgIDc3LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA1NCwgMTI4LCA3NywgNDgsIDQ5LCAxODIsIDc3LCA0OCwgCisgICAgNDksIDUzLCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA1MywgMTI4LCA3NywgNDgsIDQ5LCAxODEsIDc3LCA0OCwgNDksIDUyLCAKKyAgICAxMjgsIDc3LCA0OCwgNDksIDE4MCwgNzcsIDQ4LCA0OSwgNTEsIDEyOCwgNzcsIDQ4LCA0OSwgMTc5LCA3NywgNDgsIDQ5LCAKICAgICA1MCwgNzIsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDcxLCAxMjgsIDc3LCA0OCwgNDksIDUwLCA3MCwgMTI4LCA3NywgNDgsIAogICAgIDQ5LCA1MCwgNjksIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY4LCAxMjgsIDc3LCA0OCwgNDksIDUwLCA2NywgMTI4LCA3NywgCiAgICAgNDgsIDQ5LCA1MCwgNjYsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDUwLCAxMjgsIDc3LCAKLSAgICA0OCwgNDksIDQ5LCAxMjgsIDc3LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA0OCwgMTI4LCA3NywgNDgsIAotICAgIDQ4LCA1NywgMTI4LCA3NywgNDgsIDQ4LCA1NiwgMTI4LCA3NywgNDgsIDQ4LCA1NSwgMTI4LCA3NywgNDgsIDQ4LCA1NCwgCi0gICAgMTI4LCA3NywgNDgsIDQ4LCA1MywgMTI4LCA3NywgNDgsIDQ4LCA1MiwgMTI4LCA3NywgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgCi0gICAgNzcsIDQ4LCA0OCwgNTEsIDEyOCwgNzcsIDQ4LCA0OCwgNTAsIDEyOCwgNzcsIDQ4LCA0OCwgNDksIDY2LCAxMjgsIDc3LCAKLSAgICA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3NywgNDgsIDQ4LCA0OSwgMTI4LCA3NiwgMjE4LCA3NiwgODksIDg5LCAxMjgsIDc2LCAKLSAgICA4OSwgODgsIDEyOCwgNzYsIDg5LCA4NCwgMTI4LCA3NiwgODksIDgyLCA4OCwgMTI4LCA3NiwgODksIDgyLCAxMjgsIDc2LCAKLSAgICA4OSwgODAsIDEyOCwgNzYsIDg5LCA2OCwgNzMsIDY1LCAyMDYsIDc2LCA4OSwgNjcsIDczLCA2NSwgMjA2LCA3NiwgODgsIAotICAgIDEyOCwgNzYsIDg3LCA3OSwgNzksIDEyOCwgNzYsIDg3LCA3OSwgMTI4LCA3NiwgODcsIDczLCA3MywgMTI4LCA3NiwgODcsIAotICAgIDczLCAxMjgsIDc2LCA4NywgNjksIDEyOCwgNzYsIDg3LCA2NSwgNjUsIDEyOCwgNzYsIDg3LCA2NSwgMTI4LCA3NiwgODUsIAotICAgIDg4LCAxMjgsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDg1LCA4NCwgMTI4LCA3NiwgODUsIDgyLCA4OCwgMTI4LCA3NiwgODUsIAotICAgIDgwLCAxMjgsIDc2LCA4NSwgNzksIDg4LCAxMjgsIDc2LCA4NSwgNzksIDg0LCAxMjgsIDc2LCA4NSwgNzksIDgwLCAxMjgsIAotICAgIDc2LCA4NSwgNzksIDEyOCwgNzYsIDg1LCA3OCwgNzEsIDgzLCA3MywgMTI4LCA3NiwgODUsIDc4LCA2NSwgODQsIDE5NywgCi0gICAgNzYsIDg1LCAyMDUsIDc2LCA4NSwgNzYsIDEyOCwgNzYsIDg1LCA3MywgODMsIDEyOCwgNzYsIDg1LCA3MiwgODUsIDgyLCAKLSAgICAxMjgsIDc2LCA4NSwgNzIsIDEyOCwgNzYsIDg1LCA3MSwgNzEsIDY1LCA3MSwgNjksIDEyOCwgNzYsIDg1LCA3MSwgNjUsIAotICAgIDc2LCAxMjgsIDc2LCA4NSwgNzEsIDY1LCAyMDQsIDc2LCA4NSwgNjksIDEyOCwgNzYsIDg1LCA2NSwgNjksIDgwLCAxMjgsIAotICAgIDc2LCA4NSwgNTEsIDEyOCwgNzYsIDg1LCA1MCwgMTI4LCA3NiwgODUsIDE3OCwgNzYsIDgyLCA3OSwgMTI4LCA3NiwgODIsIAotICAgIDc3LCAxMjgsIDc2LCA4MiwgNzMsIDEyOCwgNzYsIDgyLCA2OSwgMTI4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCA2OSwgCi0gICAgMTI4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCAxOTcsIDc2LCA3OSwgODgsIDEyOCwgNzYsIDc5LCA4NywgNjksIDgyLCAKLSAgICA2OSwgMTk2LCA3NiwgNzksIDg3LCA2OSwgMjEwLCA3NiwgNzksIDg3LCA0NSwgMTg1LCA3NiwgNzksIDg2LCAxOTcsIDc2LCAKLSAgICA3OSwgODUsIDgyLCA2OSwgMTI4LCA3NiwgNzksIDg1LCA2OCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgNzYsIAotICAgIDc5LCA4NSwgNjgsIDc2LCAyMTcsIDc2LCA3OSwgODQsIDg1LCA4MywgMTI4LCA3NiwgNzksIDg0LCAxMjgsIDc2LCA3OSwgCi0gICAgODIsIDgyLCA4OSwgMTI4LCA3NiwgNzksIDgyLCA4MiwgNjUsIDczLCA3OCwgNjksIDEyOCwgNzYsIDc5LCA4MSwgMTI4LCAKLSAgICA3NiwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDg0LCAxMjgsIDc2LCA3OSwgNzksIDgwLCA2OSwgMTk2LCA3NiwgNzksIAotICAgIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCAyMDgsIDc2LCA3OSwgNzksIDc4LCAxMjgsIDc2LCA3OSwgNzksIDIwMywgNzYsIAotICAgIDc5LCA3OSwgMTI4LCA3NiwgNzksIDc4LCA4MywgODUsIDc3LCAxMjgsIDc2LCA3OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgCi0gICAgNzksIDc4LCA3MSwgMTkzLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4OSwgODIsIAotICAgIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgODMsIDc5LCAyMDQsIDc2LCA3OSwgCi0gICAgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDc5LCA4MywgMjExLCA3NiwgNzksIDc4LCA3MSwgNDUsIAotICAgIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3NywgNjUsIDY4LCAyMTAsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCAKLSAgICA2NSwgNzgsIDY3LCA3MiwgNDUsIDcyLCA2NSwgNzEsIDY1LCA3NiwgMjA0LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgCi0gICAgNjUsIDc4LCA2NywgNzIsIDQ1LCA2NSwgMjEwLCA3NiwgNzksIDc3LCA3NywgNjUsIDY5LCAxMjgsIDc2LCA3OSwgNzcsIAotICAgIDEyOCwgNzYsIDc5LCAyMDUsIDc2LCA3OSwgNzYsIDc2LCA3MywgODAsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc2LCA3NiwgCi0gICAgMTI4LCA3NiwgNzksIDcxLCAyMTAsIDc2LCA3OSwgNzEsIDc5LCA4NCwgODksIDgwLCAxOTcsIDc2LCA3OSwgNzEsIDc5LCAKLSAgICA3MSwgODIsIDY1LCAyMDUsIDc2LCA3OSwgNzEsIDEyOCwgNzYsIDc5LCA2OCwgNjksIDgzLCA4NCwgNzksIDc4LCA2OSwgCi0gICAgMTI4LCA3NiwgNzksIDY3LCA3OSwgNzcsIDc5LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA3NSwgNzMsIDc4LCAKLSAgICA3MSwgNDUsIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDc2LCA3OSwgNjcsIDIwMywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgODYsIAotICAgIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc2LCA3OSwgNjUsIDEyOCwgNzYsIDc4LCAxMjgsIAotICAgIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgNzksIDc5LCAxMjgsIDc2LCA3NiwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgCi0gICAgNzYsIDc2LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA3OSwgNzksIDEyOCwgNzYsIDc2LCA3NiwgNzksIDEyOCwgNzYsIDc2LCAKLSAgICA3NiwgNzMsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDY5LCA2OSwgMTI4LCA3NiwgNzYsIAotICAgIDc2LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgODUsIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDczLCAxMjgsIDc2LCA3NiwgCi0gICAgNzYsIDY1LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCAxMjgsIDc2LCA3NCwgODUsIDY4LCAKLSAgICA3MywgNzQsIDY5LCAxMjgsIDc2LCA3NCwgNjksIDEyOCwgNzYsIDc0LCAxMjgsIDc2LCA3MywgODgsIDEyOCwgNzYsIDczLCAKLSAgICA4NywgNzgsIDEyOCwgNzYsIDczLCA4NiwgODIsIDE5NywgNzYsIDczLCA4NCwgODQsIDc2LCAxOTcsIDc2LCA3MywgODQsIAotICAgIDg0LCA2OSwgMjEwLCA3NiwgNzMsIDg0LCA4MiwgMTkzLCA3NiwgNzMsIDg0LCAxMjgsIDc2LCA3MywgODMsIDIxMywgNzYsIAotICAgIDczLCA4MiwgMTkzLCA3NiwgNzMsIDgxLCA4NSwgNzMsIDE5NiwgNzYsIDczLCA4MSwgMTI4LCA3NiwgNzMsIDgwLCA4MywgCi0gICAgODQsIDczLCA2NywgNzUsIDEyOCwgNzYsIDczLCA3OCwgNzUsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDc4LCAyMDMsIDc2LCAKLSAgICA3MywgNzgsIDcxLCA4MywgNjUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDgzLCAxMjgsIDc2LCA3MywgNzgsIDY5LCAyMTEsIAotICAgIDc2LCA3MywgNzgsIDY5LCA0NSwgNTcsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA1NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgCi0gICAgNDUsIDUxLCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNDksIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCAKLSAgICA3NiwgNzMsIDc3LCA3NywgODUsIDUwLCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgCi0gICAgMjEzLCA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCAxOTYsIDc2LCA3MywgNzcsIDczLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDc2LCA3MywgNzcsIDczLCA4NCwgMTI4LCA3NiwgNzMsIDc3LCA2OSwgMTI4LCA3NiwgNzMsIDc3LCA2NiwgMjEzLCAKLSAgICA3NiwgNzMsIDc2LCA4OSwgMTI4LCA3NiwgNzMsIDc2LCA3MywgODQsIDcyLCAxMjgsIDc2LCA3MywgNzYsIDEyOCwgNzYsIAotICAgIDczLCA3MSwgNzIsIDg0LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDcyLCA3OSwgODUsIDgzLCAKLSAgICA2OSwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzYsIDczLCA3MCwgNjksIDEyOCwgNzYsIDczLCA2OSwgODgsIAotICAgIDEyOCwgNzYsIDczLCA2OSwgODQsIDEyOCwgNzYsIDczLCA2OSwgODAsIDEyOCwgNzYsIDczLCA2OSwgNjksIDEyOCwgNzYsIAotICAgIDczLCA2OSwgMTI4LCA3NiwgNzMsIDY4LCAxMjgsIDc2LCA3MywgNjYsIDgyLCA2NSwgMTI4LCA3NiwgNzMsIDY2LCA2OSwgCi0gICAgODIsIDg0LCA4OSwgMTI4LCA3NiwgNzMsIDY1LCA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNzYsIDcyLCA3MywgNzMsIAotICAgIDEyOCwgNzYsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NiwgNzIsIDY1LCAxOTksIDc2LCA3MiwgCi0gICAgNjUsIDY1LCAxMjgsIDc2LCA3MiwgMTI4LCA3NiwgNjksIDkwLCA3MiwgMTI4LCA3NiwgNjksIDg4LCAxMjgsIDc2LCA2OSwgCi0gICAgODYsIDY5LCAyMDQsIDc2LCA2OSwgODUsIDc3LCAxMjgsIDc2LCA2OSwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDY5LCAKLSAgICA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NiwgNjksIDg1LCAxMjgsIDc2LCA2OSwgMjEzLCA3NiwgNjksIDg0LCA4NCwgNjksIAotICAgIDgyLCA4MywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgMjEyLCA3NiwgNjksIDgzLCA4MywgCi0gICAgNjksIDIxMCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCAKLSAgICA3MiwgNjUsIDIwNiwgNzYsIDY5LCA4MCwgMTI4LCA3NiwgNjksIDc5LCA4MCwgNjUsIDgyLCA2OCwgMTI4LCA3NiwgNjksIAotICAgIDc5LCAxMjgsIDc2LCA2OSwgNzgsIDg0LCA3MywgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzYsIDY5LCA3OCwgNzMsIDgzLCAKLSAgICAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDY5LCA3OCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgCi0gICAgMjAwLCA3NiwgNjksIDc4LCA3MSwgNjUsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDE5MywgNzYsIDY5LCA3NywgNzksIDc4LCAKLSAgICAxMjgsIDc2LCA2OSwgNzcsIDc5LCA3MywgMTI4LCA3NiwgNjksIDc2LCA2OSwgODQsIDEyOCwgNzYsIDY5LCA3NiwgNjksIAotICAgIDIxMiwgNzYsIDY5LCAyMDMsIDc2LCA2OSwgNzMsIDc3LCA3NywgNjUsIDEyOCwgNzYsIDY5LCA3MywgNzcsIDc3LCAxOTMsIAotICAgIDc2LCA2OSwgNzEsIDgzLCAxMjgsIDc2LCA2OSwgNzEsIDczLCA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3MSwgNjksIDg0LCA3OSwgCi0gICAgMjExLCA3NiwgNjksIDcxLCAxMjgsIDc2LCA2OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNzYsIDY5LCAKLSAgICA3MCwgODQsIDQ1LCA4NCwgNzksIDQ1LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA4NCwgCi0gICAgNjksIDIwNSwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzMsIDY4LCAxOTcsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDcyLCAKLSAgICA2NSwgNjgsIDY5LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNzYsIAotICAgIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCAKLSAgICAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDc2LCA2OSwgNzAsIDg0LCAxMjgsIAotICAgIDc2LCA2OSwgNjksIDgyLCA2NSwgNjksIDg3LCA2NSwgMTI4LCA3NiwgNjksIDY5LCA3NSwgMTI4LCA3NiwgNjksIDY5LCA2OSwgCi0gICAgNjksIDEyOCwgNzYsIDY5LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCAKLSAgICA3NiwgNjksIDY1LCA3MCwgMTI4LCA3NiwgNjksIDY1LCAxOTgsIDc2LCA2OSwgNjUsIDY4LCA3MywgNzgsIDE5OSwgNzYsIAotICAgIDY5LCA2NSwgNjgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCAxOTYsIDc2LCA2OCwgNjUsIDc4LCAxMjgsIDc2LCA2OCwgCi0gICAgNTAsIDEyOCwgNzYsIDY3LCAyMDEsIDc2LCA2NywgMTk3LCA3NiwgNjUsIDkwLCAyMTcsIDc2LCA2NSwgODksIDY1LCA3OCwgCi0gICAgNzgsIDY1LCAxMjgsIDc2LCA2NSwgODgsIDEyOCwgNzYsIDY1LCA4NywgMTI4LCA3NiwgNjUsIDIxNSwgNzYsIDY1LCA4NSwgCi0gICAgNzYsIDY1LCAxMjgsIDc2LCA2NSwgODUsIDc1LCA2NSwgMjE4LCA3NiwgNjUsIDg0LCA3MywgNzgsIDY1LCA4NCwgMTk3LCAKKyAgICA0OCwgNDksIDE3OCwgNzcsIDQ4LCA0OSwgNDksIDEyOCwgNzcsIDQ4LCA0OSwgMTc3LCA3NywgNDgsIDQ5LCA0OCwgNjUsIAorICAgIDEyOCwgNzcsIDQ4LCA0OSwgNDgsIDEyOCwgNzcsIDQ4LCA0OSwgMTc2LCA3NywgNDgsIDQ4LCA1NywgMTI4LCA3NywgNDgsIAorICAgIDQ4LCAxODUsIDc3LCA0OCwgNDgsIDU2LCAxMjgsIDc3LCA0OCwgNDgsIDE4NCwgNzcsIDQ4LCA0OCwgNTUsIDEyOCwgNzcsIAorICAgIDQ4LCA0OCwgMTgzLCA3NywgNDgsIDQ4LCA1NCwgMTI4LCA3NywgNDgsIDQ4LCAxODIsIDc3LCA0OCwgNDgsIDUzLCAxMjgsIAorICAgIDc3LCA0OCwgNDgsIDE4MSwgNzcsIDQ4LCA0OCwgNTIsIDEyOCwgNzcsIDQ4LCA0OCwgMTgwLCA3NywgNDgsIDQ4LCA1MSwgCisgICAgNjUsIDEyOCwgNzcsIDQ4LCA0OCwgNTEsIDEyOCwgNzcsIDQ4LCA0OCwgMTc5LCA3NywgNDgsIDQ4LCA1MCwgMTI4LCA3NywgCisgICAgNDgsIDQ4LCAxNzgsIDc3LCA0OCwgNDgsIDQ5LCA2NiwgMTI4LCA3NywgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzcsIDQ4LCAKKyAgICA0OCwgNDksIDEyOCwgNzcsIDQ4LCA0OCwgMTc3LCA3NiwgMjE4LCA3NiwgODksIDg5LCAxMjgsIDc2LCA4OSwgODgsIDEyOCwgCisgICAgNzYsIDg5LCA4NCwgMTI4LCA3NiwgODksIDgyLCA4OCwgMTI4LCA3NiwgODksIDgyLCAxMjgsIDc2LCA4OSwgODAsIDEyOCwgCisgICAgNzYsIDg5LCA3MywgODQsIDEyOCwgNzYsIDg5LCA2OCwgNzMsIDY1LCAyMDYsIDc2LCA4OSwgNjcsIDczLCA2NSwgMjA2LCAKKyAgICA3NiwgODgsIDEyOCwgNzYsIDg3LCA3OSwgNzksIDEyOCwgNzYsIDg3LCA3OSwgMTI4LCA3NiwgODcsIDczLCA3MywgMTI4LCAKKyAgICA3NiwgODcsIDczLCAxMjgsIDc2LCA4NywgNjksIDEyOCwgNzYsIDg3LCA2NSwgNjUsIDEyOCwgNzYsIDg3LCA2NSwgMTI4LCAKKyAgICA3NiwgODUsIDg4LCAxMjgsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDg1LCA4NCwgMTI4LCA3NiwgODUsIDgyLCA4OCwgMTI4LCAKKyAgICA3NiwgODUsIDgwLCAxMjgsIDc2LCA4NSwgNzksIDg4LCAxMjgsIDc2LCA4NSwgNzksIDg0LCAxMjgsIDc2LCA4NSwgNzksIAorICAgIDgwLCAxMjgsIDc2LCA4NSwgNzksIDEyOCwgNzYsIDg1LCA3OCwgNzEsIDgzLCA3MywgMTI4LCA3NiwgODUsIDc4LCA2NSwgCisgICAgODQsIDE5NywgNzYsIDg1LCAyMDUsIDc2LCA4NSwgNzYsIDEyOCwgNzYsIDg1LCA3MywgODMsIDEyOCwgNzYsIDg1LCA3MiwgCisgICAgODUsIDgyLCAxMjgsIDc2LCA4NSwgNzIsIDEyOCwgNzYsIDg1LCAyMDAsIDc2LCA4NSwgNzEsIDcxLCA2NSwgNzEsIDY5LCAKKyAgICAxMjgsIDc2LCA4NSwgNzEsIDY1LCA3NiwgMTI4LCA3NiwgODUsIDcxLCA2NSwgMjA0LCA3NiwgODUsIDY5LCAxMjgsIDc2LCAKKyAgICA4NSwgMTk3LCA3NiwgODUsIDY2LCAxMjgsIDc2LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgODUsIDUxLCAxMjgsIDc2LCAKKyAgICA4NSwgNTAsIDEyOCwgNzYsIDg1LCAxNzgsIDc2LCA4MiwgNzksIDEyOCwgNzYsIDgyLCA3NywgMTI4LCA3NiwgODIsIDczLCAKKyAgICAxMjgsIDc2LCA4MiwgNjksIDEyOCwgNzYsIDc5LCA5MCwgNjksIDc4LCA3MSwgNjksIDEyOCwgNzYsIDc5LCA5MCwgNjksIAorICAgIDc4LCA3MSwgMTk3LCA3NiwgNzksIDg4LCAxMjgsIDc2LCA3OSwgODcsIDY5LCA4MiwgNjksIDE5NiwgNzYsIDc5LCA4NywgCisgICAgNjksIDIxMCwgNzYsIDc5LCA4NywgNDUsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDE4NSwgNzYsIDc5LCAKKyAgICA4NywgNDUsIDc3LCA3MywgMTk2LCA3NiwgNzksIDg3LCA0NSwgNzAsIDY1LCA3NiwgNzYsIDczLCA3OCwgMTk5LCA3NiwgNzksIAorICAgIDg3LCA0NSwgMTg1LCA3NiwgNzksIDg2LCAxOTcsIDc2LCA3OSwgODUsIDgyLCA2OSwgMTI4LCA3NiwgNzksIDg1LCA2OCwgCisgICAgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgNzYsIDc5LCA4NSwgNjgsIDc2LCAyMTcsIDc2LCA3OSwgODQsIDg1LCAKKyAgICA4MywgMTI4LCA3NiwgNzksIDg0LCAxMjgsIDc2LCA3OSwgODIsIDgyLCA4OSwgMTI4LCA3NiwgNzksIDgyLCA4MiwgNjUsIAorICAgIDczLCA3OCwgNjksIDEyOCwgNzYsIDc5LCA4MSwgMTI4LCA3NiwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDg0LCAxMjgsIAorICAgIDc2LCA3OSwgNzksIDgwLCA2OSwgMTk2LCA3NiwgNzksIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCAyMDgsIDc2LCA3OSwgCisgICAgNzksIDc4LCAxMjgsIDc2LCA3OSwgNzksIDIwMywgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzksIDc4LCA4MywgODUsIDc3LCAKKyAgICAxMjgsIDc2LCA3OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNzksIDc4LCA3MSwgMTkzLCA3NiwgNzksIDc4LCA3MSwgNDUsIAorICAgIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4OSwgODIsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCAKKyAgICA3OCwgNjcsIDcyLCA0NSwgODMsIDc5LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgCisgICAgNDUsIDc5LCA4MywgMjExLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3NywgNjUsIAorICAgIDY4LCAyMTAsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDcyLCA2NSwgNzEsIDY1LCAKKyAgICA3NiwgMjA0LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA2NSwgMjEwLCA3NiwgNzksIAorICAgIDc3LCA3NywgNjUsIDY5LCAxMjgsIDc2LCA3OSwgNzcsIDEyOCwgNzYsIDc5LCAyMDUsIDc2LCA3OSwgNzYsIDc2LCA3MywgCisgICAgODAsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc2LCA3NiwgMTI4LCA3NiwgNzksIDcxLCAyMTAsIDc2LCA3OSwgNzEsIDc5LCAKKyAgICA4NCwgODksIDgwLCAxOTcsIDc2LCA3OSwgNzEsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc2LCA3OSwgNzEsIDEyOCwgNzYsIAorICAgIDc5LCA2OCwgNjksIDgzLCA4NCwgNzksIDc4LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA3OSwgNzcsIDc5LCA4NCwgNzMsIDg2LCAKKyAgICA2OSwgMTI4LCA3NiwgNzksIDY3LCA3NSwgNzMsIDc4LCA3MSwgNDUsIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDc2LCA3OSwgNjcsIAorICAgIDIwMywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDc2LCA3OSwgNjUsIDEyOCwgNzYsIDc4LCAxMjgsIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgNzksIDc5LCAKKyAgICAxMjgsIDc2LCA3NiwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA3OSwgNzksIAorICAgIDEyOCwgNzYsIDc2LCA3NiwgNzksIDEyOCwgNzYsIDc2LCA3NiwgNzMsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDczLCAxMjgsIAorICAgIDc2LCA3NiwgNzYsIDY5LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgODUsIDEyOCwgCisgICAgNzYsIDc2LCA3NiwgNjUsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgMTI4LCAKKyAgICA3NiwgNzYsIDc2LCAxMjgsIDc2LCA3NCwgODUsIDY4LCA3MywgNzQsIDY5LCAxMjgsIDc2LCA3NCwgNjksIDEyOCwgNzYsIAorICAgIDc0LCAxMjgsIDc2LCA3MywgODgsIDEyOCwgNzYsIDczLCA4NywgNzgsIDEyOCwgNzYsIDczLCA4NiwgODIsIDE5NywgNzYsIAorICAgIDczLCA4NCwgODQsIDc2LCA2OSwgMTI4LCA3NiwgNzMsIDg0LCA4NCwgNzYsIDE5NywgNzYsIDczLCA4NCwgODQsIDY5LCAKKyAgICAyMTAsIDc2LCA3MywgODQsIDgyLCAxOTMsIDc2LCA3MywgODQsIDIwMCwgNzYsIDczLCA4MywgMjEzLCA3NiwgNzMsIDgzLCAKKyAgICAxMjgsIDc2LCA3MywgODIsIDE5MywgNzYsIDczLCA4MSwgODUsIDczLCAxOTYsIDc2LCA3MywgODEsIDEyOCwgNzYsIDczLCAKKyAgICA4MCwgODMsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDc2LCA3MywgODAsIDIxMSwgNzYsIDczLCAyMDgsIDc2LCA3MywgNzgsIAorICAgIDc1LCA3MywgNzgsIDE5OSwgNzYsIDczLCA3OCwgNzUsIDY5LCAxOTYsIDc2LCA3MywgNzgsIDIwMywgNzYsIDczLCA3OCwgCisgICAgNzEsIDgzLCA2NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDczLCA3OCwgNjksIDIxMSwgNzYsIDczLCAKKyAgICA3OCwgNjksIDQ1LCA1NywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDU1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTEsIAorICAgIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA0OSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDc2LCA3MywgCisgICAgNzcsIDc3LCA4NSwgNTAsIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDc2LCA3MywgNzcsIDc3LCAyMTMsIDc2LCAKKyAgICA3MywgNzcsIDczLCA4NCwgNjksIDE5NiwgNzYsIDczLCA3NywgNzMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzYsIAorICAgIDczLCA3NywgNzMsIDg0LCAxMjgsIDc2LCA3MywgNzcsIDY5LCAxMjgsIDc2LCA3MywgNzcsIDY2LCAyMTMsIDc2LCA3MywgCisgICAgNzcsIDY2LCAyMTEsIDc2LCA3MywgNzcsIDE5NCwgNzYsIDczLCA3NiwgODksIDEyOCwgNzYsIDczLCA3NiwgNzMsIDg0LCAKKyAgICA3MiwgMTI4LCA3NiwgNzMsIDc2LCAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzYsIAorICAgIDczLCA3MSwgNzIsIDg0LCA3OCwgNzMsIDc4LCAxOTksIDc2LCA3MywgNzEsIDcyLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY5LCAKKyAgICAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NiwgNzMsIDcxLCA2NSwgODQsIDczLCA3OCwgMTk5LCA3NiwgNzMsIAorICAgIDcwLCA4NCwgNjksIDgyLCAxMjgsIDc2LCA3MywgNzAsIDY5LCAxMjgsIDc2LCA3MywgNjksIDg4LCAxMjgsIDc2LCA3MywgCisgICAgNjksIDg0LCAxMjgsIDc2LCA3MywgNjksIDgwLCAxMjgsIDc2LCA3MywgNjksIDY5LCAxMjgsIDc2LCA3MywgNjksIDEyOCwgCisgICAgNzYsIDczLCA2OCwgMTI4LCA3NiwgNzMsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDc2LCA3MywgNjYsIDgyLCA2NSwgMTI4LCAKKyAgICA3NiwgNzMsIDY2LCA2OSwgODIsIDg0LCA4OSwgMTI4LCA3NiwgNzMsIDY1LCA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNzYsIAorICAgIDcyLCA3MywgNzMsIDEyOCwgNzYsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NiwgNzIsIDY1LCAKKyAgICAxOTksIDc2LCA3MiwgNjUsIDY1LCAxMjgsIDc2LCA3MiwgMTI4LCA3NiwgNjksIDkwLCA3MiwgMTI4LCA3NiwgNjksIDg4LCAKKyAgICAxMjgsIDc2LCA2OSwgODYsIDczLCA4NCwgNjUsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDc2LCA2OSwgODUsIDc3LCAxMjgsIAorICAgIDc2LCA2OSwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NiwgNjksIDg1LCAKKyAgICAxMjgsIDc2LCA2OSwgMjEzLCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCA4MywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIAorICAgIDgyLCAxMjgsIDc2LCA2OSwgMjEyLCA3NiwgNjksIDgzLCA4MywgNjksIDIxMCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgCisgICAgNzIsIDY1LCA3OCwgMTI4LCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzYsIDY5LCA4MCwgNjcsIDcyLCAKKyAgICAxOTMsIDc2LCA2OSwgODAsIDEyOCwgNzYsIDY5LCA3OSwgODAsIDY1LCA4MiwgNjgsIDEyOCwgNzYsIDY5LCA3OSwgMTI4LCAKKyAgICA3NiwgNjksIDc4LCA4NCwgNzMsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc2LCA2OSwgNzgsIDczLCA4MywgMTI4LCA3NiwgNjksIAorICAgIDc4LCA3MywgMjExLCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA2OSwgNzgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDc4LCA3MSwgCisgICAgODQsIDcyLCA0NSwgNTUsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDU0LCAxMjgsIDc2LCA2OSwgNzgsIDcxLCAKKyAgICA4NCwgNzIsIDQ1LCA1MywgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTIsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIAorICAgIDg0LCA3MiwgNDUsIDUxLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1MCwgMTI4LCA3NiwgNjksIDc4LCA3MSwgCisgICAgODQsIDcyLCA0NSwgNDksIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCAyMDAsIDc2LCA2OSwgNzgsIDcxLCA2NSwgMTI4LCAKKyAgICA3NiwgNjksIDc4LCA3MSwgMTkzLCA3NiwgNjksIDc3LCA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3NywgNzksIDczLCAxMjgsIAorICAgIDc2LCA2OSwgNzYsIDY5LCA4NCwgMTI4LCA3NiwgNjksIDc2LCA2OSwgMjEyLCA3NiwgNjksIDIwMywgNzYsIDY5LCA3MywgCisgICAgNzcsIDc3LCA2NSwgMTI4LCA3NiwgNjksIDczLCA3NywgNzcsIDE5MywgNzYsIDY5LCA3MywgMTI4LCA3NiwgNjksIDcxLCAKKyAgICA4MywgMTI4LCA3NiwgNjksIDcxLCA3MywgNzksIDc4LCAxMjgsIDc2LCA2OSwgNzEsIDY5LCA4NCwgNzksIDIxMSwgNzYsIAorICAgIDY5LCA3MSwgMTI4LCA3NiwgNjksIDE5OSwgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA3NiwgCisgICAgNjksIDcwLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIAorICAgIDg0LCA2OSwgMjA1LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgCisgICAgNzIsIDY1LCA2OCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCAKKyAgICA3NiwgNjksIDcwLCA4NCwgNDUsIDc2LCA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgCisgICAgNjUsIDc4LCA2OCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCAKKyAgICA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDc2LCA2OSwgNzAsIDg0LCAxMjgsIDc2LCA2OSwgNjksIDgyLCA2NSwgNjksIAorICAgIDg3LCA2NSwgMTI4LCA3NiwgNjksIDY5LCA3NSwgMTI4LCA3NiwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzYsIDY5LCA2OCwgCisgICAgNzEsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA3MCwgMTI4LCAKKyAgICA3NiwgNjksIDY1LCAxOTgsIDc2LCA2OSwgNjUsIDY4LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA2NSwgNjgsIDY5LCA4MiwgCisgICAgMTI4LCA3NiwgNjksIDY1LCAxOTYsIDc2LCA2OCwgNjUsIDc4LCAxMjgsIDc2LCA2OCwgNTAsIDEyOCwgNzYsIDY3LCAyMDEsIAorICAgIDc2LCA2NywgMTk3LCA3NiwgNjUsIDkwLCAyMTcsIDc2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc2LCA2NSwgCisgICAgODgsIDEyOCwgNzYsIDY1LCA4NywgMTI4LCA3NiwgNjUsIDIxNSwgNzYsIDY1LCA4NSwgNzYsIDY1LCAxMjgsIDc2LCA2NSwgCisgICAgODUsIDc1LCA2NSwgMjE4LCA3NiwgNjUsIDg1LCA3NCwgMTI4LCA3NiwgNjUsIDg0LCA3MywgNzgsIDY1LCA4NCwgMTk3LCAKICAgICA3NiwgNjUsIDg0LCA3MywgNzUsIDEyOCwgNzYsIDY1LCA4NCwgNjksIDgyLCA2NSwgMjA0LCA3NiwgNjUsIDg0LCAxOTcsIAotICAgIDc2LCA2NSwgODMsIDIxMiwgNzYsIDY1LCA4MiwgODksIDc4LCA3MSwgNjksIDY1LCAyMDQsIDc2LCA2NSwgODIsIDcxLCA2OSwgCi0gICAgMjEwLCA3NiwgNjUsIDgyLCA3MSwgNjksIDEyOCwgNzYsIDY1LCA4MiwgNzEsIDE5NywgNzYsIDY1LCA4MSwgMTI4LCA3NiwgCi0gICAgNjUsIDgwLCA2NSwgODEsIDEyOCwgNzYsIDY1LCA4MCwgMTI4LCA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCAKLSAgICA3NiwgNjUsIDc4LCA3MSwgODUsIDY1LCA3MSwgMTk3LCA3NiwgNjUsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDY1LCA3NywgNjksIAotICAgIDY4LCA3MiwgMTI4LCA3NiwgNjUsIDc3LCA2OSwgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjksIDE5NiwgNzYsIDY1LCA3NywgCi0gICAgNjksIDEyOCwgNzYsIDY1LCA3NywgMTk3LCA3NiwgNjUsIDc3LCA2OCwgNjUsIDEyOCwgNzYsIDY1LCA3NywgNjgsIDEyOCwgCi0gICAgNzYsIDY1LCA3NywgNjYsIDY4LCAxOTMsIDc2LCA2NSwgNzcsIDY1LCA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NiwgMTI4LCAKLSAgICA3NiwgNjUsIDIwNCwgNzYsIDY1LCA3NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCA4OSwgNjUsIDc5LCAxMjgsIDc2LCA2NSwgNzQsIAotICAgIDY1LCA3OCwgODksIDY1LCA3NiwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgMjAxLCA3NiwgNjUsIDcyLCA4MywgNzIsIDg1LCAKLSAgICAxMjgsIDc2LCA2NSwgNzIsIDEyOCwgNzYsIDY1LCA3MSwgODUsIDgzLCAxMjgsIDc2LCA2NSwgNzEsIDIxMywgNzYsIDY1LCAKLSAgICA3MSwgNjUsIDgyLCAxMjgsIDc2LCA2NSwgNzEsIDY1LCAyMTAsIDc2LCA2NSwgNzEsIDY1LCA2NiwgMTI4LCA3NiwgNjUsIAotICAgIDcxLCA2NSwgMTk0LCA3NiwgNjUsIDY5LCA4NiwgMTI4LCA3NiwgNjUsIDY5LCAxMjgsIDc2LCA2NSwgNjgsIDIxNywgNzYsIAotICAgIDY1LCA2NywgNzUsIDEyOCwgNzYsIDY1LCA2NywgNjUsIDEyOCwgNzYsIDY1LCA2NiwgNzksIDg1LCA4MiwgNzMsIDc4LCA3MSwgCi0gICAgMTI4LCA3NiwgNjUsIDY2LCA3OSwgODIsIDEyOCwgNzYsIDY1LCA2NiwgNzMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA3NiwgNjUsIDY2LCA3MywgNjUsIDIwNCwgNzYsIDY1LCA2NiwgNjUsIDg0LCAxMjgsIDc2LCA2NSwgNjUsIAotICAgIDc4LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA2NSwgNzcsIDg1LCAxMjgsIDc2LCA2NSwgCi0gICAgNjUsIDc3LCAxMjgsIDc2LCA2NSwgNjUsIDczLCAxMjgsIDc2LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3NiwgNDgsIDQ4LCAKKyAgICA3NiwgNjUsIDgzLCAyMTIsIDc2LCA2NSwgODIsIDg5LCA3OCwgNzEsIDY5LCA2NSwgMjA0LCA3NiwgNjUsIDgyLCAyMDEsIAorICAgIDc2LCA2NSwgODIsIDcxLCA2OSwgODMsIDg0LCAxMjgsIDc2LCA2NSwgODIsIDcxLCA2OSwgMjEwLCA3NiwgNjUsIDgyLCA3MSwgCisgICAgNjksIDEyOCwgNzYsIDY1LCA4MiwgNzEsIDE5NywgNzYsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDgwLCA2NSwgODEsIDEyOCwgCisgICAgNzYsIDY1LCAyMDcsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc2LCA2NSwgNzgsIDcxLCA4NSwgNjUsIDcxLCAKKyAgICAxOTcsIDc2LCA2NSwgNzgsIDY5LCA4MywgMTI4LCA3NiwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgNzcsIDgwLCAxMjgsIDc2LCAKKyAgICA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NywgNjksIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY5LCAxOTYsIAorICAgIDc2LCA2NSwgNzcsIDY5LCAxMjgsIDc2LCA2NSwgNzcsIDE5NywgNzYsIDY1LCA3NywgNjgsIDY1LCAxMjgsIDc2LCA2NSwgCisgICAgNzcsIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY2LCA2OCwgMTkzLCA3NiwgNjUsIDc3LCA2NSwgNjgsIDcyLCAxMjgsIDc2LCAKKyAgICA2NSwgNzYsIDEyOCwgNzYsIDY1LCAyMDQsIDc2LCA2NSwgNzUsIDc1LCA3MiwgNjUsIDc4LCA3MSwgODksIDY1LCA3OSwgCisgICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTUsIDUyLCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTUsIDUwLCA1MiwgMTI4LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNTQsIDU0LCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDUyLCA1NiwgMTI4LCA3NiwgNjUsIAorICAgIDc1LCA0NSwgNTQsIDUyLCAxODQsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTEsIDU0LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgCisgICAgNDksIDU1LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNDksIDE4MywgNzYsIDY1LCA3NSwgNDUsIDU0LCA0OCwgNTYsIAorICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUzLCA1MywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTMsIDEyOCwgCisgICAgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTEsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTAsIDEyOCwgNzYsIDY1LCAKKyAgICA3NSwgNDUsIDUyLCA1NywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NiwgNTEsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIAorICAgIDUyLCA1NSwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MywgNTUsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MywgCisgICAgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MiwgNTcsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MiwgMTg1LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNTIsIDUyLCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDU3LCA0OCwgMTI4LCA3NiwgNjUsIAorICAgIDc1LCA0NSwgNTEsIDU2LCA1MiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDU2LCA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNTEsIDUyLCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDUyLCAKKyAgICA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDU0LCA1NCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDU0LCA1MywgCisgICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUxLCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA1NiwgMTI4LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA1MywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA0OCwgMTI4LCA3NiwgNjUsIAorICAgIDc1LCA0NSwgNTAsIDQ5LCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDQ5LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNDksIDUyLCA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDksIDUxLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU3LCAKKyAgICA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU2LCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU2LCAxNzcsIAorICAgIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTYsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTUsIDE4NSwgNzYsIDY1LCA3NSwgCisgICAgNDUsIDQ4LCA1NCwgNTAsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MywgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCAKKyAgICA1MywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MSwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MCwgNTMsIAorICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MCwgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MCwgNDgsIDEyOCwgCisgICAgNzYsIDY1LCA3NSwgNDUsIDQ4LCA0OCwgNTEsIDEyOCwgNzYsIDY1LCA3NCwgNjUsIDc4LCA4OSwgNjUsIDc2LCA2NSwgNzgsIAorICAgIDEyOCwgNzYsIDY1LCA3MywgNzgsIDE5OSwgNzYsIDY1LCAyMDEsIDc2LCA2NSwgNzIsIDgzLCA3MiwgODUsIDEyOCwgNzYsIAorICAgIDY1LCA3MiwgMTI4LCA3NiwgNjUsIDcxLCA4NSwgODMsIDEyOCwgNzYsIDY1LCA3MSwgMjEzLCA3NiwgNjUsIDcxLCA2NSwgCisgICAgODIsIDEyOCwgNzYsIDY1LCA3MSwgNjUsIDIxMCwgNzYsIDY1LCA3MSwgNjUsIDY2LCAxMjgsIDc2LCA2NSwgNzEsIDY1LCAKKyAgICAxOTQsIDc2LCA2NSwgNjksIDg2LCAxMjgsIDc2LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2OCwgMjE3LCA3NiwgNjUsIDY3LCAKKyAgICA3NSwgMTI4LCA3NiwgNjUsIDY3LCA2NSwgMTI4LCA3NiwgNjUsIDY2LCA3OSwgODUsIDgyLCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDc2LCA2NSwgNjYsIDc5LCA4MiwgMTI4LCA3NiwgNjUsIDY2LCA3MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDc2LCA2NSwgNjYsIDczLCA2NSwgMjA0LCA3NiwgNjUsIDY2LCA2OSwgNzYsIDEyOCwgNzYsIDY1LCA2NiwgNjUsIAorICAgIDg0LCAxMjgsIDc2LCA2NSwgNjUsIDc4LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA2NSwgCisgICAgNzcsIDg1LCAxMjgsIDc2LCA2NSwgNjUsIDc3LCAxMjgsIDc2LCA2NSwgNjUsIDczLCAxMjgsIDc2LCA1NCwgMTI4LCA3NiwgCisgICAgNTIsIDEyOCwgNzYsIDUxLCAxMjgsIDc2LCA1MCwgMTI4LCA3NiwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzYsIDQ4LCA0OCwgCiAgICAgNTAsIDY1LCAxMjgsIDc2LCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3NiwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCAKICAgICA3NSwgODksIDg1LCA4MiwgNzMsIDczLCAxMjgsIDc1LCA4OSwgODUsIDEyOCwgNzUsIDg5LCA3OSwgMTI4LCA3NSwgODksIAogICAgIDc2LCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODksIDczLCAxMjgsIDc1LCA4OSwgNjksIDEyOCwgNzUsIDg5LCA2NSwgCkBAIC0yMjA3LDcyICsyNDY1LDgyIEBACiAgICAgMTI4LCA3NSwgODgsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA4NywgNjksIDEyOCwgNzUsIDg4LCA4NywgNjUsIDY1LCAKICAgICAxMjgsIDc1LCA4OCwgODcsIDY1LCAxMjgsIDc1LCA4OCwgODUsIDEyOCwgNzUsIDg4LCA3OSwgMTI4LCA3NSwgODgsIDczLCAKICAgICAxMjgsIDc1LCA4OCwgNjksIDY5LCAxMjgsIDc1LCA4OCwgNjksIDEyOCwgNzUsIDg4LCA2NSwgNjUsIDEyOCwgNzUsIDg4LCAKLSAgICA2NSwgMTI4LCA3NSwgODcsIDg1LCA1MSwgNDksIDU2LCAxMjgsIDc1LCA4NywgNzksIDc5LCAxMjgsIDc1LCA4NywgNzksIAotICAgIDEyOCwgNzUsIDg3LCA3MywgNzMsIDEyOCwgNzUsIDg3LCA3MywgMTI4LCA3NSwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODcsIAotICAgIDY5LCAxMjgsIDc1LCA4NywgNjUsIDg5LCAxMjgsIDc1LCA4NywgNjUsIDY5LCA4NCwgMTI4LCA3NSwgODcsIDY1LCA2NSwgCi0gICAgMTI4LCA3NSwgODYsIDY1LCAxMjgsIDc1LCA4NiwgMTI4LCA3NSwgODUsIDg4LCAxMjgsIDc1LCA4NSwgODUsIDcyLCAxMjgsIAotICAgIDc1LCA4NSwgODQsIDEyOCwgNzUsIDg1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4NSwgODMsIDcyLCA4NSwgNTAsIDEyOCwgCi0gICAgNzUsIDg1LCA4MiwgODgsIDEyOCwgNzUsIDg1LCA4MiwgODUsIDkwLCA2OSwgNzMsIDgyLCA3OSwgMTI4LCA3NSwgODUsIDgyLCAKLSAgICA4NCwgMTI4LCA3NSwgODUsIDgyLCA3OSwgNzksIDc4LCA2OSwgMTI4LCA3NSwgODUsIDgyLCAxMjgsIDc1LCA4NSwgMjEwLCAKLSAgICA3NSwgODUsIDgxLCAxMjgsIDc1LCA4NSwgNzksIDg4LCAxMjgsIDc1LCA4NSwgNzksIDgwLCAxMjgsIDc1LCA4NSwgNzksIAotICAgIDIwOCwgNzUsIDg1LCA3OSwgNzcsIDEyOCwgNzUsIDg1LCA3OSwgMTI4LCA3NSwgODUsIDc4LCA3MSwgMTI4LCA3NSwgODUsIAotICAgIDc4LCA2OCwgNjgsIDY1LCA3NiwgNzMsIDg5LCA2NSwgMTI4LCA3NSwgODUsIDc2LCAxMjgsIDc1LCA4NSwgMjA0LCA3NSwgCi0gICAgODUsIDY5LCA4NCwgMTI4LCA3NSwgODUsIDU1LCAxMjgsIDc1LCA4NSwgNTIsIDEyOCwgNzUsIDg1LCAxODAsIDc1LCA4NSwgCi0gICAgNTEsIDEyOCwgNzUsIDg1LCAxNzksIDc1LCA4NCwgMTI4LCA3NSwgODMsIDgzLCA4NSwgODUsIDEyOCwgNzUsIDgzLCA4MywgCi0gICAgODUsIDEyOCwgNzUsIDgzLCA4MywgNzksIDc5LCAxMjgsIDc1LCA4MywgODMsIDc5LCAxMjgsIDc1LCA4MywgODMsIDczLCAKLSAgICA3MywgMTI4LCA3NSwgODMsIDgzLCA3MywgMTI4LCA3NSwgODMsIDgzLCA2OSwgNjksIDEyOCwgNzUsIDgzLCA4MywgNjksIAotICAgIDEyOCwgNzUsIDgzLCA4MywgNjUsIDg1LCAxMjgsIDc1LCA4MywgODMsIDY1LCA3MywgMTI4LCA3NSwgODMsIDgzLCA2NSwgCi0gICAgNjUsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDEyOCwgNzUsIDgzLCA4MywgMTI4LCA3NSwgODMsIDczLCAxMjgsIDc1LCA4MiwgCi0gICAgNjksIDc3LCA2NSwgODMsIDg0LCA3MywgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA3OSwgODksIDgwLCA3OSwgODIsIAotICAgIDgyLCA3OSwgNzksIDc4LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCA3NSwgNzksIDg1LCA3MCwgNzMsIDgzLCAKLSAgICA3NywgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIAotICAgIDc3LCAxOTMsIDc1LCA4MCwgODUsIDEyOCwgNzUsIDgwLCA3OSwgODEsIDEyOCwgNzUsIDgwLCA3OSwgNzksIDEyOCwgNzUsIAotICAgIDgwLCA3OSwgMTI4LCA3NSwgODAsIDczLCAxMjgsIDc1LCA4MCwgNjksIDg1LCA4OCwgMTI4LCA3NSwgODAsIDY5LCA2OSwgCi0gICAgMTI4LCA3NSwgODAsIDY5LCAxMjgsIDc1LCA4MCwgNjUsIDgyLCA2NSwgODEsIDEyOCwgNzUsIDgwLCA2NSwgNzgsIDEyOCwgCi0gICAgNzUsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDg4LCAxMjgsIDc1LCA3OSwgODYsIDg1LCA4NSwgMTI4LCA3NSwgNzksIDg0LCAKLSAgICA3OSwgMTI4LCA3NSwgNzksIDgyLCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA3OSwgODIsIDc5LCA3OCwgNzMsIDgzLCAxMjgsIAotICAgIDc1LCA3OSwgODIsIDY5LCA2NSwgMjA2LCA3NSwgNzksIDgyLCA2NSwgNzgsIDczLCAxOTUsIDc1LCA3OSwgODEsIDc4LCA2OCwgCi0gICAgNzksIDc4LCAxMjgsIDc1LCA3OSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDgwLCAxMjgsIDc1LCA3OSwgNzksIDgwLCAKLSAgICA3OSwgMTI4LCA3NSwgNzksIDc5LCA3NywgODUsIDg1LCA4NCwgMTI4LCA3NSwgNzksIDc5LCAxMjgsIDc1LCA3OSwgNzgsIAotICAgIDg0LCA2OSwgODYsIDc3LCA2NSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCA3NywgMTkzLCA3NSwgNzksIDc3LCAKLSAgICAyMDEsIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDY1LCAxMjgsIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDE5MywgNzUsIAotICAgIDc5LCA3NywgNjYsIDIxMywgNzUsIDc5LCA3NSwgNzksIDEyOCwgNzUsIDc5LCA3NSwgMTI4LCA3NSwgNzksIDIwMywgNzUsIAotICAgIDc5LCA3MywgMTI4LCA3NSwgNzksIDIwMSwgNzUsIDc5LCA3MiwgMTI4LCA3NSwgNzksIDcxLCA3MiwgNzksIDc3LCAxMjgsIAotICAgIDc1LCA3OSwgNjksIDg0LCAxMjgsIDc1LCA3OSwgNjUsIDc2LCA2NSwgMTI4LCA3NSwgNzksIDY1LCAxMjgsIDc1LCA3OCwgCi0gICAgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCAyMTIsIDc1LCA3OCwgNzMsIDcwLCA2OSwgMTI4LCAKLSAgICA3NSwgNzgsIDczLCA3MCwgMTk3LCA3NSwgNzcsIDEyOCwgNzUsIDIwNSwgNzUsIDc2LCA3MywgODQsIDc5LCA3OCwgMTI4LCAKLSAgICA3NSwgNzYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCA3NywgMTkzLCA3NSwgNzYsIDY1LCAxMjgsIAotICAgIDc1LCA3NiwgMTI4LCA3NSwgNzUsIDg1LCAxMjgsIDc1LCA3NSwgNzksIDEyOCwgNzUsIDc1LCA3MywgMTI4LCA3NSwgNzUsIAotICAgIDY5LCA2OSwgMTI4LCA3NSwgNzUsIDY5LCAxMjgsIDc1LCA3NSwgNjUsIDEyOCwgNzUsIDc1LCAxMjgsIDc1LCA3NCwgNjksIAotICAgIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzUsIDczLCA4OSwgCi0gICAgNjksIDc5LCA3NSwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3NSwgNzMsIAotICAgIDg5LCA2OSwgNzksIDc1LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCAKLSAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgCi0gICAgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgNzUsIDczLCAKLSAgICA4OSwgNjksIDc5LCA3NSwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgCi0gICAgMjAzLCA3NSwgNzMsIDg4LCAxMjgsIDc1LCA3MywgODQsIDEyOCwgNzUsIDczLCA4MywgODMsIDczLCA3OCwgMTk5LCA3NSwgCi0gICAgNzMsIDgzLCA4MywgMTI4LCA3NSwgNzMsIDgzLCAyMTEsIDc1LCA3MywgODMsIDczLCA3NywgNTMsIDEyOCwgNzUsIDczLCAKLSAgICA4MywgNzMsIDc3LCAxODEsIDc1LCA3MywgODMsIDcyLCAxMjgsIDc1LCA3MywgODMsIDY1LCA3NiwgMTI4LCA3NSwgNzMsIAotICAgIDgyLCA3OSwgODcsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3NywgNjksIDY5LCA4NCwgNzksIDgyLCAKLSAgICA4NSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzEsIDg1LCA4MiwgNjUsIDc3LCA4NSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgCi0gICAgMTI4LCA3NSwgNzMsIDgyLCA3MSwgNzIsIDczLCAyMTgsIDc1LCA3MywgODEsIDEyOCwgNzUsIDczLCA4MCwgMTI4LCA3NSwgCi0gICAgNzMsIDIwOCwgNzUsIDczLCA3OCwgODMsIDcyLCA3MywgODAsIDEyOCwgNzUsIDczLCA3OCwgNjgsIDY5LCA4MiwgNzEsIDY1LCAKLSAgICA4MiwgODQsIDY5LCA3OCwgMTI4LCA3NSwgNzMsIDc3LCA3OSwgNzgsIDc5LCAxMjgsIDc1LCA3MywgNzMsIDEyOCwgNzUsIAotICAgIDczLCA3MiwgMTI4LCA3NSwgNzMsIDY5LCA4OCwgMTI4LCA3NSwgNzMsIDY5LCA4MCwgMTI4LCA3NSwgNzMsIDY5LCA2OSwgCi0gICAgNzcsIDEyOCwgNzUsIDczLCA2OSwgMTI4LCA3NSwgNzMsIDY4LCAxMjgsIDc1LCA3MywgMTk2LCA3NSwgNzMsIDY3LCA3NSwgCi0gICAgMTI4LCA3NSwgNzIsIDkwLCAxMjgsIDc1LCA3MiwgODcsIDY1LCA3MywgMTI4LCA3NSwgNzIsIDg1LCA2OSwgNzgsIDQ1LCAKLSAgICA3NiwgODUsIDE5NywgNzUsIDcyLCA4NSwgNjksIDIwNiwgNzUsIDcyLCA4NSwgNjgsIDY1LCA3NywgMTI4LCA3NSwgNzIsIAotICAgIDg1LCA2NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgODUsIDEyOCwgNzUsIDcyLCA3OSwgMjEyLCA3NSwgNzIsIDc5LCA3OCwgCi0gICAgMTI4LCA3NSwgNzIsIDc5LCA3NywgODUsIDg0LCAxMjgsIDc1LCA3MiwgNzksIDEyOCwgNzUsIDcyLCAyMDcsIDc1LCA3MiwgCi0gICAgNzcsIDIxMywgNzUsIDcyLCA3MywgODQsIDEyOCwgNzUsIDcyLCA3MywgNzgsIDg5LCA2NSwgMTI4LCA3NSwgNzIsIDczLCAKLSAgICA2OSwgODUsIDc1LCAyMDAsIDc1LCA3MiwgNzMsIDEyOCwgNzUsIDcyLCA3MiwgNzksIDEyOCwgNzUsIDcyLCA3MiwgNjUsIAotICAgIDEyOCwgNzUsIDcyLCA2OSwgODQsIDcyLCAxMjgsIDc1LCA3MiwgNjksIDczLCAxMjgsIDc1LCA3MiwgNjksIDY5LCAxMjgsIAotICAgIDc1LCA3MiwgNjksIDEyOCwgNzUsIDcyLCA2NSwgODIsIDc5LCA4MywgNzIsIDg0LCA3MiwgMjAxLCA3NSwgNzIsIDY1LCA4MiwgCisgICAgNjUsIDEyOCwgNzUsIDg3LCA4NiwgMTI4LCA3NSwgODcsIDg1LCA1MSwgNDksIDU2LCAxMjgsIDc1LCA4NywgNzksIDc5LCAKKyAgICAxMjgsIDc1LCA4NywgNzksIDEyOCwgNzUsIDg3LCA3NywgMTI4LCA3NSwgODcsIDczLCA3MywgMTI4LCA3NSwgODcsIDczLCAKKyAgICAxMjgsIDc1LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4NywgNjksIDEyOCwgNzUsIDg3LCA2NiwgMTI4LCA3NSwgODcsIDY1LCAKKyAgICA4OSwgMTI4LCA3NSwgODcsIDY1LCA2OSwgODQsIDEyOCwgNzUsIDg3LCA2NSwgNjUsIDEyOCwgNzUsIDg2LCA2NSwgMTI4LCAKKyAgICA3NSwgODYsIDEyOCwgNzUsIDg1LCA4OCwgMTI4LCA3NSwgODUsIDg2LCAxMjgsIDc1LCA4NSwgODUsIDcyLCAxMjgsIDc1LCAKKyAgICA4NSwgODQsIDEyOCwgNzUsIDg1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4NSwgODMsIDcyLCA4NSwgNTAsIDEyOCwgNzUsIAorICAgIDg1LCA4MywgNzIsIDg1LCAxNzgsIDc1LCA4NSwgODIsIDg4LCAxMjgsIDc1LCA4NSwgODIsIDg1LCA5MCwgNjksIDczLCA4MiwgCisgICAgNzksIDEyOCwgNzUsIDg1LCA4MiwgODQsIDEyOCwgNzUsIDg1LCA4MiwgNzksIDc5LCA3OCwgNjksIDEyOCwgNzUsIDg1LCAKKyAgICA4MiwgMTI4LCA3NSwgODUsIDIxMCwgNzUsIDg1LCA4MSwgMTI4LCA3NSwgODUsIDc5LCA4OCwgMTI4LCA3NSwgODUsIDc5LCAKKyAgICA4MCwgMTI4LCA3NSwgODUsIDc5LCAyMDgsIDc1LCA4NSwgNzksIDc3LCAxMjgsIDc1LCA4NSwgNzksIDEyOCwgNzUsIDg1LCAKKyAgICA3OCwgNzEsIDEyOCwgNzUsIDg1LCA3OCwgNjgsIDY4LCA2NSwgNzYsIDczLCA4OSwgNjUsIDEyOCwgNzUsIDg1LCA3NiwgCisgICAgMTI4LCA3NSwgODUsIDIwNCwgNzUsIDg1LCA3MSwgMTI4LCA3NSwgODUsIDY5LCA4NCwgMTI4LCA3NSwgODUsIDY2LCAxMjgsIAorICAgIDc1LCA4NSwgNjUsIDg2LCAxMjgsIDc1LCA4NSwgNjUsIDY2LCAxMjgsIDc1LCA4NSwgNjUsIDEyOCwgNzUsIDg1LCA1NSwgCisgICAgMTI4LCA3NSwgODUsIDUyLCAxMjgsIDc1LCA4NSwgMTgwLCA3NSwgODUsIDUxLCAxMjgsIDc1LCA4NSwgMTc5LCA3NSwgODQsIAorICAgIDEyOCwgNzUsIDgzLCA4MywgODUsIDg1LCAxMjgsIDc1LCA4MywgODMsIDg1LCAxMjgsIDc1LCA4MywgODMsIDc5LCA3OSwgCisgICAgMTI4LCA3NSwgODMsIDgzLCA3OSwgMTI4LCA3NSwgODMsIDgzLCA3MywgNzMsIDEyOCwgNzUsIDgzLCA4MywgNzMsIDEyOCwgCisgICAgNzUsIDgzLCA4MywgNjksIDY5LCAxMjgsIDc1LCA4MywgODMsIDY5LCAxMjgsIDc1LCA4MywgODMsIDY1LCA4NSwgMTI4LCAKKyAgICA3NSwgODMsIDgzLCA2NSwgNzMsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDY1LCAxMjgsIDc1LCA4MywgODMsIDY1LCAxMjgsIAorICAgIDc1LCA4MywgODMsIDEyOCwgNzUsIDgzLCA3MywgMTI4LCA3NSwgODIsIDY5LCA3NywgNjUsIDgzLCA4NCwgNzMsIDEyOCwgCisgICAgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNzksIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDc5LCA3OCwgMTI4LCA3NSwgODIsIAorICAgIDY1LCA4NCwgNzMsIDc3LCA3OSwgNzUsIDc5LCA4NSwgNzAsIDczLCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCAKKyAgICA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgMTkzLCA3NSwgODAsIDg1LCAxMjgsIAorICAgIDc1LCA4MCwgNzksIDgxLCAxMjgsIDc1LCA4MCwgNzksIDc5LCAxMjgsIDc1LCA4MCwgNzksIDEyOCwgNzUsIDgwLCA3MywgCisgICAgMTI4LCA3NSwgODAsIDY5LCA4NSwgODgsIDEyOCwgNzUsIDgwLCA2OSwgNjksIDEyOCwgNzUsIDgwLCA2OSwgMTI4LCA3NSwgCisgICAgODAsIDY1LCA4MiwgNjUsIDgxLCAxMjgsIDc1LCA4MCwgNjUsIDc4LCAxMjgsIDc1LCA4MCwgNjUsIDcyLCAxMjgsIDc1LCAKKyAgICA4MCwgNjUsIDEyOCwgNzUsIDc5LCA4OCwgMTI4LCA3NSwgNzksIDg2LCA4NSwgODUsIDEyOCwgNzUsIDc5LCA4NiwgMTI4LCAKKyAgICA3NSwgNzksIDg0LCA3OSwgMTI4LCA3NSwgNzksIDgyLCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA3OSwgODIsIDc5LCA3OCwgNzMsIAorICAgIDgzLCAxMjgsIDc1LCA3OSwgODIsIDY5LCA2NSwgMjA2LCA3NSwgNzksIDgyLCA2NSwgNzgsIDczLCAxOTUsIDc1LCA3OSwgCisgICAgODEsIDc4LCA2OCwgNzksIDc4LCAxMjgsIDc1LCA3OSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDgwLCAxMjgsIDc1LCAKKyAgICA3OSwgNzksIDg2LCAxMjgsIDc1LCA3OSwgNzksIDgwLCA3OSwgMTI4LCA3NSwgNzksIDc5LCA3NywgODUsIDg1LCA4NCwgCisgICAgMTI4LCA3NSwgNzksIDc5LCA2NiwgMTI4LCA3NSwgNzksIDc5LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIDc3LCAKKyAgICA2NSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCA3NywgMTkzLCA3NSwgNzksIDc3LCAyMDEsIDc1LCA3OSwgNzcsIAorICAgIDY2LCA4NSwgODYsIDY1LCAxMjgsIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDE5MywgNzUsIDc5LCA3NywgNjYsIDIxMywgCisgICAgNzUsIDc5LCA3NSwgNzksIDEyOCwgNzUsIDc5LCA3NSwgNjksIDEyOCwgNzUsIDc5LCA3NSwgMTI4LCA3NSwgNzksIDIwMywgCisgICAgNzUsIDc5LCA3MywgMTI4LCA3NSwgNzksIDIwMSwgNzUsIDc5LCA3MiwgMTI4LCA3NSwgNzksIDcxLCA3MiwgNzksIDc3LCAKKyAgICAxMjgsIDc1LCA3OSwgNjksIDg0LCAxMjgsIDc1LCA3OSwgNjYsIDEyOCwgNzUsIDc5LCA2NSwgNzYsIDY1LCAxMjgsIDc1LCAKKyAgICA3OSwgNjUsIDEyOCwgNzUsIDc4LCA4NSwgNjcsIDc1LCA3NiwgNjksIDgzLCAxMjgsIDc1LCA3OCwgODUsIDY3LCA3NSwgNzYsIAorICAgIDY5LCAxMjgsIDc1LCA3OCwgNzksIDY2LCA4MywgMTI4LCA3NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc1LCA3OCwgCisgICAgNzMsIDcxLCA3MiwgMjEyLCA3NSwgNzgsIDczLCA3MCwgNjksIDEyOCwgNzUsIDc4LCA3MywgNzAsIDE5NywgNzUsIDc3LCAKKyAgICAxMjgsIDc1LCAyMDUsIDc1LCA3NiwgNzMsIDg0LCA3OSwgNzgsIDEyOCwgNzUsIDc2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCAKKyAgICA3NSwgNzYsIDY1LCA4MywgNzcsIDE5MywgNzUsIDc2LCA2NSwgMTI4LCA3NSwgNzYsIDEyOCwgNzUsIDc1LCA4NSwgMTI4LCAKKyAgICA3NSwgNzUsIDc5LCAxMjgsIDc1LCA3NSwgNzMsIDEyOCwgNzUsIDc1LCA2OSwgNjksIDEyOCwgNzUsIDc1LCA2OSwgMTI4LCAKKyAgICA3NSwgNzUsIDY1LCAxMjgsIDc1LCA3NSwgMTI4LCA3NSwgNzQsIDY5LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAorICAgIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MywgNzMsIDc5LCAKKyAgICA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgyLCA3MywgCisgICAgNjksIDg1LCA3NiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc1LCAKKyAgICA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCisgICAgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA2NywgNzIsIAorICAgIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDIwMywgNzUsIDczLCA4OCwgMTI4LCA3NSwgCisgICAgNzMsIDg3LCAxMjgsIDc1LCA3MywgODYsIDEyOCwgNzUsIDczLCA4NCwgMTI4LCA3NSwgNzMsIDgzLCA4MywgNzMsIDc4LCAKKyAgICAxOTksIDc1LCA3MywgODMsIDgzLCAxMjgsIDc1LCA3MywgODMsIDIxMSwgNzUsIDczLCA4MywgNzMsIDc3LCA1MywgMTI4LCAKKyAgICA3NSwgNzMsIDgzLCA3MywgNzcsIDE4MSwgNzUsIDczLCA4MywgNzIsIDEyOCwgNzUsIDczLCA4MywgNjUsIDc2LCAxMjgsIAorICAgIDc1LCA3MywgODIsIDc5LCA4NywgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDczLCA4MiwgNzksIDc3LCA2OSwgNjksIDg0LCAKKyAgICA3OSwgODIsIDg1LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3MSwgODUsIDgyLCA2NSwgNzcsIDg1LCAxMjgsIDc1LCA3MywgODIsIAorICAgIDc5LCAxMjgsIDc1LCA3MywgODIsIDcxLCA3MiwgNzMsIDIxOCwgNzUsIDczLCA4MSwgMTI4LCA3NSwgNzMsIDgwLCAxMjgsIAorICAgIDc1LCA3MywgMjA4LCA3NSwgNzMsIDc4LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NSwgNzMsIDc4LCA2OCwgNjksIDgyLCA3MSwgCisgICAgNjUsIDgyLCA4NCwgNjksIDc4LCAxMjgsIDc1LCA3MywgNzcsIDc5LCA3OCwgNzksIDEyOCwgNzUsIDczLCA3NiwgNzYsIDY5LCAKKyAgICA4MiwgMTI4LCA3NSwgNzMsIDczLCAxMjgsIDc1LCA3MywgNzIsIDEyOCwgNzUsIDczLCA2OSwgODgsIDEyOCwgNzUsIDczLCAKKyAgICA2OSwgODYsIDY1LCAyMDYsIDc1LCA3MywgNjksIDgwLCAxMjgsIDc1LCA3MywgNjksIDY5LCA3NywgMTI4LCA3NSwgNzMsIAorICAgIDY5LCAxMjgsIDc1LCA3MywgNjgsIDEyOCwgNzUsIDczLCAxOTYsIDc1LCA3MywgNjcsIDc1LCAxMjgsIDc1LCA3MywgNjYsIAorICAgIDEyOCwgNzUsIDczLCA2NSwgODYsIDEyOCwgNzUsIDczLCA2NSwgNjYsIDEyOCwgNzUsIDcyLCA5MCwgMTI4LCA3NSwgNzIsIAorICAgIDg3LCA2NSwgNzMsIDEyOCwgNzUsIDcyLCA4NSwgNjksIDc4LCA0NSwgNzYsIDg1LCAxOTcsIDc1LCA3MiwgODUsIDY5LCAKKyAgICAyMDYsIDc1LCA3MiwgODUsIDY4LCA2NSwgODcsIDY1LCA2OCwgMjAxLCA3NSwgNzIsIDg1LCA2OCwgNjUsIDc3LCAxMjgsIAorICAgIDc1LCA3MiwgODUsIDY1LCA4NCwgMTI4LCA3NSwgNzIsIDc5LCA4NSwgMTI4LCA3NSwgNzIsIDc5LCAyMTIsIDc1LCA3MiwgCisgICAgNzksIDc4LCAxMjgsIDc1LCA3MiwgNzksIDc3LCA4NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgNzQsIDc1LCAyMDEsIDc1LCAKKyAgICA3MiwgNzksIDEyOCwgNzUsIDcyLCAyMDcsIDc1LCA3MiwgNzcsIDIxMywgNzUsIDcyLCA3MywgODQsIDEyOCwgNzUsIDcyLCAKKyAgICA3MywgNzgsIDg5LCA2NSwgMTI4LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCAyMDAsIDc1LCA3MiwgNzMsIDEyOCwgNzUsIAorICAgIDcyLCAyMDEsIDc1LCA3MiwgNzIsIDc5LCAxMjgsIDc1LCA3MiwgNzIsIDY1LCAxMjgsIDc1LCA3MiwgNjksIDg0LCA3MiwgCisgICAgMTI4LCA3NSwgNzIsIDY5LCA3MywgMTI4LCA3NSwgNzIsIDY5LCA2OSwgMTI4LCA3NSwgNzIsIDY5LCAxMjgsIDc1LCA3MiwgCisgICAgNjUsIDg2LCAxMjgsIDc1LCA3MiwgNjUsIDgyLCA3OSwgODMsIDcyLCA4NCwgNzIsIDIwMSwgNzUsIDcyLCA2NSwgODIsIAogICAgIDEyOCwgNzUsIDcyLCA2NSwgODAsIDcyLCAxMjgsIDc1LCA3MiwgNjUsIDc4LCAxOTksIDc1LCA3MiwgNjUsIDc4LCA2OCwgCiAgICAgMTkzLCA3NSwgNzIsIDY1LCA3OCwgMTI4LCA3NSwgNzIsIDY1LCA3NywgODQsIDIwMSwgNzUsIDcyLCA2NSwgNzUsIDY1LCAKICAgICA4MywgODMsIDczLCA2NSwgMjA2LCA3NSwgNzIsIDY1LCA3MywgMTI4LCA3NSwgNzIsIDY1LCA3MiwgMTI4LCA3NSwgNzIsIAotICAgIDY1LCAyMDAsIDc1LCA3MiwgNjUsIDY1LCAxMjgsIDc1LCA3MSwgMTI4LCA3NSwgNjksIDg5LCA2NywgNjUsIDgwLCAxMjgsIAotICAgIDc1LCA2OSwgODksIDY3LCA2NSwgMjA4LCA3NSwgNjksIDg5LCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzUsIDY5LCA4OCwgCisgICAgNjUsIDIwMCwgNzUsIDcyLCA2NSwgNjYsIDEyOCwgNzUsIDcyLCA2NSwgNjUsIDEyOCwgNzUsIDcxLCAxMjgsIDc1LCA2OSwgCisgICAgODksIDY3LCA2NSwgODAsIDEyOCwgNzUsIDY5LCA4OSwgNjcsIDY1LCAyMDgsIDc1LCA2OSwgODksIDY2LCA3OSwgNjUsIDgyLCAKKyAgICA2OCwgMTI4LCA3NSwgNjksIDg5LCA2NiwgNzksIDY1LCA4MiwgMTk2LCA3NSwgNjksIDg4LCAxMjgsIDc1LCA2OSwgODYsIAogICAgIDEyOCwgNzUsIDY5LCA4NSwgODksIDY5LCA4NSwgODgsIDEyOCwgNzUsIDY5LCA4NSwgODMsIDcyLCA2OSwgODUsIDY1LCA2OSwgCiAgICAgODAsIDEyOCwgNzUsIDY5LCA4NSwgODMsIDY5LCA4NSwgODgsIDEyOCwgNzUsIDY5LCA4NSwgODAsIDg1LCA4MSwgMTI4LCAKICAgICA3NSwgNjksIDg1LCA3OSwgMjEyLCA3NSwgNjksIDg1LCA3NywgMTI4LCA3NSwgNjksIDg1LCA3NSwgNjksIDg1LCA4NCwgNzgsIApAQCAtMjI4NSwxNTYwICsyNTUzLDE2MjYgQEAKICAgICA2OSwgNzcsIDgwLCA3NiwgNzMsIDEyOCwgNzUsIDY5LCA3NywgODAsIDc2LCAyMDEsIDc1LCA2OSwgNzcsIDgwLCA3MiwgODIsIAogICAgIDY5LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA3NywgNjYsIDY1LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA3NiwgODYsIDczLCAKICAgICAyMDYsIDc1LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA3NSwgNjksIDcyLCA2OSwgMjAwLCA3NSwgNjksIDcyLCAxMjgsIDc1LCAKLSAgICA2OSwgNzAsIDg1LCA3NiwgNjUsIDEyOCwgNzUsIDY5LCA2OSwgODMsIDg1LCAxMjgsIDc1LCA2OSwgNjksIDgwLCA3MywgNzgsIAotICAgIDE5OSwgNzUsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDc1LCA2NywgNjUsIDc2LCAxMjgsIDc1LCA2NiwgMTI4LCA3NSwgNjUsIAotICAgIDkwLCA2NSwgNzUsIDIwMCwgNzUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4OSwgNjUsIDIwMCwgCi0gICAgNzUsIDY1LCA4OCwgMTI4LCA3NSwgNjUsIDg3LCA3MywgMTI4LCA3NSwgNjUsIDg2LCA4OSwgNzUsIDY1LCAxMjgsIDc1LCAKLSAgICA2NSwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDg1LCAyMDYsIDc1LCA2NSwgODUsIDEyOCwgNzUsIDY1LCA4NCwgNzksIAotICAgIDEyOCwgNzUsIDY1LCA4NCwgNzIsIDczLCA4MywgODQsIDczLCAxMjgsIDc1LCA2NSwgODQsIDcyLCA2NSwgNzUsIDE5MywgCi0gICAgNzUsIDY1LCA4NCwgNjUsIDg2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgNjUsIDg0LCA2NSwgODYsIDE5MywgNzUsIDY1LCAKLSAgICA4NCwgNjUsIDc1LCA2NSwgNzgsIDY1LCA0NSwgNzIsIDczLCA4MiwgNjUsIDcxLCA2NSwgNzgsIDE5MywgNzUsIDY1LCA4MywgCi0gICAgODIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCAyMDYsIDc1LCA2NSwgODMsIDgyLCAKLSAgICA2NSwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgMTkzLCA3NSwgNjUsIDgzLCA3NSwgNjUsIDc2LCAxMjgsIDc1LCA2NSwgODMsIAotICAgIDc1LCA2NSwgMjA0LCA3NSwgNjUsIDgzLCA3MiwgNzcsIDczLCA4MiwgMjAxLCA3NSwgNjUsIDgyLCA4MywgNzIsIDY1LCA3OCwgCi0gICAgNjUsIDEyOCwgNzUsIDY1LCA4MiwgNzksIDgyLCA3MywgNzMsIDEyOCwgNzUsIDY1LCA4MiwgMjA3LCA3NSwgNjUsIDgyLCAKLSAgICA2OSwgMjA2LCA3NSwgNjUsIDgyLCA2NSwgODQsIDg0LCA3OSwgMTI4LCA3NSwgNjUsIDgyLCA2NSwgNzgsIDEyOCwgNzUsIAotICAgIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCAKLSAgICA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgCi0gICAgNjksIDc5LCA4NSwgNzgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIAotICAgIDg1LCA3OCwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2NSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIDgwLCA4MCwgCi0gICAgMTkzLCA3NSwgNjUsIDgwLCA3OSwgMTI4LCA3NSwgNjUsIDgwLCA3MiwgMTI4LCA3NSwgNjUsIDgwLCA2NSwgNzYsIDEyOCwgCi0gICAgNzUsIDY1LCA4MCwgNjUsIDEyOCwgNzUsIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCA3NSwgNjUsIDc4LCA3MSwgMTI4LCAKLSAgICA3NSwgNjUsIDc4LCAxOTksIDc1LCA2NSwgNzgsIDY1LCA3NSwgNzksIDEyOCwgNzUsIDY1LCA3NywgNTIsIDEyOCwgNzUsIAotICAgIDY1LCA3NywgNTAsIDEyOCwgNzUsIDY1LCA3NywgMTI4LCA3NSwgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIDc1LCA2NSwgCi0gICAgNjYsIDY1LCA4NCwgMTI4LCA3NSwgNjUsIDc1LCAxMjgsIDc1LCA2NSwgMjAzLCA3NSwgNjUsIDczLCA4NCwgNzIsIDIwMSwgCi0gICAgNzUsIDY1LCA3MywgODIsIDczLCAxMjgsIDc1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCAyMDEsIDc1LCA2NSwgNzAsIDY1LCAKLSAgICAxMjgsIDc1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCAxOTgsIDc1LCA2NSwgNjgsIDUzLCAxMjgsIDc1LCA2NSwgNjgsIDE4MSwgCi0gICAgNzUsIDY1LCA2OCwgNTIsIDEyOCwgNzUsIDY1LCA2OCwgNTEsIDEyOCwgNzUsIDY1LCA2OCwgMTc5LCA3NSwgNjUsIDY4LCAKLSAgICA1MCwgMTI4LCA3NSwgNjUsIDY4LCAxMjgsIDc1LCA2NSwgNjYsIDE5MywgNzUsIDY1LCA2NiwgMTI4LCA3NSwgNjUsIDY1LCAKLSAgICA3MywgMTI4LCA3NSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzUsIDY1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCA1MCwgMTI4LCAKLSAgICA3NSwgNjUsIDE3OCwgNzUsIDQ4LCA0OCwgNTYsIDEyOCwgNzUsIDQ4LCA0OCwgNTUsIDEyOCwgNzUsIDQ4LCA0OCwgNTQsIAotICAgIDEyOCwgNzUsIDQ4LCA0OCwgNTMsIDEyOCwgNzUsIDQ4LCA0OCwgNTIsIDEyOCwgNzUsIDQ4LCA0OCwgNTEsIDEyOCwgNzUsIAotICAgIDQ4LCA0OCwgNTAsIDEyOCwgNzUsIDQ4LCA0OCwgNDksIDEyOCwgNzQsIDg3LCA2NSwgMTI4LCA3NCwgODUsIDg1LCAxMjgsIAotICAgIDc0LCA4NSwgODQsIDEyOCwgNzQsIDg1LCA4MywgODQsIDczLCA3MCwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNzQsIDg1LCA4MCwgNzMsIDg0LCA2OSwgODIsIDEyOCwgNzQsIDg1LCA3OSwgODQsIDEyOCwgNzQsIDg1LCA3OSwgODAsIAotICAgIDEyOCwgNzQsIDg1LCA3OCwgNzksIDEyOCwgNzQsIDg1LCA3OCwgNjksIDEyOCwgNzQsIDg1LCA3NiwgODksIDEyOCwgNzQsIAotICAgIDg1LCA2OSwgODUsIDczLCAxMjgsIDc0LCA4NSwgNjgsIDg1LCA3NiwgMTI4LCA3NCwgODUsIDY4LCA3MSwgNjksIDEyOCwgCi0gICAgNzQsIDg1LCA2OCwgNjksIDc5LCA0NSwgODMsIDgwLCA2NSwgNzgsIDczLCA4MywgMjAwLCA3NCwgNzksIDg5LCA3OSwgODUsIAotICAgIDIxMSwgNzQsIDc5LCA4OSwgMTI4LCA3NCwgNzksIDg2LCA2OSwgMTI4LCA3NCwgNzksIDIxMiwgNzQsIDc5LCA3OCwgNzEsIAotICAgIDEyOCwgNzQsIDc5LCA3OCwgMTkzLCA3NCwgNzksIDc1LCA2OSwgODIsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDY5LCA2OCwgCi0gICAgMTI4LCA3NCwgNzksIDczLCA3OCwgMTI4LCA3NCwgNzksIDY1LCAxMjgsIDc0LCA3NCwgODksIDg4LCAxMjgsIDc0LCA3NCwgCi0gICAgODksIDg0LCAxMjgsIDc0LCA3NCwgODksIDgwLCAxMjgsIDc0LCA3NCwgODksIDEyOCwgNzQsIDc0LCA4NSwgODgsIDEyOCwgCi0gICAgNzQsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDg4LCAxMjgsIDc0LCA3NCwgODUsIDgyLCAxMjgsIDc0LCAKLSAgICA3NCwgODUsIDgwLCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgODAsIDEyOCwgNzQsIAotICAgIDc0LCA4NSwgNzksIDEyOCwgNzQsIDc0LCA4NSwgMTI4LCA3NCwgNzQsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDc5LCA4NCwgCi0gICAgMTI4LCA3NCwgNzQsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIDc5LCAxMjgsIDc0LCA3NCwgNzMsIDg4LCAxMjgsIDc0LCA3NCwgCi0gICAgNzMsIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3NCwgNzQsIDczLCAKLSAgICA2OSwgODQsIDEyOCwgNzQsIDc0LCA3MywgNjksIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCAxMjgsIDc0LCA3NCwgNzMsIAotICAgIDEyOCwgNzQsIDc0LCA2OSwgNjksIDEyOCwgNzQsIDc0LCA2OSwgMTI4LCA3NCwgNzQsIDY1LCAxMjgsIDc0LCA3MywgNzYsIAotICAgIDEyOCwgNzQsIDczLCA3MywgMTI4LCA3NCwgNzMsIDcyLCA4NiwgNjUsIDc3LCA4NSwgNzYsIDczLCA4OSwgNjUsIDEyOCwgCi0gICAgNzQsIDczLCA2NSwgMTI4LCA3NCwgNzIsIDc5LCAxMjgsIDc0LCA3MiwgNjksIDcyLCAxMjgsIDc0LCA3MiwgNjUsIDc4LCAKLSAgICAxMjgsIDc0LCA3MiwgNjUsIDc3LCAxMjgsIDc0LCA3MiwgNjUsIDY1LCAxMjgsIDc0LCA3MiwgNjUsIDEyOCwgNzQsIDY5LCAKLSAgICA4NSwgMTI4LCA3NCwgNjksIDgyLCA4NSwgODMsIDY1LCA3NiwgNjksIDc3LCAxMjgsIDc0LCA2OSwgODIsIDY1LCAyMDYsIAotICAgIDc0LCA2OSwgODIsIDY1LCAxMjgsIDc0LCA2OSwgODIsIDEyOCwgNzQsIDY5LCA3MiwgMTI4LCA3NCwgNjksIDIwMCwgNzQsIAotICAgIDY5LCA3MSwgNzksIDcxLCA2NSwgNzgsIDEyOCwgNzQsIDY5LCA2OSwgNzcsIDEyOCwgNzQsIDY5LCA2NSwgNzgsIDgzLCAKLSAgICAxMjgsIDc0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc0LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgCi0gICAgMTI4LCA3NCwgNjUsIDg1LCAxMjgsIDc0LCA2NSwgODIsIDEyOCwgNzQsIDY1LCA4MCwgNjUsIDc4LCA2OSwgODMsIDE5NywgCi0gICAgNzQsIDY1LCA4MCwgNjUsIDc4LCAxMjgsIDc0LCA2NSwgNzgsIDg1LCA2NSwgODIsIDg5LCAxMjgsIDc0LCA2NSwgNzYsIDc2LCAKLSAgICA2NSwgNzQsIDY1LCA3NiwgNjUsIDc2LCA3OSwgODUsIDcyLCA3OSwgODUsIDEyOCwgNzQsIDY1LCA3MywgMTI4LCA3NCwgNjUsIAotICAgIDcyLCAxMjgsIDc0LCA2NSwgNjgsIDY5LCAxMjgsIDc0LCA2NSwgNjcsIDc1LCA0NSwgNzksIDQ1LCA3NiwgNjUsIDc4LCA4NCwgCi0gICAgNjksIDgyLCA3OCwgMTI4LCA3NCwgNjUsIDY3LCAyMDMsIDc0LCA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCAKLSAgICA2OSwgMTk2LCAyMDIsIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDY1LCAxMjgsIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIAotICAgIDE5MywgNzMsIDkwLCA3MiwgNjksIDEyOCwgNzMsIDkwLCA2NSwgNzUsIDY1LCA4OSwgMTkzLCA3MywgODksIDY5LCA3NSwgCi0gICAgMTI4LCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4NSwgNzQsIDY1LCAxMjgsIDczLCA4NSwgMTI4LCA3MywgCi0gICAgODQsIDIxMSwgNzMsIDg0LCA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA4NCwgNjksIDc3LCAxMjgsIDczLCAKLSAgICA4MywgODMsIDcyLCA2NSwgODIsIDEyOCwgNzMsIDgzLCA3OSwgNzgsIDEyOCwgNzMsIDgzLCA3OSwgMjA2LCA3MywgODMsIAotICAgIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTI4LCA3MywgODMsIDY5LCA3OCwgNDUsIDczLCA4MywgNjksIDc4LCAxMjgsIDczLCA4MywgCi0gICAgNjUsIDc1LCA3MywgMTkzLCA3MywgODMsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzMsIDgyLCA4NSwgODksIDY1LCAKLSAgICA3OCwgNzgsIDY1LCAxMjgsIDczLCA4MiwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDgyLCA3OSwgNzgsIAotICAgIDQ1LCA2NywgNzksIDgwLCA4MCwgNjksIDIxMCwgNzMsIDgyLCA3OSwgNzgsIDEyOCwgNzMsIDc5LCA4NCwgNzMsIDcwLCA3MywgCi0gICAgNjksIDE5NiwgNzMsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA3MywgNzksIDg0LCA2NSwgMTI4LCA3MywgNzksIDg0LCAKLSAgICAxOTMsIDczLCA3OSwgODIsIDEyOCwgNzMsIDc5LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNzMsIDc4LCA4NiwgNzMsIAotICAgIDgzLCA3MywgNjYsIDc2LCAxOTcsIDczLCA3OCwgODYsIDY5LCA4MiwgODQsIDY5LCA2OCwgMTI4LCA3MywgNzgsIDg2LCA2OSwgCi0gICAgODIsIDg0LCA2OSwgMTk2LCA3MywgNzgsIDg2LCA2OSwgODIsIDgzLCAxOTcsIDczLCA3OCwgODQsIDgyLCA3OSwgNjgsIDg1LCAKLSAgICA2NywgNjksIDgyLCAxMjgsIDczLCA3OCwgODQsIDczLCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDg5LCA3NiwgNzYsIAotICAgIDY1LCA2NiwgNzMsIDE5NSwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgCi0gICAgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIAotICAgIDY3LCA4NCwgNzMsIDc4LCAxOTksIDczLCA3OCwgODQsIDY5LCA4MiwgODIsIDc5LCA2NiwgNjUsIDc4LCA3MSwgMTI4LCA3MywgCi0gICAgNzgsIDg0LCA2OSwgODIsIDgwLCA3OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzYsIAotICAgIDc5LCA2NywgNzUsIDY5LCAxOTYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDczLCA3OCwgCi0gICAgODQsIDY5LCA4MiwgNzYsIDY1LCA2NywgNjksIDE5NiwgNzMsIDc4LCA4NCwgNjksIDgyLCA3MywgNzksIDIxMCwgNzMsIDc4LCAKLSAgICA4NCwgNjksIDgyLCA2OSwgODMsIDIxMiwgNzMsIDc4LCA4NCwgNjksIDgyLCA2NywgNjUsIDc2LCA2NSwgODQsIDY5LCAxMjgsIAotICAgIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCAKLSAgICA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCA2NSwgNzYsIDEyOCwgNzMsIDc4LCA4NCwgNjksIAotICAgIDcxLCA4MiwgNjUsIDIwNCwgNzMsIDc4LCA4MywgODUsIDc2LCA2NSwgMjEwLCA3MywgNzgsIDgzLCA4NCwgODIsIDg1LCA3NywgCi0gICAgNjksIDc4LCA4NCwgNjUsIDIwNCwgNzMsIDc4LCA4MywgNzMsIDY4LCA2OSwgMTI4LCA3MywgNzgsIDgzLCA2OSwgODIsIDg0LCAKLSAgICA3MywgNzksIDIwNiwgNzMsIDc4LCA4MywgNjksIDY3LCA4NCwgMTI4LCA3MywgNzgsIDgzLCA2NywgODIsIDczLCA4MCwgODQsIAotICAgIDczLCA3OSwgNzgsIDY1LCAyMDQsIDczLCA3OCwgODAsIDg1LCAyMTIsIDczLCA3OCwgNzgsIDc5LCA2NywgNjksIDc4LCA2NywgCi0gICAgNjksIDEyOCwgNzMsIDc4LCA3OCwgNzgsIDEyOCwgNzMsIDc4LCA3OCwgNjksIDgyLCAxMjgsIDczLCA3OCwgNzgsIDY5LCAKLSAgICAyMTAsIDczLCA3OCwgNzgsIDEyOCwgNzMsIDc4LCA3MywgNzgsIDcxLCA4NSwgMTI4LCA3MywgNzgsIDczLCAxMjgsIDczLCAKLSAgICA3OCwgNzIsIDczLCA2NiwgNzMsIDIxMiwgNzMsIDc4LCA3MiwgNjksIDgyLCA2OSwgNzgsIDIxMiwgNzMsIDc4LCA3MSwgODcsIAotICAgIDY1LCA5MCwgMTI4LCA3MywgNzgsIDcwLCA3OSwgODIsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDcwLCA3NiwgCi0gICAgODUsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDczLCA3OCwgNzAsIDczLCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA3MywgNzgsIDcwLCAKLSAgICA3MywgNzgsIDczLCA4NCwgMjE3LCA3MywgNzgsIDY4LCA4NSwgODMsIDg0LCA4MiwgNzMsIDY1LCAyMDQsIDczLCA3OCwgNjgsIAotICAgIDczLCA4MiwgNjksIDY3LCAyMTIsIDczLCA3OCwgNjgsIDczLCA2NywgNjUsIDg0LCA3OSwgODIsIDEyOCwgNzMsIDc4LCA2OCwgCi0gICAgNzMsIDY3LCA2NSwgODQsIDc5LCAyMTAsIDczLCA3OCwgNjgsIDczLCAxOTUsIDczLCA3OCwgNjgsIDczLCA2NSwgMjA2LCAKLSAgICA3MywgNzgsIDY4LCA2OSwgODgsIDEyOCwgNzMsIDc4LCA2OCwgNjksIDgwLCA2OSwgNzgsIDY4LCA2OSwgNzgsIDIxMiwgNzMsIAotICAgIDc4LCA2NywgODIsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MywgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgNjksIDIxMSwgCi0gICAgNzMsIDc4LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAxMjgsIDczLCA3OCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIAotICAgIDE5NywgNzMsIDc4LCA2NywgNzksIDc3LCA3MywgNzgsIDE5OSwgNzMsIDc4LCA2NywgNzYsIDg1LCA2OCwgNzMsIDc4LCAKLSAgICAxOTksIDczLCA3OCwgNjcsIDcyLCAxMjgsIDczLCA3OCwgNjYsIDc5LCAyMTYsIDczLCA3OCwgNjUsIDgwLCAxMjgsIDczLCAKLSAgICA3OCwgNDUsIDY1LCA3NiwgNjUsIDcwLCAxMjgsIDczLCA3NywgODAsIDY5LCA4MiwgNzMsIDY1LCAyMDQsIDczLCA3NywgODAsIAotICAgIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDg1LCAyMDUsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDY1LCAKLSAgICAxMjgsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgNzMsIDc3LCA3OCwgMTI4LCA3MywgNzcsIAotICAgIDczLCA4MywgNjksIDc5LCAyMTEsIDczLCA3NywgNzMsIDc4LCA1MSwgMTI4LCA3MywgNzcsIDczLCA3OCwgMTI4LCA3MywgCi0gICAgNzcsIDczLCAyMDYsIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDcwLCAKLSAgICA4NCwgNzIsIDc5LCA4MiwgNjUsIDEyOCwgNzMsIDc3LCA3MywgNzAsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIAotICAgIDY4LCA3MywgNjUsIDgyLCA3MSwgNzksIDc4LCAxMjgsIDczLCA3NywgNjUsIDcxLCAxOTcsIDczLCA3NiwgODUsIDg5LCA2NSwgCi0gICAgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzYsIDg1LCA4OSwgMTI4LCA3MywgNzYsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDczLCA3NiwgODUsIDg0LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDczLCA3NiwgNzMsIAotICAgIDc3LCA3NywgODUsIDUxLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCAKLSAgICAyMTMsIDczLCA3NiwgNTAsIDEyOCwgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDczLCA3NSwgNjUsIDgyLCAxOTMsIDczLCAKLSAgICA3NCwgMTI4LCA3MywgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzEsIDczLCAxMjgsIDczLCA3MSwgMjAxLCAKLSAgICA3MywgNzEsIDcxLCA4NywgODMsIDEyOCwgNzMsIDcwLCA3MywgNzgsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIAotICAgIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCAKLSAgICA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgCi0gICAgNzUsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDczLCA2OSwgODUsIDc4LCAKLSAgICA3MSwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNzIsIDczLCA2OSwgCi0gICAgODUsIDgwLCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCAKLSAgICA2OSwgODUsIDc4LCA3MSwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgCi0gICAgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIAotICAgIDY3LCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgMTk5LCA3MywgNjgsIDc2LCA2OSwgMTI4LCA3MywgNjgsIDczLCA3NywgCi0gICAgMTI4LCA3MywgNjgsIDczLCAyMDUsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTcsIDQ4LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU2LCA2OCwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjcsIDY1LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA2OCwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjUsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTUsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU1LCA1NCwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTMsIDUxLCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDUzLCA0OSwgNzAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA0OSwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDgsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTQsIDcwLCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU0LCA2OSwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDUwLCAKLSAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA0OCwgNTcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTQsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTQsIDUzLCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU0LCA1MywgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDUzLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUxLCA1MywgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTQsIDUwLCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU0LCA1MCwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNzAsIDU2LCAKLSAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY4LCA2OSwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2NiwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTMsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUzLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTYsIDcwLCAKLSAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUzLCA2NiwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MiwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTMsIDUxLCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUzLCA1MSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDY4LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA1NSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTMsIDQ5LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUyLCA2OSwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDU2LCAKLSAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA1MCwgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCi0gICAgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNjUsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCi0gICAgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCi0gICAgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNjUsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNzAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTIsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNzAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTIsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDcwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNzAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTIsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA0OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNzAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzgsIDg0LCA3MywgNzAsIDczLCA2NywgNjUsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3MywgNjcsIDcyLCA3OSwgODUsIAotICAgIDEyOCwgNzMsIDY3LCA3MiwgNzksIDgzLCAxMjgsIDczLCA2NywgNzIsIDczLCA3NywgNjUsIDg0LCA3OSwgODMsIDEyOCwgCi0gICAgNzMsIDY3LCA3MiwgNjUsIDY4LCA3MywgNzgsIDEyOCwgNzMsIDY3LCA2OSwgNzYsIDY1LCA3OCwgNjgsIDczLCA2NywgNDUsIAotICAgIDg5LCA4MiwgMTI4LCA3MywgNjYsIDczLCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3MywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgCi0gICAgNzMsIDQ4LCA0OSwgNTMsIDEyOCwgNzMsIDQ4LCA0OSwgNTIsIDEyOCwgNzMsIDQ4LCA0OSwgNTEsIDEyOCwgNzMsIDQ4LCAKLSAgICA0OSwgNTAsIDEyOCwgNzMsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ5LCAxMjgsIDczLCA0OCwgNDksIAotICAgIDQ4LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OCwgMTI4LCA3MywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgNzMsIDQ4LCA0OCwgCi0gICAgNTcsIDEyOCwgNzMsIDQ4LCA0OCwgNTYsIDEyOCwgNzMsIDQ4LCA0OCwgNTUsIDEyOCwgNzMsIDQ4LCA0OCwgNTQsIDEyOCwgCi0gICAgNzMsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDczLCA0OCwgNDgsIDUzLCAxMjgsIDczLCA0OCwgNDgsIDUyLCAxMjgsIDczLCAKLSAgICA0OCwgNDgsIDUxLCAxMjgsIDczLCA0OCwgNDgsIDUwLCAxMjgsIDczLCA0OCwgNDgsIDQ5LCAxMjgsIDczLCA0NSwgODksIAotICAgIDg1LCAxMjgsIDczLCA0NSwgODksIDc5LCAxMjgsIDczLCA0NSwgODksIDY5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgCi0gICAgMTI4LCA3MywgNDUsIDg5LCA2NSwgNjksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDg5LCAKLSAgICA2NSwgMTI4LCA3MywgNDUsIDc5LCA0NSwgNzMsIDEyOCwgNzMsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDY5LCA4NSwgMTI4LCAKLSAgICA3MywgNDUsIDY2LCA2OSwgNjUsIDc3LCAxMjgsIDczLCA0NSwgNjUsIDgyLCA2NSwgNjksIDY1LCAxMjgsIDczLCA0NSwgNjUsIAotICAgIDEyOCwgNzIsIDkwLCA5MCwgOTAsIDcxLCAxMjgsIDcyLCA5MCwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgOTAsIDgwLCAxMjgsIAotICAgIDcyLCA5MCwgOTAsIDEyOCwgNzIsIDkwLCA4NywgNzEsIDEyOCwgNzIsIDkwLCA4NywgMTI4LCA3MiwgOTAsIDg0LCAxMjgsIAotICAgIDcyLCA5MCwgNzEsIDEyOCwgNzIsIDg5LCA4MywgODQsIDY5LCA4MiwgNjksIDgzLCA3MywgMjExLCA3MiwgODksIDgwLCA3OSwgCi0gICAgNjgsIDczLCA2NSwgODMsIDg0LCA3OSwgNzYsIDY5LCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDY1LCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDQ1LCA3NywgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzIsIDg5LCA4MCwgCi0gICAgNzIsIDY5LCA3OCwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDIwNiwgNzIsIDg4LCA4NywgNzEsIDEyOCwgNzIsIDg4LCAKLSAgICA4NSwgNzksIDg4LCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODAsIDEyOCwgNzIsIAotICAgIDg4LCA4NSwgNzksIDEyOCwgNzIsIDg4LCA3OSwgODgsIDEyOCwgNzIsIDg4LCA3OSwgODQsIDEyOCwgNzIsIDg4LCA3OSwgCi0gICAgODAsIDEyOCwgNzIsIDg4LCA3OSwgMTI4LCA3MiwgODgsIDczLCA4OCwgMTI4LCA3MiwgODgsIDczLCA4NCwgMTI4LCA3MiwgCi0gICAgODgsIDczLCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg0LCAxMjgsIDcyLCAKLSAgICA4OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgMTI4LCA3MiwgODgsIDczLCAxMjgsIDcyLCA4OCwgNjksIAotICAgIDg4LCAxMjgsIDcyLCA4OCwgNjksIDgwLCAxMjgsIDcyLCA4OCwgNjksIDEyOCwgNzIsIDg4LCA2NSwgODgsIDEyOCwgNzIsIAotICAgIDg4LCA2NSwgODQsIDEyOCwgNzIsIDg4LCA2NSwgODAsIDEyOCwgNzIsIDg4LCA2NSwgMTI4LCA3MiwgODcsIDg1LCAxMjgsIAotICAgIDcyLCA4NywgNjUsIDczLCA4MiwgMTI4LCA3MiwgODYsIDEyOCwgNzIsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcyLCA4NSwgCi0gICAgODIsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCA2OCwgMTI4LCAKLSAgICA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCAxOTYsIDcyLCA4NSwgNzgsIDEyOCwgNzIsIDg1LCA3NywgNjUsIDc4LCAxMjgsIAotICAgIDcyLCA4NSwgNzcsIDY1LCAyMDYsIDcyLCA4NSwgNzYsIDUwLCAxMjgsIDcyLCA4NSwgNzMsIDczLCA4NCwgNzksIDEyOCwgCi0gICAgNzIsIDg1LCA2NiwgNTAsIDEyOCwgNzIsIDg1LCA2NiwgMTc4LCA3MiwgODUsIDY2LCAxMjgsIDcyLCA4NSwgNjUsIDgyLCAKLSAgICA2NSwgNjgsIDY4LCA3OSwgMTI4LCA3MiwgODQsIDgzLCAxMjgsIDcyLCA4NCwgNzQsIDEyOCwgNzIsIDgyLCA4OSwgODYsIAotICAgIDc4LCA3MywgMTkzLCA3MiwgODAsIDg3LCA3MSwgMTI4LCA3MiwgODAsIDY1LCAxMjgsIDcyLCA4MCwgMTI4LCA3MiwgNzksIAotICAgIDg1LCA4MywgMTk3LCA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCA2NSwgODMsIDgzLCAxMjgsIDcyLCA3OSwgODUsIDgyLCA3MSwgCi0gICAgNzYsIDY1LCA4MywgMjExLCA3MiwgNzksIDg1LCA4MiwgMTI4LCA3MiwgNzksIDg1LCAyMTAsIDcyLCA3OSwgODQsIDY5LCAKLSAgICA3NiwgMTI4LCA3MiwgNzksIDg0LCA2NSwgMTI4LCA3MiwgNzksIDgzLCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgODMsIDY5LCAxMjgsIDcyLCA3OSwgODIsIDgzLCAxOTcsIDcyLCA3OSwgODIsIDc4LCA4MywgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNzYsIDIxNywgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNTQsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIAotICAgIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCAKLSAgICA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgCi0gICAgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNTEsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIAotICAgIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCAKLSAgICA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgCi0gICAgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNDksIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNDksIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIAotICAgIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCAKLSAgICA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgCi0gICAgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgMTkzLCA3MiwgNzksIDc5LCA4MiwgODUsIDEyOCwgNzIsIDc5LCA3OSwgODAsIDEyOCwgNzIsIDc5LCA3OSwgNzgsIDEyOCwgCisgICAgNjksIDcwLCA4NSwgNzYsIDY1LCAxMjgsIDc1LCA2OSwgNjksIDg2LCAxMjgsIDc1LCA2OSwgNjksIDgzLCA4NSwgMTI4LCAKKyAgICA3NSwgNjksIDY5LCA4MCwgNzMsIDc4LCAxOTksIDc1LCA2OSwgNjksIDc4LCA3MSwgMTI4LCA3NSwgNjksIDY5LCA2NiwgCisgICAgMTI4LCA3NSwgNjksIDY2LCAxMjgsIDc1LCA2OSwgNjUsIDY1LCA2OSwgMTI4LCA3NSwgNjcsIDY1LCA3NiwgMTI4LCA3NSwgCisgICAgNjYsIDEyOCwgNzUsIDY1LCA5MCwgNjUsIDc1LCAyMDAsIDc1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc1LCAKKyAgICA2NSwgODksIDY1LCAyMDAsIDc1LCA2NSwgODgsIDEyOCwgNzUsIDY1LCA4NywgODYsIDEyOCwgNzUsIDY1LCA4NywgNzMsIAorICAgIDEyOCwgNzUsIDY1LCA4NywgNjYsIDEyOCwgNzUsIDY1LCA4NiwgODksIDc1LCA2NSwgMTI4LCA3NSwgNjUsIDg2LCAxMjgsIAorICAgIDc1LCA2NSwgODUsIDg2LCAxMjgsIDc1LCA2NSwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDg1LCAyMDYsIDc1LCA2NSwgCisgICAgODUsIDY2LCAxMjgsIDc1LCA2NSwgODQsIDc5LCAxMjgsIDc1LCA2NSwgODQsIDcyLCA3MywgODMsIDg0LCA3MywgMTI4LCAKKyAgICA3NSwgNjUsIDg0LCA3MiwgNjUsIDc1LCAxOTMsIDc1LCA2NSwgODQsIDY1LCA4NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIAorICAgIDY1LCA4NCwgNjUsIDg2LCAxOTMsIDc1LCA2NSwgODQsIDY1LCA3NSwgNjUsIDc4LCA2NSwgNDUsIDcyLCA3MywgODIsIDY1LCAKKyAgICA3MSwgNjUsIDc4LCAxOTMsIDc1LCA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgNjUsIAorICAgIDg0LCA2NSwgMjA2LCA3NSwgNjUsIDgzLCA4MiwgNjUsIDEyOCwgNzUsIDY1LCA4MywgODIsIDE5MywgNzUsIDY1LCA4MywgCisgICAgNzUsIDY1LCA3NiwgMTI4LCA3NSwgNjUsIDgzLCA3NSwgNjUsIDIwNCwgNzUsIDY1LCA4MywgNzIsIDc3LCA3MywgODIsIAorICAgIDIwMSwgNzUsIDY1LCA4MiwgODMsIDcyLCA2NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODIsIDc5LCA4MiwgNzMsIDczLCAKKyAgICAxMjgsIDc1LCA2NSwgODIsIDIwNywgNzUsIDY1LCA4MiwgNjksIDIwNiwgNzUsIDY1LCA4MiwgNjUsIDg0LCA4NCwgNzksIAorICAgIDEyOCwgNzUsIDY1LCA4MiwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODMsIDgzLCA2NSwgCisgICAgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MiwgNzMsIAorICAgIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCAKKyAgICA3MiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3NSwgNjUsIAorICAgIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDY1LCA4MCwgODAsIDE5MywgNzUsIDY1LCA4MCwgNzksIDEyOCwgNzUsIDY1LCA4MCwgCisgICAgNzIsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIDc2LCAxMjgsIDc1LCA2NSwgODAsIDY1LCAxMjgsIDc1LCA2NSwgMjA4LCA3NSwgCisgICAgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDc1LCA2NSwgNzgsIDcxLCAxMjgsIDc1LCA2NSwgNzgsIDE5OSwgNzUsIDY1LCAKKyAgICA3OCwgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIDc3LCA1MiwgMTI4LCA3NSwgNjUsIDc3LCA1MCwgMTI4LCA3NSwgNjUsIAorICAgIDc3LCAxMjgsIDc1LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzUsIDY1LCA2NiwgNjUsIDg0LCAxMjgsIDc1LCA2NSwgCisgICAgNzUsIDEyOCwgNzUsIDY1LCAyMDMsIDc1LCA2NSwgNzMsIDg2LCAxMjgsIDc1LCA2NSwgNzMsIDg0LCA3MiwgMjAxLCA3NSwgCisgICAgNjUsIDczLCA4MiwgNzMsIDEyOCwgNzUsIDY1LCA3MywgNjYsIDEyOCwgNzUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIDIwMSwgCisgICAgNzUsIDY1LCA3MCwgNjUsIDEyOCwgNzUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDE5OCwgNzUsIDY1LCA2OCwgNTMsIDEyOCwgCisgICAgNzUsIDY1LCA2OCwgMTgxLCA3NSwgNjUsIDY4LCA1MiwgMTI4LCA3NSwgNjUsIDY4LCA1MSwgMTI4LCA3NSwgNjUsIDY4LCAKKyAgICAxNzksIDc1LCA2NSwgNjgsIDUwLCAxMjgsIDc1LCA2NSwgNjgsIDEyOCwgNzUsIDY1LCA2NiwgMTkzLCA3NSwgNjUsIDY2LCAKKyAgICAxMjgsIDc1LCA2NSwgNjUsIDg2LCAxMjgsIDc1LCA2NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgNjUsIDcwLCA4NSwgMTI4LCAKKyAgICA3NSwgNjUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDY1LCA2NiwgNjUsIDEyOCwgNzUsIDY1LCA2NSwgNjYsIDEyOCwgNzUsIAorICAgIDY1LCA1MCwgMTI4LCA3NSwgNjUsIDE3OCwgNzUsIDQ4LCA0OCwgNTYsIDEyOCwgNzUsIDQ4LCA0OCwgNTUsIDEyOCwgNzUsIAorICAgIDQ4LCA0OCwgNTQsIDEyOCwgNzUsIDQ4LCA0OCwgNTMsIDEyOCwgNzUsIDQ4LCA0OCwgNTIsIDEyOCwgNzUsIDQ4LCA0OCwgCisgICAgNTEsIDEyOCwgNzUsIDQ4LCA0OCwgNTAsIDEyOCwgNzUsIDQ4LCA0OCwgNDksIDEyOCwgNzQsIDg3LCA2NSwgMTI4LCA3NCwgCisgICAgODUsIDg1LCAxMjgsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDg1LCA4MywgODQsIDczLCA3MCwgNzMsIDY3LCA2NSwgODQsIDczLCAKKyAgICA3OSwgNzgsIDEyOCwgNzQsIDg1LCA4MCwgNzMsIDg0LCA2OSwgODIsIDEyOCwgNzQsIDg1LCA3OSwgODQsIDEyOCwgNzQsIAorICAgIDg1LCA3OSwgODAsIDEyOCwgNzQsIDg1LCA3OCwgNzksIDEyOCwgNzQsIDg1LCA3OCwgNjksIDEyOCwgNzQsIDg1LCA3NiwgCisgICAgODksIDEyOCwgNzQsIDg1LCA2OSwgODUsIDczLCAxMjgsIDc0LCA4NSwgNjgsIDg1LCA3NiwgMTI4LCA3NCwgODUsIDY4LCAKKyAgICA3MSwgNjksIDEyOCwgNzQsIDg1LCA2OCwgNjksIDc5LCA0NSwgODMsIDgwLCA2NSwgNzgsIDczLCA4MywgMjAwLCA3NCwgNzksIAorICAgIDg5LCA4MywgODQsIDczLCA2NywgNzUsIDEyOCwgNzQsIDc5LCA4OSwgNzksIDg1LCAyMTEsIDc0LCA3OSwgODksIDEyOCwgCisgICAgNzQsIDc5LCA4NiwgNjksIDEyOCwgNzQsIDc5LCAyMTIsIDc0LCA3OSwgNzgsIDcxLCAxMjgsIDc0LCA3OSwgNzgsIDE5MywgCisgICAgNzQsIDc5LCA3NSwgNjksIDgyLCAxMjgsIDc0LCA3OSwgNzMsIDc4LCA4NCwgODMsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDY5LCAKKyAgICA2OCwgMTI4LCA3NCwgNzksIDczLCA3OCwgMTI4LCA3NCwgNzksIDY1LCAxMjgsIDc0LCA3NCwgODksIDg4LCAxMjgsIDc0LCAKKyAgICA3NCwgODksIDg0LCAxMjgsIDc0LCA3NCwgODksIDgwLCAxMjgsIDc0LCA3NCwgODksIDEyOCwgNzQsIDc0LCA4NSwgODgsIAorICAgIDEyOCwgNzQsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDg4LCAxMjgsIDc0LCA3NCwgODUsIDgyLCAxMjgsIAorICAgIDc0LCA3NCwgODUsIDgwLCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgODAsIDEyOCwgCisgICAgNzQsIDc0LCA4NSwgNzksIDEyOCwgNzQsIDc0LCA4NSwgMTI4LCA3NCwgNzQsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDc5LCAKKyAgICA4NCwgMTI4LCA3NCwgNzQsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIDc5LCAxMjgsIDc0LCA3NCwgNzMsIDg4LCAxMjgsIDc0LCAKKyAgICA3NCwgNzMsIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3NCwgNzQsIAorICAgIDczLCA2OSwgODQsIDEyOCwgNzQsIDc0LCA3MywgNjksIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCAxMjgsIDc0LCA3NCwgCisgICAgNzMsIDEyOCwgNzQsIDc0LCA2OSwgNjksIDEyOCwgNzQsIDc0LCA2OSwgMTI4LCA3NCwgNzQsIDY1LCAxMjgsIDc0LCA3MywgCisgICAgNzYsIDEyOCwgNzQsIDczLCA3MywgMTI4LCA3NCwgNzMsIDcyLCA4NiwgNjUsIDc3LCA4NSwgNzYsIDczLCA4OSwgNjUsIAorICAgIDEyOCwgNzQsIDczLCA2NSwgMTI4LCA3NCwgNzIsIDc5LCA4OCwgMTI4LCA3NCwgNzIsIDc5LCAxMjgsIDc0LCA3MiwgNjksIAorICAgIDcyLCAxMjgsIDc0LCA3MiwgNjUsIDg5LCA3MywgNzgsIDEyOCwgNzQsIDcyLCA2NSwgNzgsIDEyOCwgNzQsIDcyLCA2NSwgCisgICAgNzcsIDEyOCwgNzQsIDcyLCA2NSwgNjUsIDEyOCwgNzQsIDcyLCA2NSwgMTI4LCA3NCwgNjksIDg1LCAxMjgsIDc0LCA2OSwgCisgICAgODIsIDg1LCA4MywgNjUsIDc2LCA2OSwgNzcsIDEyOCwgNzQsIDY5LCA4MiwgNjUsIDIwNiwgNzQsIDY5LCA4MiwgNjUsIAorICAgIDEyOCwgNzQsIDY5LCA4MiwgMTI4LCA3NCwgNjksIDcyLCAxMjgsIDc0LCA2OSwgMjAwLCA3NCwgNjksIDcxLCA3OSwgNzEsIAorICAgIDY1LCA3OCwgMTI4LCA3NCwgNjksIDY5LCA3NywgMTI4LCA3NCwgNjksIDY1LCA3OCwgODMsIDEyOCwgNzQsIDY1LCA4OSwgCisgICAgNzgsIDEyOCwgNzQsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDc0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc0LCAKKyAgICA2NSwgODcsIDEyOCwgNzQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc0LCA2NSwgODUsIDEyOCwgNzQsIAorICAgIDY1LCA4MiwgMTI4LCA3NCwgNjUsIDgwLCA2NSwgNzgsIDY5LCA4MywgMTk3LCA3NCwgNjUsIDgwLCA2NSwgNzgsIDEyOCwgCisgICAgNzQsIDY1LCA3OCwgODUsIDY1LCA4MiwgODksIDEyOCwgNzQsIDY1LCA3NiwgNzYsIDY1LCA3NCwgNjUsIDc2LCA2NSwgNzYsIAorICAgIDc5LCA4NSwgNzIsIDc5LCA4NSwgMTI4LCA3NCwgNjUsIDczLCAyMDYsIDc0LCA2NSwgNzMsIDEyOCwgNzQsIDY1LCA3MiwgCisgICAgMTI4LCA3NCwgNjUsIDY4LCA2OSwgMTI4LCA3NCwgNjUsIDY3LCA3NSwgODMsIDEyOCwgNzQsIDY1LCA2NywgNzUsIDQ1LCAKKyAgICA3OSwgNDUsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc0LCA2NSwgNjcsIDIwMywgNzQsIDQ1LCA4MywgNzMsIAorICAgIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDY1LCAxMjgsIDczLCA5MCwgCisgICAgNzIsIDczLCA4NCwgODMsIDE5MywgNzMsIDkwLCA3MiwgNjksIDEyOCwgNzMsIDkwLCA2NSwgNzUsIDY1LCA4OSwgMTkzLCAKKyAgICA3MywgODksIDY5LCA3NSwgMTI4LCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4NSwgNzQsIDY1LCAxMjgsIAorICAgIDczLCA4NCwgMjExLCA3MywgODQsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDg0LCA2OSwgNzcsIDEyOCwgCisgICAgNzMsIDgzLCA4MywgNzIsIDY1LCA4MiwgMTI4LCA3MywgODMsIDc5LCA4MywgNjcsIDY5LCA3NiwgNjksIDIxMSwgNzMsIDgzLCAKKyAgICA3OSwgNzgsIDEyOCwgNzMsIDgzLCA3OSwgMjA2LCA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTI4LCA3MywgODMsIAorICAgIDc2LCA2NSwgNzgsIDY4LCAxMjgsIDczLCA4MywgNjksIDc4LCA0NSwgNzMsIDgzLCA2OSwgNzgsIDEyOCwgNzMsIDgzLCA2NSwgCisgICAgNzUsIDczLCAxOTMsIDczLCA4MywgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MywgODIsIDg1LCA4OSwgNjUsIDc4LCAKKyAgICA3OCwgNjUsIDEyOCwgNzMsIDgyLCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODIsIDc5LCA3OCwgNDUsIAorICAgIDY3LCA3OSwgODAsIDgwLCA2OSwgMjEwLCA3MywgODIsIDc5LCA3OCwgMTI4LCA3MywgODIsIDY2LCAxMjgsIDczLCA3OSwgCisgICAgODQsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDczLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNzMsIDc5LCA4NCwgNjUsIAorICAgIDEyOCwgNzMsIDc5LCA4NCwgMTkzLCA3MywgNzksIDgyLCAxMjgsIDczLCA3OSwgNjgsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIAorICAgIDczLCA3OCwgODYsIDczLCA4MywgNzMsIDY2LCA3NiwgMTk3LCA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCA2OSwgNjgsIDEyOCwgCisgICAgNzMsIDc4LCA4NiwgNjksIDgyLCA4NCwgNjksIDE5NiwgNzMsIDc4LCA4NiwgNjksIDgyLCA4MywgMTk3LCA3MywgNzgsIDg0LCAKKyAgICA4MiwgNzksIDY4LCA4NSwgNjcsIDY5LCA4MiwgMTI4LCA3MywgNzgsIDg0LCA3MywgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIAorICAgIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCAxOTUsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCAKKyAgICA3OSwgNzgsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIAorICAgIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCA3OCwgMTk5LCA3MywgNzgsIDg0LCA2OSwgODIsIDgyLCA3OSwgNjYsIDY1LCAKKyAgICA3OCwgNzEsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MiwgNzksIDY2LCA2NSwgNzgsIDE5OSwgNzMsIDc4LCA4NCwgNjksIAorICAgIDgyLCA4MCwgNzksIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgODIsIDc2LCA3OSwgNjcsIDc1LCAKKyAgICA2OSwgMTk2LCA3MywgNzgsIDg0LCA2OSwgODIsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA3MywgNzgsIDg0LCA2OSwgODIsIAorICAgIDc2LCA2NSwgNjcsIDY5LCAxOTYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzMsIDc5LCAyMTAsIDczLCA3OCwgODQsIDY5LCA4MiwgCisgICAgNjksIDgzLCAyMTIsIDczLCA3OCwgODQsIDY5LCA4MiwgNjcsIDY1LCA3NiwgNjUsIDg0LCA2OSwgMTI4LCA3MywgNzgsIDg0LCAKKyAgICA2OSwgNzEsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIDc2LCAxMjgsIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCAKKyAgICAyMDQsIDczLCA3OCwgODMsIDg1LCA3NiwgNjUsIDIxMCwgNzMsIDc4LCA4MywgODQsIDgyLCA4NSwgNzcsIDY5LCA3OCwgODQsIAorICAgIDY1LCAyMDQsIDczLCA3OCwgODMsIDczLCA2OCwgNjksIDEyOCwgNzMsIDc4LCA4MywgNzMsIDY4LCAxOTcsIDczLCA3OCwgCisgICAgODMsIDY5LCA4MiwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDgzLCA2OSwgNjcsIDg0LCAxMjgsIDczLCA3OCwgODMsIDY3LCAKKyAgICA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzMsIDc4LCA4MCwgODUsIDIxMiwgNzMsIDc4LCA3OCwgNzksIAorICAgIDY3LCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA3MywgNzgsIDc4LCA3OCwgMTI4LCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgCisgICAgNzMsIDc4LCA3OCwgNjksIDIxMCwgNzMsIDc4LCA3OCwgMTI4LCA3MywgNzgsIDczLCA3OCwgNzEsIDg1LCAxMjgsIDczLCAKKyAgICA3OCwgNzMsIDEyOCwgNzMsIDc4LCA3MiwgNzMsIDY2LCA3MywgMjEyLCA3MywgNzgsIDcyLCA2OSwgODIsIDY5LCA3OCwgCisgICAgMjEyLCA3MywgNzgsIDcyLCA2NSwgNzYsIDY5LCAxMjgsIDczLCA3OCwgNzEsIDg3LCA2NSwgOTAsIDEyOCwgNzMsIDc4LCAKKyAgICA3MCwgNzksIDgyLCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA3MCwgNzYsIDg1LCA2OSwgNzgsIDY3LCA2OSwgCisgICAgMTI4LCA3MywgNzgsIDcwLCA3MywgNzgsIDczLCA4NCwgODksIDEyOCwgNzMsIDc4LCA3MCwgNzMsIDc4LCA3MywgODQsIAorICAgIDIxNywgNzMsIDc4LCA2OCwgODUsIDgzLCA4NCwgODIsIDczLCA2NSwgMjA0LCA3MywgNzgsIDY4LCA3MywgODIsIDY5LCA2NywgCisgICAgMjEyLCA3MywgNzgsIDY4LCA3MywgNjcsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDczLCA3OCwgNjgsIDczLCA2NywgNjUsIDg0LCAKKyAgICA3OSwgMjEwLCA3MywgNzgsIDY4LCA3MywgMTk1LCA3MywgNzgsIDY4LCA3MywgNjUsIDIwNiwgNzMsIDc4LCA2OCwgNjksIAorICAgIDg4LCAxMjgsIDczLCA3OCwgNjgsIDY5LCA4MCwgNjksIDc4LCA2OCwgNjksIDc4LCAyMTIsIDczLCA3OCwgNjcsIDgyLCA2OSwgCisgICAgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzMsIDc4LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAyMTEsIDczLCA3OCwgNjcsIDgyLCAKKyAgICA2OSwgNjUsIDgzLCA2OSwgMTI4LCA3MywgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgMTk3LCA3MywgNzgsIDY3LCA3OSwgNzcsIAorICAgIDgwLCA3NiwgNjksIDg0LCAxOTcsIDczLCA3OCwgNjcsIDc5LCA3NywgNzMsIDc4LCAxOTksIDczLCA3OCwgNjcsIDc2LCA4NSwgCisgICAgNjgsIDczLCA3OCwgMTk5LCA3MywgNzgsIDY3LCA3MiwgMTI4LCA3MywgNzgsIDY2LCA3OSwgMjE2LCA3MywgNzgsIDY1LCAKKyAgICA4MCwgMTI4LCA3MywgNzgsIDQ1LCA2NSwgNzYsIDY1LCA3MCwgMTI4LCA3MywgNzcsIDgwLCA2OSwgODIsIDczLCA2NSwgCisgICAgMjA0LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA4NSwgMjA1LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCAKKyAgICA2OSwgNjcsIDg0LCA2NSwgMTI4LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDczLCA3NywgNzgsIAorICAgIDEyOCwgNzMsIDc3LCA3MywgODMsIDY5LCA3OSwgMjExLCA3MywgNzcsIDczLCA3OCwgNTEsIDEyOCwgNzMsIDc3LCA3MywgCisgICAgNzgsIDEyOCwgNzMsIDc3LCA3MywgMjA2LCA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIDc5LCA3OCwgMTI4LCAKKyAgICA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIDY1LCAxMjgsIDczLCA3NywgNzMsIDcwLCA3OSwgNzgsIDc5LCA3OCwgCisgICAgMTI4LCA3MywgNzcsIDczLCA2OCwgNzMsIDY1LCA4MiwgNzEsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDY1LCA3MSwgMTk3LCAKKyAgICA3MywgNzYsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDc2LCA4NSwgODksIDEyOCwgNzMsIDc2LCA4NSwgODUsIAorICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzYsIDg1LCA4NCwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgCisgICAgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCA1MSwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDczLCAKKyAgICA3NiwgNzMsIDc3LCA3NywgMjEzLCA3MywgNzYsIDUwLCAxMjgsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3MywgNzUsIAorICAgIDY1LCA4MiwgMTkzLCA3MywgNzQsIDEyOCwgNzMsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDcxLCA3MywgCisgICAgMTI4LCA3MywgNzEsIDIwMSwgNzMsIDcxLCA3MSwgODcsIDgzLCAxMjgsIDczLCA3MCwgNzMsIDc4LCAxMjgsIDczLCA2OSwgCisgICAgODUsIDc4LCA3MSwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIAorICAgIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCAKKyAgICA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCAKKyAgICA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzUsIDczLCA4OSwgCisgICAgNjksIDc5LCA3NSwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCAKKyAgICA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgCisgICAgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDE5OSwgNzMsIDY4LCA3NiwgNjksIAorICAgIDEyOCwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzMsIDY4LCA3MywgMjA1LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU3LCA0OCwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjgsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTYsIDY3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU2LCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjgsIDUyLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDY1LCA1NSwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTQsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTUsIDUzLCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU1LCA1MywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDksIDUwLCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDQ4LCA2NiwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA3MCwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNjksIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTQsIDU1LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU0LCA1NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU0LCA1MCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTQsIDUzLCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU0LCA1MSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTEsIDQ4LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1NywgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDcwLCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA2OCwgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDU2LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY2LCA1MywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA1MywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDUxLCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUyLCA0OCwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTEsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDUwLCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA1MCwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDUyLCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA0OSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA0OSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTIsIDY5LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUyLCA2OSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDY1LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAorICAgIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDY1LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAorICAgIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDY1LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAorICAgIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUzLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDQ5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDcwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUzLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDQ5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDcwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUzLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDcwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUzLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgCisgICAgNzMsIDcwLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIDczLCA2NywgNjUsIAorICAgIDIwNCwgNzMsIDY3LCA3OSwgNzgsIDEyOCwgNzMsIDY3LCA3MiwgNzksIDg1LCAxMjgsIDczLCA2NywgNzIsIDc5LCA4MywgCisgICAgMTI4LCA3MywgNjcsIDcyLCA3MywgNzcsIDY1LCA4NCwgNzksIDgzLCAxMjgsIDczLCA2NywgNzIsIDY1LCA2OCwgNzMsIDc4LCAKKyAgICAxMjgsIDczLCA2NywgNjksIDc2LCA2NSwgNzgsIDY4LCA3MywgNjcsIDQ1LCA4OSwgODIsIDEyOCwgNzMsIDY2LCA3MywgNzAsIAorICAgIDczLCA3NiwgNzMsIDEyOCwgNzMsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIDczLCA0OCwgNDksIDUzLCAxMjgsIDczLCA0OCwgCisgICAgNDksIDUyLCAxMjgsIDczLCA0OCwgNDksIDUxLCAxMjgsIDczLCA0OCwgNDksIDUwLCAxMjgsIDczLCA0OCwgNDksIDQ5LCAKKyAgICA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgMTI4LCA3MywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDgsIAorICAgIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDczLCA0OCwgNDgsIDU3LCAxMjgsIDczLCA0OCwgNDgsIDU2LCAxMjgsIAorICAgIDczLCA0OCwgNDgsIDU1LCAxMjgsIDczLCA0OCwgNDgsIDU0LCAxMjgsIDczLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3MywgCisgICAgNDgsIDQ4LCA1MywgMTI4LCA3MywgNDgsIDQ4LCA1MiwgMTI4LCA3MywgNDgsIDQ4LCA1MSwgMTI4LCA3MywgNDgsIDQ4LCAKKyAgICA1MCwgMTI4LCA3MywgNDgsIDQ4LCA0OSwgMTI4LCA3MywgNDUsIDg5LCA4NSwgMTI4LCA3MywgNDUsIDg5LCA3OSwgMTI4LCAKKyAgICA3MywgNDUsIDg5LCA2OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIAorICAgIDczLCA0NSwgODksIDY1LCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDEyOCwgNzMsIDQ1LCA3OSwgNDUsIDczLCAKKyAgICAxMjgsIDczLCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA2OSwgODUsIDEyOCwgNzMsIDQ1LCA2NiwgNjksIDY1LCA3NywgMTI4LCAKKyAgICA3MywgNDUsIDY1LCA4MiwgNjUsIDY5LCA2NSwgMTI4LCA3MywgNDUsIDY1LCAxMjgsIDcyLCA5MCwgOTAsIDkwLCA3MSwgCisgICAgMTI4LCA3MiwgOTAsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDkwLCA4MCwgMTI4LCA3MiwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgCisgICAgODcsIDcxLCAxMjgsIDcyLCA5MCwgODcsIDEyOCwgNzIsIDkwLCA4NCwgMTI4LCA3MiwgOTAsIDcxLCAxMjgsIDcyLCA4OSwgCisgICAgODMsIDg0LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNzIsIDg5LCA4MCwgNzksIDY4LCA3MywgNjUsIDgzLCA4NCwgNzksIAorICAgIDc2LCA2OSwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MiwgODksIDgwLCA3MiwgCisgICAgNjksIDc4LCA0NSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDEyOCwgNzIsIDg5LCAKKyAgICA4MCwgNzIsIDY5LCAyMDYsIDcyLCA4OSwgNzEsIDczLCA2OSwgNzMsIDY1LCAxMjgsIDcyLCA4OCwgODcsIDcxLCAxMjgsIAorICAgIDcyLCA4OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDgwLCAKKyAgICAxMjgsIDcyLCA4OCwgODUsIDc5LCAxMjgsIDcyLCA4OCwgNzksIDg4LCAxMjgsIDcyLCA4OCwgNzksIDg0LCAxMjgsIDcyLCAKKyAgICA4OCwgNzksIDgwLCAxMjgsIDcyLCA4OCwgNzksIDEyOCwgNzIsIDg4LCA3MywgODgsIDEyOCwgNzIsIDg4LCA3MywgODQsIAorICAgIDEyOCwgNzIsIDg4LCA3MywgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4NCwgCisgICAgMTI4LCA3MiwgODgsIDczLCA2OSwgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDEyOCwgNzIsIDg4LCA3MywgMTI4LCA3MiwgCisgICAgODgsIDY5LCA4OCwgMTI4LCA3MiwgODgsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDY5LCAxMjgsIDcyLCA4OCwgNjUsIDg4LCAKKyAgICAxMjgsIDcyLCA4OCwgNjUsIDg0LCAxMjgsIDcyLCA4OCwgNjUsIDgwLCAxMjgsIDcyLCA4OCwgNjUsIDEyOCwgNzIsIDg3LCAKKyAgICA4NSwgMTI4LCA3MiwgODcsIDY1LCA3MywgODIsIDEyOCwgNzIsIDg3LCA2NSwgNzIsIDEyOCwgNzIsIDg2LCAxMjgsIDcyLCAKKyAgICA4NSwgODYsIDY1LCAxMjgsIDcyLCA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MiwgODUsIDgzLCA3MiwgMTI4LCA3MiwgODUsIAorICAgIDgyLCA2NSwgNzgsIDEyOCwgNzIsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgNjgsIDgzLCAKKyAgICAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDY4LCAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDE5NiwgNzIsIAorICAgIDg1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCAyMDgsIDcyLCA4NSwgNzcsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCA2NSwgCisgICAgMjA2LCA3MiwgODUsIDc2LCA1MCwgMTI4LCA3MiwgODUsIDczLCA3MywgODQsIDc5LCAxMjgsIDcyLCA4NSwgNzEsIDcxLCAKKyAgICA3MywgNzgsIDE5OSwgNzIsIDg1LCA2NiwgNTAsIDEyOCwgNzIsIDg1LCA2NiwgMTc4LCA3MiwgODUsIDY2LCAxMjgsIDcyLCAKKyAgICA4NSwgNjUsIDgyLCA2NSwgNjgsIDY4LCA3OSwgMTI4LCA3MiwgODUsIDY1LCA3OCwgMTI4LCA3MiwgODQsIDgzLCAxMjgsIAorICAgIDcyLCA4NCwgNzQsIDEyOCwgNzIsIDgyLCA4OSwgODYsIDc4LCA3MywgMTkzLCA3MiwgODAsIDg3LCA3MSwgMTI4LCA3MiwgCisgICAgODAsIDY1LCAxMjgsIDcyLCA4MCwgMTI4LCA3MiwgNzksIDg1LCA4MywgMTk3LCA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCAKKyAgICA2NSwgODMsIDgzLCAxMjgsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIDY1LCA4MywgMjExLCA3MiwgNzksIDg1LCA4MiwgCisgICAgMTI4LCA3MiwgNzksIDg1LCAyMTAsIDcyLCA3OSwgODQsIDY5LCA3NiwgMTI4LCA3MiwgNzksIDg0LCA2NSwgMTI4LCA3MiwgCisgICAgNzksIDgzLCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgODMsIDY5LCAxMjgsIDcyLCA3OSwgODIsIDgzLCAKKyAgICAxOTcsIDcyLCA3OSwgODIsIDgyLCAxMjgsIDcyLCA3OSwgODIsIDc4LCA4MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNzYsIDIxNywgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIAorICAgIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCAKKyAgICA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgCisgICAgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKKyAgICA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTIsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIAorICAgIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCAKKyAgICA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgCisgICAgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKKyAgICA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNDksIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIAorICAgIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCAKKyAgICA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgCisgICAgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgMjA0LCA3MiwgNzksIDgyLCAKKyAgICA3MywgMTI4LCA3MiwgNzksIDgyLCAxOTMsIDcyLCA3OSwgNzksIDg1LCAxMjgsIDcyLCA3OSwgNzksIDgyLCA4NSwgMTI4LCAKKyAgICA3MiwgNzksIDc5LCA4MCwgMTI4LCA3MiwgNzksIDc5LCA3OCwgMTI4LCA3MiwgNzksIDc5LCA3NSwgNjksIDY4LCAxMjgsIAogICAgIDcyLCA3OSwgNzksIDc1LCA2OSwgMTk2LCA3MiwgNzksIDc4LCA2OSwgODksIDY2LCA2OSwgNjksIDEyOCwgNzIsIDc5LCA3OCwgCiAgICAgNjksIDIxNywgNzIsIDc5LCA3NywgNzksIDg0LCA3MiwgNjksIDg0LCA3MywgNjcsIDEyOCwgNzIsIDc5LCA3NywgNzksIDg0LCAKLSAgICA3MiwgNjksIDg0LCA3MywgMTk1LCA3MiwgNzksIDc2LCA2OSwgMTI4LCA3MiwgNzksIDc2LCA2OCwgNzMsIDc4LCAxOTksIAotICAgIDcyLCA3OSwgNzYsIDY1LCA3NywgMTI4LCA3MiwgNzksIDc2LCA2NSwgMjA1LCA3MiwgNzksIDc1LCA2NSwgMTI4LCA3MiwgCi0gICAgNzksIDczLCAxMjgsIDcyLCA3OSwgNjcsIDcyLCA3OSwgMTI4LCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA3MiwgNzgsIDg1LCAKLSAgICA3OSwgODgsIDEyOCwgNzIsIDc4LCA4NSwgNzksIDEyOCwgNzIsIDc4LCA3OSwgODgsIDEyOCwgNzIsIDc4LCA3OSwgODQsIAotICAgIDEyOCwgNzIsIDc4LCA3OSwgODAsIDEyOCwgNzIsIDc4LCA3MywgODgsIDEyOCwgNzIsIDc4LCA3MywgODQsIDEyOCwgNzIsIAotICAgIDc4LCA3MywgODAsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4NCwgMTI4LCA3MiwgCi0gICAgNzgsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc4LCA3MywgNjksIDEyOCwgNzIsIDc4LCA3MywgMTI4LCA3MiwgNzgsIDY5LCAKLSAgICA4OCwgMTI4LCA3MiwgNzgsIDY5LCA4MCwgMTI4LCA3MiwgNzgsIDY5LCAxMjgsIDcyLCA3OCwgNjUsIDg4LCAxMjgsIDcyLCAKLSAgICA3OCwgNjUsIDg0LCAxMjgsIDcyLCA3OCwgNjUsIDgwLCAxMjgsIDcyLCA3OCwgNjUsIDEyOCwgNzIsIDc3LCA4OSwgODgsIAotICAgIDEyOCwgNzIsIDc3LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NywgODksIDgyLCAxMjgsIDcyLCA3NywgODksIDgwLCAxMjgsIAotICAgIDcyLCA3NywgODksIDEyOCwgNzIsIDc3LCA4NSwgODgsIDEyOCwgNzIsIDc3LCA4NSwgODQsIDEyOCwgNzIsIDc3LCA4NSwgCi0gICAgODIsIDg4LCAxMjgsIDcyLCA3NywgODUsIDgyLCAxMjgsIDcyLCA3NywgODUsIDgwLCAxMjgsIDcyLCA3NywgODUsIDc5LCAKLSAgICA4OCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDEyOCwgNzIsIDc3LCA4NSwgMTI4LCAKLSAgICA3MiwgNzcsIDc5LCA4OCwgMTI4LCA3MiwgNzcsIDc5LCA4NCwgMTI4LCA3MiwgNzcsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIAotICAgIDc5LCAxMjgsIDcyLCA3NywgNzMsIDg4LCAxMjgsIDcyLCA3NywgNzMsIDg0LCAxMjgsIDcyLCA3NywgNzMsIDgwLCAxMjgsIAotICAgIDcyLCA3NywgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc3LCA3MywgNjksIDEyOCwgCi0gICAgNzIsIDc3LCA3MywgMTI4LCA3MiwgNzcsIDY5LCAxMjgsIDcyLCA3NywgNjUsIDg4LCAxMjgsIDcyLCA3NywgNjUsIDg0LCAKLSAgICAxMjgsIDcyLCA3NywgNjUsIDgwLCAxMjgsIDcyLCA3NywgNjUsIDEyOCwgNzIsIDc2LCA4OSwgODgsIDEyOCwgNzIsIDc2LCAKLSAgICA4OSwgODQsIDEyOCwgNzIsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgODksIDgyLCAxMjgsIDcyLCA3NiwgODksIAotICAgIDgwLCAxMjgsIDcyLCA3NiwgODksIDEyOCwgNzIsIDc2LCA4NSwgODgsIDEyOCwgNzIsIDc2LCA4NSwgODQsIDEyOCwgNzIsIAotICAgIDc2LCA4NSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgODUsIDgyLCAxMjgsIDcyLCA3NiwgODUsIDgwLCAxMjgsIDcyLCA3NiwgCi0gICAgODUsIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDEyOCwgNzIsIDc2LCAKLSAgICA4NSwgMTI4LCA3MiwgNzYsIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDc5LCA4MCwgMTI4LCA3MiwgNzYsIDc5LCAxMjgsIDcyLCAKLSAgICA3NiwgNzMsIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDg0LCAxMjgsIDcyLCA3NiwgNzMsIDgwLCAxMjgsIDcyLCA3NiwgNzMsIAotICAgIDY5LCA4OCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIDEyOCwgNzIsIDc2LCA3MywgCi0gICAgMTI4LCA3MiwgNzYsIDY5LCA4OCwgMTI4LCA3MiwgNzYsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIDY5LCAxMjgsIDcyLCA3NiwgCi0gICAgNjUsIDg4LCAxMjgsIDcyLCA3NiwgNjUsIDg0LCAxMjgsIDcyLCA3NiwgNjUsIDgwLCAxMjgsIDcyLCA3NiwgNjUsIDEyOCwgCi0gICAgNzIsIDc1LCAxMjgsIDcyLCA3MywgOTAsIDY2LCAxMjgsIDcyLCA3MywgODMsIDg0LCA3OSwgODIsIDczLCAxOTUsIDcyLCAKLSAgICA3MywgODIsIDczLCA4MSwgMTI4LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDgzLCA4MCwgNjksIDY5LCAxOTYsIDcyLCA3MywgNzEsIAotICAgIDcyLCA0NSwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCA0NSwgMTg1LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDcyLCAKLSAgICA2OSwgNjksIDc2LCA2OSwgMTk2LCA3MiwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MywgNzMsIAotICAgIDc5LCA4MywgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzIsIDczLCA2OSwgCi0gICAgODUsIDcyLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc4LCA3MywgNjksIAotICAgIDg1LCA3OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzIsIDczLCA2OSwgCi0gICAgODUsIDIwMCwgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgNzIsIDczLCAxOTUsIDcyLCA3MywgNjksIAorICAgIDcyLCA2OSwgODQsIDczLCAxOTUsIDcyLCA3OSwgNzYsIDc5LCAxMjgsIDcyLCA3OSwgNzYsIDc2LCA3OSwgMjE1LCA3MiwgCisgICAgNzksIDc2LCA2OSwgMTI4LCA3MiwgNzksIDc2LCA2OCwgNzMsIDc4LCAxOTksIDcyLCA3OSwgNzYsIDY1LCA3NywgMTI4LCAKKyAgICA3MiwgNzksIDc2LCA2NSwgMjA1LCA3MiwgNzksIDc1LCA2NSwgMTI4LCA3MiwgNzksIDY3LCA3NSwgNjksIDIxNywgNzIsIAorICAgIDc5LCA2NywgNzIsIDc5LCAxMjgsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDcyLCA3OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgCisgICAgNzgsIDg1LCA3OSwgMTI4LCA3MiwgNzgsIDg1LCA2NiwgMTI4LCA3MiwgNzgsIDc5LCA4OCwgMTI4LCA3MiwgNzgsIDc5LCAKKyAgICA4NCwgMTI4LCA3MiwgNzgsIDc5LCA4MCwgMTI4LCA3MiwgNzgsIDczLCA4OCwgMTI4LCA3MiwgNzgsIDczLCA4NCwgMTI4LCAKKyAgICA3MiwgNzgsIDczLCA4MCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg0LCAxMjgsIAorICAgIDcyLCA3OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgMTI4LCA3MiwgNzgsIDczLCAxMjgsIDcyLCA3OCwgCisgICAgNjksIDg4LCAxMjgsIDcyLCA3OCwgNjksIDgwLCAxMjgsIDcyLCA3OCwgNjksIDEyOCwgNzIsIDc4LCA2NSwgODgsIDEyOCwgCisgICAgNzIsIDc4LCA2NSwgODUsIDEyOCwgNzIsIDc4LCA2NSwgODQsIDEyOCwgNzIsIDc4LCA2NSwgODAsIDEyOCwgNzIsIDc4LCAKKyAgICA2NSwgMTI4LCA3MiwgNzcsIDg5LCA4OCwgMTI4LCA3MiwgNzcsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4OSwgODIsIAorICAgIDEyOCwgNzIsIDc3LCA4OSwgODAsIDEyOCwgNzIsIDc3LCA4OSwgMTI4LCA3MiwgNzcsIDg1LCA4OCwgMTI4LCA3MiwgNzcsIAorICAgIDg1LCA4NCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4NSwgODIsIDEyOCwgNzIsIDc3LCA4NSwgCisgICAgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA3NywgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCAKKyAgICA3OSwgMTI4LCA3MiwgNzcsIDg1LCAxMjgsIDcyLCA3NywgNzksIDg4LCAxMjgsIDcyLCA3NywgNzksIDg0LCAxMjgsIDcyLCAKKyAgICA3NywgNzksIDgwLCAxMjgsIDcyLCA3NywgNzksIDEyOCwgNzIsIDc3LCA3MywgODgsIDEyOCwgNzIsIDc3LCA3MywgODQsIAorICAgIDEyOCwgNzIsIDc3LCA3MywgODAsIDEyOCwgNzIsIDc3LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3NywgNzMsIDY5LCA4MCwgCisgICAgMTI4LCA3MiwgNzcsIDczLCA2OSwgMTI4LCA3MiwgNzcsIDczLCAxMjgsIDcyLCA3NywgNjksIDEyOCwgNzIsIDc3LCA2NSwgCisgICAgODgsIDEyOCwgNzIsIDc3LCA2NSwgODQsIDEyOCwgNzIsIDc3LCA2NSwgODAsIDEyOCwgNzIsIDc3LCA2NSwgMTI4LCA3MiwgCisgICAgNzYsIDg5LCA4OCwgMTI4LCA3MiwgNzYsIDg5LCA4NCwgMTI4LCA3MiwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc2LCAKKyAgICA4OSwgODIsIDEyOCwgNzIsIDc2LCA4OSwgODAsIDEyOCwgNzIsIDc2LCA4OSwgMTI4LCA3MiwgNzYsIDg1LCA4OCwgMTI4LCAKKyAgICA3MiwgNzYsIDg1LCA4NCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgODgsIDEyOCwgNzIsIDc2LCA4NSwgODIsIDEyOCwgNzIsIAorICAgIDc2LCA4NSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3MiwgCisgICAgNzYsIDg1LCA3OSwgMTI4LCA3MiwgNzYsIDg1LCAxMjgsIDcyLCA3NiwgNzksIDg4LCAxMjgsIDcyLCA3NiwgNzksIDgwLCAKKyAgICAxMjgsIDcyLCA3NiwgNzksIDEyOCwgNzIsIDc2LCA3MywgODgsIDEyOCwgNzIsIDc2LCA3MywgODQsIDEyOCwgNzIsIDc2LCAKKyAgICA3MywgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIAorICAgIDczLCA2OSwgMTI4LCA3MiwgNzYsIDczLCAxMjgsIDcyLCA3NiwgNjksIDg4LCAxMjgsIDcyLCA3NiwgNjksIDgwLCAxMjgsIAorICAgIDcyLCA3NiwgNjksIDEyOCwgNzIsIDc2LCA2NSwgODgsIDEyOCwgNzIsIDc2LCA2NSwgODUsIDEyOCwgNzIsIDc2LCA2NSwgCisgICAgODQsIDEyOCwgNzIsIDc2LCA2NSwgODAsIDEyOCwgNzIsIDc2LCA2NSwgMTI4LCA3MiwgNzYsIDEyOCwgNzIsIDc1LCAxMjgsIAorICAgIDcyLCA3MywgOTAsIDY2LCAxMjgsIDcyLCA3MywgODksIDc5LCAxMjgsIDcyLCA3MywgODQsIDg0LCA3MywgNzgsIDE5OSwgCisgICAgNzIsIDczLCA4MywgODQsIDc5LCA4MiwgNzMsIDE5NSwgNzIsIDczLCA4MiwgNzMsIDgxLCAxMjgsIDcyLCA3MywgNzgsIDcxLCAKKyAgICA2OSwgNjgsIDEyOCwgNzIsIDczLCA3OCwgNzEsIDY5LCAxOTYsIDcyLCA3MywgNzgsIDcxLCA2OSwgMTI4LCA3MiwgNzMsIAorICAgIDcxLCA3MiwgNDUsIDgzLCA4MCwgNjksIDY5LCAxOTYsIDcyLCA3MywgNzEsIDcyLCA0NSwgODIsIDY5LCA4NiwgNjksIDgyLCAKKyAgICA4MywgNjksIDY4LCA0NSwgMTg1LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDc2LCA3OSwgMjE1LCA3MiwgNzMsIDcxLCA3MiwgNDUsIAorICAgIDcyLCA2OSwgNjksIDc2LCA2OSwgMTk2LCA3MiwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MywgCisgICAgNzMsIDc5LCA4MywgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzIsIDczLCAKKyAgICA2OSwgODUsIDcyLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc4LCA3MywgCisgICAgNjksIDg1LCA3OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzIsIDczLCAKKyAgICA2OSwgODUsIDIwMCwgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgNzIsIDczLCAxOTUsIDcyLCA3MywgNjksIAogICAgIDEyOCwgNzIsIDczLCA2OCwgNzMsIDc4LCAxOTksIDcyLCA3MywgNjgsIDY5LCA4NCwgMTI4LCA3MiwgNzMsIDY4LCA2OSwgCiAgICAgMTI4LCA3MiwgNzMsIDY2LCA3MywgODMsIDY3LCA4NSwgODMsIDEyOCwgNzIsIDcyLCA4NywgNjUsIDEyOCwgNzIsIDcyLCAKICAgICA4NSwgMTI4LCA3MiwgNzIsIDczLCAxMjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDcyLCA3MiwgNjksIDEyOCwgNzIsIDcyLCAKLSAgICA2NSwgNjUsIDEyOCwgNzIsIDcxLCAxMjgsIDcyLCA2OSwgODgsIDczLCA3MCwgNzksIDgyLCAyMDUsIDcyLCA2OSwgODgsIAotICAgIDY1LCA3MSwgODIsIDY1LCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDcyLCA2OSwgODIsIDg1LCA4NCwgCi0gICAgODUsIDEyOCwgNzIsIDY5LCA4MiwgODUsIDEyOCwgNzIsIDY5LCA4MiwgNzcsIDczLCA4NCwgNzMsIDY1LCAyMDYsIDcyLCAKLSAgICA2OSwgODIsIDc3LCA3MywgNzksIDc4LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgNzcsIDY5LCA4MywgMTI4LCA3MiwgNjksIAotICAgIDgyLCA2OSwgMTI4LCA3MiwgNjksIDgyLCA2NiwgMTI4LCA3MiwgNjksIDgyLCA2NSwgNjksIDg1LCAyMDUsIDcyLCA2OSwgCi0gICAgNzgsIDcxLCAxMjgsIDcyLCA2OSwgNzgsIDE5OSwgNzIsIDY5LCA3NywgODAsIDEyOCwgNzIsIDY5LCA3NiwgNzcsIDY5LCAKLSAgICA4NCwgMTI4LCA3MiwgNjksIDc2LCA3NywgNjksIDIxMiwgNzIsIDY5LCA3NiwgMjA1LCA3MiwgNjksIDc2LCA3MywgNjcsIAotICAgIDc5LCA4MCwgODQsIDY5LCA4MiwgMTI4LCA3MiwgNjksIDc1LCA4NSwgODQsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDcyLCA2OSwgCi0gICAgNzMsIDgzLCA2OSwgNzMsIDEyOCwgNzIsIDY5LCA2NSwgODYsIDg5LCAxMjgsIDcyLCA2OSwgNjUsIDg2LCA2OSwgNzgsIDc2LCAKLSAgICAyMTcsIDcyLCA2OSwgNjUsIDg2LCA2OSwgNzgsIDEyOCwgNzIsIDY5LCA2NSwgODYsIDY5LCAyMDYsIDcyLCA2OSwgNjUsIAotICAgIDgyLCA4NCwgODMsIDEyOCwgNzIsIDY5LCA2NSwgODIsIDg0LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDcyLCA2OSwgCi0gICAgNjUsIDgyLCA4NCwgMTI4LCA3MiwgNjksIDY1LCA4MiwgMjEyLCA3MiwgNjksIDY1LCA4MiwgNDUsIDc4LCA3OSwgNDUsIDY5LCAKLSAgICA4NiwgNzMsIDIwNCwgNzIsIDY5LCA2NSwgNjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDEyOCwgNzIsIDY5LCA2NSwgNjgsIAotICAgIDgzLCA4NCwgNzksIDc4LCAxOTcsIDcyLCA2OSwgNjUsIDY4LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzIsIDY5LCA2NSwgCi0gICAgNjgsIDczLCA3OCwgNzEsIDEyOCwgNzIsIDY2LCA2NSwgODMsIDY1LCA0NSwgNjksIDgzLCA2NSwgODMsIDE5MywgNzIsIDY2LCAKLSAgICA2NSwgODMsIDE5MywgNzIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzIsIDY1LCA4NiwgNjksIDEyOCwgNzIsIAotICAgIDY1LCA4NSwgODAsIDg0LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDcyLCA2NSwgODQsIDcyLCA3MywgMTI4LCA3MiwgCi0gICAgNjUsIDg0LCA2OSwgMTI4LCA3MiwgNjUsIDg0LCA2NywgNzIsIDczLCA3OCwgMTk5LCA3MiwgNjUsIDg0LCA2NSwgMTk4LCAKLSAgICA3MiwgNjUsIDgzLCA2OSwgMjEwLCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDgyLCA4MCwgNzksIAotICAgIDc5LCA3OCwgMTI4LCA3MiwgNjUsIDgyLCA4MCwgNzksIDc5LCAyMDYsIDcyLCA2NSwgODIsIDc3LCA3OSwgNzgsIDczLCA2NywgCi0gICAgMTI4LCA3MiwgNjUsIDgyLCA3NSwgNzYsIDY5LCA2NSwgMjA2LCA3MiwgNjUsIDgyLCA2OCwgNzgsIDY5LCA4MywgODMsIAotICAgIDEyOCwgNzIsIDY1LCA4MiwgMTk2LCA3MiwgNjUsIDgwLCA4MCwgMjE3LCA3MiwgNjUsIDc4LCA4NSwgNzgsIDc5LCAyMDcsIAotICAgIDcyLCA2NSwgNzgsIDcxLCA5MCwgNzIsIDc5LCAyMTMsIDcyLCA2NSwgNzgsIDY4LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgCi0gICAgMjExLCA3MiwgNjUsIDc4LCA2OCwgNzYsIDY5LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNzYsIDY5LCAxMjgsIDcyLCAKLSAgICA2NSwgNzgsIDY4LCA2NiwgNjUsIDcxLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAxMjgsIDcyLCA2NSwgNzgsIDQ1LCA2NSwgNzUsIAotICAgIDY1LCA4NCwgMTI4LCA3MiwgNjUsIDc3LCA5MCwgNjUsIDEyOCwgNzIsIDY1LCA3NywgODMsIDg0LCA2OSwgMjEwLCA3MiwgCi0gICAgNjUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDcyLCA2NSwgNzcsIDc3LCA2OSwgMjEwLCA3MiwgNjUsIDc3LCA2NiwgODUsIDgyLCAKLSAgICA3MSwgNjksIDgyLCAxMjgsIDcyLCA2NSwgNzYsIDgxLCA2NSwgMTI4LCA3MiwgNjUsIDc2LCA3OSwgMTI4LCA3MiwgNjUsIAotICAgIDc2LCA3MCwgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA3MiwgNjUsIDc2LCA3MCwgMTI4LCA3MiwgNjUsIDc2LCA2NiwgCi0gICAgNjksIDgyLCA2OCwgMTI4LCA3MiwgNjUsIDc2LCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDczLCA4NCwgODUsIAotICAgIDEyOCwgNzIsIDY1LCA3MywgODIsIDY3LCA4NSwgODQsIDEyOCwgNzIsIDY1LCA3MywgODIsIDEyOCwgNzIsIDY1LCA3MSwgCi0gICAgNzYsIDY1LCAyMTgsIDcyLCA2NSwgNzEsIDc2LCAxMjgsIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDcyLCAKLSAgICA2NSwgNzAsIDg1LCA3NSwgNzIsIDEyOCwgNzIsIDY1LCA2OSwgNzEsIDIwNCwgNzIsIDY1LCA2NSwgODIsIDg1LCAxMjgsIAotICAgIDcyLCA2NSwgNjUsIDc3LCAxMjgsIDcyLCA2NSwgMTkzLCA3MiwgNjUsIDQ1LCA3MiwgNjUsIDEyOCwgNzIsIDQ4LCA0OCwgCi0gICAgNTYsIDEyOCwgNzIsIDQ4LCA0OCwgNTUsIDEyOCwgNzIsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDcyLCA0OCwgNDgsIDU0LCAKLSAgICAxMjgsIDcyLCA0OCwgNDgsIDUzLCAxMjgsIDcyLCA0OCwgNDgsIDUyLCAxMjgsIDcyLCA0OCwgNDgsIDUxLCAxMjgsIDcyLCAKLSAgICA0OCwgNDgsIDUwLCAxMjgsIDcyLCA0OCwgNDgsIDQ5LCAxMjgsIDcyLCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3MSwgODksIAotICAgIDg1LCAxMjgsIDcxLCA4OSwgNzksIDc4LCAxMjgsIDcxLCA4OSwgNzksIDEyOCwgNzEsIDg5LCA3MywgMTI4LCA3MSwgODksIAotICAgIDcwLCAyMTMsIDcxLCA4OSwgNjksIDY5LCAxMjgsIDcxLCA4OSwgNjUsIDgzLCAxMjgsIDcxLCA4OSwgNjUsIDY1LCAxMjgsIAotICAgIDcxLCA4OSwgNjUsIDEyOCwgNzEsIDg5LCAxMjgsIDcxLCA4NywgODUsIDEyOCwgNzEsIDg3LCA3MywgMTI4LCA3MSwgODcsIAotICAgIDY5LCA2OSwgMTI4LCA3MSwgODcsIDY5LCAxMjgsIDcxLCA4NywgNjUsIDY1LCAxMjgsIDcxLCA4NywgNjUsIDEyOCwgNzEsIAotICAgIDg2LCAxMjgsIDcxLCA4NSwgODIsIDg1LCA4MywgNzIsIDEyOCwgNzEsIDg1LCA4MiwgODUsIDc4LCAxMjgsIDcxLCA4NSwgCi0gICAgODIsIDY1LCA3NywgODUsIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNTUsIDEyOCwgNzEsIDg1LCA3OCwgODUsIAotICAgIDEyOCwgNzEsIDg1LCA3OCwgMjEzLCA3MSwgODUsIDIwNSwgNzEsIDg1LCA3NiwgMTI4LCA3MSwgODUsIDczLCA4NCwgNjUsIAotICAgIDgyLCAxMjgsIDcxLCA4NSwgMTk5LCA3MSwgODUsIDY5LCA3MiwgMTI4LCA3MSwgODUsIDY5LCAyMDAsIDcxLCA4NSwgNjgsIAotICAgIDEyOCwgNzEsIDg1LCAxOTYsIDcxLCA4NSwgNjUsIDgyLCA2OCwgODMsIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDg1LCA2NSwgCi0gICAgODIsIDY4LCA2OSwgNjgsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2OCwgNjksIDE5NiwgNzEsIDg1LCAKLSAgICA2NSwgODIsIDY4LCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2NSwgNzgsIDIwMSwgNzEsIDg1LCAxOTMsIDcxLCA4NSwgMTc4LCAKLSAgICA3MSwgODQsIDY5LCAyMTAsIDcxLCA4MywgODUsIDc3LCAxMjgsIDcxLCA4MywgODUsIDIwNSwgNzEsIDgyLCAyMTMsIDcxLCAKLSAgICA4MiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNzEsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA3MSwgODIsIDc5LCA3OCwgODQsIAotICAgIDcyLCA3MywgODMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDcxLCA4MiwgNzMsIDc4LCA3OCwgNzMsIDc4LCAxOTksIDcxLCA4MiwgCi0gICAgNzMsIDc3LCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3MSwgODIsIDY5LCA3MSwgNzksIDgyLCA3MywgNjUsIDIwNiwgNzEsIDgyLCAKLSAgICA2OSwgNjksIDIwNiwgNzEsIDgyLCA2OSwgNjUsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIAotICAgIDY5LCA4MiwgNDUsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDgyLCA0NSwgODQsIDcyLCAKLSAgICA2NSwgMjA2LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCAyMTAsIDcxLCA4MiwgNjksIDY1LCAyMTIsIDcxLCA4MiwgNjUsIAotICAgIDg2LCA2OSwgODksIDY1LCA4MiwgMTk2LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAKLSAgICAxMjgsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgCi0gICAgMTI4LCA3MSwgODIsIDY1LCA4NiwgMTk3LCA3MSwgODIsIDY1LCA4NCwgNjksIDgyLCAxMjgsIDcxLCA4MiwgNjUsIDgzLCAKLSAgICA4MywgMTI4LCA3MSwgODIsIDY1LCA4MywgMjExLCA3MSwgODIsIDY1LCA4MCwgNzIsIDY5LCA3NywgMTk3LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNjksIDgzLCAxMjgsIDcxLCA4MiwgNjUsIDc3LCA3NywgMTkzLCA3MSwgODIsIDY1LCA3MywgNzgsIDEyOCwgCi0gICAgNzEsIDgyLCA2NSwgNjgsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MSwgODIsIDY1LCA2NywgNjksIDEyOCwgNzEsIDgyLCAKLSAgICA2NSwgNjcsIDE5NywgNzEsIDgwLCA2NSwgMTI4LCA3MSwgNzksIDgyLCA4NCwgNzIsIDc3LCA3MywgNzUsIDc5LCAyMDYsIAotICAgIDcxLCA3OSwgODIsIDg0LCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgODQsIDY5LCA4MiwgNzMsIDEyOCwgNzEsIDc5LCA4MiwgCi0gICAgNzEsIDc5LCA4MywgODksIDc4LCA4NCwgNzIsIDY5LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgMjA2LCAKLSAgICA3MSwgNzksIDgyLCA3MSwgNzMsIDEyOCwgNzEsIDc5LCA4MiwgNjUsIDEyOCwgNzEsIDc5LCA3OSwgMTk2LCA3MSwgNzksIAotICAgIDc4LCA3MSwgMTI4LCA3MSwgNzksIDc2LCA2OCwgMTI4LCA3MSwgNzksIDc1LCAxMjgsIDcxLCA3OSwgNzMsIDc4LCAxOTksIAotICAgIDcxLCA3OSwgNjYsIDc2LCA3MywgNzgsIDEyOCwgNzEsIDc5LCA2NSwgNzYsIDEyOCwgNzEsIDc5LCA2NSwgMjA0LCA3MSwgCi0gICAgNzksIDY1LCAxMjgsIDcxLCA3OCwgODksIDczLCA4MywgMTI4LCA3MSwgNzgsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAKLSAgICAxMjgsIDcxLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNzEsIDc2LCA3OSwgODQsIDg0LCA2NSwgMjA0LCA3MSwgNzYsIAotICAgIDc5LCA2NiwgMTk3LCA3MSwgNzYsIDczLCA4MywgODMsIDY1LCA3OCwgNjgsIDIwNywgNzEsIDc2LCA2OSwgNzMsIDY3LCAKLSAgICAyMDAsIDcxLCA3NiwgNjUsIDcxLCA3OSwgNzYsIDczLCAxMjgsIDcxLCA3NiwgNjUsIDEyOCwgNzEsIDc0LCA2OSwgMTI4LCAKLSAgICA3MSwgNzMsIDg4LCAxMjgsIDcxLCA3MywgODQsIDEyOCwgNzEsIDczLCA4MywgNzIsIDEyOCwgNzEsIDczLCA4MywgMjAwLCAKLSAgICA3MSwgNzMsIDgzLCA2NSwgNzYsIDEyOCwgNzEsIDczLCA4MiwgODUsIDY4LCA2NSwgNjUsIDEyOCwgNzEsIDczLCA4MiwgNzYsIAotICAgIDEyOCwgNzEsIDczLCA4MiwgNTEsIDEyOCwgNzEsIDczLCA4MiwgMTc5LCA3MSwgNzMsIDgyLCA1MCwgMTI4LCA3MSwgNzMsIAotICAgIDgyLCAxNzgsIDcxLCA3MywgODAsIDEyOCwgNzEsIDczLCA3OCwgNzMsIDczLCAxMjgsIDcxLCA3MywgNzcsIDY5LCA3NiwgCi0gICAgMTI4LCA3MSwgNzMsIDc3LCA2OSwgMjA0LCA3MSwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNzEsIDY1LCAxMjgsIDcxLCA3MywgCi0gICAgNjksIDg0LCAxMjgsIDcxLCA3MywgNjgsIDczLCA3NywgMTI4LCA3MSwgNzMsIDY2LCA2NiwgNzksIDg1LCAyMTEsIDcxLCAKLSAgICA3MywgNjYsIDY1LCAxMjgsIDcxLCA3MywgNTIsIDEyOCwgNzEsIDczLCAxODAsIDcxLCA3MiwgOTAsIDEyOCwgNzEsIDcyLCAKLSAgICA4NywgNjUsIDEyOCwgNzEsIDcyLCA4NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDE5MywgNzEsIAotICAgIDcyLCA4NSwgMTI4LCA3MSwgNzIsIDc5LCA4NSwgMTI4LCA3MSwgNzIsIDc5LCA4MywgODQsIDEyOCwgNzEsIDcyLCA3OSwgCi0gICAgMTI4LCA3MSwgNzIsIDczLCAxMjgsIDcxLCA3MiwgNzIsIDY1LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgCi0gICAgNzIsIDY5LCA4NSwgNzgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDcxLCAKLSAgICA3MiwgNjksIDg1LCA3MSwgNzIsIDY5LCA3OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjUsIDY5LCAxMjgsIAotICAgIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgODQsIDEyOCwgCi0gICAgNzEsIDcyLCA2OSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgMTI4LCA3MSwgNzIsIDE5NywgNzEsIDcyLCA2NSwgODksIDc4LCAKLSAgICAxMjgsIDcxLCA3MiwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2NSwgODAsIDEyOCwgNzEsIDcyLCA2NSwgNzgsIAotICAgIDEyOCwgNzEsIDcyLCA2NSwgNzcsIDY1LCA3NiwgMTI4LCA3MSwgNzIsIDY1LCA3MywgNzgsIDg1LCAxMjgsIDcxLCA3MiwgCi0gICAgNjUsIDczLCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA3MywgMjA2LCA3MSwgNzIsIDY1LCA2OCwgMTI4LCA3MSwgNzIsIDY1LCAKLSAgICA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA2NSwgMTI4LCA3MSwgNzEsIDg3LCA3MywgMTI4LCA3MSwgNzEsIAotICAgIDg3LCA2OSwgNjksIDEyOCwgNzEsIDcxLCA4NywgNjksIDEyOCwgNzEsIDcxLCA4NywgNjUsIDY1LCAxMjgsIDcxLCA3MSwgCi0gICAgODcsIDY1LCAxMjgsIDcxLCA3MSwgODUsIDg4LCAxMjgsIDcxLCA3MSwgODUsIDg0LCAxMjgsIDcxLCA3MSwgODUsIDgyLCAKLSAgICA4OCwgMTI4LCA3MSwgNzEsIDg1LCA4MiwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzEsIDcxLCA4NSwgNzksIAotICAgIDg0LCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgMTI4LCA3MSwgNzEsIDc5LCA4OCwgCi0gICAgMTI4LCA3MSwgNzEsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDczLCA4OCwgMTI4LCA3MSwgCi0gICAgNzEsIDczLCA4NCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA3MywgNjksIDgwLCAxMjgsIDcxLCAKLSAgICA3MSwgNzMsIDY5LCAxMjgsIDcxLCA3MSwgNjksIDg4LCAxMjgsIDcxLCA3MSwgNjksIDg0LCAxMjgsIDcxLCA3MSwgNjksIAotICAgIDgwLCAxMjgsIDcxLCA3MSwgNjUsIDg4LCAxMjgsIDcxLCA3MSwgNjUsIDg0LCAxMjgsIDcxLCA3MSwgNjUsIDY1LCAxMjgsIAotICAgIDcxLCA2OSwgODQsIDE5MywgNzEsIDY5LCA4MywgODQsIDg1LCA4MiwgNjksIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg1LCAKLSAgICAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NCwgNzMsIDc4LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NCwgNzMsIDIwNiwgNzEsIAotICAgIDY5LCA4MywgNzIsIDUwLCAxMjgsIDcxLCA2OSwgODIsIDgzLCA3MiwgNjUsIDg5LCA3MywgNzcsIDEyOCwgNzEsIDY5LCA4MiwgCi0gICAgNzcsIDY1LCAyMDYsIDcxLCA2OSwgODIsIDY5LCA4MywgNzIsIDEyOCwgNzEsIDY5LCA4MiwgNjksIDgzLCAyMDAsIDcxLCAKLSAgICA2OSwgNzksIDc3LCA2OSwgODQsIDgyLCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNzEsIDY5LCA3OSwgNzcsIDY5LCA4NCwgCi0gICAgODIsIDczLCAxOTUsIDcxLCA2OSwgNzgsIDg0LCA3NiwgMTk3LCA3MSwgNjksIDc4LCA3MywgODQsIDczLCA4NiwgNjksIAotICAgIDEyOCwgNzEsIDY5LCA3OCwgNzMsIDc1LCAyMDEsIDcxLCA2OSwgNzgsIDY5LCA4MiwgNzMsIDE5NSwgNzEsIDY5LCA3NywgCi0gICAgNzMsIDc4LCA3MywgMTI4LCA3MSwgNjksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcxLCA2OSwgMjA1LCAKKyAgICA2NSwgNjUsIDEyOCwgNzIsIDcxLCAxMjgsIDcyLCA2OSwgODksIDg0LCAxMjgsIDcyLCA2OSwgODgsIDczLCA3MCwgNzksIAorICAgIDgyLCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgNzksIDc4LCAKKyAgICAxMjgsIDcyLCA2OSwgODIsIDg1LCA4NCwgODUsIDEyOCwgNzIsIDY5LCA4MiwgODUsIDEyOCwgNzIsIDY5LCA4MiwgNzcsIAorICAgIDczLCA4NCwgNzMsIDY1LCAyMDYsIDcyLCA2OSwgODIsIDc3LCA3MywgNzksIDc4LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgCisgICAgNzcsIDY5LCA4MywgMTI4LCA3MiwgNjksIDgyLCA2OSwgMTI4LCA3MiwgNjksIDgyLCA2NiwgMTI4LCA3MiwgNjksIDgyLCAKKyAgICA2NSwgNjksIDg1LCAyMDUsIDcyLCA2OSwgNzgsIDcxLCAxMjgsIDcyLCA2OSwgNzgsIDE5OSwgNzIsIDY5LCA3NywgODAsIAorICAgIDEyOCwgNzIsIDY5LCA3NiwgNzcsIDY5LCA4NCwgMTI4LCA3MiwgNjksIDc2LCA3NywgNjksIDIxMiwgNzIsIDY5LCA3NiwgCisgICAgMjA1LCA3MiwgNjksIDc2LCA3MywgNjcsIDc5LCA4MCwgODQsIDY5LCA4MiwgMTI4LCA3MiwgNjksIDc1LCA4NSwgODQsIDY1LCAKKyAgICA2NSwgODIsIDg1LCAxMjgsIDcyLCA2OSwgNzMsIDgzLCA2OSwgNzMsIDEyOCwgNzIsIDY5LCA3MywgNzEsIDcyLCA4NCwgCisgICAgMTI4LCA3MiwgNjksIDY5LCA3MywgMTI4LCA3MiwgNjksIDY1LCA4NiwgODksIDEyOCwgNzIsIDY5LCA2NSwgODYsIDY5LCAKKyAgICA3OCwgNzYsIDIxNywgNzIsIDY5LCA2NSwgODYsIDY5LCA3OCwgMTI4LCA3MiwgNjksIDY1LCA4NiwgNjksIDIwNiwgNzIsIAorICAgIDY5LCA2NSwgODIsIDg0LCA4MywgMTI4LCA3MiwgNjksIDY1LCA4MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgCisgICAgNzIsIDY5LCA2NSwgODIsIDg0LCAxMjgsIDcyLCA2OSwgNjUsIDgyLCAyMTIsIDcyLCA2OSwgNjUsIDgyLCA0NSwgNzgsIDc5LCAKKyAgICA0NSwgNjksIDg2LCA3MywgMjA0LCA3MiwgNjksIDY1LCA2OCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMTI4LCA3MiwgNjksIAorICAgIDY1LCA2OCwgODMsIDg0LCA3OSwgNzgsIDE5NywgNzIsIDY5LCA2NSwgNjgsIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA3MiwgCisgICAgNjksIDY1LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA3MiwgNjksIDY1LCA2OCwgNDUsIDY2LCA2NSwgNzgsIDY4LCA2NSwgNzEsIAorICAgIDY5LCAxMjgsIDcyLCA2NiwgNjUsIDgzLCA2NSwgNDUsIDY5LCA4MywgNjUsIDgzLCAxOTMsIDcyLCA2NiwgNjUsIDgzLCAKKyAgICAxOTMsIDcyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcyLCA2NSwgODcsIDc0LCAxMjgsIDcyLCA2NSwgODYsIAorICAgIDY5LCAxMjgsIDcyLCA2NSwgODUsIDgwLCA4NCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3MiwgNjUsIDIxMywgCisgICAgNzIsIDY1LCA4NCwgODIsIDY1LCAyMDYsIDcyLCA2NSwgODQsIDcyLCA3MywgMTI4LCA3MiwgNjUsIDg0LCA2OSwgMTI4LCAKKyAgICA3MiwgNjUsIDg0LCA2NywgNzIsIDczLCA3OCwgMTk5LCA3MiwgNjUsIDg0LCA2NSwgMTk4LCA3MiwgNjUsIDgzLCA2OSwgCisgICAgMjEwLCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDgyLCA4MCwgNzksIDc5LCA3OCwgMTI4LCAKKyAgICA3MiwgNjUsIDgyLCA4MCwgNzksIDc5LCAyMDYsIDcyLCA2NSwgODIsIDc3LCA3OSwgNzgsIDczLCA2NywgMTI4LCA3MiwgNjUsIAorICAgIDgyLCA3NSwgNzYsIDY5LCA2NSwgMjA2LCA3MiwgNjUsIDgyLCA2OCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzIsIDY1LCA4MiwgCisgICAgMTk2LCA3MiwgNjUsIDgwLCA4MCwgMjE3LCA3MiwgNjUsIDc4LCA4NSwgNzgsIDc5LCAyMDcsIDcyLCA2NSwgNzgsIDcxLCAKKyAgICA5MCwgNzIsIDc5LCAyMTMsIDcyLCA2NSwgNzgsIDY4LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgMjExLCA3MiwgNjUsIAorICAgIDc4LCA2OCwgNzYsIDY5LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA2NiwgCisgICAgNjUsIDcxLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzksIDg2LCA2NSwgNzYsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCAKKyAgICA3OSwgODYsIDY1LCAyMDQsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIDc5LCA3OSwgNzUsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIAorICAgIDQ1LCA3MiwgNzksIDc5LCAyMDMsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIDczLCA3OCwgNzEsIDY5LCAxMjgsIDcyLCA2NSwgCisgICAgNzgsIDY4LCA0NSwgNzIsIDczLCA3OCwgNzEsIDE5NywgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzYsIDY1LCA4NCwgMTI4LCAKKyAgICA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3NiwgNjUsIDIxMiwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzMsIDgzLCA4NCwgCisgICAgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgODIsIDc2LCA3MywgNjcsIDg1LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCAKKyAgICA2OCwgNDUsIDY3LCA4NSwgODIsIDc2LCA3MywgNjcsIDg1LCAxOTcsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCA4MCwgCisgICAgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgMjA4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3NiwgNjUsIDg3LCAKKyAgICAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDc2LCA2NSwgMjE1LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3MywgODIsIAorICAgIDY3LCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgNzIsIDY1LCA3OCwgCisgICAgNjgsIDQ1LCA2NSwgNzgsIDcxLCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NSwgNzgsIDcxLCA3NiwgMTk3LCAKKyAgICA3MiwgNjUsIDc4LCA2OCwgMTI4LCA3MiwgNjUsIDc4LCA0NSwgNjUsIDc1LCA2NSwgODQsIDEyOCwgNzIsIDY1LCA3NywgOTAsIAorICAgIDY1LCAxMjgsIDcyLCA2NSwgNzcsIDkwLCAxOTMsIDcyLCA2NSwgNzcsIDgzLCA4NCwgNjksIDIxMCwgNzIsIDY1LCA3NywgCisgICAgNzcsIDY5LCA4MiwgMTI4LCA3MiwgNjUsIDc3LCA3NywgNjksIDIxMCwgNzIsIDY1LCA3NywgNjYsIDg1LCA4MiwgNzEsIDY5LCAKKyAgICA4MiwgMTI4LCA3MiwgNjUsIDc2LCA4MSwgNjUsIDEyOCwgNzIsIDY1LCA3NiwgNzksIDEyOCwgNzIsIDY1LCA3NiwgNzAsIAorICAgIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgNzIsIDY1LCA3NiwgNzAsIDEyOCwgNzIsIDY1LCA3NiwgNjYsIDY5LCA4MiwgCisgICAgNjgsIDEyOCwgNzIsIDY1LCA3NiwgNjUsIDc4LCA4NCwgNjUsIDEyOCwgNzIsIDY1LCA3MywgODQsIDg1LCAxMjgsIDcyLCAKKyAgICA2NSwgNzMsIDIxMSwgNzIsIDY1LCA3MywgODIsIDY3LCA4NSwgODQsIDEyOCwgNzIsIDY1LCA3MywgODIsIDEyOCwgNzIsIAorICAgIDY1LCA3MSwgNzYsIDY1LCAyMTgsIDcyLCA2NSwgNzEsIDc2LCAxMjgsIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDY1LCAKKyAgICAxMjgsIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDEyOCwgNzIsIDY1LCA2OSwgNzEsIDIwNCwgNzIsIDY1LCA2NSwgODIsIAorICAgIDg1LCAxMjgsIDcyLCA2NSwgNjUsIDc3LCAxMjgsIDcyLCA2NSwgMTkzLCA3MiwgNjUsIDQ1LCA3MiwgNjUsIDEyOCwgNzIsIAorICAgIDQ4LCA0OCwgNTYsIDEyOCwgNzIsIDQ4LCA0OCwgNTUsIDEyOCwgNzIsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDcyLCA0OCwgCisgICAgNDgsIDU0LCAxMjgsIDcyLCA0OCwgNDgsIDUzLCAxMjgsIDcyLCA0OCwgNDgsIDUyLCAxMjgsIDcyLCA0OCwgNDgsIDUxLCAKKyAgICAxMjgsIDcyLCA0OCwgNDgsIDUwLCAxMjgsIDcyLCA0OCwgNDgsIDQ5LCAxMjgsIDcyLCA0NSwgODQsIDg5LCA4MCwgMTk3LCAKKyAgICA3MSwgODksIDg1LCAxMjgsIDcxLCA4OSwgNzksIDc4LCAxMjgsIDcxLCA4OSwgNzksIDEyOCwgNzEsIDg5LCA3MywgMTI4LCAKKyAgICA3MSwgODksIDcwLCAyMTMsIDcxLCA4OSwgNjksIDY5LCAxMjgsIDcxLCA4OSwgNjUsIDgzLCAxMjgsIDcxLCA4OSwgNjUsIAorICAgIDY1LCAxMjgsIDcxLCA4OSwgNjUsIDEyOCwgNzEsIDg5LCAxMjgsIDcxLCA4NywgODUsIDEyOCwgNzEsIDg3LCA3MywgMTI4LCAKKyAgICA3MSwgODcsIDY5LCA2OSwgMTI4LCA3MSwgODcsIDY5LCAxMjgsIDcxLCA4NywgNjUsIDY1LCAxMjgsIDcxLCA4NywgNjUsIAorICAgIDEyOCwgNzEsIDg2LCA2NSwgNzgsIDcxLCAxMjgsIDcxLCA4NiwgMTI4LCA3MSwgODUsIDgyLCA4NSwgODMsIDcyLCAxMjgsIAorICAgIDcxLCA4NSwgODIsIDg1LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA3NywgODUsIDc1LCA3MiwgMjAxLCA3MSwgODUsIDgyLCA2NSwgCisgICAgNzcsIDg1LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA4NSwgODIsIDU1LCAxMjgsIDcxLCA4NSwgNzgsIDg1LCAxMjgsIDcxLCAKKyAgICA4NSwgNzgsIDIxMywgNzEsIDg1LCAyMDUsIDcxLCA4NSwgNzYsIDEyOCwgNzEsIDg1LCA3NCwgNjUsIDgyLCA2NSwgODQsIAorICAgIDIwMSwgNzEsIDg1LCA3MywgODQsIDY1LCA4MiwgMTI4LCA3MSwgODUsIDE5OSwgNzEsIDg1LCA2OSwgNzMsIDEyOCwgNzEsIAorICAgIDg1LCA2OSwgNzIsIDEyOCwgNzEsIDg1LCA2OSwgMjAwLCA3MSwgODUsIDY4LCAxMjgsIDcxLCA4NSwgMTk2LCA3MSwgODUsIAorICAgIDY1LCA4MiwgNjgsIDgzLCA3NywgNjUsIDc4LCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2OCwgNjksIDY4LCA3OCwgNjksIDgzLCAKKyAgICA4MywgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjgsIDY5LCAxOTYsIDcxLCA4NSwgNjUsIDgyLCA2OCwgMTI4LCA3MSwgODUsIAorICAgIDY1LCA4MiwgNjUsIDc4LCAyMDEsIDcxLCA4NSwgMTkzLCA3MSwgODUsIDE3OCwgNzEsIDg0LCA2OSwgMjEwLCA3MSwgODMsIAorICAgIDg1LCA3NywgMTI4LCA3MSwgODMsIDg1LCAyMDUsIDcxLCA4MiwgMjEzLCA3MSwgODIsIDc5LCA4NywgNzMsIDc4LCAxOTksIAorICAgIDcxLCA4MiwgNzksIDg1LCA3OCwgNjgsIDEyOCwgNzEsIDgyLCA3OSwgNzgsIDg0LCA3MiwgNzMsIDgzLCA3NywgNjUsIDg0LCAKKyAgICA2NSwgMTI4LCA3MSwgODIsIDczLCA3OCwgNzgsIDczLCA3OCwgMTk5LCA3MSwgODIsIDczLCA3NywgNjUsIDY3LCA3MywgNzgsIAorICAgIDE5OSwgNzEsIDgyLCA2OSwgNzEsIDc5LCA4MiwgNzMsIDY1LCAyMDYsIDcxLCA4MiwgNjksIDY5LCAyMDYsIDcxLCA4MiwgCisgICAgNjksIDY1LCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgODIsIDQ1LCA4NCwgNzIsIAorICAgIDY1LCA3OCwgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCA4MiwgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzEsIDgyLCA2OSwgCisgICAgNjUsIDg0LCA2OSwgMjEwLCA3MSwgODIsIDY5LCA2NSwgMjEyLCA3MSwgODIsIDY1LCA4NiwgNjksIDg5LCA2NSwgODIsIAorICAgIDE5NiwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA3MSwgODIsIDY1LCA4NiwgCisgICAgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDEyOCwgNzEsIDgyLCA2NSwgODYsIAorICAgIDE5NywgNzEsIDgyLCA2NSwgODQsIDY5LCA4MiwgMTI4LCA3MSwgODIsIDY1LCA4MywgODMsIDEyOCwgNzEsIDgyLCA2NSwgCisgICAgODMsIDIxMSwgNzEsIDgyLCA2NSwgODMsIDIwOCwgNzEsIDgyLCA2NSwgODAsIDcyLCA2OSwgNzcsIDE5NywgNzEsIDgyLCAKKyAgICA2NSwgODAsIDY5LCA4MywgMTI4LCA3MSwgODIsIDY1LCA3OCwgODQsIDcyLCAxOTMsIDcxLCA4MiwgNjUsIDc3LCA3NywgCisgICAgMTkzLCA3MSwgODIsIDY1LCA3MywgNzgsIDEyOCwgNzEsIDgyLCA2NSwgNjgsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCAKKyAgICA3MSwgODIsIDY1LCA2OCwgODUsIDY1LCA3NiwgMTI4LCA3MSwgODIsIDY1LCA2NywgNjksIDEyOCwgNzEsIDgyLCA2NSwgNjcsIAorICAgIDE5NywgNzEsIDgwLCA2NSwgMTI4LCA3MSwgNzksIDgyLCA4NCwgNzIsIDc3LCA3MywgNzUsIDc5LCAyMDYsIDcxLCA3OSwgCisgICAgODIsIDg0LCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgODQsIDY5LCA4MiwgNzMsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCAKKyAgICA4MywgODksIDc4LCA4NCwgNzIsIDY5LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgMjA2LCA3MSwgNzksIAorICAgIDgyLCA3MSwgNzMsIDEyOCwgNzEsIDc5LCA4MiwgNjUsIDEyOCwgNzEsIDc5LCA3OSwgMTk2LCA3MSwgNzksIDc4LCA3MSwgCisgICAgMTI4LCA3MSwgNzksIDc2LCA3MCwgNjksIDgyLCAxMjgsIDcxLCA3OSwgNzYsIDY4LCAxMjgsIDcxLCA3OSwgNzUsIDEyOCwgCisgICAgNzEsIDc5LCA3MywgNzgsIDE5OSwgNzEsIDc5LCA2NiwgNzYsIDczLCA3OCwgMTI4LCA3MSwgNzksIDY1LCA3NiwgMTI4LCAKKyAgICA3MSwgNzksIDY1LCAyMDQsIDcxLCA3OSwgNjUsIDEyOCwgNzEsIDc4LCA4OSwgNzMsIDgzLCAxMjgsIDcxLCA3OCwgNjUsIAorICAgIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzEsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MSwgNzYsIDc5LCA4NCwgCisgICAgODQsIDY1LCAyMDQsIDcxLCA3NiwgNzksIDY2LCAxOTcsIDcxLCA3NiwgNzMsIDgzLCA4MywgNjUsIDc4LCA2OCwgMjA3LCAKKyAgICA3MSwgNzYsIDY5LCA3MywgNjcsIDIwMCwgNzEsIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDEyOCwgNzEsIDc2LCA2NSwgCisgICAgMTI4LCA3MSwgNzQsIDY5LCAxMjgsIDcxLCA3MywgODgsIDEyOCwgNzEsIDczLCA4NCwgMTI4LCA3MSwgNzMsIDgzLCA3MiwgCisgICAgMTI4LCA3MSwgNzMsIDgzLCAyMDAsIDcxLCA3MywgODMsIDY1LCA3NiwgMTI4LCA3MSwgNzMsIDgyLCA4NSwgNjgsIDY1LCAKKyAgICA2NSwgMTI4LCA3MSwgNzMsIDgyLCA3NiwgMjExLCA3MSwgNzMsIDgyLCA3NiwgMTI4LCA3MSwgNzMsIDgyLCA1MSwgMTI4LCAKKyAgICA3MSwgNzMsIDgyLCAxNzksIDcxLCA3MywgODIsIDUwLCAxMjgsIDcxLCA3MywgODIsIDE3OCwgNzEsIDczLCA4MCwgMTI4LCAKKyAgICA3MSwgNzMsIDc4LCA3MywgNzMsIDEyOCwgNzEsIDczLCA3NywgNjksIDc2LCAxMjgsIDcxLCA3MywgNzcsIDY5LCAyMDQsIAorICAgIDcxLCA3MywgNzcsIDEyOCwgNzEsIDczLCA3MSwgNjUsIDEyOCwgNzEsIDczLCA3MSwgMTI4LCA3MSwgNzMsIDY5LCA4NCwgCisgICAgMTI4LCA3MSwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzEsIDczLCA2NiwgNjYsIDc5LCA4NSwgMjExLCA3MSwgNzMsIDY2LCAKKyAgICA2NSwgMTI4LCA3MSwgNzMsIDUyLCAxMjgsIDcxLCA3MywgMTgwLCA3MSwgNzIsIDkwLCAxMjgsIDcxLCA3MiwgODcsIDY1LCAKKyAgICAxMjgsIDcxLCA3MiwgODUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDcyLCA4NSwgNzgsIDc4LCAxOTMsIDcxLCA3MiwgODUsIAorICAgIDEyOCwgNzEsIDcyLCA3OSwgODUsIDEyOCwgNzEsIDcyLCA3OSwgODMsIDg0LCAxMjgsIDcxLCA3MiwgNzksIDEyOCwgNzEsIAorICAgIDcyLCA3MywgNzcsIDY5LCA3NiwgMTI4LCA3MSwgNzIsIDczLCAxMjgsIDcxLCA3MiwgNzIsIDY1LCAxMjgsIDcxLCA3MiwgCisgICAgNjksIDg5LCA4MywgMTI4LCA3MSwgNzIsIDY5LCA4NSwgODgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDc4LCAxMjgsIDcxLCAKKyAgICA3MiwgNjksIDg1LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgCisgICAgNzgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCAKKyAgICA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjksIDg0LCAxMjgsIDcxLCA3MiwgNjksIDY5LCAxMjgsIAorICAgIDcxLCA3MiwgNjksIDEyOCwgNzEsIDcyLCAxOTcsIDcxLCA3MiwgNjUsIDg5LCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA4MiwgCisgICAgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDgwLCAxMjgsIDcxLCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDc3LCAKKyAgICA3NywgNjUsIDEyOCwgNzEsIDcyLCA2NSwgNzcsIDY1LCA3NiwgMTI4LCA3MSwgNzIsIDY1LCA3MywgNzgsIDg1LCAxMjgsIAorICAgIDcxLCA3MiwgNjUsIDczLCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA3MywgMjA2LCA3MSwgNzIsIDY1LCA2OCwgMTI4LCA3MSwgCisgICAgNzIsIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA2NSwgMTI4LCA3MSwgNzEsIDg3LCA3MywgMTI4LCAKKyAgICA3MSwgNzEsIDg3LCA2OSwgNjksIDEyOCwgNzEsIDcxLCA4NywgNjksIDEyOCwgNzEsIDcxLCA4NywgNjUsIDY1LCAxMjgsIAorICAgIDcxLCA3MSwgODcsIDY1LCAxMjgsIDcxLCA3MSwgODUsIDg4LCAxMjgsIDcxLCA3MSwgODUsIDg0LCAxMjgsIDcxLCA3MSwgCisgICAgODUsIDgyLCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA4MiwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzEsIDcxLCAKKyAgICA4NSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgMTI4LCA3MSwgNzEsIAorICAgIDc5LCA4OCwgMTI4LCA3MSwgNzEsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDczLCA4OCwgCisgICAgMTI4LCA3MSwgNzEsIDczLCA4NCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA3MywgNjksIDgwLCAKKyAgICAxMjgsIDcxLCA3MSwgNzMsIDY5LCAxMjgsIDcxLCA3MSwgNjksIDg4LCAxMjgsIDcxLCA3MSwgNjksIDg0LCAxMjgsIDcxLCAKKyAgICA3MSwgNjksIDgwLCAxMjgsIDcxLCA3MSwgNjUsIDg4LCAxMjgsIDcxLCA3MSwgNjUsIDg0LCAxMjgsIDcxLCA2OSwgODQsIAorICAgIDE5MywgNzEsIDY5LCA4MywgODQsIDg1LCA4MiwgNjksIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg1LCAxMjgsIDcxLCA2OSwgCisgICAgODMsIDcyLCA4NCwgNzMsIDc4LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NCwgNzMsIDIwNiwgNzEsIDY5LCA4MywgNzIsIDUwLCAKKyAgICAxMjgsIDcxLCA2OSwgODIsIDgzLCA3MiwgNjUsIDg5LCA3MywgNzcsIDEyOCwgNzEsIDY5LCA4MiwgNzcsIDY1LCAyMDYsIAorICAgIDcxLCA2OSwgODIsIDY5LCA4MywgNzIsIDEyOCwgNzEsIDY5LCA4MiwgNjksIDgzLCAyMDAsIDcxLCA2OSwgNzksIDc3LCA2OSwgCisgICAgODQsIDgyLCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNzEsIDY5LCA3OSwgNzcsIDY5LCA4NCwgODIsIDczLCAxOTUsIDcxLCAKKyAgICA2OSwgNzgsIDg0LCA3NiwgMTk3LCA3MSwgNjksIDc4LCA3MywgODQsIDczLCA4NiwgNjksIDEyOCwgNzEsIDY5LCA3OCwgNzMsIAorICAgIDc1LCAyMDEsIDcxLCA2OSwgNzgsIDY5LCA4MiwgNzMsIDE5NSwgNzEsIDY5LCA3NywgNzMsIDc4LCA3MywgMTI4LCA3MSwgCisgICAgNjksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcxLCA2OSwgMjA1LCA3MSwgNjksIDY5LCA3NywgMTI4LCAKICAgICA3MSwgNjksIDY4LCA3OSwgNzYsIDY1LCAxMjgsIDcxLCA2OSwgNjgsIDY5LCAxMjgsIDcxLCA2OSwgNjYsIDIwNywgNzEsIAotICAgIDY5LCA2NiwgMTkzLCA3MSwgNjksIDY1LCA4MiwgMTI4LCA3MSwgNjksIDY1LCAyMTAsIDcxLCA2OCwgNjUsIDc4LCAxMjgsIAotICAgIDcxLCA2NywgNzMsIDcxLCAxMjgsIDcxLCA2NywgNjUsIDIwNiwgNzEsIDY2LCA3OSwgNzgsIDEyOCwgNzEsIDY2LCA3MywgCi0gICAgNjksIDE5NywgNzEsIDY2LCA2OSwgODUsIDg4LCAxMjgsIDcxLCA2NiwgNjksIDg0LCAxMjgsIDcxLCA2NiwgNjUsIDg5LCAKLSAgICA3MywgMTI4LCA3MSwgNjYsIDY1LCA3NSwgODUsIDgyLCA4NSwgNzgsIDY5LCA3OCwgMTI4LCA3MSwgNjYsIDEyOCwgNzEsIAotICAgIDY1LCA4OSwgNjUsIDc4LCA4NSwgNzUsIDczLCA4NCwgODQsIDY1LCAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDcxLCA2NSwgODksIDEyOCwgNzEsIDY1LCA4NSwgNzgsIDg0LCA3NiwgNjksIDg0LCAxMjgsIDcxLCA2NSwgODQsIAotICAgIDcyLCA2OSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDcxLCA2NSwgCi0gICAgODQsIDY5LCAxMjgsIDcxLCA2NSwgODMsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgODMsIDcyLCA4NSwgNzgsIDczLCAKLSAgICAxMjgsIDcxLCA2NSwgODIsIDc5LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MSwgNjUsIAotICAgIDgyLCA2OCwgNjksIDc4LCAxMjgsIDcxLCA2NSwgODIsIDUxLCAxMjgsIDcxLCA2NSwgODAsIDgwLCA2OSwgMTk2LCA3MSwgCi0gICAgNjUsIDIwOCwgNzEsIDY1LCA3OCwgNzcsIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDcxLCA3MywgNjUsIDEyOCwgNzEsIDY1LCAKLSAgICA3OCwgNjgsIDE5MywgNzEsIDY1LCA3OCwgNTAsIDEyOCwgNzEsIDY1LCA3OCwgMTc4LCA3MSwgNjUsIDc3LCA3NywgNjUsIAotICAgIDEyOCwgNzEsIDY1LCA3NywgNzYsIDY1LCAxMjgsIDcxLCA2NSwgNzcsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY5LCAxMjgsIAotICAgIDcxLCA2NSwgNzcsIDE5NywgNzEsIDY1LCA3NywgNjUsIDc4LCAxMjgsIDcxLCA2NSwgNzcsIDY1LCA3NiwgMTI4LCA3MSwgCi0gICAgNjUsIDc3LCA2NSwgMjA0LCA3MSwgNjUsIDcxLCAxMjgsIDcxLCA2NSwgNzAsIDEyOCwgNzEsIDY1LCAxOTgsIDcxLCA2NSwgCi0gICAgNjksIDg0LCA4NCwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzEsIDY1LCA2OCwgNzksIDc2LCAxMjgsIDcxLCAKLSAgICA2NSwgNjgsIDEyOCwgNzEsIDY1LCAxOTYsIDcxLCA2NSwgNjYsIDY1LCAxMjgsIDcxLCA2NSwgNjYsIDE5MywgNzEsIDY1LCAKLSAgICA2NSwgNzAsIDg1LCAxMjgsIDcxLCA2NSwgMTc4LCA3MSwgNDgsIDUzLCA1MiwgMTI4LCA3MSwgNDgsIDUzLCA1MSwgMTI4LCAKLSAgICA3MSwgNDgsIDUzLCA1MCwgMTI4LCA3MSwgNDgsIDUzLCA0OSwgMTI4LCA3MSwgNDgsIDUzLCA0OCwgMTI4LCA3MSwgNDgsIAotICAgIDUyLCA1NywgMTI4LCA3MSwgNDgsIDUyLCA1NiwgMTI4LCA3MSwgNDgsIDUyLCA1NSwgMTI4LCA3MSwgNDgsIDUyLCA1NCwgCi0gICAgMTI4LCA3MSwgNDgsIDUyLCA1MywgNjUsIDEyOCwgNzEsIDQ4LCA1MiwgNTMsIDEyOCwgNzEsIDQ4LCA1MiwgNTIsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MiwgNTEsIDY1LCAxMjgsIDcxLCA0OCwgNTIsIDUxLCAxMjgsIDcxLCA0OCwgNTIsIDUwLCAxMjgsIDcxLCAKLSAgICA0OCwgNTIsIDQ5LCAxMjgsIDcxLCA0OCwgNTIsIDQ4LCAxMjgsIDcxLCA0OCwgNTEsIDU3LCAxMjgsIDcxLCA0OCwgNTEsIAotICAgIDU2LCAxMjgsIDcxLCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3MSwgNDgsIDUxLCA1NSwgMTI4LCA3MSwgNDgsIDUxLCA1NCwgCi0gICAgNjUsIDEyOCwgNzEsIDQ4LCA1MSwgNTQsIDEyOCwgNzEsIDQ4LCA1MSwgNTMsIDEyOCwgNzEsIDQ4LCA1MSwgNTIsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MSwgNTEsIDEyOCwgNzEsIDQ4LCA1MSwgNTAsIDEyOCwgNzEsIDQ4LCA1MSwgNDksIDEyOCwgNzEsIDQ4LCAKLSAgICA1MSwgNDgsIDEyOCwgNzEsIDQ4LCA1MCwgNTcsIDEyOCwgNzEsIDQ4LCA1MCwgNTYsIDEyOCwgNzEsIDQ4LCA1MCwgNTUsIAotICAgIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNTAsIDU0LCAxMjgsIDcxLCA0OCwgNTAsIDUzLCAxMjgsIAotICAgIDcxLCA0OCwgNTAsIDUyLCAxMjgsIDcxLCA0OCwgNTAsIDUxLCAxMjgsIDcxLCA0OCwgNTAsIDUwLCAxMjgsIDcxLCA0OCwgCi0gICAgNTAsIDQ5LCAxMjgsIDcxLCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA3MSwgNDgsIDUwLCA0OCwgMTI4LCA3MSwgNDgsIDQ5LCAKLSAgICA1NywgMTI4LCA3MSwgNDgsIDQ5LCA1NiwgMTI4LCA3MSwgNDgsIDQ5LCA1NSwgMTI4LCA3MSwgNDgsIDQ5LCA1NCwgMTI4LCAKLSAgICA3MSwgNDgsIDQ5LCA1MywgMTI4LCA3MSwgNDgsIDQ5LCA1MiwgMTI4LCA3MSwgNDgsIDQ5LCA1MSwgMTI4LCA3MSwgNDgsIAotICAgIDQ5LCA1MCwgMTI4LCA3MSwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgNzEsIDQ4LCA0OSwgNDksIDEyOCwgNzEsIDQ4LCA0OSwgCi0gICAgNDgsIDEyOCwgNzEsIDQ4LCA0OCwgNTcsIDEyOCwgNzEsIDQ4LCA0OCwgNTYsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDY2LCAKLSAgICAxMjgsIDcxLCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NCwgNjUsIAotICAgIDEyOCwgNzEsIDQ4LCA0OCwgNTQsIDEyOCwgNzEsIDQ4LCA0OCwgNTMsIDEyOCwgNzEsIDQ4LCA0OCwgNTIsIDEyOCwgNzEsIAotICAgIDQ4LCA0OCwgNTEsIDEyOCwgNzEsIDQ4LCA0OCwgNTAsIDEyOCwgNzEsIDQ4LCA0OCwgNDksIDEyOCwgNzAsIDg5LCA4OCwgCi0gICAgMTI4LCA3MCwgODksIDg0LCAxMjgsIDcwLCA4OSwgODAsIDEyOCwgNzAsIDg5LCA2NSwgMTI4LCA3MCwgODcsIDczLCAxMjgsIAotICAgIDcwLCA4NywgNjksIDY5LCAxMjgsIDcwLCA4NywgNjksIDEyOCwgNzAsIDg3LCA2NSwgNjUsIDEyOCwgNzAsIDg3LCA2NSwgCi0gICAgMTI4LCA3MCwgODYsIDgzLCA1MSwgMTI4LCA3MCwgODYsIDgzLCA1MCwgMTI4LCA3MCwgODYsIDgzLCA0OSwgMTI4LCA3MCwgCi0gICAgODUsIDg4LCAxMjgsIDcwLCA4NSwgODQsIDEyOCwgNzAsIDg1LCA4MywgNjksIDEyOCwgNzAsIDg1LCA4MywgMTkzLCA3MCwgCi0gICAgODUsIDgyLCA4OCwgMTI4LCA3MCwgODUsIDgwLCAxMjgsIDcwLCA4NSwgNzgsIDY5LCA4MiwgNjUsIDIwNCwgNzAsIDg1LCAKLSAgICA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzAsIAotICAgIDg1LCA3NiwgNzYsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcwLCA4NSwgNzYsIDIwNCwgNzAsIDg1LCA3NCwgNzMsIDEyOCwgCi0gICAgNzAsIDg1LCA2OSwgODQsIDEyOCwgNzAsIDg1LCA2OSwgMjA0LCA3MCwgODUsIDY5LCAxMjgsIDcwLCA4NCwgNzIsIDc5LCAKLSAgICA4MiwgMTkzLCA3MCwgODMsIDczLCAxMjgsIDcwLCA4MiwgNzksIDg3LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgODIsIAotICAgIDc5LCA4NywgNzgsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCA4NywgNzgsIDEyOCwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgCi0gICAgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDcwLCA4MiwgNzksIDc4LCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCAKLSAgICA3MCwgODIsIDc5LCAyMDUsIDcwLCA4MiwgNzksIDcxLCAxMjgsIDcwLCA4MiwgNzksIDE5OSwgNzAsIDgyLCA3MywgODQsIAotICAgIDg1LCAxMjgsIDcwLCA4MiwgNzMsIDY5LCA4MywgMTI4LCA3MCwgODIsIDczLCA2OSwgMTk2LCA3MCwgODIsIDczLCA2NywgCi0gICAgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcwLCA4MiwgNjksIDg0LCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzAsIDgyLCAKLSAgICA2OSwgNzgsIDY3LCAyMDAsIDcwLCA4MiwgNjksIDY5LCAxMjgsIDcwLCA4MiwgNjksIDE5NywgNzAsIDgyLCA2NSwgNzgsIAotICAgIDE5NSwgNzAsIDgyLCA2NSwgNzcsIDY5LCAxMjgsIDcwLCA4MiwgNjUsIDcxLCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA3MCwgCi0gICAgODIsIDY1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNzAsIDc5LCAKLSAgICA4OCwgMTI4LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzAsIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIAotICAgIDIwNiwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA0NSwgCi0gICAgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3OSwgODUsIDgyLCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDcwLCAKLSAgICA3OSwgODUsIDgyLCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzksIDg1LCAyMTAsIDcwLCA3OSwgODUsIDc4LCA4NCwgNjUsIAotICAgIDczLCA3OCwgMTI4LCA3MCwgNzksIDgzLCA4NCwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDg3LCA2NSwgCi0gICAgODIsIDY4LCAxMjgsIDcwLCA3OSwgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzksIDgyLCA4NCwgMjE3LCA3MCwgNzksIDgyLCAKLSAgICA4NCwgNjksIDEyOCwgNzAsIDc5LCA4MiwgNzcsIDIxMSwgNzAsIDc5LCA4MiwgNzcsIDY1LCA4NCwgODQsIDczLCA3OCwgNzEsIAotICAgIDEyOCwgNzAsIDc5LCA4MiwgNzUsIDY5LCAxOTYsIDcwLCA3OSwgODIsIDY3LCA2OSwgODMsIDEyOCwgNzAsIDc5LCA4MiwgCi0gICAgNjcsIDY5LCAxMjgsIDcwLCA3OSwgODAsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDgzLCA4NCwgNzksIDc5LCA3NiwgMTI4LCAKLSAgICA3MCwgNzksIDc5LCA4NCwgODAsIDgyLCA3MywgNzgsIDg0LCA4MywgMTI4LCA3MCwgNzksIDc5LCA4NCwgNzgsIDc5LCA4NCwgCi0gICAgMTk3LCA3MCwgNzksIDc5LCA4NCwgNjYsIDY1LCA3NiwgNzYsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDEyOCwgNzAsIDc5LCAKLSAgICA3OSwgNjgsIDEyOCwgNzAsIDc5LCA3OSwgMTI4LCA3MCwgNzksIDc4LCA3MSwgNzcsIDY1LCA3OCwgMTI4LCA3MCwgNzksIAotICAgIDc3LCAxMjgsIDcwLCA3OSwgNzYsIDc2LCA4OSwgMTI4LCA3MCwgNzksIDc2LCA3NiwgNzksIDg3LCA3MywgNzgsIDcxLCAKLSAgICAxMjgsIDcwLCA3OSwgNzYsIDY4LCA2OSwgODIsIDEyOCwgNzAsIDc5LCA3NiwgNjgsIDY5LCAxOTYsIDcwLCA3OSwgNzEsIAotICAgIDcxLCA4OSwgMTI4LCA3MCwgMjA3LCA3MCwgNzcsIDEyOCwgNzAsIDc2LCA4OSwgMTI4LCA3MCwgNzYsIDg1LCA4NCwgODQsIAotICAgIDY5LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3NiwgODUsIDg0LCA2OSwgMTI4LCA3MCwgNzYsIDg1LCA4MywgNzIsIDY5LCAKLSAgICAxOTYsIDcwLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNzAsIDc2LCA3OSwgODcsIDY5LCAyMTAsIDcwLCA3NiwgNzksIAotICAgIDg1LCA4MiwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjksIDg0LCA4NCwgNjksIDEyOCwgNzAsIDc2LCA3OSwgCi0gICAgODIsIDY1LCAyMDQsIDcwLCA3NiwgNzksIDgwLCA4MCwgMjE3LCA3MCwgNzYsIDc5LCA3OSwgODIsIDEyOCwgNzAsIDc2LCAKLSAgICA3MywgODAsIDEyOCwgNzAsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgNzYsIDY5LCA4OCwgODUsIDgzLCAxMjgsIAotICAgIDcwLCA3NiwgNjksIDg4LCA2OSwgMTk2LCA3MCwgNzYsIDY5LCA4NSwgODIsIDQ1LCA2OCwgNjksIDQ1LCA3NiwgNzMsIDgzLCAKLSAgICAxMjgsIDcwLCA3NiwgNjUsIDg0LCA4NCwgNjksIDc4LCA2OSwgMTk2LCA3MCwgNzYsIDY1LCA4NCwgNzgsIDY5LCA4MywgODMsIAotICAgIDEyOCwgNzAsIDc2LCA2NSwgODQsIDEyOCwgNzAsIDc2LCA2NSwgMjEyLCA3MCwgNzYsIDY1LCA3MSwgODMsIDEyOCwgNzAsIAotICAgIDc2LCA2NSwgNzEsIDQ1LCA1MywgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUyLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgCi0gICAgNTEsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MCwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDQ5LCAxMjgsIDcwLCAKLSAgICA3NiwgNjUsIDcxLCAxMjgsIDcwLCA3NiwgNjUsIDE5OSwgNzAsIDc2LCA2NSwgMTI4LCA3MCwgNzYsIDEyOCwgNzAsIDczLCAKLSAgICA4OCwgNjksIDY4LCA0NSwgNzAsIDc5LCA4MiwgMjA1LCA3MCwgNzMsIDg4LCAxMjgsIDcwLCA3MywgODYsIDY5LCA0NSwgODQsIAotICAgIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzAsIDczLCA4NiwgCi0gICAgMTk3LCA3MCwgNzMsIDg0LCA2NSwgMTI4LCA3MCwgNzMsIDg0LCAxMjgsIDcwLCA3MywgODMsIDg0LCA2OSwgMTk2LCA3MCwgCi0gICAgNzMsIDgzLCA4NCwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgNzMsIDc4LCAxOTksIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCAKLSAgICA3NSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgMjAzLCA3MCwgNzMsIDgzLCA3MiwgNjksIDg5LCA2OSwgCi0gICAgMTI4LCA3MCwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzMsIDgzLCAyMDAsIDcwLCA3MywgODIsIDgzLCAyMTIsIDcwLCA3MywgCi0gICAgODIsIDczLCAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIDgyLCA3NSwgODMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCAKLSAgICA3OSwgODIsIDIwMywgNzAsIDczLCA4MiwgNjksIDEyOCwgNzAsIDczLCA4MiwgMTk3LCA3MCwgNzMsIDgwLCAxMjgsIDcwLCAKLSAgICA3MywgNzgsIDczLCA4NCwgMTk3LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCA3OCwgNjUsIDczLCA3NiwgODMsIDEyOCwgNzAsIAotICAgIDczLCA3OCwgNzEsIDY5LCA4MiwgNjksIDE5NiwgNzAsIDczLCA3OCwgNjUsIDc4LCA2NywgNzMsIDY1LCA3NiwgMTI4LCA3MCwgCi0gICAgNzMsIDc2LCA3NiwgNjksIDgyLCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgMTk2LCA3MCwgNzMsIDc2LCA3NiwgMTI4LCAKLSAgICA3MCwgNzMsIDc2LCAyMDQsIDcwLCA3MywgNzYsIDE5NywgNzAsIDczLCA3MywgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIAotICAgIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUwLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgCi0gICAgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDE5NywgNzAsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCAKLSAgICA3MywgNzAsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgMjE3LCA3MCwgNzMsIDcwLCA4NCwgNzIsIDgzLCAxMjgsIAotICAgIDcwLCA3MywgNzAsIDg0LCA3MiwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgCi0gICAgNjksIDY5LCAyMDYsIDcwLCA3MywgNjksIDc2LCA2OCwgMTI4LCA3MCwgNzIsIDg0LCA3OSwgODIsIDE5MywgNzAsIDcwLCAKLSAgICA3NiwgMTI4LCA3MCwgNzAsIDczLCAxMjgsIDcwLCA2OSwgODUsIDg4LCAxMjgsIDcwLCA2OSwgODUsIDcwLCA2OSwgODUsIAotICAgIDY1LCA2OSwgODQsIDEyOCwgNzAsIDY5LCA4MywgODQsIDczLCA4NiwgNjUsIDc2LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA4OSwgCi0gICAgMTI4LCA3MCwgNjksIDgyLCA4MiwgNzMsIDIxMSwgNzAsIDY5LCA4MiwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzAsIDY5LCAKLSAgICA4MiwgNzcsIDY1LCA4NCwgMTkzLCA3MCwgNjksIDc5LCAyMDAsIDcwLCA2OSwgNzgsIDE5OSwgNzAsIDY5LCA3OCwgNjcsIAotICAgIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDczLCA3OCwgNzMsIDc4LCAxOTcsIDcwLCA2OSwgNzcsIDY1LCA3NiwgNjksIDEyOCwgCi0gICAgNzAsIDY5LCA3NywgNjUsIDc2LCAxOTcsIDcwLCA2OSwgNzYsIDc2LCA3OSwgODcsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDcwLCAKLSAgICA2OSwgNzMsIDEyOCwgNzAsIDY5LCA3MiwgMjEzLCA3MCwgNjksIDcyLCAxMjgsIDcwLCA2OSwgMjAwLCA3MCwgNjksIDY5LCAKLSAgICA3OCwgNzEsIDEyOCwgNzAsIDY5LCA2OSwgNjgsIDEyOCwgNzAsIDY5LCA2OSwgMTk2LCA3MCwgNjksIDY5LCAxMjgsIDcwLCAKLSAgICA2OSwgNjYsIDgyLCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjksIAotICAgIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2OSwgNjUsIDgyLCA3OCwgMTI4LCA3MCwgNjksIDY1LCA4MiwgNzAsIDg1LCAKLSAgICAyMDQsIDcwLCA2OSwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcwLCA2NSwgODksIAotICAgIDEyOCwgNzAsIDY1LCA4OCwgMTI4LCA3MCwgNjUsIDIxNiwgNzAsIDY1LCA4NCwgNzMsIDcxLCA4NSwgNjksIDEyOCwgNzAsIAotICAgIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY1LCA4NCwgNzIsIDY1LCA4NCwgCi0gICAgNjUsIDc4LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCAyMDYsIDcwLCA2NSwgODQsIDcyLCA2NSwgMTI4LCAKLSAgICA3MCwgNjUsIDg0LCA3MiwgMTkzLCA3MCwgNjUsIDg0LCAxMjgsIDcwLCA2NSwgODIsIDgzLCAyMDEsIDcwLCA2NSwgODEsIAotICAgIDEyOCwgNzAsIDY1LCA4MCwgMTI4LCA3MCwgNjUsIDc4LCA3MSwgMTI4LCA3MCwgNjUsIDc4LCA2OSwgODIsIDc5LCA4MywgCi0gICAgNzMsIDIxMSwgNzAsIDY1LCA3OCwgMTI4LCA3MCwgNjUsIDc3LCA3MywgNzYsIDg5LCAxMjgsIDcwLCA2NSwgNzYsIDc2LCAKLSAgICA3MywgNzgsIDE5OSwgNzAsIDY1LCA3NiwgNzYsIDY5LCAyMDYsIDcwLCA2NSwgNzMsIDc2LCA4NSwgODIsIDY5LCAxMjgsIAotICAgIDcwLCA2NSwgNzMsIDcyLCA4NSwgMTI4LCA3MCwgNjUsIDcyLCA4MiwgNjksIDc4LCA3MiwgNjksIDczLCA4NCwgMTI4LCA3MCwgCi0gICAgNjUsIDY3LCA4NCwgNzksIDgyLCA4OSwgMTI4LCA3MCwgNjUsIDY3LCA4NCwgNzksIDIxMCwgNzAsIDY1LCA2NywgODMsIDczLCAKLSAgICA3NywgNzMsIDc2LCAxOTcsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTQsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MywgCi0gICAgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUyLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDY1LCAKLSAgICA2NywgNjksIDQ1LCA1MCwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA2NSwgNjUsIDc3LCA2NSwgNjksIAotICAgIDEyOCwgNzAsIDY1LCA2NSwgNzMsIDEyOCwgNzAsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDcwLCA0OCwgNTMsIDUxLCAxMjgsIAotICAgIDcwLCA0OCwgNTMsIDUwLCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NywgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjYsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MywgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCAxMjgsIDcwLCA0OCwgNTMsIDQ4LCAxMjgsIDcwLCAKLSAgICA0OCwgNTIsIDU3LCAxMjgsIDcwLCA0OCwgNTIsIDU2LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCA2NSwgMTI4LCA3MCwgNDgsIAotICAgIDUyLCA1NSwgMTI4LCA3MCwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTQsIDEyOCwgNzAsIDQ4LCA1MiwgCi0gICAgNTMsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDUzLCAxMjgsIDcwLCA0OCwgNTIsIDUyLCAxMjgsIDcwLCA0OCwgNTIsIDUxLCAKLSAgICAxMjgsIDcwLCA0OCwgNTIsIDUwLCAxMjgsIDcwLCA0OCwgNTIsIDQ5LCAxMjgsIDcwLCA0OCwgNTIsIDQ4LCAxMjgsIDcwLCAKLSAgICA0OCwgNTEsIDU3LCAxMjgsIDcwLCA0OCwgNTEsIDU2LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA1NiwgMTI4LCA3MCwgNDgsIAotICAgIDUxLCA1NSwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNTUsIDEyOCwgNzAsIDQ4LCA1MSwgNTQsIDEyOCwgNzAsIDQ4LCA1MSwgCi0gICAgNTMsIDEyOCwgNzAsIDQ4LCA1MSwgNTIsIDEyOCwgNzAsIDQ4LCA1MSwgNTEsIDEyOCwgNzAsIDQ4LCA1MSwgNTAsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCAxMjgsIDcwLCA0OCwgNTEsIDQ4LCAxMjgsIDcwLCAKLSAgICA0OCwgNTAsIDU3LCAxMjgsIDcwLCA0OCwgNTAsIDU2LCAxMjgsIDcwLCA0OCwgNTAsIDU1LCAxMjgsIDcwLCA0OCwgNTAsIAotICAgIDU0LCAxMjgsIDcwLCA0OCwgNTAsIDUzLCAxMjgsIDcwLCA0OCwgNTAsIDUyLCAxMjgsIDcwLCA0OCwgNTAsIDUxLCAxMjgsIAotICAgIDcwLCA0OCwgNTAsIDUwLCAxMjgsIDcwLCA0OCwgNTAsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUwLCA0OSwgMTI4LCA3MCwgCi0gICAgNDgsIDUwLCA0OCwgMTI4LCA3MCwgNDgsIDQ5LCA1NywgMTI4LCA3MCwgNDgsIDQ5LCA1NiwgMTI4LCA3MCwgNDgsIDQ5LCAKLSAgICA1NSwgMTI4LCA3MCwgNDgsIDQ5LCA1NCwgMTI4LCA3MCwgNDgsIDQ5LCA1MywgMTI4LCA3MCwgNDgsIDQ5LCA1MiwgMTI4LCAKLSAgICA3MCwgNDgsIDQ5LCA1MSwgNjUsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDEyOCwgNzAsIDQ4LCA0OSwgNTAsIDEyOCwgNzAsIAotICAgIDQ4LCA0OSwgNDksIDEyOCwgNzAsIDQ4LCA0OSwgNDgsIDEyOCwgNzAsIDQ4LCA0OCwgNTcsIDEyOCwgNzAsIDQ4LCA0OCwgCi0gICAgNTYsIDEyOCwgNzAsIDQ4LCA0OCwgNTUsIDEyOCwgNzAsIDQ4LCA0OCwgNTQsIDEyOCwgNzAsIDQ4LCA0OCwgNTMsIDEyOCwgCi0gICAgNzAsIDQ4LCA0OCwgNTIsIDEyOCwgNzAsIDQ4LCA0OCwgNTEsIDEyOCwgNzAsIDQ4LCA0OCwgNTAsIDEyOCwgNzAsIDQ4LCAKLSAgICA0OCwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNDgsIDQ5LCAxMjgsIDY5LCA5MCwgMjAwLCA2OSwgOTAsIDY5LCA3OCwgMTI4LCAKLSAgICA2OSwgOTAsIDY5LCAyMDYsIDY5LCA5MCwgMTI4LCA2OSwgODksIDY5LCA4MywgMTI4LCA2OSwgODksIDY5LCA3MSwgNzYsIAotICAgIDY1LCA4MywgODMsIDY5LCA4MywgMTI4LCA2OSwgODksIDY2LCA2OSwgODksIDcwLCA3MywgNzYsIDczLCAxMjgsIDY5LCA4OSwgCi0gICAgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIDg4LCA4NCwgODIsIDY1LCA4NCwgNjksIDgyLCA4MiwgNjksIDgzLCA4NCwgODIsIAotICAgIDczLCA2NSwgMjA0LCA2OSwgODgsIDg0LCA4MiwgNjUsIDQ1LCA3NiwgNzksIDIxNSwgNjksIDg4LCA4NCwgODIsIDY1LCA0NSwgCi0gICAgNzIsIDczLCA3MSwgMjAwLCA2OSwgODgsIDg0LCA2OSwgNzgsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgODQsIDY5LCAKLSAgICA3OCwgNjgsIDY5LCAxOTYsIDY5LCA4OCwgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCA3NiwgNjksIDgzLCAyMTEsIAotICAgIDY5LCA4OCwgODAsIDc5LCA3OCwgNjksIDc4LCAyMTIsIDY5LCA4OCwgNzksIDEyOCwgNjksIDg4LCAyMDcsIDY5LCA4OCwgCi0gICAgNzMsIDgzLCA4NCwgODMsIDEyOCwgNjksIDg4LCA3MywgODMsIDg0LCAxMjgsIDY5LCA4OCwgNzIsIDY1LCA4NSwgODMsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIAotICAgIDY3LCA3NiwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2OSwgODgsIDY3LCA3MiwgNjUsIDc4LCA3MSwgNjksIDEyOCwgCi0gICAgNjksIDg4LCA2NywgNjksIDgzLCA4MywgMTI4LCA2OSwgODgsIDY3LCA2OSwgNzYsIDc2LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCAKLSAgICA4NywgNjksIDEyOCwgNjksIDg2LCA2OSwgODIsIDcxLCA4MiwgNjksIDY5LCAyMDYsIDY5LCA4NiwgNjksIDc4LCA3MywgNzgsIAotICAgIDcxLCAxMjgsIDY5LCA4NSwgODIsIDc5LCA4MCwgNjksIDY1LCAyMDYsIDY5LCA4NSwgODIsIDc5LCA4MCwgNjksIDQ1LCA2NSwgCi0gICAgNzAsIDgyLCA3MywgNjcsIDY1LCAxMjgsIDY5LCA4NSwgODIsIDc5LCA0NSwgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgNjcsIAotICAgIDIxNywgNjksIDg1LCA4MiwgMjA3LCA2OSwgODUsIDc2LCA2OSwgMjEwLCA2OSwgODUsIDQ1LCA4NSwgMTI4LCA2OSwgODUsIAotICAgIDQ1LCA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDY5LCA4NSwgCi0gICAgNDUsIDY5LCAxMjgsIDY5LCA4NSwgNDUsIDY1LCAxMjgsIDY5LCA4NCwgODgsIDEyOCwgNjksIDg0LCA3OCwgNjUsIDcyLCAKLSAgICA4NCwgNjUsIDEyOCwgNjksIDg0LCA3MiwgNjksIDIwNCwgNjksIDg0LCA2OSwgODIsIDc5LCAyMDYsIDY5LCA4NCwgNjksIAotICAgIDgyLCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA2OSwgODQsIDY2LCAxMjgsIDY5LCA4MywgODUsIDc1LCA4NSwgODUsIDY4LCA3OSwgCi0gICAgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjksIDgzLCAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCAKLSAgICA2OSwgMTk2LCA2OSwgODMsIDcyLCA2OSwgNTEsIDEyOCwgNjksIDgzLCA3MiwgNTAsIDQ5LCAxMjgsIDY5LCA4MywgNzIsIAotICAgIDE3OCwgNjksIDgzLCA3MiwgNDksIDU0LCAxMjgsIDY5LCA4MywgNjcsIDY1LCA4MCwgNjksIDEyOCwgNjksIDgzLCA2NywgCi0gICAgMTI4LCA2OSwgODMsIDY1LCAxMjgsIDY5LCA4MywgNDUsIDg0LCA2OSwgMTI4LCA2OSwgODIsIDgyLCA3OSwgODIsIDQ1LCAKLSAgICA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NiwgNjksIDgyLCA4MiwgMTI4LCA2OSwgODIsIDczLCA3OCwgNTAsIDEyOCwgNjksIAotICAgIDgyLCA3MSwgMTI4LCA2OSwgODIsIDY1LCA4MywgMTk3LCA2OSwgODEsIDg1LCA3MywgODYsIDY1LCA3NiwgNjksIDc4LCAKLSAgICAyMTIsIDY5LCA4MSwgODUsIDczLCA2OCwgMTI4LCA2OSwgODEsIDg1LCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgCisgICAgNjksIDY2LCAxOTMsIDcxLCA2OSwgNjUsIDgyLCAxMjgsIDcxLCA2OSwgNjUsIDIxMCwgNzEsIDY5LCA1MCwgNTAsIDEyOCwgCisgICAgNzEsIDY4LCA2NSwgNzgsIDEyOCwgNzEsIDY3LCA3MywgNzEsIDEyOCwgNzEsIDY3LCA2NSwgMjA2LCA3MSwgNjYsIDc5LCAKKyAgICA3OCwgMTI4LCA3MSwgNjYsIDczLCA2OSwgMTk3LCA3MSwgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzEsIDY2LCA2OSwgODQsIAorICAgIDEyOCwgNzEsIDY2LCA2NSwgODksIDczLCAxMjgsIDcxLCA2NiwgNjUsIDc1LCA4NSwgODIsIDg1LCA3OCwgNjksIDc4LCAKKyAgICAxMjgsIDcxLCA2NiwgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIDg1LCA3NSwgNzMsIDg0LCA4NCwgNjUsIDEyOCwgNzEsIAorICAgIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgMTI4LCA3MSwgNjUsIDg1LCA3OCwgODQsIDc2LCA2OSwgCisgICAgODQsIDEyOCwgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCAKKyAgICA3MywgNzgsIDE5OSwgNzEsIDY1LCA4NCwgNjksIDEyOCwgNzEsIDY1LCA4MywgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNjUsIAorICAgIDgyLCA4MywgNzIsIDg1LCA3OCwgNzMsIDEyOCwgNzEsIDY1LCA4MiwgNzksIDc4LCAxMjgsIDcxLCA2NSwgODIsIDc3LCA2OSwgCisgICAgNzgsIDg0LCAxMjgsIDcxLCA2NSwgODIsIDY4LCA2OSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgNTEsIDEyOCwgNzEsIDY1LCAKKyAgICA4MCwgODAsIDY5LCAxOTYsIDcxLCA2NSwgMjA4LCA3MSwgNjUsIDc4LCA3NywgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNzEsIAorICAgIDczLCA2NSwgMTI4LCA3MSwgNjUsIDc4LCA2OCwgMTkzLCA3MSwgNjUsIDc4LCA1MCwgMTI4LCA3MSwgNjUsIDc4LCAxNzgsIAorICAgIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA3MSwgNjUsIDc3LCA3NiwgNjUsIDEyOCwgNzEsIDY1LCA3NywgNzYsIDEyOCwgCisgICAgNzEsIDY1LCA3NywgNjksIDEyOCwgNzEsIDY1LCA3NywgMTk3LCA3MSwgNjUsIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDY1LCAKKyAgICA3NywgNjUsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY1LCAyMDQsIDcxLCA2NSwgNzEsIDEyOCwgNzEsIDY1LCA3MCwgMTI4LCAKKyAgICA3MSwgNjUsIDE5OCwgNzEsIDY1LCA2OSwgODQsIDg0LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIAorICAgIDY4LCA3OSwgNzYsIDEyOCwgNzEsIDY1LCA2OCwgMTI4LCA3MSwgNjUsIDE5NiwgNzEsIDY1LCA2NiwgNjUsIDEyOCwgNzEsIAorICAgIDY1LCA2NiwgMTkzLCA3MSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzEsIDY1LCAxNzgsIDcxLCA0OCwgNTMsIDUyLCAxMjgsIAorICAgIDcxLCA0OCwgNTMsIDUxLCAxMjgsIDcxLCA0OCwgNTMsIDUwLCAxMjgsIDcxLCA0OCwgNTMsIDQ5LCAxMjgsIDcxLCA0OCwgCisgICAgNTMsIDQ4LCAxMjgsIDcxLCA0OCwgNTIsIDU3LCAxMjgsIDcxLCA0OCwgNTIsIDU2LCAxMjgsIDcxLCA0OCwgNTIsIDU1LCAKKyAgICAxMjgsIDcxLCA0OCwgNTIsIDU0LCAxMjgsIDcxLCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MywgMTI4LCAKKyAgICA3MSwgNDgsIDUyLCA1MiwgMTI4LCA3MSwgNDgsIDUyLCA1MSwgNjUsIDEyOCwgNzEsIDQ4LCA1MiwgNTEsIDEyOCwgNzEsIAorICAgIDQ4LCA1MiwgNTAsIDEyOCwgNzEsIDQ4LCA1MiwgNDksIDEyOCwgNzEsIDQ4LCA1MiwgNDgsIDEyOCwgNzEsIDQ4LCA1MSwgCisgICAgNTcsIDEyOCwgNzEsIDQ4LCA1MSwgNTYsIDEyOCwgNzEsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU1LCAKKyAgICAxMjgsIDcxLCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDUxLCA1NCwgMTI4LCA3MSwgNDgsIDUxLCA1MywgMTI4LCAKKyAgICA3MSwgNDgsIDUxLCA1MiwgMTI4LCA3MSwgNDgsIDUxLCA1MSwgMTI4LCA3MSwgNDgsIDUxLCA1MCwgMTI4LCA3MSwgNDgsIAorICAgIDUxLCA0OSwgMTI4LCA3MSwgNDgsIDUxLCA0OCwgMTI4LCA3MSwgNDgsIDUwLCA1NywgMTI4LCA3MSwgNDgsIDUwLCA1NiwgCisgICAgMTI4LCA3MSwgNDgsIDUwLCA1NSwgMTI4LCA3MSwgNDgsIDUwLCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIDEyOCwgCisgICAgNzEsIDQ4LCA1MCwgNTMsIDEyOCwgNzEsIDQ4LCA1MCwgNTIsIDEyOCwgNzEsIDQ4LCA1MCwgNTEsIDEyOCwgNzEsIDQ4LCAKKyAgICA1MCwgNTAsIDEyOCwgNzEsIDQ4LCA1MCwgNDksIDEyOCwgNzEsIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDcxLCA0OCwgNTAsIAorICAgIDQ4LCAxMjgsIDcxLCA0OCwgNDksIDU3LCAxMjgsIDcxLCA0OCwgNDksIDU2LCAxMjgsIDcxLCA0OCwgNDksIDU1LCAxMjgsIAorICAgIDcxLCA0OCwgNDksIDU0LCAxMjgsIDcxLCA0OCwgNDksIDUzLCAxMjgsIDcxLCA0OCwgNDksIDUyLCAxMjgsIDcxLCA0OCwgCisgICAgNDksIDUxLCAxMjgsIDcxLCA0OCwgNDksIDUwLCAxMjgsIDcxLCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MSwgNDgsIDQ5LCAKKyAgICA0OSwgMTI4LCA3MSwgNDgsIDQ5LCA0OCwgMTI4LCA3MSwgNDgsIDQ4LCA1NywgMTI4LCA3MSwgNDgsIDQ4LCA1NiwgMTI4LCAKKyAgICA3MSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCAxMjgsIAorICAgIDcxLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NCwgMTI4LCA3MSwgNDgsIDQ4LCA1MywgMTI4LCA3MSwgCisgICAgNDgsIDQ4LCA1MiwgMTI4LCA3MSwgNDgsIDQ4LCA1MSwgMTI4LCA3MSwgNDgsIDQ4LCA1MCwgMTI4LCA3MSwgNDgsIDQ4LCAKKyAgICA0OSwgMTI4LCA3MCwgODksIDg4LCAxMjgsIDcwLCA4OSwgODQsIDEyOCwgNzAsIDg5LCA4MCwgMTI4LCA3MCwgODksIDY1LCAKKyAgICAxMjgsIDcwLCA4NywgNzMsIDEyOCwgNzAsIDg3LCA2OSwgNjksIDEyOCwgNzAsIDg3LCA2OSwgMTI4LCA3MCwgODcsIDY1LCAKKyAgICA2NSwgMTI4LCA3MCwgODcsIDY1LCAxMjgsIDcwLCA4NiwgODMsIDUxLCAxMjgsIDcwLCA4NiwgODMsIDUwLCAxMjgsIDcwLCAKKyAgICA4NiwgODMsIDQ5LCAxMjgsIDcwLCA4NSwgODgsIDEyOCwgNzAsIDg1LCA4NCwgMTI4LCA3MCwgODUsIDgzLCA2OSwgMTI4LCAKKyAgICA3MCwgODUsIDgzLCAxOTMsIDcwLCA4NSwgODIsIDg4LCAxMjgsIDcwLCA4NSwgODAsIDEyOCwgNzAsIDg1LCA3OCwgNjksIAorICAgIDgyLCA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgMTI4LCA3MCwgODUsIDc2LCA3NiwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDg1LCA3NiwgMjA0LCAKKyAgICA3MCwgODUsIDc0LCA3MywgMTI4LCA3MCwgODUsIDY5LCA4NCwgMTI4LCA3MCwgODUsIDY5LCAyMDQsIDcwLCA4NSwgNjksIAorICAgIDEyOCwgNzAsIDg1LCA2NSwgMTI4LCA3MCwgODQsIDcyLCA3OSwgODIsIDE5MywgNzAsIDgzLCA3MywgMTI4LCA3MCwgODIsIAorICAgIDc5LCA4NywgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDgyLCA3OSwgODcsIDc4LCA3MywgNzgsIDE5OSwgNzAsIDgyLCA3OSwgCisgICAgODcsIDc4LCAxMjgsIDcwLCA4MiwgNzksIDg3LCAyMDYsIDcwLCA4MiwgNzksIDc4LCA4NCwgNDUsIDg0LCA3MywgNzYsIDg0LCAKKyAgICA2OSwgMTk2LCA3MCwgODIsIDc5LCA3OCwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzAsIDgyLCA3OSwgNzgsIAorICAgIDIxMiwgNzAsIDgyLCA3OSwgMjA1LCA3MCwgODIsIDc5LCA3MSwgMTI4LCA3MCwgODIsIDc5LCAxOTksIDcwLCA4MiwgNzMsIAorICAgIDg0LCA4NSwgMTI4LCA3MCwgODIsIDczLCA2OSwgODMsIDEyOCwgNzAsIDgyLCA3MywgNjksIDE5NiwgNzAsIDgyLCA3MywgCisgICAgNjcsIDY1LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3MCwgODIsIDY5LCA4NCwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDcwLCAKKyAgICA4MiwgNjksIDc4LCA2NywgMjAwLCA3MCwgODIsIDY5LCA2OSwgMTI4LCA3MCwgODIsIDY5LCAxOTcsIDcwLCA4MiwgNjUsIAorICAgIDc4LCA3NSwgMjExLCA3MCwgODIsIDY1LCA3OCwgMTk1LCA3MCwgODIsIDY1LCA3NywgNjksIDgzLCAxMjgsIDcwLCA4MiwgCisgICAgNjUsIDc3LCA2OSwgMTI4LCA3MCwgODIsIDY1LCA3NywgMTk3LCA3MCwgODIsIDY1LCA3MSwgODIsIDY1LCA3OCwgODQsIAorICAgIDEyOCwgNzAsIDgyLCA2NSwgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDcwLCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDcwLCA3OSwgODgsIDEyOCwgNzAsIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDcwLCA3OSwgODUsIAorICAgIDgyLCA4NCwgNjksIDY5LCAyMDYsIDcwLCA3OSwgODUsIDgyLCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgCisgICAgNzksIDg1LCA4MiwgNDUsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA3MCwgNzksIDg1LCA4MiwgNDUsIDgwLCA2OSwgODIsIAorICAgIDQ1LCA2OSwgMjA1LCA3MCwgNzksIDg1LCA4MiwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzAsIDc5LCA4NSwgMjEwLCA3MCwgCisgICAgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDEyOCwgNzAsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNzAsIDc5LCAKKyAgICA4MywgODQsIDY5LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA4NywgNjUsIDgyLCA2OCwgMTI4LCA3MCwgNzksIAorICAgIDgyLCA4NywgNjUsIDgyLCAxOTYsIDcwLCA3OSwgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzksIDgyLCA4NCwgMjE3LCA3MCwgCisgICAgNzksIDgyLCA4NCwgNjksIDEyOCwgNzAsIDc5LCA4MiwgNzcsIDIxMSwgNzAsIDc5LCA4MiwgNzcsIDY1LCA4NCwgODQsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgNzcsIDY1LCAyMTIsIDcwLCA3OSwgODIsIDc1LCA2OSwgMTk2LCA3MCwgNzksIAorICAgIDgyLCA2OSwgNzIsIDY5LCA2NSwgMTk2LCA3MCwgNzksIDgyLCA2NywgNjksIDgzLCAxMjgsIDcwLCA3OSwgODIsIDY3LCA2OSwgCisgICAgMTI4LCA3MCwgNzksIDgwLCAxMjgsIDcwLCA3OSwgNzksIDg0LCA4MywgODQsIDc5LCA3OSwgNzYsIDEyOCwgNzAsIDc5LCAKKyAgICA3OSwgODQsIDgwLCA4MiwgNzMsIDc4LCA4NCwgODMsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDc4LCA3OSwgODQsIDE5NywgNzAsIAorICAgIDc5LCA3OSwgODQsIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDcwLCA3OSwgNzksIDg0LCAxMjgsIDcwLCA3OSwgNzksIDc2LCAKKyAgICAxMjgsIDcwLCA3OSwgNzksIDY4LCAxMjgsIDcwLCA3OSwgNzksIDEyOCwgNzAsIDc5LCA3OCwgMjEyLCA3MCwgNzksIDc4LCAKKyAgICA3MSwgNzcsIDY1LCA3OCwgMTI4LCA3MCwgNzksIDc3LCAxMjgsIDcwLCA3OSwgNzYsIDc2LCA4OSwgMTI4LCA3MCwgNzksIAorICAgIDc2LCA3NiwgNzksIDg3LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgNzYsIDY4LCA2OSwgODIsIDEyOCwgNzAsIDc5LCA3NiwgCisgICAgNjgsIDY5LCAxOTYsIDcwLCA3OSwgNzEsIDcxLCA4OSwgMTI4LCA3MCwgNzksIDcxLCAxMjgsIDcwLCAyMDcsIDcwLCA3NywgCisgICAgMTI4LCA3MCwgNzYsIDg5LCA3MywgNzgsIDE5OSwgNzAsIDc2LCA4OSwgMTI4LCA3MCwgNzYsIDg1LCA4NCwgODQsIDY5LCAKKyAgICA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzYsIDg1LCA4NCwgODQsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3NiwgODUsIAorICAgIDg0LCA2OSwgMTI4LCA3MCwgNzYsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcwLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgCisgICAgNzAsIDc2LCA3OSwgODcsIDY5LCA4MiwgODMsIDEyOCwgNzAsIDc2LCA3OSwgODcsIDY5LCAyMTAsIDcwLCA3NiwgNzksIDg1LCAKKyAgICA4MiwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjksIDg0LCA4NCwgNjksIDEyOCwgNzAsIDc2LCA3OSwgODIsIAorICAgIDY1LCAyMDQsIDcwLCA3NiwgNzksIDgwLCA4MCwgMjE3LCA3MCwgNzYsIDc5LCA3OSwgODIsIDEyOCwgNzAsIDc2LCA3OSwgCisgICAgNzksIDIxMCwgNzAsIDc2LCA3MywgODAsIDEyOCwgNzAsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgNzYsIDczLCAKKyAgICA2NywgMjAzLCA3MCwgNzYsIDY5LCA4OCwgODUsIDgzLCAxMjgsIDcwLCA3NiwgNjksIDg4LCA2OSwgMTk2LCA3MCwgNzYsIAorICAgIDY5LCA4OCwgMTI4LCA3MCwgNzYsIDY5LCA4NSwgODIsIDc5LCA3OCwgMTI4LCA3MCwgNzYsIDY5LCA4NSwgODIsIDQ1LCA2OCwgCisgICAgNjksIDQ1LCA3NiwgNzMsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDg0LCA4NCwgNjksIDc4LCA2OSwgMTk2LCA3MCwgNzYsIDY1LCAKKyAgICA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA4MywgCisgICAgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUzLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTIsIDEyOCwgNzAsIDc2LCAKKyAgICA2NSwgNzEsIDQ1LCA1MSwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUwLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNDksIAorICAgIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDEyOCwgNzAsIDc2LCA2NSwgMTk5LCA3MCwgNzYsIDY1LCAxMjgsIDcwLCA3NiwgMTI4LCAKKyAgICA3MCwgNzMsIDg4LCA2OSwgNjgsIDQ1LCA3MCwgNzksIDgyLCAyMDUsIDcwLCA3MywgODgsIDEyOCwgNzAsIDczLCA4NiwgNjksIAorICAgIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3MywgODYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgCisgICAgNzMsIDg2LCAxOTcsIDcwLCA3MywgODQsIDkwLCA4MCwgNjUsIDg0LCA4MiwgNzMsIDY3LCAyMDMsIDcwLCA3MywgODQsIDY1LCAKKyAgICAxMjgsIDcwLCA3MywgODQsIDEyOCwgNzAsIDczLCA4MywgODQsIDY5LCAxOTYsIDcwLCA3MywgODMsIDcyLCA3MywgNzgsIAorICAgIDE5OSwgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCAKKyAgICAyMDMsIDcwLCA3MywgODMsIDcyLCA2OSwgODksIDY5LCAxMjgsIDcwLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3MywgODMsIAorICAgIDIwMCwgNzAsIDczLCA4MiwgODMsIDIxMiwgNzAsIDczLCA4MiwgNzMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgCisgICAgODIsIDc1LCA4MywgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCA4MiwgMjAzLCA3MCwgNzMsIDgyLCA2OSwgMTI4LCAKKyAgICA3MCwgNzMsIDgyLCAxOTcsIDcwLCA3MywgODAsIDEyOCwgNzAsIDczLCA3OCwgNzMsIDg0LCAxOTcsIDcwLCA3MywgNzgsIAorICAgIDcxLCA2OSwgODIsIDgzLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDIxMSwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgCisgICAgNzgsIDY1LCA3MywgNzYsIDgzLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDY5LCAxOTYsIDcwLCA3MywgNzgsIDcxLCAKKyAgICA2OSwgODIsIDQ1LCA4MCwgNzksIDgzLCAyMTIsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDEyOCwgNzAsIDczLCA3OCwgNzEsIAorICAgIDY5LCAyMTAsIDcwLCA3MywgNzgsIDY1LCA3OCwgNjcsIDczLCA2NSwgNzYsIDEyOCwgNzAsIDczLCA3OCwgNjUsIDc2LCAKKyAgICAxMjgsIDcwLCA3MywgNzYsIDIwNSwgNzAsIDczLCA3NiwgNzYsIDY5LCA4MiwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIAorICAgIDE5NiwgNzAsIDczLCA3NiwgNzYsIDEyOCwgNzAsIDczLCA3NiwgMjA0LCA3MCwgNzMsIDc2LCAxOTcsIDcwLCA3MywgNzMsIAorICAgIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUxLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA1MCwgCisgICAgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNDksIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCAxOTcsIDcwLCAKKyAgICA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgODksIDEyOCwgNzAsIDczLCA3MCwgODQsIDIxNywgNzAsIAorICAgIDczLCA3MCwgODQsIDcyLCA4MywgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNzIsIDEyOCwgNzAsIDczLCA3MCwgODQsIDY5LCA2OSwgCisgICAgNzgsIDEyOCwgNzAsIDczLCA3MCwgODQsIDY5LCA2OSwgMjA2LCA3MCwgNzMsIDY5LCA3NiwgNjgsIDEyOCwgNzAsIDczLCAKKyAgICA2OSwgNzYsIDE5NiwgNzAsIDcyLCA4NCwgNzksIDgyLCAxOTMsIDcwLCA3MCwgNzYsIDEyOCwgNzAsIDcwLCA3MywgMTI4LCAKKyAgICA3MCwgNjksIDg1LCA4OCwgMTI4LCA3MCwgNjksIDg1LCA3MCwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDcwLCA2OSwgODMsIAorICAgIDg0LCA3MywgODYsIDY1LCA3NiwgMTI4LCA3MCwgNjksIDgyLCA4MiwgODksIDEyOCwgNzAsIDY5LCA4MiwgODIsIDczLCAKKyAgICAyMTEsIDcwLCA2OSwgODIsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDcwLCA2OSwgODIsIDc3LCA2NSwgODQsIDE5MywgNzAsIAorICAgIDY5LCA3OSwgMjAwLCA3MCwgNjksIDc4LCAxOTksIDcwLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA3MCwgNjksIDc3LCA3MywgCisgICAgNzgsIDczLCA3OCwgMTk3LCA3MCwgNjksIDc3LCA2NSwgNzYsIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDY1LCA3NiwgMTk3LCAKKyAgICA3MCwgNjksIDc2LCA3NiwgNzksIDg3LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3MCwgNjksIDczLCAxMjgsIDcwLCA2OSwgNzIsIAorICAgIDIxMywgNzAsIDY5LCA3MiwgMTI4LCA3MCwgNjksIDIwMCwgNzAsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDcwLCA2OSwgNjksIAorICAgIDc3LCAxMjgsIDcwLCA2OSwgNjksIDY4LCAxMjgsIDcwLCA2OSwgNjksIDE5NiwgNzAsIDY5LCA2OSwgMTI4LCA3MCwgNjksIAorICAgIDY2LCA4MiwgODUsIDY1LCA4MiwgODksIDEyOCwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzAsIDY5LCA2NSwgCisgICAgODQsIDcyLCA2OSwgMjEwLCA3MCwgNjksIDY1LCA4MiwgNzgsIDEyOCwgNzAsIDY5LCA2NSwgODIsIDcwLCA4NSwgMjA0LCAKKyAgICA3MCwgNjksIDY1LCA4MiwgMTI4LCA3MCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MCwgNjUsIDg5LCAxMjgsIAorICAgIDcwLCA2NSwgODgsIDEyOCwgNzAsIDY1LCAyMTYsIDcwLCA2NSwgODQsIDczLCA3MSwgODUsIDY5LCAxMjgsIDcwLCA2NSwgCisgICAgODQsIDcyLCA2OSwgODIsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCAKKyAgICA3OCwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjUsIDg0LCA2NSwgMjA2LCA3MCwgNjUsIDg0LCA3MiwgNjUsIDEyOCwgNzAsIAorICAgIDY1LCA4NCwgNzIsIDE5MywgNzAsIDY1LCA4NCwgMTI4LCA3MCwgNjUsIDgzLCA4NCwgMTI4LCA3MCwgNjUsIDgyLCA4MywgCisgICAgMjAxLCA3MCwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODEsIDEyOCwgNzAsIDY1LCA4MCwgMTI4LCA3MCwgNjUsIDc4LCA3MSwgCisgICAgMTI4LCA3MCwgNjUsIDc4LCA2OSwgODIsIDc5LCA4MywgNzMsIDIxMSwgNzAsIDY1LCA3OCwgMTI4LCA3MCwgNjUsIDc3LCAKKyAgICA3MywgNzYsIDg5LCAxMjgsIDcwLCA2NSwgNzcsIDEyOCwgNzAsIDY1LCA3NiwgNzYsIDY5LCAyMDYsIDcwLCA2NSwgNzQsIAorICAgIDEyOCwgNzAsIDY1LCA3MywgNzYsIDg1LCA4MiwgNjksIDEyOCwgNzAsIDY1LCA3MywgNzIsIDg1LCAxMjgsIDcwLCA2NSwgCisgICAgNzMsIDY2LCAxMjgsIDcwLCA2NSwgNzIsIDgyLCA2OSwgNzgsIDcyLCA2OSwgNzMsIDg0LCAxMjgsIDcwLCA2NSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDg5LCAxMjgsIDcwLCA2NSwgNjcsIDg0LCA3OSwgMjEwLCA3MCwgNjUsIDY3LCA4MywgNzMsIDc3LCA3MywgNzYsIAorICAgIDE5NywgNzAsIDY1LCA2NywgNzMsIDc4LCA3MSwgODMsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1NCwgMTI4LCA3MCwgCisgICAgNjUsIDY3LCA2OSwgNDUsIDUzLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTIsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCAKKyAgICA1MSwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUwLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNDksIDEyOCwgNzAsIAorICAgIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MCwgNjUsIDY1LCA3MywgMTI4LCA3MCwgNjUsIDY1LCA3MCwgODUsIDEyOCwgCisgICAgNzAsIDQ4LCA1MywgNTEsIDEyOCwgNzAsIDQ4LCA1MywgNTAsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY3LCAxMjgsIDcwLCAKKyAgICA0OCwgNTMsIDQ5LCA2NiwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDEyOCwgNzAsIAorICAgIDQ4LCA1MywgNDgsIDEyOCwgNzAsIDQ4LCA1MiwgNTcsIDEyOCwgNzAsIDQ4LCA1MiwgNTYsIDEyOCwgNzAsIDQ4LCA1MiwgCisgICAgNTUsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCAxMjgsIDcwLCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA3MCwgNDgsIDUyLCAKKyAgICA1NCwgMTI4LCA3MCwgNDgsIDUyLCA1MywgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTMsIDEyOCwgNzAsIDQ4LCA1MiwgNTIsIAorICAgIDEyOCwgNzAsIDQ4LCA1MiwgNTEsIDEyOCwgNzAsIDQ4LCA1MiwgNTAsIDEyOCwgNzAsIDQ4LCA1MiwgNDksIDEyOCwgNzAsIAorICAgIDQ4LCA1MiwgNDgsIDEyOCwgNzAsIDQ4LCA1MSwgNTcsIDEyOCwgNzAsIDQ4LCA1MSwgNTYsIDY1LCAxMjgsIDcwLCA0OCwgCisgICAgNTEsIDU2LCAxMjgsIDcwLCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA1NSwgMTI4LCA3MCwgNDgsIDUxLCAKKyAgICA1NCwgMTI4LCA3MCwgNDgsIDUxLCA1MywgMTI4LCA3MCwgNDgsIDUxLCA1MiwgMTI4LCA3MCwgNDgsIDUxLCA1MSwgMTI4LCAKKyAgICA3MCwgNDgsIDUxLCA1MCwgMTI4LCA3MCwgNDgsIDUxLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNDksIDEyOCwgNzAsIAorICAgIDQ4LCA1MSwgNDgsIDEyOCwgNzAsIDQ4LCA1MCwgNTcsIDEyOCwgNzAsIDQ4LCA1MCwgNTYsIDEyOCwgNzAsIDQ4LCA1MCwgCisgICAgNTUsIDEyOCwgNzAsIDQ4LCA1MCwgNTQsIDEyOCwgNzAsIDQ4LCA1MCwgNTMsIDEyOCwgNzAsIDQ4LCA1MCwgNTIsIDEyOCwgCisgICAgNzAsIDQ4LCA1MCwgNTEsIDEyOCwgNzAsIDQ4LCA1MCwgNTAsIDEyOCwgNzAsIDQ4LCA1MCwgNDksIDY1LCAxMjgsIDcwLCAKKyAgICA0OCwgNTAsIDQ5LCAxMjgsIDcwLCA0OCwgNTAsIDQ4LCAxMjgsIDcwLCA0OCwgNDksIDU3LCAxMjgsIDcwLCA0OCwgNDksIAorICAgIDU2LCAxMjgsIDcwLCA0OCwgNDksIDU1LCAxMjgsIDcwLCA0OCwgNDksIDU0LCAxMjgsIDcwLCA0OCwgNDksIDUzLCAxMjgsIAorICAgIDcwLCA0OCwgNDksIDUyLCAxMjgsIDcwLCA0OCwgNDksIDUxLCA2NSwgMTI4LCA3MCwgNDgsIDQ5LCA1MSwgMTI4LCA3MCwgCisgICAgNDgsIDQ5LCA1MCwgMTI4LCA3MCwgNDgsIDQ5LCA0OSwgMTI4LCA3MCwgNDgsIDQ5LCA0OCwgMTI4LCA3MCwgNDgsIDQ4LCAKKyAgICA1NywgMTI4LCA3MCwgNDgsIDQ4LCA1NiwgMTI4LCA3MCwgNDgsIDQ4LCA1NSwgMTI4LCA3MCwgNDgsIDQ4LCA1NCwgMTI4LCAKKyAgICA3MCwgNDgsIDQ4LCA1MywgMTI4LCA3MCwgNDgsIDQ4LCA1MiwgMTI4LCA3MCwgNDgsIDQ4LCA1MSwgMTI4LCA3MCwgNDgsIAorICAgIDQ4LCA1MCwgMTI4LCA3MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA0OCwgNDksIDEyOCwgNjksIDkwLCA4MywgCisgICAgMTI4LCA2OSwgOTAsIDIwMCwgNjksIDkwLCA2OSwgNzgsIDEyOCwgNjksIDkwLCA2OSwgMjA2LCA2OSwgOTAsIDEyOCwgNjksIAorICAgIDg5LCA4OSwgODksIDEyOCwgNjksIDg5LCA2OSwgODMsIDEyOCwgNjksIDg5LCA2OSwgMjExLCA2OSwgODksIDY5LCA3NiwgCisgICAgNjUsIDgzLCA3MiwgNjksIDIxMSwgNjksIDg5LCA2OSwgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgNjksIDg5LCAKKyAgICA2OSwgNzEsIDY1LCA5MCwgNjksIDQ1LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNjksIDg5LCA2OSwgCisgICAgNzEsIDY1LCA5MCwgNjksIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDY5LCA4OSwgNjksIAorICAgIDY2LCA4MiwgNzksIDg3LCAyMTEsIDY5LCA4OSwgMTk3LCA2OSwgODksIDY2LCA2OSwgODksIDcwLCA3MywgNzYsIDczLCAKKyAgICAxMjgsIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIDg4LCA4NCwgODIsIDY5LCA3NywgNjksIDc2LCAyMTcsIAorICAgIDY5LCA4OCwgODQsIDgyLCA2NSwgODQsIDY5LCA4MiwgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIDIwNCwgNjksIDg4LCAKKyAgICA4NCwgODIsIDY1LCA0NSwgNzYsIDc5LCAyMTUsIDY5LCA4OCwgODQsIDgyLCA2NSwgNDUsIDcyLCA3MywgNzEsIDIwMCwgNjksIAorICAgIDg4LCA4NCwgODIsIDE5MywgNjksIDg4LCA4NCwgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDg0LCA2OSwgCisgICAgNzgsIDY4LCA2OSwgNjgsIDEyOCwgNjksIDg4LCA4NCwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjksIDg4LCA4MCwgODIsIDY5LCAKKyAgICA4MywgODMsIDczLCA3OSwgNzgsIDc2LCA2OSwgODMsIDIxMSwgNjksIDg4LCA4MCwgNzksIDc4LCA2OSwgNzgsIDIxMiwgNjksIAorICAgIDg4LCA3OSwgMTI4LCA2OSwgODgsIDIwNywgNjksIDg4LCA3MywgODMsIDg0LCA4MywgMTI4LCA2OSwgODgsIDczLCA4MywgCisgICAgODQsIDEyOCwgNjksIDg4LCA3MiwgNjUsIDg1LCA4MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA3MiwgNjUsIDc2LCAKKyAgICA2OSwgMTI4LCA2OSwgODgsIDY3LCA3NiwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA2NywgNzYsIAorICAgIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjksIDg4LCA2NywgNzMsIDg0LCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgCisgICAgNjksIDg4LCA2NywgNzIsIDY1LCA3OCwgNzEsIDY5LCAxMjgsIDY5LCA4OCwgNjcsIDY5LCA4MywgODMsIDEyOCwgNjksIDg4LCAKKyAgICA2NywgNjksIDc2LCA3NiwgNjksIDc4LCA4NCwgMTI4LCA2OSwgODcsIDY5LCAxMjgsIDY5LCA4NiwgNjksIDgyLCAyMTcsIAorICAgIDY5LCA4NiwgNjksIDgyLCA3MSwgODIsIDY5LCA2OSwgMjA2LCA2OSwgODYsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OSwgCisgICAgODUsIDgyLCA3OSwgODAsIDY5LCA2NSwgMjA2LCA2OSwgODUsIDgyLCA3OSwgODAsIDY5LCA0NSwgNjUsIDcwLCA4MiwgNzMsIAorICAgIDY3LCA2NSwgMTI4LCA2OSwgODUsIDgyLCA3OSwgNDUsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDY3LCAyMTcsIDY5LCA4NSwgCisgICAgODIsIDIwNywgNjksIDg1LCA3NiwgNjksIDIxMCwgNjksIDg1LCA0NSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNzksIDEyOCwgCisgICAgNjksIDg1LCA0NSwgNjksIDg1LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgMTI4LCAKKyAgICA2OSwgODUsIDQ1LCA2NSwgMTI4LCA2OSwgODQsIDg4LCAxMjgsIDY5LCA4NCwgNzgsIDY1LCA3MiwgODQsIDY1LCAxMjgsIAorICAgIDY5LCA4NCwgNzIsIDY5LCAyMDQsIDY5LCA4NCwgNjksIDgyLCA3OSwgMjA2LCA2OSwgODQsIDY5LCA4MiwgNzgsIDczLCA4NCwgCisgICAgODksIDEyOCwgNjksIDg0LCA2OSwgODIsIDc4LCA3MywgODQsIDIxNywgNjksIDg0LCA2NiwgMTI4LCA2OSwgODMsIDkwLCAKKyAgICAxMjgsIDY5LCA4MywgODUsIDc1LCA4NSwgODUsIDY4LCA3OSwgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjksIAorICAgIDgzLCAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCA2OSwgMTk2LCA2OSwgODMsIDcyLCA2OSwgNTEsIDEyOCwgCisgICAgNjksIDgzLCA3MiwgNTAsIDQ5LCAxMjgsIDY5LCA4MywgNzIsIDQ5LCA1NCwgMTI4LCA2OSwgODMsIDY3LCA2NSwgODAsIDY5LCAKKyAgICAxMjgsIDY5LCA4MywgNjcsIDEyOCwgNjksIDgzLCA2NSwgMTI4LCA2OSwgODMsIDQ1LCA4NCwgNjksIDEyOCwgNjksIDgzLCAKKyAgICA0NSwgNTEsIDEyOCwgNjksIDgzLCA0NSwgNTAsIDEyOCwgNjksIDgzLCA0NSwgNDksIDEyOCwgNjksIDgyLCA4MiwgNzksIAorICAgIDgyLCA0NSwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTYsIDY5LCA4MiwgODIsIDEyOCwgNjksIDgyLCA3MywgNzgsIDUwLCAKKyAgICAxMjgsIDY5LCA4MiwgNzMsIDc4LCAxNzgsIDY5LCA4MiwgNzEsIDEyOCwgNjksIDgyLCA2NSwgODMsIDE5NywgNjksIDgxLCAKKyAgICA4NSwgNzMsIDg2LCA2NSwgNzYsIDY5LCA3OCwgMjEyLCA2OSwgODEsIDg1LCA3MywgNzYsIDY1LCA4NCwgNjksIDgyLCA2NSwgCisgICAgMjA0LCA2OSwgODEsIDg1LCA3MywgNjgsIDEyOCwgNjksIDgxLCA4NSwgNzMsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIAogICAgIDIxMCwgNjksIDgxLCA4NSwgNjUsIDc2LCA4MywgMTI4LCA2OSwgODEsIDg1LCA2NSwgNzYsIDIxMSwgNjksIDgxLCA4NSwgCiAgICAgNjUsIDc2LCAxMjgsIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIDc4LCAxMjgsIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIAogICAgIDIwNiwgNjksIDgwLCA3OSwgNjcsIDcyLCAxMjgsIDY5LCA4MCwgNzMsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgCiAgICAgNjksIDgwLCA3MywgNjgsIDY1LCA4NSwgODIsIDY5LCA2NSwgMjA2LCA2OSwgODAsIDY5LCA3OCwgODQsIDcyLCA2OSwgODQsIAotICAgIDczLCAxOTUsIDY5LCA4MCwgNjksIDcxLCA2OSwgODIsIDc3LCA2NSwgMTI4LCA2OSwgNzksIDg0LCAxMjgsIDY5LCA3OSwgCi0gICAgNzcsIDEyOCwgNjksIDc5LCA3NiwgNzIsIDg4LCAxMjgsIDY5LCA3OSwgNzYsIDEyOCwgNjksIDc5LCA3MiwgMTI4LCA2OSwgCi0gICAgNzgsIDg5LCAxMjgsIDY5LCA3OCwgODYsIDY5LCA3NiwgNzksIDgwLCA2OSwgMTI4LCA2OSwgNzgsIDg2LCA2OSwgNzYsIDc5LCAKLSAgICA4MCwgMTk3LCA2OSwgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2OSwgNzgsIDg0LCA4MiwgODksIAotICAgIDQ1LCA1MCwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgODksIDQ1LCA0OSwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgODksIDEyOCwgCi0gICAgNjksIDc4LCA4NCwgODIsIDIxNywgNjksIDc4LCA4NCwgNzIsIDg1LCA4MywgNzMsIDY1LCA4MywgNzcsIDEyOCwgNjksIDc4LCAKLSAgICA4NCwgNjksIDgyLCA4MCwgODIsIDczLCA4MywgNjksIDEyOCwgNjksIDc4LCA4NCwgNjksIDgyLCA3MywgNzgsIDE5OSwgNjksIAotICAgIDc4LCA4NCwgNjksIDgyLCAxMjgsIDY5LCA3OCwgODQsIDY5LCAyMTAsIDY5LCA3OCwgODEsIDg1LCA3MywgODIsIDg5LCAKLSAgICAxMjgsIDY5LCA3OCwgODEsIDEyOCwgNjksIDc4LCA3OSwgMjExLCA2OSwgNzgsIDc4LCAxMjgsIDY5LCA3OCwgNzYsIDY1LCAKLSAgICA4MiwgNzEsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgNzgsIDcxLCA3MywgNzgsIDY5LCAxMjgsIDY5LCA3OCwgNjgsIAotICAgIDc5LCA3MCwgNzksIDc4LCA3OSwgNzgsIDEyOCwgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY5LCA3OCwgNjgsIDY5LCA4MCwgCi0gICAgMTI4LCA2OSwgNzgsIDY4LCA2OSwgNjUsIDg2LCA3OSwgODUsIDgyLCAxMjgsIDY5LCA3OCwgNjcsIDc5LCA4NSwgNzgsIDg0LCAKLSAgICA2OSwgODIsIDgzLCAxMjgsIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNjksIDc4LCA2NywgNzYsIAotICAgIDc5LCA4MywgNzMsIDc4LCAxOTksIDY5LCA3OCwgNjcsIDEyOCwgNjksIDc4LCA2NSwgODIsIDg4LCA3MywgMjExLCA2OSwgCi0gICAgNzgsIDY1LCA4MiwgNzcsIDc5LCA3OCwgNzMsIDc5LCAyMTEsIDY5LCA3NywgODAsIDg0LCAyMTcsIDY5LCA3NywgODAsIDcyLCAKLSAgICA2NSwgODQsIDczLCAxOTUsIDY5LCA3NywgODAsIDcyLCA2NSwgODMsIDczLCAyMTEsIDY5LCA3NywgNjYsIDgyLCA3OSwgNzMsIAotICAgIDY4LCA2OSwgODIsIDg5LCAxMjgsIDY5LCA3NywgNjYsIDc2LCA2OSwgNzcsIDEyOCwgNjksIDc3LCA2NiwgNjksIDc2LCA3NiwgCi0gICAgNzMsIDgzLCA3MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjksIDc3LCA2NiwgNjksIDY4LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCAKLSAgICA2OSwgNzYsIDg0LCAxMjgsIDY5LCA3NiwgNzYsIDczLCA4MCwgODQsIDczLCAxOTUsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIAotICAgIDczLCA4MywgMTI4LCA2OSwgNzYsIDc2LCA3MywgODAsIDgzLCA2OSwgMTI4LCA2OSwgNzYsIDczLCA3MCwgNzMsIDEyOCwgCi0gICAgNjksIDc2LCA2OSwgODYsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNjksIDc2LCA2OSwgODYsIAotICAgIDY5LCA3OCwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDIwNiwgNjksIDc2LCA2OSwgODAsIDcyLCA2NSwgNzgsIDg0LCAKLSAgICAxMjgsIDY5LCA3NiwgNjksIDc3LCA2OSwgNzgsIDIxMiwgNjksIDc2LCA2OSwgNjcsIDg0LCA4MiwgNzMsIDY3LCA2NSwgCi0gICAgMjA0LCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgMTk1LCA2OSwgNzYsIDY1LCA3MCwgODIsIDc5LCA3OCwgMTI4LCAKLSAgICA2OSwgNzUsIDgzLCA4NCwgODIsIDY5LCA4MCwgODQsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDgzLCAxMjgsIDY5LCA3NSwgNzAsIAotICAgIDc5LCA3OCwgNzMsIDg0LCA3MywgNzUsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjksIDc0LCA2OSwgCi0gICAgNjcsIDIxMiwgNjksIDczLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgNzEsIDcyLCAKLSAgICA4NCwgMjE3LCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCAyMTEsIAotICAgIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDY5LCA3MywgCi0gICAgNzEsIDcyLCA4NCwgNjksIDY5LCAyMDYsIDY5LCA3MywgNzEsIDcyLCA4NCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIAotICAgIDEyOCwgNjksIDczLCA2OSwgMTI4LCA2OSwgNzIsIDg3LCA2NSwgMjE4LCA2OSwgNzEsIDg5LCA4MCwgODQsIDc5LCA3NiwgCi0gICAgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3MSwgNzMsIDgyLCAxMjgsIDY5LCA3MSwgNzEsIDEyOCwgNjksIDY5LCAKKyAgICA3MywgMTk1LCA2OSwgODAsIDY5LCA3MSwgNjksIDgyLCA3NywgNjUsIDEyOCwgNjksIDgwLCA2NSwgNjcsIDIxMiwgNjksIAorICAgIDc5LCA4NCwgMTI4LCA2OSwgNzksIDc3LCAxMjgsIDY5LCA3OSwgNzYsIDcyLCA4OCwgMTI4LCA2OSwgNzksIDc2LCAxMjgsIAorICAgIDY5LCA3OSwgNzIsIDEyOCwgNjksIDc4LCA4OSwgMTI4LCA2OSwgNzgsIDg2LCA2OSwgNzYsIDc5LCA4MCwgNjksIDEyOCwgCisgICAgNjksIDc4LCA4NiwgNjksIDc2LCA3OSwgODAsIDE5NywgNjksIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzksIAorICAgIDIwNiwgNjksIDc4LCA4NCwgODIsIDg5LCA0NSwgNTAsIDEyOCwgNjksIDc4LCA4NCwgODIsIDg5LCA0NSwgNDksIDEyOCwgCisgICAgNjksIDc4LCA4NCwgODIsIDg5LCAxMjgsIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY5LCA3OCwgODQsIDcyLCA4NSwgODMsIDczLCAKKyAgICA2NSwgODMsIDc3LCAxMjgsIDY5LCA3OCwgODQsIDY5LCA4MiwgODAsIDgyLCA3MywgODMsIDY5LCAxMjgsIDY5LCA3OCwgODQsIAorICAgIDY5LCA4MiwgNzMsIDc4LCAxOTksIDY5LCA3OCwgODQsIDY5LCA4MiwgMTI4LCA2OSwgNzgsIDg0LCA2OSwgMjEwLCA2OSwgCisgICAgNzgsIDg0LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDY5LCA3OCwgODEsIDg1LCA3MywgODIsIDg5LCAxMjgsIDY5LCAKKyAgICA3OCwgODEsIDEyOCwgNjksIDc4LCA3OSwgMjExLCA2OSwgNzgsIDc4LCA3MywgMTI4LCA2OSwgNzgsIDc4LCAxMjgsIDY5LCAKKyAgICA3OCwgNzYsIDY1LCA4MiwgNzEsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgNzgsIDcxLCA3MywgNzgsIDY5LCAxMjgsIAorICAgIDY5LCA3OCwgNjgsIDc5LCA3MCwgNzksIDc4LCA3OSwgNzgsIDEyOCwgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY5LCA3OCwgCisgICAgNjgsIDY5LCA4MCwgMTI4LCA2OSwgNzgsIDY4LCA2OSwgNjUsIDg2LCA3OSwgODUsIDgyLCAxMjgsIDY5LCA3OCwgNjcsIDc5LCAKKyAgICA4NSwgNzgsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDg1LCA4MiwgNjksIDgzLCAxMjgsIAorICAgIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgNzMsIDc4LCAKKyAgICAxOTksIDY5LCA3OCwgNjcsIDEyOCwgNjksIDc4LCA2NSwgODIsIDg4LCA3MywgMjExLCA2OSwgNzgsIDY1LCA4MiwgNzcsIAorICAgIDc5LCA3OCwgNzMsIDc5LCAyMTEsIDY5LCA3NywgODAsIDg0LCAyMTcsIDY5LCA3NywgODAsIDcyLCA2NSwgODQsIDczLCAKKyAgICAxOTUsIDY5LCA3NywgODAsIDcyLCA2NSwgODMsIDczLCAyMTEsIDY5LCA3NywgNzksIDc0LCAyMDEsIDY5LCA3NywgNjYsIAorICAgIDgyLCA3OSwgNzMsIDY4LCA2OSwgODIsIDg5LCAxMjgsIDY5LCA3NywgNjYsIDc2LCA2OSwgNzcsIDEyOCwgNjksIDc3LCA2NiwgCisgICAgNjksIDc2LCA3NiwgNzMsIDgzLCA3MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjksIDc3LCA2NiwgNjksIDY4LCA2OCwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA2OSwgNzYsIDg5LCAxMjgsIDY5LCA3NiwgODQsIDEyOCwgNjksIDc2LCA3NiwgNzMsIDgwLCA4NCwgCisgICAgNzMsIDE5NSwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgNzMsIDgzLCAxMjgsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIDY5LCAKKyAgICAxMjgsIDY5LCA3NiwgNzMsIDcwLCA3MywgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIAorICAgIDg0LCA4OSwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgMjA2LCA2OSwgCisgICAgNzYsIDY5LCA4MCwgNzIsIDY1LCA3OCwgODQsIDEyOCwgNjksIDc2LCA2OSwgNzcsIDY5LCA3OCwgMjEyLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3NiwgNjksIDY3LCA4NCwgODIsIDczLCAxOTUsIDY5LCA3NiwgNjYsIAorICAgIDY1LCA4MywgNjUsIDIwNiwgNjksIDc2LCA2NSwgNzcsIDczLCA4NCwgNjksIDEyOCwgNjksIDc2LCA2NSwgNzcsIDczLCA4NCwgCisgICAgMTk3LCA2OSwgNzYsIDY1LCA3MCwgODIsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDgzLCA4NCwgODIsIDY5LCA4MCwgODQsIDc5LCAKKyAgICA3OCwgMTI4LCA2OSwgNzUsIDgzLCAxMjgsIDY5LCA3NSwgNzAsIDc5LCA3OCwgNzMsIDg0LCA3MywgNzUsIDc5LCA3OCwgCisgICAgMTI4LCA2OSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjksIDc1LCA2NSwgNzcsIDEyOCwgNjksIDc0LCA2OSwgNjcsIDIxMiwgCisgICAgNjksIDczLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgMjE3LCAKKyAgICA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCAyMTEsIDY5LCA3MywgNzEsIAorICAgIDcyLCA4NCwgNzIsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgCisgICAgNjksIDY5LCAyMDYsIDY5LCA3MywgNzEsIDcyLCA4NCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNjksIDczLCAKKyAgICA2OSwgMTI4LCA2OSwgNzIsIDg3LCA2NSwgMjE4LCA2OSwgNzEsIDg5LCA4MCwgODQsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIAorICAgIDY1LCAyMDQsIDY5LCA3MSwgODksIDEyOCwgNjksIDcxLCA3MywgODIsIDEyOCwgNjksIDcxLCA3MSwgMTI4LCA2OSwgNjksIAogICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgNjksIDc1LCA2NSwgNjUsIDEyOCwgNjksIDY5LCA3MiwgMTI4LCA2OSwgCiAgICAgNjksIDY2LCA2OSwgNjksIDcwLCA3MywgNzYsIDczLCAxMjgsIDY5LCA2OCwgNzMsIDg0LCA3OSwgODIsIDczLCA2NSwgMjA0LCAKLSAgICA2OSwgNjgsIDczLCA3OCwgMTI4LCA2OSwgNjgsIDY4LCAxMjgsIDY5LCA2NiwgNjksIDcwLCA3MywgNzYsIDczLCAxMjgsIAotICAgIDY5LCA2NSwgODMsIDg0LCA2OSwgODIsIDIwNiwgNjksIDY1LCA4MywgMjEyLCA2OSwgNjUsIDgyLCA4NCwgNzIsIDc2LCAKLSAgICAyMTcsIDY5LCA2NSwgODIsIDg0LCA3MiwgMTI4LCA2OSwgNjUsIDgyLCA4NCwgMjAwLCA2OSwgNjUsIDgyLCA4MywgMTI4LCAKLSAgICA2OSwgNjUsIDgyLCA3NiwgMjE3LCA2OSwgNjUsIDc3LCA3MiwgNjUsIDc4LCA2NywgNzIsIDc5LCA3NiwgNzYsIDEyOCwgNjksIAotICAgIDY1LCA3MSwgNzYsIDY5LCAxMjgsIDY5LCA2NSwgNjgsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCA2NSwgNjYsIDcyLCA2NSwgCi0gICAgNjgsIDcyLCAxMjgsIDY5LCAxNzgsIDY5LCA0OCwgNTEsIDU2LCAxMjgsIDY5LCA0OCwgNTEsIDU1LCAxMjgsIDY5LCA0OCwgCi0gICAgNTEsIDU0LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCA2NSwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgMTI4LCA2OSwgNDgsIDUxLCAKLSAgICA1MSwgMTI4LCA2OSwgNDgsIDUxLCA1MCwgMTI4LCA2OSwgNDgsIDUxLCA0OSwgMTI4LCA2OSwgNDgsIDUxLCA0OCwgMTI4LCAKLSAgICA2OSwgNDgsIDUwLCA1NywgMTI4LCA2OSwgNDgsIDUwLCA1NiwgNjUsIDEyOCwgNjksIDQ4LCA1MCwgNTYsIDEyOCwgNjksIAotICAgIDQ4LCA1MCwgNTUsIDEyOCwgNjksIDQ4LCA1MCwgNTQsIDEyOCwgNjksIDQ4LCA1MCwgNTMsIDEyOCwgNjksIDQ4LCA1MCwgCi0gICAgNTIsIDEyOCwgNjksIDQ4LCA1MCwgNTEsIDEyOCwgNjksIDQ4LCA1MCwgNTAsIDEyOCwgNjksIDQ4LCA1MCwgNDksIDEyOCwgCi0gICAgNjksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDY5LCA0OCwgNTAsIDQ4LCAxMjgsIDY5LCA0OCwgNDksIDU3LCAxMjgsIDY5LCAKLSAgICA0OCwgNDksIDU2LCAxMjgsIDY5LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NSwgMTI4LCA2OSwgNDgsIAotICAgIDQ5LCA1NCwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgNTQsIDEyOCwgNjksIDQ4LCA0OSwgNTMsIDEyOCwgNjksIDQ4LCA0OSwgCi0gICAgNTIsIDEyOCwgNjksIDQ4LCA0OSwgNTEsIDEyOCwgNjksIDQ4LCA0OSwgNTAsIDEyOCwgNjksIDQ4LCA0OSwgNDksIDEyOCwgCi0gICAgNjksIDQ4LCA0OSwgNDgsIDEyOCwgNjksIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDY5LCA0OCwgNDgsIDU3LCAxMjgsIDY5LCAKLSAgICA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NiwgMTI4LCA2OSwgNDgsIDQ4LCA1NSwgMTI4LCA2OSwgNDgsIAotICAgIDQ4LCA1NCwgMTI4LCA2OSwgNDgsIDQ4LCA1MywgMTI4LCA2OSwgNDgsIDQ4LCA1MiwgMTI4LCA2OSwgNDgsIDQ4LCA1MSwgCi0gICAgMTI4LCA2OSwgNDgsIDQ4LCA1MCwgMTI4LCA2OSwgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgNDUsIDc3LCA2NSwgNzMsIDIwNCwgCi0gICAgNjgsIDkwLCA5MCwgNjksIDEyOCwgNjgsIDkwLCA5MCwgNjUsIDEyOCwgNjgsIDkwLCA4NywgNjksIDEyOCwgNjgsIDkwLCAKLSAgICA4NSwgMTI4LCA2OCwgOTAsIDc5LCAxMjgsIDY4LCA5MCwgNzQsIDY5LCAxMjgsIDY4LCA5MCwgNzMsIDEyOCwgNjgsIDkwLCAKKyAgICA2OSwgNjgsIDczLCA3OCwgMTI4LCA2OSwgNjgsIDY4LCAxMjgsIDY5LCA2NywgODMsIDEyOCwgNjksIDY2LCA2OSwgNzAsIAorICAgIDczLCA3NiwgNzMsIDEyOCwgNjksIDY1LCA4MywgODQsIDY5LCA4MiwgMjA2LCA2OSwgNjUsIDgzLCA4NCwgMTI4LCA2OSwgCisgICAgNjUsIDgzLCAyMTIsIDY5LCA2NSwgODIsIDg0LCA3MiwgNzYsIDIxNywgNjksIDY1LCA4MiwgODQsIDcyLCAxMjgsIDY5LCAKKyAgICA2NSwgODIsIDg0LCAyMDAsIDY5LCA2NSwgODIsIDgzLCAxMjgsIDY5LCA2NSwgODIsIDc2LCAyMTcsIDY5LCA2NSwgNzcsIAorICAgIDcyLCA2NSwgNzgsIDY3LCA3MiwgNzksIDc2LCA3NiwgMTI4LCA2OSwgNjUsIDcxLCA3NiwgNjksIDEyOCwgNjksIDY1LCA2OCwgCisgICAgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDY1LCA2NiwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDE3OCwgNjksIDQ4LCAKKyAgICA1MSwgNTYsIDEyOCwgNjksIDQ4LCA1MSwgNTUsIDEyOCwgNjksIDQ4LCA1MSwgNTQsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIAorICAgIDY1LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCAxMjgsIDY5LCA0OCwgNTEsIDUxLCAxMjgsIDY5LCA0OCwgNTEsIDUwLCAxMjgsIAorICAgIDY5LCA0OCwgNTEsIDQ5LCAxMjgsIDY5LCA0OCwgNTEsIDQ4LCAxMjgsIDY5LCA0OCwgNTAsIDU3LCAxMjgsIDY5LCA0OCwgCisgICAgNTAsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIDUwLCA1NiwgMTI4LCA2OSwgNDgsIDUwLCA1NSwgMTI4LCA2OSwgNDgsIDUwLCAKKyAgICA1NCwgMTI4LCA2OSwgNDgsIDUwLCA1MywgMTI4LCA2OSwgNDgsIDUwLCA1MiwgMTI4LCA2OSwgNDgsIDUwLCA1MSwgMTI4LCAKKyAgICA2OSwgNDgsIDUwLCA1MCwgMTI4LCA2OSwgNDgsIDUwLCA0OSwgMTI4LCA2OSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNjksIAorICAgIDQ4LCA1MCwgNDgsIDEyOCwgNjksIDQ4LCA0OSwgNTcsIDEyOCwgNjksIDQ4LCA0OSwgNTYsIDEyOCwgNjksIDQ4LCA0OSwgCisgICAgNTUsIDY1LCAxMjgsIDY5LCA0OCwgNDksIDU1LCAxMjgsIDY5LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCAKKyAgICA1NCwgMTI4LCA2OSwgNDgsIDQ5LCA1MywgMTI4LCA2OSwgNDgsIDQ5LCA1MiwgMTI4LCA2OSwgNDgsIDQ5LCA1MSwgMTI4LCAKKyAgICA2OSwgNDgsIDQ5LCA1MCwgMTI4LCA2OSwgNDgsIDQ5LCA0OSwgMTI4LCA2OSwgNDgsIDQ5LCA0OCwgMTI4LCA2OSwgNDgsIAorICAgIDQ4LCA1NywgNjUsIDEyOCwgNjksIDQ4LCA0OCwgNTcsIDEyOCwgNjksIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgCisgICAgNDgsIDU2LCAxMjgsIDY5LCA0OCwgNDgsIDU1LCAxMjgsIDY5LCA0OCwgNDgsIDU0LCAxMjgsIDY5LCA0OCwgNDgsIDUzLCAKKyAgICAxMjgsIDY5LCA0OCwgNDgsIDUyLCAxMjgsIDY5LCA0OCwgNDgsIDUxLCAxMjgsIDY5LCA0OCwgNDgsIDUwLCAxMjgsIDY5LCAKKyAgICA0OCwgNDgsIDQ5LCAxMjgsIDY5LCA0NSwgNzcsIDY1LCA3MywgMjA0LCA2OCwgOTAsIDkwLCA3MiwgNjksIDEyOCwgNjgsIAorICAgIDkwLCA5MCwgNjksIDEyOCwgNjgsIDkwLCA5MCwgNjUsIDEyOCwgNjgsIDkwLCA4OSwgNjUsIDg5LCAxMjgsIDY4LCA5MCwgCisgICAgODcsIDY5LCAxMjgsIDY4LCA5MCwgODUsIDEyOCwgNjgsIDkwLCA3OSwgMTI4LCA2OCwgOTAsIDc0LCA2OSwgMTI4LCA2OCwgCisgICAgOTAsIDczLCA4NCwgNjUsIDEyOCwgNjgsIDkwLCA3MywgMTI4LCA2OCwgOTAsIDcyLCA3OSwgNzMsIDEyOCwgNjgsIDkwLCAKICAgICA3MiwgNjksIDEyOCwgNjgsIDkwLCA3MiwgNjUsIDEyOCwgNjgsIDkwLCA2OSwgNzYsIDc5LCAxMjgsIDY4LCA5MCwgNjksIAotICAgIDY5LCAxMjgsIDY4LCA5MCwgNjksIDEyOCwgNjgsIDkwLCA2NSwgNjUsIDEyOCwgNjgsIDkwLCA2NSwgMTI4LCA2OCwgOTAsIAotICAgIDEyOCwgNjgsIDIxOCwgNjgsIDg5LCA3OSwgMTI4LCA2OCwgODksIDIwNywgNjgsIDg5LCA2OSwgNzIsIDEyOCwgNjgsIDg5LCAKLSAgICA2OSwgMjAwLCA2OCwgODcsIDc5LCAxMjgsIDY4LCA4NywgNjksIDEyOCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgODYsIDczLCAKKyAgICA2OSwgMTI4LCA2OCwgOTAsIDY5LCAxMjgsIDY4LCA5MCwgNjUsIDg5LCAxMjgsIDY4LCA5MCwgNjUsIDY1LCAxMjgsIDY4LCAKKyAgICA5MCwgNjUsIDEyOCwgNjgsIDkwLCAxMjgsIDY4LCAyMTgsIDY4LCA4OSwgNzksIDEyOCwgNjgsIDg5LCAyMDcsIDY4LCA4OSwgCisgICAgNzgsIDY1LCA3NywgNzMsIDE5NSwgNjgsIDg5LCA2OSwgNzIsIDEyOCwgNjgsIDg5LCA2OSwgMjAwLCA2OCwgODksIDY1LCAKKyAgICA3OCwgMTI4LCA2OCwgODcsIDc5LCAxMjgsIDY4LCA4NywgNjksIDEyOCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgODYsIDczLCAKICAgICA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjgsIDg2LCA2OCwgMTI4LCA2OCwgODYsIDEyOCwgNjgsIDg1LCA4NCwgNzMsIAogICAgIDY5LCA4MywgMTI4LCA2OCwgODUsIDgzLCA3NSwgMTI4LCA2OCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgCiAgICAgNjgsIDg1LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA4NSwgODIsIDUwLCAxMjgsIDY4LCA4NSwgODAsIDc5LCAKICAgICA3OCwgNjgsIDczLCA4NSwgMjExLCA2OCwgODUsIDc5LCA4OCwgMTI4LCA2OCwgODUsIDc5LCAxMjgsIDY4LCA4NSwgNzgsIAogICAgIDUyLCAxMjgsIDY4LCA4NSwgNzgsIDUxLCAxMjgsIDY4LCA4NSwgNzgsIDE3OSwgNjgsIDg1LCA3NywgMTI4LCA2OCwgODUsIAotICAgIDIwNCwgNjgsIDg1LCA3MiwgMTI4LCA2OCwgODUsIDcxLCA4NSwgNjgsIDEyOCwgNjgsIDg1LCA2NiwgNTAsIDEyOCwgNjgsIAotICAgIDg1LCA2NiwgMTI4LCA2OCwgODUsIDE5NCwgNjgsIDgyLCA4OSwgMTI4LCA2OCwgODIsIDIxNywgNjgsIDgyLCA4NSwgNzcsIAotICAgIDEyOCwgNjgsIDgyLCA4NSwgMjA1LCA2OCwgODIsIDc5LCA4MCwgODMsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDc2LCA2OSwgCi0gICAgODQsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA2OCwgODIsIDc5LCAKLSAgICA3NywgNjksIDY4LCA2NSwgODIsIDIxNywgNjgsIDgyLCA3MywgODYsIDY5LCAxMjgsIDY4LCA4MiwgNzMsIDg2LCAxOTcsIAotICAgIDY4LCA4MiwgNzMsIDc4LCA3NSwgMTI4LCA2OCwgODIsIDczLCAyMDQsIDY4LCA4MiwgNjksIDgzLCA4MywgMTI4LCA2OCwgCi0gICAgODIsIDY1LCA4NSwgNzEsIDcyLCA4NCwgMjExLCA2OCwgODIsIDY1LCA3NywgMTI4LCA2OCwgODIsIDY1LCAyMDUsIDY4LCAKLSAgICA4MiwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDgyLCA2NSwgNzEsIDc5LCAyMDYsIDY4LCA4MiwgNjUsIDcwLCA4NCwgNzMsIAotICAgIDc4LCAxOTksIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCA4MywgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgCi0gICAgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCAxOTMsIDY4LCA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCA2OCwgODMsIAotICAgIDEyOCwgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDY4LCA3OSwgODcsIDc4LCA0NSwgODAsIDc5LCA3MywgCisgICAgMjA0LCA2OCwgODUsIDcyLCAxMjgsIDY4LCA4NSwgNzEsIDg1LCA2OCwgMTI4LCA2OCwgODUsIDE5OSwgNjgsIDg1LCA2NiwgCisgICAgNTAsIDEyOCwgNjgsIDg1LCA2NiwgMTI4LCA2OCwgODUsIDE5NCwgNjgsIDgyLCA4OSwgMTI4LCA2OCwgODIsIDIxNywgNjgsIAorICAgIDgyLCA4NSwgNzcsIDEyOCwgNjgsIDgyLCA4NSwgMjA1LCA2OCwgODIsIDc5LCA4MCwgODMsIDEyOCwgNjgsIDgyLCA3OSwgCisgICAgODAsIDc2LCA2OSwgODQsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCAKKyAgICA2OCwgODIsIDc5LCA3NywgNjksIDY4LCA2NSwgODIsIDIxNywgNjgsIDgyLCA3MywgODYsIDY5LCAxMjgsIDY4LCA4MiwgNzMsIAorICAgIDg2LCAxOTcsIDY4LCA4MiwgNzMsIDc4LCA3NSwgMTI4LCA2OCwgODIsIDczLCAyMDQsIDY4LCA4MiwgNjksIDgzLCA4MywgCisgICAgMTI4LCA2OCwgODIsIDY5LCA2NSwgNzcsIDIxNywgNjgsIDgyLCA2NSwgODUsIDcxLCA3MiwgODQsIDIxMSwgNjgsIDgyLCAKKyAgICA2NSwgNzcsIDEyOCwgNjgsIDgyLCA2NSwgMjA1LCA2OCwgODIsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDY4LCA4MiwgNjUsIAorICAgIDcxLCA3OSwgMjA2LCA2OCwgODIsIDY1LCA3MCwgODQsIDczLCA3OCwgMTk5LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgCisgICAgODMsIDEyOCwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgNjUsIDEyOCwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgMTkzLCAKKyAgICA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY4LCA3OSwgODcsIDc4LCA0NSwgODAsIDc5LCA3MywgCiAgICAgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDc5LCA4NywgNzgsIDEyOCwgNjgsIDc5LCA4NiwgNjksIDEyOCwgNjgsIDc5LCAKLSAgICA4NSwgNzEsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDY4LCA3OSwgODUsIDY2LCA4NCwgMTI4LCA2OCwgNzksIDg1LCA2NiwgNzYsIAotICAgIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDY4LCA3OSwgODUsIDY2LCA3NiwgCi0gICAgNjksIDQ1LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCAxMjgsIDY4LCA3OSwgODQsIDg0LCAKLSAgICA2OSwgNjgsIDQ1LCA4MCwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgNzgsIDEyOCwgNjgsIDc5LCA4NCwgODQsIAotICAgIDY5LCA2OCwgNDUsIDc2LCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCAKLSAgICAxOTYsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NSwgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIAotICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDU2LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTUsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU1LCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIAotICAgIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgCi0gICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIAotICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCi0gICAgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUxLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUxLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIAotICAgIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTYsIAorICAgIDg2LCAxOTcsIDY4LCA3OSwgODUsIDcxLCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA2OCwgNzksIDg1LCA2NiwgODQsIDEyOCwgCisgICAgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCAKKyAgICA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgODAsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc4LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA3NiwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDg0LCA2OSwgMTk2LCA2OCwgNzksIDg0LCA4MywgNDUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU1LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKKyAgICA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgCisgICAgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUxLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCisgICAgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAorICAgIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTEsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNTEsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTEsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCAKKyAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAorICAgIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCisgICAgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUxLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA1MSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDU2LCAKICAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIAogICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NiwgCiAgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCAKQEAgLTM5NTIsMzkyICs0Mjg2LDQzNiBAQAogICAgIDcxLCAxMjgsIDY4LCA3OSwgNzgsIDcxLCAxMjgsIDY4LCA3OSwgNzcsIDY1LCA3MywgMjA2LCA2OCwgNzksIDc2LCA4MCwgCiAgICAgNzIsIDczLCA3OCwgMTI4LCA2OCwgNzksIDc2LCA3NiwgODMsIDEyOCwgNjgsIDc5LCA3NiwgNzYsIDY1LCAyMTAsIDY4LCAKICAgICA3OSwgNzYsIDczLCA4NSwgNzcsIDEyOCwgNjgsIDc5LCA3NSwgNzcsIDY1LCA3MywgMTI4LCA2OCwgNzksIDczLCA4NCwgCi0gICAgMTI4LCA2OCwgNzksIDcxLCAxMjgsIDY4LCA3OSwgMTk5LCA2OCwgNzksIDY5LCAyMTEsIDY4LCA3OSwgNjgsIDY5LCA3NSwgCi0gICAgNjUsIDg0LCA2NSwgMTI4LCA2OCwgNzksIDY2LCA4MiwgNzksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCA2NSwgODMsIDcyLCAKLSAgICA3NywgNjksIDY5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgNjUsIDgzLCA3MiwgNzcsIDY5LCAxOTcsIDY4LCA3OSwgNjUsIAotICAgIDEyOCwgNjgsIDc5LCA0NSwgNzksIDEyOCwgNjgsIDc3LCAxMjgsIDY4LCAyMDUsIDY4LCA3NiwgODUsIDEyOCwgNjgsIDc2LCAKLSAgICA3OSwgMTI4LCA2OCwgNzYsIDczLCAxMjgsIDY4LCA3NiwgNzIsIDg5LCA2NSwgMTI4LCA2OCwgNzYsIDcyLCA2NSwgMTI4LCAKLSAgICA2OCwgNzYsIDY5LCA2OSwgMTI4LCA2OCwgNzYsIDY1LCAxMjgsIDY4LCA3NiwgMTI4LCA2OCwgNzUsIDY1LCA4MiwgMTI4LCAKLSAgICA2OCwgNzUsIDY1LCAyMTAsIDY4LCA3NCwgNjksIDgyLCA4NiwgNzMsIDEyOCwgNjgsIDc0LCA2OSwgODIsIDg2LCAxMjgsIAotICAgIDY4LCA3NCwgNjksIDEyOCwgNjgsIDc0LCA2NSwgMTI4LCA2OCwgNzMsIDkwLCA5MCwgMjE3LCA2OCwgNzMsIDg2LCA3OSwgCi0gICAgODIsIDY3LCAxOTcsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCA3MywgODMsIDczLCAKLSAgICA3OSwgMjA2LCA2OCwgNzMsIDg2LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIAotICAgIDY5LCA4MywgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAKLSAgICAxOTYsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCAxOTcsIDY4LCA3MywgODYsIAotICAgIDY5LCA4MiwgNzEsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDY4LCA3MywgODQsIDg0LCAyMDcsIDY4LCA3MywgODMsIDg0LCA3OSwgCi0gICAgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIDg0LCA3MywgNzgsIDcxLCA4NSwgNzMsIDgzLCA3MiwgMTI4LCAKLSAgICA2OCwgNzMsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDQ1LCA1MCwgCi0gICAgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDEyOCwgNjgsIDczLCA4MywgODAsIDY5LCA4MiwgODMsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgNzUsIDEyOCwgNjgsIDczLCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgNjgsIAotICAgIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCA4MywgNjcsIDc5LCA3OCwgODQsIDczLCA3OCwgODUsIDc5LCA4NSwgMjExLCA2OCwgCi0gICAgNzMsIDgzLCAxOTUsIDY4LCA3MywgODMsIDY1LCA4MCwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2OCwgNzMsIDgzLCAKLSAgICA2NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzMsIDgyLCA3MSwgMTkzLCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3NiwgCi0gICAgMjE3LCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA2OCwgNzMsIDgwLCA4NCwgNjksIAotICAgIDEyOCwgNjgsIDczLCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDgwLCA3NiwgNzksIDg1LCA3OCwgMTI4LCA2OCwgCi0gICAgNzMsIDgwLCA3NiwgNzMsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDIwMSwgNjgsIDczLCA3OCwgNzEsIDY2LCA2NSwgMjEyLCAKLSAgICA2OCwgNzMsIDIwNiwgNjgsIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIAotICAgIDczLCA3OSwgNzgsIDQ1LCA1MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDUwLCAKLSAgICAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNDksIDEyOCwgNjgsIDczLCA3NywgNzMsIAotICAgIDc4LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNjgsIDczLCAxOTMsIDY4LCA3MywgCi0gICAgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCAKLSAgICA2OCwgNzMsIDc3LCA1MCwgMTI4LCA2OCwgNzMsIDc2LCAxMjgsIDY4LCA3MywgNzEsIDgyLCA2NSwgODAsIDcyLCAxMjgsIAotICAgIDY4LCA3MywgNzEsIDgyLCA2NSwgODAsIDIwMCwgNjgsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAyMTEsIDY4LCA3MywgCi0gICAgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDY4LCA3MywgNzEsIDgyLCA2NSwgMjA1LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCAKLSAgICA3OSwgNzgsIDEyOCwgNjgsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDIwNiwgNjgsIDczLCA3MSwgNjUsIDc3LCA3NywgNjUsIAotICAgIDEyOCwgNjgsIDczLCA3MSwgMTkzLCA2OCwgNzMsIDcwLCA4NCwgNzksIDcxLCA3MSwgNzksIDIxMSwgNjgsIDczLCA3MCwgCi0gICAgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDY4LCA3MywgNzAsIDcwLCA3MywgNjcsIDg1LCA3NiwgODQsIDIxNywgNjgsIDczLCAKLSAgICA3MCwgNzAsIDczLCA2NywgODUsIDc2LCA4NCwgNzMsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgCi0gICAgNzgsIDg0LCA3MywgNjUsIDc2LCAxMjgsIDY4LCA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCA3OCwgNjcsIDE5NywgNjgsIDczLCAKLSAgICA3MCwgNjUsIDg0LCAxMjgsIDY4LCA3MywgNjksIDgzLCA3MywgODMsIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCAyMTEsIAotICAgIDY4LCA3MywgNjksIDgwLCAxMjgsIDY4LCA3MywgMTk3LCA2OCwgNzMsIDY2LCAxMjgsIDY4LCA3MywgNjUsIDg0LCA3OSwgCi0gICAgNzgsIDc5LCAyMDYsIDY4LCA3MywgNjUsIDg0LCA3OSwgNzgsIDczLCA3NSwgMjAxLCA2OCwgNzMsIDY1LCA4MywgODQsIDc5LCAKLSAgICA3NiwgMjAxLCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCA2OCwgODMsIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIAotICAgIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgMTk2LCA2OCwgNzMsIDY1LCA3NywgNjksIDg0LCA2OSwgMjEwLCA2OCwgCi0gICAgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgNzUsIDY1LCAxMjgsIDY4LCA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgMTkzLCAKLSAgICA2OCwgNzMsIDY1LCA3NiwgNjksIDY3LCA4NCwgNDUsIDIwOCwgNjgsIDczLCA2NSwgNzEsIDc5LCA3OCwgNjUsIDc2LCAxMjgsIAotICAgIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgOTAsIDY5LCAKLSAgICAxOTYsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgODMsIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIAotICAgIDczLCAyMTEsIDY4LCA3MiwgNzksIDg1LCAxMjgsIDY4LCA3MiwgNzksIDc5LCAxMjgsIDY4LCA3MiwgNzksIDEyOCwgNjgsIAotICAgIDcyLCA3MywgMTI4LCA2OCwgNzIsIDcyLCA4NSwgMTI4LCA2OCwgNzIsIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3MiwgCi0gICAgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzMsIDEyOCwgNjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY5LCAKLSAgICAxMjgsIDY4LCA3MiwgNzIsIDY1LCAxMjgsIDY4LCA3MiwgNjksIDY5LCAxMjgsIDY4LCA3MiwgNjUsIDgyLCA3NywgNjUsIAotICAgIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDY1LCA4NCwgNzIsIDEyOCwgCi0gICAgNjgsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDcyLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA2OCwgNzIsIDY1LCA2NSwgNzYsIDg1LCAKLSAgICAxMjgsIDY4LCA3MiwgNjUsIDY1LCAxMjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY5LCA5MCwgMjAwLCA2OCwgNjksIDg5LCAKLSAgICA4NCwgNjksIDgyLCA3OSwgMjEzLCA2OCwgNjksIDg5LCA4NCwgNjksIDgyLCA3OSwgMjExLCA2OCwgNjksIDg4LCA3MywgNjUsIAotICAgIDEyOCwgNjgsIDY5LCA4NiwgNzMsIDY3LCAxOTcsIDY4LCA2OSwgODYsIDY5LCA3NiwgNzksIDgwLCA3NywgNjksIDc4LCA4NCwgCi0gICAgMTI4LCA2OCwgNjksIDg1LCA3OCwgNzEsIDEyOCwgNjgsIDY5LCA4MywgMjAzLCA2OCwgNjksIDgzLCA3MywgNzEsIDc4LCAKLSAgICAxMjgsIDY4LCA2OSwgODMsIDczLCAxMjgsIDY4LCA2OSwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIAotICAgIDY4LCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjgsIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDY5LCAKLSAgICA4MiwgMTI4LCA2OCwgNjksIDgyLCA2OSwgODQsIDQ1LCA3MiwgNzMsIDY4LCA2OSwgODQsIDEyOCwgNjgsIDY5LCA4MiwgNjksIAotICAgIDg0LCAxMjgsIDY4LCA2OSwgODAsIDY1LCA4MiwgODQsIDg1LCA4MiwgNjksIDEyOCwgNjgsIDY5LCA4MCwgNjUsIDgyLCA4NCwgCi0gICAgNzcsIDY5LCA3OCwgMjEyLCA2OCwgNjksIDgwLCA2NSwgODIsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDY5LCA3OCwgODQsIDczLCAKLSAgICA4MywgODQsIDgyLCAyMTcsIDY4LCA2OSwgNzgsIDg0LCA2NSwgMjA0LCA2OCwgNjksIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIAotICAgIDg0LCA3OSwgODIsIDEyOCwgNjgsIDY5LCA3OCwgNzksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIDIxMCwgNjgsIDY5LCA3OCwgCi0gICAgNzgsIDY5LCA3OCwgMTI4LCA2OCwgNjksIDc4LCA3MSwgMTI4LCA2OCwgNjksIDc4LCAxOTcsIDY4LCA2OSwgNzgsIDY1LCAKLSAgICA4MiwgNzMsIDg1LCAyMTEsIDY4LCA2OSwgNzYsIDg0LCA2NSwgMTI4LCA2OCwgNjksIDc2LCA4NCwgMTkzLCA2OCwgNjksIAotICAgIDc2LCA4NCwgMTI4LCA2OCwgNjksIDc2LCA4MCwgNzIsIDczLCAxOTUsIDY4LCA2OSwgNzYsIDczLCA4NiwgNjksIDgyLCAKLSAgICAyMTcsIDY4LCA2OSwgNzYsIDczLCA4NiwgNjksIDgyLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2OCwgNjksIDc2LCA3MywgNzcsIAotICAgIDczLCA4NCwgNjksIDgyLCAxMjgsIDY4LCA2OSwgNzYsIDczLCA3NywgNzMsIDg0LCA2OSwgMjEwLCA2OCwgNjksIDc2LCA3MywgCi0gICAgNjcsIDczLCA3OSwgODUsIDIxMSwgNjgsIDY5LCA3NiwgNjksIDg0LCA2OSwgMTI4LCA2OCwgNjksIDc2LCA2OSwgODQsIAotICAgIDE5NywgNjgsIDY5LCA3NSwgNjUsIDEyOCwgNjgsIDY5LCA3NSwgMTI4LCA2OCwgNjksIDczLCAxMjgsIDY4LCA2OSwgNzIsIAotICAgIDczLCAxMjgsIDY4LCA2OSwgNzEsIDgyLCA2OSwgMTk3LCA2OCwgNjksIDcwLCA3MywgNzgsIDczLCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA2OCwgNjksIDcwLCA2OSwgNjcsIDg0LCA3MywgODYsIDY5LCA3OCwgNjksIDgzLCAyMTEsIDY4LCA2OSwgNjksIDgyLCAKLSAgICAxMjgsIDY4LCA2OSwgNjksIDgwLCA3NiwgODksIDEyOCwgNjgsIDY5LCA2OSwgNzYsIDEyOCwgNjgsIDY5LCA2NywgODIsIAotICAgIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDc5LCAxMjgsIDY4LCA2OSwgNjcsIDgyLCA2OSwgNjUsIDgzLCA2OSwgMTI4LCA2OCwgCi0gICAgNjksIDY3LCA3OSwgODIsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY4LCA2OSwgNjcsIDc5LCA4MiwgNjUsIDg0LCA3MywgNzksIAotICAgIDc4LCAxMjgsIDY4LCA2OSwgNjcsIDczLCA4MywgNzMsIDg2LCA2OSwgNzgsIDY5LCA4MywgODMsIDEyOCwgNjgsIDY5LCA2NywgCi0gICAgNzMsIDc3LCA2NSwgMjA0LCA2OCwgNjksIDY3LCA3MywgNjgsIDg1LCA3OSwgODUsIDIxMSwgNjgsIDY5LCA2NywgNjksIDc3LCAKLSAgICA2NiwgNjksIDgyLCAxMjgsIDY4LCA2OSwgNjcsIDY1LCA4OSwgNjksIDY4LCAxMjgsIDY4LCA2OSwgNjYsIDczLCAyMTIsIAotICAgIDY4LCA2OSwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNjksIDY1LCA2OCwgMTI4LCA2OCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgCi0gICAgNjgsIDg1LCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA4NCwgMTI4LCA2OCwgNjgsIDg1LCA4MiwgODgsIDEyOCwgNjgsIDY4LCAKLSAgICA4NSwgODIsIDEyOCwgNjgsIDY4LCA4NSwgODAsIDEyOCwgNjgsIDY4LCA4NSwgNzksIDg4LCAxMjgsIDY4LCA2OCwgODUsIAotICAgIDc5LCA4MCwgMTI4LCA2OCwgNjgsIDg1LCA3OSwgMTI4LCA2OCwgNjgsIDg1LCAxMjgsIDY4LCA2OCwgNzksIDg4LCAxMjgsIAotICAgIDY4LCA2OCwgNzksIDg0LCAxMjgsIDY4LCA2OCwgNzksIDgwLCAxMjgsIDY4LCA2OCwgNzksIDY1LCAxMjgsIDY4LCA2OCwgCi0gICAgNzMsIDg4LCAxMjgsIDY4LCA2OCwgNzMsIDg0LCAxMjgsIDY4LCA2OCwgNzMsIDgwLCAxMjgsIDY4LCA2OCwgNzMsIDY5LCAKLSAgICA4OCwgMTI4LCA2OCwgNjgsIDczLCA2OSwgODAsIDEyOCwgNjgsIDY4LCA3MywgNjksIDEyOCwgNjgsIDY4LCA3MywgMTI4LCAKLSAgICA2OCwgNjgsIDcyLCA4NSwgMTI4LCA2OCwgNjgsIDcyLCA3OSwgMTI4LCA2OCwgNjgsIDcyLCA3MywgMTI4LCA2OCwgNjgsIAotICAgIDcyLCA2OSwgNjksIDEyOCwgNjgsIDY4LCA3MiwgNjksIDEyOCwgNjgsIDY4LCA3MiwgNjUsIDY1LCAxMjgsIDY4LCA2OCwgCi0gICAgNzIsIDY1LCAxMjgsIDY4LCA2OCwgNjksIDg4LCAxMjgsIDY4LCA2OCwgNjksIDgwLCAxMjgsIDY4LCA2OCwgNjksIDY5LCAKLSAgICAxMjgsIDY4LCA2OCwgNjksIDEyOCwgNjgsIDY4LCA2OCwgNzIsIDY1LCAxMjgsIDY4LCA2OCwgNjgsIDY1LCAxMjgsIDY4LCAKLSAgICA2OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OCwgNjgsIDY1LCA4OCwgMTI4LCA2OCwgNjgsIDY1LCA4NCwgCi0gICAgMTI4LCA2OCwgNjgsIDY1LCA4MCwgMTI4LCA2OCwgNjgsIDY1LCA3NiwgMTI4LCA2OCwgNjgsIDY1LCAyMDQsIDY4LCA2OCwgCi0gICAgNjUsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDY4LCA2NSwgNzIsIDY1LCAyMDQsIDY4LCA2OCwgNjUsIDY1LCAxMjgsIDY4LCAKLSAgICA2NywgODMsIDEyOCwgNjgsIDY3LCA1MiwgMTI4LCA2OCwgNjcsIDUxLCAxMjgsIDY4LCA2NywgNTAsIDEyOCwgNjgsIDY3LCAKLSAgICA0OSwgMTI4LCA2OCwgMTk0LCA2OCwgNjUsIDg5LCA0NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY4LCA2NSwgMjE3LCAKLSAgICA2OCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjgsIDY1LCA4NiwgNzMsIDY4LCAxMjgsIDY4LCA2NSwgODQsIAotICAgIDE5NywgNjgsIDY1LCA4MywgNzMsIDY1LCAxMjgsIDY4LCA2NSwgODMsIDczLCAxOTMsIDY4LCA2NSwgODMsIDcyLCA2OSwgCi0gICAgMTk2LCA2OCwgNjUsIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDgzLCAyMDAsIDY4LCA2NSwgODMsIDY5LCA3MywgNjUsIDEyOCwgCi0gICAgNjgsIDY1LCA4MiwgODQsIDEyOCwgNjgsIDY1LCA4MiwgNzUsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDgyLCAKLSAgICA3NSwgNjksIDc4LCA3MywgNzgsIDE5OSwgNjgsIDY1LCA4MiwgMjAzLCA2OCwgNjUsIDgyLCA3MSwgNjUsIDEyOCwgNjgsIAotICAgIDY1LCA4MiwgNjUsIDUyLCAxMjgsIDY4LCA2NSwgODIsIDY1LCA1MSwgMTI4LCA2OCwgNjUsIDgyLCAxMjgsIDY4LCA2NSwgCi0gICAgODAsIDQ1LCA4MCwgODIsIDY1LCAyMDUsIDY4LCA2NSwgODAsIDQ1LCA4MCwgNzMsIDIwMSwgNjgsIDY1LCA4MCwgNDUsIDc3LCAKLSAgICA4NSwgNzksIDIxNywgNjgsIDY1LCA4MCwgNDUsIDY2LCA4NSwgNzksIDIwNiwgNjgsIDY1LCA4MCwgNDUsIDY2LCA2OSwgCi0gICAgMjAxLCA2OCwgNjUsIDIwOCwgNjgsIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCA2OCwgNjUsIDc4LCA3MSwgNzksIDEyOCwgCi0gICAgNjgsIDY1LCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA3OCwgMTk5LCA2OCwgNjUsIDc4LCA2OCwgNjUsIDEyOCwgNjgsIDY1LCAKLSAgICA3OCwgNjcsIDY5LCA4MiwgMTI4LCA2OCwgNjUsIDc3LCA4MCwgMTI4LCA2OCwgNjUsIDc3LCAyMDgsIDY4LCA2NSwgNzcsIAotICAgIDc3LCA2NSwgODQsIDY1LCA3OCwgMTI4LCA2OCwgNjUsIDc3LCA3NywgNjUsIDg0LCA2NSwgMjA2LCA2OCwgNjUsIDc3LCA3NywgCi0gICAgNjUsIDEyOCwgNjgsIDY1LCA3NywgNzcsIDE5MywgNjgsIDY1LCA3NywgNjUsIDgyLCA4NSwgMTI4LCA2OCwgNjUsIDc2LCAKLSAgICA2OSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgMjEyLCA2OCwgNjUsIAotICAgIDc2LCA2OCwgNjUsIDEyOCwgNjgsIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNjUsIDc2LCA2NSwgODQsIDIwMCwgCi0gICAgNjgsIDY1LCA3NiwgNjUsIDg0LCAxMjgsIDY4LCA2NSwgNzMsIDgyLCAxMjgsIDY4LCA2NSwgNzMsIDc4LCA3MSwgMTI4LCAKLSAgICA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgODMsIDcyLCA0NSwgNTAsIDEyOCwgNjgsIDY1LCA3MiwgODksIDY1LCA2NSwgCi0gICAgODUsIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDcxLCA4MywgMTI4LCA2OCwgNjUsIDcxLCA3MSwgNjksIDgyLCAxMjgsIDY4LCAKLSAgICA2NSwgNzEsIDcxLCA2OSwgMjEwLCA2OCwgNjUsIDcxLCA2OSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIDY5LCA4MywgCi0gICAgMjAwLCA2OCwgNjUsIDcxLCA2NiwgNjUsIDgzLCA3MywgNzgsIDc4LCA2NSwgMTI4LCA2OCwgNjUsIDcxLCA2NSwgMjE4LCAKLSAgICA2OCwgNjUsIDcxLCA2NSwgNzYsIDcxLCA2NSwgMTI4LCA2OCwgNjUsIDE5OSwgNjgsIDY1LCA2OSwgNzgsIDcxLCAxMjgsIAotICAgIDY4LCA2NSwgNjksIDE5OSwgNjgsIDY1LCA2OCwgMTI4LCA2OCwgNjUsIDE5NiwgNjgsIDY1LCA2NSwgODMsIDg1LCAxMjgsIAotICAgIDY4LCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcyLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MSwgCi0gICAgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzAsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY5LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAKLSAgICA2OCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjcsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY2LCAxMjgsIDY4LCA0OCwgNTQsIAotICAgIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgMTI4LCA2OCwgNDgsIDU0LCA1NCwgMTI4LCA2OCwgNDgsIDU0LCA1MywgCi0gICAgMTI4LCA2OCwgNDgsIDU0LCA1MiwgMTI4LCA2OCwgNDgsIDU0LCA1MSwgMTI4LCA2OCwgNDgsIDU0LCA1MCwgMTI4LCA2OCwgCi0gICAgNDgsIDU0LCA0OSwgMTI4LCA2OCwgNDgsIDU0LCA0OCwgMTI4LCA2OCwgNDgsIDUzLCA1NywgMTI4LCA2OCwgNDgsIDUzLCAKLSAgICA1NiwgMTI4LCA2OCwgNDgsIDUzLCA1NSwgMTI4LCA2OCwgNDgsIDUzLCA1NCwgMTI4LCA2OCwgNDgsIDUzLCA1MywgMTI4LCAKLSAgICA2OCwgNDgsIDUzLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTIsIDEyOCwgNjgsIDQ4LCA1MywgNTEsIDEyOCwgNjgsIAotICAgIDQ4LCA1MywgNTAsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUwLCAxMjgsIDY4LCA0OCwgNTMsIDQ5LCAxMjgsIDY4LCA0OCwgCi0gICAgNTMsIDQ4LCA3MywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzIsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcxLCAxMjgsIDY4LCAKLSAgICA0OCwgNTMsIDQ4LCA3MCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjksIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY4LCAxMjgsIAotICAgIDY4LCA0OCwgNTMsIDQ4LCA2NywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY1LCAKLSAgICAxMjgsIDY4LCA0OCwgNTMsIDQ4LCAxMjgsIDY4LCA0OCwgNTIsIDU3LCAxMjgsIDY4LCA0OCwgNTIsIDU2LCA2NSwgMTI4LCAKLSAgICA2OCwgNDgsIDUyLCA1NiwgMTI4LCA2OCwgNDgsIDUyLCA1NSwgMTI4LCA2OCwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNjgsIAotICAgIDQ4LCA1MiwgNTQsIDEyOCwgNjgsIDQ4LCA1MiwgNTMsIDEyOCwgNjgsIDQ4LCA1MiwgNTIsIDEyOCwgNjgsIDQ4LCA1MiwgCi0gICAgNTEsIDEyOCwgNjgsIDQ4LCA1MiwgNTAsIDEyOCwgNjgsIDQ4LCA1MiwgNDksIDEyOCwgNjgsIDQ4LCA1MiwgNDgsIDEyOCwgCi0gICAgNjgsIDQ4LCA1MSwgNTcsIDEyOCwgNjgsIDQ4LCA1MSwgNTYsIDEyOCwgNjgsIDQ4LCA1MSwgNTUsIDEyOCwgNjgsIDQ4LCAKLSAgICA1MSwgNTQsIDEyOCwgNjgsIDQ4LCA1MSwgNTMsIDEyOCwgNjgsIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDY4LCA0OCwgNTEsIAotICAgIDUyLCAxMjgsIDY4LCA0OCwgNTEsIDUxLCAxMjgsIDY4LCA0OCwgNTEsIDUwLCAxMjgsIDY4LCA0OCwgNTEsIDQ5LCA2NSwgCi0gICAgMTI4LCA2OCwgNDgsIDUxLCA0OSwgMTI4LCA2OCwgNDgsIDUxLCA0OCwgMTI4LCA2OCwgNDgsIDUwLCA1NywgMTI4LCA2OCwgCi0gICAgNDgsIDUwLCA1NiwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1MCwgNTUsIDEyOCwgNjgsIDQ4LCAKLSAgICA1MCwgNTQsIDEyOCwgNjgsIDQ4LCA1MCwgNTMsIDEyOCwgNjgsIDQ4LCA1MCwgNTIsIDEyOCwgNjgsIDQ4LCA1MCwgNTEsIAotICAgIDEyOCwgNjgsIDQ4LCA1MCwgNTAsIDEyOCwgNjgsIDQ4LCA1MCwgNDksIDEyOCwgNjgsIDQ4LCA1MCwgNDgsIDEyOCwgNjgsIAotICAgIDQ4LCA0OSwgNTcsIDEyOCwgNjgsIDQ4LCA0OSwgNTYsIDEyOCwgNjgsIDQ4LCA0OSwgNTUsIDEyOCwgNjgsIDQ4LCA0OSwgCi0gICAgNTQsIDEyOCwgNjgsIDQ4LCA0OSwgNTMsIDEyOCwgNjgsIDQ4LCA0OSwgNTIsIDEyOCwgNjgsIDQ4LCA0OSwgNTEsIDEyOCwgCi0gICAgNjgsIDQ4LCA0OSwgNTAsIDEyOCwgNjgsIDQ4LCA0OSwgNDksIDEyOCwgNjgsIDQ4LCA0OSwgNDgsIDEyOCwgNjgsIDQ4LCAKLSAgICA0OCwgNTcsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCAxMjgsIDY4LCA0OCwgNDgsIAotICAgIDU1LCAxMjgsIDY4LCA0OCwgNDgsIDU0LCAxMjgsIDY4LCA0OCwgNDgsIDUzLCAxMjgsIDY4LCA0OCwgNDgsIDUyLCAxMjgsIAotICAgIDY4LCA0OCwgNDgsIDUxLCAxMjgsIDY4LCA0OCwgNDgsIDUwLCAxMjgsIDY4LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA4OSwgCi0gICAgODgsIDEyOCwgNjcsIDg5LCA4NCwgMTI4LCA2NywgODksIDgyLCA4OCwgMTI4LCA2NywgODksIDgyLCA2OSwgNzgsIDY1LCAKLSAgICA3MywgMTk1LCA2NywgODksIDgyLCAxMjgsIDY3LCA4OSwgODAsIDgyLCA3MywgNzksIDIxMiwgNjcsIDg5LCA4MCwgNjksIAotICAgIDgyLCA4NSwgODMsIDEyOCwgNjcsIDg5LCA4MCwgMTI4LCA2NywgODksIDc2LCA3MywgNzgsIDY4LCA4MiwgNzMsIDY3LCA3MywgCi0gICAgODQsIDg5LCAxMjgsIDY3LCA4OSwgNjcsIDc2LCA3OSwgNzgsIDY5LCAxMjgsIDY3LCA4OSwgNjUsIDEyOCwgNjcsIDg5LCAKLSAgICAxMjgsIDY3LCA4NywgNzksIDc5LCAxMjgsIDY3LCA4NywgNzksIDEyOCwgNjcsIDg3LCA3MywgNzMsIDEyOCwgNjcsIDg3LCAKLSAgICA3MywgMTI4LCA2NywgODcsIDY5LCA3OSwgODIsIDg0LCA3MiwgMTI4LCA2NywgODcsIDY5LCAxMjgsIDY3LCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDY3LCA4NSwgODgsIDEyOCwgNjcsIDg1LCA4NSwgMTI4LCA2NywgODUsIDIxMiwgNjcsIDg1LCA4MywgODQsIAotICAgIDc5LCA3NywgODMsIDEyOCwgNjcsIDg1LCA4MywgODQsIDc5LCA3NywgNjksIDIxMCwgNjcsIDg1LCA4MywgODQsIDY1LCA4MiwgCi0gICAgNjgsIDEyOCwgNjcsIDg1LCA4MiwgODgsIDEyOCwgNjcsIDg1LCA4MiwgODYsIDczLCA3OCwgMTk5LCA2NywgODUsIDgyLCAKLSAgICA4NiwgNjksIDE5NiwgNjcsIDg1LCA4MiwgODYsIDY5LCAxMjgsIDY3LCA4NSwgODIsIDg2LCAxOTcsIDY3LCA4NSwgODIsIAotICAgIDgzLCA3MywgODYsIDE5NywgNjcsIDg1LCA4MiwgODIsIDIxNywgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgODQsIDEyOCwgCi0gICAgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgMjEyLCA2NywgODUsIDgyLCA3NiwgMjE3LCA2NywgODUsIDgyLCA3NiwgMTI4LCAKLSAgICA2NywgODUsIDgyLCAxMjgsIDY3LCA4NSwgODAsIDEyOCwgNjcsIDg1LCA3OSwgODgsIDEyOCwgNjcsIDg1LCA3OSwgODAsIAotICAgIDEyOCwgNjcsIDg1LCA3OSwgMTI4LCA2NywgODUsIDIwNSwgNjcsIDg1LCA2NiwgNjksIDY4LCAxMjgsIDY3LCA4NSwgNjYsIAotICAgIDE5NywgNjcsIDg1LCA2NSwgODQsIDgyLCA3MywgNzYsIDc2LCA3OSwgMTI4LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgCi0gICAgNzYsIDIwNywgNjcsIDg1LCAxMjgsIDY3LCA4MywgNzMsIDEyOCwgNjcsIDgyLCA4OSwgODMsIDg0LCA2NSwgMjA0LCA2NywgCi0gICAgODIsIDg5LCA4MCwgODQsIDc5LCA3MSwgODIsIDY1LCA3NywgNzcsIDczLCAxOTUsIDY3LCA4MiwgODksIDczLCA3OCwgMTk5LCAKLSAgICA2NywgODIsIDg1LCA5MCwgNjksIDczLCA4MiwgMjA3LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MywgCi0gICAgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MiwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCAKLSAgICA3NiwgNjksIDQ1LCA1MSwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MCwgMTI4LCA2NywgODIsIAotICAgIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDEyOCwgNjcsIDgyLCA3OSwgODcsIDc4LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgCi0gICAgNzMsIDc4LCA3MSwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDczLCA3OCwgMTk5LCA2NywgODIsIDc5LCA4MywgODMsIDcyLCAKLSAgICA2NSwgODQsIDY3LCAyMDAsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDY4LCA0NSwgODQsIDY1LCA3MywgNzYsIDEyOCwgNjcsIAotICAgIDgyLCA3OSwgODMsIDgzLCA2OSwgMTk2LCA2NywgODIsIDc5LCA4MywgODMsIDY2LCA3OSwgNzgsIDY5LCA4MywgMTI4LCA2NywgCi0gICAgODIsIDc5LCA4MywgODMsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDIxMSwgNjcsIDgyLCA3OSwgODAsIDEyOCwgNjcsIDgyLCAKLSAgICA3OSwgNzMsIDg4LCAxMjgsIDY3LCA4MiwgNzksIDY3LCA4NSwgMjExLCA2NywgODIsIDc5LCA2NywgNzksIDY4LCA3MywgNzYsIAotICAgIDY5LCAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgCi0gICAgMjEyLCA2NywgODIsIDY5LCA2OCwgNzMsIDIxMiwgNjcsIDgyLCA2OSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjcsIDgyLCAKLSAgICA2OSwgNjUsIDc3LCAxMjgsIDY3LCA4MiwgNjUsIDY3LCA3NSwgNjksIDgyLCAxMjgsIDY3LCA4MiwgMTI4LCA2NywgNzksIAotICAgIDg4LCAxMjgsIDY3LCA3OSwgODcsIDEyOCwgNjcsIDc5LCAyMTUsIDY3LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzksIAotICAgIDg1LCA4MCwgNzYsIDE5NywgNjcsIDc5LCA4NSwgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgCi0gICAgODIsIDgzLCA3MywgNzgsIDc1LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA2NiwgNzksIDgyLCA2OSwgMTI4LCAKLSAgICA2NywgNzksIDg1LCA3OCwgNjcsIDczLCAyMDQsIDY3LCA3OSwgODQsIDEyOCwgNjcsIDc5LCA4MiwgODIsIDY5LCA4MywgODAsIAotICAgIDc5LCA3OCwgNjgsIDIxMSwgNjcsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDEyOCwgNjcsIDc5LCA4MiwgODAsIDgzLCA2OSwgCi0gICAgMTI4LCA2NywgNzksIDgyLCA4MCwgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA4MiwgNzksIDc4LCAKLSAgICA3MywgODMsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgCi0gICAgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDIxMCwgNjcsIDc5LCA4MCwgODksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCAKLSAgICA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDIxMiwgNjcsIDc5LCA4MCwgODksIDEyOCwgNjcsIDc5LCA4MCwgODIsIAotICAgIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDgwLCA4MCwgNjksIDgyLCA0NSwgNTAsIDEyOCwgNjcsIDc5LCA4MCwgCi0gICAgODAsIDY5LCA4MiwgMTI4LCA2NywgNzksIDgwLCAxMjgsIDY3LCA3OSwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzksIDc1LCAKLSAgICA3MywgNzgsIDcxLCAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgNjksIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDY5LCAxOTYsIAotICAgIDY3LCA3OSwgNzksIDEyOCwgNjcsIDc5LCA3OCwgODYsIDY5LCA4MiwgNzEsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA4NiwgCi0gICAgNjksIDc4LCA3MywgNjksIDc4LCA2NywgMTk3LCA2NywgNzksIDc4LCA4NCwgODIsIDc5LCA3NiwgMTI4LCA2NywgNzksIDc4LCAKLSAgICA4NCwgODIsIDc5LCAyMDQsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNjUsIDgyLCA3MywgNjksIDg0LCA4OSwgMTI4LCA2NywgNzksIAotICAgIDc4LCA4NCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgODIsIDY5LCAKLSAgICAxOTYsIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDIxMCwgNjcsIDc5LCA3OCwgODQsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY5LCA3NywgODAsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgCi0gICAgODQsIDY1LCA3MywgNzgsIDIxMSwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCAKLSAgICA4NCwgNjUsIDczLCAyMDYsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgODIsIAotICAgIDg1LCA2NywgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgODQsIDEyOCwgNjcsIDc5LCA3OCwgCi0gICAgODMsIDg0LCA2NSwgNzgsIDIxMiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDY3LCA4OSwgMTI4LCA2NywgNzksIDc4LCAKLSAgICA4MywgNjksIDY3LCA4NSwgODQsIDczLCA4NiwgMTk3LCA2NywgNzksIDc4LCA3NCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgCi0gICAgNzgsIDEyOCwgNjcsIDc5LCA3OCwgNzQsIDg1LCA3MSwgNjUsIDg0LCAxOTcsIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCAKLSAgICA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgNzMsIDY3LCA2NSwgMjA0LCA2NywgNzksIDc4LCA3MSwgODIsIDg1LCA2OSwgNzgsIAorICAgIDEyOCwgNjgsIDc5LCA3MywgMTI4LCA2OCwgNzksIDcxLCAxMjgsIDY4LCA3OSwgMTk5LCA2OCwgNzksIDY5LCAyMTEsIDY4LCAKKyAgICA3OSwgNjgsIDY5LCA3NSwgNjUsIDg0LCA2NSwgMTI4LCA2OCwgNzksIDY3LCA4NSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjgsIAorICAgIDc5LCA2NywgODUsIDc3LCA2OSwgNzgsIDIxMiwgNjgsIDc5LCA2NiwgODIsIDc5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgCisgICAgNjUsIDgzLCA3MiwgNzcsIDY5LCA2OSwgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIDY1LCA4MywgNzIsIDc3LCA2OSwgMTk3LCAKKyAgICA2OCwgNzksIDY1LCAxMjgsIDY4LCA3OSwgNDUsIDc5LCAxMjgsIDY4LCA3NywgMTI4LCA2OCwgMjA1LCA2OCwgNzYsIDg1LCAKKyAgICAxMjgsIDY4LCA3NiwgNzksIDEyOCwgNjgsIDc2LCA3MywgMTI4LCA2OCwgNzYsIDcyLCA4OSwgNjUsIDEyOCwgNjgsIDc2LCAKKyAgICA3MiwgNjUsIDEyOCwgNjgsIDc2LCA2OSwgNjksIDEyOCwgNjgsIDc2LCA2NSwgMTI4LCA2OCwgNzYsIDEyOCwgNjgsIDc1LCAKKyAgICA2NSwgODIsIDEyOCwgNjgsIDc1LCA2NSwgMjEwLCA2OCwgNzQsIDY5LCA4MiwgODYsIDczLCAxMjgsIDY4LCA3NCwgNjksIAorICAgIDgyLCA4NiwgMTI4LCA2OCwgNzQsIDY5LCAxMjgsIDY4LCA3NCwgNjUsIDEyOCwgNjgsIDczLCA5MCwgOTAsIDIxNywgNjgsIAorICAgIDczLCA4NiwgNzksIDgyLCA2NywgMTk3LCA2OCwgNzMsIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4NiwgCisgICAgNzMsIDgzLCA3MywgNzksIDIwNiwgNjgsIDczLCA4NiwgNzMsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCAKKyAgICA4NiwgNzMsIDY4LCA2OSwgODMsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgODIsIDgzLCAxMjgsIDY4LCA3MywgODYsIAorICAgIDczLCA2OCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDE5NiwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgCisgICAgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDE5NywgNjgsIDczLCA4NiwgNjksIDgyLCA3MSwgNjksIDc4LCA2NywgNjksIAorICAgIDEyOCwgNjgsIDczLCA4NCwgODQsIDIwNywgNjgsIDczLCA4MywgODQsIDc5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgNjgsIDczLCA4MywgODQsIDczLCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCAxMjgsIDY4LCA3MywgODMsIDg0LCA3MywgNzYsIAorICAgIDc2LCAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgNzYsIDg2LCA2OSwgNDUsIDUwLCAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgCisgICAgNzYsIDg2LCA2OSwgMTI4LCA2OCwgNzMsIDgzLCA4MCwgNjksIDgyLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDgzLCAKKyAgICA3NSwgMTI4LCA2OCwgNzMsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA2OCwgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIAorICAgIDgzLCA2NywgNzksIDc4LCA4NCwgNzMsIDc4LCA4NSwgNzksIDg1LCAyMTEsIDY4LCA3MywgODMsIDE5NSwgNjgsIDczLCA4MywgCisgICAgNjUsIDgwLCA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY4LCA3MywgODMsIDY1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCAKKyAgICA3MywgODIsIDcxLCAxOTMsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDc2LCAyMTcsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIAorICAgIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDgwLCA4NCwgCisgICAgNjksIDEyOCwgNjgsIDczLCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDgwLCA3NiwgNzksIDg1LCA3OCwgMTI4LCAKKyAgICA2OCwgNzMsIDgwLCA3NiwgNzMsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDIwMSwgNjgsIDczLCA3OCwgNzEsIDY2LCA2NSwgCisgICAgMjEyLCA2OCwgNzMsIDIwNiwgNjgsIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCAKKyAgICA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA1MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgNDUsIDUwLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNDksIDEyOCwgNjgsIDczLCAKKyAgICA3NywgNzMsIDc4LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNjgsIDczLCAxOTMsIAorICAgIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCAKKyAgICA3OSwgMjA2LCA2OCwgNzMsIDc3LCA1MCwgMTI4LCA2OCwgNzMsIDc3LCAxNzgsIDY4LCA3MywgNzYsIDEyOCwgNjgsIDczLCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDEyOCwgNjgsIDczLCA3MSwgODIsIDY1LCA4MCwgMjAwLCA2OCwgNzMsIDcxLCA4MiwgNjUsIAorICAgIDc3LCA3NywgNzksIDIxMSwgNjgsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNjgsIDczLCA3MSwgODIsIDY1LCAKKyAgICAyMDUsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgCisgICAgMjA2LCA2OCwgNzMsIDcxLCA3MywgODQsIDgzLCAxMjgsIDY4LCA3MywgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDY4LCAKKyAgICA3MywgNzEsIDE5MywgNjgsIDczLCA3MCwgODQsIDc5LCA3MSwgNzEsIDc5LCAyMTEsIDY4LCA3MywgNzAsIDc5LCA3OCwgNzMsIAorICAgIDY1LCA4MywgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNzMsIDY3LCA4NSwgNzYsIDg0LCAyMTcsIDY4LCA3MywgNzAsIDcwLCA3MywgCisgICAgNjcsIDg1LCA3NiwgODQsIDczLCA2OSwgODMsIDEyOCwgNjgsIDczLCA3MCwgNzAsIDY5LCA4MiwgNjksIDc4LCA4NCwgNzMsIAorICAgIDY1LCA3NiwgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIDY3LCAxOTcsIDY4LCA3MywgNzAsIDY1LCA4NCwgCisgICAgMTI4LCA2OCwgNzMsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDY4LCA3MywgNjksIDgzLCA3MywgMjExLCA2OCwgNzMsIDY5LCAKKyAgICA4MywgNjksIDIwNCwgNjgsIDczLCA2OSwgODAsIDEyOCwgNjgsIDczLCAxOTcsIDY4LCA3MywgNjYsIDEyOCwgNjgsIDczLCAKKyAgICA2NSwgODQsIDc5LCA3OCwgNzksIDIwNiwgNjgsIDczLCA2NSwgODQsIDc5LCA3OCwgNzMsIDc1LCAyMDEsIDY4LCA3MywgNjUsIAorICAgIDgzLCA4NCwgNzksIDc2LCAyMDEsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDY4LCA4MywgMTI4LCA2OCwgNzMsIDY1LCA3NywgCisgICAgNzksIDc4LCA2OCwgMTI4LCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCAxOTYsIDY4LCA3MywgNjUsIDc3LCA2OSwgODQsIDY5LCAKKyAgICAyMTAsIDY4LCA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgNjUsIDEyOCwgNjgsIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIAorICAgIDc1LCAxOTMsIDY4LCA3MywgNjUsIDc2LCA2OSwgNjcsIDg0LCA0NSwgMjA4LCA2OCwgNzMsIDY1LCA3MSwgNzksIDc4LCA2NSwgCisgICAgNzYsIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA5MCwgNjksIDE5NiwgNjgsIDczLCA2NSwgNjksIDgyLCAKKyAgICA2OSwgODMsIDczLCA4MywgNDUsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgCisgICAgODMsIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MiwgNzksIDg1LCAxMjgsIDY4LCAKKyAgICA3MiwgNzksIDc5LCAxMjgsIDY4LCA3MiwgNzksIDEyOCwgNjgsIDcyLCA3MywgNzMsIDEyOCwgNjgsIDcyLCA3MywgMTI4LCAKKyAgICA2OCwgNzIsIDcyLCA4NSwgMTI4LCA2OCwgNzIsIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzksIDEyOCwgNjgsIAorICAgIDcyLCA3MiwgNzMsIDEyOCwgNjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgCisgICAgNzIsIDY1LCAxMjgsIDY4LCA3MiwgNjksIDY5LCAxMjgsIDY4LCA3MiwgNjUsIDgyLCA3NywgNjUsIDEyOCwgNjgsIDcyLCAKKyAgICA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIAorICAgIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDcyLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA2OCwgCisgICAgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIDY4LCA3MiwgNjUsIDY1LCAxMjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY5LCAKKyAgICA5MCwgMjAwLCA2OCwgNjksIDg5LCA4NCwgNjksIDgyLCA3OSwgMjEzLCA2OCwgNjksIDg5LCA4NCwgNjksIDgyLCA3OSwgCisgICAgMjExLCA2OCwgNjksIDg4LCA3MywgNjUsIDEyOCwgNjgsIDY5LCA4NiwgNzMsIDY3LCAxOTcsIDY4LCA2OSwgODYsIDY5LCAKKyAgICA3NiwgNzksIDgwLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgNjksIDg1LCA3OCwgNzEsIDEyOCwgNjgsIDY5LCA4MywgNzUsIAorICAgIDg0LCA3OSwgMjA4LCA2OCwgNjksIDgzLCAyMDMsIDY4LCA2OSwgODMsIDczLCA3MSwgNzgsIDEyOCwgNjgsIDY5LCA4MywgCisgICAgNzMsIDEyOCwgNjgsIDY5LCA4MywgNjksIDgyLCA4NCwgMTI4LCA2OCwgNjksIDgzLCA2OSwgODIsIDIxMiwgNjgsIDY5LCAKKyAgICA4MywgNjksIDgyLCA2OSwgMjEyLCA2OCwgNjksIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDczLCA3OSwgMjA2LCA2OCwgNjksIAorICAgIDgzLCA2NywgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY4LCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA2OSwgODIsIDEyOCwgCisgICAgNjgsIDY5LCA4MiwgNjksIDg0LCA0NSwgNzIsIDczLCA2OCwgNjksIDg0LCAxMjgsIDY4LCA2OSwgODIsIDY5LCA4NCwgMTI4LCAKKyAgICA2OCwgNjksIDgyLCA2OSwgNzYsIDczLCA2NywgMjEyLCA2OCwgNjksIDgwLCA4NCwgNzIsIDEyOCwgNjgsIDY5LCA4MCwgNjUsIAorICAgIDgyLCA4NCwgODUsIDgyLCA2OSwgMTI4LCA2OCwgNjksIDgwLCA2NSwgODIsIDg0LCA3NywgNjksIDc4LCAyMTIsIDY4LCA2OSwgCisgICAgODAsIDY1LCA4MiwgODQsIDczLCA3OCwgMTk5LCA2OCwgNjksIDc4LCA4NCwgNzMsIDgzLCA4NCwgODIsIDIxNywgNjgsIDY5LCAKKyAgICA3OCwgODQsIDY1LCAyMDQsIDY4LCA2OSwgNzgsIDc5LCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA2OCwgNjksIAorICAgIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgMjEwLCA2OCwgNjksIDc4LCA3OCwgNjksIDc4LCAxMjgsIDY4LCA2OSwgCisgICAgNzgsIDcxLCAxMjgsIDY4LCA2OSwgNzgsIDE5NywgNjgsIDY5LCA3OCwgNjUsIDgyLCA3MywgODUsIDIxMSwgNjgsIDY5LCAKKyAgICA3NiwgODQsIDY1LCAxMjgsIDY4LCA2OSwgNzYsIDg0LCAxOTMsIDY4LCA2OSwgNzYsIDg0LCAxMjgsIDY4LCA2OSwgNzYsIAorICAgIDgwLCA3MiwgNzMsIDE5NSwgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgODIsIDIxNywgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgCisgICAgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDczLCA3NywgNzMsIDg0LCA2OSwgODIsIDEyOCwgNjgsIDY5LCAKKyAgICA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCAyMTAsIDY4LCA2OSwgNzYsIDczLCA2NywgNzMsIDc5LCA4NSwgMjExLCA2OCwgNjksIAorICAgIDc2LCA2OSwgODQsIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDY5LCA4NCwgMTk3LCA2OCwgNjksIDc1LCA2NSwgMTI4LCA2OCwgCisgICAgNjksIDc1LCAxMjgsIDY4LCA2OSwgNzMsIDEyOCwgNjgsIDY5LCA3MiwgNzMsIDEyOCwgNjgsIDY5LCA3MSwgODIsIDY5LCAKKyAgICA2OSwgODMsIDEyOCwgNjgsIDY5LCA3MSwgODIsIDY5LCAxOTcsIDY4LCA2OSwgNzAsIDczLCA3OCwgNzMsIDg0LCA3MywgNzksIAorICAgIDc4LCAxMjgsIDY4LCA2OSwgNzAsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDc4LCA2OSwgODMsIDIxMSwgNjgsIDY5LCA2OSwgCisgICAgODIsIDEyOCwgNjgsIDY5LCA2OSwgODAsIDc2LCA4OSwgMTI4LCA2OCwgNjksIDY5LCA3NiwgMTI4LCA2OCwgNjksIDY3LCAKKyAgICA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA2OCwgNzksIDEyOCwgNjgsIDY5LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAxMjgsIAorICAgIDY4LCA2OSwgNjcsIDgyLCA2OSwgNjUsIDgzLCAxOTcsIDY4LCA2OSwgNjcsIDc5LCA4MiwgNjUsIDg0LCA3MywgODYsIDE5NywgCisgICAgNjgsIDY5LCA2NywgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDY5LCA2NywgNzMsIDgzLCA3MywgODYsIAorICAgIDY5LCA3OCwgNjksIDgzLCA4MywgMTI4LCA2OCwgNjksIDY3LCA3MywgNzcsIDY1LCAyMDQsIDY4LCA2OSwgNjcsIDczLCA2OCwgCisgICAgODUsIDc5LCA4NSwgMjExLCA2OCwgNjksIDY3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNjgsIDY5LCA2NywgNjUsIDg5LCAKKyAgICA2OSwgNjgsIDEyOCwgNjgsIDY5LCA2NiwgNzMsIDIxMiwgNjgsIDY5LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2OSwgNjUsIAorICAgIDY4LCAxMjgsIDY4LCA2OCwgODcsIDY1LCAxMjgsIDY4LCA2OCwgODUsIDg4LCAxMjgsIDY4LCA2OCwgODUsIDg0LCAxMjgsIAorICAgIDY4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA4MiwgMTI4LCA2OCwgNjgsIDg1LCA4MCwgMTI4LCA2OCwgCisgICAgNjgsIDg1LCA3OSwgODgsIDEyOCwgNjgsIDY4LCA4NSwgNzksIDgwLCAxMjgsIDY4LCA2OCwgODUsIDc5LCAxMjgsIDY4LCAKKyAgICA2OCwgODUsIDEyOCwgNjgsIDY4LCA3OSwgODgsIDEyOCwgNjgsIDY4LCA3OSwgODQsIDEyOCwgNjgsIDY4LCA3OSwgODAsIAorICAgIDEyOCwgNjgsIDY4LCA3OSwgNjUsIDEyOCwgNjgsIDY4LCA3MywgODgsIDEyOCwgNjgsIDY4LCA3MywgODQsIDEyOCwgNjgsIAorICAgIDY4LCA3MywgODAsIDEyOCwgNjgsIDY4LCA3MywgNjksIDg4LCAxMjgsIDY4LCA2OCwgNzMsIDY5LCA4MCwgMTI4LCA2OCwgCisgICAgNjgsIDczLCA2OSwgMTI4LCA2OCwgNjgsIDczLCAxMjgsIDY4LCA2OCwgNzIsIDg1LCAxMjgsIDY4LCA2OCwgNzIsIDc5LCAKKyAgICAxMjgsIDY4LCA2OCwgNzIsIDczLCAxMjgsIDY4LCA2OCwgNzIsIDY5LCA2OSwgMTI4LCA2OCwgNjgsIDcyLCA2OSwgMTI4LCAKKyAgICA2OCwgNjgsIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY4LCA2OSwgODgsIDEyOCwgNjgsIAorICAgIDY4LCA2OSwgODAsIDEyOCwgNjgsIDY4LCA2OSwgNjksIDEyOCwgNjgsIDY4LCA2OSwgMTI4LCA2OCwgNjgsIDY4LCA3MiwgCisgICAgNjUsIDEyOCwgNjgsIDY4LCA2OCwgNjUsIDEyOCwgNjgsIDY4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY4LCAKKyAgICA2OCwgNjUsIDg4LCAxMjgsIDY4LCA2OCwgNjUsIDg0LCAxMjgsIDY4LCA2OCwgNjUsIDgwLCAxMjgsIDY4LCA2OCwgNjUsIAorICAgIDc2LCAxMjgsIDY4LCA2OCwgNjUsIDIwNCwgNjgsIDY4LCA2NSwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNjgsIDY1LCA3MiwgCisgICAgNjUsIDIwNCwgNjgsIDY4LCA2NSwgNjUsIDEyOCwgNjgsIDY3LCA4MywgMTI4LCA2OCwgNjcsIDcyLCA2OSwgMTI4LCA2OCwgCisgICAgNjcsIDUyLCAxMjgsIDY4LCA2NywgNTEsIDEyOCwgNjgsIDY3LCA1MCwgMTI4LCA2OCwgNjcsIDQ5LCAxMjgsIDY4LCAxOTQsIAorICAgIDY4LCA2NSwgODksIDQ1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjgsIDY1LCAyMTcsIDY4LCA2NSwgODcsIDY2LCAKKyAgICAxMjgsIDY4LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2OCwgNjUsIDg2LCA3MywgNjgsIDEyOCwgNjgsIAorICAgIDY1LCA4NCwgMTk3LCA2OCwgNjUsIDgzLCA3MywgNjUsIDEyOCwgNjgsIDY1LCA4MywgNzMsIDE5MywgNjgsIDY1LCA4MywgCisgICAgNzIsIDY5LCAxOTYsIDY4LCA2NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgODMsIDIwMCwgNjgsIDY1LCA4MywgNjksIDczLCAKKyAgICA2NSwgMTI4LCA2OCwgNjUsIDgyLCA4NCwgMTI4LCA2OCwgNjUsIDgyLCA3NSwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDY4LCA2NSwgODIsIDc1LCA2OSwgNzgsIDczLCA3OCwgMTk5LCA2OCwgNjUsIDgyLCAyMDMsIDY4LCA2NSwgODIsIDcxLCA2NSwgCisgICAgMTI4LCA2OCwgNjUsIDgyLCA2NSwgNTIsIDEyOCwgNjgsIDY1LCA4MiwgNjUsIDUxLCAxMjgsIDY4LCA2NSwgODIsIDEyOCwgCisgICAgNjgsIDY1LCA4MCwgNDUsIDgwLCA4MiwgNjUsIDIwNSwgNjgsIDY1LCA4MCwgNDUsIDgwLCA3MywgMjAxLCA2OCwgNjUsIDgwLCAKKyAgICA0NSwgNzcsIDg1LCA3OSwgMjE3LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA2OCwgNjUsIDgwLCA0NSwgNjYsIAorICAgIDY5LCAyMDEsIDY4LCA2NSwgMjA4LCA2OCwgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDY4LCA2NSwgNzgsIDcxLCA3OSwgCisgICAgMTI4LCA2OCwgNjUsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDc4LCAxOTksIDY4LCA2NSwgNzgsIDY4LCA2NSwgMTI4LCA2OCwgCisgICAgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIDY4LCA2NSwgNzcsIDgwLCAxMjgsIDY4LCA2NSwgNzcsIDIwOCwgNjgsIDY1LCAKKyAgICA3NywgNzcsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDY4LCA2NSwgNzcsIDc3LCA2NSwgODQsIDY1LCAyMDYsIDY4LCA2NSwgNzcsIAorICAgIDc3LCA2NSwgMTI4LCA2OCwgNjUsIDc3LCA3NywgMTkzLCA2OCwgNjUsIDc3LCA2NSwgODIsIDg1LCAxMjgsIDY4LCA2NSwgCisgICAgNzYsIDY5LCA4NCwgNzIsIDQ1LCA4MiwgNjksIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgODQsIDcyLCAxMjgsIDY4LCAKKyAgICA2NSwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgMjEyLCA2OCwgNjUsIDc2LCA2OCwgNjUsIDEyOCwgNjgsIAorICAgIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNjUsIDc2LCA2NSwgODQsIDIwMCwgNjgsIDY1LCA3NiwgNjUsIDg0LCAKKyAgICAxMjgsIDY4LCA2NSwgNzMsIDgyLCAxMjgsIDY4LCA2NSwgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDczLCAxMjgsIDY4LCAKKyAgICA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCA4MywgNzIsIDQ1LCA1MCwgMTI4LCA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgCisgICAgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIDgzLCAxMjgsIDY4LCA2NSwgNzEsIDcxLCA2OSwgODIsIDEyOCwgNjgsIDY1LCAKKyAgICA3MSwgNzEsIDY5LCAyMTAsIDY4LCA2NSwgNzEsIDY5LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA3MSwgNjksIDgzLCAyMDAsIAorICAgIDY4LCA2NSwgNzEsIDY2LCA2NSwgODMsIDczLCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA2NSwgNzEsIDY1LCAyMTgsIDY4LCA2NSwgCisgICAgNzEsIDY1LCA3NiwgNzEsIDY1LCAxMjgsIDY4LCA2NSwgNzEsIDUxLCAxMjgsIDY4LCA2NSwgMTk5LCA2OCwgNjUsIDY5LCAKKyAgICA3OCwgNzEsIDEyOCwgNjgsIDY1LCA2OSwgMTk5LCA2OCwgNjUsIDY4LCAxMjgsIDY4LCA2NSwgMTk2LCA2OCwgNjUsIDY1LCAKKyAgICA4MywgODUsIDEyOCwgNjgsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzIsIDEyOCwgNjgsIAorICAgIDQ4LCA1NCwgNTUsIDcxLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjksIDEyOCwgCisgICAgNjgsIDQ4LCA1NCwgNTUsIDY4LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NywgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjYsIAorICAgIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAxMjgsIDY4LCA0OCwgNTQsIDU0LCAxMjgsIAorICAgIDY4LCA0OCwgNTQsIDUzLCAxMjgsIDY4LCA0OCwgNTQsIDUyLCAxMjgsIDY4LCA0OCwgNTQsIDUxLCAxMjgsIDY4LCA0OCwgCisgICAgNTQsIDUwLCAxMjgsIDY4LCA0OCwgNTQsIDQ5LCAxMjgsIDY4LCA0OCwgNTQsIDQ4LCAxMjgsIDY4LCA0OCwgNTMsIDU3LCAKKyAgICAxMjgsIDY4LCA0OCwgNTMsIDU2LCAxMjgsIDY4LCA0OCwgNTMsIDU1LCAxMjgsIDY4LCA0OCwgNTMsIDU0LCAxMjgsIDY4LCAKKyAgICA0OCwgNTMsIDUzLCAxMjgsIDY4LCA0OCwgNTMsIDUyLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MiwgMTI4LCA2OCwgNDgsIAorICAgIDUzLCA1MSwgMTI4LCA2OCwgNDgsIDUzLCA1MCwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTAsIDEyOCwgNjgsIDQ4LCA1MywgCisgICAgNDksIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDczLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MiwgMTI4LCA2OCwgNDgsIDUzLCAKKyAgICA0OCwgNzEsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcwLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2OSwgMTI4LCA2OCwgNDgsIAorICAgIDUzLCA0OCwgNjgsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY3LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA2OCwgCisgICAgNDgsIDUzLCA0OCwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDEyOCwgNjgsIDQ4LCA1MiwgNTcsIDEyOCwgNjgsIDQ4LCAKKyAgICA1MiwgNTYsIDY1LCAxMjgsIDY4LCA0OCwgNTIsIDU2LCAxMjgsIDY4LCA0OCwgNTIsIDU1LCAxMjgsIDY4LCA0OCwgNTIsIAorICAgIDU0LCA2NSwgMTI4LCA2OCwgNDgsIDUyLCA1NCwgMTI4LCA2OCwgNDgsIDUyLCA1MywgMTI4LCA2OCwgNDgsIDUyLCA1MiwgCisgICAgMTI4LCA2OCwgNDgsIDUyLCA1MSwgMTI4LCA2OCwgNDgsIDUyLCA1MCwgMTI4LCA2OCwgNDgsIDUyLCA0OSwgMTI4LCA2OCwgCisgICAgNDgsIDUyLCA0OCwgMTI4LCA2OCwgNDgsIDUxLCA1NywgMTI4LCA2OCwgNDgsIDUxLCA1NiwgMTI4LCA2OCwgNDgsIDUxLCAKKyAgICA1NSwgMTI4LCA2OCwgNDgsIDUxLCA1NCwgMTI4LCA2OCwgNDgsIDUxLCA1MywgMTI4LCA2OCwgNDgsIDUxLCA1MiwgNjUsIAorICAgIDEyOCwgNjgsIDQ4LCA1MSwgNTIsIDEyOCwgNjgsIDQ4LCA1MSwgNTEsIDEyOCwgNjgsIDQ4LCA1MSwgNTAsIDEyOCwgNjgsIAorICAgIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDY4LCA0OCwgNTEsIDQ5LCAxMjgsIDY4LCA0OCwgNTEsIDQ4LCAxMjgsIDY4LCA0OCwgCisgICAgNTAsIDU3LCAxMjgsIDY4LCA0OCwgNTAsIDU2LCAxMjgsIDY4LCA0OCwgNTAsIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDUwLCAKKyAgICA1NSwgMTI4LCA2OCwgNDgsIDUwLCA1NCwgMTI4LCA2OCwgNDgsIDUwLCA1MywgMTI4LCA2OCwgNDgsIDUwLCA1MiwgMTI4LCAKKyAgICA2OCwgNDgsIDUwLCA1MSwgMTI4LCA2OCwgNDgsIDUwLCA1MCwgMTI4LCA2OCwgNDgsIDUwLCA0OSwgMTI4LCA2OCwgNDgsIAorICAgIDUwLCA0OCwgMTI4LCA2OCwgNDgsIDQ5LCA1NywgMTI4LCA2OCwgNDgsIDQ5LCA1NiwgMTI4LCA2OCwgNDgsIDQ5LCA1NSwgCisgICAgMTI4LCA2OCwgNDgsIDQ5LCA1NCwgMTI4LCA2OCwgNDgsIDQ5LCA1MywgMTI4LCA2OCwgNDgsIDQ5LCA1MiwgMTI4LCA2OCwgCisgICAgNDgsIDQ5LCA1MSwgMTI4LCA2OCwgNDgsIDQ5LCA1MCwgMTI4LCA2OCwgNDgsIDQ5LCA0OSwgMTI4LCA2OCwgNDgsIDQ5LCAKKyAgICA0OCwgMTI4LCA2OCwgNDgsIDQ4LCA1NywgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIAorICAgIDEyOCwgNjgsIDQ4LCA0OCwgNTUsIDEyOCwgNjgsIDQ4LCA0OCwgNTQsIDEyOCwgNjgsIDQ4LCA0OCwgNTMsIDEyOCwgNjgsIAorICAgIDQ4LCA0OCwgNTIsIDEyOCwgNjgsIDQ4LCA0OCwgNTEsIDEyOCwgNjgsIDQ4LCA0OCwgNTAsIDEyOCwgNjgsIDQ4LCA0OCwgCisgICAgNDksIDEyOCwgNjcsIDg5LCA4OCwgMTI4LCA2NywgODksIDg0LCAxMjgsIDY3LCA4OSwgODIsIDg4LCAxMjgsIDY3LCA4OSwgCisgICAgODIsIDY5LCA3OCwgNjUsIDczLCAxOTUsIDY3LCA4OSwgODIsIDEyOCwgNjcsIDg5LCA4MCwgODIsIDczLCA3OSwgMjEyLCAKKyAgICA2NywgODksIDgwLCA2OSwgODIsIDg1LCA4MywgMTI4LCA2NywgODksIDgwLCAxMjgsIDY3LCA4OSwgNzYsIDczLCA3OCwgNjgsIAorICAgIDgyLCA3MywgNjcsIDczLCA4NCwgODksIDEyOCwgNjcsIDg5LCA2NywgNzYsIDc5LCA3OCwgNjksIDEyOCwgNjcsIDg5LCA2NSwgCisgICAgODksIDEyOCwgNjcsIDg5LCA2NSwgODcsIDEyOCwgNjcsIDg5LCA2NSwgMTI4LCA2NywgODcsIDc5LCA3OSwgMTI4LCA2NywgCisgICAgODcsIDc5LCAxMjgsIDY3LCA4NywgNzMsIDczLCAxMjgsIDY3LCA4NywgNzMsIDEyOCwgNjcsIDg3LCA2OSwgNzksIDgyLCAKKyAgICA4NCwgNzIsIDEyOCwgNjcsIDg3LCA2OSwgMTI4LCA2NywgODcsIDY1LCA2NSwgMTI4LCA2NywgODUsIDg4LCAxMjgsIDY3LCAKKyAgICA4NSwgODUsIDEyOCwgNjcsIDg1LCAyMTIsIDY3LCA4NSwgODMsIDg0LCA3OSwgNzcsIDgzLCAxMjgsIDY3LCA4NSwgODMsIAorICAgIDg0LCA3OSwgNzcsIDY5LCAyMTAsIDY3LCA4NSwgODMsIDg0LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA4NSwgODMsIDgwLCAKKyAgICAxMjgsIDY3LCA4NSwgODIsIDg4LCAxMjgsIDY3LCA4NSwgODIsIDg2LCA3MywgNzgsIDE5OSwgNjcsIDg1LCA4MiwgODYsIAorICAgIDY5LCA2OCwgMTI4LCA2NywgODUsIDgyLCA4NiwgNjksIDE5NiwgNjcsIDg1LCA4MiwgODYsIDY5LCAxMjgsIDY3LCA4NSwgCisgICAgODIsIDg2LCAxOTcsIDY3LCA4NSwgODIsIDgyLCAyMTcsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDg0LCAxMjgsIDY3LCAKKyAgICA4NSwgODIsIDgyLCA2OSwgNzgsIDIxMiwgNjcsIDg1LCA4MiwgNzYsIDIxNywgNjcsIDg1LCA4MiwgNzYsIDEyOCwgNjcsIAorICAgIDg1LCA4MiwgMTI4LCA2NywgODUsIDgwLCA4MCwgNjksIDY4LCAxMjgsIDY3LCA4NSwgODAsIDgwLCA2OSwgMTk2LCA2NywgCisgICAgODUsIDc5LCA4OCwgMTI4LCA2NywgODUsIDc5LCA4MCwgMTI4LCA2NywgODUsIDc5LCAxMjgsIDY3LCA4NSwgMjA1LCA2NywgCisgICAgODUsIDY2LCA2OSwgNjgsIDEyOCwgNjcsIDg1LCA2NiwgMTk3LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIDc5LCAKKyAgICAxMjgsIDY3LCA4NSwgNjUsIDg0LCA4MiwgNzMsIDc2LCA3NiwgMjA3LCA2NywgODUsIDY1LCAyMDUsIDY3LCA4NSwgMTI4LCAKKyAgICA2NywgODMsIDczLCAxMjgsIDY3LCA4MiwgODksIDgzLCA4NCwgNjUsIDIwNCwgNjcsIDgyLCA4OSwgODAsIDg0LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgNzcsIDc3LCA3MywgMTk1LCA2NywgODIsIDg5LCA3MywgNzgsIDE5OSwgNjcsIDgyLCA4NSwgOTAsIDY5LCA3MywgCisgICAgODIsIDIwNywgNjcsIDgyLCA4NSwgNjcsIDczLCA3MCwgNzksIDgyLCAyMDUsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCAKKyAgICA2OSwgNDUsIDUzLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUyLCAxMjgsIDY3LCA4MiwgODUsIAorICAgIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUxLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUwLCAKKyAgICAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgMTI4LCA2NywgODIsIDc5LCA4NywgNzgsIDEyOCwgNjcsIAorICAgIDgyLCA3OSwgODMsIDgzLCA3MywgNzgsIDcxLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCAxOTksIDY3LCA4MiwgCisgICAgNzksIDgzLCA4MywgNzIsIDY1LCA4NCwgNjcsIDIwMCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgNjgsIDQ1LCA4NCwgNjUsIAorICAgIDczLCA3NiwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDY5LCA2OCwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDY5LCAKKyAgICAxOTYsIDY3LCA4MiwgNzksIDgzLCA4MywgNjYsIDc5LCA3OCwgNjksIDgzLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgCisgICAgMTI4LCA2NywgODIsIDc5LCA4MywgMjExLCA2NywgODIsIDc5LCA4MCwgMTI4LCA2NywgODIsIDc5LCA3MywgODgsIDEyOCwgCisgICAgNjcsIDgyLCA3OSwgNjcsIDg1LCAyMTEsIDY3LCA4MiwgNzksIDY3LCA3OSwgNjgsIDczLCA3NiwgNjksIDEyOCwgNjcsIDgyLCAKKyAgICA3MywgNjcsIDc1LCA2OSwgMjEyLCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgODQsIDgzLCAxMjgsIDY3LCA4MiwgNjksIAorICAgIDgzLCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgMjEyLCA2NywgODIsIDY5LCA2OCwgCisgICAgNzMsIDIxMiwgNjcsIDgyLCA2OSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjcsIDgyLCA2OSwgNjUsIDc3LCAxMjgsIDY3LCAKKyAgICA4MiwgNjUsIDg5LCA3OSwgNzgsIDEyOCwgNjcsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODIsIDEyOCwgNjcsIDgyLCA2NSwgNjYsIAorICAgIDEyOCwgNjcsIDgyLCAxMjgsIDY3LCA3OSwgODgsIDEyOCwgNjcsIDc5LCA4NywgMTI4LCA2NywgNzksIDIxNSwgNjcsIDc5LCAKKyAgICA4NiwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODUsIDgwLCA3NiwgMTk3LCA2NywgNzksIDg1LCA3OCwgODQsIDczLCA3OCwgCisgICAgMTk5LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIDczLCA3OCwgNzUsIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDg0LCAKKyAgICA2OSwgODIsIDY2LCA3OSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA2NywgNzMsIDIwNCwgNjcsIDc5LCA4NSwgNjcsIAorICAgIDIwMCwgNjcsIDc5LCA4NCwgMTI4LCA2NywgNzksIDgyLCA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCA2OCwgMjExLCA2NywgCisgICAgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgMTI4LCA2NywgNzksIDgyLCA4MCwgODMsIDY5LCAxMjgsIDY3LCA3OSwgODIsIDgwLCAKKyAgICA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDgyLCA3OSwgNzgsIDczLCA4MywgMTI4LCA2NywgNzksIAorICAgIDgyLCA3OCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgCisgICAgMjEwLCA2NywgNzksIDgyLCA3NSwgMTI4LCA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY3LCAKKyAgICA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA2NywgNzksIDgwLCA4OSwgMTI4LCA2NywgNzksIDgwLCA4MiwgNzksIAorICAgIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODAsIDgwLCA2OSwgODIsIDQ1LCA1MCwgMTI4LCA2NywgNzksIDgwLCA4MCwgCisgICAgNjksIDgyLCAxMjgsIDY3LCA3OSwgODAsIDEyOCwgNjcsIDc5LCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCA2OSwgMTI4LCA2NywgNzksIDc5LCA3NSwgNjksIDE5NiwgNjcsIAorICAgIDc5LCA3OSwgMTI4LCA2NywgNzksIDc4LCA4NiwgNjksIDgyLCA3MSwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg2LCA2OSwgCisgICAgNzgsIDczLCA2OSwgNzgsIDY3LCAxOTcsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCAKKyAgICA4MiwgNzksIDIwNCwgNjcsIDc5LCA3OCwgODQsIDgyLCA2NSwgODIsIDczLCA2OSwgODQsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIAorICAgIDg0LCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNzksIDg1LCA4MiwgNjksIDE5NiwgCisgICAgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgMjEwLCA2NywgNzksIDc4LCA4NCwgNzMsIDc4LCA4NSwgNzMsIDc4LCAxOTksIDY3LCAKKyAgICA3OSwgNzgsIDg0LCA3MywgNzgsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc4LCA4NCwgNjksIDc4LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNjksIDc3LCA4MCwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKKyAgICA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgMjExLCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgNzMsIDc4LCAxOTksIAorICAgIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNjcsIDc5LCA3OCwgODQsIDY1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA3OCwgCisgICAgODMsIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4MywgODQsIDgyLCA4NSwgNjcsIAorICAgIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgCisgICAgNjUsIDc4LCAyMTIsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIDc4LCA2NywgODksIDEyOCwgNjcsIDc5LCA3OCwgODMsIDY5LCAKKyAgICA2NywgODUsIDg0LCA3MywgODYsIDE5NywgNjcsIDc5LCA3OCwgNzQsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIAorICAgIDY3LCA3OSwgNzgsIDc0LCA4NSwgNzEsIDY1LCA4NCwgMTk3LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgNzMsIDc4LCAKKyAgICAxOTksIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIAorICAgIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDczLCA2NywgNjUsIDIwNCwgNjcsIDc5LCA3OCwgNzEsIDgyLCA4NSwgNjksIDc4LCAKICAgICAyMTIsIDY3LCA3OSwgNzgsIDcxLCA4MiwgNjUsIDg0LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIAogICAgIDc4LCA3MCwgODUsIDgzLCA2OSwgMTk2LCA2NywgNzksIDc4LCA3MCwgNzksIDg1LCA3OCwgNjgsIDY5LCAxOTYsIDY3LCA3OSwgCiAgICAgNzgsIDcwLCA3NiwgNzMsIDY3LCA4NCwgMTI4LCA2NywgNzksIDc4LCA3MCwgNjksIDg0LCA4NCwgMjAxLCA2NywgNzksIDc4LCAKICAgICA2NywgNjUsIDg2LCA2OSwgNDUsIDgzLCA3MywgNjgsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDY3LCA2NSwgODYsIDY5LCA0NSwgCi0gICAgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2NywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA4NSwgODQsIDY5LCAKLSAgICA4MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAotICAgIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3NywgODAsIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgCi0gICAgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIAotICAgIDY5LCA2OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCi0gICAgNjUsIDgyLCA2OSwgMTI4LCA2NywgNzksIDc3LCA3NywgNzksIDIwNiwgNjcsIDc5LCA3NywgNzcsIDY5LCA4MiwgNjcsIDczLCAKLSAgICA2NSwgMjA0LCA2NywgNzksIDc3LCA3NywgNjUsIDc4LCA2OCwgMTI4LCA2NywgNzksIDc3LCA3NywgNjUsIDEyOCwgNjcsIAotICAgIDc5LCA3NywgNzcsIDE5MywgNjcsIDc5LCA3NywgNjksIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDY2LCAxMjgsIDY3LCA3OSwgCi0gICAgNzYsIDg1LCA3NywgNzgsIDEyOCwgNjcsIDc5LCA3NiwgNzksIDgyLCAxMjgsIDY3LCA3OSwgNzYsIDc2LCA3MywgODMsIDczLCAKLSAgICA3OSwgMjA2LCA2NywgNzksIDc2LCA3NiwgMTI4LCA2NywgNzksIDc2LCAxOTYsIDY3LCA3OSwgNzAsIDcwLCA3MywgNzgsIAotICAgIDEyOCwgNjcsIDc5LCA2OSwgNzgsIDcxLCAxMjgsIDY3LCA3OSwgNjksIDc4LCAxOTksIDY3LCA3OSwgNjgsIDY1LCAxMjgsIAotICAgIDY3LCA3OSwgNjcsIDc1LCA4NCwgNjUsIDczLCAyMDQsIDY3LCA3OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgCi0gICAgNjUsIDEyOCwgNjcsIDc5LCAxMjgsIDY3LCA3NywgMTI4LCA2NywgMjA1LCA2NywgNzYsIDg1LCA4MywgODQsIDY5LCAyMTAsIAotICAgIDY3LCA3NiwgODUsIDY2LCA4MywgMTI4LCA2NywgNzYsIDg1LCA2NiwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCA2NywgCi0gICAgNzYsIDg1LCA2NiwgMTI4LCA2NywgNzYsIDg1LCAxOTQsIDY3LCA3NiwgNzksIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCAKLSAgICA3OSwgODUsIDY4LCAxMjgsIDY3LCA3NiwgNzksIDg1LCAxOTYsIDY3LCA3NiwgNzksIDg0LCA3MiwgNjksIDgzLCAxMjgsIAotICAgIDY3LCA3NiwgNzksIDg0LCA3MiwgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDg0LCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgCi0gICAgNzgsIDY5LCA4MywgODMsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA2OCwgMTI4LCA2NywgNzYsIDc5LCA4MywgMTk3LCAKLSAgICA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIDE5NywgNjcsIDc2LCA3OSwgNjcsIDIwMywgNjcsIDc2LCA3MywgODYsIAotICAgIDczLCA4MywgMTI4LCA2NywgNzYsIDczLCA4MCwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA3NiwgNzMsIDc4LCA3NSwgCi0gICAgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc4LCA3MSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc3LCA2NSwgNjcsIDg1LCAKLSAgICA4MywgMTI4LCA2NywgNzYsIDczLCA3MCwgNzAsIDEyOCwgNjcsIDc2LCA3MywgNjcsIDc1LCAxMjgsIDY3LCA3NiwgNjksIAotICAgIDcwLCA0NSwgNTAsIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDQ1LCA0OSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgMTI4LCA2NywgCi0gICAgNzYsIDY5LCAxOTgsIDY3LCA3NiwgNjksIDY1LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNjksIDY1LCAyMTAsIDY3LCAKLSAgICA3NiwgNjUsIDg3LCAxMjgsIDY3LCA3NiwgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNjUsIDgwLCA4MCwgNjksIAotICAgIDIxMCwgNjcsIDc2LCA2NSwgNzgsIDEyOCwgNjcsIDc2LCA2NSwgNzMsIDc3LCAxMjgsIDY3LCA3NiwgMTI4LCA2NywgNzMsIAotICAgIDg4LCAxMjgsIDY3LCA3MywgODYsIDczLCA3NiwgNzMsIDY1LCA3OCwgMTI4LCA2NywgNzMsIDg0LCA4OSwgODMsIDY3LCA2NSwgCi0gICAgODAsIDE5NywgNjcsIDczLCA4NCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDIxMSwgNjcsIDczLCA4MiwgNjcsIDg1LCAKLSAgICA3NywgNzAsIDc2LCA2OSwgODgsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NywgNzAsIDc2LCA2OSwgMjE2LCA2NywgNzMsIAotICAgIDgyLCA2NywgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCA4MywgMTI4LCA2NywgCi0gICAgNzMsIDgyLCA2NywgNzYsIDY5LCAxMjgsIDY3LCA3MywgODAsIDEyOCwgNjcsIDczLCA3OCwgNzgsIDY1LCA2NiwgNjUsIDgyLCAKLSAgICAxMjgsIDY3LCA3MywgNzgsIDY5LCA3NywgNjUsIDEyOCwgNjcsIDczLCA3MywgMTI4LCA2NywgNzMsIDY5LCA4OCwgMTI4LCAKLSAgICA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA2NywgCi0gICAgNzMsIDY5LCA4NSwgNjcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgNzMsIAotICAgIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDY3LCA3MywgNjksIDg1LCAxOTUsIDY3LCA3MywgNjksIDg0LCAxMjgsIDY3LCA3MywgCi0gICAgNjksIDgwLCAxMjgsIDY3LCA3MywgNjksIDEyOCwgNjcsIDcyLCA4OSwgODgsIDEyOCwgNjcsIDcyLCA4OSwgODQsIDEyOCwgCi0gICAgNjcsIDcyLCA4OSwgODIsIDg4LCAxMjgsIDY3LCA3MiwgODksIDgyLCAxMjgsIDY3LCA3MiwgODksIDgwLCAxMjgsIDY3LCAKLSAgICA3MiwgODUsIDg4LCAxMjgsIDY3LCA3MiwgODUsIDgyLCA4OCwgMTI4LCA2NywgNzIsIDg1LCA4MiwgNjcsIDcyLCAxMjgsIAotICAgIDY3LCA3MiwgODUsIDgyLCAxMjgsIDY3LCA3MiwgODUsIDgwLCAxMjgsIDY3LCA3MiwgODUsIDc5LCA4OCwgMTI4LCA2NywgCi0gICAgNzIsIDg1LCA3OSwgODQsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDY3LCA3MiwgODUsIDc5LCAxMjgsIDY3LCAKLSAgICA3MiwgODUsIDc2LCA2NSwgMTI4LCA2NywgNzIsIDg1LCAxMjgsIDY3LCA3MiwgODIsIDg5LCA4MywgNjUsIDc4LCA4NCwgNzIsIAotICAgIDY5LCA3NywgODUsIDc3LCAxMjgsIDY3LCA3MiwgODIsIDc5LCA3OCwgNzksIDg1LCAxMjgsIDY3LCA3MiwgODIsIDc5LCA3OCwgCi0gICAgNzksIDc4LCAxMjgsIDY3LCA3MiwgODIsIDc5LCA3NywgMTkzLCA2NywgNzIsIDgyLCA3OSwgMTkzLCA2NywgNzIsIDgyLCAKLSAgICA3MywgODYsIDczLCAxMjgsIDY3LCA3MiwgODIsIDczLCA4MywgODQsIDc3LCA2NSwgODMsIDEyOCwgNjcsIDcyLCA4MiwgNzMsIAotICAgIDgzLCA4NCwgNzcsIDY1LCAyMTEsIDY3LCA3MiwgNzksIDg4LCAxMjgsIDY3LCA3MiwgNzksIDg0LCAxMjgsIDY3LCA3MiwgCi0gICAgNzksIDgyLCA2OSwgODYsIDc3LCAxOTMsIDY3LCA3MiwgNzksIDgwLCAxMjgsIDY3LCA3MiwgNzksIDc1LCA2OSwgMTI4LCAKLSAgICA2NywgNzIsIDc5LCA2OSwgMTI4LCA2NywgNzIsIDc5LCA2NywgNzksIDc2LCA2NSwgODQsIDE5NywgNjcsIDcyLCA3OSwgNjUsIAotICAgIDEyOCwgNjcsIDcyLCAyMDcsIDY3LCA3MiwgNzMsIDg0LCA4NSwgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgCi0gICAgNzMsIDc5LCA4MywgMTI4LCA2NywgNzIsIDczLCA4NCwgODUsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIAotICAgIDczLCA2OSwgODUsIDY3LCAxMjgsIDY3LCA3MiwgNzMsIDg0LCA4NSwgNjksIDg1LCA3NywgODMsIDczLCA3OSwgODMsIDEyOCwgCi0gICAgNjcsIDcyLCA3MywgODQsIDg1LCA2OSwgODUsIDc3LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDcyLCA3MywgODQsIAotICAgIDg1LCA2OSwgODUsIDc3LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA2NywgNzIsIDczLCA4MiwgNzksIDc4LCAKLSAgICAxMjgsIDY3LCA3MiwgNzMsIDgyLCA2OSwgODQsIDEyOCwgNjcsIDcyLCA3MywgNzgsIDcxLCAxMjgsIDY3LCA3MiwgNzMsIAotICAgIDc4LCA2OSwgODMsIDE5NywgNjcsIDcyLCA3MywgNzgsIDEyOCwgNjcsIDcyLCA3MywgNzcsIDY5LCAxMjgsIDY3LCA3MiwgCi0gICAgNzMsIDc2LCA3NiwgMjEzLCA2NywgNzIsIDczLCA3NiwgNjgsIDgyLCA2OSwgMjA2LCA2NywgNzIsIDczLCA3NiwgNjgsIAotICAgIDEyOCwgNjcsIDcyLCA3MywgNzYsIDEyOCwgNjcsIDcyLCA3MywgNzUsIDIwMSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgCi0gICAgNzIsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgNDUsIAotICAgIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCAyMDAsIDY3LCA3MiwgNzMsIDY3LCA3NSwgCi0gICAgNjksIDc4LCAxMjgsIDY3LCA3MiwgNzMsIDY3LCA3NSwgMTI4LCA2NywgNzIsIDczLCAxMjgsIDY3LCA3MiwgMjAxLCA2NywgCi0gICAgNzIsIDcyLCA2NSwgMTI4LCA2NywgNzIsIDY5LCA4OCwgMTI4LCA2NywgNzIsIDY5LCA4NiwgODIsIDc5LCAyMDYsIDY3LCAKLSAgICA3MiwgNjksIDg0LCAxMjgsIDY3LCA3MiwgNjksIDgzLCA4NCwgNzgsIDg1LCA4NCwgMTI4LCA2NywgNzIsIDY5LCA4MywgCi0gICAgMjExLCA2NywgNzIsIDY5LCA4MiwgODIsIDIxNywgNjcsIDcyLCA2OSwgODIsIDgyLCA3MywgNjksIDgzLCAxMjgsIDY3LCAKKyAgICA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY3LCA3OSwgNzcsIDgwLCA4NSwgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIAorICAgIDc5LCA3NywgODAsIDg1LCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCAKKyAgICA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIDY3LCA3OSwgNzcsIDgwLCA3OSwgODMsIAorICAgIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA2NywgCisgICAgNzksIDc3LCA4MCwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNzMsIAorICAgIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgCisgICAgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA2NSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCAKKyAgICA3OSwgMjA2LCA2NywgNzksIDc3LCA3NywgNjksIDgyLCA2NywgNzMsIDY1LCAyMDQsIDY3LCA3OSwgNzcsIDc3LCA2NSwgNzgsIAorICAgIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCA2NSwgMTI4LCA2NywgNzksIDc3LCA3NywgMTkzLCA2NywgNzksIDc3LCA2OSwgCisgICAgODQsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDczLCA3OCwgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDY1LCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA2NiwgMTI4LCA2NywgNzksIDc2LCA4NSwgNzcsIDc4LCAxMjgsIAorICAgIDY3LCA3OSwgNzYsIDc5LCA4MiwgMTI4LCA2NywgNzksIDc2LCA3NiwgNzMsIDgzLCA3MywgNzksIDIwNiwgNjcsIDc5LCA3NiwgCisgICAgNzYsIDEyOCwgNjcsIDc5LCA3NiwgMTk2LCA2NywgNzksIDcwLCA3MCwgNzMsIDc4LCAxMjgsIDY3LCA3OSwgNjksIDc4LCAKKyAgICA3MSwgMTI4LCA2NywgNzksIDY5LCA3OCwgMTk5LCA2NywgNzksIDY4LCA2NSwgMTI4LCA2NywgNzksIDY3LCA3NSwgODQsIAorICAgIDY1LCA3MywgMjA0LCA2NywgNzksIDY1LCA4MywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzksIDY1LCAxMjgsIDY3LCA3NywgCisgICAgMTI4LCA2NywgMjA1LCA2NywgNzYsIDg1LCA4MywgODQsIDY5LCAyMTAsIDY3LCA3NiwgODUsIDY2LCA4MywgMTI4LCA2NywgCisgICAgNzYsIDg1LCA2NiwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCA2NywgNzYsIDg1LCA2NiwgMTI4LCA2NywgNzYsIDg1LCAKKyAgICAxOTQsIDY3LCA3NiwgNzksIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA3OSwgODUsIDY4LCAxMjgsIDY3LCA3NiwgNzksIAorICAgIDg1LCAxOTYsIDY3LCA3NiwgNzksIDg0LCA3MiwgNjksIDgzLCAxMjgsIDY3LCA3NiwgNzksIDg0LCA3MiwgMTI4LCA2NywgCisgICAgNzYsIDc5LCA4MywgNjksIDg0LCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgNzgsIDY5LCA4MywgODMsIDEyOCwgNjcsIDc2LCAKKyAgICA3OSwgODMsIDY5LCA2OCwgMTI4LCA2NywgNzYsIDc5LCA4MywgMTk3LCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIAorICAgIDE5NywgNjcsIDc2LCA3OSwgNjcsIDIwMywgNjcsIDc2LCA3MywgODYsIDczLCA4MywgMTI4LCA2NywgNzYsIDczLCA4MCwgCisgICAgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA3NiwgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc4LCAKKyAgICA3MSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc3LCA2NSwgNjcsIDg1LCA4MywgMTI4LCA2NywgNzYsIDczLCA3MCwgNzAsIAorICAgIDEyOCwgNjcsIDc2LCA3MywgNjcsIDc1LCAxMjgsIDY3LCA3NiwgNjksIDcwLCA0NSwgNTAsIDEyOCwgNjcsIDc2LCA2OSwgCisgICAgNzAsIDQ1LCA0OSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgMTI4LCA2NywgNzYsIDY5LCAxOTgsIDY3LCA3NiwgNjksIDY1LCAKKyAgICA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNjksIDY1LCAyMTAsIDY3LCA3NiwgNjUsIDgzLCA4MywgNzMsIDY3LCA2NSwgCisgICAgMjA0LCA2NywgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA2NywgNzYsIDY1LCA4MCwgODAsIDY5LCAyMTAsIDY3LCAKKyAgICA3NiwgNjUsIDc4LCAxMjgsIDY3LCA3NiwgNjUsIDIwNiwgNjcsIDc2LCA2NSwgNzcsIDgzLCA3MiwgNjksIDc2LCAyMDQsIAorICAgIDY3LCA3NiwgNjUsIDczLCA3NywgMTI4LCA2NywgNzYsIDEyOCwgNjcsIDczLCA4OCwgMTI4LCA2NywgNzMsIDg2LCA3MywgCisgICAgNzYsIDczLCA2NSwgNzgsIDEyOCwgNjcsIDczLCA4NCwgODksIDgzLCA2NywgNjUsIDgwLCA2OSwgMTI4LCA2NywgNzMsIDg0LCAKKyAgICA4OSwgODMsIDY3LCA2NSwgODAsIDE5NywgNjcsIDczLCA4NCwgMjAxLCA2NywgNzMsIDg0LCA2NSwgODQsIDczLCA3OSwgCisgICAgMjA2LCA2NywgNzMsIDg0LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgMjExLCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCAKKyAgICA3MCwgNzYsIDY5LCA4OCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCA3MCwgNzYsIDY5LCAyMTYsIDY3LCA3MywgODIsIAorICAgIDY3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3MywgODIsIDY3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NywgCisgICAgNzMsIDgyLCA2NywgNzYsIDczLCA3OCwgMTk5LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCA4MywgMTI4LCA2NywgNzMsIDgyLCAKKyAgICA2NywgNzYsIDY5LCAyMTEsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDY4LCAxMjgsIDY3LCA3MywgODAsIDEyOCwgNjcsIAorICAgIDczLCA3OCwgNzgsIDY1LCA2NiwgNjUsIDgyLCAxMjgsIDY3LCA3MywgNzgsIDY5LCA3NywgNjUsIDEyOCwgNjcsIDczLCAKKyAgICAyMDYsIDY3LCA3MywgMjA1LCA2NywgNzMsIDczLCAxMjgsIDY3LCA3MywgNjksIDg4LCAxMjgsIDY3LCA3MywgNjksIDg1LCAKKyAgICA2NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDY3LCA3MywgNjksIDg1LCA2NywgCisgICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA3MywgNjksIDg1LCA3OCwgNzEsIAorICAgIDEyOCwgNjcsIDczLCA2OSwgODUsIDE5NSwgNjcsIDczLCA2OSwgODQsIDEyOCwgNjcsIDczLCA2OSwgODAsIDEyOCwgNjcsIAorICAgIDczLCA2OSwgMTI4LCA2NywgNzIsIDg5LCA4OCwgMTI4LCA2NywgNzIsIDg5LCA4NCwgMTI4LCA2NywgNzIsIDg5LCA4MiwgCisgICAgODgsIDEyOCwgNjcsIDcyLCA4OSwgODIsIDEyOCwgNjcsIDcyLCA4OSwgODAsIDEyOCwgNjcsIDcyLCA4NywgODYsIDEyOCwgCisgICAgNjcsIDcyLCA4NSwgODgsIDEyOCwgNjcsIDcyLCA4NSwgODIsIDg4LCAxMjgsIDY3LCA3MiwgODUsIDgyLCA2NywgNzIsIAorICAgIDEyOCwgNjcsIDcyLCA4NSwgODIsIDEyOCwgNjcsIDcyLCA4NSwgODAsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDg4LCAxMjgsIAorICAgIDY3LCA3MiwgODUsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgODAsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDEyOCwgCisgICAgNjcsIDcyLCA4NSwgNzYsIDY1LCAxMjgsIDY3LCA3MiwgODUsIDEyOCwgNjcsIDcyLCA4MiwgODksIDgzLCA2NSwgNzgsIDg0LCAKKyAgICA3MiwgNjksIDc3LCA4NSwgNzcsIDEyOCwgNjcsIDcyLCA4MiwgNzksIDc4LCA3OSwgODUsIDEyOCwgNjcsIDcyLCA4MiwgNzksIAorICAgIDc4LCA3OSwgNzgsIDEyOCwgNjcsIDcyLCA4MiwgNzksIDc3LCAxOTMsIDY3LCA3MiwgODIsIDc5LCAxOTMsIDY3LCA3MiwgCisgICAgODIsIDczLCA4NiwgNzMsIDEyOCwgNjcsIDcyLCA4MiwgNzMsIDgzLCA4NCwgNzcsIDY1LCA4MywgMTI4LCA2NywgNzIsIDgyLCAKKyAgICA3MywgODMsIDg0LCA3NywgNjUsIDIxMSwgNjcsIDcyLCA3OSwgODksIDEyOCwgNjcsIDcyLCA3OSwgODgsIDEyOCwgNjcsIAorICAgIDcyLCA3OSwgODQsIDEyOCwgNjcsIDcyLCA3OSwgODIsIDY5LCA4NiwgNzcsIDE5MywgNjcsIDcyLCA3OSwgODAsIDEyOCwgCisgICAgNjcsIDcyLCA3OSwgNzUsIDY5LCAxMjgsIDY3LCA3MiwgNzksIDY5LCAxMjgsIDY3LCA3MiwgNzksIDY3LCA3OSwgNzYsIDY1LCAKKyAgICA4NCwgMTk3LCA2NywgNzIsIDc5LCA2NSwgMTI4LCA2NywgNzIsIDIwNywgNjcsIDcyLCA3MywgODQsIDg1LCA2OSwgODUsIAorICAgIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA3MiwgNzMsIDg0LCA4NSwgNjksIDg1LCAKKyAgICA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDcyLCA3MywgODQsIDg1LCA2OSwgCisgICAgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNzIsIDczLCA4NCwgODUsIDY5LCA4NSwgNzcsIDY3LCA3MywgNjksIAorICAgIDg1LCA2NywgMTI4LCA2NywgNzIsIDczLCA4NCwgODUsIDY5LCA4NSwgNzcsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAKKyAgICAxMjgsIDY3LCA3MiwgNzMsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDcyLCA3MywgODIsIDY5LCA4NCwgMTI4LCA2NywgNzIsIAorICAgIDczLCA4MCwgNzcsIDg1LCA3OCwgNzUsIDEyOCwgNjcsIDcyLCA3MywgNzgsIDc5LCA3OSwgMjAzLCA2NywgNzIsIDczLCA3OCwgCisgICAgNzEsIDEyOCwgNjcsIDcyLCA3MywgNzgsIDY5LCA4MywgMTk3LCA2NywgNzIsIDczLCA3OCwgMTI4LCA2NywgNzIsIDczLCAKKyAgICA3NywgNjksIDEyOCwgNjcsIDcyLCA3MywgNzYsIDc2LCAyMTMsIDY3LCA3MiwgNzMsIDc2LCA2OCwgODIsIDY5LCAyMDYsIAorICAgIDY3LCA3MiwgNzMsIDc2LCA2OCwgMTI4LCA2NywgNzIsIDczLCA3NiwgMTI4LCA2NywgNzIsIDczLCA3NSwgMjAxLCA2NywgCisgICAgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDY3LCA3MiwgNzMsIAorICAgIDY5LCA4NSwgNjcsIDcyLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDIwMCwgCisgICAgNjcsIDcyLCA3MywgNjcsIDc1LCA2OSwgNzgsIDEyOCwgNjcsIDcyLCA3MywgNjcsIDc1LCAxMjgsIDY3LCA3MiwgNzMsIAorICAgIDEyOCwgNjcsIDcyLCAyMDEsIDY3LCA3MiwgNzIsIDY1LCAxMjgsIDY3LCA3MiwgNjksIDg4LCAxMjgsIDY3LCA3MiwgNjksIAorICAgIDg2LCA4MiwgNzksIDIwNiwgNjcsIDcyLCA2OSwgODQsIDEyOCwgNjcsIDcyLCA2OSwgODMsIDg0LCA3OCwgODUsIDg0LCAKKyAgICAxMjgsIDY3LCA3MiwgNjksIDgzLCA4NCwgMTI4LCA2NywgNzIsIDY5LCA4MywgMjExLCA2NywgNzIsIDY5LCA4MiwgODksIAorICAgIDEyOCwgNjcsIDcyLCA2OSwgODIsIDgyLCAyMTcsIDY3LCA3MiwgNjksIDgyLCA4MiwgNzMsIDY5LCA4MywgMTI4LCA2NywgCiAgICAgNzIsIDY5LCA4MSwgODUsIDY5LCA4MiwgNjksIDE5NiwgNjcsIDcyLCA2OSwgODAsIDEyOCwgNjcsIDcyLCA2OSwgMjA2LCAKICAgICA2NywgNzIsIDY5LCA3MywgNzgsIDY1LCA4MCwgMTI4LCA2NywgNzIsIDY5LCA3MywgNzUsIDcyLCA2OSwgNzMsIDEyOCwgNjcsIAotICAgIDcyLCA2OSwgNzMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA4MiwgNzMsIDc4LCAxOTksIDY3LCA3MiwgCi0gICAgNjksIDY5LCAxMjgsIDY3LCA3MiwgNjksIDY3LCA3NSwgMTI4LCA2NywgNzIsIDY5LCA2NywgMjAzLCA2NywgNzIsIDE5NywgCi0gICAgNjcsIDcyLCA2NSwgODgsIDEyOCwgNjcsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2NywgNzIsIDY1LCAKLSAgICA4NCwgODQsIDY1LCA4NywgNjUsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDg0LCAxMjgsIAotICAgIDY3LCA3MiwgNjUsIDgyLCAyMTIsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA3MywgCi0gICAgNzksIDIxMiwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDY1LCAKLSAgICA2NywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgMTI4LCA2NywgNzIsIAotICAgIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDc1LCA3OSwgMTI4LCA2NywgCi0gICAgNzIsIDY1LCA3NywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzMsIDEyOCwgNjcsIDcyLCAKLSAgICA2NSwgNzUsIDc3LCAxOTMsIDY3LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA2NywgNzIsIDY1LCA3MywgNzgsIDgzLCAxMjgsIAotICAgIDY3LCA3MiwgNjUsIDY4LCA2NSwgMTI4LCA2NywgNzIsIDY1LCAxOTYsIDY3LCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA3MSwgCi0gICAgNzQsIDEyOCwgNjcsIDY5LCA4OCwgMTI4LCA2NywgNjksIDgyLCA2OSwgODMsIDEyOCwgNjcsIDY5LCA4MiwgNjksIDc3LCAKLSAgICA3OSwgNzgsIDg5LCAxMjgsIDY3LCA2OSwgODIsIDY5LCA3NSwgMTI4LCA2NywgNjksIDgyLCA0NSwgODcsIDY1LCAxMjgsIAotICAgIDY3LCA2OSwgODAsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCAKLSAgICA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgCi0gICAgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIAotICAgIDczLCA2OSwgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCAKLSAgICA4NSwgNzcsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgCi0gICAgNzcsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4NSwgODIsIDczLCA2NSwgMjA0LCAKLSAgICA2NywgNjksIDc4LCA4NCwgODIsIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDE5NiwgNjcsIAotICAgIDY5LCA3OCwgODQsIDgyLCA2OSwgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDE5NywgNjcsIDY5LCA3OCwgMTI4LCA2NywgCi0gICAgNjksIDc2LCA4MywgNzMsIDg1LCA4MywgMTI4LCA2NywgNjksIDc2LCA2OSwgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgNjcsIDY5LCA3MywgODIsIDg0LCAxMjgsIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY3LCA2OSwgCi0gICAgNjksIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgMTkzLCAKLSAgICA2NywgNjksIDY4LCAyMDEsIDY3LCA2OSwgNjcsIDY5LCA3NSwgMTI4LCA2NywgNjksIDY3LCA2NSwgNzUsIDEyOCwgNjcsIAotICAgIDY5LCA2NywgNjUsIDIwMywgNjcsIDY5LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NywgODUsIDEyOCwgNjcsIDY3LCA3OSwgCi0gICAgMTI4LCA2NywgNjcsIDczLCAxMjgsIDY3LCA2NywgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDc5LCAxMjgsIDY3LCA2NywgCi0gICAgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNzksIDEyOCwgNjcsIDY3LCAKLSAgICA3MiwgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCAxMjgsIAotICAgIDY3LCA2NywgNzIsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDY5LCA2OSwgCi0gICAgMTI4LCA2NywgNjcsIDcyLCA2OSwgMTI4LCA2NywgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNjUsIDEyOCwgCi0gICAgNjcsIDY3LCA3MiwgMTI4LCA2NywgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDY5LCAxMjgsIDY3LCA2NywgNjUsIDY1LCAKLSAgICAxMjgsIDY3LCA2NywgNjUsIDEyOCwgNjcsIDY1LCA4OSwgNzgsIDEyOCwgNjcsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgNjcsIDY1LCA4OCwgMTI4LCA2NywgNjUsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDg1LCA4NCwgNzMsIDc5LCAyMDYsIAotICAgIDY3LCA2NSwgODUsIDc2LCA2OCwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgNjcsIDY1LCA4NSwgCi0gICAgMTI4LCA2NywgNjUsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDY3LCA2NSwgODQsIDEyOCwgNjcsIDY1LCAyMTIsIDY3LCA2NSwgCi0gICAgODMsIDg0LCA3NiwgNjksIDEyOCwgNjcsIDY1LCA4MiwgODksIDgzLCA4NCwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIDg0LCAKLSAgICAxMjgsIDY3LCA2NSwgODIsIDIxMSwgNjcsIDY1LCA4MiwgODIsIDczLCA2NSwgNzEsIDE5NywgNjcsIDY1LCA4MiwgODAsIAotICAgIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY3LCA2NSwgODIsIDIwOCwgNjcsIDY1LCA4MiwgNzksIDg1LCA4MywgNjksIDIwNCwgCi0gICAgNjcsIDY1LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgODIsIDc5LCAyMDYsIDY3LCA2NSwgODIsIDczLCAyMDMsIDY3LCAKLSAgICA2NSwgODIsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCA2OSwgODQsIDEyOCwgNjcsIDY1LCA4MiwgNjksIDIxMiwgNjcsIAotICAgIDY1LCA4MiwgMTk3LCA2NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjcsIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDY1LCA4MiwgCi0gICAgMTk2LCA2NywgNjUsIDgyLCAxMjgsIDY3LCA2NSwgMjEwLCA2NywgNjUsIDgwLCA4NSwgMjEyLCA2NywgNjUsIDgwLCA4NCwgCi0gICAgNzMsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDgwLCA4MiwgNzMsIDY3LCA3OSwgODIsIDc4LCAxMjgsIDY3LCA2NSwgODAsIDc5LCAKLSAgICAxMjgsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDc2LCAxMjgsIDY3LCA2NSwgNzgsIDg0LCA3MywgNzYsIDc2LCA2NSwgODQsIAotICAgIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCAxOTksIDY3LCA2NSwgNzgsIDY4LCA4OSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgCi0gICAgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgODUsIDEyOCwgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIAotICAgIDIxMywgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDE5MywgNjcsIDY1LCA3OCwgCi0gICAgNjcsIDY5LCA4MiwgMTI4LCA2NywgNjUsIDc4LCA2NywgNjksIDc2LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY1LCAKLSAgICA3OCwgNjcsIDY5LCA3NiwgMTI4LCA2NywgNjUsIDc4LCA2NywgNjksIDIwNCwgNjcsIDY1LCA3OCwgMTI4LCA2NywgNjUsIAotICAgIDc3LCA3OCwgODUsIDE5NSwgNjcsIDY1LCA3NywgNjksIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc3LCA2OSwgNzYsIDEyOCwgCi0gICAgNjcsIDY1LCA3NiwgODksIDY1LCAxMjgsIDY3LCA2NSwgNzYsIDg5LCAxOTMsIDY3LCA2NSwgNzYsIDg4LCAxMjgsIDY3LCAKLSAgICA2NSwgNzYsIDc2LCAxMjgsIDY3LCA2NSwgNzYsIDY5LCA3OCwgNjgsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2NywgCi0gICAgMTI4LCA2NywgNjUsIDc1LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA3NSwgMTk3LCA2NywgNjUsIDczLCAxMjgsIDY3LCA2NSwgCi0gICAgNzIsIDEyOCwgNjcsIDY1LCA2OSwgODMsIDg1LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA2OCwgODUsIDY3LCA2OSwgODUsIDgzLCAKLSAgICAxMjgsIDY3LCA2NSwgNjgsIDE5MywgNjcsIDY1LCA2NywgODQsIDg1LCA4MywgMTI4LCA2NywgNjUsIDY2LCA3NiwgNjksIAotICAgIDg3LCA2NSwgODksIDEyOCwgNjcsIDY1LCA2NiwgNjYsIDY1LCA3MSwgNjksIDQ1LCA4NCwgODIsIDY5LCA2OSwgMTI4LCA2NywgCi0gICAgNjUsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDY1LCA2NSwgNzMsIDEyOCwgNjcsIDE5MywgNjcsIDQ4LCA1MCwgNTIsIDEyOCwgCi0gICAgNjcsIDQ4LCA1MCwgNTEsIDEyOCwgNjcsIDQ4LCA1MCwgNTAsIDEyOCwgNjcsIDQ4LCA1MCwgNDksIDEyOCwgNjcsIDQ4LCAKLSAgICA1MCwgNDgsIDEyOCwgNjcsIDQ4LCA0OSwgNTcsIDEyOCwgNjcsIDQ4LCA0OSwgNTYsIDEyOCwgNjcsIDQ4LCA0OSwgNTUsIAotICAgIDEyOCwgNjcsIDQ4LCA0OSwgNTQsIDEyOCwgNjcsIDQ4LCA0OSwgNTMsIDEyOCwgNjcsIDQ4LCA0OSwgNTIsIDEyOCwgNjcsIAotICAgIDQ4LCA0OSwgNTEsIDEyOCwgNjcsIDQ4LCA0OSwgNTAsIDEyOCwgNjcsIDQ4LCA0OSwgNDksIDEyOCwgNjcsIDQ4LCA0OSwgCi0gICAgNDgsIDY1LCAxMjgsIDY3LCA0OCwgNDksIDQ4LCAxMjgsIDY3LCA0OCwgNDgsIDU3LCAxMjgsIDY3LCA0OCwgNDgsIDU2LCAKLSAgICAxMjgsIDY3LCA0OCwgNDgsIDU1LCAxMjgsIDY3LCA0OCwgNDgsIDU0LCAxMjgsIDY3LCA0OCwgNDgsIDUzLCAxMjgsIDY3LCAKLSAgICA0OCwgNDgsIDUyLCAxMjgsIDY3LCA0OCwgNDgsIDUxLCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NywgMTI4LCA2NywgNDgsIAotICAgIDQ4LCA1MCwgNjYsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCAxMjgsIDY3LCA0OCwgCi0gICAgNDgsIDQ5LCAxMjgsIDY3LCA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA2NywgNDUsIDUxLCAKLSAgICA1NywgMTI4LCA2NywgNDUsIDQ5LCA1NiwgMTI4LCA2NiwgOTAsIDg1LCA3OCwgMTk5LCA2NiwgOTAsIDcyLCAyMDEsIDY2LCAKLSAgICA4OSwgODQsIDE5NywgNjYsIDg5LCA2OSwgNzYsIDc5LCA4MiwgODUsIDgzLCA4MywgNzMsIDY1LCA3OCwgNDUsIDg1LCA3NSwgCi0gICAgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA2NiwgODgsIDcxLCAxMjgsIDY2LCA4NywgNzMsIDEyOCwgNjYsIDg3LCAKLSAgICA2OSwgNjksIDEyOCwgNjYsIDg3LCA2OSwgMTI4LCA2NiwgODcsIDY1LCAxMjgsIDY2LCA4NSwgODUsIDc3LCA3MywgODMsIAotICAgIDcyLCAxMjgsIDY2LCA4NSwgODQsIDg0LCA3OSwgNzgsIDEyOCwgNjYsIDg1LCAyMTIsIDY2LCA4NSwgODMsIDg0LCAyMTEsIAotICAgIDY2LCA4NSwgODMsIDIxMiwgNjYsIDg1LCA4MywgODMsIDg5LCA2OSwgODIsIDg1LCAxMjgsIDY2LCA4NSwgMjExLCA2NiwgCi0gICAgODUsIDgyLCAyMTMsIDY2LCA4NSwgODIsIDUwLCAxMjgsIDY2LCA4NSwgMjEwLCA2NiwgODUsIDc5LCA4OCwgMTI4LCA2NiwgCi0gICAgODUsIDc5LCA4MCwgMTI4LCA2NiwgODUsIDc4LCA3OCwgMjE3LCA2NiwgODUsIDc4LCA3MSwgMTI4LCA2NiwgODUsIDc3LCAKLSAgICA4MCwgMjE3LCA2NiwgODUsIDc2LCA4NSwgNzEsIDEyOCwgNjYsIDg1LCA3NiwgODUsIDE5OSwgNjYsIDg1LCA3NiwgNzYsIAotICAgIDgzLCA2OSwgODksIDY5LCAxMjgsIDY2LCA4NSwgNzYsIDc2LCAyMTEsIDY2LCA4NSwgNzYsIDc2LCA2OSwgODQsIDEyOCwgCi0gICAgNjYsIDg1LCA3NiwgNzYsIDY5LCAyMTIsIDY2LCA4NSwgNzYsIDc2LCAxMjgsIDY2LCA4NSwgNzYsIDY2LCAxMjgsIDY2LCAKLSAgICA4NSwgNzUsIDg5LCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCA3MSwgODMsIDEyOCwgNjYsIDg1LCA3MywgNzYsIAotICAgIDY4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA4NSwgNzIsIDczLCAxOTYsIDY2LCA4NSwgNzEsIDczLCA3OCwgNjksIDgzLCAKLSAgICAxOTcsIDY2LCA4NSwgNzEsIDEyOCwgNjYsIDg1LCA3MCwgNzAsIDY1LCA3NiwgNzksIDEyOCwgNjYsIDg1LCA2NywgNzUsIAotICAgIDc2LCA2OSwgMTI4LCA2NiwgODMsIDg0LCA2NSwgODIsIDEyOCwgNjYsIDgzLCA3NSwgODUsIDIxMCwgNjYsIDgzLCA3NSwgCi0gICAgNjUsIDE3MywgNjYsIDgzLCA2OCwgODUsIDIxMSwgNjYsIDgyLCA4NSwgODMsIDcyLCAxMjgsIDY2LCA4MiwgODUsIDgzLCAKLSAgICAyMDAsIDY2LCA4MiwgNzksIDc4LCA5MCwgNjksIDEyOCwgNjYsIDgyLCA3OSwgNzUsIDY5LCAyMDYsIDY2LCA4MiwgNzksIAotICAgIDY1LCAxOTYsIDY2LCA4MiwgNzMsIDgzLCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDc4LCA2OSwgCi0gICAgODMsIDIxMSwgNjYsIDgyLCA3MywgNjksIDcwLCA2NywgNjUsIDgzLCA2OSwgMTI4LCA2NiwgODIsIDczLCA2OCwgNzEsIAotICAgIDE5NywgNjYsIDgyLCA3MywgNjgsIDE5NywgNjYsIDgyLCA3MywgNjcsIDc1LCAxMjgsIDY2LCA4MiwgNjksIDg2LCA3MywgCi0gICAgODMsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NiwgODIsIDY5LCAKLSAgICA4NiwgMTk3LCA2NiwgODIsIDY5LCA2NSwgODQsIDIwMCwgNjYsIDgyLCA2OSwgNjUsIDc1LCA4NCwgNzIsIDgyLCA3OSwgODUsIAotICAgIDcxLCA3MiwgMTI4LCA2NiwgODIsIDY5LCA2NSwgNjgsIDEyOCwgNjYsIDgyLCA2OCwgMTkzLCA2NiwgODIsIDY1LCA3OCwgCi0gICAgNjcsIDcyLCA3MywgNzgsIDE5OSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgMTI4LCA2NiwgODIsIDY1LCA3OCwgNjcsIAotICAgIDIwMCwgNjYsIDgyLCA2NSwgNzUsIDY3LCA2OSwgODQsIDEyOCwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODQsIDY5LCAKLSAgICAxOTYsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDIxMiwgNjYsIDgyLCA2NSwgNjcsIDY5LCAxMjgsIDY2LCA4MSwgMTI4LCAKLSAgICA2NiwgODAsIDcyLCAxMjgsIDY2LCA3OSwgODksIDEyOCwgNjYsIDc5LCA4NywgODQsIDczLCA2OSwgMTI4LCA2NiwgNzksIAotICAgIDg3LCA4NCwgNzMsIDE5NywgNjYsIDc5LCA4NywgNzYsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA4NywgNzYsIDEyOCwgCi0gICAgNjYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDY2LCA3OSwgMjE1LCA2NiwgNzksIDg1LCA4MSwgODUsIDY5LCA4NCwgMTI4LCAKLSAgICA2NiwgNzksIDg1LCA3OCwgNjgsIDY1LCA4MiwgMjE3LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCA0NSwgNzYsIDczLCA3MSwgCi0gICAgNzIsIDg0LCA2OSwgMTk2LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCAxMjgsIDY2LCA3OSwgODQsIDg0LCA3OSwgMjA1LCAKLSAgICA2NiwgNzksIDg0LCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA3OSwgODQsIDg0LCA3NiwgMTk3LCA2NiwgNzksIDg0LCAyMDAsIAotICAgIDY2LCA3OSwgODIsIDg1LCA4NCwgNzksIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCA0NSwgNTEsIDEyOCwgNjYsIDc5LCA4MiwgCi0gICAgNjUsIDg4LCA0NSwgNTAsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAxMjgsIDY2LCA3OSwgODAsIDc5LCA3NywgNzksIDcwLCAKLSAgICAyMDcsIDY2LCA3OSwgNzksIDg0LCA4MywgMTI4LCA2NiwgNzksIDc5LCA4NCwgMTI4LCA2NiwgNzksIDc5LCA3NywgNjksIAotICAgIDgyLCA2NSwgNzgsIDcxLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA4MywgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgCi0gICAgNzUsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDc3LCA2NSwgODIsIDIwMywgNjYsIDc5LCA3OCwgNjksIDEyOCwgNjYsIDc5LCAKLSAgICA3NywgNjYsIDEyOCwgNjYsIDc5LCA3NywgMTI4LCA2NiwgNzksIDc2LCA4NCwgMTI4LCA2NiwgNzksIDc2LCAyMTIsIDY2LCAKLSAgICA3OSwgNzIsIDY1LCA3MywgODIsIDczLCAxOTUsIDY2LCA3OSwgNjgsIDg5LCAxMjgsIDY2LCA3OSwgNjUsIDgyLCAxMjgsIAotICAgIDY2LCA3OSwgNjUsIDEyOCwgNjYsIDc2LCA4NSwgNjksIDEyOCwgNjYsIDc2LCA4NSwgMTk3LCA2NiwgNzYsIDc5LCA4NywgCi0gICAgNzAsIDczLCA4MywgNzIsIDEyOCwgNjYsIDc2LCA3OSwgODMsIDgzLCA3OSwgNzcsIDEyOCwgNjYsIDc2LCA3OSwgNzksIDY4LCAKLSAgICAxMjgsIDY2LCA3NiwgNzksIDc4LCAxOTYsIDY2LCA3NiwgNzksIDY3LCA3NSwgMTI4LCA2NiwgNzYsIDY5LCA3OCwgNjgsIAotICAgIDY5LCAxOTYsIDY2LCA3NiwgNjUsIDc4LCA3NSwgMTI4LCA2NiwgNzYsIDY1LCA3OCwgMjAzLCA2NiwgNzYsIDY1LCA2OCwgCi0gICAgMTk3LCA2NiwgNzYsIDY1LCA2NywgNzUsIDcwLCA3OSwgNzksIDIxMiwgNjYsIDc2LCA2NSwgNjcsIDc1LCA0NSwgNzYsIDY5LCAKLSAgICA4NCwgODQsIDY5LCAyMTAsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNDUsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCA2OSwgCi0gICAgMTk2LCA2NiwgNzYsIDY1LCA2NywgNzUsIDEyOCwgNjYsIDc1LCA2NSwgMTczLCA2NiwgNzMsIDg0LCA4NCwgNjksIDgyLCAKLSAgICAxMjgsIDY2LCA3MywgODQsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDgzLCA3NywgODUsIDg0LCAyMDAsIDY2LCA3MywgODMsIAotICAgIDc3LCA3MywgNzYsIDc2LCA2NSwgMjAwLCA2NiwgNzMsIDgzLCA3MiwgNzksIDgwLCAxMjgsIDY2LCA3MywgODMsIDY5LCA2NywgCi0gICAgODQsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDgzLCA2NSwgNzIsIDEyOCwgNjYsIDczLCA4MiwgODUsIDEyOCwgNjYsIDczLCAKLSAgICA4MiwgODQsIDcyLCA2OCwgNjUsIDIxNywgNjYsIDczLCA4MiwgNzEsIDY1LCAxMjgsIDY2LCA3MywgODIsIDY4LCAxMjgsIAotICAgIDY2LCA3MywgNzksIDcyLCA2NSwgOTAsIDY1LCA4MiwgMTk2LCA2NiwgNzMsIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgCi0gICAgNjYsIDczLCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDc4LCA2OCwgNzMsIDEyOCwgNjYsIDczLCA3OCwgNjUsIDgyLCAKLSAgICAyMTcsIDY2LCA3MywgNzYsIDc2LCA3MywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjYsIDczLCA3NiwgNjUsIDY2LCA3MywgNjUsIAorICAgIDcyLCA2OSwgNzMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA4MywgMTk3LCA2NywgNzIsIDY5LCA2OSwgCisgICAgODIsIDczLCA3OCwgMTk5LCA2NywgNzIsIDY5LCA2OSwgNzcsIDEyOCwgNjcsIDcyLCA2OSwgNjksIDc1LCAyMTEsIDY3LCAKKyAgICA3MiwgNjksIDY5LCA3NSwgMTI4LCA2NywgNzIsIDY5LCA2OSwgMTI4LCA2NywgNzIsIDY5LCA2NywgNzUsIDY5LCAyMTAsIAorICAgIDY3LCA3MiwgNjksIDY3LCA3NSwgMTI4LCA2NywgNzIsIDY5LCA2NywgMjAzLCA2NywgNzIsIDE5NywgNjcsIDcyLCA2NSwgCisgICAgODgsIDEyOCwgNjcsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2NywgNzIsIDY1LCA4NCwgODQsIDY1LCAKKyAgICA4NywgNjUsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIAorICAgIDgyLCAyMTIsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDIxMiwgCisgICAgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIAorICAgIDY5LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgODQsIDY5LCA4MiwgMTI4LCA2NywgCisgICAgNzIsIDY1LCA4MCwgMTI4LCA2NywgNzIsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCAKKyAgICA2NSwgNzcsIDc1LCA3OSwgMTI4LCA2NywgNzIsIDY1LCA3NywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIAorICAgIDczLCA3NiwgNzMsIDEyOCwgNjcsIDcyLCA2NSwgMjA1LCA2NywgNzIsIDY1LCA3NSwgNzcsIDE5MywgNjcsIDcyLCA2NSwgCisgICAgNzMsIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDczLCA3OCwgODMsIDEyOCwgNjcsIDcyLCA2NSwgNjgsIDY1LCAxMjgsIDY3LCAKKyAgICA3MiwgNjUsIDE5NiwgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDcxLCA3NCwgMTI4LCA2NywgNjksIDg4LCAxMjgsIDY3LCAKKyAgICA2OSwgODIsIDY5LCA4MywgMTI4LCA2NywgNjksIDgyLCA2OSwgNzcsIDc5LCA3OCwgODksIDEyOCwgNjcsIDY5LCA4MiwgNjksIAorICAgIDc1LCAxMjgsIDY3LCA2OSwgODIsIDQ1LCA4NywgNjUsIDEyOCwgNjcsIDY5LCA4MCwgMTI4LCA2NywgNjksIDc5LCA3OCwgCisgICAgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIAorICAgIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIAorICAgIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA3MywgNzksIDgzLCAKKyAgICAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIAorICAgIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIAorICAgIDEyOCwgNjcsIDY5LCA3OCwgODQsIDg1LCA4MiwgNzMsIDY1LCAyMDQsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDc2LCA3MywgCisgICAgNzgsIDE5NywgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgNjgsIDEyOCwgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgMTk2LCAKKyAgICA2NywgNjksIDc4LCA4NCwgODIsIDY5LCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4MiwgMTk3LCA2NywgNjksIDc4LCA4NCwgODIsIAorICAgIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjksIDc4LCAxMjgsIDY3LCA2OSwgNzYsIDg0LCA3MywgCisgICAgMTk1LCA2NywgNjksIDc2LCA4MywgNzMsIDg1LCA4MywgMTI4LCA2NywgNjksIDc2LCA2OSwgNjYsIDgyLCA2NSwgODQsIDczLCAKKyAgICA3OSwgNzgsIDEyOCwgNjcsIDY5LCA3MywgODIsIDg0LCAxMjgsIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDE5OSwgNjcsIDY5LCA2OSwgODYsIDEyOCwgNjcsIDY5LCA2OSwgNjYsIDEyOCwgCisgICAgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCAKKyAgICAxOTMsIDY3LCA2OSwgNjgsIDIwMSwgNjcsIDY5LCA2NywgNjksIDc1LCAxMjgsIDY3LCA2OSwgNjcsIDY1LCA3NSwgMTI4LCAKKyAgICA2NywgNjksIDY3LCA2NSwgMjAzLCA2NywgNjksIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY3LCA4NSwgMTI4LCA2NywgNjcsIAorICAgIDc5LCAxMjgsIDY3LCA2NywgNzMsIDEyOCwgNjcsIDY3LCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzksIDEyOCwgNjcsIAorICAgIDY3LCA3MiwgNzMsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA3OSwgMTI4LCA2NywgCisgICAgNjcsIDcyLCA3MiwgNzMsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIAorICAgIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgCisgICAgNjksIDY5LCAxMjgsIDY3LCA2NywgNzIsIDY5LCAxMjgsIDY3LCA2NywgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCAKKyAgICA2NSwgMTI4LCA2NywgNjcsIDcyLCAxMjgsIDY3LCA2NywgNjksIDY5LCAxMjgsIDY3LCA2NywgNjksIDEyOCwgNjcsIDY3LCAKKyAgICA2NSwgNjUsIDEyOCwgNjcsIDY3LCA2NSwgMTI4LCA2NywgNjUsIDg5LCA3OCwgMTI4LCA2NywgNjUsIDg5LCA2NSwgNzgsIAorICAgIDc4LCA2NSwgMTI4LCA2NywgNjUsIDg4LCAxMjgsIDY3LCA2NSwgODYsIDY5LCAxMjgsIDY3LCA2NSwgODUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNjcsIDY1LCA4NSwgNzYsIDY4LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgODUsIDY4LCA2NSwgMTI4LCAKKyAgICA2NywgNjUsIDg1LCA2NywgNjUsIDgzLCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4NSwgMTI4LCA2NywgNjUsIDg0LCA2NSwgODcsIAorICAgIDY1LCAxMjgsIDY3LCA2NSwgODQsIDEyOCwgNjcsIDY1LCAyMTIsIDY3LCA2NSwgODMsIDg0LCA3NiwgNjksIDEyOCwgNjcsIAorICAgIDY1LCA4MywgNzUsIDY5LCAyMTIsIDY3LCA2NSwgODIsIDg5LCA4MywgODQsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCA4NCwgCisgICAgODIsIDczLCA2OCwgNzEsIDY5LCAxMjgsIDY3LCA2NSwgODIsIDg0LCAxMjgsIDY3LCA2NSwgODIsIDIxMSwgNjcsIDY1LCAKKyAgICA4MiwgODIsIDczLCA2NSwgNzEsIDE5NywgNjcsIDY1LCA4MiwgODAsIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY3LCA2NSwgODIsIAorICAgIDIwOCwgNjcsIDY1LCA4MiwgNzksIDg1LCA4MywgNjksIDIwNCwgNjcsIDY1LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgCisgICAgODIsIDc5LCAyMDYsIDY3LCA2NSwgODIsIDczLCAyMDMsIDY3LCA2NSwgODIsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCAKKyAgICA2OSwgODQsIDEyOCwgNjcsIDY1LCA4MiwgNjksIDIxMiwgNjcsIDY1LCA4MiwgMTk3LCA2NywgNjUsIDgyLCA2OCwgODMsIAorICAgIDEyOCwgNjcsIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDY1LCA4MiwgMTk2LCA2NywgNjUsIDgyLCAxMjgsIDY3LCA2NSwgMjEwLCAKKyAgICA2NywgNjUsIDgwLCA4NSwgMjEyLCA2NywgNjUsIDgwLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDgwLCA4MiwgNzMsIAorICAgIDY3LCA3OSwgODIsIDc4LCAxMjgsIDY3LCA2NSwgODAsIDgwLCA2OSwgMTk2LCA2NywgNjUsIDgwLCA3OSwgMTI4LCA2NywgCisgICAgNjUsIDgwLCA3MywgODQsIDg1LCA3NiwgODUsIDc3LCAxMjgsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDc2LCAxMjgsIDY3LCAKKyAgICA2NSwgNzgsIDg0LCA3MywgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCAxOTksIDY3LCA2NSwgNzgsIAorICAgIDY4LCA4OSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgODUsIDEyOCwgNjcsIDY1LCA3OCwgCisgICAgNjgsIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIDIxMywgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc4LCAKKyAgICA2OCwgODIsIDE5MywgNjcsIDY1LCA3OCwgNjgsIDc2LCA2OSwgMTI4LCA2NywgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIAorICAgIDY3LCA2NSwgNzgsIDY3LCA2OSwgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCA2NywgNjksIDc2LCAKKyAgICAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgMjA0LCA2NywgNjUsIDc4LCAxMjgsIDY3LCA2NSwgNzcsIDgwLCA3MywgNzgsIAorICAgIDcxLCAxMjgsIDY3LCA2NSwgNzcsIDc4LCA4NSwgMTk1LCA2NywgNjUsIDc3LCA2OSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgCisgICAgNzcsIDY5LCA4MiwgMTkzLCA2NywgNjUsIDc3LCA2OSwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgODksIDY1LCAxMjgsIDY3LCAKKyAgICA2NSwgNzYsIDg5LCAxOTMsIDY3LCA2NSwgNzYsIDg4LCAxMjgsIDY3LCA2NSwgNzYsIDc2LCAxMjgsIDY3LCA2NSwgNzYsIAorICAgIDY5LCA3OCwgNjgsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2OSwgNzgsIDY4LCA2NSwgMjEwLCA2NywgNjUsIDc2LCA2NywgCisgICAgODUsIDc2LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2NywgMTI4LCA2NywgNjUsIDc1LCA4MiwgNjUsIAorICAgIDEyOCwgNjcsIDY1LCA3NSwgMTk3LCA2NywgNjUsIDczLCAxMjgsIDY3LCA2NSwgNzIsIDEyOCwgNjcsIDY1LCA2OSwgODMsIAorICAgIDg1LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA2OCwgODUsIDY3LCA2OSwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjgsIDE5MywgCisgICAgNjcsIDY1LCA2NywgODQsIDg1LCA4MywgMTI4LCA2NywgNjUsIDY2LCA3NiwgNjksIDg3LCA2NSwgODksIDEyOCwgNjcsIDY1LCAKKyAgICA2NiwgNzMsIDc4LCA2OSwgODQsIDEyOCwgNjcsIDY1LCA2NiwgNjYsIDY1LCA3MSwgNjksIDQ1LCA4NCwgODIsIDY5LCA2OSwgCisgICAgMTI4LCA2NywgNjUsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDY1LCA2NSwgNzMsIDEyOCwgNjcsIDE5MywgNjcsIDQ4LCA1MCwgCisgICAgNTIsIDEyOCwgNjcsIDQ4LCA1MCwgNTEsIDEyOCwgNjcsIDQ4LCA1MCwgNTAsIDEyOCwgNjcsIDQ4LCA1MCwgNDksIDEyOCwgCisgICAgNjcsIDQ4LCA1MCwgNDgsIDEyOCwgNjcsIDQ4LCA0OSwgNTcsIDEyOCwgNjcsIDQ4LCA0OSwgNTYsIDEyOCwgNjcsIDQ4LCAKKyAgICA0OSwgNTUsIDEyOCwgNjcsIDQ4LCA0OSwgNTQsIDEyOCwgNjcsIDQ4LCA0OSwgNTMsIDEyOCwgNjcsIDQ4LCA0OSwgNTIsIAorICAgIDEyOCwgNjcsIDQ4LCA0OSwgNTEsIDEyOCwgNjcsIDQ4LCA0OSwgNTAsIDEyOCwgNjcsIDQ4LCA0OSwgNDksIDEyOCwgNjcsIAorICAgIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDY3LCA0OCwgNDksIDQ4LCAxMjgsIDY3LCA0OCwgNDgsIDU3LCAxMjgsIDY3LCA0OCwgCisgICAgNDgsIDU2LCAxMjgsIDY3LCA0OCwgNDgsIDU1LCAxMjgsIDY3LCA0OCwgNDgsIDU0LCAxMjgsIDY3LCA0OCwgNDgsIDUzLCAKKyAgICAxMjgsIDY3LCA0OCwgNDgsIDUyLCAxMjgsIDY3LCA0OCwgNDgsIDUxLCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NywgMTI4LCAKKyAgICA2NywgNDgsIDQ4LCA1MCwgNjYsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCAxMjgsIAorICAgIDY3LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA2NywgCisgICAgNDUsIDUxLCA1NywgMTI4LCA2NywgNDUsIDQ5LCA1NiwgMTI4LCA2NiwgOTAsIDg1LCA3OCwgMTk5LCA2NiwgOTAsIDcyLCAKKyAgICAyMDEsIDY2LCA4OSwgODQsIDE5NywgNjYsIDg5LCA2OSwgNzYsIDc5LCA4MiwgODUsIDgzLCA4MywgNzMsIDY1LCA3OCwgNDUsIAorICAgIDg1LCA3NSwgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA2NiwgODgsIDcxLCAxMjgsIDY2LCA4NywgNzMsIDEyOCwgCisgICAgNjYsIDg3LCA2OSwgNjksIDEyOCwgNjYsIDg3LCA2OSwgMTI4LCA2NiwgODcsIDY1LCAxMjgsIDY2LCA4NSwgODUsIDc3LCAKKyAgICA3MywgODMsIDcyLCAxMjgsIDY2LCA4NSwgODQsIDg0LCA3OSwgNzgsIDEyOCwgNjYsIDg1LCA4NCwgODQsIDc5LCAyMDYsIAorICAgIDY2LCA4NSwgMjEyLCA2NiwgODUsIDgzLCA4NCwgMjExLCA2NiwgODUsIDgzLCAyMTIsIDY2LCA4NSwgODMsIDgzLCA4OSwgCisgICAgNjksIDgyLCA4NSwgMTI4LCA2NiwgODUsIDgzLCA3MywgNzgsIDY5LCA4MywgMjExLCA2NiwgODUsIDIxMSwgNjYsIDg1LCAKKyAgICA4MiwgMjEzLCA2NiwgODUsIDgyLCA4MiwgNzMsIDg0LCA3OSwgMTI4LCA2NiwgODUsIDgyLCA1MCwgMTI4LCA2NiwgODUsIAorICAgIDIxMCwgNjYsIDg1LCA3OSwgODgsIDEyOCwgNjYsIDg1LCA3OSwgODAsIDEyOCwgNjYsIDg1LCA3OCwgNzgsIDIxNywgNjYsIAorICAgIDg1LCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3NywgODAsIDIxNywgNjYsIDg1LCA3NiwgODUsIDcxLCAxMjgsIDY2LCA4NSwgCisgICAgNzYsIDg1LCAxOTksIDY2LCA4NSwgNzYsIDc2LCA4MywgNjksIDg5LCA2OSwgMTI4LCA2NiwgODUsIDc2LCA3NiwgMjExLCAKKyAgICA2NiwgODUsIDc2LCA3NiwgNzIsIDc5LCA4MiwgNzgsIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDcyLCA3OSwgODIsIDIwNiwgNjYsIAorICAgIDg1LCA3NiwgNzYsIDY5LCA4NCwgMTI4LCA2NiwgODUsIDc2LCA3NiwgNjksIDIxMiwgNjYsIDg1LCA3NiwgNzYsIDEyOCwgCisgICAgNjYsIDg1LCA3NiwgNjYsIDEyOCwgNjYsIDg1LCA3NSwgODksIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDcxLCAKKyAgICA4MywgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIAorICAgIDE5OSwgNjYsIDg1LCA3MiwgNzMsIDE5NiwgNjYsIDg1LCA3MSwgNzMsIDc4LCA2OSwgODMsIDE5NywgNjYsIDg1LCA3MSwgCisgICAgMTI4LCA2NiwgODUsIDcwLCA3MCwgNjUsIDc2LCA3OSwgMTI4LCA2NiwgODUsIDY4LCAxMjgsIDY2LCA4NSwgNjcsIDc1LCAKKyAgICA3NiwgNjksIDEyOCwgNjYsIDg1LCA2NiwgNjYsIDc2LCA2OSwgODMsIDEyOCwgNjYsIDg1LCA2NiwgNjYsIDc2LCA2OSwgCisgICAgMTI4LCA2NiwgODMsIDg0LCA2NSwgODIsIDEyOCwgNjYsIDgzLCA3NSwgODUsIDIxMCwgNjYsIDgzLCA3NSwgNjUsIDE3MywgCisgICAgNjYsIDgzLCA2OCwgODUsIDIxMSwgNjYsIDgyLCA4NSwgODMsIDIwMCwgNjYsIDgyLCA3OSwgNzgsIDkwLCA2OSwgMTI4LCAKKyAgICA2NiwgODIsIDc5LCA3NSwgNjksIDIwNiwgNjYsIDgyLCA3OSwgNjUsIDE5NiwgNjYsIDgyLCA3MywgODMsIDg0LCA3NiwgNjksIAorICAgIDEyOCwgNjYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCA4MywgMjExLCA2NiwgODIsIDczLCA2OSwgNzAsIDY3LCA2NSwgCisgICAgODMsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDY4LCA3MSwgMTk3LCA2NiwgODIsIDczLCA2OCwgMTk3LCA2NiwgODIsIDczLCAKKyAgICA2NywgNzUsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDczLCA4MywgMTI4LCA2NiwgODIsIDY5LCA4NiwgNjksIDQ1LCA3NywgNjUsIAorICAgIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY2LCA4MiwgNjksIDg2LCAxOTcsIDY2LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA2NiwgCisgICAgODIsIDY5LCA2NSwgNzUsIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDY2LCA4MiwgNjksIDY1LCA2OCwgMTI4LCAKKyAgICA2NiwgODIsIDY4LCAxOTMsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDczLCA3OCwgMTk5LCA2NiwgODIsIDY1LCA3OCwgNjcsIAorICAgIDcyLCA2OSwgODMsIDEyOCwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgMTI4LCA2NiwgODIsIDY1LCA3OCwgNjcsIDIwMCwgCisgICAgNjYsIDgyLCA2NSwgNzUsIDY3LCA2OSwgODQsIDEyOCwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODQsIDY5LCAxOTYsIDY2LCAKKyAgICA4MiwgNjUsIDY3LCA3NSwgNjksIDIxMiwgNjYsIDgyLCA2NSwgNjcsIDY5LCAxMjgsIDY2LCA4MSwgMTI4LCA2NiwgODAsIAorICAgIDcyLCAxMjgsIDY2LCA3OSwgODksIDIxMSwgNjYsIDc5LCA4OSwgMTI4LCA2NiwgNzksIDg3LCA4NCwgNzMsIDY5LCAxMjgsIAorICAgIDY2LCA3OSwgODcsIDg0LCA3MywgMTk3LCA2NiwgNzksIDg3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDg3LCA3NiwgCisgICAgMTI4LCA2NiwgNzksIDg3LCAyMDQsIDY2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA2NiwgNzksIDIxNSwgNjYsIDc5LCA4NSwgCisgICAgODEsIDg1LCA2OSwgODQsIDEyOCwgNjYsIDc5LCA4NSwgODEsIDg1LCA2OSwgMjEyLCA2NiwgNzksIDg1LCA3OCwgNjgsIDY1LCAKKyAgICA4MiwgMjE3LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDY2LCA3OSwgODQsIAorICAgIDg0LCA3OSwgNzcsIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDEyOCwgCisgICAgNjYsIDc5LCA4NCwgODQsIDc5LCAyMDUsIDY2LCA3OSwgODQsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc2LCAKKyAgICAxOTcsIDY2LCA3OSwgODQsIDIwMCwgNjYsIDc5LCA4MiwgODUsIDg0LCA3OSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIAorICAgIDQ1LCA1MSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDQ1LCA1MCwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDEyOCwgCisgICAgNjYsIDc5LCA4MCwgNzksIDc3LCA3OSwgNzAsIDIwNywgNjYsIDc5LCA3OSwgODQsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDg0LCAKKyAgICAxMjgsIDY2LCA3OSwgNzksIDc3LCA2OSwgODIsIDY1LCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDgzLCAxMjgsIAorICAgIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCA3NSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgMjAzLCA2NiwgCisgICAgNzksIDc4LCA2OSwgMTI4LCA2NiwgNzksIDc3LCA2NiwgMTI4LCA2NiwgNzksIDc3LCAxMjgsIDY2LCA3OSwgNzYsIDg0LCAKKyAgICAxMjgsIDY2LCA3OSwgNzYsIDIxMiwgNjYsIDc5LCA3MiwgNjUsIDczLCA4MiwgNzMsIDE5NSwgNjYsIDc5LCA2OCwgODksIAorICAgIDEyOCwgNjYsIDc5LCA2OCwgMjE3LCA2NiwgNzksIDY1LCA4MiwgMTI4LCA2NiwgNzksIDY1LCAxMjgsIDY2LCA3NiwgODUsIAorICAgIDY5LCAxMjgsIDY2LCA3NiwgODUsIDE5NywgNjYsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA2NiwgNzYsIDc5LCA4NywgCisgICAgNzAsIDczLCA4MywgNzIsIDEyOCwgNjYsIDc2LCA3OSwgMjE1LCA2NiwgNzYsIDc5LCA4MywgODMsIDc5LCA3NywgMTI4LCAKKyAgICA2NiwgNzYsIDc5LCA3OSwgNjgsIDEyOCwgNjYsIDc2LCA3OSwgNzgsIDE5NiwgNjYsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIAorICAgIDY2LCA3NiwgNzMsIDc4LCAyMDMsIDY2LCA3NiwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjYsIDc2LCA2NSwgNzgsIDc1LCAKKyAgICAxMjgsIDY2LCA3NiwgNjUsIDc4LCAyMDMsIDY2LCA3NiwgNjUsIDY4LCAxOTcsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzYsIAorICAgIDY5LCA4NCwgODQsIDY5LCAyMTAsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzAsIDc5LCA3OSwgMjEyLCA2NiwgNzYsIDY1LCA2NywgCisgICAgNzUsIDQ1LCA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgNjcsIDc1LCA0NSwgNzAsIDY5LCA2NSwgODQsIAorICAgIDcyLCA2OSwgODIsIDY5LCAxOTYsIDY2LCA3NiwgNjUsIDY3LCA3NSwgMTI4LCA2NiwgNzUsIDY1LCAxNzMsIDY2LCA3MywgCisgICAgODQsIDg0LCA2OSwgODIsIDEyOCwgNjYsIDczLCA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODQsIDE5NywgNjYsIDczLCAKKyAgICA4MywgNzcsIDg1LCA4NCwgMjAwLCA2NiwgNzMsIDgzLCA3NywgNzMsIDc2LCA3NiwgNjUsIDIwMCwgNjYsIDczLCA4MywgNzIsIAorICAgIDc5LCA4MCwgMTI4LCA2NiwgNzMsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDczLCA4MywgNjUsIDcyLCAKKyAgICAxMjgsIDY2LCA3MywgODIsIDg1LCAxMjgsIDY2LCA3MywgODIsIDg0LCA3MiwgNjgsIDY1LCAyMTcsIDY2LCA3MywgODIsIAorICAgIDcxLCA2NSwgMTI4LCA2NiwgNzMsIDgyLCA2OCwgMTI4LCA2NiwgNzMsIDc5LCA3MiwgNjUsIDkwLCA2NSwgODIsIDE5NiwgCisgICAgNjYsIDczLCA3OCwgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDY2LCA3MywgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjYsIDczLCAKKyAgICA3OCwgNjgsIDczLCAxMjgsIDY2LCA3MywgNzgsIDY1LCA4MiwgMjE3LCA2NiwgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgODMsIAorICAgIDEyOCwgNjYsIDczLCA3NiwgNzYsIDczLCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NiwgNzMsIDc2LCA2NSwgNjYsIDczLCA2NSwgCiAgICAgMjA0LCA2NiwgNzMsIDc1LCA3MywgNzgsIDczLCAxMjgsIDY2LCA3MywgNzEsIDEyOCwgNjYsIDczLCAxOTksIDY2LCA3MywgCiAgICAgNjksIDg0LCAxMjgsIDY2LCA3MywgNjgsIDY5LCA3OCwgODQsIDY1LCAyMDQsIDY2LCA3MywgNjgsIDY1LCA3NSwgODUsIDc5LCAKICAgICAyMDYsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDczLCA4MywgODQsIDEyOCwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNjksIApAQCAtNDM1MSwxNzggKzQ3MjksMTg2IEBACiAgICAgODQsIDg3LCA2OSwgNjksIDIwNiwgNjYsIDY5LCA4NCwgNzIsIDEyOCwgNjYsIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCAKICAgICA4NCwgMTkzLCA2NiwgNjksIDIxMiwgNjYsIDY5LCA4MywgNzMsIDY4LCAxOTcsIDY2LCA2OSwgODIsIDc1LCA2NSwgNzgsIAogICAgIDY1LCAyMDYsIDY2LCA2OSwgODIsIDY2LCA2OSwgMjEwLCA2NiwgNjksIDgwLCAxMjgsIDY2LCA2OSwgNzksIDgyLCAxOTUsIAotICAgIDY2LCA2OSwgNzgsIDkwLCA2OSwgNzgsIDE5NywgNjYsIDY5LCA3OCwgODQsIDIwNywgNjYsIDY5LCA3OCwgNjgsIDY5LCAKLSAgICAxMjgsIDY2LCA2OSwgNzgsIDY4LCAxMjgsIDY2LCA2OSwgMjA2LCA2NiwgNjksIDc2LCA4NCwgMTI4LCA2NiwgNjksIDc2LCAKLSAgICAyMTIsIDY2LCA2OSwgNzYsIDc5LCAyMTUsIDY2LCA2OSwgNzYsIDc2LCAxMjgsIDY2LCA2OSwgNzYsIDIwNCwgNjYsIDY5LCAKLSAgICA3NiwgNzEsIDg0LCA3MiwgNzksIDIxMCwgNjYsIDY5LCA3NiwgMTI4LCA2NiwgNjksIDczLCA4NCwgNzIsIDEyOCwgNjYsIAotICAgIDY5LCA3MiwgNzMsIDc4LCAxOTYsIDY2LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA2NiwgNjksIDcyLCA2OSwgMjAwLCA2NiwgCi0gICAgNjksIDcyLCAxMjgsIDY2LCA2OSwgMjAwLCA2NiwgNjksIDcxLCA3MywgNzgsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCAKLSAgICA2OSwgNzEsIDczLCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA2NiwgNjksIDcxLCA3MywgMjA2LCA2NiwgNjksIDcwLCA3OSwgODIsIAorICAgIDY2LCA2OSwgNzgsIDkwLCA2OSwgNzgsIDE5NywgNjYsIDY5LCA3OCwgODQsIDIwNywgNjYsIDY5LCA3OCwgODQsIDEyOCwgCisgICAgNjYsIDY5LCA3OCwgMjEyLCA2NiwgNjksIDc4LCA2OCwgNjksIDEyOCwgNjYsIDY5LCA3OCwgNjgsIDEyOCwgNjYsIDY5LCAKKyAgICA3OCwgMTk2LCA2NiwgNjksIDIwNiwgNjYsIDY5LCA3NiwgODQsIDEyOCwgNjYsIDY5LCA3NiwgMjEyLCA2NiwgNjksIDc2LCAKKyAgICA3OSwgMjE1LCA2NiwgNjksIDc2LCA3NiwgNzIsIDc5LCAyMDgsIDY2LCA2OSwgNzYsIDc2LCAxMjgsIDY2LCA2OSwgNzYsIAorICAgIDIwNCwgNjYsIDY5LCA3NiwgNzEsIDg0LCA3MiwgNzksIDIxMCwgNjYsIDY5LCA3MywgODQsIDcyLCAxMjgsIDY2LCA2OSwgCisgICAgNzIsIDczLCA3OCwgMTk2LCA2NiwgNjksIDcyLCA2OSwgNzIsIDEyOCwgNjYsIDY5LCA3MiwgNjksIDIwMCwgNjYsIDY5LCAKKyAgICA3MiwgMTI4LCA2NiwgNjksIDIwMCwgNjYsIDY5LCA3MSwgNzMsIDc4LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNjksIAorICAgIDcxLCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgNjYsIDY5LCA3MSwgNzMsIDIwNiwgNjYsIDY5LCA3MCwgNzksIDgyLCAKICAgICAxOTcsIDY2LCA2OSwgNjksIDg0LCA3NiwgNjksIDEyOCwgNjYsIDY5LCA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgNjksIAogICAgIDIxMCwgNjYsIDY5LCA2OSwgNzIsIDczLCA4NiwgNjksIDEyOCwgNjYsIDY5LCA2OSwgNzIsIDEyOCwgNjYsIDY5LCA2OSwgCiAgICAgMjAwLCA2NiwgNjksIDY3LCA2NSwgODUsIDgzLCA2OSwgMTI4LCA2NiwgNjksIDY1LCA4NiwgNjksIDIxMCwgNjYsIDY5LCAKICAgICA2NSwgODQsIDczLCA3OCwgMTk5LCA2NiwgNjksIDY1LCA4NCwgMTI4LCA2NiwgNjksIDY1LCAyMTAsIDY2LCA2OSwgNjUsIAotICAgIDc4LCAxMjgsIDY2LCA2OSwgNjUsIDc3LCA2OSwgMTk2LCA2NiwgNjcsIDY1LCA2OCwgMTI4LCA2NiwgNjcsIDY1LCAxOTYsIAotICAgIDY2LCA2NiwgODksIDg4LCAxMjgsIDY2LCA2NiwgODksIDg0LCAxMjgsIDY2LCA2NiwgODksIDgwLCAxMjgsIDY2LCA2NiwgCi0gICAgODksIDEyOCwgNjYsIDY2LCA4NSwgODgsIDEyOCwgNjYsIDY2LCA4NSwgODQsIDEyOCwgNjYsIDY2LCA4NSwgODIsIDg4LCAKLSAgICAxMjgsIDY2LCA2NiwgODUsIDgyLCAxMjgsIDY2LCA2NiwgODUsIDgwLCAxMjgsIDY2LCA2NiwgODUsIDc5LCA4OCwgMTI4LCAKLSAgICA2NiwgNjYsIDg1LCA3OSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDEyOCwgNjYsIDY2LCA4NSwgMTI4LCA2NiwgNjYsIAotICAgIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDc5LCA4NCwgMTI4LCA2NiwgNjYsIDc5LCA4MCwgMTI4LCA2NiwgNjYsIDc5LCAxMjgsIAotICAgIDY2LCA2NiwgNzMsIDg4LCAxMjgsIDY2LCA2NiwgNzMsIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4OCwgMTI4LCA2NiwgCi0gICAgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIDY2LCA3MywgNjksIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCAxMjgsIDY2LCAKLSAgICA2NiwgNzMsIDEyOCwgNjYsIDY2LCA2OSwgODgsIDEyOCwgNjYsIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY2LCA2OSwgNjksIAotICAgIDEyOCwgNjYsIDY2LCA2OSwgMTI4LCA2NiwgNjYsIDY1LCA4OCwgMTI4LCA2NiwgNjYsIDY1LCA4NCwgMTI4LCA2NiwgNjYsIAotICAgIDY1LCA4MCwgMTI4LCA2NiwgNjYsIDY1LCA2NSwgMTI4LCA2NiwgNjYsIDY1LCAxMjgsIDY2LCA2NSwgODksIDY1LCA3OCwgCi0gICAgNzgsIDY1LCAxMjgsIDY2LCA2NSwgODUsIDEyOCwgNjYsIDY1LCA4NCwgODQsIDY5LCA4MiwgODksIDEyOCwgNjYsIDY1LCAKLSAgICA4NCwgNzIsIDg0LCA4NSwgNjYsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgNjYsIAotICAgIDY1LCA4NCwgNzIsIDEyOCwgNjYsIDY1LCA4NCwgMjAwLCA2NiwgNjUsIDg0LCA2NSwgMjAzLCA2NiwgNjUsIDgzLCA4MywgCi0gICAgNjUsIDEyOCwgNjYsIDY1LCA4MywgNzUsIDY5LCA4NCwgNjYsIDY1LCA3NiwgMjA0LCA2NiwgNjUsIDgzLCA3MiwgNzUsIDczLCAKLSAgICAyMTAsIDY2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgODMsIDY5LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA2NiwgNjUsIAotICAgIDgzLCA2OSwgMTI4LCA2NiwgNjUsIDgzLCAxOTcsIDY2LCA2NSwgODIsIDgzLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA3MywgCi0gICAgNjksIDgyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNzUsIDcyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNjksIAotICAgIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTcsIDY2LCA2NSwgODIsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDY2LCA2NSwgCi0gICAgODIsIDc2LCA2OSwgODksIDEyOCwgNjYsIDY1LCA4MiwgNzMsIDg5LCA3OSwgNzksIDgzLCA2NSwgNzgsIDEyOCwgNjYsIDY1LCAKLSAgICA4MiwgNjYsIDY5LCAyMTAsIDY2LCA2NSwgODIsIDE5NCwgNjYsIDY1LCA4MiwgNjUsIDUwLCAxMjgsIDY2LCA2NSwgMjEwLCAKLSAgICA2NiwgNjUsIDc4LCA4NCwgNzksIDY3LCAxMjgsIDY2LCA2NSwgNzgsIDc1LCA3OCwgNzksIDg0LCAxOTcsIDY2LCA2NSwgNzgsIAotICAgIDc1LCAxMjgsIDY2LCA2NSwgNzgsIDIwMywgNjYsIDY1LCA3OCwgNjgsIDEyOCwgNjYsIDY1LCA3OCwgNjUsIDc4LCA2NSwgCi0gICAgMTI4LCA2NiwgNjUsIDc4LCA1MCwgMTI4LCA2NiwgNjUsIDc4LCAxNzgsIDY2LCA2NSwgNzcsIDY2LCA3OSwgNzksIDgzLCAKLSAgICAxMjgsIDY2LCA2NSwgNzcsIDY2LCA3OSwgNzksIDEyOCwgNjYsIDY1LCA3NiwgODUsIDY4LCA2NSwgMTI4LCA2NiwgNjUsIAotICAgIDc2LCA3NiwgNzksIDIxMiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgCi0gICAgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDEyOCwgNjYsIDY1LCA3NiwgNjUsIDcxLCAxMjgsIDY2LCA2NSwgNzYsIAotICAgIDEyOCwgNjYsIDY1LCAyMDQsIDY2LCA2NSwgNzMsIDgyLCA3NSwgNjUsIDc4LCAxMjgsIDY2LCA2NSwgNzMsIDc3LCA2NSwgCi0gICAgNzMsIDEyOCwgNjYsIDY1LCA3MiwgODQsIDEyOCwgNjYsIDY1LCA3MiwgNzMsIDgyLCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCAKLSAgICA2NSwgMTI4LCA2NiwgNjUsIDcyLCA2NSwgODIsIDUwLCAxMjgsIDY2LCA2NSwgNzIsIDEyOCwgNjYsIDY1LCA3MSwgNzEsIAotICAgIDY1LCA3MSwgMTk3LCA2NiwgNjUsIDcxLCA2NSwgMTI4LCA2NiwgNjUsIDcxLCA1MSwgMTI4LCA2NiwgNjUsIDE5OSwgNjYsIAotICAgIDY1LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA2NiwgNjUsIDY4LCA3MSwgNjksIDEyOCwgNjYsIDY1LCA2OCwgMTI4LCA2NiwgCi0gICAgNjUsIDY3LCA4NCwgODIsIDczLCA2NSwgMjA2LCA2NiwgNjUsIDY3LCA3NSwgODcsIDY1LCA4MiwgNjgsIDEyOCwgNjYsIDY1LCAKLSAgICA2NywgNzUsIDgzLCA4MCwgNjUsIDY3LCA2OSwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIAotICAgIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgMjAwLCA2NiwgNjUsIDY3LCA3NSwgNzIsIDY1LCA3OCwgMTk2LCA2NiwgCi0gICAgNjUsIDY3LCA3NSwgNDUsIDg0LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA2NiwgNjUsIDY3LCA3NSwgMTI4LCA2NiwgNjUsIDY3LCAKLSAgICAyMDMsIDY2LCA2NSwgNjYsIDg5LCAxMjgsIDY2LCA2NSwgNjYsIDIxNywgNjYsIDY1LCA2NSwgODIsIDY5LCA4MiwgODUsIAotICAgIDEyOCwgNjYsIDY1LCA0NSwgNTAsIDEyOCwgNjYsIDUxLCA0OCwgNTMsIDEyOCwgNjYsIDUwLCA1MywgNTcsIDEyOCwgNjYsIAotICAgIDUwLCA1MywgNTYsIDEyOCwgNjYsIDUwLCA1MywgNTUsIDEyOCwgNjYsIDUwLCA1MywgNTQsIDEyOCwgNjYsIDUwLCA1MywgCi0gICAgNTMsIDEyOCwgNjYsIDUwLCA1MywgMTgwLCA2NiwgNTAsIDUzLCA1MSwgMTI4LCA2NiwgNTAsIDUzLCA1MCwgMTI4LCA2NiwgCi0gICAgNTAsIDUzLCA0OSwgMTI4LCA2NiwgNTAsIDUzLCA0OCwgMTI4LCA2NiwgNTAsIDUyLCA1NywgMTI4LCA2NiwgNTAsIDUyLCAKLSAgICA1NiwgMTI4LCA2NiwgNTAsIDUyLCAxODMsIDY2LCA1MCwgNTIsIDU0LCAxMjgsIDY2LCA1MCwgNTIsIDUzLCAxMjgsIDY2LCAKLSAgICA1MCwgNTIsIDE3OSwgNjYsIDUwLCA1MiwgMTc4LCA2NiwgNTAsIDUyLCAxNzcsIDY2LCA1MCwgNTIsIDE3NiwgNjYsIDUwLCAKLSAgICA1MSwgNTQsIDEyOCwgNjYsIDUwLCA1MSwgNTIsIDEyOCwgNjYsIDUwLCA1MSwgMTc5LCA2NiwgNTAsIDUxLCA1MCwgMTI4LCAKLSAgICA2NiwgNTAsIDUxLCAxNzcsIDY2LCA1MCwgNTEsIDE3NiwgNjYsIDUwLCA1MCwgNTcsIDEyOCwgNjYsIDUwLCA1MCwgNTYsIAotICAgIDEyOCwgNjYsIDUwLCA1MCwgNTUsIDEyOCwgNjYsIDUwLCA1MCwgNTQsIDEyOCwgNjYsIDUwLCA1MCwgMTgxLCA2NiwgNTAsIAotICAgIDUwLCA1MCwgMTI4LCA2NiwgNTAsIDUwLCA0OSwgMTI4LCA2NiwgNTAsIDUwLCAxNzYsIDY2LCA1MCwgNDksIDU3LCAxMjgsIAotICAgIDY2LCA1MCwgNDksIDU2LCAxMjgsIDY2LCA1MCwgNDksIDU1LCAxMjgsIDY2LCA1MCwgNDksIDU0LCAxMjgsIDY2LCA1MCwgCi0gICAgNDksIDUzLCAxMjgsIDY2LCA1MCwgNDksIDUyLCAxMjgsIDY2LCA1MCwgNDksIDUxLCAxMjgsIDY2LCA1MCwgNDksIDUwLCAKLSAgICAxMjgsIDY2LCA1MCwgNDksIDQ5LCAxMjgsIDY2LCA1MCwgNDksIDQ4LCAxMjgsIDY2LCA1MCwgNDgsIDU3LCAxMjgsIDY2LCAKLSAgICA1MCwgNDgsIDU2LCAxMjgsIDY2LCA1MCwgNDgsIDU1LCAxMjgsIDY2LCA1MCwgNDgsIDU0LCAxMjgsIDY2LCA1MCwgNDgsIAotICAgIDUzLCAxMjgsIDY2LCA1MCwgNDgsIDUyLCAxMjgsIDY2LCA1MCwgNDgsIDUxLCAxMjgsIDY2LCA1MCwgNDgsIDUwLCAxMjgsIAotICAgIDY2LCA1MCwgNDgsIDQ5LCAxMjgsIDY2LCA1MCwgNDgsIDQ4LCAxMjgsIDY2LCA0OSwgNTcsIDE3NywgNjYsIDQ5LCA1NywgCi0gICAgNDgsIDEyOCwgNjYsIDQ5LCA1NiwgNTcsIDEyOCwgNjYsIDQ5LCA1NiwgNTMsIDEyOCwgNjYsIDQ5LCA1NiwgNTIsIDEyOCwgCi0gICAgNjYsIDQ5LCA1NiwgNTEsIDEyOCwgNjYsIDQ5LCA1NiwgNTAsIDEyOCwgNjYsIDQ5LCA1NiwgNDksIDEyOCwgNjYsIDQ5LCAKLSAgICA1NiwgNDgsIDEyOCwgNjYsIDQ5LCA1NSwgNTcsIDEyOCwgNjYsIDQ5LCA1NSwgNTYsIDEyOCwgNjYsIDQ5LCA1NSwgNTUsIAotICAgIDEyOCwgNjYsIDQ5LCA1NSwgMTgyLCA2NiwgNDksIDU1LCA1MiwgMTI4LCA2NiwgNDksIDU1LCAxNzksIDY2LCA0OSwgNTUsIAotICAgIDUwLCAxMjgsIDY2LCA0OSwgNTUsIDQ5LCAxMjgsIDY2LCA0OSwgNTUsIDQ4LCAxMjgsIDY2LCA0OSwgNTQsIDU3LCAxMjgsIAotICAgIDY2LCA0OSwgNTQsIDU2LCAxMjgsIDY2LCA0OSwgNTQsIDU1LCAxMjgsIDY2LCA0OSwgNTQsIDU0LCAxMjgsIDY2LCA0OSwgCi0gICAgNTQsIDUzLCAxMjgsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIDY2LCA0OSwgNTQsIDE3OSwgNjYsIDQ5LCA1NCwgMTc4LCA2NiwgCi0gICAgNDksIDU0LCA0OSwgMTI4LCA2NiwgNDksIDU0LCA0OCwgMTI4LCA2NiwgNDksIDUzLCAxODUsIDY2LCA0OSwgNTMsIDU2LCAKLSAgICAxMjgsIDY2LCA0OSwgNTMsIDU1LCAxMjgsIDY2LCA0OSwgNTMsIDE4MiwgNjYsIDQ5LCA1MywgNTMsIDEyOCwgNjYsIDQ5LCAKLSAgICA1MywgNTIsIDEyOCwgNjYsIDQ5LCA1MywgNTEsIDEyOCwgNjYsIDQ5LCA1MywgNTAsIDEyOCwgNjYsIDQ5LCA1MywgMTc3LCAKLSAgICA2NiwgNDksIDUzLCA0OCwgMTI4LCA2NiwgNDksIDUyLCA1NCwgMTI4LCA2NiwgNDksIDUyLCAxODEsIDY2LCA0OSwgNTIsIAotICAgIDUwLCAxMjgsIDY2LCA0OSwgNTIsIDE3NywgNjYsIDQ5LCA1MiwgMTc2LCA2NiwgNDksIDUxLCAxODEsIDY2LCA0OSwgNTEsIAotICAgIDE3OSwgNjYsIDQ5LCA1MSwgNTAsIDEyOCwgNjYsIDQ5LCA1MSwgMTc3LCA2NiwgNDksIDUxLCAxNzYsIDY2LCA0OSwgNTAsIAotICAgIDE4NCwgNjYsIDQ5LCA1MCwgMTgzLCA2NiwgNDksIDUwLCAxODEsIDY2LCA0OSwgNTAsIDE3OSwgNjYsIDQ5LCA1MCwgMTc4LCAKLSAgICA2NiwgNDksIDUwLCAxNzcsIDY2LCA0OSwgNTAsIDE3NiwgNjYsIDQ5LCA0OCwgNTcsIDIwNSwgNjYsIDQ5LCA0OCwgNTcsIAotICAgIDE5OCwgNjYsIDQ5LCA0OCwgNTYsIDIwNSwgNjYsIDQ5LCA0OCwgNTYsIDE5OCwgNjYsIDQ5LCA0OCwgNTUsIDIwNSwgNjYsIAotICAgIDQ5LCA0OCwgNTUsIDE5OCwgNjYsIDQ5LCA0OCwgNTQsIDIwNSwgNjYsIDQ5LCA0OCwgNTQsIDE5OCwgNjYsIDQ5LCA0OCwgCi0gICAgNTMsIDIwNSwgNjYsIDQ5LCA0OCwgNTMsIDE5OCwgNjYsIDQ5LCA0OCwgMTgxLCA2NiwgNDksIDQ4LCAxODAsIDY2LCA0OSwgCi0gICAgNDgsIDE3OCwgNjYsIDQ5LCA0OCwgMTc2LCA2NiwgNDgsIDU3LCAxNzcsIDY2LCA0OCwgNTcsIDE3NiwgNjYsIDQ4LCA1NiwgCi0gICAgNTcsIDEyOCwgNjYsIDQ4LCA1NiwgMTgzLCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NiwgNDgsIDU2LCAxODEsIDY2LCA0OCwgCi0gICAgNTYsIDUxLCAxMjgsIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY2LCA0OCwgNTYsIDE3NywgNjYsIDQ4LCA1NiwgMTc2LCA2NiwgCi0gICAgNDgsIDU1LCA1NywgMTI4LCA2NiwgNDgsIDU1LCAxODQsIDY2LCA0OCwgNTUsIDE4MywgNjYsIDQ4LCA1NSwgMTgyLCA2NiwgCi0gICAgNDgsIDU1LCAxODEsIDY2LCA0OCwgNTUsIDE4MCwgNjYsIDQ4LCA1NSwgMTc5LCA2NiwgNDgsIDU1LCAxNzgsIDY2LCA0OCwgCi0gICAgNTUsIDE3NywgNjYsIDQ4LCA1NSwgMTc2LCA2NiwgNDgsIDU0LCAxODUsIDY2LCA0OCwgNTQsIDE4NCwgNjYsIDQ4LCA1NCwgCi0gICAgMTgzLCA2NiwgNDgsIDU0LCAxODIsIDY2LCA0OCwgNTQsIDE4MSwgNjYsIDQ4LCA1NCwgNTIsIDEyOCwgNjYsIDQ4LCA1NCwgCi0gICAgNTEsIDEyOCwgNjYsIDQ4LCA1NCwgMTc4LCA2NiwgNDgsIDU0LCAxNzcsIDY2LCA0OCwgNTQsIDE3NiwgNjYsIDQ4LCA1MywgCi0gICAgMTg1LCA2NiwgNDgsIDUzLCAxODQsIDY2LCA0OCwgNTMsIDE4MywgNjYsIDQ4LCA1MywgNTQsIDEyOCwgNjYsIDQ4LCA1MywgCi0gICAgMTgxLCA2NiwgNDgsIDUzLCAxODAsIDY2LCA0OCwgNTMsIDE3OSwgNjYsIDQ4LCA1MywgMTc4LCA2NiwgNDgsIDUzLCAxNzcsIAotICAgIDY2LCA0OCwgNTMsIDE3NiwgNjYsIDQ4LCA1MiwgNTcsIDEyOCwgNjYsIDQ4LCA1MiwgMTg0LCA2NiwgNDgsIDUyLCA1NSwgCi0gICAgMTI4LCA2NiwgNDgsIDUyLCAxODIsIDY2LCA0OCwgNTIsIDE4MSwgNjYsIDQ4LCA1MiwgMTgwLCA2NiwgNDgsIDUyLCAxNzksIAotICAgIDY2LCA0OCwgNTIsIDE3OCwgNjYsIDQ4LCA1MiwgMTc3LCA2NiwgNDgsIDUyLCAxNzYsIDY2LCA0OCwgNTEsIDE4NSwgNjYsIAotICAgIDQ4LCA1MSwgMTg0LCA2NiwgNDgsIDUxLCAxODMsIDY2LCA0OCwgNTEsIDE4MiwgNjYsIDQ4LCA1MSwgNTIsIDEyOCwgNjYsIAotICAgIDQ4LCA1MSwgMTc5LCA2NiwgNDgsIDUxLCAxNzgsIDY2LCA0OCwgNTEsIDE3NywgNjYsIDQ4LCA1MSwgMTc2LCA2NiwgNDgsIAotICAgIDUwLCAxODUsIDY2LCA0OCwgNTAsIDE4NCwgNjYsIDQ4LCA1MCwgMTgzLCA2NiwgNDgsIDUwLCAxODIsIDY2LCA0OCwgNTAsIAotICAgIDE4MSwgNjYsIDQ4LCA1MCwgMTgwLCA2NiwgNDgsIDUwLCAxNzksIDY2LCA0OCwgNTAsIDUwLCAxMjgsIDY2LCA0OCwgNTAsIAotICAgIDE3NywgNjYsIDQ4LCA1MCwgMTc2LCA2NiwgNDgsIDQ5LCA1NywgMTI4LCA2NiwgNDgsIDQ5LCA1NiwgMTI4LCA2NiwgNDgsIAotICAgIDQ5LCAxODMsIDY2LCA0OCwgNDksIDE4MiwgNjYsIDQ4LCA0OSwgMTgxLCA2NiwgNDgsIDQ5LCAxODAsIDY2LCA0OCwgNDksIAotICAgIDE3OSwgNjYsIDQ4LCA0OSwgMTc4LCA2NiwgNDgsIDQ5LCAxNzcsIDY2LCA0OCwgNDksIDE3NiwgNjYsIDQ4LCA0OCwgNTcsIAotICAgIDEyOCwgNjYsIDQ4LCA0OCwgMTg1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NiwgNDgsIDQ4LCAxODQsIDY2LCA0OCwgNDgsIAotICAgIDU1LCAxMjgsIDY2LCA0OCwgNDgsIDE4MywgNjYsIDQ4LCA0OCwgNTQsIDEyOCwgNjYsIDQ4LCA0OCwgMTgyLCA2NiwgNDgsIAotICAgIDQ4LCA1MywgNjUsIDEyOCwgNjYsIDQ4LCA0OCwgNTMsIDEyOCwgNjYsIDQ4LCA0OCwgMTgxLCA2NiwgNDgsIDQ4LCA1MiwgCi0gICAgMTI4LCA2NiwgNDgsIDQ4LCAxODAsIDY2LCA0OCwgNDgsIDUxLCAxMjgsIDY2LCA0OCwgNDgsIDE3OSwgNjYsIDQ4LCA0OCwgCi0gICAgNTAsIDEyOCwgNjYsIDQ4LCA0OCwgMTc4LCA2NiwgNDgsIDQ4LCA0OSwgMTI4LCA2NiwgNDgsIDQ4LCAxNzcsIDY1LCA5MCwgCi0gICAgODUsIDEyOCwgNjUsIDg5LCA2OSwgMjEwLCA2NSwgODksIDY2LCAxMjgsIDY1LCA4OSwgNjUsIDcyLCAxMjgsIDY1LCA4OCwgCi0gICAgNjksIDEyOCwgNjUsIDg3LCA2OSwgMTI4LCA2NSwgODYsIDY5LCA4MywgODQsIDY1LCAyMDYsIDY1LCA4NiwgNjksIDgyLCAKLSAgICA2NSwgNzEsIDE5NywgNjUsIDg2LCA2NSwgNzUsIDgyLCA2NSwgNzIsIDY1LCA4MywgNjUsIDc4LCA4OSwgNjUsIDEyOCwgNjUsIAotICAgIDg2LCA2NSwgNzEsIDgyLCA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA4NSwgCi0gICAgODQsIDg1LCA3NywgNzgsIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA3OSwgNjYsIDczLCA3NiwgNjksIDEyOCwgNjUsIDg1LCAKLSAgICA4NCwgNzksIDc3LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDIwNCwgNjUsIDg1LCA4MiwgNzMsIAotICAgIDgwLCA3MywgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCAKLSAgICA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDQ1LCA1MCwgMTI4LCA2NSwgODUsIAotICAgIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgMTI4LCA2NSwgODUsIDc4LCA3OCwgMTI4LCA2NSwgODUsIDcxLCA4NSwgCi0gICAgODMsIDg0LCAxMjgsIDY1LCA4NSwgNzEsIDc3LCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgODUsIDY5LCAKLSAgICAxMjgsIDY1LCA4NSwgNjYsIDY5LCA4MiwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjUsIDg0LCA4NCwgNzMsIDE5NSwgNjUsIAotICAgIDg0LCA4NCwgNzIsIDY1LCA2NywgNjUsIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNjUsIDg0LCA4NCwgNjUsIDIwMywgNjUsIDg0LCA3OSwgMjA1LCA2NSwgODQsIDc4LCA2NSwgMjAwLCA2NSwgODQsIDc3LCAKLSAgICA2NSwgNjUsIDg1LCAxMjgsIDY1LCA4NCwgNzMsIDg5LCA2NSwgMTI4LCA2NSwgODQsIDcyLCA3NiwgNjksIDg0LCA3MywgCi0gICAgMTk1LCA2NSwgODQsIDcyLCA2NSwgODIsIDg2LCA2NSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgNjUsIDg0LCA3MiwgNjUsIDgwLCAKLSAgICA2NSwgODMsIDY3LCA2NSwgMjA2LCA2NSwgODMsIDkwLCAxMjgsIDY1LCA4MywgODksIDg1LCA4MiwgMTkzLCA2NSwgODMsIAotICAgIDg5LCA3NywgODAsIDg0LCA3OSwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA2NSwgODMsIDg0LCA4MiwgNzksIDc4LCAKLSAgICA3OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgNjUsIDgzLCA4NCwgODIsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIAotICAgIDY1LCA4MywgODQsIDc5LCA3OCwgNzMsIDgzLCA3MiwgNjksIDE5NiwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc3LCAKLSAgICAxMjgsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgMjExLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzUsIAotICAgIDEyOCwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDIwMywgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDY3LCA4NSwgCi0gICAgODMsIDEyOCwgNjUsIDgzLCA4MywgODksIDgyLCA3MywgNjUsIDIwNiwgNjUsIDgzLCA4MywgNjksIDgyLCA4NCwgNzMsIDc5LCAKLSAgICA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgODIsIAotICAgIDY1LCA4NCwgNjksIDE5NiwgNjUsIDgzLCA4MCwgNjksIDgyLCAxMjgsIDY1LCA4MywgNzMsIDY1LCA0NSwgNjUsIDg1LCA4MywgCi0gICAgODQsIDgyLCA2NSwgNzYsIDczLCA2NSwgMTI4LCA2NSwgODMsIDcyLCA3MSwgNjUsIDY2LCAxMjgsIDY1LCA4MywgNzIsIDY5LCAKLSAgICA4MywgMTI4LCA2NSwgODMsIDcyLCA1NywgMTI4LCA2NSwgODMsIDcyLCAxNzgsIDY1LCA4MywgNjcsIDY5LCA3OCwgODQsIAorICAgIDc4LCAxMjgsIDY2LCA2OSwgNjUsIDc3LCA2OSwgMTk2LCA2NiwgNjksIDY1LCA2OCwgODMsIDEyOCwgNjYsIDY5LCA2NSwgCisgICAgNjcsIDIwMCwgNjYsIDY3LCA2NSwgNjgsIDEyOCwgNjYsIDY3LCA2NSwgMTk2LCA2NiwgNjYsIDg5LCA4OCwgMTI4LCA2NiwgCisgICAgNjYsIDg5LCA4NCwgMTI4LCA2NiwgNjYsIDg5LCA4MCwgMTI4LCA2NiwgNjYsIDg5LCAxMjgsIDY2LCA2NiwgODUsIDg4LCAKKyAgICAxMjgsIDY2LCA2NiwgODUsIDg0LCAxMjgsIDY2LCA2NiwgODUsIDgyLCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA4MiwgMTI4LCAKKyAgICA2NiwgNjYsIDg1LCA4MCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgODgsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDgwLCAxMjgsIAorICAgIDY2LCA2NiwgODUsIDc5LCAxMjgsIDY2LCA2NiwgODUsIDEyOCwgNjYsIDY2LCA3OSwgODgsIDEyOCwgNjYsIDY2LCA3OSwgCisgICAgODQsIDEyOCwgNjYsIDY2LCA3OSwgODAsIDEyOCwgNjYsIDY2LCA3OSwgMTI4LCA2NiwgNjYsIDczLCA4OCwgMTI4LCA2NiwgCisgICAgNjYsIDczLCA4MCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODgsIDEyOCwgNjYsIDY2LCA3MywgNjksIDg0LCAxMjgsIDY2LCAKKyAgICA2NiwgNzMsIDY5LCA4MCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgMTI4LCA2NiwgNjYsIDczLCAxMjgsIDY2LCA2NiwgNjksIAorICAgIDg4LCAxMjgsIDY2LCA2NiwgNjksIDgwLCAxMjgsIDY2LCA2NiwgNjksIDY5LCAxMjgsIDY2LCA2NiwgNjksIDEyOCwgNjYsIAorICAgIDY2LCA2NSwgODgsIDEyOCwgNjYsIDY2LCA2NSwgODQsIDEyOCwgNjYsIDY2LCA2NSwgODAsIDEyOCwgNjYsIDY2LCA2NSwgCisgICAgNjUsIDEyOCwgNjYsIDY2LCA2NSwgMTI4LCA2NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NiwgNjUsIDg1LCAKKyAgICAxMjgsIDY2LCA2NSwgODQsIDg0LCA2OSwgODIsIDg5LCAxMjgsIDY2LCA2NSwgODQsIDcyLCA4NCwgODUsIDY2LCAxMjgsIAorICAgIDY2LCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIDg0LCAxMjgsIDY2LCA2NSwgODQsIDcyLCAxMjgsIDY2LCA2NSwgCisgICAgODQsIDIwMCwgNjYsIDY1LCA4NCwgNjUsIDIwMywgNjYsIDY1LCA4MywgODMsIDY1LCAxMjgsIDY2LCA2NSwgODMsIDgzLCAKKyAgICAxOTMsIDY2LCA2NSwgODMsIDc1LCA2OSwgODQsIDY2LCA2NSwgNzYsIDIwNCwgNjYsIDY1LCA4MywgNzIsIDc1LCA3MywgCisgICAgMjEwLCA2NiwgNjUsIDgzLCA3MiwgMTI4LCA2NiwgNjUsIDgzLCA2OSwgNzYsIDczLCA3OCwgMTk3LCA2NiwgNjUsIDgzLCAKKyAgICA2OSwgNjYsIDY1LCA3NiwgNzYsIDEyOCwgNjYsIDY1LCA4MywgNjksIDEyOCwgNjYsIDY1LCA4MywgMTk3LCA2NiwgNjUsIAorICAgIDgyLCA4MywgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNzMsIDY5LCA4MiwgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDc1LCA3MiwgCisgICAgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDY5LCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgMTk3LCA2NiwgNjUsIDgyLCAKKyAgICA3NiwgNzMsIDc4LCA2OSwgMTI4LCA2NiwgNjUsIDgyLCA3NiwgNjksIDg5LCAxMjgsIDY2LCA2NSwgODIsIDczLCA4OSwgNzksIAorICAgIDc5LCA4MywgNjUsIDc4LCAxMjgsIDY2LCA2NSwgODIsIDY2LCA2OSwgMjEwLCA2NiwgNjUsIDgyLCA2NSwgNTAsIDEyOCwgCisgICAgNjYsIDY1LCAyMTAsIDY2LCA2NSwgNzgsIDg0LCA3OSwgNjcsIDEyOCwgNjYsIDY1LCA3OCwgNzUsIDc4LCA3OSwgODQsIAorICAgIDE5NywgNjYsIDY1LCA3OCwgNzUsIDEyOCwgNjYsIDY1LCA3OCwgMjAzLCA2NiwgNjUsIDc4LCA2OCwgMTI4LCA2NiwgNjUsIAorICAgIDc4LCA2NSwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgNzgsIDUwLCAxMjgsIDY2LCA2NSwgNzgsIDE3OCwgNjYsIDY1LCA3NywgCisgICAgNjYsIDc5LCA3OSwgODMsIDEyOCwgNjYsIDY1LCA3NywgNjYsIDc5LCA3OSwgMTI4LCA2NiwgNjUsIDc2LCA4NSwgNjgsIDY1LCAKKyAgICAxMjgsIDY2LCA2NSwgNzYsIDc2LCA4MCwgNzksIDczLCA3OCwgMjEyLCA2NiwgNjUsIDc2LCA3NiwgNzksIDg0LCAxMjgsIAorICAgIDY2LCA2NSwgNzYsIDc2LCA3OSwgMjEyLCA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgNDUsIDgzLCA4MCwgNzksIDc1LCAKKyAgICA2OSwgMTk2LCA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgMTI4LCA2NiwgNjUsIDc2LCA2NSwgNzEsIDEyOCwgNjYsIAorICAgIDY1LCA3NiwgMTI4LCA2NiwgNjUsIDIwNCwgNjYsIDY1LCA3MywgODIsIDc1LCA2NSwgNzgsIDEyOCwgNjYsIDY1LCA3MywgCisgICAgNzcsIDY1LCA3MywgMTI4LCA2NiwgNjUsIDcyLCA4NCwgMTI4LCA2NiwgNjUsIDcyLCA3MywgODIsIDcxLCA3OSwgNzcsIDg1LCAKKyAgICA3NSwgNzIsIDY1LCAxMjgsIDY2LCA2NSwgNzIsIDY1LCA4MiwgNTAsIDEyOCwgNjYsIDY1LCA3MiwgNjUsIDgyLCAxNzgsIAorICAgIDY2LCA2NSwgNzIsIDEyOCwgNjYsIDY1LCA3MSwgODMsIDEyOCwgNjYsIDY1LCA3MSwgNzEsIDY1LCA3MSwgMTk3LCA2NiwgCisgICAgNjUsIDcxLCA2NSwgMTI4LCA2NiwgNjUsIDcxLCA1MSwgMTI4LCA2NiwgNjUsIDE5OSwgNjYsIDY1LCA2OCwgNzcsIDczLCAKKyAgICA3OCwgODQsIDc5LCAyMDYsIDY2LCA2NSwgNjgsIDcxLCA2OSwgODIsIDEyOCwgNjYsIDY1LCA2OCwgNzEsIDY5LCAxMjgsIAorICAgIDY2LCA2NSwgNjgsIDEyOCwgNjYsIDY1LCAxOTYsIDY2LCA2NSwgNjcsIDg0LCA4MiwgNzMsIDY1LCAyMDYsIDY2LCA2NSwgCisgICAgNjcsIDc1LCA4NywgNjUsIDgyLCA2OCwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDY2LCAKKyAgICA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgNzIsIDEyOCwgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDgzLCAyMDAsIAorICAgIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA3OCwgODQsIDY5LCAxOTYsIDY2LCA2NSwgNjcsIDc1LCA3MiwgNjUsIDc4LCAKKyAgICAxOTYsIDY2LCA2NSwgNjcsIDc1LCA0NSwgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDY2LCA2NSwgNjcsIDc1LCAxMjgsIAorICAgIDY2LCA2NSwgNjcsIDIwMywgNjYsIDY1LCA2NiwgODksIDEyOCwgNjYsIDY1LCA2NiwgMjE3LCA2NiwgNjUsIDY1LCA4MiwgCisgICAgNjksIDgyLCA4NSwgMTI4LCA2NiwgNjUsIDQ1LCA1MCwgMTI4LCA2NiwgNTEsIDQ4LCA1MywgMTI4LCA2NiwgNTAsIDUzLCAKKyAgICA1NywgMTI4LCA2NiwgNTAsIDUzLCA1NiwgMTI4LCA2NiwgNTAsIDUzLCA1NSwgMTI4LCA2NiwgNTAsIDUzLCA1NCwgMTI4LCAKKyAgICA2NiwgNTAsIDUzLCA1MywgMTI4LCA2NiwgNTAsIDUzLCAxODAsIDY2LCA1MCwgNTMsIDUxLCAxMjgsIDY2LCA1MCwgNTMsIAorICAgIDUwLCAxMjgsIDY2LCA1MCwgNTMsIDQ5LCAxMjgsIDY2LCA1MCwgNTMsIDQ4LCAxMjgsIDY2LCA1MCwgNTIsIDU3LCAxMjgsIAorICAgIDY2LCA1MCwgNTIsIDU2LCAxMjgsIDY2LCA1MCwgNTIsIDE4MywgNjYsIDUwLCA1MiwgNTQsIDEyOCwgNjYsIDUwLCA1MiwgCisgICAgNTMsIDEyOCwgNjYsIDUwLCA1MiwgMTc5LCA2NiwgNTAsIDUyLCAxNzgsIDY2LCA1MCwgNTIsIDE3NywgNjYsIDUwLCA1MiwgCisgICAgMTc2LCA2NiwgNTAsIDUxLCA1NCwgMTI4LCA2NiwgNTAsIDUxLCA1MiwgMTI4LCA2NiwgNTAsIDUxLCAxNzksIDY2LCA1MCwgCisgICAgNTEsIDUwLCAxMjgsIDY2LCA1MCwgNTEsIDE3NywgNjYsIDUwLCA1MSwgMTc2LCA2NiwgNTAsIDUwLCA1NywgMTI4LCA2NiwgCisgICAgNTAsIDUwLCA1NiwgMTI4LCA2NiwgNTAsIDUwLCA1NSwgMTI4LCA2NiwgNTAsIDUwLCA1NCwgMTI4LCA2NiwgNTAsIDUwLCAKKyAgICAxODEsIDY2LCA1MCwgNTAsIDUwLCAxMjgsIDY2LCA1MCwgNTAsIDQ5LCAxMjgsIDY2LCA1MCwgNTAsIDE3NiwgNjYsIDUwLCAKKyAgICA0OSwgNTcsIDEyOCwgNjYsIDUwLCA0OSwgNTYsIDEyOCwgNjYsIDUwLCA0OSwgNTUsIDEyOCwgNjYsIDUwLCA0OSwgNTQsIAorICAgIDEyOCwgNjYsIDUwLCA0OSwgNTMsIDEyOCwgNjYsIDUwLCA0OSwgNTIsIDEyOCwgNjYsIDUwLCA0OSwgNTEsIDEyOCwgNjYsIAorICAgIDUwLCA0OSwgNTAsIDEyOCwgNjYsIDUwLCA0OSwgNDksIDEyOCwgNjYsIDUwLCA0OSwgNDgsIDEyOCwgNjYsIDUwLCA0OCwgCisgICAgNTcsIDEyOCwgNjYsIDUwLCA0OCwgNTYsIDEyOCwgNjYsIDUwLCA0OCwgNTUsIDEyOCwgNjYsIDUwLCA0OCwgNTQsIDEyOCwgCisgICAgNjYsIDUwLCA0OCwgNTMsIDEyOCwgNjYsIDUwLCA0OCwgNTIsIDEyOCwgNjYsIDUwLCA0OCwgNTEsIDEyOCwgNjYsIDUwLCAKKyAgICA0OCwgNTAsIDEyOCwgNjYsIDUwLCA0OCwgNDksIDEyOCwgNjYsIDUwLCA0OCwgNDgsIDEyOCwgNjYsIDQ5LCA1NywgMTc3LCAKKyAgICA2NiwgNDksIDU3LCA0OCwgMTI4LCA2NiwgNDksIDU2LCA1NywgMTI4LCA2NiwgNDksIDU2LCA1MywgMTI4LCA2NiwgNDksIAorICAgIDU2LCA1MiwgMTI4LCA2NiwgNDksIDU2LCA1MSwgMTI4LCA2NiwgNDksIDU2LCA1MCwgMTI4LCA2NiwgNDksIDU2LCA0OSwgCisgICAgMTI4LCA2NiwgNDksIDU2LCA0OCwgMTI4LCA2NiwgNDksIDU1LCA1NywgMTI4LCA2NiwgNDksIDU1LCA1NiwgMTI4LCA2NiwgCisgICAgNDksIDU1LCA1NSwgMTI4LCA2NiwgNDksIDU1LCAxODIsIDY2LCA0OSwgNTUsIDUyLCAxMjgsIDY2LCA0OSwgNTUsIDE3OSwgCisgICAgNjYsIDQ5LCA1NSwgNTAsIDEyOCwgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjYsIDQ5LCA1NSwgNDgsIDEyOCwgNjYsIDQ5LCAKKyAgICA1NCwgNTcsIDEyOCwgNjYsIDQ5LCA1NCwgNTYsIDEyOCwgNjYsIDQ5LCA1NCwgNTUsIDEyOCwgNjYsIDQ5LCA1NCwgNTQsIAorICAgIDEyOCwgNjYsIDQ5LCA1NCwgNTMsIDEyOCwgNjYsIDQ5LCA1NCwgNTIsIDEyOCwgNjYsIDQ5LCA1NCwgMTc5LCA2NiwgNDksIAorICAgIDU0LCAxNzgsIDY2LCA0OSwgNTQsIDQ5LCAxMjgsIDY2LCA0OSwgNTQsIDQ4LCAxMjgsIDY2LCA0OSwgNTMsIDE4NSwgNjYsIAorICAgIDQ5LCA1MywgNTYsIDEyOCwgNjYsIDQ5LCA1MywgNTUsIDEyOCwgNjYsIDQ5LCA1MywgMTgyLCA2NiwgNDksIDUzLCA1MywgCisgICAgMTI4LCA2NiwgNDksIDUzLCA1MiwgMTI4LCA2NiwgNDksIDUzLCA1MSwgMTI4LCA2NiwgNDksIDUzLCA1MCwgMTI4LCA2NiwgCisgICAgNDksIDUzLCAxNzcsIDY2LCA0OSwgNTMsIDQ4LCAxMjgsIDY2LCA0OSwgNTIsIDU0LCAxMjgsIDY2LCA0OSwgNTIsIDE4MSwgCisgICAgNjYsIDQ5LCA1MiwgNTAsIDEyOCwgNjYsIDQ5LCA1MiwgMTc3LCA2NiwgNDksIDUyLCAxNzYsIDY2LCA0OSwgNTEsIDE4MSwgCisgICAgNjYsIDQ5LCA1MSwgMTc5LCA2NiwgNDksIDUxLCA1MCwgMTI4LCA2NiwgNDksIDUxLCAxNzcsIDY2LCA0OSwgNTEsIDE3NiwgCisgICAgNjYsIDQ5LCA1MCwgMTg0LCA2NiwgNDksIDUwLCAxODMsIDY2LCA0OSwgNTAsIDE4MSwgNjYsIDQ5LCA1MCwgMTc5LCA2NiwgCisgICAgNDksIDUwLCAxNzgsIDY2LCA0OSwgNTAsIDE3NywgNjYsIDQ5LCA1MCwgMTc2LCA2NiwgNDksIDQ4LCA1NywgMjA1LCA2NiwgCisgICAgNDksIDQ4LCA1NywgMTk4LCA2NiwgNDksIDQ4LCA1NiwgMjA1LCA2NiwgNDksIDQ4LCA1NiwgMTk4LCA2NiwgNDksIDQ4LCAKKyAgICA1NSwgMjA1LCA2NiwgNDksIDQ4LCA1NSwgMTk4LCA2NiwgNDksIDQ4LCA1NCwgMjA1LCA2NiwgNDksIDQ4LCA1NCwgMTk4LCAKKyAgICA2NiwgNDksIDQ4LCA1MywgMjA1LCA2NiwgNDksIDQ4LCA1MywgMTk4LCA2NiwgNDksIDQ4LCAxODEsIDY2LCA0OSwgNDgsIAorICAgIDE4MCwgNjYsIDQ5LCA0OCwgMTc4LCA2NiwgNDksIDQ4LCAxNzYsIDY2LCA0OCwgNTcsIDE3NywgNjYsIDQ4LCA1NywgMTc2LCAKKyAgICA2NiwgNDgsIDU2LCA1NywgMTI4LCA2NiwgNDgsIDU2LCAxODMsIDY2LCA0OCwgNTYsIDU0LCAxMjgsIDY2LCA0OCwgNTYsIAorICAgIDE4MSwgNjYsIDQ4LCA1NiwgNTEsIDEyOCwgNjYsIDQ4LCA1NiwgNTAsIDEyOCwgNjYsIDQ4LCA1NiwgMTc3LCA2NiwgNDgsIAorICAgIDU2LCAxNzYsIDY2LCA0OCwgNTUsIDU3LCAxMjgsIDY2LCA0OCwgNTUsIDE4NCwgNjYsIDQ4LCA1NSwgMTgzLCA2NiwgNDgsIAorICAgIDU1LCAxODIsIDY2LCA0OCwgNTUsIDE4MSwgNjYsIDQ4LCA1NSwgMTgwLCA2NiwgNDgsIDU1LCAxNzksIDY2LCA0OCwgNTUsIAorICAgIDE3OCwgNjYsIDQ4LCA1NSwgMTc3LCA2NiwgNDgsIDU1LCAxNzYsIDY2LCA0OCwgNTQsIDE4NSwgNjYsIDQ4LCA1NCwgMTg0LCAKKyAgICA2NiwgNDgsIDU0LCAxODMsIDY2LCA0OCwgNTQsIDE4MiwgNjYsIDQ4LCA1NCwgMTgxLCA2NiwgNDgsIDU0LCA1MiwgMTI4LCAKKyAgICA2NiwgNDgsIDU0LCA1MSwgMTI4LCA2NiwgNDgsIDU0LCAxNzgsIDY2LCA0OCwgNTQsIDE3NywgNjYsIDQ4LCA1NCwgMTc2LCAKKyAgICA2NiwgNDgsIDUzLCAxODUsIDY2LCA0OCwgNTMsIDE4NCwgNjYsIDQ4LCA1MywgMTgzLCA2NiwgNDgsIDUzLCA1NCwgMTI4LCAKKyAgICA2NiwgNDgsIDUzLCAxODEsIDY2LCA0OCwgNTMsIDE4MCwgNjYsIDQ4LCA1MywgMTc5LCA2NiwgNDgsIDUzLCAxNzgsIDY2LCAKKyAgICA0OCwgNTMsIDE3NywgNjYsIDQ4LCA1MywgMTc2LCA2NiwgNDgsIDUyLCA1NywgMTI4LCA2NiwgNDgsIDUyLCAxODQsIDY2LCAKKyAgICA0OCwgNTIsIDU1LCAxMjgsIDY2LCA0OCwgNTIsIDE4MiwgNjYsIDQ4LCA1MiwgMTgxLCA2NiwgNDgsIDUyLCAxODAsIDY2LCAKKyAgICA0OCwgNTIsIDE3OSwgNjYsIDQ4LCA1MiwgMTc4LCA2NiwgNDgsIDUyLCAxNzcsIDY2LCA0OCwgNTIsIDE3NiwgNjYsIDQ4LCAKKyAgICA1MSwgMTg1LCA2NiwgNDgsIDUxLCAxODQsIDY2LCA0OCwgNTEsIDE4MywgNjYsIDQ4LCA1MSwgMTgyLCA2NiwgNDgsIDUxLCAKKyAgICA1MiwgMTI4LCA2NiwgNDgsIDUxLCAxNzksIDY2LCA0OCwgNTEsIDE3OCwgNjYsIDQ4LCA1MSwgMTc3LCA2NiwgNDgsIDUxLCAKKyAgICAxNzYsIDY2LCA0OCwgNTAsIDE4NSwgNjYsIDQ4LCA1MCwgMTg0LCA2NiwgNDgsIDUwLCAxODMsIDY2LCA0OCwgNTAsIDE4MiwgCisgICAgNjYsIDQ4LCA1MCwgMTgxLCA2NiwgNDgsIDUwLCAxODAsIDY2LCA0OCwgNTAsIDE3OSwgNjYsIDQ4LCA1MCwgNTAsIDEyOCwgCisgICAgNjYsIDQ4LCA1MCwgMTc3LCA2NiwgNDgsIDUwLCAxNzYsIDY2LCA0OCwgNDksIDU3LCAxMjgsIDY2LCA0OCwgNDksIDU2LCAKKyAgICAxMjgsIDY2LCA0OCwgNDksIDE4MywgNjYsIDQ4LCA0OSwgMTgyLCA2NiwgNDgsIDQ5LCAxODEsIDY2LCA0OCwgNDksIDE4MCwgCisgICAgNjYsIDQ4LCA0OSwgMTc5LCA2NiwgNDgsIDQ5LCAxNzgsIDY2LCA0OCwgNDksIDE3NywgNjYsIDQ4LCA0OSwgMTc2LCA2NiwgCisgICAgNDgsIDQ4LCA1NywgMTI4LCA2NiwgNDgsIDQ4LCAxODUsIDY2LCA0OCwgNDgsIDU2LCAxMjgsIDY2LCA0OCwgNDgsIDE4NCwgCisgICAgNjYsIDQ4LCA0OCwgNTUsIDEyOCwgNjYsIDQ4LCA0OCwgMTgzLCA2NiwgNDgsIDQ4LCA1NCwgMTI4LCA2NiwgNDgsIDQ4LCAKKyAgICAxODIsIDY2LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NiwgNDgsIDQ4LCAxODEsIDY2LCAKKyAgICA0OCwgNDgsIDUyLCAxMjgsIDY2LCA0OCwgNDgsIDE4MCwgNjYsIDQ4LCA0OCwgNTEsIDEyOCwgNjYsIDQ4LCA0OCwgMTc5LCAKKyAgICA2NiwgNDgsIDQ4LCA1MCwgMTI4LCA2NiwgNDgsIDQ4LCAxNzgsIDY2LCA0OCwgNDgsIDQ5LCAxMjgsIDY2LCA0OCwgNDgsIAorICAgIDE3NywgNjUsIDkwLCA4NSwgMTI4LCA2NSwgODksIDY2LCAxMjgsIDY1LCA4OSwgNjUsIDcyLCAxMjgsIDY1LCA4OCwgNjksIAorICAgIDEyOCwgNjUsIDg3LCA2OSwgMTI4LCA2NSwgODcsIDY1LCAyMTcsIDY1LCA4NiwgNjksIDgzLCA4NCwgNjUsIDIwNiwgNjUsIAorICAgIDg2LCA2OSwgODIsIDY1LCA3MSwgMTk3LCA2NSwgODYsIDY1LCA3NSwgODIsIDY1LCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg5LCAKKyAgICA2NSwgMTI4LCA2NSwgODYsIDY1LCA3MSwgODIsIDY1LCA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgNjUsIDg1LCA4NCwgODUsIDc3LCA3OCwgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDc5LCA2NiwgNzMsIDc2LCA2OSwgCisgICAgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDg1LCA4MywgODQsIDgyLCA2NSwgMjA0LCAKKyAgICA2NSwgODUsIDgyLCA3MywgODAsIDczLCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgCisgICAgOTAsIDY4LCA2NSwgNjUsIDcyLCA2NSwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgNDUsIAorICAgIDUwLCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCAxMjgsIDY1LCA4NSwgNzgsIDc4LCAKKyAgICAxMjgsIDY1LCA4NSwgNzEsIDg1LCA4MywgODQsIDEyOCwgNjUsIDg1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDY1LCA4NSwgNjksIDEyOCwgNjUsIDg1LCA2NiwgNjksIDgyLCA3MSwgNzMsIDc4LCA2OSwgMTI4LCA2NSwgCisgICAgODQsIDg0LCA3MywgMTk1LCA2NSwgODQsIDg0LCA3MiwgNjUsIDY3LCA2NSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjksIDc4LCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODQsIDg0LCA2NSwgMjAzLCA2NSwgODQsIDg0LCA2NSwgNjcsIDcyLCA2OSwgCisgICAgMTk2LCA2NSwgODQsIDc5LCAyMDUsIDY1LCA4NCwgNzgsIDY1LCAyMDAsIDY1LCA4NCwgNzcsIDY1LCA2NSwgODUsIDEyOCwgCisgICAgNjUsIDg0LCA3MywgODksIDY1LCAxMjgsIDY1LCA4NCwgNzIsIDc2LCA2OSwgODQsIDczLCAxOTUsIDY1LCA4NCwgNzIsIDY1LCAKKyAgICA4MiwgODYsIDY1LCA4NiwgNjksIDY4LCA3MywgMTk1LCA2NSwgODQsIDcyLCA2NSwgODAsIDY1LCA4MywgNjcsIDY1LCAyMDYsIAorICAgIDY1LCA4MywgOTAsIDEyOCwgNjUsIDgzLCA4OSwgODUsIDgyLCAxOTMsIDY1LCA4MywgODksIDc3LCA4MCwgODQsIDc5LCA4NCwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDY1LCA4MywgODQsIDgyLCA3OSwgNzgsIDc5LCA3NywgNzMsIDY3LCA2NSwgMjA0LCAKKyAgICA2NSwgODMsIDg0LCA4MiwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgNjUsIDgzLCA4NCwgNzksIDc4LCA3MywgCisgICAgODMsIDcyLCA2OSwgMTk2LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzcsIDEyOCwgNjUsIDgzLCA4NCwgNjksIDgyLCAKKyAgICA3MywgODMsIDc1LCAyMTEsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgMTI4LCA2NSwgODMsIDg0LCA2OSwgODIsIAorICAgIDczLCA4MywgMjAzLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNjcsIDg1LCA4MywgMTI4LCA2NSwgODMsIDgzLCA4OSwgCisgICAgODIsIDczLCA2NSwgMjA2LCA2NSwgODMsIDgzLCA2OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCAKKyAgICA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODMsIAorICAgIDgwLCA2OSwgODIsIDEyOCwgNjUsIDgzLCA3MywgNjUsIDQ1LCA2NSwgODUsIDgzLCA4NCwgODIsIDY1LCA3NiwgNzMsIDY1LCAKKyAgICAxMjgsIDY1LCA4MywgNzIsIDcxLCA2NSwgNjYsIDEyOCwgNjUsIDgzLCA3MiwgNjksIDgzLCAxMjgsIDY1LCA4MywgNzIsIAorICAgIDU3LCAxMjgsIDY1LCA4MywgNzIsIDUxLCAxMjgsIDY1LCA4MywgNzIsIDE3OCwgNjUsIDgzLCA2NywgNjksIDc4LCA4NCwgCiAgICAgMTI4LCA2NSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjUsIDgzLCA2NSwgNzYsIDUwLCAxMjgsIDY1LCAKICAgICA4MiwgODUsIDcyLCA4NSwgNjUsIDEyOCwgNjUsIDgyLCA4NCwgNzMsIDgzLCAyMTIsIDY1LCA4MiwgODQsIDczLCA2NywgODUsIAogICAgIDc2LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4MiwgODQsIDY1LCA2NiwgMTk3LCA2NSwgODIsIDgzLCA2OSwgNzksIDgzLCAKICAgICAxMjgsIDY1LCA4MiwgODMsIDY5LCA3OSwgMjExLCA2NSwgODIsIDgzLCA2OSwgNzgsIDczLCA2NywgMTI4LCA2NSwgODIsIAogICAgIDgyLCA3OSwgODcsIDgzLCAxMjgsIDY1LCA4MiwgODIsIDc5LCA4NywgMjExLCA2NSwgODIsIDgyLCA3OSwgODcsIDcyLCA2OSwgCi0gICAgNjUsIDY4LCAxMjgsIDY1LCA4MiwgODIsIDc5LCA4NywgNzIsIDY5LCA2NSwgMTk2LCA2NSwgODIsIDgyLCA3OSwgODcsIDQ1LCAKLSAgICA4NCwgNjUsIDczLCA3NiwgMTI4LCA2NSwgODIsIDgyLCA3MywgODYsIDY5LCAxMjgsIDY1LCA4MiwgODIsIDY1LCA4OSwgCi0gICAgMTI4LCA2NSwgODIsIDgwLCA2OSwgNzEsIDcxLCA3MywgNjUsIDg0LCAyMDcsIDY1LCA4MiwgNzksIDg1LCA4MywgNzMsIDc4LCAKLSAgICAxOTksIDY1LCA4MiwgNzksIDg1LCA4MiwgMTkzLCA2NSwgODIsIDc5LCA4NSwgNzgsIDY4LCA0NSwgODAsIDgyLCA3OSwgNzAsIAotICAgIDczLCA3NiwgNjksIDEyOCwgNjUsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDY1LCA4MiwgNzcsIDg5LCAxMjgsIDY1LCA4MiwgCi0gICAgNzcsIDc5LCA4NSwgODIsIDEyOCwgNjUsIDgyLCAyMDUsIDY1LCA4MiwgNzYsIDY1LCA4NSwgMTk5LCA2NSwgODIsIDc1LCAKLSAgICA4NCwgNzMsIDc1LCAyMDcsIDY1LCA4MiwgNzUsIDY1LCA2NiwgMTI4LCA2NSwgODIsIDc1LCA2NSwgNjUsIDc4LCA4NSwgCisgICAgNjUsIDY4LCA4MywgMTI4LCA2NSwgODIsIDgyLCA3OSwgODcsIDcyLCA2OSwgNjUsIDY4LCAxMjgsIDY1LCA4MiwgODIsIDc5LCAKKyAgICA4NywgNzIsIDY5LCA2NSwgMTk2LCA2NSwgODIsIDgyLCA3OSwgODcsIDQ1LCA4NCwgNjUsIDczLCA3NiwgMTI4LCA2NSwgODIsIAorICAgIDgyLCA3MywgODYsIDczLCA3OCwgNzEsIDEyOCwgNjUsIDgyLCA4MiwgNzMsIDg2LCA2OSwgMTI4LCA2NSwgODIsIDgyLCA2NSwgCisgICAgODksIDEyOCwgNjUsIDgyLCA4MCwgNjksIDcxLCA3MSwgNzMsIDY1LCA4NCwgMjA3LCA2NSwgODIsIDc5LCA4NSwgODMsIDczLCAKKyAgICA3OCwgMTk5LCA2NSwgODIsIDc5LCA4NSwgODIsIDE5MywgNjUsIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIDgwLCA4MiwgNzksIAorICAgIDcwLCA3MywgNzYsIDY5LCAxMjgsIDY1LCA4MiwgNzksIDg1LCA3OCwgMTk2LCA2NSwgODIsIDc3LCA4OSwgMTI4LCA2NSwgCisgICAgODIsIDc3LCA3OSwgODUsIDgyLCAxMjgsIDY1LCA4MiwgMjA1LCA2NSwgODIsIDc2LCA2NSwgODUsIDE5OSwgNjUsIDgyLCAKKyAgICA3NSwgODQsIDczLCA3NSwgMjA3LCA2NSwgODIsIDc1LCA2NSwgNjYsIDEyOCwgNjUsIDgyLCA3NSwgNjUsIDY1LCA3OCwgODUsIAogICAgIDEyOCwgNjUsIDgyLCA3MywgODMsIDg0LCA2OSwgODIsIDY1LCAxMjgsIDY1LCA4MiwgNzMsIDgzLCA4NCwgNjksIDgyLCAKICAgICAxOTMsIDY1LCA4MiwgNzMsIDY5LCA4MywgMTI4LCA2NSwgODIsIDcxLCA3OSwgODQsIDY5LCA4MiwgNzMsIDEyOCwgNjUsIAogICAgIDgyLCA3MSwgNzksIDgzLCA4OSwgNzgsIDg0LCA3MiwgNjksIDg0LCA3OSwgNzgsIDEyOCwgNjUsIDgyLCA3MSwgNzMsIDEyOCwgCiAgICAgNjUsIDgyLCA2OSwgODAsIDY1LCAxMjgsIDY1LCA4MiwgNjksIDY1LCAxMjgsIDY1LCA4MiwgNjgsIDcyLCA2NSwgODYsIDczLCAKLSAgICA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgNjUsIDgyLCA2NywgNzIsIDY1LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MiwgNjcsIAotICAgIDcyLCA2NSwgNzMsIDc5LCAyMDYsIDY1LCA4MiwgNjcsIDcyLCA2NSwgNzMsIDE5NSwgNjUsIDgyLCA2NywgMjAwLCA2NSwgCi0gICAgODIsIDY3LCAxMjgsIDY1LCA4MiwgMTk1LCA2NSwgODIsIDY1LCA3NywgNjUsIDczLCAxOTUsIDY1LCA4MiwgNjUsIDY5LCAKLSAgICA2NSwgNjksIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgODUsIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNzMsIAotICAgIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjksIDc5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY5LCAKLSAgICAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY1LCAxMjgsIDY1LCA4MiwgNjUsIDY4LCAxMjgsIDY1LCA4MiwgNjUsIAotICAgIDE5NiwgNjUsIDgyLCA2NSwgNjYsIDczLCA2NywgNDUsIDczLCA3OCwgNjgsIDczLCAxOTUsIDY1LCA4MiwgNjUsIDY2LCA3MywgCi0gICAgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgNzcsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDY5LCAKLSAgICA2OSwgNzcsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDY1LCA3MCwgNzksIAotICAgIDgyLCA4NCwgNzMsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDE5MywgNjUsIDgwLCA4NSwgMjA2LCA2NSwgODAsIDgyLCA3MywgCi0gICAgNzYsIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCA3NiwgMjE3LCA2NSwgODAsIDgwLCAKLSAgICA4MiwgNzksIDg4LCA3MywgNzcsIDY1LCA4NCwgNjksIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCA2OSwgCi0gICAgMjExLCA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgNzIsIDEyOCwgNjUsIDgwLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDY1LCA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA4MCwgNzksIAotICAgIDg0LCA3MiwgNjksIDgzLCAxMjgsIDY1LCA4MCwgNzksIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA2NSwgODAsIDc5LCA4MywgCi0gICAgODQsIDgyLCA3OSwgODAsIDcyLCA2OSwgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCA4MywgMTI4LCAKLSAgICA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCAyMTEsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgCi0gICAgNzksIDIwMSwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4OCwgNzMsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDY4LCA2OSwgODIsIDc3LCAKLSAgICAxOTMsIDY1LCA4MCwgNzYsIDc5LCA4NSwgNzgsIDEyOCwgNjUsIDgwLCA3NiwgMjAxLCA2NSwgODAsIDIwNCwgNjUsIDgwLCAKLSAgICA3MywgNzgsIDEyOCwgNjUsIDgwLCA2OSwgODMsIDIwNywgNjUsIDgwLCA2NywgMTI4LCA2NSwgODAsIDY1LCA4MiwgODQsIAotICAgIDEyOCwgNjUsIDgwLCA2NSwgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIDg5LCA2NSwgCi0gICAgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIAotICAgIDE5MywgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAxMjgsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCAKKyAgICA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgNjUsIDgyLCA2OCwgNzIsIDY1LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCAxMjgsIAorICAgIDY1LCA4MiwgNjcsIDcyLCA2NSwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODIsIDY3LCA3MiwgNjUsIDczLCA3OSwgMjA2LCA2NSwgCisgICAgODIsIDY3LCA3MiwgNjUsIDczLCAxOTUsIDY1LCA4MiwgNjcsIDIwMCwgNjUsIDgyLCA2NywgMTI4LCA2NSwgODIsIDE5NSwgCisgICAgNjUsIDgyLCA2NSwgNzcsIDY1LCA3MywgMTk1LCA2NSwgODIsIDY1LCA2OSwgNjUsIDY5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCAKKyAgICA2NSwgNDUsIDg1LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDczLCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIAorICAgIDY5LCA3OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2NSwgCisgICAgMTI4LCA2NSwgODIsIDY1LCA2OCwgMTI4LCA2NSwgODIsIDY1LCAxOTYsIDY1LCA4MiwgNjUsIDY2LCA3MywgNjcsIDQ1LCAKKyAgICA3MywgNzgsIDY4LCA3MywgMTk1LCA2NSwgODIsIDY1LCA2NiwgNzMsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIAorICAgIDc3LCA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCA2OSwgNjksIDc3LCAxMjgsIDY1LCA4MSwgODUsIDY1LCA4MiwgCisgICAgNzMsIDg1LCA4MywgMTI4LCA2NSwgODEsIDg1LCA2NSwgNzAsIDc5LCA4MiwgODQsIDczLCA4MywgMTI4LCA2NSwgODEsIDg1LCAKKyAgICAxOTMsIDY1LCA4MCwgODUsIDIwNiwgNjUsIDgwLCA4MiwgNzMsIDc2LCAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgODgsIAorICAgIDczLCA3NywgNjUsIDg0LCA2OSwgNzYsIDIxNywgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCAKKyAgICAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgNjksIDIxMSwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIAorICAgIDcyLCAxMjgsIDY1LCA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODAsIDgwLCA3NiwgCisgICAgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgODAsIDc5LCA4NCwgNzIsIDY5LCA4MywgMTI4LCA2NSwgODAsIDc5LCAKKyAgICA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDgwLCA3MiwgNjksIDEyOCwgNjUsIAorICAgIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgODMsIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCAKKyAgICA3OSwgMjExLCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCAyMDEsIDY1LCA4MCwgNzksIDY4LCA2OSwgODgsIAorICAgIDczLCA2NSwgMTI4LCA2NSwgODAsIDc5LCA2OCwgNjksIDgyLCA3NywgMTkzLCA2NSwgODAsIDc2LCA3OSwgODUsIDc4LCAKKyAgICAxMjgsIDY1LCA4MCwgNzYsIDIwMSwgNjUsIDgwLCAyMDQsIDY1LCA4MCwgNzMsIDc4LCAxMjgsIDY1LCA4MCwgNjksIDgzLCAKKyAgICAyMDcsIDY1LCA4MCwgNjcsIDEyOCwgNjUsIDgwLCA2NSwgODIsIDg0LCAxMjgsIDY1LCA4MCwgNjUsIDY1LCA4NCwgNzksIAorICAgIDEyOCwgNjUsIDc5LCA4NSwgMTI4LCA2NSwgNzksIDgyLCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgCisgICAgODksIDY1LCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCAKKyAgICA4MiwgMTkzLCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIAogICAgIDE5MywgNjUsIDc4LCA4NCwgNzMsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgCiAgICAgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIDQ1LCA1MCwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIAogICAgIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDIxNywgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDczLCA2NSwgCkBAIC00NTMwLDE1MzA4ICs0OTE2LDE4MzQ4IEBACiAgICAgNzUsIDY5LCA3OCwgNzksIDc1LCA4OSwgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3MCwgNzksIAogICAgIDc4LCA3MywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgNjksIDQ1LCAKICAgICA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgCi0gICAgODMsIDE5NywgNjUsIDc4LCA4NCwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNjksIDc4LCA3OCwgMTkzLCAKLSAgICA2NSwgNzgsIDg0LCA2NSwgODIsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDY1LCA3OCwgODMsIDg1LCAyMTgsIAotICAgIDY1LCA3OCwgODMsIDcyLCA2OSwgMTI4LCA2NSwgNzgsIDgwLCA2OSwgNjUsIDEyOCwgNjUsIDc4LCAyMDcsIDY1LCA3OCwgCi0gICAgNzgsIDg1LCA3MywgODQsIDIxNywgNjUsIDc4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNzgsIDc4LCAKLSAgICA2NSwgNjUsIDg1LCAxMjgsIDY1LCA3OCwgNzUsIDcyLCAxMjgsIDY1LCA3OCwgNzQsIDczLCAxMjgsIDY1LCA3OCwgNzIsIAotICAgIDg1LCAxMjgsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDgyLCAxMjgsIDY1LCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCA2OSwgCi0gICAgMTk2LCA2NSwgNzgsIDcxLCA4MywgODQsIDgyLCA3OSwgMjA1LCA2NSwgNzgsIDcxLCA4MiwgMjE3LCA2NSwgNzgsIDcxLCAKLSAgICA3NSwgNzIsIDY1LCA3OCwgNzUsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIDcxLCA2OSwgMjEwLCA2NSwgNzgsIDcxLCA2OSwgNzYsIAotICAgIDEyOCwgNjUsIDc4LCA3MSwgNjksIDY4LCAxMjgsIDY1LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA2NSwgNzgsIDY3LCA3OSwgCi0gICAgODIsIDY1LCAxMjgsIDY1LCA3OCwgNjcsIDcyLCA3OSwgODIsIDEyOCwgNjUsIDc4LCA2NSwgODQsIDgyLCA3MywgNjcsIDcyLCAKLSAgICA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDY1LCA4MCwgMTI4LCA2NSwgNzcsIDgwLCA4MywgMTI4LCA2NSwgNzcsIAotICAgIDgwLCA2OSwgODIsIDgzLCA2NSwgNzgsIDY4LCAxMjgsIDY1LCA3NywgNzksIDg1LCA3OCwgMjEyLCA2NSwgNzcsIDY5LCA4MiwgCi0gICAgNzMsIDY3LCA2NSwgODMsIDEyOCwgNjUsIDc3LCA2OSwgODIsIDczLCA2NywgNjUsIDIwNiwgNjUsIDc3LCA2NiwgODUsIDc2LCAKLSAgICA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNzcsIDY2LCAxOTMsIDY1LCA3NywgNjUsIDgyLCAxMjgsIDY1LCA3NywgNjUsIAotICAgIDIxMCwgNjUsIDc3LCA2NSwgNzYsIDcxLCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3NywgNjUsIDc2LCA3MSwgCi0gICAgNjUsIDc3LCAxMjgsIDY1LCA3NiwgODYsIDY5LCA3OSwgNzYsIDY1LCAyMTAsIDY1LCA3NiwgODUsIDc3LCAxMjgsIDY1LCAKLSAgICA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgCi0gICAgNzMsIDc5LCAyMDYsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgMTk3LCA2NSwgNzYsIDg0LCA2NSwgMTI4LCAKLSAgICA2NSwgNzYsIDgwLCA3MiwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgNzIsIDE5MywgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgNjUsIAotICAgIDc4LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA2NSwgODAsIDgyLCA2NSwgNjUsIDc4LCAxOTMsIDY1LCA3NiwgODAsIDY1LCAKLSAgICAxMjgsIDY1LCA3NiwgNzcsIDc5LCA4MywgMjEyLCA2NSwgNzYsIDc3LCAxMjgsIDY1LCA3NiwgNzYsIDc5LCAxMjgsIDY1LCAKLSAgICA3NiwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNzYsIDc2LCAyMDEsIDY1LCA3NiwgNzYsIDY1LCAyMDAsIAotICAgIDY1LCA3NiwgNzUsIDY1LCA3NiwgNzMsIDQ1LCA1MCwgMTI4LCA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCAxMjgsIDY1LCA3NiwgCi0gICAgNzMsIDcxLCA3OCwgNjksIDE5NiwgNjUsIDc2LCA3MywgNzAsIDg1LCAxMjgsIDY1LCA3NiwgNzMsIDY5LCA3OCwgMTI4LCAKLSAgICA2NSwgNzYsIDczLCA2OSwgMjA2LCA2NSwgNzYsIDcxLCA3MywgMjE4LCA2NSwgNzYsIDcwLCA2NSwgMTI4LCA2NSwgNzYsIAotICAgIDY5LCA4NSwgMjEyLCA2NSwgNzYsIDY5LCA4MiwgODQsIDEyOCwgNjUsIDc2LCA2OSwgODAsIDcyLCAxMjgsIDY1LCA3NiwgCi0gICAgNjksIDc3LCA2NiwgNzMsIDY3LCAxMjgsIDY1LCA3NiwgNjksIDcwLCAxMjgsIDY1LCA3NiwgNjUsIDg5LCA3MiwgNjksIAotICAgIDEyOCwgNjUsIDc2LCA2NSwgODksIDcyLCAxOTcsIDY1LCA3NiwgNjUsIDgyLCAyMDUsIDY1LCA3NiwgNjUsIDgwLCA3MiwgCi0gICAgMTI4LCA2NSwgNzYsIDQ1LCA3NiwgNjUsIDc1LCA4NSwgNzgsIDY1LCAxMjgsIDY1LCA3NSwgODQsIDczLCA2OSwgODMsIDY5LCAKLSAgICA3NiwgODMsIDc1LCA2NSwgNjYsIDEyOCwgNjUsIDc1LCA4MywgNjUsIDEyOCwgNjUsIDc1LCA3MiwgNzcsIDczLCA3NywgNzMsIAotICAgIDE5NSwgNjUsIDc1LCA2NiwgNjUsIDIxMCwgNjUsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3NSwgNjUsIDgyLCAxOTMsIAotICAgIDY1LCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3MywgODYsIDczLCA3NiwgNzMsIDIwMywgNjUsIDczLCA4NCwgCi0gICAgNzksIDIwNiwgNjUsIDczLCA4MiwgODAsIDc2LCA2NSwgNzgsIDY5LCAxMjgsIDY1LCA3MywgNzgsIDIxMywgNjUsIDczLCAKLSAgICA3OCwgNzgsIDEyOCwgNjUsIDczLCA3NiwgNzcsIDEyOCwgNjUsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzMsIAotICAgIDcyLCA4NiwgODUsIDgzLCAxMjgsIDY1LCA3MiwgODMsIDY4LCA2NSwgMTI4LCA2NSwgNzIsIDgzLCA2NSwgMTI4LCA2NSwgCi0gICAgNzIsIDY1LCA3OCwgMTk5LCA2NSwgNzIsIDY1LCA3MSwgNzEsIDY1LCAyMTAsIDY1LCA3MiwgNjUsIDY4LCAxMjgsIDY1LCAKLSAgICA3MSwgODUsIDc4LCA3MSwgMTI4LCA2NSwgNzEsIDc5LCA3MSwgMjAxLCA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzEsIDY1LCA3MywgCi0gICAgNzgsIDEyOCwgNjUsIDcwLCA4NCwgNjksIDIxMCwgNjUsIDcwLCA4MywgNjUsIDY1LCA4MSwgMTI4LCA2NSwgNzAsIDgyLCAKLSAgICA3MywgNjcsIDY1LCAyMDYsIDY1LCA3MCwgNzksIDgyLCA2OSwgNzcsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDY5LCA2OCwgCi0gICAgMTI4LCA2NSwgNzAsIDcxLCA3MiwgNjUsIDc4LCAyMDEsIDY1LCA3MCwgNzAsIDgyLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDY1LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA2OSwgODksIDEyOCwgNjUsIDY5LCA4MywgNjcsIAotICAgIDg1LCA3NiwgNjUsIDgwLCA3MywgODUsIDgzLCAxMjgsIDY1LCA2OSwgODMsIDY3LCAxMjgsIDY1LCA2OSwgODMsIDEyOCwgCi0gICAgNjUsIDY5LCA4MiwgNzMsIDY1LCAyMDQsIDY1LCA2OSwgODIsIDEyOCwgNjUsIDY5LCA3NiwgNjUsIDQ1LCA4MCwgNzMsIDc2LCAKLSAgICA3NiwgNjUsIDEyOCwgNjUsIDY5LCA3NiwgMTI4LCA2NSwgNjksIDc1LCAxMjgsIDY1LCA2OSwgNzEsIDY5LCA2NSwgMjA2LCAKLSAgICA2NSwgNjksIDcxLCAxMjgsIDY1LCA2OSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjksIDY5LCAxMjgsIAotICAgIDY1LCA2OSwgNjgsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY1LCA2OSwgNjgsIDEyOCwgNjUsIDY5LCA2NiwgCi0gICAgMTI4LCA2NSwgNjgsIDg2LCA2NSwgNzgsIDg0LCA2NSwgNzEsIDY5LCAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgNjcsIDY5LCAKLSAgICAxMjgsIDY1LCA2OCwgNjksIDcxLCAxMjgsIDY1LCA2OCwgNjksIDE5OSwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgODMsIAotICAgIDY5LCAxOTYsIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDIxMSwgNjUsIDY4LCA2OCwgNjUsIDc1LCAxMjgsIDY1LCA2OCwgCi0gICAgNjUsIDIwMywgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDg1LCAKLSAgICA4NCwgNjksIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNjUsIDY3LCA4NSwgCi0gICAgODQsIDE5NywgNjUsIDY3LCA4NCwgODUsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDY3LCA4NCwgNzMsIDg2LCA2NSwgODQsIAotICAgIDE5NywgNjUsIDY3LCA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA3MywgMTk1LCA2NSwgNjcsIDc1LCA3OCwgNzksIDg3LCA3NiwgCi0gICAgNjksIDY4LCA3MSwgNjksIDEyOCwgNjUsIDY3LCA2NywgODUsIDc3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA2NSwgNjcsIDY3LCA3OSwgODUsIDc4LCAyMTIsIDY1LCA2NywgNjcsIDY5LCA4MCwgODQsIDEyOCwgNjUsIDY3LCA2NywgNjksIAotICAgIDc4LCA4NCwgNDUsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCAKLSAgICAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgMjEyLCA2NSwgNjcsIDY1LCA2OCwgNjksIDc3LCAyMTcsIDY1LCA2NiwgODksIAotICAgIDgzLCA3NywgNjUsIDIwNCwgNjUsIDY2LCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjYsIDc1LCA3MiwgCi0gICAgNjUsIDgzLCA3MywgNjUsIDIwNiwgNjUsIDY2LCA2NiwgODIsIDY5LCA4NiwgNzMsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCAKLSAgICA2NiwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDY1LCA2NiwgMTc4LCA2NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA2NSwgNjUsIDg5LCAxMjgsIDY1LCA2NSwgODcsIDEyOCwgNjUsIDY1LCA3OSwgMTI4LCA2NSwgNjUsIDc0LCAxMjgsIAotICAgIDY1LCA2NSwgNjYsIDY1LCA2NSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDUwLCAxMjgsIDY1LCA2NSwgCi0gICAgNDgsIDUxLCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU3LCAxMjgsIDY1LCAKLSAgICA2NSwgNDgsIDUwLCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU0LCAxMjgsIAotICAgIDY1LCA2NSwgNDgsIDUwLCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUxLCAKLSAgICAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNTAsIAotICAgIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgCi0gICAgNDksIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTMsIDEyOCwgNjUsIDY1LCAKLSAgICA0OCwgNDksIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTAsIDEyOCwgNjUsIAotICAgIDY1LCA0OCwgNDksIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTcsIDEyOCwgCi0gICAgNjUsIDY1LCA0OCwgNDgsIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCAKLSAgICA2NSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU0LCAxMjgsIDY1LCA2NSwgNDgsIAotICAgIDQ4LCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUxLCAxMjgsIDY1LCA2NSwgCi0gICAgNDgsIDQ4LCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNDksIDEyOCwgNjUsIDQ4LCA1NSwgNDgsIDEyOCwgNjUsIDQ4LCAKLSAgICA1NCwgNTcsIDEyOCwgNjUsIDQ4LCA1NCwgNTYsIDEyOCwgNjUsIDQ4LCA1NCwgNTUsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIAotICAgIDEyOCwgNjUsIDQ4LCA1NCwgNTMsIDEyOCwgNjUsIDQ4LCA1NCwgNTIsIDEyOCwgNjUsIDQ4LCA1NCwgNTEsIDEyOCwgNjUsIAotICAgIDQ4LCA1NCwgNTAsIDEyOCwgNjUsIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDQ4LCA1NCwgNDgsIDEyOCwgNjUsIDQ4LCA1MywgCi0gICAgNTcsIDEyOCwgNjUsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDQ4LCA1MywgNTUsIDEyOCwgNjUsIDQ4LCA1MywgNTQsIDEyOCwgCi0gICAgNjUsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDQ4LCA1MywgNTIsIDEyOCwgNjUsIDQ4LCA1MywgNTEsIDEyOCwgNjUsIDQ4LCAKLSAgICA1MywgNTAsIDEyOCwgNjUsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDQ4LCA1MywgNDgsIDEyOCwgNjUsIDQ4LCA1MiwgNTcsIAotICAgIDEyOCwgNjUsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDQ4LCA1MiwgNTUsIDEyOCwgNjUsIDQ4LCA1MiwgNTQsIDEyOCwgNjUsIAotICAgIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUzLCAxMjgsIDY1LCA0OCwgNTIsIDUyLCAxMjgsIDY1LCA0OCwgCi0gICAgNTIsIDUxLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgMTI4LCA2NSwgNDgsIDUyLCA1MCwgNjUsIDEyOCwgNjUsIDQ4LCAKLSAgICA1MiwgNTAsIDEyOCwgNjUsIDQ4LCA1MiwgNDksIDEyOCwgNjUsIDQ4LCA1MiwgNDgsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIAotICAgIDQ4LCAxMjgsIDY1LCA0OCwgNTEsIDU3LCAxMjgsIDY1LCA0OCwgNTEsIDU2LCAxMjgsIDY1LCA0OCwgNTEsIDU1LCAxMjgsIAotICAgIDY1LCA0OCwgNTEsIDU0LCAxMjgsIDY1LCA0OCwgNTEsIDUzLCAxMjgsIDY1LCA0OCwgNTEsIDUyLCAxMjgsIDY1LCA0OCwgCi0gICAgNTEsIDUxLCAxMjgsIDY1LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNjUsIDQ4LCAKLSAgICA0OSwgNTIsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNjUsIAotICAgIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDY1LCA0NSwgNjksIDg1LCAxMjgsIDQ1LCA4NSwgMjA1LCA0NSwgODAsIDcyLCA4MiwgCi0gICAgODUsIDEyOCwgNDUsIDc1LCA3MiwgODksIDg1LCAxOTYsIDQ1LCA3NSwgNzIsIDg5LCA3MywgNzYsIDEyOCwgNDUsIDY4LCAKLSAgICA5MCwgODUsIDE5NiwgNDUsIDY3LCA3MiwgNjUsIDIxMCwgNDUsIDY3LCA3MiwgNjUsIDc2LCAxMjgsIAorICAgIDgzLCA2OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCAxOTcsIDY1LCA3OCwgCisgICAgODQsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDY5LCA3OCwgNzgsIDE5MywgNjUsIDc4LCA4NCwgNjUsIDgyLCAKKyAgICA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA2NSwgNzgsIDgzLCA4NSwgMjE4LCA2NSwgNzgsIDgzLCA3MiwgNjksIAorICAgIDEyOCwgNjUsIDc4LCA4MCwgNjksIDY1LCAxMjgsIDY1LCA3OCwgMjA3LCA2NSwgNzgsIDc4LCA4NSwgNzMsIDg0LCAyMTcsIAorICAgIDY1LCA3OCwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDc4LCA3OCwgNjUsIDY1LCA4NSwgMTI4LCA2NSwgCisgICAgNzgsIDc1LCA3MiwgMTI4LCA2NSwgNzgsIDc0LCA3MywgMTI4LCA2NSwgNzgsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIDcxLCAKKyAgICA4NSwgNzYsIDY1LCA4MiwgMTI4LCA2NSwgNzgsIDcxLCA4NSwgNzMsIDgzLCA3MiwgNjksIDE5NiwgNjUsIDc4LCA3MSwgODMsIAorICAgIDg0LCA4MiwgNzksIDIwNSwgNjUsIDc4LCA3MSwgODIsIDIxNywgNjUsIDc4LCA3MSwgNzYsIDY5LCA2OCwgMTI4LCA2NSwgCisgICAgNzgsIDcxLCA3NiwgNjksIDE5NiwgNjUsIDc4LCA3MSwgNzUsIDcyLCA2NSwgNzgsIDc1LCA3MiwgODUsIDEyOCwgNjUsIDc4LCAKKyAgICA3MSwgNjksIDIxMCwgNjUsIDc4LCA3MSwgNjksIDc2LCAxMjgsIDY1LCA3OCwgNzEsIDY5LCA2OCwgMTI4LCA2NSwgNzgsIAorICAgIDY4LCA2NSwgODAsIDEyOCwgNjUsIDc4LCA2NywgNzksIDgyLCA2NSwgMTI4LCA2NSwgNzgsIDY3LCA3MiwgNzksIDgyLCAKKyAgICAxMjgsIDY1LCA3OCwgNjUsIDg0LCA4MiwgNzMsIDY3LCA3MiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNjUsIDc4LCA2NSwgODAsIAorICAgIDEyOCwgNjUsIDc3LCA4MCwgODMsIDEyOCwgNjUsIDc3LCA4MCwgNzIsIDc5LCA4MiwgNjUsIDEyOCwgNjUsIDc3LCA4MCwgCisgICAgNjksIDgyLCA4MywgNjUsIDc4LCA2OCwgMTI4LCA2NSwgNzcsIDgwLCA2OSwgODIsIDgzLCA2NSwgNzgsIDE5NiwgNjUsIDc3LCAKKyAgICA3OSwgODUsIDc4LCAyMTIsIDY1LCA3NywgNjksIDgyLCA3MywgNjcsIDY1LCA4MywgMTI4LCA2NSwgNzcsIDY5LCA4MiwgNzMsIAorICAgIDY3LCA2NSwgMjA2LCA2NSwgNzcsIDY2LCA4NSwgNzYsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA3NywgNjYsIDE5MywgCisgICAgNjUsIDc3LCA2NiwgMTI4LCA2NSwgNzcsIDY1LCA4MiwgMTI4LCA2NSwgNzcsIDY1LCAyMTAsIDY1LCA3NywgNjUsIDc2LCAKKyAgICA3MSwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNzcsIDY1LCA3NiwgNzEsIDY1LCA3NywgMTI4LCA2NSwgNzYsIAorICAgIDg2LCA2OSwgNzksIDc2LCA2NSwgMjEwLCA2NSwgNzYsIDg1LCA3NywgMTI4LCA2NSwgNzYsIDg0LCA2OSwgODIsIDc4LCA2NSwgCisgICAgODQsIDczLCA4NiwgMTk3LCA2NSwgNzYsIDg0LCA2OSwgODIsIDc4LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNzYsIDg0LCAKKyAgICA2OSwgODIsIDc4LCA2NSwgODQsIDczLCA3OCwgNzEsIDEyOCwgNjUsIDc2LCA4NCwgNjksIDgyLCA3OCwgNjUsIDg0LCA3MywgCisgICAgNzgsIDE5OSwgNjUsIDc2LCA4NCwgNjksIDgyLCA3OCwgNjUsIDg0LCA2OSwgMTI4LCA2NSwgNzYsIDg0LCA2OSwgODIsIDc4LCAKKyAgICA2NSwgODQsIDE5NywgNjUsIDc2LCA4NCwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgNzIsIDY1LCAxMjgsIDY1LCA3NiwgODAsIAorICAgIDcyLCAxOTMsIDY1LCA3NiwgODAsIDY1LCA4MCwgODIsIDY1LCA3OCwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgCisgICAgNjUsIDY1LCA3OCwgMTkzLCA2NSwgNzYsIDgwLCA2NSwgMTI4LCA2NSwgNzYsIDc3LCA3OSwgODMsIDIxMiwgNjUsIDc2LCAKKyAgICA3NywgMTI4LCA2NSwgNzYsIDc2LCA3OSwgMTI4LCA2NSwgNzYsIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIAorICAgIDc2LCA3NiwgMjAxLCA2NSwgNzYsIDc2LCA2NSwgMjAwLCA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCA0NSwgNTAsIDEyOCwgCisgICAgNjUsIDc2LCA3NSwgNjUsIDc2LCA3MywgMTI4LCA2NSwgNzYsIDczLCA3MSwgNzgsIDY5LCAxOTYsIDY1LCA3NiwgNzMsIDcwLCAKKyAgICA4NSwgMTI4LCA2NSwgNzYsIDczLCA2OSwgNzgsIDEyOCwgNjUsIDc2LCA3MywgNjksIDIwNiwgNjUsIDc2LCA3MSwgNzMsIAorICAgIDIxOCwgNjUsIDc2LCA3MCwgNjUsIDEyOCwgNjUsIDc2LCA2OSwgODUsIDIxMiwgNjUsIDc2LCA2OSwgODIsIDg0LCAxMjgsIAorICAgIDY1LCA3NiwgNjksIDgwLCA3MiwgMTI4LCA2NSwgNzYsIDY5LCA3NywgNjYsIDczLCA2NywgMTI4LCA2NSwgNzYsIDY5LCA3MCwgCisgICAgMTI4LCA2NSwgNzYsIDY2LCA2NSwgNzgsIDczLCA2NSwgMjA2LCA2NSwgNzYsIDY1LCA4OSwgNzIsIDY5LCAxMjgsIDY1LCAKKyAgICA3NiwgNjUsIDg5LCA3MiwgMTk3LCA2NSwgNzYsIDY1LCA4MiwgMjA1LCA2NSwgNzYsIDY1LCA4MCwgNzIsIDEyOCwgNjUsIAorICAgIDc2LCA0NSwgNzYsIDY1LCA3NSwgODUsIDc4LCA2NSwgMTI4LCA2NSwgNzUsIDg0LCA3MywgNjksIDgzLCA2OSwgNzYsIDgzLCAKKyAgICA3NSwgNjUsIDY2LCAxMjgsIDY1LCA3NSwgODMsIDY1LCAxMjgsIDY1LCA3NSwgNzIsIDc3LCA3MywgNzcsIDczLCAxOTUsIAorICAgIDY1LCA3NSwgNjYsIDY1LCAyMTAsIDY1LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzUsIDY1LCA4MiwgMTkzLCA2NSwgCisgICAgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzMsIDg2LCA3MywgNzYsIDczLCAyMDMsIDY1LCA3MywgODQsIDc5LCAKKyAgICAyMDYsIDY1LCA3MywgODIsIDgwLCA3NiwgNjUsIDc4LCA2OSwgMTI4LCA2NSwgNzMsIDgyLCA4MCwgNzYsIDY1LCA3OCwgCisgICAgMTk3LCA2NSwgNzMsIDc4LCAyMTMsIDY1LCA3MywgNzgsIDc4LCAxMjgsIDY1LCA3MywgNzYsIDc3LCAxMjgsIDY1LCA3MywgCisgICAgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDczLCA3MiwgODYsIDg1LCA4MywgMTI4LCA2NSwgNzIsIDgzLCA2OCwgNjUsIAorICAgIDEyOCwgNjUsIDcyLCA4MywgNjUsIDEyOCwgNjUsIDcyLCA3OSwgMjA1LCA2NSwgNzIsIDY1LCA3OCwgMTk5LCA2NSwgNzIsIAorICAgIDY1LCA3MSwgNzEsIDY1LCAyMTAsIDY1LCA3MiwgNjUsIDY4LCAxMjgsIDY1LCA3MSwgODUsIDc4LCA3MSwgMTI4LCA2NSwgCisgICAgNzEsIDc5LCA3MSwgMjAxLCA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDcxLCAKKyAgICA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzEsIDY1LCA3MywgNzgsIDgzLCAyMTIsIDY1LCA3MSwgNjUsIAorICAgIDczLCA3OCwgMTI4LCA2NSwgNzAsIDg0LCA2OSwgMjEwLCA2NSwgNzAsIDgzLCA2NSwgNjUsIDgxLCAxMjgsIDY1LCA3MCwgCisgICAgODIsIDczLCA2NywgNjUsIDIwNiwgNjUsIDcwLCA3OSwgODIsIDY5LCA3NywgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgNjksIAorICAgIDY4LCAxMjgsIDY1LCA3MCwgNzEsIDcyLCA2NSwgNzgsIDIwMSwgNjUsIDcwLCA3MCwgODIsIDczLCA2NywgNjUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNjUsIDcwLCA3MCwgNzMsIDIxNiwgNjUsIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY5LCAKKyAgICA4OSwgMTI4LCA2NSwgNjksIDgzLCA2NywgODUsIDc2LCA2NSwgODAsIDczLCA4NSwgODMsIDEyOCwgNjUsIDY5LCA4MywgNjcsIAorICAgIDEyOCwgNjUsIDY5LCA4MywgMTI4LCA2NSwgNjksIDgyLCA3MywgNjUsIDIwNCwgNjUsIDY5LCA4MiwgMTI4LCA2NSwgNjksIAorICAgIDc2LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NSwgNjksIDc2LCAxMjgsIDY1LCA2OSwgNzUsIDEyOCwgCisgICAgNjUsIDY5LCA3MSwgNjksIDY1LCAyMDYsIDY1LCA2OSwgNzEsIDEyOCwgNjUsIDY5LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDY1LCA2OSwgNjksIDEyOCwgNjUsIDY5LCA2OCwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjUsIAorICAgIDY5LCA2OCwgMTI4LCA2NSwgNjksIDY2LCAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgODQsIDY1LCA3MSwgNjksIDEyOCwgCisgICAgNjUsIDY4LCA4NiwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDY4LCA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCAyMDYsIDY1LCAKKyAgICA2OCwgNjksIDcxLCAxMjgsIDY1LCA2OCwgNjksIDE5OSwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIAorICAgIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDIxMSwgNjUsIDY4LCA2OCwgNjUsIDc1LCAxMjgsIDY1LCA2OCwgNjUsIDIwMywgCisgICAgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgNjksIAorICAgIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNjUsIDY3LCA4NSwgODQsIDE5NywgCisgICAgNjUsIDY3LCA4NCwgODUsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDY3LCA4NCwgNzMsIDg2LCA2NSwgODQsIDE5NywgNjUsIDY3LCAKKyAgICA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA3MywgMTk1LCA2NSwgNjcsIDc1LCA3OCwgNzksIDg3LCA3NiwgNjksIDY4LCA3MSwgCisgICAgNjksIDEyOCwgNjUsIDY3LCA2NywgODUsIDc3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDY3LCAKKyAgICA3OSwgODUsIDc4LCAyMTIsIDY1LCA2NywgNjcsIDc5LCA3NywgNzcsIDc5LCA2OCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAorICAgIDY1LCA2NywgNjcsIDY5LCA4MCwgODQsIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgNDUsIDgzLCA4NCwgNjUsIDY3LCAKKyAgICA2NywgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgCisgICAgMjEyLCA2NSwgNjcsIDY1LCA2OCwgNjksIDc3LCAyMTcsIDY1LCA2NiwgODksIDgzLCA3NywgNjUsIDIwNCwgNjUsIDY2LCAKKyAgICA4NSwgNzgsIDY4LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjYsIDc1LCA3MiwgNjUsIDgzLCA3MywgNjUsIDIwNiwgNjUsIAorICAgIDY2LCA2NiwgODIsIDY5LCA4NiwgNzMsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA2NiwgNjUsIDcwLCA3MywgNzYsIDczLCAKKyAgICAxMjgsIDY1LCA2NiwgMTc4LCA2NSwgNjYsIDQ5LCA1NywgNDksIDEyOCwgNjUsIDY2LCA0OSwgNTYsIDU2LCAxMjgsIDY1LCAKKyAgICA2NiwgNDksIDU2LCA0OCwgMTI4LCA2NSwgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjUsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIAorICAgIDY1LCA2NiwgNDksIDUxLCA0OSwgNjYsIDEyOCwgNjUsIDY2LCA0OSwgNTEsIDQ5LCA2NSwgMTI4LCA2NSwgNjYsIDQ5LCA1MCwgCisgICAgNTEsIDEyOCwgNjUsIDY2LCA0OSwgNTAsIDUwLCAxMjgsIDY1LCA2NiwgNDksIDUwLCA0OCwgMTI4LCA2NSwgNjYsIDQ5LCAKKyAgICA0OSwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NSwgNjYsIAorICAgIDQ4LCA1NiwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA0OSwgMTI4LCA2NSwgCisgICAgNjYsIDQ4LCA1NiwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1NiwgMTI4LCAKKyAgICA2NSwgNjYsIDQ4LCA1NSwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1MiwgCisgICAgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCAKKyAgICA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIAorICAgIDU0LCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDQ4LCAxMjgsIDY1LCA2NiwgCisgICAgNDgsIDUzLCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCAKKyAgICA2NiwgNDgsIDUzLCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDUyLCAxMjgsIAorICAgIDY1LCA2NiwgNDgsIDUzLCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDQ4LCAKKyAgICAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIAorICAgIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgCisgICAgNTIsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNDgsIDEyOCwgNjUsIDY2LCAKKyAgICA0OCwgNTEsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNTUsIDEyOCwgNjUsIAorICAgIDY2LCA0OCwgNTEsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNDgsIDEyOCwgCisgICAgNjUsIDY2LCA0OCwgNTAsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTUsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgCisgICAgNTEsIDc3LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTAsIDc3LCAxMjgsIDY1LCAKKyAgICA2NiwgNDgsIDUwLCA1MCwgNzAsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OSwgNzcsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ5LCA3MCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY2LCA0OCwgCisgICAgNTAsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNTQsIDEyOCwgNjUsIDY2LCAKKyAgICA0OCwgNDksIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNDgsIDEyOCwgNjUsIAorICAgIDY2LCA0OCwgNDgsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTUsIDEyOCwgCisgICAgNjUsIDY2LCA0OCwgNDgsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTIsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MCwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgCisgICAgNDksIDEyOCwgNjUsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDY1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCAKKyAgICA2NSwgODksIDEyOCwgNjUsIDY1LCA4NywgMTI4LCA2NSwgNjUsIDc5LCAxMjgsIDY1LCA2NSwgNzQsIDEyOCwgNjUsIDY1LCAKKyAgICA2NiwgNjUsIDY1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIAorICAgIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgCisgICAgNTAsIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTQsIDEyOCwgNjUsIDY1LCAKKyAgICA0OCwgNTAsIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTEsIDEyOCwgNjUsIAorICAgIDY1LCA0OCwgNTAsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDgsIDEyOCwgCisgICAgNjUsIDY1LCA0OCwgNDksIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTUsIAorICAgIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgCisgICAgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCAKKyAgICA0OSwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNDksIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NywgMTI4LCA2NSwgNjUsIAorICAgIDQ4LCA0OCwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY1LCAKKyAgICAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIAorICAgIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgCisgICAgNDgsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA0OSwgMTI4LCA2NSwgNTYsIDQ4LCA1NSwgMTI4LCA2NSwgNTYsIDQ4LCAKKyAgICA1NCwgMTI4LCA2NSwgNTYsIDQ4LCA1MywgMTI4LCA2NSwgNTYsIDQ4LCA1MiwgMTI4LCA2NSwgNTYsIDQ4LCA1MSwgMTI4LCAKKyAgICA2NSwgNTYsIDQ4LCA1MCwgMTI4LCA2NSwgNTYsIDQ4LCA0OSwgMTI4LCA2NSwgNTYsIDQ4LCA0OCwgMTI4LCA2NSwgNTUsIAorICAgIDUxLCAxNzgsIDY1LCA1NSwgNTAsIDE4MiwgNjUsIDU1LCA0OSwgMTgzLCA2NSwgNTUsIDQ5LCAxODEsIDY1LCA1NSwgNDksIAorICAgIDE4MCwgNjUsIDU1LCA0OSwgMTc5LCA2NSwgNTUsIDQ5LCAxNzgsIDY1LCA1NSwgNDksIDE3NywgNjUsIDU1LCA0OSwgMTc2LCAKKyAgICA2NSwgNTUsIDQ4LCA1NywgNDUsIDE4MiwgNjUsIDU1LCA0OCwgNTcsIDQ1LCAxODAsIDY1LCA1NSwgNDgsIDU3LCA0NSwgCisgICAgMTc5LCA2NSwgNTUsIDQ4LCA1NywgNDUsIDE3OCwgNjUsIDU1LCA0OCwgMTg1LCA2NSwgNTUsIDQ4LCAxODQsIDY1LCA1NSwgCisgICAgNDgsIDE4MywgNjUsIDU1LCA0OCwgMTgyLCA2NSwgNTUsIDQ4LCAxODEsIDY1LCA1NSwgNDgsIDE4MCwgNjUsIDU1LCA0OCwgCisgICAgMTc5LCA2NSwgNTUsIDQ4LCAxNzgsIDY1LCA1NSwgNDgsIDE3NywgNjUsIDU0LCA1NCwgNTIsIDEyOCwgNjUsIDU0LCA1NCwgCisgICAgNTEsIDEyOCwgNjUsIDU0LCA1NCwgNTAsIDEyOCwgNjUsIDU0LCA1NCwgNDksIDEyOCwgNjUsIDU0LCA1NCwgNDgsIDEyOCwgCisgICAgNjUsIDU0LCA1MywgNTcsIDEyOCwgNjUsIDU0LCA1MywgNTYsIDEyOCwgNjUsIDU0LCA1MywgNTUsIDEyOCwgNjUsIDU0LCAKKyAgICA1MywgNTQsIDEyOCwgNjUsIDU0LCA1MywgNTMsIDEyOCwgNjUsIDU0LCA1MywgNTIsIDEyOCwgNjUsIDU0LCA1MywgNTEsIAorICAgIDEyOCwgNjUsIDU0LCA1MywgNTAsIDEyOCwgNjUsIDU0LCA1MywgNDksIDEyOCwgNjUsIDU0LCA1MiwgNTcsIDEyOCwgNjUsIAorICAgIDU0LCA1MiwgNTYsIDEyOCwgNjUsIDU0LCA1MiwgNTQsIDEyOCwgNjUsIDU0LCA1MiwgNTMsIDEyOCwgNjUsIDU0LCA1MiwgCisgICAgNTIsIDEyOCwgNjUsIDU0LCA1MiwgNTEsIDEyOCwgNjUsIDU0LCA1MiwgNTAsIDEyOCwgNjUsIDU0LCA1MiwgNDgsIDEyOCwgCisgICAgNjUsIDU0LCA1MSwgNTYsIDEyOCwgNjUsIDU0LCA1MSwgNTUsIDEyOCwgNjUsIDU0LCA1MSwgNTIsIDEyOCwgNjUsIDU0LCAKKyAgICA1MCwgNTcsIDEyOCwgNjUsIDU0LCA1MCwgNTYsIDEyOCwgNjUsIDU0LCA1MCwgNTUsIDEyOCwgNjUsIDU0LCA1MCwgNTQsIAorICAgIDEyOCwgNjUsIDU0LCA1MCwgNTIsIDEyOCwgNjUsIDU0LCA1MCwgNTEsIDEyOCwgNjUsIDU0LCA1MCwgNTAsIDEyOCwgNjUsIAorICAgIDU0LCA1MCwgNDksIDEyOCwgNjUsIDU0LCA1MCwgNDgsIDEyOCwgNjUsIDU0LCA0OSwgNTcsIDEyOCwgNjUsIDU0LCA0OSwgCisgICAgNTYsIDEyOCwgNjUsIDU0LCA0OSwgNTUsIDEyOCwgNjUsIDU0LCA0OSwgNTQsIDEyOCwgNjUsIDU0LCA0OSwgNTMsIDEyOCwgCisgICAgNjUsIDU0LCA0OSwgNTIsIDEyOCwgNjUsIDU0LCA0OSwgNTEsIDEyOCwgNjUsIDU0LCA0OSwgNTAsIDEyOCwgNjUsIDU0LCAKKyAgICA0OSwgNDksIDEyOCwgNjUsIDU0LCA0OSwgNDgsIDEyOCwgNjUsIDU0LCA0OCwgNTcsIDEyOCwgNjUsIDU0LCA0OCwgNTYsIAorICAgIDEyOCwgNjUsIDU0LCA0OCwgNTQsIDEyOCwgNjUsIDU0LCA0OCwgNTIsIDEyOCwgNjUsIDU0LCA0OCwgNTEsIDEyOCwgNjUsIAorICAgIDU0LCA0OCwgNTAsIDEyOCwgNjUsIDU0LCA0OCwgNDksIDEyOCwgNjUsIDU0LCA0OCwgNDgsIDEyOCwgNjUsIDUzLCA1NywgCisgICAgNTYsIDEyOCwgNjUsIDUzLCA1NywgNTQsIDEyOCwgNjUsIDUzLCA1NywgNTMsIDEyOCwgNjUsIDUzLCA1NywgNTIsIDEyOCwgCisgICAgNjUsIDUzLCA1NywgNTAsIDEyOCwgNjUsIDUzLCA1NywgNDksIDEyOCwgNjUsIDUzLCA1NiwgNTcsIDEyOCwgNjUsIDUzLCAKKyAgICA1NiwgNTYsIDEyOCwgNjUsIDUzLCA1NiwgNTUsIDEyOCwgNjUsIDUzLCA1NiwgNTQsIDEyOCwgNjUsIDUzLCA1NiwgNTMsIAorICAgIDEyOCwgNjUsIDUzLCA1NiwgNTIsIDEyOCwgNjUsIDUzLCA1NiwgNTEsIDEyOCwgNjUsIDUzLCA1NiwgNTAsIDEyOCwgNjUsIAorICAgIDUzLCA1NiwgNDksIDEyOCwgNjUsIDUzLCA1NiwgNDgsIDEyOCwgNjUsIDUzLCA1NSwgNTcsIDEyOCwgNjUsIDUzLCA1NSwgCisgICAgNTYsIDEyOCwgNjUsIDUzLCA1NSwgNTUsIDEyOCwgNjUsIDUzLCA1NSwgNTQsIDEyOCwgNjUsIDUzLCA1NSwgNTMsIDEyOCwgCisgICAgNjUsIDUzLCA1NSwgNTIsIDEyOCwgNjUsIDUzLCA1NSwgNTEsIDEyOCwgNjUsIDUzLCA1NSwgNTAsIDEyOCwgNjUsIDUzLCAKKyAgICA1NSwgNDksIDEyOCwgNjUsIDUzLCA1NSwgNDgsIDEyOCwgNjUsIDUzLCA1NCwgNTcsIDEyOCwgNjUsIDUzLCA1NCwgNTYsIAorICAgIDEyOCwgNjUsIDUzLCA1NCwgNTQsIDEyOCwgNjUsIDUzLCA1NCwgNTMsIDEyOCwgNjUsIDUzLCA1NCwgNTIsIDEyOCwgNjUsIAorICAgIDUzLCA1NCwgNTEsIDEyOCwgNjUsIDUzLCA1MywgNTcsIDEyOCwgNjUsIDUzLCA1MywgNTUsIDEyOCwgNjUsIDUzLCA1MywgCisgICAgNTQsIDEyOCwgNjUsIDUzLCA1MywgNTMsIDEyOCwgNjUsIDUzLCA1MywgNTIsIDEyOCwgNjUsIDUzLCA1MywgNTEsIDEyOCwgCisgICAgNjUsIDUzLCA1MywgNTAsIDEyOCwgNjUsIDUzLCA1MywgNDksIDEyOCwgNjUsIDUzLCA1MywgNDgsIDEyOCwgNjUsIDUzLCAKKyAgICA1MiwgNTcsIDEyOCwgNjUsIDUzLCA1MiwgNTYsIDEyOCwgNjUsIDUzLCA1MiwgNTUsIDEyOCwgNjUsIDUzLCA1MiwgNTMsIAorICAgIDEyOCwgNjUsIDUzLCA1MiwgNTAsIDEyOCwgNjUsIDUzLCA1MiwgNDksIDEyOCwgNjUsIDUzLCA1MiwgNDgsIDEyOCwgNjUsIAorICAgIDUzLCA1MSwgNTcsIDEyOCwgNjUsIDUzLCA1MSwgNTYsIDEyOCwgNjUsIDUzLCA1MSwgNTUsIDEyOCwgNjUsIDUzLCA1MSwgCisgICAgNTQsIDEyOCwgNjUsIDUzLCA1MSwgNTMsIDEyOCwgNjUsIDUzLCA1MSwgNTIsIDEyOCwgNjUsIDUzLCA1MSwgNTAsIDEyOCwgCisgICAgNjUsIDUzLCA1MSwgNDksIDEyOCwgNjUsIDUzLCA1MSwgNDgsIDEyOCwgNjUsIDUzLCA1MCwgNTcsIDEyOCwgNjUsIDUzLCAKKyAgICA1MCwgNTYsIDEyOCwgNjUsIDUzLCA1MCwgNTUsIDEyOCwgNjUsIDUzLCA1MCwgNTQsIDEyOCwgNjUsIDUzLCA1MCwgNTMsIAorICAgIDEyOCwgNjUsIDUzLCA1MCwgNTIsIDEyOCwgNjUsIDUzLCA1MCwgNTEsIDEyOCwgNjUsIDUzLCA1MCwgNTAsIDEyOCwgNjUsIAorICAgIDUzLCA1MCwgNDksIDEyOCwgNjUsIDUzLCA1MCwgNDgsIDEyOCwgNjUsIDUzLCA0OSwgNTcsIDEyOCwgNjUsIDUzLCA0OSwgCisgICAgNTYsIDEyOCwgNjUsIDUzLCA0OSwgNTUsIDEyOCwgNjUsIDUzLCA0OSwgNTQsIDEyOCwgNjUsIDUzLCA0OSwgNTMsIDEyOCwgCisgICAgNjUsIDUzLCA0OSwgNTIsIDEyOCwgNjUsIDUzLCA0OSwgNTEsIDEyOCwgNjUsIDUzLCA0OSwgNTAsIDEyOCwgNjUsIDUzLCAKKyAgICA0OSwgNDksIDEyOCwgNjUsIDUzLCA0OSwgNDgsIDEyOCwgNjUsIDUzLCA0OCwgNTcsIDEyOCwgNjUsIDUzLCA0OCwgNTYsIAorICAgIDEyOCwgNjUsIDUzLCA0OCwgNTUsIDEyOCwgNjUsIDUzLCA0OCwgNTQsIDEyOCwgNjUsIDUzLCA0OCwgNTMsIDEyOCwgNjUsIAorICAgIDUzLCA0OCwgNTIsIDEyOCwgNjUsIDUzLCA0OCwgNTEsIDEyOCwgNjUsIDUzLCA0OCwgNTAsIDEyOCwgNjUsIDUzLCA0OCwgCisgICAgNDksIDEyOCwgNjUsIDUyLCA1NywgNTUsIDEyOCwgNjUsIDUyLCA1NywgNTQsIDEyOCwgNjUsIDUyLCA1NywgNTMsIDEyOCwgCisgICAgNjUsIDUyLCA1NywgNTIsIDEyOCwgNjUsIDUyLCA1NywgNTEsIDEyOCwgNjUsIDUyLCA1NywgNTAsIDEyOCwgNjUsIDUyLCAKKyAgICA1NywgNDksIDEyOCwgNjUsIDUyLCA1NywgNDgsIDEyOCwgNjUsIDUyLCA1NiwgNTcsIDEyOCwgNjUsIDUyLCA1NiwgNTYsIAorICAgIDEyOCwgNjUsIDUyLCA1NiwgNTUsIDEyOCwgNjUsIDUyLCA1NiwgNTQsIDEyOCwgNjUsIDUyLCA1NiwgNTMsIDEyOCwgNjUsIAorICAgIDUyLCA1NiwgNTIsIDEyOCwgNjUsIDUyLCA1NiwgNTEsIDEyOCwgNjUsIDUyLCA1NiwgNTAsIDEyOCwgNjUsIDUyLCA1NiwgCisgICAgNDksIDEyOCwgNjUsIDUyLCA1NiwgNDgsIDEyOCwgNjUsIDUyLCA1NSwgNTcsIDEyOCwgNjUsIDUyLCA1NSwgNTYsIDEyOCwgCisgICAgNjUsIDUyLCA1NSwgNTUsIDEyOCwgNjUsIDUyLCA1NSwgNTQsIDEyOCwgNjUsIDUyLCA1NSwgNTMsIDEyOCwgNjUsIDUyLCAKKyAgICA1NSwgNTIsIDEyOCwgNjUsIDUyLCA1NSwgNTEsIDEyOCwgNjUsIDUyLCA1NSwgNTAsIDEyOCwgNjUsIDUyLCA1NSwgNDksIAorICAgIDEyOCwgNjUsIDUyLCA1NSwgNDgsIDEyOCwgNjUsIDUyLCA1NCwgNTcsIDEyOCwgNjUsIDUyLCA1NCwgNTYsIDEyOCwgNjUsIAorICAgIDUyLCA1NCwgNTUsIDEyOCwgNjUsIDUyLCA1NCwgNTQsIDEyOCwgNjUsIDUyLCA1NCwgNTMsIDEyOCwgNjUsIDUyLCA1NCwgCisgICAgNTIsIDEyOCwgNjUsIDUyLCA1NCwgNTEsIDEyOCwgNjUsIDUyLCA1NCwgNTAsIDEyOCwgNjUsIDUyLCA1NCwgNDksIDEyOCwgCisgICAgNjUsIDUyLCA1NCwgNDgsIDEyOCwgNjUsIDUyLCA1MywgNTcsIDEyOCwgNjUsIDUyLCA1MywgNTYsIDEyOCwgNjUsIDUyLCAKKyAgICA1MywgNTUsIDY1LCAxMjgsIDY1LCA1MiwgNTMsIDU1LCAxMjgsIDY1LCA1MiwgNTMsIDU0LCAxMjgsIDY1LCA1MiwgNTMsIAorICAgIDUzLCAxMjgsIDY1LCA1MiwgNTMsIDUyLCAxMjgsIDY1LCA1MiwgNTMsIDUxLCAxMjgsIDY1LCA1MiwgNTMsIDUwLCAxMjgsIAorICAgIDY1LCA1MiwgNTMsIDQ5LCAxMjgsIDY1LCA1MiwgNTMsIDQ4LCA2NSwgMTI4LCA2NSwgNTIsIDUzLCA0OCwgMTI4LCA2NSwgCisgICAgNTIsIDUyLCA1NywgMTI4LCA2NSwgNTIsIDUyLCA1NiwgMTI4LCA2NSwgNTIsIDUyLCA1NSwgMTI4LCA2NSwgNTIsIDUyLCAKKyAgICA1NCwgMTI4LCA2NSwgNTIsIDUyLCA1MywgMTI4LCA2NSwgNTIsIDUyLCA1MiwgMTI4LCA2NSwgNTIsIDUyLCA1MSwgMTI4LCAKKyAgICA2NSwgNTIsIDUyLCA1MCwgMTI4LCA2NSwgNTIsIDUyLCA0OSwgMTI4LCA2NSwgNTIsIDUyLCA0OCwgMTI4LCA2NSwgNTIsIAorICAgIDUxLCA1NywgMTI4LCA2NSwgNTIsIDUxLCA1NiwgMTI4LCA2NSwgNTIsIDUxLCA1NSwgMTI4LCA2NSwgNTIsIDUxLCA1NCwgCisgICAgMTI4LCA2NSwgNTIsIDUxLCA1MywgMTI4LCA2NSwgNTIsIDUxLCA1MiwgMTI4LCA2NSwgNTIsIDUxLCA1MSwgMTI4LCA2NSwgCisgICAgNTIsIDUxLCA1MCwgMTI4LCA2NSwgNTIsIDUxLCA0OSwgMTI4LCA2NSwgNTIsIDUxLCA0OCwgMTI4LCA2NSwgNTIsIDUwLCAKKyAgICA1NywgMTI4LCA2NSwgNTIsIDUwLCA1NiwgMTI4LCA2NSwgNTIsIDUwLCA1NSwgMTI4LCA2NSwgNTIsIDUwLCA1NCwgMTI4LCAKKyAgICA2NSwgNTIsIDUwLCA1MywgMTI4LCA2NSwgNTIsIDUwLCA1MiwgMTI4LCA2NSwgNTIsIDUwLCA1MSwgMTI4LCA2NSwgNTIsIAorICAgIDUwLCA1MCwgMTI4LCA2NSwgNTIsIDUwLCA0OSwgMTI4LCA2NSwgNTIsIDUwLCA0OCwgMTI4LCA2NSwgNTIsIDQ5LCA1NywgCisgICAgMTI4LCA2NSwgNTIsIDQ5LCA1NiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTYsIDEyOCwgNjUsIDUyLCAKKyAgICA0OSwgNTUsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDU1LCAxMjgsIDY1LCA1MiwgNDksIDU0LCA0NSwgODYsIAorICAgIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1NCwgMTI4LCA2NSwgNTIsIDQ5LCA1MywgNDUsIDg2LCA2NSwgODMsIDEyOCwgCisgICAgNjUsIDUyLCA0OSwgNTMsIDEyOCwgNjUsIDUyLCA0OSwgNTIsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUyLCAKKyAgICAxMjgsIDY1LCA1MiwgNDksIDUxLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MSwgMTI4LCA2NSwgNTIsIAorICAgIDQ5LCA1MCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTAsIDEyOCwgNjUsIDUyLCA0OSwgNDksIDQ1LCA4NiwgCisgICAgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDQ5LCAxMjgsIDY1LCA1MiwgNDksIDQ4LCAxOTMsIDY1LCA1MiwgNDksIDQ4LCAKKyAgICA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCAxNzYsIDY1LCA1MiwgNDgsIDU3LCA0NSwgODYsIDY1LCA4MywgCisgICAgMTI4LCA2NSwgNTIsIDQ4LCA1NywgMTI4LCA2NSwgNTIsIDQ4LCA1NiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCAKKyAgICA0OCwgNTYsIDEyOCwgNjUsIDUyLCA0OCwgNTUsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDU1LCAxMjgsIAorICAgIDY1LCA1MiwgNDgsIDU0LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1NCwgMTI4LCA2NSwgNTIsIDQ4LCA1MywgCisgICAgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTMsIDEyOCwgNjUsIDUyLCA0OCwgNTIsIDQ1LCA4NiwgNjUsIDgzLCAKKyAgICAxMjgsIDY1LCA1MiwgNDgsIDUyLCAxMjgsIDY1LCA1MiwgNDgsIDUxLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIAorICAgIDQ4LCA1MSwgMTI4LCA2NSwgNTIsIDQ4LCA1MCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTAsIDEyOCwgCisgICAgNjUsIDUyLCA0OCwgNDksIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDQ5LCAxMjgsIDY1LCA1MiwgNDgsIDQ4LCAKKyAgICA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA0OCwgMTI4LCA2NSwgNTEsIDU3LCA1NywgMTI4LCA2NSwgNTEsIAorICAgIDU3LCA1NiwgMTI4LCA2NSwgNTEsIDU3LCA1NSwgMTI4LCA2NSwgNTEsIDU3LCA1NCwgMTI4LCA2NSwgNTEsIDU3LCA1MywgCisgICAgMTI4LCA2NSwgNTEsIDU3LCA1MiwgMTI4LCA2NSwgNTEsIDU3LCAxNzksIDY1LCA1MSwgNTcsIDUwLCAxMjgsIDY1LCA1MSwgCisgICAgNTcsIDQ5LCAxMjgsIDY1LCA1MSwgNTcsIDQ4LCAxMjgsIDY1LCA1MSwgNTYsIDU3LCAxMjgsIDY1LCA1MSwgNTYsIDU2LCAKKyAgICAxMjgsIDY1LCA1MSwgNTYsIDU1LCAxMjgsIDY1LCA1MSwgNTYsIDU0LCA2NSwgMTI4LCA2NSwgNTEsIDU2LCA1NCwgMTI4LCAKKyAgICA2NSwgNTEsIDU2LCA1MywgMTI4LCA2NSwgNTEsIDU2LCA1MiwgMTI4LCA2NSwgNTEsIDU2LCA1MSwgNjUsIDEyOCwgNjUsIAorICAgIDUxLCA1NiwgMTc5LCA2NSwgNTEsIDU2LCA1MCwgMTI4LCA2NSwgNTEsIDU2LCA0OSwgNjUsIDEyOCwgNjUsIDUxLCA1NiwgCisgICAgNDksIDEyOCwgNjUsIDUxLCA1NiwgNDgsIDEyOCwgNjUsIDUxLCA1NSwgNTcsIDEyOCwgNjUsIDUxLCA1NSwgNTYsIDEyOCwgCisgICAgNjUsIDUxLCA1NSwgNTUsIDEyOCwgNjUsIDUxLCA1NSwgNTQsIDEyOCwgNjUsIDUxLCA1NSwgNTMsIDEyOCwgNjUsIDUxLCAKKyAgICA1NSwgNTIsIDEyOCwgNjUsIDUxLCA1NSwgNTEsIDEyOCwgNjUsIDUxLCA1NSwgNTAsIDEyOCwgNjUsIDUxLCA1NSwgNDksIAorICAgIDY1LCAxMjgsIDY1LCA1MSwgNTUsIDQ5LCAxMjgsIDY1LCA1MSwgNTUsIDQ4LCAxMjgsIDY1LCA1MSwgNTQsIDU3LCAxMjgsIAorICAgIDY1LCA1MSwgNTQsIDU2LCA2NSwgMTI4LCA2NSwgNTEsIDU0LCA1NiwgMTI4LCA2NSwgNTEsIDU0LCA1NSwgMTI4LCA2NSwgCisgICAgNTEsIDU0LCA1NCwgMTI4LCA2NSwgNTEsIDU0LCA1MywgMTI4LCA2NSwgNTEsIDU0LCA1MiwgNjUsIDEyOCwgNjUsIDUxLCAKKyAgICA1NCwgNTIsIDEyOCwgNjUsIDUxLCA1NCwgNTEsIDEyOCwgNjUsIDUxLCA1NCwgNTAsIDEyOCwgNjUsIDUxLCA1NCwgNDksIAorICAgIDEyOCwgNjUsIDUxLCA1NCwgNDgsIDEyOCwgNjUsIDUxLCA1MywgNTcsIDY1LCAxMjgsIDY1LCA1MSwgNTMsIDU3LCAxMjgsIAorICAgIDY1LCA1MSwgNTMsIDU2LCAxMjgsIDY1LCA1MSwgNTMsIDU1LCAxMjgsIDY1LCA1MSwgNTMsIDU0LCAxMjgsIDY1LCA1MSwgCisgICAgNTMsIDUzLCAxMjgsIDY1LCA1MSwgNTMsIDUyLCAxMjgsIDY1LCA1MSwgNTMsIDUxLCAxMjgsIDY1LCA1MSwgNTMsIDUwLCAKKyAgICAxMjgsIDY1LCA1MSwgNTMsIDQ5LCAxMjgsIDY1LCA1MSwgNTMsIDQ4LCAxMjgsIDY1LCA1MSwgNTIsIDU3LCAxMjgsIDY1LCAKKyAgICA1MSwgNTIsIDU2LCAxMjgsIDY1LCA1MSwgNTIsIDU1LCAxMjgsIDY1LCA1MSwgNTIsIDU0LCAxMjgsIDY1LCA1MSwgNTIsIAorICAgIDUzLCAxMjgsIDY1LCA1MSwgNTIsIDUyLCAxMjgsIDY1LCA1MSwgNTIsIDUxLCAxMjgsIDY1LCA1MSwgNTIsIDUwLCAxMjgsIAorICAgIDY1LCA1MSwgNTIsIDQ5LCAxMjgsIDY1LCA1MSwgNTIsIDQ4LCAxMjgsIDY1LCA1MSwgNTEsIDU3LCAxMjgsIDY1LCA1MSwgCisgICAgNTEsIDU2LCAxMjgsIDY1LCA1MSwgNTEsIDU1LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCA2NywgMTI4LCA2NSwgNTEsIDUxLCAKKyAgICA1NCwgNjYsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDY1LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCAxMjgsIDY1LCA1MSwgNTEsIAorICAgIDUzLCAxMjgsIDY1LCA1MSwgNTEsIDUyLCAxMjgsIDY1LCA1MSwgNTEsIDUxLCAxMjgsIDY1LCA1MSwgNTEsIDUwLCA2NywgCisgICAgMTI4LCA2NSwgNTEsIDUxLCA1MCwgNjYsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIDY1LCAxMjgsIDY1LCA1MSwgNTEsIDUwLCAKKyAgICAxMjgsIDY1LCA1MSwgNTEsIDQ5LCAxMjgsIDY1LCA1MSwgNTEsIDQ4LCAxMjgsIDY1LCA1MSwgNTAsIDU3LCA2NSwgMTI4LCAKKyAgICA2NSwgNTEsIDUwLCA1NywgMTI4LCA2NSwgNTEsIDUwLCA1NiwgMTI4LCA2NSwgNTEsIDUwLCA1NSwgMTI4LCA2NSwgNTEsIAorICAgIDUwLCA1NCwgMTI4LCA2NSwgNTEsIDUwLCA1MywgMTI4LCA2NSwgNTEsIDUwLCA1MiwgMTI4LCA2NSwgNTEsIDUwLCA1MSwgCisgICAgMTI4LCA2NSwgNTEsIDUwLCA1MCwgMTI4LCA2NSwgNTEsIDUwLCA0OSwgMTI4LCA2NSwgNTEsIDUwLCA0OCwgMTI4LCA2NSwgCisgICAgNTEsIDQ5LCA1NywgMTI4LCA2NSwgNTEsIDQ5LCA1NiwgMTI4LCA2NSwgNTEsIDQ5LCA1NSwgMTI4LCA2NSwgNTEsIDQ5LCAKKyAgICA1NCwgMTI4LCA2NSwgNTEsIDQ5LCA1MywgMTI4LCA2NSwgNTEsIDQ5LCA1MiwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgNjcsIAorICAgIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDY2LCAxMjgsIDY1LCA1MSwgNDksIDUxLCA2NSwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgCisgICAgMTI4LCA2NSwgNTEsIDQ5LCA1MCwgMTI4LCA2NSwgNTEsIDQ5LCA0OSwgMTI4LCA2NSwgNTEsIDQ5LCA0OCwgMTI4LCA2NSwgCisgICAgNTEsIDQ4LCA1NywgNjcsIDEyOCwgNjUsIDUxLCA0OCwgNTcsIDY2LCAxMjgsIDY1LCA1MSwgNDgsIDU3LCA2NSwgMTI4LCAKKyAgICA2NSwgNTEsIDQ4LCA1NywgMTI4LCA2NSwgNTEsIDQ4LCA1NiwgMTI4LCA2NSwgNTEsIDQ4LCA1NSwgMTI4LCA2NSwgNTEsIAorICAgIDQ4LCA1NCwgMTI4LCA2NSwgNTEsIDQ4LCA1MywgMTI4LCA2NSwgNTEsIDQ4LCA1MiwgMTI4LCA2NSwgNTEsIDQ4LCA1MSwgCisgICAgMTI4LCA2NSwgNTEsIDQ4LCA1MCwgMTI4LCA2NSwgNTEsIDQ4LCA0OSwgMTI4LCA2NSwgNTEsIDQ4LCA0OCwgMTI4LCA2NSwgCisgICAgNTAsIDU3LCA1NywgNjUsIDEyOCwgNjUsIDUwLCA1NywgNTcsIDEyOCwgNjUsIDUwLCA1NywgNTYsIDEyOCwgNjUsIDUwLCAKKyAgICA1NywgNTUsIDEyOCwgNjUsIDUwLCA1NywgNTQsIDEyOCwgNjUsIDUwLCA1NywgNTMsIDEyOCwgNjUsIDUwLCA1NywgNTIsIAorICAgIDY1LCAxMjgsIDY1LCA1MCwgNTcsIDUyLCAxMjgsIDY1LCA1MCwgNTcsIDUxLCAxMjgsIDY1LCA1MCwgNTcsIDUwLCAxMjgsIAorICAgIDY1LCA1MCwgNTcsIDQ5LCAxMjgsIDY1LCA1MCwgNTcsIDQ4LCAxMjgsIDY1LCA1MCwgNTYsIDU3LCA2NSwgMTI4LCA2NSwgCisgICAgNTAsIDU2LCA1NywgMTI4LCA2NSwgNTAsIDU2LCA1NiwgMTI4LCA2NSwgNTAsIDU2LCA1NSwgMTI4LCA2NSwgNTAsIDU2LCAKKyAgICA1NCwgMTI4LCA2NSwgNTAsIDU2LCA1MywgMTI4LCA2NSwgNTAsIDU2LCA1MiwgMTI4LCA2NSwgNTAsIDU2LCA1MSwgMTI4LCAKKyAgICA2NSwgNTAsIDU2LCA1MCwgMTI4LCA2NSwgNTAsIDU2LCA0OSwgMTI4LCA2NSwgNTAsIDU2LCA0OCwgMTI4LCA2NSwgNTAsIAorICAgIDU1LCA1NywgMTI4LCA2NSwgNTAsIDU1LCA1NiwgMTI4LCA2NSwgNTAsIDU1LCA1NSwgMTI4LCA2NSwgNTAsIDU1LCA1NCwgCisgICAgMTI4LCA2NSwgNTAsIDU1LCA1MywgMTI4LCA2NSwgNTAsIDU1LCA1MiwgMTI4LCA2NSwgNTAsIDU1LCA1MSwgMTI4LCA2NSwgCisgICAgNTAsIDU1LCA1MCwgMTI4LCA2NSwgNTAsIDU1LCA0OSwgMTI4LCA2NSwgNTAsIDU1LCA0OCwgMTI4LCA2NSwgNTAsIDU0LCAKKyAgICA1NywgMTI4LCA2NSwgNTAsIDU0LCA1NiwgMTI4LCA2NSwgNTAsIDU0LCA1NSwgNjUsIDEyOCwgNjUsIDUwLCA1NCwgNTUsIAorICAgIDEyOCwgNjUsIDUwLCA1NCwgNTQsIDEyOCwgNjUsIDUwLCA1NCwgNTMsIDEyOCwgNjUsIDUwLCA1NCwgNTIsIDEyOCwgNjUsIAorICAgIDUwLCA1NCwgNTEsIDEyOCwgNjUsIDUwLCA1NCwgNTAsIDEyOCwgNjUsIDUwLCA1NCwgNDksIDEyOCwgNjUsIDUwLCA1NCwgCisgICAgNDgsIDEyOCwgNjUsIDUwLCA1MywgNTcsIDEyOCwgNjUsIDUwLCA1MywgNTYsIDEyOCwgNjUsIDUwLCA1MywgNTUsIDEyOCwgCisgICAgNjUsIDUwLCA1MywgNTQsIDEyOCwgNjUsIDUwLCA1MywgNTMsIDEyOCwgNjUsIDUwLCA1MywgNTIsIDEyOCwgNjUsIDUwLCAKKyAgICA1MywgNTEsIDEyOCwgNjUsIDUwLCA1MywgNTAsIDEyOCwgNjUsIDUwLCA1MywgNDksIDEyOCwgNjUsIDUwLCA1MywgNDgsIAorICAgIDEyOCwgNjUsIDUwLCA1MiwgNTcsIDEyOCwgNjUsIDUwLCA1MiwgNTYsIDEyOCwgNjUsIDUwLCA1MiwgNTUsIDEyOCwgNjUsIAorICAgIDUwLCA1MiwgNTQsIDEyOCwgNjUsIDUwLCA1MiwgNTMsIDEyOCwgNjUsIDUwLCA1MiwgNTIsIDEyOCwgNjUsIDUwLCA1MiwgCisgICAgNTEsIDEyOCwgNjUsIDUwLCA1MiwgNTAsIDEyOCwgNjUsIDUwLCA1MiwgNDksIDEyOCwgNjUsIDUwLCA1MiwgNDgsIDEyOCwgCisgICAgNjUsIDUwLCA1MSwgNTcsIDEyOCwgNjUsIDUwLCA1MSwgNTYsIDEyOCwgNjUsIDUwLCA1MSwgNTUsIDEyOCwgNjUsIDUwLCAKKyAgICA1MSwgNTQsIDEyOCwgNjUsIDUwLCA1MSwgNTMsIDEyOCwgNjUsIDUwLCA1MSwgNTIsIDEyOCwgNjUsIDUwLCA1MSwgNTEsIAorICAgIDEyOCwgNjUsIDUwLCA1MSwgNTAsIDEyOCwgNjUsIDUwLCA1MSwgNDksIDEyOCwgNjUsIDUwLCA1MSwgNDgsIDEyOCwgNjUsIAorICAgIDUwLCA1MCwgNTcsIDEyOCwgNjUsIDUwLCA1MCwgNTYsIDEyOCwgNjUsIDUwLCA1MCwgNTUsIDY1LCAxMjgsIDY1LCA1MCwgCisgICAgNTAsIDU1LCAxMjgsIDY1LCA1MCwgNTAsIDU0LCAxMjgsIDY1LCA1MCwgNTAsIDUzLCAxMjgsIDY1LCA1MCwgNTAsIDUyLCAKKyAgICAxMjgsIDY1LCA1MCwgNTAsIDUxLCAxMjgsIDY1LCA1MCwgNTAsIDUwLCAxMjgsIDY1LCA1MCwgNTAsIDQ5LCAxMjgsIDY1LCAKKyAgICA1MCwgNTAsIDQ4LCAxMjgsIDY1LCA1MCwgNDksIDU3LCAxMjgsIDY1LCA1MCwgNDksIDU2LCAxMjgsIDY1LCA1MCwgNDksIAorICAgIDU1LCAxMjgsIDY1LCA1MCwgNDksIDU0LCA2NSwgMTI4LCA2NSwgNTAsIDQ5LCA1NCwgMTI4LCA2NSwgNTAsIDQ5LCA1MywgCisgICAgNjUsIDEyOCwgNjUsIDUwLCA0OSwgNTMsIDEyOCwgNjUsIDUwLCA0OSwgNTIsIDEyOCwgNjUsIDUwLCA0OSwgNTEsIDEyOCwgCisgICAgNjUsIDUwLCA0OSwgNTAsIDEyOCwgNjUsIDUwLCA0OSwgNDksIDEyOCwgNjUsIDUwLCA0OSwgNDgsIDEyOCwgNjUsIDUwLCAKKyAgICA0OCwgNTcsIDY1LCAxMjgsIDY1LCA1MCwgNDgsIDU3LCAxMjgsIDY1LCA1MCwgNDgsIDU2LCAxMjgsIDY1LCA1MCwgNDgsIAorICAgIDU1LCA2NSwgMTI4LCA2NSwgNTAsIDQ4LCA1NSwgMTI4LCA2NSwgNTAsIDQ4LCA1NCwgMTI4LCA2NSwgNTAsIDQ4LCA1MywgCisgICAgMTI4LCA2NSwgNTAsIDQ4LCA1MiwgMTI4LCA2NSwgNTAsIDQ4LCA1MSwgMTI4LCA2NSwgNTAsIDQ4LCA1MCwgNjYsIDEyOCwgCisgICAgNjUsIDUwLCA0OCwgNTAsIDY1LCAxMjgsIDY1LCA1MCwgNDgsIDUwLCAxMjgsIDY1LCA1MCwgNDgsIDQ5LCAxMjgsIDY1LCAKKyAgICA1MCwgNDgsIDQ4LCAxMjgsIDY1LCA0OSwgNTcsIDU3LCAxMjgsIDY1LCA0OSwgNTcsIDU2LCAxMjgsIDY1LCA0OSwgNTcsIAorICAgIDU1LCAxMjgsIDY1LCA0OSwgNTcsIDU0LCAxMjgsIDY1LCA0OSwgNTcsIDUzLCAxMjgsIDY1LCA0OSwgNTcsIDUyLCAxMjgsIAorICAgIDY1LCA0OSwgNTcsIDUxLCAxMjgsIDY1LCA0OSwgNTcsIDUwLCAxMjgsIDY1LCA0OSwgNTcsIDQ5LCAxMjgsIDY1LCA0OSwgCisgICAgNTcsIDQ4LCAxMjgsIDY1LCA0OSwgNTYsIDU3LCAxMjgsIDY1LCA0OSwgNTYsIDU2LCAxMjgsIDY1LCA0OSwgNTYsIDU1LCAKKyAgICAxMjgsIDY1LCA0OSwgNTYsIDU0LCAxMjgsIDY1LCA0OSwgNTYsIDUzLCAxMjgsIDY1LCA0OSwgNTYsIDUyLCAxMjgsIDY1LCAKKyAgICA0OSwgNTYsIDUxLCAxMjgsIDY1LCA0OSwgNTYsIDUwLCAxMjgsIDY1LCA0OSwgNTYsIDQ5LCAxMjgsIDY1LCA0OSwgNTYsIAorICAgIDQ4LCAxMjgsIDY1LCA0OSwgNTUsIDU3LCAxMjgsIDY1LCA0OSwgNTUsIDU2LCAxMjgsIDY1LCA0OSwgNTUsIDU1LCAxMjgsIAorICAgIDY1LCA0OSwgNTUsIDU0LCAxMjgsIDY1LCA0OSwgNTUsIDUzLCAxMjgsIDY1LCA0OSwgNTUsIDUyLCAxMjgsIDY1LCA0OSwgCisgICAgNTUsIDUxLCAxMjgsIDY1LCA0OSwgNTUsIDUwLCAxMjgsIDY1LCA0OSwgNTUsIDQ5LCAxMjgsIDY1LCA0OSwgNTUsIDQ4LCAKKyAgICAxMjgsIDY1LCA0OSwgNTQsIDU3LCAxMjgsIDY1LCA0OSwgNTQsIDU2LCAxMjgsIDY1LCA0OSwgNTQsIDU1LCAxMjgsIDY1LCAKKyAgICA0OSwgNTQsIDU0LCAxMjgsIDY1LCA0OSwgNTQsIDUzLCAxMjgsIDY1LCA0OSwgNTQsIDUyLCAxMjgsIDY1LCA0OSwgNTQsIAorICAgIDUxLCAxMjgsIDY1LCA0OSwgNTQsIDUwLCAxMjgsIDY1LCA0OSwgNTQsIDQ5LCAxMjgsIDY1LCA0OSwgNTQsIDQ4LCAxMjgsIAorICAgIDY1LCA0OSwgNTMsIDU3LCAxMjgsIDY1LCA0OSwgNTMsIDU2LCAxMjgsIDY1LCA0OSwgNTMsIDU1LCAxMjgsIDY1LCA0OSwgCisgICAgNTMsIDU0LCAxMjgsIDY1LCA0OSwgNTMsIDUzLCAxMjgsIDY1LCA0OSwgNTMsIDUyLCAxMjgsIDY1LCA0OSwgNTMsIDUxLCAKKyAgICAxMjgsIDY1LCA0OSwgNTMsIDUwLCAxMjgsIDY1LCA0OSwgNTMsIDQ5LCAxMjgsIDY1LCA0OSwgNTMsIDQ4LCAxMjgsIDY1LCAKKyAgICA0OSwgNTIsIDU3LCAxMjgsIDY1LCA0OSwgNTIsIDU2LCAxMjgsIDY1LCA0OSwgNTIsIDU1LCAxMjgsIDY1LCA0OSwgNTIsIAorICAgIDU0LCAxMjgsIDY1LCA0OSwgNTIsIDUzLCAxMjgsIDY1LCA0OSwgNTIsIDUyLCAxMjgsIDY1LCA0OSwgNTIsIDUxLCAxMjgsIAorICAgIDY1LCA0OSwgNTIsIDUwLCAxMjgsIDY1LCA0OSwgNTIsIDQ5LCAxMjgsIDY1LCA0OSwgNTIsIDQ4LCAxMjgsIDY1LCA0OSwgCisgICAgNTEsIDU3LCAxMjgsIDY1LCA0OSwgNTEsIDU2LCAxMjgsIDY1LCA0OSwgNTEsIDU1LCAxMjgsIDY1LCA0OSwgNTEsIDU0LCAKKyAgICAxMjgsIDY1LCA0OSwgNTEsIDUzLCA2NSwgMTI4LCA2NSwgNDksIDUxLCA1MywgMTI4LCA2NSwgNDksIDUxLCA1MiwgMTI4LCAKKyAgICA2NSwgNDksIDUxLCA1MSwgMTI4LCA2NSwgNDksIDUxLCA1MCwgMTI4LCA2NSwgNDksIDUxLCA0OSwgNjcsIDEyOCwgNjUsIAorICAgIDQ5LCA1MSwgNDksIDEyOCwgNjUsIDQ5LCA1MSwgNDgsIDEyOCwgNjUsIDQ5LCA1MCwgNTcsIDEyOCwgNjUsIDQ5LCA1MCwgCisgICAgNTYsIDEyOCwgNjUsIDQ5LCA1MCwgNTUsIDEyOCwgNjUsIDQ5LCA1MCwgNTQsIDEyOCwgNjUsIDQ5LCA1MCwgNTMsIDY1LCAKKyAgICAxMjgsIDY1LCA0OSwgNTAsIDUzLCAxMjgsIDY1LCA0OSwgNTAsIDUyLCAxMjgsIDY1LCA0OSwgNTAsIDUxLCAxMjgsIDY1LCAKKyAgICA0OSwgNTAsIDUwLCAxMjgsIDY1LCA0OSwgNTAsIDQ5LCAxMjgsIDY1LCA0OSwgNTAsIDQ4LCA2NiwgMTI4LCA2NSwgNDksIAorICAgIDUwLCA0OCwgMTI4LCA2NSwgNDksIDQ5LCA1NywgMTI4LCA2NSwgNDksIDQ5LCA1NiwgMTI4LCA2NSwgNDksIDQ5LCA1NSwgCisgICAgMTI4LCA2NSwgNDksIDQ5LCA1NCwgMTI4LCA2NSwgNDksIDQ5LCA1MywgNjUsIDEyOCwgNjUsIDQ5LCA0OSwgNTMsIDEyOCwgCisgICAgNjUsIDQ5LCA0OSwgNTIsIDEyOCwgNjUsIDQ5LCA0OSwgNTEsIDEyOCwgNjUsIDQ5LCA0OSwgNTAsIDEyOCwgNjUsIDQ5LCAKKyAgICA0OSwgNDksIDEyOCwgNjUsIDQ5LCA0OSwgNDgsIDY2LCAxMjgsIDY1LCA0OSwgNDksIDQ4LCA2NSwgMTI4LCA2NSwgNDksIAorICAgIDQ5LCA0OCwgMTI4LCA2NSwgNDksIDQ4LCA1NywgMTI4LCA2NSwgNDksIDQ4LCA1NiwgMTI4LCA2NSwgNDksIDQ4LCA1NSwgCisgICAgNjcsIDEyOCwgNjUsIDQ5LCA0OCwgNTUsIDY2LCAxMjgsIDY1LCA0OSwgNDgsIDU1LCA2NSwgMTI4LCA2NSwgNDksIDQ4LCAKKyAgICA1NSwgMTI4LCA2NSwgNDksIDQ4LCA1NCwgMTI4LCA2NSwgNDksIDQ4LCA1MywgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgNTMsIAorICAgIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDUzLCAxMjgsIDY1LCA0OSwgNDgsIDUyLCA2NywgMTI4LCA2NSwgNDksIDQ4LCA1MiwgCisgICAgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDUyLCAxMjgsIDY1LCA0OSwgNDgsIDUxLCAKKyAgICAxMjgsIDY1LCA0OSwgNDgsIDUwLCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA1MCwgMTI4LCA2NSwgNDksIDQ4LCA0OSwgNjUsIAorICAgIDEyOCwgNjUsIDQ5LCA0OCwgNDksIDEyOCwgNjUsIDQ5LCA0OCwgNDgsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDQ4LCA0NSwgCisgICAgNDksIDQ4LCA1MCwgMTI4LCA2NSwgNDksIDQ4LCA0OCwgMTI4LCA2NSwgNDgsIDU3LCA1NywgMTI4LCA2NSwgNDgsIDU3LCAKKyAgICA1NiwgNjUsIDEyOCwgNjUsIDQ4LCA1NywgNTYsIDEyOCwgNjUsIDQ4LCA1NywgNTUsIDY1LCAxMjgsIDY1LCA0OCwgNTcsIAorICAgIDU1LCAxMjgsIDY1LCA0OCwgNTcsIDU0LCAxMjgsIDY1LCA0OCwgNTcsIDUzLCAxMjgsIDY1LCA0OCwgNTcsIDUyLCAxMjgsIAorICAgIDY1LCA0OCwgNTcsIDUxLCAxMjgsIDY1LCA0OCwgNTcsIDUwLCAxMjgsIDY1LCA0OCwgNTcsIDQ5LCAxMjgsIDY1LCA0OCwgCisgICAgNTcsIDQ4LCAxMjgsIDY1LCA0OCwgNTYsIDU3LCAxMjgsIDY1LCA0OCwgNTYsIDU2LCAxMjgsIDY1LCA0OCwgNTYsIDU1LCAKKyAgICAxMjgsIDY1LCA0OCwgNTYsIDU0LCAxMjgsIDY1LCA0OCwgNTYsIDUzLCAxMjgsIDY1LCA0OCwgNTYsIDUyLCAxMjgsIDY1LCAKKyAgICA0OCwgNTYsIDUxLCAxMjgsIDY1LCA0OCwgNTYsIDUwLCAxMjgsIDY1LCA0OCwgNTYsIDQ5LCAxMjgsIDY1LCA0OCwgNTYsIAorICAgIDQ4LCAxMjgsIDY1LCA0OCwgNTUsIDU3LCAxMjgsIDY1LCA0OCwgNTUsIDU2LCAxMjgsIDY1LCA0OCwgNTUsIDU1LCAxMjgsIAorICAgIDY1LCA0OCwgNTUsIDU0LCAxMjgsIDY1LCA0OCwgNTUsIDUzLCAxMjgsIDY1LCA0OCwgNTUsIDUyLCAxMjgsIDY1LCA0OCwgCisgICAgNTUsIDUxLCAxMjgsIDY1LCA0OCwgNTUsIDUwLCAxMjgsIDY1LCA0OCwgNTUsIDQ5LCAxMjgsIDY1LCA0OCwgNTUsIDQ4LCAKKyAgICAxMjgsIDY1LCA0OCwgNTQsIDU3LCAxMjgsIDY1LCA0OCwgNTQsIDU2LCAxMjgsIDY1LCA0OCwgNTQsIDU1LCAxMjgsIDY1LCAKKyAgICA0OCwgNTQsIDU0LCA2NywgMTI4LCA2NSwgNDgsIDU0LCA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIDY1LCAxMjgsIAorICAgIDY1LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCA0OCwgNTQsIDUzLCAxMjgsIDY1LCA0OCwgNTQsIDUyLCAxMjgsIDY1LCA0OCwgCisgICAgNTQsIDUxLCAxMjgsIDY1LCA0OCwgNTQsIDUwLCAxMjgsIDY1LCA0OCwgNTQsIDQ5LCAxMjgsIDY1LCA0OCwgNTQsIDQ4LCAKKyAgICAxMjgsIDY1LCA0OCwgNTMsIDU3LCAxMjgsIDY1LCA0OCwgNTMsIDU2LCAxMjgsIDY1LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCAKKyAgICA0OCwgNTMsIDU0LCAxMjgsIDY1LCA0OCwgNTMsIDUzLCAxMjgsIDY1LCA0OCwgNTMsIDUyLCAxMjgsIDY1LCA0OCwgNTMsIAorICAgIDUxLCAxMjgsIDY1LCA0OCwgNTMsIDUwLCAxMjgsIDY1LCA0OCwgNTMsIDQ5LCAxMjgsIDY1LCA0OCwgNTMsIDQ4LCAxMjgsIAorICAgIDY1LCA0OCwgNTIsIDU3LCAxMjgsIDY1LCA0OCwgNTIsIDU2LCAxMjgsIDY1LCA0OCwgNTIsIDU1LCAxMjgsIDY1LCA0OCwgCisgICAgNTIsIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTQsIDEyOCwgNjUsIDQ4LCAKKyAgICA1MiwgNTMsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUzLCAxMjgsIDY1LCA0OCwgNTIsIDUyLCAxMjgsIDY1LCA0OCwgNTIsIAorICAgIDUxLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgMTI4LCA2NSwgNDgsIDUyLCA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgCisgICAgNTAsIDEyOCwgNjUsIDQ4LCA1MiwgNDksIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDQ5LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCAKKyAgICA2NSwgMTI4LCA2NSwgNDgsIDUyLCA0OCwgMTI4LCA2NSwgNDgsIDUxLCA1NywgNjUsIDEyOCwgNjUsIDQ4LCA1MSwgNTcsIAorICAgIDEyOCwgNjUsIDQ4LCA1MSwgNTYsIDEyOCwgNjUsIDQ4LCA1MSwgNTUsIDEyOCwgNjUsIDQ4LCA1MSwgNTQsIDEyOCwgNjUsIAorICAgIDQ4LCA1MSwgNTMsIDEyOCwgNjUsIDQ4LCA1MSwgNTIsIDEyOCwgNjUsIDQ4LCA1MSwgNTEsIDEyOCwgNjUsIDQ4LCA1MSwgCisgICAgNTAsIDY1LCAxMjgsIDY1LCA0OCwgNTAsIDU2LCA2NiwgMTI4LCA2NSwgNDgsIDUwLCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCAKKyAgICA0OSwgNTUsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNjUsIAorICAgIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgCisgICAgNjUsIDQ1LCA2OSwgODUsIDEyOCwgNDUsIDg1LCAyMDUsIDQ1LCA4MCwgNzIsIDgyLCA4NSwgMTI4LCA0NSwgNzUsIDcyLCAKKyAgICA4OSwgODUsIDE5NiwgNDUsIDc1LCA3MiwgODksIDczLCA3NiwgMTI4LCA0NSwgNjgsIDkwLCA4NSwgMTk2LCA0NSwgNjcsIAorICAgIDcyLCA2NSwgMjEwLCA0NSwgNjcsIDcyLCA2NSwgNzYsIDEyOCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgaW50IGxleGljb25fb2Zmc2V0W10gPSB7Ci0gICAgMCwgMCwgNiwgMTAsIDE4LCAyMywgMjcsIDM0LCAzOSwgNDEsIDQ3LCA1MCwgNjIsIDcwLCA4MCwgOTMsIDEwMiwgMTA4LCAKLSAgICAxMTMsIDEyMSwgMTMwLCAxMzUsIDE0MCwgMTQzLCAxNDcsIDE1MywgMTU4LCAxNjMsIDE3MSwgMTc4LCAxODYsIDE5MSwgCi0gICAgMTk0LCAyMDAsIDIwOCwgMjE1LCAyMjUsIDIzMCwgMjM3LCAyNDYsIDI0OSwgMjU0LCAyNTcsIDI2MywgMjY3LCAyNzIsIAotICAgIDI4MSwgMjg4LCAyOTUsIDMwMSwgMzEwLCAzMTUsIDMyMSwgMzI3LCAzMzUsIDE0NCwgMzQxLCAzNDksIDM1MCwgMzU4LCAKLSAgICAzNjEsIDM2NywgMzY5LCAzNzUsIDM4MiwgMzg0LCAzOTEsIDM5NSwgNDAzLCA0MTAsIDQxMiwgNDE3LCA0MjIsIDQyNywgCi0gICAgNDM0LCA0MzYsIDI5OSwgNDQyLCA0NDUsIDQ0NywgNDUyLCA0NTcsIDQ2MywgNDcwLCA0NzksIDQ4OSwgNDk0LCA0OTgsIAotICAgIDUwNSwgNTE4LCA1MjIsIDUzMSwgNTM4LCA1NDUsIDU0OCwgNTU0LCA1NTgsIDU2MiwgNTcyLCA1ODAsIDU4OCwgNTk2LCAKLSAgICA2MDUsIDYxMywgNjE4LCA2MTksIDYyMywgNjMxLCA2MzgsIDY0OCwgNjUyLCA2NjMsIDY2NywgNjcwLCA2NzMsIDY3OCwgCi0gICAgMzQ4LCA2ODIsIDY5MSwgNjk3LCA3MDMsIDcwNSwgNzA4LCA3MTEsIDcxNCwgNzE4LCA3MjIsIDczMSwgNzM5LCA3NDQsIAotICAgIDc0NywgNzUxLCA3NTcsIDc2NCwgNzcxLCA3NzYsIDc4NSwgNzk0LCA4MDEsIDgwNSwgODE4LCA4MjcsIDgzNSwgODQxLCAKLSAgICA1NTcsIDg1MCwgODYwLCA4NjcsIDg3MywgODc5LCA4ODYsIDg5NCwgODk4LCA3NDksIDkwNiwgOTE1LCA1MDMsIDkyMywgCi0gICAgOTI4LCA5MzQsIDE3LCA5NDMsIDk0OCwgOTUxLCA5NTUsIDk1OSwgOTY2LCA5NjksIDk3NiwgOTgwLCA5ODgsIDk5MiwgCi0gICAgMTAwMCwgMTAwNCwgMTAwNywgMTAxNCwgMTAyMSwgMTkyLCAxMDI0LCAxMDI5LCAxMDM5LCAxMDQ4LCAxMDU1LCAxMDYwLCAKLSAgICAxMDY2LCAxMDcyLCAxMDgwLCAxMDgzLCAxMDg4LCAxMDk0LCAxMTAyLCAxMTA3LCAxMTEwLCAxMTEzLCAxMTEsIDExMTgsIAotICAgIDExMjIsIDExMjgsIDExMzQsIDExMzcsIDExNDMsIDExNDcsIDExNTIsIDExNTgsIDExNjgsIDExNzIsIDExNzUsIDExNzgsIAotICAgIDExODcsIDExOTEsIDExOTQsIDExOTksIDEyMDQsIDEyMTAsIDEyMTUsIDEyMjAsIDEyMjUsIDEyMjksIDEyMzQsIDEyNDAsIAotICAgIDEyNDUsIDEyNTAsIDEyNTQsIDEyNjAsIDEyNjUsIDEyNzAsIDEyNzUsIDEyNzksIDEyODQsIDEyODksIDEyOTQsIDEzMDAsIAotICAgIDEzMDYsIDEzMTIsIDEzMTcsIDEzMjEsIDEzMjYsIDEzMzEsIDEzMzYsIDEzNDAsIDEzNDUsIDEzNTAsIDEzNTUsIDEzNjAsIAotICAgIDExOTUsIDEyMDAsIDEyMDUsIDEyMTEsIDEyMTYsIDEzNjQsIDEyMjYsIDEzNzAsIDEzNzUsIDEzODAsIDEzODcsIDEzOTEsIAotICAgIDE0MDAsIDEyMzAsIDE0MDQsIDEyMzUsIDEyNDEsIDEyNDYsIDE0MDgsIDE0MTMsIDE0MTgsIDE0MjIsIDE0MjYsIDE0MzIsIAotICAgIDE0MzYsIDEyNTEsIDE0MzksIDEyNjEsIDE0NDQsIDE0NDgsIDEyNjYsIDE0NTQsIDEyNzEsIDE0NTgsIDE0NjIsIDEyNzYsIAotICAgIDE0NjYsIDE0NzEsIDE0NzUsIDE0NzgsIDE0ODIsIDEyODAsIDEyODUsIDE0ODcsIDEyOTAsIDE0OTMsIDE0OTksIDE1MDUsIAotICAgIDE1MTEsIDEyOTUsIDEzMDcsIDEzMTMsIDE1MTUsIDE1MTksIDE1MjMsIDE1MjYsIDEzMTgsIDE1MzAsIDE1MzIsIDE1MzcsIAotICAgIDE1NDIsIDE1NDgsIDE1NTMsIDE1NTgsIDE1NjIsIDE1NjcsIDE1NzIsIDE1NzcsIDE1ODIsIDE1ODgsIDE1OTMsIDE1OTgsIAotICAgIDE2MDQsIDE2MTAsIDE2MTUsIDE2MTksIDE2MjQsIDE2MjksIDE2MzQsIDE2MzksIDE2NDMsIDE2NTEsIDE2NTUsIDE2NjAsIAotICAgIDE2NjUsIDE2NzAsIDE2NzUsIDE2NzksIDE2ODIsIDE2ODcsIDE2OTIsIDE2OTcsIDE3MDIsIDE3MDgsIDE3MTMsIDE3MTcsIAotICAgIDEzMjIsIDE3MjAsIDE3MjUsIDE3MzAsIDEzMjcsIDE3MzQsIDE3MzgsIDE3NDUsIDEzMzIsIDE3NTIsIDEzMzcsIDE3NTYsIAotICAgIDE3NTgsIDE3NjMsIDE3NjksIDEzNDEsIDE3NzQsIDE3ODMsIDEzNDYsIDE3ODgsIDE3OTQsIDEzNTEsIDE3OTksIDE4MDQsIAotICAgIDE4MDcsIDE4MTIsIDE4MTYsIDE4MjAsIDE4MjQsIDE4MjcsIDE4MzEsIDEzNTYsIDEzNjEsIDEwNTgsIDE4MzYsIDE4NDIsIAotICAgIDE4NDgsIDE4NTQsIDE4NjAsIDE4NjYsIDE4NzIsIDE4NzgsIDE4ODQsIDE4ODksIDE4OTUsIDE5MDEsIDE5MDcsIDE5MTMsIAotICAgIDE5MTksIDE5MjUsIDE5MzEsIDE5MzcsIDE5NDMsIDE5NDgsIDE5NTMsIDE5NTgsIDE5NjMsIDE5NjgsIDE5NzMsIDE5NzgsIAotICAgIDE5ODMsIDE5ODgsIDE5OTMsIDE5OTksIDIwMDQsIDIwMTAsIDIwMTUsIDIwMjEsIDIwMjcsIDIwMzIsIDIwMzgsIDIwNDQsIAotICAgIDIwNTAsIDIwNTYsIDIwNjEsIDIwNjYsIDIwNjgsIDIwNjksIDIwNzMsIDIwNzcsIDIwODIsIDIwODYsIDIwOTAsIDIwOTQsIAotICAgIDIwOTksIDIxMDMsIDIxMDYsIDIxMTEsIDIxMTUsIDIxMjAsIDIxMjQsIDIxMjgsIDIxMzMsIDIxMzcsIDIxNDAsIDIxNDQsIAotICAgIDIxNTAsIDIxNjQsIDIxNjgsIDIxNzIsIDIxNzYsIDIxNzksIDIxODQsIDIxODgsIDIxOTIsIDIxOTUsIDIxOTksIDIyMDQsIAotICAgIDIyMDksIDIyMTQsIDIyMTksIDIyMjMsIDIyMjcsIDIyMzEsIDIyMzYsIDIyNDAsIDIyNDUsIDIyNDksIDIyNTQsIDIyNjAsIAotICAgIDIyNjcsIDIyNzMsIDIyNzgsIDIyODMsIDIyODgsIDIyOTQsIDIyOTksIDIzMDUsIDIzMTAsIDIzMTMsIDEyMTIsIDIzMTUsIAotICAgIDIzMjIsIDIzMzAsIDIzNDAsIDIzNDksIDIzNjMsIDIzNjcsIDIzNzEsIDIzODQsIDIzOTIsIDIzOTYsIDI0MDEsIDI0MDUsIAotICAgIDI0MDgsIDI0MTIsIDI0MTYsIDI0MjEsIDI0MjYsIDI0MzEsIDI0MzUsIDI0MzgsIDI0NDIsIDI0NDksIDI0NTYsIDI0NjIsIAotICAgIDI0NjcsIDI0NzIsIDI0NzgsIDI0ODQsIDI0ODksIDI0OTIsIDE3NjAsIDI0OTQsIDI1MDAsIDI1MDQsIDI1MDksIDI1MTMsIAotICAgIDI1MTcsIDE3NjUsIDE3NzEsIDI1MjIsIDI1MjYsIDI1MjksIDI1MzQsIDI1MzksIDI1NDQsIDI1NDksIDI1NTMsIDI1NjAsIAotICAgIDI1NjUsIDI1NjgsIDI1NzUsIDI1ODEsIDI1ODUsIDI1ODksIDI1OTMsIDI1OTgsIDI2MDUsIDI2MTAsIDI2MTUsIDI2MjIsIAotICAgIDI2MjgsIDI2MzQsIDI2NDAsIDI2NTQsIDI2NzEsIDI2ODYsIDI3MDEsIDI3MTAsIDI3MTUsIDI3MTksIDI3MjQsIDI3MjksIAotICAgIDI3MzMsIDI3NDUsIDI3NTIsIDI3NTgsIDIyNjMsIDI3NjQsIDI3NzEsIDI3NzcsIDI3ODEsIDI3ODQsIDI3OTEsIDI3OTcsIAotICAgIDI4MDEsIDI4MDUsIDI4MDksIDIwOTEsIDI4MTMsIDI4MTgsIDI4MjMsIDI4MjcsIDI4MzUsIDI4MzksIDI4NDMsIDI4NDcsIAotICAgIDI4NTEsIDI4NTYsIDI4NjEsIDI4NjYsIDI4NzAsIDI4NzUsIDI4ODAsIDI4ODQsIDI4ODksIDI4OTMsIDI4OTYsIDI5MDAsIAotICAgIDI5MDQsIDI5MTIsIDI5MTcsIDI5MjEsIDI5MjUsIDI5MzEsIDI5NDAsIDI5NDQsIDI5NDgsIDI5NTQsIDI5NTksIDI5NjYsIAotICAgIDI5NzAsIDI5ODAsIDI5ODQsIDI5ODgsIDI5OTMsIDI5OTcsIDMwMDIsIDMwMDgsIDMwMTMsIDMwMTcsIDMwMjEsIDMwMjUsIAotICAgIDI0NTIsIDMwMzMsIDMwMzgsIDMwNDQsIDMwNDksIDMwNTMsIDMwNTgsIDMwNjMsIDMwNjcsIDMwNzMsIDMwNzgsIDIwOTUsIAotICAgIDMwODQsIDMwOTAsIDMwOTUsIDMxMDAsIDMxMDUsIDMxMTAsIDMxMTUsIDMxMjAsIDMxMjUsIDMxMzAsIDMxMzUsIDMxNDEsIAotICAgIDMxNDYsIDEyMjcsIDkyLCAzMTUyLCAzMTU2LCAzMTYwLCAzMTY0LCAzMTY5LCAzMTczLCAzMTc3LCAzMTgxLCAzMTg1LCAKLSAgICAzMTkwLCAzMTk0LCAzMTk5LCAzMjAzLCAzMjA2LCAzMjEwLCAzMjE1LCAzMjE5LCAzMjI0LCAzMjI4LCAzMjMyLCAzMjM2LCAKLSAgICAzMjQxLCAzMjQ1LCAzMjQ4LCAzMjYxLCAzMjY1LCAzMjY5LCAzMjczLCAzMjc3LCAzMjgxLCAzMjg0LCAzMjg4LCAzMjkyLCAKLSAgICAzMjk3LCAzMzAxLCAzMzA2LCAzMzExLCAzMzE2LCAzMzIwLCAzMzIzLCAzMzI2LCAzMzMyLCAzMzM2LCAzMzQwLCAzMzQzLCAKLSAgICAzMzQ3LCAzMzUxLCAzMzU0LCAzMzYwLCAzMzY1LCAzMzcwLCAzMzc2LCAzMzgxLCAzMzg2LCAzMzkyLCAzMzk4LCAzNDAzLCAKLSAgICAzNDA4LCAzNDEzLCAxMTIwLCA1NDcsIDM0MTgsIDM0MjEsIDM0MjYsIDM0MzAsIDM0MzMsIDM0MzcsIDM0NDIsIDM0NDcsIAotICAgIDM0NTEsIDM0NTYsIDM0NjAsIDM0NjUsIDM0NjksIDM0NzMsIDM0NzksIDM0ODUsIDM0ODgsIDM0OTEsIDM0OTcsIDM1MDQsIAotICAgIDM1MTEsIDM1MTcsIDM1MjQsIDM1MjksIDM1MzMsIDM1NDAsIDM1NDcsIDM1NTIsIDM1NTYsIDM1NjYsIDM1NzAsIDM1NzQsIAotICAgIDM1NzksIDM1ODQsIDM1OTQsIDIxMDcsIDM1OTksIDM2MDMsIDM2MDYsIDM2MTIsIDM2MTcsIDM2MjMsIDM2MjksIDM2MzQsIAotICAgIDM2NDEsIDM2NDUsIDM2NDksIDYyMCwgNjcxLCAxMzg4LCAzNjUzLCAzNjYwLCAzNjY3LCAzNjc0LCAzNjgxLCAzNjg3LCAKLSAgICAzNjkzLCAzNjk4LCAzNzAyLCAzNzA4LCAzNzEzLCAzNzE3LCAyMTE2LCAzNzIxLCAzNzI5LCA2MDAsIDM3MzUsIDM3NDYsIAotICAgIDM3NTAsIDM3NjAsIDIxMjEsIDM3NjYsIDM3NzEsIDM3ODYsIDM3OTIsIDM3OTksIDM4MDksIDM4MTUsIDM4MjAsIDM4MjYsIAotICAgIDM4MzIsIDM4MzUsIDM4MzksIDM4NDQsIDM4NTEsIDM4NTYsIDM4NjAsIDM4NjQsIDM4NjgsIDM4NzIsIDM4NzcsIDM4ODMsIAotICAgIDM4OTQsIDMyMTEsIDM4OTksIDM5MTEsIDM5MTksIDM5MjQsIDE1NjQsIDM5MzEsIDM5MzQsIDM5MzcsIDM5NDEsIDM5NDQsIAotICAgIDM5NTAsIDM5NTQsIDM5NjgsIDM5NzIsIDM5NzUsIDM5NzksIDM5ODUsIDM5OTEsIDM5OTYsIDQwMDAsIDQwMDQsIDQwMTAsIAotICAgIDQwMjEsIDQwMjcsIDQwMzIsIDQwMzgsIDQwNDIsIDQwNTAsIDQwNjAsIDQwNjYsIDQwNzEsIDQwODAsIDQwODgsIDQwOTUsIAotICAgIDQwOTksIDQxMDUsIDQxMTQsIDQxMjMsIDQxMjcsIDQxMzIsIDQxMzcsIDQxNDEsIDQxNDksIDQxNTMsIDQxNTgsIDQxNjIsIAotICAgIDIxMjksIDE0MDEsIDQxNjgsIDQxNzMsIDQxNzksIDQxODQsIDQxODksIDQxOTQsIDQxOTksIDQyMDQsIDQyMDksIDQyMTUsIAotICAgIDQyMjAsIDQyMjYsIDQyMzEsIDQyMzYsIDQyNDEsIDQyNDcsIDQyNTIsIDQyNTcsIDQyNjIsIDQyNjcsIDQyNzMsIDQyNzgsIAotICAgIDQyODQsIDQyODksIDQyOTQsIDQyOTksIDQzMDQsIDQzMDksIDQzMTQsIDQzMjAsIDQzMjUsIDQzMzAsIDMxOSwgNDU2LCAKLSAgICA0MzM1LCA0MzQxLCA0MzQ1LCA0MzQ5LCA0MzU0LCA0MzU4LCA0MzYyLCA0MzY1LCA0MzY5LCA0MzczLCA0Mzc3LCA0MzgxLCAKLSAgICA0Mzg2LCA0MzkwLCA0Mzk0LCA0NDAwLCA0MTY1LCA0NDA1LCA0NDA5LCA0NDEyLCA0NDE3LCA0NDIyLCA0NDI3LCA0NDMyLCAKLSAgICA0NDM3LCA0NDQyLCA0NDQ3LCA0NDUyLCA0NDU3LCA0NDYyLCA0NDY2LCA0NDcxLCA0NDc2LCA0NDgxLCA0NDg2LCA0NDkxLCAKLSAgICA0NDk2LCA0NTAxLCA0NTA2LCA0NTExLCA0NTE2LCA0NTIwLCA0NTI1LCA0NTMwLCA0NTM1LCA0NTQwLCA0NTQ1LCA0NTUwLCAKLSAgICA0NTU1LCA0NTYwLCA0NTY1LCA0NTcwLCA0NTc0LCA0NTc5LCA0NTg0LCA0NTg5LCA0NTk0LCA0NTk5LCA0NjA0LCA0NjA5LCAKLSAgICA0NjE0LCA0NjE5LCA0NjI0LCA0NjI4LCA0NjMzLCA0NjM4LCA0NjQzLCA0NjQ4LCA0NjUzLCA0NjU4LCA0NjYzLCA0NjY4LCAKLSAgICA0NjczLCA0Njc4LCA0NjgyLCA0Njg3LCA0NjkyLCA0Njk3LCA0NzAyLCA0NzA3LCA0NzEyLCA0NzE3LCA0NzIyLCA0NzI3LCAKLSAgICA0NzMyLCA0NzM2LCA0NzQxLCA0NzQ2LCA0NzUxLCA0NzU2LCA0NzYxLCA0NzY2LCA0NzcxLCA0Nzc2LCA0NzgxLCA0Nzg2LCAKLSAgICA0NzkwLCA0Nzk1LCA0ODAwLCA0ODA1LCA0ODEwLCA0ODE2LCA0ODIyLCA0ODI4LCA0ODM0LCA0ODQwLCA0ODQ2LCA0ODUyLCAKLSAgICA0ODU3LCA0ODYzLCA0ODY5LCA0ODc1LCA0ODgxLCA0ODg3LCA0ODkzLCA0ODk5LCA0OTA1LCA0OTExLCA0OTE3LCA0OTIyLCAKLSAgICA0OTI4LCA0OTM0LCA0OTQwLCA0OTQ2LCA0OTUyLCA0OTU4LCA0OTY0LCA0OTcwLCA0OTc2LCA0OTgyLCA0OTg3LCA0OTkzLCAKLSAgICA0OTk5LCA1MDA1LCA1MDExLCA1MDE3LCA1MDIzLCA1MDI5LCA1MDM1LCA1MDQxLCA1MDQ3LCA1MDUyLCA1MDU4LCA1MDY0LCAKLSAgICA1MDcwLCA1MDc2LCA1MDgyLCA1MDg4LCA1MDk0LCA1MTAwLCA1MTA2LCA1MTEyLCA1MTE3LCA1MTIzLCA1MTI5LCA1MTM1LCAKLSAgICA1MTQxLCA1MTQ3LCA1MTUzLCA1MTU5LCA1MTY1LCA1MTcxLCA1MTc3LCA1MTgyLCA1MTg2LCA1MTkyLCA1MTk4LCA1MjA0LCAKLSAgICA1MjEwLCA1MjE2LCA1MjIyLCA1MjI4LCA1MjM0LCA1MjQwLCA1MjQ2LCA1MjUxLCA1MjU3LCA1MjYzLCA1MjY5LCA1Mjc1LCAKLSAgICA1MjgxLCA1Mjg3LCA1MjkzLCA1Mjk5LCA1MzA1LCA1MzExLCA1MzE2LCA1MzIyLCA1MzI4LCA1MzM0LCA1MzQwLCA1MzQ2LCAKLSAgICA1MzUyLCA1MzU4LCA1MzY0LCA1MzcwLCA1Mzc2LCA1MzgxLCA1Mzg3LCA1MzkzLCA1Mzk5LCA1NDA1LCA1NDExLCA1NDE3LCAKLSAgICA1NDIzLCA1NDI5LCA1NDM1LCA1NDQxLCA1NDQ2LCA1NDUyLCA1NDU4LCA1NDY0LCA1NDcwLCA1NDc2LCA1NDgyLCA1NDg4LCAKLSAgICA1NDk0LCA1NTAwLCA1NTA2LCA1NTExLCA1NTE3LCA1NTIzLCA1NTI5LCA1NTM1LCA1NTQxLCA1NTQ3LCA1NTUzLCA1NTU5LCAKLSAgICA1NTY1LCA1NTcxLCA1NTc2LCA1NTgyLCA1NTg4LCA1NTk0LCA1NjAwLCA1NjA2LCA1NjEyLCA1NjE4LCA1NjI0LCA1NjMwLCAKLSAgICA1NjM2LCA1NjQxLCA1NjQ3LCA1NjUzLCA1NjU5LCA1NjY1LCA1NjcxLCA1Njc3LCA1NjgzLCA1Njg5LCA1Njk1LCA1NzAxLCAKLSAgICA1NzA2LCA1NzEyLCA1NzE4LCA1NzI0LCA1NzMwLCA1NzM2LCA1NzQyLCA1NzQ4LCA1NzU0LCA1NzYwLCA1NzY2LCA1NzcxLCAKLSAgICA1Nzc3LCA1NzgzLCA1Nzg5LCA1Nzk1LCA1ODAxLCA1ODA3LCA1ODEzLCA1ODE5LCA1ODI1LCA1ODMxLCA1ODM2LCA1ODQwLCAKLSAgICA1ODQzLCA1ODUwLCA1ODU0LCA1ODY3LCA1ODcxLCA1ODc1LCA1ODc5LCA1ODgzLCA1ODg3LCA1ODkxLCA1ODk3LCA1OTA0LCAKLSAgICA1OTEyLCA1OTE2LCA1OTI0LCA1OTMzLCA1OTM5LCA1OTUxLCA1OTU2LCA1OTU5LCA1OTYzLCA1OTczLCA1OTgxLCA1OTg5LCAKLSAgICA1OTk1LCA1OTk5LCA2MDA5LCA2MDE5LCA2MDI3LCA2MDM0LCA2MDQxLCA2MDQ3LCA2MDUzLCA2MDYwLCA2MDY0LCA2MDcxLCAKLSAgICA2MDgxLCA2MDkxLCA2MDk5LCA2MTA2LCA2MTExLCA2MTE1LCA2MTIzLCA2MTI3LCA2MTMyLCA2MTM5LCA2MTQ3LCA2MTUyLCAKLSAgICA2MTU3LCA2MTYxLCA2MTY4LCA2MTczLCA2MTg3LCA2MTkyLCA2MTk3LCA2MjA0LCA2MjEzLCA2MjE2LCA2MjIwLCA2MjI0LCAKLSAgICA2MjI4LCA2MjMxLCA2MjM2LCA2MjQxLCA2MjUwLCA2MjU2LCA2MjYyLCA2MjY4LCA2MjcyLCA2MjgzLCA2MjkzLCA2MzA4LCAKLSAgICA2MzIzLCA2MzM4LCA2MzUzLCA2MzY4LCA2MzgzLCA2Mzk4LCA2NDEzLCA2NDI4LCA2NDQzLCA2NDU4LCA2NDczLCA2NDg4LCAKLSAgICA2NTAzLCA2NTE4LCA2NTMzLCA2NTQ4LCA2NTYzLCA2NTc4LCA2NTkzLCA2NjA4LCA2NjIzLCA2NjM4LCA2NjUzLCA2NjY4LCAKLSAgICA2NjgzLCA2Njk4LCA2NzEzLCA2NzI4LCA2NzQzLCA2NzU4LCA2NzczLCA2Nzg4LCA2ODAzLCA2ODE4LCA2ODMzLCA2ODQ4LCAKLSAgICA2ODYzLCA2ODc4LCA2ODkzLCA2OTA4LCA2OTIzLCA2OTM4LCA2OTUzLCA2OTY4LCA2OTgzLCA2OTk4LCA3MDEzLCA3MDI4LCAKLSAgICA3MDM3LCA3MDQ2LCA3MDUxLCA3MDU3LCA3MDY3LCA3MDcxLCA3MDc2LCA3MDgxLCA3MDg5LCA3MDkzLCA3MDk2LCA3MTAwLCAKLSAgICAyOTc1LCA3MTAzLCA3MTA4LCAyOTgsIDQyNSwgNzExNCwgNzEyMiwgNzEyNiwgNzEzMCwgNzEzMywgNzEzNywgNzE0MywgCi0gICAgNzE0NywgNzE1NSwgNzE2MSwgNzE2NiwgNzE3MywgNzE4MCwgNzE4NiwgNzE5MSwgNzE5OCwgNzIwNCwgNzIxMiwgNzIxNiwgCi0gICAgNzIyMSwgNzIzMywgNzI0NCwgNzI1MSwgNzI1NSwgNzI1OSwgNzI2NSwgMzIzMywgNzI2OSwgNzI3NSwgNzI4MCwgNzI4NSwgCi0gICAgNzI5MCwgNzI5NiwgNzMwMSwgNzMwNiwgNzMxMSwgNzMxNiwgNzMyMiwgNzMyNywgNzMzMiwgNzMzOCwgNzM0MywgNzM0OSwgCi0gICAgNzM1NCwgNzM2MCwgNzM2NSwgNzM3MSwgNzM3NiwgNzM4MSwgNzM4NiwgNzM5MSwgNzM5NiwgNzQwMiwgNzQwNywgNzQxMiwgCi0gICAgNzQxNywgNzQyMywgNzQyOSwgNzQzNSwgNzQ0MSwgNzQ0NywgNzQ1MywgNzQ1OSwgNzQ2NSwgNzQ3MSwgNzQ3NywgNzQ4MywgCi0gICAgNzQ4OSwgNzQ5NCwgNzQ5OSwgNzUwNCwgNzUwOSwgNzUxNCwgNzUxOSwgNzUyNCwgNzUyOSwgNzUzNSwgNzU0MSwgNzU0NiwgCi0gICAgNzU1MiwgNzU1OCwgNzU2NCwgNzU2OSwgNzU3NCwgNzU3OSwgNzU4NCwgNzU5MCwgNzU5NiwgNzYwMSwgNzYwNiwgNzYxMSwgCi0gICAgNzYxNiwgNzYyMSwgNzYyNywgNzYzMiwgNzYzOCwgNzY0NCwgNzY1MCwgNzY1NiwgNzY2MiwgNzY2OCwgNzY3NCwgNzY4MCwgCi0gICAgNzY4NiwgMjEzOCwgNzEzMiwgNzY5MSwgNzY5NSwgNzY5OSwgNzcwMiwgNzcwOSwgNzcxMiwgNzcyMCwgNzcyNSwgNzczMCwgCi0gICAgNzcyMSwgNzczNSwgMjE2NSwgNzczOSwgNzc0NSwgNzc1MSwgNzc1NiwgNzc2MSwgNzc2OCwgNzc3NiwgNzc4MSwgNzc4NSwgCi0gICAgNzc4OCwgNzc5MiwgNzc5OCwgNzgwNCwgNzgwOCwgMjE3MywgNTYwLCA3ODExLCA3ODE1LCA3ODIwLCA3ODI2LCA3ODMxLCAKLSAgICA3ODM1LCA3ODM4LCA3ODQyLCA3ODQ4LCA3ODUzLCA3ODU3LCA3ODY0LCA3ODY4LCA3ODcyLCA3ODc2LCA5NDUsIDc2OSwgCi0gICAgNzg3OSwgNzg4NywgNzg5NCwgNzkwMSwgNzkwNywgNzkxNCwgNzkyMiwgNzkyOSwgNzkzNiwgNzk0MSwgNzk1MywgMTI0NywgCi0gICAgMTQwOSwgMTQxNCwgNzk2NCwgMTQxOSwgNzk2OCwgNzk3MiwgNzk4MSwgNzk4OSwgNzk5OCwgODAwNCwgODAwOSwgODAxMywgCi0gICAgODAxOSwgODAyNCwgMjcwNiwgODAzMSwgODAzNSwgODA0NCwgODA1MywgODA2MiwgODA3MSwgODA3NiwgODA4MSwgODA5MywgCi0gICAgODA5OCwgODEwNiwgMjIyNCwgODExMCwgODExMiwgODExNywgODEyMSwgODEzMCwgODEzOCwgMTQyMywgMTMzLCAzNDYxLCAKLSAgICAzNDY2LCA4MTQ0LCA4MTQ4LCA4MTU3LCA4MTYzLCA4MTY4LCA4MTcxLCA4MTgwLCAyNjk4LCA4MTg2LCA4MTk0LCA4MTk4LCAKLSAgICA4MjAyLCA4MjA2LCAyMjM3LCA4MjEwLCA4MjE1LCA4MjIyLCA4MjI4LCA4MjM0LCA4MjM3LCA4MjM5LCA4MjQyLCA4MjUwLCAKLSAgICA4MjU4LCA4MjY2LCA4MjY5LCA4Mjc0LCAyMjUwLCA4Mjc5LCA3NzMyLCA4MjgyLCA4Mjg0LCA4Mjg5LCA4Mjk0LCA4Mjk5LCAKLSAgICA4MzA0LCA4MzA5LCA4MzE0LCA4MzE5LCA4MzI0LCA4MzI5LCA4MzM0LCA4MzQwLCA4MzQ1LCA4MzUwLCA4MzU1LCA4MzYxLCAKLSAgICA4MzY2LCA4MzcxLCA4Mzc2LCA4MzgxLCA4Mzg2LCA4MzkxLCA4Mzk3LCA4NDAyLCA4NDA3LCA4NDEyLCA4NDE3LCA4NDIyLCAKLSAgICA4NDI3LCA4NDMyLCA4NDM3LCA4NDQyLCA4NDQ3LCA4NDUyLCA4NDU3LCA4NDYyLCA4NDY3LCA4NDcyLCA4NDc3LCA4NDgyLCAKLSAgICA4NDg4LCA4NDk0LCA4NDk5LCA4NTA0LCA4NTA5LCA4NTE0LCA4NTE5LCAyMjYxLCAyMjY4LCAyMjc0LCA4NTI0LCA4NTMwLCAKLSAgICA4NTM4LCAyMzAwLCAyMzA2LCA4NTQ2LCA4NTUwLCA4NTU1LCA4NTU5LCA4NTYzLCA4NTY3LCA4NTcyLCA4NTc2LCA4NTgxLCAKLSAgICA4NTg1LCA4NTg4LCA4NTkxLCA4NTk3LCA4NjAzLCA4NjA5LCA4NjE1LCA4NjIxLCA4NjI3LCA4NjMzLCA4NjM3LCA4NjQxLCAKLSAgICA4NjQ1LCA4NjQ5LCA4NjUzLCA4NjU4LCA4NjY1LCA4Njc2LCA4Njg0LCA4Njk0LCA4NzAwLCA4NzA3LCA4NzEyLCA4NzE2LCAKLSAgICA4NzI3LCA4NzQwLCA4NzUxLCA4NzY0LCA4Nzc1LCA4Nzg3LCA4Nzk5LCA4ODExLCA4ODI0LCA4ODM3LCA4ODQ0LCA4ODUwLCAKLSAgICA4ODY0LCA4ODcxLCA4ODc3LCA4ODgxLCA4ODg2LCA4ODkwLCA4ODk3LCA4OTA1LCA4OTA5LCA4OTE1LCA4OTE5LCA4OTI1LCAKLSAgICA4OTM1LCA4OTM5LCA4OTQ0LCA4OTQ5LCA4OTU2LCA4OTYyLCA4OTcyLCA3OTA5LCA4OTc4LCA4OTgyLCA4OTg5LCA4OTk2LCAKLSAgICA3NjgsIDkwMDAsIDkwMDQsIDkwMDksIDkwMTQsIDkwMTksIDkwMjMsIDkwMjksIDkwMzcsIDkwNDMsIDkwNDcsIDkwNTMsIAotICAgIDkwNjMsIDkwNjcsIDkwNzMsIDkwNzgsIDkwODIsIDkwODgsIDkwOTQsIDIxNjEsIDkwOTksIDkxMDEsIDkxMDYsIDkxMTQsIAotICAgIDkxMjMsIDkxMjcsIDkxMzMsIDkxMzgsIDkxNDMsIDkxNDgsIDkxNTMsIDkxNTksIDkxNjQsIDkxNjksIDQwMDYsIDkxNzQsIAotICAgIDkxNzksIDkxODMsIDkxODksIDkxOTQsIDkyMDAsIDkyMDUsIDkyMTAsIDkyMTYsIDkyMjEsIDkxMjgsIDkyMjcsIDkyMzEsIAotICAgIDkyMzgsIDkyNDQsIDkyNDksIDkyNTMsIDYxODMsIDkyNTgsIDkyNjcsIDkyNzIsIDkyNzcsIDgyMTgsIDgyMjUsIDkyODIsIAotICAgIDI4NTMsIDkyODYsIDkyOTEsIDkyOTYsIDkxMzksIDkzMDAsIDkzMDUsIDkxNDQsIDkxNDksIDkzMTAsIDkzMTcsIDkzMjQsIAotICAgIDkzMzAsIDkzMzYsIDkzNDIsIDkzNDcsIDkzNTIsIDkzNTcsIDkxNTQsIDkxNjAsIDkzNjMsIDkzNjksIDkzNzQsIDkzODIsIAotICAgIDkxNjUsIDkzODcsIDk5MCwgOTM5MCwgOTM5OCwgOTQwNCwgOTQxMCwgOTQxOSwgOTQyNywgOTQzMiwgOTQzOCwgOTQ0NiwgCi0gICAgOTQ1MywgOTQ2OCwgOTQ4NSwgOTUwNCwgOTUxMywgOTUyMSwgOTUzNiwgOTU0NywgOTU1NywgOTU2NywgOTU3NSwgOTU4MSwgCi0gICAgOTU5MywgOTYwMiwgOTYxMCwgOTYxNywgOTYyNCwgOTYzMCwgOTYzNSwgOTY0MywgOTY1MywgOTY2MCwgOTY3MCwgOTY4MCwgCi0gICAgOTY5MCwgOTY5OCwgOTcwNSwgOTcxNCwgOTcyNCwgOTczOCwgOTc1MywgOTc2MiwgOTc3MCwgOTc3NSwgOTc3OSwgOTc4OCwgCi0gICAgOTc5NCwgOTc5OSwgOTgwOSwgOTgxOSwgOTgyOSwgOTgzNCwgOTgzOCwgOTg0NywgOTg1MiwgOTg2MiwgOTg3MywgOTg4NiwgCi0gICAgOTg5NCwgOTkwNywgOTkxOSwgOTkyNywgOTkzMiwgOTkzNiwgOTk0MiwgOTk0NywgOTk1NSwgOTk2MywgOTk3MCwgOTk3NSwgCi0gICAgOTk4MywgOTk4OSwgOTk5MiwgOTk5NiwgMTAwMDIsIDEwMDEwLCAxMDAxNSwgMTAwMTksIDEwMDI3LCAxMDAzNiwgMTAwNDQsIAotICAgIDEwMDUwLCAxMDA1NCwgMTAwNjEsIDEwMDcyLCAxMDA3NiwgMTAwNzksIDEwMDg1LCA5MTcwLCAxMDA5MCwgMTAwOTYsIAotICAgIDEwMTAzLCAxMDEwOSwgMTAxMTQsIDEwMTIxLCAxMDEyOCwgMTAxMzUsIDEwMTQyLCAxMDE0OSwgMTAxNTYsIDEwMTYzLCAKLSAgICAxMDE3MCwgMTAxNzUsIDk0ODEsIDEwMTgwLCAxMDE4NiwgMTAxOTMsIDEwMjAwLCAxMDIwNSwgMTAyMTIsIDEwMjIxLCAKLSAgICAxMDIyNSwgMTAyMzcsIDgyNTYsIDEwMjQxLCAxMDI0NCwgMTAyNDgsIDEwMjUyLCAxMDI1NiwgMTAyNjAsIDEwMjY2LCAKLSAgICAxMDI3MiwgMTAyNzcsIDEwMjgzLCAxMDI4OCwgMTAyOTMsIDEwMjk5LCAxMDMwNCwgMTAzMDksIDg5NTIsIDEwMzE0LCAKLSAgICAxMDMxOCwgMTAzMjIsIDEwMzI2LCAxMDMzMSwgMTAzMzYsIDEwMzQ0LCAxMDM1MCwgMTAzNTQsIDEwMzU4LCAxMDM2NSwgCi0gICAgMTAzNzAsIDEwMzc4LCAxMDM4MywgMTAzODcsIDEwMzkwLCAxMDM5NiwgMTA0MDMsIDEwNDA3LCAxMDQxMCwgMTA0MTUsIAotICAgIDEwNDE5LCA0MDQ1LCAxMDQyNSwgMTA0MzQsIDM2LCAxMDQ0MiwgMTA0NDgsIDEwNDUzLCA4OTY3LCAxMDQ1OCwgMTA0NjMsIAotICAgIDEwNDY3LCAxMDQ3MCwgMTA0ODUsIDEwNTA0LCAxMDUxNiwgMTA1MjksIDEwNTQyLCAxMDU1NSwgMTA1NjksIDEwNTgyLCAKLSAgICAxMDU5NywgMTA2MDQsIDkxNzUsIDEwNjEwLCAxMDYyNCwgMTA2MjksIDEwNjM1LCAxMDY0MCwgMTA2NDgsIDEwNjUzLCAKLSAgICA4MDQwLCAxMDY1OCwgMTA2NjEsIDEwNjY4LCAxMDY3MywgMTA2NzcsIDI4NTgsIDk5OCwgMTA2ODMsIDEwNjg3LCAxMDY5MywgCi0gICAgMTA2OTksIDEwNzA0LCAxMDcxMCwgMTA3MTUsIDkxODQsIDEwNzIxLCAxMDcyNywgMTA3MzIsIDEwNzM3LCAxMDc0NSwgCi0gICAgMTA3NTEsIDEwNzY0LCAxMDc3MiwgMTA3NzksIDkxOTAsIDEwNzg1LCAxMDc5MywgMTA4MDEsIDEwODA4LCAxMDgyMSwgCi0gICAgMTA4MzMsIDEwODQzLCAxMDg1MSwgMTA4NTgsIDEwODY1LCAxMDg3NCwgMTA4ODMsIDEwODkxLCAxMDg5OCwgMTA5MDMsIAotICAgIDEwOTA5LCA5MTk1LCAxMDkxNCwgMTA5MjAsIDkyMDEsIDEwOTI1LCAxMDkyOCwgMTA5MzUsIDEwOTQxLCAxMDk1NCwgODY2OSwgCi0gICAgMTA5NjUsIDEwOTcxLCAxMDk4MCwgMTA5ODgsIDEwOTk1LCAxMTAwMSwgMTEwMDcsIDExMDEyLCAxMTAxNiwgMTEwMjEsIAotICAgIDEwNDc3LCAxMTAyNywgOTIwNiwgMTEwMzQsIDExMDM5LCAxMTA0NiwgMTEwNTIsIDExMDU4LCAxMTA2MywgMTEwNzEsIAotICAgIDExMDc5LCAxMTA4NiwgMTEwOTAsIDExMTA0LCAxMTExNCwgMTExMTksIDExMTIzLCAxMTEzNCwgMTExNDAsIDExMTQ1LCAKLSAgICAxMTE1MCwgOTIxMSwgOTIxNywgMTExNTQsIDExMTU3LCAxMTE2MiwgMTExNzQsIDExMTgxLCAxMTE4NiwgMTExOTAsIAotICAgIDExMTk1LCAxMTE5OSwgMTEyMDYsIDExMjEyLCA5MjIyLCA5MTI5LCAxMTIxOSwgMjg2MywgOCwgMTEyMjYsIDExMjMxLCAKLSAgICAxMTIzNSwgMTEyNDEsIDExMjQ5LCAxMTI1OSwgMTEyNjQsIDExMjY5LCAxMTI3NiwgMTEyODMsIDExMjg3LCAxMTI5OCwgCi0gICAgMTEzMDgsIDExMzE3LCAxMTMyOSwgMTEzMzQsIDExMzM4LCAxMTM0NiwgMTEzNjAsIDExMzY0LCAxMTM2NywgMTEzNzUsIAotICAgIDExMzgyLCAxMTM5MCwgMTEzOTQsIDExNDA1LCAxMTQwOSwgMTE0MTYsIDExNDIxLCAxMTQyNSwgMTE0MzEsIDExNDM2LCAKLSAgICAxMTQ0MCwgMTE0NDYsIDExNDUxLCAxMTQ2MiwgMTE0NjYsIDExNDY5LCAxMTQ3NSwgMTE0ODAsIDExNDg2LCAxMTQ5MiwgCi0gICAgMTE0OTksIDExNTEwLCAxMTUyMCwgMTE1MzAsIDExNTM5LCAxMTU0NiwgMTE1NTUsIDkyMzIsIDkyMzksIDkyNDUsIDkyNTAsIAotICAgIDExNTYxLCAxMTU2NywgOTI1NCwgMTE1NzMsIDExNTc2LCAxMTU4MywgMTE1ODgsIDExNjAzLCAxMTYxOSwgMTE2MzQsIAotICAgIDExNjQyLCAxMTY0OCwgMTE2NTMsIDgzOCwgNDIwLCAxMTY1OCwgMTE2NjYsIDExNjczLCAxMTY3OSwgMTE2ODQsIDExNjg5LCAKLSAgICA5MjU5LCAxMTY5MSwgMTE2OTUsIDExNzAwLCAxMTcwNCwgMTE3MTQsIDExNzE5LCAxMTcyMywgMTE3MzIsIDExNzM2LCAKLSAgICAxMTczOSwgOTI2OCwgMTE3NDYsIDExNzQ5LCAxMTc1NywgMTE3NjQsIDExNzcyLCAxMTc3NiwgMTE3ODMsIDExNzkyLCAKLSAgICAxMTc5NSwgMTE3OTksIDExODAzLCAxMTgwOSwgMTE4MTMsIDExODE3LCAxMTgyMSwgMTE4MjcsIDExODM3LCAxMTg0MSwgCi0gICAgMTE4NDksIDExODUzLCAxMTg2MCwgMTE4NjQsIDExODY5LCAxMTg3MywgMTE4ODAsIDExODg2LCAxMTg5NCwgMTE5MDAsIAotICAgIDExOTA1LCAxMTkxNSwgMTE5MjAsIDExOTI1LCAxMTkyOSwgMTE5MzcsIDM5MDUsIDExOTQ1LCAxMTk1MCwgOTI3MywgCi0gICAgMTE5NTQsIDExOTU4LCAxMTk2MSwgMTE5NjksIDExOTc2LCAxMTk4MCwgNTk5MSwgMTE5ODQsIDExOTg5LCAxMTk5MywgCi0gICAgMTIwMDQsIDEyMDE0LCAxMjAxOSwgMTIwMjUsIDEyMDI5LCAxMjAzMiwgMTIwNDAsIDEyMDQ1LCAxMjA1MCwgMTIwNTcsIAotICAgIDEyMDYyLCA5Mjc4LCAxMjA2NywgMTIwNzEsIDEyMDc4LCAxNzIyLCA2MTQ1LCAxMjA4MywgMTIwODgsIDEyMDkzLCAxMjA5OCwgCi0gICAgMTIxMDQsIDEyMTA5LCAxMjExNSwgMTIxMjAsIDEyMTI1LCAxMjEzMCwgMTIxMzUsIDEyMTQwLCAxMjE0NSwgMTIxNTAsIAotICAgIDEyMTU1LCAxMjE2MCwgMTIxNjUsIDEyMTcwLCAxMjE3NSwgMTIxODAsIDEyMTg1LCAxMjE5MCwgMTIxOTUsIDEyMjAxLCAKLSAgICAxMjIwNiwgMTIyMTEsIDEyMjE2LCAxMjIyMSwgMTIyMjYsIDEyMjMyLCAxMjIzNywgMTIyNDIsIDEyMjQ4LCAxMjI1MywgCi0gICAgMTIyNTksIDEyMjY0LCAxMjI3MCwgMTIyNzUsIDEyMjgwLCAxMjI4NSwgMTIyOTAsIDEyMjk2LCAxMjMwMSwgMTIzMDYsIAotICAgIDEyMzExLCA3MzcsIDEzOSwgMTIzMTksIDEyMzIzLCAxMjMyOCwgMTIzMzMsIDEyMzM3LCAxMjM0MSwgMTIzNDUsIDEyMzUwLCAKLSAgICAxMjM1NCwgMTIzNTksIDEyMzYzLCAxMjM2NiwgMTIzNzAsIDEyMzc0LCAxMjM4MCwgMTIzODUsIDEyMzk1LCAxMjQwMSwgCi0gICAgMTI0MDksIDEyNDEzLCAxMjQxNywgMTI0MjQsIDEyNDMyLCAxMjQ0MSwgMTI0NTIsIDEyNDU5LCAxMjQ2NiwgMTI0NzAsIAotICAgIDEyNDc5LCAxMjQ4OCwgMTI0OTYsIDEyNTA1LCAxMjUxNCwgMTI1MjMsIDEyNTMyLCAxMjU0MiwgMTI1NTIsIDEyNTYyLCAKLSAgICAxMjU3MiwgMTI1ODIsIDEyNTkxLCAxMjYwMSwgMTI2MTEsIDEyNjIxLCAxMjYzMSwgMTI2NDEsIDEyNjUxLCAxMjY2MSwgCi0gICAgMTI2NzAsIDEyNjgwLCAxMjY5MCwgMTI3MDAsIDEyNzEwLCAxMjcyMCwgMTI3MzAsIDEyNzM5LCAxMjc0OSwgMTI3NTksIAotICAgIDEyNzY5LCAxMjc3OSwgMTI3ODksIDEyNzk5LCAxMjgwOSwgMTI4MTksIDEyODI5LCAxMjgzOCwgMTI4NDgsIDEyODU4LCAKLSAgICAxMjg2OCwgMTI4NzgsIDEyODg4LCAxMjg5OCwgMTI5MDgsIDEyOTE4LCAxMjkyOCwgMTI5MzgsIDEyOTQ3LCAxMjU2LCAKLSAgICAxMjk1MywgMTI5NTYsIDEyOTYwLCAxMjk2NSwgMTI5NzIsIDEyOTc4LCAxMjk4MywgMTI5ODcsIDEyOTkyLCAxMzAwMSwgCi0gICAgMTMwMDksIDEzMDE0LCAxMzAxOCwgMTMwMjIsIDEzMDI4LCAxMzAzMywgMTMwMzksIDkyODcsIDEzMDQ0LCAxMzA0OSwgCi0gICAgMTMwNTgsIDkyOTIsIDEzMDYzLCAxMzA2NiwgMTMwNzIsIDEzMDgwLCA5Mjk3LCAxMzA4NywgMTMwOTEsIDEzMDk1LCAKLSAgICAxMzA5OSwgMTMxMDksIDEzMTE1LCAxMzEyMSwgMTMxMjYsIDEzMTM1LCAxMzE0MywgMTMxNTAsIDEzMTU3LCAxMzE2MiwgCi0gICAgMTMxNjksIDEzMTc0LCAxMzE3OCwgMTMxODEsIDEzMTkyLCAxMzIwMiwgMTMyMTEsIDEzMjE5LCAxMzIzMCwgMTMyNDIsIAotICAgIDEzMjUyLCAxMzI1NywgMTMyNjEsIDEzMjY2LCAxMzI3MSwgMTMyNzUsIDEzMjgxLCAxMzI4OSwgMTMyOTYsIDEzMzA3LCAKLSAgICAxMzMxMiwgMTMzMjIsIDEzMzI2LCAxMzMyOSwgMTMzMzYsIDEzMzQ2LCAxMzM1NSwgMTMzNjIsIDEzMzY2LCAxMzM3MywgCi0gICAgMTMzNzksIDEzMzg0LCAxMzM4OSwgMTMzOTMsIDEzNDAyLCAxMzQwNywgMTM0MTMsIDEzNDE3LCAxMzQyMiwgMTM0MjYsIAotICAgIDEzNDM1LCAxMzQ0MywgMTM0NTEsIDEzNDU4LCAxMzQ2NiwgMTM0NzgsIDEzNDg5LCAxMzQ5OSwgMTM1MDYsIDEzNTEyLCAKLSAgICAxMzUyMSwgMTM1MzIsIDEzNTQxLCAxMzU1MywgMTM1NjUsIDEzNTc3LCAxMzU4NywgMTM1OTYsIDEzNjA1LCAxMzYxMywgCi0gICAgMTM2MjAsIDEzNjI5LCAxMzYzNywgMTM2NDEsIDEzNjQ3LCAxMzY1MywgMTM2NTgsIDc3NTMsIDEzNjYyLCAxMzY2NCwgCi0gICAgMTM2NjgsIDEzNjczLCAxMzY3OSwgMTM2ODgsIDEzNjkyLCAxMzY5OCwgMTM3MDYsIDEzNzEzLCAxMzcyMiwgMTM3MzEsIAotICAgIDEzNzQwLCAxMzc0OSwgMTM3NTgsIDEzNzY3LCAxMzc3NiwgMTM3ODUsIDEzNzk1LCAxMzgwNSwgMTM4MTQsIDEzODIwLCAKLSAgICAxMzgyNywgMTM4MzQsIDEzODQwLCAxMzg1NCwgMTM4NjEsIDEzODY5LCAxMzg3OCwgMTM4ODQsIDEzODkzLCAxMzkwMiwgCi0gICAgMTM5MTMsIDEzOTIzLCAxMzkzMSwgMTM5MzgsIDEzOTQ2LCAxMzk1NSwgMTM5NjgsIDEzOTc2LCAxMzk4MywgMTM5OTYsIAotICAgIDE0MDAyLCAxNDAwOCwgMTQwMTgsIDE0MDI3LCAxNDAzNiwgMTQwNDEsIDE0MDQ1LCAxNDA1MSwgMTQwNTcsIDE0MDY0LCAKLSAgICA4OTY2LCAxNDA2OSwgMTQwNzQsIDE0MDgxLCAxNDA4NiwgMTIzNzYsIDE0MDkxLCAxNDA5OSwgMTQxMDUsIDE0MTEwLCAKLSAgICAxNDExOCwgMTQxMjYsIDE0MTMzLCAxNDE0MSwgMTQxNDcsIDE0MTU1LCAxNDE2MywgMTQxNjksIDE0MTc0LCAxNDE4MCwgCi0gICAgMTQxODcsIDE0MTkzLCAxNDE5OCwgMTQyMDIsIDE0MjEzLCAxNDIyMSwgMTQyMjcsIDE0MjMyLCAxNDI0MSwgMTQyNDcsIAotICAgIDE0MjUyLCAxNDI2MSwgMTQyNzUsIDM4NTMsIDE0Mjc5LCAxNDI4NCwgMTQyODksIDE0Mjk1LCAxNDMwMCwgMTQzMDUsIAotICAgIDE0MzA5LCAxNDMxNCwgMTQzMTksIDE0MzI0LCA3NzUyLCAxNDMyOSwgMTQzMzQsIDE0MzM5LCAxNDM0NCwgMTQzNDksIAotICAgIDE0MzUzLCAxNDM1OCwgMTQzNjMsIDE0MzY4LCAxNDM3MywgMTQzNzksIDE0Mzg1LCAxNDM5MCwgMTQzOTQsIDE0Mzk5LCAKLSAgICAxNDQwNCwgMTQ0MDksIDkzMDEsIDE0NDE0LCAxNDQxOSwgMTQ0MjQsIDE0NDI5LCAxNDQzNCwgMTQ0NTEsIDE0NDY5LCAKLSAgICAxNDQ4MSwgMTQ0OTQsIDE0NTExLCAxNDUyNywgMTQ1NDQsIDE0NTU0LCAxNDU3MywgMTQ1ODQsIDE0NTk1LCAxNDYwNiwgCi0gICAgMTQ2MTcsIDE0NjI5LCAxNDY0MCwgMTQ2NTEsIDE0NjY4LCAxNDY3OSwgMTQ2OTAsIDE0Njk1LCA5MzA2LCAxNDcwMCwgCi0gICAgMTQ3MDQsIDIzODEsIDE0NzA4LCAxNDcxMSwgMTQ3MTcsIDE0NzI1LCAxNDczMywgMTQ3MzgsIDE0NzQ2LCAxNDc1NCwgCi0gICAgMTQ3NjEsIDE0NzY2LCAxNDc3MiwgMTQ3NzksIDE0Nzg3LCAxNDc5NCwgMTQ4MDYsIDE0ODE0LCAxNDgxOSwgMTE1OTcsIAotICAgIDE0ODI1LCAxNDgzNCwgMTQ4NDMsIDE0ODUxLCAxNDg1OCwgMTQ4NjQsIDE0ODcyLCAxNDg3OSwgMTQ4ODUsIDE0ODkyLCAKLSAgICAxNDg5OCwgMTQ5MDcsIDE0OTE1LCAxNDkyNSwgMTQ5MzIsIDE0OTM4LCAxNDk0NiwgMTQ5NTIsIDE0OTYwLCAxNDk2NywgCi0gICAgMTQ5ODAsIDE0OTg3LCAxNDk5NiwgMTUwMDUsIDE1MDE0LCAxNTAyMiwgMTUwMzIsIDE1MDM5LCAxNTA0NCwgMzU2MCwgCi0gICAgMTUwNTEsIDE1MDU2LCAxMzcyLCAxNTA2MCwgMTQzMzAsIDE1MDY0LCAxNTA3MCwgMTUwNzQsIDE1MDgyLCAxNTA5NCwgCi0gICAgMTUwOTksIDE1MTA2LCAxNTExMiwgMTUxMTcsIDE1MTI0LCAxNDMzNSwgMTUxMjgsIDE1MTMyLCAxNTEzNiwgMTQzNDAsIAotICAgIDE1MTQwLCAxNDM0NSwgMTUxNDQsIDE1MTUxLCAxNTE1NiwgMTUxNjAsIDE1MTY3LCAxNTE3MSwgMTUxNzksIDE1MTg2LCAKLSAgICAxNTE5MCwgMTUxOTcsIDE1MjE0LCAxNTIyMywgMTUyMjcsIDE1MjMwLCAxNTIzOCwgMTUyNDQsIDE1MjQ5LCAzNjM4LCAKLSAgICAxNTI1MywgMTUyNTUsIDE1MjYzLCAxNTI3MCwgMTUyODAsIDE1MjkyLCAxNTI5NywgMTUzMDMsIDE1MzA4LCAxNTMxMiwgCi0gICAgMTUzMTgsIDE1MzIzLCAxNTMyOSwgMTUzMzIsIDE1MzM5LCAxNTM0NywgMTUzNTQsIDE1MzYwLCAxNTM2NiwgMTUzNzEsIAotICAgIDE1Mzc4LCAxNTM4NCwgMTUzODksIDE1Mzk2LCAxNTQwMCwgMTU0MDYsIDE1NDEwLCAxNTQxNywgMTU0MjMsIDE1NDI5LCAKLSAgICAxNTQzNywgMTU0NDMsIDE1NDQ4LCAxNTQ1NCwgMTU0NjIsIDE1NDcwLCAxNTQ3NiwgMTU0ODIsIDE1NDg3LCAxNTQ5NCwgCi0gICAgMTU0OTksIDE1NTAzLCAxNTUwOSwgMTU1MTQsIDE1NTIxLCAxNTUyNiwgMTU1MzIsIDE1NTM1LCAxNTU0MSwgMTU1NDcsIAotICAgIDE1NTUwLCAxNTU1NCwgMTU1NjYsIDE1NTcyLCAxNTU3NywgMTU1ODQsIDE1NTkwLCAxNTU5NiwgMTU2MDcsIDE1NjE3LCAKLSAgICAxNTYyNiwgMTU2MzQsIDE1NjQxLCAxNTY1MiwgMTU2NjIsIDE1NjcyLCAxNTY4MCwgMTU2ODMsIDE0MzU5LCAxNTY4OCwgCi0gICAgMTU2OTMsIDE0MzY0LCAxNDQ5OSwgMTU3MDEsIDE1NzE0LCAxNTcyOSwgMTU3NDAsIDE0NTE2LCAxNTc1OCwgMTU3NzEsIAotICAgIDE1Nzg0LCAxNTc5NSwgMTA0OTIsIDE1ODA2LCAxNTgxOSwgMTU4MzgsIDE1ODQ5LCAxNTg2MCwgMTU4NzEsIDI2NDksIAotICAgIDE1ODg0LCAxNTg4OCwgMTU4OTYsIDE1OTExLCAxNTkyNiwgMTU5MzcsIDE1OTQ0LCAxNTk1MCwgMTU5NTgsIDE1OTYyLCAKLSAgICAxNTk2OCwgMTU5NzEsIDE1OTgxLCAxNTk4OSwgMTU5OTYsIDE2MDA0LCAxNjAxNCwgMTYwMTksIDE2MDI2LCAxNjAzMSwgCi0gICAgMTYwMzgsIDE2MDQ5LCAxNjA1OSwgMTYwNjUsIDE2MDcwLCAxNjA3NSwgMTQzNjksIDE2MDc5LCAxNjA4NSwgMTYwOTEsIAotICAgIDE2MDk2LCAxNjEwMSwgMTYxMDYsIDE2MTEwLCAxNDM3NCwgMTQzODAsIDE2MTE0LCAxNDM4NiwgMTYxMTksIDE2MTI3LCAKLSAgICAxNjEzNiwgMTYxNDMsIDkxNTAsIDE2MTQ3LCAxNjE0OSwgMTYxNTQsIDE2MTU5LCAxNjE2NSwgMTYxNzAsIDE2MTc1LCAKLSAgICAxNjE4MCwgMTYxODUsIDE2MTg5LCAxNjE5NSwgMTYyMDEsIDE2MjA2LCAxNjIxMiwgMTYyMTcsIDE2MjIyLCAxNjIyOCwgCi0gICAgMTYyMzMsIDE2MjM4LCAxNjI0MywgMTYyNDgsIDE2MjU0LCAxNjI1OSwgMTYyNjQsIDE2MjcwLCAxNjI3NiwgMTYyODEsIAotICAgIDE2Mjg2LCAxNjI5MywgMTYyOTksIDE2MzEwLCAxNjMxNywgMTYzMjIsIDE2MzI2LCAxNjMzMCwgMTYzMzMsIDE2MzQxLCAKLSAgICAxNjM0NiwgMTYzNTMsIDE2MzYwLCAxNjM2NiwgMTYzNzEsIDE2Mzc2LCAxNjM4MywgMTYzOTMsIDE2Mzk4LCAxNjQwNSwgCi0gICAgMTY0MTEsIDE2NDIxLCAxNjQzMSwgMTY0NDUsIDE2NDU5LCAxNjQ3MywgMTY0ODcsIDE2NTAyLCAxNjUxNywgMTY1MzQsIAotICAgIDE2NTUyLCAxNjU2NSwgMTY1NzEsIDE2NTc2LCAxNjU4MSwgMTY1ODUsIDE2NTkwLCAxNjU5OCwgMTY2MDQsIDE2NjA5LCAKLSAgICAxNjYxNCwgMTY2MTgsIDE2NjIzLCAxNjYyNywgMTY2MzIsIDE2NjM2LCAxNjY0NywgMTY2NTMsIDE2NjU4LCAxNjY2MywgCi0gICAgMTY2NzAsIDE2Njc1LCAxNjY3OSwgMTY2ODQsIDE2Njg5LCAxNjY5NSwgMTY3MDIsIDE2NzA4LCAxNjcxMywgMTY3MTcsIAotICAgIDE2NzIzLCAxNjcyOCwgMTY3MzMsIDE2NzM3LCAxNjc0MywgMTY3NDgsIDE2NzUzLCAxNjc2MCwgMTY3NjUsIDEzMTExLCAKLSAgICAxNjc2OSwgMTY3NzQsIDE2Nzc4LCAxNjc4MywgMTY3ODksIDE2Nzk1LCAxNjgwMiwgMTY4MTIsIDE2ODIwLCAxNjgyNywgCi0gICAgMTY4MzIsIDE2ODM2LCAxNjg0NSwgMTY4NTMsIDE2ODYwLCAxNjg2NywgMTY4NzMsIDE2ODc5LCAxNjg4NCwgMTY4ODksIAotICAgIDE2ODk1LCAxNjkwMCwgMTY5MDYsIDE2OTExLCAxNjkxNywgMTY5MjMsIDE2OTMwLCAxNjkzNiwgMTY5NDEsIDE2OTQ2LCAKLSAgICA5MzQ4LCAxNjk1NSwgMTY5NTgsIDE2OTY0LCAxNjk2OSwgMTY5NzQsIDE2OTg0LCAxNjk5MSwgMTY5OTcsIDE3MDAyLCAKLSAgICAxNzAwNywgMTcwMTMsIDE3MDE4LCAxNzAyNCwgMTcwMjksIDE3MDM1LCAxNzA0MSwgMTcwNDYsIDE3MDU0LCAxNzA2MSwgCi0gICAgMTcwNjYsIDE3MDcxLCAxNzA3NywgMTcwODIsIDE3MDg2LCAxNzA5NSwgMTcxMDYsIDE3MTEzLCAxNzExOCwgMTcxMjYsIAotICAgIDE3MTMyLCAxNzEzOSwgMTcxNDUsIDE3MTUwLCAxNzE1NCwgMTcxNjAsIDE3MTY1LCAxNzE3MCwgMTcxNzUsIDE0NDAsIAotICAgIDc3NzcsIDI4NzcsIDE3MTc5LCAxNzE4MywgMTcxODcsIDE3MTkxLCAxNzE5NSwgMTcxOTksIDE3MjAyLCAxNzIwOSwgCi0gICAgMTcyMTcsIDE0NDAwLCAxNzIyNCwgMTcyMzQsIDE3MjQyLCAxNzI0OSwgMTcyNTcsIDE3MjY3LCAxNzI3NiwgMTcyODksIAotICAgIDE3Mjk0LCAxNzI5OSwgMTczMDcsIDE3MzE0LCAxMzIwNywgMTMyMTYsIDE3MzIxLCAxNzMzMSwgMTczNDYsIDE3MzUyLCAKLSAgICAxNzM1OSwgMTczNjYsIDE3MzcyLCAxNzM4MCwgMTczOTAsIDE3NDAwLCAxNDQwNSwgMTc0MDksIDE3NDE1LCAxNzQyMSwgCi0gICAgMTc0MjksIDE3NDM3LCAxNzQ0MiwgMTc0NTEsIDE3NDU5LCAxNzQ3MSwgMTc0ODEsIDE3NDkxLCAxNzUwMSwgMTc1MTAsIAotICAgIDE3NTIyLCAxNzUzMiwgMTc1NDIsIDE3NTUzLCAxNzU1OCwgMTc1NzAsIDE3NTgyLCAxNzU5NCwgMTc2MDYsIDE3NjE4LCAKLSAgICAxNzYzMCwgMTc2NDIsIDE3NjU0LCAxNzY2NiwgMTc2NzgsIDE3Njg5LCAxNzcwMSwgMTc3MTMsIDE3NzI1LCAxNzczNywgCi0gICAgMTc3NDksIDE3NzYxLCAxNzc3MywgMTc3ODUsIDE3Nzk3LCAxNzgwOSwgMTc4MjAsIDE3ODMyLCAxNzg0NCwgMTc4NTYsIAotICAgIDE3ODY4LCAxNzg4MCwgMTc4OTIsIDE3OTA0LCAxNzkxNiwgMTc5MjgsIDE3OTQwLCAxNzk1MSwgMTc5NjMsIDE3OTc1LCAKLSAgICAxNzk4NywgMTc5OTksIDE4MDExLCAxODAyMywgMTgwMzUsIDE4MDQ3LCAxODA1OSwgMTgwNzEsIDE4MDgyLCAxODA5NCwgCi0gICAgMTgxMDYsIDE4MTE4LCAxODEzMCwgMTgxNDIsIDE4MTU0LCAxODE2NiwgMTgxNzgsIDE4MTkwLCAxODIwMiwgMTgyMTMsIAotICAgIDE4MjI1LCAxODIzNywgMTgyNDksIDE4MjYxLCAxODI3MywgMTgyODUsIDE4Mjk3LCAxODMwOSwgMTgzMjEsIDE4MzMzLCAKLSAgICAxODM0NCwgMTgzNTYsIDE4MzY4LCAxODM4MCwgMTgzOTIsIDE4NDA0LCAxODQxNiwgMTg0MjgsIDE4NDQwLCAxODQ1MiwgCi0gICAgMTg0NjQsIDE4NDc1LCAxODQ4NywgMTg0OTksIDE4NTExLCAxODUyMywgMTg1MzYsIDE4NTQ5LCAxODU2MiwgMTg1NzUsIAotICAgIDE4NTg4LCAxODYwMSwgMTg2MTQsIDE4NjI2LCAxODYzOSwgMTg2NTIsIDE4NjY1LCAxODY3OCwgMTg2OTEsIDE4NzA0LCAKLSAgICAxODcxNywgMTg3MzAsIDE4NzQzLCAxODc1NiwgMTg3NjgsIDE4NzgxLCAxODc5NCwgMTg4MDcsIDE4ODIwLCAxODgzMywgCi0gICAgMTg4NDYsIDE4ODU5LCAxODg3MiwgMTg4ODUsIDE4ODk4LCAxODkxMCwgMTg5MjMsIDE4OTM2LCAxODk0OSwgMTg5NjIsIAotICAgIDE4OTc1LCAxODk4OCwgMTkwMDEsIDE5MDE0LCAxOTAyNywgMTkwNDAsIDE5MDUyLCAxOTA2NSwgMTkwNzgsIDE5MDkxLCAKLSAgICAxOTEwNCwgMTkxMTcsIDE5MTMwLCAxOTE0MywgMTkxNTYsIDE5MTY5LCAxOTE4MiwgMTkxOTQsIDE5MjA3LCAxOTIyMCwgCi0gICAgMTkyMzMsIDE5MjQ2LCAxOTI1OSwgMTkyNzIsIDE5Mjg1LCAxOTI5OCwgMTkzMTEsIDE5MzI0LCAxOTMzNiwgMTkzNDcsIAotICAgIDE5MzYwLCAxOTM3MywgMTkzODYsIDE5Mzk5LCAxOTQxMiwgMTk0MjUsIDE5NDM4LCAxOTQ1MSwgMTk0NjQsIDE5NDc3LCAKLSAgICAxOTQ4OSwgMTk1MDIsIDE5NTE1LCAxOTUyOCwgMTk1NDEsIDE5NTU0LCAxOTU2NywgMTk1ODAsIDE5NTkzLCAxOTYwNiwgCi0gICAgMTk2MTksIDE5NjMxLCAxOTY0NCwgMTk2NTcsIDE5NjcwLCAxOTY4MywgMTk2OTYsIDE5NzA5LCAxOTcyMiwgMTk3MzUsIAotICAgIDE5NzQ4LCAxOTc2MSwgMTk3NzMsIDE5Nzg2LCAxOTc5OSwgMTk4MTIsIDE5ODI1LCAxOTgzOCwgMTk4NTEsIDE5ODY0LCAKLSAgICAxOTg3NywgMTk4OTAsIDE5OTAzLCAxOTkxNSwgMTk5MjgsIDE5OTQxLCAxOTk1NCwgMTk5NjcsIDE5OTgwLCAxOTk5MywgCi0gICAgMjAwMDYsIDIwMDE5LCAyMDAzMiwgMjAwNDUsIDIwMDU3LCAyMDA3MCwgMjAwODMsIDIwMDk2LCAyMDEwOSwgMjAxMjIsIAotICAgIDIwMTM1LCAyMDE0OCwgMjAxNjEsIDIwMTc0LCAyMDE4NywgMjAxOTksIDIwMjEyLCAyMDIyNSwgMjAyMzgsIDIwMjUxLCAKLSAgICAyMDI2NCwgMjAyNzcsIDIwMjkwLCAyMDMwMywgMjAzMTYsIDIwMzI5LCAyMDM0MSwgMjAzNTQsIDIwMzY3LCAyMDM4MCwgCi0gICAgMjAzOTMsIDIwNDA2LCAyMDQxOSwgMjA0MzIsIDIwNDQ1LCAyMDQ1OCwgMjA0NzEsIDIwNDgzLCAyMDQ5NiwgMjA1MDksIAotICAgIDIwNTIyLCAyMDUzNSwgMjA1NDgsIDIwNTYxLCAyMDU3NCwgMjA1ODcsIDIwNjAwLCAyMDYxMywgMjA2MjUsIDIwNjM4LCAKLSAgICAyMDY1MSwgMjA2NjQsIDIwNjc3LCAyMDY5MCwgMjA3MDMsIDIwNzE2LCAyMDcyOSwgMjA3NDIsIDIwNzU1LCAyMDc2NywgCi0gICAgMjA3NzgsIDIwNzg2LCAyMDc5NCwgMjA4MDEsIDIwODA3LCAyMDgxMSwgMjA4MTcsIDIwODIzLCAyMDgzMSwgMjA4MzcsIAotICAgIDIwODQyLCAyMDg0NiwgMjA4NTUsIDkxNTUsIDIwODY2LCAyMDg3MywgMjA4ODEsIDIwODg4LCAyMDg5NSwgMTA5NDgsIAotICAgIDIwOTAyLCAyMDkxMSwgMjA5MTYsIDIwOTIxLCA3ODA1LCAyMDkyOCwgMjA5MzMsIDIwOTM2LCAyMDk0MSwgMjA5NDksIAotICAgIDIwOTU2LCAyMDk2MywgMjA5NzAsIDIwOTc2LCAyMDk4NSwgMjA5OTQsIDIxMDAwLCAyMTAwOSwgMjEwMTMsIDIxMDE5LCAKLSAgICAyMTAyNCwgMjEwMzQsIDIxMDQxLCAyMTA0NywgMjEwNTUsIDIxMDYxLCAyMTA2OCwgMjEwNzgsIDIxMDg3LCAyMTA5MSwgCi0gICAgMjEwOTgsIDIxMTAyLCAyMTEwNywgMjExMTMsIDIxMTIxLCAyMTEyNSwgMjExMzUsIDE0NDE1LCAyMTE0NCwgMjExNTAsIAotICAgIDIxMTU0LCAyMTE2MywgMTQ0MjAsIDIxMTY5LCAyMTE3NiwgMjExODcsIDIxMTk1LCAyMTIwNCwgMjEyMTIsIDg5MzEsIAotICAgIDIxMjIwLCAyMTIyNSwgMjEyMzEsIDIxMjM2LCAyMTI0MCwgMjEyNDQsIDIxMjQ4LCA5NjM5LCAyMTI1MywgMjEyNjEsIAotICAgIDIxMjY4LCAyMTI3NywgMjEyODQsIDIxMjkxLCAxMDg3OCwgMjEyOTgsIDIxMzA0LCAyMTMwOCwgMjEzMTQsIDIxMzIxLCAKLSAgICAyMTMyNywgMjEzMzUsIDIxMzQxLCAyMTM0OCwgMjEzNTQsIDIxMzYwLCAyMTM2OSwgMjEzNzMsIDIxMzgxLCAyMTM5MCwgCi0gICAgMjEzOTcsIDIxNDAyLCAyMTQwNiwgMjE0MTcsIDIxNDIyLCAyMTQyNywgMjE0MzIsIDIxNDQ1LCA3OTk1LCAyMTQ0OSwgCi0gICAgMjE0NTUsIDIxNDYzLCAyMTQ2NywgMjE0NzQsIDIxNDgzLCAyMTQ4OCwgMTQ2OTEsIDIxNDk2LCAyMTUwMCwgMjE1MTIsIAotICAgIDIxNTE3LCAyMTUyMSwgMjE1MjQsIDIxNTMwLCAyMTUzNiwgMjE1NDEsIDIxNTQ1LCAyMTU0OCwgMjE1NTksIDIxNTY0LCAKLSAgICA5MzgzLCAyMTU3MSwgMjE1NzYsIDkzODgsIDIxNTgxLCAyMTU4NiwgMjE1OTEsIDIxNTk2LCAyMTYwMSwgMjE2MDYsIAotICAgIDIxNjExLCAyMTYxNiwgMjE2MjEsIDIxNjI2LCAyMTYzMSwgMjE2MzYsIDIxNjQyLCAyMTY0NywgMjE2NTIsIDIxNjU3LCAKLSAgICAyMTY2MiwgMjE2NjcsIDIxNjcyLCAyMTY3NywgMjE2ODIsIDIxNjg3LCAyMTY5MywgMjE2OTksIDIxNzA0LCAyMTcwOSwgCi0gICAgMjE3MTQsIDIxNzE5LCAyMTcyNCwgMjE3MjksIDIxNzM0LCAyMTczOSwgMjE3NDQsIDIxNzUwLCAyMTc1NSwgMjE3NjAsIAotICAgIDIxNzY1LCAyMTc3MSwgMjE3NzcsIDIxNzgyLCAyMTc4NywgMjE3OTIsIDIxNzk3LCAyMTgwMiwgMjE4MDcsIDIxODEyLCAKLSAgICAyMTgxNywgMjE4MjMsIDIxODI4LCAyMTgzMywgMjE4MzgsIDIxODQzLCAyMTg0OSwgMjE4NTQsIDIxODU5LCAyMTg2MywgCi0gICAgMTM2OCwgMTI5LCAyMTg3MSwgMjE4NzUsIDIxODc5LCAyMTg4MywgMjE4ODgsIDIxODkyLCAxMzExNywgMTI0NzYsIDIxODk2LCAKLSAgICAyMTkwMSwgMjE5MDUsIDIxOTEwLCAyMTkxNCwgMjE5MTksIDIxOTIzLCAyMTkyOSwgMjE5MzQsIDIxOTM4LCAyMTk0MiwgCi0gICAgMjE5NTAsIDIxOTU0LCAyMTk1OCwgMjE5NjMsIDIxOTY4LCAyMTk3MiwgMjE5NzgsIDIxOTgzLCAyMTk4NywgMjE5OTIsIAotICAgIDIxOTk3LCAyMjAwMSwgMjIwMDgsIDIyMDE1LCAyMjAyMiwgMjIwMjYsIDIyMDMwLCAyMjAzNSwgMjIwMzksIDIyMDQyLCAKLSAgICAyMjA0OCwgMjIwNjEsIDIyMDY2LCAyMjA3NSwgMjIwODAsIDk0MjgsIDIyMDg1LCAyMjA4OCwgMjcxMiwgMjcxNywgMjIwOTIsIAotICAgIDIyMDk4LCAyMjEwNCwgNzIwOSwgMjIxMDksIDIyMTE0LCAyMjExOSwgMjIxMjUsIDIyMTMwLCAxMzkwOSwgMjIxMzUsIAotICAgIDIyMTQwLCAyMjE0NSwgMjIxNTAsIDIyMTU2LCAyMjE2MSwgMjIxNjYsIDIyMTcyLCAyMjE3NywgMjIxODEsIDIyMTg2LCAKLSAgICAyMjE5MSwgMjIxOTYsIDIyMjAxLCAyMjIwNSwgMjIyMTAsIDIyMjE0LCAyMjIxOSwgMjIyMjQsIDIyMjI5LCAyMjIzNCwgCi0gICAgMjIyMzgsIDIyMjQzLCAyMjI0NywgMjIyNTIsIDIyMjU3LCAyMjI2MiwgMjIyNjcsIDI4ODYsIDIyMTgyLCAyMjI3MSwgCi0gICAgMjIyNzksIDIyMjg2LCA5NzMzLCAyMjI5OCwgMjIzMDYsIDIyMTg3LCAyMjMxMywgMjIzMTgsIDIyMzI2LCAyMjE5MiwgCi0gICAgMjIzMzEsIDIyMzM2LCAyMjM0NCwgMjIzNDksIDIyMTk3LCAyMjM1NCwgMjIzNTksIDIyMzYzLCAyMjM2OSwgMjIzNzcsIAotICAgIDIyMzgwLCAyMjM4NywgMjIzOTEsIDIyMzk1LCAyMjQwMSwgMjI0MDgsIDIyNDEzLCA4OTU4LCAxNzI3LCAxNzMyLCAyMjQxNywgCi0gICAgMjI0MjMsIDIyNDI5LCAyMjQzNCwgMjI0MzgsIDIyNDQyLCAyMjQ0NiwgMjI0NTAsIDIyNDU0LCAyMjQ1OCwgMjI0NjIsIAotICAgIDIyNDY2LCAyMjQ2OSwgMjI0NzUsIDIyNDgyLCAyMjQ5MCwgMjI0OTYsIDIyNTAyLCAyMjUwNywgMjI1MTIsIDIyNTE2LCAKLSAgICAxMzgyOSwgMTM4MzYsIDIyNTIxLCAyMjUzMywgMjI1MzYsIDIyNTQzLCAxNjM2MiwgMjI1NTAsIDIyNTU4LCAyMjU2OSwgCi0gICAgMjI1NzgsIDIyNTkxLCAyMjYwMSwgMjI2MTUsIDIyNjI3LCAyMjY0MSwgMjI2NTMsIDIyNjYzLCAyMjY3NSwgMjI2ODEsIAotICAgIDIyNjk2LCAyMjcyMCwgMjI3MzgsIDIyNzU3LCAyMjc3MCwgMjI3ODQsIDIyODAyLCAyMjgxOCwgMjI4MzUsIDIyODUzLCAKLSAgICAyMjg2NCwgMjI4ODMsIDIyOTAwLCAyMjkyMCwgMjI5MzgsIDIyOTUwLCAyMjk2NCwgMjI5NzgsIDIyOTkwLCAyMzAwNywgCi0gICAgMjMwMjYsIDIzMDQ0LCAyMzA1NiwgMjMwNzQsIDIzMDkzLCAxNDU1OSwgMjMxMDYsIDIzMTI2LCAyMzEzOCwgMTA1MjMsIAotICAgIDIzMTUwLCAyMzE1NSwgMjMxNjAsIDIzMTY1LCAyMzE3MSwgMjMxNzYsIDIzMTgwLCAyMzE4NywgMjM5OCwgMjMxOTEsIAotICAgIDIzMTk3LCAyMzIwMSwgMjMyMDQsIDIzMjA4LCAyMzIxNiwgMjMyMjIsIDIyMjE1LCAyMzIyNiwgMjMyMzUsIDIzMjQ2LCAKLSAgICAyMzI1MiwgMjMyNTgsIDIzMjY3LCAyMzI3NSwgMjMyODIsIDIzMjg3LCAyMzI5MSwgMjMyOTgsIDIzMzA0LCAyMzMxMywgCi0gICAgMjMzMjEsIDIzMzI4LCAyMzMzOCwgMjMzNDcsIDIzMzU3LCAyMzM2MiwgMjMzNzEsIDIzMzgwLCAyMzM5MSwgMjM0MDIsIAotICAgIDM5NjMsIDIzNDEyLCAyMzQxNiwgMjM0MjYsIDIzNDM0LCAyMzQ0NCwgMjM0NTUsIDIzNDYwLCAyMzQ3MCwgMjM0NzgsIAotICAgIDIzNDg1LCAyMzQ5MSwgMjM0OTgsIDIzNTAzLCAyMjIyNSwgMjM1MDcsIDIzNTE2LCAyMzUyMCwgMjM1MjMsIDIzNTI4LCAKLSAgICAyMzUzNSwgMjM1NDQsIDIzNTUyLCAyMzU2MCwgMjM1NzAsIDIzNTc5LCAyMzU4NSwgMjM1OTEsIDIyMjMwLCAyMjIzNSwgCi0gICAgMjM1OTUsIDIzNjA1LCAyMzYxNSwgMjM2MjUsIDIzNjMzLCAyMzY0MCwgMjM2NTAsIDIzNjU4LCAyMzY2NiwgMjM2NzIsIAotICAgIDIzNjgwLCA5MzAsIDIzNjg5LCAxNDc1MCwgNTQyLCAyMzcwMywgMjM3MTIsIDIzNzIwLCAyMzczMSwgMjM3NDIsIDIzNzUyLCAKLSAgICAyMzc2MSwgMjM3NzMsIDIzNzgyLCAyMzc5MSwgMjM3OTcsIDIzODA2LCAyMzgxNSwgMjM4MjUsIDIzODMzLCAyMzg0MSwgCi0gICAgOTM2MCwgMjM4NDcsIDIzODUwLCAyMzg1NCwgMjM4NTksIDIzODY0LCA5ODQ4LCAyMjI0OCwgMjIyNTMsIDIzODcyLCAKLSAgICAyMzg3OCwgMjM4ODQsIDIzODg5LCAyMzg5NCwgMjM4OTgsIDIzOTA2LCAyMzkxMiwgMjM5MTgsIDIzOTIyLCAzNTI1LCAKLSAgICAyMzkzMCwgMjM5MzUsIDIzOTQwLCAyMzk0NCwgMjM5NDgsIDk5MjgsIDIzOTU1LCAyMzk2MywgMjM5NzcsIDIzOTg0LCAKLSAgICAyMzk5MCwgOTkzNywgOTk0MywgMjM5OTgsIDI0MDA2LCAyNDAxMywgMjQwMTgsIDI0MDIzLCAyMjI1OCwgMjQwMjksIAotICAgIDI0MDQwLCAyNDA0NCwgMjQwNDksIDI2MDEsIDI0MDU0LCAyNDA2NSwgMjQwNzEsIDI0MDc2LCAyNDA4MCwgMjQwODQsIAotICAgIDI0MDg3LCAyNDA5NCwgMjQxMDEsIDI0MTA4LCAyNDExNCwgMjQxMTgsIDIyMjYzLCAyNDEyMywgMjQxMjcsIDI0MTMxLCAKLSAgICAxMDM3LCAyNDEzNiwgMjQxNDEsIDI0MTQ2LCAyNDE1MSwgMjQxNTYsIDI0MTYxLCAyNDE2NiwgMjQxNzEsIDI0MTc2LCAKLSAgICAyNDE4MSwgMjQxODYsIDI0MTkxLCAyNDE5NiwgMjQyMDEsIDI0MjA3LCAyNDIxMiwgMjQyMTcsIDI0MjIyLCAyNDIyNywgCi0gICAgMjQyMzIsIDI0MjM3LCAyNDI0MywgMjQyNDgsIDI0MjUzLCAyNDI1OCwgMjQyNjMsIDI0MjY4LCAyNDI3MywgMjQyNzgsIAotICAgIDI0Mjg0LCAyNDI5MCwgMjQyOTUsIDI0MzAxLCAyNDMwNiwgMjQzMTEsIDUsIDI0MzE3LCAyNDMyMSwgMjQzMjUsIDI0MzI5LCAKLSAgICAyNDMzNCwgMjQzMzgsIDI0MzQyLCAyNDM0NiwgMjQzNTAsIDI0MzU1LCAyNDM1OSwgMjQzNjQsIDI0MzY4LCAyNDM3MSwgCi0gICAgMjQzNzUsIDI0MzgwLCAyNDM4NCwgMjQzODksIDI0MzkzLCAyNDM5NywgMjQ0MDEsIDI0NDA2LCAyNDQxMCwgMjQ0MTQsIAotICAgIDI0NDI0LCAyNDQyOSwgMjQ0MzMsIDI0NDM3LCAyNDQ0MiwgMjQ0NDcsIDI0NDU2LCAyNDQ2MSwgMjQ0NjYsIDI0NDcwLCAKLSAgICAyNDQ3NCwgMjQ0ODcsIDI0NDk5LCAyNDUwOCwgMjQ1MTcsIDI0NTIzLCAyNDUyOCwgMjQ1MzIsIDI0NTM2LCAyNDU0NiwgCi0gICAgMjQ1NTUsIDI0NTYzLCAyNDU2OSwgMjQ1NzQsIDI0NTc4LCAyNDU4NSwgMjQ1OTUsIDI0NjA0LCAyNDYxMiwgMjQ2MjAsIAotICAgIDI0NjI3LCAyNDYzNSwgMjQ2NDQsIDI0NjUzLCAyNDY2MSwgMjQ2NjYsIDI0NjcwLCAyNDY3NCwgMjQ2NzcsIDI0Njc5LCAKLSAgICAyNDY4MywgMjQ2ODcsIDI0NjkyLCAyNDY5NywgMjQ3MDEsIDI0NzA1LCAyNDcwOCwgMjQ3MTIsIDI0NzE1LCAyNDcxOSwgCi0gICAgMjQ3MjIsIDI0NzI1LCAyNDcyOSwgMjQ3MzUsIDI0NzM5LCAyNDc0MywgMjQ3NDcsIDI0NzUyLCAyNDc1NywgMjQ3NjIsIAotICAgIDI0NzY2LCAyNDc2OSwgMjQ3NzQsIDI0NzgwLCAyNDc4NSwgMjQ3OTEsIDI0Nzk2LCAyNDgwMCwgMjQ4MDQsIDI0ODA4LCAKLSAgICAyNDgxMywgMjQ4MTcsIDI0ODIyLCAyNDgyNiwgMjQ4MzAsIDI0ODM3LCAyNDg0MSwgMjQ4NDQsIDI0ODQ4LCAyNDg1NCwgCi0gICAgMjQ4NjAsIDI0ODY0LCAyNDg2OCwgMjQ4NzMsIDI0ODgwLCAyNDg4NiwgMjQ4OTAsIDI0ODk5LCAyNDkwMywgMjQ5MDcsIAotICAgIDI0OTEwLCAyNDkxNiwgMjQ5MjEsIDI0OTI3LCAxNDg5LCAxNzkxLCAyNDkzMiwgMjQ5MzcsIDI0OTQyLCAyNDk0NywgCi0gICAgMjQ5NTIsIDI0OTU3LCAyNDk2MiwgMjE0OCwgMjE5NCwgMjQ5NjcsIDI0OTcwLCAyNDk3NCwgMjQ5NzgsIDI0OTgzLCAKLSAgICAyNDk4NywgMjQ5OTEsIDI0OTk0LCAyNDk5OSwgMjUwMDQsIDI1MDA4LCAyNTAxMSwgMjUwMTYsIDI1MDIwLCAyNTAyNSwgCi0gICAgMjUwMjksIDE0NzYyLCAyNTAzNCwgMjUwMzcsIDI1MDQwLCAyNTA0NCwgMjUwNDksIDI1MDUzLCAyNTA2NiwgMjUwNzAsIAotICAgIDI1MDczLCAyNTA4MSwgMjUwOTAsIDI1MDk3LCAyNTEwMiwgMjUxMDgsIDI1MTE0LCAyNTEyMiwgMjUxMjksIDI1MTM2LCAKLSAgICAyNTE0MCwgMjUxNDQsIDI1MTQ4LCAyNTE1MywgMjUxNTgsIDI1MTYyLCAyNTE3MCwgMjUxNzUsIDI1MTg3LCAyNTE5OCwgCi0gICAgMjUyMDMsIDI1MjA3LCAyNTIxMSwgMjUyMTcsIDI1MjIyLCAyNTIyNywgMjUyMzEsIDI1MjM1LCAyNTIzOCwgMjUyNDQsIAotICAgIDc5MTUsIDIzMTYsIDI1MjQ4LCAyNTI1MywgMjUyNjksIDk0NzUsIDI1Mjg5LCAyNTI5OCwgMjUzMTQsIDI1MzE4LCAyNTMyMSwgCi0gICAgMjUzMjcsIDI1MzM3LCAyNTM0MywgMjUzNTIsIDI1MzY3LCAyNTM3OSwgMjUzOTAsIDI1Mzk4LCAyNTQwNywgMjU0MTMsIAotICAgIDI1NDIyLCAyNTQzMiwgMjU0NDMsIDI1NDU0LCAyNTQ2MywgMjU0NzAsIDI1NDc5LCAyNTQ4NywgMjU0OTQsIDI1NTAyLCAKLSAgICAyNTUwOSwgMjU1MTYsIDI1NTI5LCAyNTUzNiwgMjU1NDIsIDI1NTQ3LCAyNTU1NiwgMjU1NjIsIDI1NTY3LCAyNTU3NSwgCi0gICAgMjU1ODIsIDIzNDM2LCAyNTU5NCwgMjU2MDYsIDI1NjIwLCAyNTYyOCwgMjU2MzUsIDI1NjQ3LCAyNTY1NiwgMjU2NjUsIAotICAgIDI1NjczLCAyNTY4MSwgMjU2ODksIDI1Njk2LCAyNTcwNSwgMjU3MTMsIDI1NzIzLCAyNTczMiwgMjU3NDIsIDI1NzUxLCAKLSAgICAyNTc2MCwgMjU3NjgsIDI1NzczLCAyNTc3NywgMjU3ODAsIDI1Nzg0LCAyNTc4OCwgMjU3OTIsIDI1Nzk2LCAyNTgwMCwgCi0gICAgMjU4MDYsIDI1ODEyLCAyNTgyMCwgMTQ4MDcsIDI1ODI3LCAyNTgzMiwgMjU4MzksIDI1ODQ1LCAyNTg1MiwgMTQ4MTUsIAotICAgIDI1ODU5LCAyNTg2MiwgMjU4NzQsIDI1ODgyLCAyNTg4OCwgMjU4OTMsIDI1ODk3LCA5ODc4LCAyNTkwOCwgMjU5MTgsIAotICAgIDI1OTI3LCAyNTkzNCwgMjU5MzgsIDE0ODIwLCAyNTk0MSwgMjU5NDgsIDI1OTUyLCAyNTk1OCwgMjU5NjEsIDI1OTY4LCAKLSAgICAyNTk3NCwgMjU5ODEsIDI1OTg3LCAyNTk5MSwgMjU5OTYsIDI2MDAwLCAyNjAwOSwgMjYwMTYsIDI2MDIyLCA3OTU2LCAKLSAgICAyNjAyOSwgMjYwMzcsIDI2MDQ0LCAyNjA1MCwgMjYwNTUsIDI2MDYxLCAyNjA2NywgMjYwNzUsIDI2MDc5LCAyNjA4MiwgCi0gICAgMjYwODQsIDI1Nzg1LCAyNjA5MywgMjYwOTksIDI2MTA5LCAyNjExNCwgMjYxMjEsIDI2MTI3LCAyNjEzMiwgMjYxMzcsIAotICAgIDI2MTQyLCAyNjE0NiwgMjYxNTEsIDI2MTU4LCAyNjE2NywgMjYxNzEsIDI2MTc4LCAyNjE4NywgMjYxOTMsIDI2MTk4LCAKLSAgICAyNjIwNCwgMjYyMDksIDI2MjE2LCAyNjIyNywgMjYyMzIsIDI2MjM2LCAyNjI0NiwgMjYyNTIsIDI2MjU2LCAyNjI2MSwgCi0gICAgMjYyNzEsIDI2MjgwLCAyNjI4NCwgMjYyOTEsIDI2Mjk5LCAyNjMwNiwgMjYzMTIsIDI2MzE3LCAyNjMyNSwgMjYzMzIsIAotICAgIDI2MzQ0LCAyNjM1MywgMjYzNTcsIDEzMDUzLCAyNjM2NSwgMjYzNzUsIDI2Mzc5LCAyNTA3NywgMjYzOTAsIDI2Mzk1LCAKLSAgICAyNjM5OSwgMjY0MDYsIDI2NDEzLCAyMTk3NCwgMjU3MTAsIDI2NDE4LCAyNjQyMiwgMjY0MjUsIDIyODcwLCAyNjQzMCwgCi0gICAgMjY0NDQsIDI2NDYwLCAyNjQ3OCwgMjY0OTcsIDI2NTE0LCAyNjUzMiwgMjI4ODksIDI2NTQ5LCAyNjU2OSwgMjI5MDYsIAotICAgIDI2NTgxLCAyNjU5MywgMTU3NDUsIDI2NjA1LCAyMjkyNiwgMjY2MTksIDI2NjMxLCAxMDUzNiwgMjY2NDUsIDI2NjUwLCAKLSAgICAyNjY1NSwgMjY2NjAsIDI2NjY2LCAyNjY3MiwgMjY2NzgsIDI2NjgyLCAyNjY4OSwgMjY2OTQsIDI2NzA0LCAyNjcxMCwgCi0gICAgMTAxODMsIDI2NzE2LCAyNjcxOCwgMjY3MjMsIDI2NzMxLCAyNjczNSwgMjYxNTQsIDI2NzQxLCAyNjc0OCwgMTE1MjQsIAotICAgIDExNTM0LCAyNjc1NSwgMjY3NjUsIDI2NzcwLCAyNjc3NCwgMjY3NzcsIDI2NzgzLCAyNjc5MSwgMjY4MDMsIDI2ODEzLCAKLSAgICAyNjgyOSwgMjY4NDIsIDI2ODU2LCAxNTc2MywgMjY4NzAsIDI2ODc3LCAyNjg4MSwgMjY4ODQsIDI2ODg5LCAyNjg5MywgCi0gICAgMjY5MDAsIDI2OTA3LCAyNjkxNywgMjY5MjIsIDI2OTI3LCAyNjkzMiwgMjY5NDAsIDI2OTQ4LCAyNjk1NywgMjY5NjIsIAotICAgIDk1NzIsIDI2OTY2LCAyNjk2OSwgMjY5NzIsIDI2OTc3LCAyNjk4NCwgMjY5ODksIDI3MDA1LCAyNzAxMywgMjcwMjEsIAotICAgIDk0MjMsIDI3MDI5LCAyNzAzNCwgMjcwMzgsIDI3MDQ0LCAyNzA1MCwgMjcwNTMsIDI3MDU5LCAyNzA3MSwgMjcwNzksIAotICAgIDI3MDg2LCAyNzA5MiwgMjcwOTksIDI3MTEwLCAyNzEyNCwgMjcxMzcsIDI3MTQ2LCAyNzE1NSwgMjcxNjcsIDI3MTc4LCAKLSAgICAyNzE4OCwgMjcxOTcsIDI3MjA2LCAyNzIxNCwgMjcyMjUsIDc5MzgsIDI3MjMyLCAyNzIzOCwgMjcyNDMsIDI3MjQ5LCAKLSAgICAyNzI1NiwgMjcyNjYsIDI3Mjc2LCAyNzI4NSwgMjcyOTEsIDI3Mjk4LCAyNzMwMywgMjczMTAsIDI3MzE4LCAyNzMyNiwgCi0gICAgMjczMzgsIDYyNDYsIDI3MzQ1LCAyNzM1NCwgMjczNjIsIDI3MzY4LCAyNzM3NCwgMjczNzksIDI3MzgzLCAyNzM4NiwgCi0gICAgMjczOTIsIDI3Mzk5LCAyNzQwNCwgMjc0MDksIDI3NDEzLCAyNzQyNSwgMjc0MzYsIDI3NDQ1LCAyNzQ1MywgMTQ5NDcsIAotICAgIDI3NDU4LCAyNzQ2NCwgMjc0NzAsIDExNTE3LCA4NjM1LCAyNzQ3NSwgMjc0NzksIDI3NDgzLCAyNzQ4NiwgMjc0ODksIAotICAgIDI3NDk1LCAyNzUwMywgMjc1MTEsIDI3NTE1LCAyNzUxOSwgMjc1MjQsIDI3NTI3LCAyNzUzNiwgMjc1NDAsIDI3NTQ4LCAKLSAgICAyNzU1OSwgMjc1NjMsIDI3NTY5LCAyNzU3NSwgMjc1NzksIDI3NTg1LCAyNzU5MywgMjc2MTUsIDI3NjM5LCAyNzY0NiwgCi0gICAgMjc2NTMsIDI3NjU5LCAyNzY2NywgMjc2NzMsIDI3Njc4LCAyNzY4OSwgMjc3MDcsIDI3NzE0LCAyNzcyMiwgMjc3MjYsIAotICAgIDI3NzM1LCAyNzc0OCwgMjc3NTYsIDI3NzY4LCAyNzc3OSwgMjc3ODksIDI3ODAzLCAyNzgxMiwgMjc4MjAsIDI3ODMyLCAKLSAgICA5NDkyLCAyNzg0MywgMjc4NTQsIDI3ODY2LCAyNzg3NiwgMjc4ODUsIDI3ODkwLCAyNzg5NCwgMjc5MDIsIDI3OTEyLCAKLSAgICAyNzkxNywgMjc5MjEsIDI3OTI0LCAyNzkyNywgMjc5MzUsIDI3OTQzLCAyNzk1MiwgMjc5NjIsIDI3OTcxLCAyNzk3NywgCi0gICAgMjc5OTEsIDI2NjMsIDI4MDEzLCAyODAyNCwgMjgwMzMsIDI4MDQzLCAyODA1NSwgMjgwNjQsIDI4MDczLCAyODA4MywgCi0gICAgMjgwOTEsIDI4MDk5LCAyODEwOCwgMjgxMTMsIDI4MTI0LCAyODEyOSwgMjgxNDAsIDI4MTQ0LCAyODE1NCwgMjgxNjMsIAotICAgIDI4MTcxLCAyODE4MSwgMjgxOTEsIDI4MTk5LCAyODIwOCwgMjgyMTUsIDI4MjIzLCAyODIzMCwgMjgyMzksIDI4MjQzLCAKLSAgICAyODI1MSwgMjgyNTgsIDI4MjY2LCAyODI3MywgMjgyODQsIDI4Mjk5LCAyODMwNiwgMjgzMTIsIDI4MzIyLCAyODMzMSwgCi0gICAgMjgzMzcsIDI4MzQxLCAyODM0OCwgMjgzNTIsIDE0MDMxLCAyODM1OCwgMjgzNjIsIDI4MzY3LCAyODM3NCwgMjgzNzgsIAotICAgIDI4MzgyLCAyODM5MCwgMjgzOTgsIDI4NDA0LCAyODQxMywgMjg0MjAsIDI4NDI1LCAyODQzMCwgMjg0NDAsIDIzNTA1LCAKLSAgICAyODQ0NCwgMjg0NDcsIDI4NDUyLCAyODQ1NywgMjg0NjIsIDI4NDY3LCAyODQ3MiwgMjg0NzcsIDI4NDgyLCAyODQ4NywgCi0gICAgMjg0OTMsIDI4NDk4LCAyODUwMywgMjg1MDksIDEyMTgsIDcwNCwgMjg1MTQsIDI4NTIzLCAyMzY0LCAyODUzMCwgMjg1MzUsIAotICAgIDI4NTM5LCAyODU0NSwgMTI2NywgNTQ2LCAzMTgsIDI4NTUwLCAyODU1OSwgMjg1NjcsIDI4NTc2LCAyODU4NCwgMjg1OTUsIAotICAgIDI4NjA0LCAyODYxMiwgMjg2MTYsIDI4NjE5LCAyODYyNywgMjg2MzUsIDI4NjQwLCAxNDc3NSwgMjg2NDYsIDI4NjUyLCAKLSAgICAyODY1OCwgNTg3MiwgMjg2NjMsIDI4NjY3LCAyODY3MywgMjg2NzcsIDI4Njg0LCAxNDU1LCAyODY5MCwgMjg2OTcsIDk1NzksIAotICAgIDI4NzAxLCAyODcxMSwgMjg3MTksIDI4NzI1LCAyODczNCwgMjg3NDIsIDI4NzQ4LCAyODc1NiwgMjg3NjMsIDExMTEwLCAKLSAgICAyODc2OSwgMjg3NzYsIDI4NzgxLCAyODc4OCwgMTQ5NiwgMjE0NywgMjg3OTQsIDI4ODAwLCAyODgwNywgMjg4MTgsIAotICAgIDI4ODI5LCAyODgzNywgMjg4NDQsIDI4ODU0LCAyODg2MywgMjg4NzEsIDI4ODgwLCAyODg4NywgMjg4OTQsIDI4OTA3LCAKLSAgICAyODkxOCwgMTI3MiwgMjg5MzcsIDI4OTQyLCAyODk1MCwgMzU3NSwgMjg5NTQsIDI4OTU5LCAyODk2MywgMTQ1OSwgMjQ3MDYsIAotICAgIDI4OTczLCAyODk3NywgMjg5ODIsIDI4OTg2LCAzNDkzLCAyODk5MiwgMjkwMDAsIDI5MDA3LCAyOTAxOCwgMjkwMjYsIAotICAgIDI5MDM0LCAzNTc2LCAyNzksIDI5MDM5LCAyOTA0NywgMjkwNTUsIDI5MDYyLCAyOTA2OCwgMjkwNzMsIDIyMTYsIDI5MDgwLCAKLSAgICAyOTA4NiwgMjU5OTIsIDI2MjIyLCAyOTA5MiwgMTA2LCAyOTA5NiwgMjkxMDAsIDI5MTA2LCA2MTUsIDkzMjgsIDI5MTExLCAKLSAgICAyOTExOCwgMjkxMjQsIDIzMjcsIDI5MTI4LCAyOTEzMiwgMTUxODcsIDI5MTM1LCAyOTE0MCwgMjkxNDcsIDI5MTUzLCAKLSAgICAyOTE1OCwgMjkxNjYsIDI5MTczLCAyOTE3OSwgMjIzNTEsIDI5MTgzLCAyOTE4NywgMzY0NiwgMTY2MjUsIDI5MTkxLCAKLSAgICAyOTE5NiwgMjkxOTksIDI5MjA3LCAyOTIxNSwgMjkyMjAsIDI5MjIzLCAyOTIzMCwgMjkyNDAsIDI5MjUyLCAyOTI1NywgCi0gICAgMjkyNjEsIDI5MjY5LCAyOTI3NiwgMjkyODIsIDI5Mjg5LCAyOTI5NiwgMjkyOTksIDI5MzAzLCAyOTMwNywgMTQ2MywgCi0gICAgMjkzMTcsIDI5MzE5LCAyOTMyNCwgMjkzMzAsIDI5MzM2LCAyOTM0MSwgMjkzNDYsIDI5MzUxLCAyOTM1NiwgMjkzNjEsIAotICAgIDI5MzY2LCAyOTM3MSwgMjkzNzYsIDI5MzgxLCAyOTM4NiwgMjkzOTEsIDI5Mzk2LCAyOTQwMSwgMjk0MDYsIDI5NDEyLCAKLSAgICAyOTQxOCwgMjk0MjQsIDI5NDMwLCAyOTQzNSwgMjk0NDAsIDI5NDQ1LCAyOTQ1MSwgMjk0NTYsIDI5NDYxLCAyOTQ2NiwgCi0gICAgMjk0NzIsIDI5NDc3LCAyOTQ4MywgMjk0ODgsIDI5NDkzLCAyOTQ5OCwgMjk1MDMsIDI5NTA5LCAyOTUxNCwgMjk1MjAsIAotICAgIDI5NTI1LCAyOTUzMCwgMjk1MzUsIDI5NTQwLCAyOTU0NiwgMjk1NTEsIDI5NTU3LCAyOTU2MiwgMjk1NjcsIDI5NTcyLCAKLSAgICAyOTU3NywgMjk1ODIsIDI5NTg3LCAyOTU5MiwgMjk1OTcsIDI5NjAyLCAyOTYwOCwgMjk2MTQsIDI5NjIwLCAyOTYyNSwgCi0gICAgMjk2MzAsIDI5NjM1LCAyOTY0MCwgMjk2NDYsIDI5NjUyLCAyOTY1OCwgMjk2NjQsIDI5NjcwLCAyOTY3NiwgMjk2ODEsIAotICAgIDI5Njg3LCAyOTY5MiwgMjk2OTcsIDI5NzAyLCAyOTcwNywgMjk3MTMsIDI0NDMsIDI5NzE4LCAyNDUwLCAyNDU3LCAyNzU0LCAKLSAgICAyOTcyMywgMjQ2MywgMjQ3MywgMjk3MjksIDI5NzMzLCAyOTczOCwgMjk3NDMsIDI5NzQ5LCAyOTc1NCwgMjk3NTksIAotICAgIDI5NzYzLCAyOTc2OCwgMjk3NzQsIDI5Nzc5LCAyOTc4NCwgMjk3ODksIDI5Nzk1LCAyOTgwMCwgMjk4MDQsIDI5ODA4LCAKLSAgICAyOTgxMywgMjk4MTgsIDI5ODIzLCAyOTgyOCwgMjk4MzMsIDI5ODM5LCAyOTg0NSwgMjk4NTAsIDI5ODU0LCAyOTg1OSwgCi0gICAgMjk4NjUsIDI5ODY5LCAyOTg3NCwgMjk4NzksIDI5ODg0LCAyOTg4OSwgMjk4OTMsIDI5ODk2LCAyOTkwMSwgMjk5MDYsIAotICAgIDI5OTExLCAyOTkxNiwgMjk5MjEsIDI5OTI3LCAyOTkzMywgMjk5MzgsIDI5OTQzLCAyOTk0NywgMjk5NTIsIDI5OTU3LCAKLSAgICAyOTk2MiwgMjk5NjcsIDI5OTcyLCAyOTk3NiwgMjk5ODEsIDI5OTg2LCAyOTk5MSwgMjk5OTUsIDI5OTk5LCAzMDAwMywgCi0gICAgMzAwMDgsIDMwMDE2LCAzMDAyMSwgMzAwMjcsIDMwMDMzLCAzMDAzOSwgMzAwNDQsIDMwMDQ4LCAzMDA1MSwgMzAwNTYsIAotICAgIDMwMDYxLCAzMDA2NSwgMzAwNzAsIDMwMDc0LCAzMDA3OSwgMzAwODMsIDMwMDg2LCAzMDA5MSwgMTczMDIsIDMwMDk2LCAKLSAgICAzMDEwMSwgMzAxMDYsIDMwMTE0LCAyMTI4MCwgMjg2OTQsIDkwMjYsIDMwMTE5LCAzMDEyNCwgMzAxMjgsIDMwMTMzLCAKLSAgICAzMDEzNywgMzAxNDEsIDMwMTQ2LCAzMDE1MCwgMzAxNTMsIDMwMTU2LCAzMDE2MCwgMzAxNjUsIDMwMTY5LCAzMDE3NywgCi0gICAgMzAxODEsIDMwMTg0LCAzMDE4OSwgMzAxOTMsIDMwMTk3LCAzMDIwMiwgMzAyMDcsIDMwMjExLCAzMDIxNywgMzAyMjIsIAotICAgIDMwMjI3LCAzMDIzNCwgMzAyNDEsIDMwMjQ1LCAzMDI0OCwgMzAyNTQsIDMwMjYzLCAzMDI3MCwgMzAyNzgsIDMwMjg1LCAKLSAgICAzMDI4OSwgMzAyOTQsIDMwMjk4LCAzMDMwMiwgMzAzMDgsIDMwMzE0LCAzMDMxOCwgMzAzMjQsIDMwMzI5LCAzMDMzNCwgCi0gICAgMzAzMzgsIDMwMzQ1LCAzMDM1MSwgMzAzNTcsIDMwMzYzLCAzMDM2OSwgMzAzNzYsIDMwMzgyLCAzMDM4OCwgMzAzOTQsIAotICAgIDMwNDAwLCAzMDQwNiwgMzA0MTIsIDMwNDE4LCAzMDQyNSwgMzA0MzEsIDMwNDM4LCAzMDQ0NCwgMzA0NTAsIDMwNDU2LCAKLSAgICAzMDQ2MiwgMzA0NjgsIDMwNDc0LCAzMDQ4MCwgMzA0ODYsIDMwNDkyLCAxMTQxOCwgMzA0OTgsIDMwNTAzLCAzMDUwOCwgCi0gICAgMzA1MTEsIDMwNTE5LCAzMDUyNCwgMzA1MzMsIDMwNTM5LCAzMDU0NCwgMzA1NDksIDMwNTU0LCAzMDU1OCwgMzA1NjMsIAotICAgIDMwNTY4LCAzMDU3MywgMzA1NzgsIDMwNTgzLCAzMDU5MCwgMzA1OTcsIDMwNjAzLCAzMDYwOSwgMzA2MTQsIDE2MzAzLCAKLSAgICAzMDYyMSwgMzA2MjcsIDMwNjM0LCAzMDY0MCwgMzA2NDYsIDMwNjUxLCAzMDY1OSwgMzA2NjQsIDE2MDgyLCAzMDY2OCwgCi0gICAgMzA2NzMsIDMwNjc4LCAzMDY4NCwgMzA2ODksIDMwNjk0LCAzMDY5OCwgMzA3MDMsIDMwNzA4LCAzMDcxNCwgMzA3MTksIAotICAgIDMwNzI0LCAzMDcyOCwgMzA3MzMsIDMwNzM4LCAzMDc0MiwgMzA3NDcsIDMwNzUyLCAzMDc1NywgMzA3NjEsIDMwNzY2LCAKLSAgICAzMDc3MSwgMzA3NzYsIDMwNzgwLCAzMDc4NCwgMTUyOTMsIDMwNzg4LCAzMDc5NywgMzA4MDMsIDMwODA5LCAzMDgxOCwgCi0gICAgMzA4MjYsIDMwODM1LCAzMDg0MywgMzA4NDgsIDMwODUyLCAzMDg1OSwgMzA4NjUsIDMwODY5LCAzMDg3MiwgMzA4NzcsIAotICAgIDMwODg2LCAzMDg5NCwgMzA4OTksIDE0OTUsIDMwOTA1LCAzMDkwOCwgMzA5MTIsIDIyNDI0LCAyMjQzMCwgMzA5MTgsIAotICAgIDMwOTIyLCAzMDkzMywgMzA5NDQsIDMwOTU1LCAzMDk2NywgMzA5NzQsIDMwOTgxLCAzMDk4NiwgMzA5OTAsIDU5MDksIDc1NSwgCi0gICAgMjEyNzksIDMwOTk4LCAzMTAwMywgMzEwMDcsIDMxMDEyLCAzMTAxNiwgMzEwMjIsIDMxMDI3LCAzMTAzMywgMzEwMzgsIAotICAgIDMxMDQ0LCAzMTA0OSwgMzEwNTUsIDMxMDYwLCAzMTA2NiwgMzEwNzIsIDMxMDc4LCAzMTA4MywgMzEwMzksIDMxMDQ1LCAKLSAgICAzMTA4NywgMzEwOTIsIDMxMDk4LCAzMTEwMywgMzExMDksIDMxMTE0LCAzMTEyMCwgMzExMjUsIDMxMDUwLCAxMDQyMSwgCi0gICAgMzExMjksIDMxMDYxLCAzMTA2NywgMzEwNzMsIDI4MzEsIDM0MjMsIDMxMTM1LCAzMTEzOCwgMzExNDQsIDMxMTUwLCAKLSAgICAzMTE1NiwgMzExNjMsIDMxMTY5LCAzMTE3NSwgMzExODEsIDMxMTg3LCAzMTE5MywgMzExOTksIDMxMjA1LCAzMTIxMSwgCi0gICAgMzEyMTcsIDMxMjIzLCAzMTIyOSwgMzEyMzUsIDMxMjQyLCAzMTI0OCwgMzEyNTQsIDMxMjYwLCAzMTI2NiwgMzEyNzIsIAotICAgIDMxMjc1LCAzMTI4MCwgMzEyODMsIDMxMjkwLCAzMTI5OCwgMzEzMDMsIDMxMzA4LCAzMTMxNCwgMzEzMTksIDMxMzI0LCAKLSAgICAzMTMyOCwgMzEzMzMsIDMxMzM5LCAzMTM0NCwgMzEzNTAsIDMxMzU1LCAzMTM2MSwgMzEzNjYsIDMxMzcyLCAzMTM3OCwgCi0gICAgMzEzODIsIDMxMzg3LCAzMTM5MiwgMzEzOTcsIDMxNDAyLCAzMTQwNiwgMzE0MTEsIDMxNDE2LCAzMTQyMSwgMzE0MjcsIAotICAgIDMxNDMzLCAzMTQzOSwgMzE0NDUsIDMxNDUwLCAzMTQ1NCwgMzE0NTcsIDMxNDYzLCAzMTQ2OSwgMzE0NzgsIDMxNDg2LCAKLSAgICAzMTQ5MywgMzE0OTgsIDMxNTAyLCAzMTUwNiwgMzE1MTEsIDE1MTQ2LCAzMTUxNiwgMzE1MjQsIDMxNTMwLCAzNjgzLCAKLSAgICAxMzc3LCAzMTUzNSwgMzE1MzksIDgwMDUsIDMxNTQ1LCAzMTU1MSwgMzE1NTgsIDgwMTQsIDMxNTYyLCAzMTU2OCwgMzE1NzUsIAotICAgIDMxNTgxLCAzMTU5MCwgMzE1OTgsIDMxNjEwLCAzMTYxNCwgMzE2MjEsIDMxNjI3LCAzMTYzMSwgMzE2MzQsIDMxNjQzLCAKLSAgICAzMTY1MSwgMzEwNDAsIDMxNjU2LCAzMTY2NiwgMzE2NzYsIDMxNjg2LCAzMTY5MiwgMzE2OTcsIDMxNzA3LCAzMTcxMiwgCi0gICAgMzE3MjUsIDMxNzM5LCAzMTc1MCwgMzE3NjIsIDMxNzc0LCAzMTc4OCwgMzE4MDEsIDMxODEzLCAzMTgyNSwgMTQ2MDAsIAotICAgIDMxODM5LCAzMTg0NCwgMzE4NDksIDMxODUzLCAzMTg1NywgMzE4NjEsIDE3ODAsIDI3MTc2LCAzMTg2NSwgMzE4NzAsIAotICAgIDMxMDg4LCAzMTg3NSwgMzE4NzgsIDMxODgzLCAzMTg4OCwgMzE4OTMsIDMxODk5LCAzMTkwNSwgMTAwOTgsIDMxOTEwLCAKLSAgICAzMTkxNywgMTU2OTcsIDMxOTIzLCAzMTkyOCwgMzE5MzMsIDMxOTM3LCAzMTk0MiwgMzE5NDcsIDMxMDkzLCAzMTk1MiwgCi0gICAgMzE5NTcsIDMxOTYyLCAzMTk2OCwgMzEwOTksIDMxOTczLCAzMTk3NiwgMzE5ODMsIDMxOTkxLCAzMTk5NywgMzIwMDMsIAotICAgIDMyMDA5LCAzMjAyMCwgMzIwMjUsIDMyMDMyLCAzMjAzOSwgMzIwNDYsIDMyMDU0LCAzMjA2MywgMzIwNzIsIDMyMDc4LCAKLSAgICAzMjA4NCwgMzIwOTIsIDMxMTA0LCAzMjA5NywgMzIxMDMsIDMyMTA5LCAzMTExMCwgMzIxMTQsIDMyMTE5LCAzMjEyNywgCi0gICAgMzIxMzUsIDMyMTQxLCAzMjE0OCwgMzIxNTQsIDMyMTYxLCAzMjE2OCwgMzIxNzQsIDMyMTgyLCAzMjE5MiwgMzIxOTksIAotICAgIDMyMjA0LCAzMjIxMCwgMzIyMTUsIDMyMjIwLCAzMjIyNywgMzIyMzYsIDMyMjQ0LCAzMjI0OSwgMzIyNTUsIDMyMjYyLCAKLSAgICAzMjI3MCwgMzIyNzYsIDMyMjgxLCAzMjI4NywgMzIyOTYsIDI3OTU3LCAzMjMwMywgMzIzMDcsIDMyMzEyLCAzMjMyMSwgCi0gICAgMzIzMjYsIDMyMzMxLCAzMjMzNiwgMTI0MDUsIDMyMzQ0LCAzMjM0OSwgMzIzNTQsIDMyMzU5LCAzMjM2MywgMzIzNjgsIAotICAgIDMyMzczLCAzMjM4MCwgMzIzODUsIDMyMzkwLCAzMjM5NSwgMzExMTUsIDIxMjE2LCAzMjQwMSwgMjUxOSwgMjQ0LCAzMjQwNCwgCi0gICAgMzI0MDcsIDMyNDExLCAzMjQxNSwgMzI0MjUsIDMyNDMzLCAzMjQzNywgMzI0NDQsIDMyNDUxLCAzMjQ1NSwgMzI0NTgsIAotICAgIDMyNDY0LCAzMjQ3MiwgMzI0ODAsIDMyNDg0LCAzMjQ4OCwgMzI0OTEsIDMyNDk4LCAzMjUwMiwgMzI1MDYsIDMyNTEzLCAKLSAgICAzMjUyMSwgMzEwNTEsIDMyNTI4LCAzMjUzNiwgMTAxNTgsIDY2NCwgMzA4LCAzMjU0OCwgMzI1NTMsIDMyNTU4LCAzMjU2NCwgCi0gICAgMzI1NjksIDMyNTc0LCAzNzA0LCAzMjU3OSwgMzI1ODIsIDMyNTg3LCAzMjU5MiwgMzI1OTcsIDMyNjAyLCAzMjYwNywgCi0gICAgMzI2MTQsIDIyNTI5LCAzMjYxOSwgMzI2MjQsIDMyNjI5LCAzMjYzNCwgMzI2MzksIDMyNjQ1LCAzMjY1MCwgMzI2NTYsIAotICAgIDMxMjg2LCAzMjY2MiwgMzI2NjcsIDMyNjczLCAzMjY3OSwgMzI2ODksIDMyNjk0LCAzMjY5OSwgMzI3MDMsIDMyNzA4LCAKLSAgICAzMjcxMywgMzI3MTgsIDMyNzIzLCAzMjczNiwgMzI3NDEsIDIyMzAyLCAxNjcwNSwgMzcxMCwgMzI3NDUsIDMyNzUwLCAKLSAgICAzMjc1NSwgMzI3NjEsIDMyNzY2LCAzMjc3MSwgMzI3NzUsIDMyNzgwLCAzMjc4NSwgMzI3OTEsIDMyNzk2LCAzMjgwMSwgCi0gICAgMTM4MiwgMzI4MDUsIDMyODEwLCAzMjgxNSwgMzI4MjAsIDMyODI0LCAzMjgyOSwgMzI4MzQsIDMyODM5LCAzMjg0NSwgCi0gICAgMzI4NTEsIDMyODU2LCAzMjg2MCwgMzI4NjQsIDMyODY5LCAzMjg3NCwgMzI4NzksIDMyODgzLCAzMjg5MSwgMzI4OTUsIAotICAgIDMyOTAxLCAzMjkwNSwgMzI5MTIsIDE2NDk4LCAzMTA2MiwgMzI5MTgsIDMyOTI1LCAzMjkzMywgMzI5NDAsIDMyOTQ2LCAKLSAgICAzMjk1OSwgMzI5NzEsIDMyOTc3LCAzMjk4MSwgMjc3MywgMzI5ODUsIDMyOTg5LCAzMjQ5MywgMzI5OTgsIDMzMDA5LCAKLSAgICAzMzAxNCwgMzMwMTksIDMzMDI0LCAzMzAyOCwgMzMwMzMsIDIyNDM1LCAzMzAzNywgMzMwNDEsIDMzMDQ2LCAzMTA2OCwgCi0gICAgMjEzMDAsIDMzMDUwLCAzMzA1NSwgMzMwNjEsIDMzMDY2LCAzMzA3MCwgMzMwNzQsIDMzMDc3LCAzMzA4MSwgMzMwODcsIAotICAgIDMzMDk4LCAzMzExMCwgMzEwNzQsIDMzMTE1LCAzMzExOCwgMzMxMjIsIDM0NywgMzMxMjcsIDMzMTMyLCAzMzEzNywgCi0gICAgMzMxNDIsIDMzMTQ3LCAzMzE1MiwgMzMxNTgsIDMzMTYzLCAzMzE2OCwgMzMxNzQsIDMzMTc5LCAzMzE4NSwgMzMxOTAsIAotICAgIDMzMTk2LCAzMzIwMSwgMzMyMDYsIDMzMjExLCAzMzIxNiwgMzMyMjEsIDMzMjI2LCAzMzIzMSwgMzMyMzYsIDMzMjQyLCAKLSAgICAzMzI0NywgMzMyNTIsIDMzMjU3LCAzMzI2MiwgMzMyNjcsIDMzMjcyLCAzMzI3NywgMzMyODMsIDMzMjg5LCAzMzI5NCwgCi0gICAgMzMyOTksIDMzMzA0LCAzMzMwOSwgMzMzMTQsIDMzMzE5LCAzMzMyNCwgMzMzMjksIDMzMzM0LCAzMzMzOSwgMzMzNDQsIAotICAgIDMzMzQ5LCAzMzM1NCwgMzMzNTksIDMzMzY0LCAzMzM2OSwgMzMzNzQsIDMzMzc5LCAzMzM4NSwgMzEzLCAyNiwgMzMzOTAsIAotICAgIDMzMzk0LCAzMzM5OCwgMzM0MDYsIDMzNDEwLCAzMzQxNCwgMzM0MTcsIDMzNDIwLCAzMzQyMiwgMzM0MjcsIDMzNDMxLCAKLSAgICAzMzQzNiwgMzM0NDAsIDMzNDQ1LCAzMzQ0OSwgMzM0NTQsIDMzNDU4LCAzMzQ2MSwgMzM0NjMsIDMzNDY3LCAzMzQ3MiwgCi0gICAgMzM0NzYsIDMzNDg3LCAzMzQ5MCwgMzM0OTIsIDMzNDk2LCAzMzUwOCwgMzM1MTcsIDMzNTIxLCAzMzUyNSwgMzM1MzEsIAotICAgIDMzNTM2LCAzMzU0NSwgMzM1NTEsIDMzNTU2LCAzMzU2MSwgMzM1NjUsIDMzNTcwLCAzMzU3NywgMzM1ODIsIDMzNTg4LCAKLSAgICAzMzU5MywgMzM1OTcsIDMzNjA0LCAyNTcxOCwgMjU3MjgsIDMzNjA4LCAzMzYxMywgMzM2MTgsIDMzNjIzLCAzMzYzMCwgCi0gICAgMzM2MzQsIDMzNjQxLCA4MTEzLCAzMzY0NywgMzM2NTYsIDMzNjY0LCAzMzY3OSwgMzM2OTMsIDMzNzAxLCAzMzcxMiwgCi0gICAgMzM3MjEsIDMzNzI2LCA3MjI3LCAzMzczNiwgMzM3NDEsIDMzNzQ2LCAzMzc1MCwgMzM3NTMsIDMzNzU3LCAzMzc2MiwgCi0gICAgMzM3NjYsIDMzNzczLCAzMzc3OCwgMzM3ODMsIDg5MTIsIDMzNzkzLCAzMzc5NSwgMzM3OTgsIDMzODAyLCAzMzgwOCwgCi0gICAgMzM4MTIsIDMzODE3LCAzMzgyMiwgMzM4MjgsIDMzODMzLCAzMzgzOSwgMzM4NDQsIDMzODU0LCAzMzg2MywgMzM4NzEsIAotICAgIDMzODc2LCAzMzg4MiwgMzM4ODcsIDMzODk0LCAzMzg5OCwgMzM5MDYsIDMzOTEzLCAzMzkyNiwgMzM5MzQsIDMzOTM4LCAKLSAgICAzMzk0OCwgMzM5NTMsIDMzOTU3LCAzMzk2NSwgMzM5NzMsIDMzOTc3LCAzMzk4NiwgMzM5OTIsIDMzOTk3LCAzNDAwNSwgCi0gICAgMzQwMTUsIDM0MDI0LCAzNDAzMywgMzQwNDIsIDM0MDUzLCAzNDA2MSwgMzQwNzIsIDM0MDgxLCAzNDA4OCwgMzQwOTQsIAotICAgIDM0MDk5LCAzNDExMCwgMzQxMTUsIDM0MTE5LCAzNDEyMiwgMzQxMjYsIDM0MTM0LCAzNDE0MCwgMzQxNDgsIDM0MTU1LCAKLSAgICAzNDE2MSwgMzQxNjYsIDM0MTcyLCAyNDE4LCAzNDE3NiwgMzQxNzgsIDM0MTgzLCAzNDE4OCwgMzQxOTMsIDM0MTk2LCAKLSAgICAzNDE5OCwgMzQyMDIsIDM0MjA1LCAzNDIxMiwgMzQyMTYsIDk4OTEsIDM0MjIwLCAzNDIyNiwgMzQyMzYsIDM0MjQxLCAKLSAgICAzNDI0NywgMzQyNTEsIDM0MjU2LCAzNDI2OSwgMjYxMDQsIDM0Mjc1LCAzNDI4NCwgMTc0NzUsIDM0MjkxLCAzNDMwMCwgCi0gICAgMzE2NzIsIDM0MzA4LCAzNDMxMywgMzQzMTcsIDM0MzI1LCAzNDMzMiwgMzQzMzcsIDM0MzQxLCAzNDM0NiwgMzQzNTAsIAotICAgIDM0MzU4LCAzNDM2NCwgMzQzNzAsIDM0Mzc1LCAzNDM3OSwgMzQzODIsIDM0Mzg3LCAzNDQwMCwgMzQ0MTYsIDIyOTk2LCAKLSAgICAzNDQzMywgMzQ0NDUsIDM0NDYyLCAzNDQ3NCwgMzQ0ODgsIDIzMDEzLCAyMzAzMiwgMzQ1MDAsIDM0NTEyLCAyNjgwLCAKLSAgICAzNDUyNiwgMzQ1MzEsIDM0NTM2LCAzNDU0MSwgMzQ1NDUsIDM0NTUyLCAzNDU2NCwgMzQ1NzAsIDM0NTczLCAzNDU4NCwgCi0gICAgMzQ1OTUsIDM0NjAwLCAzMjA4OSwgNjk1LCAzNDYwNCwgMzQ2MDgsIDM0NjEyLCAzNDYxNSwgMzQ2MjAsIDM0NjI1LCAKLSAgICAzNDYzMSwgMzQ2MzYsIDM0NjQxLCAzNDY0NywgMzQ2NTMsIDM0NjU4LCAzNDY2MiwgMzQ2NjcsIDM0NjcyLCAzNDY3NywgCi0gICAgMzQ2ODEsIDM0Njg0LCAzNDY5MCwgMzQ2OTUsIDM0NzAwLCAzNDcwNSwgMzQ3MDksIDM0NzE0LCAzNDcyMCwgMzQ3MjgsIAotICAgIDI2MzM3LCAzNDczMywgMzQ3MzgsIDM0NzQ1LCAzNDc1MSwgMzQ3NTcsIDM0NzYyLCAzNDc3MCwgMjI1MzgsIDM0Nzc3LCAKLSAgICAzNDc4MiwgMzQ3ODcsIDM0NzkyLCAzNDc5NiwgMzQ3OTksIDM0ODA0LCAzNDgwOCwgMzQ4MTIsIDM0ODE5LCAzNDgyNSwgCi0gICAgMzQ4MzEsIDM0ODM3LCAzNDg0NCwgMzQ4NDksIDM0ODU1LCAzMzk2OCwgMzQ4NTksIDM0ODYzLCAzNDg2OCwgMzQ4ODEsIAotICAgIDM0ODg2LCAzNDg5MiwgMzQ5MDAsIDM0OTA3LCAzNDkxNSwgMzQ5MjUsIDM0OTMxLCAzNDkzNywgMzQ5NDMsIDM0OTQ3LCAKLSAgICAzNDk1NiwgMzQ5NjQsIDM0OTcxLCAzNDk3NiwgMzQ5ODEsIDEwNDQ0LCAzNDk4NiwgMzQ5OTQsIDM1MDAxLCAzNTAwNywgCi0gICAgMzUwMTcsIDM1MDIyLCAzNTAyOCwgMzUwMzYsIDM2MDgsIDM1MDQzLCAzNTA1MCwgMzYxNCwgMzUwNTQsIDM1MDU5LCAKLSAgICAzNTA3MCwgMzUwNzcsIDM1MDgzLCAzNTA5MiwgMzUwOTYsIDQwMTUsIDM1MDk5LCAzNTEwNiwgMzUxMTIsIDM1MTE4LCAKLSAgICAzNTEyNiwgMzUxMzYsIDI5MDYzLCAzNTE0MywgMzUxNTEsIDM1MTU2LCAzNTE2MiwgMzUxNjcsIDI1OTY0LCAzNTE3MywgCi0gICAgMzUxODAsIDM1MTg2LCAzNTE5NSwgMjM2NzcsIDM1MjAyLCAzNTIwNywgMzUyMTEsIDM1MjE5LCAzNTIyNywgOTYwNywgCi0gICAgNTg5NSwgMzUyMzQsIDM1MjM4LCAzNTI0MCwgMzUyNDQsIDM1MjQ5LCAzNTI1MSwgMzUyNTcsIDM1MjYyLCAzNTI2NywgCi0gICAgMzUyNzQsIDMyNjEwLCAzNTI4MCwgMzUyODUsIDM1Mjg5LCAzNTI5NCwgMzUyOTgsIDM1MzA3LCAzNTMxMSwgMzUzMTcsIAotICAgIDM1MzI0LCAzNTMzMCwgMzUzMzcsIDM1MzQyLCAzNTM1MSwgMzUzNTYsIDM1MzYwLCAzNTM2NSwgMzUzNzIsIDM1MzgwLCAKLSAgICAzNTM4OCwgMzUzOTMsIDIxMzU2LCAzNTM5NywgMzU0MDAsIDM1NDA0LCAzNTQwOCwgMzU0MTIsIDM1NDE1LCAzNTQxNywgCi0gICAgMzU0MjUsIDM1NDI5LCAzNTQzNiwgMzU0NDAsIDM1NDQ0LCAzNTQ1MiwgMzU0NTksIDM1NDY5LCAzNTQ3MywgMzU0NzcsIAotICAgIDM1NDg1LCAzNTQ5MywgMzU0OTksIDM1NTA0LCAzNTUxMywgMTMzNTcsIDM1NTE5LCAzNTUyOCwgMzU1MzMsIDM1NTQwLCAKLSAgICAzNTU0OCwgMzU1NTYsIDM1NTY0LCAzNTU3MSwgMzU1NzgsIDM1NTg1LCAzNTU5MiwgMzU1OTksIDM1NjA0LCAzNTYxMCwgCi0gICAgMzU2MjcsIDM1NjM1LCAzNTY0NSwgMzU2NTMsIDM1NjYwLCA0MDcsIDM1NjY0LCAzNTY3MCwgMzU2NzQsIDM1Njc5LCAKLSAgICAzMzcxNywgMzU2ODUsIDM1Njg4LCAzNTY5MiwgMzU3MDAsIDM2MTksIDM1NzA4LCAzNTcxNCwgMzU3MjAsIDM1NzI5LCAKLSAgICAzNTczOSwgMzU3NDYsIDM1NzUyLCAzNjI1LCAzNjMxLCAzNTc2MSwgMzU3NjgsIDM1Nzc2LCAzNTc4MSwgMzU3ODUsIAotICAgIDM1NzkyLCAzNTgwMCwgMzU4MDcsIDM1ODEzLCAzNTgyMiwgMzU4MzIsIDM1ODM4LCAzNTg0NiwgMzU4NTUsIDM1ODYyLCAKLSAgICAzNTg3MCwgMzU4NzcsIDIyMDMyLCAzNTg4MSwgMzU4ODgsIDM1ODk0LCAzNTkwNCwgMzU5MTMsIDM1OTI0LCAzNTkyOCwgCi0gICAgMzU5MzgsIDM1OTQ0LCAzNTk1MSwgMzU5NTksIDM1OTY4LCAzNTk3NywgMzU5ODcsIDM1OTk4LCAzNjAwNSwgMzYwMTAsIAotICAgIDM2MDE3LCAzMDI5LCAzNjAyNSwgMzYwMzEsIDM2MDM2LCAzNjA0MiwgMzYwNDgsIDM2MDUzLCAzNjA2NiwgMzYwNzksIAotICAgIDM2MDkyLCAzNjA5OSwgMzYxMDUsIDM2MTEzLCAzNjEyMSwgMzYxMjYsIDM2MTMwLCAxNDY5LCAzNjEzNCwgMzYxMzksIAotICAgIDM2MTQ0LCAzNjE0OSwgMzYxNTQsIDM2MTYwLCAzNjE2NSwgMzYxNzAsIDM2MTc1LCAzNjE4MCwgMzYxODUsIDM2MTkwLCAKLSAgICAzNjE5NSwgMzYyMDEsIDM2MjA3LCAzNjIxMiwgMzYyMTcsIDM2MjIzLCAzNjIyOCwgMzYyMzMsIDM2MjM4LCAzNjI0NCwgCi0gICAgMzYyNDksIDM2MjU0LCAzNjI1OSwgMzYyNjQsIDM2MjcwLCAzNjI3NSwgMzYyODAsIDM2Mjg2LCAzNjI5MSwgMzYyOTYsIAotICAgIDM2MzAxLCAzNjMwNiwgMzYzMTEsIDM2MzE3LCAzNjMyMiwgMzYzMjgsIDM2MzMzLCAzNjMzOSwgMzYzNDQsIDM2MzQ5LCAKLSAgICAzNjM1NCwgMzYzNjAsIDM2MzY2LCAzNjM3MiwgMzYzNzgsIDM2Mzg0LCAzNjM5MCwgMzYzOTYsIDM2NDAyLCAzNjQwNywgCi0gICAgMzY0MTIsIDM2NDE4LCAzNjQyMywgMzY0MjgsIDM2NDMzLCAzNjQzOCwgMzY0NDMsIDM2NDQ4LCAzNjQ1MywgMzY0NTksIAotICAgIDM2NDY0LCAzNjQ2OSwgMzY0NzUsIDM2NDgxLCAxMDEsIDM2NDg2LCAzNjQ4OCwgMzY0OTIsIDM2NDk2LCAzNjUwMCwgCi0gICAgMzY1MDUsIDM2NTA5LCA5NTI4LCAzNjUxMywgMzY1MTksIDE3NDEsIDYyODAsIDM2NTI1LCAzNjUyOCwgMzY1MzMsIDM2NTM3LCAKLSAgICAzNjU0MiwgMzY1NDYsIDM2NTUwLCAzNjU1NSwgMTAyNDUsIDM2NTU5LCAzNjU2MywgMzY1NjcsIDM2NTcxLCAxNTM4NSwgCi0gICAgMzY1NzYsIDM2NTgwLCAzNjU4NSwgMzY1OTAsIDM2NTk1LCAzNjU5OSwgMzY2MDYsIDI2MTI4LCAzNjYxMiwgMzY2MTUsIAotICAgIDM2NjE5LCAzNjYyNCwgMzY2MzAsIDM2NjM0LCAzNjY0MiwgMzY2NDgsIDM2NjUzLCAzNjY1NywgMzY2NjMsIDM2NjY3LCAKLSAgICAzNjY3MSwgMzQ2MiwgMzQ2NywgMjkyNTUsIDM2Njc0LCAzNjY3OCwgMzY2ODIsIDM2Njg2LCAzNjY5MCwgMzY2OTgsIAotICAgIDM2NzA1LCAzNjcwOSwgMzY3MTYsIDM2NzIxLCAzMTcsIDM2NzI2LCAzNjczMCwgMzY3MzYsIDM2NzQ4LCAzNjc1NCwgCi0gICAgMzY3NjAsIDM2NzY0LCAzNjc3MCwgMzY3NzksIDM2NzgzLCAzNjc4NywgMzY3OTIsIDM2Nzk4LCAzNjgwMywgMzY4MDcsIAotICAgIDM2ODEyLCAzNjgxNiwgMzY4MjAsIDM2ODI3LCAzNjgzMywgMzY4MzgsIDM2ODUzLCAzNjg2OCwgMzY4ODMsIDM2ODk5LCAKLSAgICAzNjkxNywgMTAxOTUsIDM2OTMxLCAzNjkzOCwgMzY5NDIsIDM2OTQ1LCAzNjk1NCwgMzY5NTksIDM2OTYzLCAzNjk3MSwgCi0gICAgMzM5MTksIDM2OTc5LCAzNjk4MywgMzY5OTMsIDM3MDA0LCAyOTIyNSwgMzcwMTcsIDM3MDIxLCAzNzAzMCwgMzcwMzgsIAotICAgIDk3ODUsIDE0OTEzLCAzNzA0MiwgMjI0NDcsIDM3MDQ1LCAzMDE3MywgMzcwNTAsIDk3ODQsIDM3MDU1LCAzNzA2MSwgCi0gICAgMzcwNjYsIDM3MDcyLCAzNzA3NywgMzcwODMsIDM3MDg4LCAzNzA5NCwgMzcwOTksIDM3MTA1LCAzNzExMSwgMzcxMTcsIAotICAgIDM3MTIyLCAzNzA3OCwgMzcwODQsIDM3MDg5LCAzNzA5NSwgMzcxMDAsIDM3MTA2LCAzNzExMiwgODEyNiwgMzg3NCwgCi0gICAgMzcxMjYsIDM3MTM0LCAzNzEzOCwgMzcxNDEsIDM3MTQ1LCAzNzE1MCwgMzcxNTUsIDM3MTYxLCAzNzE2NywgMzcxNzIsIAotICAgIDM3MTc2LCAyNTk3NiwgMzcxODAsIDM3MTg0LCAzNzE5MCwgMzcxOTQsIDkwNDksIDM3MjAzLCAzNzIxMCwgMzcyMTQsIAotICAgIDExODc1LCAzNzIyMSwgMzcyMjcsIDM3MjMyLCAzNzIzOSwgMzcyNDYsIDM3MjUzLCAyODU3MSwgODA0OSwgMzcyNjAsIAotICAgIDM3MjY3LCAzNzI3NCwgMzcyODAsIDM3Mjg1LCAzNzI5MiwgMzczMDMsIDM3MzA5LCAzNzMxNCwgMzczMTksIDM3MzI0LCAKLSAgICAzNzMzMSwgMzcwNzksIDM3MzM1LCAzNzM0NSwgMzczNTYsIDM3MzYyLCAzNzM2NywgMzczNzIsIDM3Mzc3LCAzNzM4MiwgCi0gICAgMzczODcsIDM3MzkxLCAzNzM5NSwgMzc0MDEsIDM3NDA5LCAyMzE5LCA4NjUsIDEwMjYxLCAxMDI3MywgMTAyNzgsIDEwMjg0LCAKLSAgICAzNzQxOCwgMTAyODksIDEwMjk0LCAxMDMwMCwgMzc0MjMsIDM3NDMzLCAzNzQzNywgMTAzMDUsIDM3NDQyLCAxNjkwMywgCi0gICAgMzc0NDUsIDM3NDUwLCAzNzQ1NCwgMzc0NTksIDM3NDY0LCAzNzQ3MSwgMzc0NzgsIDM3NDgyLCAzNzQ4NSwgMzc0OTMsIAotICAgIDEwMjA4LCAzNzUwMCwgMzc1MDMsIDM3NTA5LCAzNzUxOSwgNTkyOSwgMzc1MjgsIDM3NTMyLCAzNzU0MCwgMzc1NDQsIAotICAgIDM3NTU0LCAzNzU2MCwgMzc1NzEsIDM3NTc3LCAzNzU4MywgMzc1ODgsIDM3NTk0LCAzNzYwMCwgMzc2MDYsIDM3NjExLCAKLSAgICAzNzYxNCwgMzc2MjEsIDM3NjI3LCAzNzYzMiwgMzc2MzksIDM3NjQ2LCAzNzY1MCwgMzc2NjAsIDM3NjczLCAzNzY4MiwgCi0gICAgMzc2OTEsIDM3NzAyLCAzNzcxNSwgMzc3MjYsIDM3NzM1LCAzNzc0NiwgMzc3NTEsIDM3NzYwLCAzNzc2NSwgMTAzMTAsIAotICAgIDM3NzcxLCAzNzc3OCwgMzc3ODYsIDM3NzkxLCAzNzc5NSwgMzc4MDIsIDM3ODA5LCAzODI5LCAxNiwgMzc4MTMsIDM3ODE4LCAKLSAgICAxNjc1NywgMzc4MjIsIDM3ODI1LCAzNzgyOCwgMjgwNzcsIDM3ODMyLCAyODU4MCwgMzc4NDAsIDM3ODQ0LCAzNzg0OCwgCi0gICAgMzc4NTEsIDM3ODU3LCAzNzEwMSwgMzc4NjMsIDM3ODcxLCAzNzg3NywgMzc4ODQsIDI4MDYwLCAzNzg4OCwgMjgyNTQsIAotICAgIDM3ODkyLCAzNzkwMSwgMzc5MDcsIDM3OTEzLCAzNzkxOCwgMzc5MjIsIDM3OTI4LCAzNzkzMiwgMzc5NDAsIDM3OTQ4LCAKLSAgICAyNjE5NCwgMzc5NTQsIDM3OTYxLCAzNzk2NywgMzc5NzIsIDM3OTc3LCAzNzk4MSwgMzc5ODcsIDM3OTkyLCAzNzk5OCwgCi0gICAgNDA1NiwgNzkxLCAzODAwNSwgMzgwMDksIDM4MDEyLCAxNTI3NSwgMzgwMjQsIDM1ODUxLCAzODAzNSwgMzgwMzgsIDM4MDQ1LCAKLSAgICAzODA0OSwgMzgwNTUsIDM4MDU5LCAzODA2NSwgMzgwNzAsIDM4MDc2LCAzODA4MSwgMzgwODYsIDM4MDkwLCAzODA5NCwgCi0gICAgMzgwOTksIDM4MTA0LCAzODExNCwgMzgxMjAsIDM4MTMzLCAzODEzOSwgMzgxNDUsIDM4MTUyLCAzODE1NywgMzgxNjMsIAotICAgIDM4MTY4LCAxNjY0MywgMTQ3MiwgMTAxOSwgMzEyMTgsIDMxMjI0LCAzODE3MywgMzEyMzAsIDMxMjQzLCAzMTI0OSwgCi0gICAgMzEyNTUsIDM4MTc5LCAzMTI2MSwgMzEyNjcsIDM4MTg1LCAzODE5MSwgMjIsIDM4MTk5LCAzODIwNiwgMzgyMTAsIDM4MjE0LCAKLSAgICAzODIyMiwgMzE5NzgsIDM4MjI2LCAzODIzMCwgMzgyMzcsIDM4MjQyLCAzODI0NiwgMzgyNTEsIDM4MjU3LCAzODI2MiwgCi0gICAgMzgyNjgsIDM4MjczLCAzODI3NywgMzgyODEsIDM4Mjg1LCAzODI5MCwgMzgyOTQsIDM4Mjk5LCAzODMwMywgMzgzMTAsIAotICAgIDM4MzE1LCAzODMxOSwgMzgzMjQsIDM4MzI4LCAzODMzMywgMzgzMzcsIDM4MzQyLCAzODM0OCwgMTU0OTUsIDE1NTAwLCAKLSAgICAzODM1MywgMzgzNTcsIDM4MzYwLCAzODM2NCwgMjExODMsIDM4MzY5LCAzODM3MywgMzgzNzksIDM4Mzg2LCAzODM5MSwgCi0gICAgMzg0MDEsIDM4NDA2LCAzODQxNCwgMzg0MTgsIDM4NDIxLCAzMTk5MywgMzg0MjUsIDQxMDksIDM4NDMwLCAzODQzNSwgCi0gICAgMzg0MzksIDM4NDQ0LCAzODQ0OCwgMzg0NTMsIDEzMzc1LCAzODQ2NCwgMzg0NjgsIDM4NDcxLCAzODQ3NiwgMzg0ODAsIAotICAgIDM4NDg0LCAzODQ4NywgMzg0OTEsIDgxNDUsIDEzMzkxLCAzODQ5NCwgMzg0OTcsIDM4NTAzLCAzODUwOCwgMzg1MTQsIAotICAgIDM4NTE5LCAzODUyNSwgMzg1MzAsIDM4NTM2LCAzODU0MSwgMzg1NDcsIDM4NTUzLCAzODU1OSwgMzg1NjQsIDM4NTY4LCAKLSAgICAzODU3MiwgMzg1ODEsIDM4NTk3LCAzODYxMywgMzg2MjMsIDI3OTY3LCAzODYzMCwgMzg2MzQsIDM4NjM5LCAzODY0NCwgCi0gICAgMzg2NDgsIDM4NjUyLCAzNTk3MiwgMzg2NTgsIDM4NjYzLCAzODY2NywgMzg2NzQsIDM4Njc5LCAzODY4MywgMzg2ODcsIAotICAgIDI2OTk2LCAzODY5MywgMjE0NTEsIDM4Njk4LCAzODcwNSwgMzg3MTMsIDM4NzE5LCAzODcyNiwgMzg3MzQsIDM4NzQwLCAKLSAgICAzODc0NCwgMzg3NTAsIDM4NzU4LCAzODc2MiwgMzg3NzEsIDk1MDksIDM4Nzc5LCAzODc4MywgMzg3OTEsIDM4Nzk4LCAKLSAgICAzODgwMywgMzg4MDgsIDM4ODEyLCAzODgxNSwgMzg4MTksIDM4ODIyLCAzODgyNiwgMzg4MzMsIDM4ODM4LCAzODg0NCwgCi0gICAgMjY0MTUsIDMxMjgxLCAzODg0OCwgMzg4NTUsIDM4ODYxLCAzODg2NywgMzg4NzIsIDM4ODc1LCAzODg3NywgMzg4ODQsIAotICAgIDM4ODkxLCAzODg5NywgMzg5MDEsIDM4OTA0LCAzODkwOCwgMzg5MTIsIDM4OTE2LCAzODkyMSwgMzg5MjUsIDM4OTI5LCAKLSAgICAzODkzMiwgMzg5MzYsIDM4OTUwLCAyMzA2MiwgMzg5NjksIDM4OTgyLCAzODk5NSwgMzkwMDgsIDIzMDgwLCAzOTAyMywgCi0gICAgMTA0OTcsIDM5MDM4LCAzOTA0NCwgMzkwNDgsIDM5MDUyLCAzOTA1OSwgMzkwNjQsIDM5MDY4LCAzOTA3NSwgMzkwODEsIAotICAgIDM5MDg2LCAzOTA5MiwgMzkxMDIsIDM5MTE0LCAzOTEyNSwgMzkxMzAsIDM5MTM3LCAzOTE0MSwgMzkxNDUsIDM5MTQ4LCAKLSAgICAxNTg5MSwgMzY3NywgMzkxNTYsIDE1NTIyLCAzOTE2OSwgMzkxNzYsIDM5MTgwLCAzOTE4NCwgMzkxODksIDM5MTk0LCAKLSAgICAzOTIwMCwgMzkyMDQsIDM5MjA4LCAzOTIxMSwgNzc0MiwgMTU1MzMsIDM5MjE2LCAzOTIyMCwgMzkyMjYsIDM5MjM1LCAKLSAgICAzOTI0MCwgMzkyNDcsIDM1ODI4LCAzOTI1MywgMzkyNTgsIDM5MjYyLCAzOTI2NywgMzkyNzQsIDM5Mjc4LCAzOTI4MSwgCi0gICAgMzkyODUsIDM5MjkwLCAxNDU2NSwgMzkyOTcsIDM5MzA0LCAxMDc3LCAzOTMwOCwgMzkzMTMsIDM5MzE4LCAzOTMyNCwgCi0gICAgMzkzMjksIDM5MzM0LCAzOTMzOCwgMzkzNDgsIDM5MzUzLCAzOTM1OSwgMzkzNjQsIDM5MzcwLCAzOTM3NSwgMzkzODEsIAotICAgIDM5MzkxLCAzOTM5NiwgMzk0MDEsIDM5NDA1LCA3MjI5LCA3MjQxLCAzOTQxMCwgMzk0MTMsIDM5NDIwLCAzOTQyNiwgCi0gICAgMzQwODQsIDM0MDkxLCAzOTQzNSwgMzk0MzksIDMyMDQxLCAzOTQ0NywgMzk0NTgsIDM5NDY2LCAzNjAyMCwgMzk0NzMsIAotICAgIDM5NDc4LCAzOTQ4MywgMzk0OTQsIDM5NTAxLCAzOTUxMiwgMzIwNjUsIDIxNDU3LCAzOTUyMCwgNzM1LCAzOTUyNSwgCi0gICAgMzk1MzEsIDI4MDUxLCAzOTUzNywgMzk1NDIsIDM5NTUyLCAzOTU2MSwgMzk1NjgsIDM5NTc0LCAzOTU3OCwgMzk1ODEsIAotICAgIDM5NTg4LCAzOTU5NCwgMzk2MDEsIDM5NjA3LCAzOTYxNywgMzk2MjUsIDM5NjMxLCAzOTYzNywgMzk2NDIsIDM5NjQ2LCAKLSAgICAzOTY1MywgMzk2NTksIDM5NjY2LCAzODkxNywgNTM1LCAxMzgxOCwgMzk2NzIsIDM5Njc3LCAzOTY4MCwgMzk2ODYsIAotICAgIDM5Njk0LCAxMzk2LCAzOTY5OSwgMzk3MDMsIDM5NzA4LCAzOTcxNSwgMzk3MjEsIDM5NzI1LCAzOTcyOSwgMzk3MzQsIAotICAgIDM5NzQzLCAzOTc1MCwgMzk3NjAsIDM5NzY2LCAyODA5NSwgMzk3ODMsIDM5NzkyLCAzOTgwMCwgMzk4MDYsIDM5ODExLCAKLSAgICAzOTgxOCwgMzk4MjQsIDM5ODMyLCAzOTg0MSwgMzk4NDksIDM5ODUzLCAzOTg1OCwgMzk4NjYsIDMyMDc0LCAzOTg3MiwgCi0gICAgMzk4OTEsIDE1ODI0LCAzOTkwNSwgMzk5MjEsIDM5OTM1LCAzOTk0MSwgMzk5NDYsIDM5OTUxLCAzOTk1NiwgMzk5NjIsIAotICAgIDMyMDgwLCAzOTk2NywgMzk5NzQsIDM5OTc5LCAzOTk4MywgMzQ1LCAyOTM2LCAzOTk5MCwgMzk5OTUsIDQwMDAwLCAyNzMyMiwgCi0gICAgMzk4MjEsIDQwMDA0LCA0MDAwOSwgNDAwMTcsIDQwMDIxLCA0MDAyNCwgNDAwMzAsIDQwMDM2LCA0MDA0MCwgMjgxNTAsIAotICAgIDQwMDQzLCA0MDA0OCwgNDAwNTIsIDQwMDU1LCA0MDA2MCwgNDAwNjQsIDQwMDY5LCA0MDA3NCwgNDAwNzgsIDQwMDgzLCAKLSAgICA0MDA4NywgNDAwOTEsIDIxMTc5LCAyMTE5MCwgNDAwOTUsIDQwMTAwLCA0MDEwNiwgMjY5NTMsIDQwMTExLCA0MDExNSwgCi0gICAgMjEyNjYsIDE2MDcyLCA0MDExOCwgNDAxMjMsIDQwMTI4LCA0MDEzMywgNDAxMzgsIDQwMTQzLCA0MDE0OCwgNDAxNTMsIAotICAgIDQ1MCwgNDksIDMxMjk5LCAzMTMwNCwgMzEzMDksIDMxMzE1LCAzMTMyMCwgMzEzMjUsIDQwMTU4LCAzMTMyOSwgNDAxNjIsIAotICAgIDQwMTY2LCA0MDE3MCwgMzEzMzQsIDMxMzQwLCA0MDE4NCwgMzEzNTEsIDMxMzU2LCA0MDE5MiwgNDAxOTcsIDMxMzYyLCAKLSAgICA0MDIwMiwgNDAyMDcsIDQwMjEyLCA0MDIxNywgNDAyMjMsIDQwMjI5LCA0MDIzNSwgMzEzNzksIDQwMjQ4LCA0MDI1NCwgCi0gICAgMzEzODMsIDQwMjU4LCAzMTM4OCwgNDAyNjMsIDMxMzkzLCAzMTM5OCwgNDAyNjYsIDQwMjcxLCA0MDI3NSwgMzA5NDgsIAotICAgIDQwMjgxLCAxMzU5OSwgNDAyODgsIDQwMjkzLCAzMTQwMywgNDAyOTcsIDQwMzAyLCA0MDMwNywgNDAzMTIsIDQwMzE2LCAKLSAgICA0MDMyMSwgNDAzMjYsIDQwMzMyLCA0MDMzNywgNDAzNDIsIDQwMzQ4LCA0MDM1NCwgNDAzNTksIDQwMzYzLCA0MDM2OCwgCi0gICAgNDAzNzMsIDQwMzc4LCA0MDM4MiwgNDAzODcsIDQwMzkyLCA0MDM5NywgNDA0MDMsIDQwNDA5LCA0MDQxNSwgNDA0MjAsIAotICAgIDQwNDI0LCA0MDQyOSwgNDA0MzMsIDMxNDA3LCAzMTQxMiwgMzE0MTcsIDQwNDM3LCA0MDQ0MSwgNDA0NDUsIDMxNDIyLCAKLSAgICAzMTQyOCwgMzE0MzQsIDMxNDQ2LCA0MDQ1NywgMjYwMTMsIDQwNDYxLCA0MDQ2NSwgNDA0NzAsIDQwNDc1LCA0MDQ4MCwgCi0gICAgNDA0ODUsIDQwNDg5LCA0MDQ5MywgNDA1MDMsIDQwNTA4LCA0MDUxMywgNDA1MTcsIDQwNTIxLCA0MDUyNCwgNDA1MzIsIAotICAgIDMxNDk0LCA0MDUzNywgMTQ3OSwgNDA1NDMsIDQwNTUxLCA0MDU2MCwgNDA1NjQsIDQwNTY4LCA0MDU3NiwgNDA1ODIsIAotICAgIDQwNTkwLCA0MDYwNiwgNDA2MTAsIDQwNjE0LCA0MDYxOSwgNDA2MzQsIDMxNTMxLCAxNzQ5LCAxMjA1NSwgNDA2MzgsIAotICAgIDEzNzgsIDQwNjUwLCA0MDY1MSwgNDA2NTksIDQwNjY2LCA0MDY3MSwgNDA2NzgsIDQwNjgzLCA5Mzc5LCAxMTE5LCAxMDMzMiwgCi0gICAgNDA2OTAsIDQwNjk1LCA0MDY5OCwgNDA3MDEsIDQwNzEwLCAxMjg2LCA0MDcxNSwgMzkwNjUsIDQwNzIyLCA0MDcyNywgCi0gICAgNDA3MzEsIDIyNTAzLCAyNTU3LCA0MDczOSwgMTA3NDEsIDQwNzQ5LCA0MDc1NSwgMjMzNywgMjM0NywgNDA3NjQsIDQwNzczLCAKLSAgICA0MDc4MywgNDA3OTQsIDMyOTMsIDM0MjM3LCAxMDM4NCwgMzgwNywgMTY2ODEsIDEyOTEsIDQwNzk5LCA0MDgwNywgNDA4MTQsIAotICAgIDQwODE5LCA0MDgyMywgNDA4MjcsIDIzODc1LCAxMDQxMSwgNDA4MzUsIDQwODQ0LCA0MDg1MywgNDA4NjEsIDQwODY4LCAKLSAgICA0MDg3OSwgNDA4ODQsIDQwODk3LCA0MDkxMCwgNDA5MjIsIDQwOTM0LCA0MDk0NiwgNDA5NTksIDQwOTcwLCA0MDk4MSwgCi0gICAgNDA5OTEsIDQwOTk5LCA0MTAwNywgNDEwMTksIDQxMDMxLCA0MTA0MiwgNDEwNTEsIDQxMDU5LCA0MTA2NiwgNDEwNzgsIAotICAgIDQxMDg1LCA0MTA5NCwgNDExMDEsIDQxMTE0LCA0MTExOSwgNDExMjksIDQxMTM0LCA0MTE0MCwgNDExNDUsIDM3MjExLCAKLSAgICA0MTE0OSwgNDExNTYsIDQxMTYwLCA0MTE2NywgNDExNzUsIDI1MTgsIDQxMTgyLCA0MTE5MywgNDEyMDMsIDQxMjEyLCAKLSAgICA0MTIyMCwgNDEyMzAsIDQxMjM4LCA0MTI0OCwgNDEyNTcsIDQxMjYyLCA0MTI2OCwgNDEyNzQsIDM3MDksIDQxMjg1LCAKLSAgICA0MTI5NSwgNDEzMDQsIDQxMzEzLCA0MTMyMywgNDEzMzEsIDQxMzQwLCA0MTM0NSwgNDEzNTAsIDQxMzU1LCAxNzA1LCAzNywgCi0gICAgNDEzNjMsIDQxMzcxLCA0MTM4MiwgNDEzOTMsIDE2MzU2LCA0MTQwMywgNDE0MDcsIDQxNDE0LCA0MTQyMCwgNDE0MjUsIAotICAgIDQxNDI5LCA0MTQ0MCwgNDE0NTAsIDQxNDU5LCA0MTQ3MCwgMTY3MzAsIDE2NzM1LCA0MTQ3NSwgNDE0ODQsIDQxNDg5LCAKLSAgICA0MTQ5OSwgNDE1MDQsIDQxNTEyLCA0MTUyMCwgNDE1MjcsIDQxNTMzLCA3MDc4LCAyMjgsIDQxNTM3LCA0MTU0MywgNDE1NDgsIAotICAgIDQxNTUxLCAyMTE3LCAzOTE4MSwgNDE1NTksIDQxNTYzLCA0MTU2NiwgMTUxMiwgNDE1NzIsIDEzOTgwLCAxMjk2LCA0MTU3NywgCi0gICAgNDE1OTAsIDQxNjA0LCAyNjQzLCA0MTYyMiwgNDE2MzQsIDQxNjQ2LCAyNjU3LCAyNjc0LCA0MTY2MCwgNDE2NzMsIDI2ODksIAotICAgIDQxNjg3LCA0MTY5OSwgMjcwNCwgNDE3MTMsIDEzMDIsIDEzMDgsIDEzMTQsIDEwNjU5LCA0MTcxOCwgNDE3MjMsIDQxNzI4LCAKLSAgICA0MTczMiwgNDE3NDcsIDQxNzYyLCA0MTc3NywgNDE3OTIsIDQxODA3LCA0MTgyMiwgNDE4MzcsIDQxODUyLCA0MTg2NywgCi0gICAgNDE4ODIsIDQxODk3LCA0MTkxMiwgNDE5MjcsIDQxOTQyLCA0MTk1NywgNDE5NzIsIDQxOTg3LCA0MjAwMiwgNDIwMTcsIAotICAgIDQyMDMyLCA0MjA0NywgNDIwNjIsIDQyMDc3LCA0MjA5MiwgNDIxMDcsIDQyMTIyLCA0MjEzNywgNDIxNTIsIDQyMTY3LCAKLSAgICA0MjE4MiwgNDIxOTcsIDQyMjEyLCA0MjIyNywgNDIyNDIsIDQyMjU3LCA0MjI3MiwgNDIyODcsIDQyMzAyLCA0MjMxNywgCi0gICAgNDIzMzIsIDQyMzQ3LCA0MjM2MiwgNDIzNzcsIDQyMzkyLCA0MjQwNywgNDI0MjIsIDQyNDM3LCA0MjQ1MiwgNDI0NjcsIAotICAgIDQyNDgyLCA0MjQ5NywgNDI1MTIsIDQyNTI3LCA0MjU0MiwgNDI1NTcsIDQyNTcyLCA0MjU4NywgNDI2MDIsIDQyNjE3LCAKLSAgICA0MjYzMiwgNDI2NDcsIDQyNjYyLCA0MjY3NywgNDI2OTIsIDQyNzA3LCA0MjcyMiwgNDI3MzcsIDQyNzUyLCA0Mjc2NywgCi0gICAgNDI3ODIsIDQyNzk3LCA0MjgxMiwgNDI4MjcsIDQyODQyLCA0Mjg1NywgNDI4NzIsIDQyODg3LCA0MjkwMiwgNDI5MTcsIAotICAgIDQyOTMyLCA0Mjk0NywgNDI5NjIsIDQyOTc3LCA0Mjk5MiwgNDMwMDcsIDQzMDIyLCA0MzAzNywgNDMwNTIsIDQzMDY3LCAKLSAgICA0MzA4MiwgNDMwOTcsIDQzMTEyLCA0MzEyNywgNDMxNDIsIDQzMTU3LCA0MzE3MiwgNDMxODcsIDQzMjAyLCA0MzIxNywgCi0gICAgNDMyMzIsIDQzMjQ3LCA0MzI2MiwgNDMyNzcsIDQzMjkyLCA0MzMwNywgNDMzMjIsIDQzMzM3LCA0MzM1MiwgNDMzNjcsIAotICAgIDQzMzgyLCA0MzM5NywgNDM0MTIsIDQzNDI3LCA0MzQ0MiwgNDM0NTcsIDQzNDcyLCA0MzQ4NywgNDM1MDIsIDQzNTE3LCAKLSAgICA0MzUzMiwgNDM1NDcsIDQzNTYyLCA0MzU3NywgNDM1OTIsIDQzNjA3LCA0MzYyMiwgNDM2MzcsIDQzNjUyLCA0MzY2NywgCi0gICAgNDM2ODIsIDQzNjk3LCA0MzcxMiwgNDM3MjcsIDQzNzQyLCA0Mzc1NywgNDM3NzIsIDQzNzg3LCA0MzgwMiwgNDM4MTcsIAotICAgIDQzODMyLCA0Mzg0NywgNDM4NjIsIDQzODc3LCA0Mzg5MiwgNDM5MDcsIDQzOTIyLCA0MzkzNywgNDM5NTIsIDQzOTY3LCAKLSAgICA0Mzk4MiwgNDM5OTcsIDQ0MDEyLCA0NDAyNywgNDQwNDIsIDQ0MDU3LCA0NDA3MiwgNDQwODcsIDQ0MTAyLCA0NDExNywgCi0gICAgNDQxMzIsIDQ0MTQ3LCA0NDE2MiwgNDQxNzcsIDQ0MTkyLCA0NDIwNywgNDQyMjIsIDQ0MjM3LCA0NDI1MiwgNDQyNjcsIAotICAgIDQ0MjgyLCA0NDI5NywgNDQzMTIsIDQ0MzI3LCA0NDM0MiwgNDQzNTcsIDQ0MzcyLCA0NDM4NywgNDQ0MDIsIDQ0NDE3LCAKLSAgICA0NDQzMiwgNDQ0NDcsIDQ0NDYyLCA0NDQ3NywgNDQ0OTIsIDQ0NTA3LCA0NDUyMiwgNDQ1MzcsIDQ0NTUyLCA0NDU2NywgCi0gICAgNDQ1ODIsIDQ0NTk3LCA0NDYxMiwgNDQ2MjcsIDQ0NjQyLCA0NDY1NywgNDQ2NzIsIDQ0Njg3LCA0NDcwMiwgNDQ3MTcsIAotICAgIDQ0NzMyLCA0NDc0NywgNDQ3NjIsIDQ0Nzc3LCA0NDc5MiwgNDQ4MDcsIDQ0ODIyLCA0NDgzNywgNDQ4NTIsIDQ0ODY3LCAKLSAgICA0NDg4MiwgNDQ4OTcsIDQ0OTEyLCA0NDkyNywgNDQ5NDIsIDQ0OTU3LCA0NDk3MiwgNDQ5ODcsIDQ1MDAyLCA0NTAxNywgCi0gICAgNDUwMzIsIDQ1MDQ3LCA0NTA2MiwgNDUwNzcsIDQ1MDkyLCA0NTEwNywgNDUxMjIsIDQ1MTM3LCA0NTE1MiwgNDUxNjcsIAotICAgIDQ1MTgyLCA0NTE5NywgNDUyMTIsIDQ1MjI3LCA0NTI0MiwgNDUyNTcsIDQ1MjcyLCA0NTI4NywgNDUzMDIsIDQ1MzE3LCAKLSAgICA0NTMzMiwgNDUzNDcsIDQ1MzYyLCA0NTM3NywgNDUzOTIsIDQ1NDA3LCA0NTQyMiwgNDU0MzcsIDQ1NDUyLCA0NTQ2NywgCi0gICAgNDU0ODIsIDQ1NDk3LCA0NTUxMiwgNDU1MjcsIDQ1NTQyLCA0NTU1NywgNDU1NzIsIDQ1NTg3LCA0NTYwMiwgNDU2MTcsIAotICAgIDQ1NjMyLCA0NTY0NywgNDU2NjIsIDQ1Njc3LCA0NTY5MiwgNDU3MDcsIDQ1NzIyLCA0NTczNywgNDU3NTIsIDQ1NzY3LCAKLSAgICA0NTc4MiwgNDU3OTcsIDQ1ODEyLCA0NTgyNywgNDU4NDIsIDQ1ODU3LCA0NTg3MiwgNDU4ODcsIDQ1OTAyLCA0NTkxNywgCi0gICAgNDU5MzIsIDQ1OTQ3LCA0NTk2MiwgNDU5NzcsIDQ1OTkyLCA0NjAwNywgNDYwMjIsIDQ2MDM3LCA0NjA1MiwgNDYwNjcsIAotICAgIDQ2MDgyLCA0NjA5NywgNDYxMTIsIDQ2MTI3LCA0NjE0MiwgNDYxNTcsIDQ2MTcyLCA0NjE4NywgNDYyMDIsIDQ2MjE3LCAKLSAgICA0NjIzMiwgNDYyNDcsIDQ2MjYyLCA0NjI3NywgNDYyOTIsIDQ2MzA3LCA0NjMyMiwgNDYzMzcsIDQ2MzUyLCA0NjM2NywgCi0gICAgNDYzODIsIDQ2Mzk3LCA0NjQxMiwgNDY0MjcsIDQ2NDQyLCA0NjQ1NywgNDY0NzIsIDQ2NDg3LCA0NjUwMiwgNDY1MTcsIAotICAgIDQ2NTMyLCA0NjU0NywgNDY1NjIsIDQ2NTc3LCA0NjU5MiwgNDY2MDcsIDQ2NjIyLCA0NjYzNywgNDY2NTIsIDQ2NjY3LCAKLSAgICA0NjY4MiwgNDY2OTcsIDQ2NzEyLCA0NjcyNywgNDY3NDIsIDQ2NzU3LCA0Njc3MiwgNDY3ODcsIDQ2ODAyLCA0NjgxNywgCi0gICAgNDY4MzIsIDQ2ODQ3LCA0Njg2MiwgNDY4NzcsIDQ2ODkyLCA0NjkwNywgNDY5MjIsIDQ2OTM3LCA0Njk1MiwgNDY5NjcsIAotICAgIDQ2OTgyLCA0Njk5NywgNDcwMTIsIDQ3MDI3LCA0NzA0MiwgNDcwNTcsIDQ3MDcyLCA0NzA4NywgNDcxMDIsIDQ3MTE3LCAKLSAgICA0NzEzMiwgNDcxNDcsIDQ3MTYyLCA0NzE3NywgNDcxOTIsIDQ3MjA3LCA0NzIyMiwgNDcyMzcsIDQ3MjUyLCA0NzI2NywgCi0gICAgNDcyODIsIDQ3Mjk3LCA0NzMxMiwgNDczMjcsIDQ3MzQyLCA0NzM1NywgNDczNzIsIDQ3Mzg3LCA0NzQwMiwgNDc0MTcsIAotICAgIDQ3NDMyLCA0NzQ0NywgNDc0NjIsIDQ3NDc3LCA0NzQ5MiwgNDc1MDcsIDQ3NTIyLCA0NzUzNywgNDc1NTIsIDQ3NTY3LCAKLSAgICA0NzU4MiwgNDc1OTcsIDQ3NjEyLCA0NzYyNywgNDc2NDIsIDQ3NjU3LCA0NzY3MiwgNDc2ODcsIDQ3NzAyLCA0NzcxNywgCi0gICAgNDc3MzIsIDQ3NzQ3LCA0Nzc2MiwgNDc3NzcsIDQ3NzkyLCA0NzgwNywgNDc4MjIsIDQ3ODM3LCA0Nzg1MiwgNDc4NjcsIAotICAgIDQ3ODgyLCA0Nzg5NywgNDc5MTIsIDQ3OTI3LCA0Nzk0MiwgNDc5NTcsIDQ3OTcyLCA0Nzk4NywgNDgwMDIsIDQ4MDE3LCAKLSAgICA0ODAzMiwgNDgwNDcsIDQ4MDYyLCA0ODA3NywgNDgwOTIsIDQ4MTA3LCA0ODEyMiwgNDgxMzcsIDQ4MTUyLCA0ODE2NywgCi0gICAgNDgxODIsIDQ4MTk3LCA0ODIxMiwgNDgyMjcsIDQ4MjQyLCA0ODI1NywgNDgyNzIsIDQ4Mjg3LCA0ODMwMiwgNDgzMTcsIAotICAgIDQ4MzMyLCA0ODM0NywgNDgzNjIsIDQ4Mzc3LCA0ODM5MiwgNDg0MDcsIDQ4NDIyLCA0ODQzNywgNDg0NTIsIDQ4NDY3LCAKLSAgICA0ODQ4MiwgNDg0OTcsIDQ4NTEyLCA0ODUyNywgNDg1NDIsIDQ4NTU3LCA0ODU3MiwgNDg1ODcsIDQ4NjAyLCA0ODYxNywgCi0gICAgNDg2MzIsIDQ4NjQ3LCA0ODY2MiwgNDg2NzcsIDQ4NjkyLCA0ODcwNywgNDg3MjIsIDQ4NzM3LCA0ODc1MiwgNDg3NjcsIAotICAgIDQ4NzgyLCA0ODc5NywgNDg4MTIsIDQ4ODI3LCA0ODg0MiwgNDg4NTcsIDQ4ODcyLCA0ODg4NywgNDg5MDIsIDQ4OTE3LCAKLSAgICA0ODkzMiwgNDg5NDcsIDQ4OTYyLCA0ODk3NywgNDg5OTIsIDQ5MDA3LCA0OTAyMiwgNDkwMzcsIDQ5MDUyLCA0OTA2NywgCi0gICAgNDkwODIsIDQ5MDk3LCA0OTExMiwgNDkxMjcsIDQ5MTQyLCA0OTE1NywgNDkxNzIsIDQ5MTg3LCA0OTIwMiwgNDkyMTcsIAotICAgIDQ5MjMyLCA0OTI0NywgNDkyNjIsIDQ5Mjc3LCA0OTI5MiwgNDkzMDcsIDQ5MzIyLCA0OTMzNywgNDkzNTIsIDQ5MzY3LCAKLSAgICA0OTM4MiwgNDkzOTcsIDQ5NDEyLCA0OTQyNywgNDk0NDIsIDQ5NDU3LCA0OTQ3MiwgNDk0ODcsIDQ5NTAyLCA0OTUxNywgCi0gICAgNDk1MzIsIDQ5NTQ4LCA0OTU2NCwgNDk1ODAsIDQ5NTk2LCA0OTYxMiwgNDk2MjgsIDQ5NjQ0LCA0OTY2MCwgNDk2NzYsIAotICAgIDQ5NjkyLCA0OTcwOCwgNDk3MjQsIDQ5NzQwLCA0OTc1NiwgNDk3NzIsIDQ5Nzg4LCA0OTgwNCwgNDk4MjAsIDQ5ODM2LCAKLSAgICA0OTg1MiwgNDk4NjgsIDQ5ODg0LCA0OTkwMCwgNDk5MTYsIDQ5OTMyLCA0OTk0OCwgNDk5NjQsIDQ5OTgwLCA0OTk5NiwgCi0gICAgNTAwMTIsIDUwMDI4LCA1MDA0NCwgNTAwNjAsIDUwMDc2LCA1MDA5MiwgNTAxMDgsIDUwMTI0LCA1MDE0MCwgNTAxNTYsIAotICAgIDUwMTcyLCA1MDE4OCwgNTAyMDQsIDUwMjIwLCA1MDIzNiwgNTAyNTIsIDUwMjY4LCA1MDI4NCwgNTAzMDAsIDUwMzE2LCAKLSAgICA1MDMzMiwgNTAzNDgsIDUwMzY0LCA1MDM4MCwgNTAzOTYsIDUwNDEyLCA1MDQyOCwgNTA0NDQsIDUwNDYwLCA1MDQ3NiwgCi0gICAgNTA0OTIsIDUwNTA4LCA1MDUyNCwgNTA1NDAsIDUwNTU2LCA1MDU3MiwgNTA1ODgsIDUwNjA0LCA1MDYyMCwgNTA2MzYsIAotICAgIDUwNjUyLCA1MDY2OCwgNTA2ODQsIDUwNzAwLCA1MDcxNiwgNTA3MzIsIDUwNzQ4LCA1MDc2NCwgNTA3ODAsIDUwNzk2LCAKLSAgICA1MDgxMiwgNTA4MjgsIDUwODQ0LCA1MDg2MCwgNTA4NzYsIDUwODkyLCA1MDkwOCwgNTA5MjQsIDUwOTQwLCA1MDk1NiwgCi0gICAgNTA5NzIsIDUwOTg4LCA1MTAwNCwgNTEwMjAsIDUxMDM2LCA1MTA1MiwgNTEwNjgsIDUxMDg0LCA1MTEwMCwgNTExMTYsIAotICAgIDUxMTMyLCA1MTE0OCwgNTExNjQsIDUxMTgwLCA1MTE5NiwgNTEyMTIsIDUxMjI4LCA1MTI0NCwgNTEyNjAsIDUxMjc2LCAKLSAgICA1MTI5MiwgNTEzMDgsIDUxMzI0LCA1MTM0MCwgNTEzNTYsIDUxMzcyLCA1MTM4OCwgNTE0MDQsIDUxNDIwLCA1MTQzNiwgCi0gICAgNTE0NTIsIDUxNDY4LCA1MTQ4NCwgNTE1MDAsIDUxNTE2LCA1MTUzMiwgNTE1NDgsIDUxNTY0LCA1MTU4MCwgNTE1OTYsIAotICAgIDUxNjEyLCA1MTYyOCwgNTE2NDQsIDUxNjYwLCA1MTY3NiwgNTE2OTIsIDUxNzA4LCA1MTcyNCwgNTE3NDAsIDUxNzU2LCAKLSAgICA1MTc3MiwgNTE3ODgsIDUxODA0LCA1MTgyMCwgNTE4MzYsIDUxODUyLCA1MTg2OCwgNTE4ODQsIDUxOTAwLCA1MTkxNiwgCi0gICAgNTE5MzIsIDUxOTQ4LCA1MTk2NCwgNTE5ODAsIDUxOTk2LCA1MjAxMiwgNTIwMjgsIDUyMDQ0LCA1MjA2MCwgNTIwNzYsIAotICAgIDUyMDkyLCA1MjEwOCwgNTIxMjQsIDUyMTQwLCA1MjE1NiwgNTIxNzIsIDUyMTg4LCA1MjIwNCwgNTIyMjAsIDUyMjM2LCAKLSAgICA1MjI1MiwgNTIyNjgsIDUyMjg0LCA1MjMwMCwgNTIzMTYsIDUyMzMyLCA1MjM0OCwgNTIzNjQsIDUyMzgwLCA1MjM5NiwgCi0gICAgNTI0MTIsIDUyNDI4LCA1MjQ0NCwgNTI0NjAsIDUyNDc2LCA1MjQ5MiwgNTI1MDgsIDUyNTI0LCA1MjU0MCwgNTI1NTYsIAotICAgIDUyNTcyLCA1MjU4OCwgNTI2MDQsIDUyNjIwLCA1MjYzNiwgNTI2NTIsIDUyNjY4LCA1MjY4NCwgNTI3MDAsIDUyNzE2LCAKLSAgICA1MjczMiwgNTI3NDgsIDUyNzY0LCA1Mjc4MCwgNTI3OTYsIDUyODEyLCA1MjgyOCwgNTI4NDQsIDUyODYwLCA1Mjg3NiwgCi0gICAgNTI4OTIsIDUyOTA4LCA1MjkyNCwgNTI5NDAsIDUyOTU2LCA1Mjk3MiwgNTI5ODgsIDUzMDA0LCA1MzAyMCwgNTMwMzYsIAotICAgIDUzMDUyLCA1MzA2OCwgNTMwODQsIDUzMTAwLCA1MzExNiwgNTMxMzIsIDUzMTQ4LCA1MzE2NCwgNTMxODAsIDUzMTk2LCAKLSAgICA1MzIxMiwgNTMyMjgsIDUzMjQ0LCA1MzI2MCwgNTMyNzYsIDUzMjkyLCA1MzMwOCwgNTMzMjQsIDUzMzQwLCA1MzM1NiwgCi0gICAgNTMzNzIsIDUzMzg4LCA1MzQwNCwgNTM0MjAsIDUzNDM2LCA1MzQ1MiwgNTM0NjgsIDUzNDg0LCA1MzUwMCwgNTM1MTYsIAotICAgIDUzNTMyLCA1MzU0OCwgNTM1NjQsIDUzNTgwLCA1MzU5NiwgNTM2MTIsIDUzNjI4LCA1MzY0NCwgNTM2NjAsIDUzNjc2LCAKLSAgICA1MzY5MiwgNTM3MDgsIDUzNzI0LCA1Mzc0MCwgNTM3NTYsIDUzNzcyLCA1Mzc4OCwgNTM4MDQsIDUzODIwLCA1MzgzNiwgCi0gICAgNTM4NTIsIDUzODY4LCA1Mzg4NCwgNTM5MDAsIDUzOTE2LCA1MzkzMiwgNTM5NDgsIDUzOTY0LCA1Mzk4MCwgNTM5OTYsIAotICAgIDU0MDEyLCA1NDAyOCwgNTQwNDQsIDU0MDYwLCA1NDA3NiwgNTQwOTIsIDU0MTA4LCA1NDEyNCwgNTQxNDAsIDU0MTU2LCAKLSAgICA1NDE3MiwgNTQxODgsIDU0MjA0LCA1NDIyMCwgNTQyMzYsIDU0MjUyLCA1NDI2OCwgNTQyODQsIDU0MzAwLCA1NDMxNiwgCi0gICAgNTQzMzIsIDU0MzQ4LCA1NDM2NCwgNTQzODAsIDU0Mzk2LCA1NDQxMiwgNTQ0MjgsIDU0NDQ0LCA1NDQ2MCwgNTQ0NzYsIAotICAgIDU0NDkyLCA1NDUwOCwgNTQ1MjQsIDU0NTQwLCA1NDU1NiwgNTQ1NzIsIDU0NTg4LCA1NDYwNCwgNTQ2MjAsIDU0NjM2LCAKLSAgICA1NDY1MiwgNTQ2NjgsIDU0Njg0LCA1NDcwMCwgNTQ3MTYsIDU0NzMyLCA1NDc0OCwgNTQ3NjQsIDU0NzgwLCA1NDc5NiwgCi0gICAgNTQ4MTIsIDU0ODI4LCA1NDg0NCwgNTQ4NjAsIDU0ODc2LCA1NDg5MiwgNTQ5MDgsIDU0OTI0LCA1NDk0MCwgNTQ5NTYsIAotICAgIDU0OTcyLCA1NDk4OCwgNTUwMDQsIDU1MDIwLCA1NTAzNiwgNTUwNTIsIDU1MDY4LCA1NTA4NCwgNTUxMDAsIDU1MTE2LCAKLSAgICA1NTEzMiwgNTUxNDgsIDU1MTY0LCA1NTE4MCwgNTUxOTYsIDU1MjEyLCA1NTIyOCwgNTUyNDQsIDU1MjYwLCA1NTI3NiwgCi0gICAgNTUyOTIsIDU1MzA4LCA1NTMyNCwgNTUzNDAsIDU1MzU2LCA1NTM3MiwgNTUzODgsIDU1NDA0LCA1NTQyMCwgNTU0MzYsIAotICAgIDU1NDUyLCA1NTQ2OCwgNTU0ODQsIDU1NTAwLCA1NTUxNiwgNTU1MzIsIDU1NTQ4LCA1NTU2NCwgNTU1ODAsIDU1NTk2LCAKLSAgICA1NTYxMiwgNTU2MjgsIDU1NjQ0LCA1NTY2MCwgNTU2NzYsIDU1NjkyLCA1NTcwOCwgNTU3MjQsIDU1NzQwLCA1NTc1NiwgCi0gICAgNTU3NzIsIDU1Nzg4LCA1NTgwNCwgNTU4MjAsIDU1ODM2LCA1NTg1MiwgNTU4NjgsIDU1ODg0LCA1NTkwMCwgNTU5MTYsIAotICAgIDU1OTMyLCA1NTk0OCwgNTU5NjQsIDU1OTgwLCA1NTk5NiwgNTYwMTIsIDU2MDI4LCA1NjA0NCwgNTYwNjAsIDU2MDc2LCAKLSAgICA1NjA5MiwgNTYxMDgsIDU2MTI0LCA1NjE0MCwgNTYxNTYsIDU2MTcyLCA1NjE4OCwgNTYyMDQsIDU2MjIwLCA1NjIzNiwgCi0gICAgNTYyNTIsIDU2MjY4LCA1NjI4NCwgNTYzMDAsIDU2MzE2LCA1NjMzMiwgNTYzNDgsIDU2MzY0LCA1NjM4MCwgNTYzOTYsIAotICAgIDU2NDEyLCA1NjQyOCwgNTY0NDQsIDU2NDYwLCA1NjQ3NiwgNTY0OTIsIDU2NTA4LCA1NjUyNCwgNTY1NDAsIDU2NTU2LCAKLSAgICA1NjU3MiwgNTY1ODgsIDU2NjA0LCA1NjYyMCwgNTY2MzYsIDU2NjUyLCA1NjY2OCwgNTY2ODQsIDU2NzAwLCA1NjcxNiwgCi0gICAgNTY3MzIsIDU2NzQ4LCA1Njc2NCwgNTY3ODAsIDU2Nzk2LCA1NjgxMiwgNTY4MjgsIDU2ODQ0LCA1Njg2MCwgNTY4NzYsIAotICAgIDU2ODkyLCA1NjkwOCwgNTY5MjQsIDU2OTQwLCA1Njk1NiwgNTY5NzIsIDU2OTg4LCA1NzAwNCwgNTcwMjAsIDU3MDM2LCAKLSAgICA1NzA1MiwgNTcwNjgsIDU3MDg0LCA1NzEwMCwgNTcxMTYsIDU3MTMyLCA1NzE0OCwgNTcxNjQsIDU3MTgwLCA1NzE5NiwgCi0gICAgNTcyMTIsIDU3MjI4LCA1NzI0NCwgNTcyNjAsIDU3Mjc2LCA1NzI5MiwgNTczMDgsIDU3MzI0LCA1NzM0MCwgNTczNTYsIAotICAgIDU3MzcyLCA1NzM4OCwgNTc0MDQsIDU3NDIwLCA1NzQzNiwgNTc0NTIsIDU3NDY4LCA1NzQ4NCwgNTc1MDAsIDU3NTE2LCAKLSAgICA1NzUzMiwgNTc1NDgsIDU3NTY0LCA1NzU4MCwgNTc1OTYsIDU3NjEyLCA1NzYyOCwgNTc2NDQsIDU3NjYwLCA1NzY3NiwgCi0gICAgNTc2OTIsIDU3NzA4LCA1NzcyNCwgNTc3NDAsIDU3NzU2LCA1Nzc3MiwgNTc3ODgsIDU3ODA0LCA1NzgyMCwgNTc4MzYsIAotICAgIDU3ODUyLCA1Nzg2OCwgNTc4ODQsIDU3OTAwLCA1NzkxNiwgNTc5MzIsIDU3OTQ4LCA1Nzk2NCwgNTc5ODAsIDU3OTk2LCAKLSAgICA1ODAxMiwgNTgwMjgsIDU4MDQ0LCA1ODA2MCwgNTgwNzYsIDU4MDkyLCA1ODEwOCwgNTgxMjQsIDU4MTQwLCA1ODE1NiwgCi0gICAgNTgxNzIsIDU4MTg4LCA1ODIwNCwgNTgyMTksIDE2NzYyLCA1ODIyOCwgNTgyMzQsIDU4MjQwLCA1ODI1MCwgNTgyNTgsIAotICAgIDE0ODk0LCAxNTQ0NSwgOTk2MCwgNTgyNzEsIDE1MjAsIDU4Mjc5LCAzNzYxLCAyNzQzMiwgNzE4MywgNTgyODUsIDU4MjkwLCAKLSAgICA1ODI5NSwgNTgzMDAsIDU4MzA1LCA1ODMxMSwgNTgzMTYsIDU4MzIyLCA1ODMyNywgNTgzMzMsIDU4MzM4LCA1ODM0MywgCi0gICAgNTgzNDgsIDU4MzUzLCA1ODM1OSwgNTgzNjQsIDU4MzY5LCA1ODM3NCwgNTgzNzksIDU4Mzg0LCA1ODM4OSwgNTgzOTQsIAotICAgIDU4NDAwLCA1ODQwNSwgNTg0MTEsIDU4NDE4LCAyNTYxLCA1ODQyMywgNTg0MjksIDg1MjYsIDU4NDMzLCA1ODQzOCwgCi0gICAgNTg0NDUsIDU4NDUzLCA0MCwgNTg0NTcsIDU4NDYzLCA1ODQ2OCwgNTg0NzMsIDU4NDc3LCA1ODQ4MiwgNTg0ODYsIDU4NDkwLCAKLSAgICAxMDY4NCwgNTg0OTQsIDU4NTA0LCA1ODUxNywgNTg1MjgsIDU4NTQxLCA1ODU0OCwgNTg1NTQsIDU4NTU5LCA1ODU2NSwgCi0gICAgNTg1NzEsIDU4NTc3LCA1ODU4MiwgNTg1ODcsIDU4NTkyLCA1ODU5NywgNTg2MDEsIDU4NjA2LCA1ODYxMSwgNTg2MTYsIAotICAgIDU4NjIyLCA1ODYyOCwgNTg2MzQsIDU4NjM5LCA1ODY0MywgNTg2NDgsIDU4NjUzLCA1ODY1NywgNTg2NjIsIDU4NjY3LCAKLSAgICA1ODY3MiwgNTg2NzYsIDEwNzAwLCAxMDcxMSwgMTA3MTYsIDE1NjMsIDU4NjgwLCAxNTY4LCA1ODY4NiwgMTYyMzksIAotICAgIDU4Njg5LCA1ODY5NSwgMTU5OSwgNTg3MDEsIDE2MDUsIDE2MTEsIDEwNzQ2LCA1ODcwNiwgNTg3MTQsIDU4NzIxLCA1ODcyNSwgCi0gICAgNTg3MzEsIDU4NzM2LCAzMDk3NywgNTg3NDEsIDU4NzQ4LCA1ODc1MywgNTg3NTcsIDU4NzYxLCAxNjE2LCAxNjMzMSwgCi0gICAgNTg3NzAsIDU4Nzc0LCAxNjM0MiwgMTEyNSwgNTg3NzgsIDU4Nzg1LCA1ODc5MCwgNTg3OTQsIDE2MzY3LCAxNjIwLCAKLSAgICAzNzM1MCwgNTg3OTcsIDU4ODAyLCA1ODgxMiwgNTg4MjEsIDU4ODI2LCA1ODgzMCwgNTg4MzYsIDE2MjUsIDM5MjU5LCAKLSAgICA1ODg0MSwgNTg4NTAsIDU4ODU2LCA1ODg2MSwgMTA5MDQsIDEwOTEwLCA1ODg2NywgNTg4NzksIDU4ODk2LCA1ODkxMywgCi0gICAgNTg5MzAsIDU4OTQ3LCA1ODk2NCwgNTg5ODEsIDU4OTk4LCA1OTAxNSwgNTkwMzIsIDU5MDQ5LCA1OTA2NiwgNTkwODMsIAotICAgIDU5MTAwLCA1OTExNywgNTkxMzQsIDU5MTUxLCA1OTE2OCwgNTkxODUsIDU5MjAyLCA1OTIxOSwgNTkyMzYsIDU5MjUzLCAKLSAgICA1OTI3MCwgNTkyODcsIDU5MzA0LCA1OTMyMSwgNTkzMzgsIDU5MzU1LCA1OTM3MiwgNTkzODksIDU5NDA2LCA1OTQyMywgCi0gICAgNTk0NDAsIDU5NDU3LCA1OTQ3NCwgNTk0OTEsIDU5NTA4LCA1OTUyNSwgNTk1NDIsIDU5NTU5LCA1OTU3NiwgNTk1OTMsIAotICAgIDU5NjEwLCA1OTYyNywgNTk2NDQsIDU5NjYxLCA1OTY3OCwgNTk2OTUsIDU5NzEyLCA1OTcyMywgNTk3MjgsIDE2MzAsIAotICAgIDU5NzMyLCA1OTczOCwgNTk3NDMsIDU5NzQ4LCA5MzI2LCAxNjM1LCA1OTc1NCwgNTk3NjMsIDI3NzMxLCA1OTc2OCwgCi0gICAgNTk3NzksIDU5Nzg5LCA1OTc5NCwgNTk4MDEsIDU5ODA3LCA1OTgxMiwgNTk4MTcsIDE2NjE5LCA1OTgyMSwgMTA5MjEsIAotICAgIDE2NDAsIDEwOTI2LCA1OTgyNywgNTk4MzIsIDU5ODM4LCA1OTg0MywgNTk4NDgsIDU5ODUzLCA1OTg1OCwgNTk4NjMsIAotICAgIDU5ODY4LCA1OTg3MywgNTk4NzksIDU5ODg1LCA1OTg5MSwgNTk4OTYsIDU5OTAwLCA1OTkwNSwgNTk5MTAsIDU5OTE0LCAKLSAgICA1OTkxOSwgNTk5MjQsIDU5OTI5LCA1OTkzMywgNTk5MzgsIDU5OTQ0LCA1OTk0OSwgNTk5NTQsIDU5OTU4LCA1OTk2MywgCi0gICAgNTk5NjgsIDU5OTc0LCA1OTk3OSwgNTk5ODQsIDU5OTkwLCA1OTk5NiwgNjAwMDEsIDYwMDA1LCA2MDAxMCwgNjAwMTUsIAotICAgIDYwMDIwLCA2MDAyNCwgNjAwMjksIDYwMDM0LCA2MDAzOSwgNjAwNDUsIDYwMDUxLCA2MDA1NiwgNjAwNjAsIDYwMDY0LCAKLSAgICA2MDA2OSwgNjAwNzQsIDYwMDc5LCAyOTEyOSwgNjAwODMsIDYwMDg4LCA2MDA5MywgNjAwOTksIDYwMTA0LCA2MDEwOSwgCi0gICAgNjAxMTMsIDYwMTE4LCA2MDEyMywgNjAxMjksIDYwMTM0LCA2MDEzOSwgNjAxNDUsIDYwMTUxLCA2MDE1NiwgNjAxNjAsIAotICAgIDYwMTY1LCA2MDE3MCwgNjAxNzQsIDYwMTc5LCA2MDE4NCwgNjAxODksIDYwMTk1LCA2MDIwMSwgNjAyMDYsIDYwMjEwLCAKLSAgICA2MDIxNSwgNjAyMjAsIDYwMjI0LCA2MDIyOSwgNjAyMzQsIDYwMjM5LCA2MDI0MywgNjAyNDYsIDMxNjM5LCA2MDI1MSwgCi0gICAgNjAyNTksIDE2Njg1LCAzNjYzLCAxMTAxNywgNjAyNjUsIDYwMjc1LCA2MDI5MCwgMTEwMjIsIDYwMzAxLCA2MDMwNiwgCi0gICAgNjAzMTcsIDYwMzI5LCA2MDM0MSwgNjAzNTMsIDI2OTUsIDYwMzY1LCA2MDM3MCwgNjAzODIsIDYwMzg2LCA2MDM5MiwgCi0gICAgNjAzOTgsIDYwNDAzLCAxNjUyLCAxMDc4LCA2MDQxMiwgNjA0MTcsIDM5MzA5LCA2MDQyMSwgNjA0MjUsIDYwNDMwLCAKLSAgICA2MDQzNCwgMTY3NzAsIDYwNDM5LCA2MDQ0MiwgNjA0NTAsIDYwNDU4LCAxNjU2LCAxMTA0NywgMTEwNTMsIDE2NjEsIAotICAgIDYwNDY2LCA2MDQ3MywgNjA0NzgsIDYwNDg3LCA2MDQ5NywgNjA1MDQsIDYwNTA5LCA2MDUxNCwgMTY2NiwgNjA1MjEsIAotICAgIDYwNTI2LCAxNjg4NSwgNjA1MzAsIDYwNTM1LCA2MDU0MiwgNjA1NDgsIDYwNTUyLCA2MDU2MywgNjA1NzMsIDE2OTA3LCAKLSAgICA5MjM0LCA5MjQxLCAxNjcxLCA2MDU4MCwgNjA1ODYsIDYwNTk0LCA2MDYwMSwgNjA2MDcsIDYwNjE0LCA2MDYyNiwgNjA2MzIsIAotICAgIDYwNjM3LCA2MDY0OSwgNjA2NjAsIDYwNjY5LCA2MDY3OSwgMzc0MCwgMzA4MTMsIDMwODIyLCAxNjk0NywgMTY3NiwgMTY4MCwgCi0gICAgNjA2ODcsIDYwNjk4LCA2MDcwMywgMTY4MywgNjA3MTEsIDYwNzE2LCAxNjk5OCwgNjA3MjgsIDYwNzM0LCA2MDczOSwgCi0gICAgNjA3NDcsIDE2ODgsIDYwNzUyLCA2MDc1NywgNjA3NjUsIDYwNzczLCA2MDc4MCwgNjA3ODksIDYwNzk3LCA2MDgwNiwgCi0gICAgMTY5MywgNjA4MTAsIDE2OTgsIDYwODE1LCA2MDgyMiwgMTcwNzIsIDYwODMwLCA2MDgzNiwgNjA4NDEsIDYwODQ5LCAKLSAgICA2MDg1NiwgNjA4NjQsIDIyNTc0LCA2MDg2OSwgMTExODIsIDYwODc4LCA2MDg4NCwgNjA4OTEsIDYwODk4LCA2MDkwNCwgCi0gICAgNjA5MTQsIDYwOTIwLCA2MDkyNSwgNjA5MzYsIDYwOTQxLCA2MDk0OSwgMTExOTEsIDExMTk2LCA2MDk1NywgNjA5NjMsIAotICAgIDYwOTcxLCAzODA1LCAxNzExNCwgMzkzOTcsIDYwOTc2LCA2MDk4MiwgNjA5ODcsIDYwOTk1LCA2MTAwMiwgMTIwMzYsIAotICAgIDYxMDA3LCA2MTAxMywgMTcwOSwgNjEwMTgsIDYxMDIxLCAxMTMyLCA2MTAyNywgNjEwMzIsIDYxMDM3LCA2MTA0MywgCi0gICAgNjEwNDgsIDYxMDUzLCA2MTA1OCwgNjEwNjMsIDYxMDY4LCA2MTA3MywgMTcxOCwgOSwgNjEwNzksIDYxMDgzLCA2MTA4OCwgCi0gICAgNjEwOTIsIDYxMDk2LCA2MTEwMCwgMzE4NzksIDYxMTA1LCA2MTExMCwgNjExMTUsIDYxMTE5LCA2MTEyMiwgNjExMjYsIAotICAgIDYxMTMwLCA2MTEzNSwgNjExMzksIDYxMTQ0LCA2MTE0OCwgMzQ2MTYsIDM0NjIxLCAzNDYyNiwgNjExNTEsIDYxMTU4LCAKLSAgICA2MTE2NCwgMzkxMTgsIDYxMTc0LCAzNDYzMiwgMzIxMzcsIDMxODk0LCAzMTkwMCwgMzQ2NDgsIDMxOTA2LCA2MTE3OSwgCi0gICAgNjExODQsIDMyMTcwLCA2MTE4OCwgNjExOTEsIDYxMTk1LCA2MTIwMiwgNjEyMDUsIDYxMjEwLCA2MTIxNCwgNjEyMTgsIAotICAgIDYxMjIxLCA2MTIzMSwgNjEyNDMsIDYxMjUwLCA2MTI1NiwgNjEyNjMsIDMzNTczLCA2MTI2NiwgODU0MywgODc3LCA2MTI2OSwgCi0gICAgNjEyNzMsIDYxMjc4LCAzNjkwLCA2MTI4MiwgNjEyODUsIDEzNjMyLCA2MTI5MiwgNjEyOTksIDYxMzEyLCA2MTMyMCwgCi0gICAgNjEzMjksIDYxMzM4LCA2MTM0MywgNjEzNTMsIDYxMzY2LCA2MTM3OCwgNjEzODUsIDYxMzkwLCA2MTM5OSwgNjE0MTIsIAotICAgIDM2MDYwLCA2MTQzMCwgNjE0MzUsIDYxNDQyLCA2MTQ0OCwgNjU2LCA2MTQ1MywgNjE0NjEsIDYxNDY4LCAyNzI3MSwgNjI3LCAKLSAgICA2MTQ3NCwgNjE0ODAsIDYxNDkwLCA2MTQ5NiwgNjE1MDEsIDMxOTI0LCA2MDAzLCAzMTkzOCwgNjE1MDUsIDYxNTE1LCAKLSAgICA2MTUyMCwgNjE1MzAsIDYxNTQ1LCA2MTU1MSwgNjE1NTcsIDMxOTQ4LCA2MTU2MiwgMzEwOTQsIDYxNTY2LCA2MTU3MSwgCi0gICAgNjE1NzYsIDYxNTgwLCA2MTU4NSwgMTY5NTAsIDYxNTkyLCA2MTU5NywgNjE2MDEsIDYwNDQsIDMxOTc0LCA2MTYwNSwgCi0gICAgNjE2MTEsIDMxMiwgNjE2MjEsIDYxNjI4LCA2MTYzNSwgNjE2NDAsIDYxNjQ5LCA1ODgwNiwgNjE2NTUsIDYxNjYzLCAKLSAgICA2MTY2NywgNjE2NzEsIDYxNjc1LCA2MTY3OSwgNjE2ODQsIDYxNjg4LCA2MTY5NCwgNjE3MDIsIDYxNzA3LCA2MTcxMiwgCi0gICAgNjE3MTYsIDYxNzIxLCA2MTcyNSwgNjE3MjksIDYxNzM1LCA2MTc0MSwgNjE3NDYsIDYxNzUwLCAzMjA5OCwgNjE3NTUsIAotICAgIDMyMTA0LCAzMjExMCwgNjE3NjAsIDYxNzY2LCA2MTc3MywgNjE3NzgsIDYxNzgyLCAzMTExMSwgMTY2MTIsIDYxNzg1LCAKLSAgICA2MTc4OSwgNjE3OTQsIDYxODAxLCA2MTgwNywgNjE4MTEsIDYxODE2LCAzODgyOCwgNjE4MjIsIDYxODI2LCA2MTgzMCwgCi0gICAgNjE4MzUsIDYxODQxLCA2MTg0NywgNjE4NTksIDYxODY4LCA2MTg3OCwgNjE4ODQsIDYxODkxLCA2MTg5NiwgNjE5MDEsIAotICAgIDYxOTA1LCA2MTkwOCwgNjE5MTQsIDYxOTIxLCA2MTkyNiwgNjE5MzEsIDYxOTM4LCA2MTk0NSwgNjE5NTEsIDYxOTU2LCAKLSAgICA2MTk2MSwgNjE5NjksIDMyMTE1LCAyNDIzLCA2MTk3NCwgNjE5NzksIDYxOTg1LCA2MTk5MCwgNjE5OTYsIDYyMDAxLCAKLSAgICA2MjAwNiwgNjIwMTEsIDYyMDE3LCAzMjEzNiwgNjIwMjIsIDYyMDI4LCA2MjAzNCwgNjIwNDAsIDMyMjAwLCA2MjA0NSwgCi0gICAgNjIwNTAsIDYyMDU1LCAzMjIxMSwgNjIwNjAsIDYyMDY1LCA2MjA3MCwgNjIwNzYsIDYyMDgyLCAzMjIxNiwgNjIwODcsIAotICAgIDYyMDkyLCA2MjA5NywgMzIyNzEsIDMyMjc3LCA2MjEwMiwgNjIxMDcsIDMyMjgyLCA2MjExMiwgMjc5NTgsIDMyMzA0LCAKLSAgICAzMjMwOCwgNjIxMTcsIDYyMDkzLCA2MjEyMSwgNjIxMjksIDYyMTM1LCA2MjE0MywgNjIxNTAsIDYyMTU2LCA2MjE2NiwgCi0gICAgNjIxNzIsIDYyMTc5LCAxMDYzMSwgMzIzMjIsIDYyMTg1LCA2MjE5OCwgNjIyMDcsIDYyMjEzLCA2MjIyMiwgNjIyMjgsIAotICAgIDIzNTEyLCA2MjIzNSwgNjIyNDIsIDYyMjUyLCAzMjI3MiwgNjIyNTUsIDYyMjYyLCA2MjI2NywgNjIyNzEsIDYyMjc1LCAKLSAgICA2MjI4MCwgNjEyMCwgNjIyODQsIDYyMjg5LCA2MjI5NCwgMzQ3MTAsIDM0NzE1LCA2MjI5OCwgMzQ3MjksIDYyMzAzLCAKLSAgICAzNDczNCwgNjIzMDgsIDYyMzE0LCAzNDc0NiwgMzQ3NTIsIDM0NzU4LCA2MjMxOSwgNjIzMjUsIDIyNTM5LCA2MjMzNiwgCi0gICAgNjIzMzksIDYyMzUxLCA2MjM1OSwgMzIzNDUsIDYyMzYzLCA2MjM3MiwgNjIzODIsIDYyMzkxLCAzMjM1NSwgNjIzOTYsIAotICAgIDYyNDAzLCA2MjQxMiwgNjI0MTgsIDYyNDI2LCA2MjQzMywgNjA5NSwgNDM5NywgNjI0MzgsIDMyMjgzLCA2MjQ0NCwgCi0gICAgNjI0NDcsIDYyNDUzLCA2MjQ2MCwgNjI0NjUsIDYyNDcwLCAyMzQyMiwgNjI0NzQsIDYyNDgwLCA2MjQ4NiwgNjI0OTEsIAotICAgIDYyNDk2LCA2MjUwMCwgNjI1MDYsIDYyNTEyLCAzMzQ4MywgODYzLCAzNTcyMywgMzY2NDQsIDM2NjUwLCAzMjM5MSwgCi0gICAgNjI1MTcsIDYyNTIxLCA2MjUyNSwgNjI1MjgsIDYyNTQxLCA2MjU0NywgNjI1NTEsIDYyNTU0LCA2MjU1OSwgMzM3ODYsIAotICAgIDYyNTYzLCAzMTExNiwgMjEyODcsIDYyNTY5LCA2MDI0LCA2MDMyLCA5MDc1LCA2MjU3MiwgNjI1NzcsIDYyNTgyLCA2MjU4NywgCi0gICAgNjI1OTIsIDYyNTk3LCA2MjYwMiwgNjI2MDcsIDYyNjEyLCA2MjYxNywgNjI2MjMsIDYyNjI4LCA2MjYzMywgNjI2MzksIAotICAgIDYyNjQ0LCA2MjY0OSwgNjI2NTQsIDYyNjU5LCA2MjY2NCwgNjI2NjksIDYyNjc1LCA2MjY4MCwgNjI2ODYsIDYyNjkxLCAKLSAgICA2MjY5NiwgNjI3MDEsIDYyNzA2LCA2MjcxMSwgNjI3MTYsIDYyNzIxLCA2MjcyNiwgNjI3MzEsIDYyNzM2LCA2Mjc0MiwgCi0gICAgNjI3NDcsIDYyNzUyLCA2Mjc1NywgNjI3NjIsIDYyNzY3LCA2Mjc3MiwgNjI3NzgsIDYyNzgzLCA2Mjc4OCwgNjI3OTMsIAotICAgIDYyNzk4LCA2MjgwMywgNjI4MDgsIDYyODEzLCA2MjgxOCwgNjI4MjMsIDYyODI5LCA2MjgzNCwgNjI4MzksIDYyODQ0LCAKLSAgICA2Mjg0OSwgNjI4NTUsIDYyODYxLCA2Mjg2NiwgNjI4NzIsIDYyODc3LCA2Mjg4MiwgNjI4ODcsIDYyODkyLCA2Mjg5NywgCi0gICAgMTUxMywgMjQ1LCA2MjkwMiwgNjI5MDYsIDYyOTEwLCA2MjkxNCwgMjUxMzMsIDYyOTE4LCA2MjkyMiwgNjI5MjcsIDYyOTMxLCAKLSAgICA2MjkzNiwgNjI5NDAsIDYyOTQ1LCA2Mjk1MCwgNjI5NTUsIDYyOTU5LCA2Mjk2MywgNjI5NjgsIDYyOTcyLCAxMzM2OSwgCi0gICAgNjI5NzcsIDYyOTgxLCA2Mjk4OCwgNjI5OTgsIDE1MjA2LCA2MzAwNywgNjMwMTYsIDYzMDIwLCA2MzAyNSwgNjMwMzAsIAotICAgIDYzMDM0LCAyNDkyNCwgMzAxOSwgNjMwMzgsIDYzMDQ0LCAxNzM2MywgNjMwNDgsIDYzMDU3LCA2MzA2NSwgNjMwNzEsIAotICAgIDYzMDgzLCA2MzA5NSwgNjMwOTksIDYzMTA0LCA2MzEwOCwgNjMxMTQsIDYzMTIwLCA2MzEyNSwgNjMxMzUsIDYzMTQ1LCAKLSAgICA2MzE1MSwgNjMxNTYsIDYzMTYwLCA2MzE2NSwgNjMxNzEsIDYzMTgwLCA2MzE4OSwgNjMxOTcsIDE1NTYwLCA2MzIwMSwgCi0gICAgNjMyMTAsIDYzMjE4LCA2MzIzMCwgNjMyNDEsIDYzMjUyLCA2MzI2MSwgNjMyNjUsIDYzMjc0LCA2MzI4NCwgNjMyOTIsIAotICAgIDYzMjk4LCA2MzMwMywgNjMzMDksIDYzMzE0LCA5OCwgMzA5MjUsIDYzMzI1LCAyNjI2NiwgMjYyNzYsIDYzMzMxLCA2MzMzOCwgCi0gICAgNjMzNDQsIDYzMzQ4LCA2MzM1OCwgNjMzNjksIDYzMzc3LCA2MzM4NiwgNjMzOTEsIDYzMzk2LCA2MzQwMCwgMTczMTcsIAotICAgIDYzNDA4LCA2MzQxMiwgNjM0MTgsIDYzNDI4LCA2MzQzNSwgNjM0NDEsIDM0ODA5LCA2MzQ0NywgNjM0NDksIDYzNDUyLCAKLSAgICA2MzQ1NiwgNjM0NjYsIDYzNDcyLCA2MzQ3OSwgMTMzMTUsIDYzNDg2LCA2MzQ5MiwgNjM1MDEsIDYzNTEwLCA2MzUxNiwgCi0gICAgNjM1MjIsIDYzNTI4LCA2MzUzMywgNjM1NDAsIDYzNTQ3LCA2MzU1MywgNjM1NjYsIDYzNTc1LCA2MzU4NCwgNjM1ODksIAotICAgIDYzNTkzLCA2MzU5OSwgNjM2MDYsIDYzNjEzLCA2MzYyMCwgNjM2MjcsIDYzNjM0LCA2MzYzOSwgNjM2NDMsIDYzNjQ3LCAKLSAgICA2MzY1MCwgNjM2NjAsIDYzNjY0LCA2MzY3NiwgNjM2ODUsIDYzNjg5LCA2MzY5NCwgNjM2OTgsIDYzNzA0LCA2MzcwOSwgCi0gICAgNjM3MTYsIDYzNzI1LCA2MzczMywgNjM3NDEsIDYzNzQ2LCA2Mzc1MCwgNjM3NTUsIDYzNzYwLCA2Mzc3MCwgNjM3NzgsIAotICAgIDYzNzgzLCA2Mzc4NywgNjM3OTEsIDYzNzk3LCA2MzgwOSwgNjM4MTcsIDYzODI3LCA2MzgzNCwgNjM4NDAsIDYzODQ1LCAKLSAgICA2Mzg0OSwgNjM4NTMsIDYzODU3LCA2Mzg2NiwgNjM4NzUsIDYzODg0LCA2Mzg5MCwgNjM4OTYsIDYzOTAyLCA2MzkwNywgCi0gICAgNjM5MTQsIDYzOTIwLCA2MzkyOCwgNjM5MzUsIDEyNDYzLCA2Mzk0MSwgNjM5NDcsIDYzOTUxLCAxNDI0NCwgNjM5NTUsIAotICAgIDYzOTYwLCA2Mzk3MCwgNjM5NzksIDYzOTg1LCA2Mzk5MSwgNjM5OTksIDY0MDA2LCA2NDAxMCwgNjQwMTQsIDY0MDIwLCAKLSAgICA2NDAyOCwgNjQwMzUsIDY0MDQxLCA2NDA1MiwgNjQwNTYsIDY0MDYwLCA2NDA2NCwgNjQwNjcsIDY0MDczLCA2NDA3OCwgCi0gICAgNjQwODIsIDY0MDg2LCA2NDA5NSwgNjQxMDMsIDY0MTEwLCA2NDExNiwgNjQxMjMsIDI0MDQ2LCAzODg3MCwgNjQxMjgsIAotICAgIDY0MTM2LCA2NDE0MCwgNjQxNDQsIDY0MTQ3LCA2NDE1NSwgNjQxNjIsIDY0MTY4LCA2NDE3NywgNjQxODUsIDY0MTkxLCAKLSAgICA2NDE5NiwgNjQyMDAsIDY0MjA1LCA2NDIwOSwgNjQyMTMsIDY0MjE4LCA2NDIyNywgNjQyMzEsIDY0MjM4LCA2NDI0NSwgCi0gICAgNjQyNTEsIDY0MjU5LCA2NDI2NSwgNjQyNzYsIDY0Mjg0LCA2NDI5MCwgMjI2NjksIDY0Mjk5LCA2NDMwNiwgNjQzMTMsIAotICAgIDY0MzIwLCA2NDMyNywgNjQzMzQsIDQxOTA3LCAxMzE1MywgNjQzNDEsIDY0MzQ4LCA2NDM1MywgMzQ4NDUsIDYyMTcsIAotICAgIDY0MzU5LCA2NDM2NCwgNjQzNjksIDY0Mzc1LCA2NDM4MSwgNjQzODcsIDY0MzkyLCA2NDM5NywgNjQ0MDIsIDY0NDA3LCAKLSAgICA2NDQxMywgNjQ0MTgsIDY0NDI0LCA2NDQyOSwgNjQ0MzUsIDY0NDQwLCA2NDQ0NSwgNjQ0NTAsIDY0NDU1LCA2NDQ2MCwgCi0gICAgNjQ0NjUsIDY0NDcwLCA2NDQ3NiwgNjQ0ODEsIDY0NDg3LCA2NDQ5MiwgNjQ0OTcsIDY0NTAyLCA2NDUwNywgNjQ1MTIsIAotICAgIDY0NTE3LCA2NDUyMywgNjQ1MjgsIDY0NTMzLCA2NDUzOCwgNjQ1NDMsIDY0NTQ4LCA2NDU1MywgNjQ1NTgsIDY0NTYzLCAKLSAgICA2NDU2OCwgNjQ1NzMsIDY0NTc5LCA2NDU4NCwgNjQ1ODksIDY0NTk0LCA2NDU5OSwgNjQ2MDQsIDY0NjA5LCA2NDYxNCwgCi0gICAgNjQ2MTksIDY0NjI1LCA2NDYzMCwgNjQ2MzUsIDY0NjQwLCA2NDY0NSwgNjQ2NTAsIDY0NjU1LCA2NDY2MCwgNjQ2NjUsIAotICAgIDY0NjcwLCA2NDY3NSwgNjQ2ODAsIDY0Njg1LCA2NDY5MSwgMTgzNCwgMjI0LCAzNzQ0NiwgNjQ2OTYsIDY0Njk5LCA2NDcwNCwgCi0gICAgNjQ3MDgsIDY0NzExLCA2NDcxNiwgNjM3MzcsIDY0NzI3LCA2NDczNywgNjQ3NDQsIDY0NzYwLCA2NDc2OSwgNjQ3NzksIAotICAgIDY0Nzg5LCA2NDc5NywgNjQ4MTEsIDY0ODE5LCA2NDgyMywgNjQ4MjYsIDY0ODMzLCA2NDgzOSwgNjQ4NTAsIDY0ODYyLCAKLSAgICA2NDg3MywgNjQ4ODIsIDY0ODg5LCAxMjk3LCAyMzMxMSwgNjQ4OTksIDI1OTAsIDY0OTAzLCA2NDkxMiwgMTEzOCwgMTcyOTAsIAotICAgIDM4MDgzLCA2NDkyMCwgNjQ5MjgsIDY0OTQyLCA2NDk1NSwgNjQ5NTksIDY0OTY0LCA2NDk2OSwgNjQ5NzQsIDY0OTgwLCAKLSAgICA2NDk4NiwgNjQ5OTEsIDg1MzUsIDY0OTk2LCA2NTAwMCwgNjUwMDgsIDExMDQ4LCA2NTAxMywgNjUwMTksIDY1MDI4LCAKLSAgICAxNzIxLCAxMTA2MCwgNzM2LCA2NTAzMiwgNjUwNDEsIDY1MDUxLCAyNzAzMCwgNjUwNjAsIDY1MDY2LCAxNjg2MiwgNjUwNzIsIAotICAgIDY1MDc2LCAzOTY0LCAxMTM5MSwgNjUwODIsIDY1MDg5LCA2MDY5MywgNjUwOTMsIDY1MDk3LCAzOTg4LCAxODksIDE0MTU5LCAKLSAgICA2NTEwMywgNjUxMTUsIDY1MTE5LCA2NTEyNSwgMjc3NTEsIDY1MTI5LCAxMTM3OSwgMjczMCwgNCwgNjUxMzQsIDY1MTQ0LCAKLSAgICA2NTE1MCwgNjUxNjEsIDY1MTY4LCA2NTE3NCwgNjUxODAsIDY1MTg4LCA2NTE5NSwgNjUyMDEsIDY1MjExLCA2NTIyMSwgCi0gICAgNjUyMzEsIDIzNDk5LCAxMzA5LCA2NTI0MCwgNjUyNDQsIDY1MjQ4LCA2NTI1NCwgNjUyNTgsIDI3NTMsIDI3NTksIDg1MzIsIAotICAgIDIyNjQsIDY1MjYyLCA2NTI2NiwgNjUyNzUsIDY1MjgzLCA2NTI5NCwgNjUzMDIsIDY1MzEwLCA2NTMxNiwgNjUzMjEsIAotICAgIDY1MzMyLCA2NTM0MywgNjUzNTEsIDY1MzU3LCA5Njk0LCA2NTM2MiwgNjUzNzAsIDY1Mzc0LCA2NTM3OCwgNjUzODIsIAotICAgIDY1Mzk0LCAyODEzNiwgNjU0MDEsIDY1NDExLCA2NTQxNywgNjU0MjMsIDk3OTYsIDY1NDMzLCA2NTQ0NCwgNjU0NTQsIAotICAgIDY1NDYzLCA2NTQ2NywgNjU0NzQsIDExNDAsIDExNzAsIDY1NDg0LCA2NTQ4OSwgNjU0OTcsIDY1NTA1LCA2NTUxNiwgCi0gICAgNjU1MjMsIDY1NTM3LCAxNDA4OCwgMzkzLCA2NTU0NywgNjU1NTEsIDY1NTU5LCA2NTU2OCwgNjU1NzYsIDY1NTgyLCAKLSAgICA2NTU5NiwgNjU2MDMsIDY1NjA5LCA2NTYxOCwgNjU2MjUsIDY1NjM1LCA2NTY0MywgMzgxMiwgMTU2LCA2NTY1MSwgNjU2NjIsIAotICAgIDY1NjY2LCA2NTY3OCwgMjc5NDksIDE2MSwgNjU2ODQsIDY1Njg5LCA2NTY5MywgNjU3MDAsIDY1NzA2LCA2NTcxNCwgCi0gICAgNjU3MjEsIDg4MTgsIDY1NzI4LCA2NTczNywgNjU3NDUsIDM4NzgsIDY1NzU4LCA4MTk5LCA2NTc2MiwgMjc5OCwgNDQzLCAKLSAgICA2NTc2NywgNjU3ODAsIDY1Nzg1LCAxODMzLCA2NTAsIDY1Nzg5LCAzODk1LCA2NTc5NywgNjU4MDMsIDY1ODA3LCA5MzEsIAotICAgIDY1ODE3LCA2NTgyNiwgNjU4MzEsIDE0OTI4LCAxNDkzNSwgNDUyNjksIDY1ODM1LCAzODIyLCAxMzA0MSwgNjU4NDMsIAotICAgIDY1ODUwLCAyMzU1NSwgNjU4NTQsIDY1ODYxLCA2NTg2NywgNjU4NzIsIDY1ODc3LCAxNDk0OCwgMzcyLCA2NTg4MiwgCi0gICAgNjU4OTQsIDY1OTAwLCA2NTkwOCwgMjgxMCwgMTc1MywgNjU5MTYsIDY1OTE4LCA2NTkyMywgNjU5MjgsIDY1OTMzLCAKLSAgICA2NTkzOSwgNjU5NDQsIDY1OTQ5LCA2NTk1NCwgNjU5NTksIDY1OTY0LCA2NTk2OSwgNjU5NzUsIDY1OTgwLCA2NTk4NSwgCi0gICAgNjU5OTAsIDY1OTk1LCA2NjAwMCwgNjYwMDUsIDY2MDEwLCA2NjAxNSwgNjYwMjEsIDY2MDI2LCA2NjAzMSwgNjYwMzYsIAotICAgIDY2MDQyLCA2NjA0NywgNjYwNTMsIDY2MDU4LCA2NjA2MywgNjYwNjgsIDY2MDczLCA2NjA3OCwgNjYwODMsIDY2MDg4LCAKLSAgICA2NjA5NCwgNjYwOTksIDY2MTA1LCA2NjExMCwgNjYxMTUsIDY2MTIwLCA2NjEyNSwgNjYxMzAsIDY2MTM1LCA2NjE0MCwgCi0gICAgNjYxNDUsIDY2MTUxLCA2NjE1NiwgNjYxNjEsIDY2MTY2LCA2NjE3MCwgNjYxNzQsIDY2MTc5LCA2NjE4MywgNjYxODgsIAotICAgIDY2MTkzLCA2NjE5OSwgNjYyMDQsIDY2MjA4LCA2NjIxMywgNjYyMTcsIDY2MjIwLCA2NjIyMiwgNjYyMjYsIDY2MjI5LCAKLSAgICA2NjIzNCwgNjYyMzgsIDY2MjQyLCA2NjI0NiwgNjYyNTAsIDY2MjU5LCA2NjI2MywgMzI1NDksIDY2MjY2LCAzMjU1NCwgCi0gICAgNjYyNzMsIDY2Mjc4LCAzMjU1OSwgNjYyODcsIDY2Mjk2LCAzMjU2NSwgNjYzMDEsIDMyNTcwLCA2NjMxMCwgNjYzMTUsIAotICAgIDExNTc4LCA2NjMxOSwgNjYzMjQsIDY2MzI5LCAzMjU3NSwgNjYzMzMsIDQwMjI1LCA2NjMzNywgNjYzNDAsIDY2MzQ0LCAKLSAgICA4MjExLCA2NjM1MCwgNjYzNTUsIDY2MzU5LCAzNzA1LCAzMjU4MCwgNjYzNjIsIDY2MzY2LCA2NjM2OSwgNjYzNzQsIAotICAgIDY2Mzc4LCA2NjM4NCwgNjYzOTIsIDY2NDA1LCA2NjQxNCwgNjY0MjAsIDY2NDI1LCA2NjQzMSwgNjY0MzUsIDY2NDQxLCAKLSAgICA2NjQ0OSwgNjY0NTQsIDY2NDU4LCA2NjQ2NSwgNjY0NzEsIDY2NDc5LCA2NjQ4OCwgNjY0OTYsIDMyNTgzLCA2NjUwMywgCi0gICAgNjY1MTMsIDY2NTIyLCA2NjUzNSwgNjY1NDAsIDY2NTQ1LCA2NjU1NCwgNjY1NjAsIDY2NTY3LCA2NjU3OCwgNjY1OTAsIAotICAgIDY2NTk3LCA2NjYwNiwgNjY2MTUsIDY2NjI0LCA2NjYzMSwgNjY2MzcsIDY2NjQ0LCA2NjY1MiwgNjY2NTksIDY2NjY3LCAKLSAgICA2NjY3NiwgNjY2ODQsIDY2NjkxLCA2NjY5OSwgNjY3MDgsIDY2NzE2LCA2NjcyNSwgNjY3MzUsIDY2NzQ0LCA2Njc1MiwgCi0gICAgNjY3NTksIDY2NzY3LCA2Njc3NiwgNjY3ODQsIDY2NzkzLCA2NjgwMywgNjY4MTIsIDY2ODIwLCA2NjgyOSwgNjY4MzksIAotICAgIDY2ODQ4LCA2Njg1OCwgNjY4NjksIDY2ODc5LCA2Njg4OCwgNjY4OTYsIDY2OTAzLCA2NjkxMSwgNjY5MjAsIDY2OTI4LCAKLSAgICA2NjkzNywgNjY5NDcsIDY2OTU2LCA2Njk2NCwgNjY5NzMsIDY2OTgzLCA2Njk5MiwgNjcwMDIsIDY3MDEzLCA2NzAyMywgCi0gICAgNjcwMzIsIDY3MDQwLCA2NzA0OSwgNjcwNTksIDY3MDY4LCA2NzA3OCwgNjcwODksIDY3MDk5LCA2NzEwOCwgNjcxMTgsIAotICAgIDY3MTI5LCA2NzEzOSwgNjcxNTAsIDY3MTYyLCA2NzE3MywgNjcxODMsIDY3MTkyLCA2NzIwMCwgNjcyMDcsIDY3MjE1LCAKLSAgICA2NzIyNCwgNjcyMzIsIDY3MjQxLCA2NzI1MSwgNjcyNjAsIDY3MjY4LCA2NzI3NywgNjcyODcsIDY3Mjk2LCA2NzMwNiwgCi0gICAgNjczMTcsIDY3MzI3LCA2NzMzNiwgNjczNDQsIDY3MzUzLCA2NzM2MywgNjczNzIsIDY3MzgyLCA2NzM5MywgNjc0MDMsIAotICAgIDY3NDEyLCA2NzQyMiwgNjc0MzMsIDY3NDQzLCA2NzQ1NCwgNjc0NjYsIDY3NDc3LCA2NzQ4NywgNjc0OTYsIDY3NTA0LCAKLSAgICA2NzUxMywgNjc1MjMsIDY3NTMyLCA2NzU0MiwgNjc1NTMsIDY3NTYzLCA2NzU3MiwgNjc1ODIsIDY3NTkzLCA2NzYwMywgCi0gICAgNjc2MTQsIDY3NjI2LCA2NzYzNywgNjc2NDcsIDY3NjU2LCA2NzY2NiwgNjc2NzcsIDY3Njg3LCA2NzY5OCwgNjc3MTAsIAotICAgIDY3NzIxLCA2NzczMSwgNjc3NDIsIDY3NzU0LCA2Nzc2NSwgNjc3NzcsIDY3NzkwLCA2NzgwMiwgNjc4MTMsIDY3ODIzLCAKLSAgICA2NzgzMiwgNjc4NDAsIDY3ODQ3LCA2Nzg1NSwgNjc4NjQsIDY3ODcyLCA2Nzg4MSwgNjc4OTEsIDY3OTAwLCA2NzkwOCwgCi0gICAgNjc5MTcsIDY3OTI3LCA2NzkzNiwgNjc5NDYsIDY3OTU3LCA2Nzk2NywgNjc5NzYsIDY3OTg0LCA2Nzk5MywgNjgwMDMsIAotICAgIDY4MDEyLCA2ODAyMiwgNjgwMzMsIDY4MDQzLCA2ODA1MiwgNjgwNjIsIDY4MDczLCA2ODA4MywgNjgwOTQsIDY4MTA2LCAKLSAgICA2ODExNywgNjgxMjcsIDY4MTM2LCA2ODE0NCwgNjgxNTMsIDY4MTYzLCA2ODE3MiwgNjgxODIsIDY4MTkzLCA2ODIwMywgCi0gICAgNjgyMTIsIDY4MjIyLCA2ODIzMywgNjgyNDMsIDY4MjU0LCA2ODI2NiwgNjgyNzcsIDY4Mjg3LCA2ODI5NiwgNjgzMDYsIAotICAgIDY4MzE3LCA2ODMyNywgNjgzMzgsIDY4MzUwLCA2ODM2MSwgNjgzNzEsIDY4MzgyLCA2ODM5NCwgNjg0MDUsIDY4NDE3LCAKLSAgICA2ODQzMCwgNjg0NDIsIDY4NDUzLCA2ODQ2MywgNjg0NzIsIDY4NDgwLCA2ODQ4OSwgNjg0OTksIDY4NTA4LCA2ODUxOCwgCi0gICAgNjg1MjksIDY4NTM5LCA2ODU0OCwgNjg1NTgsIDY4NTY5LCA2ODU3OSwgNjg1OTAsIDY4NjAyLCA2ODYxMywgNjg2MjMsIAotICAgIDY4NjMyLCA2ODY0MiwgNjg2NTMsIDY4NjYzLCA2ODY3NCwgNjg2ODYsIDY4Njk3LCA2ODcwNywgNjg3MTgsIDY4NzMwLCAKLSAgICA2ODc0MSwgNjg3NTMsIDY4NzY2LCA2ODc3OCwgNjg3ODksIDY4Nzk5LCA2ODgwOCwgNjg4MTgsIDY4ODI5LCA2ODgzOSwgCi0gICAgNjg4NTAsIDY4ODYyLCA2ODg3MywgNjg4ODMsIDY4ODk0LCA2ODkwNiwgNjg5MTcsIDY4OTI5LCA2ODk0MiwgNjg5NTQsIAotICAgIDY4OTY1LCA2ODk3NSwgNjg5ODYsIDY4OTk4LCA2OTAwOSwgNjkwMjEsIDY5MDM0LCA2OTA0NiwgNjkwNTcsIDY5MDY5LCAKLSAgICA2OTA4MiwgNjkwOTQsIDY5MTA3LCA2OTEyMSwgNjkxMzQsIDY5MTQ2LCA2OTE1NywgNjkxNjcsIDY5MTc2LCA2OTE4NCwgCi0gICAgNjkxOTEsIDY5MTk2LCA4MDU4LCA2OTIwMywgMzI1OTMsIDY5MjA4LCA2OTIxMywgMzI1OTgsIDY5MjE5LCAyMDkyOSwgCi0gICAgMzI2MDMsIDY5MjI0LCA2OTIzMCwgNjkyMzgsIDY5MjQ0LCA2OTI1MCwgNjkyNTcsIDY5MjY0LCA2OTI2OSwgNjkyNzMsIAotICAgIDY5Mjc2LCA2OTI4MCwgNjkyODksIDY5Mjk1LCA2OTMwNywgNjkzMTgsIDY5MzIyLCAzMDgxLCA4MDMzLCA2OTMyNywgCi0gICAgNjkzMzAsIDY5MzMyLCA2OTMzNiwgNjkzNDAsIDY5MzQ0LCA2OTM1MCwgNjkzNTUsIDI1OTQ0LCA2OTM2MCwgNjkzNjQsIAotICAgIDY5MzY3LCA2OTM3MiwgNjkzNzYsIDY5MzgzLCA2OTM4OSwgNjkzOTMsIDYxNzAsIDY5Mzk3LCAzMjYyMCwgNjk0MDIsIAotICAgIDY5NDA5LCA2OTQxOCwgNjk0MjYsIDY5NDM3LCA2OTQ0NSwgNjk0NTMsIDY5NDYwLCA2OTQ2NywgNjk0NzMsIDY5NDg0LCAKLSAgICAzMjYyNSwgNjk0ODksIDY5NTAwLCA2OTUxMiwgNjk1MjAsIDY5NTMxLCA2OTU0MCwgNjk1NTEsIDY5NTU2LCA2OTU2NCwgCi0gICAgMjU1NiwgNjk1NjksIDM0Mjk1LCA2OTU4MiwgNjk1ODYsIDY5NTk4LCA2OTYwNiwgNjk2MTEsIDY5NjE5LCAxNzQ4NSwgCi0gICAgNjk2MzAsIDY5NjM2LCA2OTY0MywgNjk2NTEsIDY5NjU3LCAzMjYzNSwgNjk2NjIsIDM5MTQsIDU4MjU0LCA2OTY2OSwgCi0gICAgNjk2NzIsIDY5NjgwLCA2OTY5MywgNjk3MDYsIDY5NzE5LCA2OTczMiwgNjk3MzksIDY5NzUwLCA2OTc1OSwgNDE3MjQsIAotICAgIDQxNzI5LCA2OTc2NCwgNjk3NjgsIDY5Nzc2LCA2OTc4MywgNjk3OTIsIDY5ODAwLCA2OTgwNiwgNjk4MTUsIDY5ODIzLCAKLSAgICA2OTgzMSwgNjk4MzUsIDY5ODQ0LCA2OTg1MywgNjk4NjMsIDY5ODc2LCA2OTg4OSwgNjk4OTksIDMyNjQwLCA2OTkwNSwgCi0gICAgNjk5MTIsIDY5OTE4LCAzMjY0NiwgNjk5MjMsIDY5OTI2LCA2OTkzMCwgNjk5MzgsIDY5OTQ3LCA0MTQ2MiwgNjk5NTUsIAotICAgIDY5OTY0LCA2OTk3MiwgNjk5NzksIDY5OTg3LCA2OTk5NywgNzAwMDYsIDcwMDE1LCA3MDAyNCwgNzAwMzIsIDcwMDQzLCAKLSAgICA3MDA1MywgOTM2NiwgMjE1NjcsIDcwMDYyLCA3MDA2NywgNzAwNzIsIDcwMDc2LCA3MDA4MCwgNzAwODUsIDcwMDkxLCAKLSAgICA3MDA5NiwgNzAxMDEsIDcwMTA3LCA3MDExMiwgNzAxMTcsIDIxNTMyLCA3MDEyMiwgNzAxMjksIDcwMTM3LCA3MDE0NSwgCi0gICAgNzAxNTAsIDcwMTU3LCA3MDE2NCwgNzAxNjksIDcwMTczLCA3MDE3NywgNzAxODUsIDcwMTkzLCAzMjY2MywgNzAxOTksIAotICAgIDcwMjA1LCA3MDIxNywgNzAyMjMsIDcwMjI3LCA3MDIzNCwgNzAyMzksIDcwMjUwLCA3MDI2MCwgNzAyNzAsIDcwMjgyLCAKLSAgICA3MDI4OCwgNzAyOTgsIDcwMzA4LCAzMjY5MCwgNzAzMTcsIDcwMzI2LCA3MDMzMiwgNzAzNDQsIDcwMzU1LCA3MDM2MiwgCi0gICAgNzAzNjcsIDcwMzcxLCA3MDM3OSwgNzAzODUsIDcwMzkwLCA3MDM5NSwgNzA0MDIsIDcwNDEwLCA3MDQyMiwgNzA0MzIsIAotICAgIDcwNDQxLCA3MDQ1MCwgNzA0NTcsIDM0MTU3LCAyMzg1MSwgNzA0NjMsIDcwNDY4LCA3MDQ3MiwgNzA0NzYsIDcwNDgxLCAKLSAgICA3MDQ4NywgNzA0OTgsIDcwNTExLCA3MDUxNiwgNzA1MjMsIDMyNjk1LCA3MDUyOCwgNzA1NDAsIDcwNTQ5LCA3MDU1OSwgCi0gICAgNzA1NzAsIDcwNTgzLCA3MDU5MCwgNzA1OTksIDcwNjA4LCA3MDYxNiwgNzA2MjEsIDcwNjI3LCAxMDY5LCA3MDYzMiwgCi0gICAgNzA2MzcsIDcwNjQyLCA3MDY0NywgNzA2NTMsIDcwNjU4LCA3MDY2MywgNzA2NjksIDcwNjc1LCA3MDY4MCwgNzA2ODQsIAotICAgIDcwNjg5LCA3MDY5NCwgNzA2OTksIDU4NzY2LCA3MDcwNCwgNzA3MDksIDcwNzE0LCA3MDcxOSwgNzA3MjUsIDcwNzMxLCAKLSAgICA3MDczNiwgNzA3NDAsIDcwNzQ1LCA3MDc1MCwgNzA3NTUsIDcwNzYxLCA3MDc2NiwgNzA3NzIsIDcwNzc3LCA3MDc4MiwgCi0gICAgNzA3ODcsIDcwNzkyLCA3MDc5NiwgNzA4MDIsIDcwODA3LCA3MDgxNiwgNzA4MjEsIDcwODI2LCA3MDgzMSwgNzA4MzYsIAotICAgIDcwODQwLCA3MDg0NywgNzA4NTMsIDE3MTM1LCAxNzE0MiwgNzA4NTgsIDcwODYyLCA3MDg2NiwgNzA4NzAsIDcwODc0LCAKLSAgICA0NTUyNCwgNzA4NzgsIDcwODA4LCA3MDg4MCwgNzA4OTAsIDMyNzA0LCA3MDg5MywgNzA5MDIsIDcwOTA4LCA2MTQzLCAKLSAgICAzMjcwOSwgNzA5MTIsIDcwOTE4LCA3MDkyMywgNzA5MjksIDcwOTM0LCA3MDkzOCwgNzA5NDUsIDcwOTUwLCA3MDk2MCwgCi0gICAgNzA5NjksIDcwOTczLCA3MDk3OSwgNzA5ODUsIDcwOTkxLCA3MDk5NSwgNzEwMDMsIDcxMDEwLCA3MTAxOCwgNzEwMjYsIAotICAgIDMyNzE0LCA3MTAzMywgNzEwMzYsIDcxMDQzLCA3MTA0OSwgNzEwNTQsIDcxMDU4LCA3MTA2NCwgNzEwNzEsIDcxMDc2LCAKLSAgICA3MTA4MCwgNzEwODksIDcxMDk3LCA3MTEwMywgNzExMDgsIDMyNzE5LCA3MTExNSwgNzExMjIsIDcxMTI4LCA3MTEzMywgCi0gICAgNzExMzksIDcxMTQ2LCA3MTE1MiwgMjEyOTQsIDI3NDU1LCA3MTE1OCwgNzExNjMsIDcxMTY5LCA3MTE4MSwgNzA4NDEsIAotICAgIDcwODQ4LCAyMTQ3MCwgNzExOTEsIDcxMTk2LCA3MTIwMywgNzEyMDksIDcxMjE2LCA3MTIyMiwgNzEyMzMsIDcxMjM4LCAKLSAgICA5MTEwLCA3MTI0NiwgNzEyNDksIDcxMjU1LCA3MTI1OSwgNzEyNjMsIDcxMjY2LCA3MTI3MiwgMzI0NjgsIDYxOTQsIDk2NCwgCi0gICAgMTM0MTksIDcxMjc5LCA3MTI4NSwgNzEyOTEsIDcxMjk3LCA3MTMwMywgNzEzMDksIDcxMzE1LCA3MTMyMSwgNzEzMjcsIAotICAgIDcxMzMyLCA3MTMzNywgNzEzNDIsIDcxMzQ3LCA3MTM1MiwgNzEzNTcsIDcxMzYyLCA3MTM2NywgNzEzNzIsIDcxMzc3LCAKLSAgICA3MTM4MiwgNzEzODcsIDcxMzkyLCA3MTM5OCwgNzE0MDMsIDcxNDA4LCA3MTQxNCwgNzE0MTksIDcxNDI0LCA3MTQzMCwgCi0gICAgNzE0MzYsIDcxNDQyLCA3MTQ0OCwgNzE0NTQsIDcxNDYwLCA3MTQ2NiwgNzE0NzIsIDcxNDc4LCA3MTQ4MywgNzE0ODgsIAotICAgIDcxNDk0LCA3MTQ5OSwgNzE1MDQsIDcxNTEwLCA3MTUxNSwgNzE1MjAsIDcxNTI1LCA3MTUzMCwgNzE1MzUsIDcxNTQwLCAKLSAgICA3MTU0NSwgNzE1NTAsIDcxNTU1LCA3MTU2MCwgNzE1NjUsIDcxNTcwLCA3MTU3NiwgNzE1ODEsIDcxNTg2LCA3MTU5MSwgCi0gICAgNzE1OTcsIDcxNjAyLCA3MTYwNywgNzE2MTIsIDcxNjE3LCA3MTYyMywgNzE2MjgsIDcxNjMzLCA3MTYzOCwgNzE2NDMsIAotICAgIDcxNjQ4LCA3MTY1MywgNzE2NTgsIDcxNjYzLCA3MTY2OCwgNzE2NzMsIDcxNjc4LCA3MTY4MywgNzE2ODgsIDcxNjkzLCAKLSAgICA3MTY5OCwgNzE3MDMsIDcxNzA4LCA3MTcxMywgNzE3MTgsIDcxNzI0LCA3MTcyOSwgNzE3MzQsIDcxNzM5LCA3MTc0NCwgCi0gICAgNzE3NDksIDcxNzU0LCA3MTc1OSwgMTg2NCwgMTQyLCA3MTc2NCwgNzE3NjgsIDcxNzcyLCA3MTc3NywgNzE3ODUsIDcxNzg5LCAKLSAgICA3MTc5NiwgNzE4MDQsIDcxODA4LCA3MTgyMSwgNzE4MjksIDcxODMzLCA3MTgzNiwgNzE4NDEsIDcxODQ1LCA3MTg1MCwgCi0gICAgNzE4NTQsIDcxODYyLCA3MTg2NiwgMjA5MzcsIDcxODcxLCA3MTg3NSwgNjA5NjcsIDcxODc5LCA3MTg4MiwgNzE4OTAsIAotICAgIDcxODk4LCA3MTkwNiwgNzE5MTEsIDcxOTE4LCA3MTkyNCwgNzE5MzAsIDcxOTM1LCA3MTk0MiwgNzE5NDcsIDcxOTU1LCAKLSAgICA2NDk0NywgNzE5NjIsIDcxOTY3LCA3MTk3MiwgNzE5NzYsIDExNjQ1LCA3MTk4MCwgNzE5ODUsIDcxOTkwLCA3MTk5NCwgCi0gICAgNzE5OTcsIDcyMDAzLCA3MjAwNywgNzIwMTcsIDcyMDI2LCA3MjAyOSwgNzIwMzMsIDcyMDQwLCA3MjA1MywgNzIwNTksIAotICAgIDcyMDY3LCA3MjA3OCwgNzIwODksIDcyMTAwLCA3MjExMSwgNzIxMjAsIDcyMTI2LCA3MjEzNSwgNzIxNDMsIDcyMTUzLCAKLSAgICA3MjE2NiwgNzIxNzMsIDcyMTg0LCA3MjE5MCwgNzIxOTUsIDcyMjAwLCA3MjIwNiwgNzIyMTIsIDcyMjIyLCA3MjIzMSwgCi0gICAgNzA1MzAsIDcyMjM5LCA3MjI0NSwgNzIyNTMsIDcyMjU5LCA3MjI2NywgNzIyNzAsIDcyMjc0LCA3MjI3OCwgNzIyODEsIAotICAgIDcyMjg3LCA3MjI5MywgNzIzMDEsIDcyMzEzLCA3MjMyNSwgNzIzMzIsIDcyMzM2LCA3MjM0NywgNzIzNTUsIDcyMzYyLCAKLSAgICA3MjM3NCwgNzIzODIsIDcyMzkwLCA3MjM5NywgNzI0MDMsIDcyNDEzLCA3MjQyMiwgNzI0MjcsIDcyNDM3LCA3MjQ0NiwgCi0gICAgNDA3ODgsIDcyNDUzLCA3MjQ1NywgNzI0NjIsIDcyNDcwLCA3MjQ3NywgNzI0ODMsIDcyNDg3LCA3MjQ5NywgNzI1MDgsIAotICAgIDcyNTE2LCA3MjUyMywgNzI1MzUsIDcyNTQ3LCA3MjU1NiwgNjk1NzIsIDcyNTYzLCA3MjU3NCwgNzI1ODgsIDcyNTk2LCAKLSAgICA3MjYwNiwgNzI2MTMsIDcyNjIxLCA3MjYzMywgNzI2NDIsIDcyNjUwLCA3MjY2MCwgNzI2NzEsIDcyNjgzLCA3MjY5MiwgCi0gICAgNzI3MDIsIDcyNzA5LCA3MjcxOCwgNzI3MzMsIDcyNzQxLCA3Mjc1MSwgNzI3NjAsIDcyNzY4LCA3Mjc4MSwgNzI3OTYsIAotICAgIDcyODAwLCA3MjgwOSwgNzI4MjEsIDcyODMyLCA3Mjg0MywgNzI4NTQsIDcyODY0LCA3Mjg3NSwgNzI4ODMsIDcyODg5LCAKLSAgICA3Mjg5OSwgNzI5MDcsIDcyOTEzLCAyOTAyOCwgNzI5MTgsIDcyOTI0LCA3MjkyOSwgNzI5MzYsIDk3MDgsIDE3NTA1LCAKLSAgICA3Mjk0MiwgNzI5NTEsIDcyOTU2LCA3Mjk2MCwgNzI5NjcsIDcyOTczLCA3Mjk3OCwgNzI5ODMsIDcyOTkxLCA3Mjk5OSwgCi0gICAgNzMwMDMsIDczMDA2LCA3MzAwOSwgNzMwMTEsIDczMDE4LCA3MzAyNCwgNzMwMzUsIDczMDQwLCA3MzA0NCwgNzMwNTEsIAotICAgIDczMDU3LCA3MzA2MiwgNzMwNzAsIDY1NDQ2LCA2NTQ1NiwgNzMwNzYsIDczMDgzLCA3MzA5MywgMTA2MTgsIDczMTAwLCAKLSAgICA3MzEwNSwgMjkyMjQsIDczMTE0LCA3MzExOSwgNzMxMjYsIDczMTM2LCA3MzE0NCwgNzMxNTIsIDczMTYxLCA3MzE2NywgCi0gICAgNzMxNzMsIDczMTgwLCA3MzE4NywgNzMxOTIsIDczMTk2LCA3MzIwNCwgNzMyMDksIDczMjE0LCA3MzIyMiwgNzMyMjksIAotICAgIDczMjM0LCA3MzI0MCwgNzMyNDMsIDczMjQ3LCA3MzI1NiwgNzE4MTYsIDczMjY1LCA3MzI2OSwgNzMyNzUsIDczMjg2LCAKLSAgICA3MzI5NiwgMTc1MTQsIDczMzA3LCA3MzMxNSwgMTc1MjYsIDczMzIyLCA3MzMyNiwgNzMzMzUsIDI3MzQxLCA3MzM0MiwgCi0gICAgNzMzNDYsIDczMzUxLCA3MzM2OCwgNzMzODAsIDEwNTc2LCA3MzM5MiwgNzMzOTcsIDczNDAyLCA3MzQwNywgMjEwMTAsIAotICAgIDczNDExLCA3MzQxNiwgNzM0MjEsIDczNDI3LCA3MzQzMiwgNTg0NiwgMjEwMTQsIDczNDM3LCA3MzQ0MiwgNzM0NDgsIAotICAgIDczNDU1LCA3MzQ2MCwgNzM0NjUsIDczNDcxLCA3MzQ3NywgNzM0ODMsIDczNDg4LCA3MzQ5NCwgNzM0OTgsIDczNTEyLCAKLSAgICA3MzUyMCwgNzM1MjgsIDczNTM0LCA3MzUzOSwgNzM1NDYsIDczNTU2LCA3MzU2NSwgNzM1NzAsIDczNTc1LCA3MzU4MywgCi0gICAgNzM1ODgsIDczNTk0LCA3MzU5OSwgNzM2MDgsIDU5ODIzLCA3MzYxMywgNzM2MTYsIDczNjM0LCA3MzY1MywgNzM2NjYsIAotICAgIDczNjgwLCA3MzY5NiwgNzM3MDMsIDczNzEwLCA3MzcxNiwgNzM3MjMsIDczNzI4LCA3MzczNCwgNzM3NDAsIDczNzQ4LCAKLSAgICA3Mzc1NCwgNzM3NTksIDczNzY0LCA3Mzc4MCwgMTA1ODksIDczNzk0LCA3MzgwMSwgNzM4MDksIDczODE1LCA3MzgxOSwgCi0gICAgNzM4MjIsIDczODI3LCA3MzgzMiwgNzM4MzksIDczODQ0LCA3Mzg1MywgNzM4NTgsIDczODY0LCA3Mzg3MywgNzM4ODIsIAotICAgIDczODg3LCA3Mzg5MSwgNzM4OTksIDczOTA4LCAxMTY3NCwgNzM5MTcsIDczOTI1LCA3MzkzMCwgNzM5MzYsIDExNjg1LCAKLSAgICA3Mzk0MSwgNzM5NDQsIDczOTQ5LCA3Mzk1OSwgNzM5NjgsIDczOTczLCA3Mzk3OSwgNzM5ODQsIDczOTkyLCA3Mzk5OSwgCi0gICAgNzQwMTAsIDc0MDIwLCA3NDAyNSwgNjQ4NzUsIDc0MDMwLCA3NDAzNiwgNzQwNDEsIDc0MDQ4LCA3NDA1NywgNzQwNjUsIAotICAgIDc0MDcxLCA3NDA3NywgNzQwODQsIDc0MDkwLCA3NDA5NCwgMTY5NjAsIDMwNTUsIDc0MDk5LCA3NDEwMywgNzQxMDcsIAotICAgIDc0MTEzLCA3NDEyMiwgNzQxMjgsIDc0MTM1LCA3NDEzOSwgNzQxNjAsIDc0MTgyLCA3NDE5OCwgNzQyMTUsIDc0MjM0LCAKLSAgICA3NDI0MywgNzQyNTMsIDc0MjYwLCA3NDI2NywgMjcyMjgsIDc0MjczLCA3NDI3NywgNzQyODUsIDc0Mjk3LCA3NDMwMywgCi0gICAgNzQzMTEsIDc0MzE1LCA3NDMyMywgNzQzMzAsIDc0MzM0LCA3NDM0MCwgNzQzNDYsIDc0MzUxLCAzNTYzLCA0MTkyNCwgCi0gICAgNzQzNTcsIDc0MzYxLCA3NDM2NSwgNzQzNjksIDc0Mzc0LCA3NDM3OSwgNzQzODQsIDc0MzkwLCA3NDM5NiwgNzQ0MDIsIAotICAgIDc0NDA5LCA3NDQxNSwgNzQ0MjIsIDc0NDI4LCA3NDQzNCwgNzQ0MzksIDc0NDQ1LCA3NDQ1MCwgNzQ0NTQsIDc0NDU5LCAKLSAgICA3NDQ2MywgNzQ0NjgsIDQxOTM5LCA3NDQ3MiwgNzQ0NzcsIDc0NDg1LCA3NDQ4OSwgNzQ0OTQsIDc0NTAxLCA3NDUxMCwgCi0gICAgNzQ1MTYsIDc0NTIwLCA3NDUyNywgNzQ1MzEsIDc0NTM0LCA3NDU0MSwgNzQ1NTAsIDc0NTU1LCA3NDU1OSwgNzQ1NjcsIAotICAgIDc0NTc2LCA3NDU4MCwgNzQ1ODgsIDc0NTk0LCA3NDU5OSwgNzQ2MDQsIDc0NjEwLCA3NDYxNiwgNzQ2MjEsIDc0NjI1LCAKLSAgICA3NDYzMSwgNzQ2MzYsIDc0NjQwLCA3NDY0NCwgNzQ2NDcsIDc0NjUyLCA3NDY2MCwgNzQ2NzAsIDc0Njc1LCAzOTQxNiwgCi0gICAgNzQ2ODMsIDc0Njk1LCA3NDY5OSwgNzQ3MDUsIDc0NzE3LCA3NDcyOCwgNzQ3MzUsIDc0NzQxLCA3NDc0OCwgNzQ3NjAsIAotICAgIDc0NzY3LCA3NDc3MywgMjEwODgsIDc0Nzc3LCA3NDc4MywgNzQ3OTAsIDc0Nzk2LCA3NDgwMiwgNzQ4MDcsIDc0ODEyLCAKLSAgICA3NDgxNywgNzQ4MjYsIDcwMzMsIDc0ODMxLCAxNjQyNiwgNzQ4MzcsIDc0ODQxLCA3NDg0NSwgNzQ4NDksIDc0ODU3LCAKLSAgICA3NDg2NiwgNzQ4NzAsIDc0ODc3LCA3NDg4NiwgNzQ4OTksIDc0OTA1LCA3NDQ2NCwgMzAwODgsIDc0OTEwLCA3NDkxMiwgCi0gICAgNzQ5MTcsIDc0OTIyLCA3NDkyNywgNzQ5MzIsIDc0OTM3LCA3NDk0MiwgNzQ5NDcsIDc0OTUyLCA3NDk1NywgNzQ5NjIsIAotICAgIDc0OTY3LCA3NDk3MiwgNzQ5NzcsIDc0OTgyLCA3NDk4OCwgNzQ5OTMsIDc0OTk4LCA3NTAwMywgNzUwMDgsIDc1MDEzLCAKLSAgICA3NTAxOCwgNzUwMjMsIDc1MDI4LCA3NTAzNCwgNzUwNDAsIDc1MDQ2LCA3NTA1MSwgNzUwNTYsIDc1MDY4LCA3NTA3MywgCi0gICAgMTg3MCwgNDYsIDc1MDc4LCA3NTA4MywgMzI3NDYsIDc1MDg3LCAzMjc1MSwgMzI3NTYsIDMyNzYyLCAzMjc2NywgNzUwOTEsIAotICAgIDMyNzcyLCAyMjA4MywgNzUxMTMsIDc1MTE3LCA3NTEyMSwgNzUxMjYsIDc1MTMwLCAzMjc3NiwgNzUxMzQsIDc1MTQyLCAKLSAgICAzMjc4MSwgNzUxNDksIDc1MTUyLCA3NTE1NywgNzUxNjEsIDk1NDMsIDc1MTcwLCAzMjc4NiwgMjE5NDUsIDc1MTczLCAKLSAgICA3NTE3NywgMTQyOCwgNzUxODIsIDMyNzk3LCA3NTE4NSwgNzUxOTAsIDI1NzM3LCAyNTc0NywgMzUyNTgsIDc1MTk1LCAKLSAgICA3NTIwMCwgNzUyMDUsIDc1MjEwLCA3NTIxNiwgNzUyMjEsIDc1MjMwLCA3NTIzNSwgNzUyNDIsIDc1MjQ4LCA3NTI1MywgCi0gICAgNzUyNTgsIDc1MjYzLCA3NTI3MywgNzUyODIsIDc1Mjg3LCA3NTI5NSwgNzUyOTksIDc1MzA3LCAzMjYxMSwgMzczMTcsIAotICAgIDc1MzE0LCA3NTMyMCwgNzUzMjUsIDc1MzMwLCAxMjAxNiwgNzUzMzUsIDc1MzQxLCA3NTM0NiwgNzUzNTMsIDc1MzU5LCAKLSAgICA3NTM2NCwgNzUzNzIsIDc1MzgyLCA3NTM5MiwgNzUzOTgsIDc1NDAzLCA3NTQwOSwgMTc1MzYsIDc1NDE2LCAzNjA3MywgCi0gICAgNzU0MjksIDc1NDM0LCA3NTQ0MCwgMzA5OTMsIDc1NDUzLCA3NTQ1OSwgNzU0NjMsIDc1NDcyLCA3NTQ3OSwgNzU0ODUsIAotICAgIDc1NDkzLCA3NTUwMiwgNzU1MDksIDc1NTE1LCA3NTUxOCwgNzU1MjIsIDI1ODc4LCA3NTUyNiwgNzU1MzMsIDc1NTM5LCAKLSAgICA3NTU0NywgNzU1NTIsIDIzOTk0LCA3NTU1OCwgNzU1NjEsIDc1NTY5LCA3NTU3NywgNzU1OTEsIDc1NTk4LCA3NTYwNCwgCi0gICAgNzU2MTEsIDc1NjE3LCAzMjgxMSwgNzU2MjEsIDc1NjI4LCA3NTYzNiwgNzU2NDQsIDc1NjUwLCAzMjgxNiwgNzU2NTgsIAotICAgIDc1NjY0LCA3NTY2OSwgNzU2NzksIDc1Njg1LCA3NTY5NCwgMzA4MzAsIDM0NzE2LCA3NTcwMiwgNzU3MDcsIDc1NzEyLCAKLSAgICA3NTcxNiwgNzU3MjEsIDc1NzI1LCA3NTczMywgMTQ5MjAsIDM5NDI5LCA3NTczOCwgNzU3NDMsIDMyODIxLCA2MjI2OSwgCi0gICAgNzU3NDcsIDc1NzUyLCA3NTc1NiwgNzU3NjUsIDc1NzczLCA3NTc3OSwgNzU3ODQsIDc1NzkwLCA3NTc5NywgNzU4MDMsIAotICAgIDc1ODA4LCA3NTgxMywgNzU4MjIsIDc1ODM0LCA3NTg0OSwgMzMwODMsIDc1ODU1LCAxNjU0NSwgMzI4MjUsIDc1ODU5LCAKLSAgICA3NTg2NiwgMjQxMDQsIDc1ODcyLCA3NTg3OSwgNzU4ODgsIDc1ODk1LCA3NTkwNCwgNzU5MTAsIDc1OTE1LCA3NTkyMywgCi0gICAgNzU5MjksIDMyODM1LCA3NTkzNCwgNzU5NDMsIDc0NzIzLCA3NTk1MiwgNzU5NTksIDc1OTY1LCA3NTk3MSwgNzU5ODEsIAotICAgIDc1OTg5LCA3NTk5NiwgNzYwMDAsIDMyODQwLCA3NjAwMywgMzI4NDYsIDMyODUyLCA3NjAwOCwgNzYwMTYsIDc2MDI0LCAKLSAgICA3NjAzNCwgNzYwNDMsIDc2MDUxLCA3NjA1OCwgNzYwNjgsIDMyODU3LCA3NjA3MiwgNzYwNzQsIDc2MDc4LCA3NjA4MywgCi0gICAgNzYwODcsIDc2MDkxLCA3NjA5NywgNzYxMDIsIDc2MTA2LCA3NjExNywgNzYxMjIsIDc2MTI3LCAzMDYwLCA3NjEzMSwgCi0gICAgNzYxMzgsIDc2MTQyLCA3NjE1MSwgNzYxNTksIDc2MTY2LCA3NjE3MSwgNzYxNzYsIDYyMzE1LCA3NjE4MCwgNzYxODMsIAotICAgIDc2MTg5LCA3NjE5NywgNzYyMDMsIDc2MjA3LCA3NjIxMiwgNzYyMTksIDc2MjI0LCA3NjIzMCwgMzQ3NDcsIDc2MjM1LCAKLSAgICA3NjIzOCwgNzYyNDMsIDc2MjQ3LCA3NjI1MiwgNzYyNTcsIDc2MjYxLCA3NjI2OSwgNzYyNzMsIDI1NzU2LCAyNTc2NSwgCi0gICAgNzYyNzksIDc2Mjg1LCA3NjI5MSwgNzYyOTYsIDc2MzAwLCA3NjMwMywgNzYzMTMsIDc2MzIyLCA3NjMyNywgNzYzMzMsIAotICAgIDc2MzQwLCA3NjM0NiwgNzYzNTAsIDc2MzU4LCA3NjM2MywgMzQ3NTMsIDc2MzY3LCA3NjM3NSwgNzYzODEsIDc2Mzg4LCAKLSAgICA3NjM5MywgNzYzOTcsIDc2NDAyLCA1ODQ0MCwgMzQ3NTksIDc2NDA4LCA3NjQxMywgNzY0MTcsIDc2NDIyLCA3NjQyNywgCi0gICAgNzY0MzIsIDc2NDM2LCA3NjQ0MSwgNzY0NDYsIDc2NDUyLCA3NjQ1NywgNzY0NjIsIDc2NDY4LCA3NjQ3NCwgNzY0NzksIAotICAgIDc2NDgzLCA3NjQ4OCwgNzY0OTMsIDc2NDk4LCA3NjUwMiwgMjQxMDMsIDc2NTA3LCA3NjUxMiwgNzY1MTgsIDc2NTI0LCAKLSAgICA3NjUzMCwgNzY1MzUsIDc2NTM5LCA3NjU0NCwgNzY1NDksIDc2NTU0LCA3NjU1OCwgNzY1NjMsIDc2NTY4LCA3NjU3MywgCi0gICAgNzY1NzgsIDc2NTgyLCAzMjg2NSwgNzY1OTAsIDc2NTk0LCA3NjYwMiwgNzY2MTAsIDc2NjIxLCA3NjYyNiwgNzY2MzAsIAotICAgIDIyMzk3LCA3NjYzNSwgNzY2NDEsIDc2NjUxLCA3NjY1OCwgNzY2NjMsIDc2NjcyLCA3NjY3NywgNzY2ODEsIDc2Njg2LCAKLSAgICA3NjY5NCwgNzY3MDIsIDc2NzA5LCA2NTEwOSwgNzY3MTUsIDc2NzIzLCA3NjczMCwgNzY3NDEsIDc2NzQ3LCA3Njc1MSwgCi0gICAgNzY3NTcsIDMyODc1LCA3Njc2MCwgNzY3NjcsIDc2Nzc1LCA3Njc4MCwgMzk2MjAsIDc2Nzg0LCA3Njc4OSwgNzY3OTYsIAotICAgIDc2ODAxLCA4OTkyLCA3NjgwNSwgNzY4MTMsIDc2ODIwLCA3NjgyNywgNzY4MzMsIDc2ODQ3LCA2MzM4MSwgNzY4NTUsIAotICAgIDc2ODYxLCA3Njg2NSwgNzY4NjgsIDc2ODc2LCA3Njg4MywgNzY4ODgsIDc2OTAxLCA3NjkwOCwgNzY5MTIsIDc2OTE5LCAKLSAgICA3NjkyNCwgNjA4NjAsIDc2OTI5LCA3NjkzMiwgNzY5MzksIDc2OTQ1LCA3Njk0OSwgNzY5NTcsIDc2OTY2LCA3Njk3NiwgCi0gICAgNzY5ODYsIDc2OTk1LCA3NzAwMywgNzcwMTQsIDc3MDE5LCA3NzAyMywgNzcwMjgsIDc3MDMyLCAzNTM4OSwgNzcwNDAsIAotICAgIDIxMzU3LCAzNTM5OCwgNzcwNDUsIDc3MDUwLCA3NzA1NSwgNzcwNjAsIDc3MDY1LCA3NzA3MCwgNzcwNzUsIDc3MDc5LCAKLSAgICA3NzA4NCwgNzcwODksIDc3MDk0LCA3NzA5OSwgNzcxMDQsIDc3MTA5LCA3NzExMywgNzcxMTgsIDc3MTIzLCA3NzEyNywgCi0gICAgNzcxMzEsIDc3MTM1LCA3NzEzOSwgNzcxNDQsIDc3MTQ5LCA3NzE1MywgNzcxNTgsIDc3MTYyLCA3NzE2NiwgNzcxNzEsIAotICAgIDc3MTc2LCA3NzE4MSwgNzcxODYsIDc3MTkwLCA3NzE5NSwgNzcyMDAsIDc3MjA0LCA3NzIwOSwgNzcyMTQsIDc3MjE5LCAKLSAgICA3NzIyNCwgNzcyMjksIDc3MjM0LCA3NzIzOSwgNzcyNDQsIDc3MjQ5LCA3NzI1NCwgNzcyNTksIDc3MjY0LCA3NzI2OSwgCi0gICAgNzcyNzQsIDc3Mjc5LCA3NzI4NCwgNzcyODksIDc3Mjk0LCA3NzI5OSwgNzczMDQsIDc3MzA4LCA3NzMxMywgNzczMTgsIAotICAgIDc3MzIzLCA3NzMyOCwgNzczMzMsIDc3MzM4LCA3NzM0MywgNzczNDgsIDc3MzUzLCA3NzM1OCwgNzczNjMsIDc3MzY3LCAKLSAgICA3NzM3MiwgNzczNzYsIDc3MzgxLCA3NzM4NiwgNzczOTEsIDc3Mzk2LCA3NzQwMSwgNzc0MDYsIDc3NDExLCA3NzQxNiwgCi0gICAgNzc0MjEsIDc3NDI1LCA3NzQyOSwgNzc0MzQsIDc3NDM5LCA3NzQ0MywgNzc0NDgsIDc3NDUzLCA3NzQ1NywgNzc0NjIsIAotICAgIDc3NDY3LCA3NzQ3MiwgNzc0NzcsIDc3NDgxLCA3NzQ4NiwgNzc0OTEsIDc3NDk1LCA3NzUwMCwgNzc1MDQsIDc3NTA4LCAKLSAgICA3NzUxMiwgNzc1MTYsIDc3NTIxLCA3NzUyNSwgNzc1MjksIDc3NTMzLCA3NzUzNywgNzc1NDEsIDc3NTQ1LCA3NzU0OSwgCi0gICAgNzc1NTMsIDc3NTU3LCA3NzU2MiwgNzc1NjcsIDc3NTcyLCA3NzU3NywgNzc1ODIsIDc3NTg3LCA3NzU5MiwgNzc1OTcsIAotICAgIDc3NjAyLCA3NzYwNywgNzc2MTEsIDc3NjE1LCA3NzYxOSwgNzc2MjMsIDc3NjI3LCA3NzYzMSwgNzc2MzYsIDc3NjQwLCAKLSAgICA3NzY0NSwgNzc2NDksIDc3NjU0LCA3NzY1OSwgNzc2NjMsIDc3NjY3LCA3NzY3MiwgNzc2NzYsIDc3NjgwLCA3NzY4NCwgCi0gICAgNzc2ODgsIDc3NjkyLCA3NzY5NiwgNzc3MDAsIDc3NzA0LCA3NzcwOCwgNzc3MTIsIDc3NzE2LCA3NzcyMCwgNzc3MjQsIAotICAgIDc3NzI4LCA3NzczMywgNzc3MzgsIDc3NzQyLCA3Nzc0NiwgNzc3NTAsIDc3NzU0LCA3Nzc1OCwgNzc3NjIsIDc3NzY3LCAKLSAgICA3Nzc3MSwgNzc3NzUsIDc3Nzc5LCA3Nzc4MywgNzc3ODcsIDc3NzkxLCA3Nzc5NiwgNzc4MDAsIDc3ODA1LCA3NzgwOSwgCi0gICAgNzc4MTMsIDc3ODE3LCA3NzgyMSwgNzc4MjUsIDc3ODI5LCA3NzgzMywgNzc4MzcsIDc3ODQxLCA3Nzg0NSwgNzc4NDksIAotICAgIDc3ODU0LCA3Nzg1OCwgNzc4NjIsIDc3ODY2LCA3Nzg3MCwgNzc4NzQsIDc3ODc4LCA3Nzg4MiwgNzc4ODYsIDc3ODkwLCAKLSAgICA3Nzg5NCwgNzc4OTgsIDc3OTAzLCA3NzkwNywgNzc5MTEsIDc3OTE2LCA3NzkyMSwgNzc5MjUsIDc3OTI5LCA3NzkzMywgCi0gICAgNzc5MzcsIDc3OTQxLCA3Nzk0NSwgNzc5NDksIDc3OTUzLCA3Nzk1OCwgNzc5NjIsIDc3OTY3LCA3Nzk3MSwgNzc5NzYsIAotICAgIDc3OTgwLCA3Nzk4NSwgNzc5ODksIDc3OTk1LCA3ODAwMCwgNzgwMDQsIDc4MDA5LCA3ODAxMywgNzgwMTgsIDc4MDIyLCAKLSAgICA3ODAyNywgNzgwMzEsIDc4MDM2LCAxNTIxLCA3ODA0MCwgMjgyNCwgMTc1OSwgMTc2NCwgNzgwNDQsIDc4MDQ4LCAyODI4LCAKLSAgICA3ODA1MiwgMTM5NywgNzgwNTcsIDEzNDIsIDc4MDYxLCAyODQwLCA3ODA2NSwgNzgwNzIsIDc4MDc5LCA3ODA5MywgMjg0NCwgCi0gICAgNzEzMSwgNzgxMDIsIDc4MTEwLCA3ODExNywgNzgxMjgsIDc4MTM3LCA3ODE0NCwgNzgxNTYsIDc4MTY5LCA3ODE4MiwgCi0gICAgNzgxOTMsIDc4MTk4LCA3ODIwNSwgNzgyMTcsIDc4MjIxLCAyODQ4LCAxMTc0NywgNzgyMzEsIDc4MjM2LCA3ODI0NSwgCi0gICAgNzgyNTUsIDI4NTIsIDc4MjYwLCA3ODI2NCwgNzgyNjksIDc4Mjc2LCA3ODI4MiwgNzgyOTAsIDc4MzAyLCAxMzQ3LCAKLSAgICAxMzA0MiwgNzgzMTIsIDc4MzE2LCA3ODMyMiwgNzgzMzYsIDc4MzQ4LCA3ODM2MCwgNzgzNzAsIDc4Mzc5LCA3ODM4OCwgCi0gICAgNzgzOTcsIDc4NDA1LCA3ODQxNiwgNzg0MjQsIDQwNTEsIDc4NDM0LCA3ODQ0NSwgNzg0NTQsIDc4NDYwLCA3ODQ3NSwgCi0gICAgNzg0ODIsIDc4NDg4LCAzNTUxNCwgNzg0OTMsIDI4NzYsIDEzMDQ2LCA3ODQ5NywgNzg1MDQsIDg5MzAsIDc4NTEzLCAyODgxLCAKLSAgICAzMjM2MSwgNzg1MTksIDYwNjA5LCA3ODUyNiwgNzg1MzIsIDc4NTQzLCA3ODU0OSwgNzg1NTYsIDc4NTYyLCA3ODU3MCwgCi0gICAgNzg1NzcsIDc4NTgzLCA3ODU5MywgNzg2MDIsIDc4NjEzLCA3ODYyMCwgNzg2MjYsIDc4NjM2LCA3ODY0NCwgNzg2NTAsIAotICAgIDc4NjY1LCA3ODY3MSwgNzg2NzYsIDc4NjgzLCA3ODY4NiwgNzg2OTIsIDc4Njk5LCA3ODcwNSwgNzg3MTMsIDc4NzIyLCAKLSAgICA3ODczMCwgNzg3MzYsIDc4NzQ1LCA0MTQ2NCwgNzg3NTksIDc4NzY0LCA3ODc3MCwgMTQ3NTcsIDc4Nzc1LCA3ODc4OCwgCi0gICAgNzg3OTcsIDc4ODA1LCA3ODgxMiwgNzg4MTYsIDc4ODIwLCA3ODgyMywgNzg4MzAsIDc4ODM3LCA3ODg0NSwgNzg4NTMsIAotICAgIDc4ODYyLCA3ODg3MCwgMTQ2ODQsIDc4ODc4LCA3ODg4MywgNzg4ODcsIDc4ODk5LCA3ODkwNiwgNzg5MTUsIDc0OCwgCi0gICAgNzg5MjUsIDc4OTM0LCA3ODk0NSwgMjg5NywgNzg5NDksIDc4OTUzLCA3ODk1OSwgNzg5NzIsIDc4OTg0LCA3ODk5NCwgCi0gICAgNzkwMDMsIDc5MDE1LCAyNjM2OSwgNzkwMjYsIDc5MDM0LCA3OTA0MywgNzkwNTQsIDc5MDY1LCA3OTA3NSwgNzkwODUsIAotICAgIDc5MDk0LCA3OTEwMiwgMTEzMTIsIDc5MTA5LCA3OTExMywgNzkxMTYsIDc5MTIxLCA3OTEyNiwgNzkxMzAsIDc5MTM2LCAKLSAgICAxMzUyLCAxMTgxOCwgNzkxNDMsIDc5MTU0LCA3OTE2MywgNzkxNzEsIDc5MTgwLCA3OTE4OCwgNzkyMDQsIDc5MjE1LCAKLSAgICA3OTIyNCwgNzkyMzIsIDc5MjQ0LCA3OTI1NSwgNzkyNzEsIDc5MjgxLCA3OTMwMiwgNzkzMTUsIDc5MzIzLCA3OTMzMCwgCi0gICAgMTQ4NjgsIDc5MzQzLCA3OTM0OCwgNzkzNTQsIDU5MDgsIDc5MzYwLCA3OTM2MywgNzkzNzAsIDc5MzgwLCA4MTc2LCAKLSAgICA3OTM4NywgNzkzOTIsIDc5Mzk3LCA3OTQwMiwgNzk0MTAsIDc5NDE5LCA3OTQyNywgOTc1NiwgOTc2NSwgNzk0MzIsIAotICAgIDc5NDQzLCA3OTQ0OCwgNzk0NTQsIDI5MTMsIDI5MTgsIDc5NDYwLCAxMDg3OSwgNzk0NjYsIDc5NDczLCA3OTQ4MCwgCi0gICAgNzk0OTMsIDIyNTEsIDY4LCA3OTQ5OCwgNzk1MDMsIDc5NTEzLCA3OTUxOSwgNzk1MjgsIDc5NTM2LCA3OTU0NiwgNzk1NTAsIAotICAgIDc5NTU1LCA3OTU1OSwgNzk1NzEsIDI5NDEsIDc5NTc5LCA3OTU4NywgNzk1OTIsIDc5NjAzLCA3OTYxNCwgNzk2MjMsIAotICAgIDc5NjI4LCA3OTYzNCwgNzk2MzksIDc5NjQ5LCA3OTY1OSwgNzk2NjQsIDc5NjcwLCA3OTY3NCwgNzk2NzksIDc5Njg4LCAKLSAgICAyMTQxMCwgNzk2OTIsIDQxMjgsIDIwLCA3OTY5NywgNzk3MDYsIDc5NzEzLCA3OTcyMCwgNzk3MjYsIDc5NzMyLCA4NjQsIAotICAgIDc5NzM3LCA3OTc0MiwgNjA5MzcsIDc5NzQ3LCA3OTc1MiwgNzk3NTgsIDc5NzY0LCA3OTc3MiwgNzk3NzcsIDc5Nzg0LCAKLSAgICA3OTc5MCwgNzk3OTUsIDM4MDMwLCA0MTM1OCwgNzk4MDEsIDI5NDUsIDMyLCA3OTgxMSwgNzk4MjQsIDc5ODI5LCA3OTgzNywgCi0gICAgNzk4NDIsIDc5ODQ4LCAyOTY3LCAyODMxMCwgNzk4NTMsIDc5ODYxLCA3OTg2OCwgNzk4NzMsIDU4NjgyLCA2MTk0MCwgCi0gICAgNzk4ODIsIDc5ODg2LCAxNzA0LCAxODEzLCA3OTg5MSwgNzk4OTYsIDc5OTAzLCAxODE3LCAyNDcsIDc5OTEwLCA3OTkxNiwgCi0gICAgMjk4OSwgNzk5MjEsIDc5OTI2LCA3OTkzMywgMTgyMSwgNzk5MzgsIDc5OTQ0LCA3OTk0OSwgNzk5NjEsIDYxMTksIDc5OTcxLCAKLSAgICAxODI4LCA3OTk3NywgNzk5ODIsIDc5OTg5LCA3OTk5NiwgODAwMTEsIDgwMDE4LCA4MDAyOSwgODAwMzcsIDI2MTgsIAotICAgIDgwMDQxLCA4MDA1MywgODAwNTgsIDgwMDYyLCA4MDA2OCwgMjgxMzUsIDIyNTYsIDgwMDcyLCA4MDA4MywgODAwODcsIAotICAgIDgwMDkxLCA4MDA5NywgODAxMDEsIDgwMTEwLCA4MDExNCwgODAxMjUsIDgwMTI5LCAyMzAyLCAzMjE5MCwgODAxMzMsIAotICAgIDgwMTQzLCAzMDgwLCA5MzcxLCA4MDE1MSwgODAxNTYsIDgwMTYwLCA4MDE2OSwgODAxNzYsIDgwMTgyLCAzMDUwLCAxNzE1MiwgCi0gICAgODAxODYsIDgwMTk5LCA4MDIxNywgODAyMjIsIDgwMjMwLCA4MDIzOCwgODAyNDgsIDk5ODUsIDEzMTU0LCA4MDI2MCwgCi0gICAgODAyNzMsIDgwMjgwLCA4MDI4NywgODAzMDMsIDgwMzEwLCA4MDMxNiwgMTA2NCwgODAzMjMsIDgwMzMwLCA4MDM0MCwgCi0gICAgODAzNDksIDgwMzYxLCA0MjMyOCwgODAzNjksIDMwNjQsIDEyMDMwLCA4MDM3MiwgODAzODAsIDgwMzg0LCA3ODI3MiwgCi0gICAgMzA2OCwgODAzODgsIDIxMTkxLCAxMjA0NiwgMzc1NiwgODAzOTIsIDMwNzQsIDgwMzk2LCA4MDQwNiwgODA0MTIsIDgwNDE4LCAKLSAgICA4MDQyNCwgODA0MzAsIDgwNDM2LCA4MDQ0MiwgODA0NDgsIDgwNDU0LCA4MDQ2MCwgODA0NjYsIDgwNDcyLCA4MDQ3OCwgCi0gICAgODA0ODQsIDgwNDkwLCA4MDQ5NiwgODA1MDIsIDgwNTA4LCA4MDUxNCwgODA1MjAsIDgwNTI2LCA4MDUzMiwgODA1MzgsIAotICAgIDgwNTQ0LCA4MDU1MCwgODA1NTYsIDgwNTYzLCA4MDU3MCwgODA1NzYsIDgwNTgyLCA4MDU4OCwgODA1OTQsIDgwNjAwLCAKLSAgICA4MDYwNiwgMTM1NywgMTYwNjIsIDEyMDY4LCA4MDYxMiwgODA2MTcsIDgwNjIyLCA4MDYyNywgODA2MzIsIDgwNjM3LCAKLSAgICA4MDY0MiwgODA2NDcsIDgwNjUyLCA4MDY1NywgODA2NjIsIDgwNjY3LCA4MDY3MiwgODA2NzcsIDgwNjgyLCA4MDY4NywgCi0gICAgODA2OTIsIDgwNjk3LCA4MDcwMiwgODA3MDcsIDgwNzEyLCA4MDcxNywgODA3MjIsIDgwNzI3LCA4MDczMiwgODA3MzcsIAotICAgIDgwNzQzLCA4MDc0OCwgODA3NTMsIDgwNzU5LCA4MDc2NCwgODA3NzAsIDgwNzc1LCA4MDc4MCwgODA3ODYsIDgwNzkxLCAKLSAgICA4MDc5NiwgODA4MDEsIDgwODA2LCA4MDgxMSwgODA4MTYsIDgwODIxLCA4MDgyNiwgODA0MDcsIDgwNDEzLCA4MDQxOSwgCi0gICAgODA0MjUsIDgwNDMxLCA4MDQzNywgODA0NDMsIDgwNDQ5LCA4MDQ1NSwgODA0NjEsIDgwNDY3LCA4MDQ3MywgODA0NzksIAotICAgIDgwNDg1LCA4MDQ5MSwgODA4MzIsIDgwNDk3LCA4MDUwMywgODA1MDksIDgwODM4LCA4MDUxNSwgODA1MjEsIDgwNTI3LCAKLSAgICA4MDUzMywgODA1MzksIDgwNTQ1LCA4MDU1MSwgODA1NzEsIDgwODQ0LCA4MDg1MCwgODA1NzcsIDgwODU2LCA4MDU4MywgCi0gICAgODA1ODksIDgwNTk1LCA4MDYwMSwgODA2MDcsIDMwOTEsIDMwOTYsIDgwODYyLCA4MDg2NywgODA4NzAsIDgwODc2LCAKLSAgICA4MDg4MiwgODA4ODksIDgwODk0LCA4MDg5OSwgMjMwNywgCisgICAgMCwgMCwgNiwgMTAsIDE0LCAyMiwgMjcsIDM0LCA0NCwgNDksIDU4LCA2NCwgNjYsIDY5LCA4MSwgODksIDEwMiwgMTA4LCAKKyAgICAxMTMsIDExOCwgMTI2LCAxMzUsIDE0NiwgMTUxLCAxNTYsIDE2MSwgMTY0LCAxNjgsIDE3NywgMTgzLCAxODksIDE5NCwgCisgICAgMjAxLCAyMDksIDIxNywgMjE4LCAyMjEsIDIyOSwgMTY1LCAyMzUsIDI0NCwgMjUxLCAyNjEsIDI2NywgMjc0LCAyNzksIAorICAgIDI4MiwgMjg3LCAyOTMsIDI5NiwgMzAwLCAzMDUsIDMxMSwgMzE3LCAzMjIsIDMyNywgMzMzLCAzMzksIDM0OCwgMzU1LCAKKyAgICAzNjIsIDM3MSwgMzc2LCAzODEsIDM4MywgMzkxLCAzOTksIDQwMCwgNDA4LCA0MTAsIDQxNywgNDIwLCA0MjYsIDQzMywgCisgICAgMzMxLCA0MzgsIDQ0MCwgNDQyLCA0NDksIDQ1MSwgNDU2LCA0NjQsIDQ3MSwgNDc2LCA0ODAsIDQ4NiwgNDkxLCA1MDEsIAorICAgIDUwNiwgNTEzLCA1MTYsIDUyNCwgNTI4LCA1MzgsIDU0NSwgNTU0LCA1NjEsIDU3MCwgNTc3LCA1ODAsIDU4NCwgNTkyLCAKKyAgICA1OTgsIDYxMSwgNjE4LCA2MjIsIDYyNiwgNjI3LCA2MzYsIDY0MCwgNjQ5LCA2NTUsIDY1OSwgNjYxLCA2NjYsIDY3NCwgCisgICAgNjc4LCA2ODYsIDY5MSwgNjk0LCA3MDAsIDcwMywgNzA3LCA3MTIsIDcyMCwgNzIzLCA3MzAsIDczNSwgNzQ0LCA3NTMsIAorICAgIDc2MSwgNzY5LCA3NzMsIDc3OSwgNzg3LCA3OTQsIDc5NywgODA3LCA4MTEsIDgxNSwgODI2LCA4MzMsIDg0MCwgODQ0LCAKKyAgICA4NDgsIDg1NCwgODQyLCA4NjMsIDg2OSwgODc0LCA4NzksIDg4MywgODg2LCA4ODksIDg5NCwgOTAzLCA5MTEsIDkxNiwgCisgICAgNjU4LCA1NzUsIDkyMSwgOTI0LCA5MzAsIDkzNCwgOTM4LCA5NDcsIDk1MywgOTYwLCA5NjksIDk3NiwgOTg5LCA5OTQsIAorICAgIDk5OCwgMTAwNiwgMTAwOSwgMTAxNSwgMTAyMSwgMTAzMCwgMTAzNywgMTA0NSwgMTA1MiwgMTA2MiwgMTA2OSwgMTA3NywgCisgICAgMTA4NiwgMTA5MCwgMTA5MywgMTEwMCwgMjEsIDExMDQsIDExMTMsIDExMjEsIDExMjgsIDExMzEsIDExMzYsIDExMzgsIAorICAgIDExNDIsIDExNTEsIDExNTYsIDExNTksIDExNjUsIDExNzIsIDExNzUsIDExODAsIDExODUsIDExOTEsIDExOTYsIDEyMDEsIAorICAgIDEyMDYsIDEyMTAsIDEyMTUsIDEyMjEsIDEyMjYsIDEyMzEsIDEyMzUsIDEyNDEsIDEyNDYsIDEyNTEsIDEyNTYsIDEyNjAsIAorICAgIDEyNjUsIDEyNzAsIDEyNzUsIDEyODEsIDEyODcsIDEyOTMsIDEyOTgsIDEzMDIsIDEzMDcsIDEzMTIsIDEzMTcsIDEzMjEsIAorICAgIDEzMjYsIDEzMzEsIDEzMzYsIDEzNDEsIDExNzYsIDExODEsIDExODYsIDExOTIsIDExOTcsIDEzNDUsIDEyMDcsIDEzNTEsIAorICAgIDEzNTYsIDEzNjEsIDEzNjgsIDEzNzIsIDEzNzUsIDEzODQsIDEyMTEsIDEzODgsIDEyMTYsIDEyMjIsIDEyMjcsIDEzOTIsIAorICAgIDEzOTcsIDE0MDIsIDE0MDYsIDE0MTAsIDE0MTYsIDE0MjAsIDEyMzIsIDE0MjMsIDE0MjUsIDEyNDIsIDE0MzAsIDE0MzQsIAorICAgIDEyNDcsIDE0NDAsIDEyNTIsIDE0NDQsIDE0NDgsIDEyNTcsIDE0NTIsIDE0NTcsIDE0NjEsIDE0NjQsIDE0NjgsIDEyNjEsIAorICAgIDEyNjYsIDE0NzMsIDE0NzksIDEyNzEsIDE0OTEsIDE0OTcsIDE1MDMsIDE1MDksIDEyNzYsIDEyODgsIDEyOTQsIDE1MTMsIAorICAgIDE1MTcsIDE1MjEsIDE1MjQsIDEyOTksIDE1MjgsIDE1MzAsIDE1MzUsIDE1NDAsIDE1NDYsIDE1NTEsIDE1NTYsIDE1NjAsIAorICAgIDE1NjUsIDE1NzAsIDE1NzUsIDE1ODAsIDE1ODYsIDE1OTEsIDE1OTYsIDE2MDIsIDE2MDgsIDE2MTMsIDE2MTcsIDE2MjIsIAorICAgIDE2MjcsIDE2MzIsIDE2MzcsIDE2NDIsIDE2NDYsIDE2NTQsIDE2NTksIDE2NjMsIDE2NjgsIDE2NzMsIDE2NzgsIDE2ODMsIAorICAgIDE2ODcsIDE2OTAsIDE2OTcsIDE3MDIsIDE3MDcsIDE3MTIsIDE3MTcsIDE3MjMsIDE3MjgsIDE3MzIsIDEzMDMsIDE3MzUsIAorICAgIDE3NDAsIDE3NDUsIDEzMDgsIDE3NDksIDE3NTMsIDE3NjAsIDEzMTMsIDE3NjcsIDEzMTgsIDE3NzEsIDE3NzMsIDE3NzgsIAorICAgIDE3ODQsIDEzMjIsIDE3ODksIDE3OTgsIDEzMjcsIDE4MDMsIDE4MDksIDE4MTQsIDEzMzIsIDE4MTksIDE4MjQsIDE4MjcsIAorICAgIDE4MzIsIDE4MzYsIDE4NDAsIDE4NDQsIDE4NDcsIDE4NTEsIDEzMzcsIDE4NTYsIDEzNDIsIDE4NjAsIDE4NjIsIDE4NjgsIAorICAgIDE4NzQsIDE4ODAsIDE4ODYsIDE4OTIsIDE4OTgsIDE5MDQsIDE5MTAsIDE5MTUsIDE5MjEsIDE5MjcsIDE5MzMsIDE5MzksIAorICAgIDE5NDUsIDE5NTEsIDE5NTcsIDE5NjMsIDE5NjksIDE5NzQsIDE5NzksIDE5ODQsIDE5ODksIDE5OTQsIDE5OTksIDIwMDQsIAorICAgIDIwMDksIDIwMTQsIDIwMTksIDIwMjUsIDIwMzAsIDIwMzYsIDIwNDEsIDIwNDcsIDIwNTMsIDIwNTgsIDIwNjQsIDIwNzAsIAorICAgIDIwNzYsIDIwODIsIDIwODcsIDIwOTIsIDIwOTQsIDIwOTUsIDIwOTksIDIxMDMsIDIxMDgsIDIxMTIsIDIxMTYsIDIxMjAsIAorICAgIDIxMjUsIDIxMjksIDIxMzIsIDIxMzcsIDIxNDEsIDIxNDYsIDIxNTAsIDIxNTQsIDIxNTksIDIxNjMsIDIxNjYsIDIxNzAsIAorICAgIDIxNzYsIDIxOTAsIDIxOTQsIDIxOTgsIDIyMDIsIDIyMDUsIDIyMTAsIDIyMTQsIDIyMTgsIDIyMjEsIDIyMjUsIDIyMzAsIAorICAgIDIyMzUsIDIyNDAsIDIyNDUsIDIyNDksIDIyNTMsIDIyNTcsIDIyNjEsIDIyNjYsIDIyNzAsIDIyNzUsIDIyNzksIDIyODQsIAorICAgIDIyOTAsIDIyOTcsIDIzMDMsIDIzMDgsIDIzMTMsIDIzMTgsIDIzMjQsIDIzMjksIDIzMzUsIDIzNDAsIDIzNDMsIDIzNDUsIAorICAgIDExOTMsIDIzNDksIDIzNTYsIDIzNjQsIDIzNzQsIDIzODMsIDIzOTcsIDI0MDEsIDI0MDUsIDI0MTAsIDI0MjMsIDI0MzEsIAorICAgIDI0MzUsIDI0NDAsIDI0NDQsIDI0NDcsIDI0NTEsIDI0NTUsIDI0NjAsIDI0NjUsIDI0NzAsIDI0NzQsIDI0NzcsIDI0ODEsIAorICAgIDI0ODgsIDI0OTUsIDI1MDEsIDI1MDYsIDI1MTEsIDI1MTcsIDI1MjMsIDI1MjgsIDI1MzEsIDE3NzUsIDI1MzMsIDI1MzksIAorICAgIDI1NDMsIDI1NDgsIDI1NTIsIDI1NTYsIDE2OTMsIDE3ODYsIDI1NjEsIDI1NjUsIDI1NjgsIDI1NzMsIDI1NzgsIDI1ODMsIAorICAgIDI1ODgsIDI1OTIsIDI1OTksIDI2MDQsIDI2MDcsIDI2MTQsIDI2MjAsIDI2MjQsIDI2MjgsIDI2MzIsIDI2MzcsIDI2NDQsIAorICAgIDI2NDksIDI2NTQsIDI2NjEsIDI2NjcsIDI2NzMsIDI2NzksIDI2OTMsIDI3MTAsIDI3MjUsIDI3NDAsIDI3NDksIDI3NTQsIAorICAgIDI3NTgsIDI3NjMsIDI3NjgsIDI3NzIsIDI3ODQsIDI3OTEsIDI3OTcsIDIyOTMsIDI4MDMsIDI4MTAsIDI4MTYsIDI4MjAsIAorICAgIDI4MjMsIDI4MzAsIDI4MzYsIDI4NDEsIDI4NDUsIDI4NTAsIDI4NTQsIDI4NTgsIDIxMTcsIDI4NjIsIDI4NjcsIDI4NzIsIAorICAgIDI4NzYsIDI4ODEsIDI4ODksIDI4OTMsIDI4OTgsIDI5MDIsIDI5MDYsIDI5MTAsIDI5MTUsIDI5MjAsIDI5MjUsIDI5MjksIAorICAgIDI5MzQsIDI5MzksIDI5NDMsIDI5NDgsIDI5NTIsIDI5NTUsIDI5NTksIDI5NjMsIDI5NzEsIDI5NzYsIDI5ODAsIDI5ODQsIAorICAgIDI5OTAsIDI5OTksIDMwMDMsIDMwMDcsIDMwMTMsIDMwMTgsIDMwMjUsIDMwMjksIDMwMzksIDMwNDMsIDMwNDcsIDMwNTIsIAorICAgIDMwNTYsIDMwNjEsIDMwNjcsIDMwNzIsIDMwNzYsIDMwODAsIDMwODQsIDI0OTEsIDMwOTIsIDMwOTcsIDMxMDMsIDMxMDgsIAorICAgIDMxMTIsIDMxMTcsIDMxMjIsIDMxMjYsIDMxMzIsIDMxMzcsIDIxMjEsIDMxNDMsIDMxNDksIDMxNTQsIDMxNTksIDMxNjQsIAorICAgIDMxNjksIDMxNzQsIDMxNzksIDMxODQsIDMxODksIDMxOTQsIDMyMDAsIDMyMDUsIDEyMDgsIDEwMSwgMzIxMSwgMzIxNSwgCisgICAgMzIxOSwgMzIyMywgMzIyOCwgMzIzMiwgMzIzNiwgMzI0MiwgMzI0NywgMzI1MSwgMzI1NSwgMzI2MCwgMzI2NSwgMzI2OSwgCisgICAgMzI3NCwgMzI3OCwgMzI4MSwgMzI4NSwgMzI5MCwgMzI5NCwgMzI5OSwgMzMwMywgMzMwNiwgMzMxMCwgMzMxNCwgMzMxOSwgCisgICAgMzMyMywgMzMyNiwgMzMzOSwgMzM0MywgMzM0NywgMzM1MSwgMzM1NiwgMzM2MCwgMzM2NCwgMzM2NywgMzM3MSwgMzM3NSwgCisgICAgMzM4MCwgMzM4NCwgMzM4OSwgMzM5NCwgMzM5OSwgMzQwMywgMzQwOCwgMzQxMSwgMzQxNCwgMzQxOSwgMzQyNSwgMzQyOSwgCisgICAgMzQzMywgMzQzNiwgMzQ0MSwgMzQ0NSwgMzQ1MCwgMzQ1NCwgMzQ1OCwgMzQ2MSwgMzQ2NywgMzQ3MiwgMzQ3NywgMzQ4MywgCisgICAgMzQ4OCwgMzQ5MywgMzQ5OSwgMzUwNSwgMzUxMCwgMzUxNSwgMzUyMCwgMzUyNSwgMTE0MCwgNTc5LCAzNTI4LCAzNTMxLCAKKyAgICAzNTM2LCAzNTQwLCAzNTQ0LCAzNTQ4LCAzNTUyLCAzNTU1LCAzNTU5LCAzNTY0LCAzNTY5LCAzNTczLCAzNTc4LCAzNTgyLCAKKyAgICAzNTg3LCAzNTkxLCAzNTk1LCAzNTk5LCAzNjA1LCAzNjExLCAzNjE0LCAzNjE3LCAxMzksIDM2MjMsIDM2MjgsIDM2MzcsIAorICAgIDM2NDUsIDM2NTQsIDM2NjEsIDM2NjcsIDM2NzQsIDM2NzksIDM2ODMsIDM2ODcsIDM2OTUsIDM3MDIsIDM3MDcsIDM3MTQsIAorICAgIDM3MTksIDM3MjMsIDM3MzMsIDM3MzcsIDM3NDEsIDM3NDYsIDM3NTEsIDM3NjEsIDIxMzMsIDM3NjYsIDM3NzAsIDM3NzMsIAorICAgIDM3NzksIDM3ODQsIDM3OTAsIDM3OTYsIDM4MDEsIDM4MDgsIDM4MTIsIDM4MTYsIDYzNywgNzAxLCAxMzY5LCAzODIwLCAKKyAgICAzODI3LCAzODM0LCAzODQwLCAzODQ1LCAzODUyLCAzODU5LCAzODY0LCAzODcwLCAzODc2LCAzODgxLCAzODg1LCAzODkxLCAKKyAgICAzODk4LCAzOTAzLCAzOTA3LCAyMTQyLCAzOTExLCAzOTE5LCAzOTI1LCAzOTMzLCA3MzksIDM5MzksIDM5NDcsIDM5NTgsIAorICAgIDM5NjIsIDM5NzIsIDIxNDcsIDM5NzgsIDM5ODMsIDM5OTgsIDQwMDQsIDQwMTEsIDQwMjEsIDQwMjcsIDQwMzIsIDQwMzgsIAorICAgIDQwNDQsIDQwNDcsIDQwNTAsIDQwNTQsIDQwNTksIDQwNjYsIDQwNzEsIDQwNzUsIDQwNzksIDQwODMsIDQwODcsIDQwOTIsIAorICAgIDQwOTgsIDQxMDksIDQxMTMsIDMyODYsIDQxMTgsIDQxMzAsIDQxMzYsIDQxNDQsIDQxNDgsIDQxNTMsIDE1NjIsIDQxNjAsIAorICAgIDQxNjMsIDQxNjYsIDQxNzAsIDQxNzMsIDQxNzksIDQxODMsIDQxOTcsIDQyMDEsIDQyMDQsIDQyMDgsIDQyMTQsIDQyMjAsIAorICAgIDQyMjUsIDQyMjksIDQyMzMsIDQyMzksIDQyNTAsIDQyNTYsIDQyNjEsIDQyNjcsIDQyNzEsIDQyNzksIDQyOTEsIDQzMDEsIAorICAgIDQzMDcsIDQzMTIsIDQzMjEsIDQzMjksIDQzMzYsIDQzNDIsIDQzNDYsIDQzNTIsIDQzNjEsIDQzNzAsIDQzNzQsIDQzODMsIAorICAgIDQzODgsIDQzOTIsIDQzOTcsIDQ0MDEsIDQ0MDksIDQ0MTUsIDQ0MTksIDQ0MjQsIDQ0MjgsIDQ0MzQsIDIxNTUsIDEzODUsIAorICAgIDQ0NDAsIDQ0NDUsIDQ0NTEsIDQ0NTYsIDQ0NjEsIDQ0NjYsIDQ0NzEsIDQ0NzYsIDQ0ODEsIDQ0ODcsIDQ0OTIsIDQ0OTgsIAorICAgIDQ1MDMsIDQ1MDgsIDQ1MTMsIDQ1MTksIDQ1MjQsIDQ1MjksIDQ1MzQsIDQ1MzksIDQ1NDUsIDQ1NTAsIDQ1NTYsIDQ1NjEsIAorICAgIDQ1NjYsIDQ1NzEsIDQ1NzYsIDQ1ODEsIDQ1ODYsIDQ1OTIsIDQ1OTcsIDQ2MDIsIDI5MSwgMzIxLCA0NjA3LCA0NjEzLCAKKyAgICA0NjE3LCA0NjIxLCA0NjI2LCA0NjMwLCA0NjM0LCA0NjM3LCA0NjQxLCA0NjQ1LCA0NjQ5LCA0NjUzLCA0NjU3LCA0NjYyLCAKKyAgICA0NjY2LCA0NjcwLCA0Njc2LCA0NDM3LCA0NjgxLCA0Njg1LCA0Njg4LCA0NjkzLCA0Njk4LCA0NzAzLCA0NzA4LCA0NzEzLCAKKyAgICA0NzE4LCA0NzIzLCA0NzI4LCA0NzMzLCA0NzM4LCA0NzQyLCA0NzQ3LCA0NzUyLCA0NzU3LCA0NzYyLCA0NzY3LCA0NzcyLCAKKyAgICA0Nzc3LCA0NzgyLCA0Nzg3LCA0NzkyLCA0Nzk2LCA0ODAxLCA0ODA2LCA0ODExLCA0ODE2LCA0ODIxLCA0ODI2LCA0ODMxLCAKKyAgICA0ODM2LCA0ODQxLCA0ODQ2LCA0ODUwLCA0ODU1LCA0ODYwLCA0ODY1LCA0ODcwLCA0ODc1LCA0ODgwLCA0ODg1LCA0ODkwLCAKKyAgICA0ODk1LCA0OTAwLCA0OTA0LCA0OTA5LCA0OTE0LCA0OTE5LCA0OTI0LCA0OTI5LCA0OTM0LCA0OTM5LCA0OTQ0LCA0OTQ5LCAKKyAgICA0OTU0LCA0OTU4LCA0OTYzLCA0OTY4LCA0OTczLCA0OTc4LCA0OTgzLCA0OTg4LCA0OTkzLCA0OTk4LCA1MDAzLCA1MDA4LCAKKyAgICA1MDEyLCA1MDE3LCA1MDIyLCA1MDI3LCA1MDMyLCA1MDM3LCA1MDQyLCA1MDQ3LCA1MDUyLCA1MDU3LCA1MDYyLCA1MDY2LCAKKyAgICA1MDcxLCA1MDc2LCA1MDgxLCA1MDg2LCA1MDkyLCA1MDk4LCA1MTA0LCA1MTEwLCA1MTE2LCA1MTIyLCA1MTI4LCA1MTMzLCAKKyAgICA1MTM5LCA1MTQ1LCA1MTUxLCA1MTU3LCA1MTYzLCA1MTY5LCA1MTc1LCA1MTgxLCA1MTg3LCA1MTkzLCA1MTk4LCA1MjA0LCAKKyAgICA1MjEwLCA1MjE2LCA1MjIyLCA1MjI4LCA1MjM0LCA1MjQwLCA1MjQ2LCA1MjUyLCA1MjU4LCA1MjYzLCA1MjY5LCA1Mjc1LCAKKyAgICA1MjgxLCA1Mjg3LCA1MjkzLCA1Mjk5LCA1MzA1LCA1MzExLCA1MzE3LCA1MzIzLCA1MzI4LCA1MzM0LCA1MzQwLCA1MzQ2LCAKKyAgICA1MzUyLCA1MzU4LCA1MzY0LCA1MzcwLCA1Mzc2LCA1MzgyLCA1Mzg4LCA1MzkzLCA1Mzk5LCA1NDA1LCA1NDExLCA1NDE3LCAKKyAgICA1NDIzLCA1NDI5LCA1NDM1LCA1NDQxLCA1NDQ3LCA1NDUzLCA1NDU4LCA1NDYyLCA1NDY4LCA1NDc0LCA1NDgwLCA1NDg2LCAKKyAgICA1NDkyLCA1NDk4LCA1NTA0LCA1NTEwLCA1NTE2LCA1NTIyLCA1NTI3LCA1NTMzLCA1NTM5LCA1NTQ1LCA1NTUxLCA1NTU3LCAKKyAgICA1NTYzLCA1NTY5LCA1NTc1LCA1NTgxLCA1NTg3LCA1NTkyLCA1NTk4LCA1NjA0LCA1NjEwLCA1NjE2LCA1NjIyLCA1NjI4LCAKKyAgICA1NjM0LCA1NjQwLCA1NjQ2LCA1NjUyLCA1NjU3LCA1NjYzLCA1NjY5LCA1Njc1LCA1NjgxLCA1Njg3LCA1NjkzLCA1Njk5LCAKKyAgICA1NzA1LCA1NzExLCA1NzE3LCA1NzIyLCA1NzI4LCA1NzM0LCA1NzQwLCA1NzQ2LCA1NzUyLCA1NzU4LCA1NzY0LCA1NzcwLCAKKyAgICA1Nzc2LCA1NzgyLCA1Nzg3LCA1NzkzLCA1Nzk5LCA1ODA1LCA1ODExLCA1ODE3LCA1ODIzLCA1ODI5LCA1ODM1LCA1ODQxLCAKKyAgICA1ODQ3LCA1ODUyLCA1ODU4LCA1ODY0LCA1ODcwLCA1ODc2LCA1ODgyLCA1ODg4LCA1ODk0LCA1OTAwLCA1OTA2LCA1OTEyLCAKKyAgICA1OTE3LCA1OTIzLCA1OTI5LCA1OTM1LCA1OTQxLCA1OTQ3LCA1OTUzLCA1OTU5LCA1OTY1LCA1OTcxLCA1OTc3LCA1OTgyLCAKKyAgICA1OTg4LCA1OTk0LCA2MDAwLCA2MDA2LCA2MDEyLCA2MDE4LCA2MDI0LCA2MDMwLCA2MDM2LCA2MDQyLCA2MDQ3LCA2MDUzLCAKKyAgICA2MDU5LCA2MDY1LCA2MDcxLCA2MDc3LCA2MDgzLCA2MDg5LCA2MDk1LCA2MTAxLCA2MTA3LCA2MTEyLCA2MTE2LCA2MTE5LCAKKyAgICA2MTI2LCA2MTMwLCA2MTQzLCA2MTQ3LCA2MTUxLCA2MTU1LCA2MTU4LCA2MTYyLCA2MTY3LCA2MTcxLCA2MTc1LCA2MTgxLCAKKyAgICA2MTg4LCA2MTk5LCA2MjA3LCA2MjE0LCA2MjE4LCA2MjI2LCA2MjM1LCA2MjQxLCA2MjUzLCA2MjU4LCA2MjYxLCA2MjY2LCAKKyAgICA2MjcwLCA2MjgwLCA2Mjg4LCA2Mjk2LCA2MzAyLCA2MzA2LCA2MzE2LCA2MzI2LCA2MzM0LCA2MzQxLCA2MzQ4LCA2MzU0LCAKKyAgICA2MzYwLCA2MzY3LCA2MzcxLCA2Mzc4LCA2Mzg4LCA2Mzk4LCA2NDA2LCA2NDEzLCA2NDE4LCA2NDIyLCA2NDI2LCA2NDM0LCAKKyAgICA2NDM4LCA2NDQzLCA2NDUwLCA2NDU4LCA2NDYzLCA2NDY3LCA2NDcyLCA2NDc2LCA2NDgzLCA2NDg4LCA2NTAyLCA2NTA3LCAKKyAgICA2NTEyLCA2NTE5LCAzNTQxLCA2NTI4LCA2NTMyLCA2NTM3LCA2NTQxLCA2NTQ1LCA2NTQ4LCA2NTUzLCA2NTU4LCA2NTY3LCAKKyAgICA2NTczLCA2NTc5LCA2NTg1LCA2NTg5LCA2NjAwLCA2NjEwLCA2NjI1LCA2NjQwLCA2NjU1LCA2NjcwLCA2Njg1LCA2NzAwLCAKKyAgICA2NzE1LCA2NzMwLCA2NzQ1LCA2NzYwLCA2Nzc1LCA2NzkwLCA2ODA1LCA2ODIwLCA2ODM1LCA2ODUwLCA2ODY1LCA2ODgwLCAKKyAgICA2ODk1LCA2OTEwLCA2OTI1LCA2OTQwLCA2OTU1LCA2OTcwLCA2OTg1LCA3MDAwLCA3MDE1LCA3MDMwLCA3MDQ1LCA3MDYwLCAKKyAgICA3MDc1LCA3MDkwLCA3MTA1LCA3MTIwLCA3MTM1LCA3MTUwLCA3MTY1LCA3MTgwLCA3MTk1LCA3MjEwLCA3MjI1LCA3MjQwLCAKKyAgICA3MjU1LCA3MjcwLCA3Mjg1LCA3MzAwLCA3MzE1LCA3MzMwLCA3MzQ1LCA3MzU0LCA3MzYzLCA3MzY4LCA3Mzc0LCA3Mzg0LCAKKyAgICA3Mzg4LCA3MzkyLCA3Mzk3LCA3NDAyLCA3NDEwLCA3NDE0LCA3NDE3LCA3NDIxLCAzMDM0LCA3NDI0LCA3NDI5LCAzMzAsIAorICAgIDUwNCwgNzQzNSwgNzQ0MywgNzQ0NywgNzQ1MSwgNzQ1NCwgNzQ1OCwgNzQ2NCwgNzQ2OCwgNzQ3NiwgNzQ4MiwgNzQ4NywgCisgICAgNzQ5NCwgNzUwMiwgNzUwOSwgNzUxNSwgNzUyMCwgNzUyNywgNzUzMywgNzU0MSwgNzU0NSwgNzU1MCwgNzU2MiwgNzU3MywgCisgICAgNzU4MCwgNzU4NCwgNzU4OCwgNzU5MiwgNzU5NSwgNzYwMSwgMzMxMSwgNzYwNSwgNzYxMSwgNzYxNiwgNzYyMSwgNzYyNiwgCisgICAgNzYzMiwgNzYzNywgNzY0MiwgNzY0NywgNzY1MiwgNzY1OCwgNzY2MywgNzY2OCwgNzY3NCwgNzY3OSwgNzY4NSwgNzY5MCwgCisgICAgNzY5NiwgNzcwMSwgNzcwNywgNzcxMiwgNzcxNywgNzcyMiwgNzcyNywgNzczMiwgNzczOCwgNzc0MywgNzc0OCwgNzc1MywgCisgICAgNzc1OSwgNzc2NSwgNzc3MSwgNzc3NywgNzc4MywgNzc4OSwgNzc5NSwgNzgwMSwgNzgwNywgNzgxMywgNzgxOSwgNzgyNSwgCisgICAgNzgzMCwgNzgzNSwgNzg0MCwgNzg0NSwgNzg1MCwgNzg1NSwgNzg2MCwgNzg2NSwgNzg3MSwgNzg3NywgNzg4MiwgNzg4OCwgCisgICAgNzg5NCwgNzkwMCwgNzkwNSwgNzkxMCwgNzkxNSwgNzkyMCwgNzkyNiwgNzkzMiwgNzkzNywgNzk0MiwgNzk0NywgNzk1MiwgCisgICAgNzk1NywgNzk2MywgNzk2OCwgNzk3NCwgNzk4MCwgNzk4NiwgNzk5MiwgNzk5OCwgODAwNCwgODAxMCwgODAxNiwgODAyMiwgCisgICAgMjE2NCwgNzQ1MywgODAyNywgODAzMSwgODAzNSwgODAzOCwgODA0NSwgODA0OCwgODA1MiwgODA2MCwgODA2NSwgODA3MCwgCisgICAgODA2MSwgODA3NSwgMjE5MSwgODA3OSwgODA4NSwgODA5MSwgODA5NiwgODEwMSwgODEwOCwgODExNiwgODEyMSwgODEyNSwgCisgICAgODEyOCwgODEzMiwgODEzOCwgODE0NCwgODE0OCwgMjE5OSwgNTI2LCA4MTUxLCA4MTU1LCA4MTYwLCA4MTY2LCA4MTcxLCAKKyAgICA4MTc1LCA4MTc4LCA4MTgyLCA4MTg4LCA4MTkzLCA4MTk3LCA4MjA0LCA4MjA4LCA4MjEyLCA4MjE2LCA4NzYsIDk1OCwgCisgICAgODIxOSwgODIyNywgODIzNCwgODI0MCwgODI0NywgODI1NSwgODI2MiwgODI3MywgODI4MCwgODI4NiwgODI5MSwgODMwMywgCisgICAgMTIyOCwgMTM5MywgMTM5OCwgODMxNCwgMTQwMywgODMxOCwgODMyMiwgODMzMSwgODMzOSwgODM0MywgODM1MiwgODM1OCwgCisgICAgODM2MywgODM2NywgODM3MywgODM3OCwgODM4NSwgMjc0NSwgODM5MiwgODM5NiwgODQwNSwgODQxNCwgODQyMywgODQzMiwgCisgICAgODQzOCwgODQ0MywgODQ0OCwgODQ1OSwgODQ3MSwgODQ3NiwgODQ4NCwgMjI1MCwgODQ4OCwgODQ5MCwgODQ5NSwgODQ5OSwgCisgICAgODUwOCwgODUxNiwgMTQwNywgMTU5LCAzNTgzLCAzNTg4LCA4NTIyLCA4NTI2LCA4NTM1LCA4NTQxLCA4NTQ2LCA4NTQ5LCAKKyAgICA4NTU4LCAzNTkyLCAyNzM3LCA4NTY0LCA4NTcyLCA4NTc2LCA4NTgwLCA4NTg0LCAyMjY3LCA4NTg4LCA4NTkzLCA4NjAwLCAKKyAgICA4NjA2LCA4NjEyLCA4NjE1LCA4NjE3LCA4NjIwLCA4NjI4LCA4NjM2LCA4NjQ0LCA4NjQ3LCA4NjUyLCAyMjgwLCA4NjU3LCAKKyAgICA4MDcyLCA4NjYwLCA4NjYyLCA4NjY3LCA4NjcyLCA4Njc3LCA4NjgyLCA4Njg3LCA4NjkyLCA4Njk3LCA4NzAyLCA4NzA3LCAKKyAgICA4NzEyLCA4NzE4LCA4NzIzLCA4NzI4LCA4NzMzLCA4NzM5LCA4NzQ0LCA4NzQ5LCA4NzU0LCA4NzU5LCA4NzY0LCA4NzY5LCAKKyAgICA4Nzc1LCA4NzgwLCA4Nzg1LCA4NzkwLCA4Nzk1LCA4ODAwLCA4ODA1LCA4ODEwLCA4ODE1LCA4ODIwLCA4ODI1LCA4ODMwLCAKKyAgICA4ODM1LCA4ODQwLCA4ODQ1LCA4ODUwLCA4ODU1LCA4ODYwLCA4ODY2LCA4ODcyLCA4ODc3LCA4ODgyLCA4ODg3LCA4ODkyLCAKKyAgICA4ODk3LCAyMjkxLCAyMjk4LCAyMzA0LCA4OTAyLCA4OTEwLCA4OTE2LCA4OTI0LCAyMzMwLCAyMzM2LCA4OTMyLCA4OTM2LCAKKyAgICA4OTQxLCA4OTQ1LCA4OTQ5LCA4OTUzLCA4OTU4LCA4OTYyLCA4OTY3LCA4OTcxLCA4OTc0LCA4OTc3LCA4OTgzLCA4OTkwLCAKKyAgICA4OTk2LCA5MDAzLCA5MDA5LCA5MDE2LCA5MDIyLCA5MDI5LCA5MDM1LCA5MDQxLCA5MDUwLCA5MDU2LCA5MDYwLCA5MDY0LCAKKyAgICA5MDY4LCA5MDcyLCA5MDc3LCA5MDgxLCA5MDg2LCA5MDkwLCA5MDk2LCA5MTAxLCA5MTA4LCA5MTE5LCA5MTI3LCA5MTM3LCAKKyAgICA5MTQzLCA5MTUzLCA5MTYyLCA5MTY5LCA5MTc0LCA5MTc4LCA5MTg5LCA5MjAyLCA5MjEzLCA5MjI2LCA5MjM3LCA5MjQ5LCAKKyAgICA5MjYxLCA5MjczLCA5Mjg2LCA5Mjk5LCA5MzA2LCA5MzEyLCA5MzI2LCA5MzMzLCA5MzM5LCA5MzQ4LCA5MzU2LCA5MzYwLCAKKyAgICA5MzY1LCA5MzY5LCA5Mzc2LCA5Mzg0LCA5Mzg4LCA5Mzk0LCA5Mzk4LCA5NDA0LCA5NDE0LCA5NDE4LCA5NDIzLCA5NDI4LCAKKyAgICA5NDM1LCA5NDQxLCA5NDUxLCA4MjQyLCA5NDU3LCA5NDYxLCA5NDY4LCA5NDc0LCA5NDgxLCA5NDg4LCA5NTcsIDk0OTIsIAorICAgIDk0OTYsIDk1MDEsIDk1MDYsIDk1MTEsIDk1MTUsIDk1MjEsIDk1MjksIDk1MzUsIDk1MzksIDk1NDIsIDk1NDgsIDk1NTgsIAorICAgIDk1NjIsIDk1NjgsIDk1NzMsIDk1NzcsIDk1ODEsIDk1ODcsIDk1OTMsIDIxODcsIDk1OTgsIDk2MDAsIDk2MDUsIDk2MTMsIAorICAgIDk2MjIsIDk2MjYsIDk2MzIsIDk2MzcsIDk2NDIsIDk2NDcsIDk2NTIsIDk2NTgsIDk2NjMsIDk2NjgsIDQyMzUsIDk2NzMsIAorICAgIDk2NzgsIDk2ODIsIDk2ODgsIDk2OTMsIDk2OTksIDk3MDQsIDk3MDksIDk3MTUsIDk3MjAsIDk2MjcsIDk3MjYsIDk3MzAsIAorICAgIDk3MzcsIDk3NDMsIDk3NDgsIDk3NTIsIDY0OTgsIDk3NTcsIDk3NjYsIDk3NzEsIDk3NzYsIDg1OTYsIDg2MDMsIDk3ODEsIAorICAgIDI5MTIsIDk3ODUsIDk3OTAsIDk3OTUsIDk4MDAsIDk2MzgsIDk4MDQsIDk4MDksIDk4MTQsIDk2NDMsIDk4MTgsIDk2NDgsIAorICAgIDk4MjMsIDk4MzAsIDk4MzcsIDk4NDMsIDk4NTAsIDk4NTYsIDk4NjIsIDk4NjcsIDk4NzQsIDk4NzksIDk4ODQsIDk4ODksIAorICAgIDk4OTUsIDk2NTMsIDk2NTksIDk5MDEsIDk5MDcsIDk5MTIsIDk5MTcsIDk5MjUsIDk2NjQsIDk5MzAsIDExMDIsIDk5MzMsIAorICAgIDk5NDEsIDk5NDcsIDk5NTMsIDk5NjIsIDk5NzAsIDk5NzgsIDk5ODYsIDk5OTQsIDEwMDAyLCAxMDAxMCwgMTAwMTgsIAorICAgIDEwMDI2LCAxMDAzNSwgMTAwNDQsIDEwMDUyLCAxMDA2MSwgMTAwNzAsIDEwMDc5LCAxMDA4OCwgMTAwOTcsIDEwMTA2LCAKKyAgICAxMDExNSwgMTAxMjQsIDEwMTMzLCAxMDE0MiwgMTAxNTAsIDEwMTU1LCAxMDE2MSwgMTAxNjksIDEwMTc2LCAxMDE5MSwgCisgICAgMTAyMDgsIDEwMjI3LCAxMDIzNiwgMTAyNDQsIDEwMjU5LCAxMDI3MCwgMTAyODAsIDEwMjkwLCAxMDI5OCwgMTAzMDQsIAorICAgIDEwMzE2LCAxMDMyNSwgMTAzMzMsIDEwMzQwLCAxMDM0NywgMTAzNTQsIDEwMzYwLCAxMDM2NSwgMTAzNzUsIDEwMzgzLCAKKyAgICAxMDM5MywgMTA0MDAsIDEwNDEwLCAxMDQyMCwgMTA0MzAsIDEwNDM4LCAxMDQ0NSwgMTA0NTQsIDEwNDY0LCAxMDQ3OCwgCisgICAgMTA0OTMsIDEwNTAyLCAxMDUxMCwgMTA1MTUsIDEwNTE5LCAxMDUyOCwgMTA1MzQsIDEwNTM5LCAxMDU0OSwgMTA1NTksIAorICAgIDEwNTY5LCAxMDU3NCwgMTA1NzgsIDEwNTg3LCAxMDU5MiwgMTA2MDgsIDEwNjI1LCAxMDYzNSwgMTA2NDYsIDEwNjU5LCAKKyAgICAxMDY2NywgMTA2ODAsIDEwNjkyLCAxMDcwMCwgMTA3MDUsIDEwNzA5LCAxMDcxNSwgMTA3MjAsIDEwNzI4LCAxMDczNiwgCisgICAgMTA3NDMsIDEwNzQ4LCAxMDc1NiwgMTA3NjYsIDEwNzcyLCAxMDc3NiwgMTA3NzksIDEwNzgzLCAxMDc4OSwgMTA3OTYsIAorICAgIDEwODAwLCAxMDgwOCwgMTA4MTcsIDEwODI1LCAxMDgzMiwgMTA4MzcsIDEwODQyLCAxMDg0NiwgMTA4NTAsIDEwODU4LCAKKyAgICAxMDg3MywgMTA4ODksIDEwODk1LCAxMDkwMywgMTA5MTIsIDEwOTIwLCAxMDkyNiwgMTA5MzAsIDEwOTM3LCAxMDk0OCwgCisgICAgMTA5NTIsIDEwOTU1LCAxMDk2MSwgOTY2OSwgMTA5NjYsIDEwOTcyLCAxMDk3OSwgMTA5ODUsIDEwOTkwLCAxMDk5NywgCisgICAgMTEwMDQsIDExMDExLCAxMTAxOCwgMTEwMjUsIDExMDMyLCAxMTAzOSwgMTEwNDYsIDExMDUxLCAxMDIwNCwgMTEwNTYsIAorICAgIDExMDYyLCAxMTA2OSwgMTEwNzYsIDExMDgxLCAxMTA4OCwgMTEwOTcsIDExMTAxLCAxMTExMywgODYzNCwgMTExMTcsIAorICAgIDExMTIwLCAxMTEyNCwgMTExMjgsIDExMTMyLCAxMTEzNiwgMTExNDIsIDExMTQ4LCAxMTE1MywgMTExNTksIDExMTY0LCAKKyAgICAxMTE2OSwgMTExNzUsIDExMTgwLCAxMTE4NSwgOTQzMSwgMTExOTAsIDExMTk0LCAxMTE5OCwgMTEyMDIsIDExMjA3LCAKKyAgICAxMTIxMiwgMTEyMTcsIDExMjI1LCAxMTIzMSwgMTEyMzYsIDExMjQwLCAxMTI0NCwgMTEyNTEsIDExMjU2LCAxMTI2NCwgCisgICAgMTEyNzEsIDExMjc2LCAxMTI4MCwgMTEyODMsIDExMjg5LCAxMTI5NiwgMTEzMDAsIDExMzAzLCAxMTMwOCwgMTEzMTIsIAorICAgIDQyNzQsIDExMzE4LCAxMTMyNywgNDYsIDExMzM1LCAxMTM0MSwgMTEzNDYsIDExMzUxLCAxMTM1OSwgMTEzNjYsIDExMzcxLCAKKyAgICA5NDQ2LCAxMTM3NywgMTEzODMsIDExMzg4LCAxMTM5MiwgMTEzOTUsIDExNDEwLCAxMTQyOSwgMTE0NDEsIDExNDU0LCAKKyAgICAxMTQ2NywgMTE0ODAsIDExNDk0LCAxMTUwNywgMTE1MjIsIDExNTI5LCA5Njc0LCAxMTUzNSwgMTE1NDksIDExNTU0LCAKKyAgICAxMTU2MCwgMTE1NjUsIDExNTczLCAxMTU3OCwgODQwMSwgMTE1ODMsIDExNTg2LCAxMTU5NCwgMTE2MDEsIDExNjA2LCAKKyAgICAxMTYxMCwgMTE2MTYsIDI5MTcsIDEwMjc4LCAxMTYyMCwgMTE2MjQsIDExNjMwLCAxMTYzNiwgMTE2NDEsIDExNjQ3LCAKKyAgICAxMTY1MiwgOTY4MywgMTE2NTgsIDExNjY0LCAxMTY2OSwgMTE2NzQsIDExNjgyLCAxMTY4OCwgMTE3MDEsIDExNzA5LCAKKyAgICAxMTcxNiwgMTE3MjIsIDk2ODksIDExNzI4LCAxMTczNiwgMTE3NDQsIDExNzUxLCAxMTc2NCwgMTE3NzcsIDExNzg5LCAKKyAgICAxMTc5OSwgMTE4MDcsIDExODE0LCAxMTgyNiwgMTE4MzMsIDExODQzLCAxMTg1MiwgMTE4NjEsIDExODY5LCAxMTg3NiwgCisgICAgMTE4ODEsIDExODg3LCA5Njk0LCAxMTg5MiwgMTE4OTgsIDExOTAzLCAxMTkwOCwgOTcwMCwgMTE5MTMsIDExOTE2LCAKKyAgICAxMTkyMywgMTE5MjksIDExOTQyLCA5MTEyLCAxMTk1MywgMTE5NTksIDExOTY4LCAxMTk3NiwgMTE5ODMsIDExOTg5LCAKKyAgICAxMjAwMCwgMTIwMDYsIDEyMDExLCAzODM2LCAxMjAxOSwgMTIwMjQsIDExNDAyLCAxMjAzMCwgMTIwMzcsIDEyMDQyLCAKKyAgICA5NzA1LCAxMjA0OCwgMTIwNTMsIDEyMDYwLCAxMjA2NiwgMTIwNzIsIDEyMDc3LCAxMjA4NSwgMTIwOTMsIDEyMTAwLCAKKyAgICAxMjEwNCwgMTIxMTYsIDEyMTMwLCAxMjE0MCwgMTIxNDUsIDEyMTQ5LCAxMjE2MCwgMTIxNjYsIDEyMTcxLCAxMjE3NiwgCisgICAgOTcxMCwgMTIxODAsIDk3MTYsIDEyMTg1LCAxMjE4OCwgMTIxOTMsIDEyMjA1LCAxMjIxMiwgMTIyMTcsIDEyMjIxLCAKKyAgICAxMjIyOSwgMTIyMzQsIDEyMjM4LCAxMjI0MywgMTIyNDcsIDEyMjU0LCAxMjI2MCwgOTcyMSwgOTYyOCwgMTIyNjcsIDI5MjIsIAorICAgIDEyLCAxMjI3NCwgMTIyNzksIDEyMjgzLCAxMjI4NywgMTIyOTMsIDEyMzAxLCAxMjMxMSwgMTIzMTYsIDEyMzIxLCAxMjMyOCwgCisgICAgMTIzMzUsIDEyMzM5LCAxMjM1MCwgMTIzNjAsIDEyMzY5LCAxMjM3OCwgMTIzOTAsIDEyMzk1LCAxMjM5OSwgMTI0MDcsIAorICAgIDEyNDIxLCAxMjQyNSwgMTI0MjgsIDEyNDM2LCAxMjQ0MywgMTI0NTEsIDEyNDU1LCAxMjQ2NiwgMTI0NzAsIDEyNDc3LCAKKyAgICAxMjQ4MiwgMTI0ODYsIDEyNDkyLCAxMjQ5NywgMTI1MDMsIDEyNTA4LCAxMjUxMywgMTI1MTcsIDEyNTIzLCAxMjUyOCwgCisgICAgMTI1MzksIDEyNTQzLCAxMjU0NiwgMTI1NTIsIDEyNTU3LCAxMjU2MywgMTI1NjksIDEyNTc2LCAxMjU4NywgMTI1OTcsIAorICAgIDEyNjA3LCAxMjYxNiwgMTI2MjMsIDEyNjMyLCAxMjYzNiwgOTczMSwgOTczOCwgOTc0NCwgOTc0OSwgMTI2NDIsIDEyNjQ4LCAKKyAgICAxMjY1NCwgMTI2NTksIDEyNjY1LCA5NzUzLCAxMjY3MSwgMTI2NzQsIDEyNjgxLCAxMjY4NiwgMTI3MDEsIDEyNzE3LCAKKyAgICAxMjczMiwgMTI3NDAsIDEyNzQ2LCAxMjc1MSwgOTUwLCAzNzQsIDEyNzU2LCAxMjc2NCwgMTI3NzEsIDEyNzc3LCAxMjc4MiwgCisgICAgMTI3ODcsIDk3NTgsIDEyNzg5LCAxMjc5MywgMTI3OTgsIDEyODAyLCAxMjgxMiwgMTI4MTcsIDEyODIxLCAxMjgzMCwgCisgICAgMTI4MzQsIDEyODM3LCAxMjg0NCwgOTc2NywgMTI4NDksIDEyODUyLCAxMjg2MCwgMTI4NjcsIDEyODc1LCAxMjg3OSwgCisgICAgMTI4ODMsIDEyODkwLCAxMjg5OSwgMTI5MDYsIDEyOTAyLCAxMjkxMywgMTI5MTcsIDEyOTIzLCAxMjkyNywgMTI5MzEsIAorICAgIDEyOTM1LCAxMjk0MSwgMTI5NTEsIDEyOTU5LCAxMjk2NiwgMTI5NzAsIDEyOTc4LCAxMjk4MiwgMTI5ODksIDEyOTkzLCAKKyAgICAxMjk5OCwgMTMwMDIsIDEzMDA5LCAxMzAxNSwgMTMwMjMsIDEzMDI5LCAxMzAzNCwgMTMwNDQsIDEzMDQ5LCAxMzA1NCwgCisgICAgMTMwNTgsIDEzMDYyLCAxMzA3MCwgNDEyNCwgMTMwNzgsIDEzMDgzLCA5NzcyLCAxMzA4NywgMTMwOTEsIDEzMDk0LCAKKyAgICAxMzEwMiwgMTMxMDksIDEzMTEzLCA2Mjk4LCAxMzExNywgMTMxMjIsIDEzMTI3LCAxMzEzMSwgMTMxNDIsIDEzMTUyLCAKKyAgICAxMzE1NywgMTMxNjMsIDEzMTY4LCAxMzE3MiwgMTMxNzUsIDEzMTgzLCAxMzE4OCwgMTMxOTMsIDEzMjAwLCAxMzIwNSwgCisgICAgOTc3NywgMTMyMTAsIDEzMjE0LCAxMzIyMSwgMTczNywgNjQ1NiwgMTMyMjYsIDEzMjMxLCAxMzIzNiwgMTMyNDEsIDEzMjQ3LCAKKyAgICAxMzI1MiwgMTMyNTgsIDEzMjYzLCAxMzI2OCwgMTMyNzMsIDEzMjc4LCAxMzI4MywgMTMyODgsIDEzMjkzLCAxMzI5OCwgCisgICAgMTMzMDMsIDEzMzA4LCAxMzMxMywgMTMzMTgsIDEzMzIzLCAxMzMyOCwgMTMzMzMsIDEzMzM4LCAxMzM0NCwgMTMzNDksIAorICAgIDEzMzU0LCAxMzM1OSwgMTMzNjQsIDEzMzY5LCAxMzM3NSwgMTMzODAsIDEzMzg1LCAxMzM5MSwgMTMzOTYsIDEzNDAyLCAKKyAgICAxMzQwNywgMTM0MTMsIDEzNDE4LCAxMzQyMywgMTM0MjgsIDEzNDMzLCAxMzQzOSwgMTM0NDQsIDEzNDQ5LCAxMzQ1NCwgCisgICAgOTA5LCAxMTIsIDEzNDYyLCAxMzQ2NiwgMTM0NzEsIDEzNDc2LCAxMzQ4MCwgMTM0ODQsIDEzNDg4LCAxMzQ5MywgMTM0OTcsIAorICAgIDEzNTAyLCAxMzUwNiwgMTM1MDksIDEzNTEzLCAxMzUxNywgMTM1MjMsIDEzNTI4LCAxMzUzOCwgMTM1NDQsIDEzNTUyLCAKKyAgICAxMzU1OCwgMTM1NjIsIDEzNTY2LCAxMzU3MywgMTM1ODEsIDEzNTkwLCAxMzYwMSwgMTM2MTEsIDEzNjE4LCAxMzYyNSwgCisgICAgMTM2MjksIDEzNjM4LCAxMzY0NywgMTM2NTUsIDEzNjY0LCAxMzY3MywgMTM2ODIsIDEzNjkxLCAxMzcwMSwgMTM3MTEsIAorICAgIDEzNzIxLCAxMzczMSwgMTM3NDEsIDEzNzUwLCAxMzc2MCwgMTM3NzAsIDEzNzgwLCAxMzc5MCwgMTM4MDAsIDEzODEwLCAKKyAgICAxMzgyMCwgMTM4MjksIDEzODM5LCAxMzg0OSwgMTM4NTksIDEzODY5LCAxMzg3OSwgMTM4ODksIDEzODk4LCAxMzkwOCwgCisgICAgMTM5MTgsIDEzOTI4LCAxMzkzOCwgMTM5NDgsIDEzOTU4LCAxMzk2OCwgMTM5NzgsIDEzOTg4LCAxMzk5NywgMTQwMDcsIAorICAgIDE0MDE3LCAxNDAyNywgMTQwMzcsIDE0MDQ3LCAxNDA1NywgMTQwNjcsIDE0MDc3LCAxNDA4NywgMTQwOTcsIDE0MTA2LCAKKyAgICAxMjM3LCAxNDExMiwgMTQxMTUsIDE0MTE5LCAxNDEyNCwgMTQxMzEsIDE0MTM3LCAxNDE0MiwgMTQxNDYsIDE0MTUxLCAKKyAgICAxNDE2MCwgMTQxNjgsIDE0MTczLCAxNDE3NywgMTQxODEsIDE0MTg3LCAxNDE5MiwgMTQxOTgsIDk3ODYsIDE0MjAzLCAKKyAgICAxNDIwOCwgMTQyMTcsIDk3OTYsIDE0MjIyLCAxNDIyNSwgMTQyMzEsIDE0MjM5LCA5ODAxLCAxNDI0NiwgMTQyNTAsIAorICAgIDE0MjU0LCAxNDI1OSwgMTQyNjMsIDE0MjczLCAxNDI3OSwgMTQyODUsIDE0MjkwLCAxNDI5OSwgMTQzMDcsIDE0MzE0LCAKKyAgICAxNDMyMSwgMTQzMjYsIDE0MzMzLCAxNDMzOCwgMTQzNDIsIDE0MzQ1LCAxNDM1NiwgMTQzNjYsIDE0Mzc1LCAxNDM4MywgCisgICAgMTQzOTQsIDE0NDA2LCAxNDQxNiwgMTQ0MjEsIDE0NDI1LCAxNDQzMCwgMTQ0MzUsIDE0NDM5LCAxNDQ0NSwgMTQ0NTMsIAorICAgIDE0NDYwLCAxNDQ3MSwgMTQ0NzYsIDE0NDg2LCAxNDQ5NSwgMTQ0OTksIDE0NTAyLCAxNDUwOSwgMTQ1MTksIDE0NTI4LCAKKyAgICAxNDUzNSwgMTQ1MzksIDE0NTQ2LCAxNDU1MiwgMTQ1NTcsIDE0NTYyLCAxNDU2NiwgMTQ1NzUsIDE0NTgwLCAxNDU4NCwgCisgICAgMTQ1OTAsIDE0NTk0LCAxNDU5OSwgMTQ2MDMsIDE0NjEwLCAxNDYxNywgMTQ2MjEsIDE0NjMwLCAxNDYzOCwgMTQ2NDYsIAorICAgIDE0NjUzLCAxNDY2MSwgMTQ2NzMsIDE0Njg0LCAxNDY5NCwgMTQ3MDEsIDE0NzA3LCAxNDcxNiwgMTQ3MjcsIDE0NzM2LCAKKyAgICAxNDc0OCwgMTQ3NjAsIDE0NzcyLCAxNDc4MiwgMTQ3OTEsIDE0ODAwLCAxNDgwOCwgMTQ4MTUsIDE0ODI0LCAxNDgzMiwgCisgICAgMTQ4MzYsIDE0ODQxLCAxNDg0NywgMTQ4NTMsIDE0ODU4LCAxNDg2MywgODA5MywgMTQ4NjcsIDE0ODY5LCAxNDg3MywgCisgICAgMTQ4NzgsIDE0ODg0LCAxNDg5MCwgMTQ4OTksIDE0OTAzLCAxNDkwOSwgMTQ5MTcsIDE0OTI0LCAxNDkzMywgMTQ5NDIsIAorICAgIDE0OTUxLCAxNDk2MCwgMTQ5NjksIDE0OTc4LCAxNDk4NywgMTQ5OTYsIDE1MDA2LCAxNTAxNiwgMTUwMjUsIDE1MDMxLCAKKyAgICAxNTAzOCwgMTUwNDUsIDE1MDUxLCAxNTA2NSwgMTUwNzEsIDE1MDc4LCAxNTA4NiwgMTUwOTUsIDE1MTAzLCAxNTEwOSwgCisgICAgMTUxMTgsIDE1MTI3LCAxNTEzOCwgMTUxNDgsIDE1MTU2LCAxNTE2MywgMTUxNzEsIDE1MTgwLCAxNTE5MywgMTUyMDIsIAorICAgIDE1MjEwLCAxNTIxNywgMTUyMzAsIDE1MjM2LCAxNTI0MiwgMTUyNTIsIDE1MjYxLCAxNTI3MCwgMTUyNzUsIDE1Mjc5LCAKKyAgICAxNTI4NSwgMTUyOTEsIDE1Mjk2LCAxNTMwMywgMTUzMTAsIDk0NDUsIDE1MzE1LCAxNTMyMCwgMTUzMjcsIDE1MzM1LCAKKyAgICAxNTM0MCwgMTUzNDcsIDE1MzUyLCAxNTM2NCwgMTM1MTksIDE1MzY5LCAxNTM3NywgMTUzODMsIDE1Mzg4LCAxNTM5NiwgCisgICAgMTU0MDQsIDE1NDExLCAxNTQxOSwgMTU0MjUsIDE1NDMzLCAxNTQ0MSwgMTU0NDcsIDE1NDUyLCAxNTQ1OCwgMTU0NjUsIAorICAgIDE1NDcxLCAxNTQ3NiwgMTU0ODAsIDE1NDkxLCAxNTQ5OSwgMTU1MDUsIDE1NTEwLCAxNTUxNywgMTU1MjYsIDE1NTMyLCAKKyAgICAxNTUzNywgMTU1NDUsIDE1NTU0LCAxNTU2OCwgNDA2OCwgMTU1NzIsIDE1NTc3LCAxNTU4MiwgMTU1ODgsIDE1NTkzLCAKKyAgICAxNTU5OCwgMTU2MDIsIDE1NjA3LCAxNTYxMiwgMTU2MTcsIDgwOTIsIDE1NjIyLCAxNTYyNywgMTU2MzIsIDE1NjM3LCAKKyAgICAxNTY0MiwgMTU2NDYsIDE1NjUxLCAxNTY1NiwgMTU2NjEsIDE1NjY2LCAxNTY3MiwgMTU2NzgsIDE1NjgzLCAxNTY4NywgCisgICAgMTU2OTMsIDE1Njk4LCAxNTcwMywgMTU3MDgsIDk4MDUsIDE1NzEzLCAxNTcxOCwgMTU3MjMsIDE1NzI4LCAxNTczMywgCisgICAgMTU3NTAsIDE1NzY4LCAxNTc4MCwgMTU3OTMsIDE1ODEwLCAxNTgyNiwgMTU4NDMsIDE1ODUzLCAxNTg3MiwgMTU4ODMsIAorICAgIDE1ODk0LCAxNTkwNSwgMTU5MTYsIDE1OTI4LCAxNTkzOSwgMTU5NTAsIDE1OTY3LCAxNTk3OCwgMTU5ODksIDE1OTk0LCAKKyAgICA5ODEwLCAxNTk5OSwgMTYwMDMsIDI0MjAsIDE2MDA3LCAxNjAxMCwgMTYwMTYsIDE2MDI0LCAxNjAzMiwgMTYwNDEsIAorICAgIDE2MDQ4LCAxNjA1MywgMTYwNjEsIDE2MDY5LCAxNjA3NiwgMTYwODAsIDE2MDg1LCAxNjA5MSwgMTYwOTgsIDE2MTA2LCAKKyAgICAxNjExMywgMTYxMjUsIDE2MTMyLCAxNjEzOCwgMTYxNDYsIDE2MTUxLCAxNjE1NywgMTI2OTUsIDE2MTYzLCAxNjE3MiwgCisgICAgMTYxNzgsIDE2MTgzLCAxNjE5MSwgMTYyMDAsIDE2MjA4LCAxNjIxNSwgMTYyMjEsIDE2MjI5LCAxNjIzNiwgMTYyNDIsIAorICAgIDE2MjQ4LCAxNjI1NSwgMTYyNjIsIDE2MjY4LCAxNjI3NCwgMTYyODMsIDE2MjkxLCAxNjMwMSwgMTYzMDgsIDE2MzE0LCAKKyAgICAxNjMyMiwgMTYzMjgsIDE2MzM2LCAxNjM0NCwgMTYzNTEsIDE2MzY0LCAxNjM3MSwgMTYzODAsIDE2Mzg5LCAxNjM5OCwgCisgICAgMTY0MDYsIDE2NDE2LCAxNjQyMywgMTY0MjgsIDM3MjcsIDE2NDM1LCAxNjQ0MCwgMTM1MywgMTY0NDQsIDE1NjIzLCAKKyAgICAxNjQ0OCwgMTY0NTQsIDE2NDU4LCAxNjQ2NiwgMTY0NzgsIDE2NDgzLCAxNjQ5MCwgMTY0OTYsIDE2NTAxLCAxNjUwOCwgCisgICAgMTU2MjgsIDE2NTEyLCAxNjUxNiwgMTY1MjAsIDE1NjMzLCAxNjUyNCwgMTU2MzgsIDE2NTI4LCAxNjUzNSwgMTY1NDAsIAorICAgIDE2NTQ0LCAxNjU1MSwgMTY1NTUsIDE2NTYzLCAxNjU3MCwgMTY1NzUsIDE2NTc5LCAxNjU4NiwgMTY2MDMsIDE2NjEyLCAKKyAgICAxNjYxNiwgMTY2MTksIDE2NjI3LCAxNjYzMywgMTY2MzgsIDM4MDUsIDE2NjQyLCAxNjY0NCwgMTY2NTIsIDE2NjU5LCAKKyAgICAxNjY2OSwgMTY2ODEsIDE2Njg2LCAxNjY5MCwgMTY2OTYsIDE2NzAxLCAxNjcwNSwgMTY3MTEsIDE2NzE2LCAxNjcyMiwgCisgICAgMTY3MjUsIDE2NzMyLCAxNjc0MCwgMTY3NDcsIDE2NzUzLCAxNjc1OCwgMTY3NjQsIDE2NzY5LCAxNjc3NiwgMTY3ODIsIAorICAgIDE2Nzg3LCAxNjc5NCwgMTY3OTksIDE2ODAzLCAxNjgwOSwgMTY4MTMsIDE2ODIwLCAxNjgyNiwgMTY4MzEsIDE2ODM3LCAKKyAgICAxNjg0NSwgMTY4NTMsIDE2ODYwLCAxNjg2NiwgMTY4NzEsIDE2ODc3LCAxNjg4MywgMTY4OTEsIDE2ODk5LCAxNjkwNSwgCisgICAgMTY5MTEsIDE2OTE2LCAxNjkyMywgMTY5MjgsIDE2OTMyLCAxNjkzOCwgMTY5NDMsIDE2OTUwLCAxNjk1NSwgMTY5NjEsIAorICAgIDE2OTY0LCAxNjk3MCwgMTY5NzYsIDE2OTc5LCAxNjk4MywgMTY5ODcsIDE2OTk5LCAxNzAwNSwgMTcwMTAsIDE3MDE3LCAKKyAgICAxNzAyMywgMTcwMjksIDE3MDQwLCAxNzA1MCwgMTcwNTksIDE3MDY3LCAxNzA3NCwgMTcwODUsIDE3MDk1LCAxNzEwNSwgCisgICAgMTcxMTMsIDE3MTE2LCAxNTY1MiwgMTcxMjEsIDE3MTI2LCAxNTY1NywgMTU3OTgsIDE3MTM0LCAxNzE0NywgMTcxNjIsIAorICAgIDE3MTczLCAxNTgxNSwgMTcxOTEsIDE3MjA0LCAxNzIxNywgMTcyMjgsIDExNDE3LCAxNzIzOSwgMTcyNTIsIDE3MjcxLCAKKyAgICAxNzI4MiwgMTcyOTMsIDE3MzA0LCAyNjg4LCAxNzMxNywgMTczMjEsIDE3MzI5LCAxNzM0MCwgMTczNDgsIDE3MzYzLCAKKyAgICAxNzM3OCwgMTczODksIDE3Mzk2LCAxNzQwMiwgMTc0MTAsIDE3NDE0LCAxNzQyMCwgMTc0MjMsIDE3NDM2LCAxNzQ0OCwgCisgICAgMTc0NTgsIDE3NDY2LCAxNzQ3MywgMTc0ODEsIDE3NDkxLCAxNzQ5NiwgMTc1MDMsIDE3NTA4LCAxNzUxNSwgMTc1MjYsIAorICAgIDE3NTM2LCAxNzU0MiwgMTc1NDcsIDE3NTUyLCAxNTY2MiwgMTc1NTYsIDE3NTYyLCAxNzU2OCwgMTc1NzMsIDE3NTc4LCAKKyAgICAxNzU4MywgMTc1ODcsIDE1NjY3LCAxNTY3MywgMTc1OTEsIDE1Njc5LCAxNzU5NiwgMTc2MDQsIDE3NjA5LCAxNzYxMywgCisgICAgMTc2MjEsIDE3NjMwLCAxNzYzNywgMTc2NDEsIDk2NDksIDE3NjQ1LCAxNzY0NywgMTc2NTIsIDE3NjU3LCAxNzY2MywgCisgICAgMTc2NjgsIDE3NjczLCAxNzY3OCwgMTc2ODMsIDE3Njg3LCAxNzY5MywgMTc2OTksIDE3NzA0LCAxNzcxMCwgMTc3MTUsIAorICAgIDE3NzIwLCAxNzcyNCwgMTc3MzAsIDE3NzM1LCAxNzc0MCwgMTc3NDUsIDE3NzU3LCAxNzc2MiwgMTc3NjgsIDE3NzczLCAKKyAgICAxNzc3OCwgMTc3ODQsIDE3NzkwLCAxNzc5NSwgMTc4MDAsIDE3ODA1LCAxNzgxMiwgMTc4MTgsIDE3ODI5LCAxNzgzNiwgCisgICAgMTc4NDEsIDE3ODQ1LCAxNzg0OSwgMTc4NTIsIDE3ODYwLCAxNzg2NSwgMTc4NzIsIDE3ODc5LCAxNzg4NSwgMTc4OTAsIAorICAgIDE3ODk1LCAxNzkwMCwgMTc5MDcsIDE3OTE3LCAxNzkyNSwgMTc5MzAsIDE3OTM3LCAxNzk0MywgMTc5NTIsIDE3OTYyLCAKKyAgICAxNzk3MiwgMTc5ODYsIDE4MDAwLCAxODAxNCwgMTgwMjgsIDE4MDQzLCAxODA1OCwgMTgwNzUsIDE4MDkzLCAxODEwNiwgCisgICAgMTgxMTIsIDE4MTE3LCAxODEyMiwgMTgxMjYsIDE4MTM0LCAxODEzOSwgMTgxNDcsIDE4MTUzLCAxODE1OSwgMTgxNjQsIAorICAgIDE4MTY5LCAxODE3MywgMTgxNzgsIDE4MTgyLCAxODE4NywgMTgxOTEsIDE4MjAyLCAxODIwOCwgMTgyMTMsIDE4MjE4LCAKKyAgICAxODIyNSwgMTgyMzAsIDE4MjM0LCAzNjkwLCAxODIzOSwgMTgyNDUsIDE4MjUyLCAxNTY4OCwgMTgyNTgsIDE4MjYyLCAKKyAgICAxODI2OCwgMTgyNzMsIDE4Mjc4LCAxODI4MiwgMTgyODgsIDE4MjkzLCAxODI5OCwgMTgzMDUsIDE4MzEwLCAxNDI3NSwgCisgICAgMTgzMTQsIDE4MzE5LCAxODMyMywgMTgzMjgsIDE4MzM0LCAxODM0MCwgMTgzNDcsIDE4MzU3LCAxODM2NSwgMTgzNzIsIAorICAgIDE4Mzc3LCAxODM4MSwgMTgzOTAsIDE4Mzk4LCAxODQwNSwgMTg0MTIsIDE4NDE4LCAxODQyMywgMTg0MjksIDE4NDM0LCAKKyAgICAxODQzOSwgMTg0NDUsIDE4NDUwLCAxODQ1NiwgMTg0NjEsIDE4NDY3LCAxODQ3MywgMTg0ODAsIDE4NDg2LCAxODQ5MSwgCisgICAgMTg0OTYsIDk4NzUsIDE4NTA1LCAxODUwOCwgMTg1MTYsIDE4NTIyLCAxODUyNywgMTg1MzIsIDE4NTQyLCAxODU0OSwgCisgICAgMTg1NTUsIDE4NTYwLCAxODU2NSwgMTg1NzEsIDE4NTc2LCAxODU4MiwgMTg1ODcsIDE4NTkzLCAxODU5OSwgMTg2MDQsIAorICAgIDE4NjEyLCAxODYxOSwgMTg2MjQsIDE4NjI5LCAxODYzNSwgMTg2NDAsIDE4NjQ0LCAxODY1MywgMTg2NjQsIDE4NjcxLCAKKyAgICAxODY3OSwgMTg2ODYsIDE4NjkxLCAxODY5NiwgMTg3MDIsIDE4NzA3LCAxODcxNSwgMTg3MjEsIDE4NzI3LCAxODczNCwgCisgICAgMTg3NDAsIDE4NzQ1LCAxODc0OSwgMTg3NTUsIDE4NzYwLCAxODc2NSwgMTg3NjksIDE4Nzc0LCAxNDI2LCA4MTE3LCAyOTM2LCAKKyAgICAxODc3OCwgMTg3ODIsIDE4Nzg2LCAxODc5MCwgMTg3OTQsIDE4Nzk4LCAxODgwMSwgMTg4MDYsIDE4ODEzLCAxODgyMSwgCisgICAgMTU2OTksIDE4ODI4LCAxODgzOCwgMTg4NDYsIDE4ODUzLCAxODg2MSwgMTg4NzEsIDE4ODgwLCA5MjIwLCAxODg5MywgCisgICAgMTg4OTgsIDE4OTAzLCAxODkxMSwgMTg5MTgsIDE0MzcxLCAxNDM4MCwgMTg5MjUsIDE4OTM1LCAxODk1MCwgMTg5NTYsIAorICAgIDE4OTYzLCAxODk3MCwgMTg5NzYsIDE4OTgyLCAxODk5MywgMTkwMDEsIDE5MDA5LCAxOTAxOSwgMTkwMjksIDE1NzA0LCAKKyAgICAxOTAzOCwgMTkwNDQsIDE5MDUwLCAxOTA1OCwgMTkwNjYsIDE5MDcxLCAxOTA4MCwgMTkwODgsIDE5MTAwLCAxOTExMCwgCisgICAgMTkxMjAsIDE5MTMwLCAxOTEzOSwgMTkxNTEsIDE5MTYxLCAxOTE3MSwgMTkxODIsIDE5MTg3LCAxOTE5OSwgMTkyMTEsIAorICAgIDE5MjIzLCAxOTIzNSwgMTkyNDcsIDE5MjU5LCAxOTI3MSwgMTkyODMsIDE5Mjk1LCAxOTMwNywgMTkzMTgsIDE5MzMwLCAKKyAgICAxOTM0MiwgMTkzNTQsIDE5MzY2LCAxOTM3OCwgMTkzOTAsIDE5NDAyLCAxOTQxNCwgMTk0MjYsIDE5NDM4LCAxOTQ0OSwgCisgICAgMTk0NjEsIDE5NDczLCAxOTQ4NSwgMTk0OTcsIDE5NTA5LCAxOTUyMSwgMTk1MzMsIDE5NTQ1LCAxOTU1NywgMTk1NjksIAorICAgIDE5NTgwLCAxOTU5MiwgMTk2MDQsIDE5NjE2LCAxOTYyOCwgMTk2NDAsIDE5NjUyLCAxOTY2NCwgMTk2NzYsIDE5Njg4LCAKKyAgICAxOTcwMCwgMTk3MTEsIDE5NzIzLCAxOTczNSwgMTk3NDcsIDE5NzU5LCAxOTc3MSwgMTk3ODMsIDE5Nzk1LCAxOTgwNywgCisgICAgMTk4MTksIDE5ODMxLCAxOTg0MiwgMTk4NTQsIDE5ODY2LCAxOTg3OCwgMTk4OTAsIDE5OTAyLCAxOTkxNCwgMTk5MjYsIAorICAgIDE5OTM4LCAxOTk1MCwgMTk5NjIsIDE5OTczLCAxOTk4NSwgMTk5OTcsIDIwMDA5LCAyMDAyMSwgMjAwMzMsIDIwMDQ1LCAKKyAgICAyMDA1NywgMjAwNjksIDIwMDgxLCAyMDA5MywgMjAxMDQsIDIwMTE2LCAyMDEyOCwgMjAxNDAsIDIwMTUyLCAyMDE2NSwgCisgICAgMjAxNzgsIDIwMTkxLCAyMDIwNCwgMjAyMTcsIDIwMjMwLCAyMDI0MywgMjAyNTUsIDIwMjY4LCAyMDI4MSwgMjAyOTQsIAorICAgIDIwMzA3LCAyMDMyMCwgMjAzMzMsIDIwMzQ2LCAyMDM1OSwgMjAzNzIsIDIwMzg1LCAyMDM5NywgMjA0MTAsIDIwNDIzLCAKKyAgICAyMDQzNiwgMjA0NDksIDIwNDYyLCAyMDQ3NSwgMjA0ODgsIDIwNTAxLCAyMDUxNCwgMjA1MjcsIDIwNTM5LCAyMDU1MiwgCisgICAgMjA1NjUsIDIwNTc4LCAyMDU5MSwgMjA2MDQsIDIwNjE3LCAyMDYzMCwgMjA2NDMsIDIwNjU2LCAyMDY2OSwgMjA2ODEsIAorICAgIDIwNjk0LCAyMDcwNywgMjA3MjAsIDIwNzMzLCAyMDc0NiwgMjA3NTksIDIwNzcyLCAyMDc4NSwgMjA3OTgsIDIwODExLCAKKyAgICAyMDgyMywgMjA4MzYsIDIwODQ5LCAyMDg2MiwgMjA4NzUsIDIwODg4LCAyMDkwMSwgMjA5MTQsIDIwOTI3LCAyMDk0MCwgCisgICAgMjA5NTMsIDIwOTY1LCAyMDk3NiwgMjA5ODksIDIxMDAyLCAyMTAxNSwgMjEwMjgsIDIxMDQxLCAyMTA1NCwgMjEwNjcsIAorICAgIDIxMDgwLCAyMTA5MywgMjExMDYsIDIxMTE4LCAyMTEzMSwgMjExNDQsIDIxMTU3LCAyMTE3MCwgMjExODMsIDIxMTk2LCAKKyAgICAyMTIwOSwgMjEyMjIsIDIxMjM1LCAyMTI0OCwgMjEyNjAsIDIxMjczLCAyMTI4NiwgMjEyOTksIDIxMzEyLCAyMTMyNSwgCisgICAgMjEzMzgsIDIxMzUxLCAyMTM2NCwgMjEzNzcsIDIxMzkwLCAyMTQwMiwgMjE0MTUsIDIxNDI4LCAyMTQ0MSwgMjE0NTQsIAorICAgIDIxNDY3LCAyMTQ4MCwgMjE0OTMsIDIxNTA2LCAyMTUxOSwgMjE1MzIsIDIxNTQ0LCAyMTU1NywgMjE1NzAsIDIxNTgzLCAKKyAgICAyMTU5NiwgMjE2MDksIDIxNjIyLCAyMTYzNSwgMjE2NDgsIDIxNjYxLCAyMTY3NCwgMjE2ODYsIDIxNjk5LCAyMTcxMiwgCisgICAgMjE3MjUsIDIxNzM4LCAyMTc1MSwgMjE3NjQsIDIxNzc3LCAyMTc5MCwgMjE4MDMsIDIxODE2LCAyMTgyOCwgMjE4NDEsIAorICAgIDIxODU0LCAyMTg2NywgMjE4ODAsIDIxODkzLCAyMTkwNiwgMjE5MTksIDIxOTMyLCAyMTk0NSwgMjE5NTgsIDIxOTcwLCAKKyAgICAyMTk4MywgMjE5OTYsIDIyMDA5LCAyMjAyMiwgMjIwMzUsIDIyMDQ4LCAyMjA2MSwgMjIwNzQsIDIyMDg3LCAyMjEwMCwgCisgICAgMjIxMTIsIDIyMTI1LCAyMjEzOCwgMjIxNTEsIDIyMTY0LCAyMjE3NywgMjIxOTAsIDIyMjAzLCAyMjIxNiwgMjIyMjksIAorICAgIDIyMjQyLCAyMjI1NCwgMjIyNjcsIDIyMjgwLCAyMjI5MywgMjIzMDYsIDIyMzE5LCAyMjMzMiwgMjIzNDUsIDIyMzU4LCAKKyAgICAyMjM3MSwgMjIzODQsIDIyMzk2LCAyMjQwNywgMjI0MTYsIDIyNDI0LCAyMjQzMiwgMjI0MzksIDIyNDQ1LCAyMjQ0OSwgCisgICAgMjI0NTUsIDIyNDYxLCAyMjQ2OSwgMjI0NzQsIDIyNDgwLCAyMjQ4NSwgMjI0ODksIDIyNDk4LCA5NjU0LCAyMjUwOSwgCisgICAgMjI1MTYsIDIyNTI0LCAyMjUzMSwgMjI1MzgsIDExOTM2LCAyMjU0NSwgMjI1NTIsIDIyNTYxLCAyMjU2NiwgMjI1NzEsIAorICAgIDgxNDUsIDIyNTc4LCAyMjU4MywgMjI1ODYsIDIyNTkxLCAyMjU5OSwgMjI2MDYsIDIyNjEzLCAyMjYyMCwgMjI2MjYsIAorICAgIDIyNjM1LCAyMjY0NCwgMjI2NTMsIDIyNjU5LCAyMjY2OCwgMjI2NzIsIDIyNjc4LCAyMjY4MywgMjI2OTMsIDIyNzAwLCAKKyAgICAyMjcwNiwgMjI3MTQsIDIyNzIwLCAyMjcyNywgMjI3MzcsIDIyNzQ2LCAyMjc1MCwgMjI3NTcsIDIyNzYxLCAyMjc2NiwgCisgICAgMjI3NzIsIDIyNzgwLCAyMjc4NCwgMjI3OTQsIDE1NzE0LCAyMjgwMywgMjI4MDksIDIyODEzLCAyMjgyMiwgMjI4MzIsIAorICAgIDE1NzE5LCAyMjgzOCwgMjI4NDUsIDIyODU2LCAyMjg2NCwgMjI4NzQsIDIyODgzLCAyMjg5MSwgOTQxMCwgMjI4OTksIAorICAgIDIyOTA0LCAyMjkxMCwgMjI5MTUsIDIyOTE5LCAyMjkyMywgMjI5MjcsIDEwMzc5LCAyMjkzMiwgMjI5NDAsIDIyOTQ3LCAKKyAgICAyMjk1NiwgMjI5NjMsIDIyOTcwLCAyMjk3NiwgMTE4NTYsIDIyOTgzLCAyMjk4OSwgMjI5OTMsIDIyOTk5LCAyMzAwNiwgCisgICAgMjMwMTIsIDIzMDIwLCAyMzAyNiwgMjMwMzMsIDIzMDM5LCAyMzA0NSwgMjMwNTQsIDIzMDU4LCAyMzA2NiwgMjMwNzUsIAorICAgIDIzMDgyLCAyMzA4NywgMjMwOTEsIDIzMTAyLCAyMzEwNywgMjMxMTIsIDIzMTE3LCAyMzEzMCwgODM0OSwgMjMxMzQsIAorICAgIDIzMTQwLCAyMzE0NSwgMjMxNTMsIDIzMTU3LCAyMzE2NCwgMjMxNzMsIDIzMTc4LCAxNTk5MCwgMjMxODYsIDIzMTkwLCAKKyAgICAyMzIwMiwgMjMyMDcsIDIzMjExLCAyMzIxNCwgMjMyMjAsIDIzMjI2LCAyMzIzMiwgMjMyMzcsIDIzMjQxLCAyMzI0NCwgCisgICAgMjMyNTUsIDIzMjYwLCA5OTI2LCAyMzI2NywgMjMyNzIsIDEyNDMsIDk5MzEsIDIzMjc3LCAyMzI4MiwgMjMyODcsIDIzMjkyLCAKKyAgICAyMzI5NywgMjMzMDIsIDIzMzA3LCAyMzMxMiwgMjMzMTcsIDIzMzIyLCAyMzMyNywgMjMzMzIsIDIzMzM4LCAyMzM0MywgCisgICAgMjMzNDgsIDIzMzUzLCAyMzM1OCwgMjMzNjMsIDIzMzY4LCAyMzM3MywgMjMzNzgsIDIzMzgzLCAyMzM4OSwgMjMzOTUsIAorICAgIDIzNDAwLCAyMzQwNSwgMjM0MTAsIDIzNDE1LCAyMzQyMCwgMjM0MjUsIDIzNDMwLCAyMzQzNSwgMjM0NDAsIDIzNDQ2LCAKKyAgICAyMzQ1MSwgMjM0NTYsIDIzNDYxLCAyMzQ2NywgMjM0NzMsIDIzNDc4LCAyMzQ4MywgMjM0ODgsIDIzNDkzLCAyMzQ5OCwgCisgICAgMjM1MDMsIDIzNTA4LCAyMzUxMywgMjM1MTksIDIzNTI0LCAyMzUyOSwgMjM1MzQsIDIzNTM5LCAyMzU0NSwgMjM1NTAsIAorICAgIDIzNTU1LCAyMzU1OSwgMTM0LCAyMzU2NywgMjM1NzEsIDIzNTc1LCAyMzU3OSwgMjM1ODQsIDIzNTg4LCAxNDI4MSwgMjM0NiwgCisgICAgMjM1OTIsIDIzNTk3LCAyMzYwMSwgMjM2MDYsIDIzNjEwLCAyMzYxNSwgMjM2MTksIDIzNjI1LCAyMzYzMCwgMjM2MzQsIAorICAgIDIzNjM4LCAyMzY0NiwgMjM2NTAsIDIzNjU0LCAyMzY1OSwgMjM2NjQsIDIzNjY4LCAyMzY3NCwgMjM2NzksIDIzNjgzLCAKKyAgICAyMzY4OCwgMjM2OTMsIDIzNjk3LCAyMzcwNCwgMjM3MTEsIDIzNzE4LCAyMzcyMiwgMjM3MjYsIDIzNzMxLCAyMzczNSwgCisgICAgMjM3MzgsIDIzNzQ0LCAyMzc1NywgMjM3NjIsIDIzNzY4LCAyMzc3NywgMjM3ODIsIDEwMTUxLCAyMzc4NywgMjM3OTYsIAorICAgIDIzODAxLCAyMzgwNCwgMjc1MSwgMjc1NiwgMjM4MDgsIDIzODE0LCAyMzgyMCwgNzUzOCwgMjM4MjUsIDIzODMwLCAyMzgzNSwgCisgICAgMjM4NDEsIDIzODQ2LCAxNTEzNCwgMjM4NTEsIDIzODU2LCAyMzg2MSwgMjM4NjYsIDIzODcyLCAyMzg3NywgMjM4ODIsIAorICAgIDIzODg4LCAyMzg5MywgMjM4OTcsIDIzOTAyLCAyMzkwNywgMjM5MTIsIDIzOTE3LCAyMzkyMiwgMjM5MjYsIDIzOTMxLCAKKyAgICAyMzkzNSwgMjM5NDAsIDIzOTQ1LCAyMzk1MCwgMjM5NTUsIDIzOTU5LCAyMzk2NCwgMjM5NjgsIDIzOTczLCAyMzk3OCwgCisgICAgMjM5ODMsIDIzODk4LCAyOTQ1LCAyMzkwMywgMjM5ODgsIDIzOTk2LCAyNDAwMywgMTA0NzMsIDI0MDE1LCAyNDAyMywgCisgICAgMjQwMzMsIDI0MDUxLCAyNDA3MCwgMjQwNzksIDI0MDg3LCAyMzkwOCwgMjQwOTQsIDI0MDk5LCAyNDEwNywgMjM5MTMsIAorICAgIDI0MTEyLCAyNDExNywgMjQxMjUsIDI0MTMwLCAyMzkxOCwgMjQxMzUsIDI0MTQzLCAyNDE0OCwgMjQxNTIsIDI0MTU5LCAKKyAgICAyNDE2NSwgMjQxNzQsIDI0MTgyLCAyNDE4NiwgMjQxODksIDI0MTk2LCAyNDIwMCwgMjQyMDQsIDI0MjA5LCAyNDIxNSwgCisgICAgMjQyMjIsIDI0MjI3LCA5NDM3LCAxNzQyLCAxNzQ3LCAyNDIzMSwgMjQyMzcsIDI0MjQzLCAyNDI0OCwgMjQyNTIsIDI0MjU2LCAKKyAgICAyNDI2MCwgMjQyNjQsIDI0MjY4LCAyNDI3MiwgMjQyNzYsIDI0MjgwLCAyNDI4MywgMjQyODksIDI0Mjk2LCAyNDMwNCwgCisgICAgMjQzMTAsIDI0MzE2LCAyNDMyMSwgMjQzMjYsIDI0MzMyLCAyNDMzNiwgMjQzNDEsIDE1MDQwLCAxNTA0NywgMjQzNDgsIAorICAgIDI0MzYwLCAyNDM2MywgMjQzNzAsIDI0Mzc0LCAxNzg4MSwgMjQzODEsIDI0Mzg5LCAyNDQwMCwgMjQ0MDksIDI0NDIyLCAKKyAgICAyNDQzMiwgMjQ0NDYsIDI0NDU4LCAyNDQ3MiwgMjQ0ODUsIDI0NDk3LCAyNDUwNywgMjQ1MTksIDI0NTI1LCAyNDU0MCwgCisgICAgMjQ1NjQsIDI0NTgyLCAyNDYwMSwgMjQ2MTQsIDI0NjI4LCAyNDY0NiwgMjQ2NjIsIDI0Njc5LCAyNDY5NywgMjQ3MDgsIAorICAgIDI0NzI3LCAyNDc0NCwgMjQ3NjQsIDI0NzgyLCAyNDc5NCwgMjQ4MDgsIDI0ODIyLCAyNDgzNCwgMjQ4NTEsIDI0ODcwLCAKKyAgICAyNDg4OCwgMjQ5MDAsIDI0OTE4LCAyNDkzNywgMTU4NTgsIDI0OTUwLCAyNDk3MCwgMjQ5ODIsIDExNDQ4LCAyNDk5NCwgCisgICAgMjQ5OTksIDI1MDA0LCAyNTAwOSwgMjUwMTUsIDI1MDIwLCAyNTAyNCwgMjUwMzEsIDI1MDM3LCAyNDM3LCAyNTA0MSwgCisgICAgMjUwNDcsIDI1MDUxLCAyNTA1NCwgMjUwNTgsIDI1MDYxLCAyNTA2OSwgMjUwNzUsIDIzOTM2LCAyNTA3OSwgMjUwODgsIAorICAgIDI1MDk5LCAyNTEwNSwgMjUxMTEsIDI1MTI2LCAyNTEzNSwgMjUxNDMsIDI1MTUwLCAyNTE1NSwgMjUxNTksIDI1MTY2LCAKKyAgICAyNTE3MiwgMjUxODEsIDI1MTg5LCAyNTE5NiwgMjUyMDYsIDI1MjE1LCAyNTIyNSwgMjUyMzAsIDI1MjM5LCAyNTI0OCwgCisgICAgMjUyNTksIDI1MjcwLCA0MTkyLCAyNTI4MCwgMjUyODQsIDI1Mjk0LCAyNTMwMiwgMjUzMTIsIDI1MzIzLCAyNTMyOCwgCisgICAgMjUzMzgsIDI1MzQ2LCAyNTM1MywgMjUzNTksIDI1MzY2LCAyNTM3MSwgMjM5NDYsIDI1Mzc1LCAyNTM4NCwgMjUzODgsIAorICAgIDI1MzkxLCAyNTM5NiwgMjU0MDQsIDI1NDExLCAyNTQyMCwgMjU0MjgsIDI1NDM2LCAyNTQ0NCwgMjU0NTQsIDI1NDYzLCAKKyAgICAyNTQ2OSwgMjU0NzUsIDI1NDc5LCAyMzk1MSwgMjM5NTYsIDI1NDgzLCAyNTQ5MywgMjU1MDMsIDI1NTEzLCAyNTUyMSwgCisgICAgMjU1MjgsIDI1NTM4LCAyNTU0NiwgMjU1NTQsIDI1NTYwLCAyNTU2OCwgODY1LCAyNTU3NywgMTYwNjUsIDYxNSwgMjU1OTEsIAorICAgIDI1NjAwLCAyNTYwOCwgMjU2MTksIDI1NjMwLCAyNTY0MCwgMjU2NDksIDI1NjYxLCAyNTY3MCwgMjU2NzksIDI1Njg2LCAKKyAgICAyNTY5MiwgMjU3MDIsIDI1NzExLCAyNTcyMCwgMjU3MjgsIDI1NzM4LCAyNTc0NiwgMjU3NTQsIDk4OTIsIDI1NzYwLCAKKyAgICAyNTc2MywgMjU3NjcsIDI1NzcyLCAyNTc3NywgMjU3ODEsIDEwNTg4LCAyMzk2OSwgMjM5NzQsIDI1Nzg5LCAyNTc5NSwgCisgICAgMjU4MDEsIDI1ODA2LCAyNTgxMSwgMjU4MTUsIDI1ODIzLCAyNTgyOSwgMjU4MzUsIDI1ODM5LCAzNjc1LCAyNTg0NywgCisgICAgMjU4NTIsIDI1ODU3LCAyNTg2MSwgMjU4NjUsIDEwNzAxLCAyNTg3MiwgMjU4ODAsIDI1ODk0LCAyNTkwMSwgMjU5MDcsIAorICAgIDEwNzEwLCAxMDcxNiwgMjU5MTUsIDI1OTIzLCAyNTkzMCwgMjU5MzUsIDI1OTQwLCAyMzk3OSwgMjU5NDYsIDI1OTU3LCAKKyAgICAyNTk2MSwgMjU5NjYsIDI2NDAsIDI1OTcxLCAyNTk4MiwgMjU5ODgsIDI1OTkzLCAyNTk5NywgMjYwMDEsIDI2MDA0LCAKKyAgICAyNjAxMSwgMjYwMTgsIDI2MDI0LCAyNjAzMSwgMjYwMzcsIDI2MDQxLCAyMzk4NCwgMjYwNDYsIDI2MDUwLCAyNjA1NCwgCisgICAgMTQzMSwgODU0NCwgMjYwNTksIDI2MDY0LCAyNjA2OSwgMjYwNzQsIDI2MDc5LCAyNjA4NCwgMjYwODksIDI2MDk0LCAKKyAgICAyNjA5OSwgMjYxMDQsIDI2MTA5LCAyNjExNCwgMjYxMTksIDI2MTI0LCAyNjEzMCwgMjYxMzUsIDI2MTQwLCAyNjE0NSwgCisgICAgMjYxNTAsIDI2MTU1LCAyNjE2MCwgMjYxNjYsIDI2MTcxLCAyNjE3NiwgMjYxODEsIDI2MTg2LCAyNjE5MSwgMjYxOTYsIAorICAgIDI2MjAxLCAyNjIwNywgMjYyMTMsIDI2MjE4LCAyNjIyNCwgMjYyMjksIDI2MjM0LCA1LCAyNjI0MCwgMjYyNDQsIDI2MjQ4LCAKKyAgICAyNjI1MiwgMjYyNTcsIDI2MjYxLCAyNjI2NSwgMjYyNjksIDI2MjczLCAyNjI3OCwgMjYyODIsIDI2Mjg3LCAyNjI5MSwgCisgICAgMjYyOTQsIDI2Mjk4LCAyNjMwMywgMjYzMDcsIDI2MzEyLCAyNjMxNiwgMjYzMjAsIDI2MzI0LCAyNjMyOSwgMjYzMzMsIAorICAgIDI2MzM3LCAyNjM0NywgMjYzNTIsIDI2MzU2LCAyNjM2MCwgMjYzNjUsIDI2MzcwLCAyNjM3OSwgMjYzODQsIDI2Mzg5LCAKKyAgICAyNjM5MywgMjYzOTcsIDI2NDEwLCAyNjQyMiwgMjY0MzEsIDI2NDQwLCAyNjQ0NSwgMjY0NTEsIDI2NDU2LCAyNjQ2MCwgCisgICAgMjY0NjQsIDI2NDc0LCAyNjQ4MywgMjY0OTEsIDI2NDk3LCAyNjUwMiwgMjY1MDYsIDI2NTEzLCAyNjUyMywgMjY1MzIsIAorICAgIDI2NTQwLCAxMTc3MCwgMjY1NDgsIDI2NTU2LCAyNjU2NSwgMjY1NzQsIDI2NTgyLCAyNjU5MiwgMjY1OTcsIDI2NjAxLCAKKyAgICAyNjYwNSwgMjY2MDgsIDI2NjEwLCAyNjYxNCwgMjY2MTgsIDI2NjIzLCAyNjYyOCwgMjY2MzIsIDI2NjM2LCAyNjYzOSwgCisgICAgMjY2NDMsIDI2NjQ2LCAyNjY1MCwgMjY2NTMsIDI2NjU2LCAyNjY2MCwgMjY2NjYsIDI2NjcwLCAyNjY3NCwgMjY2NzgsIAorICAgIDI2NjgzLCAyNjY4OCwgMjY2OTMsIDI2Njk3LCAyNjcwMCwgMjY3MDUsIDI2NzExLCAyNjcxNiwgMjY3MjIsIDI2NzI3LCAKKyAgICAyNjczMSwgMjY3MzcsIDI2NzQxLCAyNjc0NSwgMjY3NTAsIDI2NzU0LCAyNjc1OSwgMjY3NjQsIDI2NzY4LCAyNjc3MiwgCisgICAgMjY3NzksIDI2NzgzLCAyNjc4NiwgMjY3OTAsIDI2Nzk0LCAyNjgwMCwgMjY4MDYsIDI2ODEwLCAyNjgxNCwgMjY4MTksIAorICAgIDI2ODI2LCAyNjgzMiwgMjY4MzYsIDI2ODQ1LCAyNjg0OSwgMjY4NTMsIDI2ODU2LCAyNjg2MiwgMjY4NjcsIDI2ODczLCAKKyAgICAxNDc1LCAxODA2LCAyNjg3OCwgMjY4ODMsIDI2ODg4LCAyNjg5MywgMjY4OTgsIDI2OTAzLCAyNjkwOCwgMjE3NCwgMjIyMCwgCisgICAgMjY5MTMsIDI2OTE2LCAyNjkyMCwgMjY5MjQsIDI2OTI5LCAyNjkzMywgMTYwNzcsIDI2OTM3LCAyNjk0MiwgMjY5NDcsIAorICAgIDI2OTUxLCAyNjk1NCwgMjY5NTksIDI2OTYzLCAyNjk2OCwgMjY5NzIsIDE2MDgxLCAyNjk3NywgMjY5ODAsIDI2OTgzLCAKKyAgICAyNjk4NywgMjY5OTIsIDI2OTk2LCAyNzAwOSwgMjcwMTMsIDI3MDE2LCAyNzAyNCwgMjcwMzMsIDI3MDQwLCAyNzA0NSwgCisgICAgMjcwNTEsIDI3MDU3LCAyNzA2NSwgMjcwNzIsIDI3MDc5LCAyNzA4MywgMjcwODcsIDI3MDkxLCAyNzA5NiwgMjcxMDEsIAorICAgIDI3MTA1LCAyNzExMywgMjcxMTgsIDI3MTMwLCAyNzE0MSwgMjcxNDYsIDI3MTUwLCAyNzE1NywgMjcxNjEsIDI3MTY2LCAKKyAgICAyNzE3MiwgMjcxNzUsIDI3MTgwLCAyNzE4NSwgMjcxODksIDI3MTkzLCAyNzE5NiwgMjcyMDIsIDgyNDgsIDIzNTAsIAorICAgIDI3MjA2LCAyNzIxMSwgMjcyMjcsIDEwMTk4LCAyNzI0NywgMjcyNTYsIDI3MjcyLCAyNzI3NiwgMjcyODMsIDI3Mjg2LCAKKyAgICAyNzI5MiwgMjczMDIsIDI3MzA4LCAyNzMxNywgMjczMzIsIDI3MzQ0LCAyNzM1NSwgMjczNjMsIDI3MzcyLCAyNzM3OCwgCisgICAgMjczODcsIDI3Mzk3LCAyNzQwNywgMjc0MTgsIDI3NDI5LCAyNzQzOSwgMjc0NDgsIDI3NDU1LCAyNzQ2NCwgMjc0NzIsIAorICAgIDI3NDc5LCAyNzQ4NywgMjc0OTQsIDI3NTAxLCAyNzUxNCwgMjc1MjEsIDI3NTI5LCAyNzUzNiwgMjc1NDIsIDI3NTQ3LCAKKyAgICAyNzU1NiwgMjc1NjIsIDI3NTY3LCAyNzU3NSwgMjc1ODIsIDI3NTg5LCAyNTMwNCwgMjc2MDEsIDI3NjEzLCAyNzYyNywgCisgICAgMjc2MzUsIDI3NjQyLCAyNzY1NCwgMjc2NjMsIDI3NjcyLCAyNzY4MCwgMjc2ODgsIDI3Njk2LCAyNzcwMywgMjc3MDksIAorICAgIDI3NzE4LCAyNzcyNiwgMjc3MzYsIDI3NzQ1LCAyNzc1NSwgMjc3NjQsIDI3NzczLCAyNzc4MSwgMjc3ODYsIDI3NzkwLCAKKyAgICAyNzc5MywgMjc3OTcsIDI3ODAxLCAyNzgwNSwgMjc4MDksIDI3ODEzLCAyNzgxOSwgMjc4MjUsIDI3ODMzLCAxNjEzOSwgCisgICAgMjc4NDAsIDI3ODQ1LCAyNzg1MiwgMjc4NTgsIDI3ODY1LCAxNjE0NywgMjc4NzIsIDI3ODc1LCAyNzg4NywgMjc4OTUsIAorICAgIDI3OTAxLCAyNzkwNiwgMjc5MTAsIDI3OTIxLCAxMDY1MSwgMjc5MzEsIDI3OTM5LCAyNzk0OSwgMjc5NTgsIDI3OTY1LCAKKyAgICAyNzk3MiwgMjc5ODAsIDI3OTg0LCAxNjE1OCwgMjc5ODcsIDI3OTk0LCAyNzk5OCwgMjgwMDQsIDI4MDA3LCAyODAxNCwgCisgICAgMjgwMjAsIDI4MDI3LCAyODAzMywgMjgwMzcsIDI4MDQyLCAyODA0NiwgMjgwNTUsIDI4MDYyLCAyODA2OCwgODMwNiwgCisgICAgMjgwNzUsIDI4MDgzLCAyODA5MCwgMjgwOTYsIDI4MTAxLCAyODEwNywgMjgxMTMsIDI4MTIxLCAyODEyNywgMjgxMzEsIAorICAgIDI4MTM0LCAyODEzNiwgMjc3OTgsIDI4MTQ1LCAyODE1MSwgMjgxNTcsIDI4MTY3LCAyODE3MiwgMjgxNzksIDI4MTg1LCAKKyAgICAyODE5MCwgMjgxOTUsIDI4MjAwLCAyODIwNCwgMjgyMDksIDI4MjE2LCAyODIyMiwgMjgyMzEsIDI4MjM1LCAyODI0MiwgCisgICAgMjgyNDgsIDI4MjU3LCA0Mzc4LCAyODI2MywgMjgyNjksIDI4Mjc0LCAyODI4MSwgMjgyOTIsIDI4Mjk3LCAyODMwMSwgCisgICAgMjgzMTEsIDI4MzE3LCAyODMyMSwgMjgzMjYsIDI4MzM2LCAyODM0NSwgMjgzNDksIDI4MzU2LCAyODM2NCwgMjgzNzEsIAorICAgIDI4Mzc3LCAyODM4MiwgMjgzOTAsIDI4Mzk3LCAyODQwMiwgMjg0MDksIDI4NDIxLCAyODQzMCwgMjg0MzQsIDE0MjEyLCAKKyAgICAyODQ0MiwgMjg0NTIsIDI4NDU2LCAyNzAyMCwgMjg0NjcsIDI4NDcyLCAyODQ3NiwgMjg0ODMsIDI4NDkwLCAyMzY3MCwgCisgICAgMjc3MjMsIDI4NDk1LCAyODQ5OSwgMjg1MDIsIDI0NzE0LCAyODUwNywgMjg1MjEsIDI4NTM3LCAyODU1NSwgMjg1NzQsIAorICAgIDI4NTkxLCAyODYwOSwgMjQ3MzMsIDI4NjI2LCAyODY0NiwgMjQ3NTAsIDI4NjU4LCAyODY3MCwgMTcxNzgsIDI4NjgyLCAKKyAgICAyNDc3MCwgMjg2OTYsIDI4NzA4LCAxMTQ2MSwgMjg3MjIsIDI4NzI3LCAyODczMiwgMjg3MzcsIDI4NzQzLCAyODc0OSwgCisgICAgMjg3NTUsIDI4NzU5LCAyODc2NywgMjg3NzQsIDI4Nzc5LCAyODc4OSwgMjg3OTUsIDExMDU5LCAyODgwMSwgMjg4MDMsIAorICAgIDI4ODA4LCAyODgxNiwgMjg4MjAsIDI4MjEyLCAyODgyNiwgMjg4MzMsIDEyNjAxLCAxMjYxMSwgMjg4NDAsIDI4ODUwLCAKKyAgICAyODg1NSwgMjg4NTksIDI4ODYyLCAyODg2OCwgMjg4NzYsIDI4ODg4LCAyODg5OCwgMjg5MTQsIDI4OTI3LCAyODk0MSwgCisgICAgMTcxOTYsIDI4OTU1LCAyODk2MiwgMjg5NjYsIDI4OTY5LCAyODk3NCwgMjg5NzgsIDI4OTg1LCAyODk5MiwgMjg5OTksIAorICAgIDI5MDA5LCAyOTAxNCwgMjkwMTksIDI5MDI0LCAyOTAzMiwgMjkwNDAsIDI5MDQ1LCAyOTA1NCwgMjkwNTksIDMzNTMsIAorICAgIDI5MDYzLCAyOTA2NiwgMjkwNjksIDI5MDc0LCAyOTA4MSwgMjkwODYsIDI5MTAyLCAyOTExMCwgMjkxMTgsIDk5NjYsIAorICAgIDI5MTI2LCAyOTEzMSwgMjkxMzUsIDI5MTQxLCAyOTE0NiwgMjkxNTIsIDI5MTU1LCAyOTE2MSwgMjkxNzMsIDI5MTgxLCAKKyAgICAyOTE4OCwgMjkxOTQsIDI5MjAxLCAyOTIxMiwgMjkyMjYsIDI5MjM5LCAyOTI0NSwgMjkyNTQsIDI5MjYwLCAyOTI2OSwgCisgICAgMjkyODEsIDI5MjkyLCAyOTMwMiwgMjkzMTEsIDI5MzIwLCAyOTMyOCwgMjkzMzksIDgyODgsIDI5MzQ2LCAyOTM1MywgCisgICAgMjkzNTksIDI5MzY0LCAyOTM3MCwgMjkzNzcsIDI5Mzg3LCAyOTM5NywgMjk0MDYsIDI5NDEyLCAyOTQxOSwgMjk0MjQsIAorICAgIDI5NDMyLCAyOTQzOSwgMjk0NDcsIDI5NDU1LCAyOTQ2NywgNjU2MywgOTk1LCAyOTQ3NCwgMjk0ODMsIDI5NDkxLCAyOTQ5NywgCisgICAgMjk1MDMsIDI5NTA4LCAyOTUxMiwgMjk1MTUsIDI5NTIxLCAyOTUyOCwgMjk1MzMsIDI5NTM4LCAyOTU0MywgMjk1NDcsIAorICAgIDI5NTU5LCAyOTU3MCwgMjk1NzksIDI5NTg3LCAxNjMyMywgMjk1OTIsIDI5NTk3LCAyOTYwMywgMjk2MDksIDEyNTk0LCAKKyAgICA5MDU4LCAyOTYxNCwgMjk2MTgsIDI5NjIyLCAyOTYyNSwgMjk2MjgsIDI5NjM0LCAyOTY0MiwgMjk2NTAsIDI5NjU0LCAKKyAgICAyOTY1OCwgMjk2NjMsIDI5NjY2LCAyOTY3NSwgMjk2NzksIDI5NjgyLCAyOTY5MCwgMjk3MDEsIDI5NzA1LCAyOTcxMSwgCisgICAgMjk3MTcsIDI5NzIxLCAyOTcyNywgMjk3MzUsIDI5NzU3LCAyOTc4MSwgMjk3OTAsIDI5Nzk3LCAyOTgwNCwgMjk4MTAsIAorICAgIDI5ODE4LCAyOTgyNCwgMjk4MjksIDI5ODQwLCAyOTg1OCwgMjk4NjUsIDI5ODczLCAyOTg3NywgMjk4ODIsIDI5ODkxLCAKKyAgICAyOTkwNCwgMjk5MTIsIDI5OTI0LCAyOTkzNSwgMjk5NDYsIDI5OTU2LCAyOTk3MCwgMjk5NzksIDI5OTg3LCAyOTk5OSwgCisgICAgMTAyMTUsIDMwMDEwLCAzMDAyMSwgMzAwMzMsIDMwMDQzLCAzMDA1MiwgMzAwNTcsIDMwMDYxLCAzMDA2OSwgMzAwODAsIAorICAgIDMwMDkwLCAzMDA5NSwgMzAwOTksIDMwMTAyLCAzMDEwNSwgMzAxMTMsIDMwMTIxLCAzMDEzMCwgMzAxNDAsIDMwMTQ5LCAKKyAgICAzMDE1NSwgMzAxNjksIDI3MDIsIDMwMTkxLCAzMDIwMiwgMzAyMTEsIDMwMjIxLCAzMDIzMywgMzAyNDIsIDMwMjUxLCAKKyAgICAzMDI2MSwgMzAyNjksIDMwMjc3LCAzMDI4NiwgMzAyOTEsIDMwMzAyLCAzMDMwNywgMzAzMTgsIDMwMzIyLCAzMDMzMiwgCisgICAgMzAzNDEsIDMwMzQ5LCAzMDM1OSwgMzAzNjksIDMwMzc3LCAzMDM4NiwgMzAzOTMsIDMwNDAxLCAzMDQwOCwgMzA0MTcsIAorICAgIDMwNDI2LCAzMDQzMCwgMzA0MzgsIDMwNDQ1LCAzMDQ1MywgMzA0NjAsIDMwNDcxLCAzMDQ4NiwgMzA0OTMsIDMwNDk5LCAKKyAgICAzMDUwOSwgMzA1MTgsIDMwNTI0LCAzMDUzNSwgMzA1MzksIDMwNTQ2LCAzMDU1MCwgMzA1NTYsIDE1MjY1LCAzMDU2MiwgCisgICAgMzA1NjYsIDMwNTcxLCAzMDU3NywgMzA1ODQsIDMwNTg4LCAzMDU5MiwgMzA2MDAsIDMwNjA4LCAzMDYxNCwgMzA2MjMsIAorICAgIDMwNjMwLCAzMDYzNSwgMzA2NDAsIDMwNjUwLCAyNTM3MywgMzA2NTQsIDMwNjU3LCAzMDY2MiwgMzA2NjcsIDMwNjcyLCAKKyAgICAzMDY3NywgMzA2ODIsIDMwNjg3LCAzMDY5MiwgMzA2OTcsIDMwNzAzLCAzMDcwOCwgMzA3MTMsIDMwNzE5LCAxMTk5LCA2NjAsIAorICAgIDMwNzI0LCAzMDczMywgMjM5OCwgMzA3NDAsIDMwNzQ1LCAzMDc0OSwgMzA3NTUsIDEyNDgsIDU3OCwgMjkwLCAzMDc2MCwgCisgICAgMzA3NjksIDMwNzc3LCAzMDc4NiwgMzA3OTQsIDMwODA1LCAzMDgxMywgMzA4MjIsIDMwODMwLCAzMDgzNSwgMTA3OTcsIAorICAgIDMwODM5LCAzMDg0NywgMzA4NTUsIDMwODYwLCAxNjA5NCwgMzgyNCwgMzA4NjYsIDMwODcyLCAzMDg3OCwgNjE0OCwgCisgICAgMzA4ODMsIDMwODg3LCAzMDg5MywgMzA4OTcsIDMwOTAzLCAzMDkwOCwgMzA5MTUsIDE0NDEsIDMwOTIxLCAzMDkyOCwgCisgICAgMTM0OCwgNjE1NiwgMzA5MzIsIDMwOTQyLCAzMDk1MCwgMzA5NTYsIDMwOTY2LCAzMDk3NSwgMzA5ODMsIDMwOTg5LCAKKyAgICAzMDk5NywgMzEwMDQsIDEyMTM2LCAzMTAxMCwgMzEwMTcsIDMxMDIyLCAzMTAyOSwgMTQ5NCwgMjE5LCAyMTczLCAzMTAzNSwgCisgICAgMzEwNDEsIDMxMDQ4LCAzMTA1OSwgMzEwNzAsIDMxMDc4LCAzMTA4NSwgMzEwOTUsIDMxMTA0LCAzMTExMiwgMzExMjEsIAorICAgIDMxMTI4LCAzMTEzNSwgMzExNDgsIDMxMTU1LCAzMTE2MSwgMzExNzIsIDMxMTkxLCAxMjUzLCAzMTE5NiwgMzEyMDEsIAorICAgIDMxMjA5LCAzNzQyLCAzMTIxMywgMzEyMTgsIDMxMjIyLCAzMTIyNiwgMTQ0NSwgMjY2MzcsIDMxMjM2LCAzMTI0MCwgCisgICAgMzEyNDUsIDMxMjQ5LCAzNjE5LCAzMTI1NSwgMzEyNjMsIDMxMjcwLCAzMTI4MSwgMzEyODksIDMxMjk3LCAzNzQzLCAzNDYsIAorICAgIDMxMzAyLCAzMTMxMCwgMzEzMTgsIDMxMzI1LCAzMTMzMSwgMzEzMzYsIDIyNDIsIDExNjI4LCAzMTM0MywgMzEzNDksIAorICAgIDI4MDM4LCAyODI4NywgMzEzNTUsIDU3NCwgMTA2LCAzMTM1OSwgMzEzNjMsIDMxMzY5LCA2NjMsIDk4NDEsIDMxMzc0LCAKKyAgICAzMTM4MSwgMzEzODcsIDMxMzkxLCAxNjM5LCAzMTM5NCwgMzEzOTgsIDE2NTc2LCAzMTQwMSwgMzE0MDYsIDMxNDEzLCAKKyAgICAzMTQxOSwgMzE0MjQsIDMxNDMyLCAzMTQzOSwgMzE0NDUsIDI0MTMyLCAzMTQ0OSwgMzE0NTMsIDMxNDU3LCAzODEzLCAKKyAgICAxODE4MCwgMzE0NjEsIDMxNDY2LCAzMTQ3MCwgMzE0NzMsIDMxNDgxLCAzMTQ4OSwgMzE0OTQsIDMxNTAyLCAzMTUwNSwgCisgICAgMzE1MTIsIDMxNTIyLCAzMTUzNCwgMzE1MzksIDMxNTQzLCAzMTU1MSwgMzE1NTgsIDMxNTY0LCAzMTU3MSwgMzE1NzgsIAorICAgIDMxNTgxLCAzMTU4NSwgMzE1ODksIDE0NDksIDMxNTk5LCAzMTYwMSwgMzE2MDYsIDMxNjEyLCAzMTYxOCwgMzE2MjMsIAorICAgIDMxNjI4LCAzMTYzMywgMzE2MzgsIDMxNjQzLCAzMTY0OCwgMzE2NTMsIDMxNjU4LCAzMTY2MywgMzE2NjgsIDMxNjczLCAKKyAgICAzMTY3OCwgMzE2ODMsIDMxNjg4LCAzMTY5NCwgMzE3MDAsIDMxNzA2LCAzMTcxMiwgMzE3MTcsIDMxNzIyLCAzMTcyNywgCisgICAgMzE3MzMsIDMxNzM4LCAzMTc0MywgMzE3NDgsIDMxNzU0LCAzMTc1OSwgMzE3NjUsIDMxNzcwLCAzMTc3NSwgMzE3ODAsIAorICAgIDMxNzg1LCAzMTc5MSwgMzE3OTYsIDMxODAyLCAzMTgwNywgMzE4MTIsIDMxODE3LCAzMTgyMiwgMzE4MjgsIDMxODMzLCAKKyAgICAzMTgzOSwgMzE4NDQsIDMxODQ5LCAzMTg1NCwgMzE4NTksIDMxODY0LCAzMTg2OSwgMzE4NzQsIDMxODc5LCAzMTg4NCwgCisgICAgMzE4OTAsIDMxODk2LCAzMTkwMiwgMzE5MDcsIDMxOTEyLCAzMTkxNywgMzE5MjIsIDMxOTI4LCAzMTkzNCwgMzE5NDAsIAorICAgIDMxOTQ2LCAzMTk1MiwgMzE5NTgsIDMxOTYzLCAzMTk2OSwgMzE5NzQsIDMxOTc5LCAzMTk4NCwgMzE5ODksIDMxOTk1LCAKKyAgICAyNDgyLCAzMjAwMCwgMjQ4OSwgMjQ5NiwgMjc5MywgMzIwMDUsIDI1MDIsIDI1MTIsIDMyMDExLCAzMjAxNSwgMzIwMjAsIAorICAgIDMyMDI1LCAzMjAzMSwgMzIwMzYsIDMyMDQxLCAzMjA0NSwgMzIwNTAsIDMyMDU2LCAzMjA2MSwgMzIwNjYsIDMyMDcxLCAKKyAgICAzMjA3NywgMzIwODIsIDMyMDg2LCAzMjA5MCwgMzIwOTUsIDMyMTAwLCAzMjEwNSwgMzIxMTAsIDMyMTE1LCAzMjEyMSwgCisgICAgMzIxMjcsIDMyMTMyLCAzMjEzNiwgMzIxNDEsIDMyMTQ3LCAzMjE1MSwgMzIxNTYsIDMyMTYxLCAzMjE2NiwgMzIxNzEsIAorICAgIDMyMTc1LCAzMjE3OCwgMzIxODMsIDMyMTg4LCAzMjE5MywgMzIxOTgsIDMyMjAzLCAzMjIwOSwgMzIyMTUsIDMyMjIwLCAKKyAgICAzMjIyNSwgMzIyMzAsIDMyMjM0LCAzMjIzOSwgMzIyNDQsIDMyMjQ5LCAzMjI1NCwgMzIyNTksIDMyMjY0LCAzMjI2OCwgCisgICAgMzIyNzMsIDMyMjc4LCAzMjI4MywgMzIyODcsIDMyMjkxLCAzMjI5NSwgMzIzMDAsIDMyMzA4LCAzMjMxMywgMzIzMTgsIAorICAgIDMyMzI0LCAzMjMzMCwgMzIzMzYsIDMyMzQxLCAzMjM0NSwgMzIzNDgsIDMyMzUzLCAzMjM1OCwgMzIzNjIsIDMyMzY3LCAKKyAgICAzMjM3MiwgMzIzNzYsIDMyMzgxLCAzMjM4NSwgMzIzODgsIDMyMzkzLCAzOTE0LCAxODkwNiwgMzIzOTgsIDMyNDAzLCAKKyAgICAzMjQwOCwgMzI0MTYsIDIyOTU5LCAzMDkyNSwgOTUxOCwgMzI0MjEsIDMyNDI2LCAzMjQzMCwgMzI0MzUsIDMyNDM5LCAKKyAgICAzMjQ0MywgMzI0NDgsIDMyNDUyLCAzMjQ1NSwgMzI0NTgsIDMyNDYyLCAzMjQ2NywgMzI0NzEsIDMyNDc5LCAzMjQ4MywgCisgICAgMzI0ODYsIDMyNDkxLCAzMjQ5NSwgMzI0OTksIDMyNTA0LCAzMjUwOSwgMzI1MTMsIDMyNTE5LCAzMjUyNCwgMzI1MjksIAorICAgIDMyNTM2LCAzMjU0MywgMzI1NDcsIDMyNTUwLCAzMjU1NiwgMzI1NjUsIDMyNTcyLCAzMjU4MCwgMzI1ODcsIDMyNTkxLCAKKyAgICAzMjU5NiwgMzI2MDAsIDMyNjA0LCAzMjYxMCwgMzI2MTYsIDMyNjIwLCAzMjYyNiwgMzI2MzEsIDMyNjM2LCAzMjY0MCwgCisgICAgMzI2NDcsIDMyNjUzLCAzMjY1OSwgMzI2NjUsIDMyNjcxLCAzMjY3OCwgMzI2ODQsIDMyNjkwLCAzMjY5NiwgMzI3MDIsIAorICAgIDMyNzA4LCAzMjcxNCwgMzI3MjAsIDMyNzI3LCAzMjczMywgMzI3NDAsIDMyNzQ2LCAzMjc1MiwgMzI3NTgsIDMyNzY0LCAKKyAgICAzMjc3MCwgMzI3NzYsIDMyNzgyLCAzMjc4OCwgMzI3OTQsIDEyNDc5LCAzMjgwMCwgMzI4MDYsIDMyODExLCAzMjgxNiwgCisgICAgMzI4MjEsIDMyODI0LCAzMjgzMCwgMzI4MzgsIDMyODQzLCAzMjg0NywgMzI4NTIsIDMyODU4LCAzMjg2NywgMzI4NzMsIAorICAgIDMyODc4LCAzMjg4MywgMzI4ODgsIDMyODkyLCAzMjg5NywgMzI5MDIsIDMyOTA3LCAzMjkxMiwgMzI5MTcsIDMyOTI0LCAKKyAgICAzMjkzMSwgMzI5MzcsIDMyOTQzLCAzMjk0OCwgMTc4MjIsIDMyOTU1LCAzMjk2MSwgMzI5NjgsIDMyOTc0LCAzMjk4MCwgCisgICAgMzI5ODUsIDMyOTkzLCAzMjk5OCwgMTAzNzIsIDMzMDAyLCAzMzAwNywgMzMwMTIsIDMzMDE4LCAzMzAyMywgMzMwMjgsIAorICAgIDMzMDMyLCAzMzAzNywgMzMwNDIsIDMzMDQ4LCAzMzA1MywgMzMwNTgsIDMzMDYzLCAzMzA2NywgMzMwNzIsIDMzMDc3LCAKKyAgICAzMzA4MSwgMzMwODYsIDMzMDkxLCAzMzA5NSwgMzMxMDAsIDMzMTA0LCAzMzEwOSwgMzMxMTQsIDMzMTE5LCAzMzEyMywgCisgICAgMzMxMjgsIDMzMTMyLCAzMzEzNiwgMTY2ODIsIDMzMTQxLCAzMzE1MCwgMzMxNTYsIDMzMTYyLCAzMzE3MSwgMzMxNzksIAorICAgIDMzMTg4LCAzMzE5NiwgMzMyMDEsIDMzMjA1LCAzMzIxMiwgMzMyMTgsIDMzMjI2LCAzMzIzMCwgMzMyMzMsIDMzMjM4LCAKKyAgICAzMzI0MiwgMzMyNTEsIDMzMjU5LCAzMzI3NywgMzMyODMsIDE0OTMsIDMzMjg5LCAzMzI5MiwgMzMyOTYsIDI0MjM4LCAKKyAgICAyNDI0NCwgMzMzMDIsIDMzMzA2LCAzMzMxNywgMzMzMjgsIDMzMzM5LCAzMzM1MSwgMzMzNTUsIDMzMzYyLCAzMzM2OSwgCisgICAgMzMzNzQsIDMzMzc4LCA2MjA0LCA5MjgsIDIyOTU4LCAzMzM4NiwgMzMzOTEsIDMzMzk1LCAzMzQwMCwgMzM0MDQsIDMzNDEwLCAKKyAgICAzMzQxNSwgMzM0MjEsIDMzNDI2LCAzMzQzMiwgMzM0MzcsIDMzNDQzLCAzMzQ0OCwgMzM0NTQsIDMzNDYwLCAzMzQ2NiwgCisgICAgMzM0NzEsIDMzNDI3LCAzMzQzMywgMzM0NzUsIDMzNDgwLCAzMzQ4NiwgMzM0OTEsIDMzNDk3LCAzMzUwMiwgMzM1MDgsIAorICAgIDMzNTEzLCAzMzQzOCwgMTEzMTQsIDMzNTE3LCAzMzQ0OSwgMzM0NTUsIDMzNDYxLCAyODg1LCAzNTMzLCAzMzUyMywgCisgICAgMzM1MjYsIDMzNTMxLCAzMzUzNywgMzM1NDMsIDMzNTQ5LCAzMzU1NiwgMzM1NjIsIDMzNTY4LCAzMzU3NCwgMzM1ODAsIAorICAgIDMzNTg2LCAzMzU5MiwgMzM1OTgsIDMzNjA0LCAzMzYxMCwgMzM2MTYsIDMzNjIyLCAzMzYyOCwgMzM2MzUsIDMzNjQxLCAKKyAgICAzMzY0NywgMzM2NTMsIDMzNjU5LCAzMzY2NSwgMzM2NjgsIDMzNjczLCAzMzY3NiwgMzM2ODMsIDMzNjg4LCAzMzY5NiwgCisgICAgMzM3MDEsIDMzNzA2LCAzMzcxMiwgMzM3MTcsIDMzNzIyLCAzMzcyNiwgMzM3MzEsIDMzNzM3LCAzMzc0MiwgMzM3NDgsIAorICAgIDMzNzUzLCAzMzc1OSwgMzM3NjQsIDMzNzcwLCAzMzc3NiwgMzM3ODAsIDMzNzg1LCAzMzc5MCwgMzM3OTUsIDMzODAwLCAKKyAgICAzMzgwNCwgMzM4MDksIDMzODE0LCAzMzgxOSwgMzM4MjUsIDMzODMxLCAzMzgzNywgMzM4NDMsIDMzODQ4LCAzMzg1MiwgCisgICAgMzM4NTUsIDMzODYxLCAzMzg2NywgMzM4NzYsIDMzODg0LCAzMzg5MSwgMzM4OTYsIDMzOTAwLCAzMzkwNCwgMzM5MDksIAorICAgIDE2NTMwLCAzMzkxNCwgMzM5MjIsIDMzOTI4LCAzODY2LCAxMzU4LCAzMzkzMywgMzM5MzcsIDgzNTksIDMzOTQzLCAzMzk0OSwgCisgICAgMzM5NTYsIDgzNjgsIDMzOTYwLCAzMzk2NiwgMzM5NzMsIDMzOTc5LCAzMzk4OCwgMzM5OTYsIDkyNDQsIDM0MDA4LCAKKyAgICAzNDAxMiwgMzQwMTksIDM0MDI1LCAzNDAzMCwgMzQwMzQsIDM0MDM4LCAzNDA0MSwgMzQwNTEsIDM0MDYwLCAzNDA2OCwgCisgICAgMzM0MjgsIDM0MDczLCAzNDA4MywgMzQwOTMsIDM0MTAzLCAzNDEwOSwgMzQxMTQsIDM0MTI0LCAzNDEyOSwgMzQxNDIsIAorICAgIDM0MTU2LCAzNDE2NywgMzQxNzksIDM0MTkxLCAzNDIwNSwgMzQyMTgsIDM0MjMwLCAzNDI0MiwgMTU4OTksIDM0MjU2LCAKKyAgICAzNDI2MSwgMzQyNjYsIDM0MjcwLCAzNDI3NCwgMzQyNzgsIDE3OTUsIDI5MjkwLCAzNDI4MiwgMzQyODcsIDMzNDc2LCAKKyAgICAzNDI5MiwgMzQyOTUsIDM0MzAwLCAzNDMwNSwgMzQzMTAsIDM0MzE2LCAzNDMyMiwgMTA5NzQsIDM0MzI3LCAzNDMzMywgCisgICAgMzQzNDAsIDE3MTMwLCAzNDM0NiwgMzQzNTEsIDM0MzU2LCAzNDM2MCwgMzQzNjUsIDM0MzcwLCAzMzQ4MSwgMzQzNzUsIAorICAgIDM0MzgwLCAzNDM4NSwgMzQzOTEsIDMzNDg3LCAzNDM5NiwgMzQzOTksIDM0NDA2LCAzNDQxNCwgMzQ0MjAsIDM0NDI2LCAKKyAgICAzNDQzMiwgMzQ0NDMsIDM0NDQ4LCAzNDQ1NSwgMzQ0NjIsIDM0NDY5LCAzNDQ3NywgMzQ0ODYsIDM0NDk1LCAzNDUwMSwgCisgICAgMzQ1MDcsIDM0NTE1LCAzMzQ5MiwgMzQ1MjAsIDM0NTI2LCAzNDUzMiwgMzM0OTgsIDM0NTM3LCAzNDU0MiwgMzQ1NTAsIAorICAgIDM0NTU4LCAzNDU2NCwgMzQ1NzEsIDM0NTc3LCAzNDU4NCwgMzQ1OTEsIDM0NTk3LCAzNDYwNSwgMzQ2MTUsIDM0NjIyLCAKKyAgICAzNDYyOCwgMzQ2MzMsIDM0NjM5LCAzNDY0NCwgMzQ2NDksIDM0NjU2LCAzNDY2NSwgMzQ2NzMsIDM0Njc4LCAzNDY4NCwgCisgICAgMzQ2OTEsIDM0Njk5LCAzNDcwNSwgMzQ3MTAsIDM0NzE2LCAzNDcyNSwgMzQ3MzIsIDMwMTM1LCAzNDczOCwgMzQ3NDIsIAorICAgIDM0NzQ3LCAzNDc1NiwgMzQ3NjEsIDM0NzY2LCAzNDc3MSwgMTM1NDgsIDM0Nzc5LCAzNDc4NCwgMzQ3ODksIDM0Nzk0LCAKKyAgICAzNDc5OCwgMzQ4MDMsIDM0ODA4LCAzNDgxNSwgMzQ4MjAsIDM0ODI1LCAzNDgzMCwgMzM1MDMsIDIyODk1LCAzNDgzNiwgCisgICAgMjU1OCwgMTQ0LCAzNDgzOSwgMzQ4NDIsIDM0ODQ2LCAzNDg1MCwgMzQ4NjAsIDM0ODY4LCAzNDg3NSwgMzQ4NzksIDM0ODgyLCAKKyAgICAzNDg5MCwgMzQ4OTcsIDM0OTA0LCAzNDkxMywgMzQ5MTcsIDM0OTIwLCAzNDkyNiwgMzQ5MzAsIDM0OTM4LCAzNDk0NiwgCisgICAgMzQ5NTAsIDM0OTU0LCAzNDk1NywgMzQ5NjMsIDM0OTcwLCAzNDk3NCwgMzQ5NzgsIDM0OTg1LCAzNDk5MywgMzM0MzksIAorICAgIDM1MDAwLCAzNTAwOCwgMzUwMTMsIDExMDM0LCA2MjMsIDM2OSwgMzUwMjUsIDM1MDMwLCAzNTAzNSwgMzUwNDEsIDM1MDQ2LCAKKyAgICAzNTA1MSwgMzg4NywgMzUwNTYsIDM1MDU5LCAzNTA2NCwgMzUwNjksIDM1MDc0LCAzNTA3OSwgMzUwODQsIDM1MDkxLCAKKyAgICAyNDM1NiwgMzUwOTYsIDM1MTAxLCAzNTEwNiwgMzUxMTEsIDM1MTE2LCAzNTEyMiwgMzUxMjcsIDM1MTMzLCAzMzY3OSwgCisgICAgMzUxMzksIDM1MTQ0LCAzNTE1MCwgMzUxNTYsIDM1MTY2LCAzNTE3MSwgMzUxNzYsIDM1MTgwLCAzNTE4NSwgMzUxOTAsIAorICAgIDM1MTk1LCAzNTIwMCwgMzUyMTMsIDM1MjE4LCAyNDAxOSwgMTgyNTUsIDM5MDAsIDM1MjIyLCAzNTIyOCwgMzUyMzMsIAorICAgIDM1MjM4LCAzNTI0NCwgMzUyNDksIDM1MjU0LCAzNTI1OCwgMzUyNjMsIDM1MjY4LCAzNTI3NCwgMzUyNzksIDM1Mjg0LCAKKyAgICAxMzYzLCAzNTI4OCwgMzUyOTMsIDM1Mjk4LCAzNTMwMywgMzUzMDcsIDM1MzEyLCAzNTMxNywgMzUzMjIsIDM1MzI4LCAKKyAgICAzNTMzNCwgMzUzMzksIDM1MzQzLCAzNTM0NywgMzUzNTIsIDM1MzU3LCAzNTM2MiwgMzUzNjYsIDM1Mzc0LCAzNTM3OCwgCisgICAgMzUzODQsIDM1Mzg4LCAzNTM5NSwgMTgwMzksIDMzNDUwLCAzNTQwMSwgMzU0MDgsIDM1NDE2LCAzNTQyMywgMzU0MjksIAorICAgIDM1NDQyLCAzNTQ1NCwgMzU0NTksIDM1NDY1LCAzNTQ2OSwgMjgxMiwgMzU0NzMsIDM1NDc3LCAzNDk2NSwgMzU0ODYsIAorICAgIDM1NDk3LCAzNTUwMiwgMzAxOTgsIDM1NTA3LCAzNTUxMiwgMzU1MTYsIDM1NTIxLCAyNDI0OSwgMzU1MjUsIDM1NTI5LCAKKyAgICAzNTUzNCwgMzM0NTYsIDIyOTg1LCAzNTUzOCwgMzU1NDMsIDM1NTQ5LCAzNTU1NCwgMzU1NTgsIDM1NTYyLCAzNTU2NSwgCisgICAgMzU1NjksIDM1NTc1LCAzNTU4NCwgMzU1OTUsIDM1NjA3LCAzMzQ2MiwgMzU2MTIsIDM1NjE1LCAzNTYxOSwgMzU2MjMsIAorICAgIDQwNiwgMzU2MjgsIDM1NjMzLCAzNTYzOCwgMzU2NDMsIDM1NjQ4LCAzNTY1MywgMzU2NTksIDM1NjY0LCAzNTY2OSwgCisgICAgMzU2NzUsIDM1NjgwLCAzNTY4NiwgMzU2OTEsIDM1Njk3LCAzNTcwMiwgMzU3MDcsIDM1NzEyLCAzNTcxNywgMzU3MjIsIAorICAgIDM1NzI3LCAzNTczMiwgMzU3MzcsIDM1NzQzLCAzNTc0OCwgMzU3NTMsIDM1NzU4LCAzNTc2MywgMzU3NjgsIDM1NzczLCAKKyAgICAzNTc3OCwgMzU3ODQsIDM1NzkwLCAzNTc5NSwgMzU4MDAsIDM1ODA1LCAzNTgxMCwgMzU4MTUsIDM1ODIwLCAzNTgyNSwgCisgICAgMzU4MzAsIDM1ODM1LCAzNTg0MCwgMzU4NDUsIDM1ODUwLCAzNTg1NSwgMzU4NjAsIDM1ODY1LCAzNTg3MCwgMzU4NzUsIAorICAgIDM1ODgwLCAzNTg4NiwgMzI1LCA5LCAzNTg5MSwgMzU4OTUsIDM1ODk5LCAzNTkwNywgMzU5MTEsIDM1OTE1LCAzNTkxOCwgCisgICAgMzU5MjEsIDM1OTIzLCAzNTkyOCwgMzU5MzIsIDM1OTM3LCAzNTk0MSwgMzU5NDYsIDM1OTUwLCAzNTk1NSwgMzU5NTksIAorICAgIDM1OTYyLCAzNTk2NCwgMzU5NjgsIDM1OTczLCAzNTk3NywgMzU5ODgsIDM1OTkxLCAzNTk5MywgMzU5OTcsIDM2MDA5LCAKKyAgICAzNjAxOCwgMzYwMjIsIDM2MDI2LCAzNjAzMiwgMzYwMzcsIDM2MDQ2LCAzNjA1MiwgMzYwNTcsIDM2MDYyLCAzNjA2NiwgCisgICAgMzYwNzAsIDM2MDc1LCAzNjA4MiwgMzYwODcsIDM2MDkzLCAzNjA5OCwgMzYxMDIsIDM2MTA5LCAyNzczMSwgMjc3NDEsIAorICAgIDM2MTEzLCAzNjExOCwgMzYxMjMsIDM2MTI4LCAzNjEzNSwgMzYxMzksIDM2MTQ2LCAzNjE1MiwgODQ5MSwgMzYxNTYsIAorICAgIDM2MTY1LCAzNjE3MywgMzYxODgsIDM2MjAyLCAzNjIxMSwgMzYyMTksIDM2MjMwLCAzNjIzOSwgMzYyNDQsIDM2MjUxLCAKKyAgICA3NTU2LCAzNjI2MSwgMzYyNjYsIDM2MjcxLCAzNjI3NSwgMzYyNzgsIDM2MjgzLCAzNjI4NywgMzYyOTIsIDM2Mjk2LCAKKyAgICAzNjMwMywgMzYzMDgsIDM2MzEzLCAzNjMxOCwgOTM5MSwgMzYzMjgsIDM2MzMwLCAzNjMzMywgMzYzMzYsIDM2MzQwLCAKKyAgICAzNjM0NiwgMzYzNTAsIDM2MzU1LCAzNjM2MCwgMzYzNzgsIDM2MzkyLCAzNjQxMSwgMzY0MjgsIDM2NDM3LCAzNjQ0NSwgCisgICAgMzY0NTAsIDM2NDU1LCAxNDg2LCAzNjQ2MSwgMzY0NjcsIDM2NDcyLCAzNjQ4MiwgMzY0OTEsIDM2NDk5LCAzNjUwNCwgCisgICAgMzY1MTAsIDM2NTE1LCAzNjUyNCwgMzY1MzUsIDM2NTQwLCAzNjU0NywgMzY1NTEsIDM2NTU4LCAzNjU2NiwgMzY1NzMsIAorICAgIDM2NTg2LCAzNjU5NCwgMzY1OTgsIDM2NjA4LCAzNjYxMywgMzY2MTcsIDM2NjI1LCAzNjYzMywgMzY2MzgsIDM2NjQyLCAKKyAgICAzNjY0NiwgMzY2NTUsIDM2NjYxLCAzNjY2NiwgMzY2NzQsIDM2Njg0LCAzNjY5MywgMzY3MDIsIDM2NzExLCAzNjcyMiwgCisgICAgMzY3MzAsIDM2NzQxLCAzNjc1MCwgMzY3NTcsIDM2NzYzLCAzNjc2OCwgMzY3NzksIDM2NzkwLCAzNjc5NSwgMzY3OTksIAorICAgIDM2ODAyLCAzNjgwNiwgMzY4MTQsIDM2ODIwLCAzNjgzMSwgMzY4NDIsIDM2ODUzLCAzNjg2NCwgMzY4NzUsIDM2ODg2LCAKKyAgICAzNjg5NywgMzY5MDgsIDM2OTIwLCAzNjkzMiwgMzY5NDQsIDM2OTU2LCAzNjk2OCwgMzY5ODAsIDM2OTkyLCAzNjk5NiwgCisgICAgMzcwMDQsIDM3MDEwLCAzNzAxNywgMzcwMjMsIDM3MDI4LCAzNzAzNCwgMjQ1NywgMzcwMzgsIDM3MDQwLCAzNzA0NSwgCisgICAgMzcwNTAsIDM3MDU1LCAzNzA1OCwgMzcwNjAsIDM3MDY0LCAzNzA2NywgMzcwNzQsIDM3MDc4LCAxMDY2NCwgMzcwODIsIAorICAgIDM3MDg4LCAzNzA5OCwgMzcxMDMsIDM3MTA5LCAzNzExMywgMzcxMTgsIDM3MTMxLCAyODE2MiwgMzcxMzcsIDM3MTQ2LCAKKyAgICAzNzE1NSwgMTkxMDQsIDM3MTYyLCAzNzE3MSwgMzQwODksIDM3MTc5LCAzNzE4NCwgMzcxODgsIDM3MTk3LCAzNzIwNSwgCisgICAgMzcyMTIsIDM3MjE3LCAzNzIyMSwgMzcyMjYsIDM3MjM0LCAzNzIzOCwgMzcyNDYsIDM3MjUyLCAzNzI1OCwgMzcyNjMsIAorICAgIDM3MjY3LCAzNzI3MCwgMzcyNzUsIDM3Mjg4LCAzNzMwNCwgMjQ4NDAsIDM3MzIxLCAzNzMzMywgMzczNTAsIDM3MzYyLCAKKyAgICAzNzM3NiwgMjQ4NTcsIDI0ODc2LCAzNzM4OCwgMzc0MDAsIDI3MTksIDM3NDE0LCAzNzQxOSwgMzc0MjQsIDM3NDI5LCAKKyAgICAzNzQzMywgMzc0NDAsIDM3NDUyLCAzNzQ1OSwgMzc0NjgsIDM3NDcxLCAzNzQ4MiwgMzc0OTMsIDM3NDk4LCAzNDUxMiwgCisgICAgODUyLCAzNzUwMiwgMzc1MDYsIDM3NTEwLCAzNzUxMywgMzc1MTgsIDM3NTIzLCAzNzUyOSwgMzc1MzQsIDM3NTM5LCAKKyAgICAzNzU0NSwgMzc1NTEsIDM3NTU2LCAzNzU2MCwgMzc1NjUsIDM3NTcwLCAzNzU3NSwgMzc1NzksIDM3NTgyLCAzNzU4OCwgCisgICAgMzc1OTMsIDM3NTk4LCAzNzYwMywgMzc2MDcsIDM3NjEyLCAzNzYxOCwgMzc2MjYsIDI4NDE0LCAzNzYzMSwgMzc2MzYsIAorICAgIDM3NjQzLCAzNzY0OSwgMzc2NTUsIDM3NjYwLCAzNzY2OCwgMjQzNjUsIDM3Njc1LCAzNzY4MCwgMzc2ODUsIDM3NjkwLCAKKyAgICAzNzY5NCwgMzc2OTcsIDM3NzAyLCAzNzcwNiwgMzc3MTAsIDM3NzE3LCAzNzcyMywgMzc3MjksIDM3NzM1LCAzNzc0MiwgCisgICAgMzc3NDcsIDM3NzUzLCAzNjYyOCwgMzc3NTcsIDM3NzYxLCAzNzc2NiwgMzc3NzksIDM3Nzg0LCAzNzc5MCwgMzc3OTgsIAorICAgIDM3ODA1LCAzNzgxMywgMzc4MjMsIDM3ODI5LCAzNzgzNSwgMzc4NDEsIDM3ODQ1LCAzNzg1NCwgMzc4NjIsIDM3ODY5LCAKKyAgICAzNzg3NCwgMzc4NzksIDExMzM3LCAzNzg4NCwgMzc4OTEsIDM3ODk3LCAzNzkwNywgMzc5MTIsIDM3OTE4LCAzNzkyNiwgCisgICAgMzc3NSwgMzc5MzMsIDM3OTQwLCAzNzk0NiwgMzc5NTMsIDM3ODEsIDM3OTU3LCAzNzk2MiwgMzc5NzMsIDM3OTgwLCAKKyAgICAzNzk4NiwgMzc5OTUsIDM3OTk5LCA0MjQ0LCAzODAwMiwgMzgwMDksIDM4MDE1LCAzODAyMSwgMzgwMjksIDM4MDM5LCAKKyAgICAzMTMyNiwgMzgwNDYsIDM4MDU0LCAzODA2MCwgMzgwNjUsIDM4MDcxLCAzODA3NiwgMzgwODAsIDI4MDEwLCAzODA4NiwgCisgICAgMzgwOTMsIDM4MDk5LCAzODEwOCwgMzgxMTUsIDI1NTY1LCAzODEyMSwgMzgxMjYsIDM4MTMwLCAzODEzOCwgMzgxNDYsIAorICAgIDEwMzMwLCA2MTc5LCAzODE1MywgMzgxNTcsIDM4MTU5LCAzODE2MywgMzgxNjgsIDM4MTcwLCAzODE3NSwgMzgxODEsIAorICAgIDM4MTg2LCAzODE5MSwgMzgxOTgsIDM1MDg3LCAzODIwNCwgMzgyMDksIDM4MjEzLCAzODIxOCwgMzgyMjIsIDM4MjMxLCAKKyAgICAzODIzNSwgMzgyNDEsIDM4MjQ4LCAzODI1NCwgMzgyNjEsIDM4MjY2LCAzODI3NSwgMzgyODAsIDM4Mjg0LCAzODI4OSwgCisgICAgMzgyOTYsIDM4MzA0LCAzODMxMiwgMzgzMTcsIDIzMDQxLCAzODMyMSwgMzgzMjQsIDM4MzI4LCAzODMzMiwgMTE3MjUsIAorICAgIDg3MiwgMzgzMzYsIDM4MzQxLCAzODM0OSwgMzgzNTMsIDM4MzYyLCAzODM2OSwgMzgzNzMsIDM4Mzc3LCAzODM4NSwgCisgICAgMzgzOTIsIDM4NDAyLCAzODQwNiwgMzg0MTAsIDM4NDE4LCAzODQyNiwgMzg0MzIsIDM4NDM3LCAzODQ0NiwgMTQ1MzAsIAorICAgIDM4NDUyLCAzODQ2MSwgMzg0NjYsIDM4NDczLCAzODQ4MCwgMzg0ODgsIDM4NDk2LCAzODUwNCwgMzg1MDksIDM4NTE2LCAKKyAgICAzODUyMywgMzg1MzAsIDM4NTM3LCAzODU0NCwgMzg1NDksIDM4NTU1LCAzODU3MiwgMzg1ODAsIDM4NTkwLCAzODU5OCwgCisgICAgMzg2MDUsIDQxNCwgMzg2MDksIDM4NjE1LCAzODYxOSwgMzg2MjQsIDM2MjM1LCAzODYzMCwgMzg2MzMsIDM4NjM3LCAKKyAgICAzODY0OCwgMzg2NTYsIDM3ODYsIDM4NjY0LCAzODY3MCwgMzg2NzYsIDM4Njg2LCAzODY5NSwgMzg3MDUsIDM4NzEyLCAKKyAgICAzODcxOCwgMzg3MjMsIDM3OTIsIDM3OTgsIDM4NzMyLCAzODczOSwgMzg3NDcsIDM4NzUyLCAzODc1NiwgMzg3NjMsIAorICAgIDM4NzcxLCAzODc3OCwgMzg3ODQsIDM4NzkzLCAzODgwMywgMzg4MDksIDM4ODE3LCAzODgyNiwgMzg4MzMsIDM4ODQxLCAKKyAgICAzODg0OCwgMjM3MjgsIDM4ODUyLCAzODg1OSwgMzg4NjUsIDM4ODc1LCAzODg4NCwgMzg4OTIsIDM4OTAzLCAzODkwNywgCisgICAgMzg5MTcsIDM4OTIzLCAzODkzMCwgMzg5MzgsIDM4OTQ3LCAzODk1NiwgMzg5NjYsIDM4OTc3LCAzODk4NCwgMzg5ODksIAorICAgIDM4OTk2LCAzMDg4LCAzOTAwNCwgMzkwMTAsIDM5MDE1LCAzOTAyMSwgMzkwMjcsIDM5MDMyLCAzOTA0NSwgMzkwNTgsIAorICAgIDM5MDcxLCAzOTA3OCwgMzkwODQsIDM5MDkyLCAzOTEwMCwgMzkxMDUsIDM5MTA5LCAxNDU1LCAzOTExMywgMzkxMTcsIAorICAgIDM5MTIxLCAzOTEyNSwgMzkxMjksIDM5MTMzLCAzOTEzNywgMzkxNDEsIDM5MTQ1LCAzOTE0OSwgMzkxNTMsIDM5MTU3LCAKKyAgICAzOTE2MSwgMzkxNjUsIDM5MTY5LCAzOTE3MywgMzkxNzcsIDM5MTgxLCAzOTE4NSwgMzkxODksIDM5MTkzLCAzOTE5NywgCisgICAgMzkyMDEsIDM5MjA1LCAzOTIwOSwgMzkyMTMsIDM5MjE3LCAzOTIyMSwgMzkyMjUsIDM5MjI5LCAzOTIzMywgMzkyMzcsIAorICAgIDM5MjQxLCAzOTI0NSwgMzkyNDksIDM5MjUzLCAzOTI1NywgMzkyNjEsIDM5MjY1LCAzOTI2OSwgMzkyNzMsIDM5Mjc3LCAKKyAgICAzOTI4MSwgMzkyODUsIDM5Mjg5LCAzOTI5MywgMzkyOTcsIDM5MzAxLCAzOTMwNSwgMzkzMDksIDM5MzEzLCAzOTMxNywgCisgICAgMzkzMjEsIDM5MzI1LCAzOTMyOSwgMzkzMzMsIDM5MzM3LCAzOTM0MSwgMzkzNDUsIDM5MzQ5LCAzOTM1MywgMzkzNTcsIAorICAgIDM5MzYxLCAzOTM2NSwgMzkzNjksIDM5MzczLCAzOTM3NywgMzkzODEsIDM5Mzg1LCAzOTM4OSwgMzkzOTMsIDM5Mzk3LCAKKyAgICAzOTQwMSwgMzk0MDUsIDM5NDA5LCAzOTQxMywgMzk0MTcsIDM5NDIxLCAzOTQyNSwgMzk0MjksIDM5NDMzLCAzOTQzNywgCisgICAgMzk0NDEsIDM5NDQ1LCAzOTQ0OSwgMzk0NTMsIDM5NDU3LCAzOTQ2MSwgMzk0NjUsIDM5NDY5LCAzOTQ3MywgMzk0NzcsIAorICAgIDM5NDgxLCAzOTQ4NSwgMzk0ODksIDM5NDkzLCAzOTQ5NywgMzk1MDEsIDM5NTA1LCAzOTUwOSwgMzk1MTMsIDM5NTE3LCAKKyAgICAzOTUyMSwgMzk1MjUsIDM5NTI5LCAzOTUzMywgMzk1MzcsIDM5NTQxLCAzOTU0NSwgMzk1NDksIDM5NTUzLCAzOTU1NywgCisgICAgMzk1NjEsIDM5NTY1LCAzOTU2OSwgMzk1NzMsIDM5NTc3LCAzOTU4MSwgMzk1ODUsIDM5NTg5LCAzOTU5MywgMzk1OTcsIAorICAgIDM5NjAxLCAzOTYwNSwgMzk2MDksIDM5NjEzLCAzOTYxNywgMzk2MjEsIDM5NjI1LCAzOTYyOSwgMzk2MzMsIDM5NjM3LCAKKyAgICAzOTY0MSwgMzk2NDUsIDM5NjQ5LCAzOTY1MywgMzk2NTcsIDM5NjYxLCAzOTY2NSwgMzk2NjksIDM5NjczLCAzOTY3NywgCisgICAgMzk2ODEsIDM5Njg1LCAzOTY4OSwgMzk2OTMsIDM5Njk3LCAzOTcwMSwgMzk3MDUsIDM5NzA5LCAzOTcxMywgMzk3MTcsIAorICAgIDM5NzIxLCAzOTcyNSwgMzk3MzAsIDM5NzM0LCAzOTczOSwgMzk3NDMsIDM5NzQ4LCAzOTc1MiwgMzk3NTcsIDM5NzYxLCAKKyAgICAzOTc2NywgMzk3NzIsIDM5Nzc2LCAzOTc4MSwgMzk3ODUsIDM5NzkwLCAzOTc5NCwgMzk3OTksIDM5ODAzLCAzOTgwOCwgCisgICAgMzk4MTIsIDM5ODE3LCAzOTgyMSwgMzk4MjYsIDM5ODMwLCAzOTgzNiwgMzk4NDIsIDM5ODQ3LCAzOTg1MSwgMzk4NTYsIAorICAgIDM5ODYwLCAzOTg2NiwgMzk4NzEsIDM5ODc1LCAzOTg4MCwgMzk4ODQsIDM5ODg5LCAzOTg5MywgMzk4OTksIDM5OTA0LCAKKyAgICAzOTkwOCwgMzk5MTMsIDM5OTE3LCAzOTkyMiwgMzk5MjYsIDM5OTMxLCAzOTkzNSwgMzk5NDEsIDM5OTQ2LCAzOTk1MCwgCisgICAgMzk5NTUsIDM5OTU5LCAzOTk2NSwgMzk5NzAsIDM5OTc0LCAzOTk3OSwgMzk5ODMsIDM5OTg4LCAzOTk5MiwgMzk5OTcsIAorICAgIDQwMDAxLCA0MDAwNiwgNDAwMTAsIDQwMDE2LCA0MDAyMSwgNDAwMjUsIDQwMDMxLCA0MDAzNiwgNDAwNDAsIDQwMDQ2LCAKKyAgICA0MDA1MSwgNDAwNTUsIDQwMDYwLCA0MDA2NCwgNDAwNjksIDQwMDczLCA0MDA3OSwgNDAwODUsIDQwMDkxLCA0MDA5NywgCisgICAgNDAxMDMsIDQwMTA5LCA0MDExNSwgNDAxMjEsIDQwMTI2LCA0MDEzMCwgNDAxMzUsIDQwMTM5LCA0MDE0NSwgNDAxNTAsIAorICAgIDQwMTU0LCA0MDE1OSwgNDAxNjMsIDQwMTY4LCA0MDE3MiwgNDAxNzcsIDQwMTgxLCA0MDE4NiwgNDAxOTAsIDQwMTk1LCAKKyAgICA0MDE5OSwgNDAyMDQsIDQwMjA4LCA0MDIxNCwgNDAyMTksIDQwMjIzLCA0MDIyOCwgNDAyMzIsIDQwMjM4LCA0MDI0NCwgCisgICAgNDAyNDksIDExNiwgNTcsIDQwMjUzLCA0MDI1NSwgNDAyNTksIDQwMjYzLCA0MDI2NywgNDAyNzIsIDQwMjc2LCA0MDI4MCwgCisgICAgMTAyNTEsIDQwMjg1LCA0MDI5MSwgMTc1NiwgNjU5NywgNDAyOTcsIDQwMzAwLCA0MDMwNSwgNDAzMDksIDQwMzE0LCAKKyAgICA0MDMxOCwgNDAzMjIsIDQwMzI3LCAxMTEyMSwgNDAzMzEsIDQwMzM1LCA0MDMzOSwgNTI1LCA0MDM0MywgMTY3ODMsIAorICAgIDQwMzQ4LCA0MDM1MiwgNDAzNTcsIDQwMzYyLCA0MDM2NywgNDAzNzEsIDQwMzc4LCAyODE4NiwgNDAzODQsIDQwMzg3LCAKKyAgICA0MDM5MSwgNDAzOTYsIDQwNDAyLCA0MDQwNiwgNDA0MDksIDQwNDE3LCA0MDQyMywgNDA0MjgsIDQwNDMyLCA0MDQzNSwgCisgICAgNDA0MzksIDQwNDQ1LCA0MDQ0OSwgNDA0NTMsIDM1ODQsIDM1ODksIDMxNTM3LCA0MDQ1NiwgNDA0NjAsIDQwNDY0LCAKKyAgICA0MDQ2OCwgNDA0NzIsIDQwNDgwLCA0MDQ4NywgNDA0OTEsIDE0NDgwLCA0MDQ5OCwgNDA1MDMsIDQwNTE3LCA0MDUyNCwgCisgICAgNDA1MzUsIDMzNSwgNDA1NDAsIDQwNTQ0LCA0MDU1MCwgNDA1NjIsIDQwNTY4LCA0MDU3NCwgMzE1NzQsIDQwNTc4LCAKKyAgICA0MDU4NCwgNDA1OTMsIDQwNTk3LCA0MDYwMSwgNDA2MDYsIDQwNjEyLCA0MDYxNywgNDA2MjEsIDQwNjI2LCA0MDYzMCwgCisgICAgNDA2MzQsIDQwNjQxLCA0MDY0NywgNDA2NTIsIDQwNjY3LCA0MDY4MiwgNDA2OTcsIDQwNzEzLCA0MDczMSwgMTEwNzEsIAorICAgIDQwNzQ1LCA0MDc1MiwgNDA3NTYsIDQwNzU5LCA0MDc2OCwgNDA3NzMsIDQwNzc3LCA0MDc4NSwgMTczMzMsIDQwNzkzLCAKKyAgICA0MDc5NywgNDA4MDcsIDQwODE4LCAzMTUwNywgNDA4MzEsIDQwODM1LCA0MDg0NCwgNDA4NjIsIDQwODgxLCA0MDg4OSwgCisgICAgMTA1MjUsIDExMjM0LCA0MDg5MywgMjQyNjEsIDQwODk2LCAzMjQ3NSwgNDA5MDEsIDEwNTI0LCA0MDkwNiwgNDA5MTIsIAorICAgIDQwOTE3LCA0MDkyMywgNDA5MjgsIDQwOTM0LCA0MDkzOSwgNDA5NDUsIDQwOTUwLCA0MDk1NiwgNDA5NjIsIDQwOTY4LCAKKyAgICA0MDk3MywgNDA5MjksIDQwOTM1LCA0MDk0MCwgNDA5NDYsIDQwOTUxLCA0MDk1NywgNDA5NjMsIDg1MDQsIDQwODksIAorICAgIDQwOTc3LCA0MDk4NSwgNDA5ODksIDQwOTkyLCA0MDk5NiwgNDEwMDEsIDQxMDA2LCA0MTAxMywgNDEwMTksIDQxMDI1LCAKKyAgICA0MTAzMCwgMTYxNzQsIDQxMDM0LCAyODAyMiwgNDEwMzgsIDQxMDQyLCA0MTA0NiwgNDEwNTIsIDQxMDU2LCAzMDA3NSwgCisgICAgNDEwNjUsIDk1NDQsIDQxMDY5LCA5OTM3LCA0MTA3MiwgNDEwNzksIDQxMDg1LCA0MTA4OSwgMTMwMDQsIDQxMDk2LCAKKyAgICA0MTEwMiwgNDExMDcsIDQxMTE0LCA0MTEyMSwgNDExMjgsIDMwNzgxLCA4NDEwLCA0MTEzNSwgNDExNDIsIDQxMTQ5LCAKKyAgICA0MTE1NSwgNDExNjAsIDQxMTY3LCA0MTE3OCwgNDExODQsIDQxMTg5LCA0MTE5NCwgNDExOTksIDQxMjAzLCA0MTIwOCwgCisgICAgNDEyMTUsIDQwOTMwLCA0MTIxOSwgNDEyMjksIDQxMjM4LCA0MTI0OSwgNDEyNTUsIDQxMjYzLCA0MTI3MCwgNDEyNzUsIAorICAgIDQxMjgwLCA0MTI4NSwgNDEyOTAsIDQxMjk1LCA0MTI5OSwgNDEzMDMsIDQxMzEwLCA0MTMxNiwgNDEzMjQsIDIzNTMsIAorICAgIDEwNTAsIDExMTM3LCAxMTE0OSwgMTExNTQsIDExMTYwLCA0MTMzMywgMTExNjUsIDExMTcwLCAxMTE3NiwgNDEzMzgsIAorICAgIDQxMzQ4LCA0MTM1MiwgMTExODEsIDQxMzU3LCAxODQ1MywgNDEzNjAsIDQxMzY1LCA0MTM2OSwgMzc0NjMsIDQxMzgwLCAKKyAgICA0MTM4NSwgNDEzOTIsIDQxMzk5LCA0MTQwMywgNDE0MDYsIDQxNDE0LCAxMTA4NCwgNDE0MjEsIDQxNDI0LCA0MTQzMCwgCisgICAgNDE0NDAsIDYyMzEsIDQxNDQ5LCA0MTQ1NSwgNDE0NTksIDQxNDY3LCA0MTQ3MSwgNDE0ODEsIDQxNDg3LCA0MTQ5MiwgCisgICAgNDE1MDMsIDQxNTEyLCA0MTUyMSwgNDE1MzAsIDQxNTM5LCA0MTU0OCwgNDE1NTcsIDQxNTY2LCA0MTU3MiwgNDE1NzgsIAorICAgIDQxNTgzLCA0MTU4OSwgNDE1OTUsIDQxNjAxLCA0MTYwNiwgNDE2MDksIDQxNjE2LCA0MTYyMiwgNDE2MjYsIDQxNjMxLCAKKyAgICA0MTYzOCwgNDE2NDUsIDQxNjQ5LCA0MTY1MiwgNDE2NjIsIDQxNjc1LCA0MTY4NCwgNDE2OTMsIDQxNzA0LCA0MTcxNywgCisgICAgNDE3MjksIDQxNzQwLCA0MTc0OSwgNDE3NjAsIDQxNzY1LCA0MTc3NCwgNDE3NzksIDExMTg2LCA0MTc4NSwgNDE3OTIsIAorICAgIDQxODAwLCA0MTgwNSwgNDE4MDksIDQxODE2LCA0MTgyMywgNDA0MSwgMjAsIDQxODI3LCA0MTgzMiwgMTgzMDIsIDQxODM2LCAKKyAgICA0MTgzOSwgNDE4NDIsIDMwMjU1LCA0MTg0NiwgMzA3OTAsIDQxODU0LCA0MTg1OCwgNDE4NjIsIDQxODY1LCA0MTg3MSwgCisgICAgNDE4NzcsIDMzNTI3LCA0MTg4MiwgNDE4OTAsIDQxODk2LCA0MTkwMywgMzAyMzgsIDQxOTA3LCAzMDQ0MSwgNDE5MTEsIAorICAgIDQxOTIwLCA0MTkyNCwgNDE5MzIsIDQxOTM4LCA0MTk0NCwgNDE5NDksIDQxOTUzLCAzMDgwOSwgNDE5NTksIDQxOTYyLCAKKyAgICA0MTk3MCwgNDE5NzgsIDQzNzksIDQxOTg0LCA0MTk4OCwgNDE5OTMsIDQyMDAwLCA0MjAwNiwgNDIwMTEsIDQyMDE2LCAKKyAgICA0MjAyMCwgNDIwMjYsIDQyMDMxLCA0MjAzNywgNDI5NywgOTQ0LCA0MjA0NCwgNDIwNDgsIDQyMDUxLCAxNjY2NCwgNDIwNjMsIAorICAgIDQyMDcxLCA0MjA3OSwgNDIwODcsIDQyMDk1LCA0MjEwMiwgNDIxMTAsIDQyMTE4LCA0MjEyNSwgNDIxMzMsIDQyMTQxLCAKKyAgICA0MjE0OSwgNDIxNTcsIDQyMTY1LCA0MjE3MywgNDIxODEsIDQyMTg5LCA0MjE5NywgNDIyMDUsIDQyMjEzLCA0MjIyMCwgCisgICAgNDIyMjgsIDQyMjM2LCA0MjI0NCwgNDIyNTIsIDQyMjYwLCA0MjI2OCwgNDIyNzYsIDQyMjg0LCA0MjI5MiwgNDIzMDAsIAorICAgIDQyMzA4LCA0MjMxNiwgNDIzMjQsIDQyMzMyLCA0MjM0MCwgNDIzNDgsIDQyMzU2LCA0MjM2NCwgNDIzNzIsIDQyMzc5LCAKKyAgICA0MjM4NywgNDIzOTQsIDQyNDAyLCA0MjQxMCwgNDI0MTgsIDQyNDI2LCA0MjQzNCwgNDI0NDIsIDQyNDUwLCA0MjQ1OCwgCisgICAgNDI0NjksIDIzNzY0LCA0MjQ3NCwgNDI0NzcsIDQyNDg0LCA0MjQ4OCwgNDI0OTQsIDQyNDk4LCA0MjUwNCwgNDI1MDksIAorICAgIDQyNTE1LCA0MjUyMCwgNDI1MjUsIDQyNTI5LCA0MjUzMywgNDI1MzgsIDQyNTQzLCA0MjU1MywgNDI1NTksIDQyNTcyLCAKKyAgICA0MjU3OCwgNDI1ODQsIDQyNTkwLCA0MjU5NywgNDI2MDIsIDQyNjA4LCA0MjYxMywgMTgxOTgsIDE0NTgsIDgzMSwgNDI2MTgsIAorICAgIDQyNjIxLCA0MjYyNCwgNDI2MjcsIDMzNjExLCAzMzYxNywgNDI2MzAsIDMzNjIzLCAzMzYzNiwgMzM2NDIsIDMzNjQ4LCAKKyAgICA0MjYzNiwgMzM2NTQsIDMzNjYwLCA0MjY0MiwgNDI2NDgsIDI2LCA0MjY1NiwgNDI2NjMsIDQyNjY3LCA0MjY3MSwgNDI2NzksIAorICAgIDM0NDAxLCA0MjY4MywgNDI2ODcsIDQyNjk0LCA0MjY5OSwgNDI3MDMsIDQyNzA4LCA0MjcxNCwgNDI3MTksIDQyNzI1LCAKKyAgICA0MjczMCwgNDI3MzQsIDQyNzM4LCA0Mjc0MiwgNDI3NDcsIDQyNzUxLCA0Mjc1NiwgNDI3NjAsIDQyNzY0LCA0Mjc3MSwgCisgICAgNDI3NzYsIDQyNzgwLCA0Mjc4NCwgNDI3ODksIDQyNzkzLCA0Mjc5OCwgNDI4MDIsIDQyODA2LCA0MjgxMSwgNDI4MTcsIAorICAgIDE2OTI0LCAxNjkyOSwgNDI4MjIsIDQyODI2LCA0MjgyOSwgNDI4MzMsIDQyODM3LCAyMjg1MiwgNDI4NDIsIDQyODQ2LCAKKyAgICA0Mjg1MiwgNDI4NTksIDQyODY1LCA0Mjg3MCwgNDI4ODAsIDQyODg1LCA0Mjg5MywgNDI4OTcsIDQyOTAwLCAzNDQxNiwgCisgICAgNDI5MDQsIDQzNTYsIDQyOTA5LCA0MjkxNCwgNDI5MTgsIDQyOTIzLCA0MjkyNywgNDI5MzIsIDE0NTQ4LCA0Mjk0MywgCisgICAgNDI5NDcsIDQyOTUwLCA0Mjk1NCwgNDI5NTksIDQyOTYzLCA0Mjk2OCwgNDI5NzMsIDQyOTc3LCA0Mjk4MSwgNDI5ODUsIAorICAgIDQyOTg4LCA0Mjk5MiwgODUyMywgMTQ1NjQsIDQyOTk1LCA0Mjk5OCwgNDMwMDQsIDQzMDA5LCA0MzAxNSwgNDMwMjAsIAorICAgIDQzMDI2LCA0MzAzMSwgNDMwMzcsIDQzMDQyLCA0MzA0OCwgNDMwNTQsIDQzMDYwLCA0MzA2NSwgNDMwNjksIDQzMDczLCAKKyAgICA0MzA4MiwgNDMwOTgsIDQzMTE0LCA0MzEyNCwgMzAxNDUsIDQzMTMxLCA0MzEzNSwgNDMxNDAsIDQzMTQ1LCA0MzE0OSwgCisgICAgNDMxNTMsIDM4OTUxLCA0MzE1OSwgNDMxNjQsIDQzMTY4LCA0MzE3NSwgNDMxODAsIDQzMTg1LCA0MzE4OSwgNDMxOTMsIAorICAgIDQzMTk5LCAyOTA5MywgNDMyMDMsIDIzMTM2LCA0MzIwOCwgNDMyMTUsIDQzMjIzLCA0MzIyOSwgNDMyMzYsIDQzMjQ0LCAKKyAgICA0MzI1MCwgNDMyNTQsIDQzMjU5LCA0MzI2NSwgNDMyNzMsIDQzMjc4LCA0MzI4MiwgNDMyOTEsIDEwMjMyLCA0MzI5OSwgCisgICAgNDMzMDMsIDQzMzExLCA0MzMxOCwgNDMzMjMsIDQzMzI4LCA0MzMzMywgNDMzMzcsIDQzMzQwLCA0MzM0NCwgNDMzNDcsIAorICAgIDQzMzUxLCA0MzM1OCwgNDMzNjMsIDQzMzY3LCA0MzM3MywgMjg0OTIsIDMzNjc0LCA0MzM3NywgNDMzODYsIDQzMzk0LCAKKyAgICA0MzQwMCwgNDM0MDcsIDQzNDEzLCA0MzQxOSwgNDM0MjQsIDQzNDI3LCA0MzQyOSwgNDM0MzYsIDQzNDQzLCA0MzQ0OSwgCisgICAgNDM0NTMsIDQzNDU2LCA0MzQ2MCwgNDM0NjQsIDQzNDY4LCA0MzQ3MywgNDM0NzcsIDQzNDgxLCA0MzQ4NCwgNDM0ODgsIAorICAgIDQzNTAyLCAyNDkwNiwgNDM1MjEsIDQzNTM0LCA0MzU0NywgNDM1NjAsIDI0OTI0LCA0MzU3NSwgMTE0MjIsIDQzNTkwLCAKKyAgICA0MzU5NiwgNDM2MDAsIDQzNjA0LCA0MzYwOCwgNDM2MTIsIDQzNjE5LCA0MzYyNCwgNDM2MjgsIDQzNjM1LCA0MzY0MSwgCisgICAgNDM2NDYsIDQzNjUyLCA0MzY2MiwgNDM2NzQsIDQzNjg1LCA0MzY5MCwgNDM2OTcsIDQzNzAxLCA0MzcwNSwgNDM3MDgsIAorICAgIDE3MzQzLCAzODU1LCA0MzcxNiwgMTY5NTEsIDQzNzI5LCA0MzczNiwgNDM3NDMsIDQzNzQ3LCA0Mzc1MSwgNDM3NTYsIAorICAgIDQzNzYyLCA0Mzc2NywgNDM3NzMsIDQzNzc3LCA0Mzc4MSwgNDM3ODQsIDQzNzg5LCA0Mzc5MywgNDM3OTgsIDgwODIsIAorICAgIDE2OTYyLCA0MzgwMywgNDM4MDcsIDQzODEzLCA0MzgyMiwgNDM4MjcsIDQzODM2LCA0Mzg0MywgMzg3OTksIDQzODQ5LCAKKyAgICA0Mzg1NCwgNDM4NTgsIDQzODYzLCA0Mzg3MCwgNDM4NzYsIDQzODgwLCA0Mzg4MywgNDM4ODcsIDQzODkyLCAxNTg2NCwgCisgICAgNDM4OTksIDQzOTA2LCA0MzkxMCwgNDM5MTMsIDQzOTE4LCA0MzkyMywgNDM5MjksIDQzOTM0LCA0MzkzOSwgNDM5NDMsIAorICAgIDQzOTQ4LCA0Mzk1OCwgNDM5NjMsIDQzOTY5LCA0Mzk3NCwgNDM5ODAsIDQzOTg1LCA0Mzk5MSwgNDQwMDEsIDQ0MDA2LCAKKyAgICA0NDAxMSwgNDQwMTUsIDQ0MDIwLCA3NTU4LCA3NTcwLCA0NDAyNSwgNDQwMjgsIDQ0MDM1LCA0NDA0MSwgNDQwNTAsIDk0NzcsIAorICAgIDM2NzYwLCA0NDA1OCwgNDQwNjIsIDQ0MDY2LCAzNDQ2NCwgNDQwNzQsIDQ0MDg1LCA0NDA5MywgMzg5OTksIDQ0MTAwLCAKKyAgICA0NDEwNSwgNDQxMTAsIDQ0MTIxLCA0NDEyOCwgNDQxMzksIDM0NDg4LCAyMzE0NywgNDQxNDcsIDkwNywgNDQxNTIsIAorICAgIDE0OTEzLCA0NDE1OCwgMzAyMjksIDQ0MTY0LCA0NDE2OSwgNDQxNzksIDQ0MTg4LCA0NDE5NSwgNDQyMDEsIDQ0MjA1LCAKKyAgICA0NDIwOCwgNDQyMTUsIDQ0MjIxLCA0NDIyOCwgNDQyMzQsIDQ0MjQ0LCA0NDI1MiwgNDQyNTgsIDQ0MjY0LCA0NDI2OSwgCisgICAgNDQyNzMsIDQ0MjgwLCA0NDI4NSwgNDQyOTEsIDQ0Mjk4LCA0NDMwNCwgNDM0NjksIDQ0MzA5LCA0NDMxMywgNTU4LCAKKyAgICAxNTAyOSwgNDQzMTksIDQ0MzI0LCA0NDMyNywgNDQzMzMsIDQ0MzQxLCAxMzgwLCA0NDM0NiwgNDQzNTAsIDQ0MzU1LCAKKyAgICA0NDM2MCwgNDQzNjUsIDQ0MzcyLCA0NDM3NiwgNDQzODEsIDQ0Mzg3LCA0NDM5MSwgMzM2ODQsIDQ0Mzk2LCA0NDQwMSwgCisgICAgNDQ0MTAsIDQ0NDE3LCA0NDQyNywgNDQ0MzMsIDMwMjczLCA0NDQ1MCwgNDQ0NTksIDQ0NDY3LCA0NDQ3MywgNDQ0NzgsIAorICAgIDQ0NDg1LCA0NDQ5MSwgNDQ0OTksIDQ0NTA4LCA0NDUxNiwgNDQ1MjAsIDQ0NTI1LCA0NDUzMywgMzEyNTEsIDM0NDk3LCAKKyAgICA0NDUzOSwgNDQ1NTgsIDE3MjU3LCA0NDU3MiwgNDQ1ODgsIDQ0NjAyLCA0NDYwOCwgNDQ2MTMsIDQ0NjE4LCA0NDYyMywgCisgICAgNDQ2MjksIDM0NTAzLCA0NDYzNCwgNDQ2MzcsIDQ0NjQ0LCA0NDY0OSwgNDQ2NTMsIDQwNCwgMjk5NSwgNDQ2NjAsIDQ0NjY1LCAKKyAgICA0NDY3MCwgMjk0NTEsIDQ0NDg4LCA0NDY3NCwgNDQ2NzksIDQ0Njg3LCA0NDY5MSwgNDQ2OTQsIDQ0Njk5LCA0NDcwNSwgCisgICAgNDQ3MTEsIDQ0NzE2LCA0NDcyMCwgMzAzMjgsIDQ0NzIzLCA0NDcyOCwgNDQ3MzIsIDQ0NzM1LCA0NDc0MCwgNDQ3NDQsIAorICAgIDQ0NzQ5LCA0NDc1NCwgNDQ3NTgsIDQ0NzYzLCA0NDc2NywgNDQ3NzEsIDQ0Nzc1LCAyMjg0OCwgMjI4NTksIDQ0NzgwLCAKKyAgICA0NDc4NSwgNDQ3OTEsIDQ0Nzk2LCA0NDgwMiwgMjkwNTAsIDQ0ODA3LCA0NDgxMSwgMjI5NDUsIDE3NTQ5LCA0NDgxNCwgCisgICAgNDQ4MTksIDQ0ODI0LCA0NDgyOSwgNDQ4MzQsIDQ0ODM5LCA0NDg0NCwgNDQ4NDksIDQ3NCwgNjgsIDMzNjk3LCAzMzcwMiwgCisgICAgMzM3MDcsIDMzNzEzLCAzMzcxOCwgMzM3MjMsIDQ0ODU0LCAzMzcyNywgNDQ4NTgsIDQ0ODYyLCA0NDg2NiwgMzM3MzIsIAorICAgIDMzNzM4LCA0NDg4MCwgMzM3NDksIDMzNzU0LCA0NDg4OCwgNDQ4OTMsIDMzNzYwLCA0NDg5OCwgNDQ5MDMsIDQ0OTA4LCAKKyAgICA0NDkxMywgNDQ5MTksIDQ0OTI1LCA0NDkzMSwgMzM3NzcsIDQ0OTQ0LCA0NDk1MywgNDQ5NTksIDMzNzgxLCA0NDk2MywgCisgICAgMzM3ODYsIDQ0OTY4LCAzMzc5MSwgMzM3OTYsIDQ0OTcxLCA0NDk3NiwgNDQ5ODAsIDQ0OTg2LCAzMzMzMiwgNDQ5OTMsIAorICAgIDE0Nzk0LCA0NTAwMCwgNDUwMDUsIDMzODAxLCA0NTAwOSwgNDUwMTQsIDQ1MDE5LCA0NTAyNCwgNDUwMjgsIDQ1MDMzLCAKKyAgICA0NTAzOCwgNDUwNDQsIDQ1MDQ5LCA0NTA1NCwgNDUwNjAsIDQ1MDY2LCA0NTA3MSwgNDUwNzUsIDQ1MDgwLCA0NTA4NSwgCisgICAgNDUwOTAsIDQ1MDk0LCA0NTA5OSwgNDUxMDQsIDQ1MTA5LCA0NTExNSwgNDUxMjEsIDQ1MTI3LCA0NTEzMiwgNDUxMzYsIAorICAgIDQ1MTQxLCA0NTE0NSwgMzM4MDUsIDMzODEwLCAzMzgxNSwgNDUxNDksIDQ1MTUzLCA0NTE1NywgMzM4MjAsIDMzODI2LCAKKyAgICAzMzgzMiwgMzM4NDQsIDQ1MTY5LCAyODA1OSwgNDUxNzMsIDQ1MTc4LCA0NTE4MiwgNDUxODcsIDQ1MTk0LCA0NTE5OSwgCisgICAgNDUyMDQsIDQ1MjA5LCA0NTIxMywgNDUyMTcsIDQ1MjI3LCA0NTIzMiwgNDUyMzcsIDQ1MjQxLCA0NTI0NSwgNDUyNDgsIAorICAgIDQ1MjU2LCAzMzg5MiwgNDUyNjEsIDE0NjUsIDQ1MjY3LCA0NTI3MiwgNDUyNzgsIDQ1Mjg2LCA0NTI5MCwgNDUyOTksIAorICAgIDQ1MzAzLCA0NTMwNywgNDUzMTUsIDQ1MzIxLCA0NTMyOSwgNDUzNDUsIDQ1MzQ5LCA0NTM1MywgNDUzNTcsIDQ1MzYyLCAKKyAgICA0NTM2OCwgNDUzODMsIDMzOTI5LCAxNzY0LCAxMzE5OCwgNDUzODcsIDEzNTksIDEzNzQsIDQ1Mzk5LCA0NTQwNywgNDU0MTQsIAorICAgIDQ1NDE5LCA0NTQyNiwgNDU0MzEsIDk5MjIsIDExMzksIDI1NDQsIDExMjEzLCA0NTQzOCwgOTgyMCwgNDU0NDMsIDQ1NDQ2LCAKKyAgICA0NTQ1NSwgMTI2NywgNDU0NjAsIDQzNjI1LCA0NTQ2NywgNDU0NzYsIDQ1NDgxLCA0NTQ4NSwgNDU0OTMsIDI0MzE3LCAKKyAgICAyNTk2LCA0NTUwMCwgMTE2NzgsIDQ1NTEwLCA0NTUxNiwgMjM3MSwgMjM4MSwgNDU1MjUsIDQ1NTM0LCA0NTU0NCwgNDU1NTUsIAorICAgIDMzNzYsIDM3MDk5LCA0NTU2MCwgMTEyNzcsIDQwMTksIDE4MjM2LCAxMjcyLCA0NTU2NCwgNDU1NzIsIDQ1NTc5LCA0NTU4NCwgCisgICAgNDU1ODgsIDQ1NTkyLCAyNTc5MiwgNDM4OTQsIDExMzA0LCA0NTYwMCwgNDU2MDksIDQ1NjE4LCA0NTYyNiwgNDU2MzMsIAorICAgIDQ1NjQ0LCA0NTY0OSwgNDU2NjIsIDQ1Njc1LCA0NTY4NywgNDU2OTksIDQ1NzExLCA0NTcyMiwgNDU3MzUsIDQ1NzQ2LCAKKyAgICA0NTc1NywgNDU3NjcsIDQ1Nzc1LCA0NTc4MywgNDU3OTUsIDQ1ODA3LCA0NTgxOCwgNDU4MjcsIDQ1ODM1LCA0NTg0MiwgCisgICAgNDU4NTQsIDQ1ODYxLCA0NTg2NywgNDU4NzYsIDQ1ODgzLCA0NTg5NiwgNDU5MDEsIDQ1OTExLCA0NTkxNiwgNDU5MjIsIAorICAgIDQ1OTI3LCA0MTA4NiwgNDU5MzEsIDQ1OTM4LCA0NTk0MiwgNDU5NDksIDQ1OTU3LCA0NTk2NCwgMjU1NywgNDU5NzEsIAorICAgIDQ1OTgyLCA0NTk5MiwgNDYwMDEsIDQ2MDA5LCA0NjAxOSwgNDYwMjcsIDQ2MDM3LCA0NjA0NiwgNDYwNTEsIDQ2MDU3LCAKKyAgICA0NjA2MywgMzg5OSwgNDYwNzQsIDQ2MDg0LCA0NjA5MywgNDYxMDIsIDQ2MTEwLCA0NjEyMCwgNDYxMjgsIDQ2MTM3LCAKKyAgICA0NjE0MiwgNDYxNDcsIDQ2MTUyLCAxNjk0LCA0NywgNDYxNjAsIDQ2MTY4LCA0NjE3OSwgNDYxOTAsIDE3ODc1LCA0NjIwMCwgCisgICAgNDYyMDQsIDQ2MjExLCA0NjIxNywgNDYyMjIsIDQ2MjI2LCA0NjIzNywgNDYyNDcsIDQ2MjU2LCA0NjI2NywgMTgyNzUsIAorICAgIDE4MjgwLCA0NjI3MiwgNDYyODEsIDQ2Mjg2LCA0NjI5NiwgNDYzMDEsIDQ2MzA5LCA0NjMxNywgNDYzMjQsIDQ2MzMwLCAKKyAgICAxNjU2LCAyNzcsIDQ2MzM0LCA0NjM0MCwgNDYzNDUsIDQ2MzQ4LCAyMTQzLCA0Mzc0OCwgNDYzNTYsIDQ2MzYwLCA0NjM2MywgCisgICAgMTUxMCwgNDYzNjksIDE1MjE0LCAxMjc3LCA0NjM3NCwgNDYzODcsIDQ2NDAxLCAyNjgyLCA0NjQxOSwgNDY0MzEsIDQ2NDQzLCAKKyAgICAyNjk2LCAyNzEzLCA0NjQ1NywgNDY0NzAsIDI3MjgsIDQ2NDg0LCA0NjQ5NiwgMjc0MywgNDY1MTAsIDEyODMsIDEyODksIAorICAgIDEyOTUsIDExNTg0LCA0NjUxNSwgNDY1MjAsIDQ2NTI1LCA0NjUyOSwgNDY1NDQsIDQ2NTU5LCA0NjU3NCwgNDY1ODksIAorICAgIDQ2NjA0LCA0NjYxOSwgNDY2MzQsIDQ2NjQ5LCA0NjY2NCwgNDY2NzksIDQ2Njk0LCA0NjcwOSwgNDY3MjQsIDQ2NzM5LCAKKyAgICA0Njc1NCwgNDY3NjksIDQ2Nzg0LCA0Njc5OSwgNDY4MTQsIDQ2ODI5LCA0Njg0NCwgNDY4NTksIDQ2ODc0LCA0Njg4OSwgCisgICAgNDY5MDQsIDQ2OTE5LCA0NjkzNCwgNDY5NDksIDQ2OTY0LCA0Njk3OSwgNDY5OTQsIDQ3MDA5LCA0NzAyNCwgNDcwMzksIAorICAgIDQ3MDU0LCA0NzA2OSwgNDcwODQsIDQ3MDk5LCA0NzExNCwgNDcxMjksIDQ3MTQ0LCA0NzE1OSwgNDcxNzQsIDQ3MTg5LCAKKyAgICA0NzIwNCwgNDcyMTksIDQ3MjM0LCA0NzI0OSwgNDcyNjQsIDQ3Mjc5LCA0NzI5NCwgNDczMDksIDQ3MzI0LCA0NzMzOSwgCisgICAgNDczNTQsIDQ3MzY5LCA0NzM4NCwgNDczOTksIDQ3NDE0LCA0NzQyOSwgNDc0NDQsIDQ3NDU5LCA0NzQ3NCwgNDc0ODksIAorICAgIDQ3NTA0LCA0NzUxOSwgNDc1MzQsIDQ3NTQ5LCA0NzU2NCwgNDc1NzksIDQ3NTk0LCA0NzYwOSwgNDc2MjQsIDQ3NjM5LCAKKyAgICA0NzY1NCwgNDc2NjksIDQ3Njg0LCA0NzY5OSwgNDc3MTQsIDQ3NzI5LCA0Nzc0NCwgNDc3NTksIDQ3Nzc0LCA0Nzc4OSwgCisgICAgNDc4MDQsIDQ3ODE5LCA0NzgzNCwgNDc4NDksIDQ3ODY0LCA0Nzg3OSwgNDc4OTQsIDQ3OTA5LCA0NzkyNCwgNDc5MzksIAorICAgIDQ3OTU0LCA0Nzk2OSwgNDc5ODQsIDQ3OTk5LCA0ODAxNCwgNDgwMjksIDQ4MDQ0LCA0ODA1OSwgNDgwNzQsIDQ4MDg5LCAKKyAgICA0ODEwNCwgNDgxMTksIDQ4MTM0LCA0ODE0OSwgNDgxNjQsIDQ4MTc5LCA0ODE5NCwgNDgyMDksIDQ4MjI0LCA0ODIzOSwgCisgICAgNDgyNTQsIDQ4MjY5LCA0ODI4NCwgNDgyOTksIDQ4MzE0LCA0ODMyOSwgNDgzNDQsIDQ4MzU5LCA0ODM3NCwgNDgzODksIAorICAgIDQ4NDA0LCA0ODQxOSwgNDg0MzQsIDQ4NDQ5LCA0ODQ2NCwgNDg0NzksIDQ4NDk0LCA0ODUwOSwgNDg1MjQsIDQ4NTM5LCAKKyAgICA0ODU1NCwgNDg1NjksIDQ4NTg0LCA0ODU5OSwgNDg2MTQsIDQ4NjI5LCA0ODY0NCwgNDg2NTksIDQ4Njc0LCA0ODY4OSwgCisgICAgNDg3MDQsIDQ4NzE5LCA0ODczNCwgNDg3NDksIDQ4NzY0LCA0ODc3OSwgNDg3OTQsIDQ4ODA5LCA0ODgyNCwgNDg4MzksIAorICAgIDQ4ODU0LCA0ODg2OSwgNDg4ODQsIDQ4ODk5LCA0ODkxNCwgNDg5MjksIDQ4OTQ0LCA0ODk1OSwgNDg5NzQsIDQ4OTg5LCAKKyAgICA0OTAwNCwgNDkwMTksIDQ5MDM0LCA0OTA0OSwgNDkwNjQsIDQ5MDc5LCA0OTA5NCwgNDkxMDksIDQ5MTI0LCA0OTEzOSwgCisgICAgNDkxNTQsIDQ5MTY5LCA0OTE4NCwgNDkxOTksIDQ5MjE0LCA0OTIyOSwgNDkyNDQsIDQ5MjU5LCA0OTI3NCwgNDkyODksIAorICAgIDQ5MzA0LCA0OTMxOSwgNDkzMzQsIDQ5MzQ5LCA0OTM2NCwgNDkzNzksIDQ5Mzk0LCA0OTQwOSwgNDk0MjQsIDQ5NDM5LCAKKyAgICA0OTQ1NCwgNDk0NjksIDQ5NDg0LCA0OTQ5OSwgNDk1MTQsIDQ5NTI5LCA0OTU0NCwgNDk1NTksIDQ5NTc0LCA0OTU4OSwgCisgICAgNDk2MDQsIDQ5NjE5LCA0OTYzNCwgNDk2NDksIDQ5NjY0LCA0OTY3OSwgNDk2OTQsIDQ5NzA5LCA0OTcyNCwgNDk3MzksIAorICAgIDQ5NzU0LCA0OTc2OSwgNDk3ODQsIDQ5Nzk5LCA0OTgxNCwgNDk4MjksIDQ5ODQ0LCA0OTg1OSwgNDk4NzQsIDQ5ODg5LCAKKyAgICA0OTkwNCwgNDk5MTksIDQ5OTM0LCA0OTk0OSwgNDk5NjQsIDQ5OTc5LCA0OTk5NCwgNTAwMDksIDUwMDI0LCA1MDAzOSwgCisgICAgNTAwNTQsIDUwMDY5LCA1MDA4NCwgNTAwOTksIDUwMTE0LCA1MDEyOSwgNTAxNDQsIDUwMTU5LCA1MDE3NCwgNTAxODksIAorICAgIDUwMjA0LCA1MDIxOSwgNTAyMzQsIDUwMjQ5LCA1MDI2NCwgNTAyNzksIDUwMjk0LCA1MDMwOSwgNTAzMjQsIDUwMzM5LCAKKyAgICA1MDM1NCwgNTAzNjksIDUwMzg0LCA1MDM5OSwgNTA0MTQsIDUwNDI5LCA1MDQ0NCwgNTA0NTksIDUwNDc0LCA1MDQ4OSwgCisgICAgNTA1MDQsIDUwNTE5LCA1MDUzNCwgNTA1NDksIDUwNTY0LCA1MDU3OSwgNTA1OTQsIDUwNjA5LCA1MDYyNCwgNTA2MzksIAorICAgIDUwNjU0LCA1MDY2OSwgNTA2ODQsIDUwNjk5LCA1MDcxNCwgNTA3MjksIDUwNzQ0LCA1MDc1OSwgNTA3NzQsIDUwNzg5LCAKKyAgICA1MDgwNCwgNTA4MTksIDUwODM0LCA1MDg0OSwgNTA4NjQsIDUwODc5LCA1MDg5NCwgNTA5MDksIDUwOTI0LCA1MDkzOSwgCisgICAgNTA5NTQsIDUwOTY5LCA1MDk4NCwgNTA5OTksIDUxMDE0LCA1MTAyOSwgNTEwNDQsIDUxMDU5LCA1MTA3NCwgNTEwODksIAorICAgIDUxMTA0LCA1MTExOSwgNTExMzQsIDUxMTQ5LCA1MTE2NCwgNTExNzksIDUxMTk0LCA1MTIwOSwgNTEyMjQsIDUxMjM5LCAKKyAgICA1MTI1NCwgNTEyNjksIDUxMjg0LCA1MTI5OSwgNTEzMTQsIDUxMzI5LCA1MTM0NCwgNTEzNTksIDUxMzc0LCA1MTM4OSwgCisgICAgNTE0MDQsIDUxNDE5LCA1MTQzNCwgNTE0NDksIDUxNDY0LCA1MTQ3OSwgNTE0OTQsIDUxNTA5LCA1MTUyNCwgNTE1MzksIAorICAgIDUxNTU0LCA1MTU2OSwgNTE1ODQsIDUxNTk5LCA1MTYxNCwgNTE2MjksIDUxNjQ0LCA1MTY1OSwgNTE2NzQsIDUxNjg5LCAKKyAgICA1MTcwNCwgNTE3MTksIDUxNzM0LCA1MTc0OSwgNTE3NjQsIDUxNzc5LCA1MTc5NCwgNTE4MDksIDUxODI0LCA1MTgzOSwgCisgICAgNTE4NTQsIDUxODY5LCA1MTg4NCwgNTE4OTksIDUxOTE0LCA1MTkyOSwgNTE5NDQsIDUxOTU5LCA1MTk3NCwgNTE5ODksIAorICAgIDUyMDA0LCA1MjAxOSwgNTIwMzQsIDUyMDQ5LCA1MjA2NCwgNTIwNzksIDUyMDk0LCA1MjEwOSwgNTIxMjQsIDUyMTM5LCAKKyAgICA1MjE1NCwgNTIxNjksIDUyMTg0LCA1MjE5OSwgNTIyMTQsIDUyMjI5LCA1MjI0NCwgNTIyNTksIDUyMjc0LCA1MjI4OSwgCisgICAgNTIzMDQsIDUyMzE5LCA1MjMzNCwgNTIzNDksIDUyMzY0LCA1MjM3OSwgNTIzOTQsIDUyNDA5LCA1MjQyNCwgNTI0MzksIAorICAgIDUyNDU0LCA1MjQ2OSwgNTI0ODQsIDUyNDk5LCA1MjUxNCwgNTI1MjksIDUyNTQ0LCA1MjU1OSwgNTI1NzQsIDUyNTg5LCAKKyAgICA1MjYwNCwgNTI2MTksIDUyNjM0LCA1MjY0OSwgNTI2NjQsIDUyNjc5LCA1MjY5NCwgNTI3MDksIDUyNzI0LCA1MjczOSwgCisgICAgNTI3NTQsIDUyNzY5LCA1Mjc4NCwgNTI3OTksIDUyODE0LCA1MjgyOSwgNTI4NDQsIDUyODU5LCA1Mjg3NCwgNTI4ODksIAorICAgIDUyOTA0LCA1MjkxOSwgNTI5MzQsIDUyOTQ5LCA1Mjk2NCwgNTI5NzksIDUyOTk0LCA1MzAwOSwgNTMwMjQsIDUzMDM5LCAKKyAgICA1MzA1NCwgNTMwNjksIDUzMDg0LCA1MzA5OSwgNTMxMTQsIDUzMTI5LCA1MzE0NCwgNTMxNTksIDUzMTc0LCA1MzE4OSwgCisgICAgNTMyMDQsIDUzMjE5LCA1MzIzNCwgNTMyNDksIDUzMjY0LCA1MzI3OSwgNTMyOTQsIDUzMzA5LCA1MzMyNCwgNTMzMzksIAorICAgIDUzMzU0LCA1MzM2OSwgNTMzODQsIDUzMzk5LCA1MzQxNCwgNTM0MjksIDUzNDQ0LCA1MzQ1OSwgNTM0NzQsIDUzNDg5LCAKKyAgICA1MzUwNCwgNTM1MTksIDUzNTM0LCA1MzU0OSwgNTM1NjQsIDUzNTc5LCA1MzU5NCwgNTM2MDksIDUzNjI0LCA1MzYzOSwgCisgICAgNTM2NTQsIDUzNjY5LCA1MzY4NCwgNTM2OTksIDUzNzE0LCA1MzcyOSwgNTM3NDQsIDUzNzU5LCA1Mzc3NCwgNTM3ODksIAorICAgIDUzODA0LCA1MzgxOSwgNTM4MzQsIDUzODQ5LCA1Mzg2NCwgNTM4NzksIDUzODk0LCA1MzkwOSwgNTM5MjQsIDUzOTM5LCAKKyAgICA1Mzk1NCwgNTM5NjksIDUzOTg0LCA1Mzk5OSwgNTQwMTQsIDU0MDI5LCA1NDA0NCwgNTQwNTksIDU0MDc0LCA1NDA4OSwgCisgICAgNTQxMDQsIDU0MTE5LCA1NDEzNCwgNTQxNDksIDU0MTY0LCA1NDE3OSwgNTQxOTQsIDU0MjA5LCA1NDIyNCwgNTQyMzksIAorICAgIDU0MjU0LCA1NDI2OSwgNTQyODQsIDU0Mjk5LCA1NDMxNCwgNTQzMjksIDU0MzQ1LCA1NDM2MSwgNTQzNzcsIDU0MzkzLCAKKyAgICA1NDQwOSwgNTQ0MjUsIDU0NDQxLCA1NDQ1NywgNTQ0NzMsIDU0NDg5LCA1NDUwNSwgNTQ1MjEsIDU0NTM3LCA1NDU1MywgCisgICAgNTQ1NjksIDU0NTg1LCA1NDYwMSwgNTQ2MTcsIDU0NjMzLCA1NDY0OSwgNTQ2NjUsIDU0NjgxLCA1NDY5NywgNTQ3MTMsIAorICAgIDU0NzI5LCA1NDc0NSwgNTQ3NjEsIDU0Nzc3LCA1NDc5MywgNTQ4MDksIDU0ODI1LCA1NDg0MSwgNTQ4NTcsIDU0ODczLCAKKyAgICA1NDg4OSwgNTQ5MDUsIDU0OTIxLCA1NDkzNywgNTQ5NTMsIDU0OTY5LCA1NDk4NSwgNTUwMDEsIDU1MDE3LCA1NTAzMywgCisgICAgNTUwNDksIDU1MDY1LCA1NTA4MSwgNTUwOTcsIDU1MTEzLCA1NTEyOSwgNTUxNDUsIDU1MTYxLCA1NTE3NywgNTUxOTMsIAorICAgIDU1MjA5LCA1NTIyNSwgNTUyNDEsIDU1MjU3LCA1NTI3MywgNTUyODksIDU1MzA1LCA1NTMyMSwgNTUzMzcsIDU1MzUzLCAKKyAgICA1NTM2OSwgNTUzODUsIDU1NDAxLCA1NTQxNywgNTU0MzMsIDU1NDQ5LCA1NTQ2NSwgNTU0ODEsIDU1NDk3LCA1NTUxMywgCisgICAgNTU1MjksIDU1NTQ1LCA1NTU2MSwgNTU1NzcsIDU1NTkzLCA1NTYwOSwgNTU2MjUsIDU1NjQxLCA1NTY1NywgNTU2NzMsIAorICAgIDU1Njg5LCA1NTcwNSwgNTU3MjEsIDU1NzM3LCA1NTc1MywgNTU3NjksIDU1Nzg1LCA1NTgwMSwgNTU4MTcsIDU1ODMzLCAKKyAgICA1NTg0OSwgNTU4NjUsIDU1ODgxLCA1NTg5NywgNTU5MTMsIDU1OTI5LCA1NTk0NSwgNTU5NjEsIDU1OTc3LCA1NTk5MywgCisgICAgNTYwMDksIDU2MDI1LCA1NjA0MSwgNTYwNTcsIDU2MDczLCA1NjA4OSwgNTYxMDUsIDU2MTIxLCA1NjEzNywgNTYxNTMsIAorICAgIDU2MTY5LCA1NjE4NSwgNTYyMDEsIDU2MjE3LCA1NjIzMywgNTYyNDksIDU2MjY1LCA1NjI4MSwgNTYyOTcsIDU2MzEzLCAKKyAgICA1NjMyOSwgNTYzNDUsIDU2MzYxLCA1NjM3NywgNTYzOTMsIDU2NDA5LCA1NjQyNSwgNTY0NDEsIDU2NDU3LCA1NjQ3MywgCisgICAgNTY0ODksIDU2NTA1LCA1NjUyMSwgNTY1MzcsIDU2NTUzLCA1NjU2OSwgNTY1ODUsIDU2NjAxLCA1NjYxNywgNTY2MzMsIAorICAgIDU2NjQ5LCA1NjY2NSwgNTY2ODEsIDU2Njk3LCA1NjcxMywgNTY3MjksIDU2NzQ1LCA1Njc2MSwgNTY3NzcsIDU2NzkzLCAKKyAgICA1NjgwOSwgNTY4MjUsIDU2ODQxLCA1Njg1NywgNTY4NzMsIDU2ODg5LCA1NjkwNSwgNTY5MjEsIDU2OTM3LCA1Njk1MywgCisgICAgNTY5NjksIDU2OTg1LCA1NzAwMSwgNTcwMTcsIDU3MDMzLCA1NzA0OSwgNTcwNjUsIDU3MDgxLCA1NzA5NywgNTcxMTMsIAorICAgIDU3MTI5LCA1NzE0NSwgNTcxNjEsIDU3MTc3LCA1NzE5MywgNTcyMDksIDU3MjI1LCA1NzI0MSwgNTcyNTcsIDU3MjczLCAKKyAgICA1NzI4OSwgNTczMDUsIDU3MzIxLCA1NzMzNywgNTczNTMsIDU3MzY5LCA1NzM4NSwgNTc0MDEsIDU3NDE3LCA1NzQzMywgCisgICAgNTc0NDksIDU3NDY1LCA1NzQ4MSwgNTc0OTcsIDU3NTEzLCA1NzUyOSwgNTc1NDUsIDU3NTYxLCA1NzU3NywgNTc1OTMsIAorICAgIDU3NjA5LCA1NzYyNSwgNTc2NDEsIDU3NjU3LCA1NzY3MywgNTc2ODksIDU3NzA1LCA1NzcyMSwgNTc3MzcsIDU3NzUzLCAKKyAgICA1Nzc2OSwgNTc3ODUsIDU3ODAxLCA1NzgxNywgNTc4MzMsIDU3ODQ5LCA1Nzg2NSwgNTc4ODEsIDU3ODk3LCA1NzkxMywgCisgICAgNTc5MjksIDU3OTQ1LCA1Nzk2MSwgNTc5NzcsIDU3OTkzLCA1ODAwOSwgNTgwMjUsIDU4MDQxLCA1ODA1NywgNTgwNzMsIAorICAgIDU4MDg5LCA1ODEwNSwgNTgxMjEsIDU4MTM3LCA1ODE1MywgNTgxNjksIDU4MTg1LCA1ODIwMSwgNTgyMTcsIDU4MjMzLCAKKyAgICA1ODI0OSwgNTgyNjUsIDU4MjgxLCA1ODI5NywgNTgzMTMsIDU4MzI5LCA1ODM0NSwgNTgzNjEsIDU4Mzc3LCA1ODM5MywgCisgICAgNTg0MDksIDU4NDI1LCA1ODQ0MSwgNTg0NTcsIDU4NDczLCA1ODQ4OSwgNTg1MDUsIDU4NTIxLCA1ODUzNywgNTg1NTMsIAorICAgIDU4NTY5LCA1ODU4NSwgNTg2MDEsIDU4NjE3LCA1ODYzMywgNTg2NDksIDU4NjY1LCA1ODY4MSwgNTg2OTcsIDU4NzEzLCAKKyAgICA1ODcyOSwgNTg3NDUsIDU4NzYxLCA1ODc3NywgNTg3OTMsIDU4ODA5LCA1ODgyNSwgNTg4NDEsIDU4ODU3LCA1ODg3MywgCisgICAgNTg4ODksIDU4OTA1LCA1ODkyMSwgNTg5MzcsIDU4OTUzLCA1ODk2OSwgNTg5ODUsIDU5MDAxLCA1OTAxNywgNTkwMzMsIAorICAgIDU5MDQ5LCA1OTA2NSwgNTkwODEsIDU5MDk3LCA1OTExMywgNTkxMjksIDU5MTQ1LCA1OTE2MSwgNTkxNzcsIDU5MTkzLCAKKyAgICA1OTIwOSwgNTkyMjUsIDU5MjQxLCA1OTI1NywgNTkyNzMsIDU5Mjg5LCA1OTMwNSwgNTkzMjEsIDU5MzM3LCA1OTM1MywgCisgICAgNTkzNjksIDU5Mzg1LCA1OTQwMSwgNTk0MTcsIDU5NDMzLCA1OTQ0OSwgNTk0NjUsIDU5NDgxLCA1OTQ5NywgNTk1MTMsIAorICAgIDU5NTI5LCA1OTU0NSwgNTk1NjEsIDU5NTc3LCA1OTU5MywgNTk2MDksIDU5NjI1LCA1OTY0MSwgNTk2NTcsIDU5NjczLCAKKyAgICA1OTY4OSwgNTk3MDUsIDU5NzIxLCA1OTczNywgNTk3NTMsIDU5NzY5LCA1OTc4NSwgNTk4MDEsIDU5ODE3LCA1OTgzMywgCisgICAgNTk4NDksIDU5ODY1LCA1OTg4MSwgNTk4OTcsIDU5OTEzLCA1OTkyOSwgNTk5NDUsIDU5OTYxLCA1OTk3NywgNTk5OTMsIAorICAgIDYwMDA5LCA2MDAyNSwgNjAwNDEsIDYwMDU3LCA2MDA3MywgNjAwODksIDYwMTA1LCA2MDEyMSwgNjAxMzcsIDYwMTUzLCAKKyAgICA2MDE2OSwgNjAxODUsIDYwMjAxLCA2MDIxNywgNjAyMzMsIDYwMjQ5LCA2MDI2NSwgNjAyODEsIDYwMjk3LCA2MDMxMywgCisgICAgNjAzMjksIDYwMzQ1LCA2MDM2MSwgNjAzNzcsIDYwMzkzLCA2MDQwOSwgNjA0MjUsIDYwNDQxLCA2MDQ1NywgNjA0NzMsIAorICAgIDYwNDg5LCA2MDUwNSwgNjA1MjEsIDYwNTM3LCA2MDU1MywgNjA1NjksIDYwNTg1LCA2MDYwMSwgNjA2MTcsIDYwNjMzLCAKKyAgICA2MDY0OSwgNjA2NjUsIDYwNjgxLCA2MDY5NywgNjA3MTMsIDYwNzI5LCA2MDc0NSwgNjA3NjEsIDYwNzc3LCA2MDc5MywgCisgICAgNjA4MDksIDYwODI1LCA2MDg0MSwgNjA4NTcsIDYwODczLCA2MDg4OSwgNjA5MDUsIDYwOTIxLCA2MDkzNywgNjA5NTMsIAorICAgIDYwOTY5LCA2MDk4NSwgNjEwMDEsIDYxMDE3LCA2MTAzMywgNjEwNDksIDYxMDY1LCA2MTA4MSwgNjEwOTcsIDYxMTEzLCAKKyAgICA2MTEyOSwgNjExNDUsIDYxMTYxLCA2MTE3NywgNjExOTMsIDYxMjA5LCA2MTIyNSwgNjEyNDEsIDYxMjU3LCA2MTI3MywgCisgICAgNjEyODksIDYxMzA1LCA2MTMyMSwgNjEzMzcsIDYxMzUzLCA2MTM2OSwgNjEzODUsIDYxNDAxLCA2MTQxNywgNjE0MzMsIAorICAgIDYxNDQ5LCA2MTQ2NSwgNjE0ODEsIDYxNDk3LCA2MTUxMywgNjE1MjksIDYxNTQ1LCA2MTU2MSwgNjE1NzcsIDYxNTkzLCAKKyAgICA2MTYwOSwgNjE2MjUsIDYxNjQxLCA2MTY1NywgNjE2NzMsIDYxNjg5LCA2MTcwNSwgNjE3MjEsIDYxNzM3LCA2MTc1MywgCisgICAgNjE3NjksIDYxNzg1LCA2MTgwMSwgNjE4MTcsIDYxODMzLCA2MTg0OSwgNjE4NjUsIDYxODgxLCA2MTg5NywgNjE5MTMsIAorICAgIDYxOTI5LCA2MTk0NSwgNjE5NjEsIDYxOTc3LCA2MTk5MywgNjIwMDksIDYyMDI1LCA2MjA0MSwgNjIwNTcsIDYyMDczLCAKKyAgICA2MjA4OSwgNjIxMDUsIDYyMTIxLCA2MjEzNywgNjIxNTMsIDYyMTY5LCA2MjE4NSwgNjIyMDEsIDYyMjE3LCA2MjIzMywgCisgICAgNjIyNDksIDYyMjY1LCA2MjI4MSwgNjIyOTcsIDYyMzEzLCA2MjMyOSwgNjIzNDUsIDYyMzYxLCA2MjM3NywgNjIzOTMsIAorICAgIDYyNDA5LCA2MjQyNSwgNjI0NDEsIDYyNDU3LCA2MjQ3MywgNjI0ODksIDYyNTA1LCA2MjUyMSwgNjI1MzcsIDYyNTUzLCAKKyAgICA2MjU2OSwgNjI1ODUsIDYyNjAxLCA2MjYxNywgNjI2MzMsIDYyNjQ5LCA2MjY2NSwgNjI2ODEsIDYyNjk3LCA2MjcxMywgCisgICAgNjI3MjksIDYyNzQ1LCA2Mjc2MSwgNjI3NzcsIDYyNzkzLCA2MjgwOSwgNjI4MjUsIDYyODQxLCA2Mjg1NywgNjI4NzMsIAorICAgIDYyODg5LCA2MjkwNSwgNjI5MjEsIDYyOTM3LCA2Mjk1MywgNjI5NjksIDYyOTg1LCA2MzAwMSwgNjMwMTYsIDE4MzA3LCAKKyAgICA2MzAyNSwgNjMwMzAsIDYzMDM2LCA2MzA0MiwgNjMwNTIsIDYzMDYwLCAxNjI3MCwgMTY4NjgsIDEwNzMzLCA2MzA3MywgCisgICAgMTUxOCwgMTUyMiwgNjMwODEsIDM5NzMsIDI5NTY2LCA3NTEyLCA2MzA4NywgNjMwOTIsIDYzMDk3LCA2MzEwMiwgNjMxMDcsIAorICAgIDYzMTEzLCA2MzExOCwgNjMxMjQsIDYzMTI5LCA2MzEzNSwgNjMxNDAsIDYzMTQ1LCA2MzE1MCwgNjMxNTUsIDYzMTYxLCAKKyAgICA2MzE2NiwgNjMxNzEsIDYzMTc2LCA2MzE4MSwgNjMxODYsIDYzMTkxLCA2MzE5NiwgNjMyMDIsIDYzMjA3LCA2MzIxMywgCisgICAgNjMyMjAsIDI2MDAsIDYzMjI1LCA2MzIzMSwgODkxMiwgNjMyMzUsIDYzMjQwLCA2MzI0NywgNjMyNTUsIDY1LCA2MzI1OSwgCisgICAgNjMyNjUsIDYzMjcwLCA2MzI3NSwgNjMyNzksIDYzMjg0LCA2MzI4OCwgNjMyOTIsIDExNjIxLCA2MzI5NiwgNjMzMDYsIAorICAgIDYzMzE5LCA2MzMzMCwgNjMzNDMsIDYzMzUwLCA2MzM1NiwgNjMzNjQsIDYzMzY5LCA2MzM3NSwgNjMzODEsIDYzMzg3LCAKKyAgICA2MzM5MiwgNjMzOTcsIDYzNDAyLCA2MzQwNywgNjM0MTEsIDYzNDE2LCA2MzQyMSwgNjM0MjYsIDYzNDMyLCA2MzQzOCwgCisgICAgNjM0NDQsIDYzNDQ5LCA2MzQ1MywgNjM0NTgsIDYzNDYzLCA2MzQ2NywgNjM0NzIsIDYzNDc3LCA2MzQ4MiwgNjM0ODYsIAorICAgIDExNjM3LCAxMTY0OCwgMTE2NTMsIDE1NjEsIDYzNDkwLCA2MzQ5NiwgMTU2NiwgNjM1MDEsIDYzNTA0LCAxNzc0MSwgCisgICAgNjM1MDksIDYzNTE1LCA2MzUyMCwgMTU5NywgNjM1MjYsIDE2MDMsIDE2MDksIDExNjgzLCA2MzUzMSwgNjM1NDAsIDYzNTQ4LCAKKyAgICA2MzU1NSwgNjM1NTksIDYzNTYzLCA2MzU2OSwgNjM1NzQsIDMzMzY1LCA2MzU3OSwgNjM1ODYsIDYzNTkzLCA2MzU5OCwgCisgICAgNjM2MDIsIDYzNjA2LCA2MzYxNSwgMTYxNCwgMTc4NTAsIDYzNjIwLCA2MzYyNCwgMTc4NjEsIDExNjIsIDYzNjI4LCAKKyAgICA2MzYzNSwgNjM2NDAsIDYzNjQ0LCAxNzg5MSwgMTYxOCwgNDEyNDMsIDYzNjQ3LCA2MzY1MiwgNjM2NjIsIDYzNjcxLCAKKyAgICA2MzY3NiwgNjM2ODAsIDYzNjg2LCAxNjIzLCA0Mzg1NSwgNjM2OTEsIDYzNzAwLCA2MzcwNiwgNjM3MTEsIDYzNzE2LCAKKyAgICAxMTg4MiwgMTE4ODgsIDYzNzIyLCA2MzczNCwgNjM3NTEsIDYzNzY4LCA2Mzc4NSwgNjM4MDIsIDYzODE5LCA2MzgzNiwgCisgICAgNjM4NTMsIDYzODcwLCA2Mzg4NywgNjM5MDQsIDYzOTIxLCA2MzkzOCwgNjM5NTUsIDYzOTcyLCA2Mzk4OSwgNjQwMDYsIAorICAgIDY0MDIzLCA2NDA0MCwgNjQwNTcsIDY0MDc0LCA2NDA5MSwgNjQxMDgsIDY0MTI1LCA2NDE0MiwgNjQxNTksIDY0MTc2LCAKKyAgICA2NDE5MywgNjQyMTAsIDY0MjI3LCA2NDI0NCwgNjQyNjEsIDY0Mjc4LCA2NDI5NSwgNjQzMTIsIDY0MzI5LCA2NDM0NiwgCisgICAgNjQzNjMsIDY0MzgwLCA2NDM5NywgNjQ0MTQsIDY0NDMxLCA2NDQ0OCwgNjQ0NjUsIDY0NDgyLCA2NDQ5OSwgNjQ1MTYsIAorICAgIDY0NTMzLCA2NDU1MCwgNjQ1NjcsIDY0NTc4LCA2NDU4OCwgNjQ1OTMsIDE2MjgsIDY0NTk3LCA2NDYwMiwgNjQ2MDgsIAorICAgIDY0NjEzLCA2NDYxOCwgNjQ2MjUsIDk4MzksIDE2MzMsIDY0NjMxLCA2NDY0MCwgMjk4ODcsIDY0NjQ1LCA2NDY1NiwgCisgICAgMTE4OTksIDY0NjY2LCA2NDY3MSwgNjQ2NzcsIDY0NjgyLCA2NDY4OSwgNjQ2OTUsIDY0NzAwLCAxNjM4LCAxODE3NCwgCisgICAgNjQ3MDUsIDY0NzExLCAxMTkwOSwgMTY0MywgMTE5MTQsIDY0NzE3LCA2NDcyMiwgNjQ3MjgsIDY0NzMzLCA2NDczOCwgCisgICAgNjQ3NDMsIDY0NzQ4LCA2NDc1MywgNjQ3NTgsIDY0NzYzLCA2NDc2OCwgNjQ3NzQsIDY0NzgwLCA2NDc4NiwgNjQ3OTEsIAorICAgIDY0Nzk1LCA2NDgwMCwgNjQ4MDUsIDY0ODA5LCA2NDgxNCwgNjQ4MTksIDY0ODI0LCA2NDgyOSwgNjQ4MzMsIDY0ODM4LCAKKyAgICA2NDg0NCwgNjQ4NDksIDY0ODU0LCA2NDg1OCwgNjQ4NjMsIDY0ODY4LCA2NDg3NCwgNjQ4NzksIDY0ODg0LCA2NDg5MCwgCisgICAgNjQ4OTYsIDY0OTAxLCA2NDkwNSwgNjQ5MTAsIDY0OTE1LCA2NDkyMCwgNjQ5MjQsIDY0OTI5LCA2NDkzNCwgNjQ5MzksIAorICAgIDY0OTQ1LCA2NDk1MSwgNjQ5NTYsIDY0OTYwLCA2NDk2NCwgNjQ5NjksIDY0OTc0LCA2NDk3OSwgMzEzOTUsIDY0OTgzLCAKKyAgICA2NDk4OCwgNjQ5OTMsIDY0OTk5LCA2NTAwNCwgNjUwMDksIDY1MDEzLCA2NTAxOCwgNjUwMjMsIDY1MDI5LCA2NTAzNCwgCisgICAgNjUwMzksIDY1MDQ1LCA2NTA1MSwgNjUwNTYsIDY1MDYwLCA2NTA2NSwgNjUwNzAsIDY1MDc0LCA2NTA3OSwgNjUwODQsIAorICAgIDY1MDg5LCA2NTA5NSwgNjUxMDEsIDY1MTA2LCA2NTExMCwgNjUxMTUsIDY1MTIwLCA2NTEyNCwgNjUxMjksIDY1MTM0LCAKKyAgICA2NTEzOSwgNjUxNDQsIDY1MTQ4LCA2NTE1MSwgNjUxNTQsIDY1MTU5LCA2NTE2NCwgMzQwNTYsIDY1MTcxLCA2NTE3OSwgCisgICAgMzY5MSwgMjk4MzcsIDY1MTg1LCA2NTE5MiwgNjUxOTgsIDM4MzAsIDEyMDIwLCA2NTIwNCwgNjUyMTQsIDY1MjI5LCAKKyAgICA2NTIzNywgMTIwMjUsIDY1MjQ4LCA2NTI1MywgNjUyNjQsIDY1Mjc2LCA2NTI4OCwgNjUzMDAsIDI3MzQsIDY1MzEyLCAKKyAgICA2NTMxNywgNjUzMjksIDY1MzMzLCA2NTMzOSwgNjUzNDUsIDY1MzUwLCAxNjYwLCAxNzQxOCwgNjUzNTksIDY1MzY0LCAKKyAgICA0MzkxNCwgNjUzNjgsIDY1MzcyLCA2NTM3NywgNjUzODEsIDE4MzE1LCA2NTM4NiwgNjUzODksIDY1Mzk0LCA2NTQwMiwgCisgICAgNjU0MTAsIDE2NjQsIDEyMDYxLCAxMjA2NywgMTY2OSwgNjU0MTgsIDY1NDI1LCA2NTQzMCwgNjU0MzksIDY1NDQ5LCAKKyAgICA2NTQ1NiwgNjU0NjEsIDY1NDY2LCAxNjc0LCA2NTQ3MywgNjU0NzgsIDE4NDM1LCA2NTQ4MiwgNjU0ODcsIDY1NDk0LCAKKyAgICA2NTUwMCwgNjU1MDQsIDY1NTE1LCA2NTUyNSwgNjU1MzIsIDE4NDU3LCA5NzMzLCA5NzQwLCA0MDIyLCA0MDI4LCA2NTUzOSwgCisgICAgMTY3OSwgNjU1NDQsIDY1NTUwLCA2NTU1OCwgNjU1NjUsIDY1NTcxLCA2NTU3OCwgNjU1OTAsIDY1NTk2LCA2NTYwMSwgCisgICAgNjU2MTMsIDY1NjI0LCA2NTYzMywgNjU2NDMsIDM5NTIsIDY1NjUxLCAzMzE2NiwgMzMxNzUsIDE4NDk3LCAxNjg0LCAxNjg4LCAKKyAgICA2NTY2NCwgNjU2NzUsIDY1NjgwLCAxNjk4LCA2NTY4OCwgNjU2OTMsIDY1Njk4LCAxODU1NiwgNjU3MTAsIDY1NzEzLCAKKyAgICA2NTcxOSwgNjU3MjUsIDY1NzMwLCA2NTczOCwgMTcwMywgNjU3NDMsIDY1NzQ4LCA2NTc1NiwgNjU3NjQsIDY1NzcxLCAKKyAgICA2NTc4MCwgNjU3ODgsIDY1Nzk3LCAxNzA4LCA2NTgwMSwgMTcxMywgMjMwMTYsIDY1ODA2LCA2NTgxMywgMTg2MzAsIAorICAgIDY1ODIxLCA2NTgyNywgNjU4MzIsIDY1ODQwLCA2NTg0NywgNjU4NTUsIDY1ODY1LCA2NTg3NCwgNjU4ODQsIDY1ODkzLCAKKyAgICA2NTkwNCwgNjU5MTQsIDY1OTI0LCA2NTkzMywgNjU5NDMsIDY1OTU3LCA2NTk3MCwgNjU5NzksIDY1OTg3LCA2NTk5NywgCisgICAgNjYwMDYsIDY2MDE4LCA2NjAyOSwgNjYwNDAsIDY2MDUwLCAxNzk0OCwgNjYwNTUsIDEyMjEzLCA2NjA2NCwgNjYwNzAsIAorICAgIDY2MDc1LCA2NjA4MiwgNjYwODksIDY2MDk1LCAxNzYxNywgNjYxMDUsIDY2MTExLCA2NjExNiwgNjYxMjcsIDY2MTMyLCAKKyAgICA2NjE0MCwgMTIyMzAsIDEyMjM1LCA2NjE0OCwgNjYxNTQsIDY2MTU4LCA2NjE2NiwgNDAxNywgMTg2OTIsIDQ0MDA3LCAKKyAgICA2NjE3MSwgNjYxNzcsIDY2MTgyLCA2NjE5MCwgNjYxOTcsIDEzMTc5LCA2NjIwMiwgNjYyMDgsIDE3MjQsIDY2MjEzLCAKKyAgICA2NjIxNiwgMTQzOCwgNjYyMjIsIDY2MjI3LCA2NjIzMiwgNjYyMzgsIDY2MjQzLCA2NjI0OCwgNjYyNTMsIDY2MjU4LCAKKyAgICA2NjI2MywgNjYyNjgsIDE3MzMsIDEzLCA2NjI3NCwgNjYyNzgsIDY2MjgzLCA2NjI4NywgNjYyOTEsIDY2Mjk1LCAzNDI5NiwgCisgICAgNjYzMDAsIDI1MDcwLCA2NjMwNSwgNjYzMTAsIDY2MzE0LCA2NjMxNywgNjYzMjEsIDY2MzI1LCA2NjMzMCwgNjYzMzQsIAorICAgIDY2MzM5LCA2NjM0MywgNjYzNDksIDM3NTE0LCAzNzUxOSwgMzc1MjQsIDY2MzUyLCA2NjM1OSwgNjYzNjUsIDY2MzczLCAKKyAgICA0MzY3OCwgNjYzODMsIDM3NTMwLCAzNDU2MCwgMzQzMTEsIDM0MzE3LCAzNzU0NiwgMzQzMjMsIDY2Mzg4LCA2NjM5MywgCisgICAgMzQ1OTMsIDY2Mzk3LCA2NjQwMCwgNjY0MDQsIDY2NDEyLCA2NjQxOSwgNjY0MjIsIDY2NDI3LCA2NjQzMiwgNjY0MzYsIAorICAgIDY2NDQwLCA2NjQ0MywgNjY0NTMsIDY2NDY1LCA2NjQ3MiwgNjY0NzgsIDM0MzI4LCA2NjQ4NSwgMzYwNzgsIDY2NDg4LCAKKyAgICA4OTI5LCAxMDE5LCA2NjQ5MSwgNjY0OTUsIDY2NTAwLCAzODczLCA2NjUwNCwgNjY1MDcsIDE0ODI3LCA2NjUxNCwgNjY1MjEsIAorICAgIDY2NTM0LCA2NjU0MiwgNjY1NTEsIDY2NTYwLCA2NjU2NSwgNjY1NzUsIDY2NTg4LCA2NjYwMCwgNjY2MDcsIDY2NjEyLCAKKyAgICA2NjYyMSwgNjY2MzQsIDM5MDM5LCA2NjY1MiwgNjY2NTcsIDY2NjY0LCA2NjY3MCwgNjY2NzUsIDgxOSwgNjY2ODAsIAorICAgIDY2Njg4LCA2NjY5NSwgNjY3MDIsIDI5MzkyLCA3ODMsIDY2NzA4LCA2NjcxNCwgNjY3MjQsIDY2NzMyLCA2NjczOCwgCisgICAgNjY3NDMsIDM0MzQ3LCA2MzEwLCAzNDM2MSwgNjY3NDcsIDY2NzU3LCA2Njc2MiwgNjY3NzIsIDY2Nzg3LCA2Njc5MywgCisgICAgNjY3OTksIDM0MzcxLCA2NjgwNCwgMzM0ODIsIDY2ODA4LCA2NjgxMywgNjY4MjAsIDY2ODI1LCA2NjgyOSwgNjY4MzQsIAorICAgIDE4NTAwLCA2Njg0MSwgNjY4NDYsIDY2ODUwLCA2MzUxLCAzNDM5NywgNjY4NTQsIDY2ODYwLCAzMjQsIDY2ODcwLCA2Njg3NywgCisgICAgNjY4ODQsIDY2ODg5LCA2Njg5OCwgNjM2NTYsIDY2OTA0LCA2NjkxMiwgNjY5MTYsIDY2OTIwLCA2NjkyNCwgNjY5MjgsIAorICAgIDY2OTMzLCA2NjkzNywgNjY5NDMsIDY2OTUxLCA2Njk1NiwgNjY5NjEsIDY2OTY2LCA2Njk3MCwgNjY5NzUsIDY2OTc5LCAKKyAgICA2Njk4MywgNjY5ODksIDY2OTk1LCA2NzAwMCwgNjcwMDQsIDY3MDA5LCAzNDUyMSwgNjcwMTMsIDM0NTI3LCAzNDUzMywgCisgICAgNjcwMTgsIDY3MDI0LCA2NzAzMSwgNjcwMzYsIDY3MDQwLCAzMzQ5OSwgMTgxNjcsIDY3MDQzLCA2NzA0NywgNjcwNTIsIAorICAgIDY3MDU5LCA2NzA2NSwgNjcwNjksIDY3MDc0LCA0MzM1MywgNjcwODAsIDY3MDg0LCA2NzA5MSwgNjcwOTUsIDY3MTAwLCAKKyAgICA2NzEwNiwgNjcxMTIsIDY3MTE4LCA2NzEzMCwgNjcxMzksIDY3MTQ5LCA2NzE1NSwgNjcxNjIsIDY3MTY3LCA2NzE3MiwgCisgICAgNjcxNzYsIDY3MTc5LCA2NzE4NSwgNjcxOTIsIDY3MTk3LCA2NzIwMiwgNjcyMDksIDY3MjE2LCA2NzIyMywgNjcyMjksIAorICAgIDY3MjM0LCA2NzIzOSwgNjcyNDcsIDM0NTM4LCAyNDYyLCA2NzI1MiwgNjcyNTcsIDY3MjYzLCA2NzI2OCwgNjcyNzQsIAorICAgIDY3Mjc5LCA2NzI4NCwgNjcyODksIDY3Mjk1LCAzNDU1OSwgNjczMDAsIDY3MzA2LCA2NzMxMiwgNjczMTgsIDM0NjI5LCAKKyAgICA2NzMyMywgNjczMjgsIDY3MzMzLCAzNDY0MCwgNjczMzgsIDY3MzQzLCA2NzM0OCwgNjczNTQsIDY3MzYwLCAzNDY0NSwgCisgICAgNjczNjUsIDY3MzcwLCA2NzM3NSwgMzQ3MDAsIDM0NzA2LCA2NzM4MCwgNjczODUsIDM0NzExLCAzNDczMywgMzAxMzYsIAorICAgIDM0NzM5LCAzNDc0MywgNjczOTAsIDEyOTA5LCA2NzM5NCwgNjc0MDIsIDY3NDA4LCA2NzQxNiwgNjc0MjMsIDY3NDI5LCAKKyAgICA2NzQzOSwgNjc0NDUsIDY3NDUyLCAxMTU1NiwgMzQ3NTcsIDY3NDU4LCA2NzQ3MSwgNjc0ODAsIDY3NDg2LCA2NzQ5NSwgCisgICAgNjc1MDEsIDI1MzgwLCA2NzUwOCwgNjc1MTUsIDY3NTI1LCA2NzUyOCwgMzQ3MDEsIDY3NTMzLCA2NzU0MCwgNjc1NDUsIAorICAgIDY3NTQ5LCA2NzU1MywgNjc1NTgsIDY3NTYyLCA0MTMzLCA2NzU2NywgNjc1NzIsIDY3NTc3LCAzNzYwOCwgMzc2MTMsIAorICAgIDY3NTgxLCAzNzYyNywgNjc1ODYsIDM3NjMyLCA2NzU5MSwgNjc1OTcsIDM3NjQ0LCAzNzY1MCwgMzc2NTYsIDY3NjAyLCAKKyAgICA2NzYwOCwgMjQzNjYsIDY3NjE5LCA2NzYyMiwgNjc2MzQsIDY3NjQyLCAzNDc4MCwgNjc2NDYsIDY3NjU1LCA2NzY2NSwgCisgICAgNjc2NzQsIDM0NzkwLCA2NzY3OSwgNjc2ODYsIDY3Njk1LCA2NzcwMSwgNjc3MDksIDY3NzE2LCA2NDAyLCA0NjczLCAKKyAgICA2NzcyMSwgMzQ3MTIsIDY3NzI3LCA2NzczMCwgNjc3MzYsIDY3NzQzLCA2Nzc0OCwgNjc3NTMsIDI1MjkwLCA2Nzc1NywgCisgICAgNjc3NjMsIDY3NzY5LCA2Nzc3NCwgNjc3NzksIDY3NzgzLCA2Nzc4OSwgNjc3OTUsIDM1OTg0LCAxMDQ4LCAzODY4OSwgCisgICAgNDA0MTksIDQwNDI1LCAzNDgyMSwgMzQ4MjYsIDY3ODAwLCA2NzgwNCwgNjc4MDgsIDY3ODExLCA2NzgyNCwgNjc4MzAsIAorICAgIDY3ODM0LCA2NzgzNywgNjc4NDIsIDM2MzIxLCA2Nzg0NiwgMzM1MDQsIDIyOTY2LCA2Nzg1MiwgNjMzMSwgNjMzOSwgOTU3MCwgCisgICAgNjc4NTUsIDY3ODYwLCA2Nzg2NSwgNjc4NzAsIDY3ODc1LCA2Nzg4MCwgNjc4ODUsIDY3ODkwLCA2Nzg5NSwgNjc5MDAsIAorICAgIDY3OTA2LCA2NzkxMSwgNjc5MTYsIDY3OTIyLCA2NzkyNywgNjc5MzIsIDY3OTM3LCA2Nzk0MiwgNjc5NDcsIDY3OTUyLCAKKyAgICA2Nzk1OCwgNjc5NjMsIDY3OTY5LCA2Nzk3NCwgNjc5NzksIDY3OTg0LCA2Nzk4OSwgNjc5OTQsIDY3OTk5LCA2ODAwNCwgCisgICAgNjgwMDksIDY4MDE0LCA2ODAxOSwgNjgwMjUsIDY4MDMwLCA2ODAzNSwgNjgwNDAsIDY4MDQ1LCA2ODA1MCwgNjgwNTUsIAorICAgIDY4MDYxLCA2ODA2NiwgNjgwNzEsIDY4MDc2LCA2ODA4MSwgNjgwODYsIDY4MDkxLCA2ODA5NiwgNjgxMDEsIDY4MTA2LCAKKyAgICA2ODExMiwgNjgxMTcsIDY4MTIyLCA2ODEyNywgNjgxMzIsIDY4MTM4LCA2ODE0NCwgNjgxNDksIDY4MTU1LCA2ODE2MCwgCisgICAgNjgxNjUsIDY4MTcwLCA2ODE3NSwgNjgxODAsIDE1MTEsIDE0NSwgNjgxODUsIDY4MTg5LCA2ODE5MywgNjgxOTcsIDI3MDc2LCAKKyAgICA2ODIwMSwgNjgyMDUsIDY4MjEwLCA2ODIxNCwgNjgyMTksIDY4MjIzLCA2ODIyOCwgNjgyMzMsIDY4MjM4LCA2ODI0MiwgCisgICAgNjgyNDYsIDY4MjUxLCA2ODI1NSwgMTQ1NDIsIDY4MjYwLCA2ODI2NCwgNjgyNzEsIDY4MjgxLCAxNjU5NSwgNjgyOTAsIAorICAgIDY4Mjk5LCA2ODMwMywgNjgzMDgsIDY4MzEzLCA2ODMxNywgNjgzMjEsIDI2ODcwLCAzMDc4LCA2ODMyNSwgNjgzMzEsIAorICAgIDE4OTY3LCA2ODMzNSwgNjgzNDQsIDY4MzUyLCA2ODM1OCwgNjgzNjMsIDY4Mzc1LCA2ODM4NywgNjgzOTIsIDY4Mzk2LCAKKyAgICA2ODQwMSwgNjg0MDUsIDY4NDExLCA2ODQxNywgNjg0MjIsIDY4NDMyLCA2ODQ0MiwgNjg0NDgsIDY4NDUzLCA2ODQ1NywgCisgICAgNjg0NjMsIDY4NDY4LCA2ODQ3NSwgNjg0ODEsIDY4NDg2LCA2ODQ5NSwgNjg1MDQsIDY4NTEyLCAxNjk5MywgNjg1MTYsIAorICAgIDY4NTI1LCA2ODUzMywgNjg1NDUsIDY4NTU2LCA2ODU2NywgNjg1NzYsIDY4NTgwLCA2ODU4OSwgNjg1OTcsIDY4NjA3LCAKKyAgICA2ODYxNSwgNjg2MjIsIDY4NjI4LCA2ODYzMywgNjg2MzksIDY4NjQ0LCA2ODY1NSwgNTQsIDMzMzA5LCA2ODY2MSwgMjgzMzEsIAorICAgIDI4MzQxLCA2ODY2NywgNjg2NzUsIDY4NjgyLCA2ODY4OCwgNjg2OTIsIDY4NzAyLCA2ODcxMywgNjg3MjEsIDY4NzMwLCAKKyAgICA2ODczNSwgNjg3NDAsIDY4NzQ1LCA2ODc0OSwgNjg3NTMsIDE4OTIxLCA2ODc2MSwgNjg3NjUsIDY4NzcxLCA2ODc4MSwgCisgICAgNjg3ODgsIDY4Nzk0LCA2ODgwMCwgMzc3MDcsIDY4ODA0LCA2ODgwNiwgNjg4MDksIDY4ODE1LCA2ODgxOSwgNjg4MzAsIAorICAgIDY4ODQwLCA2ODg0NiwgNjg4NTMsIDY4ODYwLCAxNDQ3OSwgNjg4NjgsIDY4ODc0LCA2ODg4MywgNjg4OTIsIDY4ODk4LCAKKyAgICAxMDYxNSwgNjg5MDQsIDY4OTEwLCA2ODkxNSwgNjg5MjAsIDY4OTI3LCA2ODkzMiwgNjg5MzksIDY4OTQ1LCA2ODk1MCwgCisgICAgNjg5NTgsIDY4OTcxLCA2ODk4MCwgNjU5MTksIDY1OTI5LCA2ODk4OSwgNjg5OTUsIDY5MDAxLCA2OTAwOCwgNjkwMTUsIAorICAgIDY5MDIyLCA2OTAyOSwgNjkwMzYsIDY5MDQxLCA2OTA0NSwgNjkwNDksIDY5MDUyLCA2OTA2MiwgNjkwNjYsIDY5MDc4LCAKKyAgICA2OTA4NywgNjkwOTEsIDY5MTAyLCA2OTEwNywgNjkxMTEsIDY1OTM4LCA2OTExNywgNjkxMjQsIDY5MTMzLCA2OTE0MSwgCisgICAgNjkxNDksIDY5MTU0LCA2OTE1OCwgNjkxNjMsIDY5MTY4LCA2OTE3OCwgNjkxODYsIDY5MTkxLCA2OTE5NSwgNjkxOTksIAorICAgIDY5MjA1LCA2OTIxMywgNjkyMjAsIDY5MjMyLCA2OTI0MCwgNjkyNTEsIDY5MjU4LCA2OTI2NCwgNjkyNzQsIDY5MjgwLCAKKyAgICA2OTI4NCwgNjkyOTEsIDY5Mjk3LCA2OTMwMiwgNjkzMDYsIDY5MzEwLCA2OTMxNCwgNjkzMjMsIDY5MzMyLCA2OTM0MSwgCisgICAgNjkzNDcsIDY5MzUzLCA2OTM1OSwgNjkzNjQsIDY5MzcxLCA2OTM3NywgNjkzODUsIDY5MzkyLCA2OTM5OCwgMTM2MjIsIAorICAgIDY5NDAzLCA2OTQwOSwgNjk0MTMsIDE1NTI5LCA2OTQxNywgNjk0MjIsIDY5NDMyLCA2OTQ0MSwgNjk0NDcsIDY5NDUzLCAKKyAgICA2OTQ2MSwgNjk0NjgsIDY5NDcyLCA2OTQ3NiwgNjk0ODIsIDY5NDkwLCA2OTQ5NywgNjk1MDMsIDY5NTE0LCA2OTUxOCwgCisgICAgNjk1MjIsIDY5NTI2LCA2OTUyOSwgNjk1MzUsIDY5NTQwLCA2OTU0NSwgNjk1NDksIDY5NTUzLCA2OTU2MiwgNjk1NzAsIAorICAgIDY5NTc3LCA2OTU4MywgNjk1OTAsIDI1OTYzLCA0MzQyMiwgNjk1OTUsIDY5NjAzLCA2OTYwNywgNjk2MTEsIDY5NjE0LCAKKyAgICA2OTYyMiwgNjk2MjksIDY5NjM1LCA2OTY0NCwgNjk2NTIsIDY5NjU4LCA2OTY2MywgNjk2NjcsIDY5NjcyLCA2OTY3NywgCisgICAgNjk2ODEsIDY5Njg1LCA2OTY4OSwgNjk2OTQsIDY5NzAzLCA2OTcwNywgNjk3MTQsIDQwNTI4LCA2OTcxOCwgNjk3MjQsIAorICAgIDY5NzI4LCA2OTczNiwgNjk3NDIsIDY5NzQ3LCA2OTc1OCwgNjk3NjYsIDY5NzcyLCA2OTc4MSwgMjQ1MTMsIDY5Nzg5LCAKKyAgICA2OTc5NiwgNjk4MDMsIDY5ODEwLCA2OTgxNywgNjk4MjQsIDQ2NzA0LCAxNDMxNywgNjk4MzEsIDY5ODM4LCA2OTg0MywgCisgICAgMzc3NDMsIDY1MjksIDY5ODQ5LCA2OTg1NCwgNjk4NTksIDY5ODY1LCA2OTg3MSwgNjk4NzcsIDY5ODgyLCA2OTg4NywgCisgICAgNjk4OTIsIDY5ODk3LCA2OTkwMywgNjk5MDgsIDY5OTE0LCA2OTkxOSwgNjk5MjUsIDY5OTMwLCA2OTkzNSwgNjk5NDAsIAorICAgIDY5OTQ1LCA2OTk1MCwgNjk5NTUsIDY5OTYwLCA2OTk2NiwgNjk5NzEsIDY5OTc3LCA2OTk4MiwgNjk5ODcsIDY5OTkyLCAKKyAgICA2OTk5NywgNzAwMDIsIDcwMDA3LCA3MDAxMywgNzAwMTgsIDcwMDIzLCA3MDAyOCwgNzAwMzMsIDcwMDM4LCA3MDA0MywgCisgICAgNzAwNDgsIDcwMDUzLCA3MDA1OCwgNzAwNjMsIDcwMDY5LCA3MDA3NCwgNzAwNzksIDcwMDg0LCA3MDA4OSwgNzAwOTQsIAorICAgIDcwMDk5LCA3MDEwNCwgNzAxMDksIDcwMTE1LCA3MDEyMCwgNzAxMjUsIDcwMTMwLCA3MDEzNSwgNzAxNDAsIDcwMTQ1LCAKKyAgICA3MDE1MCwgNzAxNTUsIDcwMTYwLCA3MDE2NSwgNzAxNzAsIDcwMTc1LCA3MDE4MSwgMTg1NCwgMjYwLCA3MDE4NiwgNDEzNjEsIAorICAgIDcwMTkwLCA3MDE5MywgNzAxOTgsIDcwMjAyLCA3MDIwNSwgMzQxNSwgNzAyMTAsIDcwMjE1LCA3MDIxOSwgNzAyMjgsIAorICAgIDcwMjM5LCA3MDI1NiwgNzAyNzQsIDY5MTQ1LCA3MDI4MiwgNzAyODUsIDcwMjk1LCA3MDMwMiwgNzAzMTEsIDcwMzI3LCAKKyAgICA3MDMzNiwgNzAzNDYsIDcwMzUxLCA3MDM2MSwgNzAzNzAsIDcwMzc4LCA3MDM5MiwgNzA0MDAsIDcwNDA0LCA3MDQwNywgCisgICAgNzA0MTQsIDcwNDIwLCA3MDQzMSwgNzA0MzgsIDcwNDUwLCA3MDQ2MSwgNzA0NzIsIDcwNDgxLCA3MDQ4OCwgMTI3OCwgNzEwLCAKKyAgICA3MDQ5OCwgMjYyOSwgNzA1MDIsIDcwNTA3LCA3MDUxNiwgOTIyMSwgMTg4OTQsIDIyNDcxLCA3MDUyNCwgNzA1MzIsIAorICAgIDcwNTQ2LCA3MDU1OSwgNzA1NjMsIDcwNTY4LCA3MDU3MywgNzA1NzgsIDcwNTg0LCA3MDU5MCwgNzA1OTUsIDg5MjEsIAorICAgIDE2NjIzLCA3MDYwMCwgNzA2MDQsIDcwNjEyLCAxMjA2MiwgNzA2MTcsIDcwNjIzLCA3MDYzMiwgNzA2NDAsIDE3MzYsIAorICAgIDEyMDc0LCA5MDgsIDY0NjUsIDcwNjQ0LCA3MDY0OCwgNzA2NTcsIDcwNjY3LCAyNDE5LCAyOTEyNywgNzA2NzYsIDcwNjgyLCAKKyAgICAxODQwNywgMjkxNDIsIDcwNjg4LCA0MTkzLCAxMjQ1MiwgNzA2OTQsIDcwNzAxLCA2NTY3MCwgNzA3MDUsIDcwNzA5LCAKKyAgICA3MDcxNSwgNzA3MjAsIDcwNzI1LCAzNjM0LCAxNTQsIDE1NDM3LCA3MDczMCwgNzA3NDIsIDcwNzQ2LCA3MDc1MiwgNzA3NTcsIAorICAgIDI5OTA3LCA3MDc2MSwgMTI0NDAsIDI3NjksIDQsIDcwNzY2LCA3MDc3NiwgNzA3ODcsIDcwNzkzLCA3MDgwNCwgNzA4MTEsIAorICAgIDcwODE3LCA3MDgyMywgNzA4MzEsIDcwODM4LCA3MDg0NCwgNzA4NTQsIDcwODY0LCA3MDg3NCwgNzA4ODMsIDI1MzY3LCAKKyAgICAxMjkwLCA3MDg4OCwgNzA4OTIsIDcwODk2LCA3MDkwMiwgNzA5MDYsIDI3OTIsIDI3OTgsIDg5MTgsIDIyOTQsIDcwOTEwLCAKKyAgICA3MDkxNCwgNzA5MjMsIDcwOTMxLCA3MDk0MiwgNzA5NTAsIDcwOTU4LCA3MDk2NCwgNzA5NjksIDcwOTgwLCA3MDk5MSwgCisgICAgNzA5OTksIDcxMDA1LCA3MTAxMCwgMTA0MzQsIDcxMDIwLCA3MTAyOCwgNzEwMzIsIDcxMDM2LCA3MTA0MSwgNzEwNDUsIAorICAgIDcxMDU3LCAzMDMxNCwgMTY1NDgsIDcxMDY0LCA3MTA3NCwgNzEwODAsIDcxMDg2LCAxMDUzNiwgNzEwOTYsIDcxMTA3LCAKKyAgICA3MTExOCwgNzExMjgsIDcxMTM3LCA3MTE0MSwgNzExNDgsIDE3NTAsIDk5NiwgNzExNTgsIDcxMTYzLCA3MTE3MSwgNjU0ODMsIAorICAgIDcxMTc5LCA3MTE4NCwgNzExOTUsIDcxMjAyLCA3MTIxNiwgMTUzNjYsIDQ3OCwgNzEyMjYsIDcxMjMwLCA3MTIzNCwgCisgICAgNzEyNDIsIDcxMjUxLCA3MTI1OSwgNzEyNjUsIDcxMjc5LCA3MTI4NiwgNzEyOTIsIDcxMzAxLCA3MTMwOCwgNzEzMTgsIAorICAgIDcxMzI2LCA3MTMzMywgNzEzNDEsIDcxMzQ4LCA0MDI0LCAxNDksIDcxMzU2LCA3MTM2NywgNzEzNzEsIDcxMzgzLCA3MTM4OSwgCisgICAgMTI2MzMsIDE5MiwgNzEzOTQsIDk4NzEsIDcxMzk5LCA3MTQwMywgNzE0MTAsIDcxNDE2LCA3MTQyNCwgNzE0MzEsIDkyODAsIAorICAgIDcxNDM4LCA3MTQ0NywgNzE0NTUsIDQwOTMsIDcxNDY4LCA0MTEwLCA3MTQ3MiwgMjg0MiwgNTE0LCA3MTQ3NywgNzE0OTAsIAorICAgIDcxNDk0LCA3MTQ5OSwgMjg0NywgMTg1MywgODA5LCA3MTUwMywgNDExNCwgNzE1MTEsIDcxNTE3LCA3MTUyMSwgODY2LCAKKyAgICA3MTUzMSwgNzE1NDAsIDcxNTQ1LCAzNjUxLCA3MTU0OSwgMTYzMDQsIDE2MzExLCA1MDA2NiwgNzE1NTMsIDQxNDUsIDQwMzQsIAorICAgIDE0MjAwLCA3MTU2MSwgNzE1NjgsIDcxNTczLCAyNTQzMSwgNzE1NzcsIDcxNTg0LCA3MTU5MCwgNzE1OTUsIDcxNjAwLCAKKyAgICAxNjMyNCwgMTg2LCA3MTYwNSwgNzE2MTcsIDcxNjIzLCA3MTYzMSwgMjg1OSwgMTc2OCwgNzE2MzksIDcxNjQxLCA3MTY0NiwgCisgICAgNzE2NTEsIDcxNjU2LCA3MTY2MiwgNzE2NjcsIDcxNjcyLCA3MTY3NywgNzE2ODIsIDcxNjg3LCA3MTY5MiwgNzE2OTgsIAorICAgIDcxNzAzLCA3MTcwOCwgNzE3MTMsIDcxNzE4LCA3MTcyMywgNzE3MjgsIDcxNzMzLCA3MTczOCwgNzE3NDQsIDcxNzQ5LCAKKyAgICA3MTc1NCwgNzE3NTksIDcxNzY1LCA3MTc3MCwgNzE3NzYsIDcxNzgxLCA3MTc4NiwgNzE3OTEsIDcxNzk2LCA3MTgwMSwgCisgICAgNzE4MDYsIDcxODExLCA3MTgxNywgNzE4MjIsIDcxODI4LCA3MTgzMywgNzE4MzgsIDcxODQzLCA3MTg0OCwgNzE4NTMsIAorICAgIDcxODU4LCA3MTg2MywgNzE4NjgsIDcxODc0LCA3MTg4MCwgNzE4ODUsIDcxODkwLCA3MTg5NiwgNzE5MDEsIDcxOTA1LCAKKyAgICA3MTkwOSwgNzE5MTQsIDcxOTIwLCA3MTkyNCwgNzE5MzAsIDcxOTM1LCA3MTk0MCwgNzE5NDYsIDcxOTUxLCA3MTk1NSwgCisgICAgNzE5NjAsIDcxOTY1LCA3MTk2OSwgNzE5NzIsIDcxOTc0LCA3MTk3OCwgNzE5ODEsIDcxOTg4LCA3MTk5MywgNzE5OTcsIAorICAgIDcyMDAyLCA3MjAwNiwgNzIwMTAsIDcyMDE0LCA3MjAyMywgNzIwMjcsIDM1MDI2LCA3MjAzMCwgMzUwMzEsIDcyMDM3LCAKKyAgICA3MjA0MiwgMzUwMzYsIDcyMDUxLCA3MjA2MCwgMzUwNDIsIDcyMDY1LCAzNTA0NywgNzIwNzQsIDcyMDc5LCAxMjY3NiwgCisgICAgNzIwODMsIDcyMDg4LCA3MjA5MywgMzUwNTIsIDcyMDk3LCA0NDkyMSwgNzIxMDEsIDcyMTA0LCA3MjEwOCwgODU4OSwgCisgICAgNzIxMTQsIDcyMTE3LCA3MjEyMiwgNzIxMjYsIDM4ODgsIDM1MDU3LCA3MjEyOSwgNzIxMzMsIDcyMTM2LCA3MjE0MSwgCisgICAgNzIxNDUsIDcyMTUxLCA3MjE1OSwgNzIxNzIsIDcyMTgxLCA3MjE4NywgNzIxOTIsIDcyMTk4LCA3MjIwMiwgNzIyMDgsIAorICAgIDcyMjE0LCA3MjIyMiwgNzIyMjcsIDcyMjMxLCA3MjIzOCwgNzIyNDQsIDcyMjUyLCA3MjI2MSwgNzIyNjksIDM1MDYwLCAKKyAgICA3MjI3NiwgNzIyODYsIDcyMjk5LCA3MjMwNCwgNzIzMDksIDcyMzEzLCA3MjMyMiwgNzIzMjgsIDcyMzM1LCA3MjM0NiwgCisgICAgNzIzNTgsIDcyMzY1LCA3MjM3NCwgNzIzODMsIDcyMzkyLCA3MjM5OSwgNzI0MDUsIDcyNDEyLCA3MjQyMCwgNzI0MjcsIAorICAgIDcyNDM1LCA3MjQ0NCwgNzI0NTIsIDcyNDU5LCA3MjQ2NywgNzI0NzYsIDcyNDg0LCA3MjQ5MywgNzI1MDMsIDcyNTEyLCAKKyAgICA3MjUyMCwgNzI1MjcsIDcyNTM1LCA3MjU0NCwgNzI1NTIsIDcyNTYxLCA3MjU3MSwgNzI1ODAsIDcyNTg4LCA3MjU5NywgCisgICAgNzI2MDcsIDcyNjE2LCA3MjYyNiwgNzI2MzcsIDcyNjQ3LCA3MjY1NiwgNzI2NjQsIDcyNjcxLCA3MjY3OSwgNzI2ODgsIAorICAgIDcyNjk2LCA3MjcwNSwgNzI3MTUsIDcyNzI0LCA3MjczMiwgNzI3NDEsIDcyNzUxLCA3Mjc2MCwgNzI3NzAsIDcyNzgxLCAKKyAgICA3Mjc5MSwgNzI4MDAsIDcyODA4LCA3MjgxNywgNzI4MjcsIDcyODM2LCA3Mjg0NiwgNzI4NTcsIDcyODY3LCA3Mjg3NiwgCisgICAgNzI4ODYsIDcyODk3LCA3MjkwNywgNzI5MTgsIDcyOTMwLCA3Mjk0MSwgNzI5NTEsIDcyOTYwLCA3Mjk2OCwgNzI5NzUsIAorICAgIDcyOTgzLCA3Mjk5MiwgNzMwMDAsIDczMDA5LCA3MzAxOSwgNzMwMjgsIDczMDM2LCA3MzA0NSwgNzMwNTUsIDczMDY0LCAKKyAgICA3MzA3NCwgNzMwODUsIDczMDk1LCA3MzEwNCwgNzMxMTIsIDczMTIxLCA3MzEzMSwgNzMxNDAsIDczMTUwLCA3MzE2MSwgCisgICAgNzMxNzEsIDczMTgwLCA3MzE5MCwgNzMyMDEsIDczMjExLCA3MzIyMiwgNzMyMzQsIDczMjQ1LCA3MzI1NSwgNzMyNjQsIAorICAgIDczMjcyLCA3MzI4MSwgNzMyOTEsIDczMzAwLCA3MzMxMCwgNzMzMjEsIDczMzMxLCA3MzM0MCwgNzMzNTAsIDczMzYxLCAKKyAgICA3MzM3MSwgNzMzODIsIDczMzk0LCA3MzQwNSwgNzM0MTUsIDczNDI0LCA3MzQzNCwgNzM0NDUsIDczNDU1LCA3MzQ2NiwgCisgICAgNzM0NzgsIDczNDg5LCA3MzQ5OSwgNzM1MTAsIDczNTIyLCA3MzUzMywgNzM1NDUsIDczNTU4LCA3MzU3MCwgNzM1ODEsIAorICAgIDczNTkxLCA3MzYwMCwgNzM2MDgsIDczNjE1LCA3MzYyMywgNzM2MzIsIDczNjQwLCA3MzY0OSwgNzM2NTksIDczNjY4LCAKKyAgICA3MzY3NiwgNzM2ODUsIDczNjk1LCA3MzcwNCwgNzM3MTQsIDczNzI1LCA3MzczNSwgNzM3NDQsIDczNzUyLCA3Mzc2MSwgCisgICAgNzM3NzEsIDczNzgwLCA3Mzc5MCwgNzM4MDEsIDczODExLCA3MzgyMCwgNzM4MzAsIDczODQxLCA3Mzg1MSwgNzM4NjIsIAorICAgIDczODc0LCA3Mzg4NSwgNzM4OTUsIDczOTA0LCA3MzkxMiwgNzM5MjEsIDczOTMxLCA3Mzk0MCwgNzM5NTAsIDczOTYxLCAKKyAgICA3Mzk3MSwgNzM5ODAsIDczOTkwLCA3NDAwMSwgNzQwMTEsIDc0MDIyLCA3NDAzNCwgNzQwNDUsIDc0MDU1LCA3NDA2NCwgCisgICAgNzQwNzQsIDc0MDg1LCA3NDA5NSwgNzQxMDYsIDc0MTE4LCA3NDEyOSwgNzQxMzksIDc0MTUwLCA3NDE2MiwgNzQxNzMsIAorICAgIDc0MTg1LCA3NDE5OCwgNzQyMTAsIDc0MjIxLCA3NDIzMSwgNzQyNDAsIDc0MjQ4LCA3NDI1NywgNzQyNjcsIDc0Mjc2LCAKKyAgICA3NDI4NiwgNzQyOTcsIDc0MzA3LCA3NDMxNiwgNzQzMjYsIDc0MzM3LCA3NDM0NywgNzQzNTgsIDc0MzcwLCA3NDM4MSwgCisgICAgNzQzOTEsIDc0NDAwLCA3NDQxMCwgNzQ0MjEsIDc0NDMxLCA3NDQ0MiwgNzQ0NTQsIDc0NDY1LCA3NDQ3NSwgNzQ0ODYsIAorICAgIDc0NDk4LCA3NDUwOSwgNzQ1MjEsIDc0NTM0LCA3NDU0NiwgNzQ1NTcsIDc0NTY3LCA3NDU3NiwgNzQ1ODYsIDc0NTk3LCAKKyAgICA3NDYwNywgNzQ2MTgsIDc0NjMwLCA3NDY0MSwgNzQ2NTEsIDc0NjYyLCA3NDY3NCwgNzQ2ODUsIDc0Njk3LCA3NDcxMCwgCisgICAgNzQ3MjIsIDc0NzMzLCA3NDc0MywgNzQ3NTQsIDc0NzY2LCA3NDc3NywgNzQ3ODksIDc0ODAyLCA3NDgxNCwgNzQ4MjUsIAorICAgIDc0ODM3LCA3NDg1MCwgNzQ4NjIsIDc0ODc1LCA3NDg4OSwgNzQ5MDIsIDc0OTE0LCA3NDkyNSwgNzQ5MzUsIDc0OTQ0LCAKKyAgICA3NDk1MiwgNzQ5NTksIDc0OTY0LCA4NDE5LCA3NDk3MSwgMzUwNzAsIDc0OTc2LCA3NDk4MSwgMzUwNzUsIDc0OTg3LCAKKyAgICAyMjU3OSwgMzUwODAsIDc0OTkyLCA3NDk5OCwgNzUwMDYsIDc1MDEyLCA3NTAxOCwgNzUwMjUsIDc1MDMyLCA3NTAzNywgCisgICAgNzUwNDEsIDc1MDQ1LCA3NTA0OCwgNzUwNTIsIDc1MDYxLCA3NTA3MCwgNzUwNzgsIDc1MDg0LCA3NTA5NiwgNzUxMDcsIAorICAgIDc1MTExLCAzMTQwLCA4Mzk0LCA3NTExNiwgNzUxMTksIDc1MTIxLCA3NTEyNSwgNzUxMjksIDc1MTMzLCA3NTEzOSwgCisgICAgNzUxNDQsIDI3OTkwLCA3NTE0OSwgNzUxNTMsIDc1MTU2LCA3NTE2MSwgNzUxNjUsIDc1MTcyLCA3NTE3OCwgNzUxODIsIAorICAgIDY0ODUsIDc1MTg2LCAzNTA5NywgNzUxOTEsIDc1MTk4LCA3NTIwNywgNzUyMTUsIDc1MjI2LCA3NTIzNCwgNzUyNDMsIAorICAgIDc1MjUxLCA3NTI1OCwgNzUyNjUsIDc1MjcxLCA3NTI4MiwgMzUxMDIsIDc1Mjg3LCA3NTI5OCwgNzUzMTAsIDc1MzE4LCAKKyAgICA3NTMyOSwgNzUzMzgsIDc1MzQ5LCA3NTM1NCwgNzUzNjIsIDI1OTUsIDc1MzY3LCAzNzE2NiwgNzUzODAsIDc1Mzg0LCAKKyAgICA3NTM5NiwgNzU0MDQsIDc1NDA5LCA3NTQxNywgNzU0MjgsIDE5MTE0LCA3NTQzNywgNzU0NDMsIDc1NDUwLCA3NTQ1OCwgCisgICAgNzU0NjQsIDM1MTEyLCA3NTQ2OSwgNDEzOSwgNjMwNTYsIDc1NDc2LCA3NTQ3OSwgNzU0ODcsIDc1NTAwLCA3NTUxMywgCisgICAgNzU1MjYsIDc1NTM5LCA3NTU0NiwgNzU1NTcsIDc1NTY2LCA3NTU3MSwgNDY1MjEsIDQ2NTI2LCA3NTU3NSwgNzU1NzksIAorICAgIDc1NTg3LCA3NTU5NCwgNzU2MDMsIDc1NjExLCA3NTYxNywgNzU2MjYsIDc1NjM0LCA3NTY0MSwgNzU2NDksIDc1NjUzLCAKKyAgICA3NTY2MiwgNzU2NzEsIDc1NjgxLCA3NTY5NCwgNzU3MDcsIDc1NzE3LCAzNTExNywgNzU3MjMsIDc1NzMwLCA3NTczNiwgCisgICAgNzU3NDIsIDM1MTIzLCA3NTc0NywgNzU3NTAsIDc1NzU0LCA3NTc2MiwgNzU3NzEsIDQ2MjU5LCA3NTc3OSwgNzU3ODgsIAorICAgIDc1Nzk2LCA3NTgwMywgNzU4MTEsIDc1ODIxLCA3NTgzMCwgNzU4MzksIDM2NDIwLCA3NTg0OCwgNzU4NTksIDc1ODc0LCAKKyAgICA3NTg4NCwgOTkwNCwgMjMyNjMsIDc1ODkzLCA3NTg5OCwgNzU5MDMsIDc1OTA3LCA3NTkxMiwgNzU5MTYsIDc1OTIxLCAKKyAgICA3NTkyNywgNzU5MzIsIDc1OTM3LCA3NTk0MywgNzU5NDgsIDc1OTUzLCAyMzIyOCwgNzU5NTgsIDc1OTY1LCA3NTk3MywgCisgICAgNzU5ODEsIDc1OTg5LCA3NTk5NCwgNzYwMDEsIDc2MDA4LCA3NjAxMywgMjI3MiwgNzYwMTcsIDc2MDIxLCA3NjAyOSwgCisgICAgNzYwMzcsIDM1MTQwLCA3NjA0MywgNzYwNDksIDc2MDYxLCA3NjA2NywgNzYwNzQsIDc2MDc4LCA3NjA4NSwgNzYwOTAsIAorICAgIDc2MDk3LCA3NjEwMywgNzYxMTAsIDc2MTIxLCA3NjEzMSwgNzYxNDEsIDc2MTUzLCA3NjE1OSwgNzYxNjcsIDc2MTczLCAKKyAgICA3NjE4MywgNzYxOTMsIDM1MTY3LCA3NjIwMiwgNzYyMTEsIDc2MjE3LCA3NjIyOSwgNzYyNDAsIDc2MjQ3LCA3NjI1MiwgCisgICAgNzYyNTYsIDc2MjY0LCA3NjI3MCwgNzYyNzUsIDc2MjgwLCA3NjI4NywgNzYyOTUsIDc2MzA3LCA3NjMxNywgNzYzMjYsIAorICAgIDc2MzM1LCA3NjM0MiwgMzcwMTksIDI1NzY0LCA3NjM0OCwgNzYzNTMsIDc2MzU3LCA3NjM2MSwgNzYzNjYsIDc2Mzc0LCAKKyAgICA3NjM4MCwgNzYzOTEsIDc2NDA0LCA3NjQwOSwgNzY0MTYsIDM1MTcyLCA3NjQyMSwgNzY0MzMsIDc2NDQyLCA3NjQ1MCwgCisgICAgNzY0NjAsIDc2NDcxLCA3NjQ4NCwgNzY0OTEsIDc2NTAwLCA3NjUwOSwgNzY1MTcsIDc2NTIyLCA3NjUyOCwgMTUwMCwgCisgICAgNzY1MzMsIDc2NTM4LCA3NjU0MywgNzY1NDgsIDc2NTU0LCA3NjU1OSwgNzY1NjQsIDc2NTcwLCA3NjU3NiwgNzY1ODEsIAorICAgIDc2NTg1LCA3NjU5MCwgNzY1OTUsIDc2NjAwLCA2MzYxMSwgNzY2MDUsIDc2NjEwLCA3NjYxNSwgNzY2MjAsIDc2NjI2LCAKKyAgICA3NjYzMiwgNzY2MzcsIDc2NjQxLCA3NjY0NiwgNzY2NTEsIDc2NjU2LCA3NjY2MiwgNzY2NjcsIDc2NjczLCA3NjY3OCwgCisgICAgNzY2ODMsIDc2Njg4LCA3NjY5MywgNzY2OTcsIDc2NzAzLCA3NjcwOCwgNzY3MTcsIDc2NzIyLCA3NjcyNywgNzY3MzIsIAorICAgIDc2NzM3LCA3Njc0MSwgNzY3NDgsIDc2NzU0LCA0NDMwLCAxODczNywgMzEwNSwgNzY3NTksIDc2NzYzLCA3Njc2OCwgCisgICAgNzY3NzIsIDc2Nzc2LCA3Njc4MCwgNTAzMjEsIDc2Nzg0LCA3NjcwOSwgNzY3ODYsIDc2Nzk2LCAzNTE4MSwgNzY3OTksIAorICAgIDc2ODA0LCA3NjgxMywgNzY4MTksIDY0NTQsIDM1MTg2LCA3NjgyMywgNzY4MjksIDc2ODM0LCA3Njg0MCwgNzY4NDUsIAorICAgIDc2ODQ5LCA3Njg1NiwgNzY4NjEsIDc2ODcxLCA3Njg4MCwgNzY4ODQsIDc2ODkwLCA3Njg5NiwgNzY5MDIsIDc2OTA2LCAKKyAgICA3NjkxNCwgNzY5MjEsIDc2OTI5LCA3NjkzNywgMzUxOTEsIDc2OTQ0LCA3Njk0NywgNzY5NTQsIDc2OTYwLCA3Njk2NSwgCisgICAgNzY5NjksIDc2OTc1LCA3Njk4MiwgNzY5ODcsIDc2OTkxLCA3NzAwMCwgNzcwMDgsIDc3MDE0LCA3NzAxOSwgMzUxOTYsIAorICAgIDc3MDI2LCA3NzAzOCwgNzcwNDUsIDc3MDUxLCA3NzA1NiwgNzcwNjIsIDc3MDY5LCA3NzA3NSwgMjI5NzksIDI5NTg5LCAKKyAgICA3NzA4MSwgNzcwODYsIDc3MDkyLCA3NzA5NiwgNzcxMDgsIDc2NzQyLCA3Njc0OSwgMjMxNjAsIDc3MTE4LCA3NzEyMywgCisgICAgNzcxMzAsIDc3MTM2LCA3NzE0MywgNzcxNDksIDc3MTYwLCA3NzE2NSwgNzcxNzMsIDk2MDksIDc3MTc4LCA3NzE4MSwgCisgICAgNzcxODcsIDc3MTkxLCA3NzE5NSwgNzcxOTgsIDc3MjA0LCAzNDkzNCwgNDQzMSwgMTA2NywgMTQ1OTYsIDc3MjExLCAKKyAgICA3NzIxNywgNzcyMjMsIDc3MjI5LCA3NzIzNSwgNzcyNDEsIDc3MjQ3LCA3NzI1MywgNzcyNTksIDc3MjY0LCA3NzI2OSwgCisgICAgNzcyNzQsIDc3Mjc5LCA3NzI4NCwgNzcyODksIDc3Mjk0LCA3NzI5OSwgNzczMDQsIDc3MzA5LCA3NzMxNCwgNzczMTksIAorICAgIDc3MzI0LCA3NzMzMCwgNzczMzUsIDc3MzQwLCA3NzM0NiwgNzczNTEsIDc3MzU2LCA3NzM2MiwgNzczNjgsIDc3Mzc0LCAKKyAgICA3NzM4MCwgNzczODYsIDc3MzkyLCA3NzM5OCwgNzc0MDQsIDc3NDEwLCA3NzQxNSwgNzc0MjAsIDc3NDI2LCA3NzQzMSwgCisgICAgNzc0MzYsIDc3NDQyLCA3NzQ0NywgNzc0NTIsIDc3NDU3LCA3NzQ2MiwgNzc0NjcsIDc3NDcyLCA3NzQ3NywgNzc0ODIsIAorICAgIDc3NDg3LCA3NzQ5MiwgNzc0OTcsIDc3NTAyLCA3NzUwOCwgNzc1MTMsIDc3NTE4LCA3NzUyMywgNzc1MjksIDc3NTM0LCAKKyAgICA3NzUzOSwgNzc1NDQsIDc3NTQ5LCA3NzU1NSwgNzc1NjAsIDc3NTY1LCA3NzU3MCwgNzc1NzUsIDc3NTgwLCA3NzU4NSwgCisgICAgNzc1OTAsIDc3NTk1LCA3NzYwMCwgNzc2MDUsIDc3NjEwLCA3NzYxNSwgNzc2MjAsIDc3NjI1LCA3NzYzMCwgNzc2MzUsIAorICAgIDc3NjQwLCA3NzY0NSwgNzc2NTAsIDc3NjU2LCA3NzY2MSwgNzc2NjYsIDc3NjcxLCA3NzY3NiwgNzc2ODEsIDc3Njg2LCAKKyAgICA3NzY5MSwgMTg5MCwgMTYzLCA3NzY5NiwgNzc3MDAsIDc3NzA0LCA3NzcwOSwgNzc3MTcsIDc3NzIxLCA3NzcyOCwgNzc3MzYsIAorICAgIDc3NzQwLCA3Nzc1MywgNzc3NjEsIDc3NzY2LCA3Nzc3MSwgMjgzOTQsIDc3Nzc1LCA3Nzc4MCwgNzc3ODQsIDc3Nzg5LCAKKyAgICA3Nzc5MywgNzc4MDEsIDc3ODA1LCAyMjU4NywgNzc4MTAsIDc3ODE0LCA2NjE2MiwgNzc4MTgsIDc3ODIxLCA3NzgyOSwgCisgICAgNzc4MzcsIDc3ODQ1LCA3Nzg1MCwgNzc4NTUsIDc3ODYyLCA3Nzg2OSwgNzc4NzUsIDc3ODgxLCA3Nzg4NiwgNzc4OTEsIAorICAgIDc3ODk5LCA3MDU1MSwgNzc5MDYsIDY1OTQ4LCA3NzkxMSwgNzc5MTYsIDc3OTIwLCA3NzkyNywgNjU5NzUsIDEyNzQzLCAKKyAgICA3NzkzMywgNzc5MzgsIDc3OTQzLCA3Nzk0NywgNzc5NTAsIDc3OTU2LCA3Nzk2MCwgNzc5NzAsIDc3OTc5LCA3Nzk4MywgCisgICAgNzc5ODYsIDc3OTkwLCA3Nzk5NywgNzgwMTAsIDc4MDE2LCA3ODAyNCwgNzgwMzMsIDc4MDQ0LCA3ODA1NSwgNzgwNjYsIAorICAgIDc4MDc3LCA3ODA4NiwgNzgwOTIsIDc4MTAxLCA3ODEwOSwgNzgxMTksIDc4MTMyLCA3ODE0MCwgNzgxNDcsIDc4MTU4LCAKKyAgICA3ODE2NCwgNzgxNjksIDc4MTc0LCA3ODE4MCwgNzgxODYsIDc4MTk2LCA3ODIwMywgNzgyMTMsIDc4MjIyLCA3NjQyMywgCisgICAgNzgyMzAsIDc4MjM2LCA3ODI0NCwgNzgyNTAsIDc4MjU3LCA3ODI2NSwgNzgyNzAsIDc4MjczLCA3ODI3NywgNzgyODEsIAorICAgIDc4Mjg0LCA3ODI5MCwgNzgyOTYsIDc4MzA0LCA3ODMxNiwgNzgzMjgsIDc4MzM1LCA3ODM0MCwgNzgzNDQsIDc4MzU1LCAKKyAgICA3ODM2MywgNzgzNzAsIDc4MzgyLCA3ODM5MCwgNzgzOTgsIDc4NDA1LCA3ODQxMSwgNzg0MTYsIDc4NDI2LCA3ODQzNSwgCisgICAgNzg0NDAsIDc4NDUwLCA3ODQ1OSwgNDU1NDksIDc4NDY2LCA3ODQ3MCwgNzg0NzUsIDc4NDgzLCA3ODQ5MCwgNzg0OTYsIAorICAgIDc4NTAwLCA3ODUxMCwgNzg1MjEsIDc4NTI5LCA3ODUzNiwgNzg1NDgsIDc4NTYwLCA3ODU2OSwgNzUzNzAsIDc4NTc2LCAKKyAgICA3ODU4NiwgNzg1OTgsIDc4NjA5LCA3ODYyMywgNzg2MzEsIDc4NjQxLCA3ODY0OCwgNzg2NTYsIDc4NjY5LCA3ODY4MSwgCisgICAgNzg2OTAsIDc4Njk4LCA3ODcwOCwgNzg3MTksIDc4NzMxLCA3ODc0MCwgNzg3NTAsIDc4NzYwLCA3ODc2OSwgNzg3NzYsIAorICAgIDc4Nzg1LCA3ODgwMCwgNzg4MDgsIDc4ODE4LCA3ODgyNywgNzg4MzUsIDc4ODQ4LCA2MzAyNiwgNzg4NjMsIDc4ODczLCAKKyAgICA3ODg4MiwgNzg4OTQsIDc4OTA0LCA3ODkxNiwgNzg5MjcsIDc4OTM4LCA3ODk0OSwgNzg5NTksIDc4OTcwLCA3ODk3OCwgCisgICAgNzg5ODQsIDc4OTk0LCA3OTAwMiwgNzkwMDgsIDMxMjkxLCA3OTAxMywgNzkwMTksIDc5MDI4LCA3OTA0MCwgNzkwNDUsIAorICAgIDc5MDUyLCAxMDQ0OCwgMTkxMzQsIDc5MDU4LCA3OTA2NywgNzkwNzIsIDc5MDc2LCA3OTA4MywgNzkwODksIDc5MDk0LCAKKyAgICA3OTA5OSwgNzkxMDcsIDc5MTE1LCAxMzExOSwgNzkxMTksIDc5MTIyLCA3OTEyNCwgNzkxMzEsIDc5MTM3LCA3OTE0OCwgCisgICAgNzkxNTMsIDc5MTU3LCA3OTE2NCwgNzkxNzAsIDc5MTc1LCA3OTE4MywgNzExMjAsIDcxMTMwLCA3OTE4OSwgNzkxOTYsIAorICAgIDc5MjA2LCAxMTU0MywgNzkyMTMsIDc5MjE4LCAzMTUwNiwgNzkyMjcsIDc5MjMyLCA3OTIzOSwgNzkyNDksIDc5MjU3LCAKKyAgICA3OTI2NSwgNzkyNzQsIDc5MjgwLCA3OTI4NiwgNzkyOTMsIDc5MzAwLCA3OTMwNSwgNzkzMDksIDc5MzE3LCA2NTk5MiwgCisgICAgNzkzMjIsIDc5MzMxLCA3OTMzOSwgNzkzNDYsIDc5MzUxLCA3OTM1NSwgNzkzNjQsIDc5MzcwLCA3OTM3MywgNzkzNzcsIAorICAgIDc5Mzg2LCA3OTM5NiwgNzc3NDgsIDc5NDA1LCA3OTQwOSwgNzk0MTcsIDc5NDIxLCA3OTQyNywgNzk0MzgsIDc5NDQ4LCAKKyAgICAxOTE0MywgNzk0NTksIDc5NDY4LCA3OTQ3NiwgNzk0ODQsIDc5NDkxLCA2NjAxMSwgOTE0NywgNzk0OTksIDc5NTAzLCAKKyAgICA3OTUxMiwgNzk1MTksIDc5NTIyLCAyOTQ3MCwgNzk1MjUsIDc5NTI5LCA3OTUzNCwgNzk1NTEsIDc5NTYzLCAxMTUwMSwgCisgICAgNzk1NzUsIDc5NTgwLCA3OTU4NSwgNzk1OTAsIDIyNjY5LCA3OTU5NCwgNzk1OTksIDc5NjA0LCA3OTYxMCwgNzk2MTUsIAorICAgIDYxMjIsIDc5NjIwLCAyMjY3MywgNzk2MjUsIDc5NjMwLCA3OTYzNiwgNzk2NDMsIDc5NjQ4LCA3OTY1MywgNzk2NTksIAorICAgIDc5NjY1LCA3OTY3MSwgNzk2NzYsIDc5NjgyLCA3OTY4NiwgNzk3MDAsIDc5NzA4LCA3OTcxNiwgNzk3MjIsIDc5NzI3LCAKKyAgICA3OTczNCwgNzk3NDQsIDc5NzUzLCA3OTc1OCwgNzk3NjMsIDc5NzY4LCA3OTc3NiwgNzk3ODEsIDc5Nzg3LCA3OTc5MiwgCisgICAgNzk4MDEsIDY0NzEzLCA3OTgwNiwgNzk4MDksIDc5ODI3LCA3OTg0NiwgNzk4NTksIDc5ODczLCA3OTg4OSwgNzk4OTYsIAorICAgIDc5OTAzLCA3OTkxMiwgNzk5MTksIDc5OTI1LCA3OTkzMiwgNzk5MzcsIDc5OTQzLCA3OTk0OSwgNzk5NTcsIDc5OTYzLCAKKyAgICA3OTk2OCwgNzk5NzMsIDc5OTg5LCAxMTUxNCwgODAwMDMsIDgwMDEwLCA4MDAxOCwgODAwMjQsIDgwMDI4LCA4MDAzMSwgCisgICAgODAwMzYsIDgwMDQxLCA4MDA0OCwgODAwNTMsIDgwMDYyLCA4MDA2OCwgODAwNzMsIDgwMDc5LCA4MDA4NSwgODAwOTQsIAorICAgIDgwMTAzLCA4MDEwOCwgODAxMTIsIDgwMTIwLCA4MDEyOSwgMTI3NzIsIDgwMTM4LCA4MDE0NCwgODAxNTIsIDgwMTU4LCAKKyAgICA4MDE2NCwgODAxNzAsIDgwMTc1LCA4MDE4MiwgODAxODgsIDEyNzgzLCA4MDE5MywgODAxOTYsIDgwMjAxLCAzNTIyMywgCisgICAgODAyMTEsIDgwMjIwLCA4MDIyNSwgODAyMzEsIDgwMjM2LCA4MDI0NCwgODAyNTEsIDgwMjYyLCA4MDI3MiwgODAyNzcsIAorICAgIDgwMjg1LCA3MDQ3NCwgODAyOTAsIDgwMjk2LCA4MDMwMSwgODAzMDgsIDgwMzE3LCA4MDMyNSwgODAzMjksIDgwMzM1LCAKKyAgICA4MDM0MSwgODAzNDgsIDgwMzU0LCA4MDM1OCwgMTg1MTgsIDMxMTQsIDgwMzYzLCA4MDM2NywgODAzNzEsIDgwMzc3LCAKKyAgICA4MDM4NiwgODAzOTIsIDgwMzk5LCA4MDQwMywgODA0MjQsIDgwNDQ2LCA4MDQ2MiwgODA0NzksIDgwNDk4LCA4MDUwNywgCisgICAgODA1MTcsIDgwNTI1LCA4MDUzMiwgODA1MzksIDgwNTQ1LCAyOTM0MiwgODA1NTksIDgwNTYzLCA4MDU2OSwgODA1NzcsIAorICAgIDgwNTg5LCA4MDU5NSwgODA2MDMsIDgwNjEwLCA4MDYxNSwgODA2MjAsIDgwNjI0LCA4MDYzMiwgODA2MzksIDgwNjQzLCAKKyAgICA4MDY0OSwgODA2NTUsIDgwNjYwLCAzNzMwLCA0NjcyMSwgODA2NjYsIDgwNjcwLCA4MDY3NCwgODA2NzgsIDgwNjgzLCAKKyAgICA4MDY4OCwgODA2OTMsIDgwNjk5LCA4MDcwNSwgODA3MTEsIDgwNzE4LCA4MDcyNCwgODA3MzEsIDgwNzM3LCA4MDc0MywgCisgICAgODA3NDgsIDgwNzU0LCA4MDc1OSwgODA3NjMsIDgwNzY4LCA4MDc3MiwgODA3NzcsIDQ2NzM2LCA4MDc4MSwgODA3ODYsIAorICAgIDgwNzk0LCA4MDc5OCwgODA4MDMsIDgwODEwLCA4MDgxOSwgODA4MjUsIDgwODM0LCA4MDgzOCwgODA4NDUsIDgwODQ5LCAKKyAgICA4MDg1MiwgODA4NTksIDgwODY1LCA4MDg3NCwgODA4ODQsIDgwODg5LCA4MDg5MywgODA5MDEsIDgwOTEwLCA4MDkxNCwgCisgICAgODA5MjIsIDgwOTI4LCA4MDkzMywgODA5MzgsIDgwOTQ0LCA4MDk1MCwgODA5NTUsIDgwOTU5LCA4MDk2NSwgODA5NzAsIAorICAgIDgwOTc0LCA4MDk3OCwgODA5ODEsIDgwOTg2LCA4MDk5NCwgODEwMDQsIDgxMDEwLCA4MTAxNSwgODEwMjUsIDQ0MDMxLCAKKyAgICA4MTAzMywgODEwNDUsIDgxMDQ5LCA4MTA1NSwgODEwNjcsIDgxMDc4LCA4MTA4NSwgODEwOTEsIDgxMDk4LCA4MTEwNSwgCisgICAgODExMTcsIDgxMTI0LCA4MTEzMCwgMjI3NDcsIDgxMTM0LCA4MTE0MiwgODExNDgsIDgxMTU1LCA4MTE2MSwgODExNjcsIAorICAgIDgxMTczLCA4MTE3OCwgODExODMsIDgxMTg4LCA4MTE5NywgODEyMDUsIDgxMjE2LCA3MzUwLCA4MTIyMSwgMTc5NjcsIAorICAgIDgxMjI3LCA4MTIzMSwgODEyMzUsIDgxMjM5LCA4MTI0NywgODEyNTYsIDgxMjYwLCA4MTI2NywgODEyNzYsIDgxMjg0LCAKKyAgICA4MTI5NywgODEzMDMsIDgwNzczLCAzMjM5MCwgODEzMDgsIDgxMzEwLCA4MTMxNSwgODEzMjAsIDgxMzI1LCA4MTMzMCwgCisgICAgODEzMzUsIDgxMzQwLCA4MTM0NSwgODEzNTAsIDgxMzU1LCA4MTM2MCwgODEzNjUsIDgxMzcwLCA4MTM3NSwgODEzODAsIAorICAgIDgxMzg2LCA4MTM5MSwgODEzOTYsIDgxNDAxLCA4MTQwNiwgODE0MTEsIDgxNDE2LCA4MTQyMSwgODE0MjYsIDgxNDMyLCAKKyAgICA4MTQzOCwgODE0NDQsIDgxNDQ5LCA4MTQ1NCwgODE0NjYsIDgxNDcxLCAxODk2LCA2MywgODE0NzYsIDgxNDgxLCAzNTIyOSwgCisgICAgODE0ODUsIDM1MjM0LCAzNTIzOSwgMzUyNDUsIDM1MjUwLCA4MTQ4OSwgMzUyNTUsIDIzNzg1LCA4MTUxMSwgODE1MTUsIAorICAgIDgxNTE5LCA4MTUyNCwgODE1MjgsIDM1MjU5LCA4MTUzMiwgODE1NDAsIDgxNTQ3LCAzNTI2NCwgODE1NTMsIDgxNTU2LCAKKyAgICA4MTU2MSwgODE1NjUsIDgxNTc0LCAxMDI2NiwgODE1ODIsIDM1MjY5LCAyMzY0MSwgODE1ODUsIDgxNTg5LCA4MTU5NywgCisgICAgMTQxMiwgODE2MDIsIDM1MjgwLCA4MTYwNSwgODE2MTAsIDI3NzUwLCAyNzc2MCwgMzgxODIsIDgxNjE1LCA4MTYyMCwgCisgICAgODE2MjUsIDgxNjMwLCA4MTYzNiwgODE2NDEsIDgxNjUwLCA4MTY1NSwgODE2NjQsIDgxNjcyLCA4MTY3OSwgODE2ODUsIAorICAgIDgxNjkwLCA4MTY5NSwgODE3MDAsIDgxNzEwLCA4MTcxOSwgODE3MjcsIDgxNzMyLCA4MTc0MCwgODE3NDQsIDgxNzUyLCAKKyAgICA4MTc1NiwgODE3NjMsIDgxNzcxLCAzNTA4OCwgNDExOTIsIDgxNzc4LCA4MTc4NCwgODE3ODksIDgxNzk0LCAxMzE1NCwgCisgICAgMzA1MjksIDgxNzk5LCA4MTgwNCwgODE4MTEsIDgxODE3LCA4MTgyMiwgODE4MzAsIDgxODQwLCA4MTg1MCwgODE4NTYsIAorICAgIDgxODYxLCA4MTg2NywgMTkxNjUsIDgxODc0LCAzOTA1MiwgODE4ODcsIDgxODkyLCA4MTg5OCwgMzMzODEsIDgxOTExLCAKKyAgICA4MTkxNywgODE5MjEsIDgxOTMwLCA4MTkzOSwgODE5NDYsIDgxOTUyLCA4MTk2MCwgODE5NjksIDgxOTc2LCA4MTk4MiwgCisgICAgODE5ODUsIDgxOTg5LCA4MTk5MywgMjc4OTEsIDgxOTk3LCA4MjAwNCwgODIwMTAsIDgyMDE4LCA4MjAyMywgODIwMjcsIAorICAgIDI1OTExLCA4MjAzMywgODIwMzYsIDgyMDQ0LCA4MjA1MSwgODIwNTksIDgyMDcyLCA4MjA4NiwgODIwOTMsIDgyMDk5LCAKKyAgICA4MjEwNiwgODIxMTIsIDM1Mjk0LCA4MjExNiwgODIxMjMsIDgyMTMxLCA4MjEzOSwgODIxNDUsIDM1Mjk5LCA4MjE1MywgCisgICAgODIxNTksIDgyMTY0LCA4MjE3NCwgODIxODAsIDgyMTg5LCAzMzE4MywgMzc2MTQsIDgyMTk3LCA4MjIwMiwgODIyMDcsIAorICAgIDgyMjExLCA4MjIxNiwgODIyMjAsIDgyMjI4LCA4MjIzMywgMTYyOTYsIDQ0MDQ0LCA4MjIzNywgODIyNDIsIDM1MzA0LCAKKyAgICA2NzU0NywgODIyNDYsIDgyMjUxLCA4MjI1NSwgODIyNjIsIDgyMjcxLCA4MjI3NSwgODIyODMsIDgyMjg5LCA4MjI5NCwgCisgICAgODIzMDAsIDgyMzA1LCA4MjMxMiwgODIzMTgsIDgyMzIzLCA4MjMyOCwgODIzMzksIDgyMzQ4LCA4MjM2MCwgODIzNzUsIAorICAgIDM1NTcxLCA4MjM4MSwgMTgwODYsIDM1MzA4LCA4MjM4NSwgODIzOTIsIDgyMzk4LCAyNjAyNywgODI0MDIsIDgyNDA5LCAKKyAgICA4MjQxOCwgODI0MjUsIDgyNDM0LCA4MjQ0MCwgODI0NDUsIDgyNDUzLCA4MjQ1OSwgMzUzMTgsIDgyNDY0LCA4MjQ3MywgCisgICAgODEwNzMsIDgyNDgyLCA4MjQ4OSwgODI0OTUsIDgyNTAxLCA4MjUxMCwgODI1MjAsIDgyNTI4LCA4MjUzNSwgODI1MzksIAorICAgIDM1MzIzLCA4MjU0MiwgMzUzMjksIDM1MzM1LCA4MjU0NywgODI1NTUsIDgyNTYzLCA4MjU3MywgODI1ODIsIDgyNTkwLCAKKyAgICA4MjU5NywgODI2MDcsIDM1MzQwLCA4MjYxMSwgODI2MTMsIDgyNjE3LCA4MjYyMiwgODI2MjYsIDgyNjMwLCA4MjYzNiwgCisgICAgODI2NDEsIDgyNjQ1LCA4MjY1NiwgODI2NjEsIDgyNjY2LCAzMTE5LCA4MjY3MCwgODI2NzcsIDgyNjgxLCA4MjY5MCwgCisgICAgODI2OTgsIDgyNzA1LCA4MjcxMCwgODI3MTUsIDY3NTk4LCA4MjcxOSwgODI3MjIsIDgyNzI4LCA4MjczNiwgODI3NDIsIAorICAgIDgyNzQ2LCA4Mjc1MSwgODI3NTgsIDgyNzYzLCA4Mjc2OCwgODI3NzIsIDgyNzc4LCA4Mjc4MywgMzc2NDUsIDgyNzg3LCAKKyAgICA4Mjc5MCwgODI3OTUsIDgyNzk5LCA4MjgwNCwgODI4MTEsIDgyODE2LCA4MjgyMCwgNDI1ODAsIDgyODI4LCAyNzc2OSwgCisgICAgMjc3NzgsIDgyODM0LCA4Mjg0MCwgODI4NDYsIDgyODUxLCA4Mjg1NSwgODI4NTgsIDgyODY4LCA4Mjg3NywgODI4ODIsIAorICAgIDgyODg4LCA4Mjg5NSwgODI5MDEsIDgyOTA1LCA4MjkxMywgODI5MTgsIDM3NjUxLCA3Nzk1MiwgODI5MjIsIDgyOTMwLCAKKyAgICA4MjkzNiwgODI5NDMsIDgyOTQ4LCA4Mjk1MiwgODI5NTcsIDYzMjQyLCA4Mjk2MywgODI5NjksIDM3NjU3LCA4Mjk3NCwgCisgICAgODI5NzksIDgyOTgzLCA4Mjk4OCwgODI5OTMsIDgyOTk4LCA4MzAwMiwgODMwMDcsIDgzMDEyLCA4MzAxOCwgODMwMjMsIAorICAgIDgzMDI4LCA4MzAzNCwgODMwNDAsIDgzMDQ1LCA4MzA0OSwgODMwNTQsIDgzMDU5LCA4MzA2NCwgODMwNjgsIDI2MDI2LCAKKyAgICA4MzA3MywgODMwNzgsIDgzMDg0LCA4MzA5MCwgODMwOTYsIDgzMTAxLCA4MzEwNSwgODMxMTAsIDgzMTE1LCA4MzEyMCwgCisgICAgODMxMjQsIDgzMTI5LCA4MzEzNCwgODMxMzksIDgzMTQ0LCA0Njk5MSwgODMxNDgsIDM1MzQ4LCA4MzE1NiwgODMxNjAsIAorICAgIDgzMTY4LCA4MzE3NiwgODMxODcsIDgzMTkyLCA4MzE5NiwgMjQyMTEsIDc1NDczLCA4MzIwMSwgODMyMDcsIDgzMjEyLCAKKyAgICA4MzIyMiwgODMyMjksIDgzMjM0LCA4MzI0MiwgODMyNTEsIDgzMjU2LCA4MzI2MCwgODMyNjUsIDgzMjczLCA4MzI4MSwgCisgICAgODMyODgsIDcwNzM2LCA4MzI5NCwgODMzMDIsIDgzMzA5LCA4MzMyMCwgODMzMjYsIDgzMzMyLCAzNTM1OCwgODMzMzUsIAorICAgIDgzMzQyLCA4MzM1MCwgODMzNTUsIDQ0MjQ3LCA4MzM1OSwgODMzNjQsIDgzMzcxLCA4MzM3NiwgOTQ4NCwgODMzODAsIAorICAgIDgzMzg4LCA4MzM5NSwgODM0MDIsIDgzNDExLCA4MzQxOCwgODM0MjQsIDgzNDM4LCA2MTk0LCA4MzQ0NiwgODM0NTIsIAorICAgIDgzNDU2LCA4MzQ1OSwgODM0NjcsIDgzNDc0LCA4MzQ3OSwgODM0OTIsIDgzNDk5LCA4MzUwNSwgODM1MDksIDgzNTE0LCAKKyAgICA4MzUyMSwgODM1MjYsIDY1ODUxLCA4MzUzMSwgODM1MzQsIDgzNTQzLCA4MzU1MCwgODM1NTYsIDgzNTYwLCA4MzU2MywgCisgICAgODM1NzEsIDgzNTgwLCA4MzU5MCwgODM2MDAsIDgzNjA5LCA4MzYyMCwgODM2MjgsIDgzNjM5LCA4MzY0NCwgODM2NDgsIAorICAgIDgzNjUzLCA4MzY1NywgMzgzMTMsIDgzNjY1LCAyMzA0MiwgMzgzMjIsIDgzNjcwLCA4MzY3NSwgODM2ODAsIDgzNjg1LCAKKyAgICA4MzY5MCwgODM2OTUsIDgzNzAwLCA4MzcwNCwgODM3MDksIDgzNzE0LCA4MzcxOSwgODM3MjQsIDgzNzI5LCA4MzczNCwgCisgICAgODM3MzgsIDgzNzQzLCA4Mzc0OCwgODM3NTIsIDgzNzU2LCA4Mzc2MCwgODM3NjQsIDgzNzY5LCA4Mzc3NCwgODM3NzgsIAorICAgIDgzNzgzLCA4Mzc4NywgODM3OTEsIDgzNzk2LCA4MzgwMSwgODM4MDYsIDgzODExLCA4MzgxNSwgODM4MjAsIDgzODI1LCAKKyAgICA4MzgyOSwgODM4MzQsIDgzODM5LCA4Mzg0NCwgODM4NDksIDgzODU0LCA4Mzg1OSwgODM4NjQsIDgzODY5LCA4Mzg3NCwgCisgICAgODM4NzksIDgzODg0LCA4Mzg4OSwgODM4OTQsIDgzODk5LCA4MzkwNCwgODM5MDksIDgzOTE0LCA4MzkxOSwgODM5MjQsIAorICAgIDgzOTI5LCA4MzkzMywgODM5MzgsIDgzOTQzLCA4Mzk0OCwgODM5NTMsIDgzOTU4LCA4Mzk2MywgODM5NjgsIDgzOTczLCAKKyAgICA4Mzk3OCwgODM5ODMsIDgzOTg4LCA4Mzk5MiwgODM5OTcsIDg0MDAxLCA4NDAwNiwgODQwMTEsIDg0MDE2LCA4NDAyMSwgCisgICAgODQwMjYsIDg0MDMxLCA4NDAzNiwgODQwNDEsIDg0MDQ2LCA4NDA1MCwgODQwNTQsIDg0MDU5LCA4NDA2NCwgODQwNjgsIAorICAgIDg0MDczLCA4NDA3OCwgODQwODIsIDg0MDg3LCA4NDA5MiwgODQwOTcsIDg0MTAyLCA4NDEwNiwgODQxMTEsIDg0MTE2LCAKKyAgICA4NDEyMCwgODQxMjUsIDg0MTI5LCA4NDEzMywgODQxMzcsIDg0MTQxLCA4NDE0NiwgODQxNTAsIDg0MTU0LCA4NDE1OCwgCisgICAgODQxNjIsIDg0MTY2LCA4NDE3MCwgODQxNzQsIDg0MTc4LCA4NDE4MiwgODQxODcsIDg0MTkyLCA4NDE5NywgODQyMDIsIAorICAgIDg0MjA3LCA4NDIxMiwgODQyMTcsIDg0MjIyLCA4NDIyNywgODQyMzIsIDg0MjM2LCA4NDI0MCwgODQyNDQsIDg0MjQ4LCAKKyAgICA4NDI1MiwgODQyNTYsIDg0MjYxLCA4NDI2NSwgODQyNzAsIDg0Mjc0LCA4NDI3OSwgODQyODQsIDg0Mjg4LCA4NDI5MiwgCisgICAgODQyOTcsIDg0MzAxLCA4NDMwNSwgODQzMDksIDg0MzEzLCA4NDMxNywgODQzMjEsIDg0MzI1LCA4NDMyOSwgODQzMzMsIAorICAgIDg0MzM3LCA4NDM0MSwgODQzNDUsIDg0MzQ5LCA4NDM1MywgODQzNTgsIDg0MzYzLCA4NDM2NywgODQzNzEsIDg0Mzc1LCAKKyAgICA4NDM3OSwgODQzODMsIDg0Mzg3LCA4NDM5MiwgODQzOTYsIDg0NDAwLCA4NDQwNCwgODQ0MDgsIDg0NDEyLCA4NDQxNiwgCisgICAgODQ0MjEsIDg0NDI1LCA4NDQzMCwgODQ0MzQsIDg0NDM4LCA4NDQ0MiwgODQ0NDYsIDg0NDUwLCA4NDQ1NCwgODQ0NTgsIAorICAgIDg0NDYyLCA4NDQ2NiwgODQ0NzAsIDg0NDc0LCA4NDQ3OSwgODQ0ODMsIDg0NDg3LCA4NDQ5MSwgODQ0OTUsIDg0NDk5LCAKKyAgICA4NDUwMywgODQ1MDcsIDg0NTExLCA4NDUxNSwgODQ1MTksIDg0NTIzLCA4NDUyOCwgODQ1MzIsIDg0NTM2LCA4NDU0MSwgCisgICAgODQ1NDYsIDg0NTUwLCA4NDU1NCwgODQ1NTgsIDg0NTYyLCA4NDU2NiwgODQ1NzAsIDg0NTc0LCA4NDU3OCwgODQ1ODMsIAorICAgIDg0NTg3LCA4NDU5MiwgODQ1OTYsIDg0NjAxLCA4NDYwNSwgODQ2MTAsIDg0NjE0LCA4NDYyMCwgODQ2MjUsIDg0NjI5LCAKKyAgICA4NDYzNCwgODQ2MzgsIDg0NjQzLCA4NDY0NywgODQ2NTIsIDg0NjU2LCA4NDY2MSwgMTUxOSwgODQ2NjUsIDI4NzMsIDE3NzQsIAorICAgIDE2OTIsIDI3NzA1LCA4NDY2OSwgMjg4MiwgODQ2NzMsIDEzODEsIDg0Njc4LCAxMzIzLCA4NDY4MiwgODQ2ODYsIDI4OTksIAorICAgIDg0NjkwLCA4NDY5NywgODQ3MDQsIDg0NzE4LCAyOTAzLCA3NDUyLCA4NDcyNywgODQ3MzUsIDg0NzQyLCA4NDc1MywgCisgICAgODQ3NjIsIDg0NzY5LCA4NDc4MSwgODQ3OTQsIDg0ODA3LCA4NDgxOCwgODQ4MjMsIDg0ODMwLCA4NDg0MiwgODQ4NDYsIAorICAgIDI5MDcsIDEyODUwLCA4NDg1NiwgODQ4NjEsIDg0ODcwLCA4NDg4MCwgODQ4ODUsIDI5MTEsIDg0ODkzLCA4NDg5NywgCisgICAgODQ5MDIsIDg0OTA5LCA4NDkxNSwgODQ5MjMsIDg0OTM1LCAxMzI4LCAxNDIwMSwgODQ5NDUsIDg0OTQ5LCA4NDk1NSwgCisgICAgODQ5NjksIDg0OTgxLCA4NDk5MywgODUwMDMsIDg1MDEyLCA4NTAyMSwgODUwMzAsIDg1MDM4LCA4NTA0OSwgODUwNTcsIAorICAgIDQyOTIsIDg1MDY3LCA4NTA3OCwgODUwODcsIDg1MDkzLCA4NTEwOCwgODUxMTUsIDg1MTIxLCA4NTEyNiwgMzg0NDcsIAorICAgIDg1MTMxLCAyOTM1LCAxNDIwNSwgODUxMzUsIDg1MTQyLCA5NDA5LCA4NTE1MSwgMjk0MCwgMzQ3OTYsIDg1MTU3LCA2NTU3MywgCisgICAgODUxNjQsIDg1MTcwLCA4NTE4MSwgODUxODcsIDg1MTk0LCA4NTIwMCwgODUyMDgsIDg1MjE1LCA4NTIyMSwgODUyMzIsIAorICAgIDg1MjQyLCA4NTI1MSwgODUyNjIsIDg1MjcxLCA4NTI3OCwgODUyODQsIDg1Mjk0LCA4NTMwMiwgODUzMDgsIDg1MzIzLCAKKyAgICA4NTMyOSwgODUzMzQsIDg1MzQxLCA4NTM0NCwgODUzNTAsIDg1MzU3LCA4NTM2MywgODUzNzEsIDg1MzgwLCA4NTM4OCwgCisgICAgODUzOTQsIDg1NDAzLCA0NjI2MSwgODU0MTcsIDg1NDIyLCA4NTQyOCwgMTYwNzIsIDg1NDMzLCA4NTQ0NiwgODU0NTgsIAorICAgIDg1NDY3LCA4NTQ3NSwgODU0ODIsIDg1NDg2LCA4NTQ5MCwgODU0OTMsIDg1NTAwLCA4NTUwNywgODU1MTUsIDg1NTIzLCAKKyAgICA4NTUzMiwgODU1NDAsIDE1OTgzLCA4NTU0OCwgODU1NTMsIDg1NTU3LCA4NTU2OSwgODU1NzYsIDg1NTg1LCA4NDEsIAorICAgIDg1NTk1LCA4NTYwNCwgODU2MTUsIDI5NTYsIDg1NjE5LCA4NTYyMywgODU2MjksIDg1NjQyLCA4NTY1NCwgODU2NjQsIAorICAgIDg1NjczLCA4NTY4NSwgMjg0NDYsIDg1Njk2LCA4NTcwNCwgODU3MTMsIDg1NzI0LCA4NTczNSwgODU3NDUsIDg1NzU1LCAKKyAgICA4NTc2NCwgODU3NzIsIDEyMzY0LCA4NTc3OSwgODU3ODMsIDg1Nzg2LCA4NTc5MSwgODU3OTYsIDg1ODAwLCA4NTgwNiwgCisgICAgMTMzMywgODU4MTMsIDg1ODE3LCAxMjkzMiwgODU4MjEsIDg1ODMyLCA4NTg0MSwgODU4NDksIDg1ODU4LCA4NTg2NiwgCisgICAgODU4ODIsIDg1ODkzLCA4NTkwMiwgODU5MTAsIDg1OTIyLCA4NTkzMywgODU5NDksIDg1OTU5LCA4NTk4MCwgODU5OTQsIAorICAgIDg2MDA3LCA4NjAxNSwgODYwMjIsIDc0OTgsIDg2MDM1LCA4NjA0MCwgODYwNDYsIDYyMDMsIDg2MDUyLCA4NjA1NSwgCisgICAgODYwNjIsIDg2MDcyLCA4NTU0LCA4NjA3OSwgODYwODQsIDg2MDg5LCA4NjA5NCwgODYxMDIsIDg2MTExLCA4NjExOSwgCisgICAgODYxMjQsIDg2MTMxLCAxMDQ5NiwgMTA1MDUsIDg2MTM3LCA4NjE0OCwgODYxNTMsIDg2MTU5LCAyOTcyLCAyOTc3LCAKKyAgICA4NjE2NSwgMTE4NTcsIDg2MTcxLCA4NjE3OCwgODYxODUsIDg2MTk4LCAyMjgxLCA4NywgODYyMDMsIDg2MjA4LCA4NjIxNiwgCisgICAgODYyMjYsIDg2MjM1LCA4NjI0MSwgODYyNTAsIDg2MjU4LCA4NjI2OCwgODYyNzIsIDg2Mjc2LCA4NjI4MSwgODYyODUsIAorICAgIDg2Mjk3LCAzMDAwLCA4NjMwNSwgODYzMTMsIDg2MzE4LCA4NjMyOSwgODYzNDAsIDg2MzUyLCA4NjM2MywgODYzNzMsIAorICAgIDg2MzgyLCAyMzA4MywgODYzODcsIDg2MzkzLCA4NjM5OCwgODY0MDgsIDg2NDE4LCA4NjQyMywgODY0MjksIDg2NDMzLCAKKyAgICA4NjQzOCwgODY0NDcsIDIzMDk1LCA4NjQ1MSwgNDM4NCwgMjQsIDg2NDU2LCA4NjQ2NSwgODY0NzIsIDg2NDc5LCA4NjQ4NSwgCisgICAgODY0OTEsIDEwNDksIDg2NDk2LCA4NjUwMSwgNjYxMjgsIDg2NTA2LCA4NjUxMSwgODY1MTcsIDg2NTIzLCA4NjUzMSwgCisgICAgODY1MzYsIDg2NTQ0LCA4NjU1MSwgODY1NTcsIDg2NTYyLCA0MjQ2NCwgNDYxNTUsIDg2NTY4LCAzMDA0LCAzMiwgODY1NzgsIAorICAgIDg2NTkxLCA4NjU5NiwgODY2MDQsIDg2NjA5LCA4NjYxNSwgMzAyNiwgMzA0OTcsIDg2NjIwLCA4NjYyOCwgODY2MzUsIAorICAgIDg2NjQwLCA4NjY0OSwgNjM0OTIsIDQwMTgsIDY3MjE4LCA4NjY1NywgODY2NjEsIDE3MTksIDE4MzMsIDg2NjY2LCA4NjY3MSwgCisgICAgODY2NzgsIDE4MzcsIDI4MCwgODY2ODUsIDg2NjkxLCA4NjY5NiwgMzA0OCwgODY3MDAsIDg2NzA1LCA4NjcxMiwgMTg0MSwgCisgICAgODY3MTcsIDg2NzIzLCA4NjcyOCwgODY3NDAsIDY0MzAsIDg2NzUwLCA4Njc1NywgMTg0OCwgODY3NjMsIDg2NzY4LCAKKyAgICA4Njc3NSwgODY3ODIsIDg2Nzk3LCA4NjgwNCwgODY4MTUsIDg2ODIwLCA4NjgyOCwgMjY1NywgODY4MzIsIDg2ODQ0LCAKKyAgICA4Njg0OSwgODY4NTMsIDg2ODU5LCAzMDMxMywgMjI4NiwgODY4NjMsIDg2ODc0LCA4Njg3OCwgODY4ODIsIDg2ODg4LCAKKyAgICA4Njg5MiwgODY5MDEsIDg2OTA1LCA4NjkxNiwgODY5MjAsIDIzMzIsIDM0NjEzLCA4NjkyNCwgODY5MzQsIDMxMzksIAorICAgIDg2OTQyLCA5OTA5LCA4Njk1MSwgODY5NTYsIDg2OTYwLCA4Njk2OSwgODY5NzYsIDg2OTgyLCAzMTA5LCAxNjEzNiwgCisgICAgODY5ODYsIDg2OTk5LCA4NzAxNywgODcwMjIsIDg3MDMwLCA4NzAzOCwgODcwNDgsIDEwNzY4LCAxNDMxOCwgODcwNjAsIAorICAgIDg3MDczLCA4NzA4MCwgODcwOTQsIDg3MTAxLCA4NzExNywgODcxMjQsIDg3MTMwLCAyMzEyNywgMTM1NTYsIDg3MTM3LCAKKyAgICA4NzE0NCwgODcxNTQsIDg3MTYzLCA0Njk5MCwgODcxNzUsIDQ3MTI1LCA4NzE4MywgODcxODYsIDg3MTkyLCA4NzE5OCwgCisgICAgODcyMDQsIDg3MjEwLCA4NzIxNiwgODcyMjMsIDg3MjMwLCA4NzIzNiwgODcyNDIsIDg3MjQ4LCA4NzI1NCwgODcyNjAsIAorICAgIDg3MjY2LCA4NzI3MiwgODcyNzgsIDg3Mjg0LCA4NzI5MCwgODcyOTYsIDg3MzAyLCA4NzMwOCwgODczMTQsIDg3MzIwLCAKKyAgICA4NzMyNiwgODczMzIsIDg3MzM4LCA4NzM0NCwgODczNTAsIDg3MzU2LCA4NzM2MiwgODczNjgsIDg3Mzc0LCA4NzM4MCwgCisgICAgODczODYsIDg3MzkyLCA4NzM5OCwgODc0MDQsIDg3NDEwLCA4NzQxNiwgODc0MjIsIDg3NDI4LCA4NzQzNCwgODc0NDAsIAorICAgIDg3NDQ2LCA4NzQ1MiwgODc0NTgsIDg3NDY0LCA4NzQ3MCwgODc0NzYsIDg3NDgyLCA4NzQ4OCwgODc0OTQsIDg3NTAwLCAKKyAgICA4NzUwNiwgODc1MTIsIDg3NTE4LCA4NzUyNCwgODc1MzAsIDg3NTM2LCA4NzU0MywgODc1NDksIDg3NTU2LCA4NzU2MywgCisgICAgODc1NjksIDg3NTc2LCA4NzU4MywgODc1ODksIDg3NTk1LCA4NzYwMSwgODc2MDcsIDg3NjEzLCA4NzYxOSwgODc2MjUsIAorICAgIDg3NjMxLCA4NzYzNywgODc2NDMsIDg3NjQ5LCA4NzY1NSwgODc2NjEsIDg3NjY3LCA4NzY3MywgMzEyMywgOTg4MiwgCisgICAgODc2NzksIDg3Njg1LCA4NzY5MywgODc2OTcsIDg0OTA1LCAzMTI3LCA4NzcwMSwgMjI4NjAsIDEzMTg5LCAzOTY4LCAKKyAgICA4NzcwNSwgMzEzMywgODc3MDksIDg3NzE5LCA4NzcyNSwgODc3MzEsIDg3NzM3LCA4Nzc0MywgODc3NDksIDg3NzU1LCAKKyAgICA4Nzc2MSwgODc3NjcsIDg3NzczLCA4Nzc3OSwgODc3ODUsIDg3NzkxLCA4Nzc5NywgODc4MDMsIDg3ODA5LCA4NzgxNSwgCisgICAgODc4MjEsIDg3ODI3LCA4NzgzMywgODc4MzksIDg3ODQ1LCA4Nzg1MSwgODc4NTcsIDg3ODYzLCA4Nzg2OSwgODc4NzYsIAorICAgIDg3ODgzLCA4Nzg4OSwgODc4OTUsIDg3OTAxLCA4NzkwNywgODc5MTMsIDg3OTE5LCAxMzM4LCA4NzkyNSwgODc5MzAsIAorICAgIDg3OTM1LCA4Nzk0MCwgODc5NDUsIDg3OTUwLCA4Nzk1NSwgODc5NjAsIDg3OTY1LCA4Nzk2OSwgODc5NzMsIDg3OTc3LCAKKyAgICA4Nzk4MSwgODc5ODUsIDg3OTg5LCA4Nzk5MywgODc5OTcsIDg4MDAxLCA4ODAwNywgODgwMTMsIDg4MDE5LCA4ODAyNSwgCisgICAgODgwMjksIDg4MDMzLCA4ODAzNywgODgwNDEsIDg4MDQ1LCA4ODA0OSwgODgwNTMsIDg4MDU3LCA4ODA2MSwgODgwNjYsIAorICAgIDg4MDcxLCA4ODA3NiwgODgwODEsIDg4MDg2LCA4ODA5MSwgODgwOTYsIDg4MTAxLCA4ODEwNiwgODgxMTEsIDg4MTE2LCAKKyAgICA4ODEyMSwgODgxMjYsIDg4MTMxLCA4ODEzNiwgODgxNDEsIDg4MTQ2LCA4ODE1MSwgODgxNTYsIDg4MTYxLCA4ODE2NiwgCisgICAgODgxNzEsIDg4MTc2LCA4ODE4MSwgODgxODYsIDg4MTkxLCA4ODE5NiwgODgyMDEsIDg4MjA2LCA4ODIxMSwgODgyMTYsIAorICAgIDg4MjIxLCA4ODIyNiwgODgyMzEsIDg4MjM2LCA4ODI0MSwgODgyNDYsIDg4MjUxLCA4ODI1NiwgODgyNjEsIDg4MjY2LCAKKyAgICA4ODI3MSwgODgyNzYsIDg4MjgxLCA4ODI4NiwgODgyOTEsIDg4Mjk2LCA4ODMwMSwgODgzMDYsIDg4MzExLCA4ODMxNiwgCisgICAgODgzMjEsIDg4MzI2LCA4ODMzMSwgODgzMzYsIDg4MzQxLCA4ODM0NiwgODgzNTEsIDg4MzU2LCA4ODM2MSwgODgzNjYsIAorICAgIDg4MzcxLCA4ODM3NiwgODgzODEsIDg4Mzg2LCA4ODM5MSwgODgzOTYsIDg4NDAxLCA4ODQwNiwgODg0MTEsIDg4NDE2LCAKKyAgICA4ODQyMSwgODg0MjYsIDg4NDMxLCA4ODQzNiwgODg0NDEsIDg4NDQ2LCA4ODQ1MSwgODg0NTYsIDg4NDYxLCA4ODQ2NiwgCisgICAgODg0NzEsIDg4NDc2LCA4ODQ4MSwgODg0ODYsIDg4NDkxLCA4ODQ5NiwgODg1MDEsIDg4NTA2LCA4ODUxMSwgODg1MTYsIAorICAgIDg4NTIxLCA4ODUyNiwgODg1MzEsIDg4NTM2LCA4ODU0MSwgODg1NDYsIDg4NTUxLCA4ODU1NiwgODg1NjEsIDg4NTY2LCAKKyAgICA4ODU3MSwgODg1NzYsIDg4NTgxLCA4ODU4NiwgODg1OTEsIDg4NTk2LCA4ODYwMSwgODg2MDYsIDg4NjExLCA4ODYxNiwgCisgICAgODg2MjEsIDg4NjI2LCA4ODYzMSwgODg2MzYsIDg4NjQxLCA4ODY0NiwgODg2NTEsIDg4NjU2LCA4ODY2MSwgODg2NjYsIAorICAgIDg4NjcxLCA4ODY3NiwgODg2ODEsIDg4Njg2LCA4ODY5MSwgODg2OTYsIDg4NzAxLCA4ODcwNiwgODg3MTEsIDg4NzE2LCAKKyAgICA4ODcyMSwgODg3MjYsIDg4NzMxLCA4ODczNiwgODg3NDEsIDg4NzQ2LCA4ODc1MSwgODg3NTYsIDg4NzYxLCA4ODc2NiwgCisgICAgODg3NzEsIDg4Nzc2LCA4ODc4MSwgODg3ODYsIDg4NzkxLCA4ODc5NiwgODg4MDEsIDg4ODA2LCA4ODgxMSwgODg4MTYsIAorICAgIDg4ODIxLCA4ODgyNiwgODg4MzEsIDg4ODM2LCA4ODg0MSwgODg4NDYsIDg4ODUxLCA4ODg1NiwgODg4NjEsIDg4ODY2LCAKKyAgICA4ODg3MSwgODg4NzYsIDg4ODgxLCA4ODg4NiwgODg4OTEsIDg4ODk2LCA4ODkwMSwgODg5MDYsIDg4OTExLCA4ODkxNiwgCisgICAgODg5MjEsIDg4OTI2LCA4ODkzMSwgODg5MzYsIDg4OTQxLCA4ODk0NiwgODg5NTEsIDg4OTU3LCA4ODk2MiwgODg5NjcsIAorICAgIDg4OTcyLCA4ODk3NywgODg5ODIsIDg4OTg3LCA4ODk5MiwgODg5OTgsIDg5MDAzLCA4OTAwOCwgODkwMTMsIDg5MDE4LCAKKyAgICA4OTAyMywgODkwMjgsIDg5MDMzLCA4OTAzOCwgODkwNDMsIDg5MDQ4LCA4OTA1MywgODkwNTgsIDg5MDYzLCA4OTA2OCwgCisgICAgODkwNzMsIDg5MDc4LCA4OTA4MywgODkwODgsIDg5MDkzLCA4OTA5OCwgODkxMDMsIDg5MTA4LCA4OTExMywgODkxMTgsIAorICAgIDg5MTIzLCA4OTEyOCwgODkxMzMsIDg5MTM4LCA4OTE0MywgODkxNDgsIDg5MTUzLCA4OTE1OCwgODkxNjcsIDg5MTcyLCAKKyAgICA4OTE4MSwgODkxODYsIDg5MTk1LCA4OTIwMCwgODkyMDksIDg5MjE0LCA4OTIyMywgODkyMjgsIDg5MjM3LCA4OTI0MiwgCisgICAgODkyNTEsIDg5MjU2LCA4OTI2NSwgODkyNzAsIDg5Mjc1LCA4OTI4NCwgODkyODgsIDg5Mjk3LCA4OTMwMiwgODkzMTEsIAorICAgIDg5MzE2LCA4OTMyNSwgODkzMzAsIDg5MzM5LCA4OTM0NCwgODkzNTMsIDg5MzU4LCA4OTM2NywgODkzNzIsIDg5MzgxLCAKKyAgICA4OTM4NiwgODkzOTUsIDg5NDAwLCA4OTQwOSwgODk0MTQsIDg5NDIzLCA4OTQyOCwgODk0MzMsIDg5NDM4LCA4OTQ0MywgCisgICAgODk0NDgsIDg5NDUzLCA4OTQ1OCwgODk0NjIsIDg5NDY3LCA4OTQ3MiwgODk0NzcsIDg5NDgyLCA4OTQ4NywgODk0OTIsIAorICAgIDg5NDk4LCA4OTUwMywgODk1MDgsIDg5NTEzLCA4OTUxOSwgODk1MjMsIDg5NTI4LCA4OTUzNCwgODk1MzksIDg5NTQ0LCAKKyAgICA4OTU0OSwgODk1NTQsIDg5NTU5LCA4OTU2NCwgODk1NjksIDg5NTc0LCA4OTU3OSwgODk1ODQsIDg5NTkwLCA4OTU5NSwgCisgICAgODk2MDAsIDg5NjA1LCA4OTYxMSwgODk2MTYsIDg5NjIxLCA4OTYyNiwgODk2MzEsIDg5NjM3LCA4OTY0MiwgODk2NDcsIAorICAgIDg5NjUyLCA4OTY1NywgODk2NjIsIDg5NjY4LCA4OTY3MywgODk2NzgsIDg5NjgzLCA4OTY4OCwgODk2OTMsIDg5Njk4LCAKKyAgICA4OTcwMywgODk3MDgsIDg5NzEzLCA4OTcxOCwgODk3MjMsIDg5NzI4LCA4OTczMywgODk3MzgsIDg5NzQzLCA4OTc0OCwgCisgICAgODk3NTMsIDg5NzU4LCA4OTc2MywgODk3NjgsIDg5NzczLCA4OTc3OCwgODk3ODMsIDg5Nzg5LCA4OTc5NSwgODk4MDEsIAorICAgIDg5ODA2LCA4OTgxMSwgODk4MTYsIDg5ODIxLCA4OTgyNywgODk4MzMsIDg5ODM5LCA4OTg0NCwgODk4NDksIDg5ODU0LCAKKyAgICA4OTg2MCwgODk4NjUsIDg5ODcwLCA4OTg3NSwgODk4ODAsIDg5ODg1LCA4OTg5MCwgODk4OTUsIDg5OTAwLCA4OTkwNSwgCisgICAgODk5MTAsIDg5OTE1LCA4OTkyMCwgODk5MjUsIDg5OTMwLCA4OTkzNSwgODk5NDAsIDg5OTQ2LCA4OTk1MiwgODk5NTgsIAorICAgIDg5OTYzLCA4OTk2OCwgODk5NzMsIDg5OTc4LCA4OTk4NCwgODk5OTAsIDg5OTk2LCA5MDAwMSwgOTAwMDYsIDkwMDExLCAKKyAgICA5MDAxNiwgOTAwMjEsIDkwMDI2LCA5MDAzMSwgOTAwMzYsIDkwMDQxLCAxNzUzOSwgOTAwNDYsIDkwMDUyLCA5MDA1NywgCisgICAgOTAwNjIsIDkwMDY3LCA5MDA3MiwgOTAwNzcsIDkwMDgzLCA5MDA4OCwgOTAwOTMsIDkwMDk4LCA5MDEwMywgOTAxMDgsIAorICAgIDkwMTE0LCA5MDExOSwgOTAxMjQsIDkwMTI5LCA5MDEzNCwgOTAxMzksIDkwMTQ0LCA5MDE0OSwgOTAxNTQsIDkwMTU5LCAKKyAgICA5MDE2NCwgOTAxNjksIDkwMTc0LCA5MDE3OSwgOTAxODQsIDkwMTg5LCA5MDE5NCwgOTAxOTksIDkwMjA0LCA5MDIwOSwgCisgICAgOTAyMTQsIDkwMjE5LCA5MDIyNCwgOTAyMzAsIDkwMjM1LCA5MDI0MCwgOTAyNDUsIDkwMjUwLCA5MDI1NSwgOTAyNjAsIAorICAgIDkwMjY1LCA5MDI3MCwgOTAyNzUsIDkwMjgwLCA5MDI4NSwgOTAyOTAsIDkwMjk1LCA5MDMwMCwgOTAzMDUsIDkwMzEwLCAKKyAgICA5MDMxNSwgOTAzMjAsIDkwMzI1LCA5MDMzMCwgOTAzMzUsIDkwMzQwLCA5MDM0NSwgOTAzNTAsIDkwMzU1LCA5MDM2MCwgCisgICAgOTAzNjUsIDkwMzcwLCA5MDM3NSwgOTAzODAsIDkwMzg1LCA5MDM5MCwgOTAzOTUsIDkwNDAwLCA5MDQwNSwgOTA0MTAsIAorICAgIDkwNDE1LCA5MDQyMCwgOTA0MjUsIDkwNDMwLCA5MDQzNiwgOTA0NDEsIDkwNDQ2LCA5MDQ1MSwgOTA0NTYsIDkwNDYxLCAKKyAgICA5MDQ2NiwgOTA0NzEsIDkwNDc2LCA5MDQ4MSwgOTA0ODYsIDkwNDkxLCA5MDQ5NywgOTA1MDIsIDkwNTA4LCA5MDUxMywgCisgICAgOTA1MTgsIDkwNTIzLCA5MDUyOCwgOTA1MzMsIDkwNTM4LCA5MDU0NCwgOTA1NDksIDkwNTU0LCA5MDU2MCwgOTA1NjUsIAorICAgIDkwNTcwLCA5MDU3NSwgOTA1ODAsIDkwNTg1LCA5MDU5MSwgOTA1OTcsIDkwNjAyLCA5MDYwNywgMTMyMTEsIDkwNjEyLCAKKyAgICA5MDYxNywgOTA2MjIsIDkwNjI3LCA5MDYzMiwgOTA2MzcsIDkwNjQyLCA5MDY0NywgOTA2NTIsIDkwNjU3LCA5MDY2MiwgCisgICAgOTA2NjcsIDkwNjcyLCA5MDY3NywgOTA2ODIsIDkwNjg3LCA5MDY5MiwgOTA2OTcsIDkwNzAyLCA5MDcwNywgOTA3MTIsIAorICAgIDkwNzE3LCA5MDcyMiwgOTA3MjcsIDkwNzMyLCA5MDczNywgOTA3NDIsIDkwNzQ3LCA5MDc1MiwgOTA3NTcsIDkwNzYyLCAKKyAgICA5MDc2NywgOTA3NzIsIDkwNzc3LCA5MDc4MiwgOTA3ODcsIDkwNzkyLCA5MDc5NywgOTA4MDIsIDkwODA3LCA5MDgxMiwgCisgICAgOTA4MTcsIDkwODIyLCA5MDgyNywgOTA4MzIsIDkwODM3LCA5MDg0MiwgOTA4NDcsIDkwODUyLCA5MDg1NywgOTA4NjIsIAorICAgIDkwODY3LCA5MDg3MiwgOTA4NzcsIDkwODgyLCA5MDg4NywgOTA4OTIsIDkwODk3LCA5MDkwMiwgOTA5MDcsIDkwOTEyLCAKKyAgICA5MDkxNywgOTA5MjIsIDkwOTI3LCA5MDkzMiwgOTA5MzgsIDkwOTQzLCA5MDk0OCwgOTA5NTMsIDkwOTU4LCA5MDk2NCwgCisgICAgOTA5NjksIDkwOTc0LCA5MDk3OSwgOTA5ODQsIDkwOTg5LCA5MDk5NCwgOTEwMDAsIDkxMDA1LCA5MTAxMCwgOTEwMTUsIAorICAgIDkxMDIwLCA5MTAyNSwgOTEwMzEsIDkxMDM2LCA5MTA0MSwgOTEwNDYsIDkxMDUxLCA5MTA1NiwgOTEwNjIsIDkxMDY3LCAKKyAgICA5MTA3MiwgOTEwNzcsIDkxMDgyLCA5MTA4NywgOTEwOTMsIDkxMDk5LCA5MTEwNCwgOTExMDksIDkxMTE0LCA5MTEyMCwgCisgICAgOTExMjYsIDkxMTMyLCA5MTEzNywgOTExNDIsIDkxMTQ4LCA5MTE1NCwgOTExNTksIDkxMTY1LCA5MTE3MSwgOTExNzcsIAorICAgIDkxMTgyLCA5MTE4NywgOTExOTMsIDkxMTk4LCA5MTIwNCwgOTEyMDksIDkxMjE1LCA5MTIyNCwgOTEyMjksIDkxMjM0LCAKKyAgICA5MTI0MCwgOTEyNDUsIDkxMjUxLCA5MTI1NiwgOTEyNjEsIDkxMjY2LCA5MTI3MSwgOTEyNzYsIDkxMjgxLCA5MTI4NiwgCisgICAgOTEyOTEsIDkxMjk2LCA5MTMwMSwgOTEzMDYsIDkxMzExLCA5MTMxNiwgOTEzMjEsIDkxMzI2LCA5MTMzMSwgOTEzMzYsIAorICAgIDkxMzQxLCA5MTM0NiwgOTEzNTEsIDkxMzU2LCA5MTM2MSwgOTEzNjYsIDkxMzcxLCA5MTM3NiwgOTEzODEsIDkxMzg2LCAKKyAgICA5MTM5MSwgOTEzOTYsIDkxNDAxLCA5MTQwNiwgOTE0MTIsIDkxNDE4LCA5MTQyNCwgOTE0MjksIDkxNDM0LCA5MTQzOSwgCisgICAgOTE0NDQsIDkxNDQ5LCA5MTQ1NCwgOTE0NTksIDkxNDY0LCA5MTQ2OSwgOTE0NzQsIDkxNDc5LCA5MTQ4NCwgOTE0ODksIAorICAgIDkxNDk0LCA5MTQ5OSwgOTE1MDQsIDkxNTA5LCA5MTUxNCwgOTE1MTksIDkxNTI0LCA5MTUzMCwgOTE1MzYsIDkxNTQxLCAKKyAgICA5MTU0NywgOTE1NTIsIDkxNTU3LCA5MTU2MywgOTE1NjgsIDkxNTc0LCA5MTU3OSwgOTE1ODUsIDkxNTkwLCA5MTU5NiwgCisgICAgOTE2MDEsIDkxNjA3LCA5MTYxMiwgOTE2MTcsIDkxNjIyLCA5MTYyNywgOTE2MzIsIDkxNjM3LCA5MTY0MiwgODc3MjAsIAorICAgIDg3NzI2LCA4NzczMiwgODc3MzgsIDkxNjQ4LCA4Nzc0NCwgODc3NTAsIDkxNjU0LCA4Nzc1NiwgODc3NjIsIDg3NzY4LCAKKyAgICA4Nzc3NCwgODc3ODAsIDg3Nzg2LCA4Nzc5MiwgODc3OTgsIDg3ODA0LCA5MTY2MCwgODc4MTAsIDg3ODE2LCA4NzgyMiwgCisgICAgOTE2NjYsIDg3ODI4LCA4NzgzNCwgODc4NDAsIDg3ODQ2LCA5MTY3MiwgODc4NTIsIDg3ODU4LCA4Nzg2NCwgODc4ODQsIAorICAgIDkxNjc4LCA5MTY4NCwgODc4OTAsIDkxNjkwLCA4Nzg5NiwgODc5MDIsIDg3OTA4LCA4NzkxNCwgODc5MjAsIDMxNTAsIAorICAgIDMxNTUsIDkxNjk2LCA5MTcwMSwgOTE3MDQsIDkxNzEwLCA5MTcxNiwgOTE3MjMsIDkxNzI4LCA5MTczMywgMjMzNywgCiB9OwogCiAvKiBjb2RlLT5uYW1lIHBocmFzZWJvb2sgKi8KLSNkZWZpbmUgcGhyYXNlYm9va19zaGlmdCA3Ci0jZGVmaW5lIHBocmFzZWJvb2tfc2hvcnQgMjA5CisjZGVmaW5lIHBocmFzZWJvb2tfc2hpZnQgOAorI2RlZmluZSBwaHJhc2Vib29rX3Nob3J0IDIwMQogc3RhdGljIHVuc2lnbmVkIGNoYXIgcGhyYXNlYm9va1tdID0gewotICAgIDAsIDIxOSwgMjAsIDI0NSwgMzksIDc5LCAyMjQsIDEsIDc5LCA1NCwgNTAsIDI0NywgMTQwLCA1MCwgMjI1LCAxODUsIDUwLCAKLSAgICAyNTQsIDEzNCwgMjU0LCA2NSwgNDMsIDIyNiwgNywgNDQsIDIyNiwgNywgMjUzLCAyMjQsIDk2LCA1MCwgMjQ5LCAyMjcsIAotICAgIDI0MCwgMTc0LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDIxOSwgNDgsIDIxLCAyMTAsIDg2LCAyMSwgMTExLCAyMSwgMTA1LCAyMSwgCi0gICAgMTU4LCAyMSwgMTYxLCAyMSwgMTkwLCAyMSwgMTk1LCAyMSwgMTk5LCAyMSwgMTk2LCAyMSwgMjAxLCAyNDksIDIzNCwgMjIwLCAKLSAgICAxNTIsIDIzMywgMjEsIDUwLCAyNDUsIDEwNiwgNTAsIDI0MiwgMTM3LCA1MCwgMjI0LCAxNiwgNzksIDI0OSwgMjI1LCAyNTMsIAotICAgIDIxNCwgNywgNiwgMSwgNjEsIDcsIDYsIDEsIDI1MywgMTY2LCA3LCA2LCAxLCAyNTEsIDc0LCA3LCA2LCAxLCAyNDksIDY4LCAKLSAgICA3LCA2LCAxLCA3NiwgNywgNiwgMSwgMjQ1LCAxNCwgNywgNiwgMSwgMjQzLCAyMDksIDcsIDYsIDEsIDI0MiwgNjcsIDcsIDYsIAotICAgIDEsIDc0LCA3LCA2LCAxLCAyMzUsIDE1MCwgNywgNiwgMSwgMjM1LCAyOSwgNywgNiwgMSwgMTU2LCA3LCA2LCAxLCAxOTQsIAotICAgIDcsIDYsIDEsIDIzMCwgMzAsIDcsIDYsIDEsIDc4LCA3LCA2LCAxLCAyMjYsIDEwOSwgNywgNiwgMSwgMjI0LCA5OSwgNywgNiwgCi0gICAgMSwgMTUzLCA3LCA2LCAxLCAyMjIsIDkzLCA3LCA2LCAxLCAyMTcsIDE1MywgNywgNiwgMSwgNjksIDcsIDYsIDEsIDIxNCwgCi0gICAgMTA1LCA3LCA2LCAxLCAyMTIsIDk4LCA3LCA2LCAxLCAyMTEsIDE3OCwgNywgNiwgMSwgMjExLCAxMTcsIDcsIDYsIDEsIAotICAgIDIxMCwgMTU5LCA0MywgNDIsIDEyNywgMjIzLCA1MywgMjE5LCA0OCwgNDQsIDQyLCAxMjcsIDI1MCwgMzksIDI1NSwgMjMsIAotICAgIDEyMSwgMjMyLCAyMTksIDI0MiwgMTQ0LCAyNTUsIDIzLCA3LCA0LCAxLCA2MSwgNywgNCwgMSwgMjUzLCAxNjYsIDcsIDQsIAotICAgIDEsIDI1MSwgNzQsIDcsIDQsIDEsIDI0OSwgNjgsIDcsIDQsIDEsIDc2LCA3LCA0LCAxLCAyNDUsIDE0LCA3LCA0LCAxLCAKLSAgICAyNDMsIDIwOSwgNywgNCwgMSwgMjQyLCA2NywgNywgNCwgMSwgNzQsIDcsIDQsIDEsIDIzNSwgMTUwLCA3LCA0LCAxLCAyMzUsIAotICAgIDI5LCA3LCA0LCAxLCAxNTYsIDcsIDQsIDEsIDE5NCwgNywgNCwgMSwgMjMwLCAzMCwgNywgNCwgMSwgNzgsIDcsIDQsIDEsIAotICAgIDIyNiwgMTA5LCA3LCA0LCAxLCAyMjQsIDk5LCA3LCA0LCAxLCAxNTMsIDcsIDQsIDEsIDIyMiwgOTMsIDcsIDQsIDEsIDIxNywgCi0gICAgMTUzLCA3LCA0LCAxLCA2OSwgNywgNCwgMSwgMjE0LCAxMDUsIDcsIDQsIDEsIDIxMiwgOTgsIDcsIDQsIDEsIDIxMSwgMTc4LCAKLSAgICA3LCA0LCAxLCAyMTEsIDExNywgNywgNCwgMSwgMjEwLCAxNTksIDQzLCAyNDksIDEwNywgMTI3LCA2NywgMjMyLCAyMTksIAotICAgIDQ0LCAyNDksIDEwNywgMTI3LCAxODQsIDIyOCwgNzgsIDIxOSwgMjAsIDIzNSwgMjAwLCAyNDUsIDM5LCA3OSwgMjUwLCAKLSAgICAxODQsIDUwLCAyMjQsIDIzMSwgNTAsIDI0OSwgMTA2LCA1MCwgMjExLCA0MCwgNTAsIDI1MSwgMTQzLCAxMzAsIDIyMSwgCi0gICAgMTc1LCA1MCwgMjQ4LCA5LCAyNDksIDE3MSwgNTAsIDI0NCwgMTQ0LCAyMjYsIDE1OCwgMjM1LCAyNDUsIDIzMywgNDgsIDUyLCAKLSAgICAyNTQsIDExOCwgMjI0LCAxLCA3OSwgMjI4LCA1NywgNTAsIDIxOSwgNTQsIDI0MCwgMTc1LCAyMjMsIDEwNSwgNTAsIDIzMSwgCi0gICAgMjM3LCAyNDgsIDc5LCA1MCwgMjI1LCAyNCwgNTAsIDIxOCwgMjQsIDEwNSwgMjE4LCAyNCwgMTU4LCAyNTUsIDEyLCAyNTUsIAotICAgIDIzLCAyMzAsIDIzMywgNTAsIDIyNSwgNzEsIDUwLCAyMzAsIDIyOSwgMjQ3LCAxMjgsIDI1MCwgMTkxLCAyMTgsIDI0LCAKLSAgICAxMTEsIDIzMSwgMTUzLCAyMjYsIDE1OCwgMjM1LCAyNDUsIDIyMiwgMjUwLCA1MiwgMjU0LCAxMTgsIDIyNCwgMSwgNzksIAotICAgIDIxMiwgMTE0LCAyNDQsIDEwLCAxMjMsIDIyNCwgMjQsIDIxMiwgMTE0LCAyNDQsIDEwLCAxMjMsIDI0MiwgMzQsIDIxMiwgCi0gICAgMTE0LCAyNDQsIDEwLCAxMzQsIDIyNCwgMjIsIDIzNSwgMjAwLCAyMjQsIDE2LCA3OSwgNywgNiwgMSwgMTE2LCAyLCAyNDIsIAotICAgIDE0MywgNywgNiwgMSwgMTE2LCAyLCAxNDIsIDcsIDYsIDEsIDExNiwgMiwgMjUwLCAzOCwgNywgNiwgMSwgMTE2LCAyLCAKLSAgICAxODQsIDcsIDYsIDEsIDExNiwgMiwgMjQ4LCA5LCA3LCA2LCAxLCAxMTYsIDIsIDIyMiwgMjM3LCA0OCwgNywgNiwgMSwgCi0gICAgMjU0LCAyNTIsIDcsIDYsIDEsIDI1MSwgNzUsIDIsIDI1MCwgMTkxLCA3LCA2LCAxLCAxNjAsIDIsIDI0MiwgMTQzLCA3LCA2LCAKLSAgICAxLCAxNjAsIDIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDM4LCA3LCA2LCAxLCAxNjAsIDIsIDI0OCwgOSwgNywgNiwgCi0gICAgMSwgMjQwLCAxNjEsIDIsIDI0MiwgMTQzLCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgMTQyLCA3LCA2LCAxLCAyNDAsIDE2MSwgCi0gICAgMiwgMjUwLCAzOCwgNywgNiwgMSwgMjQwLCAxNjEsIDIsIDI0OCwgOSwgNywgNiwgMSwgMjQ1LCA2NywgNywgNiwgMSwgMjMwLCAKLSAgICAzMSwgMiwgMTg0LCA3LCA2LCAxLCAxNDQsIDIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxNDQsIDIsIDE0MiwgNywgNiwgMSwgCi0gICAgMTQ0LCAyLCAyNTAsIDM4LCA3LCA2LCAxLCAxNDQsIDIsIDE4NCwgNywgNiwgMSwgMTQ0LCAyLCAyNDgsIDksIDIzMCwgODksIAotICAgIDUwLCA3LCA2LCAxLCAxNDQsIDIsIDkxLCA3LCA2LCAxLCAxMDQsIDIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxMDQsIDIsIDE0MiwgCi0gICAgNywgNiwgMSwgMTA0LCAyLCAyNTAsIDM4LCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgOSwgNywgNiwgMSwgMjExLCAxMTgsIDIsIAotICAgIDE0MiwgNywgNiwgMSwgMjE2LCAxNTIsIDcsIDQsIDEsIDIyMCwgNzgsIDIyMiwgOTMsIDcsIDQsIDEsIDExNiwgMiwgMjQyLCAKLSAgICAxNDMsIDcsIDQsIDEsIDExNiwgMiwgMTQyLCA3LCA0LCAxLCAxMTYsIDIsIDI1MCwgMzgsIDcsIDQsIDEsIDExNiwgMiwgCi0gICAgMTg0LCA3LCA0LCAxLCAxMTYsIDIsIDI0OCwgOSwgNywgNCwgMSwgMTE2LCAyLCAyMjIsIDIzNywgNDgsIDcsIDQsIDEsIAotICAgIDI1NCwgMjUyLCA3LCA0LCAxLCAyNTEsIDc1LCAyLCAyNTAsIDE5MSwgNywgNCwgMSwgMTYwLCAyLCAyNDIsIDE0MywgNywgNCwgCi0gICAgMSwgMTYwLCAyLCAxNDIsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAzOCwgNywgNCwgMSwgMTYwLCAyLCAyNDgsIDksIDcsIDQsIAotICAgIDEsIDI0MCwgMTYxLCAyLCAyNDIsIDE0MywgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDE0MiwgNywgNCwgMSwgMjQwLCAxNjEsIAotICAgIDIsIDI1MCwgMzgsIDcsIDQsIDEsIDI0MCwgMTYxLCAyLCAyNDgsIDksIDcsIDQsIDEsIDI0NSwgNjcsIDcsIDQsIDEsIDIzMCwgCi0gICAgMzEsIDIsIDE4NCwgNywgNCwgMSwgMTQ0LCAyLCAyNDIsIDE0MywgNywgNCwgMSwgMTQ0LCAyLCAxNDIsIDcsIDQsIDEsIAotICAgIDE0NCwgMiwgMjUwLCAzOCwgNywgNCwgMSwgMTQ0LCAyLCAxODQsIDcsIDQsIDEsIDE0NCwgMiwgMjQ4LCA5LCAyNDcsIDE3NywgCi0gICAgNTAsIDcsIDQsIDEsIDE0NCwgMiwgOTEsIDcsIDQsIDEsIDEwNCwgMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDEwNCwgMiwgMTQyLCAKLSAgICA3LCA0LCAxLCAxMDQsIDIsIDI1MCwgMzgsIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCA5LCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgCi0gICAgMTQyLCA3LCA0LCAxLCAyMTYsIDE1MiwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDI0OCwgOSwgNywgNiwgMSwgMTE2LCAyLCAKLSAgICAyMzEsIDIzNywgNywgNCwgMSwgMTE2LCAyLCAyMzEsIDIzNywgNywgNiwgMSwgMTE2LCAyLCAyNTEsIDE1NCwgNywgNCwgMSwgCi0gICAgMTE2LCAyLCAyNTEsIDE1NCwgNywgNiwgMSwgMTE2LCAyLCAyMjYsIDIyOCwgNywgNCwgMSwgMTE2LCAyLCAyMjYsIDIyOCwgCi0gICAgNywgNiwgMSwgMjUxLCA3NSwgMiwgMTQyLCA3LCA0LCAxLCAyNTEsIDc1LCAyLCAxNDIsIDcsIDYsIDEsIDI1MSwgNzUsIDIsIAotICAgIDI1MCwgMzgsIDcsIDQsIDEsIDI1MSwgNzUsIDIsIDI1MCwgMzgsIDcsIDYsIDEsIDI1MSwgNzUsIDIsIDU5LCA0OCwgNywgNCwgCi0gICAgMSwgMjUxLCA3NSwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyNTEsIDc1LCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMjUxLCA3NSwgCi0gICAgMiwgMjUwLCAyNDIsIDcsIDYsIDEsIDI0OSwgNjksIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyNDksIDY5LCAyLCAyNTAsIAotICAgIDI0MiwgNywgNiwgMSwgMjQ5LCA2OSwgMiwgOTEsIDcsIDQsIDEsIDI0OSwgNjksIDIsIDkxLCA3LCA2LCAxLCAxNjAsIDIsIAotICAgIDIzMSwgMjM3LCA3LCA0LCAxLCAxNjAsIDIsIDIzMSwgMjM3LCA3LCA2LCAxLCAxNjAsIDIsIDI1MSwgMTU0LCA3LCA0LCAxLCAKLSAgICAxNjAsIDIsIDI1MSwgMTU0LCA3LCA2LCAxLCAxNjAsIDIsIDU5LCA0OCwgNywgNCwgMSwgMTYwLCAyLCA1OSwgNDgsIDcsIDYsIAotICAgIDEsIDE2MCwgMiwgMjI2LCAyMjgsIDcsIDQsIDEsIDE2MCwgMiwgMjI2LCAyMjgsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAKLSAgICAyNDIsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAyNDIsIDcsIDYsIDEsIDI0MywgMjEwLCAyLCAyNTAsIDM4LCA3LCA0LCAxLCAKLSAgICAyNDMsIDIxMCwgMiwgMjUwLCAzOCwgNywgNiwgMSwgMjQzLCAyMTAsIDIsIDI1MSwgMTU0LCA3LCA0LCAxLCAyNDMsIDIxMCwgCi0gICAgMiwgMjUxLCAxNTQsIDcsIDYsIDEsIDI0MywgMjEwLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0MywgMjEwLCAyLCA1OSwgNDgsIAotICAgIDcsIDYsIDEsIDI0MywgMjEwLCAyLCAyNTAsIDE5MSwgNywgNCwgMSwgMjQzLCAyMTAsIDIsIDI1MCwgMTkxLCA3LCA2LCAxLCAKLSAgICAyNDIsIDY4LCAyLCAyNTAsIDM4LCA3LCA0LCAxLCAyNDIsIDY4LCAyLCAyNTAsIDM4LCA3LCA2LCAxLCAyNDIsIDY4LCAyLCAKLSAgICA5MSwgNywgNCwgMSwgMjQyLCA2OCwgMiwgOTEsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAxODQsIDcsIDQsIDEsIDI0MCwgCi0gICAgMTYxLCAyLCAxODQsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAyMzEsIDIzNywgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDIzMSwgCi0gICAgMjM3LCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgMjUxLCAxNTQsIDcsIDQsIDEsIDI0MCwgMTYxLCAyLCAyNTEsIDE1NCwgNywgCi0gICAgNiwgMSwgMjQwLCAxNjEsIDIsIDIyNiwgMjI4LCA3LCA0LCAxLCAyNDAsIDE2MSwgMiwgMjI2LCAyMjgsIDcsIDYsIDEsIAotICAgIDI0MCwgMTYxLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0NywgMTI3LCA3NCwgNywgNiwgMjcsIDIzNiwgMzgsIDcsIDQsIDI3LCAKLSAgICAyMzYsIDM4LCA3LCA2LCAxLCAyMzUsIDE1MSwgMiwgMjUwLCAzOCwgNywgNCwgMSwgMjM1LCAxNTEsIDIsIDI1MCwgMzgsIDcsIAotICAgIDYsIDEsIDIzNSwgMzAsIDIsIDI1MCwgMTkxLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCAyNTAsIDE5MSwgNywgNCwgMSwgMjMzLCAKLSAgICAyNDUsIDcsIDYsIDEsIDIzMywgMTU1LCAyLCAxNDIsIDcsIDQsIDEsIDIzMywgMTU1LCAyLCAxNDIsIDcsIDYsIDEsIDIzMywgCi0gICAgMTU1LCAyLCAyNTAsIDE5MSwgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDI1MCwgMTkxLCA3LCA2LCAxLCAyMzMsIDE1NSwgMiwgCi0gICAgMjUwLCAyNDIsIDcsIDQsIDEsIDIzMywgMTU1LCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMjMzLCAxNTUsIDIsIDIzMCwgMjI5LCAKLSAgICAyNDcsIDEyOCwgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDIzMCwgMjI5LCAyNDcsIDEyOCwgNywgNiwgMSwgMjMzLCAxNTUsIDIsIAotICAgIDkxLCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgOTEsIDcsIDYsIDEsIDIzMCwgMzEsIDIsIDE0MiwgNywgNCwgMSwgMjMwLCAzMSwgCi0gICAgMiwgMTQyLCA3LCA2LCAxLCAyMzAsIDMxLCAyLCAyNTAsIDE5MSwgNywgNCwgMSwgMjMwLCAzMSwgMiwgMjUwLCAxOTEsIDcsIAotICAgIDYsIDEsIDIzMCwgMzEsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyMzAsIDMxLCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMjMwLCAKLSAgICAzMSwgMjI0LCAyMDcsIDI1MSwgODYsIDI1NCwgNjUsIDcsIDYsIDEsIDI0NSwgMTQ2LCA3LCA0LCAxLCAyNDUsIDE0NiwgNywgCi0gICAgNiwgMSwgMTQ0LCAyLCAyMzEsIDIzNywgNywgNCwgMSwgMTQ0LCAyLCAyMzEsIDIzNywgNywgNiwgMSwgMTQ0LCAyLCAyNTEsIAotICAgIDE1NCwgNywgNCwgMSwgMTQ0LCAyLCAyNTEsIDE1NCwgNywgNiwgMSwgMTQ0LCAyLCA1MiwgMTQyLCA3LCA0LCAxLCAxNDQsIAotICAgIDIsIDUyLCAxNDIsIDcsIDYsIDI3LCAyMjYsIDIzOCwgNywgNCwgMjcsIDIyNiwgMjM4LCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgCi0gICAgMTQyLCA3LCA0LCAxLCAyMjMsIDIyNywgMiwgMTQyLCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgMjUwLCAxOTEsIDcsIDQsIDEsIAotICAgIDIyMywgMjI3LCAyLCAyNTAsIDE5MSwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyMjMsIDIyNywgCi0gICAgMiwgMjUwLCAyNDIsIDcsIDYsIDEsIDIyMiwgOTQsIDIsIDE0MiwgNywgNCwgMSwgMjIyLCA5NCwgMiwgMTQyLCA3LCA2LCAxLCAKLSAgICAyMjIsIDk0LCAyLCAyNTAsIDM4LCA3LCA0LCAxLCAyMjIsIDk0LCAyLCAyNTAsIDM4LCA3LCA2LCAxLCAyMjIsIDk0LCAyLCAKLSAgICAyNTAsIDE5MSwgNywgNCwgMSwgMjIyLCA5NCwgMiwgMjUwLCAxOTEsIDcsIDYsIDEsIDIyMiwgOTQsIDIsIDI1MCwgMjQyLCAKLSAgICA3LCA0LCAxLCAyMjIsIDk0LCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMjE3LCAxNTQsIDIsIDI1MCwgMTkxLCA3LCA0LCAxLCAKLSAgICAyMTcsIDE1NCwgMiwgMjUwLCAxOTEsIDcsIDYsIDEsIDIxNywgMTU0LCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMjE3LCAxNTQsIAotICAgIDIsIDI1MCwgMjQyLCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgOTEsIDcsIDQsIDEsIDIxNywgMTU0LCAyLCA5MSwgNywgNiwgMSwgCi0gICAgMTA0LCAyLCAxODQsIDcsIDQsIDEsIDEwNCwgMiwgMTg0LCA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjM3LCA3LCA0LCAxLCAKLSAgICAxMDQsIDIsIDIzMSwgMjM3LCA3LCA2LCAxLCAxMDQsIDIsIDI1MSwgMTU0LCA3LCA0LCAxLCAxMDQsIDIsIDI1MSwgMTU0LCAKLSAgICA3LCA2LCAxLCAxMDQsIDIsIDIyMiwgMjM3LCA0OCwgNywgNCwgMSwgMTA0LCAyLCAyMjIsIDIzNywgNDgsIDcsIDYsIDEsIAotICAgIDEwNCwgMiwgNTIsIDE0MiwgNywgNCwgMSwgMTA0LCAyLCA1MiwgMTQyLCA3LCA2LCAxLCAxMDQsIDIsIDIyNiwgMjI4LCA3LCAKLSAgICA0LCAxLCAxMDQsIDIsIDIyNiwgMjI4LCA3LCA2LCAxLCAyMTIsIDk5LCAyLCAyNTAsIDM4LCA3LCA0LCAxLCAyMTIsIDk5LCAKLSAgICAyLCAyNTAsIDM4LCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMjUwLCAzOCwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDI1MCwgMzgsIAotICAgIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAyNDgsIDksIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAxNDIsIDcsIDQsIDEsIDIxMCwgCi0gICAgMTYwLCAyLCAxNDIsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCA1OSwgNDgsIAotICAgIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAKLSAgICAyMDAsIDIyMiwgOTMsIDcsIDQsIDEsIDU3LCAyLCA5MSwgNywgNiwgMSwgNTcsIDIsIDEwMywgNywgNiwgMSwgNTcsIDIsIAotICAgIDIxNiwgMTIsIDcsIDQsIDEsIDU3LCAyLCAyMTYsIDEyLCA3LCA2LCAxLCAxMzgsIDE5NSwgNywgNCwgMSwgMTM4LCAxOTUsIAotICAgIDcsIDYsIDEsIDIwNCwgNzgsIDcsIDYsIDEsIDI1MSwgNzUsIDIsIDEwMywgNywgNCwgMSwgMjUxLCA3NSwgMiwgMTAzLCA3LCAKLSAgICA2LCAxLCAyNTQsIDIyOCwgMjQ5LCA2OCwgNywgNiwgMSwgMjQ5LCA2OSwgMiwgMTAzLCA3LCA2LCAxLCAyNDksIDY5LCAyLCAKLSAgICAyMTYsIDEyLCA3LCA0LCAxLCAyNDksIDY5LCAyLCAyMTYsIDEyLCA3LCA0LCAxLCAyMTUsIDk0LCAyNDgsIDYyLCA3LCA2LCAKLSAgICAxLCAyMjMsIDUyLCA3NiwgNywgNiwgMSwgMjIxLCAxOTcsIDcsIDYsIDEsIDIwNCwgNzYsIDcsIDYsIDEsIDI0NSwgMTUsIDIsIAotICAgIDEwMywgNywgNCwgMSwgMjQ1LCAxNSwgMiwgMTAzLCA3LCA2LCAxLCAyNDMsIDIxMCwgMiwgMTAzLCA3LCA2LCAxLCAyNDMsIAotICAgIDExNCwgNywgNCwgMSwgMjQwLCAyMDgsIDcsIDYsIDEsIDIzNSwgMTkyLCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgOTEsIDcsIAotICAgIDYsIDEsIDIzNSwgMzAsIDIsIDEwMywgNywgNCwgMSwgMjM1LCAzMCwgMiwgMTAzLCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgCi0gICAgMTMwLCA3LCA0LCAxLCAyMzMsIDEwNiwgMiwgOTEsIDcsIDYsIDEsIDIxNSwgOTQsIDE5NCwgNywgNiwgMSwgMjMwLCAzMSwgCi0gICAgMiwgNDMsIDEwMywgNywgNCwgMSwgMjMwLCAzMSwgMiwgMjAwLCA0NCwgMjMzLCA0MiwgNywgNiwgMSwgMTQ0LCAyLCAyMzAsIAotICAgIDIyOSwgMTg0LCA3LCA2LCAxLCAxNDQsIDIsIDI0MCwgMjU1LCA3LCA0LCAxLCAxNDQsIDIsIDI0MCwgMjU1LCA3LCA2LCAxLCAKLSAgICAyMjYsIDIyMywgNywgNCwgMSwgMjI2LCAyMjMsIDcsIDYsIDEsIDIyNiwgMTEwLCAyLCAxMDMsIDcsIDQsIDEsIDIyNiwgCi0gICAgMTEwLCAyLCAxMDMsIDcsIDEsIDIxMCwgMjE0LCA3LCA2LCAxLCAxMzgsIDEwNSwgNywgNCwgMSwgMTM4LCAxMDUsIDcsIDYsIAotICAgIDEsIDI0NSwgODMsIDcsIDEsIDIyMywgNTIsIDI0NSwgODQsIDIzMiwgMTI5LCA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgMjI2LCAKLSAgICA3MCwgMTAzLCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgMTAzLCA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgMTAzLCA3LCA2LCAxLCAKLSAgICAyMTcsIDE1NCwgMiwgMjIzLCA1OCwgMTAzLCA3LCA2LCAxLCAxMDQsIDIsIDI0MCwgMjU1LCA3LCA0LCAxLCAxMDQsIDIsIAotICAgIDI0MCwgMjU1LCA3LCA2LCAxLCAyMTQsIDE1NywgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDEwMywgNywgNiwgMSwgMjExLCAKLSAgICAxMTgsIDIsIDEwMywgNywgNCwgMSwgMjExLCAxMTgsIDIsIDEwMywgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDkxLCA3LCA0LCAKLSAgICAxLCAyMTAsIDE2MCwgMiwgOTEsIDcsIDYsIDEsIDI0NSwgMTYsIDcsIDYsIDEsIDI0NSwgMTcsIDIyMywgNTEsIDcsIDQsIDEsIAotICAgIDI0NSwgMTcsIDIyMywgNTEsIDcsIDQsIDEsIDI0NSwgMTcsIDIsIDIxNywgNzgsIDcsIDEsIDExMywgMiwgOTEsIDcsIDYsIAotICAgIDEsIDEzOCwgMTkwLCA3LCA0LCAxLCAxMzgsIDE5MCwgNywgMSwgMjM1LCAyMDAsIDI0MiwgMTg3LCAyMTgsIDEzMiwgMiwgCi0gICAgOTEsIDcsIDEsIDIxMSwgMTgxLCA3LCAxLCAyNDgsIDU1LCAyNTAsIDE5LCA3LCAxLCAyMzMsIDgzLCAyNTAsIDE5LCA3LCAxLCAKLSAgICAyNTQsIDE0NSwgMjUwLCAxOSwgNywgMSwgMjIzLCA1OCwgMjUwLCAxOSwgNywgNiwgMSwgMjQ2LCA0OCwgMiwgMjUwLCAyNDIsIAotICAgIDcsIDYsIDEsIDI0OSwgNjksIDIsIDQsIDEsIDIxMCwgMTYwLCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMjQ2LCA0OCwgMiwgCi0gICAgMjUwLCAyNDIsIDcsIDYsIDEsIDIzMiwgMTk0LCA3LCA2LCAxLCAyMzMsIDE1NSwgMiwgNCwgMSwgMjM1LCAxNTAsIDcsIDQsIAotICAgIDEsIDIzMiwgMTk0LCA3LCA2LCAxLCAyMjgsIDE5MSwgNywgNiwgMSwgMjMwLCAzMSwgMiwgNCwgMSwgMjM1LCAxNTAsIDcsIAotICAgIDQsIDEsIDIyOCwgMTkxLCA3LCA2LCAxLCAxMTYsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAxMTYsIDIsIDI1MCwgMjQyLCA3LCAKLSAgICA2LCAxLCAyNDAsIDE2MSwgMiwgMjUwLCAyNDIsIDcsIDQsIDEsIDI0MCwgMTYxLCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgCi0gICAgMTQ0LCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMTA0LCAyLCAyNTAsIDI0MiwgCi0gICAgNywgNCwgMSwgMTA0LCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDEwLCAyMiwgMjMxLCAyMzcsIDcsIDQsIAotICAgIDEsIDEwNCwgMiwgMjQ4LCAxMCwgMjIsIDIzMSwgMjM3LCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMTAsIDIyLCAxNDIsIDcsIAotICAgIDQsIDEsIDEwNCwgMiwgMjQ4LCAxMCwgMjIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDEwLCAyMiwgMjUwLCAyNDIsIAotICAgIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCAxMCwgMjIsIDI1MCwgMjQyLCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMTAsIDIyLCAKLSAgICAyNDIsIDE0MywgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDEwLCAyMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDIxNSwgOTQsIDc2LCAKLSAgICA3LCA2LCAxLCAxMTYsIDIsIDI0OCwgMTAsIDIyLCAyMzEsIDIzNywgNywgNCwgMSwgMTE2LCAyLCAyNDgsIDEwLCAyMiwgCi0gICAgMjMxLCAyMzcsIDcsIDYsIDEsIDExNiwgMiwgNTksIDcyLCAyMiwgMjMxLCAyMzcsIDcsIDQsIDEsIDExNiwgMiwgNTksIDcyLCAKLSAgICAyMiwgMjMxLCAyMzcsIDcsIDYsIDEsIDI1NCwgMjUzLCAyLCAyMzEsIDIzNywgNywgNCwgMSwgMjU0LCAyNTMsIDIsIDIzMSwgCi0gICAgMjM3LCA3LCA2LCAxLCAyNDMsIDIxMCwgMiwgOTEsIDcsIDQsIDEsIDI0MywgMjEwLCAyLCA5MSwgNywgNiwgMSwgMjQzLCAKLSAgICAyMTAsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyNDMsIDIxMCwgMiwgMjUwLCAyNDIsIDcsIDYsIDEsIDIzNSwgMzAsIDIsIAotICAgIDI1MCwgMjQyLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMTQ0LCAyLCAyMjYsIDIyOCwgNywgNCwgCi0gICAgMSwgMTQ0LCAyLCAyMjYsIDIyOCwgNywgNiwgMSwgMTQ0LCAyLCAyMjYsIDIyOSwgMjIsIDIzMSwgMjM3LCA3LCA0LCAxLCAKLSAgICAxNDQsIDIsIDIyNiwgMjI5LCAyMiwgMjMxLCAyMzcsIDcsIDYsIDEsIDI0NSwgMTcsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAKLSAgICAyNDUsIDE3LCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMjM1LCAxNTEsIDIsIDI1MCwgMjQyLCA3LCA2LCAxLCAyNDYsIDQ3LCAKLSAgICA3LCA2LCAxLCAyNDksIDY5LCAyLCA0LCAxLCAyMTAsIDE1OSwgNywgNCwgMSwgMjQ2LCA0NywgNywgNiwgMSwgMjQzLCAyMTAsIAotICAgIDIsIDE0MiwgNywgNCwgMSwgMjQzLCAyMTAsIDIsIDE0MiwgNywgNiwgMSwgMjQwLCAyMDYsIDcsIDYsIDEsIDIxMSwgMTgxLCAKLSAgICA3LCA2LCAxLCAyMzAsIDMxLCAyLCAyNDIsIDE0MywgNywgNCwgMSwgMjMwLCAzMSwgMiwgMjQyLCAxNDMsIDcsIDYsIDEsIAotICAgIDExNiwgMiwgMjIyLCAyMzcsIDcyLCAyMiwgMTQyLCA3LCA0LCAxLCAxMTYsIDIsIDIyMiwgMjM3LCA3MiwgMjIsIDE0MiwgNywgCi0gICAgNiwgMSwgMjU0LCAyNTMsIDIsIDE0MiwgNywgNCwgMSwgMjU0LCAyNTMsIDIsIDE0MiwgNywgNiwgMSwgMTQ0LCAyLCAyMTgsIAotICAgIDEwNSwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyMTgsIDEwNSwgMjIsIDE0MiwgNywgNiwgMSwgMTE2LCAyLCA1MiwgCi0gICAgMjQyLCAxNDMsIDcsIDQsIDEsIDExNiwgMiwgNTIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxMTYsIDIsIDIzNSwgMjAwLCAyNTEsIAotICAgIDE1NCwgNywgNCwgMSwgMTE2LCAyLCAyMzUsIDIwMCwgMjUxLCAxNTQsIDcsIDYsIDEsIDE2MCwgMiwgNTIsIDI0MiwgMTQzLCAKLSAgICA3LCA0LCAxLCAxNjAsIDIsIDUyLCAyNDIsIDE0MywgNywgNiwgMSwgMTYwLCAyLCAyMzUsIDIwMCwgMjUxLCAxNTQsIDcsIDQsIAotICAgIDEsIDE2MCwgMiwgMjM1LCAyMDAsIDI1MSwgMTU0LCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgNTIsIDI0MiwgMTQzLCA3LCA0LCAKLSAgICAxLCAyNDAsIDE2MSwgMiwgNTIsIDI0MiwgMTQzLCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgMjM1LCAyMDAsIDI1MSwgMTU0LCAKLSAgICA3LCA0LCAxLCAyNDAsIDE2MSwgMiwgMjM1LCAyMDAsIDI1MSwgMTU0LCA3LCA2LCAxLCAxNDQsIDIsIDUyLCAyNDIsIDE0MywgCi0gICAgNywgNCwgMSwgMTQ0LCAyLCA1MiwgMjQyLCAxNDMsIDcsIDYsIDEsIDE0NCwgMiwgMjM1LCAyMDAsIDI1MSwgMTU0LCA3LCA0LCAKLSAgICAxLCAxNDQsIDIsIDIzNSwgMjAwLCAyNTEsIDE1NCwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDUyLCAyNDIsIDE0MywgNywgNCwgCi0gICAgMSwgMjIzLCAyMjcsIDIsIDUyLCAyNDIsIDE0MywgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDIzNSwgMjAwLCAyNTEsIDE1NCwgCi0gICAgNywgNCwgMSwgMjIzLCAyMjcsIDIsIDIzNSwgMjAwLCAyNTEsIDE1NCwgNywgNiwgMSwgMTA0LCAyLCA1MiwgMjQyLCAxNDMsIAotICAgIDcsIDQsIDEsIDEwNCwgMiwgNTIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxMDQsIDIsIDIzNSwgMjAwLCAyNTEsIDE1NCwgNywgNCwgCi0gICAgMSwgMTA0LCAyLCAyMzUsIDIwMCwgMjUxLCAxNTQsIDcsIDYsIDEsIDIyMiwgOTQsIDIsIDI0OSwgMjI4LCA1MSwgNywgNCwgCi0gICAgMSwgMjIyLCA5NCwgMiwgMjQ5LCAyMjgsIDUxLCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgMjQ5LCAyMjgsIDUxLCA3LCA0LCAxLCAKLSAgICAyMTcsIDE1NCwgMiwgMjQ5LCAyMjgsIDUxLCA3LCA2LCAxLCAyMTAsIDIzMSwgNywgNCwgMSwgMjEwLCAyMzEsIDcsIDYsIDEsIAotICAgIDI0MiwgNjgsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyNDIsIDY4LCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMjMwLCAzMSwgMiwgCi0gICAgMjAwLCA0NCwgMjMzLCA0MiwgNywgNCwgMSwgMjQ5LCA2OSwgMiwgMjQ5LCAxMDgsIDcsIDYsIDEsIDIyNiwgMTM4LCA3LCA0LCAKLSAgICAxLCAyMjYsIDEzOCwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDEwMywgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDEwMywgNywgNiwgCi0gICAgMSwgMTE2LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDExNiwgMiwgNTksIDQ4LCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMTkxLCA3LCAKLSAgICA0LCAxLCAxNjAsIDIsIDI1MCwgMTkxLCA3LCA2LCAxLCAxNDQsIDIsIDI0OCwgMTAsIDIyLCAyMzEsIDIzNywgNywgNCwgMSwgCi0gICAgMTQ0LCAyLCAyNDgsIDEwLCAyMiwgMjMxLCAyMzcsIDcsIDYsIDEsIDE0NCwgMiwgMjE2LCA5MCwgMjIsIDIzMSwgMjM3LCA3LCAKLSAgICA0LCAxLCAxNDQsIDIsIDIxNiwgOTAsIDIyLCAyMzEsIDIzNywgNywgNiwgMSwgMTQ0LCAyLCA1OSwgNDgsIDcsIDQsIDEsIAotICAgIDE0NCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIDU5LCA3MiwgMjIsIDIzMSwgMjM3LCA3LCA0LCAxLCAxNDQsIDIsIAotICAgIDU5LCA3MiwgMjIsIDIzMSwgMjM3LCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMjMxLCAyMzcsIDcsIDQsIDEsIDIxMSwgMTE4LCAKLSAgICAyLCAyMzEsIDIzNywgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDI0OSwgMTA4LCA3LCA0LCAxLCAyMzAsIDMxLCAyLCAyNDksIAotICAgIDEwOCwgNywgNCwgMSwgMjE3LCAxNTQsIDIsIDI0OSwgMTA4LCA3LCA0LCAxLCAyNDcsIDEyNywgMjM1LCAxNTAsIDcsIDQsIAotICAgIDEsIDI0OCwgMTUxLCAyNDcsIDIyOCwgNywgNCwgMSwgMjI0LCAzNCwgMjQ3LCAyMjgsIDcsIDYsIDEsIDExNiwgMiwgOTEsIAotICAgIDcsIDYsIDEsIDI1MSwgNzUsIDIsIDkxLCA3LCA0LCAxLCAyNTEsIDc1LCAyLCA5MSwgNywgNiwgMSwgMjMzLCAxNTUsIDIsIAotICAgIDEzMCwgNywgNiwgMSwgMjE3LCAxNTQsIDIsIDI0OCwgNywgOTEsIDcsIDQsIDEsIDIyMiwgOTQsIDIsIDIxNywgMjUxLCAKLSAgICAyMTcsIDc4LCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjE3LCAyNTEsIDIxNywgNzgsIDcsIDYsIDEsIDI0MiwgMTg3LCAyMTgsIAotICAgIDEzMSwgNywgNCwgMSwgMjQyLCAxODcsIDIxOCwgMTMxLCA3LCA2LCAxLCA1NywgMiwgOTEsIDcsIDYsIDEsIDEwNCwgMTMwLCAKLSAgICA3LCA2LCAxLCAyMTUsIDk0LCAyMTQsIDEwNSwgNywgNiwgMSwgMTYwLCAyLCA5MSwgNywgNCwgMSwgMTYwLCAyLCA5MSwgNywgCi0gICAgNiwgMSwgMjM1LCAxNTEsIDIsIDkxLCA3LCA0LCAxLCAyMzUsIDE1MSwgMiwgOTEsIDcsIDYsIDEsIDQsIDIyNCwgMTAwLCAyLCAKLSAgICAyNDEsIDU5LCAyMTcsIDc4LCA3LCA0LCAxLCAyMjQsIDEwMCwgMiwgMjQxLCA1OSwgMjE3LCA3OCwgNywgNiwgMSwgMjIzLCAKLSAgICAyMjcsIDIsIDkxLCA3LCA0LCAxLCAyMjMsIDIyNywgMiwgOTEsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCA5MSwgNywgNCwgMSwgCi0gICAgMjExLCAxMTgsIDIsIDkxLCA3LCA0LCAxLCAyMTUsIDk0LCA2MSwgNywgNCwgMSwgMjU0LCAxNTEsIDcsIDQsIDEsIDIxNSwgCi0gICAgOTQsIDI1NCwgMTUxLCA3LCA0LCAxLCA1NywgMiwgMTAzLCA3LCA0LCAxLCAyMDQsIDc4LCA3LCA0LCAxLCAyNTEsIDc1LCAyLCAKLSAgICAyNDksIDEwOCwgNywgNCwgMSwgMjQ5LCA2OSwgMiwgMjE3LCA3OCwgNywgNCwgMSwgMjQ5LCA2OSwgMiwgMTAzLCA3LCA0LCAKLSAgICAxLCAyMjMsIDUyLCA3NiwgNywgNCwgMSwgMjIxLCAxOTcsIDcsIDQsIDEsIDIyMSwgMTk4LCAyLCAxMDMsIDcsIDQsIDEsIAotICAgIDIwNCwgNzYsIDcsIDQsIDEsIDIyMywgNTIsIDIwNCwgNzYsIDcsIDQsIDEsIDIyMywgNTIsIDIwNCwgMTYwLCAyLCAxMDMsIAotICAgIDcsIDQsIDEsIDI1MCwgOCwgMjIzLCA1MiwgMjA0LCA3NiwgNywgNCwgMSwgMjQ3LCAxMjcsIDIzNSwgMTUxLCAyLCA5MSwgNywgCi0gICAgNCwgMSwgMjQzLCAyMTAsIDIsIDEwMywgNywgNCwgMSwgMTE5LCAyNDMsIDIwOSwgNywgMSwgNCwgNiwgMjQzLCAyMDksIDcsIAotICAgIDQsIDEsIDI0MywgMTE0LCA3LCA0LCAxLCAyMjMsIDE1NCwgMjQwLCAyNTUsIDcsIDQsIDEsIDIxNSwgOTQsIDI0MiwgNjcsIAotICAgIDcsIDQsIDEsIDI0MiwgNjgsIDIsIDEwMywgNywgNCwgMSwgMjQxLCAyMTUsIDIsIDEwMywgNywgNCwgMSwgMjQwLCAxNjEsIAotICAgIDIsIDkxLCA3LCA0LCAxLCAyMzUsIDE5MiwgNywgMSwgNCwgNiwgNzQsIDcsIDQsIDEsIDIzMywgMTU1LCAyLCAyMzAsIDIyOSwgCi0gICAgMTg0LCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgMjUyLCA0OSwgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDIyMywgNTgsIDEwMywgCi0gICAgNywgNCwgMSwgMjMzLCA3LCA3LCA0LCAxLCAyMTUsIDk0LCAxOTQsIDcsIDQsIDEsIDIxNSwgOTQsIDIzMiwgNTUsIDIsIAotICAgIDIwMCwgMjMzLCA0MiwgNywgNCwgMSwgMjMyLCA1NSwgMiwgMTAzLCA3LCA0LCAxLCAyMzAsIDMxLCAyLCA0MywgMTAzLCA3LCAKLSAgICA0LCAxLCAyMzAsIDMxLCAyLCAyMjMsIDU4LCAxMDMsIDcsIDEsIDQsIDYsIDIzMCwgMzAsIDcsIDQsIDEsIDI1MiwgMTQyLCAKLSAgICA3OCwgNywgMSwgNCwgNiwgMjI2LCAyMzgsIDcsIDQsIDEsIDI1MCwgOCwgMjI2LCAyMDUsIDcsIDQsIDEsIDIyNSwgMTM2LCAKLSAgICA3LCA0LCAxLCAyMTUsIDk0LCAxNTMsIDcsIDQsIDEsIDIxNSwgOTQsIDIyMywgMjI3LCAyLCAyMDAsIDIzMywgNDIsIDcsIDQsIAotICAgIDEsIDIxNSwgOTQsIDIyMywgMjI3LCAyLCAxMDMsIDcsIDQsIDEsIDIyMywgMjI3LCAyLCAyMDAsIDIzMywgNDIsIDcsIDQsIAotICAgIDEsIDIyMywgMjI3LCAyLCAyMTcsIDc4LCA3LCA0LCAxLCAyMjMsIDIyNywgMiwgMjQ0LCA5NSwgNywgNCwgMSwgMjIzLCA1MiwgCi0gICAgMjIzLCAyMjcsIDIsIDI0NCwgOTUsIDcsIDEsIDQsIDYsIDE1MywgNywgMSwgNCwgNiwgMjM1LCAyMDAsIDE1MywgNywgNCwgCi0gICAgMSwgMjIyLCA5NCwgMiwgMTAzLCA3LCA0LCAxLCAyNDUsIDgzLCA3LCA0LCAxLCAyNDcsIDEyNywgMjM1LCAxNTEsIDIsIAotICAgIDIxOCwgMTA1LCAyMiwgMTAzLCA3LCA0LCAxLCAyMTgsIDIzMywgMjIzLCA1MiwgMjQ1LCA4MywgNywgNCwgMSwgMjQ1LCA4NCwgCi0gICAgMiwgMjQ5LCAxMDgsIDcsIDQsIDEsIDIxNSwgOTQsIDIxNywgMTUzLCA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgMjIzLCA1OCwgCi0gICAgMTAzLCA3LCA0LCAxLCAxMDQsIDEzMCwgNywgNCwgMSwgMjE0LCAxNTcsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAxMDMsIDcsIAotICAgIDQsIDEsIDIxNSwgOTQsIDIxNCwgMTA1LCA3LCA0LCAxLCAyMTUsIDk0LCAyMTIsIDk4LCA3LCA0LCAxLCAyMTUsIDk0LCAKLSAgICAyMTEsIDExNywgNywgMSwgNCwgNiwgMjExLCAxMTcsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyMjMsIDU4LCAxMDMsIDcsIDQsIAotICAgIDEsIDIxMCwgMTYwLCAyLCAyNDksIDEwOCwgNywgNCwgMSwgMjQ1LCAxNiwgNywgNCwgMSwgMjQ1LCAxNywgMiwgMjQ5LCAKLSAgICAxMDgsIDcsIDEsIDI0MiwgMTg3LCAyMTgsIDEzMSwgNywgMSwgMjI1LCAxNDIsIDIxMywgMTM1LCAyNDQsIDEsIDcsIDEsIAotICAgIDIzNSwgMjAwLCAyNDIsIDE4NywgMjE4LCAxMzEsIDcsIDEsIDIxOCwgMTEyLCAyNTEsIDc0LCA3LCAxLCAyNTEsIDI1NCwgCi0gICAgMjUwLCAxOSwgNywgMSwgNCwgNiwgMjUzLCAxNjYsIDcsIDQsIDEsIDI1MCwgOCwgMjA0LCA3NiwgNywgMSwgNCwgNiwgMjQzLCAKLSAgICAyMTAsIDIsIDEwMywgNywgMSwgNCwgNiwgMjQyLCA2NywgNywgNCwgMSwgMjM1LCAxNTEsIDIsIDI0OSwgMTM1LCA3LCA0LCAKLSAgICAxLCAyMTUsIDk0LCAyMzUsIDI5LCA3LCAxLCA0LCA2LCAxNTYsIDcsIDQsIDEsIDIyNCwgMTAwLCAyLCAxMDMsIDcsIDEsIAotICAgIDI0MiwgMTg3LCAyMTgsIDEzMiwgMiwgOTEsIDcsIDEsIDIyMywgNTIsIDI0MiwgMTg3LCAyMTgsIDEzMiwgMiwgOTEsIDcsIAotICAgIDQsIDEsIDI0NiwgNDgsIDI0NywgMjI4LCA3LCA0LCAxLCAyNDgsIDM0LCAyNDcsIDIyOCwgNywgNCwgMSwgMjQ2LCA0OCwgCi0gICAgMjQ3LCAyMjksIDIsIDI0OSwgMTA4LCA3LCA0LCAxLCAyMTUsIDE4NiwgMjQ3LCAyMjgsIDcsIDQsIDEsIDIxNiwgMjM2LCAKLSAgICAyNDcsIDIyOCwgNywgNCwgMSwgMjE3LCAzMCwgMjQ3LCAyMjksIDIsIDI0OSwgMTA4LCA3LCA0LCAxLCAyNDQsIDE0MiwgCi0gICAgMjQ3LCAyMjgsIDcsIDQsIDEsIDIzMiwgMTA1LCAyNDcsIDIyOCwgNywgNCwgMSwgMjMyLCA1NiwgMjQ3LCAyMjgsIDcsIDEsIAotICAgIDI1MSwgMjU0LCAyMjUsIDE4NCwgNywgMSwgMjUyLCA2LCAyMjUsIDE4NCwgNywgNCwgMSwgMjE1LCA5NCwgMjQyLCA2OCwgMiwgCi0gICAgMjQ0LCA5NSwgNywgNCwgMSwgMjE1LCA5NCwgMjQyLCA2OCwgMiwgMjQ0LCA5NiwgMjIsIDIxNywgNzgsIDU4LCAxLCA0LCAKLSAgICAyNDIsIDY3LCA1OCwgMSwgNCwgMjQyLCA2OCwgMiwgMTAzLCA1OCwgMSwgNCwgMjM1LCAxNTAsIDU4LCAxLCA0LCAxNTMsIAotICAgIDU4LCAxLCA0LCAyMTUsIDk0LCAxNTMsIDU4LCAxLCA0LCAyMTUsIDk0LCAyMjMsIDIyNywgMiwgMTAzLCA1OCwgMSwgNCwgNiwgCi0gICAgMjM1LCAyMDAsIDE1MywgNTgsIDEsIDQsIDIxMiwgOTgsIDU4LCAxLCA0LCAyMTEsIDExNywgNTgsIDEsIDIyNCwgMTkzLCAKLSAgICA1OCwgMSwgNTIsIDIyNCwgMTkzLCA1OCwgMSwgMjE1LCA5NCwgMjQ5LCAyMjcsIDU4LCAxLCAyNTQsIDY1LCA1OCwgMSwgCi0gICAgMjIzLCA1MiwgMjQ5LCAyMjcsIDU4LCAxLCA0NCwgMTYzLCAyMjIsIDIzNiwgNTgsIDEsIDQzLCAxNjMsIDIyMiwgMjM2LCAKLSAgICA1OCwgMSwgMjQyLCAxODcsIDIxOCwgMTMxLCA1OCwgMSwgMjIzLCA1MiwgMjQyLCAxODcsIDIxOCwgMTMxLCA1OCwgMSwgNDMsIAotICAgIDI1NCwgMSwgNTgsIDEsIDQ0LCAyNTQsIDEsIDU4LCAxLCAxMjAsIDI1NCwgMSwgNTgsIDEsIDEyNCwgMjU0LCAxLCA1OCwgMSwgCi0gICAgMjUwLCAzOSwgMjU1LCAyMywgMjUwLCAyNDIsIDU4LCAxLCA2NywgMjMyLCAyMTksIDU4LCAxLCAyMzEsIDIzNywgNTgsIDEsIAotICAgIDI1NSwgMTIsIDI1NSwgMjMsIDU4LCAxLCAyNDIsIDE0NCwgMjU1LCAyMywgNTgsIDEsIDEyMSwgNjcsIDIzMiwgMjE5LCA1OCwgCi0gICAgMSwgMTIxLCAyMzEsIDIzNywgNTgsIDEsIDEyMSwgMjQyLCAxNDQsIDI1NSwgMjMsIDU4LCAxLCAxMjEsIDI1NSwgMTIsIAotICAgIDI1NSwgMjMsIDU4LCAxLCAyMTUsIDIyMywgMjQ5LCAyMzQsIDU4LCAxLCAxNjMsIDIxNSwgMjIzLCAyNDksIDIzNCwgNTgsIAotICAgIDEsIDI1MCwgMTgxLCA0NCwgMTYzLCAyMjIsIDIzNiwgNTgsIDEsIDI1MCwgMTgxLCA0MywgMTYzLCAyMjIsIDIzNiwgNTgsIAotICAgIDEsIDEyMCwgMjE3LCA4OCwgNTgsIDEsIDEyNCwgMjE3LCA4OCwgNTgsIDEsIDk2LCA1MCwgNTgsIDEsIDIzMCwgMTg3LCA1MCwgCi0gICAgMjUxLCAxNTQsIDU5LCA0OCwgMjIyLCAyMzcsIDQ4LCAyMjYsIDIyOCwgNCwgMTg0LCA1MiwgMjU1LCAxMiwgMjU1LCAyMywgCi0gICAgNTgsIDEsIDIyMywgMzksIDEwMywgNTgsIDEsIDI0OSwgMTM5LCAyNTUsIDIzLCA1OCwgMSwgNCwgMjQzLCAxMTQsIDU4LCAxLCAKLSAgICA0LCAxNTYsIDU4LCAxLCA0LCAyMjIsIDkzLCA1OCwgMSwgNCwgMjExLCAxNzgsIDU4LCAxLCA0LCAyMjMsIDUyLCAyNDIsIAotICAgIDE4NywgMjE4LCAxMzEsIDU4LCAxLCAyNDUsIDI4LCAxMzgsIDEzMCwgNTgsIDEsIDEyNSwgMTM4LCAxMzAsIDU4LCAxLCAKLSAgICAyMzAsIDIzMCwgMTM4LCAxMzAsIDU4LCAxLCAxMjEsIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAyNywgMTM4LCAxMzAsIDU4LCAKLSAgICAxLCAyMTAsIDI1NCwgMjQ4LCA1MiwgMTM4LCA3OSwgNTgsIDEsIDIxMSwgNzAsIDI0OCwgNTIsIDEzOCwgNzksIDU4LCAxLCAKLSAgICAyMTMsIDEzMywgNTgsIDEsIDIxNCwgMTg2LCA1OCwgMSwgNTIsIDI1NCwgNjUsIDU4LCAxLCAxMjEsIDEyNCwgMjU0LCAxLCAKLSAgICA1OCwgMSwgMTIxLCAxMjAsIDI1NCwgMSwgNTgsIDEsIDEyMSwgNDMsIDI1NCwgMSwgNTgsIDEsIDEyMSwgNDQsIDI1NCwgMSwgCi0gICAgNTgsIDEsIDEyMSwgMjIyLCAyMzYsIDU4LCAxLCAyMzAsIDIyOSwgMjQyLCAxNDQsIDI1NSwgMjMsIDU4LCAxLCAyMzAsIAotICAgIDIyOSwgNTIsIDI0MiwgMTQ0LCAyNTUsIDIzLCA1OCwgMSwgMjMwLCAyMjksIDUyLCAyNTUsIDEyLCAyNTUsIDIzLCA1OCwgMSwgCi0gICAgMTIxLCAxODQsIDU4LCAxLCAyMjMsIDE2MCwgMjQ5LCAyMzQsIDU4LCAxLCAyNTIsIDY2LCAxMjUsIDIxNiwgMzEsIDU4LCAxLCAKLSAgICAyNDUsIDE1MSwgMTI1LCAyMTYsIDMxLCA1OCwgMSwgMjUyLCA2NiwgMTIxLCAyMTYsIDMxLCA1OCwgMSwgMjQ1LCAxNTEsIAotICAgIDEyMSwgMjE2LCAzMSwgNTgsIDEsIDIyMCwgNTYsIDU4LCAxLCAyMDQsIDIyMCwgNTYsIDU4LCAxLCAxMjEsIDQzLCA3NSwgCi0gICAgMzgsIDI0MiwgMTQ0LCAyNTUsIDIzLCAzOCwgMjU1LCAxMiwgMjU1LCAyMywgMzgsIDI1MCwgMzksIDI1NSwgMjMsIDM4LCAKLSAgICAxODQsIDM4LCAyMzEsIDIzNywgMzgsIDIyNiwgMTIzLCAzOCwgMjUxLCAxNTQsIDM4LCA1OSwgNDgsIDM4LCAyNDgsIDksIAotICAgIDM4LCAyNDEsIDU5LCA0OCwgMzgsIDIyMiwgMjM3LCA0OCwgMzgsIDUyLCAyNTUsIDEyLCAyNTUsIDIzLCAzOCwgMjUwLCAKLSAgICAyNDIsIDM4LCA2NywgMjMyLCAyMjAsIDQ4LCAzOCwgNTIsIDY3LCAyMzIsIDIyMCwgNDgsIDM4LCA1MiwgMjQyLCAxNDQsIAotICAgIDI1NSwgMjMsIDM4LCAyNTEsIDcsIDM4LCAyMzUsIDIwMCwgMjUxLCAxNTQsIDM4LCAyMTUsIDk0LCAyNDksIDIyOCwgNDgsIAotICAgIDM4LCAyNDksIDIyOCwgNDgsIDM4LCAyMjMsIDUyLCAyNDksIDIyOCwgNDgsIDM4LCAyNDksIDIyOCwgNzIsIDIyMiwgMjU0LCAKLSAgICAzOCwgMjQyLCAxNDQsIDI1NSwgMjQsIDUxLCAzOCwgMjU1LCAxMiwgMjU1LCAyNCwgNTEsIDM4LCA0MywgMjE3LCA4OSwgNTEsIAotICAgIDM4LCA0NCwgMjE3LCA4OSwgNTEsIDM4LCA0MywgMjU0LCAxMTgsIDQ4LCAzOCwgMjQwLCAyNTUsIDM4LCA0MywgMTYzLCAKLSAgICAyMjIsIDIzNywgNTEsIDM4LCAxMjAsIDIxNywgODksIDUxLCAzOCwgMTI0LCAyMTcsIDg5LCA1MSwgMzgsIDk2LCA1LCA1MSwgCi0gICAgMzgsIDIzMCwgMTg3LCA1LCA1MSwgMzgsIDIyNiwgNjgsIDI0MSwgNTksIDUxLCAzOCwgMjIzLCA1OCwgMjQxLCA1OSwgNTEsIAotICAgIDM4LCA1OSwgNTEsIDM4LCAyNDgsIDEwLCA1MSwgMzgsIDIyMiwgMjM3LCA1MSwgMzgsIDI0OSwgMjI4LCA1MSwgMzgsIDI1MCwgCi0gICAgMTkxLCAzOCwgMjI2LCAyMjgsIDM4LCA2NywgMjMyLCAyMjAsIDUxLCAzOCwgMjUxLCAxNDgsIDUxLCAzOCwgMjM1LCAyMDAsIAotICAgIDUyLCAyNTQsIDMyLCA1MSwgMzgsIDI1MCwgMjQzLCA1MSwgMzgsIDI1MCwgMzksIDI1NSwgMjQsIDUxLCAzOCwgMjUxLCAKLSAgICAxNTUsIDUxLCAzOCwgMjM1LCAyMDAsIDI1MSwgMTU1LCA1MSwgMzgsIDIxNiwgOTAsIDUxLCAzOCwgMjMxLCAyMzgsIDUxLCAKLSAgICAzOCwgMTIxLCAyMzIsIDIxOSwgMzgsIDUyLCAxMjEsIDIzMiwgMjE5LCAzOCwgMjE2LCA5MCwgMjI2LCAxMjQsIDM4LCAyMTksIAotICAgIDI1MywgMjE4LCAxMDUsIDIyNiwgMTI0LCAzOCwgMjAwLCAyMTgsIDEwNSwgMjI2LCAxMjQsIDM4LCAyMTksIDI1MywgMjE5LCAKLSAgICA0OSwgMjI2LCAxMjQsIDM4LCAyMDAsIDIxOSwgNDksIDIyNiwgMTI0LCAzOCwgNDQsIDE2MywgMjIyLCAyMzcsIDUxLCAzOCwgCi0gICAgMjM1LCAyMDAsIDI1MSwgMTQ4LCA1MSwgMzgsIDQyLCA1MSwgMzgsIDIyMSwgMTgyLCA1MSwgMzgsIDIxMSwgMTc5LCA0OCwgCi0gICAgMzgsIDY3LCAxODQsIDM4LCA1MiwgMjI2LCAxMjMsIDM4LCAyNDIsIDE0NCwgMTM4LCA3OSwgMzgsIDI1NSwgMTIsIDEzOCwgCi0gICAgNzksIDM4LCAyNiwgMjI1LCAxNzgsIDM4LCAyNiwgMjM0LCA4LCAzOCwgMjYsIDI0OCwgNCwgMjE2LCAxOSwgMzgsIDI2LCAKLSAgICAyMTAsIDIxOSwgMzgsIDI1MSwgMTQ4LCA0OCwgMzgsIDI0NSwgMTA2LCA1LCA1MSwgMzgsIDUyLCA2NywgMjMyLCAyMjAsIAotICAgIDUxLCAzOCwgNDMsIDI1NCwgMTE4LCA1MSwgMzgsIDIyOCwgNTcsIDIxNiwgOTAsIDQ4LCAzOCwgMjQxLCA2NSwgNDgsIDM4LCAKLSAgICAyNTQsIDE1NiwgMTI4LCAyMTYsIDQzLCA0OCwgMzgsIDQzLCA0NCwgODAsIDUxLCAzOCwgMjE0LCAxNTMsIDgwLCA1MSwgMzgsIAotICAgIDI0MiwgMTQ5LCAyMzUsIDY5LCAzOCwgNDQsIDI1NCwgMiwgNDgsIDM4LCA0MywgMTYzLCAyMjIsIDIzNywgNDgsIDM4LCAKLSAgICAyNDQsIDEzOSwgMzgsIDIxMSwgMTc5LCA1MSwgMzgsIDQzLCAyNTQsIDIsIDUxLCAzOCwgNDQsIDI1NCwgMiwgNTEsIDM4LCAKLSAgICA0NCwgMjU0LCAyLCAyMiwgMTIwLCAyNTQsIDIsIDUxLCAzOCwgNDQsIDE2MywgMjIyLCAyMzcsIDQ4LCAzOCwgNTksIDcyLCAKLSAgICAyMjIsIDI1NCwgMzgsIDI1MywgMjI1LCA1MSwgMzgsIDUyLCAyMjIsIDIzNywgNTEsIDM4LCAyMTAsIDM1LCA0OCwgMzgsIAotICAgIDUyLCAyNTEsIDE1NSwgNTEsIDM4LCA1MiwgMjUxLCAxNTQsIDM4LCA1MiwgMjMxLCAyMzcsIDM4LCA1MiwgMjMxLCAyMzgsIAotICAgIDUxLCAzOCwgNTIsIDE4NCwgMzgsIDUyLCAyMzUsIDIwMCwgMjUxLCAxNTQsIDM4LCA1MiwgOTcsIDgwLCA1MSwgMzgsIDcsIAotICAgIDQsIDEsIDYxLCAzOCwgNywgNCwgMSwgNzYsIDM4LCA3LCA0LCAxLCA3NCwgMzgsIDcsIDQsIDEsIDc4LCAzOCwgNywgNCwgMSwgCi0gICAgNjksIDM4LCA3LCA0LCAxLCAyNTEsIDc0LCAzOCwgNywgNCwgMSwgMjQ5LCA2OCwgMzgsIDcsIDQsIDEsIDI0MiwgNjcsIDM4LCAKLSAgICA3LCA0LCAxLCAxOTQsIDM4LCA3LCA0LCAxLCAxNTMsIDM4LCA3LCA0LCAxLCAyMTcsIDE1MywgMzgsIDcsIDQsIDEsIDIxNCwgCi0gICAgMTA1LCAzOCwgNywgNCwgMSwgMjExLCAxNzgsIDI2LCA2LCAxLCAyNDEsIDIwMywgMjYsIDQsIDEsIDI0MSwgMjAzLCAyNiwgCi0gICAgNiwgMSwgMjU0LCAzMSwgMjIxLCAyNDgsIDI2LCA0LCAxLCAyNTQsIDMxLCAyMjEsIDI0OCwgMjYsIDIyNywgMjAyLCA1MCwgCi0gICAgMjYsIDIzMiwgMTE0LCAyMjcsIDIwMiwgNTAsIDI2LCA2LCAxLCAyMjYsIDU1LCAyNDcsIDIzNSwgMjYsIDQsIDEsIDIyNiwgCi0gICAgNTUsIDI0NywgMjM1LCAyNiwgMjEwLCAyMTksIDI2LCA0LCAyMjMsIDUyLCAyMzIsIDg4LCAyMTksIDE4MCwgODcsIDI2LCA0LCAKLSAgICAyNDYsIDEyNiwgMjMyLCA4OCwgMjE5LCAxODAsIDg3LCAyNiwgNCwgMjIzLCA1MiwgMjQ2LCAxMjYsIDIzMiwgODgsIDIxOSwgCi0gICAgMTgwLCA4NywgMjYsIDIyNCwgMTYsIDc5LCAyNiwgMjE2LCAxOSwgMjYsIDI0OCwgNCwgMjE2LCAxOSwgMjYsIDYsIDEsIAotICAgIDI1NCwgMTUyLCAyLCAyMTYsIDE5LCAyNiwgMjU0LCAxMDUsIDIxNywgMywgMjYsIDYsIDEsIDI0NSwgMTA5LCAyLCAyMTYsIAotICAgIDE5LCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjE2LCAxOSwgMjYsIDYsIDEsIDIzNSwgMTkzLCAyLCAyMTYsIDE5LCAyNiwgNiwgCi0gICAgMSwgMjI2LCAyMDQsIDIsIDIxNiwgMTksIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjE2LCAxOSwgMjYsIDYsIDEsIDIyNiwgCi0gICAgMjA2LCAyLCAyMTYsIDE5LCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDI0OCwgNCwgMjIsIDIxNiwgMTksIDI2LCA2LCAxLCAKLSAgICAyNTQsIDE1MSwgMjYsIDYsIDEsIDI1MiwgMzQsIDI2LCA2LCAxLCAyNDMsIDExNCwgMjYsIDYsIDEsIDI0OCwgNjIsIDI2LCAKLSAgICA2LCAxLCAyNDUsIDEwOCwgMjYsIDYsIDEsIDIxMCwgODUsIDI2LCA2LCAxLCAyNDUsIDcxLCAyNiwgNiwgMSwgMjE2LCAxODAsIAotICAgIDI2LCA2LCAxLCAyMzUsIDE5MiwgMjYsIDYsIDEsIDIzNCwgMjI4LCAyNiwgNiwgMSwgMjMzLCAxMDQsIDI2LCA2LCAxLCAKLSAgICAyMzAsIDEwNywgMjYsIDYsIDEsIDIyNywgMjQyLCAyNiwgNiwgMSwgMjExLCAxNTcsIDI2LCA2LCAxLCAyMjYsIDIwMywgMjYsIAotICAgIDYsIDEsIDIyNSwgMTExLCAyNiwgNiwgMSwgMjIzLCA0MCwgMjYsIDYsIDEsIDIxOSwgMTc5LCAyNiwgNiwgMSwgMjE3LCA0MiwgCi0gICAgMjYsIDYsIDEsIDIxNCwgMTU3LCAyNiwgNiwgMSwgMjI1LCAxMzYsIDI2LCA2LCAxLCAyNTAsIDExOCwgMjYsIDYsIDEsIAotICAgIDIyNCwgMTY0LCAyNiwgNiwgMSwgMjI2LCAyMDUsIDI2LCA2LCAxLCAyMzUsIDE5MywgMiwgMjQ4LCAzLCAyNiwgNiwgMSwgCi0gICAgMjE0LCAxNTgsIDIsIDI0OCwgMywgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMTYsIDE5LCAyNiwgNCwgMSwgMjQ1LCAxMDksIAotICAgIDIsIDIxNiwgMTksIDI2LCA0LCAxLCAyNDUsIDcyLCAyLCAyMTYsIDE5LCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDIxNiwgCi0gICAgMTksIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCA0LCAyMiwgMjE2LCAxOSwgMjYsIDQsIDEsIDI1NCwgMTUxLCAyNiwgCi0gICAgNCwgMSwgMjUyLCAzNCwgMjYsIDQsIDEsIDI0MywgMTE0LCAyNiwgNCwgMSwgMjQ4LCA2MiwgMjYsIDQsIDEsIDI0NSwgMTA4LCAKLSAgICAyNiwgNCwgMSwgMjEwLCA4NSwgMjYsIDQsIDEsIDI0NSwgNzEsIDI2LCA0LCAxLCAyMTYsIDE4MCwgMjYsIDQsIDEsIDIzNSwgCi0gICAgMTkyLCAyNiwgNCwgMSwgMjM0LCAyMjgsIDI2LCA0LCAxLCAyMzMsIDEwNCwgMjYsIDQsIDEsIDIzMCwgMTA3LCAyNiwgNCwgCi0gICAgMSwgMjI3LCAyNDIsIDI2LCA0LCAxLCAyMTEsIDE1NywgMjYsIDQsIDEsIDIyNiwgMjAzLCAyNiwgNCwgMSwgMjI1LCAxMTEsIAotICAgIDI2LCA0LCAxLCAyMjMsIDQwLCAyNiwgNCwgMSwgNDAsIDIxOSwgMTc5LCAyNiwgNCwgMSwgMjE5LCAxNzksIDI2LCA0LCAxLCAKLSAgICAyMTcsIDQyLCAyNiwgNCwgMSwgMjE0LCAxNTcsIDI2LCA0LCAxLCAyMjUsIDEzNiwgMjYsIDQsIDEsIDI1MCwgMTE4LCAyNiwgCi0gICAgNCwgMSwgMjI0LCAxNjQsIDI2LCA0LCAxLCAyMjYsIDIwNSwgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAyNDgsIDMsIDI2LCA0LCAKLSAgICAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAzLCAyNiwgNCwgMSwgMjI2LCAyMDQsIDIsIDIxNiwgMTksIDI2LCA0LCAxLCAyMTQsIAotICAgIDE1OCwgMiwgMjE2LCAxOSwgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyMTYsIDE5LCAyNiwgNiwgMjM0LCAyNTMsIDg3LCAyNiwgCi0gICAgMjUyLCAzNSwgODcsIDI2LCAyMTYsIDE4MSwgODcsIDI2LCAyMTQsIDE1OCwgMiwgMjQxLCA1OSwgODcsIDI2LCAyMTQsIAotICAgIDE1OCwgMiwgMjU1LCAxMiwgMjIsIDI0MSwgNTksIDg3LCAyNiwgMjE0LCAxNTgsIDIsIDI0OCwgMTAsIDIyLCAyNDEsIDU5LCAKLSAgICA4NywgMjYsIDIyNSwgMTM3LCA4NywgMjYsIDIyNSwgMTEyLCA4NywgMjYsIDIzNCwgMjUzLCA4NywgMjYsIDEsIDI1NCwgMzEsIAotICAgIDIzNCwgMTIsIDI2LCA0LCAxLCAyNTQsIDMxLCAyMzQsIDEyLCAyNiwgMSwgMjE4LCAxMzksIDI2LCA0LCAxLCAyMTgsIDEzOSwgCi0gICAgMjYsIDEsIDI0NywgMjM1LCAyNiwgNCwgMSwgMjQ3LCAyMzUsIDI2LCAxLCAyMzQsIDEyLCAyNiwgNCwgMSwgMjM0LCAxMiwgCi0gICAgMjYsIDEsIDIyMSwgMjQ4LCAyNiwgNCwgMSwgMjIxLCAyNDgsIDgxLCA2LCAxLCAyMjAsIDU3LCA4MSwgNCwgMSwgMjIwLCAKLSAgICA1NywgODEsIDYsIDEsIDI0NCwgMTQ4LCA4MSwgNCwgMSwgMjQ0LCAxNDgsIDgxLCA2LCAxLCAyMzQsIDEyMywgODEsIDQsIDEsIAotICAgIDIzNCwgMTIzLCA4MSwgNiwgMSwgMjQxLCA1MiwgODEsIDQsIDEsIDI0MSwgNTIsIDgxLCA2LCAxLCAyNDMsIDEwOSwgODEsIAotICAgIDQsIDEsIDI0MywgMTA5LCA4MSwgNiwgMSwgMjIwLCAyNCwgODEsIDQsIDEsIDIyMCwgMjQsIDgxLCA2LCAxLCAyNDgsIDc3LCAKLSAgICA4MSwgNCwgMSwgMjQ4LCA3NywgMjYsIDIzNCwgMjI5LCA4NywgMjYsIDIyMywgNDEsIDg3LCAyNiwgMjMyLCA4OCwgMjE5LCAKLSAgICAxODAsIDg3LCAyNiwgMSwgMjEwLCAyMjQsIDI2LCA2LCAyMTYsIDE4MSwgODcsIDI2LCAyMzIsIDg4LCAyNDUsIDEwOSwgODcsIAotICAgIDI2LCAyMjMsIDUyLCAyMzIsIDg4LCAyNDUsIDEwOSwgODcsIDI2LCA2LCAxLCAyMjAsIDksIDI2LCA0LCAxLCAyMjAsIDksIAotICAgIDI2LCA2LCAyMzIsIDg4LCAyMTksIDE4MCwgODcsIDI2LCA2LCAxLCAyMjEsIDI0NSwgMjYsIDQsIDEsIDIyMSwgMjQ1LCAyNiwgCi0gICAgMjIzLCA0MSwgMiwgMjE4LCAxMDUsIDg3LCAyNiwgNiwgMjIzLCA1MiwgMjMyLCA4OCwgMjE5LCAxODAsIDg3LCAyNiwgNiwgCi0gICAgMjQ2LCAxMjYsIDIzMiwgODgsIDIxOSwgMTgwLCA4NywgMjYsIDYsIDIyMywgNTIsIDI0NiwgMTI2LCAyMzIsIDg4LCAyMTksIAotICAgIDE4MCwgODcsIDMzLCA2LCAxLCAyMzYsIDY4LCAyLCAyNDIsIDE0MywgMzMsIDYsIDEsIDIzNSwgMTk2LCAzMywgNiwgMSwgCi0gICAgMjQ3LCAxNzAsIDMzLCA2LCAxLCAyNDIsIDE5NCwgMzMsIDYsIDEsIDIxNCwgMjAyLCAyMzYsIDY3LCAzMywgNiwgMSwgMjQ2LCAKLSAgICA0NCwgMzMsIDYsIDEsIDI1MSwgODQsIDc0LCAzMywgNiwgMSwgMjExLCA4LCAzMywgNiwgMSwgMjM1LCAxMzIsIDMzLCA2LCAKLSAgICAxLCAyMzIsIDE5MywgMzMsIDYsIDEsIDIyOCwgMTgzLCAzMywgNiwgMSwgMjE1LCAxNzUsIDMzLCA2LCAxLCAyMzQsIDU0LCAKLSAgICAzMywgNiwgMSwgMjQwLCAxNjEsIDIsIDI0MiwgMTQzLCAzMywgNiwgMSwgMjE5LCAyNTMsIDY5LCAzMywgNiwgMSwgMjQ2LCAKLSAgICA0MCwgMzMsIDYsIDEsIDYxLCAzMywgNiwgMSwgMjUyLCA4MywgMzMsIDYsIDEsIDIxMywgMjU1LCAzMywgNiwgMSwgMjQyLCAKLSAgICAyNDMsIDMzLCA2LCAxLCAyNDgsIDk4LCAzMywgNiwgMSwgMjM2LCA2NywgMzMsIDYsIDEsIDIxMCwgNzQsIDMzLCA2LCAxLCAKLSAgICAyMTAsIDk0LCAzMywgNiwgMSwgNzQsIDMzLCA2LCAxLCAyMTksIDI1MywgNzQsIDMzLCA2LCAxLCAxNzYsIDMzLCA2LCAxLCAKLSAgICAyNDUsIDE4MiwgMzMsIDYsIDEsIDI0NSwgMTY3LCAzMywgNiwgMSwgMjQ1LCAxNTgsIDMzLCA2LCAxLCA3OCwgMzMsIDYsIDEsIAotICAgIDIyNSwgMjI0LCAzMywgNiwgMSwgMjQ1LCAxMDAsIDMzLCA2LCAxLCAyNDUsIDkwLCAzMywgNiwgMSwgMjE3LCAyMywgMzMsIAotICAgIDYsIDEsIDY5LCAzMywgNiwgMSwgMjQ1LCAyMTAsIDMzLCA2LCAxLCAxNjIsIDMzLCA2LCAxLCAyMTUsIDE3OSwgMzMsIDYsIAotICAgIDEsIDI1MCwgMTM5LCAzMywgNiwgMSwgMjIwLCAxMDQsIDMzLCA2LCAxLCAyMjAsIDY3LCAzMywgNiwgMSwgMjQyLCAxMCwgCi0gICAgNTAsIDMzLCA2LCAxLCAyMTEsIDI3LCAzMywgNiwgMSwgMjE5LCA1NCwgNTAsIDMzLCA2LCAxLCA3NiwgMzMsIDYsIDEsIAotICAgIDIxMCwgMjEyLCAzMywgNiwgMSwgMTkyLCAzMywgNCwgMSwgNjEsIDMzLCA0LCAxLCAyNTIsIDgzLCAzMywgNCwgMSwgMjEzLCAKLSAgICAyNTUsIDMzLCA0LCAxLCAyNDIsIDI0MywgMzMsIDQsIDEsIDI0OCwgOTgsIDMzLCA0LCAxLCAyMzYsIDY3LCAzMywgNCwgMSwgCi0gICAgMjEwLCA3NCwgMzMsIDQsIDEsIDIxMCwgOTQsIDMzLCA0LCAxLCA3NCwgMzMsIDQsIDEsIDIxOSwgMjUzLCA3NCwgMzMsIDQsIAotICAgIDEsIDE3NiwgMzMsIDQsIDEsIDI0NSwgMTgyLCAzMywgNCwgMSwgMjQ1LCAxNjcsIDMzLCA0LCAxLCAyNDUsIDE1OCwgMzMsIAotICAgIDQsIDEsIDc4LCAzMywgNCwgMSwgMjI1LCAyMjQsIDMzLCA0LCAxLCAyNDUsIDEwMCwgMzMsIDQsIDEsIDI0NSwgOTAsIDMzLCAKLSAgICA0LCAxLCAyMTcsIDIzLCAzMywgNCwgMSwgNjksIDMzLCA0LCAxLCAyNDUsIDIxMCwgMzMsIDQsIDEsIDE2MiwgMzMsIDQsIDEsIAotICAgIDIxNSwgMTc5LCAzMywgNCwgMSwgMjUwLCAxMzksIDMzLCA0LCAxLCAyMjAsIDEwNCwgMzMsIDQsIDEsIDIyMCwgNjcsIDMzLCAKLSAgICA0LCAxLCAyNDIsIDEwLCA1MCwgMzMsIDQsIDEsIDIxMSwgMjcsIDMzLCA0LCAxLCAyMTksIDU0LCA1MCwgMzMsIDQsIDEsIAotICAgIDc2LCAzMywgNCwgMSwgMjEwLCAyMTIsIDMzLCA0LCAxLCAxOTIsIDMzLCA0LCAxLCAyMzYsIDY4LCAyLCAyNDIsIDE0MywgCi0gICAgMzMsIDQsIDEsIDIzNSwgMTk2LCAzMywgNCwgMSwgMjQ3LCAxNzAsIDMzLCA0LCAxLCAyNDIsIDE5NCwgMzMsIDQsIDEsIAotICAgIDIxNCwgMjAyLCAyMzYsIDY3LCAzMywgNCwgMSwgMjQ2LCA0NCwgMzMsIDQsIDEsIDI1MSwgODQsIDc0LCAzMywgNCwgMSwgCi0gICAgMjExLCA4LCAzMywgNCwgMSwgMjM1LCAxMzIsIDMzLCA0LCAxLCAyMzIsIDE5MywgMzMsIDQsIDEsIDIyOCwgMTgzLCAzMywgCi0gICAgNCwgMSwgMjE1LCAxNzUsIDMzLCA0LCAxLCAyMzQsIDU0LCAzMywgNCwgMSwgMjQwLCAxNjEsIDIsIDI0MiwgMTQzLCAzMywgCi0gICAgNCwgMSwgMjE5LCAyNTMsIDY5LCAzMywgNCwgMSwgMjQ2LCA0MCwgMzMsIDYsIDEsIDIyNiwgMjA1LCAzMywgNCwgMSwgMjI2LCAKLSAgICAyMDUsIDMzLCA2LCAxLCAyMTEsIDU5LCAzMywgNCwgMSwgMjExLCA1OSwgMzMsIDYsIDEsIDIzNSwgMTkwLCA3NiwgMzMsIDQsIAotICAgIDEsIDIzNSwgMTkwLCA3NiwgMzMsIDYsIDEsIDIzMiwgMTk4LCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzMiwgMTk4LCAyMTAsIAotICAgIDE4MywgMzMsIDYsIDEsIDIzNSwgMTkwLCAyMzIsIDE5OCwgMjEwLCAxODMsIDMzLCA0LCAxLCAyMzUsIDE5MCwgMjMyLCAKLSAgICAxOTgsIDIxMCwgMTgzLCAzMywgNiwgMSwgMjUyLCAxLCAyMTAsIDE4MywgMzMsIDQsIDEsIDI1MiwgMSwgMjEwLCAxODMsIAotICAgIDMzLCA2LCAxLCAyMzUsIDE5MCwgMjUyLCAxLCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzNSwgMTkwLCAyNTIsIDEsIDIxMCwgCi0gICAgMTgzLCAzMywgNiwgMSwgMjMzLCAyMzksIDMzLCA0LCAxLCAyMzMsIDIzOSwgMzMsIDYsIDEsIDIyNCwgMTY0LCAzMywgNCwgCi0gICAgMSwgMjI0LCAxNjQsIDMzLCA2LCAxLCAyNDQsIDkwLCAzMywgNCwgMSwgMjQ0LCA5MCwgMzMsIDYsIDEsIDIzNSwgMTUyLCAKLSAgICAzMywgNCwgMSwgMjM1LCAxNTIsIDMzLCA2LCAxLCAyMzUsIDE1MywgMiwgNTIsIDI0MiwgMTQ0LCAyNTUsIDIzLCAzMywgNCwgCi0gICAgMSwgMjM1LCAxNTMsIDIsIDUyLCAyNDIsIDE0NCwgMjU1LCAyMywgMzMsIDYsIDEsIDIxNCwgMjA1LCAzMywgNCwgMSwgMjE0LCAKLSAgICAyMDUsIDMzLCA2LCAxLCAyMjIsIDE4NywgMjI2LCAyMDUsIDMzLCA0LCAxLCAyMjIsIDE4NywgMjI2LCAyMDUsIDMzLCA2LCAKLSAgICAxLCAyMjYsIDIwNiwgMiwgMjE2LCA2NiwgMzMsIDQsIDEsIDIyNiwgMjA2LCAyLCAyMTYsIDY2LCAzMywgNiwgMSwgMjI2LCAKLSAgICAxNDQsIDMzLCA0LCAxLCAyMjYsIDE0NCwgMzMsIDYsIDEsIDIzNCwgMTIsIDMzLCA0LCAxLCAyMzQsIDEyLCAzMywgMjE2LCAKLSAgICAxNDcsIDUwLCAzOCwgMzMsIDIxNiwgNjYsIDM4LCAzMywgMjI2LCA2OSwgMzgsIDMzLCAyNDgsIDE2MiwgMjI1LCAyMSwgMzgsIAotICAgIDMzLCAyMjQsIDE1OCwgMjI1LCAyMSwgMzgsIDMzLCAyMjUsIDYsIDM4LCAzMywgMjQwLCAyMTgsIDIxNiwgMTQ3LCA1MCwgCi0gICAgMzgsIDMzLCAyMzAsIDE5NiwgNTAsIDMzLCA2LCAxLCAyMTksIDI1MywgMjQwLCAxNjEsIDIsIDIxNywgNzgsIDMzLCA0LCAxLCAKLSAgICAyMTksIDI1MywgMjQwLCAxNjEsIDIsIDIxNywgNzgsIDMzLCA2LCAxLCAyMjAsIDE0OCwgNTAsIDMzLCA0LCAxLCAyMjAsIAotICAgIDE0OCwgNTAsIDMzLCA2LCAxLCAyNDUsIDEwMSwgMiwgMjE2LCAxMTUsIDMzLCA0LCAxLCAyNDUsIDEwMSwgMiwgMjE2LCAKLSAgICAxMTUsIDMzLCA2LCAxLCAyNDIsIDI0NCwgMiwgMjE0LCAxNTYsIDMzLCA0LCAxLCAyNDIsIDI0NCwgMiwgMjE0LCAxNTYsIAotICAgIDMzLCA2LCAxLCAyNDIsIDI0NCwgMiwgOTEsIDMzLCA0LCAxLCAyNDIsIDI0NCwgMiwgOTEsIDMzLCA2LCAxLCAyNDIsIDI0NCwgCi0gICAgMiwgMjMwLCAyMjksIDEwMywgMzMsIDQsIDEsIDI0MiwgMjQ0LCAyLCAyMzAsIDIyOSwgMTAzLCAzMywgNiwgMSwgMjEwLCAKLSAgICA3NSwgMiwgMjQ4LCA0NywgMzMsIDQsIDEsIDIxMCwgNzUsIDIsIDI0OCwgNDcsIDMzLCA2LCAxLCAyMTAsIDk1LCAyLCAyNDgsIAotICAgIDQ3LCAzMywgNCwgMSwgMjEwLCA5NSwgMiwgMjQ4LCA0NywgMzMsIDYsIDEsIDIzNSwgMTksIDIsIDI0OCwgNDcsIDMzLCA0LCAKLSAgICAxLCAyMzUsIDE5LCAyLCAyNDgsIDQ3LCAzMywgNiwgMSwgMjM1LCAxOSwgMiwgNjcsIDkxLCAzMywgNCwgMSwgMjM1LCAxOSwgCi0gICAgMiwgNjcsIDkxLCAzMywgNiwgMSwgMjM1LCAxOSwgMiwgOTEsIDMzLCA0LCAxLCAyMzUsIDE5LCAyLCA5MSwgMzMsIDYsIDEsIAotICAgIDI1MiwgMTMyLCAxNzYsIDMzLCA0LCAxLCAyNTIsIDEzMiwgMTc2LCAzMywgNiwgMSwgMjQ1LCAxNTksIDIsIDI0OCwgNDcsIAotICAgIDMzLCA0LCAxLCAyNDUsIDE1OSwgMiwgMjQ4LCA0NywgMzMsIDYsIDI3LCAyNDUsIDE1OSwgMjQyLCAyNDMsIDMzLCA0LCAyNywgCi0gICAgMjQ1LCAxNTksIDI0MiwgMjQzLCAzMywgNiwgMSwgMjI1LCAyMjUsIDIsIDIzMCwgMjI5LCAxMDMsIDMzLCA0LCAxLCAyMjUsIAotICAgIDIyNSwgMiwgMjMwLCAyMjksIDEwMywgMzMsIDYsIDEsIDI1NSwgMjksIDE2MiwgMzMsIDQsIDEsIDI1NSwgMjksIDE2MiwgCi0gICAgMzMsIDYsIDEsIDI0NSwgOTEsIDIsIDI0OCwgNDcsIDMzLCA0LCAxLCAyNDUsIDkxLCAyLCAyNDgsIDQ3LCAzMywgNiwgMSwgCi0gICAgMjE3LCAyNCwgMiwgMjQ4LCA0NywgMzMsIDQsIDEsIDIxNywgMjQsIDIsIDI0OCwgNDcsIDMzLCA2LCAxLCAyMTgsIDEyMywgCi0gICAgNjksIDMzLCA0LCAxLCAyMTgsIDEyMywgNjksIDMzLCA2LCAxLCAyMTgsIDEyMywgMTA0LCAyLCA5MSwgMzMsIDQsIDEsIAotICAgIDIxOCwgMTIzLCAxMDQsIDIsIDkxLCAzMywgNiwgMSwgMjQyLCA1NiwgMiwgMjQ4LCA0NywgMzMsIDQsIDEsIDI0MiwgNTYsIAotICAgIDIsIDI0OCwgNDcsIDMzLCA2LCAyNywgMjE3LCAyNCwgMjE1LCAxNzksIDMzLCA0LCAyNywgMjE3LCAyNCwgMjE1LCAxNzksIAotICAgIDMzLCA2LCAxLCAyNTAsIDE0MCwgMiwgMjQ4LCA0NywgMzMsIDQsIDEsIDI1MCwgMTQwLCAyLCAyNDgsIDQ3LCAzMywgNiwgMSwgCi0gICAgMjUwLCAxNDAsIDIsIDY3LCA5MSwgMzMsIDQsIDEsIDI1MCwgMTQwLCAyLCA2NywgOTEsIDMzLCA2LCAxLCAyMjAsIDM1LCAKLSAgICAzMywgNCwgMSwgMjIwLCAzNSwgMzMsIDYsIDEsIDI1NSwgMjksIDI1MCwgMTM5LCAzMywgNCwgMSwgMjU1LCAyOSwgMjUwLCAKLSAgICAxMzksIDMzLCA2LCAxLCAyNTUsIDI5LCAyNTAsIDE0MCwgMiwgMjQ4LCA0NywgMzMsIDQsIDEsIDI1NSwgMjksIDI1MCwgCi0gICAgMTQwLCAyLCAyNDgsIDQ3LCAzMywgMSwgMjI2LCA2MiwgMzMsIDYsIDEsIDIxMCwgNzUsIDIsIDI1MSwgMTU0LCAzMywgNCwgCi0gICAgMSwgMjEwLCA3NSwgMiwgMjUxLCAxNTQsIDMzLCA2LCAxLCAyMzUsIDE5LCAyLCAxMDMsIDMzLCA0LCAxLCAyMzUsIDE5LCAyLCAKLSAgICAxMDMsIDMzLCA2LCAxLCAyNDUsIDE4MywgMiwgMjE3LCA3OCwgMzMsIDQsIDEsIDI0NSwgMTgzLCAyLCAyMTcsIDc4LCAzMywgCi0gICAgNiwgMSwgMjQ1LCAxNTksIDIsIDEwMywgMzMsIDQsIDEsIDI0NSwgMTU5LCAyLCAxMDMsIDMzLCA2LCAxLCAyNDUsIDE1OSwgCi0gICAgMiwgMjE3LCA3OCwgMzMsIDQsIDEsIDI0NSwgMTU5LCAyLCAyMTcsIDc4LCAzMywgNiwgMSwgMjM0LCAxMzMsIDI1MCwgMTM5LCAKLSAgICAzMywgNCwgMSwgMjM0LCAxMzMsIDI1MCwgMTM5LCAzMywgNiwgMSwgMjQ1LCAxNjgsIDIsIDIxNywgNzgsIDMzLCA0LCAxLCAKLSAgICAyNDUsIDE2OCwgMiwgMjE3LCA3OCwgMzMsIDQsIDEsIDIyNiwgNjIsIDMzLCA2LCAxLCAxMTYsIDIsIDI1MSwgMTU0LCAzMywgCi0gICAgNCwgMSwgMTE2LCAyLCAyNTEsIDE1NCwgMzMsIDYsIDEsIDExNiwgMiwgMjQ4LCA5LCAzMywgNCwgMSwgMTE2LCAyLCAyNDgsIAotICAgIDksIDMzLCA2LCAyNywgMTE2LCAyMzYsIDY3LCAzMywgNCwgMjcsIDExNiwgMjM2LCA2NywgMzMsIDYsIDEsIDIzNiwgNjgsIAotICAgIDIsIDI1MSwgMTU0LCAzMywgNCwgMSwgMjM2LCA2OCwgMiwgMjUxLCAxNTQsIDMzLCA2LCAxLCAyMjEsIDE5NywgMzMsIDQsIAotICAgIDEsIDIyMSwgMTk3LCAzMywgNiwgMSwgMjIxLCAxOTgsIDIsIDI0OCwgOSwgMzMsIDQsIDEsIDIyMSwgMTk4LCAyLCAyNDgsIAotICAgIDksIDMzLCA2LCAxLCAyMTAsIDc1LCAyLCAyNDgsIDksIDMzLCA0LCAxLCAyMTAsIDc1LCAyLCAyNDgsIDksIDMzLCA2LCAxLCAKLSAgICAyMTAsIDk1LCAyLCAyNDgsIDksIDMzLCA0LCAxLCAyMTAsIDk1LCAyLCAyNDgsIDksIDMzLCA2LCAxLCAyNTUsIDI5LCAyNDYsIAotICAgIDQ0LCAzMywgNCwgMSwgMjU1LCAyOSwgMjQ2LCA0NCwgMzMsIDYsIDEsIDI0MCwgMTYxLCAyLCAyMzEsIDIzNywgMzMsIDQsIAotICAgIDEsIDI0MCwgMTYxLCAyLCAyMzEsIDIzNywgMzMsIDYsIDEsIDI0MCwgMTYxLCAyLCAyNDgsIDksIDMzLCA0LCAxLCAyNDAsIAotICAgIDE2MSwgMiwgMjQ4LCA5LCAzMywgNiwgMSwgMTQ0LCAyLCAyNDgsIDksIDMzLCA0LCAxLCAxNDQsIDIsIDI0OCwgOSwgMzMsIAotICAgIDYsIDEsIDI1MiwgMTQyLCA3OCwgMzMsIDQsIDEsIDI1MiwgMTQyLCA3OCwgMzMsIDYsIDEsIDI1MiwgMTQyLCAxNDQsIDIsIAotICAgIDI0OCwgOSwgMzMsIDQsIDEsIDI1MiwgMTQyLCAxNDQsIDIsIDI0OCwgOSwgMzMsIDYsIDEsIDE2MCwgMiwgMjQ4LCA5LCAzMywgCi0gICAgNCwgMSwgMTYwLCAyLCAyNDgsIDksIDMzLCA2LCAxLCAxMDQsIDIsIDIzMSwgMjM3LCAzMywgNCwgMSwgMTA0LCAyLCAyMzEsIAotICAgIDIzNywgMzMsIDYsIDEsIDEwNCwgMiwgMjQ4LCA5LCAzMywgNCwgMSwgMTA0LCAyLCAyNDgsIDksIDMzLCA2LCAxLCAxMDQsIAotICAgIDIsIDUyLCAxNDIsIDMzLCA0LCAxLCAxMDQsIDIsIDUyLCAxNDIsIDMzLCA2LCAxLCAyNTAsIDE0MCwgMiwgMjQ4LCA5LCAzMywgCi0gICAgNCwgMSwgMjUwLCAxNDAsIDIsIDI0OCwgOSwgMzMsIDYsIDEsIDI0MiwgMjQ0LCAyLCAyNDgsIDQ3LCAzMywgNCwgMSwgMjQyLCAKLSAgICAyNDQsIDIsIDI0OCwgNDcsIDMzLCA2LCAxLCAyMTEsIDI4LCAyLCAyNDgsIDksIDMzLCA0LCAxLCAyMTEsIDI4LCAyLCAyNDgsIAotICAgIDksIDMzLCA2LCAxLCAyNDIsIDI0NCwgMiwgMjE4LCAxMDUsIDIyLCAxMDMsIDMzLCA0LCAxLCAyNDIsIDI0NCwgMiwgMjE4LCAKLSAgICAxMDUsIDIyLCAxMDMsIDMzLCA2LCAxLCAyNDIsIDU2LCAyLCAxMDMsIDMzLCA0LCAxLCAyNDIsIDU2LCAyLCAxMDMsIDMzLCAKLSAgICA2LCAxLCAyNDIsIDU2LCAyLCA5MSwgMzMsIDQsIDEsIDI0MiwgNTYsIDIsIDkxLCAzMywgNiwgMSwgMjM0LCAyMCwgMjQ4LCAKLSAgICA5OCwgMzMsIDQsIDEsIDIzNCwgMjAsIDI0OCwgOTgsIDMzLCA2LCAxLCAyMzQsIDIwLCAyNDcsIDE3MCwgMzMsIDQsIDEsIAotICAgIDIzNCwgMjAsIDI0NywgMTcwLCAzMywgNiwgMSwgMjM0LCAyMCwgMjEwLCAyNywgMzMsIDQsIDEsIDIzNCwgMjAsIDIxMCwgCi0gICAgMjcsIDMzLCA2LCAxLCAyMzQsIDIwLCAyNDYsIDM4LCAzMywgNCwgMSwgMjM0LCAyMCwgMjQ2LCAzOCwgMzMsIDYsIDEsIAotICAgIDIzNCwgMjAsIDIzMiwgMTkzLCAzMywgNCwgMSwgMjM0LCAyMCwgMjMyLCAxOTMsIDMzLCA2LCAxLCAyMzQsIDIwLCAyMjgsIAotICAgIDE4MywgMzMsIDQsIDEsIDIzNCwgMjAsIDIyOCwgMTgzLCAzMywgNiwgMSwgMjM0LCAyMCwgMjE5LCAxMTEsIDMzLCA0LCAxLCAKLSAgICAyMzQsIDIwLCAyMTksIDExMSwgMzMsIDYsIDEsIDIzNCwgMjAsIDIxNiwgNjEsIDMzLCA0LCAxLCAyMzQsIDIwLCAyMTYsIAotICAgIDYxLCAzMywgNiwgMSwgMjIzLCA1MiwgMjEwLCA5NCwgMzMsIDQsIDEsIDIyMywgNTIsIDIxMCwgOTQsIDMzLCA2LCAxLCAKLSAgICAyNDUsIDE4MywgMiwgMTAzLCAzMywgNCwgMSwgMjQ1LCAxODMsIDIsIDEwMywgMzMsIDYsIDEsIDIzMywgNCwgMzMsIDQsIDEsIAotICAgIDIzMywgNCwgMzMsIDYsIDEsIDIyMywgNDIsIDMzLCA0LCAxLCAyMjMsIDQyLCAzMywgNiwgMSwgMjExLCA5MiwgMzMsIDQsIAotICAgIDEsIDIxMSwgOTIsIDMzLCA2LCAxLCAyMjQsIDkxLCAzMywgNCwgMSwgMjI0LCA5MSwgMzMsIDYsIDEsIDIxMiwgMjIsIDMzLCAKLSAgICA0LCAxLCAyMTIsIDIyLCAzMywgNiwgMSwgMjU0LCAxNzUsIDE3NiwgMzMsIDQsIDEsIDI1NCwgMTc1LCAxNzYsIDMzLCA2LCAKLSAgICAxLCAyNDUsIDE4MywgMiwgMjMwLCAyMjksIDEwMywgMzMsIDQsIDEsIDI0NSwgMTgzLCAyLCAyMzAsIDIyOSwgMTAzLCAzMywgCi0gICAgNiwgMSwgMjQ1LCAxNTksIDIsIDIzMCwgMjI5LCAxMDMsIDMzLCA0LCAxLCAyNDUsIDE1OSwgMiwgMjMwLCAyMjksIDEwMywgCi0gICAgMzMsIDYsIDEsIDIyNSwgMjI1LCAyLCAyNDgsIDQ3LCAzMywgNCwgMSwgMjI1LCAyMjUsIDIsIDI0OCwgNDcsIDMzLCA2LCAxLCAKLSAgICAyMjAsIDM2LCAyLCAyNDgsIDQ3LCAzMywgNCwgMSwgMjIwLCAzNiwgMiwgMjQ4LCA0NywgMTUwLCA2LCAxLCAyNTMsIDE3MiwgCi0gICAgMTUwLCA2LCAxLCAyNTIsIDQ3LCAxNTAsIDYsIDEsIDI0MiwgMjEwLCAxNTAsIDYsIDEsIDI0OCwgMjI5LCAxNTAsIDYsIDEsIAotICAgIDI0NSwgMjIxLCAxNTAsIDYsIDEsIDIxMCwgMTE2LCAxNTAsIDYsIDEsIDI0NSwgMjA1LCAxNTAsIDYsIDEsIDI0NSwgNzMsIAotICAgIDE1MCwgNiwgMSwgMTEyLCAxNTAsIDYsIDEsIDIxMCwgNzQsIDE1MCwgNiwgMSwgMjM1LCAyMzQsIDE1MCwgNiwgMSwgMjMyLCAKLSAgICAxOTYsIDE1MCwgNiwgMSwgMjExLCAxNjAsIDE1MCwgNiwgMSwgMjUxLCA0MSwgMTUwLCA2LCAxLCAyMzQsIDE3MSwgMTUwLCAKLSAgICA2LCAxLCAyNDEsIDc1LCAxNTAsIDYsIDEsIDIzNSwgMTQ3LCAxNTAsIDYsIDEsIDI0MiwgMjUzLCAxNTAsIDYsIDEsIDI1MCwgCi0gICAgMTM0LCAxNTAsIDYsIDEsIDIzMSwgNjMsIDE1MCwgNiwgMSwgMjExLCA4LCAxNTAsIDYsIDEsIDIyOCwgNDQsIDE1MCwgNiwgCi0gICAgMSwgMjIwLCAxMDQsIDE1MCwgNiwgMSwgMjEzLCAxMzgsIDE1MCwgNiwgMSwgMjUwLCAxNjUsIDE1MCwgNiwgMSwgMjI1LCAKLSAgICAyMDgsIDE1MCwgNiwgMSwgMjM1LCAxMTYsIDE1MCwgNiwgMSwgMjA1LCAxNTAsIDYsIDEsIDIyMSwgMTYzLCAxNTAsIDYsIDEsIAotICAgIDIxMywgMTc5LCAxNTAsIDYsIDEsIDIxNiwgNjMsIDE1MCwgNiwgMSwgMjIzLCA5OCwgMTUwLCA2LCAxLCAyNDksIDI0NiwgCi0gICAgMTUwLCA2LCAxLCAyMTAsIDI0OSwgMTUwLCA2LCAxLCAyMjUsIDQ5LCAxNTAsIDYsIDEsIDIzNCwgMTgyLCAxNTAsIDYsIDEsIAotICAgIDIyNiwgMjI2LCAxNTAsIDYsIDEsIDI0NCwgMTUwLCAxNTAsIDU4LCAxLCA0MywgMTYzLCAyMjIsIDIzNiwgMTUwLCAyNTQsIAotICAgIDY1LCAxNTAsIDI0NSwgMTYyLCA3OSwgMTUwLCAyNDUsIDM5LCA3OSwgMTUwLCAyNDksIDIyNywgMTUwLCAyMjQsIDE2LCA3OSwgCi0gICAgMTUwLCAyNTUsIDMwLCA3OSwgMTUwLCA0LCAxLCAyNTMsIDE3MiwgMTUwLCA0LCAxLCAyNTIsIDQ3LCAxNTAsIDQsIDEsIAotICAgIDI0MiwgMjEwLCAxNTAsIDQsIDEsIDI0OCwgMjI5LCAxNTAsIDQsIDEsIDI0NSwgMjIxLCAxNTAsIDQsIDEsIDIxMCwgMTE2LCAKLSAgICAxNTAsIDQsIDEsIDI0NSwgMjA1LCAxNTAsIDQsIDEsIDI0NSwgNzMsIDE1MCwgNCwgMSwgMTEyLCAxNTAsIDQsIDEsIDIxMCwgCi0gICAgNzQsIDE1MCwgNCwgMSwgMjM1LCAyMzQsIDE1MCwgNCwgMSwgMjMyLCAxOTYsIDE1MCwgNCwgMSwgMjExLCAxNjAsIDE1MCwgCi0gICAgNCwgMSwgMjUxLCA0MSwgMTUwLCA0LCAxLCAyMzQsIDE3MSwgMTUwLCA0LCAxLCAyNDEsIDc1LCAxNTAsIDQsIDEsIDIzNSwgCi0gICAgMTQ3LCAxNTAsIDQsIDEsIDI0MiwgMjUzLCAxNTAsIDQsIDEsIDI1MCwgMTM0LCAxNTAsIDQsIDEsIDIzMSwgNjMsIDE1MCwgCi0gICAgNCwgMSwgMjExLCA4LCAxNTAsIDQsIDEsIDIyOCwgNDQsIDE1MCwgNCwgMSwgMjIwLCAxMDQsIDE1MCwgNCwgMSwgMjEzLCAKLSAgICAxMzgsIDE1MCwgNCwgMSwgMjUwLCAxNjUsIDE1MCwgNCwgMSwgMjI1LCAyMDgsIDE1MCwgNCwgMSwgMjM1LCAxMTYsIDE1MCwgCi0gICAgNCwgMSwgMjA1LCAxNTAsIDQsIDEsIDIyMSwgMTYzLCAxNTAsIDQsIDEsIDIxMywgMTc5LCAxNTAsIDQsIDEsIDIxNiwgNjMsIAotICAgIDE1MCwgNCwgMSwgMjIzLCA5OCwgMTUwLCA0LCAxLCAyNDksIDI0NiwgMTUwLCA0LCAxLCAyMTAsIDI0OSwgMTUwLCA0LCAxLCAKLSAgICAyMjUsIDQ5LCAxNTAsIDQsIDEsIDIzNCwgMTgyLCAxNTAsIDQsIDEsIDIyNiwgMjI2LCAxNTAsIDQsIDEsIDI0NCwgMTUwLCAKLSAgICAxNTAsIDQsIDI3LCAyNDUsIDIyMiwgMjEwLCAyNDksIDE1MCwgMjQzLCAyMzYsIDIxOCwgMTMxLCAxNTAsIDI0MCwgMTc1LCAKLSAgICAxNTAsIDI0NiwgMTAzLCA1MCwgOTQsIDI1NSwgMjQsIDI0NSwgNjUsIDk0LCAyNTUsIDI0LCAyMjEsIDE2NCwgOTQsIDI1NSwgCi0gICAgMjQsIDIyMCwgOTAsIDk0LCAyNTUsIDI0LCAyMTAsIDEwNCwgMjI0LCA3NCwgOTQsIDI1NSwgMjQsIDIxMCwgMTA0LCAyNDMsIAotICAgIDEzMiwgOTQsIDI1NSwgMjQsIDIxNiwgNzYsIDk0LCAyNTUsIDI0LCAyMjMsIDUwLCA5NCwgMjU1LCAyNCwgMjEwLCAxMDMsIAotICAgIDk0LCAyNTUsIDI0LCAyMjUsIDI0OSwgOTQsIDI1NSwgMjQsIDIxMSwgMjAsIDk0LCAyNTUsIDI0LCAyMTYsIDIxNSwgOTQsIAotICAgIDI1NSwgMjQsIDI0MywgNDgsIDk0LCAyNTUsIDI0LCAyNDMsIDQ5LCAyMzAsIDc0LCA5NCwgMjU1LCAyNCwgMjQzLCA0NiwgCi0gICAgOTQsIDI1NSwgMjQsIDIyNCwgNzUsIDIyNiwgMjAsIDk0LCAyNTUsIDI0LCAyMTYsIDI1NCwgMjQzLCA2MywgOTQsIDI1NSwgCi0gICAgMjQsIDIyNSwgMjMwLCA5NCwgMjU1LCAyNCwgMjUzLCAyMDgsIDI0MiwgNDgsIDk0LCAyNTUsIDI0LCAyMzAsIDg0LCA5NCwgCi0gICAgMjU1LCAyNCwgMjMxLCAyMTMsIDk0LCAyNTUsIDI0LCAyMzEsIDU0LCA5NCwgMjU1LCAyNCwgMjMxLCA1NSwgMjM0LCAxODMsIAotICAgIDk0LCAyNTUsIDI0LCAyNDgsIDE3MSwgOTQsIDI1NSwgMjQsIDIyNCwgODYsIDk0LCAyNTUsIDI0LCAyMTYsIDI1NCwgMjI0LCAKLSAgICA3MCwgOTQsIDI1NSwgMjQsIDIxMSwgMzAsIDI1MiwgNDgsIDIxMCwgMjMwLCA5NCwgMjU1LCAyNCwgMjI2LCAyMTEsIDk0LCAKLSAgICAyNTUsIDI0LCAyMzYsIDI2LCA5NCwgMjU1LCAyNCwgMjQ4LCA3OCwgOTQsIDI1NSwgMjQsIDIxMCwgMzMsIDk0LCAxNjQsIAotICAgIDIzMSwgMTQ4LCAyNTAsIDQzLCA5NCwgMjI1LCAxNCwgMjIwLCAzOCwgOTQsIDIyNSwgMTQsIDI0MiwgMSwgMjIxLCAxNjQsIAotICAgIDk0LCAyMjUsIDE0LCAyNDIsIDEsIDIyNSwgMjQzLCA5NCwgMjI1LCAxNCwgMjQyLCAxLCAyMjQsIDc5LCA5NCwgMjI1LCAxNCwgCi0gICAgMjQxLCAxNjUsIDk0LCAyMjUsIDE0LCAyMTUsIDE3NywgOTQsIDIyNSwgMTQsIDIyMSwgMTY0LCA5NCwgMjI1LCAxNCwgMjI1LCAKLSAgICAyNDMsIDk0LCAyMjUsIDE0LCAyMjQsIDc5LCA5NCwgMjI1LCAxNCwgMjQxLCA2OCwgOTQsIDIyNSwgMTQsIDI0MSwgNjksIAotICAgIDI0MiwgMywgMzEsIDIxNCwgMywgOTQsIDIyNSwgMTQsIDIyNCwgMjAsIDk0LCAyMjUsIDE0LCAyNDgsIDIxNiwgMTc3LCAKLSAgICAyMzEsIDE3NiwgOTQsIDIyNSwgMTQsIDIzMSwgNDMsIDk0LCAyMjQsIDE0NCwgMjMxLCAxNzMsIDk0LCAyMjUsIDE0LCAyMjMsIAotICAgIDE3MiwgOTQsIDIyNCwgMTQ0LCAyMjUsIDI1MSwgOTQsIDIyNSwgMTQsIDIyMCwgMjMsIDI0NywgMTI4LCA5NCwgMjI1LCAxNCwgCi0gICAgMjE5LCAxNjEsIDI0NywgMTI4LCA5NCwgMjI0LCAxNDQsIDIxOSwgNTUsIDIyNSwgMjQ1LCA5NCwgMTY0LCAyMTQsIDE2MCwgCi0gICAgMjQ3LCAxMjgsIDk0LCAxNjQsIDIzMiwgMTE0LCAyNDcsIDEyOCwgOTQsIDIyNCwgMTQ0LCAyMjcsIDE5OSwgMjQyLCA0NywgCi0gICAgOTQsIDIyNSwgMTQsIDIyNCwgODAsIDIyNCwgNzQsIDk0LCAxLCAyNTQsIDE3OSwgOTQsIDEsIDI1MiwgMzYsIDk0LCAxLCAKLSAgICAyNDIsIDIwOCwgOTQsIDEsIDI0OCwgMTk3LCA5NCwgMSwgMjQxLCAyNDUsIDk0LCAxLCAyMTQsIDMsIDk0LCAxLCAyMTAsIAotICAgIDk3LCA5NCwgMSwgMjQxLCAyMDQsIDk0LCAxLCAyMTYsIDIzMSwgOTQsIDEsIDIxMCwgMjMzLCA5NCwgMSwgNDAsIDIzNSwgMCwgCi0gICAgOTQsIDEsIDIzNSwgMCwgOTQsIDEsIDIzMywgMTAwLCA5NCwgMSwgNDAsIDIzMSwgNzAsIDk0LCAxLCAyMzEsIDcwLCA5NCwgCi0gICAgMSwgNDAsIDIyNywgMTk4LCA5NCwgMSwgMjI3LCAxOTgsIDk0LCAxLCAyMjEsIDI1MSwgOTQsIDEsIDI1MywgMTcwLCA5NCwgCi0gICAgMSwgNDAsIDIyNSwgMjI0LCA5NCwgMSwgMjI1LCAyMjQsIDk0LCAxLCA0MCwgMjE1LCAxODAsIDk0LCAxLCAyMTUsIDE4MCwgCi0gICAgOTQsIDEsIDIyNCwgNDIsIDk0LCAxLCAyMjMsIDcwLCA5NCwgMSwgMjIwLCAyMiwgOTQsIDEsIDIxNywgMzksIDk0LCAyNywgCi0gICAgMjExLCA2LCA1MiwgMjE0LCAzLCA5NCwgMjcsIDIxMSwgNiwgMjE0LCA0LCAyMTAsIDIzMywgOTQsIDI3LCAyMTEsIDYsIDUyLCAKLSAgICAyMTAsIDIzMywgOTQsIDIyNCwgMTQ0LCAyNDMsIDQ4LCA5NCwgMjI0LCAxNDQsIDI0MywgNDYsIDksIDU0LCA1MCwgOSwgNSwgCi0gICAgMjIxLCAyNDQsIDksIDI0NCwgMzgsIDIzMSwgMTU5LCA5LCA1LCAyMjIsIDI1LCA5LCA1LCAyMjEsIDI0NywgMjU0LCA0NSwgCi0gICAgMjQ5LCAxMTcsIDIyMiwgMTk1LCAyNTQsIDQ1LCAyNDQsIDEyLCAyMjIsIDE5NSwgOSwgMjIzLCAxMzcsIDI1NCwgNDUsIAotICAgIDIyNSwgMTg2LCAyMzAsIDE5OCwgNTAsIDI1NCwgNDUsIDIyNSwgMTg2LCAyMTYsIDI0OSwgMjE2LCAxNDksIDUwLCAyNTQsIAotICAgIDIzMCwgNTAsIDksIDI0OSwgMjI3LCA5LCAyNDgsIDE1OCwgMjIwLCAxMzksIDksIDIyNSwgMTYsIDIxMywgMjQxLCA1MCwgOSwgCi0gICAgNSwgMjMwLCAxNzksIDksIDUsIDIyMiwgNSwgMjU0LCAxODEsIDIxMiwgNDUsIDksIDUsIDI1NCwgMTgxLCAyNTMsIDIyOSwgCi0gICAgOSwgNSwgMjIzLCAxNzAsIDI1NCwgMTgwLCA5LCA1LCAyMjMsIDE3OCwgMjU0LCAxNjEsIDI1NCwgMTEyLCA5LCA1LCAyMTcsIAotICAgIDcxLCA5LCA0LCAxMjUsIDIxNywgODEsIDksIDQsIDEyNSwgMjcsIDEwOSwgMiwgMjMzLCAxMDksIDIsIDIxMSwgNDMsIDksIAotICAgIDQsIDEyNSwgMjEwLCAxMDgsIDksIDQsIDI0NCwgMTczLCA5LCA0LCAyNDgsIDE5MiwgOSwgNCwgMjM0LCAyMTEsIDksIDIyMCwgCi0gICAgMTUyLCA5LCAxLCA3OSwgOSwgMjE1LCAyMTIsIDU5LCAyMjQsIDE0NCwgNzksIDksIDIyNCwgMTYsIDc5LCA5LCAxLCAyMzQsIAotICAgIDIxNSwgMjExLCA0MywgOSwgMSwgMjQyLCAyNiwgOSwgMSwgMTA5LCAyLCAyMzEsIDIzMywgNDgsIDksIDEsIDEwOSwgMiwgCi0gICAgMTgyLCA0OCwgOSwgMSwgMjEyLCAzMSwgMiwgMTgyLCA0OCwgOSwgMSwgMTA5LCAyLCAxODIsIDUxLCA5LCAxLCA3NywgMiwgCi0gICAgMTgyLCA0OCwgOSwgMSwgMjU0LCAxNzksIDksIDEsIDI1MiwgNjIsIDksIDEsIDIxNywgOSwgMjMxLCAxNjksIDksIDEsIAotICAgIDIxNywgOCwgOSwgMSwgMjE2LCAxOTMsIDksIDEsIDIzNSwgMTI5LCA5LCAxLCAyNDIsIDQ0LCA5LCAxLCAyMzQsIDEzNSwgOSwgCi0gICAgMSwgMjQ4LCAyMDMsIDksIDEsIDIxNiwgMjAzLCA5LCAxLCAyMjMsIDk4LCA5LCAxLCAyMTAsIDEwOCwgOSwgMSwgMjIxLCAKLSAgICAxNjgsIDksIDEsIDIyMCwgNjEsIDksIDEsIDIyMiwgMjgsIDksIDEsIDI0OCwgMjI0LCA5LCAxLCAyMTcsIDgxLCA5LCAxLCAKLSAgICAyMTAsIDExMSwgOSwgMSwgMjU0LCAyMDUsIDksIDEsIDI0MiwgMjUxLCA5LCAxLCAyMzQsIDE4MSwgMiwgMTEzLCAxNzAsIAotICAgIDQ4LCA5LCAxLCAyMzQsIDE4MSwgMiwgMTM0LCAxNzAsIDUxLCA5LCAxLCAyNDQsIDE3NiwgNzcsIDIsIDIzNSwgMjAwLCAKLSAgICAyMTQsIDEwNSwgOSwgMSwgMjQ0LCAxNzYsIDc3LCAyLCAxMTMsIDE3MCwgNDgsIDksIDEsIDI0NCwgMTc2LCA3NywgMiwgCi0gICAgMTM0LCAxNzAsIDQ4LCA5LCAyMTcsIDQ0LCA5LCAxLCAyNDQsIDE1MCwgOSwgMSwgMjI0LCA4NCwgOSwgMSwgMjM1LCAwLCA5LCAKLSAgICAxLCAyMzMsIDEwOCwgOSwgMSwgMjMxLCA4MywgOSwgMSwgMjI4LCA2NywgOSwgMSwgMjQxLCAyMjUsIDksIDEsIDIxMiwgMzAsIAotICAgIDksIDEsIDEwOSwgMjMxLCAxOTcsIDksIDEsIDIxMSwgNDMsIDksIDI0NCwgMTcxLCA5LCAyNDgsIDE5MCwgOSwgMjM0LCAKLSAgICAyMDksIDksIDI0NCwgMTczLCA5LCAyNDgsIDE5MiwgOSwgMjM0LCAyMTEsIDksIDIyMCwgOTUsIDksIDIxOCwgNDYsIDksIAotICAgIDIzMSwgMjMxLCA0OCwgOSwgMTgyLCA0OCwgOSwgMTgyLCA1MSwgOSwgMjE4LCA2NiwgMjU0LCAxNzksIDksIDIzNSwgMjAwLCAKLSAgICAyNDgsIDE5MiwgOSwgMTY0LCAyMjgsIDY4LCAyNDIsIDIyNSwgOSwgMjA5LCAyNTUsIDksIDI1LCA1LCA0LCAyMTQsIDEwNiwgCi0gICAgNDgsIDksIDI1LCA1LCAyMzUsIDIwMCwgNCwgMjE0LCAxMDYsIDQ4LCA5LCAyNSwgNSwgNTksIDUxLCA5LCAyMjMsIDUyLCAKLSAgICAyNDgsIDE5MiwgOSwgMjQ0LCAxNzQsIDIsIDExMywgMjQ3LCAxMjYsIDksIDIxMiwgMzIsIDE4MiwgNTEsIDI1NCwgNDUsIAotICAgIDIxLCAyMTAsIDg2LCAyNTQsIDQ1LCAyMSwgMTExLCAyNTQsIDQ1LCAyMSwgMTA1LCAyNTQsIDQ1LCAyMSwgMTU4LCAyNTQsIAotICAgIDQ1LCAyMSwgMTYxLCAyNTQsIDQ1LCAyMSwgMTkwLCAyNTQsIDQ1LCAyMSwgMTk1LCAyNTQsIDQ1LCAyMSwgMTk5LCAyNTQsIAotICAgIDQ1LCAyMSwgMTk2LCAyNTQsIDQ1LCAyMSwgMjAxLCA5LCAyMjUsIDE4NSwgNTAsIDksIDI0OCwgOTEsIDIyMCwgMTM5LCA5LCAKLSAgICAyMTYsIDE0NywgMjIwLCAxMzksIDksIDI0NCwgODksIDIyNSwgMTIsIDIxOCwgMTU4LCA5LCAxLCAyNDcsIDEyNywgMjUyLCAKLSAgICA2MiwgOSwgMSwgMjQ3LCAxMjcsIDIyNCwgODQsIDksIDEsIDIxOCwgMjQsIDI1NCwgMTc5LCA5LCAxLCAxMDksIDIxMiwgNDYsIAotICAgIDksIDEsIDEwOSwgMiwgMjEyLCAzMiwgMTgyLCA0OCwgOSwgMSwgMTA5LCAyLCAyMTIsIDMyLCAxODIsIDUxLCA5LCAxLCAKLSAgICAxMjUsIDI0MiwgMjYsIDksIDEsIDEyNSwgMTgyLCAyNTQsIDE3OSwgOSwgMSwgMTI1LCAxODIsIDIxMiwgMzAsIDksIDEsIAotICAgIDEwNCwgMiwgMTgyLCA0OCwgOSwgMSwgMTI1LCAxODIsIDIxMSwgNDMsIDksIDEsIDIxNSwgMTQ5LCA5LCAxLCAyMTUsIDE0NywgCi0gICAgOSwgMSwgMjUyLCA3MiwgOSwgMSwgMjE3LCA5LCAyLCAyMjIsIDIzNiwgOSwgMSwgMjE3LCA5LCAyLCAxMzQsIDE3MCwgNzIsIAotICAgIDI0NiwgMTExLCA5LCAxLCAyMjUsIDIwOCwgOSwgMSwgMjE3LCA2LCA5LCAxLCAyNTIsIDYwLCA5LCAxLCAxMjIsIDIsIDE4MiwgCi0gICAgNDgsIDksIDEsIDEyMiwgMiwgMTEzLCAxNzAsIDY3LCA0OCwgOSwgMSwgMjI3LCAxNTcsIDksIDEsIDI0NiwgNTEsIDksIDEsIAotICAgIDEyMiwgMiwgMTM0LCAxNzAsIDQ4LCA5LCAxLCAyMTcsIDI3LCA5LCAxLCAyMTcsIDI1LCA5LCAxLCAyNDgsIDEzOCwgOSwgMSwgCi0gICAgMjQ4LCAyMDQsIDIsIDIyMiwgMjM2LCA5LCAxLCAyNDgsIDIwNCwgMiwgNTksIDUxLCA5LCAxLCAyNDgsIDIwNCwgMiwgNTksIAotICAgIDI1MiwgNTEsIDIyLCA0LCAyMTcsIDgxLCA5LCAxLCAyNDgsIDIwOSwgOSwgMSwgMjQ4LCAxNDAsIDksIDEsIDI0NiwgNzgsIAotICAgIDksIDEsIDI0OCwgMjA0LCAyLCAxMzQsIDE3MCwgNzIsIDI0NiwgMTExLCA5LCAxLCAyNDgsIDIwNCwgMiwgMjQ0LCAxOSwgCi0gICAgMTcwLCA0OCwgOSwgMSwgMjIyLCAxNzMsIDksIDEsIDIyMywgOTksIDIsIDQsIDIxNCwgMTA1LCA5LCAxLCAyMjMsIDk5LCAyLCAKLSAgICAyMjIsIDIzNiwgOSwgMSwgMjIzLCA5OSwgMiwgNTksIDUxLCA5LCAxLCAyMjMsIDk5LCAyLCA0LCAyMTQsIDEwNiwgNTEsIDksIAotICAgIDEsIDIyMywgOTksIDIsIDU5LCAyNTIsIDUxLCAyMiwgNTksIDQ4LCA5LCAxLCAyMjMsIDk5LCAyLCAxMTMsIDE3MCwgNDgsIAotICAgIDksIDEsIDIzNSwgMTI2LCA5LCAxLCAyMjMsIDk5LCAyLCAyNDQsIDE5LCAxNzAsIDQ4LCA5LCAxLCAyMjEsIDE2OSwgMiwgCi0gICAgNTksIDI1MiwgNTEsIDIyLCA1OSwgNDgsIDksIDEsIDIyMSwgMTY5LCAyLCAxMzQsIDE3MCwgNTEsIDksIDEsIDIyMSwgMTY5LCAKLSAgICAyLCAxMzQsIDE3MCwgMjUyLCA1MSwgMjIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgMjIyLCAyOSwgMiwgMTEzLCAxNzAsIDUxLCAKLSAgICA5LCAxLCAyMjIsIDI5LCAyLCAxMzQsIDE3MCwgNDgsIDksIDEsIDIxNywgODIsIDIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgCi0gICAgMjU0LCAyMDYsIDIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgMjQ3LCAxMjcsIDI0NCwgMTUwLCA5LCAxLCAyNDQsIDE1MSwgMiwgCi0gICAgNTksIDIzMCwgMTE0LCA1MSwgOSwgMSwgMjQ0LCAxNTEsIDIsIDU5LCA1MSwgOSwgMSwgMjEzLCAyNDgsIDksIDEsIDI0NCwgCi0gICAgMTUxLCAyLCAxMzQsIDE3MCwgNTEsIDksIDEsIDIyNSwgMjA2LCA5LCAxLCAyMjQsIDg1LCAyLCA1OSwgNDgsIDksIDEsIAotICAgIDIyNCwgODUsIDIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgMjM0LCAxODAsIDksIDEsIDIxNywgMjUxLCAyMzUsIDAsIDksIDEsIAotICAgIDIzNSwgMSwgMiwgMjIyLCAyMzYsIDksIDEsIDIzNSwgMSwgMiwgNTksIDQ4LCA5LCAxLCAyMjksIDg0LCA5LCAxLCAyMzUsIAotICAgIDEsIDIsIDEzNCwgMTcwLCA1MSwgOSwgMSwgMjQzLCAxMjksIDksIDEsIDI0MywgMTMwLCAyLCAyMjIsIDIzNiwgOSwgMSwgCi0gICAgMjI5LCA3LCA5LCAxLCAyNDMsIDEzMCwgMiwgMTEzLCAxNzAsIDUxLCA5LCAxLCAyNDIsIDEwOCwgOSwgMSwgMjQzLCAxMzAsIAotICAgIDIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgMjMzLCAxMDksIDIsIDQsIDIxNCwgMTA1LCA5LCAxLCAyMzMsIDEwOSwgMiwgNTksIAotICAgIDQ4LCA5LCAxLCAyMzMsIDEwOSwgMiwgMTM0LCAxNzAsIDQ4LCA5LCAxLCAyMzMsIDEwOSwgMiwgMTM0LCAxNzAsIDUxLCA5LCAKLSAgICAxLCAyMjgsIDY4LCAyLCA1OSwgNTEsIDksIDEsIDIyOCwgNjgsIDI0MiwgMjI1LCA5LCAxLCAyMjIsIDIxNiwgOSwgMSwgCi0gICAgMjI4LCA2OCwgMiwgMjIyLCAyMzYsIDksIDEsIDIyOCwgNjgsIDIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgMjQxLCAyMjYsIAotICAgIDI0NywgMTQ5LCA5LCAxLCAyMTcsIDI4LCAyLCA1OSwgNDgsIDksIDEsIDI0MSwgMjI2LCAyLCA3NywgNDgsIDksIDEsIDI0MSwgCi0gICAgMjI2LCAyNDIsIDE3OCwgOSwgMSwgMjQxLCAyMjYsIDI0MiwgMTc5LCAyLCAxODIsIDQ4LCA5LCAxLCAyMTcsIDksIDIzMSwgCi0gICAgMTcwLCAyNDIsIDE3OCwgOSwgMSwgMjEyLCAzMSwgMiwgMjIyLCAyMzYsIDksIDEsIDIzNCwgNzksIDIyNiwgMjM4LCA5LCAxLCAKLSAgICAyMjYsIDIzOCwgOSwgMSwgNjksIDksIDEsIDIxMCwgMjEyLCA5LCAxLCAyMzQsIDc5LCAyMTAsIDIxMiwgOSwgMSwgMjEyLCAKLSAgICAzMSwgMiwgMTEzLCAxNzAsIDQ4LCA5LCAxLCAyMTMsIDI1NSwgOSwgMSwgMjQ0LCAxNzYsIDIxMSwgNDMsIDksIDEsIDc3LCAKLSAgICAyLCAyMTcsIDc4LCA5LCAxLCA3NywgMiwgNCwgMjE0LCAxMDUsIDksIDEsIDIxMiwgMzEsIDIsIDU5LCA0OCwgOSwgMSwgNzYsIAotICAgIDksIDEsIDc3LCAyLCAxMzQsIDE3MCwgNTEsIDksIDEsIDc3LCAyNTIsIDE0MCwgOSwgMSwgNzcsIDI1MiwgMTQxLCAyLCAKLSAgICAxODIsIDQ4LCA5LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDksIDEsIDI1NCwgMjUyLCA5LCA0LCAxMjUsIDI3LCAyMjIsIDI5LCAKLSAgICAyLCAyMzMsIDEwOSwgMiwgMTA5LCAyMzEsIDE5NywgOSwgNCwgMTI1LCAyNywgMjI0LCA4NSwgMiwgMjMzLCAxMDksIDIsIAotICAgIDEwOSwgMjMxLCAxOTcsIDksIDQsIDEyNSwgNjYsIDY1LCAxNywgOSwgNCwgMTI1LCAyMzMsIDEwOSwgMjU0LCAxNzksIDksIAotICAgIDQsIDEyNSwgMjM1LCAxMjksIDksIDQsIDEyNSwgMTM0LCAyNDcsIDEyNiwgOSwgNCwgMTI1LCAyMjEsIDE2OCwgOSwgMjQ1LCAKLSAgICAxNTEsIDY0LCAyNTMsIDE3NCwgOSwgMjE4LCAxNTQsIDY0LCAyMjIsIDE0MCwgMjQ1LCAxODMsIDI0MSwgMTYyLCA5LCA0LCAKLSAgICAxMjUsIDIyMiwgMTg1LCAyMTAsIDg2LCA5LCA0LCAxMjUsIDIxNCwgMTU5LCAyMjMsIDExOCwgMjEwLCA4NiwgOSwgNCwgCi0gICAgMTI1LCAyNDcsIDEyNywgMjQxLCAyNDMsIDY0LCAyMzQsIDEzNSwgOSwgNCwgMTI1LCA2NiwgNTMsIDE3LCA5LCA0LCAxMjEsIAotICAgIDIyMSwgMTY4LCA5LCA0LCAxMjUsIDIzMSwgMjMyLCA5LCA0LCAyMTIsIDMwLCA5LCA0LCAyMTEsIDQzLCA5LCA0LCAxMjUsIAotICAgIDIxMSwgNDMsIDksIDQsIDEyNSwgMjI4LCA2NywgOSwgMjI1LCA0NCwgNjQsIDIyMiwgMTUsIDksIDI0NSwgMTYwLCAyNTAsIAotICAgIDE4MywgMTIxLCAyMTgsIDEzMSwgOSwgMjQ1LCAxNjAsIDI1MCwgMTgzLCAxMjUsIDIxOCwgMTMxLCA5LCAyMjIsIDE4NSwgCi0gICAgMTI1LCAyMTgsIDEzMiwgMiwgMjQ0LCAxMTIsIDI1MCwgMTgyLCA5LCA0LCAxMjEsIDIzMSwgODMsIDksIDEsIDI0OCwgMjA0LCAKLSAgICAyLCAyMzUsIDIwMCwgMjE0LCAxMDUsIDksIDEsIDIyMywgOTksIDIsIDIzNSwgMjAwLCAyMTQsIDEwNSwgMjQ1LCAzMCwgCi0gICAgMjU0LCA0NSwgMjEsIDIxMCwgODYsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAxMTEsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAKLSAgICAxMDUsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAxNTgsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAxNjEsIDI0NSwgMzAsIDI1NCwgCi0gICAgNDUsIDIxLCAxOTAsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAxOTUsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAxOTksIDI0NSwgCi0gICAgMzAsIDI1NCwgNDUsIDIxLCAxOTYsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAyMDEsIDksIDEsIDIyMCwgNjIsIDIsIDU5LCAKLSAgICA1MSwgOSwgMSwgMjQ4LCAyMjUsIDIsIDU5LCA1MSwgOSwgMSwgMjQyLCAyNTIsIDIsIDU5LCA1MSwgOSwgNSwgMjE5LCAxNjAsIAotICAgIDI1NCwgMTM0LCA5LCA1LCAyMTksIDE2MCwgMjI0LCAyMzgsIDIzMSwgNjMsIDksIDEsIDI0MSwgMjI2LCAyLCAyMzUsIDIwMCwgCi0gICAgMjE0LCAxMDUsIDE4MywgMjQ1LCAxNTEsIDY0LCAyMjYsIDE4LCAxODMsIDIxOCwgMjAsIDI0MywgMjM2LCAyMTgsIDEzMSwgCi0gICAgMTgzLCAyMTgsIDY4LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDE4MywgMjE4LCAyMCwgMjQ5LCAyMzQsIDE4MywgMjE4LCA2OCwgCi0gICAgMjQ5LCAyMzQsIDE4MywgMjAzLCAyNDksIDIzNCwgMTgzLCAyNDksIDIzNSwgMjE5LCAxMDgsIDIzMywgNTIsIDE4MywgMjQ5LCAKLSAgICAyMzUsIDIxOSwgMTA4LCAyMjIsIDI1NCwgMTgzLCAyMTgsIDIwLCAyNDksIDIzNSwgMjE5LCAxMDgsIDIzMywgNTIsIDE4MywgCi0gICAgMjE4LCA2OCwgMjQ5LCAyMzUsIDIxOSwgMTA4LCAyMjIsIDI1NCwgMTgzLCAyNDksIDE4OCwgMTgzLCAyNDIsIDgsIDIyNiwgCi0gICAgMjU0LCAxODMsIDI0MiwgOCwgMjMxLCA0MSwgMTgzLCAyNDIsIDgsIDI1MywgMjI2LCAxODMsIDI1NSwgMzAsIDc5LCAxODMsIAotICAgIDEsIDI1NCwgMTgzLCAxODMsIDEsIDIxOCwgMjQsIDI1NCwgMTgzLCAxODMsIDEsIDI1MiwgMzMsIDE4MywgMSwgMjQzLCAKLSAgICAxMjAsIDE4MywgMSwgMjQzLCAxMjEsIDI0MywgOTgsIDE4MywgMSwgMjQ4LCAyMDAsIDE4MywgMSwgMjQ3LCAxMjcsIDI0OCwgCi0gICAgMjAxLCAyMjIsIDIzMiwgMTgzLCAxLCAyNDEsIDI0NSwgMTgzLCAxLCAyMTIsIDMwLCAxODMsIDEsIDIxMCwgMTA4LCAxODMsIAotICAgIDEsIDI0MSwgMjAyLCAxODMsIDEsIDIxNiwgMjI3LCAxODMsIDEsIDIxNiwgMjI4LCAyNDMsIDk4LCAxODMsIDEsIDIxMCwgCi0gICAgMTk5LCAxODMsIDEsIDIxMCwgMjAwLCAyNDEsIDI0NSwgMTgzLCAxLCAyMzQsIDIzMSwgMTgzLCAxLCAyMzMsIDEwNywgMTgzLCAKLSAgICAxLCAyMzAsIDE5NSwgMTgzLCAxLCAyMjcsIDE5OCwgMTgzLCAxLCAyMjAsIDE0NSwgMTgzLCAxLCA0MCwgMjIwLCAxNDUsIAotICAgIDE4MywgMSwgNzYsIDE4MywgMSwgMjI1LCAyMjQsIDE4MywgMSwgMjIzLCA1MiwgMjI1LCAyMjQsIDE4MywgMSwgMjIyLCAyNiwgCi0gICAgMTgzLCAxLCAyMjQsIDc4LCAxODMsIDEsIDIyMiwgMjMyLCAxODMsIDEsIDIyMCwgMjIsIDE4MywgMSwgMjE3LCAzNywgMTgzLCAKLSAgICAxLCAyMjUsIDE3MiwgMjUyLCAyMCwgMTgzLCAxLCAyMjUsIDE3MiwgMjQyLCAyNDksIDE4MywgMSwgMjI1LCAxNzIsIDI0OCwgCi0gICAgMjgsIDE4MywgMjI0LCAxNTQsIDQ4LCAxODMsIDIyNCwgMTU0LCA1MSwgMTgzLCAyMjQsIDE1NCwgMjQ2LCAxMjUsIDE4MywgCi0gICAgMjEwLCAxNywgNDgsIDE4MywgMjEwLCAxNywgNTEsIDE4MywgMjEwLCAxNywgMjQ2LCAxMjUsIDE4MywgMjIzLCAxMzQsIDQ4LCAKLSAgICAxODMsIDIyMywgMTM0LCA1MSwgMTgzLCAyNDYsIDEyNiwgMjEwLCAyNCwgMjQxLCA1MSwgMTgzLCAyNDYsIDEyNiwgMjEwLCAKLSAgICAyNCwgMjU0LCAxMTMsIDE4MywgMjQxLCAyNDgsIDQ4LCAxODMsIDI0MSwgMjQ4LCA1MSwgMTgzLCAyNDEsIDI0NywgMjQ2LCAKLSAgICAxMjUsIDE4MywgMjQ1LCA4NywgNDgsIDE4MywgMjQ1LCA4NywgNTEsIDE4MywgMjIyLCAxMDksIDE4MywgMjQ0LCAxNDQsIAotICAgIDI0NywgMTI4LCAxODMsIDIyMywgMjUxLCAxODMsIDIyMiwgMTM2LCAxODMsIDExMywgNjcsIDE3MCwgNDgsIDE4MywgMTEzLCAKLSAgICA2NywgMTcwLCA1MSwgMTgzLCAxMzQsIDE3MCwgNDgsIDE4MywgMTM0LCAxNzAsIDUxLCAxODMsIDIyNiwgMjUyLCAyMzIsIAotICAgIDIyMCwgNDgsIDE4MywgMjI2LCAyNTIsIDIzMiwgMjIwLCA1MSwgMTgzLCAyMzAsIDYxLCAxODMsIDI1MiwgMTM5LCAxODMsIAotICAgIDEsIDIxOSwgNTEsIDIxMCwgODAsIDE4MywgMSwgMjE5LCA1MSwgMjM0LCAxMjgsIDE4MywgMSwgMjE5LCA1MSwgMjQ0LCAKLSAgICAxNjIsIDksIDEsIDI1MiwgNjMsIDIsIDEzNCwgMTcwLCAyNDEsIDEsIDUxLCA5LCAxLCAyNTIsIDYzLCAyLCA1OSwgMjUyLCAKLSAgICA1MSwgMjIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgMjUyLCA2MywgMiwgMTM0LCAxNzAsIDIyNSwgMTAsIDIxNCwgMTUzLCA1MSwgCi0gICAgOSwgMSwgMjUyLCA2MywgMiwgMTM0LCAxNzAsIDIyNSwgMTAsIDIxNCwgMTUzLCAyNTIsIDUxLCAyMiwgMTEzLCAxNzAsIDQ4LCAKLSAgICA5LCAxLCAyNTIsIDYzLCAyLCAxMTMsIDE3MCwgMjUyLCA1MSwgMjIsIDU5LCA0OCwgOSwgMSwgMjUyLCA2MywgMiwgMjM1LCAKLSAgICAyMDAsIDQsIDIxNCwgMTA2LCA1MSwgOSwgMSwgMjUyLCA2MywgMiwgNCwgMjE0LCAxMDUsIDksIDEsIDEyMiwgMiwgMTEzLCAKLSAgICAxNzAsIDQ4LCA5LCAxLCAxMjIsIDIsIDEzNCwgMTcwLCAyMjUsIDEwLCAyMTQsIDE1MywgNTEsIDksIDEsIDI0OCwgMjA0LCAKLSAgICAyLCAxMTMsIDE3MCwgMjEzLCAxODksIDI1MiwgNTEsIDIyLCA0LCAyMTcsIDgxLCA5LCAxLCAyNDgsIDIwNCwgMiwgMjM1LCAKLSAgICAyMDAsIDQsIDIxNCwgMTA2LCA1MSwgOSwgMSwgMjIzLCA5OSwgMiwgOTEsIDksIDEsIDIyMSwgMTY5LCAyLCAyNDQsIDE5LCAKLSAgICAxNzAsIDQ4LCA5LCAxLCAyNTQsIDIwNiwgMiwgMTEzLCAxNzAsIDQ4LCA5LCAxLCAyNTQsIDIwNiwgMiwgMTM0LCAxNzAsIAotICAgIDIyNSwgMTAsIDI0NiwgMTEyLCA0OCwgOSwgMSwgMjU0LCAyMDYsIDIsIDExMywgMTcwLCAyMTMsIDE4OSwgNDgsIDksIDEsIAotICAgIDI0NCwgMTUxLCAyLCAxMTMsIDE3MCwgNTEsIDksIDEsIDI0NCwgMTUxLCAyLCAxMzQsIDE3MCwgMjI1LCAxMCwgMjE0LCAKLSAgICAxNTMsIDUxLCA5LCAxLCAyMzQsIDE4MSwgMiwgNTksIDQ4LCA5LCAxLCAyMzQsIDE4MSwgMiwgMTM0LCAxNzAsIDQ4LCA5LCAKLSAgICAxLCAyMzQsIDE4MSwgMiwgMTM0LCAxNzAsIDIyNSwgMTAsIDIxNCwgMTUzLCA1MSwgOSwgMSwgNjYsIDIsIDU5LCA0OCwgOSwgCi0gICAgMSwgNjYsIDIsIDU5LCA1MSwgOSwgMSwgMjI4LCA2OCwgMiwgMTEzLCAxNzAsIDUxLCA5LCAxLCAyMjgsIDY4LCAyLCA0LCAKLSAgICAyMTcsIDgxLCA5LCAxLCAyMjgsIDY4LCAyLCA0LCAyMTQsIDEwNSwgOSwgMSwgMjMzLCAxMDksIDIsIDEzMCwgOSwgMSwgCi0gICAgMjIzLCA5OSwgMiwgMTEzLCAxNzAsIDIxMywgMTg5LCA0OCwgOSwgMSwgMjIzLCA5OSwgMiwgMTgyLCA0OCwgOSwgMSwgMjIxLCAKLSAgICAxNjksIDIsIDExMywgMTcwLCAyMTMsIDE4OSwgNDgsIDksIDEsIDEyMiwgMiwgNCwgOSwgMSwgMjE3LCA4MiwgNTEsIDksIDEsIAotICAgIDEyMiwgMiwgNCwgOSwgMSwgMjE3LCA4MiwgMjIsIDExMywgMjQ3LCAxMjYsIDksIDEsIDIyMSwgMTY5LCAyLCA0LCA5LCAxLCAKLSAgICAyMTcsIDgyLCAyMiwgMTEzLCAyNDcsIDEyNiwgOSwgMSwgMjIzLCA5OSwgMiwgNCwgOSwgMSwgMjE3LCA4MiwgMjIsIDExMywgCi0gICAgMjQ3LCAxMjYsIDksIDEsIDEyMiwgMiwgNCwgOSwgMSwgMjE3LCA4MiwgNDgsIDksIDEsIDEwOSwgMiwgMjQ1LCAzMCwgMjU0LCAKLSAgICA0NSwgMjEsIDExMywgNDgsIDksIDEsIDEwOSwgMiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDEzNCwgNDgsIDksIDEsIDI0NCwgCi0gICAgMTc2LCA3NywgMiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDExMywgNDgsIDksIDEsIDI0NCwgMTc2LCA3NywgMiwgMjQ1LCAKLSAgICAzMCwgMjU0LCA0NSwgMjEsIDEzNCwgNDgsIDksIDEsIDI0NCwgMTc2LCA3NywgMiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIAotICAgIDI0NCwgMTksIDUxLCA5LCAxLCAyMTIsIDMxLCAyLCAyNDUsIDMwLCAyNTQsIDQ1LCAyMSwgMTEzLCA0OCwgOSwgMSwgMjEyLCAKLSAgICAzMSwgMiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDEzNCwgNDgsIDksIDEsIDc3LCAyNTIsIDE0MSwgMiwgMjQ1LCAzMCwgCi0gICAgMjU0LCA0NSwgMjEsIDExMywgNDgsIDksIDEsIDc3LCAyNTIsIDE0MSwgMiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDEzNCwgCi0gICAgNDgsIDksIDEsIDEyMiwgMiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDI0NCwgMTksIDUxLCA5LCAxLCAyMjEsIDE2OSwgMiwgCi0gICAgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDI0NCwgMTksIDQ4LCA5LCAxLCAyMjEsIDE2OSwgMiwgMjM1LCAyMDAsIDIxNCwgMTA1LCAKLSAgICA5LCAxLCAyMzUsIDEsIDIsIDExMywgMTcwLCA0OCwgMjE2LCAyMDYsIDEsIDI0MiwgNTMsIDIxNiwgMjA2LCAxLCAyMjAsIAotICAgIDcwLCAyMTYsIDIwNiwgMSwgMjI4LCA2NiwgMjE2LCAyMDYsIDEsIDIyMywgMTg3LCAyMTYsIDIwNiwgMSwgMjUyLCAxOTcsIAotICAgIDIxNiwgMjA2LCAxLCAyMzMsIDEsIDIxNiwgMjA2LCAxLCAyMzUsIDE0LCAyMTYsIDIwNiwgMSwgMjU0LCAxNjgsIDIxNiwgCi0gICAgMjA2LCAxLCAyMTQsIDI1LCAyMTYsIDIwNiwgMSwgMjMxLCA4MiwgMjE2LCAyMDYsIDEsIDI0NCwgMjAyLCAyMTYsIDIwNiwgCi0gICAgMSwgMjQ4LCAzMSwgMjE2LCAyMDYsIDEsIDIxNiwgMjA4LCAyMTYsIDIwNiwgMSwgMjMzLCAxMzcsIDIxNiwgMjA2LCAxLCAKLSAgICAyNDMsIDEzOCwgMjE2LCAyMDYsIDEsIDI0MiwgMTg0LCAyMTYsIDIwNiwgMSwgMjIxLCAxNjcsIDIxNiwgMjA2LCAxLCAyNDgsIAotICAgIDE1NiwgMjE2LCAyMDYsIDEsIDIxMCwgMTAwLCAyMTYsIDIwNiwgMSwgMjE3LCAzOCwgMjE2LCAyMDYsIDEsIDIxMSwgMTAzLCAKLSAgICAyMTYsIDIwNiwgMSwgMjI1LCAyMzcsIDIxNiwgMjA2LCAxLCAyMzUsIDEzNCwgMjE2LCAyMDYsIDEsIDI1MCwgMTQyLCAyMTYsIAotICAgIDIwNiwgMSwgMjE1LCAxNTYsIDIxNiwgMjA2LCAxLCAyNDEsIDE5NSwgMjE2LCAyMDYsIDEsIDIzNCwgMTM3LCAyMTYsIDIwNiwgCi0gICAgMSwgMjE2LCAyMDcsIDIxNiwgMjA2LCAxLCAyMTAsIDExNSwgMjE2LCAyMDYsIDEsIDIyMCwgNjAsIDIxNiwgMjA2LCAxLCAKLSAgICAyMjIsIDMyLCAyMTYsIDIwNiwgMSwgMjQ4LCAyMjcsIDIxNiwgMjA2LCAxLCAxMTIsIDIxNiwgMjA2LCAxLCAyMTAsIDIzLCAKLSAgICAyMTYsIDIwNiwgMSwgMjU0LCAyMDIsIDIxNiwgMjA2LCAxLCAyNDIsIDI1MCwgMjE2LCAyMDYsIDEsIDIyNCwgODgsIDIxNiwgCi0gICAgMjA2LCAxLCAyMTIsIDYzLCAyMTYsIDIwNiwgMjU1LCAzMSwgMjE2LCAyMDYsIDI1NSwgNDcsIDIxNiwgMjA2LCAyNDAsIAotICAgIDEyMSwgMjE2LCAyMDYsIDI0NSwgMjE2LCAyMTYsIDIwNiwgMjE0LCAyMjIsIDIxNiwgMjA2LCAyMjYsIDE4NiwgMjE2LCAKLSAgICAyMDYsIDI0NSwgMjI0LCAyMTYsIDIwNiwgMjQ1LCAyNCwgMjE2LCAyMDYsIDIyNiwgMjUxLCAyMTYsIDIwNiwgMjI3LCAzLCAKLSAgICAyMTYsIDIwNiwgMjE4LCA0NiwgMjE2LCAyMDYsIDEsIDIyOSwgMjMwLCAyMjgsIDE0MiwgMjEsIDIxMCwgODYsIDIyOCwgCi0gICAgMTQyLCAyMSwgMTExLCAyMjgsIDE0MiwgMjEsIDEwNSwgMjI4LCAxNDIsIDIxLCAxNTgsIDIyOCwgMTQyLCAyMSwgMTYxLCAKLSAgICAyMjgsIDE0MiwgMjEsIDE5MCwgMjI4LCAxNDIsIDIxLCAxOTUsIDIyOCwgMTQyLCAyMSwgMTk5LCAyMjgsIDE0MiwgMjEsIAotICAgIDE5NiwgMjI4LCAxNDIsIDIxLCAyMDEsIDIyOCwgMTQyLCAxLCA2MSwgMjI4LCAxNDIsIDEsIDI0NSwgMjE3LCAyMjgsIDE0MiwgCi0gICAgMSwgNzQsIDIyOCwgMTQyLCAxLCA3NiwgMjI4LCAxNDIsIDEsIDY5LCAyMjgsIDE0MiwgMSwgMjI2LCAxODcsIDIyOCwgMTQyLCAKLSAgICAxLCA3OCwgMjI4LCAxNDIsIDEsIDI0OCwgMjE3LCAyMjgsIDE0MiwgMSwgMjMwLCAzMCwgMjI4LCAxNDIsIDEsIDI1MiwgCi0gICAgMTk5LCAyMjgsIDE0MiwgMSwgMTkxLCAyMjgsIDE0MiwgMSwgMjE3LCAxMDYsIDIyOCwgMTQyLCAxLCAyMzUsIDE0NywgMjI4LCAKLSAgICAxNDIsIDEsIDI1MCwgMTY1LCAyMjgsIDE0MiwgMSwgMjQ4LCAyMjksIDIyOCwgMTQyLCAxLCAyMDUsIDIyOCwgMTQyLCAxLCAKLSAgICAyMjIsIDE4MSwgMjI4LCAxNDIsIDEsIDIwNiwgMjI4LCAxNDIsIDEsIDI0MywgODYsIDIyOCwgMTQyLCAxLCAyNDQsIDIwNCwgCi0gICAgMjI4LCAxNDIsIDEsIDE3NiwgMjI4LCAxNDIsIDEsIDIzMywgMTQxLCAyMjgsIDE0MiwgMSwgMjI5LCAyMzQsIDIxMSwgMjIzLCAKLSAgICAyMjgsIDE0MiwgMSwgMTg2LCAyMjgsIDE0MiwgMSwgMjI3LCAxNjksIDIyOCwgMTQyLCAxLCAxOTgsIDIyOCwgMTQyLCAxLCAKLSAgICAxNjIsIDIyOCwgMTQyLCAxLCAyMTIsIDY1LCAyMjgsIDE0MiwgMSwgMTkyLCAyMjgsIDE0MiwgMSwgMjI3LCAxNzAsIDIxMSwgCi0gICAgMjIzLCAyMjgsIDE0MiwgMSwgMjM1LCA2NywgMjM1LCAxNDcsIDIyOCwgMTQyLCAxLCAyMzUsIDY3LCAyNTAsIDE2NSwgMjI4LCAKLSAgICAxNDIsIDEsIDIzNSwgNjcsIDIwNSwgMjI4LCAxNDIsIDM4LCAyMTksIDI1MywgMTI1LCAyMTYsIDMxLCAyMjgsIDE0MiwgMzgsIAotICAgIDIxOSwgMjUzLCAxMjEsIDIxNiwgMzEsIDIyOCwgMTQyLCAzOCwgMjE5LCAyNTMsIDIyMiwgMjMxLCAyMTYsIDMxLCAyMjgsIAotICAgIDE0MiwgMzgsIDIwMCwgMjQ4LCA0NiwgMjE2LCAzMSwgMjI4LCAxNDIsIDM4LCAyMDAsIDEyNSwgMjE2LCAzMSwgMjI4LCAKLSAgICAxNDIsIDM4LCAyMDAsIDEyMSwgMjE2LCAzMSwgMjI4LCAxNDIsIDM4LCAyMDAsIDIyMiwgMjMxLCAyMTYsIDMxLCAyMjgsIAotICAgIDE0MiwgMzgsIDIyOSwgMTk4LCA3OSwgMjI4LCAxNDIsIDM4LCA1MiwgNTksIDQ4LCAyMjgsIDE0MiwgMTI1LCAxMzgsIDI1NCwgCi0gICAgNjUsIDIyOCwgMTQyLCAxMjEsIDEzOCwgMjU0LCA2NSwgMjI4LCAxNDIsIDE2LCAyMjYsIDE4OCwgMjQ4LCA1OCwgMjI4LCAKLSAgICAxNDIsIDE2LCAyNDMsIDg1LCAyMjgsIDE0MiwgMjQ5LCAyMjcsIDIyOCwgMTQyLCAyNDUsIDM5LCA3OSwgMjI4LCAxNDIsIAotICAgIDIzMywgMTE0LCAyMjEsIDI1NCwgMSwgMjU0LCAxODUsIDIyMSwgMjU0LCAxLCAyNTEsIDIzNiwgMjIxLCAyNTQsIDEsIDI0MywgCi0gICAgMTE5LCAyMjEsIDI1NCwgMSwgMjQ4LCAyMDIsIDIyMSwgMjU0LCAxLCAyMzUsIDE1OCwgMjIxLCAyNTQsIDEsIDI1MiwgMTk3LCAKLSAgICAyMjEsIDI1NCwgMSwgMjEwLCA4OSwgMjIxLCAyNTQsIDEsIDIzNSwgMTY2LCAyMjEsIDI1NCwgMSwgMjE2LCA2OCwgMjIxLCAKLSAgICAyNTQsIDEsIDIxMCwgMTgyLCAyMjEsIDI1NCwgMSwgMjM1LCAxNSwgMjIxLCAyNTQsIDEsIDIzMywgMTM0LCAyMjEsIDI1NCwgCi0gICAgMSwgMjMwLCAxOTUsIDIyMSwgMjU0LCAxLCAyMjcsIDE5OCwgMjIxLCAyNTQsIDEsIDIxOSwgMTU4LCAyMjEsIDI1NCwgMSwgCi0gICAgMjM2LCA2LCAyMjEsIDI1NCwgMSwgMjQ0LCAxMjksIDIyMSwgMjU0LCAxLCAyMTUsIDE4MiwgMjIxLCAyNTQsIDEsIDIyNCwgCi0gICAgMTMsIDIyMSwgMjU0LCAxLCAyMjIsIDIzMiwgMjIxLCAyNTQsIDEsIDIyMCwgODcsIDIyMSwgMjU0LCAxLCAyMTcsIDEwMSwgCi0gICAgMjIxLCAyNTQsIDE2NCwgMjM2LCA2LCAyMjEsIDI1NCwgMTY0LCAyMzYsIDUsIDIyMSwgMjU0LCAxNjQsIDIyNiwgMjQ3LCAKLSAgICAyMjEsIDI1NCwgMTY0LCAyNDgsIDIxNSwgMjIxLCAyNTQsIDU4LCAxLCAyNDUsIDExMywgMjEwLCAxODIsIDIyMSwgMjU0LCAKLSAgICAxNjQsIDI0NSwgMTEzLCAyMTAsIDE4MiwgMjIxLCAyNTQsIDI1LCA1LCAyMDAsIDc2LCAyMjEsIDI1NCwgMjUsIDUsIDc2LCAKLSAgICAyMjEsIDI1NCwgMjUsIDUsIDIyNiwgMTIyLCAyNTUsIDgyLCAyMjEsIDI1NCwgMjUsIDUsIDIwMCwgMjU1LCA4MiwgMjIxLCAKLSAgICAyNTQsIDI1LCA1LCAyNTUsIDgyLCAyMjEsIDI1NCwgMjUsIDUsIDIyNiwgMTIyLCA2MSwgMjIxLCAyNTQsIDI1LCA1LCAyMDAsIAotICAgIDYxLCAyMjEsIDI1NCwgMjUsIDUsIDYxLCAyMjEsIDI1NCwgNTgsIDEsIDIxOSwgMjUzLCA2MSwgMjIxLCAyNTQsIDI1LCA1LCAKLSAgICAyMTksIDI1MywgNjEsIDIyMSwgMjU0LCAyNSwgNSwgMjAwLCA2OSwgMjIxLCAyNTQsIDI1LCA1LCA2OSwgMjIxLCAyNTQsIAotICAgIDU4LCAxLCA3NCwgMjIxLCAyNTQsIDI1LCA1LCAyMDAsIDc0LCAyMjEsIDI1NCwgMjUsIDUsIDc0LCAyMjEsIDI1NCwgMjUsIAotICAgIDUsIDc4LCAyMjEsIDI1NCwgMjUsIDUsIDIxOCwgNDYsIDIyMSwgMjU0LCAxNjQsIDIyOSwgOTcsIDIyMSwgMjU0LCAyMjQsIAotICAgIDE0NCwgMjI5LCA5NywgMjIxLCAyNTQsIDIyNCwgMTQ0LCAyNTQsIDIyNywgMjIxLCAyNTQsIDIyNCwgMTQ0LCAyNTQsIDEyMiwgCi0gICAgMjIxLCAyNTQsIDIyNCwgMTQ0LCAyNTIsIDEyMiwgMjIxLCAyNTQsIDIyNCwgMTQ0LCAyNTMsIDIwOSwgMjIxLCAyNTQsIAotICAgIDIyNCwgMTQ0LCAyMjAsIDEwLCAyMjEsIDI1NCwgMjU1LCAzMCwgNzksIDIyMSwgMjU0LCAyMjQsIDE0NCwgMjMxLCA3MywgCi0gICAgMjI0LCA0OCwgMjIxLCAyNTQsIDIyNCwgMTQ0LCAyMTAsIDMxLCAyMjEsIDI1NCwgMjI0LCAxNDQsIDIyNCwgNDgsIDIyMSwgCi0gICAgMjU0LCAyMjQsIDE0NCwgMjEwLCAxMTQsIDIyMSwgMjU0LCAyMjQsIDE0NCwgMjE1LCA5MCwgMjIxLCAyNTQsIDIyNCwgMTQ0LCAKLSAgICAyNTQsIDE3LCAyMjEsIDI1NCwgMjI0LCAxNDQsIDIxOSwgNTUsIDIzMSwgMTUwLCAyMjEsIDI1NCwgMjI0LCAxNDQsIDI1NCwgCi0gICAgMTA4LCAyMzEsIDE4NywgMSwgMjQyLCAzMSwgMjMxLCAxODcsIDEsIDI1NSwgMzQsIDIzMSwgMTg3LCAxLCAyNTQsIDIyNSwgCi0gICAgMjMxLCAxODcsIDEsIDI1NSwgOCwgMjMxLCAxODcsIDEsIDI1NCwgMjE4LCAyMzEsIDE4NywgMSwgMjE0LCAxMjQsIDIzMSwgCi0gICAgMTg3LCAxLCAyNTMsIDE2OCwgMjMxLCAxODcsIDEsIDIzNSwgMTY2LCAyMzEsIDE4NywgMSwgMjUzLCAyMDYsIDIzMSwgMTg3LCAKLSAgICAxLCAyNTQsIDE5MCwgMjMxLCAxODcsIDEsIDI1NCwgMTk1LCAyMzEsIDE4NywgMSwgMjU0LCAxODcsIDIzMSwgMTg3LCAxLCAKLSAgICAyNTQsIDE0NCwgMjMxLCAxODcsIDEsIDI1NCwgMTMxLCAyMzEsIDE4NywgMSwgMjUzLCAyNDUsIDIzMSwgMTg3LCAxLCAyMzYsIAotICAgIDYsIDIzMSwgMTg3LCAxLCAyNTQsIDgwLCAyMzEsIDE4NywgMSwgMjUzLCAyMTYsIDIzMSwgMTg3LCAxLCAyNTQsIDUzLCAKLSAgICAyMzEsIDE4NywgMSwgMjU0LCA0OSwgMjMxLCAxODcsIDEsIDI1MywgMjM5LCAyMzEsIDE4NywgMSwgMjUzLCAyMTQsIDIzMSwgCi0gICAgMTg3LCAxLCAyNDYsIDYzLCAyMzEsIDE4NywgMSwgMjM1LCA4LCAyMzEsIDE4NywgMSwgMjU0LCAyMDUsIDIzMSwgMTg3LCAKLSAgICAyNTQsIDIzMSwgNzksIDIzMSwgMTg3LCAyMTMsIDEzNiwgNzksIDIzMSwgMTg3LCAyNDMsIDYwLCA3OSwgMjMxLCAxODcsIAotICAgIDIyNCwgMTQzLCA5LCAxLCAyNTIsIDYzLCAyLCA0LCAyMTQsIDEwNiwgNTEsIDksIDEsIDE1MSwgMiwgMTEzLCAxNzAsIDQ4LCAKLSAgICA5LCAxLCAyMTcsIDgyLCAyLCAxMTMsIDE3MCwgNDgsIDksIDEsIDI0NCwgMTUxLCAyLCA1OSwgMjUyLCA1MSwgMjIsIDEzNCwgCi0gICAgMTcwLCA0OCwgOSwgMSwgMjI0LCA4NSwgMiwgNTksIDUxLCA5LCAxLCAyMzMsIDEwOSwgMiwgNTIsIDEzMCwgOSwgMSwgNjYsIAotICAgIDIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgNzcsIDIsIDExMywgMTcwLCAyNTIsIDUxLCAyMiwgMTgyLCA0OCwgOSwgMSwgNzcsIAotICAgIDIsIDExMywgMTcwLCAyNTIsIDUxLCAyMiwgNTksIDQ4LCA5LCAxLCAyMjMsIDk5LCAyLCAyMzIsIDEyOSwgOSwgMSwgMjEyLCAKLSAgICAzMSwgMiwgNTksIDIxMSwgMjMxLCA5LCAxLCAyMjIsIDIwMywgMjExLCA0MywgOSwgMjQ5LCAxMDcsIDI0NCwgMTczLCA5LCAKLSAgICAyNDksIDEwNywgMjQ4LCAxOTIsIDksIDI0OSwgMTA3LCAyMzQsIDIxMSwgOSwgMjQ5LCAxMDcsIDI0NCwgMTcxLCA5LCAyNDksIAotICAgIDEwNywgMjQ4LCAxOTAsIDksIDI0OSwgMTA3LCAyMzQsIDIwOSwgOSwgMTM4LCAxMjMsIDU5LCA0OCwgOSwgMTM4LCAxMTMsIAotICAgIDE3MCwgNDgsIDksIDEzOCwgMjMyLCAxMzAsIDQ4LCA5LCAxMzgsIDEyMywgNTksIDUxLCA5LCAxMzgsIDExMywgMTcwLCA1MSwgCi0gICAgOSwgMTM4LCAyMzIsIDEzMCwgNTEsIDksIDIwNCwgMjQ0LCAxNzEsIDksIDIwNCwgMjQ4LCAxOTAsIDksIDIwNCwgMjM0LCAKLSAgICAyMDksIDksIDQsIDEyNSwgMjEyLCAzMCwgOSwgMjQ0LCAxNzQsIDIsIDIyMiwgMjM2LCA5LCAyNDQsIDE3NCwgMiwgNTksIAotICAgIDQ4LCA5LCAyMzQsIDIxMiwgMiwgNTksIDUxLCA5LCA0MywgMjU0LCAyLCA0OCwgOSwgNDQsIDI1NCwgMiwgNDgsIDksIDQzLCAKLSAgICAyNTQsIDIsIDUxLCA5LCA0NCwgMjU0LCAyLCA1MSwgOSwgNTIsIDQ0LCAyNTQsIDIsIDQ4LCA5LCA1MiwgNDQsIDI1NCwgMiwgCi0gICAgNzIsIDIsIDI0NywgMTI4LCA5LCA0NCwgMjU0LCAyLCA3MiwgMiwgMjQ3LCAxMjgsIDksIDI0OCwgMTkzLCAyLCAyNDcsIAotICAgIDEyOCwgODQsIDUsIDIzNSwgMjAwLCAyNTEsIDcsIDg0LCA1LCAyNTEsIDcsIDg0LCA1LCAyNTQsIDgzLCA4NCwgNSwgMjEzLCAKLSAgICAxNDcsIDg0LCAxLCAyMTksIDI1MywgNjEsIDg0LCAxLCA2MSwgODQsIDEsIDI1NSwgODIsIDg0LCAxLCA3NCwgODQsIDEsIAotICAgIDIzNiwgNDAsIDg0LCAxLCA2OSwgODQsIDEsIDIxNCwgMTE4LCA4NCwgMSwgMTQ5LCAxNTMsIDg0LCAxLCAxNDksIDE1NiwgCi0gICAgODQsIDEsIDI1MSwgMTAsIDc2LCA4NCwgMSwgMjE5LCAyNTMsIDc2LCA4NCwgMSwgNzYsIDg0LCAxLCAyNTQsIDIxMCwgODQsIAotICAgIDEsIDI1MSwgMTAsIDc4LCA4NCwgMSwgMjE5LCAyNTMsIDc4LCA4NCwgMSwgNzgsIDg0LCAxLCAyNTMsIDIwMCwgODQsIDEsIAotICAgIDE3NiwgODQsIDEsIDIzNCwgMTM4LCA4NCwgMSwgMjQzLCAxNDIsIDg0LCAxLCAyNDMsIDAsIDg0LCAxLCAyMjksIDgyLCA4NCwgCi0gICAgMSwgMjUxLCA0MSwgODQsIDEsIDI1MCwgMTY1LCA4NCwgMSwgMjM1LCAxNDcsIDg0LCAxLCAyMzUsIDEyMCwgODQsIDEsIAotICAgIDIyNywgMTY5LCA4NCwgMSwgMjE1LCAxNTcsIDg0LCAxLCAyMTUsIDE0NSwgODQsIDEsIDI0OCwgMTQzLCA4NCwgMSwgMjQ4LCAKLSAgICAxMjcsIDg0LCAxLCAyMjgsIDExNSwgODQsIDEsIDIxNywgMTA2LCA4NCwgMSwgMjE2LCAyMDksIDg0LCAxLCAyNDgsIDIyOSwgCi0gICAgODQsIDEsIDI0OCwgMzMsIDg0LCAxLCAxOTgsIDg0LCAxLCAyMjgsIDk3LCA4NCwgMSwgMTkxLCA4NCwgMSwgMjI1LCAxNTAsIAotICAgIDg0LCAxLCAyNTIsIDE5OSwgODQsIDEsIDI1MiwgMjYsIDg0LCAxLCAxODYsIDg0LCAxLCAxOTIsIDg0LCAxLCAyMDUsIDg0LCAKLSAgICAxLCAyMjIsIDE4MSwgODQsIDEsIDIzMywgMTQxLCA4NCwgMSwgMjMyLCAxOTAsIDg0LCAxLCAyMzIsIDE4MSwgODQsIDEsIAotICAgIDIxNCwgMjcsIDg0LCAxLCAyMjAsIDEwNCwgODQsIDEsIDIxOCwgMjI1LCA4NCwgMSwgMjA2LCA4NCwgMSwgMTYyLCA4NCwgCi0gICAgMjUsIDUsIDIyNiwgMjM4LCA4NCwgMjUsIDUsIDIyNiwgMTg1LCA4NCwgNSwgMjI3LCAyMDksIDg0LCA1LCAyNTMsIDE4MywgCi0gICAgODQsIDI1LCA1LCAyNTUsIDgyLCA4NCwgMjUsIDUsIDc0LCA4NCwgMjUsIDUsIDIzNiwgNDAsIDg0LCAyNSwgNSwgNjksIDg0LCAKLSAgICAyNSwgNSwgMjE0LCAxMTgsIDg0LCAyNSwgNSwgMTQ5LCAxNTMsIDg0LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MiwgODQsIDI1LCAKLSAgICA1LCAyNTEsIDEwLCA3NiwgODQsIDI1LCA1LCAyMTksIDI1MywgNzYsIDg0LCAyNSwgNSwgNzYsIDg0LCAyNSwgNSwgMjU0LCAKLSAgICAyMTAsIDg0LCAyNSwgNSwgMjUxLCAxMCwgNzgsIDg0LCAyNSwgNSwgMjE5LCAyNTMsIDc4LCA4NCwgMjUsIDUsIDc4LCA4NCwgCi0gICAgMjUsIDUsIDI1MywgMjAwLCA4NCwgNSwgMjEzLCAxNTIsIDg0LCAyNSwgNSwgMjI0LCAxODgsIDc2LCA4NCwgMjUsIDUsIAotICAgIDI1MywgMTc5LCA4NCwgMjI2LCAyMDgsIDg0LCAyMTgsIDExMywgNSwgMjE0LCAyMTYsIDg0LCAyMTgsIDExMywgNSwgMjU0LCAKLSAgICA4NSwgODQsIDI0MiwgMTQ0LCAyNTUsIDIzLCA4NCwgMjU1LCAxMiwgMjU1LCAyMywgODQsIDI1LCA1LCAyNTEsIDEwLCAyMDAsIAotICAgIDc2LCA4NCwgMjUsIDUsIDIxNCwgMjE0LCA4NCwgMjUsIDUsIDIxNCwgMTE3LCA4NCwgMSwgMjI0LCA5MSwgODQsIDEsIDIzNCwgCi0gICAgMTIxLCA4NCwgMSwgMjQyLCAyMzMsIDg0LCAxLCAyMTAsIDExNiwgODQsIDEsIDI0OCwgMTMyLCA4NCwgMSwgMjIzLCA0MiwgCi0gICAgODQsIDEsIDI0NCwgMjA0LCA4NCwgMSwgMjEwLCAxNjgsIDg0LCAxLCAxNDksIDIyMiwgMTgyLCA4NCwgMSwgMTQ5LCAyMzIsIAotICAgIDE5MSwgODQsIDI1LCA1LCAxNDksIDE1NiwgODQsIDI1LCA1LCAxNDksIDIzMiwgMTkxLCA4NCwgMjQ4LCAxODYsIDg0LCA1MiwgCi0gICAgMjQ4LCAxODYsIDg0LCAyMSwgMjEwLCA4NiwgODQsIDIxLCAxMTEsIDg0LCAyMSwgMTA1LCA4NCwgMjEsIDE1OCwgODQsIDIxLCAKLSAgICAxNjEsIDg0LCAyMSwgMTkwLCA4NCwgMjEsIDE5NSwgODQsIDIxLCAxOTksIDg0LCAyMSwgMTk2LCA4NCwgMjEsIDIwMSwgODQsIAotICAgIDI1NSwgMzAsIDUwLCA4NCwgNSwgMTI1LCAyMTksIDE5LCAyNDcsIDEyOCwgODQsIDEsIDI1MSwgMTAsIDYxLCA4NCwgMSwgCi0gICAgMjI2LCAyMzgsIDg0LCAxLCAyMjYsIDE4NSwgODQsIDEsIDI1MywgMTc5LCA4NCwgMSwgMjE0LCAyMTQsIDg0LCAxLCAyMTQsIAotICAgIDExNywgODQsIDEsIDIxMCwgODIsIDg0LCAxLCAxMTQsIDE5MiwgODQsIDEsIDI0MywgMzYsIDg0LCAxLCAyMzUsIDEwMiwgCi0gICAgODQsIDEsIDI0MiwgMTg3LCAyMTgsIDEzMSwgODQsIDEsIDI0OCwgMTMzLCA4NCwgMSwgMjUyLCAxMTksIDE0NiwgNSwgMjUxLCAKLSAgICA3LCAxNDYsIDUsIDI1NCwgODMsIDE0NiwgNSwgMjEzLCAxNDcsIDE0NiwgMSwgNjEsIDE0NiwgMSwgMjU1LCA4MiwgMTQ2LCAKLSAgICAxLCA3NCwgMTQ2LCAxLCAyMzYsIDQwLCAxNDYsIDEsIDY5LCAxNDYsIDEsIDIxNCwgMTE4LCAxNDYsIDEsIDE0OSwgMTUzLCAKLSAgICAxNDYsIDEsIDE0OSwgMTU2LCAxNDYsIDEsIDc2LCAxNDYsIDEsIDI1NCwgMjEwLCAxNDYsIDEsIDc4LCAxNDYsIDEsIDI1MywgCi0gICAgMjAwLCAxNDYsIDEsIDE3NiwgMTQ2LCAxLCAyMzQsIDEzOCwgMTQ2LCAxLCAyNDMsIDE0MiwgMTQ2LCAxLCAyNDMsIDAsIAotICAgIDE0NiwgMSwgMjI5LCA4MiwgMTQ2LCAxLCAyNTEsIDQxLCAxNDYsIDEsIDI1MCwgMTY1LCAxNDYsIDEsIDIzNSwgMTQ3LCAKLSAgICAxNDYsIDEsIDIzNSwgMTIwLCAxNDYsIDEsIDIyNywgMTY5LCAxNDYsIDEsIDIxNSwgMTU3LCAxNDYsIDEsIDIxNSwgMTQ1LCAKLSAgICAxNDYsIDEsIDI0OCwgMTQzLCAxNDYsIDEsIDI0OCwgMTI3LCAxNDYsIDEsIDIyOCwgMTE1LCAxNDYsIDEsIDIxNywgMTA2LCAKLSAgICAxNDYsIDEsIDIxNiwgMjA5LCAxNDYsIDEsIDI0OCwgMjI5LCAxNDYsIDEsIDI0OCwgMzMsIDE0NiwgMSwgMTk4LCAxNDYsIDEsIAotICAgIDE5MSwgMTQ2LCAxLCAyMjUsIDE1MCwgMTQ2LCAxLCAyNTIsIDE5OSwgMTQ2LCAxLCAyNTIsIDI2LCAxNDYsIDEsIDE4NiwgCi0gICAgMTQ2LCAxLCAxOTIsIDE0NiwgMSwgMjA1LCAxNDYsIDEsIDIzMywgMTQxLCAxNDYsIDEsIDIyMCwgMTA0LCAxNDYsIDEsIAotICAgIDIxOCwgMjI1LCAxNDYsIDEsIDIwNiwgMTQ2LCAxLCAxNjIsIDE0NiwgNSwgMjI3LCAyMDksIDE0NiwgNSwgMjUzLCAxODMsIAotICAgIDE0NiwgMjUsIDUsIDI1NSwgODIsIDE0NiwgMjUsIDUsIDc0LCAxNDYsIDI1LCA1LCAyMzYsIDQwLCAxNDYsIDI1LCA1LCA2OSwgCi0gICAgMTQ2LCAyNSwgNSwgMjE0LCAxMTgsIDE0NiwgMjUsIDUsIDE0OSwgMTUzLCAxNDYsIDI1LCA1LCAxNDksIDIyMiwgMTgyLCAKLSAgICAxNDYsIDI1LCA1LCA3NiwgMTQ2LCAyNSwgNSwgMjU0LCAyMTAsIDE0NiwgMjUsIDUsIDc4LCAxNDYsIDI1LCA1LCAyNTMsIAotICAgIDIwMCwgMTQ2LCA1LCAyMTMsIDE1MiwgMTQ2LCAxLCAyMzQsIDEzMCwgMjE3LCAxMDYsIDE0NiwgMjUzLCAyMDEsIDIzMywgCi0gICAgMjksIDc5LCAxNDYsIDEsIDIyMiwgMTgxLCAxNDYsIDEsIDIyMywgNDIsIDE0NiwgMSwgMjEwLCAxNjgsIDE0NiwgMSwgMTQ5LCAKLSAgICAyMjIsIDE4MiwgMTQ2LCAxLCAxNDksIDIzMiwgMTkxLCAxNDYsIDI1LCA1LCAxNDksIDE1NiwgMTQ2LCAyNSwgNSwgMTQ5LCAKLSAgICAyMzIsIDE5MSwgMTQ2LCAyMSwgMjEwLCA4NiwgMTQ2LCAyMSwgMTExLCAxNDYsIDIxLCAxMDUsIDE0NiwgMjEsIDE1OCwgCi0gICAgMTQ2LCAyMSwgMTYxLCAxNDYsIDIxLCAxOTAsIDE0NiwgMjEsIDE5NSwgMTQ2LCAyMSwgMTk5LCAxNDYsIDIxLCAxOTYsIAotICAgIDE0NiwgMjEsIDIwMSwgMTQ2LCAxLCAyMjMsIDE5MSwgMiwgMjMwLCAyMjksIDI0OCwgNiwgMTQ2LCAxLCAyMjMsIDE5MSwgMiwgCi0gICAgMjMyLCAxMTQsIDI0OCwgNiwgMTQ2LCAyMjIsIDEyMCwgNzksIDE0NiwgMjIyLCAxMjAsIDUwLCAxNDYsIDI0OSwgMTA2LCAKLSAgICAyMjcsIDIwMSwgMTExLCAxNDYsIDI0OSwgMTA2LCAyMjcsIDIwMSwgMTA1LCAxNDYsIDI0OSwgMTA2LCAyMjcsIDIwMSwgCi0gICAgMTU4LCAxNDYsIDI0OSwgMTA2LCAyMjcsIDIwMSwgMTYxLCAxNDYsIDI0OSwgMTA2LCAyMjcsIDIwMSwgMTIzLCAyMzMsIDIyLCAKLSAgICAyMTYsIDIwMiwgMjE2LCAxOTcsIDI0OCwgNTYsIDE0NiwgMjQ5LCAxMDYsIDI0OCwgNTcsIDIxOSwgMTIxLCAxNDYsIDIzNSwgCi0gICAgMTY3LCAxNDYsIDI0MywgMTEwLCA3OSwgMTg1LCA1LCAyNTUsIDcsIDI1MSwgMjUxLCAxODUsIDUsIDI1MSwgMjUxLCAxODUsIAotICAgIDUsIDIxMywgMTQ3LCAxODUsIDEsIDYxLCAxODUsIDEsIDI1NSwgODIsIDE4NSwgMSwgNzQsIDE4NSwgMSwgMjM2LCA0MCwgCi0gICAgMTg1LCAxLCA2OSwgMTg1LCAxLCAyMTQsIDExOCwgMTg1LCAxLCAyNDUsIDIxNywgMTg1LCAxLCAyNTQsIDIxMCwgMTg1LCAxLCAKLSAgICAyMjYsIDE4NywgMTg1LCAxLCAyNTMsIDIwMCwgMTg1LCAxLCAxNzYsIDE4NSwgMSwgMjM0LCAxMzgsIDE4NSwgMSwgMjQzLCAKLSAgICAxNDIsIDE4NSwgMSwgMjQzLCAwLCAxODUsIDEsIDIyOSwgODIsIDE4NSwgMSwgMjUxLCA0MSwgMTg1LCAxLCAyNTAsIDE2NSwgCi0gICAgMTg1LCAxLCAyMzUsIDE0NywgMTg1LCAxLCAyMzUsIDEyMCwgMTg1LCAxLCAyMjcsIDE2OSwgMTg1LCAxLCAyMTUsIDE1NywgCi0gICAgMTg1LCAxLCAyMTUsIDE0NSwgMTg1LCAxLCAyNDgsIDE0MywgMTg1LCAxLCAyNDgsIDEyNywgMTg1LCAxLCAyMjgsIDExNSwgCi0gICAgMTg1LCAxLCAyMTcsIDEwNiwgMTg1LCAxLCAyMTYsIDIwOSwgMTg1LCAxLCAyNDgsIDIyOSwgMTg1LCAxLCAyNDgsIDMzLCAKLSAgICAxODUsIDEsIDE5OCwgMTg1LCAxLCAxOTEsIDE4NSwgMSwgMjI1LCAxNTAsIDE4NSwgMSwgMjUyLCAxOTksIDE4NSwgMSwgCi0gICAgMjUyLCAyNiwgMTg1LCAxLCAxODYsIDE4NSwgMSwgMTkyLCAxODUsIDEsIDIwNSwgMTg1LCAxLCAyMzMsIDE0MSwgMTg1LCAxLCAKLSAgICAyMzIsIDE5MCwgMTg1LCAxLCAyMTQsIDI3LCAxODUsIDEsIDIyMCwgMTA0LCAxODUsIDEsIDIwNiwgMTg1LCAxLCAxNjIsIAotICAgIDE4NSwgNSwgMjI3LCAyMDksIDE4NSwgMjUsIDUsIDI1NSwgODIsIDE4NSwgMjUsIDUsIDc0LCAxODUsIDI1LCA1LCAyMzYsIAotICAgIDQwLCAxODUsIDI1LCA1LCA2OSwgMTg1LCAyNSwgNSwgMjE0LCAxMTgsIDE4NSwgMjUsIDUsIDI0NSwgMjE3LCAxODUsIDI1LCAKLSAgICA1LCAyNTQsIDIxMCwgMTg1LCAyNSwgNSwgMjI2LCAxODcsIDE4NSwgMjUsIDUsIDI1MywgMjAwLCAxODUsIDUsIDIxMywgCi0gICAgMTUyLCAxODUsIDUsIDIxNCwgMjE4LCAxODUsIDEsIDIzNCwgMTIxLCAxODUsIDEsIDI0MiwgMjMzLCAxODUsIDEsIDIxMCwgCi0gICAgMTE2LCAxODUsIDEsIDIyMiwgMTgxLCAxODUsIDEsIDI0NCwgMjA0LCAxODUsIDIxLCAyMTAsIDg2LCAxODUsIDIxLCAxMTEsIAotICAgIDE4NSwgMjEsIDEwNSwgMTg1LCAyMSwgMTU4LCAxODUsIDIxLCAxNjEsIDE4NSwgMjEsIDE5MCwgMTg1LCAyMSwgMTk1LCAKLSAgICAxODUsIDIxLCAxOTksIDE4NSwgMjEsIDE5NiwgMTg1LCAyMSwgMjAxLCAxODUsIDIxNiwgNzUsIDE4NSwgMjU1LCA2LCAxODUsIAotICAgIDIzNSwgMTg1LCAxODUsIDIxNCwgMTQ2LCAxODUsIDI0NSwgMTg5LCAyMjYsIDE5MiwgMTg1LCA1LCAyMTEsIDc4LCAxNzEsIAotICAgIDUsIDI1MSwgNywgMTcxLCA1LCAyNTQsIDgzLCAxNzEsIDUsIDIxMywgMTQ3LCAxNzEsIDEsIDYxLCAxNzEsIDEsIDI1NSwgCi0gICAgODIsIDE3MSwgMSwgNzQsIDE3MSwgMSwgMjM2LCA0MCwgMTcxLCAxLCA2OSwgMTcxLCAxLCAyMTQsIDExOCwgMTcxLCAxLCAKLSAgICAxNDksIDE1MywgMTcxLCAxLCAxNDksIDE1NiwgMTcxLCAyNSwgMjUxLCAxMCwgNzYsIDE3MSwgMSwgNzYsIDE3MSwgMSwgCi0gICAgMjU0LCAyMTAsIDE3MSwgMjUsIDI1MSwgMTAsIDc4LCAxNzEsIDEsIDc4LCAxNzEsIDEsIDI1MywgMjAwLCAxNzEsIDEsIAotICAgIDE3NiwgMTcxLCAxLCAyMzQsIDEzOCwgMTcxLCAxLCAyNDMsIDE0MiwgMTcxLCAxLCAyNDMsIDAsIDE3MSwgMSwgMjI5LCA4MiwgCi0gICAgMTcxLCAxLCAyNTEsIDQxLCAxNzEsIDEsIDI1MCwgMTY1LCAxNzEsIDEsIDIzNSwgMTQ3LCAxNzEsIDEsIDIzNSwgMTIwLCAKLSAgICAxNzEsIDEsIDIyNywgMTY5LCAxNzEsIDEsIDIxNSwgMTU3LCAxNzEsIDEsIDIxNSwgMTQ1LCAxNzEsIDEsIDI0OCwgMTQzLCAKLSAgICAxNzEsIDEsIDI0OCwgMTI3LCAxNzEsIDEsIDIyOCwgMTE1LCAxNzEsIDEsIDIxNywgMTA2LCAxNzEsIDEsIDIxNiwgMjA5LCAKLSAgICAxNzEsIDEsIDI0OCwgMjI5LCAxNzEsIDEsIDI0OCwgMzMsIDE3MSwgMSwgMTk4LCAxNzEsIDEsIDE5MSwgMTcxLCAxLCAyMjUsIAotICAgIDE1MCwgMTcxLCAxLCAyNTIsIDE5OSwgMTcxLCAxLCAyNTIsIDI2LCAxNzEsIDEsIDE4NiwgMTcxLCAxLCAxOTIsIDE3MSwgMSwgCi0gICAgMjA1LCAxNzEsIDEsIDIzMywgMTQxLCAxNzEsIDEsIDIzMiwgMTkwLCAxNzEsIDEsIDIxNCwgMjcsIDE3MSwgMSwgMjIwLCAKLSAgICAxMDQsIDE3MSwgMSwgMjE4LCAyMjUsIDE3MSwgMSwgMjA2LCAxNzEsIDEsIDE2MiwgMTcxLCA1LCAyMjcsIDIwOSwgMTcxLCAKLSAgICA1LCAyNTMsIDE4MywgMTcxLCAyNSwgNSwgMjU1LCA4MiwgMTcxLCAyNSwgNSwgNzQsIDE3MSwgMjUsIDUsIDIzNiwgNDAsIAotICAgIDE3MSwgMjUsIDUsIDY5LCAxNzEsIDI1LCA1LCAyMTQsIDExOCwgMTcxLCAyNSwgNSwgMTQ5LCAxNTMsIDE3MSwgMjUsIDUsIAotICAgIDE0OSwgMjIyLCAxODIsIDE3MSwgMjUsIDUsIDI1MSwgMTAsIDc2LCAxNzEsIDI1LCA1LCA3NiwgMTcxLCAyNSwgNSwgMjU0LCAKLSAgICAyMTAsIDE3MSwgMjUsIDUsIDI1MSwgMTAsIDc4LCAxNzEsIDI1LCA1LCA3OCwgMTcxLCAyNSwgNSwgMjUzLCAyMDAsIDE3MSwgCi0gICAgNSwgMjEzLCAxNTIsIDE3MSwgMjI2LCAyMDgsIDE3MSwgMSwgMTQ5LCAyMjIsIDE4MiwgMTcxLCAxLCAxNDksIDIzMiwgMTkxLCAKLSAgICAxNzEsIDI1LCA1LCAxNDksIDE1NiwgMTcxLCAyNSwgNSwgMTQ5LCAyMzIsIDE5MSwgMTcxLCAyMSwgMjEwLCA4NiwgMTcxLCAKLSAgICAyMSwgMTExLCAxNzEsIDIxLCAxMDUsIDE3MSwgMjEsIDE1OCwgMTcxLCAyMSwgMTYxLCAxNzEsIDIxLCAxOTAsIDE3MSwgMjEsIAotICAgIDE5NSwgMTcxLCAyMSwgMTk5LCAxNzEsIDIxLCAxOTYsIDE3MSwgMjEsIDIwMSwgMTcxLCAyNTUsIDMwLCA1MCwgMTcxLCAKLSAgICAyMjIsIDEyMCwgNTAsIDE1NywgNSwgMjUxLCA3LCAxNTcsIDUsIDI1NCwgODMsIDE1NywgNSwgMjEzLCAxNDcsIDE1NywgMSwgCi0gICAgNjEsIDE1NywgMSwgMjU1LCA4MiwgMTU3LCAxLCA3NCwgMTU3LCAxLCAyMzYsIDQwLCAxNTcsIDEsIDY5LCAxNTcsIDEsIAotICAgIDIxNCwgMTE4LCAxNTcsIDEsIDE0OSwgMTUzLCAxNTcsIDEsIDE0OSwgMTU2LCAxNTcsIDEsIDc2LCAxNTcsIDEsIDI1NCwgCi0gICAgMjEwLCAxNTcsIDEsIDc4LCAxNTcsIDEsIDI1MywgMjAwLCAxNTcsIDEsIDE3NiwgMTU3LCAxLCAyMzQsIDEzOCwgMTU3LCAxLCAKLSAgICAyNDMsIDE0MiwgMTU3LCAxLCAyNDMsIDAsIDE1NywgMSwgMjI5LCA4MiwgMTU3LCAxLCAyNTEsIDQxLCAxNTcsIDEsIDI1MCwgCi0gICAgMTY1LCAxNTcsIDEsIDIzNSwgMTQ3LCAxNTcsIDEsIDIzNSwgMTIwLCAxNTcsIDEsIDIyNywgMTY5LCAxNTcsIDEsIDIxNSwgCi0gICAgMTU3LCAxNTcsIDEsIDIxNSwgMTQ1LCAxNTcsIDEsIDI0OCwgMTQzLCAxNTcsIDEsIDI0OCwgMTI3LCAxNTcsIDEsIDIyOCwgCi0gICAgMTE1LCAxNTcsIDEsIDIxNywgMTA2LCAxNTcsIDEsIDIxNiwgMjA5LCAxNTcsIDEsIDI0OCwgMjI5LCAxNTcsIDEsIDI0OCwgCi0gICAgMzMsIDE1NywgMSwgMTk4LCAxNTcsIDEsIDE5MSwgMTU3LCAxLCAyMjUsIDE1MCwgMTU3LCAxLCAyNTIsIDE5OSwgMTU3LCAxLCAKLSAgICAyNTIsIDI2LCAxNTcsIDEsIDE4NiwgMTU3LCAxLCAxOTIsIDE1NywgMSwgMjA1LCAxNTcsIDEsIDIzMywgMTQxLCAxNTcsIDEsIAotICAgIDIzMiwgMTkwLCAxNTcsIDEsIDIxNCwgMjcsIDE1NywgMSwgMjIwLCAxMDQsIDE1NywgMSwgMjE4LCAyMjUsIDE1NywgMSwgCi0gICAgMjA2LCAxNTcsIDEsIDE2MiwgMTU3LCA1LCAyMjcsIDIwOSwgMTU3LCA1LCAyNTMsIDE4MywgMTU3LCAyNSwgNSwgMjU1LCAKLSAgICA4MiwgMTU3LCAyNSwgNSwgNzQsIDE1NywgMjUsIDUsIDIzNiwgNDAsIDE1NywgMjUsIDUsIDY5LCAxNTcsIDI1LCA1LCAyMTQsIAotICAgIDExOCwgMTU3LCAyNSwgNSwgMTQ5LCAxNTMsIDE1NywgMjUsIDUsIDE0OSwgMjIyLCAxODIsIDE1NywgMjUsIDUsIDc2LCAKLSAgICAxNTcsIDI1LCA1LCAyNTQsIDIxMCwgMTU3LCAyNSwgNSwgNzgsIDE1NywgMjUsIDUsIDI1MywgMjAwLCAxNTcsIDUsIDIxMywgCi0gICAgMTUyLCAxNTcsIDI1NCwgMjExLCAyMzMsIDI5LCA3OSwgMTU3LCAyNTMsIDIwMSwgMjMzLCAyOSwgNzksIDE1NywgMSwgMjIyLCAKLSAgICAxODEsIDE1NywgMSwgMjIzLCA0MiwgMTU3LCAxLCAyMTAsIDE2OCwgMTU3LCAxLCAxNDksIDIyMiwgMTgyLCAxNTcsIDEsIAotICAgIDE0OSwgMjMyLCAxOTEsIDE1NywgMjUsIDUsIDE0OSwgMTU2LCAxNTcsIDI1LCA1LCAxNDksIDIzMiwgMTkxLCAxNTcsIDIxLCAKLSAgICAyMTAsIDg2LCAxNTcsIDIxLCAxMTEsIDE1NywgMjEsIDEwNSwgMTU3LCAyMSwgMTU4LCAxNTcsIDIxLCAxNjEsIDE1NywgMjEsIAotICAgIDE5MCwgMTU3LCAyMSwgMTk1LCAxNTcsIDIxLCAxOTksIDE1NywgMjEsIDE5NiwgMTU3LCAyMSwgMjAxLCAxNTcsIDIzNSwgCi0gICAgMTY3LCAxNTcsIDEsIDIxMiwgNjUsIDE1NywgMjQ0LCAxMCwgMTIzLCAyMjQsIDI0LCAxNTcsIDI0NCwgMTAsIDEyMywgMjQyLCAKLSAgICAzNCwgMTU3LCAyNDQsIDEwLCAxMzQsIDIyNCwgMjIsIDE1NywgMjQ0LCAxMCwgMTIzLCAyMTksIDExOSwgMTU3LCAyNDQsIAotICAgIDEwLCAxMjMsIDI0NSwgMTk2LCAxNTcsIDI0NCwgMTAsIDEzNCwgMjE5LCAxMTgsIDM2LCA1LCAyNTQsIDgzLCAzNiwgNSwgCi0gICAgMjEzLCAxNDcsIDM2LCAxLCA2MSwgMzYsIDEsIDI1NSwgODIsIDM2LCAxLCA3NCwgMzYsIDEsIDIzNiwgNDAsIDM2LCAxLCAKLSAgICA2OSwgMzYsIDEsIDIxNCwgMTE4LCAzNiwgMSwgNzYsIDM2LCAxLCAyNDUsIDIxNywgMzYsIDEsIDI1NCwgMjEwLCAzNiwgMSwgCi0gICAgNzgsIDM2LCAxLCAyMjYsIDE4NywgMzYsIDEsIDI1MywgMjAwLCAzNiwgMSwgMTc2LCAzNiwgMSwgMjI5LCA4MiwgMzYsIDEsIAotICAgIDI1MSwgNDEsIDM2LCAxLCAyMzUsIDE0NywgMzYsIDEsIDIyNywgMTY5LCAzNiwgMSwgMjE1LCAxNTcsIDM2LCAxLCAyMjgsIAotICAgIDExNSwgMzYsIDEsIDIxNywgMTA2LCAzNiwgMSwgMTk4LCAzNiwgMSwgMjI4LCA5NywgMzYsIDEsIDE5MSwgMzYsIDEsIDE4NiwgCi0gICAgMzYsIDEsIDE5MiwgMzYsIDEsIDIwNSwgMzYsIDEsIDIyMiwgMTgxLCAzNiwgMSwgMjMzLCAxNDEsIDM2LCAxLCAyMzIsIAotICAgIDE5MCwgMzYsIDEsIDIzMiwgMTgxLCAzNiwgMSwgMjE0LCAyNywgMzYsIDEsIDIyMCwgMTA0LCAzNiwgMSwgMjE4LCAyMjUsIAotICAgIDM2LCAxLCAyMDYsIDM2LCAxLCAxNjIsIDM2LCAyNSwgNSwgMjU1LCA4MiwgMzYsIDI1LCA1LCA3NCwgMzYsIDI1LCA1LCAKLSAgICAyMzYsIDQwLCAzNiwgMjUsIDUsIDY5LCAzNiwgMjUsIDUsIDIxNCwgMTE4LCAzNiwgMjUsIDUsIDc2LCAzNiwgMjUsIDUsIAotICAgIDI0NSwgMjE3LCAzNiwgMjUsIDUsIDI1NCwgMjEwLCAzNiwgMjUsIDUsIDc4LCAzNiwgMjUsIDUsIDIyNiwgMTg3LCAzNiwgCi0gICAgMjUsIDUsIDI1MywgMjAwLCAzNiwgNSwgMjEzLCAxNTIsIDM2LCAyMjYsIDIwOCwgMzYsIDI1MywgMjAxLCAyMzMsIDI5LCAKLSAgICA3OSwgMzYsIDIxLCAyMTAsIDg2LCAzNiwgMjEsIDExMSwgMzYsIDIxLCAxMDUsIDM2LCAyMSwgMTU4LCAzNiwgMjEsIDE2MSwgCi0gICAgMzYsIDIxLCAxOTAsIDM2LCAyMSwgMTk1LCAzNiwgMjEsIDE5OSwgMzYsIDIxLCAxOTYsIDM2LCAyMSwgMjAxLCAzNiwgNTQsIAotICAgIDIxNiwgMjQ4LCAzNiwgNTQsIDEyMywgMjQwLCAyMTcsIDM2LCA1NCwgMTIzLCAyMTYsIDE0OCwgMzYsIDI0OCwgMTU0LCA1MCwgCi0gICAgMzYsIDIzMCwgMTQwLCA1MCwgMzYsIDIxMSwgNDUsIDUwLCAzNiwgMjQ4LCA5NSwgNTAsIDM2LCAyNDksIDE0NywgNTAsIDM2LCAKLSAgICAyNTMsIDI0NiwgNzIsIDUwLCAzNiwgMjIyLCAxMjAsIDUwLCAzNiwgNTQsIDUwLCAxNDgsIDUsIDI1MSwgNywgMTQ4LCA1LCAKLSAgICAyNTQsIDgzLCAxNDgsIDUsIDIxMywgMTQ3LCAxNDgsIDEsIDYxLCAxNDgsIDEsIDI1NSwgODIsIDE0OCwgMSwgNzQsIDE0OCwgCi0gICAgMSwgMjM2LCA0MCwgMTQ4LCAxLCA2OSwgMTQ4LCAxLCAyMTQsIDExOCwgMTQ4LCAxLCAxNDksIDE1MywgMTQ4LCAxLCAxNDksIAotICAgIDE1NiwgMTQ4LCAxLCA3NiwgMTQ4LCAxLCAyNDUsIDIxNywgMTQ4LCAxLCAyNTQsIDIxMCwgMTQ4LCAxLCA3OCwgMTQ4LCAxLCAKLSAgICAyMjYsIDE4NywgMTQ4LCAxLCAyNTMsIDIwMCwgMTQ4LCAxLCAxNzYsIDE0OCwgMSwgMjM0LCAxMzgsIDE0OCwgMSwgMjQzLCAKLSAgICAxNDIsIDE0OCwgMSwgMjQzLCAwLCAxNDgsIDEsIDIyOSwgODIsIDE0OCwgMSwgMjUxLCA0MSwgMTQ4LCAxLCAyNTAsIDE2NSwgCi0gICAgMTQ4LCAxLCAyMzUsIDE0NywgMTQ4LCAxLCAyMzUsIDEyMCwgMTQ4LCAxLCAyMjcsIDE2OSwgMTQ4LCAxLCAyMTUsIDE1NywgCi0gICAgMTQ4LCAxLCAyMTUsIDE0NSwgMTQ4LCAxLCAyNDgsIDE0MywgMTQ4LCAxLCAyNDgsIDEyNywgMTQ4LCAxLCAyMjgsIDExNSwgCi0gICAgMTQ4LCAxLCAyMTcsIDEwNiwgMTQ4LCAxLCAyMTYsIDIwOSwgMTQ4LCAxLCAyNDgsIDIyOSwgMTQ4LCAxLCAyNDgsIDMzLCAKLSAgICAxNDgsIDEsIDE5OCwgMTQ4LCAxLCAxOTEsIDE0OCwgMSwgMjI1LCAxNTAsIDE0OCwgMSwgMjUyLCAxOTksIDE0OCwgMSwgCi0gICAgMjUyLCAyNiwgMTQ4LCAxLCAxODYsIDE0OCwgMSwgMTkyLCAxNDgsIDEsIDIwNSwgMTQ4LCAxLCAyMjIsIDE4MSwgMTQ4LCAxLCAKLSAgICAyMzMsIDE0MSwgMTQ4LCAxLCAyMzIsIDE5MCwgMTQ4LCAxLCAyMTQsIDI3LCAxNDgsIDEsIDIyMCwgMTA0LCAxNDgsIDEsIAotICAgIDIxOCwgMjI1LCAxNDgsIDEsIDIwNiwgMTQ4LCAxLCAxNjIsIDE0OCwgNSwgMjUzLCAxODMsIDE0OCwgMjUsIDUsIDI1NSwgCi0gICAgODIsIDE0OCwgMjUsIDUsIDc0LCAxNDgsIDI1LCA1LCAyMzYsIDQwLCAxNDgsIDI1LCA1LCA2OSwgMTQ4LCAyNSwgNSwgMjE0LCAKLSAgICAxMTgsIDE0OCwgMjUsIDUsIDE0OSwgMTUzLCAxNDgsIDI1LCA1LCAxNDksIDIyMiwgMTgyLCAxNDgsIDI1LCA1LCA3NiwgCi0gICAgMTQ4LCAyNSwgNSwgMjQ1LCAyMTcsIDE0OCwgMjUsIDUsIDI1NCwgMjEwLCAxNDgsIDI1LCA1LCA3OCwgMTQ4LCAyNSwgNSwgCi0gICAgMjI2LCAxODcsIDE0OCwgMjUsIDUsIDI1MywgMjAwLCAxNDgsIDUsIDIxMywgMTUyLCAxNDgsIDIzMywgMjksIDc5LCAxNDgsIAotICAgIDI1NCwgMjExLCAyMzMsIDI5LCA3OSwgMTQ4LCAxLCAyMTUsIDE4NCwgMTQ4LCAxLCAyNDYsIDQ2LCAxNDgsIDEsIDE0OSwgCi0gICAgMjIyLCAxODIsIDE0OCwgMSwgMTQ5LCAyMzIsIDE5MSwgMTQ4LCAyNSwgNSwgMTQ5LCAxNTYsIDE0OCwgMjUsIDUsIDE0OSwgCi0gICAgMjMyLCAxOTEsIDE0OCwgMjEsIDIxMCwgODYsIDE0OCwgMjEsIDExMSwgMTQ4LCAyMSwgMTA1LCAxNDgsIDIxLCAxNTgsIAotICAgIDE0OCwgMjEsIDE2MSwgMTQ4LCAyMSwgMTkwLCAxNDgsIDIxLCAxOTUsIDE0OCwgMjEsIDE5OSwgMTQ4LCAyMSwgMTk2LCAKLSAgICAxNDgsIDIxLCAyMDEsIDE0OCwgMjQ0LCAxMCwgMjEsIDIxMCwgODcsIDMxLCAyMjYsIDI0MSwgMjI0LCAyMjYsIDY0LCAxNjEsIAotICAgIDE0OCwgMjQ0LCAxMCwgMjEsIDEyMywgMzEsIDIyNiwgMjQxLCAyMjQsIDIyNiwgNjQsIDE2MSwgMTQ4LCAyNDQsIDEwLCAyMSwgCi0gICAgMTEzLCAzMSwgMjI2LCAyNDEsIDIyNCwgMjI2LCA2NCwgMTYxLCAxNDgsIDI0NCwgMTAsIDIxLCAxMzQsIDMxLCAyMjYsIAotICAgIDI0MSwgMjI0LCAyMjYsIDY0LCAxNjEsIDE0OCwgMjQ0LCAxMCwgMjEsIDEyMywgMzEsIDI0NSwgNTAsIDIyNCwgMjI2LCA2NCwgCi0gICAgMTYxLCAxNDgsIDI0NCwgMTAsIDIxLCAxMTMsIDMxLCAyNDUsIDUwLCAyMjQsIDIyNiwgNjQsIDE2MSwgMTQ4LCAyNDQsIDEwLCAKLSAgICAyMSwgMTM0LCAzMSwgMjQ1LCA1MCwgMjI0LCAyMjYsIDY0LCAxNjEsIDE0OCwgNSwgMjE1LCA4NCwgMTY1LCA1LCAyNTQsIAotICAgIDgzLCAxNjUsIDUsIDIxMywgMTQ3LCAxNjUsIDEsIDYxLCAxNjUsIDEsIDI1NSwgODIsIDE2NSwgMSwgNzQsIDE2NSwgMSwgCi0gICAgMjM2LCA0MCwgMTY1LCAxLCA2OSwgMTY1LCAxLCAyMTQsIDExOCwgMTY1LCAxLCAxNDksIDE1MywgMTY1LCAxLCAxNDksIAotICAgIDE1NiwgMTY1LCAxLCA3NiwgMTY1LCAxLCAyNDUsIDIxNywgMTY1LCAxLCAyNTQsIDIxMCwgMTY1LCAxLCA3OCwgMTY1LCAxLCAKLSAgICAyMjYsIDE4NywgMTY1LCAxLCAyNTMsIDIwMCwgMTY1LCAxLCAxNzYsIDE2NSwgMSwgMjM0LCAxMzgsIDE2NSwgMSwgMjQzLCAKLSAgICAxNDIsIDE2NSwgMSwgMjQzLCAwLCAxNjUsIDEsIDIyOSwgODIsIDE2NSwgMSwgMjUxLCA0MSwgMTY1LCAxLCAyNTAsIDE2NSwgCi0gICAgMTY1LCAxLCAyMzUsIDE0NywgMTY1LCAxLCAyMzUsIDEyMCwgMTY1LCAxLCAyMjcsIDE2OSwgMTY1LCAxLCAyMTUsIDE1NywgCi0gICAgMTY1LCAxLCAyMTUsIDE0NSwgMTY1LCAxLCAyNDgsIDE0MywgMTY1LCAxLCAyNDgsIDEyNywgMTY1LCAxLCAyMjgsIDExNSwgCi0gICAgMTY1LCAxLCAyMTcsIDEwNiwgMTY1LCAxLCAyMTYsIDIwOSwgMTY1LCAxLCAyNDgsIDIyOSwgMTY1LCAxLCAyNDgsIDMzLCAKLSAgICAxNjUsIDEsIDE5OCwgMTY1LCAxLCAxOTEsIDE2NSwgMSwgMjI1LCAxNTAsIDE2NSwgMSwgMjUyLCAxOTksIDE2NSwgMSwgCi0gICAgMjUyLCAyNiwgMTY1LCAxLCAxODYsIDE2NSwgMSwgMTkyLCAxNjUsIDEsIDIwNSwgMTY1LCAxLCAyMjIsIDE4MSwgMTY1LCAxLCAKLSAgICAyMzMsIDE0MSwgMTY1LCAxLCAyMzIsIDE5MCwgMTY1LCAxLCAyMTQsIDI3LCAxNjUsIDEsIDIyMCwgMTA0LCAxNjUsIDEsIAotICAgIDIxOCwgMjI1LCAxNjUsIDEsIDIwNiwgMTY1LCAxLCAxNjIsIDE2NSwgNSwgMjI3LCAyMDksIDE2NSwgNSwgMjUzLCAxODMsIAotICAgIDE2NSwgMjUsIDUsIDI1NSwgODIsIDE2NSwgMjUsIDUsIDc0LCAxNjUsIDI1LCA1LCAyMzYsIDQwLCAxNjUsIDI1LCA1LCA2OSwgCi0gICAgMTY1LCAyNSwgNSwgMjE0LCAxMTgsIDE2NSwgMjUsIDUsIDE0OSwgMTUzLCAxNjUsIDI1LCA1LCAxNDksIDIyMiwgMTgyLCAKLSAgICAxNjUsIDI1LCA1LCA3NiwgMTY1LCAyNSwgNSwgMjQ1LCAyMTcsIDE2NSwgMjUsIDUsIDI1NCwgMjEwLCAxNjUsIDI1LCA1LCAKLSAgICA3OCwgMTY1LCAyNSwgNSwgMjI2LCAxODcsIDE2NSwgMjUsIDUsIDI1MywgMjAwLCAxNjUsIDUsIDIxMywgMTUyLCAxNjUsIAotICAgIDIzMywgMjksIDc5LCAxNjUsIDI1NCwgMjExLCAyMzMsIDI5LCA3OSwgMTY1LCAxLCAyNDQsIDIwNCwgMTY1LCAxLCAxNDksIAotICAgIDIyMiwgMTgyLCAxNjUsIDEsIDE0OSwgMjMyLCAxOTEsIDE2NSwgMjUsIDUsIDE0OSwgMTU2LCAxNjUsIDI1LCA1LCAxNDksIAotICAgIDIzMiwgMTkxLCAxNjUsIDIxLCAyMTAsIDg2LCAxNjUsIDIxLCAxMTEsIDE2NSwgMjEsIDEwNSwgMTY1LCAyMSwgMTU4LCAKLSAgICAxNjUsIDIxLCAxNjEsIDE2NSwgMjEsIDE5MCwgMTY1LCAyMSwgMTk1LCAxNjUsIDIxLCAxOTksIDE2NSwgMjEsIDE5NiwgCi0gICAgMTY1LCAyMSwgMjAxLCAxNjUsIDUsIDIzNSwgMTA4LCAxNjUsIDUsIDIxNCwgMTYxLCAxMzYsIDUsIDI1NCwgODMsIDEzNiwgCi0gICAgNSwgMjEzLCAxNDcsIDEzNiwgMSwgNjEsIDEzNiwgMSwgMjU1LCA4MiwgMTM2LCAxLCA3NCwgMTM2LCAxLCAyMzYsIDQwLCAKLSAgICAxMzYsIDEsIDY5LCAxMzYsIDEsIDIxNCwgMTE4LCAxMzYsIDEsIDE0OSwgMTUzLCAxMzYsIDEsIDE0OSwgMTU2LCAxMzYsIDEsIAotICAgIDc2LCAxMzYsIDEsIDI0NSwgMjE3LCAxMzYsIDEsIDI1NCwgMjEwLCAxMzYsIDEsIDc4LCAxMzYsIDEsIDIyNiwgMTg3LCAKLSAgICAxMzYsIDEsIDI1MywgMjAwLCAxMzYsIDEsIDE3NiwgMTM2LCAxLCAyMzQsIDEzOCwgMTM2LCAxLCAyNDMsIDE0MiwgMTM2LCAKLSAgICAxLCAyNDMsIDAsIDEzNiwgMSwgMjI5LCA4MiwgMTM2LCAxLCAyNTEsIDQxLCAxMzYsIDEsIDI1MCwgMTY1LCAxMzYsIDEsIAotICAgIDIzNSwgMTQ3LCAxMzYsIDEsIDIzNSwgMTIwLCAxMzYsIDEsIDIyNywgMTY5LCAxMzYsIDEsIDIxNSwgMTU3LCAxMzYsIDEsIAotICAgIDIxNSwgMTQ1LCAxMzYsIDEsIDI0OCwgMTQzLCAxMzYsIDEsIDI0OCwgMTI3LCAxMzYsIDEsIDIyOCwgMTE1LCAxMzYsIDEsIAotICAgIDIxNywgMTA2LCAxMzYsIDEsIDIxNiwgMjA5LCAxMzYsIDEsIDI0OCwgMjI5LCAxMzYsIDEsIDI0OCwgMzMsIDEzNiwgMSwgCi0gICAgMTk4LCAxMzYsIDEsIDIyOCwgOTcsIDEzNiwgMSwgMTkxLCAxMzYsIDEsIDIyNSwgMTUwLCAxMzYsIDEsIDI1MiwgMTk5LCAKLSAgICAxMzYsIDEsIDI1MiwgMjYsIDEzNiwgMSwgMTg2LCAxMzYsIDEsIDE5MiwgMTM2LCAxLCAyMDUsIDEzNiwgMSwgMjIyLCAxODEsIAotICAgIDEzNiwgMSwgMjMzLCAxNDEsIDEzNiwgMSwgMjMyLCAxOTAsIDEzNiwgMSwgMjMyLCAxODEsIDEzNiwgMSwgMjE0LCAyNywgCi0gICAgMTM2LCAxLCAyMjAsIDEwNCwgMTM2LCAxLCAyMTgsIDIyNSwgMTM2LCAxLCAyMDYsIDEzNiwgMSwgMTYyLCAxMzYsIDEsIAotICAgIDIxNSwgMTI2LCAxMzYsIDUsIDI1MywgMTgzLCAxMzYsIDI1LCA1LCAyNTUsIDgyLCAxMzYsIDI1LCA1LCA3NCwgMTM2LCAyNSwgCi0gICAgNSwgMjM2LCA0MCwgMTM2LCAyNSwgNSwgNjksIDEzNiwgMjUsIDUsIDIxNCwgMTE4LCAxMzYsIDI1LCA1LCAxNDksIDE1MywgCi0gICAgMTM2LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MiwgMTM2LCAyNSwgNSwgNzYsIDEzNiwgMjUsIDUsIDI0NSwgMjE3LCAxMzYsIDI1LCAKLSAgICA1LCAyNTQsIDIxMCwgMTM2LCAyNSwgNSwgNzgsIDEzNiwgMjUsIDUsIDIyNiwgMTg3LCAxMzYsIDI1LCA1LCAyNTMsIDIwMCwgCi0gICAgMTM2LCA1LCAyMTMsIDE1MiwgMTM2LCAxLCA1OSwgMjIzLCA3NiwgMTM2LCAyNTMsIDIwMSwgMjMzLCAyOSwgNzksIDEzNiwgCi0gICAgMSwgMTQ5LCAyMjIsIDE4MiwgMTM2LCAxLCAxNDksIDIzMiwgMTkxLCAxMzYsIDI1LCA1LCAxNDksIDE1NiwgMTM2LCAyNSwgCi0gICAgNSwgMTQ5LCAyMzIsIDE5MSwgMTM2LCAyMSwgMjEwLCA4NiwgMTM2LCAyMSwgMTExLCAxMzYsIDIxLCAxMDUsIDEzNiwgMjEsIAotICAgIDE1OCwgMTM2LCAyMSwgMTYxLCAxMzYsIDIxLCAxOTAsIDEzNiwgMjEsIDE5NSwgMTM2LCAyMSwgMTk5LCAxMzYsIDIxLCAKLSAgICAxOTYsIDEzNiwgMjEsIDIwMSwgMTM2LCA1NCwgMjE2LCAyNDgsIDEzNiwgNTQsIDEyMywgMjQwLCAyMTcsIDEzNiwgNTQsIAotICAgIDEyMywgMjE2LCAxNDgsIDEzNiwgMjQ0LCAxMCwgMTIzLCAyMjQsIDI0LCAxMzYsIDI0NCwgMTAsIDEyMywgMjQyLCAzNCwgCi0gICAgMTM2LCAyNDQsIDEwLCAxMzQsIDIyNCwgMjIsIDEzNiwgMjQ4LCAxNTgsIDc5LCAxMzYsIDEsIDI1MCwgMTA3LCAyMjgsIAotICAgIDExNiwgMTM2LCAxLCAyNTAsIDEwNywgMjMwLCAzMCwgMTM2LCAxLCAyNTAsIDEwNywgMjIyLCAxODIsIDEzNiwgMSwgMjUwLCAKLSAgICAxMDcsIDE1NiwgMTM2LCAxLCAyNTAsIDEwNywgMjMyLCAxOTEsIDEzNiwgMSwgMjUwLCAxMDcsIDIzNSwgMjksIDE3NSwgNSwgCi0gICAgMjU0LCA4MiwgMTc1LCA1LCAyMTMsIDE0NiwgMTc1LCAxLCAyNTMsIDE3MywgMTc1LCAxLCAyNTUsIDM2LCAxNzUsIDEsIAotICAgIDI1NCwgMjMyLCAxNzUsIDEsIDI1NCwgMjQ3LCAxNzUsIDEsIDIzNSwgMTU3LCAxNzUsIDEsIDIzNiwgMzksIDE3NSwgMSwgCi0gICAgMjE0LCAxMTAsIDE3NSwgMSwgMjE0LCAxMTIsIDE3NSwgMSwgMjM1LCAxODAsIDE3NSwgMSwgMjM1LCAxODEsIDE3NSwgMSwgCi0gICAgMjM2LCAyNSwgMTc1LCAxLCAyMzYsIDI3LCAxNzUsIDEsIDI0NSwgMjUsIDE3NSwgMSwgMjQ1LCAyMTIsIDE3NSwgMSwgMjU0LCAKLSAgICAxOTcsIDE3NSwgMSwgMjI2LCAxMTIsIDE3NSwgMSwgMjI2LCAxODEsIDE3NSwgMSwgMjUzLCAxODYsIDE3NSwgMSwgMjU0LCAKLSAgICAxNTQsIDIzNCwgMTkzLCAxNzUsIDEsIDIzMSwgMjE0LCAyMzQsIDE5MywgMTc1LCAxLCAyNTQsIDE1NCwgMjQzLCA4OSwgCi0gICAgMTc1LCAxLCAyMzEsIDIxNCwgMjQzLCA4OSwgMTc1LCAxLCAyMzQsIDIzNSwgMjI5LCAyMjcsIDE3NSwgMSwgMjIxLCAyMzgsIAotICAgIDI0MywgODksIDE3NSwgMSwgMjU0LCAxNTQsIDI1MCwgMjI0LCAxNzUsIDEsIDIzMSwgMjE0LCAyNTAsIDIyNCwgMTc1LCAxLCAKLSAgICAyNTQsIDE1NCwgMjM1LCAxMzMsIDE3NSwgMSwgMjMxLCAyMTQsIDIzNSwgMTMzLCAxNzUsIDEsIDIxNywgOTksIDIyOSwgCi0gICAgMjI3LCAxNzUsIDEsIDIxNywgOTksIDIyMSwgMjM3LCAyMjksIDIyOCwgMTc1LCAxLCAyMjEsIDIzOCwgMjM1LCAxMzMsIAotICAgIDE3NSwgMSwgMjU0LCAxNTQsIDIxNSwgMTUzLCAxNzUsIDEsIDIzMSwgMjE0LCAyMTUsIDE1MywgMTc1LCAxLCAyNTQsIDE1NCwgCi0gICAgMjQ4LCAxMzQsIDE3NSwgMSwgMjMxLCAyMTQsIDI0OCwgMTM0LCAxNzUsIDEsIDIzMCwgNTgsIDIyOSwgMTg1LCAxNzUsIDEsIAotICAgIDIyMSwgMjM4LCAyNDgsIDEzNCwgMTc1LCAxLCAyNTQsIDE1NCwgMjE3LCAzMSwgMTc1LCAxLCAyMzEsIDIxNCwgMjE3LCAzMSwgCi0gICAgMTc1LCAxLCAyNTQsIDE1NCwgMjQ4LCAxNTIsIDE3NSwgMSwgMjMxLCAyMTQsIDI0OCwgMTUyLCAxNzUsIDEsIDI0OCwgMTgyLCAKLSAgICAyMjksIDE4NSwgMTc1LCAxLCAyMjEsIDIzOCwgMjQ4LCAxNTIsIDE3NSwgMSwgMjU0LCAxNTQsIDIyNSwgMjMyLCAxNzUsIDEsIAotICAgIDIzMSwgMjE0LCAyMjUsIDIzMiwgMTc1LCAxLCAyNTQsIDE1NCwgMjUyLCAxMjAsIDE3NSwgMSwgMjMxLCAyMTQsIDI1MiwgCi0gICAgMTIwLCAxNzUsIDEsIDIzMSwgMTM2LCAxNzUsIDEsIDI1NCwgMTM5LCAyNTIsIDEyMCwgMTc1LCAxLCAyMTEsIDUxLCAxNzUsIAotICAgIDEsIDIyMywgMTM2LCAxNzUsIDEsIDI0OCwgMTgyLCAyMzMsIDczLCAxNzUsIDEsIDIxNCwgMSwgMTc1LCAxLCAyMTcsIDk5LCAKLSAgICAyMjEsIDIxMiwgMTc1LCAxLCAyMzAsIDU4LCAyMjEsIDIxMiwgMTc1LCAxLCAyNDgsIDE4MiwgMjIxLCAyMTIsIDE3NSwgMSwgCi0gICAgMjQxLCAyNDksIDE3NSwgMSwgMjMwLCA1OCwgMjMzLCA3MywgMTc1LCAxLCAyNDQsIDE2NCwgMTc1LCA1LCAyNTQsIDE4NiwgCi0gICAgMTc1LCAyNSwgNSwgMjU0LCAyNDIsIDE3NSwgMjUsIDUsIDIzNCwgMTYxLCAyNTQsIDI0OSwgMTc1LCAyNSwgNSwgMjQ3LCAKLSAgICAyMzYsIDI1NCwgMjQ5LCAxNzUsIDI1LCA1LCAyMzQsIDE2MSwgMjM1LCAxNzcsIDE3NSwgMjUsIDUsIDI0NywgMjM2LCAyMzUsIAotICAgIDE3NywgMTc1LCAyNSwgNSwgMjM0LCAxNjEsIDIyNiwgOTIsIDE3NSwgMjUsIDUsIDI0NywgMjM2LCAyMjYsIDkyLCAxNzUsIAotICAgIDI1LCA1LCAyNDMsIDEzMSwgMTc1LCAyNSwgNSwgMjM0LCAyMSwgMTc1LCAyNSwgNSwgMjQ3LCAyMzYsIDIzNCwgMjEsIDE3NSwgCi0gICAgMjUsIDUsIDIzNCwgMjMsIDI0OCwgNzUsIDE3NSwgMjUsIDUsIDIzNCwgMjIsIDI0MiwgNTQsIDI1NCwgMjQyLCAxNzUsIDI1LCAKLSAgICA1LCAyMzQsIDIyLCAyNDIsIDU0LCAyNDcsIDIzNiwgMjU0LCAyNDIsIDE3NSwgMjUsIDUsIDIzNCwgMjIsIDI0MiwgNTQsIAotICAgIDI0MywgODgsIDE3NSwgMjUsIDUsIDI0MywgODgsIDE3NSwgMjUsIDUsIDI0NywgMjM2LCAyNDMsIDEzMSwgMTc1LCAyNSwgNSwgCi0gICAgMjQ3LCAyMzYsIDI0MywgODgsIDE3NSwgMjI0LCAxNDQsIDIzMywgMjEzLCAxNjgsIDEzNSwgMjM0LCAzNSwgMjM0LCAyNTIsIAotICAgIDE2OCwgMTM1LCAyMzQsIDExMiwgMjM0LCAxMzQsIDE2OCwgMTM1LCAyMzQsIDExMiwgMjM0LCAxMDUsIDE2OCwgMTM1LCAKLSAgICAyMzQsIDExMiwgMjM0LCAxMDEsIDE2OCwgMTM1LCAyMzQsIDExMiwgMjM0LCAxMDksIDE2OCwgMTM1LCAyMzQsIDExMiwgCi0gICAgMjIzLCAxNTcsIDE2OCwgMTM1LCAyMjksIDEwLCAyMjgsIDI1MywgMTY4LCAxMzUsIDI1MCwgOTUsIDI1MCwgMTU1LCAxNjgsIAotICAgIDEzNSwgMjUwLCA5NSwgMjUwLCAxMDMsIDE2OCwgMTM1LCAyNTAsIDk1LCAyNTAsIDE1NCwgMTY4LCAxMzUsIDIxOSwgNjEsIAotICAgIDIxOSwgNjAsIDE2OCwgMTM1LCAyNTAsIDk1LCAyNTAsIDkxLCAxNjgsIDEzNSwgMjEwLCAyNDUsIDIxMCwgMjUyLCAxNjgsIAotICAgIDEzNSwgMjQ3LCAxNTQsIDI1MCwgMTYyLCAxNjgsIDEzNSwgMjE2LCA0MywgMjI1LCAyNDIsIDE2OCwgMTM1LCAyMTYsIDE1OCwgCi0gICAgMjE2LCAyMDEsIDE2OCwgMTM1LCAyMTYsIDE1OCwgMjI5LCAyMDYsIDE2OCwgMTM1LCAyMTYsIDE1OCwgMjI1LCAxMTQsIAotICAgIDE2OCwgMTM1LCAyMjgsIDgwLCAyMjksIDEwMywgMTY4LCAxMzUsIDI0NywgMTU0LCAyNDgsIDc2LCAxNjgsIDEzNSwgMjE2LCAKLSAgICA0MywgMjE3LCA1NiwgMTY4LCAxMzUsIDIxNiwgMTU4LCAyMTYsIDEzMiwgMTY4LCAxMzUsIDIxNiwgMTU4LCAyMTYsIDIwNSwgCi0gICAgMTY4LCAxMzUsIDIxNiwgMTU4LCAyMTYsIDE1NSwgMTY4LCAxMzUsIDIyOCwgODAsIDIyNywgMjQyLCAxNjgsIDEzNSwgMjUxLCAKLSAgICAyMTQsIDI1MiwgMTcyLCAxNjgsIDEzNSwgMjI1LCAyMCwgMjI1LCA0NSwgMTY4LCAxMzUsIDIyNSwgMTI1LCAyMjUsIDExNiwgCi0gICAgMTY4LCAxMzUsIDI0NCwgNTIsIDI0NCwgMjA0LCAxNjgsIDEzNSwgMjI1LCAxMjUsIDIyNSwgMTQ0LCAxNjgsIDEzNSwgMjQ0LCAKLSAgICA1MiwgMjQ0LCAxODEsIDE2OCwgMTM1LCAyMjUsIDEyNSwgMjIxLCAyNDksIDE2OCwgMTM1LCAyMzAsIDE2NywgMTg2LCAxNjgsIAotICAgIDEzNSwgMjEwLCAyNDUsIDIxMSwgNzksIDE2OCwgMTM1LCAyMjIsIDIxNCwgMjIyLCAxNDEsIDE2OCwgMTM1LCAyMjIsIDE0MiwgCi0gICAgMTY4LCAxMzUsIDIzMiwgMTYzLCAyMzIsIDIxMiwgMTY4LCAxMzUsIDIzMiwgMTAzLCAxNjgsIDEzNSwgMjExLCAyMjgsIAotICAgIDIxMiwgNjEsIDE2OCwgMTM1LCAyMTksIDYxLCAyMjIsIDgsIDE2OCwgMTM1LCAyMTksIDYxLCAyMjIsIDExNiwgMTY4LCAKLSAgICAxMzUsIDIxOSwgNjEsIDIxOCwgODMsIDE2OCwgMTM1LCAyNDEsIDc2LCAyNDEsIDE2NiwgMTY4LCAxMzUsIDIzMiwgMTYzLCAKLSAgICAyNTAsIDc2LCAxNjgsIDEzNSwgMTQ0LCAyNTQsIDEyMywgMTY4LCAxMzUsIDI0MSwgNzYsIDIyOCwgNzUsIDE2OCwgMTM1LCAKLSAgICAyMjYsIDcyLCAxNjgsIDEzNSwgMjIxLCAyMzIsIDYxLCAxNjgsIDEzNSwgMjMxLCAyMDksIDI0MiwgMjQsIDE2OCwgMTM1LCAKLSAgICAyMjEsIDIzMiwgMjU1LCA4MiwgMTY4LCAxMzUsIDIyMSwgMjMyLCAyNTQsIDE0NCwgMTY4LCAxMzUsIDIyMSwgMjMyLCA3NCwgCi0gICAgMTY4LCAxMzUsIDIyMSwgMjMyLCAyMzYsIDQwLCAxNjgsIDEzNSwgMjIxLCAyMzIsIDIxNCwgMjE0LCAxNjgsIDEzNSwgMjIxLCAKLSAgICAyMzIsIDIxNCwgMjEyLCAxNjgsIDEzNSwgMjIxLCAyMzIsIDY5LCAxNjgsIDEzNSwgMjIxLCAyMzIsIDIxNCwgMTE4LCAxNjgsIAotICAgIDEzNSwgMjI1LCAxMjcsIDE2OCwgMjQ5LCAxMDYsIDE2LCAyNTIsIDE3MywgMTY4LCAxMzUsIDIyMSwgMjMyLCA3NiwgMTY4LCAKLSAgICAxMzUsIDIyMSwgMjMyLCAyNTQsIDI1MiwgMTY4LCAxMzUsIDIyMSwgMjMyLCA3OCwgMTY4LCAxMzUsIDIyMSwgMjMyLCAyNTQsIAotICAgIDIxMSwgMjMxLCAyMDMsIDE2OCwgMTM1LCAyMjEsIDIzMiwgMjU0LCAyMTEsIDIzMSwgMjA0LCAxNjgsIDEzNSwgMjMzLCAKLSAgICAxMTIsIDE2OCwgMTM1LCAyMzEsIDIwMCwgMTY4LCAxMzUsIDIzMSwgMjAxLCAxNjgsIDEzNSwgMjMxLCAyMDksIDI0NSwgCi0gICAgMTg4LCAxNjgsIDEzNSwgMjMxLCAyMDksIDIxNiwgMTU3LCAxNjgsIDEzNSwgMjMxLCAyMDksIDIxNSwgMjI5LCAxNjgsIAotICAgIDEzNSwgMjMxLCAyMDksIDI1MCwgMTQzLCAxNjgsIDEzNSwgMjE2LCAxOTksIDE2OCwgMTM1LCAyMjgsIDIxMCwgMTY4LCAKLSAgICAxMzUsIDIxMSwgNzMsIDE2OCwgMTM1LCAyNDQsIDQzLCAxNjgsIDIxLCAyMTAsIDg2LCAxNjgsIDIxLCAxMTEsIDE2OCwgMjEsIAotICAgIDEwNSwgMTY4LCAyMSwgMTU4LCAxNjgsIDIxLCAxNjEsIDE2OCwgMjEsIDE5MCwgMTY4LCAyMSwgMTk1LCAxNjgsIDIxLCAKLSAgICAxOTksIDE2OCwgMjEsIDE5NiwgMTY4LCAyMSwgMjAxLCAxNjgsIDEzNSwgMjU0LCAxMTksIDE2OCwgMTM1LCAyMzQsIDExMCwgCi0gICAgMjA5LCAyMDksIDEsIDIzNCwgMzQsIDIwOSwgMjA5LCAxLCAyMzQsIDExMiwgMjE4LCAzNiwgMjA5LCAyMDksIDEsIDIzNCwgCi0gICAgMTEyLCAyMTcsIDYzLCAyMDksIDIwOSwgMSwgMjI5LCA5LCAyMDksIDIwOSwgMSwgMjQ5LCAyNDYsIDIwOSwgMjA5LCAxLCAKLSAgICAyMTksIDYxLCAyMTcsIDYzLCAyMDksIDIwOSwgMSwgMjI3LCAxMzgsIDIwOSwgMjA5LCAxLCAyNDcsIDE1MywgMjA5LCAyMDksIAotICAgIDEsIDExMiwgMjA5LCAyMDksIDEsIDIxNiwgMTU4LCAyMTgsIDM2LCAyMDksIDIwOSwgMSwgMjE2LCAxNTgsIDIxNywgNjMsIAotICAgIDIwOSwgMjA5LCAxLCAyMjgsIDc5LCAyMDksIDIwOSwgMSwgMjUxLCAyMTMsIDIwOSwgMjA5LCAxLCAyMjUsIDE5LCAyMDksIAotICAgIDIwOSwgMSwgMjI1LCAxMjUsIDIxOCwgMzYsIDIwOSwgMjA5LCAxLCAyNDQsIDUyLCAyMTcsIDYzLCAyMDksIDIwOSwgMSwgCi0gICAgMjI1LCAxMjUsIDIxNywgNjMsIDIwOSwgMjA5LCAxLCAyNDQsIDUyLCAyMTgsIDM2LCAyMDksIDIwOSwgMSwgMjMwLCAxNjYsIAotICAgIDIwOSwgMjA5LCAxLCAyMTAsIDI0NCwgMjA5LCAyMDksIDEsIDIzMiwgMTYzLCAyMzIsIDIxMiwgMjA5LCAyMDksIDEsIDIzMiwgCi0gICAgMTYzLCAyMzIsIDEyNywgMjA5LCAyMDksIDEsIDIxMSwgMjI3LCAyMDksIDIwOSwgMSwgMjE5LCA2MSwgMjE4LCAzNiwgMjA5LCAKLSAgICAyMDksIDEsIDI0MSwgNzYsIDIxOCwgMzYsIDIwOSwgMjA5LCAxLCA3OCwgMjA5LCAyMDksIDEsIDI0MSwgNzYsIDIxNywgNjMsIAotICAgIDIwOSwgMjA5LCAyNDUsIDE3MSwgMjA5LCAyMDksIDI1LCA1LCA2MSwgMjA5LCAyMDksIDI1LCA1LCAyMzEsIDIwOSwgMjM0LCAKLSAgICAyNDAsIDIwOSwgMjA5LCAyNSwgNSwgMjU1LCA4MiwgMjA5LCAyMDksIDI1LCA1LCAyNTQsIDE0NCwgMjA5LCAyMDksIDI1LCAKLSAgICA1LCA3NCwgMjA5LCAyMDksIDI1LCA1LCAyMzYsIDQwLCAyMDksIDIwOSwgMjUsIDUsIDIxMSwgMTE3LCAyMDksIDIwOSwgMjUsIAotICAgIDUsIDIxMCwgMTY5LCAyMDksIDIwOSwgMjUsIDUsIDY5LCAyMDksIDIwOSwgMjUsIDUsIDIxNCwgMTE4LCAyMDksIDIwOSwgCi0gICAgMjUsIDUsIDIzMSwgMjA5LCAyMzQsIDE5LCAyMDksIDIwOSwgMjIwLCAxNDcsIDUsIDIzMiwgMTYyLCAyMDksIDIwOSwgMjIwLCAKLSAgICAxNDcsIDUsIDIyNywgMTM4LCAyMDksIDIwOSwgMjUsIDUsIDc2LCAyMDksIDIwOSwgMjUsIDUsIDI0NSwgMjAzLCAyMDksIAotICAgIDIwOSwgMjUsIDUsIDc4LCAyMDksIDIwOSwgMjUsIDUsIDI1MywgMTc1LCAyMDksIDIwOSwgMjUsIDUsIDI1NCwgMjEwLCAKLSAgICAyMDksIDIwOSwgMjM0LCAzNSwgMjMzLCAxNDEsIDIwOSwgMjA5LCAxMzgsIDIzMSwgMjA5LCAyNDUsIDE4OCwgMjA5LCAyMDksIAotICAgIDEzOCwgMjMxLCAyMDksIDIxNiwgMTU3LCAyMDksIDIwOSwgMTM4LCAyMzEsIDIwOSwgMjE2LCAxMTgsIDIwOSwgMjA5LCAKLSAgICAxMzgsIDIzMSwgMjA5LCAyNTAsIDIzMSwgMjA5LCAyMDksIDI1MSwgMTIsIDc5LCAyMDksIDIwOSwgMjI4LCAyMTksIDIwOSwgCi0gICAgMjA5LCAyMSwgMjEwLCA4NiwgMjA5LCAyMDksIDIxLCAxMTEsIDIwOSwgMjA5LCAyMSwgMTA1LCAyMDksIDIwOSwgMjEsIAotICAgIDE1OCwgMjA5LCAyMDksIDIxLCAxNjEsIDIwOSwgMjA5LCAyMSwgMTkwLCAyMDksIDIwOSwgMjEsIDE5NSwgMjA5LCAyMDksIAotICAgIDIxLCAxOTksIDIwOSwgMjA5LCAyMSwgMTk2LCAyMDksIDIwOSwgMjEsIDIwMSwgMjA5LCAyMDksIDI0MSwgNzYsIDIyOCwgCi0gICAgNzksIDIwOSwgMjA5LCAyNDEsIDc2LCAyMzAsIDE2NiwgMjA5LCAyMDksIDEsIDIzNCwgMTEzLCAyNDIsIDE4MSwgMjA5LCAKLSAgICAyMDksIDEsIDIzNCwgMTEzLCAyMjcsIDEzOCwgNjMsIDMsIDIyNiwgMjA4LCA2MywgMTY0LCAyNDIsIDEyMiwgMjExLCAwLCAKLSAgICAyMzAsIDI1MywgMjE1LCAxOTAsIDYxLCA2MywgMTY0LCAyNDIsIDEyMiwgMjExLCAwLCAyMzAsIDI1MywgMjU1LCAxNjgsIAotICAgIDIyMiwgMjE4LCAyNTIsIDg1LCAxODYsIDYzLCAxNjQsIDI0MiwgMTIyLCAyMTEsIDAsIDIzMCwgMjUzLCAyNTUsIDE2OCwgCi0gICAgMjQyLCAxMjIsIDIxNSwgMTc0LCAxODYsIDYzLCAxNjQsIDY1LCAyMTEsIDAsIDIzMCwgMjUzLCAyMzEsIDk4LCAxODYsIDYzLCAKLSAgICAxNjQsIDI1MCwgNCwgMjExLCAwLCAyMzAsIDI1MywgMjIwLCAxMTEsIDE4NiwgNjMsIDE2NCwgMjUwLCAyNDcsIDIxMSwgMCwgCi0gICAgMjMwLCAyNTMsIDIyNSwgMTE1LCAyMjAsIDk4LCAxODYsIDYzLCAxNjQsIDIxMSwgMCwgMjMwLCAyNTMsIDIxNSwgMTc0LCAKLSAgICAyMjAsIDk4LCAxODYsIDYzLCAxNjQsIDIyMSwgMjEwLCAyMjAsIDk3LCA2MywgMTY0LCAyNTEsIDEzNiwgMjExLCAwLCAyMzAsIAotICAgIDI1MiwgNjMsIDE2NCwgMjUxLCAyMzEsIDIyMCwgNSwgMjExLCAwLCAyMzAsIDI1MiwgNjMsIDE2NCwgMjM1LCAyMDQsIDIxNSwgCi0gICAgMTczLCA2MywgMTY0LCAyNDgsIDY5LCAyMTUsIDE3NCwgMjUxLCAxMzUsIDYzLCAxNjQsIDIyMCwgOTcsIDYzLCAxNjQsIAotICAgIDIyNywgMTQzLCAyMjAsIDk3LCA2MywgMTY0LCAyMTUsIDE3NCwgMjIwLCA5NywgNjMsIDE2NCwgMjI3LCAxNDMsIDIxNSwgCi0gICAgMTc0LCAyMjAsIDk3LCA2MywgMTY0LCAyMjIsIDIzOSwgMjUwLCAxMzAsIDIxOCwgMjM4LCAyMjAsIDk3LCA2MywgMTY0LCAKLSAgICAyMjMsIDQ1LCAyNDIsIDE1MywgMjIwLCA5NywgNjMsIDE2NCwgMjUwLCAyNDcsIDI1NSwgMTcyLCAyMjIsIDE0NiwgMjMxLCAKLSAgICA5NywgMjAwLCAyNTEsIDE1LCA2MywgMTY0LCAyNDIsIDEyMiwgMjE1LCAxNzMsIDYzLCAyMzIsIDE1MCwgNSwgMjUwLCAxNjMsIAotICAgIDIyMiwgMTQ1LCA2MywgMjMyLCAxNTAsIDUsIDIzMywgMiwgMjIyLCAxNDUsIDYzLCAyNTMsIDIyMCwgNSwgMjIwLCAxMDcsIAotICAgIDI0MywgNzIsIDI1NSwgMTczLCAyMjIsIDE0NSwgNjMsIDI1MywgMjIwLCA1LCAyNTUsIDE3MCwgMTkxLCA2MywgMjUzLCAKLSAgICAyMjAsIDUsIDIyMSwgMTg0LCAyMTUsIDE2OSwgNjMsIDUsIDIyMywgMTMzLCAyNDcsIDE2NywgMjQzLCA3MSwgNjMsIDUsIAotICAgIDIyMywgMTMzLCAyNDcsIDE2NywgMjQyLCAxODMsIDYzLCA1LCAyMjMsIDEzMywgMjQ3LCAxNjcsIDI0MiwgMTIzLCA2MywgNSwgCi0gICAgMjIzLCAxMzMsIDIyOSwgMjI0LCAyNDMsIDcxLCA2MywgNSwgMjIzLCAxMzMsIDIyOSwgMjI0LCAyNDIsIDE4MywgNjMsIDUsIAotICAgIDIyMywgMTMzLCAyNDcsIDE2NywgMjIzLCAxMzMsIDIyOSwgMjIzLCA2MywgMjEsIDIxMCwgODYsIDYzLCAyMSwgMTExLCA2MywgCi0gICAgMjEsIDEwNSwgNjMsIDIxLCAxNTgsIDYzLCAyMSwgMTYxLCA2MywgMjEsIDE5MCwgNjMsIDIxLCAxOTUsIDYzLCAyMSwgMTk5LCAKLSAgICA2MywgMjEsIDE5NiwgNjMsIDIxLCAyMDEsIDYzLCAyMSwgMTYzLCAxMTEsIDYzLCAyMSwgMTYzLCAxMDUsIDYzLCAyMSwgCi0gICAgMTYzLCAxNTgsIDYzLCAyMSwgMTYzLCAxNjEsIDYzLCAyMSwgMTYzLCAxOTAsIDYzLCAyMSwgMTYzLCAxOTUsIDYzLCAyMSwgCi0gICAgMTYzLCAxOTksIDYzLCAyMSwgMTYzLCAxOTYsIDYzLCAyMSwgMTYzLCAyMDEsIDYzLCAyMSwgMTYzLCAyMTAsIDg2LCA2MywgCi0gICAgMTY0LCAyNTEsIDEzOCwgMjIyLCAxNDUsIDYzLCAxNjQsIDIyOSwgNzMsIDI1MSwgNzYsIDIyNywgMTUzLCAyMTAsIDI1LCAKLSAgICA2MywgMTY0LCAyNTAsIDI0NywgMjU1LCAxNzIsIDIyMiwgMTQ2LCAyNTEsIDc3LCAyMzAsIDIwNywgMjUxLCAxNSwgNjMsIAotICAgIDE2NCwgMjI5LCA3MywgMjUxLCA3NiwgMjIwLCAxMDgsIDIyMiwgMTQ1LCA2MywgMTY0LCAyNTAsIDE0MCwgMjMwLCAyNTIsIAotICAgIDYzLCAxNjQsIDIxNSwgMTg1LCAyNTUsIDE2OSwgNjMsIDE2NCwgMjQyLCAxMDcsIDIyMiwgMTQ2LCAyNDIsIDcwLCA2MywgCi0gICAgMTY0LCAyNDIsIDEwNywgMjIyLCAxNDYsIDI0MiwgNzYsIDYzLCAxNjQsIDI1NCwgMTI0LCAyMzQsIDEyOSwgMjQyLCA3MCwgCi0gICAgNjMsIDE2NCwgMjU0LCAxMjQsIDIzNCwgMTI5LCAyNDIsIDc2LCA2MywgNSwgMjExLCA2NSwgMjE1LCAxNzIsIDYzLCA1LCAKLSAgICAyMzEsIDE3MiwgMjE1LCAxNzIsIDYzLCAxLCAxNzYsIDYzLCAxLCAyMzQsIDEzOCwgNjMsIDEsIDI0MywgMTQyLCA2MywgMSwgCi0gICAgMjQzLCAwLCA2MywgMSwgMjI5LCA4MiwgNjMsIDEsIDI1MSwgNDEsIDYzLCAxLCAyNTAsIDE2NSwgNjMsIDEsIDIzNSwgMTQ3LCAKLSAgICA2MywgMSwgMjI3LCAxNjksIDYzLCAxLCAyMTUsIDE1NywgNjMsIDEsIDIxNSwgMTQ1LCA2MywgMSwgMjQ4LCAxNDMsIDYzLCAKLSAgICAxLCAyNDgsIDEyNywgNjMsIDEsIDIyOCwgMTE1LCA2MywgMSwgMjE3LCAxMDYsIDYzLCAxLCAyMTYsIDIwOSwgNjMsIDEsIAotICAgIDI0OCwgMjI5LCA2MywgMSwgMjQ4LCAzMywgNjMsIDEsIDE5OCwgNjMsIDEsIDE5MSwgNjMsIDEsIDIyNSwgMTUwLCA2MywgMSwgCi0gICAgMjUyLCAxOTksIDYzLCAxLCAyNTIsIDI2LCA2MywgMSwgMTg2LCA2MywgMSwgMjE1LCAxODQsIDYzLCAxLCAyMTUsIDE3NiwgCi0gICAgNjMsIDEsIDI0NiwgNDYsIDYzLCAxLCAyNDYsIDQxLCA2MywgMSwgMjEyLCA2NSwgNjMsIDEsIDIxMCwgODIsIDYzLCAxLCAKLSAgICAyMTAsIDExNiwgNjMsIDEsIDI1NSwgMTc1LCA2MywgMSwgMTkyLCA2MywgMSwgMjA1LCA2MywgMSwgMjMzLCAxNDEsIDYzLCAKLSAgICAxLCAyMjAsIDEwNCwgNjMsIDEsIDIxOCwgMjI1LCA2MywgMSwgMjA2LCA2MywgMSwgMTYyLCA2MywgMSwgNjEsIDYzLCAxLCAKLSAgICAyMzMsIDIzNywgNjMsIDEsIDI0NCwgODUsIDIwNSwgNjMsIDEsIDIzNCwgNTIsIDYzLCAxLCAyMjIsIDE4MSwgNjMsIDI1LCAKLSAgICA1LCAyNTUsIDgyLCA2MywgMjUsIDUsIDc0LCA2MywgMjUsIDUsIDIzNiwgNDAsIDYzLCAyNSwgNSwgNjksIDYzLCAyNSwgNSwgCi0gICAgMjE0LCAxMTgsIDYzLCAyNSwgNSwgMTQ5LCAxNTMsIDYzLCAyNSwgNSwgMTQ5LCAyMjIsIDE4MiwgNjMsIDI1LCA1LCAxNDksIAotICAgIDE1NiwgNjMsIDI1LCA1LCAxNDksIDIzMiwgMTkxLCA2MywgMjUsIDUsIDc2LCA2MywgMjUsIDUsIDI0NSwgMjE3LCA2MywgCi0gICAgMjUsIDUsIDc4LCA2MywgMjUsIDUsIDIyNiwgMTg3LCA2MywgNSwgMjIyLCAyMjQsIDIxOCwgODUsIDIyOSwgODMsIDIyMiwgCi0gICAgMjEzLCA2MywgNSwgMjIyLCAyMTgsIDI1MiwgODQsIDYzLCAyNSwgNSwgMjIzLCA1MiwgNzQsIDYzLCAyNSwgNSwgMjIzLCAKLSAgICA1MiwgMjM2LCA0MCwgNjMsIDUsIDIyNywgMTUzLCAyMTAsIDI2LCAyMjksIDIzMSwgMjQ4LCAyMjksIDYzLCA1LCAyMTksIAotICAgIDczLCAyMzMsIDY2LCA2MywgMTY0LCAyNDIsIDM2LCA2MywgMTY0LCAyMjYsIDYxLCA2MywgNSwgMjMzLCA2OSwgMjIyLCAKLSAgICAxNDUsIDYzLCA1LCAyMTEsIDcwLCAyMjIsIDE0NSwgNjMsIDUsIDIzMywgNzAsIDIxNSwgMTg1LCAyNTEsIDE1LCA2MywgNSwgCi0gICAgMjMxLCAxMDAsIDI1MSwgMTUsIDYzLCA1LCAyNDIsIDEyNiwgMjUxLCAxNiwgMjIzLCA0MywgNjMsIDUsIDI0MiwgMTI2LCAKLSAgICAyMzEsIDkwLCAyMjMsIDQzLCA2MywgNSwgMjM1LCAyMDAsIDIzMSwgMTAwLCAyNTEsIDE1LCA2MywgMjE4LCA3NCwgNSwgCi0gICAgMjMzLCA3MCwgMjE1LCAxODUsIDI1MSwgMTUsIDYzLCAyMTgsIDc0LCA1LCAyMzEsIDEwMCwgMjUxLCAxNSwgNjMsIDIxOCwgCi0gICAgNzQsIDUsIDIzNSwgMjAwLCAyMzEsIDEwMCwgMjUxLCAxNSwgNjMsIDIxOCwgNzQsIDEsIDE3NiwgNjMsIDIxOCwgNzQsIDEsIAotICAgIDIzNCwgMTM4LCA2MywgMjE4LCA3NCwgMSwgMjQzLCAxNDIsIDYzLCAyMTgsIDc0LCAxLCAyNDMsIDAsIDYzLCAyMTgsIDc0LCAKLSAgICAxLCAyMjksIDgyLCA2MywgMjE4LCA3NCwgMSwgMjUxLCA0MSwgNjMsIDIxOCwgNzQsIDEsIDI1MCwgMTY1LCA2MywgMjE4LCAKLSAgICA3NCwgMSwgMjM1LCAxNDcsIDYzLCAyMTgsIDc0LCAxLCAyMjcsIDE2OSwgNjMsIDIxOCwgNzQsIDEsIDIxNSwgMTU3LCA2MywgCi0gICAgMjE4LCA3NCwgMSwgMjE1LCAxNDUsIDYzLCAyMTgsIDc0LCAxLCAyNDgsIDE0MywgNjMsIDIxOCwgNzQsIDEsIDI0OCwgMTI3LCAKLSAgICA2MywgMjE4LCA3NCwgMSwgMjI4LCAxMTUsIDYzLCAyMTgsIDc0LCAxLCAyMTcsIDEwNiwgNjMsIDIxOCwgNzQsIDEsIDIxNiwgCi0gICAgMjA5LCA2MywgMjE4LCA3NCwgMSwgMjQ4LCAyMjksIDYzLCAyMTgsIDc0LCAxLCAyNDgsIDMzLCA2MywgMjE4LCA3NCwgMSwgCi0gICAgMTk4LCA2MywgMjE4LCA3NCwgMSwgMTkxLCA2MywgMjE4LCA3NCwgMSwgMjI1LCAxNTAsIDYzLCAyMTgsIDc0LCAxLCAyNTIsIAotICAgIDE5OSwgNjMsIDIxOCwgNzQsIDEsIDI1MiwgMjYsIDYzLCAyMTgsIDc0LCAxLCAxODYsIDYzLCAyMTgsIDc0LCAxLCAyMTUsIAotICAgIDE4NCwgNjMsIDIxOCwgNzQsIDEsIDIxNSwgMTc2LCA2MywgMjE4LCA3NCwgMSwgMjQ2LCA0NiwgNjMsIDIxOCwgNzQsIDEsIAotICAgIDI0NiwgNDEsIDYzLCAyMTgsIDc0LCAxLCAyMTIsIDY1LCA2MywgMjE4LCA3NCwgMSwgMjEwLCA4MiwgNjMsIDIxOCwgNzQsIAotICAgIDEsIDIxMCwgMTE2LCA2MywgMjE4LCA3NCwgMSwgMjU1LCAxNzUsIDYzLCAyMTgsIDc0LCAxLCAxOTIsIDYzLCAyMTgsIDc0LCAKLSAgICAxLCAyMDUsIDYzLCAyMTgsIDc0LCAxLCAyMzMsIDE0MSwgNjMsIDIxOCwgNzQsIDEsIDIyMCwgMTA0LCA2MywgMjE4LCA3NCwgCi0gICAgMSwgMjE4LCAyMjUsIDYzLCAyMTgsIDc0LCAxLCAyMDYsIDYzLCAyMTgsIDc0LCAxLCAxNjIsIDYzLCAyMTgsIDc0LCAxLCAKLSAgICA2MSwgNjMsIDIxOCwgNzQsIDEsIDIzMywgMjM3LCA2MywgMjE4LCA3NCwgMSwgMjQ0LCA4NSwgMjEyLCA2NSwgNjMsIDIxOCwgCi0gICAgNzQsIDEsIDI0NCwgODUsIDE5MiwgNjMsIDIxOCwgNzQsIDEsIDI0NCwgODUsIDIwNSwgNjMsIDIzMywgMjI0LCAyMjIsIAotICAgIDE0MywgMjM0LCAxMzgsIDYzLCAyMzMsIDIyNCwgMjIyLCAxNDMsIDIzNCwgMTM5LCAyNTEsIDc3LCAyMzAsIDIwNywgMjUxLCAKLSAgICAxNSwgNjMsIDI1MSwgNCwgNSwgMTE0LCAyNTIsIDc4LCA2MywgMjUxLCA0LCA1LCAxOTMsIDI1MiwgNzgsIDYzLCAyNTEsIDQsIAotICAgIDUsIDI1MSwgNSwgMjE3LCAyMSwgNjMsIDI1MSwgNCwgNSwgMjIxLCAyMDksIDI1NSwgMTc0LCA2MywgMTYsIDI0NiwgOTksIAotICAgIDI1MSwgMTMzLCA2MywgMTYsIDIyMywgMTMyLCAyMjIsIDIyNSwgNjMsIDE2LCAyMjYsIDgxLCAyNDMsIDcwLCA2MywgMTYsIAotICAgIDIyMywgMTMyLCAyMjIsIDIyNiwgMjIzLCA0NSwgMjQyLCAxNTIsIDYzLCAxNiwgMjI1LCAxMTUsIDE5MSwgNjMsIDE2LCAKLSAgICAyMjgsIDY0LCAyNTEsIDEzMywgNjMsIDE2LCAyMjgsIDY0LCAyNTEsIDEzNCwgMjI3LCAxNDMsIDI1NSwgMTcxLCA2MywgMTYsIAotICAgIDIyOCwgNjQsIDI1MSwgMTM0LCAyNDIsIDEyNCwgMjU1LCAxNzEsIDYzLCAxNiwgMjI4LCA2NCwgMjUxLCAxMzQsIDI1MSwgCi0gICAgNzcsIDI1NSwgMTcxLCA2MywgNSwgMjIzLCAxMzMsIDIyOSwgMjI0LCAyMjMsIDEzMywgMjQ3LCAxNjYsIDYzLCA1LCAyMjMsIAotICAgIDEzMywgMjI5LCAyMjQsIDI0MiwgMTIzLCA2MywgMTY0LCAyNTEsIDEzNywgMjIwLCA1LCAyNDIsIDIyMiwgMjMwLCAyNTMsIAotICAgIDIyMywgNDQsIDYzLCAxNjQsIDIzMCwgMTY4LCAyMTEsIDAsIDI0MiwgMjIyLCAyMzAsIDI1MywgMjIzLCA0NCwgNjMsIDE2NCwgCi0gICAgMjI3LCAxNDMsIDIxNSwgMTczLCA2MywgMTY0LCA2NSwgMjUxLCAxNjAsIDIyMiwgMjE1LCAyMTEsIDAsIDIzMCwgMjUzLCAKLSAgICAyMzEsIDk4LCAxODYsIDYzLCAxNjQsIDI1MCwgNCwgMjUxLCAxNjAsIDIyMiwgMjE1LCAyMTEsIDAsIDIzMCwgMjUzLCAyMjAsIAotICAgIDExMSwgMTg2LCAyMjIsIDI1MywgMjE4LCAwLCA1MCwgMjMzLCA1MSwgMjE4LCAwLCA1MCwgMjIyLCAyNTMsIDIxOCwgMCwgNSwgCi0gICAgMiwgMjQ3LCAxMjYsIDIzMywgNTEsIDIxOCwgMCwgNSwgMiwgMjQ3LCAxMjYsIDYzLCAxNjQsIDIzMywgNjEsIDIzMSwgMTAxLCAKLSAgICAyMjIsIDE0NSwgNjMsIDE2NCwgMjE1LCAyNTEsIDIzMSwgMTAxLCAyMjIsIDE0NSwgNjgsIDEsIDE3NiwgNjgsIDEsIDIzNCwgCi0gICAgMTM4LCA2OCwgMSwgMjQzLCAxNDIsIDY4LCAxLCAyNDMsIDAsIDY4LCAxLCAyMjksIDgyLCA2OCwgMSwgMjUxLCA0MSwgNjgsIAotICAgIDEsIDI1MCwgMTY1LCA2OCwgMSwgMjM1LCAxNDcsIDY4LCAxLCAyMzUsIDEyMCwgNjgsIDEsIDIyNywgMTY5LCA2OCwgMSwgCi0gICAgMjI4LCA4MSwgNjgsIDEsIDIxNSwgMTU3LCA2OCwgMSwgMjE1LCAxNDUsIDY4LCAxLCAyNDgsIDE0MywgNjgsIDEsIDI0OCwgCi0gICAgMTI3LCA2OCwgMSwgMjI4LCAxMTUsIDY4LCAxLCAyMTcsIDEwNiwgNjgsIDEsIDIxNiwgMjA5LCA2OCwgMSwgMjQ4LCAyMjksIAotICAgIDY4LCAxLCAyNDgsIDMzLCA2OCwgMSwgMTk4LCA2OCwgMSwgMTkxLCA2OCwgMSwgMjI1LCAxNTAsIDY4LCAxLCAyNTIsIDE5OSwgCi0gICAgNjgsIDEsIDI1MiwgMjYsIDY4LCAxLCAxODYsIDY4LCAxLCAxOTIsIDY4LCAxLCAyMDUsIDY4LCAxLCAyMzMsIDE0MSwgNjgsIAotICAgIDEsIDIxMiwgNjUsIDY4LCAxLCAyMDYsIDY4LCAxLCAxNjIsIDY4LCAxLCAyMzIsIDE5MCwgNjgsIDEsIDYxLCA2OCwgMSwgCi0gICAgMjIwLCA4OCwgNjEsIDY4LCAxLCA3NCwgNjgsIDEsIDIzNiwgNDAsIDY4LCAxLCA2OSwgNjgsIDEsIDIxNCwgMTE4LCA2OCwgCi0gICAgMSwgNzYsIDY4LCAxLCAyMzAsIDE1NiwgNzYsIDY4LCAxLCA3OCwgNjgsIDEsIDI1MywgMjAwLCA2OCwgMjUsIDUsIDIxNywgCi0gICAgNjUsIDI1NSwgODIsIDY4LCAyNSwgNSwgMjU1LCA4MiwgNjgsIDI1LCA1LCA3NCwgNjgsIDI1LCA1LCAyMzYsIDQwLCA2OCwgCi0gICAgMjUsIDUsIDY5LCA2OCwgMjUsIDUsIDIxNCwgMTE4LCA2OCwgMjUsIDUsIDc2LCA2OCwgMjUsIDUsIDI1NCwgMjEwLCA2OCwgCi0gICAgMjUsIDUsIDIzMCwgMTU2LCAyMzYsIDQwLCA2OCwgMjUsIDUsIDIzMCwgMTU2LCA3OCwgNjgsIDI1LCA1LCAxNjAsIDQ4LCAKLSAgICA2OCwgNSwgMjU0LCA4MywgNjgsIDUsIDU5LCA1MSwgNjgsIDUsIDIxMywgMTQ3LCA2OCwgNSwgMjEzLCAxNTIsIDY4LCA1LCAKLSAgICAyNTMsIDI0MywgNjgsIDExNywgNSwgMTQ3LCAxOTIsIDY4LCAxMTcsIDUsIDE0NywgMjA1LCA2OCwgMTE3LCA1LCAxNDcsIAotICAgIDIxMiwgNjUsIDY4LCAxMTcsIDUsIDE0NywgMTYyLCA2OCwgMSwgMjQyLCAxMzksIDIwNiwgNjgsIDIxLCAyMTAsIDg2LCA2OCwgCi0gICAgMjEsIDExMSwgNjgsIDIxLCAxMDUsIDY4LCAyMSwgMTU4LCA2OCwgMjEsIDE2MSwgNjgsIDIxLCAxOTAsIDY4LCAyMSwgMTk1LCAKLSAgICA2OCwgMjEsIDE5OSwgNjgsIDIxLCAxOTYsIDY4LCAyMSwgMjAxLCA2OCwgNSwgMjMyLCAxOTgsIDIyMSwgMTc0LCA2OCwgNSwgCi0gICAgMjIxLCAxNzQsIDY4LCAxNiwgMjMyLCAxNTksIDY4LCAxNiwgMjQ5LCAyMjEsIDY4LCAxNiwgMjU0LCAyMjksIDY4LCAxNiwgCi0gICAgMjQzLCA1NSwgNjgsIDEsIDIyMCwgMTA0LCA2OCwgMSwgMjE4LCAyMjUsIDY4LCAxLCAxNDksIDE1MywgNjgsIDEsIDE0OSwgCi0gICAgMjIyLCAxODIsIDY4LCAxLCAxNDksIDE1NiwgNjgsIDEsIDE0OSwgMjMyLCAxOTEsIDY4LCAyNSwgNSwgMTQ5LCAxNTMsIDY4LCAKLSAgICAyNSwgNSwgMTQ5LCAyMjIsIDE4MiwgNjgsIDI1LCA1LCAxNDksIDE1NiwgNjgsIDI1LCA1LCAxNDksIDIzMiwgMTkxLCA2OCwgCi0gICAgMSwgMjMwLCAxNTYsIDIyOSwgODIsIDY4LCAxLCAyMzAsIDE1NiwgMjM1LCAxMjAsIDY4LCAxLCAyMzAsIDE1NiwgMjUyLCAKLSAgICAxMTksIDY4LCAxLCAyMzAsIDE1NiwgMjUyLCAxMTQsIDY4LCAxMTcsIDUsIDIzMCwgMTU2LCAxNDcsIDE5OCwgNjgsIDExNywgCi0gICAgNSwgMjMwLCAxNTYsIDE0NywgMTg2LCA2OCwgMTE3LCA1LCAyMzAsIDE1NiwgMTQ3LCAyMzMsIDE0MSwgNjgsIDEsIDIyMCwgCi0gICAgMTEwLCAyMzQsIDIxOSwgMjIwLCAxMDQsIDY4LCAyNSwgNSwgMjIwLCAxMTAsIDIzNCwgMjE5LCAyNDUsIDYzLCA2OCwgMTM4LCAKLSAgICAxNjQsIDIyMCwgMTEwLCAyMzQsIDIxOSwgMjQxLCAyNTQsIDY4LCAxMzgsIDE2NCwgMjIwLCAxMTAsIDIzNCwgMjE5LCAyMzQsIAotICAgIDE4OSwgMjI1LCAxMjQsIDY4LCAxLCAyMTIsIDcsIDIyNCwgMTExLCAyMzQsIDIxOSwgMjE2LCAyMDksIDY4LCAxLCAyMTIsIAotICAgIDcsIDIyNCwgMTExLCAyMzQsIDIxOSwgMjI0LCAxMTcsIDY4LCAyNSwgNSwgMjEyLCA3LCAyMjQsIDExMSwgMjM0LCAyMTksIAotICAgIDI0NSwgNjMsIDY4LCAyNSwgNSwgMjEyLCA3LCAyMjQsIDExMSwgMjM0LCAyMTksIDIxNCwgMjE0LCA2OCwgNSwgMjEyLCA3LCAKLSAgICAyMjQsIDExMSwgMjM0LCAyMTksIDIxNiwgMzAsIDY4LCA1LCAyMTIsIDcsIDIyNCwgMTExLCAyMzQsIDIxOSwgMjE2LCAyOSwgCi0gICAgNjgsIDUsIDIxMiwgNywgMjI0LCAxMTEsIDIzNCwgMjE5LCAyMTYsIDI4LCA2OCwgNSwgMjEyLCA3LCAyMjQsIDExMSwgMjM0LCAKLSAgICAyMTksIDIxNiwgMjcsIDY4LCA1LCAyMTIsIDcsIDIyNCwgMTExLCAyMzQsIDIxOSwgMjE2LCAyNiwgNjgsIDEsIDI0NSwgCi0gICAgMjI3LCAyMjQsIDExMSwgMjM0LCAyMTksIDIyOCwgMTE1LCA2OCwgMSwgMjQ1LCAyMjcsIDIyNCwgMTExLCAyMzQsIDIxOSwgCi0gICAgMjEwLCAxNzYsIDY4LCAxLCAyNDUsIDIyNywgMjI0LCAxMTEsIDIzNCwgMjE5LCAyNDIsIDIyNCwgNjgsIDI1LCA1LCAyNDMsIAotICAgIDY2LCAyMzQsIDIxOSwgNzQsIDY4LCAyNSwgNSwgMjM0LCAxOTQsIDIyNiwgMjM4LCA2OCwgMjUsIDUsIDIzNCwgMTk0LCA2OSwgCi0gICAgNjgsIDI1LCA1LCAyMzQsIDE5NCwgMjQ1LCAyMTcsIDY4LCAxLCAyMjAsIDg4LCAxNzYsIDY4LCAxLCAyMjAsIDg4LCAyMzQsIAotICAgIDEzOCwgNjgsIDEsIDIyMCwgODgsIDI0MywgMTQyLCA2OCwgMSwgMjIwLCA4OCwgMjUxLCA0MSwgNjgsIDEsIDIyMCwgODgsIAotICAgIDIxMCwgMTE2LCA2OCwgMSwgMjIwLCA4OCwgMjI3LCAxNjksIDY4LCAxLCAyMjAsIDg4LCAyNDgsIDIyOSwgNjgsIDEsIDIyMCwgCi0gICAgODgsIDE5OCwgNjgsIDEsIDIyMCwgODgsIDIyNSwgMTUwLCA2OCwgMSwgMjIwLCA4OCwgMjQ0LCAyMDQsIDY4LCAxLCAyMjAsIAotICAgIDg4LCAyNTIsIDE5OSwgNjgsIDEsIDIyMCwgODgsIDIxNiwgMjA5LCA2OCwgMSwgMjIwLCA4OCwgMTYyLCA2OCwgMTE3LCA1LCAKLSAgICAyMjAsIDg4LCAxNDcsIDIxMiwgNjUsIDY4LCAyNSwgNSwgMjIwLCA4OCwgMjU1LCA4MiwgNjgsIDI1LCA1LCAyMjAsIDg4LCAKLSAgICA3NiwgNjgsIDI1LCA1LCAyMjAsIDg4LCAxNjAsIDQ4LCA2OCwgMjUsIDUsIDIyMCwgODgsIDQwLCAyMTEsIDExNywgNjgsIDUsIAotICAgIDIyMCwgODgsIDIxNiwgMjksIDY4LCA1LCAyMjAsIDg4LCAyMTYsIDI4LCA2OCwgNSwgMjIwLCA4OCwgMjE2LCAyNiwgNjgsIAotICAgIDUsIDIyMCwgODgsIDIxNiwgMjUsIDY4LCA1LCAyMjAsIDg4LCAyNDksIDE2MCwgMjE2LCAyOSwgNjgsIDUsIDIyMCwgODgsIAotICAgIDI0OSwgMTYwLCAyMTYsIDI4LCA2OCwgNSwgMjIwLCA4OCwgMjQ5LCAxNjAsIDI0NSwgMTYxLCAyMTYsIDMxLCA2OCwgMSwgCi0gICAgMjIyLCAxMzAsIDIyNiwgNjcsIDI0NCwgMjA0LCA2OCwgNSwgMjIyLCAxMzAsIDIyNiwgNjcsIDIxNiwgMjYsIDY4LCAyMjAsIAotICAgIDg4LCAyMSwgMjEwLCA4NiwgNjgsIDIyMCwgODgsIDIxLCAxMTEsIDY4LCAyMjAsIDg4LCAyMSwgMTA1LCA2OCwgMjIwLCA4OCwgCi0gICAgMjEsIDE1OCwgNjgsIDIyMCwgODgsIDIxLCAxNjEsIDY4LCAyMjAsIDg4LCAyMSwgMTkwLCA2OCwgMjIwLCA4OCwgMjEsIAotICAgIDE5NSwgNjgsIDIyMCwgODgsIDIxLCAxOTksIDY4LCAyMjAsIDg4LCAyMSwgMTk2LCA2OCwgMjIwLCA4OCwgMjEsIDIwMSwgCi0gICAgNjgsIDUsIDIzNCwgMTMyLCAyMTYsIDMwLCA2OCwgNSwgMjM0LCAxMzIsIDIxNiwgMjgsIDY4LCAyNSwgNSwgMjU0LCAxOTksIAotICAgIDYxLCA2OCwgMjUsIDUsIDI1NCwgMTk5LCAyNTQsIDIxMCwgNjgsIDE2LCAyMjAsIDg4LCAxMTEsIDY4LCAxNiwgMjIwLCA4OCwgCi0gICAgMjQ1LCAzOCwgOTgsIDYsIDEsIDI1NCwgMTMxLCA5OCwgNiwgMSwgMjUyLCAxNjAsIDk4LCA2LCAxLCAyNDMsIDExMywgOTgsIAotICAgIDYsIDEsIDI0NywgMTM2LCA5OCwgNiwgMSwgMjQ1LCAxNTgsIDk4LCA2LCAxLCAyMTMsIDE2MCwgOTgsIDYsIDEsIDIxMCwgCi0gICAgODksIDk4LCA2LCAxLCAyMTcsIDYxLCA5OCwgNiwgMSwgMjM2LCA2LCA5OCwgNiwgMSwgMjM0LCAyNDAsIDk4LCA2LCAxLCAKLSAgICAyMzMsIDg3LCA5OCwgNiwgMSwgMjMxLCAxOTAsIDk4LCA2LCAxLCAyMjksIDIwMCwgOTgsIDYsIDEsIDIyNiwgMjAwLCA5OCwgCi0gICAgNiwgMSwgMjI2LCAyMSwgOTgsIDYsIDEsIDIxMCwgNzgsIDk4LCA2LCAxLCAyMjMsIDE3NCwgOTgsIDYsIDEsIDIyMSwgMjQ1LCAKLSAgICA5OCwgNiwgMSwgMjE3LCA1MSwgOTgsIDYsIDEsIDIxNCwgMTkwLCA5OCwgNiwgMSwgMjI1LCAxNDMsIDk4LCA2LCAxLCAyMzQsIAotICAgIDEyNywgOTgsIDYsIDEsIDI0MiwgMjQ4LCA5OCwgNiwgMSwgMjI0LCA3NiwgOTgsIDYsIDEsIDIyMCwgMjIsIDk4LCA2LCAxLCAKLSAgICAyNTAsIDEwNSwgOTgsIDYsIDEsIDI1MSwgMTUsIDk4LCA2LCAxLCAyMzUsIDEwNiwgOTgsIDYsIDEsIDI1MCwgNDgsIDk4LCAKLSAgICA2LCAxLCAyNTAsIDE1MSwgOTgsIDYsIDEsIDIxMSwgMTYzLCA5OCwgNiwgMSwgMjM1LCAxMTcsIDk4LCA2LCAxLCAyNDIsIAotICAgIDUwLCA5OCwgNiwgMSwgMjQxLCAyNDUsIDk4LCA2LCAxLCAyNDEsIDE4MiwgOTgsIDYsIDEsIDIxMiwgMjIsIDk4LCA2LCAxLCAKLSAgICAyNDIsIDExLCA5OCwgNiwgMSwgMjQxLCA3MiwgOTgsIDYsIDEsIDIxMCwgMjQ2LCA5OCwgNiwgMSwgMjU0LCAyNDEsIDk4LCAKLSAgICAxLCAyNTQsIDEzMSwgOTgsIDEsIDI1MiwgMTYwLCA5OCwgMSwgMjQzLCAxMTMsIDk4LCAxLCAyNDcsIDEzNiwgOTgsIDEsIAotICAgIDI0NSwgMTU4LCA5OCwgMSwgMjEzLCAxNjAsIDk4LCAxLCAyMTAsIDg5LCA5OCwgMSwgMjE3LCA2MSwgOTgsIDEsIDIzNiwgNiwgCi0gICAgOTgsIDEsIDIzNCwgMjQwLCA5OCwgMSwgMjMzLCA4NywgOTgsIDEsIDIzMSwgMTkwLCA5OCwgMSwgMjI5LCAyMDAsIDk4LCAxLCAKLSAgICAyMjYsIDIwMCwgOTgsIDEsIDIyNiwgMjEsIDk4LCAxLCAyMTAsIDc4LCA5OCwgMSwgMjIzLCAxNzQsIDk4LCAxLCAyMjEsIAotICAgIDI0NSwgOTgsIDEsIDIxNywgNTEsIDk4LCAxLCAyMTQsIDE5MCwgOTgsIDEsIDIyNSwgMTQzLCA5OCwgMSwgMjM0LCAxMjcsIAotICAgIDk4LCAxLCAyNDIsIDI0OCwgOTgsIDEsIDIyNCwgNzYsIDk4LCAxLCAyMjAsIDIyLCA5OCwgMSwgMjUwLCAxMDUsIDk4LCAxLCAKLSAgICAyNTEsIDE1LCA5OCwgMSwgMjM1LCAxMDYsIDk4LCAxLCAyNTAsIDQ4LCA5OCwgMSwgMjUwLCAxNTEsIDk4LCAxLCAyMTEsIAotICAgIDE2MywgOTgsIDEsIDIzNSwgMTE3LCA5OCwgMSwgMjQyLCA1MCwgOTgsIDEsIDI0MSwgMjQ1LCA5OCwgMSwgMjQxLCAxODIsIAotICAgIDk4LCAxLCAyMTIsIDIyLCA5OCwgMSwgMjQyLCAxMSwgOTgsIDEsIDI0MSwgNzIsIDk4LCAxLCAyNDQsIDEyOSwgOTgsIDEsIAotICAgIDIxMCwgMjQ2LCA5OCwgMSwgMjQ1LCAxNzMsIDk4LCAxLCAyMTUsIDk0LCAyNDMsIDExMywgOTgsIDEsIDI1NCwgMjA1LCA5OCwgCi0gICAgMjI2LCAxOSwgMjIwLCAxMzksIDU4LCAxLCA5OCwgMjI5LCAyMDAsIDk4LCAxLCAyNTQsIDI0MSwgOTgsIDEsIDI0MiwgMTAsIAotICAgIDUwLCA5OCwgMSwgMjMzLCAxMzMsIDUwLCAyNCwgMTAwLCAyMzQsIDY0LCAyNCwgMTAwLCAyMTgsIDIxNywgMjQsIDEwMCwgCi0gICAgMjI4LCAyMzEsIDI0LCAxMDAsIDIxNiwgMTAyLCAyNCwgMTAwLCAyMTgsIDIwNiwgMjQsIDEwMCwgMjIzLCAyOSwgMjQsIAotICAgIDEwMCwgMjMwLCAyMjIsIDI0LCAxMDAsIDIyNSwgOTgsIDI0LCAxMDAsIDIxOCwgMjE0LCAyNCwgMTAwLCAyMTksIDE1MCwgCi0gICAgMjQsIDEwMCwgMjE4LCAyMTEsIDI0LCAxMDAsIDIzNiwgNjMsIDI0LCAxMDAsIDI1MCwgNTQsIDI0LCAxMDAsIDIxOCwgMjIxLCAKLSAgICAyNCwgMTAwLCAyNTAsIDExNCwgMjQsIDEwMCwgMjM0LCAxMTYsIDI0LCAxMDAsIDIxNiwgMTc0LCAyNCwgMTAwLCAyMjUsIAotICAgIDEzNCwgMjQsIDEwMCwgMjQxLCAxNzksIDI0LCAxMDAsIDIyOCwgMjI3LCAyNCwgMTAwLCAyMTgsIDIxNSwgMjQsIDEwMCwgCi0gICAgMjI4LCAyMjEsIDI0LCAxMDAsIDIyOCwgMjI1LCAyNCwgMTAwLCAyMTYsIDk5LCAyNCwgMTAwLCAyMjMsIDE3LCAyNCwgMTAwLCAKLSAgICAyMTgsIDIxMywgMjQsIDEwMCwgMjIzLCAyNywgMjQsIDEwMCwgMjM0LCAyMjQsIDI0LCAxMDAsIDIzMCwgMjE1LCAyNCwgCi0gICAgMTAwLCAyMzQsIDIyNywgMjQsIDEwMCwgMjI1LCA5MywgMjQsIDEwMCwgMjI1LCA5MSwgMjQsIDEwMCwgMjI1LCA3OSwgMjQsIAotICAgIDEwMCwgMjI1LCA4NywgMjQsIDEwMCwgMjI1LCA4NSwgMjQsIDEwMCwgMjI1LCA4MiwgMjQsIDEwMCwgMjI1LCA4NCwgMjQsIAotICAgIDEwMCwgMjI1LCA4MSwgMjQsIDEwMCwgMjI1LCA4NiwgMjQsIDEwMCwgMjI1LCA5NiwgMjQsIDEwMCwgMjI1LCA5NywgMjQsIAotICAgIDEwMCwgMjI1LCA4MCwgMjQsIDEwMCwgMjI1LCA5MCwgMjQsIDEwMCwgMjM0LCAyMjUsIDI0LCAxMDAsIDIzNCwgMjIzLCAyNCwgCi0gICAgMTAwLCAyMTksIDE0MywgMjQsIDEwMCwgMjE5LCAxNDEsIDI0LCAxMDAsIDIxOSwgMTMzLCAyNCwgMTAwLCAyMTksIDEzNiwgCi0gICAgMjQsIDEwMCwgMjE5LCAxNDIsIDI0LCAxMDAsIDIxOSwgMTM4LCAyNCwgMTAwLCAyMTksIDEzNywgMjQsIDEwMCwgMjE5LCAKLSAgICAxMzUsIDI0LCAxMDAsIDIxOSwgMTQ2LCAyNCwgMTAwLCAyMTksIDE0OCwgMjQsIDEwMCwgMjE5LCAxNDksIDI0LCAxMDAsIAotICAgIDIxOSwgMTQ0LCAyNCwgMTAwLCAyMTksIDEzNCwgMjQsIDEwMCwgMjE5LCAxMzksIDI0LCAxMDAsIDIxOSwgMTQ3LCAyNCwgCi0gICAgMTAwLCAyNTAsIDk4LCAyNCwgMTAwLCAyNTAsIDk2LCAyNCwgMTAwLCAyNTAsIDE3NiwgMjQsIDEwMCwgMjUwLCAxNzQsIDI0LCAKLSAgICAxMDAsIDIyNiwgMzYsIDI0LCAxMDAsIDIzNiwgNTgsIDI0LCAxMDAsIDIzNiwgNDksIDI0LCAxMDAsIDIzNiwgNTcsIDI0LCAKLSAgICAxMDAsIDIzNiwgNTQsIDI0LCAxMDAsIDIzNiwgNTIsIDI0LCAxMDAsIDIzNiwgNTYsIDI0LCAxMDAsIDIxOCwgMjE4LCAyNCwgCi0gICAgMTAwLCAyMzYsIDYxLCAyNCwgMTAwLCAyMzYsIDYyLCAyNCwgMTAwLCAyMzYsIDUwLCAyNCwgMTAwLCAyMzYsIDU1LCAyNCwgCi0gICAgMTAwLCAyMTEsIDI2LCAyNCwgMTAwLCAyNTAsIDUzLCAyNCwgMTAwLCAyNTAsIDk5LCAyNCwgMTAwLCAyNTAsIDk3LCAyNCwgCi0gICAgMTAwLCAyNTAsIDE3NywgMjQsIDEwMCwgMjUwLCAxNzUsIDI0LCAxMDAsIDI1MCwgMTEyLCAyNCwgMTAwLCAyNTAsIDExMywgCi0gICAgMjQsIDEwMCwgMjUwLCAxMDAsIDI0LCAxMDAsIDI1MCwgMTc4LCAyNCwgMTAwLCAyMjUsIDEzMiwgMjQsIDEwMCwgMjM0LCAKLSAgICAyMjYsIDI0LCAxMDAsIDIxOCwgMjE5LCAyNCwgMTAwLCAyMTEsIDMyLCAyNCwgMTAwLCAyMzQsIDU1LCAyNCwgMTAwLCAyMjgsIAotICAgIDIyMywgMjQsIDEwMCwgMjI4LCAyMjksIDI0LCAxMDAsIDIyOCwgMjI4LCAyNCwgMTAwLCAyMTYsIDk2LCAyNCwgMTAwLCAKLSAgICAyNDQsIDExMSwgMjQsIDE0MywgMjQ0LCAxMTEsIDI0LCAxNDMsIDYxLCAyNCwgMTQzLCAyNTQsIDI1MiwgMjQsIDE0MywgCi0gICAgMTkyLCAyNCwgMTQzLCAyMTEsIDkyLCAyNCwgMTQzLCAyNDUsIDEyNSwgMjQsIDE0MywgNzYsIDI0LCAxNDMsIDIxMSwgMzYsIAotICAgIDI0LCAxNDMsIDIxMSwgNDcsIDI0LCAxNDMsIDc4LCAyNCwgMTQzLCAyMTIsIDY1LCAyNCwgMTQzLCAyMTIsIDYyLCAyNCwgCi0gICAgMTQzLCAyMjYsIDIzOCwgMjQsIDE0MywgMjEwLCAyNDQsIDI0LCAxNDMsIDY5LCAyNCwgMTQzLCAyMTIsIDExLCAyNCwgMTQzLCAKLSAgICAyMTIsIDIyLCAyNCwgMTQzLCAyMTEsIDI1MCwgMjQsIDE0MywgMjEwLCAyMTIsIDI0LCAxNDMsIDI0NSwgNjMsIDI0LCAxNDMsIAotICAgIDIxMSwgOCwgMjQsIDE0MywgNzQsIDI0LCAxNDMsIDI1NSwgMTY2LCAyNCwgMTQzLCAyNTUsIDE2NSwgMjQsIDE0MywgMjExLCAKLSAgICAxMDYsIDI0LCAxNDMsIDIxMSwgMTA0LCAyNCwgMTQzLCAyNDUsIDEyMywgMjQsIDE0MywgMjQ1LCAxMjIsIDI0LCAxNDMsIAotICAgIDI0NSwgMTI0LCAyNCwgMTQzLCAyMTEsIDM1LCAyNCwgMTQzLCAyMTEsIDM0LCAyNCwgMTQzLCAyMjcsIDg4LCAyNCwgMTQzLCAKLSAgICAyMjcsIDg5LCAyNCwgMTQzLCAyMjcsIDgyLCAyNCwgMTQzLCAyMjcsIDg3LCAyNCwgMTQzLCAyMjcsIDg1LCAyNCwgMTQzLCAKLSAgICAyMTAsIDIzOCwgMjQsIDE0MywgMjEwLCAyMzcsIDI0LCAxNDMsIDIxMCwgMjM2LCAyNCwgMTQzLCAyMTAsIDIzOSwgMjQsIAotICAgIDE0MywgMjEwLCAyNDAsIDI0LCAxNDMsIDIxNSwgMzAsIDI0LCAxNDMsIDIxNSwgMjksIDI0LCAxNDMsIDIxNSwgMjcsIDI0LCAKLSAgICAxNDMsIDIxNSwgMjQsIDI0LCAxNDMsIDIxNSwgMjUsIDI0LCAxNDMsIDIxMCwgMjExLCAyNCwgMTQzLCAyMTAsIDIwOCwgMjQsIAotICAgIDE0MywgMjEwLCAyMDksIDI0LCAxNDMsIDIxMCwgMjAzLCAyNCwgMTQzLCAyMTAsIDIwNCwgMjQsIDE0MywgMjEwLCAyMDUsIAotICAgIDI0LCAxNDMsIDIxMCwgMjA3LCAyNCwgMTQzLCAyNDUsIDU3LCAyNCwgMTQzLCAyNDUsIDU5LCAyNCwgMTQzLCAyMTEsIDcsIAotICAgIDI0LCAxNDMsIDI0MCwgMTYwLCAyNCwgMTQzLCAyNDAsIDE1MiwgMjQsIDE0MywgMjQwLCAxNTUsIDI0LCAxNDMsIDI0MCwgCi0gICAgMTUzLCAyNCwgMTQzLCAyNDAsIDE1NywgMjQsIDE0MywgMjQwLCAxNTksIDI0LCAxNDMsIDI1NCwgNDIsIDI0LCAxNDMsIAotICAgIDI1NCwgMzksIDI0LCAxNDMsIDI1NCwgMzcsIDI0LCAxNDMsIDI1NCwgMzgsIDI0LCAxNDMsIDIxOCwgMjIyLCAyNCwgMTQzLCAKLSAgICAyNTUsIDE2NywgMjQsIDE0MywgMjExLCAxMDUsIDI0LCAxNDMsIDIxMSwgMzMsIDI0LCAxNDMsIDIyNywgODQsIDI0LCAxNDMsIAotICAgIDIyNywgODMsIDI0LCA5MCwgMjM0LCA2NCwgMjQsIDkwLCAyMTgsIDIxNywgMjQsIDkwLCAyMzQsIDU3LCAyNCwgOTAsIDIyOCwgCi0gICAgMjMxLCAyNCwgOTAsIDIyOCwgMjI5LCAyNCwgOTAsIDIyOCwgMjI4LCAyNCwgOTAsIDIxNiwgMTAyLCAyNCwgOTAsIDIyMywgCi0gICAgMjksIDI0LCA5MCwgMjIzLCAyNCwgMjQsIDkwLCAyMjMsIDIxLCAyNCwgOTAsIDIyMywgMTQsIDI0LCA5MCwgMjIzLCA5LCAKLSAgICAyNCwgOTAsIDIyMywgNCwgMjQsIDkwLCAyMjMsIDE1LCAyNCwgOTAsIDIyMywgMjcsIDI0LCA5MCwgMjMwLCAyMjIsIDI0LCAKLSAgICA5MCwgMjI1LCA5OCwgMjQsIDkwLCAyMjUsIDg3LCAyNCwgOTAsIDIxOSwgMTUwLCAyNCwgOTAsIDIxOCwgMjExLCAyNCwgOTAsIAotICAgIDIzNiwgNjMsIDI0LCA5MCwgMjUwLCA1NCwgMjQsIDkwLCAyNTAsIDExNCwgMjQsIDkwLCAyMzQsIDExNiwgMjQsIDkwLCAKLSAgICAyMTYsIDE3NCwgMjQsIDkwLCAyMjUsIDEzNCwgMjQsIDkwLCAyNDEsIDE3OSwgMjQsIDkwLCAyMzQsIDU4LCAyNCwgOTAsIAotICAgIDIzNCwgNTYsIDI0LCA5MCwgMjI4LCAyMjcsIDI0LCA5MCwgMjI4LCAyMjEsIDI0LCA5MCwgMjI4LCAyMjMsIDI0LCA5MCwgCi0gICAgMjI4LCAyMjYsIDI0LCA5MCwgMjI4LCAyMjIsIDI0LCA5MCwgMjE2LCA5OSwgMjQsIDkwLCAyMTYsIDk2LCAyNCwgOTAsIAotICAgIDIyMywgMjIsIDI0LCA5MCwgMjIzLCAxNywgMjQsIDkwLCAyMjMsIDMsIDI0LCA5MCwgMjIzLCAyLCAyNCwgOTAsIDIxOCwgCi0gICAgMjEzLCAyNCwgOTAsIDIyMywgMTksIDI0LCA5MCwgMjIzLCAxOCwgMjQsIDkwLCAyMjMsIDExLCAyNCwgOTAsIDIyMywgMTMsIAotICAgIDI0LCA5MCwgMjIzLCAyNiwgMjQsIDkwLCAyMjMsIDYsIDI0LCA5MCwgMjIzLCAxNiwgMjQsIDkwLCAyMjMsIDI1LCAyNCwgCi0gICAgOTAsIDIyMywgMSwgMjQsIDkwLCAyMzAsIDIxOCwgMjQsIDkwLCAyMzAsIDIxMywgMjQsIDkwLCAyMzAsIDIxNSwgMjQsIDkwLCAKLSAgICAyMzAsIDIxMiwgMjQsIDkwLCAyMzAsIDIxMCwgMjQsIDkwLCAyMzAsIDIxNiwgMjQsIDkwLCAyMzAsIDIyMSwgMjQsIDkwLCAKLSAgICAyMzAsIDIxOSwgMjQsIDkwLCAyMzQsIDIyNywgMjQsIDkwLCAyMjUsIDg5LCAyNCwgOTAsIDIyNSwgOTAsIDI0LCA5MCwgCi0gICAgMjI1LCA5NSwgMjQsIDkwLCAyMzQsIDIyNSwgMjQsIDkwLCAyMTksIDE0MywgMjQsIDkwLCAyMTksIDEzMywgMjQsIDkwLCAKLSAgICAyMTksIDEzNiwgMjQsIDkwLCAyMTksIDEzOCwgMjQsIDkwLCAyMjYsIDM2LCAyNCwgOTAsIDIzNiwgNTgsIDI0LCA5MCwgCi0gICAgMjM2LCA1MSwgMjQsIDkwLCAyMTgsIDIxOCwgMjQsIDkwLCAyMzYsIDU5LCAyNCwgOTAsIDIxMSwgMjYsIDI0LCA5MCwgMjExLCAKLSAgICAyMiwgMjQsIDkwLCAyMTEsIDIzLCAyNCwgOTAsIDIyNSwgMTMyLCAyNCwgOTAsIDIzNCwgMjI2LCAyNCwgOTAsIDI0MSwgCi0gICAgMTc3LCAyNCwgOTAsIDI0MSwgMTc1LCAyNCwgOTAsIDI0MSwgMTc4LCAyNCwgOTAsIDI0MSwgMTc2LCAyNCwgOTAsIDIxMSwgCi0gICAgMzIsIDI0LCA5MCwgMjM0LCA2MCwgMjQsIDkwLCAyMzQsIDU5LCAyNCwgOTAsIDIzNCwgNjMsIDI0LCA5MCwgMjM0LCA2MSwgCi0gICAgMjQsIDkwLCAyMzQsIDYyLCAyNCwgOTAsIDIxOCwgMjE1LCAyOSwgMywgMTYyLCAyOSwgMywgMjQwLCAyMjksIDI5LCAzLCAKLSAgICAyNDEsIDE4NywgMjksIDMsIDI0MiwgNTMsIDI5LCAzLCAyNDEsIDIyNywgMjksIDMsIDI0MSwgMjQ1LCAyOSwgMywgMjQxLCAKLSAgICA3NSwgMjksIDMsIDI0MSwgNzQsIDI5LCAzLCAyMzMsIDE0MSwgMjksIDMsIDIzMiwgMTAzLCAyOSwgMywgMjMyLCAyNDcsIAotICAgIDI5LCAzLCAyMzMsIDE0MCwgMjksIDMsIDIzMywgNTYsIDI5LCAzLCAyMzMsIDY0LCAyOSwgMywgMjMyLCAxNjIsIDI5LCAzLCAKLSAgICAyMzIsIDc1LCAyOSwgMywgMjQxLCAxOTYsIDI5LCAzLCAyNDEsIDE5MCwgMjksIDMsIDI0MSwgMTkyLCAyOSwgMywgMjQxLCAKLSAgICAxOTUsIDI5LCAzLCAyNDEsIDE5MywgMjksIDMsIDI0MSwgMTk0LCAyOSwgMywgMjQxLCAxOTEsIDI5LCAzLCAyNDEsIDE4OSwgCi0gICAgMjksIDMsIDE4NiwgMjksIDMsIDIzMCwgMTA3LCAyOSwgMywgMjMwLCAyMzUsIDI5LCAzLCAyMzEsIDI0MiwgMjksIDMsIAotICAgIDIzMSwgODUsIDI5LCAzLCAyMzEsIDk2LCAyOSwgMywgMjMwLCAxNjYsIDI5LCAzLCAyMzAsIDQ3LCAyOSwgMywgMjE3LCAKLSAgICAxNjQsIDI5LCAzLCAyMTcsIDE1OCwgMjksIDMsIDIxNywgMTYwLCAyOSwgMywgMjE3LCAxNjMsIDI5LCAzLCAyMTcsIDE2MSwgCi0gICAgMjksIDMsIDIxNywgMTYyLCAyOSwgMywgMjE3LCAxNTksIDI5LCAzLCAyMTcsIDE1NywgMjksIDMsIDIwNSwgMjksIDMsIAotICAgIDIyMiwgMTQyLCAyOSwgMywgMjIzLCAzOCwgMjksIDMsIDIyMywgMTg3LCAyOSwgMywgMjIzLCAxMTEsIDI5LCAzLCAyMjMsIAotICAgIDEzMSwgMjksIDMsIDIyMiwgMjEzLCAyOSwgMywgMjIyLCAxMTEsIDI5LCAzLCAyMDYsIDI5LCAzLCAyMTgsIDg0LCAyOSwgMywgCi0gICAgMjE5LCAxOTMsIDI5LCAzLCAyMjIsIDMzLCAyOSwgMywgMjIxLCAxNzIsIDI5LCAzLCAyMjEsIDE4MywgMjksIDMsIDIxOSwgCi0gICAgNjAsIDI5LCAzLCAyMTcsIDI1NCwgMjksIDMsIDIyMCwgMTA0LCAyOSwgMywgMjE5LCAyMjcsIDI5LCAzLCAyMjAsIDM0LCAKLSAgICAyOSwgMywgMjIwLCAxMDAsIDI5LCAzLCAyMjAsIDYzLCAyOSwgMywgMjIwLCA2NSwgMjksIDMsIDIyMCwgOSwgMjksIDMsIAotICAgIDIxOSwgMjEwLCAyOSwgMywgMjI0LCA5MSwgMjksIDMsIDIyNCwgMzMsIDI5LCAzLCAyMjQsIDU2LCAyOSwgMywgMjI0LCA5MCwgCi0gICAgMjksIDMsIDIyNCwgNzEsIDI5LCAzLCAyMjQsIDcyLCAyOSwgMywgMjI0LCA0NSwgMjksIDMsIDIyNCwgNDQsIDI5LCAzLCAKLSAgICAyMjMsIDI0NSwgMjksIDMsIDIyMywgMjQxLCAyOSwgMywgMjIzLCAyNDQsIDI5LCAzLCAyMjMsIDI0MiwgMjksIDMsIDIyMywgCi0gICAgMjQzLCAyOSwgMywgMjI0LCA2OCwgMjksIDMsIDIyNCwgNjIsIDI5LCAzLCAyMjQsIDY0LCAyOSwgMywgMjI0LCA2NywgMjksIAotICAgIDMsIDIyNCwgNjUsIDI5LCAzLCAyMjQsIDY2LCAyOSwgMywgMjI0LCA2MywgMjksIDMsIDIyNCwgNjEsIDI5LCAzLCAyMjQsIAotICAgIDU3LCAyOSwgMywgMjI0LCA2MCwgMjksIDMsIDIyNCwgNTgsIDI5LCAzLCAyMjQsIDU5LCAyOSwgMywgMjUyLCAxOTksIDI5LCAKLSAgICAzLCAyNTEsIDEzMywgMjksIDMsIDI1MiwgMTQsIDI5LCAzLCAyNTIsIDE5NywgMjksIDMsIDI1MiwgNzQsIDI5LCAzLCAyNTIsIAotICAgIDgzLCAyOSwgMywgMjUxLCAyMTMsIDI5LCAzLCAyNTEsIDkxLCAyOSwgMywgMjE0LCAyNywgMjksIDMsIDIxMiwgMTE2LCAyOSwgCi0gICAgMywgMjEzLCAxNzYsIDI5LCAzLCAyMTQsIDI2LCAyOSwgMywgMjEzLCAyNTAsIDI5LCAzLCAyMTMsIDI1NSwgMjksIDMsIAotICAgIDIxMywgMTM4LCAyOSwgMywgMjEyLCAxMDcsIDI5LCAzLCAyMTcsIDEwNiwgMjksIDMsIDIxNSwgMTE5LCAyOSwgMywgMjE2LCAKLSAgICAxMTgsIDI5LCAzLCAyMTcsIDEwMiwgMjksIDMsIDIxNywgMTIsIDI5LCAzLCAyMTcsIDIzLCAyOSwgMywgMTEyLCAyOSwgMywgCi0gICAgMjE1LCA4MCwgMjksIDMsIDI1MSwgNDEsIDI5LCAzLCAyNDksIDEyMCwgMjksIDMsIDI1MCwgNTksIDI5LCAzLCAyNTEsIDQwLCAKLSAgICAyOSwgMywgMjUwLCAxOTAsIDI5LCAzLCAyNTAsIDE5OCwgMjksIDMsIDI0OSwgMjQ2LCAyOSwgMywgMjQ5LCA4OSwgMjksIDMsIAotICAgIDIxMSwgMTY1LCAyOSwgMywgMjExLCAxNDEsIDI5LCAzLCAyMTEsIDE1NywgMjksIDMsIDIxMSwgMTY0LCAyOSwgMywgMjExLCAKLSAgICAxNjEsIDI5LCAzLCAyMTEsIDE2MiwgMjksIDMsIDIxMSwgMTQ4LCAyOSwgMywgMjExLCAxNDcsIDI5LCAzLCAyMTEsIDEzNiwgCi0gICAgMjksIDMsIDIxMSwgMTMyLCAyOSwgMywgMjExLCAxMzUsIDI5LCAzLCAyMTEsIDEzMywgMjksIDMsIDIxMSwgMTM0LCAyOSwgCi0gICAgMywgMTk4LCAyOSwgMywgMjI3LCAyNDIsIDI5LCAzLCAyMjgsIDIzOCwgMjksIDMsIDIyOSwgMjMwLCAyOSwgMywgMjI5LCAKLSAgICAxMDgsIDI5LCAzLCAyMjksIDExMiwgMjksIDMsIDIyOCwgNzksIDI5LCAzLCAyMjcsIDE3OCwgMjksIDMsIDIyNywgMTY5LCAKLSAgICAyOSwgMywgMjI3LCAxMzIsIDI5LCAzLCAyMjcsIDE1MiwgMjksIDMsIDIyNywgMTY4LCAyOSwgMywgMjI3LCAxNTksIDI5LCAKLSAgICAzLCAyMjcsIDE2MCwgMjksIDMsIDIyNywgMTM4LCAyOSwgMywgMjI3LCAxMjMsIDI5LCAzLCAyNDIsIDE4NywgNjEsIDI5LCAKLSAgICAzLCAyNDIsIDE4NywgNjksIDI5LCAzLCAyNDIsIDE4NywgNzQsIDI5LCAzLCAyNDIsIDE4NywgMjU1LCA4MiwgMjksIDMsIAotICAgIDI0MiwgMTg3LCAyNDUsIDIxNywgMjksIDMsIDI0MiwgMTg3LCA3NiwgMjksIDMsIDI0MiwgMTg3LCA3OCwgMjksIDMsIDI0MiwgCi0gICAgMTg3LCAyMTIsIDY1LCAyOSwgMywgMTc2LCAyOSwgMywgMjMzLCAyMjMsIDI5LCAzLCAyMzQsIDk4LCAyOSwgMywgMjM1LCAKLSAgICAxNiwgMjksIDMsIDIzNCwgMTg3LCAyOSwgMywgMjM0LCAxODgsIDI5LCAzLCAyMzQsIDM0LCAyOSwgMywgMjM0LCAzMywgMjksIAotICAgIDMsIDIzMywgMTg4LCAyOSwgMywgMjMzLCAxODIsIDI5LCAzLCAyMzMsIDE4NywgMjksIDMsIDIzMywgMTgzLCAyOSwgMywgCi0gICAgMjMzLCAxODQsIDI5LCAzLCAyMzMsIDE3NywgMjksIDMsIDIzMywgMTcxLCAyOSwgMywgMjMzLCAxNzMsIDI5LCAzLCAyMzMsIAotICAgIDE3NiwgMjksIDMsIDIzMywgMTc0LCAyOSwgMywgMjMzLCAxNzUsIDI5LCAzLCAyMzMsIDE3MiwgMjksIDMsIDIzMywgMTcwLCAKLSAgICAyOSwgMywgMjMzLCAxNjYsIDI5LCAzLCAyMzMsIDE2OSwgMjksIDMsIDIzMywgMTY3LCAyOSwgMywgMjMzLCAxNjgsIDI5LCAKLSAgICAzLCAyMTIsIDY1LCAyOSwgMywgMjExLCAxOTUsIDI5LCAzLCAyMTEsIDI1MCwgMjksIDMsIDIxMiwgNjQsIDI5LCAzLCAyMTIsIAotICAgIDE3LCAyOSwgMywgMjEyLCAyMiwgMjksIDMsIDIxMSwgMjI3LCAyOSwgMywgMjExLCAyMjYsIDI5LCAzLCAyMjUsIDE0MiwgCi0gICAgNjEsIDI5LCAzLCAyMjUsIDE0MiwgNjksIDI5LCAzLCAyMjUsIDE0MiwgNzQsIDI5LCAzLCAyMjUsIDE0MiwgMjU1LCA4MiwgCi0gICAgMjksIDMsIDIyNSwgMTQyLCAyNDUsIDIxNywgMjksIDMsIDIyNSwgMTQyLCA3NiwgMjksIDMsIDIyNSwgMTQyLCA3OCwgMjksIAotICAgIDMsIDIxMCwgMTE2LCAyOSwgMywgMjEwLCAxMywgMjksIDMsIDIxMCwgNDQsIDI5LCAzLCAyMTAsIDExNSwgMjksIDMsIDIxMCwgCi0gICAgOTIsIDI5LCAzLCAyMTAsIDk0LCAyOSwgMywgMjEwLCAyMywgMjksIDMsIDIxMCwgMCwgMjksIDMsIDIxMCwgODIsIDI5LCAzLCAKLSAgICAyMTAsIDYyLCAyOSwgMywgMjEwLCA2OSwgMjksIDMsIDIxMCwgODEsIDI5LCAzLCAyMTAsIDczLCAyOSwgMywgMjEwLCA3NCwgCi0gICAgMjksIDMsIDIxMCwgNjcsIDI5LCAzLCAyMTAsIDUzLCAyOSwgMywgMTkyLCAyOSwgMywgMjEwLCAyMTIsIDI5LCAzLCAyMTEsIAotICAgIDgsIDI5LCAzLCAyMTEsIDEwMywgMjksIDMsIDIxMSwgNDQsIDI5LCAzLCAyMTEsIDQ3LCAyOSwgMywgMjEwLCAyNDQsIDI5LCAKLSAgICAzLCAyMTAsIDIzNSwgMjksIDMsIDI0OCwgMjI5LCAyOSwgMywgMjQ2LCA4NiwgMjksIDMsIDI0OCwgMTEsIDI5LCAzLCAyNDgsIAotICAgIDIyOCwgMjksIDMsIDI0OCwgODUsIDI5LCAzLCAyNDgsIDk4LCAyOSwgMywgMjQ3LCAxNTMsIDI5LCAzLCAyNDYsIDU1LCAyOSwgCi0gICAgMywgMjQ4LCAxNDMsIDI5LCAzLCAyNDgsIDEwOCwgMjksIDMsIDI0OCwgMTIwLCAyOSwgMywgMjQ4LCAxNDIsIDI5LCAzLCAKLSAgICAyNDgsIDEzMCwgMjksIDMsIDI0OCwgMTMxLCAyOSwgMywgMjQ4LCAxMTMsIDI5LCAzLCAyNDgsIDk5LCAyOSwgMywgMjM1LCAKLSAgICAxNDcsIDI5LCAzLCAyMzUsIDU3LCAyOSwgMywgMjM1LCAxMTQsIDI5LCAzLCAyMzUsIDE0NiwgMjksIDMsIDIzNSwgMTMwLCAKLSAgICAyOSwgMywgMjM1LCAxMzIsIDI5LCAzLCAyMzUsIDc0LCAyOSwgMywgMjM1LCAzNywgMjksIDMsIDI0MywgMTQyLCAyOSwgMywgCi0gICAgMjQyLCAxMjAsIDI5LCAzLCAyNDIsIDIyMSwgMjksIDMsIDI0MywgMTM5LCAyOSwgMywgMjQzLCA2MiwgMjksIDMsIDI0MywgCi0gICAgNjksIDI5LCAzLCAyNDIsIDE4MSwgMjksIDMsIDI0MiwgMTgwLCAyOSwgMywgMjQyLCA4NSwgMjksIDMsIDI0MiwgODEsIDI5LCAKLSAgICAzLCAyNDIsIDg0LCAyOSwgMywgMjQyLCA4MiwgMjksIDMsIDI0MiwgODMsIDI5LCAzLCAyNDMsIDM2LCAyOSwgMywgMjQzLCAKLSAgICAxNiwgMjksIDMsIDI0MywgMjYsIDI5LCAzLCAyNDMsIDM1LCAyOSwgMywgMjQzLCAzMCwgMjksIDMsIDI0MywgMzEsIDI5LCAKLSAgICAzLCAyNDMsIDIwLCAyOSwgMywgMjQzLCA1LCAyOSwgMywgMjE2LCAyMDksIDI5LCAzLCAyMTYsIDEzNywgMjksIDMsIDIxNiwgCi0gICAgMTc2LCAyOSwgMywgMjE2LCAyMDgsIDI5LCAzLCAyMTYsIDE5NSwgMjksIDMsIDIxNiwgMTk2LCAyOSwgMywgMjE2LCAxNTcsIAotICAgIDI5LCAzLCAyMTYsIDEyOSwgMjksIDMsIDI1MCwgMTY1LCAyOSwgMywgMjUwLCA3NywgMjksIDMsIDI1MCwgMTE4LCAyOSwgMywgCi0gICAgMjUwLCAxNjQsIDI5LCAzLCAyNTAsIDEzNiwgMjksIDMsIDI1MCwgMTM5LCAyOSwgMywgMjUwLCA5NCwgMjksIDMsIDI1MCwgCi0gICAgNjYsIDI5LCAzLCAyMjUsIDE1MCwgMjksIDMsIDIyNSwgMTE3LCAyOSwgMywgMjI1LCAxMzYsIDI5LCAzLCAyMjUsIDE0OSwgCi0gICAgMjksIDMsIDIyNSwgMTM4LCAyOSwgMywgMjI1LCAxMzksIDI5LCAzLCAyMjUsIDEyNCwgMjksIDMsIDIyNSwgMTEzLCAyOSwgCi0gICAgMywgMjE1LCAxODQsIDI5LCAzLCAyMTUsIDE2NCwgMjksIDMsIDIxNSwgMTY4LCAyOSwgMywgMjE1LCAxODMsIDI5LCAzLCAKLSAgICAyMTUsIDE3OCwgMjksIDMsIDIxNSwgMTc5LCAyOSwgMywgMjE1LCAxNjcsIDI5LCAzLCAyMTUsIDE2MiwgMjksIDMsIDIxNSwgCi0gICAgMzksIDI5LCAzLCAyMTUsIDMxLCAyOSwgMywgMjE1LCAzNSwgMjksIDMsIDIxNSwgMzgsIDI5LCAzLCAyMTUsIDM2LCAyOSwgCi0gICAgMywgMjE1LCAzNywgMjksIDMsIDIxNSwgMzMsIDI5LCAzLCAyMTUsIDMyLCAyOSwgMywgMjQ0LCAyMDQsIDI5LCAzLCAyNDMsIAotICAgIDI0MSwgMjksIDMsIDI0NCwgMTI5LCAyOSwgMywgMjQ0LCAyMDMsIDI5LCAzLCAyNDQsIDE1NSwgMjksIDMsIDI0NCwgMTYyLCAKLSAgICAyOSwgMywgMjQ0LCA1MSwgMjksIDMsIDI0MywgMjIwLCAyOSwgMywgMTkxLCAyOSwgMywgMjI0LCAxNTMsIDI5LCAzLCAyMjUsIAotICAgIDExMSwgMjksIDMsIDIyNiwgOTMsIDI5LCAzLCAyMjUsIDIxNCwgMjksIDMsIDIyNSwgMjI0LCAyOSwgMywgMjI1LCAxOSwgCi0gICAgMjksIDMsIDIyNCwgMTE3LCAyOSwgMywgMjIyLCAxMDEsIDI5LCAzLCAyMzAsIDM2LCAyOSwgMywgMjQzLCAyMTQsIDI5LCAKLSAgICAzOCwgMjQzLCA2MCwgMjIsIDI1LCAyMzMsIDI5LCA3OSwgMjksIDM4LCAyNSwgMjMzLCAyOSwgNzksIDI5LCAzOCwgMjQzLCAKLSAgICA2MCwgNzksIDI5LCAyMjEsIDE3NSwgNzksIDI5LCAyMTEsIDIwOCwgMjksIDI0MywgMjM2LCAyMTgsIDEzMSwgMjksIDI0OSwgCi0gICAgMjI3LCAyOSwgMjIwLCAxNTIsIDI5LCAyNDksIDIzNCwgMjksIDIyNCwgMjAyLCAyNDksIDIzNCwgMjksIDIyNCwgMTYsIDc5LCAKLSAgICAyOSwgMjI2LCAxOSwgMjIwLCAxMzksIDI5LCAyMSwgMTExLCAyOSwgMjEsIDEwNSwgMjksIDIxLCAxNTgsIDI5LCAyMSwgCi0gICAgMTYxLCAyOSwgMjEsIDE5MCwgMjksIDIxLCAxOTUsIDI5LCAyMSwgMTk5LCAyOSwgMjEsIDE5NiwgMjksIDIxLCAyMDEsIDI5LCAKLSAgICA1NCwgMjE2LCAyNDgsIDI5LCA1NCwgMjE1LCA3MywgMjksIDU0LCAyMTYsIDE2MywgMjksIDU0LCAyNDQsIDIzLCAyOSwgNTQsIAotICAgIDI0NCwgMTIyLCAyOSwgNTQsIDIxOSwgMTEzLCAyOSwgNTQsIDIyMCwgMTE4LCAyOSwgNTQsIDI0NSwgMTkyLCAyOSwgNTQsIAotICAgIDIyOCwgMjAwLCAyOSwgNTQsIDI0MCwgMjE3LCAyOSwgNTQsIDIxNiwgMjQ5LCAyMTYsIDE0OCwgMjksIDMsIDIyMSwgMTc5LCAKLSAgICAyMzAsIDQ3LCAyOSwgMywgMjMwLCA0MywgMjksIDMsIDIzMCwgNDQsIDI5LCAzLCAyMzAsIDQ1LCAyOSwgMywgMjIxLCAxNzksIAotICAgIDI1MSwgOTEsIDI5LCAzLCAyNTEsIDg4LCAyOSwgMywgMjUxLCA4OSwgMjksIDMsIDI1MSwgOTAsIDI5LCAzLCAyMjEsIDE3OSwgCi0gICAgMjQzLCAyMjAsIDI5LCAzLCAyNDMsIDIxNiwgMjksIDMsIDI0MywgMjE3LCAyOSwgMywgMjQzLCAyMTgsIDI5LCAzLCAyMjEsIAotICAgIDE3OSwgMjI0LCAxMTcsIDI5LCAzLCAyMjQsIDExMywgMjksIDMsIDIyNCwgMTE0LCAyOSwgMywgMjI0LCAxMTUsIDI5LCAKLSAgICAyMTYsIDMyLCAxNjQsIDIxMCwgMjQ3LCAyOSwgMjE2LCAzMiwgMTY0LCAyNDgsIDQ5LCAyOSwgMjE2LCAzMiwgMTY0LCAyMjIsIAotICAgIDI0MSwgMjksIDIxNiwgMzIsIDE2NCwgMjE5LCAyNTMsIDIyMiwgMjQxLCAyOSwgMjE2LCAzMiwgMTY0LCAyNDcsIDI0MywgCi0gICAgMjksIDIxNiwgMzIsIDE2NCwgMjM0LCAxNzAsIDI5LCAyMTYsIDMyLCAxNjQsIDI1MCwgMTAyLCAyOSwgMjE2LCAzMiwgMTY0LCAKLSAgICAyNDEsIDE4NCwgMjksIDIxNiwgMzIsIDE2NCwgMjQ4LCA0OCwgMjksIDIxNiwgMzIsIDE2NCwgMjMzLCAyMDAsIDE2OSwgMSwgCi0gICAgNjEsIDE2OSwgMSwgNzYsIDE2OSwgMSwgNzQsIDE2OSwgMSwgNzgsIDE2OSwgMSwgNjksIDE2OSwgMSwgMjE0LCAxMDUsIAotICAgIDE2OSwgMSwgMjQzLCAxNDIsIDE2OSwgMSwgMTc2LCAxNjksIDEsIDI0MywgNjksIDE2OSwgMSwgMjQyLCAyMjEsIDE2OSwgMSwgCi0gICAgMjQyLCAxODEsIDE2OSwgMSwgMjQyLCAxMjAsIDE2OSwgMSwgMjQyLCA4NiwgMTY5LCAxLCAxNjIsIDE2OSwgMSwgMjQxLCAKLSAgICAyNDUsIDE2OSwgMSwgMjQxLCAxODcsIDE2OSwgMSwgMjQxLCA3NSwgMTY5LCAxLCAyNDAsIDIyOSwgMTY5LCAxLCAyNDAsIAotICAgIDIwOCwgMTY5LCAxLCAyMzMsIDE0MSwgMTY5LCAxLCAyMzMsIDY0LCAxNjksIDEsIDIzMiwgMjQ3LCAxNjksIDEsIDIzMiwgCi0gICAgMTYyLCAxNjksIDEsIDIzMiwgMTAzLCAxNjksIDEsIDIzMiwgNzYsIDE2OSwgMSwgMTg2LCAxNjksIDEsIDIzMSwgOTYsIAotICAgIDE2OSwgMSwgMjMwLCAyMzUsIDE2OSwgMSwgMjMwLCAxNjYsIDE2OSwgMSwgMjMwLCAxMDcsIDE2OSwgMSwgMTk4LCAxNjksIAotICAgIDEsIDI0MSwgOTcsIDE2OSwgMSwgMjI5LCAyMTgsIDE2OSwgMSwgMjI5LCAxMTIsIDE2OSwgMSwgMjI4LCAyMzgsIDE2OSwgMSwgCi0gICAgMjI4LCA3OSwgMTY5LCAxLCAyMjcsIDI0MiwgMTY5LCAxLCAyMjcsIDE4MCwgMTY5LCAxLCAyMjQsIDMyLCAxNjksIDEsIAotICAgIDIyNCwgMTksIDE2OSwgMSwgMjI0LCAxMiwgMTY5LCAxLCAyMjQsIDQsIDE2OSwgMSwgMjIzLCAyNDksIDE2OSwgMSwgMjIzLCAKLSAgICAyNDcsIDE2OSwgMSwgMjA2LCAxNjksIDEsIDIyMiwgOTMsIDE2OSwgMSwgMjIxLCAxODMsIDE2OSwgMSwgMjE5LCAxOTMsIAotICAgIDE2OSwgMSwgMjE5LCA2MCwgMTY5LCAxLCAyMTgsIDg0LCAxNjksIDEsIDIxOCwgMywgMTY5LCAxLCAyNDgsIDIyOSwgMTY5LCAKLSAgICAxLCAyMTcsIDEwNiwgMTY5LCAxLCAyNDgsIDk4LCAxNjksIDEsIDIxNywgMjMsIDE2OSwgMSwgMjQ4LCAxMSwgMTY5LCAxLCAKLSAgICAyMTYsIDExOCwgMTY5LCAxLCAyNDcsIDE1MywgMTY5LCAxLCAyNDYsIDg2LCAxNjksIDEsIDI0NiwgNTgsIDE2OSwgMSwgCi0gICAgMjQ3LCAxNjQsIDE2OSwgMSwgMjE2LCA2MCwgMTY5LCAxLCAyMTYsIDU5LCAxNjksIDEsIDIxNiwgNDgsIDE2OSwgMSwgMjE2LCAKLSAgICA0NywgMTY5LCAxLCAyMTYsIDQ2LCAxNjksIDEsIDIxNiwgNDUsIDE2OSwgMSwgMjE1LCAxODQsIDE2OSwgMSwgMjE1LCAxNzksIAotICAgIDE2OSwgMSwgMjE1LCAxNjgsIDE2OSwgMSwgMjE1LCAxNjcsIDE2OSwgMSwgMjE1LCAxNjQsIDE2OSwgMSwgMjE1LCAxNjMsIAotICAgIDE2OSwgMSwgMjEyLCA2NSwgMTY5LCAxLCAyMTIsIDIyLCAxNjksIDEsIDIxMSwgMjUwLCAxNjksIDEsIDIxMSwgMjI3LCAKLSAgICAxNjksIDEsIDIxMSwgMTk1LCAxNjksIDEsIDIxMSwgMTgzLCAxNjksIDEsIDE5MiwgMTY5LCAxLCAyMTEsIDQ3LCAxNjksIDEsIAotICAgIDIxMSwgOCwgMTY5LCAxLCAyMTAsIDI0NCwgMTY5LCAxLCAyMTAsIDIxMiwgMTY5LCAxLCAyMTAsIDE3NywgMTgsIDE5LCAKLSAgICAyNDAsIDE3NSwgMTgsIDE5LCA3NiwgMTgsIDE5LCAyNTUsIDQ2LCAxOCwgMTksIDc0LCAxOCwgMTksIDIzNiwgNDAsIDE4LCAKLSAgICAxOSwgNzgsIDE4LCAxOSwgMjI2LCAxODcsIDE4LCAxOSwgMjExLCAxMTYsIDIyNiwgMTg3LCAxOCwgMTksIDczLCAyNDUsIAotICAgIDIxNywgMTgsIDE5LCA3MywgNzQsIDE4LCAxOSwgNjEsIDE4LCAxOSwgMjU1LCA4MiwgMTgsIDE5LCAyMTIsIDIyLCAxOCwgCi0gICAgMTksIDE1OSwgMjEyLCAyMiwgMTgsIDE5LCAyMTEsIDI1MCwgMTgsIDE5LCAxNTksIDIxMSwgMjUwLCAxOCwgMTksIDIxMSwgCi0gICAgMjQyLCAxOCwgMTksIDE1OSwgMjExLCAyNDIsIDE4LCAxOSwgMjExLCAyMjcsIDE4LCAxOSwgMTU5LCAyMTEsIDIyNywgMTgsIAotICAgIDE5LCAyMTEsIDIxNSwgMTgsIDE5LCAxNTksIDIxMSwgMjE1LCAxOCwgMTksIDIyOSwgMTk1LCAyMTEsIDIxNSwgMTgsIDE5LCAKLSAgICAyMTIsIDY1LCAxOCwgMTksIDE1OSwgMjEyLCA2NSwgMTgsIDE5LCAyMTIsIDY0LCAxOCwgMTksIDE1OSwgMjEyLCA2NCwgMTgsIAotICAgIDE5LCAyMjksIDE5NSwgMjEyLCA2NCwgMTgsIDE5LCAyNTQsIDIxMCwgMTgsIDE5LCAyMTEsIDExNiwgMjEyLCA5OCwgMTgsIAotICAgIDE5LCAyNDIsIDE4NywgMjE4LCAxMzEsIDE4LCAxOSwgNDAsIDE0MiwgMTgsIDE5LCA0MCwgMjQyLCAxNDMsIDE4LCAxOSwgCi0gICAgNDAsIDI1MSwgMTgzLCAxNjMsIDIyMiwgMjM2LCAxOCwgMTksIDQwLCAyMTYsIDE1LCAxNjMsIDIyMiwgMjM2LCAxOCwgMTksIAotICAgIDQwLCA0NCwgMTYzLCAyMjIsIDIzNiwgMTgsIDE5LCA0MCwgMjIyLCAyMzYsIDE4LCAxOSwgNDAsIDUyLCAxNDIsIDE4LCAxOSwgCi0gICAgNDAsIDUyLCAyMTksIDI1MywgNjcsIDIxOCwgOTIsIDE4LCAxOSwgNDAsIDIzMCwgMjI5LCAyNDcsIDEyOCwgMTgsIDE5LCAKLSAgICA0MCwgMjE5LCAyNTMsIDIwMywgOTEsIDE4LCAxOSwgNDAsIDIyNSwgMjUsIDE4LCAxOSwgNDAsIDEyNCwgMjE3LCA4OCwgMTgsIAotICAgIDE5LCAyNDUsIDE1OCwgMTgsIDE5LCAyMzYsIDYsIDE4LCAxOSwgMjI2LCAyMDAsIDE4LCAxOSwgMjU0LCAxMzEsIDE4LCAxOSwgCi0gICAgMjI1LCAyMjQsIDE4LCAxOSwgMjI2LCA5MSwgMTgsIDE5LCAyMjUsIDExMSwgMTgsIDE5LCAyMjUsIDc0LCAxOCwgMTksIAotICAgIDIyNSwgMTksIDE4LCAxOSwgMjI0LCAyNTIsIDE4LCAxOSwgMjExLCAxMTYsIDIyNCwgMjUyLCAxOCwgMTksIDczLCAyNDEsIAotICAgIDIyNywgMTgsIDE5LCA3MywgMjQxLCAxODcsIDE4LCAxOSwgMTkxLCAxOCwgMTksIDIyNiwgOTMsIDE4LCAxOSwgMjI0LCAKLSAgICAxMTUsIDE4LCAxOSwgMTU5LCAyMjQsIDExNSwgMTgsIDE5LCAyMjQsIDExMywgMTgsIDE5LCAxNTksIDIyNCwgMTEzLCAxOCwgCi0gICAgMTksIDIyNCwgMTEyLCAxOCwgMTksIDE1OSwgMjI0LCAxMTIsIDE4LCAxOSwgMjI0LCAxMTAsIDE4LCAxOSwgMTU5LCAyMjQsIAotICAgIDExMCwgMTgsIDE5LCAyMjQsIDEwOSwgMTgsIDE5LCAxNTksIDIyNCwgMTA5LCAxOCwgMTksIDIyNCwgMTE3LCAxOCwgMTksIAotICAgIDE1OSwgMjI0LCAxMTcsIDE4LCAxOSwgMjI0LCAxMTYsIDE4LCAxOSwgMTU5LCAyMjQsIDExNiwgMTgsIDE5LCAyMTEsIDExNiwgCi0gICAgMjI0LCAxMTYsIDE4LCAxOSwgMjI2LCAxMDksIDE4LCAxOSwgMTU5LCAyMjYsIDEwOSwgMTgsIDE5LCA3MywgMjQyLCA2NywgCi0gICAgMTgsIDE5LCAyMTcsIDIzLCAxOCwgMTksIDIxNywgMTAwLCAxOCwgMTksIDIxNiwgMTE4LCAxOCwgMTksIDIxNiwgMTA0LCAKLSAgICAxOCwgMTksIDExMiwgMTgsIDE5LCAyMTYsIDE4LCAxOCwgMTksIDIxMSwgMTE2LCAyMTYsIDE4LCAxOCwgMTksIDczLCAyNDgsIAotICAgIDg1LCAxOCwgMTksIDczLCAyNDgsIDExLCAxOCwgMTksIDIxNywgMTA2LCAxOCwgMTksIDIxNywgMTAyLCAxOCwgMTksIDIxNSwgCi0gICAgNzgsIDE4LCAxOSwgMTU5LCAyMTUsIDc4LCAxOCwgMTksIDIxNSwgNjIsIDE4LCAxOSwgMTU5LCAyMTUsIDYyLCAxOCwgMTksIAotICAgIDIxNSwgNjEsIDE4LCAxOSwgMTU5LCAyMTUsIDYxLCAxOCwgMTksIDEwNSwgMTgsIDE5LCAxNTksIDEwNSwgMTgsIDE5LCAKLSAgICAyMTUsIDU0LCAxOCwgMTksIDE1OSwgMjE1LCA1NCwgMTgsIDE5LCAyMTUsIDgwLCAxOCwgMTksIDE1OSwgMjE1LCA4MCwgMTgsIAotICAgIDE5LCAyMTUsIDc5LCAxOCwgMTksIDE1OSwgMjE1LCA3OSwgMTgsIDE5LCAyMjksIDE5NSwgMjE1LCA3OSwgMTgsIDE5LCAKLSAgICAyMTcsIDE1MywgMTgsIDE5LCAyMTUsIDE1MiwgMTgsIDE5LCAyMTUsIDEzNiwgMTgsIDE5LCAyMTUsIDEzNCwgMTgsIDE5LCAKLSAgICAyMTUsIDE1NywgMTgsIDE5LCAyMzQsIDE4OCwgMTgsIDE5LCAyMzUsIDEzLCAxOCwgMTksIDIzNCwgOTgsIDE4LCAxOSwgCi0gICAgMjM0LCA4OSwgMTgsIDE5LCAyMzQsIDM0LCAxOCwgMTksIDIzNCwgMTYsIDE4LCAxOSwgMjExLCAxMTYsIDIzNCwgMTYsIDE4LCAKLSAgICAxOSwgMTc2LCAxOCwgMTksIDIzNSwgMTYsIDE4LCAxOSwgMjMzLCAxODQsIDE4LCAxOSwgMTU5LCAyMzMsIDE4NCwgMTgsIAotICAgIDE5LCAyMzMsIDE4MiwgMTgsIDE5LCAxNTksIDIzMywgMTgyLCAxOCwgMTksIDIzMywgMTgxLCAxOCwgMTksIDE1OSwgMjMzLCAKLSAgICAxODEsIDE4LCAxOSwgMjMzLCAxODAsIDE4LCAxOSwgMTU5LCAyMzMsIDE4MCwgMTgsIDE5LCAyMzMsIDE3OSwgMTgsIDE5LCAKLSAgICAxNTksIDIzMywgMTc5LCAxOCwgMTksIDIzMywgMTg4LCAxOCwgMTksIDE1OSwgMjMzLCAxODgsIDE4LCAxOSwgMjMzLCAxODcsIAotICAgIDE4LCAxOSwgMTU5LCAyMzMsIDE4NywgMTgsIDE5LCAyMjksIDE5NSwgMjMzLCAxODcsIDE4LCAxOSwgMjM1LCAyOSwgMTgsIAotICAgIDE5LCAyMzMsIDE4OSwgMTgsIDE5LCAyMTksIDI5LCAyMzQsIDE4MiwgMTgsIDE5LCAyMTksIDI5LCAyMzQsIDkwLCAxOCwgCi0gICAgMTksIDIxOSwgMjksIDIzNCwgMjksIDE4LCAxOSwgMjE5LCAyOSwgMjM0LCAyNTQsIDE4LCAxOSwgMjUwLCAxOTgsIDE4LCAKLSAgICAxOSwgMjUxLCAzOSwgMTgsIDE5LCAyNTAsIDU5LCAxOCwgMTksIDI1MCwgNDksIDE4LCAxOSwgMjQ5LCAyNDYsIDE4LCAxOSwgCi0gICAgMjQ5LCAxODIsIDE4LCAxOSwgMjExLCAxMTYsIDI0OSwgMTgyLCAxOCwgMTksIDI1MSwgNDEsIDE4LCAxOSwgMjUxLCA0MCwgCi0gICAgMTgsIDE5LCAyNDksIDg3LCAxOCwgMTksIDE1OSwgMjQ5LCA4NywgMTgsIDE5LCAyNDksIDg1LCAxOCwgMTksIDE1OSwgMjQ5LCAKLSAgICA4NSwgMTgsIDE5LCAyNDksIDg0LCAxOCwgMTksIDE1OSwgMjQ5LCA4NCwgMTgsIDE5LCAyNDksIDgzLCAxOCwgMTksIDE1OSwgCi0gICAgMjQ5LCA4MywgMTgsIDE5LCAyNDksIDgyLCAxOCwgMTksIDE1OSwgMjQ5LCA4MiwgMTgsIDE5LCAyNDksIDg5LCAxOCwgMTksIAotICAgIDE1OSwgMjQ5LCA4OSwgMTgsIDE5LCAyNDksIDg4LCAxOCwgMTksIDE1OSwgMjQ5LCA4OCwgMTgsIDE5LCAyMjksIDE5NSwgCi0gICAgMjQ5LCA4OCwgMTgsIDE5LCAyNTEsIDc0LCAxOCwgMTksIDIyMSwgMjExLCAyMTYsIDIxMSwgMTgsIDE5LCAyMzEsIDk2LCAKLSAgICAxOCwgMTksIDIzMSwgMjQxLCAxOCwgMTksIDIzMCwgMjM1LCAxOCwgMTksIDIzMCwgMjA2LCAxOCwgMTksIDIzMCwgMTY2LCAKLSAgICAxOCwgMTksIDIzMCwgMTM3LCAxOCwgMTksIDIxMSwgMTE2LCAyMzAsIDEzNywgMTgsIDE5LCAxODYsIDE4LCAxOSwgMjMxLCAKLSAgICAyNDIsIDE4LCAxOSwgMjMwLCA0NSwgMTgsIDE5LCAxNTksIDIzMCwgNDUsIDE4LCAxOSwgMjMwLCA0MywgMTgsIDE5LCAxNTksIAotICAgIDIzMCwgNDMsIDE4LCAxOSwgMjMwLCA0MiwgMTgsIDE5LCAxNTksIDIzMCwgNDIsIDE4LCAxOSwgMjMwLCA0MSwgMTgsIDE5LCAKLSAgICAxNTksIDIzMCwgNDEsIDE4LCAxOSwgMjMwLCA0MCwgMTgsIDE5LCAxNTksIDIzMCwgNDAsIDE4LCAxOSwgMjMwLCA0NywgMTgsIAotICAgIDE5LCAxNTksIDIzMCwgNDcsIDE4LCAxOSwgMjMwLCA0NiwgMTgsIDE5LCAxNTksIDIzMCwgNDYsIDE4LCAxOSwgMjI5LCAKLSAgICAxOTUsIDIzMCwgNDYsIDE4LCAxOSwgMTk0LCAxOCwgMTksIDE1OSwgMTk0LCAxOCwgMTksIDIzMCwgMjM5LCAxOCwgMTksIAotICAgIDI1MywgMjEzLCAxOTQsIDE4LCAxOSwgMjIxLCAyMTEsIDE5NCwgMTgsIDE5LCAyMjksIDExMiwgMTgsIDE5LCAyMjksIDIyOSwgCi0gICAgMTgsIDE5LCAyMjgsIDIzOCwgMTgsIDE5LCAyMjgsIDIxMywgMTgsIDE5LCAyMjgsIDc5LCAxOCwgMTksIDIyOCwgNjksIDE4LCAKLSAgICAxOSwgMjExLCAxMTYsIDIyOCwgNjksIDE4LCAxOSwgMTk4LCAxOCwgMTksIDIyOSwgMjMwLCAxOCwgMTksIDIyNywgMTc2LCAKLSAgICAxOCwgMTksIDE1OSwgMjI3LCAxNzYsIDE4LCAxOSwgMjI3LCAxNzgsIDE4LCAxOSwgMTU5LCAyMjcsIDE3OCwgMTgsIDE5LCAKLSAgICAyMjcsIDE3NywgMTgsIDE5LCAxNTksIDIyNywgMTc3LCAxOCwgMTksIDIyOSwgMTk1LCAyMjcsIDE3NywgMTgsIDE5LCAyMzAsIAotICAgIDMwLCAxOCwgMTksIDczLCAyMjksIDg0LCAxOCwgMTksIDIyOCwgMjQzLCAxOCwgMTksIDIzMywgNjQsIDE4LCAxOSwgMjMzLCAKLSAgICAxMzksIDE4LCAxOSwgMjMyLCAyNDcsIDE4LCAxOSwgMjMyLCAyMzMsIDE4LCAxOSwgMjMyLCAxNjIsIDE4LCAxOSwgMjMyLCAKLSAgICAxMzMsIDE4LCAxOSwgMjExLCAxMTYsIDIzMiwgMTMzLCAxOCwgMTksIDIzMywgMTQxLCAxOCwgMTksIDIzMywgMTQwLCAxOCwgCi0gICAgMTksIDIzMiwgNzMsIDE4LCAxOSwgMTU5LCAyMzIsIDczLCAxOCwgMTksIDIzMiwgNzIsIDE4LCAxOSwgMTU5LCAyMzIsIDcyLCAKLSAgICAxOCwgMTksIDIzMiwgNzEsIDE4LCAxOSwgMTU5LCAyMzIsIDcxLCAxOCwgMTksIDIzMiwgNzAsIDE4LCAxOSwgMTU5LCAyMzIsIAotICAgIDcwLCAxOCwgMTksIDIzMiwgNjksIDE4LCAxOSwgMTU5LCAyMzIsIDY5LCAxOCwgMTksIDIzMiwgNzUsIDE4LCAxOSwgMTU5LCAKLSAgICAyMzIsIDc1LCAxOCwgMTksIDIzMiwgNzQsIDE4LCAxOSwgMTU5LCAyMzIsIDc0LCAxOCwgMTksIDE1NiwgMTgsIDE5LCAxNTksIAotICAgIDE1NiwgMTgsIDE5LCAxNDcsIDE1NiwgMTgsIDE5LCAyMjEsIDE4MywgMTgsIDE5LCAyMjIsIDMxLCAxOCwgMTksIDIxOSwgCi0gICAgMTkzLCAxOCwgMTksIDIxOSwgMTc3LCAxOCwgMTksIDIxOSwgNjAsIDE4LCAxOSwgMjE5LCA0MiwgMTgsIDE5LCAyMTEsIAotICAgIDExNiwgMjE5LCA0MiwgMTgsIDE5LCAyMDYsIDE4LCAxOSwgMjIyLCAzMywgMTgsIDE5LCAyMTcsIDI1MCwgMTgsIDE5LCAKLSAgICAxNTksIDIxNywgMjUwLCAxOCwgMTksIDIxNywgMjQ0LCAxOCwgMTksIDE1OSwgMjE3LCAyNDQsIDE4LCAxOSwgMjE3LCAyNDMsIAotICAgIDE4LCAxOSwgMTU5LCAyMTcsIDI0MywgMTgsIDE5LCAyMTcsIDIzOSwgMTgsIDE5LCAxNTksIDIxNywgMjM5LCAxOCwgMTksIAotICAgIDIxNywgMjM4LCAxOCwgMTksIDE1OSwgMjE3LCAyMzgsIDE4LCAxOSwgMjE3LCAyNTQsIDE4LCAxOSwgMTU5LCAyMTcsIDI1NCwgCi0gICAgMTgsIDE5LCAyMTcsIDI1MywgMTgsIDE5LCAxNTksIDIxNywgMjUzLCAxOCwgMTksIDIyOSwgMTk1LCAyMTcsIDI1MywgMTgsIAotICAgIDE5LCAyMjIsIDkzLCAxOCwgMTksIDI1MywgMjEzLCAyMjIsIDkzLCAxOCwgMTksIDIxNywgMjU1LCAxOCwgMTksIDI1MSwgCi0gICAgMjI2LCAyMjIsIDkzLCAxOCwgMTksIDIzMCwgMTMyLCAyMTksIDExMCwgMTgsIDE5LCAyMjksIDE5NSwgMjE5LCAxMDEsIDE4LCAKLSAgICAxOSwgMjI5LCAxOTUsIDIyMiwgOTEsIDE4LCAxOSwgMjI5LCAxOTUsIDIxOCwgMjM3LCAxOCwgMTksIDIyOSwgMTk1LCAyMTgsIAotICAgIDg3LCAxOCwgMTksIDIyOSwgMTk1LCAyMTksIDEwMCwgMTgsIDE5LCAyMjksIDE5NSwgMjIxLCAxODYsIDE4LCAxOSwgMjIwLCAKLSAgICA2NSwgMTgsIDE5LCAyMjAsIDM0LCAxOCwgMTksIDIyMCwgMjksIDE4LCAxOSwgMjIwLCA5LCAxOCwgMTksIDIyMCwgMywgMTgsIAotICAgIDE5LCAyMjAsIDEwNCwgMTgsIDE5LCAyMjAsIDEwMCwgMTgsIDE5LCAyMTksIDIwOCwgMTgsIDE5LCAxNTksIDIxOSwgMjA4LCAKLSAgICAxOCwgMTksIDIxOSwgMjA3LCAxOCwgMTksIDE1OSwgMjE5LCAyMDcsIDE4LCAxOSwgMjE5LCAyMDYsIDE4LCAxOSwgMTU5LCAKLSAgICAyMTksIDIwNiwgMTgsIDE5LCAyMTksIDIwNSwgMTgsIDE5LCAxNTksIDIxOSwgMjA1LCAxOCwgMTksIDIxOSwgMjA0LCAxOCwgCi0gICAgMTksIDE1OSwgMjE5LCAyMDQsIDE4LCAxOSwgMjE5LCAyMTAsIDE4LCAxOSwgMTU5LCAyMTksIDIxMCwgMTgsIDE5LCAyMTksIAotICAgIDIwOSwgMTgsIDE5LCAxNTksIDIxOSwgMjA5LCAxOCwgMTksIDIyMCwgMTA2LCAxOCwgMTksIDIxMSwgNDcsIDE4LCAxOSwgCi0gICAgMjExLCAxMDEsIDE4LCAxOSwgMjExLCA4LCAxOCwgMTksIDIxMCwgMjU1LCAxOCwgMTksIDIxMCwgMjQ0LCAxOCwgMTksIAotICAgIDIxMCwgMjI5LCAxOCwgMTksIDIxMSwgMTE2LCAyMTAsIDIyOSwgMTgsIDE5LCAxOTIsIDE4LCAxOSwgMjExLCAxMDMsIDE4LCAKLSAgICAxOSwgMjEwLCAxNzQsIDE4LCAxOSwgMTU5LCAyMTAsIDE3NCwgMTgsIDE5LCAyMTAsIDE3MywgMTgsIDE5LCAxNTksIDIxMCwgCi0gICAgMTczLCAxOCwgMTksIDIxMCwgMTcyLCAxOCwgMTksIDE1OSwgMjEwLCAxNzIsIDE4LCAxOSwgMjEwLCAxNzEsIDE4LCAxOSwgCi0gICAgMTU5LCAyMTAsIDE3MSwgMTgsIDE5LCAyMTAsIDE3MCwgMTgsIDE5LCAxNTksIDIxMCwgMTcwLCAxOCwgMTksIDIxMCwgMTc2LCAKLSAgICAxOCwgMTksIDE1OSwgMjEwLCAxNzYsIDE4LCAxOSwgMjEwLCAxNzUsIDE4LCAxOSwgMTU5LCAyMTAsIDE3NSwgMTgsIDE5LCAKLSAgICAyMjksIDE5NSwgMjEwLCAxNzUsIDE4LCAxOSwgMjExLCAxMTcsIDE4LCAxOSwgMjUyLCAxMiwgMjExLCAxMTcsIDE4LCAxOSwgCi0gICAgMTU5LCAyMTEsIDExNywgMTgsIDE5LCAyMjEsIDIxMSwgMjExLCA4LCAxOCwgMTksIDIyMywgMTMxLCAxOCwgMTksIDIyMywgCi0gICAgMjI2LCAyMjMsIDEzMSwgMTgsIDE5LCAxNTksIDIzMywgNjQsIDE4LCAxOSwgMjIzLCAxODYsIDE4LCAxOSwgMjIzLCAzOCwgCi0gICAgMTgsIDE5LCAyMjIsIDI0MiwgMTgsIDE5LCAyMjIsIDIxMywgMTgsIDE5LCAyMjIsIDE5OSwgMTgsIDE5LCAxNTksIDIzMiwgCi0gICAgMTYyLCAxOCwgMTksIDIwNSwgMTgsIDE5LCAyMjMsIDE4NywgMTgsIDE5LCAxNTksIDIzMywgMTQxLCAxOCwgMTksIDIyMiwgCi0gICAgMTEwLCAxOCwgMTksIDE1OSwgMjIyLCAxMTAsIDE4LCAxOSwgMTUzLCAxOCwgMTksIDE1OSwgMTUzLCAxOCwgMTksIDE0NywgCi0gICAgMTUzLCAxOCwgMTksIDI0NCwgMTYyLCAxOCwgMTksIDI0NCwgMjAxLCAxOCwgMTksIDI0NCwgMTI5LCAxOCwgMTksIDI0NCwgCi0gICAgMTE2LCAxOCwgMTksIDI0NCwgNTEsIDE4LCAxOSwgMjQ0LCA0MiwgMTgsIDE5LCAyNDQsIDIwNCwgMTgsIDE5LCAyNDQsIAotICAgIDIwMywgMTgsIDE5LCAyNDMsIDIxOSwgMTgsIDE5LCAxNTksIDI0MywgMjE5LCAxOCwgMTksIDI0NSwgMTQsIDE4LCAxOSwgCi0gICAgMjE2LCAxOTYsIDE4LCAxOSwgMjMwLCAyOCwgMjE2LCAxOTYsIDE4LCAxOSwgMjE2LCAxNzYsIDE4LCAxOSwgMjMwLCAyOCwgCi0gICAgMjE2LCAxNzYsIDE4LCAxOSwgMjE2LCAxNzIsIDE4LCAxOSwgMjMwLCAyOCwgMjE2LCAxNzIsIDE4LCAxOSwgMjE2LCAxNTcsIAotICAgIDE4LCAxOSwgMjE2LCAxNTQsIDE4LCAxOSwgMjE2LCAyMDksIDE4LCAxOSwgMjE2LCAyMDgsIDE4LCAxOSwgMjE2LCAxMjgsIAotICAgIDE4LCAxOSwgMTU5LCAyMTYsIDEyOCwgMTgsIDE5LCAyMTYsIDIxMSwgMTgsIDE5LCAyMTUsIDE0MywgMTgsIDE5LCAyMTUsIAotICAgIDE0MSwgMTgsIDE5LCAyMTUsIDE0MCwgMTgsIDE5LCAyMTUsIDE0NSwgMTgsIDE5LCAyMTUsIDE0NiwgMTgsIDE5LCAyMTUsIAotICAgIDUyLCAxOCwgMTksIDIxNSwgNTEsIDE4LCAxOSwgMjE1LCA1MCwgMTgsIDE5LCAyMTUsIDUzLCAxOCwgMTksIDIyNywgMTk3LCAKLSAgICAyNDEsIDI0NSwgMTgsIDE5LCAyMjcsIDE5NywgMjQxLCAxODcsIDE4LCAxOSwgMjI3LCAxOTcsIDI0MSwgMTY4LCAxOCwgMTksIAotICAgIDIyNywgMTk3LCAyNDEsIDc1LCAxOCwgMTksIDIyNywgMTk3LCAyNDEsIDYwLCAxOCwgMTksIDIyNywgMTk3LCAxNjIsIDE4LCAKLSAgICAxOSwgMjI3LCAxOTcsIDI0MiwgNTMsIDE4LCAxOSwgMjI3LCAxOTcsIDI0MiwgNjcsIDE4LCAxOSwgMjI3LCAxOTYsIDI0MiwgCi0gICAgNjcsIDE4LCAxOSwgMjQxLCAxNjEsIDE4LCAxOSwgMjI0LCA4NywgMTgsIDE5LCAyMjQsIDU2LCAxOCwgMTksIDIyNCwgNTEsIAotICAgIDE4LCAxOSwgMjI0LCA0NSwgMTgsIDE5LCAyMjQsIDQwLCAxOCwgMTksIDIyNCwgOTEsIDE4LCAxOSwgMjI0LCA5MCwgMTgsIAotICAgIDE5LCAyMjQsIDk5LCAxOCwgMTksIDIxNiwgNTYsIDE4LCAxOSwgMjE2LCA1NCwgMTgsIDE5LCAyMTYsIDUzLCAxOCwgMTksIAotICAgIDIxNiwgNTcsIDE4LCAxOSwgMTU5LCAyMjMsIDEzMSwgMTgsIDE5LCAxNTksIDIyMywgMzgsIDE4LCAxOSwgMTU5LCAyMjIsIAotICAgIDIxMywgMTgsIDE5LCAxNTksIDIwNSwgMTgsIDE5LCAyMjksIDgwLCAxOCwgMTksIDIyOSwgMzIsIDE4LCAxOSwgMjI5LCAyOCwgCi0gICAgMTgsIDE5LCAyMjksIDksIDE4LCAxOSwgMjI5LCA0LCAxOCwgMTksIDIyOSwgODIsIDE4LCAxOSwgMjI5LCA4MSwgMTgsIDE5LCAKLSAgICAyMjksIDg0LCAxOCwgMTksIDIyOCwgMTA4LCAxOCwgMTksIDIyMSwgMjExLCAyMjAsIDY1LCAxOCwgMTksIDIyMSwgMjExLCAKLSAgICAyMjAsIDM0LCAxOCwgMTksIDIyMSwgMjExLCAyMjAsIDksIDE4LCAxOSwgMjIxLCAyMTEsIDIyMCwgMTA0LCAxOCwgMTksIAotICAgIDIxMSwgMjEzLCAyMTYsIDE5NiwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxNzYsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgCi0gICAgMTU3LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDIwOSwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAyMTEsIDE4LCAxOSwgMjMyLCAKLSAgICAyNTQsIDE4LCAxOSwgMjMyLCAyNTMsIDE4LCAxOSwgMjMyLCAyNTIsIDE4LCAxOSwgMjMyLCAyNTEsIDE4LCAxOSwgMjMzLCAKLSAgICA0LCAxOCwgMTksIDIzMywgMywgMTgsIDE5LCAyMzMsIDUsIDE4LCAxOSwgMjE2LCAyMTAsIDIxNiwgMTk2LCAxOCwgMTksIAotICAgIDIxNiwgMjEwLCAyMTYsIDE3NiwgMTgsIDE5LCAyMTYsIDIxMCwgMjE2LCAxNzIsIDE4LCAxOSwgMjE2LCAyMTAsIDIxNiwgCi0gICAgMTU3LCAxOCwgMTksIDIxNiwgMjEwLCAyMTYsIDE1NCwgMTgsIDE5LCAyMTYsIDIxMCwgMjE2LCAyMDksIDE4LCAxOSwgMjE2LCAKLSAgICAyMTAsIDIxNiwgMjA4LCAxOCwgMTksIDIxNiwgMjEwLCAyMTYsIDIxMSwgMTgsIDE5LCAyNTQsIDE5OCwgMjUzLCAxNjYsIAotICAgIDE4LCAxOSwgMjUxLCAyMjYsIDc2LCAxOCwgMTksIDI1MSwgMjI2LCA3NCwgMTgsIDE5LCAyNTEsIDIyNiwgNzgsIDE4LCAxOSwgCi0gICAgMjUxLCAyMjYsIDYxLCAxOCwgMTksIDI1MSwgMjI2LCAyMTIsIDIyLCAxOCwgMTksIDI1MSwgMjI2LCAyMTEsIDI1MCwgMTgsIAotICAgIDE5LCAyNTEsIDIyNiwgMjExLCAyMjcsIDE4LCAxOSwgMjUxLCAyMjYsIDIxMiwgNjUsIDE4LCAxOSwgMjUxLCAyMjYsIDIyOSwgCi0gICAgMTEyLCAxOCwgMTksIDI1MSwgMjI2LCAyMjgsIDIzOCwgMTgsIDE5LCAyNTEsIDIyNiwgMjI4LCA3OSwgMTgsIDE5LCAyNTEsIAotICAgIDIyNiwgMTk4LCAxOCwgMTksIDI1MSwgMjI2LCAyMzQsIDE4OCwgMTgsIDE5LCAyNTEsIDIyNiwgMjM0LCA5OCwgMTgsIDE5LCAKLSAgICAyNTEsIDIyNiwgMjM0LCAzNCwgMTgsIDE5LCAyNTEsIDIyNiwgMTc2LCAxOCwgMTksIDIyMSwgMjExLCAyNDEsIDI0NSwgMTgsIAotICAgIDE5LCAyMjEsIDIxMSwgMjQxLCAxODcsIDE4LCAxOSwgMjIxLCAyMTEsIDI0MSwgNzUsIDE4LCAxOSwgMjIxLCAyMTEsIDE2MiwgCi0gICAgMTgsIDE5LCA3MywgMjQyLCAyMjcsIDE4LCAxOSwgNzMsIDI0MiwgMjMxLCAxOCwgMTksIDczLCAyNDIsIDI0MywgMTgsIDE5LCAKLSAgICA3MywgMjQyLCAyNDIsIDE4LCAxOSwgNzMsIDI0MiwgMjMyLCAxOCwgMTksIDczLCAyNDMsIDAsIDE4LCAxOSwgNzMsIDIyMiwgCi0gICAgMTQyLCAxOCwgMTksIDczLCAyMjIsIDIxMywgMTgsIDE5LCA3MywgMjIzLCAxMzEsIDE4LCAxOSwgNzMsIDIyMywgMTExLCAKLSAgICAxOCwgMTksIDczLCAyMjMsIDM4LCAxOCwgMTksIDczLCAyMDUsIDE4LCAxOSwgNzMsIDIxMSwgMTk1LCAxOCwgMTksIDczLCAKLSAgICAyMTEsIDIyNywgMTgsIDE5LCA3MywgMjEyLCAyMiwgMTgsIDE5LCA3MywgMjEyLCAxNywgMTgsIDE5LCA3MywgMjExLCAyNTAsIAotICAgIDE4LCAxOSwgNzMsIDIxMiwgNjUsIDE4LCAxOSwgNzMsIDI0MCwgMjAxLCAxOCwgMTksIDczLCAyNDAsIDIwMiwgMTgsIDE5LCAKLSAgICA3MywgMjQwLCAyMDUsIDE4LCAxOSwgNzMsIDI0MCwgMjA0LCAxOCwgMTksIDczLCAyNDAsIDIwMywgMTgsIDE5LCA3MywgCi0gICAgMjQwLCAyMDcsIDE4LCAxOSwgNzMsIDIxNiwgMTM3LCAxOCwgMTksIDczLCAyMTYsIDE1NywgMTgsIDE5LCA3MywgMjE2LCAKLSAgICAxOTYsIDE4LCAxOSwgNzMsIDIxNiwgMTk1LCAxOCwgMTksIDczLCAyMTYsIDE3NiwgMTgsIDE5LCA3MywgMjE2LCAyMDksIAotICAgIDE4LCAxOSwgNzMsIDIxNSwgMTI0LCAxOCwgMTksIDczLCAyMTUsIDEzNCwgMTgsIDE5LCA3MywgMjE1LCAxNTIsIDE4LCAxOSwgCi0gICAgNzMsIDIxNSwgMTUxLCAxOCwgMTksIDczLCAyMTUsIDEzNiwgMTgsIDE5LCA3MywgMjE1LCAxNTcsIDE4LCAxOSwgNzMsIAotICAgIDIyNCwgMTUzLCAxOCwgMTksIDczLCAyMjUsIDE5LCAxOCwgMTksIDczLCAyMjUsIDIyNCwgMTgsIDE5LCA3MywgMjI1LCAKLSAgICAyMTQsIDE4LCAxOSwgNzMsIDIyNSwgMTExLCAxOCwgMTksIDczLCAxOTEsIDE4LCAxOSwgNzMsIDIyNiwgMTA5LCAxOCwgMTksIAotICAgIDczLCAyNDIsIDEyMCwgMTgsIDE5LCA3MywgMjQyLCAxODEsIDE4LCAxOSwgNzMsIDI0MywgNjksIDE4LCAxOSwgNzMsIDI0MywgCi0gICAgNjIsIDE4LCAxOSwgNzMsIDI0MiwgMjIxLCAxOCwgMTksIDczLCAyNDMsIDE0MiwgMTgsIDE5LCA3MywgMjM0LCAxMDYsIDE4LCAKLSAgICAxOSwgNzMsIDIzNCwgMTExLCAxOCwgMTksIDczLCAyMzQsIDEyNSwgMTgsIDE5LCA3MywgMjM0LCAxMjQsIDE4LCAxOSwgNzMsIAotICAgIDIzNCwgMTE4LCAxOCwgMTksIDczLCAyMzQsIDEzOCwgMTgsIDE5LCA3MywgMjM0LCA0NywgMTgsIDE5LCA3MywgMjM0LCA0OCwgCi0gICAgMTgsIDE5LCA3MywgMjM0LCA1MSwgMTgsIDE5LCA3MywgMjM0LCA1MCwgMTgsIDE5LCA3MywgMjM0LCA0OSwgMTgsIDE5LCAKLSAgICA3MywgMjM0LCA1MiwgMTgsIDE5LCA3MywgMjM0LCA1MywgMTgsIDE5LCA3MywgMjI3LCAyNDIsIDE4LCAxOSwgNzMsIDIyOCwgCi0gICAgNzksIDE4LCAxOSwgNzMsIDIyOSwgMTEyLCAxOCwgMTksIDczLCAyMjksIDEwOCwgMTgsIDE5LCA3MywgMjI4LCAyMzgsIDE4LCAKLSAgICAxOSwgNzMsIDE5OCwgMTgsIDE5LCA3MywgMjMwLCAxMDcsIDE4LCAxOSwgNzMsIDIzMCwgMTY2LCAxOCwgMTksIDczLCAyMzEsIAotICAgIDk2LCAxOCwgMTksIDczLCAyMzEsIDg1LCAxOCwgMTksIDczLCAyMzAsIDIzNSwgMTgsIDE5LCA3MywgMTg2LCAxOCwgMTksIAotICAgIDczLCAyMTAsIDIxMiwgMTgsIDE5LCA3MywgMjEwLCAyNDQsIDE4LCAxOSwgNzMsIDIxMSwgNDcsIDE4LCAxOSwgNzMsIDIxMSwgCi0gICAgNDQsIDE4LCAxOSwgNzMsIDIxMSwgOCwgMTgsIDE5LCA3MywgMTkyLCAxOCwgMTksIDczLCAyMzUsIDU3LCAxOCwgMTksIAotICAgIDIyMSwgMjExLCAyMzUsIDU3LCAxOCwgMTksIDczLCAyMzUsIDc0LCAxOCwgMTksIDczLCAyMzUsIDEzMiwgMTgsIDE5LCA3MywgCi0gICAgMjM1LCAxMzAsIDE4LCAxOSwgNzMsIDIzNSwgMTE0LCAxOCwgMTksIDIyMSwgMjExLCAyMzUsIDExNCwgMTgsIDE5LCA3MywgCi0gICAgMjM1LCAxNDcsIDE4LCAxOSwgNzMsIDIzNSwgODcsIDE4LCAxOSwgNzMsIDIzNSwgOTEsIDE4LCAxOSwgNzMsIDIzNSwgMTAxLCAKLSAgICAxOCwgMTksIDczLCAyMzUsIDEwMCwgMTgsIDE5LCA3MywgMjM1LCA5OSwgMTgsIDE5LCA3MywgMjM1LCAxMDIsIDE4LCAxOSwgCi0gICAgNzMsIDIzMiwgMTAzLCAxOCwgMTksIDczLCAyMzIsIDE2MiwgMTgsIDE5LCA3MywgMjMzLCA2NCwgMTgsIDE5LCA3MywgMjMzLCAKLSAgICA1NiwgMTgsIDE5LCA3MywgMjMyLCAyNDcsIDE4LCAxOSwgNzMsIDIzMywgMTQxLCAxOCwgMTksIDczLCAyNDcsIDE1NywgMTgsIAotICAgIDE5LCA3MywgMjQ3LCAxNTgsIDE4LCAxOSwgNzMsIDI0NywgMTYzLCAxOCwgMTksIDczLCAyNDcsIDE2MiwgMTgsIDE5LCA3MywgCi0gICAgMjQ3LCAxNTksIDE4LCAxOSwgNzMsIDI0NywgMTY0LCAxOCwgMTksIDczLCAyMzIsIDI1MCwgMTgsIDE5LCA3MywgMjMyLCAKLSAgICAyNTIsIDE4LCAxOSwgNzMsIDIzMywgMCwgMTgsIDE5LCA3MywgMjMyLCAyNTUsIDE4LCAxOSwgNzMsIDIzMiwgMjU0LCAxOCwgCi0gICAgMTksIDczLCAyMzMsIDQsIDE4LCAxOSwgNzMsIDIxNiwgNTEsIDE4LCAxOSwgNzMsIDIxNiwgNTMsIDE4LCAxOSwgNzMsIAotICAgIDIxNiwgNTYsIDE4LCAxOSwgNzMsIDIxNiwgNTUsIDE4LCAxOSwgNzMsIDIxNiwgNTQsIDE4LCAxOSwgNzMsIDIxNiwgNTcsIAotICAgIDE4LCAxOSwgNzMsIDIxNiwgNDYsIDE4LCAxOSwgNzMsIDIxNiwgNDcsIDE4LCAxOSwgNzMsIDIxNiwgNTksIDE4LCAxOSwgCi0gICAgNzMsIDIxNiwgNTgsIDE4LCAxOSwgNzMsIDIxNiwgNDgsIDE4LCAxOSwgNzMsIDIxNiwgNjAsIDE4LCAxOSwgNzMsIDIxMCwgCi0gICAgMTMsIDE4LCAxOSwgNzMsIDIxMCwgMjMsIDE4LCAxOSwgNzMsIDIxMCwgOTQsIDE4LCAxOSwgNzMsIDIxMCwgOTIsIDE4LCAKLSAgICAxOSwgNzMsIDIxMCwgNDQsIDE4LCAxOSwgNzMsIDIxMCwgMTE2LCAxOCwgMTksIDczLCAyMTAsIDE1OSwgMTgsIDE5LCA3MywgCi0gICAgNjUsIDIxMCwgMTU5LCAxOCwgMTksIDczLCAyNDYsIDM2LCAxOCwgMTksIDczLCAyNDYsIDM3LCAxOCwgMTksIDczLCAyNDYsIAotICAgIDQ0LCAxOCwgMTksIDczLCAyNDYsIDQzLCAxOCwgMTksIDczLCAyNDYsIDM5LCAxOCwgMTksIDczLCAyNDYsIDQ2LCAxOCwgCi0gICAgMTksIDczLCAyMTgsIDg0LCAxOCwgMTksIDczLCAyMTksIDYwLCAxOCwgMTksIDczLCAyMjEsIDE4MywgMTgsIDE5LCA3MywgCi0gICAgMjIxLCAxNzIsIDE4LCAxOSwgNzMsIDIxOSwgMTkzLCAxOCwgMTksIDczLCAyMDYsIDE4LCAxOSwgNzMsIDIxOSwgMjI3LCAKLSAgICAxOCwgMTksIDczLCAyMjAsIDksIDE4LCAxOSwgNzMsIDIyMCwgNjUsIDE4LCAxOSwgNzMsIDIyMCwgNjMsIDE4LCAxOSwgNzMsIAotICAgIDIyMCwgMzQsIDE4LCAxOSwgNzMsIDIyMCwgMTA0LCAxOCwgMTksIDczLCAyMjAsIDEwNiwgMTgsIDE5LCA3MywgMjE1LCAKLSAgICAxNjQsIDE4LCAxOSwgNzMsIDIxNSwgMTY3LCAxOCwgMTksIDczLCAyMTUsIDE3OSwgMTgsIDE5LCA3MywgMjE1LCAxNzgsIAotICAgIDE4LCAxOSwgNzMsIDIxNSwgMTY4LCAxOCwgMTksIDczLCAyMTUsIDE4NCwgMTgsIDE5LCA3MywgMjUwLCA3NywgMTgsIDE5LCAKLSAgICA3MywgMjUwLCA5NCwgMTgsIDE5LCA3MywgMjUwLCAxMzksIDE4LCAxOSwgNzMsIDI1MCwgMTM2LCAxOCwgMTksIDczLCAyNTAsIAotICAgIDExOCwgMTgsIDE5LCA3MywgMjUwLCAxNjUsIDE4LCAxOSwgNzMsIDIxNSwgMTI3LCAxOCwgMTksIDczLCAyMTUsIDEyOCwgCi0gICAgMTgsIDE5LCA3MywgMjE1LCAxMzEsIDE4LCAxOSwgNzMsIDIxNSwgMTMwLCAxOCwgMTksIDczLCAyMTUsIDEyOSwgMTgsIDE5LCAKLSAgICA3MywgMjE1LCAxMzIsIDE4LCAxOSwgMjUwLCAxMTksIDUwLCAxOCwgMTksIDI0MywgMjM2LCAyMTgsIDEzMSwgMTgsIDE5LCAKLSAgICAyMjQsIDgzLCAxOCwgMTksIDIyOSwgNzgsIDE4LCAxOSwgMjI4LCAxMDUsIDE4LCAxOSwgMjI4LCAxMDQsIDE4LCAxOSwgCi0gICAgMjI4LCAxMDMsIDE4LCAxOSwgMjI4LCAxMDIsIDE4LCAxOSwgMjI4LCAxMDcsIDE4LCAxOSwgMjI4LCAxMDYsIDE4LCAxOSwgCi0gICAgMjExLCAyMTMsIDIxNiwgMTI2LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDEyNSwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAKLSAgICAxMjQsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTIzLCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDEyMiwgMTgsIDE5LCAyMTEsIAotICAgIDIxMywgMjE2LCAxMjksIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTI4LCAxOCwgMTksIDIxMSwgMjEzLCA0MCwgMjE2LCAKLSAgICAyMTEsIDE4LCAxOSwgMjUxLCAyMjYsIDIxMiwgOTgsIDIyNiwgMjMwLCAyMTksIDIxLCA3OSwgMjI2LCAyMzAsIDEsIDI1MiwgCi0gICAgNTYsIDIyNiwgMjMwLCAxLCAyMzIsIDkyLCAyMjYsIDIzMCwgMSwgMjQ0LCAxNTksIDIyNiwgMjMwLCAxLCAyMjIsIDE3LCAKLSAgICAyMjYsIDIzMCwgMSwgMjI4LCAxOTgsIDIyNiwgMjMwLCAxLCAyMTQsIDIyNiwgMjI2LCAyMzAsIDEsIDI0OCwgMjA1LCAyMjYsIAotICAgIDIzMCwgMSwgMjE2LCA4MSwgMjI2LCAyMzAsIDEsIDI0OSwgMjM3LCAyMjYsIDIzMCwgMSwgMjUwLCAxODgsIDIyNiwgMjMwLCAKLSAgICAxLCAyMzAsIDk2LCAyMjYsIDIzMCwgMSwgMjQyLCAxNjMsIDIyNiwgMjMwLCAxLCAyMjksIDY4LCAyMjYsIDIzMCwgMSwgCi0gICAgMjE4LCAxMjQsIDIyNiwgMjMwLCAxLCAyMjIsIDEzNywgMjI2LCAyMzAsIDEsIDI1NCwgMjA3LCAyMjYsIDIzMCwgMSwgMjI2LCAKLSAgICAxOTEsIDIyNiwgMjMwLCAxLCAyMTQsIDE1MCwgMjI2LCAyMzAsIDEsIDI0NSwgMjM5LCAyMjYsIDIzMCwgMSwgMjM1LCAxOTUsIAotICAgIDIyNiwgMjMwLCAxLCAyNDUsIDI0MCwgMjI2LCAyMzAsIDEsIDIyNiwgMTYyLCAyMjYsIDIzMCwgMSwgMjE0LCAyMDYsIDIyNiwgCi0gICAgMjMwLCAxLCAyMzYsIDQ2LCAyMjYsIDIzMCwgMSwgMjQ1LCAyMzcsIDIyNiwgMjMwLCAxLCAyMjUsIDIwNSwgMjI2LCAyMzAsIAotICAgIDI0NCwgMTU4LCA3OSwgMjI2LCAyMzAsIDIyMywgNTIsIDI0NCwgMTU4LCA3OSwgMTc4LCAxLCAyNDQsIDE0OSwgMjQ0LCAKLSAgICAxNDEsIDI0NCwgMTYzLCAyNDUsIDE0LCAxNzgsIDEsIDIxNCwgMTA1LCAxNzgsIDEsIDIxNCwgMTM1LCAyMTQsIDE1MSwgNjksIAotICAgIDE3OCwgMSwgMjEwLCAyMTQsIDE3OCwgMSwgMjExLCAxMTcsIDE3OCwgMSwgMjEyLCA5OCwgMTc4LCAxLCAyMTYsIDEzMSwgCi0gICAgMjE2LCAxMzAsIDIxNiwgMTUyLCAxNzgsIDEsIDI0NSwgNjcsIDE3OCwgMSwgMjU0LCAxMDEsIDYxLCAxNzgsIDEsIDIyNiwgCi0gICAgMTQ3LCA3OCwgMTc4LCAxLCAyNTUsIDI2LCA2MSwgMTc4LCAxLCAyNTQsIDIzNiwgMTc4LCAxLCAyMzIsIDEzOSwgNzgsIAotICAgIDE3OCwgMSwgMjE5LCAyNDYsIDc4LCAxNzgsIDEsIDc4LCAxNzgsIDEsIDIyNiwgMjM4LCAxNzgsIDEsIDIyNiwgMjAwLCAKLSAgICAxNzgsIDEsIDIyMywgMTY3LCAyMjMsIDE4MCwgMjIzLCA5NywgMTUzLCAxNzgsIDEsIDIzNCwgMTk5LCAxNzgsIDEsIDI1MCwgCi0gICAgMTg1LCAxNzgsIDEsIDIzNCwgMjAwLCAyMzUsIDI5LCAxNzgsIDEsIDI0MywgMjA5LCAxNzgsIDEsIDI0NSwgMTQ2LCAxNzgsIAotICAgIDEsIDI0MywgNjUsIDI0MiwgNzMsIDI0MywgMjA5LCAxNzgsIDEsIDI0MywgMTAzLCAxNzgsIDEsIDIxMSwgMTg4LCAyMTEsIAotICAgIDE4MiwgMjEyLCA5OCwgMTc4LCAxLCAyNDIsIDQ1LCAyNDIsIDY3LCAxNzgsIDEsIDI0MiwgNDksIDI0MiwgNjcsIDE3OCwgMSwgCi0gICAgMjMyLCAxNDEsIDI0MiwgNjcsIDE3OCwgMSwgMjE5LCAyNDksIDI0MiwgNjcsIDE3OCwgMSwgMjI5LCAxOTAsIDIyNywgMTYxLCAKLSAgICAyMjksIDE5MSwgMjMwLCAzMCwgMTc4LCAxLCAyMTksIDI0NywgMjMwLCAzMCwgMTc4LCAxLCAyNDYsIDEyMywgMTc4LCAxLCAKLSAgICAyMzUsIDE3NSwgMjM1LCAxNzksIDIzNSwgMTY4LCA3NCwgMTc4LCAxLCA3NiwgMTc4LCAxLCAyMzUsIDEyMywgMjM1LCAxNTAsIAotICAgIDE3OCwgMSwgMjQzLCA1MCwgMTc4LCAxLCAyMzIsIDE0MiwgMjU0LCAyNTIsIDE3OCwgMSwgMjE5LCAyNTEsIDYxLCAxNzgsIAotICAgIDEsIDIzNSwgMTYwLCAyNDUsIDEyMSwgMTc4LCAxLCAyMjUsIDE2NywgMjI1LCAxODksIDIyNiwgMTA5LCAxNzgsIDEsIDI1NCwgCi0gICAgMTcyLCAyNDUsIDExOSwgMTc4LCAxLCAyMTksIDI2LCAyMjIsIDkzLCAxNzgsIDEsIDIxOSwgMTgxLCAyMzIsIDEzOCwgMjIyLCAKLSAgICA5MywgMTc4LCAxLCAyMTksIDI0NSwgMjIyLCA5MywgMTc4LCAxLCAyNTEsIDc0LCAxNzgsIDEsIDIxMCwgMTU5LCAxNzgsIDEsIAotICAgIDIxNiwgNjQsIDIxNiwgNzQsIDIxNSwgNDEsIDIxNywgMTUzLCAxNzgsIDEsIDIxOSwgMjQ0LCAyMTcsIDE1MywgMTc4LCAxLCAKLSAgICAyNDksIDY4LCAxNzgsIDEsIDI1MiwgMzksIDI1MiwgNDIsIDI1MSwgMjMyLCAyNTMsIDE2NiwgMTc4LCAxLCAyMTksIDI1MCwgCi0gICAgMjUzLCAxNjYsIDE3OCwgMSwgMjQ2LCAxMjIsIDE3OCwgMSwgMjI2LCAxNzUsIDE3OCwgMSwgMjQ1LCAyMDQsIDI0NSwgMjA2LCAKLSAgICA3NiwgMTc4LCAxLCAyMzEsIDE4MywgMjMxLCAxOTEsIDE5NCwgMTc4LCAxLCAyMzIsIDE0MCwgMTk0LCAxNzgsIDEsIDIxOSwgCi0gICAgMjQ4LCAxOTQsIDE3OCwgMSwgMjMzLCA3OSwgMjMzLCAxMjAsIDIzMiwgMTQ5LCAxNTYsIDE3OCwgMSwgMjQ2LCAxMjQsIAotICAgIDE3OCwgMSwgMjM1LCAyMzcsIDE3OCwgMSwgMjM1LCAyMzgsIDE3OCwgMSwgMjQ4LCAyMTgsIDI0OCwgMjIzLCAyNDksIDY4LCAKLSAgICAxNzgsIDEsIDIyNiwgMTQyLCAyNDUsIDY2LCA3OCwgMTc4LCAxLCAyNDUsIDIzNSwgMTc4LCAxLCAyMzUsIDE5NCwgMTc4LCAKLSAgICAxLCAyNDksIDg2LCAxNzgsIDEsIDI1MSwgMjUsIDE3OCwgMSwgMjUwLCAxOTcsIDE3OCwgMSwgMjE4LCAxNjMsIDE3OCwgMSwgCi0gICAgMjMyLCAxMzcsIDE3OCwgMSwgMjE5LCAyNDMsIDE3OCwgMSwgMjQwLCAxMTcsIDE3OCwgMSwgMjI0LCA5OSwgMTc4LCAxLCAKLSAgICAyMTEsIDE3OCwgMTc4LCAyMTksIDE1NywgMjI0LCAxNDMsIDE3OCwgMjMwLCA5MCwgMjI0LCAxNDMsIDE3OCwgMjQ5LCAxMzksIAotICAgIDIyNCwgMTQzLCAxNzgsIDI1NCwgMTQsIDg3LCAxNzgsIDIxNSwgODIsIDg3LCAxNzgsIDI1MiwgNTQsIDg3LCAyMTcsIDg0LCAKLSAgICAxLCA2MSwgMjE3LCA4NCwgMSwgNzQsIDIxNywgODQsIDEsIDY5LCAyMTcsIDg0LCAxLCAxNzYsIDIxNywgODQsIDEsIDI0MywgCi0gICAgMTQyLCAyMTcsIDg0LCAxLCAyMjksIDgyLCAyMTcsIDg0LCAxLCAyMTcsIDEwNiwgMjE3LCA4NCwgMSwgMjQ4LCAyMjksIAotICAgIDIxNywgODQsIDEsIDE5OCwgMjE3LCA4NCwgMSwgMTkxLCAyMTcsIDg0LCAxLCAyNTIsIDE5OSwgMjE3LCA4NCwgMSwgMTg2LCAKLSAgICAyMTcsIDg0LCAxLCAxOTIsIDIxNywgODQsIDEsIDIzMywgMTQxLCAyMTcsIDg0LCAxLCAyMTIsIDY1LCAyMTcsIDg0LCAxLCAKLSAgICAyMDYsIDIxNywgODQsIDEsIDE2MiwgMjE3LCA4NCwgMjUsIDUsIDc0LCAyMTcsIDg0LCAyNSwgNSwgNjksIDIxNywgODQsIDUsIAotICAgIDIxMywgMTUyLCAyNDIsIDE0LCAxLCA2MSwgMjQyLCAxNCwgMSwgNzQsIDI0MiwgMTQsIDEsIDY5LCAyNDIsIDE0LCAxLCAKLSAgICAxNzYsIDI0MiwgMTQsIDEsIDI0MywgMTQyLCAyNDIsIDE0LCAxLCAyMjksIDgyLCAyNDIsIDE0LCAxLCAyMTcsIDEwNiwgCi0gICAgMjQyLCAxNCwgMSwgMjQ4LCAyMjksIDI0MiwgMTQsIDEsIDE5OCwgMjQyLCAxNCwgMSwgMTkxLCAyNDIsIDE0LCAxLCAyNTIsIAotICAgIDE5OSwgMjQyLCAxNCwgMSwgMTg2LCAyNDIsIDE0LCAxLCAxOTIsIDI0MiwgMTQsIDEsIDIwNSwgMjQyLCAxNCwgMSwgMjMzLCAKLSAgICAxNDEsIDI0MiwgMTQsIDEsIDIxMiwgNjUsIDI0MiwgMTQsIDEsIDIwNiwgMjQyLCAxNCwgMSwgMTYyLCAyNDIsIDE0LCAyNSwgCi0gICAgNSwgNzQsIDI0MiwgMTQsIDI1LCA1LCA2OSwgMjQyLCAxNCwgNSwgMjI2LCA1MywgMjI1LCAxMjksIDIxOSwgMTU3LCAyMjQsIAotICAgIDE0MywgMjI1LCAxMjksIDUyLCAyMjQsIDE0MywgMjUxLCAxMjgsIDEsIDYxLCAyNTEsIDEyOCwgMSwgNzQsIDI1MSwgMTI4LCAKLSAgICAxLCA2OSwgMjUxLCAxMjgsIDEsIDE3NiwgMjUxLCAxMjgsIDEsIDI0MywgMTQyLCAyNTEsIDEyOCwgMSwgMjI5LCA4MiwgCi0gICAgMjUxLCAxMjgsIDEsIDIxNywgMTA2LCAyNTEsIDEyOCwgMSwgMjQ4LCAyMjksIDI1MSwgMTI4LCAxLCAxOTgsIDI1MSwgMTI4LCAKLSAgICAxLCAxOTEsIDI1MSwgMTI4LCAxLCAyNTIsIDE5OSwgMjUxLCAxMjgsIDEsIDE4NiwgMjUxLCAxMjgsIDEsIDE5MiwgMjUxLCAKLSAgICAxMjgsIDEsIDIwNSwgMjUxLCAxMjgsIDEsIDIzMywgMTQxLCAyNTEsIDEyOCwgMSwgMjEyLCA2NSwgMjUxLCAxMjgsIDEsIAotICAgIDIwNiwgMjUxLCAxMjgsIDEsIDE2MiwgMjUxLCAxMjgsIDI1LCA1LCA3NCwgMjUxLCAxMjgsIDI1LCA1LCA2OSwgMjE3LCA4MywgCi0gICAgMSwgNjEsIDIxNywgODMsIDEsIDc0LCAyMTcsIDgzLCAxLCA2OSwgMjE3LCA4MywgMSwgMTc2LCAyMTcsIDgzLCAxLCAyNDMsIAotICAgIDE0MiwgMjE3LCA4MywgMSwgMjI5LCA4MiwgMjE3LCA4MywgMSwgMjE3LCAxMDYsIDIxNywgODMsIDEsIDI0OCwgMjI5LCAKLSAgICAyMTcsIDgzLCAxLCAxOTgsIDIxNywgODMsIDEsIDE5MSwgMjE3LCA4MywgMSwgMjUyLCAxOTksIDIxNywgODMsIDEsIDE4NiwgCi0gICAgMjE3LCA4MywgMSwgMTkyLCAyMTcsIDgzLCAxLCAyMzMsIDE0MSwgMjE3LCA4MywgMSwgMjEyLCA2NSwgMjE3LCA4MywgMSwgCi0gICAgMjA2LCAyMTcsIDgzLCAyNSwgNSwgNzQsIDIxNywgODMsIDI1LCA1LCA2OSwgNzAsIDEsIDE3NiwgNzAsIDEsIDIzNCwgMTM4LCAKLSAgICA3MCwgMSwgMjM0LCAzNCwgNzAsIDEsIDIzNCwgMTExLCA3MCwgMSwgMjI5LCA5LCA3MCwgMSwgMjUxLCA0MSwgNzAsIDEsIAotICAgIDI1MCwgMTY1LCA3MCwgMSwgMjQ5LCAyNDYsIDcwLCAxLCAyNTAsIDk0LCA3MCwgMSwgMjI3LCAxMzgsIDcwLCAxLCAyNDgsIAotICAgIDIyOSwgNzAsIDEsIDIxNSwgMTQ1LCA3MCwgMSwgMjQ3LCAxNTMsIDcwLCAxLCAyMTUsIDE0MCwgNzAsIDEsIDIyOCwgODUsIAotICAgIDcwLCAxLCAyMTcsIDEwNiwgNzAsIDEsIDIxNiwgMjA5LCA3MCwgMSwgMTEyLCA3MCwgMSwgMjE2LCAxNTcsIDcwLCAxLCAKLSAgICAyMjgsIDc5LCA3MCwgMSwgMjUyLCAxOTksIDcwLCAxLCAyMjUsIDE1MCwgNzAsIDEsIDIyNSwgMTksIDcwLCAxLCAyMjUsIAotICAgIDEyNCwgNzAsIDEsIDIzMCwgMTY2LCA3MCwgMSwgMjEwLCAyNDQsIDcwLCAxLCAyMjIsIDIxMywgNzAsIDEsIDIzMiwgMTYyLCAKLSAgICA3MCwgMSwgMjEzLCAxMzgsIDcwLCAxLCAyMjAsIDEwNCwgNzAsIDEsIDIxOCwgMTg2LCA3MCwgMSwgMjA2LCA3MCwgMSwgCi0gICAgMTYyLCA3MCwgMSwgMjMzLCAxNDEsIDcwLCAxLCAyMjQsIDkxLCA3MCwgMjM1LCAyNTAsIDI1LCAyMjQsIDc3LCA3MCwgMjM1LCAKLSAgICAyNTAsIDI1LCAyMjQsIDkwLCA3MCwgMjM1LCAyNTAsIDI1LCAyMjQsIDU2LCA3MCwgMjM1LCAyNTAsIDI1LCAyMjQsIDUxLCAKLSAgICA3MCwgMjM1LCAyNTAsIDI1LCAyMjQsIDMzLCA3MCwgMjM1LCAyNTAsIDI1LCAyMjQsIDUsIDcwLCAyMzUsIDI1MCwgMjUsIAotICAgIDIyMywgMjQ5LCA3MCwgMjM1LCAyNTAsIDI1LCAyMjMsIDI0OCwgNzAsIDIzNSwgMjUwLCAyNSwgMjIyLCAxMDIsIDcwLCAKLSAgICAyMzUsIDI1MCwgMjUsIDIyMiwgOTUsIDcwLCAyMzUsIDI1MCwgMjUsIDIzMiwgNjcsIDcwLCAyMzUsIDI1MCwgMjUsIDIzMiwgCi0gICAgNTcsIDcwLCAyMzUsIDI1MCwgMjUsIDIyNCwgNzIsIDcwLCAyMzUsIDI1MCwgMjUsIDIyNCwgODMsIDcwLCAyMzUsIDI1MCwgCi0gICAgMjUsIDIyNCwgNDEsIDIxNSwgNDksIDExMSwgNzAsIDIzNSwgMjUwLCAyNSwgMjI0LCA0MSwgMjE1LCA0OSwgMTA1LCA3MCwgCi0gICAgMjM1LCAyNTAsIDI1LCAyMjQsIDczLCA3MCwgMjUsIDIzNSwgMjM2LCAyNTQsIDUzLCA3MCwgMjUsIDIzNSwgMjM2LCAyNTUsIAotICAgIDgyLCA3MCwgMjUsIDUsIDI1NSwgODIsIDcwLCAyNSwgNSwgNzQsIDcwLCAyNSwgNSwgMjM2LCA0MCwgNzAsIDI1LCA1LCAKLSAgICAyMTEsIDExNywgNzAsIDI1LCA1LCAyMTAsIDE2OSwgNzAsIDI1LCA1LCA2OSwgNzAsIDI1LCA1LCAyMTQsIDExOCwgNzAsIAotICAgIDI1LCA1LCAyMTQsIDIyOSwgNzAsIDI1LCA1LCAyMjYsIDIzOCwgNzAsIDI1LCA1LCAxOTIsIDcwLCAyNSwgNSwgMjM2LCA2NywgCi0gICAgNzAsIDI1LCA1LCA3NiwgNzAsIDI1LCA1LCAyNTQsIDI1MiwgNzAsIDI1LCA1LCAyNTQsIDIxMCwgNzAsIDI1LCA1LCAyMjYsIAotICAgIDE4NywgNzAsIDI1LCA1LCAyNTMsIDIwMCwgNzAsIDUsIDIyOCwgMjExLCA3MCwgNSwgMjIzLCAxMjksIDcwLCA1LCAyMTAsIAotICAgIDE4MCwgNzAsIDUsIDIzMCwgNTcsIDcwLCA1LCAyMTUsIDIxNCwgNzAsIDUsIDI1MiwgMTUxLCA3MCwgNSwgMjIyLCAyMDgsIAotICAgIDcwLCA1LCAyMTYsIDQxLCA3MCwgNSwgMjM0LCAyNDcsIDcwLCA1LCAyNTQsIDIxMiwgNzAsIDUsIDIyMSwgMjQ2LCAyMjEsIAotICAgIDI0MCwgNzAsIDUsIDIxMywgMTQ5LCA3MCwgNSwgMjQ5LCAyNDAsIDcwLCA1LCAyNTIsIDEyNSwgNzAsIDUsIDIzNCwgMTMxLCAKLSAgICA3MCwgNSwgMjUyLCAxNDUsIDcwLCA1LCAyNTEsIDE3LCAyMjUsIDc1LCAyMzMsIDE5MywgNzAsIDUsIDIzMywgMzYsIDIxNiwgCi0gICAgMTgsIDcwLCA1LCAyNTIsIDI4LCA3MCwgNSwgMjI1LCAxMjYsIDIzMCwgMTA0LCA3MCwgNSwgMjM0LCAxNSwgNzAsIDI0OSwgCi0gICAgMTA2LCAxNiwgMjIzLCAzMSwgNzAsIDUsIDI1MywgMTgyLCA3MCwgNSwgMjUzLCAyMDMsIDcwLCAyMSwgMjEwLCA4NiwgNzAsIAotICAgIDIxLCAxMTEsIDcwLCAyMSwgMTA1LCA3MCwgMjEsIDE1OCwgNzAsIDIxLCAxNjEsIDcwLCAyMSwgMTkwLCA3MCwgMjEsIDE5NSwgCi0gICAgNzAsIDIxLCAxOTksIDcwLCAyMSwgMTk2LCA3MCwgMjEsIDIwMSwgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjE5LCAKLSAgICA0NSwgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjMwLCA3NiwgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjI1LCAKLSAgICA3NCwgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjUyLCA1NywgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjUxLCAKLSAgICAxMTEsIDcwLCAxNiwgMjMzLCAzNiwgMjUzLCAyMDUsIDIyNCwgMjE4LCA3MCwgMTYsIDIzMywgMzYsIDI1MywgMjA1LCAyMjQsIAotICAgIDIxMiwgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjI0LCAyMTAsIDcwLCAxNiwgMjMzLCAzNiwgMjUzLCAyMDUsIDIyNCwgCi0gICAgMjE2LCA3MCwgMTYsIDIzMywgMzYsIDI1MywgMjA1LCAyMjQsIDIxNCwgODMsIDI1MSwgMjQ0LCA4MywgMjQ1LCAxNzEsIDgzLCAKLSAgICAyNDksIDIyNywgODMsIDI0MywgMjM2LCAyMTgsIDEzMSwgODMsIDI0OSwgMjM0LCA4MywgMjQ0LCAxOSwgMjQ3LCAxMjYsIAotICAgIDgzLCAyMTYsIDQwLCAyMTksIDU0LCAyNDAsIDE3NSwgODMsIDIxOSwgMTkyLCAzLCAyNTEsIDE4MCwgMjMxLCAxNTksIDgzLCAKLSAgICAyMzEsIDE4OCwgMjQ5LCAyMjcsIDgzLCAyMzEsIDE4OCwgMjQzLCAyMzYsIDIxOCwgMTMxLCA4MywgMjI4LCAxOTYsIDgzLCAKLSAgICAyNDQsIDUsIDQ1LCAyMjEsIDE1OSwgMTExLCA4MywgMjQ0LCA1LCA0NSwgMjIxLCAxNTksIDEwNSwgODMsIDI0NCwgNSwgNDUsIAotICAgIDIyMSwgMTU5LCAxNTgsIDgzLCAyNSwgMjIwLCAxMzksIDgzLCAyMSwgMjEwLCA4NiwgODMsIDIxLCAxMTEsIDgzLCAyMSwgCi0gICAgMTA1LCA4MywgMjEsIDE1OCwgODMsIDIxLCAxNjEsIDgzLCAyMSwgMTkwLCA4MywgMjEsIDE5NSwgODMsIDIxLCAxOTksIDgzLCAKLSAgICAyMSwgMTk2LCA4MywgMjEsIDIwMSwgODMsIDEsIDYxLCA4MywgMSwgNzYsIDgzLCAxLCA3NCwgODMsIDEsIDc4LCA4MywgMSwgCi0gICAgNjksIDgzLCAxLCAyMjYsIDIzOCwgODMsIDEsIDIxNCwgMjE0LCA4MywgMSwgMjQ1LCAyMTcsIDgzLCAxLCAxOTgsIDgzLCAxLCAKLSAgICAyNTQsIDEyMywgODMsIDEsIDI1MiwgMTk5LCA4MywgMSwgMTkxLCA4MywgMSwgMjI0LCA5MSwgODMsIDEsIDI0MywgMTQyLCAKLSAgICA4MywgMSwgMTg2LCA4MywgMSwgMjMzLCAxNDEsIDgzLCAxLCAyMDYsIDgzLCAxLCAyMjAsIDEwNCwgODMsIDEsIDIxNywgCi0gICAgMTA2LCA4MywgMSwgMjQ4LCAyMjksIDgzLCAxLCAyNTAsIDE2NSwgODMsIDEsIDIzNSwgMTQ3LCA4MywgMSwgMTkyLCA4MywgCi0gICAgMSwgMjA1LCA4MywgMSwgMjEyLCA2NSwgODMsIDEsIDI0NCwgMjA0LCA4MywgMSwgMTc2LCA4MywgMSwgMjM0LCAxMzgsIDgzLCAKLSAgICAxLCAyMTUsIDE4NCwgODMsIDEsIDIxMCwgMTE2LCA4MywgMSwgMjQyLCA1MywgODMsIDEsIDIxMCwgMTYsIDgzLCAxLCAyMzMsIAotICAgIDQsIDgzLCAxLCAyMTAsIDY5LCA4MywgMSwgMjUwLCAxMTgsIDgzLCAxLCAyMTYsIDQwLCAyMDAsIDI1LCA1MCwgODMsIDEsIAotICAgIDIxNiwgNDAsIDc2LCA4MywgMSwgMjE2LCA0MCwgNzQsIDgzLCAxLCAyMTYsIDQwLCA3OCwgODMsIDEsIDIxNiwgNDAsIDY5LCAKLSAgICA4MywgMSwgMjE2LCA0MCwgMjI2LCAyMzgsIDgzLCAxLCAyMTYsIDQwLCAyMTQsIDIxNCwgODMsIDEsIDIxNiwgNDAsIDI1NCwgCi0gICAgMTIzLCA4MywgMSwgMjE2LCA0MCwgMjUyLCAxOTksIDgzLCAxLCAyMTYsIDQwLCAxOTEsIDgzLCAxLCAyMTYsIDQwLCAyMjQsIAotICAgIDkxLCA4MywgMSwgMjE2LCA0MCwgMjQzLCAxNDIsIDgzLCAxLCAyMTYsIDQwLCAxODYsIDgzLCAxLCAyMTYsIDQwLCAyMTcsIAotICAgIDEwNiwgODMsIDEsIDIxNiwgNDAsIDI0OCwgMjI5LCA4MywgMSwgMjE2LCA0MCwgMjUwLCAxNjUsIDgzLCAxLCAyMTYsIDQwLCAKLSAgICAyMzUsIDE0NywgODMsIDEsIDIxNiwgNDAsIDIxNSwgMTg0LCA4MywgMSwgMjE2LCA0MCwgMTkyLCA4MywgMSwgMjE2LCA0MCwgCi0gICAgMjEyLCA2NSwgODMsIDEsIDIxNiwgNDAsIDE3NiwgODMsIDEsIDIxNiwgNDAsIDI0MywgMTM5LCA4MywgMSwgMjE2LCA0MCwgCi0gICAgMjQyLCA1MywgODMsIDEsIDIxNiwgNDAsIDIzNSwgMTEzLCA4MywgMSwgMjE2LCA0MCwgMjI4LCAyMzYsIDgzLCAxLCAyMTYsIAotICAgIDQwLCAyNDYsIDQ2LCA4MywgMSwgMjE5LCAxOTIsIDc2LCA4MywgMSwgMjE5LCAxOTIsIDc0LCA4MywgMSwgMjE5LCAxOTIsIAotICAgIDIzNSwgMTU4LCA4MywgMSwgMjE5LCAxOTIsIDIxNCwgMjE0LCA4MywgMSwgMjE5LCAxOTIsIDY5LCA4MywgMSwgMjE5LCAKLSAgICAxOTIsIDI1NCwgMTIzLCA4MywgMSwgMjE5LCAxOTIsIDE3NiwgODMsIDEsIDIxOSwgMTkyLCAyNDMsIDE0MiwgODMsIDEsIAotICAgIDIxOSwgMTkyLCAxNjIsIDgzLCAxLCAyMTksIDE5MiwgMTkxLCA4MywgMSwgMjE5LCAxOTIsIDIyMCwgMTA0LCA4MywgMSwgCi0gICAgMjE5LCAxOTIsIDIxNywgMTA2LCA4MywgMSwgMjE5LCAxOTIsIDI0OCwgMjI5LCA4MywgMSwgMjE5LCAxOTIsIDIzNSwgMTQ3LCAKLSAgICA4MywgMSwgMjE5LCAxOTIsIDI0NCwgMjA0LCA4MywgMSwgMjE5LCAxOTIsIDI0MywgMTM5LCA4MywgMSwgMjE5LCAxOTIsIAotICAgIDI0MiwgNTMsIDgzLCAxLCAyMTksIDE5MiwgMjE1LCAxODQsIDgzLCAxLCAyMTksIDE5MiwgMjEwLCAxMTYsIDgzLCAxLCAKLSAgICAyMTksIDE5MiwgMjIzLCAxODcsIDgzLCAxLCAyMTksIDE5MiwgMjUwLCAxNjUsIDgzLCAxLCAyMTksIDE5MiwgMjEwLCA4MiwgCi0gICAgODMsIDEsIDIzMSwgMTg4LCA3NCwgODMsIDEsIDIzMSwgMTg4LCAxNzYsIDgzLCAxLCAyMzEsIDE4OCwgMjA1LCA4MywgMSwgCi0gICAgMjMxLCAxODgsIDI0NCwgMjA0LCA4MywgMSwgMjMxLCAxODgsIDIxMCwgODIsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIAotICAgIDI1NCwgODQsIDExMSwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjEzLCAxNDgsIDExMSwgODMsIDEsIDI1NCwgMTcxLCAKLSAgICAyNDMsIDEyMywgMjQ4LCAxOTQsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxNCwgMjI0LCA4MywgMSwgMjU0LCAxNzEsIAotICAgIDI0MywgMTIzLCAyMzUsIDIwMCwgMjE0LCAyMjQsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDI1MiwgMTYzLCA4MywgMSwgCi0gICAgMjU0LCAxNzEsIDI0MywgMTIzLCAxMzQsIDI1MiwgMTYzLCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCA2MSwgODMsIDEsIAotICAgIDI1NCwgMTcxLCAyNDMsIDEyMywgNzQsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDE3NiwgODMsIDEsIDI1NCwgMTcxLCAKLSAgICAyNDMsIDEyMywgMjI5LCA4MiwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjUxLCA0MSwgODMsIDEsIDI1NCwgMTcxLCAKLSAgICAyNDMsIDEyMywgMjE1LCAxNTcsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxNSwgMTQ1LCA4MywgMSwgMjU0LCAxNzEsIAotICAgIDI0MywgMTIzLCAyNDgsIDE0MywgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjI4LCAxMTUsIDgzLCAxLCAyNTQsIDE3MSwgCi0gICAgMjQzLCAxMjMsIDIxNywgMTA2LCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCAyNDgsIDIyOSwgODMsIDEsIDI1NCwgMTcxLCAKLSAgICAyNDMsIDEyMywgMTkxLCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCAyMjUsIDE1MCwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIAotICAgIDEyMywgMjE4LCAyMjUsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxMCwgODIsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAKLSAgICAxMjMsIDIxMCwgMTE2LCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCAyNTQsIDIxOCwgODMsIDEsIDIxNiwgNDAsIDI1NCwgCi0gICAgMTcxLCAyNDMsIDEyMywgMjE3LCAxMDYsIDgzLCAxLCAyMTYsIDQwLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxMCwgODIsIDgzLCAKLSAgICAxLCAyMzEsIDE4OCwgMjU0LCAxNzEsIDI0MywgMTIzLCAyNDMsIDAsIDgzLCAxLCAyMzEsIDE4OCwgMjU0LCAxNzEsIDI0MywgCi0gICAgMTIzLCAyMjksIDgyLCA4MywgMSwgMjMxLCAxODgsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjUxLCA0MSwgODMsIDEsIDIzMSwgCi0gICAgMTg4LCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIzNSwgMTIwLCA4MywgMSwgMjMxLCAxODgsIDI1NCwgMTcxLCAyNDMsIDEyMywgCi0gICAgMjE1LCAxNTcsIDgzLCAxLCAyMzEsIDE4OCwgMjU0LCAxNzEsIDI0MywgMTIzLCAyNDgsIDEyNywgODMsIDEsIDIzMSwgMTg4LCAKLSAgICAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxNywgMTA2LCA4MywgMSwgMjMxLCAxODgsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjQ4LCAKLSAgICAzMywgODMsIDEsIDIzMSwgMTg4LCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxOCwgMjI1LCA4MywgMSwgMjMxLCAxODgsIDI1NCwgCi0gICAgMTcxLCAyNDMsIDEyMywgMjQ5LCA4MCwgODMsIDEsIDIzMSwgMTg4LCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxMCwgODIsIDgzLCAKLSAgICAxLCAyMzEsIDE4OCwgMjU0LCAxNzEsIDI0MywgMTIzLCAyMTAsIDExNiwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgCi0gICAgMTYzLCA2OSwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgMTYzLCAxOTIsIDgzLCAxLCAyMzEsIDE4OCwgMjU0LCAxNzEsIAotICAgIDI0MywgMTIzLCAyNTIsIDI2LCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCAyNDgsIDIxOSwgODMsIDEsIDIzMSwgMTg4LCAKLSAgICAyNTQsIDE3MSwgMjQzLCAxMjMsIDIzMywgNCwgMTgsIDE5LCAyMjYsIDExMywgMTgsIDE5LCAyNTMsIDE3NSwgMTgsIDE5LCAKLSAgICAyNTUsIDM3LCAxOCwgMTksIDIxMiwgMjUsIDE4LCAxOSwgMjI0LCAyMjQsIDE4LCAxOSwgMjI1LCAyMzMsIDE4LCAxOSwgCi0gICAgMjI0LCAxMDgsIDE4LCAxOSwgMjE3LCAzMiwgMTgsIDE5LCAyMzQsIDE5NSwgMTgsIDE5LCAyMzMsIDE4NSwgMTgsIDE5LCAKLSAgICAyMzEsIDEzNywgMTgsIDE5LCAyMjgsIDQyLCAxOCwgMTksIDIyOSwgMTg2LCAxOCwgMTksIDIzMywgNzQsIDE4LCAxOSwgCi0gICAgMjE5LCAyNCwgMTgsIDE5LCAyMjEsIDIxMywgMTgsIDE5LCAyMTksIDIzNCwgMTgsIDE5LCAyMjAsIDY4LCAxOCwgMTksIAotICAgIDIxOSwgMjAzLCAxOCwgMTksIDIxMCwgMjIwLCAxOCwgMTksIDIxMSwgNTIsIDE4LCAxOSwgMjIzLCAxMzcsIDE4LCAxOSwgCi0gICAgMjI3LCAxNzUsIDE4LCAxOSwgMjI2LCAyMjAsIDIyNywgMTc1LCAxOCwgMTksIDIyNywgMTc0LCAxOCwgMTksIDIyNiwgMjIwLCAKLSAgICAyMjcsIDE3NCwgMTgsIDE5LCAyMjcsIDE3MywgMTgsIDE5LCAyMjYsIDIyMCwgMjI3LCAxNzMsIDE4LCAxOSwgMjI3LCAxNzIsIAotICAgIDE4LCAxOSwgMjI2LCAyMjAsIDIyNywgMTcyLCAxOCwgMTksIDIyMiwgMTA3LCAxOCwgMTksIDIyMiwgMTA2LCAxOCwgMTksIAotICAgIDIyMiwgMTA1LCAxOCwgMTksIDIyMiwgMTA0LCAxOCwgMTksIDIyMiwgMTAzLCAxOCwgMTksIDIyMiwgMTExLCAxOCwgMTksIAotICAgIDIyNiwgMjIwLCAyMjYsIDEwOSwgMTgsIDE5LCAyMjYsIDIyMCwgMjE3LCAxNTMsIDE4LCAxOSwgMjI2LCAyMjAsIDIzNSwgCi0gICAgMjksIDE4LCAxOSwgMjI2LCAyMjAsIDI1MSwgNzQsIDE4LCAxOSwgMjI2LCAyMjAsIDE5NCwgMTgsIDE5LCAyMjYsIDIyMCwgCi0gICAgMjMwLCAzMCwgMTgsIDE5LCAyMjYsIDIyMCwgMjIyLCA5MywgMTgsIDE5LCAyMjYsIDIyMCwgMjIwLCAxMDYsIDE4LCAxOSwgCi0gICAgMjQ1LCAyMjcsIDIxMiwgOTgsIDE4LCAxOSwgMjEyLCA3LCAyMTIsIDk4LCAxOCwgMTksIDQwLCA0LCAyMjIsIDIzNiwgMTgsIAotICAgIDE5LCA0MCwgMjIzLCAxNjAsIDI0NywgMTI4LCAxOCwgMTksIDIyMywgMjI2LCAyMjIsIDEwOCwgMTgsIDE5LCAxNTksIDIzMiwgCi0gICAgMTMzLCAxOCwgMTksIDE1OSwgMjMzLCAxNDAsIDE4LCAxOSwgMjE2LCAxMjcsIDE4LCAxOSwgMjE2LCAxMjksIDE4LCAxOSwgCi0gICAgMjE1LCAxMzcsIDE4LCAxOSwgMjE1LCAxMzksIDE4LCAxOSwgMjE1LCAxNDQsIDE4LCAxOSwgMjE2LCA1MCwgMTgsIDE5LCAKLSAgICAyMTYsIDUyLCAxOCwgMTksIDIyMSwgMjExLCAyMTksIDIwOCwgMTgsIDE5LCAyMjEsIDIxMSwgMjIwLCAzLCAxOCwgMTksIAotICAgIDIyMSwgMjExLCAyNDEsIDYwLCAxOCwgMTksIDczLCAyNDIsIDgwLCAxOCwgMTksIDczLCAyNDgsIDYwLCAyNDMsIDYyLCAxOCwgCi0gICAgMTksIDczLCAyNDMsIDEzOSwgMTgsIDE5LCA3MywgMjQyLCA4NSwgMTgsIDE5LCAyMjEsIDIxMSwgMjM1LCAzOSwgMTgsIDE5LCAKLSAgICA3MywgMjM1LCAzNywgMTgsIDE5LCAyNTIsIDc2LCAyNDgsIDYwLCAxNTYsIDE4LCAxOSwgMjUyLCA3NiwgMjQ4LCA2MCwgCi0gICAgMTUzLCAxOCwgMTksIDczLCAyNDgsIDU1LCAyMjIsIDkzLCAyMzIsIDIyOSwgMjEzLCAxMjIsIDIzMywgMTYsIDIzMiwgMjI5LCAKLSAgICAxLCAxNzYsIDIzMiwgMjI5LCAxLCAyMzQsIDEzOCwgMjMyLCAyMjksIDEsIDI0MywgMTQyLCAyMzIsIDIyOSwgMSwgMjQzLCAKLSAgICAwLCAyMzIsIDIyOSwgMSwgMjI5LCA4MiwgMjMyLCAyMjksIDEsIDI1MSwgNDEsIDIzMiwgMjI5LCAxLCAyNTAsIDE2NSwgCi0gICAgMjMyLCAyMjksIDEsIDIzNSwgMTQ3LCAyMzIsIDIyOSwgMSwgMjM1LCAxMjAsIDIzMiwgMjI5LCAxLCAyMTEsIDcxLCAyMzIsIAotICAgIDIyOSwgMSwgMjE3LCAxMDYsIDIzMiwgMjI5LCAxLCAyMTYsIDIwOSwgMjMyLCAyMjksIDEsIDI0OCwgMjI5LCAyMzIsIDIyOSwgCi0gICAgMSwgMjQ4LCAzMywgMjMyLCAyMjksIDEsIDE5OCwgMjMyLCAyMjksIDEsIDE5MSwgMjMyLCAyMjksIDEsIDIyNSwgMTUwLCAKLSAgICAyMzIsIDIyOSwgMSwgMjUyLCAxOTksIDIzMiwgMjI5LCAxLCAyNTIsIDI2LCAyMzIsIDIyOSwgMSwgMTg2LCAyMzIsIDIyOSwgCi0gICAgMSwgMTkyLCAyMzIsIDIyOSwgMSwgMjA1LCAyMzIsIDIyOSwgMSwgMjMzLCAxNDEsIDIzMiwgMjI5LCAxLCAyMTIsIDY1LCAKLSAgICAyMzIsIDIyOSwgMSwgMjIwLCAxMDQsIDIzMiwgMjI5LCAxLCAyMTgsIDIyNSwgMjMyLCAyMjksIDEsIDIwNiwgMjMyLCAyMjksIAotICAgIDEsIDE2MiwgMjMyLCAyMjksIDI1LCA1LCA2MSwgMjMyLCAyMjksIDI1LCA1LCA3NCwgMjMyLCAyMjksIDI1LCA1LCA2OSwgCi0gICAgMjMyLCAyMjksIDI1LCA1LCAyNDUsIDIxNywgMjMyLCAyMjksIDI1LCA1LCAyNTQsIDIxMCwgMjMyLCAyMjksIDI1LCA1LCAKLSAgICAyMjYsIDE4NywgMjMyLCAyMjksIDI1LCA1LCAyNTMsIDIwMCwgMjMyLCAyMjksIDI1LCA1LCA3NiwgMjMyLCAyMjksIDI1LCAKLSAgICA1LCA3OCwgMjMyLCAyMjksIDIxOCwgNzQsIDEsIDE5MiwgMjMyLCAyMjksIDIxOCwgNzQsIDEsIDIwNSwgMjMyLCAyMjksIAotICAgIDIxOCwgNzQsIDEsIDIxMiwgNjUsIDIzMiwgMjI5LCA0LCAxLCAxNzYsIDIzMiwgMjI5LCA0LCAxLCAyMjksIDgyLCAyMzIsIAotICAgIDIyOSwgNCwgMSwgMjU0LCA4MywgMjMyLCAyMjksIDQsIDEsIDIxNywgMTA2LCAyMzIsIDIyOSwgNCwgMSwgMTk4LCAyMzIsIAotICAgIDIyOSwgNCwgMSwgMTkxLCAyMzIsIDIyOSwgNCwgMSwgMTg2LCAyMzIsIDIyOSwgNCwgMSwgMjA1LCAyMzIsIDIyOSwgNCwgMSwgCi0gICAgMjMzLCAxNDEsIDIzMiwgMjI5LCA1LCAyMzAsIDk0LCAyMzIsIDIyOSwgNSwgMjM0LCAxNzcsIDIzMiwgMjI5LCA1LCAyMjIsIAotICAgIDM0LCAyMzIsIDIyOSwgNSwgMjMyLCAxMzMsIDIzMiwgMjI5LCAyNDUsIDM5LCA3OSwgMjMyLCAyMjksIDIyNCwgMTYsIDc5LCAKLSAgICAyMzIsIDIyOSwgMjEsIDIxMCwgODYsIDIzMiwgMjI5LCAyMSwgMTExLCAyMzIsIDIyOSwgMjEsIDEwNSwgMjMyLCAyMjksIAotICAgIDIxLCAxNTgsIDIzMiwgMjI5LCAyMSwgMTYxLCAyMzIsIDIyOSwgMjEsIDE5MCwgMjMyLCAyMjksIDIxLCAxOTUsIDIzMiwgCi0gICAgMjI5LCAyMSwgMTk5LCAyMzIsIDIyOSwgMjEsIDE5NiwgMjMyLCAyMjksIDIxLCAyMDEsIDM5LCAyMzMsIDY1LCAxLCAxNzYsIAotICAgIDM5LCAyMzMsIDY1LCAxLCAyMTEsIDE2NSwgMzksIDIzMywgNjUsIDEsIDIyOSwgODIsIDM5LCAyMzMsIDY1LCAxLCAyMTUsIAotICAgIDE4NCwgMzksIDIzMywgNjUsIDEsIDIwNiwgMzksIDIzMywgNjUsIDEsIDE5MiwgMzksIDIzMywgNjUsIDEsIDIxNywgMTA2LCAKLSAgICAzOSwgMjMzLCA2NSwgMSwgMjE2LCAyMDksIDM5LCAyMzMsIDY1LCAxLCAyMzMsIDE0MSwgMzksIDIzMywgNjUsIDEsIDE5MSwgCi0gICAgMzksIDIzMywgNjUsIDEsIDIyNSwgMTUwLCAzOSwgMjMzLCA2NSwgMSwgMTg2LCAzOSwgMjMzLCA2NSwgMSwgMjQ0LCAyMDQsIAotICAgIDM5LCAyMzMsIDY1LCAxLCAyMTQsIDI3LCAzOSwgMjMzLCA2NSwgMSwgMTYyLCAzOSwgMjMzLCA2NSwgMSwgMjI0LCA5MSwgCi0gICAgMzksIDIzMywgNjUsIDEsIDIzNCwgMTM4LCAzOSwgMjMzLCA2NSwgMSwgMjE1LCAxNzYsIDM5LCAyMzMsIDY1LCAxLCAxOTgsIAotICAgIDM5LCAyMzMsIDY1LCAxLCA2MSwgMzksIDIzMywgNjUsIDEsIDc0LCAzOSwgMjMzLCA2NSwgMSwgMjQ1LCAyMTcsIDM5LCAKLSAgICAyMzMsIDY1LCAxLCAyNDUsIDIwNSwgMzksIDIzMywgNjUsIDEsIDY5LCAzOSwgMjMzLCA2NSwgMSwgMjI2LCAxODcsIDM5LCAKLSAgICAyMzMsIDY1LCAxLCA3OCwgMzksIDIzMywgNjUsIDEsIDIxNCwgMjE0LCAzOSwgMjMzLCA2NSwgMSwgNzYsIDM5LCAyMzMsIAotICAgIDY1LCAxLCAyNTMsIDE5OCwgMzksIDIzMywgNjUsIDEsIDI1NCwgMjEwLCAzOSwgMjMzLCA2NSwgMSwgMjE2LCAyOSwgMzksIAotICAgIDIzMywgNjUsIDEsIDIxNiwgMjgsIDM5LCAyMzMsIDY1LCAxLCAyMTYsIDI3LCAzOSwgMjMzLCA2NSwgMSwgMjE2LCAyNiwgCi0gICAgMzksIDIzMywgNjUsIDEsIDIxNiwgMjUsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMjQsIDkxLCAxNjYsIDM5LCAxNzMsIDEsIAotICAgIDEyMSwgMjI0LCA5MSwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDE3NiwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxMSwgMTY1LCAKLSAgICAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjI5LCA4MiwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDE3NiwgMTY2LCAzOSwgMTczLCAKLSAgICAxLCAxMjEsIDIxMSwgMTY1LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjI5LCA4MiwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIAotICAgIDIxNSwgMTg0LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjA2LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMTkyLCAxNjYsIDM5LCAKLSAgICAxNzMsIDEsIDEyMSwgMjE1LCAxODQsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMDYsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAKLSAgICAxOTIsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMTcsIDEwNiwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxNiwgMjA5LCAxNjYsIAotICAgIDM5LCAxNzMsIDEsIDEyNSwgMTk4LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjE3LCAxMDYsIDE2NiwgMzksIDE3MywgMSwgCi0gICAgMTIxLCAyMTYsIDIwOSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDE5OCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDE5MSwgMTY2LCAKLSAgICAzOSwgMTczLCAxLCAxMjUsIDIyNSwgMTUwLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMTg2LCAxNjYsIDM5LCAxNzMsIDEsIAotICAgIDEyMSwgMTkxLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjI1LCAxNTAsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAxODYsIDE2NiwgCi0gICAgMzksIDE3MywgMSwgMTI1LCAyNDQsIDIwNCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxNCwgMjcsIDE2NiwgMzksIDE3MywgCi0gICAgMSwgMTI1LCAyMzMsIDE0MSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDI0NCwgMjA0LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgCi0gICAgMjE0LCAyNywgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIzMywgMTQxLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMTYyLCAxNjYsIAotICAgIDM5LCAxNzMsIDEsIDEyNSwgMjQ4LCAyMjksIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyNTIsIDE5OSwgMTY2LCAzOSwgMTczLCAKLSAgICAxLCAxMjEsIDE2MiwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDI0OCwgMjI5LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjUyLCAKLSAgICAxOTksIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMzMsIDE5MCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxMSwgMTM4LCAxNjYsIAotICAgIDM5LCAxNzMsIDEsIDEyMSwgMjMzLCAxOTAsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMTEsIDEzOCwgMTY2LCAzOSwgMTczLCAKLSAgICAxLCAxMjUsIDIxOCwgODMsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMTgsIDgzLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyNSwgCi0gICAgMjE5LCAyNDEsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1NSwgODIsIDE2NiwgMzksIDE3MywgMjUsIDUsIDIzNiwgNDAsIAotICAgIDE2NiwgMzksIDE3MywgMjUsIDUsIDY5LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMTQsIDExOCwgMTY2LCAzOSwgMTczLCAyNSwgCi0gICAgNSwgNzYsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1NCwgMjUyLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCA3OCwgMTY2LCAzOSwgCi0gICAgMTczLCAyNSwgNSwgMjI3LCA0LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMTQsIDIxNCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgCi0gICAgMjUzLCAxNzUsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1NSwgMzcsIDE2NiwgMzksIDE3MywgMjUsIDUsIDIxNCwgMTExLCAKLSAgICAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMjYsIDExMywgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjI3LCAxLCAxNjYsIDM5LCAxNzMsIAotICAgIDI1LCA1LCAyMTQsIDIxMCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjM1LCAxNTgsIDE2NiwgMzksIDE3MywgMSwgNDAsIDIxNCwgCi0gICAgMTA1LCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyMjksIDg0LCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyMzAsIDMwLCAxNjYsIDM5LCAKLSAgICAxNzMsIDEsIDQwLCAxOTQsIDE2NiwgMzksIDE3MywgMSwgNDAsIDIzNSwgMjksIDE2NiwgMzksIDE3MywgMSwgNDAsIDI0OSwgCi0gICAgNjgsIDE2NiwgMzksIDE3MywgMSwgNDAsIDI1MywgMTY2LCAxNjYsIDM5LCAxNzMsIDEzOCwgMjMxLCAxNjMsIDE2NiwgMzksIAotICAgIDE3MywgMTM4LCAyMzEsIDE2MiwgMTY2LCAzOSwgMTczLCAyMSwgMjEwLCA4NiwgMTY2LCAzOSwgMTczLCAyMSwgMTExLCAKLSAgICAxNjYsIDM5LCAxNzMsIDIxLCAxMDUsIDE2NiwgMzksIDE3MywgMjEsIDE1OCwgMTY2LCAzOSwgMTczLCAyMSwgMTYxLCAxNjYsIAotICAgIDM5LCAxNzMsIDIxLCAxOTAsIDE2NiwgMzksIDE3MywgMjEsIDE5NSwgMTY2LCAzOSwgMTczLCAyMSwgMTk5LCAxNjYsIDM5LCAKLSAgICAxNzMsIDIxLCAxOTYsIDE2NiwgMzksIDE3MywgMjEsIDIwMSwgMTY2LCAzOSwgMTczLCA4OSwgMjEsIDExMSwgMTY2LCAzOSwgCi0gICAgMTczLCA1LCAyMzMsIDEyNiwgMTY2LCAzOSwgMTczLCA1LCAyMzMsIDEyNSwgNzAsIDE2LCAyMjUsIDI0MCwgNzAsIDE2LCAKLSAgICAyMzAsIDc3LCAyMzQsIDMxLCA3MCwgMTYsIDIyNSwgNzUsIDIzNCwgMzEsIDcwLCAxNiwgMjUyLCA1OCwgMjM0LCAzMSwgNzAsIAotICAgIDE2LCAyNTEsIDExMiwgMjM0LCAzMSwgNzAsIDE2LCAyMjQsIDIxOSwgMjM0LCAzMSwgNzAsIDE2LCAyMjQsIDIxMywgMjM0LCAKLSAgICAzMSwgNzAsIDE2LCAyMjQsIDIxMSwgMjM0LCAzMSwgNzAsIDE2LCAyMjQsIDIxNywgMjM0LCAzMSwgNzAsIDE2LCAyMjQsIAotICAgIDIxNSwgMjM0LCAzMSwgNzAsIDE2LCAyNDgsIDE4MSwgMjM0LCAzMSwgNzAsIDE2LCAyNDgsIDE3NywgMjM0LCAzMSwgNzAsIAotICAgIDE2LCAyNDgsIDE3NiwgMjM0LCAzMSwgNzAsIDE2LCAyNDgsIDE3OSwgMjM0LCAzMSwgNzAsIDE2LCAyNDgsIDE3OCwgMjM0LCAKLSAgICAzMSwgNzAsIDE2LCAyNDgsIDE3NSwgMjM0LCAzMSwgNzAsIDE2LCAyMTUsIDg3LCA3MCwgMTYsIDIzMCwgNzcsIDIyMiwgCi0gICAgMjA3LCA3MCwgMTYsIDIyNSwgNzUsIDIyMiwgMjA3LCA3MCwgMTYsIDI1MiwgNTgsIDIyMiwgMjA3LCA3MCwgMTYsIDI1MSwgCi0gICAgMTEyLCAyMjIsIDIwNywgNzAsIDE2LCAyMjQsIDIxOSwgMjIyLCAyMDcsIDcwLCAxNiwgMjI0LCAyMTMsIDIyMiwgMjA3LCAKLSAgICA3MCwgMTYsIDIyNCwgMjExLCAyMjIsIDIwNywgNzAsIDE2LCAyMjQsIDIxNywgMjIyLCAyMDcsIDcwLCAxNiwgMjI0LCAyMTUsIAotICAgIDIyMiwgMjA3LCA3MCwgMTYsIDI0OCwgMTgxLCAyMjIsIDIwNywgNzAsIDE2LCAyNDgsIDE3NywgMjIyLCAyMDcsIDcwLCAxNiwgCi0gICAgMjQ4LCAxNzYsIDIyMiwgMjA3LCA3MCwgMTYsIDI0OCwgMTc5LCAyMjIsIDIwNywgNzAsIDE2LCAyNDgsIDE3OCwgMjIyLCAKLSAgICAyMDcsIDcwLCAxNiwgMjQ4LCAxNzUsIDIyMiwgMjA3LCAyNTEsIDEyOSwgMSwgMTc2LCAyNTEsIDEyOSwgMSwgMjQzLCAxNDIsIAotICAgIDI1MSwgMTI5LCAxLCAyMjksIDgyLCAyNTEsIDEyOSwgMSwgMjI5LCAyNywgMjUxLCAxMjksIDEsIDE5MSwgMjUxLCAxMjksIAotICAgIDEsIDI1MiwgMTk5LCAyNTEsIDEyOSwgMSwgMTg2LCAyNTEsIDEyOSwgMSwgMjMwLCAxMTAsIDI1MSwgMTI5LCAxLCAyMTcsIAotICAgIDEwNiwgMjUxLCAxMjksIDEsIDI0OCwgMjI5LCAyNTEsIDEyOSwgMSwgMTk4LCAyNTEsIDEyOSwgMSwgMjI4LCA0MSwgMjUxLCAKLSAgICAxMjksIDEsIDI1MSwgNDEsIDI1MSwgMTI5LCAxLCAyMzUsIDE0NywgMjUxLCAxMjksIDEsIDIyNywgMTY5LCAyNTEsIDEyOSwgCi0gICAgMSwgMjI3LCAxNjIsIDI1MSwgMTI5LCAxLCAxOTIsIDI1MSwgMTI5LCAxLCAyMDUsIDI1MSwgMTI5LCAxLCAyMzMsIDE0MSwgCi0gICAgMjUxLCAxMjksIDEsIDIxNCwgMjcsIDI1MSwgMTI5LCAxLCAyMDYsIDI1MSwgMTI5LCAxLCA2MSwgMjUxLCAxMjksIDEsIAotICAgIDE2MiwgMjUxLCAxMjksIDI1LCA1LCA3NCwgMjUxLCAxMjksIDI1LCA1LCA2OSwgMjUxLCAxMjksIDI1LCA1LCA3NiwgMjUxLCAKLSAgICAxMjksIDI1LCA1LCA3OCwgMjUxLCAxMjksIDI1LCA1LCAyNTQsIDI1MiwgMjUxLCAxMjksIDIyNiwgNjQsIDI1MSwgMTI5LCAKLSAgICAyNDUsIDE1MSwgNjQsIDIyMSwgMTc0LCAzOSwgODksIDEsIDEyNSwgMTc2LCAzOSwgODksIDEsIDEyNSwgMjM0LCAxMzgsIAotICAgIDM5LCA4OSwgMSwgMTI1LCAyMzMsIDE3NywgMzksIDg5LCAxLCAxMjEsIDE3NiwgMzksIDg5LCAxLCAxMjEsIDIzMywgMTc3LCAKLSAgICAzOSwgODksIDEsIDEyMSwgMjM0LCAxMzgsIDM5LCA4OSwgMSwgMjI5LCA4MiwgMzksIDg5LCAxLCAxMjUsIDI1MSwgNDEsIAotICAgIDM5LCA4OSwgMSwgMTI1LCAyNTAsIDE2NSwgMzksIDg5LCAxLCAxMjEsIDI1MSwgNDEsIDM5LCA4OSwgMSwgMTIxLCAyMDYsIAotICAgIDM5LCA4OSwgMSwgMTIxLCAyNTAsIDE2NSwgMzksIDg5LCAxLCAyMjcsIDE2OSwgMzksIDg5LCAxLCAyMjMsIDE0MywgMzksIAotICAgIDg5LCAxLCAxMjUsIDIyMywgMTQxLCAzOSwgODksIDEsIDI0OCwgMjI5LCAzOSwgODksIDEsIDEyMSwgMjIzLCAxNDEsIDM5LCAKLSAgICA4OSwgMSwgMjIzLCAxNTIsIDM5LCA4OSwgMSwgMTI1LCAyMTcsIDEwNiwgMzksIDg5LCAxLCAxMjUsIDIxNiwgMjA5LCAzOSwgCi0gICAgODksIDEsIDEyMSwgMjE3LCAxMDYsIDM5LCA4OSwgMSwgMTIxLCAyMTYsIDIwOSwgMzksIDg5LCAxLCAxOTgsIDM5LCA4OSwgCi0gICAgMSwgMjUyLCAxOTksIDM5LCA4OSwgMSwgMTI1LCAxOTEsIDM5LCA4OSwgMSwgMTI1LCAyMjUsIDE1MCwgMzksIDg5LCAxLCAKLSAgICAxMjUsIDI0NCwgMjA0LCAzOSwgODksIDEsIDEyMSwgMTkxLCAzOSwgODksIDEsIDEyMSwgMjQ0LCAyMDQsIDM5LCA4OSwgMSwgCi0gICAgMTIxLCAyMjUsIDE1MCwgMzksIDg5LCAxLCAxODYsIDM5LCA4OSwgMSwgMTIxLCAxOTIsIDM5LCA4OSwgMSwgMTI1LCAxOTIsIAotICAgIDM5LCA4OSwgMSwgMjA1LCAzOSwgODksIDEsIDIyMiwgMTM5LCAzOSwgODksIDEsIDIzMywgMTQxLCAzOSwgODksIDEsIDIzMiwgCi0gICAgOTgsIDM5LCA4OSwgMSwgMjEyLCA2NSwgMzksIDg5LCAxLCAxMjUsIDIyMCwgMTA0LCAzOSwgODksIDEsIDEyNSwgMjE4LCAKLSAgICAyMjUsIDM5LCA4OSwgMSwgMTI1LCAyMDYsIDM5LCA4OSwgMSwgMTI1LCAxNjIsIDM5LCA4OSwgMSwgMjMyLCAxOTAsIDM5LCAKLSAgICA4OSwgMSwgNjEsIDM5LCA4OSwgMSwgMTIxLCAxNjIsIDM5LCA4OSwgMSwgNzQsIDM5LCA4OSwgMSwgMjM2LCA0MCwgMzksIAotICAgIDg5LCAxLCA2OSwgMzksIDg5LCAxLCAyMTQsIDExOCwgMzksIDg5LCAxLCAyNDUsIDIxNywgMzksIDg5LCAxLCAyMjYsIDE4NywgCi0gICAgMzksIDg5LCAxLCAyMzMsIDEyNiwgMzksIDg5LCAxLCAyNDIsIDEzOSwgMjA2LCAzOSwgODksIDExNywgNSwgMTQ3LCAyMDUsIAotICAgIDM5LCA4OSwgMTE3LCA1LCAxNDcsIDIzMywgMTQxLCAzOSwgODksIDExNywgNSwgMjMzLCAxNDIsIDIxNywgNTksIDIzMywgCi0gICAgMTE1LCAzOSwgODksIDUsIDIzMSwgMjA5LCAyMzQsIDIzNywgMjMzLCAxMTUsIDM5LCA4OSwgMTE3LCA1LCA0MCwgMjI5LCAKLSAgICA4MiwgMzksIDg5LCAxMTcsIDUsIDEyMSwgMTkxLCAzOSwgODksIDExNywgNSwgMTI1LCAyMjMsIDE0MiwgMTc3LCAxMjEsIAotICAgIDE5MSwgMzksIDg5LCAxMTcsIDUsIDE4NiwgMzksIDg5LCAxMTcsIDUsIDI1MiwgMTk5LCAzOSwgODksIDExNywgNSwgMjA2LCAKLSAgICAzOSwgODksIDUsIDIyMiwgMTIsIDM5LCA4OSwgMjUsIDUsIDYxLCAzOSwgODksIDI1LCA1LCAyMzEsIDIwOSwgMjIxLCAyMjgsIAotICAgIDM5LCA4OSwgMjUsIDUsIDI1NSwgODIsIDM5LCA4OSwgMjUsIDUsIDIxNywgNjUsIDI1NSwgODIsIDM5LCA4OSwgMjUsIDUsIAotICAgIDc0LCAzOSwgODksIDI1LCA1LCAyMzYsIDQwLCAzOSwgODksIDI1LCA1LCAyMTQsIDIxNCwgMzksIDg5LCAyNSwgNSwgMjE0LCAKLSAgICAxMTcsIDM5LCA4OSwgMjUsIDUsIDY5LCAzOSwgODksIDI1LCA1LCAyMTQsIDExOCwgMzksIDg5LCAyNSwgNSwgNzgsIDM5LCAKLSAgICA4OSwgMjUsIDUsIDIyNywgNSwgNTEsIDM5LCA4OSwgMjUsIDUsIDIyNiwgMTEzLCAzOSwgODksIDI1LCA1LCA3NiwgMzksIAotICAgIDg5LCAyNSwgNSwgMjU0LCAyNTIsIDM5LCA4OSwgMjUsIDUsIDIyNiwgMTg3LCAzOSwgODksIDI1LCA1LCAyNTQsIDIxMCwgCi0gICAgMzksIDg5LCAyNSwgNSwgODksIDI1NCwgMjEwLCAzOSwgODksIDI1LCA1LCAyMjcsIDUsIDQ4LCAzOSwgODksIDUsIDIzMSwgCi0gICAgMjA5LCAyMzQsIDIzNiwgMzksIDg5LCA1LCAyMTYsIDMwLCAzOSwgODksIDUsIDIxNiwgMjksIDM5LCA4OSwgNSwgMjM0LCAKLSAgICAxMDMsIDIxNiwgMjgsIDM5LCA4OSwgNSwgMjM0LCAxMDMsIDIxNiwgMjcsIDM5LCA4OSwgNSwgMjM0LCAxMDMsIDIxNiwgMjYsIAotICAgIDM5LCA4OSwgNSwgMjIzLCAxOTEsIDI0MiwgNTIsIDM5LCA4OSwgNSwgMjMxLCAyMDksIDIyMSwgMjU1LCAzOSwgODksIDUsIAotICAgIDIzNCwgMTAyLCAyMzQsIDIyMSwgMzksIDg5LCAzOCwgMjQ5LCAxMjMsIDI0NywgMTI4LCAzOSwgODksIDI0MSwgNTMsIDIxLCAKLSAgICAyMTAsIDg2LCAzOSwgODksIDI0MSwgNTMsIDIxLCAxMTEsIDM5LCA4OSwgMjQxLCA1MywgMjEsIDEwNSwgMzksIDg5LCAyNDEsIAotICAgIDUzLCAyMSwgMTU4LCAzOSwgODksIDI0MSwgNTMsIDIxLCAxNjEsIDM5LCA4OSwgMjQxLCA1MywgMjEsIDE5MCwgMzksIDg5LCAKLSAgICAyNDEsIDUzLCAyMSwgMTk1LCAzOSwgODksIDI0MSwgNTMsIDIxLCAxOTksIDM5LCA4OSwgMjQxLCA1MywgMjEsIDE5NiwgMzksIAotICAgIDg5LCAyNDEsIDUzLCAyMSwgMjAxLCAzOSwgODksIDg5LCAyMSwgMjEwLCA4NiwgMzksIDg5LCA4OSwgMjEsIDExMSwgMzksIAotICAgIDg5LCA4OSwgMjEsIDEwNSwgMzksIDg5LCA4OSwgMjEsIDE1OCwgMzksIDg5LCA4OSwgMjEsIDE2MSwgMzksIDg5LCA4OSwgCi0gICAgMjEsIDE5MCwgMzksIDg5LCA4OSwgMjEsIDE5NSwgMzksIDg5LCA4OSwgMjEsIDE5OSwgMzksIDg5LCA4OSwgMjEsIDE5NiwgCi0gICAgMzksIDg5LCA4OSwgMjEsIDIwMSwgMzksIDg5LCA1LCAyMTEsIDI0OSwgMzksIDg5LCA1LCAyMTEsIDI0OCwgMzksIDg5LCA1LCAKLSAgICAyMjEsIDIxNywgMzksIDg5LCA1LCAyMzQsIDE2NiwgMzksIDg5LCA1LCAyNDAsIDIzOSwgMzksIDg5LCA1LCAyNDcsIDE0MiwgCi0gICAgMzksIDg5LCA1LCAyMjMsIDUyLCAyMjIsIDE4OSwgMjIzLCAxNTIsIDM5LCA4OSwgNSwgMjMxLCAyMDksIDIxMSwgNzIsIDM5LCAKLSAgICA4OSwgNSwgMjM1LCAxMiwgMzksIDg5LCA1LCAyMzUsIDExLCAzOSwgODksIDUsIDIyMSwgMjI0LCAzOSwgODksIDUsIDIyMSwgCi0gICAgMjIzLCAzOSwgODksIDUsIDI0MiwgMTYsIDM5LCA4OSwgNSwgMjUxLCAzOCwgMTAyLCA1LCAyMTQsIDIwMCwgMjIzLCAzMywgCi0gICAgMTAyLCA1LCAyMTQsIDIwMCwgMjUxLCA5LCAxMDIsIDUsIDI1MCwgMTk0LCAxMDIsIDUsIDIxOCwgMTYsIDEwMiwgNSwgMjUxLCAKLSAgICAyNDEsIDEwMiwgMSwgMjU0LCAxOTMsIDEwMiwgMSwgMjU0LCAxOTQsIDIxNywgMTQsIDEwMiwgMSwgMjM2LCAzNiwgMTAyLCAKLSAgICAxLCAyMzYsIDM3LCAyMTcsIDE0LCAxMDIsIDEsIDIxNCwgMjAzLCAxMDIsIDEsIDIxNCwgMjA0LCAyMTcsIDE0LCAxMDIsIDEsIAotICAgIDIyMywgMTkxLCAyMjMsIDgyLCAxMDIsIDEsIDIyMywgMTkxLCAyMjMsIDgzLCAyMTcsIDE0LCAxMDIsIDEsIDIzMywgMTQyLCAKLSAgICAyMzMsIDMwLCAxMDIsIDEsIDIzMywgMTQyLCAyMzMsIDMxLCAyMTcsIDE0LCAxMDIsIDEsIDI0NSwgMTg3LCAxMDIsIDEsIAotICAgIDI1NCwgMjA4LCAxMDIsIDEsIDIyNiwgMjE2LCAxMDIsIDEsIDIyNiwgMjE3LCAyMTcsIDE0LCAxMDIsIDEsIDE3NiwgMTAyLCAKLSAgICAxLCAyMzUsIDE5LCAyMzEsIDIxMiwgMTAyLCAxLCAyNDMsIDE0MiwgMTAyLCAxLCAyNDMsIDE0MywgMjQyLCAxNjgsIDEwMiwgCi0gICAgMSwgMjI5LCA4MiwgMTAyLCAxLCAyNTEsIDQxLCAxMDIsIDEsIDI1MSwgNDIsIDIzMywgMTI5LCAxMDIsIDEsIDIzNSwgMTQ3LCAKLSAgICAxMDIsIDEsIDIzNSwgMTQ4LCAyMzUsIDEyNCwgMTAyLCAxLCAyMjcsIDE2OSwgMTAyLCAxLCAyMTcsIDEwNywgMjMzLCA4MiwgCi0gICAgMTAyLCAxLCAyMTcsIDEwNywgMjMwLCA3MiwgMjMxLCAyMTIsIDEwMiwgMSwgMjQ4LCAyMzAsIDIzMCwgNzIsIDI1NCwgMTUzLCAKLSAgICAxMDIsIDEsIDI0OCwgMjMwLCAyMzAsIDcyLCAyMzEsIDIxMiwgMTAyLCAxLCAyMjksIDIzNCwgMjIzLCAxNTUsIDEwMiwgMSwgCi0gICAgMjE3LCAxMDYsIDEwMiwgMSwgMjE3LCAxMDcsIDIxNywgMzYsIDEwMiwgMSwgMjQ4LCAyMjksIDEwMiwgMSwgMjQ4LCAyMzAsIAotICAgIDIzMSwgMjMwLCAxMDIsIDEsIDE5OCwgMTAyLCAxLCAxOTEsIDEwMiwgMSwgMjI2LCA5NCwgMjM0LCAyMzIsIDEwMiwgMSwgCi0gICAgMjUyLCAxOTksIDEwMiwgMSwgMjUyLCAyMDAsIDIzNCwgMTc4LCAxMDIsIDEsIDE4NiwgMTAyLCAxLCAxOTIsIDEwMiwgMSwgCi0gICAgMjA1LCAxMDIsIDEsIDIzMywgMTQxLCAxMDIsIDEsIDIxMiwgNjUsIDEwMiwgMSwgMjIyLCAzNiwgMjIyLCAyMiwgMTAyLCAxLCAKLSAgICAyMjIsIDM2LCAyMjEsIDIzNSwgMTAyLCAxLCAyMDYsIDEwMiwgMSwgMTYyLCAxMDIsIDUsIDIyMywgNzMsIDEwMiwgMjUsIDUsIAotICAgIDIxNywgMTQsIDEwMiwgMjUsIDUsIDIxNCwgMTk5LCAxMDIsIDI1LCA1LCAyMTQsIDIwMCwgMjIxLCAyMzEsIDEwMiwgMjUsIAotICAgIDUsIDIxOCwgNDgsIDEwMiwgMjUsIDUsIDIxOCwgNDksIDIzNiwgMjgsIDEwMiwgMjUsIDUsIDIyMywgMTkxLCAyMjMsIDgyLCAKLSAgICAxMDIsIDI1LCA1LCAyMjMsIDE5MSwgMjIzLCA4MywgMjE3LCAxNCwgMTAyLCAyNSwgNSwgMjMzLCAxNDIsIDIzMywgMzAsIAotICAgIDEwMiwgMjUsIDUsIDIzMywgMTQyLCAyMzMsIDMxLCAyMTcsIDE0LCAxMDIsIDI1LCA1LCAyMTcsIDY2LCAxMDIsIDI1LCA1LCAKLSAgICAyMTcsIDY3LCAyMjMsIDgyLCAxMDIsIDI1LCA1LCAyMTcsIDY3LCAyMTcsIDE0LCAxMDIsIDI1LCA1LCAyMTcsIDY3LCAyMjMsIAotICAgIDgzLCAyMTcsIDE0LCAxMDIsIDI1LCA1LCAyMjUsIDE4NywgMTAyLCAyNSwgNSwgMjI1LCAxODgsIDIxNywgMTQsIDEwMiwgCi0gICAgMjU1LCAzLCAyNTUsIDIsIDEwMiwgMSwgMjM1LCAxLCAyMjEsIDIzMCwgMTAyLCAxLCAyMzQsIDEwOCwgMjIxLCAyMzAsIAotICAgIDEwMiwgMSwgMjE1LCAzNCwgMjIxLCAyMzAsIDEwMiwgMSwgMjQ1LCAyMTEsIDIyMSwgMjMwLCAxMDIsIDEsIDIxNCwgMCwgCi0gICAgMjIxLCAyMzAsIDEwMiwgMSwgMjEwLCAxMDcsIDIyMSwgMjMwLCAxMDIsIDEsIDI1MywgMjE3LCAyMjEsIDIzMCwgMTAyLCAKLSAgICAyMSwgMjEwLCA4NiwgMTAyLCAyMSwgMTExLCAxMDIsIDIxLCAxMDUsIDEwMiwgMjEsIDE1OCwgMTAyLCAyMSwgMTYxLCAxMDIsIAotICAgIDIxLCAxOTAsIDEwMiwgMjEsIDE5NSwgMTAyLCAyMSwgMTk5LCAxMDIsIDIxLCAxOTYsIDEwMiwgMjEsIDIwMSwgMTAyLCAKLSAgICAyMjYsIDMzLCAxMDIsIDIyNiwgNTksIDEwMiwgMjExLCAyMzgsIDEwMiwgMjUwLCAyNDQsIDIyNiwgNTIsIDEwMiwgMjUwLCAKLSAgICAyNDQsIDIxOSwgMTc0LCAxMDIsIDI1MCwgMjQ0LCAyMjYsIDYsIDEwMiwgMjI2LCA1OCwgMTAyLCAyOCwgMTYsIDI0NywgCi0gICAgMTM0LCAxMDIsIDI4LCAxNiwgMjQ4LCA1OSwgMTAyLCAyOCwgMTYsIDI0NiwgNzIsIDEwMiwgMjgsIDE2LCAyNDgsIDE4NCwgCi0gICAgMTAyLCAyOCwgMTYsIDI0OCwgMTg1LCAyMTgsIDE2LCAxMDIsIDI4LCAxNiwgMjQ3LCAyMTMsIDEwMiwgMjgsIDE2LCAyNDgsIAotICAgIDIyMiwgMTAyLCAyOCwgMTYsIDI0OCwgNDEsIDEwMiwgMjgsIDE2LCAyNDgsIDIwNiwgMTAyLCAyOCwgMTYsIDI0OCwgMTg1LCAKLSAgICAyNDMsIDY0LCAxMDIsIDI4LCAxNiwgMzgsIDIxNywgMTAsIDEwMiwgMjgsIDE2LCAzOCwgMjQ1LCAxNDksIDEwMiwgMjgsIAotICAgIDE2LCAzOCwgMjM0LCAxNzMsIDEwMiwgMjgsIDE2LCAzOCwgMjM0LCAxNzUsIDEwMiwgMjgsIDE2LCAzOCwgMjM1LCAxMjgsIAotICAgIDEwMiwgMjgsIDE2LCAzOCwgMjM0LCAxNzQsIDIsIDIzNSwgMTI4LCAxMDIsIDI4LCAxNiwgMzgsIDIzNCwgMTc2LCAyLCAKLSAgICAyMzUsIDEyOCwgMTAyLCAyOCwgMTYsIDM4LCAyNTIsIDQ1LCAxMDIsIDI4LCAxNiwgMzgsIDI0MiwgMTcyLCAxMDIsIDI4LCAKLSAgICAxNiwgMjIyLCAyNTIsIDIwNCwgMjQ2LCA4MiwgMTAyLCAyOCwgMTYsIDIyMiwgMjUyLCAyMDQsIDI0OCwgMjIwLCAxMDIsIAotICAgIDI4LCAxNiwgMjIyLCAyNTIsIDI1MCwgOCwgMjE1LCAxMTIsIDEwMiwgMjgsIDE2LCAyMjIsIDI1MiwgMjUwLCA4LCAyMTcsIAotICAgIDc0LCAxMDIsIDI4LCAxNiwgMjMzLCA1MCwgMjA0LCAyMjYsIDQ3LCAxMDIsIDI4LCAxNiwgMjMzLCA1MCwgMjA0LCAyMjQsIAotICAgIDE0MiwgMTAyLCAyOCwgMTYsIDIzMywgNTAsIDI1MCwgOCwgMjI1LCA0MSwgMTAyLCAyOCwgMTYsIDIzMywgNTAsIDI1MCwgOCwgCi0gICAgMjI1LCAyOSwgMTAyLCAyOCwgMTYsIDIzMywgNTAsIDIwNCwgMjI1LCA2NCwgMjA3LCA1LCAyMjYsIDMwLCAyMDcsIDUsIAotICAgIDIyNiwgNDMsIDIwNywgNSwgMjI2LCAzOSwgMjA3LCAxLCA2MSwgMjA3LCAxLCA3NCwgMjA3LCAxLCA2OSwgMjA3LCAxLCAKLSAgICAyNTQsIDI1MiwgMjA3LCAxLCA3OCwgMjA3LCAxLCA3NiwgMjA3LCAxLCAyNDUsIDYzLCAyMDcsIDEsIDE3NiwgMjA3LCAxLCAKLSAgICAyMjQsIDkxLCAyMDcsIDEsIDI0MywgMTQyLCAyMDcsIDEsIDIyOSwgODIsIDIwNywgMSwgMjUxLCA0MSwgMjA3LCAxLCAyMzUsIAotICAgIDE0NywgMjA3LCAxLCAyMTAsIDExNiwgMjA3LCAxLCAyMjcsIDE2OSwgMjA3LCAxLCAyMTcsIDEwNiwgMjA3LCAxLCAyNDgsIAotICAgIDIyOSwgMjA3LCAxLCAxOTgsIDIwNywgMSwgMTkxLCAyMDcsIDEsIDI0NCwgMjA0LCAyMDcsIDEsIDIxNCwgMjcsIDIwNywgMSwgCi0gICAgMjUyLCAxOTksIDIwNywgMSwgMTg2LCAyMDcsIDEsIDE5MiwgMjA3LCAxLCAyMDUsIDIwNywgMSwgMjMzLCAxNDEsIDIwNywgCi0gICAgMSwgMjEyLCA2NSwgMjA3LCAxLCAyMDYsIDIwNywgMSwgMjExLCAxNjUsIDIwNywgMSwgMTYyLCAyMDcsIDExNywgNSwgMjI2LCAKLSAgICA1NiwgMjA3LCAxMTcsIDUsIDIyNiwgMzIsIDIwNywgMTE3LCA1LCAyMjYsIDI5LCAyMDcsIDI1LCA1LCAyMjYsIDQ2LCAyMDcsIAotICAgIDI1LCA1LCAyMjYsIDI4LCAyMDcsIDI1LCA1LCAyMjYsIDUwLCAyMDcsIDI1LCA1LCAyMjYsIDM4LCAyMDcsIDI1LCA1LCAKLSAgICAyMjYsIDU3LCAyMDcsIDI1LCA1LCAyMjYsIDQ4LCAyMDcsIDUsIDIyNiwgNjAsIDIwNywgNSwgMjEzLCAxNTIsIDIwNywgCi0gICAgMTE3LCA1LCAyMjUsIDI1MiwgMTg2LCAyMDcsIDExNywgNSwgMjI1LCAyNTIsIDIxMiwgNjUsIDIwNywgMSwgMjM0LCAxMzgsIAotICAgIDIwNywgMSwgMjE3LCAyMzIsIDIwNywgMjEsIDIxMCwgODYsIDIwNywgMjEsIDExMSwgMjA3LCAyMSwgMTA1LCAyMDcsIDIxLCAKLSAgICAxNTgsIDIwNywgMjEsIDE2MSwgMjA3LCAyMSwgMTkwLCAyMDcsIDIxLCAxOTUsIDIwNywgMjEsIDE5OSwgMjA3LCAyMSwgCi0gICAgMTk2LCAyMDcsIDIxLCAyMDEsIDIwNywgMjUzLCAxODMsIDIwNywgMSwgMjIzLCA1NSwgMjA3LCAxLCAyMzMsIDEzLCAyMDcsIAotICAgIDEsIDI1MiwgMjYsIDIwNywgMSwgNDAsIDIzNSwgMjksIDIwNywgMSwgNDAsIDE5NCwgMjUyLCAxMjgsIDEsIDYxLCAyNTIsIAotICAgIDEyOCwgMSwgMjE5LCAxNjYsIDYxLCAyNTIsIDEyOCwgMSwgMTYyLCAyNTIsIDEyOCwgMSwgMjE5LCAxNjYsIDE2MiwgMjUyLCAKLSAgICAxMjgsIDEsIDIzMSwgMTg2LCAxNjIsIDI1MiwgMTI4LCAxLCAyNTIsIDE5OSwgMjUyLCAxMjgsIDEsIDIzNCwgMjE4LCAyNTIsIAotICAgIDE5OSwgMjUyLCAxMjgsIDEsIDE5MSwgMjUyLCAxMjgsIDEsIDIxOSwgMTY2LCAxOTEsIDI1MiwgMTI4LCAxLCAxOTgsIDI1MiwgCi0gICAgMTI4LCAxLCAyMzEsIDE4NiwgMTk4LCAyNTIsIDEyOCwgMSwgMjEyLCA2NSwgMjUyLCAxMjgsIDEsIDIxOSwgMTY2LCAyMTIsIAotICAgIDY1LCAyNTIsIDEyOCwgMSwgMjI2LCA3MSwgMjEyLCA2NSwgMjUyLCAxMjgsIDEsIDI0MywgMTQyLCAyNTIsIDEyOCwgMSwgCi0gICAgMjE5LCAxNjYsIDI0MywgMTQyLCAyNTIsIDEyOCwgMSwgMjM1LCAxNDcsIDI1MiwgMTI4LCAxLCAyNDgsIDIyOSwgMjUyLCAKLSAgICAxMjgsIDEsIDIwNSwgMjUyLCAxMjgsIDEsIDIxOSwgMTY2LCAyMDUsIDI1MiwgMTI4LCAxLCAxODYsIDI1MiwgMTI4LCAxLCAKLSAgICAyMTksIDE2NiwgMTg2LCAyNTIsIDEyOCwgMSwgMjE5LCAyOCwgMjE3LCAxMDYsIDI1MiwgMTI4LCAxLCAyMjgsIDYwLCAyMTcsIAotICAgIDEwNiwgMjUyLCAxMjgsIDEsIDIwNiwgMjUyLCAxMjgsIDEsIDIxOSwgMTY2LCAyMDYsIDI1MiwgMTI4LCAxLCAyMzEsIDE4NiwgCi0gICAgMjA2LCAyNTIsIDEyOCwgMSwgMTkyLCAyNTIsIDEyOCwgMSwgMjE5LCAxNjYsIDE5MiwgMjUyLCAxMjgsIDEsIDIyOSwgODIsIAotICAgIDI1MiwgMTI4LCAxLCAyMzMsIDE0MSwgMjUyLCAxMjgsIDEsIDIxOSwgMTY2LCAyMzMsIDE0MSwgMjUyLCAxMjgsIDEsIDIyNywgCi0gICAgMTY5LCAyNTIsIDEyOCwgMSwgMjUxLCA0MSwgMjUyLCAxMjgsIDEsIDIyOSwgMTUzLCAyNTIsIDEyOCwgMSwgMjMxLCAxMjksIAotICAgIDI1MiwgMTI4LCAxLCA3NCwgMjUyLCAxMjgsIDEsIDY5LCAyNTIsIDEyOCwgNSwgMjE2LCAzNCwgMjUyLCAxMjgsIDI1LCA1LCAKLSAgICA3NiwgMjUyLCAxMjgsIDI1LCA1LCAyMjYsIDcxLCA3NiwgMjUyLCAxMjgsIDI1LCA1LCAyNDUsIDIxNywgMjUyLCAxMjgsIAotICAgIDI1LCA1LCA3NCwgMjUyLCAxMjgsIDI1LCA1LCAyMzQsIDIxOCwgNzQsIDI1MiwgMTI4LCAyNSwgNSwgNzgsIDI1MiwgMTI4LCAKLSAgICAyNSwgNSwgMjM0LCAyMTgsIDc4LCAyNTIsIDEyOCwgMjUsIDUsIDY5LCAyNTIsIDEyOCwgMjUsIDUsIDEwNCwgMzEsIDIxOSwgCi0gICAgMTY2LCAyMDYsIDI1MiwgMTI4LCAxMTcsIDUsIDIyOSwgODQsIDI1MiwgMTI4LCAxMTcsIDUsIDI0MiwgNjcsIDI1MiwgMTI4LCAKLSAgICAyMjYsIDQxLCAyNTIsIDEyOCwgMjI2LCAzNywgMjUyLCAxMjgsIDE2LCAyNTEsIDI0OSwgMjI5LCAyMzQsIDIzMSwgNDIsIAotICAgIDI1MiwgMTI4LCAxNiwgMjUxLCAyNDksIDIyNSwgNjcsIDI1MiwgMTI4LCAxNiwgMjUxLCAyNDksIDIzNSwgNTQsIDI1MiwgCi0gICAgMTI4LCAxNiwgMjUxLCAyNDksIDIyNiwgNDEsIDE5NywgMSwgMTc2LCAxOTcsIDEsIDIzNCwgNDUsIDE5NywgMSwgMjM0LCAKLSAgICAxMzgsIDE5NywgMSwgMjQzLCAxNDIsIDE5NywgMSwgMjQyLCAxOTMsIDE5NywgMSwgMjI5LCA4MiwgMTk3LCAxLCAyNTEsIAotICAgIDQxLCAxOTcsIDEsIDI1MCwgMTY1LCAxOTcsIDEsIDIzNSwgMTQ3LCAxOTcsIDEsIDIyNywgMTY5LCAxOTcsIDEsIDIxNywgCi0gICAgMTA2LCAxOTcsIDEsIDIxNiwgMjA5LCAxOTcsIDEsIDI0OCwgMjI5LCAxOTcsIDEsIDE5OCwgMTk3LCAxLCAxOTEsIDE5NywgCi0gICAgMSwgMjI1LCA0NSwgMTk3LCAxLCAyMjUsIDE1MCwgMTk3LCAxLCAyNDQsIDIwNCwgMTk3LCAxLCAyNDQsIDgzLCAxOTcsIDEsIAotICAgIDI1MiwgMTk5LCAxOTcsIDEsIDI1MSwgMjMwLCAxOTcsIDEsIDE4NiwgMTk3LCAxLCAyMzAsIDE3MywgMTk3LCAxLCAyMTUsIAotICAgIDE4NCwgMTk3LCAxLCAyMTUsIDE3NiwgMTk3LCAxLCAyNDYsIDQ2LCAxOTcsIDEsIDE5MiwgMTk3LCAxLCAyMDUsIDE5NywgMSwgCi0gICAgMjMzLCAxNDEsIDE5NywgMSwgMTYyLCAxOTcsIDEsIDI0MSwgMTYwLCAxOTcsIDEsIDIxNCwgMjcsIDE5NywgMSwgMjA2LCAKLSAgICAxOTcsIDEsIDIyMCwgMTA0LCAxOTcsIDEsIDIxMiwgNjUsIDE5NywgMSwgNjEsIDE5NywgMjE4LCA3NCwgMSwgMTkyLCAxOTcsIAotICAgIDIxOCwgNzQsIDEsIDIwNSwgMTk3LCAyNSwgNSwgMjU1LCA4MiwgMTk3LCAyNSwgNSwgNzQsIDE5NywgMjUsIDUsIDc4LCAKLSAgICAxOTcsIDI1LCA1LCAyMjYsIDE4NywgMTk3LCAyNSwgNSwgNjksIDE5NywgMjUsIDUsIDIxNCwgMTE4LCAxOTcsIDI1LCA1LCAKLSAgICA3NiwgMTk3LCAxMTcsIDUsIDIzNSwgMjksIDE5NywgMTE3LCA1LCAxOTQsIDE5NywgMTE3LCA1LCAxNTYsIDE5NywgMTE3LCAKLSAgICA1LCAyMzAsIDMwLCAxOTcsIDExNywgNSwgMjI2LCAxMDksIDE5NywgMTE3LCA1LCAxNTMsIDE5NywgMTE3LCA1LCAyMTcsIAotICAgIDE1MywgMTk3LCAxMTcsIDUsIDIyNywgMTQ2LCAxOTcsIDExNywgNSwgMjM0LCAyMzYsIDE5NywgNSwgMjIzLCAxNTMsIDE5NywgCi0gICAgNSwgMjI3LCAyMDksIDE5NywgMjI0LCAxNDQsIDIxNywgMTA0LCAxOTcsIDIyNCwgMTQ0LCAyMjcsIDE1NiwgMjE2LCAxMjEsIAotICAgIDIxNywgMTA0LCAxOTcsIDIyNCwgMTQ0LCAyNTAsIDE3MiwgMTk3LCAyMjQsIDE0NCwgMjE1LCAxNzEsIDI1MCwgMTcyLCAKLSAgICAxOTcsIDIyNCwgMTQ0LCAyMTUsIDE3MCwgMTk3LCAyMSwgMjEwLCA4NiwgMTk3LCAyMSwgMTExLCAxOTcsIDIxLCAxMDUsIAotICAgIDE5NywgMjEsIDE1OCwgMTk3LCAyMSwgMTYxLCAxOTcsIDIxLCAxOTAsIDE5NywgMjEsIDE5NSwgMTk3LCAyMSwgMTk5LCAKLSAgICAxOTcsIDIxLCAxOTYsIDE5NywgMjEsIDIwMSwgMTk3LCAxLCAyMTUsIDE1NywgMTk3LCAxLCAyMTUsIDE0NSwgMTk3LCAxLCAKLSAgICAyNDgsIDE0MywgMjI2LCAyMTQsIDI1MCwgMTExLCAyMSwgMjEwLCA4NiwgMjI2LCAyMTQsIDI1MCwgMTExLCAyMSwgMTExLCAKLSAgICAyMjYsIDIxNCwgMjUwLCAxMTEsIDIxLCAxMDUsIDIyNiwgMjE0LCAyNTAsIDExMSwgMjEsIDE1OCwgMjI2LCAyMTQsIDI1MCwgCi0gICAgMTExLCAyMSwgMTYxLCAyMjYsIDIxNCwgMjUwLCAxMTEsIDIxLCAxOTAsIDIyNiwgMjE0LCAyNTAsIDExMSwgMjEsIDE5NSwgCi0gICAgMjI2LCAyMTQsIDI1MCwgMTExLCAyMSwgMTk5LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDIxLCAxOTYsIDIyNiwgMjE0LCAyNTAsIAotICAgIDExMSwgMjEsIDIwMSwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyMzMsIDE0MSwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAKLSAgICAyNTMsIDIxNCwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNTQsIDIyNSwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNTQsIAotICAgIDEyMywgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNTQsIDE4NywgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyMzMsIDE0MCwgCi0gICAgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNTUsIDQ0LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDI1NSwgNDUsIDIyNiwgMjE0LCAKLSAgICAyNTAsIDExMSwgMSwgMjU1LCA0MywgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNTUsIDM4LCAyMjYsIDIxNCwgMjUwLCAxMTEsIAotICAgIDEsIDIzMiwgMjQ3LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDIzNSwgMTc4LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDIzNiwgCi0gICAgNDEsIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjM1LCAxOTcsIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjM1LCAxODYsIAotICAgIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjMyLCAxMDMsIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjE0LCAyMjEsIDIyNiwgCi0gICAgMjE0LCAyNTAsIDExMSwgMSwgMjE0LCAyMTksIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjE0LCAxNjgsIDIyNiwgMjE0LCAKLSAgICAyNTAsIDExMSwgMSwgMjE0LCAxMTEsIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjMzLCA2NCwgMjI2LCAyMTQsIDI1MCwgCi0gICAgMTExLCAxLCAyNDUsIDExNiwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNDUsIDIyMCwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAKLSAgICAyNDUsIDE1OCwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNDUsIDk0LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDIzMiwgCi0gICAgMTYyLCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDIyNiwgMTQxLCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDIyNywgMCwgMjI2LCAKLSAgICAyMTQsIDI1MCwgMTExLCAxLCAyMjYsIDEyOSwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyMjYsIDIyNiwgMjI2LCAyMTQsIAotICAgIDI1MCwgMTExLCAyMzAsIDEwOCwgMjE1LCAxMjIsIDIyNiwgMjE0LCAyNTAsIDExMSwgMjQzLCAxMzcsIDIxNSwgMTIzLCAKLSAgICAyMjYsIDIxNCwgMjUwLCAxMTEsIDIzMCwgMTA2LCAyMTUsIDEyMywgMjI2LCAyMTQsIDI1MCwgMTExLCAyMjMsIDk1LCAyMjYsIAotICAgIDIxNCwgMjUwLCAxMTEsIDIyNSwgMTQ4LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDI1NCwgMjE3LCAyMjYsIDIxNCwgMjUwLCAKLSAgICAxMTEsIDIyNCwgMTQ0LCAyMzAsIDEwMywgMjI2LCAyMTQsIDI1MCwgMTExLCAyMjQsIDE0NCwgNTIsIDIzMCwgMTAzLCAyMDcsIAotICAgIDIyNCwgMTQ0LCAyNTEsIDI0OSwgMjE4LCA5LCAyMDcsIDIyNCwgMTQ0LCAyNTEsIDI0OSwgMjI2LCA0MiwgMjA3LCAyMjQsIAotICAgIDE0NCwgMjUxLCAyNDksIDIyNCwgMTMyLCAyMDcsIDIyNCwgMTQ0LCAyNTEsIDI0OSwgMjUxLCAyNywgMjA3LCAyMjQsIDE0NCwgCi0gICAgMjUxLCAyNDksIDIzMywgMTQsIDIyMSwgMjI3LCAyMDcsIDIyNCwgMTQ0LCAyNTEsIDI0OSwgMjM1LCAxOSwgMjIxLCAyMjcsIAotICAgIDIwNywgMjI0LCAxNDQsIDI1MSwgMjQ5LCAyNDgsIDIzMCwgMjIxLCAyMjcsIDIwNywgMjI0LCAxNDQsIDI1MSwgMjQ5LCAKLSAgICAyNTIsIDIwMCwgMjIxLCAyMjcsIDIxMywgMjUyLCAxMzgsIDIzNCwgMjE2LCAyMTMsIDI1MiwgMTM4LCAyMjAsIDc5LCAyMTMsIAotICAgIDI1MiwgMTM4LCAyMjQsIDIwMSwgMjEzLCAyNTIsIDUsIDIyOCwgMjE0LCAyMTMsIDI1MiwgNSwgMjExLCA4MCwgMjMwLCAKLSAgICAyMjcsIDIxOCwgMSwgMjEzLCAyNTIsIDEzOCwgMjExLCA4MCwgMjU0LCAyMjIsIDIzNSwgMjUwLCAyMTgsIDEsIDIxMywgCi0gICAgMjUyLCAxMzgsIDIxMSwgODAsIDIzNSwgMjUwLCAyMTgsIDEsIDIxMywgMjUyLCAxMzgsIDIxMSwgODAsIDIzNCwgMjA0LCAKLSAgICAyMzUsIDI1MCwgMjE4LCAxLCAyMTMsIDI1MiwgMTM4LCAyNTEsIDEwLCA1MSwgMjEzLCAyNTIsIDEzOCwgMjExLCA4MCwgCi0gICAgMjM0LCAyMDQsIDIzNSwgMjUwLCAyMTgsIDIsIDIyMSwgMTk5LCAyMTMsIDI1MiwgMTM4LCA1MiwgMjE4LCAxLCAyMTMsIAotICAgIDI1MiwgMTM4LCAyMTUsIDIxMiwgMjE4LCAxLCAyMTMsIDI1MiwgMTM4LCAyMzQsIDIwNCwgMjU0LCA4NSwgMjEzLCAyNTIsIAotICAgIDEzOCwgNTksIDUxLCAyMTMsIDI1MiwgMTM4LCAxMTMsIDE3MCwgNTEsIDIxMywgMjUyLCAxMzgsIDEzNCwgMTcwLCA1MSwgCi0gICAgMjEzLCAyNTIsIDEzOCwgMjIyLCAyNDMsIDIzNCwgMjE1LCAyMzUsIDI1MCwgMjE4LCAxLCAyMTMsIDI1MiwgMTM4LCAyNTMsIAotICAgIDIxMiwgMjM1LCAyNTAsIDIxOCwgMSwgMjEzLCAyNTIsIDUsIDIxMywgMTQ4LCAyMTgsIDEsIDIxMywgMjUyLCA1LCAyMTMsIAotICAgIDE0OCwgMjE0LCAyMTYsIDIxMywgMjUyLCA1LCAyMjMsIDUyLCAyMTMsIDE0OCwgMjE0LCAyMTYsIDIxMywgMjUyLCA1LCAKLSAgICAyMTMsIDE0OCwgMjU0LCA4NSwgMjEzLCAyNTIsIDUsIDIyMywgNTIsIDIxMywgMTQ4LCAyNTQsIDg1LCAyMTMsIDI1MiwgNSwgCi0gICAgMjEzLCAxNDgsIDIxNCwgMjE3LCAyLCAyMTcsIDc4LCAyMTMsIDI1MiwgNSwgMjEzLCAxNDgsIDI1NCwgODYsIDIsIDIxNywgCi0gICAgNzgsIDIxMywgMjUyLCA1LCAyNTQsIDg0LCAyNTQsIDk5LCAyMTMsIDI1MiwgNSwgMjU0LCA4NCwgMjUyLCAxNzQsIDIxMywgCi0gICAgMjUyLCA1LCAyNTQsIDg0LCAyMTQsIDIwLCAyMTMsIDI1MiwgNSwgMjU0LCA4NCwgMjE0LCAyMSwgMiwgMjE3LCA3OCwgMjEzLCAKLSAgICAyNTIsIDUsIDIxNiwgNjksIDIxMywgMjUyLCA1LCAyNDEsIDE5OCwgMjAwLCAyNTQsIDgzLCAyMTMsIDI1MiwgNSwgMjAwLCAKLSAgICAyNTQsIDgzLCAyMTMsIDI1MiwgNSwgMjIyLCAxNDQsIDIwMCwgMjU0LCA4MywgMjEzLCAyNTIsIDUsIDI1NCwgODQsIDIxNCwgCi0gICAgMjIzLCAyMzAsIDk1LCAyMTMsIDI1MiwgNSwgMjU0LCAyOCwgMjEzLCAyNTIsIDUsIDIyMiwgMTg5LCAyNTQsIDI4LCAyMTMsIAotICAgIDI1MiwgMTM4LCAyNTEsIDEwLCA0OCwgMjEzLCAyNTIsIDUsIDIzNSwgMTA4LCAyMTMsIDI1MiwgNSwgMjE0LCAxNjEsIDcsIAotICAgIDEsIDQsIDYsIDYxLCA3LCAxLCA0LCA2LCAyNTQsIDI1MiwgNywgNCwgMSwgMjE1LCA5NCwgMjU0LCAyNTIsIDcsIDEsIDQsIAotICAgIDYsIDI1MiwgMTQyLCAyNTMsIDE2NiwgNywgMSwgNCwgNiwgMjUxLCA3NCwgNywgMSwgNCwgNiwgMjQ5LCA2OCwgNywgMSwgNCwgCi0gICAgNiwgMjQ1LCA2NywgNywgMSwgNCwgNiwgNzYsIDcsIDQsIDEsIDIxNSwgOTQsIDIwNCwgNzYsIDcsIDQsIDEsIDIxNSwgOTQsIAotICAgIDc0LCA3LCAxLCA0LCA2LCAyMzUsIDE1MCwgNywgMSwgNCwgNiwgMjM1LCAyOSwgNywgMSwgNCwgNiwgMjMzLCAxNTUsIDIsIAotICAgIDkxLCA3LCAxLCA0LCA2LCAxOTQsIDcsIDEsIDQsIDYsIDIyMywgNTIsIDIzMCwgMzAsIDcsIDEsIDQsIDYsIDc4LCA3LCAxLCAKLSAgICA0LCA2LCAyMDQsIDc4LCA3LCA0LCAxLCAyMTksIDE4OSwgNzgsIDcsIDQsIDEsIDIxOSwgMTg5LCAyMDQsIDc4LCA3LCA0LCAKLSAgICAxLCAyMTksIDE4OSwgMTQ0LCAyLCA5MSwgNywgNCwgMSwgMjE1LCA5NCwgMjI2LCAyMzgsIDcsIDEsIDQsIDYsIDIyNiwgCi0gICAgMTM4LCA3LCA0LCAxLCAyMTYsIDE1LCAxNjMsIDc4LCA3LCA0LCAxLCAyNTEsIDE4MywgMTYzLCA3OCwgNywgMSwgNCwgNiwgCi0gICAgMjI2LCAxMDksIDcsIDEsIDQsIDYsIDIyMywgNTIsIDE1MywgNywgMSwgNCwgNiwgMjE1LCA5NCwgMTUzLCA3LCAxLCA0LCA2LCAKLSAgICAyMTcsIDE1MywgNywgMSwgNCwgNiwgNjksIDcsIDQsIDEsIDIxOSwgMTg5LCA2OSwgNywgNCwgMSwgMjE5LCAxODksIDI0OCwgCi0gICAgOCwgNjksIDcsIDQsIDEsIDIxOSwgMTg5LCAyMTUsIDk0LCAxOTQsIDcsIDEsIDQsIDYsIDIxNCwgMTA1LCA3LCAxLCA0LCA2LCAKLSAgICAyMTIsIDk4LCA3LCAxLCA0LCA2LCAyMTAsIDE1OSwgNywgMSwgNCwgNiwgMjQ1LCAxNiwgNywgMSwgMjEzLCAxMzUsIDIzMywgCi0gICAgODgsIDIxOCwgMjUyLCA3LCAxLCAyNTQsIDIwNSwgMjYsIDEsIDQsIDYsIDI0MywgMTE0LCAyNiwgMSwgNCwgNiwgMjMzLCAKLSAgICAxMDQsIDI2LCAxLCA0LCA2LCAyMjUsIDExMSwgMjYsIDEsIDQsIDYsIDIyMywgNDAsIDI2LCAxLCA0LCA2LCAyMjQsIDE2NCwgCi0gICAgMzMsIDEsIDQsIDYsIDI0NSwgMTgyLCA1OCwgMSwgNiwgNjEsIDU4LCAxLCA2LCAyNTQsIDI1MiwgNTgsIDEsIDYsIDI1MywgCi0gICAgMTY2LCA1OCwgMSwgNiwgMjUyLCAxNDIsIDI1MywgMTY2LCA1OCwgMSwgNiwgMjQ5LCA2OCwgNTgsIDEsIDYsIDc2LCA1OCwgCi0gICAgMSwgNiwgMjIzLCA1MiwgNzYsIDU4LCAxLCA2LCAyNDMsIDIwOSwgNTgsIDEsIDYsIDI0MiwgNjcsIDU4LCAxLCA2LCA3NCwgCi0gICAgNTgsIDEsIDYsIDIzNSwgMTUwLCA1OCwgMSwgNiwgMjM1LCAyOSwgNTgsIDEsIDYsIDE1NiwgNTgsIDEsIDYsIDE5NCwgNTgsIAotICAgIDEsIDYsIDIzMCwgMzAsIDU4LCAxLCA2LCAyMjMsIDUyLCAyMzAsIDMwLCA1OCwgMSwgNiwgNzgsIDU4LCAxLCA2LCAyMjYsIAotICAgIDEzOCwgNTgsIDEsIDYsIDIyNiwgMTA5LCA1OCwgMSwgNiwgMTUzLCA1OCwgMSwgNiwgMjE3LCAxNTMsIDU4LCAxLCA2LCA2OSwgCi0gICAgNTgsIDEsIDYsIDIxMiwgOTgsIDU4LCAxLCA0LCA2MSwgNTgsIDEsIDQsIDIxNSwgOTQsIDYxLCA1OCwgMSwgNCwgMjU0LCAKLSAgICAxNTEsIDU4LCAxLCA0LCAyMTUsIDk0LCAyNTQsIDI1MiwgNTgsIDEsIDQsIDI1MywgMTY2LCA1OCwgMSwgNCwgMjQ5LCA2OCwgCi0gICAgNTgsIDEsIDQsIDc2LCA1OCwgMSwgNCwgMjIxLCAxOTcsIDU4LCAxLCA0LCAyMDQsIDc2LCA1OCwgMSwgNCwgMjE1LCA5NCwgCi0gICAgMjA0LCA3NiwgNTgsIDEsIDQsIDI0MywgMjA5LCA1OCwgMSwgNCwgMjE1LCA5NCwgNzQsIDU4LCAxLCA0LCAyMzUsIDI5LCAKLSAgICA1OCwgMSwgNCwgMTk0LCA1OCwgMSwgNCwgMjQ1LCAxNDYsIDU4LCAxLCA0LCA3OCwgNTgsIDEsIDQsIDIwNCwgNzgsIDU4LCAKLSAgICAxLCA0LCAyMTYsIDE1LCAxNjMsIDc4LCA1OCwgMSwgNCwgMjUxLCAxODMsIDE2MywgNzgsIDU4LCAxLCA0LCAyMjYsIDEwOSwgCi0gICAgNTgsIDEsIDQsIDIxNywgMTUzLCA1OCwgMSwgNCwgNjksIDU4LCAxLCA0LCAyMTksIDE4OSwgNjksIDU4LCAxLCA0LCAyMTUsIAotICAgIDk0LCAxOTQsIDU4LCAxLCA0LCAyMTQsIDEwNSwgNTgsIDEsIDQsIDI1NCwgMjA1LCA1OCwgMSwgNCwgMjUyLCAzNCwgNTgsIAotICAgIDEsIDQsIDI2LCAyNDMsIDExNCwgNTgsIDEsIDQsIDI0OCwgNjIsIDU4LCAxLCA0LCAyNiwgMjI1LCAxMzYsIDU4LCAxLCA0LCAKLSAgICAyNTAsIDExOCwgNywgMjE4LCA2NiwgNCwgMSwgNzQsIDcsIDIxOCwgNjYsIDQsIDEsIDE1MywgNywgMjE4LCA2NiwgNCwgMSwgCi0gICAgNjksIDcsIDIxOCwgNjYsIDQsIDEsIDIxNCwgMTA1LCAyNiwgMjE4LCA2NiwgNCwgMSwgMjUyLCAzNCwgMjYsIDIxOCwgNjYsIAotICAgIDQsIDEsIDI0MywgMTE0LCAyNiwgMjE4LCA2NiwgNCwgMSwgMjIzLCA0MCwgMjYsIDIxOCwgNjYsIDQsIDEsIDIyNSwgMTM2LCAKLSAgICAyNiwgMjE4LCA2NiwgNCwgMSwgMjUwLCAxMTgsIDcsIDQsIDEsIDIxNCwgMjE0LCA3LCA0LCAxLCA1NywgMiwgMjMwLCAyMjksIAotICAgIDE4NCwgNywgNCwgMSwgMjQ5LCA2OSwgMiwgMjMwLCAyMjksIDE4NCwgNywgNCwgMSwgMjQ1LCAxNSwgMiwgMjMwLCAyMjksIAotICAgIDE4NCwgNywgNCwgMSwgMjMyLCA1NSwgMiwgMjMwLCAyMjksIDE4NCwgNywgNCwgMSwgMjMwLCAzMSwgMiwgMjMwLCAyMjksIAotICAgIDE4NCwgNywgNCwgMSwgMjI2LCAxMTAsIDIsIDIzMCwgMjI5LCAxODQsIDcsIDQsIDEsIDIyMywgMjI3LCAyLCAyMzAsIDIyOSwgCi0gICAgMTg0LCA3LCA0LCAxLCAyMjMsIDIyNywgMiwgMjQ0LCA5NiwgMjIsIDIzMCwgMjI5LCAxODQsIDcsIDQsIDEsIDIyMiwgOTQsIAotICAgIDIsIDIzMCwgMjI5LCAxODQsIDcsIDQsIDEsIDIxNywgMTU0LCAyLCAyMzAsIDIyOSwgMTg0LCA3LCA0LCAxLCAyMTAsIDE2MCwgCi0gICAgMiwgMjMwLCAyMjksIDE4NCwgNywgNCwgMSwgMjE1LCA5NCwgMjQzLCAyMDksIDU4LCAxLCAzMywgMjQ1LCAxNTgsIDcsIDQsIAotICAgIDEsIDIzNSwgMjIwLCAyNDMsIDIwOSwgNywgNCwgMSwgMjE2LCAyMTIsIDIsIDIxOCwgMTA5LCA3LCA0LCA2LCAxLCAyNDAsIAotICAgIDE2MSwgMiwgOTEsIDcsIDQsIDEsIDIzNSwgMTkzLCAyLCA5MSwgNywgNCwgMSwgMjI2LCAxMTAsIDIsIDkxLCA3LCA0LCA2LCAKLSAgICAxLCAxMDQsIDIsIDkxLCA3LCA0LCAxLCAyMTQsIDE1OCwgMiwgOTEsIDcsIDQsIDEsIDU3LCAyLCAyMjYsIDcwLCAxMDMsIDcsIAotICAgIDQsIDEsIDI0OSwgNjksIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgMjQ1LCAxNSwgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAKLSAgICAxLCAyNDMsIDIxMCwgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCAyMjYsIDcwLCAxMDMsIDcsIDQsIDEsIAotICAgIDIzMywgMTU1LCAyLCAyMjYsIDcwLCAxMDMsIDcsIDQsIDEsIDIzMiwgNTUsIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgCi0gICAgMjMwLCAzMSwgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAxLCAyMjYsIDExMCwgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAxLCAKLSAgICAyMjMsIDIyNywgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAxLCAyMjIsIDk0LCAyLCAyMjYsIDcwLCAxMDMsIDcsIDQsIDEsIAotICAgIDI0NSwgODQsIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgMjE0LCAxMDYsIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgCi0gICAgMjExLCAxNzksIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgCi0gICAgMTE2LCAyLCAyMjMsIDU4LCAxMDMsIDcsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMjMsIDU4LCAxMDMsIDcsIDQsIDEsIDI0OSwgCi0gICAgNjksIDIsIDI0MSwgNTksIDIyLCAyMTcsIDc4LCA3LCA0LCAxLCAxNjAsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgMSwgMjA0LCAKLSAgICAxNjAsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgMSwgMjIzLCA1MiwgMjA0LCAxNjAsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgCi0gICAgMSwgMjIxLCAxOTgsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgCi0gICAgMSwgMjA0LCAxNDQsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgMSwgMjQ1LCA4NCwgMiwgMjIzLCA1OCwgMTAzLCA3LCA0LCAxLCAKLSAgICAxMDQsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgMSwgMjQ1LCAxNywgMiwgMjIzLCA1OCwgMTAzLCA1OCwgMSwgNCwgMjE1LCAKLSAgICA5NCwgMjU0LCAxNTEsIDU4LCAxLCA0LCAyNTEsIDc0LCA1OCwgMSwgNCwgMjUxLCA3NSwgMiwgMjQ5LCAxMDgsIDU4LCAxLCAKLSAgICA0LCAyNDUsIDY3LCA1OCwgMSwgNCwgMjIzLCA1MiwgMjA0LCA3NiwgNTgsIDEsIDQsIDI0NSwgMTQsIDU4LCAxLCA0LCAyNDcsIAotICAgIDEyNywgMjM1LCAxNTEsIDIsIDkxLCA1OCwgMSwgNCwgMTE5LCAyNDMsIDIwOSwgNTgsIDEsIDQsIDIxNSwgOTQsIDI0MiwgCi0gICAgNjcsIDU4LCAxLCA0LCAyNDAsIDE2MSwgMiwgOTEsIDU4LCAxLCA0LCAyMzUsIDE5MiwgNTgsIDEsIDQsIDYsIDc0LCA1OCwgCi0gICAgMSwgNCwgNiwgMjQwLCAxNjEsIDIsIDkxLCA1OCwgMSwgNCwgMjM1LCAxNTEsIDIsIDI0OSwgMTM1LCA1OCwgMSwgNCwgMjMzLCAKLSAgICAxNTUsIDIsIDIyMywgNTgsIDEwMywgNTgsIDEsIDQsIDIzMywgMTU1LCAyLCAyMjYsIDcwLCAxMDMsIDU4LCAxLCA0LCA2LCAKLSAgICAxNTYsIDU4LCAxLCA0LCAyMzIsIDU1LCAyLCAxMDMsIDU4LCAxLCA0LCAyMTUsIDk0LCAyMzIsIDU1LCAyLCAyMDAsIDIzMywgCi0gICAgNDIsIDU4LCAxLCA0LCAyMzAsIDMxLCAyLCA0MywgMTAzLCA1OCwgMSwgNCwgMjMwLCAzMSwgMiwgMjIzLCA1OCwgMTAzLCAKLSAgICA1OCwgMSwgNCwgNiwgMjMwLCAzMCwgNTgsIDEsIDQsIDI1MiwgMTQyLCA3OCwgNTgsIDEsIDQsIDIyNSwgMTM2LCA1OCwgMSwgCi0gICAgNCwgMjIyLCA5NCwgMiwgMTAzLCA1OCwgMSwgNCwgMjQ1LCA4MywgNTgsIDEsIDQsIDIxNywgMTU0LCAyLCAyMjYsIDcwLCAKLSAgICAxMDMsIDU4LCAxLCA0LCAxMDQsIDEzMCwgNTgsIDEsIDQsIDIxNCwgMTU3LCA1OCwgMSwgNCwgNiwgNjksIDU4LCAxLCA0LCAKLSAgICAyMTQsIDEwNiwgMiwgMTAzLCA1OCwgMSwgNCwgMjE1LCA5NCwgMjE0LCAxMDUsIDU4LCAxLCA0LCAyMTAsIDE1OSwgNTgsIDEsIAotICAgIDQsIDIxMCwgMTYwLCAyLCAyMjMsIDU4LCAxMDMsIDU4LCAxLCA0LCAyMTAsIDE2MCwgMiwgMjQ5LCAxMDgsIDU4LCAxLCA0LCAKLSAgICAyNDUsIDE2LCA1OCwgMSwgNCwgMjE2LCAxODAsIDM4LCAyNDYsIDEyNiwgMjQyLCAxNDQsIDI1NSwgMjMsIDM4LCAyNDYsIAotICAgIDEyNiwgMjU1LCAxMiwgMjU1LCAyMywgMzgsIDIxOSwgNzEsIDUxLCAzOCwgMjE4LCA3LCA3OSwgMzgsIDIzMSwgMjM2LCAzOCwgCi0gICAgMjQyLCAxNDEsIDM4LCAyMzEsIDIzNCwgMzgsIDI1NSwgMTAsIDM4LCAyNDIsIDE0MiwgMzgsIDI1NSwgMTEsIDM4LCA3LCA0LCAKLSAgICAxLCAyMjMsIDIyNywgNTEsIDM4LCAyNTEsIDE1MywgMzgsIDIzMSwgMjM1LCAzOCwgNTIsIDI1MCwgMzksIDQ4LCAzOCwgCi0gICAgMjI2LCAyMjksIDQ4LCAzOCwgMjEwLCAzNSwgNTEsIDM4LCAyMzUsIDE3OSwgNTEsIDM4LCAyMTQsIDE1MSwgNDgsIDM4LCAKLSAgICAyMTQsIDEzNCwgNDgsIDM4LCA3LCA0LCAxLCAyNDQsIDcxLCAyMDQsIDExNiwgNDgsIDM4LCA3LCA0LCAxLCAyNTQsIDI1MiwgCi0gICAgMzgsIDcsIDQsIDEsIDI1NCwgODEsIDM4LCA3LCA0LCAxLCAyNTMsIDE4NCwgMzgsIDcsIDQsIDEsIDI1MSwgNzUsIDI1MCwgCi0gICAgMTkxLCAzOCwgNywgNCwgMSwgMjM1LCAyMjAsIDI0OSwgNjgsIDM4LCA3LCA0LCAxLCAyNDUsIDY3LCAzOCwgNywgNCwgMSwgCi0gICAgMjQzLCAyMDksIDM4LCA3LCAxLCA0LCA2LCAyNDMsIDIwOSwgMzgsIDcsIDQsIDEsIDIzNSwgMjksIDM4LCA3LCA0LCAxLCAKLSAgICAxNTYsIDM4LCA3LCAxLCA0LCA2LCAxNTYsIDM4LCA3LCAxLCA0LCA2LCAxOTQsIDM4LCA3LCA0LCAxLCAyMzAsIDMwLCAzOCwgCi0gICAgNywgMSwgNCwgNiwgMjMwLCAzMCwgMzgsIDcsIDEsIDQsIDYsIDE1MywgMzgsIDcsIDQsIDEsIDIyMywgMjI3LCAyMjIsIAotICAgIDE4OCwgMzgsIDcsIDQsIDEsIDIyMiwgOTMsIDM4LCA3LCA0LCAxLCAyMDAsIDIyMiwgOTMsIDM4LCA3LCA0LCAxLCAyMTAsIAotICAgIDE1OSwgMzgsIDUyLCAyMzUsIDIwMCwgMjUxLCAxNTUsIDUxLCAzOCwgMjU0LCAxNTYsIDEyOCwgMjE2LCA0MywgNTEsIDM4LCAKLSAgICA0MywgMjU0LCAyLCA0OCwgMzgsIDQ0LCAyNTQsIDIsIDIyLCAxMjQsIDI1NCwgMiwgNTEsIDcsIDYsIDEsIDExNiwgMiwgCi0gICAgMjIyLCAyMzcsIDUxLCA3LCA0LCAxLCAxMTYsIDIsIDIyMiwgMjM3LCA1MSwgNywgNiwgMSwgNTcsIDIsIDU5LCA0OCwgNywgCi0gICAgNCwgMSwgNTcsIDIsIDU5LCA0OCwgNywgNiwgMSwgNTcsIDIsIDU5LCA1MSwgNywgNCwgMSwgNTcsIDIsIDU5LCA1MSwgNywgCi0gICAgNiwgMSwgNTcsIDIsIDIzMiwgMjIwLCA1MSwgNywgNCwgMSwgNTcsIDIsIDIzMiwgMjIwLCA1MSwgNywgNiwgMSwgMjUxLCAKLSAgICA3NSwgMiwgMjUwLCAxOTIsIDIyLCAxNDIsIDcsIDQsIDEsIDI1MSwgNzUsIDIsIDI1MCwgMTkyLCAyMiwgMTQyLCA3LCA2LCAKLSAgICAxLCAyNDksIDY5LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0OSwgNjksIDIsIDU5LCA0OCwgNywgNiwgMSwgMjQ5LCA2OSwgMiwgCi0gICAgNTksIDUxLCA3LCA0LCAxLCAyNDksIDY5LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDI0OSwgNjksIDIsIDIzMiwgMjIwLCA1MSwgCi0gICAgNywgNCwgMSwgMjQ5LCA2OSwgMiwgMjMyLCAyMjAsIDUxLCA3LCA2LCAxLCAyNDksIDY5LCAyLCAyNTAsIDE5MSwgNywgNCwgCi0gICAgMSwgMjQ5LCA2OSwgMiwgMjUwLCAxOTEsIDcsIDYsIDEsIDI0OSwgNjksIDIsIDI1MCwgMzksIDUxLCA3LCA0LCAxLCAyNDksIAotICAgIDY5LCAyLCAyNTAsIDM5LCA1MSwgNywgNiwgMSwgMTYwLCAyLCAyMzEsIDIzOCwgMjIsIDI0MiwgMTQzLCA3LCA0LCAxLCAKLSAgICAxNjAsIDIsIDIzMSwgMjM4LCAyMiwgMjQyLCAxNDMsIDcsIDYsIDEsIDE2MCwgMiwgMjMxLCAyMzgsIDIyLCAxNDIsIDcsIDQsIAotICAgIDEsIDE2MCwgMiwgMjMxLCAyMzgsIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzOSwgNTEsIDcsIDQsIDEsIDE2MCwgCi0gICAgMiwgMjUwLCAzOSwgNTEsIDcsIDYsIDEsIDE2MCwgMiwgMjE2LCA5MCwgNTEsIDcsIDQsIDEsIDE2MCwgMiwgMjE2LCA5MCwgCi0gICAgNTEsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAxOTIsIDIyLCAyNTEsIDE1NCwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDE5MiwgCi0gICAgMjIsIDI1MSwgMTU0LCA3LCA2LCAxLCAyNDUsIDE1LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0NSwgMTUsIDIsIDU5LCA0OCwgCi0gICAgNywgNiwgMSwgMjQzLCAyMTAsIDIsIDIzMSwgMjM3LCA3LCA0LCAxLCAyNDMsIDIxMCwgMiwgMjMxLCAyMzcsIDcsIDYsIDEsIAotICAgIDI0MiwgNjgsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjQyLCA2OCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyNDIsIDY4LCAyLCA1OSwgCi0gICAgNTEsIDcsIDQsIDEsIDI0MiwgNjgsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjQyLCA2OCwgMiwgMjQ4LCA5LCA3LCA0LCAxLCAKLSAgICAyNDIsIDY4LCAyLCAyNDgsIDksIDcsIDYsIDEsIDI0MiwgNjgsIDIsIDI1MCwgMTkxLCA3LCA0LCAxLCAyNDIsIDY4LCAyLCAKLSAgICAyNTAsIDE5MSwgNywgNiwgMSwgMjQyLCA2OCwgMiwgMjUxLCAxNTUsIDUxLCA3LCA0LCAxLCAyNDIsIDY4LCAyLCAyNTEsIAotICAgIDE1NSwgNTEsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAyMTYsIDkwLCA1MSwgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDIxNiwgCi0gICAgOTAsIDUxLCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgMjQ4LCAxMCwgMjIsIDE0MiwgNywgNCwgMSwgMjQwLCAxNjEsIDIsIAotICAgIDI0OCwgMTAsIDIyLCAxNDIsIDcsIDYsIDEsIDIzNSwgMzAsIDIsIDE0MiwgNywgNCwgMSwgMjM1LCAzMCwgMiwgMTQyLCA3LCAKLSAgICA2LCAxLCAyMzUsIDMwLCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIzNSwgMzAsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjM1LCAzMCwgCi0gICAgMiwgMjMyLCAyMjAsIDUxLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCAyMzIsIDIyMCwgNTEsIDcsIDYsIDEsIDIzMywgMTU1LCAyLCAKLSAgICA1OSwgNTEsIDcsIDQsIDEsIDIzMywgMTU1LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIzMywgMTU1LCAyLCA1OSwgMjUyLCA1MSwgCi0gICAgMjIsIDIzMSwgMjM3LCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgNTksIDI1MiwgNTEsIDIyLCAyMzEsIDIzNywgNywgNiwgMSwgCi0gICAgMjMzLCAxNTUsIDIsIDIzMiwgMjIwLCA1MSwgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDIzMiwgMjIwLCA1MSwgNywgNiwgMSwgCi0gICAgMjMzLCAxNTUsIDIsIDI1MCwgMzksIDUxLCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgMjUwLCAzOSwgNTEsIDcsIDYsIDEsIAotICAgIDIzMiwgNTUsIDIsIDE0MiwgNywgNCwgMSwgMjMyLCA1NSwgMiwgMTQyLCA3LCA2LCAxLCAyMzIsIDU1LCAyLCA1OSwgNDgsIAotICAgIDcsIDQsIDEsIDIzMiwgNTUsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjMyLCA1NSwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMzIsIAotICAgIDU1LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIzMCwgMzEsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjMwLCAzMSwgMiwgNTksIDQ4LCAKLSAgICA3LCA2LCAxLCAyMzAsIDMxLCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIzMCwgMzEsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjMwLCAKLSAgICAzMSwgMiwgMjMyLCAyMjAsIDUxLCA3LCA0LCAxLCAyMzAsIDMxLCAyLCAyMzIsIDIyMCwgNTEsIDcsIDYsIDEsIDIzMCwgMzEsIAotICAgIDIsIDI1MCwgMzksIDUxLCA3LCA0LCAxLCAyMzAsIDMxLCAyLCAyNTAsIDM5LCA1MSwgNywgNiwgMSwgMTQ0LCAyLCAyMTYsIAotICAgIDkwLCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDIxNiwgOTAsIDIyLCAxNDIsIDcsIDYsIDEsIDE0NCwgMiwgMjE2LCA5MCwgCi0gICAgMjIsIDI0OCwgOSwgNywgNCwgMSwgMTQ0LCAyLCAyMTYsIDkwLCAyMiwgMjQ4LCA5LCA3LCA2LCAxLCAxNDQsIDIsIDIzMSwgCi0gICAgMjM4LCAyMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDE0NCwgMiwgMjMxLCAyMzgsIDIyLCAyNDIsIDE0MywgNywgNiwgMSwgMTQ0LCAKLSAgICAyLCAyMzEsIDIzOCwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyMzEsIDIzOCwgMjIsIDE0MiwgNywgNiwgMSwgMjI2LCAKLSAgICAxMTAsIDIsIDE0MiwgNywgNCwgMSwgMjI2LCAxMTAsIDIsIDE0MiwgNywgNiwgMSwgMjI2LCAxMTAsIDIsIDU5LCA0OCwgNywgCi0gICAgNCwgMSwgMjI2LCAxMTAsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjIzLCAKLSAgICAyMjcsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjIzLCAyMjcsIDIsIDU5LCAKLSAgICA1MSwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDU5LCAyNTIsIDUxLCAyMiwgMjMxLCAyMzcsIDcsIDQsIDEsIDIyMywgMjI3LCAKLSAgICAyLCA1OSwgMjUyLCA1MSwgMjIsIDIzMSwgMjM3LCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgMjMyLCAyMjAsIDUxLCA3LCA0LCAKLSAgICAxLCAyMjMsIDIyNywgMiwgMjMyLCAyMjAsIDUxLCA3LCA2LCAxLCAyMjIsIDk0LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIyMiwgCi0gICAgOTQsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIyLCA5NCwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMjIsIDk0LCAyLCA1OSwgNTEsIAotICAgIDcsIDYsIDEsIDIyMiwgOTQsIDIsIDI1NSwgMTIsIDIyLCA1OSwgNDgsIDcsIDQsIDEsIDIyMiwgOTQsIDIsIDI1NSwgMTIsIAotICAgIDIyLCA1OSwgNDgsIDcsIDYsIDEsIDIyMiwgOTQsIDIsIDI1MCwgMjQzLCAyMiwgNTksIDQ4LCA3LCA0LCAxLCAyMjIsIDk0LCAKLSAgICAyLCAyNTAsIDI0MywgMjIsIDU5LCA0OCwgNywgNiwgMSwgMjIyLCA5NCwgMiwgNTksIDI1MiwgNTEsIDIyLCA1OSwgNDgsIDcsIAotICAgIDQsIDEsIDIyMiwgOTQsIDIsIDU5LCAyNTIsIDUxLCAyMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgNTksIDQ4LCAKLSAgICA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMTcsIAotICAgIDE1NCwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgMjMyLCAyMjAsIDUxLCA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgCi0gICAgMjMyLCAyMjAsIDUxLCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgMjUwLCAzOSwgNTEsIDcsIDQsIDEsIDIxNywgMTU0LCAyLCAKLSAgICAyNTAsIDM5LCA1MSwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDEwLCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDEwLCA1MSwgCi0gICAgNywgNiwgMSwgMTA0LCAyLCAyMTYsIDkwLCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyMTYsIDkwLCA1MSwgNywgNiwgMSwgMTA0LCAKLSAgICAyLCAyNTAsIDM5LCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyNTAsIDM5LCA1MSwgNywgNiwgMSwgMTA0LCAyLCAyMTYsIDkwLCAKLSAgICAyMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDIxNiwgOTAsIDIyLCAxNDIsIDcsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzgsIAotICAgIDIyLCAyNDgsIDksIDcsIDQsIDEsIDEwNCwgMiwgMjMxLCAyMzgsIDIyLCAyNDgsIDksIDcsIDYsIDEsIDIxNCwgMTA2LCAyLCAKLSAgICAxODQsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAxODQsIDcsIDYsIDEsIDIxNCwgMTA2LCAyLCA1OSwgNTEsIDcsIDQsIDEsIAotICAgIDIxNCwgMTA2LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxMiwgOTksIDIsIDI0MiwgMTQzLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAKLSAgICAyNDIsIDE0MywgNywgNiwgMSwgMjEyLCA5OSwgMiwgMTQyLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAxNDIsIDcsIDYsIDEsIAotICAgIDIxMiwgOTksIDIsIDI0OCwgOSwgNywgNCwgMSwgMjEyLCA5OSwgMiwgMjQ4LCA5LCA3LCA2LCAxLCAyMTIsIDk5LCAyLCA1OSwgCi0gICAgNDgsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDU5LCA0OCwgNywgNiwgMSwgMjEyLCA5OSwgMiwgNTksIDUxLCA3LCA0LCAxLCAKLSAgICAyMTIsIDk5LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxMSwgMTc5LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIxMSwgMTc5LCAyLCAKLSAgICA1OSwgNDgsIDcsIDYsIDEsIDIxMSwgMTc5LCAyLCAyNDgsIDksIDcsIDQsIDEsIDIxMSwgMTc5LCAyLCAyNDgsIDksIDcsIDYsIAotICAgIDEsIDIxMSwgMTE4LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIxMCwgMTYwLCAKLSAgICAyLCAyNTAsIDM4LCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjUwLCAzOCwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDU5LCA1MSwgCi0gICAgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDIzMiwgMjIwLCA1MSwgNywgNCwgCi0gICAgMSwgMjEwLCAxNjAsIDIsIDIzMiwgMjIwLCA1MSwgNywgNCwgMSwgMjQyLCA2OCwgMiwgMjMyLCAyMjAsIDUxLCA3LCA0LCAxLCAKLSAgICAyMTcsIDE1NCwgMiwgMjQ4LCA5LCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAyMjIsIDIzNywgNDgsIDcsIDQsIDEsIDIxMSwgCi0gICAgMTE4LCAyLCAyMjIsIDIzNywgNDgsIDcsIDQsIDEsIDExNiwgMiwgNDQsIDE2MywgMjIyLCAyMzYsIDcsIDQsIDEsIDIwMCwgCi0gICAgMjIyLCA5NCwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyMDAsIDIyMiwgOTQsIDIsIDI0OCwgNywgOTEsIDcsIDQsIDEsIDIwMCwgCi0gICAgMjIyLCA5NCwgMiwgMTI1LCA5MSwgNywgNiwgMSwgMjIwLCA3OCwgMjIyLCA5MywgNywgNCwgMSwgMjQ4LCA2MiwgNywgNiwgCi0gICAgMSwgMTE2LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDExNiwgMiwgNTksIDUxLCA3LCA2LCAxLCAxMTYsIDIsIDI0MSwgNTksIDQ4LCAKLSAgICA3LCA0LCAxLCAxMTYsIDIsIDI0MSwgNTksIDQ4LCA3LCA2LCAxLCAxMTYsIDIsIDI1MCwgMzksIDIyLCAxNDIsIDcsIDQsIDEsIAotICAgIDExNiwgMiwgMjUwLCAzOSwgMjIsIDE0MiwgNywgNiwgMSwgMTE2LCAyLCAyNTAsIDM5LCAyMiwgMjQyLCAxNDMsIDcsIDQsIAotICAgIDEsIDExNiwgMiwgMjUwLCAzOSwgMjIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxMTYsIDIsIDI1MCwgMzksIDIyLCAyNDEsIDU5LCAKLSAgICA0OCwgNywgNCwgMSwgMTE2LCAyLCAyNTAsIDM5LCAyMiwgMjQxLCA1OSwgNDgsIDcsIDYsIDEsIDExNiwgMiwgMjUwLCAzOSwgCi0gICAgMjIsIDE4NCwgNywgNCwgMSwgMTE2LCAyLCAyNTAsIDM5LCAyMiwgMTg0LCA3LCA2LCAxLCAxMTYsIDIsIDI1MCwgMzksIDIyLCAKLSAgICA1OSwgNTEsIDcsIDQsIDEsIDExNiwgMiwgMjUwLCAzOSwgMjIsIDU5LCA1MSwgNywgNiwgMSwgMTE2LCAyLCAyNTEsIDE1NSwgCi0gICAgMjIsIDE0MiwgNywgNCwgMSwgMTE2LCAyLCAyNTEsIDE1NSwgMjIsIDE0MiwgNywgNiwgMSwgMTE2LCAyLCAyNTEsIDE1NSwgCi0gICAgMjIsIDI0MiwgMTQzLCA3LCA0LCAxLCAxMTYsIDIsIDI1MSwgMTU1LCAyMiwgMjQyLCAxNDMsIDcsIDYsIDEsIDExNiwgMiwgCi0gICAgMjUxLCAxNTUsIDIyLCAyNDEsIDU5LCA0OCwgNywgNCwgMSwgMTE2LCAyLCAyNTEsIDE1NSwgMjIsIDI0MSwgNTksIDQ4LCA3LCAKLSAgICA2LCAxLCAxMTYsIDIsIDI1MSwgMTU1LCAyMiwgMTg0LCA3LCA0LCAxLCAxMTYsIDIsIDI1MSwgMTU1LCAyMiwgMTg0LCA3LCAKLSAgICA2LCAxLCAxMTYsIDIsIDI1MSwgMTU1LCAyMiwgNTksIDUxLCA3LCA0LCAxLCAxMTYsIDIsIDI1MSwgMTU1LCAyMiwgNTksIAotICAgIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDU5LCA1MSwgNywgNCwgMSwgMTYwLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDE2MCwgMiwgCi0gICAgMjQxLCA1OSwgNDgsIDcsIDQsIDEsIDE2MCwgMiwgMjQxLCA1OSwgNDgsIDcsIDYsIDEsIDE2MCwgMiwgMTg0LCA3LCA0LCAxLCAKLSAgICAxNjAsIDIsIDE4NCwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDM5LCAyMiwgMTQyLCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgMzksIAotICAgIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzOSwgMjIsIDI0MiwgMTQzLCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgCi0gICAgMzksIDIyLCAyNDIsIDE0MywgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDM5LCAyMiwgMjQxLCA1OSwgNDgsIDcsIDQsIDEsIAotICAgIDE2MCwgMiwgMjUwLCAzOSwgMjIsIDI0MSwgNTksIDQ4LCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzksIDIyLCAxODQsIDcsIAotICAgIDQsIDEsIDE2MCwgMiwgMjUwLCAzOSwgMjIsIDE4NCwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDM5LCAyMiwgNTksIDUxLCA3LCAKLSAgICA0LCAxLCAxNjAsIDIsIDI1MCwgMzksIDIyLCA1OSwgNTEsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAyNDEsIDU5LCA0OCwgNywgCi0gICAgNCwgMSwgMjQwLCAxNjEsIDIsIDI0MSwgNTksIDQ4LCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgNTksIDUxLCA3LCA0LCAxLCAKLSAgICAyNDAsIDE2MSwgMiwgNTksIDUxLCA3LCA2LCAxLCAxNDQsIDIsIDU5LCA1MSwgNywgNCwgMSwgMTQ0LCAyLCA1OSwgNTEsIDcsIAotICAgIDYsIDEsIDE0NCwgMiwgMjQxLCA1OSwgNDgsIDcsIDQsIDEsIDE0NCwgMiwgMjQxLCA1OSwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgCi0gICAgMjUwLCAzOSwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDM5LCAyMiwgMTQyLCA3LCA2LCAxLCAxNDQsIDIsIAotICAgIDI1MCwgMzksIDIyLCAyNDIsIDE0MywgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDM5LCAyMiwgMjQyLCAxNDMsIDcsIDYsIDEsIAotICAgIDE0NCwgMiwgMjUwLCAzOSwgMjIsIDI0MSwgNTksIDQ4LCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzksIDIyLCAyNDEsIDU5LCAKLSAgICA0OCwgNywgNiwgMSwgMTQ0LCAyLCAyNTAsIDM5LCAyMiwgMTg0LCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzksIDIyLCAxODQsIAotICAgIDcsIDYsIDEsIDE0NCwgMiwgMjUwLCAzOSwgMjIsIDU5LCA1MSwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDM5LCAyMiwgNTksIAotICAgIDUxLCA3LCA2LCAxLCAxNDQsIDIsIDI0MSwgMCwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyNDEsIDAsIDIyLCAxNDIsIAotICAgIDcsIDYsIDEsIDE0NCwgMiwgMjQxLCAwLCAyMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDE0NCwgMiwgMjQxLCAwLCAyMiwgMjQyLCAKLSAgICAxNDMsIDcsIDYsIDEsIDE0NCwgMiwgMjQxLCAwLCAyMiwgMjQxLCA1OSwgNDgsIDcsIDQsIDEsIDE0NCwgMiwgMjQxLCAwLCAKLSAgICAyMiwgMjQxLCA1OSwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgMjQxLCAwLCAyMiwgMTg0LCA3LCA0LCAxLCAxNDQsIDIsIDI0MSwgCi0gICAgMCwgMjIsIDE4NCwgNywgNiwgMSwgMTQ0LCAyLCAyNDEsIDAsIDIyLCA1OSwgNTEsIDcsIDQsIDEsIDE0NCwgMiwgMjQxLCAwLCAKLSAgICAyMiwgNTksIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDU5LCA1MSwgNywgNCwgMSwgMTA0LCAyLCA1OSwgNTEsIDcsIDYsIDEsIAotICAgIDEwNCwgMiwgMjQxLCA1OSwgNDgsIDcsIDQsIDEsIDEwNCwgMiwgMjQxLCA1OSwgNDgsIDcsIDYsIDEsIDEwNCwgMiwgMjQxLCAKLSAgICAwLCAyMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDI0MSwgMCwgMjIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyNDEsIDAsIAotICAgIDIyLCAyNDIsIDE0MywgNywgNCwgMSwgMTA0LCAyLCAyNDEsIDAsIDIyLCAyNDIsIDE0MywgNywgNiwgMSwgMTA0LCAyLCAKLSAgICAyNDEsIDAsIDIyLCAyNDEsIDU5LCA0OCwgNywgNCwgMSwgMTA0LCAyLCAyNDEsIDAsIDIyLCAyNDEsIDU5LCA0OCwgNywgNiwgCi0gICAgMSwgMTA0LCAyLCAyNDEsIDAsIDIyLCAxODQsIDcsIDQsIDEsIDEwNCwgMiwgMjQxLCAwLCAyMiwgMTg0LCA3LCA2LCAxLCAKLSAgICAxMDQsIDIsIDI0MSwgMCwgMjIsIDU5LCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyNDEsIDAsIDIyLCA1OSwgNTEsIDcsIDYsIDEsIAotICAgIDIxMSwgMTE4LCAyLCAyNDIsIDE0MywgNywgNCwgMSwgMjExLCAxMTgsIDIsIDI0MiwgMTQzLCA3LCA2LCAxLCAyMTEsIDExOCwgCi0gICAgMiwgNTksIDUxLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMjQxLCA1OSwgCi0gICAgNDgsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAyNDEsIDU5LCA0OCwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDE4NCwgNywgNCwgCi0gICAgMSwgMjExLCAxMTgsIDIsIDE4NCwgNywgNiwgMSwgMjMwLCAyMjgsIDIzMiwgMTkxLCA3LCA0LCAxLCAyMzAsIDIyOCwgMjMyLCAKLSAgICAxOTEsIDcsIDYsIDEsIDIzMCwgMjI4LCAyMTQsIDEwNSwgNywgNCwgMSwgMjMwLCAyMjgsIDIxNCwgMTA1LCA3LCA2LCAxLCAKLSAgICAyMTEsIDExOCwgMiwgMjMyLCAxMjksIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAyMzIsIDEyOSwgMjYsIDQsIDEsIDI1NCwgCi0gICAgMTUyLCAyLCAyMjQsIDE1NywgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyNDgsIDE2MSwgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAKLSAgICAyMjQsIDE1OCwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMTQsIDEzLCAyNiwgCi0gICAgNCwgMSwgMjU0LCAxNTIsIDIsIDIyNCwgMTU4LCAyMiwgMjI2LCAxMTQsIDI2LCA0LCAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAKLSAgICAxNjIsIDIyLCAyMjYsIDExNCwgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNSwgMTc4LCAyNiwgNCwgCi0gICAgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjI1LCAxNzgsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNTcsIAotICAgIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAxNjEsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNTgsIDIyLCAKLSAgICAyMTQsIDEzLCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI1NCwgCi0gICAgMTUyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjI2LCAKLSAgICAxMTQsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OCwgMjYsIDYsIDEsIDI1NCwgMTUyLCAKLSAgICAyLCAyNDgsIDE2MiwgMjIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjQ1LCAxMDksIDIsIDIyNCwgMTU3LCAyNiwgNCwgMSwgCi0gICAgMjQ1LCAxMDksIDIsIDI0OCwgMTYxLCAyNiwgNCwgMSwgMjQ1LCAxMDksIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIAotICAgIDQsIDEsIDI0NSwgMTA5LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNDUsIDEwOSwgMiwgMjI0LCAKLSAgICAxNTgsIDIyLCAyMjYsIDExNCwgMjYsIDQsIDEsIDI0NSwgMTA5LCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNiwgCi0gICAgMSwgMjQ1LCAxMDksIDIsIDIyNCwgMTU3LCAyNiwgNiwgMSwgMjQ1LCAxMDksIDIsIDI0OCwgMTYxLCAyNiwgNiwgMSwgMjQ1LCAKLSAgICAxMDksIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI0NSwgMTA5LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgCi0gICAgMTMsIDI2LCA2LCAxLCAyNDUsIDEwOSwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNCwgMjYsIDYsIDEsIDI0NSwgMTA5LCAyLCAKLSAgICAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTcsIDI2LCA0LCAxLCAyNDUsIAotICAgIDcyLCAyLCAyNDgsIDE2MSwgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIAotICAgIDI0NSwgNzIsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDIyNCwgMTU4LCAyMiwgCi0gICAgMjI2LCAxMTQsIDI2LCA0LCAxLCAyNDUsIDcyLCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjQ1LCAKLSAgICA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OCwgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDI0OCwgMTYyLCAyMiwgMjI1LCAKLSAgICAxNzgsIDI2LCA2LCAxLCAyNDUsIDcyLCAyLCAyMjQsIDE1NywgMjYsIDYsIDEsIDI0NSwgNzIsIDIsIDI0OCwgMTYxLCAyNiwgCi0gICAgNiwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIAotICAgIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNCwgMjYsIDYsIDEsIDI0NSwgCi0gICAgNzIsIDIsIDI0OCwgMTYyLCAyMiwgMjI2LCAxMTQsIDI2LCA2LCAxLCAyNDUsIDcyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNSwgCi0gICAgMTc4LCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OCwgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAKLSAgICAyMjQsIDE1NywgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAyNDgsIDE2MSwgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAyMjQsIAotICAgIDE1OCwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMzUsIDE5MywgMiwgMjQ4LCAxNjIsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgCi0gICAgMjM1LCAxOTMsIDIsIDIyNCwgMTU4LCAyMiwgMjI2LCAxMTQsIDI2LCA0LCAxLCAyMzUsIDE5MywgMiwgMjQ4LCAxNjIsIDIyLCAKLSAgICAyMjYsIDExNCwgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAyMjQsIDE1OCwgMjIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjM1LCAKLSAgICAxOTMsIDIsIDI0OCwgMTYyLCAyMiwgMjI1LCAxNzgsIDI2LCA2LCAxLCAyMzUsIDE5MywgMiwgMjI0LCAxNTcsIDI2LCA2LCAKLSAgICAxLCAyMzUsIDE5MywgMiwgMjQ4LCAxNjEsIDI2LCA2LCAxLCAyMzUsIDE5MywgMiwgMjI0LCAxNTgsIDIyLCAyMTQsIDEzLCAKLSAgICAyNiwgNiwgMSwgMjM1LCAxOTMsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIzNSwgMTkzLCAyLCAyMjQsIAotICAgIDE1OCwgMjIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjM1LCAxOTMsIDIsIDI0OCwgMTYyLCAyMiwgMjI2LCAxMTQsIDI2LCA2LCAKLSAgICAxLCAyMzUsIDE5MywgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OCwgMjYsIDYsIDEsIDIzNSwgMTkzLCAyLCAyNDgsIDE2MiwgCi0gICAgMjIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjI2LCAyMDQsIDIsIDIyNCwgMTU3LCAyNiwgNCwgMSwgMjI2LCAyMDQsIDIsIAotICAgIDI0OCwgMTYxLCAyNiwgNCwgMSwgMjI2LCAyMDQsIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIyNiwgCi0gICAgMjA0LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwNCwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIAotICAgIDExNCwgMjYsIDQsIDEsIDIyNiwgMjA0LCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjI2LCAyMDQsIAotICAgIDIsIDIyNCwgMTU3LCAyNiwgNiwgMSwgMjI2LCAyMDQsIDIsIDI0OCwgMTYxLCAyNiwgNiwgMSwgMjI2LCAyMDQsIDIsIDIyNCwgCi0gICAgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgMjA0LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAKLSAgICAyMjYsIDIwNCwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNCwgMjYsIDYsIDEsIDIyNiwgMjA0LCAyLCAyNDgsIDE2MiwgMjIsIAotICAgIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNCwgMTU3LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgCi0gICAgMTYxLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAKLSAgICAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNCwgMjYsIAotICAgIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNCwgCi0gICAgMTU4LCAyMiwgMjI1LCAxNzgsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OCwgMjYsIDYsIAotICAgIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE2MSwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIAotICAgIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNjIsIDIyLCAyMjYsIDExNCwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAKLSAgICAyNDgsIDE2MiwgMjIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU3LCAyNiwgNCwgMSwgMjI2LCAKLSAgICAyMDYsIDIsIDI0OCwgMTYxLCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIAotICAgIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwNiwgMiwgMjI0LCAxNTgsIDIyLCAKLSAgICAyMjYsIDExNCwgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjI2LCAKLSAgICAyMDYsIDIsIDIyNCwgMTU4LCAyMiwgMjI1LCAxNzgsIDI2LCA0LCAxLCAyMjYsIDIwNiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIAotICAgIDE3OCwgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyMjQsIDE1NywgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MSwgCi0gICAgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyMjQsIDE1OCwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMjYsIDIwNiwgMiwgMjQ4LCAKLSAgICAxNjIsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU4LCAyMiwgMjI2LCAxMTQsIDI2LCA2LCAKLSAgICAxLCAyMjYsIDIwNiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjYsIDExNCwgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyMjQsIDE1OCwgCi0gICAgMjIsIDIyNSwgMTc4LCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDI0OCwgMTYyLCAyMiwgMjI1LCAxNzgsIDI2LCA0LCAxLCAKLSAgICAyNTQsIDE1MiwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMjYsIDExNCwgMjYsIDQsIDEsIDI0NSwgCi0gICAgMTA5LCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCAxMDksIDIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgCi0gICAgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDIxNCwgMTMsIAotICAgIDI2LCA0LCAxLCAyMzUsIDE5MywgMiwgMjI2LCAxMTQsIDI2LCA0LCAxLCAyMjYsIDIwNCwgMiwgMjE0LCAxMywgMjYsIDQsIAotICAgIDEsIDIyNiwgMjA0LCAyLCAyMjYsIDExNCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjE0LCAKLSAgICAxNTgsIDIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwNiwgMiwgCi0gICAgMjI2LCAxMTQsIDI2LCA0LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNTgsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgCi0gICAgMTUyLCAyLCAyNDgsIDE2MiwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAKLSAgICAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgCi0gICAgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIDIyNCwgMTU4LCAyMiwgMjI2LCAxMTUsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIAotICAgIDEsIDI1NCwgMTUyLCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE1LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE1MiwgCi0gICAgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAKLSAgICAyMiwgMjI1LCAxNzksIDIyLCAyMTAsIDIxOSwgMjYsIDYsIDEsIDI1NCwgMTUyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNCwgCi0gICAgMTcwLCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyNTQsIDE1MiwgCi0gICAgMiwgMjI0LCAxNTgsIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAxNjIsIAotICAgIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNSwgCi0gICAgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjI2LCAxMTUsIDIyLCAyMjQsIAotICAgIDE3MCwgMjYsIDYsIDEsIDI1NCwgMTUyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNSwgMTc5LCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAKLSAgICAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OSwgMjIsIDIyNCwgMTcwLCAyNiwgNCwgMSwgMjQ1LCA3MiwgCi0gICAgMiwgMjI0LCAxNTgsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDI0OCwgMTYyLCAyMiwgMjEwLCAyMTksIAotICAgIDI2LCA0LCAxLCAyNDUsIDcyLCAyLCAyMjQsIDE1OCwgMjIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgCi0gICAgNzIsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAKLSAgICAxNTgsIDIyLCAyMjYsIDExNSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjYsIAotICAgIDExNSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OSwgMjIsIDIxMCwgCi0gICAgMjE5LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OSwgMjIsIDIxMCwgMjE5LCAyNiwgNiwgCi0gICAgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjQsIDE3MCwgMjYsIDYsIDEsIDI0NSwgNzIsIDIsIDI0OCwgMTYyLCAKLSAgICAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyNDUsIDcyLCAyLCAyMjQsIDE1OCwgMjIsIDIxNCwgMTQsIDIyLCAyMjQsIDE3MCwgCi0gICAgMjYsIDYsIDEsIDI0NSwgNzIsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjQ1LCAKLSAgICA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNSwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAKLSAgICAxNjIsIDIyLCAyMjYsIDExNSwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIAotICAgIDE3OSwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OSwgMjIsIDIyNCwgCi0gICAgMTcwLCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU4LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwNiwgCi0gICAgMiwgMjQ4LCAxNjIsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyMjQsIDE1OCwgMjIsIDIxNCwgMTQsIAotICAgIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgCi0gICAgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyMjQsIDE1OCwgMjIsIDIyNiwgMTE1LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAKLSAgICAyMjYsIDIwNiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjYsIDExNSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIAotICAgIDIyNCwgMTU4LCAyMiwgMjI1LCAxNzksIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgCi0gICAgMjIsIDIyNSwgMTc5LCAyMiwgMjEwLCAyMTksIDI2LCA2LCAxLCAyMjYsIDIwNiwgMiwgMjI0LCAxNTgsIDIyLCAyMjQsIAotICAgIDE3MCwgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjI2LCAyMDYsIAotICAgIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDI0OCwgMTYyLCAKLSAgICAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU4LCAyMiwgMjI2LCAxMTUsIAotICAgIDIyLCAyMjQsIDE3MCwgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE1LCAyMiwgMjI0LCAKLSAgICAxNzAsIDI2LCA2LCAxLCAyMjYsIDIwNiwgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OSwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgCi0gICAgMSwgMjI2LCAyMDYsIDIsIDI0OCwgMTYyLCAyMiwgMjI1LCAxNzksIDIyLCAyMjQsIDE3MCwgMjYsIDQsIDEsIDI1NCwgMTUyLCAKLSAgICAyLCAyMTMsIDEyMCwgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMzEsIDIzNywgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMTQsIAotICAgIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE1MiwgMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE1MiwgMiwgCi0gICAgMjI2LCAxMTUsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMjUsIDE3OCwgMjYsIDQsIDEsIDI1NCwgCi0gICAgMTUyLCAyLCAyMjUsIDE3OSwgMjIsIDIxMCwgMjE5LCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDIxMywgMTIwLCAyNiwgNiwgCi0gICAgMSwgMjU0LCAxNTIsIDIsIDIzMSwgMjM3LCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNTQsIAotICAgIDE1MiwgMiwgMjI2LCAxMTQsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNzAsIDI2LCAyMzQsIDgsIDI2LCAyMjQsIAotICAgIDE3MCwgMjYsIDIyNCwgMTU3LCAyNiwgMjI1LCAxNzgsIDI2LCAyNDgsIDQsIDIyLCAyMjUsIDE3OCwgMjYsIDQsIDEsIDI0NSwgCi0gICAgNzIsIDIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgCi0gICAgMjQ1LCA3MiwgMiwgMjI2LCAxMTUsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDIyNSwgMTc4LCAyNiwgCi0gICAgNCwgMSwgMjQ1LCA3MiwgMiwgMjI1LCAxNzksIDIyLCAyMTAsIDIxOSwgMjYsIDYsIDEsIDI0NSwgMTA5LCAyLCAyMTQsIDEzLCAKLSAgICAyNiwgNiwgMSwgMjQ1LCAxMDksIDIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIAotICAgIDI0NSwgNzIsIDIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNzAsIDI2LCAyMjQsIDE1OCwgMjIsIAotICAgIDIxNCwgMTMsIDI2LCAyMjQsIDE1OCwgMjIsIDIyNiwgMTE0LCAyNiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OCwgMjYsIDQsIAotICAgIDEsIDIzNSwgMTkzLCAyLCAyMTMsIDEyMCwgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAyMzEsIDIzNywgMjYsIDQsIDEsIDIzNSwgCi0gICAgMTkzLCAyLCAyNDgsIDQsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDI0OCwgNCwgMjIsIDIyNiwgMTE0LCAKLSAgICAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDI0OCwgNCwgMjIsIDIyNSwgCi0gICAgMTc4LCAyNiwgNiwgMSwgMjM1LCAxOTMsIDIsIDIxMywgMTIwLCAyNiwgNiwgMSwgMjM1LCAxOTMsIDIsIDIzMSwgMjM3LCAKLSAgICAyNiwgNiwgMSwgMjM1LCAxOTMsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMzUsIDE5MywgMiwgMjI2LCAxMTQsIDI2LCAyNDgsIAotICAgIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OCwgCi0gICAgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMTMsIDEyMCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMzEsIDIzNywgMjYsIDQsIAotICAgIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDQsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgNCwgMjIsIAotICAgIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjIzLCA0MSwgMiwgMjI0LCAxNTcsIDI2LCA0LCAxLCAyMjMsIDQxLCAyLCAyNDgsIDE2MSwgCi0gICAgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMjUsIDE3OCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDQsIDIyLCAyMjUsIAotICAgIDE3OCwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMTMsIDEyMCwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMzEsIDIzNywgCi0gICAgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDIyNiwgMTE0LCAyNiwgNiwgCi0gICAgMSwgMjIzLCA0MSwgMiwgMjQ4LCAxNjEsIDI2LCAyNDgsIDQsIDIyLCAyMTQsIDEzLCAyNiwgMjQ4LCA0LCAyMiwgMjI2LCAKLSAgICAxMTQsIDI2LCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIAotICAgIDIyNiwgMjA2LCAyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyMjYsIDExNSwgMjIsIDIxMCwgMjE5LCAyNiwgCi0gICAgNCwgMSwgMjI2LCAyMDYsIDIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIyNSwgMTc5LCAyMiwgMjEwLCAKLSAgICAyMTksIDI2LCA2LCAxLCAyMjYsIDIwNCwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgMjA0LCAyLCAyMjYsIDExNCwgMjYsIAotICAgIDYsIDEsIDIyNiwgMjA2LCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgCi0gICAgMjI2LCAyMDYsIDIsIDIyNCwgMTcwLCAyNiwgMjI2LCAxMTQsIDI2LCAyNDgsIDE2MSwgMjQ1LCAxNTksIDIyNCwgMzAsIAotICAgIDI0NSwgMTY4LCAyMjQsIDMwLCAyNDUsIDE1OSwgMjE5LCAyMCwgMjQ1LCAxNjgsIDIxOSwgMjAsIDIxNiwgMTQyLCAyMTksIAotICAgIDIwLCAyNDQsIDE3LCAyMTksIDIwLCAyMTksIDEyNSwgMjE5LCAyMCwgMjQ0LCAxMjAsIDIxOSwgMjAsIDIyNCwgMTQ0LCAKLSAgICAyMTksIDIwLCAyMTYsIDE3MSwgMjE5LCAyMCwgMjQyLCA0MiwgMjE5LCAyMCwgMjEwLCA4NywgMjExLCAyNDUsIDIxOSwgMjAsIAotICAgIDIxMCwgODcsIDIxMSwgMjQ1LCAyMjgsIDcyLCAyMTAsIDg3LCAyMTEsIDI0NSwgMjM1LCA2OSwgMjMzLCA0NCwgNzksIDIyMiwgCi0gICAgMjQ2LCA3OSwgMjQwLCAxNzUsIDIyOCwgNzMsIDI0MCwgMTc1LCAyNDQsIDEyMCwgMjQ4LCAxNjQsIDI0NSwgMTU5LCAyNDgsIAotICAgIDE2NCwgMjQ1LCAxNjgsIDI0OCwgMTY0LCAyMDMsIDEzMCwgNTIsIDY3LCAyMzIsIDIxOSwgNTIsIDEyMSwgMjMyLCAyMTksIAotICAgIDQzLCAyMTksIDE1NywgMjI0LCAxLCA3OSwgNDQsIDIxOSwgMTU3LCAyMjQsIDEsIDc5LCAyMTksIDE1NywgMjMyLCAxMTUsIAotICAgIDIyNCwgMSwgNzksIDIxOSwgMTU3LCAyNDEsIDE3MCwgMjI0LCAxLCA3OSwgNDMsIDUyLCAyMjQsIDEsIDc5LCA0NCwgNTIsIAotICAgIDIyNCwgMSwgNzksIDUyLCAyMzIsIDExNSwgMjI0LCAxLCA3OSwgNTIsIDI0MSwgMTcwLCAyMjQsIDEsIDc5LCAyNDgsIDIxMywgCi0gICAgNTIsIDI0OCwgMjEzLCAyNTEsIDEyMSwgMjE1LCAyMjMsIDI1MSwgMTIxLCAxMjMsIDU5LCAyMzMsIDYyLCAxMTMsIDU5LCAKLSAgICAyMzMsIDYyLCAyMDMsIDI0NSwgMTcxLCAyNDAsIDE3MywgMjI1LCAxMywgMjMyLCAyMjAsIDIyMCwgMTM5LCAyMjYsIDE5LCAKLSAgICAyMjAsIDEzOSwgMjMzLCA0NCwgMjQ1LCAxNjYsIDIyMiwgMjQ2LCAyNDUsIDE2NiwgMjI0LCAyNDksIDI0NywgMjA0LCAyNDQsIAotICAgIDI3LCAyMzMsIDQ0LCAyMjYsIDEyMSwgMjIyLCAyNDYsIDIyNiwgMTIxLCAyMjksIDE5OSwgMjI4LCA3OCwgMjE5LCAyMCwgCi0gICAgMjI1LCAxODYsIDIzMCwgMTk4LCA1MCwgMjI1LCAxODYsIDIxNiwgMjQ5LCAyMTYsIDE0OSwgNTAsIDIyNCwgMTkzLCA1MiwgCi0gICAgMjI0LCAxOTMsIDIxNSwgMjEyLCAyMjQsIDE5MywgMjIzLCA1MiwgMjI0LCAxOTMsIDIyMywgNTIsIDUyLCAyMjQsIDE5MywgCi0gICAgMjIzLCA1MiwgMjE1LCAyMTIsIDIyNCwgMTkzLCAyNTAsIDI0NiwgMjE5LCAxNTcsIDIzMywgNDgsIDI1NCwgMTE4LCAyMjQsIAotICAgIDEsIDc5LCAyMTksIDE1NywgMjIyLCAyNTAsIDI1NCwgMTE4LCAyMjQsIDEsIDc5LCAyMjMsIDExMCwgNzksIDUyLCAyNDUsIAotICAgIDM5LCA3OSwgMjM1LCAyMDgsIDIyNiwgMTIzLCAyMTQsIDE4MCwgMTM1LCAyMTYsIDExMiwgMjUwLCAyNDcsIDIzNSwgMjIzLCAKLSAgICAyMjUsIDEzLCAyNTMsIDIyMiwgMjQwLCAxNzYsIDI1MSwgMTIxLCAyNDQsIDEwLCAyMTksIDk3LCA0MywgNDIsIDI1MSwgCi0gICAgMTY2LCAyLCAyMjQsIDEwLCA0NCwgNDIsIDI1MSwgMTY2LCAyLCAyMjQsIDEwLCA1MiwgMjI0LCAxNiwgNzksIDIyNCwgMTYsIAotICAgIDI0NSwgMzksIDc5LCAyNDUsIDM5LCAyMjQsIDE2LCA3OSwgMjE2LCA3MSwgNSwgMjQ1LCA3MywgMjIzLCA1MiwgMjI1LCA3MSwgCi0gICAgNTAsIDg1LCAxNDAsIDI1MSwgMTIxLCA4NSwgOTcsIDI1MSwgMTIxLCAxMjEsIDI1MywgMjI0LCAyMjMsIDUyLCAyMjAsIAotICAgIDE1MiwgMjUwLCA5LCAyMTQsIDE2MywgMTEzLCAyNTMsIDIyMywgMjU0LCAxNjcsIDIxMywgMTg4LCAyNDksIDIyNSwgMjMwLCAKLSAgICAxODcsIDUwLCAyMTcsIDIzNSwgMjQ4LCAxNjQsIDIzNSwgMjAwLCAyMTQsIDE4MCwgMjQ0LCA2MCwgMjI0LCAxNDQsIDc5LCAKLSAgICAxMzQsIDU5LCAyMjQsIDE0MywgMjI0LCAyNywgMjI0LCAxOTMsIDI0NCwgMTksIDU5LCAyMjQsIDE0MywgMjQ0LCA4OSwgNTksIAotICAgIDIyNCwgMTQzLCAxMTMsIDU5LCAyMjQsIDE0MywgMjQ0LCAxOSwgNTksIDc5LCAyNDYsIDEyNiwgMjQ5LCAxMzgsIDIxNSwgCi0gICAgMjIyLCA2NywgMjQ0LCAxOSwgMjQ3LCAxMjYsIDIzMSwgODcsIDExLCAyMTksIDIwLCAyMTEsIDIwOSwgMjM1LCA2OSwgMjQzLCAKLSAgICAyMzQsIDI1NCwgNjAsIDIzNSwgMTk4LCAyMTYsIDg2LCAyMzUsIDE5OCwgMjIwLCAxMzksIDIzNSwgMTk4LCAyMjUsIDI1LCAKLSAgICAyMzMsIDQ0LCAyMzUsIDE3MSwgMjIyLCAyNDYsIDIzNSwgMTcxLCAyNDQsIDEwMCwgMjE4LCA5MSwgMjM1LCAxNzEsIDIyNCwgCi0gICAgMjQ5LCAyNDcsIDIwNCwgMjM1LCAxNzEsIDIzNSwgMjM1LCAyMTcsIDE4MywgMjE3LCAyNTIsIDI1NSwgMTQsIDIxNywgMTgzLCAKLSAgICAyMTcsIDI1MiwgMjM1LCAyMzUsIDksIDI0NCwgMjgsIDIyMCwgODIsIDI1NSwgMTQsIDksIDI0NCwgMjgsIDIyMCwgODIsIAotICAgIDIyOSwgMTk0LCAyMSwgMjIwLCA4MywgMjI4LCA3NCwgMjEsIDIyMCwgODMsIDIxOCwgMjQsIDIxMCwgODYsIDIxOCwgMjQsIAotICAgIDcsIDQsIDEsIDc0LCAyMTgsIDI0LCAxNjEsIDIxOCwgMjQsIDE5MCwgMjE4LCAyNCwgMTk1LCAyMTgsIDI0LCAxOTksIDIxOCwgCi0gICAgMjQsIDE5NiwgMjE4LCAyNCwgMjAxLCAyMTgsIDI0LCA5NiwgNTAsIDIxOCwgMjQsIDIzMCwgMTg2LCAyMTgsIDI0LCAyNDUsIAotICAgIDEwNiwgNTAsIDIxOCwgMjQsIDQzLCAyMjYsIDcsIDIxOCwgMjQsIDQ0LCAyMjYsIDcsIDIxOCwgMjQsIDcsIDQsIDEsIDIzMCwgCi0gICAgMzAsIDIxOCwgNjYsIDIxMCwgODYsIDIxOCwgNjYsIDExMSwgMjE4LCA2NiwgMTA1LCAyMTgsIDY2LCAxNTgsIDIxOCwgNjYsIAotICAgIDE2MSwgMjE4LCA2NiwgMTkwLCAyMTgsIDY2LCAxOTUsIDIxOCwgNjYsIDE5OSwgMjE4LCA2NiwgMTk2LCAyMTgsIDY2LCAKLSAgICAyMDEsIDIxOCwgNjYsIDk2LCA1MCwgMjE4LCA2NiwgMjMwLCAxODYsIDIxOCwgNjYsIDI0NSwgMTA2LCA1MCwgMjE4LCA2NiwgCi0gICAgNDMsIDIyNiwgNywgMjE4LCA2NiwgNDQsIDIyNiwgNywgNywgMjE4LCA2NiwgNCwgMSwgNjEsIDcsIDIxOCwgNjYsIDQsIDEsIAotICAgIDc2LCA3LCAyMTgsIDY2LCA0LCAxLCA3OCwgNywgMjE4LCA2NiwgNCwgMSwgMjExLCAxNzgsIDcsIDIxOCwgNjYsIDQsIDEsIAotICAgIDIyMSwgMTk3LCA3LCAyMTgsIDY2LCA0LCAxLCAyNDIsIDY3LCA3LCAyMTgsIDY2LCA0LCAxLCAyMzUsIDI5LCA3LCAyMTgsIAotICAgIDY2LCA0LCAxLCAxNTYsIDcsIDIxOCwgNjYsIDQsIDEsIDE5NCwgNywgMjE4LCA2NiwgNCwgMSwgMjMwLCAzMCwgNywgMjE4LCAKLSAgICA2NiwgNCwgMSwgMjI2LCAxMDksIDcsIDIxOCwgNjYsIDQsIDEsIDIyMiwgOTMsIDcsIDIxOCwgNjYsIDQsIDEsIDIxNywgCi0gICAgMTUzLCAyNDUsIDU0LCA1MCwgMjQ5LCAyMzUsIDUwLCAyNDksIDEyNSwgNTAsIDI0NCwgMywgMjQ0LCA2LCA1MCwgMjMyLCAKLSAgICAyMDQsIDUwLCAyMzAsIDE5OSwgNTAsIDIyOSwgMjE1LCA1MCwgMjI1LCAxNjUsIDUwLCAyMjIsIDEyMCwgNTAsIDIxMSwgCi0gICAgMjE3LCA1MCwgMTY2LCAyMjAsIDUxLCA1MCwgMjQ3LCAxMzUsIDUwLCAyNDUsIDU1LCA1MCwgMjM0LCA4MiwgNTAsIDIxNSwgCi0gICAgMTEzLCA1MCwgMjQ2LCAxMDksIDUwLCAyNDMsIDQ3LCAyMjUsIDE5NiwgNTAsIDIyNSwgMTYzLCA1MCwgMjQyLCAxMTYsIDUwLCAKLSAgICAyNTMsIDE5MCwgNTAsIDI0MCwgMjM1LCA1MCwgMjUwLCAxOTMsIDUwLCAyMzIsIDE5NywgMjE2LCA0LCA1MCwgMjE5LCAyLCAKLSAgICA1MCwgMjE2LCAyNDYsIDUwLCAyMzUsIDI0OCwgMjIyLCAxMjAsIDUwLCAyMTUsIDk3LCAyMzIsIDIwNCwgNTAsIDM4LCA0MywgCi0gICAgMjQyLCA2LCA0OCwgMzgsIDQ0LCAyNDIsIDYsIDQ4LCAzOCwgMjAwLCA2NywgMjMyLCAyMjAsIDIyNiwgMTI0LCAzOCwgMjE5LCAKLSAgICAyNTMsIDY3LCAyMzIsIDIyMCwgMjI2LCAxMjQsIDM4LCAyNTQsIDk2LCA4MCwgNDgsIDM4LCAyNTAsIDEwLCA4MCwgNDgsIAotICAgIDM4LCA0MywgODAsIDQ4LCAzOCwgNDQsIDgwLCA0OCwgMzgsIDIyMiwgMjM3LCAyMjYsIDEyNCwgMzgsIDI1MCwgMTAsIDIyMiwgCi0gICAgMjM3LCAyMjYsIDEyNCwgMzgsIDI1NCwgOTYsIDIyMiwgMjM3LCAyMjYsIDEyNCwgMzgsIDEzNCwgMTcwLCA0OCwgMzgsIAotICAgIDI0NCwgMTksIDE3MCwgNDgsIDM4LCAyNDUsIDE1NCwgMjUwLCA0MywgMzgsIDI0NSwgMTU0LCAyMTgsIDIzNiwgMzgsIDI0NSwgCi0gICAgMTU0LCAyNDgsIDAsIDM4LCAyNDUsIDE1NCwgMjUwLCA0NCwgMjUyLCAxODgsIDM4LCA0MywgNDQsIDgwLCA0OCwgMzgsIAotICAgIDI0NSwgMTU0LCAyMjEsIDE5MCwgMzgsIDI0NSwgMTU0LCAyMzQsIDE0MSwgMzgsIDI0NSwgMTU0LCAyMTQsIDE1NSwgMjI1LCAKLSAgICAxMCwgMjE1LCAyMjYsIDM4LCAyMjMsIDUzLCAyMTksIDQ5LCAyMjYsIDEyNCwgMzgsIDUyLCA2NywgMjE4LCAxMDUsIDIyNiwgCi0gICAgMTI0LCAzOCwgMjU0LCAxMDYsIDg3LCAzOCwgMjE1LCAyMTIsIDIxNCwgMTgyLCAzOCwgMjExLCAyNDcsIDI1MSwgMTQ4LCAKLSAgICA0OCwgMzgsIDE0MCwgODAsIDIyNiwgMTI0LCAzOCwgMjAwLCA1MiwgMjE5LCA0OSwgMjI2LCAxMjQsIDM4LCA5NywgMjQyLCAKLSAgICA2LCAyLCAyNTIsIDE0NywgMjQ2LCAxMTEsIDM4LCAxNDAsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDI0NiwgMTExLCAzOCwgNDMsIAotICAgIDgwLCA1MSwgMzgsIDQ0LCA4MCwgNTEsIDM4LCAyNTMsIDIyNSwgNDgsIDI1NSwgMjAsIDIyNiwgMjM1LCAyNTUsIDQsIDIxNiwgCi0gICAgNDMsIDIxNiwgMTk3LCAyMTgsIDc1LCAxMzksIDYsIDI1MSwgNzQsIDI0OCwgNzksIDI1MCwgMTg2LCAyNTAsIDE4MywgMjMyLCAKLSAgICAyMjAsIDg3LCAyNTAsIDI0OCwgMjI2LCAyMzUsIDI1MSwgMzQsIDIxNCwgMTg5LCAyNDUsIDU2LCAyNDksIDE5OSwgMjIxLCAKLSAgICAxODcsIDI0OCwgNzksIDI0NCwgMTg3LCAxMTksIDQsIDI0MywgMjA5LCAxMTksIDYsIDI0MiwgNjcsIDI1MSwgMjI3LCA2LCAKLSAgICAyNDIsIDY3LCAxMzksIDYsIDI0MiwgNjcsIDIyNSwgNDAsIDI0OSwgMTk5LCAyMjUsIDQwLCAyNDksIDIwMCwgMTE1LCAxMTMsIAotICAgIDIyNSwgMTExLCAxMTksIDYsIDc0LCAyNTEsIDIyNywgNiwgNzQsIDExOSwgNiwgMTU2LCAxMTksIDQsIDE1NiwgMjMzLCAKLSAgICAxNTUsIDU3LCAyNTIsIDE0OSwgODcsIDEzOSwgNiwgMjMwLCAzMCwgMjI3LCAyMDAsIDUwLCAyMTksIDMzLCAyMjMsIDEyMiwgCi0gICAgMjQ5LCAxNzAsIDExOSwgNiwgMjI2LCAxMDksIDEzOSwgNiwgMjI2LCAxMDksIDEzOSwgNiwgMjI0LCA5OSwgMTE5LCA2LCAKLSAgICAxNTMsIDI1MSwgMjI3LCA2LCAxNTMsIDEzOSwgNiwgMTUzLCAyMjQsIDE5OSwgMjE3LCA3MiwgMjIzLCA2NSwgMjIwLCAxMzQsIAotICAgIDc5LCAyMTcsIDIsIDUwLCAyMTUsIDI1NCwgMTY0LCA1MCwgMjEzLCAyNDAsIDEzOSwgNiwgMjEwLCAxNTksIDIyNiwgMTM3LCAKLSAgICA1MCwgMjI2LCAyMjUsIDUwLCAyMzUsIDIwMCwgMjI2LCAyMjUsIDUwLCAyNTEsIDIyNywgNiwgMjEwLCAxNTksIDIxNSwgOTQsIAotICAgIDI2LCA0LCAxLCAyMzUsIDE5MiwgMjM0LCAxNzksIDUwLCAyNTQsIDExNSwgNTAsIDExOSwgNiwgMjUzLCAxNjYsIDI1MSwgCi0gICAgMjI3LCA2LCAyNTEsIDc0LCAyNDUsIDc2LCA4NywgMTE5LCA0LCA3NiwgMTE5LCA2LCA3NiwgMTE5LCA2LCAyNDUsIDE0LCAKLSAgICAyMTUsIDk0LCA2LCAyNDUsIDE0LCAxMTksIDYsIDE5NCwgMTE5LCA0LCA3OCwgMTA5LCA4NywgMjUyLCAzNywgODcsIDI0MiwgCi0gICAgMjA5LCA4NywgMjQ4LCAxOTgsIDg3LCAyMzUsIDIzOSwgMjE5LCAzMSwgMjIyLCAxODksIDYsIDIyNCwgOTksIDI0NCwgMTkwLCAKLSAgICA1MCwgMTM5LCA0LCAyMjUsIDExMSwgMTM5LCA0LCAyNDMsIDExNCwgMTM5LCA2LCAyNDMsIDExNCwgMTM5LCA2LCAyMjUsIAotICAgIDExMSwgMTM5LCAyMzAsIDI5LCAyMTgsIDQxLCAyMTUsIDk0LCAzNSwgNiwgMjQzLCAyMDksIDIxNSwgOTQsIDM1LCA2LCAKLSAgICAxNTYsIDIyMywgNTIsIDM1LCA2LCAxNTYsIDIxNSwgOTQsIDM1LCA2LCAyMTEsIDExNywgMTM5LCAzMiwgNiwgMjQ5LCA2OCwgCi0gICAgMTM5LCAzMiwgNCwgMjQ5LCA2OCwgMTM5LCAzMiwgNCwgNzYsIDEzOSwgMzIsIDQsIDc0LCAxMzksIDMyLCA0LCAyMzUsIAotICAgIDE1MCwgMjI0LCAxNzMsIDIzMiwgMjE5LCAyMTUsIDk0LCAyNTQsIDEzNCwgMjI1LCAxODYsIDUwLCAyNTQsIDE4OSwgMjE1LCAKLSAgICA5NCwgNCwgMjQ1LCAxNCwgMTYsIDMxLCAyMjEsIDI1NCwgMjE5LCAzMSwgMjEyLCAxMTQsIDI0NCwgMTAsIDEyMywgMjIwLCAKLSAgICAxMjAsIDIxMiwgMTE0LCAyNDQsIDEwLCAxMjMsIDIyOCwgMTk5LCAyMTIsIDExNCwgMjQ0LCAxMCwgMTIzLCAyMTYsIDI0MiwgCi0gICAgMjEyLCAxMTQsIDI0NCwgMTAsIDEyMywgMjE2LCAxNjksIDIxMiwgMTE0LCAyNDQsIDEwLCAxMTMsIDIxNiwgMTY3LCAyMTIsIAotICAgIDExNCwgMjQ0LCAxMCwgMTIzLCAyNDQsIDEyNSwgMjEyLCAxMTQsIDI0NCwgMTAsIDExMywgMjQ0LCAxMjQsIDIxMiwgMTE0LCAKLSAgICAyNDQsIDEwLCAxMzQsIDI0NCwgMTI0LCAyMTIsIDExNCwgMjQ0LCAxMCwgMjQ0LCAxOSwgMjQ0LCAxMjQsIDIxMiwgMTE0LCAKLSAgICAyNDQsIDEwLCAxMjMsIDIxOSwgMTE3LCAyMTIsIDExNCwgMjQ0LCAxMCwgMjQ0LCA4OSwgMjE5LCAxMTUsIDIxMiwgMTE0LCAKLSAgICAyNDQsIDEwLCAxMjMsIDI0NSwgMTk2LCAyMTIsIDExNCwgMjQ0LCAxMCwgMTM0LCAyNDUsIDE5NCwgMjEyLCAxMTQsIDI0NCwgCi0gICAgMTAsIDI0NCwgODksIDI0NSwgMTk0LCAyMTIsIDExNCwgMjQ0LCAxMCwgMjIwLCAxMjQsIDI0NSwgMTk0LCAyNDQsIDEwLCAKLSAgICAyMjcsIDIwMSwgMTExLCAyMjIsIDIwMCwgMjI3LCAyMDIsIDExMSwgMjIyLCAyMDAsIDIyNywgMjAyLCAxMDUsIDIyMiwgCi0gICAgMjAwLCAyMjcsIDIwMiwgMTU4LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDE2MSwgMjIyLCAyMDAsIDIyNywgMjAyLCAxOTAsIAotICAgIDIyMiwgMjAwLCAyMjcsIDIwMiwgMTk1LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDE5OSwgMjIyLCAyMDAsIDIyNywgMjAyLCAKLSAgICAxOTYsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjAxLCAyMjIsIDIwMCwgMjI3LCAyMDIsIDIxNiwgMjQ4LCAyMjIsIDIwMCwgCi0gICAgMjI3LCAyMDIsIDI0NSwgMTc1LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDIxNSwgNzYsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjQ0LCAKLSAgICAxMjIsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMTIzLCAyNDAsIDIxNywgMjIyLCAyMDAsIDIyNywgMjAyLCAyNDQsIDg5LCAyNDAsIAotICAgIDIxNywgMjIyLCAyMDAsIDIyNywgMjAyLCAxMjMsIDIxNiwgMTQ4LCA0LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDExMSwgNCwgCi0gICAgMjIyLCAyMDAsIDIyNywgMjAyLCAxMDUsIDQsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMTU4LCA0LCAyMjIsIDIwMCwgMjI3LCAKLSAgICAyMDIsIDE2MSwgNCwgMjIyLCAyMDAsIDIyNywgMjAyLCAxOTAsIDQsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMTk1LCA0LCAyMjIsIAotICAgIDIwMCwgMjI3LCAyMDIsIDE5OSwgNCwgMjIyLCAyMDAsIDIyNywgMjAyLCAxOTYsIDQsIDIyMiwgMjAwLCAyMjcsIDIwMiwgCi0gICAgMjAxLCA0LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDIxNiwgMjQ4LCA0LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDI0NSwgMTc1LCA0LCAKLSAgICAyMjIsIDIwMCwgMjI3LCAyMDIsIDIxNSwgNzYsIDQsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjQ0LCAxMjIsIDQsIDIyMiwgCi0gICAgMjAwLCAyMjcsIDIwMiwgMTIzLCAyNDAsIDIxNywgNCwgMjIyLCAyMDAsIDIyNywgMjAyLCAyNDQsIDg5LCAyNDAsIDIxNywgCi0gICAgNCwgMjIyLCAyMDAsIDIyNywgMjAyLCAxMjMsIDIxNiwgMTQ4LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDEyMywgMjE2LCAxNDksIAotICAgIDI1MSwgNzUsIDI0OSwgNjgsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjQ0LCA4OSwgMjE2LCAxNDgsIDIyMiwgMjAwLCAyMjcsIAotICAgIDIwMiwgMjE2LCAyNDksIDIxNiwgMTQ4LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDIyMywgNTIsIDEyMywgMjQwLCAyMTcsIDcsIAotICAgIDQsIDEsIDIyMywgNTIsIDI1MSwgNzQsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjE5LCAxMjcsIDIzMywgODQsIDE3LCAyMjIsIAotICAgIDIwMCwgMjI3LCAyMDIsIDI0NCwgMTIzLCAyNDUsIDIzNCwgMTcsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjQ0LCAxMjMsIDIxNiwgCi0gICAgMTQ4LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDEyMywgMjQwLCAyMTgsIDIxNiwgMTQ4LCAyMTIsIDExNCwgMjQ0LCAxMCwgMjEwLCAKLSAgICA4NywgMjE2LCAxNjcsIDE0MCwgNzUsIDIxNCwgMTUzLCA3NSwgOTcsIDc1LCAyNDYsIDExMiwgNzUsIDQzLCA0NCwgNzUsIAotICAgIDEyMCwgMTI0LCA3NSwgMjI4LCA2MSwgMjEyLCA5LCA3NSwgMjI4LCA2MSwgMjQ1LCAyMjgsIDc1LCAyMTksIDMwLCAyNDUsIAotICAgIDIyOCwgNzUsIDIxOSwgMzAsIDIxMiwgOSwgNzUsIDE0MCwgODAsIDIsIDkxLCA5NywgODAsIDIsIDkxLCAxNDAsIDIxMiwgCi0gICAgMzYsIDc1LCA5NywgMjEyLCAzNiwgNzUsIDE0MCwgMTEzLCAyNDEsIDI0MSwgNzUsIDIxNCwgMTUzLCAxMTMsIDI0MSwgMjQxLCAKLSAgICA3NSwgOTcsIDExMywgMjQxLCAyNDEsIDc1LCAyNDYsIDExMiwgMTEzLCAyNDEsIDI0MSwgNzUsIDE0MCwgODAsIDIsIDIxNywgCi0gICAgNzgsIDk3LCA4MCwgMiwgMjE3LCA3OCwgMTQwLCA4MCwgMjQzLCAyNTEsIDEzMCwgMjE0LCAxNTMsIDgwLCAyNDMsIDI1MSwgCi0gICAgMTMwLCA5NywgODAsIDI0MywgMjUxLCAxMzAsIDI0NiwgMTEyLCA4MCwgMjQzLCAyNTEsIDEzMCwgMTIwLCAxMjQsIDgwLCAyLCAKLSAgICAyNTIsIDEzNSwgMTQwLCA4MCwgMiwgMTAzLCA5NywgODAsIDIsIDEwMywgMTQwLCA4MCwgMiwgMjMyLCAxMjksIDk3LCA4MCwgCi0gICAgMiwgMjMyLCAxMjksIDQzLCA0NCwgMjEyLCAzNiwgNzUsIDQzLCA0NCwgODAsIDIsIDkxLCAyNDYsIDExMiwgMjEwLCAzNSwgCi0gICAgNzUsIDIxNCwgMTUzLCA4MCwgMiwgMjE2LCA3OCwgMjMzLCA0MywgMjE0LCAxNTMsIDgwLCAyLCAyMTYsIDc4LCAyMjIsIAotICAgIDI0NCwgMjQ2LCAxMTIsIDgwLCAyLCAyMTYsIDc4LCAyMzMsIDQzLCAyNDYsIDExMiwgODAsIDIsIDIxNiwgNzgsIDIyMiwgCi0gICAgMjQ0LCA5NywgODAsIDIsIDI0OSwgMTY5LCAyNDYsIDExMSwgMjQ2LCAxMTIsIDgwLCAyLCAyNDksIDE2OSwgMjMzLCA0MywgCi0gICAgMjU0LCA5NiwgMjE2LCAxNSwgMjIwLCAxNTUsIDc1LCAyNTAsIDEwLCAyMTYsIDE1LCAyMjAsIDE1NSwgNzUsIDIyOCwgNjEsIAotICAgIDIxMiwgOSwgODAsIDIxNiwgNDMsIDIwMCwgMTMwLCAxNDAsIDgwLCAyMTYsIDQzLCAyNTIsIDE0OSwgMTE1LCA5NywgODAsIAotICAgIDIxNiwgNDMsIDEzMCwgMjU0LCA5NiwgMjA0LCAyNTAsIDQ0LCA3NSwgMjUwLCAxMCwgMjA0LCAyNTAsIDQ0LCA3NSwgMTQwLCAKLSAgICAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyMTQsIDE1MiwgMTQwLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyNDYsIDExMSwgMjE0LCAKLSAgICAxNTMsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDIyMiwgMjQ0LCAyMTQsIDE1MywgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjMzLCAKLSAgICA0MywgOTcsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDIxNCwgMTUyLCA5NywgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjQ2LCAxMTEsIAotICAgIDI0NiwgMTEyLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyMjIsIDI0NCwgMjQ2LCAxMTIsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIAotICAgIDIzMywgNDMsIDk3LCA4MCwgMTE1LCAxNDAsIDc1LCAyMTQsIDE1MywgODAsIDE0MCwgNjQsIDI0NiwgMTEyLCA3NSwgMTQwLCAKLSAgICA4MCwgMTE1LCA5NywgNzUsIDE0MCwgMjI2LCA3NCwgMjUzLCAyNTUsIDIxNCwgMTUzLCAyMjYsIDc0LCAyNTMsIDI1NSwgOTcsIAotICAgIDIyNiwgNzQsIDI1MywgMjU1LCAyNDYsIDExMiwgMjI2LCA3NCwgMjUzLCAyNTUsIDE0MCwgMjQyLCA2LCAxMTUsIDk3LCAKLSAgICAyNDIsIDUsIDk3LCAyNDIsIDYsIDExNSwgMTQwLCAyNDIsIDUsIDE0MCwgNTIsIDgwLCAyLCA5MSwgNDMsIDQ0LCA1MiwgODAsIAotICAgIDIsIDkxLCA5NywgNTIsIDgwLCAyLCA5MSwgMTQwLCA1MiwgNzUsIDIxNCwgMTUzLCA1MiwgNzUsIDk3LCA1MiwgNzUsIDI0NiwgCi0gICAgMTEyLCA1MiwgNzUsIDQzLCA0NCwgNTIsIDc1LCAxMjAsIDEyNCwgNTIsIDc1LCAyMjgsIDYxLCAyMTIsIDksIDUyLCA3NSwgCi0gICAgMjI4LCA2MSwgMjQ1LCAyMjgsIDUyLCA3NSwgMjE5LCAzMCwgMjQ1LCAyMjgsIDUyLCA3NSwgMjE5LCAzMCwgMjEyLCA5LCAKLSAgICA1MiwgNzUsIDE0MCwgMjE1LCAyMTIsIDc1LCA5NywgMjE1LCAyMTIsIDc1LCAxNDAsIDIxOCwgMjMyLCA3NSwgOTcsIDIxOCwgCi0gICAgMjMyLCA3NSwgMjE0LCAxNTMsIDgwLCAyLCA1MiwgOTEsIDI0NiwgMTEyLCA4MCwgMiwgNTIsIDkxLCAxNDAsIDI0OCwgMTYzLCAKLSAgICA3NSwgMjE0LCAxNTMsIDI0OCwgMTYzLCA3NSwgOTcsIDI0OCwgMTYzLCA3NSwgMjQ2LCAxMTIsIDI0OCwgMTYzLCA3NSwgCi0gICAgMTQwLCA4MCwgMjE2LCA0MywgMTMwLCA5NywgODAsIDIxNiwgNDMsIDEzMCwgMTQwLCA3MSwgNzUsIDIxNCwgMTUzLCA3MSwgCi0gICAgNzUsIDk3LCA3MSwgNzUsIDI0NiwgMTEyLCA3MSwgNzUsIDIxNCwgMTUzLCA3MSwgODAsIDI0MywgMjUxLCAxMzAsIDIxNCwgCi0gICAgMTUzLCA3MSwgODAsIDIyNiwgMjAxLCAyMjUsIDIxNywgMjE0LCAxNTMsIDcxLCA4MCwgMjI2LCAyMDEsIDIyNSwgMjE4LCAyLCAKLSAgICAyMDMsIDEzMCwgMjE0LCAxNTMsIDcxLCA4MCwgMjI2LCAyMDEsIDIyNSwgMjE4LCAyLCA2NywgMTMwLCAyMTQsIDE1MywgNzEsIAotICAgIDUyLCA3NSwgMjE0LCAxNTMsIDcxLCA1MiwgODAsIDIyNiwgMjAxLCAyMjUsIDIxNywgOTcsIDcxLCA4MCwgMjQzLCAyNTEsIAotICAgIDIxMiwgNTYsIDIyOCwgNjEsIDIxMiwgOSwgODAsIDIxNiwgNDMsIDI0OSwgMTY4LCAyMTksIDMwLCAyNDUsIDIyOCwgODAsIAotICAgIDIxNiwgNDMsIDI0OSwgMTY4LCAxMjAsIDEyNCwgNzEsIDc1LCA0NCwgODAsIDIsIDQsIDI1MCwgNDMsIDI0NiwgMTEyLCA4MCwgCi0gICAgMTQwLCA2NCwgMjE0LCAxNTMsIDc1LCAxMzQsIDk3LCAyNTMsIDI1NSwgMTQwLCA4MCwgMiwgNjcsIDkxLCA5NywgODAsIDIsIAotICAgIDY3LCA5MSwgNDMsIDQ0LCA4MCwgMiwgNjcsIDkxLCAxNDAsIDgwLCAyLCA1MiwgNjcsIDkxLCA5NywgODAsIDIsIDUyLCA2NywgCi0gICAgOTEsIDQzLCA0NCwgODAsIDIsIDUyLCA2NywgOTEsIDE0MCwgMjI2LCAxNzcsIDc1LCA5NywgMjI2LCAxNzcsIDc1LCA0MywgCi0gICAgNDQsIDIyNiwgMTc3LCA3NSwgMzEsIDI1NCwgMTYzLCAyNDksIDIyMiwgMjI2LCAxLCAyNDcsIDI0MSwgMjE2LCAxODgsIAotICAgIDI0NSwgMzUsIDIxNiwgMTg4LCAyNDcsIDE0NiwgMjI4LCA1NywgMjQ1LCAzNiwgMjQ1LCAxNjAsIDIyMCwgMTI5LCAyMzUsIAotICAgIDI1MiwgMjI5LCAyMjYsIDI0NSwgMTc4LCAyMjYsIDIzNSwgMjI4LCA1NywgMjU0LCAxMzIsIDI0NSwgMTc4LCAyMjYsIDIzNSwgCi0gICAgNCwgMjQ1LCAxNzgsIDIyNiwgMjM1LCAyNDksIDE5NCwgMjUzLCAyNDYsIDIzMSwgNjcsIDI0NywgMTQ2LCAyMjgsIDU3LCAKLSAgICAyNDksIDE5NiwgMjUzLCAyNDYsIDIzMSwgNjcsIDQsIDI0OSwgMTk0LCAyNTMsIDI0NiwgMjMxLCA2NywgMjQ1LCAxNTEsIAotICAgIDY0LCAyMjQsIDE3NSwgMjMwLCAyOSwgMjI0LCAxODMsIDIzMCwgMjksIDI0OSwgMTczLCAyMzAsIDI5LCAyMTgsIDQxLCAKLSAgICAyMzAsIDE4NywgNTAsIDIzMCwgMTg1LCA1MCwgNTksIDIyNSwgMjUsIDI0NywgMTc3LCAyMTksIDk3LCAyMjAsIDEzMCwgCi0gICAgMjMwLCAxODYsIDI1MywgMjI1LCAyMjYsIDE3MSwgMjIyLCAyMzcsIDIyNiwgMTcxLCAyNTEsIDEyMiwgMjI2LCAxNzEsIDQyLCAKLSAgICAyMjIsIDE5NSwgMjQ5LCAxMTcsIDIyMiwgMTk1LCAyNDQsIDEyLCAyMjIsIDE5NSwgMjI0LCAxNzEsIDExMiwgMjM1LCAyNDEsIAotICAgIDQ0LCAyNTQsIDExNywgMjU0LCAxMTcsIDIzMSwgOTMsIDI1NCwgMTE3LCAyMTksIDEsIDI1NCwgMTE3LCAyNDcsIDE3OSwgCi0gICAgMjQ3LCAxNDYsIDIyOCwgNTcsIDI0NywgMTgyLCAyMjYsIDEyLCAxMTIsIDIyOCwgNTcsIDIyNiwgMTIsIDExMiwgMjMyLCAKLSAgICAxNTIsIDI1NCwgMTI2LCAyMzIsIDE1MiwgMjI2LCAxNjIsIDIzNSwgMjA1LCAyMTQsIDE3NSwgMjM1LCAyMTgsIDUyLCAyMzUsIAotICAgIDIxOCwgMjE1LCAyMTIsIDIzNSwgMjE4LCAyNDksIDE5MCwgMjM1LCAyMTgsIDIxOCwgMTQsIDIzNSwgMjE4LCAyMTMsIDEyOSwgCi0gICAgMjM1LCAyMTgsIDI1MCwgMTAsIDIzNSwgMjE4LCAyNTAsIDEwLCAyNDksIDE5MCwgMjM1LCAyMTgsIDI1NCwgOTYsIDI0OSwgCi0gICAgMTkwLCAyMzUsIDIxOCwgMjE2LCAxODcsIDI1MiwgNzUsIDIyMywgMTQwLCAyMjQsIDE3MiwgNTksIDIzMCwgMTg2LCAyNDUsIAotICAgIDQxLCAyNDMsIDUzLCAyMjQsIDE3MiwgMjQxLCA2NCwgMjE2LCA5MCwgMjI2LCAxNzEsIDIyMywgNTIsIDE4NCwgMjM1LCAKLSAgICAyMDAsIDIzMywgNzEsIDIyMiwgOTMsIDIxOSwgMTU5LCAyMTIsIDM1LCAyMTEsIDIwMCwgMjI0LCAxODMsIDIyOCwgNTcsIAotICAgIDE4NCwgMjMwLCAxODcsIDE4NCwgMjUzLCAyMTgsIDEyOCwgMTEyLCAyMjgsIDU3LCAyNTMsIDIxOCwgMTI4LCAxMTIsIDI1NCwgCi0gICAgNTYsIDEyOCwgMTEyLCAyNTQsIDU2LCAyNTEsIDk2LCAyMjgsIDU3LCAyNTUsIDEzLCAxMjgsIDExMiwgMjI5LCAxMDUsIAotICAgIDI1NCwgNTYsIDIyOCwgNjQsIDI1NSwgMTMsIDEyOCwgMTEyLCAyNTQsIDE1NiwgMTI4LCAxMTIsIDIyOCwgNTcsIDI1NCwgCi0gICAgMTU2LCAxMjgsIDExMiwgMjU0LCAxNTYsIDEyOCwgMTc3LCAxMjgsIDExMiwgMjE1LCAyMTIsIDE4NCwgMjU0LCAxNjQsIAotICAgIDEyOCwgMTEyLCAyNDUsIDEwMiwgMTEyLCAyNDMsIDUyLCAyNDUsIDEwMiwgMTEyLCAyNDcsIDI0MiwgMjUyLCAzMSwgMjU0LCAKLSAgICA1OCwgMjE2LCAxOTcsIDIzMiwgMjI3LCAyNDMsIDUyLCAxMjgsIDExMiwgMjU0LCA1NiwgMTI4LCAyMTYsIDQzLCAxNzcsIAotICAgIDIxNiwgMTk3LCAyMzYsIDIyLCAyMjYsIDIzNSwgMjM2LCAyMiwgNjQsIDE3NywgMjU0LCA1NiwgMTI4LCAxMTIsIDI0OSwgCi0gICAgMjM1LCAyNDUsIDEwNSwgMjQ1LCAxMDYsIDI0OSwgMjM0LCAyMjIsIDIzNywgMjM2LCA3LCAxMjgsIDExMiwgMjIyLCAyMzcsIAotICAgIDEyOCwgMTEyLCAyNDksIDE2MiwgMTEyLCAyNDUsIDc1LCAyNDUsIDEwNCwgMTEyLCAyMTgsIDE1OSwgMjQ1LCAxMDUsIDI0OCwgCi0gICAgNjMsIDEyOCwgMTEyLCAxMjgsIDIxNiwgNDMsIDI1MSwgODYsIDI0OCwgODAsIDIzMSwgOTMsIDI1MSwgODUsIDIyNCwgMTQsIAotICAgIDEyOCwgMTEyLCAyMjgsIDU3LCAxMjgsIDExMiwgMjQwLCAxMTEsIDExMiwgMjI4LCA1NywgMjQwLCAxMTEsIDExMiwgMjE4LCAKLSAgICAxMTEsIDI0NSwgMTAyLCAxMTIsIDIzMywgMjEsIDE3NywgMTI4LCAxMTIsIDI0MiwgMTM3LCAxNzcsIDEyOCwgMTEyLCAyMzMsIAotICAgIDIxLCAxMTUsIDEyOCwgMTEyLCAyNDIsIDEzNywgMTE1LCAxMjgsIDExMiwgMjMzLCAyMSwgMjUxLCA5NiwgMjI4LCA1NywgCi0gICAgMTI4LCAxMTIsIDI0MiwgMTM3LCAyNTEsIDk2LCAyMjgsIDU3LCAxMjgsIDExMiwgMjMwLCAxMDIsIDIzMywgMjAsIDIzMCwgCi0gICAgMTAyLCAyNDIsIDEzNiwgMjUyLCAzMSwgMjI4LCA1NywgMjQ1LCAxMDIsIDExMiwgMjI4LCA1NywgMjMzLCAyMCwgMjI4LCAKLSAgICA1NywgMjQyLCAxMzYsIDIyOSwgMTA1LCAyMzMsIDIxLCAyMjgsIDY0LCAxMjgsIDExMiwgMjI5LCAxMDUsIDI0MiwgMTM3LCAKLSAgICAyMjgsIDY0LCAxMjgsIDExMiwgMjMzLCAyMSwgMTc3LCAyNDUsIDEwMiwgMTEyLCAyNDIsIDEzNywgMTc3LCAyNDUsIDEwMiwgCi0gICAgMTEyLCAyMjksIDEwNSwgMjMzLCAyMSwgMjI4LCA2NCwgMjQ1LCAxMDIsIDExMiwgMjI5LCAxMDUsIDI0MiwgMTM3LCAyMjgsIAotICAgIDY0LCAyNDUsIDEwMiwgMTEyLCAyMzMsIDIxLCAxNzcsIDI0MiwgMTM2LCAyNDIsIDEzNywgMTc3LCAyMzMsIDIwLCAyMjksIAotICAgIDEwNSwgMjMzLCAyMSwgMjI4LCA2NCwgMjQyLCAxMzYsIDIyOSwgMTA1LCAyNDIsIDEzNywgMjI4LCA2NCwgMjMzLCAyMCwgCi0gICAgMjI0LCAyMDUsIDIxOCwgNTYsIDIyNCwgMjA2LCAxNzcsIDEyOCwgMTEyLCAyMTgsIDU3LCAxNzcsIDEyOCwgMTEyLCAyMjQsIAotICAgIDIwNiwgMTc3LCAyNDUsIDEwMiwgMTEyLCAyMTgsIDU3LCAxNzcsIDI0NSwgMTAyLCAxMTIsIDI0NywgMTQ2LCAyMjgsIDU3LCAKLSAgICAyMjQsIDIwOCwgMjQ3LCAxNDYsIDIyOCwgNTcsIDIxOCwgNTgsIDIxOCwgNjUsIDIyNiwgMjM1LCAyMTgsIDIzLCAyMjYsIAotICAgIDIzNSwgMjI4LCA1NywgMTE2LCAyMTgsIDY1LCAyMjYsIDIzNSwgMjI4LCA1NywgMTE2LCAyMTgsIDIzLCAyMjYsIDIzNSwgCi0gICAgMjE4LCA2NSwgNjQsIDE3NywgMTI4LCAxMTIsIDIxOCwgMjMsIDY0LCAxNzcsIDEyOCwgMTEyLCAyMjksIDEwNSwgMTE2LCAKLSAgICAyMTgsIDY1LCA2NCwgMjI4LCA2NCwgMTI4LCAxMTIsIDIyOSwgMTA1LCAxMTYsIDIxOCwgMjMsIDY0LCAyMjgsIDY0LCAxMjgsIAotICAgIDExMiwgMjE4LCA2NSwgNjQsIDIsIDIyOCwgNTcsIDEyOCwgMTEyLCAyMTgsIDIzLCA2NCwgMiwgMjI4LCA1NywgMTI4LCAKLSAgICAxMTIsIDIzMCwgODYsIDIzMCwgODcsIDIzMCwgODgsIDIzMCwgODcsIDIxNCwgMTc1LCA0MiwgMjM2LCAyMiwgMjI2LCAyMzUsIAotICAgIDQyLCAyMjYsIDE1NCwgMjI2LCAyMzUsIDQyLCAyMzYsIDIyLCA2NCwgMTc3LCAxMjgsIDExMiwgNDIsIDIyNiwgMTU0LCA2NCwgCi0gICAgMTc3LCAxMjgsIDExMiwgNDIsIDI1MSwgMywgNDIsIDI0OSwgMTEwLCAzNywgMjI1LCAyNSwgMzcsIDIzMCwgMTg2LCAzNywgCi0gICAgMjE2LCA4NiwgMzcsIDI0NywgMTc3LCAyMTksIDk3LCAzNywgNTksIDIyNiwgMTcxLCAzNywgMjIyLCAyMzcsIDIyNiwgMTcxLCAKLSAgICAzNywgMjUzLCAyMjUsIDIyNiwgMTcxLCAzNywgMjQ1LCAxMDUsIDM3LCAyNDgsIDE2NCwgOTIsIDIyNSwgMjUsIDkyLCAyMzAsIAotICAgIDE4NiwgOTIsIDIxNiwgODYsIDkyLCA1OSwgMjI2LCAxNzEsIDQ0LCAyMTcsIDg4LCA0MywgMjE3LCA4OCwgMTI0LCAyMTcsIAotICAgIDg4LCAxMjAsIDIxNywgODgsIDI1MywgMjI4LCAyMzAsIDE2MSwgMjE1LCAxOTIsIDI0NCwgMzMsIDIxNSwgMjEyLCA2NywgCi0gICAgMjUyLCAxNDksIDQ0LCAyMTUsIDkzLCA1MiwgNjcsIDI1MiwgMTQ5LCA1MiwgNDQsIDIxNSwgOTMsIDI0NywgMTQ2LCAyMjgsIAotICAgIDU3LCAyMjQsIDE2NiwgMjI4LCA1NywgMjE1LCAxOTIsIDI0NywgMTQ2LCAyMjgsIDU3LCAyNDQsIDM0LCAyMjksIDEwNywgCi0gICAgNTIsIDY3LCAyNTIsIDE0OSwgNTIsIDQ0LCAyMTUsIDkzLCAyMjQsIDIwNiwgMjE0LCAxODQsIDIyMywgOTQsIDIxOCwgNTcsIAotICAgIDIxNCwgMTg0LCAyMjMsIDk0LCAyMjgsIDYyLCAyMTgsIDc4LCAyMjYsIDIzNSwgMjQ5LCAxOTQsIDI1MywgMjQ2LCAyMjgsIAotICAgIDYyLCAyMTgsIDc3LCAyMjgsIDYyLCAyMTgsIDc4LCA2NCwgMTc3LCAxMjgsIDExMiwgMjQ5LCAxOTQsIDI1MywgMjQ2LCAKLSAgICAyMjgsIDYyLCAyMTgsIDc4LCAxNzcsIDEyOCwgMTEyLCAyMjYsIDE1NCwgMjI2LCAyMzUsIDIzNiwgMjIsIDIyNiwgMjM1LCAKLSAgICAyMzAsIDkyLCAyNDEsIDIwNywgMjQ5LCAyMDQsIDIzMSwgMTQyLCAyMzUsIDIxNSwgMjExLCAxNDUsIDIyOSwgMjA3LCAyMjgsIAotICAgIDYzLCA0NCwgMjU0LCAxMTgsIDIsIDI1NCwgMzMsIDQ0LCAyMTUsIDIyNiwgMjMwLCAyOSwgMjMyLCAxNTIsIDI1NCwgMTI2LCAKLSAgICAyMzAsIDI5LCAyMzIsIDE1MiwgMjI2LCAxNjIsIDIzMCwgMjksIDIzNSwgMjA1LCAyMzAsIDI5LCAyMTQsIDE3NSwgMjQ4LCAKLSAgICAxLCAyMjYsIDE3MSwgNTksIDIyNiwgMTcxLCAyMTgsIDE1OSwgMjI2LCAxNzEsIDI0NywgMTc3LCAyMTYsIDg2LCAyNTEsIAotICAgIDE3MiwgNDMsIDIyOCwgNjIsIDI0NCwgMTg5LCAyMjAsIDE1MSwgMjI0LCAxODMsIDQ0LCAyMjgsIDYyLCAyNDQsIDE4OSwgCi0gICAgMjIwLCAxNTEsIDIyNCwgMTgzLCA0MywgMjIwLCAxNTEsIDIyNCwgMTgzLCA0NCwgMjIwLCAxNTEsIDIyNCwgMTgzLCAyMjMsIAotICAgIDUyLCAyMTYsIDkwLCAyNDUsIDEwNSwgMjQ5LCAxMDcsIDIzMiwgMTUyLCAyMjYsIDE2MiwgMjQ5LCAxMDcsIDIzMiwgMTUyLCAKLSAgICAyNTQsIDEyNiwgNTIsIDIxOCwgNjQsIDUyLCAyMTgsIDIyLCA1MiwgMjM1LCAyMDUsIDUyLCAyMTQsIDE3NSwgMjI1LCA1MCwgCi0gICAgMTI4LCAyMiwgMjI2LCAxMiwgMTEyLCAyMzMsIDIxLCAyLCAyNDcsIDEyOCwgMjQyLCAxMzcsIDIsIDI0NywgMTI4LCAyMTMsIAotICAgIDE4NywgMjMwLCAxMDIsIDIzMywgMjAsIDIxMywgMTg3LCAyMzAsIDEwMiwgMjQyLCAxMzYsIDIzMywgMjEsIDEyOCwgMjE2LCAKLSAgICA0MywgMTc3LCAyNDIsIDEzNiwgMjQyLCAxMzcsIDEyOCwgMjE2LCA0MywgMTc3LCAyMzMsIDIwLCAxMjgsIDIxNiwgNDMsIAotICAgIDE3NywgMjMzLCAyMCwgMTI4LCAyMTYsIDQzLCAxNzcsIDI0MiwgMTM2LCAxMjgsIDIxNiwgNDMsIDE3NywgMjI0LCAyMDUsIAotICAgIDEyOCwgMjE2LCA0MywgMTc3LCAyMTgsIDU2LCAyNDcsIDE0NiwgMjI4LCA1NywgMjI0LCAyMDksIDE3NywgMjQ1LCAxMDcsIAotICAgIDI0NywgMTQ2LCAyMjgsIDU3LCAyMTgsIDU5LCAxNzcsIDI0NSwgMTA3LCAyMjgsIDU3LCA0MiwgMjM2LCAyMiwgNjQsIDE3NywgCi0gICAgMTI4LCAxMTIsIDIyOCwgNTcsIDQyLCAyMjYsIDE1NCwgNjQsIDE3NywgMTI4LCAxMTIsIDQyLCAyMzYsIDIyLCA2NCwgMTc3LCAKLSAgICAyMjgsIDU3LCAxMjgsIDExMiwgNDIsIDIyNiwgMTU0LCA2NCwgMTc3LCAyMjgsIDU3LCAxMjgsIDExMiwgMjMzLCAyMSwgCi0gICAgMjUxLCA5NiwgMjI4LCA1NywgMjQ1LCAxMDIsIDExMiwgMjQyLCAxMzcsIDI1MSwgOTYsIDIyOCwgNTcsIDI0NSwgMTAyLCAKLSAgICAxMTIsIDIyNCwgMjA2LCAyNTEsIDk2LCAyMjgsIDU3LCAyNDUsIDEwMiwgMTEyLCAyMTgsIDU3LCAyNTEsIDk2LCAyMjgsIAotICAgIDU3LCAyNDUsIDEwMiwgMTEyLCAyMjgsIDU3LCAyMjgsIDYyLCAyMTgsIDc4LCAyMjYsIDIzNSwgMjQ3LCAxNDYsIDIyOCwgCi0gICAgNTcsIDI0OSwgMTk2LCAyNTMsIDI0NiwgMjI4LCA2MiwgMjE4LCA3NywgMjI4LCA1NywgMjI4LCA2MiwgMjE4LCA3OCwgNjQsIAotICAgIDE3NywgMTI4LCAxMTIsIDI0NywgMTQ2LCAyMjgsIDU3LCAyNDksIDE5NiwgMjUzLCAyNDYsIDIyOCwgNjIsIDIxOCwgNzgsIAotICAgIDE3NywgMjQ1LCAxMDcsIDY3LCAyNDUsIDE3MSwgMjMwLCAyMjcsIDIwMywgMjQ1LCAxNzEsIDEyMCwgNDQsIDI0OCwgNywgCi0gICAgMjQ1LCAxNzEsIDEyNCwgNDQsIDI0OCwgNywgMjQ1LCAxNzEsIDI0NSwgMTc4LCA2NCwgMiwgMjAwLCAyMDMsIDkxLCAyNDUsIAotICAgIDE3OCwgNjQsIDIsIDY3LCAyNTIsIDE0OSwgMjUzLCAyMTUsIDI0NSwgMTUxLCA2NCwgMjAzLCA5MSwgNCwgMjQ1LCAxNzgsIAotICAgIDY0LCAyLCA2NywgMjUyLCAxNDksIDI1MywgMjE1LCAyNDUsIDE1MSwgNjQsIDIwMywgOTEsIDI0NSwgMTc4LCA2NCwgMiwgCi0gICAgNTksIDQ4LCAyNDUsIDE3OCwgNjQsIDIsIDIyNiwgMTI3LCA0LCAyNDUsIDE3OCwgNjQsIDIsIDIyNiwgMTI3LCAyNDUsIAotICAgIDE3OCwgNjQsIDIsIDIxNCwgMTgzLCAyNDUsIDE3OCwgNjQsIDIsIDExMywgMjAzLCAyMTgsIDkyLCAyNDksIDE5NCwgMiwgCi0gICAgMjAwLCAyMDMsIDkxLCAyNDksIDE5NCwgMiwgNjcsIDI1MiwgMTQ5LCAyNTMsIDIxNSwgMjQ1LCAxNTEsIDY0LCAyMDMsIDkxLCAKLSAgICA0LCAyNDksIDE5NCwgMiwgNjcsIDI1MiwgMTQ5LCAyNTMsIDIxNSwgMjQ1LCAxNTEsIDY0LCAyMDMsIDkxLCAyNDksIDE5NCwgCi0gICAgMiwgMjI2LCAxMjcsIDQsIDI0OSwgMTk0LCAyLCAyMjYsIDEyNywgMjEwLCAxNjAsIDE4OSwgMjUyLCAxODEsIDIzMSwgNjYsIAotICAgIDI0OCwgMiwgNTAsIDI0NSwgMTgwLCA3NSwgMjQwLCAyNDEsIDEyMCwgMjU0LCAxLCAxMjQsIDI1NCwgMSwgMjI0LCAxNzgsIAotICAgIDIyNSwgMTY4LCAyMTIsIDMyLCAyMzIsIDIxOSwgNDMsIDI1MCwgMTg5LCA0NCwgMjUwLCAxODksIDQzLCAyNDQsIDY1LCA0NCwgCi0gICAgMjQ0LCA2NSwgMjUxLCAxODMsIDQ0LCAyNDksIDE0MCwgMjUxLCAxODMsIDQzLCAyNDksIDE0MCwgMjE2LCAxNSwgNDQsIAotICAgIDI0OSwgMTQwLCAyMTYsIDE1LCA0MywgMjQ5LCAxNDAsIDIyMywgNTIsIDIyOCwgNTcsIDUwLCA0MiwgMjMyLCAxMTAsIDI1NCwgCi0gICAgMzMsIDIyMSwgMTY2LCAyMjEsIDE3MywgMjE3LCAyLCAyMjMsIDEyMywgMjI0LCAyNDQsIDIzNSwgMjQ1LCAyMTMsIDE2NSwgCi0gICAgMjE4LCAyMzYsIDIyNSwgNDQsIDY0LCAyMzUsIDIxNCwgNTAsIDIxNSwgOTQsIDIyOCwgNTcsIDUwLCAyMTIsIDQyLCAyNDAsIAotICAgIDI0MywgMjE2LCAxNSwgNDMsIDI0OSwgMTY4LCAyMTYsIDE1LCA0NCwgMjQ5LCAxNjgsIDI1MSwgMTgzLCA0MywgMjQ5LCAKLSAgICAxNjgsIDI1MSwgMTgzLCA0NCwgMjQ5LCAxNjgsIDIxNiwgMTUsIDE2MywgMjM1LCAyMTgsIDI1MSwgMTgzLCAxNjMsIDIzNSwgCi0gICAgMjE4LCAyNDMsIDI0OCwgMjE5LCA3NywgMTIwLCAyNTQsIDIsIDI1MiwgMzIsIDExMywgMjAzLCAyNTIsIDEzNywgMjI2LCAKLSAgICAxNjQsIDIzNCwgMTQ0LCAyNDUsIDk4LCAyMTYsIDQzLCAyMTYsIDE5NywgMjIyLCAyNTQsIDIxMSwgMTc5LCAyMzYsIDcsIAotICAgIDExNiwgMjIzLCAxMjAsIDI1MSwgMTcxLCAyMzQsIDE0MywgMjMzLCA0OCwgMjU0LCAxMTgsIDEyNywgMjIyLCAyNTAsIDI1NCwgCi0gICAgMTE4LCAxMjcsIDI0NSwgOTgsIDIxNiwgNDMsIDIxNiwgMTk3LCAyMzMsIDUyLCAyNTIsIDQzLCAyMjIsIDIzNiwgMjQ5LCAKLSAgICA3OCwgMjU0LCAxNjQsIDI1NCwgOSwgMjE3LCAxODIsIDIxNiwgNSwgMjIyLCAxMjUsIDI0NywgMjIzLCAyMjYsIDE1NSwgCi0gICAgMjQ5LCAyMDYsIDIxNywgNTMsIDIxOSwgODgsIDI0OSwgMTU5LCAyNDksIDE1OCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAKLSAgICAyNDAsIDE1OCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMTgsIDIzMCwgMjI0LCAzMCwgMjU0LCA3NCwgMjQzLCAyMzIsIAotICAgIDE2LCAyMjQsIDMxLCAyNDUsIDEwNywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAyNDcsIDE4MiwgMjU0LCA3NCwgCi0gICAgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAyNDgsIDAsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAzMSwgMjM1LCA2MiwgCi0gICAgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAyNTAsIDQzLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI1MCwgNDQsIAotICAgIDIxOCwgMTM3LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI1MCwgNDQsIDIzNSwgNjIsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgCi0gICAgMjE5LCA5OCwgMTMwLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI1MiwgMTg5LCAxMzAsIDI1NCwgNzQsIDI0MywgMjMyLCAKLSAgICAxNiwgMjI0LCAzMSwgMjE5LCA5NywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAyNTIsIDE4OCwgMjU0LCA3NCwgCi0gICAgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAyMzMsIDIwLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIDI0MiwgMTM2LCAKLSAgICAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDE0MCwgMjE0LCAxOSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCA5NywgMjE0LCAxOSwgCi0gICAgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAxNDAsIDc1LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIAotICAgIDk3LCA3NSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNTAsIDQ0LCAyNTIsIDE4OCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAKLSAgICAxMjQsIDIxNywgODksIDIxNCwgMTgzLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI0OCwgNjMsIDIxOCwgMTM3LCAyNTQsIAotICAgIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIDEyNCwgMjUwLCAyNDYsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAzMSwgCi0gICAgMjQ4LCA2MiwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAxMjQsIDIxNywgODksIDIzNSwgNjIsIDI1NCwgNzQsIDI0MywgMjMyLCAKLSAgICAxNiwgMjE0LCAxNTMsIDIxNCwgMTksIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAzMSwgMjE0LCAxNTMsIDc1LCAyNTQsIAotICAgIDc0LCAyNDMsIDIzMiwgMTYsIDEyMCwgMjE3LCA4OSwgMjI2LCAxMjcsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjQ4LCA3NCwgCi0gICAgMjE4LCAxMzcsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAzMSwgMTIwLCAyNTAsIDI0NiwgMjU0LCA3NCwgMjQzLCAKLSAgICAyMzIsIDE2LCAyMjQsIDMxLCAyNDgsIDczLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDEyMCwgMjE3LCA4OSwgMjM1LCA2MiwgCi0gICAgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNDYsIDExMiwgMjE0LCAxOSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAKLSAgICAyNDYsIDExMiwgNzUsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAwLCAyMTQsIDE4MywgMjU0LCA3NCwgMjQzLCAyMzIsIAotICAgIDE2LCAyNDgsIDYzLCAyMTQsIDE4MywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNDgsIDEsIDIxNCwgMTgzLCAyNTQsIDc0LCAKLSAgICAyNDMsIDIzMiwgMTYsIDIzNSwgNjMsIDIxNCwgMTgzLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI1MCwgNDQsIDIxNCwgCi0gICAgMTgzLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDEyMCwgMjIwLCA3LCAyMzUsIDYyLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIAotICAgIDIyNCwgMCwgMjI0LCAzMCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNTAsIDQ0LCAyMTgsIDE1OCwgMjU0LCA3NCwgMjQzLCAKLSAgICAyMzIsIDE2LCAyMjQsIDMxLCAyNDksIDIzNCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAxMjAsIDIxNywgODksIDI0OCwgOSwgCi0gICAgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNDgsIDc0LCAyNDgsIDksIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjE4LCAxNTksIAotICAgIDI0OCwgOSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMzUsIDYzLCAyNDgsIDksIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgCi0gICAgMjUwLCA0NCwgMjQ4LCA5LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDEyNCwgMjIwLCA3LCAyMTgsIDEzNywgMjU0LCA3NCwgCi0gICAgMjQzLCAyMzIsIDE2LCA0MywgMjIwLCA3LCAyMTgsIDEzNywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMTYsIDkwLCAyNDgsIAotICAgIDksIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjQyLCAxMzcsIDI0OCwgOSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNDksIAotICAgIDIyOCwgMTMwLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI0OCwgNzQsIDE4NCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAKLSAgICAyMTAsIDM0LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIxOCwgMTM4LCAxODQsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgCi0gICAgMjIwLCAxNTMsIDIxNCwgMTgzLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIDIyOCwgNTcsIDI0NSwgMTA3LCAKLSAgICAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIDIyNCwgMTUsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMTI0LCAyNTAsIAotICAgIDI0NywgMTg0LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDEyMCwgMjUwLCAyNDcsIDE4NCwgMjU0LCA3NCwgMjQzLCAyMzIsIAotICAgIDE2LCAyMzUsIDE5MiwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjMsIDQwLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNiwgCi0gICAgMjA1LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI1NCwgMTUyLCAyMTQsIDE4MywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAKLSAgICAyNDUsIDEwOSwgMjE0LCAxODMsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjM1LCAxOTMsIDIxNCwgMTgzLCAyNTQsIDc0LCAKLSAgICAyNDMsIDIzMiwgMTYsIDIyNiwgMjA2LCAyMTQsIDE4MywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNTQsIDE1MSwgMjI4LCAKLSAgICA1NywgMjUwLCAxMzgsIDc5LCA0NCwgMjU0LCAxMTgsIDIsIDI0NiwgMTEyLCAyMTAsIDM1LCA3NSwgMjE5LCAyMzcsIDIwNCwgCi0gICAgMjUxLCAxNzEsIDI1MiwgNTMsIDg3LCA2NywgMjMyLCAyMjAsIDIsIDIzMCwgMjI5LCAyNDcsIDEyOCwgMjM1LCAyMjMsIDg3LCAKLSAgICAyNDksIDE5MSwgMjE0LCAxODEsIDg3LCAyNDcsIDE5NywgMjE0LCAxODEsIDg3LCAyNDUsIDE2MiwgODcsIDI0OSwgMjE4LCAKLSAgICA4NywgNzEsIDQyLCAyLCAyNTAsIDE4MywgNjcsIDIzMiwgMjE5LCAyNDUsIDEzOCwgODcsIDI1NCwgMTQ3LCAyMzQsIDE0NSwgCi0gICAgODcsIDI0MSwgMjIwLCA4NywgMzcsIDIwMywgMjUyLCAxNDksIDIsIDIyOCwgNTUsIDM3LCAyMTUsIDIyNywgMjQ2LCAxMTQsIAotICAgIDI1MSwgMTQzLCAyNTAsIDQ0LCAyLCAyMjgsIDU5LCA3NSwgMjE0LCAxNzksIDg3LCAyMzAsIDE0MiwgODcsIDI0MCwgMTcxLCAKLSAgICA4NywgMjI2LCAxNzgsIDI0MiwgNjYsIDg3LCAyMjYsIDE3OCwgMjMzLCAxNTMsIDg3LCAyMjUsIDI0OCwgODcsIDIyNSwgCi0gICAgMjQ3LCA4NywgMjQ3LCAyMDUsIDI0OSwgMTA1LCAxNiwgMjQ0LCAyOCwgMTA1LCAyMTksIDUyLCA4NywgMjU0LCA3NCwgMjQzLCAKLSAgICAyMzIsIDE2LCAyMjQsIDMwLCAyNDgsIDkxLCAyMjAsIDE0MCwgMjM0LCAxNDUsIDg3LCAyMjQsIDE5NSwgMjI2LCA3OSwgCi0gICAgMjI5LCA4NywgMjI2LCA3OSwgMjI0LCAxOTEsIDIyMSwgMTkxLCA4NywgMjUwLCAyNSwgMjIxLCAxOTEsIDg3LCA0MywgMjI2LCAKLSAgICA4LCAyMTQsIDE2MCwgMTAzLCA0MywgMjI2LCA4LCAyNDUsIDI5LCA0MywgMjI2LCA4LCAyMzIsIDExNCwgMTAzLCA0NCwgCi0gICAgMjI2LCA4LCAyMTQsIDE2MCwgMTAzLCA0NCwgMjI2LCA4LCAyNDUsIDI5LCA0NCwgMjI2LCA4LCAyMzIsIDExNCwgMTAzLCAKLSAgICA0MywgNDIsIDI1MSwgMTY2LCAyMTQsIDE2MCwgMjQ5LCAxNjgsIDQzLCA0MiwgMjUxLCAxNjYsIDI0NSwgMjksIDQzLCA0MiwgCi0gICAgMjUxLCAxNjYsIDIzMiwgMTE0LCAyNDksIDE2OCwgNDQsIDQyLCAyNTEsIDE2NiwgMjE0LCAxNjAsIDI0OSwgMTY4LCA0NCwgCi0gICAgNDIsIDI1MSwgMTY2LCAyNDUsIDI5LCA0NCwgNDIsIDI1MSwgMTY2LCAyMzIsIDExNCwgMjQ5LCAxNjgsIDQzLCAyNDksIAotICAgIDEwNywgMjUxLCAxNjYsIDIxNCwgMTYwLCAxMDMsIDQzLCAyNDksIDEwNywgMjUxLCAxNjYsIDIzMCwgMjI5LCAyMjUsIDEwNCwgCi0gICAgNDMsIDI0OSwgMTA3LCAyNTEsIDE2NiwgMjMyLCAxMTQsIDEwMywgMjQ5LCAxMDcsIDI1MSwgMTY2LCAyNDUsIDI5LCA0NCwgCi0gICAgMjQ5LCAxMDcsIDI1MSwgMTY2LCAyMTQsIDE2MCwgMTAzLCA0NCwgMjQ5LCAxMDcsIDI1MSwgMTY2LCAyMzAsIDIyOSwgMjI1LCAKLSAgICAxMDQsIDQ0LCAyNDksIDEwNywgMjUxLCAxNjYsIDIzMiwgMTE0LCAxMDMsIDIzNSwgMjE5LCAyNDUsIDI5LCAyMDMsIDIzMiwgCi0gICAgMjIwLCAyNDUsIDI5LCAyMTQsIDE2MCwgNDMsIDE3NywgMjMyLCAxMTQsIDQ0LCAyNDksIDEwNywgMjUxLCAxNjYsIDIyMSwgCi0gICAgMTc0LCAyMTQsIDE2MCwgNDQsIDE3NywgMjMyLCAxMTQsIDQzLCAyNDksIDEwNywgMjUxLCAxNjYsIDIyMSwgMTc0LCAyMTgsIAotICAgIDQyLCAyMTYsIDE0LCAyMTgsIDQyLCAyNTEsIDE4MiwgMjE2LCAxNSwgNDIsIDEyNywgMjUxLCAxODMsIDQyLCAxMjcsIDI1MSwgCi0gICAgMTgzLCA0MiwgMjUxLCAxNjYsIDExNSwgMjE2LCAxNSwgNDIsIDEyNywgMzQsIDE2LCAyNTEsIDE4MiwgNDMsIDY3LCA5MywgCi0gICAgMjMyLCAyMTksIDQ0LCA2NywgOTMsIDIzMiwgMjE5LCAyMDMsIDIyMSwgMjA3LCAyMzIsIDIxOCwgMjAzLCAyMjEsIDIwNywgCi0gICAgMjMyLCAyMTcsIDIwMywgMjIxLCAyMDcsIDIzMiwgMjE2LCAyMDMsIDIyMSwgMjA3LCAyMzIsIDIxNSwgMjQ4LCA1NCwgMTYsIAotICAgIDE5MywgNjcsIDIyLCAyMTYsIDE1LCAyMjIsIDI1NCwgMjQ4LCA1NCwgMTYsIDE5MywgNjcsIDIyLCAyNTEsIDE4MywgMjIyLCAKLSAgICAyNTQsIDI0OCwgNTQsIDE2LCAxOTMsIDY3LCAyLCAyNTAsIDQzLCAyNDgsIDU0LCAxNiwgMTkzLCAxMjQsIDIyLCAyMDMsIDIsIAotICAgIDI1MCwgNDMsIDI0OCwgNTQsIDE2LCAxOTMsIDEyMCwgMjIsIDIwMywgMiwgMjUwLCA0MywgMjQ4LCA1NCwgMTYsIDE5MywgCi0gICAgNjcsIDIsIDIxNSwgMjI2LCAyNDgsIDU0LCAxNiwgMTkzLCAxMjQsIDIyLCAyMDMsIDIsIDIxNSwgMjI2LCAyNDgsIDU0LCAKLSAgICAxNiwgMTkzLCAxMjAsIDIyLCAyMDMsIDIsIDIxNSwgMjI2LCAyNDgsIDU0LCAxNiwgMTkzLCA2NywgMjIsIDIxMiwgMzUsIAotICAgIDI0OCwgNTQsIDE2LCAxOTMsIDEyNCwgMjIsIDIwMywgMiwgMjEyLCAzNSwgMjQ4LCA1NCwgMTYsIDE5MywgMTIwLCAyMiwgCi0gICAgMjAzLCAyLCAyMTIsIDM1LCAyNDgsIDU0LCAxNiwgMTkzLCAxMjQsIDIyLCAyNDEsIDUxLCAyNDgsIDU0LCAxNiwgMTkzLCAKLSAgICAxMjAsIDIyLCAyNDEsIDUxLCAyNDgsIDU0LCAxNiwgMTkzLCA2NywgMjIsIDIxNiwgMTUsIDIzMywgNTIsIDI0OCwgNTQsIAotICAgIDE2LCAxOTMsIDY3LCAyMiwgMjUxLCAxODMsIDIzMywgNTIsIDQyLCAyNDQsIDQwLCAyMjMsIDU3LCA4NywgMjQ1LCAxOTAsIAotICAgIDg3LCA2NywgMjMyLCAyMjAsIDI0NSwgMjksIDIzMSwgMzgsIDI1MSwgMTU0LCAyMzEsIDM4LCAyMDAsIDExNSwgMjE5LCAKLSAgICAyNTIsIDIzMSwgMzgsIDIxOSwgMjUzLCAxMTUsIDIzMiwgMTQzLCAyMzEsIDM4LCAyMDAsIDExNSwgMTEzLCAyMTksIDIzOSwgCi0gICAgMjMxLCAzOCwgMTEzLCAyMTksIDI0MCwgMTE1LCAyMzIsIDE0MywgMjMxLCAzOCwgMTEzLCAyMTksIDI0MCwgMjM1LCA3MCwgCi0gICAgMjMxLCAzOCwgMjE1LCAyMDksIDIzMSwgMzgsIDIxNiwgMjI0LCAyMzEsIDM4LCAyMjUsIDE5MSwgMjQ1LCAyMzIsIDI0MiwgCi0gICAgMTI5LCAyNDMsIDIyNiwgMjE2LCAxNSwgMjI2LCA3LCAyNTEsIDE4MywgMjI2LCA3LCAyMTYsIDE1LCAyNDksIDEwNywgMTI3LCAKLSAgICAyNTEsIDE4MywgMjQ5LCAxMDcsIDEyNywgMjE2LCAxNSwgMjE2LCA3LCAyMjAsIDU1LCAxMjcsIDI1MSwgMTgzLCAyMTYsIDcsIAotICAgIDIyMCwgNTUsIDEyNywgNzEsIDIxNSwgMjQwLCAyNTIsIDQzLCAyMjIsIDIzNywgMiwgMjUwLCA0MywgMjE4LCAxMjIsIDI0NCwgCi0gICAgNzIsIDI1NSwgMjYsIDI0OSwgMTA0LCAyNDUsIDE3OSwgMjM1LCAyMDUsIDI0OCwgOTEsIDI0NSwgMzIsIDg3LCA4NSwgMjIyLCAKLSAgICAyNTAsIDUyLCAyMTUsIDIyNiwgODUsIDIzMywgNDgsIDUyLCAyMTUsIDIyNiwgODUsIDIxNCwgMTYyLCA1MiwgMjE1LCAyMjYsIAotICAgIDg1LCAyNDYsIDExMywgNTIsIDIxNSwgMjI2LCA4NSwgMjIyLCAyNTAsIDUyLCAyMTUsIDIyNywgMiwgNjcsIDEzMCwgODUsIAotICAgIDIzMywgNDgsIDUyLCAyMTUsIDIyNywgMiwgNjcsIDEzMCwgODUsIDIyMiwgMjUwLCAyMTUsIDIyNywgMiwgNTIsIDY3LCAKLSAgICAxMzAsIDI1NCwgMTgyLCAyNTAsIDExLCAyMTgsIDEyOCwgMjE2LCA4NywgMjUwLCAxMSwgMjQwLCAyNDQsIDIsIDI0NCwgNTgsIAotICAgIDIyMSwgMjQzLCAxNiwgMzEsIDIyNywgMjA2LCAxNiwgMzEsIDIxOCwgMTU0LCA2NCwgMjQxLCAyNDAsIDE2LCAzMSwgMjE4LCAKLSAgICAxNTQsIDY0LCAyMTYsIDIxMywgMTYsIDMxLCAyNDUsIDE1MSwgNjQsIDIxNiwgMjEzLCAxNiwgMzEsIDI0NSwgMTUxLCA2NCwgCi0gICAgMjE1LCAyNDQsIDE2LCAzMSwgMjQ1LCAxNDAsIDE2LCAzMSwgMjU1LCAxNiwgMTYsIDMxLCAyNTIsIDUyLCAxNiwgMzEsIAotICAgIDI1MiwgMTg3LCAxNiwgMzEsIDIwMywgMjE3LCA5MCwgMTYsIDMxLCAyMzIsIDIyMCwgMjQ0LCAxNTMsIDE2LCAzMSwgNjcsIAotICAgIDIxNywgOTAsIDE2LCAzMSwgMjQ0LCAyOCwgMjQ0LCAxNTMsIDE2LCAzMSwgMjUwLCAyMzgsIDIyMywgNTYsIDE2LCAzMSwgCi0gICAgMjIwLCAzMCwgMjI2LCAxMzQsIDE2LCAzMSwgMjIwLCAzMCwgMjM2LCA2LCAxNiwgMzEsIDI0OCwgMTU5LCAyMzIsIDIxMCwgCi0gICAgMjQ1LCA4NSwgMTYsIDMxLCAyNDgsIDM5LCAyNDksIDE4NiwgMTExLCAxNiwgMzEsIDI0OCwgMzksIDI0OSwgMTg2LCAxMDUsIAotICAgIDE2LCAzMSwgMjQ4LCAzOSwgMjQ5LCAxODYsIDE1OCwgMTYsIDMxLCAyNDgsIDM5LCAyNDksIDE4NiwgMTYxLCAxNiwgMzEsIAotICAgIDE1MiwgMjU1LCAxNiwgMTYsIDMxLCAyMTcsIDE3OCwgMjM2LCA2OSwgMTYsIDMxLCAyNDUsIDE1MSwgNjQsIDIxNSwgMjQ1LCAKLSAgICAyNTEsIDIyMSwgMTYsIDMxLCAyNTEsIDEzLCAxNiwgMzEsIDI0NSwgMTUxLCA2NCwgMjMxLCA4NiwgMTYsIDMxLCAyMTgsIAotICAgIDYyLCAxNiwgMzEsIDI0NSwgODUsIDE2LCAzMSwgMjQ0LCAxMTUsIDIyMCwgMTM5LCAxNiwgMzEsIDI0MiwgMTI4LCAyMjAsIAotICAgIDEzOSwgMTYsIDMxLCAyMjMsIDEyNCwgMjIwLCAxMzksIDE2LCAzMSwgMjE0LCAxNzQsIDIyMCwgMTM5LCAxNiwgMzEsIDIxOSwgCi0gICAgMjAsIDE2LCAzMSwgMjQ4LCA3MSwgMjUxLCAyMjQsIDg3LCAyMDQsIDI1MSwgMTcxLCAxNiwgMzEsIDIyOSwgOTAsIDE2LCAKLSAgICAzMSwgMjQ4LCA3MiwgMjQ0LCAyOCwgMTA1LCAxNiwgMzEsIDIxOCwgNjMsIDI0NCwgMjgsIDEwNSwgMjI2LCAyNDUsIDEwMywgCi0gICAgMjI2LCAyNDUsIDI1MCwgMTYwLCAyMjYsIDI0NSwgMjQ0LCAzMSwgMjI2LCAyNDUsIDIzNSwgMjAwLCAyNDQsIDMxLCAyMjYsIAotICAgIDI0NSwgMjUyLCA1MCwgMjUxLCAxMzIsIDIyNiwgMjQ1LCAyNTEsIDE3OCwgMjE2LCAxMTIsIDIyNiwgMjQ1LCAyNTEsIDE2MywgCi0gICAgMjUyLCAxNTQsIDI0MCwgMTEwLCAyMjYsIDI0NSwgMjU0LCAxMzUsIDY0LCAyNTAsIDEzNywgMjI2LCAyNDUsIDI0OCwgMTY0LCAKLSAgICAyMjYsIDI0NSwgMjQ5LCA5NSwgMjU1LCAyMCwgMjI3LCAyMDQsIDIyNiwgMjQ1LCA1MiwgMjUyLCAxODgsIDM3LCAyMSwgCi0gICAgMTExLCAzNywgMjEsIDEwNSwgMzcsIDIxLCAxNTgsIDM3LCAyMSwgMTYxLCAzNywgMjEsIDE5MCwgMzcsIDIxLCAxOTUsIDM3LCAKLSAgICAyMSwgMTk5LCAzNywgMjEsIDE5NiwgMzcsIDIxLCAyMDEsIDM3LCA1NCwgMjE2LCAyNDgsIDM3LCA1NCwgMjQ1LCAxNzUsIAotICAgIDM3LCA1NCwgMjE1LCA3NiwgMzcsIDU0LCAyMTYsIDE2NSwgMzcsIDU0LCAyNDQsIDEzLCAzNywgNTQsIDI0NCwgMTI2LCAzNywgCi0gICAgNTQsIDIxOSwgMTIxLCAzNywgNTQsIDIyMCwgMTIxLCAzNywgNTQsIDI0NSwgMTk4LCAzNywgNTQsIDIyOCwgMjAyLCAzNywgCi0gICAgNTQsIDIxNSwgNzMsIDg4LCAyMSwgMTExLCA4OCwgMjEsIDEwNSwgODgsIDIxLCAxNTgsIDg4LCAyMSwgMTYxLCA4OCwgMjEsIAotICAgIDE5MCwgODgsIDIxLCAxOTUsIDg4LCAyMSwgMTk5LCA4OCwgMjEsIDE5NiwgODgsIDIxLCAyMDEsIDg4LCA1NCwgMjE2LCAKLSAgICAyNDgsIDg4LCA1NCwgMjQ1LCAxNzUsIDg4LCA1NCwgMjE1LCA3NiwgODgsIDU0LCAyMTYsIDE2NSwgODgsIDU0LCAyNDQsIAotICAgIDEzLCA4OCwgNTQsIDI0NCwgMTI2LCA4OCwgNTQsIDIxOSwgMTIxLCA4OCwgNTQsIDIyMCwgMTIxLCA4OCwgNTQsIDI0NSwgCi0gICAgMTk4LCA4OCwgNTQsIDIyOCwgMjAyLCA4OCwgNTQsIDIxNSwgNzMsIDIxLCAxMjMsIDI0MywgMjM2LCAyMTgsIDEzMSwgMjEsIAotICAgIDExMywgMjQzLCAyMzYsIDIxOCwgMTMxLCAyMSwgMTM0LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDIxLCAyNDQsIDE5LCAyNDMsIAotICAgIDIzNiwgMjE4LCAxMzEsIDIxLCAyNDQsIDg5LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDIxLCAyMTksIDEyNywgMjQzLCAyMzYsIAotICAgIDIxOCwgMTMxLCAyMSwgMjIwLCAxMjQsIDI0MywgMjM2LCAyMTgsIDEzMSwgMjEsIDI0NSwgMjAxLCAyNDMsIDIzNiwgMjE4LCAKLSAgICAxMzEsIDIxLCAyMjgsIDIwNSwgMjQzLCAyMzYsIDIxOCwgMTMxLCA1NCwgMjE2LCAyNDksIDI0MywgMjM2LCAyMTgsIDEzMSwgCi0gICAgNTQsIDI0NSwgMTc2LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDU0LCAyMTUsIDc3LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDU0LCAKLSAgICAyMTYsIDE2NiwgMjQzLCAyMzYsIDIxOCwgMTMxLCA1NCwgMjQ0LCAxNCwgMjQzLCAyMzYsIDIxOCwgMTMxLCA1NCwgMjQ0LCAKLSAgICAxMjcsIDI0MywgMjM2LCAyMTgsIDEzMSwgNTQsIDIxOSwgMTIyLCAyNDMsIDIzNiwgMjE4LCAxMzEsIDU0LCAyMjAsIDEyMiwgCi0gICAgMjQzLCAyMzYsIDIxOCwgMTMxLCA1NCwgMjQ1LCAxOTksIDI0MywgMjM2LCAyMTgsIDEzMSwgNTQsIDIyOCwgMjAzLCAyNDMsIAotICAgIDIzNiwgMjE4LCAxMzEsIDU0LCAyMTUsIDc0LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDg4LCA3LCA0LCAxLCA2MSwgODgsIDcsIAotICAgIDQsIDEsIDI1MywgMTY2LCA4OCwgNywgNCwgMSwgMjUxLCA3NCwgODgsIDcsIDQsIDEsIDI0OSwgNjgsIDg4LCA3LCA0LCAxLCAKLSAgICA3NiwgODgsIDcsIDQsIDEsIDI0NSwgMTQsIDg4LCA3LCA0LCAxLCAyNDMsIDIwOSwgODgsIDcsIDQsIDEsIDI0MiwgNjcsIAotICAgIDg4LCA3LCA0LCAxLCA3NCwgODgsIDcsIDQsIDEsIDIzNSwgMTUwLCA4OCwgNywgNCwgMSwgMjM1LCAyOSwgODgsIDcsIDQsIAotICAgIDEsIDE1NiwgODgsIDcsIDQsIDEsIDE5NCwgODgsIDcsIDQsIDEsIDIzMCwgMzAsIDg4LCA3LCA0LCAxLCA3OCwgODgsIDcsIAotICAgIDQsIDEsIDIyNiwgMTA5LCA4OCwgNywgNCwgMSwgMjI0LCA5OSwgODgsIDcsIDQsIDEsIDE1MywgODgsIDcsIDQsIDEsIDIyMiwgCi0gICAgOTMsIDg4LCA3LCA0LCAxLCAyMTcsIDE1MywgODgsIDcsIDQsIDEsIDY5LCA4OCwgNywgNCwgMSwgMjE0LCAxMDUsIDg4LCA3LCAKLSAgICA0LCAxLCAyMTIsIDk4LCA4OCwgNywgNCwgMSwgMjExLCAxNzgsIDg4LCA3LCA0LCAxLCAyMTEsIDExNywgODgsIDcsIDQsIDEsIAotICAgIDIxMCwgMTU5LCAzNywgNywgNiwgMSwgNjEsIDM3LCA3LCA2LCAxLCAyNTMsIDE2NiwgMzcsIDcsIDYsIDEsIDI1MSwgNzQsIAotICAgIDM3LCA3LCA2LCAxLCAyNDksIDY4LCAzNywgNywgNiwgMSwgNzYsIDM3LCA3LCA2LCAxLCAyNDUsIDE0LCAzNywgNywgNiwgMSwgCi0gICAgMjQzLCAyMDksIDM3LCA3LCA2LCAxLCAyNDIsIDY3LCAzNywgNywgNiwgMSwgNzQsIDM3LCA3LCA2LCAxLCAyMzUsIDE1MCwgCi0gICAgMzcsIDcsIDYsIDEsIDIzNSwgMjksIDM3LCA3LCA2LCAxLCAxNTYsIDM3LCA3LCA2LCAxLCAxOTQsIDM3LCA3LCA2LCAxLCAKLSAgICAyMzAsIDMwLCAzNywgNywgNiwgMSwgNzgsIDM3LCA3LCA2LCAxLCAyMjYsIDEwOSwgMzcsIDcsIDYsIDEsIDIyNCwgOTksIAotICAgIDM3LCA3LCA2LCAxLCAxNTMsIDM3LCA3LCA2LCAxLCAyMjIsIDkzLCAzNywgNywgNiwgMSwgMjE3LCAxNTMsIDM3LCA3LCA2LCAKLSAgICAxLCA2OSwgMzcsIDcsIDYsIDEsIDIxNCwgMTA1LCAzNywgNywgNiwgMSwgMjEyLCA5OCwgMzcsIDcsIDYsIDEsIDIxMSwgCi0gICAgMTc4LCAzNywgNywgNiwgMSwgMjExLCAxMTcsIDM3LCA3LCA2LCAxLCAyMTAsIDE1OSwgMzcsIDcsIDQsIDEsIDYxLCAzNywgCi0gICAgNywgNCwgMSwgMjUzLCAxNjYsIDM3LCA3LCA0LCAxLCAyNTEsIDc0LCAzNywgNywgNCwgMSwgMjQ5LCA2OCwgMzcsIDcsIDQsIAotICAgIDEsIDc2LCAzNywgNywgNCwgMSwgMjQ1LCAxNCwgMzcsIDcsIDQsIDEsIDI0MywgMjA5LCAzNywgNywgNCwgMSwgMjQyLCA2NywgCi0gICAgMzcsIDcsIDQsIDEsIDc0LCAzNywgNywgNCwgMSwgMjM1LCAxNTAsIDM3LCA3LCA0LCAxLCAyMzUsIDI5LCAzNywgNywgNCwgCi0gICAgMSwgMTU2LCAzNywgNywgNCwgMSwgMTk0LCAzNywgNywgNCwgMSwgMjMwLCAzMCwgMzcsIDcsIDQsIDEsIDc4LCAzNywgNywgCi0gICAgNCwgMSwgMjI2LCAxMDksIDM3LCA3LCA0LCAxLCAyMjQsIDk5LCAzNywgNywgNCwgMSwgMTUzLCAzNywgNywgNCwgMSwgMjIyLCAKLSAgICA5MywgMzcsIDcsIDQsIDEsIDIxNywgMTUzLCAzNywgNywgNCwgMSwgNjksIDM3LCA3LCA0LCAxLCAyMTQsIDEwNSwgMzcsIDcsIAotICAgIDQsIDEsIDIxMiwgOTgsIDM3LCA3LCA0LCAxLCAyMTEsIDE3OCwgMzcsIDcsIDQsIDEsIDIxMSwgMTE3LCAzNywgNywgNCwgMSwgCi0gICAgMjEwLCAxNTksIDM3LCAyMSwgMjEwLCA4NiwgMTUyLCAzNywgNTQsIDI0NSwgMTc1LCAxNTIsIDM3LCA1NCwgMjE1LCA3NiwgCi0gICAgMTUyLCAzNywgNTQsIDIxNiwgMTY1LCAxNTIsIDM3LCA1NCwgMjQ0LCAxMywgMTUyLCAzNywgNTQsIDI0NCwgMTI2LCAxNTIsIAotICAgIDM3LCA1NCwgMjE5LCAxMjEsIDE1MiwgMzcsIDU0LCAyMjAsIDEyMSwgMTUyLCAzNywgNTQsIDI0NSwgMTk4LCAxNTIsIDM3LCAKLSAgICA1NCwgMjI4LCAyMDIsIDE1MiwgMzcsIDU0LCAyMTUsIDczLCA1MiwgMzcsIDIxLCAxMTEsIDUyLCAzNywgMjEsIDEwNSwgNTIsIAotICAgIDM3LCAyMSwgMTU4LCA1MiwgMzcsIDIxLCAxNjEsIDUyLCAzNywgMjEsIDE5MCwgNTIsIDM3LCAyMSwgMTk1LCA1MiwgMzcsIAotICAgIDIxLCAxOTksIDUyLCAzNywgMjEsIDE5NiwgNTIsIDM3LCAyMSwgMjAxLCA1MiwgMzcsIDU0LCAyMTYsIDI0OCwgMTUyLCAzNywgCi0gICAgMjEsIDIxMCwgODYsIDkzLCA5OSwgMTkzLCAyNDEsIDUxLCA5MywgOTksIDExNCwgMjQxLCA1MSwgOTMsIDk5LCAxOTMsIAotICAgIDIxMywgMjM5LCA5MywgOTksIDExNCwgMjEzLCAyMzksIDkzLCA5OSwgMTkzLCAyMTUsIDIxMiwgMjQ4LCAxNjUsIDI0MSwgCi0gICAgNTEsIDkzLCA5OSwgMTE0LCAyMTUsIDIxMiwgMjQ4LCAxNjUsIDI0MSwgNTEsIDkzLCA5OSwgMTkzLCAyMTUsIDIxMiwgMjQ4LCAKLSAgICAxNjUsIDIxMywgMjM5LCA5MywgOTksIDExNCwgMjE1LCAyMTIsIDI0OCwgMTY1LCAyMTMsIDIzOSwgOTMsIDk5LCAxOTMsIAotICAgIDIyNCwgMjcsIDI0OCwgMTY1LCAyNDEsIDUxLCA5MywgOTksIDExNCwgMjI0LCAyNywgMjQ4LCAxNjUsIDI0MSwgNTEsIDkzLCAKLSAgICA5OSwgMTkzLCAyMjQsIDI3LCAyNDgsIDE2NSwgMjEzLCAyMzksIDkzLCA5OSwgMTE0LCAyMjQsIDI3LCAyNDgsIDE2NSwgCi0gICAgMjEzLCAyMzksIDkzLCA5OSwgMTkzLCAxMjQsIDIyLCAyMjIsIDI1NCwgOTMsIDk5LCAxMjQsIDE5MywgMjIsIDQ0LCAyNDEsIAotICAgIDIyOCwgOTMsIDk5LCAxMjQsIDExNCwgMjIsIDQ0LCAyMzIsIDIzNiwgOTMsIDk5LCAxMTQsIDEyNCwgMjIsIDIyMiwgMjU0LCAKLSAgICA5MywgOTksIDE5MywgMTI0LCAyMiwgMjMzLCA1MiwgOTMsIDk5LCAxMjQsIDE5MywgMjIsIDQzLCAyNDEsIDIyOCwgOTMsIAotICAgIDk5LCAxMjQsIDExNCwgMjIsIDQzLCAyMzIsIDIzNiwgOTMsIDk5LCAxMTQsIDEyNCwgMjIsIDIzMywgNTIsIDkzLCA5OSwgCi0gICAgMTkzLCAxMjAsIDIyLCAyMjIsIDI1NCwgOTMsIDk5LCAxMjAsIDE5MywgMjIsIDQ0LCAyNDEsIDIyOCwgOTMsIDk5LCAxMjAsIAotICAgIDExNCwgMjIsIDQ0LCAyMzIsIDIzNiwgOTMsIDk5LCAxMTQsIDEyMCwgMjIsIDIyMiwgMjU0LCA5MywgOTksIDE5MywgMTIwLCAKLSAgICAyMiwgMjMzLCA1MiwgOTMsIDk5LCAxMjAsIDE5MywgMjIsIDQzLCAyNDEsIDIyOCwgOTMsIDk5LCAxMjAsIDExNCwgMjIsIAotICAgIDQzLCAyMzIsIDIzNiwgOTMsIDk5LCAxMTQsIDEyMCwgMjIsIDIzMywgNTIsIDkzLCA5OSwgMTkzLCA2NywgMjIsIDIyMiwgCi0gICAgMjU0LCA5MywgOTksIDY3LCAxOTMsIDIyLCA0NCwgMjQxLCAyMjgsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCA0NCwgMTI0LCAKLSAgICAyMzIsIDIzNiwgOTMsIDk5LCAxMjQsIDExNCwgMjIsIDQ0LCAxMjAsIDIzMiwgMjM2LCA5MywgOTksIDY3LCAxMTQsIDIyLCAKLSAgICA0NCwgMjMyLCAyMzYsIDkzLCA5OSwgMTI0LCAxOTMsIDIyLCA0NCwgMTIwLCAyNDEsIDIyOCwgOTMsIDk5LCAxMjAsIDE5MywgCi0gICAgMjIsIDQ0LCAxMjQsIDI0MSwgMjI4LCA5MywgOTksIDExNCwgNjcsIDIyLCAyMjIsIDI1NCwgOTMsIDk5LCAxOTMsIDY3LCAKLSAgICAyMiwgMjMzLCA1MiwgOTMsIDk5LCA2NywgMTkzLCAyMiwgNDMsIDI0MSwgMjI4LCA5MywgOTksIDEyMCwgMTE0LCAyMiwgNDMsIAotICAgIDEyNCwgMjMyLCAyMzYsIDkzLCA5OSwgMTI0LCAxMTQsIDIyLCA0MywgMTIwLCAyMzIsIDIzNiwgOTMsIDk5LCA2NywgMTE0LCAKLSAgICAyMiwgNDMsIDIzMiwgMjM2LCA5MywgOTksIDEyNCwgMTkzLCAyMiwgNDMsIDEyMCwgMjQxLCAyMjgsIDkzLCA5OSwgMTIwLCAKLSAgICAxOTMsIDIyLCA0MywgMTI0LCAyNDEsIDIyOCwgOTMsIDk5LCAxMTQsIDY3LCAyMiwgMjMzLCA1MiwgOTMsIDk5LCAxOTMsIAotICAgIDEyNCwgMjIsIDI0MSwgNTEsIDkzLCA5OSwgNDMsIDExNCwgMjIsIDQ0LCAxMjQsIDIzMiwgMjM2LCA5MywgOTksIDQ0LCAKLSAgICAxMTQsIDIyLCA0MywgMTI0LCAyMzIsIDIzNiwgOTMsIDk5LCAxMjQsIDE5MywgMjIsIDIwMywgMjQxLCAyMjgsIDkzLCA5OSwgCi0gICAgMTI0LCAxMTQsIDIyLCAyMDMsIDIzMiwgMjM2LCA5MywgOTksIDQ0LCAxOTMsIDIyLCA0MywgMTI0LCAyNDEsIDIyOCwgOTMsIAotICAgIDk5LCA0MywgMTkzLCAyMiwgNDQsIDEyNCwgMjQxLCAyMjgsIDkzLCA5OSwgMTE0LCAxMjQsIDIyLCAyNDEsIDUxLCA5MywgCi0gICAgOTksIDE5MywgMTIwLCAyMiwgMjQxLCA1MSwgOTMsIDk5LCA0MywgMTE0LCAyMiwgNDQsIDEyMCwgMjMyLCAyMzYsIDkzLCAKLSAgICA5OSwgNDQsIDExNCwgMjIsIDQzLCAxMjAsIDIzMiwgMjM2LCA5MywgOTksIDEyMCwgMTkzLCAyMiwgMjAzLCAyNDEsIDIyOCwgCi0gICAgOTMsIDk5LCAxMjAsIDExNCwgMjIsIDIwMywgMjMyLCAyMzYsIDkzLCA5OSwgNDQsIDE5MywgMjIsIDQzLCAxMjAsIDI0MSwgCi0gICAgMjI4LCA5MywgOTksIDQzLCAxOTMsIDIyLCA0NCwgMTIwLCAyNDEsIDIyOCwgOTMsIDk5LCAxMTQsIDEyMCwgMjIsIDI0MSwgCi0gICAgNTEsIDkzLCA5OSwgMTkzLCA2NywgMjIsIDI0MSwgNTEsIDkzLCA5OSwgNDMsIDExNCwgMjIsIDQ0LCA2NywgMjMyLCAyMzYsIAotICAgIDkzLCA5OSwgNDQsIDExNCwgMjIsIDQzLCA2NywgMjMyLCAyMzYsIDkzLCA5OSwgNjcsIDE5MywgMjIsIDIwMywgMjQxLCAKLSAgICAyMjgsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCAxMjQsIDIwMywgMjMyLCAyMzYsIDkzLCA5OSwgMTI0LCAxMTQsIDIyLCAxMjAsIAotICAgIDIwMywgMjMyLCAyMzYsIDkzLCA5OSwgNjcsIDExNCwgMjIsIDIwMywgMjMyLCAyMzYsIDkzLCA5OSwgNDMsIDEyMCwgMTE0LCAKLSAgICAyMiwgNDQsIDEyNCwgMjMyLCAyMzYsIDkzLCA5OSwgNDQsIDEyMCwgMTE0LCAyMiwgNDMsIDEyNCwgMjMyLCAyMzYsIDkzLCAKLSAgICA5OSwgNDMsIDEyNCwgMTE0LCAyMiwgNDQsIDEyMCwgMjMyLCAyMzYsIDkzLCA5OSwgNDQsIDEyNCwgMTE0LCAyMiwgNDMsIAotICAgIDEyMCwgMjMyLCAyMzYsIDkzLCA5OSwgMTI0LCAxOTMsIDIyLCAxMjAsIDIwMywgMjQxLCAyMjgsIDkzLCA5OSwgMTIwLCAKLSAgICAxOTMsIDIyLCAxMjQsIDIwMywgMjQxLCAyMjgsIDkzLCA5OSwgNDQsIDE5MywgMjIsIDQzLCA2NywgMjQxLCAyMjgsIDkzLCAKLSAgICA5OSwgNDMsIDE5MywgMjIsIDQ0LCA2NywgMjQxLCAyMjgsIDkzLCA5OSwgMTE0LCA2NywgMjIsIDI0MSwgNTEsIDkzLCA5OSwgCi0gICAgMTkzLCA1MiwgMjQ4LCAxNjUsIDI0MSwgNTEsIDkzLCA5OSwgMTE0LCA1MiwgMjQ4LCAxNjUsIDI0MSwgNTEsIDkzLCA5OSwgCi0gICAgMTkzLCA1MiwgMjQ4LCAxNjUsIDIxMywgMjM5LCA5MywgOTksIDExNCwgNTIsIDI0OCwgMTY1LCAyMTMsIDIzOSwgOTMsIDk5LCAKLSAgICA1MiwgMjQxLCA1MSwgOTMsIDk5LCA1MiwgMjEzLCAyMzksIDkzLCA5OSwgMTI0LCAyMTksIDE1NywgMjIsIDQ0LCAyNDYsIAotICAgIDEyMSwgOTMsIDk5LCAxMjQsIDUyLCAyMiwgNDQsIDIxOSwgMTU2LCA5MywgOTksIDUyLCAxMjQsIDIyLCAyMjIsIDI1NCwgCi0gICAgOTMsIDk5LCAxMjQsIDIxOSwgMTU3LCAyMiwgNDMsIDI0NiwgMTIxLCA5MywgOTksIDEyNCwgNTIsIDIyLCA0MywgMjE5LCAKLSAgICAxNTYsIDkzLCA5OSwgNTIsIDEyNCwgMjIsIDIzMywgNTIsIDkzLCA5OSwgMTIwLCAyMTksIDE1NywgMjIsIDQ0LCAyNDYsIAotICAgIDEyMSwgOTMsIDk5LCAxMjAsIDUyLCAyMiwgNDQsIDIxOSwgMTU2LCA5MywgOTksIDUyLCAxMjAsIDIyLCAyMjIsIDI1NCwgCi0gICAgOTMsIDk5LCAxMjAsIDIxOSwgMTU3LCAyMiwgNDMsIDI0NiwgMTIxLCA5MywgOTksIDEyMCwgNTIsIDIyLCA0MywgMjE5LCAKLSAgICAxNTYsIDkzLCA5OSwgNTIsIDEyMCwgMjIsIDIzMywgNTIsIDkzLCA5OSwgNjcsIDIxOSwgMTU3LCAyMiwgNDQsIDI0NiwgCi0gICAgMTIxLCA5MywgOTksIDY3LCA1MiwgMjIsIDQ0LCAyMTksIDE1NiwgOTMsIDk5LCA1MiwgNjcsIDIyLCAyMjIsIDI1NCwgOTMsIAotICAgIDk5LCA2NywgMjE5LCAxNTcsIDIyLCA0MywgMjQ2LCAxMjEsIDkzLCA5OSwgNjcsIDUyLCAyMiwgNDMsIDIxOSwgMTU2LCA5MywgCi0gICAgOTksIDUyLCA2NywgMjIsIDIzMywgNTIsIDkzLCA5OSwgMTI0LCAyMTksIDE1NywgMjIsIDIwMywgMjQ2LCAxMjEsIDkzLCAKLSAgICA5OSwgMTI0LCA1MiwgMjIsIDIwMywgMjE5LCAxNTYsIDkzLCA5OSwgNTIsIDEyNCwgMjIsIDI0MSwgNTEsIDkzLCA5OSwgCi0gICAgMTIwLCAyMTksIDE1NywgMjIsIDIwMywgMjQ2LCAxMjEsIDkzLCA5OSwgMTIwLCA1MiwgMjIsIDIwMywgMjE5LCAxNTYsIDkzLCAKLSAgICA5OSwgNTIsIDEyMCwgMjIsIDI0MSwgNTEsIDkzLCA5OSwgNjcsIDIxOSwgMTU3LCAyMiwgMjAzLCAyNDYsIDEyMSwgOTMsIAotICAgIDk5LCA2NywgNTIsIDIyLCAyMDMsIDIxOSwgMTU2LCA5MywgOTksIDUyLCA2NywgMjIsIDI0MSwgNTEsIDkzLCA5OSwgMTkzLCAKLSAgICAyNTQsIDM0LCAxMjQsIDIyLCAyMjIsIDI1NCwgOTMsIDk5LCAxOTMsIDI1NCwgMzQsIDEyNCwgMjIsIDIzMywgNTIsIDkzLCAKLSAgICA5OSwgMTkzLCAyNTQsIDM0LCAxMjAsIDIyLCAyMzMsIDUyLCA5MywgOTksIDE5MywgMjU0LCAzNCwgMTIwLCAyMiwgMjIyLCAKLSAgICAyNTQsIDkzLCA5OSwgMTkzLCAyNDgsIDcsIDIxNCwgMTYwLCA0NCwgMjE2LCA0MywgMjMyLCAxMTQsIDIzMywgNTIsIDkzLCAKLSAgICA5OSwgMTkzLCAyNDgsIDcsIDIxNCwgMTYwLCA0MywgMjE2LCA0MywgMjMyLCAxMTQsIDIyMiwgMjU0LCA5MywgOTksIDE5MywgCi0gICAgMjQ4LCA3LCAyNDksIDEzOCwgOTMsIDk5LCAxOTMsIDIzMywgNTIsIDkzLCA5OSwgMTkzLCAyMTQsIDE2MywgOTMsIDk5LCAKLSAgICAxOTMsIDIyMiwgMjU0LCA5MywgOTksIDE5MywgMjQ2LCAxMTQsIDkzLCA5OSwgMTE0LCAyMzMsIDUyLCA5MywgOTksIDExNCwgCi0gICAgMjE0LCAxNjMsIDkzLCA5OSwgMTE0LCAyMjIsIDI1NCwgOTMsIDk5LCAxMTQsIDI0NiwgMTE0LCA5MywgOTksIDE5MywgNDMsIAotICAgIDIyLCAxMTQsIDIyMiwgMjU0LCA5MywgOTksIDE5MywgMTIwLCAyMiwgMTE0LCAyNDYsIDExNCwgOTMsIDk5LCAxMTQsIDQzLCAKLSAgICAyMiwgMTkzLCAyMjIsIDI1NCwgOTMsIDk5LCAxMTQsIDEyMCwgMjIsIDE5MywgMjQ2LCAxMTQsIDIxNCwgMTYwLCAxNjMsIAotICAgIDI1MSwgMjIxLCAyMzIsIDExNCwgMTIzLCAyNDUsIDE5NywgMjUxLCAyMjEsIDIzMiwgMTE0LCAxMjMsIDIyNCwgMjUsIDI1MSwgCi0gICAgMjIxLCAyMzIsIDExNCwgMTM0LCAyNDUsIDE5NSwgMjUxLCAyMjEsIDIzMiwgMTE0LCAxNjMsIDI1MSwgMjIxLCAyMzIsIAotICAgIDExNCwgMjQ0LCA4OSwgMjQ1LCAxOTUsIDI1MSwgMjIxLCAyMzIsIDExNCwgMTM0LCAyMjQsIDIzLCAyNTEsIDIyMSwgMjMyLCAKLSAgICAxMTQsIDIyMCwgMTI0LCAyNDUsIDE5NSwgMjUxLCAyMjEsIDI0MywgMjM2LCAyNTEsIDIyMSwgNDMsIDIyMCwgMTI0LCAyNDUsIAotICAgIDE5NSwgMjUxLCAyMjEsIDQzLCAxMzQsIDIyNCwgMjMsIDI1MSwgMjIxLCA0MywgMjQ0LCA4OSwgMjQ1LCAxOTUsIDI1MSwgCi0gICAgMjIxLCA0MywgMTYzLCAyNTEsIDIyMSwgNDMsIDEzNCwgMjQ1LCAxOTUsIDI1MSwgMjIxLCA0MywgMTIzLCAyMjQsIDI1LCAKLSAgICAyNTEsIDIyMSwgNDMsIDEyMywgMjQ1LCAxOTcsIDI1MSwgMjIxLCA0NCwgMTYzLCAyNTEsIDIyMSwgMTkzLCAyMjAsIDk0LCAKLSAgICAyMzEsIDg3LCAyMjAsIDk0LCAyNDgsIDE3MCwgMjIwLCA5NCwgMjE0LCAxNjAsIDEyMywgMjQ1LCAxOTcsIDI1MSwgMjIxLCAKLSAgICA0NCwgMTIzLCAyNDUsIDE5NywgMjUxLCAyMjEsIDIyNCwgMjksIDIzMiwgMTE0LCAyMzMsIDUyLCAyMjQsIDI5LCAyMzIsIAotICAgIDExNCwgMjIyLCAyNTQsIDIyNCwgMjksIDIxNCwgMTYwLCAyMzMsIDUyLCAyMjQsIDI5LCAyMTQsIDE2MCwgNDMsIDIyLCAKLSAgICAyMzIsIDExNCwgNDMsIDIyLCAyMzIsIDExNCwgMjIyLCAyNTQsIDIyNCwgMjksIDIxNCwgMTYwLCA0MywgMjIsIDIzMiwgCi0gICAgMTE0LCAyMjIsIDI1NCwgMjI0LCAyOSwgMjE0LCAxNjAsIDQzLCAyMiwgMjE0LCAxNjAsIDQ0LCAyMiwgMjMyLCAxMTQsIAotICAgIDIzMywgNTIsIDIyNCwgMjksIDIxNCwgMTYwLCA0MywgMjIsIDIxNCwgMTYwLCA0NCwgMjIsIDIzMiwgMTE0LCAyMjIsIDI1NCwgCi0gICAgMjI0LCAyOSwgMjE0LCAxNjAsIDIyMiwgMjU0LCAyMjQsIDI5LCAyMTQsIDE2MCwgNDQsIDIyLCAyMzIsIDExNCwgMjMzLCAKLSAgICA1MiwgMjI0LCAyOSwgMjE0LCAxNjAsIDQ0LCAyMiwgMjMyLCAxMTQsIDQzLCAyMiwgMjMyLCAxMTQsIDIyMiwgMjU0LCA4NSwgCi0gICAgMjE4LCAyMzYsIDcxLCAyMTgsIDIzNiwgNzEsIDQyLCAyLCAyMjIsIDE4NSwgMjQ5LCAxNjcsIDcxLCA0MiwgMjQ5LCAxOTUsIAotICAgIDg1LCA0LCAyMTgsIDIzNiwgNDIsIDIsIDIwMywgMjQ0LCAxMTMsIDQyLCAyLCA2NywgMjQ0LCAxMTMsIDQyLCAyLCAyMjYsIAotICAgIDE0OCwgMjQ5LCAxMzQsIDI0NCwgMTEzLCA0MiwgMiwgMjE0LCAxNjAsIDQzLCAyMTYsIDQzLCAyMzIsIDExNCwgNDQsIDI0NCwgCi0gICAgMTEzLCA0MiwgMiwgMjE0LCAxNjAsIDQ0LCAyMTYsIDQzLCAyMzIsIDExNCwgNDMsIDI0NCwgMTEzLCA0MiwgMiwgMjQ4LCA3LCAKLSAgICAyNDksIDEzNCwgMjQ0LCAxMTMsIDg1LCA0LCAyMTgsIDIzNiwgNzEsIDQsIDIxOCwgMjM2LCA4NSwgMjIzLCAxMTksIDcxLCAKLSAgICAyMjMsIDExOSwgODUsIDY3LCAyMjMsIDExOSwgNzEsIDY3LCAyMjMsIDExOSwgODUsIDIyNiwgMTAsIDcxLCAyMjYsIDEwLCAKLSAgICA4NSwgMjE0LCAxNjIsIDIxNSwgMjI2LCA3MSwgMjE0LCAxNjIsIDIxNSwgMjI2LCA4NSwgMjE0LCAxNjIsIDQsIDIxNSwgCi0gICAgMjI2LCA3MSwgMjE0LCAxNjIsIDQsIDIxNSwgMjI2LCA4NSwgMjIyLCAyNTAsIDIxNSwgMjI2LCA3MSwgMjIyLCAyNTAsIAotICAgIDIxNSwgMjI2LCA4NSwgMjIyLCAyNTAsIDQsIDIxNSwgMjI2LCA3MSwgMjIyLCAyNTAsIDQsIDIxNSwgMjI2LCA4NSwgMjIyLCAKLSAgICAyNTAsIDIyNSwgMTEsIDcxLCAyMjIsIDI1MCwgMjI1LCAxMSwgODUsIDI0NiwgMTEzLCAyMTUsIDIyNiwgNzEsIDI0NiwgCi0gICAgMTEzLCAyMTUsIDIyNiwgODUsIDI0NiwgMTEzLCA0LCAyMTUsIDIyNiwgNzEsIDI0NiwgMTEzLCA0LCAyMTUsIDIyNiwgODUsIAotICAgIDIzMywgNDgsIDIxNSwgMjI2LCA3MSwgMjMzLCA0OCwgMjE1LCAyMjYsIDg1LCAyMzMsIDQ4LCA0LCAyMTUsIDIyNiwgNzEsIAotICAgIDIzMywgNDgsIDQsIDIxNSwgMjI2LCA4NSwgMjMzLCA0OCwgMjI1LCAxMSwgNzEsIDIzMywgNDgsIDIyNSwgMTEsIDg1LCAKLSAgICAyNDgsIDAsIDcxLCAyNDgsIDAsIDcxLCAyNDgsIDEsIDI0OSwgMTk1LCA4NSwgNCwgMjQ4LCAwLCAyNDQsIDk3LCAyMzIsIAotICAgIDExMCwgNzEsIDI1MCwgNDMsIDI0NiwgMTI2LCAyNTAsIDQzLCAyNTAsIDQ0LCAyLCA2NywgMjQ0LCAxMTMsIDI1MSwgMTE5LCAKLSAgICA4NSwgMjUwLCA0MywgMjUwLCA0NCwgMiwgNDMsIDE2MywgMjUxLCAyMjksIDI1MCwgNDQsIDIsIDQ0LCAxNjMsIDI1MSwgCi0gICAgMjI5LCAyNTAsIDQ0LCAyLCAyMzIsIDExNCwgMTYzLCAyNTEsIDIyOSwgMjUwLCA0NCwgMiwgMjE0LCAxNjAsIDE2MywgMjUxLCAKLSAgICAyMjksIDI1MCwgNDQsIDIsIDIxNCwgMTYwLCA0NCwgMjI0LCAyOSwgMjUxLCAyMjksIDI1MCwgNDQsIDIsIDI1NCwgMTY0LCAKLSAgICAyNTEsIDk2LCAyMTQsIDE2MCwgNDMsIDIyNCwgMjksIDI1MSwgMjI5LCA0MywgMTYzLCA4NSwgMjUwLCA0MywgNDQsIDE2MywgCi0gICAgODUsIDI1MCwgNDMsIDIzNSwgMjAxLCAyNTEsIDEyMSwgMjM1LCAyMDEsIDcxLCAyNTAsIDQzLCAyMTQsIDE2MCwgMTYzLCAKLSAgICAyMzUsIDIwMSwgNzEsIDI1MCwgNDMsIDIzMiwgMTE0LCAxNjMsIDIzNSwgMjAxLCA3MSwgMjUwLCA0MywgMjE0LCAxNjAsIAotICAgIDQzLCAyMjQsIDI5LCAyNTAsIDQxLCAyNTQsIDMzLCAyMTQsIDE2MCwgNDQsIDIyNCwgMjksIDI1MCwgNDEsIDI1NCwgMzMsIAotICAgIDIzMiwgMTE0LCA0NCwgMjI0LCAyOSwgMjUwLCA0MSwgMjU0LCAzMywgMjMyLCAxMTQsIDQzLCAyMjQsIDI5LCAyNTAsIDQxLCAKLSAgICAyNTQsIDMzLCAyMTQsIDE2MCwgMTYzLCAyNTAsIDQzLCAyMzIsIDExNCwgMTYzLCAyNTAsIDQzLCA4NSwgMjMyLCAxMTQsIAotICAgIDQ0LCAyMTUsIDIyNiwgODUsIDIzMiwgMTE0LCA0MywgMjE1LCAyMjYsIDg1LCAyMTQsIDE2MCwgNDMsIDIxNSwgMjI2LCA4NSwgCi0gICAgMjE0LCAxNjAsIDQ0LCAyMTUsIDIyNiwgNzEsIDI1MSwgMTIxLCA0MiwgMiwgNDMsIDE2MywgMjUxLCAyMjksIDQyLCAyLCAKLSAgICA0NCwgMTYzLCAyNTEsIDIyOSwgNDIsIDIsIDIxNCwgMTYwLCA0MywgMjQ4LCA3LCAxNjMsIDI1MSwgMjI5LCA0MiwgMiwgCi0gICAgMjMyLCAxMTQsIDQ0LCAyNDgsIDcsIDE2MywgMjUxLCAyMjksIDcxLCA0MiwgMiwgNjcsIDI1MSwgMjQwLCAyMzIsIDIxOSwgCi0gICAgNzEsIDIxNCwgMTYyLCAyMTUsIDIyNywgMiwgMjQ3LCAxMjgsIDIxNCwgMTYyLCAyMTUsIDIyNywgMiwgNDMsIDE2MywgMjUxLCAKLSAgICAyMjksIDIxNCwgMTYyLCAyMTUsIDIyNywgMiwgNDQsIDE2MywgMjUxLCAyMjksIDIzMywgOTEsIDI1MCwgNDMsIDcxLCA0MiwgCi0gICAgMiwgMjE0LCAxNjAsIDQzLCAyMjQsIDI4LCA3MSwgNDIsIDIsIDIzMiwgMTE0LCA0MywgMjI0LCAyOCwgNzEsIDQyLCAyLCAKLSAgICAyMzIsIDExNCwgNDQsIDIyNCwgMjgsIDcxLCA0MiwgMiwgMjE0LCAxNjAsIDQ0LCAyMjQsIDI4LCA3MSwgMjUwLCA0NCwgMiwgCi0gICAgMjE0LCAxNjAsIDQzLCAyMjQsIDI4LCA3MSwgMjUwLCA0NCwgMiwgMjMyLCAxMTQsIDQzLCAyMjQsIDI4LCA3MSwgMjUwLCAKLSAgICA0NCwgMiwgMjMyLCAxMTQsIDQ0LCAyMjQsIDI4LCA3MSwgMjUwLCA0NCwgMiwgMjE0LCAxNjAsIDQ0LCAyMjQsIDI4LCAyMTQsIAotICAgIDE2MCwgNDMsIDIxNSwgMjI2LCAyMTQsIDE2MCwgNDQsIDIxNSwgMjI2LCAyMzIsIDExNCwgNDMsIDIxNSwgMjI2LCA3MSwgCi0gICAgMjMxLCA4NywgMjE4LCAyMzYsIDg1LCAyMzEsIDg3LCAyMTgsIDIzNiwgNzEsIDIzMSwgODcsIDQsIDIxOCwgMjM2LCA4NSwgCi0gICAgMjMxLCA4NywgNCwgMjE4LCAyMzYsIDIzMiwgMTE0LCA0NCwgMjE1LCAyMjYsIDg1LCAyMTgsIDM5LCAyLCAyMjMsIDEzNSwgCi0gICAgMjQ5LCAyNTUsIDIxNCwgMTk0LCAyMTksIDYyLCAyNDksIDIzMCwgODUsIDIxOCwgMTU4LCA3MSwgMjE4LCAxNTgsIDIzMiwgCi0gICAgMjM0LCAyMTYsIDEzMywgMjE4LCAzOCwgMjUzLCAyNDIsIDIyOCwgNzYsIDI0OCwgNDYsIDIyOCwgNzYsIDI0OSwgMjAzLCAKLSAgICAyMjYsIDE2NywgODUsIDIxNywgMSwgNzEsIDIxNywgMSwgMjUyLCAxNjQsIDI1MSwgMTcxLCAyNTIsIDE2NCwgOTMsIDIsIAotICAgIDI1MCwgMTM3LCAyNTIsIDE2NCwgOTMsIDIsIDIxMSwgMTc4LCAyMjIsIDAsIDIxNCwgMTk1LCAyLCAyMjMsIDE2MywgMjQ2LCAKLSAgICA5MiwgMjQwLCAyNTAsIDI1MiwgMzAsIDcxLCAyMjAsIDQsIDIyNSwgMTA0LCA4NSwgMjIwLCA0LCAyMjUsIDEwNCwgMjIwLCAKLSAgICA4OSwgMjIzLCA1MiwgMjIyLCAxODksIDI0NCwgNjMsIDI0MSwgMjM1LCAyNTEsIDEyMSwgODUsIDQzLCAyMjUsIDEwLCAyMzUsIAotICAgIDI0OSwgODUsIDQ0LCAyMjUsIDEwLCAyMzUsIDI0OSwgNzEsIDQzLCAyMjUsIDEwLCAyMzUsIDI0OSwgNzEsIDEyMCwgMjI1LCAKLSAgICAxMCwgMjM1LCAyNDksIDcxLCA0NCwgMjI1LCAxMCwgMjM1LCAyNDksIDcxLCAxMjQsIDIyNSwgMTAsIDIzNSwgMjQ5LCAyMTksIAotICAgIDEwMywgMjIsIDI0OSwgMTM3LCAyNTAsIDIyNywgNTAsIDIyMywgMTc1LCA1MCwgMjUxLCAyNDcsIDUwLCAyNTEsIDMzLCAKLSAgICAyNTQsIDExMCwgMjI2LCAxNDksIDI0OSwgMTM4LCAyNTAsIDExOSwgMjIzLCA0MCwgMjQ5LCAxMzksIDY0LCAyMzIsIDEyNCwgCi0gICAgMjQ5LCAxMzksIDY0LCAyMzUsIDEyMiwgMjE4LCAxNTksIDIyLCAyNDksIDE0NCwgMjQ0LCAxNzYsIDg3LCAyNTUsIDEsIAotICAgIDIyMCwgOTEsIDI0MiwgMjksIDIyLCAyMTksIDE5MSwgMjI1LCAyMjMsIDg3LCAyMTAsIDI1NCwgMjExLCA2OSwgMjE1LCAKLSAgICAyMTYsIDMxLCAyNDEsIDIzMCwgMjE1LCAyMTYsIDMxLCAyMzMsIDExMywgMjE1LCAyMTYsIDMxLCAyNDQsIDEwNCwgMjE1LCAKLSAgICAyMTYsIDMxLCAyMTYsIDEzNCwgMjE1LCAyMTYsIDMxLCAyMTEsIDIzOSwgMjE1LCAyMTYsIDMxLCAyMTIsIDQwLCAyMTUsIAotICAgIDIxNiwgMzEsIDIzMCwgMTIwLCAyMTUsIDIxNiwgMzEsIDI0NSwgMjMxLCAyMTIsIDEsIDY0LCAyNDgsIDI2LCA3MSwgMjQzLCAKLSAgICAyNDcsIDI0NCwgMTk4LCA3MSwgMjE5LCA3NiwgMjQ0LCAxOTgsIDg1LCAyMTksIDc2LCAyNDQsIDE5OCwgNzEsIDIxOCwgMzksIAotICAgIDIsIDIyMywgMTM1LCAyNDQsIDEwMCwgMjI0LCAyNSwgMjMwLCAxMzMsIDIzMywgODYsIDIyNCwgMjUsIDIzMCwgMTMzLCAKLSAgICAyMzEsIDU5LCAyNDQsIDE0NiwgNTAsIDI0NSwgMjMxLCAyMzEsIDE5NSwgNTAsIDIzNSwgNDQsIDIyMSwgMjIyLCAyMTQsIAotICAgIDE0NSwgMjI5LCA5OCwgMjI1LCAyMywgMjU0LCAyMCwgMjE3LCA0MSwgMjQzLCA1OSwgMjUxLCAxMSwgMjMzLCAyNSwgMjEzLCAKLSAgICAxNTAsIDIzMiwgMjQ0LCAyMjEsIDE5MywgMjIyLCAyMSwgMjUxLCAwLCAyNTQsIDUwLCAyMjUsIDU1LCA3MSwgMjUwLCAxMjUsIAotICAgIDIzNCwgODQsIDcxLCAyNTAsIDEyNSwgMjI0LCAxNywgNzEsIDI1MCwgMTI1LCAyMjIsIDE5NywgNzEsIDI1MCwgMTI1LCAKLSAgICAyNTEsIDIzOSwgNzEsIDI1MCwgMTI1LCAyMzQsIDM2LCA3MSwgMjUwLCAxMjUsIDIyNSwgMjM1LCA4NSwgMjUwLCAxMjUsIAotICAgIDIzNCwgODQsIDg1LCAyNTAsIDEyNSwgMjI0LCAxNywgODUsIDI1MCwgMTI1LCAyMjIsIDE5NywgODUsIDI1MCwgMTI1LCAKLSAgICAyNTEsIDIzOSwgODUsIDI1MCwgMTI1LCAyMzQsIDM2LCA4NSwgMjUwLCAxMjUsIDIyNSwgMjM1LCA4NSwgMjE5LCAxOCwgCi0gICAgMjE4LCA1MSwgNzEsIDI0MSwgMjM1LCAyMTgsIDUxLCA3MSwgMjQ4LCAxLCAyMTgsIDUxLCA4NSwgMjQ5LCAyNTMsIDIxOCwgCi0gICAgNTEsIDcxLCAyMTksIDE4LCAyMTgsIDUxLCA4NSwgMjQxLCAyMzUsIDIxOCwgNTEsIDg1LCAyNDgsIDEsIDIxOCwgNTEsIDcxLCAKLSAgICAyNDksIDI1MywgMjE4LCA1MSwgMjQwLCAyNTAsIDIxOCwgMjQwLCAyMjQsIDI1LCAyMjgsIDUyLCAyNDUsIDE5NywgMjI4LCAKLSAgICA1MiwgMjUyLCA4MSwgMjQ1LCAxOTcsIDIyOCwgNDcsIDI1MiwgODEsIDIxOSwgMTIwLCAyMjgsIDQ3LCAyMzAsIDYyLCAyNDQsIAotICAgIDc0LCA1MCwgMjMwLCA2MiwgMjI5LCAxOTMsIDUwLCAyMzAsIDYyLCAyMjAsIDc4LCA1MCwgMjEyLCA5LCAxODMsIDI0OSwgCi0gICAgMTM4LCAyNDUsIDIyOCwgMTgzLCAyNDksIDEzOCwgMjE0LCAxNzEsIDIyMywgMTE1LCA4NywgMjIzLCAxMTUsIDE2LCAzMSwgCi0gICAgMjE1LCA0OCwgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgMjE1LCA0NywgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgCi0gICAgMjE1LCA0NiwgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgMjE1LCA0NSwgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgCi0gICAgMjE1LCA0NCwgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgMjE1LCA0MywgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgCi0gICAgMjE1LCA0MiwgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgMjQzLCA1NywgMjMxLCAxNDMsIDg1LCAyMTQsIDE3MSwgMjIzLCAKLSAgICAxMTUsIDg3LCAyMjMsIDExNiwgMjI2LCAyNCwgODcsIDIyNiwgMCwgMjI2LCAyNCwgODcsIDIyNSwgMTc3LCAyMjYsIDI0LCAKLSAgICA1MCwgMjExLCAyNTUsIDg3LCAyNDcsIDI0OSwgMjQ0LCAxOTcsIDI0NywgMjQ5LCAyNDQsIDE5NiwgMjQ3LCAyNDksIDI0NCwgCi0gICAgMTk1LCAyNDcsIDI0OSwgMjQ0LCAxOTQsIDI0NywgMjQ5LCAyNDQsIDE5MywgMjQ3LCAyNDksIDI0NCwgMTkyLCA3MSwgMjUwLCAKLSAgICA0NCwgMiwgNTksIDIyMiwgMjU0LCA3MSwgMjUwLCA0NCwgMiwgMTEzLCAyNDcsIDEyNiwgODUsIDI1MCwgNDQsIDIsIDcxLCAKLSAgICA1OSwgMjIyLCAyNTQsIDg1LCAyNTAsIDQ0LCAyLCAxMTMsIDcxLCAyNDcsIDEyNiwgMjMwLCAxNDcsIDMxLCAyMTEsIDY5LCAKLSAgICAyMzAsIDE0NywgMzEsIDIxMCwgMjUzLCAyNDcsIDIzMiwgMzEsIDI0MiwgMTM4LCAyMTEsIDY5LCAyNDcsIDIzMiwgMzEsIAotICAgIDIzMywgMTksIDIxMCwgMjUzLCAyNDcsIDIzMiwgMzEsIDIzMywgMTksIDIxMSwgNjksIDI0NywgMjMyLCAzMSwgMjQyLCAKLSAgICAxMzgsIDIxMCwgMjUzLCA3MSwgMjQ0LCA4MSwgODUsIDI0NCwgODEsIDI0MiwgMjksIDIyLCAyMjUsIDEwNywgMjU0LCAxMjgsIAotICAgIDI0OSwgMTM2LCAyMTcsIDIzNiwgMjE4LCAxNjYsIDY0LCAyNTQsIDIzNSwgMjIxLCAyMDgsIDI1NCwgMTc4LCAyNDQsIDU5LCAKLSAgICAyNDMsIDY3LCAyMTgsIDE2NiwgNjQsIDI0MSwgMjA5LCAyNTMsIDIwNywgODcsIDI0NCwgNzAsIDIyNiwgMTMwLCA3MSwgCi0gICAgMjE4LCAxNTgsIDEzNCwgMjMyLCAyMTQsIDI0OSwgMTgzLCAyMjIsIDI1NCwgMTM0LCAyMzIsIDIxNCwgMjQ5LCAxODMsIAotICAgIDIzMywgNTIsIDIxMiwgNTAsIDUwLCAxMjUsIDIxMywgMTMwLCA1MCwgMjQ2LCAxMTgsIDI0NCwgMTQ2LCA1MCwgMjQ2LCAKLSAgICAxMTgsIDIzMSwgMTk1LCA1MCwgMjM1LCAyMTAsIDI0NCwgMTQ2LCAyMiwgMjMxLCAxOTUsIDUwLCAyMzEsIDE5NSwgMjIsIAotICAgIDI0NCwgMTQ2LCA1MCwgMjMxLCAxOTUsIDIsIDIxOCwgMTA1LCA1MCwgMjMxLCAxOTUsIDIsIDIxOCwgMTA1LCAyMiwgMjMxLCAKLSAgICAxOTUsIDIyLCAyNDQsIDE0NiwgNTAsIDY3LCAyMzEsIDE5NSwgMiwgMjE4LCAxMDUsIDUwLCAyMDMsIDIzMSwgMTk1LCAyLCAKLSAgICAyMTgsIDEwNSwgNTAsIDIzMSwgODcsIDcxLCAyNTAsIDQzLCAyMzEsIDg3LCA4NSwgMjUwLCA0MywgMjMxLCA4NywgNCwgNzEsIAotICAgIDI1MCwgNDMsIDIzMSwgMTU4LCA4NywgMjQ3LCAxNzUsIDg3LCAyMTQsIDE2OSwgMjI1LCAyNTUsIDg3LCAyNDksIDIzOSwgCi0gICAgMjQzLCAyMzEsIDIxNCwgMTQxLCAyMjksIDkzLCAyNTAsIDE2OSwgMjI2LCA2NSwgMjM1LCA1MCwgMjEzLCAxODUsIDI1MCwgCi0gICAgMTAxLCA4NSwgMjMwLCAxMzQsIDIzMiwgMjMxLCAyMjAsIDExNCwgMjIwLCAxNDksIDIyNCwgOCwgMjIwLCAxMzIsIDIxOSwgCi0gICAgNTcsIDI1MiwgMTY3LCAyNTIsIDEzNCwgOTIsIDIzNCwgMTQ0LCA3MSwgMjQ2LCAxMDEsIDIzMSwgMTkwLCA3MSwgMjQ2LCAKLSAgICAxMDEsIDIzNCwgODQsIDg1LCAyNDYsIDEwMSwgMjMxLCAxOTAsIDg1LCAyNDYsIDEwMSwgMjM0LCA4NCwgMjE5LCA2MywgCi0gICAgMjExLCAyMzAsIDIxOSwgNjYsIDIxOCwgMzksIDI1MiwgNTksIDI0OSwgMjU1LCAyMjMsIDE2MiwgODUsIDIxOSwgNjIsIAotICAgIDIxNiwgMTM1LCAyNTAsIDAsIDIyLCAyMjMsIDE2MiwgMjE1LCA5NCwgNzEsIDIyMCwgNCwgMjI1LCAxMDQsIDIxNSwgOTQsIAotICAgIDg1LCAyMjAsIDQsIDIyNSwgMTA0LCA3MSwgMjQ4LCAxLCAyMzYsIDcsIDIxOCwgMjM2LCAyNDksIDEzMywgMjMzLCA5NywgCi0gICAgMjQ3LCAyMDEsIDI1MCwgMjUyLCAyMjYsIDE3MCwgMjI1LCAxMDcsIDI1MCwgMjUzLCAyMTksIDkwLCAyNDEsIDIxOSwgMiwgCi0gICAgNzEsIDI0OSwgMTM4LCAzNywgMjQ5LCAxMzMsIDIzMywgOTcsIDI1MCwgMTYxLCAyMjgsIDgwLCAyNDUsIDEzMiwgMjU0LCAKLSAgICAxNDksIDIyNiwgMTk1LCA0MywgMjEyLCAyNiwgMjE1LCAyNTIsIDg1LCAyMTUsIDU1LCA0MywgMjEyLCAyNiwgMjE1LCAyNTIsIAotICAgIDcxLCAyMTUsIDU1LCA0MywgMjEyLCAyNiwgMjE1LCAyNTIsIDg1LCA0MywgMjMzLCA5OCwgMjMxLCA1OCwgNzEsIDQzLCAKLSAgICAyMzMsIDk4LCAyMzEsIDU4LCAyNDYsIDk3LCAyMTksIDg0LCA1MCwgMTE0LCA3MSwgMjQ2LCAxMTMsIDIxNSwgMjI2LCA0MywgCi0gICAgMjUwLCA4LCAyNDUsIDEzMiwgOTIsIDIyMiwgMCwgMjQ0LCAxODMsIDI0OCwgNywgMjM2LCA3LCA3MSwgMjUwLCA0NCwgMjM2LCAKLSAgICA3LCA4NSwgMjE4LCAyMzYsIDg1LCAyMTUsIDE5MywgMjIzLCA2MywgNDMsIDI0NSwgMTMxLCAyMjMsIDYzLCA0MywgMjQ1LCAKLSAgICAxMzAsIDI1MywgMjE5LCAxNiwgMzEsIDIxNCwgMTQ1LCAxMTQsIDI1MCwgNDQsIDIsIDIxOCwgMTA1LCAyMiwgMTEzLCAxNzAsIAotICAgIDQ4LCAyMjUsIDE5MiwgMjIyLCAyNTEsIDIzNSwgMjEyLCAyMjUsIDE5MiwgMjMzLCA0OSwgMjM1LCAyMTIsIDIyNSwgMTkyLCAKLSAgICAyMzUsIDIwMCwgMjI1LCAxOTIsIDg1LCAyNDksIDEzOSwgMjI2LCAyMDEsIDIyMCwgMzEsIDIyMCwgMTksIDIxOSwgMjMxLCAKLSAgICAyNTAsIDY5LCAyNTAsIDIzNCwgMjQxLCAxNjQsIDIxOSwgMTI4LCAyNDMsIDY4LCAyMTEsIDIzMCwgMjQwLCAyMjcsIDI0MywgCi0gICAgNjgsIDIsIDI0MiwgMTksIDIzMSwgMTc4LCAxNiwgMzEsIDIzMiwgMjM1LCAyMzAsIDEyMCwgMjE0LCAxOTUsIDIyNiwgMjAxLCAKLSAgICAyNDIsIDEyOSwgMjQ0LCAyMCwgMjQ0LCA4MiwgMjM2LCA3LCAyNDEsIDY2LCAyNDQsIDEzNywgMjIyLCAxNiwgNDIsIDI0NCwgCi0gICAgMTksIDI0OSwgMTY3LCAyMTksIDEwNiwgMjQwLCAxMTksIDIxOSwgMTA5LCAyMjUsIDE3MSwgMiwgMjUyLCAxNjcsIDIxNiwgCi0gICAgMjQzLCAyMzUsIDEzNywgMjUyLCAxNTQsIDg3LCAyNDEsIDIzOCwgMjQyLCAxNDAsIDg3LCAyNDMsIDIzOSwgMjI0LCAxNDUsIAotICAgIDI0OSwgMTExLCAyMjYsIDIwMSwgODUsIDIxOCwgMjM2LCA3MSwgMjQ0LCA4MiwgMiwgMjAzLCAyMzAsIDIyOSwgODUsIDIxOCwgCi0gICAgMTA2LCAyMTQsIDE2MCwgMjUxLCAyMjUsIDIyMSwgMTk1LCA4NSwgMjIxLCAxOTUsIDIzMiwgMTE0LCAyNTEsIDIyNSwgMjIxLCAKLSAgICAxOTUsIDcxLCAyMjEsIDE5NSwgNzEsIDExNCwgMjUwLCAxMzgsIDc5LCAyMTcsIDIsIDIzMiwgMTYwLCA1MCwgMjE3LCA1NCwgCi0gICAgMjQ2LCA5NiwgMjU0LCAyMDAsIDI0NSwgMTI3LCAyMjMsIDE2MCwgMjQ0LCA5MywgMjIzLCAxNjAsIDI0MiwgMjIsIDIxMywgCi0gICAgMTc0LCAyNDIsIDIyLCAyMTEsIDE5OCwgMjQyLCAyMiwgMjMyLCAxMTQsIDQ0LCAyMjUsIDIwMSwgMjI1LCAyMDEsIDIxNCwgCi0gICAgMTYwLCA0NCwgMjI1LCAyMDEsIDcxLCAyMjgsIDIzNSwgODUsIDIyOCwgMjM1LCAyNTAsIDEzOCwgNzksIDExNCwgMjUwLCAKLSAgICAxMzgsIDc5LCAyMzAsIDg5LCAyMTEsIDE3OCwgMTE0LCAyMzAsIDg5LCAyMTEsIDE3OCwgMjUyLCAxNjQsIDIxMSwgMTc4LCAKLSAgICAxMTQsIDI1MiwgMTY0LCAyMTEsIDE3OCwgMjI2LCAxMzAsIDI2LCAyNDksIDEzOCwgMTE0LCAyNiwgMjQ5LCAxMzgsIDIwNCwgCi0gICAgMjUwLCAxODMsIDI0OSwgMTM4LCAxMTQsIDIwNCwgMjUwLCAxODMsIDI0OSwgMTM4LCA3LCAyNDksIDEzOCwgMjIwLCA5MywgCi0gICAgNzEsIDcsIDI0OSwgMTM4LCAyMjYsIDEzMCwgNywgMjQ5LCAxMzgsIDIzMSwgMTkyLCAyNDksIDEzOCwgMjE4LCAxNTksIDY0LCAKLSAgICAyNDgsIDE1NywgMjQ0LCAxOSwgMjE3LCAxNiwgMjUzLCAyMjQsIDI0NCwgMTksIDI1MiwgMTY1LCAyNTMsIDIyNCwgMTE0LCAKLSAgICAyNDQsIDE5LCAyNTIsIDE2NSwgMjUzLCAyMjQsIDI0NCwgMTksIDI0OSwgMjUxLCAyNTMsIDIyNCwgODUsIDI0NCwgMTksIAotICAgIDIyNSwgMTIsIDIxOCwgMTU4LCA3MSwgMjQ0LCAxOSwgMjI1LCAxMiwgMjE4LCAxNTgsIDIxOSwgMTMsIDIxOCwgMTEzLCAKLSAgICAyMjYsIDEzMCwgNzEsIDIxOCwgMTU4LCAzNywgNzEsIDIxOCwgMTU4LCAyMDQsIDI1MCwgMTgzLCA4NSwgMjE4LCAxNTgsIAotICAgIDg1LCAyNTAsIDE4MywgNzEsIDIxOCwgMTU4LCAyMjYsIDEzMCwgODUsIDIxOCwgMTU4LCAxMTQsIDIyNiwgMTMwLCA4NSwgCi0gICAgMjE4LCAxNTgsIDIyNSwgNjMsIDIxOCwgMTU4LCAyMjAsIDkzLCA3MSwgMjE4LCAxNTgsIDExNCwgMjUzLCAyMjQsIDIwNCwgCi0gICAgMjUwLCAxODMsIDI1MywgMjI0LCAyNDUsIDIwMSwgMjE4LCAyNDYsIDI1MywgMjI0LCAyNDUsIDIwMSwgMjI1LCAxMiwgODUsIAotICAgIDIxOCwgMTU4LCAyNDUsIDIwMSwgMjI1LCAxMiwgMjI1LCA2MywgMjE4LCAxNTgsIDIxOSwgMTI3LCAyMjUsIDEyLCA4NSwgCi0gICAgMjE4LCAxNTgsIDI0NSwgMjAxLCAyMjUsIDEyLCAyMjMsIDExNywgODUsIDIxOCwgMTU4LCAxMTQsIDI0NSwgMjAxLCAyMjUsIAotICAgIDEyLCAyMjMsIDExNywgODUsIDIxOCwgMTU4LCAyMTUsIDc3LCAyMjUsIDEyLCA4NSwgMjE4LCAxNTgsIDIxOSwgMTIyLCAKLSAgICAyMjUsIDEyLCAyNTMsIDIyNCwgMjE3LCAxNiwgMjUzLCAyMjQsIDIwNCwgMjUwLCAxODMsIDIxNywgMTYsIDI1MywgMjI0LCAKLSAgICAxMTQsIDIxNywgMTYsIDI1MywgMjI0LCAyMTksIDEyNywgMjI1LCAxNjAsIDg1LCAyMiwgNzEsIDI0NCwgNjIsIDg1LCAyNDQsIAotICAgIDYyLCA3MSwgMjQ0LCA2MiwgMjQ1LCAyMDEsIDIyNSwgMTYwLCAyMjYsIDEzMCwgODUsIDI0NCwgNjIsIDM3LCAyMDQsIDI1MCwgCi0gICAgMTgzLCAyNDUsIDIwMSwgMjI1LCAxMiwgMjE4LCAxNTgsIDExNCwgMjE3LCAxNiwgMjI1LCA2MywgMjUzLCAyMjQsIDIxOSwgCi0gICAgNjQsIDIxNiwgMTA2LCAyMTUsIDIxOSwgMjE5LCA2NCwgMTE0LCAyNTAsIDEyMiwgMjE5LCA2NCwgMjE5LCAxNSwgMTE0LCAKLSAgICAyMTksIDE1LCAyNTIsIDE2NSwgMjUzLCAyMjQsIDI0NSwgMjAxLCAyMTcsIDE2LCAyMjQsIDE3NCwgMjUzLCAyMjQsIDExNCwgCi0gICAgMjQ1LCAyMDEsIDIxNywgMTYsIDIyNCwgMTc0LCAyNTMsIDIyNCwgMjQ5LCAxMzksIDc5LCAyMjAsIDkzLCA3MSwgMjUwLCAKLSAgICA0MywgMTUyLCA5MiwgMjQ5LCAxMzksIDc5LCAyMzIsIDExNCwgNDQsIDI0NiwgOTQsIDcxLCAyMTgsIDIzNiwgMjE0LCAxNjAsIAotICAgIDQ0LCAyNDYsIDk0LCA3MSwgMjE4LCAyMzYsIDIzMiwgMTE0LCA0NCwgMjIwLCA5MywgNzEsIDIxOCwgMjM2LCAyMTQsIDE2MCwgCi0gICAgNDQsIDIyMCwgOTMsIDcxLCAyMTgsIDIzNiwgODUsIDIyNCwgMTYsIDE2NCwgMjI2LCAxNTEsIDcxLCAyMjQsIDE2LCAxNjQsIAotICAgIDIyNiwgMTUxLCA3MSwgMjQ1LCAzOSwgMTY0LCAyMjYsIDE1MSwgODUsIDI0OCwgMSwgMjMwLCAxODcsIDcxLCAyMTEsIDE3OCwgCi0gICAgMTE0LCAyNDUsIDM5LCAxNjQsIDg3LCAxOTMsIDY3LCAxMzAsIDIzMSwgODcsIDY3LCAxMzAsIDExNCwgNjcsIDEzMCwgMTE0LCAKLSAgICAyMTksIDE1NywgMjE1LCA5NCwgMjQ5LCAyMjgsIDIyNCwgMSwgMTY0LCAyMjYsIDE1MSwgMTE0LCAyMTksIDE1NywgMjQ5LCAKLSAgICAyMjgsIDIyNCwgMSwgMTY0LCAyMjYsIDE1MSwgMTE0LCA1MiwgMjE1LCA5NCwgMjQ5LCAyMjgsIDIyNCwgMSwgMTY0LCAyMjYsIAotICAgIDE1MSwgMTE0LCA1MiwgMjQ5LCAyMjgsIDIyNCwgMSwgMTY0LCAyMjYsIDE1MSwgMTE0LCAxMjEsIDIxOSwgMTU3LCAyNDksIAotICAgIDIyOCwgMjI0LCAxLCAxNjQsIDIyNiwgMTUxLCAxMTQsIDEyMSwgNTIsIDI0OSwgMjI4LCAyMjQsIDEsIDE2NCwgMjI2LCAKLSAgICAxNTEsIDI0OSwgOTksIDIxOCwgMTQyLCAyMjYsIDE5LCA1LCAyMjYsIDE1MSwgMTE0LCAyNDUsIDM5LCAxNjQsIDIyNiwgCi0gICAgMTUxLCAxMTQsIDI0MSwgMjM1LCAyNDUsIDM5LCAxNjQsIDIyNiwgMTUxLCAxMTQsIDg1LCAyNDEsIDIzNCwgMjIyLCAxODksIAotICAgIDExNCwgODUsIDI0MSwgMjM1LCAyNTEsIDEyMSwgMjQ0LCA2MywgMjQxLCAyMzQsIDIyMiwgMTg5LCAyNDQsIDYzLCAyNDEsIAotICAgIDIzNSwgMjUxLCAxMjEsIDIzMSwgODcsIDQzLCAyMjYsIDgsIDIyNiwgMTUxLCAyMzEsIDg3LCA0NCwgMjI2LCA4LCAyMjYsIAotICAgIDE1MSwgMjMxLCA4NywgMjQ0LCA3MSwgNDMsIDIyNiwgOCwgMjI2LCAxNTEsIDIzMSwgODcsIDI0NCwgNzEsIDQ0LCAyMjYsIAotICAgIDgsIDIyNiwgMTUxLCAyMzEsIDg3LCAyMzMsIDQ4LCAyNTQsIDExOCwgMjUxLCAxNjYsIDIyNiwgMTUxLCAyMzEsIDg3LCAKLSAgICAyMjIsIDI1MCwgMjU0LCAxMTgsIDI1MSwgMTY2LCAyMjYsIDE1MSwgMTE0LCAyMzMsIDQ4LCAyNTQsIDExOCwgMjI0LCAxLCAKLSAgICAxNjQsIDIyNiwgMTUxLCAxMTQsIDIyMiwgMjUwLCAyNTQsIDExOCwgMjI0LCAxLCAxNjQsIDIyNiwgMTUxLCAxMTQsIDIzMywgCi0gICAgNDgsIDI1NCwgMTE4LCAyNTEsIDE2NiwgMjI2LCAxNTEsIDExNCwgMjIyLCAyNTAsIDI1NCwgMTE4LCAyNTEsIDE2NiwgMjI2LCAKLSAgICAxNTEsIDE5MywgNDMsIDIxNiwgNywgMjIwLCA1NSwgMjUxLCAxNjYsIDIyNiwgMTUxLCAxOTMsIDQ0LCAyMTYsIDcsIDIyMCwgCi0gICAgNTUsIDI1MSwgMTY2LCAyMjYsIDE1MSwgMjMxLCA4NywgNDMsIDI0OSwgMTA3LCAyNTEsIDE2NiwgMjI2LCAxNTEsIDIzMSwgCi0gICAgODcsIDQ0LCAyNDksIDEwNywgMjUxLCAxNjYsIDIyNiwgMTUxLCAyNDcsIDIxMiwgMTUyLCAzNywgMjEsIDExMSwgMjQ3LCAKLSAgICAyMTIsIDE1MiwgMzcsIDIxLCAxMDUsIDI0NywgMjEyLCAxNTIsIDM3LCAyMSwgMTU4LCAyNDcsIDIxMiwgMTUyLCAzNywgMjEsIAotICAgIDE2MSwgMjQ3LCAyMTIsIDE1MiwgMzcsIDIxLCAxOTAsIDI0NywgMjEyLCAxNTIsIDM3LCAyMSwgMTk1LCAyNDcsIDIxMiwgCi0gICAgMTUyLCAzNywgMjEsIDE5OSwgMjQ3LCAyMTIsIDE1MiwgMzcsIDIxLCAxOTYsIDI0NywgMjEyLCAxNTIsIDM3LCAyMSwgMjAxLCAKLSAgICAyNDcsIDIxMiwgMTUyLCAzNywgNTQsIDIxNiwgMjQ4LCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgMTExLCAyNDcsIDIxMiwgMzcsIAotICAgIDM1LCAyMSwgMTA1LCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgMTU4LCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgMTYxLCAyNDcsIAotICAgIDIxMiwgMzcsIDM1LCAyMSwgMTkwLCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgMTk1LCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgCi0gICAgMTk5LCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgMTk2LCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgMjAxLCAyNDcsIDIxMiwgMzcsIAotICAgIDM1LCA1NCwgMjE2LCAyNDgsIDI0NywgMjEyLCAxNTIsIDM3LCAzNSwgMjEsIDExMSwgMjQ3LCAyMTIsIDE1MiwgMzcsIDM1LCAKLSAgICAyMSwgMTA1LCAyNDcsIDIxMiwgMTUyLCAzNywgMzUsIDIxLCAxNTgsIDI0NywgMjEyLCAxNTIsIDM3LCAzNSwgMjEsIDE2MSwgCi0gICAgMjQ3LCAyMTIsIDE1MiwgMzcsIDM1LCAyMSwgMTkwLCAyNDcsIDIxMiwgMTUyLCAzNywgMzUsIDIxLCAxOTUsIDI0NywgMjEyLCAKLSAgICAxNTIsIDM3LCAzNSwgMjEsIDE5OSwgMjQ3LCAyMTIsIDE1MiwgMzcsIDM1LCAyMSwgMTk2LCAyNDcsIDIxMiwgMTUyLCAzNywgCi0gICAgMzUsIDIxLCAyMDEsIDI0NywgMjEyLCAxNTIsIDM3LCAzNSwgNTQsIDIxNiwgMjQ4LCAxMTQsIDIxMSwgMjQ2LCA5NywgNzUsIAotICAgIDExNCwgOTYsIDUwLCAxMTQsIDIzMCwgMTg3LCA1MCwgMTE0LCAyNDcsIDE3NywgNTAsIDExNCwgMjE5LCAzMCwgMjQ1LCAKLSAgICAyMjgsIDc1LCAxMTQsIDk3LCA3NSwgMTE0LCAyMjgsIDYxLCAyNDUsIDIyOCwgNzUsIDI0NiwgMTA2LCAyMjUsIDE0LCA5NywgCi0gICAgNzUsIDExNCwgMjIyLCAxODYsIDk3LCA3NSwgMjE1LCAyMjUsIDk3LCA3NSwgMTE0LCAyMTUsIDIyNSwgOTcsIDc1LCAyNDgsIAotICAgIDE2MywgMjE1LCAyMjUsIDk3LCA3NSwgMTE0LCAyNDgsIDE2MywgMjE1LCAyMjUsIDk3LCA3NSwgODUsIDk3LCA3NSwgMjE2LCAKLSAgICAxNDUsIDIxNiwgMTMsIDk3LCAyNTQsIDEsIDIxNiwgMTQ1LCAyNTEsIDE4MSwgOTcsIDI1NCwgMSwgODUsIDk3LCAyNTQsIDEsIAotICAgIDExNCwgODUsIDI0OSwgOTksIDI0NiwgMTEyLCAyMiwgOTcsIDc1LCAxMTQsIDg1LCAyNDksIDk5LCAyMTQsIDE1MywgMjIsIAotICAgIDk3LCA3NSwgMjE4LCAyMzMsIDg1LCA5NywgNzUsIDExNCwgMjQ5LCAyMTQsIDg1LCA5NywgNzUsIDIyMiwgMjQ5LCA3MSwgCi0gICAgOTcsIDc1LCAyMzMsIDQ3LCA3MSwgOTcsIDc1LCAyNTIsIDE5MSwgMjIwLCA5MywgNzEsIDk3LCA3NSwgMjQzLCAyNDksIAotICAgIDIyMCwgOTMsIDcxLCA5NywgNzUsIDExNCwgMjMyLCAxMTQsIDIyMiwgMjQ4LCA3MSwgOTcsIDc1LCAxMTQsIDIxNCwgMTYwLCAKLSAgICAyMjIsIDI0OCwgNzEsIDk3LCA3NSwgMjI4LCA1NCwgMjMyLCAxMTQsIDIyMiwgMjQ4LCA3MSwgOTcsIDc1LCAyNDksIDEwNywgCi0gICAgMjMyLCAxMjksIDIyOCwgNTQsIDIxNCwgMTYwLCAyMjIsIDI0OCwgNzEsIDk3LCA3NSwgMzcsIDExNCwgNzEsIDk3LCA3NSwgCi0gICAgMjExLCAyNTIsIDk3LCA3NSwgMjUxLCAyMjgsIDIxOSwgMzAsIDI0NSwgMjI4LCA3NSwgMjUxLCAyMjgsIDk3LCA3NSwgMjUxLCAKLSAgICAyMjgsIDIyOCwgNjEsIDI0NSwgMjI4LCA3NSwgMTE0LCAyNTEsIDIyOCwgMjE5LCAzMCwgMjQ1LCAyMjgsIDc1LCAxMTQsIAotICAgIDI1MSwgMjI4LCA5NywgNzUsIDExNCwgMjUxLCAyMjgsIDIyOCwgNjEsIDI0NSwgMjI4LCA3NSwgMjE3LCAxOCwgOTcsIDc1LCAKLSAgICAxMTQsIDIxNywgMTcsIDk3LCA3NSwgMjEyLCAxOCwgOTcsIDc1LCAxMTQsIDIxMiwgMTgsIDk3LCA3NSwgMjI2LCAxNzYsIAotICAgIDk3LCA3NSwgNTIsIDI0OSwgMTA3LCAyMzIsIDEyOSwgMTM0LCAyNDcsIDIyMiwgMjU0LCAxMTcsIDcxLCAyMTUsIDIyNywgCi0gICAgMjQ5LCAxOTUsIDQsIDcxLCAyMTUsIDIyNiwgMjI1LCAxNzQsIDIwNCwgMjE4LCA2NCwgMjA0LCAyMTgsIDIyLCA0MywgMjIyLCAKLSAgICA5MiwgMjUyLCAxODEsIDI0OCwgNjgsIDQ0LCAyMjIsIDkyLCAyNTIsIDE4MSwgMjQ4LCA2OCwgMTc3LCAyLCA1OSwgMjM1LCAKLSAgICAyMjIsIDIyMywgNTMsIDIxOSwgNDksIDIyNCwgMjA0LCAyMTgsIDY0LCAyMTgsIDIzLCAyMjQsIDIwNCwgMjE5LCA0OCwgNjcsIAotICAgIDI1MiwgMTQ5LCAyLCAyMDMsIDkxLCAxMSwgMjIyLCAyMzEsIDI0OCwgNiwgMjAwLCAyNDcsIDE3NiwgMTEsIDI0NCwgMTgzLCAKLSAgICAyNDgsIDYsIDkyLCAyMzIsIDE1MiwgMjU0LCAxMjYsIDkyLCAyMzIsIDE1MiwgMjI2LCAxNjIsIDcxLCAyNDgsIDEsIDIsIAotICAgIDI1MCwgMTgxLCAyNDcsIDEyOCwgMjIsIDIsIDI0NywgMTI4LCAyNDUsIDE3OCwgNjQsIDIyNiwgMTc0LCAyMTQsIDE1MiwgCi0gICAgMjMyLCAxMTQsIDQ0LCAyNDksIDE2OSwgMiwgMjQ3LCAxMjgsIDIxNCwgMTYwLCA0MywgMjQ5LCAxNjksIDIsIDI0NywgMTI4LCAKLSAgICA0MywgMjI2LCAxMzIsIDIzNSwgNzIsIDQ0LCAyMjYsIDEzMiwgMjM1LCA3MiwgMjQzLCAyMzYsIDIyNiwgMTMyLCAyMzUsIAotICAgIDcyLCAyMzMsIDkxLCAxMjAsIDIxNywgODgsIDIzMywgOTEsIDEyNCwgMjE3LCA4OCwgNDMsIDIyLCA0NCwgNTIsIDIxNSwgCi0gICAgOTMsIDQzLCAyMiwgNDQsIDIxNywgODgsIDQzLCAyMzAsIDkyLCAyMDAsIDQ0LCAyMTcsIDg4LCAyMDAsIDQzLCAyMTcsIDg4LCAKLSAgICAxMjAsIDIxNywgODksIDIsIDI1MCwgNDQsIDQ4LCAyMzIsIDExMSwgMjQ3LCAxODEsIDI1MSwgODYsIDIwMywgMjIyLCAxMzUsIAotICAgIDcxLCAyNDksIDIxMywgMjQ4LCAwLCA3MSwgMjQ5LCAyMTMsIDI0OCwgMSwgMiwgMTQwLCAyMTYsIDExNSwgNzEsIDI0OSwgCi0gICAgMjEzLCAyNDgsIDEsIDIsIDk3LCAyMTYsIDExNSwgNzEsIDQyLCAyLCAxNDAsIDIxNiwgMTE1LCA3MSwgNDIsIDIsIDk3LCAKLSAgICAyMTYsIDExNSwgMTEsIDQzLCA3MSwgNDIsIDEyNywgMTEsIDQ0LCA3MSwgNDIsIDEyNywgMTEsIDQzLCAyNTQsIDExOCwgCi0gICAgMTI3LCAxMSwgNDQsIDI1NCwgMTE4LCAxMjcsIDExLCA0MywgNTIsIDI1NCwgMTE4LCAxMjcsIDExLCA0NCwgNTIsIDI1NCwgCi0gICAgMTE4LCAxMjcsIDExLCA0MywgNzEsIDIxNiwgNywgMjIwLCA1NSwgMTI3LCAxMSwgNDQsIDcxLCAyMTYsIDcsIDIyMCwgNTUsIAotICAgIDEyNywgMTEsIDQzLCAyNDQsIDcxLCAyMjYsIDcsIDExLCA0NCwgMjQ0LCA3MSwgMjI2LCA3LCAyMTQsIDE1MywgMjI0LCAyNywgCi0gICAgNzUsIDI0NiwgMTEyLCAyMjQsIDI3LCA3NSwgMjU0LCA5NiwgMjQzLCAxMDUsIDI1MCwgNDQsIDc1LCAyNTAsIDEwLCAyNDMsIAotICAgIDEwNSwgMjUwLCA0NCwgNzUsIDQ0LCA4MCwgMiwgMzcsIDIyNSwgMjUsIDIwMCwgMTQwLCA3NSwgMjAwLCA5NywgNzUsIDIwMCwgCi0gICAgNDMsIDQ0LCA3NSwgMjAwLCAxNDAsIDUyLCA3NSwgMjAwLCA5NywgNTIsIDc1LCAyMDAsIDQzLCA0NCwgNTIsIDc1LCAyMDAsIAotICAgIDE0MCwgODAsIDI0MywgMjUxLCAxMzAsIDIwMCwgOTcsIDgwLCAyNDMsIDI1MSwgMTMwLCAyMDAsIDE0MCwgNTIsIDgwLCAKLSAgICAyNDMsIDI1MSwgMTMwLCAyMDAsIDk3LCA1MiwgODAsIDI0MywgMjUxLCAxMzAsIDIwMCwgOTcsIDIxOCwgMjMyLCA3NSwgNDYsIAotICAgIDQ3LCAyNTEsIDIyMywgNDYsIDQ3LCAyNDcsIDEyNSwgNDYsIDQ3LCAyNDYsIDI1MywgNDYsIDQ3LCAyNDcsIDEyNCwgNDYsIAotICAgIDQ3LCAyNDYsIDE4OSwgNDYsIDQ3LCAyNDcsIDYwLCA0NiwgNDcsIDI0NiwgMjUyLCA0NiwgNDcsIDI0NywgMTIzLCA0NiwgCi0gICAgNDcsIDI0NiwgMTU3LCA0NiwgNDcsIDI0NywgMjgsIDQ2LCA0NywgMjQ2LCAyMjAsIDQ2LCA0NywgMjQ3LCA5MSwgNDYsIDQ3LCAKLSAgICAyNDYsIDE4OCwgNDYsIDQ3LCAyNDcsIDU5LCA0NiwgNDcsIDI0NiwgMjUxLCA0NiwgNDcsIDI0NywgMTIyLCA0NiwgNDcsIAotICAgIDI0NiwgMTQxLCA0NiwgNDcsIDI0NywgMTIsIDQ2LCA0NywgMjQ2LCAyMDQsIDQ2LCA0NywgMjQ3LCA3NSwgNDYsIDQ3LCAKLSAgICAyNDYsIDE3MiwgNDYsIDQ3LCAyNDcsIDQzLCA0NiwgNDcsIDI0NiwgMjM1LCA0NiwgNDcsIDI0NywgMTA2LCA0NiwgNDcsIAotICAgIDI0NiwgMTU2LCA0NiwgNDcsIDI0NywgMjcsIDQ2LCA0NywgMjQ2LCAyMTksIDQ2LCA0NywgMjQ3LCA5MCwgNDYsIDQ3LCAKLSAgICAyNDYsIDE4NywgNDYsIDQ3LCAyNDcsIDU4LCA0NiwgNDcsIDI0NiwgMjUwLCA0NiwgNDcsIDI0NywgMTIxLCA0NiwgNDcsIAotICAgIDI0NiwgMTMzLCA0NiwgNDcsIDI0NywgNCwgNDYsIDQ3LCAyNDYsIDE5NiwgNDYsIDQ3LCAyNDcsIDY3LCA0NiwgNDcsIDI0NiwgCi0gICAgMTY0LCA0NiwgNDcsIDI0NywgMzUsIDQ2LCA0NywgMjQ2LCAyMjcsIDQ2LCA0NywgMjQ3LCA5OCwgNDYsIDQ3LCAyNDYsIAotICAgIDE0OCwgNDYsIDQ3LCAyNDcsIDE5LCA0NiwgNDcsIDI0NiwgMjExLCA0NiwgNDcsIDI0NywgODIsIDQ2LCA0NywgMjQ2LCAKLSAgICAxNzksIDQ2LCA0NywgMjQ3LCA1MCwgNDYsIDQ3LCAyNDYsIDI0MiwgNDYsIDQ3LCAyNDcsIDExMywgNDYsIDQ3LCAyNDYsIAotICAgIDE0MCwgNDYsIDQ3LCAyNDcsIDExLCA0NiwgNDcsIDI0NiwgMjAzLCA0NiwgNDcsIDI0NywgNzQsIDQ2LCA0NywgMjQ2LCAKLSAgICAxNzEsIDQ2LCA0NywgMjQ3LCA0MiwgNDYsIDQ3LCAyNDYsIDIzNCwgNDYsIDQ3LCAyNDcsIDEwNSwgNDYsIDQ3LCAyNDYsIAotICAgIDE1NSwgNDYsIDQ3LCAyNDcsIDI2LCA0NiwgNDcsIDI0NiwgMjE4LCA0NiwgNDcsIDI0NywgODksIDQ2LCA0NywgMjQ2LCAKLSAgICAxODYsIDQ2LCA0NywgMjQ3LCA1NywgNDYsIDQ3LCAyNDYsIDI0OSwgNDYsIDQ3LCAyNDcsIDEyMCwgNDYsIDQ3LCAyNDYsIAotICAgIDEyOSwgNDYsIDQ3LCAyNDcsIDAsIDQ2LCA0NywgMjQ2LCAxOTIsIDQ2LCA0NywgMjQ3LCA2MywgNDYsIDQ3LCAyNDYsIDE2MCwgCi0gICAgNDYsIDQ3LCAyNDcsIDMxLCA0NiwgNDcsIDI0NiwgMjIzLCA0NiwgNDcsIDI0NywgOTQsIDQ2LCA0NywgMjQ2LCAxNDQsIDQ2LCAKLSAgICA0NywgMjQ3LCAxNSwgNDYsIDQ3LCAyNDYsIDIwNywgNDYsIDQ3LCAyNDcsIDc4LCA0NiwgNDcsIDI0NiwgMTc1LCA0NiwgNDcsIAotICAgIDI0NywgNDYsIDQ2LCA0NywgMjQ2LCAyMzgsIDQ2LCA0NywgMjQ3LCAxMDksIDQ2LCA0NywgMjQ2LCAxMzYsIDQ2LCA0NywgCi0gICAgMjQ3LCA3LCA0NiwgNDcsIDI0NiwgMTk5LCA0NiwgNDcsIDI0NywgNzAsIDQ2LCA0NywgMjQ2LCAxNjcsIDQ2LCA0NywgMjQ3LCAKLSAgICAzOCwgNDYsIDQ3LCAyNDYsIDIzMCwgNDYsIDQ3LCAyNDcsIDEwMSwgNDYsIDQ3LCAyNDYsIDE1MSwgNDYsIDQ3LCAyNDcsIAotICAgIDIyLCA0NiwgNDcsIDI0NiwgMjE0LCA0NiwgNDcsIDI0NywgODUsIDQ2LCA0NywgMjQ2LCAxODIsIDQ2LCA0NywgMjQ3LCA1MywgCi0gICAgNDYsIDQ3LCAyNDYsIDI0NSwgNDYsIDQ3LCAyNDcsIDExNiwgNDYsIDQ3LCAyNDYsIDEzMiwgNDYsIDQ3LCAyNDcsIDMsIDQ2LCAKLSAgICA0NywgMjQ2LCAxOTUsIDQ2LCA0NywgMjQ3LCA2NiwgNDYsIDQ3LCAyNDYsIDE2MywgNDYsIDQ3LCAyNDcsIDM0LCA0NiwgNDcsIAotICAgIDI0NiwgMjI2LCA0NiwgNDcsIDI0NywgOTcsIDQ2LCA0NywgMjQ2LCAxNDcsIDQ2LCA0NywgMjQ3LCAxOCwgNDYsIDQ3LCAKLSAgICAyNDYsIDIxMCwgNDYsIDQ3LCAyNDcsIDgxLCA0NiwgNDcsIDI0NiwgMTc4LCA0NiwgNDcsIDI0NywgNDksIDQ2LCA0NywgCi0gICAgMjQ2LCAyNDEsIDQ2LCA0NywgMjQ3LCAxMTIsIDQ2LCA0NywgMjQ2LCAxMzksIDQ2LCA0NywgMjQ3LCAxMCwgNDYsIDQ3LCAKLSAgICAyNDYsIDIwMiwgNDYsIDQ3LCAyNDcsIDczLCA0NiwgNDcsIDI0NiwgMTcwLCA0NiwgNDcsIDI0NywgNDEsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMzMsIDQ2LCA0NywgMjQ3LCAxMDQsIDQ2LCA0NywgMjQ2LCAxNTQsIDQ2LCA0NywgMjQ3LCAyNSwgNDYsIDQ3LCAKLSAgICAyNDYsIDIxNywgNDYsIDQ3LCAyNDcsIDg4LCA0NiwgNDcsIDI0NiwgMTg1LCA0NiwgNDcsIDI0NywgNTYsIDQ2LCA0NywgCi0gICAgMjQ2LCAyNDgsIDQ2LCA0NywgMjQ3LCAxMTksIDQ2LCA0NywgMjQ2LCAxMjcsIDQ2LCA0NywgMjQ2LCAyNTQsIDQ2LCA0NywgCi0gICAgMjQ2LCAxOTAsIDQ2LCA0NywgMjQ3LCA2MSwgNDYsIDQ3LCAyNDYsIDE1OCwgNDYsIDQ3LCAyNDcsIDI5LCA0NiwgNDcsIAotICAgIDI0NiwgMjIxLCA0NiwgNDcsIDI0NywgOTIsIDQ2LCA0NywgMjQ2LCAxNDIsIDQ2LCA0NywgMjQ3LCAxMywgNDYsIDQ3LCAKLSAgICAyNDYsIDIwNSwgNDYsIDQ3LCAyNDcsIDc2LCA0NiwgNDcsIDI0NiwgMTczLCA0NiwgNDcsIDI0NywgNDQsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMzYsIDQ2LCA0NywgMjQ3LCAxMDcsIDQ2LCA0NywgMjQ2LCAxMzQsIDQ2LCA0NywgMjQ3LCA1LCA0NiwgNDcsIAotICAgIDI0NiwgMTk3LCA0NiwgNDcsIDI0NywgNjgsIDQ2LCA0NywgMjQ2LCAxNjUsIDQ2LCA0NywgMjQ3LCAzNiwgNDYsIDQ3LCAKLSAgICAyNDYsIDIyOCwgNDYsIDQ3LCAyNDcsIDk5LCA0NiwgNDcsIDI0NiwgMTQ5LCA0NiwgNDcsIDI0NywgMjAsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMTIsIDQ2LCA0NywgMjQ3LCA4MywgNDYsIDQ3LCAyNDYsIDE4MCwgNDYsIDQ3LCAyNDcsIDUxLCA0NiwgNDcsIAotICAgIDI0NiwgMjQzLCA0NiwgNDcsIDI0NywgMTE0LCA0NiwgNDcsIDI0NiwgMTMwLCA0NiwgNDcsIDI0NywgMSwgNDYsIDQ3LCAKLSAgICAyNDYsIDE5MywgNDYsIDQ3LCAyNDcsIDY0LCA0NiwgNDcsIDI0NiwgMTYxLCA0NiwgNDcsIDI0NywgMzIsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMjQsIDQ2LCA0NywgMjQ3LCA5NSwgNDYsIDQ3LCAyNDYsIDE0NSwgNDYsIDQ3LCAyNDcsIDE2LCA0NiwgNDcsIAotICAgIDI0NiwgMjA4LCA0NiwgNDcsIDI0NywgNzksIDQ2LCA0NywgMjQ2LCAxNzYsIDQ2LCA0NywgMjQ3LCA0NywgNDYsIDQ3LCAKLSAgICAyNDYsIDIzOSwgNDYsIDQ3LCAyNDcsIDExMCwgNDYsIDQ3LCAyNDYsIDEzNywgNDYsIDQ3LCAyNDcsIDgsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMDAsIDQ2LCA0NywgMjQ3LCA3MSwgNDYsIDQ3LCAyNDYsIDE2OCwgNDYsIDQ3LCAyNDcsIDM5LCA0NiwgNDcsIAotICAgIDI0NiwgMjMxLCA0NiwgNDcsIDI0NywgMTAyLCA0NiwgNDcsIDI0NiwgMTUyLCA0NiwgNDcsIDI0NywgMjMsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMTUsIDQ2LCA0NywgMjQ3LCA4NiwgNDYsIDQ3LCAyNDYsIDE4MywgNDYsIDQ3LCAyNDcsIDU0LCA0NiwgNDcsIAotICAgIDI0NiwgMjQ2LCA0NiwgNDcsIDI0NywgMTE3LCA0NiwgNDcsIDI0NiwgMTI4LCA0NiwgNDcsIDI0NiwgMjU1LCA0NiwgNDcsIAotICAgIDI0NiwgMTkxLCA0NiwgNDcsIDI0NywgNjIsIDQ2LCA0NywgMjQ2LCAxNTksIDQ2LCA0NywgMjQ3LCAzMCwgNDYsIDQ3LCAKLSAgICAyNDYsIDIyMiwgNDYsIDQ3LCAyNDcsIDkzLCA0NiwgNDcsIDI0NiwgMTQzLCA0NiwgNDcsIDI0NywgMTQsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMDYsIDQ2LCA0NywgMjQ3LCA3NywgNDYsIDQ3LCAyNDYsIDE3NCwgNDYsIDQ3LCAyNDcsIDQ1LCA0NiwgNDcsIAotICAgIDI0NiwgMjM3LCA0NiwgNDcsIDI0NywgMTA4LCA0NiwgNDcsIDI0NiwgMTM1LCA0NiwgNDcsIDI0NywgNiwgNDYsIDQ3LCAKLSAgICAyNDYsIDE5OCwgNDYsIDQ3LCAyNDcsIDY5LCA0NiwgNDcsIDI0NiwgMTY2LCA0NiwgNDcsIDI0NywgMzcsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMjksIDQ2LCA0NywgMjQ3LCAxMDAsIDQ2LCA0NywgMjQ2LCAxNTAsIDQ2LCA0NywgMjQ3LCAyMSwgNDYsIDQ3LCAKLSAgICAyNDYsIDIxMywgNDYsIDQ3LCAyNDcsIDg0LCA0NiwgNDcsIDI0NiwgMTgxLCA0NiwgNDcsIDI0NywgNTIsIDQ2LCA0NywgCi0gICAgMjQ2LCAyNDQsIDQ2LCA0NywgMjQ3LCAxMTUsIDQ2LCA0NywgMjQ2LCAxMzEsIDQ2LCA0NywgMjQ3LCAyLCA0NiwgNDcsIAotICAgIDI0NiwgMTk0LCA0NiwgNDcsIDI0NywgNjUsIDQ2LCA0NywgMjQ2LCAxNjIsIDQ2LCA0NywgMjQ3LCAzMywgNDYsIDQ3LCAKLSAgICAyNDYsIDIyNSwgNDYsIDQ3LCAyNDcsIDk2LCA0NiwgNDcsIDI0NiwgMTQ2LCA0NiwgNDcsIDI0NywgMTcsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMDksIDQ2LCA0NywgMjQ3LCA4MCwgNDYsIDQ3LCAyNDYsIDE3NywgNDYsIDQ3LCAyNDcsIDQ4LCA0NiwgNDcsIAotICAgIDI0NiwgMjQwLCA0NiwgNDcsIDI0NywgMTExLCA0NiwgNDcsIDI0NiwgMTM4LCA0NiwgNDcsIDI0NywgOSwgNDYsIDQ3LCAKLSAgICAyNDYsIDIwMSwgNDYsIDQ3LCAyNDcsIDcyLCA0NiwgNDcsIDI0NiwgMTY5LCA0NiwgNDcsIDI0NywgNDAsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMzIsIDQ2LCA0NywgMjQ3LCAxMDMsIDQ2LCA0NywgMjQ2LCAxNTMsIDQ2LCA0NywgMjQ3LCAyNCwgNDYsIDQ3LCAKLSAgICAyNDYsIDIxNiwgNDYsIDQ3LCAyNDcsIDg3LCA0NiwgNDcsIDI0NiwgMTg0LCA0NiwgNDcsIDI0NywgNTUsIDQ2LCA0NywgCi0gICAgMjQ2LCAyNDcsIDQ2LCA0NywgMjQ3LCAxMTgsIDk3LCAyMTUsIDU4LCA4MCwgMiwgNjcsIDkxLCA5NywgMjE1LCA1OCwgODAsIAotICAgIDIsIDUyLCA2NywgOTEsIDE0MCwgNTIsIDgwLCAyLCA2NywgOTEsIDk3LCA1MiwgODAsIDIsIDY3LCA5MSwgNDMsIDQ0LCA1MiwgCi0gICAgODAsIDIsIDY3LCA5MSwgOTcsIDIxNSwgNTgsIDgwLCAyNDMsIDI1MSwgMTMwLCAxNDAsIDUyLCA4MCwgMjQzLCAyNTEsIAotICAgIDEzMCwgOTcsIDUyLCA4MCwgMjQzLCAyNTEsIDEzMCwgMjQ2LCAxMTIsIDgwLCAyLCAyMDMsIDkxLCAyMTQsIDE1MywgODAsIAotICAgIDIsIDIwMywgOTEsIDIxNCwgMTUzLCAyMTUsIDIxMiwgNzUsIDI0NiwgMTEyLCAyMTUsIDIxMiwgNzUsIDE0MCwgNTIsIDI0OCwgCi0gICAgMTY1LCA3NSwgOTcsIDUyLCAyNDgsIDE2NSwgNzUsIDE0MCwgMjE1LCAyMTIsIDI0OCwgMTY1LCA3NSwgOTcsIDIxNSwgMjEyLCAKLSAgICAyNDgsIDE2NSwgNzUsIDk3LCAyMTUsIDU4LCAyMTUsIDIxMiwgMjQ4LCAxNjUsIDc1LCA5NywgODAsIDIsIDI0NiwgMTI2LCAKLSAgICAyMTgsIDE0MSwgMjE0LCAxNTMsIDgwLCAyMTYsIDQzLCAxMzAsIDI0NiwgMTEyLCA4MCwgMjE2LCA0MywgMTMwLCA5NywgODAsIAotICAgIDIsIDIxNywgNzksIDIsIDY3LCA5MSwgOTcsIDgwLCAyLCAyMTcsIDc5LCAyLCA1MiwgNjcsIDkxLCA5NywgMjE1LCA1OCwgCi0gICAgODAsIDIsIDIxNywgNzgsIDk3LCAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3OSwgMiwgNjcsIDkxLCA5NywgMjE1LCA1OCwgODAsIAotICAgIDIsIDIxNywgNzksIDIsIDUyLCA2NywgOTEsIDE0MCwgMjU0LCAzLCA5NywgMjU0LCAzLCAxNDAsIDUyLCAyNTQsIDMsIDk3LCAKLSAgICA1MiwgMjU0LCAzLCAxNDAsIDgwLCAyMTYsIDQzLCA4NSwgMjQ4LCAwLCA5NywgODAsIDIxNiwgNDMsIDg1LCAyNDgsIDAsIAotICAgIDE0MCwgODAsIDI0MywgMjUxLCAyNTIsIDE0OSwgMjE2LCA0MywgODUsIDI0OCwgMCwgOTcsIDgwLCAyNDMsIDI1MSwgMjUyLCAKLSAgICAxNDksIDIxNiwgNDMsIDg1LCAyNDgsIDAsIDIyOCwgNjEsIDIxMiwgOSwgMjIsIDIxOSwgMzAsIDI0NSwgMjI4LCA3NSwgCi0gICAgMjI4LCA2MSwgMjQ1LCAyMjgsIDIyLCAyMTksIDMwLCAyMTIsIDksIDc1LCAyMjgsIDYxLCAyMTIsIDksIDgwLCAyLCAxMDMsIAotICAgIDIyOCwgNjEsIDI0NSwgMjI4LCA4MCwgMiwgMTAzLCAyMTksIDMwLCAyNDUsIDIyOCwgODAsIDIsIDEwMywgMjE5LCAzMCwgCi0gICAgMjEyLCA5LCA4MCwgMiwgMTAzLCAyMjgsIDYxLCAyMTIsIDksIDgwLCAyMiwgMjI4LCA2MSwgMjQ1LCAyMjgsIDc1LCAyMjgsIAotICAgIDYxLCAyNDUsIDIyOCwgODAsIDIyLCAyMTksIDMwLCAyNDUsIDIyOCwgNzUsIDIxOSwgMzAsIDI0NSwgMjI4LCA4MCwgMjIsIAotICAgIDIxOSwgMzAsIDIxMiwgOSwgNzUsIDIxOSwgMzAsIDIxMiwgOSwgODAsIDIyLCAyMjgsIDYxLCAyMTIsIDksIDc1LCAyMjIsIAotICAgIDIzMSwgMjQ4LCA3LCAyNDksIDEzMywgMjQ0LCAxODMsIDI0OCwgNiwgMjQ0LCAxODMsIDI0OCwgNywgMjQ5LCAxMzMsIDIyMiwgCi0gICAgMjMxLCAyNDgsIDYsIDIxOSwgMzAsIDI0NSwgMjI4LCA4MCwgMjQ5LCAxMzMsIDIyOCwgNjEsIDI0NSwgMjI4LCA3NSwgMjI4LCAKLSAgICA2MSwgMjQ1LCAyMjgsIDgwLCAyNDksIDEzMywgMjE5LCAzMCwgMjQ1LCAyMjgsIDc1LCAyNDQsIDE4MywgMjQ4LCA3LCAyNDksIAotICAgIDEzMywgMjI4LCA2MSwgMjQ1LCAyMjgsIDc1LCAyMjIsIDIzMSwgMjQ4LCA3LCAyNDksIDEzMywgMjE5LCAzMCwgMjQ1LCAKLSAgICAyMjgsIDc1LCAyMjgsIDYxLCAyNDUsIDIyOCwgODAsIDI0OSwgMTMzLCAyMjgsIDYxLCAyMTIsIDksIDc1LCAyMjgsIDYxLCAKLSAgICAyMTIsIDksIDgwLCAyNDksIDEzMywgMjI4LCA2MSwgMjQ1LCAyMjgsIDc1LCAyMTIsIDM2LCA4MCwgMjI1LCAxMCwgMjQ3LCAKLSAgICAyMDMsIDIyMiwgMjU0LCA4MCwgMjI1LCAxMCwgOTcsIDIxNiwgMTg5LCAyNDksIDk4LCAyMTQsIDE1MiwgODAsIDIyNSwgMTAsIAotICAgIDk3LCAyMTYsIDE4OSwgMjQ5LCA5OCwgMjQ2LCAxMTEsIDgwLCAyMjUsIDEwLCAyNDYsIDExMiwgMjE2LCAxODksIDI0OSwgCi0gICAgOTgsIDIzMywgNDMsIDgwLCAyMjUsIDEwLCAyNDYsIDExMiwgMjE2LCAxODksIDI0OSwgOTgsIDIyMiwgMjQ0LCAyMjIsIAotICAgIDI0NywgMjU0LCAzNCwgMjUwLCAxMCwgNzUsIDIzMywgNDYsIDI1NCwgMzQsIDI1NCwgOTYsIDc1LCAyMTYsIDE1LCAyNTQsIAotICAgIDM0LCAyNTQsIDk2LCA3NSwgMjUxLCAxODMsIDI1NCwgMzQsIDI1NCwgOTYsIDc1LCAyMTYsIDE1LCAyNTQsIDM0LCAyNTAsIAotICAgIDEwLCA4MCwgMiwgMjMwLCAxODYsIDIxNiwgMTUsIDI1NCwgMzQsIDI1NCwgOTYsIDgwLCAyLCAyMjUsIDI1LCAyMzIsIDExNCwgCi0gICAgNDQsIDIyMCwgMTU0LCAyNTAsIDEwLCA3NSwgMjMyLCAxMTQsIDQzLCAyMjAsIDE1NCwgMjU0LCA5NiwgNzUsIDI1NCwgOTYsIAotICAgIDI1MCwgOCwgMjUwLCA0NCwgNzUsIDI1MCwgMTAsIDI1MCwgOCwgMjUwLCA0NCwgNzUsIDk3LCA4MCwgNzIsIDIxOSwgMjUzLCAKLSAgICAxNDAsIDc1LCAxNDAsIDgwLCA3MiwgMjE5LCAyNTMsIDk3LCA3NSwgMjE5LCAyNTMsIDk3LCA4MCwgNzIsIDE0MCwgNzUsIAotICAgIDk3LCA4MCwgMiwgOTYsIDUxLCAxNDAsIDgwLCAyLCA5NiwgNTEsIDk3LCA4MCwgMjE2LCAxNDAsIDIxMSwgMTc4LCA0MywgCi0gICAgNDQsIDgwLCAyMTYsIDE0MCwgNCwgMjUwLCA0MywgMjE0LCAxNTMsIDIxNSwgNTgsIDgwLCAyNDMsIDI1MSwgNCwgMjUwLCAKLSAgICA0MywgNDMsIDI1MiwgMTQ3LCAxMjAsIDQ0LCAyNTIsIDE0NywgMTI0LCAyNDIsIDUsIDQzLCAyNTIsIDE0NywgMTI0LCA0NCwgCi0gICAgMjUyLCAxNDcsIDEyMCwgMjQyLCA1LCAxMjAsIDI1MiwgMTQ3LCA0NCwgMTI0LCAyNTIsIDE0NywgNDMsIDI0MiwgNSwgMTIwLCAKLSAgICAyNTIsIDE0NywgNDMsIDEyNCwgMjUyLCAxNDcsIDQ0LCAyNDIsIDUsIDQzLCAyNTIsIDE0NywgMTIwLCA0NCwgMjUyLCAxNDcsIAotICAgIDEyMCwgMjQyLCA1LCAxMjAsIDI1MiwgMTQ3LCA0NCwgMTI0LCAyNTIsIDE0NywgNDQsIDI0MiwgNSwgNDMsIDI1MiwgMTQ3LCAKLSAgICAxMjQsIDQ0LCAyNTIsIDE0NywgMTI0LCAyNDIsIDUsIDEyMCwgMjUyLCAxNDcsIDQzLCAxMjQsIDI1MiwgMTQ3LCA0MywgCi0gICAgMjQyLCA1LCAxNDAsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDEyMCwgMjE2LCA0MywgMTMwLCA5NywgMjQyLCA2LCAyLCAyNTIsIAotICAgIDE0NywgMTIwLCAyMTYsIDQzLCAxMzAsIDIxNCwgMTUzLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCA0NCwgMjE2LCA0MywgMTMwLCAKLSAgICAyNDYsIDExMiwgMjQyLCA2LCAyLCAyNTIsIDE0NywgNDQsIDIxNiwgNDMsIDEzMCwgMTQwLCAyNDIsIDYsIDIsIDI1MiwgCi0gICAgMTQ3LCAxMjQsIDIxNiwgNDMsIDEzMCwgOTcsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDEyNCwgMjE2LCA0MywgMTMwLCAyMTQsIAotICAgIDE1MywgMjQyLCA2LCAyLCAyNTIsIDE0NywgNDMsIDIxNiwgNDMsIDEzMCwgMjQ2LCAxMTIsIDI0MiwgNiwgMiwgMjUyLCAKLSAgICAxNDcsIDQzLCAyMTYsIDQzLCAxMzAsIDE0MCwgMjQyLCA2LCAyLCAyNTIsIDE0NywgMTIwLCAyNDMsIDI1MSwgMTMwLCA5NywgCi0gICAgMjQyLCA2LCAyLCAyNTIsIDE0NywgMTIwLCAyNDMsIDI1MSwgMTMwLCAyMTQsIDE1MywgMjQyLCA2LCAyLCAyNTIsIDE0NywgCi0gICAgNDQsIDI0MywgMjUxLCAxMzAsIDI0NiwgMTEyLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCA0NCwgMjQzLCAyNTEsIDEzMCwgMTQwLCAKLSAgICAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAxMjQsIDI0MywgMjUxLCAxMzAsIDk3LCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAxMjQsIAotICAgIDI0MywgMjUxLCAxMzAsIDIxNCwgMTUzLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCA0MywgMjQzLCAyNTEsIDEzMCwgMjQ2LCAKLSAgICAxMTIsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDQzLCAyNDMsIDI1MSwgMTMwLCAxNDAsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIAotICAgIDEyMCwgNzIsIDE0MCwgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjQ2LCAxMTQsIDIxNCwgMTUzLCAyNDIsIDYsIDIsIDI1MiwgCi0gICAgMTQ3LCA0MywgMjUyLCAzOCwgMjE0LCAxNTMsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDIyMiwgMjU0LCA5NywgMjQyLCA2LCAyLCAKLSAgICAyNTIsIDE0NywgMTIwLCA3MiwgOTcsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDI0NiwgMTE0LCAyNDYsIDExMiwgMjQyLCA2LCAKLSAgICAyLCAyNTIsIDE0NywgNDMsIDI1MiwgMzgsIDI0NiwgMTEyLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyMjIsIDI1NCwgMTQwLCAKLSAgICAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAxMjAsIDcyLCA5NywgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjE0LCAxNjMsIDE0MCwgCi0gICAgMjQyLCA2LCAyLCAyNTIsIDE0NywgMTI0LCA3MiwgOTcsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDI0NiwgMTE0LCA5NywgMjQyLCAKLSAgICA2LCAyLCAyNTIsIDE0NywgMTIwLCA3MiwgMTQwLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyMTQsIDE2MywgOTcsIDI0MiwgNiwgCi0gICAgMiwgMjUyLCAxNDcsIDEyNCwgNzIsIDE0MCwgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjQ2LCAxMTQsIDE0MCwgMjQyLCA2LCAyLCAKLSAgICAyNTIsIDE0NywgMTIwLCA3MiwgMjAwLCAyNDgsIDE2NCwgMTQwLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAxMjQsIDI1MiwgNTEsIAotICAgIDIwMCwgMjQ4LCAxNjQsIDk3LCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAxMjAsIDcyLCAyMDAsIDI0OCwgMTY0LCA5NywgMjQyLCAKLSAgICA2LCAyLCAyNTIsIDE0NywgMTI0LCAyNTIsIDUxLCAyMDAsIDI0OCwgMTY0LCAyMTQsIDE1MywgMjQyLCA2LCAyLCAyNTIsIAotICAgIDE0NywgNDMsIDI1MiwgMzgsIDI0NiwgMTEyLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyMjIsIDI1NCwgMjQ2LCAxMTIsIDI0MiwgCi0gICAgNiwgMiwgMjUyLCAxNDcsIDQzLCAyNTIsIDM4LCAyMTQsIDE1MywgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjIyLCAyNTQsIDQ0LCAKLSAgICA1MiwgODAsIDIsIDIyMiwgMTg1LCAyNDEsIDI0MiwgMjQ1LCAxMDYsIDUsIDcyLCA5NywgNzUsIDIxNiwgOTAsIDIyNiwgCi0gICAgMTcyLCA3MiwgOTcsIDc1LCAxNDAsIDgwLCA3MiwgMjE2LCA5MCwgMjI2LCAxNzEsIDk3LCA4MCwgNzIsIDIxNiwgOTAsIAotICAgIDIyNiwgMTcxLCA5NywgODAsIDcyLCAyNTQsIDE1NiwgMTI4LCAxMTIsIDIzMywgMjEsIDcyLCAxNDAsIDc1LCAxNDAsIDgwLCAKLSAgICAyMTYsIDE0MCwgMjMzLCAyMCwgMjQyLCAxMzcsIDcyLCA5NywgNzUsIDIxOCwgNjUsIDcyLCA5NywgNzUsIDE0MCwgODAsIAotICAgIDIxNiwgMTQwLCAyMTgsIDY0LCAyMTgsIDIzLCA3MiwgMTQwLCA3NSwgNDMsIDI0NCwgOTksIDIxNywgNzgsIDQ0LCAyNDQsIAotICAgIDk5LCAyMTcsIDc4LCAxMjAsIDI0NCwgOTksIDIxNywgNzgsIDEyNCwgMjQ0LCA5OSwgMjE3LCA3OCwgMjE1LCAyMTIsIDY3LCAKLSAgICAyNTIsIDE0OSwgMjQ4LCA2OCwgMjEwLCAxNjAsIDE4OSwgMjE4LCAyNDQsIDIxMCwgMTYwLCAxODksIDIxNSwgNDksIDI0OSwgCi0gICAgMjM0LCA0MywgNzEsIDI0OSwgMTA3LCAxMjcsIDQ0LCA3MSwgMjQ5LCAxMDcsIDEyNywgNDMsIDcxLCAyMjYsIDcsIDQ0LCAKLSAgICA3MSwgMjI2LCA3LCAyMTAsIDE2MCwgMTg5LCA0MywgMjM2LCAyMiwgMTI3LCAyMTAsIDE2MCwgMTg5LCA0NCwgMjM2LCAyMiwgCi0gICAgMTI3LCAyMTAsIDE2MCwgMTg5LCA0MywgMjUxLCAyNTAsIDEyNywgMjEwLCAxNjAsIDE4OSwgNDQsIDI1MSwgMjUwLCAxMjcsIAotICAgIDQzLCA0MiwgMjUxLCAxNjYsIDIsIDIxNCwgMTgzLCA0NCwgNDIsIDI1MSwgMTY2LCAyLCAyMTQsIDE4MywgNDMsIDQyLCAKLSAgICAyNTEsIDE2NiwgMiwgMjE2LCAxMTYsIDIzNiwgNywgMjE2LCAxNSwgMjQ5LCAxNjgsIDQ0LCA0MiwgMjUxLCAxNjYsIDIsIAotICAgIDIxNiwgMTE2LCAyMzYsIDcsIDI1MSwgMTgzLCAyNDksIDE2OCwgNDMsIDQyLCAyNTEsIDE2NiwgMiwgMjE2LCAxMTYsIDIzNiwgCi0gICAgNywgMjUxLCAxODMsIDI0OSwgMTY4LCA0NCwgNDIsIDI1MSwgMTY2LCAyLCAyMTYsIDExNiwgMjM2LCA3LCAyMTYsIDE1LCAKLSAgICAyNDksIDE2OCwgNDMsIDI1NCwgMTE4LCAyNTEsIDE2NiwgMiwgMjQ3LCAxMjgsIDQ0LCAyNTQsIDExOCwgMjUxLCAxNjYsIDIsIAotICAgIDI0NywgMTI4LCA0MywgMjU0LCAzNCwgMjMzLCAyMSwgMTI3LCA0NCwgMjU0LCAzNCwgMjQyLCAxMzcsIDEyNywgNTIsIDQzLCAKLSAgICAyNTQsIDM0LCAyNDIsIDEzNywgMTI3LCA1MiwgNDQsIDI1NCwgMzQsIDIzMywgMjEsIDEyNywgNDMsIDg1LCAyMTYsIDcsIAotICAgIDIyMCwgNTUsIDEyNywgNDQsIDg1LCAyMTYsIDcsIDIyMCwgNTUsIDEyNywgMjQ2LCAxMjYsIDI0NCwgMTQzLCA2NywgMjEwLCAKLSAgICAzNSwgMjMyLCAyMTksIDIzMSwgOTMsIDI1NCwgMTE4LCAyMjYsIDE3NCwgMjMzLCA1MiwgNDQsIDI1NCwgMTE4LCAyMTQsIAotICAgIDEyLCAyLCAyMTgsIDIzNiwgMjMxLCA5MywgNDQsIDI1NCwgMTE4LCAyLCAyNDcsIDEyOCwgMjU0LCAxMTgsIDIsIDIyMiwgCi0gICAgOTQsIDIzNSwgMjIyLCAyNTUsIDEyLCAyNTQsIDExNywgMjE5LCAxLCAyNTQsIDExOCwgMjI2LCAxNzQsIDIzMywgNTIsIAotICAgIDIxOSwgMSwgMjU0LCAxMTgsIDIyNiwgMTc0LCAyMTQsIDE2MywgMjE1LCA5NCwgMjU0LCAxMTcsIDIyMywgNTIsIDI1NCwgCi0gICAgMTE3LCAyNTQsIDExOCwgMiwgMjE0LCAxODMsIDIyMywgNTIsIDI1NCwgMTE4LCAyLCAyMTQsIDE4MywgMjI2LCAyNTIsIAotICAgIDI1NCwgMTE4LCAyMjYsIDE3NCwgMjE0LCAxNjMsIDIyNiwgMjUyLCAyNTQsIDExOCwgMjI2LCAxNzQsIDI0NiwgMTE0LCAKLSAgICAyMzEsIDkzLCAyNTQsIDExOCwgMiwgMjA0LCAyNTQsIDEzLCAyNDUsIDE0OCwgMjM2LCA3LCA4MCwgMjI1LCAxMCwgMTIwLCAKLSAgICAyMiwgMjIyLCAyNTQsIDIzMSwgOTMsIDI1NCwgMTE4LCAyLCAyMDQsIDI1NCwgMTMsIDI0NSwgMTQ4LCAyMzYsIDcsIDgwLCAKLSAgICAyMjUsIDEwLCAxMjAsIDIyLCAyMzMsIDUyLCAyMzEsIDkzLCAyNTQsIDExOCwgMiwgMjA0LCAyNTQsIDEzLCAyNDUsIDE0OCwgCi0gICAgMjM2LCA3LCA4MCwgMjI1LCAxMCwgMTI0LCAyMiwgMjIyLCAyNTQsIDIzMSwgOTMsIDI1NCwgMTE4LCAyLCAyMDQsIDI1NCwgCi0gICAgMTMsIDI0NSwgMTQ4LCAyMzYsIDcsIDgwLCAyMjUsIDEwLCAxMjQsIDIyLCAyMzMsIDUyLCAyMzEsIDkzLCAyNTQsIDExOCwgCi0gICAgMiwgMjA0LCAyNTQsIDEzLCAyNDUsIDE0OCwgMjM2LCA3LCA4MCwgMjI1LCAxMCwgNDQsIDIyLCAyMTQsIDE2MywgMjMxLCAKLSAgICA5MywgMjU0LCAxMTgsIDIsIDIwNCwgMjU0LCAxMywgMjQ1LCAxNDgsIDIzNiwgNywgODAsIDIyNSwgMTAsIDQzLCAyMiwgCi0gICAgMjE0LCAxNjMsIDIzMSwgOTMsIDI1NCwgMTE4LCAyLCAyMDQsIDI1NCwgMTMsIDI0NSwgMTQ4LCAyMzYsIDcsIDgwLCAyMjUsIAotICAgIDEwLCA0NCwgMjIsIDI0NiwgMTE0LCAyMzEsIDkzLCAyNTQsIDExOCwgMiwgMjA0LCAyNTQsIDEzLCAyNDUsIDE0OCwgMjM2LCAKLSAgICA3LCA4MCwgMjI1LCAxMCwgNDMsIDIyLCAyNDYsIDExNCwgMjIzLCA1MiwgMjQ1LCAxNjAsIDIyMCwgMTI5LCAyNDUsIDE2MCwgCi0gICAgMjIwLCAxMzAsIDIsIDIyNiwgMTI3LCAyNDUsIDE2MCwgMjIwLCAxMzAsIDIsIDQsIDI1MCwgNDQsIDQ4LCAyNDUsIDE2MCwgCi0gICAgMjIwLCAxMzAsIDIsIDQ0LCA4MCwgNDgsIDI0NSwgMTYwLCAyMjAsIDEzMCwgMiwgNDMsIDgwLCA0OCwgMjUwLCA0NCwgMiwgCi0gICAgMjAzLCAxMzAsIDM3LCA2NywgMTMwLCAzNywgMjI2LCAxMSwgMzcsIDIyMywgNTMsIDIxOSwgNDgsIDM3LCAyMjUsIDE3NCwgCi0gICAgMjUwLCA0NCwgMjQ3LCAxODEsIDI1MSwgODYsIDIwMywgMjUyLCAxNDksIDIyLCAyMTYsIDE1LCAxNjMsIDI0NywgMTgxLCAKLSAgICAyNTEsIDg2LCA2NywgMTMwLCAyNTAsIDQ0LCAyLCAyMTgsIDI1LCAyMTEsIDE3OCwgMzcsIDI1NCwgOTUsIDI0NywgMTc3LCAKLSAgICA1MCwgMTIwLCA4MCwgMjE2LCAxNDAsIDI1MCwgNDMsIDM3LCA3MSwgMjUxLCAxMjEsIDM3LCAyNTEsIDEyMSwgMzcsIDIzMywgCi0gICAgMjAsIDM3LCAyNDIsIDEzNiwgMjUwLCA0NCwgMiwgNCwgMjUwLCA0NCwgMjE2LCA0MywgMjE2LCAxOTcsIDIyMiwgMjU0LCAKLSAgICAyNTAsIDQ0LCAyLCAxMTMsIDIwMywgMjE4LCA5MywgMjE2LCA0MywgMjE2LCAxOTcsIDIyMiwgMjU0LCA5MiwgMjIyLCAyMzEsIAotICAgIDI0OCwgNywgMjE5LCA5NywgOTIsIDI0NCwgMTgzLCAyNDgsIDcsIDIxOSwgOTcsIDkyLCAyNTMsIDIyNCwgOTIsIDQsIDI1MCwgCi0gICAgNDMsIDkyLCAyMTgsIDIzNiwgMTEzLCAyMzUsIDcxLCAyMTgsIDIzNCwgMjE1LCAyMjcsIDIsIDU5LCA0OCwgMjE1LCAyMjcsIAotICAgIDIsIDIxNCwgMTgzLCAyMjIsIDk0LCAyMzYsIDcsIDIxNSwgMjI2LCAyMTUsIDIyNywgMiwgMjIwLCAxMzYsIDI1MywgMjE1LCAKLSAgICAyNTEsIDE4MiwgNDQsIDIxNSwgMjI3LCA3MiwgNDMsIDIxNSwgMjI2LCA0MywgMjE1LCAyMjcsIDI1MiwgMzgsIDY3LCAxMzAsIAotICAgIDY3LCAyNTIsIDE0OSwgMjUyLCAzOCwgNDQsIDIxNSwgMjI2LCAyNTEsIDE3MywgMiwgNDMsIDE2MywgMjUxLCAyMjksIDI1MSwgCi0gICAgMTczLCAyLCA0NCwgMTYzLCAyNTEsIDIyOSwgODUsIDI1MSwgMTcyLCAzMCwgMiwgNDMsIDE2MywgMjUxLCAyMjksIDMwLCAyLCAKLSAgICA0NCwgMTYzLCAyNTEsIDIyOSwgNzEsIDI0MCwgMjQzLCA4NSwgMjQwLCAyNDMsIDQzLCAyMTEsIDI0NCwgMjQ0LCAxNDMsIAotICAgIDQ0LCAyMTEsIDI0NCwgMjQ0LCAxNDMsIDQzLCA1MiwgMjExLCAyNDQsIDI0NCwgMTQzLCA0NCwgNTIsIDIxMSwgMjQ0LCAKLSAgICAyNDQsIDE0MywgMjM1LCAyNTUsIDIzNSwgMjQxLCAyMTYsIDExMywgMTE1LCAyMzUsIDI0MSwgMjM1LCAyNDIsIDIyOSwgCi0gICAgMTA3LCAyLCA2NywgMTMwLCAyNDYsIDEyMCwgMjMwLCA5MiwgNDIsIDIsIDI0OSwgMTg5LCAyMjYsIDEzMSwgMjM1LCAyNTMsIAotICAgIDI1MywgMjQ1LCAyMTksIDIyMSwgMjI0LCAxODMsIDI0NSwgMTA2LCA1LCAyMiwgMjE5LCA5OSwgMjI2LCAxMSwgMjQ1LCAKLSAgICAxMDYsIDUsIDIyLCAyMTksIDk5LCAyMjYsIDEyLCAyLCAyMTYsIDkwLCA0OCwgMjQwLCAxMTEsIDIxNiwgNDMsIDIyLCAyMTksIAotICAgIDk5LCAyMjYsIDExLCAyNDIsIDE5MCwgMjE4LCAxNTcsIDIxNiwgMTg2LCAyNDYsIDExMywgMjE1LCAyMjcsIDIsIDQzLCAKLSAgICAxNjMsIDI1MSwgMjI5LCAyNDYsIDExMywgMjE1LCAyMjcsIDIsIDQ0LCAxNjMsIDI1MSwgMjI5LCA4NSwgMjQ4LCAxLCAyLCAKLSAgICAxMjQsIDc1LCA4NSwgMjMyLCAxMTAsIDcxLCAyNTAsIDQ0LCAyLCAxMjQsIDc1LCA4NSwgMjUwLCA0NCwgMiwgMTI0LCA3NSwgCi0gICAgMjQ1LCA5MywgNzEsIDIxOCwgMjM2LCAyNDUsIDkzLCA4NSwgMjE4LCAyMzYsIDI0NSwgOTMsIDcxLCAyNDgsIDAsIDI0NSwgCi0gICAgOTMsIDg1LCAyNDgsIDAsIDI0NSwgOTMsIDcxLCAyNTAsIDQzLCAyNDUsIDkzLCA4NSwgMjUwLCA0MywgMjIyLCAxMzQsIAotICAgIDIyMywgNTMsIDIxOSwgNDksIDIyNiwgMTcxLCAyMTksIDQ5LCAyLCAyMjYsIDEyNywgMjIzLCA1MywgMjE5LCA0OSwgMiwgCi0gICAgMjAzLCA5MSwgMjUyLCAxLCAyMTksIDQ4LCAyNTIsIDEsIDIyMywgNTMsIDIxOSwgNDgsIDUyLCAyMjUsIDI1LCAyMTUsIAotICAgIDIxMiwgMjI1LCAyNSwgMjMzLCA0OCwgMjQ5LCA5OSwgMjU0LCAxMTgsIDEyNywgMjIyLCAyNTAsIDI0OSwgOTksIDI1NCwgCi0gICAgMTE4LCAxMjcsIDIxNiwgNzksIDIzMCwgMTg0LCAyMzAsIDI5LCAzNywgNTksIDIyNiwgMTcxLCAyMzAsIDI5LCAzNywgOTYsIAotICAgIDIyNiwgMTcxLCAyMzAsIDI5LCAzNywgMzAsIDIyNiwgMTcxLCAyMzAsIDI5LCAyMTQsIDE3NiwgMjI2LCAxNzIsIDIsIDI0NywgCi0gICAgMTI4LCAyMzAsIDI5LCAyMTQsIDE3NiwgMjI2LCAxNzIsIDIsIDIyNSwgMjUsIDIzMCwgMjksIDQyLCAyMzUsIDIwNiwgMjI2LCAKLSAgICAxNzEsIDIzMCwgMjksIDQyLCAyMTQsIDE3NiwgMjI2LCAxNzEsIDExMywgMjMyLCAxNTIsIDIyLCAyMjYsIDE3MSwgMTEzLCAKLSAgICAyMzIsIDE1MiwgMTc3LCAyMjYsIDE3MSwgMjMwLCAyOSwgMzAsIDIyNiwgMTcxLCAyMzAsIDE1OSwgMTEzLCAyMTgsIDQ0LCAKLSAgICAyMTgsIDQyLCAyLCAyMzUsIDIxOCwgMjI0LCAyNywgMjM1LCAyMTksIDIyNiwgMTcxLCAyNDQsIDEwNywgMjI2LCAzLCAyMzUsIAotICAgIDIxOCwgMjM1LCAyMTksIDIsIDUyLCA5MSwgMjM1LCAyMTksIDI1MywgMTgxLCAyLCAyMTksIDk3LCAyNTAsIDQwLCAyNDMsIAotICAgIDIzMywgMjU0LCA5NiwgMjM1LCAyMTYsIDIzMiwgMjIwLCAyMzUsIDIxNywgMiwgMjIzLCAxMTgsIDIyNSwgMjQxLCAyNTQsIAotICAgIDEwLCAyMjUsIDQsIDIzMiwgMjIwLCAyMzUsIDIxNywgMiwgMjIwLCAxNTQsIDIyNSwgMjQxLCAyNTQsIDEwLCAyMjUsIDQsIAotICAgIDIzMiwgMjIwLCAyMzUsIDIxNywgMjI4LCA1NywgMjM2LCAxLCAyMTYsIDE5NywgMjI1LCA0LCAyMzUsIDIxOSwgMjU0LCAxMCwgCi0gICAgMTE2LCAyMjUsIDE0LCAyMjYsIDE3MSwgMjI0LCAyMSwgMjM1LCAyMTksIDIyNiwgMTcxLCAyMzUsIDIxOSwgMiwgMTQwLCAKLSAgICA4MCwgMiwgMTAzLCAyMzUsIDIxOSwgMiwgMzAsIDUwLCAyMzUsIDIxOSwgMiwgMjM1LCAyMDUsIDIzNSwgMjE5LCAyLCAyMTQsIAotICAgIDE3NSwgMjM1LCAyMTksIDIsIDIyNiwgMTI3LCAyMzUsIDIxOSwgMiwgMjE0LCAxODMsIDIzNSwgNzIsIDIzMywgOTEsIDQzLCAKLSAgICAyMTUsIDIyNywgMjI2LCAxNzEsIDIxMCwgMTYwLCAxODksIDIyMSwgMjAzLCAyNDksIDIxNywgMjEwLCAxNjAsIDE4OSwgCi0gICAgMjIxLCAyMDMsIDIyNSwgNTksIDIxMCwgMTYwLCAxODksIDIyMSwgMjAzLCAyMjQsIDE3OSwgOTYsIDUsIDIsIDQsIDI1MCwgCi0gICAgNDQsIDQ4LCA5NiwgNSwgMiwgMjUwLCAzOSwgMjU1LCAyNCwgNDgsIDk2LCA1LCAyLCAyMTYsIDkwLCA0OCwgOTYsIDUsIDIsIAotICAgIDU5LCA1MSwgOTYsIDUsIDIsIDIxNiwgOTAsIDUxLCA5NiwgNSwgMiwgMjE4LCA2NiwgMTA1LCA5NiwgNSwgMiwgODUsIDIxNSwgCi0gICAgMjI2LCAyMzAsIDE4NywgNSwgMiwgMjQ5LCAyMjgsIDQ4LCAyMzAsIDE4NywgNSwgMiwgNTksIDUxLCAyMzAsIDE4NywgNSwgCi0gICAgMiwgMjQ0LCAxODMsIDI0NywgMTI2LCAyMzAsIDE4NywgNSwgMiwgMjIyLCAyMzEsIDI0NywgMTI2LCA5NiwgNSwgMjM2LCA3LCAKLSAgICA0MywgMTYzLCAyNTAsIDQzLCA5NiwgNSwgMjM2LCA3LCA0NCwgMTYzLCAyNTAsIDQzLCAyMTMsIDI1NCwgMTc3LCAyNDksIAotICAgIDEzOSwgMjI0LCAxODMsIDIzMCwgODksIDUsIDIsIDU5LCA0OCwgMjMwLCA4OSwgNSwgMiwgMjE0LCAxODMsIDIyMCwgMTUxLCAKLSAgICAyMjQsIDE4NCwgMiwgMjUxLCAxODMsIDI1MCwgNywgMjE5LCA3OSwgMjI0LCAxODMsIDIzMCwgODksIDUsIDIzNiwgNywgNDMsIAotICAgIDE2MywgMjUwLCA0MywgMjMwLCA4OSwgNSwgMjM2LCA3LCA0NCwgMTYzLCAyNTAsIDQzLCAzNywgMjMwLCA4OSwgNSwgMiwgCi0gICAgMjUwLCAzOSwgMjU1LCAyMywgMjMwLCA4OSwgNSwgMjM2LCA3LCA1MiwgMjUwLCA0MywgMzcsIDI0NywgMTc3LCA1MCwgOTYsIAotICAgIDUsIDIzNiwgNywgMjE1LCAyMjYsIDIzMCwgMTg3LCA1LCAyMzYsIDcsIDIxNSwgMjI2LCAyMzAsIDg5LCA1LCAyMzYsIDcsIAotICAgIDIxNSwgMjI2LCAyMzUsIDIxMywgMjI0LCAxODMsIDIyMiwgMjQ1LCAyMzUsIDIxMywgMjI0LCAxODMsIDIxMCwgMTYwLCAKLSAgICAxODksIDIyMywgOTMsIDI0OSwgMjE3LCAyNTQsIDE0MiwgMTc3LCAyNDksIDE3MywgMjM1LCAyMDYsIDIsIDI0NywgMTI4LCAKLSAgICAyMTQsIDE3NiwgMiwgMjMwLCAxODcsIDUwLCAyMTQsIDE3NiwgMiwgMjI2LCAxMjcsIDIzNSwgMjA2LCAyLCAyMjYsIDEyNywgCi0gICAgMjM1LCAyMDYsIDIsIDIzMiwgMTUyLCAyNTQsIDEyNiwgMjE0LCAxNzYsIDIsIDIzMiwgMTUyLCAyMjYsIDE2MiwgMjE0LCAKLSAgICAxNzYsIDcyLCAyMzUsIDIwNSwgMjM1LCAyMDYsIDcyLCAyMTQsIDE3NSwgMjE0LCAxNzYsIDcyLCAyNTIsIDE0OSwgNzIsIAotICAgIDIzNSwgMjA1LCAyMzUsIDIwNiwgNzIsIDI1MiwgMTQ5LCA3MiwgMjE0LCAxNzUsIDIxNCwgMTc2LCAyNTIsIDM4LCAyMiwgCi0gICAgMjM1LCA3MSwgMiwgMjE0LCAxNzUsIDIzNSwgMjA2LCAyNTIsIDM4LCAyMiwgMjM1LCA3MSwgMiwgMjM1LCAyMDUsIDI1MCwgCi0gICAgOCwgMjE0LCAxNzYsIDIsIDIyMCwgMTM1LCAyNTAsIDgsIDIzNSwgMjA2LCAyLCAyMjAsIDEzNSwgNTIsIDQyLCAyMzUsIAotICAgIDIwNSwgNTIsIDQyLCAyMTQsIDE3NSwgMjUwLCA4LCAyMTQsIDE3NiwgMiwgMjIwLCAxMzYsIDIyLCAyMTksIDc5LCAyMjQsIAotICAgIDE4MywgMjMyLCAxNTIsIDIyLCAyLCA1OSwgNDgsIDIzMiwgMTUyLCAxNzcsIDIsIDU5LCA0OCwgNTIsIDIzMiwgMTUyLCAKLSAgICAyNTQsIDEyNiwgNTIsIDIzMiwgMTUyLCAyMjYsIDE2MiwgMTEzLCAyMzUsIDIwNywgMjMyLCAxNTIsIDI1NCwgMTI2LCAxMTMsIAotICAgIDIzNSwgMjA3LCAyMzIsIDE1MiwgMjI2LCAxNjIsIDIxOSwgODcsIDIzMywgOTEsIDIyNiwgMTYyLCAyMTksIDg3LCAyMzMsIAotICAgIDkxLCAyNTQsIDEyNiwgMjMyLCAxNTIsIDE3NywgMjI2LCAxMjUsIDIzMiwgMTUyLCAyNTQsIDEyNiwgMjMyLCAxNTIsIDIyLCAKLSAgICAyLCAyMzAsIDIyOSwgMjE4LCAxNDEsIDIzMiwgMTUyLCAxNzcsIDIsIDIzMCwgMjI5LCAyMTgsIDE0MSwgMjMyLCAxNTIsIAotICAgIDIyLCAyLCAyMDMsIDI0OCwgMTY0LCAyMzIsIDE1MiwgMTc3LCAyLCAyMDMsIDI0OCwgMTY0LCAyMzIsIDE1MiwgMjIsIDIsIAotICAgIDUyLCAyMjYsIDEyNywgMjMyLCAxNTIsIDIyLCAyLCAyMTQsIDE4MywgMjMyLCAxNTIsIDIyLCAyLCA1MiwgMjE0LCAxODMsIAotICAgIDQsIDIxMywgMjUxLCAyLCAyMTQsIDE4MywgMjMyLCAxNTIsIDE3NywgMiwgNTIsIDIyNiwgMTI3LCAyMzIsIDE1MiwgMTc3LCAKLSAgICAyLCA1MiwgMjE0LCAxODMsIDIxMCwgMTYwLCAxODksIDI0NywgMTM3LCAyNTQsIDg3LCAyMTAsIDE2MCwgMTg5LCAyMjMsIAotICAgIDE1MSwgMjU0LCA4NywgMjQ1LCAxMDYsIDUsIDIsIDU5LCA1MSwgMjQwLCAxMTEsIDIsIDU5LCA0OCwgMjE1LCAyMTIsIDIwMywgCi0gICAgMjUyLCAxNDksIDIsIDUyLCA2NywgOTEsIDIxNSwgMjEyLCAyMDMsIDI1MiwgMTQ5LCAyLCAyMTUsIDIxMiwgNjcsIDkxLCAKLSAgICAyMTYsIDkwLCAyMjYsIDE3MiwgMiwgNTksIDQ4LCAyMTYsIDkwLCAyMjYsIDE3MiwgMiwgMjIyLCAyMzEsIDI0NywgMTI2LCAKLSAgICAyMTksIDE2NCwgMjMwLCAxODcsIDIxOSwgMTYzLCAyNDksIDIwNywgMiwgNTksIDQ4LCAyNDUsIDEwNiwgMiwgMjUzLCAyMjQsIAotICAgIDI1NCwgMTU2LCAxMjgsIDIxNiwgNDMsIDIsIDI1MCwgMzksIDI1NSwgMjMsIDI1NCwgNTYsIDEyOCwgMTc3LCAxMjgsIDExMiwgCi0gICAgMjQ1LCAxMDYsIDUsIDcyLCA5NiwgNTAsIDk2LCA1LCA3MiwgMjQ1LCAxMDYsIDUwLCAyNDUsIDEwNiwgNSwgNzIsIDIxNiwgCi0gICAgOTAsIDIyNiwgMTcxLCA1MiwgMjQ5LCAyMzUsIDI0NSwgMTA3LCAxMTMsIDI0OSwgMjAyLCAyNDUsIDEwNiwgMjE5LCAxNzgsIAotICAgIDEzNCwgMjQ5LCAyMDIsIDI0NSwgMTA2LCAyMTksIDE3OCwgMjQ1LCAxMDYsIDUsIDIsIDExMywgMTcwLCA3MiwgMjIsIDExMywgCi0gICAgMTcwLCA1MSwgMjQ1LCAxMDIsIDIsIDI0NCwgMTksIDE3MCwgNDgsIDIzMywgMjEsIDIsIDI1MCwgNDQsIDIzNSwgMjIyLCAKLSAgICAyNDIsIDEzNywgMiwgMjUwLCA0NCwgMjM1LCAyMjIsIDIzMywgMjEsIDIsIDIyNCwgMTYsIDE2NCwgNDgsIDI0MiwgMTM3LCAKLSAgICAyLCAyMjQsIDE2LCAxNjQsIDQ4LCAyMzMsIDIxLCAxNzcsIDIxOSwgOTksIDEyOCwgMTEyLCAyNDIsIDEzNywgMTc3LCAyMTksIAotICAgIDk5LCAxMjgsIDExMiwgMjMzLCAyMSwgMTc3LCAyMTksIDk5LCAxMjgsIDIxNiwgNDMsIDIsIDU5LCAyMzUsIDIyMiwgMjQyLCAKLSAgICAxMzcsIDE3NywgMjE5LCA5OSwgMTI4LCAyMTYsIDQzLCAyLCA1OSwgMjM1LCAyMjIsIDIzMywgMjEsIDE3NywgMjE5LCA5OSwgCi0gICAgMTI4LCAyMTYsIDQzLCAyLCA1OSwgNDgsIDI0MiwgMTM3LCAxNzcsIDIxOSwgOTksIDEyOCwgMjE2LCA0MywgMiwgNTksIDQ4LCAKLSAgICAyMzMsIDIxLCAxNzcsIDIxOSwgOTksIDEyOCwgMjE2LCA0MywgMiwgNTksIDcyLCAyMjIsIDI1NCwgMjQyLCAxMzcsIDE3NywgCi0gICAgMjE5LCA5OSwgMTI4LCAyMTYsIDQzLCAyLCA1OSwgNzIsIDIzMywgNTIsIDIzMywgMjEsIDE3NywgMjU0LCA1NywgMjQyLCAKLSAgICAxMzcsIDE3NywgMjU0LCA1NywgMjMzLCAyMSwgMjIsIDIxOSwgMTU1LCAyMjgsIDU3LCAxMjgsIDExMiwgMjQyLCAxMzcsIAotICAgIDIyLCAyMTksIDE1NSwgMjI4LCA1NywgMTI4LCAxMTIsIDIzMywgMjEsIDIyLCAyMjgsIDU3LCAyNTQsIDU3LCAyNDIsIDEzNywgCi0gICAgMjIsIDIyOCwgNTcsIDI1NCwgNTcsIDIzMywgMjEsIDcyLCAyNDYsIDExOSwgMTI4LCA3MiwgMjQyLCAxMzYsIDI0MiwgMTM3LCAKLSAgICA3MiwgMjQ2LCAxMTksIDEyOCwgNzIsIDIzMywgMjAsIDIzMywgMjEsIDcyLCAyMTksIDE2NCwgMTc3LCAyNDUsIDEwNywgCi0gICAgMjQyLCAxMzcsIDcyLCAyMTksIDE2NCwgMTc3LCAyNDUsIDEwNywgMjMzLCAyMSwgNzIsIDIxOSwgMTY0LCA3MiwgMjQyLCAKLSAgICAxMzYsIDI0MiwgMTM3LCA3MiwgMjE5LCAxNjQsIDcyLCAyMzMsIDIwLCAyMzMsIDIxLCA3MiwgMjQyLCAxMzcsIDcyLCAyNDYsIAotICAgIDExOSwgMjQ1LCAxMDcsIDI0MiwgMTM3LCA3MiwgMjMzLCAyMSwgNzIsIDI0NiwgMTE5LCAyNDUsIDEwNywgMjMzLCAyMSwgCi0gICAgNzIsIDIxOSwgOTksIDEyOCwgNzIsIDI0MiwgMTM3LCA3MiwgMjE5LCA5OSwgMjQ1LCAxMDcsIDI0MiwgMTM3LCA3MiwgMjE5LCAKLSAgICA5OSwgMTI4LCA3MiwgMjMzLCAyMSwgNzIsIDIxOSwgOTksIDI0NSwgMTA3LCAyMTksIDk5LCAxMjgsIDIxNiwgNDMsIDE3NywgCi0gICAgMjMzLCAyMCwgMjE5LCA5OSwgMTI4LCAyMTYsIDQzLCAxNzcsIDI0MiwgMTM2LCAyMTksIDk5LCAxMjgsIDIxNiwgNDMsIAotICAgIDE3NywgMjMzLCAyMSwgMiwgNTksIDIzNSwgMjIyLCAyMTksIDk5LCAxMjgsIDIxNiwgNDMsIDE3NywgMjQyLCAxMzcsIDIsIAotICAgIDU5LCAyMzUsIDIyMiwgMjQ2LCAxMTksIDEyOCwgMjE2LCA0MywgMTc3LCAyMzMsIDIwLCAyNDYsIDExOSwgMTI4LCAyMTYsIAotICAgIDQzLCAxNzcsIDI0MiwgMTM2LCAyNDYsIDExOSwgMjE5LCA5OSwgMTI4LCAyMTYsIDQzLCAxNzcsIDIzMywgMjAsIDI0NiwgCi0gICAgMTE5LCAyMTksIDk5LCAxMjgsIDIxNiwgNDMsIDE3NywgMjQyLCAxMzYsIDIxOSwgMTY0LCAxNzcsIDIzMywgMjAsIDIxOSwgCi0gICAgMTY0LCAxNzcsIDI0MiwgMTM2LCAyMTksIDE2NCwgNzIsIDIzMywgMjEsIDcyLCAyNDUsIDEwNiwgNTAsIDIxOSwgMTY0LCAKLSAgICA3MiwgMjQyLCAxMzcsIDcyLCAyNDUsIDEwNiwgNTAsIDUyLCAyMjksIDk2LCAyMzMsIDIwLCA1MiwgMjI5LCA5NiwgMjQyLCAKLSAgICAxMzYsIDUyLCAyMjksIDk2LCAyMzMsIDIxLCAyLCAyMTQsIDE4MywgMjQyLCAxMzcsIDIyNiwgMTI1LCAyMzMsIDIwLCAyNDIsIAotICAgIDEzNywgMjUyLCAzOCwgMjMzLCAyMCwgMjMzLCAyMSwgMjUwLCA4LCAyNTEsIDg2LCAyNDksIDEwMCwgMjQyLCAxMzcsIDI1MCwgCi0gICAgOCwgMjUxLCA4NiwgMjQ5LCAxMDAsIDIzMywgMjEsIDI1MCwgOCwgMjUxLCA4NiwgMjQ5LCAxMDEsIDcyLCAyMTksIDk5LCAKLSAgICAyNDUsIDEwNywgMjQyLCAxMzcsIDI1MCwgOCwgMjUxLCA4NiwgMjQ5LCAxMDEsIDcyLCAyMTksIDk5LCAyNDUsIDEwNywgCi0gICAgMjE5LCA4MCwgMjE2LCAyMDEsIDIzMywgODksIDIxNiwgMjAxLCAyMTksIDgwLCAyMTYsIDIwMiwgMTc3LCAxMjgsIDExMiwgCi0gICAgMjMzLCA4OSwgMjE2LCAyMDIsIDE3NywgMTI4LCAxMTIsIDI0NSwgMTA2LCA1LCAyLCAyNTEsIDExNiwgNDgsIDIyNCwgMjA2LCAKLSAgICA3MiwgMjE5LCAxNTUsIDI0NSwgMTA2LCA1MCwgMjE4LCA1NywgNzIsIDIxOSwgMTU1LCAyNDUsIDEwNiwgNTAsIDIyNCwgCi0gICAgMjA2LCA3MiwgMjE5LCAxNTUsIDIyOCwgNTcsIDEyOCwgMTEyLCAyMTgsIDU3LCA3MiwgMjE5LCAxNTUsIDIyOCwgNTcsIAotICAgIDEyOCwgMTEyLCAyMjQsIDIwNiwgNzIsIDI0NSwgMTA2LCA1MCwgMjE4LCA1NywgNzIsIDI0NSwgMTA2LCA1MCwgMjI0LCAKLSAgICAyMDYsIDcyLCAyMjgsIDU3LCAxMjgsIDExMiwgMjE4LCA1NywgNzIsIDIyOCwgNTcsIDEyOCwgMTEyLCAyMjQsIDIwNiwgNzIsIAotICAgIDI1NCwgMTU2LCAxMjgsIDExMiwgMjE4LCA1NywgNzIsIDI1NCwgMTU2LCAxMjgsIDExMiwgMjI0LCAyMDYsIDcyLCAyMjgsIAotICAgIDU3LCAyNTQsIDE1NiwgMTI4LCAxMTIsIDIxOCwgNTcsIDcyLCAyMjgsIDU3LCAyNTQsIDE1NiwgMTI4LCAxMTIsIDUyLCAKLSAgICAyMjQsIDIwNSwgNTIsIDIxOCwgNTYsIDIxOCwgNjUsIDIsIDI0NywgMTI4LCAyMTgsIDIzLCAyLCAyNDcsIDEyOCwgMjE4LCAKLSAgICA2NSwgMiwgOTYsIDUsIDUxLCAyMTgsIDIzLCAyLCA5NiwgNSwgNTEsIDIxOCwgNjUsIDIsIDIzMCwgODksIDUsIDUxLCAyMTgsIAotICAgIDIzLCAyLCAyMzAsIDg5LCA1LCA1MSwgMjE4LCA2NSwgNjQsIDE3NywgMTI4LCAyMTYsIDQzLCAyLCA1OSwgNDgsIDIxOCwgCi0gICAgMjMsIDY0LCAxNzcsIDEyOCwgMjE2LCA0MywgMiwgNTksIDQ4LCAyMTgsIDY1LCA2NCwgNzIsIDI0NSwgMTA2LCA1MCwgMjE4LCAKLSAgICAyMywgNjQsIDcyLCAyNDUsIDEwNiwgNTAsIDIxOCwgNjUsIDY0LCA3MiwgMjE2LCA5MCwgMjI2LCAxNzEsIDIxOCwgMjMsIAotICAgIDY0LCA3MiwgMjE2LCA5MCwgMjI2LCAxNzEsIDIxOCwgNjUsIDY0LCA3MiwgMjU0LCAxNTYsIDEyOCwgMTEyLCAyMTgsIDIzLCAKLSAgICA2NCwgNzIsIDI1NCwgMTU2LCAxMjgsIDExMiwgMjE4LCA2NSwgNjQsIDcyLCAyMjgsIDU3LCAxMjgsIDExMiwgMjE4LCAyMywgCi0gICAgNjQsIDcyLCAyMjgsIDU3LCAxMjgsIDExMiwgNDIsIDQzLCAyMDQsIDkzLCAyMjYsIDE3MSwgNDIsIDQ0LCAyMDQsIDkzLCAKLSAgICAyMjYsIDE3MSwgMjUwLCA4LCAyMTgsIDY0LCAyNTAsIDgsIDIxOCwgMjIsIDI1MCwgOCwgMjE4LCA2NSwgMTc3LCAxMjgsIAotICAgIDExMiwgMjUwLCA4LCAyMTgsIDIzLCAxNzcsIDEyOCwgMTEyLCAyMTgsIDY1LCA3MiwgMjE4LCAyMiwgMjE4LCAyMywgNzIsIAotICAgIDIxOCwgNjQsIDIxOCwgNjUsIDcyLCAyMTgsIDY0LCAyMTgsIDIzLCA3MiwgMjE4LCAyMiwgMjE4LCAyMywgMjUyLCAzOCwgCi0gICAgMjE4LCA2NCwgMjE4LCAyMywgMjUyLCAzOCwgMjIsIDIzNSwgNzEsIDI1MSwgODYsIDI0OCwgMTY1LCAyLCAyMTgsIDY0LCAKLSAgICAyNDUsIDE3OCwgNjQsIDIyNiwgMTc0LCAyNDYsIDExMSwgMjI1LCA1MSwgMiwgMjE3LCAxMywgMjE2LCAxNCwgMjE1LCAyNDEsIAotICAgIDIzNSwgMjA1LCAyNDQsIDI5LCAyMjgsIDcwLCAyMTksIDI1MywgNDMsIDIxNywgODgsIDIxOSwgMjUzLCAxMjQsIDIxNywgCi0gICAgODgsIDIxOSwgMjUzLCAxMjAsIDIxNywgODgsIDIyNSwgMTc1LCAyLCAyMjIsIDkzLCA2NywgMjUyLCAxNDksIDIxNSwgMjEyLCAKLSAgICA0NCwgMjE1LCA5MywgNTIsIDY3LCAyNTIsIDE0OSwgNDMsIDIxNSwgOTMsIDY3LCAyNTIsIDE0OSwgNTIsIDQzLCAyMTUsIAotICAgIDkzLCA1MiwgNjcsIDI1MiwgMTQ5LCA1MiwgNDMsIDIxNSwgOTMsIDIwMCwgMjQ4LCAxNjUsIDI0MywgMjUxLCA0MywgMjMxLCAKLSAgICA2OCwgNjQsIDUyLCAyMTMsIDIzOSwgMjE5LCAyNTMsIDEyNCwgMjE3LCA4OSwgMiwgMjI2LCAxMjcsIDIxOSwgMjUzLCAxMjAsIAotICAgIDIxNywgODksIDIsIDIxNCwgMTgzLCAyMTksIDI1MywgMTIwLCAyMTcsIDg5LCA3MiwgMjE5LCAyNTMsIDEyNCwgMjE3LCA4OCwgCi0gICAgNTIsIDEyNCwgMjE3LCA4OCwgNTIsIDEyMCwgMjE3LCA4OCwgNTIsIDIxOCwgMTA1LCAyMjgsIDU3LCA1MCwgMjIzLCA1MiwgCi0gICAgNTIsIDIxOCwgMTA1LCAyMjgsIDU3LCA1MCwgMjQ3LCAxNDYsIDIyOCwgNTcsIDI0NywgMTgzLCAyLCAyMjMsIDUyLCAyMjksIAotICAgIDEwNiwgMjE5LCA5NywgNjcsIDIzMiwgMjIwLCAyLCAyNTAsIDQ0LCA0OCwgNjcsIDIzMiwgMjIwLCAyLCAyNTAsIDQ0LCA1MSwgCi0gICAgMTI0LCAyMTcsIDg5LCAyLCAyNTAsIDQ0LCA1MSwgMjI2LCAxMiwgMiwgMjAzLCA5MSwgMjI2LCAxMiwgMiwgMjE2LCA5MCwgCi0gICAgMjI2LCAxNzEsIDIxNSwgMjEyLCA2NywgMjUyLCAxNDksIDI1MSwgMjUyLCAyMjMsIDk0LCAyMTUsIDIxMiwgNjcsIDI1MiwgCi0gICAgMTQ5LCAyLCAyMDMsIDkxLCAyMTUsIDIxMiwgMjQ5LCAyMzUsIDIyNiwgMTcxLCAyMTUsIDIxMiwgMjI5LCA5NiwgMjMzLCAKLSAgICAyMCwgMjE1LCAyMTIsIDIyOSwgOTYsIDI0MiwgMTM2LCAyNDYsIDExOSwgMjE5LCA5OSwgMjMzLCAyMSwgMTc3LCAxMjgsIAotICAgIDExMiwgMjQ2LCAxMTksIDIxOSwgOTksIDI0MiwgMTM3LCAxNzcsIDEyOCwgMTEyLCAyMTUsIDIxMiwgMjE5LCA0OSwgMjUxLCAKLSAgICAyNTIsIDIyMywgOTQsIDIzMywgOTEsIDIxNSwgMjEyLCA2NywgMjUyLCAxNDksIDIyNiwgMTcxLCA1MiwgMjE5LCA0OSwgCi0gICAgMjI2LCAxNzEsIDcxLCA2NywgMTMwLCAyMzAsIDI5LCA3MSwgNjcsIDEzMCwgMjI4LCA2MSwgMjQ1LCAyMjgsIDcxLCA3NSwgCi0gICAgMjI4LCA2MSwgMjEyLCA5LCA3MSwgNzUsIDIxOSwgMzAsIDI0NSwgMjI4LCA3MSwgNzUsIDIxOSwgMzAsIDIxMiwgOSwgNzEsIAotICAgIDc1LCA0MywgNDQsIDcxLCA3NSwgMTQwLCA4NSwgNzUsIDIxNCwgMTUzLCA4NSwgNzUsIDI0NiwgMTEyLCA4NSwgNzUsIDIyOCwgCi0gICAgNjEsIDI0NSwgMjI4LCA4NSwgNzUsIDIyOCwgNjEsIDIxMiwgOSwgODUsIDc1LCAyMTksIDMwLCAyNDUsIDIyOCwgODUsIDc1LCAKLSAgICAyMTksIDMwLCAyMTIsIDksIDg1LCA3NSwgNDMsIDQ0LCA4NSwgNzUsIDEyMCwgMTI0LCA4NSwgNzUsIDk3LCA4MCwgMiwgCi0gICAgMjE2LCA3OCwgMjQ2LCAxMTEsIDk3LCA4MCwgMiwgMjE2LCA3OCwgMjE0LCAxNTIsIDE0MCwgODAsIDIsIDIxNiwgNzgsIAotICAgIDI0NiwgMTExLCAxNDAsIDgwLCAyLCAyMTYsIDc4LCAyMTQsIDE1MiwgNDIsIDIsIDIxNiwgMTUsIDE2MywgMjUxLCAyMjksIAotICAgIDQyLCAyLCAyNTEsIDE4MywgMTYzLCAyNTEsIDIyOSwgNDIsIDIsIDIxNCwgMTYwLCA0NCwgMjQ4LCA3LCAxNjMsIDI1MSwgCi0gICAgMjI5LCA0MiwgMiwgMjMyLCAxMTQsIDQzLCAyNDgsIDcsIDE2MywgMjUxLCAyMjksIDI0OCwgMSwgMiwgNDMsIDE2MywgMjUxLCAKLSAgICAyMjksIDI0OCwgMSwgMiwgNDQsIDE2MywgMjUxLCAyMjksIDI0OCwgMSwgMiwgMjE2LCAxNSwgMTYzLCAyNTEsIDIyOSwgCi0gICAgMjQ4LCAxLCAyLCAyNTEsIDE4MywgMTYzLCAyNTEsIDIyOSwgMjQ2LCAxMjYsIDIxOCwgMjM2LCA4NSwgMjMzLCA5MSwgMjE4LCAKLSAgICAyMzYsIDcxLCAyMzMsIDkxLCAyMTgsIDIzNiwgODUsIDIxMywgMTg3LCA0LCAyMTgsIDIzNiwgNzEsIDIxMywgMTg3LCA0LCAKLSAgICAyMTgsIDIzNiwgODUsIDIyNSwgMTkzLCA3MSwgMjI1LCAxOTMsIDcxLCAyNDEsIDIwMCwgODUsIDI0MSwgMjAwLCAyMDMsIAotICAgIDg1LCAyNDEsIDIwMCwgODUsIDIzMywgOTEsIDI1MCwgNDMsIDg1LCAyMzEsIDg3LCAyNDgsIDAsIDcxLCAyMzEsIDg3LCAKLSAgICAyNDgsIDAsIDg1LCAyMzEsIDg3LCAyMzIsIDExMCwgNzEsIDIzMSwgODcsIDIzMiwgMTEwLCA4NSwgNCwgMjQ4LCAwLCA4NSwgCi0gICAgNCwgMjMyLCAxMTAsIDcxLCA0LCAyMzIsIDExMCwgODUsIDIwMywgMjQ1LCAxNzIsIDcxLCAyMDMsIDI0NSwgMTcyLCA4NSwgCi0gICAgNjcsIDI0NSwgMTcyLCA3MSwgNjcsIDI0NSwgMTcyLCA0MywgODAsIDIsIDQsIDI1MCwgNDMsIDEzNCwgMTQwLCAyNTMsIAotICAgIDI1NSwgNDMsIDgwLCAyLCAzNywgMjI1LCAyNSwgMjAwLCAxNDAsIDIxOCwgMjMyLCA3NSwgMTQwLCAyMTUsIDU4LCA4MCwgMiwgCi0gICAgNjcsIDkxLCAxNDAsIDIxNSwgNTgsIDgwLCAyLCA1MiwgNjcsIDkxLCAxNDAsIDIxNSwgNTgsIDgwLCAyNDMsIDI1MSwgMTMwLCAKLSAgICAxNDAsIDIxNSwgNTgsIDIxNSwgMjEyLCAyNDgsIDE2NSwgNzUsIDE0MCwgODAsIDIsIDI0NiwgMTI2LCAyMTgsIDE0MSwgCi0gICAgMTQwLCA4MCwgMiwgMjE3LCA3OSwgMiwgNjcsIDkxLCAxNDAsIDgwLCAyLCAyMTcsIDc5LCAyLCA1MiwgNjcsIDkxLCAxNDAsIAotICAgIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc4LCAxNDAsIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc5LCAyLCA2NywgOTEsIDE0MCwgCi0gICAgMjE1LCA1OCwgODAsIDIsIDIxNywgNzksIDIsIDUyLCA2NywgOTEsIDE0MCwgODAsIDIxNiwgMTQwLCAyMTEsIDE3OCwgMjEyLCAKLSAgICAzNiwgODAsIDIyNSwgMTAsIDI0NywgMjAzLCAyMzMsIDUyLCAyNDUsIDEwNiwgNSwgNzIsIDE0MCwgNzUsIDIyMywgNTMsIAotICAgIDIxNiwgOTAsIDIyNiwgMTcyLCA3MiwgMTQwLCA3NSwgMTQwLCA4MCwgNzIsIDIyMywgNTMsIDI1NCwgMTU2LCAxMjgsIDExMiwgCi0gICAgOTcsIDgwLCAyMTYsIDE0MCwgMjQyLCAxMzYsIDk3LCA4MCwgMjE2LCAxNDAsIDIxOCwgMjIsIDE0MCwgMjI0LCAyNywgNzUsIAotICAgIDk3LCAyMjQsIDI3LCA3NSwgMjIzLCA1MywgMjE2LCA5MCwgMjI2LCAxNzIsIDcyLCA5NywgNzUsIDk3LCA4MCwgNzIsIDIyMywgCi0gICAgNTMsIDI1NCwgMTU2LCAxMjgsIDExMiwgMjE2LCA5MCwgMjI2LCAxNzIsIDcyLCAxNDAsIDc1LCAxNDAsIDgwLCA3MiwgMjU0LCAKLSAgICAxNTYsIDEyOCwgMTEyLCAxNDAsIDgwLCA3MiwgMjIzLCA1MywgMjE2LCA5MCwgMjI2LCAxNzEsIDk3LCA4MCwgNzIsIDIyMywgCi0gICAgNTMsIDIxNiwgOTAsIDIyNiwgMTcxLCA3MSwgMjMxLCA4NywgMjE4LCAxNTgsIDg1LCA0LCAyMTgsIDE1OCwgNzEsIDQsIAotICAgIDIxOCwgMTU4LCA4NSwgMjIyLCAyNTAsIDIyNSwgMTkzLCA3MSwgMjIyLCAyNTAsIDIyNSwgMTkzLCAxMTQsIDIzMywgOTEsIAotICAgIDI1MCwgNDMsIDExNCwgMjI2LCAxMjgsIDIsIDIyNiwgMTI4LCAyMzUsIDIyMiwgMTE0LCAyNTAsIDQ0LCAyLCAyNTAsIDQ0LCAKLSAgICAyMzUsIDIyMiwgMTE0LCAyNTAsIDQzLCAxMTQsIDM3LCAyMjIsIDAsIDE0NSwgNiwgMSwgMjUzLCAxNjcsIDE0NSwgNiwgMSwgCi0gICAgMjUxLCAxMjUsIDE0NSwgNiwgMSwgMjEzLCAyNTMsIDE0NSwgNiwgMSwgMjQyLCAxOTIsIDE0NSwgNiwgMSwgMjQ3LCAxNDgsIAotICAgIDE0NSwgNiwgMSwgMjExLCAyMSwgMTQ1LCA2LCAxLCAyMTAsIDY4LCAxNDUsIDYsIDEsIDI0NiwgNDIsIDE0NSwgNiwgMSwgCi0gICAgMjEwLCA5MSwgMTQ1LCA2LCAxLCAyMzUsIDE1NCwgMTQ1LCA2LCAxLCA2NSwgMjM1LCAxNTQsIDE0NSwgNiwgMSwgNzQsIAotICAgIDE0NSwgNiwgMSwgMjQ3LCAxNjgsIDE0NSwgNiwgMSwgMjM0LCAyNDYsIDE0NSwgNiwgMSwgMjMyLCAxOTIsIDE0NSwgNiwgMSwgCi0gICAgMjMwLCAzNCwgMTQ1LCA2LCAxLCAyMjksIDE5NiwgMTQ1LCA2LCAxLCAyMjYsIDE4OSwgMTQ1LCA2LCAxLCAyMjUsIDcsIAotICAgIDE0NSwgNiwgMSwgMjIyLCAyMzAsIDE0NSwgNiwgMSwgMjE5LCA4NSwgMTQ1LCA2LCAxLCAyMTUsIDgxLCAxNDUsIDYsIDEsIAotICAgIDIxNCwgMjAxLCAxNDUsIDYsIDEsIDI0MywgMjU0LCAxNDUsIDYsIDEsIDI0MSwgMjA2LCAxNDUsIDYsIDEsIDIyNiwgMTM5LCAKLSAgICAxNDUsIDYsIDEsIDIyNSwgMjI0LCAxNDUsIDYsIDEsIDIxOSwgMjMwLCAxNDUsIDYsIDEsIDIxNSwgMTY4LCAxNDUsIDYsIDEsIAotICAgIDI1MCwgODMsIDE0NSwgNiwgMSwgMjIwLCAxMDQsIDE0NSwgNiwgMSwgMjExLCAyNywgMTQ1LCA2LCAxLCAyMTEsIDI5LCAKLSAgICAxNDUsIDYsIDEsIDIxMSwgNTcsIDE0NSwgNiwgMSwgMjE4LCAyNTUsIDE2MiwgMTQ1LCA2LCAxLCAyMTAsIDIxMiwgMTQ1LCAKLSAgICA2LCAxLCA0LCAyMTAsIDE4MywgMTQ1LCA2LCAxLCA0LCAyMTAsIDE4NCwgMiwgMjE3LCA3OCwgMTQ1LCA2LCAxLCAyMTAsIAotICAgIDI0NCwgMTQ1LCA2LCAxLCAyMzUsIDE5MSwgNCwgMjEwLCAxODMsIDE0NSwgNiwgMSwgMjUyLCAxLCAyMTAsIDE4MywgMTQ1LCAKLSAgICA2LCAxLCAyMzUsIDE5MSwgMjUyLCAxLCAyMTAsIDE4MywgMTQ1LCA2LCAxLCAyNDQsIDkwLCAxNDUsIDYsIDEsIDIzNSwgCi0gICAgMTUyLCAxNDUsIDYsIDEsIDIxOSwgMjI5LCAxNDUsIDYsIDEsIDIxNSwgMjAzLCA2MSwgMTQ1LCA2LCAxLCAyMzMsIDgxLCAKLSAgICAyMzAsIDM0LCAxNDUsIDQsIDEsIDI1MywgMTY3LCAxNDUsIDQsIDEsIDI1MSwgMTI1LCAxNDUsIDQsIDEsIDIxMywgMjUzLCAKLSAgICAxNDUsIDQsIDEsIDI0MiwgMTkyLCAxNDUsIDQsIDEsIDI0NywgMTQ4LCAxNDUsIDQsIDEsIDIxMSwgMjEsIDE0NSwgNCwgMSwgCi0gICAgMjEwLCA2OCwgMTQ1LCA0LCAxLCAyNDYsIDQyLCAxNDUsIDQsIDEsIDIxMCwgOTEsIDE0NSwgNCwgMSwgMjM1LCAxNTQsIAotICAgIDE0NSwgNCwgMSwgNjUsIDIzNSwgMTU0LCAxNDUsIDQsIDEsIDc0LCAxNDUsIDQsIDEsIDI0NywgMTY4LCAxNDUsIDQsIDEsIAotICAgIDIzNCwgMjQ2LCAxNDUsIDQsIDEsIDIzMiwgMTkyLCAxNDUsIDQsIDEsIDIzMCwgMzQsIDE0NSwgNCwgMSwgMjI5LCAxOTYsIAotICAgIDE0NSwgNCwgMSwgMjI2LCAxODksIDE0NSwgNCwgMSwgMjI1LCA3LCAxNDUsIDQsIDEsIDIyMiwgMjMwLCAxNDUsIDQsIDEsIAotICAgIDIxOSwgODUsIDE0NSwgNCwgMSwgMjE1LCA4MSwgMTQ1LCA0LCAxLCAyMTQsIDIwMSwgMTQ1LCA0LCAxLCAyNDMsIDI1NCwgCi0gICAgMTQ1LCA0LCAxLCAyNDEsIDIwNiwgMTQ1LCA0LCAxLCAyMjYsIDEzOSwgMTQ1LCA0LCAxLCAyMjUsIDIyNCwgMTQ1LCA0LCAxLCAKLSAgICAyMTksIDIzMCwgMTQ1LCA0LCAxLCAyMTUsIDE2OCwgMTQ1LCA0LCAxLCAyNTAsIDgzLCAxNDUsIDQsIDEsIDIyMCwgMTA0LCAKLSAgICAxNDUsIDQsIDEsIDIxMSwgMjcsIDE0NSwgNCwgMSwgMjExLCAyOSwgMTQ1LCA0LCAxLCAyMTEsIDU3LCAxNDUsIDQsIDEsIAotICAgIDIxOCwgMjU1LCAxNjIsIDE0NSwgNCwgMSwgMjEwLCAyMTIsIDE0NSwgNCwgMSwgNCwgMjEwLCAxODMsIDE0NSwgNCwgMSwgNCwgCi0gICAgMjEwLCAxODQsIDIsIDIxNywgNzgsIDE0NSwgNCwgMSwgMjEwLCAyNDQsIDE0NSwgNCwgMSwgMjM1LCAxOTEsIDQsIDIxMCwgCi0gICAgMTgzLCAxNDUsIDQsIDEsIDI1MiwgMSwgMjEwLCAxODMsIDE0NSwgNCwgMSwgMjM1LCAxOTEsIDI1MiwgMSwgMjEwLCAxODMsIAotICAgIDE0NSwgNCwgMSwgMjQ0LCA5MCwgMTQ1LCA0LCAxLCAyMzUsIDE1MiwgMTQ1LCA0LCAxLCAyMTksIDIyOSwgMTQ1LCA0LCAxLCAKLSAgICAyMTUsIDIwMywgNjEsIDE0NSwgNCwgMSwgMjMzLCA4MSwgMjMwLCAzNCwgNywgNiwgMSwgMjMzLCAxNTUsIDIsIDUyLCAxMzAsIAotICAgIDcsIDQsIDEsIDIzMywgMTU1LCAyLCA1MiwgMTMwLCA3LCA2LCAxLCAyMzMsIDE1NSwgMiwgMjMwLCAyMjksIDE4NCwgNywgNiwgCi0gICAgMSwgMjI2LCAxMTAsIDIsIDkxLCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgMjE3LCA3OCwgNywgNCwgMSwgMTE2LCAyLCA5MSwgCi0gICAgNywgNCwgMSwgMjE3LCAxNTQsIDIsIDI0OCwgNywgOTEsIDcsIDYsIDEsIDI0MiwgNjgsIDIsIDI0OCwgNDcsIDcsIDQsIDEsIAotICAgIDI0MiwgNjgsIDIsIDI0OCwgNDcsIDcsIDYsIDEsIDIzNSwgMzAsIDIsIDI0OCwgNDcsIDcsIDQsIDEsIDIzNSwgMzAsIDIsIAotICAgIDI0OCwgNDcsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAyNDgsIDQ3LCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjQ4LCA0NywgNywgCi0gICAgNiwgMSwgMjU0LCAxNTEsIDcsIDYsIDEsIDIzMiwgNTUsIDIsIDEwMywgNywgNiwgMSwgMjE1LCA5NCwgNjEsIDcsIDYsIDEsIAotICAgIDIxNSwgOTQsIDI1NCwgMTUxLCA3LCA0LCAxLCAyMTQsIDEwNiwgMiwgNDQsIDEwMywgNywgNiwgMSwgMjEyLCA5OSwgMiwgCi0gICAgMTAzLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAxMDMsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAyNDksIDEwOCwgNywgNiwgMSwgCi0gICAgMTYzLCAyNDIsIDY3LCA3LCA0LCAxLCAxNjMsIDI0MiwgNjcsIDcsIDQsIDEsIDIxNywgNzYsIDIyNSwgMTM2LCA3LCA0LCAxLCAKLSAgICAxNjAsIDIsIDIyOCwgNTUsIDcsIDQsIDEsIDIxNSwgOTQsIDIyMywgMjI3LCAyLCAyMTcsIDc4LCA3LCA0LCAxLCAxNDQsIDIsIAotICAgIDEyMSwgMjIyLCAyMzcsIDIzNSwgMjIyLCA3LCAxLCA0LCA2LCAyMTUsIDk0LCA3NiwgNywgMjE4LCA2NiwgNCwgMSwgMjM1LCAKLSAgICAxNTAsIDU4LCAxLCA2LCAyMTQsIDEwNSwgNywgNiwgMSwgMjIyLCA5NCwgMiwgMjE3LCAyNTEsIDIxNywgNzgsIDcsIDYsIDEsIAotICAgIDIxMCwgMTYwLCAyLCAyMTcsIDI1MSwgMjE3LCA3OCwgODEsIDYsIDEsIDI1NCwgMTczLCA4MSwgNCwgMSwgMjU0LCAxNzMsIAotICAgIDgxLCA2LCAxLCAyMTMsIDE3MywgODEsIDQsIDEsIDIxMywgMTczLCA4MSwgNiwgMSwgMjQzLCAxMTQsIDgxLCA0LCAxLCAKLSAgICAyNDMsIDExNCwgODEsIDYsIDEsIDI0OCwgMTk5LCA4MSwgNCwgMSwgMjQ4LCAxOTksIDgxLCA2LCAxLCAyNDUsIDIwMiwgODEsIAotICAgIDQsIDEsIDI0NSwgMjAyLCA4MSwgNiwgMSwgMjE5LCAzNSwgODEsIDQsIDEsIDIxOSwgMzUsIDgxLCA2LCAxLCAyMTAsIDEwMSwgCi0gICAgODEsIDQsIDEsIDIxMCwgMTAxLCA4MSwgNiwgMSwgMjQxLCAyNTUsIDgxLCA0LCAxLCAyNDEsIDI1NSwgODEsIDYsIDEsIAotICAgIDIxNiwgMTc4LCA4MSwgNCwgMSwgMjE2LCAxNzgsIDgxLCA2LCAxLCAyNDAsIDEyMywgODEsIDQsIDEsIDI0MCwgMTIzLCA4MSwgCi0gICAgNiwgMSwgMjM0LCAyMzMsIDgxLCA0LCAxLCAyMzQsIDIzMywgODEsIDYsIDEsIDIzMywgNzgsIDgxLCA0LCAxLCAyMzMsIDc4LCAKLSAgICA4MSwgNiwgMSwgMjMwLCAyMzUsIDgxLCA0LCAxLCAyMzAsIDIzNSwgODEsIDYsIDEsIDIyOCwgMjM4LCA4MSwgNCwgMSwgCi0gICAgMjI4LCAyMzgsIDgxLCA2LCAxLCAyMzMsIDIzOSwgODEsIDQsIDEsIDIzMywgMjM5LCA4MSwgNiwgMSwgNzgsIDgxLCA0LCAxLCAKLSAgICA3OCwgODEsIDYsIDEsIDIyNSwgMTExLCA4MSwgNCwgMSwgMjI1LCAxMTEsIDgxLCA2LCAxLCAyMjIsIDIxMywgODEsIDQsIDEsIAotICAgIDIyMiwgMjEzLCA4MSwgNiwgMSwgMjE5LCAxNjcsIDgxLCA0LCAxLCAyMTksIDE2NywgODEsIDYsIDEsIDIxNywgNDIsIDgxLCAKLSAgICA0LCAxLCAyMTcsIDQyLCA4MSwgNiwgMSwgMjE0LCAyMjksIDgxLCA0LCAxLCAyMTQsIDIyOSwgODEsIDYsIDEsIDI0NCwgCi0gICAgMTI5LCA4MSwgNCwgMSwgMjQ0LCAxMjksIDgxLCA2LCAxLCAyMzQsIDExOCwgODEsIDQsIDEsIDIzNCwgMTE4LCA4MSwgNiwgCi0gICAgMSwgMjI0LCAxNjQsIDgxLCA0LCAxLCAyMjQsIDE2NCwgODEsIDYsIDEsIDIyNiwgMTgyLCA4MSwgNCwgMSwgMjI2LCAxODIsIAotICAgIDgxLCA2LCAxLCAyNDgsIDUsIDI1NCwgMTc5LCA4MSwgNCwgMSwgMjQ4LCA1LCAyNTQsIDE3OSwgODEsIDYsIDEsIDU1LCA4MSwgCi0gICAgMjU0LCAyMDUsIDgxLCA0LCAxLCA1NSwgODEsIDI1NCwgMjA1LCA4MSwgNiwgMSwgMjQ5LCAxMjMsIDI0NSwgMjAyLCA4MSwgCi0gICAgNCwgMSwgMjQ5LCAxMjMsIDI0NSwgMjAyLCA4MSwgNiwgMSwgMjQ4LCA1LCAyMzQsIDIzMywgODEsIDQsIDEsIDI0OCwgNSwgCi0gICAgMjM0LCAyMzMsIDgxLCA2LCAxLCAyNDgsIDUsIDIyOCwgMjM4LCA4MSwgNCwgMSwgMjQ4LCA1LCAyMjgsIDIzOCwgODEsIDYsIAotICAgIDEsIDI0OSwgMTIzLCAyMjgsIDIzOCwgODEsIDQsIDEsIDI0OSwgMTIzLCAyMjgsIDIzOCwgODEsIDYsIDEsIDU1LCA4MSwgCi0gICAgMjI2LCAxODIsIDgxLCA0LCAxLCA1NSwgODEsIDIyNiwgMTgyLCA4MSwgNiwgMSwgMjIxLCAyNDgsIDgxLCA0LCAxLCAyMjEsIAotICAgIDI0OCwgODEsIDYsIDEsIDI0OSwgMTM2LCAyMjAsIDU3LCA4MSwgNCwgMSwgMjQ5LCAxMzYsIDIyMCwgNTcsIDgxLCA2LCAxLCAKLSAgICA1NSwgODEsIDIyMCwgNTcsIDgxLCA0LCAxLCA1NSwgODEsIDIyMCwgNTcsIDgxLCA2LCAxLCA1NSwgODEsIDI0NSwgODMsIAotICAgIDgxLCA0LCAxLCA1NSwgODEsIDI0NSwgODMsIDgxLCA2LCAxLCAyNTQsIDE5MSwgMjM0LCAxMjMsIDgxLCA0LCAxLCAyNTQsIAotICAgIDE5MSwgMjM0LCAxMjMsIDgxLCA2LCAxLCAyNDgsIDUsIDI0MSwgNTIsIDgxLCA0LCAxLCAyNDgsIDUsIDI0MSwgNTIsIDgxLCAKLSAgICA2LCAxLCA1NSwgODEsIDI0MSwgNTIsIDgxLCA0LCAxLCA1NSwgODEsIDI0MSwgNTIsIDgxLCA2LCAxLCA1NSwgODEsIDE2MiwgCi0gICAgODEsIDQsIDEsIDU1LCA4MSwgMTYyLCA4MSwgNiwgMSwgMjMzLCAxNTQsIDE2MiwgODEsIDQsIDEsIDIzMywgMTU0LCAxNjIsIAotICAgIDgxLCA2LCAxLCA1NSwgODEsIDI0MSwgMjI0LCA4MSwgNCwgMSwgNTUsIDgxLCAyNDEsIDIyNCwgODEsIDYsIDEsIDU1LCA4MSwgCi0gICAgMjQyLCAyLCA4MSwgNCwgMSwgNTUsIDgxLCAyNDIsIDIsIDgxLCA2LCAxLCA1NSwgODEsIDI0MywgMTA5LCA4MSwgNCwgMSwgCi0gICAgNTUsIDgxLCAyNDMsIDEwOSwgODEsIDYsIDEsIDU1LCA4MSwgMjQ3LCAxNzEsIDgxLCA0LCAxLCA1NSwgODEsIDI0NywgMTcxLCAKLSAgICA4MSwgNiwgMSwgNTUsIDgxLCAyMjAsIDI0LCA4MSwgNCwgMSwgNTUsIDgxLCAyMjAsIDI0LCA4MSwgNiwgMSwgNTUsIDIyNywgCi0gICAgMjEyLCAyMjAsIDI0LCA4MSwgNCwgMSwgNTUsIDIyNywgMjEyLCAyMjAsIDI0LCA4MSwgNiwgMSwgNTUsIDIyNywgMjEyLCAKLSAgICAyMjksIDMyLCA4MSwgNCwgMSwgNTUsIDIyNywgMjEyLCAyMjksIDMyLCA4MSwgNiwgMSwgNTUsIDIyNywgMjEyLCAyMjcsIAotICAgIDE1MiwgODEsIDQsIDEsIDU1LCAyMjcsIDIxMiwgMjI3LCAxNTIsIDgxLCA2LCAxLCA1NSwgMjI3LCAyMTIsIDIxMiwgMzcsIAotICAgIDgxLCA0LCAxLCA1NSwgMjI3LCAyMTIsIDIxMiwgMzcsIDgxLCAxNiwgMjM0LCAyNTIsIDgxLCAxNiwgMjMwLCAyMzYsIDIyMiwgCi0gICAgMjEzLCA4MSwgMTYsIDIyNSwgMTEyLCAyMjIsIDIxMywgODEsIDE2LCAyMTgsIDE0OSwgODEsIDE2LCAyMTcsIDQzLCAyMjIsIAotICAgIDIxMywgODEsIDE2LCAyMzQsIDExOSwgMjIyLCAyMTMsIDgxLCAxNiwgMjIwLCAyNSwgMjE5LCAxNjcsIDgxLCA2LCAxLCAKLSAgICAyNDksIDEyMywgMjIwLCA1NywgODEsIDQsIDEsIDI0OSwgMTIzLCAyMjAsIDU3LCA4MSwgNiwgMSwgMjQ5LCAxMjMsIDI0MywgCi0gICAgMTA5LCA4MSwgNCwgMSwgMjQ5LCAxMjMsIDI0MywgMTA5LCA4MSwgMzgsIDIyOCwgMjM5LCA0OCwgODEsIDM4LCAyMTgsIAotICAgIDI0OSwgMjUzLCAyMzIsIDgxLCAzOCwgMjE4LCAyNDksIDIzMywgMjcsIDgxLCA2LCAxLCAyNTEsIDIwNywgMjM0LCAxMjMsIAotICAgIDgxLCA0LCAxLCAyNTEsIDIwNywgMjM0LCAxMjMsIDgxLCA1NSwgMjI3LCAyMTIsIDI0MywgMjM2LCAyMTgsIDEzMSwgODEsIAotICAgIDU1LCAyMjcsIDIxMiwgMjQ3LCAyMDUsIDIyNCwgMTYsIDc5LCA4MSwgNTUsIDIyNywgMjEyLCAyMzUsIDI0NCwgMjI0LCAxNiwgCi0gICAgNzksIDgxLCA1NSwgMjI3LCAyMTIsIDIxMywgMjQxLCAyNDcsIDE4MCwgODEsIDI0NCwgMTAsIDEyMywgMjQyLCAzNCwgODEsIAotICAgIDI0MywgMjM2LCAyMTgsIDEzMSwgODEsIDIzMCwgMTI5LCAyNDcsIDE4MCwgOTgsIDQsIDEsIDI1NCwgMTMxLCA5OCwgNCwgMSwgCi0gICAgMjUyLCAxNjAsIDk4LCA0LCAxLCAyNDMsIDExMywgOTgsIDQsIDEsIDI0NywgMTM2LCA5OCwgNCwgMSwgMjQ1LCAxNTgsIDk4LCAKLSAgICA0LCAxLCAyMTMsIDE2MCwgOTgsIDQsIDEsIDIxMCwgODksIDk4LCA0LCAxLCAyMTcsIDYxLCA5OCwgNCwgMSwgMjM2LCA2LCAKLSAgICA5OCwgNCwgMSwgMjM0LCAyNDAsIDk4LCA0LCAxLCAyMzMsIDg3LCA5OCwgNCwgMSwgMjMxLCAxOTAsIDk4LCA0LCAxLCAyMjksIAotICAgIDIwMCwgOTgsIDQsIDEsIDIyNiwgMjAwLCA5OCwgNCwgMSwgMjI2LCAyMSwgOTgsIDQsIDEsIDIxMCwgNzgsIDk4LCA0LCAxLCAKLSAgICAyMjMsIDE3NCwgOTgsIDQsIDEsIDIyMSwgMjQ1LCA5OCwgNCwgMSwgMjE3LCA1MSwgOTgsIDQsIDEsIDIxNCwgMTkwLCA5OCwgCi0gICAgNCwgMSwgMjI1LCAxNDMsIDk4LCA0LCAxLCAyMzQsIDEyNywgOTgsIDQsIDEsIDI0MiwgMjQ4LCA5OCwgNCwgMSwgMjI0LCAKLSAgICA3NiwgOTgsIDQsIDEsIDIyMCwgMjIsIDk4LCA0LCAxLCAyNTAsIDEwNSwgOTgsIDQsIDEsIDI1MSwgMTUsIDk4LCA0LCAxLCAKLSAgICAyMzUsIDEwNiwgOTgsIDQsIDEsIDI1MCwgNDgsIDk4LCA0LCAxLCAyNTAsIDE1MSwgOTgsIDQsIDEsIDIxMSwgMTYzLCA5OCwgCi0gICAgNCwgMSwgMjM1LCAxMTcsIDk4LCA0LCAxLCAyNDIsIDUwLCA5OCwgNCwgMSwgMjQxLCAyNDUsIDk4LCA0LCAxLCAyNDEsIAotICAgIDE4MiwgOTgsIDQsIDEsIDIxMiwgMjIsIDk4LCA0LCAxLCAyNDIsIDExLCA5OCwgNCwgMSwgMjQxLCA3MiwgOTgsIDQsIDEsIAotICAgIDIxMCwgMjQ2LCA5OCwgNCwgMSwgMjU0LCAyNDEsIDIxNiwgMTA5LCAxLCAxOTIsIDIxNiwgMTA5LCAxLCAyMTEsIDk5LCAKLSAgICAyMTYsIDEwOSwgMSwgMjExLCA5OCwgMjE2LCAxMDksIDEsIDIxMSwgODgsIDIxNiwgMTA5LCAxLCAyMTEsIDg2LCAyMTYsIAotICAgIDEwOSwgMSwgMjUyLCA0MCwgMjU1LCAyNSwgMjExLCA4MSwgMjE2LCAxMDksIDEsIDIxMSwgODEsIDIxNiwgMTA5LCAxLCAKLSAgICAyMTEsIDk2LCAyMTYsIDEwOSwgMSwgMjExLCA5MywgMjE2LCAxMDksIDEsIDIxMSwgOTUsIDIxNiwgMTA5LCAxLCAyMTEsIAotICAgIDk0LCAyMTYsIDEwOSwgMSwgMjExLCAxMiwgMjE2LCAxMDksIDEsIDIxMSwgOTAsIDIxNiwgMTA5LCAxLCAyMTEsIDc5LCAKLSAgICAyMTYsIDEwOSwgMSwgMjE1LCAxMTYsIDIxMSwgNzksIDIxNiwgMTA5LCAxLCAyMTEsIDc2LCAyMTYsIDEwOSwgMSwgMjExLCAKLSAgICA4NCwgMjE2LCAxMDksIDEsIDI1MiwgNDAsIDI1NSwgMjUsIDIxMSwgODQsIDIxNiwgMTA5LCAxLCAyMTUsIDExNiwgMjExLCAKLSAgICA4NCwgMjE2LCAxMDksIDEsIDIxMSwgODMsIDIxNiwgMTA5LCAxLCAyMTEsIDEwMywgMjE2LCAxMDksIDEsIDIxMSwgNzcsIAotICAgIDIxNiwgMTA5LCAxLCAyMTUsIDExNiwgMjExLCA3NywgMjE2LCAxMDksIDEsIDIxMSwgNjYsIDIxNiwgMTA5LCAxLCAyMTUsIAotICAgIDExNiwgMjExLCA2NiwgMjE2LCAxMDksIDEsIDIxMSwgOCwgMjE2LCAxMDksIDEsIDIxMSwgNDksIDIxNiwgMTA5LCAxLCAKLSAgICAyNTQsIDIxNiwgMjExLCA0OSwgMjE2LCAxMDksIDEsIDIxNSwgMTE2LCAyMTEsIDQ5LCAyMTYsIDEwOSwgMSwgMjExLCA3NSwgCi0gICAgMjE2LCAxMDksIDEsIDIxMSwgNzQsIDIxNiwgMTA5LCAxLCAyMTEsIDcxLCAyMTYsIDEwOSwgMSwgMjE1LCAxMTYsIDIxMSwgCi0gICAgODUsIDIxNiwgMTA5LCAxLCAyMTUsIDExNiwgMjExLCA2OSwgMjE2LCAxMDksIDEsIDIxMSwgNjcsIDIxNiwgMTA5LCAxLCAKLSAgICAyMTAsIDIxMiwgMjE2LCAxMDksIDEsIDIxMSwgNjQsIDIxNiwgMTA5LCAxLCAyMTEsIDYzLCAyMTYsIDEwOSwgMSwgMjExLCAKLSAgICA4NywgMjE2LCAxMDksIDEsIDIxNSwgMTE2LCAyMTEsIDg3LCAyMTYsIDEwOSwgMSwgMjUzLCAxNzEsIDIxMSwgODcsIDIxNiwgCi0gICAgMTA5LCAxLCAyMTEsIDYyLCAyMTYsIDEwOSwgMSwgMjExLCA2MCwgMjE2LCAxMDksIDEsIDIxMSwgNjEsIDIxNiwgMTA5LCAxLCAKLSAgICAyMTEsIDU5LCAyMTYsIDEwOSwgMSwgMjExLCA1OCwgMjE2LCAxMDksIDEsIDIxMSwgOTcsIDIxNiwgMTA5LCAxLCAyMTEsIAotICAgIDU2LCAyMTYsIDEwOSwgMSwgMjExLCA1NCwgMjE2LCAxMDksIDEsIDIxMSwgNTMsIDIxNiwgMTA5LCAxLCAyMTEsIDUyLCAKLSAgICAyMTYsIDEwOSwgMSwgMjExLCA1MCwgMjE2LCAxMDksIDEsIDIxNywgMzUsIDIxMSwgNTAsIDIxNiwgMTA5LCAxLCAyMTEsIAotICAgIDQ4LCAyMTYsIDEwOSwgMSwgMjExLCA0NywgMjE2LCAxMDksIDEsIDIxMCwgMjQ0LCAyMTYsIDEwOSwgNTgsIDEsIDIzMywgCi0gICAgMTMyLCA3OSwgMjE2LCAxMDksIDIyMCwgMTQwLCA3OSwgMjE2LCAxMDksIDExNywgMjM1LCA2OSwgMjksIDMsIDIzMiwgMTYxLCAKLSAgICAyOSwgMywgMjMwLCAxNjUsIDI5LCAzLCAyMjIsIDIxMSwgMjksIDMsIDIxOSwgNTksIDI5LCAzLCAyMjAsIDgsIDI5LCAzLCAKLSAgICAyNTEsIDIxMiwgMjksIDMsIDIxNiwgNDIsIDI5LCAzLCAyNDksIDI0NSwgMjksIDMsIDIyOCwgNzcsIDI5LCAzLCAyMjcsIAotICAgIDEzNywgMjksIDMsIDI0MiwgMTg3LCAyMjcsIDQsIDI5LCAzLCAyMTAsIDIyLCAyOSwgMywgMjQ3LCAxNTEsIDI5LCAzLCAKLSAgICAyNDgsIDExMiwgMjksIDMsIDIzNSwgNzMsIDI5LCAzLCAyMTYsIDE1NiwgMjksIDMsIDI1MCwgOTMsIDI5LCAzLCAyMjUsIAotICAgIDEyMywgMjksIDMsIDIyNSwgMTgsIDI5LCAzLCAyNDMsIDYsIDI5LCAzLCAyNDMsIDIsIDI5LCAzLCAyNDMsIDMsIDI5LCAzLCAKLSAgICAyNDMsIDQsIDI5LCAzLCAyMTgsIDIyNSwgMjksIDMsIDIxOCwgMTgxLCAyOSwgMywgMjE4LCAxOTQsIDI5LCAzLCAyMTgsIAotICAgIDIyNCwgMjksIDMsIDIxOCwgMTk4LCAyOSwgMywgMjE4LCAxOTksIDI5LCAzLCAyMTgsIDE4NiwgMjksIDMsIDI1MCwgMjIxLCAKLSAgICAyOSwgMywgMjUwLCAyMDAsIDI5LCAzLCAyNTAsIDIwMiwgMjksIDMsIDI1MCwgMjIwLCAyOSwgMywgMjUwLCAyMTgsIDI5LCAKLSAgICAzLCAyNTAsIDIxOSwgMjksIDMsIDI1MCwgMjAxLCAyOSwgMywgMjA5LCAyNDMsIDI5LCAzLCAyMDksIDIyMSwgMjksIDMsIAotICAgIDIwOSwgMjM0LCAyOSwgMywgMjA5LCAyNDIsIDI5LCAzLCAyMDksIDIzNywgMjksIDMsIDIwOSwgMjM4LCAyOSwgMywgMjA5LCAKLSAgICAyMjYsIDI5LCAzLCAyNTAsIDIxNiwgMjksIDMsIDI1MCwgMjAzLCAyOSwgMywgMjUwLCAyMDUsIDI5LCAzLCAyNTAsIDIxNSwgCi0gICAgMjksIDMsIDI1MCwgMjEzLCAyOSwgMywgMjUwLCAyMTQsIDI5LCAzLCAyNTAsIDIwNCwgMjksIDMsIDIyMywgMjM5LCAyOSwgCi0gICAgMywgMjIzLCAyMjksIDI5LCAzLCAyMjMsIDIzNSwgMjksIDMsIDIyMywgMjM4LCAyOSwgMywgMjIzLCAyMzYsIDI5LCAzLCAKLSAgICAyMjMsIDIzNywgMjksIDMsIDIyMywgMjM0LCAyOSwgMywgMjMzLCAxNjUsIDI5LCAzLCAyMzMsIDE1NywgMjksIDMsIDIzMywgCi0gICAgMTYwLCAyOSwgMywgMjMzLCAxNjQsIDI5LCAzLCAyMzMsIDE2MSwgMjksIDMsIDIzMywgMTYyLCAyOSwgMywgMjMzLCAxNTgsIAotICAgIDI5LCAzLCAyMTEsIDEzMCwgMjksIDMsIDIxMSwgMTIwLCAyOSwgMywgMjExLCAxMjYsIDI5LCAzLCAyMTEsIDEyOSwgMjksIAotICAgIDMsIDIxMSwgMTI3LCAyOSwgMywgMjExLCAxMjgsIDI5LCAzLCAyMTEsIDEyNSwgMjksIDMsIDI0MiwgNzgsIDI5LCAzLCAKLSAgICAyNDIsIDY5LCAyOSwgMywgMjQyLCA3MiwgMjksIDMsIDI0MiwgNzcsIDI5LCAzLCAyNDIsIDc0LCAyOSwgMywgMjQyLCA3NSwgCi0gICAgMjksIDMsIDI0MiwgNzEsIDM4LCAzMywgMSwgMjUyLCA4MywgMzgsIDMzLCAxLCAyMTMsIDI1NSwgMzgsIDMzLCAxLCAyNDIsIAotICAgIDI0MywgMzgsIDMzLCAxLCAyNDgsIDk4LCAzOCwgMzMsIDEsIDIxMCwgNzQsIDM4LCAzMywgMSwgMjEwLCA5NCwgMzgsIDMzLCAKLSAgICAxLCAxNzYsIDM4LCAzMywgMSwgMjQ1LCAxODIsIDM4LCAzMywgMSwgMjQ1LCAxNjcsIDM4LCAzMywgMSwgMjQ1LCAxNTgsIAotICAgIDM4LCAzMywgMSwgNzgsIDM4LCAzMywgMSwgMjI1LCAyMjQsIDM4LCAzMywgMSwgMjQ1LCAxMDAsIDM4LCAzMywgMSwgMjQ1LCAKLSAgICA5MCwgMzgsIDMzLCAxLCAyMTcsIDIzLCAzOCwgMzMsIDEsIDE2MiwgMzgsIDMzLCAxLCAyMTUsIDE3OSwgMzgsIDMzLCAxLCAKLSAgICAyNTAsIDEzOSwgMzgsIDMzLCAxLCAyMjAsIDEwNCwgMzgsIDMzLCAxLCAyMjAsIDY3LCAzOCwgMzMsIDEsIDI0NCwgOTAsIAotICAgIDM4LCAzMywgMSwgMjQ1LCA4OSwgMzgsIDMzLCAxLCA2MSwgMzgsIDMzLCAxLCAyMzYsIDY3LCAzOCwgMzMsIDEsIDI0NywgCi0gICAgMTY5LCAzOCwgMzMsIDEsIDIzMCwgMTQ1LCAyMTQsIDIwNSwgMzgsIDMzLCAxLCAyMTEsIDU5LCAzOCwgMzMsIDEsIDIxMCwgCi0gICAgMjEyLCAzOCwgMzMsIDEsIDIzNSwgMTkwLCA2MSwgMzgsIDMzLCAxLCAyMzIsIDE5OCwgMjEwLCAxODMsIDM4LCAzMywgMSwgCi0gICAgMjUyLCAxLCAyMTAsIDE4MywgMzgsIDMzLCAxLCAyMzUsIDE5MCwgMjUyLCAxLCAyMTAsIDE4MywgNDQsIDI1NCwgMTE4LCAKLSAgICAyMTgsIDYxLCAyMzEsIDE1OSwgNDQsIDI1NCwgMTE4LCAyNDYsIDEyNiwgMjE4LCA2MSwgMjMxLCAxNTksIDQzLCAyMTgsIAotICAgIDYxLCAxMjcsIDQ0LCAyMTgsIDYxLCAxMjcsIDQzLCAyNDYsIDEyNiwgMjE4LCA2MSwgMTI3LCA0NCwgMjQ2LCAxMjYsIDIxOCwgCi0gICAgNjEsIDEyNywgMjIzLCAxNjAsIDIzNSwgMjA5LCAyMzEsIDE1OSwgMjIzLCAxNjAsIDI0NiwgMTI2LCAyMzUsIDIwOSwgMjMxLCAKLSAgICAxNTksIDI0NiwgMTI2LCAyMTUsIDI0MiwgMjMxLCAxNTksIDQzLCAyMTUsIDI0MiwgMTI3LCA0NCwgMjE1LCAyNDIsIDEyNywgCi0gICAgMjIzLCAxNjAsIDIxOCwgMjM2LCA0MywgMjIzLCAxNjAsIDIyNiwgMjAyLCAxMjcsIDQ0LCAyMjMsIDE2MCwgMjI2LCAyMDIsIAotICAgIDEyNywgMjQ1LCAyMTgsIDI0OSwgMTY2LCAyMjYsIDE3LCAyNDQsIDMwLCAyMjYsIDE3LCAyMjMsIDUyLCAyNDQsIDMwLCAKLSAgICAyMjYsIDE3LCAyNDAsIDE3MiwgMjQ2LCAxMjYsIDIyNiwgMjU1LCAyNDYsIDExMiwgMjU0LCAxMjcsIDIxNCwgMTUzLCAyNTQsIAotICAgIDEyNywgMjQ2LCAxMjYsIDIyMiwgMjUwLCAyNTQsIDExNywgNTIsIDIyNiwgMjUyLCAyNDAsIDE3NSwgMjM1LCAyMDAsIDIzNSwgCi0gICAgMjA4LCAyMjYsIDYzLCAyNTEsIDE2MiwgMjQwLCAxNzYsIDIsIDI0OCwgOSwgMjE2LCA5MCwgMiwgMjIyLCAyMzcsIDQ4LCAKLSAgICA0MywgMTIxLCAyMjYsIDksIDEyNywgNDQsIDEyMSwgMjI2LCA5LCAxMjcsIDIxNiwgOTAsIDIsIDU5LCA0OCwgMjE2LCA5MCwgCi0gICAgMiwgNTksIDUxLCA0MywgNjcsIDI1MiwgMTQ5LCAyLCAyMjQsIDEwLCA0NCwgNjcsIDI1MiwgMTQ5LCAyLCAyMjQsIDEwLCAKLSAgICAyMTYsIDE1LCA0MywgMTYzLCAxMjcsIDIxNiwgMTUsIDQ0LCAxNjMsIDEyNywgMjUxLCAxODMsIDQzLCAxNjMsIDEyNywgCi0gICAgMjUxLCAxODMsIDQ0LCAxNjMsIDEyNywgNDMsIDIxOSwgMTg5LCAxMDQsIDEyNywgNDQsIDIxOSwgMTg5LCAxMDQsIDEyNywgCi0gICAgNDMsIDUyLCAyMjYsIDcsIDQ0LCA1MiwgMjI2LCA3LCAxMTMsIDE3MCwgMTE1LCAxMjMsIDU5LCAyMjQsIDE0MywgMTIzLCAKLSAgICA1OSwgMTE1LCAxMTMsIDE3MCwgMjI0LCAxNDMsIDkyLCAyNDQsIDE5LCA1OSwgMjI0LCAxNDMsIDI0NCwgODksIDU5LCA3OSwgCi0gICAgMjIzLCA1MiwgMjI0LCAxNiwgNzksIDY3LCAxODQsIDIyMiwgMjM3LCAyMjUsIDEzLCAyMTEsIDIwOSwgMjIwLCAxNDAsIAotICAgIDIzMCwgMjI5LCAyNDcsIDEyOCwgMjE1LCA5NCwgMjQ5LCAyMjcsIDIyMywgMTYwLCAyNDcsIDEyOCwgMjIzLCAxNjAsIDI0OSwgCi0gICAgMjI3LCAyMTUsIDk0LCAyMjAsIDE1MiwgMjQ4LCAyMTQsIDIsIDQzLCAyNDIsIDExNSwgMjQ4LCAyMTQsIDIsIDQ0LCAyNDIsIAotICAgIDExNSwgMjE1LCA5NCwgMjQ4LCAyMTMsIDIxNiwgMTUsIDE2MywgMjIxLCAxNzUsIDUwLCAyMTUsIDU5LCAyNDgsIDE2NCwgCi0gICAgMjE2LCAxNDQsIDI0OCwgMTY0LCAxMCwgMzQsIDIyMywgNzksIDEwLCAzNCwgMjUwLCAxOCwgMTAsIDM0LCAyMjEsIDE3OCwgCi0gICAgMTExLCAxMCwgMzQsIDIyMSwgMTc4LCAxMDUsIDEwLCAzNCwgMjIxLCAxNzgsIDE1OCwgMTAsIDM0LCAyMjUsIDE3MCwgMTAsIAotICAgIDM0LCAyNTEsIDE3MSwgMTAsIDM0LCAyMTcsIDkzLCAxMCwgMzQsIDIzNCwgMzksIDExMSwgMTAsIDM0LCAyMzQsIDM5LCAKLSAgICAxMDUsIDEwLCAzNCwgMjQ3LCAxNzgsIDEwLCAzNCwgMjIxLCAxODEsIDEwLCAzNCwgNCwgMTExLCAxMCwgMzQsIDQsIDEwNSwgCi0gICAgMTAsIDM0LCAyMzMsIDEwMywgMTExLCAxMCwgMzQsIDIzMywgMTAzLCAxMDUsIDEwLCAzNCwgMjMzLCAxMDMsIDE1OCwgMTAsIAotICAgIDM0LCAyMzMsIDEwMywgMTYxLCAxMCwgMzQsIDIxOSwgNzAsIDEwLCAzNCwgMjE2LCAxNDYsIDEwLCAzNCwgMjE5LCA2OCwgCi0gICAgMTExLCAxMCwgMzQsIDIxOSwgNjgsIDEwNSwgMTAsIDM0LCAyNDEsIDIzNSwgMTExLCAxMCwgMzQsIDI0MSwgMjM1LCAxMDUsIAotICAgIDEwLCAzNCwgMjQyLCAyMiwgMTAsIDM0LCAyMjMsIDE1MCwgMTAsIDM0LCAyNTAsIDkwLCAxMCwgMzQsIDIxOCwgMzgsIDEwLCAKLSAgICAzNCwgMjMwLCAxMzMsIDEwLCAzNCwgMjQ4LCA5NiwgMTAsIDM0LCAyMzAsIDEyNSwgMTAsIDM0LCAyNTAsIDMzLCAxMCwgMzQsIAotICAgIDIxMiwgNDEsIDExMSwgMTAsIDM0LCAyMTIsIDQxLCAxMDUsIDEwLCAzNCwgMjQ0LCAxMDQsIDEwLCAzNCwgMjI1LCAyMzYsIAotICAgIDExMSwgMTAsIDM0LCAyMjUsIDIzNiwgMTA1LCAxMCwgMzQsIDIxOSwgMTYyLCAxNjMsIDIxNSwgMjM3LCAyMTUsIDE4OSwgCi0gICAgMTAsIDM0LCAyNDksIDE1MywgMTAsIDM0LCAyNDcsIDE0NCwgMTAsIDM0LCAyMzUsIDE0MywgMTAsIDM0LCAyNTEsIDIwNiwgCi0gICAgNjQsIDI1MCwgMiwgMTAsIDM0LCAyNDUsIDIzLCAxMCwgMzQsIDIxOCwgMjUxLCAxMTEsIDEwLCAzNCwgMjE4LCAyNTEsIAotICAgIDEwNSwgMTAsIDM0LCAyNTIsIDE2MiwgMTAsIDM0LCAyMTksIDE2OSwgMTAsIDM0LCAyNTEsIDcxLCAyMTksIDE2OSwgMTAsIAotICAgIDM0LCAyMjksIDk1LCAxMTEsIDEwLCAzNCwgMjI5LCA5NSwgMTA1LCAxMCwgMzQsIDIyOSwgOTUsIDE1OCwgMTAsIDM0LCAKLSAgICAyMjksIDk1LCAxNjEsIDEwLCAzNCwgMjMxLCA1MSwgMTAsIDM0LCAyMjAsIDU5LCAxMCwgMzQsIDIyMywgMTU2LCAxMCwgMzQsIAotICAgIDI0NSwgNDUsIDEwLCAzNCwgMjI2LCAyMTMsIDEwLCAzNCwgMjUxLCAxNDEsIDExMSwgMTAsIDM0LCAyNTEsIDE0MSwgMTA1LCAKLSAgICAxMCwgMzQsIDIzMSwgOTEsIDEwLCAzNCwgMjMwLCAxMjgsIDEwLCAzNCwgMjQyLCAxNDcsIDExMSwgMTAsIDM0LCAyNDIsIAotICAgIDE0NywgMTA1LCAxMCwgMzQsIDI0MiwgMTQ3LCAxNTgsIDEwLCAzNCwgMjE2LCAxMDcsIDEwLCAzNCwgMjUwLCAxLCAxMCwgCi0gICAgMzQsIDIxMiwgOSwgMTExLCAxMCwgMzQsIDIxMiwgOSwgMTA1LCAxMCwgMzQsIDI1MSwgNzEsIDIyMSwgMTcyLCAxMCwgMzQsIAotICAgIDIxOSwgMTYyLCAyNDAsIDI1NSwgMTAsIDM0LCAyNDAsIDI1NSwgMTAsIDM0LCAyNTEsIDcxLCAyMTksIDQsIDEwLCAzNCwgCi0gICAgMjUxLCA3MSwgMjIwLCA1NCwgMTAsIDM0LCAyNDQsIDQwLCAxMCwgMzQsIDI1MSwgNzEsIDI1MCwgMjM2LCAxMCwgMzQsIAotICAgIDIxOSwgMTYyLCAyMTIsIDU3LCAxMCwgMzQsIDIxMiwgNTgsIDExMSwgMTAsIDM0LCAyMTIsIDU4LCAxMDUsIDEwLCAzNCwgCi0gICAgMjUwLCAzNSwgMTAsIDM0LCAyNTEsIDcxLCAyNDIsIDE3MywgMTAsIDM0LCAyMDAsIDExMSwgMTAsIDM0LCAyMDAsIDEwNSwgCi0gICAgMTAsIDM0LCAyNTEsIDcxLCAyMzIsIDE0MywgMTAsIDM0LCAyNTEsIDcxLCAyNDMsIDk1LCAxMCwgMzQsIDIzMCwgMTI0LCAKLSAgICAxMTEsIDEwLCAzNCwgMjMwLCAxMjQsIDEwNSwgMTAsIDM0LCAyMjMsIDE2MiwgMTAsIDM0LCAyNTEsIDIxNSwgMTAsIDM0LCAKLSAgICAyNTEsIDcxLCAyMTcsIDU3LCAyMzMsIDU4LCAxMCwgMzQsIDI1MSwgNzEsIDIzMywgNTksIDEwLCAzNCwgMjUxLCA3MSwgCi0gICAgMjExLCAyMzksIDEwLCAzNCwgMjUxLCA3MSwgMjQ0LCA1NCwgMTAsIDM0LCAyNDUsIDIyNiwgMTExLCAxMCwgMzQsIDI0NSwgCi0gICAgMjI2LCAxMDUsIDEwLCAzNCwgMjQ1LCAyMjYsIDE1OCwgMTAsIDM0LCAyNTEsIDcxLCAyNDUsIDIyNSwgMTAsIDM0LCAyNDEsIAotICAgIDI0MiwgMTAsIDM0LCAyNTEsIDcxLCAyNDAsIDI1MiwgMTAsIDM0LCAyNTEsIDIwMiwgMTAsIDM0LCAyNDIsIDIyOSwgMTAsIAotICAgIDM0LCAyNTEsIDcxLCAyNDQsIDk4LCAxMCwgMzQsIDI1MSwgNzEsIDI1MSwgMjQ1LCAxMCwgMzQsIDI1MSwgNzEsIDIyMiwgMywgCi0gICAgMTAsIDM0LCAyMTksIDE2MiwgMjEyLCAyLCAxMCwgMzQsIDIxOSwgMTYyLCAyMTEsIDQxLCAxMCwgMzQsIDI1MSwgNzEsIAotICAgIDI0MywgMjUyLCAxMCwgMzQsIDIzNSwgMTQ5LCAyNDUsIDQ5LCAxMCwgMzQsIDI1MSwgNzEsIDI0NSwgNDksIDEwLCAzNCwgCi0gICAgMjM1LCAxNDksIDIxNiwgMTYsIDEwLCAzNCwgMjUxLCA3MSwgMjE2LCAxNiwgMTAsIDM0LCAyMzUsIDE0OSwgMjQ2LCAxMDQsIAotICAgIDEwLCAzNCwgMjUxLCA3MSwgMjQ2LCAxMDQsIDEwLCAzNCwgMjE1LCA5MSwgMTAsIDM0LCAyMzUsIDE0OSwgMjE1LCA5MSwgCi0gICAgMTAsIDM0LCAyNTEsIDcxLCAyMTUsIDkxLCA2MCwgMzQsIDExMSwgNjAsIDM0LCAyMzIsIDIxOSwgNjAsIDM0LCAyNDcsIAotICAgIDEyOCwgNjAsIDM0LCAyMTksIDk3LCA2MCwgMzQsIDIyMSwgMTc3LCA2MCwgMzQsIDEwMywgNjAsIDM0LCAxMDUsIDYwLCAzNCwgCi0gICAgMjMyLCAyNDMsIDYwLCAzNCwgMjMxLCAxOTAsIDYwLCAzNCwgMjMzLCAzOSwgNjAsIDM0LCAyNDUsIDEzNywgNjAsIDM0LCAKLSAgICAxOTYsIDYwLCAzNCwgMTI0LCAyNTEsIDE3MSwgNjAsIDM0LCAyNDksIDE1NSwgNjAsIDM0LCAyNDAsIDExOCwgNjAsIDM0LCAKLSAgICAyMTcsIDkzLCA2MCwgMzQsIDIwNCwgMjUxLCAxNzEsIDYwLCAzNCwgMjM0LCAzOCwgNjAsIDM0LCAyMjQsIDIyNywgNjAsIAotICAgIDM0LCAyMTEsIDIwMiwgNjAsIDM0LCAyMTgsIDI0NSwgNjAsIDM0LCA0NCwgMjA0LCAyNTEsIDE3MSwgNjAsIDM0LCAyNDEsIAotICAgIDE4MywgMjQ1LCAxNTMsIDYwLCAzNCwgMjE2LCAyNDgsIDYwLCAzNCwgMjQ3LCAxNzgsIDYwLCAzNCwgMjIxLCAxODEsIDYwLCAKLSAgICAzNCwgMjUwLCAxOCwgNjAsIDM0LCAyMjQsIDE4NSwgNjAsIDM0LCAyNTQsIDIyNCwgNjAsIDM0LCAyMzAsIDExNSwgNjAsIAotICAgIDM0LCAyNDUsIDE1MywgNjAsIDM0LCAyNDUsIDIzMSwgNjAsIDM0LCAyMjEsIDIwMiwgNjAsIDM0LCAyNDIsIDE4MSwgNjAsIAotICAgIDM0LCAyNDIsIDE4MiwgMjE5LCA4MywgNjAsIDM0LCAyNDUsIDQ4LCA2MCwgMzQsIDI1MiwgMCwgNjAsIDM0LCAyMTEsIDIyMSwgCi0gICAgNjAsIDM0LCAyNTAsIDEwOSwgNjAsIDM0LCAyMjIsIDE5OCwgNjAsIDM0LCAyMzYsIDIsIDYwLCAzNCwgMjE5LCA4MSwgNjAsIAotICAgIDM0LCAyMzMsIDEwMiwgNjAsIDM0LCAyNDksIDE2NCwgNjAsIDM0LCAyMTgsIDIzOSwgNjAsIDM0LCAyMzAsIDEyMCwgNjAsIAotICAgIDM0LCAyMjIsIDIyNywgNjAsIDM0LCAyMTEsIDIwNiwgNjAsIDM0LCAyMjYsIDE5NCwgNjAsIDM0LCAyMTUsIDk4LCA2MCwgCi0gICAgMzQsIDI0NiwgODgsIDYwLCAzNCwgMjE5LCAyNTMsIDIxNiwgMTQ2LCA2MCwgMzQsIDI0NiwgMTI2LCAyNTAsIDE4LCA2MCwgCi0gICAgMzQsIDIwMCwgMjE4LCAxMTAsIDYwLCAzNCwgMTEzLCAyNDIsIDE3LCA2MCwgMzQsIDIyMCwgMiwgNjAsIDM0LCAyNTEsIAotICAgIDE3NywgNjAsIDM0LCAyMTksIDY3LCA2MCwgMzQsIDI1MSwgMTQ1LCA2MCwgMzQsIDIxOCwgMTQwLCA2MCwgMzQsIDI0MSwgCi0gICAgMjM0LCA2MCwgMzQsIDI0MiwgMzUsIDYwLCAzNCwgMjQ3LCAxMzEsIDYwLCAzNCwgMjQyLCAyMiwgNjAsIDM0LCAyNTEsIAotICAgIDE2MiwgNjAsIDM0LCAyMjMsIDE1MCwgNjAsIDM0LCAyMjEsIDE4OSwgNjAsIDM0LCAyNDcsIDIwNywgNjAsIDM0LCAyNTMsIAotICAgIDE3NiwgNjAsIDM0LCAyMTgsIDIzNiwgNjAsIDM0LCAyMjgsIDU2LCA2MCwgMzQsIDIxOCwgMzgsIDYwLCAzNCwgMjIxLCAKLSAgICAyMTMsIDYwLCAzNCwgMjMwLCAxMzMsIDYwLCAzNCwgMjE1LCAyMzYsIDYwLCAzNCwgMjMzLCAxMjgsIDYwLCAzNCwgMjE4LCAKLSAgICAxMzEsIDYwLCAzNCwgMjQ4LCA5NiwgNjAsIDM0LCAyMTIsIDIxLCA2MCwgMzQsIDI0NywgMTU0LCAyMjgsIDU2LCA2MCwgMzQsIAotICAgIDI0OSwgMjIzLCA2MCwgMzQsIDI0MywgMjI5LCA2MCwgMzQsIDI1MCwgMjksIDYwLCAzNCwgMjE4LCAxNDQsIDYwLCAzNCwgCi0gICAgMjEyLCA0MCwgNjAsIDM0LCAyNDQsIDEwNCwgNjAsIDM0LCAyNTAsIDI2LCA2MCwgMzQsIDI0NCwgMTY5LCA2MCwgMzQsIDUyLCAKLSAgICAyMTEsIDE3OCwgNjAsIDM0LCAxNjMsIDIxNSwgMjM3LCAyMTUsIDE4OSwgNjAsIDM0LCAyMTksIDkxLCA2MCwgMzQsIDI0NCwgCi0gICAgMTc5LCA2MCwgMzQsIDI0OSwgMTUzLCA2MCwgMzQsIDI0NywgMTQ0LCA2MCwgMzQsIDIyNCwgMTgyLCA2MCwgMzQsIDIzNSwgCi0gICAgMTQzLCA2MCwgMzQsIDIzMSwgNzIsIDYwLCAzNCwgMjE2LCA4OSwgNjAsIDM0LCAyMTcsIDI0NiwgNjAsIDM0LCAyMzIsIAotICAgIDIzNywgNjAsIDM0LCAyMTQsIDEzMSwgNjAsIDM0LCAyNDQsIDEyOCwgNjAsIDM0LCAyNTEsIDIwNiwgNjQsIDI1MCwgMiwgCi0gICAgNjAsIDM0LCAyMTksIDE5MCwgNjAsIDM0LCAyNDYsIDEyNiwgMjE2LCAyNDMsIDYwLCAzNCwgMjExLCAyNTMsIDYwLCAzNCwgCi0gICAgMjE5LCAxMDUsIDYwLCAzNCwgMjQ3LCAxOTUsIDYwLCAzNCwgMjQ1LCAyMywgNjAsIDM0LCAyMTksIDcsIDYwLCAzNCwgNzUsIAotICAgIDYwLCAzNCwgMjE4LCAxMzMsIDYwLCAzNCwgMjE4LCAyNTAsIDYwLCAzNCwgMjE2LCAwLCA2MCwgMzQsIDI0MiwgMTU0LCA2MCwgCi0gICAgMzQsIDI1MCwgMjI2LCA2MCwgMzQsIDIxOCwgMTYyLCA2MCwgMzQsIDI1MiwgMTYyLCA2MCwgMzQsIDIyMywgMzQsIDYwLCAKLSAgICAzNCwgMjE5LCAxNjksIDYwLCAzNCwgMjM1LCAxMzYsIDYwLCAzNCwgMjI5LCA5NCwgNjAsIDM0LCAyMjAsIDU5LCA2MCwgMzQsIAotICAgIDI0NCwgMTU3LCA2MCwgMzQsIDIyNiwgMjEzLCA2MCwgMzQsIDI1NCwgMTI2LCA2MCwgMzQsIDIyNSwgMzIsIDYwLCAzNCwgCi0gICAgMjQ1LCAyMzUsIDYwLCAzNCwgMjUxLCAxNDAsIDYwLCAzNCwgMjMxLCA5MSwgNjAsIDM0LCAyMzAsIDE4OCwgNjAsIDM0LCAKLSAgICAyMjAsIDE1OCwgNjAsIDM0LCAyNTQsIDQsIDYwLCAzNCwgMjMwLCAxMjgsIDYwLCAzNCwgMjE2LCAyMCwgNjAsIDM0LCAyMjYsIAotICAgIDE2OSwgNjAsIDM0LCAyNTEsIDIwOSwgNjAsIDM0LCAyMTgsIDEyOSwgNjAsIDM0LCAyNDksIDIzMywgNjAsIDM0LCAyNDIsIAotICAgIDE0NiwgNjAsIDM0LCAyMTYsIDEwNywgNjAsIDM0LCAyMzUsIDIyNCwgNjAsIDM0LCAyNTEsIDIxOSwgNjAsIDM0LCAyMTIsIAotICAgIDU4LCAyNDUsIDE1MywgNjAsIDM0LCAyNTAsIDEsIDYwLCAzNCwgMjEyLCA4LCA2MCwgMzQsIDIyMSwgMTcyLCA2MCwgMzQsIAotICAgIDI0MCwgMjU1LCA2MCwgMzQsIDIxOSwgNCwgNjAsIDM0LCAyMTQsIDIyLCA2MCwgMzQsIDI1MiwgODAsIDYwLCAzNCwgMjI1LCAKLSAgICA3NiwgNjAsIDM0LCAyNTIsIDE4MiwgNjAsIDM0LCAyMjAsIDU0LCA2MCwgMzQsIDIyMywgMTEzLCA2MCwgMzQsIDIyMiwgCi0gICAgMTI4LCA2MCwgMzQsIDI0NCwgNDAsIDYwLCAzNCwgMjUxLCAyMDgsIDYwLCAzNCwgMjUwLCAyMzYsIDYwLCAzNCwgMjUxLCAKLSAgICAyMzQsIDYwLCAzNCwgMjMwLCAxMzAsIDYwLCAzNCwgMjEyLCA1NywgNjAsIDM0LCAyNTAsIDM1LCA2MCwgMzQsIDIxMSwgCi0gICAgMjM2LCA2MCwgMzQsIDI0NywgMTg4LCA2MCwgMzQsIDIxMywgMTYxLCA2MCwgMzQsIDI0MiwgMTczLCA2MCwgMzQsIDIzMiwgCi0gICAgMTQzLCA2MCwgMzQsIDI0MywgOTUsIDYwLCAzNCwgMjMwLCAxMjMsIDYwLCAzNCwgMjE5LCA5NiwgNjAsIDM0LCAyMTksIAotICAgIDI1MywgMjE3LCA3NywgMjUxLCAyNDUsIDYwLCAzNCwgMjIzLCAxNjIsIDYwLCAzNCwgMjUxLCAyMTUsIDYwLCAzNCwgMjExLCAKLSAgICAxOTcsIDYwLCAzNCwgMjQ0LCAxOTgsIDYwLCAzNCwgMjMzLCA1OCwgNjAsIDM0LCAyMTcsIDU3LCAyMzMsIDU4LCA2MCwgMzQsIAotICAgIDIzMywgNTQsIDYwLCAzNCwgMjE5LCAzMiwgNjAsIDM0LCAyMzMsIDU5LCA2MCwgMzQsIDIxMSwgMjM5LCA2MCwgMzQsIDI0NCwgCi0gICAgNTQsIDYwLCAzNCwgMjQ1LCAyMjUsIDYwLCAzNCwgMjQxLCAyNDIsIDYwLCAzNCwgMjQ0LCA4LCA2MCwgMzQsIDI0MCwgMjUyLCAKLSAgICA2MCwgMzQsIDI1MSwgMjAyLCA2MCwgMzQsIDIxNywgNjQsIDYwLCAzNCwgMjQyLCA0MSwgNjAsIDM0LCAyNDQsIDEyMSwgNjAsIAotICAgIDM0LCAyMjIsIDMwLCAyMTEsIDIzNiwgNjAsIDM0LCAyNTAsIDIyOCwgNjAsIDM0LCAyNDIsIDIyOSwgNjAsIDM0LCAyNDQsIAotICAgIDk4LCA2MCwgMzQsIDI1MSwgMjQ1LCA2MCwgMzQsIDIyMiwgMywgNjAsIDM0LCAyNDgsIDgyLCA2MCwgMzQsIDIxMiwgMiwgCi0gICAgNjAsIDM0LCAyNDEsIDIxNywgNjAsIDM0LCAyMTEsIDQxLCA2MCwgMzQsIDIzMCwgMTk3LCA2MCwgMzQsIDI1MSwgMjI5LCAKLSAgICA2MCwgMzQsIDI0NSwgMTYzLCA2MCwgMzQsIDI0MywgMjUyLCA2MCwgMzQsIDIxNSwgMjEwLCA2MCwgMzQsIDI0NiwgOTAsIAotICAgIDYwLCAzNCwgMjIzLCAxNDQsIDYwLCAzNCwgMjI4LCA1OCwgNjAsIDM0LCAyNDUsIDQ5LCA2MCwgMzQsIDIxNiwgMTYsIDYwLCAKLSAgICAzNCwgMjQ2LCAxMDQsIDYwLCAzNCwgMjE1LCA5MSwgNjAsIDM0LCAyNDQsIDU2LCAxMTAsIDI0OCwgNDUsIDEzNSwgNDMsIAotICAgIDIxNiwgNDMsIDIyMiwgMjU0LCAxMTAsIDI0OCwgNDUsIDEzNSwgNzIsIDIxNiwgNDMsIDUxLCAxMTAsIDI0OCwgNDUsIDEzNSwgCi0gICAgNDMsIDIxNiwgNDMsIDIzMCwgMjI5LCAyMiwgMjIyLCAyNTQsIDExMCwgMjQ4LCA0NSwgMTM1LCA3MiwgMjE2LCA0MywgMjMwLCAKLSAgICAyMjksIDIyLCA1MSwgMTEwLCAyNDgsIDQ1LCAxMzUsIDI0MywgMjM2LCAyMTgsIDExLCAxMTAsIDI0OCwgNDUsIDEzNSwgCi0gICAgMjE4LCAxMiwgMjQzLCAyNTEsIDQ4LCAxMTAsIDI0OCwgNDUsIDEzNSwgMjE4LCAxMiwgMjQzLCAyNTEsIDUxLCAxMTAsIAotICAgIDI0OCwgNDUsIDEzNSwgMjE4LCAxMiwgMjQzLCAyNTEsIDIzMywgNTIsIDExMCwgMjQ4LCA0NSwgMTM1LCAyMTgsIDEyLCAKLSAgICAyNDMsIDI1MSwgMjE0LCAxNjAsIDIzMywgNTIsIDExMCwgMjQ4LCA0NSwgMTM1LCAyMTgsIDEyLCAyNDMsIDI1MSwgMjE0LCAKLSAgICAxNjAsIDIyMiwgMjU0LCAxMTAsIDI0OCwgNDUsIDEzNSwgMjE4LCAxMiwgMjQzLCAyNTEsIDIzMiwgMTE0LCAyMzMsIDUyLCAKLSAgICAxMTAsIDI0OCwgNDUsIDEzNSwgMjI2LCAxMjYsIDExMCwgMjE5LCAyMCwgMTEwLCAyNDksIDIyNywgMTEwLCAyNDMsIDIzNiwgCi0gICAgMjE4LCAxMzEsIDI0NywgMTg1LCA3OSwgMjM1LCAxMzcsIDIzNSwgMjQzLCAyMTgsIDE2MSwgODcsIDExMCwgMjM1LCAxNjQsIAotICAgIDc5LCAxMTAsIDI1MCwgNCwgNzksIDExMCwgNTQsIDIxMCwgODYsIDQzLCAyNTQsIDExOCwgMTI3LCA0NCwgMjU0LCAxMTgsIAotICAgIDEyNywgNDMsIDUyLCAyNTQsIDExOCwgMTI3LCA0NCwgNTIsIDI1NCwgMTE4LCAxMjcsIDQzLCAyNDksIDE2OSwgMTI3LCA0NCwgCi0gICAgMjQ5LCAxNjksIDEyNywgNDMsIDcxLCAyNDksIDE2OSwgMTI3LCA0NCwgNzEsIDI0OSwgMTY5LCAxMjcsIDQzLCA4NSwgMjMzLCAKLSAgICAyNiwgMTI3LCA0NCwgODUsIDIzMywgMjYsIDEyNywgMjI0LCAyNDAsIDc5LCAyNDMsIDM5LCA3OSwgNDMsIDIxNiwgNywgCi0gICAgMjIwLCA1NSwgMTI3LCA0NCwgMjE2LCA3LCAyMjAsIDU1LCAxMjcsIDQzLCA3MSwgMjMzLCAyNiwgMTI3LCA0NCwgNzEsIAotICAgIDIzMywgMjYsIDEyNywgNDMsIDcxLCAyMTYsIDcsIDIyMCwgNTUsIDEyNywgNDQsIDcxLCAyMTYsIDcsIDIyMCwgNTUsIDEyNywgCi0gICAgNDMsIDcxLCA0MiwgMTI3LCA0NCwgNzEsIDQyLCAxMjcsIDIxMiwgMzYsIDI0OCwgMTY0LCAyMjMsIDUyLCA1MiwgMjI0LCAKLSAgICAxOTQsIDIyNCwgMSwgNzksIDUyLCAyMjQsIDE5NCwgMjI0LCAxLCA3OSwgMTIxLCA1MiwgMjI0LCAxOTQsIDIyNCwgMSwgNzksIAotICAgIDIyNCwgMjQwLCAxNjQsIDI0NCwgMTk4LCAyNDIsIDE1LCAyMjcsIDIwMiwgMTExLCAyNDIsIDE1LCAyMjcsIDIwMiwgMTA1LCAKLSAgICAyNDIsIDE1LCAyMjcsIDIwMiwgMTU4LCAyNDIsIDE1LCAyMjcsIDIwMiwgMTYxLCAyNDIsIDE1LCAyMjcsIDIwMiwgMTkwLCAKLSAgICAyNDIsIDE1LCAyMjcsIDIwMiwgMTk1LCAyNDIsIDE1LCAyMjcsIDIwMiwgMTk5LCAyNDIsIDE1LCAyMjcsIDIwMiwgMTk2LCAKLSAgICAyNDIsIDE1LCAyMjcsIDIwMiwgMjAxLCAxMTAsIDIzMywgOSwgMTM4LCA3OSwgMTEwLCAyMjIsIDIzMSwgMTM4LCA3OSwgCi0gICAgMTEwLCAyNDgsIDUyLCAxMzgsIDc5LCAxMTAsIDI0NSwgMTM2LCAxMzgsIDc5LCAyNCwgMjE5LCAxNTcsIDU5LCAxMzgsIDc5LCAKLSAgICAyNCwgNTIsIDU5LCAxMzgsIDc5LCAyMTIsIDMyLCAyNDgsIDE2NCwgNjcsIDIzNCwgMjM5LCAyMjMsIDgwLCA3OSwgNjcsIAotICAgIDIzNCwgMjM5LCAyMjMsIDgwLCAyLCAyMTMsIDEzNSwgMjE5LCAzMywgNzksIDY3LCAyMzQsIDIzOSwgMjIzLCA4MCwgMTY0LCAKLSAgICAyMTQsIDE2MCwgMjQyLCAzNCwgNjcsIDIzNCwgMjM5LCAyMjMsIDgwLCAyLCAyMTMsIDEzNSwgMjE5LCAzMywgMTY0LCAyMTQsIAotICAgIDE2MCwgMjQyLCAzNCwgNjcsIDIzNCwgMjM5LCAyMjMsIDgwLCAxNjQsIDIzMiwgMTE0LCAyNDIsIDM0LCAzNywgMjI0LCAKLSAgICAyNDAsIDc5LCAxMTAsIDIxNywgNCwgMjMyLCAyMjAsIDI0NCwgMTU0LCAyMjAsIDE0MCwgODcsIDI0MiwgMTUsIDIyNywgCi0gICAgMjAyLCAyMTYsIDI0OCwgMjQyLCAxNSwgMjI3LCAyMDIsIDIxNSwgNzMsIDI0MiwgMTUsIDIyNywgMjAyLCAyMTYsIDE2MywgCi0gICAgNjcsIDExMCwgMjM1LCAxNjQsIDc5LCAyMzEsIDE0NSwgNzksIDIyNiwgMywgMjU0LCAxNDgsIDc5LCAxMTAsIDQ1LCAyMzUsIAotICAgIDI0NSwgMTEwLCAxNjMsIDI0NCwgMTE0LCAyMTksIDIwLCAxNDEsIDEsIDQsIDYxLCAxNDEsIDEsIDYxLCAxNDEsIDEsIDQsIAotICAgIDc0LCAxNDEsIDEsIDc0LCAxNDEsIDEsIDQsIDY5LCAxNDEsIDEsIDY5LCAxNDEsIDEsIDQsIDc2LCAxNDEsIDEsIDc2LCAKLSAgICAxNDEsIDEsIDQsIDc4LCAxNDEsIDEsIDc4LCAxNDEsIDEsIDE3NiwgMTQxLCAxLCAyNDMsIDE0MiwgMTQxLCAxLCAyMzQsIAotICAgIDk4LCAxNDEsIDEsIDI0MiwgMjIxLCAxNDEsIDEsIDIzMywgMjIzLCAxNDEsIDEsIDI0MiwgMTIwLCAxNDEsIDEsIDIzNCwgCi0gICAgMTg4LCAxNDEsIDEsIDI0MywgNjksIDE0MSwgMSwgMjM0LCAzNCwgMTQxLCAxLCAyNDIsIDE4MSwgMTQxLCAxLCAyMDYsIAotICAgIDE0MSwgMSwgMjEwLCAxMTYsIDE0MSwgMSwgMjE5LCAxOTMsIDE0MSwgMSwgMjEwLCA0NCwgMTQxLCAxLCAyMTgsIDg0LCAKLSAgICAxNDEsIDEsIDIxMCwgMTMsIDE0MSwgMSwgMjIxLCAxODMsIDE0MSwgMSwgMjEwLCA5NCwgMTQxLCAxLCAyMTksIDYwLCAxNDEsIAotICAgIDEsIDIxMCwgMjMsIDE0MSwgMSwgMjE3LCAxMDYsIDE0MSwgMSwgMjQ4LCAyMjksIDE0MSwgMSwgMjE2LCAxMTgsIDE0MSwgMSwgCi0gICAgMjQ4LCAxMSwgMTQxLCAxLCA0LCAyMTUsIDExOSwgMTQxLCAxLCAyMTUsIDExOSwgMTQxLCAxLCAyNDYsIDg2LCAxNDEsIDEsIAotICAgIDIxNywgMjMsIDE0MSwgMSwgMjQ4LCA5OCwgMTQxLCAxLCAxMTIsIDE0MSwgMSwgMjQ3LCAxNTMsIDE0MSwgMSwgMTk4LCAKLSAgICAxNDEsIDEsIDIyOCwgMjM4LCAxNDEsIDEsIDIyNywgMjQyLCAxNDEsIDEsIDIyOSwgMTEyLCAxNDEsIDEsIDIyOCwgNzksIAotICAgIDE0MSwgMSwgMTYyLCAxNDEsIDEsIDI1MiwgMTk5LCAxNDEsIDEsIDE5MSwgMTQxLCAxLCAyNDEsIDE4NywgMTQxLCAxLCAKLSAgICAyNTIsIDE0LCAxNDEsIDEsIDIyNSwgMTExLCAxNDEsIDEsIDI0MCwgMjI5LCAxNDEsIDEsIDI1MSwgMTMzLCAxNDEsIDEsIAotICAgIDIyNCwgMTUzLCAxNDEsIDEsIDI0MSwgMjQ1LCAxNDEsIDEsIDI1MiwgODMsIDE0MSwgMSwgMjI1LCAyMjQsIDE0MSwgMSwgCi0gICAgMjQxLCA3NSwgMTQxLCAxLCAyNTEsIDIxMywgMTQxLCAxLCAyMjUsIDE5LCAxNDEsIDEsIDE4NiwgMTQxLCAxLCAyMzAsIAotICAgIDIzNSwgMTQxLCAxLCAyMzAsIDEwNywgMTQxLCAxLCAyMzEsIDk2LCAxNDEsIDEsIDIzMCwgMTY2LCAxNDEsIDEsIDQsIDE5MiwgCi0gICAgMTQxLCAxLCAxOTIsIDE0MSwgMSwgNCwgMjEwLCAyMTIsIDE0MSwgMSwgMjEwLCAyMTIsIDE0MSwgMSwgNCwgMjEwLCAyNDQsIAotICAgIDE0MSwgMSwgMjEwLCAyNDQsIDE0MSwgMSwgMjA1LCAxNDEsIDEsIDIyMywgMzgsIDE0MSwgMSwgMjIyLCAxNDIsIDE0MSwgMSwgCi0gICAgMjIzLCAxMzEsIDE0MSwgMSwgMjIyLCAyMTMsIDE0MSwgMSwgNCwgMjEyLCA2NSwgMTQxLCAxLCAyMTIsIDY1LCAxNDEsIDEsIAotICAgIDIxMSwgMjUwLCAxNDEsIDEsIDIxMiwgMjIsIDE0MSwgMSwgMjExLCAyMjcsIDE0MSwgMSwgMjMwLCAzMCwgMTQxLCAxLCAKLSAgICAyMTIsIDExNiwgMTQxLCAxLCA0LCAxNzYsIDE0MSwgMSwgNCwgMjM0LCAxODgsIDM4LCAyMzQsIDIwNywgMjEzLCAxMzUsIAotICAgIDIxOSwgMzMsIDc5LCAzOCwgMjM0LCAyMDcsIDIyMCwgMTU3LCAyMTksIDMzLCA3OSwgMjM0LCAyMDcsIDIxMywgMTM1LCAKLSAgICAyMTksIDMzLCA3OSwgMjM0LCAyMDcsIDIyMCwgMTU3LCAyMTksIDMzLCA3OSwgMTQxLCAyMzUsIDE2NCwgNzksIDE0MSwgCi0gICAgMjEzLCAxMzUsIDIzNSwgMTY0LCA3OSwgMTQxLCAyNDcsIDIyOSwgMjEwLCAyMjUsIDIzNCwgMjA3LCA1MiwgMjQwLCAxNzUsIAotICAgIDU2LCAxLCA0LCA2MSwgNTYsIDEsIDYxLCA1NiwgMSwgNCwgNzQsIDU2LCAxLCA3NCwgNTYsIDEsIDQsIDY5LCA1NiwgMSwgCi0gICAgNjksIDU2LCAxLCA0LCA3NiwgNTYsIDEsIDc2LCA1NiwgMSwgNCwgNzgsIDU2LCAxLCA3OCwgNTYsIDEsIDE3NiwgNTYsIDEsIAotICAgIDI0MywgMTQyLCA1NiwgMSwgMjM0LCA5OCwgNTYsIDEsIDI0MiwgMjIxLCA1NiwgMSwgMjMzLCAyMjMsIDU2LCAxLCAyNDIsIAotICAgIDEyMCwgNTYsIDEsIDIzNCwgMTg4LCA1NiwgMSwgMjQzLCA2OSwgNTYsIDEsIDIzNCwgMzQsIDU2LCAxLCAyNDIsIDE4MSwgCi0gICAgNTYsIDEsIDIwNiwgNTYsIDEsIDIxMCwgMTE2LCA1NiwgMSwgMjE5LCAxOTMsIDU2LCAxLCAyMTAsIDQ0LCA1NiwgMSwgMjE4LCAKLSAgICA4NCwgNTYsIDEsIDIxMCwgMTMsIDU2LCAxLCAyMjEsIDE4MywgNTYsIDEsIDIxMCwgOTQsIDU2LCAxLCAyMTksIDYwLCA1NiwgCi0gICAgMSwgMjEwLCAyMywgNTYsIDEsIDIxNywgMTA2LCA1NiwgMSwgMjQ4LCAyMjksIDU2LCAxLCAyMTYsIDExOCwgNTYsIDEsIAotICAgIDI0OCwgMTEsIDU2LCAxLCA0LCAyMTUsIDExOSwgNTYsIDEsIDIxNSwgMTE5LCA1NiwgMSwgMjQ2LCA4NiwgNTYsIDEsIDIxNywgCi0gICAgMjMsIDU2LCAxLCAyNDgsIDk4LCA1NiwgMSwgMTEyLCA1NiwgMSwgMjQ3LCAxNTMsIDU2LCAxLCAxOTgsIDU2LCAxLCAyMjgsIAotICAgIDIzOCwgNTYsIDEsIDIyNywgMjQyLCA1NiwgMSwgMjI5LCAxMTIsIDU2LCAxLCAyMjgsIDc5LCA1NiwgMSwgMTYyLCA1NiwgMSwgCi0gICAgMjUyLCAxOTksIDU2LCAxLCAxOTEsIDU2LCAxLCAyNDEsIDE4NywgNTYsIDEsIDI1MiwgMTQsIDU2LCAxLCAyMjUsIDExMSwgCi0gICAgNTYsIDEsIDI0MCwgMjI5LCA1NiwgMSwgMjUxLCAxMzMsIDU2LCAxLCAyMjQsIDE1MywgNTYsIDEsIDI0MSwgMjQ1LCA1NiwgCi0gICAgMSwgMjUyLCA4MywgNTYsIDEsIDIyNSwgMjI0LCA1NiwgMSwgMjQxLCA3NSwgNTYsIDEsIDI1MSwgMjEzLCA1NiwgMSwgMjI1LCAKLSAgICAxOSwgNTYsIDEsIDE4NiwgNTYsIDEsIDIzMCwgMjM1LCA1NiwgMSwgMjMwLCAxMDcsIDU2LCAxLCAyMzEsIDk2LCA1NiwgMSwgCi0gICAgMjMwLCAxNjYsIDU2LCAxLCA0LCAxOTIsIDU2LCAxLCAxOTIsIDU2LCAxLCA0LCAyMTAsIDIxMiwgNTYsIDEsIDIxMCwgMjEyLCAKLSAgICA1NiwgMSwgNCwgMjEwLCAyNDQsIDU2LCAxLCAyMTAsIDI0NCwgNTYsIDEsIDIwNSwgNTYsIDEsIDIyMywgMzgsIDU2LCAxLCAKLSAgICAyMjIsIDE0MiwgNTYsIDEsIDIyMywgMTMxLCA1NiwgMSwgMjIyLCAyMTMsIDU2LCAxLCA0LCAyMTIsIDY1LCA1NiwgMSwgCi0gICAgMjEyLCA2NSwgNTYsIDEsIDIxMSwgMjUwLCA1NiwgMSwgMjEyLCAyMiwgNTYsIDEsIDIxMSwgMjI3LCA1NiwgMSwgMjMwLCAKLSAgICAzMCwgNTYsIDEsIDIxMiwgMTE2LCA1NiwgMSwgNCwgMTc2LCA1NiwgMSwgNCwgMjM0LCAxODgsIDU2LCAxLCAyMTQsIDI3LCAKLSAgICA1NiwgMSwgMjEzLCAxNzYsIDU2LCAxLCAyMTMsIDI1NSwgNTYsIDEsIDIxMywgMTM4LCA1NiwgMjMwLCAyMjksIDI0NywgCi0gICAgMTI4LCAyMzQsIDIwNywgMjI0LCAxNzYsIDIxOSwgMzMsIDc5LCA1NiwgMjM1LCAxNjQsIDc5LCA1NiwgMjEzLCAxMzUsIAotICAgIDIzNSwgMTY0LCA3OSwgNTYsIDI0NywgMjI5LCAyMzQsIDUsIDI1MSwgMTkyLCAxLCAyNTMsIDE2NiwgMjUxLCAxOTIsIDEsIAotICAgIDIyNiwgMTA5LCAyNTEsIDE5MiwgMSwgMTk0LCAyNTEsIDE5MiwgMSwgMjQ1LCAxNCwgMjUxLCAxOTIsIDEsIDI0OSwgNjgsIAotICAgIDI1MSwgMTkyLCAxLCAyMTcsIDE1MywgMjUxLCAxOTIsIDEsIDIzMCwgMzAsIDI1MSwgMTkyLCAxLCAxNTYsIDI1MSwgMTkyLCAKLSAgICAxLCAyNDMsIDIwOSwgMjUxLCAxOTIsIDEsIDIzNSwgMjksIDI1MSwgMTkyLCAxLCAyNDIsIDY3LCAyNTEsIDE5MiwgMSwgCi0gICAgMjM1LCAxNTAsIDI1MSwgMTkyLCAxLCAyMjQsIDk5LCAyNTEsIDE5MiwgMSwgMjExLCAxNzgsIDI1MSwgMTkyLCAxLCAyMTAsIAotICAgIDgzLCAyNTEsIDE5MiwgMSwgMjUwLCAxNjYsIDI1MSwgMTkyLCAxLCAyMjAsIDEwNiwgMjUxLCAxOTIsIDEsIDE1MywgMjUxLCAKLSAgICAxOTIsIDEsIDIxMCwgMTU5LCAyNTEsIDE5MiwgMSwgMjUxLCA3NCwgMjUxLCAxOTIsIDEsIDIyMiwgOTMsIDI1MSwgMTkyLCAKLSAgICAxLCA2MSwgMjUxLCAxOTIsIDEsIDc4LCAyNTEsIDE5MiwgMSwgNzYsIDI1MSwgMTkyLCAxLCAyNDUsIDIwNSwgMjUxLCAxOTIsIAotICAgIDEsIDI1NCwgMjEwLCAyNTEsIDE5MiwgMSwgMjQ1LCAyMDMsIDI1MSwgMTkyLCAxLCAyNTMsIDIwMCwgMjUxLCAxOTIsIDEsIAotICAgIDIyNiwgMTM4LCAyNTEsIDE5MiwgMSwgMjU0LCAxMzEsIDI1MSwgMTkyLCAxLCAyNDUsIDE1OCwgMjUxLCAxOTIsIDEsIDI1NCwgCi0gICAgMTIzLCAyNTEsIDE5MiwgMSwgMjQ1LCAxNDYsIDI1MSwgMTkyLCAxLCAyNDUsIDEwMCwgMjUxLCAxOTIsIDEsIDc0LCAyNTEsIAotICAgIDE5MiwgMSwgNjksIDI1MSwgMTkyLCAxLCAyMzUsIDE2MiwgMjUxLCAxOTIsIDEsIDIxNCwgMTA1LCAyNTEsIDE5MiwgMSwgCi0gICAgMjI5LCA4NCwgMjUxLCAxOTIsIDEsIDI0MiwgMTg1LCAyNTEsIDE5MiwgMSwgMjM2LCA0MSwgMjQsIDEsIDIzNCwgNjQsIDI0LCAKLSAgICAxLCAyMTgsIDIxNywgMjQsIDEsIDIzNCwgNTcsIDI0LCAxLCAyMjgsIDIzMSwgMjQsIDEsIDIyOCwgMjI5LCAyNCwgMSwgCi0gICAgMjI4LCAyMjgsIDI0LCAxLCAyMTYsIDEwMiwgMjQsIDEsIDIxOCwgMjA2LCAyNCwgMSwgMjIzLCAyOSwgMjQsIDEsIDIyMywgCi0gICAgMjQsIDI0LCAxLCAyMjMsIDIxLCAyNCwgMSwgMjIzLCAxNCwgMjQsIDEsIDIyMywgOSwgMjQsIDEsIDIyMywgNCwgMjQsIDEsIAotICAgIDIyMywgMTUsIDI0LCAxLCAyMjMsIDI3LCAyNCwgMSwgMjMwLCAyMjIsIDI0LCAxLCAyMjUsIDk4LCAyNCwgMSwgMjE4LCAKLSAgICAyMTQsIDI0LCAxLCAyMjUsIDg3LCAyNCwgMSwgMjE5LCAxNTAsIDI0LCAxLCAyMTgsIDIxMSwgMjQsIDEsIDIzNiwgNjMsIAotICAgIDI0LCAxLCAyNTAsIDU0LCAyNCwgMSwgMjE4LCAyMjEsIDI0LCAxLCAyNTAsIDExNCwgMjQsIDEsIDIzNCwgMTE2LCAyNCwgMSwgCi0gICAgMjE2LCAxNzQsIDI0LCAxLCAyMjUsIDEzNCwgMjQsIDEsIDI0MSwgMTc5LCAyNCwgMSwgNjEsIDI0LCAxLCAyNTQsIDI1MiwgCi0gICAgMjQsIDEsIDE5MiwgMjQsIDEsIDIxMSwgOTIsIDI0LCAxLCAyNDUsIDEyNSwgMjQsIDEsIDc2LCAyNCwgMSwgMjExLCAzNiwgCi0gICAgMjQsIDEsIDIxMSwgNDcsIDI0LCAxLCA3OCwgMjQsIDEsIDIxMiwgNjUsIDI0LCAxLCAyMTIsIDYyLCAyNCwgMSwgMjI2LCAKLSAgICAyMzgsIDI0LCAxLCAyMTAsIDI0NCwgMjQsIDEsIDY5LCAyNCwgMSwgMjEyLCAxMSwgMjQsIDEsIDIxMiwgMjIsIDI0LCAxLCAKLSAgICAyMTEsIDI1MCwgMjQsIDEsIDIxMCwgMjEyLCAyNCwgMSwgMjQ1LCA2MywgMjQsIDEsIDIxMSwgOCwgMjQsIDEsIDc0LCAyNCwgCi0gICAgMjQ0LCAxMTEsIDI0LCAxLCAyMTgsIDIxNSwgMjQsIDEsIDIyOCwgMjIxLCAyNCwgMSwgMjI4LCAyMjMsIDI0LCAxLCAyMjgsIAotICAgIDIyNiwgMjQsIDEsIDIyMywgMjIsIDI0LCAxLCAyMjMsIDMsIDI0LCAxLCAyMjMsIDExLCAyNCwgMSwgMjIzLCAxNiwgMjQsIAotICAgIDEsIDIyMywgMSwgMjQsIDEsIDIzMCwgMjE1LCAyNCwgMSwgMjMwLCAyMTIsIDI0LCAxLCAyMzAsIDIxNiwgMjQsIDEsIDIzNCwgCi0gICAgMjI3LCAyNCwgMSwgMjI1LCA5MywgMjQsIDEsIDIyNSwgNzksIDI0LCAxLCAyMjUsIDg1LCAyNCwgMSwgMjI1LCA4MiwgMjQsIAotICAgIDEsIDIyNSwgOTYsIDI0LCAxLCAyMjUsIDgwLCAyNCwgMSwgMjM0LCAyMjUsIDI0LCAxLCAyMzQsIDIyMywgMjQsIDEsIDIxOSwgCi0gICAgMTQzLCAyNCwgMSwgMjE5LCAxNDEsIDI0LCAxLCAyMTksIDEzMywgMjQsIDEsIDIxOSwgMTM4LCAyNCwgMSwgMjE5LCAxNDgsIAotICAgIDI0LCAxLCAyMjYsIDM2LCAyNCwgMSwgMjE4LCAyMTgsIDI0LCAxLCAyMTEsIDI2LCAyNCwgMSwgMjExLCAyMiwgMjQsIDEsIAotICAgIDIxMSwgMjMsIDI0LCAxLCAyMzQsIDIyNiwgMjQsIDEsIDIxOCwgMjE5LCAyNCwgMSwgMjExLCAzMiwgMjQsIDEsIDIxMCwgCi0gICAgMjM4LCAyNCwgMSwgMjEwLCAyMzcsIDI0LCAxLCAyMTAsIDI0MCwgMjQsIDEsIDIxMCwgMjAzLCAyNCwgMSwgMjEwLCAyMDQsIAotICAgIDI0LCAxLCAyMTAsIDIwNywgMjQsIDEsIDI1NCwgNDIsIDI0LCAxLCAyNTQsIDM2LCAxMTAsIDI1NCwgMTA3LCAyMzIsIDIwOSwgCi0gICAgNzksIDExMCwgMjU0LCAxMDcsIDIyMywgNTMsIDc5LCAxMTAsIDI1NCwgMTA3LCAxMjMsIDc5LCAxMTAsIDI1NCwgMTA3LCAKLSAgICAxMTMsIDc5LCAxMTAsIDI1NCwgMTA3LCAxMzQsIDc5LCAxMTAsIDI1NCwgMTA3LCAyNDQsIDE5LCA3OSwgMTEwLCAyNTQsIAotICAgIDEwNywgMjE2LCAxNSwgNzksIDExMCwgMjU0LCAxMDcsIDIzMCwgMjI5LCA3OSwgMTEwLCAyNTQsIDEwNywgMjUxLCAxODMsIAotICAgIDc5LCAxMTAsIDI1NCwgMTA3LCAyNDQsIDEwMCwgNzksIDExMCwgMjU0LCAxMDcsIDIyMSwgMTc4LCA3OSwgMTEwLCAyNTQsIAotICAgIDEwNywgMjE2LCAxNzAsIDc5LCAxMTAsIDI1NCwgMTA3LCAyNDQsIDEyLCA3OSwgMTEwLCAyNTQsIDEwNywgMjQxLCAyMzEsIAotICAgIDc5LCAxMTAsIDI1NCwgMTA3LCAyNDUsIDIzMiwgNzksIDExMCwgMjU0LCAxMDcsIDIzMSwgMTkxLCA3OSwgMjUxLCAxOTIsIAotICAgIDEsIDI1MSwgMTMzLCAyNTEsIDE5MiwgMSwgMjEwLCA0NCwgMjUxLCAxOTIsIDEsIDIzNSwgMTE0LCAyNTEsIDE5MiwgMSwgCi0gICAgMjQyLCAxMjAsIDI1MSwgMTkyLCAxLCAyNDUsIDIxNywgMjUxLCAxOTIsIDEsIDI0NSwgMTQzLCAyNTEsIDE5MiwgMSwgMjI2LCAKLSAgICAxODcsIDI1MSwgMTkyLCAxLCAyMjYsIDE5MSwgMjUxLCAxOTIsIDEsIDIzNSwgMTg2LCAyNTEsIDE5MiwgMSwgMjU0LCAxMDksIAotICAgIDI1MSwgMTkyLCAxLCAyMzUsIDIzMSwgMjUxLCAxOTIsIDEsIDIxNCwgMTY4LCAyNTEsIDE5MiwgMSwgMjM2LCAyMywgMjUxLCAKLSAgICAxOTIsIDEsIDIyOSwgNjIsIDI1MSwgMTkyLCAxLCAyNTQsIDIwNCwgMjUxLCAxOTIsIDEsIDI1MywgMTk1LCAyNTEsIDE5MiwgCi0gICAgMSwgMjU0LCAxNDQsIDI1MSwgMTkyLCAxLCAyMjYsIDIwOCwgMjUxLCAxOTIsIDEsIDIyNiwgMTkzLCAyNTEsIDE5MiwgMSwgCi0gICAgMjM1LCAyMjgsIDI1MSwgMTkyLCA0MCwgMSwgMjI2LCAxMDksIDI1MSwgMTkyLCA0MCwgMSwgMjE3LCAxNTMsIDI1MSwgMTkyLCAKLSAgICA0MCwgMSwgMjM1LCAyOSwgMjUxLCAxOTIsIDQwLCAxLCAyNDIsIDY3LCAyNTEsIDE5MiwgMSwgMjQzLCAxLCAyNTEsIDE5MiwgCi0gICAgMSwgMjMzLCA1LCAyNTEsIDE5MiwgMSwgMjA5LCAyNTAsIDEwLCAyMTgsIDEwNSwgMjE3LCAxNTMsIDEwLCAyMTgsIDEwNSwgCi0gICAgMjEyLCA0LCAxMCwgMjE4LCAxMDUsIDIxMSwgMTU4LCAxMCwgMjE4LCAxMDUsIDI1MSwgODcsIDEwLCAyMTgsIDEwNSwgMjE3LCAKLSAgICAyNTUsIDEwLCAyMTgsIDEwNSwgMjQwLCAxNjUsIDEwLCAyMTgsIDEwNSwgMjQwLCAxNjksIDEwLCAyMTgsIDEwNSwgMjQwLCAKLSAgICAyMzgsIDEwLCAyMTgsIDEwNSwgMjQwLCAxNjYsIDEwLCAyMTgsIDEwNSwgMjE3LCAxNTYsIDEwLCAyMTgsIDEwNSwgMjQwLCAKLSAgICAxNjgsIDEwLCAyMTgsIDEwNSwgMjQwLCAxNjQsIDEwLCAyMTgsIDEwNSwgMjQwLCAyMzYsIDEwLCAyMTgsIDEwNSwgMjQwLCAKLSAgICAxNjcsIDEwLCAyMTgsIDEwNSwgMjQwLCAxNjMsIDEwLCAyMTgsIDEwNSwgMjMwLCAzMCwgMTAsIDIxOCwgMTA1LCAyNDIsIAotICAgIDY3LCAxMCwgMjE4LCAxMDUsIDIyMiwgOTMsIDEwLCAyMTgsIDEwNSwgMjI2LCAxMDksIDEwLCAyMTgsIDEwNSwgMjE5LCAyMywgCi0gICAgMTAsIDIxOCwgMTA1LCAyNDksIDY4LCAxMCwgMjE4LCAxMDUsIDI0MCwgMTcwLCAxMCwgMjE4LCAxMDUsIDI0MSwgMTk3LCAKLSAgICAxMCwgMjE4LCAxMDUsIDIxNywgMTY1LCAxMCwgMjE4LCAxMDUsIDIxNywgMjM0LCAxMCwgMjE4LCAxMDUsIDIxOCwgMTcwLCAKLSAgICAxMCwgMjE4LCAxMDUsIDIyMCwgMTEyLCAxMCwgMjE4LCAxMDUsIDIyNSwgMjI4LCAxMCwgMjE4LCAxMDUsIDIyNCwgMTAxLCAKLSAgICAxMCwgMjE4LCAxMDUsIDIxNiwgNDQsIDEwLCAyMTgsIDEwNSwgMjE3LCAxNTUsIDEwLCAyMTgsIDEwNSwgMjE3LCAyNDUsIAotICAgIDEwLCAyMTgsIDEwNSwgMjQwLCAxNzcsIDEwLCAyMTgsIDEwNSwgMjQwLCAxNjIsIDEwLCAyMTgsIDEwNSwgMjI1LCAxNTIsIAotICAgIDEwLCAyMTgsIDEwNSwgMjI0LCA5OSwgNTYsIDEsIDQsIDIzMywgMjIzLCA1NiwgMSwgNCwgMjE5LCAxOTMsIDU2LCAxLCA0LCAKLSAgICAyMTgsIDg0LCA1NiwgMSwgNCwgMTEyLCA1NiwgMSwgNCwgMjI3LCAyNDIsIDU2LCAxLCA0LCAxNjIsIDU2LCAxLCA0LCAyNDEsIAotICAgIDE4NywgNTYsIDEsIDQsIDI0MCwgMjI5LCA1NiwgMSwgNCwgMjQxLCAyNDUsIDU2LCAxLCA0LCAyNDEsIDc1LCA1NiwgMSwgNCwgCi0gICAgMjMwLCAxMDcsIDU2LCAxLCA0LCAyMDUsIDU2LCAxLCA0LCAyMjMsIDM4LCA1NiwgMSwgNCwgMjIyLCAxNDIsIDU2LCAxLCA0LCAKLSAgICAyMjMsIDEzMSwgNTYsIDEsIDQsIDIyMiwgMjEzLCA4OCwgMjQsIDIzNCwgNjQsIDg4LCAyNCwgMjI4LCAyMzEsIDg4LCAyNCwgCi0gICAgMjE2LCAxMDIsIDg4LCAyNCwgMjIzLCAyOSwgODgsIDI0LCAyMzAsIDIyMiwgODgsIDI0LCAyMjUsIDk4LCA4OCwgMjQsIAotICAgIDIxOSwgMTUwLCA4OCwgMjQsIDIzNiwgNjMsIDg4LCAyNCwgMjUwLCA1NCwgODgsIDI0LCAyNTAsIDExNCwgODgsIDI0LCAKLSAgICAyMzQsIDExNiwgODgsIDI0LCAyMTYsIDE3NCwgODgsIDI0LCAyMjUsIDEzNCwgODgsIDI0LCAyNDEsIDE3OSwgODgsIDI0LCAKLSAgICAyMzQsIDY1LCA2MSwgODgsIDI0LCAyMjgsIDIzMiwgNjEsIDg4LCAyNCwgMjE2LCAxMDMsIDYxLCA4OCwgMjQsIDIyMywgMzAsIAotICAgIDYxLCA4OCwgMjQsIDIzMCwgMjIzLCA2MSwgODgsIDI0LCAyMjUsIDk5LCA2MSwgODgsIDI0LCAyMTksIDE1MSwgNjEsIDg4LCAKLSAgICAyNCwgMjM2LCA2NCwgNjEsIDg4LCAyNCwgMjUwLCA1NSwgNjEsIDg4LCAyNCwgMjUwLCAxMTUsIDYxLCA4OCwgMjQsIDIzNCwgCi0gICAgMTE3LCA2MSwgODgsIDI0LCAyMTYsIDE3NSwgNjEsIDg4LCAyNCwgMjI1LCAxMzUsIDYxLCA4OCwgMjQsIDI0MSwgMTgwLCAKLSAgICA2MSwgODgsIDI0LCAyNTAsIDU1LCA2OSwgODgsIDIzNCwgOSwgMTM1LCAyMjYsIDIyMSwgODgsIDIzNCwgOSwgMTM1LCAxNDQsIAotICAgIDI0MCwgMjI5LCA4OCwgMTU0LCAxMTEsIDg4LCAxNTQsIDEwNSwgODgsIDE1NCwgMTU4LCA4OCwgMTU0LCAxNjEsIDg4LCAKLSAgICAxNTQsIDE5MCwgODgsIDE1NCwgMTk1LCA4OCwgMTU0LCAxOTksIDg4LCAxNTQsIDE5NiwgODgsIDE1NCwgMjAxLCA4OCwgCi0gICAgMTU0LCAyMTYsIDI0OCwgODgsIDE1NCwgMjMwLCAxMzMsIDg4LCAxNTQsIDI0NCwgMTA0LCA4OCwgMTU0LCAyMTIsIDQwLCAKLSAgICA4OCwgMTU0LCAyMTEsIDIxNCwgODgsIDE1NCwgMjMxLCA0NCwgODgsIDE1NCwgMjQ1LCAyMzEsIDg4LCAxNTQsIDIxOCwgMzgsIAotICAgIDg4LCAxNTQsIDIxOCwgMTM0LCA4OCwgMTU0LCAyNDEsIDI1MSwgODgsIDE1NCwgMjE5LCA1NiwgODgsIDE1NCwgMjI5LCAKLSAgICAyMDksIDg4LCAxNTQsIDIxOSwgNiwgODgsIDE1NCwgMjQ0LCAxMTAsIDg4LCAxNTQsIDI0OSwgMjA4LCA4OCwgMTU0LCAyMzMsIAotICAgIDEzMSwgODgsIDE1NCwgMjIzLCA3NCwgODgsIDE1NCwgMjUxLCAyMywgODgsIDE1NCwgMjE4LCA4OCwgODgsIDE1NCwgMjE4LCAKLSAgICAyMSwgODgsIDE1NCwgMjQ1LCAxMzUsIDg4LCAxNTQsIDIyMywgNjYsIDg4LCAxNTQsIDI1NCwgMTU5LCA4OCwgMTU0LCAyNDQsIAotICAgIDEzNiwgODgsIDE1NCwgMjIzLCA2NCwgODgsIDE1NCwgMjIwLCAxNTgsIDg4LCAxNTQsIDIyMywgMTMwLCAzNywgMTU0LCAKLSAgICAyMjQsIDE1LCAzNywgMTU0LCAyMzQsIDg2LCAzNywgMTU0LCAyMjEsIDIwMCwgMzcsIDE1NCwgMjM0LCA1LCAzNywgNTQsIAotICAgIDIxNiwgMjQ5LCAyMjYsIDIwMSwgODUsIDIxOCwgMjM2LCAzNywgNTQsIDIxNSwgNzQsIDIyNiwgMjAxLCA4NSwgMjE4LCAKLSAgICAyMzYsIDM3LCA1NCwgMjE2LCAxNjQsIDIyNiwgMjAxLCA4NSwgMjE4LCAyMzYsIDM3LCA1NCwgMjQ0LCAyNCwgMjI2LCAyMDEsIAotICAgIDg1LCAyMTgsIDIzNiwgMzcsIDU0LCAyNDQsIDEyMywgMjI2LCAyMDEsIDg1LCAyMTgsIDIzNiwgMzcsIDU0LCAyMTksIDExNCwgCi0gICAgMjI2LCAyMDEsIDg1LCAyMTgsIDIzNiwgMzcsIDU0LCAyMjAsIDExOSwgMjI2LCAyMDEsIDg1LCAyMTgsIDIzNiwgMzcsIDU0LCAKLSAgICAyNDUsIDE5MywgMjI2LCAyMDEsIDg1LCAyMTgsIDIzNiwgMjI1LCAyNTUsIDUwLCAzNywgNTQsIDIxNSwgNzQsIDExMSwgMzcsIAotICAgIDU0LCAyMTUsIDc0LCAxMDUsIDM3LCA1NCwgMjE1LCA3NCwgMTU4LCAzNywgNTQsIDIxNSwgNzQsIDE2MSwgMzcsIDU0LCAKLSAgICAyMTUsIDc0LCAxOTAsIDM3LCA1NCwgMjE1LCA3NCwgMTk1LCAzNywgNTQsIDIxNSwgNzQsIDE5OSwgMzcsIDU0LCAyMTUsIAotICAgIDc0LCAxOTYsIDM3LCA1NCwgMjE1LCA3NCwgMjAxLCAzNywgNTQsIDIxNiwgMTYzLCAzNywgNTQsIDIxNiwgMTY0LCAxMTEsIAotICAgIDM3LCA1NCwgMjE2LCAxNjQsIDEwNSwgMzcsIDU0LCAyMTYsIDE2NCwgMTU4LCAzNywgNTQsIDIxNiwgMTY0LCAxNjEsIDM3LCAKLSAgICA1NCwgMjE2LCAxNjQsIDE5MCwgMzcsIDI0LCAyMzQsIDY0LCAzNywgMjQsIDIyOCwgMjMxLCAzNywgMjQsIDIxNiwgMTAyLCAKLSAgICAzNywgMjQsIDIyMywgMjksIDM3LCAyNCwgMjMwLCAyMjIsIDM3LCAyNCwgMjI1LCA5OCwgMzcsIDI0LCAyMTksIDE1MCwgMzcsIAotICAgIDI0LCAyMzYsIDYzLCAzNywgMjQsIDI1MCwgNTQsIDM3LCAyNCwgMjUwLCAxMTQsIDM3LCAyNCwgMjM0LCAxMTYsIDM3LCAyNCwgCi0gICAgMjE2LCAxNzQsIDM3LCAyNCwgMjI1LCAxMzQsIDM3LCAyNCwgMjQxLCAxNzksIDM3LCAyNCwgMjM0LCA2NSwgNjEsIDM3LCAKLSAgICAyNCwgMjI4LCAyMzIsIDYxLCAzNywgMjQsIDIxNiwgMTAzLCA2MSwgMzcsIDI0LCAyMjMsIDMwLCA2MSwgMzcsIDI0LCAyMzAsIAotICAgIDIyMywgNjEsIDM3LCAyNCwgMjI1LCA5OSwgNjEsIDM3LCAyNCwgMjE5LCAxNTEsIDYxLCAzNywgMjQsIDIzNiwgNjQsIDYxLCAKLSAgICAzNywgMjQsIDI1MCwgNTUsIDYxLCAzNywgMjQsIDI1MCwgMTE1LCA2MSwgMzcsIDI0LCAyMzQsIDExNywgNjEsIDM3LCAyNCwgCi0gICAgMjE2LCAxNzUsIDYxLCAzNywgMjQsIDIyNSwgMTM1LCA2MSwgMzcsIDI0LCAyNDEsIDE4MCwgNjEsIDM3LCAyMzQsIDksIAotICAgIDEzNSwgMjUwLCAxNTYsIDM3LCAyMzQsIDksIDEzNSwgMjM1LCA1MywgMzcsIDI0LCAyMzYsIDY0LCA2OSwgMjM0LCA5LCAKLSAgICAyMTgsIDE2MSwgODcsIDM3LCAxNTQsIDExMSwgMzcsIDE1NCwgMTA1LCAzNywgMTU0LCAxNTgsIDM3LCAxNTQsIDE2MSwgMzcsIAotICAgIDE1NCwgMTkwLCAzNywgMTU0LCAxOTUsIDM3LCAxNTQsIDE5OSwgMzcsIDE1NCwgMTk2LCAzNywgMTU0LCAyMDEsIDM3LCAKLSAgICAxNTQsIDIxNiwgMjQ4LCAzNywgMTU0LCAyMzAsIDEzMywgMzcsIDE1NCwgMjQ0LCAxMDQsIDM3LCAxNTQsIDIxMiwgNDAsIAotICAgIDM3LCAxNTQsIDIxMSwgMjE0LCAzNywgMTU0LCAyMzEsIDQ0LCAzNywgMTU0LCAyNDUsIDIzMSwgMzcsIDE1NCwgMjE4LCAzOCwgCi0gICAgMzcsIDE1NCwgMjE4LCAxMzQsIDM3LCAxNTQsIDI0MSwgMjUxLCAzNywgMTU0LCAyMTksIDU2LCAzNywgMTU0LCAyMjksIAotICAgIDIwOSwgMzcsIDE1NCwgMjE5LCA2LCAzNywgMTU0LCAyNDQsIDExMCwgMzcsIDE1NCwgMjQ5LCAyMDgsIDM3LCAxNTQsIDIzMywgCi0gICAgMTMxLCAzNywgMTU0LCAyMjEsIDE3NiwgMzcsIDE1NCwgMjMxLCAxOTQsIDM3LCAxNTQsIDI0NCwgMTQ1LCAzNywgMTU0LCAKLSAgICAyMTgsIDUwLCAzNywgMTU0LCAyNDUsIDQyLCAzNywgMTU0LCAyMjQsIDE5MCwgMzcsIDE1NCwgMjUzLCAyMDQsIDM3LCAxNTQsIAotICAgIDIzNSwgMTY1LCAzNywgMTU0LCAyMjMsIDY0LCAzNywgMTU0LCAyNDksIDE3MiwgMzcsIDE1NCwgMjQ5LCAxNjMsIDM3LCAKLSAgICAxNTQsIDI0MSwgMTcyLCAzNywgMTU0LCAyNTAsIDE4MiwgMzcsIDE1NCwgMjMyLCAxMTYsIDM3LCAxNTQsIDIzMywgNTIsIAotICAgIDM3LCAxNTQsIDIyMiwgMjU0LCAzNywgMTU0LCAyMzEsIDg4LCAzNywgMTU0LCAyMjMsIDkwLCAzNywgMTU0LCAyMTgsIDg4LCAKLSAgICAzNywgMTU0LCAyMTgsIDIxLCAzNywgMTU0LCAyNDUsIDEzNSwgMzcsIDE1NCwgMjIzLCA2NiwgMzcsIDE1NCwgMjU0LCAxNTksIAotICAgIDM3LCAxNTQsIDIyOCwgMjE3LCAzNywgNTQsIDIxNiwgMTY0LCAxOTUsIDM3LCA1NCwgMjE2LCAxNjQsIDE5OSwgMzcsIDU0LCAKLSAgICAyMTYsIDE2NCwgMTk2LCAzNywgNTQsIDIxNiwgMTY0LCAyMDEsIDM3LCA1NCwgMjQ0LCAyMywgMzcsIDU0LCAyNDQsIDI0LCAKLSAgICAxMTEsIDM3LCA1NCwgMjQ0LCAyNCwgMTA1LCAzNywgNTQsIDI0NCwgMjQsIDE1OCwgMzcsIDU0LCAyNDQsIDI0LCAxNjEsIAotICAgIDM3LCA1NCwgMjQ0LCAyNCwgMTkwLCAzNywgNTQsIDI0NCwgMjQsIDE5NSwgMzcsIDU0LCAyNDQsIDI0LCAxOTksIDM3LCA1NCwgCi0gICAgMjQ0LCAyNCwgMTk2LCAzNywgNTQsIDI0NCwgMjQsIDIwMSwgMzcsIDU0LCAyNDQsIDEyMiwgMTEwLCAyMTcsIDQsIDE2LCAKLSAgICAzMSwgMjM1LCAxMzksIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0NCwgMTU2LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyMzEsIAotICAgIDE2NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjU0LCA1NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjMxLCAxMzcsIDExMCwgCi0gICAgMjE3LCA0LCAxNiwgMzEsIDIzNSwgNTEsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDIzNSwgNTIsIDExMCwgMjE3LCA0LCAxNiwgCi0gICAgMzEsIDI1MywgMTk2LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyMjAsIDEzOCwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjI2LCAKLSAgICAyNDMsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDIyOCwgNDUsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgOTMsIDQyLCAyNDEsIAotICAgIDE5NywgNDIsIDI0NSwgOTYsIDQyLCAyNDUsIDUxLCAyMzIsIDIyNSwgMjMyLCAyNDYsIDUwLCAzNywgNTYsIDYxLCAzNywgCi0gICAgNTYsIDc0LCAzNywgNTYsIDY5LCAzNywgNTYsIDc2LCAzNywgNTYsIDc4LCAzNywgNTYsIDE3NiwgMzcsIDU2LCAyMzQsIDk4LCAKLSAgICAzNywgNTYsIDIzMywgMjIzLCAzNywgNTYsIDIzNCwgMTg4LCAzNywgNTYsIDIzNCwgMzQsIDM3LCA1NiwgMjA2LCAzNywgNTYsIAotICAgIDIxOSwgMTkzLCAzNywgNTYsIDIxOCwgODQsIDM3LCA1NiwgMjIxLCAxODMsIDM3LCA1NiwgMjE5LCA2MCwgMzcsIDU2LCAKLSAgICAyMTcsIDEwNiwgMzcsIDU2LCAyMTYsIDExOCwgMzcsIDU2LCAyMTUsIDExOSwgMzcsIDU2LCAyMTcsIDIzLCAzNywgNTYsIAotICAgIDExMiwgMzcsIDU2LCAxOTgsIDM3LCA1NiwgMjI4LCAyMzgsIDM3LCA1NiwgMjI3LCAyNDIsIDM3LCA1NiwgMjI5LCAxMTIsIAotICAgIDM3LCA1NiwgMjI4LCA3OSwgMzcsIDU2LCAxNjIsIDM3LCA1NiwgMjQxLCAxODcsIDM3LCA1NiwgMjQwLCAyMjksIDM3LCA1NiwgCi0gICAgMjQxLCAyNDUsIDM3LCA1NiwgMjQxLCA3NSwgMzcsIDU2LCAxODYsIDM3LCA1NiwgMjMwLCAyMzUsIDM3LCA1NiwgMjMwLCAKLSAgICAxMDcsIDM3LCA1NiwgMjMxLCA5NiwgMzcsIDU2LCAyMzAsIDE2NiwgMzcsIDU2LCAxOTIsIDM3LCA1NiwgMjEwLCAyMTIsIAotICAgIDM3LCA1NiwgMjEwLCAyNDQsIDM3LCA1NiwgMjA1LCAzNywgNTYsIDIyMywgMzgsIDM3LCA1NiwgMjIyLCAxNDIsIDM3LCA1NiwgCi0gICAgMjIzLCAxMzEsIDM3LCA1NiwgMjIyLCAyMTMsIDM3LCA1NiwgMjEyLCA2NSwgMzcsIDU2LCAyMTEsIDI1MCwgMzcsIDU2LCAKLSAgICAyMTIsIDIyLCAzNywgNTYsIDIxMSwgMjI3LCA0MiwgMjU0LCA3OSwgNDIsIDI1MywgMjQ3LCA0MiwgMjU0LCAxMDMsIDQyLCAKLSAgICAyNTUsIDQwLCA0MiwgMjM1LCAyMzMsIDQyLCAyMzUsIDIwMywgNDIsIDIxNCwgMTY2LCA0MiwgMjQ1LCA3NCwgNDIsIDI0NSwgCi0gICAgMjE0LCA0MiwgMjI2LCAxOTAsIDQyLCAyMjYsIDE4NCwgNDIsIDIzNCwgMjUxLCA0MiwgMjM0LCAyMjAsIDQyLCAyMzQsIAotICAgIDIxNywgNDIsIDI0MywgOTksIDQyLCAyNDMsIDEwOCwgNDIsIDI0MiwgMjExLCA0MiwgMjQyLCAyMDcsIDQyLCAyMzMsIDE1NiwgCi0gICAgNDIsIDI0MiwgMjAwLCA0MiwgMjM0LCA3OCwgNDIsIDIzNCwgNzcsIDQyLCAyMzQsIDc2LCA0MiwgMjM0LCA3NSwgNDIsIAotICAgIDI0MiwgOTMsIDQyLCAyNDIsIDkyLCA0MiwgMjMzLCAxOTksIDQyLCAyMzMsIDIwMSwgNDIsIDIzNCwgMTg0LCA0MiwgMjM0LCAKLSAgICA3LCA0MiwgMjM0LCAxNCwgNDIsIDIyMiwgMTgsIDQyLCAyMjEsIDIzOSwgNDIsIDIxOSwgMTMxLCA0MiwgMjIwLCAxNDMsIAotICAgIDQyLCAyMjAsIDE0MiwgNDIsIDI0OCwgMjI2LCA0MiwgMjQ4LCA0NCwgNDIsIDI0NywgMTI5LCA0MiwgMjE2LCAzMywgNDIsIAotICAgIDIyOSwgMjA1LCA0MiwgMjI4LCA0NiwgNDIsIDI0MiwgMzksIDQyLCAyMjYsIDg4LCA0MiwgMjI2LCA4NywgNDIsIDI1MiwgCi0gICAgMTk2LCA0MiwgMjI1LCAxMDgsIDQyLCAyMjUsIDcyLCA0MiwgMjI1LCA3MywgNDIsIDI1MSwgMjQyLCA0MiwgMjQwLCAyMjgsIAotICAgIDQyLCAyNDAsIDIyNCwgNDIsIDI1MSwgOTksIDQyLCAyNDAsIDIxMSwgNDIsIDI0MSwgMjIyLCA0MiwgMjI1LCAxNjIsIDQyLCAKLSAgICAyMjUsIDE5NywgNDIsIDI0MSwgMjA1LCA0MiwgMjI1LCAxOTQsIDQyLCAyMjUsIDIxMCwgNDIsIDI1MiwgNjksIDQyLCAyMjUsIAotICAgIDksIDQyLCAyNTEsIDE4OCwgNDIsIDI0MSwgNjMsIDQyLCAyMjQsIDI1MywgNDIsIDI0MSwgNTUsIDQyLCAyNDEsIDU3LCA0MiwgCi0gICAgMjMxLCAyMDYsIDQyLCAyMzEsIDIwMiwgNDIsIDIzMSwgMjExLCA0MiwgMjMxLCAxNTUsIDQyLCAyMzEsIDE4MCwgNDIsIAotICAgIDIzMCwgMjAyLCA0MiwgMjMwLCAxODEsIDQyLCAyMzAsIDE4MCwgNDIsIDIzMSwgNzksIDQyLCAyMzEsIDc2LCA0MiwgMjMxLCAKLSAgICA4MCwgNDIsIDIxMSwgMTAyLCA0MiwgMjExLCAxMDAsIDQyLCAyMTAsIDIwMSwgNDIsIDIyMiwgMjI5LCA0MiwgMjIyLCAyMzMsIAotICAgIDQyLCAyMjIsIDExOSwgNDIsIDIyMiwgMTEzLCA0MiwgMjIzLCA4OCwgNDIsIDIyMywgODUsIDQyLCAyMTIsIDM4LCAxMTAsIAotICAgIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgMjEwLCA4NiwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDExMSwgCi0gICAgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDEwNSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDE1OCwgCi0gICAgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDE2MSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDE5MCwgCi0gICAgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDE5NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDE5OSwgCi0gICAgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDE5NiwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDIwMSwgCi0gICAgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDIxNiwgMjQ4LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgCi0gICAgMjQ1LCAxNzUsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyMTUsIDc2LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAKLSAgICAyNDAsIDI0NiwgMjE2LCAxNjUsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyNDQsIDEzLCAxMTAsIDIxNywgNCwgCi0gICAgMTYsIDMxLCAyNDAsIDI0NiwgMjQ0LCAxMjYsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyMTksIDEyMSwgMTEwLCAKLSAgICAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDIyMCwgMTIxLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgMjQ1LCAKLSAgICAxOTgsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyMjgsIDIwMiwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAKLSAgICAyNDYsIDIxNSwgNzMsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyMTUsIDY3LCAxMTAsIDIxNywgNCwgMTYsIAotICAgIDMxLCAyNDAsIDI0NiwgMjE1LCA2MywgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDIxNSwgNjQsIDExMCwgMjE3LCAKLSAgICA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyMTUsIDY5LCA0MiwgMjQwLCAyMzcsIDQyLCAyNDgsIDIyOSwgNDIsIDI1MywgMjAwLCAKLSAgICA0MiwgMTMwLCA0MiwgMjI2LCAxMjksIDQyLCAyMjUsIDIyOSwgNDIsIDI0NywgMTU1LCA0MiwgMjQ3LCAxNTYsIDIxOCwgCi0gICAgMjM1LCA0MiwgMjQ3LCAxNTYsIDI0OSwgMTE2LCA0MiwgMjM1LCAxNjIsIDQyLCAyNDUsIDk5LCAyMjksIDIxMCwgMjQxLCAKLSAgICAyMjMsIDQyLCAyNDUsIDk5LCAyMjksIDIxMCwgMjE3LCAxNzUsIDQyLCAyNDUsIDk5LCAyMjksIDIxMCwgMjE3LCA3NSwgNDIsIAotICAgIDI0NSwgOTksIDIyOSwgMjEwLCAyMzEsIDc1LCA0MiwgMjQ5LCAxNjUsIDQyLCAyMjYsIDk0LCAyNTQsIDEzMywgNDIsIDE5OCwgCi0gICAgNDIsIDIzMCwgMTA4LCA2MSwgNDIsIDE4NiwgNDIsIDE3NiwgNDIsIDIzNCwgMTkxLCA0MiwgMjMxLCAxMzQsIDQyLCAyNDMsIAotICAgIDg3LCA0MiwgMjUxLCAyNiwgNDIsIDIzNCwgMTkwLCA0MiwgMjI1LCAxNTMsIDQyLCAyMjksIDg2LCA0MiwgMjMwLCAxMDgsIAotICAgIDI0NSwgMTQsIDQyLCAyMzAsIDEwOCwgMjQzLCAyMDksIDQyLCAyMzEsIDIwLCA0MiwgMjM0LCAxNDAsIDQyLCAyNDAsIDE3MCwgCi0gICAgNDIsIDIzNCwgMTAwLCA0MiwgMjMwLCAyMzcsIDQyLCAyNDIsIDIyMywgNDIsIDIxNiwgMTIwLCA0MiwgMjMwLCAxMDgsIAotICAgIDE1NiwgNDIsIDIzMCwgMTc0LCA0MiwgMjQ3LCAxNjUsIDQyLCAyMzQsIDQ2LCA0MiwgMjQ0LCA1MywgNDIsIDIyOCwgMTE3LCAKLSAgICA0MiwgMjMwLCAxMDgsIDE5NCwgNDIsIDIzMCwgMTcxLCA0MiwgMjQ5LCAyNDcsIDQyLCAyMzQsIDQwLCA0MiwgMjMwLCAxNzIsIAotICAgIDIxOCwgMjM1LCA0MiwgMjQ5LCAyNDgsIDIxOCwgMjM1LCA0MiwgMjMyLCA1NSwgMjE4LCAyMzUsIDQyLCAyMzQsIDQxLCAKLSAgICAyMTgsIDIzNSwgNDIsIDIzMCwgMTcyLCAyNDksIDExNiwgNDIsIDI0OSwgMjQ4LCAyNDksIDExNiwgNDIsIDIzMiwgNTUsIAotICAgIDI0OSwgMTE2LCA0MiwgMjM0LCA0MSwgMjQ5LCAxMTYsIDQyLCAyMzIsIDU1LCAxMTUsIDIyMiwgOTMsIDQyLCAyMzIsIDU1LCAKLSAgICAxMTUsIDIyMiwgOTQsIDIxOCwgMjM1LCA0MiwgMTkxLCA0MiwgMjM0LCAxLCA0MiwgMjMwLCAxMTAsIDQyLCAyNDIsIDE1OCwgCi0gICAgNDIsIDIyMywgMTc5LCA0MiwgMjIzLCAxODAsIDExNSwgMjIyLCA5MywgNDIsIDIyMywgMTgwLCAxMTUsIDIyMiwgOTQsIAotICAgIDIxOCwgMjM1LCA0MiwgMjI0LCAxNjUsIDQyLCAyMjgsIDE4LCA0MiwgMjMwLCAxMDgsIDIyMiwgOTMsIDQyLCAyMzAsIDEwOSwgCi0gICAgNDIsIDIyNCwgMTE5LCA0MiwgMjI3LCAxODAsIDQyLCAyMzAsIDEwOCwgMjE0LCAxMDUsIDQyLCAyMzAsIDU0LCA0MiwgMjMzLCAKLSAgICAxOTEsIDQyLCAyMzAsIDU1LCAyMzEsIDc5LCA0MiwgMjI0LCAxMTgsIDQyLCAyMjcsIDE3OSwgNDIsIDIzMCwgMTA4LCAyMTIsIAotICAgIDk4LCA0MiwgMjMwLCA0OCwgNDIsIDIzMywgMTg5LCA0MiwgMjMwLCA0OSwgMjMxLCA3OSwgNDIsIDIzNSwgMzAsIDIyNiwgCi0gICAgMjI0LCA0MiwgMjMyLCA1NSwgMjI2LCAyMjQsIDQyLCAyNTQsIDE0NCwgNDIsIDI1MSwgMTY4LCA0MiwgMjUwLCAyMjIsIDQyLCAKLSAgICAyNTAsIDE5OSwgNDIsIDI1MSwgNzUsIDExNSwgMjM0LCAxNDAsIDQyLCAyNDksIDI0NiwgNDIsIDI0OCwgMTUwLCA0MiwgCi0gICAgMjQyLCA3OSwgNDIsIDE2MiwgNDIsIDI0MCwgMjM4LCA0MiwgMjM2LCA2LCA0MiwgMjM0LCA1MywgNDIsIDIzNCwgNDEsIAotICAgIDI1MSwgMiwgNDIsIDIzMywgMjI1LCA0MiwgMjMyLCAxNjUsIDQyLCAyMzIsIDE2NCwgNDIsIDIzMiwgMTUzLCA0MiwgMjMyLCAKLSAgICA2OCwgNDIsIDIzMSwgMTM1LCAyMTksIDgxLCA0MiwgMjMwLCAyMDEsIDQyLCAyMzAsIDE1NywgNDIsIDIyNSwgMTUxLCA0MiwgCi0gICAgMjI1LCAyMiwgNDIsIDIyNCwgMjIyLCA0MiwgMjI0LCAyMjAsIDQyLCAyMTgsIDIyOSwgNDIsIDIxOCwgMywgNDIsIDIxMiwgCi0gICAgMjQsIDQyLCAyMTQsIDEwNiwgMTE1LCAxOTQsIDQyLCAxMTYsIDExNSwgMTk0LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIAotICAgIDE1NCwgMTExLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMTA1LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIAotICAgIDE1NCwgMTU4LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMTYxLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIAotICAgIDE1NCwgMTkwLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMTk1LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIAotICAgIDE1NCwgMTk5LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMTk2LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIAotICAgIDE1NCwgMjAxLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjE2LCAyNDgsIDExMCwgMjE3LCA0LCAxNiwgMzEsIAotICAgIDI0OCwgMTU0LCAyNDUsIDE3NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIxNSwgNzYsIDExMCwgMjE3LCA0LCAKLSAgICAxNiwgMzEsIDI0OCwgMTU0LCAyMTYsIDE2NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDI0NCwgMTMsIDExMCwgCi0gICAgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTU0LCAyNDQsIDEyNiwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIxOSwgCi0gICAgMTIxLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjIwLCAxMjEsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgCi0gICAgMTU0LCAyNDUsIDE5OCwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIyOCwgMjAyLCAxMTAsIDIxNywgNCwgMTYsIAotICAgIDMxLCAyNDgsIDE1NCwgMjE1LCA3MywgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIxNSwgNjcsIDExMCwgMjE3LCAKLSAgICA0LCAxNiwgMzEsIDI0OCwgMTU0LCAyMTUsIDYzLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjE1LCA2NCwgCi0gICAgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIxNSwgNjksIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTU0LCAKLSAgICAyMTUsIDcwLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjE1LCA2NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgCi0gICAgMjQ4LCAxNTQsIDIxNSwgNjYsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTU0LCAyMTUsIDcyLCAxMTAsIDIxNywgNCwgCi0gICAgMTYsIDMxLCAyNDgsIDE1NCwgMjE1LCA2OCwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIxNiwgMTYzLCAxMTAsIAotICAgIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjE2LCAxNjIsIDQyLCAyNDMsIDEyNSwgMjQxLCAxOTksIDMxLCAyMTYsIDE5NywgCi0gICAgMjQ5LCAxNDgsIDI0MSwgMjMwLCAyNDEsIDE5OSwgMzEsIDIxNiwgMTk3LCAyMjMsIDEyNSwgMjQ1LCAyMzEsIDI0MSwgMTk5LCAKLSAgICAzMSwgMjQ3LCAyMzksIDI1MywgMjE1LCAyMTYsIDE5NywgMjUyLCA2NCwgMjQxLCAxOTksIDMxLCAyMTAsIDIyMywgMjQ0LCAKLSAgICA0NiwgMjQxLCAxOTksIDMxLCAyMTIsIDU5LCAyNDEsIDE5OSwgMzEsIDI0OSwgMjExLCAyNDEsIDE5OSwgMzEsIDIxNiwgCi0gICAgMTk3LCAyNTQsIDExLCAyNDEsIDE5OSwgMzEsIDI0MSwgNjcsIDIxNiwgMzksIDI0MSwgMTk5LCAzMSwgNCwgMjE3LCA2MiwgCi0gICAgMjQxLCAxOTksIDMxLCAyMTUsIDIzOCwgMjQxLCAxOTksIDMxLCAyMjUsIDIyMiwgMjQxLCAxOTksIDMxLCAyMTgsIDE2MCwgCi0gICAgMjQxLCAxOTksIDMxLCAyNDQsIDE0NywgMjQxLCAxOTksIDMxLCAyNDIsIDEzOSwgMjI0LCAyNDMsIDI0MSwgMTk5LCAzMSwgCi0gICAgMjMwLCAxNjAsIDI0MSwgMTk5LCAzMSwgMjQ1LCAxMzQsIDI0MSwgMTk5LCAzMSwgMjQ0LCA0NywgMjQxLCAxOTksIDMxLCAKLSAgICAyMTEsIDIwNywgMjI2LCAyMDEsIDIxNiwgMTk3LCAyNDgsIDk0LCAyNDEsIDE5OSwgMzEsIDI1NCwgNTksIDI0MSwgMTk5LCAKLSAgICAzMSwgMjQ5LCAxOTMsIDI0MSwgMTk5LCAzMSwgMjUxLCAyMzUsIDIxNiwgMTM5LCAyNDEsIDE5OSwgMzEsIDI0MiwgMTU2LCAKLSAgICAyNDEsIDE5OSwgMzEsIDIxOCwgMjQ3LCAyNTQsIDc4LCAyNDEsIDE5OSwgMzEsIDIyMywgNTYsIDI0MSwgMTk5LCAzMSwgCi0gICAgMjM1LCAyMjcsIDI0MSwgMTk5LCAzMSwgMjQyLCAxMzksIDIxNywgNjIsIDI0MSwgMTk5LCAzMSwgMjMwLCAxMTYsIDI0OSwgCi0gICAgMTY3LCAyNDEsIDE5OSwgMzEsIDI0MiwgMTM5LCAyMjQsIDIwMCwgMjQxLCAxOTksIDMxLCAyMTYsIDE5NywgMjU1LCAyNywgCi0gICAgMjEyLCA0MCwgMjQxLCAxOTksIDMxLCAyMTYsIDE5NywgMjUwLCAxNiwgMjQ0LCAxMDQsIDI0MSwgMTk5LCAzMSwgMjM1LCAKLSAgICAyNDAsIDI0MSwgMTk5LCAzMSwgMjQ2LCA2NSwgMjQxLCAxOTksIDMxLCAyMjMsIDU5LCAyNDEsIDE5OSwgMzEsIDI0MiwgCi0gICAgMTM5LCAyMjQsIDIyNywgMjQxLCAxOTksIDMxLCAyMjQsIDE4MCwgMjQxLCAxOTksIDMxLCAyNDgsIDE2OSwgNjQsIDIxNiwgCi0gICAgMTk3LCAyMzIsIDIzNiwgMjQxLCAxOTksIDMxLCAyMTYsIDE5NywgMjQ0LCAxODIsIDI0MSwgMTk5LCAzMSwgMjI2LCAxNjcsIAotICAgIDI0MSwgMTk5LCAzMSwgMjI2LCAyNDgsIDI0MSwgMTk5LCAzMSwgMjQ4LCA2NywgMjQxLCAxOTksIDMxLCAyNDgsIDg3LCAKLSAgICAyNDEsIDE5OSwgMzEsIDIzNSwgMjU0LCAyNDEsIDE5OSwgMzEsIDI1MSwgMTU3LCAyNDEsIDE5OSwgMzEsIDI0OSwgMjI5LCAKLSAgICAyMTYsIDQzLCAyMzEsIDgxLCAyNDEsIDE5OSwgMzEsIDI0MywgOTQsIDIxNiwgMzksIDI0MSwgMTk5LCAzMSwgMjI0LCAxMjgsIAotICAgIDIxNCwgMTU0LCAyNDEsIDE5OSwgMzEsIDIyNiwgMTY2LCAyNDEsIDE5OSwgMzEsIDIxNiwgMTk3LCAyMTIsIDEzLCAyNDEsIAotICAgIDE5OSwgMzEsIDIyMywgNDgsIDI0MSwgMTk5LCAzMSwgMjE2LCAxOTcsIDI1MCwgMjI4LCAyNDEsIDE5OSwgMzEsIDIxNiwgCi0gICAgMTk3LCAyNTQsIDcsIDIxNiwgMTM0LCAyNDEsIDE5OSwgMzEsIDIxNiwgMTk3LCAyMzQsIDE4NSwgMjE4LCAxMzYsIDIzMCwgCi0gICAgMTIwLCAyNDEsIDE5OSwgMzEsIDI0OCwgNDAsIDI0MSwgMTk5LCAzMSwgMjE2LCAxOTcsIDIzMSwgMTU3LCAyMzEsIDIwNywgCi0gICAgMjQxLCAxOTksIDMxLCAyNTUsIDI4LCAyNDEsIDE5OSwgMzEsIDIxNiwgMTk3LCAyMTIsIDU0LCAyNDEsIDE5OSwgMzEsIAotICAgIDIxNiwgMTk3LCAyNDMsIDU0LCAyMTEsIDIzOSwgMjQxLCAxOTksIDMxLCAyMTYsIDE5NywgMjM1LCA1OCwgMjMzLCAxMTMsIAotICAgIDI0MSwgMTk5LCAzMSwgMjQ3LCAxOTIsIDI0MSwgMTk5LCAzMSwgMjMyLCAyMjYsIDI0MSwgMTk5LCAzMSwgMjM1LCAyMzAsIAotICAgIDIxNSwgMTg4LCAyNDEsIDE5OSwgMzEsIDQsIDIyNCwgMjAwLCAyNDEsIDE5OSwgMzEsIDI1NCwgMjI2LCAyNDksIDIyMCwgCi0gICAgMjQxLCAxOTksIDMxLCAyNTIsIDY3LCAyNDksIDIyMCwgOCwgMywgMjM1LCAxNjYsIDgsIDMsIDIzNSwgMTU5LCA4LCAzLCAKLSAgICA3NCwgOCwgMywgMjM1LCAxODksIDgsIDMsIDIzNiwgNjUsIDgsIDMsIDIzNiwgNDgsIDgsIDMsIDIzNiwgNjcsIDgsIDMsIAotICAgIDIzNiwgNjYsIDgsIDMsIDI1MywgMjE0LCA4LCAzLCAyNTMsIDE3NywgOCwgMywgNjEsIDgsIDMsIDI1NCwgODAsIDgsIDMsIAotICAgIDIxNCwgMTY0LCA4LCAzLCAyMTQsIDE2NywgOCwgMywgMjE0LCAxNjUsIDgsIDMsIDIyNiwgMTQ0LCA4LCAzLCAyMjYsIDExOCwgCi0gICAgOCwgMywgNzgsIDgsIDMsIDIyNiwgMTc5LCA4LCAzLCAyNDUsIDQzLCA4LCAzLCA3NiwgOCwgMywgMjExLCAxOTUsIDgsIDMsIAotICAgIDI1MSwgMjM2LCA4LCAzLCAyNTEsIDIzMywgOCwgMywgMjUyLCAxNCwgOCwgMywgMjUxLCAyNDYsIDgsIDMsIDI1MiwgMywgOCwgCi0gICAgMywgMjUyLCAyLCA4LCAzLCAyNTIsIDUsIDgsIDMsIDI1MiwgNCwgOCwgMywgMjUyLCAxMjksIDgsIDMsIDI1MiwgMTIxLCA4LCAKLSAgICAzLCAyNTIsIDE5OSwgOCwgMywgMjUyLCAxNTAsIDgsIDMsIDI1MSwgMTA5LCA4LCAzLCAyNTEsIDExMywgOCwgMywgMjUxLCAKLSAgICAxMTAsIDgsIDMsIDI1MSwgMTg3LCA4LCAzLCAyNTEsIDE3MSwgOCwgMywgMjUxLCAyMTMsIDgsIDMsIDI1MSwgMTkzLCA4LCAKLSAgICAzLCAyNTIsIDI5LCA4LCAzLCAyNTIsIDgzLCA4LCAzLCAyNTIsIDQxLCA4LCAzLCAyNTEsIDk1LCA4LCAzLCAyNTEsIDkyLCAKLSAgICA4LCAzLCAyNTEsIDEzMywgOCwgMywgMjUxLCAxMDgsIDgsIDMsIDI1MSwgMTAyLCA4LCAzLCAyNTEsIDEwNiwgOCwgMywgCi0gICAgMjUxLCA4MCwgOCwgMywgMjUxLCA3OCwgOCwgMywgMjUxLCA4NSwgOCwgMywgMjUxLCA4MywgOCwgMywgMjUxLCA4MSwgOCwgCi0gICAgMywgMjUxLCA4MiwgOCwgMywgMjI1LCA1MiwgOCwgMywgMjI1LCA0OCwgOCwgMywgMjI1LCAxMTEsIDgsIDMsIDIyNSwgNjIsIAotICAgIDgsIDMsIDIyNSwgNzgsIDgsIDMsIDIyNSwgMTA1LCA4LCAzLCAyMjUsIDEwMSwgOCwgMywgMjI1LCAyNDQsIDgsIDMsIDIyNSwgCi0gICAgMjM0LCA4LCAzLCAxOTEsIDgsIDMsIDIyNiwgMjUsIDgsIDMsIDIyNCwgMTM4LCA4LCAzLCAyMjQsIDE0MCwgOCwgMywgMjI0LCAKLSAgICAxMzksIDgsIDMsIDIyNCwgMjM2LCA4LCAzLCAyMjQsIDIyNSwgOCwgMywgMjI1LCAxOSwgOCwgMywgMjI0LCAyNDgsIDgsIDMsIAotICAgIDIyNCwgMTI0LCA4LCAzLCAyMjQsIDEyMCwgOCwgMywgMjI0LCAxNTMsIDgsIDMsIDIyNCwgMTM3LCA4LCAzLCAyMjQsIDEyOSwgCi0gICAgOCwgMywgMjI0LCAxMzUsIDgsIDMsIDIyNCwgMTAzLCA4LCAzLCAyMjQsIDEwMiwgOCwgMywgMjI0LCAxMDcsIDgsIDMsIAotICAgIDIyNCwgMTA2LCA4LCAzLCAyMjQsIDEwNCwgOCwgMywgMjI0LCAxMDUsIDgsIDMsIDI1MiwgMTA0LCA4LCAzLCAyNTIsIDEwMywgCi0gICAgOCwgMywgMjUyLCAxMTAsIDgsIDMsIDI1MiwgMTA1LCA4LCAzLCAyNTIsIDEwNywgOCwgMywgMjUyLCAxMDYsIDgsIDMsIAotICAgIDI1MiwgMTA5LCA4LCAzLCAyNTIsIDEwOCwgOCwgMywgMjUyLCAxMTYsIDgsIDMsIDI1MiwgMTE1LCA4LCAzLCAyNTIsIDExOSwgCi0gICAgOCwgMywgMjUyLCAxMTcsIDgsIDMsIDI1MiwgOTUsIDgsIDMsIDI1MiwgOTcsIDgsIDMsIDI1MiwgOTYsIDgsIDMsIDI1MiwgCi0gICAgMTAwLCA4LCAzLCAyNTIsIDk5LCA4LCAzLCAyNTIsIDEwMiwgOCwgMywgMjUyLCAxMDEsIDgsIDMsIDI1MiwgMTExLCA4LCAzLCAKLSAgICAyNTIsIDExNCwgOCwgMywgMjUyLCAxMTIsIDgsIDMsIDI1MiwgOTEsIDgsIDMsIDI1MiwgOTAsIDgsIDMsIDI1MiwgOTgsIDgsIAotICAgIDMsIDI1MiwgOTQsIDgsIDMsIDI1MiwgOTIsIDgsIDMsIDI1MiwgOTMsIDgsIDMsIDI1MiwgODcsIDgsIDMsIDI1MiwgODYsIAotICAgIDgsIDMsIDI1MiwgODksIDgsIDMsIDI1MiwgODgsIDgsIDMsIDIyOSwgMTc0LCA4LCAzLCAyMjksIDE3MywgOCwgMywgMjI5LCAKLSAgICAxNzksIDgsIDMsIDIyOSwgMTc1LCA4LCAzLCAyMjksIDE3NiwgOCwgMywgMjI5LCAxNzgsIDgsIDMsIDIyOSwgMTc3LCA4LCAKLSAgICAzLCAyMjksIDE4MiwgOCwgMywgMjI5LCAxODEsIDgsIDMsIDIyOSwgMTg0LCA4LCAzLCAyMjksIDE4MywgOCwgMywgMjI5LCAKLSAgICAxNzAsIDgsIDMsIDIyOSwgMTY5LCA4LCAzLCAyMjksIDE3MiwgOCwgMywgMjI5LCAxNzEsIDgsIDMsIDIyOSwgMTYzLCA4LCAKLSAgICAzLCAyMjksIDE2MiwgOCwgMywgMjI5LCAxNjcsIDgsIDMsIDIyOSwgMTY2LCA4LCAzLCAyMjksIDE2NCwgOCwgMywgMjI5LCAKLSAgICAxNjUsIDgsIDMsIDIyOSwgMTU3LCA4LCAzLCAyMjksIDE1NiwgOCwgMywgMjI5LCAxNjEsIDgsIDMsIDIyOSwgMTYwLCA4LCAKLSAgICAzLCAyMjksIDE1OCwgOCwgMywgMjI5LCAxNTksIDgsIDMsIDI0MSwgMTE3LCA4LCAzLCAyNDEsIDExNiwgOCwgMywgMjQxLCAKLSAgICAxMjIsIDgsIDMsIDI0MSwgMTE4LCA4LCAzLCAyNDEsIDExOSwgOCwgMywgMjQxLCAxMjEsIDgsIDMsIDI0MSwgMTIwLCA4LCAKLSAgICAzLCAyNDEsIDEyNSwgOCwgMywgMjQxLCAxMjQsIDgsIDMsIDI0MSwgMTI3LCA4LCAzLCAyNDEsIDEyNiwgOCwgMywgMjQxLCAKLSAgICAxMDgsIDgsIDMsIDI0MSwgMTEwLCA4LCAzLCAyNDEsIDEwOSwgOCwgMywgMjQxLCAxMTMsIDgsIDMsIDI0MSwgMTEyLCA4LCAKLSAgICAzLCAyNDEsIDExNSwgOCwgMywgMjQxLCAxMTQsIDgsIDMsIDI0MSwgMTA0LCA4LCAzLCAyNDEsIDEwMywgOCwgMywgMjQxLCAKLSAgICAxMTEsIDgsIDMsIDI0MSwgMTA3LCA4LCAzLCAyNDEsIDEwNSwgOCwgMywgMjQxLCAxMDYsIDgsIDMsIDI0MSwgOTgsIDgsIDMsIAotICAgIDI0MSwgMTAyLCA4LCAzLCAyNDEsIDEwMSwgOCwgMywgMjQxLCA5OSwgOCwgMywgMjQxLCAxMDAsIDgsIDMsIDIzMCwgMTc3LCAKLSAgICA4LCAzLCAyMzAsIDE3NiwgOCwgMywgMjMwLCAyMzUsIDgsIDMsIDIzMCwgMTgzLCA4LCAzLCAyMzAsIDIwOCwgOCwgMywgCi0gICAgMjMwLCAyMjYsIDgsIDMsIDIzMCwgMjI0LCA4LCAzLCAyMzEsIDE0NCwgOCwgMywgMjMxLCAxMzksIDgsIDMsIDE4NiwgOCwgCi0gICAgMywgMjMxLCAxNzcsIDgsIDMsIDIzMCwgNzksIDgsIDMsIDIzMCwgNzgsIDgsIDMsIDIzMCwgODIsIDgsIDMsIDIzMCwgODAsIAotICAgIDgsIDMsIDIzMCwgMTI2LCA4LCAzLCAyMzAsIDExMiwgOCwgMywgMjMwLCAxNjYsIDgsIDMsIDIzMCwgMTMxLCA4LCAzLCAKLSAgICAyMzEsIDMxLCA4LCAzLCAyMzEsIDk2LCA4LCAzLCAyMzAsIDYwLCA4LCAzLCAyMzAsIDU2LCA4LCAzLCAyMzAsIDEwNywgOCwgCi0gICAgMywgMjMwLCA3NSwgOCwgMywgMjMwLCA2OCwgOCwgMywgMjMwLCA3MywgOCwgMywgMjMwLCAzMywgOCwgMywgMjMwLCAzMiwgCi0gICAgOCwgMywgMjMwLCAzOCwgOCwgMywgMjMwLCAzNSwgOCwgMywgMjQ0LCA5MSwgOCwgMywgMjQ0LCA4NiwgOCwgMywgMjQ0LCAKLSAgICAxMjksIDgsIDMsIDI0NCwgMTA2LCA4LCAzLCAyNDQsIDE3NSwgOCwgMywgMjQ0LCAxNjYsIDgsIDMsIDI0NCwgMjA0LCA4LCAKLSAgICAzLCAyNDQsIDE3OCwgOCwgMywgMjQ0LCAxMSwgOCwgMywgMjQ0LCA1MSwgOCwgMywgMjQ0LCAzNSwgOCwgMywgMjQzLCAyMjUsIAotICAgIDgsIDMsIDI0MywgMjI0LCA4LCAzLCAyNDMsIDI0MSwgOCwgMywgMjQzLCAyMzAsIDgsIDMsIDI0MywgMjI4LCA4LCAzLCAKLSAgICAyNDMsIDIyOSwgOCwgMywgMjQzLCAyMTIsIDgsIDMsIDI0MywgMjExLCA4LCAzLCAyNDMsIDIxNSwgOCwgMywgMjQzLCAyMTMsIAotICAgIDgsIDMsIDIxMywgMTQ0LCA4LCAzLCAyMTMsIDEzOSwgOCwgMywgMjEzLCAxNzYsIDgsIDMsIDIxMywgMTUzLCA4LCAzLCAKLSAgICAyMTMsIDE2NiwgOCwgMywgMjEzLCAxNjMsIDgsIDMsIDIxMywgMTY4LCA4LCAzLCAyMTMsIDE2NywgOCwgMywgMjE0LCA3LCAKLSAgICA4LCAzLCAyMTQsIDIsIDgsIDMsIDIxNCwgMjcsIDgsIDMsIDIxNCwgMTgsIDgsIDMsIDIxMywgMTI1LCA4LCAzLCAyMTMsIAotICAgIDEyMSwgOCwgMywgMjEzLCAxMzgsIDgsIDMsIDIxMywgMTI2LCA4LCAzLCAyMTMsIDE3OCwgOCwgMywgMjEzLCAyNDQsIDgsIAotICAgIDMsIDIxMiwgMTEwLCA4LCAzLCAyMTIsIDEwOCwgOCwgMywgMjEyLCAxMTYsIDgsIDMsIDIxMiwgMTEzLCA4LCAzLCAyMTIsIAotICAgIDExMSwgOCwgMywgMjEyLCAxMTIsIDgsIDMsIDIxMiwgMTAyLCA4LCAzLCAyMTIsIDEwMSwgOCwgMywgMjEyLCAxMDYsIDgsIAotICAgIDMsIDIxMiwgMTA1LCA4LCAzLCAyMTIsIDEwMywgOCwgMywgMjEyLCAxMDQsIDgsIDMsIDI0NywgMTg2LCA4LCAzLCAyNDcsIAotICAgIDE3NCwgOCwgMywgMjQ4LCAxMSwgOCwgMywgMjQ3LCAyMTEsIDgsIDMsIDI0NywgMjQ0LCA4LCAzLCAyNDcsIDI0OCwgOCwgMywgCi0gICAgMjQ3LCAyNDcsIDgsIDMsIDI0OCwgMTYwLCA4LCAzLCAyNDgsIDE1NSwgOCwgMywgMjQ4LCAyMjksIDgsIDMsIDI0OCwgMTgwLCAKLSAgICA4LCAzLCAyNDYsIDcwLCA4LCAzLCAyNDYsIDcxLCA4LCAzLCAyNDcsIDEyOCwgOCwgMywgMjQ2LCAxMTAsIDgsIDMsIDI0NywgCi0gICAgMTUzLCA4LCAzLCAyNDcsIDEzMCwgOCwgMywgMjQ4LCAzOCwgOCwgMywgMjQ4LCA5OCwgOCwgMywgMjQ4LCA1MywgOCwgMywgCi0gICAgMjQ2LCA2MSwgOCwgMywgMjQ2LCA1OSwgOCwgMywgMjQ2LCA4NiwgOCwgMywgMjQ2LCA2OSwgOCwgMywgMjQ2LCA2NCwgOCwgCi0gICAgMywgMjQ2LCA2NywgOCwgMywgMjE2LCA2OCwgOCwgMywgMjE2LCA2MiwgOCwgMywgMjE2LCAxMTgsIDgsIDMsIDIxNiwgNzcsIAotICAgIDgsIDMsIDIxNiwgMTEwLCA4LCAzLCAyMTYsIDExMiwgOCwgMywgMjE2LCAxMTEsIDgsIDMsIDIxNywgNDcsIDgsIDMsIDIxNywgCi0gICAgMzQsIDgsIDMsIDIxNywgMTA2LCA4LCAzLCAyMTcsIDU1LCA4LCAzLCAyMTUsIDEwMywgOCwgMywgMjE1LCAxMDIsIDgsIDMsIAotICAgIDIxNSwgMTA1LCA4LCAzLCAyMTUsIDEwNCwgOCwgMywgMjE2LCA2LCA4LCAzLCAyMTYsIDIsIDgsIDMsIDExMiwgOCwgMywgCi0gICAgMjE2LCAxNCwgOCwgMywgMjE2LCAyMTQsIDgsIDMsIDIxNywgMjMsIDgsIDMsIDIxNiwgMjM4LCA4LCAzLCAyMTUsIDg4LCA4LCAKLSAgICAzLCAyMTUsIDgzLCA4LCAzLCAyMTUsIDExOSwgOCwgMywgMjE1LCAxMDEsIDgsIDMsIDIxNSwgODksIDgsIDMsIDIxNSwgOTksIAotICAgIDgsIDMsIDI0OCwgMTE1LCA4LCAzLCAyNDgsIDExNCwgOCwgMywgMjQ4LCAxMjAsIDgsIDMsIDI0OCwgMTE2LCA4LCAzLCAKLSAgICAyNDgsIDExNywgOCwgMywgMjQ4LCAxMTksIDgsIDMsIDI0OCwgMTE4LCA4LCAzLCAyNDgsIDEzNiwgOCwgMywgMjQ4LCAxMzUsIAotICAgIDgsIDMsIDI0OCwgMTQzLCA4LCAzLCAyNDgsIDEzNywgOCwgMywgMjQ4LCAxMDUsIDgsIDMsIDI0OCwgMTA3LCA4LCAzLCAKLSAgICAyNDgsIDEwNiwgOCwgMywgMjQ4LCAxMTAsIDgsIDMsIDI0OCwgMTA5LCA4LCAzLCAyNDgsIDExMywgOCwgMywgMjQ4LCAxMTEsIAotICAgIDgsIDMsIDI0OCwgMTI4LCA4LCAzLCAyNDgsIDEzMSwgOCwgMywgMjQ4LCAxMjksIDgsIDMsIDI0OCwgMTAxLCA4LCAzLCAKLSAgICAyNDgsIDEwMCwgOCwgMywgMjQ4LCAxMDgsIDgsIDMsIDI0OCwgMTA0LCA4LCAzLCAyNDgsIDEwMiwgOCwgMywgMjQ4LCAxMDMsIAotICAgIDgsIDMsIDIyOSwgMTMxLCA4LCAzLCAyMjksIDEzMCwgOCwgMywgMjI5LCAxMzgsIDgsIDMsIDIyOSwgMTMzLCA4LCAzLCAKLSAgICAyMjksIDEzNCwgOCwgMywgMjI5LCAxMzUsIDgsIDMsIDIyOSwgMTQ3LCA4LCAzLCAyMjksIDE0NiwgOCwgMywgMjI5LCAxNTMsIAotICAgIDgsIDMsIDIyOSwgMTQ4LCA4LCAzLCAyMjksIDEyMywgOCwgMywgMjI5LCAxMjIsIDgsIDMsIDIyOSwgMTI5LCA4LCAzLCAKLSAgICAyMjksIDEyNCwgOCwgMywgMjI5LCAxMzksIDgsIDMsIDIyOSwgMTQ1LCA4LCAzLCAyMjksIDE0MywgOCwgMywgMjI5LCAxMTUsIAotICAgIDgsIDMsIDIyOSwgMTE0LCA4LCAzLCAyMjksIDEyMCwgOCwgMywgMjI5LCAxMTgsIDgsIDMsIDIyOSwgMTE2LCA4LCAzLCAKLSAgICAyMjksIDExNywgOCwgMywgMjQxLCA4NCwgOCwgMywgMjQxLCA4MywgOCwgMywgMjQxLCA5MCwgOCwgMywgMjQxLCA4NSwgOCwgCi0gICAgMywgMjQxLCA4NywgOCwgMywgMjQxLCA4NiwgOCwgMywgMjQxLCA4OSwgOCwgMywgMjQxLCA4OCwgOCwgMywgMjQxLCA5NSwgCi0gICAgOCwgMywgMjQxLCA5NCwgOCwgMywgMjQxLCA5NywgOCwgMywgMjQxLCA5NiwgOCwgMywgMjQxLCA3OCwgOCwgMywgMjQxLCAKLSAgICA3OSwgOCwgMywgMjQxLCA4MSwgOCwgMywgMjQxLCA4MCwgOCwgMywgMjQxLCA4MiwgOCwgMywgMjQxLCA5MSwgOCwgMywgCi0gICAgMjQxLCA5MywgOCwgMywgMjQxLCA5MiwgOCwgMywgMjQxLCA3NywgOCwgMywgMjI4LCAxOTQsIDgsIDMsIDIyOCwgMTkyLCA4LCAKLSAgICAzLCAyMjgsIDIzOCwgOCwgMywgMjI4LCAxOTcsIDgsIDMsIDIyOCwgMjIwLCA4LCAzLCAyMjgsIDIzNCwgOCwgMywgMjI4LCAKLSAgICAyMzMsIDgsIDMsIDIyOSwgMTg4LCA4LCAzLCAxOTgsIDgsIDMsIDIyOSwgMjAyLCA4LCAzLCAyMjcsIDE5MCwgOCwgMywgCi0gICAgMjI3LCAxOTIsIDgsIDMsIDIyNywgMTkxLCA4LCAzLCAyMjgsIDU2LCA4LCAzLCAyMjgsIDQzLCA4LCAzLCAyMjgsIDc5LCA4LCAKLSAgICAzLCAyMjgsIDY1LCA4LCAzLCAyMjksIDg4LCA4LCAzLCAyMjksIDExMiwgOCwgMywgMjI5LCA5OSwgOCwgMywgMjI3LCAxODUsIAotICAgIDgsIDMsIDIyNywgMTgxLCA4LCAzLCAyMjcsIDI0MiwgOCwgMywgMjI3LCAxODksIDgsIDMsIDIyNywgMTg3LCA4LCAzLCAKLSAgICAyMjcsIDE4OCwgOCwgMywgMjQxLCAxNDgsIDgsIDMsIDI0MSwgMTQ3LCA4LCAzLCAyNDEsIDE1MywgOCwgMywgMjQxLCAxNDksIAotICAgIDgsIDMsIDI0MSwgMTUwLCA4LCAzLCAyNDEsIDE1MiwgOCwgMywgMjQxLCAxNTEsIDgsIDMsIDI0MSwgMTU4LCA4LCAzLCAKLSAgICAyNDEsIDE1NywgOCwgMywgMjQxLCAxNjAsIDgsIDMsIDI0MSwgMTU5LCA4LCAzLCAyNDEsIDE0MCwgOCwgMywgMjQxLCAxNDIsIAotICAgIDgsIDMsIDI0MSwgMTQxLCA4LCAzLCAyNDEsIDE0NCwgOCwgMywgMjQxLCAxNDYsIDgsIDMsIDI0MSwgMTQ1LCA4LCAzLCAKLSAgICAyNDEsIDE1NCwgOCwgMywgMjQxLCAxNTYsIDgsIDMsIDI0MSwgMTU1LCA4LCAzLCAyNDEsIDEzNiwgOCwgMywgMjQxLCAxMzUsIAotICAgIDgsIDMsIDI0MSwgMTQzLCA4LCAzLCAyNDEsIDEzOSwgOCwgMywgMjQxLCAxMzcsIDgsIDMsIDI0MSwgMTM4LCA4LCAzLCAKLSAgICAyNDEsIDEzMCwgOCwgMywgMjQxLCAxMjksIDgsIDMsIDI0MSwgMTM0LCA4LCAzLCAyNDEsIDEzMywgOCwgMywgMjQxLCAxMzEsIAotICAgIDgsIDMsIDI0MSwgMTMyLCA4LCAzLCAyMzIsIDIwMSwgOCwgMywgMjMyLCAxOTUsIDgsIDMsIDIzMiwgMjQ3LCA4LCAzLCAKLSAgICAyMzIsIDIwOCwgOCwgMywgMjMyLCAyMzksIDgsIDMsIDIzMiwgMjM4LCA4LCAzLCAyMzIsIDI0MiwgOCwgMywgMjMyLCAyNDAsIAotICAgIDgsIDMsIDIzMywgODUsIDgsIDMsIDIzMywgNzUsIDgsIDMsIDIzMywgMTQxLCA4LCAzLCAyMzMsIDk0LCA4LCAzLCAyMzIsIAotICAgIDg0LCA4LCAzLCAyMzIsIDgzLCA4LCAzLCAyMzIsIDg2LCA4LCAzLCAyMzIsIDg1LCA4LCAzLCAyMzIsIDEyMiwgOCwgMywgCi0gICAgMjMyLCAxMTIsIDgsIDMsIDIzMiwgMTYyLCA4LCAzLCAyMzIsIDEyNiwgOCwgMywgMjMzLCA4LCA4LCAzLCAyMzMsIDY0LCA4LCAKLSAgICAzLCAyMzMsIDIzLCA4LCAzLCAyMzIsIDc5LCA4LCAzLCAyMzIsIDc3LCA4LCAzLCAyMzIsIDEwMywgOCwgMywgMjMyLCA4MiwgCi0gICAgOCwgMywgMjMyLCA4MCwgOCwgMywgMjMyLCA4MSwgOCwgMywgMjMyLCA1OSwgOCwgMywgMjMyLCA1OCwgOCwgMywgMjMyLCAKLSAgICA2NywgOCwgMywgMjMyLCA2MiwgOCwgMywgMjMyLCA2MCwgOCwgMywgMjMyLCA2MSwgOCwgMywgMjQyLCAxOTYsIDgsIDMsIAotICAgIDI0MiwgMTk1LCA4LCAzLCAyNDIsIDIyMSwgOCwgMywgMjQyLCAyMDYsIDgsIDMsIDI0MiwgMjEzLCA4LCAzLCAyNDIsIDIxMiwgCi0gICAgOCwgMywgMjQyLCAyMTUsIDgsIDMsIDI0MiwgMjE0LCA4LCAzLCAyNDMsIDk2LCA4LCAzLCAyNDMsIDkxLCA4LCAzLCAyNDMsIAotICAgIDE0MiwgOCwgMywgMjQzLCAxMDYsIDgsIDMsIDI0MiwgOTgsIDgsIDMsIDI0MiwgOTcsIDgsIDMsIDI0MiwgMTAwLCA4LCAzLCAKLSAgICAyNDIsIDk5LCA4LCAzLCAyNDIsIDE2MSwgOCwgMywgMjQyLCAxNTksIDgsIDMsIDI0MiwgMTgxLCA4LCAzLCAyNDIsIDE2OSwgCi0gICAgOCwgMywgMjQzLCA0MCwgOCwgMywgMjQzLCAzOCwgOCwgMywgMjQzLCA2OSwgOCwgMywgMjQzLCA1MSwgOCwgMywgMjQyLCAKLSAgICA4OCwgOCwgMywgMjQyLCA4NywgOCwgMywgMjQyLCAxMjAsIDgsIDMsIDI0MiwgOTYsIDgsIDMsIDI0MiwgODksIDgsIDMsIAotICAgIDI0MiwgOTUsIDgsIDMsIDIzNCwgNjcsIDgsIDMsIDIzNCwgNjYsIDgsIDMsIDIzNCwgOTgsIDgsIDMsIDIzNCwgODEsIDgsIAotICAgIDMsIDIzNCwgOTEsIDgsIDMsIDIzNCwgOTQsIDgsIDMsIDIzNCwgOTIsIDgsIDMsIDIzNCwgMjA4LCA4LCAzLCAyMzQsIDE5NiwgCi0gICAgOCwgMywgMTc2LCA4LCAzLCAyMzQsIDIzNCwgOCwgMywgMjMzLCAyMDYsIDgsIDMsIDIzMywgMjExLCA4LCAzLCAyMzMsIAotICAgIDIwOCwgOCwgMywgMjM0LCA2LCA4LCAzLCAyMzQsIDIsIDgsIDMsIDIzNCwgMzQsIDgsIDMsIDIzNCwgMTMsIDgsIDMsIDIzNCwgCi0gICAgMTYyLCA4LCAzLCAyMzQsIDE0NiwgOCwgMywgMjM0LCAxODgsIDgsIDMsIDIzNCwgMTY1LCA4LCAzLCAyMzMsIDE5NSwgOCwgCi0gICAgMywgMjMzLCAxOTIsIDgsIDMsIDIzMywgMjIzLCA4LCAzLCAyMzMsIDIwNSwgOCwgMywgMjMzLCAxOTgsIDgsIDMsIDIzMywgCi0gICAgMjAyLCA4LCAzLCAyNDMsIDIyLCA4LCAzLCAyNDMsIDIxLCA4LCAzLCAyNDMsIDI2LCA4LCAzLCAyNDMsIDIzLCA4LCAzLCAKLSAgICAyNDMsIDI1LCA4LCAzLCAyNDMsIDI0LCA4LCAzLCAyNDMsIDMzLCA4LCAzLCAyNDMsIDMyLCA4LCAzLCAyNDMsIDM2LCA4LCAKLSAgICAzLCAyNDMsIDM0LCA4LCAzLCAyNDMsIDEzLCA4LCAzLCAyNDMsIDEyLCA4LCAzLCAyNDMsIDE1LCA4LCAzLCAyNDMsIDE0LCAKLSAgICA4LCAzLCAyNDMsIDE4LCA4LCAzLCAyNDMsIDE3LCA4LCAzLCAyNDMsIDIwLCA4LCAzLCAyNDMsIDE5LCA4LCAzLCAyNDMsIAotICAgIDI4LCA4LCAzLCAyNDMsIDI3LCA4LCAzLCAyNDMsIDMxLCA4LCAzLCAyNDMsIDI5LCA4LCAzLCAyNDMsIDgsIDgsIDMsIDI0MywgCi0gICAgNywgOCwgMywgMjQzLCAxNiwgOCwgMywgMjQzLCAxMSwgOCwgMywgMjQzLCA5LCA4LCAzLCAyNDMsIDEwLCA4LCAzLCAyMzAsIAotICAgIDI1NCwgOCwgMywgMjMwLCAyNTUsIDgsIDMsIDIzMSwgMTcsIDgsIDMsIDIzMSwgMTYsIDgsIDMsIDIzMSwgMTksIDgsIDMsIAotICAgIDIzMSwgMTgsIDgsIDMsIDIzMCwgMjQ1LCA4LCAzLCAyMzAsIDI0NywgOCwgMywgMjMwLCAyNDYsIDgsIDMsIDIzMCwgMjUwLCAKLSAgICA4LCAzLCAyMzAsIDI0OSwgOCwgMywgMjMwLCAyNTIsIDgsIDMsIDIzMCwgMjUxLCA4LCAzLCAyMzEsIDAsIDgsIDMsIDIzMSwgCi0gICAgMiwgOCwgMywgMjMxLCAxLCA4LCAzLCAyMzAsIDI0MSwgOCwgMywgMjMwLCAyNDAsIDgsIDMsIDIzMCwgMjQ4LCA4LCAzLCAKLSAgICAyMzAsIDI0NCwgOCwgMywgMjMwLCAyNDIsIDgsIDMsIDIzMCwgMjQzLCA4LCAzLCAyNDAsIDE4NywgOCwgMywgMjQwLCAxODYsIAotICAgIDgsIDMsIDI0MCwgMTkzLCA4LCAzLCAyNDAsIDE4OCwgOCwgMywgMjQwLCAxOTAsIDgsIDMsIDI0MCwgMTg5LCA4LCAzLCAKLSAgICAyNDAsIDE5MiwgOCwgMywgMjQwLCAxOTEsIDgsIDMsIDI0MCwgMTk4LCA4LCAzLCAyNDAsIDE5NywgOCwgMywgMjQwLCAyMDAsIAotICAgIDgsIDMsIDI0MCwgMTk5LCA4LCAzLCAyNDAsIDE3OSwgOCwgMywgMjQwLCAxNzgsIDgsIDMsIDI0MCwgMTgxLCA4LCAzLCAKLSAgICAyNDAsIDE4MCwgOCwgMywgMjQwLCAxODMsIDgsIDMsIDI0MCwgMTgyLCA4LCAzLCAyNDAsIDE4NSwgOCwgMywgMjQwLCAxODQsIAotICAgIDgsIDMsIDI0MCwgMTk0LCA4LCAzLCAyNDAsIDE5NiwgOCwgMywgMjQwLCAxOTUsIDgsIDMsIDIyOSwgMjksIDgsIDMsIDIyOSwgCi0gICAgMzEsIDgsIDMsIDIyOSwgMzAsIDgsIDMsIDIyOSwgNzIsIDgsIDMsIDIyOSwgNzAsIDgsIDMsIDIyOSwgODIsIDgsIDMsIAotICAgIDIyOSwgNzUsIDgsIDMsIDIyOCwgMjQ4LCA4LCAzLCAyMjgsIDI0NywgOCwgMywgMjI4LCAyNDksIDgsIDMsIDIyOSwgMSwgOCwgCi0gICAgMywgMjI4LCAyNTQsIDgsIDMsIDIyOSwgOSwgOCwgMywgMjI5LCAzLCA4LCAzLCAyMjksIDYzLCA4LCAzLCAyMjksIDY5LCA4LCAKLSAgICAzLCAyMjksIDY1LCA4LCAzLCAyNDEsIDE2MywgOCwgMywgMjQxLCAxNzMsIDgsIDMsIDI0MSwgMTgyLCA4LCAzLCAyNDIsIDIsIAotICAgIDgsIDMsIDI0MSwgMjUwLCA4LCAzLCAxNjIsIDgsIDMsIDI0MiwgMTMsIDgsIDMsIDI0MCwgMjEzLCA4LCAzLCAyNDAsIDIxMiwgCi0gICAgOCwgMywgMjQwLCAyMTUsIDgsIDMsIDI0MCwgMjE0LCA4LCAzLCAyNDAsIDI0OSwgOCwgMywgMjQwLCAyNDAsIDgsIDMsIAotICAgIDI0MSwgNzUsIDgsIDMsIDI0MSwgNTQsIDgsIDMsIDI0MSwgMjAxLCA4LCAzLCAyNDEsIDI0NSwgOCwgMywgMjQxLCAyMTMsIAotICAgIDgsIDMsIDIxMiwgNDMsIDgsIDMsIDIxMiwgMjgsIDgsIDMsIDIxMiwgNjUsIDgsIDMsIDIxMiwgNTEsIDgsIDMsIDIxMSwgCi0gICAgMTg1LCA4LCAzLCAyMTEsIDE4NywgOCwgMywgMjExLCAxODYsIDgsIDMsIDIxMSwgMjAzLCA4LCAzLCAyMTEsIDIyNywgOCwgCi0gICAgMywgMjExLCAyMTAsIDgsIDMsIDIxMiwgNSwgOCwgMywgMjEyLCAyMiwgOCwgMywgMjEyLCAxMCwgOCwgMywgMjEwLCAzMCwgCi0gICAgOCwgMywgMjEwLCAyOSwgOCwgMywgMjEwLCA0NCwgOCwgMywgMjEwLCAzMiwgOCwgMywgMjEwLCAzNywgOCwgMywgMjEwLCAKLSAgICAzOSwgOCwgMywgMjEwLCAzOCwgOCwgMywgMjEwLCAxMDIsIDgsIDMsIDIxMCwgOTksIDgsIDMsIDIxMCwgMTE2LCA4LCAzLCAKLSAgICAyMTAsIDEwNSwgOCwgMywgMjEwLCA2LCA4LCAzLCAyMTAsIDgsIDgsIDMsIDIxMCwgNywgOCwgMywgMjEwLCAxOSwgOCwgMywgCi0gICAgMjEwLCAxOCwgOCwgMywgMjEwLCAyMywgOCwgMywgMjEwLCAyMCwgOCwgMywgMjEwLCA4NCwgOCwgMywgMjEwLCA5NCwgOCwgCi0gICAgMywgMjEwLCA4OCwgOCwgMywgMjEwLCAyLCA4LCAzLCAyMTAsIDEsIDgsIDMsIDIxMCwgMTMsIDgsIDMsIDIxMCwgNSwgOCwgCi0gICAgMywgMjEwLCAzLCA4LCAzLCAyMTAsIDQsIDgsIDMsIDIwOSwgMjQ1LCA4LCAzLCAyMDksIDI0NCwgOCwgMywgMjA5LCAyNTAsIAotICAgIDgsIDMsIDIwOSwgMjQ4LCA4LCAzLCAyMDksIDI0NiwgOCwgMywgMjA5LCAyNDcsIDgsIDMsIDI1MCwgMzYsIDgsIDMsIDI1MCwgCi0gICAgMzIsIDgsIDMsIDI1MCwgNTksIDgsIDMsIDI1MCwgNDUsIDgsIDMsIDI1MCwgNTYsIDgsIDMsIDI1MCwgNTAsIDgsIDMsIAotICAgIDI1MCwgNTgsIDgsIDMsIDI1MCwgNTcsIDgsIDMsIDI1MCwgMjMyLCA4LCAzLCAyNTAsIDIyNSwgOCwgMywgMjUxLCA0MSwgOCwgCi0gICAgMywgMjUxLCAzLCA4LCAzLCAyNDksIDExMiwgOCwgMywgMjQ5LCAxMTQsIDgsIDMsIDI0OSwgMTEzLCA4LCAzLCAyNDksIAotICAgIDE2MSwgOCwgMywgMjQ5LCAxNTIsIDgsIDMsIDI0OSwgMjQ2LCA4LCAzLCAyNDksIDE3NywgOCwgMywgMjUwLCAxNjgsIDgsIAotICAgIDMsIDI1MCwgMTk4LCA4LCAzLCAyNTAsIDE3MywgOCwgMywgMjQ5LCA5MiwgOCwgMywgMjQ5LCA5MCwgOCwgMywgMjQ5LCAKLSAgICAxMjAsIDgsIDMsIDI0OSwgMTEwLCA4LCAzLCAyNDksIDk3LCA4LCAzLCAyNDksIDEwOSwgOCwgMywgMjQ5LCA3MSwgOCwgMywgCi0gICAgMjQ5LCA3MCwgOCwgMywgMjQ5LCA4MSwgOCwgMywgMjQ5LCA3NywgOCwgMywgMjQ5LCA3MiwgOCwgMywgMjQ5LCA3NCwgOCwgCi0gICAgMywgMjA5LCAyMjgsIDgsIDMsIDIwOSwgMjI3LCA4LCAzLCAyMDksIDIzNCwgOCwgMywgMjA5LCAyMjksIDgsIDMsIDIwOSwgCi0gICAgMjMxLCA4LCAzLCAyMDksIDIzMCwgOCwgMywgMjA5LCAyMzMsIDgsIDMsIDIwOSwgMjMyLCA4LCAzLCAyMDksIDI0MCwgOCwgCi0gICAgMywgMjA5LCAyMzksIDgsIDMsIDIwOSwgMjQzLCA4LCAzLCAyMDksIDI0MSwgOCwgMywgMjA5LCAyMjQsIDgsIDMsIDIwOSwgCi0gICAgMjI2LCA4LCAzLCAyMDksIDIyNSwgOCwgMywgMjA5LCAyMzUsIDgsIDMsIDIwOSwgMjM4LCA4LCAzLCAyMDksIDIzNiwgOCwgCi0gICAgMywgMjA5LCAyMTcsIDgsIDMsIDIwOSwgMjIxLCA4LCAzLCAyMDksIDIyMCwgOCwgMywgMjA5LCAyMTgsIDgsIDMsIDIwOSwgCi0gICAgMjE5LCA4LCAzLCAyMDksIDIxMSwgOCwgMywgMjA5LCAyMTAsIDgsIDMsIDIwOSwgMjE2LCA4LCAzLCAyMDksIDIxNCwgOCwgCi0gICAgMywgMjA5LCAyMTIsIDgsIDMsIDIwOSwgMjEzLCA4LCAzLCAyMjcsIDEwOCwgOCwgMywgMjI3LCAxMDcsIDgsIDMsIDIyNywgCi0gICAgMTEzLCA4LCAzLCAyMjcsIDEwOSwgOCwgMywgMjI3LCAxMTAsIDgsIDMsIDIyNywgMTEyLCA4LCAzLCAyMjcsIDExMSwgOCwgCi0gICAgMywgMjI3LCAxMTgsIDgsIDMsIDIyNywgMTE3LCA4LCAzLCAyMjcsIDEyMSwgOCwgMywgMjI3LCAxMjAsIDgsIDMsIDIyNywgCi0gICAgMTAxLCA4LCAzLCAyMjcsIDEwMiwgOCwgMywgMjI3LCAxMDUsIDgsIDMsIDIyNywgMTA2LCA4LCAzLCAyMjcsIDExNCwgOCwgCi0gICAgMywgMjI3LCAxMTYsIDgsIDMsIDIyNywgOTYsIDgsIDMsIDIyNywgMTA0LCA4LCAzLCAyMjcsIDEwMCwgOCwgMywgMjI3LCAKLSAgICA5NywgOCwgMywgMjI3LCA5OCwgOCwgMywgMjI3LCA5MSwgOCwgMywgMjI3LCA5MCwgOCwgMywgMjI3LCA5NSwgOCwgMywgCi0gICAgMjI3LCA5NCwgOCwgMywgMjI3LCA5MiwgOCwgMywgMjI3LCA5MywgOCwgMywgMjE5LCAxMjksIDgsIDMsIDE5NSwgOCwgMywgCi0gICAgMjE5LCAxOTMsIDgsIDMsIDIxOSwgMTMyLCA4LCAzLCAyMTksIDE4NSwgOCwgMywgMjE5LCAxODgsIDgsIDMsIDIxOSwgMTg2LCAKLSAgICA4LCAzLCAyMjEsIDIyOCwgOCwgMywgMjIxLCAyMTYsIDgsIDMsIDIwNiwgOCwgMywgMjIxLCAyMzYsIDgsIDMsIDIxOCwgMjksIAotICAgIDgsIDMsIDIxOCwgMzEsIDgsIDMsIDIxOCwgMzAsIDgsIDMsIDIxOSwgMzYsIDgsIDMsIDIxOSwgMjUsIDgsIDMsIDIxOSwgCi0gICAgNjAsIDgsIDMsIDIxOSwgNDAsIDgsIDMsIDIyMCwgMTE2LCA4LCAzLCAyMjEsIDE4MywgOCwgMywgMjIwLCAxNDEsIDgsIDMsIAotICAgIDIxOCwgNiwgOCwgMywgMjE4LCA0LCA4LCAzLCAyMTgsIDg0LCA4LCAzLCAyMTgsIDI4LCA4LCAzLCAyMTgsIDEwLCA4LCAzLCAKLSAgICAyMTgsIDE4LCA4LCAzLCAyMTcsIDE2NywgOCwgMywgMjE3LCAxNjYsIDgsIDMsIDIxNywgMjMzLCA4LCAzLCAyMTcsIDE3NCwgCi0gICAgOCwgMywgMjE3LCAxNjksIDgsIDMsIDIxNywgMTczLCA4LCAzLCAyMTgsIDE4OCwgOCwgMywgMjE4LCAxODcsIDgsIDMsIAotICAgIDIxOCwgMTk0LCA4LCAzLCAyMTgsIDE4OSwgOCwgMywgMjE4LCAxOTEsIDgsIDMsIDIxOCwgMTkzLCA4LCAzLCAyMTgsIDE5MiwgCi0gICAgOCwgMywgMjE4LCAyMDIsIDgsIDMsIDIxOCwgMjAwLCA4LCAzLCAyMTgsIDIyNSwgOCwgMywgMjE4LCAyMDMsIDgsIDMsIAotICAgIDIxOCwgMTgzLCA4LCAzLCAyMTgsIDE4MiwgOCwgMywgMjE4LCAxODYsIDgsIDMsIDIxOCwgMTg0LCA4LCAzLCAyMTgsIDE5NiwgCi0gICAgOCwgMywgMjE4LCAxOTksIDgsIDMsIDIxOCwgMTk3LCA4LCAzLCAyMTgsIDE3OSwgOCwgMywgMjE4LCAxNzcsIDgsIDMsIAotICAgIDIxOCwgMTgxLCA4LCAzLCAyMTgsIDE4MCwgOCwgMywgMjE4LCAxNzIsIDgsIDMsIDIxOCwgMTcxLCA4LCAzLCAyMTgsIDE3NiwgCi0gICAgOCwgMywgMjE4LCAxNzUsIDgsIDMsIDIxOCwgMTczLCA4LCAzLCAyMTgsIDE3NCwgOCwgMywgMjEwLCA3NywgOCwgMywgMjEwLCAKLSAgICA3NiwgOCwgMywgMjEwLCA4MiwgOCwgMywgMjEwLCA3OSwgOCwgMywgMjEwLCA1OSwgOCwgMywgMjEwLCA2MSwgOCwgMywgCi0gICAgMjEwLCA2MCwgOCwgMywgMjEwLCA2NCwgOCwgMywgMjEwLCA2MywgOCwgMywgMjEwLCA2NywgOCwgMywgMjEwLCA2NSwgOCwgCi0gICAgMywgMjEwLCA3MSwgOCwgMywgMjEwLCA3MCwgOCwgMywgMjEwLCA3NCwgOCwgMywgMjEwLCA3MiwgOCwgMywgMjEwLCA1NSwgCi0gICAgOCwgMywgMjEwLCA1NCwgOCwgMywgMjEwLCA2MiwgOCwgMywgMjEwLCA1OCwgOCwgMywgMjEwLCA1NiwgOCwgMywgMjEwLCAKLSAgICA1NywgOCwgMywgMjEwLCA0NywgOCwgMywgMjEwLCA0NiwgOCwgMywgMjEwLCA1MSwgOCwgMywgMjEwLCA1MCwgOCwgMywgCi0gICAgMjEwLCA0OCwgOCwgMywgMjEwLCA0OSwgOCwgMywgMjUwLCAxNDQsIDgsIDMsIDI1MCwgMTQxLCA4LCAzLCAyNTAsIDE2NSwgCi0gICAgOCwgMywgMjUwLCAxNTIsIDgsIDMsIDI1MCwgNzMsIDgsIDMsIDI1MCwgNzIsIDgsIDMsIDI1MCwgNzUsIDgsIDMsIDI1MCwgCi0gICAgNzQsIDgsIDMsIDI1MCwgODcsIDgsIDMsIDI1MCwgODYsIDgsIDMsIDI1MCwgOTQsIDgsIDMsIDI1MCwgODksIDgsIDMsIAotICAgIDI1MCwgMTIzLCA4LCAzLCAyNTAsIDEyMSwgOCwgMywgMjUwLCAxMzksIDgsIDMsIDI1MCwgMTI5LCA4LCAzLCAyNTAsIDY3LCAKLSAgICA4LCAzLCAyNTAsIDc3LCA4LCAzLCAyNTAsIDcxLCA4LCAzLCAyNTAsIDY4LCA4LCAzLCAyNTAsIDcwLCA4LCAzLCAyNTAsIAotICAgIDYxLCA4LCAzLCAyNTAsIDYwLCA4LCAzLCAyNTAsIDY1LCA4LCAzLCAyNTAsIDY0LCA4LCAzLCAyNTAsIDYyLCA4LCAzLCAKLSAgICAyNTAsIDYzLCA4LCAzLCAyMjIsIDE3NywgOCwgMywgMjIyLCAxODEsIDgsIDMsIDIyMiwgMTYwLCA4LCAzLCAyMjIsIDE2MSwgCi0gICAgOCwgMywgMjIyLCAxNjQsIDgsIDMsIDIyMiwgMTYzLCA4LCAzLCAyMjIsIDE2NywgOCwgMywgMjIyLCAxNjUsIDgsIDMsIAotICAgIDIyMiwgMTcxLCA4LCAzLCAyMjIsIDE3MCwgOCwgMywgMjIyLCAxNzYsIDgsIDMsIDIyMiwgMTcyLCA4LCAzLCAyMjIsIDE1NiwgCi0gICAgOCwgMywgMjIyLCAxNTQsIDgsIDMsIDIyMiwgMTYyLCA4LCAzLCAyMjIsIDE1OSwgOCwgMywgMjIyLCAxNTcsIDgsIDMsIAotICAgIDIyMiwgMTU4LCA4LCAzLCAyMjIsIDE0OSwgOCwgMywgMjIyLCAxNDgsIDgsIDMsIDIyMiwgMTUzLCA4LCAzLCAyMjIsIDE1MiwgCi0gICAgOCwgMywgMjIyLCAxNTAsIDgsIDMsIDIyMiwgMTUxLCA4LCAzLCAyMjgsIDM5LCA4LCAzLCAyMjgsIDM4LCA4LCAzLCAyMjgsIAotICAgIDQxLCA4LCAzLCAyMjgsIDQwLCA4LCAzLCAyMjgsIDMxLCA4LCAzLCAyMjgsIDMzLCA4LCAzLCAyMjgsIDMyLCA4LCAzLCAKLSAgICAyMjgsIDM1LCA4LCAzLCAyMjgsIDM0LCA4LCAzLCAyMjgsIDM3LCA4LCAzLCAyMjgsIDM2LCA4LCAzLCAyMjgsIDI2LCA4LCAKLSAgICAzLCAyMjgsIDI1LCA4LCAzLCAyMjgsIDMwLCA4LCAzLCAyMjgsIDI5LCA4LCAzLCAyMjgsIDI3LCA4LCAzLCAyMjgsIDI4LCAKLSAgICA4LCAzLCAyMjgsIDIwLCA4LCAzLCAyMjgsIDE5LCA4LCAzLCAyMjgsIDI0LCA4LCAzLCAyMjgsIDIzLCA4LCAzLCAyMjgsIAotICAgIDIxLCA4LCAzLCAyMjgsIDIyLCA4LCAzLCAyMjAsIDc0LCA4LCAzLCAyMjAsIDY5LCA4LCAzLCAyMjAsIDEwNCwgOCwgMywgCi0gICAgMjIwLCA4NSwgOCwgMywgMjE5LCAyMTcsIDgsIDMsIDIxOSwgMjE5LCA4LCAzLCAyMTksIDIxOCwgOCwgMywgMjE5LCAyMzgsIAotICAgIDgsIDMsIDIxOSwgMjM1LCA4LCAzLCAyMjAsIDksIDgsIDMsIDIyMCwgMCwgOCwgMywgMjIwLCA0NCwgOCwgMywgMjIwLCAzNywgCi0gICAgOCwgMywgMjIwLCA2NSwgOCwgMywgMjIwLCA1MiwgOCwgMywgMjE5LCAyMTMsIDgsIDMsIDIxOSwgMjExLCA4LCAzLCAyMTksIAotICAgIDIyNywgOCwgMywgMjE5LCAyMTYsIDgsIDMsIDIxOSwgMjE0LCA4LCAzLCAyMTksIDIxNSwgOCwgMywgMjE5LCAxOTYsIDgsIAotICAgIDMsIDIxOSwgMTk1LCA4LCAzLCAyMTksIDIwMiwgOCwgMywgMjE5LCAxOTksIDgsIDMsIDIxOSwgMTk3LCA4LCAzLCAyMTksIAotICAgIDE5OCwgOCwgMywgMjIzLCAxNDQsIDgsIDMsIDIyMywgMTM4LCA4LCAzLCAyMDUsIDgsIDMsIDIyMywgMTUwLCA4LCAzLCAKLSAgICAyMjIsIDEyMiwgOCwgMywgMjIyLCAxMjQsIDgsIDMsIDIyMiwgMTIzLCA4LCAzLCAyMjIsIDE5MCwgOCwgMywgMjIyLCAxODMsIAotICAgIDgsIDMsIDIyMiwgMjEzLCA4LCAzLCAyMjIsIDE5NCwgOCwgMywgMjIzLCA0NiwgOCwgMywgMjIzLCAxMzEsIDgsIDMsIDIyMywgCi0gICAgODQsIDgsIDMsIDIyMiwgMTE1LCA4LCAzLCAyMjIsIDExMiwgOCwgMywgMjIyLCAxNDIsIDgsIDMsIDIyMiwgMTIxLCA4LCAzLCAKLSAgICAyMjIsIDExNywgOCwgMywgMjIyLCAxMTgsIDgsIDMsIDIyMiwgOTcsIDgsIDMsIDIyMiwgOTYsIDgsIDMsIDIyMiwgMTAyLCAKLSAgICA4LCAzLCAyMjIsIDEwMCwgOCwgMywgMjIyLCA5OCwgOCwgMywgMjIyLCA5OSwgOCwgMywgMjM1LCAxMDQsIDgsIDMsIDIzNSwgCi0gICAgMTAzLCA4LCAzLCAyMzUsIDExNCwgOCwgMywgMjM1LCAxMDUsIDgsIDMsIDIzNSwgMTEwLCA4LCAzLCAyMzUsIDEwOSwgOCwgCi0gICAgMywgMjM1LCAxMTIsIDgsIDMsIDIzNSwgMTExLCA4LCAzLCAyMzUsIDQ3LCA4LCAzLCAyMzUsIDQ2LCA4LCAzLCAyMzUsIDQ5LCAKLSAgICA4LCAzLCAyMzUsIDQ4LCA4LCAzLCAyMzUsIDYyLCA4LCAzLCAyMzUsIDYwLCA4LCAzLCAyMzUsIDc0LCA4LCAzLCAyMzUsIAotICAgIDY0LCA4LCAzLCAyMzUsIDQwLCA4LCAzLCAyMzUsIDM4LCA4LCAzLCAyMzUsIDU3LCA4LCAzLCAyMzUsIDQ1LCA4LCAzLCAKLSAgICAyMzUsIDQyLCA4LCAzLCAyMzUsIDQzLCA4LCAzLCAyMzUsIDMyLCA4LCAzLCAyMzUsIDMxLCA4LCAzLCAyMzUsIDM2LCA4LCAKLSAgICAzLCAyMzUsIDM1LCA4LCAzLCAyMzUsIDMzLCA4LCAzLCAyMzUsIDM0LCA4LCAzLCAyMjQsIDQ5LCA4LCAzLCAyMjQsIDQ3LCAKLSAgICA4LCAzLCAyMjQsIDU2LCA4LCAzLCAyMjQsIDUwLCA4LCAzLCAyMjQsIDUzLCA4LCAzLCAyMjQsIDUyLCA4LCAzLCAyMjQsIAotICAgIDU1LCA4LCAzLCAyMjQsIDU0LCA4LCAzLCAyMjQsIDIsIDgsIDMsIDIyMywgMjU1LCA4LCAzLCAyMjQsIDQsIDgsIDMsIDIyNCwgCi0gICAgMywgOCwgMywgMjI0LCAzNiwgOCwgMywgMjI0LCAzNSwgOCwgMywgMjI0LCA0NSwgOCwgMywgMjI0LCAzOSwgOCwgMywgMjIzLCAKLSAgICAyNTAsIDgsIDMsIDIyMywgMjQ2LCA4LCAzLCAyMjQsIDMzLCA4LCAzLCAyMjMsIDI1NCwgOCwgMywgMjIzLCAyNTIsIDgsIDMsIAotICAgIDIyMywgMjUzLCA4LCAzLCAyMjMsIDIzMCwgOCwgMywgMjIzLCAyMjgsIDgsIDMsIDIyMywgMjQwLCA4LCAzLCAyMjMsIDIzMywgCi0gICAgOCwgMywgMjIzLCAyMzEsIDgsIDMsIDIyMywgMjMyLCA4LCAzLCAyMzUsIDkzLCA4LCAzLCAyMzUsIDkyLCA4LCAzLCAyMzUsIAotICAgIDk5LCA4LCAzLCAyMzUsIDk0LCA4LCAzLCAyMzUsIDk2LCA4LCAzLCAyMzUsIDk1LCA4LCAzLCAyMzUsIDk4LCA4LCAzLCAKLSAgICAyMzUsIDk3LCA4LCAzLCAyMzUsIDg0LCA4LCAzLCAyMzUsIDg2LCA4LCAzLCAyMzUsIDg1LCA4LCAzLCAyMzUsIDg5LCA4LCAKLSAgICAzLCAyMzUsIDg4LCA4LCAzLCAyMzUsIDkxLCA4LCAzLCAyMzUsIDkwLCA4LCAzLCAyMzUsIDgwLCA4LCAzLCAyMzUsIDc5LCAKLSAgICA4LCAzLCAyMzUsIDg3LCA4LCAzLCAyMzUsIDgzLCA4LCAzLCAyMzUsIDgxLCA4LCAzLCAyMzUsIDgyLCA4LCAzLCAyMzUsIAotICAgIDc2LCA4LCAzLCAyMzUsIDc1LCA4LCAzLCAyMzUsIDc4LCA4LCAzLCAyMzUsIDc3LCA4LCAzLCAyMjgsIDE2NywgOCwgMywgCi0gICAgMjI4LCAxNjYsIDgsIDMsIDIyOCwgMTc0LCA4LCAzLCAyMjgsIDE2OCwgOCwgMywgMjI4LCAxNzAsIDgsIDMsIDIyOCwgMTY5LCAKLSAgICA4LCAzLCAyMjgsIDE3MywgOCwgMywgMjI4LCAxNzEsIDgsIDMsIDIyOCwgMTU2LCA4LCAzLCAyMjgsIDE1NywgOCwgMywgCi0gICAgMjI4LCAxNjIsIDgsIDMsIDIyOCwgMTYxLCA4LCAzLCAyMjgsIDE2NSwgOCwgMywgMjI4LCAxNjMsIDgsIDMsIDIyOCwgMTUxLCAKLSAgICA4LCAzLCAyMjgsIDE2MCwgOCwgMywgMjI4LCAxNTUsIDgsIDMsIDIyOCwgMTUyLCA4LCAzLCAyMjgsIDE1MywgOCwgMywgCi0gICAgMjI4LCAxNDYsIDgsIDMsIDIyOCwgMTQ1LCA4LCAzLCAyMjgsIDE1MCwgOCwgMywgMjI4LCAxNDksIDgsIDMsIDIyOCwgMTQ3LCAKLSAgICA4LCAzLCAyMjgsIDE0OCwgOCwgMywgMjI3LCAxNDEsIDgsIDMsIDIyNywgMTQwLCA4LCAzLCAyMjcsIDE1MiwgOCwgMywgCi0gICAgMjI3LCAxNDUsIDgsIDMsIDIyNywgMTQ5LCA4LCAzLCAyMjcsIDE0OCwgOCwgMywgMjI3LCAxNTEsIDgsIDMsIDIyNywgMTUwLCAKLSAgICA4LCAzLCAyMjcsIDEyOCwgOCwgMywgMjI3LCAxMzAsIDgsIDMsIDIyNywgMTI5LCA4LCAzLCAyMjcsIDEzNCwgOCwgMywgCi0gICAgMjI3LCAxMzMsIDgsIDMsIDIyNywgMTM4LCA4LCAzLCAyMjcsIDEzNSwgOCwgMywgMjI3LCAxMjYsIDgsIDMsIDIyNywgMTI0LCAKLSAgICA4LCAzLCAyMjcsIDEzMiwgOCwgMywgMjI3LCAxMjcsIDgsIDMsIDIxMSwgMTUwLCA4LCAzLCAyMTEsIDE0OSwgOCwgMywgCi0gICAgMjExLCAxNTcsIDgsIDMsIDIxMSwgMTUyLCA4LCAzLCAyMTEsIDE1NCwgOCwgMywgMjExLCAxNTMsIDgsIDMsIDIxMSwgMTU2LCAKLSAgICA4LCAzLCAyMTEsIDE1NSwgOCwgMywgMjExLCAxMzksIDgsIDMsIDIxMSwgMTQwLCA4LCAzLCAyMTEsIDE0NCwgOCwgMywgCi0gICAgMjExLCAxNDMsIDgsIDMsIDIxMSwgMTQ4LCA4LCAzLCAyMTEsIDE0NiwgOCwgMywgMjExLCAxMjEsIDgsIDMsIDIxMSwgMTE5LCAKLSAgICA4LCAzLCAyMTEsIDEzMSwgOCwgMywgMjExLCAxMjQsIDgsIDMsIDIxMSwgMTIyLCA4LCAzLCAyMTEsIDEyMywgOCwgMywgCi0gICAgMjEwLCAyNTAsIDgsIDMsIDIxMCwgMjQ4LCA4LCAzLCAyMTEsIDgsIDgsIDMsIDIxMCwgMjUxLCA4LCAzLCAyMTEsIDIsIDgsIAotICAgIDMsIDIxMSwgMSwgOCwgMywgMjExLCA1LCA4LCAzLCAyMTEsIDMsIDgsIDMsIDIxMCwgMTkxLCA4LCAzLCAyMTAsIDE5MCwgOCwgCi0gICAgMywgMjEwLCAxOTQsIDgsIDMsIDIxMCwgMTkyLCA4LCAzLCAyMTAsIDIyNCwgOCwgMywgMjEwLCAyMjEsIDgsIDMsIDIxMCwgCi0gICAgMjQ0LCA4LCAzLCAyMTAsIDIyOCwgOCwgMywgMjEwLCAxODIsIDgsIDMsIDIxMCwgMTc4LCA4LCAzLCAyMTAsIDIxMiwgOCwgCi0gICAgMywgMjEwLCAxODksIDgsIDMsIDIxMCwgMTg1LCA4LCAzLCAyMTAsIDE4NiwgOCwgMywgMjEwLCAxNjIsIDgsIDMsIDIxMCwgCi0gICAgMTYxLCA4LCAzLCAyMTAsIDE2OSwgOCwgMywgMjEwLCAxNjUsIDgsIDMsIDIxMCwgMTYzLCA4LCAzLCAyMTAsIDE2NCwgOCwgCi0gICAgMzQsIDIyNCwgMzYsIDgsIDM0LCAyMzIsIDI0NywgOCwgMzQsIDIzNCwgNjcsIDgsIDM0LCAyMjcsIDE0NSwgOCwgMzQsIAotICAgIDI0OSwgNzcsIDgsIDM0LCAyMTgsIDE5NCwgOCwgMzQsIDI0MywgMTksIDgsIDM0LCAyNDMsIDUxLCA4LCAzNCwgMjMwLCAKLSAgICAyMzUsIDgsIDM0LCAyNDAsIDE4NywgOCwgMzQsIDIzMiwgNjEsIDgsIDM0LCAyNTIsIDkxLCA4LCAzNCwgMjMwLCAxMzEsIDgsIAotICAgIDM0LCAyMTAsIDI0NCwgOCwgMzQsIDIyNCwgMTI0LCA4LCAzNCwgMjQwLCAxODEsIDgsIDM0LCAyMTcsIDQ3LCA4LCAzNCwgCi0gICAgMjQzLCAxNDIsIDgsIDM0LCAyMTAsIDUsIDgsIDM0LCAyNDksIDcxLCA4LCAzNCwgMjQ4LCAxMDMsIDgsIDM0LCAyNTEsIAotICAgIDEwNiwgOCwgMzQsIDI0MywgMTUsIDgsIDM0LCAyMjcsIDEzNSwgOCwgMzQsIDIxNSwgMTE5LCA4LCAzNCwgMjI2LCAxNzksIAotICAgIDgsIDM0LCAyMzUsIDgwLCA4LCAzNCwgMjEwLCAxOSwgOCwgMzQsIDIyNCwgMTAzLCA4LCAzNCwgMjQxLCAxMTUsIDgsIDM0LCAKLSAgICAyMTAsIDI1MCwgOCwgMzQsIDIxMiwgMTEyLCA4LCAzNCwgMjE5LCAyMDIsIDgsIDM0LCAyMTMsIDI0NCwgOCwgMzQsIDIxMCwgCi0gICAgMTE2LCA4LCAzNCwgMjM1LCA3NCwgOCwgMzQsIDIyNywgMTAwLCA4LCAzNCwgMjM1LCA3OCwgOCwgMzQsIDI0MiwgMTYxLCA4LCAKLSAgICAzNCwgMjM1LCA5OCwgOCwgMzQsIDIxMSwgMjI3LCA4LCAzNCwgMjQ2LCA4NiwgOCwgMzQsIDIxOSwgMjE1LCA4LCAzNCwgCi0gICAgMjMyLCAyNDIsIDgsIDM0LCAyNDksIDgxLCA4LCAzNCwgMjQ5LCAxMTMsIDgsIDM0LCAyNTAsIDQ1LCA4LCAzNCwgMjQwLCAKLSAgICAxODQsIDgsIDM0LCAyMjAsIDc0LCA4LCAzNCwgMjEwLCA0LCA4LCAzNCwgMjIwLCAwLCA4LCAzNCwgMjUwLCAxMzksIDgsIAotICAgIDM0LCAyMDksIDIzMSwgOCwgMzQsIDIyOSwgMTc4LCA4LCAzNCwgMjM0LCAxODgsIDIzMiwgMjAyLCAxLCAyNTIsIDE5OSwgCi0gICAgMjMyLCAyMDIsIDEsIDE5MSwgMjMyLCAyMDIsIDEsIDIyNSwgMTUwLCAyMzIsIDIwMiwgMSwgMjQ4LCAyMjksIDIzMiwgMjAyLCAKLSAgICAxLCAyMTcsIDEwNiwgMjMyLCAyMDIsIDEsIDIxNiwgMjA5LCAyMzIsIDIwMiwgMSwgMjQzLCAxNDIsIDIzMiwgMjAyLCAxLCAKLSAgICAxNzYsIDIzMiwgMjAyLCAxLCAyMzQsIDEzOCwgMjMyLCAyMDIsIDEsIDIzNSwgMTQ3LCAyMzIsIDIwMiwgMSwgMjUxLCA0MSwgCi0gICAgMjMyLCAyMDIsIDEsIDI1MCwgMTY1LCAyMzIsIDIwMiwgMSwgMjQ2LCA0NiwgMjMyLCAyMDIsIDEsIDIxNSwgMTg0LCAyMzIsIAotICAgIDIwMiwgMSwgMjE1LCAxNzYsIDIzMiwgMjAyLCAxLCAxODYsIDIzMiwgMjAyLCAxLCAxOTgsIDIzMiwgMjAyLCAxLCAyMzMsIAotICAgIDE0MSwgMjMyLCAyMDIsIDEsIDIwNiwgMjMyLCAyMDIsIDEsIDIxMCwgODIsIDIzMiwgMjAyLCAxLCAyMTAsIDExNiwgMjMyLCAKLSAgICAyMDIsIDEsIDIyOSwgODIsIDIzMiwgMjAyLCAxLCAxNjIsIDIzMiwgMjAyLCAxLCAyMTEsIDE2NSwgMjMyLCAyMDIsIDEsIAotICAgIDI0MSwgMTk2LCAyMzIsIDIwMiwgMSwgMjQ0LCAyMDQsIDIzMiwgMjAyLCAxLCAyMTIsIDY1LCAyMzIsIDIwMiwgMSwgMjIwLCAKLSAgICAxMDQsIDIzMiwgMjAyLCAxLCAxOTIsIDIzMiwgMjAyLCAxLCAyNDMsIDAsIDIzMiwgMjAyLCAxLCA2MSwgMjMyLCAyMDIsIDEsIAotICAgIDI1NCwgMjUyLCAyMzIsIDIwMiwgMSwgNzYsIDIzMiwgMjAyLCAxLCAyNDUsIDYzLCAyMzIsIDIwMiwgMSwgNzQsIDIzMiwgCi0gICAgMjAyLCAxLCA3OCwgMjMyLCAyMDIsIDEsIDY5LCAyMzIsIDIwMiwgMSwgMjE0LCAyMTQsIDIzMiwgMjAyLCAxLCAyMTQsIAotICAgIDIwOCwgMjMyLCAyMDIsIDEsIDIyNiwgMjM4LCAyMzIsIDIwMiwgMSwgMTM4LCAyMzAsIDM3LCAyMTYsIDExOCwgMjMyLCAKLSAgICAyMDIsIDEsIDEzOCwgMjI5LCAyMzQsIDIyNSwgMTksIDIzMiwgMjAyLCAxLCAxMzgsIDIzMCwgMzcsIDI0OSwgODAsIDIzMiwgCi0gICAgMjAyLCAxLCAxMzgsIDIzMCwgMzcsIDI1MSwgMjEzLCAyMzIsIDIwMiwgMSwgMTM4LCAyMzAsIDM3LCAxOTgsIDIzMiwgMjAyLCAKLSAgICAxLCAxMzgsIDIzMCwgMzcsIDIzNSwgMTIxLCAyMzIsIDIwMiwgMjI0LCAxNDQsIDI0OSwgMjI3LCAyMzIsIDIwMiwgMjI0LCAKLSAgICAxNDQsIDI0MywgMjM2LCAyMTgsIDEzMSwgNDEsIDMsIDI0NSwgMjE3LCA0MSwgMywgMjQ1LCAyMTMsIDQxLCAzLCAyNDEsIAotICAgIDIyNywgNDEsIDMsIDIxMiwgMTcsIDQxLCAzLCAyMTIsIDE2LCA0MSwgMywgMjI1LCAyMTQsIDQxLCAzLCAyNTIsIDIxLCA0MSwgCi0gICAgMywgMjUyLCA3NCwgNDEsIDMsIDIzMSwgMTIxLCA0MSwgMywgMjMzLCAyNTMsIDQxLCAzLCAyMzEsIDExLCA0MSwgMywgMjQzLCAKLSAgICA4MiwgNDEsIDMsIDI0NCwgMTU1LCA0MSwgMywgMjEzLCAyNTAsIDQxLCAzLCAyMTcsIDEyLCA0MSwgMywgMjE2LCAxOTUsIAotICAgIDQxLCAzLCAyNDgsIDI0LCA0MSwgMywgMjQ4LCAyMSwgNDEsIDMsIDIzMywgNTYsIDQxLCAzLCAyMjMsIDExMSwgNDEsIDMsIAotICAgIDI0OCwgODUsIDQxLCAzLCAyMjksIDE0NCwgNDEsIDMsIDIyMSwgMTcyLCA0MSwgMywgMjIwLCA2MywgNDEsIDMsIDIxMCwgCi0gICAgOTIsIDQxLCAzLCAyMTAsIDczLCA0MSwgMywgMjUwLCAxOTAsIDQxLCAzLCAyMzUsIDEzMCwgNDEsIDMsIDIyOCwgMTgxLCAKLSAgICA0MSwgMywgMjExLCA0NCwgNDEsIDMsIDIzNCwgMTg3LCA0MSwgMywgMjI5LCA1NiwgNDEsIDMsIDI0MywgNjIsIDQxLCAzLCAKLSAgICAyMzEsIDg1LCA0MSwgMywgMjI5LCAxMDgsIDQxLCAzLCAyMjcsIDE1OSwgNDEsIDMsIDc0LCA0MSwgMywgMjM2LCA2LCA0MSwgCi0gICAgMywgMjQxLCAxODcsIDQxLCAzLCAyNDEsIDE2NywgNDEsIDMsIDIxMSwgMjUwLCA0MSwgMywgMjExLCAyNDEsIDQxLCAzLCAKLSAgICAyMjUsIDExMSwgNDEsIDMsIDI1MiwgMTksIDQxLCAzLCAyNTIsIDE0LCA0MSwgMywgMjMxLCAxMTQsIDQxLCAzLCAyMzMsIAotICAgIDI1MCwgNDEsIDMsIDIzMSwgOCwgNDEsIDMsIDI0MywgNzgsIDQxLCAzLCAyNDQsIDEyOSwgNDEsIDMsIDIxMywgMTc2LCA0MSwgCi0gICAgMywgMjE2LCAxMTgsIDQxLCAzLCAyMTYsIDE3NiwgNDEsIDMsIDI0OCwgMTYsIDQxLCAzLCAyNDgsIDIwLCA0MSwgMywgMjMyLCAKLSAgICAyNDcsIDQxLCAzLCAyMjMsIDM4LCA0MSwgMywgMjQ4LCAxMSwgNDEsIDMsIDIyOSwgMTM4LCA0MSwgMywgMjE5LCAxOTMsIAotICAgIDQxLCAzLCAyMjAsIDM0LCA0MSwgMywgMjEwLCA0NCwgNDEsIDMsIDIxMCwgNjksIDQxLCAzLCAyNTAsIDU5LCA0MSwgMywgCi0gICAgMjM1LCAxMTQsIDQxLCAzLCAyMjgsIDE3NCwgNDEsIDMsIDIxMSwgOCwgNDEsIDMsIDIzNCwgOTgsIDQxLCAzLCAyMjksIDQ4LCAKLSAgICA0MSwgMywgMjQyLCAyMjEsIDQxLCAzLCAyMzAsIDIzNSwgNDEsIDMsIDIyOCwgMjM4LCA0MSwgMywgMjI3LCAxNTIsIDQxLCAKLSAgICAzLCA2MSwgNDEsIDMsIDI1NCwgMTMxLCA0MSwgMywgMjI5LCA3NywgNDEsIDMsIDE2MiwgNDEsIDMsIDI0MiwgMjUsIDQxLCAKLSAgICAzLCAyMTIsIDY1LCA0MSwgMywgMjEyLCA1NSwgNDEsIDMsIDE5MSwgNDEsIDMsIDI1MiwgMjYsIDQxLCAzLCAyNTIsIDE5OSwgCi0gICAgNDEsIDMsIDIzMSwgMTI5LCA0MSwgMywgMjM0LCAxLCA0MSwgMywgMjM0LCAwLCA0MSwgMywgMjMxLCAxNSwgNDEsIDMsIAotICAgIDI0MywgODYsIDQxLCAzLCAyNDQsIDIwNCwgNDEsIDMsIDIxNCwgMjcsIDQxLCAzLCAyMTcsIDEwNiwgNDEsIDMsIDIxNiwgCi0gICAgMjA5LCA0MSwgMywgMjQ4LCAzMywgNDEsIDMsIDI0OCwgMjMsIDQxLCAzLCAyMzMsIDE0MSwgNDEsIDMsIDIwNSwgNDEsIDMsIAotICAgIDI0OCwgMjI5LCA0MSwgMywgMjI5LCAxNTMsIDQxLCAzLCAyMDYsIDQxLCAzLCAyMjAsIDEwNCwgNDEsIDMsIDIxMCwgMTE2LCAKLSAgICA0MSwgMywgMjEwLCA4MiwgNDEsIDMsIDI1MSwgNDEsIDQxLCAzLCAyMzUsIDE0NywgNDEsIDMsIDIyOCwgMTkwLCA0MSwgMywgCi0gICAgMTkyLCA0MSwgMywgMTc2LCA0MSwgMywgMjM0LCAyNDAsIDQxLCAzLCAyMjksIDYxLCA0MSwgMywgMjQzLCAxNDIsIDQxLCAzLCAKLSAgICAxODYsIDQxLCAzLCAxOTgsIDQxLCAzLCAyMjcsIDE2OSwgNDEsIDMsIDIyNiwgMTg3LCA0MSwgMywgMjI2LCAxODMsIDQxLCAKLSAgICAzLCAyNDEsIDYwLCA0MSwgMywgMjExLCAyMTUsIDQxLCAzLCAyMTEsIDIxMSwgNDEsIDMsIDIyNCwgMjUyLCA0MSwgMywgCi0gICAgMjUyLCAxNywgNDEsIDMsIDI1MSwgMjAxLCA0MSwgMywgMjMxLCAxMDksIDQxLCAzLCAyMzMsIDI0OCwgNDEsIDMsIDIzMSwgCi0gICAgNCwgNDEsIDMsIDI0MywgNzQsIDQxLCAzLCAyNDQsIDQyLCA0MSwgMywgMjEzLCAxMjcsIDQxLCAzLCAyMTYsIDE4LCA0MSwgCi0gICAgMywgMjE2LCAxNTQsIDQxLCAzLCAyNDgsIDE0LCA0MSwgMywgMjQ4LCAxOCwgNDEsIDMsIDIzMiwgMTMzLCA0MSwgMywgMjIyLCAKLSAgICAxOTksIDQxLCAzLCAyNDcsIDEzMywgNDEsIDMsIDIyOSwgMTI1LCA0MSwgMywgMjE5LCA0MiwgNDEsIDMsIDIyMCwgMywgNDEsIAotICAgIDMsIDIxMCwgMjEsIDQxLCAzLCAyMTAsIDY2LCA0MSwgMywgMjQ5LCAxODIsIDQxLCAzLCAyMzUsIDY1LCA0MSwgMywgMjI4LCAKLSAgICAxNjQsIDQxLCAzLCAyMTAsIDIyOSwgNDEsIDMsIDIzNCwgMTYsIDQxLCAzLCAyMjksIDQ2LCA0MSwgMywgMjQyLCAxNzEsIAotICAgIDQxLCAzLCAyMzAsIDEzNywgNDEsIDMsIDIyOCwgNjksIDQxLCAzLCAyMjcsIDEzNiwgNDEsIDMsIDY5LCA0MSwgMywgMjE0LCAKLSAgICAxOTAsIDQxLCAzLCAyNDAsIDIyOSwgNDEsIDMsIDI0MCwgMjE5LCA0MSwgMywgMjExLCAxOTUsIDQxLCAzLCAyMTEsIDE4OSwgCi0gICAgNDEsIDMsIDIyNCwgMTUzLCA0MSwgMywgMjUyLCAxNiwgNDEsIDMsIDI1MSwgMTMzLCA0MSwgMywgMjMxLCAxMDgsIDQxLCAzLCAKLSAgICAyMzMsIDI0NiwgNDEsIDMsIDIzMSwgMywgNDEsIDMsIDI0MywgNzMsIDQxLCAzLCAyNDMsIDI0MSwgNDEsIDMsIDIxMiwgCi0gICAgMTE2LCA0MSwgMywgMjE1LCAxMTksIDQxLCAzLCAyMTYsIDEzNywgNDEsIDMsIDI0OCwgMTIsIDQxLCAzLCAyNDgsIDE3LCAKLSAgICA0MSwgMywgMjMyLCAxMDMsIDQxLCAzLCAyMjIsIDE0MiwgNDEsIDMsIDI0NiwgODYsIDQxLCAzLCAyMjksIDEyMCwgNDEsIDMsIAotICAgIDIxOCwgODQsIDQxLCAzLCAyMTksIDIyNywgNDEsIDMsIDIxMCwgMTMsIDQxLCAzLCAyMTAsIDYyLCA0MSwgMywgMjQ5LCAKLSAgICAxMjAsIDQxLCAzLCAyMzUsIDU3LCA0MSwgMywgMjI4LCAxNjAsIDQxLCAzLCAyMTAsIDIxMiwgNDEsIDMsIDIzMywgMjIzLCAKLSAgICA0MSwgMywgMjI5LCA0NSwgNDEsIDMsIDI0MiwgMTIwLCA0MSwgMywgMjMwLCAxMDcsIDQxLCAzLCAyMjcsIDI0MiwgNDEsIDMsIAotICAgIDIyNywgMTMyLCA0MSwgMywgNzgsIDQxLCAzLCAyMjYsIDIwMCwgNDEsIDMsIDIyOSwgNSwgNDEsIDMsIDI0MSwgNzUsIDQxLCAKLSAgICAzLCAyNDEsIDYzLCA0MSwgMywgMjExLCAyMjcsIDQxLCAzLCAyMTEsIDIxNiwgNDEsIDMsIDIyNSwgMTksIDQxLCAzLCAyNTIsIAotICAgIDE4LCA0MSwgMywgMjUxLCAyMTMsIDQxLCAzLCAyMzEsIDExMCwgNDEsIDMsIDIzMywgMjQ5LCA0MSwgMywgMjMxLCA2LCA0MSwgCi0gICAgMywgMjQzLCA3NiwgNDEsIDMsIDI0MywgNzUsIDQxLCAzLCAyNDQsIDUxLCA0MSwgMywgMjEzLCAxMzgsIDQxLCAzLCAxMTIsIAotICAgIDQxLCAzLCAyMTYsIDE1NywgNDEsIDMsIDI0OCwgMTUsIDQxLCAzLCAyNDgsIDE5LCA0MSwgMywgMjMyLCAxNjIsIDQxLCAzLCAKLSAgICAyMjIsIDIxMywgNDEsIDMsIDI0NywgMTUzLCA0MSwgMywgMjI5LCAxMjksIDQxLCAzLCAyMTksIDYwLCA0MSwgMywgMjIwLCAKLSAgICA5LCA0MSwgMywgMjEwLCAyMywgNDEsIDMsIDIxMCwgNjcsIDQxLCAzLCAyNDksIDI0NiwgNDEsIDMsIDIzNSwgNzQsIDQxLCAKLSAgICAzLCAyMjgsIDE2NSwgNDEsIDMsIDIxMCwgMjQ0LCA0MSwgMywgMjM0LCAzNCwgNDEsIDMsIDIyOSwgNDcsIDQxLCAzLCAyNDIsIAotICAgIDE4MSwgNDEsIDMsIDIzMCwgMTY2LCA0MSwgMywgMjI4LCA3OSwgNDEsIDMsIDIyNywgMTM4LCA0MSwgMywgNzYsIDQxLCAzLCAKLSAgICAyNDUsIDE1OCwgNDEsIDMsIDIyOSwgNjYsIDQxLCAzLCAyNDEsIDI0NSwgNDEsIDMsIDI0MSwgMjE2LCA0MSwgMywgMjEyLCAKLSAgICAyMiwgNDEsIDMsIDIxMiwgMTIsIDQxLCAzLCAyMjUsIDIyNCwgNDEsIDMsIDI1MiwgMjIsIDQxLCAzLCAyNTIsIDgzLCA0MSwgCi0gICAgMywgMjMxLCAxMjIsIDQxLCAzLCAyMzMsIDI1NCwgNDEsIDMsIDIzMywgMjUyLCA0MSwgMywgMjMxLCAxMiwgNDEsIDMsIAotICAgIDI0MywgODMsIDQxLCAzLCAyNDMsIDgxLCA0MSwgMywgMjQ0LCAxNjIsIDQxLCAzLCAyMTMsIDI1NSwgNDEsIDMsIDIxNywgCi0gICAgMjMsIDQxLCAzLCAyMTYsIDE5NiwgNDEsIDMsIDI0OCwgMjUsIDQxLCAzLCAyNDgsIDIyLCA0MSwgMywgMjMzLCA2NCwgNDEsIAotICAgIDMsIDIyMywgMTMxLCA0MSwgMywgMjQ4LCA5OCwgNDEsIDMsIDIyOSwgMTQ1LCA0MSwgMywgMjIxLCAxODMsIDQxLCAzLCAKLSAgICAyMjAsIDY1LCA0MSwgMywgMjEwLCA5NCwgNDEsIDMsIDIxMCwgNzQsIDQxLCAzLCAyNTAsIDE5OCwgNDEsIDMsIDIzNSwgCi0gICAgMTMyLCA0MSwgMywgMjI4LCAxODMsIDQxLCAzLCAyMTEsIDQ3LCA0MSwgMywgMjM0LCAxODgsIDQxLCAzLCAyMjksIDU3LCAKLSAgICA0MSwgMywgMjI5LCA1MywgNDEsIDMsIDI0MywgNjksIDQxLCAzLCAyNDMsIDU4LCA0MSwgMywgMjMxLCA5NiwgNDEsIDMsIAotICAgIDIyOSwgMTEyLCA0MSwgMywgMjI3LCAxNjAsIDQxLCAzLCAyMjksIDg0LCA0MSwgMywgMjMzLCAyOCwgNDEsIDI0OSwgMjI3LCAKLSAgICA0MSwgMjQzLCAyMzYsIDIxOCwgMTMxLCA0MSwgMjI0LCAxNiwgNzksIDQxLCAzLCAyMjksIDEyOCwgMjQ0LCAyMDQsIDQxLCAKLSAgICAzLCAyMjksIDEyOCwgMTc2LCA0MSwgMywgMjI5LCAxMjgsIDIxOSwgNDIsIDQxLCAxNiwgMjQ0LCAxNTIsIDQxLCAxNiwgCi0gICAgMjM0LCAxODYsIDQxLCAxNiwgMjE2LCA4MiwgNDEsIDE2LCAyMjgsIDIxMywgNDEsIDE2LCAyNTIsIDE1NSwgNDEsIDE2LCAKLSAgICAyNDQsIDIwMywgNDEsIDE2LCAyMTcsIDEwMiwgNDEsIDE2LCAyNDgsIDE4NCwgNDEsIDE2LCAyNDcsIDEzMiwgNDEsIDE2LCAKLSAgICAyMzMsIDIxMiwgNDEsIDE2LCAyMTYsIDIyLCA0MSwgMTYsIDI0NywgMTUyLCA0MSwgMTYsIDIzNSwgNjYsIDQxLCAyMSwgCi0gICAgMjEwLCA4NiwgNDEsIDIxLCAxMTEsIDQxLCAyMSwgMTA1LCA0MSwgMjEsIDE1OCwgNDEsIDIxLCAxNjEsIDQxLCAyMSwgMTkwLCAKLSAgICA0MSwgMjEsIDE5NSwgNDEsIDIxLCAxOTksIDQxLCAyMSwgMTk2LCA0MSwgMjEsIDIwMSwgNDEsIDMsIDIyOSwgMTI4LCAxODYsIAotICAgIDQxLCAzLCAyMjksIDEyOCwgMjQ3LCAxNTMsIDMzLCA2LCAxLCAyMTAsIDkwLCAzMywgNCwgMSwgMjEwLCA5MCwgMzMsIDYsIAotICAgIDEsIDI0NiwgNDIsIDMzLCA0LCAxLCAyNDYsIDQyLCAzMywgNiwgMSwgMjIzLCA1MiwgMjQ2LCA0NCwgMzMsIDQsIDEsIDIyMywgCi0gICAgNTIsIDI0NiwgNDQsIDMzLCA2LCAxLCAyMzUsIDE5MiwgMzMsIDQsIDEsIDIzNSwgMTkyLCAzMywgNiwgMSwgMjQ3LCAxNjksIAotICAgIDMzLCA0LCAxLCAyNDcsIDE2OSwgMzMsIDYsIDEsIDIzMCwgMTQ1LCAyMTQsIDIwNSwgMzMsIDQsIDEsIDIzMCwgMTQ1LCAKLSAgICAyMTQsIDIwNSwgMzMsIDYsIDEsIDI1MSwgMTQ0LCAyMjYsIDIwNSwgMzMsIDQsIDEsIDI1MSwgMTQ0LCAyMjYsIDIwNSwgMzMsIAotICAgIDYsIDEsIDIyOSwgOTIsIDIxMSwgMzEsIDMzLCA0LCAxLCAyMjksIDkyLCAyMTEsIDMxLCAzMywgNiwgMSwgMjExLCAyOCwgMiwgCi0gICAgMjUyLCAxOTMsIDIxMSwgMzEsIDMzLCA0LCAxLCAyMTEsIDI4LCAyLCAyNTIsIDE5MywgMjExLCAzMSwgMzMsIDYsIDEsIAotICAgIDIzNSwgMTkwLCAyMTEsIDU5LCAzMywgNCwgMSwgMjM1LCAxOTAsIDIxMSwgNTksIDMzLCA2LCAxLCAyMjMsIDUyLCAyMTAsIAotICAgIDIxMiwgMzMsIDQsIDEsIDIyMywgNTIsIDIxMCwgMjEyLCAzMywgNiwgMSwgMjM1LCAxOTAsIDYxLCAzMywgNCwgMSwgMjM1LCAKLSAgICAxOTAsIDYxLCAzMywgNiwgMSwgMjUwLCA4LCAyMzIsIDE5OCwgMjEwLCAxODMsIDMzLCA0LCAxLCAyNTAsIDgsIDIzMiwgCi0gICAgMTk4LCAyMTAsIDE4MywgMzMsIDYsIDEsIDI1MSwgMjIyLCAyMTAsIDE4MywgMzMsIDQsIDEsIDI1MSwgMjIyLCAyMTAsIAotICAgIDE4MywgMzMsIDYsIDEsIDIzNSwgMTkwLCAyNTAsIDgsIDIzMiwgMTk4LCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzNSwgMTkwLCAKLSAgICAyNTAsIDgsIDIzMiwgMTk4LCAyMTAsIDE4MywgMzMsIDYsIDEsIDIxMCwgMjQ2LCAzMywgNCwgMSwgMjEwLCAyNDYsIDMzLCAKLSAgICA2LCAxLCAyMjMsIDUyLCAyMTUsIDE3OSwgMzMsIDQsIDEsIDIyMywgNTIsIDIxNSwgMTc5LCAzMywgNiwgMSwgMjE5LCA1NCwgCi0gICAgMjQ4LCA5OCwgMzMsIDQsIDEsIDIxOSwgNTQsIDI0OCwgOTgsIDMzLCA2LCAxLCAyMTksIDU0LCAyNDUsIDE4MiwgMzMsIDQsIAotICAgIDEsIDIxOSwgNTQsIDI0NSwgMTgyLCAzMywgNiwgMSwgMjE5LCA1NCwgMjQ1LCAxNjcsIDMzLCA0LCAxLCAyMTksIDU0LCAKLSAgICAyNDUsIDE2NywgMzMsIDYsIDEsIDIzMCwgMTQ5LCA3OCwgMzMsIDQsIDEsIDIzMCwgMTQ5LCA3OCwgMzMsIDYsIDEsIDI1MSwgCi0gICAgMjQ4LCA3OCwgMzMsIDQsIDEsIDI1MSwgMjQ4LCA3OCwgMzMsIDYsIDEsIDUyLCAyMzAsIDE0OSwgNzgsIDMzLCA0LCAxLCAKLSAgICA1MiwgMjMwLCAxNDksIDc4LCAzMywgMSwgMjMwLCA5MSwgNzgsIDM4LCAzMywgMjEyLCAxMDAsIDM4LCAzMywgMjE2LCAyNDksIAotICAgIDIzMCwgMTk2LCA1MCwgMzgsIDMzLCAyNDAsIDIxOCwgMjMwLCAxOTYsIDUwLCAzOCwgMzMsIDIxNiwgMTQ5LCAyMzAsIDE5NiwgCi0gICAgNTAsIDIxOSwgOTUsIDI1MywgMjI0LCAzOCwgMzMsIDEsIDIxNCwgMjAyLCAyMzYsIDY3LCAzOCwgMzMsIDEsIDc0LCAzOCwgCi0gICAgMzMsIDEsIDIxMSwgOCwgMzgsIDMzLCAxLCA2OSwgMzgsIDMzLCAxLCAyNDIsIDEwLCA1MCwgMzgsIDMzLCAxLCAyMTEsIDI3LCAKLSAgICAzOCwgMzMsIDEsIDIxOSwgNTQsIDUwLCAzOCwgMzMsIDEsIDIyNiwgMjA1LCAzOCwgMzMsIDIzNCwgMTk4LCAzOCwgMzMsIAotICAgIDIyNSwgMjMxLCAzMywgMjM0LCAxOTgsIDMzLCAyMjUsIDIzMSwgMzMsIDYsIDEsIDI0NiwgNTQsIDMzLCA0LCAxLCAyNDYsIAotICAgIDU0LCAzMywgNiwgMSwgMjQ2LCAzNSwgMzMsIDQsIDEsIDI0NiwgMzUsIDMzLCA2LCAxLCAyMTAsIDUyLCAzMywgNCwgMSwgCi0gICAgMjEwLCA1MiwgMzMsIDYsIDEsIDI1MCwgMjE0LCAzMywgNCwgMSwgMjUwLCAyMTQsIDMzLCA2LCAxLCAyNDYsIDMzLCAzMywgCi0gICAgNCwgMSwgMjQ2LCAzMywgMzMsIDYsIDEsIDIxNywgMjQsIDIsIDIzMCwgMjI5LCAxMDMsIDMzLCA0LCAxLCAyMTcsIDI0LCAyLCAKLSAgICAyMzAsIDIyOSwgMTAzLCAzMywgNiwgMSwgMjE1LCA3OCwgMzMsIDQsIDEsIDIxNSwgNzgsIDMzLCA2LCAxLCAyMTUsIDE2MSwgCi0gICAgMzMsIDQsIDEsIDIxNSwgMTYxLCAzMywgNiwgMSwgMjE1LCAxNjUsIDMzLCA0LCAxLCAyMTUsIDE2NSwgMzMsIDYsIDEsIAotICAgIDIxNywgMjksIDMzLCA0LCAxLCAyMTcsIDI5LCAzMywgNiwgMSwgMjQwLCAyMDUsIDMzLCA0LCAxLCAyNDAsIDIwNSwgMzMsIAotICAgIDYsIDEsIDIxOSwgMjA4LCAzMywgNCwgMSwgMjE5LCAyMDgsIDM4LCAzMywgMSwgMjM1LCAxOTAsIDc2LCAyMCwgMSwgNjEsIAotICAgIDIwLCAxLCAxNzYsIDIwLCAxLCA2OSwgMjAsIDEsIDIzMywgMjIzLCAyMCwgMSwgMjQ1LCAyMTcsIDIwLCAxLCAyMjMsIDExMSwgCi0gICAgMjAsIDEsIDIxNywgODcsIDIwLCAxLCA3OCwgMjAsIDEsIDIyNywgMTUyLCAyMCwgMSwgNzQsIDIwLCAxLCAyMzMsIDE0MSwgCi0gICAgMjAsIDEsIDE5MSwgMjAsIDEsIDIyMiwgMjQyLCAyMCwgMSwgMjIzLCAzMiwgMjAsIDEsIDIzMywgNTUsIDIwLCAxLCAyMzEsIAotICAgIDg0LCAyMCwgMSwgMjE3LCAxMDIsIDIwLCAxLCAyMjksIDE1MSwgMjAsIDEsIDIyOCwgMTg4LCAyMCwgMSwgMTk0LCAyMCwgMSwgCi0gICAgMjE4LCA1LCAyMCwgMSwgMjMwLCAxMDcsIDIwLCAxLCAyMjAsIDI5LCAyMCwgMSwgMjE5LCAxOTMsIDIwLCAxLCAyMjAsIDM5LCAKLSAgICAyMCwgMSwgMjIwLCAxMjUsIDIwLCAxLCAyMzMsIDE2MSwgMjAsIDEsIDIzNCwgMTYyLCAyMCwgMSwgMjI3LCAyMTMsIDIwLCAKLSAgICAxLCAyMjcsIDI0MiwgMjAsIDEsIDIyOCwgMTU5LCAyMCwgMSwgMjEwLCAyMjYsIDIwLCAxLCAyMTksIDIyNywgMjAsIDEsIAotICAgIDIxMCwgMTg3LCAyMCwgMSwgMTkyLCAyMCwgMSwgMjI4LCAxNCwgMjAsIDEsIDIzNCwgMTQ4LCAyMCwgMSwgMjI1LCAxNTQsIAotICAgIDIwLCAxLCAyMjgsIDE4MSwgMjAsIDEsIDIyNywgMjUxLCAyMCwgMSwgMjI0LCAxNDcsIDIwLCAxLCAyMTEsIDE5MiwgMjAsIAotICAgIDEsIDIyNSwgMjE0LCAyMCwgMSwgMjQ0LCAxNTUsIDIwLCAxLCAyMjIsIDE0MiwgMjAsIDEsIDIzMiwgMTAzLCAyMCwgMSwgCi0gICAgMjMwLCAyMzUsIDIwLCAxLCAyMjgsIDIzOCwgMjAsIDEsIDIyMywgNTQsIDIwLCAxLCAyMjMsIDE3NCwgMjAsIDEsIDIzNCwgCi0gICAgMTcxLCAyMCwgMSwgMjI5LCAxMiwgMjAsIDEsIDIyOSwgNjEsIDIwLCAxLCAyMjksIDgyLCAyMCwgMSwgMjIwLCA5LCAyMCwgCi0gICAgMSwgMjI0LCAxNTAsIDIwLCAxLCAyNDMsIDI0MSwgMjAsIDEsIDI0NCwgNDUsIDIwLCAxLCAyMTIsIDY1LCAyMCwgMSwgMTk4LCAKLSAgICAyMCwgMSwgMjMyLCAyNDcsIDIwLCAxLCAyMjUsIDExMSwgMjAsIDEsIDIzMiwgMTI1LCAyMCwgMSwgMjM0LCAzNCwgMjAsIDEsIAotICAgIDIzMSwgMTE5LCAyMCwgMSwgMjIzLCA4NiwgMjAsIDEsIDIzMSwgNjMsIDIwLCAxLCAxODYsIDIwLCAxLCAyMTYsIDExOCwgCi0gICAgMjAsIDEsIDIzNCwgOTgsIDIwLCAxLCAyMzAsIDE2NiwgMjAsIDEsIDIzMSwgMTI3LCAyMCwgMSwgMjE2LCAyMzEsIDIwLCAxLCAKLSAgICAyMzQsIDEsIDIwLCAxLCAyMTYsIDI0OCwgMjAsIDEsIDIyNywgMjQzLCAyMCwgMSwgMjIxLCAyNTMsIDIwLCAxLCAyNDQsIAotICAgIDIwMCwgMjAsIDEsIDIzNCwgMywgMjAsIDEsIDIzNCwgMzAsIDIwLCAzOCwgMTY0LCAyMzQsIDExLCAyMCwgMzgsIDE2NCwgCi0gICAgMjE1LCAxMTEsIDIwLCAyMjgsIDE4NywgMjAsIDI0MywgMjM2LCAyMTgsIDEzMSwgMjAsIDI0OSwgMjM0LCAyMCwgMjQ5LCAKLSAgICAyMjcsIDIwLCAyMjAsIDE1MiwgMjAsIDIyNCwgMTYsIDc5LCA1OCwgMSwgMjUwLCAxMDQsIDEzOCwgMjEwLCAyNTQsIDIyNSwgCi0gICAgNjQsIDU4LCAxLCAyNTAsIDEwNCwgMTM4LCAyMTEsIDcwLCAyMjUsIDY0LCA1OCwgMSwgMjUwLCAxMDQsIDEzOCwgMjEwLCAKLSAgICAyNTQsIDIyMCwgODYsIDU4LCAxLCAyNTAsIDEwNCwgMTM4LCAyMTEsIDcwLCAyMjAsIDg2LCA1OCwgMSwgMjUwLCAxMDQsIAotICAgIDEzOCwgMjEwLCAyNTQsIDIyNCwgMzMsIDU4LCAxLCAyNTAsIDEwNCwgMTM4LCAyMTEsIDcwLCAyMjQsIDMzLCA1OCwgMSwgCi0gICAgMjUwLCAxMDQsIDEzOCwgMjEwLCAyNTQsIDIyMiwgMTQyLCA1OCwgMSwgMjUwLCAxMDQsIDEzOCwgMjExLCA3MCwgMjIyLCAKLSAgICAxNDIsIDU4LCAxLCAyNDUsIDI4LCAyNDYsIDEyNiwgMTM4LCAxMzAsIDU4LCAxLCAxMjUsIDI0NiwgMTI2LCAxMzgsIDEzMCwgCi0gICAgNTgsIDEsIDIzMCwgMjMwLCAyNDYsIDEyNiwgMTM4LCAxMzAsIDU4LCAxLCAxMjEsIDI0NiwgMTI2LCAxMzgsIDEzMCwgNTgsIAotICAgIDEsIDI0NSwgMjcsIDI0NiwgMTI2LCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMjgsIDI0NiwgMTI2LCAyMzMsIDQ1LCAxMzgsIAotICAgIDEzMCwgNTgsIDEsIDEyNSwgMjQ2LCAxMjYsIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgMjMwLCAyMzAsIDI0NiwgMTI2LCAKLSAgICAyMzMsIDQ1LCAxMzgsIDEzMCwgNTgsIDEsIDEyMSwgMjQ2LCAxMjYsIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAKLSAgICAyNywgMjQ2LCAxMjYsIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAyOCwgMjMzLCA0NSwgMTM4LCAxMzAsIDU4LCAKLSAgICAxLCAxMjUsIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgMjMwLCAyMzAsIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgCi0gICAgMTIxLCAyMzMsIDQ1LCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMjcsIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgNTksIDY3LCAKLSAgICAxMzAsIDU4LCAxLCA1OSwgMjE5LCA5NywgNTgsIDEsIDU5LCAyMDMsIDEzMCwgNTgsIDEsIDIzMiwgMTE0LCA0NCwgMjQ5LCAKLSAgICAxNjksIDI1NCwgMTE3LCA1OCwgMSwgMjIzLCAxNjAsIDEyMCwgNzUsIDU4LCAxLCAyMjMsIDE2MCwgMTI0LCA3NSwgNTgsIDEsIAotICAgIDIyMywgMTYwLCAyNDUsIDM5LCA3OSwgNTgsIDEsIDIyMywgMTYwLCAyMzUsIDIwMCwgMjQ1LCAzOSwgNzksIDU4LCAxLCAKLSAgICAxMjEsIDIzNSwgMjAwLCAyNDUsIDM5LCA3OSwgNTgsIDEsIDIxOCwgMTEzLCAyMiwgMTI1LCAyMTYsIDMxLCA1OCwgMSwgCi0gICAgMjE4LCAxMTMsIDIyLCAxMjEsIDIxNiwgMzEsIDcsIDYsIDEsIDI0NSwgMjA3LCAyNTQsIDE3OSwgNywgNCwgMSwgMjQ1LCAKLSAgICAyMDcsIDI1NCwgMTc5LCA3LCA2LCAxLCAyNDUsIDIwNywgMjU0LCAyMDUsIDcsIDQsIDEsIDI0NSwgMjA3LCAyNTQsIDIwNSwgCi0gICAgNywgNiwgMSwgMjQxLCAyMTQsIDcsIDQsIDEsIDI0MSwgMjE0LCA3LCA2LCAxLCAyMTUsIDQwLCA3LCA0LCAxLCAyMTUsIDQwLCAKLSAgICA3LCA2LCAxLCAyMTUsIDIzMCwgNywgNCwgMSwgMjE1LCAyMzAsIDcsIDYsIDEsIDI0OSwgMTE4LCA3LCA0LCAxLCAyNDksIAotICAgIDExOCwgNywgNiwgMSwgMjQ5LCAxMTksIDIsIDI0OSwgMjI3LCA3LCA0LCAxLCAyNDksIDExOSwgMiwgMjQ5LCAyMjcsIDcsIAotICAgIDEsIDQsIDYsIDI0NSwgMTQsIDcsIDEsIDQsIDYsIDIyMiwgOTMsIDcsIDYsIDEsIDI1NSwgODIsIDcsIDQsIDEsIDI1NSwgCi0gICAgODIsIDcsIDYsIDEsIDI1NCwgODEsIDcsIDQsIDEsIDI1NCwgODEsIDcsIDYsIDEsIDI1MywgMjAwLCA3LCA0LCAxLCAyNTMsIAotICAgIDIwMCwgNywgNiwgMSwgMjUzLCAxODQsIDcsIDQsIDEsIDI1MywgMTg0LCA3LCA2LCAxLCAyNTMsIDE4NSwgMiwgMjAzLCAKLSAgICAxMzAsIDcsIDQsIDEsIDI1MywgMTg1LCAyLCAyMDMsIDEzMCwgNywgNiwgMSwgMjUzLCAxNzUsIDcsIDQsIDEsIDI1MywgCi0gICAgMTc1LCA3LCA2LCAxLCAyMjMsIDUyLCAyNTEsIDc1LCAyLCAyNDcsIDEyOCwgNywgNCwgMSwgMjIzLCA1MiwgMjUxLCA3NSwgCi0gICAgMiwgMjQ3LCAxMjgsIDcsIDYsIDEsIDIzNSwgMzAsIDIsIDkxLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCA5MSwgNywgNiwgMSwgCi0gICAgMjM1LCAzMCwgMiwgMjQ4LCA3LCA5MSwgNywgNCwgMSwgMjM1LCAzMCwgMiwgMjQ4LCA3LCA5MSwgNywgNiwgMSwgMjM1LCAKLSAgICAzMCwgMiwgMjE4LCAxMDUsIDIyLCAyNDgsIDcsIDkxLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCAyMTgsIDEwNSwgMjIsIDI0OCwgCi0gICAgNywgOTEsIDcsIDYsIDEsIDI1MSwgMTQzLCAxNTYsIDcsIDQsIDEsIDI1MSwgMTQzLCAxNTYsIDcsIDYsIDEsIDIzMywgMTU1LCAKLSAgICAyLCAxMjUsIDkxLCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgMTI1LCA5MSwgNywgNiwgMSwgMTQ0LCAyLCAyMDAsIDIxOCwgCi0gICAgMTA1LCAyMjYsIDEyNCwgNywgNCwgMSwgMTQ0LCAyLCAyMDAsIDIxOCwgMTA1LCAyMjYsIDEyNCwgNywgNiwgMSwgMTQ0LCAyLCAKLSAgICAyMzIsIDEyOSwgNywgNCwgMSwgMTQ0LCAyLCAyMzIsIDEyOSwgNywgNiwgMSwgMjI2LCAxODcsIDcsIDQsIDEsIDIyNiwgCi0gICAgMTg3LCA3LCA2LCAxLCAyMjYsIDExMCwgMiwgMjE4LCAxMDUsIDIxNiwgMTQwLCAyNDgsIDQ3LCA3LCA0LCAxLCAyMjYsIAotICAgIDExMCwgMiwgMjE4LCAxMDUsIDIxNiwgMTQwLCAyNDgsIDQ3LCA3LCA2LCAxLCAyMjYsIDExMCwgMiwgMjQ0LCA2MSwgNywgNCwgCi0gICAgMSwgMjI2LCAxMTAsIDIsIDI0NCwgNjEsIDcsIDYsIDEsIDIyNiwgMTEwLCAyLCAyMTgsIDIzMSwgMjE3LCA3OCwgNywgNCwgCi0gICAgMSwgMjI2LCAxMTAsIDIsIDIxOCwgMjMxLCAyMTcsIDc4LCA3LCA2LCAxLCAyMjQsIDEwMCwgMiwgMjE4LCAxMDUsIDIxNiwgCi0gICAgMTQwLCAyNDgsIDQ3LCA3LCA0LCAxLCAyMjQsIDEwMCwgMiwgMjE4LCAxMDUsIDIxNiwgMTQwLCAyNDgsIDQ3LCA3LCA2LCAxLCAKLSAgICAyMjQsIDEwMCwgMiwgMjQ4LCA3LCA5MSwgNywgNCwgMSwgMjI0LCAxMDAsIDIsIDI0OCwgNywgOTEsIDcsIDYsIDEsIDIyMywgCi0gICAgMjI3LCAyMjIsIDE4OCwgNywgNCwgMSwgMjIzLCAyMjcsIDIyMiwgMTg4LCA3LCA2LCAxLCAyMjIsIDEzMiwgMjIyLCAxODgsIAotICAgIDcsIDQsIDEsIDIyMiwgMTMyLCAyMjIsIDE4OCwgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDI0OCwgNywgOTEsIDcsIDQsIDEsIAotICAgIDIxNCwgMTA2LCAyLCAyNDgsIDcsIDkxLCA3LCA2LCAxLCAyMTIsIDEwNiwgNywgNCwgMSwgMjEyLCAxMDYsIDcsIDYsIDEsIAotICAgIDIxMywgMTQ1LCAyMTAsIDE1OSwgNywgNCwgMSwgMjEzLCAxNDUsIDIxMCwgMTU5LCA3LCA2LCAxLCAyMTYsIDE1MywgMiwgCi0gICAgOTEsIDcsIDQsIDEsIDIxNiwgMTUzLCAyLCA5MSwgNywgNiwgMSwgMjE2LCAxNTMsIDIsIDIxOCwgMTA1LCAyMTYsIDE0MCwgCi0gICAgMjQ4LCA0NywgNywgNCwgMSwgMjE2LCAxNTMsIDIsIDIxOCwgMTA1LCAyMTYsIDE0MCwgMjQ4LCA0NywgNywgNiwgMSwgMjEzLCAKLSAgICAyNDUsIDcsIDQsIDEsIDIxMywgMjQ1LCA3LCA2LCAxLCAyNDUsIDczLCA3LCA0LCAxLCAyNDUsIDczLCA3LCA2LCAxLCAyMzUsIAotICAgIDE3OCwgNywgNCwgMSwgMjM1LCAxNzgsIDcsIDYsIDEsIDI0OSwgMjE1LCA3LCA0LCAxLCAyNDksIDIxNSwgNTgsIDEsIDIxNCwgCi0gICAgMTMzLCA3LCA0LCAxLCAyNDYsIDc3LCA3LCA0LCAxLCAyMzIsIDg5LCA3LCA0LCAxLCAyMzAsIDg1LCA3LCA0LCAxLCAyMjcsIAotICAgIDIwNSwgNywgNCwgMSwgMjIyLCAxMzEsIDcsIDEsIDQsIDYsIDIyMiwgMTMxLCA3LCA0LCAxLCAyMTUsIDEwOSwgNywgNCwgMSwgCi0gICAgMjE0LCAxOTcsIDcsIDYsIDEsIDIzNSwgMjIwLCAyNDksIDY4LCA3LCA0LCAxLCAyMzUsIDIyMCwgMjQ5LCA2OCwgNywgNiwgCi0gICAgMSwgMjM1LCAyMjAsIDI0NSwgMTQsIDcsIDQsIDEsIDIzNSwgMjIwLCAyNDUsIDE0LCA3LCA2LCAxLCAyMzUsIDIyMCwgMjQzLCAKLSAgICAyMDksIDcsIDYsIDEsIDIxNSwgOTQsIDIzNSwgMjIwLCAyNDMsIDIwOSwgNywgNCwgMSwgMjE1LCA5NCwgMjM1LCAyMjAsIAotICAgIDI0MywgMjA5LCA3LCA2LCAxLCAyMTUsIDk0LCAxNTYsIDcsIDQsIDEsIDIxNSwgOTQsIDE1NiwgNywgNiwgMSwgMjM1LCAKLSAgICAyMjAsIDE1MywgNywgNCwgMSwgMjM1LCAyMjAsIDE1MywgNywgNiwgMSwgMjM1LCAyMjAsIDIyMiwgOTMsIDcsIDQsIDEsIAotICAgIDIzNSwgMjIwLCAyMjIsIDkzLCA3LCA2LCAxLCAyMzUsIDIyMCwgMjE3LCAxNTMsIDcsIDQsIDEsIDIzNSwgMjIwLCAyMTcsIAotICAgIDE1MywgNTgsIDEsIDEyMSwgMjUwLCAzOSwgMjU1LCAyMywgNTgsIDEsIDI0OSwgMjM0LCA1OCwgMSwgMjE5LCAyNTMsIDI0NSwgCi0gICAgMTA2LCA1MCwgNywgNiwgMSwgMjIyLCAxLCA3LCA0LCAxLCAyMjIsIDEsIDcsIDYsIDEsIDIxNSwgOTQsIDI0MiwgNjcsIDcsIAotICAgIDQsIDEsIDIzMywgMTU1LCAyLCAyMjMsIDU4LCAyNDEsIDU5LCAyMiwgMjUyLCA0OSwgNywgNiwgMSwgMjMwLCAzMSwgMiwgCi0gICAgMjQ4LCA0NywgNywgNCwgMSwgMjMwLCAzMSwgMiwgMjQ4LCA0NywgNywgNiwgMSwgMjUxLCA3NSwgMiwgMTMwLCA3LCA0LCAxLCAKLSAgICAyNTEsIDc1LCAyLCAxMzAsIDcsIDYsIDEsIDI0MywgMjEwLCAyLCAyMjYsIDI1MiwgOTEsIDcsIDQsIDEsIDI0MywgMjEwLCAKLSAgICAyLCAyMjYsIDI1MiwgOTEsIDcsIDYsIDEsIDIzNSwgMzAsIDIsIDIyNiwgMjUyLCA5MSwgNywgNCwgMSwgMjM1LCAzMCwgMiwgCi0gICAgMjI2LCAyNTIsIDkxLCA3LCA2LCAxLCAyMzAsIDMxLCAyLCAyMjYsIDI1MiwgOTEsIDcsIDQsIDEsIDIzMCwgMzEsIDIsIAotICAgIDIyNiwgMjUyLCA5MSwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDIyNiwgMjUyLCA5MSwgNywgNCwgMSwgMjIzLCAyMjcsIDIsIAotICAgIDIyNiwgMjUyLCA5MSwgNywgNiwgMSwgMjIyLCA5NCwgMiwgMjI2LCAyNTIsIDkxLCA3LCA0LCAxLCAyMjIsIDk0LCAyLCAKLSAgICAyMjYsIDI1MiwgOTEsIDcsIDYsIDEsIDI0MiwgNjgsIDIsIDEwMywgNTgsIDEsIDYsIDI0MiwgNjgsIDIsIDkxLCA1OCwgMSwgCi0gICAgNCwgMjcsIDIyNiwgMjM4LCA3LCAxLCA0LCA2LCAyMTUsIDk0LCAxOTQsIDcsIDI0NSwgMTExLCAxLCAyMjMsIDUyLCAyNDUsIAotICAgIDE0LCA3LCAyNDUsIDExMSwgMSwgMjIzLCA1MiwgMjI2LCAxMDksIDcsIDI0NSwgMTExLCAxLCAyMzUsIDIwMCwgMTk0LCA3LCAKLSAgICAyNDUsIDExMSwgMSwgMjQwLCAxNjEsIDIzMiwgMTM1LCA3LCAyNDUsIDExMSwgMSwgMjU0LCAzMSwgMTk0LCAyMTcsIDIzMSwgCi0gICAgMjI5LCAyMTksIDEsIDYxLCAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIDc0LCAyMTcsIDIzMSwgMjI5LCAyMTksIDUsIDI0NiwgCi0gICAgNTYsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgNjksIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgNzYsIDIxNywgMjMxLCAyMjksIAotICAgIDIxOSwgMSwgNzgsIDIxNywgMjMxLCAyMjksIDIxOSwgNSwgMjQyLCA0LCAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIDIzNCwgCi0gICAgMzQsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjM0LCAxMTEsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjQyLCAxODEsIAotICAgIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjQyLCAyMzEsIDIxNywgMjMxLCAyMjksIDIxOSwgNSwgMjU0LCA4MywgMjE3LCAKLSAgICAyMzEsIDIyOSwgMjE5LCAxLCAyNDksIDI0NiwgMjE3LCAyMzEsIDIyOSwgMjE5LCAxLCAyNTAsIDk0LCAyMTcsIDIzMSwgCi0gICAgMjI5LCAyMTksIDEsIDIzNSwgNzQsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjM1LCAxMTUsIDIxNywgMjMxLCAyMjksIAotICAgIDIxOSwgMSwgMjE1LCAxMzQsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjE1LCAxNDAsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgCi0gICAgMjQ4LCAxMTMsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjQ4LCAxMjIsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMTEyLCAKLSAgICAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIDIxNiwgMTU3LCAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIDI0NywgMTUzLCAyMTcsIAotICAgIDIzMSwgMjI5LCAyMTksIDEsIDI0OCwgMTUsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjI4LCA3OSwgMjE3LCAyMzEsIDIyOSwgCi0gICAgMjE5LCAxLCAyMjUsIDE5LCAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIDIyNSwgMTI0LCAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIAotICAgIDI1MSwgMjEzLCAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIDI1MiwgMTgsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjMwLCAKLSAgICAxNjYsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjIyLCAyMTMsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjMyLCAxNjIsIAotICAgIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjIyLCAxNjcsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjE5LCA2MCwgMjE3LCAKLSAgICAyMzEsIDIyOSwgMjE5LCAxLCAyNDEsIDc1LCAyMTcsIDIzMSwgMjI5LCAyMTksIDI1LCA1LCA2MSwgMjE3LCAyMzEsIDIyOSwgCi0gICAgMjE5LCAyNSwgNSwgNzQsIDIxNywgMjMxLCAyMjksIDIxOSwgMjUsIDUsIDY5LCAyMTcsIDIzMSwgMjI5LCAyMTksIDI1LCA1LCAKLSAgICA3NiwgMjE3LCAyMzEsIDIyOSwgMjE5LCAyNSwgNSwgMjI2LCAxODcsIDIxNywgMjMxLCAyMjksIDIxOSwgMjI1LCAxNSwgCi0gICAgMjMxLCAxNjMsIDIxNywgMjMxLCAyMjksIDIxOSwgMjI1LCAxNSwgMjMxLCAxNjIsIDIxNywgMjMxLCAyMjksIDIxOSwgMjI1LCAKLSAgICAxNSwgMjMxLCAxNjEsIDIxNywgMjMxLCAyMjksIDIxOSwgMjI1LCAxNSwgMjMxLCAxNjAsIDIyOCwgNjEsIDIzNSwgMjQ3LCAKLSAgICAyNDQsIDEwLCAxMjMsIDIyNCwgMjQsIDIyOCwgNjEsIDIzNSwgMjQ3LCAyNDQsIDEwLCAxMjMsIDI0MiwgMzQsIDIyOCwgNjEsIAotICAgIDIzNSwgMjQ3LCAyNDQsIDEwLCAxMzQsIDIyNCwgMjIsIDIyOCwgNjEsIDIzNSwgMjQ3LCAyNDQsIDEwLCAxMjMsIDIxOSwgCi0gICAgMTE5LCAyMjgsIDYxLCAyMzUsIDI0NywgMjQ0LCAxMCwgMTIzLCAyNDUsIDE5NiwgMjI4LCA2MSwgMjM1LCAyNDcsIDI0NCwgCi0gICAgMTAsIDEzNCwgMjE5LCAxMTgsIDIyOCwgNjEsIDIzNSwgMjQ3LCAyMjQsIDI1LCA3OSwgMjI4LCA2MSwgMjM1LCAyNDcsIAotICAgIDIyNSwgNDMsIDc5LCAyMjgsIDYxLCAyMzUsIDI0NywgMjIyLCAxMjAsIDc5LCAyMjgsIDYxLCAyMzUsIDI0NywgMjI0LCAyNiwgCi0gICAgNzksIDIyNSwgMTQ3LCAxLCAxNzYsIDIyNSwgMTQ3LCAxLCAyMzQsIDEzOCwgMjI1LCAxNDcsIDEsIDI0MywgMTQyLCAyMjUsIAotICAgIDE0NywgMSwgMjI5LCA4MiwgMjI1LCAxNDcsIDEsIDI1MSwgNDEsIDIyNSwgMTQ3LCAxLCAyNTAsIDE2NSwgMjI1LCAxNDcsIAotICAgIDEsIDIzNSwgMTQ3LCAyMjUsIDE0NywgMSwgMjI3LCAxNjksIDIyNSwgMTQ3LCAxLCAyMTcsIDEwNiwgMjI1LCAxNDcsIDEsIAotICAgIDIxNiwgMjA5LCAyMjUsIDE0NywgMSwgMjQ4LCAyMjksIDIyNSwgMTQ3LCAxLCAxOTgsIDIyNSwgMTQ3LCAxLCAxOTEsIDIyNSwgCi0gICAgMTQ3LCAxLCAyMjUsIDE1MCwgMjI1LCAxNDcsIDEsIDI1MiwgMTk5LCAyMjUsIDE0NywgMSwgMTg2LCAyMjUsIDE0NywgMSwgCi0gICAgMjE1LCAxODQsIDIyNSwgMTQ3LCAxLCAyMTUsIDE3NiwgMjI1LCAxNDcsIDEsIDI0NiwgNDYsIDIyNSwgMTQ3LCAxLCAyMTIsIAotICAgIDY1LCAyMjUsIDE0NywgMSwgMjEwLCA4MiwgMjI1LCAxNDcsIDEsIDIxMCwgMTE2LCAyMjUsIDE0NywgMSwgNCwgNjEsIDIyNSwgCi0gICAgMTQ3LCAxLCAxOTIsIDIyNSwgMTQ3LCAxLCAyMDUsIDIyNSwgMTQ3LCAxLCAyMzMsIDE0MSwgMjI1LCAxNDcsIDEsIDIyMCwgCi0gICAgMTA0LCAyMjUsIDE0NywgMSwgMjA2LCAyMjUsIDE0NywgMSwgMTYyLCAyMjUsIDE0NywgMSwgNjEsIDIyNSwgMTQ3LCAxLCAKLSAgICA3NCwgMjI1LCAxNDcsIDEsIDY5LCAyMjUsIDE0NywgMSwgNzYsIDIyNSwgMTQ3LCAxLCA3OCwgMjI1LCAxNDcsIDEsIDIyNCwgCi0gICAgOTEsIDIyNSwgMTQ3LCAxLCAyMTEsIDE2NSwgMjI1LCAxNDcsIDEsIDI0NCwgMjA0LCAyMjUsIDE0NywgMSwgMjQzLCAzNiwgCi0gICAgMjI1LCAxNDcsIDEsIDI0NSwgMjE3LCAyMjUsIDE0NywgMjE4LCA3NCwgMSwgMjEyLCA2NSwgMjI1LCAxNDcsIDIxOCwgNzQsIAotICAgIDEsIDE5MiwgMjI1LCAxNDcsIDEsIDIxNSwgMTU3LCAyMjUsIDE0NywgMSwgMjE1LCAxNDUsIDIyNSwgMTQ3LCAxLCAyNDgsIAotICAgIDE0MywgMjI1LCAxNDcsIDEsIDIyOCwgMTE1LCAyMjUsIDE0NywgMSwgMjU0LCAxNDksIDE5MiwgMjI1LCAxNDcsIDEsIDIxMywgCi0gICAgMTM0LCAyMjAsIDEwNCwgMjI1LCAxNDcsIDEsIDIxMywgMTM1LCAxNjIsIDIyNSwgMTQ3LCAxLCAyNTMsIDIzMSwgMjQ0LCAKLSAgICAyMDQsIDIyNSwgMTQ3LCAyMTgsIDc0LCAxLCAyMDUsIDIyNSwgMTQ3LCAyMTgsIDI2LCAxLCAyMDUsIDIyNSwgMTQ3LCAxLCAKLSAgICAyNTEsIDcsIDIyNSwgMTQ3LCAyMTksIDE1NywgMjQxLCAyNDMsIDc5LCAyMjUsIDE0NywgNTIsIDI0MSwgMjQzLCA3OSwgCi0gICAgMjI1LCAxNDcsIDE2NCwgMjIwLCA5NywgMjI1LCAxNDcsIDE2NCwgNTIsIDIyMCwgOTcsIDE3OSwgNSwgMjU0LCA4MywgMTc5LCAKLSAgICA1LCAyMTMsIDE0NywgMTc5LCAxLCA2MSwgMTc5LCAxLCAyNTUsIDgyLCAxNzksIDEsIDc0LCAxNzksIDEsIDIzNiwgNDAsIAotICAgIDE3OSwgMSwgNjksIDE3OSwgMSwgMjE0LCAxMTgsIDE3OSwgMSwgMTQ5LCAxNTMsIDE3OSwgMSwgMTQ5LCAyMjIsIDE4MiwgCi0gICAgMTc5LCAxLCAxNDksIDE1NiwgMTc5LCAxLCAxNDksIDIzMiwgMTkxLCAxNzksIDEsIDc2LCAxNzksIDEsIDI0NSwgMjE3LCAKLSAgICAxNzksIDEsIDI1NCwgMjEwLCAxNzksIDEsIDc4LCAxNzksIDEsIDIyNiwgMTg3LCAxNzksIDEsIDI1MywgMjAwLCAxNzksIDEsIAotICAgIDE3NiwgMTc5LCAxLCAyMzQsIDEzOCwgMTc5LCAxLCAyNDMsIDE0MiwgMTc5LCAxLCAyNDMsIDAsIDE3OSwgMSwgMjI5LCA4MiwgCi0gICAgMTc5LCAxLCAyNTEsIDQxLCAxNzksIDEsIDI1MCwgMTY1LCAxNzksIDEsIDIzNSwgMTQ3LCAxNzksIDEsIDIzNSwgMTIwLCAKLSAgICAxNzksIDEsIDIyNywgMTY5LCAxNzksIDEsIDIxNSwgMTU3LCAxNzksIDEsIDIxNSwgMTQ1LCAxNzksIDEsIDI0OCwgMTQzLCAKLSAgICAxNzksIDEsIDI0OCwgMTI3LCAxNzksIDEsIDIyOCwgMTE1LCAxNzksIDEsIDIxNywgMTA2LCAxNzksIDEsIDIxNiwgMjA5LCAKLSAgICAxNzksIDEsIDI0OCwgMjI5LCAxNzksIDEsIDI0OCwgMzMsIDE3OSwgMSwgMTk4LCAxNzksIDEsIDE5MSwgMTc5LCAxLCAyMjUsIAotICAgIDE1MCwgMTc5LCAxLCAyNTIsIDE5OSwgMTc5LCAxLCAyNTIsIDI2LCAxNzksIDEsIDE4NiwgMTc5LCAxLCAxOTIsIDE3OSwgMSwgCi0gICAgMjA1LCAxNzksIDEsIDIzMywgMTQxLCAxNzksIDEsIDIxNCwgMjcsIDE3OSwgMSwgMjIwLCAxMDQsIDE3OSwgMSwgMjE4LCAKLSAgICAyMjUsIDE3OSwgMSwgMjA2LCAxNzksIDEsIDE2MiwgMTc5LCAxLCAyMzIsIDE5MCwgMTc5LCAxMTcsIDUsIDI0MiwgNTEsIAotICAgIDE3OSwgMjUsIDUsIDI1NSwgODIsIDE3OSwgMjUsIDUsIDc0LCAxNzksIDI1LCA1LCAyMzYsIDQwLCAxNzksIDI1LCA1LCA2OSwgCi0gICAgMTc5LCAyNSwgNSwgMjE0LCAxMTgsIDE3OSwgMjUsIDUsIDE0OSwgMTUzLCAxNzksIDI1LCA1LCAxNDksIDIyMiwgMTgyLCAKLSAgICAxNzksIDI1LCA1LCAxNDksIDE1NiwgMTc5LCAyNSwgNSwgMTQ5LCAyMzIsIDE5MSwgMTc5LCAyNSwgNSwgNzYsIDE3OSwgMjUsIAotICAgIDUsIDI0NSwgMjE3LCAxNzksIDI1LCA1LCAyNTQsIDIxMCwgMTc5LCAyNSwgNSwgNzgsIDE3OSwgMjUsIDUsIDIyNiwgMTg3LCAKLSAgICAxNzksIDI1LCA1LCAyNTMsIDIwMCwgMTc5LCA1LCAyMTMsIDE1MiwgMTc5LCAyNDgsIDE4NiwgMTc5LCA1MiwgMjQ4LCAxODYsIAotICAgIDE3OSwgMjEsIDIxMCwgODYsIDE3OSwgMjEsIDExMSwgMTc5LCAyMSwgMTA1LCAxNzksIDIxLCAxNTgsIDE3OSwgMjEsIDE2MSwgCi0gICAgMTc5LCAyMSwgMTkwLCAxNzksIDIxLCAxOTUsIDE3OSwgMjEsIDE5OSwgMTc5LCAyMSwgMTk2LCAxNzksIDIxLCAyMDEsIDM4LCAKLSAgICA4NCwgMjEsIDIxMCwgODYsIDM4LCA4NCwgMjEsIDExMSwgMzgsIDg0LCAyMSwgMTA1LCAzOCwgODQsIDIxLCAxNTgsIDM4LCAKLSAgICA4NCwgMjEsIDE2MSwgMzgsIDg0LCAyMSwgMTkwLCAzOCwgODQsIDIxLCAxOTUsIDM4LCA4NCwgMjEsIDE5OSwgMzgsIDg0LCAKLSAgICAyMSwgMTk2LCAzOCwgODQsIDIxLCAyMDEsIDM4LCA4NCwgMSwgNjEsIDM4LCA4NCwgMSwgNjksIDM4LCA4NCwgMSwgMTc2LCAKLSAgICAzOCwgODQsIDEsIDE5OCwgMzgsIDg0LCAxLCAxOTEsIDM4LCA4NCwgMSwgMjA1LCAzOCwgODQsIDEsIDIxMywgMTc2LCAzOCwgCi0gICAgODQsIDUsIDI1MywgMTgzLCA4NCwgNSwgMjE5LCAxOSwgMjUxLCA3LCA4NCwgNSwgMjUxLCA4LCAyMTMsIDE1MiwgODQsIDUsIAotICAgIDUyLCAyNTEsIDgsIDIxMywgMTUyLCA4NCwgNSwgMjUxLCA4LCAxMDUsIDg0LCA1LCAyNTEsIDgsIDE1OCwgODQsIDUsIDI1MSwgCi0gICAgOCwgMjUzLCAxODMsIDg0LCA1LCAyMjQsIDEyNywgODQsIDI0MywgMTA3LCAyNDQsIDExMSwgODQsIDI1MCwgMjQ2LCA4NCwgCi0gICAgMjQxLCAyMzcsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMjEsIDIxMCwgODYsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMjEsIDExMSwgCi0gICAgMjM0LCAxOTQsIDIzMiwgMjQ4LCAyMSwgMTA1LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDIxLCAxNTgsIDIzNCwgMTk0LCAyMzIsIAotICAgIDI0OCwgMjEsIDE2MSwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAyMSwgMTkwLCAyMzQsIDE5NCwgMjMyLCAyNDgsIDIxLCAxOTUsIAotICAgIDIzNCwgMTk0LCAyMzIsIDI0OCwgMjEsIDE5OSwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAyMSwgMTk2LCAyMzQsIDE5NCwgMjMyLCAKLSAgICAyNDgsIDIxLCAyMDEsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMTc2LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDIzNCwgCi0gICAgMTM4LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDI0MywgMTQyLCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDIyOSwgODIsIAotICAgIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjA2LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDIyMCwgMTA0LCAyMzQsIDE5NCwgCi0gICAgMjMyLCAyNDgsIDEsIDIxMCwgMTE2LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDIyNywgMTY5LCAyMzQsIDE5NCwgMjMyLCAKLSAgICAyNDgsIDEsIDIxNywgMTA2LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDI0MCwgMjMzLCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIAotICAgIDE5OCwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxLCAxOTEsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjI1LCAxNTAsIDIzNCwgCi0gICAgMTk0LCAyMzIsIDI0OCwgMSwgMTg2LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDI0OCwgMjI5LCAyMzQsIDE5NCwgMjMyLCAKLSAgICAyNDgsIDEsIDI1MiwgMTk5LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDIwNSwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxLCAxOTIsIAotICAgIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjMzLCAxNDEsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjEyLCA2NSwgMjM0LCAKLSAgICAxOTQsIDIzMiwgMjQ4LCAxLCAyMTYsIDIwOSwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxLCAxNjIsIDIzNCwgMTk0LCAyMzIsIAotICAgIDI0OCwgMSwgMjE0LCAyNywgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxLCAyNTEsIDQxLCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIAotICAgIDYxLCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDIyNiwgMjM4LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDc0LCAyMzQsIDE5NCwgCi0gICAgMjMyLCAyNDgsIDEsIDIyNiwgMTg3LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDI1LCAyMTQsIDIxNCwgMjM0LCAxOTQsIDIzMiwgCi0gICAgMjQ4LCAyNSwgNzYsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMjUsIDY5LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDI1LCAyNDUsIAotICAgIDIxNywgMjM0LCAxOTQsIDIzMiwgMjQ4LCAyNSwgNzgsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMTM4LCAyMjUsIDMzLCAyMzQsIAotICAgIDE5NCwgMjMyLCAyNDgsIDEzOCwgMjUxLCAyMCwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxMzgsIDI1MSwgMjEsIDIyNSwgMzMsIAotICAgIDIzNCwgMTk0LCAyMzIsIDI0OCwgNSwgMjQ5LCA4NSwgMjM0LCAxOTQsIDIzMiwgMjQ4LCA1LCAyMTksIDIwMSwgMjIzLCA5NiwgCi0gICAgMSwgMTc2LCAyMjMsIDk2LCAxLCAyNDMsIDE0MiwgMjIzLCA5NiwgMSwgMjI5LCA4MiwgMjIzLCA5NiwgMSwgMjE3LCAxMDYsIAotICAgIDIyMywgOTYsIDEsIDI0OCwgMjI5LCAyMjMsIDk2LCAxLCAxOTgsIDIyMywgOTYsIDEsIDE5MSwgMjIzLCA5NiwgMSwgMjUyLCAKLSAgICAxOTksIDIyMywgOTYsIDEsIDE4NiwgMjIzLCA5NiwgMSwgMjUxLCA0MSwgMjIzLCA5NiwgMSwgMjM1LCAxNDcsIDIyMywgOTYsIAotICAgIDEsIDIyNywgMTY5LCAyMjMsIDk2LCAxLCAyMDYsIDIyMywgOTYsIDEsIDIwNSwgMjIzLCA5NiwgMSwgMjMzLCAxNDEsIDIyMywgCi0gICAgOTYsIDEsIDE5MiwgMjIzLCA5NiwgMSwgMjEyLCA2NSwgMjIzLCA5NiwgMSwgMTYyLCAyMjMsIDk2LCAxLCAyMzEsIDEyOSwgCi0gICAgMjIzLCA5NiwgMSwgMjI5LCA2MSwgMjIzLCA5NiwgMSwgMjI5LCAxNTMsIDIyMywgOTYsIDEsIDIyNywgMTM5LCAyMjMsIDk2LCAKLSAgICAxLCA2MSwgMjIzLCA5NiwgMjUsIDUsIDc0LCAyMjMsIDk2LCAyNSwgNSwgNjksIDIyMywgOTYsIDI1LCA1LCA3NiwgMjIzLCAKLSAgICA5NiwgMjUsIDUsIDI1NCwgMjEwLCAyMjMsIDk2LCAyNSwgNSwgNzgsIDIyMywgOTYsIDI1LCA1LCAyNTMsIDIwMCwgMjIzLCAKLSAgICA5NiwgMjUsIDUsIDI0NSwgNjMsIDIyMywgOTYsIDI1LCA1LCAyNDUsIDI0MSwgMjIzLCA5NiwgMTE3LCA1LCAyMjksIDg0LCAKLSAgICAyMjMsIDk2LCAxMTcsIDUsIDIzMCwgMzAsIDIyMywgOTYsIDExNywgNSwgMTUzLCAyMjMsIDk2LCAxMTcsIDUsIDI0MiwgNjcsIAotICAgIDIyMywgOTYsIDIxMywgMTUyLCAyMjMsIDk2LCAyMjEsIDE3NSwgNzksIDI0LCAxMDAsIDIxNiwgOTgsIDI0LCAxMDAsIDIxNiwgCi0gICAgOTcsIDI0LCAxMDAsIDIxNiwgOTUsIDI0LCAxMDAsIDIxNiwgMTAwLCAyNCwgMTAwLCAyMjMsIDI0LCAyNCwgMTAwLCAyMjMsIAotICAgIDgsIDI0LCAxMDAsIDIyMywgMywgMjQsIDEwMCwgMjIzLCA1LCAyNCwgMTAwLCAyMjMsIDIxLCAyNCwgMTAwLCAyMjMsIDE0LCAKLSAgICAyNCwgMTAwLCAyMjMsIDcsIDI0LCAxMDAsIDIyMywgMjYsIDI0LCAxMDAsIDIyMywgOSwgMjQsIDEwMCwgMjIzLCAyOCwgMjQsIAotICAgIDEwMCwgMjIzLCAyNSwgMjQsIDEwMCwgMjMwLCAyMTgsIDI0LCAxMDAsIDIzMCwgMjA5LCAyNCwgMTAwLCAyMzAsIDIxMiwgCi0gICAgMjQsIDEwMCwgMjI1LCA4MywgMjQsIDEwMCwgMjI1LCA5NCwgMjQsIDEwMCwgMjI1LCA5NSwgMjQsIDEwMCwgMjE4LCAyMDksIAotICAgIDI0LCAxMDAsIDIzNiwgNTMsIDI0LCAxMDAsIDIzNiwgNjAsIDI0LCAxMDAsIDIxOCwgMjIwLCAyNCwgMTAwLCAyMTgsIDIwNywgCi0gICAgMjQsIDEwMCwgMjI1LCAxMzMsIDI0LCAxMDAsIDI0MSwgMTc0LCAyNCwgMTAwLCAyMTgsIDIwNCwgMTU1LCA1LCAyMjYsIDMxLCAKLSAgICAxNTUsIDUsIDI1MCwgMTk1LCAxNTUsIDUsIDIzMywgNzIsIDE1NSwgNSwgMjExLCAyNDMsIDE1NSwgMSwgNjEsIDE1NSwgMSwgCi0gICAgMjQwLCAxNjEsIDIzNCwgMTk3LCAxNTUsIDEsIDc0LCAxNTUsIDEsIDIzNiwgNDAsIDE1NSwgMSwgNjksIDE1NSwgMSwgMjI2LCAKLSAgICA5NCwgMjUwLCAxNzEsIDE1NSwgMSwgMjI5LCA4MywgMjMzLCAzNCwgMTU1LCAxLCAyMjksIDgzLCAyMzMsIDM1LCAyMjMsIAotICAgIDE0NSwgMTU1LCAxLCA3NiwgMTU1LCAxLCAyNTQsIDIxMCwgMTU1LCAxLCA3OCwgMTU1LCAxLCAxNzYsIDE1NSwgMSwgMjM1LCAKLSAgICAxOSwgMjIxLCAyMzAsIDE1NSwgMSwgMjM1LCAxOSwgMjMwLCA3MSwgMTU1LCAxLCAyNDMsIDE0MiwgMTU1LCAxLCAyNDMsIAotICAgIDE0MywgMjMwLCA3MSwgMTU1LCAxLCAyMjksIDgyLCAxNTUsIDEsIDI1MSwgNDEsIDE1NSwgMSwgMjUxLCA0MiwgMjMwLCA3MSwgCi0gICAgMTU1LCAxLCAyMzUsIDE0NywgMTU1LCAxLCAyMjcsIDE3MCwgMjMwLCA3MSwgMTU1LCAxLCAyMzUsIDE0OCwgMjMxLCAyMTIsIAotICAgIDE1NSwgMSwgMjI3LCAxNjksIDE1NSwgMSwgMjE1LCAxNTcsIDE1NSwgMSwgMjE1LCAxNTgsIDIzMSwgMjEyLCAxNTUsIDEsIAotICAgIDI0OCwgMTQzLCAxNTUsIDEsIDI0OCwgMTQ0LCAyMzEsIDIxMiwgMTU1LCAxLCAyMjksIDIzNCwgMjMwLCA3MSwgMTU1LCAxLCAKLSAgICAyMTcsIDEwNiwgMTU1LCAxLCAyMTcsIDEwNywgMjMwLCA3MSwgMTU1LCAxLCAyNDgsIDIyOSwgMTU1LCAxLCAyNDgsIDIzMCwgCi0gICAgMjMxLCAyMTIsIDE1NSwgMSwgMTk4LCAxNTUsIDEsIDE5MSwgMTU1LCAxLCAyMjYsIDk0LCAyMzAsIDcxLCAxNTUsIDEsIAotICAgIDI1MiwgMTk5LCAxNTUsIDEsIDI1MiwgMjAwLCAyMzAsIDcxLCAxNTUsIDEsIDE4NiwgMTU1LCAxLCAxOTIsIDE1NSwgMSwgCi0gICAgMjA1LCAxNTUsIDEsIDIyMywgMTkxLCAyNTQsIDIxOSwgMTU1LCAxLCAyMzMsIDE0MSwgMTU1LCAxLCAyMTIsIDY1LCAxNTUsIAotICAgIDEsIDIyMiwgMzYsIDIzMCwgNzEsIDE1NSwgMSwgMjIyLCAzNiwgMjMxLCAyMTIsIDE1NSwgMSwgMjA2LCAxNTUsIDEsIDE2MiwgCi0gICAgMTU1LCA1LCAyNTAsIDE5NiwgMjE2LCAyNTEsIDE1NSwgMjUsIDUsIDIxNywgNDgsIDE1NSwgMjUsIDUsIDIxNiwgMzYsIAotICAgIDE1NSwgMjUsIDUsIDIxMSwgMTkwLCAxNTUsIDI1LCA1LCAyMTEsIDE5MSwgMjMxLCA3NCwgMTU1LCAyNSwgNSwgMjE4LCA0OCwgCi0gICAgMTU1LCAyNSwgNSwgMjE4LCA0OSwgMjMxLCA2MiwgMTU1LCAyNSwgNSwgMjE3LCA2NiwgMTU1LCAyNSwgNSwgMjQ3LCAyMDIsIAotICAgIDIzMCwgNzAsIDE1NSwgMjUsIDUsIDIyNSwgMTg3LCAxNTUsIDExNywgNSwgMjM0LCAxNjQsIDE1NSwgMTE3LCA1LCAyMjUsIAotICAgIDE5OSwgMTU1LCAxMTcsIDUsIDI1MSwgMjcsIDE1NSwgMjI2LCA0NCwgMTU1LCA0MywgMjIzLCA3MiwgMTU1LCA0NCwgMjIzLCAKLSAgICA3MiwgMTU1LCAyMjYsIDgzLCAyNTQsIDEyNSwgMTU1LCAyMjYsIDgzLCAyMzEsIDIyOSwgMTU1LCAyMjYsIDgzLCAyMzIsIAotICAgIDkzLCAxNTUsIDIyNiwgODMsIDIxMSwgMjM4LCAxNTUsIDIyNiwgODMsIDIyNiwgNDUsIDE1NSwgMjI2LCA4MywgMjMyLCAKLSAgICAyMTEsIDE1NSwgMjI2LCA4MywgMjMyLCA4NywgMTU1LCAyMjYsIDgzLCAyNTUsIDIsIDE1NSwgMjI2LCA4MywgMjU1LCAzLCAKLSAgICAyNTUsIDIsIDE1NSwgMjI2LCA4MywgMjI1LCA1NCwgMTU1LCAyMTUsIDk0LCAyMjYsIDgzLCAyMjUsIDU0LCAxNTUsIDIyNiwgCi0gICAgNDAsIDE1NSwgMjEsIDIxMCwgODYsIDE1NSwgMjEsIDExMSwgMTU1LCAyMSwgMTA1LCAxNTUsIDIxLCAxNTgsIDE1NSwgMjEsIAotICAgIDE2MSwgMTU1LCAyMSwgMTkwLCAxNTUsIDIxLCAxOTUsIDE1NSwgMjEsIDE5OSwgMTU1LCAyMSwgMTk2LCAxNTUsIDIxLCAKLSAgICAyMDEsIDE1NSwgMjI2LCA4MywgMjE2LCA3MCwgMjE1LCAxMDcsIDE1NSwgMjI2LCA4MywgMjM1LCAxNzQsIDE3MiwgMSwgNjEsIAotICAgIDE3MiwgMSwgNzQsIDE3MiwgMSwgNjksIDE3MiwgMSwgNzYsIDE3MiwgMSwgMjU0LCAyMTAsIDE3MiwgMSwgNzgsIDE3MiwgMSwgCi0gICAgMTc2LCAxNzIsIDEsIDIzNCwgMTM4LCAxNzIsIDEsIDI0MywgMTQyLCAxNzIsIDEsIDI0MywgMCwgMTcyLCAxLCAyMjgsIAotICAgIDI1MCwgMTcyLCAxLCAyMjksIDgyLCAxNzIsIDEsIDI1MCwgMTY1LCAxNzIsIDEsIDI1MCwgMTIwLCAxNzIsIDEsIDIzNSwgCi0gICAgMTQ3LCAxNzIsIDEsIDIzNSwgMTIwLCAxNzIsIDEsIDIyOCwgMjQwLCAxNzIsIDEsIDIyOCwgMjQyLCAxNzIsIDEsIDIyOCwgCi0gICAgMjQxLCAxNzIsIDEsIDIxNywgMTA2LCAxNzIsIDEsIDIxNiwgMjA5LCAxNzIsIDEsIDI0OCwgMjI5LCAxNzIsIDEsIDI0OCwgCi0gICAgMzMsIDE3MiwgMSwgMjI3LCAyMTEsIDE3MiwgMSwgMTk4LCAxNzIsIDEsIDI0OCwgMTQzLCAxNzIsIDEsIDE5MSwgMTcyLCAxLCAKLSAgICAyMjQsIDIyMywgMTcyLCAxLCAyMjUsIDE1MCwgMTcyLCAxLCAyNTIsIDE5OSwgMTcyLCAxLCAyNTIsIDI2LCAxNzIsIDEsIAotICAgIDIzMCwgMTAwLCAxNzIsIDEsIDE4NiwgMTcyLCAxLCAyNTIsIDExOSwgMTcyLCAxLCAxOTIsIDE3MiwgMSwgMjA1LCAxNzIsIAotICAgIDEsIDIzMywgMTQxLCAxNzIsIDEsIDIxNCwgMjcsIDE3MiwgMSwgMjE4LCAyMjUsIDE3MiwgMSwgMjA2LCAxNzIsIDEsIDE2MiwgCi0gICAgMTcyLCAyNSwgNSwgMjU1LCA4MiwgMTcyLCAyNSwgNSwgNzQsIDE3MiwgMjUsIDUsIDIzNiwgNDAsIDE3MiwgMjUsIDUsIAotICAgIDI0NSwgMjAzLCAxNzIsIDI1LCA1LCA2OSwgMTcyLCAyNSwgNSwgMjI2LCAyMzgsIDE3MiwgMjUsIDUsIDc4LCAxNzIsIDI1LCAKLSAgICA1LCAyNTQsIDIxMCwgMTcyLCAyNSwgNSwgMjUzLCAyMDAsIDE3MiwgMjUsIDUsIDIxNCwgMjE0LCAxNzIsIDExNywgNSwgCi0gICAgMTkyLCAxNzIsIDExNywgNSwgMjA1LCAxNzIsIDExNywgNSwgMjMzLCAxNDEsIDE3MiwgMTE3LCA1LCAyMTIsIDY1LCAxNzIsIAotICAgIDEsIDQwLCAyMzUsIDI5LCAxNzIsIDEsIDQwLCAyNDMsIDIwOSwgMTcyLCAxLCA0MCwgMjI5LCA4NCwgMTcyLCAxMTcsIDUsIAotICAgIDQwLCAyMjksIDg0LCAxNzIsIDEsIDQwLCAyNTAsIDE2NiwgMTcyLCAxLCA0MCwgMjE3LCAxNTMsIDE3MiwgMSwgNDAsIDIzMCwgCi0gICAgMzAsIDE3MiwgMSwgNDAsIDIyNiwgMTA5LCAxNzIsIDEsIDQwLCAyMTEsIDExNywgMTcyLCAxLCA0MCwgMTUzLCAxNzIsIDEsIAotICAgIDQwLCAxNTYsIDE3MiwgMSwgNDAsIDIxOCwgMjI4LCAxNzIsIDExNywgNSwgNDAsIDE5NCwgMTcyLCAxMTcsIDUsIDQwLCAKLSAgICAyNDIsIDY3LCAxNzIsIDIxLCAyMTAsIDg2LCAxNzIsIDIxLCAxMTEsIDE3MiwgMjEsIDEwNSwgMTcyLCAyMSwgMTU4LCAxNzIsIAotICAgIDIxLCAxNjEsIDE3MiwgMjEsIDE5MCwgMTcyLCAyMSwgMTk1LCAxNzIsIDIxLCAxOTksIDE3MiwgMjEsIDE5NiwgMTcyLCAyMSwgCi0gICAgMjAxLCAxNzIsIDIyNCwgMTQ0LCAyMTgsIDI1MywgMTcyLCAyMjQsIDE0NCwgMjQ4LCAxODYsIDE3MiwgMjI0LCAxNDQsIDUyLCAKLSAgICAyNDgsIDE4NiwgMTcyLCAyMjQsIDE0NCwgMjE1LCAyMTIsIDI0OCwgMTg2LCA2OCwgMSwgMjM0LCAxMzIsIDI0MywgMTQyLCAKLSAgICA2OCwgMSwgMjM0LCAxMzIsIDI1MSwgNDEsIDY4LCAxLCAyMzQsIDEzMiwgMjUwLCAxNjUsIDY4LCAxLCAyMzQsIDEzMiwgCi0gICAgMjM1LCAxNDcsIDY4LCAxLCAyMzQsIDEzMiwgMjM1LCAxMjAsIDY4LCAxLCAyMzQsIDEzMiwgMjI3LCAxNjksIDY4LCAxLCAKLSAgICAyMzQsIDEzMiwgMjE1LCAxNTcsIDY4LCAxLCAyMzQsIDEzMiwgMjE1LCAxNDUsIDY4LCAxLCAyMzQsIDEzMiwgMjQ4LCAxNDMsIAotICAgIDY4LCAxLCAyMzQsIDEzMiwgMjQ4LCAxMjcsIDY4LCAxLCAyMzQsIDEzMiwgMjQ4LCAzMywgNjgsIDEsIDIzNCwgMTMyLCAKLSAgICAxOTgsIDY4LCAxLCAyMzQsIDEzMiwgMjA2LCA2OCwgMSwgMjM0LCAxMzIsIDE2MiwgNjgsIDEsIDIzNCwgMTMyLCAyNDEsIAotICAgIDE5NiwgNjgsIDEsIDIzNCwgMTMyLCAyNDQsIDIwNCwgNjgsIDU4LCAxLCAyMzQsIDEzMiwgMjIzLCAxMTIsIDY4LCAxLCAKLSAgICAyMzQsIDEzMiwgMjExLCAxNjUsIDY4LCAxLCAyMzQsIDEzMiwgMjEwLCAxMTYsIDY4LCAxLCAyMzQsIDEzMiwgMjA1LCA2OCwgCi0gICAgMjMyLCAxNTEsIDIzNCwgMTMyLCAyMjcsIDEsIDY4LCAyMzIsIDE1MSwgMjM0LCAxMzIsIDIyNCwgNDYsIDY4LCAyMzIsIAotICAgIDE1MSwgMjM0LCAxMzIsIDI0MSwgMTI4LCA2OCwgMTYsIDI1NCwgMTk5LCAyNDUsIDM4LCA2OCwgMTYsIDI1NCwgMTk5LCAKLSAgICAxMTEsIDY4LCAxNiwgMjU0LCAxOTksIDEwNSwgNjgsIDEsIDI1NCwgMTk5LCAyMDUsIDY4LCA1LCAyMjYsIDI3LCAyMzQsIAotICAgIDIxOSwgMjE2LCAzMSwgMzksIDIwOCwgMSwgMTIxLCAyMzQsIDM0LCAzOSwgMjA4LCAxLCAxMjUsIDIzNCwgMzQsIDM5LCAKLSAgICAyMDgsIDEsIDEyMSwgMjM0LCAxMTEsIDM5LCAyMDgsIDEsIDEyNSwgMjM0LCAxMTEsIDM5LCAyMDgsIDEsIDEyMSwgMjM0LCAKLSAgICAxMjAsIDM5LCAyMDgsIDEsIDEyNSwgMjM0LCAxMjAsIDM5LCAyMDgsIDEsIDEyMSwgMjQyLCAxODEsIDM5LCAyMDgsIDEsIAotICAgIDEyNSwgMjQyLCAxODEsIDM5LCAyMDgsIDEsIDEyMSwgMjI5LCA5LCAzOSwgMjA4LCAxLCAxMjUsIDIyOSwgOSwgMzksIDIwOCwgCi0gICAgMSwgMTIxLCAyNDksIDI0NiwgMzksIDIwOCwgMSwgMTI1LCAyNDksIDI0NiwgMzksIDIwOCwgMSwgMTIxLCAyNTAsIDk0LCAKLSAgICAzOSwgMjA4LCAxLCAxMjUsIDI1MCwgOTQsIDM5LCAyMDgsIDEsIDEyMSwgMjE5LCA2MCwgMzksIDIwOCwgMSwgMTI1LCAyMTksIAotICAgIDYwLCAzOSwgMjA4LCAxLCAxMjEsIDIyNywgMTM4LCAzOSwgMjA4LCAxLCAxMjUsIDIyNywgMTM4LCAzOSwgMjA4LCAxLCAKLSAgICAxMjEsIDI0NywgMTUzLCAzOSwgMjA4LCAxLCAxMjUsIDI0NywgMTUzLCAzOSwgMjA4LCAxLCAxMjEsIDExMiwgMzksIDIwOCwgCi0gICAgMSwgMTI1LCAxMTIsIDM5LCAyMDgsIDEsIDEyMSwgMjE2LCAxNTcsIDM5LCAyMDgsIDEsIDEyNSwgMjE2LCAxNTcsIDM5LCAKLSAgICAyMDgsIDEsIDEyMSwgMjI4LCA3OSwgMzksIDIwOCwgMSwgMTI1LCAyMjgsIDc5LCAzOSwgMjA4LCAxLCAxMjEsIDI1MSwgCi0gICAgMjEzLCAzOSwgMjA4LCAxLCAxMjUsIDI1MSwgMjEzLCAzOSwgMjA4LCAxLCAxMjEsIDIyNSwgMTksIDM5LCAyMDgsIDEsIAotICAgIDEyNSwgMjI1LCAxOSwgMzksIDIwOCwgMSwgMTIxLCAyMjUsIDEyNCwgMzksIDIwOCwgMSwgMTI1LCAyMjUsIDEyNCwgMzksIAotICAgIDIwOCwgMSwgMTIxLCAyNDQsIDUxLCAzOSwgMjA4LCAxLCAxMjUsIDI0NCwgNTEsIDM5LCAyMDgsIDEsIDEyMSwgMjMwLCAKLSAgICAxNjYsIDM5LCAyMDgsIDEsIDEyNSwgMjMwLCAxNjYsIDM5LCAyMDgsIDEsIDEyMSwgMjEwLCAyNDQsIDM5LCAyMDgsIDEsIAotICAgIDEyNSwgMjEwLCAyNDQsIDM5LCAyMDgsIDEsIDEyMSwgMjIyLCAyMTMsIDM5LCAyMDgsIDEsIDEyNSwgMjIyLCAyMTMsIDM5LCAKLSAgICAyMDgsIDEsIDEyMSwgMjMyLCAxNjIsIDM5LCAyMDgsIDEsIDEyNSwgMjMyLCAxNjIsIDM5LCAyMDgsIDEsIDEyMSwgMjEzLCAKLSAgICAxMzgsIDM5LCAyMDgsIDEsIDEyNSwgMjEzLCAxMzgsIDM5LCAyMDgsIDEsIDEyMSwgMjQxLCA3NSwgMzksIDIwOCwgMSwgCi0gICAgMTI1LCAyNDEsIDc1LCAzOSwgMjA4LCAxLCAxMjEsIDc4LCAzOSwgMjA4LCAxLCAxMjUsIDc4LCAzOSwgMjA4LCAyMzEsIAotICAgIDIwOSwgMjM0LCAyMzYsIDM5LCAyMDgsIDI1LCAyNTUsIDgyLCAzOSwgMjA4LCAyNSwgNzQsIDM5LCAyMDgsIDI1LCAyMTQsIAotICAgIDIxNCwgMzksIDIwOCwgMjUsIDY5LCAzOSwgMjA4LCAyNSwgNzYsIDM5LCAyMDgsIDI1LCA3OCwgMzksIDIwOCwgMjMxLCAKLSAgICAyMDksIDIzNCwgMTE0LCAzOSwgMjA4LCAyNSwgMjQwLCAxMjYsIDM5LCAyMDgsIDI1LCAyMTQsIDIxMywgMzksIDIwOCwgMjUsIAotICAgIDIxNCwgMjI5LCAzOSwgMjA4LCAyNSwgMjUzLCAxOTgsIDM5LCAyMDgsIDI1LCAyNTMsIDE3NSwgMzksIDIwOCwgMjUsIDI1NCwgCi0gICAgMTMxLCAzOSwgMjA4LCAyNSwgMjU0LCAxNDQsIDM5LCAyMDgsIDEzOCwgMjMxLCAyMDksIDI0NSwgMTg4LCAzOSwgMjA4LCAKLSAgICAxMzgsIDIzMSwgMjA5LCAyMjcsIDIxMCwgMzksIDIwOCwgMTM4LCAyMzEsIDIwOSwgMjE2LCAxNTcsIDM5LCAyMDgsIDEzOCwgCi0gICAgMjMxLCAyMDksIDIxOSwgNDQsIDM5LCAyMDgsIDE2LCAyMzQsIDE5LCAzOSwgMjA4LCAxNiwgMjI3LCAyMTAsIDM5LCAyMDgsIAotICAgIDE2LCAyMjEsIDI1NSwgMzksIDIwOCwgMTYsIDI0MSwgNzYsIDI0MSwgNzEsIDM5LCAyMDgsIDE2LCAyMzQsIDI4LCAyMzQsIAotICAgIDI3LCAxODgsIDE4NywgMSwgNzYsIDE4OCwgMTg3LCAxLCA3OCwgMTg4LCAxODcsIDEsIDI1MCwgMTY1LCAxODgsIDE4NywgMSwgCi0gICAgMjI3LCAxNjksIDE4OCwgMTg3LCAxLCAyMTUsIDE1NywgMTg4LCAxODcsIDEsIDIxNSwgMTQ1LCAxODgsIDE4NywgMSwgMjQ4LCAKLSAgICAxNDMsIDE4OCwgMTg3LCAxLCAyNDgsIDEyNywgMTg4LCAxODcsIDEsIDIyOCwgMTE1LCAxODgsIDE4NywgMSwgMjIwLCAxMDQsIAotICAgIDE4OCwgMTg3LCAxLCAyMTgsIDIyNSwgMTg4LCAxODcsIDI1LCA1LCAyMzYsIDQwLCAxODgsIDE4NywgMjUsIDUsIDIxNCwgCi0gICAgMTE4LCAxODgsIDE4NywgMjUsIDUsIDI1NSwgNDYsIDE4OCwgMTg3LCAyNSwgNSwgMjUzLCAyMDAsIDE4OCwgMTg3LCAyNSwgCi0gICAgNSwgMjU1LCAzOSwgMTg4LCAxODcsIDI1MCwgMTMzLCAxODgsIDE4NywgMjU0LCAyMTUsIDIzNCwgMTA0LCAxODgsIDE4NywgCi0gICAgMjU0LCAxMTEsIDE4OCwgMTg3LCAzLCAyMjMsIDc3LCA3OSwgMTg4LCAxODcsIDIxMSwgMjA5LCAyMjMsIDc3LCA3OSwgMTg4LCAKLSAgICAxODcsIDI1LCA1LCAyMTMsIDE0NywgMTg4LCAxODcsIDIxMywgMTUyLCAyOSwgMywgMjE1LCAxMzgsIDI5LCAzLCAyMTUsIAotICAgIDE0MSwgMjksIDMsIDIxNSwgMTQ0LCAyOSwgMywgMjE1LCAxNDIsIDI5LCAzLCAyMTUsIDE0MywgMjksIDMsIDIxNSwgMTQwLCAKLSAgICAyOSwgMywgMjQ4LCAxMjEsIDI5LCAzLCAyNDgsIDEyMywgMjksIDMsIDI0OCwgMTI2LCAyOSwgMywgMjQ4LCAxMjQsIDI5LCAKLSAgICAzLCAyNDgsIDEyNSwgMjksIDMsIDI0OCwgMTIyLCAyOSwgMywgMjQ2LCAzNiwgMjksIDMsIDI0NiwgMzksIDI5LCAzLCAyNDYsIAotICAgIDQ1LCAyOSwgMywgMjQ2LCA0MywgMjksIDMsIDI0NiwgNDQsIDI5LCAzLCAyNDYsIDM3LCAyOSwgMywgMjUwLCAyMTIsIDI5LCAKLSAgICAzLCAyNTAsIDIwNiwgMjksIDMsIDI1MCwgMjA4LCAyOSwgMywgMjUwLCAyMTEsIDI5LCAzLCAyNTAsIDIwOSwgMjksIDMsIAotICAgIDI1MCwgMjEwLCAyOSwgMywgMjUwLCAyMDcsIDI5LCAzLCAyNTIsIDExOSwgMjksIDMsIDI1MiwgOTgsIDI5LCAzLCAyNTIsIAotICAgIDExMCwgMjksIDMsIDI1MiwgMTE4LCAyOSwgMywgMjUyLCAxMTMsIDI5LCAzLCAyNTIsIDExNCwgMjksIDMsIDI1MiwgMTAyLCAKLSAgICAxODgsIDE4NywgMSwgMjM0LCAyNSwgMTg4LCAxODcsIDEsIDIyMSwgMjU1LCAxODgsIDE4NywgMSwgMjMzLCAxMTUsIDE4OCwgCi0gICAgMTg3LCAxLCAyMzAsIDE3NywgMTg4LCAxODcsIDEsIDE5MSwgMTg4LCAxODcsIDEsIDE5OCwgMTg4LCAxODcsIDEsIDI1MCwgCi0gICAgMTEwLCAxODgsIDE4NywgMSwgMjE2LCA5MSwgMTg4LCAxODcsIDEsIDIzNCwgMTA3LCAxODgsIDE4NywgMSwgMjI4LCAyNTUsIAotICAgIDE4OCwgMTg3LCAxLCAyMTYsIDE1MSwgMTg4LCAxODcsIDEsIDIxMiwgNjAsIDE4OCwgMTg3LCAxLCAyMTEsIDY5LCAxODgsIAotICAgIDE4NywgMSwgMjQwLCAyMjMsIDE4OCwgMTg3LCAxLCAyMTQsIDE5MCwgMTg4LCAxODcsIDEsIDc0LCAxODgsIDE4NywgMSwgCi0gICAgMjI1LCAxNDUsIDE4OCwgMTg3LCAxLCAyNTMsIDIxMCwgMTg4LCAxODcsIDEsIDI0MiwgMTc0LCAxODgsIDE4NywgMSwgMjM1LCAKLSAgICAxMTgsIDE4OCwgMTg3LCAxLCAyMjMsIDE2OSwgMTg4LCAxODcsIDEsIDI1MiwgMTk5LCAxODgsIDE4NywgMSwgMjM1LCAxMDYsIAotICAgIDE4OCwgMTg3LCAxLCAyNDcsIDIyNywgMTg4LCAxODcsIDEsIDI0MiwgMjI4LCAxODgsIDE4NywgMSwgMjQ4LCAxMywgMTg4LCAKLSAgICAxODcsIDEsIDI1MiwgMjQsIDE4OCwgMTg3LCAxLCAyMzQsIDI2LCAyMzIsIDEzNCwgMTg4LCAxODcsIDEsIDIzMywgMTE2LCAKLSAgICAyMzIsIDEzNCwgMTg4LCAxODcsIDEsIDIzMCwgMTc4LCAyMzIsIDEzNCwgMTg4LCAxODcsIDEsIDIyNiwgOTQsIDIzMiwgCi0gICAgMTM0LCAxODgsIDE4NywgMSwgMjI5LCAyMzQsIDIzMiwgMTM0LCAxODgsIDE4NywgMSwgMjE2LCA5MiwgMjMyLCAxMzQsIAotICAgIDE4OCwgMTg3LCAxLCAyMjksIDAsIDIzMiwgMTM0LCAxODgsIDE4NywgMSwgMjQwLCAxNjEsIDIzMiwgMTM0LCAxODgsIDE4NywgCi0gICAgMjUsIDUsIDIyNiwgMTk5LCAxODgsIDE4NywgMjUsIDUsIDIzNiwgNCwgMTg4LCAxODcsIDI1LCA1LCAyNTQsIDEzMCwgMTg4LCAKLSAgICAxODcsIDI1LCA1LCAyMTEsIDM4LCAxODgsIDE4NywgMjUsIDUsIDIxOSwgMzQsIDE4OCwgMTg3LCAyNSwgNSwgMjE0LCAxODcsIAotICAgIDE4OCwgMTg3LCAyNSwgNSwgMjUwLCAxMzEsIDE4OCwgMTg3LCAyNSwgNSwgMjI3LCAxOTUsIDE4OCwgMTg3LCAyNTAsIDEzMiwgCi0gICAgMTg4LCAxODcsIDIzMiwgOTAsIDIzNSwgMTU2LCAxODgsIDE4NywgMjU0LCA1NCwgMjM1LCAxNTYsIDE4OCwgMTg3LCAyMSwgCi0gICAgMjEwLCA4NiwgMTg4LCAxODcsIDIxLCAxMTEsIDE4OCwgMTg3LCAyMSwgMTA1LCAxODgsIDE4NywgMjEsIDE1OCwgMTg4LCAKLSAgICAxODcsIDIxLCAxNjEsIDE4OCwgMTg3LCAyMSwgMTkwLCAxODgsIDE4NywgMjEsIDE5NSwgMTg4LCAxODcsIDIxLCAxOTksIAotICAgIDE4OCwgMTg3LCAyMSwgMTk2LCAxODgsIDE4NywgMjEsIDIwMSwgMjQsIDE0MywgMjI3LCA4MSwgMjQsIDE0MywgMjI3LCA4NiwgCi0gICAgMjQsIDE0MywgMjEwLCAyNDMsIDI0LCAxNDMsIDIxMCwgMjQyLCAyNCwgMTQzLCAyMTAsIDI0MSwgMjQsIDE0MywgMjE1LCAKLSAgICAyMywgMjQsIDE0MywgMjE1LCAyNiwgMjQsIDE0MywgMjEwLCAyMTAsIDI0LCAxNDMsIDIxMCwgMjA2LCAyNCwgMTQzLCAyNDUsIAotICAgIDYyLCAyNCwgMTQzLCAyNDUsIDYwLCAyNCwgMTQzLCAyNDUsIDYxLCAyNCwgMTQzLCAyNDUsIDU4LCAyNCwgMTQzLCAyNDAsIAotICAgIDE1MSwgMjQsIDE0MywgMjQwLCAxNTAsIDI0LCAxNDMsIDI0MCwgMTQ4LCAyNCwgMTQzLCAyNDAsIDE0OSwgMjQsIDE0MywgCi0gICAgMjQwLCAxNTQsIDI0LCAxNDMsIDI0MCwgMTQ3LCAyNCwgMTQzLCAyNDAsIDE0NiwgMjQsIDE0MywgMjQwLCAxNTYsIDI0LCAKLSAgICAxNDMsIDI1NCwgNDEsIDI0LCAxNDMsIDI1NCwgNDAsIDI0LCA5MCwgMjI4LCAyMjQsIDI0LCA5MCwgMjI4LCAyMzAsIDI0LCAKLSAgICA5MCwgMjE4LCAyMDYsIDI0LCA5MCwgMjE4LCAyMDUsIDI0LCA5MCwgMjE2LCA5NywgMjQsIDkwLCAyMTYsIDk1LCAyNCwgOTAsIAotICAgIDIxNiwgOTQsIDI0LCA5MCwgMjE2LCAxMDAsIDI0LCA5MCwgMjE2LCAxMDEsIDI0LCA5MCwgMjE2LCA5MywgMjQsIDkwLCAKLSAgICAyMjMsIDgsIDI0LCA5MCwgMjIzLCAyMywgMjQsIDkwLCAyMTgsIDIxMiwgMjQsIDkwLCAyMjMsIDIwLCAyNCwgOTAsIDIyMywgCi0gICAgMTAsIDI0LCA5MCwgMjIzLCAxMiwgMjQsIDkwLCAyMjIsIDI1NSwgMjQsIDkwLCAyMjMsIDAsIDI0LCA5MCwgMjM0LCAyMjQsIAotICAgIDI0LCA5MCwgMjMwLCAyMTcsIDI0LCA5MCwgMjMwLCAyMTEsIDI0LCA5MCwgMjE4LCAyMTYsIDI0LCA5MCwgMjMwLCAyMTQsIAotICAgIDI0LCA5MCwgMjMwLCAyMjAsIDI0LCA5MCwgMjI1LCA3OSwgMjQsIDkwLCAyMjUsIDg4LCAyNCwgOTAsIDIyNSwgOTIsIDI0LCAKLSAgICA5MCwgMjE4LCAyMTQsIDI0LCA5MCwgMjI1LCA4MiwgMjQsIDkwLCAyMjUsIDk2LCAyNCwgOTAsIDIyNSwgOTcsIDI0LCA5MCwgCi0gICAgMjE5LCAxNDIsIDI0LCA5MCwgMjE5LCAxNDUsIDI0LCA5MCwgMjE4LCAyMTAsIDI0LCA5MCwgMjE4LCAyMDgsIDI0LCA5MCwgCi0gICAgMjE5LCAxNDAsIDI0LCA5MCwgMjE5LCAxNDgsIDI0LCA5MCwgMjE5LCAxNDksIDI0LCA5MCwgMjE5LCAxMzQsIDI0LCA5MCwgCi0gICAgMjE5LCAxNDcsIDI0LCA5MCwgMjI2LCAzNCwgMjQsIDkwLCAyMjYsIDM1LCAyNCwgOTAsIDIxMSwgMjQsIDI0LCA5MCwgMjExLCAKLSAgICAyNSwgMjQsIDkwLCAyNTAsIDUyLCAyNCwgOTAsIDI1MCwgNTEsIDI0LCA5MCwgMjE4LCAyMjEsIDI0LCA5MCwgMjI1LCAxMzEsIAotICAgIDI0LCA5MCwgMjI1LCAxMzAsIDEwLCAxNCwgMjM4LCAzMSwgMTAsIDE0LCAyMzgsIDMwLCAxMCwgMTQsIDIzOCwgMjksIDEwLCAKLSAgICAxNCwgMjM4LCAyOCwgMTAsIDE0LCAyMzgsIDI3LCAxMCwgMTQsIDIzOCwgMjYsIDEwLCAxNCwgMjM4LCAyNSwgMTAsIDE0LCAKLSAgICAyMzgsIDI0LCAxMCwgMTQsIDIzOCwgMjMsIDEwLCAxNCwgMjM4LCAyMiwgMTAsIDE0LCAyMzgsIDIxLCAxMCwgMTQsIDIzOCwgCi0gICAgMjAsIDEwLCAxNCwgMjM4LCAxOSwgMTAsIDE0LCAyMzgsIDE4LCAxMCwgMTQsIDIzOCwgMTcsIDEwLCAxNCwgMjM4LCAxNiwgCi0gICAgMTAsIDE0LCAyMzgsIDE1LCAxMCwgMTQsIDIzOCwgMTQsIDEwLCAxNCwgMjM4LCAxMywgMTAsIDE0LCAyMzgsIDEyLCAxMCwgCi0gICAgMTQsIDIzOCwgMTEsIDEwLCAxNCwgMjM4LCAxMCwgMTAsIDE0LCAyMzgsIDksIDEwLCAxNCwgMjM4LCA4LCAxMCwgMTQsIAotICAgIDIzOCwgNywgMTAsIDE0LCAyMzgsIDYsIDEwLCAxNCwgMjM4LCA1LCAxMCwgMTQsIDIzOCwgNCwgMTAsIDE0LCAyMzgsIDMsIAotICAgIDEwLCAxNCwgMjM4LCAyLCAxMCwgMTQsIDIzOCwgMSwgMTAsIDE0LCAyMzgsIDAsIDEwLCAxNCwgMjM3LCAyNTUsIDEwLCAxNCwgCi0gICAgMjM3LCAyNTQsIDEwLCAxNCwgMjM3LCAyNTMsIDEwLCAxNCwgMjM3LCAyNTIsIDEwLCAxNCwgMjM3LCAyNTEsIDEwLCAxNCwgCi0gICAgMjM3LCAyNTAsIDEwLCAxNCwgMjM3LCAyNDksIDEwLCAxNCwgMjM3LCAyNDgsIDEwLCAxNCwgMjM3LCAyNDcsIDEwLCAxNCwgCi0gICAgMjM3LCAyNDYsIDEwLCAxNCwgMjM3LCAyNDUsIDEwLCAxNCwgMjM3LCAyNDQsIDEwLCAxNCwgMjM3LCAyNDMsIDEwLCAxNCwgCi0gICAgMjM3LCAyNDIsIDEwLCAxNCwgMjM3LCAyNDEsIDEwLCAxNCwgMjM3LCAyNDAsIDEwLCAxNCwgMjM3LCAyMzksIDEwLCAxNCwgCi0gICAgMjM3LCAyMzgsIDEwLCAxNCwgMjM3LCAyMzcsIDEwLCAxNCwgMjM3LCAyMzYsIDEwLCAxNCwgMjM3LCAyMzUsIDEwLCAxNCwgCi0gICAgMjM3LCAyMzQsIDEwLCAxNCwgMjM3LCAyMzMsIDEwLCAxNCwgMjM3LCAyMzIsIDEwLCAxNCwgMjM3LCAyMzEsIDEwLCAxNCwgCi0gICAgMjM3LCAyMzAsIDEwLCAxNCwgMjM3LCAyMjksIDEwLCAxNCwgMjM3LCAyMjgsIDEwLCAxNCwgMjM3LCAyMjcsIDEwLCAxNCwgCi0gICAgMjM3LCAyMjYsIDEwLCAxNCwgMjM3LCAyMjUsIDEwLCAxNCwgMjM3LCAyMjQsIDEwLCAxNCwgMjM3LCAyMjMsIDEwLCAxNCwgCi0gICAgMjM3LCAyMjIsIDEwLCAxNCwgMjM3LCAyMjEsIDEwLCAxNCwgMjM3LCAyMjAsIDEwLCAxNCwgMjM3LCAyMTksIDEwLCAxNCwgCi0gICAgMjM3LCAyMTgsIDEwLCAxNCwgMjM3LCAyMTcsIDEwLCAxNCwgMjM3LCAyMTYsIDEwLCAxNCwgMjM3LCAyMTUsIDEwLCAxNCwgCi0gICAgMjM3LCAyMTQsIDEwLCAxNCwgMjM3LCAyMTMsIDEwLCAxNCwgMjM3LCAyMTIsIDEwLCAxNCwgMjM3LCAyMTEsIDEwLCAxNCwgCi0gICAgMjM3LCAyMTAsIDEwLCAxNCwgMjM3LCAyMDksIDEwLCAxNCwgMjM3LCAyMDgsIDEwLCAxNCwgMjM3LCAyMDcsIDEwLCAxNCwgCi0gICAgMjM3LCAyMDYsIDEwLCAxNCwgMjM3LCAyMDUsIDEwLCAxNCwgMjM3LCAyMDQsIDEwLCAxNCwgMjM3LCAyMDMsIDEwLCAxNCwgCi0gICAgMjM3LCAyMDIsIDEwLCAxNCwgMjM3LCAyMDEsIDEwLCAxNCwgMjM3LCAyMDAsIDEwLCAxNCwgMjM3LCAxOTksIDEwLCAxNCwgCi0gICAgMjM3LCAxOTgsIDEwLCAxNCwgMjM3LCAxOTcsIDEwLCAxNCwgMjM3LCAxOTYsIDEwLCAxNCwgMjM3LCAxOTUsIDEwLCAxNCwgCi0gICAgMjM3LCAxOTQsIDEwLCAxNCwgMjM3LCAxOTMsIDEwLCAxNCwgMjM3LCAxOTIsIDEwLCAxNCwgMjM3LCAxOTEsIDEwLCAxNCwgCi0gICAgMjM3LCAxOTAsIDEwLCAxNCwgMjM3LCAxODksIDEwLCAxNCwgMjM3LCAxODgsIDEwLCAxNCwgMjM3LCAxODcsIDEwLCAxNCwgCi0gICAgMjM3LCAxODYsIDEwLCAxNCwgMjM3LCAxODUsIDEwLCAxNCwgMjM3LCAxODQsIDEwLCAxNCwgMjM3LCAxODMsIDEwLCAxNCwgCi0gICAgMjM3LCAxODIsIDEwLCAxNCwgMjM3LCAxODEsIDEwLCAxNCwgMjM3LCAxODAsIDEwLCAxNCwgMjM3LCAxNzksIDEwLCAxNCwgCi0gICAgMjM3LCAxNzgsIDEwLCAxNCwgMjM3LCAxNzcsIDEwLCAxNCwgMjM3LCAxNzYsIDEwLCAxNCwgMjM3LCAxNzUsIDEwLCAxNCwgCi0gICAgMjM3LCAxNzQsIDEwLCAxNCwgMjM3LCAxNzMsIDEwLCAxNCwgMjM3LCAxNzIsIDEwLCAxNCwgMjM3LCAxNzEsIDEwLCAxNCwgCi0gICAgMjM3LCAxNzAsIDEwLCAxNCwgMjM3LCAxNjksIDEwLCAxNCwgMjM3LCAxNjgsIDEwLCAxNCwgMjM3LCAxNjcsIDEwLCAxNCwgCi0gICAgMjM3LCAxNjYsIDEwLCAxNCwgMjM3LCAxNjUsIDEwLCAxNCwgMjM3LCAxNjQsIDEwLCAxNCwgMjM3LCAxNjMsIDEwLCAxNCwgCi0gICAgMjM3LCAxNjIsIDEwLCAxNCwgMjM3LCAxNjEsIDEwLCAxNCwgMjM3LCAxNjAsIDEwLCAxNCwgMjM3LCAxNTksIDEwLCAxNCwgCi0gICAgMjM3LCAxNTgsIDEwLCAxNCwgMjM3LCAxNTcsIDEwLCAxNCwgMjM3LCAxNTYsIDEwLCAxNCwgMjM3LCAxNTUsIDEwLCAxNCwgCi0gICAgMjM3LCAxNTQsIDEwLCAxNCwgMjM3LCAxNTMsIDEwLCAxNCwgMjM3LCAxNTIsIDEwLCAxNCwgMjM3LCAxNTEsIDEwLCAxNCwgCi0gICAgMjM3LCAxNTAsIDEwLCAxNCwgMjM3LCAxNDksIDEwLCAxNCwgMjM3LCAxNDgsIDEwLCAxNCwgMjM3LCAxNDcsIDEwLCAxNCwgCi0gICAgMjM3LCAxNDYsIDEwLCAxNCwgMjM3LCAxNDUsIDEwLCAxNCwgMjM3LCAxNDQsIDEwLCAxNCwgMjM3LCAxNDMsIDEwLCAxNCwgCi0gICAgMjM3LCAxNDIsIDEwLCAxNCwgMjM3LCAxNDEsIDEwLCAxNCwgMjM3LCAxNDAsIDEwLCAxNCwgMjM3LCAxMzksIDEwLCAxNCwgCi0gICAgMjM3LCAxMzgsIDEwLCAxNCwgMjM3LCAxMzcsIDEwLCAxNCwgMjM3LCAxMzYsIDEwLCAxNCwgMjM3LCAxMzUsIDEwLCAxNCwgCi0gICAgMjM3LCAxMzQsIDEwLCAxNCwgMjM3LCAxMzMsIDEwLCAxNCwgMjM3LCAxMzIsIDEwLCAxNCwgMjM3LCAxMzEsIDEwLCAxNCwgCi0gICAgMjM3LCAxMzAsIDEwLCAxNCwgMjM3LCAxMjksIDEwLCAxNCwgMjM3LCAxMjgsIDEwLCAxNCwgMjM3LCAxMjcsIDEwLCAxNCwgCi0gICAgMjM3LCAxMjYsIDEwLCAxNCwgMjM3LCAxMjUsIDEwLCAxNCwgMjM3LCAxMjQsIDEwLCAxNCwgMjM3LCAxMjMsIDEwLCAxNCwgCi0gICAgMjM3LCAxMjIsIDEwLCAxNCwgMjM3LCAxMjEsIDEwLCAxNCwgMjM3LCAxMjAsIDEwLCAxNCwgMjM3LCAxMTksIDEwLCAxNCwgCi0gICAgMjM3LCAxMTgsIDEwLCAxNCwgMjM3LCAxMTcsIDEwLCAxNCwgMjM3LCAxMTYsIDEwLCAxNCwgMjM3LCAxMTUsIDEwLCAxNCwgCi0gICAgMjM3LCAxMTQsIDEwLCAxNCwgMjM3LCAxMTMsIDEwLCAxNCwgMjM3LCAxMTIsIDEwLCAxNCwgMjM3LCAxMTEsIDEwLCAxNCwgCi0gICAgMjM3LCAxMTAsIDEwLCAxNCwgMjM3LCAxMDksIDEwLCAxNCwgMjM3LCAxMDgsIDEwLCAxNCwgMjM3LCAxMDcsIDEwLCAxNCwgCi0gICAgMjM3LCAxMDYsIDEwLCAxNCwgMjM3LCAxMDUsIDEwLCAxNCwgMjM3LCAxMDQsIDEwLCAxNCwgMjM3LCAxMDMsIDEwLCAxNCwgCi0gICAgMjM3LCAxMDIsIDEwLCAxNCwgMjM3LCAxMDEsIDEwLCAxNCwgMjM3LCAxMDAsIDEwLCAxNCwgMjM3LCA5OSwgMTAsIDE0LCAKLSAgICAyMzcsIDk4LCAxMCwgMTQsIDIzNywgOTcsIDEwLCAxNCwgMjM3LCA5NiwgMTAsIDE0LCAyMzcsIDk1LCAxMCwgMTQsIDIzNywgCi0gICAgOTQsIDEwLCAxNCwgMjM3LCA5MywgMTAsIDE0LCAyMzcsIDkyLCAxMCwgMTQsIDIzNywgOTEsIDEwLCAxNCwgMjM3LCA5MCwgCi0gICAgMTAsIDE0LCAyMzcsIDg5LCAxMCwgMTQsIDIzNywgODgsIDEwLCAxNCwgMjM3LCA4NywgMTAsIDE0LCAyMzcsIDg2LCAxMCwgCi0gICAgMTQsIDIzNywgODUsIDEwLCAxNCwgMjM3LCA4NCwgMTAsIDE0LCAyMzcsIDgzLCAxMCwgMTQsIDIzNywgODIsIDEwLCAxNCwgCi0gICAgMjM3LCA4MSwgMTAsIDE0LCAyMzcsIDgwLCAxMCwgMTQsIDIzNywgNzksIDEwLCAxNCwgMjM3LCA3OCwgMTAsIDE0LCAyMzcsIAotICAgIDc3LCAxMCwgMTQsIDIzNywgNzYsIDEwLCAxNCwgMjM3LCA3NSwgMTAsIDE0LCAyMzcsIDc0LCAxMCwgMTQsIDIzNywgNzMsIAotICAgIDEwLCAxNCwgMjM3LCA3MiwgMTAsIDE0LCAyMzcsIDcxLCAxMCwgMTQsIDIzNywgNzAsIDEwLCAxNCwgMjM3LCA2OSwgMTAsIAotICAgIDE0LCAyMzcsIDY4LCAxMCwgMTQsIDIzNywgNjcsIDEwLCAxNCwgMjM3LCA2NiwgMTAsIDE0LCAyMzcsIDY1LCAxMCwgMTQsIAotICAgIDIzNywgNjQsIDEwLCAxNCwgMjM3LCA2MywgMTAsIDE0LCAyMzcsIDYyLCAxMCwgMTQsIDIzNywgNjEsIDEwLCAxNCwgMjM3LCAKLSAgICA2MCwgMTAsIDE0LCAyMzcsIDU5LCAxMCwgMTQsIDIzNywgNTgsIDEwLCAxNCwgMjM3LCA1NywgMTAsIDE0LCAyMzcsIDU2LCAKLSAgICAxMCwgMTQsIDIzNywgNTUsIDEwLCAxNCwgMjM3LCA1NCwgMTAsIDE0LCAyMzcsIDUzLCAxMCwgMTQsIDIzNywgNTIsIDEwLCAKLSAgICAxNCwgMjM3LCA1MSwgMTAsIDE0LCAyMzcsIDUwLCAxMCwgMTQsIDIzNywgNDksIDEwLCAxNCwgMjM3LCA0OCwgMTAsIDE0LCAKLSAgICAyMzcsIDQ3LCAxMCwgMTQsIDIzNywgNDYsIDEwLCAxNCwgMjM3LCA0NSwgMTAsIDE0LCAyMzcsIDQ0LCAxMCwgMTQsIDIzNywgCi0gICAgNDMsIDEwLCAxNCwgMjM3LCA0MiwgMTAsIDE0LCAyMzcsIDQxLCAxMCwgMTQsIDIzNywgNDAsIDEwLCAxNCwgMjM3LCAzOSwgCi0gICAgMTAsIDE0LCAyMzcsIDM4LCAxMCwgMTQsIDIzNywgMzcsIDEwLCAxNCwgMjM3LCAzNiwgMTAsIDE0LCAyMzcsIDM1LCAxMCwgCi0gICAgMTQsIDIzNywgMzQsIDEwLCAxNCwgMjM3LCAzMywgMTAsIDE0LCAyMzcsIDMyLCAxMCwgMTQsIDIzNywgMzEsIDEwLCAxNCwgCi0gICAgMjM3LCAzMCwgMTAsIDE0LCAyMzcsIDI5LCAxMCwgMTQsIDIzNywgMjgsIDEwLCAxNCwgMjM3LCAyNywgMTAsIDE0LCAyMzcsIAotICAgIDI2LCAxMCwgMTQsIDIzNywgMjUsIDEwLCAxNCwgMjM3LCAyNCwgMTAsIDE0LCAyMzcsIDIzLCAxMCwgMTQsIDIzNywgMjIsIAotICAgIDEwLCAxNCwgMjM3LCAyMSwgMTAsIDE0LCAyMzcsIDIwLCAxMCwgMTQsIDIzNywgMTksIDEwLCAxNCwgMjM3LCAxOCwgMTAsIAotICAgIDE0LCAyMzcsIDE3LCAxMCwgMTQsIDIzNywgMTYsIDEwLCAxNCwgMjM3LCAxNSwgMTAsIDE0LCAyMzcsIDE0LCAxMCwgMTQsIAotICAgIDIzNywgMTMsIDEwLCAxNCwgMjM3LCAxMiwgMTAsIDE0LCAyMzcsIDExLCAxMCwgMTQsIDIzNywgMTAsIDEwLCAxNCwgMjM3LCAKLSAgICA5LCAxMCwgMTQsIDIzNywgOCwgMTAsIDE0LCAyMzcsIDcsIDEwLCAxNCwgMjM3LCA2LCAxMCwgMTQsIDIzNywgNSwgMTAsIAotICAgIDE0LCAyMzcsIDQsIDEwLCAxNCwgMjM3LCAzLCAxMCwgMTQsIDIzNywgMiwgMTAsIDE0LCAyMzcsIDEsIDEwLCAxNCwgMjM3LCAKLSAgICAwLCAxMCwgMTQsIDIzNiwgMjU1LCAxMCwgMTQsIDIzNiwgMjU0LCAxMCwgMTQsIDIzNiwgMjUzLCAxMCwgMTQsIDIzNiwgCi0gICAgMjUyLCAxMCwgMTQsIDIzNiwgMjUxLCAxMCwgMTQsIDIzNiwgMjUwLCAxMCwgMTQsIDIzNiwgMjQ5LCAxMCwgMTQsIDIzNiwgCi0gICAgMjQ4LCAxMCwgMTQsIDIzNiwgMjQ3LCAxMCwgMTQsIDIzNiwgMjQ2LCAxMCwgMTQsIDIzNiwgMjQ1LCAxMCwgMTQsIDIzNiwgCi0gICAgMjQ0LCAxMCwgMTQsIDIzNiwgMjQzLCAxMCwgMTQsIDIzNiwgMjQyLCAxMCwgMTQsIDIzNiwgMjQxLCAxMCwgMTQsIDIzNiwgCi0gICAgMjQwLCAxMCwgMTQsIDIzNiwgMjM5LCAxMCwgMTQsIDIzNiwgMjM4LCAxMCwgMTQsIDIzNiwgMjM3LCAxMCwgMTQsIDIzNiwgCi0gICAgMjM2LCAxMCwgMTQsIDIzNiwgMjM1LCAxMCwgMTQsIDIzNiwgMjM0LCAxMCwgMTQsIDIzNiwgMjMzLCAxMCwgMTQsIDIzNiwgCi0gICAgMjMyLCAxMCwgMTQsIDIzNiwgMjMxLCAxMCwgMTQsIDIzNiwgMjMwLCAxMCwgMTQsIDIzNiwgMjI5LCAxMCwgMTQsIDIzNiwgCi0gICAgMjI4LCAxMCwgMTQsIDIzNiwgMjI3LCAxMCwgMTQsIDIzNiwgMjI2LCAxMCwgMTQsIDIzNiwgMjI1LCAxMCwgMTQsIDIzNiwgCi0gICAgMjI0LCAxMCwgMTQsIDIzNiwgMjIzLCAxMCwgMTQsIDIzNiwgMjIyLCAxMCwgMTQsIDIzNiwgMjIxLCAxMCwgMTQsIDIzNiwgCi0gICAgMjIwLCAxMCwgMTQsIDIzNiwgMjE5LCAxMCwgMTQsIDIzNiwgMjE4LCAxMCwgMTQsIDIzNiwgMjE3LCAxMCwgMTQsIDIzNiwgCi0gICAgMjE2LCAxMCwgMTQsIDIzNiwgMjE1LCAxMCwgMTQsIDIzNiwgMjE0LCAxMCwgMTQsIDIzNiwgMjEzLCAxMCwgMTQsIDIzNiwgCi0gICAgMjEyLCAxMCwgMTQsIDIzNiwgMjExLCAxMCwgMTQsIDIzNiwgMjEwLCAxMCwgMTQsIDIzNiwgMjA5LCAxMCwgMTQsIDIzNiwgCi0gICAgMjA4LCAxMCwgMTQsIDIzNiwgMjA3LCAxMCwgMTQsIDIzNiwgMjA2LCAxMCwgMTQsIDIzNiwgMjA1LCAxMCwgMTQsIDIzNiwgCi0gICAgMjA0LCAxMCwgMTQsIDIzNiwgMjAzLCAxMCwgMTQsIDIzNiwgMjAyLCAxMCwgMTQsIDIzNiwgMjAxLCAxMCwgMTQsIDIzNiwgCi0gICAgMjAwLCAxMCwgMTQsIDIzNiwgMTk5LCAxMCwgMTQsIDIzNiwgMTk4LCAxMCwgMTQsIDIzNiwgMTk3LCAxMCwgMTQsIDIzNiwgCi0gICAgMTk2LCAxMCwgMTQsIDIzNiwgMTk1LCAxMCwgMTQsIDIzNiwgMTk0LCAxMCwgMTQsIDIzNiwgMTkzLCAxMCwgMTQsIDIzNiwgCi0gICAgMTkyLCAxMCwgMTQsIDIzNiwgMTkxLCAxMCwgMTQsIDIzNiwgMTkwLCAxMCwgMTQsIDIzNiwgMTg5LCAxMCwgMTQsIDIzNiwgCi0gICAgMTg4LCAxMCwgMTQsIDIzNiwgMTg3LCAxMCwgMTQsIDIzNiwgMTg2LCAxMCwgMTQsIDIzNiwgMTg1LCAxMCwgMTQsIDIzNiwgCi0gICAgMTg0LCAxMCwgMTQsIDIzNiwgMTgzLCAxMCwgMTQsIDIzNiwgMTgyLCAxMCwgMTQsIDIzNiwgMTgxLCAxMCwgMTQsIDIzNiwgCi0gICAgMTgwLCAxMCwgMTQsIDIzNiwgMTc5LCAxMCwgMTQsIDIzNiwgMTc4LCAxMCwgMTQsIDIzNiwgMTc3LCAxMCwgMTQsIDIzNiwgCi0gICAgMTc2LCAxMCwgMTQsIDIzNiwgMTc1LCAxMCwgMTQsIDIzNiwgMTc0LCAxMCwgMTQsIDIzNiwgMTczLCAxMCwgMTQsIDIzNiwgCi0gICAgMTcyLCAxMCwgMTQsIDIzNiwgMTcxLCAxMCwgMTQsIDIzNiwgMTcwLCAxMCwgMTQsIDIzNiwgMTY5LCAxMCwgMTQsIDIzNiwgCi0gICAgMTY4LCAxMCwgMTQsIDIzNiwgMTY3LCAxMCwgMTQsIDIzNiwgMTY2LCAxMCwgMTQsIDIzNiwgMTY1LCAxMCwgMTQsIDIzNiwgCi0gICAgMTY0LCAxMCwgMTQsIDIzNiwgMTYzLCAxMCwgMTQsIDIzNiwgMTYyLCAxMCwgMTQsIDIzNiwgMTYxLCAxMCwgMTQsIDIzNiwgCi0gICAgMTYwLCAxMCwgMTQsIDIzNiwgMTU5LCAxMCwgMTQsIDIzNiwgMTU4LCAxMCwgMTQsIDIzNiwgMTU3LCAxMCwgMTQsIDIzNiwgCi0gICAgMTU2LCAxMCwgMTQsIDIzNiwgMTU1LCAxMCwgMTQsIDIzNiwgMTU0LCAxMCwgMTQsIDIzNiwgMTUzLCAxMCwgMTQsIDIzNiwgCi0gICAgMTUyLCAxMCwgMTQsIDIzNiwgMTUxLCAxMCwgMTQsIDIzNiwgMTUwLCAxMCwgMTQsIDIzNiwgMTQ5LCAxMCwgMTQsIDIzNiwgCi0gICAgMTQ4LCAxMCwgMTQsIDIzNiwgMTQ3LCAxMCwgMTQsIDIzNiwgMTQ2LCAxMCwgMTQsIDIzNiwgMTQ1LCAxMCwgMTQsIDIzNiwgCi0gICAgMTQ0LCAxMCwgMTQsIDIzNiwgMTQzLCAxMCwgMTQsIDIzNiwgMTQyLCAxMCwgMTQsIDIzNiwgMTQxLCAxMCwgMTQsIDIzNiwgCi0gICAgMTQwLCAxMCwgMTQsIDIzNiwgMTM5LCAxMCwgMTQsIDIzNiwgMTM4LCAxMCwgMTQsIDIzNiwgMTM3LCAxMCwgMTQsIDIzNiwgCi0gICAgMTM2LCAxMCwgMTQsIDIzNiwgMTM1LCAxMCwgMTQsIDIzNiwgMTM0LCAxMCwgMTQsIDIzNiwgMTMzLCAxMCwgMTQsIDIzNiwgCi0gICAgMTMyLCAxMCwgMTQsIDIzNiwgMTMxLCAxMCwgMTQsIDIzNiwgMTMwLCAxMCwgMTQsIDIzNiwgMTI5LCAxMCwgMTQsIDIzNiwgCi0gICAgMTI4LCAxMCwgMTQsIDIzNiwgMTI3LCAxMCwgMTQsIDIzNiwgMTI2LCAxMCwgMTQsIDIzNiwgMTI1LCAxMCwgMTQsIDIzNiwgCi0gICAgMTI0LCAxMCwgMTQsIDIzNiwgMTIzLCAxMCwgMTQsIDIzNiwgMTIyLCAxMCwgMTQsIDIzNiwgMTIxLCAxMCwgMTQsIDIzNiwgCi0gICAgMTIwLCAxMCwgMTQsIDIzNiwgMTE5LCAxMCwgMTQsIDIzNiwgMTE4LCAxMCwgMTQsIDIzNiwgMTE3LCAxMCwgMTQsIDIzNiwgCi0gICAgMTE2LCAxMCwgMTQsIDIzNiwgMTE1LCAxMCwgMTQsIDIzNiwgMTE0LCAxMCwgMTQsIDIzNiwgMTEzLCAxMCwgMTQsIDIzNiwgCi0gICAgMTEyLCAxMCwgMTQsIDIzNiwgMTExLCAxMCwgMTQsIDIzNiwgMTEwLCAxMCwgMTQsIDIzNiwgMTA5LCAxMCwgMTQsIDIzNiwgCi0gICAgMTA4LCAxMCwgMTQsIDIzNiwgMTA3LCAxMCwgMTQsIDIzNiwgMTA2LCAxMCwgMTQsIDIzNiwgMTA1LCAxMCwgMTQsIDIzNiwgCi0gICAgMTA0LCAxMCwgMTQsIDIzNiwgMTAzLCAxMCwgMTQsIDIzNiwgMTAyLCAxMCwgMTQsIDIzNiwgMTAxLCAxMCwgMTQsIDIzNiwgCi0gICAgMTAwLCAxMCwgMTQsIDIzNiwgOTksIDEwLCAxNCwgMjM2LCA5OCwgMTAsIDE0LCAyMzYsIDk3LCAxMCwgMTQsIDIzNiwgOTYsIAotICAgIDEwLCAxNCwgMjM2LCA5NSwgMTAsIDE0LCAyMzYsIDk0LCAxMCwgMTQsIDIzNiwgOTMsIDEwLCAxNCwgMjM2LCA5MiwgMTAsIAotICAgIDE0LCAyMzYsIDkxLCAxMCwgMTQsIDIzNiwgOTAsIDEwLCAxNCwgMjM2LCA4OSwgMTAsIDE0LCAyMzYsIDg4LCAxMCwgMTQsIAotICAgIDIzNiwgODcsIDEwLCAxNCwgMjM2LCA4NiwgMTAsIDE0LCAyMzYsIDg1LCAxMCwgMTQsIDIzNiwgODQsIDEwLCAxNCwgMjM2LCAKLSAgICA4MywgMTAsIDE0LCAyMzYsIDgyLCAxMCwgMTQsIDIzNiwgODEsIDEwLCAxNCwgMjM2LCA4MCwgMTAsIDE0LCAyMzYsIDc5LCAKLSAgICAxMCwgMTQsIDIzNiwgNzgsIDEwLCAxNCwgMjM2LCA3NywgMTAsIDE0LCAyMzYsIDc2LCAxMCwgMTQsIDIzNiwgNzUsIDEwLCAKLSAgICAxNCwgMjM2LCA3NCwgMTAsIDE0LCAyMzYsIDczLCAxMCwgMTQsIDIzNiwgNzIsIDcsIDQsIDI3LCAyNDQsIDEzMywgNywgNCwgCi0gICAgMjcsIDI0NCwgMTI5LCA3LCA0LCAyNywgMjQ0LCA4NCwgNywgNCwgMjcsIDI0NCwgMTMyLCA3LCA0LCAyNywgMjQ0LCAxMzEsIAotICAgIDcsIDQsIDI3LCAyMDAsIDIyMiwgOTQsIDIxNywgMTUzLCA3LCA0LCAyNywgMjE4LCAxNzAsIDE1MCwgNCwgMjcsIDIzMSwgCi0gICAgNjQsIDIyOCwgNDQsIDE1MCwgNCwgMjcsIDIzMSwgNjQsIDI0NSwgMjIxLCAxNTAsIDQsIDI3LCAyMzEsIDY0LCAyMzUsIAotICAgIDIzNCwgMTUwLCA0LCAyNywgMjEzLCAxODAsIDIyOCwgNDQsIDE1MCwgNCwgMjcsIDIzMSwgNjQsIDIxMSwgMTYwLCA5NCwgMSwgCi0gICAgMjEwLCAyMzQsIDIsIDI0MSwgMTY1LCA5NCwgMjI1LCAxNCwgMjM1LCA1NiwgMjE0LCAxMSwgOTQsIDI3LCAyMTEsIDYsIAotICAgIDIxMCwgMjM0LCAyMTAsIDIzNCwgMjI1LCAyNDMsIDk0LCAxLCAyNTQsIDE0NywgMjUzLCAxNzAsIDk0LCAxLCAyMTEsIDI0NywgCi0gICAgMjU0LCAxNzksIDk0LCAxLCAyMTEsIDI0NywgMjQ4LCAxOTcsIDk0LCAxLCAyMTEsIDI0NywgMjQxLCAyNDUsIDk0LCAxLCAKLSAgICAyMTEsIDI0NywgMjM1LCAwLCA5NCwgMSwgMjExLCAyNDcsIDIzMywgMTAwLCA5NCwgMSwgMjExLCAyNDcsIDQwLCAyMzEsIAotICAgIDcwLCA5NCwgMSwgMjExLCAyNDcsIDIyMywgNzAsIDk0LCAxLCAyMTEsIDI0NywgMjE3LCAzOSwgOTQsIDEsIDI1NCwgMTQ3LCAKLSAgICA5NiwgNTAsIDk0LCAxLCAyMjAsIDIzLCAyLCAyMjAsIDIzLCAyNDcsIDEyOCwgOTQsIDEsIDIyMCwgMjMsIDIsIDIxOSwgCi0gICAgMTYxLCAyNDcsIDEyOCwgOTQsIDEsIDIyMCwgMjMsIDIsIDI0OCwgMjE2LCAyMiwgMjIwLCAyMywgMjQ3LCAxMjgsIDk0LCAxLCAKLSAgICAyMjAsIDIzLCAyLCAyNDgsIDIxNiwgMjIsIDIxOSwgMTYxLCAyNDcsIDEyOCwgOTQsIDEsIDEwOSwgMiwgMjI1LCAyNDMsIAotICAgIDk0LCAxLCAxMDksIDIsIDIyNCwgNzksIDk0LCAxLCAxMDksIDIsIDIzMSwgMTc2LCA5NCwgMSwgMjUyLCAzNywgMiwgMjQ4LCAKLSAgICAyMTUsIDk0LCAxLCAyNDIsIDIwOSwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyNDgsIDE5OCwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAKLSAgICAyNDEsIDI0NiwgMiwgMjMxLCAxNzYsIDk0LCAxLCAyMTQsIDQsIDIsIDI0OCwgMjE1LCA5NCwgMSwgMjEwLCA5OCwgMiwgCi0gICAgMjQ4LCAyMTUsIDk0LCAxLCAyMTYsIDIzMiwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyMTAsIDIzNCwgMiwgMjQ4LCAyMTUsIDk0LCAKLSAgICAxLCA0MCwgMjM1LCAxLCAyLCAyNDgsIDIxNSwgOTQsIDEsIDIzNSwgMSwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyMzMsIDEwMSwgCi0gICAgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyMzEsIDcxLCAyLCAyNDgsIDIxNSwgOTQsIDEsIDIyNywgMTk5LCAyLCAyNDgsIDIxNSwgCi0gICAgOTQsIDEsIDIyMSwgMjUyLCAyLCAyNDgsIDIxNSwgOTQsIDEsIDQwLCAyMjUsIDIyNSwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAKLSAgICAyMjUsIDIyNSwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyMTUsIDE4MSwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyMjQsIDQzLCAyLCAKLSAgICAyNDgsIDIxNSwgOTQsIDEsIDIyMywgNzEsIDIsIDI0OCwgMjE1LCA5NCwgMSwgMjIwLCAyMywgMiwgMjQ4LCAyMTUsIDk0LCAKLSAgICAxLCAyMTcsIDQwLCAyLCAyNDgsIDIxNSwgOTQsIDEsIDIxNCwgNCwgMiwgMjQxLCA2OCwgOTQsIDEsIDI1MiwgMzcsIDIsIAotICAgIDIyMywgMTcyLCA5NCwgMSwgMjM1LCAxLCAyLCAyMjMsIDE3MiwgOTQsIDEsIDIyNSwgMjI1LCAyLCAyMjMsIDE3MiwgOTQsIAotICAgIDI3LCAxMDksIDIzMywgMTAwLCA5LCAxLCAxMDksIDIxMiwgNDcsIDUzLCAxNywgOSwgMSwgMTA5LCAyMTIsIDQ3LCA0MCwgCi0gICAgMTcsIDksIDEsIDI1MiwgNzMsIDUzLCAxNywgOSwgMSwgMjUyLCA3MywgNDAsIDE3LCA5LCAxLCAyNTIsIDczLCA2NSwgMTcsIAotICAgIDksIDEsIDI1MiwgNzMsIDE0NywgMTcsIDksIDEsIDIyNSwgMjA5LCA1MywgMTcsIDksIDEsIDIyNSwgMjA5LCA0MCwgMTcsIAotICAgIDksIDEsIDIyNSwgMjA5LCA2NSwgMTcsIDksIDEsIDIyNSwgMjA5LCAxNDcsIDE3LCA5LCAxLCAyNTIsIDYxLCA1MywgMTcsIAotICAgIDksIDEsIDI1MiwgNjEsIDQwLCAxNywgOSwgMSwgMjUyLCA2MSwgNjUsIDE3LCA5LCAxLCAyNTIsIDYxLCAxNDcsIDE3LCA5LCAKLSAgICAxLCAyMTUsIDE0OCwgNTMsIDE3LCA5LCAxLCAyMTUsIDE0OCwgNDAsIDE3LCA5LCAxLCAyMTUsIDE0OCwgNjUsIDE3LCA5LCAKLSAgICAxLCAyMTUsIDE0OCwgMTQ3LCAxNywgOSwgMSwgMjE3LCA3LCA1MywgMTcsIDksIDEsIDIxNywgNywgNDAsIDE3LCA5LCAxLCAKLSAgICAyMTcsIDcsIDY1LCAxNywgOSwgMSwgMjE3LCA3LCAxNDcsIDE3LCA5LCAxLCAyMTUsIDE1MCwgNTMsIDE3LCA5LCAxLCAyMTUsIAotICAgIDE1MCwgNDAsIDE3LCA5LCAxLCAyMTUsIDE1MCwgNjUsIDE3LCA5LCAxLCAyMTUsIDE1MCwgMTQ3LCAxNywgOSwgMSwgMjEzLCAKLSAgICAyNDksIDUzLCAxNywgOSwgMSwgMjEzLCAyNDksIDQwLCAxNywgOSwgMSwgMjEzLCAyNDksIDY1LCAxNywgOSwgMSwgMjEzLCAKLSAgICAyNDksIDE0NywgMTcsIDksIDEsIDIyNSwgMjA3LCA1MywgMTcsIDksIDEsIDIyNSwgMjA3LCA0MCwgMTcsIDksIDEsIDIyNSwgCi0gICAgMjA3LCA2NSwgMTcsIDksIDEsIDIyNSwgMjA3LCAxNDcsIDE3LCA5LCAxLCAyNDYsIDUyLCA1MywgMTcsIDksIDEsIDI0NiwgCi0gICAgNTIsIDQwLCAxNywgOSwgMSwgMjQ2LCA1MiwgNjUsIDE3LCA5LCAxLCAyNDYsIDUyLCAxNDcsIDE3LCA5LCAxLCAyMjcsIAotICAgIDE1OCwgNTMsIDE3LCA5LCAxLCAyMjcsIDE1OCwgNDAsIDE3LCA5LCAxLCAyMjcsIDE1OCwgNjUsIDE3LCA5LCAxLCAyMjcsIAotICAgIDE1OCwgMTQ3LCAxNywgOSwgMSwgMjE3LCAyOCwgNTMsIDE3LCA5LCAxLCAyMTcsIDI4LCA0MCwgMTcsIDksIDEsIDIxNywgCi0gICAgMjgsIDY1LCAxNywgOSwgMSwgMjE3LCAyOCwgMTQ3LCAxNywgOSwgMSwgMjE3LCAyNiwgNTMsIDE3LCA5LCAxLCAyMTcsIDI2LCAKLSAgICA0MCwgMTcsIDksIDEsIDIxNywgMjYsIDY1LCAxNywgOSwgMSwgMjE3LCAyNiwgMTQ3LCAxNywgOSwgMSwgMjQ4LCAxNDEsIAotICAgIDUzLCAxNywgOSwgMSwgMjQ4LCAxNDEsIDQwLCAxNywgOSwgMSwgMjQ4LCAyMTAsIDUzLCAxNywgOSwgMSwgMjQ4LCAyMTAsIAotICAgIDQwLCAxNywgOSwgMSwgMjQ2LCA3OSwgNTMsIDE3LCA5LCAxLCAyNDYsIDc5LCA0MCwgMTcsIDksIDEsIDI0OCwgMTM5LCA1MywgCi0gICAgMTcsIDksIDEsIDI0OCwgMTM5LCA0MCwgMTcsIDksIDEsIDIzNSwgMTI3LCA1MywgMTcsIDksIDEsIDIzNSwgMTI3LCA0MCwgCi0gICAgMTcsIDksIDEsIDIyMiwgMTc0LCA1MywgMTcsIDksIDEsIDIyMiwgMTc0LCA0MCwgMTcsIDksIDEsIDIzNCwgMTgxLCA1MywgCi0gICAgMTcsIDksIDEsIDIzNCwgMTgxLCA0MCwgMTcsIDksIDEsIDIzNCwgMTgxLCA2NSwgMTcsIDksIDEsIDIzNCwgMTgxLCAxNDcsIAotICAgIDE3LCA5LCAxLCAyNDMsIDEzMCwgNTMsIDE3LCA5LCAxLCAyNDMsIDEzMCwgNDAsIDE3LCA5LCAxLCAyNDMsIDEzMCwgNjUsIAotICAgIDE3LCA5LCAxLCAyNDMsIDEzMCwgMTQ3LCAxNywgOSwgMSwgMjQyLCAxMDksIDUzLCAxNywgOSwgMSwgMjQyLCAxMDksIDQwLCAKLSAgICAxNywgOSwgMSwgMjQyLCAxMDksIDY1LCAxNywgOSwgMSwgMjQyLCAxMDksIDE0NywgMTcsIDksIDEsIDIyOSwgOCwgNTMsIAotICAgIDE3LCA5LCAxLCAyMjksIDgsIDQwLCAxNywgOSwgMSwgMjI5LCA4LCA2NSwgMTcsIDksIDEsIDIyOSwgOCwgMTQ3LCAxNywgOSwgCi0gICAgMSwgMjI4LCA2OCwgMjQyLCAyMjYsIDUzLCAxNywgOSwgMSwgMjI4LCA2OCwgMjQyLCAyMjYsIDQwLCAxNywgOSwgMSwgMjIyLCAKLSAgICAyMTcsIDUzLCAxNywgOSwgMSwgMjIyLCAyMTcsIDQwLCAxNywgOSwgMSwgMjIyLCAyMTcsIDY1LCAxNywgOSwgMSwgMjIyLCAKLSAgICAyMTcsIDE0NywgMTcsIDksIDEsIDI0MSwgMjI2LCAyLCA3NywgNzIsIDUzLCAxNywgOSwgMSwgMjQxLCAyMjYsIDIsIDc3LCAKLSAgICA3MiwgNDAsIDE3LCA5LCAxLCAyNDEsIDIyNiwgMjQyLCAxNzksIDUzLCAxNywgOSwgMSwgMjQxLCAyMjYsIDI0MiwgMTc5LCAKLSAgICA0MCwgMTcsIDksIDEsIDI0MSwgMjI2LCAyNDIsIDE3OSwgNjUsIDE3LCA5LCAxLCAyNDEsIDIyNiwgMjQyLCAxNzksIDE0NywgCi0gICAgMTcsIDksIDEsIDI0MSwgMjI2LCAyNDcsIDE1MCwgNTMsIDE3LCA5LCAxLCAyNDEsIDIyNiwgMjQ3LCAxNTAsIDQwLCAxNywgCi0gICAgOSwgMSwgMjQxLCAyMjYsIDI0NywgMTUwLCA2NSwgMTcsIDksIDEsIDI0MSwgMjI2LCAyNDcsIDE1MCwgMTQ3LCAxNywgOSwgCi0gICAgMSwgNzcsIDI1MiwgMTQxLCA1MywgMTcsIDksIDEsIDc3LCAyNTIsIDE0MSwgNDAsIDE3LCA5LCAxLCA3NywgMjUyLCAxNDEsIAotICAgIDIsIDE4MiwgNzIsIDUzLCAxNywgOSwgMSwgNzcsIDI1MiwgMTQxLCAyLCAxODIsIDcyLCA0MCwgMTcsIDksIDE2LCA1OSwgCi0gICAgNDgsIDksIDE2LCA1OSwgNTEsIDksIDE2LCAxMTMsIDE3MCwgNDgsIDksIDE2LCAxMTMsIDE3MCwgNTEsIDksIDE2LCAxMzQsIAotICAgIDE3MCwgNDgsIDksIDE2LCAxMzQsIDE3MCwgNTEsIDksIDE2LCAxMzQsIDE3MCwgMjI1LCAxMCwgMjQ2LCAxMTIsIDQ4LCA5LCAKLSAgICAxNiwgMTM0LCAxNzAsIDIyNSwgMTAsIDI0NiwgMTEyLCA1MSwgOSwgMTYsIDI0NCwgMTksIDE3MCwgNDgsIDksIDE2LCAyNDQsIAotICAgIDE5LCAxNzAsIDUxLCA5LCAxNiwgNTIsIDY3LCAyNTIsIDE0OSwgNTEsIDksIDE2LCAxMTMsIDE3MCwgMjEzLCAxODksIDQ4LCAKLSAgICA5LCAxNiwgMTEzLCAxNzAsIDIxMywgMTg5LCA1MSwgOSwgMTYsIDIyMiwgMjM2LCA5LCAxNiwgNCwgMjE3LCA4MiwgNDgsIDksIAotICAgIDE2LCA0LCAyMTcsIDgyLCA1MSwgOSwgMSwgMjI5LCA4NSwgNTMsIDE3LCA5LCAxLCAyMjksIDg1LCA0MCwgMTcsIDksIDEsIAotICAgIDIyOSwgODUsIDY1LCAxNywgOSwgMSwgMjI5LCA4NSwgMTQ3LCAxNywgOSwgMSwgMTA0LCA1MywgMTcsIDksIDEsIDEwNCwgCi0gICAgNDAsIDE3LCA5LCAxLCAyMjYsIDIzOSwgNTMsIDE3LCA5LCAxLCAyMjYsIDIzOSwgNDAsIDE3LCA5LCAxLCAyMTAsIDIxMywgCi0gICAgNTMsIDE3LCA5LCAxLCAyMTAsIDIxMywgNDAsIDE3LCA5LCAxLCAxMDQsIDIsIDE4MiwgNzIsIDUzLCAxNywgOSwgMSwgMjE0LCAKLSAgICAwLCA1MywgMTcsIDksIDEsIDIxNCwgMCwgNDAsIDE3LCA5LCAxLCAyMzQsIDc5LCAyMjYsIDIzOSwgNTMsIDE3LCA5LCAxLCAKLSAgICAyMzQsIDc5LCAyMjYsIDIzOSwgNDAsIDE3LCA5LCAxLCAyMzQsIDc5LCAyMTAsIDIxMywgNTMsIDE3LCA5LCAxLCAyMzQsIAotICAgIDc5LCAyMTAsIDIxMywgNDAsIDE3LCA5LCAxLCAxNjAsIDUzLCAxNywgOSwgMSwgMTYwLCA0MCwgMTcsIDksIDEsIDE2MCwgCi0gICAgNjUsIDE3LCA5LCAxLCAxNjAsIDE0NywgMTcsIDksIDEsIDIxNCwgMjA3LCAyMzQsIDE5MiwgMjM0LCA3OSwgMTA5LCAyMzEsIAotICAgIDE5OCwgNjUsIDE3LCA5LCAxLCAyMTQsIDIwNywgMjM0LCAxOTIsIDIzNCwgNzksIDEwOSwgMjMxLCAxOTgsIDE0NywgMTcsIAotICAgIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMTA5LCA1MywgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMTA5LCA0MCwgCi0gICAgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMjU0LCAyNTMsIDUzLCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAKLSAgICAyNTQsIDI1MywgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDIxMiwgMzEsIDUzLCAxNywgOSwgMjcsIDc3LCAKLSAgICAyLCAxODIsIDcyLCAyLCAyMTIsIDMxLCA0MCwgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMTA0LCA1MywgMTcsIDksIAotICAgIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMTA0LCA0MCwgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMjI2LCAyMzksIAotICAgIDUzLCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAyMjYsIDIzOSwgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgCi0gICAgNzIsIDIsIDIxMCwgMjEzLCA1MywgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMjEwLCAyMTMsIDQwLCAxNywgOSwgCi0gICAgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAxNjAsIDUzLCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAxNjAsIDQwLCAKLSAgICAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAxNjAsIDY1LCAxNywgOSwgMjcsIDIxNCwgMjA3LCAyMzQsIDc5LCA3NywgCi0gICAgMiwgMTgyLCA3MiwgMiwgMTA5LCAyMzEsIDE5OCwgNTMsIDE3LCA5LCAyNywgMjE0LCAyMDcsIDIzNCwgNzksIDc3LCAyLCAKLSAgICAxODIsIDcyLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyMTQsIDIwNywgMjM0LCA3OSwgNzcsIDIsIDE4MiwgCi0gICAgNzIsIDIsIDEwOSwgMjMxLCAxOTgsIDY1LCAxNywgOSwgMSwgMjQ0LCAxNzYsIDc3LCA1MywgMTcsIDksIDEsIDI0NCwgMTc2LCAKLSAgICA3NywgNDAsIDE3LCA5LCAxLCAyNDQsIDE3NiwgNzcsIDY1LCAxNywgOSwgMSwgMjQ0LCAxNzYsIDc3LCAxNDcsIDE3LCA5LCAKLSAgICAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDE1MSwgNTMsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDEyMiwgNTMsIAotICAgIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDY2LCA1MywgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMTA5LCAKLSAgICAyMzEsIDE5OCwgNTMsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyNTIsIDYzLCAKLSAgICAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIDEyMiwgNTMsIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgMjM0LCAKLSAgICAxMzYsIDUzLCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIDY2LCA1MywgMTcsIDksIDI3LCAyNTIsIDYzLCAyLCAxMDksIDIzMSwgCi0gICAgMTk4LCA1MywgMTcsIDksIDI3LCAyNTIsIDYzLCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAxNTEsIDUzLCAKLSAgICAxNywgOSwgMjcsIDIxNywgOSwgMiwgMTIyLCA1MywgMTcsIDksIDI3LCAyMTcsIDksIDIsIDIzNCwgMTM2LCA1MywgMTcsIDksIAotICAgIDI3LCAyMTcsIDksIDIsIDY2LCA1MywgMTcsIDksIDI3LCAyMTcsIDksIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgCi0gICAgMjcsIDIxNywgOSwgMiwgNzcsIDUzLCAxNywgOSwgMjcsIDIxNiwgMTk0LCAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDIxNiwgCi0gICAgMTk0LCAyLCA2NiwgNTMsIDE3LCA5LCAyNywgMjE2LCAxOTQsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgMjcsIAotICAgIDIxNiwgMTk0LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMTUxLCAyLCAxMjIsIDUzLCAxNywgOSwgMjcsIDE1MSwgMiwgNjYsIAotICAgIDUzLCAxNywgOSwgMjcsIDEyMiwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCAxMjIsIDIsIDY2LCA1MywgMTcsIDksIDI3LCAKLSAgICAyMzQsIDEzNiwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCAyMzQsIDEzNiwgMiwgMTIyLCA1MywgMTcsIDksIDI3LCAyMzQsIAotICAgIDEzNiwgMiwgNjYsIDUzLCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAKLSAgICAxMjIsIDUzLCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAyMzQsIDEzNiwgNTMsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIAotICAgIDY2LCA1MywgMTcsIDksIDI3LCAyMjIsIDI5LCAyLCAxMjIsIDUzLCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDY2LCA1MywgCi0gICAgMTcsIDksIDI3LCAyNDgsIDIyNSwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCAyNDgsIDIyNSwgMiwgMTIyLCA1MywgMTcsIDksIAotICAgIDI3LCAyNDgsIDIyNSwgMiwgMjM0LCAxMzYsIDUzLCAxNywgOSwgMjcsIDI0OCwgMjI1LCAyLCA2NiwgNTMsIDE3LCA5LCAyNywgCi0gICAgMjE3LCA4MiwgMiwgMTIyLCA1MywgMTcsIDksIDI3LCAyMTcsIDgyLCAyLCA2NiwgNTMsIDE3LCA5LCAyNywgMjEwLCAxMTIsIAotICAgIDIsIDY2LCA1MywgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgNjYsIAotICAgIDUzLCAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCA2NiwgNTMsIDE3LCAKLSAgICA5LCAyNywgMjQ0LCAxNTEsIDIsIDE1MSwgNTMsIDE3LCA5LCAyNywgMjQ0LCAxNTEsIDIsIDEyMiwgNTMsIDE3LCA5LCAyNywgCi0gICAgMjQ0LCAxNTEsIDIsIDIzNCwgMTM2LCA1MywgMTcsIDksIDI3LCAyNDQsIDE1MSwgMiwgNjYsIDUzLCAxNywgOSwgMjcsIAotICAgIDI0NCwgMTUxLCAyLCAxMDksIDIzMSwgMTk4LCA1MywgMTcsIDksIDI3LCAyNDQsIDE1MSwgMiwgNzcsIDUzLCAxNywgOSwgCi0gICAgMjcsIDIyNCwgODUsIDIsIDEyMiwgNTMsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgNjYsIDUzLCAxNywgOSwgMjcsIDIyNCwgCi0gICAgODUsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgMjcsIDIyNCwgODUsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyMzUsIAotICAgIDEsIDIsIDEwOSwgNTMsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgMTIyLCAKLSAgICA1MywgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDIzNCwgMTM2LCA1MywgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDIzMywgMTA5LCAKLSAgICA1MywgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDY2LCA1MywgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDEwOSwgMjMxLCAxOTgsIAotICAgIDUzLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgNzcsIDUzLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAxNTEsIDUzLCAxNywgOSwgCi0gICAgMjcsIDIzMywgMTA5LCAyLCAxMjIsIDUzLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAyMzQsIDEzNiwgNTMsIDE3LCA5LCAKLSAgICAyNywgMjMzLCAxMDksIDIsIDY2LCA1MywgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTA5LCAyMzEsIDE5OCwgNTMsIDE3LCAKLSAgICA5LCAyNywgMjMzLCAxMDksIDIsIDc3LCA1MywgMTcsIDksIDI3LCA2NiwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCA2NiwgMiwgCi0gICAgMTIyLCA1MywgMTcsIDksIDI3LCA2NiwgMiwgMjM0LCAxMzYsIDUzLCAxNywgOSwgMjcsIDY2LCAyLCA2NiwgNTMsIDE3LCA5LCAKLSAgICAyNywgNjYsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgMjcsIDY2LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjI4LCAKLSAgICA2OCwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAxMjIsIDUzLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIAotICAgIDIzNCwgMTM2LCA1MywgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCA2NiwgNTMsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgMTA5LCAKLSAgICAyMzEsIDE5OCwgNTMsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgNzcsIDUzLCAxNywgOSwgMjcsIDI0MSwgMjI2LCAyLCAxNTEsIAotICAgIDUzLCAxNywgOSwgMjcsIDI0MSwgMjI2LCAyLCA2NiwgNTMsIDE3LCA5LCAyNywgMjQxLCAyMjYsIDIsIDEwOSwgMjMxLCAKLSAgICAxOTgsIDUzLCAxNywgOSwgMjcsIDI0MSwgMjI2LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgNzcsIDIsIDE1MSwgNTMsIDE3LCAKLSAgICA5LCAyNywgNzcsIDIsIDEyMiwgNTMsIDE3LCA5LCAyNywgNzcsIDIsIDIzNCwgMTM2LCA1MywgMTcsIDksIDI3LCA3NywgMiwgCi0gICAgNjYsIDUzLCAxNywgOSwgMjcsIDc3LCAyLCAxMDksIDIzMSwgMTk4LCA1MywgMTcsIDksIDI3LCA3NywgMiwgNzcsIDUzLCAKLSAgICAxNywgOSwgMjcsIDIxNiwgMjA0LCAyLCAyMTgsIDI0LCAxMDksIDUzLCAxNywgOSwgMjcsIDIyMywgOTksIDIsIDIxOCwgMjQsIAotICAgIDEwOSwgNTMsIDE3LCA5LCAyNywgMTA5LCAyMzEsIDE5OCwgMiwgMjE4LCAyNCwgMTA5LCA1MywgMTcsIDksIDI3LCAyMjAsIAotICAgIDk2LCAyLCAyNDgsIDE5MSwgNTMsIDE3LCA5LCAyNywgMjIwLCA5NiwgMiwgMjM0LCAyMTAsIDUzLCAxNywgOSwgMjcsIDIyMCwgCi0gICAgOTYsIDIsIDI0NCwgMTc0LCA1MywgMTcsIDksIDI3LCAyMjAsIDk2LCAyLCAyNDgsIDE5MywgNTMsIDE3LCA5LCAyNywgMjIwLCAKLSAgICA5NiwgMiwgMjM0LCAyMTIsIDUzLCAxNywgOSwgMjcsIDIyMCwgOTYsIDIsIDIxOCwgMjQsIDEwOSwgNTMsIDE3LCA5LCAyNywgCi0gICAgNzcsIDIsIDE4MiwgNzIsIDIsIDIyMywgOTksIDQwLCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAyMTAsIDEwOSwgCi0gICAgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgCi0gICAgMjI4LCA2OCwgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIAotICAgIDc3LCAyLCAxODIsIDcyLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgMjIzLCA5OSwgNDAsIDE3LCA5LCAyNywgCi0gICAgMjUyLCA2MywgMiwgMjEwLCAxMDksIDQwLCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyNTIsIAotICAgIDYzLCAyLCAyMjgsIDY4LCA0MCwgMTcsIDksIDI3LCAyNTIsIDYzLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAKLSAgICAyNTIsIDYzLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAyMjMsIDk5LCA0MCwgMTcsIDksIDI3LCAyMTcsIDksIAotICAgIDIsIDIxMCwgMTA5LCA0MCwgMTcsIDksIDI3LCAyMTcsIDksIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyMTcsIDksIDIsIDIyOCwgCi0gICAgNjgsIDQwLCAxNywgOSwgMjcsIDIxNywgOSwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAKLSAgICA3NywgNDAsIDE3LCA5LCAyNywgMjE2LCAxOTQsIDIsIDIyMywgOTksIDQwLCAxNywgOSwgMjcsIDIxNiwgMTk0LCAyLCAyMTAsIAotICAgIDEwOSwgNDAsIDE3LCA5LCAyNywgMjE2LCAxOTQsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyMTYsIDE5NCwgMiwgMjI4LCA2OCwgCi0gICAgNDAsIDE3LCA5LCAyNywgMjE2LCAxOTQsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDIxNiwgMTk0LCAyLCAKLSAgICA3NywgNDAsIDE3LCA5LCAyNywgMjQ0LCAxNTEsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDI0NCwgMTUxLCAKLSAgICAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjI0LCA4NSwgCi0gICAgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgMTA5LCA0MCwgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDIzMywgMTA5LCAKLSAgICA0MCwgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDEwOSwgMjMxLCAxOTgsIAotICAgIDQwLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCA2NiwgNDAsIDE3LCA5LCAKLSAgICAyNywgMjMzLCAxMDksIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCA3NywgNDAsIDE3LCAKLSAgICA5LCAyNywgNjYsIDIsIDEwOSwgNDAsIDE3LCA5LCAyNywgNjYsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAKLSAgICAyMjMsIDk5LCA0MCwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAyMTAsIDEwOSwgNDAsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgCi0gICAgNjYsIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDIyOCwgNjgsIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDEwOSwgCi0gICAgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAxMDksIDIzMSwgMTk4LCAyLCAKLSAgICAyMTgsIDI0LCAxMDksIDQwLCAxNywgOSwgMjcsIDc3LCAyLCAyMjMsIDk5LCA0MCwgMTcsIDksIDI3LCA3NywgMiwgMjEwLCAKLSAgICAxMDksIDQwLCAxNywgOSwgMjcsIDc3LCAyLCA2NiwgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDIyOCwgNjgsIDQwLCAxNywgOSwgCi0gICAgMjcsIDc3LCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCA3NywgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDc3LCAyLCAKLSAgICAxODIsIDcyLCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIAotICAgIDc3LCAyLCAxODIsIDcyLCAyLCAyMzQsIDEzNiwgNjUsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDY2LCA2NSwgCi0gICAgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMjQxLCAyMjYsIDY1LCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIDE1MSwgCi0gICAgNjUsIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgMTIyLCA2NSwgMTcsIDksIDI3LCAyNTIsIDYzLCAyLCAyMzQsIDEzNiwgNjUsIAotICAgIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIDI0MSwgMjI2LCA2NSwgMTcsIAotICAgIDksIDI3LCAyMTcsIDksIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIDIxNywgCi0gICAgOSwgMiwgMjM0LCAxMzYsIDY1LCAxNywgOSwgMjcsIDIxNywgOSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIxNywgOSwgMiwgCi0gICAgMjQxLCAyMjYsIDY1LCAxNywgOSwgMjcsIDIxNiwgMTk0LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMTUxLCAyLCAxMjIsIDY1LCAKLSAgICAxNywgOSwgMjcsIDE1MSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDEyMiwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAxMjIsIDIsIAotICAgIDY2LCA2NSwgMTcsIDksIDI3LCAyMzQsIDEzNiwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAyMzQsIDEzNiwgMiwgNjYsIDY1LCAKLSAgICAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAxMjIsIDY1LCAxNywgOSwgCi0gICAgMjcsIDIyMSwgMTY5LCAyLCAyMzQsIDEzNiwgNjUsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAKLSAgICAyMjIsIDI5LCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDIzNCwgMTM2LCA2NSwgMTcsIDksIDI3LCAyMjIsIAotICAgIDI5LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIAotICAgIDEyMiwgNjUsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDIzNCwgMTM2LCA2NSwgMTcsIDksIDI3LCAyNDgsIDIyNSwgMiwgCi0gICAgNjYsIDY1LCAxNywgOSwgMjcsIDIxNywgODIsIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgMjEwLCAxMTIsIDIsIDY2LCA2NSwgCi0gICAgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgNjYsIDY1LCAxNywgOSwgCi0gICAgMjcsIDI0MiwgMjUyLCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjQ0LCAKLSAgICAxNTEsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjQ0LCAxNTEsIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgMjQ0LCAxNTEsIDIsIAotICAgIDIzNCwgMTM2LCA2NSwgMTcsIDksIDI3LCAyNDQsIDE1MSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIyNCwgODUsIDIsIDEyMiwgCi0gICAgNjUsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgMTUxLCA2NSwgMTcsIDksIAotICAgIDI3LCAyMzUsIDEsIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCAyMzQsIDEzNiwgNjUsIDE3LCA5LCAyNywgCi0gICAgMjM1LCAxLCAyLCAyMzMsIDEwOSwgNjUsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjMzLCAKLSAgICAxMDksIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIAotICAgIDIzNCwgMTM2LCA2NSwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAKLSAgICAyNDEsIDIyNiwgNjUsIDE3LCA5LCAyNywgNjYsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgNjYsIDIsIDEyMiwgNjUsIDE3LCAKLSAgICA5LCAyNywgNjYsIDIsIDIzNCwgMTM2LCA2NSwgMTcsIDksIDI3LCA2NiwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIyOCwgNjgsIAotICAgIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgMTIyLCA2NSwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAyMzQsIAotICAgIDEzNiwgNjUsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDI0MSwgMjI2LCAKLSAgICA2NSwgMTcsIDksIDI3LCAyNDEsIDIyNiwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAyNDEsIDIyNiwgMiwgNjYsIDY1LCAxNywgCi0gICAgOSwgMjcsIDI0MSwgMjI2LCAyLCAyMTgsIDI0LCAxMDksIDY1LCAxNywgOSwgMjcsIDc3LCAyLCAxNTEsIDY1LCAxNywgOSwgCi0gICAgMjcsIDc3LCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIDc3LCAyLCAyMzQsIDEzNiwgNjUsIDE3LCA5LCAyNywgNzcsIDIsIDY2LCAKLSAgICA2NSwgMTcsIDksIDI3LCA3NywgMiwgMjQxLCAyMjYsIDY1LCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCA2NiwgCi0gICAgMTQ3LCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAyNDEsIDIyNiwgMTQ3LCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIAotICAgIDY2LCAxNDcsIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgMjQxLCAyMjYsIDE0NywgMTcsIDksIDI3LCAyMTcsIDksIDIsIDY2LCAKLSAgICAxNDcsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAyNDEsIDIyNiwgMTQ3LCAxNywgOSwgMjcsIDIxNiwgMTk0LCAyLCA2NiwgCi0gICAgMTQ3LCAxNywgOSwgMjcsIDIxNiwgMTk0LCAyLCAyNDEsIDIyNiwgMTQ3LCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCA2NiwgCi0gICAgMTQ3LCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAyNDEsIDIyNiwgMTQ3LCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDY2LCAKLSAgICAxNDcsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMjQxLCAyMjYsIDE0NywgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDIzMywgCi0gICAgMTA5LCAxNDcsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCA2NiwgMTQ3LCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCA2NiwgMTQ3LCAKLSAgICAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDY2LCAxNDcsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgMjQxLCAyMjYsIDE0NywgMTcsIAotICAgIDksIDI3LCA3NywgMiwgNjYsIDE0NywgMTcsIDksIDI3LCA3NywgMiwgMjQxLCAyMjYsIDE0NywgMTcsIDksIDI3LCAyMjAsIAotICAgIDk2LCAyLCAyNDQsIDE3NCwgMTQ3LCAxNywgOSwgMjcsIDIyMCwgOTYsIDIsIDI0OCwgMTkzLCAxNDcsIDE3LCA5LCAyNywgCi0gICAgMjIwLCA5NiwgMiwgMjM0LCAyMTIsIDE0NywgMTcsIDksIDI3LCAyMTcsIDgyLCAyLCAxMDksIDIzMSwgMTk4LCA1MywgMTcsIAotICAgIDksIDI3LCAyMTcsIDgyLCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjU0LCAyMDYsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgCi0gICAgOSwgMjcsIDI1NCwgMjA2LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjQyLCAyNTIsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAKLSAgICAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDEwOSwgMjMxLCAxOTgsIAotICAgIDUzLCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMTA5LCAyMzEsIDE5OCwgCi0gICAgNTMsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgNzcsIDUzLCAxNywgOSwgMjcsIDEyMiwgMiwgMTA5LCAyMzEsIDE5OCwgNTMsIAotICAgIDE3LCA5LCAyNywgMTIyLCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMTUxLCAyLCAxMDksIDIzMSwgMTk4LCA1MywgMTcsIDksIAotICAgIDI3LCAxNTEsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyMzQsIDEzNiwgMiwgMTA5LCAyMzEsIDE5OCwgNTMsIDE3LCA5LCAyNywgCi0gICAgMjM0LCAxMzYsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyMjIsIDI5LCAyLCAxMDksIDIzMSwgMTk4LCA1MywgMTcsIDksIDI3LCAKLSAgICAyMjIsIDI5LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgMjcsIAotICAgIDI0OCwgMjI1LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCAyMjAsIDYyLCAKLSAgICAyLCAxMjIsIDUzLCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDIzNCwgMTM2LCA1MywgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAKLSAgICA2NiwgNTMsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMjIzLCA5OSwgNTMsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDIyMywgCi0gICAgOTksIDUzLCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDIyMywgOTksIDUzLCAxNywgOSwgMjcsIDI0OCwgMjI1LCAyLCAyMjMsIAotICAgIDk5LCA1MywgMTcsIDksIDI3LCAyMTcsIDgyLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyMTcsIDgyLCAyLCAKLSAgICA3NywgNDAsIDE3LCA5LCAyNywgMjU0LCAyMDYsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDI1NCwgMjA2LCAKLSAgICAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjQyLCAyNTIsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDI0MiwgCi0gICAgMjUyLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIAotICAgIDIyMSwgMTY5LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgCi0gICAgMjIwLCA2MiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDEyMiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMTIyLCAKLSAgICAyLCA3NywgNDAsIDE3LCA5LCAyNywgMTUxLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAxNTEsIDIsIDc3LCAKLSAgICA0MCwgMTcsIDksIDI3LCAyMzQsIDEzNiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjM0LCAxMzYsIDIsIAotICAgIDc3LCA0MCwgMTcsIDksIDI3LCAyMjIsIDI5LCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyMjIsIDI5LCAyLCAKLSAgICA3NywgNDAsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDI0OCwgMjI1LCAKLSAgICAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMTUxLCA0MCwgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAxMjIsIAotICAgIDQwLCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDIzNCwgMTM2LCA0MCwgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCA2NiwgNDAsIAotICAgIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMjIzLCA5OSwgNDAsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDIyMywgOTksIDQwLCAKLSAgICAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDIyMywgOTksIDQwLCAxNywgOSwgMjcsIDI0OCwgMjI1LCAyLCAyMjMsIDk5LCA0MCwgCi0gICAgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDEyMiwgNjUsIDE3LCA5LCAKLSAgICAyNywgMjIwLCA2MiwgMiwgMjM0LCAxMzYsIDY1LCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAKLSAgICAyMjEsIDE2OSwgMiwgMjQxLCAyMjYsIDY1LCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDI0MSwgMjI2LCA2NSwgMTcsIDksIAotICAgIDI3LCAyMTcsIDgyLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDE1MSwgMTQ3LCAxNywgOSwgMjcsIDIyMSwgCi0gICAgMTY5LCAyLCAxMjIsIDE0NywgMTcsIDksIDI3LCAyMjEsIDE2OSwgMiwgMjM0LCAxMzYsIDE0NywgMTcsIDksIDI3LCAyMjAsIAotICAgIDYyLCAyLCAxNTEsIDE0NywgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAxMjIsIDE0NywgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAKLSAgICAyMzQsIDEzNiwgMTQ3LCAxNywgOSwgMjcsIDIxNywgODIsIDIsIDY2LCAxNDcsIDE3LCA5LCAyNywgMjEwLCAxMTIsIDIsIAotICAgIDY2LCAxNDcsIDE3LCA5LCAyNywgMTA5LCAyLCAyNDQsIDE3MiwgNDAsIDE3LCA5LCAyNywgMTA5LCAyLCAyNDQsIDE3MiwgCi0gICAgNTMsIDE3LCAyMjYsIDE1MCwgNDMsIDIyNiwgNywgMjI2LCAxNTAsIDQ0LCAyMjYsIDcsIDksIDI3LCAyMTcsIDksIDIsIAotICAgIDE1MSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIxNywgOSwgMiwgMTIyLCAyLCAxNTEsIDQwLCAxNywgOSwgMjcsIDIxNywgOSwgCi0gICAgMiwgMTIyLCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDIxNywgOSwgMiwgMTIyLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjE3LCAKLSAgICA5LCAyLCAyMzQsIDEzNiwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIxNywgOSwgMiwgNjYsIDIsIDE1MSwgNjUsIDE3LCA5LCAKLSAgICAyNywgMjE3LCA5LCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIDksIDI3LCAyMTcsIDksIDIsIDY2LCAyLCAyMzQsIDEzNiwgNjUsIAotICAgIDE3LCA5LCAyNywgMTUxLCAyLCA2NiwgMiwgMTIyLCA0MCwgMTcsIDksIDI3LCAxNTEsIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgCi0gICAgOSwgMjcsIDEyMiwgMiwgNjYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAxMjIsIDIsIDY2LCAyLCAxMDksIDIzMSwgMTk4LCAKLSAgICA0MCwgMTcsIDksIDI3LCAyMjEsIDE2OSwgMiwgMTIyLCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAxNTEsIAotICAgIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDE1MSwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgCi0gICAgMjIxLCAxNjksIDIsIDY2LCAyLCAxMjIsIDQwLCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIAotICAgIDksIDI3LCAyMjEsIDE2OSwgMiwgNjYsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDY2LCAyLCA2NiwgCi0gICAgNDAsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjIyLCAyOSwgMiwgMTIyLCAyLCAKLSAgICAxMjIsIDQwLCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDEyMiwgMiwgMTIyLCA2NSwgMTcsIDksIDI3LCAyMjIsIDI5LCAyLCAKLSAgICA2NiwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDEyMiwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIyMCwgNjIsIAotICAgIDIsIDEyMiwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDE1MSwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIyMCwgCi0gICAgNjIsIDIsIDY2LCAyLCAyMzQsIDEzNiwgNDAsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgNjYsIDIsIDIzNCwgMTM2LCA2NSwgCi0gICAgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDY2LCAyLCA2NiwgCi0gICAgNjUsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDEyMiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjQ4LCAKLSAgICAyMjUsIDIsIDIzNCwgMTM2LCAyLCA2NiwgNDAsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDIzNCwgMTM2LCAyLCA2NiwgNjUsIAotICAgIDE3LCA5LCAyNywgMjE3LCA4MiwgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCA5LCAyNywgMjE3LCA4MiwgMiwgNjYsIDIsIDEyMiwgCi0gICAgNjUsIDE3LCA5LCAyNywgMjE3LCA4MiwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyMTcsIDgyLCAyLCA2NiwgMiwgCi0gICAgNzcsIDQwLCAxNywgOSwgMjcsIDI1NCwgMjA2LCAyLCAxNTEsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgCi0gICAgNjYsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyNTQsIAotICAgIDIwNiwgMiwgNjYsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCA2NiwgMiwgNjYsIDQwLCAKLSAgICAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCA2NiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCA2NiwgMiwgCi0gICAgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjQ0LCAxNTEsIDIsIDIzNCwgMTM2LCAyLCA2NiwgNDAsIDE3LCA5LCAKLSAgICAyNywgMjQ0LCAxNTEsIDIsIDIzNCwgMTM2LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgNjYsIDIsIDEyMiwgCi0gICAgNDAsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTIyLCAyLCAKLSAgICA2NiwgNDAsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDEyMiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAKLSAgICAxMjIsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAxNTEsIDIsIDE1MSwgNjUsIDE3LCAKLSAgICA5LCAyNywgMjMzLCAxMDksIDIsIDE1MSwgMiwgMTUxLCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMjM0LCAxMzYsIDIsIAotICAgIDY2LCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMjM0LCAxMzYsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyMzMsIDEwOSwgCi0gICAgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIDY2LCAKLSAgICAyLCAxMjIsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgNjYsIDIsIDEyMiwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDY2LCAyLCAKLSAgICAxMjIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCA2NiwgMiwgMTUxLCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIDY2LCAyLCAxNTEsIAotICAgIDIsIDY2LCA2NSwgMTcsIDksIDI3LCA2NiwgMiwgMjM0LCAxMzYsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgNjYsIDIsIDIzNCwgCi0gICAgMTM2LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgNjYsIDIsIDE1MSwgMiwgMjM0LCAxMzYsIDY1LCAxNywgOSwgMjcsIDI0MSwgCi0gICAgMjI2LCAyLCA2NiwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAyNDEsIDIyNiwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAKLSAgICAyMjgsIDY4LCAyLCAxMjIsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAxMjIsIDIsIDEwOSwgMjMxLCAxOTgsIAotICAgIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDE1MSwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDE1MSwgMiwgCi0gICAgNjYsIDY1LCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDE1MSwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjI4LCAKLSAgICA2OCwgMiwgNjYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCA2NiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIAotICAgIDE3LCA5LCAyNywgNzcsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCA5LCAKLSAgICAyNywgMjUyLCA2MywgMiwgMjM0LCAxMzYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMTcsIDksIDIsIDE1MSwgMiwgNzcsIAotICAgIDQwLCAxNywgOSwgMjcsIDIxNywgOSwgMiwgMTUxLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyMTcsIDksIAotICAgIDIsIDIzNCwgMTM2LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAyMzQsIDEzNiwgMiwgMTA5LCAyMzEsIDE5OCwgCi0gICAgNDAsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCA2NiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIxNywgOSwgMiwgNjYsIDIsIAotICAgIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDE1MSwgMiwgNjYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAxNTEsIDIsIAotICAgIDEyMiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMTUxLCAyLCA2NiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIAotICAgIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDIzNCwgMTM2LCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyMjIsIAotICAgIDI5LCAyLCAxMjIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAxMjIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAKLSAgICAyNDgsIDIyNSwgMiwgMTIyLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDE1MSwgMiwgNzcsIDQwLCAxNywgCi0gICAgOSwgMjcsIDIzMywgMTA5LCAyLCA2NiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDc3LCAyLCAxMjIsIDIsIDc3LCA0MCwgMTcsIAotICAgIDksIDI3LCA3NywgMiwgMTUxLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDY2LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgCi0gICAgNjYsIDIsIDY2LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgNjYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAKLSAgICAyMjgsIDY4LCAyLCAxMjIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMjQsIDg1LCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIDksIAotICAgIDI3LCAyMzMsIDEwOSwgMiwgMTIyLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjU0LCAyMDYsIDIsIDY2LCAyLCA3NywgNDAsIAotICAgIDE3LCA5LCAyNywgMjM1LCAxLCAyLCA2NiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDE1MSwgMiwgMTIyLCAKLSAgICA2NSwgMTcsIDksIDI3LCA2NiwgMiwgMjM0LCAxMzYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTUxLCAKLSAgICAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAKLSAgICAxNTEsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAxNTEsIDIsIDEyMiwgNDAsIDE3LCA5LCAyNywgMTUxLCAKLSAgICAyLCAxMjIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAxMjIsIDIsIDE1MSwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDY2LCAyLCAKLSAgICAxNTEsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyNDQsIDE1MSwgMiwgNjYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyNTIsIAotICAgIDYzLCAyLCAxMjIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgCi0gICAgMjU0LCAyMDYsIDIsIDE1MSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCA5LCAKLSAgICAyNywgMjIxLCAxNjksIDIsIDIzNCwgMTM2LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgMTUxLCAyLCA3NywgCi0gICAgNDAsIDE3LCA5LCAyNywgMjIyLCA2LCAyMTQsIDEyOCwgMjUzLCAyNDYsIDIzNCwgMTAsIDIxOCwgMTMyLCA1LCA1MywgMTcsIAotICAgIDksIDI3LCAyMjQsIDgxLCAyMTQsIDEyOCwgMjUzLCAyNDYsIDIzNCwgMTAsIDIxOCwgMTMyLCA1LCA1MywgMTcsIDksIDI3LCAKLSAgICAyNTQsIDE2MiwgNTMsIDE3LCA5LCAyNywgMjU0LCAxOTIsIDUzLCAxNywgOSwgMjcsIDIzMCwgMTU4LCA1MywgMTcsIDksIAotICAgIDI3LCAyMjIsIDcsIDUzLCAxNywgOSwgMjcsIDIyMywgMTQ2LCA1MywgMTcsIDksIDI3LCAyNTQsIDE4MSwgNTMsIDE3LCA5LCAKLSAgICAyNywgMjEyLCA0OSwgNTMsIDE3LCA5LCAyNywgMjIyLCA2LCA1MywgMTcsIDksIDI3LCAyMjIsIDUsIDI1NCwgMTgxLCAyMTIsIAotICAgIDQ4LCA5LCAyNywgMjM1LCAxNDAsIDIyMywgMzcsIDUwLCA5LCAyNywgMjUxLCAyMzgsIDI1NCwgNDcsIDI1NCwgNDgsIDQ1LCAKLSAgICAyMjEsIDE1OCwgNDUsIDIyMSwgNDcsIDQ1LCAyMjAsIDIzNSwgNDUsIDIyMCwgMjI0LCA0NSwgMjIwLCAyMTMsIDQ1LCAyMjAsIAotICAgIDIwMiwgNDUsIDIyMCwgMTkxLCA0NSwgMjIwLCAxODAsIDQ1LCAyMjAsIDE2OSwgNDUsIDIyMSwgMTU3LCA0NSwgMjIxLCAKLSAgICAxNDYsIDQ1LCAyMjEsIDEzNSwgNDUsIDIyMSwgMTI0LCA0NSwgMjIxLCAxMTMsIDQ1LCAyMjEsIDEwMiwgNDUsIDIyMSwgOTEsIAotICAgIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDI0OSwgMjI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAxMTAsIDI0OSwgCi0gICAgMjI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAxMTAsIDI0MywgMjM2LCAyMTgsIDEzMSwgMjI0LCAxOTcsIDI0NCwgCi0gICAgMjgsIDMxLCA2NywgMjQ5LCAyMzQsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDIyMCwgMTUyLCAyMjQsIDE5NywgMjQ0LCAKLSAgICAyOCwgMzEsIDY3LCAyNDUsIDM5LCA3OSwgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgMjI0LCAxNiwgNzksIDIyNCwgCi0gICAgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDQzLCA3MSwgMjMzLCAyNiwgMTI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAKLSAgICA0NCwgNzEsIDIzMywgMjYsIDI1MSwgMTY0LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAyMDMsIDI0NSwgMTcxLCAzOCwgCi0gICAgMjcsIDQzLCAyNDIsIDM0LCAzOCwgMjcsIDQ0LCAyNDIsIDM0LCAzOCwgNTIsIDIxNiwgOTAsIDQzLCAyNDIsIDM0LCAzOCwgCi0gICAgNTIsIDIxNiwgOTAsIDQ0LCAyNDIsIDM0LCAzOCwgMjMxLCAyMzgsIDQzLCAyNDIsIDM0LCAzOCwgMjMxLCAyMzgsIDQ0LCAKLSAgICAyNDIsIDM0LCAzOCwgMjQ5LCAyMDUsIDIzMSwgMjM3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAxMTMsIDU5LCAyMzMsIAotICAgIDYyLCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAyNDUsIDE2OCwgMjQ4LCAxNjQsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgCi0gICAgNjcsIDI0NSwgMTU5LCAyNDgsIDE2NCwgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgMTIxLCAyMzIsIDIxOSwgMjI0LCAKLSAgICAxOTcsIDI0NCwgMjgsIDMxLCA2NywgMjEyLCAzMiwgMTIxLCAyMzIsIDIxOSwgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgCi0gICAgNDMsIDIyNiwgNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDQsIDIyNiwgNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCAKLSAgICA2NywgNDMsIDI0OSwgMTA3LCAxMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDQ0LCAyNDksIDEwNywgMTI3LCAyMjQsIAotICAgIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCA0MywgMjE2LCA3LCAyMjAsIDU1LCAxMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgCi0gICAgNjcsIDQ0LCAyMTYsIDcsIDIyMCwgNTUsIDEyNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDMsIDg1LCAyMzMsIDI2LCAKLSAgICAxMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDQ0LCA4NSwgMjMzLCAyNiwgMTI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgCi0gICAgMzEsIDY3LCA0MywgNTIsIDI1NCwgMTE4LCAxMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDQ0LCA1MiwgMjU0LCAKLSAgICAxMTgsIDEyNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDMsIDI1NCwgMTE4LCAxMjcsIDIyNCwgMTk3LCAyNDQsIAotICAgIDI4LCAzMSwgNjcsIDQ0LCAyNTQsIDExOCwgMTI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCA0MywgMjQ5LCAxNjksIAotICAgIDEyNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDQsIDI0OSwgMTY5LCAxMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgCi0gICAgNjcsIDQzLCA3MSwgMjQ5LCAxNjksIDEyNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDQsIDcxLCAyNDksIDE2OSwgCi0gICAgMTI3LCAyMjAsIDEzMywgMjQ3LCAxMjgsIDcxLCAyMjAsIDEzMywgMjQ3LCAxMjgsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgCi0gICAgNjcsIDQzLCA0MiwgMTI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCA0NCwgNDIsIDEyNywgMjQ4LCAxNjMsIDIyNiwgCi0gICAgMTIzLCAyNTAsIDE4MCwgMjI2LCAxMjMsIDIxMiwgMzIsIDIyNiwgMTIzLCA1MiwgMjEyLCAzMiwgMjI2LCAxMjMsIDI0OCwgCi0gICAgMTYzLCAxMjEsIDIzMiwgMjE5LCAyNTAsIDE4MCwgMTIxLCAyMzIsIDIxOSwgMjEyLCAzMiwgMTIxLCAyMzIsIDIxOSwgNCwgCi0gICAgMjQ5LCAyMjcsIDQsIDExMCwgMjQ5LCAyMjcsIDQsIDI0MywgMjM2LCAyMTgsIDEzMSwgNCwgMjIwLCAxNTIsIDQsIDI0OSwgCi0gICAgMjM0LCA0LCAyMjQsIDE2LCA3OSwgNCwgMjQ1LCAzOSwgNzksIDQsIDI0NSwgMTY4LCAyNDgsIDE2NCwgNCwgNDMsIDIyNiwgCi0gICAgNywgNCwgNDQsIDIyNiwgNywgNCwgNDMsIDI0OSwgMTA3LCAxMjcsIDQsIDQ0LCAyNDksIDEwNywgMTI3LCA0LCA0MywgMjE2LCAKLSAgICA3LCAyMjAsIDU1LCAxMjcsIDQsIDQ0LCAyMTYsIDcsIDIyMCwgNTUsIDEyNywgNCwgNTQsIDUwLCA0LCAyNTQsIDEzNCwgNCwgCi0gICAgMjUzLCAyMjQsIDQsIDk2LCA1MCwgNCwgMjQwLCAxNzQsIDQsIDIzMywgMjEsIDUwLCA0LCAyNDIsIDEzNywgNTAsIDQsIAotICAgIDI0NSwgMTA2LCA1MCwgNCwgMjIzLCA1MywgMjE5LCA0OCwgNCwgMjQ3LCAxNDAsIDUwLCA0LCAyMjUsIDE4NSwgNTAsIDQsIAotICAgIDI0OSwgMjI1LCAyNTMsIDIxNCwgOSwgMjQ0LCAxNzIsIDUzLCAxNywgOSwgMjE3LCA0NSwgMiwgMjQ0LCAxNzIsIDQ4LCA5LCAKLSAgICAyNDgsIDE5MSwgNTMsIDE3LCA5LCAyMTcsIDc5LCAyNDQsIDksIDksIDIzNCwgMjEwLCA1MywgMTcsIDksIDI0NCwgMTc0LCAKLSAgICA1MywgMTcsIDksIDI0NCwgMTc0LCAxNDcsIDE3LCA5LCAyNDgsIDE5MywgNTMsIDE3LCA5LCAyNDgsIDE5MywgMTQ3LCAxNywgCi0gICAgOSwgMjM0LCAyMTIsIDUzLCAxNywgOSwgMjM0LCAyMTIsIDE0NywgMTcsIDksIDIyMCwgOTYsIDUzLCAxNywgOSwgMjIwLCAKLSAgICA5NiwgMTQ3LCAxNywgOSwgMjE4LCA0NywgNTMsIDE3LCA5LCAyMTgsIDQ3LCAxNDcsIDE3LCA5LCAxLCAxODIsIDUzLCAxNywgCi0gICAgOSwgMSwgMTA5LCAyLCAyMzEsIDIzMywgNzIsIDUzLCAxNywgOSwgMSwgMTA5LCAyLCAyMzEsIDIzMywgNzIsIDQwLCAxNywgCi0gICAgOSwgMSwgMTA5LCAyLCAxODIsIDcyLCA1MywgMTcsIDksIDEsIDEwOSwgMiwgMTgyLCA3MiwgNDAsIDE3LCA5LCAxLCAyMTIsIAotICAgIDMxLCAyLCAxODIsIDcyLCA1MywgMTcsIDksIDEsIDIxMiwgMzEsIDIsIDE4MiwgNzIsIDQwLCAxNywgOSwgMSwgMTA5LCAyLCAKLSAgICAxODIsIDI1MiwgNTEsIDUzLCAxNywgOSwgMSwgMTA5LCAyLCAxODIsIDI1MiwgNTEsIDQwLCAxNywgOSwgMSwgNzcsIDIsIAotICAgIDE4MiwgNzIsIDUzLCAxNywgOSwgMSwgNzcsIDIsIDE4MiwgNzIsIDQwLCAxNywgOSwgMSwgNzcsIDIsIDE4MiwgNzIsIDY1LCAKLSAgICAxNywgOSwgMSwgNzcsIDIsIDE4MiwgNzIsIDE0NywgMTcsIDksIDEsIDEwOSwgNTMsIDE3LCA5LCAxLCAxMDksIDQwLCAxNywgCi0gICAgOSwgMSwgMjUyLCA2MywgNTMsIDE3LCA5LCAxLCAyNTIsIDYzLCA0MCwgMTcsIDksIDEsIDI1MiwgNjMsIDY1LCAxNywgOSwgCi0gICAgMSwgMjUyLCA2MywgMTQ3LCAxNywgOSwgMSwgMjE3LCA5LCAyMzEsIDE3MCwgNTMsIDE3LCA5LCAxLCAyMTcsIDksIDIzMSwgCi0gICAgMTcwLCA0MCwgMTcsIDksIDEsIDIxNywgOSwgNTMsIDE3LCA5LCAxLCAyMTcsIDksIDQwLCAxNywgOSwgMSwgMjE3LCA5LCAKLSAgICA2NSwgMTcsIDksIDEsIDIxNywgOSwgMTQ3LCAxNywgOSwgMSwgMjE2LCAxOTQsIDUzLCAxNywgOSwgMSwgMjE2LCAxOTQsIAotICAgIDQwLCAxNywgOSwgMSwgMjE2LCAxOTQsIDY1LCAxNywgOSwgMSwgMjE2LCAxOTQsIDE0NywgMTcsIDksIDEsIDE1MSwgNTMsIAotICAgIDE3LCA5LCAxLCAxNTEsIDQwLCAxNywgOSwgMSwgMTUxLCA2NSwgMTcsIDksIDEsIDE1MSwgMTQ3LCAxNywgOSwgMSwgMTIyLCAKLSAgICA1MywgMTcsIDksIDEsIDEyMiwgNDAsIDE3LCA5LCAxLCAxMjIsIDY1LCAxNywgOSwgMSwgMTIyLCAxNDcsIDE3LCA5LCAxLCAKLSAgICAyMzQsIDEzNiwgNTMsIDE3LCA5LCAxLCAyMzQsIDEzNiwgNDAsIDE3LCA5LCAxLCAyMzQsIDEzNiwgNjUsIDE3LCA5LCAxLCAKLSAgICAyMzQsIDEzNiwgMTQ3LCAxNywgOSwgMSwgMjQ4LCAyMDQsIDUzLCAxNywgOSwgMSwgMjQ4LCAyMDQsIDQwLCAxNywgOSwgMSwgCi0gICAgMjE2LCAyMDQsIDUzLCAxNywgOSwgMSwgMjE2LCAyMDQsIDQwLCAxNywgOSwgMSwgMjIzLCA5OSwgNTMsIDE3LCA5LCAxLCAKLSAgICAyMjMsIDk5LCA0MCwgMTcsIDksIDEsIDIxMCwgMTA5LCA1MywgMTcsIDksIDEsIDIxMCwgMTA5LCA0MCwgMTcsIDksIDEsIAotICAgIDIyMSwgMTY5LCA1MywgMTcsIDksIDEsIDIyMSwgMTY5LCA0MCwgMTcsIDksIDEsIDIyMSwgMTY5LCA2NSwgMTcsIDksIDEsIAotICAgIDIyMSwgMTY5LCAxNDcsIDE3LCA5LCAxLCAyMjAsIDYyLCA1MywgMTcsIDksIDEsIDIyMCwgNjIsIDQwLCAxNywgOSwgMSwgCi0gICAgMjIwLCA2MiwgNjUsIDE3LCA5LCAxLCAyMjAsIDYyLCAxNDcsIDE3LCA5LCAxLCAyMjIsIDI5LCA1MywgMTcsIDksIDEsIAotICAgIDIyMiwgMjksIDQwLCAxNywgOSwgMSwgMjIyLCAyOSwgNjUsIDE3LCA5LCAxLCAyMjIsIDI5LCAxNDcsIDE3LCA5LCAxLCAKLSAgICAyNDgsIDIyNSwgNTMsIDE3LCA5LCAxLCAyNDgsIDIyNSwgNDAsIDE3LCA5LCAxLCAyNDgsIDIyNSwgNjUsIDE3LCA5LCAxLCAKLSAgICAyNDgsIDIyNSwgMTQ3LCAxNywgOSwgMSwgMjE3LCA4MiwgNTMsIDE3LCA5LCAxLCAyMTcsIDgyLCA0MCwgMTcsIDksIDEsIAotICAgIDIxNywgODIsIDY1LCAxNywgOSwgMSwgMjE3LCA4MiwgMTQ3LCAxNywgOSwgMSwgMjEwLCAxMTIsIDUzLCAxNywgOSwgMSwgCi0gICAgMjEwLCAxMTIsIDQwLCAxNywgOSwgMSwgMjEwLCAxMTIsIDY1LCAxNywgOSwgMSwgMjEwLCAxMTIsIDE0NywgMTcsIDksIDEsIAotICAgIDI1NCwgMjA2LCA1MywgMTcsIDksIDEsIDI1NCwgMjA2LCA0MCwgMTcsIDksIDEsIDI1NCwgMjA2LCA2NSwgMTcsIDksIDEsIAotICAgIDI1NCwgMjA2LCAxNDcsIDE3LCA5LCAxLCAyNDIsIDI1MiwgNTMsIDE3LCA5LCAxLCAyNDIsIDI1MiwgNDAsIDE3LCA5LCAxLCAKLSAgICAyNDIsIDI1MiwgNjUsIDE3LCA5LCAxLCAyNDIsIDI1MiwgMTQ3LCAxNywgOSwgMSwgMjQ0LCAxNTEsIDUzLCAxNywgOSwgMSwgCi0gICAgMjQ0LCAxNTEsIDQwLCAxNywgOSwgMSwgMjQ0LCAxNTEsIDY1LCAxNywgOSwgMSwgMjQ0LCAxNTEsIDE0NywgMTcsIDksIDEsIAotICAgIDIyNCwgODUsIDUzLCAxNywgOSwgMSwgMjI0LCA4NSwgNDAsIDE3LCA5LCAxLCAyMjQsIDg1LCA2NSwgMTcsIDksIDEsIDIyNCwgCi0gICAgODUsIDE0NywgMTcsIDksIDEsIDIzNSwgMSwgNTMsIDE3LCA5LCAxLCAyMzUsIDEsIDQwLCAxNywgOSwgMSwgMjM1LCAxLCAKLSAgICA2NSwgMTcsIDksIDEsIDIzNSwgMSwgMTQ3LCAxNywgOSwgMSwgMjMzLCAxMDksIDUzLCAxNywgOSwgMSwgMjMzLCAxMDksIAotICAgIDQwLCAxNywgOSwgMSwgMjMzLCAxMDksIDY1LCAxNywgOSwgMSwgMjMzLCAxMDksIDE0NywgMTcsIDksIDEsIDY2LCA1MywgCi0gICAgMTcsIDksIDEsIDY2LCA0MCwgMTcsIDksIDEsIDY2LCA2NSwgMTcsIDksIDEsIDY2LCAxNDcsIDE3LCA5LCAxLCAyMjgsIDY4LCAKLSAgICA1MywgMTcsIDksIDEsIDIyOCwgNjgsIDQwLCAxNywgOSwgMSwgMjI4LCA2OCwgNjUsIDE3LCA5LCAxLCAyMjgsIDY4LCAxNDcsIAotICAgIDE3LCA5LCAxLCAyNDEsIDIyNiwgNTMsIDE3LCA5LCAxLCAyNDEsIDIyNiwgNDAsIDE3LCA5LCAxLCAyNDEsIDIyNiwgNjUsIAotICAgIDE3LCA5LCAxLCAyNDEsIDIyNiwgMTQ3LCAxNywgOSwgMSwgMjEyLCAzMSwgNTMsIDE3LCA5LCAxLCAyMTIsIDMxLCA0MCwgCi0gICAgMTcsIDksIDEsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgMSwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAxLCA3NywgCi0gICAgNTMsIDE3LCA5LCAxLCA3NywgNDAsIDE3LCA5LCAxLCA3NywgNjUsIDE3LCA5LCAxLCA3NywgMTQ3LCAxNywgOSwgMjcsIAotICAgIDIzMywgMTA5LCAyLCAxMDksIDIsIDIzMSwgMjMzLCA3MiwgNTMsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDEwOSwgMiwgCi0gICAgMjMxLCAyMzMsIDcyLCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTA5LCAyLCAxODIsIDcyLCA1MywgMTcsIDksIDI3LCAKLSAgICAyMzMsIDEwOSwgMiwgMTA5LCAyLCAxODIsIDcyLCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTA5LCAyLCAxODIsIAotICAgIDI1MiwgNTEsIDUzLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAxMDksIDIsIDE4MiwgMjUyLCA1MSwgNDAsIDE3LCA5LCAyNywgCi0gICAgMjMzLCAxMDksIDIsIDEwOSwgNTMsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDEwOSwgNDAsIDE3LCAyMTAsIDg3LCAyMTEsIAotICAgIDI0NSwgMjI4LCA3OCwgMjE5LCAyMCwgMTI2LCAyNDUsIDM5LCA3OSwgMTI2LCAyMjQsIDEsIDc5LCAxMjYsIDU0LCA1MCwgCi0gICAgMTI2LCAyNDcsIDE0MCwgNTAsIDEyNiwgMjI1LCAxODUsIDUwLCAxMjYsIDI1NCwgMTM0LCAxMjYsIDI1NCwgNjUsIDEyNiwgCi0gICAgNDMsIDIyNiwgNywgMTI2LCA0NCwgMjI2LCA3LCAxMjYsIDI1MywgMjI0LCAxMjYsIDk2LCA1MCwgMTI2LCAyNDksIDIyNywgCi0gICAgMTI2LCAyNDAsIDE3NCwgMTI2LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDEyNiwgMjE5LCA0OCwgMTI2LCAyMSwgMjEwLCA4NiwgCi0gICAgMTI2LCAyMSwgMTExLCAxMjYsIDIxLCAxMDUsIDEyNiwgMjEsIDE1OCwgMTI2LCAyMSwgMTYxLCAxMjYsIDIxLCAxOTAsIAotICAgIDEyNiwgMjEsIDE5NSwgMTI2LCAyMSwgMTk5LCAxMjYsIDIxLCAxOTYsIDEyNiwgMjEsIDIwMSwgMTI2LCAyNDksIDIzNCwgCi0gICAgMTI2LCAyMjAsIDE1MiwgMTI2LCAyMzMsIDIxLCA1MCwgMTI2LCAyNDUsIDEwNiwgNTAsIDEyNiwgMjQyLCAxMzcsIDUwLCAKLSAgICAxMjYsIDIyNCwgMTYsIDc5LCAxMjYsIDI0OSwgMjI1LCAyNTMsIDIxNCwgMTI2LCA3LCA2LCAxLCA2MSwgMTI2LCA3LCA2LCAKLSAgICAxLCAyNTMsIDE2NiwgMTI2LCA3LCA2LCAxLCAyNTEsIDc0LCAxMjYsIDcsIDYsIDEsIDI0OSwgNjgsIDEyNiwgNywgNiwgMSwgCi0gICAgNzYsIDEyNiwgNywgNiwgMSwgMjQ1LCAxNCwgMTI2LCA3LCA2LCAxLCAyNDMsIDIwOSwgMTI2LCA3LCA2LCAxLCAyNDIsIDY3LCAKLSAgICAxMjYsIDcsIDYsIDEsIDc0LCAxMjYsIDcsIDYsIDEsIDIzNSwgMTUwLCAxMjYsIDcsIDYsIDEsIDIzNSwgMjksIDEyNiwgNywgCi0gICAgNiwgMSwgMTU2LCAxMjYsIDcsIDYsIDEsIDE5NCwgMTI2LCA3LCA2LCAxLCAyMzAsIDMwLCAxMjYsIDcsIDYsIDEsIDc4LCAKLSAgICAxMjYsIDcsIDYsIDEsIDIyNiwgMTA5LCAxMjYsIDcsIDYsIDEsIDIyNCwgOTksIDEyNiwgNywgNiwgMSwgMTUzLCAxMjYsIDcsIAotICAgIDYsIDEsIDIyMiwgOTMsIDEyNiwgNywgNiwgMSwgMjE3LCAxNTMsIDEyNiwgNywgNiwgMSwgNjksIDEyNiwgNywgNiwgMSwgCi0gICAgMjE0LCAxMDUsIDEyNiwgNywgNiwgMSwgMjEyLCA5OCwgMTI2LCA3LCA2LCAxLCAyMTEsIDE3OCwgMTI2LCA3LCA2LCAxLCAKLSAgICAyMTEsIDExNywgMTI2LCA3LCA2LCAxLCAyMTAsIDE1OSwgMTI2LCA0MywgNDIsIDEyNywgMTI2LCAyMjMsIDUzLCAyMTksIAotICAgIDQ4LCAxMjYsIDQ0LCA0MiwgMTI3LCAxMjYsIDI1MCwgMzksIDI1NSwgMjMsIDEyNiwgMTIxLCAyMzIsIDIxOSwgMTI2LCAKLSAgICAyNDIsIDE0NCwgMjU1LCAyMywgMTI2LCA3LCA0LCAxLCA2MSwgMTI2LCA3LCA0LCAxLCAyNTMsIDE2NiwgMTI2LCA3LCA0LCAKLSAgICAxLCAyNTEsIDc0LCAxMjYsIDcsIDQsIDEsIDI0OSwgNjgsIDEyNiwgNywgNCwgMSwgNzYsIDEyNiwgNywgNCwgMSwgMjQ1LCAKLSAgICAxNCwgMTI2LCA3LCA0LCAxLCAyNDMsIDIwOSwgMTI2LCA3LCA0LCAxLCAyNDIsIDY3LCAxMjYsIDcsIDQsIDEsIDc0LCAxMjYsIAotICAgIDcsIDQsIDEsIDIzNSwgMTUwLCAxMjYsIDcsIDQsIDEsIDIzNSwgMjksIDEyNiwgNywgNCwgMSwgMTU2LCAxMjYsIDcsIDQsIAotICAgIDEsIDE5NCwgMTI2LCA3LCA0LCAxLCAyMzAsIDMwLCAxMjYsIDcsIDQsIDEsIDc4LCAxMjYsIDcsIDQsIDEsIDIyNiwgMTA5LCAKLSAgICAxMjYsIDcsIDQsIDEsIDIyNCwgOTksIDEyNiwgNywgNCwgMSwgMTUzLCAxMjYsIDcsIDQsIDEsIDIyMiwgOTMsIDEyNiwgNywgCi0gICAgNCwgMSwgMjE3LCAxNTMsIDEyNiwgNywgNCwgMSwgNjksIDEyNiwgNywgNCwgMSwgMjE0LCAxMDUsIDEyNiwgNywgNCwgMSwgCi0gICAgMjEyLCA5OCwgMTI2LCA3LCA0LCAxLCAyMTEsIDE3OCwgMTI2LCA3LCA0LCAxLCAyMTEsIDExNywgMTI2LCA3LCA0LCAxLCAKLSAgICAyMTAsIDE1OSwgMTI2LCA0MywgMjQ5LCAxMDcsIDEyNywgMTI2LCA2NywgMjMyLCAyMTksIDEyNiwgNDQsIDI0OSwgMTA3LCAKLSAgICAxMjcsIDEyNiwgMTg0LCAxMjYsIDQzLCA3MSwgMjI2LCA3LCAxMjYsIDQ0LCA3MSwgMjI2LCA3LCAxMDEsIDExMCwgMjQzLCAKLSAgICAyMzYsIDIxOCwgMTMxLCAxMDEsIDQzLCAyNDksIDE2OSwgMTI3LCAxMDEsIDQ0LCAyNDksIDE2OSwgMTI3LCAxMDEsIDExMCwgCi0gICAgMjQ5LCAyMjcsIDEwMSwgNTYsIDIzMCwgMjI5LCAyNDcsIDEyOCwgMTAxLCA1NiwgMSwgMjExLCAyMjcsIDEwMSwgNTYsIDEsIAotICAgIDQsIDYxLCAxMDEsIDU2LCAxLCA0LCA3NCwgMTAxLCA1NiwgMSwgNCwgNjksIDEwMSwgNTYsIDEsIDQsIDc2LCAxMDEsIDU2LCAKLSAgICAxLCA0LCA3OCwgMTAxLCA1NiwgMSwgNCwgMTkyLCAxMDEsIDU2LCAxLCA0LCAyMTAsIDIxMiwgMTAxLCA1NiwgMSwgNCwgCi0gICAgMjEwLCAyNDQsIDEwMSwgNTYsIDEsIDQsIDIxNSwgMTE5LCAxMDEsIDIzNCwgMjA3LCAyMjQsIDE3NiwgMjE5LCAzMywgNzksIAotICAgIDEwMSwgNTYsIDEsIDYxLCAxMDEsIDU2LCAxLCA3NCwgMTAxLCA1NiwgMSwgNjksIDEwMSwgNTYsIDEsIDc2LCAxMDEsIDU2LCAKLSAgICAxLCA3OCwgMTAxLCA1NiwgMSwgMTc2LCAxMDEsIDU2LCAxLCAyMzQsIDk4LCAxMDEsIDU2LCAxLCAyMzMsIDIyMywgMTAxLCAKLSAgICA1NiwgMSwgMjM0LCAxODgsIDEwMSwgNTYsIDEsIDIzNCwgMzQsIDEwMSwgNTYsIDEsIDIwNiwgMTAxLCA1NiwgMSwgMjE5LCAKLSAgICAxOTMsIDEwMSwgNTYsIDEsIDIxOCwgODQsIDEwMSwgNTYsIDEsIDIyMSwgMTgzLCAxMDEsIDU2LCAxLCAyMTksIDYwLCAxMDEsIAotICAgIDU2LCAxLCAyMTcsIDEwNiwgMTAxLCA1NiwgMSwgMjE2LCAxMTgsIDEwMSwgNTYsIDEsIDIxNSwgMTE5LCAxMDEsIDU2LCAxLCAKLSAgICAyMTcsIDIzLCAxMDEsIDU2LCAxLCAxMTIsIDEwMSwgNTYsIDEsIDE5OCwgMTAxLCA1NiwgMSwgMjI4LCAyMzgsIDEwMSwgNTYsIAotICAgIDEsIDIyNywgMjQyLCAxMDEsIDU2LCAxLCAyMjksIDExMiwgMTAxLCA1NiwgMSwgMjI4LCA3OSwgMTAxLCA1NiwgMSwgMTYyLCAKLSAgICAxMDEsIDU2LCAxLCAyNDEsIDE4NywgMTAxLCA1NiwgMSwgMjQwLCAyMjksIDEwMSwgNTYsIDEsIDI0MSwgMjQ1LCAxMDEsIAotICAgIDU2LCAxLCAyNDEsIDc1LCAxMDEsIDU2LCAxLCAxODYsIDEwMSwgNTYsIDEsIDIzMCwgMjM1LCAxMDEsIDU2LCAxLCAyMzAsIAotICAgIDEwNywgMTAxLCA1NiwgMSwgMjMxLCA5NiwgMTAxLCA1NiwgMSwgMjMwLCAxNjYsIDEwMSwgNTYsIDEsIDE5MiwgMTAxLCA1NiwgCi0gICAgMSwgMjEwLCAyMTIsIDEwMSwgNTYsIDEsIDIxMCwgMjQ0LCAxMDEsIDU2LCAxLCAyMDUsIDEwMSwgNTYsIDEsIDIyMywgMzgsIAotICAgIDEwMSwgNTYsIDEsIDIyMiwgMTQyLCAxMDEsIDU2LCAxLCAyMjMsIDEzMSwgMTAxLCA1NiwgMSwgMjIyLCAyMTMsIDEwMSwgCi0gICAgNTYsIDEsIDIxMiwgNjUsIDEwMSwgNTYsIDEsIDIzMCwgMzAsIDEwMSwgNTYsIDIxMywgMTM1LCAyMTksIDMzLCA3OSwgMTAxLCAKLSAgICA1NiwgMjIwLCAxNTcsIDIxOSwgMzMsIDc5LCAxMDEsIDI0LCAyNDQsIDExMSwgMTAxLCAyNCwgMSwgMjM0LCA2NCwgMTAxLCAKLSAgICAyNCwgMSwgMjE4LCAyMTcsIDEwMSwgMjQsIDEsIDIzNCwgNTcsIDEwMSwgMjQsIDEsIDIyOCwgMjMxLCAxMDEsIDI0LCAxLCAKLSAgICAyMjgsIDIyOSwgMTAxLCAyNCwgMSwgMjI4LCAyMjgsIDEwMSwgMjQsIDEsIDIxNiwgMTAyLCAxMDEsIDI0LCAxLCAyMTgsIAotICAgIDIwNiwgMTAxLCAyNCwgMSwgMjIzLCAyOSwgMTAxLCAyNCwgMSwgMjIzLCAyNCwgMTAxLCAyNCwgMSwgMjIzLCAyMSwgMTAxLCAKLSAgICAyNCwgMSwgMjIzLCAxNCwgMTAxLCAyNCwgMSwgMjIzLCA5LCAxMDEsIDI0LCAxLCAyMjMsIDQsIDEwMSwgMjQsIDEsIDIyMywgCi0gICAgMTUsIDEwMSwgMjQsIDEsIDIyMywgMjcsIDEwMSwgMjQsIDEsIDIzMCwgMjIyLCAxMDEsIDI0LCAxLCAyMjUsIDk4LCAxMDEsIAotICAgIDI0LCAxLCAyMTgsIDIxNCwgMTAxLCAyNCwgMSwgMjI1LCA4NywgMTAxLCAyNCwgMSwgMjE5LCAxNTAsIDEwMSwgMjQsIDEsIAotICAgIDIxOCwgMjExLCAxMDEsIDI0LCAxLCAyMzYsIDYzLCAxMDEsIDI0LCAxLCAyNTAsIDU0LCAxMDEsIDI0LCAxLCAyMTgsIDIyMSwgCi0gICAgMTAxLCAyNCwgMSwgMjUwLCAxMTQsIDEwMSwgMjQsIDEsIDIzNCwgMTE2LCAxMDEsIDI0LCAxLCAyMTYsIDE3NCwgMTAxLCAKLSAgICAyNCwgMSwgMjI1LCAxMzQsIDEwMSwgMjQsIDEsIDI0MSwgMTc5LCAxMDEsIDI0LCAxLCA2MSwgMTAxLCAyNCwgMSwgMjU0LCAKLSAgICAyNTIsIDEwMSwgMjQsIDEsIDE5MiwgMTAxLCAyNCwgMSwgMjExLCA5MiwgMTAxLCAyNCwgMSwgMjQ1LCAxMjUsIDEwMSwgMjQsIAotICAgIDEsIDc2LCAxMDEsIDI0LCAxLCAyMTEsIDM2LCAxMDEsIDI0LCAxLCAyMTEsIDQ3LCAxMDEsIDI0LCAxLCA3OCwgMTAxLCAyNCwgCi0gICAgMSwgMjEyLCA2NSwgMTAxLCAyNCwgMSwgMjEyLCA2MiwgMTAxLCAyNCwgMSwgMjI2LCAyMzgsIDEwMSwgMjQsIDEsIDIxMCwgCi0gICAgMjQ0LCAxMDEsIDI0LCAxLCA2OSwgMTAxLCAyNCwgMSwgMjEyLCAxMSwgMTAxLCAyNCwgMSwgMjEyLCAyMiwgMTAxLCAyNCwgCi0gICAgMSwgMjExLCAyNTAsIDEwMSwgMjQsIDEsIDIxMCwgMjEyLCAxMDEsIDI0LCAxLCAyNDUsIDYzLCAxMDEsIDI0LCAxLCAyMTEsIAotICAgIDgsIDEwMSwgMjQsIDEsIDc0LCAxMjYsIDI1MCwgMTg0LCA1MCwgMTI2LCAyMjQsIDIzMSwgNTAsIDEyNiwgMjI4LCA1NywgCi0gICAgNTAsIDEyNiwgMjMxLCAyMzcsIDEyNiwgMjUxLCAxNDMsIDEzMCwgMTI2LCAyMTEsIDQwLCA1MCwgMTI2LCAyMTEsIDIxNywgCi0gICAgNTAsIDEwMSwgMjQ0LCAyNiwgMTkzLCAyMTMsIDIzOSwgMTAxLCAxNDAsIDc1LCAxMDEsIDIxNCwgMTUzLCA3NSwgMTAxLCAKLSAgICA5NywgNzUsIDEwMSwgMjQ2LCAxMTIsIDc1LCAxMDEsIDg1LCAyMTgsIDIzNiwgMTAxLCA3MSwgMjUwLCA0MywgMjM1LCAyMTEsIAotICAgIDI1NCwgMTA3LCAyNTQsIDEyOCwgMjM1LCAyMTEsIDI1NCwgMTA3LCAyMjAsIDEzOSwgMjM1LCAyMTEsIDI1NCwgMTA3LCAKLSAgICAyMTYsIDIzNywgMjI2LCAyNTMsIDIyMywgNzUsIDI1MCwgMTUwLCAyMjMsIDc1LCAyNTAsIDE1MCwgNjIsIDU3LCAzLCAyNTMsIAotICAgIDE1MCwgNjEsIDYyLCA1NywgMywgMjUzLCAxMTksIDc2LCA2MiwgNTcsIDMsIDI1MywgMTI4LCA3NCwgNjIsIDU3LCAzLCAKLSAgICAyNTMsIDk2LCA3OCwgNjIsIDU3LCAzLCAyNTMsIDE0NiwgNjksIDYyLCA1NywgMywgMjUzLCAxNjUsIDI0OCwgMjI5LCA2MiwgCi0gICAgNTcsIDMsIDI1MywgMTEyLCAyNDgsIDk4LCA2MiwgNTcsIDMsIDI1MywgMTUyLCAyNDgsIDExLCA2MiwgNTcsIDMsIDI1MywgCi0gICAgMTQyLCAyNDcsIDE1MywgNjIsIDU3LCAzLCAyNTMsIDEwNiwgMjQ2LCA4NiwgNjIsIDU3LCAzLCAyNTMsIDEwMCwgMjM1LCAKLSAgICAxNDcsIDYyLCA1NywgMywgMjUzLCAxMTEsIDIzNSwgMTMyLCA2MiwgNTcsIDMsIDI1MywgMTIxLCAyMzUsIDc0LCA2MiwgNTcsIAotICAgIDMsIDI1MywgOTIsIDIzNSwgNTcsIDYyLCA1NywgMywgMjUzLCA4MCwgMTc2LCA2MiwgNTcsIDMsIDI1MywgMTEzLCAyMzQsIAotICAgIDE4OCwgNjIsIDU3LCAzLCAyNTMsIDkwLCAyMzQsIDk4LCA2MiwgNTcsIDMsIDI1MywgODcsIDIzNCwgMzQsIDYyLCA1NywgMywgCi0gICAgMjUzLCA3NiwgMjMzLCAyMjMsIDYyLCA1NywgMywgMjUzLCA3NywgMTg2LCA2MiwgNTcsIDMsIDI1MywgMTQzLCAyMzEsIDk2LCAKLSAgICA2MiwgNTcsIDMsIDI1MywgODQsIDIzMCwgMjM1LCA2MiwgNTcsIDMsIDI1MywgMTQxLCAyMzAsIDE2NiwgNjIsIDU3LCAzLCAKLSAgICAyNTMsIDEzMywgMjMwLCAxMDcsIDYyLCA1NywgMywgMjUzLCAxNTQsIDE5OCwgNjIsIDU3LCAzLCAyNTMsIDEzMiwgMjI5LCAKLSAgICAxMTIsIDYyLCA1NywgMywgMjUzLCAxMjYsIDIyOCwgMjM4LCA2MiwgNTcsIDMsIDI1MywgMTA1LCAyMjgsIDc5LCA2MiwgNTcsIAotICAgIDMsIDI1MywgMTAyLCAyMjcsIDI0MiwgNjIsIDU3LCAzLCAyNTMsIDE2MSwgMTkxLCA2MiwgNTcsIDMsIDI1MywgODUsIDIyNSwgCi0gICAgMjI0LCA2MiwgNTcsIDMsIDI1MywgMTE4LCAyMjUsIDExMSwgNjIsIDU3LCAzLCAyNTMsIDE0NSwgMjI1LCAxOSwgNjIsIDU3LCAKLSAgICAzLCAyNTMsIDEwNywgMjI0LCAxNTMsIDYyLCA1NywgMywgMjUzLCAxNDAsIDIyNCwgOTEsIDYyLCA1NywgMywgMjUzLCA3OSwgCi0gICAgMjI0LCA3MiwgNjIsIDU3LCAzLCAyNTMsIDEzNSwgMjI0LCA1NiwgNjIsIDU3LCAzLCAyNTMsIDEyNCwgMjI0LCA0NSwgNjIsIAotICAgIDU3LCAzLCAyNTMsIDk3LCAyMDUsIDYyLCA1NywgMywgMjUzLCAxMjksIDIyMywgMTMxLCA2MiwgNTcsIDMsIDI1MywgMTA0LCAKLSAgICAyMjMsIDM4LCA2MiwgNTcsIDMsIDI1MywgMTYzLCAyMjIsIDIxMywgNjIsIDU3LCAzLCAyNTMsIDEzMCwgMjIyLCAxNDIsIAotICAgIDYyLCA1NywgMywgMjUzLCAxMjUsIDIwNiwgNjIsIDU3LCAzLCAyNTMsIDE0OCwgMjIxLCAxODMsIDYyLCA1NywgMywgMjUzLCAKLSAgICAxMTYsIDIxOSwgMTkzLCA2MiwgNTcsIDMsIDI1MywgMTQ0LCAyMTksIDYwLCA2MiwgNTcsIDMsIDI1MywgOTksIDIxOCwgODQsIAotICAgIDYyLCA1NywgMywgMjUzLCA5OCwgMjE3LCAxMDYsIDYyLCA1NywgMywgMjUzLCAxNTksIDIxNywgMjMsIDYyLCA1NywgMywgCi0gICAgMjUzLCAxMjAsIDIxNiwgMTE4LCA2MiwgNTcsIDMsIDI1MywgMTU3LCAxMTIsIDYyLCA1NywgMywgMjUzLCA4OCwgMjE1LCAKLSAgICAxMTksIDYyLCA1NywgMywgMjUzLCAxMDMsIDIxMiwgNjUsIDYyLCA1NywgMywgMjUzLCA4MiwgMjEyLCAyMiwgNjIsIDU3LCAKLSAgICAzLCAyNTMsIDExNywgMjExLCAyNTAsIDYyLCA1NywgMywgMjUzLCAxMTUsIDIxMSwgMjI3LCA2MiwgNTcsIDMsIDI1MywgCi0gICAgMTM5LCAyMTAsIDExNiwgNjIsIDU3LCAzLCAyNTMsIDgzLCAyMTAsIDk0LCA2MiwgNTcsIDMsIDI1MywgMTM2LCAyMTAsIDIzLCAKLSAgICA2MiwgNTcsIDMsIDI1MywgMTMxLCAyNTUsIDg0LCA2MiwgNTcsIDMsIDI1MywgMTE0LCAyNTUsIDgzLCA2MiwgNTcsIDMsIAotICAgIDI1MywgNzMsIDI1MywgMjAwLCA2MiwgNTcsIDMsIDI1MywgODYsIDI0NiwgNTQsIDYyLCA1NywgMywgMjUzLCA2OSwgMjQ2LCAKLSAgICA1MywgNjIsIDU3LCAzLCAyNTMsIDEwOSwgMjI3LCAxNzgsIDYyLCA1NywgMywgMjUzLCAxMjcsIDIyNCwgMTUxLCA2MiwgNTcsIAotICAgIDMsIDI1MywgOTUsIDIyNCwgMTU1LCA2MiwgNTcsIDMsIDI1MywgODEsIDIyMywgMTg5LCA2MiwgNTcsIDMsIDI1MywgMTIzLCAKLSAgICAyMjMsIDE4OCwgNjIsIDU3LCAzLCAyNTMsIDg5LCAyMjIsIDIxMiwgNjIsIDU3LCAzLCAyNTMsIDkxLCAyMTcsIDEwMywgNjIsIAotICAgIDU3LCAzLCAyNTMsIDcxLCAyMTUsIDc4LCA2MiwgNTcsIDMsIDI1MywgNjgsIDEwNSwgNjIsIDU3LCAxNiwgMjUzLCAxMzgsIAotICAgIDYyLCA1NywgMTYsIDI1MywgMTM3LCA2MiwgNTcsIDE2LCAyNTMsIDEzNCwgNjIsIDU3LCAxNiwgMjUzLCAxMjIsIDYyLCA1NywgCi0gICAgMTYsIDI1MywgMTEwLCA2MiwgNTcsIDE2LCAyNTMsIDEwOCwgNjIsIDU3LCAxNiwgMjUzLCAxMDEsIDYyLCA1NywgMTYsIAotICAgIDI1MywgOTQsIDYyLCA1NywgMTYsIDI1MywgOTMsIDYyLCA1NywgMTYsIDI1MywgNzgsIDYyLCA1NywgMTYsIDI1MywgNzUsIAotICAgIDYyLCA1NywgMTYsIDI1MywgNzQsIDYyLCA1NywgMTYsIDI1MywgNzIsIDYyLCA1NywgMTYsIDI1MywgNzAsIDYyLCA1NywgCi0gICAgMTA2LCAyNTMsIDY3LCAyMzEsIDE5MCwgNjIsIDU3LCAxMDYsIDI1MywgNjYsIDIxMSwgMjIxLCA2MiwgNTcsIDEwNiwgMjUzLCAKLSAgICA2NSwgMjQ4LCA4MiwgNjIsIDU3LCAxMDYsIDI1MywgNjQsIDI0NSwgMTAzLCA2MiwgNTcsIDEwNiwgMjUzLCA2MywgMjMxLCAKLSAgICAxNjQsIDYyLCA1NywgMTA2LCAyNTMsIDYyLCAyMTgsIDE2NCwgNjIsIDU3LCAxMDYsIDI1MywgNjEsIDI0NSwgNDUsIDYyLCAKLSAgICA1NywgMTA2LCAyNTMsIDYwLCAyMjMsIDE1NiwgNjIsIDU3LCAxMDYsIDI1MywgNTksIDIyMCwgNjQsIDYyLCA1NywgMTA2LCAKLSAgICAyNTMsIDU4LCAyNDEsIDI0NCwgNjIsIDU3LCAxMDYsIDI1MywgNTcsIDIxOSwgMjcsIDYyLCA1NywgMTA2LCAyNTMsIDU2LCAKLSAgICAyNTEsIDIxMSwgNjIsIDU3LCAxMDYsIDI1MywgNTUsIDI0OSwgMTUzLCA2MiwgNTcsIDEwNiwgMjUzLCA1NCwgMjUxLCAxMjMsIAotICAgIDYyLCA1NywgMTA2LCAyNTMsIDUzLCAyMTIsIDIsIDYyLCA1NywgMTA2LCAyNTMsIDUyLCAyNTIsIDE0NCwgNjIsIDU3LCAKLSAgICAxMDYsIDI1MywgNTEsIDIyNiwgMjA5LCA2MiwgNTcsIDEwNiwgMjUzLCA1MCwgMjE5LCAwLCA2MiwgNTcsIDEwNiwgMjUzLCAKLSAgICA0OSwgMjQ5LCA3NiwgNjIsIDU3LCAyMzAsIDE0NywgMjUzLCA0OCwgMjM0LCAyMzAsIDYyLCA1NywgMjMwLCAxNDcsIDI1MywgCi0gICAgNDcsIDIzNCwgMjM4LCA2MiwgNTcsIDEwNiwgMjUzLCA0NiwgMjI2LCAyMjIsIDYyLCA1NywgMTA2LCAyNTMsIDQ1LCAyMTEsIAotICAgIDIzNiwgNjIsIDU3LCAxMDYsIDI1MywgNDQsIDYyLCA1NywgMjMwLCAxNDcsIDI1MywgNDMsIDI1NCwgMjUsIDYyLCA1NywgCi0gICAgMjMwLCAxNDcsIDI1MywgNDIsIDIzMSwgNTcsIDYyLCA1NywgMTA2LCAyNTMsIDQxLCAyNTEsIDE0MiwgNjIsIDU3LCAxMDYsIAotICAgIDI1MywgNDAsIDI0MiwgMTczLCA2MiwgNTcsIDEwNiwgMjUzLCAzOSwgNjIsIDU3LCAxMDYsIDI1MywgMzgsIDIxMSwgMjEyLCAKLSAgICA2MiwgNTcsIDEwNiwgMjUzLCAzNywgNjIsIDU3LCAxMDYsIDI1MywgMzYsIDYyLCA1NywgMTA2LCAyNTMsIDM1LCAyNDAsIAotICAgIDI1NSwgNjIsIDU3LCAxMDYsIDI1MywgMzQsIDYyLCA1NywgMTA2LCAyNTMsIDMzLCA2MiwgNTcsIDEwNiwgMjUzLCAzMiwgCi0gICAgNjIsIDU3LCAyMzAsIDE0NywgMjUzLCAzMCwgMjE1LCA5MiwgNjIsIDU3LCAxMDYsIDI1MywgMjksIDYyLCA1NywgMTA2LCAKLSAgICAyNTMsIDI4LCA2MiwgNTcsIDEwNiwgMjUzLCAyNywgMjUwLCAyLCA2MiwgNTcsIDEwNiwgMjUzLCAyNiwgNjIsIDU3LCAxMDYsIAotICAgIDI1MywgMjUsIDYyLCA1NywgMTA2LCAyNTMsIDI0LCAyNDMsIDEwMCwgNjIsIDU3LCAxMDYsIDI1MywgMjMsIDI1NCwgMTIsIAotICAgIDYyLCA1NywgMTA2LCAyNTMsIDIyLCA2MiwgNTcsIDEwNiwgMjUzLCAyMSwgNjIsIDU3LCAxMDYsIDI1MywgMjAsIDYyLCA1NywgCi0gICAgMTA2LCAyNTMsIDE5LCA2MiwgNTcsIDEwNiwgMjUzLCAxOCwgNjIsIDU3LCAxMDYsIDI1MywgMTcsIDYyLCA1NywgMTA2LCAKLSAgICAyNTMsIDE2LCA2MiwgNTcsIDEwNiwgMjUzLCAxNSwgNjIsIDU3LCAxMDYsIDI1MywgMTQsIDYyLCA1NywgMTA2LCAyNTMsIAotICAgIDEzLCAyMzAsIDEzOSwgNjIsIDU3LCAxMDYsIDI1MywgMTIsIDYyLCA1NywgMTA2LCAyNTMsIDExLCAyMTUsIDIzNiwgNjIsIAotICAgIDU3LCAxMDYsIDI1MywgMTAsIDYyLCA1NywgMTA2LCAyNTMsIDksIDYyLCA1NywgMTA2LCAyNTMsIDgsIDYyLCA1NywgMTA2LCAKLSAgICAyNTMsIDcsIDYyLCA1NywgMTA2LCAyNTMsIDYsIDYyLCA1NywgMTA2LCAyNTMsIDUsIDYyLCA1NywgMTA2LCAyNTMsIDQsIAotICAgIDYyLCA1NywgMTA2LCAyNTMsIDMsIDYyLCA1NywgMTA2LCAyNTMsIDIsIDYyLCA1NywgMTA2LCAyNTMsIDEsIDYyLCA1NywgCi0gICAgMTA2LCAyNTMsIDAsIDYyLCA1NywgMTA2LCAyNTIsIDI1NSwgMjQxLCAyMTgsIDYyLCA1NywgMTA2LCAyNTIsIDIzNCwgMjQ0LCAKLSAgICAzNiwgNjIsIDU3LCAxMDYsIDI1MiwgMjMxLCAyNTIsIDEyNCwgNjIsIDU3LCAxMDYsIDI1MiwgMjI2LCAyMTksIDcsIDYyLCAKLSAgICA1NywgMTA2LCAyNTIsIDIyNSwgNzUsIDYyLCA1NywgMTA2LCAyNTIsIDIyNCwgNjIsIDU3LCAxMDYsIDI1MiwgMjIzLCAyMTcsIAotICAgIDIzNywgNjIsIDU3LCAxMDYsIDI1MiwgMjIyLCA2MiwgNTcsIDEwNiwgMjUyLCAyMjEsIDYyLCA1NywgMTA2LCAyNTIsIDIyMCwgCi0gICAgMjExLCAyNTQsIDI1MCwgMTQ3LCA2MiwgNTcsIDEwNiwgMjUyLCAyMTksIDI1MCwgMTQ3LCA2MiwgNTcsIDEwNiwgMjUyLCAKLSAgICAyMTgsIDI1MCwgMTQ4LCAyNDQsIDcsIDYyLCA1NywgMTA2LCAyNTIsIDIxNywgMjEyLCAwLCA2MiwgNTcsIDEwNiwgMjUyLCAKLSAgICAyMTYsIDYyLCA1NywgMTA2LCAyNTIsIDIxNSwgNjIsIDU3LCAyMzAsIDE0NywgMjUyLCAyMTQsIDI0NywgMjA2LCA2MiwgNTcsIAotICAgIDEwNiwgMjUyLCAyMTMsIDYyLCA1NywgMTA2LCAyNTIsIDIxMiwgNjIsIDU3LCAxMDYsIDI1MiwgMjEwLCA2MiwgNTcsIDEwNiwgCi0gICAgMjUyLCAyMDksIDYyLCA1NywgMTA2LCAyNTIsIDIwOCwgNjIsIDU3LCAxMDYsIDI1MiwgMjA3LCAyNDgsIDE2NywgNjIsIDU3LCAKLSAgICAxMDYsIDI1MiwgMjA2LCA2MiwgNTcsIDEwNiwgMjUyLCAyMDUsIDYyLCA1NywgMTA2LCAyNTIsIDIwNCwgNjIsIDU3LCAxMDYsIAotICAgIDI1MiwgMjAzLCA2MiwgNTcsIDEwNiwgMjUyLCAyMDIsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUzLCAzMSwgNjIsIDU3LCAKLSAgICAxMDYsIDIxMywgMTg2LCAyNTIsIDI1NCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI1MywgNjIsIDU3LCAxMDYsIAotICAgIDIxMywgMTg2LCAyNTIsIDI1MiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI1MSwgNjIsIDU3LCAxMDYsIDIxMywgCi0gICAgMTg2LCAyNTIsIDI1MCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0OSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAKLSAgICAyNTIsIDI0OCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0NywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIAotICAgIDI0NiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0NSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0NCwgCi0gICAgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MiwgNjIsIDU3LCAKLSAgICAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MCwgNjIsIDU3LCAxMDYsIAotICAgIDIxMywgMTg2LCAyNTIsIDIzOSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzOCwgNjIsIDU3LCAxMDYsIDIxMywgCi0gICAgMTg2LCAyNTIsIDIzNywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzNiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAKLSAgICAyNTIsIDIzNSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzMywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIAotICAgIDIzMiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzMCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyOSwgCi0gICAgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyOCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyNywgNjIsIDU3LCAKLSAgICAxMDYsIDIxMywgMTg2LCAyNTIsIDIxMSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIwMSwgMjU0LCAyNDUsIDIxMSwgCi0gICAgMjA5LCAyMjAsIDE0MCwgMjMyLCAyMTksIDI1NCwgMjQ1LCAyMTEsIDIwOSwgMjIwLCAxNDAsIDI0NywgMTI4LCAyNTQsIAotICAgIDI0NSwgMjUwLCAxMzgsIDc5LCAyNTQsIDI0NSwgNTQsIDExMSwgMjU0LCAyNDUsIDU0LCAxMDUsIDI1NCwgMjQ1LCA1NCwgCi0gICAgMTU4LCAyNTQsIDI0NSwgNTQsIDE2MSwgMjU0LCAyNDUsIDU0LCAxOTAsIDI1NCwgMjQ1LCA1NCwgMTk1LCAyNTQsIDI0NSwgCi0gICAgNTQsIDE5OSwgMjU0LCAyNDUsIDU0LCAxOTYsIDI1NCwgMjQ1LCA1NCwgMjAxLCAyNTQsIDI0NSwgNTQsIDIxNiwgMjQ4LCAKLSAgICAyNTQsIDI0NSwgNTQsIDIxNSwgNzMsIDI1NCwgMjQ1LCA1NCwgMjE2LCAxNjMsIDI1NCwgMjQ1LCA1NCwgMjQ0LCAyMywgCi0gICAgMjU0LCAyNDUsIDU0LCAyNDQsIDEyMiwgMjU0LCAyNDUsIDU0LCAyMTksIDExMywgMjU0LCAyNDUsIDU0LCAyMjAsIDExOCwgCi0gICAgMjU0LCAyNDUsIDU0LCAyNDUsIDE5MiwgMjU0LCAyNDUsIDU0LCAyMjgsIDIwMCwgMjU0LCAyNDUsIDU0LCAxMjMsIDI0MCwgCi0gICAgMjE3LCAyNTQsIDI0NSwgNTQsIDExMywgMjQwLCAyMTcsIDI1NCwgMjQ1LCA1NCwgMTM0LCAyNDAsIDIxNywgMjU0LCAyNDUsIAotICAgIDU0LCAyNDQsIDE5LCAyNDAsIDIxNywgMjU0LCAyNDUsIDU0LCAyNDQsIDg5LCAyNDAsIDIxNywgMjU0LCAyNDUsIDU0LCAKLSAgICAyMTksIDEyNywgMjQwLCAyMTcsIDI1NCwgMjQ1LCA1NCwgMjIwLCAxMjQsIDI0MCwgMjE3LCAyNTQsIDI0NSwgNTQsIDI0NSwgCi0gICAgMjAxLCAyNDAsIDIxNywgMjU0LCAyNDUsIDU0LCAyMjgsIDIwNSwgMjQwLCAyMTcsIDI1NCwgMjQ1LCA1NCwgMTIzLCAyMTYsIAotICAgIDE0OCwgMjU0LCAyNDUsIDU0LCAxMTMsIDIxNiwgMTQ4LCAyNTQsIDI0NSwgNTQsIDEzNCwgMjE2LCAxNDgsIDI1NCwgMjQ1LCAKLSAgICA1NCwgMjQ0LCAxOSwgMjE2LCAxNDgsIDI1NCwgMjQ1LCA1NCwgMjQ0LCA4OSwgMjE2LCAxNDgsIDI1NCwgMjQ1LCA1NCwgCi0gICAgMjE5LCAxMjcsIDIxNiwgMTQ4LCAyNTQsIDI0NSwgNTQsIDIyMCwgMTI0LCAyMTYsIDE0OCwgMjU0LCAyNDUsIDU0LCAyNDUsIAotICAgIDIwMSwgMjE2LCAxNDgsIDI1NCwgMjQ1LCA1NCwgMjI4LCAyMDUsIDIxNiwgMTQ4LCAyNTQsIDI0NSwgNTQsIDIxNiwgMjQ5LCAKLSAgICAyMTYsIDE0OCwgMjU0LCAyNDUsIDU0LCAyMTUsIDc0LCAyMTYsIDE0OCwgMjU0LCAyNDUsIDU0LCAyMTYsIDE2NCwgMjE2LCAKLSAgICAxNDgsIDI1NCwgMjQ1LCA1NCwgMjQ0LCAyNCwgMjE2LCAxNDgsIDI1NCwgMjQ1LCA1NCwgMjQ0LCAxMjMsIDIxNiwgMTQ4LCAKLSAgICAyNTQsIDI0NSwgNTQsIDIxOSwgMTE0LCAyMTYsIDE0OCwgMjU0LCAyNDUsIDU0LCAyMjAsIDExOSwgMjE2LCAxNDgsIDI1NCwgCi0gICAgMjQ1LCA1NCwgMjQ1LCAxOTMsIDIxNiwgMTQ4LCAyNTQsIDI0NSwgNTQsIDIyOCwgMjAxLCAyMTYsIDE0OCwgMjU0LCAyNDUsIAotICAgIDIxMiwgMTQsIDI1MiwgMTM2LCAyMTQsIDE3MywgMjU0LCAyNDUsIDIxMiwgMTQsIDI0NCwgMTAwLCAyMTgsIDYwLCAyNTQsIAotICAgIDI0NSwgMjEyLCAxNCwgMjIxLCAxNzgsIDIxOCwgNjAsIDI1NCwgMjQ1LCAyMTIsIDE0LCAyMTYsIDE3MCwgMjE4LCA2MCwgCi0gICAgMjU0LCAyNDUsIDIxMiwgMTQsIDI0NCwgMTIsIDIxOCwgNjAsIDI1NCwgMjQ1LCAyNDYsIDg5LCAyMzEsIDk1LCAyNDQsIAotICAgIDEwMCwgMjE4LCA2MCwgMjU0LCAyNDUsIDIzMiwgMjA1LCAyMzEsIDk1LCAyNDQsIDEwMCwgMjE4LCA2MCwgMjU0LCAyNDUsIAotICAgIDIzMSwgOTUsIDIyMSwgMTc4LCAyMTgsIDYwLCAyNTQsIDI0NSwgMjMxLCA5NSwgMjE2LCAxNzAsIDIxOCwgNjAsIDI2LCAKLSAgICAyNTUsIDE1LCAyNTMsIDIwMiwgMTIzLCAyMjQsIDI0LCAyNiwgMjU1LCAxNSwgMjUzLCAyMDIsIDEyMywgMjQyLCAzNCwgMjYsIAotICAgIDI1NSwgMTUsIDI1MywgMjAyLCAxMjMsIDI0NiwgMTA4LCAyNiwgMjU1LCAxNSwgMjUzLCAyMDIsIDE5MCwgMjYsIDI1NSwgCi0gICAgMTUsIDI1MywgMjAyLCAyNDQsIDEyMiwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDg5LCAyNDAsIDIxNywgMjYsIAotICAgIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDg5LCAyMTYsIDE0OCwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDEyMywgCi0gICAgMjE2LCAxNDgsIDI2LCAyNTUsIDE1LCAyNTMsIDIwMiwgMjQ0LCA4OSwgMjE3LCA2OCwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAKLSAgICAyMTYsIDI0OSwgMjE3LCA2OCwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDEyMywgMjE3LCA2OCwgMjYsIDI1NSwgMTUsIAotICAgIDI1MywgMjAyLCAxMjMsIDI0MCwgMjE4LCAyMTcsIDY4LCAyNiwgMjU1LCAxNSwgMjUzLCAyMDIsIDI0NCwgODksIDI0MCwgCi0gICAgMjE4LCAyMTcsIDY4LCAyNiwgMjU1LCAxNSwgMjUzLCAyMDIsIDEyMywgMjE2LCAxNDksIDIxNywgNjgsIDI2LCAyNTUsIDE1LCAKLSAgICAyNTMsIDIwMiwgMjQ0LCA4OSwgMjE2LCAxNDksIDIxNywgNjgsIDI2LCAyNTUsIDE1LCAyNTMsIDIwMiwgMjQ0LCA4OSwgCi0gICAgMjE4LCAxNTIsIDI2LCAyNTUsIDE1LCAyNTMsIDIwMiwgMjE2LCAyNDksIDIxOCwgMTUyLCAyNiwgMjU1LCAxNSwgMjUzLCAKLSAgICAyMDIsIDI0NCwgMTIzLCAyMTgsIDE1MiwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAxMjMsIDI0MCwgMjE4LCAyMTgsIDE1MiwgCi0gICAgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDg5LCAyNDAsIDIxOCwgMjE4LCAxNTIsIDI2LCAyNTUsIDE1LCAyNTMsIAotICAgIDIwMiwgMTIzLCAyMTYsIDE0OSwgMjE4LCAxNTIsIDI2LCAyNTUsIDE1LCAyNTMsIDIwMiwgMjE2LCAyNDksIDIxNiwgMTQ5LCAKLSAgICAyMTgsIDE1MiwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDEyMywgMjE2LCAxNDksIDIxOCwgMTUyLCAyNiwgMjU1LCAKLSAgICAxNSwgMjUzLCAyMDIsIDIxNiwgMjQ5LCAyMzAsIDE2OSwgMjYsIDI1NSwgMTUsIDI0MSwgMjEyLCAxMjMsIDIyNSwgMzQsIAotICAgIDI2LCAyNTUsIDE1LCAyMTYsIDE4MiwgMTExLCAyNiwgMjU1LCAxNSwgMjQxLCAyMDgsIDExMSwgMjYsIDI1NSwgMTUsIDI0NSwgCi0gICAgMTEyLCAxMDUsIDI2LCAyNTUsIDE1LCAyMTYsIDE4MiwgMTA1LCAyNiwgMjU1LCAxNSwgMjQ5LCA3MywgMTEzLCAyNDYsIAotICAgIDEwNywgMjYsIDI1NSwgMTUsIDI0NSwgMTEyLCAxMTMsIDI0NiwgMTA3LCAyNiwgMjU1LCAxNSwgMjE1LCAyMDQsIDE5MCwgCi0gICAgMjYsIDI1NSwgMTUsIDIxNSwgMjA0LCAyMTYsIDI0OCwgMjYsIDI1NSwgMTUsIDIxNSwgMjA0LCAyMTYsIDI0OSwgMjU0LCAKLSAgICAxNDksIDE3LCAyNiwgMjU1LCAxNSwgMjQxLCAyMDgsIDIxNiwgMjQ4LCAyNiwgMjU1LCAxNSwgMjMxLCA0NiwgMjE2LCAyNDgsIAotICAgIDI2LCAyNTUsIDE1LCAyMTYsIDE4MiwgMjE2LCAyNDgsIDI2LCAyNTUsIDE1LCAyMTYsIDE4MiwgMjE2LCAxNjMsIDI2LCAKLSAgICAyNTUsIDE1LCAyMTUsIDIwNCwgMjQ0LCAxMjIsIDI2LCAyNTUsIDE1LCAyMTUsIDIwNCwgMjQ0LCAxMjMsIDI1NCwgMTQ5LCAKLSAgICAxNywgMjYsIDI1NSwgMTUsIDI0MSwgMjA4LCAyNDQsIDEyMiwgMjYsIDI1NSwgMTUsIDIxNiwgMTgyLCAyNDQsIDEyMiwgMjYsIAotICAgIDI1NSwgMTUsIDIxNiwgMTgyLCAxMjMsIDI0MCwgMjE3LCAyNiwgMjU1LCAxNSwgMjE2LCAxODIsIDEzNCwgMjQwLCAyMTcsIAotICAgIDI2LCAyNTUsIDE1LCAyNDUsIDExMiwgMjQ0LCA4OSwgMjQwLCAyMTcsIDI2LCAyNTUsIDE1LCAyMTUsIDIwNCwgMjQ0LCA4OSwgCi0gICAgMjQwLCAyMTcsIDI2LCAyNTUsIDE1LCAyMTYsIDE4MiwgMjQ0LCA4OSwgMjQwLCAyMTcsIDI2LCAyNTUsIDE1LCAyNTAsIAotICAgIDIzNSwgMjQ0LCA4OSwgMjQwLCAyMTcsIDI2LCAyNTUsIDE1LCAyMjksIDE4NywgMjQ0LCA4OSwgMjQwLCAyMTcsIDI2LCAKLSAgICAyNTUsIDE1LCAyMTYsIDE4MiwgMTIzLCAyMTYsIDE0OCwgMjYsIDI1NSwgMTUsIDIxNiwgMTgyLCAyNDQsIDg5LCAyMTYsIAotICAgIDE0OCwgMjYsIDI1NSwgMTUsIDI0OCwgNjUsIDI0NCwgODksIDIzMCwgMTY5LCAyNiwgMjU1LCAxNSwgMjE4LCAxMjAsIDI0NCwgCi0gICAgMTIzLCAyMzAsIDE2OSwgMjYsIDEyMywgMTYzLCA1MCwgMjYsIDEyMywgMTYzLCA1LCAyNTQsIDE0OSwgMTcsIDI2LCAxMTMsIAotICAgIDIxNiwgMTY4LCA1MCwgMjYsIDEzNCwgMjI0LCAyMywgNTAsIDI2LCAyMTEsIDQ1LCA1MCwgMjYsIDIxNywgNjksIDUwLCAyNiwgCi0gICAgMjQ2LCAxMDksIDUwLCAyNiwgMjI2LCAyNTAsIDUwLCAyNiwgMTEzLCAyMjYsIDI0OSwgNTAsIDI2LCAxMzQsIDIyNiwgMjQ5LCAKLSAgICA1MCwgMjYsIDI0NCwgMTksIDIyNiwgMjQ5LCA1MCwgMjYsIDI0NCwgODksIDIyNiwgMjQ5LCA1MCwgMjYsIDIzMSwgNDAsIAotICAgIDUwLCAyNiwgMjMzLCAxNjMsIDI1MiwgMTM2LCA1MCwgMjYsIDIzMiwgMjAwLCA1MCwgMjYsIDIyNiwgMTM1LCA1MCwgMjYsIAotICAgIDIxMSwgMTU5LCA1MCwgMjYsIDI1MywgMjUxLCA1MCwgMjYsIDI1NCwgOCwgNTAsIDI2LCAyNDIsIDE1MSwgNTAsIDI2LCAKLSAgICAyMTUsIDE4NywgMjUyLCAxMzYsIDUwLCAyNiwgMjEwLCA4NywgNTAsIDIyMiwgMjAwLCAyMjAsIDExNSwgNTAsIDIyMiwgCi0gICAgMjAwLCAyMTQsIDE4NSwgNTAsIDIyMiwgMjAwLCAyMjAsIDE0NCwgNTAsIDIyMiwgMjAwLCAyMjAsIDExMywgNTAsIDIyMiwgCi0gICAgMjAwLCAyNDcsIDIyMSwgMjIwLCAxMTMsIDUwLCAyMjIsIDIwMCwgMjE5LCAxNzAsIDUwLCAyMjIsIDIwMCwgMjQ4LCA2MSwgCi0gICAgNTAsIDIyMiwgMjAwLCAyMjQsIDksIDUwLCAyMjIsIDIwMCwgMjIwLCAxMzEsIDUwLCAyMjIsIDIwMCwgMjQ2LCA2OCwgNTAsIAotICAgIDIyMiwgMjAwLCAyNTMsIDI0NiwgNTAsIDIyMiwgMjAwLCAyNTAsIDE3OSwgNTAsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgCi0gICAgMjI1LCAyMTYsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjI1LCAyNywgMjQxLCAyNDIsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgCi0gICAgNSwgMjE3LCA0NiwgMjQxLCAyNDIsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjUwLCAyNTUsIDIyNSwgMTQ2LCAyNDcsIAotICAgIDE5OSwgNSwgMjUwLCAxMDksIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjExLCAyMjEsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgCi0gICAgMjQxLCAyMTgsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjQzLCA5MiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMTYsIAotICAgIDExNywgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCA3NSwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyNTEsIDE3NywgMjI1LCAKLSAgICAxNDYsIDI0NywgMTk5LCA1LCAyMjAsIDMxLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI0OSwgMjUyLCAyMjUsIDE0NiwgCi0gICAgMjQ3LCAxOTksIDUsIDIzMSwgMTg5LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDIzMSwgMTQxLCAyMjUsIDE0NiwgMjQ3LCAKLSAgICAxOTksIDUsIDIyMSwgMjE4LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDIzMiwgMjQzLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIAotICAgIDI1MSwgMTk2LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI1MCwgMjM5LCAyMjUsIDM4LCAyMjUsIDE0NiwgMjQ3LCAxOTksIAotICAgIDUsIDI0NywgMTQxLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI0OSwgMjMxLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDIxOSwgCi0gICAgODksIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjQ5LCAyMzIsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjUyLCA3MSwgMjI1LCAKLSAgICAxNDYsIDI0NywgMTk5LCA1LCAyMjAsIDE4LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI0MCwgMjU1LCAyMjUsIDE0NiwgCi0gICAgMjQ3LCAxOTksIDUsIDI0MSwgMTg1LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI1MSwgMTIwLCAyMzMsIDQyLCAyMjUsIAotICAgIDE0NiwgMjQ3LCAxOTksIDUsIDI1MCwgMjMyLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDIyMywgMTU2LCAyMjUsIDE0NiwgCi0gICAgMjQ3LCAxOTksIDUsIDI0NSwgMjM4LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI0NiwgMTE1LCAyMjUsIDE0NiwgMjQ3LCAKLSAgICAxOTksIDUsIDIxNSwgMTA2LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI1MiwgNzQsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgCi0gICAgMjI1LCAzOSwgMjE1LCAyMzYsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjEzLCAxNTksIDIyNSwgMTQ2LCAyNDcsIDE5OSwgCi0gICAgNSwgMjI2LCAyMiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMjIsIDE5MiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMzIsIAotICAgIDIzMCwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMjYsIDExOSwgMjUyLCAxOTIsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgCi0gICAgMjQ0LCA1NiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyNDIsIDE0NSwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMTgsIAotICAgIDEyMSwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCA0LCAyNTMsIDE3NiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMTIsIDMyLCAKLSAgICAyNTIsIDE1NiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAzOCwgMjI2LCAyNTIsIDkxLCAyMzIsIDY1LCAxLCA2MSwgMjMyLCAKLSAgICA2NSwgMSwgNzYsIDIzMiwgNjUsIDEsIDI1MywgMTY2LCAyMzIsIDY1LCAxLCAyNTIsIDI3LCAyMzIsIDY1LCAxLCAyNDMsIAotICAgIDIwOSwgMjMyLCA2NSwgMSwgMjQ5LCA2OCwgMjMyLCA2NSwgMSwgNzQsIDIzMiwgNjUsIDEsIDIxMiwgOTgsIDIzMiwgNjUsIAotICAgIDEsIDIxMCwgMTU5LCAyMzIsIDY1LCAxLCAyMTYsIDIxMSwgMjMyLCA2NSwgMSwgMjM1LCAxNTAsIDIzMiwgNjUsIDEsIDIzNSwgCi0gICAgMjksIDIzMiwgNjUsIDEsIDIyNCwgOTksIDIzMiwgNjUsIDEsIDE1NiwgMjMyLCA2NSwgMSwgMTk0LCAyMzIsIDY1LCAxLCAKLSAgICAyMzAsIDMwLCAyMzIsIDY1LCAxLCAyMzAsIDE3MSwgMjMyLCA2NSwgMSwgMjI4LCAxMTYsIDIzMiwgNjUsIDEsIDY5LCAyMzIsIAotICAgIDY1LCAxLCAyMjYsIDEwOSwgMjMyLCA2NSwgMSwgMjM0LCA1MywgMjMyLCA2NSwgMSwgMTUzLCAyMzIsIDY1LCAxLCAyMjIsIAotICAgIDkzLCAyMzIsIDY1LCAxLCAyMTcsIDE1MywgMjMyLCA2NSwgMSwgMjE1LCAxNjAsIDIzMiwgNjUsIDEsIDI1NCwgMTMxLCAKLSAgICAyMzIsIDY1LCAxLCAyNDUsIDE1OCwgMjMyLCA2NSwgMSwgMjQyLCA2NywgMjMyLCA2NSwgMSwgMjExLCAxNzgsIDI1MCwgCi0gICAgMjQ1LCAxLCA2MSwgMjUwLCAyNDUsIDEsIDIyNiwgOTUsIDI1MCwgMjQ1LCAxLCAyNDksIDY4LCAyNTAsIDI0NSwgMSwgMTU2LCAKLSAgICAyNTAsIDI0NSwgMSwgMjE0LCAxMTYsIDI1MCwgMjQ1LCAxLCAxNTMsIDI1MCwgMjQ1LCAxLCAyMzMsIDY4LCAyNTAsIDI0NSwgCi0gICAgMSwgMjU1LCA4NCwgMjUwLCAyNDUsIDEsIDIyNCwgOTksIDI1MCwgMjQ1LCAxLCAyNTMsIDE2NiwgMjUwLCAyNDUsIDEsIAotICAgIDE5NCwgMjUwLCAyNDUsIDEsIDc4LCAyNTAsIDI0NSwgMSwgMjQ4LCAyMzEsIDI1MCwgMjQ1LCAxLCAyMTcsIDE1MywgMjUwLCAKLSAgICAyNDUsIDEsIDIyMCwgMTA2LCAyNTAsIDI0NSwgMSwgMjIwLCAxMDUsIDI1MCwgMjQ1LCAxLCAyMjIsIDkzLCAyNTAsIDI0NSwgCi0gICAgMSwgMjUxLCA3MywgMjUwLCAyNDUsIDEsIDY5LCAyNTAsIDI0NSwgMSwgMjI4LCAxMTYsIDI1MCwgMjQ1LCAxLCAyMTEsIAotICAgIDE3OCwgMjUwLCAyNDUsIDEsIDIzMCwgMzAsIDI1MCwgMjQ1LCAxLCAyMTUsIDE1OSwgMjUwLCAyNDUsIDEsIDIyNiwgMTA5LCAKLSAgICAyNTAsIDI0NSwgMSwgMjE4LCAyMjgsIDI1MCwgMjQ1LCAxLCA3NCwgMjUwLCAyNDUsIDEsIDc2LCAyNTAsIDI0NSwgMSwgCi0gICAgMjE0LCAxMTMsIDI1MCwgMjQ1LCAxLCAyMzUsIDI5LCAyNTAsIDI0NSwgMSwgMjM1LCAyMCwgMjUwLCAyNDUsIDEsIDIyOSwgCi0gICAgMTU1LCAyNTAsIDI0NSwgMSwgMjE0LCAxMTgsIDI1MCwgMjQ1LCAxLCAyNDMsIDIwOSwgMjUwLCAyNDUsIDEsIDI0MywgMTQ0LCAKLSAgICAyNTAsIDI0NSwgMSwgMjE4LCAxNzAsIDI1MCwgMjQ1LCAxLCAyMTgsIDE2OSwgMjUwLCAyNDUsIDEsIDIyOSwgODQsIDI1MCwgCi0gICAgMjQ1LCAxLCAyMzYsIDQwLCAyNTAsIDI0NSwgMSwgMjUxLCA3MiwgMjUwLCAyNDUsIDEsIDIxNSwgMTYwLCAyNTAsIDI0NSwgCi0gICAgMSwgMjE0LCAxMTUsIDI1MCwgMjQ1LCAxLCAyMjIsIDE4MiwgMjUwLCAyNDUsIDEsIDIzMSwgMTM0LCAyNTAsIDI0NSwgMSwgCi0gICAgMjMxLCAxMzMsIDI1MCwgMjQ1LCAxLCAyMzEsIDEzMiwgMjUwLCAyNDUsIDEsIDIzMSwgMTMxLCAyNTAsIDI0NSwgMSwgMjMzLCAKLSAgICA2NywgMjUwLCAyNDUsIDEsIDI0NSwgMjQyLCAyNTAsIDI0NSwgMSwgMjE0LCAxMTQsIDU1LCAzMiwgMSwgNjEsIDU1LCAzMiwgCi0gICAgMSwgMjUyLCA4MywgNTUsIDMyLCAxLCAyMzQsIDE4OCwgNTUsIDMyLCAxLCAyNDgsIDk4LCA1NSwgMzIsIDEsIDc2LCA1NSwgCi0gICAgMzIsIDEsIDIxMywgMjU1LCA1NSwgMzIsIDEsIDIxMCwgOTQsIDU1LCAzMiwgMSwgMjQxLCAyNDUsIDU1LCAzMiwgMSwgMjE2LCAKLSAgICAxOTYsIDU1LCAzMiwgMSwgNzQsIDU1LCAzMiwgMSwgMTc2LCA1NSwgMzIsIDEsIDI0NSwgMTgyLCA1NSwgMzIsIDEsIDI0NSwgCi0gICAgMTY3LCA1NSwgMzIsIDEsIDI0NSwgMTU4LCA1NSwgMzIsIDEsIDI0NSwgODMsIDU1LCAzMiwgMSwgNzgsIDU1LCAzMiwgMSwgCi0gICAgMjI1LCAyMjQsIDU1LCAzMiwgMSwgMjIwLCA2NSwgNTUsIDMyLCAxLCAyMzMsIDIyMywgNTUsIDMyLCAxLCAyNDUsIDEwMCwgCi0gICAgNTUsIDMyLCAxLCAyNDUsIDkwLCA1NSwgMzIsIDEsIDIxNywgMjMsIDU1LCAzMiwgMSwgNjksIDU1LCAzMiwgMSwgMjQ1LCAKLSAgICAxODUsIDU1LCAzMiwgMSwgMjI1LCAxMzksIDU1LCAzMiwgMSwgMjM0LCAxMjUsIDU1LCAzMiwgMSwgMjQ1LCAyMTAsIDU1LCAKLSAgICAzMiwgMSwgMjQ1LCA5MiwgNTUsIDMyLCAxLCAyNTAsIDEzOSwgNTUsIDMyLCAxLCAyMzYsIDQwLCA1NSwgMzIsIDEsIDIxNCwgCi0gICAgMTE4LCA1NSwgMzIsIDIyNywgMjAyLCAxMTEsIDU1LCAzMiwgMjI3LCAyMDIsIDE5MCwgNTUsIDMyLCAyMjcsIDIwMiwgMjE2LCAKLSAgICAyNDgsIDU1LCAzMiwgMjI3LCAyMDIsIDI0NCwgMTIyLCAyNDIsIDE2MCwgMSwgMjU0LCAyMTMsIDI0MiwgMTYwLCAxLCAyNTIsIAotICAgIDE3MSwgMjQyLCAxNjAsIDEsIDI0MiwgMjE4LCAyNDIsIDE2MCwgMSwgMjQ4LCAyMTIsIDI0MiwgMTYwLCAxLCAyNTQsIDIwOSwgCi0gICAgMjQyLCAxNjAsIDEsIDIyNCwgODIsIDI0MiwgMTYwLCAxLCAyMzUsIDE2MSwgMjQyLCAxNjAsIDEsIDI0MiwgNDYsIDI0MiwgCi0gICAgMTYwLCAxLCAyMTYsIDE1OSwgMjQyLCAxNjAsIDEsIDI0NSwgMTkxLCAyNDIsIDE2MCwgMSwgMjMzLCAxOTYsIDI0MiwgMTYwLCAKLSAgICAxLCAyMzMsIDExOSwgMjQyLCAxNjAsIDEsIDIzMSwgMTg0LCAyNDIsIDE2MCwgMSwgMjI5LCAxODksIDI0MiwgMTYwLCAxLCAKLSAgICAyMzUsIDEyNSwgMjQyLCAxNjAsIDEsIDIxNCwgMTM2LCAyNDIsIDE2MCwgMSwgMjI2LCA3MywgMjQyLCAxNjAsIDEsIDIyOCwgCi0gICAgMjAwLCAyNDIsIDE2MCwgMSwgMjIzLCAxNjgsIDI0MiwgMTYwLCAxLCAyMjEsIDIyMCwgMjQyLCAxNjAsIDEsIDIxNywgNSwgCi0gICAgMjQyLCAxNjAsIDEsIDIxMSwgMjM0LCAyNDIsIDE2MCwgMSwgMjQ0LCAxODYsIDI0MiwgMTYwLCAxLCAyMzYsIDQ0LCAyNDIsIAotICAgIDE2MCwgMSwgMjQwLCAyMDYsIDI0MiwgMTYwLCAxLCAyMjYsIDE0MywgMjQyLCAxNjAsIDEsIDIyOCwgMjA1LCAyNDAsIDIxNywgCi0gICAgMjE0LCAyMDksIDEsIDI1NCwgMTU1LCAyMTQsIDIwOSwgMSwgMjUyLCAzNCwgMjE0LCAyMDksIDEsIDI0MywgMTE1LCAyMTQsIAotICAgIDIwOSwgMSwgMjM0LCAxMzgsIDIxNCwgMjA5LCAxLCAyNDgsIDYyLCAyMTQsIDIwOSwgMSwgMjQxLCA3NSwgMjE0LCAyMDksIAotICAgIDEsIDIxMSwgMjI3LCAyMTQsIDIwOSwgMSwgMjEwLCA4NSwgMjE0LCAyMDksIDEsIDI0MCwgMjQ4LCAyMTQsIDIwOSwgMSwgCi0gICAgMjE2LCAyMzEsIDIxNCwgMjA5LCAxLCAyMTAsIDIzMywgMjE0LCAyMDksIDEsIDIzNSwgMCwgMjE0LCAyMDksIDEsIDIyMCwgCi0gICAgMjIsIDIxNCwgMjA5LCAxLCAyMzMsIDEwNCwgMjE0LCAyMDksIDEsIDIzMSwgNzAsIDIxNCwgMjA5LCAxLCAyNDgsIDI5LCAKLSAgICAyMTQsIDIwOSwgMSwgMjI3LCAxOTgsIDIxNCwgMjA5LCAxLCAyMTAsIDEzLCAyMTQsIDIwOSwgMSwgMjIxLCAyNTAsIDIxNCwgCi0gICAgMjA5LCAxLCAyNTQsIDIwNSwgMjE0LCAyMDksIDEsIDIyNCwgMTUzLCAyMTQsIDIwOSwgMSwgMjIyLCAyNywgMjE0LCAyMDksIAotICAgIDEsIDIyNCwgMzgsIDIxNCwgMjA5LCAxLCAyMjMsIDE0NywgMjE0LCAyMDksIDEsIDIxNiwgMjAwLCAyMTQsIDIwOSwgMSwgCi0gICAgMjQyLCAyNTEsIDIxNCwgMjA5LCAxLCAxMTIsIDIxNCwgMjA5LCAxLCA3NCwgMjE0LCAyMDksIDEsIDY5LCAyMTQsIDIwOSwgCi0gICAgMSwgMjE4LCAxODEsIDIxNCwgMjA5LCAyMTEsIDIwOSwgMjQ3LCAxODAsIDU1LCAyMjUsIDE3MiwgNSwgNjEsIDU1LCAyMjUsIAotICAgIDE3MiwgNSwgNzQsIDU1LCAyMjUsIDE3MiwgNSwgNjksIDU1LCAyMjUsIDE3MiwgNSwgMTc2LCA1NSwgMjI1LCAxNzIsIDUsIAotICAgIDIzMywgMjIzLCA1NSwgMjI1LCAxNzIsIDUsIDI0MywgMTQyLCA1NSwgMjI1LCAxNzIsIDUsIDI0MiwgMTIwLCA1NSwgMjI1LCAKLSAgICAxNzIsIDUsIDIxMSwgMTY1LCA1NSwgMjI1LCAxNzIsIDUsIDI1MSwgNDEsIDU1LCAyMjUsIDE3MiwgNSwgMjM1LCAxNDcsIAotICAgIDU1LCAyMjUsIDE3MiwgNSwgMjM1LCAxMTQsIDU1LCAyMjUsIDE3MiwgNSwgMjE3LCAxMDYsIDU1LCAyMjUsIDE3MiwgNSwgCi0gICAgMjE1LCAxMTksIDU1LCAyMjUsIDE3MiwgNSwgMjQ4LCAyMjksIDU1LCAyMjUsIDE3MiwgNSwgMjQ4LCAxMSwgNTUsIDIyNSwgCi0gICAgMTcyLCA1LCAyNDYsIDg2LCA1NSwgMjI1LCAxNzIsIDUsIDIxNiwgMjA5LCA1NSwgMjI1LCAxNzIsIDUsIDE5MSwgNTUsIAotICAgIDIyNSwgMTcyLCA1LCAyNTIsIDE5OSwgNTUsIDIyNSwgMTcyLCA1LCAyNDQsIDIwNCwgNTUsIDIyNSwgMTcyLCA1LCAxOTgsIAotICAgIDU1LCAyMjUsIDE3MiwgNSwgMjI3LCAyNDIsIDU1LCAyMjUsIDE3MiwgNSwgMTg2LCA1NSwgMjI1LCAxNzIsIDUsIDIzMCwgCi0gICAgMjM1LCA1NSwgMjI1LCAxNzIsIDUsIDIzMCwgMTA3LCA1NSwgMjI1LCAxNzIsIDUsIDE5MiwgNTUsIDIyNSwgMTcyLCA1LCAKLSAgICAyMTQsIDI3LCA1NSwgMjI1LCAxNzIsIDUsIDIxMywgMTc2LCA1NSwgMjI1LCAxNzIsIDUsIDIwNSwgNTUsIDIyNSwgMTcyLCAKLSAgICA1LCAyMjIsIDE0MiwgNTUsIDIyNSwgMTcyLCA1LCAyMzMsIDE0MSwgNTUsIDIyNSwgMTcyLCA1LCAyMDYsIDU1LCAyMjUsIAotICAgIDE3MiwgNSwgMjEwLCAxMTYsIDU1LCAyMjUsIDE3MiwgNSwgMjIwLCAxMDQsIDU1LCAyMjUsIDE3MiwgNSwgMjE4LCAyMjUsIAotICAgIDU1LCAyMjUsIDE3MiwgNSwgMTYyLCA1NSwgMjI1LCAxNzIsIDUsIDI1MywgMTk0LCA1NSwgMjI1LCAxNzIsIDUsIDI1MywgCi0gICAgMTkzLCA1NSwgMjI1LCAxNzIsIDUsIDI1MywgMTkyLCA1NSwgMjI1LCAxNzIsIDUsIDIxMSwgMTQyLCA1NSwgMjI1LCAxNzIsIAotICAgIDUsIDI0OCwgMjA4LCA1NSwgMjI1LCAxNzIsIDUsIDI0OCwgMjA3LCA1NSwgMjI1LCAxNzIsIDUsIDI1MiwgMTc4LCA1NSwgCi0gICAgMjI1LCAxNzIsIDUsIDI1MSwgOTMsIDU1LCAyMjUsIDE3MiwgMjExLCAyMDksIDI0NywgMTgwLCA1NSwgMjI1LCAxNzIsIDU0LCAKLSAgICAxMTEsIDU1LCAyMjUsIDE3MiwgNTQsIDEwNSwgNTUsIDIyNSwgMTcyLCA1NCwgMjE2LCAyNDgsIDU1LCAyMjUsIDE3MiwgNTQsIAotICAgIDIxNSwgNzMsIDU1LCAyMjUsIDE3MiwgNTQsIDI0MCwgMjE3LCAxODEsIDYsIDEsIDIwMCwgNzQsIDE4MSwgNiwgMSwgMjAwLCAKLSAgICA3NiwgMTgxLCA2LCAxLCAyMDAsIDYxLCAxODEsIDYsIDEsIDIwMCwgMjU0LCAyMTgsIDE4MSwgNiwgMSwgMjAwLCA3OCwgCi0gICAgMTgxLCA2LCAxLCAyMDAsIDIyNiwgMTg3LCAxODEsIDYsIDEsIDIxOSwgMjUzLCA3NCwgMTgxLCA2LCAxLCAyMTksIDI1MywgCi0gICAgNzYsIDE4MSwgNiwgMSwgMjE5LCAyNTMsIDYxLCAxODEsIDYsIDEsIDIxOSwgMjUzLCAyNTQsIDIxOCwgMTgxLCA2LCAxLCAKLSAgICAyMTksIDI1MywgNzgsIDE4MSwgNiwgMSwgMjE5LCAyNTMsIDIyNiwgMTg3LCAxODEsIDYsIDEsIDI1MywgMTc1LCAxODEsIDYsIAotICAgIDEsIDIyNiwgMTIwLCAxODEsIDYsIDEsIDIxMSwgMTk1LCAxODEsIDYsIDEsIDIxMSwgNDQsIDE4MSwgNiwgMSwgMjQyLCA2NywgCi0gICAgMTgxLCA2LCAxLCAyMjUsIDIxNCwgMTgxLCA2LCAxLCAyNTIsIDc0LCAxODEsIDYsIDEsIDIxNywgMTIsIDE4MSwgNiwgMSwgCi0gICAgMjQ4LCA4NSwgMTgxLCA2LCAxLCAyNTAsIDEzNiwgMTgxLCA2LCAxLCAyMzUsIDEzMCwgMTgxLCA2LCAxLCAyMzQsIDE5NSwgCi0gICAgMTgxLCA2LCAxLCAyNDMsIDkwLCAxODEsIDYsIDEsIDI0NSwgMjEwLCAxODEsIDYsIDEsIDIxMywgMjUwLCAxODEsIDYsIDEsIAotICAgIDI0NSwgNjcsIDE4MSwgNiwgMSwgMjE2LCAxOTUsIDE4MSwgNiwgMSwgMjQ1LCA5MCwgMTgxLCA2LCAxLCAyMTAsIDkyLCAKLSAgICAxODEsIDYsIDEsIDI0NSwgODMsIDE4MSwgNiwgMSwgMjEwLCA3MywgMTgxLCA2LCAxLCAyNDUsIDEwMCwgMTgxLCA2LCAxLCAKLSAgICAyNDUsIDE4MiwgMTgxLCA2LCAxLCAyNDUsIDE2NywgMTgxLCA2LCAxLCAyNDUsIDE1OCwgMTgxLCA2LCAxLCAyNDUsIDE0NiwgCi0gICAgMTgxLCA2LCAxLCAyMjYsIDIyMywgMTgxLCA2LCAxLCAyNDUsIDQ2LCAxODEsIDQsIDEsIDIwMCwgNzQsIDE4MSwgNCwgMSwgCi0gICAgMjAwLCA3NiwgMTgxLCA0LCAxLCAyMDAsIDYxLCAxODEsIDQsIDEsIDIwMCwgMjU0LCAyMTgsIDE4MSwgNCwgMSwgMjAwLCAKLSAgICA3OCwgMTgxLCA0LCAxLCAyMDAsIDIyNiwgMTg3LCAxODEsIDQsIDEsIDIxOSwgMjUzLCA3NCwgMTgxLCA0LCAxLCAyMTksIAotICAgIDI1MywgNzYsIDE4MSwgNCwgMSwgMjE5LCAyNTMsIDYxLCAxODEsIDQsIDEsIDIxOSwgMjUzLCAyNTQsIDIxOCwgMTgxLCA0LCAKLSAgICAxLCAyMTksIDI1MywgNzgsIDE4MSwgNCwgMSwgMjE5LCAyNTMsIDIyNiwgMTg3LCAxODEsIDQsIDEsIDI1MywgMTc1LCAxODEsIAotICAgIDQsIDEsIDIyNiwgMTIwLCAxODEsIDQsIDEsIDIxMSwgMTk1LCAxODEsIDQsIDEsIDIxMSwgNDQsIDE4MSwgNCwgMSwgMjQyLCAKLSAgICA2NywgMTgxLCA0LCAxLCAyMjUsIDIxNCwgMTgxLCA0LCAxLCAyNTIsIDc0LCAxODEsIDQsIDEsIDIxNywgMTIsIDE4MSwgNCwgCi0gICAgMSwgMjQ4LCA4NSwgMTgxLCA0LCAxLCAyNTAsIDEzNiwgMTgxLCA0LCAxLCAyMzUsIDEzMCwgMTgxLCA0LCAxLCAyMzQsIAotICAgIDE5NSwgMTgxLCA0LCAxLCAyNDMsIDkwLCAxODEsIDQsIDEsIDI0NSwgMjEwLCAxODEsIDQsIDEsIDIxMywgMjUwLCAxODEsIAotICAgIDQsIDEsIDI0NSwgNjcsIDE4MSwgNCwgMSwgMjE2LCAxOTUsIDE4MSwgNCwgMSwgMjQ1LCA5MCwgMTgxLCA0LCAxLCAyMTAsIAotICAgIDkyLCAxODEsIDQsIDEsIDI0NSwgODMsIDE4MSwgNCwgMSwgMjEwLCA3MywgMTgxLCA0LCAxLCAyNDUsIDEwMCwgMTgxLCA0LCAKLSAgICAxLCAyNDUsIDE4MiwgMTgxLCA0LCAxLCAyNDUsIDE2NywgMTgxLCA0LCAxLCAyNDUsIDE1OCwgMTgxLCA0LCAxLCAyNDUsIAotICAgIDE0NiwgMTgxLCA0LCAxLCAyMjYsIDIyMywgMTgxLCA0LCAxLCAyNDUsIDQ2LCAyMjAsIDcxLCAxLCAyMjUsIDIxMiwgMjIwLCAKLSAgICA3MSwgMSwgMjE2LCA2LCAyMjAsIDcxLCAxLCAyMzQsIDk3LCAyMjAsIDcxLCAxLCAyNDQsIDE1NSwgMjIwLCA3MSwgMSwgCi0gICAgMjE2LCAxNzMsIDIyMCwgNzEsIDEsIDIxOSwgNjAsIDIyMCwgNzEsIDEsIDIxOCwgMTUsIDIyMCwgNzEsIDEsIDI1MCwgNjksIAotICAgIDIyMCwgNzEsIDEsIDIxMSwgNDYsIDIyMCwgNzEsIDEsIDI0MCwgMjE2LCAyMjAsIDcxLCAxLCAyNTIsIDEzLCAyMjAsIDcxLCAKLSAgICAxLCAyNDgsIDk3LCAyMjAsIDcxLCAxLCAyNDMsIDEyOCwgMjIwLCA3MSwgMSwgMjEzLCAxMjMsIDIyMCwgNzEsIDEsIDIxNiwgCi0gICAgMTc3LCAyMjAsIDcxLCAxLCAyMTAsIDIxLCAyMjAsIDcxLCAxLCAyMzEsIDk0LCAyMjAsIDcxLCAxLCAyMzUsIDU1LCAyMjAsIAotICAgIDcxLCAxLCAyMTEsIDIyNSwgMjIwLCA3MSwgMSwgMjQyLCA1NSwgMjIwLCA3MSwgMSwgMjMyLCAxNDgsIDIyMCwgNzEsIDEsIAotICAgIDIzMCwgMTk0LCAyMjAsIDcxLCAxLCAyMzYsIDQ3LCAyMjAsIDcxLCAxLCAyNDUsIDIwOSwgMjIwLCA3MSwgMSwgMjUzLCAKLSAgICAyMzksIDIyMCwgNzEsIDEsIDI1NSwgMCwgMjIwLCA3MSwgMSwgMjI2LCAyMDAsIDIyMCwgNzEsIDEsIDIxMSwgMjEyLCAyMjAsIAotICAgIDcxLCAxLCAyMjYsIDEzNCwgMjIwLCA3MSwgMSwgMjU0LCAyMTgsIDIyMCwgNzEsIDEsIDIyMiwgMjEwLCAyMjAsIDcxLCAxLCAKLSAgICAyMjcsIDE5OCwgMjIwLCA3MSwgMSwgMjQ1LCAyMjUsIDIyMCwgNzEsIDEsIDI1NCwgMjIzLCAyMjAsIDcxLCAxLCAyNDAsIAotICAgIDExOCwgMjIwLCA3MSwgMSwgMjE0LCAxNjMsIDIyMCwgNzEsIDEsIDIyNywgMiwgMjIwLCA3MSwgMSwgMjI2LCAxODAsIDIyMCwgCi0gICAgNzEsIDEsIDIyNiwgMjIyLCAyMjAsIDcxLCAxLCAyNTMsIDE3OCwgMjIwLCA3MSwgMSwgMjU0LCAyNywgMjIwLCA3MSwgMSwgCi0gICAgMjI2LCAxNjIsIDIyMCwgNzEsIDEsIDI1NCwgMjAxLCAyMjAsIDcxLCAxLCAyNDUsIDk0LCAyMjAsIDcxLCAxLCAyNTQsIDUsIAotICAgIDIyMCwgNzEsIDEsIDI0NSwgMjM1LCAyMjAsIDcxLCAxLCAyNDAsIDEyNSwgMjIwLCA3MSwgMSwgMjExLCAxMywgMjI2LCAKLSAgICAxNDUsIDEsIDI1NCwgMTc5LCAyMjYsIDE0NSwgMSwgMjUyLCAxOTksIDIyNiwgMTQ1LCAxLCAyMTcsIDEwNiwgMjI2LCAxNDUsIAotICAgIDEsIDIzNSwgMTQ3LCAyMjYsIDE0NSwgMSwgMjExLCAxNjUsIDIyNiwgMTQ1LCAxLCAyMzQsIDEzOCwgMjI2LCAxNDUsIDEsIAotICAgIDI0OCwgODQsIDIyNiwgMTQ1LCAxLCAyMDUsIDIyNiwgMTQ1LCAxLCAyMDYsIDIyNiwgMTQ1LCAxLCAyMjAsIDI4LCAyMjYsIAotICAgIDE0NSwgMSwgMjQ4LCAzMywgMjI2LCAxNDUsIDEsIDI1MCwgMjIzLCAyMjYsIDE0NSwgMSwgMjQzLCAxNDIsIDIyNiwgMTQ1LCAKLSAgICAxLCAyNDQsIDIwNCwgMjI2LCAxNDUsIDEsIDIyNCwgODksIDIyNiwgMTQ1LCAxLCAyMzUsIDE1LCAyMjYsIDE0NSwgMSwgCi0gICAgMjMzLCAxMzYsIDIyNiwgMTQ1LCAxLCAyMzAsIDIwNSwgMjI2LCAxNDUsIDEsIDIyNywgMTgyLCAyMjYsIDE0NSwgMSwgMjEyLCAKLSAgICAzMCwgMjI2LCAxNDUsIDEsIDE2MiwgMjI2LCAxNDUsIDEsIDE5MiwgMjI2LCAxNDUsIDEsIDYxLCAyMjYsIDE0NSwgMSwgNzYsIAotICAgIDIyNiwgMTQ1LCAxLCA3NCwgMjI2LCAxNDUsIDEsIDc4LCAyMjYsIDE0NSwgMSwgNjksIDIyNiwgMTQ1LCAxLCAyNTUsIDgyLCAKLSAgICAyMjYsIDE0NSwgMSwgMjQ1LCAyMTcsIDIyNiwgMTQ1LCAxLCAyMjYsIDE4NywgMjI2LCAxNDUsIDIxLCAyMTAsIDg2LCAyMjYsIAotICAgIDE0NSwgMjEsIDExMSwgMjI2LCAxNDUsIDIxLCAxMDUsIDIyNiwgMTQ1LCAyMSwgMTU4LCAyMjYsIDE0NSwgMjEsIDE2MSwgCi0gICAgMjI2LCAxNDUsIDIxLCAxOTAsIDIyNiwgMTQ1LCAyMSwgMTk1LCAyMjYsIDE0NSwgMjEsIDE5OSwgMjI2LCAxNDUsIDIxLCAKLSAgICAxOTYsIDIyNiwgMTQ1LCAyMSwgMjAxLCAyNDksIDc1LCAzLCA2MSwgMjQ5LCA3NSwgMywgNzYsIDI0OSwgNzUsIDMsIDc0LCAKLSAgICAyNDksIDc1LCAzLCA3OCwgMjQ5LCA3NSwgMywgNjksIDI0OSwgNzUsIDMsIDIzNSwgMTQ3LCAyNDksIDc1LCAzLCAyMzUsIAotICAgIDc0LCAyNDksIDc1LCAzLCAxNzYsIDI0OSwgNzUsIDMsIDIzNCwgMTg4LCAyNDksIDc1LCAzLCAyMzQsIDk4LCAyNDksIDc1LCAKLSAgICAzLCAyMzQsIDM0LCAyNDksIDc1LCAzLCAyMzMsIDIyMywgMjQ5LCA3NSwgMywgMjMzLCAxNDEsIDI0OSwgNzUsIDMsIDIzMywgCi0gICAgNjQsIDI0OSwgNzUsIDMsIDIzMiwgMjQ3LCAyNDksIDc1LCAzLCAyMzIsIDE2MiwgMjQ5LCA3NSwgMywgMjMyLCAxMDMsIAotICAgIDI0OSwgNzUsIDMsIDE4NiwgMjQ5LCA3NSwgMywgMjMxLCA5NiwgMjQ5LCA3NSwgMywgMjMwLCAyMzUsIDI0OSwgNzUsIDMsIAotICAgIDIzMCwgMTY2LCAyNDksIDc1LCAzLCAyMzAsIDEwNywgMjQ5LCA3NSwgMywgMTk4LCAyNDksIDc1LCAzLCAyMjksIDExMiwgCi0gICAgMjQ5LCA3NSwgMywgMjI4LCAyMzgsIDI0OSwgNzUsIDMsIDIyOCwgNzksIDI0OSwgNzUsIDMsIDIyNywgMjQyLCAyNDksIDc1LCAKLSAgICAzLCAxOTEsIDI0OSwgNzUsIDMsIDIyNSwgMjI0LCAyNDksIDc1LCAzLCAyMjUsIDExMSwgMjQ5LCA3NSwgMywgMjI1LCAxOSwgCi0gICAgMjQ5LCA3NSwgMywgMjI0LCAxNTMsIDI0OSwgNzUsIDMsIDIwNSwgMjQ5LCA3NSwgMywgMjIzLCAxMzEsIDI0OSwgNzUsIDMsIAotICAgIDIyMywgMzgsIDI0OSwgNzUsIDMsIDIyMiwgMjEzLCAyNDksIDc1LCAzLCAyMjIsIDE0MiwgMjQ5LCA3NSwgMywgMjA2LCAKLSAgICAyNDksIDc1LCAzLCAyMjEsIDE4MywgMjQ5LCA3NSwgMywgMjE5LCAxOTMsIDI0OSwgNzUsIDMsIDIxOSwgNjAsIDI0OSwgNzUsIAotICAgIDMsIDIxOCwgODQsIDI0OSwgNzUsIDMsIDIxNywgMTA2LCAyNDksIDc1LCAzLCAyMTcsIDIzLCAyNDksIDc1LCAzLCAyMTYsIAotICAgIDExOCwgMjQ5LCA3NSwgMywgMTEyLCAyNDksIDc1LCAzLCAyMTUsIDExOSwgMjQ5LCA3NSwgMywgMjEyLCA2NSwgMjQ5LCA3NSwgCi0gICAgMywgMjEyLCAyMiwgMjQ5LCA3NSwgMywgMjExLCAyNTAsIDI0OSwgNzUsIDMsIDIxMSwgMjI3LCAyNDksIDc1LCAzLCAyMTEsIAotICAgIDE2NSwgMjQ5LCA3NSwgMywgMjExLCAxNjIsIDI0OSwgNzUsIDMsIDIxMCwgMTE2LCAyNDksIDc1LCAzLCAyMTAsIDIzLCAKLSAgICAyMzYsIDgsIDI1NCwgMzUsIDEsIDI1NCwgMTc3LCAyMzYsIDgsIDI1NCwgMzUsIDEsIDI1MiwgMzMsIDIzNiwgOCwgMjU0LCAKLSAgICAzNSwgMSwgMjQyLCAyMDgsIDIzNiwgOCwgMjU0LCAzNSwgMSwgMjQ4LCAxOTYsIDIzNiwgOCwgMjU0LCAzNSwgMSwgMjQxLCAKLSAgICAyNDUsIDIzNiwgOCwgMjU0LCAzNSwgMSwgMjEyLCAzMCwgMjM2LCA4LCAyNTQsIDM1LCAxLCAyMTAsIDk3LCAyMzYsIDgsIAotICAgIDI1NCwgMzUsIDEsIDI0MSwgMjAyLCAyMzYsIDgsIDI1NCwgMzUsIDEsIDIxNiwgMjI3LCAyMzYsIDgsIDI1NCwgMzUsIDEsIAotICAgIDIxMCwgMjMyLCAyMzYsIDgsIDI1NCwgMzUsIDEsIDIzNCwgMjMxLCAyMzYsIDgsIDI1NCwgMzUsIDEsIDIzMywgOTksIDIzNiwgCi0gICAgOCwgMjU0LCAzNSwgMSwgMjMxLCA3MCwgMjM2LCA4LCAyNTQsIDM1LCAxLCAyMjcsIDE5OCwgMjM2LCA4LCAyNTQsIDM1LCAxLCAKLSAgICAyMjEsIDI1MSwgMjM2LCA4LCAyNTQsIDM1LCAxLCAyNTMsIDE3MCwgMjM2LCA4LCAyNTQsIDM1LCAxLCAyMjUsIDIyNCwgCi0gICAgMjM2LCA4LCAyNTQsIDM1LCAxLCAyMjIsIDI2LCAyMzYsIDgsIDI1NCwgMzUsIDEsIDIyNCwgMzcsIDIzNiwgOCwgMjU0LCAKLSAgICAzNSwgMSwgMjIzLCA3MCwgMjM2LCA4LCAyNTQsIDM1LCAxLCAyMjAsIDIyLCAyMzYsIDgsIDI1NCwgMzUsIDEsIDIxNywgMzcsIAotICAgIDIzNiwgOCwgMjU0LCAzNSwgMjIxLCAxNzUsIDUwLCAyMzYsIDgsIDI1NCwgMzUsIDU0LCAxMTEsIDIzNiwgOCwgMjU0LCAzNSwgCi0gICAgNTQsIDEwNSwgMjM2LCA4LCAyNTQsIDM1LCA1NCwgMTU4LCAyMzYsIDgsIDI1NCwgMzUsIDU0LCAyMTYsIDI0OCwgMjM2LCA4LCAKLSAgICAyNTQsIDM1LCA1NCwgMjE1LCA3MywgMjM2LCA4LCAyNTQsIDM1LCA1NCwgMTIzLCAyNDAsIDIxNywgMjM2LCA4LCAyNTQsIAotICAgIDM1LCA1NCwgMTIzLCAyMTYsIDE0OCwgMjM2LCA4LCAyNTQsIDM1LCA1NCwgMjE2LCAyNDksIDIxNiwgMTQ4LCAyMjUsIDEyMiwgCi0gICAgMSwgMjU0LCAxNzQsIDIyNSwgMTIyLCAxLCAyNTIsIDM2LCAyMjUsIDEyMiwgMSwgMjQzLCAxMTYsIDIyNSwgMTIyLCAxLCAKLSAgICAyNDgsIDY0LCAyMjUsIDEyMiwgMSwgMjQxLCAyNDUsIDIyNSwgMTIyLCAxLCAyMTIsIDM3LCAyMjUsIDEyMiwgMSwgMjEwLCAKLSAgICAxMTAsIDIyNSwgMTIyLCAxLCAyNDEsIDIwNCwgMjI1LCAxMjIsIDEsIDIxNiwgMjMxLCAyMjUsIDEyMiwgMSwgMjEwLCAyMzMsIAotICAgIDIyNSwgMTIyLCAxLCAyMzUsIDAsIDIyNSwgMTIyLCAxLCAyMzMsIDEwNSwgMjI1LCAxMjIsIDEsIDIzMSwgNzAsIDIyNSwgCi0gICAgMTIyLCAxLCAyMjcsIDE5OCwgMjI1LCAxMjIsIDEsIDIyMCwgMTQ2LCAyMjUsIDEyMiwgMSwgMjU0LCAyMDUsIDIyNSwgMTIyLCAKLSAgICAxLCAyMjUsIDIyNCwgMjI1LCAxMjIsIDEsIDIyMiwgMjcsIDIyNSwgMTIyLCAxLCAyMjQsIDQyLCAyMjUsIDEyMiwgMSwgCi0gICAgMjIyLCAxOTEsIDIyNSwgMTIyLCAxLCAyMjAsIDIyLCAyMjUsIDEyMiwgMSwgMjE3LCA0MiwgMjI1LCAxMjIsIDU0LCAxMTEsIAotICAgIDIyNSwgMTIyLCA1NCwgMjE2LCAyNDgsIDIyNSwgMTIyLCA1NCwgMjE1LCA3MywgMjI1LCAxMjIsIDU0LCAxMjMsIDI0MCwgCi0gICAgMjE3LCAyMjUsIDEyMiwgNTQsIDEwNSwgMjI1LCAxMjIsIDU0LCAxNTgsIDIyNSwgMTIyLCAyMTEsIDIwOSwgMjIwLCAxMzksIAotICAgIDIzMiwgNjQsIDEsIDYxLCAyMzIsIDY0LCAxLCAyNTMsIDE2NiwgMjMyLCA2NCwgMSwgMjQzLCAyMDksIDIzMiwgNjQsIDEsIAotICAgIDI0OSwgNjgsIDIzMiwgNjQsIDEsIDc2LCAyMzIsIDY0LCAxLCAyMTQsIDEwNSwgMjMyLCA2NCwgMSwgNzQsIDIzMiwgNjQsIAotICAgIDEsIDIxMSwgMTE3LCAyMzIsIDY0LCAxLCAyMzUsIDI5LCAyMzIsIDY0LCAxLCAxNTYsIDIzMiwgNjQsIDEsIDE5NCwgMjMyLCAKLSAgICA2NCwgMSwgMjMwLCAzMCwgMjMyLCA2NCwgMSwgNzgsIDIzMiwgNjQsIDEsIDE1MywgMjMyLCA2NCwgMSwgMjE4LCAyMjgsIAotICAgIDIzMiwgNjQsIDEsIDIxNywgMTUzLCAyMzIsIDY0LCAxLCA2OSwgMjMyLCA2NCwgMSwgMjQ1LCAxNCwgMjMyLCA2NCwgMSwgCi0gICAgMjI0LCA5OSwgMjMyLCA2NCwgMSwgMjIyLCA5MywgMjMyLCA2NCwgMSwgMjE1LCAxNjAsIDIzMiwgNjQsIDEsIDI1NCwgMTMxLCAKLSAgICAyMzIsIDY0LCAxLCAyNDUsIDE1OCwgMjMyLCA2NCwgMSwgMjMyLCA2NywgMjMyLCA2NCwgMSwgMjI4LCAxMTYsIDIzMiwgNjQsIAotICAgIDEsIDI1MSwgNzQsIDIzMiwgNjQsIDIxNSwgMjIzLCA3OSwgMjMxLCA1MywgMjQxLCAxODEsIDEsIDYxLCAyMzEsIDUzLCAKLSAgICAyNDEsIDE4MSwgMSwgNzYsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCA3NCwgMjMxLCA1MywgMjQxLCAxODEsIDEsIDc4LCAyMzEsIAotICAgIDUzLCAyNDEsIDE4MSwgMSwgMTkyLCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMjEyLCA2NSwgMjMxLCA1MywgMjQxLCAxODEsIAotICAgIDEsIDI1MiwgMTk5LCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMjUyLCAxOTgsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAxOTEsIAotICAgIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAxODYsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAxOTgsIDIzMSwgNTMsIDI0MSwgMTgxLCAKLSAgICAxLCAyMjksIDIzMywgMjMxLCA1MywgMjQxLCAxODEsIDEsIDIyOSwgMTEyLCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMjI5LCAKLSAgICAxMTEsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyMDUsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyMjMsIDE5MCwgMjMxLCA1MywgCi0gICAgMjQxLCAxODEsIDEsIDIzMywgMTQxLCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMjM0LCAxMzgsIDIzMSwgNTMsIDI0MSwgMTgxLCAKLSAgICAxLCAyNDEsIDE5NiwgMjMxLCA1MywgMjQxLCAxODEsIDEsIDIwNiwgMjMxLCA1MywgMjQxLCAxODEsIDEsIDIyMiwgMzUsIAotICAgIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyMjEsIDE4MywgMjMxLCA1MywgMjQxLCAxODEsIDEsIDE3NiwgMjMxLCA1MywgMjQxLCAKLSAgICAxODEsIDEsIDIyNCwgOTEsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyMTcsIDEwNiwgMjMxLCA1MywgMjQxLCAxODEsIDEsIAotICAgIDIxNywgMTA1LCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMjE3LCAyMywgMjMxLCA1MywgMjQxLCAxODEsIDEsIDIxNywgMjIsIAotICAgIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAxMTIsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyNDgsIDIyOSwgMjMxLCA1MywgMjQxLCAKLSAgICAxODEsIDE2LCAyMTMsIDE3MCwgMjMxLCA1MywgMjQxLCAxODEsIDE2LCAyMTMsIDE2OSwgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIAotICAgIDYxLCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgNzYsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCA3NCwgMjMxLCA1MywgMjQ5LCAKLSAgICAxMDIsIDEsIDc4LCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMTkyLCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMjEyLCA2NSwgCi0gICAgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIDI1MiwgMTk5LCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMTkxLCAyMzEsIDUzLCAyNDksIAotICAgIDEwMiwgMSwgMTg2LCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMTk4LCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMjI5LCAxMTIsIAotICAgIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAyMDUsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAyMzMsIDE0MSwgMjMxLCA1MywgMjQ5LCAKLSAgICAxMDIsIDEsIDIzNCwgMTM4LCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMjQxLCAxOTYsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAKLSAgICAyMDYsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAyNTQsIDMxLCAyMDYsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAyMjEsIDE4MywgCi0gICAgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIDE3NiwgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIDIyNCwgOTEsIDIzMSwgNTMsIDI0OSwgCi0gICAgMTAyLCAxLCAyMTcsIDEwNiwgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIDIxNywgMjMsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAKLSAgICAxMTIsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAyNDgsIDIyOSwgMjMxLCA1MywgMjQ5LCAxMDIsIDIzMiwgMTUxLCAyMjIsIAotICAgIDIxOSwgMjMxLCA1MywgMjQ5LCAxMDIsIDIzMiwgMTUxLCAyMzYsIDEzLCAyMzQsIDEyNiwgMSwgNjEsIDIzNCwgMTI2LCAyNSwgCi0gICAgNSwgNzQsIDIzNCwgMTI2LCAyNSwgNSwgNjksIDIzNCwgMTI2LCAyNSwgNSwgMTQ5LCAxNTMsIDIzNCwgMTI2LCAyNSwgNSwgCi0gICAgNzYsIDIzNCwgMTI2LCAyNSwgNSwgNzgsIDIzNCwgMTI2LCAyNSwgMjMzLCAyOSwgNzksIDIzNCwgMTI2LCA1LCA1MiwgMjIyLCAKLSAgICAyMzcsIDUxLCAyMzQsIDEyNiwgNSwgMjU0LCA4MywgMjM0LCAxMjYsIDUsIDIxMywgMTQ3LCAyMzQsIDEyNiwgMSwgMTc2LCAKLSAgICAyMzQsIDEyNiwgMSwgMjM0LCAxMzgsIDIzNCwgMTI2LCAxLCAyNDMsIDE0MiwgMjM0LCAxMjYsIDEsIDI0MywgMCwgMjM0LCAKLSAgICAxMjYsIDEsIDI1MSwgNDEsIDIzNCwgMTI2LCAxLCAyNTAsIDE2NSwgMjM0LCAxMjYsIDEsIDIzNSwgMTQ3LCAyMzQsIDEyNiwgCi0gICAgMSwgMjI3LCAxNjksIDIzNCwgMTI2LCAxLCAyMTUsIDE1NywgMjM0LCAxMjYsIDEsIDIxNSwgMTQ1LCAyMzQsIDEyNiwgMSwgCi0gICAgMjQ4LCAxNDMsIDIzNCwgMTI2LCAxLCAyNDgsIDEyNywgMjM0LCAxMjYsIDEsIDIyOCwgMTE1LCAyMzQsIDEyNiwgMSwgMjE3LCAKLSAgICAxMDYsIDIzNCwgMTI2LCAxLCAyMTYsIDIwOSwgMjM0LCAxMjYsIDEsIDI0OCwgMjI5LCAyMzQsIDEyNiwgMSwgMjQ4LCAzMywgCi0gICAgMjM0LCAxMjYsIDEsIDE5OCwgMjM0LCAxMjYsIDEsIDE5MSwgMjM0LCAxMjYsIDEsIDIyNSwgMTUwLCAyMzQsIDEyNiwgMSwgCi0gICAgMjUyLCAxOTksIDIzNCwgMTI2LCAxLCAyNTIsIDI2LCAyMzQsIDEyNiwgMSwgMTg2LCAyMzQsIDEyNiwgMSwgMTkyLCAyMzQsIAotICAgIDEyNiwgMSwgMjA1LCAyMzQsIDEyNiwgMSwgMjMzLCAxNDEsIDIzNCwgMTI2LCAxLCAyMTQsIDI3LCAyMzQsIDEyNiwgMSwgCi0gICAgMjIwLCAxMDQsIDIzNCwgMTI2LCAxLCAyMTgsIDIyNSwgMjM0LCAxMjYsIDEsIDIwNiwgMjM0LCAxMjYsIDEsIDIxMCwgMTE2LCAKLSAgICAyMzQsIDEyNiwgMSwgMTYyLCAyMzQsIDEyNiwgMSwgMjM0LCA1MiwgMjM0LCAxMjYsIDEsIDIxNSwgMTI1LCAyMzQsIDEyNiwgCi0gICAgNSwgMjUyLCAxNDksIDQ4LCAyMzQsIDEyNiwgNSwgMjUwLCAyMjksIDIzNCwgMTI2LCA1LCA1OSwgNTEsIDIzNCwgMTI2LCAKLSAgICAyMTMsIDE1MiwgMjM0LCAxMjYsIDIxLCAxMTEsIDIzNCwgMTI2LCAyMSwgMTA1LCAyMzQsIDEyNiwgMjEsIDE1OCwgMjM0LCAKLSAgICAxMjYsIDIxLCAxNjEsIDIzNCwgMTI2LCA1NCwgMjE2LCAyNDgsIDIzNCwgMTI2LCA1NCwgMjE1LCA3MywgMjM0LCAxMjYsIAotICAgIDU0LCAxMjMsIDI0MCwgMjE3LCAyMzQsIDEyNiwgNTQsIDEyMywgMjE2LCAxNDgsIDIzNCwgMTI2LCAyMjQsIDE0NCwgMjQ3LCAKLSAgICAxMjgsIDIzNCwgMTI2LCAyMjQsIDE0NCwgNCwgMjUwLCA0MywgMjM0LCAxMjYsIDIyNCwgMTQ0LCAyNTAsIDQzLCAyMzQsIAotICAgIDEyNiwgMjI0LCAxNDQsIDI0OSwgMTQ1LCAxMzAsIDIzNCwgMTI2LCAyMjQsIDE0NCwgMjMxLCAxODUsIDIzNCwgMTI2LCAKLSAgICAyMjQsIDE0NCwgMjMyLCAxMjEsIDIzNCwgMTI2LCAyMjQsIDE0NCwgMjQ4LCAxODYsIDIzNCwgMTI2LCAyMjQsIDE0NCwgNTIsIAotICAgIDI0OCwgMTg2LCAyMzQsIDEyNiwgMjI0LCAxNDQsIDIzMiwgMjEzLCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjQxLCAKLSAgICAyNDUsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMzMsIDk5LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjQxLCAyMDIsIAotICAgIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMzEsIDcwLCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjI0LCAzNywgNTUsIAotICAgIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDIxMiwgMzAsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMjAsIDIyLCA1NSwgMjE5LCAKLSAgICAzMCwgMjU0LCA0NiwgMSwgMjIzLCA3MCwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDI1MiwgMzMsIDU1LCAyMTksIDMwLCAKLSAgICAyNTQsIDQ2LCAxLCAyMTcsIDM3LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjIxLCAyMjgsIDU1LCAyMTksIDMwLCAyNTQsIAotICAgIDQ2LCAxLCAyMzQsIDIzMSwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDIyNywgMTk4LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgCi0gICAgMSwgMjM0LCAxMjIsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMjIsIDI2LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgCi0gICAgMjIxLCAyNTEsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyNDQsIDE2MiwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIAotICAgIDI1NCwgMTc5LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjUzLCAxNjksIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAKLSAgICAyNDgsIDMwLCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjQyLCAyMDgsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyNDgsIAotICAgIDE5NiwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDI0MiwgMjQ1LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjE2LCAKLSAgICAyMjcsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMTAsIDk2LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjQ4LCAyNywgCi0gICAgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDIxMCwgMjMyLCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjE2LCAxOTgsIDU1LCAKLSAgICAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMTYsIDE3OSwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDU0LCAxMTEsIDU1LCAyMTksIAotICAgIDMwLCAyNTQsIDQ2LCA1NCwgMjQ0LCAxMjIsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxMzIsIDIzNSwgMjQ1LCAyNTMsIDE4MCwgCi0gICAgMSwgNjEsIDI1MywgMTgwLCAxLCAyNTUsIDgyLCAyNTMsIDE4MCwgMSwgMjU0LCA4MSwgMjUzLCAxODAsIDEsIDI1NSwgNDEsIAotICAgIDI1MywgMTgwLCAxLCAyNTQsIDEzMSwgMjUzLCAxODAsIDEsIDI1NSwgNDIsIDI1MywgMTgwLCAxLCAyNTQsIDI1MiwgMjUzLCAKLSAgICAxODAsIDEsIDI1NCwgMjQ4LCAyNTMsIDE4MCwgMSwgNzYsIDI1MywgMTgwLCAxLCAyNDUsIDIxNywgMjUzLCAxODAsIDEsIAotICAgIDc4LCAyNTMsIDE4MCwgMSwgMjI2LCAxODcsIDI1MywgMTgwLCAxLCA3NCwgMjUzLCAxODAsIDEsIDIzNiwgNDAsIDI1MywgCi0gICAgMTgwLCAxLCA2OSwgMjUzLCAxODAsIDEsIDIxNCwgMTE4LCAyNTMsIDE4MCwgMSwgMjM0LCAxODgsIDI1MywgMTgwLCAxLCAKLSAgICAyMTEsIDE2MiwgMjUzLCAxODAsIDEsIDIxMSwgMTI4LCAyNTMsIDE4MCwgMSwgMjExLCAxMzcsIDI1MywgMTgwLCAxLCAyNDMsIAotICAgIDY5LCAyNTMsIDE4MCwgMSwgMjQzLCAzMSwgMjUzLCAxODAsIDEsIDI0MiwgMjQzLCAyNTMsIDE4MCwgMSwgMjUwLCAxOTgsIAotICAgIDI1MywgMTgwLCAxLCAyMzUsIDEzMiwgMjUzLCAxODAsIDEsIDIxNywgMjMsIDI1MywgMTgwLCAxLCAyMTYsIDE5NiwgMjUzLCAKLSAgICAxODAsIDEsIDI0OCwgOTgsIDI1MywgMTgwLCAxLCAyNDgsIDI1LCAyNTMsIDE4MCwgMSwgMjE1LCAxNTIsIDI1MywgMTgwLCAKLSAgICAxLCAyMjUsIDIyNCwgMjUzLCAxODAsIDEsIDI0NCwgMTYyLCAyNTMsIDE4MCwgMSwgMjUyLCA4MywgMjUzLCAxODAsIDEsIAotICAgIDI1MiwgMjIsIDI1MywgMTgwLCAxLCAyMjksIDY5LCAyNTMsIDE4MCwgMSwgMjI4LCAyNDQsIDI1MywgMTgwLCAxLCAyMjgsIAotICAgIDI0NSwgMjUzLCAxODAsIDEsIDIyOSwgMTEyLCAyNTMsIDE4MCwgMSwgMjI3LCAxNjAsIDI1MywgMTgwLCAxLCAyMjgsIDExMCwgCi0gICAgMjUzLCAxODAsIDEsIDIzMSwgOTYsIDI1MywgMTgwLCAxLCAyNDEsIDEyMywgMjUzLCAxODAsIDEsIDIxMCwgMTY2LCAyNTMsIAotICAgIDE4MCwgMSwgMjExLCA0NywgMjUzLCAxODAsIDEsIDIxMywgMjU1LCAyNTMsIDE4MCwgMSwgMjIzLCAxMzEsIDI1MywgMTgwLCAKLSAgICAxLCAyMzMsIDY0LCAyNTMsIDE4MCwgMSwgMjIxLCAxODMsIDI1MywgMTgwLCAxLCAyMTAsIDk0LCAyNTMsIDE4MCwgMSwgCi0gICAgMjIwLCA2NSwgMjUzLCAxODAsIDEsIDIxMCwgNzQsIDI1MywgMTgwLCAxLCAyMTksIDIwMCwgMjUzLCAxODAsIDEsIDIxOCwgCi0gICAgMTk1LCAyNTMsIDE4MCwgMSwgMjQxLCAyNDUsIDI1MywgMTgwLCAyNTUsIDMwLCA3OSwgMjE2LCA4MCwgMTEzLCAxNzAsIAotICAgIDExNSwgMTIzLCA1OSwgMjI0LCAxNDMsIDQsIDExMywgMTcwLCAxMTUsIDEyMywgNTksIDIyNCwgMTQzLCAyMzMsIDkxLCAKLSAgICAxMTMsIDE3MCwgMTE1LCAxMjMsIDU5LCAyMjQsIDE0MywgMjMzLCA5MSwgMTIzLCA1OSwgMTE1LCAxMTMsIDE3MCwgMjI0LCAKLSAgICAxNDMsIDIzMywgOTEsIDExMywgMjIyLCAyMzUsIDExNSwgMTIzLCAyMjIsIDIzNywgMjI0LCAxNDMsIDIzMywgOTEsIDEyMywgCi0gICAgMjIyLCAyMzcsIDExNSwgMTEzLCAyMjIsIDIzNSwgMjI0LCAxNDMsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDI1NCwgMTc3LCAKLSAgICAyMzUsIDIyNSwgMjI2LCAyLCAxLCAyNTIsIDMzLCAyMzUsIDIyNSwgMjI2LCAyLCAxLCAyNDIsIDIwOCwgMjM1LCAyMjUsIAotICAgIDIyNiwgMiwgMSwgMjQ4LCAxOTYsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDI0MSwgMjQ1LCAyMzUsIDIyNSwgMjI2LCAyLCAxLCAKLSAgICAyMTIsIDMwLCAyMzUsIDIyNSwgMjI2LCAyLCAxLCAyMTAsIDk3LCAyMzUsIDIyNSwgMjI2LCAyLCAxLCAyNDEsIDIwMiwgCi0gICAgMjM1LCAyMjUsIDIyNiwgMiwgMSwgMjE2LCAyMjcsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDIxMCwgMjMyLCAyMzUsIDIyNSwgCi0gICAgMjI2LCAyLCAxLCAyMzQsIDIzMSwgMjM1LCAyMjUsIDIyNiwgMiwgMSwgMjMzLCA5OSwgMjM1LCAyMjUsIDIyNiwgMiwgMSwgCi0gICAgMjMxLCA3MCwgMjM1LCAyMjUsIDIyNiwgMiwgMSwgMjI3LCAxOTgsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDIyMSwgMjUxLCAKLSAgICAyMzUsIDIyNSwgMjI2LCAyLCAxLCAyNTMsIDE3MCwgMjM1LCAyMjUsIDIyNiwgMiwgMSwgMjI1LCAyMjQsIDIzNSwgMjI1LCAKLSAgICAyMjYsIDIsIDEsIDIyMiwgMjYsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDIyNCwgMzcsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIAotICAgIDIyMywgNzAsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDIyMCwgMjIsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDIxNywgMzcsIDIzNSwgCi0gICAgMjI1LCAyMjYsIDIsIDU0LCAxMTEsIDIzNSwgMjI1LCAyMjYsIDIsIDU0LCAxMDUsIDIzNSwgMjI1LCAyMjYsIDIsIDU0LCAKLSAgICAxNTgsIDIzNSwgMjI1LCAyMjYsIDIsIDU0LCAxNjEsIDIzNSwgMjI1LCAyMjYsIDIsIDU0LCAyMTYsIDI0OCwgMjM1LCAyMjUsIAotICAgIDIyNiwgMiwgNTQsIDIxNSwgNzMsIDIzNSwgMjI1LCAyMjYsIDIsIDU0LCAxMjMsIDI0MCwgMjE3LCAyMzUsIDIyNSwgMjI2LCAKLSAgICAyLCA1NCwgMTIzLCAyMTYsIDE0OCwgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDI1NCwgMTc3LCAyMzUsIDIyNSwgMjI2LCA3NiwgCi0gICAgMSwgMjUyLCAzMywgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDI0MiwgMjA4LCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjQ4LCAKLSAgICAxOTYsIDIzNSwgMjI1LCAyMjYsIDc2LCAxLCAyNDEsIDI0NSwgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDIxMiwgMjksIDIzNSwgCi0gICAgMjI1LCAyMjYsIDc2LCAxLCAyMTAsIDk3LCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjQxLCAyMDIsIDIzNSwgMjI1LCAyMjYsIAotICAgIDc2LCAxLCAyMTYsIDIyNywgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDIxMCwgMjMyLCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgCi0gICAgMjM0LCAyMzEsIDIzNSwgMjI1LCAyMjYsIDc2LCAxLCAyMzMsIDk5LCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjMxLCA2OSwgCi0gICAgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDIyNywgMTk4LCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjIxLCAyNTEsIDIzNSwgMjI1LCAKLSAgICAyMjYsIDc2LCAxLCAyMjUsIDIyNCwgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDIyMiwgMjYsIDIzNSwgMjI1LCAyMjYsIDc2LCAKLSAgICAxLCAyMjAsIDIyLCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjE3LCAzNywgMjM1LCAyMjUsIDIyNiwgNzYsIDU0LCAxMTEsIAotICAgIDIzNSwgMjI1LCAyMjYsIDc2LCA1NCwgMTA1LCAyMzUsIDIyNSwgMjI2LCA3NiwgNTQsIDE1OCwgMjM1LCAyMjUsIDIyNiwgCi0gICAgNzYsIDU0LCAxNjEsIDIzNSwgMjI1LCAyMjYsIDc2LCA1NCwgMjE2LCAyNDgsIDIzNSwgMjI1LCAyMjYsIDc2LCA1NCwgMjE1LCAKLSAgICA3MywgMjM1LCAyMjUsIDIyNiwgNzYsIDU0LCAxMjMsIDI0MCwgMjE3LCAyMzUsIDIyNSwgMjI2LCA3NiwgNTQsIDEyMywgCi0gICAgMjE2LCAxNDgsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCA2MSwgNTUsIDIwMiwgMSwgMjExLCAzNywgNjEsIDU1LCAyMDIsIDEsIAotICAgIDIxMSwgMzcsIDI1NCwgMjUyLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgNzQsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDc0LCA1NSwgCi0gICAgMjAyLCAxLCAyMTEsIDM3LCA3NiwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDc4LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjI2LCAKLSAgICAyMzgsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDIyNiwgMjM4LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU1LCAzNCwgNTUsIAotICAgIDIwMiwgMSwgMjExLCAzNywgMjU1LCAzNCwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI1NCwgMjUxLCA1NSwgMjAyLCAxLCAKLSAgICAyMTEsIDM3LCAyNTQsIDI1MSwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI1NCwgMjI1LCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAKLSAgICAyNTQsIDIyNSwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI1NCwgMjQ2LCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAyNTQsIDI0NiwgCi0gICAgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI1NSwgOCwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjU1LCA4LCA1NSwgMjAyLCAxLCAKLSAgICAyMjYsIDE1MywgMjU0LCAyNTAsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNDUsIDIwLCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAKLSAgICAyNDUsIDIwLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjUzLCAxNzUsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1MywgMTc1LCAKLSAgICA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCAyMzMsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1NCwgMjMzLCA1NSwgMjAyLCAKLSAgICAxLCAyMjYsIDE1MywgMjU0LCAyNDQsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1NCwgMjQ0LCA1NSwgMjAyLCAxLCAyMjYsIAotICAgIDE1MywgMjI2LCAyMzcsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDIyNiwgMjM3LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCAKLSAgICAxODcsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1NCwgMTg3LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCAyNDMsIDU1LCAKLSAgICAyMDIsIDEsIDIyNiwgMTUzLCAyNDUsIDE2OSwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI0NSwgMTY3LCA1NSwgMjAyLCAxLCAKLSAgICAyMjYsIDE1MywgMjU0LCAxMzEsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNTQsIDI0MSwgNTUsIDIwMiwgMSwgMjExLCAzNywgCi0gICAgMjU0LCAyNDEsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNDUsIDEzOSwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjQ1LCAxMzksIAotICAgIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNDUsIDE1NSwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjQ1LCAxNTUsIDU1LCAyMDIsIAotICAgIDEsIDIyNiwgMTUzLCAyNDUsIDEyNiwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjQ1LCAxMjYsIDU1LCAyMDIsIDEsIDIxMSwgCi0gICAgMzcsIDI1NCwgMTIzLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjQ1LCAxNDYsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1NCwgCi0gICAgMjQwLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjQ1LCAxMTYsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyMjYsIDE3OSwgNTUsIAotICAgIDIwMiwgMSwgMjI2LCAxNTMsIDI0MCwgMTIwLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjQ1LCAyMjMsIDU1LCAyMDIsIDEsIAotICAgIDIxMSwgMzcsIDI0NSwgMjIzLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCA1MywgNTUsIDIwMiwgMSwgMjExLCAzNywgCi0gICAgMjU0LCA1MywgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDIzNSwgMTg4LCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAyMzUsIDE4OCwgCi0gICAgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDIyNiwgMTYzLCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAyMjYsIDE2MywgNTUsIDIwMiwgCi0gICAgMSwgMjI2LCAxNTMsIDI1NCwgNDksIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1NCwgNDksIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAKLSAgICAyNTQsIDIzOSwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI1MywgMjQ1LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCAyMzcsIAotICAgIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNTMsIDIzOSwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjUzLCAyMzksIDU1LCAyMDIsIAotICAgIDEsIDIyNiwgMTUzLCAyNDUsIDgzLCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAyNDUsIDgzLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgCi0gICAgMjUzLCAyMTQsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1MywgMjE0LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCAyMzQsIAotICAgIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1NCwgMjM0LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjI2LCAxNDQsIDU1LCAyMDIsIAotICAgIDEsIDIyNiwgMTUzLCAyNTIsIDEzMywgMjIyLCAxMjksIDIxLCAxMTEsIDIyMiwgMTI5LCAyMSwgMTA1LCAyMjIsIDEyOSwgCi0gICAgMjEsIDE1OCwgMjIyLCAxMjksIDIxLCAxNjEsIDIyMiwgMTI5LCAyMSwgMTkwLCAyMjIsIDEyOSwgMjEsIDE5NSwgMjIyLCAKLSAgICAxMjksIDIxLCAxOTksIDIyMiwgMTI5LCAyMSwgMTk2LCAyMjIsIDEyOSwgMjEsIDIwMSwgMjIyLCAxMjksIDU0LCAyMTYsIAotICAgIDI0OCwgMjIyLCAxMjksIDU0LCAyMTUsIDczLCAyMjIsIDEyOSwgNTQsIDIxNiwgMTYzLCAyMjIsIDEyOSwgNTQsIDI0NCwgCi0gICAgMjMsIDIyMiwgMTI5LCA1NCwgMjQ0LCAxMjIsIDIyMiwgMTI5LCA1NCwgMjE5LCAxMTMsIDIyMiwgMTI5LCA1NCwgMjIwLCAKLSAgICAxMTgsIDIyMiwgMTI5LCA1NCwgMjQ1LCAxOTIsIDIyMiwgMTI5LCA1NCwgMjI4LCAyMDAsIDIyMiwgMTI5LCA1NCwgMTIzLCAKLSAgICAyNDAsIDIxNywgMjIyLCAxMjksIDU0LCAxMTMsIDI0MCwgMjE3LCAyMjIsIDEyOSwgNTQsIDEzNCwgMjQwLCAyMTcsIDIyMiwgCi0gICAgMTI5LCA1NCwgMjQ0LCAxOSwgMjQwLCAyMTcsIDIyMiwgMTI5LCA1NCwgMjQ0LCA4OSwgMjQwLCAyMTcsIDIyMiwgMTI5LCAKLSAgICA1NCwgMjE5LCAxMjcsIDI0MCwgMjE3LCAyMjIsIDEyOSwgNTQsIDIyMCwgMTI0LCAyNDAsIDIxNywgMjIyLCAxMjksIDU0LCAKLSAgICAyNDUsIDIwMSwgMjQwLCAyMTcsIDIyMiwgMTI5LCA1NCwgMjI4LCAyMDUsIDI0MCwgMjE3LCAyMjIsIDEyOSwgMjQ0LCAxMCwgCi0gICAgMTIzLCAyNDIsIDM0LCAyMjIsIDEyOSwgMjQ0LCAxMCwgMTIzLCAyMjQsIDI0LCAyMjIsIDEyOSwgMjQ0LCAxMCwgMTIzLCAKLSAgICAyMTYsIDE2OSwgMjIyLCAxMjksIDI0NCwgMTAsIDExMywgMjE2LCAxNjcsIDExOCwgNSwgMjUxLCA3LCAxMTgsIDUsIDI1NCwgCi0gICAgODMsIDExOCwgNSwgMjEzLCAxNDcsIDExOCwgNSwgMjM1LCAxMDgsIDExOCwgNSwgMjE0LCAxNjEsIDExOCwgMSwgNjEsIAotICAgIDExOCwgMSwgMjU1LCA4MiwgMTE4LCAxLCA3NCwgMTE4LCAxLCAyMzYsIDQwLCAxMTgsIDEsIDY5LCAxMTgsIDEsIDIxNCwgCi0gICAgMTE4LCAxMTgsIDEsIDE0OSwgMTUzLCAxMTgsIDEsIDE0OSwgMjIyLCAxODIsIDExOCwgMSwgMTQ5LCAxNTYsIDExOCwgMSwgCi0gICAgMTQ5LCAyMzIsIDE5MSwgMTE4LCAxLCA3NiwgMTE4LCAxLCAyNTQsIDIxMCwgMTE4LCAxLCA3OCwgMTE4LCAxLCAyNTMsIAotICAgIDIwMCwgMTE4LCAxLCAxNzYsIDExOCwgMSwgMjM0LCAxMzgsIDExOCwgMSwgMjQzLCAxNDIsIDExOCwgMSwgMjQzLCAwLCAKLSAgICAxMTgsIDEsIDIyOSwgODIsIDExOCwgMSwgMjUxLCA0MSwgMTE4LCAxLCAyNTAsIDE2NSwgMTE4LCAxLCAyMzUsIDE0NywgCi0gICAgMTE4LCAxLCAyMzUsIDEyMCwgMTE4LCAxLCAyMjcsIDE2OSwgMTE4LCAxLCAyMTUsIDE1NywgMTE4LCAxLCAyMTUsIDE0NSwgCi0gICAgMTE4LCAxLCAyNDgsIDE0MywgMTE4LCAxLCAyNDgsIDEyNywgMTE4LCAxLCAyMjgsIDExNSwgMTE4LCAxLCAyMTcsIDEwNiwgCi0gICAgMTE4LCAxLCAyMTYsIDIwOSwgMTE4LCAxLCAyNDgsIDIyOSwgMTE4LCAxLCAyNDgsIDMzLCAxMTgsIDEsIDE5OCwgMTE4LCAxLCAKLSAgICAxOTEsIDExOCwgMSwgMjI1LCAxNTAsIDExOCwgMSwgMjUyLCAxOTksIDExOCwgMSwgMjUyLCAyNiwgMTE4LCAxLCAxODYsIAotICAgIDExOCwgMSwgMTkyLCAxMTgsIDEsIDIwNSwgMTE4LCAxLCAyMzMsIDE0MSwgMTE4LCAxLCAyMTQsIDI3LCAxMTgsIDEsIDIyMCwgCi0gICAgMTA0LCAxMTgsIDEsIDIxOCwgMjI1LCAxMTgsIDEsIDIwNiwgMTE4LCAxLCAxNjIsIDExOCwgMSwgMjMyLCAxOTAsIDExOCwgCi0gICAgMSwgNTUsIDM2LCAyMzIsIDE4MSwgMTE4LCAxLCA1NSwgMzYsIDIyMiwgMTgxLCAxMTgsIDEsIDU1LCAzNiwgMjI4LCA5NywgCi0gICAgMTE4LCAyNSwgNSwgMjU1LCA4MiwgMTE4LCAyNSwgNSwgMjUyLCAyMywgMjU1LCA4MiwgMTE4LCAyNSwgNSwgNzQsIDExOCwgCi0gICAgMjUsIDUsIDIzNiwgNDAsIDExOCwgMjUsIDUsIDY5LCAxMTgsIDI1LCA1LCAyMTQsIDExOCwgMTE4LCAyNSwgNSwgMTQ5LCAKLSAgICAxNTMsIDExOCwgMjUsIDUsIDE0OSwgMjIyLCAxODIsIDExOCwgMjUsIDUsIDE0OSwgMTU2LCAxMTgsIDI1LCA1LCAxNDksIAotICAgIDIzMiwgMTkxLCAxMTgsIDI1LCA1LCA3NiwgMTE4LCAyNSwgNSwgMjU0LCAyMTAsIDExOCwgMjUsIDUsIDc4LCAxMTgsIDI1LCAKLSAgICA1LCAyNTMsIDIwMCwgMTE4LCAyMTMsIDE1MiwgMTE4LCAyNDgsIDE4NiwgMTE4LCA1MiwgMjQ4LCAxODYsIDExOCwgMjI0LCAKLSAgICAxNDQsIDI0NywgMTI4LCAxMTgsIDIyNCwgMTQ0LCA1MiwgMjQ3LCAxMjgsIDExOCwgMjI0LCAxNDQsIDIzMiwgMjE5LCAxMTgsIAotICAgIDIyNCwgMTQ0LCAyNDksIDE0NSwgMTMwLCAxMTgsIDIyNCwgMTQ0LCAyMzIsIDEyMSwgMTE4LCA1NCwgMTExLCAxMTgsIDU0LCAKLSAgICAxMDUsIDExOCwgNTQsIDE1OCwgMTE4LCA1NCwgMTYxLCAxMTgsIDU0LCAxOTAsIDExOCwgNTQsIDE5NSwgMTE4LCA1NCwgCi0gICAgMTk5LCAxMTgsIDU0LCAxOTYsIDExOCwgNTQsIDIwMSwgMTE4LCA1NCwgMjE2LCAyNDgsIDExOCwgNTQsIDIxNSwgNzMsIAotICAgIDExOCwgNTQsIDIxNiwgMTYzLCAxMTgsIDU0LCAyNDQsIDIzLCAxMTgsIDU0LCAyNDQsIDEyMiwgMTE4LCA1NCwgMjE5LCAKLSAgICAxMTMsIDExOCwgNTQsIDIyMCwgMTE4LCAxMTgsIDU0LCAyNDUsIDE5MiwgMTE4LCA1NCwgMjI4LCAyMDAsIDExOCwgNTQsIAotICAgIDEyMywgMjQwLCAyMTcsIDExOCwgNTQsIDEyMywgMjE2LCAxNDgsIDExOCwgMjEsIDIxMCwgODYsIDExOCwgMjEsIDExMSwgCi0gICAgMTE4LCAyMSwgMTA1LCAxMTgsIDIxLCAxNTgsIDExOCwgMjEsIDE2MSwgMTE4LCAyMSwgMTkwLCAxMTgsIDIxLCAxOTUsIAotICAgIDExOCwgMjEsIDE5OSwgMTE4LCAyMSwgMTk2LCAxMTgsIDIxLCAyMDEsIDIzNCwgMjUwLCA1LCAyNTEsIDcsIDIzNCwgMjUwLCAKLSAgICA1LCAyNTQsIDgzLCAyMzQsIDI1MCwgNSwgMjEzLCAxNDcsIDIzNCwgMjUwLCAxLCA2MSwgMjM0LCAyNTAsIDEsIDI1NSwgODIsIAotICAgIDIzNCwgMjUwLCAxLCA3NCwgMjM0LCAyNTAsIDEsIDIzNiwgNDAsIDIzNCwgMjUwLCAxLCA2OSwgMjM0LCAyNTAsIDEsIDIxNCwgCi0gICAgMTE4LCAyMzQsIDI1MCwgMSwgNzYsIDIzNCwgMjUwLCAxLCAyNTQsIDIxMCwgMjM0LCAyNTAsIDEsIDc4LCAyMzQsIDI1MCwgCi0gICAgMSwgMjUzLCAyMDAsIDIzNCwgMjUwLCAxLCAxNzYsIDIzNCwgMjUwLCAxLCAyMzQsIDEzOCwgMjM0LCAyNTAsIDEsIDI0MywgCi0gICAgMTQyLCAyMzQsIDI1MCwgMSwgMjQzLCAwLCAyMzQsIDI1MCwgMSwgMjI5LCA4MiwgMjM0LCAyNTAsIDEsIDI1MSwgNDEsIAotICAgIDIzNCwgMjUwLCAxLCAyNTAsIDE2NSwgMjM0LCAyNTAsIDEsIDIzNSwgMTQ3LCAyMzQsIDI1MCwgMSwgMjM1LCAxMjAsIDIzNCwgCi0gICAgMjUwLCAxLCAyMjcsIDE2OSwgMjM0LCAyNTAsIDEsIDIxNSwgMTU3LCAyMzQsIDI1MCwgMSwgMjE1LCAxNDUsIDIzNCwgMjUwLCAKLSAgICAxLCAyNDgsIDE0MywgMjM0LCAyNTAsIDEsIDI0OCwgMTMyLCAyMzQsIDI1MCwgMSwgMjQ4LCAxMjcsIDIzNCwgMjUwLCAxLCAKLSAgICAyMjMsIDQyLCAyMzQsIDI1MCwgMSwgMjI4LCAxMTUsIDIzNCwgMjUwLCAxLCAyMTcsIDEwNiwgMjM0LCAyNTAsIDEsIDIxNiwgCi0gICAgMjA5LCAyMzQsIDI1MCwgMSwgMjQ4LCAyMjksIDIzNCwgMjUwLCAxLCAyNDgsIDMzLCAyMzQsIDI1MCwgMSwgMTk4LCAyMzQsIAotICAgIDI1MCwgMSwgMTkxLCAyMzQsIDI1MCwgMSwgMjI1LCAxNTAsIDIzNCwgMjUwLCAxLCAyNTIsIDE5OSwgMjM0LCAyNTAsIDEsIAotICAgIDI1MiwgMjYsIDIzNCwgMjUwLCAxLCAxODYsIDIzNCwgMjUwLCAxLCAxOTIsIDIzNCwgMjUwLCAxLCAyMDUsIDIzNCwgMjUwLCAKLSAgICAxLCAyMzMsIDE0MSwgMjM0LCAyNTAsIDEsIDIxNCwgMjcsIDIzNCwgMjUwLCAxLCAyMjAsIDEwNCwgMjM0LCAyNTAsIDEsIAotICAgIDIxOCwgMjI1LCAyMzQsIDI1MCwgMSwgMjA2LCAyMzQsIDI1MCwgMSwgMTYyLCAyMzQsIDI1MCwgMjUsIDUsIDI1NSwgODIsIAotICAgIDIzNCwgMjUwLCAyNSwgNSwgNzQsIDIzNCwgMjUwLCAyNSwgNSwgMjM2LCA0MCwgMjM0LCAyNTAsIDI1LCA1LCA2OSwgMjM0LCAKLSAgICAyNTAsIDI1LCA1LCAyMTQsIDExOCwgMjM0LCAyNTAsIDI1LCA1LCA3NiwgMjM0LCAyNTAsIDI1LCA1LCAyNTQsIDIxMCwgCi0gICAgMjM0LCAyNTAsIDI1LCA1LCA3OCwgMjM0LCAyNTAsIDI1LCA1LCAyNTMsIDIwMCwgMjM0LCAyNTAsIDUsIDIxMywgMTUyLCAKLSAgICAyMzQsIDI1MCwgNSwgMjI3LCAyMDksIDIzNCwgMjUwLCAyNTUsIDMwLCA1MCwgMjM0LCAyNTAsIDI0NSwgMTI5LCA1MCwgCi0gICAgMjM0LCAyNTAsIDU0LCA1MCwgMjM0LCAyNTAsIDIyMSwgMTc1LCA3OSwgMjM0LCAyNTAsIDUyLCAyMjEsIDE3NSwgNzksIAotICAgIDIzNCwgMjUwLCAyNDgsIDE4NiwgMjM0LCAyNTAsIDUyLCAyNDgsIDE4NiwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjIyLCAyMCwgCi0gICAgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjE3LCA4MSwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjUyLCAxNzYsIDIxOSwgMzgsIAotICAgIDIxOSwgNDYsIDEsIDI1MSwgMzEsIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDI0OCwgMjExLCAyMTksIDM4LCAyMTksIDQ2LCAxLCAKLSAgICAyNDMsIDEyNywgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjMxLCAyMTUsIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDIyOSwgNzksIAotICAgIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDIzMywgMTE4LCAyMTksIDM4LCAyMTksIDQ2LCAxLCAyMjksIDIxOCwgMjE5LCAzOCwgCi0gICAgMjE5LCA0NiwgMSwgMjE0LCAyNCwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjI2LCA3NywgMjE5LCAzOCwgMjE5LCA0NiwgMSwgCi0gICAgMjExLCA4NCwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjIzLCAxNzEsIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDI0MiwgNDQsIAotICAgIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDIzNCwgMjU0LCAyMTksIDM4LCAyMTksIDQ2LCAxLCAyMzUsIDE0MiwgMjE5LCAzOCwgCi0gICAgMjE5LCA0NiwgMSwgMjI3LCAxNjYsIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDI1NCwgMjE4LCAyMTksIDM4LCAyMTksIDQ2LCAxLCAKLSAgICAyNDUsIDIxNSwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjM2LCA0MSwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjE0LCAyMDgsIAotICAgIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDIyNiwgMjI2LCAyMTksIDM4LCAyMTksIDQ2LCAxLCAyNDUsIDIwNSwgMjE5LCAzOCwgCi0gICAgMjE5LCA0NiwgMSwgMjMxLCAyMjgsIDIxOSwgMzgsIDIxOSwgNDYsIDIxLCAyMTAsIDg2LCAyMTksIDM4LCAyMTksIDQ2LCAKLSAgICAyMSwgMTExLCAyMTksIDM4LCAyMTksIDQ2LCAyMSwgMTA1LCAyMTksIDM4LCAyMTksIDQ2LCAyMSwgMTU4LCAyMTksIDM4LCAKLSAgICAyMTksIDQ2LCAyMSwgMTYxLCAyMTksIDM4LCAyMTksIDQ2LCAyMSwgMTkwLCAyMTksIDM4LCAyMTksIDQ2LCAyMSwgMTk1LCAKLSAgICAyMTksIDM4LCAyMTksIDQ2LCAyMSwgMTk5LCAyMTksIDM4LCAyMTksIDQ2LCAyMSwgMTk2LCAyMTksIDM4LCAyMTksIDQ2LCAKLSAgICAyMSwgMjAxLCAyNTAsIDE1OSwgNSwgMjUxLCA3LCAyNTAsIDE1OSwgNSwgMjU0LCA4MywgMjUwLCAxNTksIDUsIDIxMywgCi0gICAgMTQ3LCAyNTAsIDE1OSwgMSwgMjU1LCA4MiwgMjUwLCAxNTksIDEsIDc0LCAyNTAsIDE1OSwgMSwgNjksIDI1MCwgMTU5LCAxLCAKLSAgICA3NiwgMjUwLCAxNTksIDEsIDIzNSwgMTYsIDI1MCwgMTU5LCAxLCAyMzQsIDEzNywgMjUwLCAxNTksIDEsIDI0MywgMTM5LCAKLSAgICAyNTAsIDE1OSwgMSwgMjQyLCAyNTUsIDI1MCwgMTU5LCAxLCAyMjksIDgxLCAyNTAsIDE1OSwgMSwgMjUxLCA0MCwgMjUwLCAKLSAgICAxNTksIDEsIDI1MCwgMTY0LCAyNTAsIDE1OSwgMSwgMjM1LCAxNDYsIDI1MCwgMTU5LCAxLCAyMzUsIDExOSwgMjUwLCAxNTksIAotICAgIDEsIDIyNywgMTY4LCAyNTAsIDE1OSwgMSwgMjE1LCAxNTYsIDI1MCwgMTU5LCAxLCAyMTUsIDE0NCwgMjUwLCAxNTksIDEsIAotICAgIDI0OCwgMTQyLCAyNTAsIDE1OSwgMSwgMjQ4LCAxMjYsIDI1MCwgMTU5LCAxLCAyMjgsIDExNCwgMjUwLCAxNTksIDEsIDIxNywgCi0gICAgMTAyLCAyNTAsIDE1OSwgMSwgMjE2LCAyMDgsIDI1MCwgMTU5LCAxLCAyNDgsIDIyOCwgMjUwLCAxNTksIDEsIDI0OCwgMzIsIAotICAgIDI1MCwgMTU5LCAxLCAyMjksIDIzMCwgMjUwLCAxNTksIDEsIDIyNiwgOTMsIDI1MCwgMTU5LCAxLCAyMjUsIDE0OSwgMjUwLCAKLSAgICAxNTksIDEsIDI1MiwgMTk3LCAyNTAsIDE1OSwgMSwgMjUyLCAyNSwgMjUwLCAxNTksIDEsIDIzMSwgMjQyLCAyNTAsIDE1OSwgCi0gICAgMSwgMjEwLCAxNjcsIDI1MCwgMTU5LCAxLCAyMTEsIDEwMywgMjUwLCAxNTksIDEsIDIyMywgMTg3LCAyNTAsIDE1OSwgMSwgCi0gICAgMjMzLCAxNDAsIDI1MCwgMTU5LCAxLCAyMTIsIDY0LCAyNTAsIDE1OSwgMSwgMjIyLCAzMywgMjUwLCAxNTksIDEsIDI0MiwgCi0gICAgNTMsIDI1MCwgMTU5LCAyNSwgNSwgNjEsIDI1MCwgMTU5LCAyNSwgNSwgNzQsIDI1MCwgMTU5LCAyNSwgNSwgMjM2LCA0MCwgCi0gICAgMjUwLCAxNTksIDI1LCA1LCA2OSwgMjUwLCAxNTksIDI1LCA1LCAyMTQsIDExOCwgMjUwLCAxNTksIDI1LCA1LCA3NiwgMjUwLCAKLSAgICAxNTksIDI1LCA1LCAyNTQsIDIxMCwgMjUwLCAxNTksIDI1LCA1LCA3OCwgMjUwLCAxNTksIDI1LCA1LCAyNTMsIDIwMCwgCi0gICAgMjUwLCAxNTksIDI1LCA1LCAyMjYsIDIyMywgMjUwLCAxNTksIDE0NCwgNzksIDI1MCwgMTU5LCAyNTMsIDIwMSwgNzksIAotICAgIDI1MCwgMTU5LCAyMTMsIDE1MiwgMjUwLCAxNTksIDIzMSwgMjQwLCAyNTAsIDE1OSwgMjEsIDIxMCwgODYsIDI1MCwgMTU5LCAKLSAgICAyMSwgMTExLCAyNTAsIDE1OSwgMjEsIDEwNSwgMjUwLCAxNTksIDIxLCAxNTgsIDI1MCwgMTU5LCAyMSwgMTYxLCAyNTAsIAotICAgIDE1OSwgMjEsIDE5MCwgMjUwLCAxNTksIDIxLCAxOTUsIDI1MCwgMTU5LCAyMSwgMTk5LCAyNTAsIDE1OSwgMjEsIDE5NiwgCi0gICAgMjUwLCAxNTksIDIxLCAyMDEsIDI1MCwgMTU5LCAyMjEsIDE3NSwgNzksIDI1MCwgMTU5LCAyNDgsIDE4NiwgMjUwLCAxNTksIAotICAgIDUyLCAyNDgsIDE4NiwgMjUwLCAxNTksIDIyNCwgMTYsIDc5LCAxNzQsIDUsIDI1MSwgNywgMTc0LCA1LCAyNTQsIDgzLCAKLSAgICAxNzQsIDUsIDIxMywgMTQ3LCAxNzQsIDEsIDYxLCAxNzQsIDEsIDI1NSwgODIsIDE3NCwgMSwgNzQsIDE3NCwgMSwgMjM2LCAKLSAgICA0MCwgMTc0LCAxLCA2OSwgMTc0LCAxLCAyMTQsIDExOCwgMTc0LCAxLCAxNDksIDE1MywgMTc0LCAxLCAxNDksIDIyMiwgCi0gICAgMTgyLCAxNzQsIDEsIDE0OSwgMTU2LCAxNzQsIDEsIDE0OSwgMjMyLCAxOTEsIDE3NCwgMSwgNzYsIDE3NCwgMSwgMjU0LCAKLSAgICAyMTAsIDE3NCwgMSwgNzgsIDE3NCwgMSwgMjUzLCAyMDAsIDE3NCwgMSwgMTc2LCAxNzQsIDEsIDIzNCwgMTM4LCAxNzQsIDEsIAotICAgIDI0MywgMTQyLCAxNzQsIDEsIDI0MywgMCwgMTc0LCAxLCAyMjksIDgyLCAxNzQsIDEsIDI1MSwgNDEsIDE3NCwgMSwgMjUwLCAKLSAgICAxNjUsIDE3NCwgMSwgMjM1LCAxNDcsIDE3NCwgMSwgMjM1LCAxMjAsIDE3NCwgMSwgMjI3LCAxNjksIDE3NCwgMSwgMjE1LCAKLSAgICAxNTcsIDE3NCwgMSwgMjE1LCAxNDUsIDE3NCwgMSwgMjQ4LCAxNDMsIDE3NCwgMSwgMjQ4LCAxMjcsIDE3NCwgMSwgMjI4LCAKLSAgICAxMTUsIDE3NCwgMSwgMjE3LCAxMDYsIDE3NCwgMSwgMjE2LCAyMDksIDE3NCwgMSwgMjQ4LCAyMjksIDE3NCwgMSwgMjQ4LCAKLSAgICAzMywgMTc0LCAxLCAxOTgsIDE3NCwgMSwgMTkxLCAxNzQsIDEsIDIyNSwgMTUwLCAxNzQsIDEsIDI1MiwgMTk5LCAxNzQsIDEsIAotICAgIDI1MiwgMjYsIDE3NCwgMSwgMTg2LCAxNzQsIDEsIDE5MiwgMTc0LCAxLCAyMDUsIDE3NCwgMSwgMjMzLCAxNDEsIDE3NCwgMSwgCi0gICAgMjMyLCAxOTAsIDE3NCwgMSwgMjE0LCAyNywgMTc0LCAxLCAyMjAsIDEwNCwgMTc0LCAxLCAyMTgsIDIyNSwgMTc0LCAxLCAKLSAgICAyMDYsIDE3NCwgMSwgMTYyLCAxNzQsIDI1LCA1LCAyNTUsIDgyLCAxNzQsIDI1LCA1LCA3NCwgMTc0LCAyNSwgNSwgMjM2LCAKLSAgICA0MCwgMTc0LCAyNSwgNSwgNjksIDE3NCwgMjUsIDUsIDIxNCwgMTE4LCAxNzQsIDI1LCA1LCAxNDksIDE1MywgMTc0LCAyNSwgCi0gICAgNSwgMTQ5LCAyMjIsIDE4MiwgMTc0LCAyNSwgNSwgMTQ5LCAxNTYsIDE3NCwgMjUsIDUsIDE0OSwgMjMyLCAxOTEsIDE3NCwgCi0gICAgMjUsIDUsIDc2LCAxNzQsIDI1LCA1LCAyNTQsIDIxMCwgMTc0LCAyNSwgNSwgNzgsIDE3NCwgMjUsIDUsIDI1MywgMjAwLCAKLSAgICAxNzQsIDUsIDIxMywgMTUyLCAxNzQsIDUsIDI1MywgMTgzLCAxNzQsIDUsIDIzNSwgMTA4LCAxNzQsIDUsIDIxNCwgMTYxLCAKLSAgICAxNzQsIDIyNiwgMjA4LCAxNzQsIDI0OCwgMTg2LCAxNzQsIDUyLCAyNDgsIDE4NiwgMTc0LCAyNTUsIDMwLCA1MCwgMTc0LCAKLSAgICAyMjAsIDEzOSwgMTc0LCAyMSwgMjEwLCA4NiwgMTc0LCAyMSwgMTExLCAxNzQsIDIxLCAxMDUsIDE3NCwgMjEsIDE1OCwgCi0gICAgMTc0LCAyMSwgMTYxLCAxNzQsIDIxLCAxOTAsIDE3NCwgMjEsIDE5NSwgMTc0LCAyMSwgMTk5LCAxNzQsIDIxLCAxOTYsIAotICAgIDE3NCwgMjEsIDIwMSwgMjE3LCA3MCwgMSwgNjEsIDIxNywgNzAsIDEsIDI1NSwgODIsIDIxNywgNzAsIDEsIDc0LCAyMTcsIAotICAgIDcwLCAxLCAyMzYsIDQwLCAyMTcsIDcwLCAxLCA2OSwgMjE3LCA3MCwgMSwgMjE0LCAxMTgsIDIxNywgNzAsIDEsIDc2LCAKLSAgICAyMTcsIDcwLCAxLCAyNTQsIDIxMCwgMjE3LCA3MCwgMSwgNzgsIDIxNywgNzAsIDEsIDI1MywgMjAwLCAyMTcsIDcwLCAxLCAKLSAgICAxNzYsIDIxNywgNzAsIDEsIDIzNCwgMTM4LCAyMTcsIDcwLCAxLCAyNDMsIDE0MiwgMjE3LCA3MCwgMSwgMjQzLCAwLCAyMTcsIAotICAgIDcwLCAxLCAyMjksIDgyLCAyMTcsIDcwLCAxLCAyNTEsIDQxLCAyMTcsIDcwLCAxLCAyNTAsIDE2NSwgMjE3LCA3MCwgMSwgCi0gICAgMjM1LCAxNDcsIDIxNywgNzAsIDEsIDIzNSwgMTIwLCAyMTcsIDcwLCAxLCAyMjcsIDE2OSwgMjE3LCA3MCwgMSwgMjE1LCAKLSAgICAxNTcsIDIxNywgNzAsIDEsIDIxNSwgMTQ1LCAyMTcsIDcwLCAxLCAyNDgsIDE0MywgMjE3LCA3MCwgMSwgMjQ4LCAxMjcsIAotICAgIDIxNywgNzAsIDEsIDIyOCwgMTE1LCAyMTcsIDcwLCAxLCAyMTcsIDEwNiwgMjE3LCA3MCwgMSwgMjE2LCAyMDksIDIxNywgCi0gICAgNzAsIDEsIDI0OCwgMjI5LCAyMTcsIDcwLCAxLCAyNDgsIDMzLCAyMTcsIDcwLCAxLCAxOTgsIDIxNywgNzAsIDEsIDE5MSwgCi0gICAgMjE3LCA3MCwgMSwgMjI1LCAxNTAsIDIxNywgNzAsIDEsIDI1MiwgMTk5LCAyMTcsIDcwLCAxLCAyNTIsIDI2LCAyMTcsIDcwLCAKLSAgICAxLCAxODYsIDIxNywgNzAsIDEsIDE5MiwgMjE3LCA3MCwgMSwgMjA1LCAyMTcsIDcwLCAxLCAyMzMsIDE0MSwgMjE3LCA3MCwgCi0gICAgMSwgMjE0LCAyNywgMjE3LCA3MCwgMSwgMjIwLCAxMDQsIDIxNywgNzAsIDEsIDIwNiwgMjE3LCA3MCwgMSwgMTYyLCAyMTcsIAotICAgIDcwLCAxLCAyMjIsIDE4MSwgMjE3LCA3MCwgNSwgMjU0LCA4MywgMjE3LCA3MCwgNSwgMjEzLCAxNDcsIDIxNywgNzAsIDI1LCAKLSAgICA1LCAyNTUsIDgyLCAyMTcsIDcwLCAyNSwgNSwgNzQsIDIxNywgNzAsIDI1LCA1LCAyMzYsIDQwLCAyMTcsIDcwLCAyNSwgNSwgCi0gICAgNjksIDIxNywgNzAsIDI1LCA1LCAyMTQsIDExOCwgMjE3LCA3MCwgMjUsIDUsIDc2LCAyMTcsIDcwLCAyNSwgNSwgMjU0LCAKLSAgICAyMTAsIDIxNywgNzAsIDI1LCA1LCA3OCwgMjE3LCA3MCwgMjUsIDUsIDI1MywgMjAwLCAyMTcsIDcwLCA1LCAyMTMsIDE1MiwgCi0gICAgMjE3LCA3MCwgNSwgMjI3LCAyMDksIDIxNywgNzAsIDIxLCAyMTAsIDg2LCAyMTcsIDcwLCAyMSwgMTExLCAyMTcsIDcwLCAKLSAgICAyMSwgMTA1LCAyMTcsIDcwLCAyMSwgMTU4LCAyMTcsIDcwLCAyMSwgMTYxLCAyMTcsIDcwLCAyMSwgMTkwLCAyMTcsIDcwLCAKLSAgICAyMSwgMTk1LCAyMTcsIDcwLCAyMSwgMTk5LCAyMTcsIDcwLCAyMSwgMTk2LCAyMTcsIDcwLCAyMSwgMjAxLCAxNSwgNSwgNjEsIAotICAgIDE1LCA1LCAxMTYsIDMwLCA2MSwgMTUsIDUsIDExNiwgMzAsIDI1MiwgMTg0LCAxNSwgNSwgMTE2LCAzMCwgMjQzLCAxMTIsIAotICAgIDIxNiwgMjQwLCAxNSwgNSwgMTE2LCAzMCwgMTYyLCAxNSwgNSwgMTE2LCAzMCwgMjM2LCA0MiwgMTUsIDUsIDExNiwgMzAsIAotICAgIDIzMywgMTIyLCAyNDIsIDEwMSwgMTUsIDUsIDExNiwgMzAsIDIzMCwgNjYsIDE1LCA1LCAxMTYsIDMwLCAyMjIsIDIzLCAxNSwgCi0gICAgNSwgMjU1LCA4NCwgMTUsIDUsIDI1NSwgMzQsIDE1LCA1LCAyNTUsIDM1LCAzMCwgMjUzLCAyMzcsIDE1LCA1LCAyNTUsIDM1LCAKLSAgICAzMCwgMjQ2LCA3NSwgMjQyLCAxMDEsIDE1LCA1LCAyNTUsIDM1LCAzMCwgMjQzLCAxMjUsIDE1LCA1LCAyNTUsIDM1LCAzMCwgCi0gICAgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjU1LCAzNSwgMzAsIDE2MiwgMTUsIDUsIDI1NSwgMzUsIDMwLCAyMzYsIDQzLCAKLSAgICAyNDIsIDEwMSwgMTUsIDUsIDI1NSwgMzUsIDMwLCAyMzYsIDE2LCAxNSwgNSwgMjU1LCAzNSwgMzAsIDIzMywgMTIzLCAxNSwgCi0gICAgNSwgMjU1LCAzNSwgMzAsIDIyMCwgNTAsIDE1LCA1LCAyNTUsIDM1LCAzMCwgMTA0LCA5NiwgMTA0LCA5NiwgNjksIDE1LCA1LCAKLSAgICAyNTUsIDM1LCAyNDIsIDEwMSwgMTUsIDUsIDI1NSwgMzIsIDE1LCA1LCAyNTUsIDMzLCAzMCwgMjUyLCAxNjgsIDE1LCA1LCAKLSAgICAyNTUsIDMzLCAzMCwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjU1LCAzMywgMzAsIDIzMSwgOTcsIDk2LCAyNDUsIAotICAgIDE1OCwgMTUsIDUsIDI1NSwgMzMsIDMwLCAyMjAsIDEwMiwgMTUsIDUsIDI1NSwgMzMsIDMwLCAyMTcsIDczLCAxNSwgNSwgCi0gICAgMjU1LCA4LCAxNSwgNSwgMjU0LCAxOTUsIDE1LCA1LCAyNTQsIDE5NiwgMzAsIDI0NSwgOTUsIDE1LCA1LCAyNTQsIDE5NiwgCi0gICAgMzAsIDIyMCwgMTIsIDk2LCAyNDIsIDE5NywgMTUsIDUsIDI1NCwgMTg3LCAxNSwgNSwgMjU0LCAxODgsIDMwLCAyNTQsIAotICAgIDE4NywgMTUsIDUsIDI1NCwgMTg4LCAzMCwgMjQ3LCAyMjQsIDE1LCA1LCAyNTQsIDE4OCwgMzAsIDI0MiwgMTk3LCAxNSwgNSwgCi0gICAgMjU0LCAxODgsIDMwLCAxNjIsIDE1LCA1LCAyNTQsIDE4OCwgMzAsIDIzNSwgNSwgMTUsIDUsIDI1NCwgMTg4LCAzMCwgMjM0LCAKLSAgICA5OCwgMTUsIDUsIDI1NCwgMTg4LCAzMCwgMjIwLCA2NSwgMTUsIDUsIDI1NCwgMTg4LCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAKLSAgICAyNTQsIDE4NCwgMTUsIDUsIDI1NCwgMTc3LCAxNSwgNSwgMjU0LCAxNDAsIDE1LCA1LCAyNTQsIDE0MSwgMzAsIDIyMCwgNjUsIAotICAgIDE1LCA1LCAyNTQsIDEzMSwgMTUsIDUsIDI1NCwgMTMyLCAxMTUsIDI1NCwgMTMxLCAxNSwgNSwgMjU0LCAxMzIsIDEzNCwgCi0gICAgMjE2LCA4NiwgMTUsIDUsIDI1NCwgMTMyLCA5NiwgMjI5LCAyMjIsIDIyNiwgMTY4LCAyNTQsIDEzMiwgOTYsIDIyOSwgMjIxLCAKLSAgICAxNSwgNSwgMjU0LCAxMzIsIDk2LCAyMjksIDIyMiwgMjE4LCAyMzUsIDE1LCA1LCAyNTQsIDEwMiwgMTUsIDUsIDI1NCwgNzUsIAotICAgIDE1LCA1LCAyNTQsIDQzLCAxNSwgNSwgMjU0LCA0NCwgMzAsIDIzMywgMjAyLCAxNSwgNSwgMjU0LCAxNiwgMTUsIDUsIDI1MywgCi0gICAgMjQ0LCAxNSwgNSwgMjUzLCAyMzksIDE1LCA1LCAyNTMsIDI0MCwgMjEwLCA0MCwgMjE2LCAyNDAsIDE1LCA1LCAyNTMsIAotICAgIDI0MCwgMjM1LCA5LCAyMTYsIDI0MCwgMTUsIDUsIDI1MywgMjQwLCAxMTUsIDI1MywgMjQwLCAyMTUsIDExNSwgMTE1LCAKLSAgICAyMTUsIDExNSwgMjE1LCAxMTUsIDExNSwgMjE1LCAxMTUsIDIyNiwgMjUsIDE1LCA1LCAyNTMsIDI0MCwgMTE1LCAyNTMsIAotICAgIDI0MCwgMTE1LCAyNTMsIDIzOSwgMTUsIDUsIDI1MywgMjQwLCAxMTUsIDI1MywgMjQwLCAxMTUsIDI1MywgMjQwLCAyNDksIAotICAgIDEzMywgMjUzLCAyNDAsIDExNSwgMjUzLCAyNDAsIDExNSwgMjUzLCAyMzksIDE1LCA1LCAyNTMsIDIzNywgMTUsIDUsIDI1MywgCi0gICAgMjM0LCAxNSwgNSwgMjUyLCAxOTksIDE1LCA1LCAyNTIsIDE4NCwgMTUsIDUsIDI1MiwgMTc5LCAxNSwgNSwgMjUyLCAxNzUsIAotICAgIDE1LCA1LCAyNTIsIDE2OSwgMTUsIDUsIDI1MiwgMTcwLCAxMTUsIDI1MiwgMTY5LCAxNSwgNSwgMjUyLCAxNjgsIDE1LCA1LCAKLSAgICAxMzAsIDE1LCA1LCAyNTIsIDE0OCwgMTUsIDUsIDI1MiwgMTQsIDE1LCA1LCAyNTIsIDE1LCAzMCwgNjEsIDE1LCA1LCAyNTIsIAotICAgIDE1LCAzMCwgMjQzLCAxMDMsIDE1LCA1LCAyNTIsIDE1LCAzMCwgMjM2LCA0MywgMjQyLCAxMDEsIDE1LCA1LCAyNTEsIDEzMywgCi0gICAgMTUsIDUsIDI1MSwgMTM0LCAxMTUsIDI1MSwgMTM0LCAyNTUsIDM0LCAxNSwgNSwgMjUxLCAxMzQsIDExNSwgMjUxLCAxMzQsIAotICAgIDIxNCwgMTkwLCAxNSwgNSwgMjUxLCAxMzQsIDI0OSwgMTMzLCAyNTEsIDEzMywgMTUsIDUsIDI1MSwgMTE3LCAxNSwgNSwgCi0gICAgMjUxLCAxMTgsIDExNSwgMjUxLCAxMTcsIDE1LCA1LCAyNTEsIDEwNiwgMTUsIDUsIDI1MSwgMTA1LCAxNSwgNSwgMjQ4LCAKLSAgICAyMjksIDE1LCA1LCAyNDgsIDIyMCwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMTE2LCA5NiwgMjMxLCAxNTIsIAotICAgIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDI1NCwgMTQwLCAxNSwgNSwgMjQ4LCAyMjEsIDIzNCwgNzIsIDMwLCAKLSAgICAyNTIsIDE2OCwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMjUyLCAxNCwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIAotICAgIDcyLCAzMCwgMjQzLCAxNDIsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDI0MywgMTQzLCA5NiwgMjMxLCAxNTIsIAotICAgIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDI0MiwgMjIxLCAxNSwgNSwgMjQ4LCAyMjEsIDIzNCwgNzIsIDMwLCAKLSAgICAyNDIsIDIwNCwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMjQyLCAxMTAsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCAKLSAgICA3MiwgMzAsIDE2MiwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMjM1LCAxODYsIDE1LCA1LCAyNDgsIDIyMSwgCi0gICAgMjM0LCA3MiwgMzAsIDIzNSwgMTg3LCA5NiwgMjMyLCAxMDMsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDIzNCwgCi0gICAgMjQ4LCAxNSwgNSwgMjQ4LCAyMjEsIDIzNCwgNzIsIDMwLCAyMzMsIDE0MSwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAKLSAgICAzMCwgMjMyLCAxMDMsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDIzMiwgMTA0LCA5NiwgMjMxLCAxNTEsIDE1LCAKLSAgICA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDIzMiwgODksIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDIyOSwgCi0gICAgMTEyLCAxNSwgNSwgMjQ4LCAyMjEsIDIzNCwgNzIsIDMwLCAyMjYsIDI2LCA5NiwgMjI2LCAyNSwgMTUsIDUsIDI0OCwgMjIxLCAKLSAgICAyMzQsIDcyLCAzMCwgMjE5LCAxOTMsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDIxNywgNzMsIDE1LCA1LCAyNDgsIAotICAgIDIyMSwgMjM0LCA3MiwgMzAsIDIxNCwgMjMxLCA5NiwgMjQyLCAyMDQsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIAotICAgIDIxNCwgMTI2LCAxNSwgNSwgMjQ4LCAxOTUsIDE1LCA1LCAyNDgsIDE3NCwgMTUsIDUsIDI0OCwgMTczLCAxNSwgNSwgMjQ4LCAKLSAgICAxNzIsIDE1LCA1LCAyNDgsIDExLCAxNSwgNSwgMjQ3LCAyNTAsIDE1LCA1LCAyNDcsIDIyNSwgMTUsIDUsIDI0NywgMjI2LCAKLSAgICAzMCwgMjIwLCA2NSwgMTUsIDUsIDI0NywgMjI0LCAxNSwgNSwgMjQ3LCAyMTQsIDE1LCA1LCAyNDcsIDIxNSwgMjM0LCAyMTQsIAotICAgIDEwNCwgMjQyLCAxMDIsIDI0NywgMTk1LCAxNSwgNSwgMjQ3LCAxOTUsIDE1LCA1LCAyNDYsIDg2LCAxNSwgNSwgMjQ2LCA4NywgCi0gICAgMTE1LCAyNDYsIDg2LCAxNSwgNSwgMjQ2LCA4NywgMjQyLCAxMDEsIDE1LCA1LCAyNDYsIDg3LCAyMjAsIDQ3LCAxNSwgNSwgCi0gICAgMjQ2LCA4NCwgMTUsIDUsIDI0NiwgODUsIDMwLCAyNDUsIDgwLCAxNSwgNSwgMjQ2LCA4MywgMTUsIDUsIDI0NiwgODIsIDE1LCAKLSAgICA1LCAyNDYsIDgxLCAxNSwgNSwgMjQ2LCA4MCwgMTUsIDUsIDI0NiwgNzYsIDE1LCA1LCAyNDYsIDc0LCAxNSwgNSwgMjQ2LCAKLSAgICA3NSwgMjQyLCAxMDEsIDE1LCA1LCAyNDYsIDc1LCAyNDIsIDEwMiwgMjQyLCAxMDEsIDE1LCA1LCAyNDYsIDczLCAxNSwgNSwgCi0gICAgMjQ2LCA2NiwgMTUsIDUsIDc2LCAxNSwgNSwgMTYwLCAzMCwgMjI2LCAyNSwgMTUsIDUsIDE2MCwgMTE1LCAxNjAsIDIyNywgCi0gICAgMTk5LCAxMTUsIDIyNywgMTk4LCAxNSwgNSwgMjQ1LCAyNDIsIDE1LCA1LCAyNDUsIDI0MywgMzAsIDExNiwgOTYsIDI0MiwgCi0gICAgNTYsIDk2LCAyNDgsIDIyOSwgMTUsIDUsIDI0NSwgMjQzLCAzMCwgMjQzLCAxMDMsIDE1LCA1LCAyNDUsIDI0MywgMzAsIAotICAgIDIzMCwgMjM1LCAxNSwgNSwgMjQ1LCAyNDMsIDMwLCAyMjIsIDEwLCAxNSwgNSwgMjQ1LCAyNDMsIDMwLCAyMjAsIDY1LCAxNSwgCi0gICAgNSwgMjQ1LCAyNDMsIDMwLCA2OSwgMTUsIDUsIDI0NSwgMjE5LCAxNSwgNSwgMjQ1LCAyMDgsIDE1LCA1LCAyNDUsIDE4MiwgCi0gICAgMTUsIDUsIDI0NSwgMTU4LCAxNSwgNSwgMjQ1LCAxNTksIDMwLCAyNDMsIDExMSwgMTUsIDUsIDI0NSwgMTU5LCAzMCwgMjQzLCAKLSAgICAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjQ1LCAxNTksIDMwLCAyMzEsIDk2LCAxNSwgNSwgMjQ1LCAxNTksIDI0OSwgMTMzLCAKLSAgICAyNDUsIDE1OCwgMTUsIDUsIDI0NSwgMTU5LCAyMjYsIDE2OCwgMjQ1LCAxNTgsIDE1LCA1LCAyNDUsIDE1OSwgMjE4LCAyMzUsIAotICAgIDE1LCA1LCAyNDUsIDk3LCAxNSwgNSwgMjQ1LCA5NSwgMTUsIDUsIDI0NSwgODAsIDE1LCA1LCAyNDUsIDE4LCAxNSwgNSwgCi0gICAgMjQ1LCAxOSwgMzAsIDYxLCAxNSwgNSwgMjQ1LCAxOSwgMzAsIDExNiwgOTYsIDIzMywgMTEwLCAxNSwgNSwgMjQ1LCAxOSwgCi0gICAgMzAsIDExNiwgOTYsIDIzMywgMTExLCAzMCwgMjMzLCAxMTAsIDE1LCA1LCAyNDUsIDE5LCAzMCwgMjU0LCAxMzEsIDE1LCA1LCAKLSAgICAyNDUsIDE5LCAzMCwgMjUyLCAxODQsIDE1LCA1LCAyNDUsIDE5LCAzMCwgMjQ2LCA3NSwgMjQyLCAxMDEsIDE1LCA1LCAyNDUsIAotICAgIDE5LCAzMCwgMjQ2LCA3NSwgMjQyLCAxMDIsIDI0MiwgMTAxLCAxNSwgNSwgMjQ1LCAxOSwgMzAsIDE2MiwgMTUsIDUsIDI0NSwgCi0gICAgMTksIDMwLCAyNDIsIDU2LCAyNDIsIDEwMSwgMTUsIDUsIDI0NSwgMTksIDMwLCAyMzYsIDQzLCAyNDIsIDEwMSwgMTUsIDUsIAotICAgIDI0NSwgMTksIDMwLCAyMzQsIDIxMywgMTUsIDUsIDI0NSwgMTksIDMwLCAyMzQsIDIxNCwgMjE4LCAyMzUsIDE1LCA1LCAKLSAgICAyNDUsIDE5LCAzMCwgMjMzLCAyMjEsIDE1LCA1LCAyNDUsIDE5LCAzMCwgMjMzLCAxNDEsIDE1LCA1LCAyNDUsIDE5LCAzMCwgCi0gICAgMjMzLCAxMTEsIDMwLCAyMzMsIDExMCwgMTUsIDUsIDI0NSwgMTksIDMwLCAyMzIsIDI0NywgMTUsIDUsIDI0NSwgMTksIDMwLCAKLSAgICAyMzIsIDEwMywgMTUsIDUsIDI0NSwgMTksIDMwLCAyMTQsIDIzMCwgMTUsIDUsIDI0NSwgMTksIDMwLCAyMTQsIDIxOSwgMTUsIAotICAgIDUsIDI0MywgMTQyLCAxNSwgNSwgMjQzLCAxNDMsIDI0MiwgMTAxLCAxNSwgNSwgMjQzLCAxNDAsIDE1LCA1LCAyNDMsIDE0MSwgCi0gICAgMzAsIDExNiwgOTYsIDI0OCwgMjMwLCA5NiwgMTYyLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAxMTYsIDk2LCAxNjIsIDE1LCA1LCAKLSAgICAyNDMsIDE0MSwgMzAsIDExNiwgOTYsIDIzNiwgNDIsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI1NSwgMzMsIDIxNiwgMjQxLCAKLSAgICA5NiwgMjE3LCA5NCwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjU0LCAxMzEsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI1MywgCi0gICAgMjM5LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNTMsIDIzOCwgOTYsIDI0MywgMTI1LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAKLSAgICAyNTIsIDE4NCwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjUyLCAxNDksIDk2LCAyMDUsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIAotICAgIDI1MSwgMTA2LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNTEsIDEwNywgOTYsIDIwNSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgCi0gICAgMjQ4LCAyMjksIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0OCwgMTEsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0NywgMjI2LCAKLSAgICAzMCwgMjIwLCA2NSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjQ2LCA4NCwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjQ1LCAxODIsIAotICAgIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0NSwgMTgzLCA5NiwgMjMzLCAxNDEsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0NSwgCi0gICAgMTU4LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNDUsIDE1OSwgMzAsIDI0MywgMTEyLCAyMTYsIDI0MCwgMTUsIDUsIDI0MywgCi0gICAgMTQxLCAzMCwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNDMsIDEwMywgMTUsIDUsIDI0MywgCi0gICAgMTQxLCAzMCwgMjQyLCAyMjEsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0MiwgMjE5LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAKLSAgICAyNDIsIDIyMCwgOTYsIDYxLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNDIsIDIwNSwgOTYsIDIxOCwgODQsIDE1LCA1LCAyNDMsIAotICAgIDE0MSwgMzAsIDI0MiwgNTYsIDk2LCAyMzIsIDEwNCwgOTYsIDI0NSwgODAsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0MiwgCi0gICAgMzcsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0MiwgMzgsIDk2LCAyMzMsIDE0MSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjQxLCAKLSAgICAxODgsIDk2LCAyMzIsIDI0NywgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjQwLCAyMjUsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIAotICAgIDIzNiwgNDMsIDI0MiwgMTAxLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMzUsIDE3MywgOTYsIDI0MCwgMjMwLCA5NiwgMjUzLCAKLSAgICAyMzksIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDIzNCwgMjQ4LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMzQsIDIxMywgMTUsIDUsIAotICAgIDI0MywgMTQxLCAzMCwgMjM0LCA5NSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjM0LCA5NiwgOTYsIDIzMywgMTEwLCAxNSwgNSwgCi0gICAgMjQzLCAxNDEsIDMwLCAyMzMsIDIyMiwgOTYsIDI1NCwgMTMxLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMzMsIDE0MSwgMTUsIAotICAgIDUsIDI0MywgMTQxLCAzMCwgMjMxLCA5NywgOTYsIDI0NSwgMTU4LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMzAsIDIzNSwgCi0gICAgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjI3LCAxOTgsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDIyNywgMTk5LCAxMTUsIDIyNywgCi0gICAgMTk4LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAxOTEsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDIyMiwgMTAsIDE1LCA1LCAyNDMsIAotICAgIDE0MSwgMzAsIDIyMSwgMjMzLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMjAsIDY1LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAKLSAgICAyMjAsIDY2LCA5NiwgMjE1LCA5OSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjIwLCAzMiwgMTUsIDUsIDI0MywgMTQxLCAzMCwgCi0gICAgMjE4LCA0NCwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjE3LCA3MywgMTUsIDUsIDI0MywgMTQxLCAzMCwgNjksIDE1LCA1LCAKLSAgICAyNDMsIDE0MSwgMzAsIDIxNCwgMjE5LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMTQsIDIyMCwgOTYsIDI0NiwgODYsIDE1LCAKLSAgICA1LCAyNDMsIDE0MSwgMTE1LCAyNDMsIDE0MCwgMTUsIDUsIDI0MywgMTM1LCAxNSwgNSwgMjQzLCAxMzYsIDI0OSwgMTMzLCAKLSAgICAyNDMsIDEzNSwgMTUsIDUsIDI0MywgMTMzLCAxNSwgNSwgMjQzLCAxMzQsIDExNSwgMjQzLCAxMzQsIDI0MywgMTA0LCAxMTUsIAotICAgIDI0MywgMTAzLCAxNSwgNSwgMjQzLCAxMjUsIDE1LCA1LCAyNDMsIDEyNiwgMjQzLCAxMzQsIDExNSwgMjQzLCAxMzQsIDI0MywgCi0gICAgMTA0LCAxMTUsIDI0MywgMTAzLCAxNSwgNSwgMjQzLCAxMjQsIDE1LCA1LCAyNDMsIDEyMiwgMTUsIDUsIDI0MywgMTEzLCAKLSAgICAxNSwgNSwgMjQzLCAxMTEsIDE1LCA1LCAyNDMsIDExMiwgMjE2LCAyNDAsIDE1LCA1LCAyNDMsIDExMiwgMTE1LCAyNDMsIAotICAgIDExMSwgMTUsIDUsIDI0MywgMTEyLCAyNDksIDEzMywgMjQzLCAxMTEsIDE1LCA1LCAyNDMsIDEwMywgMTUsIDUsIDI0MywgCi0gICAgMTAyLCAxNSwgNSwgMjQzLCA5NywgMTUsIDUsIDI0MywgNDMsIDE1LCA1LCAyNDMsIDQ0LCAzMCwgMjMzLCAyMDIsIDE1LCA1LCAKLSAgICAyNDIsIDIyMSwgMTUsIDUsIDI0MiwgMjIyLCAzMCwgNzYsIDE1LCA1LCAyNDIsIDIyMiwgMzAsIDY5LCAxNSwgNSwgMjQyLCAKLSAgICAyMjIsIDI0OSwgMTMzLCAyNDIsIDIyMSwgMTUsIDUsIDI0MiwgMjE5LCAxNSwgNSwgMjQyLCAyMjAsIDExNSwgMjQyLCAyMTksIAotICAgIDE1LCA1LCAyNDIsIDIyMCwgMjQ5LCAxMzMsIDI0MiwgMjE5LCAxNSwgNSwgMjQyLCAyMTYsIDE1LCA1LCAyNDIsIDIwNCwgCi0gICAgMTUsIDUsIDI0MiwgMjA1LCAyNDIsIDEwMSwgMTUsIDUsIDI0MiwgMjAyLCAxNSwgNSwgMjQyLCAyMDMsIDMwLCAxMTYsIDk2LCAKLSAgICAyMzYsIDQyLCAxNSwgNSwgMjQyLCAyMDMsIDMwLCAyNDMsIDExMiwgMjE2LCAyNDAsIDE1LCA1LCAyNDIsIDIwMywgMzAsIAotICAgIDIzNiwgNDIsIDE1LCA1LCAyNDIsIDIwMywgMzAsIDIzMiwgMTA0LCA5NiwgMjM2LCA0MiwgMTUsIDUsIDI0MiwgMjAzLCAzMCwgCi0gICAgMTkxLCAxNSwgNSwgMjQyLCAxOTksIDE1LCA1LCAyNDIsIDE5NywgMTUsIDUsIDI0MiwgMTk4LCAyNDksIDEzMywgMjQyLCAKLSAgICAxOTcsIDE1LCA1LCAyNDIsIDE5OCwgMzAsIDI1MiwgMTg0LCAxNSwgNSwgMjQyLCAxOTgsIDMwLCAyMTcsIDczLCAxNSwgNSwgCi0gICAgMjQyLCAxOTgsIDIxNiwgMjQwLCAxNSwgNSwgMjQyLCAxMjAsIDE1LCA1LCAyNDIsIDEyMSwgMjQ5LCAxMzMsIDI0MiwgMTIwLCAKLSAgICAxNSwgNSwgMjQyLCAxMTgsIDE1LCA1LCAyNDIsIDExOSwgMzAsIDIzNCwgMjQ4LCAxNSwgNSwgMjQyLCAxMTksIDMwLCAyMzQsIAotICAgIDI0OSwgMzAsIDIzNiwgNDMsIDI0MiwgMTAxLCAxNSwgNSwgMjQyLCAxMTksIDMwLCAyMjcsIDE5OCwgMTUsIDUsIDI0MiwgCi0gICAgMTE5LCAzMCwgMjIyLCAxMSwgOTYsIDIxNSwgMTE0LCAxNSwgNSwgMjQyLCAxMTksIDI0MiwgMTAxLCAxNSwgNSwgMjQyLCAKLSAgICAxMTAsIDE1LCA1LCAyNDIsIDExMSwgMzAsIDExNiwgOTYsIDIzMywgMjAyLCAxNSwgNSwgMjQyLCAxMTEsIDMwLCAyMzMsIAotICAgIDIwMiwgMTUsIDUsIDI0MiwgMTExLCAxMTUsIDI0MiwgMTExLCAyMzIsIDk2LCAxNSwgNSwgMjQyLCAxMDUsIDE1LCA1LCAKLSAgICAyNDIsIDEwMywgMTUsIDUsIDI0MiwgMTA0LCAzMCwgMjIwLCA2NSwgMTUsIDUsIDI0MiwgOTUsIDE1LCA1LCAyNDIsIDk0LCAKLSAgICAxNSwgNSwgMjQyLCA5MSwgMTUsIDUsIDI0MiwgOTAsIDE1LCA1LCAxNjIsIDE1LCA1LCAyNDIsIDU2LCAyMTYsIDI0MCwgMTUsIAotICAgIDUsIDI0MiwgNTYsIDI0MiwgMTAxLCAxNSwgNSwgMjQyLCAzNywgMTUsIDUsIDI0MSwgMTg3LCAxNSwgNSwgMjQxLCAxODgsIAotICAgIDMwLCAyNTMsIDIzOSwgMTUsIDUsIDI0MSwgMTg4LCAzMCwgMjUzLCAyMzcsIDE1LCA1LCAyNDEsIDE4OCwgMzAsIDI1MiwgCi0gICAgMTg0LCAxNSwgNSwgMjQxLCAxODgsIDMwLCAyNDcsIDE5NSwgMTUsIDUsIDI0MSwgMTg4LCAzMCwgMjQzLCAxMzMsIDE1LCA1LCAKLSAgICAyNDEsIDE4OCwgMzAsIDIzNCwgODcsIDE1LCA1LCAyNDEsIDE4OCwgMzAsIDIyNywgMTk4LCAxNSwgNSwgMjQxLCAxODgsIAotICAgIDMwLCAyMjAsIDY1LCAxNSwgNSwgMjQxLCAxODgsIDMwLCA2OSwgMTUsIDUsIDI0MCwgMjI5LCAxNSwgNSwgMjQwLCAyMjUsIAotICAgIDE1LCA1LCAyNDAsIDIyNiwgMzAsIDI1NCwgMTMxLCAxNSwgNSwgMjQwLCAyMjYsIDMwLCAyNDIsIDM3LCAxNSwgNSwgMjQwLCAKLSAgICAyMjYsIDMwLCAyMzQsIDIxMywgMTUsIDUsIDI0MCwgMjI2LCAzMCwgMjMyLCAyMDMsIDE1LCA1LCAyNDAsIDIyNiwgMzAsIAotICAgIDIxNCwgMjE5LCAxNSwgNSwgMjQwLCAyMjIsIDE1LCA1LCA3NCwgMTUsIDUsIDI0MCwgMTYxLCA2MSwgMTUsIDUsIDI0MCwgCi0gICAgMTIyLCAxNSwgNSwgMjM2LCA3MCwgMTUsIDUsIDIzNiwgNzEsIDExNSwgMjM2LCA3MSwgMjUxLCAxMDYsIDE1LCA1LCAyMzYsIAotICAgIDcxLCAxMTUsIDIzNiwgNzEsIDIxOCwgMjM1LCAxNSwgNSwgMjM2LCA0NSwgMTUsIDUsIDIzNiwgNDIsIDE1LCA1LCAyMzYsIAotICAgIDQzLCAyNDcsIDI1MCwgMTUsIDUsIDIzNiwgNDMsIDIyMywgMzgsIDE1LCA1LCAyMzYsIDQzLCAxMTUsIDIzNiwgNDMsIDIyMCwgCi0gICAgMTYsIDExNSwgMjIwLCAxNiwgMjE0LCAyMjAsIDExNSwgMjE0LCAyMTksIDE1LCA1LCAyMzYsIDQzLCAyNDIsIDEwMSwgMTUsIAotICAgIDUsIDIzNiwgMzQsIDE1LCA1LCAyMzYsIDM1LCAzMCwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjM2LCAzMywgMTUsIAotICAgIDUsIDIzNiwgMjMsIDE1LCA1LCAyMzYsIDI0LCAzMCwgMjE3LCA3MywgMTUsIDUsIDIzNiwgMjQsIDI0OSwgMTMzLCAyMzYsIAotICAgIDIzLCAxNSwgNSwgMjM2LCAyNCwgMjI2LCAxNjgsIDIzNiwgMjMsIDE1LCA1LCAyMzYsIDI0LCAyMTgsIDIzNSwgMTUsIDUsIAotICAgIDIzNiwgMTYsIDE1LCA1LCAyMzYsIDYsIDE1LCA1LCAyMzUsIDE4NiwgMTUsIDUsIDIzNSwgMTcyLCAxNSwgNSwgMTc2LCAxNSwgCi0gICAgNSwgMjM1LCAxOSwgMzAsIDYxLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI1NSwgOCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNTUsIAotICAgIDksIDk2LCAyMzMsIDIyMSwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNTMsIDIzNywgMTUsIDUsIDIzNSwgMTksIDMwLCAyNTIsIAotICAgIDE4NCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNTIsIDE2OCwgMTUsIDUsIDIzNSwgMTksIDMwLCAxMzAsIDE1LCA1LCAyMzUsIAotICAgIDE5LCAzMCwgMjUyLCAxNCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNDUsIDk1LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI0NSwgCi0gICAgODAsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjQzLCAxNDIsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjQzLCAxMjUsIDE1LCA1LCAKLSAgICAyMzUsIDE5LCAzMCwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI0MywgMTAzLCAxNSwgNSwgCi0gICAgMjM1LCAxOSwgMzAsIDI0MywgMTA0LCA5NiwgMjIwLCAxMDMsIDk2LCA2MSwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNDIsIAotICAgIDIyMSwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNDIsIDIwNCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNDIsIDE5OCwgOTYsIDIyMSwgCi0gICAgMjMzLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI0MiwgMTk4LCAyNDksIDEzMywgMjQyLCAxOTcsIDE1LCA1LCAyMzUsIDE5LCAKLSAgICAzMCwgMjQyLCAxMjAsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjQyLCA5NCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMzYsIDQyLCAKLSAgICAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzNiwgMjMsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjM0LCAyNDgsIDE1LCA1LCAyMzUsIAotICAgIDE5LCAzMCwgMjM0LCA5OCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMzQsIDk1LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzMiwgCi0gICAgMjQ3LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzMiwgMTAzLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzMSwgOTYsIDE1LCA1LCAKLSAgICAyMzUsIDE5LCAzMCwgMjMxLCA5NywgOTYsIDI0NiwgODYsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjMxLCA5NywgOTYsIDI0MiwgCi0gICAgMjIxLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzMSwgOTcsIDk2LCAyMTcsIDIzLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzMCwgCi0gICAgMjM1LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzMCwgMjM2LCA5NiwgMjI3LCAxOTMsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjI5LCAKLSAgICAxMTIsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjI3LCAxOTgsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjI1LCAxMTEsIDE1LCA1LCAKLSAgICAyMzUsIDE5LCAzMCwgMjIyLCAxNDIsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjA2LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIyMSwgCi0gICAgMjMzLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIyMCwgMTA0LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIyMCwgNjUsIDE1LCA1LCAKLSAgICAyMzUsIDE5LCAzMCwgMjIwLCAzMiwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMTksIDIyNywgMTUsIDUsIDIzNSwgMTksIDMwLCAKLSAgICAyMTksIDE4NCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMTgsIDUyLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIxNywgNTEsIDE1LCAKLSAgICA1LCAyMzUsIDE5LCAzMCwgNjksIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMzUsIDE5LCAzMCwgCi0gICAgMjE0LCAyMTksIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjE0LCAxOTMsIDMwLCAxOTEsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjE0LCAKLSAgICAxMjYsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjEwLCA0NCwgMTUsIDUsIDIzNSwgMTcsIDE1LCA1LCAyMzUsIDE4LCAyNDksIAotICAgIDEzMywgMjM1LCAxNywgMTUsIDUsIDIzNSwgMTAsIDE1LCA1LCAyMzUsIDcsIDE1LCA1LCAyMzUsIDUsIDE1LCA1LCAyMzUsIAotICAgIDQsIDE1LCA1LCAyMzUsIDIsIDE1LCA1LCAyMzUsIDMsIDExNSwgMjM1LCAyLCAxNSwgNSwgMjM0LCAyNDgsIDE1LCA1LCAKLSAgICAyMzQsIDI0OSwgMzAsIDIzNiwgNDMsIDI0MiwgMTAxLCAxNSwgNSwgMjM0LCAyNDQsIDE1LCA1LCAyMzQsIDI0NSwgMzAsIAotICAgIDI1MiwgMTg0LCAxNSwgNSwgMjM0LCAyNDUsIDI0OSwgMTMzLCAyMzQsIDI0NCwgMTUsIDUsIDIzNCwgMjQyLCAxNSwgNSwgCi0gICAgMjM0LCAyNDEsIDE1LCA1LCAyMzQsIDIxMywgMTUsIDUsIDIzNCwgMjE0LCAyMzMsIDEyNCwgMzAsIDEwNCwgMTE1LCAyMzMsIAotICAgIDEyNCwgMzAsIDY5LCAxNSwgNSwgMjM0LCAyMTQsIDExNSwgMjM0LCAyMTQsIDIzMywgMTI0LCAzMCwgMTA0LCAxMTUsIDIzMywgCi0gICAgMTI0LCAzMCwgNjksIDE1LCA1LCAyMzQsIDE2MywgMTUsIDUsIDIzNCwgOTgsIDE1LCA1LCAyMzQsIDk5LCAzMCwgMjUyLCAKLSAgICAxODQsIDE1LCA1LCAyMzQsIDk5LCAzMCwgNjksIDE1LCA1LCAyMzQsIDk5LCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyMzQsIAotICAgIDk1LCAxNSwgNSwgMjM0LCA4NywgMTUsIDUsIDIzNCwgNzQsIDE1LCA1LCAyMzQsIDczLCAxNSwgNSwgMjM0LCA3MSwgMTUsIAotICAgIDUsIDIzNCwgNzIsIDExNSwgMjM0LCA3MSwgMTUsIDUsIDIzMywgMjIzLCAxNSwgNSwgMjMzLCAyMjQsIDExNSwgMjQxLCAKLSAgICAxODgsIDMwLCAyNTMsIDIzOCwgMjMzLCAyMjQsIDExNSwgMjQxLCAxODgsIDMwLCAyNTMsIDIzNywgMTUsIDUsIDIzMywgCi0gICAgMjIxLCAxNSwgNSwgMjMzLCAyMTksIDE1LCA1LCAyMzMsIDIyMCwgMjE0LCAxMiwgMTcsIDE1LCA1LCAyMzMsIDIxOCwgMTUsIAotICAgIDUsIDIzMywgMjE1LCAxNSwgNSwgMjMzLCAyMTYsIDI0MiwgMTAxLCAxNSwgNSwgMjMzLCAyMTQsIDE1LCA1LCAyMzMsIDIwMiwgCi0gICAgMTUsIDUsIDIzMywgMjAzLCAyMjYsIDE2OCwgMjMzLCAyMDIsIDE1LCA1LCAyMzMsIDE5NywgMTUsIDUsIDIzMywgMTc4LCAKLSAgICAxNSwgNSwgMjMzLCAxNDEsIDE1LCA1LCAyMzMsIDEyMywgMTUsIDUsIDIzMywgMTI0LCAzMCwgNjEsIDE1LCA1LCAyMzMsIAotICAgIDEyNCwgMzAsIDExNiwgOTYsIDI0OCwgMjMwLCA5NiwgMTYyLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAxMTYsIDk2LCAyNDMsIAotICAgIDEwMywgMTUsIDUsIDIzMywgMTI0LCAzMCwgMTE2LCA5NiwgMjMzLCAxMTAsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDI1NCwgCi0gICAgMTg3LCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyNTQsIDEzMSwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjUzLCAyNDAsIDIxMCwgCi0gICAgNDAsIDIxNiwgMjQwLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyNTIsIDE4NCwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjUyLCAKLSAgICAxNCwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjQ4LCAxNzQsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDI0NSwgMTU4LCAxNSwgNSwgCi0gICAgMjMzLCAxMjQsIDMwLCAyNDMsIDE0MiwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjQzLCAxMDMsIDE1LCA1LCAyMzMsIDEyNCwgCi0gICAgMzAsIDI0MiwgMTEwLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyNDIsIDExMSwgOTYsIDI0MiwgMTEwLCAxNSwgNSwgMjMzLCAKLSAgICAxMjQsIDMwLCAxNjIsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDI0MiwgMzcsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDI0MSwgCi0gICAgMTg4LCAzMCwgMjI3LCAxOTgsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIzNiwgNDMsIDI0MiwgMTAxLCAxNSwgNSwgMjMzLCAKLSAgICAxMjQsIDMwLCAyMzYsIDIzLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMzYsIDI0LCA5NiwgMTYyLCAxNSwgNSwgMjMzLCAxMjQsIAotICAgIDMwLCAyMzYsIDI0LCA5NiwgMjMyLCAxMDMsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIzNCwgOTgsIDE1LCA1LCAyMzMsIDEyNCwgCi0gICAgMzAsIDIzNCwgODcsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIzMywgMjIxLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMzMsIAotICAgIDIxNSwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjMzLCAyMTYsIDk2LCAyNDEsIDE4OCwgOTYsIDYxLCAxNSwgNSwgMjMzLCAKLSAgICAxMjQsIDMwLCAyMzMsIDEyMywgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjMyLCAyMDMsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIAotICAgIDIzMiwgMTAzLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMzIsIDkxLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMzEsIDk2LCAxNSwgCi0gICAgNSwgMjMzLCAxMjQsIDMwLCAyMzEsIDk3LCA5NiwgMjQ1LCAxNTgsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIzMCwgNjYsIDE1LCAKLSAgICA1LCAyMzMsIDEyNCwgMzAsIDIyOSwgMTEyLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMjAsIDY2LCA5NiwgMjE4LCA0NCwgMTUsIAotICAgIDUsIDIzMywgMTI0LCAzMCwgMjIwLCAxMiwgOTYsIDI0MiwgMTk4LCA5NiwgMjQ1LCA5NSwgMTUsIDUsIDIzMywgMTI0LCAzMCwgCi0gICAgMjIwLCAxMiwgOTYsIDI0MiwgMTk4LCAyMTYsIDI0MCwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjE5LCAyMjUsIDE1LCA1LCAKLSAgICAyMzMsIDEyNCwgMzAsIDIxOSwgMjI2LCA5NiwgMjE5LCAyMjUsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIxOCwgNDQsIDE1LCAKLSAgICA1LCAyMzMsIDEyNCwgMzAsIDIxNywgODUsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIxNywgNzMsIDE1LCA1LCAyMzMsIDEyNCwgCi0gICAgMzAsIDIxNywgMjQsIDk2LCAxMTYsIDk2LCAyMTgsIDg1LCA5NiwgMTk4LCAxNSwgNSwgMjMzLCAxMjQsIDMwLCA2OSwgMTUsIAotICAgIDUsIDIzMywgMTI0LCAzMCwgMTA0LCA5NiwgNjEsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDEwNCwgOTYsIDEwNCwgOTYsIDY5LCAKLSAgICAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMTQsIDIzMSwgOTYsIDI1MywgMjM5LCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMTQsIAotICAgIDIxOSwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAyMzMsIDEyNCwgMjE4LCAyMzUsIDE1LCA1LCAKLSAgICAyMzMsIDEyMSwgMTUsIDUsIDIzMywgMTIyLCAzMCwgMjIwLCA2NSwgMTUsIDUsIDIzMywgMTIyLCAzMCwgMjIwLCA2NiwgOTYsIAotICAgIDIxOCwgNDQsIDE1LCA1LCAyMzMsIDEyMiwgMjQyLCAxMDEsIDE1LCA1LCAyMzMsIDEyMiwgMjQyLCAxMDIsIDExNSwgMjMzLCAKLSAgICAxMjIsIDI0MiwgMTAyLCAyMjAsIDY1LCAxNSwgNSwgMjMzLCAxMTcsIDE1LCA1LCAyMzMsIDExMCwgMTUsIDUsIDIzMywgCi0gICAgMTExLCAzMCwgMjMzLCAxMTAsIDE1LCA1LCAyMzMsIDEwOCwgMTUsIDUsIDIzMywgMTA5LCAzMCwgMjMzLCAyMDIsIDE1LCA1LCAKLSAgICAyMzMsIDEwOSwgMzAsIDIzMywgMjAzLCA5NiwgMjIyLCAxNDIsIDE1LCA1LCAyMzIsIDI0NywgMTUsIDUsIDIzMiwgMjMyLCAKLSAgICAxNSwgNSwgMjMyLCAyMjIsIDE1LCA1LCAyMzIsIDIwMywgMTUsIDUsIDIzMiwgMTAzLCAxNSwgNSwgMjMyLCAxMDQsIDMwLCAKLSAgICAyNTIsIDE4NCwgMTUsIDUsIDIzMiwgMTAxLCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAyNTQsIDE4NywgMTUsIDUsIDIzMiwgCi0gICAgMTAyLCAzMCwgMjUyLCAxODQsIDE1LCA1LCAyMzIsIDEwMiwgMzAsIDI0NSwgODAsIDE1LCA1LCAyMzIsIDEwMiwgMzAsIAotICAgIDI0NSwgODEsIDIxNiwgMjQwLCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAyNDMsIDExMiwgMjE2LCAyNDAsIDE1LCA1LCAyMzIsIAotICAgIDEwMiwgMzAsIDI0MSwgMTg4LCAzMCwgMjUyLCAxODQsIDE1LCA1LCAyMzIsIDEwMiwgMzAsIDIzNiwgMjMsIDE1LCA1LCAKLSAgICAyMzIsIDEwMiwgMzAsIDIzNSwgNywgMTUsIDUsIDIzMiwgMTAyLCAzMCwgMjM1LCA1LCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAKLSAgICAyMzUsIDYsIDk2LCAyNTMsIDIzOSwgMTUsIDUsIDIzMiwgMTAyLCAzMCwgMjM0LCA5OCwgMTUsIDUsIDIzMiwgMTAyLCAzMCwgCi0gICAgMjMzLCAxNDIsIDk2LCAyNTMsIDIzOSwgMTUsIDUsIDIzMiwgMTAyLCAzMCwgMjMzLCAxMjMsIDE1LCA1LCAyMzIsIDEwMiwgCi0gICAgMzAsIDIzMSwgOTcsIDk2LCAyNDUsIDE1OCwgMTUsIDUsIDIzMiwgMTAyLCAzMCwgMjI5LCAxMTIsIDE1LCA1LCAyMzIsIAotICAgIDEwMiwgMzAsIDIyNywgMjQyLCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAyMTksIDE5NCwgOTYsIDI1MywgMjM5LCAxNSwgNSwgCi0gICAgMjMyLCAxMDIsIDMwLCAyMTksIDE3NiwgOTYsIDI1MSwgMTMzLCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAyMTUsIDExNCwgMTUsIAotICAgIDUsIDIzMiwgMTAyLCAyMTYsIDI0MCwgMTUsIDUsIDIzMiwgMTAyLCAyNDksIDEzMywgMjMyLCAxMDEsIDE1LCA1LCAyMzIsIAotICAgIDEwMiwgMjI2LCAxNjgsIDIzMiwgMTAxLCAxNSwgNSwgMjMyLCAxMDIsIDIxOCwgMjM1LCAxNSwgNSwgMjMyLCAxMDIsIDIyMCwgCi0gICAgNDcsIDE1LCA1LCAyMzIsIDEwMCwgMTUsIDUsIDIzMiwgOTYsIDE1LCA1LCAyMzIsIDk3LCAxMTUsIDIzMiwgOTYsIDE1LCA1LCAKLSAgICAyMzIsIDk3LCAyMjYsIDE2OCwgMjMyLCA5NiwgMTUsIDUsIDIzMiwgOTcsIDIyMCwgNDcsIDE1LCA1LCAyMzIsIDk0LCAxNSwgCi0gICAgNSwgMjMyLCA5MSwgMTUsIDUsIDIzMiwgODksIDE1LCA1LCAyMzIsIDkwLCAxMTUsIDIzMiwgODksIDE1LCA1LCAyMzIsIDkwLCAKLSAgICAxMTUsIDIzMiwgOTAsIDI0MywgMTA0LCAxMTUsIDI0MywgMTAzLCAxNSwgNSwgMTg2LCAxNSwgNSwgMjMxLCAyNDQsIDMwLCAKLSAgICAyMTcsIDczLCAxNSwgNSwgMjMxLCAyNDQsIDI0MiwgMTAxLCAxNSwgNSwgMjMxLCAyNDMsIDE1LCA1LCAyMzEsIDIxNSwgMTUsIAotICAgIDUsIDIzMSwgMTcxLCAxNSwgNSwgMjMxLCAxNTIsIDE1LCA1LCAyMzEsIDE1MSwgMTUsIDUsIDIzMSwgOTYsIDE1LCA1LCAKLSAgICAyMzEsIDUyLCAxNSwgNSwgMjMwLCAyMzUsIDE1LCA1LCAyMzAsIDE5MywgMTUsIDUsIDIzMCwgMTA3LCAxNSwgNSwgMjMwLCAKLSAgICAxMDgsIDExNSwgMjMwLCAxMDcsIDE1LCA1LCAyMzAsIDk4LCAxNSwgNSwgMjMwLCA5OSwgMjQyLCAxMDEsIDE1LCA1LCAyMzAsIAotICAgIDgzLCAxNSwgNSwgMjMwLCA2OSwgMTUsIDUsIDIzMCwgNjYsIDE1LCA1LCAyMzAsIDY3LCAzMCwgNjEsIDE1LCA1LCAyMzAsIAotICAgIDY3LCAzMCwgMjMzLCAyMDIsIDE1LCA1LCAyMzAsIDY3LCAzMCwgMjEwLCAxMTYsIDE1LCA1LCAyMzAsIDY3LCAxMTUsIDIzMCwgCi0gICAgNjYsIDE1LCA1LCAyMzAsIDY3LCAxMTUsIDIzMCwgNjcsIDMwLCAxMTYsIDk2LCAxOTgsIDE1LCA1LCAyMzAsIDY3LCAyNDksIAotICAgIDEzMywgMjMwLCA2NiwgMTUsIDUsIDIzMCwgNjQsIDE1LCA1LCAyMzAsIDY1LCAzMCwgNjEsIDE1LCA1LCAyMzAsIDY1LCAzMCwgCi0gICAgMTE2LCA5NiwgMjQ4LCAxMSwgMTUsIDUsIDIzMCwgNjUsIDMwLCAyNDgsIDExLCAxNSwgNSwgMjMwLCA2NSwgMjQyLCAxMDEsIAotICAgIDE1LCA1LCAxOTgsIDE1LCA1LCAyMjksIDIzMiwgMTUsIDUsIDIyOSwgMjIxLCAxNSwgNSwgMjI5LCAyMjIsIDIzNSwgMTk5LCAKLSAgICAxNSwgNSwgMjI5LCAyMjIsIDMwLCAyMTksIDIyOCwgMjE2LCAyNDAsIDE1LCA1LCAyMjksIDIyMiwgMjI2LCAxNjgsIDIyOSwgCi0gICAgMjIxLCAxNSwgNSwgMjI5LCAyMjAsIDE1LCA1LCAyMjksIDIxMywgMjI3LCAxODQsIDE1LCA1LCAyMjksIDIxMiwgMTUsIDUsIAotICAgIDIyOSwgMjExLCAxNSwgNSwgMjI5LCAxMTIsIDE1LCA1LCAyMjksIDExMywgMzAsIDYxLCAxNSwgNSwgMjI5LCAxMTMsIDMwLCAKLSAgICAyMTQsIDIxOSwgMTUsIDUsIDIyOSwgMTEzLCAyMjAsIDQ3LCAxNSwgNSwgMjI4LCAyMzgsIDE1LCA1LCAyMjgsIDIzOSwgMzAsIAotICAgIDc2LCAxNSwgNSwgMjI4LCAyMzcsIDE1LCA1LCAyMjgsIDIwOCwgMTUsIDUsIDIyOCwgMjA5LCAzMCwgMjQzLCAxMTIsIDIxNiwgCi0gICAgMjQwLCAxNSwgNSwgMjI4LCAyMDksIDMwLCAyNDMsIDEwNCwgOTYsIDI0MywgMTEyLCAyMTYsIDI0MCwgMTUsIDUsIDIyOCwgCi0gICAgMjA2LCAxNSwgNSwgMjI4LCAyMDcsIDMwLCAyNTQsIDEzMSwgMTUsIDUsIDIyOCwgMjA3LCAzMCwgMjUzLCAyMzksIDE1LCA1LCAKLSAgICAyMjgsIDIwNywgMzAsIDI1MywgMjQwLCA5NiwgMjUzLCAyMzksIDE1LCA1LCAyMjgsIDIwNywgMzAsIDI0MiwgMTEwLCAxNSwgCi0gICAgNSwgMjI4LCAyMDcsIDMwLCAyMzEsIDk3LCA5NiwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjI4LCAyMDcsIDMwLCAKLSAgICAyMjksIDExMiwgMTUsIDUsIDIyOCwgMjA3LCAzMCwgMjI3LCAxOTgsIDE1LCA1LCAyMjgsIDIwNywgMzAsIDIyMCwgNjUsIAotICAgIDE1LCA1LCAyMjgsIDIwNywgMzAsIDIyMCwgNjYsIDk2LCAxMTYsIDI1NCwgMTMxLCAxNSwgNSwgMjI4LCAyMDcsIDMwLCAKLSAgICAyMjAsIDY2LCA5NiwgMjUzLCAyMzksIDE1LCA1LCAyMjgsIDIwNywgMzAsIDIyMCwgNjYsIDk2LCAyNTMsIDI0MCwgOTYsIAotICAgIDI1MywgMjM5LCAxNSwgNSwgMjI4LCAyMDcsIDMwLCAyMTQsIDIzMSwgOTYsIDI1MywgMjM5LCAxNSwgNSwgMjI4LCAyMDcsIAotICAgIDMwLCAyMTQsIDEyNiwgMTUsIDUsIDIyOCwgMTk1LCAxNSwgNSwgMjI3LCAyNDIsIDE1LCA1LCAyMjcsIDIxNCwgMTUsIDUsIAotICAgIDIyNywgMTk4LCAxNSwgNSwgMjI3LCAxOTksIDIzMywgMTIyLCAzMCwgMjQzLCAxMDMsIDE1LCA1LCAyMjcsIDE5OSwgMjMzLCAKLSAgICAxMjIsIDMwLCAyMzEsIDE1MiwgMTUsIDUsIDIyNywgMTk5LCAyMzMsIDEyMiwgMzAsIDIyMiwgMTAsIDE1LCA1LCAyMjcsIAotICAgIDE5OSwgMjMzLCAxMjIsIDMwLCAyMjIsIDExLCAxMTUsIDIyNywgMTk5LCAyMzMsIDEyMiwgMzAsIDIyMiwgMTAsIDE1LCA1LCAKLSAgICAyMjcsIDE5OSwgMjMzLCAxMjIsIDMwLCAyMTQsIDEyNiwgMTUsIDUsIDIyNywgMTk5LCAyMTYsIDI0MCwgMTUsIDUsIDIyNywgCi0gICAgMTk5LCAxMTUsIDIyNywgMTk4LCAxNSwgNSwgMjI3LCAxOTksIDI0OSwgMTMzLCAyMjcsIDE5OCwgMTUsIDUsIDIyNywgMTk5LCAKLSAgICAyNDksIDEzMywgMjI3LCAxOTksIDIzMywgMTIyLCAxMTUsIDIzMywgMTIxLCAxNSwgNSwgMjI3LCAxOTMsIDE1LCA1LCAyMjcsIAotICAgIDE5NCwgMjU1LCAzMywgMzAsIDI1MywgMjM0LCAxNSwgNSwgMjI3LCAxOTQsIDI1NSwgMzMsIDMwLCAyNTIsIDE0LCAxNSwgNSwgCi0gICAgMjI3LCAxOTQsIDI1NSwgMzMsIDMwLCAyNDYsIDgyLCAxNSwgNSwgMjI3LCAxOTQsIDI1NSwgMzMsIDMwLCAyNDIsIDExMCwgCi0gICAgMTUsIDUsIDIyNywgMTk0LCAyNTUsIDMzLCAzMCwgMjM2LCA0MywgMjQyLCAxMDEsIDE1LCA1LCAyMjcsIDE5NCwgMjU1LCAKLSAgICAzMywgMzAsIDIzNSwgNSwgMTUsIDUsIDIyNywgMTk0LCAyNTUsIDMzLCAzMCwgMjMzLCAxNDEsIDE1LCA1LCAyMjcsIDE5NCwgCi0gICAgMjU1LCAzMywgMzAsIDIyOSwgMTEyLCAxNSwgNSwgMjI3LCAxOTQsIDI1NSwgMzMsIDMwLCAyMTksIDE3MywgMTUsIDUsIAotICAgIDIyNywgMTk0LCAyNTUsIDMzLCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMjcsIDE5NCwgMjM0LCA3MiwgMzAsIDI1MiwgMTQsIAotICAgIDE1LCA1LCAyMjcsIDE5NCwgMjM0LCA3MiwgMzAsIDI1MiwgMTUsIDY5LCAxNSwgNSwgMTkxLCAxNSwgNSwgMjI2LCA4NCwgCi0gICAgMTUsIDUsIDIyNiwgNTEsIDE1LCA1LCAyMjYsIDI1LCAxNSwgNSwgMjI1LCAxNjQsIDE1LCA1LCAyMjUsIDExMSwgMTUsIDUsIAotICAgIDIyNSwgMTEyLCAzMCwgNjEsIDE1LCA1LCAyMjUsIDExMiwgMzAsIDI1NSwgMzQsIDE1LCA1LCAyMjUsIDExMiwgMzAsIDI1MiwgCi0gICAgMTQsIDE1LCA1LCAyMjUsIDExMiwgMzAsIDI1MSwgMTMzLCAxNSwgNSwgMjI1LCAxMTIsIDMwLCA3NiwgMTUsIDUsIDIyNSwgCi0gICAgMTEyLCAzMCwgNzQsIDE1LCA1LCAyMjUsIDExMiwgMzAsIDI0MCwgMTIyLCAxNSwgNSwgMjI1LCAxMTIsIDMwLCA2OSwgMTUsIAotICAgIDUsIDIyNSwgMTEyLCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMjUsIDExMiwgMjQ5LCAxMzMsIDIyNSwgMTExLCAxNSwgNSwgCi0gICAgMjI1LCA1NiwgMTUsIDUsIDIyNSwgNTcsIDMwLCAyMzQsIDI0NCwgMTUsIDUsIDIyNSwgNTcsIDMwLCAyMTQsIDIxOSwgMTUsIAotICAgIDUsIDIyNSwgNTcsIDMwLCAyMTAsIDExNiwgMTUsIDUsIDIyNSwgNTcsIDIyNiwgMTY4LCAyMjUsIDU2LCAxNSwgNSwgMjA1LCAKLSAgICAxNSwgNSwgMjIzLCAxODUsIDE1LCA1LCAyMjMsIDM4LCAxNSwgNSwgMjIyLCAxNDIsIDE1LCA1LCAyMDYsIDE1LCA1LCAyMjIsIAotICAgIDI0LCAyMjcsIDE4NCwgMTUsIDUsIDIyMiwgMjMsIDE1LCA1LCAyMjIsIDI0LCAzMCwgNjEsIDE1LCA1LCAyMjIsIDI0LCAzMCwgCi0gICAgMjQ2LCA4NiwgMTUsIDUsIDIyMiwgMjQsIDMwLCAyNDYsIDg0LCAxNSwgNSwgMjIyLCAyNCwgMzAsIDE2MiwgMTUsIDUsIAotICAgIDIyMiwgMjQsIDMwLCAyMzQsIDI0OCwgMTUsIDUsIDIyMiwgMjQsIDMwLCAyMzMsIDIwMiwgMTUsIDUsIDIyMiwgMjQsIDMwLCAKLSAgICAyMzIsIDg5LCAxNSwgNSwgMjIyLCAyNCwgMzAsIDIzMCwgMjM1LCAxNSwgNSwgMjIyLCAyNCwgMzAsIDIyNywgMTk4LCAxNSwgCi0gICAgNSwgMjIyLCAyNCwgMzAsIDIyMiwgMTAsIDE1LCA1LCAyMjIsIDI0LCAzMCwgMjIwLCAzMiwgMTUsIDUsIDIyMiwgMjQsIDMwLCAKLSAgICAyMTcsIDk0LCAxNSwgNSwgMjIyLCAyNCwgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjIyLCAyNCwgMzAsIDIxNCwgMjI1LCAxNSwgCi0gICAgNSwgMjIyLCAyNCwgMzAsIDIxNCwgMTk3LCAxNSwgNSwgMjIyLCAyNCwgMzAsIDIxNCwgMTUwLCAxNSwgNSwgMjIyLCAyNCwgCi0gICAgMzAsIDIxNCwgMTI2LCAxNSwgNSwgMjIyLCAyNCwgMTE1LCAyMjIsIDIzLCAxNSwgNSwgMjIyLCAyNCwgMjQyLCAxMDEsIDE1LCAKLSAgICA1LCAyMjIsIDEwLCAxNSwgNSwgMjIyLCAxMSwgMjMzLCAxMjQsIDMwLCAyNTMsIDIzNywgMTUsIDUsIDIyMSwgMjQxLCAxNSwgCi0gICAgNSwgMjIxLCAyMzMsIDE1LCA1LCAyMjAsIDEwNCwgMTUsIDUsIDIyMCwgMTAyLCAxNSwgNSwgMjIwLCAxMDMsIDMwLCA2MSwgCi0gICAgMTUsIDUsIDIyMCwgMTAzLCAzMCwgMjUyLCAxODQsIDE1LCA1LCAyMjAsIDEwMywgMzAsIDI0MiwgMTk3LCAxNSwgNSwgMjIwLCAKLSAgICAxMDMsIDMwLCAyMjksIDExMiwgMTUsIDUsIDIyMCwgMTAzLCAzMCwgMjE5LCAyMjUsIDE1LCA1LCAyMjAsIDEwMywgMzAsIAotICAgIDIxNSwgOTksIDE1LCA1LCAyMjAsIDEwMywgMzAsIDY5LCAxNSwgNSwgMjIwLCAxMDMsIDMwLCAxMDQsIDk2LCA2MSwgMTUsIAotICAgIDUsIDIyMCwgMTAxLCAxNSwgNSwgMjIwLCA5OSwgMTUsIDUsIDIyMCwgODAsIDE1LCA1LCAyMjAsIDY1LCAxNSwgNSwgMjIwLCAKLSAgICA2NiwgMjQwLCAyMjksIDE1LCA1LCAyMjAsIDY2LCAxMTUsIDIyMCwgNjYsIDI0MywgMTM0LCAxMTUsIDI0MywgMTM0LCAyNDMsIAotICAgIDEwNCwgMTE1LCAyNDMsIDEwMywgMTUsIDUsIDIyMCwgNjYsIDExNSwgMjIwLCA2NiwgMjE3LCA5NSwgMTE1LCAyMTcsIDk1LCAKLSAgICAyNDMsIDEwNCwgMTE1LCAyNDMsIDEwMywgMTUsIDUsIDIyMCwgNTgsIDE1LCA1LCAyMjAsIDUzLCAxNSwgNSwgMjIwLCA1MCwgCi0gICAgMTUsIDUsIDIyMCwgNDksIDE1LCA1LCAyMjAsIDQ2LCAxNSwgNSwgMjIwLCAzMiwgMTUsIDUsIDIyMCwgMzMsIDMwLCA2MSwgCi0gICAgMTUsIDUsIDIyMCwgMzMsIDMwLCAyMzYsIDIzLCAxNSwgNSwgMjIwLCAyNiwgMTUsIDUsIDIyMCwgMjcsIDMwLCA2MSwgMTUsIAotICAgIDUsIDIyMCwgMjcsIDMwLCAyNTIsIDE2OSwgMTUsIDUsIDIyMCwgMjcsIDMwLCAyNTEsIDExNywgMTUsIDUsIDIyMCwgMjcsIAotICAgIDMwLCAyNDcsIDIxNCwgMTUsIDUsIDIyMCwgMjcsIDMwLCAyNDMsIDEwMywgMTUsIDUsIDIyMCwgMjcsIDMwLCAyMzYsIDQyLCAKLSAgICAxNSwgNSwgMjIwLCAyNywgMzAsIDIzNiwgNDMsIDI0MiwgMTAxLCAxNSwgNSwgMjIwLCAyNywgMzAsIDIzMywgMTk3LCAxNSwgCi0gICAgNSwgMjIwLCAyNywgMzAsIDIzMiwgOTEsIDE1LCA1LCAyMjAsIDI3LCAzMCwgMjMwLCA5OCwgMTUsIDUsIDIyMCwgMjcsIDMwLCAKLSAgICAyMjIsIDEwLCAxNSwgNSwgMjIwLCAyMCwgMTUsIDUsIDIyMCwgMTUsIDE1LCA1LCAyMjAsIDE2LCAyMTYsIDI0MCwgMTUsIDUsIAotICAgIDIyMCwgMTYsIDExNSwgMjIwLCAxNiwgMjUxLCAxMDcsIDExNSwgMjUxLCAxMDYsIDE1LCA1LCAyMjAsIDExLCAxNSwgNSwgCi0gICAgMjE5LCAyMjcsIDE1LCA1LCAyMTksIDIyOCwgMTE1LCAyMzUsIDIwMCwgMjE5LCAyMjcsIDE1LCA1LCAyMTksIDIyNSwgMTUsIAotICAgIDUsIDIxOSwgMjI0LCAxNSwgNSwgMjE5LCAxOTMsIDE1LCA1LCAyMTksIDE5NCwgMjQyLCAxMDEsIDE1LCA1LCAyMTksIDE4NCwgCi0gICAgMTUsIDUsIDIxOSwgMTgyLCAxNSwgNSwgMjE5LCAxODMsIDExNSwgMjE5LCAxODMsIDIxOSwgMjI1LCAxNSwgNSwgMjE5LCAKLSAgICAxNzUsIDE1LCA1LCAyMTksIDE3MywgMTUsIDUsIDIxOCwgODQsIDE1LCA1LCAyMTgsIDg1LCAxMTUsIDIxOCwgODQsIDE1LCAKLSAgICA1LCAyMTgsIDU1LCAxNSwgNSwgMjE4LCA1NCwgMTUsIDUsIDIxOCwgNTIsIDE1LCA1LCAyMTgsIDQ0LCAxNSwgNSwgMjE4LCAKLSAgICA0MywgMTUsIDUsIDIxOCwgMTgsIDE1LCA1LCAyMTgsIDE3LCAxNSwgNSwgMjE3LCAxMDYsIDE1LCA1LCAyMTcsIDEwNywgCi0gICAgMjUzLCAyMjQsIDE1LCA1LCAyMTcsIDEwNywgMzAsIDI0MSwgMTg3LCAxNSwgNSwgMjE3LCAxMDcsIDMwLCAyMzAsIDIzNSwgCi0gICAgMTUsIDUsIDIxNywgMTA3LCAyNDIsIDEwMSwgMTUsIDUsIDIxNywgOTQsIDE1LCA1LCAyMTcsIDk1LCAxMTUsIDIxNywgOTUsIAotICAgIDIyOCwgMjM5LCAxMTUsIDIyOCwgMjM5LCAyNDcsIDE5NiwgMTE1LCAyNDcsIDE5NSwgMTUsIDUsIDIxNywgOTUsIDIxOCwgCi0gICAgMjM1LCAxNSwgNSwgMjE3LCA4NSwgMTUsIDUsIDEyOSwgMzAsIDI1MiwgMTQsIDE1LCA1LCAxMjksIDMwLCAyNDIsIDExMCwgCi0gICAgMTUsIDUsIDEyOSwgMzAsIDIyMCwgNjUsIDE1LCA1LCAxMjksIDMwLCAyMTksIDIyNywgMTUsIDUsIDEyOSwgMzAsIDIxNSwgCi0gICAgMTE0LCAxNSwgNSwgMTI5LCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyMTcsIDczLCAxNSwgNSwgMjE3LCA1MSwgMTUsIDUsIAotICAgIDIxNywgMjMsIDE1LCA1LCAyMTcsIDI0LCAyNDIsIDEwMSwgMTUsIDUsIDIxNiwgMTE4LCAxNSwgNSwgMjE2LCAxMTksIDIxNiwgCi0gICAgMjQwLCAxNSwgNSwgMjE2LCA5MSwgMTUsIDUsIDIxNiwgNzMsIDE1LCA1LCAyMTYsIDc0LCAzMCwgMjE3LCA3MywgMTUsIDUsIAotICAgIDIxNiwgNzQsIDExNSwgMjE2LCA3MywgMTUsIDUsIDIxNiwgNzQsIDExNSwgMjE2LCA3NCwgMjQzLCAxMzQsIDExNSwgMjQzLCAKLSAgICAxMzQsIDI0MywgMTA0LCAxMTUsIDI0MywgMTAzLCAxNSwgNSwgMjE1LCAxMTksIDE1LCA1LCAyMTUsIDExNCwgMTUsIDUsIAotICAgIDIxNSwgMTEyLCAxNSwgNSwgMjE1LCAxMDksIDE1LCA1LCAyMTUsIDk5LCAxNSwgNSwgMjE1LCAxMDAsIDExNSwgMjE1LCAKLSAgICAxMDAsIDIxMCwgMTE3LCAxMTUsIDIxMCwgMTE2LCAxNSwgNSwgNjksIDE1LCA1LCAxMDQsIDI0MiwgMTEwLCAxNSwgNSwgCi0gICAgMTA0LCAxMDQsIDY5LCAxNSwgNSwgMTA0LCAxMTUsIDEwNCwgMjI2LCA5NCwgMTE1LCAyMjYsIDk0LCAyNDMsIDEwNCwgMTE1LCAKLSAgICAyNDMsIDEwMywgMTUsIDUsIDEwNCwgMTE1LCAxMDQsIDIxOCwgMTksIDExNSwgMjE4LCAxOCwgMTUsIDUsIDEwNCwgMTE1LCAKLSAgICAxMDQsIDEwNCwgMjIzLCA1MiwgMTE1LCAxMDQsIDIyMywgNTEsIDE1LCA1LCAyMTQsIDIzMCwgMTUsIDUsIDIxNCwgMjI1LCAKLSAgICAxNSwgNSwgMjE0LCAyMTksIDE1LCA1LCAyMTQsIDIyMCwgMjMzLCAxOTcsIDE1LCA1LCAyMTQsIDIyMCwgMzAsIDI1MiwgCi0gICAgMTg0LCAxNSwgNSwgMjE0LCAyMjAsIDMwLCAyMzAsIDIzNSwgMTUsIDUsIDIxNCwgMjIwLCAzMCwgMTA0LCA5NiwgMTA0LCAKLSAgICA5NiwgNjksIDE1LCA1LCAyMTQsIDIyMCwgMzAsIDEwNCwgOTYsIDEwNCwgOTYsIDEwNCwgMjQyLCAxMDEsIDE1LCA1LCAyMTQsIAotICAgIDIyMCwgMjQyLCAxMDEsIDE1LCA1LCAyMTQsIDIyMCwgMjIwLCA0NywgMTUsIDUsIDIxNCwgMjIwLCAyMjAsIDQ4LCAzMCwgCi0gICAgMjUyLCAxODQsIDE1LCA1LCAyMTQsIDIxNSwgMTUsIDUsIDIxNCwgMTk3LCAxNSwgNSwgMjE0LCAxOTgsIDMwLCAyMzMsIAotICAgIDEyMywgMTUsIDUsIDIxNCwgMTk4LCAzMCwgMjMxLCA5NywgOTYsIDI0OCwgMjI5LCAxNSwgNSwgMjE0LCAxOTgsIDMwLCAKLSAgICAyMjAsIDEwMiwgMTUsIDUsIDIxNCwgMTk4LCAzMCwgNjksIDE1LCA1LCAyMTQsIDE5NiwgMTUsIDUsIDIxNCwgMTkyLCAxNSwgCi0gICAgNSwgMjE0LCAxOTMsIDMwLCAyMzQsIDIxMywgMTUsIDUsIDIxNCwgMTkzLCAzMCwgMTkxLCAxNSwgNSwgMjE0LCAxOTAsIDE1LCAKLSAgICA1LCAyMTQsIDE5MSwgMjQyLCAxMDEsIDE1LCA1LCAyMTQsIDE1MCwgMTUsIDUsIDIxNCwgMTUxLCAyNDksIDEzMywgMjE0LCAKLSAgICAxNTAsIDE1LCA1LCAyMTQsIDE1MSwgMjIwLCA0NywgMTUsIDUsIDIxNCwgMTQ4LCAxNSwgNSwgMjE0LCAxNDksIDMwLCAxMTYsIAotICAgIDk2LCAxNjIsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDExNiwgOTYsIDE5OCwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMjU0LCAKLSAgICAxODcsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDE2MiwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMjI3LCAxOTgsIDE1LCA1LCAyMTQsIAotICAgIDE0OSwgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjE0LCAxNDksIDMwLCAyMTQsIDIzMSwgOTYsIDI1MywgMjM5LCAxNSwgNSwgCi0gICAgMjE0LCAxNDksIDMwLCAyMTQsIDIzMSwgOTYsIDI1MiwgMTQsIDE1LCA1LCAyMTQsIDE0NywgMTUsIDUsIDIxNCwgMTQ0LCAKLSAgICAxNSwgNSwgMjE0LCAxNDMsIDE1LCA1LCAyMTQsIDEzOSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgNjEsIDE1LCA1LCAyMTQsIAotICAgIDE0MCwgMzAsIDI1MywgMjM0LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAxMzAsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI0NiwgCi0gICAgNzYsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI0MywgMTQyLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyNDMsIDEyNSwgMTUsIDUsIAotICAgIDIxNCwgMTQwLCAzMCwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyNDMsIDEwMywgMTUsIDUsIAotICAgIDIxNCwgMTQwLCAzMCwgMjQyLCAxMjAsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDE2MiwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgCi0gICAgMjM2LCA0MiwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjM2LCAyMywgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjM1LCAxNzIsIDE1LCAKLSAgICA1LCAyMTQsIDE0MCwgMzAsIDIzNCwgOTgsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIzMiwgODksIDE1LCA1LCAyMTQsIDE0MCwgCi0gICAgMzAsIDIzMCwgMTkzLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAxOTEsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIyMCwgNjUsIDE1LCAKLSAgICA1LCAyMTQsIDE0MCwgMzAsIDIxOSwgMTgyLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMTUsIDExOSwgMTUsIDUsIDIxNCwgCi0gICAgMTQwLCAzMCwgMTA0LCA5NiwgMjQyLCAxMTAsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIxNCwgMjE5LCAxNSwgNSwgMjE0LCAKLSAgICAxNDAsIDMwLCAyMTQsIDEzNywgMTUsIDUsIDIxNCwgMTM3LCAxNSwgNSwgMjE0LCAxMzgsIDMwLCA2OSwgMTUsIDUsIDIxNCwgCi0gICAgMTI2LCAxNSwgNSwgMjE0LCAxMjcsIDMwLCA2MSwgMTUsIDUsIDIxNCwgMTI3LCAzMCwgMjMzLCAyMjMsIDE1LCA1LCAyMTQsIAotICAgIDEyNywgMzAsIDIzMywgMjAyLCAxNSwgNSwgMjE0LCAxMjcsIDMwLCAyMTcsIDczLCAxNSwgNSwgMjE0LCAxMjIsIDE1LCA1LCAKLSAgICAyMTQsIDEyNSwgMTUsIDUsIDIxNCwgMTIzLCAxNSwgNSwgMjE0LCAxMTksIDE1LCA1LCAyMTQsIDEwOCwgMTUsIDUsIDIxNCwgCi0gICAgMTA5LCAzMCwgMjM0LCAyMTMsIDE1LCA1LCAyMTQsIDEwNywgMTUsIDUsIDIxMCwgMTE2LCAxNSwgNSwgMjEwLCAxMTcsIAotICAgIDIxNiwgMjQwLCAxNSwgNSwgMjEwLCAxMTcsIDkyLCAzMCwgMjMzLCAyMDIsIDE1LCA1LCAyMTAsIDExMywgMTUsIDUsIDIxMCwgCi0gICAgMTA2LCAxNSwgNSwgMjEwLCA5MywgMTUsIDUsIDIxMCwgNDQsIDE1LCA1LCAyMTAsIDQ1LCAxMTUsIDIxMCwgNDQsIDE1LCA1LCAKLSAgICAyMTAsIDQzLCAxNSwgNSwgMjEwLCA0MSwgMTUsIDUsIDIxMCwgNDIsIDIzNSwgOSwgMjE2LCAyNDAsIDE1LCA1LCAyMTAsIAotICAgIDM2LCAxNSwgNSwgMjEwLCAyOCwgMTUsIDUsIDIxMCwgMTMsIDE1LCA1LCAyMTAsIDExLCAxNSwgNSwgMjEwLCAxMiwgMzAsIAotICAgIDYxLCAxNSwgNSwgMjEwLCAxMCwgMTUsIDUsIDIxMCwgOSwgMTUsIDEzMiwgNSwgMTEzLCAyNTMsIDIzOSwgMTUsIDEzMiwgNSwgCi0gICAgMTM0LCAyNTMsIDIzOSwgMTUsIDEzMiwgNSwgMjQ0LCAxOSwgMjUzLCAyMzksIDE1LCAxMzIsIDUsIDI0NCwgODksIDI1MywgCi0gICAgMjM5LCAxNSwgMTMyLCA1LCAyMTksIDEyNywgMjUzLCAyMzksIDE1LCAxMzIsIDUsIDIyMCwgMTI0LCAyNTMsIDIzOSwgMTUsIAotICAgIDEzMiwgNSwgMjQ1LCAyMDEsIDI1MywgMjM5LCAxNSwgMTMyLCA1LCAyMjgsIDIwNSwgMjUzLCAyMzksIDE1LCAxMzIsIDUsIAotICAgIDEzNCwgMjQ3LCAxOTUsIDE1LCAxMzIsIDUsIDI0NCwgMTksIDI0NywgMTk1LCAxNSwgMTMyLCA1LCAyNDQsIDg5LCAyNDcsIAotICAgIDE5NSwgMTUsIDEzMiwgNSwgMjE5LCAxMjcsIDI0NywgMTk1LCAxNSwgMTMyLCA1LCAyMjAsIDEyNCwgMjQ3LCAxOTUsIDE1LCAKLSAgICAxMzIsIDUsIDI0NSwgMjAxLCAyNDcsIDE5NSwgMTUsIDEzMiwgNSwgMjI4LCAyMDUsIDI0NywgMTk1LCAxNSwgMTMyLCA1LCAKLSAgICAyNDQsIDE5LCA2OSwgMTUsIDEzMiwgNSwgMjQ0LCA4OSwgNjksIDE1LCAxMzIsIDUsIDIxOSwgMTI3LCA2OSwgMTUsIDEzMiwgCi0gICAgNSwgMjIwLCAxMjQsIDY5LCAxNSwgMTMyLCA1LCAyNDUsIDIwMSwgNjksIDE1LCAxMzIsIDUsIDIyOCwgMjA1LCA2OSwgMTUsIAotICAgIDEzMiwgNSwgMTIzLCAyNDMsIDQ1LCAxNSwgMTMyLCA1LCAxMTMsIDI0MywgNDUsIDE1LCAxMzIsIDUsIDEzNCwgMjQzLCA0NSwgCi0gICAgMTUsIDEzMiwgNSwgMjQ0LCAxOSwgMjQzLCA0NSwgMTUsIDEzMiwgNSwgMjQ0LCA4OSwgMjQzLCA0NSwgMTUsIDEzMiwgNSwgCi0gICAgMjE5LCAxMjcsIDI0MywgNDUsIDE1LCAxMzIsIDUsIDIyMCwgMTI0LCAyNDMsIDQ1LCAxNSwgMTMyLCA1LCAyNDUsIDIwMSwgCi0gICAgMjQzLCA0NSwgMTUsIDEzMiwgNSwgMjI4LCAyMDUsIDI0MywgNDUsIDE1LCAxMzIsIDUsIDEyMywgMjQzLCA0MiwgMTUsIAotICAgIDEzMiwgNSwgMTEzLCAyNDMsIDQyLCAxNSwgMTMyLCA1LCAxMzQsIDI0MywgNDIsIDE1LCAxMzIsIDUsIDI0NCwgMTksIDI0MywgCi0gICAgNDIsIDE1LCAxMzIsIDUsIDI0NCwgODksIDI0MywgNDIsIDE1LCAxMzIsIDUsIDExMywgMjIwLCA4MCwgMTUsIDEzMiwgNSwgCi0gICAgMTM0LCAyMjAsIDgwLCAxNSwgMTMyLCA1LCAxMzQsIDIyMCwgODEsIDIxNCwgMTIsIDE3LCAxNSwgMTMyLCA1LCAyNDQsIDE5LCAKLSAgICAyMjAsIDgwLCAxNSwgMTMyLCA1LCAyNDQsIDg5LCAyMjAsIDgwLCAxNSwgMTMyLCA1LCAyMTksIDEyNywgMjIwLCA4MCwgMTUsIAotICAgIDEzMiwgNSwgMjIwLCAxMjQsIDIyMCwgODAsIDE1LCAxMzIsIDUsIDI0NSwgMjAxLCAyMjAsIDgwLCAxNSwgMTMyLCA1LCAKLSAgICAyMjgsIDIwNSwgMjIwLCA4MCwgMTUsIDEzMiwgNSwgMTIzLCAyMjAsIDc1LCAxNSwgMTMyLCA1LCAxMTMsIDIyMCwgNzUsIAotICAgIDE1LCAxMzIsIDUsIDEzNCwgMjIwLCA3NSwgMTUsIDEzMiwgNSwgMTM0LCAyMjAsIDc2LCAyMTQsIDEyLCAxNywgMTUsIDEzMiwgCi0gICAgNSwgMjQ0LCAxOSwgMjIwLCA3NSwgMTUsIDEzMiwgNSwgMjQ0LCA4OSwgMjIwLCA3NSwgMTUsIDEzMiwgNSwgMjIwLCA4MSwgCi0gICAgMzAsIDI0MywgMTI2LCA5NiwgMjQ3LCAxOTUsIDE1LCAxMzIsIDUsIDIyMCwgODEsIDMwLCAyNDMsIDEyNiwgOTYsIDIzMCwgCi0gICAgMTkzLCAxNSwgMTMyLCA1LCAxMjMsIDI1MSwgMTAzLCAxNSwgMTMyLCA1LCAxMTMsIDI1MSwgMTAzLCAxNSwgMTMyLCA1LCAKLSAgICAxMzQsIDI1MSwgMTAzLCAxNSwgMTMyLCA1LCAxMzQsIDI1MSwgMTA0LCAyMTQsIDEyLCAxNywgMTUsIDEzMiwgNSwgMjQ0LCAKLSAgICAxOSwgMjUxLCAxMDMsIDE1LCAxMzIsIDUsIDI0NCwgODksIDI1MSwgMTAzLCAxNSwgMTMyLCA1LCAxMzQsIDIxNCwgMTIsIAotICAgIDI0NCwgMjgsIDI0NSwgODIsIDE1LCAxMzIsIDUsIDEzNCwgMjE0LCAxMiwgMjQ0LCAyOCwgMjQ1LCA3OSwgMTUsIDEzMiwgNSwgCi0gICAgMjQ0LCAxOSwgMjE0LCAxMiwgMjQ0LCAyOCwgMjMyLCAyMjMsIDE1LCAxMzIsIDUsIDI0NCwgMTksIDIxNCwgMTIsIDI0NCwgCi0gICAgMjgsIDIzMiwgMjIxLCAxNSwgMTMyLCA1LCAyNDQsIDE5LCAyMTQsIDEyLCAyNDQsIDI4LCAyMzIsIDIyNCwgNjEsIDE1LCAKLSAgICAxMzIsIDUsIDI0NCwgMTksIDIxNCwgMTIsIDI0NCwgMjgsIDIzMiwgMjI0LCAyNTMsIDE2NiwgMTUsIDEzMiwgNSwgMjE5LCAKLSAgICAxMjcsIDIxNCwgMTIsIDI0NCwgMjgsIDI1MywgMjM2LCAxNSwgMTMyLCA1LCAyMjAsIDEyNCwgMjE0LCAxMiwgMjQ0LCAyOCwgCi0gICAgMjM2LCAxNSwgMTUsIDEzMiwgNSwgMjIwLCAxMjQsIDIxNCwgMTIsIDI0NCwgMjgsIDIzNiwgMTcsIDYxLCAxNSwgMTMyLCA1LCAKLSAgICAyMjAsIDEyNCwgMjE0LCAxMiwgMjQ0LCAyOCwgMjM2LCAxNywgMjUzLCAxNjYsIDE1LCAxMzIsIDUsIDI0NSwgMjAxLCAyMTQsIAotICAgIDEyLCAyNDQsIDI4LCAyMTQsIDEyMSwgMTUsIDEzMiwgNSwgMjQ1LCAyMDEsIDIxNCwgMTIsIDI0NCwgMjgsIDIxNCwgMTIwLCAKLSAgICAxNSwgMTMyLCA1LCAyMjgsIDIwNSwgMjE0LCAxMiwgMjQ0LCAyOCwgMjM2LCAzMSwgMTUsIDEzMiwgNSwgMjI4LCAyMDUsIAotICAgIDIxNCwgMTIsIDI0NCwgMjgsIDIzNiwgMzAsIDE1LCAxMzIsIDUsIDIyOCwgMjA1LCAyMTQsIDEyLCAyNDQsIDI4LCAyMzYsIAotICAgIDI5LCAxNSwgMTMyLCA1LCAyMjgsIDIwNSwgMjE0LCAxMiwgMjQ0LCAyOCwgMjM2LCAzMiwgNjEsIDE1LCAxMzIsIDUsIDExMywgCi0gICAgMjUzLCAyNDAsIDIxNiwgMjQwLCAxNSwgMTMyLCA1LCAxMzQsIDI1MywgMjQwLCAyMTYsIDI0MCwgMTUsIDEzMiwgNSwgMjQ0LCAKLSAgICAxOSwgMjUzLCAyNDAsIDIxNiwgMjQwLCAxNSwgMTMyLCA1LCAyNDQsIDg5LCAyNTMsIDI0MCwgMjE2LCAyNDAsIDE1LCAxMzIsIAotICAgIDUsIDIxOSwgMTI3LCAyNTMsIDI0MCwgMjE2LCAyNDAsIDE1LCAxMzIsIDUsIDEyMywgMjUyLCAxNTgsIDE1LCAxMzIsIDUsIAotICAgIDExMywgMjUyLCAxNTgsIDE1LCAxMzIsIDUsIDEzNCwgMjUyLCAxNTgsIDE1LCAxMzIsIDUsIDI0NCwgMTksIDI1MiwgMTU4LCAKLSAgICAxNSwgMTMyLCA1LCAyNDQsIDE5LCAyNTIsIDE1OSwgMjE0LCAxMiwgMTcsIDE1LCAxMzIsIDUsIDI0NCwgODksIDI1MiwgCi0gICAgMTU4LCAxNSwgMTMyLCA1LCAyNDQsIDg5LCAyNTIsIDE1OSwgMjE0LCAxMiwgMTcsIDE1LCAxMzIsIDUsIDIyOCwgMjE1LCAKLSAgICAxNSwgMTMyLCA1LCAyMjgsIDIxNiwgMTUsIDEzMiwgNSwgMTIzLCAyNDUsIDc4LCAxNSwgMTMyLCA1LCAxMTMsIDI0NSwgNzgsIAotICAgIDE1LCAxMzIsIDUsIDEyMywgMjE2LCAxNzAsIDI0NywgMTk1LCAxNSwgMTMyLCA1LCAxMTMsIDIxNiwgMTY4LCAyNDcsIDE5NSwgCi0gICAgMTUsIDEzMiwgNSwgMjQ0LCA4OSwgMjE5LCAxMTYsIDI0NywgMTk1LCAxNSwgMTMyLCA1LCAxMjMsIDIxNiwgMTcwLCAyMTQsIAotICAgIDEyLCAyNDQsIDI4LCA2MSwgMTUsIDEzMiwgNSwgMTEzLCAyMTYsIDE2OCwgMjE0LCAxMiwgMjQ0LCAyOCwgNjEsIDE1LCAKLSAgICAxMzIsIDUsIDEyMywgMjQ1LCAxOTcsIDI1MywgMjM5LCAxNSwgMTMyLCA1LCAxMjMsIDIyNCwgMjUsIDI1MywgMjM5LCAxNSwgCi0gICAgMTMyLCA1LCA1NSwgMjUzLCAyMjcsIDEyMywgMjE5LCAxMTcsIDE1LCAxMzIsIDUsIDU1LCAyNTMsIDIyNywgMTIzLCAyMjQsIAotICAgIDI0LCAxNSwgMjI0LCAxNDQsIDUsIDU1LCAyNTMsIDIyNywgMjExLCAyMDksIDI0NywgMTgwLCAxNSwgMjI0LCAxNDQsIDUsIAotICAgIDY3LCAyNDksIDIzNCwgMTUsIDIyNCwgMTQ0LCA1LCAyNDgsIDcsIDI0OSwgMjM0LCAxNSwgMjI0LCAxNDQsIDUsIDI0OCwgNywgCi0gICAgMjE1LCAyMjIsIDEyLCAxMywgMjU1LCAxNjQsIDEyLCAxMywgMjU1LCAxNjMsIDEyLCAxMywgMjU1LCAxNjIsIDEyLCAxMywgCi0gICAgMjU1LCAxNjEsIDEyLCAxMywgMjU1LCAxNjAsIDEyLCAxMywgMjU1LCAxNTksIDEyLCAxMywgMjU1LCAxNTgsIDEyLCAxMywgCi0gICAgMjU1LCAxNTcsIDEyLCAxMywgMjU1LCAxNTYsIDEyLCAxMywgMjU1LCAxNTUsIDEyLCAxMywgMjU1LCAxNTQsIDEyLCAxMywgCi0gICAgMjU1LCAxNTMsIDEyLCAxMywgMjU1LCAxNTIsIDEyLCAxMywgMjU1LCAxNTEsIDEyLCAxMywgMjU1LCAxNTAsIDEyLCAxMywgCi0gICAgMjU1LCAxNDksIDEyLCAxMywgMjU1LCAxNDgsIDEyLCAxMywgMjU1LCAxNDcsIDEyLCAxMywgMjU1LCAxNDYsIDEyLCAxMywgCi0gICAgMjU1LCAxNDUsIDEyLCAxMywgMjU1LCAxNDQsIDEyLCAxMywgMjU1LCAxNDMsIDEyLCAxMywgMjU1LCAxNDIsIDEyLCAxMywgCi0gICAgMjU1LCAxNDEsIDEyLCAxMywgMjU1LCAxNDAsIDEyLCAxMywgMjU1LCAxMzksIDEyLCAxMywgMjU1LCAxMzgsIDEyLCAxMywgCi0gICAgMjU1LCAxMzcsIDEyLCAxMywgMjU1LCAxMzYsIDEyLCAxMywgMjU1LCAxMzUsIDEyLCAxMywgMjU1LCAxMzQsIDEyLCAxMywgCi0gICAgMjU1LCAxMzMsIDEyLCAxMywgMjU1LCAxMzIsIDEyLCAxMywgMjU1LCAxMzEsIDEyLCAxMywgMjU1LCAxMzAsIDEyLCAxMywgCi0gICAgMjU1LCAxMjksIDEyLCAxMywgMjU1LCAxMjgsIDEyLCAxMywgMjU1LCAxMjcsIDEyLCAxMywgMjU1LCAxMjYsIDEyLCAxMywgCi0gICAgMjU1LCAxMjUsIDEyLCAxMywgMjU1LCAxMjQsIDEyLCAxMywgMjU1LCAxMjMsIDEyLCAxMywgMjU1LCAxMjIsIDEyLCAxMywgCi0gICAgMjU1LCAxMjEsIDEyLCAxMywgMjU1LCAxMjAsIDEyLCAxMywgMjU1LCAxMTksIDEyLCAxMywgMjU1LCAxMTgsIDEyLCAxMywgCi0gICAgMjU1LCAxMTcsIDEyLCAxMywgMjU1LCAxMTYsIDEyLCAxMywgMjU1LCAxMTUsIDEyLCAxMywgMjU1LCAxMTQsIDEyLCAxMywgCi0gICAgMjU1LCAxMTMsIDEyLCAxMywgMjU1LCAxMTIsIDEyLCAxMywgMjU1LCAxMTEsIDEyLCAxMywgMjU1LCAxMTAsIDEyLCAxMywgCi0gICAgMjU1LCAxMDksIDEyLCAxMywgMjU1LCAxMDgsIDEyLCAxMywgMjU1LCAxMDcsIDEyLCAxMywgMjU1LCAxMDYsIDEyLCAxMywgCi0gICAgMjU1LCAxMDUsIDEyLCAxMywgMjU1LCAxMDQsIDEyLCAxMywgMjU1LCAxMDMsIDEyLCAxMywgMjU1LCAxMDIsIDEyLCAxMywgCi0gICAgMjU1LCAxMDEsIDEyLCAxMywgMjU1LCAxMDAsIDEyLCAxMywgMjU1LCA5OSwgMTIsIDEzLCAyNTUsIDk4LCAxMiwgMTMsIAotICAgIDI1NSwgOTcsIDEyLCAxMywgMjU1LCA5NiwgMTIsIDEzLCAyNTUsIDk1LCAxMiwgMTMsIDI1NSwgOTQsIDEyLCAxMywgMjU1LCAKLSAgICA5MywgMTIsIDEzLCAyNTUsIDkyLCAxMiwgMTMsIDI1NSwgOTEsIDEyLCAxMywgMjU1LCA5MCwgMTIsIDEzLCAyNTUsIDg5LCAKLSAgICAxMiwgMTMsIDI1NSwgODgsIDEyLCAxMywgMjU1LCA4NywgMTIsIDEzLCAyNTUsIDg2LCAxMiwgMTMsIDI1NSwgODUsIDEyLCAKLSAgICAxMywgMjUzLCAxNjQsIDEyLCAxMywgMjUzLCAxNjIsIDEyLCAxMywgMjUzLCAxNjAsIDEyLCAxMywgMjUzLCAxNTgsIDEyLCAKLSAgICAxMywgMjUzLCAxNTYsIDEyLCAxMywgMjUzLCAxNTUsIDEyLCAxMywgMjUzLCAxNTMsIDEyLCAxMywgMjUzLCAxNTEsIDEyLCAKLSAgICAxMywgMjUzLCAxNDksIDEyLCAxMywgMjUzLCAxNDcsIDEyLCAxMywgMjUxLCA3MCwgMTIsIDEzLCAyNTEsIDY5LCAxMiwgMTMsIAotICAgIDI1MSwgNjgsIDEyLCAxMywgMjUxLCA2NywgMTIsIDEzLCAyNTEsIDY2LCAxMiwgMTMsIDI1MSwgNjUsIDEyLCAxMywgMjUxLCAKLSAgICA2NCwgMTIsIDEzLCAyNTEsIDYzLCAxMiwgMTMsIDI1MSwgNjIsIDEyLCAxMywgMjUxLCA2MSwgMTIsIDEzLCAyNTEsIDYwLCAKLSAgICAxMiwgMTMsIDI1MSwgNTksIDEyLCAxMywgMjUxLCA1OCwgMTIsIDEzLCAyNTEsIDU3LCAxMiwgMTMsIDI1MSwgNTYsIDEyLCAKLSAgICAxMywgMjUxLCA1NSwgMTIsIDEzLCAyNTEsIDU0LCAxMiwgMTMsIDI1MSwgNTMsIDEyLCAxMywgMjUxLCA1MiwgMTIsIDEzLCAKLSAgICAyNTEsIDUxLCAxMiwgMTMsIDI1MSwgNTAsIDEyLCAxMywgMjUxLCA0OSwgMTIsIDEzLCAyNTEsIDQ4LCAxMiwgMTMsIDI1MSwgCi0gICAgNDcsIDEyLCAxMywgMjUxLCA0NiwgMTIsIDEzLCAyNTEsIDQ1LCAxMiwgMTMsIDI1MSwgNDQsIDEyLCAxMywgMjUxLCA0MywgCi0gICAgMTIsIDEzLCAyNDksIDY3LCAxMiwgMTMsIDI0OSwgNjYsIDEyLCAxMywgMjQ5LCA2NSwgMTIsIDEzLCAyNDksIDY0LCAxMiwgCi0gICAgMTMsIDI0OSwgNjMsIDEyLCAxMywgMjQ5LCA2MiwgMTIsIDEzLCAyNDksIDYxLCAxMiwgMTMsIDI0OSwgNjAsIDEyLCAxMywgCi0gICAgMjQ5LCA1OSwgMTIsIDEzLCAyNDksIDU4LCAxMiwgMTMsIDI0OSwgNTcsIDEyLCAxMywgMjQ5LCA1NiwgMTIsIDEzLCAyNDksIAotICAgIDU1LCAxMiwgMTMsIDI0OSwgNTQsIDEyLCAxMywgMjQ5LCA1MywgMTIsIDEzLCAyNDksIDUyLCAxMiwgMTMsIDI0OSwgNTEsIAotICAgIDEyLCAxMywgMjQ5LCA1MCwgMTIsIDEzLCAyNDksIDQ5LCAxMiwgMTMsIDI0OSwgNDgsIDEyLCAxMywgMjQ5LCA0NywgMTIsIAotICAgIDEzLCAyNDksIDQ2LCAxMiwgMTMsIDI0OSwgNDUsIDEyLCAxMywgMjQ5LCA0NCwgMTIsIDEzLCAyNDksIDQzLCAxMiwgMTMsIAotICAgIDI0OSwgNDIsIDEyLCAxMywgMjQ5LCA0MSwgMTIsIDEzLCAyNDksIDQwLCAxMiwgMTMsIDI0OSwgMzksIDEyLCAxMywgMjQ5LCAKLSAgICAzOCwgMTIsIDEzLCAyNDksIDM3LCAxMiwgMTMsIDI0OSwgMzYsIDEyLCAxMywgMjQ5LCAzNSwgMTIsIDEzLCAyNDksIDM0LCAKLSAgICAxMiwgMTMsIDI0OSwgMzMsIDEyLCAxMywgMjQ5LCAzMiwgMTIsIDEzLCAyNDksIDMxLCAxMiwgMTMsIDI0OSwgMzAsIDEyLCAKLSAgICAxMywgMjQ5LCAyOSwgMTIsIDEzLCAyNDksIDI4LCAxMiwgMTMsIDI0OSwgMjcsIDEyLCAxMywgMjQ5LCAyNiwgMTIsIDEzLCAKLSAgICAyNDksIDI1LCAxMiwgMTMsIDI0OSwgMjQsIDEyLCAxMywgMjQ5LCAyMywgMTIsIDEzLCAyNDksIDIyLCAxMiwgMTMsIDI0OSwgCi0gICAgMjEsIDEyLCAxMywgMjQ5LCAyMCwgMTIsIDEzLCAyNDksIDE5LCAxMiwgMTMsIDI0OSwgMTgsIDEyLCAxMywgMjQ5LCAxNywgCi0gICAgMTIsIDEzLCAyNDksIDE2LCAxMiwgMTMsIDI0OSwgMTUsIDEyLCAxMywgMjQ5LCAxNCwgMTIsIDEzLCAyNDksIDEzLCAxMiwgCi0gICAgMTMsIDI0OSwgMTIsIDEyLCAxMywgMjQ5LCAxMSwgMTIsIDEzLCAyNDksIDEwLCAxMiwgMTMsIDI0OSwgOSwgMTIsIDEzLCAKLSAgICAyNDksIDgsIDEyLCAxMywgMjQ5LCA3LCAxMiwgMTMsIDI0OSwgNiwgMTIsIDEzLCAyNDksIDUsIDEyLCAxMywgMjQ5LCA0LCAKLSAgICAxMiwgMTMsIDI0OSwgMywgMTIsIDEzLCAyNDksIDIsIDEyLCAxMywgMjQ5LCAxLCAxMiwgMTMsIDI0OSwgMCwgMTIsIDEzLCAKLSAgICAyNDgsIDI1NSwgMTIsIDEzLCAyNDgsIDI1NCwgMTIsIDEzLCAyNDgsIDI1MywgMTIsIDEzLCAyNDgsIDI1MiwgMTIsIDEzLCAKLSAgICAyNDgsIDI1MSwgMTIsIDEzLCAyNDgsIDI1MCwgMTIsIDEzLCAyNDgsIDI0OSwgMTIsIDEzLCAyNDgsIDI0OCwgMTIsIDEzLCAKLSAgICAyNDgsIDI0NywgMTIsIDEzLCAyNDgsIDI0NiwgMTIsIDEzLCAyNDgsIDI0NSwgMTIsIDEzLCAyNDgsIDI0NCwgMTIsIDEzLCAKLSAgICAyNDgsIDI0MywgMTIsIDEzLCAyNDgsIDI0MiwgMTIsIDEzLCAyNDgsIDI0MSwgMTIsIDEzLCAyNDgsIDI0MCwgMTIsIDEzLCAKLSAgICAyNDgsIDIzOSwgMTIsIDEzLCAyNDgsIDIzOCwgMTIsIDEzLCAyNDgsIDIzNywgMTIsIDEzLCAyNDgsIDIzNiwgMTIsIDEzLCAKLSAgICAyNDgsIDIzNSwgMTIsIDEzLCAyNDgsIDIzNCwgMTIsIDEzLCAyNDgsIDIzMywgMTIsIDEzLCAyNDgsIDIzMiwgMTIsIDEzLCAKLSAgICAyNDYsIDMxLCAxMiwgMTMsIDI0NiwgMzAsIDEyLCAxMywgMjQ2LCAyOSwgMTIsIDEzLCAyNDYsIDI4LCAxMiwgMTMsIDI0NiwgCi0gICAgMjcsIDEyLCAxMywgMjQ2LCAyNiwgMTIsIDEzLCAyNDYsIDI1LCAxMiwgMTMsIDI0NiwgMjQsIDEyLCAxMywgMjQ2LCAyMywgCi0gICAgMTIsIDEzLCAyNDYsIDIyLCAxMiwgMTMsIDI0NiwgMjEsIDEyLCAxMywgMjQ2LCAyMCwgMTIsIDEzLCAyNDYsIDE5LCAxMiwgCi0gICAgMTMsIDI0NiwgMTgsIDEyLCAxMywgMjQ2LCAxNywgMTIsIDEzLCAyNDYsIDE2LCAxMiwgMTMsIDI0NiwgMTUsIDEyLCAxMywgCi0gICAgMjQ2LCAxNCwgMTIsIDEzLCAyNDYsIDEzLCAxMiwgMTMsIDI0NiwgMTIsIDEyLCAxMywgMjQ2LCAxMSwgMTIsIDEzLCAyNDYsIAotICAgIDEwLCAxMiwgMTMsIDI0NiwgOSwgMTIsIDEzLCAyNDYsIDgsIDEyLCAxMywgMjQ2LCA3LCAxMiwgMTMsIDI0NiwgNiwgMTIsIAotICAgIDEzLCAyNDYsIDUsIDEyLCAxMywgMjQ2LCA0LCAxMiwgMTMsIDI0NiwgMywgMTIsIDEzLCAyNDYsIDIsIDEyLCAxMywgMjQ2LCAKLSAgICAxLCAxMiwgMTMsIDI0NiwgMCwgMTIsIDEzLCAyNDUsIDI1NSwgMTIsIDEzLCAyNDUsIDI1NCwgMTIsIDEzLCAyNDUsIDI1MywgCi0gICAgMTIsIDEzLCAyNDUsIDI1MiwgMTIsIDEzLCAyNDUsIDI1MSwgMTIsIDEzLCAyNDUsIDI1MCwgMTIsIDEzLCAyNDUsIDI0OSwgCi0gICAgMTIsIDEzLCAyNDUsIDI0OCwgMTIsIDEzLCAyNDUsIDI0NywgMTIsIDEzLCAyNDUsIDI0NiwgMTIsIDEzLCAyNDUsIDI0NSwgCi0gICAgMTIsIDEzLCAyNDUsIDI0NCwgMTIsIDEzLCAyNDUsIDEzLCAxMiwgMTMsIDI0NSwgMTIsIDEyLCAxMywgMjQ1LCAxMSwgMTIsIAotICAgIDEzLCAyNDUsIDEwLCAxMiwgMTMsIDI0NSwgOSwgMTIsIDEzLCAyNDUsIDgsIDEyLCAxMywgMjQ1LCA3LCAxMiwgMTMsIDI0NSwgCi0gICAgNiwgMTIsIDEzLCAyNDUsIDUsIDEyLCAxMywgMjQ1LCA0LCAxMiwgMTMsIDI0NSwgMywgMTIsIDEzLCAyNDUsIDIsIDEyLCAKLSAgICAxMywgMjQ1LCAxLCAxMiwgMTMsIDI0NSwgMCwgMTIsIDEzLCAyNDQsIDI1NSwgMTIsIDEzLCAyNDQsIDI1NCwgMTIsIDEzLCAKLSAgICAyNDQsIDI1MywgMTIsIDEzLCAyNDQsIDI1MiwgMTIsIDEzLCAyNDQsIDI1MSwgMTIsIDEzLCAyNDQsIDI1MCwgMTIsIDEzLCAKLSAgICAyNDQsIDI0OSwgMTIsIDEzLCAyNDQsIDI0OCwgMTIsIDEzLCAyNDQsIDI0NywgMTIsIDEzLCAyNDQsIDI0NiwgMTIsIDEzLCAKLSAgICAyNDQsIDI0NSwgMTIsIDEzLCAyNDQsIDI0NCwgMTIsIDEzLCAyNDQsIDI0MywgMTIsIDEzLCAyNDQsIDI0MiwgMTIsIDEzLCAKLSAgICAyNDQsIDI0MSwgMTIsIDEzLCAyNDQsIDI0MCwgMTIsIDEzLCAyNDQsIDIzOSwgMTIsIDEzLCAyNDQsIDIzOCwgMTIsIDEzLCAKLSAgICAyNDQsIDIzNywgMTIsIDEzLCAyNDQsIDIzNiwgMTIsIDEzLCAyNDQsIDIzNSwgMTIsIDEzLCAyNDQsIDIzNCwgMTIsIDEzLCAKLSAgICAyNDQsIDIzMywgMTIsIDEzLCAyNDQsIDIzMiwgMTIsIDEzLCAyNDQsIDIzMSwgMTIsIDEzLCAyNDQsIDIzMCwgMTIsIDEzLCAKLSAgICAyNDQsIDIyOSwgMTIsIDEzLCAyNDQsIDIyOCwgMTIsIDEzLCAyNDQsIDIyNywgMTIsIDEzLCAyNDQsIDIyNiwgMTIsIDEzLCAKLSAgICAyNDQsIDIyNSwgMTIsIDEzLCAyNDQsIDIyNCwgMTIsIDEzLCAyNDQsIDIyMywgMTIsIDEzLCAyNDQsIDIyMiwgMTIsIDEzLCAKLSAgICAyNDQsIDIyMSwgMTIsIDEzLCAyNDQsIDIyMCwgMTIsIDEzLCAyNDQsIDIxOSwgMTIsIDEzLCAyNDQsIDIxOCwgMTIsIDEzLCAKLSAgICAyNDQsIDIxNywgMTIsIDEzLCAyNDQsIDIxNiwgMTIsIDEzLCAyNDQsIDIxNSwgMTIsIDEzLCAyNDQsIDIxNCwgMTIsIDEzLCAKLSAgICAyNDQsIDIxMywgMTIsIDEzLCAyNDQsIDIxMiwgMTIsIDEzLCAyNDQsIDIxMSwgMTIsIDEzLCAyNDQsIDIxMCwgMTIsIDEzLCAKLSAgICAyNDQsIDIwOSwgMTIsIDEzLCAyNDQsIDIwOCwgMTIsIDEzLCAyNDQsIDIwNywgMTIsIDEzLCAyNDQsIDIwNiwgMTIsIDEzLCAKLSAgICAyNDQsIDIwNSwgMTIsIDEzLCAyNDMsIDIwOCwgMTIsIDEzLCAyNDMsIDIwNywgMTIsIDEzLCAyNDMsIDIwNiwgMTIsIDEzLCAKLSAgICAyNDMsIDIwNSwgMTIsIDEzLCAyNDMsIDIwNCwgMTIsIDEzLCAyNDMsIDIwMywgMTIsIDEzLCAyNDMsIDIwMiwgMTIsIDEzLCAKLSAgICAyNDMsIDIwMSwgMTIsIDEzLCAyNDMsIDIwMCwgMTIsIDEzLCAyNDMsIDE5OSwgMTIsIDEzLCAyNDMsIDE5OCwgMTIsIDEzLCAKLSAgICAyNDMsIDE5NywgMTIsIDEzLCAyNDMsIDE5NiwgMTIsIDEzLCAyNDMsIDE5NSwgMTIsIDEzLCAyNDMsIDE5NCwgMTIsIDEzLCAKLSAgICAyNDMsIDE5MywgMTIsIDEzLCAyNDMsIDE5MiwgMTIsIDEzLCAyNDMsIDE5MSwgMTIsIDEzLCAyNDMsIDE5MCwgMTIsIDEzLCAKLSAgICAyNDMsIDE4OSwgMTIsIDEzLCAyNDMsIDE4OCwgMTIsIDEzLCAyNDMsIDE4NywgMTIsIDEzLCAyNDMsIDE4NiwgMTIsIDEzLCAKLSAgICAyNDMsIDE4NSwgMTIsIDEzLCAyNDMsIDE4NCwgMTIsIDEzLCAyNDMsIDE4MywgMTIsIDEzLCAyNDMsIDE4MiwgMTIsIDEzLCAKLSAgICAyNDMsIDE4MSwgMTIsIDEzLCAyNDMsIDE4MCwgMTIsIDEzLCAyNDMsIDE3OSwgMTIsIDEzLCAyNDMsIDE3OCwgMTIsIDEzLCAKLSAgICAyNDMsIDE3NywgMTIsIDEzLCAyNDMsIDE3NiwgMTIsIDEzLCAyNDMsIDE3NSwgMTIsIDEzLCAyNDMsIDE3NCwgMTIsIDEzLCAKLSAgICAyNDMsIDE3MywgMTIsIDEzLCAyNDMsIDE3MiwgMTIsIDEzLCAyNDMsIDE3MSwgMTIsIDEzLCAyNDMsIDE3MCwgMTIsIDEzLCAKLSAgICAyNDMsIDE2OSwgMTIsIDEzLCAyNDMsIDE2OCwgMTIsIDEzLCAyNDMsIDE2NywgMTIsIDEzLCAyNDMsIDE2NiwgMTIsIDEzLCAKLSAgICAyNDMsIDE2NSwgMTIsIDEzLCAyNDMsIDE2NCwgMTIsIDEzLCAyNDMsIDE2MywgMTIsIDEzLCAyNDMsIDE2MiwgMTIsIDEzLCAKLSAgICAyNDMsIDE2MSwgMTIsIDEzLCAyNDMsIDE2MCwgMTIsIDEzLCAyNDMsIDE1OSwgMTIsIDEzLCAyNDMsIDE1OCwgMTIsIDEzLCAKLSAgICAyNDMsIDE1NywgMTIsIDEzLCAyNDMsIDE1NiwgMTIsIDEzLCAyNDMsIDE1NSwgMTIsIDEzLCAyNDMsIDE1NCwgMTIsIDEzLCAKLSAgICAyNDMsIDE1MywgMTIsIDEzLCAyNDMsIDE1MiwgMTIsIDEzLCAyNDMsIDE1MSwgMTIsIDEzLCAyNDMsIDE1MCwgMTIsIDEzLCAKLSAgICAyNDMsIDE0OSwgMTIsIDEzLCAyNDMsIDE0OCwgMTIsIDEzLCAyNDMsIDE0NywgMTIsIDEzLCAyNDMsIDE0NiwgMTIsIDEzLCAKLSAgICAyNDMsIDE0NSwgMTIsIDEzLCAyNDIsIDY1LCAxMiwgMTMsIDI0MiwgNjQsIDEyLCAxMywgMjQyLCA2MywgMTIsIDEzLCAyNDIsIAotICAgIDYyLCAxMiwgMTMsIDI0MiwgNjEsIDEyLCAxMywgMjQyLCA2MCwgMTIsIDEzLCAyNDIsIDU5LCAxMiwgMTMsIDI0MiwgNTgsIAotICAgIDEyLCAxMywgMjQyLCA1NywgMTIsIDEzLCAyNDAsIDE0NSwgMTIsIDEzLCAyNDAsIDE0NCwgMTIsIDEzLCAyNDAsIDE0MywgCi0gICAgMTIsIDEzLCAyNDAsIDE0MiwgMTIsIDEzLCAyNDAsIDE0MSwgMTIsIDEzLCAyNDAsIDE0MCwgMTIsIDEzLCAyNDAsIDEzOSwgCi0gICAgMTIsIDEzLCAyNDAsIDEzOCwgMTIsIDEzLCAyNDAsIDEzNywgMTIsIDEzLCAyNDAsIDEzNiwgMTIsIDEzLCAyNDAsIDEzNSwgCi0gICAgMTIsIDEzLCAyNDAsIDEzNCwgMTIsIDEzLCAyNDAsIDEzMywgMTIsIDEzLCAyNDAsIDEzMiwgMTIsIDEzLCAyNDAsIDEzMSwgCi0gICAgMTIsIDEzLCAyNDAsIDEzMCwgMTIsIDEzLCAyNDAsIDEyOSwgMTIsIDEzLCAyNDAsIDEyOCwgMTIsIDEzLCAyNDAsIDEyNywgCi0gICAgMTIsIDEzLCAyMzUsIDI4LCAxMiwgMTMsIDIzNSwgMjcsIDEyLCAxMywgMjM1LCAyNiwgMTIsIDEzLCAyMzUsIDI1LCAxMiwgCi0gICAgMTMsIDIzNSwgMjQsIDEyLCAxMywgMjM1LCAyMywgMTIsIDEzLCAyMzUsIDIyLCAxMiwgMTMsIDIzNSwgMjEsIDEyLCAxMywgCi0gICAgMjMzLCAxNTIsIDEyLCAxMywgMjMzLCAxNTEsIDEyLCAxMywgMjMzLCAxNTAsIDEyLCAxMywgMjMzLCAxNDksIDEyLCAxMywgCi0gICAgMjMzLCAxNDgsIDEyLCAxMywgMjMzLCAxNDcsIDEyLCAxMywgMjMzLCAxNDYsIDEyLCAxMywgMjMzLCAxNDUsIDEyLCAxMywgCi0gICAgMjMzLCAxNDQsIDEyLCAxMywgMjMzLCAxNDMsIDEyLCAxMywgMjMyLCA1NCwgMTIsIDEzLCAyMzIsIDUzLCAxMiwgMTMsIAotICAgIDIzMiwgNTIsIDEyLCAxMywgMjMyLCA1MSwgMTIsIDEzLCAyMzIsIDUwLCAxMiwgMTMsIDIzMiwgNDksIDEyLCAxMywgMjMyLCAKLSAgICA0OCwgMTIsIDEzLCAyMzIsIDQ3LCAxMiwgMTMsIDIzMiwgNDYsIDEyLCAxMywgMjMyLCA0NSwgMTIsIDEzLCAyMzIsIDQ0LCAKLSAgICAxMiwgMTMsIDIzMiwgNDMsIDEyLCAxMywgMjMyLCA0MiwgMTIsIDEzLCAyMzIsIDQxLCAxMiwgMTMsIDIzMiwgNDAsIDEyLCAKLSAgICAxMywgMjMyLCAzOSwgMTIsIDEzLCAyMzIsIDM4LCAxMiwgMTMsIDIzMiwgMzcsIDEyLCAxMywgMjMyLCAzNiwgMTIsIDEzLCAKLSAgICAyMzIsIDM1LCAxMiwgMTMsIDIzMiwgMzQsIDEyLCAxMywgMjMyLCAzMywgMTIsIDEzLCAyMzIsIDMyLCAxMiwgMTMsIDIzMiwgCi0gICAgMzEsIDEyLCAxMywgMjMyLCAzMCwgMTIsIDEzLCAyMzIsIDI5LCAxMiwgMTMsIDIzMiwgMjgsIDEyLCAxMywgMjMyLCAyNywgCi0gICAgMTIsIDEzLCAyMzIsIDI2LCAxMiwgMTMsIDIzMiwgMjUsIDEyLCAxMywgMjMyLCAyNCwgMTIsIDEzLCAyMzIsIDIzLCAxMiwgCi0gICAgMTMsIDIzMiwgMjIsIDEyLCAxMywgMjMyLCAyMSwgMTIsIDEzLCAyMzIsIDIwLCAxMiwgMTMsIDIzMiwgMTksIDEyLCAxMywgCi0gICAgMjMyLCAxOCwgMTIsIDEzLCAyMzIsIDE3LCAxMiwgMTMsIDIzMiwgMTYsIDEyLCAxMywgMjMyLCAxNSwgMTIsIDEzLCAyMzIsIAotICAgIDE0LCAxMiwgMTMsIDIzMiwgMTMsIDEyLCAxMywgMjMyLCAxMiwgMTIsIDEzLCAyMzIsIDExLCAxMiwgMTMsIDIzMiwgMTAsIAotICAgIDEyLCAxMywgMjMyLCA5LCAxMiwgMTMsIDIzMiwgOCwgMTIsIDEzLCAyMzIsIDcsIDEyLCAxMywgMjMyLCA2LCAxMiwgMTMsIAotICAgIDIzMiwgNSwgMTIsIDEzLCAyMzIsIDQsIDEyLCAxMywgMjMyLCAzLCAxMiwgMTMsIDIzMiwgMiwgMTIsIDEzLCAyMzIsIDEsIAotICAgIDEyLCAxMywgMjMyLCAwLCAxMiwgMTMsIDIzMSwgMjU1LCAxMiwgMTMsIDIzMSwgMjU0LCAxMiwgMTMsIDIzMSwgMjUzLCAxMiwgCi0gICAgMTMsIDIzMSwgMjUyLCAxMiwgMTMsIDIzMSwgMjUxLCAxMiwgMTMsIDIzMSwgMjUwLCAxMiwgMTMsIDIzMSwgMjQ5LCAxMiwgCi0gICAgMTMsIDIzMSwgMjQ4LCAxMiwgMTMsIDIzMSwgMjQ3LCAxMiwgMTMsIDIzMSwgMjQ2LCAxMiwgMTMsIDIzMSwgMjQ1LCAxMiwgCi0gICAgMTMsIDIzMCwgMjcsIDEyLCAxMywgMjMwLCAyNiwgMTIsIDEzLCAyMzAsIDI1LCAxMiwgMTMsIDIzMCwgMjQsIDEyLCAxMywgCi0gICAgMjMwLCAyMywgMTIsIDEzLCAyMzAsIDIyLCAxMiwgMTMsIDIzMCwgMjEsIDEyLCAxMywgMjMwLCAyMCwgMTIsIDEzLCAyMzAsIAotICAgIDE5LCAxMiwgMTMsIDIzMCwgMTgsIDEyLCAxMywgMjMwLCAxNywgMTIsIDEzLCAyMzAsIDE2LCAxMiwgMTMsIDIzMCwgMTUsIAotICAgIDEyLCAxMywgMjMwLCAxNCwgMTIsIDEzLCAyMzAsIDEzLCAxMiwgMTMsIDIzMCwgMTIsIDEyLCAxMywgMjMwLCAxMSwgMTIsIAotICAgIDEzLCAyMzAsIDEwLCAxMiwgMTMsIDIzMCwgOSwgMTIsIDEzLCAyMzAsIDgsIDEyLCAxMywgMjMwLCA3LCAxMiwgMTMsIDIzMCwgCi0gICAgNiwgMTIsIDEzLCAyMzAsIDUsIDEyLCAxMywgMjMwLCA0LCAxMiwgMTMsIDIzMCwgMywgMTIsIDEzLCAyMzAsIDIsIDEyLCAKLSAgICAxMywgMjMwLCAxLCAxMiwgMTMsIDIzMCwgMCwgMTIsIDEzLCAyMjksIDI1NSwgMTIsIDEzLCAyMjksIDI1NCwgMTIsIDEzLCAKLSAgICAyMjksIDI1MywgMTIsIDEzLCAyMjksIDI1MiwgMTIsIDEzLCAyMjksIDI1MSwgMTIsIDEzLCAyMjksIDI1MCwgMTIsIDEzLCAKLSAgICAyMjksIDI0OSwgMTIsIDEzLCAyMjksIDI0OCwgMTIsIDEzLCAyMjksIDI0NywgMTIsIDEzLCAyMjksIDI0NiwgMTIsIDEzLCAKLSAgICAyMjksIDI0NSwgMTIsIDEzLCAyMjksIDI0NCwgMTIsIDEzLCAyMjksIDI0MywgMTIsIDEzLCAyMjksIDI0MiwgMTIsIDEzLCAKLSAgICAyMjksIDI0MSwgMTIsIDEzLCAyMjksIDI0MCwgMTIsIDEzLCAyMjksIDIzOSwgMTIsIDEzLCAyMjksIDIzOCwgMTIsIDEzLCAKLSAgICAyMjksIDIzNywgMTIsIDEzLCAyMjksIDIzNiwgMTIsIDEzLCAyMjksIDIzNSwgMTIsIDEzLCAyMjgsIDEzOSwgMTIsIDEzLCAKLSAgICAyMjgsIDEzOCwgMTIsIDEzLCAyMjgsIDEzNywgMTIsIDEzLCAyMjgsIDEzNiwgMTIsIDEzLCAyMjgsIDEzNSwgMTIsIDEzLCAKLSAgICAyMjgsIDEzNCwgMTIsIDEzLCAyMjgsIDEzMywgMTIsIDEzLCAyMjgsIDEzMiwgMTIsIDEzLCAyMjgsIDEzMSwgMTIsIDEzLCAKLSAgICAyMjgsIDEzMCwgMTIsIDEzLCAyMjgsIDEyOSwgMTIsIDEzLCAyMjgsIDEyOCwgMTIsIDEzLCAyMjgsIDEyNywgMTIsIDEzLCAKLSAgICAyMjgsIDEyNiwgMTIsIDEzLCAyMjgsIDEyNSwgMTIsIDEzLCAyMjgsIDEyNCwgMTIsIDEzLCAyMjgsIDEyMywgMTIsIDEzLCAKLSAgICAyMjgsIDEyMiwgMTIsIDEzLCAyMjgsIDEyMSwgMTIsIDEzLCAyMjgsIDEyMCwgMTIsIDEzLCAyMjgsIDExOSwgMTIsIDEzLCAKLSAgICAyMjgsIDExOCwgMTIsIDEzLCAyMjcsIDI0MSwgMTIsIDEzLCAyMjcsIDI0MCwgMTIsIDEzLCAyMjcsIDIzOSwgMTIsIDEzLCAKLSAgICAyMjcsIDIzOCwgMTIsIDEzLCAyMjcsIDIzNywgMTIsIDEzLCAyMjcsIDIzNiwgMTIsIDEzLCAyMjcsIDIzNSwgMTIsIDEzLCAKLSAgICAyMjcsIDIzNCwgMTIsIDEzLCAyMjcsIDIzMywgMTIsIDEzLCAyMjcsIDIzMiwgMTIsIDEzLCAyMjcsIDIzMSwgMTIsIDEzLCAKLSAgICAyMjcsIDIzMCwgMTIsIDEzLCAyMjcsIDIyOSwgMTIsIDEzLCAyMjcsIDIyOCwgMTIsIDEzLCAyMjcsIDIyNywgMTIsIDEzLCAKLSAgICAyMjcsIDIyNiwgMTIsIDEzLCAyMjcsIDIyNSwgMTIsIDEzLCAyMjcsIDIyNCwgMTIsIDEzLCAyMjcsIDIyMywgMTIsIDEzLCAKLSAgICAyMjcsIDIyMiwgMTIsIDEzLCAyMjcsIDIyMSwgMTIsIDEzLCAyMjcsIDIyMCwgMTIsIDEzLCAyMjcsIDIxOSwgMTIsIDEzLCAKLSAgICAyMjcsIDIxOCwgMTIsIDEzLCAyMjcsIDIxNywgMTIsIDEzLCAyMjcsIDIxNiwgMTIsIDEzLCAyMjcsIDgwLCAxMiwgMTMsIAotICAgIDIyNywgNzksIDEyLCAxMywgMjI3LCA3OCwgMTIsIDEzLCAyMjcsIDc3LCAxMiwgMTMsIDIyNywgNzYsIDEyLCAxMywgMjI3LCAKLSAgICA3NSwgMTIsIDEzLCAyMjcsIDc0LCAxMiwgMTMsIDIyNywgNzMsIDEyLCAxMywgMjI3LCA3MiwgMTIsIDEzLCAyMjcsIDcxLCAKLSAgICAxMiwgMTMsIDIyNywgNzAsIDEyLCAxMywgMjI3LCA2OSwgMTIsIDEzLCAyMjcsIDY4LCAxMiwgMTMsIDIyNywgNjcsIDEyLCAKLSAgICAxMywgMjI3LCA2NiwgMTIsIDEzLCAyMjcsIDY1LCAxMiwgMTMsIDIyNywgNjQsIDEyLCAxMywgMjI3LCA2MywgMTIsIDEzLCAKLSAgICAyMjcsIDYyLCAxMiwgMTMsIDIyNywgNjEsIDEyLCAxMywgMjI3LCA2MCwgMTIsIDEzLCAyMjcsIDU5LCAxMiwgMTMsIDIyNywgCi0gICAgNTgsIDEyLCAxMywgMjI3LCA1NywgMTIsIDEzLCAyMjcsIDU2LCAxMiwgMTMsIDIyNywgNTUsIDEyLCAxMywgMjI3LCA1NCwgCi0gICAgMTIsIDEzLCAyMjcsIDUzLCAxMiwgMTMsIDIyNywgNTIsIDEyLCAxMywgMjI3LCA1MSwgMTIsIDEzLCAyMjcsIDUwLCAxMiwgCi0gICAgMTMsIDIyNywgNDksIDEyLCAxMywgMjI3LCA0OCwgMTIsIDEzLCAyMjcsIDQ3LCAxMiwgMTMsIDIyNywgNDYsIDEyLCAxMywgCi0gICAgMjI3LCA0NSwgMTIsIDEzLCAyMjcsIDQ0LCAxMiwgMTMsIDIyNywgNDMsIDEyLCAxMywgMjI3LCA0MiwgMTIsIDEzLCAyMjcsIAotICAgIDQxLCAxMiwgMTMsIDIyNywgNDAsIDEyLCAxMywgMjI3LCAzOSwgMTIsIDEzLCAyMjcsIDM4LCAxMiwgMTMsIDIyNywgMzcsIAotICAgIDEyLCAxMywgMjI3LCAzNiwgMTIsIDEzLCAyMjcsIDM1LCAxMiwgMTMsIDIyNywgMzQsIDEyLCAxMywgMjI3LCAzMywgMTIsIAotICAgIDEzLCAyMjcsIDMyLCAxMiwgMTMsIDIyNywgMzEsIDEyLCAxMywgMjI3LCAzMCwgMTIsIDEzLCAyMjcsIDI5LCAxMiwgMTMsIAotICAgIDIyNywgMjgsIDEyLCAxMywgMjI3LCAyNywgMTIsIDEzLCAyMjcsIDI2LCAxMiwgMTMsIDIyNywgMjUsIDEyLCAxMywgMjI3LCAKLSAgICAyNCwgMTIsIDEzLCAyMjcsIDIzLCAxMiwgMTMsIDIyNywgMjIsIDEyLCAxMywgMjI3LCAyMSwgMTIsIDEzLCAyMjcsIDIwLCAKLSAgICAxMiwgMTMsIDIyNywgMTksIDEyLCAxMywgMjI3LCAxOCwgMTIsIDEzLCAyMjcsIDE3LCAxMiwgMTMsIDIyNywgMTYsIDEyLCAKLSAgICAxMywgMjI3LCAxNSwgMTIsIDEzLCAyMjcsIDE0LCAxMiwgMTMsIDIyNywgMTMsIDEyLCAxMywgMjI3LCAxMiwgMTIsIDEzLCAKLSAgICAyMjcsIDExLCAxMiwgMTMsIDIyNywgMTAsIDEyLCAxMywgMjI3LCA5LCAxMiwgMTMsIDIyNywgOCwgMTIsIDEzLCAyMjcsIDcsIAotICAgIDEyLCAxMywgMjI3LCA2LCAxMiwgMTMsIDIyNiwgMTA4LCAxMiwgMTMsIDIyNiwgMTA3LCAxMiwgMTMsIDIyNiwgMTA2LCAxMiwgCi0gICAgMTMsIDIyNiwgMTA1LCAxMiwgMTMsIDIyNiwgMTA0LCAxMiwgMTMsIDIyNiwgMTAzLCAxMiwgMTMsIDIyNiwgMTAyLCAxMiwgCi0gICAgMTMsIDIyNiwgMTAxLCAxMiwgMTMsIDIyNiwgMTAwLCAxMiwgMTMsIDIyNiwgOTksIDEyLCAxMywgMjI2LCA5OCwgMTIsIDEzLCAKLSAgICAyMjYsIDk3LCAxMiwgMTMsIDIyNiwgOTYsIDEyLCAxMywgMjI0LCA5OCwgMTIsIDEzLCAyMjQsIDk3LCAxMiwgMTMsIDIyNCwgCi0gICAgOTYsIDEyLCAxMywgMjI0LCA5NSwgMTIsIDEzLCAyMjQsIDk0LCAxMiwgMTMsIDIyNCwgOTMsIDEyLCAxMywgMjI0LCA5MiwgCi0gICAgMTIsIDEzLCAyMjMsIDIyNSwgMTIsIDEzLCAyMjMsIDIyNCwgMTIsIDEzLCAyMjMsIDIyMywgMTIsIDEzLCAyMjMsIDIyMiwgCi0gICAgMTIsIDEzLCAyMjMsIDIyMSwgMTIsIDEzLCAyMjMsIDIyMCwgMTIsIDEzLCAyMjMsIDIxOSwgMTIsIDEzLCAyMjMsIDIxOCwgCi0gICAgMTIsIDEzLCAyMjMsIDIxNywgMTIsIDEzLCAyMjMsIDIxNiwgMTIsIDEzLCAyMjMsIDIxNSwgMTIsIDEzLCAyMjMsIDIxNCwgCi0gICAgMTIsIDEzLCAyMjMsIDIxMywgMTIsIDEzLCAyMjMsIDIxMiwgMTIsIDEzLCAyMjMsIDIxMSwgMTIsIDEzLCAyMjMsIDIxMCwgCi0gICAgMTIsIDEzLCAyMjMsIDIwOSwgMTIsIDEzLCAyMjMsIDIwOCwgMTIsIDEzLCAyMjMsIDIwNywgMTIsIDEzLCAyMjMsIDIwNiwgCi0gICAgMTIsIDEzLCAyMjMsIDIwNSwgMTIsIDEzLCAyMjMsIDIwNCwgMTIsIDEzLCAyMjMsIDIwMywgMTIsIDEzLCAyMjMsIDIwMiwgCi0gICAgMTIsIDEzLCAyMjMsIDIwMSwgMTIsIDEzLCAyMjMsIDIwMCwgMTIsIDEzLCAyMjMsIDE5OSwgMTIsIDEzLCAyMjMsIDE5OCwgCi0gICAgMTIsIDEzLCAyMjMsIDE5NywgMTIsIDEzLCAyMjMsIDE5NiwgMTIsIDEzLCAyMjMsIDE5NSwgMTIsIDEzLCAyMjMsIDE5NCwgCi0gICAgMTIsIDEzLCAyMjMsIDE5MywgMTIsIDEzLCAyMjMsIDE5MiwgMTIsIDEzLCAyMjIsIDkwLCAxMiwgMTMsIDIyMiwgODksIDEyLCAKLSAgICAxMywgMjIyLCA4OCwgMTIsIDEzLCAyMjIsIDg3LCAxMiwgMTMsIDIyMiwgODYsIDEyLCAxMywgMjIyLCA4NSwgMTIsIDEzLCAKLSAgICAyMjIsIDg0LCAxMiwgMTMsIDIyMiwgODMsIDEyLCAxMywgMjIyLCA4MiwgMTIsIDEzLCAyMjIsIDgxLCAxMiwgMTMsIDIyMiwgCi0gICAgODAsIDEyLCAxMywgMjIyLCA3OSwgMTIsIDEzLCAyMjIsIDc4LCAxMiwgMTMsIDIyMiwgNzcsIDEyLCAxMywgMjIyLCA3NiwgCi0gICAgMTIsIDEzLCAyMjIsIDc1LCAxMiwgMTMsIDIyMiwgNzQsIDEyLCAxMywgMjIyLCA3MywgMTIsIDEzLCAyMjIsIDcyLCAxMiwgCi0gICAgMTMsIDIyMiwgNzEsIDEyLCAxMywgMjIyLCA3MCwgMTIsIDEzLCAyMjIsIDY5LCAxMiwgMTMsIDIyMiwgNjgsIDEyLCAxMywgCi0gICAgMjIyLCA2NywgMTIsIDEzLCAyMjIsIDY2LCAxMiwgMTMsIDIyMiwgNjUsIDEyLCAxMywgMjIyLCA2NCwgMTIsIDEzLCAyMjIsIAotICAgIDYzLCAxMiwgMTMsIDIyMiwgNjIsIDEyLCAxMywgMjIyLCA2MSwgMTIsIDEzLCAyMjIsIDYwLCAxMiwgMTMsIDIyMiwgNTksIAotICAgIDEyLCAxMywgMjIyLCA1OCwgMTIsIDEzLCAyMjIsIDU3LCAxMiwgMTMsIDIyMiwgNTYsIDEyLCAxMywgMjIyLCA1NSwgMTIsIAotICAgIDEzLCAyMjIsIDU0LCAxMiwgMTMsIDIyMiwgNTMsIDEyLCAxMywgMjIyLCA1MiwgMTIsIDEzLCAyMjIsIDUxLCAxMiwgMTMsIAotICAgIDIyMiwgNTAsIDEyLCAxMywgMjIyLCA0OSwgMTIsIDEzLCAyMjIsIDQ4LCAxMiwgMTMsIDIyMiwgNDcsIDEyLCAxMywgMjIyLCAKLSAgICA0NiwgMTIsIDEzLCAyMjIsIDQ1LCAxMiwgMTMsIDIyMiwgNDQsIDEyLCAxMywgMjIyLCA0MywgMTIsIDEzLCAyMjIsIDQyLCAKLSAgICAxMiwgMTMsIDIyMiwgNDEsIDEyLCAxMywgMjIyLCA0MCwgMTIsIDEzLCAyMjIsIDM5LCAxMiwgMTMsIDIyMiwgMzgsIDEyLCAKLSAgICAxMywgMjIyLCAzNywgMTIsIDEzLCAyMTcsIDE1MSwgMTIsIDEzLCAyMTcsIDE1MCwgMTIsIDEzLCAyMTcsIDE0OSwgMTIsIAotICAgIDEzLCAyMTcsIDE0OCwgMTIsIDEzLCAyMTcsIDE0NywgMTIsIDEzLCAyMTcsIDE0NiwgMTIsIDEzLCAyMTcsIDE0NSwgMTIsIAotICAgIDEzLCAyMTcsIDE0NCwgMTIsIDEzLCAyMTcsIDE0MywgMTIsIDEzLCAyMTcsIDE0MiwgMTIsIDEzLCAyMTcsIDE0MSwgMTIsIAotICAgIDEzLCAyMTcsIDE0MCwgMTIsIDEzLCAyMTcsIDEzOSwgMTIsIDEzLCAyMTcsIDEzOCwgMTIsIDEzLCAyMTcsIDEzNywgMTIsIAotICAgIDEzLCAyMTcsIDEzNiwgMTIsIDEzLCAyMTcsIDEzNSwgMTIsIDEzLCAyMTcsIDEzNCwgMTIsIDEzLCAyMTcsIDEzMywgMTIsIAotICAgIDEzLCAyMTcsIDEzMiwgMTIsIDEzLCAyMTcsIDEzMSwgMTIsIDEzLCAyMTcsIDEzMCwgMTIsIDEzLCAyMTcsIDEyOSwgMTIsIAotICAgIDEzLCAyMTcsIDEyOCwgMTIsIDEzLCAyMTcsIDEyNywgMTIsIDEzLCAyMTcsIDEyNiwgMTIsIDEzLCAyMTcsIDEyNSwgMTIsIAotICAgIDEzLCAyMTcsIDEyNCwgMTIsIDEzLCAyMTcsIDEyMywgMTIsIDEzLCAyMTcsIDEyMiwgMTIsIDEzLCAyMTcsIDEyMSwgMTIsIAotICAgIDEzLCAyMTcsIDEyMCwgMTIsIDEzLCAyMTcsIDExOSwgMTIsIDEzLCAyMTcsIDExOCwgMTIsIDEzLCAyMTcsIDExNywgMTIsIAotICAgIDEzLCAyMTcsIDExNiwgMTIsIDEzLCAyMTcsIDExNSwgMTIsIDEzLCAyMTcsIDExNCwgMTIsIDEzLCAyMTcsIDExMywgMTIsIAotICAgIDEzLCAyMTcsIDExMiwgMTIsIDEzLCAyMTcsIDExMSwgMTIsIDEzLCAyMTcsIDExMCwgMTIsIDEzLCAyMTcsIDEwOSwgMTIsIAotICAgIDEzLCAyMTcsIDEwOCwgMTIsIDEzLCAyMTUsIDIyLCAxMiwgMTMsIDIxNSwgMjEsIDEyLCAxMywgMjE1LCAyMCwgMTIsIDEzLCAKLSAgICAyMTUsIDE5LCAxMiwgMTMsIDIxNSwgMTgsIDEyLCAxMywgMjE1LCAxNywgMTIsIDEzLCAyMTUsIDE2LCAxMiwgMTMsIDIxNSwgCi0gICAgMTUsIDEyLCAxMywgMjE1LCAxNCwgMTIsIDEzLCAyMTUsIDEzLCAxMiwgMTMsIDIxNSwgMTIsIDEyLCAxMywgMjE1LCAxMSwgCi0gICAgMTIsIDEzLCAyMTUsIDEwLCAxMiwgMTMsIDIxNSwgOSwgMTIsIDEzLCAyMTUsIDgsIDEyLCAxMywgMjE1LCA3LCAxMiwgMTMsIAotICAgIDIxNSwgNiwgMTIsIDEzLCAyMTUsIDUsIDEyLCAxMywgMjE1LCA0LCAxMiwgMTMsIDIxNSwgMywgMTIsIDEzLCAyMTUsIDIsIAotICAgIDEyLCAxMywgMjE1LCAxLCAxMiwgMTMsIDIxNSwgMCwgMTIsIDEzLCAyMTQsIDI1NSwgMTIsIDEzLCAyMTQsIDI1NCwgMTIsIAotICAgIDEzLCAyMTQsIDI1MywgMTIsIDEzLCAyMTQsIDI1MiwgMTIsIDEzLCAyMTQsIDI1MSwgMTIsIDEzLCAyMTQsIDI1MCwgMTIsIAotICAgIDEzLCAyMTQsIDI0OSwgMTIsIDEzLCAyMTQsIDI0OCwgMTIsIDEzLCAyMTQsIDI0NywgMTIsIDEzLCAyMTQsIDI0NiwgMTIsIAotICAgIDEzLCAyMTQsIDI0NSwgMTIsIDEzLCAyMTQsIDI0NCwgMTIsIDEzLCAyMTQsIDI0MywgMTIsIDEzLCAyMTQsIDI0MiwgMTIsIAotICAgIDEzLCAyMTQsIDI0MSwgMTIsIDEzLCAyMTQsIDI0MCwgMTIsIDEzLCAyMTQsIDIzOSwgMTIsIDEzLCAyMTQsIDIzOCwgMTIsIAotICAgIDEzLCAyMTQsIDIzNywgMTIsIDEzLCAyMTQsIDIzNiwgMTIsIDEzLCAyMTQsIDIzNSwgMTIsIDEzLCAyMTQsIDIzNCwgMTIsIAotICAgIDEzLCAyMTQsIDIzMywgMTIsIDEzLCAyMTQsIDIzMiwgMTIsIDEzLCAyMTQsIDEwNCwgMTIsIDEzLCAyMTQsIDEwMywgMTIsIAotICAgIDEzLCAyMTQsIDEwMiwgMTIsIDEzLCAyMTQsIDEwMSwgMTIsIDEzLCAyMTQsIDEwMCwgMTIsIDEzLCAyMTQsIDk5LCAxMiwgCi0gICAgMTMsIDIxNCwgOTgsIDEyLCAxMywgMjE0LCA5NywgMTIsIDEzLCAyMTQsIDk2LCAxMiwgMTMsIDIxNCwgOTUsIDEyLCAxMywgCi0gICAgMjE0LCA5NCwgMTIsIDEzLCAyMTQsIDkzLCAxMiwgMTMsIDIxNCwgOTIsIDEyLCAxMywgMjE0LCA5MSwgMTIsIDEzLCAyMTQsIAotICAgIDkwLCAxMiwgMTMsIDIxNCwgODksIDEyLCAxMywgMjE0LCA4OCwgMTIsIDEzLCAyMTQsIDg3LCAxMiwgMTMsIDIxNCwgODYsIAotICAgIDEyLCAxMywgMjE0LCA4NSwgMTIsIDEzLCAyMTQsIDg0LCAxMiwgMTMsIDIxNCwgODMsIDEyLCAxMywgMjE0LCA4MiwgMTIsIAotICAgIDEzLCAyMTQsIDgxLCAxMiwgMTMsIDIxNCwgODAsIDEyLCAxMywgMjE0LCA3OSwgMTIsIDEzLCAyMTQsIDc4LCAxMiwgMTMsIAotICAgIDIxNCwgNzcsIDEyLCAxMywgMjE0LCA3NiwgMTIsIDEzLCAyMTQsIDc1LCAxMiwgMTMsIDIxNCwgNzQsIDEyLCAxMywgMjE0LCAKLSAgICA3MywgMTIsIDEzLCAyMTQsIDcyLCAxMiwgMTMsIDIxNCwgNzEsIDEyLCAxMywgMjE0LCA3MCwgMTIsIDEzLCAyMTQsIDY5LCAKLSAgICAxMiwgMTMsIDIxNCwgNjgsIDEyLCAxMywgMjE0LCA2NywgMTIsIDEzLCAyMTQsIDY2LCAxMiwgMTMsIDIxNCwgNjUsIDEyLCAKLSAgICAxMywgMjE0LCA2NCwgMTIsIDEzLCAyMTQsIDYzLCAxMiwgMTMsIDIxNCwgNjIsIDEyLCAxMywgMjE0LCA2MSwgMTIsIDEzLCAKLSAgICAyMTQsIDYwLCAxMiwgMTMsIDIxNCwgNTksIDEyLCAxMywgMjE0LCA1OCwgMTIsIDEzLCAyMTQsIDU3LCAxMiwgMTMsIDIxNCwgCi0gICAgNTYsIDEyLCAxMywgMjE0LCA1NSwgMTIsIDEzLCAyMTQsIDU0LCAxMiwgMTMsIDIxNCwgNTMsIDEyLCAxMywgMjE0LCA1MiwgCi0gICAgMTIsIDEzLCAyMTQsIDUxLCAxMiwgMTMsIDIxNCwgNTAsIDEyLCAxMywgMjE0LCA0OSwgMTIsIDEzLCAyMTQsIDQ4LCAxMiwgCi0gICAgMTMsIDIxNCwgNDcsIDEyLCAxMywgMjE0LCA0NiwgMTIsIDEzLCAyMTQsIDQ1LCAxMiwgMTMsIDIxNCwgNDQsIDEyLCAxMywgCi0gICAgMjE0LCA0MywgMTIsIDEzLCAyMTQsIDQyLCAxMiwgMTMsIDIxNCwgNDEsIDEyLCAxMywgMjE0LCA0MCwgMTIsIDEzLCAyMTQsIAotICAgIDM5LCAxMiwgMTMsIDIxNCwgMzgsIDEyLCAxMywgMjE0LCAzNywgMTIsIDEzLCAyMTQsIDM2LCAxMiwgMTMsIDIxNCwgMzUsIAotICAgIDEyLCAxMywgMjE0LCAzNCwgMTIsIDEzLCAyMTQsIDMzLCAxMiwgMTMsIDIxNCwgMzIsIDEyLCAxMywgMjE0LCAzMSwgMTIsIAotICAgIDEzLCAyMTQsIDMwLCAxMiwgMTMsIDIxNCwgMjksIDEyLCAxMywgMjE0LCAyOCwgMTIsIDEzLCAyMTIsIDk3LCAxMiwgMTMsIAotICAgIDIxMiwgOTYsIDEyLCAxMywgMjEyLCA5NSwgMTIsIDEzLCAyMTIsIDk0LCAxMiwgMTMsIDIxMiwgOTMsIDEyLCAxMywgMjEyLCAKLSAgICA5MiwgMTIsIDEzLCAyMTIsIDkxLCAxMiwgMTMsIDIxMiwgOTAsIDEyLCAxMywgMjEyLCA4OSwgMTIsIDEzLCAyMTIsIDg4LCAKLSAgICAxMiwgMTMsIDIxMiwgODcsIDEyLCAxMywgMjEyLCA4NiwgMTIsIDEzLCAyMTIsIDg1LCAxMiwgMTMsIDIxMiwgODQsIDEyLCAKLSAgICAxMywgMjEyLCA4MywgMTIsIDEzLCAyMTIsIDgyLCAxMiwgMTMsIDIxMiwgODEsIDEyLCAxMywgMjEyLCA4MCwgMTIsIDEzLCAKLSAgICAyMTIsIDc5LCAxMiwgMTMsIDIxMiwgNzgsIDEyLCAxMywgMjEyLCA3NywgMTIsIDEzLCAyMTIsIDc2LCAxMiwgMTMsIDIxMiwgCi0gICAgNzUsIDEyLCAxMywgMjEyLCA3NCwgMTIsIDEzLCAyMTIsIDczLCAxMiwgMTMsIDIxMiwgNzIsIDEyLCAxMywgMjEyLCA3MSwgCi0gICAgMTIsIDEzLCAyMTIsIDcwLCAxMiwgMTMsIDIxMiwgNjksIDEyLCAxMywgMjEyLCA2OCwgMTIsIDEzLCAyMTIsIDY3LCAxMiwgCi0gICAgMTMsIDIxMiwgNjYsIDEyLCAxMywgMjExLCAxNzcsIDEyLCAxMywgMjExLCAxNzYsIDEyLCAxMywgMjExLCAxNzUsIDEyLCAKLSAgICAxMywgMjExLCAxNzQsIDEyLCAxMywgMjExLCAxNzMsIDEyLCAxMywgMjExLCAxNzIsIDEyLCAxMywgMjExLCAxNzEsIDEyLCAKLSAgICAxMywgMjExLCAxNzAsIDEyLCAxMywgMjExLCAxNjksIDEyLCAxMywgMjExLCAxNjgsIDEyLCAxMywgMjExLCAxNjcsIDEyLCAKLSAgICAxMywgMjExLCAxNjYsIDEyLCAxMywgMjExLCAxMTUsIDEyLCAxMywgMjExLCAxMTQsIDEyLCAxMywgMjExLCAxMTMsIDEyLCAKLSAgICAxMywgMjExLCAxMTIsIDEyLCAxMywgMjExLCAxMTEsIDEyLCAxMywgMjExLCAxMTAsIDEyLCAxMywgMjExLCAxMDksIDEyLCAKLSAgICAxMywgMjExLCAxMDgsIDEyLCAxMywgMjExLCAxMDcsIDEyLCAxMywgMjEwLCAxNTgsIDEyLCAxMywgMjEwLCAxNTcsIDEyLCAKLSAgICAxMywgMjEwLCAxNTYsIDEyLCAxMywgMjEwLCAxNTUsIDEyLCAxMywgMjEwLCAxNTQsIDEyLCAxMywgMjEwLCAxNTMsIDEyLCAKLSAgICAxMywgMjEwLCAxNTIsIDEyLCAxMywgMjEwLCAxNTEsIDEyLCAxMywgMjEwLCAxNTAsIDEyLCAxMywgMjEwLCAxNDksIDEyLCAKLSAgICAxMywgMjEwLCAxNDgsIDEyLCAxMywgMjEwLCAxNDcsIDEyLCAxMywgMjEwLCAxNDYsIDEyLCAxMywgMjEwLCAxNDUsIDEyLCAKLSAgICAxMywgMjEwLCAxNDQsIDEyLCAxMywgMjEwLCAxNDMsIDEyLCAxMywgMjEwLCAxNDIsIDEyLCAxMywgMjEwLCAxNDEsIDEyLCAKLSAgICAxMywgMjEwLCAxNDAsIDEyLCAxMywgMjEwLCAxMzksIDEyLCAxMywgMjEwLCAxMzgsIDEyLCAxMywgMjEwLCAxMzcsIDEyLCAKLSAgICAxMywgMjEwLCAxMzYsIDEyLCAxMywgMjEwLCAxMzUsIDEyLCAxMywgMjEwLCAxMzQsIDEyLCAxMywgMjEwLCAxMzMsIDEyLCAKLSAgICAxMywgMjEwLCAxMzIsIDEyLCAxMywgMjEwLCAxMzEsIDEyLCAxMywgMjEwLCAxMzAsIDEyLCAxMywgMjEwLCAxMjksIDEyLCAKLSAgICAxMywgMjEwLCAxMjgsIDEyLCAxMywgMjEwLCAxMjcsIDEyLCAxMywgMjEwLCAxMjYsIDEyLCAxMywgMjEwLCAxMjUsIDEyLCAKLSAgICAxMywgMjEwLCAxMjQsIDEyLCAxMywgMjEwLCAxMjMsIDEyLCAxMywgMjEwLCAxMjIsIDEyLCAxMywgMjEwLCAxMjEsIDEyLCAKLSAgICAxMywgMjEwLCAxMjAsIDEyLCAxMywgMjEwLCAxMTksIDEyLCAxMywgMjEwLCAxMTgsIDEyLCAxMywgMjU1LCA4MSwgMTIsIAotICAgIDEzLCAyNTUsIDgwLCAxMiwgMTMsIDI1NSwgNzksIDEyLCAxMywgMjU1LCA3OCwgMTIsIDEzLCAyNTUsIDc3LCAxMiwgMTMsIAotICAgIDI1NSwgNzYsIDEyLCAxMywgMjU1LCA3NSwgMTIsIDEzLCAyNTUsIDc0LCAxMiwgMTMsIDI1NSwgNzMsIDEyLCAxMywgMjU1LCAKLSAgICA3MiwgMTIsIDEzLCAyNTUsIDcxLCAxMiwgMTMsIDI1NSwgNzAsIDEyLCAxMywgMjU1LCA2OSwgMTIsIDEzLCAyNTUsIDY4LCAKLSAgICAxMiwgMTMsIDI1NSwgNjcsIDEyLCAxMywgMjU1LCA2NiwgMTIsIDEzLCAyNTUsIDY1LCAxMiwgMTMsIDI1NSwgNjQsIDEyLCAKLSAgICAxMywgMjU1LCA2MywgMTIsIDEzLCAyNTUsIDYyLCAxMiwgMTMsIDI1NSwgNjEsIDEyLCAxMywgMjU1LCA2MCwgMTIsIDEzLCAKLSAgICAyNTUsIDU5LCAxMiwgMTMsIDI1NSwgNTgsIDEyLCAxMywgMjU1LCA1NywgMTIsIDEzLCAyNTUsIDU2LCAxMiwgMTMsIDI1NSwgCi0gICAgNTUsIDEyLCAxMywgMjU1LCA1NCwgMTIsIDEzLCAyNTUsIDUzLCAxMiwgMTMsIDI1NSwgNTIsIDEyLCAxMywgMjU1LCA1MSwgCi0gICAgMTIsIDEzLCAyNTUsIDUwLCAxMiwgMTMsIDI1NSwgNDksIDEyLCAxMywgMjU1LCA0OCwgMjAsIDEsIDE2NywgMjI5LCAxNywgCi0gICAgMjMxLCAyMSwgMjAsIDEsIDE2NywgMjQzLCA3NywgMjQ0LCA0NCwgMjAsIDEsIDE2NywgMjI0LCAyNTQsIDIzMSwgMjIsIAotICAgIDIyNSwgNjAsIDIwLCAxLCAxNjcsIDIyNCwgMjU0LCAyMzEsIDIyLCAyMjUsIDYxLCAyMCwgMSwgMTY3LCAyMjksIDIzMSwgCi0gICAgMjMxLCAyMSwgMjAsIDEsIDE2NywgMjE5LCAyMjMsIDIwLCAxLCAxNjcsIDIxNiwgNjcsIDIzMSwgMjEsIDIwLCAxLCAxNjcsIAotICAgIDIyNywgMTIyLCAyMzEsIDIxLCAyMCwgMSwgMTY3LCAyMjAsIDIxLCAyMjYsIDk0LCAyMjgsIDE3NCwgMjAsIDEsIDE2NywgCi0gICAgMjI0LCAyNTQsIDIyNiwgOTQsIDIyOCwgMTc1LCAyMjUsIDYwLCAyMCwgMSwgMTY3LCAyMjQsIDI1NCwgMjI2LCA5NCwgMjI4LCAKLSAgICAxNzUsIDIyNSwgNjEsIDIwLCAxLCAxNjcsIDIzMSwgMjIzLCAyMCwgMSwgMTY3LCAyMTUsIDEyMCwgMjMxLCAyMjQsIDIwLCAKLSAgICAxLCAxNjcsIDIyOSwgNzYsIDIwLCAxLCAxNjcsIDIzMSwgMjIwLCAyMCwgMSwgMTY3LCAyMzEsIDE4MSwgMjAsIDEsIDE2NywgCi0gICAgMjMwLCA1MywgMjAsIDEsIDE2NywgMjIwLCAxMjYsIDIwLCAxLCAxNjcsIDIyNywgMjQ2LCAyMCwgMSwgMTY3LCAyMzQsIAotICAgIDE1NSwgMjAsIDEsIDE2NywgMjI4LCAxNDMsIDIwLCAxLCAxNjcsIDIxOCwgNSwgMjAsIDEsIDE2NywgMjI5LCAxNiwgMjAsIAotICAgIDEsIDE2NywgMjMzLCA5MywgMjAsIDEsIDE2NywgMjMzLCAxOCwgMjMzLCAxOTUsIDIwLCAxLCAxNjcsIDIyNywgMjUzLCAKLSAgICAyMzEsIDI5LCAyMCwgMSwgMTY3LCAyMzEsIDIyNywgMjAsIDEsIDE2NywgMjI1LCAyNTAsIDIwLCAxLCAxNjcsIDI0MiwgCi0gICAgMjM4LCAyMCwgMSwgMTY3LCAyMjYsIDU0LCAyMCwgMSwgMTY3LCAyMzAsIDE1NiwgMjI5LCA1MCwgMjAsIDEsIDE2NywgMjI3LCAKLSAgICAxMDMsIDIzMSwgMzIsIDIwLCAxLCAxNjcsIDEwNCwgMjEwLCAxODgsIDIyOSwgMjI1LCAyMCwgMSwgMTY3LCAyNDIsIDIzOSwgCi0gICAgMjAsIDEsIDE2NywgMjI3LCAyNTMsIDIyNywgMjU0LCAyMCwgMSwgMTY3LCAyMTksIDEzMCwgMjAsIDEsIDE2NywgMjMxLCAKLSAgICAxNCwgMjAsIDEsIDE2NywgMjMxLCAzNSwgMjAsIDEsIDE2NywgMjMwLCAxMzUsIDIwLCAxLCAxNjcsIDIzNCwgMjU1LCAyMCwgCi0gICAgMSwgMTY3LCAyMjYsIDk0LCAyMzMsIDUzLCAyMCwgMSwgMTY3LCAyMjksIDE1NCwgMjMzLCA1MywgMjAsIDEsIDE2NywgMjI1LCAKLSAgICAxNjEsIDIwLCAxLCAxNjcsIDIzMSwgMjIxLCAyMCwgMSwgMTY3LCAyMjgsIDIxMiwgMjAsIDEsIDE2NywgMjI0LCAxMzcsIAotICAgIDIwLCAxLCAxNjcsIDIxNSwgMTE3LCAyMCwgMSwgMTY3LCAyMzIsIDk5LCAyMCwgMSwgMTY3LCAyMTksIDQzLCAyMCwgMSwgCi0gICAgMTY3LCAyMTYsIDIxNywgMjAsIDEsIDE2NywgMjMxLCAyMTgsIDIwLCAxLCAxNjcsIDIzNCwgMTYyLCAyMCwgMSwgMTY3LCAKLSAgICAyMjksIDE1MCwgMjAsIDEsIDE2NywgMjMzLCAyMDcsIDIwLCAxLCAxNjcsIDIzMCwgMTM2LCAyMCwgMSwgMTY3LCAyMTksIAotICAgIDIyMCwgMjAsIDEsIDE2NywgMjMyLCAxNDQsIDIwLCAxLCAxNjcsIDI0NCwgMTAxLCAyMCwgMSwgMTY3LCAyMjIsIDIwMSwgCi0gICAgMjAsIDEsIDE2NywgMjMzLCAyNDcsIDIwLCAxLCAxNjcsIDIxOSwgMzksIDIwLCAxLCAxNjcsIDIzMSwgMTc4LCAyMjUsIAotICAgIDEwMiwgMjAsIDEsIDE2NywgMjIwLCAxNCwgMjAsIDEsIDE2NywgMjI3LCAyNTIsIDIwLCAxLCAxNjcsIDIxOSwgMjU1LCAKLSAgICAyMjgsIDcsIDIxMCwgMTk2LCAyMCwgMSwgMTY3LCAyMjcsIDE0MiwgMjMwLCAxNTMsIDIwLCAxLCAxNjcsIDIyNiwgODksIAotICAgIDIwLCAxLCAxNjcsIDIyOCwgMTQ0LCAyMCwgMSwgMTY3LCAyMTQsIDE3MCwgMjAsIDEsIDE2NywgMjI5LCA1MywgMjAsIDEsIAotICAgIDE2NywgMjMxLCAyMTcsIDIwLCAxLCAxNjcsIDIyOCwgMTg2LCAyMCwgMSwgMTY3LCAyMzEsIDEyNCwgMjAsIDEsIDE2NywgCi0gICAgMjI3LCAxNTUsIDIwLCAxLCAxNjcsIDIxNiwgMjIxLCAyMCwgMSwgMTY3LCAyMTksIDM2LCAyMCwgMSwgMTY3LCAyMjYsIDkwLCAKLSAgICAyMCwgMSwgMTY3LCAyMjgsIDExLCAyMCwgMSwgMTY3LCAyMzEsIDIyNSwgMjAsIDEsIDE2NywgMjI3LCAxNTIsIDIwLCAxLCAKLSAgICAxNjcsIDIzNCwgMjIyLCAyMCwgMSwgMTY3LCAyMjgsIDE0LCAyMCwgMSwgMTY3LCAyMTMsIDI1MCwgMjAsIDEsIDE2NywgCi0gICAgMjMyLCAxMDMsIDIwLCAxLCAxNjcsIDIyOSwgMTAzLCAyMCwgMSwgMTY3LCAyMjksIDIwMSwgMjAsIDEsIDE2NywgMjMxLCAKLSAgICAxMjMsIDIwLCAxLCAyMjUsIDE0MSwgMjI4LCA5LCAyMCwgMSwgMjI1LCAxNDEsIDIxNSwgMTIwLCAyMzEsIDIyMiwgMjAsIDEsIAotICAgIDIyNSwgMTQxLCAyMTksIDE4NywgMjAsIDEsIDIyNSwgMTQxLCAyMjAsIDEzMCwgMjE1LCAxMTksIDIwLCAxLCAyMjUsIDE0MSwgCi0gICAgMjMyLCAxNDYsIDIyNywgMjQ5LCAyMCwgMSwgMjI1LCAxNDEsIDIzMSwgMTMwLCAyMzEsIDIyNiwgMjAsIDEsIDIyNSwgMTQxLCAKLSAgICAyMzQsIDkzLCAyMCwgMSwgMjI1LCAxNDEsIDIxMSwgMTUsIDIwLCAxLCAyMjUsIDE0MSwgMjMxLCAxMjUsIDIwLCAxLCAyMjUsIAotICAgIDE0MSwgMjM0LCAyNDMsIDIwLCAxLCAyMjUsIDE0MSwgMjI1LCAyMTEsIDIwLCAxLCAyMjUsIDE0MSwgMjExLCA4OSwgMjMzLCAKLSAgICA1MywgMjAsIDEsIDIyNSwgMTQxLCAyMzMsIDEwOSwgMjI4LCA3LCAyMjcsIDE2NCwgMjAsIDEsIDIyNSwgMTQxLCAyMjcsIAotICAgIDI0NywgMjIwLCA0MCwgMjAsIDEsIDIyNSwgMTQxLCAyMjksIDEyMSwgMjI4LCAxODksIDIwLCAxLCAyMjUsIDE0MSwgMjQyLCAKLSAgICAyMzYsIDIwLCAxLCAyMjUsIDE0MSwgMjI1LCA1MiwgMjAsIDEsIDIyNSwgMTQxLCAyMTUsIDEyMCwgMjI4LCA1LCAyMCwgMSwgCi0gICAgMjI1LCAxNDEsIDIyMCwgNDUsIDIyOCwgMTg0LCAyMCwgMSwgMjI1LCAxNDEsIDIyMCwgNDEsIDIwLCAxLCAyMjUsIDE0MSwgCi0gICAgMjMxLCAyMiwgMjE2LCAyMjAsIDIwLCAxLCAyMjUsIDE0MSwgMjMxLCAxMTIsIDIzMSwgMTI2LCAyMCwgMSwgMjI1LCAxNDEsIAotICAgIDIyNywgMTUzLCAyMjcsIDI0OSwgMjAsIDEsIDIyNSwgMTQxLCAyMzQsIDE1MSwgMjAsIDEsIDIyNSwgMTQxLCAyNDIsIDIzNywgCi0gICAgMjAsIDEsIDIyNSwgMTQxLCAyMzQsIDE0NywgMjAsIDEsIDIyNSwgMTQxLCAyMzMsIDEzNSwgMjAsIDEsIDIyNSwgMTQxLCAKLSAgICAyMjUsIDI1MywgMjAsIDEsIDIyNSwgMTQxLCAyMTMsIDE4MiwgMjAsIDEsIDIyNSwgMTQxLCAyMjksIDE4LCAyMzAsIDUxLCAKLSAgICAyMCwgMSwgMjI1LCAxNDEsIDIyOSwgNTIsIDIzMSwgMTA4LCAyMCwgMSwgMjI1LCAxNDEsIDIxMSwgMTkzLCAyMCwgMSwgCi0gICAgMjI1LCAxNDEsIDIyMiwgMTMsIDIwLCAxLCAyMjUsIDE0MSwgMjE3LCA5OCwgMjAsIDEsIDIyNSwgMTQxLCAyMzEsIDM0LCAKLSAgICAyMCwgMSwgMjI1LCAxNDEsIDIyOSwgMzcsIDIwLCAxLCAyMjUsIDE0MSwgMjI5LCAzOCwgMjMzLCA5MCwgMjAsIDEsIDIyNSwgCi0gICAgMTQxLCAyMzEsIDI0LCAyMCwgMSwgMjI1LCAxNDEsIDIxOCwgNTMsIDIwLCAxLCAyMjUsIDE0MSwgMjMxLCAxMTYsIDIwLCAxLCAKLSAgICAyMjUsIDE0MSwgMjMwLCAxMzgsIDIwLCAxLCAyMjUsIDE0MSwgMjI3LCAxNjcsIDIwLCAxLCAyMjUsIDE0MSwgMjI0LCAxNDEsIAotICAgIDIwLCAxLCAyMjUsIDE0MSwgMjMxLCAzMywgMjI5LCA1NCwgMjAsIDEsIDIyNSwgMTQxLCAyNDQsIDEzNCwgMjAsIDEsIDIyNSwgCi0gICAgMTQxLCAyMzEsIDEwMywgMjAsIDEsIDIyNSwgMTQxLCAyNDQsIDE1NSwgMjAsIDEsIDIyNSwgMTQxLCAyMzQsIDE1OSwgMjAsIAotICAgIDEsIDIyNSwgMTQxLCAyMzEsIDI0NCwgMjI4LCAxNzgsIDIwLCAxLCAyMjUsIDE0MSwgMjMxLCAyNDQsIDIyOCwgMTU0LCAyMCwgCi0gICAgMSwgMjI1LCAxNDEsIDIzMywgMTcsIDIwLCAxLCAyMjUsIDE0MSwgMjI5LCA2MCwgMjAsIDEsIDIyNSwgMTQxLCAyMjgsIDE2LCAKLSAgICAyMCwgMSwgMjI1LCAxNDEsIDE4NiwgMjAsIDEsIDIyNSwgMTQxLCAyMzQsIDgwLCAyMCwgMSwgMjI1LCAxNDEsIDIyOSwgNiwgCi0gICAgMjAsIDEsIDEzNywgMjI5LCAxNywgMjMxLCAyMjQsIDIwLCAxLCAxMzcsIDIyNywgMTIxLCAyMCwgMSwgMTM3LCAyMTAsIAotICAgIDE5NiwgMjAsIDEsIDEzNywgMjEyLCA1MywgMjAsIDEsIDEzNywgMjI5LCA1MywgMjAsIDEsIDEzNywgMjI5LCAxNDIsIDIwLCAKLSAgICAxLCAxMzcsIDIyOSwgMjQsIDIwLCAxLCAxMzcsIDI0MiwgMjQ2LCAyMCwgMSwgMTM3LCAyMzEsIDEyMCwgMjAsIDEsIDEzNywgCi0gICAgMjQzLCA4NCwgMjAsIDEsIDEzNywgMjI3LCAxNDQsIDIzMCwgMTc1LCAyMzEsIDM2LCAyMCwgMSwgMTM3LCAyMjcsIDI0NSwgCi0gICAgMjMxLCAxMTEsIDIwLCAxLCAxMzcsIDIzMSwgMTE3LCAyMCwgMSwgMTM3LCAyMjUsIDU4LCAyMCwgMSwgMTM3LCAyMjksIAotICAgIDEyNywgMjAsIDEsIDEzNywgMjMxLCAxMjgsIDI1MSwgMzcsIDIwLCAxLCAxMzcsIDIzNCwgMTQ5LCAyMCwgMSwgMTM3LCAKLSAgICAyNDIsIDI0NywgMjAsIDEsIDEzNywgMjM0LCAxNTYsIDIwLCAxLCAxMzcsIDIxMCwgMjEzLCAyMzAsIDgxLCAyMCwgMSwgCi0gICAgMTM3LCAyMjcsIDExNSwgMjAsIDEsIDEzNywgMjMxLCAxMDUsIDIwLCAxLCAxMzcsIDIyOCwgMTUsIDIwLCAxLCAxMzcsIAotICAgIDIzMSwgMTExLCAyMCwgMSwgMTM3LCAyMTEsIDE2LCAyMCwgMSwgMTM3LCAyMzMsIDI1NSwgMjAsIDEsIDEzNywgMjM1LCAxNiwgCi0gICAgMjAsIDEsIDEzNywgMjIwLCAxMjUsIDIwLCAxLCAxMzcsIDIyOSwgMTM2LCAyMCwgMSwgMTM3LCAyMTcsIDk2LCAyMCwgMSwgCi0gICAgMTM3LCAyMjgsIDE1OCwgMjAsIDEsIDEzNywgMjE2LCA2NywgMjEwLCAxOTgsIDIwLCAxLCAxMzcsIDIxOCwgODAsIDIwLCAxLCAKLSAgICAxMzcsIDIyOSwgNDQsIDIyNywgMTY0LCAyMCwgMSwgMTM3LCAyMTMsIDE4MSwgMjAsIDEsIDEzNywgMjI5LCAyMDQsIDIwLCAKLSAgICAxLCAxMzcsIDIzMSwgMjQ0LCAyMzQsIDE1OCwgMjAsIDEsIDEzNywgMjI3LCAyNTQsIDIwLCAxLCAxMzcsIDIyOSwgMzksIAotICAgIDIwLCAxLCAxMzcsIDIzMywgOTQsIDIwLCAxLCAxMzcsIDIzMSwgMTEzLCAyMCwgMSwgMTM3LCAyMzEsIDEzLCAyMCwgMSwgCi0gICAgMTM3LCAyMjcsIDI0OCwgMjAsIDEsIDEzNywgMjE2LCAyMTYsIDIwLCAxLCAxMzcsIDIyOSwgNDEsIDIwLCAxLCAxMzcsIAotICAgIDI0MywgMjQwLCAyMCwgMSwgMTM3LCAyMjksIDE0MSwgMjAsIDEsIDEzNywgMjI4LCAxNywgMjAsIDEsIDEzNywgMjI4LCAxMywgCi0gICAgMjAsIDEsIDEzNywgMjUxLCAxMTUsIDIwLCAxLCAxMzcsIDIxMywgMTgzLCAyMCwgMSwgMTM3LCAyMzEsIDExOCwgMjAsIDEsIAotICAgIDEzNywgMjIyLCAxNDIsIDIwLCAxLCAxMzcsIDIyOCwgMTg4LCAyMCwgMSwgMTM3LCAyMzMsIDEwOCwgMjAsIDEsIDEzNywgCi0gICAgMjE2LCA2NSwgMjAsIDEsIDEzNywgMjI3LCAyNTUsIDIyOSwgNiwgMjAsIDEsIDEzNywgMjI4LCAxODAsIDIwLCAxLCAxMzcsIAotICAgIDIzNCwgMTYyLCAyMCwgMSwgMTM3LCAyMjksIDQ1LCAyMCwgMSwgMTM3LCAyMzEsIDIxNywgMjAsIDEsIDEzNywgMjMxLCAKLSAgICAxMDYsIDIwLCAxLCAxMzcsIDIzMiwgMTAzLCAyMCwgMSwgMTM3LCAyMzMsIDE5NSwgMjAsIDEsIDEzNywgMjI4LCAxODYsIAotICAgIDIwLCAxLCAxMzcsIDIyOSwgNiwgMjAsIDEsIDEzNywgMjExLCAxODQsIDIwLCAxLCAxMzcsIDIyOSwgNDIsIDIwLCAxLCAKLSAgICAxMzcsIDIyOCwgMiwgMjAsIDEsIDEzNywgMjI3LCAyNTAsIDIwLCAxLCAxMzcsIDIzMywgMjA5LCAyMjgsIDE0NCwgMjAsIDEsIAotICAgIDEzNywgMjI4LCAwLCAyMCwgMSwgMTM3LCAyMjksIDE0OSwgMjAsIDEsIDEzNywgMjMxLCAyNDQsIDIyOCwgNSwgMjAsIDEsIAotICAgIDEzNywgMjExLCAxMDMsIDIwLCAxLCAxMzcsIDIyOSwgMTQ4LCAyMCwgMSwgMTM3LCAyMTksIDIyMiwgMjAsIDEsIDEzNywgCi0gICAgMjIwLCAxMjgsIDIwLCAxLCAxMzcsIDIzMSwgMTE0LCAyMCwgMSwgMTM3LCAyMzEsIDIyNCwgMjAsIDEsIDEzNywgMjMxLCAKLSAgICAxMjQsIDIwLCAxLCAxMzcsIDIzNCwgMTUwLCAyMCwgMSwgMTM3LCAyMzEsIDExNSwgMjAsIDEsIDEzNywgMjM0LCAxNTQsIAotICAgIDIwLCAxLCAxMzcsIDIzMSwgMTI4LCAyMjUsIDEwNiwgMjAsIDEsIDEzNywgMjEwLCAxNzksIDIwLCAxLCAxMzcsIDIyOCwgCi0gICAgMTc2LCAyMCwgMSwgMTM3LCAyMzAsIDIyNSwgMjAsIDEsIDEzNywgMjMwLCAxMDUsIDIwLCAxLCAxMzcsIDIyMCwgMTcsIDIwLCAKLSAgICAxLCAxMzcsIDIzNCwgMTcyLCAyMzMsIDc2LCAyMCwgMSwgMTM3LCAyMzQsIDE3MiwgMjQ0LCAxNjgsIDIwLCAxLCAxMzcsIAotICAgIDIyOSwgNzQsIDIwLCAxLCAxMzcsIDIyOSwgMjAxLCAyMCwgMSwgMTM3LCAyMzIsIDIwNiwgMjAsIDEsIDEzNywgMjI1LCA2OCwgCi0gICAgMjAsIDEsIDEzNywgMjI1LCAyMDIsIDIwLCAxLCAxMzcsIDIxNiwgMjMxLCAyMCwgMSwgMTA3LCAyMzEsIDEwNCwgMjAsIDEsIAotICAgIDEwNywgMjEyLCA1MSwgMjAsIDEsIDEwNywgMjI4LCAxNzQsIDIwLCAxLCAxMDcsIDIzMSwgMjEsIDIwLCAxLCAxMDcsIDIyOCwgCi0gICAgMTcyLCAyMCwgMSwgMTA3LCAyMzIsIDI0MSwgMjAsIDEsIDEwNywgMjI4LCAxNzcsIDIwLCAxLCAxMDcsIDIyOCwgMTIsIDIwLCAKLSAgICAxLCAxMDcsIDIyOSwgNTksIDIwLCAxLCAxMDcsIDIyNywgMTY0LCAyMCwgMSwgMTA3LCAyMTEsIDE5NCwgMjAsIDEsIDEwNywgCi0gICAgMjI5LCAxNCwgMjAsIDEsIDEwNywgMjIwLCA2MywgMjAsIDEsIDEwNywgMjI5LCAyNSwgMjAsIDEsIDEwNywgMjM0LCAxNTcsIAotICAgIDIwLCAxLCAxMDcsIDIxNiwgMjE4LCAyMCwgMSwgMTA3LCAyMjAsIDQzLCAyMCwgMSwgMTA3LCAyMjgsIDE4NSwgMjAsIDEsIAotICAgIDEwNywgMjE4LCA1MywgMjAsIDEsIDEwNywgMjM0LCAxNjIsIDIwLCAxLCAxMDcsIDIxMSwgOTEsIDIwLCAxLCAxMDcsIDIzMywgCi0gICAgMjEwLCAyMCwgMSwgMTA3LCAyMjEsIDIzNiwgMjAsIDEsIDEwNywgMjMxLCAyNiwgMjAsIDEsIDEwNywgMjI5LCAxNDAsIDIwLCAKLSAgICAxLCAxMDcsIDIzMSwgMTkzLCAyMCwgMSwgMTA3LCAyMzEsIDMyLCAyMCwgMSwgMTA3LCAyMjAsIDEyNywgMjAsIDEsIDEwNywgCi0gICAgMjExLCAzOSwgMjAsIDEsIDEwNywgMjI4LCAxNzksIDIwLCAxLCAxMDcsIDIzNCwgMTUzLCAyMzEsIDEwNywgMjAsIDEsIAotICAgIDEwNywgMjI5LCAyMSwgMjAsIDEsIDEwNywgMjE1LCAxMTksIDIwLCAxLCAxMDcsIDI0MiwgMjU1LCAyMCwgMSwgMTA3LCAKLSAgICAyMjksIDExLCAyMCwgMSwgMTA3LCAyNDQsIDEzNSwgMjAsIDEsIDEwNywgMjI5LCAxNDQsIDIwLCAxLCAxMDcsIDIzMSwgNSwgCi0gICAgMjAsIDEsIDEwNywgMjMzLCAxMSwgMjAsIDEsIDEwNywgMjI5LCAxMjYsIDIwLCAxLCAxMDcsIDIzMCwgMTUyLCAyMCwgMSwgCi0gICAgMTA3LCAyMzEsIDksIDIwLCAxLCAxMDcsIDIyNCwgMTIxLCAyMCwgMSwgMTA3LCAyMzEsIDcsIDIwLCAxLCAxMDcsIDIzMSwgCi0gICAgMjMsIDIwLCAxLCAxMDcsIDIzMiwgODksIDIwLCAxLCAxMDcsIDIyOCwgNCwgMjAsIDEsIDEwNywgMjMxLCAxMjcsIDIwLCAxLCAKLSAgICAxMDcsIDIzMywgMTg2LCAyMCwgMSwgMTA3LCAyMjcsIDE1NSwgMjAsIDEsIDEwNywgMjE2LCAyMjEsIDIwLCAxLCAxMDcsIAotICAgIDIxOSwgMzYsIDIwLCAxLCAxMDcsIDIxMCwgMTc5LCAyMCwgMSwgMTA3LCAyMzQsIDE1NCwgMjAsIDEsIDEwNywgMjIzLCAKLSAgICAxNzMsIDIwLCAxLCAxMDcsIDIxNywgMTEsIDIwLCAxLCAxMDcsIDIyOSwgMjIsIDIwLCAxLCAxMDcsIDIzMSwgMjgsIDIwLCAKLSAgICAxLCAxMDcsIDIyOCwgMywgMjAsIDEsIDEwNywgMjM0LCAxNTIsIDIwLCAxLCAxMDcsIDIyNSwgNjIsIDIwLCAxLCAxMDcsIAotICAgIDIyNSwgMTU1LCAyMCwgMSwgMTA3LCAyMjcsIDEzMSwgMjAsIDEsIDEwNywgMjMzLCAxNywgMjAsIDEsIDEwNywgMjI5LCA2MCwgCi0gICAgMjAsIDEsIDEwNywgMjMxLCAyNSwgMjAsIDEsIDEwNywgMjI5LCAzNCwgMjAsIDEsIDEwNywgMjEwLCAxOTMsIDIwLCAxLCAKLSAgICAxMDcsIDIyNiwgMjUsIDIwLCAxLCAxMDcsIDIxMCwgMTkyLCAyMCwgMSwgMTA3LCAyMjksIDE0OSwgMjAsIDEsIDEwNywgCi0gICAgMjI3LCAyNDksIDIwLCAxLCAxMDcsIDIxOCwgODIsIDIwLCAxLCAxMDcsIDIzMywgMjE0LCAyMCwgMSwgMTA3LCAyMjksIDQ5LCAKLSAgICAyMCwgMSwgMTA3LCAyMjksIDE5LCAyMCwgMSwgMTA3LCAyMTUsIDEwMywgMjAsIDEsIDEwNywgMjMxLCAzNiwgMjAsIDEsIAotICAgIDEwNywgMjMzLCAyMDQsIDIwLCAxLCAxMDcsIDIyOCwgMSwgMjAsIDEsIDEwNywgMjE2LCAyMTksIDIwLCAxLCAxMDcsIDIzMSwgCi0gICAgMjE5LCAyMCwgMSwgMTA3LCAyMjksIDU4LCAyMCwgMSwgMTA3LCAyMzMsIDEwLCAyMCwgMSwgMTA3LCAyMjksIDQwLCAyMCwgCi0gICAgMSwgMTA3LCAyMjgsIDYsIDIwLCAxLCAxMDcsIDIyOCwgMTU4LCAyMCwgMSwgMTA3LCAyNDIsIDI0MCwgMjAsIDEsIDEwNywgCi0gICAgMjMzLCAyMjMsIDIwLCAxLCAxMDcsIDIyMywgODcsIDIyNiwgMjEzLCAyMCwgMSwgMTA3LCAyMTcsIDg3LCAyMCwgMSwgMTA3LCAKLSAgICAyMTYsIDExLCAyMCwgMSwgMTA3LCAyMjcsIDE1MiwgMjAsIDEsIDEwNywgMjIyLCAyNDIsIDIwLCAxLCAxMDcsIDIzMywgNTUsIAotICAgIDIwLCAxLCAxMDcsIDIzMSwgODQsIDIwLCAxLCAxMDcsIDE5NCwgMjAsIDEsIDEwNywgMjE4LCA1LCAyMCwgMSwgMTA3LCAKLSAgICAyMzAsIDEwNywgMjAsIDEsIDEwNywgMjIwLCAyOSwgMjAsIDEsIDEwNywgMjIwLCAzOSwgMjAsIDEsIDEwNywgMjMzLCAxNjEsIAotICAgIDIwLCAxLCAxMDcsIDIyNywgMjQyLCAyMCwgMSwgMTA3LCAyMTksIDIyNywgMjAsIDEsIDEwNywgMjI3LCAyNTEsIDIwLCAxLCAKLSAgICAxMDcsIDIyNSwgMjE0LCAyMCwgMSwgMTA3LCAyMjgsIDIzOCwgMjAsIDEsIDEwNywgMjE5LCAyNTQsIDIwLCAxLCAxMDcsIAotICAgIDIyNCwgMTM2LCAyMCwgMSwgMTA3LCAyMzAsIDUxLCAyMCwgMSwgMTA3LCAyMzIsIDEyNSwgMjAsIDEsIDEwNywgMjIzLCA4NywgCi0gICAgMjMwLCAxMDEsIDIwLCAxLCAxMDcsIDIxNiwgMTE4LCAyMCwgMSwgMTA3LCAyMjcsIDI0MywgMjAsIDEsIDEwNywgMjMxLCAKLSAgICAxMjgsIDE5OSwgMjAsIDEsIDEwNywgMjIxLCAyMzQsIDIwLCAxLCAxMDcsIDI0NCwgMjAzLCAyMCwgMSwgODIsIDIyOSwgCi0gICAgMTQ4LCAyMCwgMSwgODIsIDIxNiwgMTcsIDIwLCAxLCA4MiwgMjMxLCAxMTcsIDIwLCAxLCA4MiwgMjMzLCA5NCwgMjAsIDEsIAotICAgIDgyLCAyMTMsIDEyOCwgMjAsIDEsIDgyLCAyMzIsIDEzMSwgMjAsIDEsIDgyLCAyMjYsIDkzLCAyMCwgMSwgODIsIDIxOSwgCi0gICAgNDcsIDIwLCAxLCA4MiwgMjIzLCAxNDgsIDIwLCAxLCA4MiwgMjI4LCA4LCAyMCwgMSwgODIsIDIyOSwgMTE5LCAyMCwgMSwgCi0gICAgODIsIDIyNCwgMTUwLCAyMCwgMSwgODIsIDIxNywgNjMsIDIwLCAxLCA4MiwgMjI5LCAyNywgMjAsIDEsIDgyLCAyMzMsIAotICAgIDI1MSwgMjAsIDEsIDgyLCAyMTEsIDE4NywgMjAsIDEsIDgyLCAyMjEsIDE3MiwgMjAsIDEsIDgyLCAyMjksIDUwLCAyMCwgMSwgCi0gICAgODIsIDIyNiwgOTAsIDIwLCAxLCA4MiwgMjE2LCAxOCwgMjAsIDEsIDgyLCAyMzMsIDIwOCwgMjAsIDEsIDgyLCAyMzIsIAotICAgIDE0NSwgMjAsIDEsIDgyLCAyMjgsIDExLCAyMCwgMSwgODIsIDIyOSwgMywgMjAsIDEsIDgyLCAyMzEsIDIyNSwgMjAsIDEsIAotICAgIDgyLCAyMjksIDIwLCAyMCwgMSwgODIsIDIyOSwgMiwgMjAsIDEsIDgyLCAyMjgsIDEwLCAyMCwgMSwgODIsIDIyMiwgMjQwLCAKLSAgICAyMCwgMSwgODIsIDIyOCwgMTc2LCAyMCwgMSwgODIsIDIyNSwgMjEzLCAyMCwgMSwgODIsIDIyMiwgMzMsIDIwLCAxLCA4MiwgCi0gICAgMjI5LCAzNSwgMjAsIDEsIDgyLCAyMzEsIDE1LCAyMCwgMSwgODIsIDI0MiwgMjM0LCAyMCwgMSwgODIsIDIyOSwgMjMsIDIwLCAKLSAgICAxLCA4MiwgMjI4LCAxODcsIDIwLCAxLCA4MiwgMjMxLCAxNzcsIDIwLCAxLCA4MiwgMjMyLCAxMjcsIDIwLCAxLCA4MiwgCi0gICAgMjI5LCA1NSwgMjAsIDEsIDgyLCAyMjksIDEzMiwgMjAsIDEsIDgyLCAyMTcsIDg2LCAyMjcsIDI0OSwgMjAsIDEsIDgyLCAKLSAgICAyMjAsIDEyOSwgMjAsIDEsIDgyLCAyMjQsIDE0NiwgMjAsIDEsIDgyLCAyMjksIDE1MiwgMjE5LCA1MywgMjAsIDEsIDgyLCAKLSAgICAyMjksIDQzLCAyMjcsIDE2NCwgMjAsIDEsIDgyLCAyMTEsIDQsIDIwLCAxLCA4MiwgMjQyLCAyMzUsIDIwLCAxLCA4MiwgCi0gICAgMjE1LCAxMTgsIDIwLCAxLCA4MiwgMjExLCAxOSwgMjAsIDEsIDgyLCAyMjUsIDE5LCAyMCwgMSwgODIsIDIxNSwgMTA4LCAKLSAgICAyMCwgMSwgODIsIDIzNCwgMTYwLCAyMCwgMSwgODIsIDIxOCwgODEsIDIwLCAxLCA4MiwgMjE2LCAyMjAsIDIwLCAxLCA4MiwgCi0gICAgMjEzLCAxODQsIDIwLCAxLCA4MiwgMjEyLCA2LCAyMCwgMSwgODIsIDIzMywgMTM4LCAyMCwgMSwgODIsIDIyNCwgMTUzLCAKLSAgICAyMCwgMSwgODIsIDIxNywgOTcsIDIwLCAxLCA4MiwgMjQyLCAyNTQsIDIwLCAxLCA4MiwgMjI5LCA2NCwgMjAsIDEsIDgyLCAKLSAgICAyMjAsIDQyLCAyMCwgMSwgODIsIDIzMSwgMTAsIDIwLCAxLCA4MiwgMjMxLCAxMjEsIDIwLCAxLCA4MiwgMjI3LCAxMTksIAotICAgIDIwLCAxLCA4MiwgMjI4LCAxNDEsIDIwLCAxLCA4MiwgMjQzLCA4MCwgMjAsIDEsIDgyLCAyMTUsIDEwOSwgMjAsIDEsIDgyLCAKLSAgICAyMzMsIDIxNywgMjAsIDEsIDgyLCAyMTEsIDY3LCAyMCwgMSwgODIsIDIyNywgMTUzLCAyNTAsIDI0LCAyMCwgMSwgODIsIAotICAgIDIxMCwgMjUwLCAyMCwgMSwgODIsIDIzMSwgMjcsIDIwLCAxLCA4MiwgMjI5LCAxMzcsIDIwLCAxLCA4MiwgMjI1LCAxMDMsIAotICAgIDIwLCAxLCA4MiwgMjEwLCAxOTcsIDIwLCAxLCA4MiwgMjMzLCAxMiwgMjAsIDEsIDgyLCAyNDMsIDI0MCwgMjAsIDEsIDgyLCAKLSAgICAyNDMsIDc5LCAyMCwgMSwgODIsIDIyOSwgMTMsIDIwLCAxLCA4MiwgMjM0LCAxNjIsIDIwLCAxLCA4MiwgMjMxLCAyMjgsIAotICAgIDIwLCAxLCA4MiwgMjI5LCAyNiwgMjAsIDEsIDgyLCAyNDIsIDI0MSwgMjAsIDEsIDgyLCAyNDQsIDIwNCwgMjAsIDEsIDgyLCAKLSAgICAyMjcsIDI0NCwgMjAsIDEsIDgyLCAyMjUsIDE1NiwgMjAsIDEsIDgyLCAyMTEsIDE3LCAyMCwgMSwgODIsIDIyOSwgNTEsIAotICAgIDIwLCAxLCA4MiwgMjI3LCAxNTMsIDI1MiwgMzEsIDIwLCAxLCA4MiwgMjI3LCA5OSwgMjAsIDEsIDgyLCAyMjQsIDI1MCwgCi0gICAgMjAsIDEsIDgyLCAyMzAsIDIyNSwgMjAsIDEsIDgyLCAyNDMsIDIzOCwgMjAsIDEsIDgyLCAyMjksIDIyNSwgMjAsIDEsIDgyLCAKLSAgICAyMzAsIDEwNSwgMjAsIDEsIDgyLCAyNDIsIDI0MCwgMjAsIDEsIDgyLCAyNDMsIDI0MiwgNzQsIDIwLCAxLCA4MiwgMjMwLCAKLSAgICA1MiwgMjAsIDEsIDgyLCAyMjQsIDE0OSwgMjAsIDEsIDgyLCAyMjksIDE1LCAyMCwgMSwgODIsIDIzMywgMTk1LCAyMCwgMSwgCi0gICAgODIsIDIyNSwgMTAwLCAyMCwgMSwgODIsIDIyNywgMjUyLCAyMCwgMSwgODIsIDIxMSwgMTgsIDIwLCAxLCA4MiwgMjI5LCAKLSAgICAzNiwgMjAsIDEsIDgyLCAyMjYsIDk0LCAyMjUsIDE5MCwgMjAsIDEsIDgyLCAyNDMsIDI0MiwgMjUxLCAyMywgMjAsIDEsIAotICAgIDgyLCAyNDQsIDQ1LCAyMCwgMSwgODIsIDIyOCwgMTgxLCAyMCwgMSwgODIsIDYxLCAyMCwgMSwgODIsIDIxNiwgMTEsIDIwLCAKLSAgICAxLCA4MiwgNzgsIDIwLCAxLCA4MiwgNzQsIDIwLCAxLCA4MiwgMjMzLCA5MiwgMjAsIDEsIDgyLCAyMjYsIDk0LCAyMjUsIAotICAgIDI2LCAyMCwgMSwgODIsIDIxNywgMTAyLCAyMCwgMSwgODIsIDIxNywgNTIsIDIwLCAxLCA4MiwgMjI5LCAxNTIsIDIzMCwgCi0gICAgMzksIDI0MCwgMjQxLCAyMCwgMSwgODIsIDIyMCwgMTcsIDIwLCAxLCA4MiwgMjExLCAxNCwgMjAsIDEsIDgyLCAyMjgsIAotICAgIDI1MiwgMjAsIDEsIDgyLCAyMTAsIDIwMiwgMjAsIDEsIDgyLCAyMTAsIDIyNywgMjE3LCAyNDEsIDIwLCAxLCA4MiwgMjEwLCAKLSAgICAyMjcsIDI0OSwgMTU1LCAyMCwgMSwgODIsIDIxMCwgMTg3LCAyMCwgMSwgODIsIDIxMCwgMTk1LCAyMCwgMSwgODIsIDIzNCwgCi0gICAgMTQ4LCAyMCwgMSwgODIsIDIyNSwgMTU0LCAyMCwgMSwgODIsIDIyOCwgMTgyLCAyNDUsIDExMCwgMjAsIDEsIDgyLCAyMjQsIAotICAgIDE0NywgMjAsIDEsIDgyLCAyMTEsIDE5MiwgMjAsIDEsIDgyLCAyNDQsIDE1NSwgMjAsIDEsIDgyLCAyMTMsIDI1MCwgMjAsIAotICAgIDEsIDgyLCAyMzIsIDEwMywgMjAsIDEsIDgyLCAyMzAsIDIzNSwgMjAsIDEsIDgyLCAyMjMsIDU0LCAyMCwgMSwgODIsIDIyMywgCi0gICAgMTc0LCAyMCwgMSwgODIsIDIyOCwgMjUxLCAyMCwgMSwgODIsIDIyOSwgODIsIDIwLCAxLCA4MiwgMjIwLCA5LCAyMCwgMSwgCi0gICAgODIsIDIxOSwgMjU0LCAyMCwgMSwgODIsIDI0MywgMjQyLCAyMjMsIDg5LCAyMCwgMSwgODIsIDE5OCwgMjAsIDEsIDgyLCAKLSAgICAyMjUsIDExMSwgMjAsIDEsIDgyLCAyMzIsIDEyNSwgMjAsIDEsIDgyLCAyMzQsIDM0LCAyMCwgMSwgODIsIDIzMSwgNjMsIAotICAgIDIwLCAxLCA4MiwgMTg2LCAyMCwgMSwgODIsIDIzMSwgMTc0LCAyMCwgMSwgODIsIDIxNiwgMjIyLCAyMCwgMSwgODIsIDIzNCwgCi0gICAgOTgsIDIwLCAxLCA4MiwgMjMwLCAxNTUsIDIwLCAxLCA4MiwgMjE2LCAyNDgsIDIwLCAxLCA4MiwgMjQ0LCAxNzcsIDIwLCAxLCAKLSAgICA4MiwgMjQyLCAyMzAsIDIwLCAxLCAyMjUsIDE0MCwgMTc2LCAyMCwgMSwgMjI1LCAxNDAsIDY5LCAyMCwgMSwgMjI1LCAxNDAsIAotICAgIDIzMywgMjIzLCAyMCwgMSwgMjI1LCAxNDAsIDI0NSwgMjE3LCAyMCwgMSwgMjI1LCAxNDAsIDIyMywgMTExLCAyMCwgMSwgCi0gICAgMjI1LCAxNDAsIDIxNywgODcsIDIwLCAxLCAyMjUsIDE0MCwgMjI3LCAxNTIsIDIwLCAxLCAyMjUsIDE0MCwgMjMzLCAxNDEsIAotICAgIDIwLCAxLCAyMjUsIDE0MCwgMjIyLCAyNDIsIDIwLCAxLCAyMjUsIDE0MCwgMjIzLCAzMiwgMjAsIDEsIDIyNSwgMTQwLCAKLSAgICAyMzEsIDg0LCAyMCwgMSwgMjI1LCAxNDAsIDIxNywgMTAyLCAyMCwgMSwgMjI1LCAxNDAsIDIyOSwgMTUxLCAyMCwgMSwgCi0gICAgMjI1LCAxNDAsIDIyOCwgMTg4LCAyMCwgMSwgMjI1LCAxNDAsIDE5NCwgMjAsIDEsIDIyNSwgMTQwLCAyMTgsIDUsIDIwLCAxLCAKLSAgICAyMjUsIDE0MCwgMjIwLCAyOSwgMjAsIDEsIDIyNSwgMTQwLCAyMTksIDE5MywgMjAsIDEsIDIyNSwgMTQwLCAyMjAsIDEyNSwgCi0gICAgMjAsIDEsIDIyNSwgMTQwLCAyMzMsIDE2MSwgMjAsIDEsIDIyNSwgMTQwLCAyMzQsIDE2MiwgMjAsIDEsIDIyNSwgMTQwLCAKLSAgICAyMjcsIDIxMywgMjAsIDEsIDIyNSwgMTQwLCAyMjcsIDI0MiwgMjAsIDEsIDIyNSwgMTQwLCAyMjgsIDE1OSwgMjAsIDEsIAotICAgIDIyNSwgMTQwLCAyMTAsIDIyNiwgMjAsIDEsIDIyNSwgMTQwLCAyMTksIDIyNywgMjAsIDEsIDIyNSwgMTQwLCAxOTIsIDIwLCAKLSAgICAxLCAyMjUsIDE0MCwgMjI4LCAxNCwgMjAsIDEsIDIyNSwgMTQwLCAyMjUsIDE1NCwgMjAsIDEsIDIyNSwgMTQwLCAyMjcsIAotICAgIDI1MSwgMjAsIDEsIDIyNSwgMTQwLCAyMTEsIDE5MiwgMjAsIDEsIDIyNSwgMTQwLCAyMjUsIDIxNCwgMjAsIDEsIDIyNSwgCi0gICAgMTQwLCAyMjIsIDE0MiwgMjAsIDEsIDIyNSwgMTQwLCAyMjgsIDIzOCwgMjAsIDEsIDIyNSwgMTQwLCAyMjMsIDU0LCAyMCwgCi0gICAgMSwgMjI1LCAxNDAsIDIzNCwgMTcxLCAyMCwgMSwgMjI1LCAxNDAsIDIyOSwgMTIsIDIwLCAxLCAyMjUsIDE0MCwgMjI5LCAKLSAgICA2MSwgMjAsIDEsIDIyNSwgMTQwLCAyMjAsIDksIDIwLCAxLCAyMjUsIDE0MCwgMjI0LCAxNTAsIDIwLCAxLCAyMjUsIDE0MCwgCi0gICAgMjQ0LCA0NSwgMjAsIDEsIDIyNSwgMTQwLCAyMTIsIDY1LCAyMCwgMSwgMjI1LCAxNDAsIDIzMiwgMjQ3LCAyMCwgMSwgMjI1LCAKLSAgICAxNDAsIDIzMiwgMTI1LCAyMCwgMSwgMjI1LCAxNDAsIDIzNCwgMzQsIDIwLCAxLCAyMjUsIDE0MCwgMjMxLCAxMTksIDIwLCAKLSAgICAxLCAyMjUsIDE0MCwgMjIzLCA4NiwgMjAsIDEsIDIyNSwgMTQwLCAxODYsIDIwLCAxLCAyMjUsIDE0MCwgMjMwLCAxNjYsIAotICAgIDIwLCAxLCAyMjUsIDE0MCwgMjMxLCAxMjcsIDIwLCAxLCAyMjUsIDE0MCwgMjE2LCAyMzEsIDIwLCAxLCAyMjUsIDE0MCwgCi0gICAgMjM0LCAxLCAyMCwgMSwgMjI1LCAxNDAsIDIyMSwgMjUzLCAyMCwgMSwgMjI1LCAxNDAsIDIxMiwgMTE1LCA5NSwgMSwgMTkxLCAKLSAgICA5NSwgMSwgMjUyLCAxOTksIDk1LCAxLCA4LCAxOTEsIDk1LCAxLCAyMjUsIDQ1LCA5NSwgMSwgMTg2LCA5NSwgMSwgMjMwLCAKLSAgICAyMzgsIDk1LCAxLCAyNTQsIDMxLCAxODYsIDk1LCAxLCAyNDQsIDIwNCwgOTUsIDEsIDIxNCwgMjcsIDk1LCAxLCAyMTMsIAotICAgIDE3NywgOTUsIDEsIDIxNywgMTA2LCA5NSwgMSwgMjQ4LCAyMjksIDk1LCAxLCA4LCAyMTUsIDE1NywgOTUsIDEsIDgsIDIxNywgCi0gICAgMTA2LCA5NSwgMSwgMjE1LCAxNTcsIDk1LCAxLCAyNDgsIDE0MywgOTUsIDEsIDE5OCwgOTUsIDEsIDIyOCwgMjQyLCA5NSwgCi0gICAgMSwgOCwgMjI4LCAxMTUsIDk1LCAxLCAyNTQsIDMxLCAxOTgsIDk1LCAxLCAyMjgsIDExNSwgOTUsIDEsIDIyOCwgMTAxLCAKLSAgICA5NSwgMSwgMjMzLCAxNDEsIDk1LCAxLCAyMzIsIDY2LCA5NSwgMSwgMjMzLCA0LCA5NSwgMSwgMjMyLCAyNDksIDk1LCAxLCAKLSAgICAyMTYsIDU3LCA5NSwgMSwgMjQ3LCAxNjEsIDk1LCAxLCAyMTYsIDQ5LCA5NSwgMSwgMjQ3LCAxNjAsIDk1LCAxLCAxNzYsIAotICAgIDk1LCAxLCAyNDMsIDE0MiwgOTUsIDEsIDgsIDE3NiwgOTUsIDEsIDIyNCwgOTEsIDk1LCAxLCAyMjQsIDY5LCA5NSwgMSwgCi0gICAgMjI5LCA4MiwgOTUsIDEsIDIyOSwgMzMsIDk1LCAxLCAyNTQsIDMxLCAyMjksIDgyLCA5NSwgMSwgMTYyLCA5NSwgMSwgMjExLCAKLSAgICAxNjUsIDk1LCAxLCAyNDMsIDAsIDk1LCAxLCAyNDIsIDIzMywgOTUsIDEsIDIxNSwgMTY2LCA5NSwgMSwgMjQ2LCAzNCwgOTUsIAotICAgIDEsIDIyNywgMTY5LCA5NSwgMSwgMjI3LCAxNTQsIDk1LCAxLCAyMTUsIDE3NiwgOTUsIDEsIDI0NiwgNDEsIDk1LCAxLCA4LCAKLSAgICAyMTUsIDE3NiwgOTUsIDEsIDgsIDI0NiwgNDEsIDk1LCAxLCAyMjMsIDEwOSwgMjE1LCAxNzYsIDk1LCAxLCAyMjAsIDEwNCwgCi0gICAgOTUsIDEsIDIxOCwgMjI1LCA5NSwgMSwgMjEwLCA4MiwgOTUsIDEsIDIxMCwgMTQsIDk1LCAxLCAyMTUsIDE4NCwgOTUsIDEsIAotICAgIDI0NiwgNDYsIDk1LCAxLCA4LCAyMTUsIDE4NCwgOTUsIDEsIDIwNiwgOTUsIDEsIDIxMCwgMTE2LCA5NSwgMSwgMjEwLCAxNSwgCi0gICAgOTUsIDEsIDIwOSwgMjQzLCA5NSwgMSwgMjA5LCAyMjMsIDk1LCAxLCAyNTQsIDMxLCAyMDksIDI0MywgOTUsIDEsIDIwOSwgCi0gICAgMjE1LCA5NSwgMSwgMjA5LCAyMjIsIDk1LCAxLCAyMTIsIDY1LCA5NSwgMSwgMjU0LCAyMTgsIDk1LCAxLCAyNDEsIDE5NiwgCi0gICAgOTUsIDEsIDIyOSwgMTk3LCA5NSwgNSwgMjUzLCAyMzAsIDk1LCA1LCAyMjMsIDEwOSwgMjEzLCAxMzMsIDk1LCA1LCAyMjMsIAotICAgIDEwOSwgMjUzLCAyMzAsIDk1LCAyNSwgNSwgNjEsIDk1LCAyNSwgNSwgMjU1LCA4MiwgOTUsIDI1LCA1LCAyNTQsIDIxNCwgCi0gICAgOTUsIDI1LCA1LCAyNTQsIDEzMSwgOTUsIDI1LCA1LCAyNTQsIDEyMywgOTUsIDI1LCA1LCA3OCwgOTUsIDI1LCA1LCAyMjYsIAotICAgIDE4NywgOTUsIDI1LCA1LCAyMTEsIDIyNywgOTUsIDI1LCA1LCAyMTIsIDk4LCA5NSwgMjUsIDUsIDc2LCA5NSwgMjUsIDUsIAotICAgIDI0NSwgMTU4LCA5NSwgMjUsIDUsIDI0NSwgMTQ2LCA5NSwgMjUsIDUsIDIyNiwgMjM2LCA5NSwgMjUsIDUsIDc0LCA5NSwgCi0gICAgMjUsIDUsIDI0MCwgMTI2LCA5NSwgMjUsIDUsIDI0MCwgMTI1LCA5NSwgMjUsIDUsIDI0MCwgMTI0LCA5NSwgMjUsIDUsIAotICAgIDIzNSwgMTk2LCA5NSwgMjUsIDUsIDIzNiwgNjcsIDk1LCAyNSwgNSwgMjM2LCA0MCwgOTUsIDI1LCA1LCAyMzUsIDE2MiwgCi0gICAgOTUsIDI1LCA1LCAyMzUsIDIzOCwgOTUsIDI1LCA1LCA2OSwgOTUsIDI1LCA1LCAyMTQsIDIyOSwgOTUsIDI1LCA1LCAyMTQsIAotICAgIDIyOCwgOTUsIDI1LCA1LCAyMTQsIDIyNywgOTUsIDI1LCA1LCAyMTQsIDExOCwgOTUsIDI1LCA1LCAyMTQsIDIxMSwgOTUsIAotICAgIDI1LCA1LCAyMTQsIDE3OCwgOTUsIDI1LCA1LCAyMTEsIDExNywgOTUsIDI1LCA1LCAyMTEsIDgsIDk1LCAyNSwgNSwgMjU0LCAKLSAgICAyNTIsIDk1LCAyNSwgNSwgMjU0LCAyNDgsIDk1LCAyNSwgNSwgMjQ1LCA5NCwgOTUsIDI1LCA1LCAyMjIsIDE4NSwgMjQ1LCAKLSAgICA5NCwgOTUsIDI1LCA1LCAyNDUsIDEwMCwgOTUsIDI1LCA1LCAyMjIsIDE4NSwgMjQ1LCAxMDAsIDk1LCAyNSwgNSwgMjU0LCAKLSAgICAyMTAsIDk1LCAyNSwgNSwgMjQ1LCAyMDMsIDk1LCAyNSwgNSwgMjUzLCAyMDAsIDk1LCAyNSwgNSwgMjI2LCAxMzgsIDk1LCAKLSAgICAyNSwgNSwgMjMwLCAzMCwgOTUsIDI1LCA1LCAyMjksIDg0LCA5NSwgMTM4LCAyMjIsIDI1NCwgOTUsIDEzOCwgMjE2LCAxNSwgCi0gICAgMjIyLCAyNTQsIDk1LCAxMzgsIDQ4LCA5NSwgMTM4LCA1MSwgOTUsIDEsIDIxNiwgMjksIDk1LCAxLCAyMTYsIDI4LCA5NSwgCi0gICAgMSwgMjE2LCAyNywgOTUsIDEsIDIxNiwgMjYsIDk1LCAxLCAyMTYsIDI1LCA5NSwgMSwgMjE2LCAyNCwgOTUsIDEsIDIxNiwgCi0gICAgMjMsIDk1LCAxLCAyMjMsIDEwOSwgMjE2LCAzMCwgOTUsIDEsIDIyMywgMTA5LCAyMTYsIDI5LCA5NSwgMSwgMjIzLCAxMDksIAotICAgIDIxNiwgMjcsIDk1LCAxLCAyMjMsIDEwOSwgMjE2LCAyNiwgOTUsIDEsIDIyMywgMTA5LCAyMTYsIDI1LCA5NSwgMSwgMjIzLCAKLSAgICAxMDksIDIxNiwgMjMsIDU2LCAxLCAyNTQsIDMxLCA3NiwgMTQxLCAxLCAyNTQsIDMxLCAyMTEsIDQ3LCA0OSwgMjgsIDE2LCAKLSAgICAyMjQsIDE1NywgNDksIDI4LCAxNiwgMjQ4LCAxNjYsIDQ5LCAyOCwgMTYsIDIyNSwgMTc4LCA0OSwgMjgsIDE2LCAyMjYsIAotICAgIDExNywgMjQ1LCAxODYsIDQ5LCAyOCwgMTYsIDIyNiwgMTE3LCAyNDcsIDIwOSwgNDksIDI4LCAxNiwgMjE0LCAxNiwgMjQ1LCAKLSAgICAxODYsIDQ5LCAyOCwgMTYsIDIxNCwgMTYsIDI0NywgMjA5LCA0OSwgMjgsIDE2LCAyMzQsIDIwMywgNDksIDI4LCAxNiwgCi0gICAgMjE3LCAxNzAsIDQ5LCAyOCwgMTYsIDIyNiwgMTMsIDQ5LCAyOCwgMTYsIDIxMCwgMjE3LCA0OSwgMjgsIDE2LCAyMTAsIAotICAgIDIxOCwgMjQ3LCAyMDksIDQ5LCAyOCwgMTYsIDIzMywgMjQwLCA0OSwgMjgsIDE2LCAyNTQsIDc2LCAyNDUsIDE4NiwgNDksIAotICAgIDI4LCAxNiwgMjQ1LCAzNCwgMjQ1LCAxODYsIDQ5LCAyOCwgMTYsIDIxNywgMywgNDksIDI4LCAxNiwgMjM0LCAxNjcsIDQ5LCAKLSAgICAyOCwgMTYsIDI1NCwgNjYsIDQ5LCAyOCwgMTYsIDI1NCwgNjcsIDI0NywgMjA5LCA0OSwgMjgsIDE2LCAyMTcsIDE3NiwgNDksIAotICAgIDI4LCAxNiwgMjE2LCAxNjAsIDQ5LCAyOCwgMTYsIDIyNiwgMjEwLCAyNTQsIDI5LCA0OSwgMjgsIDE2LCAyNDIsIDE2NiwgCi0gICAgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjI0LCAxNTYsIDQ5LCAyOCwgMTYsIDI1MCwgMTU3LCA0OSwgMjgsIDE2LCAyMTQsIDYsIAotICAgIDQ5LCAyOCwgMTYsIDIzNSwgMTcwLCAyNTQsIDI5LCA0OSwgMjgsIDE2LCAyMzQsIDE2OSwgMjU0LCAyOSwgNDksIDI4LCAxNiwgCi0gICAgMjM0LCAxNjgsIDI1NCwgMjksIDQ5LCAyOCwgMTYsIDIyMSwgMjE1LCA0OSwgMjgsIDE2LCAyMjYsIDQsIDQ5LCAyOCwgMTYsIAotICAgIDIxOCwgMTQ4LCAyNTQsIDY5LCA0OSwgMjgsIDE2LCAyMjYsIDExNiwgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjE0LCAxNSwgCi0gICAgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjU0LCA3MCwgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjU0LCA2NCwgNDksIDI4LCAxNiwgCi0gICAgMjM0LCA0MywgNDksIDI4LCAxNiwgMjIzLCA0OSwgNDksIDI4LCAxNiwgMjI1LCAxMDksIDI1NCwgMjksIDQ5LCAyOCwgMTYsIAotICAgIDIxNiwgODQsIDQ5LCAyOCwgMTYsIDI1NCwgMTI5LCA0OSwgMjgsIDE2LCAyMjEsIDE2MSwgNDksIDI4LCAxNiwgMjE3LCAKLSAgICAxNzksIDI1NCwgMjksIDQ5LCAyOCwgMTYsIDIxNywgMTc5LCAyMzEsIDQ1LCAyMTgsIDE0NiwgNDksIDI4LCAxNiwgMjI2LCAKLSAgICAxMTEsIDI1NCwgMjksIDQ5LCAyOCwgMTYsIDIxNiwgMTkxLCA0OSwgMjgsIDE2LCAyMzMsIDMzLCA0OSwgMjgsIDE2LCAyNDYsIAotICAgIDQ5LCA0OSwgMjgsIDE2LCAyMTUsIDIyOCwgNDksIDI4LCAxNiwgMjE2LCAyMzMsIDQ5LCAyOCwgMTYsIDIzMywgMjQzLCA0OSwgCi0gICAgMjgsIDE2LCAyNTQsIDc2LCAyNDUsIDM0LCAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDI1NCwgMjksIDQ5LCAKLSAgICAyOCwgMTYsIDIzNiwgMTksIDQ5LCAyOCwgMTYsIDIxNSwgMjAwLCAyNTQsIDI5LCA0OSwgMjgsIDE2LCAyMzQsIDIwNiwgCi0gICAgMjE1LCAxOTksIDQ5LCAyOCwgMTYsIDIyNSwgMjAzLCA0OSwgMjgsIDE2LCAyMjQsIDE2MSwgNDksIDI4LCAxNiwgMjM0LCAKLSAgICAxNywgNDksIDI4LCAxNiwgMjUwLCA4OCwgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjIzLCAxNDksIDQ5LCAyOCwgMTYsIDIyNiwgCi0gICAgMTYsIDI1NCwgMjksIDQ5LCAyOCwgMTYsIDIyNiwgMTQsIDI1NCwgMjksIDQ5LCAyOCwgMTYsIDI0MCwgMTE2LCA0OSwgMjgsIAotICAgIDE2LCAyMjksIDIwOCwgNDksIDI4LCAxNiwgMjI1LCAxNTksIDQ5LCAyOCwgMTYsIDIzNCwgMTgsIDI1NCwgMTU4LCA0OSwgCi0gICAgMjgsIDE2LCAyMTUsIDIwMCwgMjU0LCAxNTgsIDQ5LCAyOCwgMTYsIDIxOCwgMTI1LCA0OSwgMjgsIDE2LCAyNDIsIDEzMCwgCi0gICAgNDksIDI4LCAxNiwgMjM1LCAxNzAsIDIyOSwgMTAwLCA0OSwgMjgsIDE2LCAyMjYsIDIxMCwgMjI5LCAxMDAsIDQ5LCAyOCwgCi0gICAgMTYsIDIyNiwgMTE3LCAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjI1LCAxNTgsIDQ5LCAyOCwgMTYsIDIzNCwgNCwgNDksIDI4LCAKLSAgICAxNiwgMjI1LCAxNTcsIDQ5LCAyOCwgMTYsIDIzMywgMjQyLCA0OSwgMjgsIDE2LCAyMjUsIDIwNCwgMjI5LCAxMDAsIDQ5LCAKLSAgICAyOCwgMTYsIDIzNCwgMTY4LCAyMjksIDEwMSwgMjU0LCAxMDQsIDQ5LCAyOCwgMTYsIDIzNCwgMTY5LCAyMjksIDEwMSwgCi0gICAgMjU0LCAxMDQsIDQ5LCAyOCwgMTYsIDIxMCwgMjE1LCA0OSwgMjgsIDE2LCAyNTQsIDY3LCAyMjksIDEwMCwgNDksIDI4LCAKLSAgICAxNiwgMjU0LCA2OCwgMjE3LCAxNzcsIDIyOSwgMTAwLCA0OSwgMjgsIDE2LCAyMTAsIDIxNiwgNDksIDI4LCAxNiwgMjMzLCAKLSAgICAyNDEsIDQ5LCAyOCwgMTYsIDI0NSwgMTgxLCA0OSwgMjgsIDE2LCAyNTAsIDE1OCwgNDksIDI4LCAxNiwgMjMwLCAyMDMsIAotICAgIDIzNSwgMTY5LCA0OSwgMjgsIDE2LCAyMTQsIDE2LCAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjI1LCAxMDksIDIyOSwgMTAwLCAKLSAgICA0OSwgMjgsIDE2LCAyMjQsIDE2MiwgMjI5LCAxMDAsIDQ5LCAyOCwgMTYsIDIyNiwgMjA3LCA0OSwgMjgsIDE2LCAyNTQsIAotICAgIDkyLCA0OSwgMjgsIDE2LCAyMzIsIDYzLCA0OSwgMjgsIDE2LCAyMjYsIDE0LCAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjI2LCAKLSAgICAxNiwgMjI5LCAxMDAsIDQ5LCAyOCwgMTYsIDI0NSwgNjgsIDIyNiwgMTUsIDQ5LCAyOCwgMTYsIDIzMywgMTU5LCA0OSwgMjgsIAotICAgIDE2LCAyNTQsIDkzLCA0OSwgMjgsIDE2LCAyMTUsIDIwMCwgMjI5LCAxMDAsIDQ5LCAyOCwgMTYsIDI0NSwgMTg0LCA0OSwgCi0gICAgMjgsIDE2LCAyMTcsIDE3OSwgMjI5LCAxMDAsIDQ5LCAyOCwgMTYsIDIxNywgMTcxLCA0OSwgMjgsIDE2LCAyNTAsIDg4LCAKLSAgICAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjQ1LCAxMTQsIDQ5LCAyOCwgMTYsIDIyMSwgMTYyLCAyMjksIDEwMCwgNDksIDI4LCAKLSAgICAxNiwgMjExLCAxNTEsIDIzNCwgNDMsIDQ5LCAyOCwgMTYsIDIxNSwgMTk3LCA0OSwgMjgsIDE2LCAyMjQsIDE2MywgNDksIAotICAgIDI4LCAxNiwgMjE1LCAyMDEsIDQ5LCAyOCwgMTYsIDIxNSwgMTk4LCA0OSwgMjgsIDE2LCAyMjQsIDE2MCwgNDksIDI4LCAxNiwgCi0gICAgMjE1LCAxOTYsIDQ5LCAyOCwgMTYsIDIyNCwgMTU5LCA0OSwgMjgsIDE2LCAyNDIsIDE2NSwgNDksIDI4LCAxNiwgMjU0LCAKLSAgICAyMiwgNDksIDI4LCAxNiwgMjQ1LCA2OCwgMjU0LCAyMiwgNDksIDI4LCAxNiwgMjI2LCAxMTEsIDIyOSwgMTAwLCA0OSwgMjgsIAotICAgIDE2LCAyMTYsIDE5MCwgMjQ1LCA3NywgNDksIDI4LCAxNiwgMjE2LCAxOTAsIDI0NSwgMzMsIDQ5LCAyOCwgMTYsIDIxNiwgCi0gICAgMTkyLCAyNTQsIDcxLCA0OSwgMjgsIDE2LCAyMTYsIDE4NSwgMjM0LCAyNTMsIDI1NCwgNjMsIDQ5LCAyOCwgMTYsIDIzNCwgCi0gICAgMjA1LCA0OSwgMjgsIDE2LCAyNDUsIDE0NywgNDksIDI4LCAxNiwgMjExLCAxMSwgMjM0LCAyMDIsIDQ5LCAyOCwgMTYsIAotICAgIDIxMSwgMTEsIDI1NCwgMTA0LCA0OSwgMjgsIDE2LCAyMTgsIDE0NywgNDksIDI4LCAxNiwgMjM0LCA0NCwgMjU0LCAxMDQsIAotICAgIDQ5LCAyOCwgMTYsIDI0NywgMjEwLCAyNTQsIDI5LCA0OSwgMjgsIDE2LCAyMzMsIDI0NCwgMjU0LCAyOSwgNDksIDI4LCAxNiwgCi0gICAgMjMzLCAyNDQsIDI1NCwgMTU4LCA0OSwgMjgsIDE2LCAyMzMsIDI0NCwgMjI5LCAxMDAsIDQ5LCAyOCwgMTYsIDI1NCwgNzAsIAotICAgIDIyOSwgMTAwLCA0OSwgMjgsIDE2LCAyNTQsIDcyLCA0OSwgMjgsIDE2LCAyNDcsIDIwOSwgNDksIDI4LCAxNiwgMjE1LCAKLSAgICAyMTEsIDQ5LCAyOCwgMTYsIDIxNiwgMjI1LCA0OSwgMjgsIDE2LCAyMzQsIDgsIDQ5LCAyOCwgMTYsIDIzMywgMzgsIDI0NSwgCi0gICAgMTQyLCAyNTAsIDc5LCA0OSwgMjgsIDE2LCAyMzMsIDM4LCAyNDYsIDUwLCAyNTAsIDgwLCA0OSwgMjgsIDE2LCAyMzMsIDM4LCAKLSAgICAyMTUsIDIxMywgMjUwLCA4MCwgNDksIDI4LCAxNiwgMjMzLCAzOCwgMjE2LCAyMzUsIDI1MCwgODAsIDQ5LCAyOCwgMTYsIAotICAgIDIzMywgMzgsIDIzNiwgMTQsIDI1MCwgNzksIDQ5LCAyOCwgMTYsIDI0MiwgMTY2LCAyMjksIDEwMSwgMjU0LCAxMDQsIDQ5LCAKLSAgICAyOCwgMTYsIDI0MiwgMTY2LCAyMjYsIDUsIDI1NCwgMTgsIDQ5LCAyOCwgMTYsIDI0MiwgMTY2LCAyMjYsIDUsIDI0OCwgMzcsIAotICAgIDQ5LCAyOCwgMTYsIDI0NywgMjMzLCA0OSwgMjgsIDE2LCAyNDcsIDIzNCwgMjI2LCA1LCAyNTQsIDE5LCAyMzQsIDIwMiwgCi0gICAgNDksIDI4LCAxNiwgMjQ3LCAyMzQsIDIyNiwgNSwgMjU0LCAxOSwgMjU0LCAxMDQsIDQ5LCAyOCwgMTYsIDI0NywgMjM0LCAKLSAgICAyMjYsIDUsIDI0OCwgMzcsIDQ5LCAyOCwgMTYsIDIxNSwgMjE3LCA0OSwgMjgsIDE2LCAyNTQsIDIzLCA0OSwgMjgsIDE2LCAKLSAgICAyMzYsIDIxLCA0OSwgMjgsIDE2LCAyNDcsIDI1NCwgNDksIDI4LCAxNiwgMjU0LCAyMjAsIDIyNSwgMywgMjU0LCAyNCwgNDksIAotICAgIDI4LCAxNiwgMjU0LCAyMjAsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDI1NCwgMjIwLCAyNTQsIDI0LCA0OSwgMjgsIDE2LCAKLSAgICAyNTQsIDIyMCwgMjMxLCAzOSwgNDksIDI4LCAxNiwgMjU0LCAyMjAsIDIzMSwgNTAsIDQ5LCAyOCwgMTYsIDI1NCwgMjIwLCAKLSAgICAyNDIsIDE2NywgNDksIDI4LCAxNiwgMjU0LCAyMjAsIDI0MiwgMTY0LCA0OSwgMjgsIDE2LCAyNTQsIDIyMCwgMjI1LCAzLCAKLSAgICAyNDIsIDE2NywgNDksIDI4LCAxNiwgMjMxLCAxNTYsIDIyNCwgMTY4LCAyNDAsIDExNCwgNDksIDI4LCAxNiwgMjMxLCAxNTYsIAotICAgIDI1NCwgMTYwLCAyMjQsIDE2OCwgMjQwLCAxMTQsIDQ5LCAyOCwgMTYsIDIzMSwgMTU2LCAyNDgsIDM2LCAyNDAsIDExNCwgCi0gICAgNDksIDI4LCAxNiwgMjMxLCAxNTYsIDI1NCwgMTYwLCAyNDgsIDM2LCAyNDAsIDExNCwgNDksIDI4LCAxNiwgMjMxLCAxNTYsIAotICAgIDIxNSwgMjA2LCAyNDAsIDExNCwgNDksIDI4LCAxNiwgMjMxLCAxNTYsIDIxNSwgMjE4LCA0OSwgMjgsIDE2LCAyMzEsIDE1NiwgCi0gICAgMjE2LCAyMjksIDI0MCwgMTE0LCA0OSwgMjgsIDE2LCAyMzEsIDE1NiwgMjE2LCAyMjksIDIzMywgNDEsIDI0MCwgMTE0LCAKLSAgICA0OSwgMjgsIDE2LCAyMzEsIDE1NiwgMjMzLCA0MSwgMjQwLCAxMTQsIDQ5LCAyOCwgMTYsIDIzMSwgMTU2LCAyMjUsIDQyLCAKLSAgICAyNDAsIDExNCwgNDksIDI4LCAxNiwgMjM1LCAxNzYsIDIxNiwgMjUyLCAyNDAsIDExNSwgNDksIDI4LCAxNiwgMjU0LCA2OCwgCi0gICAgMjE2LCAyNTIsIDI0MCwgMTE1LCA0OSwgMjgsIDE2LCAyNDQsIDE4MCwgMjE2LCAyMjYsIDQ5LCAyOCwgMTYsIDI0NCwgMTgwLCAKLSAgICAyMzAsIDE0OCwgNDksIDI4LCAxNiwgMjQ0LCAxODAsIDI0NywgMjM4LCA0OSwgMjgsIDE2LCAyMzEsIDE1NiwgMjE0LCAxMCwgCi0gICAgMjQwLCAxMTQsIDQ5LCAyOCwgMTYsIDIzMSwgMTU2LCAyMjQsIDE2NywgMjQwLCAxMTQsIDQ5LCAyOCwgMTYsIDIzMSwgMTU2LCAKLSAgICAyMjUsIDQyLCAyMTYsIDIyOSwgMjQwLCAxMTQsIDQ5LCAyOCwgMTYsIDI0MiwgMTYyLCAyMzAsIDMxLCAyNTQsIDcxLCA0OSwgCi0gICAgMjgsIDE2LCAyNDIsIDE2MiwgMjMwLCAzMSwgMjQ3LCAyMDgsIDQ5LCAyOCwgMTYsIDI0NSwgMTU2LCAyMzQsIDI1MywgMjQzLCAKLSAgICAyNDMsIDIxMywgMTI0LCA0OSwgMjgsIDE2LCAyMzYsIDIwLCA0OSwgMjgsIDE2LCAyMzYsIDE4LCA0OSwgMjgsIDE2LCAyNDMsIAotICAgIDI0MywgMjU0LCAzMCwgMjQ4LCAzNSwgMjQwLCAxMTMsIDQ5LCAyOCwgMTYsIDI0MywgMjQzLCAyNDcsIDI1MiwgMTkxLCA0OSwgCi0gICAgMjgsIDE2LCAyNDMsIDI0MywgMjQ3LCAyNTIsIDIyOSwgMjA4LCA0OSwgMjgsIDE2LCAyNDMsIDI0MywgMjI5LCAyMDMsIAotICAgIDI0MCwgMTE0LCA0OSwgMjgsIDE2LCAyNDMsIDI0MywgMjQ3LCAyNTIsIDI0OCwgMTEsIDQ5LCAyOCwgMTYsIDI0MywgMjQzLCAKLSAgICAyMTksIDEwNCwgMjQ3LCAyNTEsIDI0OCwgMTEsIDQ5LCAyOCwgMTYsIDI0MywgMjQzLCAyNDcsIDI1MiwgMjM0LCAxODgsIAotICAgIDQ5LCAyOCwgMTYsIDI0MywgMjQzLCAyNDcsIDI1MiwgMjEwLCAyMywgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDI0NywgMjUyLCAKLSAgICAyMjgsIDIzOSwgMjM0LCAyMDIsIDQ5LCAyOCwgMTYsIDI0MywgMjQzLCAyNDcsIDI1MiwgMjI4LCAyMzksIDI1NCwgMTA0LCAKLSAgICA0OSwgMjgsIDE2LCAyNDMsIDI0MywgMjMxLCAxOTYsIDI1MCwgODEsIDI0NywgMjM4LCA0OSwgMjgsIDE2LCAyNDMsIDI0MywgCi0gICAgMjMxLCAxOTYsIDI1MCwgODEsIDIzMCwgMTQ4LCA0OSwgMjgsIDE2LCAyNDQsIDEzMCwgMjE5LCAxMDQsIDI1MCwgODEsIAotICAgIDIxNCwgOSwgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDIxOSwgMTA0LCAyNTAsIDgxLCAyMTcsIDE4MCwgNDksIDI4LCAxNiwgCi0gICAgMjQzLCAyNDMsIDIyOSwgMTAyLCA0OSwgMjgsIDE2LCAyNTAsIDgyLCAyMDksIDI0OSwgNDksIDI4LCAxNiwgMjUwLCA4MiwgCi0gICAgMjM0LCA0MiwgNDksIDI4LCAxNiwgMjUwLCA4MiwgMjE5LCAxMSwgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDI0MCwgMTYxLCAKLSAgICAyMTEsIDEwLCAyMTYsIDIzMCwgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDI0NSwgMTU3LCAyNTQsIDk0LCA0OSwgMjgsIDE2LCAKLSAgICAyMTEsIDEwLCAyMTUsIDIwNywgNDksIDI4LCAxNiwgMjQ3LCAyNDYsIDIxNSwgMjA3LCA0OSwgMjgsIDE2LCAyNDcsIDI0NiwgCi0gICAgMjE2LCAyMzAsIDQ5LCAyOCwgMTYsIDI0NywgMjQ2LCAyNTQsIDczLCAyNDYsIDUwLCAyNDcsIDE0NywgNDksIDI4LCAxNiwgCi0gICAgMjQ3LCAyNDYsIDIzMCwgMTQ2LCAyMTYsIDIzNCwgMjQ3LCAxNDcsIDQ5LCAyOCwgMTYsIDI0NywgMjQ2LCAyNDcsIDIzMCwgCi0gICAgMjQ1LCA0NCwgMjQ3LCAxNDcsIDQ5LCAyOCwgMTYsIDI0NywgMjQ2LCAyMTUsIDIxNSwgMjI2LCAyMTUsIDI0NywgMTQ3LCAKLSAgICA0OSwgMjgsIDE2LCAyMTEsIDEwLCAyNTQsIDczLCAyNDYsIDUwLCAyNDcsIDE0NywgNDksIDI4LCAxNiwgMjExLCAxMCwgCi0gICAgMjMwLCAxNDYsIDIxNiwgMjM0LCAyNDcsIDE0NywgNDksIDI4LCAxNiwgMjExLCAxMCwgMjQ3LCAyMzAsIDI0NSwgNDQsIAotICAgIDI0NywgMTQ3LCA0OSwgMjgsIDE2LCAyMTEsIDEwLCAyMTUsIDIxNSwgMjI2LCAyMTUsIDI0NywgMTQ3LCA0OSwgMjgsIDE2LCAKLSAgICAyNDMsIDU2LCAyNDcsIDI0NSwgNDksIDI4LCAxNiwgMjQzLCA1NiwgMjExLCA5LCA0OSwgMjgsIDE2LCAyNDcsIDI1MywgCi0gICAgMjU0LCA3MywgMjMwLCAyMDQsIDQ5LCAyOCwgMTYsIDI0NywgMjUzLCAyNTQsIDczLCAyMzEsIDc4LCA0OSwgMjgsIDE2LCAKLSAgICAyNDcsIDI1MywgMjQ3LCAyMDksIDQ5LCAyOCwgMTYsIDI0NywgMjUzLCAyMTYsIDE4MywgNDksIDI4LCAxNiwgMjE5LCAxNjUsIAotICAgIDIxNiwgMTgzLCA0OSwgMjgsIDE2LCAyMTksIDE2NSwgMjE2LCAxODQsIDI0NywgMTk0LCA0OSwgMjgsIDE2LCAyMTksIDE2NSwgCi0gICAgMjE2LCAxODQsIDIxNSwgMjA4LCA0OSwgMjgsIDE2LCAyMTksIDE2NSwgMjE2LCAxODQsIDIxNiwgMjIzLCA0OSwgMjgsIDE2LCAKLSAgICAyMTksIDE2NSwgMjUzLCAyNTIsIDQ5LCAyOCwgMTYsIDIxOSwgMTY1LCAyNTMsIDI1MywgMjQ3LCAxOTQsIDQ5LCAyOCwgMTYsIAotICAgIDIxOSwgMTY1LCAyNTMsIDI1MywgMjE1LCAyMDgsIDQ5LCAyOCwgMTYsIDIxOSwgMTY1LCAyNTMsIDI1MywgMjE2LCAyMjMsIAotICAgIDQ5LCAyOCwgMTYsIDI0NywgMjMxLCAyNDMsIDM3LCA0OSwgMjgsIDE2LCAyNDcsIDIzNywgMjI2LCAxMzgsIDQ5LCAyOCwgCi0gICAgMTYsIDIxOCwgMTM5LCA0OSwgMjgsIDE2LCAyNTQsIDE1LCAxOTEsIDQ5LCAyOCwgMTYsIDI1NCwgMTUsIDIxMywgMTI0LCAKLSAgICA0OSwgMjgsIDE2LCAyNTQsIDE1LCAyNDMsIDE0MiwgNDksIDI4LCAxNiwgMjU0LCAxNSwgMjQ4LCAxMSwgNDksIDI4LCAxNiwgCi0gICAgMjU0LCAxNSwgMjM0LCAxODgsIDQ5LCAyOCwgMTYsIDI1NCwgMTUsIDIxMCwgMjMsIDQ5LCAyOCwgMTYsIDI1NCwgMTUsIAotICAgIDIyOCwgMjM4LCA0OSwgMjgsIDE2LCAyMzQsIDE2OCwgMjI5LCAxMDEsIDIzMSwgNDksIDQ5LCAyOCwgMTYsIDIzNCwgMTY5LCAKLSAgICAyMjksIDEwMSwgMjMxLCA0OSwgNDksIDI4LCAxNiwgMjM0LCAxNjgsIDIyOSwgMTAxLCAyMzQsIDIwMiwgNDksIDI4LCAxNiwgCi0gICAgMjM0LCAxNjksIDIyOSwgMTAxLCAyMzQsIDIwMiwgNDksIDI4LCAxNiwgMjM0LCA0NCwgMjM0LCAyMDIsIDQ5LCAyOCwgMTYsIAotICAgIDI0MiwgMTY2LCAyMjksIDEwMSwgMjM0LCAyMDIsIDI4LCAxNiwgMjE5LCAxNTcsIDI1MiwgMTQzLCAyOCwgMTYsIDUyLCAKLSAgICAyNTIsIDE0MywgMjgsIDE2LCA0MCwgMjUyLCAxNDMsIDI4LCAxNiwgMjIzLCA1MywgNDAsIDI1MiwgMTQzLCAyOCwgMTYsIAotICAgIDI0OCwgMTYzLCAyNTIsIDE0MywgMjgsIDE2LCAyMTksIDI1MywgMjUyLCAxNDMsIDI4LCAxNiwgNDMsIDIyMywgODAsIDUwLCAKLSAgICAyOCwgMTYsIDQ0LCAyMjMsIDgwLCA1MCwgMjgsIDE2LCAyMjMsIDgwLCAyNDcsIDEyNiwgMjgsIDE2LCAyNDgsIDIwNCwgCi0gICAgMjIxLCAxNjUsIDI4LCAxNiwgMjQ4LCAyMzAsIDI1MSwgMSwgMjgsIDE2LCAyMjEsIDE2NSwgMjgsIDE2LCAyNDksIDI0MiwgCi0gICAgMjgsIDE2LCAyMjMsIDc4LCAyNDQsIDExOSwgMjgsIDE2LCAyMjMsIDc4LCAyNDQsIDExOCwgMjgsIDE2LCAyMjMsIDc4LCAKLSAgICAyNDQsIDExNywgMjgsIDE2LCAyNDQsIDEzOSwgMjgsIDE2LCAyNDQsIDE0MCwgNTEsIDI4LCAxNiwgMjUxLCAxNTYsIDc5LCAKLSAgICAyOCwgMTYsIDI1MSwgMzIsIDI4LCAxNiwgMjUxLCAxNjcsIDI4LCAxNiwgMTI3LCAyOCwgMTYsIDIyNiwgMTk3LCAyMTgsIAotICAgIDE2NSwgMjgsIDE2LCAyMTUsIDU3LCAyMTgsIDE2NSwgMjgsIDE2LCAyMTYsIDE0MywgMjE4LCAxNjUsIDI4LCAxNiwgMjQ0LCAKLSAgICAxOCwgMjE4LCAxNjUsIDI4LCAxNiwgMjQ0LCA4OCwgMjE4LCAxNjUsIDI4LCAxNiwgMjE5LCAxMjYsIDIxOCwgMTY1LCAyOCwgCi0gICAgMTYsIDIxOSwgMTI0LCAyNDQsIDIsIDI4LCAxNiwgMjQ0LCAxNiwgMjQ0LCAyLCAyOCwgMTYsIDI0MywgMjEwLCAyNTAsIDIyLCAKLSAgICAyOCwgMTYsIDI0MywgMjEwLCAyNTAsIDIzLCAyMjYsIDE0MCwgMjU0LCAxNTAsIDI4LCAxNiwgMjQzLCAyMTAsIDI1MCwgMjMsIAotICAgIDIyNiwgMTQwLCAyNTIsIDEzMCwgMjgsIDE2LCAyNTEsIDc1LCAyNTAsIDIyLCAyOCwgMTYsIDI0NSwgMTUsIDI1MCwgMjIsIAotICAgIDI4LCAxNiwgMjQ1LCAxNSwgMjUwLCAyMywgMjI2LCAxNDAsIDI1NCwgMTUwLCAyOCwgMTYsIDI0NSwgMTUsIDI1MCwgMjMsIAotICAgIDIyNiwgMTQwLCAyNTIsIDEzMCwgMjgsIDE2LCAyNDYsIDkxLCAyNTAsIDIxLCAyOCwgMTYsIDI0NiwgOTEsIDI1MCwgMjAsIAotICAgIDI4LCAxNiwgMjMwLCA5MCwgMjMxLCA5NSwgMjIzLCA2NCwgMjgsIDE2LCA1MiwgMjIwLCA3NywgMjgsIDE2LCA1MiwgMjQ0LCAKLSAgICA3MywgMjgsIDE2LCAyNDQsIDc0LCAyMTQsIDE2MywgMjgsIDE2LCAyNDQsIDc0LCAyNDYsIDExNCwgMjgsIDE2LCAyMjksIAotICAgIDE5MywgMjE0LCAxNjMsIDI4LCAxNiwgMjI5LCAxOTMsIDI0NiwgMTE0LCAyOCwgMTYsIDIyMCwgNzgsIDIxNCwgMTYzLCAyOCwgCi0gICAgMTYsIDIyMCwgNzgsIDI0NiwgMTE0LCAyOCwgMTYsIDIyNCwgMjUsIDEzOCwgMjIwLCA3NywgMjgsIDE2LCAyMjQsIDI1LCAKLSAgICAxMzgsIDI0NCwgNzMsIDI4LCAxNiwgMjQ5LCAyMjQsIDIxNiwgODgsIDI4LCAxNiwgMjQ5LCA5MywgMjE2LCA4OCwgMjgsIAotICAgIDE2LCAyMjYsIDE0MCwgMjU0LCAxNTAsIDI4LCAxNiwgMjI2LCAxNDAsIDI1MiwgMTMwLCAyOCwgMTYsIDIyNCwgNywgMjU0LCAKLSAgICAxNTAsIDI4LCAxNiwgMjI0LCA3LCAyNTIsIDEzMCwgMjgsIDE2LCAyMzAsIDkzLCAyMjMsIDY0LCAyOCwgMTYsIDIxMSwgCi0gICAgMjUxLCAyMjMsIDY0LCAyOCwgMTYsIDE2MywgMjIzLCA2NCwgMjgsIDE2LCAyMjQsIDI1LCAyMjMsIDY0LCAyOCwgMTYsIAotICAgIDI0NSwgMTk3LCAyMjMsIDY0LCAyOCwgMTYsIDIxOSwgMTIwLCAyMjMsIDY0LCAyOCwgMTYsIDIxNiwgMTYxLCAyMjMsIDY0LCAKLSAgICAyOCwgMTYsIDIxOSwgMTEyLCAyMjMsIDY0LCAyOCwgMTYsIDEyMywgMjQwLCAyMTgsIDIxNSwgNzEsIDIyMywgNjQsIDI4LCAKLSAgICAxNiwgMjExLCAxNzksIDIyOCwgNDgsIDI4LCAxNiwgOTYsIDIyOCwgNDgsIDI4LCAxNiwgMjUwLCA0NCwgMjExLCAxNzksIAotICAgIDIyOCwgNDgsIDI4LCAxNiwgNDIsIDIyOCwgNDksIDIxMSwgMjUzLCAyOCwgMTYsIDQyLCAyMjgsIDQ5LCAyNTEsIDIyOSwgCi0gICAgMjgsIDE2LCAyMTUsIDIyNywgMjI4LCA0OSwgMTIwLCAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyNywgMjI4LCA0OSwgMTIwLCAKLSAgICAyNTEsIDIyOSwgMjgsIDE2LCAyMTUsIDIyNywgMjI4LCA0OSwgNDMsIDIxMSwgMjUzLCAyOCwgMTYsIDIxNSwgMjI3LCAyMjgsIAotICAgIDQ5LCA0MywgMjUxLCAyMjksIDI4LCAxNiwgMjE1LCAyMjcsIDIyOCwgNDksIDQ0LCAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIAotICAgIDIyNywgMjI4LCA0OSwgNDQsIDI1MSwgMjI5LCAyOCwgMTYsIDIxNSwgMjI3LCAyMjgsIDQ5LCAxMjQsIDIxMSwgMjUzLCAyOCwgCi0gICAgMTYsIDIxNSwgMjI3LCAyMjgsIDQ5LCAxMjQsIDI1MSwgMjI5LCAyOCwgMTYsIDIxNSwgMjI3LCAyMjgsIDQ5LCAxMjAsIDQ0LCAKLSAgICAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyNywgMjI4LCA0OSwgMTIwLCA0NCwgMjUxLCAyMjksIDI4LCAxNiwgMjMwLCAxMzQsIAotICAgIDIyOCwgNDksIDIxMSwgMjUzLCAyOCwgMTYsIDIzMCwgMTM0LCAyMjgsIDQ5LCAyNTEsIDIyOSwgMjgsIDE2LCAyMTUsIDIyNCwgCi0gICAgMjI4LCA0OSwgMTI0LCAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyNCwgMjI4LCA0OSwgMTI0LCAyNTEsIDIyOSwgMjgsIDE2LCAKLSAgICAyMjYsIDgsIDIyOCwgNDgsIDI4LCAxNiwgMjEzLCAxMzIsIDIyOCwgNDgsIDI4LCAxNiwgMjI4LCA0OSwgMjUxLCAyMjksIAotICAgIDI4LCAxNiwgMjI3LCAyMDcsIDIyOCwgNDgsIDI4LCAxNiwgMjQ5LCAyNDksIDIyOCwgNDksIDIxMSwgMjUzLCAyOCwgMTYsIAotICAgIDI0OSwgMjQ5LCAyMjgsIDQ5LCAyNTEsIDIyOSwgMjgsIDE2LCAyNTEsIDE1NCwgMjgsIDE2LCAyMTEsIDI1MSwgMjI4LCA1MiwgCi0gICAgMjgsIDE2LCAxNjMsIDIyOCwgNTIsIDI4LCAxNiwgMjI0LCAyNSwgMjI4LCA1MiwgMjgsIDE2LCAyNDUsIDE5NywgMjI4LCAKLSAgICA1MiwgMjgsIDE2LCAyMTksIDEyMCwgMjI4LCA1MiwgMjgsIDE2LCAyMTYsIDE2MSwgMjI4LCA1MiwgMjgsIDE2LCAyMTksIAotICAgIDExMiwgMjI4LCA1MiwgMjgsIDE2LCAxMjMsIDI0MCwgMjE4LCAyMTUsIDcxLCAyMjgsIDUyLCAyOCwgMTYsIDM4LCAyMTgsIAotICAgIDE0MSwgMjgsIDE2LCAzOCwgMjE4LCAyNDIsIDIxOCwgMTQxLCAyOCwgMTYsIDM4LCAyMTUsIDIzNSwgMjgsIDE2LCAzOCwgCi0gICAgMjE1LCAyMzQsIDI4LCAxNiwgMzgsIDIxNSwgMjMzLCAyOCwgMTYsIDI0NCwgMTA5LCAyMTUsIDIzNSwgMjgsIDE2LCAyNDQsIAotICAgIDEwOSwgMjE1LCAyMzQsIDI4LCAxNiwgMjQ0LCAxMDksIDIxNSwgMjMzLCAyOCwgMTYsIDM4LCAyNTMsIDE5NywgMjQ3LCAKLSAgICAxMjgsIDI4LCAxNiwgMzgsIDI0NCwgODAsIDI4LCAxNiwgMzgsIDI0NCwgNzksIDI4LCAxNiwgMzgsIDI0NCwgNzgsIDI4LCAKLSAgICAxNiwgMzgsIDI0NCwgNzcsIDI4LCAxNiwgMzgsIDI0NCwgNzYsIDI4LCAxNiwgMjUyLCA2NiwgMjUyLCA4MiwgMjgsIDE2LCAKLSAgICAyNDUsIDE1MSwgMjUyLCA4MiwgMjgsIDE2LCAyNTIsIDY2LCAyMTYsIDExMiwgMjgsIDE2LCAyNDUsIDE1MSwgMjE2LCAxMTIsIAotICAgIDI4LCAxNiwgMjUyLCA2NiwgMjE5LCA4MiwgMjgsIDE2LCAyNDUsIDE1MSwgMjE5LCA4MiwgMjgsIDE2LCAyNTIsIDY2LCAKLSAgICAyMjUsIDExOCwgMjgsIDE2LCAyNDUsIDE1MSwgMjI1LCAxMTgsIDI4LCAxNiwgMzgsIDI1NSwgMjMsIDI4LCAxNiwgMzgsIAotICAgIDIxOCwgMTY3LCAyOCwgMTYsIDM4LCAyMTYsIDIzOSwgMjgsIDE2LCAzOCwgMjE4LCAxNjgsIDI4LCAxNiwgMzgsIDIzMSwgCi0gICAgMTY3LCAyOCwgMTYsIDM4LCAyMzEsIDE2NiwgMjgsIDE2LCAzOCwgMjU1LCAyMiwgMjgsIDE2LCAzOCwgMjMyLCAxMTgsIDI4LCAKLSAgICAxNiwgMjU0LCA2LCAyMTQsIDE2MywgMjgsIDE2LCAyNTQsIDYsIDI0NiwgMTE0LCAyOCwgMTYsIDM4LCAyNDcsIDE0MywgMjgsIAotICAgIDE2LCAzOCwgMjIyLCAyMzQsIDI4LCAxNiwgMzgsIDI0NCwgNjYsIDI4LCAxNiwgMzgsIDIxOSwgNzgsIDI4LCAxNiwgMzgsIAotICAgIDI1MiwgNDYsIDI4LCAxNiwgMzgsIDUyLCAyMTYsIDIwLCAyOCwgMTYsIDM4LCAyMTUsIDIxMiwgMjE2LCAyMCwgMjgsIDE2LCAKLSAgICAyMjIsIDIzOCwgMjgsIDE2LCAyMTgsIDc2LCAyOCwgMTYsIDIxMCwgMTU5LCAyOCwgMTYsIDIyNSwgMTEwLCAyOCwgMTYsIAotICAgIDIzMSwgMzAsIDI4LCAxNiwgMjQ0LCAyNSwgMjgsIDE2LCAyNDksIDE0NiwgMjgsIDE2LCAyNDgsIDg2LCAyOCwgMTYsIDI0MiwgCi0gICAgMTU3LCAyMjgsIDUzLCAyMTksIDk3LCAyOCwgMTYsIDI0MiwgMTU3LCAyMjgsIDUzLCAyMjgsIDgwLCAyMTksIDk3LCAyOCwgCi0gICAgMTYsIDIxNiwgMSwgMjgsIDE2LCAyMTUsIDk1LCAyOCwgMTYsIDIzNSwgMjAwLCAyMTUsIDk1LCAyOCwgMTYsIDIxNSwgOTYsIAotICAgIDIxOSwgOTcsIDI4LCAxNiwgMjE1LCA5NiwgMjE0LCAxNjMsIDI4LCAxNiwgMjI2LCAxNTIsIDIxOCwgMTA0LCAyOCwgMTYsIAotICAgIDIyNiwgMTUyLCAyMTgsIDEwMSwgMjgsIDE2LCAyMjYsIDE1MiwgMjE4LCAxMDAsIDI4LCAxNiwgMjI2LCAxNTIsIDIxOCwgCi0gICAgOTksIDI4LCAxNiwgMjI2LCAxNTIsIDIxOCwgOTgsIDI4LCAxNiwgMjI2LCAxNTIsIDIxOCwgOTcsIDI4LCAxNiwgMjI2LCAKLSAgICAxNTIsIDIxOCwgOTYsIDI4LCAxNiwgMjI2LCAxNTIsIDIxOCwgOTUsIDI4LCAxNiwgMjI2LCAxNTIsIDIxOCwgOTQsIDI4LCAKLSAgICAxNiwgMjI2LCAxNTIsIDIxOCwgMTAzLCAyOCwgMTYsIDIyNiwgMTUyLCAyMTgsIDEwMiwgMjgsIDE2LCAyNDEsIDI1MiwgMjgsIAotICAgIDE2LCAyMjksIDExMCwgMjgsIDE2LCAyNDUsIDE1MSwgNjQsIDIxOCwgMTM1LCAyOCwgMTYsIDI0OCwgNzksIDIxOSwgOTcsIAotICAgIDI4LCAxNiwgMzgsIDEyNCwgMjUxLCAxNzcsIDI4LCAxNiwgMzgsIDEyMCwgMjUxLCAxNzcsIDI4LCAxNiwgMzgsIDI0MiwgNywgCi0gICAgMjgsIDE2LCAzOCwgMjE5LCA2OSwgMjI1LCA0NiwgMjgsIDE2LCAyMjUsIDIxOSwgNzksIDI4LCAxNiwgMjI1LCAyMTksIAotICAgIDEyMCwgNzksIDI4LCAxNiwgMTYzLCAyMjUsIDIxOSwgNzksIDI4LCAxNiwgMjQyLCAxODksIDIxNCwgMTYzLCAyOCwgMTYsIAotICAgIDI0MiwgMTg5LCAyNDYsIDExNCwgMjgsIDE2LCAyLCAyNDQsIDEwOCwgMjgsIDE2LCAyNDgsIDE4OCwgMjgsIDE2LCAyNDgsIAotICAgIDE4OSwgMjU0LCAxNjMsIDI4LCAxNiwgMjMxLCAxMzgsIDI4LCAxNiwgMjMyLCAxMzUsIDI4LCAxNiwgMjUxLCAxNTEsIDI4LCAKLSAgICAxNiwgMjIwLCAxNTYsIDIxMSwgMjUzLCAyOCwgMTYsIDIyMCwgMTU2LCAyNTEsIDIyOSwgMjgsIDE2LCAyMzAsIDE4OSwgMjgsIAotICAgIDE2LCAyMzAsIDE5MCwgMjUxLCAyMjksIDI4LCAxNiwgMjIwLCAxNTAsIDIxMSwgMjUzLCAyOCwgMTYsIDIyMCwgMTUwLCAKLSAgICAyNTEsIDIyOSwgMjgsIDE2LCAyNDMsIDIyNywgMjExLCAyNTMsIDI4LCAxNiwgMjQzLCAyMjcsIDI1MSwgMjI5LCAyOCwgMTYsIAotICAgIDIzMiwgMTM2LCAyMjUsIDE4MywgMjIzLCA2NCwgMjgsIDE2LCAyMzIsIDEzNiwgMjM2LCAxMSwgMjIzLCA2NCwgMjgsIDE2LCAKLSAgICAyNTEsIDE1MiwgMjIzLCA2NCwgMjgsIDE2LCAyMjAsIDE1NiwgMjIzLCA2NCwgMjgsIDE2LCAyMzAsIDE5MCwgMjIzLCA2NCwgCi0gICAgMjgsIDE2LCAyMjAsIDE1MCwgMjIzLCA2NCwgMjgsIDE2LCAyMTYsIDI1MCwgMjI1LCAxODEsIDI0OSwgMTE1LCAyMjQsIAotICAgIDE3NywgMjI1LCAxODIsIDI4LCAxNiwgMjE2LCAyNTAsIDIyNSwgMTgxLCAyNDksIDExNSwgMjI0LCAxNzcsIDIzNiwgMTAsIAotICAgIDI4LCAxNiwgMjE2LCAyNTAsIDIyNSwgMTgxLCAyNDksIDExNSwgMjI0LCAxNzcsIDIyNSwgMTgzLCAyNDcsIDIxOSwgMjgsIAotICAgIDE2LCAyMTYsIDI1MCwgMjM2LCA5LCAyNDksIDExNSwgMjI0LCAxNzcsIDIyNSwgMTgyLCAyOCwgMTYsIDIxNiwgMjUwLCAKLSAgICAyMzYsIDksIDI0OSwgMTE1LCAyMjQsIDE3NywgMjM2LCAxMCwgMjgsIDE2LCAyMTYsIDI1MCwgMjM2LCA5LCAyNDksIDExNSwgCi0gICAgMjI0LCAxNzcsIDIzNiwgMTEsIDI0NywgMjE5LCAyOCwgMTYsIDIxNiwgMjUwLCAyMzYsIDksIDI0OSwgMTE1LCAyMjQsIAotICAgIDE3NywgMjM2LCAxMSwgMjQ3LCAyMTgsIDI4LCAxNiwgMjE2LCAyNTAsIDIzNiwgOSwgMjQ5LCAxMTUsIDIyNCwgMTc3LCAKLSAgICAyMzYsIDExLCAyNDcsIDIxNywgMjgsIDE2LCAyNDksIDE0MSwgMjgsIDE2LCAyNDIsIDEzMywgMjUxLCA3NSwgMjUwLCAyMiwgCi0gICAgMjgsIDE2LCAyNDIsIDEzMywgMjQ1LCAxNSwgMjUwLCAyMiwgMjgsIDE2LCA0MiwgMjUzLCAxNjYsIDI4LCAxNiwgMjEzLCAKLSAgICAxNTEsIDI4LCAxNiwgMjI1LCAxNywgMjgsIDE2LCAyNTAsIDEzLCAyOCwgMTYsIDIyMSwgMjA1LCAyOCwgMTYsIDI1MCwgMTcsIAotICAgIDI4LCAxNiwgMjE2LCA4LCAyOCwgMTYsIDIyNCwgMjQ1LCAyOCwgMTYsIDIyNCwgMjQ2LCAyNDQsIDY4LCAyOCwgMTYsIDIyMSwgCi0gICAgMjA2LCAyNDQsIDY4LCAyOCwgMTYsIDIxNiwgOSwgMjIzLCA2MSwgMjgsIDE2LCAyMjUsIDE2NiwgMjE4LCA2NywgMjYsIAotICAgIDIxMywgMTM3LCAxODksIDIxNywgMjMwLCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMTksIDI2LCAyMTMsIDEzNywgMTg5LCAKLSAgICAyMTcsIDIwOSwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMjAyLCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAxOTQsIDI2LCAKLSAgICAyMTMsIDEzNywgMTg5LCAyMTcsIDE4OCwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMTg3LCAyNiwgMjEzLCAxMzcsIDE4OSwgCi0gICAgMjE3LCAxODYsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDE4NSwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMjI5LCAyNiwgCi0gICAgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMjgsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDIyNywgMjYsIDIxMywgMTM3LCAxODksIAotICAgIDIxNywgMjI2LCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMjUsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDIyNCwgMjYsIAotICAgIDIxMywgMTM3LCAxODksIDIxNywgMjIzLCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMjIsIDI2LCAyMTMsIDEzNywgMTg5LCAKLSAgICAyMTcsIDIyMSwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMjIwLCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMTgsIDI2LCAKLSAgICAyMTMsIDEzNywgMTg5LCAyMTcsIDIxNywgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMjE2LCAyNiwgMjEzLCAxMzcsIDE4OSwgCi0gICAgMjE3LCAyMTUsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDIxNCwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMTkzLCAyNiwgCi0gICAgMjEzLCAxMzcsIDE4OSwgMjE3LCAxOTIsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDE5MSwgMjYsIDIxMywgMTM3LCAxODksIAotICAgIDIxNywgMTkwLCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAxODksIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDIzMCwgMjYsIAotICAgIDIzNSwgMjIxLCAxODksIDIxNywgMjE5LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMDIsIDI2LCAyMzUsIDIyMSwgMTg5LCAKLSAgICAyMTcsIDE5NCwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMTg3LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAxODYsIDI2LCAKLSAgICAyMzUsIDIyMSwgMTg5LCAyMTcsIDIyOCwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjI3LCAyNiwgMjM1LCAyMjEsIDE4OSwgCi0gICAgMjE3LCAyMjYsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDIyNSwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjIyLCAyNiwgCi0gICAgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMjEsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDIyMCwgMjYsIDIzNSwgMjIxLCAxODksIAotICAgIDIxNywgMjE1LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMTQsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDIxMywgMjYsIAotICAgIDIzNSwgMjIxLCAxODksIDIxNywgMjEyLCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMTEsIDI2LCAyMzUsIDIyMSwgMTg5LCAKLSAgICAyMTcsIDIxMCwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjA4LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMDcsIDI2LCAKLSAgICAyMzUsIDIyMSwgMTg5LCAyMTcsIDIwNiwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjA1LCAyNiwgMjM1LCAyMjEsIDE4OSwgCi0gICAgMjE3LCAyMDQsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDIwMywgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjAxLCAyNiwgCi0gICAgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMDAsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDE5OSwgMjYsIDIzNSwgMjIxLCAxODksIAotICAgIDIxNywgMTk4LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAxOTcsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDE5NiwgMjYsIAotICAgIDIzNSwgMjIxLCAxODksIDIxNywgMTk1LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAxOTMsIDI2LCAyMzUsIDIyMSwgMTg5LCAKLSAgICAyMTcsIDE5MiwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMTkxLCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAxOTAsIDI2LCAKLSAgICAyMzUsIDIyMSwgMTg5LCAyMTcsIDE4OSwgMzgsIDI2LCAyOCwgMjE1LCAyMDksIDM4LCAyNiwgMjgsIDIxNiwgMjI0LCAzOCwgCi0gICAgMjYsIDI4LCAyMjUsIDE5MSwgMjYsIDI4LCAyMzMsIDM3LCAyMzAsIDE0NywgMzEsIDI0NSwgMjMxLCAyNDcsIDIzMiwgMzEsIAotICAgIDI0MSwgMjI5LCAyNDUsIDIzMSwgMjQ3LCAyMzIsIDMxLCAyNDAsIDIyMSwgMjQ1LCAyMzEsIDI0NywgMjMyLCAzMSwgMjQ1LCAKLSAgICAyMzAsIDI0MSwgMjMwLCAyNDcsIDIzMiwgMzEsIDI0NSwgMjMwLCAyNDAsIDIyMCwgMjQ3LCAyMzIsIDMxLCAyNDUsIDIzMSwgCi0gICAgMTgwLCAzMSwgMjUwLCAxODIsIDE4MCwgMzEsIDI0MywgMjM2LCAyNTAsIDQzLCAxODAsIDMxLCAyMzAsIDE4MiwgMTgwLCAKLSAgICAzMSwgMjUyLCAxMzgsIDE4MCwgMzEsIDIzNCwgMTg1LCAyMTksIDgxLCAxODAsIDMxLCAyNDksIDE4NywgMTgwLCAzMSwgCi0gICAgMjUzLCAyNDEsIDE4MCwgMzEsIDIyNiwgMTY3LCAxODAsIDMxLCAyNTEsIDE2MSwgMjI2LCAxMzQsIDE4MCwgMzEsIDI0OCwgCi0gICAgODEsIDE3NywgMjQ3LCAxODcsIDE4MCwgMzEsIDI0NywgMTg0LCAxODAsIDMxLCAyMTAsIDIyMiwgMTgwLCAzMSwgMjM1LCAKLSAgICAyNTQsIDE4MCwgMzEsIDIyNSwgMjAwLCAxODAsIDMxLCAyMjMsIDEzMCwgMTgwLCAzMSwgMjQ5LCAxOTcsIDE4MCwgMzEsIAotICAgIDI0MSwgNjcsIDI1MiwgMTkyLCAxODAsIDMxLCAyMTIsIDU5LCAxODAsIDMxLCAyNDQsIDQ3LCAxODAsIDMxLCAyNTQsIDI1NSwgCi0gICAgMTgwLCAzMSwgMjIzLCA5MiwgMTgwLCAzMSwgMjIzLCA2OCwgMTgwLCAzMSwgMjQ1LCAyMjksIDE4MCwgMzEsIDIzNSwgNTksIAotICAgIDE4MCwgMzEsIDI0OSwgMTkyLCAxODAsIDMxLCAyNDUsIDE1MCwgMTgwLCAzMSwgMjQ2LCA2MCwgMTgwLCAzMSwgMjUwLCAKLSAgICAxNTMsIDE4MCwgMzEsIDI0OCwgOTAsIDE4MCwgMzEsIDIzLCAyMjMsIDY3LCAxODAsIDMxLCAyMjYsIDg1LCAxODAsIDMxLCAKLSAgICAyMzMsIDQwLCAxODAsIDMxLCAyNTAsIDYsIDE4MCwgMzEsIDIzNCwgODMsIDE4MCwgMzEsIDI0MywgOTMsIDE4MCwgMzEsIAotICAgIDIxOCwgMTE0LCAxODAsIDMxLCAyMjQsIDEzMywgMTgwLCAzMSwgMjQzLCAyMzUsIDE4MCwgMzEsIDIyMywgNjksIDE4MCwgCi0gICAgMzEsIDIzMywgNzcsIDE3NywgMjMwLCAxNjIsIDE4MCwgMzEsIDIyMywgNjUsIDE4MCwgMzEsIDI0MiwgMTc1LCAyMTYsIDQzLCAKLSAgICAyMzEsIDgxLCAxODAsIDMxLCAyNDUsIDE1MiwgMTgwLCAzMSwgMjE4LCAxMjYsIDE4MCwgMzEsIDI0MiwgMTM1LCAxODAsIAotICAgIDMxLCAyNDUsIDE0NCwgMTgwLCAzMSwgMjI1LCAyMzksIDE4MCwgMzEsIDIyMiwgMjI4LCAxODAsIDMxLCAyNDQsIDY3LCAKLSAgICAxODAsIDMxLCAyMTQsIDgsIDE3NywgMjEyLCA0NCwgMTgwLCAzMSwgMjQ5LCAyMDEsIDE4MCwgMzEsIDIzMSwgOTQsIDE4MCwgCi0gICAgMzEsIDI0NSwgNjksIDE4MCwgMzEsIDIxNCwgMTcyLCAxODAsIDMxLCAyNDcsIDIyMCwgMTgwLCAzMSwgMjUwLCA4LCAyMzAsIAotICAgIDExNSwgMTgwLCAzMSwgMjQyLCAxMTMsIDE4MCwgMzEsIDI0MywgOTQsIDIzNiwgNiwgMTgwLCAzMSwgMjMxLCAxNDYsIDE4MCwgCi0gICAgMzEsIDI1NSwgMTksIDE4MCwgMzEsIDI0NSwgMTY1LCAxODAsIDMxLCAyNDYsIDExNywgMTgwLCAzMSwgMjEyLCA0MiwgMTgwLCAKLSAgICAzMSwgMjE5LCAxNTIsIDE4MCwgMzEsIDIzNSwgMjI5LCAxODAsIDMxLCAyNDgsIDUwLCAxODAsIDMxLCAyNDgsIDE2OCwgCi0gICAgMTgwLCAzMSwgMjQ3LCAyMTYsIDE4MCwgMzEsIDI0NSwgMzcsIDE4MCwgMzEsIDIyMCwgMTE3LCAxODAsIDMxLCAyMTgsIAotICAgIDEzMCwgMTgwLCAzMSwgMjQyLCA5LCAxODAsIDMxLCAyNDksIDIyMCwgMTgwLCAzMSwgMjUwLCAzLCAxODAsIDMxLCAyNDQsIAotICAgIDE4NSwgMTgwLCAzMSwgMjU0LCAyMjEsIDE4MCwgMzEsIDI0OSwgMjE5LCAxODAsIDMxLCAyMjYsIDIwMSwgMjE2LCAxOTcsIAotICAgIDIxMywgMjQyLCAxODAsIDMxLCAyNDcsIDI0MCwgMTgwLCAzMSwgMjMzLCAxMzAsIDE4MCwgMzEsIDI0NCwgMjEsIDI0OSwgCi0gICAgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAxMTEsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAxMDUsIAotICAgIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAxNTgsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAKLSAgICAxNjEsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAxOTAsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIAotICAgIDIxLCAxOTUsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAxOTksIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAKLSAgICAxNzQsIDIxLCAxOTYsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAyMDEsIDI0OSwgMTU3LCAyMjIsIDIwNCwgCi0gICAgMjE2LCAyNDQsIDIxLCAxMTEsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAxMDUsIDI0OSwgMTU3LCAyMjIsIAotICAgIDIwNCwgMjE2LCAyNDQsIDIxLCAxNTgsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAxNjEsIDI0OSwgMTU3LCAKLSAgICAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAxOTAsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAxOTUsIDI0OSwgCi0gICAgMTU3LCAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAxOTksIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAxOTYsIAotICAgIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAyMDEsIDExLCAyMywgNiwgNjEsIDExLCAyMywgNiwgMjUzLCAKLSAgICAxNjYsIDExLCAyMywgNiwgMjUxLCA3NCwgMTEsIDIzLCA2LCAyNDksIDY4LCAxMSwgMjMsIDYsIDc2LCAxMSwgMjMsIDYsIAotICAgIDI0NSwgMTQsIDExLCAyMywgNiwgMjQzLCAyMDksIDExLCAyMywgNiwgMjQyLCA2NywgMTEsIDIzLCA2LCA3NCwgMTEsIDIzLCAKLSAgICA2LCAyMzUsIDE1MCwgMTEsIDIzLCA2LCAyMzUsIDI5LCAxMSwgMjMsIDYsIDE1NiwgMTEsIDIzLCA2LCAxOTQsIDExLCAyMywgCi0gICAgNiwgMjMwLCAzMCwgMTEsIDIzLCA2LCA3OCwgMTEsIDIzLCA2LCAyMjYsIDEwOSwgMTEsIDIzLCA2LCAyMjQsIDk5LCAxMSwgCi0gICAgMjMsIDYsIDE1MywgMTEsIDIzLCA2LCAyMjIsIDkzLCAxMSwgMjMsIDYsIDIxNywgMTUzLCAxMSwgMjMsIDYsIDY5LCAxMSwgCi0gICAgMjMsIDYsIDIxNCwgMTA1LCAxMSwgMjMsIDYsIDIxMiwgOTgsIDExLCAyMywgNiwgMjExLCAxNzgsIDExLCAyMywgNiwgMjExLCAKLSAgICAxMTcsIDExLCAyMywgNiwgMjEwLCAxNTksIDExLCAyMywgNCwgNjEsIDExLCAyMywgNCwgMjUzLCAxNjYsIDExLCAyMywgNCwgCi0gICAgMjUxLCA3NCwgMTEsIDIzLCA0LCAyNDksIDY4LCAxMSwgMjMsIDQsIDc2LCAxMSwgMjMsIDQsIDI0NSwgMTQsIDExLCAyMywgCi0gICAgNCwgMjQzLCAyMDksIDExLCAyMywgNCwgMjQyLCA2NywgMTEsIDIzLCA0LCA3NCwgMTEsIDIzLCA0LCAyMzUsIDE1MCwgMTEsIAotICAgIDIzLCA0LCAyMzUsIDI5LCAxMSwgMjMsIDQsIDE1NiwgMTEsIDIzLCA0LCAxOTQsIDExLCAyMywgNCwgMjMwLCAzMCwgMTEsIAotICAgIDIzLCA0LCA3OCwgMTEsIDIzLCA0LCAyMjYsIDEwOSwgMTEsIDIzLCA0LCAyMjQsIDk5LCAxMSwgMjMsIDQsIDE1MywgMTEsIAotICAgIDIzLCA0LCAyMjIsIDkzLCAxMSwgMjMsIDQsIDIxNywgMTUzLCAxMSwgMjMsIDQsIDY5LCAxMSwgMjMsIDQsIDIxNCwgMTA1LCAKLSAgICAxMSwgMjMsIDQsIDIxMiwgOTgsIDExLCAyMywgNCwgMjExLCAxNzgsIDExLCAyMywgNCwgMjExLCAxMTcsIDExLCAyMywgNCwgCi0gICAgMjEwLCAxNTksIDExLCAzMiwgNiwgNjEsIDExLCAzMiwgNiwgMjUzLCAxNjYsIDExLCAzMiwgNiwgMjUxLCA3NCwgMTEsIDMyLCAKLSAgICA2LCAyNDksIDY4LCAxMSwgMzIsIDYsIDc2LCAxMSwgMzIsIDYsIDI0NSwgMTQsIDExLCAzMiwgNiwgMjQzLCAyMDksIDExLCAKLSAgICAzMiwgNiwgMjQyLCA2NywgMTEsIDMyLCA2LCA3NCwgMTEsIDMyLCA2LCAyMzUsIDE1MCwgMTEsIDMyLCA2LCAyMzUsIDI5LCAKLSAgICAxMSwgMzIsIDYsIDE1NiwgMTEsIDMyLCA2LCAxOTQsIDExLCAzMiwgNiwgMjMwLCAzMCwgMTEsIDMyLCA2LCA3OCwgMTEsIAotICAgIDMyLCA2LCAyMjYsIDEwOSwgMTEsIDMyLCA2LCAyMjQsIDk5LCAxMSwgMzIsIDYsIDE1MywgMTEsIDMyLCA2LCAyMjIsIDkzLCAKLSAgICAxMSwgMzIsIDYsIDIxNywgMTUzLCAxMSwgMzIsIDYsIDY5LCAxMSwgMzIsIDYsIDIxNCwgMTA1LCAxMSwgMzIsIDYsIDIxMiwgCi0gICAgOTgsIDExLCAzMiwgNiwgMjExLCAxNzgsIDExLCAzMiwgNiwgMjExLCAxMTcsIDExLCAzMiwgNiwgMjEwLCAxNTksIDExLCAKLSAgICAzMiwgNCwgNjEsIDExLCAzMiwgNCwgMjUzLCAxNjYsIDExLCAzMiwgNCwgMjUxLCA3NCwgMTEsIDMyLCA0LCAyNDksIDY4LCAKLSAgICAxMSwgMzIsIDQsIDc2LCAxMSwgMzIsIDQsIDI0NSwgMTQsIDExLCAzMiwgNCwgMjQzLCAyMDksIDExLCAzMiwgNCwgNzQsIAotICAgIDExLCAzMiwgNCwgMjM1LCAxNTAsIDExLCAzMiwgNCwgMjM1LCAyOSwgMTEsIDMyLCA0LCAxNTYsIDExLCAzMiwgNCwgMTk0LCAKLSAgICAxMSwgMzIsIDQsIDIzMCwgMzAsIDExLCAzMiwgNCwgNzgsIDExLCAzMiwgNCwgMjI2LCAxMDksIDExLCAzMiwgNCwgMjI0LCAKLSAgICA5OSwgMTEsIDMyLCA0LCAxNTMsIDExLCAzMiwgNCwgMjIyLCA5MywgMTEsIDMyLCA0LCAyMTcsIDE1MywgMTEsIDMyLCA0LCAKLSAgICA2OSwgMTEsIDMyLCA0LCAyMTQsIDEwNSwgMTEsIDMyLCA0LCAyMTIsIDk4LCAxMSwgMzIsIDQsIDIxMSwgMTc4LCAxMSwgMzIsIAotICAgIDQsIDIxMSwgMTE3LCAxMSwgMzIsIDQsIDIxMCwgMTU5LCAxMSwgMjMsIDMyLCA2LCA2MSwgMTEsIDIzLCAzMiwgNiwgMjUzLCAKLSAgICAxNjYsIDExLCAyMywgMzIsIDYsIDI1MSwgNzQsIDExLCAyMywgMzIsIDYsIDI0OSwgNjgsIDExLCAyMywgMzIsIDYsIDc2LCAKLSAgICAxMSwgMjMsIDMyLCA2LCAyNDUsIDE0LCAxMSwgMjMsIDMyLCA2LCAyNDMsIDIwOSwgMTEsIDIzLCAzMiwgNiwgMjQyLCA2NywgCi0gICAgMTEsIDIzLCAzMiwgNiwgNzQsIDExLCAyMywgMzIsIDYsIDIzNSwgMTUwLCAxMSwgMjMsIDMyLCA2LCAyMzUsIDI5LCAxMSwgCi0gICAgMjMsIDMyLCA2LCAxNTYsIDExLCAyMywgMzIsIDYsIDE5NCwgMTEsIDIzLCAzMiwgNiwgMjMwLCAzMCwgMTEsIDIzLCAzMiwgCi0gICAgNiwgNzgsIDExLCAyMywgMzIsIDYsIDIyNiwgMTA5LCAxMSwgMjMsIDMyLCA2LCAyMjQsIDk5LCAxMSwgMjMsIDMyLCA2LCAKLSAgICAxNTMsIDExLCAyMywgMzIsIDYsIDIyMiwgOTMsIDExLCAyMywgMzIsIDYsIDIxNywgMTUzLCAxMSwgMjMsIDMyLCA2LCA2OSwgCi0gICAgMTEsIDIzLCAzMiwgNiwgMjE0LCAxMDUsIDExLCAyMywgMzIsIDYsIDIxMiwgOTgsIDExLCAyMywgMzIsIDYsIDIxMSwgMTc4LCAKLSAgICAxMSwgMjMsIDMyLCA2LCAyMTEsIDExNywgMTEsIDIzLCAzMiwgNiwgMjEwLCAxNTksIDExLCAyMywgMzIsIDQsIDYxLCAxMSwgCi0gICAgMjMsIDMyLCA0LCAyNTMsIDE2NiwgMTEsIDIzLCAzMiwgNCwgMjUxLCA3NCwgMTEsIDIzLCAzMiwgNCwgMjQ5LCA2OCwgMTEsIAotICAgIDIzLCAzMiwgNCwgNzYsIDExLCAyMywgMzIsIDQsIDI0NSwgMTQsIDExLCAyMywgMzIsIDQsIDI0MywgMjA5LCAxMSwgMjMsIAotICAgIDMyLCA0LCAyNDIsIDY3LCAxMSwgMjMsIDMyLCA0LCA3NCwgMTEsIDIzLCAzMiwgNCwgMjM1LCAxNTAsIDExLCAyMywgMzIsIAotICAgIDQsIDIzNSwgMjksIDExLCAyMywgMzIsIDQsIDE1NiwgMTEsIDIzLCAzMiwgNCwgMTk0LCAxMSwgMjMsIDMyLCA0LCAyMzAsIAotICAgIDMwLCAxMSwgMjMsIDMyLCA0LCA3OCwgMTEsIDIzLCAzMiwgNCwgMjI2LCAxMDksIDExLCAyMywgMzIsIDQsIDIyNCwgOTksIAotICAgIDExLCAyMywgMzIsIDQsIDE1MywgMTEsIDIzLCAzMiwgNCwgMjIyLCA5MywgMTEsIDIzLCAzMiwgNCwgMjE3LCAxNTMsIDExLCAKLSAgICAyMywgMzIsIDQsIDY5LCAxMSwgMjMsIDMyLCA0LCAyMTQsIDEwNSwgMTEsIDIzLCAzMiwgNCwgMjEyLCA5OCwgMTEsIDIzLCAKLSAgICAzMiwgNCwgMjExLCAxNzgsIDExLCAyMywgMzIsIDQsIDIxMSwgMTE3LCAxMSwgMjMsIDMyLCA0LCAyMTAsIDE1OSwgMTEsIAotICAgIDExOSwgNiwgNjEsIDExLCAxMTksIDYsIDI1MSwgNzQsIDExLCAxMTksIDYsIDI0OSwgNjgsIDExLCAxMTksIDYsIDI0MywgCi0gICAgMjA5LCAxMSwgMTE5LCA2LCAyMzUsIDE1MCwgMTEsIDExOSwgNiwgMjM1LCAyOSwgMTEsIDExOSwgNiwgMjMwLCAzMCwgMTEsIAotICAgIDExOSwgNiwgNzgsIDExLCAxMTksIDYsIDIyNiwgMTA5LCAxMSwgMTE5LCA2LCAyMjQsIDk5LCAxMSwgMTE5LCA2LCAyMjIsIAotICAgIDkzLCAxMSwgMTE5LCA2LCAyMTcsIDE1MywgMTEsIDExOSwgNiwgNjksIDExLCAxMTksIDYsIDIxNCwgMTA1LCAxMSwgMTE5LCAKLSAgICA2LCAyMTIsIDk4LCAxMSwgMTE5LCA2LCAyMTEsIDE3OCwgMTEsIDExOSwgNiwgMjExLCAxMTcsIDExLCAxMTksIDYsIDIxMCwgCi0gICAgMTU5LCAxMSwgMTE5LCA0LCA2MSwgMTEsIDExOSwgNCwgMjUzLCAxNjYsIDExLCAxMTksIDQsIDI1MSwgNzQsIDExLCAxMTksIAotICAgIDQsIDI0OSwgNjgsIDExLCAxMTksIDQsIDI0NSwgMTQsIDExLCAxMTksIDQsIDI0MiwgNjcsIDExLCAxMTksIDQsIDc0LCAxMSwgCi0gICAgMTE5LCA0LCAyMzUsIDE1MCwgMTEsIDExOSwgNCwgMjM1LCAyOSwgMTEsIDExOSwgNCwgMTU2LCAxMSwgMTE5LCA0LCAxOTQsIAotICAgIDExLCAxMTksIDQsIDIzMCwgMzAsIDExLCAxMTksIDQsIDIyNiwgMTA5LCAxMSwgMTE5LCA0LCAyMjQsIDk5LCAxMSwgMTE5LCAKLSAgICA0LCAxNTMsIDExLCAxMTksIDQsIDIyMiwgOTMsIDExLCAxMTksIDQsIDIxNywgMTUzLCAxMSwgMTE5LCA0LCA2OSwgMTEsIAotICAgIDExOSwgNCwgMjE0LCAxMDUsIDExLCAxMTksIDQsIDIxMiwgOTgsIDExLCAxMTksIDQsIDIxMSwgMTc4LCAxMSwgMTE5LCA0LCAKLSAgICAyMTEsIDExNywgMTEsIDExOSwgNCwgMjEwLCAxNTksIDExLCAyMywgMTE5LCA2LCA2MSwgMTEsIDIzLCAxMTksIDYsIDI1MywgCi0gICAgMTY2LCAxMSwgMjMsIDExOSwgNiwgMjUxLCA3NCwgMTEsIDIzLCAxMTksIDYsIDI0OSwgNjgsIDExLCAyMywgMTE5LCA2LCAKLSAgICA3NiwgMTEsIDIzLCAxMTksIDYsIDI0NSwgMTQsIDExLCAyMywgMTE5LCA2LCAyNDMsIDIwOSwgMTEsIDIzLCAxMTksIDYsIAotICAgIDI0MiwgNjcsIDExLCAyMywgMTE5LCA2LCA3NCwgMTEsIDIzLCAxMTksIDYsIDIzNSwgMTUwLCAxMSwgMjMsIDExOSwgNiwgCi0gICAgMjM1LCAyOSwgMTEsIDIzLCAxMTksIDYsIDE1NiwgMTEsIDIzLCAxMTksIDYsIDE5NCwgMTEsIDIzLCAxMTksIDYsIDIzMCwgCi0gICAgMzAsIDExLCAyMywgMTE5LCA2LCA3OCwgMTEsIDIzLCAxMTksIDYsIDIyNiwgMTA5LCAxMSwgMjMsIDExOSwgNiwgMjI0LCAKLSAgICA5OSwgMTEsIDIzLCAxMTksIDYsIDE1MywgMTEsIDIzLCAxMTksIDYsIDIyMiwgOTMsIDExLCAyMywgMTE5LCA2LCAyMTcsIAotICAgIDE1MywgMTEsIDIzLCAxMTksIDYsIDY5LCAxMSwgMjMsIDExOSwgNiwgMjE0LCAxMDUsIDExLCAyMywgMTE5LCA2LCAyMTIsIAotICAgIDk4LCAxMSwgMjMsIDExOSwgNiwgMjExLCAxNzgsIDExLCAyMywgMTE5LCA2LCAyMTEsIDExNywgMTEsIDIzLCAxMTksIDYsIAotICAgIDIxMCwgMTU5LCAxMSwgMjMsIDExOSwgNCwgNjEsIDExLCAyMywgMTE5LCA0LCAyNTMsIDE2NiwgMTEsIDIzLCAxMTksIDQsIAotICAgIDI1MSwgNzQsIDExLCAyMywgMTE5LCA0LCAyNDksIDY4LCAxMSwgMjMsIDExOSwgNCwgNzYsIDExLCAyMywgMTE5LCA0LCAKLSAgICAyNDUsIDE0LCAxMSwgMjMsIDExOSwgNCwgMjQzLCAyMDksIDExLCAyMywgMTE5LCA0LCAyNDIsIDY3LCAxMSwgMjMsIDExOSwgCi0gICAgNCwgNzQsIDExLCAyMywgMTE5LCA0LCAyMzUsIDE1MCwgMTEsIDIzLCAxMTksIDQsIDIzNSwgMjksIDExLCAyMywgMTE5LCA0LCAKLSAgICAxNTYsIDExLCAyMywgMTE5LCA0LCAxOTQsIDExLCAyMywgMTE5LCA0LCAyMzAsIDMwLCAxMSwgMjMsIDExOSwgNCwgNzgsIAotICAgIDExLCAyMywgMTE5LCA0LCAyMjYsIDEwOSwgMTEsIDIzLCAxMTksIDQsIDIyNCwgOTksIDExLCAyMywgMTE5LCA0LCAxNTMsIAotICAgIDExLCAyMywgMTE5LCA0LCAyMjIsIDkzLCAxMSwgMjMsIDExOSwgNCwgMjE3LCAxNTMsIDExLCAyMywgMTE5LCA0LCA2OSwgCi0gICAgMTEsIDIzLCAxMTksIDQsIDIxNCwgMTA1LCAxMSwgMjMsIDExOSwgNCwgMjEyLCA5OCwgMTEsIDIzLCAxMTksIDQsIDIxMSwgCi0gICAgMTc4LCAxMSwgMjMsIDExOSwgNCwgMjExLCAxMTcsIDExLCAyMywgMTE5LCA0LCAyMTAsIDE1OSwgMTEsIDEzMywgNiwgNjEsIAotICAgIDExLCAxMzMsIDYsIDI1MywgMTY2LCAxMSwgMTMzLCA2LCAyNDksIDY4LCAxMSwgMTMzLCA2LCA3NiwgMTEsIDEzMywgNiwgCi0gICAgMjQ1LCAxNCwgMTEsIDEzMywgNiwgMjQzLCAyMDksIDExLCAxMzMsIDYsIDIzNSwgMTUwLCAxMSwgMTMzLCA2LCAyMzUsIDI5LCAKLSAgICAxMSwgMTMzLCA2LCAxNTYsIDExLCAxMzMsIDYsIDE5NCwgMTEsIDEzMywgNiwgMjMwLCAzMCwgMTEsIDEzMywgNiwgNzgsIAotICAgIDExLCAxMzMsIDYsIDIyNiwgMTA5LCAxMSwgMTMzLCA2LCAyMjQsIDk5LCAxMSwgMTMzLCA2LCAyMjIsIDkzLCAxMSwgMTMzLCAKLSAgICA2LCAyMTcsIDE1MywgMTEsIDEzMywgNiwgNjksIDExLCAxMzMsIDYsIDIxNCwgMTA1LCAxMSwgMTMzLCA2LCAyMTIsIDk4LCAKLSAgICAxMSwgMTMzLCA2LCAyMTEsIDE3OCwgMTEsIDEzMywgNiwgMjExLCAxMTcsIDExLCAxMzMsIDQsIDYxLCAxMSwgMTMzLCA0LCAKLSAgICAyNTMsIDE2NiwgMTEsIDEzMywgNCwgMjUxLCA3NCwgMTEsIDEzMywgNCwgMjQ5LCA2OCwgMTEsIDEzMywgNCwgNzYsIDExLCAKLSAgICAxMzMsIDQsIDI0NSwgMTQsIDExLCAxMzMsIDQsIDI0MywgMjA5LCAxMSwgMTMzLCA0LCAyNDIsIDY3LCAxMSwgMTMzLCA0LCAKLSAgICA3NCwgMTEsIDEzMywgNCwgMjM1LCAxNTAsIDExLCAxMzMsIDQsIDIzNSwgMjksIDExLCAxMzMsIDQsIDE1NiwgMTEsIDEzMywgCi0gICAgNCwgMTk0LCAxMSwgMTMzLCA0LCAyMzAsIDMwLCAxMSwgMTMzLCA0LCA3OCwgMTEsIDEzMywgNCwgMjI2LCAxMDksIDExLCAKLSAgICAxMzMsIDQsIDIyNCwgOTksIDExLCAxMzMsIDQsIDE1MywgMTEsIDEzMywgNCwgMjIyLCA5MywgMTEsIDEzMywgNCwgMjE3LCAKLSAgICAxNTMsIDExLCAxMzMsIDQsIDY5LCAxMSwgMTMzLCA0LCAyMTQsIDEwNSwgMTEsIDEzMywgNCwgMjEyLCA5OCwgMTEsIDEzMywgCi0gICAgNCwgMjExLCAxNzgsIDExLCAxMzMsIDQsIDIxMSwgMTE3LCAxMSwgMTMzLCA0LCAyMTAsIDE1OSwgMTEsIDEzOSwgNiwgNjEsIAotICAgIDExLCAxMzksIDYsIDI1MywgMTY2LCAxMSwgMTM5LCA2LCAyNDksIDY4LCAxMSwgMTM5LCA2LCA3NiwgMTEsIDEzOSwgNiwgCi0gICAgMjQ1LCAxNCwgMTEsIDEzOSwgNiwgMjQzLCAyMDksIDExLCAxMzksIDYsIDc0LCAxMSwgMTM5LCA2LCAyMzUsIDE1MCwgMTEsIAotICAgIDEzOSwgNiwgMjM1LCAyOSwgMTEsIDEzOSwgNiwgMTU2LCAxMSwgMTM5LCA2LCAxOTQsIDExLCAxMzksIDYsIDc4LCAxMSwgCi0gICAgMTM5LCA2LCAyMjIsIDkzLCAxMSwgMTM5LCA2LCAyMTcsIDE1MywgMTEsIDEzOSwgNiwgNjksIDExLCAxMzksIDYsIDIxNCwgCi0gICAgMTA1LCAxMSwgMTM5LCA2LCAyMTIsIDk4LCAxMSwgMTM5LCA2LCAyMTEsIDE3OCwgMTEsIDEzOSwgNiwgMjExLCAxMTcsIDExLCAKLSAgICAxMzksIDQsIDYxLCAxMSwgMTM5LCA0LCAyNTMsIDE2NiwgMTEsIDEzOSwgNCwgMjUxLCA3NCwgMTEsIDEzOSwgNCwgMjQ5LCAKLSAgICA2OCwgMTEsIDEzOSwgNCwgNzYsIDExLCAxMzksIDQsIDI0NSwgMTQsIDExLCAxMzksIDQsIDI0MywgMjA5LCAxMSwgMTM5LCAKLSAgICA0LCAyNDIsIDY3LCAxMSwgMTM5LCA0LCA3NCwgMTEsIDEzOSwgNCwgMjM1LCAxNTAsIDExLCAxMzksIDQsIDIzNSwgMjksIAotICAgIDExLCAxMzksIDQsIDE1NiwgMTEsIDEzOSwgNCwgMTk0LCAxMSwgMTM5LCA0LCAyMzAsIDMwLCAxMSwgMTM5LCA0LCA3OCwgCi0gICAgMTEsIDEzOSwgNCwgMjI2LCAxMDksIDExLCAxMzksIDQsIDIyNCwgOTksIDExLCAxMzksIDQsIDE1MywgMTEsIDEzOSwgNCwgCi0gICAgMjIyLCA5MywgMTEsIDEzOSwgNCwgMjE3LCAxNTMsIDExLCAxMzksIDQsIDY5LCAxMSwgMTM5LCA0LCAyMTQsIDEwNSwgMTEsIAotICAgIDEzOSwgNCwgMjEyLCA5OCwgMTEsIDEzOSwgNCwgMjExLCAxNzgsIDExLCAxMzksIDQsIDIxMSwgMTE3LCAxMSwgMTM5LCA0LCAKLSAgICAyMTAsIDE1OSwgMTEsIDIzLCAxMzMsIDYsIDYxLCAxMSwgMjMsIDEzMywgNiwgMjUzLCAxNjYsIDExLCAyMywgMTMzLCA2LCAKLSAgICAyNTEsIDc0LCAxMSwgMjMsIDEzMywgNiwgMjQ5LCA2OCwgMTEsIDIzLCAxMzMsIDYsIDc2LCAxMSwgMjMsIDEzMywgNiwgCi0gICAgMjQ1LCAxNCwgMTEsIDIzLCAxMzMsIDYsIDI0MywgMjA5LCAxMSwgMjMsIDEzMywgNiwgMjQyLCA2NywgMTEsIDIzLCAxMzMsIAotICAgIDYsIDc0LCAxMSwgMjMsIDEzMywgNiwgMjM1LCAxNTAsIDExLCAyMywgMTMzLCA2LCAyMzUsIDI5LCAxMSwgMjMsIDEzMywgNiwgCi0gICAgMTU2LCAxMSwgMjMsIDEzMywgNiwgMTk0LCAxMSwgMjMsIDEzMywgNiwgMjMwLCAzMCwgMTEsIDIzLCAxMzMsIDYsIDc4LCAKLSAgICAxMSwgMjMsIDEzMywgNiwgMjI2LCAxMDksIDExLCAyMywgMTMzLCA2LCAyMjQsIDk5LCAxMSwgMjMsIDEzMywgNiwgMTUzLCAKLSAgICAxMSwgMjMsIDEzMywgNiwgMjIyLCA5MywgMTEsIDIzLCAxMzMsIDYsIDIxNywgMTUzLCAxMSwgMjMsIDEzMywgNiwgNjksIAotICAgIDExLCAyMywgMTMzLCA2LCAyMTQsIDEwNSwgMTEsIDIzLCAxMzMsIDYsIDIxMiwgOTgsIDExLCAyMywgMTMzLCA2LCAyMTEsIAotICAgIDE3OCwgMTEsIDIzLCAxMzMsIDYsIDIxMSwgMTE3LCAxMSwgMjMsIDEzMywgNiwgMjEwLCAxNTksIDExLCAyMywgMTMzLCA0LCAKLSAgICA2MSwgMTEsIDIzLCAxMzMsIDQsIDI1MywgMTY2LCAxMSwgMjMsIDEzMywgNCwgMjUxLCA3NCwgMTEsIDIzLCAxMzMsIDQsIAotICAgIDI0OSwgNjgsIDExLCAyMywgMTMzLCA0LCA3NiwgMTEsIDIzLCAxMzMsIDQsIDI0NSwgMTQsIDExLCAyMywgMTMzLCA0LCAKLSAgICAyNDMsIDIwOSwgMTEsIDIzLCAxMzMsIDQsIDI0MiwgNjcsIDExLCAyMywgMTMzLCA0LCA3NCwgMTEsIDIzLCAxMzMsIDQsIAotICAgIDIzNSwgMTUwLCAxMSwgMjMsIDEzMywgNCwgMjM1LCAyOSwgMTEsIDIzLCAxMzMsIDQsIDE1NiwgMTEsIDIzLCAxMzMsIDQsIAotICAgIDE5NCwgMTEsIDIzLCAxMzMsIDQsIDIzMCwgMzAsIDExLCAyMywgMTMzLCA0LCA3OCwgMTEsIDIzLCAxMzMsIDQsIDIyNiwgCi0gICAgMTA5LCAxMSwgMjMsIDEzMywgNCwgMjI0LCA5OSwgMTEsIDIzLCAxMzMsIDQsIDE1MywgMTEsIDIzLCAxMzMsIDQsIDIyMiwgCi0gICAgOTMsIDExLCAyMywgMTMzLCA0LCAyMTcsIDE1MywgMTEsIDIzLCAxMzMsIDQsIDY5LCAxMSwgMjMsIDEzMywgNCwgMjE0LCAKLSAgICAxMDUsIDExLCAyMywgMTMzLCA0LCAyMTIsIDk4LCAxMSwgMjMsIDEzMywgNCwgMjExLCAxNzgsIDExLCAyMywgMTMzLCA0LCAKLSAgICAyMTEsIDExNywgMTEsIDIzLCAxMzMsIDQsIDIxMCwgMTU5LCAxMSwgMzUsIDYsIDYxLCAxMSwgMzUsIDYsIDI1MywgMTY2LCAKLSAgICAxMSwgMzUsIDYsIDI1MSwgNzQsIDExLCAzNSwgNiwgMjQ5LCA2OCwgMTEsIDM1LCA2LCA3NiwgMTEsIDM1LCA2LCAyNDUsIAotICAgIDE0LCAxMSwgMzUsIDYsIDI0MywgMjA5LCAxMSwgMzUsIDYsIDI0MiwgNjcsIDExLCAzNSwgNiwgNzQsIDExLCAzNSwgNiwgCi0gICAgMjM1LCAxNTAsIDExLCAzNSwgNiwgMjM1LCAyOSwgMTEsIDM1LCA2LCAxNTYsIDExLCAzNSwgNiwgMTk0LCAxMSwgMzUsIDYsIAotICAgIDIzMCwgMzAsIDExLCAzNSwgNiwgNzgsIDExLCAzNSwgNiwgMjI2LCAxMDksIDExLCAzNSwgNiwgMjI0LCA5OSwgMTEsIDM1LCAKLSAgICA2LCAxNTMsIDExLCAzNSwgNiwgMjIyLCA5MywgMTEsIDM1LCA2LCAyMTcsIDE1MywgMTEsIDM1LCA2LCA2OSwgMTEsIDM1LCAKLSAgICA2LCAyMTQsIDEwNSwgMTEsIDM1LCA2LCAyMTIsIDk4LCAxMSwgMzUsIDYsIDIxMSwgMTc4LCAxMSwgMzUsIDYsIDIxMSwgCi0gICAgMTE3LCAxMSwgMzUsIDYsIDIxMCwgMTU5LCAxMSwgMzUsIDQsIDYxLCAxMSwgMzUsIDQsIDI1MywgMTY2LCAxMSwgMzUsIDQsIAotICAgIDI1MSwgNzQsIDExLCAzNSwgNCwgMjQ5LCA2OCwgMTEsIDM1LCA0LCA3NiwgMTEsIDM1LCA0LCAyNDUsIDE0LCAxMSwgMzUsIAotICAgIDQsIDI0MywgMjA5LCAxMSwgMzUsIDQsIDI0MiwgNjcsIDExLCAzNSwgNCwgNzQsIDExLCAzNSwgNCwgMjM1LCAxNTAsIDExLCAKLSAgICAzNSwgNCwgMjM1LCAyOSwgMTEsIDM1LCA0LCAxNTYsIDExLCAzNSwgNCwgMTk0LCAxMSwgMzUsIDQsIDIzMCwgMzAsIDExLCAKLSAgICAzNSwgNCwgNzgsIDExLCAzNSwgNCwgMjI2LCAxMDksIDExLCAzNSwgNCwgMjI0LCA5OSwgMTEsIDM1LCA0LCAxNTMsIDExLCAKLSAgICAzNSwgNCwgMjIyLCA5MywgMTEsIDM1LCA0LCAyMTcsIDE1MywgMTEsIDM1LCA0LCA2OSwgMTEsIDM1LCA0LCAyMTQsIDEwNSwgCi0gICAgMTEsIDM1LCA0LCAyMTIsIDk4LCAxMSwgMzUsIDQsIDIxMSwgMTc4LCAxMSwgMzUsIDQsIDIxMSwgMTE3LCAxMSwgMzUsIDQsIAotICAgIDIxMCwgMTU5LCAxMSwgMzUsIDIzLCA2LCA2MSwgMTEsIDM1LCAyMywgNiwgMjUzLCAxNjYsIDExLCAzNSwgMjMsIDYsIDI1MSwgCi0gICAgNzQsIDExLCAzNSwgMjMsIDYsIDI0OSwgNjgsIDExLCAzNSwgMjMsIDYsIDc2LCAxMSwgMzUsIDIzLCA2LCAyNDUsIDE0LCAKLSAgICAxMSwgMzUsIDIzLCA2LCAyNDMsIDIwOSwgMTEsIDM1LCAyMywgNiwgMjQyLCA2NywgMTEsIDM1LCAyMywgNiwgNzQsIDExLCAKLSAgICAzNSwgMjMsIDYsIDIzNSwgMTUwLCAxMSwgMzUsIDIzLCA2LCAyMzUsIDI5LCAxMSwgMzUsIDIzLCA2LCAxNTYsIDExLCAzNSwgCi0gICAgMjMsIDYsIDE5NCwgMTEsIDM1LCAyMywgNiwgMjMwLCAzMCwgMTEsIDM1LCAyMywgNiwgNzgsIDExLCAzNSwgMjMsIDYsIAotICAgIDIyNiwgMTA5LCAxMSwgMzUsIDIzLCA2LCAyMjQsIDk5LCAxMSwgMzUsIDIzLCA2LCAxNTMsIDExLCAzNSwgMjMsIDYsIDIyMiwgCi0gICAgOTMsIDExLCAzNSwgMjMsIDYsIDIxNywgMTUzLCAxMSwgMzUsIDIzLCA2LCA2OSwgMTEsIDM1LCAyMywgNiwgMjE0LCAxMDUsIAotICAgIDExLCAzNSwgMjMsIDYsIDIxMiwgOTgsIDExLCAzNSwgMjMsIDYsIDIxMSwgMTc4LCAxMSwgMzUsIDIzLCA2LCAyMTEsIDExNywgCi0gICAgMTEsIDM1LCAyMywgNiwgMjEwLCAxNTksIDExLCAzNSwgMjMsIDQsIDYxLCAxMSwgMzUsIDIzLCA0LCAyNTMsIDE2NiwgMTEsIAotICAgIDM1LCAyMywgNCwgMjUxLCA3NCwgMTEsIDM1LCAyMywgNCwgMjQ5LCA2OCwgMTEsIDM1LCAyMywgNCwgNzYsIDExLCAzNSwgCi0gICAgMjMsIDQsIDI0NSwgMTQsIDExLCAzNSwgMjMsIDQsIDI0MywgMjA5LCAxMSwgMzUsIDIzLCA0LCAyNDIsIDY3LCAxMSwgMzUsIAotICAgIDIzLCA0LCA3NCwgMTEsIDM1LCAyMywgNCwgMjM1LCAxNTAsIDExLCAzNSwgMjMsIDQsIDIzNSwgMjksIDExLCAzNSwgMjMsIAotICAgIDQsIDE1NiwgMTEsIDM1LCAyMywgNCwgMTk0LCAxMSwgMzUsIDIzLCA0LCAyMzAsIDMwLCAxMSwgMzUsIDIzLCA0LCA3OCwgCi0gICAgMTEsIDM1LCAyMywgNCwgMjI2LCAxMDksIDExLCAzNSwgMjMsIDQsIDIyNCwgOTksIDExLCAzNSwgMjMsIDQsIDE1MywgMTEsIAotICAgIDM1LCAyMywgNCwgMjIyLCA5MywgMTEsIDM1LCAyMywgNCwgMjE3LCAxNTMsIDExLCAzNSwgMjMsIDQsIDY5LCAxMSwgMzUsIAotICAgIDIzLCA0LCAyMTQsIDEwNSwgMTEsIDM1LCAyMywgNCwgMjEyLCA5OCwgMTEsIDM1LCAyMywgNCwgMjExLCAxNzgsIDExLCAzNSwgCi0gICAgMjMsIDQsIDIxMSwgMTE3LCAxMSwgMzUsIDIzLCA0LCAyMTAsIDE1OSwgMTEsIDM1LCAzMiwgNiwgNjEsIDExLCAzNSwgMzIsIAotICAgIDYsIDI1MywgMTY2LCAxMSwgMzUsIDMyLCA2LCAyNTEsIDc0LCAxMSwgMzUsIDMyLCA2LCAyNDksIDY4LCAxMSwgMzUsIDMyLCAKLSAgICA2LCA3NiwgMTEsIDM1LCAzMiwgNiwgMjQ1LCAxNCwgMTEsIDM1LCAzMiwgNiwgMjQzLCAyMDksIDExLCAzNSwgMzIsIDYsIAotICAgIDI0MiwgNjcsIDExLCAzNSwgMzIsIDYsIDc0LCAxMSwgMzUsIDMyLCA2LCAyMzUsIDE1MCwgMTEsIDM1LCAzMiwgNiwgMjM1LCAKLSAgICAyOSwgMTEsIDM1LCAzMiwgNiwgMTU2LCAxMSwgMzUsIDMyLCA2LCAxOTQsIDExLCAzNSwgMzIsIDYsIDIzMCwgMzAsIDExLCAKLSAgICAzNSwgMzIsIDYsIDc4LCAxMSwgMzUsIDMyLCA2LCAyMjYsIDEwOSwgMTEsIDM1LCAzMiwgNiwgMjI0LCA5OSwgMTEsIDM1LCAKLSAgICAzMiwgNiwgMTUzLCAxMSwgMzUsIDMyLCA2LCAyMjIsIDkzLCAxMSwgMzUsIDMyLCA2LCAyMTcsIDE1MywgMTEsIDM1LCAzMiwgCi0gICAgNiwgNjksIDExLCAzNSwgMzIsIDYsIDIxNCwgMTA1LCAxMSwgMzUsIDMyLCA2LCAyMTIsIDk4LCAxMSwgMzUsIDMyLCA2LCAKLSAgICAyMTEsIDE3OCwgMTEsIDM1LCAzMiwgNiwgMjExLCAxMTcsIDExLCAzNSwgMzIsIDYsIDIxMCwgMTU5LCAxMSwgMzUsIDMyLCAKLSAgICA0LCA2MSwgMTEsIDM1LCAzMiwgNCwgMjUzLCAxNjYsIDExLCAzNSwgMzIsIDQsIDI1MSwgNzQsIDExLCAzNSwgMzIsIDQsIAotICAgIDI0OSwgNjgsIDExLCAzNSwgMzIsIDQsIDc2LCAxMSwgMzUsIDMyLCA0LCAyNDUsIDE0LCAxMSwgMzUsIDMyLCA0LCAyNDMsIAotICAgIDIwOSwgMTEsIDM1LCAzMiwgNCwgMjQyLCA2NywgMTEsIDM1LCAzMiwgNCwgNzQsIDExLCAzNSwgMzIsIDQsIDIzNSwgMTUwLCAKLSAgICAxMSwgMzUsIDMyLCA0LCAyMzUsIDI5LCAxMSwgMzUsIDMyLCA0LCAxNTYsIDExLCAzNSwgMzIsIDQsIDE5NCwgMTEsIDM1LCAKLSAgICAzMiwgNCwgMjMwLCAzMCwgMTEsIDM1LCAzMiwgNCwgNzgsIDExLCAzNSwgMzIsIDQsIDIyNiwgMTA5LCAxMSwgMzUsIDMyLCAKLSAgICA0LCAyMjQsIDk5LCAxMSwgMzUsIDMyLCA0LCAxNTMsIDExLCAzNSwgMzIsIDQsIDIyMiwgOTMsIDExLCAzNSwgMzIsIDQsIAotICAgIDIxNywgMTUzLCAxMSwgMzUsIDMyLCA0LCA2OSwgMTEsIDM1LCAzMiwgNCwgMjE0LCAxMDUsIDExLCAzNSwgMzIsIDQsIDIxMiwgCi0gICAgOTgsIDExLCAzNSwgMzIsIDQsIDIxMSwgMTc4LCAxMSwgMzUsIDMyLCA0LCAyMTEsIDExNywgMTEsIDM1LCAzMiwgNCwgMjEwLCAKLSAgICAxNTksIDExLCAzNSwgMjMsIDMyLCA2LCA2MSwgMTEsIDM1LCAyMywgMzIsIDYsIDI1MywgMTY2LCAxMSwgMzUsIDIzLCAzMiwgCi0gICAgNiwgMjUxLCA3NCwgMTEsIDM1LCAyMywgMzIsIDYsIDI0OSwgNjgsIDExLCAzNSwgMjMsIDMyLCA2LCA3NiwgMTEsIDM1LCAKLSAgICAyMywgMzIsIDYsIDI0NSwgMTQsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDMsIDIwOSwgMTEsIDM1LCAyMywgMzIsIDYsIDI0MiwgCi0gICAgNjcsIDExLCAzNSwgMjMsIDMyLCA2LCA3NCwgMTEsIDM1LCAyMywgMzIsIDYsIDIzNSwgMTUwLCAxMSwgMzUsIDIzLCAzMiwgCi0gICAgNiwgMjM1LCAyOSwgMTEsIDM1LCAyMywgMzIsIDYsIDE1NiwgMTEsIDM1LCAyMywgMzIsIDYsIDE5NCwgMTEsIDM1LCAyMywgCi0gICAgMzIsIDYsIDIzMCwgMzAsIDExLCAzNSwgMjMsIDMyLCA2LCA3OCwgMTEsIDM1LCAyMywgMzIsIDYsIDIyNiwgMTA5LCAxMSwgCi0gICAgMzUsIDIzLCAzMiwgNiwgMjI0LCA5OSwgMTEsIDM1LCAyMywgMzIsIDYsIDE1MywgMTEsIDM1LCAyMywgMzIsIDYsIDIyMiwgCi0gICAgOTMsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTcsIDE1MywgMTEsIDM1LCAyMywgMzIsIDYsIDY5LCAxMSwgMzUsIDIzLCAzMiwgCi0gICAgNiwgMjE0LCAxMDUsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTIsIDk4LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjExLCAxNzgsIDExLCAKLSAgICAzNSwgMjMsIDMyLCA2LCAyMTEsIDExNywgMTEsIDM1LCAyMywgMzIsIDYsIDIxMCwgMTU5LCAxMSwgMzUsIDIzLCAzMiwgNCwgCi0gICAgNjEsIDExLCAzNSwgMjMsIDMyLCA0LCAyNTMsIDE2NiwgMTEsIDM1LCAyMywgMzIsIDQsIDI1MSwgNzQsIDExLCAzNSwgMjMsIAotICAgIDMyLCA0LCAyNDksIDY4LCAxMSwgMzUsIDIzLCAzMiwgNCwgNzYsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDUsIDE0LCAxMSwgCi0gICAgMzUsIDIzLCAzMiwgNCwgMjQzLCAyMDksIDExLCAzNSwgMjMsIDMyLCA0LCAyNDIsIDY3LCAxMSwgMzUsIDIzLCAzMiwgNCwgCi0gICAgNzQsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzUsIDE1MCwgMTEsIDM1LCAyMywgMzIsIDQsIDIzNSwgMjksIDExLCAzNSwgMjMsIAotICAgIDMyLCA0LCAxNTYsIDExLCAzNSwgMjMsIDMyLCA0LCAxOTQsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzAsIDMwLCAxMSwgMzUsIAotICAgIDIzLCAzMiwgNCwgNzgsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjYsIDEwOSwgMTEsIDM1LCAyMywgMzIsIDQsIDIyNCwgOTksIAotICAgIDExLCAzNSwgMjMsIDMyLCA0LCAxNTMsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjIsIDkzLCAxMSwgMzUsIDIzLCAzMiwgNCwgCi0gICAgMjE3LCAxNTMsIDExLCAzNSwgMjMsIDMyLCA0LCA2OSwgMTEsIDM1LCAyMywgMzIsIDQsIDIxNCwgMTA1LCAxMSwgMzUsIDIzLCAKLSAgICAzMiwgNCwgMjEyLCA5OCwgMTEsIDM1LCAyMywgMzIsIDQsIDIxMSwgMTc4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjExLCAxMTcsIAotICAgIDExLCAzNSwgMjMsIDMyLCA0LCAyMTAsIDE1OSwgMTEsIDIzMCwgMTQzLCA2LCA2MSwgMTEsIDIzMCwgMTQzLCA2LCAyNTMsIAotICAgIDE2NiwgMTEsIDIzMCwgMTQzLCA2LCAyNTEsIDc0LCAxMSwgMjMwLCAxNDMsIDYsIDI0OSwgNjgsIDExLCAyMzAsIDE0MywgNiwgCi0gICAgNzYsIDExLCAyMzAsIDE0MywgNiwgMjQ1LCAxNCwgMTEsIDIzMCwgMTQzLCA2LCAyNDMsIDIwOSwgMTEsIDIzMCwgMTQzLCA2LCAKLSAgICAyNDIsIDY3LCAxMSwgMjMwLCAxNDMsIDYsIDc0LCAxMSwgMjMwLCAxNDMsIDYsIDIzNSwgMTUwLCAxMSwgMjMwLCAxNDMsIDYsIAotICAgIDIzNSwgMjksIDExLCAyMzAsIDE0MywgNiwgMTU2LCAxMSwgMjMwLCAxNDMsIDYsIDE5NCwgMTEsIDIzMCwgMTQzLCA2LCAKLSAgICAyMzAsIDMwLCAxMSwgMjMwLCAxNDMsIDYsIDc4LCAxMSwgMjMwLCAxNDMsIDYsIDIyNiwgMTA5LCAxMSwgMjMwLCAxNDMsIDYsIAotICAgIDIyNCwgOTksIDExLCAyMzAsIDE0MywgNiwgMTUzLCAxMSwgMjMwLCAxNDMsIDYsIDIyMiwgOTMsIDExLCAyMzAsIDE0MywgNiwgCi0gICAgMjE3LCAxNTMsIDExLCAyMzAsIDE0MywgNiwgNjksIDExLCAyMzAsIDE0MywgNiwgMjE0LCAxMDUsIDExLCAyMzAsIDE0MywgCi0gICAgNiwgMjEyLCA5OCwgMTEsIDIzMCwgMTQzLCA2LCAyMTEsIDE3OCwgMTEsIDIzMCwgMTQzLCA2LCAyMTEsIDExNywgMTEsIAotICAgIDIzMCwgMTQzLCA2LCAyMTAsIDE1OSwgMTEsIDIzMCwgMTQzLCA0LCA2MSwgMTEsIDIzMCwgMTQzLCA0LCAyNTMsIDE2NiwgCi0gICAgMTEsIDIzMCwgMTQzLCA0LCAyNTEsIDc0LCAxMSwgMjMwLCAxNDMsIDQsIDI0OSwgNjgsIDExLCAyMzAsIDE0MywgNCwgNzYsIAotICAgIDExLCAyMzAsIDE0MywgNCwgMjQ1LCAxNCwgMTEsIDIzMCwgMTQzLCA0LCAyNDMsIDIwOSwgMTEsIDIzMCwgMTQzLCA0LCAKLSAgICAyNDIsIDY3LCAxMSwgMjMwLCAxNDMsIDQsIDc0LCAxMSwgMjMwLCAxNDMsIDQsIDIzNSwgMTUwLCAxMSwgMjMwLCAxNDMsIDQsIAotICAgIDIzNSwgMjksIDExLCAyMzAsIDE0MywgNCwgMTU2LCAxMSwgMjMwLCAxNDMsIDQsIDE5NCwgMTEsIDIzMCwgMTQzLCA0LCAKLSAgICAyMzAsIDMwLCAxMSwgMjMwLCAxNDMsIDQsIDc4LCAxMSwgMjMwLCAxNDMsIDQsIDIyNiwgMTA5LCAxMSwgMjMwLCAxNDMsIDQsIAotICAgIDIyNCwgOTksIDExLCAyMzAsIDE0MywgNCwgMTUzLCAxMSwgMjMwLCAxNDMsIDQsIDIyMiwgOTMsIDExLCAyMzAsIDE0MywgNCwgCi0gICAgMjE3LCAxNTMsIDExLCAyMzAsIDE0MywgNCwgNjksIDExLCAyMzAsIDE0MywgNCwgMjE0LCAxMDUsIDExLCAyMzAsIDE0MywgCi0gICAgNCwgMjEyLCA5OCwgMTEsIDIzMCwgMTQzLCA0LCAyMTEsIDE3OCwgMTEsIDIzMCwgMTQzLCA0LCAyMTEsIDExNywgMTEsIAotICAgIDIzMCwgMTQzLCA0LCAyMTAsIDE1OSwgMTEsIDMyLCA0LCAyNDcsIDEyNywgNzQsIDExLCAzMiwgNCwgMjQ3LCAxMjcsIDIzNSwgCi0gICAgMTUwLCAxMSwgMjMsIDYsIDI1NCwgMTUxLCAxMSwgMjMsIDYsIDI1MiwgMzQsIDExLCAyMywgNiwgMjQzLCAxMTQsIDExLCAKLSAgICAyMywgNiwgMjQ4LCA2MiwgMTEsIDIzLCA2LCAyNDUsIDEwOCwgMTEsIDIzLCA2LCAyMTAsIDg1LCAxMSwgMjMsIDYsIDI0NSwgCi0gICAgNzEsIDExLCAyMywgNiwgMjE2LCAxODAsIDExLCAyMywgNiwgMjM1LCAxOTIsIDExLCAyMywgNiwgMjM0LCAyMjgsIDExLCAKLSAgICAyMywgNiwgMjMzLCAxMDQsIDExLCAyMywgNiwgMjMwLCAxMDcsIDExLCAyMywgNiwgMjI3LCAyNDIsIDExLCAyMywgNiwgCi0gICAgMjExLCAxNTcsIDExLCAyMywgNiwgMjI2LCAyMDMsIDExLCAyMywgNiwgMjI1LCAxMTEsIDExLCAyMywgNiwgMjIzLCA0MCwgCi0gICAgMTEsIDIzLCA2LCAyMTYsIDE4MSwgODcsIDExLCAyMywgNiwgMjE5LCAxNzksIDExLCAyMywgNiwgMjE3LCA0MiwgMTEsIDIzLCAKLSAgICA2LCAyMTQsIDE1NywgMTEsIDIzLCA2LCAyMjUsIDEzNiwgMTEsIDIzLCA2LCAyNTAsIDExOCwgMTEsIDIzLCA2LCAyMjQsIAotICAgIDE2NCwgMTEsIDIzLCA2LCAyMjYsIDIwNSwgMTEsIDIzLCAyMjksIDIyNiwgMTEsIDIzLCA0LCAyNTQsIDE1MSwgMTEsIDIzLCAKLSAgICA0LCAyNTIsIDM0LCAxMSwgMjMsIDQsIDI0MywgMTE0LCAxMSwgMjMsIDQsIDI0OCwgNjIsIDExLCAyMywgNCwgMjQ1LCAxMDgsIAotICAgIDExLCAyMywgNCwgMjEwLCA4NSwgMTEsIDIzLCA0LCAyNDUsIDcxLCAxMSwgMjMsIDQsIDIxNiwgMTgwLCAxMSwgMjMsIDQsIAotICAgIDIzNSwgMTkyLCAxMSwgMjMsIDQsIDIzNCwgMjI4LCAxMSwgMjMsIDQsIDIzMywgMTA0LCAxMSwgMjMsIDQsIDIzMCwgMTA3LCAKLSAgICAxMSwgMjMsIDQsIDIyNywgMjQyLCAxMSwgMjMsIDQsIDIxMSwgMTU3LCAxMSwgMjMsIDQsIDIyNiwgMjAzLCAxMSwgMjMsIDQsIAotICAgIDIyNSwgMTExLCAxMSwgMjMsIDQsIDIyMywgNDAsIDExLCAyMywgNCwgNDAsIDIxOSwgMTc5LCAxMSwgMjMsIDQsIDIxOSwgCi0gICAgMTc5LCAxMSwgMjMsIDQsIDIxNywgNDIsIDExLCAyMywgNCwgMjE0LCAxNTcsIDExLCAyMywgNCwgMjI1LCAxMzYsIDExLCAKLSAgICAyMywgNCwgMjUwLCAxMTgsIDExLCAyMywgNCwgMjI0LCAxNjQsIDExLCAyMywgNCwgMjI2LCAyMDUsIDExLCAyMywgMjI2LCAKLSAgICAxLCAyNDcsIDI0MSwgMTEsIDIzLCAyNDUsIDEwOSwgODcsIDExLCAyMywgMjE2LCAxODEsIDg3LCAxMSwgMjMsIDIzNCwgCi0gICAgMjI5LCA4NywgMTEsIDIzLCAyMjUsIDEzNywgODcsIDExLCAyMywgMjIzLCA0MSwgODcsIDExLCAyMywgMjI1LCAxMTIsIDg3LCAKLSAgICAxMSwgMzIsIDYsIDI1NCwgMTUxLCAxMSwgMzIsIDYsIDI1MiwgMzQsIDExLCAzMiwgNiwgMjQzLCAxMTQsIDExLCAzMiwgNiwgCi0gICAgMjQ4LCA2MiwgMTEsIDMyLCA2LCAyNDUsIDEwOCwgMTEsIDMyLCA2LCAyMTAsIDg1LCAxMSwgMzIsIDYsIDI0NSwgNzEsIDExLCAKLSAgICAzMiwgNiwgMjE2LCAxODAsIDExLCAzMiwgNiwgMjM1LCAxOTIsIDExLCAzMiwgNiwgMjM0LCAyMjgsIDExLCAzMiwgNiwgCi0gICAgMjMzLCAxMDQsIDExLCAzMiwgNiwgMjMwLCAxMDcsIDExLCAzMiwgNiwgMjI3LCAyNDIsIDExLCAzMiwgNiwgMjExLCAxNTcsIAotICAgIDExLCAzMiwgNiwgMjI2LCAyMDMsIDExLCAzMiwgNiwgMjI1LCAxMTEsIDExLCAzMiwgNiwgMjIzLCA0MCwgMTEsIDMyLCA2LCAKLSAgICAyMTYsIDE4MSwgODcsIDExLCAzMiwgNiwgMjE5LCAxNzksIDExLCAzMiwgNiwgMjE3LCA0MiwgMTEsIDMyLCA2LCAyMTQsIAotICAgIDE1NywgMTEsIDMyLCA2LCAyMjUsIDEzNiwgMTEsIDMyLCA2LCAyNTAsIDExOCwgMTEsIDMyLCA2LCAyMjQsIDE2NCwgMTEsIAotICAgIDMyLCA2LCAyMjYsIDIwNSwgMTEsIDMyLCAyMjksIDIyNiwgMTEsIDMyLCA0LCAyNTQsIDE1MSwgMTEsIDMyLCA0LCAyNTIsIAotICAgIDM0LCAxMSwgMzIsIDQsIDI0MywgMTE0LCAxMSwgMzIsIDQsIDI0OCwgNjIsIDExLCAzMiwgNCwgMjQ1LCAxMDgsIDExLCAzMiwgCi0gICAgNCwgMjEwLCA4NSwgMTEsIDMyLCA0LCAyNDUsIDcxLCAxMSwgMzIsIDQsIDIxNiwgMTgwLCAxMSwgMzIsIDQsIDIzNSwgMTkyLCAKLSAgICAxMSwgMzIsIDQsIDIzNCwgMjI4LCAxMSwgMzIsIDQsIDIzMywgMTA0LCAxMSwgMzIsIDQsIDIzMCwgMTA3LCAxMSwgMzIsIDQsIAotICAgIDIyNywgMjQyLCAxMSwgMzIsIDQsIDIxMSwgMTU3LCAxMSwgMzIsIDQsIDIyNiwgMjAzLCAxMSwgMzIsIDQsIDIyNSwgMTExLCAKLSAgICAxMSwgMzIsIDQsIDIyMywgNDAsIDExLCAzMiwgNCwgNDAsIDIxOSwgMTc5LCAxMSwgMzIsIDQsIDIxOSwgMTc5LCAxMSwgMzIsIAotICAgIDQsIDIxNywgNDIsIDExLCAzMiwgNCwgMjE0LCAxNTcsIDExLCAzMiwgNCwgMjI1LCAxMzYsIDExLCAzMiwgNCwgMjUwLCAKLSAgICAxMTgsIDExLCAzMiwgNCwgMjI0LCAxNjQsIDExLCAzMiwgNCwgMjI2LCAyMDUsIDExLCAzMiwgMjI2LCAxLCAyNDcsIDI0MSwgCi0gICAgMTEsIDMyLCAyNDUsIDEwOSwgODcsIDExLCAzMiwgMjE2LCAxODEsIDg3LCAxMSwgMzIsIDIzNCwgMjI5LCA4NywgMTEsIDMyLCAKLSAgICAyMjUsIDEzNywgODcsIDExLCAzMiwgMjIzLCA0MSwgODcsIDExLCAzMiwgMjI1LCAxMTIsIDg3LCAxMSwgMjMsIDMyLCA2LCAKLSAgICAyNTQsIDE1MSwgMTEsIDIzLCAzMiwgNiwgMjUyLCAzNCwgMTEsIDIzLCAzMiwgNiwgMjQzLCAxMTQsIDExLCAyMywgMzIsIDYsIAotICAgIDI0OCwgNjIsIDExLCAyMywgMzIsIDYsIDI0NSwgMTA4LCAxMSwgMjMsIDMyLCA2LCAyMTAsIDg1LCAxMSwgMjMsIDMyLCA2LCAKLSAgICAyNDUsIDcxLCAxMSwgMjMsIDMyLCA2LCAyMTYsIDE4MCwgMTEsIDIzLCAzMiwgNiwgMjM1LCAxOTIsIDExLCAyMywgMzIsIDYsIAotICAgIDIzNCwgMjI4LCAxMSwgMjMsIDMyLCA2LCAyMzMsIDEwNCwgMTEsIDIzLCAzMiwgNiwgMjMwLCAxMDcsIDExLCAyMywgMzIsIAotICAgIDYsIDIyNywgMjQyLCAxMSwgMjMsIDMyLCA2LCAyMTEsIDE1NywgMTEsIDIzLCAzMiwgNiwgMjI2LCAyMDMsIDExLCAyMywgCi0gICAgMzIsIDYsIDIyNSwgMTExLCAxMSwgMjMsIDMyLCA2LCAyMjMsIDQwLCAxMSwgMjMsIDMyLCA2LCAyMTYsIDE4MSwgODcsIDExLCAKLSAgICAyMywgMzIsIDYsIDIxOSwgMTc5LCAxMSwgMjMsIDMyLCA2LCAyMTcsIDQyLCAxMSwgMjMsIDMyLCA2LCAyMTQsIDE1NywgMTEsIAotICAgIDIzLCAzMiwgNiwgMjI1LCAxMzYsIDExLCAyMywgMzIsIDYsIDI1MCwgMTE4LCAxMSwgMjMsIDMyLCA2LCAyMjQsIDE2NCwgCi0gICAgMTEsIDIzLCAzMiwgNiwgMjI2LCAyMDUsIDExLCAyMywgMzIsIDIyOSwgMjI2LCAxMSwgMjMsIDMyLCA0LCAyNTQsIDE1MSwgCi0gICAgMTEsIDIzLCAzMiwgNCwgMjUyLCAzNCwgMTEsIDIzLCAzMiwgNCwgMjQzLCAxMTQsIDExLCAyMywgMzIsIDQsIDI0OCwgNjIsIAotICAgIDExLCAyMywgMzIsIDQsIDI0NSwgMTA4LCAxMSwgMjMsIDMyLCA0LCAyMTAsIDg1LCAxMSwgMjMsIDMyLCA0LCAyNDUsIDcxLCAKLSAgICAxMSwgMjMsIDMyLCA0LCAyMTYsIDE4MCwgMTEsIDIzLCAzMiwgNCwgMjM1LCAxOTIsIDExLCAyMywgMzIsIDQsIDIzNCwgCi0gICAgMjI4LCAxMSwgMjMsIDMyLCA0LCAyMzMsIDEwNCwgMTEsIDIzLCAzMiwgNCwgMjMwLCAxMDcsIDExLCAyMywgMzIsIDQsIAotICAgIDIyNywgMjQyLCAxMSwgMjMsIDMyLCA0LCAyMTEsIDE1NywgMTEsIDIzLCAzMiwgNCwgMjI2LCAyMDMsIDExLCAyMywgMzIsIAotICAgIDQsIDIyNSwgMTExLCAxMSwgMjMsIDMyLCA0LCAyMjMsIDQwLCAxMSwgMjMsIDMyLCA0LCA0MCwgMjE5LCAxNzksIDExLCAyMywgCi0gICAgMzIsIDQsIDIxOSwgMTc5LCAxMSwgMjMsIDMyLCA0LCAyMTcsIDQyLCAxMSwgMjMsIDMyLCA0LCAyMTQsIDE1NywgMTEsIDIzLCAKLSAgICAzMiwgNCwgMjI1LCAxMzYsIDExLCAyMywgMzIsIDQsIDI1MCwgMTE4LCAxMSwgMjMsIDMyLCA0LCAyMjQsIDE2NCwgMTEsIAotICAgIDIzLCAzMiwgNCwgMjI2LCAyMDUsIDExLCAyMywgMzIsIDIyNiwgMSwgMjQ3LCAyNDEsIDExLCAyMywgMzIsIDI0NSwgMTA5LCAKLSAgICA4NywgMTEsIDIzLCAzMiwgMjE2LCAxODEsIDg3LCAxMSwgMjMsIDMyLCAyMzQsIDIyOSwgODcsIDExLCAyMywgMzIsIDIyNSwgCi0gICAgMTM3LCA4NywgMTEsIDIzLCAzMiwgMjIzLCA0MSwgODcsIDExLCAyMywgMzIsIDIyNSwgMTEyLCA4NywgMTEsIDM1LCAyMywgCi0gICAgNiwgMjU0LCAxNTEsIDExLCAzNSwgMjMsIDYsIDI1MiwgMzQsIDExLCAzNSwgMjMsIDYsIDI0MywgMTE0LCAxMSwgMzUsIDIzLCAKLSAgICA2LCAyNDgsIDYyLCAxMSwgMzUsIDIzLCA2LCAyNDUsIDEwOCwgMTEsIDM1LCAyMywgNiwgMjEwLCA4NSwgMTEsIDM1LCAyMywgCi0gICAgNiwgMjQ1LCA3MSwgMTEsIDM1LCAyMywgNiwgMjE2LCAxODAsIDExLCAzNSwgMjMsIDYsIDIzNSwgMTkyLCAxMSwgMzUsIDIzLCAKLSAgICA2LCAyMzQsIDIyOCwgMTEsIDM1LCAyMywgNiwgMjMzLCAxMDQsIDExLCAzNSwgMjMsIDYsIDIzMCwgMTA3LCAxMSwgMzUsIAotICAgIDIzLCA2LCAyMjcsIDI0MiwgMTEsIDM1LCAyMywgNiwgMjExLCAxNTcsIDExLCAzNSwgMjMsIDYsIDIyNiwgMjAzLCAxMSwgCi0gICAgMzUsIDIzLCA2LCAyMjUsIDExMSwgMTEsIDM1LCAyMywgNiwgMjIzLCA0MCwgMTEsIDM1LCAyMywgNiwgMjE2LCAxODEsIDg3LCAKLSAgICAxMSwgMzUsIDIzLCA2LCAyMTksIDE3OSwgMTEsIDM1LCAyMywgNiwgMjE3LCA0MiwgMTEsIDM1LCAyMywgNiwgMjE0LCAxNTcsIAotICAgIDExLCAzNSwgMjMsIDYsIDIyNSwgMTM2LCAxMSwgMzUsIDIzLCA2LCAyNTAsIDExOCwgMTEsIDM1LCAyMywgNiwgMjI0LCAKLSAgICAxNjQsIDExLCAzNSwgMjMsIDYsIDIyNiwgMjA1LCAxMSwgMzUsIDIzLCAyMjksIDIyNiwgMTEsIDM1LCAyMywgNCwgMjU0LCAKLSAgICAxNTEsIDExLCAzNSwgMjMsIDQsIDI1MiwgMzQsIDExLCAzNSwgMjMsIDQsIDI0MywgMTE0LCAxMSwgMzUsIDIzLCA0LCAyNDgsIAotICAgIDYyLCAxMSwgMzUsIDIzLCA0LCAyNDUsIDEwOCwgMTEsIDM1LCAyMywgNCwgMjEwLCA4NSwgMTEsIDM1LCAyMywgNCwgMjQ1LCAKLSAgICA3MSwgMTEsIDM1LCAyMywgNCwgMjE2LCAxODAsIDExLCAzNSwgMjMsIDQsIDIzNSwgMTkyLCAxMSwgMzUsIDIzLCA0LCAyMzQsIAotICAgIDIyOCwgMTEsIDM1LCAyMywgNCwgMjMzLCAxMDQsIDExLCAzNSwgMjMsIDQsIDIzMCwgMTA3LCAxMSwgMzUsIDIzLCA0LCAKLSAgICAyMjcsIDI0MiwgMTEsIDM1LCAyMywgNCwgMjExLCAxNTcsIDExLCAzNSwgMjMsIDQsIDIyNiwgMjAzLCAxMSwgMzUsIDIzLCAKLSAgICA0LCAyMjUsIDExMSwgMTEsIDM1LCAyMywgNCwgMjIzLCA0MCwgMTEsIDM1LCAyMywgNCwgNDAsIDIxOSwgMTc5LCAxMSwgMzUsIAotICAgIDIzLCA0LCAyMTksIDE3OSwgMTEsIDM1LCAyMywgNCwgMjE3LCA0MiwgMTEsIDM1LCAyMywgNCwgMjE0LCAxNTcsIDExLCAzNSwgCi0gICAgMjMsIDQsIDIyNSwgMTM2LCAxMSwgMzUsIDIzLCA0LCAyNTAsIDExOCwgMTEsIDM1LCAyMywgNCwgMjI0LCAxNjQsIDExLCAKLSAgICAzNSwgMjMsIDQsIDIyNiwgMjA1LCAxMSwgMzUsIDIzLCAyMjYsIDEsIDI0NywgMjQxLCAxMSwgMzUsIDIzLCAyNDUsIDEwOSwgCi0gICAgODcsIDExLCAzNSwgMjMsIDIxNiwgMTgxLCA4NywgMTEsIDM1LCAyMywgMjM0LCAyMjksIDg3LCAxMSwgMzUsIDIzLCAyMjUsIAotICAgIDEzNywgODcsIDExLCAzNSwgMjMsIDIyMywgNDEsIDg3LCAxMSwgMzUsIDIzLCAyMjUsIDExMiwgODcsIDExLCAzNSwgMjMsIAotICAgIDMyLCA2LCAyNTQsIDE1MSwgMTEsIDM1LCAyMywgMzIsIDYsIDI1MiwgMzQsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDMsIDExNCwgCi0gICAgMTEsIDM1LCAyMywgMzIsIDYsIDI0OCwgNjIsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDUsIDEwOCwgMTEsIDM1LCAyMywgMzIsIAotICAgIDYsIDIxMCwgODUsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDUsIDcxLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE2LCAxODAsIDExLCAKLSAgICAzNSwgMjMsIDMyLCA2LCAyMzUsIDE5MiwgMTEsIDM1LCAyMywgMzIsIDYsIDIzNCwgMjI4LCAxMSwgMzUsIDIzLCAzMiwgNiwgCi0gICAgMjMzLCAxMDQsIDExLCAzNSwgMjMsIDMyLCA2LCAyMzAsIDEwNywgMTEsIDM1LCAyMywgMzIsIDYsIDIyNywgMjQyLCAxMSwgCi0gICAgMzUsIDIzLCAzMiwgNiwgMjExLCAxNTcsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjYsIDIwMywgMTEsIDM1LCAyMywgMzIsIDYsIAotICAgIDIyNSwgMTExLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjIzLCA0MCwgMTEsIDM1LCAyMywgMzIsIDYsIDIxNiwgMTgxLCA4NywgCi0gICAgMTEsIDM1LCAyMywgMzIsIDYsIDIxOSwgMTc5LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE3LCA0MiwgMTEsIDM1LCAyMywgMzIsIAotICAgIDYsIDIxNCwgMTU3LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI1LCAxMzYsIDExLCAzNSwgMjMsIDMyLCA2LCAyNTAsIDExOCwgCi0gICAgMTEsIDM1LCAyMywgMzIsIDYsIDIyNCwgMTY0LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI2LCAyMDUsIDExLCAzNSwgMjMsIDMyLCAKLSAgICAyMjksIDIyNiwgMTEsIDM1LCAyMywgMzIsIDQsIDI1NCwgMTUxLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjUyLCAzNCwgMTEsIAotICAgIDM1LCAyMywgMzIsIDQsIDI0MywgMTE0LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQ4LCA2MiwgMTEsIDM1LCAyMywgMzIsIDQsIAotICAgIDI0NSwgMTA4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjEwLCA4NSwgMTEsIDM1LCAyMywgMzIsIDQsIDI0NSwgNzEsIDExLCAzNSwgCi0gICAgMjMsIDMyLCA0LCAyMTYsIDE4MCwgMTEsIDM1LCAyMywgMzIsIDQsIDIzNSwgMTkyLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjM0LCAKLSAgICAyMjgsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzMsIDEwNCwgMTEsIDM1LCAyMywgMzIsIDQsIDIzMCwgMTA3LCAxMSwgMzUsIAotICAgIDIzLCAzMiwgNCwgMjI3LCAyNDIsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTEsIDE1NywgMTEsIDM1LCAyMywgMzIsIDQsIDIyNiwgCi0gICAgMjAzLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI1LCAxMTEsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjMsIDQwLCAxMSwgMzUsIDIzLCAKLSAgICAzMiwgNCwgNDAsIDIxOSwgMTc5LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjE5LCAxNzksIDExLCAzNSwgMjMsIDMyLCA0LCAyMTcsIAotICAgIDQyLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjE0LCAxNTcsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjUsIDEzNiwgMTEsIDM1LCAyMywgCi0gICAgMzIsIDQsIDI1MCwgMTE4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI0LCAxNjQsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjYsIAotICAgIDIwNSwgMTEsIDM1LCAyMywgMzIsIDIyNiwgMSwgMjQ3LCAyNDEsIDExLCAzNSwgMjMsIDMyLCAyNDUsIDEwOSwgODcsIDExLCAKLSAgICAzNSwgMjMsIDMyLCAyMTYsIDE4MSwgODcsIDExLCAzNSwgMjMsIDMyLCAyMzQsIDIyOSwgODcsIDExLCAzNSwgMjMsIDMyLCAKLSAgICAyMjUsIDEzNywgODcsIDExLCAzNSwgMjMsIDMyLCAyMjMsIDQxLCA4NywgMTEsIDM1LCAyMywgMzIsIDIyNSwgMTEyLCA4NywgCi0gICAgMTEsIDIzLCA2LCAyNDcsIDIzNSwgMTEsIDIzLCA0LCAyNDcsIDIzNSwgMTEsIDIzLCAyMSwgMjEwLCA4NiwgMTEsIDIzLCAKLSAgICAyMSwgMTExLCAxMSwgMjMsIDIxLCAxMDUsIDExLCAyMywgMjEsIDE1OCwgMTEsIDIzLCAyMSwgMTYxLCAxMSwgMjMsIDIxLCAKLSAgICAxOTAsIDExLCAyMywgMjEsIDE5NSwgMTEsIDIzLCAyMSwgMTk5LCAxMSwgMjMsIDIxLCAxOTYsIDExLCAyMywgMjEsIDIwMSwgCi0gICAgMTEsIDEzOSwgMjEsIDIxMCwgODYsIDExLCAxMzksIDIxLCAxMTEsIDExLCAxMzksIDIxLCAxMDUsIDExLCAxMzksIDIxLCAKLSAgICAxNTgsIDExLCAxMzksIDIxLCAxNjEsIDExLCAxMzksIDIxLCAxOTAsIDExLCAxMzksIDIxLCAxOTUsIDExLCAxMzksIDIxLCAKLSAgICAxOTksIDExLCAxMzksIDIxLCAxOTYsIDExLCAxMzksIDIxLCAyMDEsIDExLCAzNSwgMjEsIDIxMCwgODYsIDExLCAzNSwgMjEsIAotICAgIDExMSwgMTEsIDM1LCAyMSwgMTA1LCAxMSwgMzUsIDIxLCAxNTgsIDExLCAzNSwgMjEsIDE2MSwgMTEsIDM1LCAyMSwgMTkwLCAKLSAgICAxMSwgMzUsIDIxLCAxOTUsIDExLCAzNSwgMjEsIDE5OSwgMTEsIDM1LCAyMSwgMTk2LCAxMSwgMzUsIDIxLCAyMDEsIDExLCAKLSAgICAzNSwgMjMsIDIxLCAyMTAsIDg2LCAxMSwgMzUsIDIzLCAyMSwgMTExLCAxMSwgMzUsIDIzLCAyMSwgMTA1LCAxMSwgMzUsIAotICAgIDIzLCAyMSwgMTU4LCAxMSwgMzUsIDIzLCAyMSwgMTYxLCAxMSwgMzUsIDIzLCAyMSwgMTkwLCAxMSwgMzUsIDIzLCAyMSwgCi0gICAgMTk1LCAxMSwgMzUsIDIzLCAyMSwgMTk5LCAxMSwgMzUsIDIzLCAyMSwgMTk2LCAxMSwgMzUsIDIzLCAyMSwgMjAxLCAxMSwgCi0gICAgMjMwLCAxNDMsIDIxLCAyMTAsIDg2LCAxMSwgMjMwLCAxNDMsIDIxLCAxMTEsIDExLCAyMzAsIDE0MywgMjEsIDEwNSwgMTEsIAotICAgIDIzMCwgMTQzLCAyMSwgMTU4LCAxMSwgMjMwLCAxNDMsIDIxLCAxNjEsIDExLCAyMzAsIDE0MywgMjEsIDE5MCwgMTEsIDIzMCwgCi0gICAgMTQzLCAyMSwgMTk1LCAxMSwgMjMwLCAxNDMsIDIxLCAxOTksIDExLCAyMzAsIDE0MywgMjEsIDE5NiwgMTEsIDIzMCwgMTQzLCAKLSAgICAyMSwgMjAxLCA5LCAxMSwgMjU0LCAxNzksIDksIDExLCAyNTIsIDYyLCA5LCAxMSwgMjM1LCAxMjksIDksIDExLCAyNDgsIAotICAgIDIwMywgOSwgMTEsIDIxMiwgMzAsIDksIDExLCAyMTAsIDEwOCwgOSwgMTEsIDI0MiwgNDQsIDksIDExLCAyMTcsIDgxLCA5LCAKLSAgICAxMSwgMjExLCA0MywgOSwgMTEsIDIzNSwgMCwgOSwgMTEsIDIzMywgMTA4LCA5LCAxMSwgMjMxLCA4MywgOSwgMTEsIDIyOCwgCi0gICAgNjcsIDksIDExLCAyMjEsIDE2OCwgOSwgMTEsIDI1NCwgMjA1LCA5LCAxMSwgMjQ0LCAxNTAsIDksIDExLCAyMjIsIDI4LCA5LCAKLSAgICAxMSwgMjI0LCA4NCwgOSwgMTEsIDIyMywgOTgsIDksIDExLCAyMjAsIDYxLCA5LCAxMSwgMjE3LCA4LCA5LCAxMSwgMjE2LCAKLSAgICAxOTMsIDksIDExLCAyMzQsIDEzNSwgOSwgMTEsIDIxNiwgMjAzLCA5LCAxMSwgMjQ4LCAyMjQsIDksIDExLCAyMTAsIDExMSwgCi0gICAgOSwgMTEsIDI0MiwgMjUxLCA5LCAxMSwgMjQ3LCAxMjcsIDI1MiwgNjIsIDksIDExLCAyNDcsIDEyNywgMjI4LCA2NywgOSwgCi0gICAgMTEsIDI0NywgMTI3LCAyNDQsIDE1MCwgOSwgMTEsIDI0NywgMTI3LCAyMjQsIDg0LCA5LCAxMSwgNjUsIDI1MiwgNjIsIDksIAotICAgIDExLCA2NSwgMjM1LCAxMjksIDksIDExLCA2NSwgMjQxLCAyMjUsIDksIDExLCA2NSwgMjQyLCA0NCwgOSwgMTEsIDY1LCAKLSAgICAyMTEsIDQzLCA5LCAxMSwgNjUsIDIzNSwgMCwgOSwgMTEsIDY1LCAyMzMsIDEwOCwgOSwgMTEsIDY1LCAyMzEsIDgzLCA5LCAKLSAgICAxMSwgNjUsIDIyOCwgNjcsIDksIDExLCA2NSwgMjIxLCAxNjgsIDksIDExLCA2NSwgMjU0LCAyMDUsIDksIDExLCA2NSwgCi0gICAgMjQ0LCAxNTAsIDksIDExLCA2NSwgMjIyLCAyOCwgOSwgMTEsIDY1LCAyMjQsIDg0LCA5LCAxMSwgNjUsIDIyMCwgNjEsIDksIAotICAgIDExLCA2NSwgMjE3LCA4LCA5LCAxMSwgNjUsIDIxNiwgMTkzLCA5LCAxMSwgNjUsIDIzNCwgMTM1LCA5LCAxMSwgNjUsIDI0OCwgCi0gICAgMjI0LCA5LCAxMSwgNjUsIDI0MiwgMjUxLCA5LCAxMSwgMjE3LCA3NywgMjM1LCAxMjksIDksIDExLCAyMTcsIDc3LCAyNDIsIAotICAgIDQ0LCA5LCAxMSwgMjE3LCA3NywgMjExLCA0MywgOSwgMTEsIDIxNywgNzcsIDIzMywgMTA4LCA5LCAxMSwgMjE3LCA3NywgCi0gICAgMjI4LCA2NywgOSwgMTEsIDIxNywgNzcsIDIyMSwgMTY4LCA5LCAxMSwgMjE3LCA3NywgMjU0LCAyMDUsIDksIDExLCAyMTcsIAotICAgIDc3LCAyMjIsIDI4LCA5LCAxMSwgMjE3LCA3NywgMjI0LCA4NCwgOSwgMTEsIDIxNywgNzcsIDIyMCwgNjEsIDksIDExLCAKLSAgICAyMTcsIDc3LCAyMzQsIDEzNSwgOSwgMTEsIDIxNywgNzcsIDI0OCwgMjI0LCA5LCAxMSwgMjE3LCA3NywgMjQyLCAyNTEsIDksIAotICAgIDExLCAyMTcsIDc3LCAyNDcsIDEyNywgMjI4LCA2NywgOSwgMTEsIDIxNywgNzcsIDI0NywgMTI3LCAyMjQsIDg0LCA5LCAxMSwgCi0gICAgMjE4LCAxMTIsIDI1MiwgNjIsIDksIDExLCAyMTgsIDExMiwgMjM1LCAxMjksIDksIDExLCAyMTgsIDExMiwgMjQxLCAyMjUsIAotICAgIDksIDExLCAyMTgsIDExMiwgMjQyLCA0NCwgOSwgMTEsIDIxOCwgMTEyLCAyMTcsIDgxLCA5LCAxMSwgMjE4LCAxMTIsIDIxMSwgCi0gICAgNDMsIDksIDExLCAyMTgsIDExMiwgMjM1LCAwLCA5LCAxMSwgMjE4LCAxMTIsIDIzMSwgODMsIDksIDExLCAyMTgsIDExMiwgCi0gICAgMjI4LCA2NywgOSwgMTEsIDIxOCwgMTEyLCAyMjEsIDE2OCwgOSwgMTEsIDIxOCwgMTEyLCAyNTQsIDIwNSwgOSwgMTEsIAotICAgIDIxOCwgMTEyLCAyNDQsIDE1MCwgOSwgMTEsIDIxOCwgMTEyLCAyMjIsIDI4LCA5LCAxMSwgMjE4LCAxMTIsIDIyNCwgODQsIAotICAgIDksIDExLCAyMTgsIDExMiwgMjIwLCA2MSwgOSwgMTEsIDIxOCwgMTEyLCAyMTcsIDgsIDksIDExLCAyMTgsIDExMiwgMjE2LCAKLSAgICAxOTMsIDksIDExLCAyMTgsIDExMiwgMjM0LCAxMzUsIDksIDExLCAyMTgsIDExMiwgMjQ4LCAyMjQsIDksIDExLCAyMTgsIAotICAgIDExMiwgMjEwLCAxMTEsIDksIDExLCAyMTgsIDExMiwgMjQyLCAyNTEsIDksIDExLCAyMTgsIDExMiwgMjQ3LCAxMjcsIDI1MiwgCi0gICAgNjIsIDksIDExLCAyMTgsIDExMiwgMjQ3LCAxMjcsIDI0NCwgMTUwLCA5LCAxMSwgMjMyLCAxMjgsIDI1NCwgMTc5LCA5LCAKLSAgICAxMSwgMjMyLCAxMjgsIDI1MiwgNjIsIDksIDExLCAyMzIsIDEyOCwgMjM1LCAxMjksIDksIDExLCAyMzIsIDEyOCwgMjQ4LCAKLSAgICAyMDMsIDksIDExLCAyMzIsIDEyOCwgMjQxLCAyMjUsIDksIDExLCAyMzIsIDEyOCwgMjEyLCAzMCwgOSwgMTEsIDIzMiwgCi0gICAgMTI4LCAyMTAsIDEwOCwgOSwgMTEsIDIzMiwgMTI4LCAyNDIsIDQ0LCA5LCAxMSwgMjMyLCAxMjgsIDIxNywgODEsIDksIDExLCAKLSAgICAyMzIsIDEyOCwgMjExLCA0MywgOSwgMTEsIDIzMiwgMTI4LCAyMzMsIDEwOCwgOSwgMTEsIDIzMiwgMTI4LCAyMzEsIDgzLCAKLSAgICA5LCAxMSwgMjMyLCAxMjgsIDIyOCwgNjcsIDksIDExLCAyMzIsIDEyOCwgMjIxLCAxNjgsIDksIDExLCAyMzIsIDEyOCwgCi0gICAgMjU0LCAyMDUsIDksIDExLCAyMzIsIDEyOCwgMjQ0LCAxNTAsIDksIDExLCAyMzIsIDEyOCwgMjIyLCAyOCwgOSwgMTEsIAotICAgIDIzMiwgMTI4LCAyMjQsIDg0LCA5LCAxMSwgMjMyLCAxMjgsIDIyMywgOTgsIDksIDExLCAyMzIsIDEyOCwgMjIwLCA2MSwgOSwgCi0gICAgMTEsIDIzMiwgMTI4LCAyMTcsIDgsIDksIDExLCAyMzIsIDEyOCwgMjE2LCAxOTMsIDksIDExLCAyMzIsIDEyOCwgMjM0LCAKLSAgICAxMzUsIDksIDExLCAyMzIsIDEyOCwgMjE2LCAyMDMsIDksIDExLCAyMzIsIDEyOCwgMjQ4LCAyMjQsIDksIDExLCAyMzIsIAotICAgIDEyOCwgMjEwLCAxMTEsIDksIDExLCAyMzIsIDEyOCwgMjQyLCAyNTEsIDksIDExLCAxMzksIDI1MiwgNjIsIDksIDExLCAKLSAgICAxMzksIDIzNSwgMTI5LCA5LCAxMSwgMTM5LCAyNDgsIDIwMywgOSwgMTEsIDEzOSwgMjEyLCAzMCwgOSwgMTEsIDEzOSwgCi0gICAgMjEwLCAxMDgsIDksIDExLCAxMzksIDI0MiwgNDQsIDksIDExLCAxMzksIDIxNywgODEsIDksIDExLCAxMzksIDIxMSwgNDMsIAotICAgIDksIDExLCAxMzksIDIzMywgMTA4LCA5LCAxMSwgMTM5LCAyMzEsIDgzLCA5LCAxMSwgMTM5LCAyMjgsIDY3LCA5LCAxMSwgCi0gICAgMTM5LCAyMjEsIDE2OCwgOSwgMTEsIDEzOSwgMjU0LCAyMDUsIDksIDExLCAxMzksIDI0NCwgMTUwLCA5LCAxMSwgMTM5LCAKLSAgICAyMjIsIDI4LCA5LCAxMSwgMTM5LCAyMjQsIDg0LCA5LCAxMSwgMTM5LCAyMjMsIDk4LCA5LCAxMSwgMTM5LCAyMjAsIDYxLCAKLSAgICA5LCAxMSwgMTM5LCAyMTcsIDgsIDksIDExLCAxMzksIDIxNiwgMTkzLCA5LCAxMSwgMTM5LCAyMzQsIDEzNSwgOSwgMTEsIAotICAgIDEzOSwgMjE2LCAyMDMsIDksIDExLCAxMzksIDI0OCwgMjI0LCA5LCAxMSwgMTM5LCAyMTAsIDExMSwgOSwgMTEsIDEzOSwgCi0gICAgMjQyLCAyNTEsIDksIDExLCAyMjYsIDE3MiwgNjYsIDIsIDEyMiwgMiwgMjE3LCA0NCwgOSwgMTEsIDIyNiwgMTcyLCAxMjIsIAotICAgIDIsIDI0OCwgMjAzLCAyMzEsIDIxMCwgODYsIDI0NSwgMjI4LCAyMTEsIDIzOSwgMjMxLCAyMTAsIDg2LCAyMTksIDMwLCAKLSAgICAyMTEsIDIzOSwgMjMxLCAyMTAsIDg2LCAyMTIsIDksIDIxMSwgMjM5LCAyMzEsIDIxMCwgODYsIDIyOCwgNjEsIDIxMSwgCi0gICAgMjM5LCAyMzEsIDIxMCwgODYsIDIyMywgMTE0LCAyNDYsIDEwNCwgMjMxLCAyMTAsIDg2LCAyNDIsIDEzNCwgMjQ2LCAxMDQsIAotICAgIDIzMSwgMjEwLCA4NiwgNzEsIDI0NiwgMTA0LCAyMzEsIDIxMCwgODYsIDEyMywgNjQsIDI1MCwgMTQ5LCAyMzEsIDIxMCwgCi0gICAgODYsIDExMywgNjQsIDI1MCwgMTQ5LCAyMzEsIDIxMCwgODYsIDEzNCwgNjQsIDI1MCwgMTQ5LCAyMzEsIDIxMCwgODYsIAotICAgIDI0NCwgMTksIDY0LCAyNTAsIDE0OSwgMjMxLCAyMTAsIDg2LCAyNDQsIDg5LCA2NCwgMjUwLCAxNDksIDIzMSwgMjEwLCA4NiwgCi0gICAgMjE5LCAxMjcsIDY0LCAyNTAsIDE0OSwgMjMxLCAyMTAsIDg2LCAyMjAsIDEyNCwgNjQsIDI1MCwgMTQ5LCAyMzEsIDIxMCwgCi0gICAgODYsIDI0NSwgMjAxLCA2NCwgMjUwLCAxNDksIDIzMSwgMjEwLCA4NiwgMjI4LCAyMDUsIDY0LCAyNTAsIDE0OSwgMjMxLCAKLSAgICAyMTAsIDg2LCAxMjMsIDY0LCAyNTIsIDE2MSwgMjMxLCAyMTAsIDg2LCAxMTMsIDY0LCAyNTIsIDE2MSwgMjMxLCAyMTAsIAotICAgIDg2LCAxMzQsIDY0LCAyNTIsIDE2MSwgMjMxLCAyMTAsIDg2LCAyNDQsIDE5LCA2NCwgMjUyLCAxNjEsIDIzMSwgMjEwLCA4NiwgCi0gICAgMjQ0LCA4OSwgNjQsIDI1MiwgMTYxLCAyMzEsIDIxMCwgODYsIDIxOSwgMTI3LCA2NCwgMjUyLCAxNjEsIDIzMSwgMjEwLCAKLSAgICA4NiwgMjIwLCAxMjQsIDY0LCAyNTIsIDE2MSwgMjMxLCAyMTAsIDg2LCAyNDUsIDIwMSwgNjQsIDI1MiwgMTYxLCAyMzEsIAotICAgIDIxMCwgODYsIDIyOCwgMjA1LCA2NCwgMjUyLCAxNjEsIDIzMSwgMjEwLCA4NiwgMTIzLCA2NCwgMjUwLCA0MiwgMjMxLCAKLSAgICAyMTAsIDg2LCAxMTMsIDY0LCAyNTAsIDQyLCAyMzEsIDIxMCwgODYsIDEzNCwgNjQsIDI1MCwgNDIsIDIzMSwgMjEwLCA4NiwgCi0gICAgMjQ0LCAxOSwgNjQsIDI1MCwgNDIsIDIzMSwgMjEwLCA4NiwgMjQ0LCA4OSwgNjQsIDI1MCwgNDIsIDIzMSwgMjEwLCA4NiwgCi0gICAgMjE5LCAxMjcsIDY0LCAyNTAsIDQyLCAyMzEsIDIxMCwgODYsIDIyMCwgMTI0LCA2NCwgMjUwLCA0MiwgMjMxLCAyMTAsIDg2LCAKLSAgICAyNDUsIDIwMSwgNjQsIDI1MCwgNDIsIDIzMSwgMjEwLCA4NiwgMjI4LCAyMDUsIDY0LCAyNTAsIDQyLCAyMzEsIDIxMCwgODYsIAotICAgIDIyNSwgMjgsIDIzMSwgMjEwLCA4NiwgMjI2LCAxNjAsIDIzMSwgMjEwLCA4NiwgMjUyLCAxNjIsIDIzMSwgMjEwLCA4NiwgCi0gICAgMjUwLCA3OCwgMjMxLCAyMTAsIDg2LCAyMTgsIDI0MSwgMjMxLCAyMTAsIDg2LCAyMTgsIDQwLCAyMzEsIDIxMCwgODYsIAotICAgIDI1MywgMTg3LCAyMzEsIDIxMCwgODYsIDIxMSwgMjMyLCAyMzEsIDIxMCwgODYsIDIzNSwgNjgsIDIzMSwgMjEwLCA4NiwgCi0gICAgMjUyLCAxOTIsIDEzMSwgODYsIDIwMywgMjUyLCAxOTIsIDEzMSwgODYsIDI0MSwgNTAsIDEzMSwgODYsIDI0MSwgNDksIAotICAgIDEzMSwgODYsIDI0MSwgNDgsIDEzMSwgODYsIDI0MSwgNDcsIDEzMSwgODYsIDI0MSwgNDYsIDEzMSwgODYsIDI0MSwgNDUsIAotICAgIDEzMSwgODYsIDI0MSwgNDQsIDEzMSwgODYsIDI0MSwgNDMsIDEzMSwgODYsIDI0MSwgNDIsIDEzMSwgODYsIDI0MSwgNDEsIAotICAgIDEzMSwgODYsIDI0MSwgNDAsIDEzMSwgODYsIDI0MSwgMzksIDEzMSwgODYsIDI0MSwgMzgsIDEzMSwgODYsIDI0MSwgMzcsIAotICAgIDEzMSwgODYsIDI0MSwgMzYsIDEzMSwgODYsIDI0MSwgMzUsIDEzMSwgODYsIDI0MSwgMzQsIDEzMSwgODYsIDI0MSwgMzMsIAotICAgIDEzMSwgODYsIDI0MSwgMzIsIDEzMSwgODYsIDI0MSwgMzEsIDEzMSwgODYsIDI0MSwgMzAsIDEzMSwgODYsIDI0MSwgMjksIAotICAgIDEzMSwgODYsIDI0MSwgMjgsIDEzMSwgODYsIDI0MSwgMjcsIDEzMSwgODYsIDI0MSwgMjYsIDEzMSwgODYsIDI0MSwgMjUsIAotICAgIDEzMSwgODYsIDI0MSwgMjQsIDEzMSwgODYsIDI0MSwgMjMsIDEzMSwgODYsIDI0MSwgMjIsIDEzMSwgODYsIDI0MSwgMjEsIAotICAgIDEzMSwgODYsIDI0MSwgMjAsIDEzMSwgODYsIDI0MSwgMTksIDEzMSwgODYsIDI0MSwgMTgsIDEzMSwgODYsIDI0MSwgMTcsIAotICAgIDEzMSwgODYsIDI0MSwgMTYsIDEzMSwgODYsIDI0MSwgMTUsIDEzMSwgODYsIDI0MSwgMTQsIDEzMSwgODYsIDI0MSwgMTMsIAotICAgIDEzMSwgODYsIDI0MSwgMTIsIDEzMSwgODYsIDI0MSwgMTEsIDEzMSwgODYsIDI0MSwgMTAsIDEzMSwgODYsIDI0MSwgOSwgCi0gICAgMTMxLCA4NiwgMjQxLCA4LCAxMzEsIDg2LCAyNDEsIDcsIDEzMSwgODYsIDI0MSwgNiwgMTMxLCA4NiwgMjQxLCA1LCAxMzEsIAotICAgIDg2LCAyNDEsIDQsIDEzMSwgODYsIDI0MSwgMywgMTMxLCA4NiwgMjQxLCAyLCAxMzEsIDg2LCA2NywgMjUyLCAxOTIsIDEzMSwgCi0gICAgODYsIDIxMywgMjM4LCAxMzEsIDg2LCAyMTMsIDIzNywgMTMxLCA4NiwgMjEzLCAyMzYsIDEzMSwgODYsIDIxMywgMjM1LCAKLSAgICAxMzEsIDg2LCAyMTMsIDIzNCwgMTMxLCA4NiwgMjEzLCAyMzMsIDEzMSwgODYsIDIxMywgMjMyLCAxMzEsIDg2LCAyMTMsIAotICAgIDIzMSwgMTMxLCA4NiwgMjEzLCAyMzAsIDEzMSwgODYsIDIxMywgMjI5LCAxMzEsIDg2LCAyMTMsIDIyOCwgMTMxLCA4NiwgCi0gICAgMjEzLCAyMjcsIDEzMSwgODYsIDIxMywgMjI2LCAxMzEsIDg2LCAyMTMsIDIyNSwgMTMxLCA4NiwgMjEzLCAyMjQsIDEzMSwgCi0gICAgODYsIDIxMywgMjIzLCAxMzEsIDg2LCAyMTMsIDIyMiwgMTMxLCA4NiwgMjEzLCAyMjEsIDEzMSwgODYsIDIxMywgMjIwLCAKLSAgICAxMzEsIDg2LCAyMTMsIDIxOSwgMTMxLCA4NiwgMjEzLCAyMTgsIDEzMSwgODYsIDIxMywgMjE3LCAxMzEsIDg2LCAyMTMsIAotICAgIDIxNiwgMTMxLCA4NiwgMjEzLCAyMTUsIDEzMSwgODYsIDIxMywgMjE0LCAxMzEsIDg2LCAyMTMsIDIxMywgMTMxLCA4NiwgCi0gICAgMjEzLCAyMTIsIDEzMSwgODYsIDIxMywgMjExLCAxMzEsIDg2LCAyMTMsIDIxMCwgMTMxLCA4NiwgMjEzLCAyMDksIDEzMSwgCi0gICAgODYsIDIxMywgMjA4LCAxMzEsIDg2LCAyMTMsIDIwNywgMTMxLCA4NiwgMjEzLCAyMDYsIDEzMSwgODYsIDIxMywgMjA1LCAKLSAgICAxMzEsIDg2LCAyMTMsIDIwNCwgMTMxLCA4NiwgMjEzLCAyMDMsIDEzMSwgODYsIDIxMywgMjAyLCAxMzEsIDg2LCAyMTMsIAotICAgIDIwMSwgMTMxLCA4NiwgMjEzLCAyMDAsIDEzMSwgODYsIDIxMywgMTk5LCAxMzEsIDg2LCAyMTMsIDE5OCwgMTMxLCA4NiwgCi0gICAgMjEzLCAxOTcsIDEzMSwgODYsIDIxMywgMTk2LCAxMzEsIDg2LCAyMTMsIDE5NSwgMTMxLCA4NiwgMjEzLCAxOTQsIDEzMSwgCi0gICAgODYsIDIxMywgMTkzLCAxMzEsIDg2LCAyMTMsIDE5MiwgMTMxLCA4NiwgMjEzLCAxOTEsIDEzMSwgODYsIDIxMywgMTkwLCAKLSAgICAyMjUsIDM2LCAyNTAsIDI1MSwgMjUyLCAxOTIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNTUsIDE4LCA2NCwgMjE5LCAxNywgCi0gICAgMjI1LCAzNiwgMjUwLCAyNTEsIDExMywgNjQsIDIxOSwgMTcsIDIyNSwgMzYsIDI1MCwgMjUxLCAxMzQsIDY0LCAyMTksIDE3LCAKLSAgICAyMjUsIDM2LCAyNTAsIDI1MSwgMjQ0LCAxOSwgNjQsIDIxOSwgMTcsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNDQsIDg5LCA2NCwgCi0gICAgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDIxOSwgMTI3LCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIAotICAgIDIyMCwgMTI0LCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDI0NSwgMjAxLCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgCi0gICAgMjUwLCAyNTEsIDIyOCwgMjA1LCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDIxNiwgMjQ5LCA2NCwgMjE5LCAKLSAgICAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDIzNSwgMTQ1LCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDIzNCwgMzcsIAotICAgIDY0LCAyMTksIDE3LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjI0LCAxOCwgNjQsIDIxOSwgMTcsIDIyNSwgMzYsIDI1MCwgMjUxLCAKLSAgICAyMzQsIDg1LCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDI1NSwgMTgsIDY0LCAyNDEsIDIzMiwgMjI1LCAzNiwgCi0gICAgMjUwLCAyNTEsIDExMywgNjQsIDI0MSwgMjMyLCAyMjUsIDM2LCAyNTAsIDI1MSwgMTM0LCA2NCwgMjQxLCAyMzIsIDIyNSwgCi0gICAgMzYsIDI1MCwgMjUxLCAyNDQsIDE5LCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNDQsIDg5LCA2NCwgMjQxLCAKLSAgICAyMzIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMTksIDEyNywgNjQsIDI0MSwgMjMyLCAyMjUsIDM2LCAyNTAsIDI1MSwgMjIwLCAKLSAgICAxMjQsIDY0LCAyNDEsIDIzMiwgMjI1LCAzNiwgMjUwLCAyNTEsIDI0NSwgMjAxLCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIAotICAgIDI1MCwgMjUxLCAyMjgsIDIwNSwgNjQsIDI0MSwgMjMyLCAyMjUsIDM2LCAyNTAsIDI1MSwgMjE2LCAyNDksIDY0LCAyNDEsIAotICAgIDIzMiwgMjI1LCAzNiwgMjUwLCAyNTEsIDIzNSwgMTQ1LCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMzQsIAotICAgIDM3LCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMjQsIDE4LCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIDI1MCwgCi0gICAgMjUxLCAyMzQsIDg1LCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNTUsIDE4LCA2NCwgMjQ3LCAyNTUsIAotICAgIDIyNSwgMzYsIDI1MCwgMjUxLCAxMTMsIDY0LCAyNDcsIDI1NSwgMjI1LCAzNiwgMjUwLCAyNTEsIDEzNCwgNjQsIDI0NywgCi0gICAgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjQ0LCAxOSwgNjQsIDI0NywgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjQ0LCAKLSAgICA4OSwgNjQsIDI0NywgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjE5LCAxMjcsIDY0LCAyNDcsIDI1NSwgMjI1LCAzNiwgCi0gICAgMjUwLCAyNTEsIDIyMCwgMTI0LCA2NCwgMjQ3LCAyNTUsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNDUsIDIwMSwgNjQsIDI0NywgCi0gICAgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjI4LCAyMDUsIDY0LCAyNDcsIDI1NSwgMjI1LCAzNiwgMjUwLCAyNTEsIDIxNiwgCi0gICAgMjQ5LCA2NCwgMjQ3LCAyNTUsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMzUsIDE0NSwgNjQsIDI0NywgMjU1LCAyMjUsIDM2LCAKLSAgICAyNTAsIDI1MSwgMjM0LCAzNywgNjQsIDI0NywgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjI0LCAxOCwgNjQsIDI0NywgCi0gICAgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjM0LCA4NSwgNjQsIDI0NywgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgODUsIAotICAgIDIzNSwgNjgsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNTUsIDE4LCA2NCwgMjQ5LCAyNTAsIDIyNSwgMzYsIDI1MCwgMjUxLCAKLSAgICAxMTMsIDY0LCAyNDksIDI1MCwgMjI1LCAzNiwgMjUwLCAyNTEsIDEzNCwgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIAotICAgIDI1MSwgMjQ0LCAxOSwgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIDI1MSwgMjQ0LCA4OSwgNjQsIDI0OSwgMjUwLCAKLSAgICAyMjUsIDM2LCAyNTAsIDI1MSwgMjE5LCAxMjcsIDY0LCAyNDksIDI1MCwgMjI1LCAzNiwgMjUwLCAyNTEsIDIyMCwgMTI0LCAKLSAgICA2NCwgMjQ5LCAyNTAsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNDUsIDIwMSwgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIAotICAgIDI1MSwgMjI4LCAyMDUsIDY0LCAyNDksIDI1MCwgMjI1LCAzNiwgMjUwLCAyNTEsIDIxNiwgMjQ5LCA2NCwgMjQ5LCAyNTAsIAotICAgIDIyNSwgMzYsIDI1MCwgMjUxLCAyMzUsIDE0NSwgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIDI1MSwgMjM0LCAzNywgCi0gICAgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIDI1MSwgMjI0LCAxOCwgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIAotICAgIDI1MSwgMjM0LCA4NSwgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIDI1MSwgNzEsIDIzNSwgNjgsIDIxLCAyMTAsIDg3LCAKLSAgICAyNDMsIDIzNiwgMjE4LCAxMzEsIDIxLCAyMTAsIDg3LCAyNDksIDIyNywgMjEsIDEyMywgMjQ5LCAyMjcsIDIxLCAxMTMsIAotICAgIDI0OSwgMjI3LCAyMSwgMTM0LCAyNDksIDIyNywgMjEsIDI0NCwgMTksIDI0OSwgMjI3LCAyMSwgMjQ0LCA4OSwgMjQ5LCAKLSAgICAyMjcsIDIxLCAyMTksIDEyNywgMjQ5LCAyMjcsIDIxLCAyMjAsIDEyNCwgMjQ5LCAyMjcsIDIxLCAyNDUsIDIwMSwgMjQ5LCAKLSAgICAyMjcsIDIxLCAyMjgsIDIwNSwgMjQ5LCAyMjcsIDg4LCA3LCA2LCAxLCA2MSwgODgsIDcsIDYsIDEsIDI1MywgMTY2LCA4OCwgCi0gICAgNywgNiwgMSwgMjUxLCA3NCwgODgsIDcsIDYsIDEsIDI0OSwgNjgsIDg4LCA3LCA2LCAxLCA3NiwgODgsIDcsIDYsIDEsIAotICAgIDI0NSwgMTQsIDg4LCA3LCA2LCAxLCAyNDMsIDIwOSwgODgsIDcsIDYsIDEsIDI0MiwgNjcsIDg4LCA3LCA2LCAxLCA3NCwgCi0gICAgODgsIDcsIDYsIDEsIDIzNSwgMTUwLCA4OCwgNywgNiwgMSwgMjM1LCAyOSwgODgsIDcsIDYsIDEsIDE1NiwgODgsIDcsIDYsIAotICAgIDEsIDE5NCwgODgsIDcsIDYsIDEsIDIzMCwgMzAsIDg4LCA3LCA2LCAxLCA3OCwgODgsIDcsIDYsIDEsIDIyNiwgMTA5LCA4OCwgCi0gICAgNywgNiwgMSwgMjI0LCA5OSwgODgsIDcsIDYsIDEsIDE1MywgODgsIDcsIDYsIDEsIDIyMiwgOTMsIDg4LCA3LCA2LCAxLCAKLSAgICAyMTcsIDE1MywgODgsIDcsIDYsIDEsIDY5LCA4OCwgNywgNiwgMSwgMjE0LCAxMDUsIDg4LCA3LCA2LCAxLCAyMTIsIDk4LCAKLSAgICA4OCwgNywgNiwgMSwgMjExLCAxNzgsIDg4LCA3LCA2LCAxLCAyMTEsIDExNywgODgsIDcsIDYsIDEsIDIxMCwgMTU5LCAyMTYsIAotICAgIDcsIDIyMCwgNTUsIDI1MSwgMTY1LCA3LCA2LCAxLCAyMjIsIDkzLCAzNywgMzIsIDcsIDYsIDEsIDI1MSwgNzQsIDM3LCAzMiwgCi0gICAgNywgNiwgMSwgMTUzLCAzNywgMjUwLCAxOTksIDM3LCAyMTEsIDE4MCwgOTIsIDcsIDYsIDEsIDYxLCA5MiwgNywgNiwgMSwgCi0gICAgMjUzLCAxNjYsIDkyLCA3LCA2LCAxLCAyNTEsIDc0LCA5MiwgNywgNiwgMSwgMjQ5LCA2OCwgOTIsIDcsIDYsIDEsIDc2LCAKLSAgICA5MiwgNywgNiwgMSwgMjQ1LCAxNCwgOTIsIDcsIDYsIDEsIDI0MywgMjA5LCA5MiwgNywgNiwgMSwgMjQyLCA2NywgOTIsIDcsIAotICAgIDYsIDEsIDc0LCA5MiwgNywgNiwgMSwgMjM1LCAxNTAsIDkyLCA3LCA2LCAxLCAyMzUsIDI5LCA5MiwgNywgNiwgMSwgMTU2LCAKLSAgICA5MiwgNywgNiwgMSwgMTk0LCA5MiwgNywgNiwgMSwgMjMwLCAzMCwgOTIsIDcsIDYsIDEsIDc4LCA5MiwgNywgNiwgMSwgCi0gICAgMjI2LCAxMDksIDkyLCA3LCA2LCAxLCAyMjQsIDk5LCA5MiwgNywgNiwgMSwgMTUzLCA5MiwgNywgNiwgMSwgMjIyLCA5MywgCi0gICAgOTIsIDcsIDYsIDEsIDIxNywgMTUzLCA5MiwgNywgNiwgMSwgNjksIDkyLCA3LCA2LCAxLCAyMTQsIDEwNSwgOTIsIDcsIDYsIAotICAgIDEsIDIxMiwgOTgsIDkyLCA3LCA2LCAxLCAyMTEsIDE3OCwgOTIsIDcsIDYsIDEsIDIxMSwgMTE3LCA5MiwgNywgNiwgMSwgCi0gICAgMjEwLCAxNTksIDkyLCAyNDAsIDIwOCwgOTIsIDIzMCwgNTQsIDkyLCAyMjEsIDE4NSwgOTIsIDIxOCwgMjI4LCA5MiwgMjI0LCAKLSAgICAyMjEsIDkyLCAyMTIsIDIzLCAxNTIsIDM3LCA3LCA2LCAxLCA2MSwgMTUyLCAzNywgNywgNiwgMSwgMjUzLCAxNjYsIDE1MiwgCi0gICAgMzcsIDcsIDYsIDEsIDI1MSwgNzQsIDE1MiwgMzcsIDcsIDYsIDEsIDI0OSwgNjgsIDE1MiwgMzcsIDcsIDYsIDEsIDc2LCAKLSAgICAxNTIsIDM3LCA3LCA2LCAxLCAyNDUsIDE0LCAxNTIsIDM3LCA3LCA2LCAxLCAyNDMsIDIwOSwgMTUyLCAzNywgNywgNiwgMSwgCi0gICAgMjQyLCA2NywgMTUyLCAzNywgNywgNiwgMSwgNzQsIDE1MiwgMzcsIDcsIDYsIDEsIDIzNSwgMTUwLCAxNTIsIDM3LCA3LCA2LCAKLSAgICAxLCAyMzUsIDI5LCAxNTIsIDM3LCA3LCA2LCAxLCAxNTYsIDE1MiwgMzcsIDcsIDYsIDEsIDE5NCwgMTUyLCAzNywgNywgNiwgCi0gICAgMSwgMjMwLCAzMCwgMTUyLCAzNywgNywgNiwgMSwgNzgsIDE1MiwgMzcsIDcsIDYsIDEsIDIyNiwgMTA5LCAxNTIsIDM3LCA3LCAKLSAgICA2LCAxLCAyMjQsIDk5LCAxNTIsIDM3LCA3LCA2LCAxLCAxNTMsIDE1MiwgMzcsIDcsIDYsIDEsIDIyMiwgOTMsIDE1MiwgMzcsIAotICAgIDcsIDYsIDEsIDIxNywgMTUzLCAxNTIsIDM3LCA3LCA2LCAxLCA2OSwgMTUyLCAzNywgNywgNiwgMSwgMjE0LCAxMDUsIDE1MiwgCi0gICAgMzcsIDcsIDYsIDEsIDIxMiwgOTgsIDE1MiwgMzcsIDcsIDYsIDEsIDIxMSwgMTc4LCAxNTIsIDM3LCA3LCA2LCAxLCAyMTEsIAotICAgIDExNywgMTUyLCAzNywgNywgNiwgMSwgMjEwLCAxNTksIDIyMywgMTYwLCAyMzEsIDEwMiwgNTAsIDIyMywgMTYwLCAyMzEsIAotICAgIDk5LCA1MCwgMTUyLCA5MiwgNywgNiwgMSwgNjEsIDE1MiwgOTIsIDcsIDYsIDEsIDI1MywgMTY2LCAxNTIsIDkyLCA3LCA2LCAKLSAgICAxLCAyNTEsIDc0LCAxNTIsIDkyLCA3LCA2LCAxLCAyNDksIDY4LCAxNTIsIDkyLCA3LCA2LCAxLCA3NiwgMTUyLCA5MiwgNywgCi0gICAgNiwgMSwgMjQ1LCAxNCwgMTUyLCA5MiwgNywgNiwgMSwgMjQzLCAyMDksIDE1MiwgOTIsIDcsIDYsIDEsIDI0MiwgNjcsIAotICAgIDE1MiwgOTIsIDcsIDYsIDEsIDc0LCAxNTIsIDkyLCA3LCA2LCAxLCAyMzUsIDE1MCwgMTUyLCA5MiwgNywgNiwgMSwgMjM1LCAKLSAgICAyOSwgMTUyLCA5MiwgNywgNiwgMSwgMTU2LCAxNTIsIDkyLCA3LCA2LCAxLCAxOTQsIDE1MiwgOTIsIDcsIDYsIDEsIDIzMCwgCi0gICAgMzAsIDE1MiwgOTIsIDcsIDYsIDEsIDc4LCAxNTIsIDkyLCA3LCA2LCAxLCAyMjYsIDEwOSwgMTUyLCA5MiwgNywgNiwgMSwgCi0gICAgMjI0LCA5OSwgMTUyLCA5MiwgNywgNiwgMSwgMTUzLCAxNTIsIDkyLCA3LCA2LCAxLCAyMjIsIDkzLCAxNTIsIDkyLCA3LCA2LCAKLSAgICAxLCAyMTcsIDE1MywgMTUyLCA5MiwgNywgNiwgMSwgNjksIDE1MiwgOTIsIDcsIDYsIDEsIDIxNCwgMTA1LCAxNTIsIDkyLCAKLSAgICA3LCA2LCAxLCAyMTIsIDk4LCAxNTIsIDkyLCA3LCA2LCAxLCAyMTEsIDE3OCwgMTUyLCA5MiwgNywgNiwgMSwgMjExLCAxMTcsIAotICAgIDE1MiwgOTIsIDcsIDYsIDEsIDIxMCwgMTU5LCAyNDksIDEzNiwgMTUyLCA5MiwgNywgNiwgMSwgMjI2LCAxMDksIDE1MiwgCi0gICAgOTIsIDI0MCwgMTIwLCAxNTIsIDkyLCAxOTEsIDE1MiwgOTIsIDIwNiwgMTUyLCA5MiwgMjU1LCAzNCwgMTUyLCA5MiwgMjEyLCAKLSAgICAyMywgNDIsIDI0NywgMTcyLCA5MiwgMjUwLCAzMSwgOTIsIDI0OSwgMTc4LCA5MiwgMjQ0LCA0LCA5MiwgMjQwLCAxMTIsIAotICAgIDkyLCAyMjksIDkxLCA5MiwgMjI5LCA4NCwgOTIsIDIyNiwgMjE4LCA5MiwgMjE5LCAzNywgOTIsIDEyMCwgMiwgMjQ1LCAzOSwgCi0gICAgNzksIDkyLCAyMTMsIDExOSwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgNjEsIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIAotICAgIDEsIDI1MywgMTY2LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAyNTEsIDc0LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAKLSAgICAxLCAyNDksIDY4LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCA3NiwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgCi0gICAgMjQ1LCAxNCwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgMjQzLCAyMDksIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIAotICAgIDI0MiwgNjcsIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDc0LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAyMzUsIAotICAgIDE1MCwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgMjM1LCAyOSwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgMTU2LCAKLSAgICAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAxOTQsIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDIzMCwgMzAsIDIyMywgCi0gICAgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDc4LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAyMjYsIDEwOSwgMjIzLCAxMDYsIAotICAgIDIzNSwgMjQ2LCAxNiwgMSwgMjI0LCA5OSwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgMTUzLCAyMjMsIDEwNiwgMjM1LCAKLSAgICAyNDYsIDE2LCAxLCAyMjIsIDkzLCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAyMTcsIDE1MywgMjIzLCAxMDYsIDIzNSwgCi0gICAgMjQ2LCAxNiwgMSwgNjksIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDIxNCwgMTA1LCAyMjMsIDEwNiwgMjM1LCAyNDYsIAotICAgIDE2LCAxLCAyMTIsIDk4LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAyMTEsIDE3OCwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAKLSAgICAxNiwgMSwgMjExLCAxMTcsIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDIxMCwgMTU5LCA0MiwgMTQxLCAyNDEsIDcwLCAKLSAgICA5MiwgNTYsIDIzNCwgMjQsIDkyLCA1NiwgMjA2LCA5MiwgMTAsIDIxNCwgMTc3LCAyMzgsIDU3LCA5MiwgMTAsIDIxNCwgCi0gICAgMTc3LCAyMzgsIDYxLCA5MiwgMTAsIDIxNCwgMTc3LCAyMzgsIDY5LCA5MiwgNTYsIDI0OCwgOTgsIDkyLCAxMCwgMjE0LCAKLSAgICAxNzcsIDIzOCwgNzYsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNjMsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgMzUsIDkyLCAKLSAgICAxMCwgMjE0LCAxNzcsIDIzOCwgNjIsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNzUsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgCi0gICAgNDksIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNDIsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNTEsIDkyLCAxMCwgMjE0LCAKLSAgICAxNzcsIDIzOCwgNzIsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNTgsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNzQsIDkyLCAKLSAgICAxMCwgMjE0LCAxNzcsIDIzOCwgNTAsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNzMsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgCi0gICAgMzYsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNDEsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgMzQsIDkyLCAxMCwgMjE0LCAKLSAgICAxNzcsIDIzOCwgNjQsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNjYsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNDQsIDkyLCAKLSAgICAxMCwgMjE0LCAxNzcsIDIzOCwgNTUsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNTMsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgCi0gICAgNzksIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNzgsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgMzIsIDkyLCAxMCwgMjE0LCAKLSAgICAxNzcsIDIzOCwgNTksIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNzcsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNjgsIDkyLCAKLSAgICAxMCwgMjE0LCAxNzcsIDIzOCwgNTQsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgMzMsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgCi0gICAgNTYsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgMzgsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgMzcsIDkyLCAxMCwgMjE0LCAKLSAgICAxNzcsIDIzOCwgNjcsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNDUsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNDcsIDkyLCAKLSAgICAxMCwgMjE0LCAxNzcsIDIzOCwgNDgsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNDAsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgCi0gICAgNzEsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNjUsIDIxNiwgNywgMjIwLCA1NSwgMjUxLCAxNjUsIDEwLCAyMTQsIDE3NywgCi0gICAgMjM4LCA0NiwgMjE2LCA3LCAyMjAsIDU1LCAyNTEsIDE2NSwgMTAsIDIxNCwgMTc3LCAyMzgsIDc4LCAyMTYsIDcsIDIyMCwgCi0gICAgNTUsIDI1MSwgMTY1LCAxMCwgMjE0LCAxNzcsIDIzOCwgNzYsIDIxNiwgNywgMjIwLCA1NSwgMjUxLCAxNjUsIDEwLCAyMTQsIAotICAgIDE3NywgMjM4LCA2MCwgMjE2LCA3LCAyMjAsIDU1LCAyNTEsIDE2NSwgMTAsIDIxNCwgMTc3LCAyMzgsIDQzLCAyMTYsIDcsIAotICAgIDIyMCwgNTUsIDI1MSwgMTY1LCAxMCwgMjE0LCAxNzcsIDIzOCwgNTYsIDIxNiwgNywgMjIwLCA1NSwgMjUxLCAxNjUsIDEwLCAKLSAgICAyMTQsIDE3NywgMjM4LCAzOSwgMjE2LCA3LCAyMjAsIDU1LCAyNTEsIDE2NSwgMTAsIDIxNCwgMTc3LCAyMzgsIDcwLCAyMTYsIAotICAgIDcsIDIyMCwgNTUsIDI1MSwgMTY1LCAxMCwgMjE0LCAxNzcsIDIzOCwgNTIsIDM3LCAxNTQsIDI1NCwgMjU0LCAzNywgMTU0LCAKLSAgICAyNTUsIDIxLCAyNDksIDc5LCAyNDQsIDUwLCAyNTAsIDgsIDIxNCwgMTk0LCAyMjgsIDIxOCwgMiwgMjE4LCAxNTUsIDIxOCwgCi0gICAgMzQsIDExNSwgMjMwLCAxMTksIDIxOCwgMzMsIDI1MCwgMzQsIDI1MywgMjE1LCAyNDYsIDYyLCAyMTgsIDMyLCAxMTUsIAotICAgIDI1MSwgMTI2LCAyMjMsIDE2MSwgMjUxLCAxNDgsIDI1MywgMjE1LCAyMjgsIDIxNywgMjEyLCA0MSwgMjEyLCAzNSwgMjEzLCAKLSAgICAxMzEsIDIzMCwgMjAwLCAyMTIsIDI1LCAyNDUsIDIzMiwgMjQyLCAxODgsIDI0NSwgNTMsIDI0NSwgMjMyLCAyNDIsIDE4OCwgCi0gICAgMjU0LCAxMzYsIDI0NSwgMjMyLCAyNDIsIDE4OCwgMjUzLCAyMzMsIDI0MiwgMTg4LCAyLCAyMzEsIDU2LCAxNjYsIDIzMCwgCi0gICAgMTM0LCA4NywgMjEyLCAyNywgMjQ5LCAxNDUsIDIzMCwgMTM0LCA4NywgMjQ0LCAxMDAsIDIyNCwgMjUsIDIzMCwgMTM0LCAKLSAgICA4NywgMjEyLCAyNywgMjQyLCAyMTcsIDIzMCwgMTM0LCA4NywgMjQzLCAyMzYsIDIzMCwgMTM0LCA4NywgMjEyLCA1MiwgCi0gICAgMjQyLCAyMTcsIDIzMCwgMTM0LCA4NywgMjMzLCA4NiwgMjI0LCAyNSwgMjMwLCAxMzQsIDg3LCAyMTIsIDUyLCAyNDksIAotICAgIDE0NSwgMjMwLCAxMzQsIDg3LCAyNDksIDE0NSwgMjMwLCAxMzMsIDE2NiwgMjMwLCAxMzQsIDIsIDI0NCwgMTk4LCAyNDQsIAotICAgIDEwMCwgMjI0LCAyNSwgMjMwLCAxMzQsIDIsIDI0NCwgMTk4LCAyMzMsIDg2LCAyMjQsIDI1LCAyMzAsIDEzNCwgMiwgMjQ0LCAKLSAgICAxOTgsIDI0MywgMjM2LCAyMzAsIDEzNCwgMiwgMjQ0LCAxOTgsIDIxOCwgMzksIDIsIDI0NCwgMTk4LCAyNDIsIDE4NiwgCi0gICAgMjE4LCAxNTgsIDIyMCwgMSwgMjE4LCAxNTgsIDI1MCwgMTI0LCAyMjEsIDE3MCwgMjQ1LCA0NywgMjE1LCAyMzYsIDI0OCwgCi0gICAgOTIsIDIxNSwgMjM2LCAyMjYsIDYzLCAyMTUsIDIzNiwgMjUxLCAzNSwgMjE1LCAxMTAsIDI1MCwgMTI2LCAyNTEsIDIxOCwgCi0gICAgMjIyLCAxOTMsIDI0MSwgMTg2LCAyMTgsIDM3LCAyNTEsIDIxOCwgMjQ1LCAyMzYsIDY0LCAyMzEsIDE5OSwgMjQ1LCAyMzYsIAotICAgIDY0LCAyMjMsIDM0LCAyNDEsIDIxMSwgMjQ0LCAxOSwgMjMzLCA2MCwgMjQ5LCAyNTQsIDIzMSwgMTc1LCAyMzMsIDU5LCAKLSAgICAyNDQsIDE4NCwgMjMzLCA1OSwgMjMzLCA2MCwgMjQ0LCA1NSwgMjM2LCA3LCAyMTEsIDIzOSwgMjMwLCA2MywgMjE2LCAzNSwgCi0gICAgMjUzLCAxOTksIDI0MiwgMTUwLCAyMzEsIDcyLCAyMTIsIDM5LCAyMTcsIDU4LCAyMzMsIDMyLCAyNTIsIDE1NywgMjI1LCAKLSAgICA2NSwgMjIzLCAxMTQsIDI1NCwgNjIsIDI0MiwgMTM0LCAyNTQsIDYyLCAyMjUsIDIyMCwgMjI1LCAyMjEsIDI1MCwgMTI3LCAKLSAgICAyMTgsIDExNiwgMjQyLCAzMCwgMjE5LCA5MiwgNjQsIDIyNSwgNDcsIDIzMSwgOTIsIDIyNiwgMjAxLCAyNTEsIDIwMiwgCi0gICAgMjI0LCAyMzIsIDIzMywgNDIsIDIyMywgMzUsIDI0OSwgMTUwLCAyMjMsIDM1LCAyNTIsIDE2NywgMjQ5LCAxODEsIDIyMywgCi0gICAgMzQsIDI0OSwgMTAzLCAyMiwgMjIzLCAzNCwgMjE4LCAxNDMsIDI1MSwgMTc1LCAyMTksIDE2LCAyNTEsIDE1OSwgMjQ0LCAzLCAKLSAgICAyNDMsIDI1NSwgMjIyLCAyMDksIDIxNywgMjQ3LCAyMjQsIDIzNCwgMjQ4LCAxODMsIDIyNiwgMjQwLCAyMTgsIDgsIDI0NCwgCi0gICAgMCwgMjE5LCAyMzIsIDI0NCwgOTksIDI1MSwgMjksIDIsIDIxNywgMjQwLCAyNDgsIDQzLCAyMTksIDU0LCAyNDAsIDExOSwgCi0gICAgMjQ5LCAxNDksIDIyMCwgNzIsIDI0MCwgMTE4LCAyNDAsIDExOSwgMjQ5LCAxNDksIDI0NiwgMTE2LCAyNDksIDE4MCwgMjUwLCAKLSAgICA5MiwgMTMwLCAyNTEsIDYsIDIzMiwgMTQ3LCAyNDksIDk2LCAyNDEsIDYyLCAyMjQsIDIzNiwgMjE5LCAyNDIsIDI1MiwgNDQsIAotICAgIDI1MSwgMTcxLCAyMjQsIDIzNywgNjQsIDI0NCwgNDEsIDI0OSwgMTc5LCAyNDQsIDMyLCAyMiwgMjM0LCAzOCwgMjE3LCAyMCwgCi0gICAgMjExLCAyMzAsIDI0MiwgMjAsIDIyMiwgMTQsIDI1MSwgMTg1LCAyMiwgMjQ5LCAxMTAsIDIxMSwgMjM3LCAyNDIsIDE5MSwgCi0gICAgMjQ5LCAyNDMsIDI0MiwgMTkxLCAyMTUsIDE5NCwgMjQ2LCA5OCwgMjUyLCA3MCwgMjMwLCA5OCwgMjUwLCAxNSwgMjUyLCAKLSAgICA3MCwgMjMwLCA5NywgMjUyLCAxOTUsIDI1MSwgMTg0LCAyMjMsIDM2LCAyMTEsIDIwMSwgMjI0LCAxOTgsIDI1MSwgMjQzLCAKLSAgICAyNTEsIDI4LCAyMzUsIDE0NCwgMjUwLCA4NSwgMjE1LCAyMzYsIDI0NCwgMTcwLCAyNTAsIDg0LCAyNDQsIDEwMiwgMjQ0LCAKLSAgICAxMDMsIDIxOSwgMTQsIDI1MiwgMTY2LCAyMjUsIDI1NCwgMjI0LCAyNDcsIDI0OSwgMjEyLCAyNTIsIDE2NywgMjE3LCA2MCwgCi0gICAgMjE1LCAyMzYsIDI0OSwgMTM2LCAyNDQsIDc1LCAyMjUsIDY2LCAyNDgsIDg5LCAyMzUsIDEzNywgMjQ3LCAxMzksIDI1MCwgCi0gICAgMjQwLCAyMTgsIDExNSwgMjExLCAyNDAsIDI1MCwgMTA2LCAyMzAsIDEzNCwgMjEzLCAxNjQsIDI1MCwgMTcwLCAyMjEsIAotICAgIDIwMSwgMjIxLCAyMjYsIDI0MiwgMTU1LCAyNTEsIDMsIDI1MCwgMjQxLCAyNDAsIDI1MiwgMjQ0LCAxMzgsIDIxMiwgMCwgCi0gICAgMjIyLCAyMDIsIDI0OSwgMjQ0LCAyNDQsIDk0LCAyMjUsIDUsIDIyLCAyNDQsIDk4LCAyMzAsIDIzMiwgMjMwLCAxMTMsIAotICAgIDI1MSwgMTgsIDI1MCwgNDcsIDI0MSwgMjM5LCAyNTMsIDI0OSwgMjI2LCA2NiwgMjE2LCAxNSwgMjQyLCAyLCAyNTAsIDM3LCAKLSAgICAyMTYsIDI0MywgMjE2LCAxMTQsIDI1MCwgMjgsIDI1MSwgMjEwLCAyMjUsIDE4MCwgMjUzLCAyNDgsIDIxMywgMTcyLCAyNDMsIAotICAgIDExNywgMjQ3LCAyMDUsIDI0MSwgMTYzLCAyMTksIDg2LCAyMzEsIDIzOSwgMjUxLCAyNTMsIDI0MywgMTE4LCAyNDcsIDI0OCwgCi0gICAgMjUxLCAxNzQsIDI0NCwgNjAsIDIyNSwgMzYsIDI1MCwgMjQ5LCAyOCwgMjI4LCA1MiwgMjMwLCA5MCwgMjgsIDIyOCwgNDcsIAotICAgIDIyMSwgMjE0LCAyNDIsIDEwNiwgMjgsIDIzNCwgMTQzLCAyMTUsIDE5MSwgMjEzLCAxNTQsIDI4LCAyMjEsIDE5NCwgMjIyLCAKLSAgICAxMjYsIDIyMCwgMTMsIDIsIDIyMSwgMjI5LCAyMTYsIDI0NSwgMjIzLCAxODEsIDIyLCAyNTIsIDE2NywgMjE5LCAxMDcsIAotICAgIDIyLCAyMTksIDEwNywgMjUxLCAxOTUsIDI1MiwgMTMxLCAyMiwgMjQxLCA1NiwgMjUwLCAxMjgsIDI0NCwgODEsIDIxOSwgCi0gICAgNjUsIDIyMiwgMTI3LCAyMTgsIDEzLCAyMTUsIDE5NSwgMjQwLCAyNTMsIDIyMywgMTgyLCAyNTQsIDEzNywgMjQ0LCAzOSwgCi0gICAgMjIyLCAxMzgsIDI0NCwgMzksIDIxNywgMjQyLCAyNDAsIDI0MiwgMjUxLCAxMjcsIDI0MCwgMjQyLCAyLCAyNDMsIDEwMSwgCi0gICAgMjI2LCAyMzMsIDI1MSwgMTI3LCAyMzUsIDEzNywgMjI0LCAyNDIsIDIyNiwgMjMyLCAyNDUsIDUyLCAyMjQsIDI0MiwgMjI2LCAKLSAgICAyMzIsIDI0MCwgMjUxLCAyNTIsIDE1MywgMjUzLCAxODksIDIxNiwgMjUzLCAyMzEsIDIzOSwgMjQwLCAyNDcsIDIzMiwgCi0gICAgMTE3LCAyNDAsIDI0NywgMjQ5LCAxODQsIDIxOCwgMTI3LCAyMjEsIDIwMCwgMjQ4LCA1MSwgMjE4LCAxMjcsIDI0NCwgMTg4LCAKLSAgICAyMzUsIDE1NSwgMjMzLCA5NSwgMjM1LCAxMzcsIDI1MCwgMjM0LCAyNDUsIDUyLCAyNTAsIDIzNCwgMjIzLCAxNDQsIDIzMCwgCi0gICAgMTE3LCAyMjYsIDExOCwgMjEyLCA0MSwgMjUxLCAxMzEsIDI0OSwgMTUzLCAyMTYsIDEwNywgMjMzLCAyNCwgMjIzLCAxODMsIAotICAgIDI1MCwgMjMyLCAyNDYsIDEwNCwgMjQ5LCAxNDMsIDIxMiwgMywgMjE5LCA3MiwgMjE5LCA3MCwgMjQwLCAyNTIsIDIyMywgCi0gICAgMTU2LCAyNDIsIDE3NywgMjIwLCA1OSwgMjMwLCAxNTAsIDIyMiwgMTk2LCAyNTAsIDExNiwgMjQ3LCAxNDQsIDIyNSwgNzYsIAotICAgIDI1MSwgMjExLCAyNDUsIDE3NywgMjI2LCAyNDIsIDIxOCwgMjU0LCAyMjAsIDU0LCAyNTEsIDEzMCwgMjU0LCAxMDAsIDI0MSwgCi0gICAgNjEsIDIzMywgMTI3LCAyNTIsIDY4LCAyNDQsIDk4LCAyMTUsIDE5NCwgMjQ0LCA5OCwgMjUxLCAyMTcsIDIxNSwgOTEsIAotICAgIDI0MiwgMCwgMjUwLCAxMTcsIDI1MiwgMTk1LCAyNTAsIDExNywgMjQzLCAyNTAsIDI1MiwgMTk1LCAyNTAsIDExNywgMjUxLCAKLSAgICAyNDUsIDIyNSwgMTk4LCAyMzQsIDMyLCAyMjQsIDI1MSwgMjQ2LCA5NSwgMjUxLCAxOSwgMjUyLCAxODUsIDI1MSwgMTksIAotICAgIDI0NywgMTM4LCAyMzAsIDExOCwgMjQ0LCAxOTgsIDI0OSwgMTU0LCAyNDQsIDE5OCwgMjE2LCAxMDgsIDI0NCwgMTk4LCAKLSAgICAyMjMsIDE4NCwgMjQ0LCAxOTgsIDI1MCwgMjMzLCAyNDQsIDE5OCwgMjQ2LCAxMDUsIDI0NCwgMTk4LCAyMTgsIDI0MywgCi0gICAgMjEyLCAzLCAyNDAsIDI1MywgMjQ0LCAxOTgsIDIzMCwgMTUxLCAyNDQsIDE5OCwgMjQ3LCAxNDUsIDI0NCwgMTk4LCAyMjUsIAotICAgIDc3LCAyNDQsIDE5OCwgMjQzLCAyNTMsIDI0NCwgMTk4LCAyNDIsIDI3LCAyNDQsIDE5OCwgMjExLCAyMjQsIDI0NCwgMTk4LCAKLSAgICAyNTIsIDc5LCAyNDQsIDE5OCwgMjI2LCA0OSwgMjQ0LCAxOTgsIDIyNSwgNzcsIDIyOCwgNTgsIDIyNSwgMjM2LCAyMjQsIAotICAgIDE4OSwgMjQ1LCAyMSwgMjQ1LCAyMzUsIDIyOCwgNTgsIDIzMCwgMTE1LCAyMTYsIDIwLCA3MSwgMTIwLCAyMjUsIDEwLCAKLSAgICAyNTIsIDE5MCwgMjM1LCAyNDksIDcxLCAxMjQsIDIyNSwgMTAsIDI1MiwgMTkwLCAyMzUsIDI0OSwgNzEsIDQzLCAyMjUsIAotICAgIDEwLCAyNTIsIDE5MCwgMjM1LCAyNDksIDcxLCA0NCwgMjI1LCAxMCwgMjUyLCAxOTAsIDIzNSwgMjQ5LCAyNDQsIDkyLCAKLSAgICAyNDIsIDIzLCA1MCwgMjEyLCAzMywgMjQyLCAyMywgNTAsIDIyNiwgMjE5LCAyNDIsIDIzLCA1MCwgMjE2LCAxMzYsIDEyMCwgCi0gICAgNTAsIDIxNiwgMTM2LCAxMjQsIDUwLCAyNTAsIDI3LCAyNDIsIDE4LCA1MCwgMjA0LCAyNDIsIDE4LCA1MCwgMjQ5LCAxMzEsIAotICAgIDIxMSwgMjIwLCAyNDIsIDIsIDI0NSwgMjIsIDIyOSwgMTA5LCAyMTcsIDE1MiwgMjM1LCAxMzEsIDI0NiwgMTAwLCAyMzQsIAotICAgIDg4LCAyNTEsIDI1NSwgMjExLCAyMjAsIDI1MCwgMSwgMjI0LCAxMzAsIDI0MiwgMjEsIDIyNCwgMjMzLCAyMzEsIDE4MiwgCi0gICAgMjIwLCA2LCAyNTMsIDIxMSwgMjIwLCA2LCAyNDEsIDE3MSwgMjIwLCA2LCAyMTEsIDIyMCwgMjIxLCAyNDIsIDIxMSwgMjIwLCAKLSAgICAyNTEsIDE5NCwgMjQ0LCAzNywgMjUxLCA5OCwgMjM2LCA3LCAyMTksIDE3MSwgMjUxLCA5NywgMjM2LCA3LCAyMTksIDE3MSwgCi0gICAgMjUxLCAxNzAsIDI0MiwgMjAxLCAyMzEsIDE5MCwgMjExLCAyMjEsIDI0NCwgMTgyLCAyMzEsIDE5MSwgMjIsIDIxMSwgMjIyLCAKLSAgICAyNDEsIDY3LCAyNDIsIDE3LCAxMTMsIDIzMSwgNjQsIDI0MSwgNjcsIDI0MiwgMTcsIDExMywgMjExLCAyMTksIDI0MSwgNjcsIAotICAgIDI0MiwgMTcsIDIyNSwgMiwgMjI2LCAyMzEsIDIxMSwgMjIyLCAyLCAyNTEsIDExNCwgMjQ1LCAyMzMsIDI1MSwgMTQ5LCAyLCAKLSAgICAyMTMsIDI0NiwgMjI1LCAxNzEsIDIsIDI1MSwgMjIwLCAyNDIsIDQxLCAyMzEsIDE5MSwgMiwgMjQyLCAxMTcsIDIyNSwgCi0gICAgMTEyLCAyMzEsIDE3OSwgMjMxLCAxOTEsIDIsIDIxNSwgOTgsIDIyNiwgMjEyLCAyMzEsIDE5MCwgMjI2LCAyMTIsIDIxMSwgCi0gICAgMjIxLCAyNTIsIDE5NCwgMjQ5LCAxOTgsIDIxMSwgMjA1LCAyMjQsIDE5MiwgMjM1LCAxMzcsIDIyNiwgMjI3LCAyMzUsIAotICAgIDEzNywgMjQyLCAxNzYsIDI0MiwgMjI5LCAyNTIsIDE5NSwgMjU0LCAxMjEsIDI0NSwgMjYsIDI1NCwgMTY5LCAyNTQsIDE3MCwgCi0gICAgMjMwLCAxNDEsIDIzNiwgMTIsIDIxOSwgMTAyLCAyMzUsIDIzOSwgMjQ4LCA0MiwgMjI1LCAxNzAsIDI0MiwgMTEyLCAyNDgsIAotICAgIDE4NywgMjMyLCAyMDcsIDIyOSwgMjE2LCAyMjUsIDEsIDI0NCwgMTk5LCAyMzEsIDE0NywgMjQyLCA0MCwgMjUyLCAxNDYsIAotICAgIDIyNSwgNCwgMjE3LCAxNzIsIDIyNSwgNjksIDIzNCwgNzAsIDc5LCAyMzIsIDExNywgMjMzLCAxNiwgMjIyLCAyMzYsIDI0MywgCi0gICAgNjEsIDIxOCwgMTMzLCAyMzQsIDY5LCAyNTEsIDE3OSwgMjQ5LCAxNTYsIDIsIDI0MSwgMjM0LCAyMTIsIDE5LCAyNTIsIDc3LCAKLSAgICAyNDEsIDIzNCwgMjUxLCAxNDMsIDI0MSwgMjM0LCAxMTMsIDI0MSwgMjMyLCAyMTksIDEyLCAyNDEsIDIzNCwgMjQyLCAxMjcsIAotICAgIDI0MSwgMjM0LCAyNDEsIDIzNSwgMiwgNzUsIDI1MSwgMjE2LCAyNDEsIDIzNCwgMjQyLCAxMzQsIDI0MSwgMjM0LCAyMTEsIAotICAgIDQyLCAyNDEsIDIzNCwgMjI0LCAxMzEsIDI0MSwgMjM0LCAyNDEsIDIzNSwgMiwgMjIzLCAzNiwgMjIzLCA0NywgMjQxLCAKLSAgICAyMzIsIDI0MSwgMjM1LCAyNDgsIDg5LCAyNDgsIDEsIDIyMCwgODQsIDIsIDExNiwgNTksIDIzNSwgMjIyLCAyNDUsIDE4MCwgCi0gICAgMTkzLCAyNTEsIDEyNCwgMjU0LCAxMjAsIDg3LCAyNTEsIDIwMywgMjE5LCA5NCwgODcsIDI0OSwgMjM2LCA4NywgMjE4LCAKLSAgICAyNDgsIDIxNywgMjQ5LCA4NywgMjQ2LCA5MywgMjQ4LCAxNjUsIDg3LCAyMjUsIDcwLCA2NCwgMjI0LCAyNTIsIDI0NCwgNjksIAotICAgIDI1MiwgMTEsIDI0NywgMTczLCA4NywgMjE5LCA1LCAyNTIsIDE2NiwgMjE2LCAxNTAsIDI1MiwgMTY2LCA3MSwgMjQ0LCA1OSwgCi0gICAgMjQwLCAyMTgsIDIyNSwgOCwgODcsIDIzMCwgMTU0LCAyNTIsIDE4MCwgMjQ5LCAxMDYsIDI0NSwgNDAsIDExNCwgMjQ3LCAKLSAgICAxNDAsIDUwLCAyNDksIDE0NywgMjUwLCAyNTAsIDI1MiwgMTUyLCAyLCAyMTEsIDQwLCA1MCwgMjUyLCAxNTIsIDIsIDI0NywgCi0gICAgMTQwLCA1MCwgMjUyLCAxNTIsIDIsIDI0NSwgNTUsIDUwLCAyNTIsIDE1MiwgMiwgMjI0LCAyMzEsIDUwLCAyMzAsIDE1NCwgCi0gICAgMiwgMjExLCAyMzUsIDI1MCwgMTQ2LCAyLCAyMTQsIDE1MywgMjE1LCAyMzIsIDIyLCAyMTEsIDQwLCA1MCwgMjIxLCAxODAsIAotICAgIDIyNSwgMTY5LCAyNDksIDIxNiwgMjUxLCAxNDcsIDIzMCwgMTkxLCAyNDQsIDY0LCAyNDcsIDE5MywgMjI2LCAxNjUsIDI0NywgCi0gICAgMTk4LCAyNDYsIDU3LCAyNDQsIDExNSwgMjQ0LCA0OCwgMjA0LCAyNDQsIDExNSwgMjQ0LCA0OCwgMjI2LCA4MCwgMiwgMjQ5LCAKLSAgICAxMDgsIDIyNiwgODAsIDI0NCwgMTkxLCAyMTQsIDE2MywgMjUxLCAyNCwgMjE3LCAxOSwgMjUxLCAyNCwgMjUwLCAyNTEsIAotICAgIDIzNSwgMjQ5LCAyNTAsIDE0NiwgMiwgMjE0LCAxNTMsIDIxNSwgMjMxLCAyNTAsIDE0NiwgMiwgMjQ2LCAxMTIsIDIxNSwgCi0gICAgMjMxLCAyNTIsIDE0OSwgMjUwLCAxNDUsIDI1MCwgMTQsIDIyNCwgMTI2LCAyMjIsIDE4NywgMjI0LCAxMjYsIDIyNiwgMjMsIAotICAgIDIxOCwgMTIzLCAyMjIsIDEzMywgMjE1LCAyMjMsIDIyMiwgMTMzLCAyNTEsIDE5OSwgMjE3LCA5MiwgMjMzLCA1NywgMjI4LCAKLSAgICA1MCwgMjI4LCA1MSwgMiwgMjQ4LCA4OCwgMjQ5LCAxNTUsIDI1MCwgOCwgMjUxLCAyMDAsIDIwNCwgMjUxLCAyMDAsIDI0MiwgCi0gICAgMTM0LCAyNTEsIDIwMCwgMjUxLCAyMTYsIDI1MSwgMjAwLCAyMjYsIDE2MSwgMjUxLCAyMDAsIDI1MSwgMTk3LCAyMjksIAotICAgIDIxMCwgMjUyLCAxODMsIDIyMSwgMTg4LCAyMzEsIDY1LCAyMTcsIDIsIDIyMywgMTI2LCAyMjYsIDc4LCAyNDQsIDE2NywgCi0gICAgMjMxLCAyMzksIDIyMSwgMjI1LCAyNTQsIDk3LCAyMjQsIDE0OCwgMjU1LCA1LCAyMzIsIDExOSwgMjUwLCAxMzUsIDIzMSwgCi0gICAgNzcsIDIyNiwgMTMzLCAyMTUsIDIzOSwgMjM2LCAzLCAyMTUsIDIzOSwgMjI2LCA4NiwgMjQ2LCAzMiwgODcsIDIzNiwgMCwgCi0gICAgMjQ1LCAxMjcsIDI0NSwgMTI4LCAyLCAyNDYsIDExMiwgODAsIDQ4LCAyNTAsIDgsIDIzMSwgMjA1LCAyLCAyMzIsIDExMywgCi0gICAgMjQ0LCA4MSwgMjUwLCA4LCAyMzEsIDIwNSwgMiwgMjIzLCAxNjAsIDI0NCwgODEsIDIwNCwgMjMxLCAyMDUsIDIsIDIyMywgCi0gICAgMTYwLCAyNDQsIDgxLCAyMDQsIDIzMSwgMjA1LCAyLCAyMzIsIDExMywgMjQ0LCA4MSwgMjI0LCAyMzksIDIyNCwgMjQwLCAKLSAgICAyNDAsIDI1NSwgMjI5LCA4OSwgMjMwLCAxNjQsIDIyNSwgMTIwLCAyMzAsIDE2NCwgMjI1LCAxMjEsIDIsIDk3LCA4MCwgCi0gICAgMjUzLCAyMTUsIDIzMywgNTIsIDIxMywgMTc1LCAyMzAsIDE2MywgMjMwLCAxNjQsIDIyNSwgMTIxLCAyMjYsIDIzNCwgMjI4LCAKLSAgICA4MCwgMjMwLCAxNjQsIDIyNSwgMTE5LCAyNTQsIDk4LCAyLCAyNTIsIDEzNywgMjUxLCAxOCwgMjEzLCAxNzIsIDI1MSwgMTgsIAotICAgIDIxNiwgMjU1LCAyMjMsIDE3NiwgMjEzLCAxNzEsIDIxNSwgNjAsIDk3LCAyNTMsIDI1NSwgMjUwLCAxMCwgOTcsIDIyLCAKLSAgICAxNDAsIDIwNCwgMjUwLCA0NCwgMjUzLCAyNTUsIDI1MCwgMTAsIDk3LCAyMiwgMTQwLCAyMDQsIDI1MCwgNDQsIDI1NCwgMCwgCi0gICAgMiwgMzcsIDEyMywgMjI2LCAxMjQsIDI1MCwgMTAsIDI0NiwgMTEyLCAyMiwgMjE0LCAxNTMsIDIwNCwgMjUwLCA0NCwgMjUzLCAKLSAgICAyNTUsIDI1NCwgOTYsIDI0NiwgMTEyLCAyMiwgMjE0LCAxNTMsIDIwNCwgMjUwLCA0NCwgMjUzLCAyNTUsIDEyMSwgMjUxLCAKLSAgICAxNDYsIDg3LCAxMjUsIDI1MSwgMTQ2LCA4NywgMjE5LCA5LCAyLCAyNTEsIDEyLCA5MSwgMjE5LCA4LCAyMTksIDksIDIsIAotICAgIDEyMywgMjE5LCAzMywgMjEyLCAzNSwgMjE5LCA5LCAyLCAxMzQsIDIxOSwgMzMsIDIxMiwgMzQsIDI1MiwgMTIzLCAyNDUsIAotICAgIDE4MCwgMjI1LCAzMCwgMjMzLCA0OCwgMjMxLCAyMTYsIDI0MiwgMTkxLCAyMjIsIDI1MCwgMjMxLCAyMTYsIDI0MiwgMTkxLCAKLSAgICAyMzIsIDE1OCwgMiwgMjM1LCAyMzIsIDIyNSwgMjAyLCAyNTAsIDgsIDIzMiwgMTU4LCAyLCAyMzQsIDE0NCwgMjM0LCAxNDQsIAotICAgIDIzMiwgMTU3LCAyMDQsIDIzMiwgMTU3LCAyNTIsIDUyLCAyNTIsIDUzLCAyLCAyNTEsIDEyLCA5MSwgMjUxLCAxOTgsIDIzMiwgCi0gICAgMjEwLCA4NywgMjIzLCAxNzcsIDI1MSwgOTQsIDI1MiwgMTkzLCAyLCAxNDAsIDgwLCA0OCwgMjQ1LCAxNTEsIDIsIDE0MCwgCi0gICAgODAsIDQ4LCAyMjYsIDIwMSwgMiwgMjQ1LCAzOSwgMTY0LCAyLCA0MywgNDQsIDgwLCA0OCwgMjE5LCA0MSwgMiwgOTcsIDgwLCAKLSAgICA0OCwgMjE2LCAxNSwgMiwgMjE0LCAxNTMsIDgwLCA0OCwgMjI4LCA4MCwgMTIzLCAyMTQsIDE4NCwgMjQ1LCAxOTksIDg3LCAKLSAgICAyMzQsIDE0MiwgMjE2LCAyNDgsIDIzNSwgMjI2LCAxNiwgMzEsIDcsIDYsIDIzMywgMTUsIDIzNSwgMjI2LCAxNiwgMzEsIDcsIAotICAgIDQsIDIzMywgMTUsIDIzNSwgMjI2LCAxNiwgMzEsIDIyNywgMjAzLCAyMzUsIDIyNiwgMTYsIDMxLCAyMTcsIDE4NCwgMjM1LCAKLSAgICAyMjYsIDE2LCAzMSwgNywgMjMzLCAxNSwgMjQ0LCAxMDQsIDI0NSwgMTgwLCAyMTYsIDEwLCAyMTEsIDE5OSwgMjQyLCAyOCwgCi0gICAgMjI3LCAxODYsIDIyLCAyNTEsIDIwNSwgMjQxLCA3MywgMjI1LCA1MywgMjMwLCAyMzEsIDIxNywgMCwgMjQ5LCAxMjIsIAotICAgIDI1MiwgMTY3LCAyMTksIDEyNywgMjI1LCAxMiwgMjE4LCAxNTksIDIsIDIzMCwgMjI5LCAyNDcsIDEyOCwgMjM1LCAxMzcsIAotICAgIDE2LCAzMSwgMjUyLCA2NSwgMjE1LCAyMjEsIDI0NSwgMTY0LCA4NSwgNDIsIDI1MSwgOTQsIDcxLCA0MiwgMjUxLCA5NCwgCi0gICAgMjMzLCA5MSwgMjIzLCAxMTQsIDI1MCwgNDMsIDIzMywgOTEsIDI1MSwgMjE2LCAyNTAsIDQzLCAyMzMsIDkxLCAyMjYsIAotICAgIDE2MSwgMjQ4LCAwLCAyMzMsIDkxLCAyNTEsIDIxNiwgMjQ4LCAwLCA0LCAyMjYsIDE2MSwgMjQ4LCAwLCA0LCAyNTEsIDIxNiwgCi0gICAgMjQ4LCAwLCAyMTQsIDE2MiwgMjIzLCAxMTQsIDIxNSwgMjI2LCAyNDYsIDExMywgMjIzLCAxMTQsIDIxNSwgMjI2LCAyMTQsIAotICAgIDE2MiwgNCwgMjIzLCAxMTQsIDIxNSwgMjI2LCAyNDYsIDExMywgNCwgMjIzLCAxMTQsIDIxNSwgMjI2LCAzNywgMjQ5LCAKLSAgICAxMzksIDIyNCwgMjU1LCAyNDksIDEzOSwgMjI1LCAwLCAyLCAyNDIsIDMzLCA1MSwgMjQ5LCAxMzksIDIyNCwgMjU1LCAyMjgsIAotICAgIDU0LCA0MywgMjIwLCAxNTUsIDIsIDEzNCwgMjQ3LCAxMjYsIDI1MCwgMTIsIDI0NCwgMTk5LCAxMjMsIDIyNiwgMjQ2LCAKLSAgICAyNTAsIDEyLCAyNDQsIDE5OSwgMTEzLCAyMjYsIDI0NiwgMjUwLCAxMiwgMjQ0LCAxOTksIDEzNCwgMjI2LCAyNDYsIDI1MCwgCi0gICAgMTIsIDI0NCwgMTk5LCAyNDQsIDE5LCAyMjYsIDI0NiwgMjUwLCAxMiwgMjQ0LCAxOTksIDI0NCwgODksIDIyNiwgMjQ2LCAKLSAgICAyNTAsIDEyLCAyNDQsIDE5OSwgMjE5LCAxMjcsIDIyNiwgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjIwLCAxMjQsIDIyNiwgCi0gICAgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjQ1LCAyMDEsIDIyNiwgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjI4LCAyMDUsIAotICAgIDIyNiwgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjE2LCAyNDksIDIyNiwgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjQ1LCAKLSAgICAxNzYsIDIyNiwgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjE1LCA3NywgMjI2LCAyNDYsIDI1MCwgMTIsIDI0NCwgMTk5LCAKLSAgICAyMjYsIDE5NiwgMjUwLCAxMiwgMjQ0LCAxOTksIDIxNSwgNTYsIDI1MCwgMTIsIDI0NCwgMTk5LCAyMTYsIDE0MSwgMjUwLCAKLSAgICAxMiwgMjQ0LCAxOTksIDI0NCwgMTUsIDI1MCwgMTIsIDI0NCwgMTk5LCAyNDQsIDg3LCAyNTAsIDEyLCAyNDQsIDE5OSwgCi0gICAgMjE5LCAxMjMsIDI1MCwgMTIsIDI0NCwgMTk5LCAyMjAsIDEyMywgMjUwLCAxMiwgMjQ0LCAxOTksIDI0NSwgMjAwLCAyNTAsIAotICAgIDEyLCAyNDQsIDE5OSwgMjI4LCAyMDQsIDI1MCwgMTIsIDI0NCwgMTk5LCAyMTYsIDI0NywgMjUwLCAxMiwgMjQ0LCAxOTksIAotICAgIDI0NSwgMTc0LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjE1LCA3NSwgMjMwLCAxMjIsIDI0MywgMjM3LCAyMTYsIDM3LCAyMTYsIAotICAgIDMsIDIxOCwgMTUwLCA2NCwgMjMyLCAyNDUsIDIxOSwgMTcyLCA2NCwgMjM1LCAxMzgsIDIzMCwgMTExLCAyNDIsIDEzMSwgCi0gICAgMjQ0LCAxOTgsIDI0MiwgMTMxLCAyNDQsIDE5OSwgMiwgMjE5LCA3NiwgMjQ1LCAyMSwgMjQ0LCAxOTksIDIsIDIxNywgMTUsIAotICAgIDY0LCAyMzUsIDU5LCAyMTksIDc2LCAyNDQsIDE5OSwgMiwgMjA0LCAyMzAsIDExNSwgMjE5LCA3NiwgMjQ0LCAxOTksIDIsIAotICAgIDIwNCwgMjMwLCAxMTYsIDIyLCAyMTksIDc2LCAyNDUsIDIxLCAyMTksIDc2LCAyNDQsIDE5OSwgMiwgMjA0LCAyMzAsIDExNiwgCi0gICAgMjIsIDI0OSwgMjM4LCAyMTcsIDI0OCwgMjE5LCA3NiwgMjQ0LCAxOTksIDIsIDIwNCwgMjMwLCAxMTYsIDIyLCAyMTYsIAotICAgIDEwNSwgMjQ1LCAyMSwgMjE5LCA3NiwgMjQ0LCAxOTksIDIsIDI0MiwgMzIsIDIxOSwgNzYsIDI0NCwgMTk5LCAyLCAyNDAsIAotICAgIDI1NCwgMjExLCAyMzMsIDI0NCwgMTk4LCAyMTksIDc2LCAyNDQsIDE5OSwgMiwgMjE5LCA3NiwgMjQ1LCAyMSwgMjQ0LCAKLSAgICAxOTksIDIyMSwgMjE5LCAyNDgsIDcwLCAyNDQsIDQxLCAyMjMsIDkxLCAyNDQsIDE5OCwgMjE5LCA3NiwgMjQ0LCAxOTksIDIsIAotICAgIDI0MSwgMjMzLCAyNDUsIDIxLCAyMTksIDc2LCAyNDQsIDE5OSwgMiwgMjE4LCAzNSwgMjE5LCA3NSwgMjQ0LCAxOTgsIDIyOSwgCi0gICAgOTIsIDI0NCwgMTk4LCAyNDUsIDMxLCAyNDQsIDE5OCwgMjE0LCAxODgsIDI0NCwgMTk4LCAyNDQsIDE5OSwgMiwgMjQ5LCAKLSAgICAyMzgsIDIxNywgMjQ4LCAyMjUsIDE5NSwgMjQ0LCAxOTgsIDI0OSwgMjA5LCAyNDQsIDE5OCwgMjQ5LCAyMTAsIDI0NCwgCi0gICAgMTk4LCAyMzQsIDY4LCAyNDQsIDE5OCwgMjQ0LCAxOTksIDIxNiwgMTM4LCAxMTYsIDIzNCwgNjksIDIzNCwgNjgsIDI0NCwgCi0gICAgMTk5LCAyLCAyMTksIDc2LCAyNDUsIDIxLCAyMzQsIDY4LCAyNDQsIDE5OSwgMiwgMjUwLCA4LCAyNDUsIDIxLCAyNDQsIAotICAgIDE5OSwgMiwgMjE4LCA4OSwgMjE2LCAyMCwgMjQ0LCAxOTksIDIsIDIxOCwgODksIDIxNiwgMjEsIDIyLCAyMTEsIDIzMywgCi0gICAgMjQ1LCAyMywgMjQ0LCAxOTksIDIsIDIxOCwgODksIDIxNiwgMjEsIDIyLCAyMTYsIDEwNSwgMjQ1LCAyMSwgMjQ3LCAyMDAsIAotICAgIDI0NCwgMTk4LCAyMTEsIDIwNCwgMjQ0LCAxOTgsIDI1NCwgMTE2LCAyNDQsIDE5OCwgMjI0LCAyMzAsIDI0NCwgMTk4LCAKLSAgICAyNDksIDEyNCwgMjQ0LCAxOTgsIDIyNSwgMTczLCAyNDQsIDE5OCwgMjQ0LCAxOTksIDIsIDIzMiwgMTMyLCA2NCwgMjE1LCAKLSAgICAyMDUsIDI0NywgMjAwLCAyNTEsIDk2LCAyMjMsIDkxLCAyNDQsIDE5OCwgMjQzLCAyNDcsIDI0NCwgMTk5LCAyLCAyMDQsIAotICAgIDIzMCwgMTE1LCAyNTQsIDExNCwgMjQ0LCAxOTgsIDI0NCwgMTYwLCAyNDQsIDE5OCwgMjEyLCAyMCwgMjQ0LCAxOTgsIDIxOSwgCi0gICAgOTMsIDI0NCwgMTk4LCAyMTYsIDcyLCAyNDQsIDE5OCwgMjQyLCAxMzIsIDI0NCwgMTk4LCAyMzIsIDEyMCwgMjQ5LCAxMjQsIAotICAgIDI0NCwgMTk4LCAyNDQsIDE5OSwgMiwgMjA0LCAyMzAsIDExNSwgMjQwLCAyMTAsIDI0NCwgMTk4LCAyNDQsIDE5OSwgMiwgCi0gICAgMjA0LCAyMzAsIDExNiwgMjIsIDI0OSwgMjM4LCAyMTcsIDI0OCwgMjQ0LCAxOTksIDIyMSwgMTkyLCAyMzYsIDcsIDI0NCwgCi0gICAgMTYxLCAyNTMsIDIyMSwgMjQ0LCAxOTgsIDI0NCwgNTcsIDI0NCwgMTk4LCAyMTksIDk0LCAyNDQsIDE5OCwgMjQ3LCAxNzMsIAotICAgIDI0NCwgMTk4LCAyNDQsIDE5OSwgMjExLCAyMzAsIDIzMCwgMTE1LCAyNDQsIDE5OSwgMiwgMjMxLCA4OSwgMjMxLCAxNDksIAotICAgIDI0MiwgMTMxLCAyNTAsIDIzMywgMjQ0LCAxOTksIDIsIDIxOSwgNzYsIDI0NSwgMjEsIDI1MCwgMjMzLCAyNDQsIDE5OSwgMiwgCi0gICAgMjE3LCAxNSwgNjQsIDIzNSwgNTksIDIxOSwgNzYsIDI1MCwgMjMzLCAyNDQsIDE5OSwgMiwgMjA0LCAyMzAsIDExNSwgMjE5LCAKLSAgICA3NiwgMjUwLCAyMzMsIDI0NCwgMTk5LCAyLCAyNDEsIDIzMywgMjQ1LCAyMSwgMjUwLCAyMzMsIDI0NCwgMTk5LCAyLCAyMTEsIAotICAgIDE5NiwgMjE5LCA3NywgMjM0LCA2OCwgMjUwLCAyMzMsIDI0NCwgMTk5LCAyLCAyNTAsIDgsIDI0NSwgMjEsIDIyNCwgMjMwLCAKLSAgICAyNTAsIDIzMywgMjQ0LCAxOTgsIDI0OSwgMTI0LCAyNTAsIDIzMywgMjQ0LCAxOTgsIDIxMiwgMjAsIDI1MCwgMjMzLCAyNDQsIAotICAgIDE5OCwgMjQ0LCAxOTksIDIsIDIyOCwgODAsIDI0MiwgMTcwLCAyNDMsIDQxLCAyNDQsIDE5OSwgMiwgMjI2LCAyMTksIDI0MywgCi0gICAgNDEsIDIyNSwgMTcxLCAyNTEsIDE3NiwgMjQ4LCA4MywgMjIxLCAxNzEsIDIzMCwgMTUwLCAyNDEsIDIzNiwgMjMwLCAxNTAsIAotICAgIDIxOSwgMTAsIDIzMCwgMTUwLCAyNDIsIDEyLCAyMjUsIDE3MSwgMjIzLCAxNTksIDEyMywgMjQyLCAyMiwgMjI1LCAxNzEsIAotICAgIDIyMywgMTU5LCAyNTEsIDE4NiwgMjQyLCAxOCwgMjM2LCA3LCAyNTAsIDE4NywgMjI1LCAxNzEsIDI0MywgMjQ2LCAyMjUsIAotICAgIDE3MSwgMiwgMjI0LCAyMzAsIDI0NCwgMTk4LCAyMjUsIDE3MSwgMiwgMjQ0LCA0OSwgMjQyLCAxNywgMjIyLCAyMDUsIDI0MSwgCi0gICAgMjIxLCAyMTgsIDE0NSwgMjMyLCAxNTUsIDIyMywgMTY1LCAyNTAsIDI1MiwgMjQxLCAxNjksIDIxNSwgMjQ5LCAyNDEsIAotICAgIDE2OSwgMjE1LCAyNTAsIDIsIDI1MSwgMTIyLCAyMjgsIDU4LCAyMTUsIDI0OSwgMjMxLCAzNywgMTkzLCAyMjMsIDE2NiwgCi0gICAgMjE4LCAxNTEsIDIxNSwgMjQ3LCAyMTUsIDI0OCwgMjUwLCAyNTIsIDI1MSwgMTAwLCAyMjYsIDE5OCwgMjUxLCAxMDAsIAotICAgIDIxNSwgMjAyLCAyNTEsIDEwMSwgMjE4LCAxMzEsIDIzMCwgMTkyLCAyNTQsIDEzOCwgMjQ0LCAxMDUsIDI0NSwgMTQ1LCAKLSAgICAyMjUsIDIsIDI1MCwgMjUyLCAyMjYsIDE5OCwgMjI1LCAyLCAyNTAsIDI1MiwgMjE3LCAzMywgMjI2LCAxOTgsIDIxNywgMzMsIAotICAgIDI1MywgMTg4LCAyMjYsIDE5OCwgMjUzLCAxODgsIDIyMywgMTIxLCAyMTMsIDI0NywgMjQ4LCA2NiwgMjE1LCAxOTMsIDI1MywgCi0gICAgMjUwLCAyMzIsIDEyMywgMjE1LCAyNTUsIDIzMCwgMTQ0LCAyMzAsIDEyMSwgMjIzLCAxNjQsIDIxOCwgNywgMjIzLCAxNjQsIAotICAgIDIzMCwgMTIxLCAyNTEsIDM2LCAyNTQsIDIzOCwgMjE1LCAyNDYsIDIyMCwgMTgsIDIyMiwgMTg0LCAyMTksIDMsIDIwMywgCi0gICAgMjE1LCAyNTMsIDIzMiwgMjM2LCA2NywgMjE1LCAyNTMsIDIzMiwgMjM2LCAyNDksIDE5OCwgNTAsIDIyNSwgMiwgMjUwLCAKLSAgICAyMzcsIDIyMywgNDcsIDIzMiwgMjM2LCAyMTUsIDIyMywgMjQ0LCA4MiwgMjI2LCAyMDEsIDIyNCwgMjQxLCAyNDcsIDEzMSwgCi0gICAgMjI4LCA4MCwgMjQ1LCAxMzMsIDUwLCAyMTksIDc0LCA4NywgMjI4LCA4MCwgMjE5LCA3NCwgODcsIDIyNCwgMTI1LCAyMzIsIAotICAgIDE5OSwgMjM2LCA3LCAyMzUsIDE2MywgMjI1LCA0NCwgODcsIDI0NywgMTU0LCAyMjgsIDU3LCAyMzIsIDE5OSwgODcsIDIyNCwgCi0gICAgMjM1LCAyMTIsIDQxLCA4NywgMjI4LCA3MSwgMjEyLCA0MSwgODcsIDI1MiwgMTAsIDIyOCwgODAsIDI1MiwgOSwgMjUyLCA4LCAKLSAgICAyMzAsIDEyMSwgMjUyLCA4LCAyMjUsIDIxNiwgMjI4LCA4MCwgMjI1LCAyMTUsIDI1MCwgMTA4LCAyNDksIDEzMiwgMjMxLCAKLSAgICA2MSwgODcsIDIxMSwgMjE4LCA4NywgMjIzLCA2MiwgMjUyLCAxOTUsIDg3LCAyMTYsIDM4LCAyMTIsIDQxLCAyNTAsIDUsIAotICAgIDIxOSwgMjM2LCAyNTIsIDEyNiwgMjUyLCAxMjQsIDIyNSwgMjQ2LCAyNDksIDE4NSwgMjQ5LCA5NCwgMjUyLCAxNzcsIDI1MCwgCi0gICAgMzAsIDQzLCAyMzIsIDk1LCAxMDgsIDE2LCAzMSwgMjI0LCA2LCAxMDgsIDE2LCAzMSwgMjU0LCAyMDEsIDEwOCwgMTYsIDMxLCAKLSAgICAyNDQsIDEwNCwgMTA4LCAxNiwgMzEsIDI0NSwgMjMxLCAxMDgsIDE2LCAzMSwgMjEyLCA0MCwgMTA4LCAxNiwgMzEsIDI1NCwgCi0gICAgNTEsIDEwOCwgMTYsIDMxLCAyNTQsIDUyLCAyMjMsIDEwOCwgMTA4LCAxNiwgMzEsIDI1NCwgNTIsIDIyMywgMTA3LCAxMDgsIAotICAgIDE2LCAzMSwgMjU0LCA1MiwgMjEzLCAxNDMsIDEwOCwgMTYsIDMxLCAyNTQsIDUyLCAyMTMsIDE0MiwgMTA4LCAxNiwgMzEsIAotICAgIDIxMywgMTU3LCAxMDgsIDE2LCAzMSwgMjEzLCAxNTYsIDEwOCwgMTYsIDMxLCAyMTMsIDE1NSwgMTA4LCAxNiwgMzEsIDIxOCwgCi0gICAgNDUsIDEwOCwgMTYsIDMxLCAyMjUsIDEyOCwgMjE4LCA0NSwgMTA4LCAxNiwgMzEsIDg1LCAyMTgsIDQ1LCAxMDgsIDE2LCAKLSAgICAzMSwgMjMxLCA2MCwgMjE4LCA3MiwgMTA4LCAxNiwgMzEsIDIzMSwgNjAsIDIxOCwgNzEsIDEwOCwgMTYsIDMxLCAyMzEsIAotICAgIDYwLCAyMTgsIDcwLCAxMDgsIDE2LCAzMSwgMjUwLCA0NiwgMTA4LCAxNiwgMzEsIDIyMiwgMywgMTA4LCAxNiwgMzEsIDIyOCwgCi0gICAgMTkzLCAxMDgsIDE2LCAzMSwgMjEzLCAxNDEsIDEwOCwgMTYsIDMxLCAyMTMsIDE0MCwgMTA4LCAxNiwgMzEsIDIyMiwgMjA2LCAKLSAgICAyMjIsIDMsIDEwOCwgMTYsIDMxLCAyMjIsIDIwNiwgMjIyLCAyLCAxMDgsIDE2LCAzMSwgMjQyLCAxNzMsIDEwOCwgMTYsIAotICAgIDMxLCAyMTksIDE2OCwgMTA4LCAxNiwgMzEsIDIzNSwgMTg0LCAyMjYsIDE1NywgMTA4LCAxNiwgMzEsIDIzNSwgMTg0LCAKLSAgICAyMjYsIDE1NiwgMTA4LCAxNiwgMzEsIDI0OSwgMTQyLCA2NCwgMjM1LCAxODMsIDEwOCwgMTYsIDMxLCAyMjMsIDEwNCwgNjQsIAotICAgIDIzNSwgMTgzLCAxMDgsIDE2LCAzMSwgMjQ5LCAxNzYsIDIyNiwgMTU3LCAxMDgsIDE2LCAzMSwgMjM1LCAxODIsIDIyNiwgCi0gICAgMTU3LCAxMDgsIDE2LCAzMSwgMjE4LCA3MywgNjQsIDI0OSwgMTc1LCAxMDgsIDE2LCAzMSwgMjQ5LCAxNDIsIDY0LCAyNDksIAotICAgIDE3NSwgMTA4LCAxNiwgMzEsIDI0OSwgMTQyLCA2NCwgMjQ5LCAxNzQsIDEwOCwgMTYsIDMxLCAyNDksIDE3NiwgMjU0LCA5MSwgCi0gICAgMTA4LCAxNiwgMzEsIDIyMiwgNCwgNjQsIDI0OSwgMTc2LCAyNTQsIDkxLCAxMDgsIDE2LCAzMSwgMjE4LCA3MywgNjQsIAotICAgIDIyMiwgNCwgNjQsIDI0OSwgMTc1LCAxMDgsIDE2LCAzMSwgMjEzLCAyNDMsIDEwOCwgMTYsIDMxLCAyMTYsIDg1LCAyMjYsIAotICAgIDE1NywgMTA4LCAxNiwgMzEsIDIzMywgNjMsIDIyNiwgMTU3LCAxMDgsIDE2LCAzMSwgMjU0LCA5MCwgMjI2LCAxNTcsIDEwOCwgCi0gICAgMTYsIDMxLCAyMTgsIDczLCA2NCwgMjU0LCA4OSwgMTA4LCAxNiwgMzEsIDIyMiwgNCwgNjQsIDI1NCwgODksIDEwOCwgMTYsIAotICAgIDMxLCAyMTgsIDczLCA2NCwgMjIyLCA0LCA2NCwgMjU0LCA4OSwgMTA4LCAxNiwgMzEsIDIxMywgMTU4LCA2NCwgMjU0LCA4OSwgCi0gICAgMTA4LCAxNiwgMzEsIDIyMywgMTA0LCA2NCwgMjU0LCA4OSwgMTA4LCAxNiwgMzEsIDIyMywgMTA0LCA2NCwgMjU0LCA4OCwgCi0gICAgMTA4LCAxNiwgMzEsIDIyMywgMTAzLCAxMDgsIDE2LCAzMSwgMjIzLCAxMDIsIDEwOCwgMTYsIDMxLCAyMjMsIDEwMSwgMTA4LCAKLSAgICAxNiwgMzEsIDIyMywgMTAwLCAxMDgsIDE2LCAzMSwgMjU0LCAxNjYsIDEwOCwgMTYsIDMxLCAyNTQsIDE2NSwgMTA4LCAxNiwgCi0gICAgMzEsIDIzMSwgMTY4LCAxMDgsIDE2LCAzMSwgMjIyLCA5LCAxMDgsIDE2LCAzMSwgMjUzLCAyNTQsIDEwOCwgMTYsIDMxLCAKLSAgICAyMjMsIDEyOCwgMTA4LCAxNiwgMzEsIDIyMywgMTI3LCAxMDgsIDE2LCAzMSwgMjUzLCAxOTEsIDEwOCwgMTYsIDMxLCAyNTEsIAotICAgIDIzNywgMjI2LCAxNTcsIDEwOCwgMTYsIDMxLCAyMTcsIDUwLCAxMDgsIDE2LCAzMSwgMjE3LCA0OSwgMTA4LCAxNiwgMzEsIAotICAgIDIyNCwgMTEsIDIzMiwgMjI4LCAxMDgsIDE2LCAzMSwgMjUxLCAxOTEsIDEwOCwgMTYsIDMxLCAyNTEsIDE5MCwgMTA4LCAxNiwgCi0gICAgMzEsIDI1MSwgMTg5LCAxMDgsIDE2LCAzMSwgMjU0LCAxNDYsIDEwOCwgMTYsIDMxLCAyMjYsIDIyMiwgMTA4LCAxNiwgMzEsIAotICAgIDIxOCwgMjUwLCAxMDgsIDE2LCAzMSwgMjE2LCA4MywgMTA4LCAxNiwgMzEsIDI0MiwgMTAzLCAxMDgsIDE2LCAzMSwgMjEyLCAKLSAgICAyOCwgMTA4LCAxNiwgMzEsIDIyNCwgMjI5LCAxMDgsIDE2LCAzMSwgMjUxLCAyMiwgMTA4LCAxNiwgMzEsIDIxNSwgODYsIAotICAgIDEwOCwgMTYsIDMxLCAyNTAsIDI1NCwgMjMwLCAxMjcsIDEwOCwgMTYsIDMxLCAyMjEsIDIwNCwgNjQsIDIzNSwgNjEsIDEwOCwgCi0gICAgMTYsIDMxLCAyNTEsIDMzLCAxMDgsIDE2LCAzMSwgMjE1LCAyMjAsIDEwOCwgMTYsIDMxLCAyMTgsIDE1NiwgMjE1LCAyMjAsIAotICAgIDEwOCwgMTYsIDMxLCAyMzIsIDE1NCwgMTA4LCAxNiwgMzEsIDIxOSwgNTgsIDEwOCwgMTYsIDMxLCAyMTQsIDE0MiwgMTA4LCAKLSAgICAxNiwgMzEsIDI0MCwgMjUzLCAyNDYsIDcyLCAxMDgsIDE2LCAzMSwgMjUzLCAyMzUsIDEwOCwgMTYsIDMxLCAyMjQsIDIzNywgCi0gICAgMjUzLCAyMzUsIDEwOCwgMTYsIDMxLCAyNTEsIDE1MCwgMTA4LCAxNiwgMzEsIDIyNCwgMjI4LCAyNTEsIDE1MCwgMTA4LCAKLSAgICAxNiwgMzEsIDI1NCwgMTQzLCAxMDgsIDE2LCAzMSwgMjE4LCAxMTksIDIxOCwgMjcsIDIxOCwgMTE4LCAxMDgsIDE2LCAzMSwgCi0gICAgMjE4LCAxMTksIDIxOCwgMjcsIDIxOCwgMTE3LCAxMDgsIDE2LCAzMSwgMjE4LCA2OSwgMTA4LCAxNiwgMzEsIDIyNCwgMjAzLCAKLSAgICAxMDgsIDE2LCAzMSwgMjQ3LCAxODksIDEwOCwgMTYsIDMxLCAyNDcsIDE5MSwgMTA4LCAxNiwgMzEsIDI0NywgMTkwLCAxMDgsIAotICAgIDE2LCAzMSwgMjI0LCAxMzQsIDEwOCwgMTYsIDMxLCAyMjQsIDEyMywgMTA4LCAxNiwgMzEsIDI0OSwgMTMwLCAxMDgsIDE2LCAKLSAgICAzMSwgMjQ5LCAxMjksIDEwOCwgMTYsIDMxLCAyNDksIDEyOCwgMTA4LCAxNiwgMzEsIDI0OSwgMTI3LCAxMDgsIDE2LCAzMSwgCi0gICAgMjQ5LCAxMjYsIDEwOCwgMTYsIDMxLCAyNTQsIDE3OCwgMTA4LCAxNiwgMzEsIDI1MiwgMTI3LCA2NCwgMjMxLCAxNTQsIAotICAgIDEwOCwgMTYsIDMxLCAyNTIsIDEyNywgNjQsIDIxNCwgMTcsIDEwOCwgMTYsIDMxLCAyMjMsIDYwLCAxMDgsIDE2LCAzMSwgCi0gICAgMjQwLCAyNDUsIDEwOCwgMTYsIDMxLCAyMjgsIDIxNywgMTA4LCAxNiwgMzEsIDI0OCwgMTUzLCAxMDgsIDE2LCAzMSwgMjMwLCAKLSAgICAxMzksIDEwOCwgMTYsIDMxLCAxNjMsIDI0NiwgMTAyLCAxMDgsIDE2LCAzMSwgMTYzLCAyMjYsIDEzNiwgMTAsIDE0LCAyNDAsIAotICAgIDEwOSwgMTAsIDE0LCAyNDAsIDEwOCwgMTAsIDE0LCAyNDAsIDEwNywgMTAsIDE0LCAyNDAsIDEwNiwgMTAsIDE0LCAyNDAsIAotICAgIDEwNSwgMTAsIDE0LCAyNDAsIDEwNCwgMTAsIDE0LCAyNDAsIDEwMywgMTAsIDE0LCAyNDAsIDEwMiwgMTAsIDE0LCAyNDAsIAotICAgIDEwMSwgMTAsIDE0LCAyNDAsIDEwMCwgMTAsIDE0LCAyNDAsIDk5LCAxMCwgMTQsIDI0MCwgOTgsIDEwLCAxNCwgMjQwLCA5NywgCi0gICAgMTAsIDE0LCAyNDAsIDk2LCAxMCwgMTQsIDI0MCwgOTUsIDEwLCAxNCwgMjQwLCA5NCwgMTAsIDE0LCAyNDAsIDkzLCAxMCwgCi0gICAgMTQsIDI0MCwgOTIsIDEwLCAxNCwgMjQwLCA5MSwgMTAsIDE0LCAyNDAsIDkwLCAxMCwgMTQsIDI0MCwgODksIDEwLCAxNCwgCi0gICAgMjQwLCA4OCwgMTAsIDE0LCAyNDAsIDg3LCAxMCwgMTQsIDI0MCwgODYsIDEwLCAxNCwgMjQwLCA4NSwgMTAsIDE0LCAyNDAsIAotICAgIDg0LCAxMCwgMTQsIDI0MCwgODMsIDEwLCAxNCwgMjQwLCA4MiwgMTAsIDE0LCAyNDAsIDgxLCAxMCwgMTQsIDI0MCwgODAsIAotICAgIDEwLCAxNCwgMjQwLCA3OSwgMTAsIDE0LCAyNDAsIDc4LCAxMCwgMTQsIDI0MCwgNzcsIDEwLCAxNCwgMjQwLCA3NiwgMTAsIAotICAgIDE0LCAyNDAsIDc1LCAxMCwgMTQsIDI0MCwgNzQsIDEwLCAxNCwgMjQwLCA3MywgMTAsIDE0LCAyNDAsIDcyLCAxMCwgMTQsIAotICAgIDI0MCwgNzEsIDEwLCAxNCwgMjQwLCA3MCwgMTAsIDE0LCAyNDAsIDY5LCAxMCwgMTQsIDI0MCwgNjgsIDEwLCAxNCwgMjQwLCAKLSAgICA2NywgMTAsIDE0LCAyNDAsIDY2LCAxMCwgMTQsIDI0MCwgNjUsIDEwLCAxNCwgMjQwLCA2NCwgMTAsIDE0LCAyNDAsIDYzLCAKLSAgICAxMCwgMTQsIDI0MCwgNjIsIDEwLCAxNCwgMjQwLCA2MSwgMTAsIDE0LCAyNDAsIDYwLCAxMCwgMTQsIDI0MCwgNTksIDEwLCAKLSAgICAxNCwgMjQwLCA1OCwgMTAsIDE0LCAyNDAsIDU3LCAxMCwgMTQsIDI0MCwgNTYsIDEwLCAxNCwgMjQwLCA1NSwgMTAsIDE0LCAKLSAgICAyNDAsIDU0LCAxMCwgMTQsIDI0MCwgNTMsIDEwLCAxNCwgMjQwLCA1MiwgMTAsIDE0LCAyNDAsIDUxLCAxMCwgMTQsIDI0MCwgCi0gICAgNTAsIDEwLCAxNCwgMjQwLCA0OSwgMTAsIDE0LCAyNDAsIDQ4LCAxMCwgMTQsIDI0MCwgNDcsIDEwLCAxNCwgMjQwLCA0NiwgCi0gICAgMTAsIDE0LCAyNDAsIDQ1LCAxMCwgMTQsIDI0MCwgNDQsIDEwLCAxNCwgMjQwLCA0MywgMTAsIDE0LCAyNDAsIDQyLCAxMCwgCi0gICAgMTQsIDI0MCwgNDEsIDEwLCAxNCwgMjQwLCA0MCwgMTAsIDE0LCAyNDAsIDM5LCAxMCwgMTQsIDI0MCwgMzgsIDEwLCAxNCwgCi0gICAgMjQwLCAzNywgMTAsIDE0LCAyNDAsIDM2LCAxMCwgMTQsIDI0MCwgMzUsIDEwLCAxNCwgMjQwLCAzNCwgMTAsIDE0LCAyNDAsIAotICAgIDMzLCAxMCwgMTQsIDI0MCwgMzIsIDEwLCAxNCwgMjQwLCAzMSwgMTAsIDE0LCAyNDAsIDMwLCAxMCwgMTQsIDI0MCwgMjksIAotICAgIDEwLCAxNCwgMjQwLCAyOCwgMTAsIDE0LCAyNDAsIDI3LCAxMCwgMTQsIDI0MCwgMjYsIDEwLCAxNCwgMjQwLCAyNSwgMTAsIAotICAgIDE0LCAyNDAsIDI0LCAxMCwgMTQsIDI0MCwgMjMsIDEwLCAxNCwgMjQwLCAyMiwgMTAsIDE0LCAyNDAsIDIxLCAxMCwgMTQsIAotICAgIDI0MCwgMjAsIDEwLCAxNCwgMjQwLCAxOSwgMTAsIDE0LCAyNDAsIDE4LCAxMCwgMTQsIDI0MCwgMTcsIDEwLCAxNCwgMjQwLCAKLSAgICAxNiwgMTAsIDE0LCAyNDAsIDE1LCAxMCwgMTQsIDI0MCwgMTQsIDEwLCAxNCwgMjQwLCAxMywgMTAsIDE0LCAyNDAsIDEyLCAKLSAgICAxMCwgMTQsIDI0MCwgMTEsIDEwLCAxNCwgMjQwLCAxMCwgMTAsIDE0LCAyNDAsIDksIDEwLCAxNCwgMjQwLCA4LCAxMCwgMTQsIAotICAgIDI0MCwgNywgMTAsIDE0LCAyNDAsIDYsIDEwLCAxNCwgMjQwLCA1LCAxMCwgMTQsIDI0MCwgNCwgMTAsIDE0LCAyNDAsIDMsIAotICAgIDEwLCAxNCwgMjQwLCAyLCAxMCwgMTQsIDI0MCwgMSwgMTAsIDE0LCAyNDAsIDAsIDEwLCAxNCwgMjM5LCAyNTUsIDEwLCAxNCwgCi0gICAgMjM5LCAyNTQsIDEwLCAxNCwgMjM5LCAyNTMsIDEwLCAxNCwgMjM5LCAyNTIsIDEwLCAxNCwgMjM5LCAyNTEsIDEwLCAxNCwgCi0gICAgMjM5LCAyNTAsIDEwLCAxNCwgMjM5LCAyNDksIDEwLCAxNCwgMjM5LCAyNDgsIDEwLCAxNCwgMjM5LCAyNDcsIDEwLCAxNCwgCi0gICAgMjM5LCAyNDYsIDEwLCAxNCwgMjM5LCAyNDUsIDEwLCAxNCwgMjM5LCAyNDQsIDEwLCAxNCwgMjM5LCAyNDMsIDEwLCAxNCwgCi0gICAgMjM5LCAyNDIsIDEwLCAxNCwgMjM5LCAyNDEsIDEwLCAxNCwgMjM5LCAyNDAsIDEwLCAxNCwgMjM5LCAyMzksIDEwLCAxNCwgCi0gICAgMjM5LCAyMzgsIDEwLCAxNCwgMjM5LCAyMzcsIDEwLCAxNCwgMjM5LCAyMzYsIDEwLCAxNCwgMjM5LCAyMzUsIDEwLCAxNCwgCi0gICAgMjM5LCAyMzQsIDEwLCAxNCwgMjM5LCAyMzMsIDEwLCAxNCwgMjM5LCAyMzIsIDEwLCAxNCwgMjM5LCAyMzEsIDEwLCAxNCwgCi0gICAgMjM5LCAyMzAsIDEwLCAxNCwgMjM5LCAyMjksIDEwLCAxNCwgMjM5LCAyMjgsIDEwLCAxNCwgMjM5LCAyMjcsIDEwLCAxNCwgCi0gICAgMjM5LCAyMjYsIDEwLCAxNCwgMjM5LCAyMjUsIDEwLCAxNCwgMjM5LCAyMjQsIDEwLCAxNCwgMjM5LCAyMjMsIDEwLCAxNCwgCi0gICAgMjM5LCAyMjIsIDEwLCAxNCwgMjM5LCAyMjEsIDEwLCAxNCwgMjM5LCAyMjAsIDEwLCAxNCwgMjM5LCAyMTksIDEwLCAxNCwgCi0gICAgMjM5LCAyMTgsIDEwLCAxNCwgMjM5LCAyMTcsIDEwLCAxNCwgMjM5LCAyMTYsIDEwLCAxNCwgMjM5LCAyMTUsIDEwLCAxNCwgCi0gICAgMjM5LCAyMTQsIDEwLCAxNCwgMjM5LCAyMTMsIDEwLCAxNCwgMjM5LCAyMTIsIDEwLCAxNCwgMjM5LCAyMTEsIDEwLCAxNCwgCi0gICAgMjM5LCAyMTAsIDEwLCAxNCwgMjM5LCAyMDksIDEwLCAxNCwgMjM5LCAyMDgsIDEwLCAxNCwgMjM5LCAyMDcsIDEwLCAxNCwgCi0gICAgMjM5LCAyMDYsIDEwLCAxNCwgMjM5LCAyMDUsIDEwLCAxNCwgMjM5LCAyMDQsIDEwLCAxNCwgMjM5LCAyMDMsIDEwLCAxNCwgCi0gICAgMjM5LCAyMDIsIDEwLCAxNCwgMjM5LCAyMDEsIDEwLCAxNCwgMjM5LCAyMDAsIDEwLCAxNCwgMjM5LCAxOTksIDEwLCAxNCwgCi0gICAgMjM5LCAxOTgsIDEwLCAxNCwgMjM5LCAxOTcsIDEwLCAxNCwgMjM5LCAxOTYsIDEwLCAxNCwgMjM5LCAxOTUsIDEwLCAxNCwgCi0gICAgMjM5LCAxOTQsIDEwLCAxNCwgMjM5LCAxOTMsIDEwLCAxNCwgMjM5LCAxOTIsIDEwLCAxNCwgMjM5LCAxOTEsIDEwLCAxNCwgCi0gICAgMjM5LCAxOTAsIDEwLCAxNCwgMjM5LCAxODksIDEwLCAxNCwgMjM5LCAxODgsIDEwLCAxNCwgMjM5LCAxODcsIDEwLCAxNCwgCi0gICAgMjM5LCAxODYsIDEwLCAxNCwgMjM5LCAxODUsIDEwLCAxNCwgMjM5LCAxODQsIDEwLCAxNCwgMjM5LCAxODMsIDEwLCAxNCwgCi0gICAgMjM5LCAxODIsIDEwLCAxNCwgMjM5LCAxODEsIDEwLCAxNCwgMjM5LCAxODAsIDEwLCAxNCwgMjM5LCAxNzksIDEwLCAxNCwgCi0gICAgMjM5LCAxNzgsIDEwLCAxNCwgMjM5LCAxNzcsIDEwLCAxNCwgMjM5LCAxNzYsIDEwLCAxNCwgMjM5LCAxNzUsIDEwLCAxNCwgCi0gICAgMjM5LCAxNzQsIDEwLCAxNCwgMjM5LCAxNzMsIDEwLCAxNCwgMjM5LCAxNzIsIDEwLCAxNCwgMjM5LCAxNzEsIDEwLCAxNCwgCi0gICAgMjM5LCAxNzAsIDEwLCAxNCwgMjM5LCAxNjksIDEwLCAxNCwgMjM5LCAxNjgsIDEwLCAxNCwgMjM5LCAxNjcsIDEwLCAxNCwgCi0gICAgMjM5LCAxNjYsIDEwLCAxNCwgMjM5LCAxNjUsIDEwLCAxNCwgMjM5LCAxNjQsIDEwLCAxNCwgMjM5LCAxNjMsIDEwLCAxNCwgCi0gICAgMjM5LCAxNjIsIDEwLCAxNCwgMjM5LCAxNjEsIDEwLCAxNCwgMjM5LCAxNjAsIDEwLCAxNCwgMjM5LCAxNTksIDEwLCAxNCwgCi0gICAgMjM5LCAxNTgsIDEwLCAxNCwgMjM5LCAxNTcsIDEwLCAxNCwgMjM5LCAxNTYsIDEwLCAxNCwgMjM5LCAxNTUsIDEwLCAxNCwgCi0gICAgMjM5LCAxNTQsIDEwLCAxNCwgMjM5LCAxNTMsIDEwLCAxNCwgMjM5LCAxNTIsIDEwLCAxNCwgMjM5LCAxNTEsIDEwLCAxNCwgCi0gICAgMjM5LCAxNTAsIDEwLCAxNCwgMjM5LCAxNDksIDEwLCAxNCwgMjM5LCAxNDgsIDEwLCAxNCwgMjM5LCAxNDcsIDEwLCAxNCwgCi0gICAgMjM5LCAxNDYsIDEwLCAxNCwgMjM5LCAxNDUsIDEwLCAxNCwgMjM5LCAxNDQsIDEwLCAxNCwgMjM5LCAxNDMsIDEwLCAxNCwgCi0gICAgMjM5LCAxNDIsIDEwLCAxNCwgMjM5LCAxNDEsIDEwLCAxNCwgMjM5LCAxNDAsIDEwLCAxNCwgMjM5LCAxMzksIDEwLCAxNCwgCi0gICAgMjM5LCAxMzgsIDEwLCAxNCwgMjM5LCAxMzcsIDEwLCAxNCwgMjM5LCAxMzYsIDEwLCAxNCwgMjM5LCAxMzUsIDEwLCAxNCwgCi0gICAgMjM5LCAxMzQsIDEwLCAxNCwgMjM5LCAxMzMsIDEwLCAxNCwgMjM5LCAxMzIsIDEwLCAxNCwgMjM5LCAxMzEsIDEwLCAxNCwgCi0gICAgMjM5LCAxMzAsIDEwLCAxNCwgMjM5LCAxMjksIDEwLCAxNCwgMjM5LCAxMjgsIDEwLCAxNCwgMjM5LCAxMjcsIDEwLCAxNCwgCi0gICAgMjM5LCAxMjYsIDEwLCAxNCwgMjM5LCAxMjUsIDEwLCAxNCwgMjM5LCAxMjQsIDEwLCAxNCwgMjM5LCAxMjMsIDEwLCAxNCwgCi0gICAgMjM5LCAxMjIsIDEwLCAxNCwgMjM5LCAxMjEsIDEwLCAxNCwgMjM5LCAxMjAsIDEwLCAxNCwgMjM5LCAxMTksIDEwLCAxNCwgCi0gICAgMjM5LCAxMTgsIDEwLCAxNCwgMjM5LCAxMTcsIDEwLCAxNCwgMjM5LCAxMTYsIDEwLCAxNCwgMjM5LCAxMTUsIDEwLCAxNCwgCi0gICAgMjM5LCAxMTQsIDEwLCAxNCwgMjM5LCAxMTMsIDEwLCAxNCwgMjM5LCAxMTIsIDEwLCAxNCwgMjM5LCAxMTEsIDEwLCAxNCwgCi0gICAgMjM5LCAxMTAsIDEwLCAxNCwgMjM5LCAxMDksIDEwLCAxNCwgMjM5LCAxMDgsIDEwLCAxNCwgMjM5LCAxMDcsIDEwLCAxNCwgCi0gICAgMjM5LCAxMDYsIDEwLCAxNCwgMjM5LCAxMDUsIDEwLCAxNCwgMjM5LCAxMDQsIDEwLCAxNCwgMjM5LCAxMDMsIDEwLCAxNCwgCi0gICAgMjM5LCAxMDIsIDEwLCAxNCwgMjM5LCAxMDEsIDEwLCAxNCwgMjM5LCAxMDAsIDEwLCAxNCwgMjM5LCA5OSwgMTAsIDE0LCAKLSAgICAyMzksIDk4LCAxMCwgMTQsIDIzOSwgOTcsIDEwLCAxNCwgMjM5LCA5NiwgMTAsIDE0LCAyMzksIDk1LCAxMCwgMTQsIDIzOSwgCi0gICAgOTQsIDEwLCAxNCwgMjM5LCA5MywgMTAsIDE0LCAyMzksIDkyLCAxMCwgMTQsIDIzOSwgOTEsIDEwLCAxNCwgMjM5LCA5MCwgCi0gICAgMTAsIDE0LCAyMzksIDg5LCAxMCwgMTQsIDIzOSwgODgsIDEwLCAxNCwgMjM5LCA4NywgMTAsIDE0LCAyMzksIDg2LCAxMCwgCi0gICAgMTQsIDIzOSwgODUsIDEwLCAxNCwgMjM5LCA4NCwgMTAsIDE0LCAyMzksIDgzLCAxMCwgMTQsIDIzOSwgODIsIDEwLCAxNCwgCi0gICAgMjM5LCA4MSwgMTAsIDE0LCAyMzksIDgwLCAxMCwgMTQsIDIzOSwgNzksIDEwLCAxNCwgMjM5LCA3OCwgMTAsIDE0LCAyMzksIAotICAgIDc3LCAxMCwgMTQsIDIzOSwgNzYsIDEwLCAxNCwgMjM5LCA3NSwgMTAsIDE0LCAyMzksIDc0LCAxMCwgMTQsIDIzOSwgNzMsIAotICAgIDEwLCAxNCwgMjM5LCA3MiwgMTAsIDE0LCAyMzksIDcxLCAxMCwgMTQsIDIzOSwgNzAsIDEwLCAxNCwgMjM5LCA2OSwgMTAsIAotICAgIDE0LCAyMzksIDY4LCAxMCwgMTQsIDIzOSwgNjcsIDEwLCAxNCwgMjM5LCA2NiwgMTAsIDE0LCAyMzksIDY1LCAxMCwgMTQsIAotICAgIDIzOSwgNjQsIDEwLCAxNCwgMjM5LCA2MywgMTAsIDE0LCAyMzksIDYyLCAxMCwgMTQsIDIzOSwgNjEsIDEwLCAxNCwgMjM5LCAKLSAgICA2MCwgMTAsIDE0LCAyMzksIDU5LCAxMCwgMTQsIDIzOSwgNTgsIDEwLCAxNCwgMjM5LCA1NywgMTAsIDE0LCAyMzksIDU2LCAKLSAgICAxMCwgMTQsIDIzOSwgNTUsIDEwLCAxNCwgMjM5LCA1NCwgMTAsIDE0LCAyMzksIDUzLCAxMCwgMTQsIDIzOSwgNTIsIDEwLCAKLSAgICAxNCwgMjM5LCA1MSwgMTAsIDE0LCAyMzksIDUwLCAxMCwgMTQsIDIzOSwgNDksIDEwLCAxNCwgMjM5LCA0OCwgMTAsIDE0LCAKLSAgICAyMzksIDQ3LCAxMCwgMTQsIDIzOSwgNDYsIDEwLCAxNCwgMjM5LCA0NSwgMTAsIDE0LCAyMzksIDQ0LCAxMCwgMTQsIDIzOSwgCi0gICAgNDMsIDEwLCAxNCwgMjM5LCA0MiwgMTAsIDE0LCAyMzksIDQxLCAxMCwgMTQsIDIzOSwgNDAsIDEwLCAxNCwgMjM5LCAzOSwgCi0gICAgMTAsIDE0LCAyMzksIDM4LCAxMCwgMTQsIDIzOSwgMzcsIDEwLCAxNCwgMjM5LCAzNiwgMTAsIDE0LCAyMzksIDM1LCAxMCwgCi0gICAgMTQsIDIzOSwgMzQsIDEwLCAxNCwgMjM5LCAzMywgMTAsIDE0LCAyMzksIDMyLCAxMCwgMTQsIDIzOSwgMzEsIDEwLCAxNCwgCi0gICAgMjM5LCAzMCwgMTAsIDE0LCAyMzksIDI5LCAxMCwgMTQsIDIzOSwgMjgsIDEwLCAxNCwgMjM5LCAyNywgMTAsIDE0LCAyMzksIAotICAgIDI2LCAxMCwgMTQsIDIzOSwgMjUsIDEwLCAxNCwgMjM5LCAyNCwgMTAsIDE0LCAyMzksIDIzLCAxMCwgMTQsIDIzOSwgMjIsIAotICAgIDEwLCAxNCwgMjM5LCAyMSwgMTAsIDE0LCAyMzksIDIwLCAxMCwgMTQsIDIzOSwgMTksIDEwLCAxNCwgMjM5LCAxOCwgMTAsIAotICAgIDE0LCAyMzksIDE3LCAxMCwgMTQsIDIzOSwgMTYsIDEwLCAxNCwgMjM5LCAxNSwgMTAsIDE0LCAyMzksIDE0LCAxMCwgMTQsIAotICAgIDIzOSwgMTMsIDEwLCAxNCwgMjM5LCAxMiwgMTAsIDE0LCAyMzksIDExLCAxMCwgMTQsIDIzOSwgMTAsIDEwLCAxNCwgMjM5LCAKLSAgICA5LCAxMCwgMTQsIDIzOSwgOCwgMTAsIDE0LCAyMzksIDcsIDEwLCAxNCwgMjM5LCA2LCAxMCwgMTQsIDIzOSwgNSwgMTAsIAotICAgIDE0LCAyMzksIDQsIDEwLCAxNCwgMjM5LCAzLCAxMCwgMTQsIDIzOSwgMiwgMTAsIDE0LCAyMzksIDEsIDEwLCAxNCwgMjM5LCAKLSAgICAwLCAxMCwgMTQsIDIzOCwgMjU1LCAxMCwgMTQsIDIzOCwgMjU0LCAxMCwgMTQsIDIzOCwgMjUzLCAxMCwgMTQsIDIzOCwgCi0gICAgMjUyLCAxMCwgMTQsIDIzOCwgMjUxLCAxMCwgMTQsIDIzOCwgMjUwLCAxMCwgMTQsIDIzOCwgMjQ5LCAxMCwgMTQsIDIzOCwgCi0gICAgMjQ4LCAxMCwgMTQsIDIzOCwgMjQ3LCAxMCwgMTQsIDIzOCwgMjQ2LCAxMCwgMTQsIDIzOCwgMjQ1LCAxMCwgMTQsIDIzOCwgCi0gICAgMjQ0LCAxMCwgMTQsIDIzOCwgMjQzLCAxMCwgMTQsIDIzOCwgMjQyLCAxMCwgMTQsIDIzOCwgMjQxLCAxMCwgMTQsIDIzOCwgCi0gICAgMjQwLCAxMCwgMTQsIDIzOCwgMjM5LCAxMCwgMTQsIDIzOCwgMjM4LCAxMCwgMTQsIDIzOCwgMjM3LCAxMCwgMTQsIDIzOCwgCi0gICAgMjM2LCAxMCwgMTQsIDIzOCwgMjM1LCAxMCwgMTQsIDIzOCwgMjM0LCAxMCwgMTQsIDIzOCwgMjMzLCAxMCwgMTQsIDIzOCwgCi0gICAgMjMyLCAxMCwgMTQsIDIzOCwgMjMxLCAxMCwgMTQsIDIzOCwgMjMwLCAxMCwgMTQsIDIzOCwgMjI5LCAxMCwgMTQsIDIzOCwgCi0gICAgMjI4LCAxMCwgMTQsIDIzOCwgMjI3LCAxMCwgMTQsIDIzOCwgMjI2LCAxMCwgMTQsIDIzOCwgMjI1LCAxMCwgMTQsIDIzOCwgCi0gICAgMjI0LCAxMCwgMTQsIDIzOCwgMjIzLCAxMCwgMTQsIDIzOCwgMjIyLCAxMCwgMTQsIDIzOCwgMjIxLCAxMCwgMTQsIDIzOCwgCi0gICAgMjIwLCAxMCwgMTQsIDIzOCwgMjE5LCAxMCwgMTQsIDIzOCwgMjE4LCAxMCwgMTQsIDIzOCwgMjE3LCAxMCwgMTQsIDIzOCwgCi0gICAgMjE2LCAxMCwgMTQsIDIzOCwgMjE1LCAxMCwgMTQsIDIzOCwgMjE0LCAxMCwgMTQsIDIzOCwgMjEzLCAxMCwgMTQsIDIzOCwgCi0gICAgMjEyLCAxMCwgMTQsIDIzOCwgMjExLCAxMCwgMTQsIDIzOCwgMjEwLCAxMCwgMTQsIDIzOCwgMjA5LCAxMCwgMTQsIDIzOCwgCi0gICAgMjA4LCAxMCwgMTQsIDIzOCwgMjA3LCAxMCwgMTQsIDIzOCwgMjA2LCAxMCwgMTQsIDIzOCwgMjA1LCAxMCwgMTQsIDIzOCwgCi0gICAgMjA0LCAxMCwgMTQsIDIzOCwgMjAzLCAxMCwgMTQsIDIzOCwgMjAyLCAxMCwgMTQsIDIzOCwgMjAxLCAxMCwgMTQsIDIzOCwgCi0gICAgMjAwLCAxMCwgMTQsIDIzOCwgMTk5LCAxMCwgMTQsIDIzOCwgMTk4LCAxMCwgMTQsIDIzOCwgMTk3LCAxMCwgMTQsIDIzOCwgCi0gICAgMTk2LCAxMCwgMTQsIDIzOCwgMTk1LCAxMCwgMTQsIDIzOCwgMTk0LCAxMCwgMTQsIDIzOCwgMTkzLCAxMCwgMTQsIDIzOCwgCi0gICAgMTkyLCAxMCwgMTQsIDIzOCwgMTkxLCAxMCwgMTQsIDIzOCwgMTkwLCAxMCwgMTQsIDIzOCwgMTg5LCAxMCwgMTQsIDIzOCwgCi0gICAgMTg4LCAxMCwgMTQsIDIzOCwgMTg3LCAxMCwgMTQsIDIzOCwgMTg2LCAxMCwgMTQsIDIzOCwgMTg1LCAxMCwgMTQsIDIzOCwgCi0gICAgMTg0LCAxMCwgMTQsIDIzOCwgMTgzLCAxMCwgMTQsIDIzOCwgMTgyLCAxMCwgMTQsIDIzOCwgMTgxLCAxMCwgMTQsIDIzOCwgCi0gICAgMTgwLCAxMCwgMTQsIDIzOCwgMTc5LCAxMCwgMTQsIDIzOCwgMTc4LCAxMCwgMTQsIDIzOCwgMTc3LCAxMCwgMTQsIDIzOCwgCi0gICAgMTc2LCAxMCwgMTQsIDIzOCwgMTc1LCAxMCwgMTQsIDIzOCwgMTc0LCAxMCwgMTQsIDIzOCwgMTczLCAxMCwgMTQsIDIzOCwgCi0gICAgMTcyLCAxMCwgMTQsIDIzOCwgMTcxLCAxMCwgMTQsIDIzOCwgMTcwLCAxMCwgMTQsIDIzOCwgMTY5LCAxMCwgMTQsIDIzOCwgCi0gICAgMTY4LCAxMCwgMTQsIDIzOCwgMTY3LCAxMCwgMTQsIDIzOCwgMTY2LCAxMCwgMTQsIDIzOCwgMTY1LCAxMCwgMTQsIDIzOCwgCi0gICAgMTY0LCAxMCwgMTQsIDIzOCwgMTYzLCAxMCwgMTQsIDIzOCwgMTYyLCAxMCwgMTQsIDIzOCwgMTYxLCAxMCwgMTQsIDIzOCwgCi0gICAgMTYwLCAxMCwgMTQsIDIzOCwgMTU5LCAxMCwgMTQsIDIzOCwgMTU4LCAxMCwgMTQsIDIzOCwgMTU3LCAxMCwgMTQsIDIzOCwgCi0gICAgMTU2LCAxMCwgMTQsIDIzOCwgMTU1LCAxMCwgMTQsIDIzOCwgMTU0LCAxMCwgMTQsIDIzOCwgMTUzLCAxMCwgMTQsIDIzOCwgCi0gICAgMTUyLCAxMCwgMTQsIDIzOCwgMTUxLCAxMCwgMTQsIDIzOCwgMTUwLCAxMCwgMTQsIDIzOCwgMTQ5LCAxMCwgMTQsIDIzOCwgCi0gICAgMTQ4LCAxMCwgMTQsIDIzOCwgMTQ3LCAxMCwgMTQsIDIzOCwgMTQ2LCAxMCwgMTQsIDIzOCwgMTQ1LCAxMCwgMTQsIDIzOCwgCi0gICAgMTQ0LCAxMCwgMTQsIDIzOCwgMTQzLCAxMCwgMTQsIDIzOCwgMTQyLCAxMCwgMTQsIDIzOCwgMTQxLCAxMCwgMTQsIDIzOCwgCi0gICAgMTQwLCAxMCwgMTQsIDIzOCwgMTM5LCAxMCwgMTQsIDIzOCwgMTM4LCAxMCwgMTQsIDIzOCwgMTM3LCAxMCwgMTQsIDIzOCwgCi0gICAgMTM2LCAxMCwgMTQsIDIzOCwgMTM1LCAxMCwgMTQsIDIzOCwgMTM0LCAxMCwgMTQsIDIzOCwgMTMzLCAxMCwgMTQsIDIzOCwgCi0gICAgMTMyLCAxMCwgMTQsIDIzOCwgMTMxLCAxMCwgMTQsIDIzOCwgMTMwLCAxMCwgMTQsIDIzOCwgMTI5LCAxMCwgMTQsIDIzOCwgCi0gICAgMTI4LCAxMCwgMTQsIDIzOCwgMTI3LCAxMCwgMTQsIDIzOCwgMTI2LCAxMCwgMTQsIDIzOCwgMTI1LCAxMCwgMTQsIDIzOCwgCi0gICAgMTI0LCAxMCwgMTQsIDIzOCwgMTIzLCAxMCwgMTQsIDIzOCwgMTIyLCAxMCwgMTQsIDIzOCwgMTIxLCAxMCwgMTQsIDIzOCwgCi0gICAgMTIwLCAxMCwgMTQsIDIzOCwgMTE5LCAxMCwgMTQsIDIzOCwgMTE4LCAxMCwgMTQsIDIzOCwgMTE3LCAxMCwgMTQsIDIzOCwgCi0gICAgMTE2LCAxMCwgMTQsIDIzOCwgMTE1LCAxMCwgMTQsIDIzOCwgMTE0LCAxMCwgMTQsIDIzOCwgMTEzLCAxMCwgMTQsIDIzOCwgCi0gICAgMTEyLCAxMCwgMTQsIDIzOCwgMTExLCAxMCwgMTQsIDIzOCwgMTEwLCAxMCwgMTQsIDIzOCwgMTA5LCAxMCwgMTQsIDIzOCwgCi0gICAgMTA4LCAxMCwgMTQsIDIzOCwgMTA3LCAxMCwgMTQsIDIzOCwgMTA2LCAxMCwgMTQsIDIzOCwgMTA1LCAxMCwgMTQsIDIzOCwgCi0gICAgMTA0LCAxMCwgMTQsIDIzOCwgMTAzLCAxMCwgMTQsIDIzOCwgMTAyLCAxMCwgMTQsIDIzOCwgMTAxLCAxMCwgMTQsIDIzOCwgCi0gICAgMTAwLCAxMCwgMTQsIDIzOCwgOTksIDEwLCAxNCwgMjM4LCA5OCwgMTAsIDE0LCAyMzgsIDk3LCAxMCwgMTQsIDIzOCwgOTYsIAotICAgIDEwLCAxNCwgMjM4LCA5NSwgMTAsIDE0LCAyMzgsIDk0LCAxMCwgMTQsIDIzOCwgOTMsIDEwLCAxNCwgMjM4LCA5MiwgMTAsIAotICAgIDE0LCAyMzgsIDkxLCAxMCwgMTQsIDIzOCwgOTAsIDEwLCAxNCwgMjM4LCA4OSwgMTAsIDE0LCAyMzgsIDg4LCAxMCwgMTQsIAotICAgIDIzOCwgODcsIDEwLCAxNCwgMjM4LCA4NiwgMTAsIDE0LCAyMzgsIDg1LCAxMCwgMTQsIDIzOCwgODQsIDEwLCAxNCwgMjM4LCAKLSAgICA4MywgMTAsIDE0LCAyMzgsIDgyLCAxMCwgMTQsIDIzOCwgODEsIDEwLCAxNCwgMjM4LCA4MCwgMjMzLCA5NiwgMjE3LCA4NSwgCi0gICAgMTI5LCAyMTksIDIwLCAxMjksIDI0NSwgMzksIDc5LCAxMjksIDIyNCwgMSwgNzksIDEyOSwgNTQsIDUwLCAxMjksIDI0NywgCi0gICAgMTQwLCA1MCwgMTI5LCAyMjUsIDE4NSwgNTAsIDEyOSwgMjU0LCAxMzQsIDEyOSwgMjU0LCA2NSwgMTI5LCA0MywgMjI2LCA3LCAKLSAgICAxMjksIDQ0LCAyMjYsIDcsIDEyOSwgMjUzLCAyMjQsIDEyOSwgOTYsIDUwLCAxMjksIDI0OSwgMjI3LCAxMjksIDI0MCwgCi0gICAgMTc0LCAxMjksIDI0MywgMjM2LCAyMTgsIDEzMSwgMTI5LCAyMTksIDQ4LCAxMjksIDIxLCAyMTAsIDg2LCAxMjksIDIxLCAKLSAgICAxMTEsIDEyOSwgMjEsIDEwNSwgMTI5LCAyMSwgMTU4LCAxMjksIDIxLCAxNjEsIDEyOSwgMjEsIDE5MCwgMTI5LCAyMSwgCi0gICAgMTk1LCAxMjksIDIxLCAxOTksIDEyOSwgMjEsIDE5NiwgMTI5LCAyMSwgMjAxLCAxMjksIDI0OSwgMjM0LCAxMjksIDIyMCwgCi0gICAgMTUyLCAxMjksIDIzMywgMjEsIDUwLCAxMjksIDI0NSwgMTA2LCA1MCwgMTI5LCAyNDIsIDEzNywgNTAsIDEyOSwgMjI0LCAKLSAgICAxNiwgNzksIDEyOSwgMjQ5LCAyMjUsIDI1MywgMjE0LCAxMjksIDcsIDYsIDEsIDYxLCAxMjksIDcsIDYsIDEsIDI1MywgCi0gICAgMTY2LCAxMjksIDcsIDYsIDEsIDI1MSwgNzQsIDEyOSwgNywgNiwgMSwgMjQ5LCA2OCwgMTI5LCA3LCA2LCAxLCA3NiwgMTI5LCAKLSAgICA3LCA2LCAxLCAyNDUsIDE0LCAxMjksIDcsIDYsIDEsIDI0MywgMjA5LCAxMjksIDcsIDYsIDEsIDI0MiwgNjcsIDEyOSwgNywgCi0gICAgNiwgMSwgNzQsIDEyOSwgNywgNiwgMSwgMjM1LCAxNTAsIDEyOSwgNywgNiwgMSwgMjM1LCAyOSwgMTI5LCA3LCA2LCAxLCAKLSAgICAxNTYsIDEyOSwgNywgNiwgMSwgMTk0LCAxMjksIDcsIDYsIDEsIDIzMCwgMzAsIDEyOSwgNywgNiwgMSwgNzgsIDEyOSwgNywgCi0gICAgNiwgMSwgMjI2LCAxMDksIDEyOSwgNywgNiwgMSwgMjI0LCA5OSwgMTI5LCA3LCA2LCAxLCAxNTMsIDEyOSwgNywgNiwgMSwgCi0gICAgMjIyLCA5MywgMTI5LCA3LCA2LCAxLCAyMTcsIDE1MywgMTI5LCA3LCA2LCAxLCA2OSwgMTI5LCA3LCA2LCAxLCAyMTQsIAotICAgIDEwNSwgMTI5LCA3LCA2LCAxLCAyMTIsIDk4LCAxMjksIDcsIDYsIDEsIDIxMSwgMTc4LCAxMjksIDcsIDYsIDEsIDIxMSwgCi0gICAgMTE3LCAxMjksIDcsIDYsIDEsIDIxMCwgMTU5LCAxMjksIDQzLCA0MiwgMTI3LCAxMjksIDIyMywgNTMsIDIxOSwgNDgsIAotICAgIDEyOSwgNDQsIDQyLCAxMjcsIDEyOSwgMjUwLCAzOSwgMjU1LCAyMywgMTI5LCAxMjEsIDIzMiwgMjE5LCAxMjksIDI0MiwgCi0gICAgMTQ0LCAyNTUsIDIzLCAxMjksIDcsIDQsIDEsIDYxLCAxMjksIDcsIDQsIDEsIDI1MywgMTY2LCAxMjksIDcsIDQsIDEsIAotICAgIDI1MSwgNzQsIDEyOSwgNywgNCwgMSwgMjQ5LCA2OCwgMTI5LCA3LCA0LCAxLCA3NiwgMTI5LCA3LCA0LCAxLCAyNDUsIDE0LCAKLSAgICAxMjksIDcsIDQsIDEsIDI0MywgMjA5LCAxMjksIDcsIDQsIDEsIDI0MiwgNjcsIDEyOSwgNywgNCwgMSwgNzQsIDEyOSwgNywgCi0gICAgNCwgMSwgMjM1LCAxNTAsIDEyOSwgNywgNCwgMSwgMjM1LCAyOSwgMTI5LCA3LCA0LCAxLCAxNTYsIDEyOSwgNywgNCwgMSwgCi0gICAgMTk0LCAxMjksIDcsIDQsIDEsIDIzMCwgMzAsIDEyOSwgNywgNCwgMSwgNzgsIDEyOSwgNywgNCwgMSwgMjI2LCAxMDksIAotICAgIDEyOSwgNywgNCwgMSwgMjI0LCA5OSwgMTI5LCA3LCA0LCAxLCAxNTMsIDEyOSwgNywgNCwgMSwgMjIyLCA5MywgMTI5LCA3LCAKLSAgICA0LCAxLCAyMTcsIDE1MywgMTI5LCA3LCA0LCAxLCA2OSwgMTI5LCA3LCA0LCAxLCAyMTQsIDEwNSwgMTI5LCA3LCA0LCAxLCAKLSAgICAyMTIsIDk4LCAxMjksIDcsIDQsIDEsIDIxMSwgMTc4LCAxMjksIDcsIDQsIDEsIDIxMSwgMTE3LCAxMjksIDcsIDQsIDEsIAotICAgIDIxMCwgMTU5LCAxMjksIDQzLCAyNDksIDEwNywgMTI3LCAxMjksIDY3LCAyMzIsIDIxOSwgMTI5LCA0NCwgMjQ5LCAxMDcsIAotICAgIDEyNywgMTI5LCAxODQsIDI1MSwgMTQsIDIxNywgODUsIDQ1LCAyMjEsIDgwLCA0NSwgMjIxLCA2OSwgNDUsIDIyMSwgNTgsIAotICAgIDQ1LCAyMjEsIDQ2LCA0NSwgMjIxLCAzNSwgNDUsIDIyMSwgMjQsIDQ1LCAyMjEsIDEzLCA0NSwgMjIxLCAyLCA0NSwgMjIwLCAKLSAgICAyNDcsIDQ1LCAyMjAsIDIzOSwgNDUsIDIyMCwgMjM4LCA0NSwgMjIwLCAyMzcsIDQ1LCAyMjAsIDIzNiwgNDUsIDIyMCwgCi0gICAgMjM0LCA0NSwgMjIwLCAyMzMsIDQ1LCAyMjAsIDIzMiwgNDUsIDIyMCwgMjMxLCA0NSwgMjIwLCAyMzAsIDQ1LCAyMjAsIAotICAgIDIyOSwgNDUsIDIyMCwgMjI4LCA0NSwgMjIwLCAyMjcsIDQ1LCAyMjAsIDIyNiwgNDUsIDIyMCwgMjI1LCA0NSwgMjIwLCAKLSAgICAyMjMsIDQ1LCAyMjAsIDIyMiwgNDUsIDIyMCwgMjIxLCA0NSwgMjIwLCAyMjAsIDQ1LCAyMjAsIDIxOSwgNDUsIDIyMCwgCi0gICAgMjE4LCA0NSwgMjIwLCAyMTcsIDQ1LCAyMjAsIDIxNiwgNDUsIDIyMCwgMjE1LCA0NSwgMjIwLCAyMTQsIDQ1LCAyMjAsIAotICAgIDIxMiwgNDUsIDIyMCwgMjExLCA0NSwgMjIwLCAyMTAsIDQ1LCAyMjAsIDIwOSwgNDUsIDIyMCwgMjA4LCA0NSwgMjIwLCAKLSAgICAyMDcsIDQ1LCAyMjAsIDIwNiwgNDUsIDIyMCwgMjA1LCA0NSwgMjIwLCAyMDQsIDQ1LCAyMjAsIDIwMywgNDUsIDIyMCwgCi0gICAgMjAxLCA0NSwgMjIwLCAyMDAsIDQ1LCAyMjAsIDE5OSwgNDUsIDIyMCwgMTk4LCA0NSwgMjIwLCAxOTcsIDQ1LCAyMjAsIAotICAgIDE5NiwgNDUsIDIyMCwgMTk1LCA0NSwgMjIwLCAxOTQsIDQ1LCAyMjAsIDE5MywgNDUsIDIyMCwgMTkyLCA0NSwgMjIwLCAKLSAgICAxOTAsIDQ1LCAyMjAsIDE4OSwgNDUsIDIyMCwgMTg4LCA0NSwgMjIwLCAxODcsIDQ1LCAyMjAsIDE4NiwgNDUsIDIyMCwgCi0gICAgMTg1LCA0NSwgMjIwLCAxODQsIDQ1LCAyMjAsIDE4MywgNDUsIDIyMCwgMTgyLCA0NSwgMjIwLCAxODEsIDQ1LCAyMjAsIAotICAgIDE3OSwgNDUsIDIyMCwgMTc4LCA0NSwgMjIwLCAxNzcsIDQ1LCAyMjAsIDE3NiwgNDUsIDIyMCwgMTc1LCA0NSwgMjIwLCAKLSAgICAxNzQsIDQ1LCAyMjAsIDE3MywgNDUsIDIyMCwgMTcyLCA0NSwgMjIwLCAxNzEsIDQ1LCAyMjAsIDE3MCwgNDUsIDIyMCwgCi0gICAgMTY4LCA0NSwgMjIwLCAxNjcsIDQ1LCAyMjAsIDE2NiwgNDUsIDIyMCwgMTY1LCA0NSwgMjIwLCAxNjQsIDQ1LCAyMjAsIAotICAgIDE2MywgNDUsIDIyMCwgMTYyLCA0NSwgMjIwLCAxNjEsIDQ1LCAyMjAsIDE2MCwgNDUsIDIyMCwgMTU5LCA0NSwgMjIxLCAKLSAgICAxNTYsIDQ1LCAyMjEsIDE1NSwgNDUsIDIyMSwgMTU0LCA0NSwgMjIxLCAxNTMsIDQ1LCAyMjEsIDE1MiwgNDUsIDIyMSwgCi0gICAgMTUxLCA0NSwgMjIxLCAxNTAsIDQ1LCAyMjEsIDE0OSwgNDUsIDIyMSwgMTQ4LCA0NSwgMjIxLCAxNDcsIDQ1LCAyMjEsIAotICAgIDE0NSwgNDUsIDIyMSwgMTQ0LCA0NSwgMjIxLCAxNDMsIDQ1LCAyMjEsIDE0MiwgNDUsIDIyMSwgMTQxLCA0NSwgMjIxLCAKLSAgICAxNDAsIDQ1LCAyMjEsIDEzOSwgNDUsIDIyMSwgMTM4LCA0NSwgMjIxLCAxMzcsIDQ1LCAyMjEsIDEzNiwgNDUsIDIyMSwgCi0gICAgMTM0LCA0NSwgMjIxLCAxMzMsIDQ1LCAyMjEsIDEzMiwgNDUsIDIyMSwgMTMxLCA0NSwgMjIxLCAxMzAsIDQ1LCAyMjEsIAotICAgIDEyOSwgNDUsIDIyMSwgMTI4LCA0NSwgMjIxLCAxMjcsIDQ1LCAyMjEsIDEyNiwgNDUsIDIyMSwgMTI1LCA0NSwgMjIxLCAKLSAgICAxMjMsIDQ1LCAyMjEsIDEyMiwgNDUsIDIyMSwgMTIxLCA0NSwgMjIxLCAxMjAsIDQ1LCAyMjEsIDExOSwgNDUsIDIyMSwgCi0gICAgMTE4LCA0NSwgMjIxLCAxMTcsIDQ1LCAyMjEsIDExNiwgNDUsIDIyMSwgMTE1LCA0NSwgMjIxLCAxMTQsIDQ1LCAyMjEsIAotICAgIDExMiwgNDUsIDIyMSwgMTExLCA0NSwgMjIxLCAxMTAsIDQ1LCAyMjEsIDEwOSwgNDUsIDIyMSwgMTA4LCA0NSwgMjIxLCAKLSAgICAxMDcsIDQ1LCAyMjEsIDEwNiwgNDUsIDIyMSwgMTA1LCA0NSwgMjIxLCAxMDQsIDQ1LCAyMjEsIDEwMywgNDUsIDIyMSwgCi0gICAgMTAxLCA0NSwgMjIxLCAxMDAsIDQ1LCAyMjEsIDk5LCA0NSwgMjIxLCA5OCwgNDUsIDIyMSwgOTcsIDQ1LCAyMjEsIDk2LCAKLSAgICA0NSwgMjIxLCA5NSwgNDUsIDIyMSwgOTQsIDQ1LCAyMjEsIDkzLCA0NSwgMjIxLCA5MiwgNDUsIDIyMSwgOTAsIDQ1LCAyMjEsIAotICAgIDg5LCA0NSwgMjIxLCA4OCwgNDUsIDIyMSwgODcsIDQ1LCAyMjEsIDg2LCA0NSwgMjIxLCA4NSwgNDUsIDIyMSwgODQsIDQ1LCAKLSAgICAyMjEsIDgzLCA0NSwgMjIxLCA4MiwgNDUsIDIyMSwgODEsIDQ1LCAyMjEsIDc5LCA0NSwgMjIxLCA3OCwgNDUsIDIyMSwgNzcsIAotICAgIDQ1LCAyMjEsIDc2LCA0NSwgMjIxLCA3NSwgNDUsIDIyMSwgNzQsIDQ1LCAyMjEsIDczLCA0NSwgMjIxLCA3MiwgNDUsIDIyMSwgCi0gICAgNzEsIDQ1LCAyMjEsIDcwLCA0NSwgMjIxLCA2OCwgNDUsIDIyMSwgNjcsIDQ1LCAyMjEsIDY2LCA0NSwgMjIxLCA2NSwgNDUsIAotICAgIDIyMSwgNjQsIDQ1LCAyMjEsIDYzLCA0NSwgMjIxLCA2MiwgNDUsIDIyMSwgNjEsIDQ1LCAyMjEsIDYwLCA0NSwgMjIxLCA1OSwgCi0gICAgNDUsIDIyMSwgNTcsIDQ1LCAyMjEsIDU2LCA0NSwgMjIxLCA1NSwgNDUsIDIyMSwgNTQsIDQ1LCAyMjEsIDUzLCA0NSwgMjIxLCAKLSAgICA1MiwgNDUsIDIyMSwgNTEsIDQ1LCAyMjEsIDUwLCA0NSwgMjIxLCA0OSwgNDUsIDIyMSwgNDgsIDQ1LCAyMjEsIDQ1LCA0NSwgCi0gICAgMjIxLCA0NCwgNDUsIDIyMSwgNDMsIDQ1LCAyMjEsIDQyLCA0NSwgMjIxLCA0MSwgNDUsIDIyMSwgNDAsIDQ1LCAyMjEsIDM5LCAKLSAgICA0NSwgMjIxLCAzOCwgNDUsIDIyMSwgMzcsIDQ1LCAyMjEsIDM2LCA0NSwgMjIxLCAzNCwgNDUsIDIyMSwgMzMsIDQ1LCAyMjEsIAotICAgIDMyLCA0NSwgMjIxLCAzMSwgNDUsIDIyMSwgMzAsIDQ1LCAyMjEsIDI5LCA0NSwgMjIxLCAyOCwgNDUsIDIyMSwgMjcsIDQ1LCAKLSAgICAyMjEsIDI2LCA0NSwgMjIxLCAyNSwgNDUsIDIyMSwgMjMsIDQ1LCAyMjEsIDIyLCA0NSwgMjIxLCAyMSwgNDUsIDIyMSwgMjAsIAotICAgIDQ1LCAyMjEsIDE5LCA0NSwgMjIxLCAxOCwgNDUsIDIyMSwgMTcsIDQ1LCAyMjEsIDE2LCA0NSwgMjIxLCAxNSwgNDUsIDIyMSwgCi0gICAgMTQsIDQ1LCAyMjEsIDEyLCA0NSwgMjIxLCAxMSwgNDUsIDIyMSwgMTAsIDQ1LCAyMjEsIDksIDQ1LCAyMjEsIDgsIDQ1LCAKLSAgICAyMjEsIDcsIDQ1LCAyMjEsIDYsIDQ1LCAyMjEsIDUsIDQ1LCAyMjEsIDQsIDQ1LCAyMjEsIDMsIDQ1LCAyMjEsIDEsIDQ1LCAKLSAgICAyMjEsIDAsIDQ1LCAyMjAsIDI1NSwgNDUsIDIyMCwgMjU0LCA0NSwgMjIwLCAyNTMsIDQ1LCAyMjAsIDI1MiwgNDUsIDIyMCwgCi0gICAgMjUxLCA0NSwgMjIwLCAyNTAsIDQ1LCAyMjAsIDI0OSwgNDUsIDIyMCwgMjQ4LCA0NSwgMjIwLCAyNDYsIDQ1LCAyMjAsIAotICAgIDI0NSwgNDUsIDIyMCwgMjQ0LCA0NSwgMjIwLCAyNDMsIDQ1LCAyMjAsIDI0MiwgNDUsIDIyMCwgMjQxLCA0NSwgMjIwLCAKLSAgICAyNDAsIDIyNywgMjA2LCAyMjcsIDIwOCwgMjE4LCAxNTQsIDY0LCAyNDEsIDI0MCwgMjE5LCA1MCwgMjE4LCAxNTQsIDY0LCAKLSAgICAyMTYsIDIxMywgMjE4LCA4NiwgMjQ1LCAxNTEsIDY0LCAyMTYsIDIxMywgMjQ1LCA2NCwgMjQ1LCAxNTEsIDY0LCAyMTUsIAotICAgIDI0NCwgMjQ1LCAxMTcsIDI0NSwgMTQwLCAyNDUsIDE0MSwgMjU1LCAxNiwgMjU1LCAxNywgMjU0LCAxNzYsIDI1MiwgNTUsIAotICAgIDI1MiwgMTg3LCAyNTEsIDEzOSwgMTM1LCAyMTcsIDkwLCAyMDMsIDIxNywgOTAsIDI0MCwgMjM0LCAyMTcsIDk0LCAyMzIsIAotICAgIDIyMCwgMjQ0LCAxNTMsIDE2NiwgMjMyLCAyMTksIDI0NSwgMTUxLCA2NCwgMjMyLCAyMTksIDIzMywgNiwgMjI4LCAxNDAsIAotICAgIDI0NSwgMTIwLCAyMzIsIDIyMCwgMjE3LCA5MCwgNjcsIDIxNywgOTAsIDIxMiwgMTE4LCAyNDQsIDI4LCAyNDQsIDE1MywgCi0gICAgMjQ0LCAxMzMsIDI1MCwgMjM4LCAyMjMsIDU2LCAyNDksIDE1MSwgMjIwLCAzMCwgMjI2LCAxMzQsIDIzMiwgMTU2LCAxMTEsIAotICAgIDIxOSwgNjAsIDIyMCwgMzAsIDIzNiwgNiwgMjMyLCAxNTYsIDIxMCwgODYsIDIxOSwgMTkzLCAyNDgsIDE1OSwgMjMyLCAKLSAgICAyMTAsIDI0NSwgODUsIDI0NywgMTYzLCAyNDgsIDM5LCAyNDksIDE4NiwgMTExLCAyNDgsIDE0OSwgMjQ4LCAzOSwgMjQ5LCAKLSAgICAxODYsIDEwNSwgMjQ4LCAxNDgsIDI0OCwgMzksIDI0OSwgMTg2LCAxNTgsIDI0OCwgMTQ3LCAyNDgsIDM5LCAyNDksIDE4NiwgCi0gICAgMTYxLCAyNDgsIDE0NiwgMTUyLCAyNTUsIDE2LCAyMjksIDIxNCwgMjE3LCAxNzgsIDIzNiwgNjksIDIxNywgMTgxLCAyNDUsIAotICAgIDE1MSwgNjQsIDIxNSwgMjQ1LCAyNTEsIDIyMSwgMjQ1LCA3MCwgMjUxLCAxMywgMjUxLCAxNSwgMjQ1LCAxNTEsIDY0LCAKLSAgICAyMzEsIDg2LCAyNDUsIDExOCwgMjE4LCA2MiwgMjE4LCA3OSwgMjQ1LCA4NSwgMjQ1LCA4NiwgMjM1LCAyMzksIDIyMCwgCi0gICAgMTQwLCAxNjEsIDI0NCwgMTE1LCAyMjAsIDEzOSwgMjQzLCAyNDUsIDIzNSwgMjM5LCAyMjAsIDE0MCwgMTU4LCAyNDIsIAotICAgIDEyOCwgMjIwLCAxMzksIDI0MiwgMTI1LCAyMzUsIDIzOSwgMjIwLCAxNDAsIDEwNSwgMjIzLCAxMjQsIDIyMCwgMTM5LCAKLSAgICAyMjIsIDE0NywgMjM1LCAyMzksIDIyMCwgMTQwLCAxMTEsIDIxNCwgMTc0LCAyMjAsIDEzOSwgMjE0LCAxMzMsIDIxOSwgMjMsIAotICAgIDI0OCwgNzEsIDI0OCwgNzMsIDIyNiwgODIsIDI1MCwgMTUwLCAyMjYsIDg0LCAxMjUsIDIyNiwgMjQ0LCAyMjQsIDE5NiwgCi0gICAgMjQxLCA1NCwgMjUxLCAxNTgsIDIyNSwgMTc2LCAyNDEsIDIxMCwgMjUxLCAxNjksIDIyOCwgODAsIDI1MSwgMTU4LCAyNDEsIAotICAgIDIxMCwgMjI5LCAxODAsIDIzNSwgMjQ5LCAyMzUsIDI1MSwgMjI5LCA4NywgMjMyLCAyMTksIDIyOSwgMTA0LCAyMTgsIDE1NCwgCi0gICAgNjQsIDIyMSwgMTYwLCAyNTQsIDI2LCAyMTgsIDIyNSwgMjQ1LCAxNTEsIDY0LCAyMjEsIDE2MCwgMjU0LCAyNiwgMjQ1LCAKLSAgICA4OCwgMTM1LCAyMTcsIDkxLCAyMjAsIDEyOSwgMjAzLCAyMTcsIDkxLCAyMjAsIDEyOSwgMjQwLCAyMzEsIDEzNSwgMjE3LCAKLSAgICA5MSwgMiwgMjM1LCA0MSwgMjAzLCAyMTcsIDkxLCAyLCAyMzUsIDQxLCAyNDAsIDIzMiwgMjMyLCAyMjAsIDIxNywgOTEsIAotICAgIDIyMCwgMTI5LCA2NywgMjE3LCA5MSwgMjIwLCAxMjksIDIxMiwgMTE3LCAyMjYsIDEsIDIzMiwgMjIwLCAyNDQsIDIyLCAKLSAgICAyMjYsIDEsIDIzMiwgMjIwLCAyNDYsIDExNCwgMjI1LCAzNSwgMjI2LCAxLCAyMzIsIDIyMCwgMjUyLCAxODYsIDIyNiwgMSwgCi0gICAgMjMyLCAyMjAsIDIxNCwgMTYzLCAyMjUsIDMxLCAyMjMsIDUzLCAyMzIsIDIyMCwgMjQ0LCAxNTMsIDIyMywgNTMsIDIzNSwgCi0gICAgMjQ5LCAyMjMsIDM4LCAyMTksIDE1NywgMjIwLCAzMCwgMTA1LCAyMTksIDE1NCwgMjE4LCAyMjcsIDIxOSwgMTU3LCAyMjAsIAotICAgIDMwLCAxNTgsIDIxOSwgMTUzLCAyMTgsIDIyNiwgMjQ4LCAzOSwgMjQ5LCAxODYsIDIxOCwgMTA3LCAyNDgsIDE0NSwgMjI0LCAKLSAgICAxODYsIDIxNCwgMTMyLCAxMTEsIDIyNCwgMTg2LCAyMTQsIDEzMCwgMjI0LCAxNTIsIDIyNCwgMTg2LCAyMTQsIDEzMiwgCi0gICAgMTA1LCAyMjQsIDE4NiwgMjE0LCAxMjksIDIyNCwgMTUxLCAyMjAsIDEzMCwgMjE1LCAyNDMsIDIxOCwgMTUzLCAyMTgsIDkwLCAKLSAgICAyNTEsIDE0LCAyNTAsIDE1MCwgMjUwLCAyMTcsIDIzMSwgNDgsIDIxMiwgNTksIDIzMCwgNDgsIDIxOCwgMTU0LCA2NCwgCi0gICAgMjQyLCAxMTQsIDI1NCwgMjYsIDIxOCwgMTU0LCA2NCwgMjI0LCAxNjksIDI1NCwgMjYsIDIxOSwgMjIsIDI0NSwgMTUxLCAKLSAgICA2NCwgMjQyLCAxMTQsIDI1NCwgMjYsIDI0NSwgMTUxLCA2NCwgMjI0LCAxNjksIDI1NCwgMjYsIDI0NSwgMTE1LCAyMTgsIAotICAgIDE1NCwgNjQsIDIxOCwgMTA3LCAyMTksIDM3LCAyMTksIDE1NywgMjQyLCAxNDgsIDEzNSwgMjM1LCAyMDIsIDIyMCwgMTA5LCAKLSAgICAyMTksIDE1NywgMTM1LCAyMzUsIDIwMiwgMjIxLCAxOTYsIDI0OSwgMTg2LCAyMjAsIDEzNywgMjM1LCAyMDIsIDI0OSwgCi0gICAgMTIxLCAyMTgsIDEwOCwgMjE2LCAyMzcsIDIxOCwgMTcwLCAyMjYsIDE3MywgMjE3LCAxNjgsIDI0OSwgMjI2LCAyMjYsIAotICAgIDE0NiwgMjI0LCAxODcsIDIzMSwgNDcsIDIyNSwgMjIsIDI1NCwgNjEsIDIyNCwgMTgxLCAyNDksIDIyNiwgMjU0LCA3NywgCi0gICAgMjI5LCAxNjgsIDIxOSwgMjAyLCA3LCA2LCAxLCAyNDMsIDAsIDcsIDQsIDEsIDI0MywgMCwgMjUwLCAxNjcsIDI1NCwgMTU3LCAKLSAgICAxODMsIDIxOCwgNjgsIDI0OSwgMjM1LCAyMTksIDEwOCwgMjMzLCA1MiwgMTY1LCAxLCAyMzIsIDE4MSwgMjA5LCAyMDksIDEsIAotICAgIDI0NCwgNTIsIDI0NCwgNDQsIDIwOSwgMjA5LCAxLCAyNDQsIDUyLCAyNDQsIDE2NSwgMjA5LCAyMDksIDEsIDIyMiwgMjEzLCAKLSAgICAyMDksIDIwOSwgMSwgMjMyLCAxNjIsIDYzLCAxNjQsIDI1MSwgMjMxLCAyMjAsIDUsIDI0MiwgMjIyLCAyMzAsIDI1MywgCi0gICAgMjIzLCA0NCwgMjQzLCAyMjMsIDI0MywgMjIyLCAyNDMsIDIyMSwgMjMwLCA1MCwgMjA5LCAyNTEsIDIwOSwgMjUyLCAyMDksIAotICAgIDI1NCwgMjMyLCAxMDcsIDIyMiwgMjIxLCAyMzIsIDEwOSwgMjIyLCAyMjMsIDIyNSwgMjI3LCAyMzIsIDEwNiwgMjIyLCAKLSAgICAyMjAsIDIyOCwgMTExLCAyMzAsIDE3MCwgMjExLCAyMjksIDIzMiwgMTA4LCAyMjIsIDIyMiwgMjQzLCAyNDQsIDIyNSwgCi0gICAgMjI2LCAyMTIsIDE1LCAyNDUsIDE3MCwgMjQzLCAyMzMsIDIzMCwgMjM0LCAyMjYsIDIwMSwgMjE0LCAxMzQsIDg3LCAyMzAsIAotICAgIDIzNCwgMjQ4LCAxNjUsIDg3LCA4LCAzLCAyMzUsIDE2NCwgNzksIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDQ0LCA3MSwgCi0gICAgMjMzLCAyNiwgMTI3LCAyMTMsIDExOCwgMjEzLCA3LCAyMTIsIDE5NSwgMjEyLCAxODQsIDIxMiwgMTczLCAyMTIsIDE2MiwgCi0gICAgMjEyLCAxNTEsIDIxMiwgMTQwLCAyMTIsIDEyOSwgMjEzLCAxMTcsIDIxMywgMTA2LCAyMTMsIDk1LCAyMTMsIDg0LCAyMTMsIAotICAgIDczLCAyMTMsIDYyLCAyMTMsIDUxLCAyNTEsIDc5LCAyMjYsIDE1OSwgNzksIDI1MSwgMjA0LCAyMDksIDI1MywgMTUsIDUsIAotICAgIDIyNywgMjE1LCAyMTYsIDI0MCwgMTUsIDUsIDIyNywgMjE1LCAxMTUsIDIyNywgMjE1LCAyNTEsIDEwNywgMTE1LCAyNTEsIAotICAgIDEwNiwgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDIxOSwgMTA0LCAyNTAsIDgxLCAyMTQsIDksIDIxMywgNDAsIDIxMywgMjksIAotICAgIDIxMywgMTgsIDIxMywgNiwgMjEyLCAyNTEsIDIxMiwgMjQwLCAyMTIsIDIyOSwgMjEyLCAyMTgsIDIxMiwgMjA3LCAyMTIsIAotICAgIDE5OSwgMjEyLCAxOTgsIDIxMiwgMTk3LCAyMTIsIDE5NiwgMjEyLCAxOTQsIDIxMiwgMTkzLCAyMTIsIDE5MiwgMjEyLCAKLSAgICAxOTEsIDIxMiwgMTkwLCAyMTIsIDE4OSwgMjEyLCAxODgsIDIxMiwgMTg3LCAyMTIsIDE4NiwgMjEyLCAxODUsIDIxMiwgCi0gICAgMTgzLCAyMTIsIDE4MiwgMjEyLCAxODEsIDIxMiwgMTgwLCAyMTIsIDE3OSwgMjEyLCAxNzgsIDIxMiwgMTc3LCAyMTIsIAotICAgIDE3NiwgMjEyLCAxNzUsIDIxMiwgMTc0LCAyMTIsIDE3MiwgMjEyLCAxNzEsIDIxMiwgMTcwLCAyMTIsIDE2OSwgMjEyLCAKLSAgICAxNjgsIDIxMiwgMTY3LCAyMTIsIDE2NiwgMjEyLCAxNjUsIDIxMiwgMTY0LCAyMTIsIDE2MywgMjEyLCAxNjEsIDIxMiwgCi0gICAgMTYwLCAyMTIsIDE1OSwgMjEyLCAxNTgsIDIxMiwgMTU3LCAyMTIsIDE1NiwgMjEyLCAxNTUsIDIxMiwgMTU0LCAyMTIsIAotICAgIDE1MywgMjEyLCAxNTIsIDIxMiwgMTUwLCAyMTIsIDE0OSwgMjEyLCAxNDgsIDIxMiwgMTQ3LCAyMTIsIDE0NiwgMjEyLCAKLSAgICAxNDUsIDIxMiwgMTQ0LCAyMTIsIDE0MywgMjEyLCAxNDIsIDIxMiwgMTQxLCAyMTIsIDEzOSwgMjEyLCAxMzgsIDIxMiwgCi0gICAgMTM3LCAyMTIsIDEzNiwgMjEyLCAxMzUsIDIxMiwgMTM0LCAyMTIsIDEzMywgMjEyLCAxMzIsIDIxMiwgMTMxLCAyMTIsIAotICAgIDEzMCwgMjEyLCAxMjgsIDIxMiwgMTI3LCAyMTIsIDEyNiwgMjEyLCAxMjUsIDIxMiwgMTI0LCAyMTIsIDEyMywgMjEyLCAKLSAgICAxMjIsIDIxMiwgMTIxLCAyMTIsIDEyMCwgMjEyLCAxMTksIDIxMywgMTE2LCAyMTMsIDExNSwgMjEzLCAxMTQsIDIxMywgCi0gICAgMTEzLCAyMTMsIDExMiwgMjEzLCAxMTEsIDIxMywgMTEwLCAyMTMsIDEwOSwgMjEzLCAxMDgsIDIxMywgMTA3LCAyMTMsIAotICAgIDEwNSwgMjEzLCAxMDQsIDIxMywgMTAzLCAyMTMsIDEwMiwgMjEzLCAxMDEsIDIxMywgMTAwLCAyMTMsIDk5LCAyMTMsIDk4LCAKLSAgICAyMTMsIDk3LCAyMTMsIDk2LCAyMTMsIDk0LCAyMTMsIDkzLCAyMTMsIDkyLCAyMTMsIDkxLCAyMTMsIDkwLCAyMTMsIDg5LCAKLSAgICAyMTMsIDg4LCAyMTMsIDg3LCAyMTMsIDg2LCAyMTMsIDg1LCAyMTMsIDgzLCAyMTMsIDgyLCAyMTMsIDgxLCAyMTMsIDgwLCAKLSAgICAyMTMsIDc5LCAyMTMsIDc4LCAyMTMsIDc3LCAyMTMsIDc2LCAyMTMsIDc1LCAyMTMsIDc0LCAyMTMsIDcyLCAyMTMsIDcxLCAKLSAgICAyMTMsIDcwLCAyMTMsIDY5LCAyMTMsIDY4LCAyMTMsIDY3LCAyMTMsIDY2LCAyMTMsIDY1LCAyMTMsIDY0LCAyMTMsIDYzLCAKLSAgICAyMTMsIDYxLCAyMTMsIDYwLCAyMTMsIDU5LCAyMTMsIDU4LCAyMTMsIDU3LCAyMTMsIDU2LCAyMTMsIDU1LCAyMTMsIDU0LCAKLSAgICAyMTMsIDUzLCAyMTMsIDUyLCAyMTMsIDUwLCAyMTMsIDQ5LCAyMTMsIDQ4LCAyMTMsIDQ3LCAyMTMsIDQ2LCAyMTMsIDQ1LCAKLSAgICAyMTMsIDQ0LCAyMTMsIDQzLCAyMTMsIDQyLCAyMTMsIDQxLCAyMTMsIDM5LCAyMTMsIDM4LCAyMTMsIDM3LCAyMTMsIDM2LCAKLSAgICAyMTMsIDM1LCAyMTMsIDM0LCAyMTMsIDMzLCAyMTMsIDMyLCAyMTMsIDMxLCAyMTMsIDMwLCAyMTMsIDI4LCAyMTMsIDI3LCAKLSAgICAyMTMsIDI2LCAyMTMsIDI1LCAyMTMsIDI0LCAyMTMsIDIzLCAyMTMsIDIyLCAyMTMsIDIxLCAyMTMsIDIwLCAyMTMsIDE5LCAKLSAgICAyMTMsIDE3LCAyMTMsIDE2LCAyMTMsIDE1LCAyMTMsIDE0LCAyMTMsIDEzLCAyMTMsIDEyLCAyMTMsIDExLCAyMTMsIDEwLCAKLSAgICAyMTMsIDksIDIxMywgOCwgMjEzLCA1LCAyMTMsIDQsIDIxMywgMywgMjEzLCAyLCAyMTMsIDEsIDIxMywgMCwgMjEyLCAyNTUsIAotICAgIDIxMiwgMjU0LCAyMTIsIDI1MywgMjEyLCAyNTIsIDIxMiwgMjUwLCAyMTIsIDI0OSwgMjEyLCAyNDgsIDIxMiwgMjQ3LCAKLSAgICAyMTIsIDI0NiwgMjEyLCAyNDUsIDIxMiwgMjQ0LCAyMTIsIDI0MywgMjEyLCAyNDIsIDIxMiwgMjQxLCAyMTIsIDIzOSwgCi0gICAgMjEyLCAyMzgsIDIxMiwgMjM3LCAyMTIsIDIzNiwgMjEyLCAyMzUsIDIxMiwgMjM0LCAyMTIsIDIzMywgMjEyLCAyMzIsIAotICAgIDIxMiwgMjMxLCAyMTIsIDIzMCwgMjEyLCAyMjgsIDIxMiwgMjI3LCAyMTIsIDIyNiwgMjEyLCAyMjUsIDIxMiwgMjI0LCAKLSAgICAyMTIsIDIyMywgMjEyLCAyMjIsIDIxMiwgMjIxLCAyMTIsIDIyMCwgMjEyLCAyMTksIDIxMiwgMjE3LCAyMTIsIDIxNiwgCi0gICAgMjEyLCAyMTUsIDIxMiwgMjE0LCAyMTIsIDIxMywgMjEyLCAyMTIsIDIxMiwgMjExLCAyMTIsIDIxMCwgMjEyLCAyMDksIAotICAgIDIxMiwgMjA4LCAyMTIsIDIwNiwgMjEyLCAyMDUsIDIxMiwgMjA0LCAyMTIsIDIwMywgMjEyLCAyMDIsIDIxMiwgMjAxLCAKLSAgICAyMTIsIDIwMCwgNywgNiwgMSwgMTE2LCAyLCAyMzEsIDIzOCwgMjIsIDI0MiwgMTQzLCA3LCA0LCAxLCAxMTYsIDIsIDIzMSwgCi0gICAgMjM4LCAyMiwgMjQyLCAxNDMsIDcsIDYsIDEsIDE2MCwgMiwgNjcsIDIzMiwgMjIwLCA1MSwgNywgNCwgMSwgMTYwLCAyLCAKLSAgICA2NywgMjMyLCAyMjAsIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDY3LCAyMzIsIDIyMCwgMjUyLCA1MSwgMjIsIDI0MiwgMTQzLCAKLSAgICA3LCA0LCAxLCAxNjAsIDIsIDY3LCAyMzIsIDIyMCwgMjUyLCA1MSwgMjIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxNjAsIDIsIAotICAgIDY3LCAyMzIsIDIyMCwgMjUyLCA1MSwgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCA2NywgMjMyLCAyMjAsIDI1MiwgNTEsIAotICAgIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzOSwgMjIsIDIzMSwgMjM3LCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgCi0gICAgMzksIDIyLCAyMzEsIDIzNywgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDM5LCAyMiwgMjUwLCAyNDIsIDcsIDQsIDEsIDE2MCwgCi0gICAgMiwgMjUwLCAzOSwgMjIsIDI1MCwgMjQyLCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgMjMxLCAyMzgsIDIyLCAyNDIsIDE0MywgCi0gICAgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDIzMSwgMjM4LCAyMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDI0MCwgMTYxLCAyLCA1OSwgCi0gICAgNzIsIDIyLCAxNDIsIDcsIDQsIDEsIDIyOSwgODUsIDIsIDIxNiwgOTAsIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIDY3LCAyMzIsIAotICAgIDIyMCwgNTEsIDcsIDQsIDEsIDE0NCwgMiwgNjcsIDIzMiwgMjIwLCA1MSwgNywgNiwgMSwgMTQ0LCAyLCA2NywgMjMyLCAKLSAgICAyMjAsIDI1MiwgNTEsIDIyLCAyNDIsIDE0MywgNywgNCwgMSwgMTQ0LCAyLCA2NywgMjMyLCAyMjAsIDI1MiwgNTEsIDIyLCAKLSAgICAyNDIsIDE0MywgNywgNiwgMSwgMTQ0LCAyLCA2NywgMjMyLCAyMjAsIDI1MiwgNTEsIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgCi0gICAgMiwgNjcsIDIzMiwgMjIwLCAyNTIsIDUxLCAyMiwgMTQyLCA3LCA2LCAxLCAyMjIsIDk0LCAyLCA2NywgMjMyLCAyMjAsIDUxLCAKLSAgICA3LCA0LCAxLCAyMjIsIDk0LCAyLCA2NywgMjMyLCAyMjAsIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjM4LCAyMiwgCi0gICAgMjQyLCAxNDMsIDcsIDQsIDEsIDEwNCwgMiwgMjMxLCAyMzgsIDIyLCAyNDIsIDE0MywgNywgNiwgMSwgMTE2LCAyLCAyMjYsIAotICAgIDIyOSwgMjIsIDE0MiwgNywgNCwgMSwgMTE2LCAyLCAyMjYsIDIyOSwgMjIsIDE0MiwgNywgNiwgMSwgMTE2LCAyLCAyMjYsIAotICAgIDIyOSwgMjIsIDE4NCwgNywgNCwgMSwgMTE2LCAyLCAyMjYsIDIyOSwgMjIsIDE4NCwgNywgNiwgMSwgMTYwLCAyLCAyMjYsIAotICAgIDIyOSwgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCAyMjYsIDIyOSwgMjIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCAyMjYsIAotICAgIDIyOSwgMjIsIDE4NCwgNywgNCwgMSwgMTYwLCAyLCAyMjYsIDIyOSwgMjIsIDE4NCwgNywgNiwgMSwgMTYwLCAyLCA1OSwgCi0gICAgNzIsIDIyLCAxNDIsIDcsIDQsIDEsIDE2MCwgMiwgNTksIDcyLCAyMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIDU5LCA3MiwgCi0gICAgMjIsIDE4NCwgNywgNCwgMSwgMTYwLCAyLCA1OSwgNzIsIDIyLCAxODQsIDcsIDQsIDEsIDI0MCwgMTYxLCAyLCA1OSwgNzIsIAotICAgIDIyLCAyNDIsIDE0MywgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDU5LCA3MiwgMjIsIDE4NCwgNywgNiwgMSwgMjQwLCAxNjEsIAotICAgIDIsIDIyNiwgMjI5LCAyMiwgMTQyLCA3LCA0LCAxLCAyNDAsIDE2MSwgMiwgMjI2LCAyMjksIDIyLCA1OSwgNzIsIDIyLCAKLSAgICAxNDIsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAyMjYsIDIyOSwgMjIsIDE4NCwgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDIyNiwgCi0gICAgMjI5LCAyMiwgNTksIDcyLCAyMiwgMTg0LCA3LCA2LCAxLCAyMzUsIDE1MSwgMiwgMTg0LCA3LCA0LCAxLCAyMzUsIDE1MSwgCi0gICAgMiwgNTksIDcyLCAyMiwgMTg0LCA3LCA2LCAxLCAyMzMsIDE1NSwgMiwgMTg0LCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgMTg0LCAKLSAgICA3LCA2LCAxLCAyMzIsIDU1LCAyLCAxODQsIDcsIDQsIDEsIDIzMiwgNTUsIDIsIDE4NCwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIAotICAgIDE4NCwgNywgNCwgMSwgMjIzLCAyMjcsIDIsIDE4NCwgNywgNiwgMSwgMTA0LCAyLCAyMjYsIDIyOSwgMjIsIDE0MiwgNywgNCwgCi0gICAgMSwgMTA0LCAyLCAyMjYsIDIyOSwgMjIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyMjYsIDIyOSwgMjIsIDE4NCwgNywgNCwgCi0gICAgMSwgMTA0LCAyLCAyMjYsIDIyOSwgMjIsIDE4NCwgNywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzOCwgMjIsIDE0MiwgNywgNCwgCi0gICAgMSwgMTA0LCAyLCAyMzEsIDIzOCwgMjIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzOCwgMjIsIDE4NCwgNywgNCwgCi0gICAgMSwgMTA0LCAyLCAyMzEsIDIzOCwgMjIsIDE4NCwgNywgNCwgMSwgMjU0LCAyNTMsIDIsIDI0MiwgMTQzLCA3LCA0LCAxLCAKLSAgICAyMDQsIDE0NCwgMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDIwNCwgMTQ0LCAyLCAxNDIsIDcsIDQsIDEsIDIxNSwgOTQsIDIxNCwgCi0gICAgMTA2LCAyLCAyNDIsIDE0MywgNywgNCwgMSwgMjE1LCA5NCwgMjE0LCAxMDYsIDIsIDE0MiwgNywgNCwgMSwgMjIxLCAxOTgsIAotICAgIDIsIDI0MiwgMTQzLCA3LCA0LCAxLCAyMjEsIDE5OCwgMiwgMTQyLCA3LCA0LCAxLCAyNDEsIDU4LCAyMjEsIDE5OCwgMiwgCi0gICAgMjQyLCAxNDMsIDcsIDQsIDEsIDI0MSwgNTgsIDIyMSwgMTk4LCAyLCAxNDIsIDksIDIyMCwgMTM3LCA3NywgMiwgMTgyLCAKLSAgICA3MiwgMiwgMjU0LCAxNzksIDksIDIyMCwgMTM3LCA3NywgMiwgMTgyLCA3MiwgMiwgMjEyLCAzMCwgOSwgMjIwLCAxMzcsIAotICAgIDc3LCAyLCAxODIsIDcyLCAyLCAxMDksIDIzMSwgMTk3LCA5LCAyMjAsIDEzNywgNzcsIDIsIDE4MiwgNzIsIDIsIDIyNiwgCi0gICAgMjM4LCA5LCAyMjAsIDEzNywgNzcsIDIsIDE4MiwgNzIsIDIsIDY5LCA5LCAyMjAsIDEzNywgNzcsIDIsIDE4MiwgNzIsIDIsIAotICAgIDIxMCwgMjEyLCA5LCAyMjAsIDEzNywgNzcsIDIsIDE4MiwgNzIsIDIsIDc2LCA5LCAyMjAsIDEzNywgNzcsIDIsIDE4MiwgCi0gICAgNzIsIDIsIDI1NCwgMjUyLCA5LCAyMjAsIDEzNywgMjI4LCA2OCwgMiwgMjM0LCAxODAsIDE0NiwgMSwgMjM0LCAxMTUsIDM2LCAKLSAgICAxMTcsIDIzNSwgMjksIDM2LCAxMTcsIDIyOSwgODQsIDM2LCAxMTcsIDI1MSwgNzQsIDM2LCAxMTcsIDIyNywgMTcxLCAzNiwgCi0gICAgMTE3LCAyMTUsIDE2MCwgMzYsIDExNywgMjI4LCAxMTYsIDM2LCAxMTcsIDIxNywgMTUzLCAzNiwgMTE3LCAyMzAsIDMwLCAKLSAgICAzNiwgMTE3LCAyMjYsIDEwOSwgMzYsIDExNywgMTk0LCAzNiwgMTE3LCAyMTEsIDExNywgMzYsIDExNywgMTUzLCAzNiwgCi0gICAgMTE3LCAxNTYsIDM2LCAxMTcsIDIxNCwgMTA1LCAzNiwgMTE3LCAyMzIsIDE4MiwgMzYsIDExNywgMjMyLCAxOTEsIDM2LCAKLSAgICAxMTcsIDIyMiwgMTgyLCAzNiwgMTE3LCAyMjgsIDk4LCAzNiwgMTE3LCAyMzUsIDE1MCwgMzYsIDExNywgMjIwLCAxMDYsIAotICAgIDM2LCAxMTcsIDIxOCwgMjI4LCAzNiwgMTE3LCAyMjIsIDkzLCAzNiwgMTE3LCAyNDIsIDY3LCAzNiwgMTE3LCAyMzMsIDIzOCwgCi0gICAgMzYsIDMsIDIzNSwgMTYsIDM2LCAzLCAyMzQsIDk4LCAzNiwgMywgMjM0LCA4OSwgMzYsIDMsIDIzMywgMjIzLCAzNiwgMywgCi0gICAgMjMzLCAxOTQsIDM2LCAzLCAyMzQsIDE4OCwgMzYsIDMsIDIzNCwgMTg3LCAzNiwgMywgMjM0LCAyNTIsIDM2LCAzLCAyMzQsIAotICAgIDM0LCAzNiwgMywgMjM0LCAxNiwgMzYsIDMsIDIzNCwgMjAxLCAzNiwgMywgMjI5LCA4MSwgMzYsIDMsIDIyOSwgMzIsIDM2LCAKLSAgICAzLCAyMjksIDI4LCAzNiwgMywgMjI4LCAyNTMsIDM2LCAzLCAyMjgsIDI0NiwgMzYsIDMsIDIyOSwgNjksIDM2LCAzLCAyMjksIAotICAgIDY3LCAzNiwgMywgMjI5LCA3OCwgMzYsIDMsIDIyOSwgOSwgMzYsIDMsIDIyOSwgNCwgMzYsIDMsIDIyOSwgNzEsIDM2LCAzLCAKLSAgICAyNTEsIDQwLCAzNiwgMywgMjUwLCA1OSwgMzYsIDMsIDI1MCwgNDksIDM2LCAzLCAyNDksIDEyMCwgMzYsIDMsIDI0OSwgOTEsIAotICAgIDM2LCAzLCAyNTAsIDE5OCwgMzYsIDMsIDI1MCwgMTkwLCAzNiwgMywgMjUxLCAzMCwgMzYsIDMsIDI0OSwgMjQ2LCAzNiwgMywgCi0gICAgMjQ5LCAxODIsIDM2LCAzLCAyNTAsIDIzMCwgMzYsIDMsIDIyNywgMTY4LCAzNiwgMywgMjI3LCAxNTIsIDM2LCAzLCAyMjcsIAotICAgIDE0NywgMzYsIDMsIDIyNywgMTMyLCAzNiwgMywgMjI3LCAxMjUsIDM2LCAzLCAyMjcsIDE2MCwgMzYsIDMsIDIyNywgMTU5LCAKLSAgICAzNiwgMywgMjI3LCAxNjUsIDM2LCAzLCAyMjcsIDEzOCwgMzYsIDMsIDIyNywgMTM2LCAzNiwgMywgMjI3LCAxNjMsIDM2LCAKLSAgICAzLCAyMTUsIDE1NiwgMzYsIDMsIDIxNSwgMTM2LCAzNiwgMywgMjE1LCAxMzUsIDM2LCAzLCAyMTUsIDEyNCwgMzYsIDMsIAotICAgIDIxNSwgMTIxLCAzNiwgMywgMjE1LCAxNTIsIDM2LCAzLCAyMTUsIDE1MSwgMzYsIDMsIDIxNSwgMTU1LCAzNiwgMywgMjE1LCAKLSAgICAxMzQsIDM2LCAzLCAyMTUsIDEzMywgMzYsIDMsIDIxNSwgMTU0LCAzNiwgMywgMjI4LCAxMTQsIDM2LCAzLCAyMjgsIDEwMCwgCi0gICAgMzYsIDMsIDIyOCwgOTksIDM2LCAzLCAyMjgsIDgzLCAzNiwgMywgMjI4LCA4MiwgMzYsIDMsIDIyOCwgMTEwLCAzNiwgMywgCi0gICAgMjI4LCAxMDksIDM2LCAzLCAyMjgsIDExMywgMzYsIDMsIDIyOCwgODUsIDM2LCAzLCAyMjgsIDg0LCAzNiwgMywgMjI4LCAKLSAgICAxMTIsIDM2LCAzLCAyMTcsIDEwMiwgMzYsIDMsIDIxNiwgMTE4LCAzNiwgMywgMjE2LCAxMDQsIDM2LCAzLCAyMTUsIDExOSwgCi0gICAgMzYsIDMsIDIxNSwgODUsIDM2LCAzLCAyMTcsIDIzLCAzNiwgMywgMjE3LCAxMiwgMzYsIDMsIDIxNywgODAsIDM2LCAzLCAKLSAgICAxMTIsIDM2LCAzLCAyMTYsIDE4LCAzNiwgMywgMjE3LCA0MiwgMzYsIDMsIDIyOSwgMjMwLCAzNiwgMywgMjI4LCAyMzgsIAotICAgIDM2LCAzLCAyMjgsIDIxMywgMzYsIDMsIDIyNywgMjQyLCAzNiwgMywgMjI3LCAxODMsIDM2LCAzLCAyMjksIDExMiwgMzYsIAotICAgIDMsIDIyOSwgMTA4LCAzNiwgMywgMjI5LCAyMTcsIDM2LCAzLCAyMjgsIDc5LCAzNiwgMywgMjI4LCA2OSwgMzYsIDMsIDIyOSwgCi0gICAgMTkyLCAzNiwgMywgMjI2LCA5MywgMzYsIDMsIDIyNSwgMTExLCAzNiwgMywgMjI1LCA3NCwgMzYsIDMsIDIyNCwgMTUzLCAKLSAgICAzNiwgMywgMjI0LCAxMjIsIDM2LCAzLCAyMjUsIDIyNCwgMzYsIDMsIDIyNSwgMjE0LCAzNiwgMywgMjI2LCA3NSwgMzYsIDMsIAotICAgIDIyNSwgMTksIDM2LCAzLCAyMjQsIDI1MiwgMzYsIDMsIDIyNSwgMjM4LCAzNiwgMywgMjMxLCAyNDIsIDM2LCAzLCAyMzAsIAotICAgIDIzNSwgMzYsIDMsIDIzMCwgMjA2LCAzNiwgMywgMjMwLCAxMDcsIDM2LCAzLCAyMzAsIDU5LCAzNiwgMywgMjMxLCA5NiwgCi0gICAgMzYsIDMsIDIzMSwgODUsIDM2LCAzLCAyMzEsIDIwOCwgMzYsIDMsIDIzMCwgMTY2LCAzNiwgMywgMjMwLCAxMzcsIDM2LCAzLCAKLSAgICAyMzEsIDE0MCwgMzYsIDMsIDIxMSwgMTAzLCAzNiwgMywgMjExLCA4LCAzNiwgMywgMjEwLCAyNTUsIDM2LCAzLCAyMTAsIAotICAgIDIxMiwgMzYsIDMsIDIxMCwgMTgxLCAzNiwgMywgMjExLCA0NywgMzYsIDMsIDIxMSwgNDQsIDM2LCAzLCAyMTEsIDgyLCAzNiwgCi0gICAgMywgMjEwLCAyNDQsIDM2LCAzLCAyMTAsIDIyOSwgMzYsIDMsIDIxMSwgNTUsIDM2LCAzLCAyMjMsIDE4NywgMzYsIDMsIAotICAgIDIyMywgMzgsIDM2LCAzLCAyMjIsIDI0MiwgMzYsIDMsIDIyMiwgMTQyLCAzNiwgMywgMjIyLCAxMTQsIDM2LCAzLCAyMjMsIAotICAgIDEzMSwgMzYsIDMsIDIyMywgMTExLCAzNiwgMywgMjIzLCAxNjksIDM2LCAzLCAyMjIsIDIxMywgMzYsIDMsIDIyMiwgMTk5LCAKLSAgICAzNiwgMywgMjIzLCAxMzksIDM2LCAzLCAyMzMsIDE0MCwgMzYsIDMsIDIzMiwgMjQ3LCAzNiwgMywgMjMyLCAyMzMsIDM2LCAKLSAgICAzLCAyMzIsIDEwMywgMzYsIDMsIDIzMiwgNzgsIDM2LCAzLCAyMzMsIDY0LCAzNiwgMywgMjMzLCA1NiwgMzYsIDMsIDIzMywgCi0gICAgMTE1LCAzNiwgMywgMjMyLCAxNjIsIDM2LCAzLCAyMzIsIDEzMywgMzYsIDMsIDIzMywgODAsIDM2LCAzLCAyMTQsIDI2LCAKLSAgICAzNiwgMywgMjEzLCAxNzYsIDM2LCAzLCAyMTMsIDE2MiwgMzYsIDMsIDIxMiwgMTE2LCAzNiwgMywgMjEyLCAxMDksIDM2LCAKLSAgICAzLCAyMTMsIDI1NSwgMzYsIDMsIDIxMywgMjUwLCAzNiwgMywgMjE0LCAyMywgMzYsIDMsIDIxMywgMTM4LCAzNiwgMywgCi0gICAgMjEzLCAxMjcsIDM2LCAzLCAyMTQsIDUsIDM2LCAzLCAyMzIsIDE4MCwgMzYsIDMsIDIzMiwgMTc1LCAzNiwgMywgMjMyLCAKLSAgICAxNzQsIDM2LCAzLCAyMzIsIDE3MSwgMzYsIDMsIDIzMiwgMTcwLCAzNiwgMywgMjMyLCAxNzcsIDM2LCAzLCAyMzIsIDE3NiwgCi0gICAgMzYsIDMsIDIzMiwgMTc5LCAzNiwgMywgMjMyLCAxNzMsIDM2LCAzLCAyMzIsIDE3MiwgMzYsIDMsIDIzMiwgMTc4LCAzNiwgCi0gICAgMywgMjMyLCAxODksIDM2LCAzLCAyMzIsIDE4NCwgMzYsIDMsIDIzMiwgMTgzLCAzNiwgMywgMjMyLCAxNjcsIDM2LCAzLCAKLSAgICAyMzIsIDE2NiwgMzYsIDMsIDIzMiwgMTg2LCAzNiwgMywgMjMyLCAxODUsIDM2LCAzLCAyMzIsIDE4OCwgMzYsIDMsIDIzMiwgCi0gICAgMTY5LCAzNiwgMywgMjMyLCAxNjgsIDM2LCAzLCAyMzIsIDE4NywgMzYsIDMsIDIyMiwgMTgwLCAzNiwgMywgMjIyLCAxNjksIAotICAgIDM2LCAzLCAyMjIsIDE2OCwgMzYsIDMsIDIyMiwgMTYyLCAzNiwgMywgMjIyLCAxNTUsIDM2LCAzLCAyMjIsIDE3NiwgMzYsIAotICAgIDMsIDIyMiwgMTc1LCAzNiwgMywgMjIyLCAxNzksIDM2LCAzLCAyMjIsIDE2NywgMzYsIDMsIDIyMiwgMTY2LCAzNiwgMywgCi0gICAgMjIyLCAxNzgsIDM2LCAzLCAyMjgsIDk2LCAzNiwgMywgMjI4LCA5MSwgMzYsIDMsIDIyOCwgOTAsIDM2LCAzLCAyMjgsIDg3LCAKLSAgICAzNiwgMywgMjI4LCA4NiwgMzYsIDMsIDIyOCwgOTMsIDM2LCAzLCAyMjgsIDkyLCAzNiwgMywgMjI4LCA5NSwgMzYsIDMsIAotICAgIDIyOCwgODksIDM2LCAzLCAyMjgsIDg4LCAzNiwgMywgMjI4LCA5NCwgMzYsIDMsIDIzNSwgMTQ2LCAzNiwgMywgMjM1LCAKLSAgICAxMTQsIDM2LCAzLCAyMzUsIDEwNywgMzYsIDMsIDIzNSwgNTcsIDM2LCAzLCAyMzUsIDM5LCAzNiwgMywgMjM1LCAxMzIsIAotICAgIDM2LCAzLCAyMzUsIDEzMCwgMzYsIDMsIDIzNSwgMTQxLCAzNiwgMywgMjM1LCA3NCwgMzYsIDMsIDIzNSwgNjUsIDM2LCAzLCAKLSAgICAyMzUsIDEzNSwgMzYsIDMsIDIyMCwgMTAwLCAzNiwgMywgMjIwLCAzNCwgMzYsIDMsIDIyMCwgMjksIDM2LCAzLCAyMTksIAotICAgIDIyNywgMzYsIDMsIDIxOSwgMjEyLCAzNiwgMywgMjIwLCA2NSwgMzYsIDMsIDIyMCwgNjMsIDM2LCAzLCAyMjAsIDkyLCAzNiwgCi0gICAgMywgMjIwLCA5LCAzNiwgMywgMjIwLCAzLCAzNiwgMywgMjIwLCA3MywgMzYsIDMsIDIxOCwgMjI0LCAzNiwgMywgMjE4LCAKLSAgICAxOTQsIDM2LCAzLCAyMTgsIDE5MCwgMzYsIDMsIDIxOCwgMTgxLCAzNiwgMywgMjE4LCAxNzgsIDM2LCAzLCAyMTgsIDE5OSwgCi0gICAgMzYsIDMsIDIxOCwgMTk4LCAzNiwgMywgMjE4LCAyMjMsIDM2LCAzLCAyMTgsIDE4NiwgMzYsIDMsIDIxOCwgMTg1LCAzNiwgCi0gICAgMywgMjE4LCAyMDEsIDM2LCAzLCAyMjIsIDMzLCAzNiwgMywgMjE5LCAxOTMsIDM2LCAzLCAyMTksIDE3NywgMzYsIDMsIAotICAgIDIxOCwgODQsIDM2LCAzLCAyMTgsIDUsIDM2LCAzLCAyMjEsIDE4MywgMzYsIDMsIDIyMSwgMTcyLCAzNiwgMywgMjIyLCAxOSwgCi0gICAgMzYsIDMsIDIxOSwgNjAsIDM2LCAzLCAyMTksIDQyLCAzNiwgMywgMjIxLCAyMjEsIDM2LCAzLCAyNDIsIDUzLCAzNiwgMywgCi0gICAgMjQxLCAxODcsIDM2LCAzLCAyNDEsIDE2OCwgMzYsIDMsIDI0MCwgMjI5LCAzNiwgMywgMjQwLCAyMDksIDM2LCAzLCAyNDEsIAotICAgIDI0NSwgMzYsIDMsIDI0MSwgMjI3LCAzNiwgMywgMjQyLCA0MywgMzYsIDMsIDI0MSwgNzUsIDM2LCAzLCAyNDEsIDYwLCAzNiwgCi0gICAgMywgMjQxLCAyNTMsIDM2LCAzLCAyMzMsIDIzNywgMzYsIDMsIDIzMywgMjM2LCAzNiwgMywgMjMzLCAyMzEsIDM2LCAzLCAKLSAgICAyMzMsIDIzMCwgMzYsIDMsIDIzMywgMjI3LCAzNiwgMywgMjMzLCAyMjYsIDM2LCAzLCAyMzMsIDIzMywgMzYsIDMsIDIzMywgCi0gICAgMjMyLCAzNiwgMywgMjMzLCAyMzUsIDM2LCAzLCAyMzMsIDIyOSwgMzYsIDMsIDIzMywgMjI4LCAzNiwgMywgMjMzLCAyMzQsIAotICAgIDM2LCAzLCAyMTksIDIzMywgMTc1LCAxMTcsIDUsIDIxMSwgNjgsIDE3NSwgMTE3LCA1LCAyMjMsIDE1OCwgMTc1LCAxMTcsIAotICAgIDUsIDIyMywgODEsIDk4LCAxLCAyMTUsIDI4LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMTc2LCA3MCwgMTE3LCA1LCAyNDksIAotICAgIDI0MSwgMjM0LCAxMzgsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMzQsIDM0LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjM0LCAKLSAgICAxMTEsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMjksIDksIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyNTEsIDQxLCA3MCwgCi0gICAgMTE3LCA1LCAyNDksIDI0MSwgMjUwLCAxNjUsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyNDksIDI0NiwgNzAsIDExNywgNSwgCi0gICAgMjQ5LCAyNDEsIDI1MCwgOTQsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMjcsIDEzOCwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIAotICAgIDI0OCwgMjI5LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjE1LCAxNDUsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyNDcsIDE1MywgCi0gICAgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIxNSwgMTQwLCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMTk4LCA3MCwgMTE3LCA1LCAKLSAgICAyNDksIDI0MSwgMjE3LCAxMDYsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMTYsIDIwOSwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIAotICAgIDExMiwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIxNiwgMTU3LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjI4LCA3OSwgNzAsIAotICAgIDExNywgNSwgMjQ5LCAyNDEsIDI1MiwgMTk5LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjI1LCAxNTAsIDcwLCAxMTcsIDUsIAotICAgIDI0OSwgMjQxLCAyMjUsIDE5LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjI1LCAxMjQsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAKLSAgICAyMzAsIDE2NiwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIxMCwgMjQ0LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjIyLCAyMTMsIAotICAgIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMzIsIDE2MiwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIxMywgMTM4LCA3MCwgMTE3LCAKLSAgICA1LCAyNDksIDI0MSwgMjIwLCAxMDQsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMTgsIDIyNSwgNzAsIDExNywgNSwgMjQ5LCAKLSAgICAyNDEsIDIwNiwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDE2MiwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIzMywgMTQxLCA3MCwgCi0gICAgMjUsIDUsIDI0OSwgMjQxLCAyMjQsIDkxLCA3MCwgMjM1LCAyNTAsIDI1LCA1LCAyNDksIDI0MSwgMjI0LCAzMywgNzAsIAotICAgIDIzNSwgMjUwLCAyNSwgNSwgMjQ5LCAyNDEsIDIyMiwgMTAyLCA3MCwgMjM1LCAyNTAsIDI1LCA1LCAyNDksIDI0MSwgMjIyLCAKLSAgICA5NSwgNzAsIDIzNSwgMjUwLCAyNSwgNSwgMjQ5LCAyNDEsIDIyNCwgNzIsIDcwLCAyNSwgNSwgMjI2LCAyMDgsIDcwLCAyNSwgCi0gICAgNSwgMjU1LCA0MywgMTQxLCAxLCAyNTIsIDcsIDIyOSwgODIsIDE0MSwgMSwgMjUyLCA3LCAyMjksIDMyLCAxNDEsIDEsIAotICAgIDI1MiwgNywgMjI4LCAyNTMsIDE0MSwgMSwgMjUyLCA3LCAyMjksIDY5LCAxNDEsIDEsIDI1MiwgNywgMjI5LCA5LCA1NiwgMSwgCi0gICAgMjUyLCA3LCAyMjksIDgyLCA1NiwgMSwgMjUyLCA3LCAyMjksIDMyLCA1NiwgMSwgMjUyLCA3LCAyMjgsIDI1MywgNTYsIDEsIAotICAgIDI1MiwgNywgMjI5LCA2OSwgNTYsIDEsIDI1MiwgNywgMjI5LCA5LCA1NiwgMSwgMjU0LCAyMDMsIDI1MCwgMTk4LCA1NiwgMSwgCi0gICAgMjU0LCAyMDMsIDIxNSwgMTE5LCA1NiwgMSwgMjU0LCAyMDMsIDExMiwgNTYsIDEsIDI1NCwgMjAzLCAyMjYsIDEwOSwgNTgsIAotICAgIDEsIDI0NSwgMjgsIDI0NSwgMjcsIDI0OSwgMTkwLCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMjcsIDI0NSwgMjgsIDI0OSwgCi0gICAgMTkwLCAxMzgsIDEzMCwgCisgICAgMCwgMjExLCAyMjgsIDI0MCwgMjEyLCA4MiwgMjE3LCAzMSwgODIsIDQyLCA1NCwgMjQzLCA5NywgNTQsIDIxOCwgMjQ2LCAKKyAgICA1NCwgMjUwLCAyMzUsIDI1MCwgMTYwLCA0OSwgMjE5LCA3NiwgNTAsIDIxOSwgNzYsIDI1MCwgNTksIDkxLCA1NCwgMjQ1LCAKKyAgICAyMzMsIDIzNSwgMjE5LCAyMzksIDEwMiwgMjExLCA2MSwgMjEyLCAwLCAxNywgMjAyLCA4NCwgMTcsIDEwNSwgMTcsIDEwOCwgCisgICAgMTcsIDE0NywgMTcsIDE0OSwgMTcsIDE3MCwgMTcsIDE5NSwgMTcsIDIxMywgMTExLCAxNywgMTk5LCAxNywgMjIyLCA2MywgCisgICAgMjQ1LCAyNDIsIDIxMywgMTQzLCAyMjcsIDE3OSwgNTQsIDI0MSwgMzUsIDU0LCAyMzcsIDI0NywgNTQsIDIxNywgNDcsIDgyLCAKKyAgICAyNDUsIDIzMSwgMjUwLCA0OSwgOCwgNiwgMSwgNjMsIDgsIDYsIDEsIDI0OSwgMjU1LCA4LCA2LCAxLCAyNDcsIDEyNSwgOCwgCisgICAgNiwgMSwgMjQ1LCA1MSwgOCwgNiwgMSwgNzQsIDgsIDYsIDEsIDI0MCwgMTc0LCA4LCA2LCAxLCAyMzksIDc1LCA4LCA2LCAxLCAKKyAgICAyMzcsIDE3MSwgOCwgNiwgMSwgNzUsIDgsIDYsIDEsIDIzMCwgMTg0LCA4LCA2LCAxLCAyMzAsIDU0LCA4LCA2LCAxLCAxNTksIAorICAgIDgsIDYsIDEsIDIyNiwgMTg1LCA4LCA2LCAxLCAyMjMsIDE2MywgOCwgNiwgMSwgNzgsIDgsIDYsIDEsIDIxOSwgMTg0LCA4LCAKKyAgICA2LCAxLCAyMTcsIDEzNCwgOCwgNiwgMSwgMTQ2LCA4LCA2LCAxLCAxOTQsIDgsIDYsIDEsIDIxMCwgNjksIDgsIDYsIDEsIAorICAgIDY4LCA4LCA2LCAxLCAyMDYsIDE2NCwgOCwgNiwgMSwgMjA0LCAxNDQsIDgsIDYsIDEsIDIwMywgMTk2LCA4LCA2LCAxLCAKKyAgICAyMDMsIDEyNCwgOCwgNiwgMSwgMjAyLCAxNTksIDQ5LCA1MSwgMTU1LCAyMTYsIDc0LCAyMTIsIDAsIDUwLCA1MSwgMTU1LCAKKyAgICAyNDYsIDUzLCAyNTEsIDEzOCwgMTI0LCAyMjcsIDExNCwgMjM3LCAyNTQsIDI1MSwgMTM4LCA4LCA1LCAxLCA2MywgOCwgNSwgCisgICAgMSwgMjQ5LCAyNTUsIDgsIDUsIDEsIDI0NywgMTI1LCA4LCA1LCAxLCAyNDUsIDUxLCA4LCA1LCAxLCA3NCwgOCwgNSwgMSwgCisgICAgMjQwLCAxNzQsIDgsIDUsIDEsIDIzOSwgNzUsIDgsIDUsIDEsIDIzNywgMTcxLCA4LCA1LCAxLCA3NSwgOCwgNSwgMSwgMjMwLCAKKyAgICAxODQsIDgsIDUsIDEsIDIzMCwgNTQsIDgsIDUsIDEsIDE1OSwgOCwgNSwgMSwgMjI2LCAxODUsIDgsIDUsIDEsIDIyMywgCisgICAgMTYzLCA4LCA1LCAxLCA3OCwgOCwgNSwgMSwgMjE5LCAxODQsIDgsIDUsIDEsIDIxNywgMTM0LCA4LCA1LCAxLCAxNDYsIDgsIAorICAgIDUsIDEsIDE5NCwgOCwgNSwgMSwgMjEwLCA2OSwgOCwgNSwgMSwgNjgsIDgsIDUsIDEsIDIwNiwgMTY0LCA4LCA1LCAxLCAKKyAgICAyMDQsIDE0NCwgOCwgNSwgMSwgMjAzLCAxOTYsIDgsIDUsIDEsIDIwMywgMTI0LCA4LCA1LCAxLCAyMDIsIDE1OSwgNDksIAorICAgIDI0NSwgOTMsIDE1NSwgODAsIDIyNywgMTE0LCA1MCwgMjQ1LCA5MywgMTU1LCAyMDgsIDIyNywgMjIxLCAxOTAsIDIxMSwgCisgICAgMjI4LCAyMzAsIDIzOSwgMjQwLCAyMTIsIDgyLCAyNDYsIDIyMCwgNTQsIDIxOCwgMjAsIDU0LCAyNDUsIDkyLCA1NCwgMjAzLCAKKyAgICA0MywgNTQsIDI0NywgMjAzLCAxNDIsIDIxNCwgMTY4LCA1NCwgMjQzLCAyMzEsIDI0NSwgMTY5LCA1NCwgMjQwLCA0MSwgCisgICAgMjE5LCAyNDAsIDIzMSwgMzEsIDIyNywgMjE3LCA1MiwgMjUwLCAyMTgsIDIxNywgMzEsIDgyLCAyMjEsIDE2NiwgNTQsIAorICAgIDIxMiwgNywgMjM1LCAyMjAsIDIxNiwgMTI5LCA1NCwgMjI1LCAxNzAsIDI0NCwgNTUsIDU0LCAyMTgsIDc1LCA1NCwgMjEwLCAKKyAgICAxOTksIDEwOCwgMjEwLCAxOTksIDE0NywgMjUxLCAxMjYsIDI1MSwgMTM4LCAyMjQsIDE1MywgNTQsIDIxOCwgMTI2LCA1NCwgCisgICAgMTAxLCAyNDMsIDg1LCAyNDYsIDIzMSwgMjEwLCAxOTksIDEwNSwgMjI1LCA4MCwgMjE5LCAyNDAsIDIzMSwgMzEsIDIxNiwgCisgICAgMTEsIDUyLCAyNTAsIDIxOCwgMjE3LCAzMSwgODIsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTE4LCAyMTcsIDU1LCAyMDQsIAorICAgIDE2MSwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTI2LCAyMTcsIDUzLCAyMzAsIDIzOSwgCisgICAgMjE3LCA0NywgODIsIDgsIDYsIDEsIDM0LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDE2NSwgOCwgNiwgMSwgMzQsIAorICAgIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDM0LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMzQsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAKKyAgICAzNCwgMywgMjE1LCAyNTMsIDU1LCA4LCA2LCAxLCAyNTEsIDEwOSwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDI0NiwgMjMxLCAKKyAgICA4LCA2LCAxLCAxODgsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIAorICAgIDUyLCA4LCA2LCAxLCAxODgsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIAorICAgIDIzNSwgMjA2LCAzLCAxNjUsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgCisgICAgMjQzLCAyMzEsIDgsIDYsIDEsIDI0MCwgMjQzLCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIAorICAgIDE1OCwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgMywgMTY1LCA4LCA2LCAxLCAxNTgsIDMsIDI0NiwgNTIsIDgsIDYsIAorICAgIDEsIDE1OCwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDE1OCwgMywgMjQzLCAyMzEsIDIyMywgMjI0LCA1NCwgOCwgNiwgMSwgCisgICAgMTU4LCAzLCA5NSwgOCwgNiwgMSwgMTA2LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMTA2LCAzLCAxNjUsIDgsIDYsIDEsIAorICAgIDEwNiwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDE2NSwgOCwgCisgICAgNiwgMSwgMjA5LCA0MCwgOCwgNSwgMSwgMjEzLCA1NywgMTk0LCA4LCA1LCAxLCAzNCwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIAorICAgIDM0LCAzLCAxNjUsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAzNCwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIAorICAgIDM0LCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMzQsIDMsIDIxNSwgMjUzLCA1NSwgOCwgNSwgMSwgMjUxLCAxMDksIDgsIDUsIAorICAgIDEsIDI0NywgMTI2LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMTg4LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMTg4LCAzLCAKKyAgICAxNjUsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMTg4LCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjM1LCAKKyAgICAyMDYsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMTY1LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQ2LCAKKyAgICA1MiwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAyNDAsIDI0MywgOCwgNSwgMSwgMjIzLCAxNjQsIAorICAgIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAxNTgsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDE2NSwgOCwgNSwgMSwgCisgICAgMTU4LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAxNTgsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAxNTgsIDMsIDI0MywgMjMxLCAKKyAgICAyNDMsIDEzNywgNTQsIDgsIDUsIDEsIDE1OCwgMywgOTUsIDgsIDUsIDEsIDEwNiwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIAorICAgIDEwNiwgMywgMTY1LCA4LCA1LCAxLCAxMDYsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDgsIDUsIAorICAgIDEsIDIwMywgMTI1LCAzLCAxNjUsIDgsIDUsIDEsIDIwOSwgNDAsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyNDMsIDIzMSwgOCwgCisgICAgNiwgMSwgMzQsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAzNCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIAorICAgIDIxNCwgOCwgNSwgMSwgMzQsIDMsIDI0NywgMjE0LCA4LCA2LCAxLCAzNCwgMywgMjIwLCA2MiwgOCwgNSwgMSwgMzQsIDMsIAorICAgIDIyMCwgNjIsIDgsIDYsIDEsIDI0NywgMTI2LCAzLCAxNjUsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAxNjUsIDgsIDYsIDEsIAorICAgIDI0NywgMTI2LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjQ3LCAxMjYsIAorICAgIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDI0NywgMjksIAorICAgIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAKKyAgICAyNDUsIDUyLCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCA5NSwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgOTUsIDgsIAorICAgIDYsIDEsIDE4OCwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDE4OCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDE4OCwgMywgMjQ3LCAKKyAgICAyMTQsIDgsIDUsIDEsIDE4OCwgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDE4OCwgMywgNzAsIDU1LCA4LCA1LCAxLCAxODgsIDMsIAorICAgIDcwLCA1NSwgOCwgNiwgMSwgMTg4LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAxODgsIDMsIDIyMCwgNjIsIDgsIDYsIDEsIDE4OCwgCisgICAgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMTg4LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMzksIDc2LCAzLCAyNDYsIDUyLCA4LCA1LCAKKyAgICAxLCAyMzksIDc2LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMzksIDc2LCAzLCAyNDcsIDIxNCwgOCwgNSwgMSwgMjM5LCA3NiwgCisgICAgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgNzAsIDU1LCA4LCAKKyAgICA2LCAxLCAyMzksIDc2LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIDIzNywgCisgICAgMTcyLCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDk1LCAKKyAgICA4LCA1LCAxLCAyMzcsIDE3MiwgMywgOTUsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMjM1LCAKKyAgICAyMDYsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAKKyAgICAyMjUsIDE3MCwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0NywgMjE0LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQ3LCAyMTQsIAorICAgIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjIwLCA2MiwgOCwgNiwgMSwgCisgICAgMjM1LCAyMDYsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjQzLCA4NCwgNzUsIDgsIDYsIDMyLCAyMzEsIDgxLCA4LCA1LCAzMiwgCisgICAgMjMxLCA4MSwgOCwgNiwgMSwgMjMwLCAxODUsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIzMCwgMTg1LCAzLCAyNDYsIDUyLCA4LCAKKyAgICA2LCAxLCAyMzAsIDU1LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIyOCwgCisgICAgMjMxLCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTY1LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTY1LCA4LCA2LCAxLCAyMjgsIAorICAgIDEzMSwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIAorICAgIDI0NywgMjksIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyNDMsIAorICAgIDg1LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyNDMsIDg1LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgOTUsIDgsIDUsIAorICAgIDEsIDIyOCwgMTMxLCAzLCA5NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDE2NSwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDE2NSwgCisgICAgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIAorICAgIDIyMywgMTY0LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjIzLCAxNjQsIAorICAgIDIxNywgMjUxLCAyNDcsIDEzNywgMjUwLCAxNjAsIDgsIDYsIDEsIDI0MSwgNzgsIDgsIDUsIDEsIDI0MSwgNzgsIDgsIDYsIAorICAgIDEsIDE1OCwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDE1OCwgMywgMjQ3LCAKKyAgICAyMTQsIDgsIDUsIDEsIDE1OCwgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDE1OCwgMywgNTIsIDE2NSwgOCwgNSwgMSwgMTU4LCAKKyAgICAzLCA1MiwgMTY1LCA4LCA2LCAzMiwgMjIwLCA3MywgOCwgNSwgMzIsIDIyMCwgNzMsIDgsIDYsIDEsIDIxNywgMSwgMywgCisgICAgMTY1LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDE2NSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjE3LCAKKyAgICAxLCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDI0NywgMjksIAorICAgIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDE2NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMTY1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAKKyAgICAyNDYsIDUyLCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyNDYsIDIzMSwgOCwgCisgICAgNSwgMSwgMjE1LCA5NCwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIxNSwgCisgICAgOTQsIDMsIDI0NywgMjksIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDYsIAorICAgIDIzMSwgOCwgNiwgMSwgMjEwLCA3MCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgCisgICAgMjEwLCA3MCwgMywgOTUsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDk1LCA4LCA2LCAxLCAxMDYsIDMsIDIwOCwgMjI3LCA4LCA1LCAKKyAgICAxLCAxMDYsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAxMDYsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAxMDYsIDMsIDIyNSwgCisgICAgMTcwLCA4LCA2LCAxLCAxMDYsIDMsIDI0NywgMjE0LCA4LCA1LCAxLCAxMDYsIDMsIDI0NywgMjE0LCA4LCA2LCAxLCAxMDYsIAorICAgIDMsIDIxNSwgMjUzLCA1NSwgOCwgNSwgMSwgMTA2LCAzLCAyMTUsIDI1MywgNTUsIDgsIDYsIDEsIDEwNiwgMywgNTIsIDE2NSwgCisgICAgOCwgNSwgMSwgMTA2LCAzLCA1MiwgMTY1LCA4LCA2LCAxLCAxMDYsIDMsIDIyMCwgNjIsIDgsIDUsIDEsIDEwNiwgMywgMjIwLCAKKyAgICA2MiwgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCAyNDYsIDUyLCA4LCA2LCAKKyAgICAxLCAyMDMsIDEyNSwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDIwMywgCisgICAgMTI1LCAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDE2NSwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDE2NSwgCisgICAgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjAyLCAKKyAgICAxNjAsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAxNjMsIDE5NCwgOCwgNSwgCisgICAgMSwgNjYsIDMsIDk1LCA4LCA2LCAxLCA2NiwgMywgMTEzLCA4LCA2LCAxLCA2NiwgMywgMjA4LCAxNDIsIDgsIDUsIDEsIDY2LCAKKyAgICAzLCAyMDgsIDE0MiwgOCwgNiwgMSwgMTQzLCAxOTUsIDgsIDUsIDEsIDE0MywgMTk1LCA4LCA2LCAxLCAxNzEsIDc4LCA4LCAKKyAgICA2LCAxLCAyNDcsIDEyNiwgMywgMTEzLCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMTEzLCA4LCA2LCAxLCAyNTEsIDg0LCAyNDUsIAorICAgIDUxLCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAxMTMsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDIwOCwgMTQyLCA4LCA1LCAxLCAKKyAgICAyNDUsIDUyLCAzLCAyMDgsIDE0MiwgOCwgNSwgMSwgMjA3LCAxNzQsIDI0NCwgMzcsIDgsIDYsIDEsIDIxNiwgNzMsIDc0LCAKKyAgICA4LCA2LCAxLCAyMTQsIDE5MiwgOCwgNiwgMSwgMTcxLCA3NCwgOCwgNiwgMSwgMjQwLCAxNzUsIDMsIDExMywgOCwgNSwgMSwgCisgICAgMjQwLCAxNzUsIDMsIDExMywgOCwgNiwgMSwgMjM5LCA3NiwgMywgMTEzLCA4LCA2LCAxLCAyMzgsIDIzNSwgOCwgNSwgMSwgCisgICAgMjM1LCAyNTUsIDgsIDYsIDEsIDIzMCwgMjMwLCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgOTUsIDgsIDYsIDEsIDIzMCwgNTUsIAorICAgIDMsIDExMywgOCwgNSwgMSwgMjMwLCA1NSwgMywgMTEzLCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTQyLCA4LCA1LCAxLCAKKyAgICAyMjgsIDI2LCAzLCA5NSwgOCwgNiwgMSwgMjA3LCAxNzQsIDIyNiwgMTg1LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgNDksIAorICAgIDExMywgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDE2MywgNTAsIDIyNywgMjEwLCA4LCA2LCAxLCAxNTgsIDMsIDEwMSwgMjA4LCAKKyAgICAyMjcsIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1MywgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDUzLCA4LCA2LCAxLCAyMjAsIAorICAgIDU3LCA4LCA1LCAxLCAyMjAsIDU3LCA4LCA2LCAxLCAyMTksIDE4NSwgMywgMTEzLCA4LCA1LCAxLCAyMTksIDE4NSwgMywgCisgICAgMTEzLCA4LCAxLCAyMDIsIDIxNiwgOCwgNiwgMSwgMTQzLCAxMDgsIDgsIDUsIDEsIDE0MywgMTA4LCA4LCA2LCAxLCAyNDEsIAorICAgIDcsIDgsIDEsIDIxNiwgNzMsIDI0MSwgOCwgMjI3LCAxNCwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjE5LCAxNDIsIDExMywgOCwgCisgICAgNiwgMSwgMjEwLCA3MCwgMywgMTEzLCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAxMTMsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIAorICAgIDIxNiwgNzksIDExMywgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDUzLCA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgNTMsIDgsIDYsIAorICAgIDEsIDIwNiwgMjE2LCA4LCA2LCAxLCAyMDYsIDE2NSwgMywgMTEzLCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMTEzLCA4LCA1LCAKKyAgICAxLCAyMDMsIDEyNSwgMywgMTEzLCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgOTUsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCA5NSwgCisgICAgOCwgNiwgMSwgMjQwLCAxNzcsIDgsIDYsIDEsIDI0MCwgMTc4LCAyMTYsIDcyLCA4LCA1LCAxLCAyNDAsIDE3OCwgMjE2LCAKKyAgICA3MiwgOCwgNSwgMSwgMjQwLCAxNzgsIDMsIDIwOSwgMjQ4LCA4LCAxLCAxMjAsIDMsIDk1LCA4LCA2LCAxLCAxNDMsIDE3MCwgCisgICAgOCwgNSwgMSwgMTQzLCAxNzAsIDgsIDEsIDIzMCwgMjM5LCAyMzgsIDQ1LCAyMTEsIDYyLCAzLCA5NSwgOCwgMSwgMjAzLCAKKyAgICAxOTksIDgsIDEsIDI0NCwgMzAsIDI0NiwgMjcsIDgsIDEsIDIyNywgMjU0LCAyNDYsIDI3LCA4LCAxLCAyNTAsIDI0OCwgCisgICAgMjQ2LCAyNywgOCwgMSwgMjE2LCA3OSwgMjQ2LCAyNywgOCwgNiwgMSwgMjQyLCAxLCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAKKyAgICAyNDUsIDUyLCAzLCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjQyLCAxLCAzLCAyNDcsIDI5LCA4LCAKKyAgICA2LCAxLCAyMjcsIDgxLCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgNSwgMSwgMjMwLCAxODQsIDgsIDUsIDEsIDIyNywgODEsIDgsIAorICAgIDYsIDEsIDIyMiwgNDksIDgsIDYsIDEsIDIyMywgMTY0LCAzLCA1LCAxLCAyMzAsIDE4NCwgOCwgNSwgMSwgMjIyLCA0OSwgOCwgCisgICAgNiwgMSwgMzQsIDMsIDI0NywgMjksIDgsIDUsIDEsIDM0LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjQ3LCAKKyAgICAyOSwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0NywgMjksIDgsIDYsIDEsIDE1OCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgCisgICAgMTU4LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAxMDYsIDMsIDI0NywgMjksIDgsIDUsIDEsIDEwNiwgMywgMjQ3LCAyOSwgOCwgCisgICAgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAyNSwgMjI1LCAKKyAgICAxNzAsIDgsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAxNjUsIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAKKyAgICAxNjUsIDgsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAyNDcsIDI5LCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAKKyAgICAyNSwgMjQ3LCAyOSwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxMDYsIDMsIAorICAgIDI0MywgMjMyLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDIwNywgMTc0LCA3NCwgOCwgNiwgMSwgMzQsIDMsIDI0MywgMjMyLCAKKyAgICAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDM0LCAzLCAyNDMsIDIzMiwgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAzNCwgMywgNzAsIAorICAgIDg3LCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDM0LCAzLCA3MCwgODcsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgMjUxLCAKKyAgICAxMTAsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyNTEsIDExMCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIAorICAgIDk1LCA4LCA1LCAxLCAyMzksIDc2LCAzLCA5NSwgOCwgNiwgMSwgMjM5LCA3NiwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjM5LCAKKyAgICA3NiwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjQ3LCAKKyAgICAyOSwgOCwgNiwgMSwgMTU4LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAxNTgsIDMsIDIyMCwgNjIsIDgsIDYsIDEsIDE1OCwgMywgCisgICAgMjIwLCA2MywgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxNTgsIDMsIDIyMCwgNjMsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgCisgICAgMjQwLCAxNzgsIDMsIDI0NywgMjksIDgsIDUsIDEsIDI0MCwgMTc4LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMzAsIDE4NSwgCisgICAgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjQyLCAwLCA4LCA2LCAxLCAyNDUsIDUyLCAzLCA1LCAxLCAyMDIsIDE1OSwgOCwgNSwgCisgICAgMSwgMjQyLCAwLCA4LCA2LCAxLCAyMzksIDc2LCAzLCAxNjUsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDE2NSwgOCwgNiwgMSwgCisgICAgMjM1LCAyNTIsIDgsIDYsIDEsIDIwMywgMTk5LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIAorICAgIDIyMywgMTY0LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDIxNSwgMjUzLCA4NywgMjUsIDE2NSwgOCwgNSwgMSwgCisgICAgMzQsIDMsIDIxNSwgMjUzLCA4NywgMjUsIDE2NSwgOCwgNiwgMSwgMjUxLCAxMTAsIDMsIDE2NSwgOCwgNSwgMSwgMjUxLCAKKyAgICAxMTAsIDMsIDE2NSwgOCwgNiwgMSwgMTU4LCAzLCAyMTEsIDMyLCAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIDIxMSwgMzIsIAorICAgIDI1LCAxNjUsIDgsIDYsIDEsIDM0LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDM0LCAzLCA1MiwgMjM3LCAyNTMsIDgsIAorICAgIDYsIDEsIDM0LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDM0LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIAorICAgIDYsIDEsIDE4OCwgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAxODgsIDMsIDUyLCAyMzcsIDI1MywgOCwgNiwgMSwgMTg4LCAKKyAgICAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDE4OCwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA2LCAxLCAyMzUsIAorICAgIDIwNiwgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAyMzUsIAorICAgIDIwNiwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCAKKyAgICA2LCAxLCAxNTgsIDMsIDUyLCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgCisgICAgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAxNTgsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNiwgMSwgMjE3LCAKKyAgICAxLCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDIxNywgMSwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAyMTcsIDEsIDMsIAorICAgIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMjE3LCAxLCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDYsIDEsIDEwNiwgCisgICAgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAxMDYsIDMsIDUyLCAyMzcsIDI1MywgOCwgNiwgMSwgMTA2LCAzLCAyMzAsIAorICAgIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDEwNiwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAKKyAgICAyNDUsIDIzNCwgNTYsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDI0NSwgMjM0LCA1NiwgOCwgNiwgMSwgMjEwLCA3MCwgMywgCisgICAgMjQ1LCAyMzQsIDU2LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDUsIDIzNCwgNTYsIDgsIDYsIDEsIDIwMiwgMjM0LCA4LCA1LCAKKyAgICAxLCAyMDIsIDIzNCwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyNDcsIAorICAgIDI5LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMTYzLCA1MCwgMjI3LCAyMTAsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIDI0NSwgCisgICAgOTUsIDgsIDYsIDEsIDIxOSwgMjE2LCA4LCA1LCAxLCAyMTksIDIxNiwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDExMywgOCwgCisgICAgNSwgMSwgMjAyLCAxNjAsIDMsIDExMywgOCwgNiwgMSwgMzQsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMzQsIDMsIDcwLCA1NSwgCisgICAgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMTU4LCAzLCAKKyAgICAyNDMsIDIzMiwgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxNTgsIDMsIDI0MywgMjMyLCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIAorICAgIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDIyNSwgMTcwLCAKKyAgICA4LCA2LCAxLCAxNTgsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMTU4LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDE1OCwgMywgNzAsIAorICAgIDg3LCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgNzAsIDg3LCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDIwMywgCisgICAgMTI1LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgCisgICAgMjQ1LCA5NSwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDI0NSwgOTUsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDI0NSwgOTUsIDgsIAorICAgIDUsIDEsIDI0MywgODQsIDIzMCwgMTg0LCA4LCA1LCAxLCAyNDQsIDEzMCwgMjQzLCAxOTEsIDgsIDUsIDEsIDIxNywgNjYsIAorICAgIDI0MywgMTkxLCA4LCA2LCAxLCAzNCwgMywgOTUsIDgsIDYsIDEsIDI0NywgMTI2LCAzLCA5NSwgOCwgNSwgMSwgMjQ3LCAKKyAgICAxMjYsIDMsIDk1LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTQyLCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAyNDMsIDIyOCwgOTUsIAorICAgIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDIxMCwgMTY5LCAyMDksIDI0OCwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDIxMCwgMTY5LCAKKyAgICAyMDksIDI0OCwgOCwgNiwgMSwgMjM4LCA0NSwgMjExLCA2MSwgOCwgNSwgMSwgMjM4LCA0NSwgMjExLCA2MSwgOCwgNiwgMSwgCisgICAgNjYsIDMsIDk1LCA4LCA2LCAxLCAxMDYsIDE0MiwgOCwgNiwgMSwgMjA3LCAxNzQsIDIwNiwgMTY0LCA4LCA2LCAxLCAxODgsIAorICAgIDMsIDk1LCA4LCA1LCAxLCAxODgsIDMsIDk1LCA4LCA2LCAxLCAyMzAsIDE4NSwgMywgOTUsIDgsIDUsIDEsIDIzMCwgMTg1LCAKKyAgICAzLCA5NSwgOCwgNiwgMSwgNSwgMjE3LCAxMzUsIDMsIDIzNiwgMTE2LCAyMDksIDI0OCwgOCwgNSwgMSwgMjE3LCAxMzUsIDMsIAorICAgIDIzNiwgMTE2LCAyMDksIDI0OCwgOCwgNiwgMSwgMjE3LCAxLCAzLCA5NSwgOCwgNSwgMSwgMjE3LCAxLCAzLCA5NSwgOCwgNiwgCisgICAgMSwgMjAzLCAxMjUsIDMsIDk1LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgOTUsIDgsIDUsIDEsIDIwNywgMTc0LCA2MywgOCwgCisgICAgNSwgMSwgMjUxLCAyLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjUxLCAyLCA4LCA1LCAxLCA2NiwgMywgMTEzLCA4LCA1LCAxLCAKKyAgICAxNzEsIDc4LCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgMjA5LCAyNDgsIDgsIAorICAgIDUsIDEsIDI0NSwgNTIsIDMsIDExMywgOCwgNSwgMSwgMjE2LCA3MywgNzQsIDgsIDUsIDEsIDIxNCwgMTkyLCA4LCA1LCAxLCAKKyAgICAyMTQsIDE5MywgMywgMTEzLCA4LCA1LCAxLCAxNzEsIDc0LCA4LCA1LCAxLCAyMTYsIDczLCAxNzEsIDc0LCA4LCA1LCAxLCAKKyAgICAyMTYsIDczLCAxNzEsIDE4OCwgMywgMTEzLCA4LCA1LCAxLCAyNDYsIDE2LCAyMTYsIDczLCAxNzEsIDc0LCA4LCA1LCAxLCAKKyAgICAyNDMsIDg0LCAyMzAsIDE4NSwgMywgOTUsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDExMywgOCwgNSwgMSwgMTMyLCAyMzksIAorICAgIDc1LCA4LCAxLCA1LCA2LCAyMzksIDc1LCA4LCA1LCAxLCAyMzgsIDIzNSwgOCwgNSwgMSwgMjE2LCAxODIsIDIzNiwgNTMsIAorICAgIDgsIDUsIDEsIDIwNywgMTc0LCAyMzcsIDE3MSwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDExMywgOCwgNSwgMSwgMjM3LCAzMiwgCisgICAgMywgMTEzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgOTUsIDgsIDUsIDEsIDIzMCwgMjMwLCA4LCAxLCA1LCA2LCA3NSwgOCwgCisgICAgNSwgMSwgMjI4LCAxMzEsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDgsIDEyNCwgOCwgNSwgCisgICAgMSwgMjI4LCAxMzEsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjI3LCAxNjQsIDgsIDUsIDEsIDIwNywgMTc0LCAyMjYsIAorICAgIDE4NSwgOCwgNSwgMSwgMjA3LCAxNzQsIDIyNiwgMTg2LCAzLCAxNjMsIDIyNywgMjEwLCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgCisgICAgMTEzLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgNDksIDExMywgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDIxNiwgNzksIDExMywgCisgICAgOCwgMSwgNSwgNiwgMjIzLCAxNjMsIDgsIDUsIDEsIDI0OCwgMjI1LCA3OCwgOCwgMSwgNSwgNiwgMjIwLCA3MywgOCwgNSwgCisgICAgMSwgMjQ2LCAxNiwgMjIwLCAzNiwgOCwgNSwgMSwgMjE4LCAxOTIsIDgsIDUsIDEsIDIwNywgMTc0LCAxNDYsIDgsIDUsIDEsIAorICAgIDIwNywgMTc0LCAyMTcsIDEsIDMsIDE2MywgMjI3LCAyMTAsIDgsIDUsIDEsIDIwNywgMTc0LCAyMTcsIDEsIDMsIDExMywgOCwgCisgICAgNSwgMSwgMjE3LCAxLCAzLCAxNjMsIDIyNywgMjEwLCA4LCA1LCAxLCAyMTcsIDEsIDMsIDIwOSwgMjQ4LCA4LCA1LCAxLCAKKyAgICAyMTcsIDEsIDMsIDIzOSwgMjQwLCA4LCA1LCAxLCAyMTYsIDczLCAyMTcsIDEsIDMsIDIzOSwgMjQwLCA4LCAxLCA1LCA2LCAKKyAgICAxNDYsIDgsIDEsIDUsIDYsIDIzMCwgMjM5LCAxNDYsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDExMywgOCwgNSwgMSwgMjQxLCAKKyAgICA3LCA4LCA1LCAxLCAyNDMsIDg0LCAyMzAsIDE4NSwgMywgMjExLCAzMiwgMjUsIDExMywgOCwgNSwgMSwgMjExLCAxNzQsIAorICAgIDIxNiwgNzMsIDI0MSwgNywgOCwgNSwgMSwgMjQxLCA4LCAzLCAyNDUsIDk1LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjEwLCA2OSwgCisgICAgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAxMDYsIDE0MiwgOCwgNSwgMSwgMjA2LCAyMTYsIAorICAgIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCAxMTMsIDgsIDUsIDEsIDIwNywgMTc0LCAyMDYsIDE2NCwgOCwgNSwgMSwgMjA3LCAKKyAgICAxNzQsIDIwNCwgMTQ0LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjAzLCAxMjQsIDgsIDEsIDUsIDYsIDIwMywgMTI0LCA4LCA1LCAKKyAgICAxLCAyMDIsIDE2MCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgCisgICAgMjQwLCAxNzcsIDgsIDUsIDEsIDI0MCwgMTc4LCAzLCAyNDUsIDk1LCA4LCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA4LCAxLCAKKyAgICAyMTgsIDE5OSwgMjA1LCAxODYsIDIzOSwgMTI2LCA4LCAxLCAyMzAsIDIzOSwgMjM4LCA0NSwgMjExLCA2MSwgOCwgMSwgCisgICAgMjExLCA0MCwgMjQ3LCAxMjUsIDgsIDEsIDI0OCwgNzAsIDI0NiwgMjcsIDgsIDEsIDUsIDYsIDI0OSwgMjU1LCA4LCA1LCAxLCAKKyAgICAyNDYsIDE2LCAxNzEsIDc0LCA4LCAxLCA1LCA2LCAyMzksIDc2LCAzLCAxMTMsIDgsIDEsIDUsIDYsIDIzNywgMTcxLCA4LCAKKyAgICA1LCAxLCAyMzAsIDE4NSwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDIwNywgMTc0LCAyMzAsIDU0LCA4LCAxLCA1LCA2LCAxNTksIAorICAgIDgsIDUsIDEsIDIxNywgMTM1LCAzLCAxMTMsIDgsIDEsIDIzOCwgNDUsIDIxMSwgNjIsIDMsIDk1LCA4LCAxLCAyMTYsIDczLCAKKyAgICAyMzgsIDQ1LCAyMTEsIDYyLCAzLCA5NSwgOCwgNSwgMSwgMjQyLCAxLCAyNDMsIDE5MSwgOCwgNSwgMSwgMjQ0LCAzLCAyNDMsIAorICAgIDE5MSwgOCwgNSwgMSwgMjQyLCAxLCAyNDMsIDE5MiwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgMjA4LCAyMiwgMjQzLCAxOTEsIAorICAgIDgsIDUsIDEsIDIwOSwgMTM3LCAyNDMsIDE5MSwgOCwgNSwgMSwgMjA5LCAxOTQsIDI0MywgMTkyLCAzLCAyNDUsIDk1LCA4LCAKKyAgICA1LCAxLCAyNDAsIDM5LCAyNDMsIDE5MSwgOCwgNSwgMSwgMjI2LCAyNDEsIDI0MywgMTkxLCA4LCA1LCAxLCAyMjYsIDE4NywgCisgICAgMjQzLCAxOTEsIDgsIDEsIDI0OCwgNzAsIDIxOCwgMjQ1LCA4LCAxLCAyNDgsIDc4LCAyMTgsIDI0NSwgOCwgNSwgMSwgMjA3LCAKKyAgICAxNzQsIDIzNywgMTcyLCAzLCAyMzksIDI0MCwgOCwgNSwgMSwgMjA3LCAxNzQsIDIzNywgMTcyLCAzLCAyMzksIDI0MSwgMjUsIAorICAgIDIwOSwgMjQ4LCA2NSwgMSwgNSwgMjM3LCAxNzEsIDY1LCAxLCA1LCAyMzcsIDE3MiwgMywgMTEzLCA2NSwgMSwgNSwgMjMwLCAKKyAgICAxODQsIDY1LCAxLCA1LCAxNDYsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMTQ2LCA2NSwgMSwgNSwgMjA3LCAxNzQsIDIxNywgMSwgCisgICAgMywgMTEzLCA2NSwgMSwgNSwgNiwgMjMwLCAyMzksIDE0NiwgNjUsIDEsIDUsIDIwNCwgMTQ0LCA2NSwgMSwgNSwgMjAzLCAKKyAgICAxMjQsIDY1LCAxLCAyMTcsIDIzNiwgNjUsIDEsIDUyLCAyMTcsIDIzNiwgNjUsIDEsIDIwNywgMTc0LCAyNDUsIDIzMywgNjUsIAorICAgIDEsIDI1MCwgMTYwLCA2NSwgMSwgMjE2LCA3MywgMjQ1LCAyMzMsIDY1LCAxLCA1MCwgMTYyLCAyMTUsIDI1MiwgNjUsIDEsIAorICAgIDQ5LCAxNjIsIDIxNSwgMjUyLCA2NSwgMSwgMjM4LCA0NSwgMjExLCA2MSwgNjUsIDEsIDIxNiwgNzMsIDIzOCwgNDUsIDIxMSwgCisgICAgNjEsIDY1LCAxLCA0OSwgMjUwLCA5NCwgNjUsIDEsIDUwLCAyNTAsIDk0LCA2NSwgMSwgMTEyLCAyNTAsIDk0LCA2NSwgMSwgCisgICAgMTIxLCAyNTAsIDk0LCA2NSwgMSwgMjQ2LCA1MywgMjUxLCAxMzgsIDI0NywgMjksIDY1LCAxLCA4MCwgMjI3LCAxMTQsIDY1LCAKKyAgICAxLCAyMjUsIDE3MCwgNjUsIDEsIDI1MSwgMTI2LCAyNTEsIDEzOCwgNjUsIDEsIDIzNywgMjU0LCAyNTEsIDEzOCwgNjUsIDEsIAorICAgIDEyNCwgODAsIDIyNywgMTE0LCA2NSwgMSwgMTI0LCAyMjUsIDE3MCwgNjUsIDEsIDEyNCwgMjM3LCAyNTQsIDI1MSwgMTM4LCAKKyAgICA2NSwgMSwgMTI0LCAyNTEsIDEyNiwgMjUxLCAxMzgsIDY1LCAxLCAyMDgsIDgyLCAyNDUsIDI0MiwgNjUsIDEsIDE2MiwgCisgICAgMjA4LCA4MiwgMjQ1LCAyNDIsIDY1LCAxLCAyNDYsIDIxNiwgNTAsIDE2MiwgMjE1LCAyNTIsIDY1LCAxLCAyNDYsIDIxNiwgCisgICAgNDksIDE2MiwgMjE1LCAyNTIsIDY1LCAxLCAxMTIsIDIxMCwgMywgNjUsIDEsIDEyMSwgMjEwLCAzLCA2NSwgMSwgOTEsIDU0LCAKKyAgICA2NSwgMSwgMjI0LCAxMDMsIDU0LCAyNDcsIDIxNCwgNzAsIDU1LCAyMTUsIDI1MywgNTUsIDIyMCwgNjIsIDUsIDIwOCwgCisgICAgMjI3LCA1MiwgMjUxLCAxMjYsIDI1MSwgMTM4LCA2NSwgMSwgMjE2LCA1OCwgMTEzLCA2NSwgMSwgMjQ1LCAxMzEsIDI1MSwgCisgICAgMTM4LCA2NSwgMSwgNSwgMjM4LCAyMzUsIDY1LCAxLCA1LCAxNTksIDY1LCAxLCA1LCAxOTQsIDY1LCAxLCA1LCAyMDMsIAorICAgIDE5NiwgNjUsIDEsIDUsIDIxNiwgNzMsIDIzOCwgNDUsIDIxMSwgNjEsIDY1LCAxLCAyNDAsIDE5OCwgMTQzLCAxNDIsIDY1LCAKKyAgICAxLCAxMzgsIDE0MywgMTQyLCA2NSwgMSwgMjI0LCAxNTAsIDE0MywgMTQyLCA2NSwgMSwgMTI0LCAxNDMsIDE0MiwgNjUsIDEsIAorICAgIDI0MCwgMTk3LCAxNDMsIDE0MiwgNjUsIDEsIDIwMywgMSwgMjQ0LCAyNywgMTQzLCA4MiwgNjUsIDEsIDIwMywgNzcsIDI0NCwgCisgICAgMjcsIDE0MywgODIsIDY1LCAxLCAyMDUsIDE4NCwgNjUsIDEsIDIwNiwgMjUxLCA2NSwgMSwgNTIsIDI1MCwgMTYwLCA2NSwgCisgICAgMSwgMTI0LCAxMjEsIDI1MCwgOTQsIDY1LCAxLCAxMjQsIDExMiwgMjUwLCA5NCwgNjUsIDEsIDEyNCwgNDksIDI1MCwgOTQsIAorICAgIDY1LCAxLCAxMjQsIDUwLCAyNTAsIDk0LCA2NSwgMSwgMTI0LCAyMTUsIDI1MiwgNjUsIDEsIDEwMSwgMjM3LCAyNTQsIDI1MSwgCisgICAgMTM4LCA2NSwgMSwgMTAxLCA1MiwgMjM3LCAyNTQsIDI1MSwgMTM4LCA2NSwgMSwgMTAxLCA1MiwgMjUxLCAxMjYsIDI1MSwgCisgICAgMTM4LCA2NSwgMSwgMTI0LCAyMDgsIDIyNywgNjUsIDEsIDIxNiwgMTg4LCAyNDUsIDI0MiwgNjUsIDEsIDI0OCwgMTQyLCAKKyAgICAxMzgsIDIwOCwgMTYxLCA2NSwgMSwgMjQxLCA4NCwgMTM4LCAyMDgsIDE2MSwgNjUsIDEsIDI0OCwgMTQyLCAxMjQsIDIwOCwgCisgICAgMTYxLCA2NSwgMSwgMjQxLCA4NCwgMTI0LCAyMDgsIDE2MSwgNjUsIDEsIDIxMywgMzQsIDY1LCAxLCAxNzEsIDIxMywgMzQsIAorICAgIDY1LCAxLCAxMjQsIDQ5LCA0NywgMzksIDIzNywgMjU0LCAyNTEsIDEzOCwgMzksIDI1MSwgMTI2LCAyNTEsIDEzOCwgMzksIAorICAgIDI0NiwgNTMsIDI1MSwgMTM4LCAzOSwgMjA4LCAyMjcsIDM5LCAyMjUsIDE3MCwgMzksIDIxOSwgMTk4LCAzOSwgMjQ3LCAKKyAgICAyMTQsIDM5LCA3MCwgNTUsIDM5LCAyNDMsIDIzMSwgMzksIDIzNiwgMTE2LCA1NSwgMzksIDIxNSwgMjUzLCA1NSwgMzksIAorICAgIDUyLCAyNTEsIDEyNiwgMjUxLCAxMzgsIDM5LCAyNDcsIDI5LCAzOSwgODAsIDIyNywgMTE1LCA1NSwgMzksIDUyLCA4MCwgCisgICAgMjI3LCAxMTUsIDU1LCAzOSwgNTIsIDIzNywgMjU0LCAyNTEsIDEzOCwgMzksIDI0NywgNTIsIDM5LCAyMzAsIDIzOSwgMjQ3LCAKKyAgICAyMTQsIDM5LCAyMDcsIDE3NCwgMjQ1LCAyMzQsIDU1LCAzOSwgMjQ1LCAyMzQsIDU1LCAzOSwgMjE2LCA3MywgMjQ1LCAyMzQsIAorICAgIDU1LCAzOSwgMjQ1LCAyMzQsIDg3LCAyMTYsIDE2LCAzOSwgMjM3LCAyNTQsIDI1MSwgMTM5LCA1NiwgMzksIDI1MSwgMTI2LCAKKyAgICAyNTEsIDEzOSwgNTYsIDM5LCA0OSwgMjEwLCA0LCA1NiwgMzksIDUwLCAyMTAsIDQsIDU2LCAzOSwgNDksIDI1MCwgMjE4LCAKKyAgICA1NSwgMzksIDIzNiwgNTMsIDM5LCA0OSwgMTYyLCAyMTUsIDI1MywgNTYsIDM5LCAxMTIsIDIxMCwgNCwgNTYsIDM5LCAxMjEsIAorICAgIDIxMCwgNCwgNTYsIDM5LCA5MSwgMiwgNTYsIDM5LCAyMjQsIDEwMywgMiwgNTYsIDM5LCAyMTksIDE0MCwgMjM2LCAxMTYsIAorICAgIDU2LCAzOSwgMjE2LCA3OSwgMjM2LCAxMTYsIDU2LCAzOSwgNzAsIDU2LCAzOSwgMjQzLCAyMzIsIDU2LCAzOSwgMjE1LCAKKyAgICAyNTMsIDU2LCAzOSwgMjQ1LCAyMzQsIDU2LCAzOSwgMjQ2LCAyMzEsIDM5LCAyMjAsIDYyLCAzOSwgODAsIDIyNywgMTE1LCAKKyAgICA1NiwgMzksIDI0NywgMjA4LCA1NiwgMzksIDIzMCwgMjM5LCA1MiwgMjUwLCAxMjcsIDU2LCAzOSwgMjQ3LCAzMCwgNTYsIAorICAgIDM5LCAyNDYsIDUzLCAyNTEsIDEzOSwgNTYsIDM5LCAyNDcsIDIxNSwgNTYsIDM5LCAyMzAsIDIzOSwgMjQ3LCAyMTUsIDU2LCAKKyAgICAzOSwgMjA4LCAyMjgsIDU2LCAzOSwgMjI1LCAxNzEsIDU2LCAzOSwgMTI0LCAyMjcsIDExNCwgMzksIDUyLCAxMjQsIDIyNywgCisgICAgMTE0LCAzOSwgMjA4LCAyMjgsIDIxOSwgMTk5LCAzOSwgMjEyLCAyMjgsIDIxMSwgMzIsIDIxOSwgMTk5LCAzOSwgMTYzLCAKKyAgICAyMTEsIDMyLCAyMTksIDE5OSwgMzksIDIxMiwgMjI4LCAyMTIsIDEsIDIxOSwgMTk5LCAzOSwgMTYzLCAyMTIsIDEsIDIxOSwgCisgICAgMTk5LCAzOSwgNTAsIDE2MiwgMjE1LCAyNTMsIDU2LCAzOSwgMjMwLCAyMzksIDI0NywgMjA4LCA1NiwgMzksIDUxLCA1NiwgCisgICAgMzksIDIxNCwgMTc2LCA1NiwgMzksIDIwMywgMTk3LCA1NSwgMzksIDgwLCAyMDgsIDIyNywgMzksIDUyLCAyMTksIDE5OCwgCisgICAgMzksIDIzNywgMjU0LCAxNDMsIDgyLCAzOSwgMjUxLCAxMjYsIDE0MywgODIsIDM5LCAzMCwgMjE4LCAyMzksIDM5LCAzMCwgCisgICAgMjI4LCAyNTIsIDM5LCAzMCwgMjQzLCAyMjUsIDIwOCwgMTQ5LCAzOSwgMzAsIDIwMiwgMjIxLCAzOSwgMjQ3LCAyMDgsIDU1LCAKKyAgICAzOSwgMjQxLCAzNSwgMiwgNTYsIDM5LCA1MiwgODAsIDIyNywgMTE1LCA1NiwgMzksIDQ5LCAyNTAsIDIxOCwgNTYsIDM5LCAKKyAgICAyMjEsIDE2NiwgMjA4LCAyMjgsIDU1LCAzOSwgMjM2LCAxMjIsIDU1LCAzOSwgMjUxLCA3LCAxNTYsIDIwOCwgMTczLCA1NSwgCisgICAgMzksIDQ5LCA1MCwgNTMsIDU2LCAzOSwgMTc3LCA1MywgNTYsIDM5LCAyMzgsIDQsIDIzMCwgOTYsIDM5LCA1MCwgMjUwLCAKKyAgICA5NSwgNTUsIDM5LCA0OSwgMTYyLCAyMTUsIDI1MywgNTUsIDM5LCAyNDAsIDM2LCAzOSwgMjAzLCAxOTcsIDU2LCAzOSwgNDksIAorICAgIDI1MCwgOTUsIDU2LCAzOSwgNTAsIDI1MCwgOTUsIDU2LCAzOSwgNTAsIDI1MCwgOTUsIDI1LCAxMTIsIDI1MCwgOTUsIDU2LCAKKyAgICAzOSwgNTAsIDE2MiwgMjE1LCAyNTMsIDU1LCAzOSwgNzAsIDg3LCAyMTYsIDE2LCAzOSwgMjUwLCA2MCwgNTYsIDM5LCA1MiwgCisgICAgMjE1LCAyNTMsIDU2LCAzOSwgMjAyLCAzMCwgNTUsIDM5LCA1MiwgMjQ3LCAyMTUsIDU2LCAzOSwgNTIsIDI0NywgMjE0LCAKKyAgICAzOSwgNTIsIDIyNSwgMTcwLCAzOSwgNTIsIDIyNSwgMTcxLCA1NiwgMzksIDUyLCAyMDgsIDIyNywgMzksIDUyLCAyMzAsIAorICAgIDIzOSwgMjQ3LCAyMTQsIDM5LCA1MiwgODYsIDUzLCA1NiwgMzksIDgsIDUsIDEsIDYzLCAzOSwgOCwgNSwgMSwgNzQsIDM5LCAKKyAgICA4LCA1LCAxLCA3NSwgMzksIDgsIDUsIDEsIDc4LCAzOSwgOCwgNSwgMSwgNjgsIDM5LCA4LCA1LCAxLCAyNDcsIDEyNSwgMzksIAorICAgIDgsIDUsIDEsIDI0NSwgNTEsIDM5LCA4LCA1LCAxLCAyMzcsIDE3MSwgMzksIDgsIDUsIDEsIDIyNiwgMTg1LCAzOSwgOCwgNSwgCisgICAgMSwgMTQ2LCAzOSwgOCwgNSwgMSwgMjEwLCA2OSwgMzksIDgsIDUsIDEsIDIwNiwgMTY0LCAzOSwgOCwgNSwgMSwgMjAzLCAKKyAgICAxOTYsIDMwLCA2LCAxLCAyMzcsIDIwLCAzMCwgNSwgMSwgMjM3LCAyMCwgMzAsIDYsIDEsIDI1MCwgMTI2LCAyMTQsIDI0NiwgCisgICAgMzAsIDUsIDEsIDI1MCwgMTI2LCAyMTQsIDI0NiwgMzAsIDIyMSwgNDQsIDU0LCAzMCwgMjI2LCAyNTEsIDIyMSwgNDQsIDU0LCAKKyAgICAzMCwgNiwgMSwgMjE5LCAxMjYsIDI0MywgMTk5LCAzMCwgNSwgMSwgMjE5LCAxMjYsIDI0MywgMTk5LCAzMCwgMjAyLCAyMjEsIAorICAgIDMwLCA1LCAyMTYsIDczLCAyMjYsIDIyMSwgMjEyLCAxNDUsIDk3LCAzMCwgNSwgMjQyLCA4MywgMjI2LCAyMjEsIDIxMiwgCisgICAgMTQ1LCA5NywgMzAsIDUsIDIxNiwgNzMsIDI0MiwgODMsIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCAyMTcsIDQ3LCAKKyAgICA4MiwgMzAsIDYsIDEsIDIwMiwgMjI3LCAzMCwgMjA4LCAxNDksIDMwLCAyNDMsIDIyNSwgMjA4LCAxNDksIDMwLCA2LCAxLCAKKyAgICAyNTEsIDMsIDMsIDIwOCwgMTQ5LCAzMCwgMjUwLCAyMDMsIDIwOSwgMTYzLCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjA4LCAKKyAgICAxNDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjA4LCAxNDksIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjA4LCAxNDksIAorICAgIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyMDgsIDE0OSwgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyMDgsIDE0OSwgMzAsIDYsIAorICAgIDEsIDIyMCwgMzcsIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0MywgMjI1LCAyNSwgMjA4LCAxNDksIAorICAgIDMwLCA2LCAxLCAyNTEsIDIsIDMwLCA2LCAxLCAyNDgsIDEwNiwgMzAsIDYsIDEsIDIzOCwgMjM1LCAzMCwgNiwgMSwgMjQ0LCAKKyAgICAzNywgMzAsIDYsIDEsIDI0MSwgMzcsIDMwLCA2LCAxLCAyMDIsIDgzLCAzMCwgNiwgMSwgMjQwLCAyNDgsIDMwLCA2LCAxLCAKKyAgICAyMDksIDc0LCAzMCwgNiwgMSwgMjMwLCAyMzAsIDMwLCA2LCAxLCAyMjksIDI0NywgMzAsIDYsIDEsIDIyOCwgMjQsIDMwLCAKKyAgICA2LCAxLCAyMjMsIDI0NiwgMzAsIDYsIDEsIDIyMSwgODQsIDMwLCA2LCAxLCAyMDMsIDE3MCwgMzAsIDYsIDEsIDIyMCwgMzQsIAorICAgIDMwLCA2LCAxLCAyMTgsIDE2NywgMzAsIDYsIDEsIDIxNiwgNTksIDMwLCA2LCAxLCAyMTIsIDE0NCwgMzAsIDYsIDEsIDIwOSwgCisgICAgMjA3LCAzMCwgNiwgMSwgMjA2LCAyMTYsIDMwLCA2LCAxLCAyMTgsIDE5MiwgMzAsIDYsIDEsIDI0NiwgMTQyLCAzMCwgNiwgCisgICAgMSwgMjE3LCAyMDIsIDMwLCA2LCAxLCAyMjAsIDM2LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDI0MywgMjI0LCAzMCwgNiwgCisgICAgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI0LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMDgsIDE0OSwgMzAsIDUsIDEsIDI0MSwgCisgICAgMzgsIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIAorICAgIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI1LCAyNSwgMjA4LCAxNDksIDMwLCA1LCAxLCAyNTEsIAorICAgIDIsIDMwLCA1LCAxLCAyNDgsIDEwNiwgMzAsIDUsIDEsIDIzOCwgMjM1LCAzMCwgNSwgMSwgMjQ0LCAzNywgMzAsIDUsIDEsIAorICAgIDI0MSwgMzcsIDMwLCA1LCAxLCAyMDIsIDgzLCAzMCwgNSwgMSwgMjQwLCAyNDgsIDMwLCA1LCAxLCAyMDksIDc0LCAzMCwgNSwgCisgICAgMSwgMjMwLCAyMzAsIDMwLCA1LCAxLCAyMjksIDI0NywgMzAsIDUsIDEsIDIyOCwgMjQsIDMwLCA1LCAxLCAyMjMsIDI0NiwgCisgICAgMzAsIDUsIDEsIDIyMSwgODQsIDMwLCA1LCAxLCAyMDMsIDE3MCwgMzAsIDUsIDEsIDIyMCwgMzQsIDMwLCA1LCAxLCAyMTgsIAorICAgIDE2NywgMzAsIDUsIDEsIDIxNiwgNTksIDMwLCA1LCAxLCA0NiwgMjEyLCAxNDQsIDMwLCA1LCAxLCAyMTIsIDE0NCwgMzAsIAorICAgIDUsIDEsIDIwOSwgMjA3LCAzMCwgNSwgMSwgMjA2LCAyMTYsIDMwLCA1LCAxLCAyMTgsIDE5MiwgMzAsIDUsIDEsIDI0NiwgCisgICAgMTQyLCAzMCwgNSwgMSwgMjE3LCAyMDIsIDMwLCA1LCAxLCAyMjAsIDM2LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0MywgCisgICAgMjI0LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI0LCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjA4LCAxNDksIDMwLCAKKyAgICA1LCAxLCAyMDYsIDIxNywgMywgMjA4LCAxNDksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMDgsIDE0OSwgMzAsIDYsIDIzMCwgCisgICAgMTksIDk3LCAzMCwgMjQ4LCAxMDcsIDk3LCAzMCwgMjA5LCA3NSwgOTcsIDMwLCAyMDYsIDIxNywgMywgMjM2LCAxMTYsIDk3LCAKKyAgICAzMCwgMjA2LCAyMTcsIDMsIDI1MSwgMTI2LCAyNSwgMjM2LCAxMTYsIDk3LCAzMCwgMjA2LCAyMTcsIDMsIDI0MywgMjMyLCAKKyAgICAyNSwgMjM2LCAxMTYsIDk3LCAzMCwgMjE4LCAxOTMsIDk3LCAzMCwgMjE4LCAxNjgsIDk3LCAzMCwgMjMwLCAxOSwgOTcsIAorICAgIDMwLCAxLCAyNTAsIDEyNiwgMjI5LCAwLCAzMCwgNSwgMSwgMjUwLCAxMjYsIDIyOSwgMCwgMzAsIDEsIDIxMSwgNzEsIDMwLCAKKyAgICA1LCAxLCAyMTEsIDcxLCAzMCwgMSwgMjQzLCAxOTksIDMwLCA1LCAxLCAyNDMsIDE5OSwgMzAsIDEsIDIyOSwgMCwgMzAsIDUsIAorICAgIDEsIDIyOSwgMCwgMzAsIDEsIDIxNCwgMjQ2LCAzMCwgNSwgMSwgMjE0LCAyNDYsIDg0LCA2LCAxLCAyMTMsIDM1LCA4NCwgNSwgCisgICAgMSwgMjEzLCAzNSwgODQsIDYsIDEsIDI0MCwgNDUsIDg0LCA1LCAxLCAyNDAsIDQ1LCA4NCwgNiwgMSwgMjI5LCAxMjcsIDg0LCAKKyAgICA1LCAxLCAyMjksIDEyNywgODQsIDYsIDEsIDIzNiwgMTA3LCA4NCwgNSwgMSwgMjM2LCAxMDcsIDg0LCA2LCAxLCAyMzgsIAorICAgIDIzMCwgODQsIDUsIDEsIDIzOCwgMjMwLCA4NCwgNiwgMSwgMjEzLCAxLCA4NCwgNSwgMSwgMjEzLCAxLCA4NCwgNiwgMSwgCisgICAgMjQ0LCA1MiwgODQsIDUsIDEsIDI0NCwgNTIsIDMwLCAyMjksIDI0OCwgOTcsIDMwLCAyMTYsIDYwLCA5NywgMzAsIDIyNiwgCisgICAgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCAxLCAyMDIsIDIyNywgMzAsIDYsIDIwOSwgNzUsIDk3LCAzMCwgMjI2LCAyMjEsIAorICAgIDI0MSwgMzgsIDk3LCAzMCwgMjE2LCA3MywgMjI2LCAyMjEsIDI0MSwgMzgsIDk3LCAzMCwgNiwgMSwgMjEyLCAyNDIsIDMwLCAKKyAgICA1LCAxLCAyMTIsIDI0MiwgMzAsIDYsIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCA2LCAxLCAyMTQsIDI0MywgMzAsIDUsIAorICAgIDEsIDIxNCwgMjQzLCAzMCwgMjE2LCA2MCwgMywgMjExLCAzMiwgOTcsIDMwLCA2LCAyMTYsIDczLCAyMjYsIDIyMSwgMjEyLCAKKyAgICAxNDUsIDk3LCAzMCwgNiwgMjQyLCA4MywgMjI2LCAyMjEsIDIxMiwgMTQ1LCA5NywgMzAsIDYsIDIxNiwgNzMsIDI0MiwgODMsIAorICAgIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDM2LCA2LCAxLCAyMzEsIDExMSwgMywgMjM3LCAyNTMsIDM2LCA2LCAxLCAyMzAsIAorICAgIDIzNCwgMzYsIDYsIDEsIDI0MywgMTMwLCAzNiwgNiwgMSwgMjM4LCA1MiwgMzYsIDYsIDEsIDIwNywgMTEsIDIzMSwgMTEwLCAKKyAgICAzNiwgNiwgMSwgMjQxLCAyNTIsIDM2LCA2LCAxLCAyNDcsIDEzNSwgNzUsIDM2LCA2LCAxLCAyMDMsIDExLCAzNiwgNiwgMSwgCisgICAgMjMwLCAxNjEsIDM2LCA2LCAxLCAyMjcsIDgwLCAzNiwgNiwgMSwgMjIyLCA0MSwgMzYsIDYsIDEsIDIwOCwgOCwgMzYsIDYsIAorICAgIDEsIDIyOSwgNDksIDM2LCA2LCAxLCAyMzUsIDIwNiwgMywgMjM3LCAyNTMsIDM2LCA2LCAxLCAyMTIsIDIyOCwgNjgsIDM2LCAKKyAgICA2LCAxLCAyNDEsIDI0OCwgMzYsIDYsIDEsIDYzLCAzNiwgNiwgMSwgMjQ4LCAxNjIsIDM2LCA2LCAxLCAyMDYsIDU1LCAzNiwgCisgICAgNiwgMSwgMjM4LCAxMDUsIDM2LCA2LCAxLCAyNDQsIDc1LCAzNiwgNiwgMSwgMjMxLCAxMTAsIDM2LCA2LCAxLCAyMDIsIDcxLCAKKyAgICAzNiwgNiwgMSwgMjAyLCA5MiwgMzYsIDYsIDEsIDc1LCAzNiwgNiwgMSwgMjEyLCAyMjgsIDc1LCAzNiwgNiwgMSwgMTczLCAKKyAgICAzNiwgNiwgMSwgMjQxLCAxMjIsIDM2LCA2LCAxLCAyNDEsIDEwMywgMzYsIDYsIDEsIDI0MSwgOTIsIDM2LCA2LCAxLCA3OCwgCisgICAgMzYsIDYsIDEsIDIxOSwgMzQsIDM2LCA2LCAxLCAyNDEsIDI4LCAzNiwgNiwgMSwgMjQxLCAxNywgMzYsIDYsIDEsIDIwOSwgCisgICAgMTg3LCAzNiwgNiwgMSwgNjgsIDM2LCA2LCAxLCAyNDEsIDE1NCwgMzYsIDYsIDEsIDE1MiwgMzYsIDYsIDEsIDIwOCwgMTQsIAorICAgIDM2LCA2LCAxLCAyNDYsIDE3MCwgMzYsIDYsIDEsIDIxMywgOTAsIDM2LCA2LCAxLCAyMTMsIDQ2LCAzNiwgNiwgMSwgMjM3LCAKKyAgICA5MSwgNTQsIDM2LCA2LCAxLCAyMDMsIDMwLCAzNiwgNiwgMSwgMjEyLCA3LCA1NCwgMzYsIDYsIDEsIDc0LCAzNiwgNiwgMSwgCisgICAgMjAyLCAyMTMsIDM2LCA2LCAxLCAxOTgsIDM2LCA1LCAxLCA2MywgMzYsIDUsIDEsIDI0OCwgMTYyLCAzNiwgNSwgMSwgMjA2LCAKKyAgICA1NSwgMzYsIDUsIDEsIDIzOCwgMTA1LCAzNiwgNSwgMSwgMjQ0LCA3NSwgMzYsIDUsIDEsIDIzMSwgMTEwLCAzNiwgNSwgMSwgCisgICAgMjAyLCA3MSwgMzYsIDUsIDEsIDIwMiwgOTIsIDM2LCA1LCAxLCA3NSwgMzYsIDUsIDEsIDIxMiwgMjI4LCA3NSwgMzYsIDUsIAorICAgIDEsIDE3MywgMzYsIDUsIDEsIDI0MSwgMTIyLCAzNiwgNSwgMSwgMjQxLCAxMDMsIDM2LCA1LCAxLCAyNDEsIDkyLCAzNiwgNSwgCisgICAgMSwgNzgsIDM2LCA1LCAxLCAyMTksIDM0LCAzNiwgNSwgMSwgMjQxLCAyOCwgMzYsIDUsIDEsIDI0MSwgMTcsIDM2LCA1LCAxLCAKKyAgICAyMDksIDE4NywgMzYsIDUsIDEsIDY4LCAzNiwgNSwgMSwgMjQxLCAxNTQsIDM2LCA1LCAxLCAxNTIsIDM2LCA1LCAxLCAyMDgsIAorICAgIDE0LCAzNiwgNSwgMSwgMjQ2LCAxNzAsIDM2LCA1LCAxLCAyMTMsIDkwLCAzNiwgNSwgMSwgMjEzLCA0NiwgMzYsIDUsIDEsIAorICAgIDIzNywgOTEsIDU0LCAzNiwgNSwgMSwgMjAzLCAzMCwgMzYsIDUsIDEsIDIxMiwgNywgNTQsIDM2LCA1LCAxLCA3NCwgMzYsIAorICAgIDUsIDEsIDIwMiwgMjEzLCAzNiwgNSwgMSwgMTk4LCAzNiwgNSwgMSwgMjMxLCAxMTEsIDMsIDIzNywgMjUzLCAzNiwgNSwgMSwgCisgICAgMjMwLCAyMzQsIDM2LCA1LCAxLCAyNDMsIDEzMCwgMzYsIDUsIDEsIDIzOCwgNTIsIDM2LCA1LCAxLCAyMDcsIDExLCAyMzEsIAorICAgIDExMCwgMzYsIDUsIDEsIDI0MSwgMjUyLCAzNiwgNSwgMSwgMjQ3LCAxMzUsIDc1LCAzNiwgNSwgMSwgMjAzLCAxMSwgMzYsIAorICAgIDUsIDEsIDIzMCwgMTYxLCAzNiwgNSwgMSwgMjI3LCA4MCwgMzYsIDUsIDEsIDIyMiwgNDEsIDM2LCA1LCAxLCAyMDgsIDgsIAorICAgIDM2LCA1LCAxLCAyMjksIDQ5LCAzNiwgNSwgMSwgMjM1LCAyMDYsIDMsIDIzNywgMjUzLCAzNiwgNSwgMSwgMjEyLCAyMjgsIAorICAgIDY4LCAzNiwgNSwgMSwgMjQxLCAyNDgsIDM2LCA2LCAxLCAyMjAsIDM2LCAzNiwgNSwgMSwgMjIwLCAzNiwgMzYsIDYsIDEsIAorICAgIDIwMywgNjYsIDM2LCA1LCAxLCAyMDMsIDY2LCAzNiwgNiwgMSwgMjMwLCAyMjgsIDc0LCAzNiwgNSwgMSwgMjMwLCAyMjgsIAorICAgIDc0LCAzNiwgNiwgMSwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA1LCAxLCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDYsIDEsIAorICAgIDIzMCwgMjI4LCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDUsIDEsIDIzMCwgMjI4LCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIAorICAgIDYsIDEsIDI0OCwgNzMsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjQ4LCA3MywgMjAyLCAxODMsIDM2LCA2LCAxLCAyMzAsIDIyOCwgCisgICAgMjQ4LCA3MywgMjAyLCAxODMsIDM2LCA1LCAxLCAyMzAsIDIyOCwgMjQ4LCA3MywgMjAyLCAxODMsIDM2LCA2LCAxLCAyMjgsIAorICAgIDIyNSwgMzYsIDUsIDEsIDIyOCwgMjI1LCAzNiwgNiwgMSwgMjE3LCAyMDIsIDM2LCA1LCAxLCAyMTcsIDIwMiwgMzYsIDYsIAorICAgIDEsIDIzOSwgMjM1LCAzNiwgNSwgMSwgMjM5LCAyMzUsIDM2LCA2LCAxLCAyMzAsIDE4NiwgMzYsIDUsIDEsIDIzMCwgMTg2LCAKKyAgICAzNiwgNiwgMSwgMjMwLCAxODcsIDMsIDUyLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDM2LCA1LCAxLCAyMzAsIDE4NywgMywgNTIsIAorICAgIDIzNywgMjU0LCAyNTEsIDEzOCwgMzYsIDYsIDEsIDIwNywgMTQsIDM2LCA1LCAxLCAyMDcsIDE0LCAzNiwgNiwgMSwgMjE1LCAKKyAgICAxOTEsIDIyMCwgMzYsIDM2LCA1LCAxLCAyMTUsIDE5MSwgMjIwLCAzNiwgMzYsIDYsIDEsIDIyMCwgMzcsIDMsIDIwOCwgCisgICAgMTk3LCAzNiwgNSwgMSwgMjIwLCAzNywgMywgMjA4LCAxOTcsIDM2LCA2LCAxLCAyMTksIDIyNCwgMzYsIDUsIDEsIDIxOSwgCisgICAgMjI0LCAzNiwgNiwgMSwgMjI5LCAwLCAzNiwgNSwgMSwgMjI5LCAwLCAzNiwgMjA5LCAzNSwgNTQsIDM5LCAzNiwgMjA4LCAKKyAgICAxOTcsIDM5LCAzNiwgMjE5LCAxNDEsIDM5LCAzNiwgMjQ0LCAxNDIsIDIxOCwgNzEsIDM5LCAzNiwgMjE3LCAxOTYsIDIxOCwgCisgICAgNzEsIDM5LCAzNiwgMjE4LCA1NSwgMzksIDM2LCAyMzYsIDEyLCAyMDksIDM1LCA1NCwgMzksIDM2LCAyMjQsIDExNCwgNTQsIAorICAgIDM2LCA2LCAxLCAyMTIsIDIyOCwgMjM1LCAyMDYsIDMsIDIwOSwgMjQ4LCAzNiwgNSwgMSwgMjEyLCAyMjgsIDIzNSwgMjA2LCAKKyAgICAzLCAyMDksIDI0OCwgMzYsIDYsIDEsIDIxMywgMTM5LCA1NCwgMzYsIDUsIDEsIDIxMywgMTM5LCA1NCwgMzYsIDYsIDEsIAorICAgIDI0MSwgMjksIDMsIDIwOCwgMjU0LCAzNiwgNSwgMSwgMjQxLCAyOSwgMywgMjA4LCAyNTQsIDM2LCA2LCAxLCAyMzgsIDEwNiwgCisgICAgMywgMjA2LCAyMTUsIDM2LCA1LCAxLCAyMzgsIDEwNiwgMywgMjA2LCAyMTUsIDM2LCA2LCAxLCAyMzgsIDEwNiwgMywgOTUsIAorICAgIDM2LCA1LCAxLCAyMzgsIDEwNiwgMywgOTUsIDM2LCA2LCAxLCAyMzgsIDEwNiwgMywgMTAxLCAxMTMsIDM2LCA1LCAxLCAKKyAgICAyMzgsIDEwNiwgMywgMTAxLCAxMTMsIDM2LCA2LCAxLCAyMDIsIDcyLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjAyLCA3MiwgCisgICAgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIDIwMiwgOTMsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMDIsIDkzLCAzLCAyNDQsIDIwLCAKKyAgICAzNiwgNiwgMSwgMjMwLCA0NCwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIzMCwgNDQsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAKKyAgICAyMzAsIDQ0LCAzLCA4MCwgOTUsIDM2LCA1LCAxLCAyMzAsIDQ0LCAzLCA4MCwgOTUsIDM2LCA2LCAxLCAyMzAsIDQ0LCAzLCAKKyAgICA5NSwgMzYsIDUsIDEsIDIzMCwgNDQsIDMsIDk1LCAzNiwgNiwgMSwgMjQ4LCAyMTQsIDE3MywgMzYsIDUsIDEsIDI0OCwgCisgICAgMjE0LCAxNzMsIDM2LCA2LCAxLCAyNDEsIDkzLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjQxLCA5MywgMywgMjQ0LCAyMCwgCisgICAgMzYsIDYsIDMyLCAyNDEsIDkzLCAyMzgsIDEwNSwgMzYsIDUsIDMyLCAyNDEsIDkzLCAyMzgsIDEwNSwgMzYsIDYsIDEsIAorICAgIDIxOSwgMzUsIDMsIDEwMSwgMTEzLCAzNiwgNSwgMSwgMjE5LCAzNSwgMywgMTAxLCAxMTMsIDM2LCA2LCAxLCAyNTEsIDE0NSwgCisgICAgMTUyLCAzNiwgNSwgMSwgMjUxLCAxNDUsIDE1MiwgMzYsIDYsIDEsIDI0MSwgMTgsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAKKyAgICAyNDEsIDE4LCAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjA5LCAxODgsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMDksIDE4OCwgCisgICAgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIDIxMSwgNTMsIDY4LCAzNiwgNSwgMSwgMjExLCA1MywgNjgsIDM2LCA2LCAxLCAyMTEsIAorICAgIDUzLCAxMDYsIDMsIDk1LCAzNiwgNSwgMSwgMjExLCA1MywgMTA2LCAzLCA5NSwgMzYsIDYsIDEsIDIzNywgMTYwLCAzLCAKKyAgICAyNDQsIDIwLCAzNiwgNSwgMSwgMjM3LCAxNjAsIDMsIDI0NCwgMjAsIDM2LCA2LCAzMiwgMjA5LCAxODgsIDIwOCwgMTQsIAorICAgIDM2LCA1LCAzMiwgMjA5LCAxODgsIDIwOCwgMTQsIDM2LCA2LCAxLCAyNDYsIDE3MSwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIAorICAgIDI0NiwgMTcxLCAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjQ2LCAxNzEsIDMsIDgwLCA5NSwgMzYsIDUsIDEsIDI0NiwgMTcxLCAKKyAgICAzLCA4MCwgOTUsIDM2LCA2LCAxLCAyMTMsIDEyLCAzNiwgNSwgMSwgMjEzLCAxMiwgMzYsIDYsIDEsIDI1MSwgMTQ1LCAyNDYsIAorICAgIDE3MCwgMzYsIDUsIDEsIDI1MSwgMTQ1LCAyNDYsIDE3MCwgMzYsIDYsIDEsIDI1MSwgMTQ1LCAyNDYsIDE3MSwgMywgMjQ0LCAKKyAgICAyMCwgMzYsIDUsIDEsIDI1MSwgMTQ1LCAyNDYsIDE3MSwgMywgMjQ0LCAyMCwgMzYsIDEsIDIxOSwgMTMzLCAzNiwgNiwgMSwgCisgICAgMjAyLCA3MiwgMywgMjQ3LCAyMTQsIDM2LCA1LCAxLCAyMDIsIDcyLCAzLCAyNDcsIDIxNCwgMzYsIDYsIDEsIDIzMCwgNDQsIAorICAgIDMsIDExMywgMzYsIDUsIDEsIDIzMCwgNDQsIDMsIDExMywgMzYsIDYsIDEsIDI0MSwgMTIzLCAzLCAyMDksIDI0OCwgMzYsIAorICAgIDUsIDEsIDI0MSwgMTIzLCAzLCAyMDksIDI0OCwgMzYsIDYsIDEsIDI0MSwgOTMsIDMsIDExMywgMzYsIDUsIDEsIDI0MSwgCisgICAgOTMsIDMsIDExMywgMzYsIDYsIDEsIDI0MSwgOTMsIDMsIDIwOSwgMjQ4LCAzNiwgNSwgMSwgMjQxLCA5MywgMywgMjA5LCAKKyAgICAyNDgsIDM2LCA2LCAxLCAyMjksIDEzOCwgMjQ2LCAxNzAsIDM2LCA1LCAxLCAyMjksIDEzOCwgMjQ2LCAxNzAsIDM2LCA2LCAKKyAgICAxLCAyNDEsIDEwNCwgMywgMjA5LCAyNDgsIDM2LCA1LCAxLCAyNDEsIDEwNCwgMywgMjA5LCAyNDgsIDM2LCA1LCAxLCAyMTksIAorICAgIDEzMywgMzYsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNCwgMzYsIDUsIDEsIDM0LCAzLCAyNDcsIDIxNCwgMzYsIDYsIDEsIDM0LCAKKyAgICAzLCAyNDMsIDIzMSwgMzYsIDUsIDEsIDM0LCAzLCAyNDMsIDIzMSwgMzYsIDYsIDMyLCAzNCwgMjMxLCAxMTAsIDM2LCA1LCAKKyAgICAzMiwgMzQsIDIzMSwgMTEwLCAzNiwgNiwgMSwgMjMxLCAxMTEsIDMsIDI0NywgMjE0LCAzNiwgNSwgMSwgMjMxLCAxMTEsIDMsIAorICAgIDI0NywgMjE0LCAzNiwgNiwgMSwgMjE0LCAxOTIsIDM2LCA1LCAxLCAyMTQsIDE5MiwgMzYsIDYsIDEsIDIxNCwgMTkzLCAzLCAKKyAgICAyNDMsIDIzMSwgMzYsIDUsIDEsIDIxNCwgMTkzLCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDIwMiwgNzIsIDMsIDI0MywgCisgICAgMjMxLCAzNiwgNSwgMSwgMjAyLCA3MiwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyMDIsIDkzLCAzLCAyNDMsIDIzMSwgMzYsIAorICAgIDUsIDEsIDIwMiwgOTMsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMjUxLCAxNDUsIDI0MSwgMjUyLCAzNiwgNSwgMSwgMjUxLCAKKyAgICAxNDUsIDI0MSwgMjUyLCAzNiwgNiwgMSwgMjM1LCAyMDYsIDMsIDIyNSwgMTcwLCAzNiwgNSwgMSwgMjM1LCAyMDYsIDMsIAorICAgIDIyNSwgMTcwLCAzNiwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0MywgMjMxLCAzNiwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0MywgCisgICAgMjMxLCAzNiwgNiwgMSwgMTU4LCAzLCAyNDMsIDIzMSwgMzYsIDUsIDEsIDE1OCwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAKKyAgICAyNDgsIDIyNSwgNzgsIDM2LCA1LCAxLCAyNDgsIDIyNSwgNzgsIDM2LCA2LCAxLCAyNDgsIDIyNSwgMTU4LCAzLCAyNDMsIAorICAgIDIzMSwgMzYsIDUsIDEsIDI0OCwgMjI1LCAxNTgsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMTg4LCAzLCAyNDMsIDIzMSwgCisgICAgMzYsIDUsIDEsIDE4OCwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAxMDYsIDMsIDIyNSwgMTcwLCAzNiwgNSwgMSwgMTA2LCAzLCAKKyAgICAyMjUsIDE3MCwgMzYsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDM2LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMxLCAzNiwgNiwgCisgICAgMSwgMTA2LCAzLCA1MiwgMTY1LCAzNiwgNSwgMSwgMTA2LCAzLCA1MiwgMTY1LCAzNiwgNiwgMSwgMjQ2LCAxNzEsIDMsIAorICAgIDI0MywgMjMxLCAzNiwgNSwgMSwgMjQ2LCAxNzEsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMjM4LCAxMDYsIDMsIDI0NCwgCisgICAgMjAsIDM2LCA1LCAxLCAyMzgsIDEwNiwgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIDIwMywgMzEsIDMsIDI0MywgMjMxLCAzNiwgCisgICAgNSwgMSwgMjAzLCAzMSwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyMzgsIDEwNiwgMywgMjExLCAzMiwgMjUsIDExMywgMzYsIAorICAgIDUsIDEsIDIzOCwgMTA2LCAzLCAyMTEsIDMyLCAyNSwgMTEzLCAzNiwgNiwgMSwgMjM3LCAxNjAsIDMsIDExMywgMzYsIDUsIAorICAgIDEsIDIzNywgMTYwLCAzLCAxMTMsIDM2LCA2LCAxLCAyMzcsIDE2MCwgMywgOTUsIDM2LCA1LCAxLCAyMzcsIDE2MCwgMywgCisgICAgOTUsIDM2LCA2LCAxLCAyMjksIDEwLCAyNDQsIDc1LCAzNiwgNSwgMSwgMjI5LCAxMCwgMjQ0LCA3NSwgMzYsIDYsIDEsIAorICAgIDIyOSwgMTAsIDI0MywgMTMwLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjQzLCAxMzAsIDM2LCA2LCAxLCAyMjksIDEwLCAyMDIsIAorICAgIDIxLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjAyLCAyMSwgMzYsIDYsIDEsIDIyOSwgMTAsIDI0MSwgMjQ0LCAzNiwgNSwgMSwgCisgICAgMjI5LCAxMCwgMjQxLCAyNDQsIDM2LCA2LCAxLCAyMjksIDEwLCAyMjcsIDgwLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjI3LCAKKyAgICA4MCwgMzYsIDYsIDEsIDIyOSwgMTAsIDIyMiwgNDEsIDM2LCA1LCAxLCAyMjksIDEwLCAyMjIsIDQxLCAzNiwgNiwgMSwgCisgICAgMjI5LCAxMCwgMjEyLCA3MSwgMzYsIDUsIDEsIDIyOSwgMTAsIDIxMiwgNzEsIDM2LCA2LCAxLCAyMjksIDEwLCAyMDgsIAorICAgIDE5MSwgMzYsIDUsIDEsIDIyOSwgMTAsIDIwOCwgMTkxLCAzNiwgNiwgMSwgMjE2LCA3MywgMjAyLCA5MiwgMzYsIDUsIDEsIAorICAgIDIxNiwgNzMsIDIwMiwgOTIsIDM2LCA2LCAxLCAyNDEsIDEyMywgMywgMTEzLCAzNiwgNSwgMSwgMjQxLCAxMjMsIDMsIDExMywgCisgICAgMzYsIDYsIDEsIDIyNywgMTYxLCAzNiwgNSwgMSwgMjI3LCAxNjEsIDM2LCA2LCAxLCAyMTYsIDYxLCAzNiwgNSwgMSwgMjE2LCAKKyAgICA2MSwgMzYsIDYsIDEsIDIwMywgOTksIDM2LCA1LCAxLCAyMDMsIDk5LCAzNiwgNiwgMSwgMjE3LCAxMjYsIDM2LCA1LCAxLCAKKyAgICAyMTcsIDEyNiwgMzYsIDYsIDEsIDIwNCwgNjIsIDM2LCA1LCAxLCAyMDQsIDYyLCAzNiwgNiwgMSwgMjUxLCAyNiwgMTczLCAKKyAgICAzNiwgNSwgMSwgMjUxLCAyNiwgMTczLCAzNiwgNiwgMSwgMjQxLCAxMjMsIDMsIDEwMSwgMTEzLCAzNiwgNSwgMSwgMjQxLCAKKyAgICAxMjMsIDMsIDEwMSwgMTEzLCAzNiwgNiwgMSwgMjQxLCA5MywgMywgMTAxLCAxMTMsIDM2LCA1LCAxLCAyNDEsIDkzLCAzLCAKKyAgICAxMDEsIDExMywgMzYsIDYsIDEsIDIxOSwgMzUsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMTksIDM1LCAzLCAyNDQsIDIwLCAKKyAgICAzNiwgNiwgMSwgMjEzLCAxMywgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIxMywgMTMsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAKKyAgICAyNDEsIDkzLCAzLCA0OSwgMTEzLCAzNiwgNSwgMSwgMjQxLCA5MywgMywgNDksIDExMywgMzYsIDYsIDEsIDI0MSwgMjM3LCAKKyAgICAzNiwgNSwgMSwgMjQxLCAyMzcsIDM2LCA2LCAxLCAyNDQsIDEyNCwgMzYsIDUsIDEsIDI0NCwgMTI0LCAzNiwgNiwgMSwgCisgICAgMjQxLCAxMjMsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyNDEsIDEyMywgMywgMjQ0LCAyMCwgMTc4LCA2LCAxLCAyNTAsIDUsIAorICAgIDE3OCwgNiwgMSwgMjQ4LCAxMjIsIDE3OCwgNiwgMSwgMjM4LCA2OSwgMTc4LCA2LCAxLCAyNDQsIDIxMiwgMTc4LCA2LCAxLCAKKyAgICAyNDEsIDE2NywgMTc4LCA2LCAxLCAyMDIsIDExNiwgMTc4LCA2LCAxLCAyNDEsIDE0NywgMTc4LCA2LCAxLCAyNDAsIDI1MCwgCisgICAgMTc4LCA2LCAxLCAxMzUsIDE3OCwgNiwgMSwgMjAyLCA3MSwgMTc4LCA2LCAxLCAyMzEsIDE5LCAxNzgsIDYsIDEsIDIyNywgCisgICAgODMsIDE3OCwgNiwgMSwgMjAzLCAxNzQsIDE3OCwgNiwgMSwgMjQ3LCA5MiwgMTc4LCA2LCAxLCAyMjksIDE4MCwgMTc4LCA2LCAKKyAgICAxLCAyMzYsIDEzNiwgMTc4LCA2LCAxLCAyMzAsIDE4MSwgMTc4LCA2LCAxLCAyMzgsIDExNiwgMTc4LCA2LCAxLCAyNDYsIAorICAgIDE2MCwgMTc4LCA2LCAxLCAyMjQsIDI0MCwgMTc4LCA2LCAxLCAyMDMsIDExLCAxNzgsIDYsIDEsIDIyMSwgMTUyLCAxNzgsIAorICAgIDYsIDEsIDIxMywgOTAsIDE3OCwgNiwgMSwgMjA1LCAxODksIDE3OCwgNiwgMSwgMjQ2LCAxOTksIDE3OCwgNiwgMSwgMjE5LCAKKyAgICAxNiwgMTc4LCA2LCAxLCAyMzAsIDE0NCwgMTc4LCA2LCAxLCAyMTYsIDIyMCwgMTc4LCA2LCAxLCAyMTQsIDE1NSwgMTc4LCAKKyAgICA2LCAxLCAyMDUsIDIzNCwgMTc4LCA2LCAxLCAyMDgsIDE5NCwgMTc4LCA2LCAxLCAyMTYsIDEyMiwgMTc4LCA2LCAxLCAyNDUsIAorICAgIDI1NCwgMTc4LCA2LCAxLCAyMDIsIDI1MiwgMTc4LCA2LCAxLCAyMTgsIDEwMiwgMTc4LCA2LCAxLCAyMjksIDE5MSwgMTc4LCAKKyAgICA2LCAxLCAyMjAsIDYwLCAxNzgsIDYsIDEsIDI0MCwgNDcsIDE3OCwgNjUsIDEsIDQ5LCAxNjIsIDIxNSwgMjUyLCAxNzgsIAorICAgIDI1MCwgMTYwLCAxNzgsIDI0MSwgOTYsIDgyLCAxNzgsIDI0MCwgMjEyLCA4MiwgMTc4LCAyNDUsIDIzMywgMTc4LCAyMTcsIAorICAgIDQ3LCA4MiwgMTc4LCAyNTEsIDE0NiwgODIsIDE3OCwgNSwgMSwgMjUwLCA1LCAxNzgsIDUsIDEsIDI0OCwgMTIyLCAxNzgsIAorICAgIDUsIDEsIDIzOCwgNjksIDE3OCwgNSwgMSwgMjQ0LCAyMTIsIDE3OCwgNSwgMSwgMjQxLCAxNjcsIDE3OCwgNSwgMSwgMjAyLCAKKyAgICAxMTYsIDE3OCwgNSwgMSwgMjQxLCAxNDcsIDE3OCwgNSwgMSwgMjQwLCAyNTAsIDE3OCwgNSwgMSwgMTM1LCAxNzgsIDUsIDEsIAorICAgIDIwMiwgNzEsIDE3OCwgNSwgMSwgMjMxLCAxOSwgMTc4LCA1LCAxLCAyMjcsIDgzLCAxNzgsIDUsIDEsIDIwMywgMTc0LCAKKyAgICAxNzgsIDUsIDEsIDI0NywgOTIsIDE3OCwgNSwgMSwgMjI5LCAxODAsIDE3OCwgNSwgMSwgMjM2LCAxMzYsIDE3OCwgNSwgMSwgCisgICAgMjMwLCAxODEsIDE3OCwgNSwgMSwgMjM4LCAxMTYsIDE3OCwgNSwgMSwgMjQ2LCAxNjAsIDE3OCwgNSwgMSwgMjI0LCAyNDAsIAorICAgIDE3OCwgNSwgMSwgMjAzLCAxMSwgMTc4LCA1LCAxLCAyMjEsIDE1MiwgMTc4LCA1LCAxLCAyMTMsIDkwLCAxNzgsIDUsIDEsIAorICAgIDIwNSwgMTg5LCAxNzgsIDUsIDEsIDI0NiwgMTk5LCAxNzgsIDUsIDEsIDIxOSwgMTYsIDE3OCwgNSwgMSwgMjMwLCAxNDQsIAorICAgIDE3OCwgNSwgMSwgMjE2LCAyMjAsIDE3OCwgNSwgMSwgMjE0LCAxNTUsIDE3OCwgNSwgMSwgMjA1LCAyMzQsIDE3OCwgNSwgMSwgCisgICAgMjA4LCAxOTQsIDE3OCwgNSwgMSwgMjE2LCAxMjIsIDE3OCwgNSwgMSwgMjQ1LCAyNTQsIDE3OCwgNSwgMSwgMjAyLCAyNTIsIAorICAgIDE3OCwgNSwgMSwgMjE4LCAxMDIsIDE3OCwgNSwgMSwgMjI5LCAxOTEsIDE3OCwgNSwgMSwgMjIwLCA2MCwgMTc4LCA1LCAxLCAKKyAgICAyNDAsIDQ3LCAxNzgsIDUsIDMyLCAyNDEsIDE2OCwgMjAyLCAyNTIsIDE3OCwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3OCwgCisgICAgMjM1LCAyMjAsIDIxNiwgMTUsIDE3OCwgMjQwLCAyNDYsIDU0LCAyMjcsIDIyMSwgMTc4LCAyNDAsIDI0NiwgNTQsIDE3OCwgCisgICAgMjQyLCA2MCwgNTQsIDExMCwgMjUxLCAxMzksIDI0MCwgMjQxLCAxMTAsIDI1MSwgMTM5LCAyMTQsIDE1NiwgMTEwLCAyNTEsIAorICAgIDEzOSwgMjEzLCA2OSwgMTEwLCAyNTEsIDEzOSwgMjAyLCAxMDMsIDIxNywgMTA5LCAxMTAsIDI1MSwgMTM5LCAyMDIsIDEwMywgCisgICAgMjM4LCAyNTQsIDExMCwgMjUxLCAxMzksIDIwOCwgMjA5LCAxMTAsIDI1MSwgMTM5LCAyMTYsIDcwLCAxMTAsIDI1MSwgMTM5LCAKKyAgICAyMDIsIDEwMSwgMTEwLCAyNTEsIDEzOSwgMjE5LCA2MSwgMTEwLCAyNTEsIDEzOSwgMjAzLCAyMywgMTEwLCAyNTEsIDEzOSwgCisgICAgMjA5LCAxMTUsIDExMCwgMjUxLCAxMzksIDIzOCwgMTY3LCAxMTAsIDI1MSwgMTM5LCAyMzgsIDE2OCwgMjIzLCAyMDgsIAorICAgIDExMCwgMjUxLCAxMzksIDIzOCwgMTY1LCAxMTAsIDI1MSwgMTM5LCAyMTcsIDExMCwgMjE5LCA5MCwgMTEwLCAyNTEsIDEzOSwgCisgICAgMjA5LCAxNTgsIDIzOCwgMTgzLCAxMTAsIDI1MSwgMTM5LCAyMTksIDQwLCAxMTAsIDI1MSwgMTM5LCAyNTAsIDQzLCAyMzcsIAorICAgIDE1MiwgMTEwLCAyNTEsIDEzOSwgMjIzLCAyMTgsIDExMCwgMjUxLCAxMzksIDIyNSwgMTQ1LCAxMTAsIDI1MSwgMTM5LCAKKyAgICAyMjQsIDIyOSwgMTEwLCAyNTEsIDEzOSwgMjI0LCAyMzAsIDIyOSwgMTkyLCAxMTAsIDI1MSwgMTM5LCAyNDQsIDE1MSwgCisgICAgMTEwLCAyNTEsIDEzOSwgMjE3LCAxMjEsIDExMCwgMjUxLCAxMzksIDIwOSwgMTU4LCAyMTcsIDEwNCwgMTEwLCAyNTEsIAorICAgIDEzOSwgMjAzLCAzMywgMjQ4LCAxMjMsIDIwMiwgMjMzLCAxMTAsIDI1MSwgMTM5LCAyMjAsIDQzLCAxMTAsIDI1MSwgMTM5LCAKKyAgICAyMzEsIDY5LCAxMTAsIDI1MSwgMTM5LCAyNDQsIDUzLCAxMTAsIDI1MSwgMTM5LCAyMDIsIDI4LCAxMTAsIDEzMSwgMjI1LCAKKyAgICA3NSwgMjQ2LCA2MSwgMTEwLCAyMTgsIDYzLCAyMTMsIDE1LCAxMTAsIDIxOCwgNjMsIDIzNywgODIsIDIxNCwgMTU2LCAxMTAsIAorICAgIDIxOCwgNjMsIDIzNywgODIsIDIxOSwgNTQsIDExMCwgMjE4LCA2MywgMjM3LCA4MiwgMjE3LCAxMTQsIDExMCwgMjE4LCA2MywgCisgICAgMjM2LCAyMzIsIDExMCwgMjE4LCA2MywgMjA4LCAxMSwgMTEwLCAyMTgsIDYzLCAyMTQsIDE1NiwgMTEwLCAyMTgsIDYzLCAKKyAgICAyMTksIDU0LCAxMTAsIDIxOCwgNjMsIDIxNywgMTE0LCAxMTAsIDIxOCwgNjMsIDIzNiwgMTI4LCAxMTAsIDIxOCwgNjMsIAorICAgIDIzNiwgMTI5LCAyMzcsIDg0LCAzNSwgMjA2LCA1OSwgMTEwLCAyMTgsIDYzLCAyMTcsIDUxLCAxMTAsIDIxOCwgNjMsIDI0NCwgCisgICAgMTk4LCAyMTksIDI0NSwgMjI1LCAxMDUsIDExMCwgMjE4LCA2MywgMjI0LCAyMTksIDExMCwgMjE3LCAxNzksIDIyNSwgMTAyLCAKKyAgICAxMTAsIDIxOCwgNjMsIDIxNiwgMjAwLCAxMTAsIDIxNywgMTc5LCAyMTksIDYzLCAxMTAsIDIxOCwgNjMsIDIxMywgMCwgCisgICAgMjQzLCA4NSwgMTEwLCAyMTgsIDYzLCAyMTIsIDEyNCwgMjQzLCA4NSwgMTEwLCAyMTcsIDE3OSwgMjEyLCA4LCAyMTksIDU2LCAKKyAgICAxMTAsIDEzMSwgMjA2LCAyMjEsIDI0MywgODUsIDExMCwgMTMxLCAyMjYsIDI1MSwgMjQzLCA4NSwgMTEwLCAyMTcsIDE3OSwgCisgICAgMjIxLCA0MSwgMjM3LCAxNTEsIDExMCwgMjE4LCA2MywgMjE3LCAxMTUsIDIxNywgMTA5LCAxMTAsIDEsIDI1MSwgMzAsIAorICAgIDExMCwgMSwgMjQ4LCAxMDgsIDExMCwgMSwgMjM4LCA2NywgMTEwLCAxLCAyNDQsIDE3OCwgMTEwLCAxLCAyMzcsIDY3LCAKKyAgICAxMTAsIDEsIDIwNiwgNTksIDExMCwgMSwgMjAyLCA5NSwgMTEwLCAxLCAyMzcsIDIxLCAxMTAsIDEsIDIwOSwgMTMyLCAxMTAsIAorICAgIDEsIDIwMiwgMjM2LCAxMTAsIDEsIDQ2LCAyMzAsIDIyLCAxMTAsIDEsIDIzMCwgMjIsIDExMCwgMSwgMjI4LCAyMCwgMTEwLCAKKyAgICAxLCA0NiwgMjI0LCAyNDcsIDExMCwgMSwgMjI0LCAyNDcsIDExMCwgMSwgNDYsIDIyMSwgNDAsIDExMCwgMSwgMjIxLCA0MCwgCisgICAgMTEwLCAxLCAyMTQsIDI0OSwgMTEwLCAxLCAyNTAsIDMsIDExMCwgMSwgNDYsIDIxOSwgMzQsIDExMCwgMSwgMjE5LCAzNCwgCisgICAgMTEwLCAxLCA0NiwgMjA4LCAxNSwgMTEwLCAxLCAyMDgsIDE1LCAxMTAsIDEsIDIxNywgNzQsIDExMCwgMSwgMjE2LCA5MSwgCisgICAgMTEwLCAxLCAyMTIsIDI1NSwgMTEwLCAxLCAyMDksIDIwMywgMTEwLCAzMiwgMjAzLCA5LCA1MiwgMjA2LCA1OSwgMTEwLCAKKyAgICAzMiwgMjAzLCA5LCAyMDYsIDYwLCAyMDIsIDIzNiwgMTEwLCAzMiwgMjAzLCA5LCA1MiwgMjAyLCAyMzYsIDExMCwgMjE3LCAKKyAgICAxNzksIDIzOCwgMTY3LCAxMTAsIDIxNywgMTc5LCAyMzgsIDE2NSwgMTAsIDQyLCA1NCwgMTAsIDIsIDIxNCwgMjQyLCAxMCwgCisgICAgMjM5LCAxNzAsIDIyNSwgODgsIDEwLCAyLCAyMTUsIDI0LCAxMCwgMiwgMjE0LCAyNDUsIDEwLCA0MiwgMTMxLCA1NSwgMjUwLCAKKyAgICAxNDAsIDI0NSwgMTA2LCAyMTUsIDIwNCwgMjUwLCAxNDAsIDIzOSwgMTQwLCAyMTUsIDIwNCwgMTAsIDIxNiwgMTY1LCAyNTAsIAorICAgIDE0MCwgMjE4LCAyNDcsIDIyNCwgMTE2LCA1NCwgMjUwLCAxNDAsIDIxOCwgMjQ3LCAyMDksIDE1MywgMjA5LCAzNywgNTQsIAorICAgIDI1MSwgODYsIDU0LCAxMCwgMjQ1LCAyMzMsIDEwLCAyNDQsIDEzOCwgMjEzLCAxMzAsIDEwLCAyMTgsIDY1LCAyMDYsIDQwLCAKKyAgICA1NCwgMTAsIDIsIDIyNCwgOTUsIDEwLCAyLCAyMTUsIDMsIDI1MSwgMzMsIDIwNCwgODYsIDEwLCAyLCAyNTEsIDMzLCAyNTAsIAorICAgIDY0LCAxMCwgMiwgMjE2LCAxOTgsIDI1MSwgMzIsIDEwLCAyLCAyMTYsIDIwNiwgMjUxLCAxMiwgMjUwLCAyMTAsIDEwLCAyLCAKKyAgICAyMDksIDI0MCwgMTAsIDUsIDEzOCwgMjA5LCAyNTEsIDEwLCA1LCAxMzgsIDMyLCAxMzcsIDMsIDIyOCwgMjksIDMsIDIwMywgCisgICAgNDcsIDEwLCA1LCAxMzgsIDIwMiwgMTA3LCAxMCwgNSwgMjQwLCA3MSwgMTAsIDUsIDI0NCwgMTcyLCAxMCwgNSwgMjI5LCAKKyAgICAyMjksIDEwLCAyMTMsIDE0MywgMTAsIDEsIDgyLCAxMCwgMjA4LCA3MCwgNzAsIDIxNywgMTc5LCA4MiwgMTAsIDIxNywgNDcsIAorICAgIDgyLCAxMCwgMSwgMjI5LCAyMzMsIDIwMywgNDcsIDEwLCAxLCAyMzcsIDEyNywgMTAsIDEsIDEzNywgMywgMjI1LCAxNjYsIAorICAgIDU1LCAxMCwgMSwgMTM3LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAyMDQsIDcxLCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAKKyAgICAxMzcsIDMsIDIzNywgMTI4LCA1NiwgMTAsIDEsIDg5LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAyNTEsIDMwLCAxMCwgMSwgCisgICAgMjQ4LCAxMzgsIDEwLCAxLCAyMDksIDE3MCwgMjI1LCA5OCwgMTAsIDEsIDIwOSwgMTY5LCAxMCwgMSwgMjA5LCA4OCwgMTAsIAorICAgIDEsIDIzMCwgMTU4LCAxMCwgMSwgMjM3LCAxNDgsIDEwLCAxLCAyMjksIDE0MCwgMTAsIDEsIDI0NCwgMTg0LCAxMCwgMSwgCisgICAgMjA5LCAxMDAsIDEwLCAxLCAyMTYsIDEyMiwgMTAsIDEsIDIwMiwgMTA3LCAxMCwgMSwgMjE0LCAxNjEsIDEwLCAxLCAyMTMsIAorICAgIDM5LCAxMCwgMSwgMjE1LCAyOCwgMTAsIDEsIDI0NCwgMjA3LCAxMCwgMSwgMjA5LCAyNTEsIDEwLCAxLCAyMDIsIDExMCwgCisgICAgMTAsIDEsIDI1MSwgNTksIDEwLCAxLCAyMzgsIDExNCwgMTAsIDEsIDIyOSwgMTkwLCAzLCAxMjAsIDE4NywgNTUsIDEwLCAxLCAKKyAgICAyMjksIDE5MCwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjQwLCA3NSwgODksIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMTAsIAorICAgIDEsIDI0MCwgNzUsIDg5LCAzLCAxMjAsIDE4NywgNTUsIDEwLCAxLCAyNDAsIDc1LCA4OSwgMywgMTI2LCAxODcsIDU1LCAxMCwgCisgICAgMjA5LCAyMDksIDEwLCAxLCAyNDAsIDQ3LCAxMCwgMSwgMjE3LCAxMTksIDEwLCAxLCAyMzAsIDIyLCAxMCwgMSwgMjI4LCAKKyAgICAyOCwgMTAsIDEsIDIyNSwgNSwgMTAsIDEsIDIyMSwgMTc4LCAxMCwgMSwgMjM3LCA0MywgMTAsIDEsIDIwNCwgNzAsIDEwLCAKKyAgICAxLCAxMzcsIDIyNSwgMTI5LCAxMCwgMSwgMjAzLCA0NywgMTAsIDI0MCwgNjksIDEwLCAyNDQsIDE3MCwgMTAsIDIyOSwgCisgICAgMjI3LCAxMCwgMjQwLCA3MSwgMTAsIDI0NCwgMTcyLCAxMCwgMjI5LCAyMjksIDEwLCAyMTMsIDgwLCAxMCwgMjEwLCAyMjIsIAorICAgIDEwLCAyMjUsIDE2NCwgNTUsIDEwLCAyMzcsIDEyOCwgNTUsIDEwLCAyMzcsIDEyOCwgNTYsIDEwLCAyMTAsIDI0NiwgMjUxLCAKKyAgICAzMCwgMTAsIDIzMCwgMjM5LCAyNDQsIDE3MiwgMTAsIDEzMSwgMjIxLCAxNzksIDIzOCwgODUsIDEwLCAyMDEsIDI0OCwgMTAsIAorICAgIDIyLCAyLCA1LCAyMDYsIDE2NSwgNTUsIDEwLCAyMiwgMiwgMjMwLCAyMzksIDUsIDIwNiwgMTY1LCA1NSwgMTAsIDIyLCAyLCAKKyAgICA3MCwgNTYsIDEwLCAyMTYsIDczLCAyNDQsIDE3MiwgMTAsIDI0MCwgNzIsIDMsIDEyMCwgMjQzLCA4MywgMTAsIDIwNCwgNzIsIAorICAgIDIzNywgMTI4LCA1NiwgMjUwLCAxNDAsIDE3LCAyMDIsIDg0LCAyNTAsIDE0MCwgMTcsIDEwNSwgMjUwLCAxNDAsIDE3LCAKKyAgICAxMDgsIDI1MCwgMTQwLCAxNywgMTQ3LCAyNTAsIDE0MCwgMTcsIDE0OSwgMjUwLCAxNDAsIDE3LCAxNzAsIDI1MCwgMTQwLCAKKyAgICAxNywgMTk1LCAyNTAsIDE0MCwgMTcsIDIxMywgMTExLCAyNTAsIDE0MCwgMTcsIDE5OSwgMjUwLCAxNDAsIDE3LCAyMjIsIAorICAgIDYzLCAxMCwgMjE4LCAyNDYsIDU0LCAxMCwgMjQ0LCA2OCwgMjEzLCAxMzAsIDEwLCAyMDksIDM1LCAyMTMsIDEzMCwgMTAsIAorICAgIDIzOSwgMjMzLCAyMTgsIDYxLCAyMTEsIDk0LCAxMCwgMSwgMjQzLCA4NCwgMjQ4LCAxMzgsIDEwLCAxLCAyNDMsIDg0LCAKKyAgICAyMTcsIDExOSwgMTAsIDEsIDIxMCwgMTk5LCAyNTEsIDMwLCAxMCwgMSwgMTM3LCAyMDQsIDg3LCAxMCwgMSwgMTM3LCAzLCAKKyAgICAyMDQsIDcyLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAxMzcsIDMsIDIwNCwgNzIsIDIzNywgMTI4LCA1NiwgMTAsIDEsIDEzOCwgCisgICAgMjM3LCAxMjcsIDEwLCAxLCAxMzgsIDIzNywgMTI4LCAyNTEsIDMwLCAxMCwgMSwgMTM4LCAyMzcsIDEyOCwgMjA0LCA3MCwgCisgICAgMTAsIDEsIDEwNiwgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMTM4LCAyMzcsIDEyOCwgMjAzLCA0NywgMTAsIDEsIDIwNywgCisgICAgMjMzLCAxMCwgMSwgMjA3LCAyMzEsIDEwLCAxLCAyNDgsIDE0OCwgMTAsIDEsIDIwOSwgMTcwLCAzLCAyMTUsIDI1MiwgMTAsIAorICAgIDEsIDIwOSwgMTcwLCAzLCAxMjYsIDE4NywgODcsIDI0MiwgNjgsIDEwLCAxLCAyMTksIDE2LCAxMCwgMSwgMjA5LCAxNjcsIAorICAgIDEwLCAxLCAyNDgsIDEzNiwgMTAsIDEsIDE1MSwgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMTUxLCAzLCAxMjAsIDE4NywgCisgICAgODAsIDU1LCAxMCwgMSwgMjIwLCAyNTQsIDEwLCAxLCAyNDIsIDUsIDEwLCAxLCAxNTEsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIAorICAgIDEsIDIwOSwgMTkxLCAxMCwgMSwgMjA5LCAxODksIDEwLCAxLCAyNDQsIDExNSwgMTAsIDEsIDI0NCwgMTg1LCAzLCAyMTUsIAorICAgIDI1MiwgMTAsIDEsIDI0NCwgMTg1LCAzLCA3MCwgNTYsIDEwLCAxLCAyNDQsIDE4NSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgNSwgCisgICAgMjA5LCAyNTEsIDEwLCAxLCAyNDQsIDE5MSwgMTAsIDEsIDI0NCwgMTE3LCAxMCwgMSwgMjQyLCAzMywgMTAsIDEsIDI0NCwgCisgICAgMTg1LCAzLCAxMjYsIDE4NywgODcsIDI0MiwgNjgsIDEwLCAxLCAyNDQsIDE4NSwgMywgMjM5LCAxNDcsIDE4NywgNTUsIDEwLCAKKyAgICAxLCAyMTUsIDE3NywgMTAsIDEsIDIxNiwgMTIzLCAzLCA1LCAyMDYsIDE2NCwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMTUsIAorICAgIDI1MiwgMTAsIDEsIDIxNiwgMTIzLCAzLCA3MCwgNTYsIDEwLCAxLCAyMTYsIDEyMywgMywgNSwgMjA2LCAxNjUsIDU2LCAxMCwgCisgICAgMSwgMjE2LCAxMjMsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDcwLCA1NSwgMTAsIDEsIDIxNiwgMTIzLCAzLCAxMjAsIDE4NywgCisgICAgNTUsIDEwLCAxLCAyMzAsIDE1NSwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMzksIDE0NywgMTg3LCA1NSwgMTAsIDEsIDIxNCwgCisgICAgMTYyLCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDEwLCAxLCAyMTQsIDE2MiwgMywgMTI2LCAxODcsIDU2LCAxMCwgCisgICAgMSwgMjE0LCAxNjIsIDMsIDEyNiwgMTg3LCAyNDgsIDEyNiwgMjUsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIxNSwgMjksIDMsIAorICAgIDEyMCwgMTg3LCA1NiwgMTAsIDEsIDIxNSwgMjksIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIwOSwgMjUyLCAzLCAxMjYsIAorICAgIDE4NywgNTUsIDEwLCAxLCAyNTEsIDYwLCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyNDMsIDg0LCAyNDAsIDQ3LCAxMCwgMSwgCisgICAgMjQwLCA0OCwgMywgNzAsIDIyNCwgNSwgNTYsIDEwLCAxLCAyNDAsIDQ4LCAzLCA3MCwgNTYsIDEwLCAxLCAyMDYsIDQ4LCAKKyAgICAxMCwgMSwgMjQwLCA0OCwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjE5LCAxNCwgMTAsIDEsIDIxNywgMTIwLCAzLCA3MCwgCisgICAgNTUsIDEwLCAxLCAyMTcsIDEyMCwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjI5LCAxODksIDEwLCAxLCAyMTAsIDE2OSwgCisgICAgMjMwLCAyMiwgMTAsIDEsIDIzMCwgMjMsIDMsIDIxNSwgMjUyLCAxMCwgMSwgMjMwLCAyMywgMywgNzAsIDU1LCAxMCwgMSwgCisgICAgMjIyLCAyMDUsIDEwLCAxLCAyMzAsIDIzLCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMzgsIDI1MSwgMTAsIDEsIDIzOCwgCisgICAgMjUyLCAzLCAyMTUsIDI1MiwgMTAsIDEsIDIyMiwgMTI2LCAxMCwgMSwgMjM4LCAyNTIsIDMsIDEyMCwgMTg3LCA1NiwgMTAsIAorICAgIDEsIDIzNywgMjE3LCAxMCwgMSwgMjM4LCAyNTIsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIyOCwgMjksIDMsIDUsIDIwNiwgCisgICAgMTY0LCAxMCwgMSwgMjI4LCAyOSwgMywgNzAsIDU1LCAxMCwgMSwgMjI4LCAyOSwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgCisgICAgMjI4LCAyOSwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjIxLCAxNzksIDMsIDcwLCA1NiwgMTAsIDEsIDIyMSwgMTc5LCAKKyAgICAyMzgsIDg1LCAxMCwgMSwgMjE1LCAyMzAsIDEwLCAxLCAyMjEsIDE3OSwgMywgMjE1LCAyNTIsIDEwLCAxLCAyMjEsIDE3OSwgCisgICAgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjM3LCA0NCwgMjQzLCAxMDksIDEwLCAxLCAyMDksIDE5MiwgMywgNzAsIDU1LCAKKyAgICAxMCwgMSwgMjM3LCA0NCwgMywgODksIDU1LCAxMCwgMSwgMjM3LCA0NCwgMjM4LCAzNiwgMTAsIDEsIDIzNywgNDQsIDIzOCwgCisgICAgMzcsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDIwOSwgMTcwLCAyMjUsIDk5LCAyMzgsIDM2LCAxMCwgMSwgMjA0LCA3MSwgCisgICAgMywgMjE1LCAyNTIsIDEwLCAxLCAyMjksIDc2LCAyMjAsIDczLCAxMCwgMSwgMjIwLCA3MywgMTAsIDEsIDY4LCAxMCwgMSwgCisgICAgMjAyLCAyMTMsIDEwLCAxLCAyMjksIDc2LCAyMDIsIDIxMywgMTAsIDEsIDIwNCwgNzEsIDMsIDEyMCwgMTg3LCA1NSwgMTAsIAorICAgIDEsIDIwNiwgNTUsIDEwLCAxLCAyNDAsIDc1LCAyMDMsIDQ3LCAxMCwgMSwgODksIDMsIDIwOSwgMjQ4LCAxMCwgMSwgODksIAorICAgIDMsIDUsIDIwNiwgMTY0LCAxMCwgMSwgMjA0LCA3MSwgMywgNzAsIDU1LCAxMCwgMSwgNzQsIDEwLCAxLCA4OSwgMywgMTI2LCAKKyAgICAxODcsIDU2LCAxMCwgMSwgODksIDI0OCwgMjIzLCAxMCwgMSwgODksIDI0OCwgMjI0LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAKKyAgICAyMzksIDEwMiwgMjExLCA2MSwgMTAsIDEsIDI1MSwgMTA5LCAxMCwgNSwgMTM4LCAzMiwgMjE1LCAyOSwgMywgMjI4LCAyOSwgCisgICAgMywgMTM3LCAyMjUsIDEyOSwgMTAsIDUsIDEzOCwgMzIsIDIxNywgMTIwLCAzLCAyMjgsIDI5LCAzLCAxMzcsIDIyNSwgMTI5LCAKKyAgICAxMCwgNSwgMTM4LCA4MywgODEsIDE4LCAxMCwgNSwgMTM4LCAyMjgsIDI5LCAyNTEsIDMwLCAxMCwgNSwgMTM4LCAyMzAsIAorICAgIDE1OCwgMTAsIDUsIDEzOCwgMTI2LCAyNDMsIDgzLCAxMCwgNSwgMTM4LCAyMTQsIDE2MSwgMTAsIDI0MSwgODQsIDc2LCAKKyAgICAyNTAsIDcsIDEwLCAyMTEsIDkwLCA3NiwgMjE1LCAxNDMsIDI0MSwgMTIzLCAyMzYsIDIyNywgMTAsIDUsIDEzOCwgMjE1LCAKKyAgICAxODksIDIwMiwgODQsIDEwLCA1LCAxMzgsIDIwNiwgMjE5LCAyMTYsIDE0MiwgMjAyLCA4NCwgMTAsIDUsIDEzOCwgMjQzLCAKKyAgICA4NCwgMjM3LCA2NSwgNzYsIDIyOSwgMTQwLCAxMCwgNSwgMTM4LCA4MywgNjQsIDE4LCAxMCwgNSwgMTI0LCAyMTQsIDE2MSwgCisgICAgMTAsIDUsIDEzOCwgMjI1LCAxNjUsIDEwLCA1LCAyMDQsIDcwLCAxMCwgNSwgMjAzLCA0NywgMTAsIDUsIDEzOCwgMjAzLCAKKyAgICA0NywgMTAsIDUsIDEzOCwgMjIxLCAxNzgsIDEwLCAyMTgsIDk3LCA3NiwgMjE1LCAxNCwgMTAsIDI0MSwgOTQsIDI0NiwgCisgICAgMjE4LCAxMjQsIDIxMSwgNjEsIDEwLCAyNDEsIDk0LCAyNDYsIDIxOCwgMTM4LCAyMTEsIDYxLCAxMCwgMjE1LCAxODksIAorICAgIDEzOCwgMjExLCA2MiwgMywgMjQwLCA4LCAyNDYsIDIxNywgMTAsIDUsIDEyNCwgMjI1LCA1LCAxMCwgMSwgMjQ0LCAxODUsIAorICAgIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMzAsIDIzOSwgMjA2LCAxNjQsIDI0MCwgMjAyLCAKKyAgICAyNTAsIDE0MCwgMTcsIDIwMiwgODQsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEwNSwgMjQwLCAyMDIsIDI1MCwgMTQwLCAKKyAgICAxNywgMTA4LCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxNDcsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDE0OSwgMjQwLCAKKyAgICAyMDIsIDI1MCwgMTQwLCAxNywgMTcwLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxOTUsIDI0MCwgMjAyLCAyNTAsIDE0MCwgCisgICAgMTcsIDIxMywgMTExLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxOTksIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDIyMiwgCisgICAgNjMsIDEwLCAxLCAyMTMsIDQwLCAzLCA3MCwgNTYsIDEwLCAxLCAyNDQsIDIwOCwgMywgNzAsIDU2LCAxMCwgMSwgMjM4LCAKKyAgICAxMTUsIDMsIDcwLCA1NiwgMTAsIDIsIDIxMiwgMTIzLCAyNTAsIDIzNSwgMTAsIDIsIDIxMiwgMTIzLCAyMTgsIDI3LCAyMjQsIAorICAgIDI0MCwgMTAsIDEsIDIzNywgNDQsIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMjEwLCA4OSwgMjQxLCA4NCwgNzYsIDIxOSwgCisgICAgODgsIDIxMCwgODksIDIxMCwgMTk1LCAyMzksIDEwMiwgMjExLCA2MSwgMjEwLCA4OSwgMjEwLCAyNDgsIDIzOSwgMTAyLCAKKyAgICAyMTEsIDYxLCAyMTAsIDg5LCAyMTAsIDE5NSwgMjQ1LCAyNDIsIDIxMCwgODksIDIxMCwgMjQ4LCAyNDUsIDI0MiwgMjEwLCAKKyAgICA4OSwgMjM2LCAxMDYsIDI0NSwgMjQyLCAyMTAsIDg5LCAyNDUsIDI0MywgMjEyLCA2OCwgMjI3LCAyMjIsIDIxMCwgODksIAorICAgIDI0NSwgMjQzLCAyMTIsIDY4LCAyMTYsIDE2LCAyMTAsIDg5LCAyMTAsIDE5NSwgMjQ1LCAyNDMsIDIxMiwgNjgsIDIyNywgCisgICAgMjIyLCAyMTAsIDg5LCAyMTAsIDI0OCwgMjQ1LCAyNDMsIDIxMiwgNjgsIDIxNiwgMTYsIDIxMCwgODksIDI0NSwgMTg2LCAKKyAgICAyMTAsIDg5LCAyMzcsIDg5LCAyMjAsIDkxLCAyMTAsIDg5LCAyMzcsIDg5LCAyMjQsIDIxNywgMjEwLCA4OSwgMjM3LCA4OSwgCisgICAgMjUwLCA2MSwgMjEwLCA4OSwgMjUxLCAxNDYsIDgyLCAyMTAsIDg5LCAxLCAyNTEsIDM1LCAyMTAsIDg5LCAxLCAyMTAsIAorICAgIDE5OSwgMjUxLCAzNSwgMjEwLCA4OSwgMSwgMjQ4LCAxMDUsIDIxMCwgODksIDEsIDIzOCwgMjQxLCAyMTAsIDg5LCAxLCAKKyAgICAyMzgsIDI0MiwgMjM4LCAyMTksIDIxMCwgODksIDEsIDI0NCwgMTgxLCAyMTAsIDg5LCAxLCAyNDMsIDg0LCAyNDQsIDE4MiwgCisgICAgMjE1LCAyNDYsIDIxMCwgODksIDEsIDIzNywgNjcsIDIxMCwgODksIDEsIDIwNCwgNzAsIDIxMCwgODksIDEsIDIwMiwgMTA3LCAKKyAgICAyMTAsIDg5LCAxLCAyMzcsIDE5LCAyMTAsIDg5LCAxLCAyMDksIDEyOCwgMjEwLCA4OSwgMSwgMjA5LCAxMjksIDIzOCwgCisgICAgMjE5LCAyMTAsIDg5LCAxLCAyMDIsIDIwMCwgMjEwLCA4OSwgMSwgMjAyLCAyMDEsIDIzNywgNjcsIDIxMCwgODksIDEsIAorICAgIDIyOSwgMjUwLCAyMTAsIDg5LCAxLCAyMjgsIDI3LCAyMTAsIDg5LCAxLCAyMjQsIDExMiwgMjEwLCA4OSwgMSwgMjIxLCA0MCwgCisgICAgMjEwLCA4OSwgMSwgMjEzLCAxMzYsIDIxMCwgODksIDEsIDQ2LCAyMTMsIDEzNiwgMjEwLCA4OSwgMSwgNzQsIDIxMCwgODksIAorICAgIDEsIDIxOSwgMzQsIDIxMCwgODksIDEsIDIxNiwgNzMsIDIxOSwgMzQsIDIxMCwgODksIDEsIDIxNSwgMjYsIDIxMCwgODksIAorICAgIDEsIDIxNywgMTEzLCAyMTAsIDg5LCAxLCAyMTUsIDI0NiwgMjEwLCA4OSwgMSwgMjEyLCAyNTUsIDIxMCwgODksIDEsIDIwOSwgCisgICAgMjAxLCAyMTAsIDg5LCAxLCAyMTgsIDIzMSwgMjQ4LCA5MiwgMjEwLCA4OSwgMSwgMjE4LCAyMzEsIDIzOCwgMTEyLCAyMTAsIAorICAgIDg5LCAxLCAyMTgsIDIzMSwgMjQzLCAyNTIsIDIxMCwgODksIDIxNywgMTkyLCA1NSwgMjEwLCA4OSwgMjE3LCAxOTIsIDU2LCAKKyAgICAyMTAsIDg5LCAyMTcsIDE5MiwgMjQyLCA4MiwgMjEwLCA4OSwgMjAyLCAxMSwgNTUsIDIxMCwgODksIDIwMiwgMTEsIDU2LCAKKyAgICAyMTAsIDg5LCAyMDIsIDExLCAyNDIsIDgyLCAyMTAsIDg5LCAyMTYsIDE2MSwgNTUsIDIxMCwgODksIDIxNiwgMTYxLCA1NiwgCisgICAgMjEwLCA4OSwgMjQyLCA4MywgMjAyLCAxOCwgMjM2LCAxMDUsIDIxMCwgODksIDI0MiwgODMsIDIwMiwgMTgsIDI1MCwgMjExLCAKKyAgICAyMTAsIDg5LCAyMzcsIDcwLCA1NSwgMjEwLCA4OSwgMjM3LCA3MCwgNTYsIDIxMCwgODksIDIzNywgNjksIDI0MiwgODIsIAorICAgIDIxMCwgODksIDI0MSwgMTEsIDU1LCAyMTAsIDg5LCAyNDEsIDExLCA1NiwgMjEwLCA4OSwgMjE1LCAxMDksIDIxMCwgODksIAorICAgIDI0MCwgNDEsIDI0MywgODUsIDIxMCwgODksIDIxNywgMjUsIDIxMCwgODksIDIxNSwgMTM3LCAyMTAsIDg5LCAxMjAsIDgwLCAKKyAgICAxODcsIDU1LCAyMTAsIDg5LCAxMjAsIDgwLCAxODcsIDU2LCAyMTAsIDg5LCAxMjYsIDE4NywgNTUsIDIxMCwgODksIDEyNiwgCisgICAgMTg3LCA1NiwgMjEwLCA4OSwgMjIwLCA4OSwgMjI3LCAxMTUsIDU1LCAyMTAsIDg5LCAyMjAsIDg5LCAyMjcsIDExNSwgNTYsIAorICAgIDIxMCwgODksIDIyMywgMTk0LCAyMTAsIDg5LCAyNDgsIDIyMiwgMjEwLCA4OSwgMSwgMjEyLCA0LCAyMDIsIDc4LCAyMTAsIAorICAgIDg5LCAxLCAyMTIsIDQsIDIyOSwgMTMzLCAyMTAsIDg5LCAxLCAyMTIsIDQsIDI0MCwgNjAsIDEwLCAxLCAyNDgsIDEzOSwgMywgCisgICAgMTI2LCAxODcsIDIzNiwgNTUsIDU2LCAxMCwgMSwgMjQ4LCAxMzksIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDEyNiwgMTg3LCAKKyAgICA1NSwgMTAsIDEsIDI0OCwgMTM5LCAzLCAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCA1NiwgMTAsIDEsIDI0OCwgMTM5LCAzLCAKKyAgICAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCAyNDgsIDEyNiwgMjUsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIDI0OCwgMTM5LCAzLCAKKyAgICAxMjAsIDE4NywgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDEwLCAxLCAyNDgsIDEzOSwgMywgMjMwLCAyMzksIDUsIDIwNiwgCisgICAgMTY1LCA1NiwgMTAsIDEsIDI0OCwgMTM5LCAzLCA1LCAyMDYsIDE2NCwgMTAsIDEsIDE1MSwgMywgMTIwLCAxODcsIDU1LCAKKyAgICAxMCwgMSwgMTUxLCAzLCAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCA1NiwgMTAsIDEsIDI0NCwgMTg1LCAzLCAxMjAsIDE4NywgCisgICAgMjA1LCAyNDQsIDI0OCwgMTI2LCAyNSwgNSwgMjA5LCAyNTEsIDEwLCAxLCAyNDQsIDE4NSwgMywgMjMwLCAyMzksIDUsIAorICAgIDIwNiwgMTY1LCA1NiwgMTAsIDEsIDIxNiwgMTIzLCAzLCA5NSwgMTAsIDEsIDIxNCwgMTYyLCAzLCAyMzksIDE0NywgMTg3LCAKKyAgICA1NSwgMTAsIDEsIDI1MSwgNjAsIDMsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIDI1MSwgNjAsIDMsIDEyNiwgMTg3LCAyMTgsIAorICAgIDU5LCAxODMsIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NSwgMTAsIDEsIDI0MCwgNDgsIAorICAgIDMsIDEyMCwgMTg3LCA1NiwgMTAsIDEsIDI0MCwgNDgsIDMsIDEyNiwgMTg3LCAyMTgsIDU5LCAxNzcsIDU2LCAxMCwgMSwgCisgICAgMjI5LCAxOTAsIDMsIDcwLCA1NSwgMTAsIDEsIDIyOSwgMTkwLCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMjksIDE5MCwgCisgICAgMywgMTI2LCAxODcsIDIxOCwgNTksIDE3NywgNTYsIDEwLCAxLCA4MywgMywgNzAsIDU1LCAxMCwgMSwgODMsIDMsIDcwLCAKKyAgICA1NiwgMTAsIDEsIDIyMSwgMTc5LCAzLCAxMjAsIDE4NywgNTYsIDEwLCAxLCAyMjEsIDE3OSwgMywgNSwgMjA5LCAyNTEsIAorICAgIDEwLCAxLCAyMjEsIDE3OSwgMywgNSwgMjA2LCAxNjQsIDEwLCAxLCAyMjgsIDI5LCAzLCAxNDIsIDEwLCAxLCAyMTYsIDEyMywgCisgICAgMywgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NSwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAyMTQsIAorICAgIDE2MiwgMywgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NSwgMTAsIDEsIDE1MSwgMywgNSwgMTAsIDEsIDIwOSwgMjUyLCA1NiwgCisgICAgMTAsIDEsIDE1MSwgMywgNSwgMTAsIDEsIDIwOSwgMjUyLCAyNSwgMTIwLCAyNDMsIDgzLCAxMCwgMSwgMjE0LCAxNjIsIDMsIAorICAgIDUsIDEwLCAxLCAyMDksIDI1MiwgMjUsIDEyMCwgMjQzLCA4MywgMTAsIDEsIDIxNiwgMTIzLCAzLCA1LCAxMCwgMSwgMjA5LCAKKyAgICAyNTIsIDI1LCAxMjAsIDI0MywgODMsIDEwLCAxLCAxNTEsIDMsIDUsIDEwLCAxLCAyMDksIDI1MiwgNTUsIDEwLCAxLCAxMzcsIAorICAgIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyMCwgNTUsIDEwLCAxLCAxMzcsIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgCisgICAgMTcsIDEyNiwgNTUsIDEwLCAxLCAyNDAsIDc1LCA4OSwgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTIwLCA1NSwgMTAsIAorICAgIDEsIDI0MCwgNzUsIDg5LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjYsIDU1LCAxMCwgMSwgMjQwLCA3NSwgODksIAorICAgIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDIzOSwgMTQ3LCA1NiwgMTAsIDEsIDIwNCwgNzEsIDMsIDI0MCwgMjAyLCAKKyAgICAyNTAsIDE0MCwgMTcsIDEyMCwgNTUsIDEwLCAxLCAyMDQsIDcxLCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjYsIAorICAgIDU1LCAxMCwgMSwgODksIDI0OCwgMjI0LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjAsIDU1LCAxMCwgMSwgODksIAorICAgIDI0OCwgMjI0LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjYsIDU1LCAxMCwgMSwgMTUxLCAzLCAyNDAsIDIwMiwgCisgICAgMjUwLCAxNDAsIDE3LCAyMzksIDE0NywgNTYsIDEwLCAxLCAyMTQsIDE2MiwgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgCisgICAgMjM5LCAxNDcsIDU1LCAxMCwgMSwgMjE0LCAxNjIsIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMTAsIDEsIDIzMCwgMjMsIDMsIAorICAgIDEyMCwgMTg3LCA1NSwgMjA5LCAxMDUsIDEsIDIzNywgMTU3LCAyMDksIDEwNSwgMSwgMjEzLCA0OSwgMjA5LCAxMDUsIDEsIAorICAgIDIyMSwgMTc3LCAyMDksIDEwNSwgMSwgMjE2LCAyMTYsIDIwOSwgMTA1LCAxLCAyNDksIDMwLCAyMDksIDEwNSwgMSwgMjI3LCAKKyAgICAxNTgsIDIwOSwgMTA1LCAxLCAyMzAsIDM3LCAyMDksIDEwNSwgMSwgMjUxLCAxOSwgMjA5LCAxMDUsIDEsIDIwNiwgODQsIAorICAgIDIwOSwgMTA1LCAxLCAyMjUsIDQsIDIwOSwgMTA1LCAxLCAyNDAsIDEwNiwgMjA5LCAxMDUsIDEsIDI0MywgMjU1LCAyMDksIAorICAgIDEwNSwgMSwgMjA5LCAxMDcsIDIwOSwgMTA1LCAxLCAyMjgsIDEwOSwgMjA5LCAxMDUsIDEsIDIzOSwgNCwgMjA5LCAxMDUsIAorICAgIDEsIDIzOCwgNDIsIDIwOSwgMTA1LCAxLCAyMTQsIDE2MCwgMjA5LCAxMDUsIDEsIDI0NCwgMTM2LCAyMDksIDEwNSwgMSwgCisgICAgMjAyLCA5OCwgMjA5LCAxMDUsIDEsIDIwOSwgMjAyLCAyMDksIDEwNSwgMSwgMjAzLCAxMTAsIDIwOSwgMTA1LCAxLCAyMTksIAorICAgIDQ3LCAyMDksIDEwNSwgMSwgMjMwLCAxNjYsIDIwOSwgMTA1LCAxLCAyNDYsIDE3MywgMjA5LCAxMDUsIDEsIDIwNywgMjQwLCAKKyAgICAyMDksIDEwNSwgMSwgMjM3LCAxMSwgMjA5LCAxMDUsIDEsIDIyOSwgMTQzLCAyMDksIDEwNSwgMSwgMjA5LCAxMDYsIDIwOSwgCisgICAgMTA1LCAxLCAyMDIsIDExNCwgMjA5LCAxMDUsIDEsIDIxMywgMzgsIDIwOSwgMTA1LCAxLCAyMTUsIDMyLCAyMDksIDEwNSwgCisgICAgMSwgMjQ0LCAyMTAsIDIwOSwgMTA1LCAxLCAxMzUsIDIwOSwgMTA1LCAxLCAyMDIsIDE3LCAyMDksIDEwNSwgMSwgMjUxLCAKKyAgICA1NiwgMjA5LCAxMDUsIDEsIDIzOCwgMTEzLCAyMDksIDEwNSwgMSwgMjE3LCAxMjMsIDIwOSwgMTA1LCAxLCAyMDQsIDEwOSwgCisgICAgMjA5LCAxMDUsIDI1MSwgMTQ4LCAyMDksIDEwNSwgMjUxLCAyNDYsIDIwOSwgMTA1LCAyMzUsIDE2NSwgMjA5LCAxMDUsIAorICAgIDI0MSwgMTYwLCAyMDksIDEwNSwgMjA3LCAzMiwgMjA5LCAxMDUsIDIyMCwgMTcsIDIwOSwgMTA1LCAyNDEsIDE3MCwgMjA5LCAKKyAgICAxMDUsIDI0MCwgMTkzLCAyMDksIDEwNSwgMjIwLCA4OCwgMjA5LCAxMDUsIDIyMCwgOTYsIDIwOSwgMTA1LCAyMTAsIDIyMiwgCisgICAgMjA5LCAxMDUsIDEsIDIyMywgMTA2LCAyMjEsIDI1NSwgMTcsIDIwMiwgODQsIDIyMSwgMjU1LCAxNywgMTA1LCAyMjEsIAorICAgIDI1NSwgMTcsIDEwOCwgMjIxLCAyNTUsIDE3LCAxNDcsIDIyMSwgMjU1LCAxNywgMTQ5LCAyMjEsIDI1NSwgMTcsIDE3MCwgCisgICAgMjIxLCAyNTUsIDE3LCAxOTUsIDIyMSwgMjU1LCAxNywgMjEzLCAxMTEsIDIyMSwgMjU1LCAxNywgMTk5LCAyMjEsIDI1NSwgCisgICAgMTcsIDIyMiwgNjMsIDIyMSwgMjU1LCAxLCA2MywgMjIxLCAyNTUsIDEsIDI0MSwgMTYxLCAyMjEsIDI1NSwgMSwgNzUsIAorICAgIDIyMSwgMjU1LCAxLCA3NCwgMjIxLCAyNTUsIDEsIDY4LCAyMjEsIDI1NSwgMSwgMjIwLCAxOCwgMjIxLCAyNTUsIDEsIDc4LCAKKyAgICAyMjEsIDI1NSwgMSwgMjQ0LCAxOTksIDIyMSwgMjU1LCAxLCAyMjMsIDE2MywgMjIxLCAyNTUsIDEsIDI0OSwgMzIsIDIyMSwgCisgICAgMjU1LCAxLCAxODUsIDIyMSwgMjU1LCAxLCAyMTAsIDIyLCAyMjEsIDI1NSwgMSwgMjMwLCAxODEsIDIyMSwgMjU1LCAxLCAKKyAgICAyNDYsIDE5OSwgMjIxLCAyNTUsIDEsIDI0NCwgMjEyLCAyMjEsIDI1NSwgMSwgMjE2LCAyMjAsIDIyMSwgMjU1LCAxLCAyMTUsIAorICAgIDE4NSwgMjIxLCAyNTUsIDEsIDIxNSwgMzYsIDIyMSwgMjU1LCAxLCAyMzgsIDIwNywgMjIxLCAyNTUsIDEsIDI0MCwgMTA4LCAKKyAgICAyMjEsIDI1NSwgMSwgMTczLCAyMjEsIDI1NSwgMSwgMjI4LCAxMTMsIDIyMSwgMjU1LCAxLCAyMjMsIDExMSwgMjAzLCAyNTIsIAorICAgIDIyMSwgMjU1LCAxLCAxOTIsIDIyMSwgMjU1LCAxLCAyMjEsIDExLCAyMjEsIDI1NSwgMSwgMjAxLCAyMDEsIDIyMSwgMjU1LCAKKyAgICAxLCAxNTIsIDIyMSwgMjU1LCAxLCAyMDQsIDExMSwgMjIxLCAyNTUsIDEsIDE5OCwgMjIxLCAyNTUsIDEsIDIyMSwgMTIsIAorICAgIDIwMywgMjUyLCAyMjEsIDI1NSwgMSwgMjMwLCA5MywgMjMwLCAxODEsIDIyMSwgMjU1LCAxLCAyMzAsIDkzLCAyNDYsIDE5OSwgCisgICAgMjIxLCAyNTUsIDEsIDIzMCwgOTMsIDIxNiwgMjIwLCAyMjEsIDI1NSwgMzksIDIxMiwgMjI4LCAxMzgsIDIwOCwgMTYxLCAKKyAgICAyMjEsIDI1NSwgMzksIDIxMiwgMjI4LCAxMjQsIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDIxMiwgMjI4LCAyMTUsIDI0NSwgCisgICAgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMTYzLCAyNDQsIDE5LCAyMDgsIDE2MSwgMjIxLCAyNTUsIDM5LCAxNjMsIDEzOCwgCisgICAgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMTYzLCAxMjQsIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDE2MywgMjE1LCAyNDUsIAorICAgIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDIyMywgNzEsIDgyLCAyMjEsIDI1NSwgMzksIDUyLCA3MCwgNTUsIDIyMSwgMjU1LCAKKyAgICAxMzgsIDE0MywgMjUwLCAxNjAsIDIyMSwgMjU1LCAxMjQsIDE0MywgMjUwLCAxNjAsIDIyMSwgMjU1LCAxNiwgMjIwLCAxOSwgCisgICAgMjQ0LCAzMywgMjIxLCAyNTUsIDE2LCAyMzgsIDIwNiwgMjIxLCAyNTUsIDI0NSwgMjMzLCAyMjEsIDI1NSwgMjQwLCAyMTIsIAorICAgIDgyLCAyMjEsIDI1NSwgMjI4LCA4NCwgMjE0LCAyNTIsIDEsIDI1MSwgMzcsIDIxNCwgMjUyLCAxLCAyNDgsIDUxLCAyMTQsIAorICAgIDI1MiwgMSwgMjM4LCAyNDAsIDIxNCwgMjUyLCAxLCAyNDQsIDE4MywgMjE0LCAyNTIsIDEsIDIzMCwgMTkyLCAyMTQsIDI1MiwgCisgICAgMSwgMjQ5LCAzMCwgMjE0LCAyNTIsIDEsIDIwMiwgODcsIDIxNCwgMjUyLCAxLCAyMzAsIDIwMSwgMjE0LCAyNTIsIDEsIAorICAgIDIwOCwgMjAwLCAyMTQsIDI1MiwgMSwgMjAyLCAxODIsIDIxNCwgMjUyLCAxLCAyMzAsIDM4LCAyMTQsIDI1MiwgMSwgMjI4LCAKKyAgICAxMDYsIDIxNCwgMjUyLCAxLCAyMjQsIDExMiwgMjE0LCAyNTIsIDEsIDIyMSwgNDAsIDIxNCwgMjUyLCAxLCAyMTIsIDEyMSwgCisgICAgMjE0LCAyNTIsIDEsIDIzMSwgNDksIDIxNCwgMjUyLCAxLCAyNDAsIDI2LCAyMTQsIDI1MiwgMSwgMjA4LCAxOCwgMjE0LCAKKyAgICAyNTIsIDEsIDIxNywgNDQsIDIxNCwgMjUyLCAxLCAyMTUsIDI0NiwgMjE0LCAyNTIsIDEsIDIxMywgNjYsIDIxNCwgMjUyLCAKKyAgICAxLCAyMTAsIDE3LCAyMTQsIDI1MiwgMTMxLCAyMzEsIDQ5LCAyMTQsIDI1MiwgMTMxLCAyMzEsIDQ4LCAyMTQsIDI1MiwgCisgICAgMTMxLCAyMjAsIDg0LCAyMTQsIDI1MiwgMTMxLCAyNDQsIDE5NywgMjE0LCAyNTIsIDY1LCAxLCAyNDEsIDQyLCAyMDIsIAorICAgIDE4MiwgMjE0LCAyNTIsIDEzMSwgMjQxLCA0MiwgMjAyLCAxODIsIDIxNCwgMjUyLCAyMiwgMiwgMTYzLCA3NCwgMjE0LCAKKyAgICAyNTIsIDIyLCAyLCA3NCwgMjE0LCAyNTIsIDIyLCAyLCAyMTksIDE5NywgMjUyLCAyNSwgMjE0LCAyNTIsIDIyLCAyLCAxNjMsIAorICAgIDI1MiwgMjUsIDIxNCwgMjUyLCAyMiwgMiwgMjUyLCAyNSwgMjE0LCAyNTIsIDIyLCAyLCAyMTksIDE5NywgNjMsIDIxNCwgCisgICAgMjUyLCAyMiwgMiwgMTYzLCA2MywgMjE0LCAyNTIsIDIyLCAyLCA2MywgMjE0LCAyNTIsIDY1LCAxLCAyMTIsIDIyOCwgNjMsIAorICAgIDIxNCwgMjUyLCAyMiwgMiwgMjEyLCAyMjgsIDYzLCAyMTQsIDI1MiwgMjIsIDIsIDE2MywgNjgsIDIxNCwgMjUyLCAyMiwgMiwgCisgICAgNjgsIDIxNCwgMjUyLCA2NSwgMSwgNzUsIDIxNCwgMjUyLCAyMiwgMiwgMTYzLCA3NSwgMjE0LCAyNTIsIDIyLCAyLCA3NSwgCisgICAgMjE0LCAyNTIsIDIyLCAyLCA3OCwgMjE0LCAyNTIsIDIyLCAyLCAyMTAsIDIyMiwgMjE0LCAyNTIsIDEzMSwgMjIyLCAyMjMsIAorICAgIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjIyLCAyMjMsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjUxLCA4MywgMjE0LCAyNTIsIDIxNywgCisgICAgMTc5LCAyNTAsIDIyMiwgMjE0LCAyNTIsIDIxNywgMTc5LCAyNDgsIDIwMiwgMjE0LCAyNTIsIDIxNywgMTc5LCAyNTAsIDQ0LCAKKyAgICAyMTQsIDI1MiwgMjE3LCAxNzksIDIxMiwgMjQzLCAyMTQsIDI1MiwgMjUxLCAxNDYsIDgyLCAyMTQsIDI1MiwgMjE3LCAxNzksIAorICAgIDIyNCwgMjUwLCAyMTcsIDgwLCAyMTQsIDI1MiwgMjE3LCAxNzksIDIwMiwgMjUsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjE3LCAKKyAgICA4MCwgMjE0LCAyNTIsIDIxNywgMTc5LCAyMDIsIDExMywgMjE0LCAyNTIsIDIxNywgMTc5LCAyMDcsIDE3MCwgMjE0LCAyNTIsIAorICAgIDIxNywgMTc5LCAyNTAsIDExMSwgMjE0LCAyNTIsIDIxNywgMTc5LCAyMTIsIDgsIDIyNSwgNzcsIDIxNCwgMjUyLCAyMTcsIAorICAgIDE3OSwgMjUwLCAyMDYsIDIyNSwgMTE4LCAxLCAyMzcsIDEzNCwgMjI1LCAxMTgsIDEsIDI1MSwgMjMyLCAyMjUsIDExOCwgMSwgCisgICAgMjUxLCA4MSwgMjI1LCAxMTgsIDEsIDI1MSwgMTIyLCAyMjUsIDExOCwgMSwgMjUxLCA3MywgMjI1LCAxMTgsIDEsIDIwNiwgCisgICAgMTg0LCAyMjUsIDExOCwgMSwgMjUwLCAxLCAyMjUsIDExOCwgMSwgMjMwLCAyMDEsIDIyNSwgMTE4LCAxLCAyNTAsIDQxLCAKKyAgICAyMjUsIDExOCwgMSwgMjUxLCA0MiwgMjI1LCAxMTgsIDEsIDI1MSwgNDcsIDIyNSwgMTE4LCAxLCAyNTEsIDM5LCAyMjUsIAorICAgIDExOCwgMSwgMjUwLCAyNDcsIDIyNSwgMTE4LCAxLCAyNTAsIDIzMSwgMjI1LCAxMTgsIDEsIDI1MCwgODEsIDIyNSwgMTE4LCAKKyAgICAxLCAyMzEsIDQ5LCAyMjUsIDExOCwgMSwgMjUwLCAxNzUsIDIyNSwgMTE4LCAxLCAyNTAsIDUxLCAyMjUsIDExOCwgMSwgCisgICAgMjUwLCAxNDgsIDIyNSwgMTE4LCAxLCAyNTAsIDE0NCwgMjI1LCAxMTgsIDEsIDI1MCwgNzUsIDIyNSwgMTE4LCAxLCAyNTAsIAorICAgIDQ5LCAyMjUsIDExOCwgMSwgMjQyLCAxOCwgMjI1LCAxMTgsIDEsIDIzMCwgMzAsIDIyNSwgMTE4LCAxLCAyNTEsIDU5LCAKKyAgICAyMjUsIDExOCwgMjUxLCA4NywgODIsIDIyNSwgMTE4LCAyMDUsIDE4NywgODIsIDIyNSwgMTE4LCAyMzgsIDE3OSwgODIsIAorICAgIDIyNSwgMTE4LCAyMTcsIDE3OCwgMTAsIDEsIDI0OCwgMTM5LCAzLCA1LCAyMDYsIDE2NSwgNTYsIDEwLCAxLCAyNDgsIDEzOSwgCisgICAgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMTg0LCAzLCAxMjAsIDE4NywgNTUsIDEwLCAxLCAyMDksIDI1MiwgMywgMTIwLCAKKyAgICAxODcsIDU1LCAxMCwgMSwgMjQwLCA0OCwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjE3LCAKKyAgICAxMjAsIDMsIDcwLCA1NiwgMTAsIDEsIDIyOCwgMjksIDMsIDUyLCAxNDIsIDEwLCAxLCA4MywgMywgMTI2LCAxODcsIDU1LCAKKyAgICAxMCwgMSwgODksIDMsIDEyMCwgMTg3LCAyNDgsIDEyNiwgMjUsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDg5LCAzLCAxMjAsIAorICAgIDE4NywgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDEwLCAxLCAyMTYsIDEyMywgMywgMjI3LCAxNCwgMTAsIDEsIDIwNCwgNzEsIAorICAgIDMsIDcwLCAyMDQsIDQsIDEwLCAxLCAyMTUsIDIxNSwgMjAzLCA0NywgMTAsIDEsIDEyNCwgMjUxLCAzMCwgMTAsIDEsIDI0NCwgCisgICAgMTg1LCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMTUsIDI5LCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMzgsIDI1MiwgCisgICAgMywgMjMwLCAyMzksIDk1LCAxMCwgMSwgMjExLCA1MywgMjA0LCA3MCwgMTAsIDEsIDIwMiwgMTA4LCAzLCAyMzAsIDIzOSwgCisgICAgMjA2LCAxNjUsIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjMwLCAyMywgMywgNzAsIDU2LCAKKyAgICAxMCwgMjA3LCAxNzQsIDI0NCwgMTczLCA1NiwgMTAsIDI0NSwgOTMsIDI0MCwgNzEsIDEwLCAyNDUsIDkzLCAyNDQsIDE3MiwgCisgICAgMTAsIDI0NSwgOTMsIDIyOSwgMjI5LCAxMCwgMjQ1LCA5MywgMjQwLCA2OSwgMTAsIDI0NSwgOTMsIDI0NCwgMTcwLCAxMCwgCisgICAgMjQ1LCA5MywgMjI5LCAyMjcsIDEwLCAxNDMsIDExOCwgNzAsIDU1LCAxMCwgMTQzLCAxMjAsIDE4NywgNTUsIDEwLCAxNDMsIAorICAgIDIyNywgMTUsIDU1LCAxMCwgMTQzLCAxMTgsIDcwLCA1NiwgMTAsIDE0MywgMTIwLCAxODcsIDU2LCAxMCwgMTQzLCAyMjcsIAorICAgIDE1LCA1NiwgMTAsIDE3MSwgMjQwLCA2OSwgMTAsIDE3MSwgMjQ0LCAxNzAsIDEwLCAxNzEsIDIyOSwgMjI3LCAxMCwgNSwgCisgICAgMTM4LCAyMDQsIDcwLCAxMCwgMjQwLCA3MiwgMywgMjE1LCAyNTIsIDEwLCAyNDAsIDcyLCAzLCA3MCwgNTUsIDEwLCAyMjksIAorICAgIDIzMCwgMywgNzAsIDU2LCAxMCwgNDksIDI1MCwgOTUsIDU1LCAxMCwgNTAsIDI1MCwgOTUsIDU1LCAxMCwgNDksIDI1MCwgCisgICAgOTUsIDU2LCAxMCwgNTAsIDI1MCwgOTUsIDU2LCAxMCwgNTIsIDUwLCAyNTAsIDk1LCA1NSwgMTAsIDUyLCA1MCwgMjUwLCAKKyAgICA5NSwgODcsIDMsIDI0MywgODUsIDEwLCA1MCwgMjUwLCA5NSwgODcsIDMsIDI0MywgODUsIDEwLCAyNDQsIDE3MywgMywgCisgICAgMjQzLCA4NSwgMTAsIDEzMSwgMjEyLCAxNTQsIDIyMSwgMTc5LCAyMzgsIDg1LCA5MiwgMiwgMjMwLCAyMzksIDI0NywgNTIsIAorICAgIDkyLCAyLCAyNDcsIDUyLCA5MiwgMiwgMjUwLCAxODAsIDkyLCAyLCAyMDUsIDE5OSwgOTIsIDEsIDIxMiwgMjI4LCA2MywgCisgICAgOTIsIDEsIDYzLCA5MiwgMSwgMjUyLCAyNSwgOTIsIDEsIDc1LCA5MiwgMSwgMjMxLCA4MywgOTIsIDEsIDY4LCA5MiwgMSwgCisgICAgMjA2LCAxNzgsIDkyLCAxLCAxMjUsIDE0NiwgOTIsIDEsIDEyNSwgMTU5LCA5MiwgMSwgMjQ3LCA1NSwgNzQsIDkyLCAxLCAKKyAgICAyMTIsIDIyOCwgNzQsIDkyLCAxLCA3NCwgOTIsIDEsIDI1MSwgNjQsIDkyLCAxLCAyNDcsIDU1LCA3OCwgOTIsIDEsIDIxMiwgCisgICAgMjI4LCA3OCwgOTIsIDEsIDc4LCA5MiwgMSwgMjUwLCAzNCwgOTIsIDEsIDE3MywgOTIsIDEsIDIyOSwgMTQ0LCA5MiwgMSwgCisgICAgMjM5LCA4LCA5MiwgMSwgMjM4LCAxMTksIDkyLCAxLCAyMjIsIDIwMywgOTIsIDEsIDI0NywgOTIsIDkyLCAxLCAyNDYsIAorICAgIDE5OSwgOTIsIDEsIDIzMCwgMTgxLCA5MiwgMSwgMjMwLCAxNDksIDkyLCAxLCAyMjEsIDExLCA5MiwgMSwgMjA3LCAyNDEsIAorICAgIDkyLCAxLCAyMDcsIDIyOSwgOTIsIDEsIDI0NCwgMTIwLCA5MiwgMSwgMjQ0LCAxMDQsIDkyLCAxLCAyMjEsIDIyNywgOTIsIAorICAgIDEsIDIxMCwgMjIsIDkyLCAxLCAyMDksIDEwOCwgOTIsIDEsIDI0NCwgMjEyLCA5MiwgMSwgMjQ0LCAxLCA5MiwgMSwgMjAxLCAKKyAgICAyMDEsIDkyLCAxLCAyMjEsIDIwOSwgOTIsIDEsIDE4NSwgOTIsIDEsIDIxOCwgMjA4LCA5MiwgMSwgMjQ5LCAzMiwgOTIsIDEsIAorICAgIDI0OCwgOTgsIDkyLCAxLCAxOTIsIDkyLCAxLCAxOTgsIDkyLCAxLCAyMTYsIDIyMCwgOTIsIDEsIDIxNSwgMTg1LCA5MiwgMSwgCisgICAgMjI4LCAxMTMsIDkyLCAxLCAyMjcsIDc3LCA5MiwgMSwgMjI3LCA2OCwgOTIsIDEsIDIwNiwgODYsIDkyLCAxLCAyMTMsIDkwLCAKKyAgICA5MiwgMSwgMjExLCAxNjQsIDkyLCAxLCAyMTUsIDM2LCA5MiwgMSwgMTUyLCA5MiwgMjIsIDIsIDIyMCwgNzMsIDkyLCAyMiwgCisgICAgMiwgMjIwLCAxNiwgOTIsIDIsIDIyMSwgNTEsIDkyLCAyLCAyNTAsIDE3LCA5MiwgMjIsIDIsIDI1MiwgMjUsIDkyLCAyMiwgCisgICAgMiwgNzUsIDkyLCAyMiwgMiwgMjMxLCA4MywgOTIsIDIyLCAyLCA2OCwgOTIsIDIyLCAyLCAyMDYsIDE3OCwgOTIsIDIyLCAyLCAKKyAgICAxMjUsIDE0NiwgOTIsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCA5MiwgMjIsIDIsIDI0NywgNTUsIDc0LCA5MiwgMjIsIDIsIAorICAgIDIxMiwgMjI4LCA3NCwgOTIsIDIyLCAyLCA3NCwgOTIsIDIyLCAyLCAyNTEsIDY0LCA5MiwgMjIsIDIsIDI0NywgNTUsIDc4LCAKKyAgICA5MiwgMjIsIDIsIDIxMiwgMjI4LCA3OCwgOTIsIDIyLCAyLCA3OCwgOTIsIDIyLCAyLCAyNTAsIDM0LCA5MiwgMiwgMjA1LCAKKyAgICAyMDQsIDkyLCAyMiwgMiwgMjE3LCAyMjksIDc0LCA5MiwgMjIsIDIsIDI1MCwgMTMsIDkyLCAyMjAsIDM5LCA5MiwgMjExLCAKKyAgICA0MiwgMiwgMjA3LCAyNiwgOTIsIDIxMSwgNDIsIDIsIDI1MCwgMTgyLCA5MiwgMjM3LCAyNTQsIDI1MSwgMTM4LCA5MiwgCisgICAgMjUxLCAxMjYsIDI1MSwgMTM4LCA5MiwgMjIsIDIsIDI0NywgNTUsIDE2MywgNzQsIDkyLCAyMiwgMiwgMjA3LCAyNCwgOTIsIAorICAgIDIyLCAyLCAyMDYsIDE3NywgOTIsIDEsIDIxNywgMTI2LCA5MiwgMSwgMjI5LCAxMjUsIDkyLCAxLCAyMzgsIDk0LCA5MiwgMSwgCisgICAgMjAyLCAxMTYsIDkyLCAxLCAyNDQsIDEwOSwgOTIsIDEsIDIxNiwgNjEsIDkyLCAxLCAyNDAsIDEwOCwgOTIsIDEsIDIwMiwgCisgICAgMTY4LCA5MiwgMSwgMTI1LCAyMTUsIDE4NiwgOTIsIDEsIDEyNSwgMjI3LCA3OCwgOTIsIDIyLCAyLCAxMjUsIDE1OSwgOTIsIAorICAgIDIyLCAyLCAxMjUsIDIyNywgNzgsIDkyLCAyNDQsIDE2NiwgOTIsIDUyLCAyNDQsIDE2NiwgOTIsIDE3LCAyMDIsIDg0LCA5MiwgCisgICAgMTcsIDEwNSwgOTIsIDE3LCAxMDgsIDkyLCAxNywgMTQ3LCA5MiwgMTcsIDE0OSwgOTIsIDE3LCAxNzAsIDkyLCAxNywgMTk1LCAKKyAgICA5MiwgMTcsIDIxMywgMTExLCA5MiwgMTcsIDE5OSwgOTIsIDE3LCAyMjIsIDYzLCA5MiwgMjUxLCAxNDYsIDU0LCA5MiwgMiwgCisgICAgMTM4LCAyMTEsIDIyNywgMjQzLCA4NSwgOTIsIDEsIDI0NywgNTUsIDYzLCA5MiwgMSwgMjIwLCA3MywgOTIsIDEsIDIyMCwgCisgICAgMTYsIDkyLCAxLCAyNTAsIDEzLCA5MiwgMSwgMjA3LCAyNCwgOTIsIDEsIDIwNiwgMTc3LCA5MiwgMSwgMjI1LCA4MiwgMjQ0LCAKKyAgICAxMjAsIDkyLCAxLCAyMDIsIDgwLCA5MiwgMSwgNzksIDE5OCwgOTIsIDEsIDIzOCwgMTU1LCA5MiwgMSwgMjMwLCAxMjksIAorICAgIDkyLCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA5MiwgMSwgMjQ0LCAxMTAsIDkyLCAxLCAyNDgsIDE5OCwgMTc5LCAyNTAsIDIwOSwgCisgICAgMTc5LCAyLCAyNDcsIDUyLCAxNzksIDIsIDI1MCwgMTgwLCAxNzksIDIsIDIwNSwgMTk5LCAxNzksIDEsIDYzLCAxNzksIDEsIAorICAgIDI1MiwgMjUsIDE3OSwgMSwgNzUsIDE3OSwgMSwgMjMxLCA4MywgMTc5LCAxLCA2OCwgMTc5LCAxLCAyMDYsIDE3OCwgMTc5LCAKKyAgICAxLCAxMjUsIDE0NiwgMTc5LCAxLCAxMjUsIDE1OSwgMTc5LCAxLCA3NCwgMTc5LCAxLCAyNTEsIDY0LCAxNzksIDEsIDc4LCAKKyAgICAxNzksIDEsIDI1MCwgMzQsIDE3OSwgMSwgMTczLCAxNzksIDEsIDIyOSwgMTQ0LCAxNzksIDEsIDIzOSwgOCwgMTc5LCAxLCAKKyAgICAyMzgsIDExOSwgMTc5LCAxLCAyMjIsIDIwMywgMTc5LCAxLCAyNDcsIDkyLCAxNzksIDEsIDI0NiwgMTk5LCAxNzksIDEsIAorICAgIDIzMCwgMTgxLCAxNzksIDEsIDIzMCwgMTQ5LCAxNzksIDEsIDIyMSwgMTEsIDE3OSwgMSwgMjA3LCAyNDEsIDE3OSwgMSwgCisgICAgMjA3LCAyMjksIDE3OSwgMSwgMjQ0LCAxMjAsIDE3OSwgMSwgMjQ0LCAxMDQsIDE3OSwgMSwgMjIxLCAyMjcsIDE3OSwgMSwgCisgICAgMjEwLCAyMiwgMTc5LCAxLCAyMDksIDEwOCwgMTc5LCAxLCAyNDQsIDIxMiwgMTc5LCAxLCAyNDQsIDEsIDE3OSwgMSwgMjAxLCAKKyAgICAyMDEsIDE3OSwgMSwgMTg1LCAxNzksIDEsIDIxOCwgMjA4LCAxNzksIDEsIDI0OSwgMzIsIDE3OSwgMSwgMjQ4LCA5OCwgCisgICAgMTc5LCAxLCAxOTIsIDE3OSwgMSwgMTk4LCAxNzksIDEsIDIxNiwgMjIwLCAxNzksIDEsIDIyOCwgMTEzLCAxNzksIDEsIAorICAgIDIxMywgOTAsIDE3OSwgMSwgMjExLCAxNjQsIDE3OSwgMSwgMjE1LCAzNiwgMTc5LCAxLCAxNTIsIDE3OSwgMiwgMjIxLCA1MSwgCisgICAgMTc5LCAyLCAyNTAsIDE3LCAxNzksIDIyLCAyLCAyNTIsIDI1LCAxNzksIDIyLCAyLCA3NSwgMTc5LCAyMiwgMiwgMjMxLCAKKyAgICA4MywgMTc5LCAyMiwgMiwgNjgsIDE3OSwgMjIsIDIsIDIwNiwgMTc4LCAxNzksIDIyLCAyLCAxMjUsIDE0NiwgMTc5LCAyMiwgCisgICAgMiwgMTI1LCAyMTUsIDE4NiwgMTc5LCAyMiwgMiwgNzQsIDE3OSwgMjIsIDIsIDI1MSwgNjQsIDE3OSwgMjIsIDIsIDc4LCAKKyAgICAxNzksIDIyLCAyLCAyNTAsIDM0LCAxNzksIDIsIDIwNSwgMjA0LCAxNzksIDEsIDIyOSwgMTM1LCAyMTAsIDIyLCAxNzksIAorICAgIDI1MCwgMzUsIDIyNywgMTk2LCA4MiwgMTc5LCAxLCAyMTUsIDE4NSwgMTc5LCAxLCAyMTYsIDYxLCAxNzksIDEsIDIwMiwgCisgICAgMTY4LCAxNzksIDEsIDEyNSwgMjE1LCAxODYsIDE3OSwgMSwgMTI1LCAyMjcsIDc4LCAxNzksIDIyLCAyLCAxMjUsIDE1OSwgCisgICAgMTc5LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAxNzksIDE3LCAyMDIsIDg0LCAxNzksIDE3LCAxMDUsIDE3OSwgMTcsIDEwOCwgCisgICAgMTc5LCAxNywgMTQ3LCAxNzksIDE3LCAxNDksIDE3OSwgMTcsIDE3MCwgMTc5LCAxNywgMTk1LCAxNzksIDE3LCAyMTMsIAorICAgIDExMSwgMTc5LCAxNywgMTk5LCAxNzksIDE3LCAyMjIsIDYzLCAxNzksIDEsIDIxNiwgMjIxLCAzLCAxMDEsIDI0MywgMjI3LCAKKyAgICAxNzksIDEsIDIxNiwgMjIxLCAzLCAyMjYsIDI1MSwgMjQzLCAyMjcsIDE3OSwgMjE1LCAxMjAsIDgyLCAxNzksIDIxNSwgCisgICAgMTIwLCA1NCwgMTc5LCAyNDUsIDkyLCAyMjEsIDQzLCAxMDUsIDE3OSwgMjQ1LCA5MiwgMjIxLCA0MywgMTA4LCAxNzksIAorICAgIDI0NSwgOTIsIDIyMSwgNDMsIDE0NywgMTc5LCAyNDUsIDkyLCAyMjEsIDQzLCAxNDksIDE3OSwgMjQ1LCA5MiwgMjIxLCA0MywgCisgICAgMTE4LCAyMjcsIDE4MCwgMjA5LCA5OCwgMjA5LCA5MywgMjQ0LCAzMSwgMTc5LCAyNDUsIDkyLCAyNDQsIDMyLCAyMTIsIDgyLCAKKyAgICAxNzksIDIzMCwgMjAyLCAxNzksIDIzOCwgMjMxLCA4MiwgMjM3LCAxOTgsIDIsIDI1MSwgMTIxLCAyNDgsIDY2LCAyMzcsIAorICAgIDE5OCwgMiwgMjQ4LCA2NiwgMjM3LCAxOTgsIDIsIDIwNSwgMTk5LCAyMzcsIDE5OCwgMSwgNjMsIDIzNywgMTk4LCAxLCAKKyAgICAyNTIsIDI1LCAyMzcsIDE5OCwgMSwgNzUsIDIzNywgMTk4LCAxLCAyMzEsIDgzLCAyMzcsIDE5OCwgMSwgNjgsIDIzNywgCisgICAgMTk4LCAxLCAyMDYsIDE3OCwgMjM3LCAxOTgsIDEsIDI0MSwgMTYxLCAyMzcsIDE5OCwgMSwgMjUxLCA2NCwgMjM3LCAxOTgsIAorICAgIDEsIDIyMCwgMTgsIDIzNywgMTk4LCAxLCAyNTAsIDM0LCAyMzcsIDE5OCwgMSwgMTczLCAyMzcsIDE5OCwgMSwgMjI5LCAKKyAgICAxNDQsIDIzNywgMTk4LCAxLCAyMzksIDgsIDIzNywgMTk4LCAxLCAyMzgsIDExOSwgMjM3LCAxOTgsIDEsIDIyMiwgMjAzLCAKKyAgICAyMzcsIDE5OCwgMSwgMjQ3LCA5MiwgMjM3LCAxOTgsIDEsIDI0NiwgMTk5LCAyMzcsIDE5OCwgMSwgMjMwLCAxODEsIDIzNywgCisgICAgMTk4LCAxLCAyMzAsIDE0OSwgMjM3LCAxOTgsIDEsIDIyMSwgMTEsIDIzNywgMTk4LCAxLCAyMDcsIDI0MSwgMjM3LCAxOTgsIAorICAgIDEsIDIwNywgMjI5LCAyMzcsIDE5OCwgMSwgMjQ0LCAxMjAsIDIzNywgMTk4LCAxLCAyNDQsIDEwNCwgMjM3LCAxOTgsIDEsIAorICAgIDIyMSwgMjI3LCAyMzcsIDE5OCwgMSwgMjEwLCAyMiwgMjM3LCAxOTgsIDEsIDIwOSwgMTA4LCAyMzcsIDE5OCwgMSwgMjQ0LCAKKyAgICAyMTIsIDIzNywgMTk4LCAxLCAyNDQsIDEsIDIzNywgMTk4LCAxLCAyMDEsIDIwMSwgMjM3LCAxOTgsIDEsIDE4NSwgMjM3LCAKKyAgICAxOTgsIDEsIDIxOCwgMjA4LCAyMzcsIDE5OCwgMSwgMjQ5LCAzMiwgMjM3LCAxOTgsIDEsIDI0OCwgOTgsIDIzNywgMTk4LCAKKyAgICAxLCAxOTIsIDIzNywgMTk4LCAxLCAxOTgsIDIzNywgMTk4LCAxLCAyMTYsIDIyMCwgMjM3LCAxOTgsIDEsIDIyOCwgMTEzLCAKKyAgICAyMzcsIDE5OCwgMSwgMjI3LCA3NywgMjM3LCAxOTgsIDEsIDIwNiwgODYsIDIzNywgMTk4LCAxLCAyMTMsIDkwLCAyMzcsIAorICAgIDE5OCwgMSwgMjE1LCAzNiwgMjM3LCAxOTgsIDEsIDE1MiwgMjM3LCAxOTgsIDIsIDIyMSwgNTEsIDIzNywgMTk4LCAyMiwgMiwgCisgICAgMjUyLCAyNSwgMjM3LCAxOTgsIDIyLCAyLCA3NSwgMjM3LCAxOTgsIDIyLCAyLCAyMzEsIDgzLCAyMzcsIDE5OCwgMjIsIDIsIAorICAgIDY4LCAyMzcsIDE5OCwgMjIsIDIsIDIwNiwgMTc4LCAyMzcsIDE5OCwgMjIsIDIsIDI0MSwgMTYxLCAyMzcsIDE5OCwgMjIsIAorICAgIDIsIDI1MSwgNjQsIDIzNywgMTk4LCAyMiwgMiwgMjIwLCAxOCwgMjM3LCAxOTgsIDIyLCAyLCAyNTAsIDM0LCAyMzcsIDE5OCwgCisgICAgMiwgMjA1LCAyMDQsIDIzNywgMTk4LCAyLCAyMDcsIDI4LCAyMzcsIDE5OCwgMSwgMjI5LCAxMjUsIDIzNywgMTk4LCAxLCAKKyAgICAyMzgsIDk0LCAyMzcsIDE5OCwgMSwgMjAyLCAxMTYsIDIzNywgMTk4LCAxLCAyMTUsIDE4NSwgMjM3LCAxOTgsIDEsIDI0MCwgCisgICAgMTA4LCAyMzcsIDE5OCwgMTcsIDIwMiwgODQsIDIzNywgMTk4LCAxNywgMTA1LCAyMzcsIDE5OCwgMTcsIDEwOCwgMjM3LCAKKyAgICAxOTgsIDE3LCAxNDcsIDIzNywgMTk4LCAxNywgMTQ5LCAyMzcsIDE5OCwgMTcsIDE3MCwgMjM3LCAxOTgsIDE3LCAxOTUsIAorICAgIDIzNywgMTk4LCAxNywgMjEzLCAxMTEsIDIzNywgMTk4LCAxNywgMTk5LCAyMzcsIDE5OCwgMTcsIDIyMiwgNjMsIDIzNywgCisgICAgMTk4LCAyMDgsIDIwOCwgMjM3LCAxOTgsIDI1MSwgMTIwLCAyMzcsIDE5OCwgMjMwLCAyMjIsIDIzNywgMTk4LCAyMDYsIAorICAgIDIwNiwgMjM3LCAxOTgsIDI0MSwgMTMwLCAyMjAsIDIzLCAyMzcsIDE5OCwgMiwgMjAzLCA4NSwgMjM3LCAyMTMsIDIsIDI0NywgCisgICAgNTIsIDIzNywgMjEzLCAyLCAyNTAsIDE4MCwgMjM3LCAyMTMsIDIsIDIwNSwgMTk5LCAyMzcsIDIxMywgMSwgNjMsIDIzNywgCisgICAgMjEzLCAxLCAyNTIsIDI1LCAyMzcsIDIxMywgMSwgNzUsIDIzNywgMjEzLCAxLCAyMzEsIDgzLCAyMzcsIDIxMywgMSwgNjgsIAorICAgIDIzNywgMjEzLCAxLCAyMDYsIDE3OCwgMjM3LCAyMTMsIDEsIDEyNSwgMTQ2LCAyMzcsIDIxMywgMSwgMTI1LCAxNTksIDIzNywgCisgICAgMjEzLCAyMiwgMjQ3LCA1NSwgNzQsIDIzNywgMjEzLCAxLCA3NCwgMjM3LCAyMTMsIDEsIDI1MSwgNjQsIDIzNywgMjEzLCAKKyAgICAyMiwgMjQ3LCA1NSwgNzgsIDIzNywgMjEzLCAxLCA3OCwgMjM3LCAyMTMsIDEsIDI1MCwgMzQsIDIzNywgMjEzLCAxLCAxNzMsIAorICAgIDIzNywgMjEzLCAxLCAyMjksIDE0NCwgMjM3LCAyMTMsIDEsIDIzOSwgOCwgMjM3LCAyMTMsIDEsIDIzOCwgMTE5LCAyMzcsIAorICAgIDIxMywgMSwgMjIyLCAyMDMsIDIzNywgMjEzLCAxLCAyNDcsIDkyLCAyMzcsIDIxMywgMSwgMjQ2LCAxOTksIDIzNywgMjEzLCAKKyAgICAxLCAyMzAsIDE4MSwgMjM3LCAyMTMsIDEsIDIzMCwgMTQ5LCAyMzcsIDIxMywgMSwgMjIxLCAxMSwgMjM3LCAyMTMsIDEsIAorICAgIDIwNywgMjQxLCAyMzcsIDIxMywgMSwgMjA3LCAyMjksIDIzNywgMjEzLCAxLCAyNDQsIDEyMCwgMjM3LCAyMTMsIDEsIDI0NCwgCisgICAgMTA0LCAyMzcsIDIxMywgMSwgMjIxLCAyMjcsIDIzNywgMjEzLCAxLCAyMTAsIDIyLCAyMzcsIDIxMywgMSwgMjA5LCAxMDgsIAorICAgIDIzNywgMjEzLCAxLCAyNDQsIDIxMiwgMjM3LCAyMTMsIDEsIDI0NCwgMSwgMjM3LCAyMTMsIDEsIDIwMSwgMjAxLCAyMzcsIAorICAgIDIxMywgMSwgMTg1LCAyMzcsIDIxMywgMSwgMjE4LCAyMDgsIDIzNywgMjEzLCAxLCAyNDksIDMyLCAyMzcsIDIxMywgMSwgCisgICAgMjQ4LCA5OCwgMjM3LCAyMTMsIDEsIDE5MiwgMjM3LCAyMTMsIDEsIDE5OCwgMjM3LCAyMTMsIDEsIDIxNiwgMjIwLCAyMzcsIAorICAgIDIxMywgMSwgMjI4LCAxMTMsIDIzNywgMjEzLCAxLCAyMjcsIDc3LCAyMzcsIDIxMywgMSwgMjA2LCA4NiwgMjM3LCAyMTMsIAorICAgIDEsIDIxMywgOTAsIDIzNywgMjEzLCAxLCAyMTEsIDE2NCwgMjM3LCAyMTMsIDEsIDIxNSwgMzYsIDIzNywgMjEzLCAxLCAKKyAgICAxNTIsIDIzNywgMjEzLCAyLCAyMjEsIDUxLCAyMzcsIDIxMywgMiwgMjUwLCAxNywgMjM3LCAyMTMsIDIyLCAyLCAyNTIsIAorICAgIDI1LCAyMzcsIDIxMywgMjIsIDIsIDc1LCAyMzcsIDIxMywgMjIsIDIsIDIzMSwgODMsIDIzNywgMjEzLCAyMiwgMiwgNjgsIAorICAgIDIzNywgMjEzLCAyMiwgMiwgMjA2LCAxNzgsIDIzNywgMjEzLCAyMiwgMiwgMTI1LCAxNDYsIDIzNywgMjEzLCAyMiwgMiwgCisgICAgMTI1LCAyMTUsIDE4NiwgMjM3LCAyMTMsIDIyLCAyLCAyNDcsIDU1LCA3NCwgMjM3LCAyMTMsIDIyLCAyLCA3NCwgMjM3LCAKKyAgICAyMTMsIDIyLCAyLCAyNTEsIDY0LCAyMzcsIDIxMywgMjIsIDIsIDI0NywgNTUsIDc4LCAyMzcsIDIxMywgMjIsIDIsIDc4LCAKKyAgICAyMzcsIDIxMywgMjIsIDIsIDI1MCwgMzQsIDIzNywgMjEzLCAyLCAyMDUsIDIwNCwgMjM3LCAyMTMsIDIyMCwgMzksIDIzNywgCisgICAgMjEzLCAxLCAxMjUsIDIxNSwgMTg2LCAyMzcsIDIxMywgMSwgMTI1LCAyMjcsIDc4LCAyMzcsIDIxMywgMjIsIDIsIDEyNSwgCisgICAgMTU5LCAyMzcsIDIxMywgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMjM3LCAyMTMsIDE3LCAyMDIsIDg0LCAyMzcsIDIxMywgMTcsIAorICAgIDEwNSwgMjM3LCAyMTMsIDE3LCAxMDgsIDIzNywgMjEzLCAxNywgMTQ3LCAyMzcsIDIxMywgMTcsIDE0OSwgMjM3LCAyMTMsIAorICAgIDE3LCAxNzAsIDIzNywgMjEzLCAxNywgMTk1LCAyMzcsIDIxMywgMTcsIDIxMywgMTExLCAyMzcsIDIxMywgMTcsIDE5OSwgCisgICAgMjM3LCAyMTMsIDE3LCAyMjIsIDYzLCAyMzcsIDIxMywgMjUxLCAxNDYsIDU0LCAyMzcsIDIxMywgMjE1LCAxMjAsIDU0LCAKKyAgICAyMzcsIDIxMywgMSwgMjAyLCA4MCwgMTkzLCAyLCAyNDcsIDUyLCAxOTMsIDIsIDI1MCwgMTgwLCAxOTMsIDIsIDIwNSwgCisgICAgMTk5LCAxOTMsIDEsIDYzLCAxOTMsIDEsIDI1MiwgMjUsIDE5MywgMSwgNzUsIDE5MywgMSwgMjMxLCA4MywgMTkzLCAxLCAKKyAgICA2OCwgMTkzLCAxLCAyMDYsIDE3OCwgMTkzLCAxLCAxMjUsIDE0NiwgMTkzLCAxLCAxMjUsIDE1OSwgMTkzLCAxLCA3NCwgCisgICAgMTkzLCAxLCAyNTEsIDY0LCAxOTMsIDEsIDc4LCAxOTMsIDEsIDI1MCwgMzQsIDE5MywgMSwgMTczLCAxOTMsIDEsIDIyOSwgCisgICAgMTQ0LCAxOTMsIDEsIDIzOSwgOCwgMTkzLCAxLCAyMzgsIDExOSwgMTkzLCAxLCAyMjIsIDIwMywgMTkzLCAxLCAyNDcsIDkyLCAKKyAgICAxOTMsIDEsIDI0NiwgMTk5LCAxOTMsIDEsIDIzMCwgMTgxLCAxOTMsIDEsIDIzMCwgMTQ5LCAxOTMsIDEsIDIyMSwgMTEsIAorICAgIDE5MywgMSwgMjA3LCAyNDEsIDE5MywgMSwgMjA3LCAyMjksIDE5MywgMSwgMjQ0LCAxMjAsIDE5MywgMSwgMjQ0LCAxMDQsIAorICAgIDE5MywgMSwgMjIxLCAyMjcsIDE5MywgMSwgMjEwLCAyMiwgMTkzLCAxLCAyMDksIDEwOCwgMTkzLCAxLCAyNDQsIDIxMiwgCisgICAgMTkzLCAxLCAyNDQsIDEsIDE5MywgMSwgMjAxLCAyMDEsIDE5MywgMSwgMTg1LCAxOTMsIDEsIDIxOCwgMjA4LCAxOTMsIDEsIAorICAgIDI0OSwgMzIsIDE5MywgMSwgMjQ4LCA5OCwgMTkzLCAxLCAxOTIsIDE5MywgMSwgMTk4LCAxOTMsIDEsIDIxNiwgMjIwLCAKKyAgICAxOTMsIDEsIDIyOCwgMTEzLCAxOTMsIDEsIDIyNywgNzcsIDE5MywgMSwgMjA2LCA4NiwgMTkzLCAxLCAyMTMsIDkwLCAxOTMsIAorICAgIDEsIDIxMSwgMTY0LCAxOTMsIDEsIDIxNSwgMzYsIDE5MywgMSwgMTUyLCAxOTMsIDIsIDIyMSwgNTEsIDE5MywgMiwgMjUwLCAKKyAgICAxNywgMTkzLCAyMiwgMiwgMjUyLCAyNSwgMTkzLCAyMiwgMiwgNzUsIDE5MywgMjIsIDIsIDIzMSwgODMsIDE5MywgMjIsIDIsIAorICAgIDY4LCAxOTMsIDIyLCAyLCAyMDYsIDE3OCwgMTkzLCAyMiwgMiwgMTI1LCAxNDYsIDE5MywgMjIsIDIsIDEyNSwgMjE1LCAKKyAgICAxODYsIDE5MywgMjIsIDIsIDc0LCAxOTMsIDIyLCAyLCAyNTEsIDY0LCAxOTMsIDIyLCAyLCA3OCwgMTkzLCAyMiwgMiwgCisgICAgMjUwLCAzNCwgMTkzLCAyLCAyMDUsIDIwNCwgMTkzLCAyNTEsIDY1LCAyMjcsIDE5NiwgODIsIDE5MywgMjUwLCAzNSwgMjI3LCAKKyAgICAxOTYsIDgyLCAxOTMsIDEsIDIxNSwgMTg1LCAxOTMsIDEsIDIxNiwgNjEsIDE5MywgMSwgMjAyLCAxNjgsIDE5MywgMSwgCisgICAgMTI1LCAyMTUsIDE4NiwgMTkzLCAxLCAxMjUsIDIyNywgNzgsIDE5MywgMjIsIDIsIDEyNSwgMTU5LCAxOTMsIDIyLCAyLCAKKyAgICAxMjUsIDIyNywgNzgsIDE5MywgMTcsIDIwMiwgODQsIDE5MywgMTcsIDEwNSwgMTkzLCAxNywgMTA4LCAxOTMsIDE3LCAxNDcsIAorICAgIDE5MywgMTcsIDE0OSwgMTkzLCAxNywgMTcwLCAxOTMsIDE3LCAxOTUsIDE5MywgMTcsIDIxMywgMTExLCAxOTMsIDE3LCAKKyAgICAxOTksIDE5MywgMTcsIDIyMiwgNjMsIDE5MywgMjMwLCAyMDIsIDE5MywgMSwgMjA0LCAxMTEsIDE5MywgMjM5LCAxMzgsIAorICAgIDExOCwgMjE3LCA1NSwgMTkzLCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgMTkzLCAyMzksIDEzOCwgMTI2LCAyMTcsIDUzLCAKKyAgICAxOTMsIDIzOSwgMTM4LCAxMTgsIDIxMiwgODAsIDE5MywgMjM5LCAxMzgsIDExOCwgMjQxLCAxMzgsIDE5MywgMjM5LCAxMzgsIAorICAgIDEyNiwgMjEyLCA3OSwgNDQsIDIsIDI1MCwgMTgwLCA0NCwgMiwgMjA1LCAxOTksIDQ0LCAxLCA2MywgNDQsIDEsIDI1MiwgCisgICAgMjUsIDQ0LCAxLCA3NSwgNDQsIDEsIDIzMSwgODMsIDQ0LCAxLCA2OCwgNDQsIDEsIDIwNiwgMTc4LCA0NCwgMSwgNzQsIDQ0LCAKKyAgICAxLCAyNDEsIDE2MSwgNDQsIDEsIDI1MSwgNjQsIDQ0LCAxLCA3OCwgNDQsIDEsIDIyMCwgMTgsIDQ0LCAxLCAyNTAsIDM0LCAKKyAgICA0NCwgMSwgMTczLCA0NCwgMSwgMjIyLCAyMDMsIDQ0LCAxLCAyNDcsIDkyLCA0NCwgMSwgMjMwLCAxODEsIDQ0LCAxLCAyMjEsIAorICAgIDExLCA0NCwgMSwgMjA3LCAyNDEsIDQ0LCAxLCAyMjEsIDIyNywgNDQsIDEsIDIxMCwgMjIsIDQ0LCAxLCAyMDEsIDIwMSwgCisgICAgNDQsIDEsIDIyMSwgMjA5LCA0NCwgMSwgMTg1LCA0NCwgMSwgMTkyLCA0NCwgMSwgMTk4LCA0NCwgMSwgMjE2LCAyMjAsIDQ0LCAKKyAgICAxLCAyMTUsIDE4NSwgNDQsIDEsIDIyOCwgMTEzLCA0NCwgMSwgMjI3LCA3NywgNDQsIDEsIDIyNywgNjgsIDQ0LCAxLCAyMDYsIAorICAgIDg2LCA0NCwgMSwgMjEzLCA5MCwgNDQsIDEsIDIxMSwgMTY0LCA0NCwgMSwgMjE1LCAzNiwgNDQsIDEsIDE1MiwgNDQsIDIyLCAKKyAgICAyLCAyNTIsIDI1LCA0NCwgMjIsIDIsIDc1LCA0NCwgMjIsIDIsIDIzMSwgODMsIDQ0LCAyMiwgMiwgNjgsIDQ0LCAyMiwgMiwgCisgICAgMjA2LCAxNzgsIDQ0LCAyMiwgMiwgNzQsIDQ0LCAyMiwgMiwgMjQxLCAxNjEsIDQ0LCAyMiwgMiwgMjUxLCA2NCwgNDQsIDIyLCAKKyAgICAyLCA3OCwgNDQsIDIyLCAyLCAyMjAsIDE4LCA0NCwgMjIsIDIsIDI1MCwgMzQsIDQ0LCAyLCAyMDUsIDIwNCwgNDQsIDIyMCwgCisgICAgMzksIDQ0LCAyNTAsIDM1LCAyMjcsIDE5NiwgODIsIDQ0LCAxNywgMjAyLCA4NCwgNDQsIDE3LCAxMDUsIDQ0LCAxNywgMTA4LCAKKyAgICA0NCwgMTcsIDE0NywgNDQsIDE3LCAxNDksIDQ0LCAxNywgMTcwLCA0NCwgMTcsIDE5NSwgNDQsIDE3LCAyMTMsIDExMSwgNDQsIAorICAgIDE3LCAxOTksIDQ0LCAxNywgMjIyLCA2MywgNDQsIDQyLCAyMDksIDE1MiwgNDQsIDQyLCAxMTgsIDIzNiwgMTEsIDQ0LCA0MiwgCisgICAgMTE4LCAyMDksIDM2LCA0NCwgMjQ0LCAxMzMsIDU0LCA0NCwgMjI0LCAzOCwgNTQsIDQ0LCAyMDMsIDUwLCA1NCwgNDQsIAorICAgIDI0NCwgNzIsIDU0LCA0NCwgMjQ1LCAxNDEsIDU0LCA0NCwgMjUwLCA4MiwgODcsIDU0LCA0NCwgMjE1LCAxMjAsIDU0LCA0NCwgCisgICAgNDIsIDU0LCAxNzUsIDIsIDM5LCAyNDcsIDUzLCA1NSwgMTc1LCAyLCAyNDcsIDUyLCAxNzUsIDIsIDI1MCwgMTgwLCAxNzUsIAorICAgIDIsIDIwNSwgMTk5LCAxNzUsIDEsIDYzLCAxNzUsIDEsIDI1MiwgMjUsIDE3NSwgMSwgNzUsIDE3NSwgMSwgMjMxLCA4MywgCisgICAgMTc1LCAxLCA2OCwgMTc1LCAxLCAyMDYsIDE3OCwgMTc1LCAxLCAxMjUsIDE0NiwgMTc1LCAxLCAxMjUsIDE1OSwgMTc1LCAxLCAKKyAgICA3NCwgMTc1LCAxLCAyNDEsIDE2MSwgMTc1LCAxLCAyNTEsIDY0LCAxNzUsIDEsIDc4LCAxNzUsIDEsIDIyMCwgMTgsIDE3NSwgCisgICAgMSwgMjUwLCAzNCwgMTc1LCAxLCAxNzMsIDE3NSwgMSwgMjI5LCAxNDQsIDE3NSwgMSwgMjM5LCA4LCAxNzUsIDEsIDIzOCwgCisgICAgMTE5LCAxNzUsIDEsIDIyMiwgMjAzLCAxNzUsIDEsIDI0NywgOTIsIDE3NSwgMSwgMjQ2LCAxOTksIDE3NSwgMSwgMjMwLCAKKyAgICAxODEsIDE3NSwgMSwgMjMwLCAxNDksIDE3NSwgMSwgMjIxLCAxMSwgMTc1LCAxLCAyMDcsIDI0MSwgMTc1LCAxLCAyMDcsIAorICAgIDIyOSwgMTc1LCAxLCAyNDQsIDEyMCwgMTc1LCAxLCAyNDQsIDEwNCwgMTc1LCAxLCAyMjEsIDIyNywgMTc1LCAxLCAyMTAsIAorICAgIDIyLCAxNzUsIDEsIDIwOSwgMTA4LCAxNzUsIDEsIDI0NCwgMjEyLCAxNzUsIDEsIDI0NCwgMSwgMTc1LCAxLCAyMDEsIDIwMSwgCisgICAgMTc1LCAxLCAxODUsIDE3NSwgMSwgMjE4LCAyMDgsIDE3NSwgMSwgMjQ5LCAzMiwgMTc1LCAxLCAyNDgsIDk4LCAxNzUsIDEsIAorICAgIDE5MiwgMTc1LCAxLCAxOTgsIDE3NSwgMSwgMjE2LCAyMjAsIDE3NSwgMSwgMjE1LCAxODUsIDE3NSwgMSwgMjI4LCAxMTMsIAorICAgIDE3NSwgMSwgMjI3LCA3NywgMTc1LCAxLCAyMjcsIDY4LCAxNzUsIDEsIDIwNiwgODYsIDE3NSwgMSwgMjEzLCA5MCwgMTc1LCAKKyAgICAxLCAyMTEsIDE2NCwgMTc1LCAxLCAyMTUsIDM2LCAxNzUsIDEsIDE1MiwgMTc1LCAyLCAyNTAsIDE3LCAxNzUsIDIyLCAyLCAKKyAgICAyNTIsIDI1LCAxNzUsIDIyLCAyLCA3NSwgMTc1LCAyMiwgMiwgMjMxLCA4MywgMTc1LCAyMiwgMiwgNjgsIDE3NSwgMjIsIDIsIAorICAgIDIwNiwgMTc4LCAxNzUsIDIyLCAyLCAxMjUsIDE0NiwgMTc1LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTc1LCAyMiwgMiwgCisgICAgNzQsIDE3NSwgMjIsIDIsIDI0MSwgMTYxLCAxNzUsIDIyLCAyLCAyNTEsIDY0LCAxNzUsIDIyLCAyLCA3OCwgMTc1LCAyMiwgCisgICAgMiwgMjIwLCAxOCwgMTc1LCAyMiwgMiwgMjUwLCAzNCwgMTc1LCAyLCAyMDUsIDIwNCwgMTc1LCAyMjcsIDE5NiwgODIsIAorICAgIDE3NSwgMjUxLCA2NSwgMjI3LCAxOTYsIDgyLCAxNzUsIDEsIDIwOCwgMjAsIDE3NSwgMSwgMjQxLCAyNTUsIDE3NSwgMSwgCisgICAgMjE1LCAxNjYsIDE3NSwgMSwgMTI1LCAyMTUsIDE4NiwgMTc1LCAxLCAxMjUsIDIyNywgNzgsIDE3NSwgMjIsIDIsIDEyNSwgCisgICAgMTU5LCAxNzUsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDE3NSwgMTcsIDIwMiwgODQsIDE3NSwgMTcsIDEwNSwgMTc1LCAxNywgCisgICAgMTA4LCAxNzUsIDE3LCAxNDcsIDE3NSwgMTcsIDE0OSwgMTc1LCAxNywgMTcwLCAxNzUsIDE3LCAxOTUsIDE3NSwgMTcsIAorICAgIDIxMywgMTExLCAxNzUsIDE3LCAxOTksIDE3NSwgMTcsIDIyMiwgNjMsIDE3NSwgMjM5LCAxMzgsIDE3LCAyMDIsIDg1LCAzNSwgCisgICAgMjIwLCA3NywgMjE4LCAxNSwgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDExOCwgMzUsIDIyMCwgNzcsIDIxOCwgMTUsIAorICAgIDc2LCAxNDksIDE3NSwgMjM5LCAxMzgsIDE3LCAxMjAsIDM1LCAyMjAsIDc3LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgCisgICAgMTM4LCAxNywgMTI2LCAzNSwgMjIwLCA3NywgMjE4LCAxNSwgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDExOCwgMzUsIAorICAgIDI0MCwgMjI1LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgMTM4LCAxNywgMTIwLCAzNSwgMjQwLCAyMjUsIDIxOCwgCisgICAgMTUsIDc2LCAxNDksIDE3NSwgMjM5LCAxMzgsIDE3LCAxMjYsIDM1LCAyNDAsIDIyNSwgMjE4LCAxNSwgNzYsIDE0OSwgMTc1LCAKKyAgICAyLCAyMDcsIDE2NCwgMjAwLCAyLCAyNDcsIDUyLCAyMDAsIDIsIDI1MCwgMTgwLCAyMDAsIDIsIDIwNSwgMTk5LCAyMDAsIDEsIAorICAgIDYzLCAyMDAsIDEsIDI1MiwgMjUsIDIwMCwgMSwgNzUsIDIwMCwgMSwgMjMxLCA4MywgMjAwLCAxLCA2OCwgMjAwLCAxLCAKKyAgICAyMDYsIDE3OCwgMjAwLCAxLCAxMjUsIDE0NiwgMjAwLCAxLCAxMjUsIDE1OSwgMjAwLCAxLCA3NCwgMjAwLCAxLCAyNDEsIAorICAgIDE2MSwgMjAwLCAxLCAyNTEsIDY0LCAyMDAsIDEsIDc4LCAyMDAsIDEsIDIyMCwgMTgsIDIwMCwgMSwgMjUwLCAzNCwgMjAwLCAKKyAgICAxLCAxNzMsIDIwMCwgMSwgMjI5LCAxNDQsIDIwMCwgMSwgMjM5LCA4LCAyMDAsIDEsIDIzOCwgMTE5LCAyMDAsIDEsIDIyMiwgCisgICAgMjAzLCAyMDAsIDEsIDI0NywgOTIsIDIwMCwgMSwgMjQ2LCAxOTksIDIwMCwgMSwgMjMwLCAxODEsIDIwMCwgMSwgMjMwLCAKKyAgICAxNDksIDIwMCwgMSwgMjIxLCAxMSwgMjAwLCAxLCAyMDcsIDI0MSwgMjAwLCAxLCAyMDcsIDIyOSwgMjAwLCAxLCAyNDQsIAorICAgIDEyMCwgMjAwLCAxLCAyNDQsIDEwNCwgMjAwLCAxLCAyMjEsIDIyNywgMjAwLCAxLCAyMTAsIDIyLCAyMDAsIDEsIDIwOSwgCisgICAgMTA4LCAyMDAsIDEsIDI0NCwgMjEyLCAyMDAsIDEsIDI0NCwgMSwgMjAwLCAxLCAyMDEsIDIwMSwgMjAwLCAxLCAxODUsIAorICAgIDIwMCwgMSwgMjE4LCAyMDgsIDIwMCwgMSwgMjQ5LCAzMiwgMjAwLCAxLCAyNDgsIDk4LCAyMDAsIDEsIDE5MiwgMjAwLCAxLCAKKyAgICAxOTgsIDIwMCwgMSwgMjE2LCAyMjAsIDIwMCwgMSwgMjE1LCAxODUsIDIwMCwgMSwgMjI4LCAxMTMsIDIwMCwgMSwgMjI3LCAKKyAgICA3NywgMjAwLCAxLCAyMDYsIDg2LCAyMDAsIDEsIDIxMywgOTAsIDIwMCwgMSwgMjExLCAxNjQsIDIwMCwgMSwgMjE1LCAzNiwgCisgICAgMjAwLCAxLCAxNTIsIDIwMCwgMiwgMjIxLCA1MSwgMjAwLCAyLCAyNTAsIDE3LCAyMDAsIDIyLCAyLCAyNTIsIDI1LCAyMDAsIAorICAgIDIyLCAyLCA3NSwgMjAwLCAyMiwgMiwgMjMxLCA4MywgMjAwLCAyMiwgMiwgNjgsIDIwMCwgMjIsIDIsIDIwNiwgMTc4LCAKKyAgICAyMDAsIDIyLCAyLCAxMjUsIDE0NiwgMjAwLCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMjAwLCAyMiwgMiwgNzQsIDIwMCwgMjIsIAorICAgIDIsIDI0MSwgMTYxLCAyMDAsIDIyLCAyLCAyNTEsIDY0LCAyMDAsIDIyLCAyLCA3OCwgMjAwLCAyMiwgMiwgMjIwLCAxOCwgCisgICAgMjAwLCAyMiwgMiwgMjUwLCAzNCwgMjAwLCAyLCAyMDUsIDIwNCwgMjAwLCAyMjcsIDE5NiwgODIsIDIwMCwgMjUxLCA2NSwgCisgICAgMjI3LCAxOTYsIDgyLCAyMDAsIDEsIDI0MCwgMTA4LCAyMDAsIDEsIDEyNSwgMjE1LCAxODYsIDIwMCwgMSwgMTI1LCAyMjcsIAorICAgIDc4LCAyMDAsIDIyLCAyLCAxMjUsIDE1OSwgMjAwLCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAyMDAsIDE3LCAyMDIsIDg0LCAKKyAgICAyMDAsIDE3LCAxMDUsIDIwMCwgMTcsIDEwOCwgMjAwLCAxNywgMTQ3LCAyMDAsIDE3LCAxNDksIDIwMCwgMTcsIDE3MCwgCisgICAgMjAwLCAxNywgMTk1LCAyMDAsIDE3LCAyMTMsIDExMSwgMjAwLCAxNywgMTk5LCAyMDAsIDE3LCAyMjIsIDYzLCAyMDAsIDIsIAorICAgIDIzMCwgMTM1LCAyMDAsIDIsIDIwNiwgMjIyLCAxNjQsIDIsIDI0NywgNTIsIDE2NCwgMiwgMjUwLCAxODAsIDE2NCwgMiwgCisgICAgMjA1LCAxOTksIDE2NCwgMSwgNjMsIDE2NCwgMSwgMjUyLCAyNSwgMTY0LCAxLCA3NSwgMTY0LCAxLCAyMzEsIDgzLCAxNjQsIAorICAgIDEsIDY4LCAxNjQsIDEsIDIwNiwgMTc4LCAxNjQsIDEsIDEyNSwgMTQ2LCAxNjQsIDEsIDEyNSwgMTU5LCAxNjQsIDEsIDc0LCAKKyAgICAxNjQsIDEsIDI0MSwgMTYxLCAxNjQsIDEsIDI1MSwgNjQsIDE2NCwgMSwgNzgsIDE2NCwgMSwgMjIwLCAxOCwgMTY0LCAxLCAKKyAgICAyNTAsIDM0LCAxNjQsIDEsIDE3MywgMTY0LCAxLCAyMjksIDE0NCwgMTY0LCAxLCAyMzksIDgsIDE2NCwgMSwgMjM4LCAxMTksIAorICAgIDE2NCwgMSwgMjIyLCAyMDMsIDE2NCwgMSwgMjQ3LCA5MiwgMTY0LCAxLCAyNDYsIDE5OSwgMTY0LCAxLCAyMzAsIDE4MSwgCisgICAgMTY0LCAxLCAyMzAsIDE0OSwgMTY0LCAxLCAyMjEsIDExLCAxNjQsIDEsIDIwNywgMjQxLCAxNjQsIDEsIDIwNywgMjI5LCAKKyAgICAxNjQsIDEsIDI0NCwgMTIwLCAxNjQsIDEsIDI0NCwgMTA0LCAxNjQsIDEsIDIyMSwgMjI3LCAxNjQsIDEsIDIxMCwgMjIsIAorICAgIDE2NCwgMSwgMjA5LCAxMDgsIDE2NCwgMSwgMjQ0LCAyMTIsIDE2NCwgMSwgMjQ0LCAxLCAxNjQsIDEsIDIwMSwgMjAxLCAKKyAgICAxNjQsIDEsIDIyMSwgMjA5LCAxNjQsIDEsIDE4NSwgMTY0LCAxLCAyMTgsIDIwOCwgMTY0LCAxLCAyNDksIDMyLCAxNjQsIDEsIAorICAgIDI0OCwgOTgsIDE2NCwgMSwgMTkyLCAxNjQsIDEsIDE5OCwgMTY0LCAxLCAyMTYsIDIyMCwgMTY0LCAxLCAyMTUsIDE4NSwgCisgICAgMTY0LCAxLCAyMjgsIDExMywgMTY0LCAxLCAyMjcsIDc3LCAxNjQsIDEsIDIyNywgNjgsIDE2NCwgMSwgMjA2LCA4NiwgMTY0LCAKKyAgICAxLCAyMTMsIDkwLCAxNjQsIDEsIDIxMSwgMTY0LCAxNjQsIDEsIDIxNSwgMzYsIDE2NCwgMSwgMTUyLCAxNjQsIDEsIDIwNywgCisgICAgMjEwLCAxNjQsIDIsIDI1MCwgMTcsIDE2NCwgMjIsIDIsIDI1MiwgMjUsIDE2NCwgMjIsIDIsIDc1LCAxNjQsIDIyLCAyLCAKKyAgICAyMzEsIDgzLCAxNjQsIDIyLCAyLCA2OCwgMTY0LCAyMiwgMiwgMjA2LCAxNzgsIDE2NCwgMjIsIDIsIDEyNSwgMTQ2LCAxNjQsIAorICAgIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAxNjQsIDIyLCAyLCA3NCwgMTY0LCAyMiwgMiwgMjQxLCAxNjEsIDE2NCwgMjIsIDIsIAorICAgIDI1MSwgNjQsIDE2NCwgMjIsIDIsIDc4LCAxNjQsIDIyLCAyLCAyMjAsIDE4LCAxNjQsIDIyLCAyLCAyNTAsIDM0LCAxNjQsIAorICAgIDIsIDIwNSwgMjA0LCAxNjQsIDEsIDcwLCAyMTYsIDk3LCAxNjQsIDI1MCwgMzUsIDIyNywgMTk2LCA4MiwgMTY0LCAxLCAKKyAgICAyNTAsIDEyNiwgMjMxLCA4MywgMTY0LCAxLCAxMjUsIDIxNSwgMTg2LCAxNjQsIDEsIDEyNSwgMjI3LCA3OCwgMTY0LCAyMiwgCisgICAgMiwgMTI1LCAxNTksIDE2NCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTY0LCAxNywgMjAyLCA4NCwgMTY0LCAxNywgMTA1LCAKKyAgICAxNjQsIDE3LCAxMDgsIDE2NCwgMTcsIDE0NywgMTY0LCAxNywgMTQ5LCAxNjQsIDE3LCAxNzAsIDE2NCwgMTcsIDE5NSwgCisgICAgMTY0LCAxNywgMjEzLCAxMTEsIDE2NCwgMTcsIDE5OSwgMTY0LCAxNywgMjIyLCA2MywgMTY0LCA0MiwgMjA5LCAxNTIsIAorICAgIDE2NCwgNDIsIDExOCwgMjM2LCAxMSwgMTY0LCA0MiwgMTE4LCAyMDksIDM2LCAxNjQsIDIzOSwgMTM4LCAxMTgsIDIxNywgCisgICAgNTUsIDE2NCwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDE2NCwgMjM5LCAxMzgsIDEyNiwgMjE3LCA1MywgMTY0LCAyNDQsIAorICAgIDEzOCwgODIsIDE2NCwgMSwgMjQ2LCAxMzEsIDIyMSwgMjI4LCAxNjQsIDEsIDI0NiwgMTMxLCAyMjMsIDE2MywgMTY0LCAxLCAKKyAgICAyNDYsIDEzMSwgMjE1LCAxODYsIDE2NCwgMSwgMjQ2LCAxMzEsIDE1OSwgMTY0LCAxLCAyNDYsIDEzMSwgMjI3LCA3OCwgCisgICAgMTY0LCAxLCAyNDYsIDEzMSwgMjMwLCA1NCwgMTQwLCAyLCAyNTAsIDE3OSwgMTQwLCAyLCAyMDUsIDE5OCwgMTQwLCAxLCAKKyAgICAyNTAsIDYsIDE0MCwgMSwgMjUxLCAyMzUsIDE0MCwgMSwgMjUxLCA4OSwgMTQwLCAxLCAyNTEsIDEwNCwgMTQwLCAxLCAyMzAsIAorICAgIDE5MSwgMTQwLCAxLCAyMzEsIDgyLCAxNDAsIDEsIDIwNiwgMTY5LCAxNDAsIDEsIDIwNiwgMTcyLCAxNDAsIDEsIDIzMCwgCisgICAgMjE3LCAxNDAsIDEsIDIzMCwgMjE4LCAxNDAsIDEsIDIzMSwgNjgsIDE0MCwgMSwgMjMxLCA3MCwgMTQwLCAxLCAyNDAsIAorICAgIDE5NCwgMTQwLCAxLCAyNDEsIDE1NiwgMTQwLCAxLCAyNTEsIDQ5LCAxNDAsIDEsIDIxOSwgMTg3LCAxNDAsIDEsIDIyMCwgCisgICAgMTEsIDE0MCwgMSwgMjUwLCAyMCwgMTQwLCAxLCAyNTEsIDUsIDIyOSwgMjA2LCAxNDAsIDEsIDIyNSwgMTQ3LCAyMjksIAorICAgIDIwNiwgMTQwLCAxLCAyNTEsIDUsIDIzOCwgMjEwLCAxNDAsIDEsIDIyNSwgMTQ3LCAyMzgsIDIxMCwgMTQwLCAxLCAyMjksIAorICAgIDI1NSwgMjIzLCAxMDMsIDE0MCwgMSwgMjE0LCAyMzUsIDIzOCwgMjEwLCAxNDAsIDEsIDI1MSwgNSwgMjQ3LCA4LCAxNDAsIAorICAgIDEsIDIyNSwgMTQ3LCAyNDcsIDgsIDE0MCwgMSwgMjUxLCA1LCAyMzAsIDE2NCwgMTQwLCAxLCAyMjUsIDE0NywgMjMwLCAKKyAgICAxNjQsIDE0MCwgMSwgMjEwLCAxNSwgMjIzLCAxMDMsIDE0MCwgMSwgMjEwLCAxNSwgMjE0LCAyMzQsIDIyMywgMTA0LCAxNDAsIAorICAgIDEsIDIxNCwgMjM1LCAyMzAsIDE2NCwgMTQwLCAxLCAyNTEsIDUsIDIwNywgMjM3LCAxNDAsIDEsIDIyNSwgMTQ3LCAyMDcsIAorICAgIDIzNywgMTQwLCAxLCAyNTEsIDUsIDI0NCwgMTExLCAxNDAsIDEsIDIyNSwgMTQ3LCAyNDQsIDExMSwgMTQwLCAxLCAyMjMsIAorICAgIDE5MSwgMjIzLCA1OCwgMTQwLCAxLCAyMTQsIDIzNSwgMjQ0LCAxMTEsIDE0MCwgMSwgMjUxLCA1LCAyMDksIDE5NSwgMTQwLCAKKyAgICAxLCAyMjUsIDE0NywgMjA5LCAxOTUsIDE0MCwgMSwgMjUxLCA1LCAyNDQsIDEzMSwgMTQwLCAxLCAyMjUsIDE0NywgMjQ0LCAKKyAgICAxMzEsIDE0MCwgMSwgMjQ0LCAxNjIsIDIyMywgNTgsIDE0MCwgMSwgMjE0LCAyMzUsIDI0NCwgMTMxLCAxNDAsIDEsIDI1MSwgCisgICAgNSwgMjE5LCA0MiwgMTQwLCAxLCAyMjUsIDE0NywgMjE5LCA0MiwgMTQwLCAxLCAyNTEsIDUsIDI0OCwgMjAwLCAxNDAsIDEsIAorICAgIDIyNSwgMTQ3LCAyNDgsIDIwMCwgMTQwLCAxLCAyMjUsIDYyLCAxNDAsIDEsIDI1MCwgMjQxLCAyNDgsIDIwMCwgMTQwLCAxLCAKKyAgICAyMDMsIDU3LCAxNDAsIDEsIDIxNiwgMTY0LCAxNDAsIDEsIDI0NCwgMTYyLCAyMjcsIDI0MywgMTQwLCAxLCAyMDYsIDU3LCAKKyAgICAxNDAsIDEsIDIxMCwgMTUsIDIxNCwgMjA3LCAxNDAsIDEsIDIyMywgMTkxLCAyMTQsIDIwNywgMTQwLCAxLCAyNDQsIDE2MiwgCisgICAgMjE0LCAyMDcsIDE0MCwgMSwgMjM3LCA3MSwgMTQwLCAxLCAyMjMsIDE5MSwgMjI3LCAyNDMsIDE0MCwgMSwgMjQwLCA2MiwgCisgICAgMTQwLCAyLCAyNTEsIDM4LCAxNDAsIDIyLCAyLCAyNTEsIDk5LCAxNDAsIDIyLCAyLCAyMjksIDE2OSwgMjUxLCAxMDYsIAorICAgIDE0MCwgMjIsIDIsIDI0MywgMjAwLCAyNTEsIDEwNiwgMTQwLCAyMiwgMiwgMjI5LCAxNjksIDIzMCwgMjE0LCAxNDAsIDIyLCAKKyAgICAyLCAyNDMsIDIwMCwgMjMwLCAyMTQsIDE0MCwgMjIsIDIsIDIyOSwgMTY5LCAyMTksIDE2NywgMTQwLCAyMiwgMiwgMjQzLCAKKyAgICAyMDAsIDIxOSwgMTY3LCAxNDAsIDIyLCAyLCAyMzgsIDI1MywgMTQwLCAyMiwgMiwgMjI5LCAxMSwgMTQwLCAyMiwgMiwgCisgICAgMjQzLCAyMDAsIDIyOSwgMTEsIDE0MCwgMjIsIDIsIDIyOSwgMTMsIDI0NCwgNTAsIDE0MCwgMjIsIDIsIDIyOSwgMTIsIAorICAgIDIzNywgMTU4LCAyNTEsIDk5LCAxNDAsIDIyLCAyLCAyMjksIDEyLCAyMzcsIDE1OCwgMjQzLCAyMDAsIDI1MSwgOTksIDE0MCwgCisgICAgMjIsIDIsIDIyOSwgMTIsIDIzNywgMTU4LCAyMzgsIDIwOSwgMTQwLCAyMiwgMiwgMjM4LCAyMDksIDE0MCwgMjI3LCA4OSwgCisgICAgMTcsIDIwMiwgODQsIDE0MCwgMjI3LCA4OSwgMTcsIDEwNSwgMTQwLCAyMjcsIDg5LCAxNywgMTA4LCAxNDAsIDIyNywgODksIAorICAgIDE3LCAxNDcsIDE0MCwgMjI3LCA4OSwgMTcsIDE0OSwgMTQwLCAyMjcsIDg5LCAxNywgMTcwLCAxNDAsIDIyNywgODksIDE3LCAKKyAgICAxOTUsIDE0MCwgMjI3LCA4OSwgMTcsIDIxMywgMTExLCAxNDAsIDIyNywgODksIDE3LCAxOTksIDE0MCwgMjI3LCA4OSwgMTcsIAorICAgIDIyMiwgNjMsIDE0MCwgMjIsIDIsIDI0MywgMjAwLCAyMzgsIDI1MywgMTQwLCAyMiwgMiwgMjQzLCAyMDAsIDIzOCwgMjA5LCAKKyAgICAxNDAsIDIxNywgMTc5LCAyMjgsIDE5NCwgMjA5LCAxMDMsIDE2NywgMjI5LCAyNywgMjMwLCAxOCwgMjA5LCAxMDMsIDE2NywgCisgICAgMjI5LCAxMTYsIDIyOSwgMTM5LCAyMDksIDEwMywgMTY3LCAyMjksIDExNiwgMjI5LCAxMDgsIDIwOSwgMTAzLCAxNjcsIAorICAgIDIyOSwgMTE2LCAyMjksIDEwMywgMjA5LCAxMDMsIDE2NywgMjI5LCAxMTYsIDIyOSwgMTEyLCAyMDksIDEwMywgMTY3LCAKKyAgICAyMjksIDExNiwgMjE2LCAxODUsIDIwOSwgMTAzLCAxNjcsIDIyMiwgMTI5LCAyMjIsIDExNiwgMjA5LCAxMDMsIDE2NywgCisgICAgMjQ2LCAxMTcsIDI0NiwgMTg4LCAyMDksIDEwMywgMTY3LCAyNDYsIDExNywgMjQ2LCAxMjcsIDIwOSwgMTAzLCAxNjcsIAorICAgIDI0NiwgMTE3LCAyNDYsIDE4NywgMjA5LCAxMDMsIDE2NywgMjEyLCAxNCwgMjEyLCAxMywgMjA5LCAxMDMsIDE2NywgMjQ2LCAKKyAgICAxMTcsIDI0NiwgMTEzLCAyMDksIDEwMywgMTY3LCAyMDIsIDI0OCwgMjAyLCAyNTUsIDIwOSwgMTAzLCAxNjcsIDI0MywgCisgICAgMTE0LCAyNDYsIDE5NiwgMjA5LCAxMDMsIDE2NywgMjA4LCAxNzMsIDIxOSwgNTMsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIAorICAgIDIwOSwgOTcsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIDIyMywgODAsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIDIxOCwgCisgICAgMTcwLCAyMDksIDEwMywgMTY3LCAyMjEsIDE5MiwgMjIyLCAyMzAsIDIwOSwgMTAzLCAxNjcsIDI0MywgMTE0LCAyNDQsIDUxLCAKKyAgICAyMDksIDEwMywgMTY3LCAyMDgsIDE3MywgMjA5LCAyMjMsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIDIwOSwgMTYsIDIwOSwgCisgICAgMTAzLCAxNjcsIDIwOSwgNDgsIDIwOSwgMTA0LCAyMDksIDEwMywgMTY3LCAyMDksIDQ4LCAyMDksIDQzLCAyMDksIDEwMywgCisgICAgMTY3LCAyMjEsIDE5MiwgMjIxLCA4NCwgMjA5LCAxMDMsIDE2NywgMjQ4LCAyNCwgMjQ5LCAwLCAyMDksIDEwMywgMTY3LCAKKyAgICAyMTgsIDcwLCAyMTgsIDk4LCAyMDksIDEwMywgMTY3LCAyMTgsIDE4MSwgMjE4LCAxNzIsIDIwOSwgMTAzLCAxNjcsIDIzOSwgCisgICAgMTg3LCAyNDAsIDEwOCwgMjA5LCAxMDMsIDE2NywgMjE4LCAxODEsIDIxOCwgMjAxLCAyMDksIDEwMywgMTY3LCAyMzksIAorICAgIDE4NywgMjQwLCA4MSwgMjA5LCAxMDMsIDE2NywgMjE4LCAxODEsIDIxNCwgMjQ3LCAyMDksIDEwMywgMTY3LCAyMjQsIDgzLCAKKyAgICAxOTIsIDIwOSwgMTAzLCAxNjcsIDIwMiwgMjQ4LCAyMDMsIDg2LCAyMDksIDEwMywgMTY3LCAyMTUsIDIyOCwgMjE1LCAxNDQsIAorICAgIDIwOSwgMTAzLCAxNjcsIDIxNSwgMTQ1LCAyMDksIDEwMywgMTY3LCAyMjcsIDUwLCAyMjcsIDEwNywgMjA5LCAxMDMsIDE2NywgCisgICAgMjI2LCAyMzksIDIwOSwgMTAzLCAxNjcsIDIwNCwgMSwgMjA0LCAxMDYsIDIwOSwgMTAzLCAxNjcsIDIxMiwgMTQsIDIxNSwgCisgICAgNiwgMjA5LCAxMDMsIDE2NywgMjEyLCAxNCwgMjE1LCAxMTYsIDIwOSwgMTAzLCAxNjcsIDIxMiwgMTQsIDIxMSwgOSwgMjA5LCAKKyAgICAxMDMsIDE2NywgMjM2LCAxMzcsIDIzNiwgMjMzLCAyMDksIDEwMywgMTY3LCAyMjcsIDUwLCAyNDYsIDk3LCAyMDksIDEwMywgCisgICAgMTY3LCAxNTgsIDI1MCwgMjIzLCAyMDksIDEwMywgMTY3LCAyMzYsIDEzNywgMjIxLCAxODcsIDIwOSwgMTAzLCAxNjcsIAorICAgIDIxOSwgMTQ0LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgNjMsIDIwOSwgMTAzLCAxNjcsIDIyNSwgMTQxLCAyMzcsIDEyNSwgCisgICAgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDI1MiwgMjUsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyNTAsIDI0NywgMjA5LCAKKyAgICAxMDMsIDE2NywgMjE0LCAyMjksIDc1LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgMjMxLCA4MywgMjA5LCAxMDMsIDE2NywgCisgICAgMjE0LCAyMjksIDIwNywgMjQsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyMDcsIDIyLCAyMDksIDEwMywgMTY3LCAyMTQsIAorICAgIDIyOSwgNjgsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyMDYsIDE3OCwgMjA5LCAxMDMsIDE2NywgMjE4LCAxODMsIDIwOSwgCisgICAgMTAzLCAyNDUsIDkyLCAxNiwgMjQ5LCAxLCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgNzQsIDIwOSwgMTAzLCAxNjcsIAorICAgIDIxNCwgMjI5LCAyNTEsIDEwOSwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDc4LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgCisgICAgMjUxLCA2NSwgMjI1LCAxMzUsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyNTEsIDY1LCAyMjUsIDEzNiwgMjA5LCAxMDMsIAorICAgIDE2NywgMjI4LCAzMiwgMjA5LCAxMDMsIDE2NywgMjI1LCAxMzIsIDIwOSwgMTAzLCAxNjcsIDIyNSwgMTMzLCAyMDksIDEwMywgCisgICAgMTY3LCAyMjUsIDE0MSwgMjQxLCAxMjksIDIwOSwgMTAzLCAxNjcsIDIyNSwgMTQxLCAyMDksIDQ3LCAyMDksIDEwMywgMTY3LCAKKyAgICAyMjUsIDE0MSwgMjA4LCA4OCwgMjA5LCAxMDMsIDE2NywgMjI1LCAxNDEsIDI0NiwgMTc1LCAyMDksIDEwMywgMTY3LCAyMDksIAorICAgIDk1LCAyMDksIDEwMywgMTY3LCAyMjIsIDcyLCAyMDksIDEwMywgMTY3LCAyMDMsIDgwLCAyMDksIDEwMywgMTY3LCAyMzksIAorICAgIDE3NywgMjA5LCAxMDMsIDE3LCAyMDIsIDg0LCAyMDksIDEwMywgMTcsIDEwNSwgMjA5LCAxMDMsIDE3LCAxMDgsIDIwOSwgCisgICAgMTAzLCAxNywgMTQ3LCAyMDksIDEwMywgMTcsIDE0OSwgMjA5LCAxMDMsIDE3LCAxNzAsIDIwOSwgMTAzLCAxNywgMTk1LCAKKyAgICAyMDksIDEwMywgMTcsIDIxMywgMTExLCAyMDksIDEwMywgMTcsIDE5OSwgMjA5LCAxMDMsIDE3LCAyMjIsIDYzLCAyMDksIAorICAgIDEwMywgMTY3LCAyNTAsIDIxOSwgMjA5LCAxMDMsIDE2NywgMjI5LCAxMTMsIDIyOCwgMTIsIDEsIDIyOSwgMjYsIDIyOCwgCisgICAgMTIsIDEsIDIyOSwgMTE2LCAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgMjI5LCAxMTYsIDIwOSwgMjMyLCAyMjgsIDEyLCAxLCAKKyAgICAyMjIsIDEyOCwgMjI4LCAxMiwgMSwgMjQ1LCAyNTQsIDIyOCwgMTIsIDEsIDIxMiwgMTQsIDIwOSwgMjMyLCAyMjgsIDEyLCAKKyAgICAxLCAyMjAsIDIzMywgMjI4LCAxMiwgMSwgMjQzLCAxMTMsIDIyOCwgMTIsIDEsIDEzNSwgMjI4LCAxMiwgMSwgMjA5LCA0OCwgCisgICAgMjEwLCAyMTEsIDIyOCwgMTIsIDEsIDIwOSwgNDgsIDIwOSwgMjMyLCAyMjgsIDEyLCAxLCAyMjEsIDE5MSwgMjI4LCAxMiwgCisgICAgMSwgMjQ4LCAyMywgMjI4LCAxMiwgMSwgMjE4LCA2OSwgMjI4LCAxMiwgMSwgMjE4LCAxODEsIDIxMCwgMjExLCAyMjgsIDEyLCAKKyAgICAxLCAyMzksIDE4NywgMjA5LCAyMzIsIDIyOCwgMTIsIDEsIDIxOCwgMTgxLCAyMDksIDIzMiwgMjI4LCAxMiwgMSwgMjM5LCAKKyAgICAxODcsIDIxMCwgMjExLCAyMjgsIDEyLCAxLCAyMjQsIDgyLCAyMjgsIDEyLCAxLCAyMDIsIDI0NywgMjI4LCAxMiwgMSwgCisgICAgMjI3LCA1MCwgMjI3LCAxMDcsIDIyOCwgMTIsIDEsIDIyNywgNTAsIDIyNywgMTIsIDIyOCwgMTIsIDEsIDIwNCwgMCwgMjI4LCAKKyAgICAxMiwgMSwgMjEyLCAxNCwgMjEwLCAyMTEsIDIyOCwgMTIsIDEsIDIzNiwgMTM3LCAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgNzgsIAorICAgIDIyOCwgMTIsIDEsIDIzNiwgMTM3LCAyMDksIDIzMiwgMjI4LCAxMiwgMjQxLCAxMDgsIDIyOCwgMTIsIDIyLCAyLCA2MywgCisgICAgMjI4LCAxMiwgMjIsIDIsIDIyNSwgMTQxLCAyMzAsIDQsIDIyOCwgMTIsIDIyLCAyLCAyNTIsIDI1LCAyMjgsIDEyLCAyMiwgCisgICAgMiwgMjUwLCAyNDcsIDIyOCwgMTIsIDIyLCAyLCA3NSwgMjI4LCAxMiwgMjIsIDIsIDIzMSwgODMsIDIyOCwgMTIsIDIyLCAyLCAKKyAgICAyMDMsIDEyNCwgMjI4LCAxMiwgMjIsIDIsIDIwMiwgMTY5LCAyMjgsIDEyLCAyMiwgMiwgNjgsIDIyOCwgMTIsIDIyLCAyLCAKKyAgICAyMDYsIDE3OCwgMjI4LCAxMiwgMjIsIDIsIDIyNSwgMTQxLCAyMjksIDksIDIyOCwgMTIsIDIxMywgMTM4LCAyLCAyMjcsIAorICAgIDQ5LCAyMjgsIDEyLCAyMTMsIDEzOCwgMiwgMjIwLCAyMzMsIDIyOCwgMTIsIDIyLCAyLCA3NCwgMjI4LCAxMiwgMjIsIDIsIAorICAgIDI0MSwgMTQ1LCAyMjgsIDEyLCAyMiwgMiwgNzgsIDIyOCwgMTIsIDIyLCAyLCAyNTAsIDgsIDIyOCwgMTIsIDIyLCAyLCAKKyAgICAyNTEsIDY0LCAyMjgsIDEyLCAyMjksIDI3LCAyMjgsIDExMywgMjI4LCAxMiwgMTQzLCAyMjUsIDE0MSwgMjQxLCAxMjksIAorICAgIDIyOCwgMTIsIDE0MywgMjI1LCAxNDEsIDIwOSwgNDcsIDIyOCwgMTIsIDE0MywgMjI1LCAxNDEsIDIwOSwgMiwgMjI4LCAxMiwgCisgICAgMTQzLCAyMjUsIDE0MSwgMjQ3LCAxNiwgMjI4LCAxMiwgMjQ3LCA1OCwgODIsIDIyOCwgMTIsIDIyMiwgODEsIDIyOCwgMTIsIAorICAgIDE3LCAyMDIsIDg0LCAyMjgsIDEyLCAxNywgMTA1LCAyMjgsIDEyLCAxNywgMTA4LCAyMjgsIDEyLCAxNywgMTQ3LCAyMjgsIAorICAgIDEyLCAxNywgMTQ5LCAyMjgsIDEyLCAxNywgMTcwLCAyMjgsIDEyLCAxNywgMTk1LCAyMjgsIDEyLCAxNywgMjEzLCAxMTEsIAorICAgIDIyOCwgMTIsIDE3LCAxOTksIDIyOCwgMTIsIDE3LCAyMjIsIDYzLCAyMjgsIDEyLCAyMzYsIDEzNywgMjIxLCAxOTEsIDIyOCwgCisgICAgMTIsIDIzNiwgMTM3LCAyMjQsIDgyLCAyMjgsIDEyLCAxLCAyMjksIDExNywgMjM4LCAzOSwgMjI4LCAxMiwgMSwgMjI5LCAKKyAgICAxMTcsIDIyMCwgMjMzLCA3NywgNCwgMjIwLCAzOSwgNzcsIDEzMSwgMjM3LCAyMzIsIDIwMywgMywgMjI0LCAxNzMsIDIwOCwgCisgICAgMjYsIDYzLCA3NywgMTMxLCAyMzcsIDIzMiwgMjAzLCAzLCAyMjQsIDE3MywgMjU1LCAyMiwgMjE1LCAyMzIsIDI0OCwgMTY0LCAKKyAgICAxOTIsIDc3LCAxMzEsIDIzNywgMjMyLCAyMDMsIDMsIDIyNCwgMTczLCAyNTUsIDIyLCAyMzcsIDIzMiwgMjA4LCA2LCAxOTIsIAorICAgIDc3LCAxMzEsIDgxLCAyMDMsIDMsIDIyNCwgMTczLCAyMjUsIDIyLCAxOTIsIDc3LCAxMzEsIDI0NiwgMTIsIDIwMywgMywgCisgICAgMjI0LCAxNzMsIDIxMywgOTcsIDE5MiwgNzcsIDEzMSwgMjQ3LCAzNCwgMjAzLCAzLCAyMjQsIDE3MywgMjE4LCAxNzEsIAorICAgIDIxMywgODMsIDE5MiwgNzcsIDEzMSwgMjAzLCAzLCAyMjQsIDE3MywgMjA4LCA2LCAyMTMsIDgzLCAxOTIsIDc3LCAxMzEsIAorICAgIDIxNCwgMjA1LCAyMTMsIDgyLCA3NywgMTMxLCAyNDcsIDE5NiwgMjAzLCAzLCAyMjQsIDE3MiwgNzcsIDEzMSwgMjQ4LCA0NSwgCisgICAgMjEyLCAyMzgsIDIwMywgMywgMjI0LCAxNzIsIDc3LCAxMzEsIDIzMCwgMjQzLCAyMDgsIDUsIDc3LCAxMzEsIDI0NCwgNDQsIAorICAgIDIwOCwgNiwgMjQ3LCAxOTUsIDc3LCAxMzEsIDIxMywgODIsIDc3LCAxMzEsIDIyMCwgMjM4LCAyMTMsIDgyLCA3NywgMTMxLCAKKyAgICAyMDgsIDYsIDIxMywgODIsIDc3LCAxMzEsIDIyMCwgMjM4LCAyMDgsIDYsIDIxMywgODIsIDc3LCAxMzEsIDIxNSwgMjU1LCAKKyAgICAyNDYsIDE1NiwgMjExLCAxODAsIDIxMywgODIsIDc3LCAxMzEsIDIxNiwgNjUsIDIzOCwgOSwgMjEzLCA4MiwgNzcsIDEzMSwgCisgICAgMjQ3LCAzNCwgMjU1LCAyNiwgMjE1LCAxNDksIDIyNSwgMjEsIDE2MywgMjQ3LCA2MSwgNzcsIDEzMSwgMjM3LCAyMzIsIAorICAgIDIwOCwgNSwgNzcsIDIyNywgMzUsIDIsIDI0NiwgMTk3LCAyMTUsIDE0OCwgNzcsIDIyNywgMzUsIDIsIDIyNywgMTU5LCAKKyAgICAyMTUsIDE0OCwgNzcsIDI1MCwgNTUsIDIsIDIxMywgOTMsIDIzOCwgMTkzLCAyNTUsIDI3LCAyMTUsIDE0OCwgNzcsIDI1MCwgCisgICAgNTUsIDIsIDI1NSwgMjQsIDE4NSwgNzcsIDI1MCwgNTUsIDIsIDIxNCwgMTc4LCAyMDgsIDAsIDc3LCAyLCAyMTYsIDE2MCwgCisgICAgMjQzLCAxMjcsIDIzOCwgMTkyLCA3NywgMiwgMjE2LCAxNjAsIDI0MywgMTI3LCAyMzgsIDQxLCA3NywgMiwgMjE2LCAxNjAsIAorICAgIDI0MywgMTI3LCAyMzcsIDIzMywgNzcsIDIsIDIxNiwgMTYwLCAyMjMsIDk5LCAyMzgsIDE5MiwgNzcsIDIsIDIxNiwgMTYwLCAKKyAgICAyMjMsIDk5LCAyMzgsIDQxLCA3NywgMiwgMjE2LCAxNjAsIDI0MywgMTI3LCAyMTYsIDE2MCwgMjIzLCA5OCwgNzcsIDE3LCAKKyAgICAyMDIsIDg0LCA3NywgMTcsIDEwNSwgNzcsIDE3LCAxMDgsIDc3LCAxNywgMTQ3LCA3NywgMTcsIDE0OSwgNzcsIDE3LCAxNzAsIAorICAgIDc3LCAxNywgMTk1LCA3NywgMTcsIDIxMywgMTExLCA3NywgMTcsIDE5OSwgNzcsIDE3LCAyMjIsIDYzLCA3NywgMTcsIDE2MiwgCisgICAgMTA1LCA3NywgMTcsIDE2MiwgMTA4LCA3NywgMTcsIDE2MiwgMTQ3LCA3NywgMTcsIDE2MiwgMTQ5LCA3NywgMTcsIDE2MiwgCisgICAgMTcwLCA3NywgMTcsIDE2MiwgMTk1LCA3NywgMTcsIDE2MiwgMjEzLCAxMTEsIDc3LCAxNywgMTYyLCAxOTksIDc3LCAxNywgCisgICAgMTYyLCAyMjIsIDYzLCA3NywgMTcsIDE2MiwgMjAyLCA4NCwgNzcsIDEzMSwgMjQ3LCAxOTgsIDIxNSwgMTQ4LCA3NywgMTMxLCAKKyAgICAyMjIsIDE5NCwgMjQ3LCAxMjcsIDIyMCwgMjQ5LCAyMDIsIDE5LCA3NywgMTMxLCAyNDcsIDM0LCAyNTUsIDI2LCAyMTUsIAorICAgIDE0OSwgMjQ3LCAxMjgsIDIyNCwgMTI2LCAyNDcsIDYxLCA3NywgMTMxLCAyMjIsIDE5NCwgMjQ3LCAxMjcsIDIxMywgOTQsIAorICAgIDIxNSwgMTQ4LCA3NywgMTMxLCAyNDYsIDE3MSwgMjI0LCAxNzIsIDc3LCAxMzEsIDIwOCwgMjEsIDI1NSwgMjMsIDc3LCAKKyAgICAxMzEsIDIzNywgMjE1LCAyMTUsIDE0OSwgMjM3LCAxNzQsIDc3LCAxMzEsIDIzNywgMjE1LCAyMTUsIDE0OSwgMjM3LCAxODAsIAorICAgIDc3LCAxMzEsIDI1MCwgMjI0LCAyMjksIDEzNCwgMjM3LCAxNzQsIDc3LCAxMzEsIDI1MCwgMjI0LCAyMjksIDEzNCwgMjM3LCAKKyAgICAxODAsIDc3LCAyLCAyMDMsIDcyLCAyMDgsIDQsIDc3LCAyLCAyMjUsIDEwMSwgMjA4LCA0LCA3NywgMSwgMTczLCA3NywgMSwgCisgICAgMjI5LCAxNDQsIDc3LCAxLCAyMzksIDgsIDc3LCAxLCAyMzgsIDExOSwgNzcsIDEsIDIyMiwgMjAzLCA3NywgMSwgMjQ3LCAKKyAgICA5MiwgNzcsIDEsIDI0NiwgMTk5LCA3NywgMSwgMjMwLCAxODEsIDc3LCAxLCAyMjEsIDExLCA3NywgMSwgMjA3LCAyNDEsIAorICAgIDc3LCAxLCAyMDcsIDIyOSwgNzcsIDEsIDI0NCwgMTIwLCA3NywgMSwgMjQ0LCAxMDQsIDc3LCAxLCAyMjEsIDIyNywgNzcsIAorICAgIDEsIDIxMCwgMjIsIDc3LCAxLCAyMDksIDEwOCwgNzcsIDEsIDI0NCwgMjEyLCA3NywgMSwgMjQ0LCAxLCA3NywgMSwgMjAxLCAKKyAgICAyMDEsIDc3LCAxLCAxODUsIDc3LCAxLCAyMTgsIDIwOCwgNzcsIDEsIDI0OSwgMzIsIDc3LCAxLCAyNDgsIDk4LCA3NywgMSwgCisgICAgMTkyLCA3NywgMSwgMjA4LCAyMCwgNzcsIDEsIDIwOCwgMTAsIDc3LCAxLCAyNDEsIDI1NSwgNzcsIDEsIDI0MSwgMjQ5LCAKKyAgICA3NywgMSwgMjA0LCAxMTEsIDc3LCAxLCAyMDIsIDgwLCA3NywgMSwgMjAyLCAxMTYsIDc3LCAxLCAyNTUsIDI5LCA3NywgMSwgCisgICAgMTk4LCA3NywgMSwgMjE2LCAyMjAsIDc3LCAxLCAyMjgsIDExMywgNzcsIDEsIDIxMywgOTAsIDc3LCAxLCAyMTEsIDE2NCwgCisgICAgNzcsIDEsIDIxNSwgMzYsIDc3LCAxLCAxNTIsIDc3LCAxLCA2MywgNzcsIDEsIDIyOCwgMjIzLCA3NywgMSwgMjM5LCAyMjksIAorICAgIDIxNiwgMjIwLCA3NywgMSwgMjI5LCA0NywgNzcsIDEsIDIxNSwgMTg1LCA3NywgMjIsIDIsIDI1MiwgMjUsIDc3LCAyMiwgMiwgCisgICAgNzUsIDc3LCAyMiwgMiwgMjMxLCA4MywgNzcsIDIyLCAyLCA2OCwgNzcsIDIyLCAyLCAyMDYsIDE3OCwgNzcsIDIyLCAyLCAKKyAgICAxMjUsIDE0NiwgNzcsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCA3NywgMjIsIDIsIDEyNSwgMTU5LCA3NywgMjIsIDIsIDEyNSwgCisgICAgMjI3LCA3OCwgNzcsIDIyLCAyLCA3NCwgNzcsIDIyLCAyLCAyNDEsIDE2MSwgNzcsIDIyLCAyLCA3OCwgNzcsIDIyLCAyLCAKKyAgICAyMjAsIDE4LCA3NywgMiwgMjE1LCAyMzgsIDIxMSwgMTEsIDIyMiwgMjA0LCAyMTUsIDIyNywgNzcsIDIsIDIxNSwgMjMyLCAKKyAgICAyNDgsIDE2MywgNzcsIDIyLCAyLCAyMTYsIDczLCA3NSwgNzcsIDIyLCAyLCAyMTYsIDczLCAyMzEsIDgzLCA3NywgMiwgCisgICAgMjIwLCAyNDksIDIwMiwgMjAsIDIyMywgMTA3LCAyNDQsIDIxMiwgNzcsIDIsIDIxMiwgMjcsIDIyNywgMjM2LCA3NywgMTMxLCAKKyAgICAyMzcsIDEzOSwgNzcsIDEzMSwgMjE5LCAxMzIsIDc3LCAyLCAyMjcsIDIzOSwgMjE1LCAxNDgsIDc3LCAyLCAyMDMsIDc3LCAKKyAgICAyMTUsIDE0OCwgNzcsIDIsIDIyNywgMjQwLCAyMDgsIDIxLCAyNDcsIDYxLCA3NywgMiwgMjI1LCAyNCwgMjQ3LCA2MSwgNzcsIAorICAgIDIsIDIzNywgMjM2LCAyNDcsIDYyLCAyMTYsIDYzLCA3NywgMiwgMjM3LCAyMzYsIDIyNSwgMTQsIDIxNiwgNjMsIDc3LCAyLCAKKyAgICAyMzAsIDIzOSwgMjI1LCAyNCwgMjQ3LCA2MSwgNzcsIDIxMCwgMjU0LCAyLCAyMjcsIDI0MCwgMjA4LCAyMSwgMjQ3LCA2MSwgCisgICAgNzcsIDIxMCwgMjU0LCAyLCAyMjUsIDI0LCAyNDcsIDYxLCA3NywgMjEwLCAyNTQsIDIsIDIzMCwgMjM5LCAyMjUsIDI0LCAKKyAgICAyNDcsIDYxLCA3NywgMjEwLCAyNTQsIDEsIDE3MywgNzcsIDIxMCwgMjU0LCAxLCAyMjksIDE0NCwgNzcsIDIxMCwgMjU0LCAKKyAgICAxLCAyMzksIDgsIDc3LCAyMTAsIDI1NCwgMSwgMjM4LCAxMTksIDc3LCAyMTAsIDI1NCwgMSwgMjIyLCAyMDMsIDc3LCAyMTAsIAorICAgIDI1NCwgMSwgMjQ3LCA5MiwgNzcsIDIxMCwgMjU0LCAxLCAyNDYsIDE5OSwgNzcsIDIxMCwgMjU0LCAxLCAyMzAsIDE4MSwgCisgICAgNzcsIDIxMCwgMjU0LCAxLCAyMjEsIDExLCA3NywgMjEwLCAyNTQsIDEsIDIwNywgMjQxLCA3NywgMjEwLCAyNTQsIDEsIAorICAgIDIwNywgMjI5LCA3NywgMjEwLCAyNTQsIDEsIDI0NCwgMTIwLCA3NywgMjEwLCAyNTQsIDEsIDI0NCwgMTA0LCA3NywgMjEwLCAKKyAgICAyNTQsIDEsIDIyMSwgMjI3LCA3NywgMjEwLCAyNTQsIDEsIDIxMCwgMjIsIDc3LCAyMTAsIDI1NCwgMSwgMjA5LCAxMDgsIAorICAgIDc3LCAyMTAsIDI1NCwgMSwgMjQ0LCAyMTIsIDc3LCAyMTAsIDI1NCwgMSwgMjQ0LCAxLCA3NywgMjEwLCAyNTQsIDEsIDIwMSwgCisgICAgMjAxLCA3NywgMjEwLCAyNTQsIDEsIDE4NSwgNzcsIDIxMCwgMjU0LCAxLCAyMTgsIDIwOCwgNzcsIDIxMCwgMjU0LCAxLCAKKyAgICAyNDksIDMyLCA3NywgMjEwLCAyNTQsIDEsIDI0OCwgOTgsIDc3LCAyMTAsIDI1NCwgMSwgMTkyLCA3NywgMjEwLCAyNTQsIDEsIAorICAgIDIwOCwgMjAsIDc3LCAyMTAsIDI1NCwgMSwgMjA4LCAxMCwgNzcsIDIxMCwgMjU0LCAxLCAyNDEsIDI1NSwgNzcsIDIxMCwgCisgICAgMjU0LCAxLCAyNDEsIDI0OSwgNzcsIDIxMCwgMjU0LCAxLCAyMDQsIDExMSwgNzcsIDIxMCwgMjU0LCAxLCAyMDIsIDgwLCAKKyAgICA3NywgMjEwLCAyNTQsIDEsIDIwMiwgMTE2LCA3NywgMjEwLCAyNTQsIDEsIDI1NSwgMjksIDc3LCAyMTAsIDI1NCwgMSwgCisgICAgMTk4LCA3NywgMjEwLCAyNTQsIDEsIDIxNiwgMjIwLCA3NywgMjEwLCAyNTQsIDEsIDIyOCwgMTEzLCA3NywgMjEwLCAyNTQsIAorICAgIDEsIDIxMywgOTAsIDc3LCAyMTAsIDI1NCwgMSwgMjExLCAxNjQsIDc3LCAyMTAsIDI1NCwgMSwgMjE1LCAzNiwgNzcsIDIxMCwgCisgICAgMjU0LCAxLCAxNTIsIDc3LCAyMTAsIDI1NCwgMSwgNjMsIDc3LCAyMTAsIDI1NCwgMSwgMjI4LCAyMjMsIDc3LCAyMTAsIAorICAgIDI1NCwgMSwgMjM5LCAyMjksIDIwNCwgMTExLCA3NywgMjEwLCAyNTQsIDEsIDIzOSwgMjI5LCAxOTgsIDc3LCAyMTAsIDI1NCwgCisgICAgMSwgMjM5LCAyMjksIDIxNiwgMjIwLCA3NywgMjI4LCAyMTAsIDIxNSwgMTQ2LCAyMjksIDE0NCwgNzcsIDIyOCwgMjEwLCAKKyAgICAyMTUsIDE0NiwgMjI5LCAxNDUsIDI0NywgMTI4LCAyMjQsIDEyNiwgMjQ3LCA2MSwgNzcsIDI0NywgNDksIDIsIDc5LCAyNDgsIAorICAgIDE1NSwgNzcsIDI0NywgNDksIDIsIDE1NywgMjQ4LCAxNTUsIDc3LCAyNDcsIDQ5LCAyLCAyNDcsIDUwLCAyMDksIDE4NSwgCisgICAgNzcsIDI0NywgNDksIDIsIDIxNCwgMjA0LCAyNTUsIDI4LCA3NywgMTYsIDI0MiwgNTUsIDI0NywgMTkzLCA3NywgMTYsIAorICAgIDIxNiwgMTU5LCAyMTUsIDIzOSwgNzcsIDE2LCAyMTksIDE1NSwgMjM4LCAxOTEsIDc3LCAxNiwgMjE2LCAxNTksIDIxNSwgCisgICAgMjQwLCAyMTYsIDY1LCAyMzgsIDgsIDc3LCAxNiwgMjE4LCAxNzEsIDE4NSwgNzcsIDE2LCAyMjEsIDE3NSwgMjQ3LCAxOTMsIAorICAgIDc3LCAxNiwgMjIxLCAxNzUsIDI0NywgMTk0LCAyMjAsIDIzOCwgMjU1LCAyNSwgNzcsIDE2LCAyMjEsIDE3NSwgMjQ3LCAKKyAgICAxOTQsIDIzNywgMjM0LCAyNTUsIDI1LCA3NywgMTYsIDIyMSwgMTc1LCAyNDcsIDE5NCwgMjQ3LCAxMjgsIDI1NSwgMjUsIAorICAgIDc3LCAyLCAyMTYsIDE2MCwgMjIzLCA5OSwgMjE2LCAxNjAsIDI0MywgMTI2LCA3NywgMiwgMjE2LCAxNjAsIDIyMywgOTksIAorICAgIDIzNywgMjMzLCA3NywgMTMxLCAyNDcsIDE5NywgMjEyLCAyMzgsIDIzOCwgODIsIDIyNCwgMTczLCAyMTYsIDY0LCA3NywgCisgICAgMTMxLCAyMjQsIDg0LCAyMDMsIDMsIDIzOCwgODIsIDIyNCwgMTczLCAyMTYsIDY0LCA3NywgMTMxLCAyMjAsIDIzOCwgMjA4LCAKKyAgICA1LCA3NywgMTMxLCA4MSwgMjQ3LCAyMjAsIDIxNSwgMjI5LCAyMDMsIDMsIDIyNCwgMTczLCAyMjUsIDIyLCAxOTIsIDc3LCAKKyAgICAxMzEsIDI0NiwgMTIsIDI0NywgMjIwLCAyMTUsIDIyOSwgMjAzLCAzLCAyMjQsIDE3MywgMjEzLCA5NywgMTkyLCAyMTYsIAorICAgIDE1LCAyMTAsIDE3NCwgNTQsIDIyNywgMjIxLCAyMTAsIDE3NCwgNTQsIDIxNiwgMTUsIDIxMCwgMTc0LCAyLCAzLCAyNDMsIAorICAgIDgzLCAyMjcsIDIyMSwgMjEwLCAxNzQsIDIsIDMsIDI0MywgODMsIDc3LCAxMzEsIDIyNywgMjMxLCAyMjUsIDI1LCAyMTUsIAorICAgIDE0OCwgNzcsIDEzMSwgMjA4LCAxMTIsIDIyNSwgMjUsIDIxNSwgMTQ4LCA2OSwgMSwgMTczLCA2OSwgMSwgMjI5LCAxNDQsIAorICAgIDY5LCAxLCAyMzksIDgsIDY5LCAxLCAyMzgsIDExOSwgNjksIDEsIDIyMiwgMjAzLCA2OSwgMSwgMjQ3LCA5MiwgNjksIDEsIAorICAgIDI0NiwgMTk5LCA2OSwgMSwgMjMwLCAxODEsIDY5LCAxLCAyMzAsIDE0OSwgNjksIDEsIDIyMSwgMTEsIDY5LCAxLCAyMjEsIAorICAgIDE5MywgNjksIDEsIDIwNywgMjQxLCA2OSwgMSwgMjA3LCAyMjksIDY5LCAxLCAyNDQsIDEyMCwgNjksIDEsIDI0NCwgMTA0LCAKKyAgICA2OSwgMSwgMjIxLCAyMjcsIDY5LCAxLCAyMTAsIDIyLCA2OSwgMSwgMjA5LCAxMDgsIDY5LCAxLCAyNDQsIDIxMiwgNjksIDEsIAorICAgIDI0NCwgMSwgNjksIDEsIDIwMSwgMjAxLCA2OSwgMSwgMTg1LCA2OSwgMSwgMjE4LCAyMDgsIDY5LCAxLCAyNDksIDMyLCA2OSwgCisgICAgMSwgMjQ4LCA5OCwgNjksIDEsIDE5MiwgNjksIDEsIDE5OCwgNjksIDEsIDIxNiwgMjIwLCA2OSwgMSwgMjI4LCAxMTMsIDY5LCAKKyAgICAxLCAyMDQsIDExMSwgNjksIDEsIDIxNSwgMzYsIDY5LCAxLCAxNTIsIDY5LCAxLCAyMjcsIDc3LCA2OSwgMSwgNjMsIDY5LCAKKyAgICAxLCAyMTMsIDY3LCA2MywgNjksIDEsIDc1LCA2OSwgMSwgMjMxLCA4MywgNjksIDEsIDY4LCA2OSwgMSwgMjA2LCAxNzgsIAorICAgIDY5LCAxLCA3NCwgNjksIDEsIDIyNCwgNTUsIDc0LCA2OSwgMSwgNzgsIDY5LCAxLCAyNTAsIDM0LCA2OSwgMjIsIDIsIDIwOSwgCisgICAgMjM0LCAyNTIsIDI1LCA2OSwgMjIsIDIsIDI1MiwgMjUsIDY5LCAyMiwgMiwgNzUsIDY5LCAyMiwgMiwgMjMxLCA4MywgNjksIAorICAgIDIyLCAyLCA2OCwgNjksIDIyLCAyLCAyMDYsIDE3OCwgNjksIDIyLCAyLCA3NCwgNjksIDIyLCAyLCAyNTEsIDY0LCA2OSwgCisgICAgMjIsIDIsIDIyNCwgNTUsIDIzMSwgODMsIDY5LCAyMiwgMiwgMjI0LCA1NSwgNzgsIDY5LCAyMiwgMiwgMTg4LCA1NSwgNjksIAorICAgIDIsIDI1MCwgMTgwLCA2OSwgMiwgNzAsIDU2LCA2OSwgMiwgMjA1LCAxOTksIDY5LCAyLCAyMDUsIDIwNCwgNjksIDIsIDI1MCwgCisgICAgNzksIDY5LCAxMDksIDIsIDE3NCwgMTk4LCA2OSwgMTA5LCAyLCAxNzQsIDIxNiwgMjIwLCA2OSwgMTA5LCAyLCAxNzQsIAorICAgIDIwNCwgMTExLCA2OSwgMTA5LCAyLCAxNzQsIDE1MiwgNjksIDEsIDIzNywgMjQ5LCAyMTUsIDM2LCA2OSwgMTcsIDIwMiwgCisgICAgODQsIDY5LCAxNywgMTA1LCA2OSwgMTcsIDEwOCwgNjksIDE3LCAxNDcsIDY5LCAxNywgMTQ5LCA2OSwgMTcsIDE3MCwgNjksIAorICAgIDE3LCAxOTUsIDY5LCAxNywgMjEzLCAxMTEsIDY5LCAxNywgMTk5LCA2OSwgMTcsIDIyMiwgNjMsIDY5LCAyLCAyMjcsIDg2LCAKKyAgICAyMTQsIDE2NywgNjksIDIsIDIxNCwgMTY3LCA2OSwgMTYsIDIyNywgNDQsIDY5LCAxNiwgMjQ1LCAyMjcsIDY5LCAxNiwgCisgICAgMjUxLCA4NSwgNjksIDE2LCAyMzgsIDE3NCwgNjksIDEsIDIxMywgOTAsIDY5LCAxLCAyMTEsIDE2NCwgNjksIDEsIDEyNSwgCisgICAgMTQ2LCA2OSwgMSwgMTI1LCAyMTUsIDE4NiwgNjksIDEsIDEyNSwgMTU5LCA2OSwgMSwgMTI1LCAyMjcsIDc4LCA2OSwgMjIsIAorICAgIDIsIDEyNSwgMTQ2LCA2OSwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDY5LCAyMiwgMiwgMTI1LCAxNTksIDY5LCAyMiwgMiwgCisgICAgMTI1LCAyMjcsIDc4LCA2OSwgMSwgMjI0LCA1NSwgMjIyLCAyMDMsIDY5LCAxLCAyMjQsIDU1LCAyMzAsIDE0OSwgNjksIDEsIAorICAgIDIyNCwgNTUsIDI0OCwgMTk4LCA2OSwgMSwgMjI0LCA1NSwgMjQ4LCAxOTMsIDY5LCAxMDksIDIsIDIyNCwgNTUsIDE3NCwgCisgICAgMjAxLCAyMDEsIDY5LCAxMDksIDIsIDIyNCwgNTUsIDE3NCwgMTkyLCA2OSwgMTA5LCAyLCAyMjQsIDU1LCAxNzQsIDIyOCwgCisgICAgMTEzLCA2OSwgMSwgMjEzLCA5NiwgMjI5LCAyMzcsIDIxMywgOTAsIDY5LCAyMiwgMiwgMjEzLCA5NiwgMjI5LCAyMzcsIAorICAgIDI0MCwgMjM4LCA2OSwgMTQzLCAxMzEsIDIxMywgOTYsIDIyOSwgMjM3LCAyMzcsIDc5LCA2OSwgMTQzLCAxMzEsIDIxMywgCisgICAgOTYsIDIyOSwgMjM3LCAyMjksIDIwMiwgMjE4LCAxODAsIDY5LCAxLCAyMDQsIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIAorICAgIDIwOSwgMTA4LCA2OSwgMSwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMTcsIDE1MiwgNjksIDIyLCAyLCAyMDQsIAorICAgIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDI0MCwgMjM4LCA2OSwgMjIsIDIsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgCisgICAgMjA3LCAyNCwgNjksIDIsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjA4LCAxNjAsIDY5LCAyLCAyMDQsIDQ0LCAKKyAgICAyMTcsIDE0NiwgMjI5LCAyMzcsIDIwOCwgMTU5LCA2OSwgMiwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDgsIAorICAgIDE1OCwgNjksIDIsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjA4LCAxNTcsIDY5LCAyLCAyMDQsIDQ0LCAyMTcsIAorICAgIDE0NiwgMjI5LCAyMzcsIDIwOCwgMTU2LCA2OSwgMSwgMjQxLCAxNzQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjIxLCAyMjcsIAorICAgIDY5LCAxLCAyNDEsIDE3NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDIsIDE3NiwgNjksIDEsIDI0MSwgMTc0LCAyMTcsIDE0NiwgCisgICAgMjI5LCAyMzcsIDIzOCwgODQsIDY5LCAyMiwgMiwgMjM4LCAxODYsIDIyOSwgMjM3LCA3NSwgNjksIDIyLCAyLCAyMjksIAorICAgIDIwNywgMjIwLCA3MywgNjksIDIyLCAyLCAyMjksIDIwNywgNjgsIDY5LCAyMiwgMiwgMjI5LCAyMDcsIDI0MSwgMTYxLCA2OSwgCisgICAgMSwgMjEzLCA2NywgMTczLCA2OSwgMSwgMjEzLCA2NywgMjI5LCAxNDQsIDY5LCAxLCAyMTMsIDY3LCAyMzksIDgsIDY5LCAxLCAKKyAgICAyMTMsIDY3LCAyNDcsIDkyLCA2OSwgMSwgMjEzLCA2NywgMjAyLCAxMTYsIDY5LCAxLCAyMTMsIDY3LCAyMjEsIDExLCA2OSwgCisgICAgMSwgMjEzLCA2NywgMjQ0LCAyMTIsIDY5LCAxLCAyMTMsIDY3LCAyMDEsIDIwMSwgNjksIDEsIDIxMywgNjcsIDIxOCwgMjA4LCAKKyAgICA2OSwgMSwgMjEzLCA2NywgMjQwLCAxMDgsIDY5LCAxLCAyMTMsIDY3LCAyNDksIDMyLCA2OSwgMSwgMjEzLCA2NywgMjA5LCAKKyAgICAxMDgsIDY5LCAxLCAyMTMsIDY3LCAxNTIsIDY5LCAxMDksIDIsIDIxMywgNjcsIDE3NCwgMjA0LCAxMTEsIDY5LCAyMiwgMiwgCisgICAgMjEzLCA2NywgMjUyLCAyNSwgNjksIDIyLCAyLCAyMTMsIDY3LCA3NCwgNjksIDIyLCAyLCAyMTMsIDY3LCAxODgsIDU1LCAKKyAgICA2OSwgMjIsIDIsIDIxMywgNjcsIDQ2LCAyMDMsIDEyNCwgNjksIDIsIDIxMywgNjcsIDIwOCwgMTU5LCA2OSwgMiwgMjEzLCAKKyAgICA2NywgMjA4LCAxNTgsIDY5LCAyLCAyMTMsIDY3LCAyMDgsIDE1NiwgNjksIDIsIDIxMywgNjcsIDIwOCwgMTU1LCA2OSwgMiwgCisgICAgMjEzLCA2NywgMjQ1LCAxNTYsIDIwOCwgMTU5LCA2OSwgMiwgMjEzLCA2NywgMjQ1LCAxNTYsIDIwOCwgMTU4LCA2OSwgMiwgCisgICAgMjEzLCA2NywgMjQ1LCAxNTYsIDI0MSwgOTUsIDIwOCwgMTYxLCA2OSwgMSwgMjE1LCAxMzAsIDIxOSwgMTM5LCAyNDAsIAorICAgIDEwOCwgNjksIDIsIDIxNSwgMTMwLCAyMTksIDEzOSwgMjA4LCAxNTYsIDY5LCAyMTMsIDY3LCAxNywgMjAyLCA4NCwgNjksIAorICAgIDIxMywgNjcsIDE3LCAxMDUsIDY5LCAyMTMsIDY3LCAxNywgMTA4LCA2OSwgMjEzLCA2NywgMTcsIDE0NywgNjksIDIxMywgCisgICAgNjcsIDE3LCAxNDksIDY5LCAyMTMsIDY3LCAxNywgMTcwLCA2OSwgMjEzLCA2NywgMTcsIDE5NSwgNjksIDIxMywgNjcsIDE3LCAKKyAgICAyMTMsIDExMSwgNjksIDIxMywgNjcsIDE3LCAxOTksIDY5LCAyMTMsIDY3LCAxNywgMjIyLCA2MywgNjksIDIsIDIyOSwgCisgICAgMTM3LCAyMDgsIDE2MCwgNjksIDIsIDIyOSwgMTM3LCAyMDgsIDE1OCwgNjksIDIyLCAyLCAyNTEsIDUxLCA2MywgNjksIDIyLCAKKyAgICAyLCAyNTEsIDUxLCAyNTEsIDY0LCA2OSwgMTYsIDIxMywgNjcsIDEwNSwgNjksIDE2LCAyMTMsIDY3LCAyNDAsIDIxMSwgCisgICAgMTE0LCA2LCAxLCAyNTAsIDIzMSwgMTE0LCA2LCAxLCAyNDgsIDI0MiwgMTE0LCA2LCAxLCAyMzgsIDIzNCwgMTE0LCA2LCAxLCAKKyAgICAyNDMsIDkzLCAxMTQsIDYsIDEsIDI0MSwgOTIsIDExNCwgNiwgMSwgMjA1LCAyMTMsIDExNCwgNiwgMSwgMjAyLCA4NywgCisgICAgMTE0LCA2LCAxLCAyMDksIDIzMCwgMTE0LCA2LCAxLCAyMzEsIDQ5LCAxMTQsIDYsIDEsIDIzMCwgNCwgMTE0LCA2LCAxLCAKKyAgICAyMjgsIDIsIDExNCwgNiwgMSwgMjI1LCAxMjIsIDExNCwgNiwgMSwgMjIzLCA3NCwgMTE0LCA2LCAxLCAyMjAsIDMxLCAxMTQsIAorICAgIDYsIDEsIDIxOSwgOTEsIDExNCwgNiwgMSwgMjAyLCA3NiwgMTE0LCA2LCAxLCAyMTYsIDIwMiwgMTE0LCA2LCAxLCAyMTQsIAorICAgIDI0MywgMTE0LCA2LCAxLCAyMDksIDIxOCwgMTE0LCA2LCAxLCAyMDYsIDI1NSwgMTE0LCA2LCAxLCAyMTgsIDIwMCwgMTE0LCAKKyAgICA2LCAxLCAyMjksIDEzMiwgMTE0LCA2LCAxLCAyMzgsIDExMCwgMTE0LCA2LCAxLCAyMTcsIDExMSwgMTE0LCA2LCAxLCAyMTIsIAorICAgIDI1NSwgMTE0LCA2LCAxLCAyNDYsIDEyOSwgMTE0LCA2LCAxLCAyNDcsIDYxLCAxMTQsIDYsIDEsIDIzMCwgMTMzLCAxMTQsIAorICAgIDYsIDEsIDI0NiwgNjgsIDExNCwgNiwgMSwgMjQ2LCAxODMsIDExNCwgNiwgMSwgMjAzLCAxODAsIDExNCwgNiwgMSwgMjMwLCAKKyAgICAxNDYsIDExNCwgNiwgMSwgMjM3LCAxNTQsIDExNCwgNiwgMSwgMjM3LCA2NywgMTE0LCA2LCAxLCAyMzYsIDI1NCwgMTE0LCAKKyAgICA2LCAxLCAyMDQsIDYyLCAxMTQsIDYsIDEsIDIzNywgOTIsIDExNCwgNiwgMSwgMjM2LCAxMzIsIDExNCwgNiwgMSwgMjAyLCAKKyAgICAyNDksIDExNCwgNiwgMSwgMjUxLCA5OCwgMTE0LCAxLCAyNTAsIDIzMSwgMTE0LCAxLCAyNDgsIDI0MiwgMTE0LCAxLCAyMzgsIAorICAgIDIzNCwgMTE0LCAxLCAyNDMsIDkzLCAxMTQsIDEsIDI0MSwgOTIsIDExNCwgMSwgMjA1LCAyMTMsIDExNCwgMSwgMjAyLCA4NywgCisgICAgMTE0LCAxLCAyMDksIDIzMCwgMTE0LCAxLCAyMzEsIDQ5LCAxMTQsIDEsIDIzMCwgNCwgMTE0LCAxLCAyMjgsIDIsIDExNCwgCisgICAgMSwgMjI1LCAxMjIsIDExNCwgMSwgMjIzLCA3NCwgMTE0LCAxLCAyMjAsIDMxLCAxMTQsIDEsIDIxOSwgOTEsIDExNCwgMSwgCisgICAgMjAyLCA3NiwgMTE0LCAxLCAyMTYsIDIwMiwgMTE0LCAxLCAyMTQsIDI0MywgMTE0LCAxLCAyMDksIDIxOCwgMTE0LCAxLCAKKyAgICAyMDYsIDI1NSwgMTE0LCAxLCAyMTgsIDIwMCwgMTE0LCAxLCAyMjksIDEzMiwgMTE0LCAxLCAyMzgsIDExMCwgMTE0LCAxLCAKKyAgICAyMTcsIDExMSwgMTE0LCAxLCAyMTIsIDI1NSwgMTE0LCAxLCAyNDYsIDEyOSwgMTE0LCAxLCAyNDcsIDYxLCAxMTQsIDEsIAorICAgIDIzMCwgMTMzLCAxMTQsIDEsIDI0NiwgNjgsIDExNCwgMSwgMjQ2LCAxODMsIDExNCwgMSwgMjAzLCAxODAsIDExNCwgMSwgCisgICAgMjMwLCAxNDYsIDExNCwgMSwgMjM3LCAxNTQsIDExNCwgMSwgMjM3LCA2NywgMTE0LCAxLCAyMzYsIDI1NCwgMTE0LCAxLCAKKyAgICAyMDQsIDYyLCAxMTQsIDEsIDIzNywgOTIsIDExNCwgMSwgMjM2LCAxMzIsIDExNCwgMSwgMjQwLCAyNiwgMTE0LCAxLCAyMDIsIAorICAgIDI0OSwgMTE0LCAxLCAyNDEsIDExMCwgMTE0LCAxLCAyMDcsIDE3NCwgMjM4LCAyMzQsIDExNCwgMSwgMjUxLCA1OSwgMTE0LCAKKyAgICAyMTksIDg5LCAyMTMsIDEzMCwgNjUsIDEsIDExNCwgMjIzLCA3NCwgMTE0LCAxLCAyNTEsIDk4LCAxMTQsIDEsIDIzNywgOTEsIAorICAgIDU0LCAxMTQsIDEsIDIyOCwgMTA0LCA1NCwgMjgsIDEyMywgMjI5LCA1OSwgMjgsIDEyMywgMjExLCAxNTYsIDI4LCAxMjMsIAorICAgIDIyMiwgOTMsIDI4LCAxMjMsIDIwOCwgMjQwLCAyOCwgMTIzLCAyMTEsIDE0NSwgMjgsIDEyMywgMjE2LCA0NywgMjgsIDEyMywgCisgICAgMjI0LCAxNDEsIDI4LCAxMjMsIDIxOCwgMTUzLCAyOCwgMTIzLCAyMTEsIDE1MywgMjgsIDEyMywgMjEyLCAxMTEsIDI4LCAKKyAgICAxMjMsIDIxMSwgMTUwLCAyOCwgMTIzLCAyMzEsIDEwNiwgMjgsIDEyMywgMjQ2LCA3NCwgMjgsIDEyMywgMjExLCAxNjAsIAorICAgIDI4LCAxMjMsIDI0NiwgMTM4LCAyOCwgMTIzLCAyMjksIDEyMCwgMjgsIDEyMywgMjA5LCA2NiwgMjgsIDEyMywgMjE4LCAKKyAgICAxOTAsIDI4LCAxMjMsIDIzNiwgMjUxLCAyOCwgMTIzLCAyMjIsIDg5LCAyOCwgMTIzLCAyMTEsIDE1NCwgMjgsIDEyMywgCisgICAgMjIyLCA4MywgMjgsIDEyMywgMjIyLCA4NywgMjgsIDEyMywgMjA4LCAyMzcsIDI4LCAxMjMsIDIxNiwgMzUsIDI4LCAxMjMsIAorICAgIDIxMSwgMTUyLCAyOCwgMTIzLCAyMTYsIDQ1LCAyOCwgMTIzLCAyMjksIDI0MywgMjgsIDEyMywgMjI0LCAxMzQsIDI4LCAKKyAgICAxMjMsIDIyOSwgMjQ2LCAyOCwgMTIzLCAyMTgsIDE0OCwgMjgsIDEyMywgMjE4LCAxNDYsIDI4LCAxMjMsIDIxOCwgMTM0LCAKKyAgICAyOCwgMTIzLCAyMTgsIDE0MiwgMjgsIDEyMywgMjE4LCAxNDAsIDI4LCAxMjMsIDIxOCwgMTM3LCAyOCwgMTIzLCAyMTgsIAorICAgIDEzOSwgMjgsIDEyMywgMjE4LCAxMzYsIDI4LCAxMjMsIDIxOCwgMTQxLCAyOCwgMTIzLCAyMTgsIDE1MSwgMjgsIDEyMywgCisgICAgMjE4LCAxNTIsIDI4LCAxMjMsIDIxOCwgMTM1LCAyOCwgMTIzLCAyMTgsIDE0NSwgMjgsIDEyMywgMjI5LCAyNDQsIDI4LCAKKyAgICAxMjMsIDIyOSwgMjQyLCAyOCwgMTIzLCAyMTIsIDEwNCwgMjgsIDEyMywgMjEyLCAxMDIsIDI4LCAxMjMsIDIxMiwgOTQsIAorICAgIDI4LCAxMjMsIDIxMiwgOTcsIDI4LCAxMjMsIDIxMiwgMTAzLCAyOCwgMTIzLCAyMTIsIDk5LCAyOCwgMTIzLCAyMTIsIDk4LCAKKyAgICAyOCwgMTIzLCAyMTIsIDk2LCAyOCwgMTIzLCAyMTIsIDEwNywgMjgsIDEyMywgMjEyLCAxMDksIDI4LCAxMjMsIDIxMiwgCisgICAgMTEwLCAyOCwgMTIzLCAyMTIsIDEwNSwgMjgsIDEyMywgMjEyLCA5NSwgMjgsIDEyMywgMjEyLCAxMDAsIDI4LCAxMjMsIAorICAgIDIxMiwgMTA4LCAyOCwgMTIzLCAyNDYsIDEyMCwgMjgsIDEyMywgMjQ2LCAxMTgsIDI4LCAxMjMsIDI0NiwgMjEwLCAyOCwgCisgICAgMTIzLCAyNDYsIDIwOCwgMjgsIDEyMywgMjE5LCAxMDcsIDI4LCAxMjMsIDIzMSwgMTAxLCAyOCwgMTIzLCAyMzEsIDkyLCAKKyAgICAyOCwgMTIzLCAyMzEsIDEwMCwgMjgsIDEyMywgMjMxLCA5NywgMjgsIDEyMywgMjMxLCA5NSwgMjgsIDEyMywgMjMxLCA5OSwgCisgICAgMjgsIDEyMywgMjExLCAxNTcsIDI4LCAxMjMsIDIzMSwgMTA0LCAyOCwgMTIzLCAyMzEsIDEwNSwgMjgsIDEyMywgMjMxLCAKKyAgICA5MywgMjgsIDEyMywgMjMxLCA5OCwgMjgsIDEyMywgMjAzLCAyOSwgMjgsIDEyMywgMjQ2LCA3MywgMjgsIDEyMywgMjQ2LCAKKyAgICAxMjEsIDI4LCAxMjMsIDI0NiwgMTE5LCAyOCwgMTIzLCAyNDYsIDIxMSwgMjgsIDEyMywgMjQ2LCAyMDksIDI4LCAxMjMsIAorICAgIDI0NiwgMTM2LCAyOCwgMTIzLCAyNDYsIDEzNywgMjgsIDEyMywgMjQ2LCAxMjIsIDI4LCAxMjMsIDI0NiwgMjEyLCAyOCwgCisgICAgMTIzLCAyMTgsIDE4OCwgMjgsIDEyMywgMjI5LCAyNDUsIDI4LCAxMjMsIDIxMSwgMTU4LCAyOCwgMTIzLCAyMDMsIDM1LCAKKyAgICAyOCwgMTIzLCAyMjksIDUwLCAyOCwgMTIzLCAyMjIsIDg1LCAyOCwgMTIzLCAyMjIsIDkxLCAyOCwgMTIzLCAyMjIsIDkwLCAKKyAgICAyOCwgMTIzLCAyMDgsIDIzNCwgMjgsIDEyMywgMjQwLCA3LCAyOCwgMTc2LCAyNDAsIDcsIDI4LCAxNzYsIDYzLCAyOCwgCisgICAgMTc2LCAyNTEsIDEwOSwgMjgsIDE3NiwgMTk4LCAyOCwgMTc2LCAyMDMsIDk5LCAyOCwgMTc2LCAyNDEsIDU1LCAyOCwgMTc2LCAKKyAgICA3NCwgMjgsIDE3NiwgMjAzLCAzOSwgMjgsIDE3NiwgMjAzLCA1MiwgMjgsIDE3NiwgNzgsIDI4LCAxNzYsIDIwNCwgMTExLCAKKyAgICAyOCwgMTc2LCAyMDQsIDEwNywgMjgsIDE3NiwgMjIwLCA3MywgMjgsIDE3NiwgMjAyLCAyNDcsIDI4LCAxNzYsIDY4LCAyOCwgCisgICAgMTc2LCAyMDQsIDQ4LCAyOCwgMTc2LCAyMDQsIDYyLCAyOCwgMTc2LCAyMDQsIDMwLCAyOCwgMTc2LCAyMDIsIDIxMywgMjgsIAorICAgIDE3NiwgMjQwLCAyMzgsIDI4LCAxNzYsIDIwMywgMTEsIDI4LCAxNzYsIDc1LCAyOCwgMTc2LCAyNTUsIDIwLCAyOCwgMTc2LCAKKyAgICAyNTUsIDE5LCAyOCwgMTc2LCAyMDMsIDExMywgMjgsIDE3NiwgMjAzLCAxMTEsIDI4LCAxNzYsIDI0MSwgNTMsIDI4LCAxNzYsIAorICAgIDI0MSwgNTIsIDI4LCAxNzYsIDI0MSwgNTQsIDI4LCAxNzYsIDIwMywgMzgsIDI4LCAxNzYsIDIwMywgMzcsIDI4LCAxNzYsIAorICAgIDIyMCwgMTgxLCAyOCwgMTc2LCAyMjAsIDE4MiwgMjgsIDE3NiwgMjIwLCAxNzUsIDI4LCAxNzYsIDIyMCwgMTgwLCAyOCwgCisgICAgMTc2LCAyMjAsIDE3OCwgMjgsIDE3NiwgMjAyLCAyNDEsIDI4LCAxNzYsIDIwMiwgMjQwLCAyOCwgMTc2LCAyMDIsIDIzOSwgCisgICAgMjgsIDE3NiwgMjAyLCAyNDIsIDI4LCAxNzYsIDIwMiwgMjQzLCAyOCwgMTc2LCAyMDcsIDk3LCAyOCwgMTc2LCAyMDcsIDk2LCAKKyAgICAyOCwgMTc2LCAyMDcsIDk0LCAyOCwgMTc2LCAyMDcsIDkwLCAyOCwgMTc2LCAyMDcsIDkxLCAyOCwgMTc2LCAyMDIsIDIxMiwgCisgICAgMjgsIDE3NiwgMjAyLCAyMDksIDI4LCAxNzYsIDIwMiwgMjEwLCAyOCwgMTc2LCAyMDIsIDIwNCwgMjgsIDE3NiwgMjAyLCAKKyAgICAyMDUsIDI4LCAxNzYsIDIwMiwgMjA2LCAyOCwgMTc2LCAyMDIsIDIwOCwgMjgsIDE3NiwgMjQwLCAyMzIsIDI4LCAxNzYsIAorICAgIDI0MCwgMjM0LCAyOCwgMTc2LCAyMDMsIDEwLCAyOCwgMTc2LCAyMzUsIDIwNSwgMjgsIDE3NiwgMjM1LCAxOTcsIDI4LCAKKyAgICAxNzYsIDIzNSwgMjAwLCAyOCwgMTc2LCAyMzUsIDE5OCwgMjgsIDE3NiwgMjM1LCAyMDIsIDI4LCAxNzYsIDIzNSwgMjA0LCAKKyAgICAyOCwgMTc2LCAyNTAsIDEzNywgMjgsIDE3NiwgMjUwLCAxMzQsIDI4LCAxNzYsIDI1MCwgMTMyLCAyOCwgMTc2LCAyNTAsIAorICAgIDEzMywgMjgsIDE3NiwgMjExLCAxNjEsIDI4LCAxNzYsIDI1NSwgMjEsIDI4LCAxNzYsIDIwMywgMTEyLCAyOCwgMTc2LCAKKyAgICAyMDMsIDM2LCAyOCwgMTc2LCAyMjAsIDE3NywgMjgsIDE3NiwgMjIwLCAxNzYsIDI4LCAxMDcsIDIyOSwgNTksIDI4LCAxMDcsIAorICAgIDIxMSwgMTU2LCAyOCwgMTA3LCAyMjksIDUyLCAyOCwgMTA3LCAyMjIsIDkzLCAyOCwgMTA3LCAyMjIsIDkxLCAyOCwgMTA3LCAKKyAgICAyMjIsIDkwLCAyOCwgMTA3LCAyMDgsIDI0MCwgMjgsIDEwNywgMjE2LCA0NywgMjgsIDEwNywgMjE2LCA0MiwgMjgsIDEwNywgCisgICAgMjE2LCAzOSwgMjgsIDEwNywgMjE2LCAzMiwgMjgsIDEwNywgMjE2LCAyNywgMjgsIDEwNywgMjE2LCAyMiwgMjgsIDEwNywgCisgICAgMjE2LCAzMywgMjgsIDEwNywgMjE2LCA0NSwgMjgsIDEwNywgMjI0LCAxNDEsIDI4LCAxMDcsIDIxOCwgMTUzLCAyOCwgMTA3LCAKKyAgICAyMTgsIDE0MiwgMjgsIDEwNywgMjEyLCAxMTEsIDI4LCAxMDcsIDIxMSwgMTUwLCAyOCwgMTA3LCAyMzEsIDEwNiwgMjgsIAorICAgIDEwNywgMjQ2LCA3NCwgMjgsIDEwNywgMjQ2LCAxMzgsIDI4LCAxMDcsIDIyOSwgMTIwLCAyOCwgMTA3LCAyMDksIDY2LCAyOCwgCisgICAgMTA3LCAyMTgsIDE5MCwgMjgsIDEwNywgMjM2LCAyNTEsIDI4LCAxMDcsIDIyOSwgNTMsIDI4LCAxMDcsIDIyOSwgNTEsIDI4LCAKKyAgICAxMDcsIDIyMiwgODksIDI4LCAxMDcsIDIyMiwgODMsIDI4LCAxMDcsIDIyMiwgODUsIDI4LCAxMDcsIDIyMiwgODgsIDI4LCAKKyAgICAxMDcsIDIyMiwgODQsIDI4LCAxMDcsIDIwOCwgMjM3LCAyOCwgMTA3LCAyMDgsIDIzNCwgMjgsIDEwNywgMjE2LCA0MCwgMjgsIAorICAgIDEwNywgMjE2LCAzNSwgMjgsIDEwNywgMjE2LCAyMSwgMjgsIDEwNywgMjE2LCAyMCwgMjgsIDEwNywgMjExLCAxNTIsIDI4LCAKKyAgICAxMDcsIDIxNiwgMzcsIDI4LCAxMDcsIDIxNiwgMzYsIDI4LCAxMDcsIDIxNiwgMjksIDI4LCAxMDcsIDIxNiwgMzEsIDI4LCAKKyAgICAxMDcsIDIxNiwgNDQsIDI4LCAxMDcsIDIxNiwgMjQsIDI4LCAxMDcsIDIxNiwgMzQsIDI4LCAxMDcsIDIxNiwgNDMsIDI4LCAKKyAgICAxMDcsIDIxNiwgMTksIDI4LCAxMDcsIDIyNCwgMTM3LCAyOCwgMTA3LCAyMjQsIDEzMiwgMjgsIDEwNywgMjI0LCAxMzQsIAorICAgIDI4LCAxMDcsIDIyNCwgMTMxLCAyOCwgMTA3LCAyMjQsIDEyOSwgMjgsIDEwNywgMjI0LCAxMzUsIDI4LCAxMDcsIDIyNCwgCisgICAgMTQwLCAyOCwgMTA3LCAyMjQsIDEzOCwgMjgsIDEwNywgMjI5LCAyNDYsIDI4LCAxMDcsIDIxOCwgMTQ0LCAyOCwgMTA3LCAKKyAgICAyMTgsIDE0NSwgMjgsIDEwNywgMjE4LCAxNTAsIDI4LCAxMDcsIDIyOSwgMjQ0LCAyOCwgMTA3LCAyMTIsIDEwNCwgMjgsIAorICAgIDEwNywgMjEyLCA5NCwgMjgsIDEwNywgMjEyLCA5NywgMjgsIDEwNywgMjEyLCA5OSwgMjgsIDEwNywgMjE5LCAxMDcsIDI4LCAKKyAgICAxMDcsIDIzMSwgMTAxLCAyOCwgMTA3LCAyMzEsIDk0LCAyOCwgMTA3LCAyMTEsIDE1NywgMjgsIDEwNywgMjMxLCAxMDIsIAorICAgIDI4LCAxMDcsIDIwMywgMjksIDI4LCAxMDcsIDIwMywgMjUsIDI4LCAxMDcsIDIwMywgMjYsIDI4LCAxMDcsIDIxOCwgMTg4LCAKKyAgICAyOCwgMTA3LCAyMjksIDI0NSwgMjgsIDEwNywgMjM2LCAyNDksIDI4LCAxMDcsIDIzNiwgMjQ3LCAyOCwgMTA3LCAyMzYsIAorICAgIDI1MCwgMjgsIDEwNywgMjM2LCAyNDgsIDI4LCAxMDcsIDIwMywgMzUsIDI4LCAxMDcsIDIyOSwgNTUsIDI4LCAxMDcsIDIyOSwgCisgICAgNTQsIDI4LCAxMDcsIDIyOSwgNTgsIDI4LCAxMDcsIDIyOSwgNTYsIDI4LCAxMDcsIDIyOSwgNTcsIDI4LCAxMDcsIDIxMSwgCisgICAgMTU0LCAzMywgNCwgMTUyLCAzMywgNCwgMjM2LCAyNiwgMzMsIDQsIDIzNywgMywgMzMsIDQsIDIzNywgMTU3LCAzMywgNCwgCisgICAgMjM3LCA0OCwgMzMsIDQsIDIzNywgNjcsIDMzLCA0LCAyMzYsIDEzNiwgMzMsIDQsIDIzNiwgMTM1LCAzMywgNCwgMjI4LCAKKyAgICAxMTMsIDMzLCA0LCAyMjYsIDIzOSwgMzMsIDQsIDIyNywgMTQ4LCAzMywgNCwgMjI4LCAxMTIsIDMzLCA0LCAyMjcsIDIyNiwgCisgICAgMzMsIDQsIDIyNywgMjM0LCAzMywgNCwgMjI3LCA0OSwgMzMsIDQsIDIyNiwgMjA3LCAzMywgNCwgMjM3LCAxMiwgMzMsIDQsIAorICAgIDIzNywgNiwgMzMsIDQsIDIzNywgOCwgMzMsIDQsIDIzNywgMTEsIDMzLCA0LCAyMzcsIDksIDMzLCA0LCAyMzcsIDEwLCAzMywgCisgICAgNCwgMjM3LCA3LCAzMywgNCwgMjM3LCA1LCAzMywgNCwgMTkyLCAzMywgNCwgMjIzLCAyNDYsIDMzLCA0LCAyMjQsIDE1NSwgCisgICAgMzMsIDQsIDIyNSwgMTc1LCAzMywgNCwgMjI1LCA4LCAzMywgNCwgMjI1LCAyMCwgMzMsIDQsIDIyNCwgODIsIDMzLCA0LCAKKyAgICAyMjMsIDE4MCwgMzMsIDQsIDIxMCwgODAsIDMzLCA0LCAyMTAsIDc0LCAzMywgNCwgMjEwLCA3NiwgMzMsIDQsIDIxMCwgNzksIAorICAgIDMzLCA0LCAyMTAsIDc3LCAzMywgNCwgMjEwLCA3OCwgMzMsIDQsIDIxMCwgNzUsIDMzLCA0LCAyMTAsIDczLCAzMywgNCwgCisgICAgMjE2LCAyMjAsIDMzLCA0LCAyMTUsIDE0NSwgMzMsIDQsIDIxNiwgNTcsIDMzLCA0LCAyMTYsIDIxNiwgMzMsIDQsIDIxNiwgCisgICAgMTM1LCAzMywgNCwgMjE2LCAxNTgsIDMzLCA0LCAyMTUsIDIyNywgMzMsIDQsIDIxNSwgMTExLCAzMywgNCwgMjE1LCAzNiwgCisgICAgMzMsIDQsIDIxMSwgMTAsIDMzLCA0LCAyMTIsIDE2MiwgMzMsIDQsIDIxNSwgMzMsIDMzLCA0LCAyMTQsIDE2NSwgMzMsIDQsIAorICAgIDIxNCwgMTc3LCAzMywgNCwgMjEyLCAxMywgMzMsIDQsIDIxMCwgMTcyLCAzMywgNCwgMjEzLCA5MCwgMzMsIDQsIDIxMiwgCisgICAgMTk5LCAzMywgNCwgMjEzLCAxMSwgMzMsIDQsIDIxMywgODUsIDMzLCA0LCAyMTMsIDQxLCAzMywgNCwgMjEzLCA0MywgMzMsIAorICAgIDQsIDIxMiwgMjQyLCAzMywgNCwgMjEyLCAxODAsIDMzLCA0LCAyMTcsIDEyNiwgMzMsIDQsIDIxNywgNjUsIDMzLCA0LCAKKyAgICAyMTcsIDg4LCAzMywgNCwgMjE3LCAxMjUsIDMzLCA0LCAyMTcsIDEwNSwgMzMsIDQsIDIxNywgMTA2LCAzMywgNCwgMjE3LCAKKyAgICA3NywgMzMsIDQsIDIxNywgNzYsIDMzLCA0LCAyMTcsIDE5LCAzMywgNCwgMjE3LCAxNSwgMzMsIDQsIDIxNywgMTgsIDMzLCAKKyAgICA0LCAyMTcsIDE2LCAzMywgNCwgMjE3LCAxNywgMzMsIDQsIDIxNywgMTAyLCAzMywgNCwgMjE3LCA5NCwgMzMsIDQsIDIxNywgCisgICAgOTcsIDMzLCA0LCAyMTcsIDEwMSwgMzMsIDQsIDIxNywgOTgsIDMzLCA0LCAyMTcsIDk5LCAzMywgNCwgMjE3LCA5NiwgMzMsIAorICAgIDQsIDIxNywgOTMsIDMzLCA0LCAyMTcsIDg5LCAzMywgNCwgMjE3LCA5MiwgMzMsIDQsIDIxNywgOTAsIDMzLCA0LCAyMTcsIAorICAgIDkxLCAzMywgNCwgMjQ5LCAzMiwgMzMsIDQsIDI0NywgMTkzLCAzMywgNCwgMjQ4LCA4NiwgMzMsIDQsIDI0OSwgMzAsIDMzLCAKKyAgICA0LCAyNDgsIDE1MCwgMzMsIDQsIDI0OCwgMTYyLCAzMywgNCwgMjQ4LCAyMywgMzMsIDQsIDI0NywgMTQyLCAzMywgNCwgCisgICAgMjA2LCA4NiwgMzMsIDQsIDIwNCwgMTYzLCAzMywgNCwgMjA1LCAyMzAsIDMzLCA0LCAyMDYsIDg1LCAzMywgNCwgMjA2LCAKKyAgICA1MCwgMzMsIDQsIDIwNiwgNTUsIDMzLCA0LCAyMDUsIDE4OSwgMzMsIDQsIDIwNCwgMTU0LCAzMywgNCwgMjEwLCAyMiwgMzMsIAorICAgIDQsIDIwNywgMjAzLCAzMywgNCwgMjA5LCAyLCAzMywgNCwgMjEwLCAxOCwgMzMsIDQsIDIwOSwgMTc2LCAzMywgNCwgMjA5LCAKKyAgICAxODcsIDMzLCA0LCAxMzUsIDMzLCA0LCAyMDcsIDE2MCwgMzMsIDQsIDI0NywgOTIsIDMzLCA0LCAyNDUsIDExMCwgMzMsIDQsIAorICAgIDI0NiwgNzksIDMzLCA0LCAyNDcsIDkxLCAzMywgNCwgMjQ2LCAyMzAsIDMzLCA0LCAyNDYsIDIzOCwgMzMsIDQsIDI0NSwgCisgICAgMjU0LCAzMywgNCwgMjQ1LCA3NCwgMzMsIDQsIDIwMywgMTgyLCAzMywgNCwgMjAzLCAxNTIsIDMzLCA0LCAyMDMsIDE3MCwgCisgICAgMzMsIDQsIDIwMywgMTgxLCAzMywgNCwgMjAzLCAxNzUsIDMzLCA0LCAyMDMsIDE3NiwgMzMsIDQsIDIwMywgMTYwLCAzMywgCisgICAgNCwgMjAzLCAxNTksIDMzLCA0LCAyMDMsIDE0NiwgMzMsIDQsIDIwMywgMTQyLCAzMywgNCwgMjAzLCAxNDUsIDMzLCA0LCAKKyAgICAyMDMsIDE0MywgMzMsIDQsIDIwMywgMTQ0LCAzMywgNCwgMjAxLCAyMDEsIDMzLCA0LCAyMjEsIDg0LCAzMywgNCwgMjIyLCAKKyAgICAxMDAsIDMzLCA0LCAyMjMsIDEwNiwgMzMsIDQsIDIyMiwgMjM1LCAzMywgNCwgMjIyLCAyNDAsIDMzLCA0LCAyMjEsIDE5MSwgCisgICAgMzMsIDQsIDIyMSwgMjAsIDMzLCA0LCAyMjEsIDExLCAzMywgNCwgMjIwLCAyMjYsIDMzLCA0LCAyMjAsIDI0OCwgMzMsIDQsIAorICAgIDIyMSwgMTAsIDMzLCA0LCAyMjEsIDAsIDMzLCA0LCAyMjEsIDEsIDMzLCA0LCAyMjAsIDIzMywgMzMsIDQsIDIyMCwgMjE2LCAKKyAgICAzMywgNCwgMjM4LCA0NSwgNjMsIDMzLCA0LCAyMzgsIDQ1LCA2OCwgMzMsIDQsIDIzOCwgNDUsIDc1LCAzMywgNCwgMjM4LCAKKyAgICA0NSwgMjUyLCAyNSwgMzMsIDQsIDIzOCwgNDUsIDI0MSwgMTYxLCAzMywgNCwgMjM4LCA0NSwgNzQsIDMzLCA0LCAyMzgsIAorICAgIDQ1LCA3OCwgMzMsIDQsIDIzOCwgNDUsIDIwNCwgMTExLCAzMywgNCwgMTczLCAzMywgNCwgMjI4LCAyMDksIDMzLCA0LCAKKyAgICAyMjksIDEwMCwgMzMsIDQsIDIzMCwgNDEsIDMzLCA0LCAyMjksIDE5OCwgMzMsIDQsIDIyOSwgMjAxLCAzMywgNCwgMjI5LCAKKyAgICAyNiwgMzMsIDQsIDIyOSwgMjUsIDMzLCA0LCAyMjgsIDE2NywgMzMsIDQsIDIyOCwgMTYwLCAzMywgNCwgMjI4LCAxNjYsIAorICAgIDMzLCA0LCAyMjgsIDE2MSwgMzMsIDQsIDIyOCwgMTYyLCAzMywgNCwgMjI4LCAxNTMsIDMzLCA0LCAyMjgsIDE0NywgMzMsIAorICAgIDQsIDIyOCwgMTQ5LCAzMywgNCwgMjI4LCAxNTIsIDMzLCA0LCAyMjgsIDE1MCwgMzMsIDQsIDIyOCwgMTUxLCAzMywgNCwgCisgICAgMjI4LCAxNDgsIDMzLCA0LCAyMjgsIDE0NiwgMzMsIDQsIDIyOCwgMTQyLCAzMywgNCwgMjI4LCAxNDUsIDMzLCA0LCAyMjgsIAorICAgIDE0MywgMzMsIDQsIDIyOCwgMTQ0LCAzMywgNCwgMjA0LCAxMTEsIDMzLCA0LCAyMDMsIDIxNywgMzMsIDQsIDIwNCwgMzAsIAorICAgIDMzLCA0LCAyMDQsIDExMCwgMzMsIDQsIDIwNCwgNTUsIDMzLCA0LCAyMDQsIDYyLCAzMywgNCwgMjA0LCAwLCAzMywgNCwgCisgICAgMjAzLCAyNTUsIDMzLCA0LCAyMTgsIDE5OSwgNjMsIDMzLCA0LCAyMTgsIDE5OSwgNjgsIDMzLCA0LCAyMTgsIDE5OSwgNzUsIAorICAgIDMzLCA0LCAyMTgsIDE5OSwgMjUyLCAyNSwgMzMsIDQsIDIxOCwgMTk5LCAyNDEsIDE2MSwgMzMsIDQsIDIxOCwgMTk5LCA3NCwgCisgICAgMzMsIDQsIDIxOCwgMTk5LCA3OCwgMzMsIDQsIDIwMiwgMTE2LCAzMywgNCwgMjAyLCA2LCAzMywgNCwgMjAyLCAzOSwgMzMsIAorICAgIDQsIDIwMiwgMTE0LCAzMywgNCwgMjAyLCA5MCwgMzMsIDQsIDIwMiwgOTIsIDMzLCA0LCAyMDIsIDE3LCAzMywgNCwgMjAxLCAKKyAgICAyNDksIDMzLCA0LCAyMDIsIDgwLCAzMywgNCwgMjAyLCA1NywgMzMsIDQsIDIwMiwgNjYsIDMzLCA0LCAyMDIsIDc5LCAzMywgCisgICAgNCwgMjAyLCA3MCwgMzMsIDQsIDIwMiwgNzEsIDMzLCA0LCAyMDIsIDYzLCAzMywgNCwgMjAyLCA0OCwgMzMsIDQsIDE5OCwgCisgICAgMzMsIDQsIDIwMiwgMjEzLCAzMywgNCwgMjAzLCAxMSwgMzMsIDQsIDIwMywgMTEwLCAzMywgNCwgMjAzLCA0OSwgMzMsIDQsIAorICAgIDIwMywgNTIsIDMzLCA0LCAyMDIsIDI0NywgMzMsIDQsIDIwMiwgMjM4LCAzMywgNCwgMjQ0LCAyMTIsIDMzLCA0LCAyNDIsIAorICAgIDQyLCAzMywgNCwgMjQzLCAyMzMsIDMzLCA0LCAyNDQsIDIxMSwgMzMsIDQsIDI0NCwgNjEsIDMzLCA0LCAyNDQsIDc1LCAzMywgCisgICAgNCwgMjQzLCAxMTMsIDMzLCA0LCAyNDIsIDEwLCAzMywgNCwgMjQ0LCAxMjAsIDMzLCA0LCAyNDQsIDg1LCAzMywgNCwgMjQ0LCAKKyAgICA5NywgMzMsIDQsIDI0NCwgMTE5LCAzMywgNCwgMjQ0LCAxMDcsIDMzLCA0LCAyNDQsIDEwOCwgMzMsIDQsIDI0NCwgOTAsIAorICAgIDMzLCA0LCAyNDQsIDc2LCAzMywgNCwgMjMwLCAxODEsIDMzLCA0LCAyMzAsIDgyLCAzMywgNCwgMjMwLCAxNDEsIDMzLCA0LCAKKyAgICAyMzAsIDE4MCwgMzMsIDQsIDIzMCwgMTU5LCAzMywgNCwgMjMwLCAxNjEsIDMzLCA0LCAyMzAsIDEwMSwgMzMsIDQsIDIzMCwgCisgICAgNjIsIDMzLCA0LCAyMzksIDgsIDMzLCA0LCAyMzcsIDIzMCwgMzMsIDQsIDIzOCwgODEsIDMzLCA0LCAyMzksIDUsIDMzLCA0LCAKKyAgICAyMzgsIDE4MiwgMzMsIDQsIDIzOCwgMTkwLCAzMywgNCwgMjM4LCAzOSwgMzMsIDQsIDIzOCwgMzgsIDMzLCA0LCAyMzcsIAorICAgIDE5MCwgMzMsIDQsIDIzNywgMTg2LCAzMywgNCwgMjM3LCAxODksIDMzLCA0LCAyMzcsIDE4NywgMzMsIDQsIDIzNywgMTg4LCAKKyAgICAzMywgNCwgMjM4LCAxNTUsIDMzLCA0LCAyMzgsIDEzNSwgMzMsIDQsIDIzOCwgMTQ1LCAzMywgNCwgMjM4LCAxNTQsIDMzLCAKKyAgICA0LCAyMzgsIDE0OSwgMzMsIDQsIDIzOCwgMTUwLCAzMywgNCwgMjM4LCAxMzksIDMzLCA0LCAyMzgsIDEyNCwgMzMsIDQsIAorICAgIDIwOSwgMTA4LCAzMywgNCwgMjA5LCAyMiwgMzMsIDQsIDIwOSwgNzAsIDMzLCA0LCAyMDksIDEwNywgMzMsIDQsIDIwOSwgCisgICAgOTAsIDMzLCA0LCAyMDksIDkyLCAzMywgNCwgMjA5LCA0NywgMzMsIDQsIDIwOSwgMTMsIDMzLCA0LCAyNDYsIDE5OSwgMzMsIAorICAgIDQsIDI0NiwgOTgsIDMzLCA0LCAyNDYsIDE0MiwgMzMsIDQsIDI0NiwgMTk4LCAzMywgNCwgMjQ2LCAxNjYsIDMzLCA0LCAKKyAgICAyNDYsIDE3MCwgMzMsIDQsIDI0NiwgMTE2LCAzMywgNCwgMjQ2LCA4NywgMzMsIDQsIDIxOCwgMjA4LCAzMywgNCwgMjE4LCAKKyAgICAxNzMsIDMzLCA0LCAyMTgsIDE5MiwgMzMsIDQsIDIxOCwgMjA3LCAzMywgNCwgMjE4LCAxOTQsIDMzLCA0LCAyMTgsIDE5NSwgCisgICAgMzMsIDQsIDIxOCwgMTgwLCAzMywgNCwgMjE4LCAxNjksIDMzLCA0LCAyMDgsIDIwLCAzMywgNCwgMjA3LCAyNDksIDMzLCA0LCAKKyAgICAyMDcsIDI1NSwgMzMsIDQsIDIwOCwgMTksIDMzLCA0LCAyMDgsIDEzLCAzMywgNCwgMjA4LCAxNCwgMzMsIDQsIDIwNywgCisgICAgMjUzLCAzMywgNCwgMjA3LCAyNDcsIDMzLCA0LCAyMDcsIDEwNiwgMzMsIDQsIDIwNywgOTgsIDMzLCA0LCAyMDcsIDEwMiwgCisgICAgMzMsIDQsIDIwNywgMTA1LCAzMywgNCwgMjA3LCAxMDMsIDMzLCA0LCAyMDcsIDEwNCwgMzMsIDQsIDIwNywgMTAwLCAzMywgCisgICAgNCwgMjA3LCA5OSwgMzMsIDQsIDI0MCwgMTA4LCAzMywgNCwgMjM5LCAxMDgsIDMzLCA0LCAyNDAsIDI2LCAzMywgNCwgMjQwLCAKKyAgICAxMDcsIDMzLCA0LCAyNDAsIDUzLCAzMywgNCwgMjQwLCA2MCwgMzMsIDQsIDIzOSwgMTg2LCAzMywgNCwgMjM5LCA4NiwgMzMsIAorICAgIDQsIDE4NSwgMzMsIDQsIDIxNywgMTkxLCAzMywgNCwgMjE4LCAxNjcsIDMzLCA0LCAyMTksIDE2OCwgMzMsIDQsIDIxOSwgCisgICAgMjMsIDMzLCA0LCAyMTksIDM0LCAzMywgNCwgMjE4LCA2OSwgMzMsIDQsIDIxNywgMTUyLCAzMywgNCwgMjE1LCAxMDEsIDMzLCAKKyAgICA0LCAyMjMsIDE2OSwgMzMsIDQsIDIzOSwgODAsIDMzLCAzOSwgMjM4LCAxNzksIDI1LCAyMiwgMjI3LCAxOTYsIDgyLCAzMywgCisgICAgMzksIDIyLCAyMjcsIDE5NiwgODIsIDMzLCAzOSwgMjM4LCAxNzksIDgyLCAzMywgMjE0LCAxNjgsIDgyLCAzMywgMjAzLCAKKyAgICAyMzcsIDMzLCAyMzksIDEwMiwgMjExLCA2MSwgMzMsIDI0NSwgMjMzLCAzMywgMjEzLCAxNDMsIDMzLCAyNDUsIDI0MiwgMzMsIAorICAgIDIxNywgMjQ2LCAyNDUsIDI0MiwgMzMsIDIxNywgNDcsIDgyLCAzMywgMjE5LCA4OSwgMjEzLCAxMzAsIDMzLCAxNywgMTA1LCAKKyAgICAzMywgMTcsIDEwOCwgMzMsIDE3LCAxNDcsIDMzLCAxNywgMTQ5LCAzMywgMTcsIDE3MCwgMzMsIDE3LCAxOTUsIDMzLCAxNywgCisgICAgMjEzLCAxMTEsIDMzLCAxNywgMTk5LCAzMywgMTcsIDIyMiwgNjMsIDMzLCA0MiwgMjA5LCAxNTIsIDMzLCA0MiwgMjA3LCAKKyAgICAxNTEsIDMzLCA0MiwgMjA5LCA1MywgMzMsIDQyLCAyMzksIDE1MywgMzMsIDQyLCAyNDAsIDE4LCAzMywgNDIsIDIxMiwgNzQsIAorICAgIDMzLCA0MiwgMjEzLCAxMDUsIDMzLCA0MiwgMjQxLCAxMzQsIDMzLCA0MiwgMjIyLCA1OCwgMzMsIDQyLCAyMzYsIDExLCAzMywgCisgICAgNDIsIDIwOSwgMTUzLCAyMDksIDM2LCAzMywgNCwgMjE0LCAxNzMsIDIyMywgMTgwLCAzMywgNCwgMjIzLCAxNzYsIDMzLCA0LCAKKyAgICAyMjMsIDE3NywgMzMsIDQsIDIyMywgMTc4LCAzMywgNCwgMjE0LCAxNzMsIDI0NywgMTQyLCAzMywgNCwgMjQ3LCAxMzksIAorICAgIDMzLCA0LCAyNDcsIDE0MCwgMzMsIDQsIDI0NywgMTQxLCAzMywgNCwgMjE0LCAxNzMsIDIzOSwgODYsIDMzLCA0LCAyMzksIAorICAgIDgyLCAzMywgNCwgMjM5LCA4MywgMzMsIDQsIDIzOSwgODQsIDMzLCA0LCAyMTQsIDE3MywgMjE3LCAxNTIsIDMzLCA0LCAKKyAgICAyMTcsIDE0OCwgMzMsIDQsIDIxNywgMTQ5LCAzMywgNCwgMjE3LCAxNTAsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMDIsIDI1MCwgCisgICAgMzMsIDIwOCwgMTYyLCAxMzEsIDI0NCwgMjIsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMTYsIDIsIDMzLCAyMDgsIDE2MiwgMTMxLCAKKyAgICAyMTIsIDIyOCwgMjE2LCAyLCAzMywgMjA4LCAxNjIsIDEzMSwgMjQzLCAyMDcsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMjksIAorICAgIDE3OSwgMzMsIDIwOCwgMTYyLCAxMzEsIDI0NiwgMTI0LCAzMywgMjA4LCAxNjIsIDEzMSwgMjM3LCAwLCAzMywgMjA4LCAKKyAgICAxNjIsIDEzMSwgMjQ0LCAyMSwgMzMsIDIwOCwgMTYyLCAxMzEsIDIyOCwgMTgxLCA5MCwgMSwgNjMsIDkwLCAxLCA3NCwgOTAsIAorICAgIDEsIDc1LCA5MCwgMSwgNzgsIDkwLCAxLCA2OCwgOTAsIDEsIDIwNiwgMTY0LCA5MCwgMSwgMjM5LCA4LCA5MCwgMSwgMTczLCAKKyAgICA5MCwgMSwgMjM4LCAxOTAsIDkwLCAxLCAyMzgsIDgxLCA5MCwgMSwgMjM4LCAzOSwgOTAsIDEsIDIzNywgMjMwLCA5MCwgMSwgCisgICAgMjM3LCAxOTIsIDkwLCAxLCAxNTIsIDkwLCAxLCAyMzcsIDY3LCA5MCwgMSwgMjM3LCAzLCA5MCwgMSwgMjM2LCAxMzYsIDkwLCAKKyAgICAxLCAyMzYsIDI2LCA5MCwgMSwgMjM1LCAyNTUsIDkwLCAxLCAyMjgsIDExMywgOTAsIDEsIDIyNywgMjM0LCA5MCwgMSwgCisgICAgMjI3LCAxNDgsIDkwLCAxLCAyMjcsIDQ5LCA5MCwgMSwgMjI2LCAyMzksIDkwLCAxLCAyMjYsIDIwOCwgOTAsIDEsIDE5MiwgCisgICAgOTAsIDEsIDIyNSwgMjAsIDkwLCAxLCAyMjQsIDE1NSwgOTAsIDEsIDIyNCwgODIsIDkwLCAxLCAyMjMsIDI0NiwgOTAsIDEsIAorICAgIDIwMSwgMjAxLCA5MCwgMSwgMjM2LCAxNjAsIDkwLCAxLCAyMjMsIDkzLCA5MCwgMSwgMjIyLCAyNDAsIDkwLCAxLCAyMjIsIAorICAgIDEwMCwgOTAsIDEsIDIyMSwgMTkxLCA5MCwgMSwgMjIxLCA4NCwgOTAsIDEsIDIyMSwgMjIsIDkwLCAxLCAyMTcsIDY0LCA5MCwgCisgICAgMSwgMjE3LCA1MCwgOTAsIDEsIDIxNywgNDMsIDkwLCAxLCAyMTcsIDM0LCA5MCwgMSwgMjE3LCAyMywgOTAsIDEsIDIxNywgCisgICAgMjEsIDkwLCAxLCAyMTUsIDM2LCA5MCwgMSwgMTk0LCA5MCwgMSwgMjE0LCAxNzcsIDkwLCAxLCAyMTIsIDE2MiwgOTAsIDEsIAorICAgIDIxMiwgMTMsIDkwLCAxLCAyMTEsIDEwLCA5MCwgMSwgMjEwLCAxNzcsIDkwLCAxLCAyNDQsIDIxMiwgOTAsIDEsIDIxMCwgCisgICAgMjIsIDkwLCAxLCAyNDQsIDc1LCA5MCwgMSwgMjA5LCAxODcsIDkwLCAxLCAyNDMsIDIzMywgOTAsIDEsIDIwOSwgMiwgOTAsIAorICAgIDEsIDI0MywgMTEzLCA5MCwgMSwgMjQyLCA0MiwgOTAsIDEsIDI0MiwgMTMsIDkwLCAxLCAyNDMsIDEyNCwgOTAsIDEsIDIwOCwgCisgICAgMTkwLCA5MCwgMSwgMjA4LCAxODksIDkwLCAxLCAyMDgsIDE3OCwgOTAsIDEsIDIwOCwgMTc3LCA5MCwgMSwgMjA4LCAxNzYsIAorICAgIDkwLCAxLCAyMDgsIDE3NSwgOTAsIDEsIDIwOCwgMjAsIDkwLCAxLCAyMDgsIDE0LCA5MCwgMSwgMjA3LCAyNTUsIDkwLCAxLCAKKyAgICAyMDcsIDI1MywgOTAsIDEsIDIwNywgMjQ5LCA5MCwgMSwgMjA3LCAyNDgsIDkwLCAxLCAyMDQsIDExMSwgOTAsIDEsIDIwNCwgCisgICAgNjIsIDkwLCAxLCAyMDQsIDMwLCA5MCwgMSwgMjA0LCAwLCA5MCwgMSwgMjAzLCAyMTcsIDkwLCAxLCAyMDMsIDIwNCwgOTAsIAorICAgIDEsIDE5OCwgOTAsIDEsIDIwMywgNTIsIDkwLCAxLCAyMDMsIDExLCA5MCwgMSwgMjAyLCAyNDcsIDkwLCAxLCAyMDIsIDIxMywgCisgICAgOTAsIDEsIDIwMiwgMTc3LCA5MCwgMSwgMjIzLCAxODcsIDkwLCA1LCAxLCAyMDMsIDUyLCA5MCwgNSwgMSwgMjAzLCAxMSwgCisgICAgOTAsIDUsIDEsIDIwMiwgMjQ3LCA5MCwgNSwgMSwgMjAyLCAyMTMsIDkwLCA1LCAxLCAyMDIsIDE3NywgOTAsIDUsIDEsIAorICAgIDIyMywgMTg3LCAxOSwgMjAsIDIzNSwgMjIwLCAxOSwgMjAsIDc0LCAxOSwgMjAsIDI1MSwgMjQ1LCAxOSwgMjAsIDc1LCAxOSwgCisgICAgMjAsIDIzMSwgODMsIDE5LCAyMCwgNzgsIDE5LCAyMCwgMjIwLCAxOCwgMTksIDIwLCAyMDMsIDEyMywgMjIwLCAxOCwgMTksIAorICAgIDIwLCA4OCwgMjQxLCAxNjEsIDE5LCAyMCwgODgsIDc1LCAxOSwgMjAsIDYzLCAxOSwgMjAsIDI1MiwgMjUsIDE5LCAyMCwgCisgICAgMjA0LCA2MiwgMTksIDIwLCAxOTYsIDIwNCwgNjIsIDE5LCAyMCwgMjA0LCAzMCwgMTksIDIwLCAxOTYsIDIwNCwgMzAsIDE5LCAKKyAgICAyMCwgMjA0LCAxOSwgMTksIDIwLCAxOTYsIDIwNCwgMTksIDE5LCAyMCwgMjA0LCAwLCAxOSwgMjAsIDE5NiwgMjA0LCAwLCAKKyAgICAxOSwgMjAsIDIwMywgMjQ0LCAxOSwgMjAsIDE5NiwgMjAzLCAyNDQsIDE5LCAyMCwgMjIzLCA2OCwgMjAzLCAyNDQsIDE5LCAKKyAgICAyMCwgMjA0LCAxMTEsIDE5LCAyMCwgMTk2LCAyMDQsIDExMSwgMTksIDIwLCAyMDQsIDExMCwgMTksIDIwLCAxOTYsIDIwNCwgCisgICAgMTEwLCAxOSwgMjAsIDIyMywgNjgsIDIwNCwgMTEwLCAxOSwgMjAsIDI1MSwgNjQsIDE5LCAyMCwgMjAzLCAxMjMsIDIwNCwgCisgICAgMTQ0LCAxOSwgMjAsIDIzOCwgNDUsIDIxMSwgNjEsIDE5LCAyMCwgNDYsIDE2NSwgMTksIDIwLCA0NiwgMjM3LCAyNTMsIDE5LCAKKyAgICAyMCwgNDYsIDI0NywgMjQ4LCAxNjIsIDIxNSwgMjUyLCAxOSwgMjAsIDQ2LCAyMDgsIDE0NSwgMTYyLCAyMTUsIDI1MiwgMTksIAorICAgIDIwLCA0NiwgNTAsIDE2MiwgMjE1LCAyNTIsIDE5LCAyMCwgNDYsIDIxNSwgMjUyLCAxOSwgMjAsIDQ2LCA1MiwgMTY1LCAxOSwgCisgICAgMjAsIDQ2LCA1MiwgMjEyLCAyMjgsIDgwLCAyMTEsIDE5LCAxOSwgMjAsIDQ2LCAxMDEsIDI0MywgODUsIDE5LCAyMCwgNDYsIAorICAgIDIxMiwgMjI4LCAyMzYsIDEwNiwgOTUsIDE5LCAyMCwgNDYsIDIxOCwgNzYsIDE5LCAyMCwgNDYsIDEyMSwgMjEwLCAzLCAxOSwgCisgICAgMjAsIDI0MSwgOTIsIDE5LCAyMCwgMjMxLCA0OSwgMTksIDIwLCAyMjAsIDMxLCAxOSwgMjAsIDI1MCwgMjMxLCAxOSwgMjAsIAorICAgIDIxOSwgMzQsIDE5LCAyMCwgMjE5LCAxNjYsIDE5LCAyMCwgMjE4LCAxNjcsIDE5LCAyMCwgMjE4LCAxMjksIDE5LCAyMCwgCisgICAgMjE4LCA2OSwgMTksIDIwLCAyMTgsIDQ1LCAxOSwgMjAsIDIwMywgMTIzLCAyMTgsIDQ1LCAxOSwgMjAsIDg4LCAyMzcsIDQ4LCAKKyAgICAxOSwgMjAsIDg4LCAyMzcsIDMsIDE5LCAyMCwgMTg1LCAxOSwgMjAsIDIxOSwgMTY4LCAxOSwgMjAsIDIxNywgMTUwLCAxOSwgCisgICAgMjAsIDE5NiwgMjE3LCAxNTAsIDE5LCAyMCwgMjE3LCAxNDgsIDE5LCAyMCwgMTk2LCAyMTcsIDE0OCwgMTksIDIwLCAyMTcsIAorICAgIDE0NywgMTksIDIwLCAxOTYsIDIxNywgMTQ3LCAxOSwgMjAsIDIxNywgMTQ1LCAxOSwgMjAsIDE5NiwgMjE3LCAxNDUsIDE5LCAKKyAgICAyMCwgMjE3LCAxNDQsIDE5LCAyMCwgMTk2LCAyMTcsIDE0NCwgMTksIDIwLCAyMTcsIDE1MiwgMTksIDIwLCAxOTYsIDIxNywgCisgICAgMTUyLCAxOSwgMjAsIDIxNywgMTUxLCAxOSwgMjAsIDE5NiwgMjE3LCAxNTEsIDE5LCAyMCwgMjAzLCAxMjMsIDIxNywgMTUxLCAKKyAgICAxOSwgMjAsIDIxOSwgMTg0LCAxOSwgMjAsIDE5NiwgMjE5LCAxODQsIDE5LCAyMCwgODgsIDIzNywgMTcxLCAxOSwgMjAsIAorICAgIDIwOSwgMTg3LCAxOSwgMjAsIDIxMCwgMTYsIDE5LCAyMCwgMjA5LCAyLCAxOSwgMjAsIDIwOCwgMjQyLCAxOSwgMjAsIDEzNSwgCisgICAgMTksIDIwLCAyMDgsIDE0OCwgMTksIDIwLCAyMDMsIDEyMywgMjA4LCAxNDgsIDE5LCAyMCwgODgsIDI0NCwgNjEsIDE5LCAKKyAgICAyMCwgODgsIDI0MywgMjMzLCAxOSwgMjAsIDIxMCwgMjIsIDE5LCAyMCwgMjEwLCAxOCwgMTksIDIwLCAyMDcsIDE1OCwgMTksIAorICAgIDIwLCAxOTYsIDIwNywgMTU4LCAxOSwgMjAsIDIwNywgMTQwLCAxOSwgMjAsIDE5NiwgMjA3LCAxNDAsIDE5LCAyMCwgMjA3LCAKKyAgICAxMzksIDE5LCAyMCwgMTk2LCAyMDcsIDEzOSwgMTksIDIwLCAxMDgsIDE5LCAyMCwgMTk2LCAxMDgsIDE5LCAyMCwgMjA3LCAKKyAgICAxMzAsIDE5LCAyMCwgMTk2LCAyMDcsIDEzMCwgMTksIDIwLCAyMDcsIDE2MCwgMTksIDIwLCAxOTYsIDIwNywgMTYwLCAxOSwgCisgICAgMjAsIDIwNywgMTU5LCAxOSwgMjAsIDE5NiwgMjA3LCAxNTksIDE5LCAyMCwgMjIzLCA2OCwgMjA3LCAxNTksIDE5LCAyMCwgCisgICAgMjEwLCA2OSwgMTksIDIwLCAyMDcsIDIzNiwgMTksIDIwLCAyMDcsIDIyMCwgMTksIDIwLCAyMDcsIDIxOCwgMTksIDIwLCAKKyAgICAyMDcsIDI0MSwgMTksIDIwLCAyMjksIDIwMSwgMTksIDIwLCAyMzAsIDM2LCAxOSwgMjAsIDIyOSwgMTAwLCAxOSwgMjAsIAorICAgIDIyOSwgODcsIDE5LCAyMCwgMjI5LCAyNiwgMTksIDIwLCAyMjksIDYsIDE5LCAyMCwgMjAzLCAxMjMsIDIyOSwgNiwgMTksIAorICAgIDIwLCAxNzMsIDE5LCAyMCwgMjMwLCA0MSwgMTksIDIwLCAyMjgsIDE2MiwgMTksIDIwLCAxOTYsIDIyOCwgMTYyLCAxOSwgCisgICAgMjAsIDIyOCwgMTYwLCAxOSwgMjAsIDE5NiwgMjI4LCAxNjAsIDE5LCAyMCwgMjI4LCAxNTksIDE5LCAyMCwgMTk2LCAyMjgsIAorICAgIDE1OSwgMTksIDIwLCAyMjgsIDE1NywgMTksIDIwLCAxOTYsIDIyOCwgMTU3LCAxOSwgMjAsIDIyOCwgMTU2LCAxOSwgMjAsIAorICAgIDE5NiwgMjI4LCAxNTYsIDE5LCAyMCwgMjI4LCAxNjcsIDE5LCAyMCwgMTk2LCAyMjgsIDE2NywgMTksIDIwLCAyMjgsIDE2NiwgCisgICAgMTksIDIwLCAxOTYsIDIyOCwgMTY2LCAxOSwgMjAsIDIyMywgNjgsIDIyOCwgMTY2LCAxOSwgMjAsIDIzMCwgNTQsIDE5LCAKKyAgICAyMCwgMjI4LCAxNjgsIDE5LCAyMCwgMjExLCAyMzcsIDIyOSwgMTkxLCAxOSwgMjAsIDIxMSwgMjM3LCAyMjksIDg4LCAxOSwgCisgICAgMjAsIDIxMSwgMjM3LCAyMjksIDIwLCAxOSwgMjAsIDIxMSwgMjM3LCAyMzAsIDIwLCAxOSwgMjAsIDI0NiwgMjM4LCAxOSwgCisgICAgMjAsIDI0NywgOTAsIDE5LCAyMCwgMjQ2LCA3OSwgMTksIDIwLCAyNDYsIDY5LCAxOSwgMjAsIDI0NSwgMjU0LCAxOSwgMjAsIAorICAgIDI0NSwgMTgwLCAxOSwgMjAsIDIwMywgMTIzLCAyNDUsIDE4MCwgMTksIDIwLCAyNDcsIDkyLCAxOSwgMjAsIDI0NywgOTEsIAorICAgIDE5LCAyMCwgMjQ1LCA3MiwgMTksIDIwLCAxOTYsIDI0NSwgNzIsIDE5LCAyMCwgMjQ1LCA3MCwgMTksIDIwLCAxOTYsIDI0NSwgCisgICAgNzAsIDE5LCAyMCwgMjQ1LCA2OSwgMTksIDIwLCAxOTYsIDI0NSwgNjksIDE5LCAyMCwgMjQ1LCA2OCwgMTksIDIwLCAxOTYsIAorICAgIDI0NSwgNjgsIDE5LCAyMCwgMjQ1LCA2NywgMTksIDIwLCAxOTYsIDI0NSwgNjcsIDE5LCAyMCwgMjQ1LCA3NCwgMTksIDIwLCAKKyAgICAxOTYsIDI0NSwgNzQsIDE5LCAyMCwgMjQ1LCA3MywgMTksIDIwLCAxOTYsIDI0NSwgNzMsIDE5LCAyMCwgMjIzLCA2OCwgCisgICAgMjQ1LCA3MywgMTksIDIwLCAyNDcsIDEyNSwgMTksIDIwLCAyMTQsIDIwNiwgMjA5LCAxMTAsIDE5LCAyMCwgMjI1LCAyMCwgCisgICAgMTksIDIwLCAyMjUsIDE3NCwgMTksIDIwLCAyMjQsIDE1NSwgMTksIDIwLCAyMjQsIDEyNSwgMTksIDIwLCAyMjQsIDgyLCAKKyAgICAxOSwgMjAsIDIyNCwgMzUsIDE5LCAyMCwgMjAzLCAxMjMsIDIyNCwgMzUsIDE5LCAyMCwgMTkyLCAxOSwgMjAsIDIyNSwgCisgICAgMTc1LCAxOSwgMjAsIDIyMywgMTc4LCAxOSwgMjAsIDE5NiwgMjIzLCAxNzgsIDE5LCAyMCwgMjIzLCAxNzYsIDE5LCAyMCwgCisgICAgMTk2LCAyMjMsIDE3NiwgMTksIDIwLCAyMjMsIDE3NSwgMTksIDIwLCAxOTYsIDIyMywgMTc1LCAxOSwgMjAsIDIyMywgMTc0LCAKKyAgICAxOSwgMjAsIDE5NiwgMjIzLCAxNzQsIDE5LCAyMCwgMjIzLCAxNzMsIDE5LCAyMCwgMTk2LCAyMjMsIDE3MywgMTksIDIwLCAKKyAgICAyMjMsIDE4MCwgMTksIDIwLCAxOTYsIDIyMywgMTgwLCAxOSwgMjAsIDIyMywgMTc5LCAxOSwgMjAsIDE5NiwgMjIzLCAxNzksIAorICAgIDE5LCAyMCwgMjIzLCA2OCwgMjIzLCAxNzksIDE5LCAyMCwgMjI2LCAxODUsIDE5LCAyMCwgMTk2LCAyMjYsIDE4NSwgMTksIAorICAgIDIwLCAyMjQsIDE1OSwgMTksIDIwLCAyNTAsIDQ4LCAyMjYsIDE4NSwgMTksIDIwLCAyMTQsIDIwNiwgMjI2LCAxODUsIDE5LCAKKyAgICAyMCwgMjIyLCAyNDAsIDE5LCAyMCwgMjIzLCAxMDUsIDE5LCAyMCwgMjIyLCAxMDAsIDE5LCAyMCwgMjIyLCA3NSwgMTksIAorICAgIDIwLCAyMjEsIDE5MSwgMTksIDIwLCAyMjEsIDE4MCwgMTksIDIwLCAyMDMsIDEyMywgMjIxLCAxODAsIDE5LCAyMCwgMjAxLCAKKyAgICAyMDEsIDE5LCAyMCwgMjIzLCAxMDYsIDE5LCAyMCwgMjIxLCAxOCwgMTksIDIwLCAxOTYsIDIyMSwgMTgsIDE5LCAyMCwgCisgICAgMjIxLCAyMCwgMTksIDIwLCAxOTYsIDIyMSwgMjAsIDE5LCAyMCwgMjIxLCAxOSwgMTksIDIwLCAxOTYsIDIyMSwgMTksIDE5LCAKKyAgICAyMCwgMjIzLCA2OCwgMjIxLCAxOSwgMTksIDIwLCAyMjMsIDE2MywgMTksIDIwLCA4OCwgMjIyLCAyMDUsIDE5LCAyMCwgCisgICAgMjIyLCAxMDUsIDE5LCAyMCwgMjI3LCAyMzQsIDE5LCAyMCwgMjI4LCAxMTEsIDE5LCAyMCwgMjI3LCAxNDgsIDE5LCAyMCwgCisgICAgMjI3LCAxMzAsIDE5LCAyMCwgMjI3LCA0OSwgMTksIDIwLCAyMjcsIDE4LCAxOSwgMjAsIDIwMywgMTIzLCAyMjcsIDE4LCAKKyAgICAxOSwgMjAsIDIyOCwgMTEzLCAxOSwgMjAsIDIyOCwgMTEyLCAxOSwgMjAsIDIyNiwgMjA1LCAxOSwgMjAsIDE5NiwgMjI2LCAKKyAgICAyMDUsIDE5LCAyMCwgMjI2LCAyMDQsIDE5LCAyMCwgMTk2LCAyMjYsIDIwNCwgMTksIDIwLCAyMjYsIDIwMywgMTksIDIwLCAKKyAgICAxOTYsIDIyNiwgMjAzLCAxOSwgMjAsIDIyNiwgMjAyLCAxOSwgMjAsIDE5NiwgMjI2LCAyMDIsIDE5LCAyMCwgMjI2LCAyMDEsIAorICAgIDE5LCAyMCwgMTk2LCAyMjYsIDIwMSwgMTksIDIwLCAyMjYsIDIwNywgMTksIDIwLCAxOTYsIDIyNiwgMjA3LCAxOSwgMjAsIAorICAgIDIyNiwgMjA2LCAxOSwgMjAsIDE5NiwgMjI2LCAyMDYsIDE5LCAyMCwgMTU5LCAxOSwgMjAsIDE5NiwgMTU5LCAxOSwgMjAsIAorICAgIDE3NCwgMTU5LCAxOSwgMjAsIDIxNCwgMTc3LCAxOSwgMjAsIDIxNSwgMzEsIDE5LCAyMCwgMjEyLCAxNjIsIDE5LCAyMCwgCisgICAgMjEyLCAxNDIsIDE5LCAyMCwgMjEyLCAxMywgMTksIDIwLCAyMTEsIDI1MCwgMTksIDIwLCAyMDMsIDEyMywgMjExLCAyNTAsIAorICAgIDE5LCAyMCwgMjE1LCAzNiwgMTksIDIwLCAyMTUsIDMzLCAxOSwgMjAsIDIxMCwgMTY4LCAxOSwgMjAsIDE5NiwgMjEwLCAKKyAgICAxNjgsIDE5LCAyMCwgMjEwLCAxNjIsIDE5LCAyMCwgMTk2LCAyMTAsIDE2MiwgMTksIDIwLCAyMTAsIDE2MSwgMTksIDIwLCAKKyAgICAxOTYsIDIxMCwgMTYxLCAxOSwgMjAsIDIxMCwgMTU3LCAxOSwgMjAsIDE5NiwgMjEwLCAxNTcsIDE5LCAyMCwgMjEwLCAxNTYsIAorICAgIDE5LCAyMCwgMTk2LCAyMTAsIDE1NiwgMTksIDIwLCAyMTAsIDE3MiwgMTksIDIwLCAxOTYsIDIxMCwgMTcyLCAxOSwgMjAsIAorICAgIDIxMCwgMTcxLCAxOSwgMjAsIDE5NiwgMjEwLCAxNzEsIDE5LCAyMCwgMjIzLCA2OCwgMjEwLCAxNzEsIDE5LCAyMCwgMTk0LCAKKyAgICAxOSwgMjAsIDI1MCwgNDgsIDE5NCwgMTksIDIwLCAyMTAsIDE3MywgMTksIDIwLCAyNDgsIDQwLCAxOTQsIDE5LCAyMCwgCisgICAgMjI0LCAyOCwgMjEyLCA3MCwgMTksIDIwLCAyMjMsIDY4LCAyMTIsIDYxLCAxOSwgMjAsIDIyMywgNjgsIDIxNSwgOTIsIDE5LCAKKyAgICAyMCwgMjIzLCA2OCwgMjExLCAxNzksIDE5LCAyMCwgMjIzLCA2OCwgMjExLCAxMywgMTksIDIwLCAyMjMsIDY4LCAyMTIsIAorICAgIDYwLCAxOSwgMjAsIDIyMywgNjgsIDIxNCwgMTgwLCAxOSwgMjAsIDIxMywgNDMsIDE5LCAyMCwgMjEzLCAxMSwgMTksIDIwLCAKKyAgICAyMTMsIDYsIDE5LCAyMCwgMjEyLCAyNDIsIDE5LCAyMCwgMjEyLCAyMzYsIDE5LCAyMCwgMjEzLCA5MCwgMTksIDIwLCAyMTMsIAorICAgIDg1LCAxOSwgMjAsIDIxMiwgMTc3LCAxOSwgMjAsIDE5NiwgMjEyLCAxNzcsIDE5LCAyMCwgMjEyLCAxNzYsIDE5LCAyMCwgCisgICAgMTk2LCAyMTIsIDE3NiwgMTksIDIwLCAyMTIsIDE3NSwgMTksIDIwLCAxOTYsIDIxMiwgMTc1LCAxOSwgMjAsIDIxMiwgMTc0LCAKKyAgICAxOSwgMjAsIDE5NiwgMjEyLCAxNzQsIDE5LCAyMCwgMjEyLCAxNzMsIDE5LCAyMCwgMTk2LCAyMTIsIDE3MywgMTksIDIwLCAKKyAgICAyMTIsIDE4MCwgMTksIDIwLCAxOTYsIDIxMiwgMTgwLCAxOSwgMjAsIDIxMiwgMTc5LCAxOSwgMjAsIDE5NiwgMjEyLCAxNzksIAorICAgIDE5LCAyMCwgMjEzLCA5MiwgMTksIDIwLCAyMDMsIDUyLCAxOSwgMjAsIDIwMywgMTA4LCAxOSwgMjAsIDIwMywgMTEsIDE5LCAKKyAgICAyMCwgMjAzLCAyLCAxOSwgMjAsIDIwMiwgMjQ3LCAxOSwgMjAsIDIwMiwgMjMyLCAxOSwgMjAsIDIwMywgMTIzLCAyMDIsIAorICAgIDIzMiwgMTksIDIwLCAxOTgsIDE5LCAyMCwgMjAzLCAxMTAsIDE5LCAyMCwgMjAyLCAxNzQsIDE5LCAyMCwgMTk2LCAyMDIsIAorICAgIDE3NCwgMTksIDIwLCAyMDIsIDE3MywgMTksIDIwLCAxOTYsIDIwMiwgMTczLCAxOSwgMjAsIDIwMiwgMTcyLCAxOSwgMjAsIAorICAgIDE5NiwgMjAyLCAxNzIsIDE5LCAyMCwgMjAyLCAxNzEsIDE5LCAyMCwgMTk2LCAyMDIsIDE3MSwgMTksIDIwLCAyMDIsIDE3MCwgCisgICAgMTksIDIwLCAxOTYsIDIwMiwgMTcwLCAxOSwgMjAsIDIwMiwgMTc2LCAxOSwgMjAsIDE5NiwgMjAyLCAxNzYsIDE5LCAyMCwgCisgICAgMjAyLCAxNzUsIDE5LCAyMCwgMTk2LCAyMDIsIDE3NSwgMTksIDIwLCAyMjMsIDY4LCAyMDIsIDE3NSwgMTksIDIwLCAyMDMsIAorICAgIDEyNCwgMTksIDIwLCAyNDgsIDg0LCAyMDMsIDEyNCwgMTksIDIwLCAxOTYsIDIwMywgMTI0LCAxOSwgMjAsIDIxNCwgMjA2LCAKKyAgICAyMDMsIDExLCAxOSwgMjAsIDIxNiwgMTU4LCAxOSwgMjAsIDIxNywgMCwgMjE2LCAxNTgsIDE5LCAyMCwgMTk2LCAyMjcsIAorICAgIDIzNCwgMTksIDIwLCAyMTYsIDIxNSwgMTksIDIwLCAyMTYsIDU3LCAxOSwgMjAsIDIxNiwgMywgMTksIDIwLCAyMTUsIDIyNywgCisgICAgMTksIDIwLCAyMTUsIDIwOCwgMTksIDIwLCAxOTYsIDIyNywgNDksIDE5LCAyMCwgMjE2LCAyMjAsIDE5LCAyMCwgMjE2LCAKKyAgICAyMTYsIDE5LCAyMCwgMTk2LCAyMjgsIDExMywgMTksIDIwLCAyMTUsIDExMCwgMTksIDIwLCAxOTYsIDIxNSwgMTEwLCAxOSwgCisgICAgMjAsIDE0NiwgMTksIDIwLCAxOTYsIDE0NiwgMTksIDIwLCAxNzQsIDE0NiwgMTksIDIwLCAyNDAsIDYwLCAxOSwgMjAsIAorICAgIDI0MCwgMTA1LCAxOSwgMjAsIDI0MCwgMjYsIDE5LCAyMCwgMjQwLCAxMiwgMTksIDIwLCAyMzksIDE4NiwgMTksIDIwLCAKKyAgICAyMzksIDE3NSwgMTksIDIwLCAyNDAsIDEwOCwgMTksIDIwLCAyNDAsIDEwNywgMTksIDIwLCAyMzksIDg1LCAxOSwgMjAsIAorICAgIDE5NiwgMjM5LCA4NSwgMTksIDIwLCAyNDAsIDE3NCwgMTksIDIwLCAyMDksIDkyLCAxOSwgMjAsIDIyMywgMTYxLCAyMDksIAorICAgIDkyLCAxOSwgMjAsIDIwOSwgNzAsIDE5LCAyMCwgMjIzLCAxNjEsIDIwOSwgNzAsIDE5LCAyMCwgMjA5LCA2NCwgMTksIDIwLCAKKyAgICAyMjMsIDE2MSwgMjA5LCA2NCwgMTksIDIwLCAyMDksIDQ3LCAxOSwgMjAsIDIwOSwgNDIsIDE5LCAyMCwgMjA5LCAxMDgsIAorICAgIDE5LCAyMCwgMjA5LCAxMDcsIDE5LCAyMCwgMjA5LCAxMiwgMTksIDIwLCAxOTYsIDIwOSwgMTIsIDE5LCAyMCwgMjA5LCAKKyAgICAxMTAsIDE5LCAyMCwgMjA3LCAyMjcsIDE5LCAyMCwgMjA3LCAyMjUsIDE5LCAyMCwgMjA3LCAyMjQsIDE5LCAyMCwgMjA3LCAKKyAgICAyMjksIDE5LCAyMCwgMjA3LCAyMzAsIDE5LCAyMCwgMjA3LCAxMjQsIDE5LCAyMCwgMjA3LCAxMjMsIDE5LCAyMCwgMjA3LCAKKyAgICAxMjIsIDE5LCAyMCwgMjA3LCAxMjYsIDE5LCAyMCwgMjIxLCAzOSwgMjM3LCA2NywgMTksIDIwLCAyMjEsIDM5LCAyMzcsIDMsIAorICAgIDE5LCAyMCwgMjIxLCAzOSwgMjM2LCAyMzksIDE5LCAyMCwgMjIxLCAzOSwgMjM2LCAxMzYsIDE5LCAyMCwgMjIxLCAzOSwgCisgICAgMjM2LCAxMTcsIDE5LCAyMCwgMjIxLCAzOSwgMTUyLCAxOSwgMjAsIDIyMSwgMzksIDIzNywgMTU3LCAxOSwgMjAsIDIyMSwgCisgICAgMzksIDIzNywgMTcxLCAxOSwgMjAsIDIyMSwgMzgsIDIzNywgMTcxLCAxOSwgMjAsIDIzNiwgMjI2LCAxOSwgMjAsIDIxNywgCisgICAgMTIyLCAxOSwgMjAsIDIxNywgODgsIDE5LCAyMCwgMjE3LCA4MywgMTksIDIwLCAyMTcsIDc3LCAxOSwgMjAsIDIxNywgNzIsIAorICAgIDE5LCAyMCwgMjE3LCAxMjYsIDE5LCAyMCwgMjE3LCAxMjUsIDE5LCAyMCwgMjE3LCAxMzQsIDE5LCAyMCwgMjA4LCAxODYsIAorICAgIDE5LCAyMCwgMjA4LCAxODQsIDE5LCAyMCwgMjA4LCAxODMsIDE5LCAyMCwgMjA4LCAxODcsIDE5LCAyMCwgMTk2LCAyMTYsIAorICAgIDE1OCwgMTksIDIwLCAxOTYsIDIxNiwgNTcsIDE5LCAyMCwgMTk2LCAyMTUsIDIyNywgMTksIDIwLCAxOTYsIDIxNiwgMjIwLCAKKyAgICAxOSwgMjAsIDIyMiwgMjAxLCAxOSwgMjAsIDIyMiwgMTUxLCAxOSwgMjAsIDIyMiwgMTQ3LCAxOSwgMjAsIDIyMiwgMTI4LCAKKyAgICAxOSwgMjAsIDIyMiwgMTIzLCAxOSwgMjAsIDIyMiwgMjAzLCAxOSwgMjAsIDIyMiwgMjAyLCAxOSwgMjAsIDIyMiwgMjA1LCAKKyAgICAxOSwgMjAsIDIyMSwgMjIwLCAxOSwgMjAsIDIxNCwgMjA2LCAyMTMsIDQzLCAxOSwgMjAsIDIxNCwgMjA2LCAyMTMsIDExLCAKKyAgICAxOSwgMjAsIDIxNCwgMjA2LCAyMTIsIDI0MiwgMTksIDIwLCAyMTQsIDIwNiwgMjEzLCA5MCwgMTksIDIwLCAyMDMsIDI0MiwgCisgICAgMjA5LCA5MiwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA3MCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA0NywgMTksIDIwLCAKKyAgICAyMDMsIDI0MiwgMjA5LCAxMDgsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgMTEwLCAxOSwgMjAsIDIyNywgMTU1LCAxOSwgMjAsIAorICAgIDIyNywgMTU0LCAxOSwgMjAsIDIyNywgMTUzLCAxOSwgMjAsIDIyNywgMTUyLCAxOSwgMjAsIDIyNywgMTYxLCAxOSwgMjAsIAorICAgIDIyNywgMTYwLCAxOSwgMjAsIDIyNywgMTYyLCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDkyLCAxOSwgMjAsIDIwOSwgMTA5LCAKKyAgICAyMDksIDcwLCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDY0LCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDQ3LCAxOSwgMjAsIAorICAgIDIwOSwgMTA5LCAyMDksIDQyLCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDEwOCwgMTksIDIwLCAyMDksIDEwOSwgMjA5LCAKKyAgICAxMDcsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgMTEwLCAxOSwgMjAsIDI1MSwgNTAsIDI0OSwgMjU1LCAxOSwgMjAsIDI0OCwgCisgICAgNDAsIDc0LCAxOSwgMjAsIDI0OCwgNDAsIDc1LCAxOSwgMjAsIDI0OCwgNDAsIDc4LCAxOSwgMjAsIDI0OCwgNDAsIDYzLCAKKyAgICAxOSwgMjAsIDI0OCwgNDAsIDIwNCwgNjIsIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCAzMCwgMTksIDIwLCAyNDgsIDQwLCAyMDQsIAorICAgIDAsIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCAxMTEsIDE5LCAyMCwgMjQ4LCA0MCwgMjIyLCAyNDAsIDE5LCAyMCwgMjQ4LCA0MCwgCisgICAgMjIyLCAxMDAsIDE5LCAyMCwgMjQ4LCA0MCwgMjIxLCAxOTEsIDE5LCAyMCwgMjQ4LCA0MCwgMjAxLCAyMDEsIDE5LCAyMCwgCisgICAgMjQ4LCA0MCwgMjI5LCAyMDEsIDE5LCAyMCwgMjQ4LCA0MCwgMjI5LCAxMDAsIDE5LCAyMCwgMjQ4LCA0MCwgMjI5LCAyNiwgCisgICAgMTksIDIwLCAyNDgsIDQwLCAxNzMsIDE5LCAyMCwgMjE0LCAyMDYsIDIzNywgNjcsIDE5LCAyMCwgMjE0LCAyMDYsIDIzNywgCisgICAgMywgMTksIDIwLCAyMTQsIDIwNiwgMjM2LCAxMzYsIDE5LCAyMCwgMjE0LCAyMDYsIDE1MiwgMTksIDIwLCA4OCwgMjM4LCAKKyAgICA4NywgMTksIDIwLCA4OCwgMjM4LCA5MSwgMTksIDIwLCA4OCwgMjM4LCAxMDUsIDE5LCAyMCwgODgsIDIzOCwgMTA0LCAxOSwgCisgICAgMjAsIDg4LCAyMzgsIDkzLCAxOSwgMjAsIDg4LCAyMzgsIDExOSwgMTksIDIwLCA4OCwgMjE1LCAxNDUsIDE5LCAyMCwgODgsIAorICAgIDIxNSwgMjI3LCAxOSwgMjAsIDg4LCAyMTYsIDE1OCwgMTksIDIwLCA4OCwgMjE2LCAxMzUsIDE5LCAyMCwgODgsIDIxNiwgCisgICAgNTcsIDE5LCAyMCwgODgsIDIxNiwgMjIwLCAxOSwgMjAsIDg4LCAyMDMsIDIxNywgMTksIDIwLCA4OCwgMjA0LCAwLCAxOSwgCisgICAgMjAsIDg4LCAyMDQsIDYyLCAxOSwgMjAsIDg4LCAyMDQsIDU1LCAxOSwgMjAsIDg4LCAyMDQsIDMwLCAxOSwgMjAsIDg4LCAKKyAgICAyMDQsIDExMSwgMTksIDIwLCA4OCwgMjM1LCAyNDcsIDE5LCAyMCwgODgsIDIzNSwgMjQ4LCAxOSwgMjAsIDg4LCAyMzUsIAorICAgIDI1MSwgMTksIDIwLCA4OCwgMjM1LCAyNTAsIDE5LCAyMCwgODgsIDIzNSwgMjQ5LCAxOSwgMjAsIDg4LCAyMzUsIDI1NCwgCisgICAgMTksIDIwLCA4OCwgMjA5LCAyMiwgMTksIDIwLCA4OCwgMjA5LCA0NywgMTksIDIwLCA4OCwgMjA5LCA5MiwgMTksIDIwLCAKKyAgICA4OCwgMjA5LCA5MCwgMTksIDIwLCA4OCwgMjA5LCA3MCwgMTksIDIwLCA4OCwgMjA5LCAxMDgsIDE5LCAyMCwgODgsIDIwNywgCisgICAgMjA4LCAxOSwgMjAsIDg4LCAyMDcsIDIxOCwgMTksIDIwLCA4OCwgMjA3LCAyMzYsIDE5LCAyMCwgODgsIDIwNywgMjM1LCAKKyAgICAxOSwgMjAsIDg4LCAyMDcsIDIyMCwgMTksIDIwLCA4OCwgMjA3LCAyNDEsIDE5LCAyMCwgODgsIDIxNywgMTkxLCAxOSwgMjAsIAorICAgIDg4LCAyMTgsIDY5LCAxOSwgMjAsIDg4LCAyMTksIDM0LCAxOSwgMjAsIDg4LCAyMTksIDIzLCAxOSwgMjAsIDg4LCAyMTgsIAorICAgIDE2NywgMTksIDIwLCA4OCwgMTg1LCAxOSwgMjAsIDg4LCAyMTksIDE4NCwgMTksIDIwLCA4OCwgMjM3LCAyMzAsIDE5LCAyMCwgCisgICAgODgsIDIzOCwgMzksIDE5LCAyMCwgODgsIDIzOCwgMTkwLCAxOSwgMjAsIDg4LCAyMzgsIDE4MiwgMTksIDIwLCA4OCwgMjM4LCAKKyAgICA4MSwgMTksIDIwLCA4OCwgMjM5LCA4LCAxOSwgMjAsIDg4LCAyMjksIDEwOSwgMTksIDIwLCA4OCwgMjI5LCAxMTUsIDE5LCAKKyAgICAyMCwgODgsIDIyOSwgMTI5LCAxOSwgMjAsIDg4LCAyMjksIDEyOCwgMTksIDIwLCA4OCwgMjI5LCAxMjIsIDE5LCAyMCwgODgsIAorICAgIDIyOSwgMTQ0LCAxOSwgMjAsIDg4LCAyMjksIDQyLCAxOSwgMjAsIDg4LCAyMjksIDQzLCAxOSwgMjAsIDg4LCAyMjksIDQ2LCAKKyAgICAxOSwgMjAsIDg4LCAyMjksIDQ1LCAxOSwgMjAsIDg4LCAyMjksIDQ0LCAxOSwgMjAsIDg4LCAyMjksIDQ3LCAxOSwgMjAsIAorICAgIDg4LCAyMjksIDQ4LCAxOSwgMjAsIDg4LCAyMjEsIDg0LCAxOSwgMjAsIDg4LCAyMjEsIDE5MSwgMTksIDIwLCA4OCwgMjIyLCAKKyAgICAyNDAsIDE5LCAyMCwgODgsIDIyMiwgMjM1LCAxOSwgMjAsIDg4LCAyMjIsIDEwMCwgMTksIDIwLCA4OCwgMjAxLCAyMDEsIAorICAgIDE5LCAyMCwgODgsIDIyMywgMjQ2LCAxOSwgMjAsIDg4LCAyMjQsIDgyLCAxOSwgMjAsIDg4LCAyMjUsIDIwLCAxOSwgMjAsIAorICAgIDg4LCAyMjUsIDgsIDE5LCAyMCwgODgsIDIyNCwgMTU1LCAxOSwgMjAsIDg4LCAxOTIsIDE5LCAyMCwgODgsIDIwMiwgMjEzLCAKKyAgICAxOSwgMjAsIDg4LCAyMDIsIDI0NywgMTksIDIwLCA4OCwgMjAzLCA1MiwgMTksIDIwLCA4OCwgMjAzLCA0OSwgMTksIDIwLCAKKyAgICA4OCwgMjAzLCAxMSwgMTksIDIwLCA4OCwgMTk4LCAxOSwgMjAsIDg4LCAyMzAsIDgyLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzAsIAorICAgIDgyLCAxOSwgMjAsIDg4LCAyMzAsIDEwMSwgMTksIDIwLCA4OCwgMjMwLCAxNjEsIDE5LCAyMCwgODgsIDIzMCwgMTU5LCAxOSwgCisgICAgMjAsIDg4LCAyMzAsIDE0MSwgMTksIDIwLCAyMTQsIDIwNiwgMjMwLCAxNDEsIDE5LCAyMCwgODgsIDIzMCwgMTgxLCAxOSwgCisgICAgMjAsIDg4LCAyMzAsIDExNCwgMTksIDIwLCA4OCwgMjMwLCAxMTgsIDE5LCAyMCwgODgsIDIzMCwgMTI4LCAxOSwgMjAsIDg4LCAKKyAgICAyMzAsIDEyNywgMTksIDIwLCA4OCwgMjMwLCAxMjYsIDE5LCAyMCwgODgsIDIzMCwgMTI5LCAxOSwgMjAsIDg4LCAyMjYsIAorICAgIDIzOSwgMTksIDIwLCA4OCwgMjI3LCA0OSwgMTksIDIwLCA4OCwgMjI3LCAyMzQsIDE5LCAyMCwgODgsIDIyNywgMjI2LCAxOSwgCisgICAgMjAsIDg4LCAyMjcsIDE0OCwgMTksIDIwLCA4OCwgMjI4LCAxMTMsIDE5LCAyMCwgODgsIDI0MywgMTE3LCAxOSwgMjAsIDg4LCAKKyAgICAyNDMsIDExOCwgMTksIDIwLCA4OCwgMjQzLCAxMjMsIDE5LCAyMCwgODgsIDI0MywgMTIyLCAxOSwgMjAsIDg4LCAyNDMsIAorICAgIDExOSwgMTksIDIwLCA4OCwgMjQzLCAxMjQsIDE5LCAyMCwgODgsIDIyNywgMTUxLCAxOSwgMjAsIDg4LCAyMjcsIDE1MywgCisgICAgMTksIDIwLCA4OCwgMjI3LCAxNTcsIDE5LCAyMCwgODgsIDIyNywgMTU2LCAxOSwgMjAsIDg4LCAyMjcsIDE1NSwgMTksIDIwLCAKKyAgICA4OCwgMjI3LCAxNjEsIDE5LCAyMCwgODgsIDIwOCwgMTgxLCAxOSwgMjAsIDg4LCAyMDgsIDE4MywgMTksIDIwLCA4OCwgCisgICAgMjA4LCAxODYsIDE5LCAyMCwgODgsIDIwOCwgMTg1LCAxOSwgMjAsIDg4LCAyMDgsIDE4NCwgMTksIDIwLCA4OCwgMjA4LCAKKyAgICAxODcsIDE5LCAyMCwgODgsIDIwOCwgMTc2LCAxOSwgMjAsIDg4LCAyMDgsIDE3NywgMTksIDIwLCA4OCwgMjA4LCAxODksIAorICAgIDE5LCAyMCwgODgsIDIwOCwgMTg4LCAxOSwgMjAsIDg4LCAyMDgsIDE3OCwgMTksIDIwLCA4OCwgMjA4LCAxOTAsIDE5LCAyMCwgCisgICAgODgsIDIwMiwgNiwgMTksIDIwLCA4OCwgMjAyLCAxNywgMTksIDIwLCA4OCwgMjAyLCA5MiwgMTksIDIwLCA4OCwgMjAyLCAKKyAgICA5MCwgMTksIDIwLCA4OCwgMjAyLCAzOSwgMTksIDIwLCA4OCwgMjAyLCAxMTYsIDE5LCAyMCwgODgsIDIwMiwgMTU5LCAxOSwgCisgICAgMjAsIDg4LCA4MSwgMjAyLCAxNTksIDE5LCAyMCwgODgsIDI0MSwgMjQyLCAxOSwgMjAsIDg4LCAyNDEsIDI0MywgMTksIDIwLCAKKyAgICA4OCwgMjQxLCAyNTIsIDE5LCAyMCwgODgsIDI0MSwgMjUxLCAxOSwgMjAsIDg4LCAyNDEsIDI0NiwgMTksIDIwLCA4OCwgCisgICAgMjQxLCAyNTUsIDE5LCAyMCwgODgsIDIxMSwgMTAsIDE5LCAyMCwgODgsIDIxMiwgMTMsIDE5LCAyMCwgODgsIDIxNCwgMTc3LCAKKyAgICAxOSwgMjAsIDg4LCAyMTQsIDE2NSwgMTksIDIwLCA4OCwgMjEyLCAxNjIsIDE5LCAyMCwgODgsIDIxNSwgMzYsIDE5LCAyMCwgCisgICAgODgsIDIxMiwgMTk5LCAxOSwgMjAsIDg4LCAyMTIsIDI0MiwgMTksIDIwLCA4OCwgMjEzLCA0MywgMTksIDIwLCA4OCwgMjEzLCAKKyAgICA0MSwgMTksIDIwLCA4OCwgMjEzLCAxMSwgMTksIDIwLCA4OCwgMjEzLCA5MCwgMTksIDIwLCA4OCwgMjEzLCA5MiwgMTksIAorICAgIDIwLCA4OCwgMjA3LCAyNDksIDE5LCAyMCwgODgsIDIwNywgMjUzLCAxOSwgMjAsIDg4LCAyMDgsIDE0LCAxOSwgMjAsIDg4LCAKKyAgICAyMDgsIDEzLCAxOSwgMjAsIDg4LCAyMDcsIDI1NSwgMTksIDIwLCA4OCwgMjA4LCAyMCwgMTksIDIwLCA4OCwgMjQ2LCA5OCwgCisgICAgMTksIDIwLCA4OCwgMjQ2LCAxMTYsIDE5LCAyMCwgODgsIDI0NiwgMTcwLCAxOSwgMjAsIDg4LCAyNDYsIDE2NiwgMTksIDIwLCAKKyAgICA4OCwgMjQ2LCAxNDIsIDE5LCAyMCwgODgsIDI0NiwgMTk5LCAxOSwgMjAsIDg4LCAyMDcsIDIxMSwgMTksIDIwLCA4OCwgCisgICAgMjA3LCAyMTIsIDE5LCAyMCwgODgsIDIwNywgMjE1LCAxOSwgMjAsIDg4LCAyMDcsIDIxNCwgMTksIDIwLCA4OCwgMjA3LCAKKyAgICAyMTMsIDE5LCAyMCwgODgsIDIwNywgMjE2LCAxOSwgMjAsIDI0NiwgMTQzLCA1NCwgMTksIDIwLCAyMzksIDEwMiwgMjExLCAKKyAgICA2MSwgMTksIDIwLCAyMTcsIDExOCwgMTksIDIwLCAyMjIsIDE5OSwgMTksIDIwLCAyMjEsIDIxNywgMTksIDIwLCAyMjEsIAorICAgIDIxNiwgMTksIDIwLCAyMjEsIDIxNSwgMTksIDIwLCAyMjEsIDIxNCwgMTksIDIwLCAyMjEsIDIxOSwgMTksIDIwLCAyMjEsIAorICAgIDIxOCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCAxMCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA5LCAxOSwgMjAsIDIwMywgCisgICAgMjQyLCAyMDksIDgsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgNywgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA2LCAxOSwgMjAsIAorICAgIDIwMywgMjQyLCAyMDksIDEzLCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDEyLCAxOSwgMjAsIDIwMywgMjQyLCA0NiwgMjA5LCAKKyAgICAxMTAsIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCAxNDQsIDIyMCwgNjQsIDIxMSwgMjI5LCA4MiwgMjIwLCA2NCwgMSwgMjQ4LCAKKyAgICAxMzIsIDIyMCwgNjQsIDEsIDIyNiwgMjI1LCAyMjAsIDY0LCAxLCAyNDAsIDU3LCAyMjAsIDY0LCAxLCAyMTUsIDE2LCAyMjAsIAorICAgIDY0LCAxLCAyMjIsIDU2LCAyMjAsIDY0LCAxLCAyMDcsIDM2LCAyMjAsIDY0LCAxLCAyNDQsIDE4NiwgMjIwLCA2NCwgMSwgCisgICAgMjA4LCAyMTQsIDIyMCwgNjQsIDEsIDI0NSwgMjQ1LCAyMjAsIDY0LCAxLCAyNDYsIDIyNSwgMjIwLCA2NCwgMSwgMjIzLCAKKyAgICAyMzMsIDIyMCwgNjQsIDEsIDIzOCwgMjAsIDIyMCwgNjQsIDEsIDIyMiwgMTg5LCAyMjAsIDY0LCAxLCAyMTEsIDU0LCAyMjAsIAorICAgIDY0LCAxLCAyMTUsIDEzOCwgMjIwLCA2NCwgMSwgMjUxLCA2MSwgMjIwLCA2NCwgMSwgMjIwLCAyMiwgMjIwLCA2NCwgMSwgCisgICAgMjA2LCAyMTAsIDIyMCwgNjQsIDEsIDI0MSwgMTg3LCAyMjAsIDY0LCAxLCAyMzAsIDIzMywgMjIwLCA2NCwgMSwgMjQxLCAKKyAgICAxODgsIDIyMCwgNjQsIDEsIDIxOSwgMjQ0LCAyMjAsIDY0LCAxLCAyMDcsIDE1LCAyMjAsIDY0LCAxLCAyMzEsIDg5LCAyMjAsIAorICAgIDY0LCAxLCAyNDEsIDE4NSwgMjIwLCA2NCwgMSwgMjE5LCAxMywgMjIwLCA2NCwgMjQwLCA1NiwgODIsIDIyMCwgNjQsIDIxNiwgCisgICAgNzMsIDI0MCwgNTYsIDgyLCAxOTcsIDEsIDI0MCwgNDYsIDI0MCwgMzgsIDI0MCwgNjEsIDI0MCwgMTc0LCAxOTcsIDEsIAorICAgIDIwNiwgMTY0LCAxOTcsIDEsIDIwNiwgMTk1LCAyMDYsIDIxMSwgNjgsIDE5NywgMSwgMjAyLCAyMTYsIDE5NywgMSwgMjAzLCAKKyAgICAxMjQsIDE5NywgMSwgMjA0LCAxNDQsIDE5NywgMSwgMjA5LCAxNSwgMjA5LCAxNCwgMjA5LCA0MCwgMTk3LCAxLCAyNDAsIAorICAgIDI0MywgMTk3LCAxLCAyNTAsIDE5OSwgNjMsIDE5NywgMSwgMjE5LCAyMjgsIDc4LCAxOTcsIDEsIDI1MSwgMTQyLCA2MywgCisgICAgMTk3LCAxLCAyNTEsIDkzLCAxOTcsIDEsIDIyNywgMjQsIDc4LCAxOTcsIDEsIDIxMiwgMjIxLCA3OCwgMTk3LCAxLCA3OCwgCisgICAgMTk3LCAxLCAyMjAsIDczLCAxOTcsIDEsIDIyMCwgMzEsIDE5NywgMSwgMjE2LCAxOTUsIDIxNiwgMjA4LCAyMTYsIDEyMCwgCisgICAgMTQ2LCAxOTcsIDEsIDIyOSwgMjE2LCAxOTcsIDEsIDI0NiwgMjIxLCAxOTcsIDEsIDIyOSwgMjE3LCAyMzAsIDU0LCAxOTcsIAorICAgIDEsIDIzOSwgNzUsIDE5NywgMSwgMjQxLCA3OCwgMTk3LCAxLCAyMzgsIDE4NSwgMjM3LCAxNzcsIDIzOSwgNzUsIDE5NywgMSwgCisgICAgMjM4LCAyMjQsIDE5NywgMSwgMjAzLCAyMDksIDIwMywgMjAwLCAyMDQsIDE0NCwgMTk3LCAxLCAyMzcsIDE0OSwgMjM3LCAKKyAgICAxNzEsIDE5NywgMSwgMjM3LCAxNTMsIDIzNywgMTcxLCAxOTcsIDEsIDIyNywgMjYsIDIzNywgMTcxLCAxOTcsIDEsIDIxMiwgCisgICAgMjI0LCAyMzcsIDE3MSwgMTk3LCAxLCAyMjMsIDYzLCAyMjEsIDIsIDIyMywgNjQsIDIyMywgMTYzLCAxOTcsIDEsIDIxMiwgCisgICAgMjIyLCAyMjMsIDE2MywgMTk3LCAxLCAyNDIsIDgwLCAxOTcsIDEsIDIzMCwgMjEyLCAyMzAsIDIxNiwgMjMwLCAyMDMsIDc1LCAKKyAgICAxOTcsIDEsIDc0LCAxOTcsIDEsIDIzMCwgMTUyLCAyMzAsIDE4NCwgMTk3LCAxLCAyMzgsIDE2OSwgMTk3LCAxLCAyMjcsIAorICAgIDI3LCAyNTEsIDEwOSwgMTk3LCAxLCAyMTIsIDIyNiwgNjMsIDE5NywgMSwgMjMwLCAxOTUsIDI0MSwgNTEsIDE5NywgMSwgCisgICAgMjE4LCAyMjYsIDIxOCwgMjUxLCAyMTksIDE4NCwgMTk3LCAxLCAyNTEsIDIzLCAyNDEsIDQ5LCAxOTcsIDEsIDIxMSwgMjM0LCAKKyAgICAxOTQsIDE5NywgMSwgMjEyLCAxNDYsIDIyNywgMjMsIDE5NCwgMTk3LCAxLCAyMTIsIDIyMCwgMTk0LCAxOTcsIDEsIDI0NywgCisgICAgMTI1LCAxOTcsIDEsIDIwMiwgMTU5LCAxOTcsIDEsIDIwOCwgMTk1LCAyMDgsIDIwNywgMjA3LCAxMDgsIDIxMCwgNjksIAorICAgIDE5NywgMSwgMjEyLCAyMTksIDIxMCwgNjksIDE5NywgMSwgMjQ1LCA1MSwgMTk3LCAxLCAyNDgsIDExMSwgMjQ4LCAxMTQsIAorICAgIDI0OCwgNDYsIDI0OSwgMjU1LCAxOTcsIDEsIDIxMiwgMjI1LCAyNDksIDI1NSwgMTk3LCAxLCAyNDIsIDc5LCAxOTcsIDEsIAorICAgIDIyMCwgMiwgMTk3LCAxLCAyNDEsIDE0NiwgMjQxLCAxNDgsIDc0LCAxOTcsIDEsIDIyNSwgMTEzLCAyMjUsIDEyMywgMjI2LCAKKyAgICAxODUsIDE5NywgMSwgMjI3LCAyNSwgMjI2LCAxODUsIDE5NywgMSwgMjEyLCAyMjMsIDIyNiwgMTg1LCAxOTcsIDEsIDIyNywgCisgICAgMjQ5LCAyMjgsIDkxLCAyMjcsIDM0LCAxNTksIDE5NywgMSwgMjQyLCA4MSwgMTk3LCAxLCAyMzEsIDIzLCAxOTcsIDEsIAorICAgIDIzMSwgMjQsIDE5NywgMSwgMjQ0LCAyMDAsIDI0NCwgMjA2LCAyNDUsIDUxLCAxOTcsIDEsIDIxOSwgMjIyLCAyNDAsIDI0MiwgCisgICAgNzgsIDE5NywgMSwgMjQxLCAxODMsIDE5NywgMSwgMjMwLCAyMzIsIDE5NywgMSwgMjQ1LCA3MSwgMTk3LCAxLCAyNDcsIDc1LCAKKyAgICAxOTcsIDEsIDI0NiwgMjM3LCAxOTcsIDEsIDIxMSwgOTksIDE5NywgMSwgMjI3LCAyMiwgMTk3LCAxLCAyMTIsIDIxOCwgCisgICAgMTk3LCAxLCAyMzUsIDE2MSwgMTk3LCAxLCAyMTcsIDEzNCwgMTk3LCAxLCAyMDMsIDE5NiwgMTk3LCAyMTIsIDEyMCwgMjE3LCAKKyAgICAxNzgsIDE5NywgMjIzLCAyMjYsIDIxNywgMTc4LCAxOTcsIDI0NSwgMTMxLCAyMTcsIDE3OCwgMTk3LCAyNTAsIDEwOCwgOTcsIAorICAgIDE5NywgMjA3LCAxNjIsIDk3LCAxOTcsIDI0OCwgMTMwLCA5NywgMTk3LCAxLCAyMzAsIDU0LCAxOTcsIDEsIDIxMywgOTIsIAorICAgIDE5NywgMSwgMjIwLCAxOCwgMTk3LCAxLCAyMzksIDEzMSwgMjQ3LCAyMCwgMjE5LCAyMjcsIDE5NywgMSwgMjM5LCAxMzEsIAorICAgIDI0NywgMjAsIDIzMCwgMjE1LCAxOTcsIDEsIDIzOSwgMTMxLCAyNDcsIDIwLCAyNDEsIDE0NywgMTk3LCAxLCAyMzksIDEzMSwgCisgICAgMjQ3LCAyMCwgMjUxLCAxNDEsIDE5NywgMSwgMjM5LCAxMzEsIDI0NywgMjAsIDI1MSwgOTMsIDIwOSwgMjU0LCAxLCA2MywgCisgICAgMjA5LCAyNTQsIDEsIDc1LCAyMDksIDI1NCwgMSwgNjgsIDIwOSwgMjU0LCAxLCAxNzMsIDIwOSwgMjU0LCAxLCAyMzksIDgsIAorICAgIDIwOSwgMjU0LCAxLCAyMjIsIDIwMywgMjA5LCAyNTQsIDEsIDIxMCwgMjIsIDIwOSwgMjU0LCAxLCAyNDQsIDIxMiwgMjA5LCAKKyAgICAyNTQsIDEsIDIwMSwgMjAxLCAyMDksIDI1NCwgMSwgMTg1LCAyMDksIDI1NCwgMSwgMjQ5LCAzMiwgMjA5LCAyNTQsIDEsIAorICAgIDE5MiwgMjA5LCAyNTQsIDEsIDE5OCwgMjA5LCAyNTQsIDEsIDIyOCwgMTEzLCAyMDksIDI1NCwgMSwgMjA0LCAxMTEsIDIwOSwgCisgICAgMjU0LCAxLCAyMTUsIDM2LCAyMDksIDI1NCwgMSwgMTUyLCAyMDksIDI1NCwgMjIsIDIsIDc1LCAyMDksIDI1NCwgMjIsIDIsIAorICAgIDY4LCAyMDksIDI1NCwgMiwgMjA1LCAyMDQsIDIzNywgOTYsIDEsIDYzLCAyMzcsIDk2LCAxLCA3NSwgMjM3LCA5NiwgMSwgCisgICAgNjgsIDIzNywgOTYsIDEsIDE3MywgMjM3LCA5NiwgMSwgMjM5LCA4LCAyMzcsIDk2LCAxLCAyMjIsIDIwMywgMjM3LCA5NiwgCisgICAgMSwgMjEwLCAyMiwgMjM3LCA5NiwgMSwgMjQ0LCAyMTIsIDIzNywgOTYsIDEsIDIwMSwgMjAxLCAyMzcsIDk2LCAxLCAxODUsIAorICAgIDIzNywgOTYsIDEsIDI0OSwgMzIsIDIzNywgOTYsIDEsIDE5MiwgMjM3LCA5NiwgMSwgMTk4LCAyMzcsIDk2LCAxLCAyMTYsIAorICAgIDIyMCwgMjM3LCA5NiwgMSwgMjI4LCAxMTMsIDIzNywgOTYsIDEsIDIwNCwgMTExLCAyMzcsIDk2LCAxLCAyMTUsIDM2LCAKKyAgICAyMzcsIDk2LCAxLCAxNTIsIDIzNywgOTYsIDIyLCAyLCA3NSwgMjM3LCA5NiwgMjIsIDIsIDY4LCAyMzcsIDk2LCAyLCAyMTksIAorICAgIDEyNCwgMjE4LCAxODUsIDIxMiwgMTIwLCAyMTcsIDE3OCwgMjE4LCAxODUsIDUyLCAyMTcsIDE3OCwgMjQ3LCAxODUsIDEsIAorICAgIDYzLCAyNDcsIDE4NSwgMSwgNzUsIDI0NywgMTg1LCAxLCA2OCwgMjQ3LCAxODUsIDEsIDE3MywgMjQ3LCAxODUsIDEsIDIzOSwgCisgICAgOCwgMjQ3LCAxODUsIDEsIDIyMiwgMjAzLCAyNDcsIDE4NSwgMSwgMjEwLCAyMiwgMjQ3LCAxODUsIDEsIDI0NCwgMjEyLCAKKyAgICAyNDcsIDE4NSwgMSwgMjAxLCAyMDEsIDI0NywgMTg1LCAxLCAxODUsIDI0NywgMTg1LCAxLCAyNDksIDMyLCAyNDcsIDE4NSwgCisgICAgMSwgMTkyLCAyNDcsIDE4NSwgMSwgMTk4LCAyNDcsIDE4NSwgMSwgMjE2LCAyMjAsIDI0NywgMTg1LCAxLCAyMjgsIDExMywgCisgICAgMjQ3LCAxODUsIDEsIDIwNCwgMTExLCAyNDcsIDE4NSwgMSwgMjE1LCAzNiwgMjQ3LCAxODUsIDEsIDE1MiwgMjQ3LCAxODUsIAorICAgIDIyLCAyLCA3NSwgMjQ3LCAxODUsIDIyLCAyLCA2OCwgMjA5LCAyNTMsIDEsIDYzLCAyMDksIDI1MywgMSwgNzUsIDIwOSwgCisgICAgMjUzLCAxLCA2OCwgMjA5LCAyNTMsIDEsIDE3MywgMjA5LCAyNTMsIDEsIDIzOSwgOCwgMjA5LCAyNTMsIDEsIDIyMiwgMjAzLCAKKyAgICAyMDksIDI1MywgMSwgMjEwLCAyMiwgMjA5LCAyNTMsIDEsIDI0NCwgMjEyLCAyMDksIDI1MywgMSwgMjAxLCAyMDEsIDIwOSwgCisgICAgMjUzLCAxLCAxODUsIDIwOSwgMjUzLCAxLCAyNDksIDMyLCAyMDksIDI1MywgMSwgMTkyLCAyMDksIDI1MywgMSwgMTk4LCAKKyAgICAyMDksIDI1MywgMSwgMjI4LCAxMTMsIDIwOSwgMjUzLCAxLCAyMDQsIDExMSwgMjA5LCAyNTMsIDEsIDIxNSwgMzYsIDIwOSwgCisgICAgMjUzLCAyMiwgMiwgNzUsIDIwOSwgMjUzLCAyMiwgMiwgNjgsIDg1LCAxLCAxNzMsIDg1LCAxLCAyMjksIDE0NCwgODUsIDEsIAorICAgIDIyOSwgMjYsIDg1LCAxLCAyMjksIDExNSwgODUsIDEsIDIyMiwgMTI4LCA4NSwgMSwgMjQ3LCA5MiwgODUsIDEsIDI0NiwgCisgICAgMTk5LCA4NSwgMSwgMjQ1LCAyNTQsIDg1LCAxLCAyNDYsIDExNiwgODUsIDEsIDIyMCwgMjMzLCA4NSwgMSwgMjQ0LCAyMTIsIAorICAgIDg1LCAxLCAyMDcsIDIyOSwgODUsIDEsIDI0MywgMTEzLCA4NSwgMSwgMjA3LCAyMjQsIDg1LCAxLCAyMjEsIDE5NywgODUsIAorICAgIDEsIDIxMCwgMjIsIDg1LCAxLCAyMDksIDEwOCwgODUsIDEsIDEzNSwgODUsIDEsIDIwOSwgNDcsIDg1LCAxLCAyMjEsIDE5MSwgCisgICAgODUsIDEsIDI0OSwgMzIsIDg1LCAxLCAyMTgsIDIwOCwgODUsIDEsIDIxOCwgNjksIDg1LCAxLCAyMTgsIDE4MCwgODUsIDEsIAorICAgIDIyNCwgODIsIDg1LCAxLCAyMDIsIDI0NywgODUsIDEsIDIxNSwgMjI3LCA4NSwgMSwgMjI3LCA0OSwgODUsIDEsIDIwNSwgCisgICAgMTg5LCA4NSwgMSwgMjEzLCA5MCwgODUsIDEsIDIxMSwgMTI0LCA4NSwgMSwgMjE1LCAzNiwgODUsIDEsIDE1MiwgODUsIDEsIAorICAgIDIyOCwgMTEzLCA4NSwgMSwgMjE3LCAxMjYsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCAxMTIsIDg1LCAyMzEsIDM2LCAyMiwgCisgICAgMjE3LCAxMjUsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCA4OCwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDgzLCA4NSwgMjMxLCAKKyAgICAzNiwgMjIsIDIxNywgNjUsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCAzNSwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDIzLCA4NSwgCisgICAgMjMxLCAzNiwgMjIsIDIxNywgMjIsIDg1LCAyMzEsIDM2LCAyMiwgMjE1LCAxMDIsIDg1LCAyMzEsIDM2LCAyMiwgMjE1LCAKKyAgICA5NSwgODUsIDIzMSwgMzYsIDIyLCAyMjYsIDE5OSwgODUsIDIzMSwgMzYsIDIyLCAyMjYsIDE4OCwgODUsIDIzMSwgMzYsIAorICAgIDIyLCAyMTcsIDEwNiwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDExOCwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDczLCAyMDcsIAorICAgIDEyMSwgMTA1LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgNzMsIDIwNywgMTIxLCAxMDgsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCAKKyAgICAxMDgsIDg1LCAyMiwgMjMxLCAyMSwgMjUwLCAxNDgsIDg1LCAyMiwgMjMxLCAyMSwgMjUyLCAyNSwgODUsIDIyLCAyLCAyNTIsIAorICAgIDI1LCA4NSwgMjIsIDIsIDc1LCA4NSwgMjIsIDIsIDIzMSwgODMsIDg1LCAyMiwgMiwgMjAzLCAxMjQsIDg1LCAyMiwgMiwgCisgICAgMjAyLCAxNjksIDg1LCAyMiwgMiwgNjgsIDg1LCAyMiwgMiwgMjA2LCAxNzgsIDg1LCAyMiwgMiwgMjA3LCAzOSwgODUsIDIyLCAKKyAgICAyLCAyMjAsIDczLCA4NSwgMjIsIDIsIDE5OCwgODUsIDIyLCAyLCAyMzEsIDExMCwgODUsIDIyLCAyLCA3NCwgODUsIDIyLCAKKyAgICAyLCAyNTEsIDEwOSwgODUsIDIyLCAyLCAyNTEsIDY0LCA4NSwgMjIsIDIsIDIyMCwgMTgsIDg1LCAyMiwgMiwgMjUwLCAzNCwgCisgICAgODUsIDIsIDIyMiwgNzMsIDg1LCAyLCAyMTYsIDE1NiwgODUsIDIsIDIwMiwgMTgwLCA4NSwgMiwgMjIzLCAxOTAsIDg1LCAyLCAKKyAgICAyMDgsIDczLCA4NSwgMiwgMjQ4LCAyMzMsIDg1LCAyLCAyMTUsIDIyMiwgODUsIDIsIDIwOCwgMTcxLCA4NSwgMiwgMjMwLCAKKyAgICAxMSwgODUsIDIsIDI1MSwgNjYsIDg1LCAyLCAyMTQsIDI0NCwgMjE0LCAyMzcsIDg1LCAyLCAyMDUsIDIwMSwgODUsIDIsIAorICAgIDI0NSwgMjQ4LCA4NSwgMiwgMjQ4LCAyMDUsIDg1LCAyLCAyMjksIDEzNiwgODUsIDIsIDI0OCwgMjI4LCA4NSwgMiwgMjQ3LCAKKyAgICA2NCwgMjE4LCAxMzAsIDIyOCwgMTczLCA4NSwgMiwgMjI3LCAyMDMsIDIwOCwgMTQ4LCA4NSwgMiwgMjQ4LCAxMDAsIDg1LCAKKyAgICAyLCAyMTgsIDE4MiwgMjIzLCAyNDMsIDg1LCAyLCAyMjksIDQsIDg1LCAyNDUsIDkyLCAxNiwgMjE2LCA0OSwgODUsIDIsIAorICAgIDI1MCwgMTYsIDg1LCAyLCAyNTAsIDM3LCA4NSwgMTcsIDIwMiwgODQsIDg1LCAxNywgMTA1LCA4NSwgMTcsIDEwOCwgODUsIAorICAgIDE3LCAxNDcsIDg1LCAxNywgMTQ5LCA4NSwgMTcsIDE3MCwgODUsIDE3LCAxOTUsIDg1LCAxNywgMjEzLCAxMTEsIDg1LCAxNywgCisgICAgMTk5LCA4NSwgMTcsIDIyMiwgNjMsIDg1LCAxNiwgMjI3LCAyMDMsIDI1MCwgMzksIDIxMSwgMjUzLCA4NSwgMTYsIDIyNywgCisgICAgMjAzLCAyNTAsIDM5LCAyMjMsIDIxMCwgODUsIDE2LCAyMjcsIDIwMywgMjUwLCAzOSwgMjE4LCAxMjksIDg1LCAxNiwgMjI3LCAKKyAgICAyMDMsIDI1MCwgMzksIDI0OCwgMTMzLCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyNDcsIDE2NSwgODUsIDE2LCAyMjcsIAorICAgIDIwMywgMjUwLCAzOSwgMjE4LCA3LCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyMTgsIDEsIDg1LCAxNiwgMjI3LCAKKyAgICAyMDMsIDI1MCwgMzksIDIxNywgMjU1LCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyMTgsIDUsIDg1LCAxNiwgMjI3LCAKKyAgICAyMDMsIDI1MCwgMzksIDIxOCwgMywgOTQsIDI0OCwgNTksIDk0LCAyNDEsIDEwOCwgOTQsIDI0NSwgMjMzLCA5NCwgMjM5LCAKKyAgICAxMDIsIDIxMSwgNjEsIDk0LCAyNDUsIDI0MiwgOTQsIDIzOSwgMTQ3LCAyNDMsIDgzLCA5NCwgMjA4LCAxNzAsIDIxMiwgNywgCisgICAgMjM1LCAyMjAsIDk0LCAyMTIsIDE2MCwgNCwgMjQ3LCAyNDQsIDIyNSwgODgsIDk0LCAyMjUsIDExOSwgMjQ1LCAyMzMsIDk0LCAKKyAgICAyMjUsIDExOSwgMjM5LCAxMDIsIDIxMSwgNjEsIDk0LCAyMjIsIDU0LCA5NCwgMjM5LCAxMzAsIDU3LCAyMTQsIDE1MSwgCisgICAgMTA1LCA5NCwgMjM5LCAxMzAsIDU3LCAyMTQsIDE1MSwgMTA4LCA5NCwgMjM5LCAxMzAsIDU3LCAyMTQsIDE1MSwgMTQ3LCAKKyAgICA5NCwgMjIsIDIxMywgMTMwLCA5NCwgMTcsIDIwMiwgODQsIDk0LCAxNywgMTA1LCA5NCwgMTcsIDEwOCwgOTQsIDE3LCAxNDcsIAorICAgIDk0LCAxNywgMTQ5LCA5NCwgMTcsIDE3MCwgOTQsIDE3LCAxOTUsIDk0LCAxNywgMjEzLCAxMTEsIDk0LCAxNywgMTk5LCA5NCwgCisgICAgMTcsIDIyMiwgNjMsIDk0LCAxLCA2MywgOTQsIDEsIDc0LCA5NCwgMSwgNzUsIDk0LCAxLCA3OCwgOTQsIDEsIDY4LCA5NCwgCisgICAgMSwgMjIwLCA3MywgOTQsIDEsIDIwNywgMjQsIDk0LCAxLCAyNDEsIDE2MSwgOTQsIDEsIDIwMSwgMjAxLCA5NCwgMSwgMjUwLCAKKyAgICAyMjMsIDk0LCAxLCAyNDksIDMyLCA5NCwgMSwgMTg1LCA5NCwgMSwgMjE3LCAxMjYsIDk0LCAxLCAyMzksIDgsIDk0LCAxLCAKKyAgICAxOTIsIDk0LCAxLCAyMjgsIDExMywgOTQsIDEsIDIxNSwgMzYsIDk0LCAxLCAyMTMsIDkwLCA5NCwgMSwgMjEwLCAyMiwgOTQsIAorICAgIDEsIDI0NCwgMjEyLCA5NCwgMSwgMjQ2LCAxOTksIDk0LCAxLCAyMzAsIDE4MSwgOTQsIDEsIDE5OCwgOTQsIDEsIDIxNiwgCisgICAgMjIwLCA5NCwgMSwgMjA0LCAxMTEsIDk0LCAxLCAyNDAsIDEwOCwgOTQsIDEsIDE3MywgOTQsIDEsIDIyOSwgMTQ0LCA5NCwgCisgICAgMSwgMjA4LCAyMCwgOTQsIDEsIDIwMiwgMTE2LCA5NCwgMSwgMjM3LCAxNTcsIDk0LCAxLCAyMDIsIDEwLCA5NCwgMSwgMjI3LCAKKyAgICAxNjEsIDk0LCAxLCAyMDIsIDY2LCA5NCwgMSwgMjQ2LCAxNDIsIDk0LCAxLCAyMDgsIDE3MCwgMTYzLCAyMiwgNTQsIDk0LCAKKyAgICAxLCAyMDgsIDE3MCwgNzQsIDk0LCAxLCAyMDgsIDE3MCwgNzUsIDk0LCAxLCAyMDgsIDE3MCwgNzgsIDk0LCAxLCAyMDgsIAorICAgIDE3MCwgNjgsIDk0LCAxLCAyMDgsIDE3MCwgMjIwLCA3MywgOTQsIDEsIDIwOCwgMTcwLCAyMDcsIDI0LCA5NCwgMSwgMjA4LCAKKyAgICAxNzAsIDI1MCwgMjIzLCA5NCwgMSwgMjA4LCAxNzAsIDI0OSwgMzIsIDk0LCAxLCAyMDgsIDE3MCwgMTg1LCA5NCwgMSwgCisgICAgMjA4LCAxNzAsIDIxNywgMTI2LCA5NCwgMSwgMjA4LCAxNzAsIDIzOSwgOCwgOTQsIDEsIDIwOCwgMTcwLCAxOTIsIDk0LCAxLCAKKyAgICAyMDgsIDE3MCwgMjEwLCAyMiwgOTQsIDEsIDIwOCwgMTcwLCAyNDQsIDIxMiwgOTQsIDEsIDIwOCwgMTcwLCAyNDYsIDE5OSwgCisgICAgOTQsIDEsIDIwOCwgMTcwLCAyMzAsIDE4MSwgOTQsIDEsIDIwOCwgMTcwLCAyMDgsIDIwLCA5NCwgMSwgMjA4LCAxNzAsIAorICAgIDE5OCwgOTQsIDEsIDIwOCwgMTcwLCAyMDQsIDExMSwgOTQsIDEsIDIwOCwgMTcwLCAxNzMsIDk0LCAxLCAyMDgsIDE3MCwgCisgICAgMjM5LCA1LCA5NCwgMSwgMjA4LCAxNzAsIDIzNywgMTU3LCA5NCwgMSwgMjA4LCAxNzAsIDIzMCwgMTQwLCA5NCwgMSwgMjA4LCAKKyAgICAxNzAsIDIyMiwgOTgsIDk0LCAxLCAyMDgsIDE3MCwgMjQxLCAyNTUsIDk0LCAxLCAyMTIsIDE2MCwgNzQsIDk0LCAxLCAyMTIsIAorICAgIDE2MCwgNzUsIDk0LCAxLCAyMTIsIDE2MCwgMjMwLCAxOTIsIDk0LCAxLCAyMTIsIDE2MCwgMjA3LCAyNCwgOTQsIDEsIDIxMiwgCisgICAgMTYwLCA2OCwgOTQsIDEsIDIxMiwgMTYwLCAyNTAsIDIyMywgOTQsIDEsIDIxMiwgMTYwLCAxNzMsIDk0LCAxLCAyMTIsIAorICAgIDE2MCwgMjM5LCA4LCA5NCwgMSwgMjEyLCAxNjAsIDE1MiwgOTQsIDEsIDIxMiwgMTYwLCAxODUsIDk0LCAxLCAyMTIsIDE2MCwgCisgICAgMjEzLCA5MCwgOTQsIDEsIDIxMiwgMTYwLCAyMTAsIDIyLCA5NCwgMSwgMjEyLCAxNjAsIDI0NCwgMjEyLCA5NCwgMSwgMjEyLCAKKyAgICAxNjAsIDIzMCwgMTgxLCA5NCwgMSwgMjEyLCAxNjAsIDI0MCwgMTA4LCA5NCwgMSwgMjEyLCAxNjAsIDIzOSwgNSwgOTQsIDEsIAorICAgIDIxMiwgMTYwLCAyMzcsIDE1NywgOTQsIDEsIDIxMiwgMTYwLCAyMDgsIDIwLCA5NCwgMSwgMjEyLCAxNjAsIDIwMiwgMTE2LCAKKyAgICA5NCwgMSwgMjEyLCAxNjAsIDIxNiwgMjE2LCA5NCwgMSwgMjEyLCAxNjAsIDI0NiwgMTk5LCA5NCwgMSwgMjEyLCAxNjAsIAorICAgIDIwMiwgODAsIDk0LCAxLCAyMjUsIDExOSwgNzUsIDk0LCAxLCAyMjUsIDExOSwgMTczLCA5NCwgMSwgMjI1LCAxMTksIDIxNiwgCisgICAgMjIwLCA5NCwgMSwgMjI1LCAxMTksIDI0MCwgMTA4LCA5NCwgMSwgMjI1LCAxMTksIDIwMiwgODAsIDk0LCAxLCAyNTEsIDIyLCAKKyAgICAyMzgsIDI0NCwgMjUwLCAxODEsIDEwNSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDUsIDIwMCwgMTA1LCA5NCwgMSwgCisgICAgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgMTc0LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwNywgMzQsIDk0LCAxLCAKKyAgICAyNTEsIDIyLCAyMzgsIDI0NCwgMjMwLCAyMzksIDIwNywgMzQsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ4LCAyNDUsIAorICAgIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMTI2LCAyNDgsIDI0NSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCA2MywgCisgICAgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCA3NSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAxNzMsIDk0LCAxLCAyNTEsIAorICAgIDIyLCAyMzgsIDI0NCwgMjIyLCAyMDMsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ3LCA5MiwgOTQsIDEsIDI1MSwgCisgICAgMjIsIDIzOCwgMjQ0LCAyMDcsIDI0MSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDcsIDIyOSwgOTQsIDEsIDI1MSwgCisgICAgMjIsIDIzOCwgMjQ0LCAyNDQsIDEyMCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMjEsIDIyNywgOTQsIDEsIDI1MSwgCisgICAgMjIsIDIzOCwgMjQ0LCAyMTAsIDIyLCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgMjEyLCA5NCwgMSwgMjUxLCAKKyAgICAyMiwgMjM4LCAyNDQsIDE4NSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMTgsIDIwOCwgOTQsIDEsIDI1MSwgMjIsIAorICAgIDIzOCwgMjQ0LCAyMTEsIDE2NCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDIsIDgwLCA5NCwgMSwgMjUxLCAyMiwgCisgICAgMjM4LCAyNDQsIDIwMiwgMTE2LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI1MSwgNzMsIDk0LCAxLCAyMDgsIDE3MCwgCisgICAgMjUxLCAyMiwgMjM4LCAyNDQsIDIxMCwgMjIsIDk0LCAxLCAyMDgsIDE3MCwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwMiwgODAsIAorICAgIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIzOCwgMTE5LCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIAorICAgIDIzOCwgMjQ0LCAyMjIsIDIwMywgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ3LCA5MiwgOTQsIDEsIAorICAgIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjMwLCAxNDksIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAKKyAgICAyNDQsIDIwNywgMjQxLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDQsIDEwNCwgOTQsIDEsIDIyNSwgCisgICAgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjEwLCAyMiwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ0LCAKKyAgICAxLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMTEsIDE2NCwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIAorICAgIDIyLCAyMzgsIDI0NCwgMjQ1LCA2NSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjAyLCA4MCwgOTQsIAorICAgIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjAyLCAxMTYsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMTYyLCAKKyAgICA2OCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAxNjIsIDE5OCwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIAorICAgIDI0NCwgMjQ4LCA5OCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDQsIDIwMSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIAorICAgIDIyLCAyMzgsIDI0NCwgMjI3LCAxNjEsIDE5LCAyMCwgMjE5LCAxODgsIDE5LCAyMCwgMjUwLCA4LCAxOSwgMjAsIDI1MSwgCisgICAgMjM2LCAxOSwgMjAsIDIwNCwgNjUsIDE5LCAyMCwgMjE4LCAxMywgMTksIDIwLCAyMTksIDQzLCAxOSwgMjAsIDIxNywgMTQzLCAKKyAgICAxOSwgMjAsIDIwOSwgMTk2LCAxOSwgMjAsIDIyOSwgMjA4LCAxOSwgMjAsIDIyOCwgMTY0LCAxOSwgMjAsIDIyNSwgNjMsIAorICAgIDE5LCAyMCwgMjIxLCAxNDksIDE5LCAyMCwgMjIzLCA1OSwgMTksIDIwLCAyMjcsIDI0NCwgMTksIDIwLCAyMTEsIDIzMiwgCisgICAgMTksIDIwLCAyMTQsIDIwOCwgMTksIDIwLCAyMTIsIDIwNywgMTksIDIwLCAyMTMsIDQ3LCAxOSwgMjAsIDIxMiwgMTcyLCAKKyAgICAxOSwgMjAsIDIwMiwgMjIyLCAxOSwgMjAsIDIwMywgNTgsIDE5LCAyMCwgMjE2LCAxNjUsIDE5LCAyMCwgMjIxLCAxNywgMTksIAorICAgIDIwLCAyMjAsIDUzLCAyMjEsIDE3LCAxOSwgMjAsIDIyMSwgMTYsIDE5LCAyMCwgMjIwLCA1MywgMjIxLCAxNiwgMTksIDIwLCAKKyAgICAyMjEsIDE1LCAxOSwgMjAsIDIyMCwgNTMsIDIyMSwgMTUsIDE5LCAyMCwgMjIxLCAxNCwgMTksIDIwLCAyMjAsIDUzLCAyMjEsIAorICAgIDE0LCAxOSwgMjAsIDIxNSwgMTA3LCAxOSwgMjAsIDIxNSwgMTA2LCAxOSwgMjAsIDIxNSwgMTA1LCAxOSwgMjAsIDIxNSwgCisgICAgMTA0LCAxOSwgMjAsIDIxNSwgMTAzLCAxOSwgMjAsIDIxNSwgMTExLCAxOSwgMjAsIDIyMCwgNTMsIDIxOSwgMTg0LCAxOSwgCisgICAgMjAsIDIyMCwgNTMsIDIxMCwgNjksIDE5LCAyMCwgMjIwLCA1MywgMjMwLCA1NCwgMTksIDIwLCAyMjAsIDUzLCAyNDcsIAorICAgIDEyNSwgMTksIDIwLCAyMjAsIDUzLCAyMjYsIDE4NSwgMTksIDIwLCAyMjAsIDUzLCAyMjMsIDE2MywgMTksIDIwLCAyMjAsIAorICAgIDUzLCAxOTQsIDE5LCAyMCwgMjIwLCA1MywgMjEzLCA5MiwgMTksIDIwLCAyNDEsIDE3NCwgMjA0LCAxNDQsIDE5LCAyMCwgCisgICAgMjA0LCA0NCwgMjA0LCAxNDQsIDE5LCAyMCwgNDYsIDUsIDIxNSwgMjUyLCAxOSwgMjAsIDQ2LCAyMTYsIDE4OCwgMjQzLCAKKyAgICA4NSwgMTksIDIwLCAyMTcsIDAsIDIxNSwgMTA4LCAxOSwgMjAsIDE5NiwgMjI3LCAxOCwgMTksIDIwLCAxOTYsIDIyOCwgCisgICAgMTEyLCAxOSwgMjAsIDIwOSwgMTEsIDE5LCAyMCwgMjA5LCAxMywgMTksIDIwLCAyMDcsIDIyMSwgMTksIDIwLCAyMDcsIAorICAgIDIyMywgMTksIDIwLCAyMDcsIDIyOCwgMTksIDIwLCAyMDgsIDE4MCwgMTksIDIwLCAyMDgsIDE4MiwgMTksIDIwLCAyMTQsIAorICAgIDIwNiwgMjEyLCAxNzcsIDE5LCAyMCwgMjE0LCAyMDYsIDIxMiwgMjM2LCAxOSwgMjAsIDIxNCwgMjA2LCAyMzYsIDExNywgCisgICAgMTksIDIwLCA4OCwgMjM3LCAxODUsIDE5LCAyMCwgODgsIDI0NCwgMzUsIDIzOCwgMTgyLCAxOSwgMjAsIDg4LCAyMzksIDUsIAorICAgIDE5LCAyMCwgODgsIDIzNywgMTkwLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzAsIDY0LCAxOSwgMjAsIDg4LCAyMzAsIDYyLCAxOSwgCisgICAgMjAsIDI0OCwgMTUzLCAyNDQsIDM1LCAxNTksIDE5LCAyMCwgMjQ4LCAxNTMsIDI0NCwgMzUsIDE0NiwgMTksIDIwLCA4OCwgCisgICAgMjQ0LCAzMCwgMTk0LCAyMjcsIDEyNCwgMjA1LCAxNjksIDIyNywgMTc0LCAyMjcsIDEyNCwgMSwgMTczLCAyMjcsIDEyNCwgCisgICAgMSwgMjI5LCAxNDQsIDIyNywgMTI0LCAxLCAyMzksIDgsIDIyNywgMTI0LCAxLCAyMzgsIDExOSwgMjI3LCAxMjQsIDEsIAorICAgIDIyMiwgMjAzLCAyMjcsIDEyNCwgMSwgMjQ3LCA5MiwgMjI3LCAxMjQsIDEsIDI0NiwgMTk5LCAyMjcsIDEyNCwgMSwgMjMwLCAKKyAgICAxODEsIDIyNywgMTI0LCAxLCAyMzAsIDE0OSwgMjI3LCAxMjQsIDEsIDIwMywgNzgsIDIyNywgMTI0LCAxLCAyMTAsIDIyLCAKKyAgICAyMjcsIDEyNCwgMSwgMjA5LCAxMDgsIDIyNywgMTI0LCAxLCAyNDQsIDIxMiwgMjI3LCAxMjQsIDEsIDI0NCwgMSwgMjI3LCAKKyAgICAxMjQsIDEsIDIwMSwgMjAxLCAyMjcsIDEyNCwgMSwgMTg1LCAyMjcsIDEyNCwgMSwgMjE4LCAyMDgsIDIyNywgMTI0LCAxLCAKKyAgICAyNDksIDMyLCAyMjcsIDEyNCwgMSwgMjQ4LCA5OCwgMjI3LCAxMjQsIDEsIDE5MiwgMjI3LCAxMjQsIDEsIDE5OCwgMjI3LCAKKyAgICAxMjQsIDEsIDIxNiwgMjIwLCAyMjcsIDEyNCwgMSwgMjI4LCAxMTMsIDIyNywgMTI0LCAxLCAyMDQsIDExMSwgMjI3LCAxMjQsIAorICAgIDEsIDIxMywgOTAsIDIyNywgMTI0LCAxLCAyMTEsIDE2NCwgMjI3LCAxMjQsIDEsIDIxNSwgMzYsIDIyNywgMTI0LCAxLCAKKyAgICAxNTIsIDIyNywgMTI0LCAxLCAyMzcsIDE4MSwgMjI3LCAxMjQsIDEsIDIwOCwgMTE5LCAyMjcsIDEyNCwgMjIsIDIsIDYzLCAKKyAgICAyMjcsIDEyNCwgMjIsIDIsIDc1LCAyMjcsIDEyNCwgMjIsIDIsIDY4LCAyMjcsIDEyNCwgMjIsIDIsIDI0MSwgMTYxLCAyMjcsIAorICAgIDEyNCwgMjIsIDIsIDI1MSwgNjQsIDIyNywgMTI0LCAyMiwgMiwgMjIwLCAxOCwgMjI3LCAxMjQsIDIyLCAyLCAyNTAsIDM0LCAKKyAgICAyMjcsIDEyNCwgMjIsIDIsIDc0LCAyMjcsIDEyNCwgMjIsIDIsIDc4LCAyMjcsIDEyNCwgMjEwLCAyNTQsIDEsIDE5OCwgCisgICAgMjI3LCAxMjQsIDIxMCwgMjU0LCAxLCAyMTYsIDIyMCwgMjI3LCAxMjQsIDIxMCwgMjU0LCAxLCAyMDQsIDExMSwgMjI3LCAKKyAgICAxMjQsIDUsIDEsIDE3MywgMjI3LCAxMjQsIDUsIDEsIDIyMiwgMjAzLCAyMjcsIDEyNCwgNSwgMSwgMjUwLCAxODAsIDIyNywgCisgICAgMTI0LCA1LCAxLCAyMTAsIDIyLCAyMjcsIDEyNCwgNSwgMSwgMjAxLCAyMDEsIDIyNywgMTI0LCA1LCAxLCAxODUsIDIyNywgCisgICAgMTI0LCA1LCAxLCAxOTIsIDIyNywgMTI0LCA1LCAxLCAyMTYsIDIyMCwgMjI3LCAxMjQsIDUsIDEsIDIyOCwgMTEzLCAyMjcsIAorICAgIDEyNCwgMiwgMjIzLCAyMzEsIDIyNywgMTI0LCAyLCAyMjksIDE4NiwgMjI3LCAxMjQsIDIsIDIxNSwgMzQsIDIyNywgMTI0LCAKKyAgICAyLCAyMjcsIDE4LCAyMjcsIDEyNCwgMjQwLCAyMTIsIDgyLCAyMjcsIDEyNCwgMjE3LCA0NywgODIsIDIyNywgMTI0LCAxNywgCisgICAgMjAyLCA4NCwgMjI3LCAxMjQsIDE3LCAxMDUsIDIyNywgMTI0LCAxNywgMTA4LCAyMjcsIDEyNCwgMTcsIDE0NywgMjI3LCAKKyAgICAxMjQsIDE3LCAxNDksIDIyNywgMTI0LCAxNywgMTcwLCAyMjcsIDEyNCwgMTcsIDE5NSwgMjI3LCAxMjQsIDE3LCAyMTMsIAorICAgIDExMSwgMjI3LCAxMjQsIDE3LCAxOTksIDIyNywgMTI0LCAxNywgMjIyLCA2MywgNDUsIDIyNywgMjM1LCAxLCAxNzMsIDQ1LCAKKyAgICAyMjcsIDIzNSwgMSwgMjAzLCAxODIsIDQ1LCAyMjcsIDIzNSwgMSwgMjIyLCAyMDMsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAKKyAgICAyMCwgNDUsIDIyNywgMjM1LCAxLCAyMTUsIDM2LCA0NSwgMjI3LCAyMzUsIDEsIDE5OCwgNDUsIDIyNywgMjM1LCAxLCAyMTAsIAorICAgIDIyLCA0NSwgMjI3LCAyMzUsIDEsIDIwOSwgMTA4LCA0NSwgMjI3LCAyMzUsIDEsIDIyOCwgMTEzLCA0NSwgMjI3LCAyMzUsIAorICAgIDEsIDE4NSwgNDUsIDIyNywgMjM1LCAxLCAyMTgsIDIwOCwgNDUsIDIyNywgMjM1LCAxLCAxOTIsIDQ1LCAyMjcsIDIzNSwgMSwgCisgICAgMjQwLCAxMDgsIDQ1LCAyMjcsIDIzNSwgMSwgMjA2LCA4NiwgNDUsIDIyNywgMjM1LCAxLCAxNTIsIDQ1LCAyMjcsIDIzNSwgCisgICAgMSwgMjE3LCAxMjYsIDQ1LCAyMjcsIDIzNSwgMSwgMjI5LCAxNDQsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAxMCwgNDUsIAorICAgIDIyNywgMjM1LCAxLCAyMDEsIDIwMSwgNDUsIDIyNywgMjM1LCAxLCA2MywgNDUsIDIyNywgMjM1LCAxLCA3NSwgNDUsIDIyNywgCisgICAgMjM1LCAxLCAyNDEsIDE2MSwgNDUsIDIyNywgMjM1LCAxLCAyNDEsIDE0NywgNDUsIDIyNywgMjM1LCAxLCA2OCwgNDUsIAorICAgIDIyNywgMjM1LCAxLCAyMjAsIDE4LCA0NSwgMjI3LCAyMzUsIDEsIDc4LCA0NSwgMjI3LCAyMzUsIDEsIDIwNywgMjQsIDQ1LCAKKyAgICAyMjcsIDIzNSwgMSwgNzQsIDQ1LCAyMjcsIDIzNSwgMSwgMjUwLCAzMiwgNDUsIDIyNywgMjM1LCAxLCAyNTEsIDY0LCA0NSwgCisgICAgMjI3LCAyMzUsIDEsIDIwOCwgMTU5LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgMTU4LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgCisgICAgMTU3LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgMTU2LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgMTU1LCAyMjIsIDIxNCwgNDUsIAorICAgIDIyNiwgMjMzLCAxLCAxMzgsIDIxNywgMTI2LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIxNywgMTI2LCAKKyAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDE3MywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMDMsIAorICAgIDE4MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMjIsIDIwMywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgCisgICAgMTI0LCAxNzMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjAzLCAxODIsIDIyMiwgMjE0LCA0NSwgMjI2LCAKKyAgICAyMzMsIDEsIDEyNCwgMjIyLCAyMDMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjA4LCAyMCwgMjIyLCAyMTQsIAorICAgIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMTUsIDM2LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDE5OCwgMjIyLCAKKyAgICAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDgsIDIwLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIxNSwgCisgICAgMzYsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMTk4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIAorICAgIDIxMCwgMjIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjA5LCAxMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAKKyAgICAyMzMsIDEsIDEzOCwgMjAxLCAyMDEsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjEwLCAyMiwgMjIyLCAyMTQsIAorICAgIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDksIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDEsIDIwMSwgCisgICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAxODUsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjE4LCAKKyAgICAyMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMTkyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIAorICAgIDE4NSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMTgsIDIwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgCisgICAgMTI0LCAxOTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjQwLCAxMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAKKyAgICAyMzMsIDEsIDEzOCwgMjA2LCA4NiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMjgsIDExMywgMjIyLCAyMTQsIAorICAgIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyNDAsIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDYsIDg2LCAKKyAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIyOCwgMTEzLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIAorICAgIDE1MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyNDQsIDIxMiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgCisgICAgMTM4LCAyNDksIDMyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDE1MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIAorICAgIDIzMywgMSwgMTI0LCAyNDQsIDIxMiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyNDksIDMyLCAyMjIsIDIxNCwgCisgICAgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIyOCwgMTY5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIwMywgMTQ5LCAKKyAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIyOCwgMTY5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIAorICAgIDIwMywgMTQ5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIxMSwgOSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgCisgICAgMSwgMTI0LCAyMTEsIDksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMiwgMjEyLCAyMTYsIDIyMiwgMjE0LCAKKyAgICA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyNTIsIDI1LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjMxLCA4MywgCisgICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDY4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjA2LCAKKyAgICAxNzgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCA3NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIAorICAgIDI1MSwgMTA5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgNzgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAKKyAgICAyLCAyMjAsIDk3LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjA3LCAyNCwgMjIyLCAyMTQsIDQ1LCAyMjYsIAorICAgIDIzMywgMjIsIDIsIDI1MCwgOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDI1MSwgMjM2LCAyMjIsIDIxNCwgCisgICAgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjA2LCAxNzAsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMTksIDE4OCwgCisgICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIyMCwgOTQsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAKKyAgICAyMDcsIDIwLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjMwLCAxOTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIAorICAgIDEsIDQ2LCAyMDYsIDE2NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDIyMiwgMjA1LCAyMjIsIDIxNCwgNDUsIAorICAgIDIyNiwgMjMzLCAxLCA0NiwgMjIzLCAxNjMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDQ2LCAyMjYsIDE4NSwgMjIyLCAKKyAgICAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDIzMCwgNTQsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDQ2LCAyNDUsIAorICAgIDUxLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCA0NiwgMjQ5LCAyNTUsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE0MywgCisgICAgMjI1LCA5MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTQzLCAyMjUsIDkxLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAKKyAgICAxNywgMjAyLCA4NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDEwNSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIAorICAgIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE0NywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE0OSwgCisgICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE3MCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE5NSwgMjIyLCAKKyAgICAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDIxMywgMTExLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTk5LCAyMjIsIAorICAgIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMjIyLCA2MywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTA0LCAxNywgMTA1LCAKKyAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyLCAyMjgsIDk3LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyLCAyMjgsIDk2LCAKKyAgICA4NSwgMTYsIDIxOSwgNTEsIDg1LCAxNiwgMjIzLCAyMTEsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCAxMzAsIDIyOSwgMjIsIAorICAgIDg1LCAxNiwgMjQ4LCAxMzQsIDIyOSwgMjIsIDg1LCAxNiwgMjQ3LCAxNjYsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCA4LCAKKyAgICAyMjksIDIyLCA4NSwgMTYsIDIxOCwgMiwgMjI5LCAyMiwgODUsIDE2LCAyMTgsIDAsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCAKKyAgICA2LCAyMjksIDIyLCA4NSwgMTYsIDIxOCwgNCwgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE2MSwgMjI5LCAyMiwgODUsIDE2LCAKKyAgICAyNDQsIDE1NywgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE1NiwgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE1OSwgMjI5LCAyMiwgCisgICAgODUsIDE2LCAyNDQsIDE1OCwgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE1NSwgMjI5LCAyMiwgODUsIDE2LCAyMDcsIDE2NywgCisgICAgODUsIDE2LCAyMjMsIDIxMSwgMjE1LCAyMjAsIDg1LCAxNiwgMjE4LCAxMzAsIDIxNSwgMjIwLCA4NSwgMTYsIDI0OCwgMTM0LCAKKyAgICAyMTUsIDIyMCwgODUsIDE2LCAyNDcsIDE2NiwgMjE1LCAyMjAsIDg1LCAxNiwgMjE4LCA4LCAyMTUsIDIyMCwgODUsIDE2LCAKKyAgICAyMTgsIDIsIDIxNSwgMjIwLCA4NSwgMTYsIDIxOCwgMCwgMjE1LCAyMjAsIDg1LCAxNiwgMjE4LCA2LCAyMTUsIDIyMCwgODUsIAorICAgIDE2LCAyMTgsIDQsIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgMTYxLCAyMTUsIDIyMCwgODUsIDE2LCAyNDQsIDE1NywgMjE1LCAKKyAgICAyMjAsIDg1LCAxNiwgMjQ0LCAxNTYsIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgMTU5LCAyMTUsIDIyMCwgODUsIDE2LCAyNDQsIAorICAgIDE1OCwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ0LCAxNTUsIDIxNSwgMjIwLCAyNDcsIDE4NiwgMSwgMTczLCAyNDcsIDE4NiwgMSwgCisgICAgMjM5LCA4LCAyNDcsIDE4NiwgMSwgMjIyLCAyMDMsIDI0NywgMTg2LCAxLCAyMjIsIDE0NiwgMjQ3LCAxODYsIDEsIDE4NSwgCisgICAgMjQ3LCAxODYsIDEsIDI0OSwgMzIsIDI0NywgMTg2LCAxLCAxOTIsIDI0NywgMTg2LCAxLCAyMjMsIDI1MCwgMjQ3LCAxODYsIAorICAgIDEsIDIxMCwgMjIsIDI0NywgMTg2LCAxLCAyNDQsIDIxMiwgMjQ3LCAxODYsIDEsIDIwMSwgMjAxLCAyNDcsIDE4NiwgMSwgCisgICAgMjIxLCAxNDcsIDI0NywgMTg2LCAxLCAyNDcsIDkyLCAyNDcsIDE4NiwgMSwgMjMwLCAxODEsIDI0NywgMTg2LCAxLCAyMjEsIAorICAgIDExLCAyNDcsIDE4NiwgMSwgMjIxLCAzLCAyNDcsIDE4NiwgMSwgMTk4LCAyNDcsIDE4NiwgMSwgMjE2LCAyMjAsIDI0NywgCisgICAgMTg2LCAxLCAyMjgsIDExMywgMjQ3LCAxODYsIDEsIDIwNiwgODYsIDI0NywgMTg2LCAxLCAyMTUsIDM2LCAyNDcsIDE4NiwgCisgICAgMSwgNjMsIDI0NywgMTg2LCAxLCAxNTIsIDI0NywgMTg2LCAyMiwgMiwgNzUsIDI0NywgMTg2LCAyMiwgMiwgNjgsIDI0NywgCisgICAgMTg2LCAyMiwgMiwgNzQsIDI0NywgMTg2LCAyMiwgMiwgNzgsIDI0NywgMTg2LCAyMiwgMiwgMjUxLCAxMDksIDI0NywgMTg2LCAKKyAgICAyMTksIDEzNiwgMjQ3LCAxODYsIDI0MSwgODQsIDc2LCAyMTQsIDE2NywgNDUsIDEwNCwgMSwgMTM4LCAxNzMsIDQ1LCAxMDQsIAorICAgIDEsIDEzOCwgMjI5LCAxNDQsIDQ1LCAxMDQsIDEsIDEzOCwgMjI4LCAxNTMsIDQ1LCAxMDQsIDEsIDEyNCwgMTczLCA0NSwgCisgICAgMTA0LCAxLCAxMjQsIDIyOCwgMTUzLCA0NSwgMTA0LCAxLCAxMjQsIDIyOSwgMTQ0LCA0NSwgMTA0LCAxLCAyMjIsIDIwMywgCisgICAgNDUsIDEwNCwgMSwgMTM4LCAyNDcsIDkyLCA0NSwgMTA0LCAxLCAxMzgsIDI0NiwgMTk5LCA0NSwgMTA0LCAxLCAxMjQsIAorICAgIDI0NywgOTIsIDQ1LCAxMDQsIDEsIDEyNCwgMjE1LCAzNiwgNDUsIDEwNCwgMSwgMTI0LCAyNDYsIDE5OSwgNDUsIDEwNCwgMSwgCisgICAgMjIxLCAxMSwgNDUsIDEwNCwgMSwgMjE2LCAxNzEsIDQ1LCAxMDQsIDEsIDEzOCwgMjE2LCAxNjksIDQ1LCAxMDQsIDEsIAorICAgIDI0NCwgMjEyLCA0NSwgMTA0LCAxLCAxMjQsIDIxNiwgMTY5LCA0NSwgMTA0LCAxLCAyMTYsIDE4MCwgNDUsIDEwNCwgMSwgCisgICAgMTM4LCAyMTAsIDIyLCA0NSwgMTA0LCAxLCAxMzgsIDIwOSwgMTA4LCA0NSwgMTA0LCAxLCAxMjQsIDIxMCwgMjIsIDQ1LCAKKyAgICAxMDQsIDEsIDEyNCwgMjA5LCAxMDgsIDQ1LCAxMDQsIDEsIDIwMSwgMjAxLCA0NSwgMTA0LCAxLCAyNDksIDMyLCA0NSwgCisgICAgMTA0LCAxLCAxMzgsIDE4NSwgNDUsIDEwNCwgMSwgMTM4LCAyMTgsIDIwOCwgNDUsIDEwNCwgMSwgMTM4LCAyNDAsIDEwOCwgCisgICAgNDUsIDEwNCwgMSwgMTI0LCAxODUsIDQ1LCAxMDQsIDEsIDEyNCwgMjQwLCAxMDgsIDQ1LCAxMDQsIDEsIDEyNCwgMjE4LCAKKyAgICAyMDgsIDQ1LCAxMDQsIDEsIDE5MiwgNDUsIDEwNCwgMSwgMTI0LCAxOTgsIDQ1LCAxMDQsIDEsIDEzOCwgMTk4LCA0NSwgCisgICAgMTA0LCAxLCAyMTYsIDIyMCwgNDUsIDEwNCwgMSwgMjE1LCAxNDAsIDQ1LCAxMDQsIDEsIDIyOCwgMTEzLCA0NSwgMTA0LCAxLCAKKyAgICAyMjYsIDIzMiwgNDUsIDEwNCwgMSwgMjA0LCAxMTEsIDQ1LCAxMDQsIDEsIDEzOCwgMjEzLCA5MCwgNDUsIDEwNCwgMSwgCisgICAgMTM4LCAyMTEsIDE2NCwgNDUsIDEwNCwgMSwgMTM4LCAyMTUsIDM2LCA0NSwgMTA0LCAxLCAxMzgsIDE1MiwgNDUsIDEwNCwgCisgICAgMSwgMjI3LCA3NywgNDUsIDEwNCwgMSwgNjMsIDQ1LCAxMDQsIDEsIDEyNCwgMTUyLCA0NSwgMTA0LCAxLCA3NSwgNDUsIAorICAgIDEwNCwgMSwgMjMxLCA4MywgNDUsIDEwNCwgMSwgNjgsIDQ1LCAxMDQsIDEsIDIwNiwgMTc4LCA0NSwgMTA0LCAxLCAyNDEsIAorICAgIDE2MSwgNDUsIDEwNCwgMSwgMjIwLCAxOCwgNDUsIDEwNCwgMSwgMjI4LCA5NywgNDUsIDEwNCwgMSwgMjM3LCAyNDksIDIxNSwgCisgICAgMzYsIDQ1LCAxMDQsIDEwOSwgMiwgMTc0LCAyMTYsIDIyMCwgNDUsIDEwNCwgMTA5LCAyLCAxNzQsIDIyOCwgMTEzLCA0NSwgCisgICAgMTA0LCAxMDksIDIsIDIyOCwgMTE0LCAyMDksIDIyOCwgMjI4LCA4NiwgNDUsIDEwNCwgMiwgMjI1LCAxNDEsIDIzMCwgMSwgCisgICAgMjI4LCA4NiwgNDUsIDEwNCwgMTA5LCAyLCA0NiwgMjIyLCAyMDMsIDQ1LCAxMDQsIDEwOSwgMiwgMTI0LCAxODUsIDQ1LCAKKyAgICAxMDQsIDEwOSwgMiwgMTM4LCAyMTYsIDE3MCwgMjE5LCAyNDUsIDEyNCwgMTg1LCA0NSwgMTA0LCAxMDksIDIsIDE5MiwgNDUsIAorICAgIDEwNCwgMTA5LCAyLCAyNDksIDMyLCA0NSwgMTA0LCAxMDksIDIsIDIxNSwgMzYsIDQ1LCAxMDQsIDIsIDIxNSwgMTAsIDQ1LCAKKyAgICAxMDQsIDIyLCAyLCA2MywgNDUsIDEwNCwgMjIsIDIsIDIyNSwgMTQxLCAyMTQsIDIyNSwgNDUsIDEwNCwgMjIsIDIsIDI1MiwgCisgICAgMjUsIDQ1LCAxMDQsIDIyLCAyLCAyMDksIDIzNCwgMjUyLCAyNSwgNDUsIDEwNCwgMjIsIDIsIDc1LCA0NSwgMTA0LCAyMiwgCisgICAgMiwgMjMxLCA4MywgNDUsIDEwNCwgMjIsIDIsIDIwNywgMjQsIDQ1LCAxMDQsIDIyLCAyLCAyMDYsIDE3NywgNDUsIDEwNCwgCisgICAgMjIsIDIsIDY4LCA0NSwgMTA0LCAyMiwgMiwgMjA2LCAxNzgsIDQ1LCAxMDQsIDIyLCAyLCA3OCwgNDUsIDEwNCwgMjIsIDIsIAorICAgIDIyMCwgOTgsIDU2LCA0NSwgMTA0LCAyMiwgMiwgMjE5LCAxODgsIDQ1LCAxMDQsIDIyLCAyLCA3NCwgNDUsIDEwNCwgMjIsIAorICAgIDIsIDI1MSwgMTA5LCA0NSwgMTA0LCAyMiwgMiwgMjIwLCAxOCwgNDUsIDEwNCwgMjIsIDIsIDI1MSwgNjQsIDQ1LCAxMDQsIAorICAgIDIyLCAyLCAxMDQsIDI1MSwgNjQsIDQ1LCAxMDQsIDIyLCAyLCAyMjAsIDk4LCA1NSwgNDUsIDEwNCwgMiwgMjI1LCAxNDEsIAorICAgIDIzMCwgMCwgNDUsIDEwNCwgMiwgMjA4LCAxNjAsIDQ1LCAxMDQsIDIsIDIwOCwgMTU5LCA0NSwgMTA0LCAyLCAyMjksIDEwNSwgCisgICAgMjA4LCAxNTgsIDQ1LCAxMDQsIDIsIDIyOSwgMTA1LCAyMDgsIDE1NywgNDUsIDEwNCwgMiwgMjI5LCAxMDUsIDIwOCwgMTU2LCAKKyAgICA0NSwgMTA0LCAyLCAyMTYsIDIyMSwgMjM3LCAxNTYsIDQ1LCAxMDQsIDIsIDIyNSwgMTQxLCAyMTQsIDI1MywgNDUsIDEwNCwgCisgICAgMiwgMjI5LCAxMDQsIDIyOSwgMjM5LCA0NSwgMTA0LCAzOSwgMjQ1LCAxMTMsIDI0MywgODUsIDQ1LCAxMDQsIDIzNiwgMTA4LCAKKyAgICAxNywgMjAyLCA4NCwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAxMDUsIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMTA4LCA0NSwgCisgICAgMTA0LCAyMzYsIDEwOCwgMTcsIDE0NywgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAxNDksIDQ1LCAxMDQsIDIzNiwgMTA4LCAKKyAgICAxNywgMTcwLCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDE5NSwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAyMTMsIDExMSwgNDUsIAorICAgIDEwNCwgMjM2LCAxMDgsIDE3LCAxOTksIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMjIyLCA2MywgNDUsIDEwNCwgMTA0LCAxNywgCisgICAgMjAyLCA4NCwgNDUsIDEwNCwgMTA0LCAxNywgMTA1LCA0NSwgMTA0LCAxMDQsIDE3LCAxMDgsIDQ1LCAxMDQsIDEwNCwgMTcsIAorICAgIDE0NywgNDUsIDEwNCwgMTA0LCAxNywgMTQ5LCA0NSwgMTA0LCAxMDQsIDE3LCAxNzAsIDQ1LCAxMDQsIDEwNCwgMTcsIDE5NSwgCisgICAgNDUsIDEwNCwgMTA0LCAxNywgMjEzLCAxMTEsIDQ1LCAxMDQsIDEwNCwgMTcsIDE5OSwgNDUsIDEwNCwgMTA0LCAxNywgMjIyLCAKKyAgICA2MywgNDUsIDEwNCwgMiwgMjA0LCAyOSwgNDUsIDEwNCwgMiwgMjA0LCAyOCwgNDUsIDEwNCwgMiwgMjE0LCAyMTIsIDQ1LCAKKyAgICAxMDQsIDIsIDIyOSwgMTc1LCA0NSwgMTA0LCAyLCAyMzYsIDM2LCA0NSwgMTA0LCAyLCAyNDMsIDk5LCA0NSwgMTA0LCAyLCAKKyAgICAyMTYsIDczLCAyMTUsIDE5OCwgMjE2LCAxODAsIDQ1LCAxMDQsIDIsIDIyNSwgMTQxLCAyMDMsIDc5LCA0NSwgMTA0LCAyLCAKKyAgICAyMzAsIDM1LCA0NSwgMTA0LCAyLCAyMzAsIDM0LCA0NSwgMTA0LCAyLCAyMTQsIDIyMCwgNDUsIDEwNCwgMiwgMjE0LCAyMTksIAorICAgIDQ1LCAxMDQsIDIsIDIzNywgOTgsIDQ1LCAxMDQsIDIsIDI0NywgODksIDM5LCAyNDIsIDc1LCAyNDYsIDUzLCAyNTEsIDEzOCwgCisgICAgMzksIDI0MywgMjMwLCAzOSwgMjMxLCAyNywgMzksIDE4MywgNDcsIDM5LCAyMDgsIDcwLCAyNDMsIDg1LCAzOSwgMjAzLCAKKyAgICAxOTUsIDU2LCAzOSwgMjA0LCAyMSwgMjI3LCAxMTUsIDU2LCAzOSwgMTcxLCAxMzEsIDU2LCAzOSwgNTIsIDE3MSwgMTMxLCAKKyAgICA1NiwgMzksIDE1NywgMjQ2LCAyMTksIDIxMSwgMzIsIDU2LCAzOSwgMjExLCAxOCwgMjQ2LCAyMTksIDIxMSwgMzIsIDU2LCAKKyAgICAzOSwgMjE5LCA3OCwgNTUsIDM5LCA1MiwgMjE5LCA3OCwgNTUsIDM5LCAyMTksIDc4LCA1NiwgMzksIDIxOSwgNzgsIDIxOSwgCisgICAgMTk5LCAxMzAsIDIsIDIwNywgOSwgMjE2LCA1MSwgMTMwLCAyLCAyMDcsIDksIDI0NywgNTQsIDEzMCwgMiwgMjQ2LCAyMzQsIAorICAgIDEzMCwgMiwgMjEwLCAxOTEsIDEzMCwgMiwgMjQ4LCA1NiwgMTMwLCAxLCAyNTEsIDQ1LCAxMzAsIDEsIDI1MSwgNDYsIDIwOSwgCisgICAgMTc4LCAxMzAsIDEsIDIzMSwgNzksIDEzMCwgMSwgMjMxLCA4MCwgMjA5LCAxNzgsIDEzMCwgMSwgMjA3LCAxMiwgMTMwLCAxLCAKKyAgICAyMDcsIDEzLCAyMDksIDE3OCwgMTMwLCAxLCAyMTYsIDIyMSwgMjE2LCAxMDMsIDEzMCwgMSwgMjE2LCAyMjEsIDIxNiwgCisgICAgMTA0LCAyMDksIDE3OCwgMTMwLCAxLCAyMjgsIDExNCwgMjI3LCAxOTcsIDEzMCwgMSwgMjI4LCAxMTQsIDIyNywgMTk4LCAKKyAgICAyMDksIDE3OCwgMTMwLCAxLCAyNDEsIDEyNywgMTMwLCAxLCAyNTEsIDYyLCAxMzAsIDEsIDIyMCwgNDksIDEzMCwgMSwgCisgICAgMjIwLCA1MCwgMjA5LCAxNzgsIDEzMCwgMSwgMTczLCAxMzAsIDEsIDIzMCwgNDQsIDIyNSwgMTQ0LCAxMzAsIDEsIDIzOSwgCisgICAgOCwgMTMwLCAxLCAyMzksIDksIDIzOCwgMjUsIDEzMCwgMSwgMjIyLCAyMDMsIDEzMCwgMSwgMjQ3LCA5MiwgMTMwLCAxLCAKKyAgICAyNDcsIDkzLCAyMjgsIDEwMCwgMTMwLCAxLCAyMzAsIDE4MSwgMTMwLCAxLCAyMzAsIDE4MiwgMjMwLCAxNTMsIDEzMCwgMSwgCisgICAgMjIxLCAxMSwgMTMwLCAxLCAyMTAsIDIzLCAyMjcsIDI1MywgMTMwLCAxLCAyMTAsIDIzLCAyMjMsIDIwNiwgMjI1LCAxNDQsIAorICAgIDEzMCwgMSwgMjQ0LCAyMTMsIDIyMywgMjA2LCAyNTEsIDQsIDEzMCwgMSwgMjQ0LCAyMTMsIDIyMywgMjA2LCAyMjUsIDE0NCwgCisgICAgMTMwLCAxLCAyMjMsIDExMSwgMjE2LCAxODMsIDEzMCwgMSwgMjEwLCAyMiwgMTMwLCAxLCAyMTAsIDIzLCAyMDksIDIwMCwgCisgICAgMTMwLCAxLCAyNDQsIDIxMiwgMTMwLCAxLCAyNDQsIDIxMywgMjI1LCAxNjMsIDEzMCwgMSwgMjAxLCAyMDEsIDEzMCwgMSwgCisgICAgMTg1LCAxMzAsIDEsIDIxOSwgMTY5LCAyMjksIDI1MSwgMTMwLCAxLCAyNDksIDMyLCAxMzAsIDEsIDI0OSwgMzMsIDIyOSwgCisgICAgMTg3LCAxMzAsIDEsIDE5MiwgMTMwLCAxLCAxOTgsIDEzMCwgMSwgMjE2LCAyMjAsIDEzMCwgMSwgMjI4LCAxMTMsIDEzMCwgCisgICAgMSwgMjA0LCAxMTEsIDEzMCwgMSwgMjE1LCAzNywgMjE1LCAyMSwgMTMwLCAxLCAyMTUsIDM3LCAyMTQsIDIzMiwgMTMwLCAxLCAKKyAgICAyMTUsIDM2LCAxMzAsIDEsIDE1MiwgMTMwLCAyLCAyMTYsIDk0LCAxMzAsIDIyLCAyLCAyMDksIDE3OCwgMTMwLCAyMiwgMiwgCisgICAgMjA3LCA4LCAxMzAsIDIyLCAyLCAyMDcsIDksIDIxNCwgMjI4LCAxMzAsIDIyLCAyLCAyMTAsIDIyNCwgMTMwLCAyMiwgMiwgCisgICAgMjEwLCAyMjUsIDIzMSwgNzEsIDEzMCwgMjIsIDIsIDIxNiwgMjIxLCAyMTYsIDEwMywgMTMwLCAyMiwgMiwgMjE2LCAyMjEsIAorICAgIDIxNiwgMTA0LCAyMDksIDE3OCwgMTMwLCAyMiwgMiwgMjI4LCAxMTQsIDIyNywgMTk3LCAxMzAsIDIyLCAyLCAyMjgsIDExNCwgCisgICAgMjI3LCAxOTgsIDIwOSwgMTc4LCAxMzAsIDIyLCAyLCAyMDksIDIzNSwgMTMwLCAyMiwgMiwgMjA5LCAyMzYsIDIxNiwgMTAzLCAKKyAgICAxMzAsIDIyLCAyLCAyMDksIDIzNiwgMjA5LCAxNzgsIDEzMCwgMjIsIDIsIDIwOSwgMjM2LCAyMTYsIDEwNCwgMjA5LCAxNzgsIAorICAgIDEzMCwgMjIsIDIsIDIxOCwgMjQ5LCAxMzAsIDIyLCAyLCAyMTgsIDI1MCwgMjA5LCAxNzgsIDEzMCwgMjUxLCAxMTcsIDI1MSwgCisgICAgMTE2LCAxMzAsIDEsIDIzMCwgMjMsIDIxNCwgMjI3LCAxMzAsIDEsIDIyOSwgMTExLCAyMTQsIDIyNywgMTMwLCAxLCAyMDcsIAorICAgIDEwMSwgMjE0LCAyMjcsIDEzMCwgMSwgMjQxLCAxNTUsIDIxNCwgMjI3LCAxMzAsIDEsIDIwNiwgNTYsIDIxNCwgMjI3LCAKKyAgICAxMzAsIDEsIDIwMiwgMTA2LCAyMTQsIDIyNywgMTMwLCAxLCAyNTAsIDUyLCAyMTQsIDIyNywgMTMwLCAxNywgMjAyLCA4NCwgCisgICAgMTMwLCAxNywgMTA1LCAxMzAsIDE3LCAxMDgsIDEzMCwgMTcsIDE0NywgMTMwLCAxNywgMTQ5LCAxMzAsIDE3LCAxNzAsIAorICAgIDEzMCwgMTcsIDE5NSwgMTMwLCAxNywgMjEzLCAxMTEsIDEzMCwgMTcsIDE5OSwgMTMwLCAxNywgMjIyLCA2MywgMTMwLCAKKyAgICAyMTksIDEwNCwgMTMwLCAyMTksIDEzMCwgMTMwLCAyMDQsIDE0LCAxMzAsIDI0NywgMzEsIDIxOSwgMTIzLCAxMzAsIDI0NywgCisgICAgMzEsIDIxMiwgMTM5LCAxMzAsIDI0NywgMzEsIDIxOSwgNzUsIDEzMCwgMjE5LCAxMjksIDEzMCwgMzEsIDE2LCAyNDMsIDkxLCAKKyAgICAxMzAsIDMxLCAxNiwgMjQ0LCAzNCwgMTMwLCAzMSwgMTYsIDI0MiwgMjcsIDEzMCwgMzEsIDE2LCAyNDQsIDE2NCwgMTMwLCAKKyAgICAzMSwgMTYsIDI0NCwgMTY1LCAyMTAsIDE5MSwgMTMwLCAzMSwgMTYsIDI0MywgMTc1LCAxMzAsIDMxLCAxNiwgMjQ0LCAyMDUsIAorICAgIDEzMCwgMzEsIDE2LCAyNDQsIDEwLCAxMzAsIDMxLCAxNiwgMjQ0LCAxODcsIDEzMCwgMzEsIDE2LCAyNDQsIDE2NSwgMjM4LCAKKyAgICAxODQsIDEzMCwgMzEsIDE2LCAzOSwgMjA5LCAxNzEsIDEzMCwgMzEsIDE2LCAzOSwgMjQxLCA4MiwgMTMwLCAzMSwgMTYsIAorICAgIDM5LCAyMjksIDE4MiwgMTMwLCAzMSwgMTYsIDM5LCAyMjksIDE4NCwgMTMwLCAzMSwgMTYsIDM5LCAyMzAsIDE1NywgMTMwLCAKKyAgICAzMSwgMTYsIDM5LCAyMjksIDE4MywgMywgMjMwLCAxNTcsIDEzMCwgMzEsIDE2LCAzOSwgMjI5LCAxODUsIDMsIDIzMCwgCisgICAgMTU3LCAxMzAsIDMxLCAxNiwgMzksIDI0OCwgMTE5LCAxMzAsIDMxLCAxNiwgMzksIDIzOCwgMjksIDEzMCwgMzEsIDE2LCAKKyAgICAyMTYsIDE0LCAxNzEsIDI0MiwgMzcsIDEzMCwgMzEsIDE2LCAyMTYsIDE0LCAxNzEsIDI0NCwgMjAzLCAxMzAsIDMxLCAxNiwgCisgICAgMjE2LCAxNCwgMjQ2LCAxNiwgMjA3LCAxOTUsIDEzMCwgMzEsIDE2LCAyMTYsIDE0LCAyNDYsIDE2LCAyMDksIDI0NCwgMTMwLCAKKyAgICAzMSwgMTYsIDIyNywgMjIwLCAxNzEsIDIxOSwgMTE4LCAxMzAsIDMxLCAxNiwgMjI3LCAyMjAsIDE3MSwgMjE3LCAxNzcsIAorICAgIDEzMCwgMzEsIDE2LCAyMjcsIDIyMCwgMjQ2LCAxNiwgMjE4LCA5NCwgMTMwLCAzMSwgMTYsIDIyNywgMjIwLCAyNDYsIDE2LCAKKyAgICAyMTgsIDgwLCAxMzAsIDMxLCAxNiwgMjI3LCAyMjAsIDE3MSwgMjE4LCAxMTksIDIxMCwgMjEzLCAyLCAyMTksIDEwMSwgCisgICAgMjEwLCAyMTMsIDIsIDIxOSwgMTE0LCAyMTAsIDIxMywgMiwgMjE5LCAxMTAsIDIxMCwgMjEzLCAxLCA2MywgMjEwLCAyMTMsIAorICAgIDEsIDc1LCAyMTAsIDIxMywgMSwgNjgsIDIxMCwgMjEzLCAxLCAyNTEsIDEwOSwgMjEwLCAyMTMsIDEsIDc4LCAyMTAsIDIxMywgCisgICAgMSwgNzQsIDIxMCwgMjEzLCAxLCAyNDAsIDIzOCwgMjEwLCAyMTMsIDEsIDE3MywgMjEwLCAyMTMsIDEsIDIxNywgMTI2LCAKKyAgICAyMTAsIDIxMywgMSwgMjM5LCA4LCAyMTAsIDIxMywgMSwgMjIyLCAyMDMsIDIxMCwgMjEzLCAxLCAyNDcsIDkyLCAyMTAsIAorICAgIDIxMywgMSwgMjMwLCAxODEsIDIxMCwgMjEzLCAxLCAyMDIsIDExNiwgMjEwLCAyMTMsIDEsIDIyMSwgMTEsIDIxMCwgMjEzLCAKKyAgICAxLCAyMTAsIDIyLCAyMTAsIDIxMywgMSwgMjQ0LCAyMTIsIDIxMCwgMjEzLCAxLCAyMDEsIDIwMSwgMjEwLCAyMTMsIDEsIAorICAgIDE4NSwgMjEwLCAyMTMsIDEsIDI0MCwgMTA4LCAyMTAsIDIxMywgMSwgMjA2LCA4NiwgMjEwLCAyMTMsIDEsIDI0OSwgMzIsIAorICAgIDIxMCwgMjEzLCAxLCAxOTIsIDIxMCwgMjEzLCAxLCAxOTgsIDIxMCwgMjEzLCAxLCAyMTYsIDIyMCwgMjEwLCAyMTMsIDEsIAorICAgIDIyOCwgMTEzLCAyMTAsIDIxMywgMSwgMjA0LCAxMTEsIDIxMCwgMjEzLCAxLCAyMTUsIDM2LCAyMTAsIDIxMywgMSwgMjAzLCAKKyAgICAxODIsIDIxMCwgMjEzLCAxLCAxNTIsIDIxMCwgMjEzLCAxMDksIDIsIDIxOSwgMTI3LCAyMTAsIDIxMywgMTA5LCAyLCAyMTksIAorICAgIDEwMywgMjEwLCAyMTMsIDEwOSwgMiwgMjE5LCAxMDAsIDIxMCwgMjEzLCAyMiwgMiwgMjE5LCAxMTcsIDIxMCwgMjEzLCAyMiwgCisgICAgMiwgMjE5LCA5OSwgMjEwLCAyMTMsIDIyLCAyLCAyMTksIDEyMSwgMjEwLCAyMTMsIDIyLCAyLCAyMTksIDEwOSwgMjEwLCAKKyAgICAyMTMsIDIyLCAyLCAyMTksIDEyOCwgMjEwLCAyMTMsIDIyLCAyLCAyMTksIDExOSwgMjEwLCAyMTMsIDIsIDIxOSwgMTMxLCAKKyAgICAyMTAsIDIxMywgMiwgMjA1LCAyMDQsIDIxMCwgMjEzLCAxMDksIDIsIDIxOSwgNjQsIDE5MiwgMjEwLCAyMTMsIDEwOSwgMiwgCisgICAgMjE5LCA2NCwgMjA0LCAxMTEsIDIxMCwgMjEzLCAxLCAyMjksIDE0NCwgMjEwLCAyMTMsIDEsIDIxMCwgMTUwLCAyMTAsIAorICAgIDIxMywgMTcsIDIwMiwgODQsIDIxMCwgMjEzLCAxNywgMTA1LCAyMTAsIDIxMywgMTcsIDEwOCwgMjEwLCAyMTMsIDE3LCAKKyAgICAxNDcsIDIxMCwgMjEzLCAxNywgMTQ5LCAyMTAsIDIxMywgMTcsIDE3MCwgMjEwLCAyMTMsIDE3LCAxOTUsIDIxMCwgMjEzLCAKKyAgICAxNywgMjEzLCAxMTEsIDIxMCwgMjEzLCAxNywgMTk5LCAyMTAsIDIxMywgMTcsIDIyMiwgNjMsIDIxMCwgMjEzLCAyNTAsIAorICAgIDE3LCAyMTAsIDIxMywgMSwgMjE2LCA3NiwgMjEwLCAyMTMsIDEsIDIyNywgMTcxLCAyMTAsIDIxMywgMSwgMjQ4LCA5OCwgCisgICAgMjEwLCAyMTMsIDEsIDQ2LCAyMzAsIDU0LCAyMTAsIDIxMywgMSwgNDYsIDIyNiwgMTg1LCAyNDgsIDIwOCwgMSwgNjMsIAorICAgIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgNjMsIDI0OCwgMjA4LCAxLCAxNTIsIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgMTUyLCAKKyAgICAyNDgsIDIwOCwgMSwgMjI1LCAxMTcsIDE1MiwgMjQ4LCAyMDgsIDEsIDI0OSwgMzIsIDI0OCwgMjA4LCAxLCAyMjksIDIzNiwgCisgICAgMjQ5LCAzMiwgMjQ4LCAyMDgsIDEsIDE4NSwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAxODUsIDI0OCwgMjA4LCAxLCAyMDEsIAorICAgIDIwMSwgMjQ4LCAyMDgsIDEsIDIyNSwgMTE3LCAyMDEsIDIwMSwgMjQ4LCAyMDgsIDEsIDIwNCwgMTExLCAyNDgsIDIwOCwgMSwgCisgICAgMjEyLCAxMzEsIDIwNCwgMTExLCAyNDgsIDIwOCwgMSwgMjE5LCAxNDMsIDIwNCwgMTExLCAyNDgsIDIwOCwgMSwgMjM5LCA4LCAKKyAgICAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDIzOSwgOCwgMjQ4LCAyMDgsIDEsIDIzMCwgMTgxLCAyNDgsIDIwOCwgMSwgMjQ0LCAKKyAgICAyMTIsIDI0OCwgMjA4LCAxLCAyMTYsIDIyMCwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAyMTYsIDIyMCwgMjQ4LCAyMDgsIDEsIAorICAgIDE5MiwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAxOTIsIDI0OCwgMjA4LCAxLCAyMTEsIDIzNiwgMjEwLCAyMiwgMjQ4LCAKKyAgICAyMDgsIDEsIDIyMSwgMTcwLCAyMTAsIDIyLCAyNDgsIDIwOCwgMSwgMjE1LCAzNiwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAKKyAgICAyMTUsIDM2LCAyNDgsIDIwOCwgMSwgMjI1LCAxMTcsIDIxNSwgMzYsIDI0OCwgMjA4LCAxLCAxOTgsIDI0OCwgMjA4LCAxLCAKKyAgICAyMTIsIDEzMSwgMTk4LCAyNDgsIDIwOCwgMSwgMjIyLCAyMDMsIDI0OCwgMjA4LCAxLCAyMjgsIDExMywgMjQ4LCAyMDgsIDEsIAorICAgIDIxMiwgMTMxLCAyMjgsIDExMywgMjQ4LCAyMDgsIDEsIDIyMSwgMTEsIDI0OCwgMjA4LCAxLCAyNDcsIDkyLCAyNDgsIDIwOCwgCisgICAgMSwgMjIzLCAyNSwgMjQ4LCAyMDgsIDEsIDIyNSwgNTQsIDI0OCwgMjA4LCAxLCA3NSwgMjQ4LCAyMDgsIDEsIDY4LCAyNDgsIAorICAgIDIwOCwgMiwgMjA4LCAxNjQsIDI0OCwgMjA4LCAyMiwgMiwgNzQsIDI0OCwgMjA4LCAyMiwgMiwgMjE5LCAxNDMsIDc0LCAKKyAgICAyNDgsIDIwOCwgMjIsIDIsIDI0MSwgMTYxLCAyNDgsIDIwOCwgMjIsIDIsIDc1LCAyNDgsIDIwOCwgMjIsIDIsIDIyOSwgCisgICAgMjM2LCA3NSwgMjQ4LCAyMDgsIDIyLCAyLCA3OCwgMjQ4LCAyMDgsIDIyLCAyLCAyMjksIDIzNiwgNzgsIDI0OCwgMjA4LCAKKyAgICAyMiwgMiwgNjgsIDI0OCwgMjA4LCAyMiwgMiwgMTA2LCAzNSwgMjEyLCAxMzEsIDIxNSwgMzYsIDI0OCwgMjA4LCAxMDksIDIsIAorICAgIDIyMiwgMjA1LCAyNDgsIDIwOCwgMTA5LCAyLCAyMzcsIDE3MSwgMjQ4LCAyMDgsIDIxOSwgMTEyLCAyNDgsIDIwOCwgMjE5LCAKKyAgICAxMDgsIDI0OCwgMjA4LCAxNiwgMjQ4LCA2NCwgMjIzLCAxMTEsIDIyNCwgMjE4LCAyNDgsIDIwOCwgMTYsIDI0OCwgNjQsIAorICAgIDIxOCwgMTIyLCAyNDgsIDIwOCwgMTYsIDI0OCwgNjQsIDIzMCwgNzksIDI0OCwgMjA4LCAxNiwgMjQ4LCA2NCwgMjE5LCAKKyAgICAxMTIsIDIyNywgMTgxLCAxLCAxNzMsIDIyNywgMTgxLCAxLCAyMjksIDQwLCAyMjcsIDE4MSwgMSwgMjI5LCAxNDQsIDIyNywgCisgICAgMTgxLCAxLCAyMzksIDgsIDIyNywgMTgxLCAxLCAyMzgsIDUxLCAyMjcsIDE4MSwgMSwgMjIyLCAyMDMsIDIyNywgMTgxLCAxLCAKKyAgICAyNDcsIDkyLCAyMjcsIDE4MSwgMSwgMjQ2LCAxOTksIDIyNywgMTgxLCAxLCAyMzAsIDE4MSwgMjI3LCAxODEsIDEsIDIyMSwgCisgICAgMTEsIDIyNywgMTgxLCAxLCAyMTAsIDIyLCAyMjcsIDE4MSwgMSwgMjA5LCAxMDgsIDIyNywgMTgxLCAxLCAyNDQsIDIxMiwgCisgICAgMjI3LCAxODEsIDEsIDIwMSwgMjAxLCAyMjcsIDE4MSwgMSwgMTg1LCAyMjcsIDE4MSwgMSwgMjE4LCA5OCwgMjI3LCAxODEsIAorICAgIDEsIDIxOCwgMjA4LCAyMjcsIDE4MSwgMSwgMjQwLCAxMDgsIDIyNywgMTgxLCAxLCAyMzksIDIyNywgMjI3LCAxODEsIDEsIAorICAgIDI0OSwgMzIsIDIyNywgMTgxLCAxLCAyNDgsIDQ0LCAyMjcsIDE4MSwgMSwgMTkyLCAyMjcsIDE4MSwgMSwgMjI0LCA4OSwgCisgICAgMjI3LCAxODEsIDEsIDIwOCwgMjAsIDIyNywgMTgxLCAxLCAyMDgsIDEwLCAyMjcsIDE4MSwgMSwgMjQxLCAyNTUsIDIyNywgCisgICAgMTgxLCAxLCAxOTgsIDIyNywgMTgxLCAxLCAyMTYsIDIyMCwgMjI3LCAxODEsIDEsIDIyOCwgMTEzLCAyMjcsIDE4MSwgMSwgCisgICAgMTUyLCAyMjcsIDE4MSwgMSwgMjM2LCAyMjQsIDIyNywgMTgxLCAxLCAyMDYsIDg2LCAyMjcsIDE4MSwgMSwgMjE1LCAzNiwgCisgICAgMjI3LCAxODEsIDEsIDIxMywgOTAsIDIyNywgMTgxLCAxLCAyMDQsIDExMSwgMjI3LCAxODEsIDEsIDYzLCAyMjcsIDE4MSwgCisgICAgMjEwLCAyNTQsIDEsIDE5OCwgMjI3LCAxODEsIDIxMCwgMjU0LCAxLCAyMTYsIDIyMCwgMjI3LCAxODEsIDIyLCAyLCAyNTIsIAorICAgIDI1LCAyMjcsIDE4MSwgMjIsIDIsIDc1LCAyMjcsIDE4MSwgMjIsIDIsIDc4LCAyMjcsIDE4MSwgMjIsIDIsIDIyMCwgMTgsIAorICAgIDIyNywgMTgxLCAyMiwgMiwgNjgsIDIyNywgMTgxLCAyMiwgMiwgMjA2LCAxNzgsIDIyNywgMTgxLCAyMiwgMiwgNzQsIDIyNywgCisgICAgMTgxLCAxMDksIDIsIDIzMCwgNTQsIDIyNywgMTgxLCAxMDksIDIsIDIyNiwgMTg1LCAyMjcsIDE4MSwgMTA5LCAyLCAxNTksIAorICAgIDIyNywgMTgxLCAxMDksIDIsIDIyMywgMTYzLCAyMjcsIDE4MSwgMTA5LCAyLCAyMTksIDE4NCwgMjI3LCAxODEsIDEwOSwgMiwgCisgICAgMTQ2LCAyMjcsIDE4MSwgMTA5LCAyLCAyMTAsIDY5LCAyMjcsIDE4MSwgMTA5LCAyLCAyMjAsIDI0MSwgMjI3LCAxODEsIAorICAgIDEwOSwgMiwgMjMwLCAwLCAyMjcsIDE4MSwgMiwgMjE2LCAxODEsIDIyNywgMTgxLCAyLCAyMjEsIDUxLCAyMjcsIDE4MSwgCisgICAgMjE3LCAxNzksIDIxMCwgMjAsIDIyNywgMTgxLCAyMTcsIDE3OSwgMjIwLCAyNTIsIDIwOSwgNSwgMjEwLCAyMCwgMjI3LCAKKyAgICAxODEsIDIxNywgMTc5LCAyNDYsIDIwNiwgMjI3LCAxODEsIDIxNywgMTc5LCAyMDgsIDIsIDI0NiwgMjA2LCAyMjcsIDE4MSwgCisgICAgMjE3LCAxNzksIDIwOCwgMSwgMjI3LCAxODEsIDE3LCAyMDIsIDg0LCAyMjcsIDE4MSwgMTcsIDEwNSwgMjI3LCAxODEsIDE3LCAKKyAgICAxMDgsIDIyNywgMTgxLCAxNywgMTQ3LCAyMjcsIDE4MSwgMTcsIDE0OSwgMjI3LCAxODEsIDE3LCAxNzAsIDIyNywgMTgxLCAKKyAgICAxNywgMTk1LCAyMjcsIDE4MSwgMTcsIDIxMywgMTExLCAyMjcsIDE4MSwgMTcsIDE5OSwgMjI3LCAxODEsIDE3LCAyMjIsIAorICAgIDYzLCAyMjcsIDE4MSwgMSwgMjA3LCAyNDEsIDIyNywgMTgxLCAxLCAyMDcsIDIyOSwgMjI3LCAxODEsIDEsIDI0NCwgMTIwLCAKKyAgICAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDIwMiwgODQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTA1LCAyMjAsIDQ3LCAyNDYsIAorICAgIDEzNSwgMTcsIDEwOCwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxNDcsIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTQ5LCAKKyAgICAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDE3MCwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxOTUsIDIyMCwgNDcsIDI0NiwgCisgICAgMTM1LCAxNywgMjEzLCAxMTEsIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTk5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIAorICAgIDIyMiwgNjMsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMjgsIDExMywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MCwgNDksIAorICAgIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTEsIDgxLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUwLCAyMjMsIDIyMCwgNDcsIAorICAgIDI0NiwgMTM1LCAxLCAyNTEsIDM5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjI4LCAxMTIsIDIyMCwgNDcsIDI0NiwgMTM1LCAKKyAgICAxLCAyNTEsIDI0MywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MSwgMjQ0LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUxLCAKKyAgICAyNDIsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTEsIDIzNywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIyNywgMTQ4LCAyMjAsIAorICAgIDQ3LCAyNDYsIDEzNSwgMSwgMjMwLCAyMTUsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMzEsIDg0LCAyMjAsIDQ3LCAyNDYsIAorICAgIDEzNSwgMSwgMjMwLCAyMzYsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMzAsIDIyNCwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIAorICAgIDIyNiwgMjM5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjA3LCAzMSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIwNywgMjksIAorICAgIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMDYsIDIyOSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIwNiwgMTcwLCAyMjAsIDQ3LCAKKyAgICAyNDYsIDEzNSwgMSwgMjI3LCAyMzQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNDEsIDQ2LCAyMjAsIDQ3LCAyNDYsIDEzNSwgCisgICAgMSwgMjQxLCAxNjQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNDEsIDkyLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjQxLCAKKyAgICAyMSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIyNywgNDksIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMTksIDIxOSwgMjIwLCAKKyAgICA0NywgMjQ2LCAxMzUsIDEsIDIyMCwgOTMsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMTksIDIwNiwgMjIwLCA0NywgMjQ2LCAKKyAgICAxMzUsIDEsIDIyMCwgNjAsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMjMsIDI0NywgMjA3LCAyMDYsIDIyMCwgNDcsIDI0NiwgCisgICAgMTM1LCAyMzksIDMsIDIwNywgMjA3LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMjIzLCAyNDUsIDIwNywgMjA3LCAyMjAsIDQ3LCAKKyAgICAyNDYsIDEzNSwgMjE2LCAxMTgsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMTgsIDIwNiwgMjIwLCA0NywgMjQ2LCAxMzUsIDI1MSwgCisgICAgNzIsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMTcsIDE3OSwgMjIzLCAyNDEsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMTcsIDE3OSwgCisgICAgNTIsIDIyMywgMjQxLCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDIxMCwgMTg0LCAyMTAsIDIxMywgMjE3LCAxNzksIAorICAgIDI0OCwgNjQsIDIxOSwgMTEzLCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDIxNywgMTY3LCAyMTAsIDIxMywgMjE3LCAKKyAgICAxNzksIDI0OCwgNjQsIDI0NywgNzcsIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCA2NCwgMjI3LCAxNzIsIDIxNCwgMjI0LCAKKyAgICAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDIzMCwgNDQsIDIxNCwgMjI0LCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgCisgICAgNjQsIDI0NCwgMjEzLCAyMTQsIDIyNCwgMjEwLCAyMTMsIDIxNywgMTc5LCAyNDgsIDY0LCAyNDksIDMzLCAyMTQsIDIyNCwgCisgICAgMjA2LCA1MiwgMTQzLCAyMjksIDIzNCwgMjA2LCA1MiwgMTQzLCAyMTMsIDU4LCAyMDYsIDUyLCAxNDMsIDIxNywgMjQ1LCAKKyAgICAyMDYsIDUyLCAyLCAyMjIsIDc2LCAyMDYsIDUyLCAyLCAyMDMsIDg3LCAyMjQsIDE0NiwgMjEwLCAxNzUsIDIwNiwgNTIsIAorICAgIDE0MywgMjAzLCA4NywgMjUxLCA3NywgMjMxLCAzNiwgMjEwLCAxNzUsIDIwNiwgNTIsIDE0MywgMjAzLCA4NywgMjMxLCAzNiwgCisgICAgMjEwLCAxNzUsIDIwNiwgNTIsIDE0MywgMjAzLCA4NywgMjI5LCAyMjIsIDIzMSwgMzYsIDIxMCwgMTc1LCAyMDYsIDUyLCAKKyAgICAxNDMsIDI0NywgNTUsIDU2LCAyMDYsIDUyLCAxNDMsIDIwMywgODcsIDIyOSwgMjIyLCAyMzEsIDM2LCAyMTAsIDE3NiwgCisgICAgMjE0LCAxOTQsIDIwNiwgNTIsIDE0MywgNTIsIDIxMCwgMTc1LCAyMDYsIDUyLCAxNDMsIDIwOCwgNzAsIDIxMCwgMTc1LCAKKyAgICAyMDYsIDUyLCAxNDMsIDIyOSwgMjIyLCAyNTAsIDE4MiwgMjA2LCA1MiwgMTQzLCA3MCwgNTYsIDIwNiwgNTIsIDE0MywgCisgICAgMTIwLCAxODcsIDU2LCAyMDYsIDUyLCAxNDMsIDEyNiwgMTg3LCA1NiwgMjA2LCA1MiwgMTQzLCAyMTYsIDQsIDIyOSwgMjMzLCAKKyAgICAyMzEsIDM2LCAyMTAsIDE3NSwgMjA2LCA1MiwgMTQzLCAyNTAsIDQ3LCAyMzEsIDM2LCAyMTAsIDE3NSwgMjA2LCA1MiwgMiwgCisgICAgMjA1LCAyMDAsIDIxMCwgMTc1LCAyMDYsIDUyLCAyLCAyMDUsIDIwMCwgMjA3LCAyNiwgMjA2LCA1MiwgMiwgMjE2LCA3MywgCisgICAgMjA1LCAyMDAsIDIwNywgMjYsIDIwNiwgNTIsIDIsIDIwNSwgMjAwLCAyNTAsIDE4MiwgMjA2LCA1MiwgMiwgMjE2LCA3MywgCisgICAgMjA1LCAyMDAsIDI1MCwgMTgyLCAyMDYsIDUyLCAyLCAyMDUsIDIwMCwgMjA3LCAyNywgMywgMjA5LCAyNDgsIDIwNiwgNTIsIAorICAgIDIsIDIwNSwgMjAwLCAyNTAsIDE4MywgMywgMjA5LCAyNDgsIDIwNiwgNTIsIDIsIDI1MCwgMTgxLCAyNTAsIDE5NywgMjA2LCAKKyAgICA1MiwgMiwgMjUwLCAxODEsIDI0OSwgMiwgMjA2LCA1MiwgMiwgMjUwLCAxODEsIDIwNiwgNzcsIDIwNiwgNTIsIDIsIDI1MCwgCisgICAgMTgxLCAyMDYsIDc4LCAzLCAyMDksIDI0OCwgMjA2LCA1MiwgMiwgMjA4LCAyMDEsIDIwNiwgNTIsIDIsIDIzNywgMTUsIAorICAgIDE2MywgMjUwLCAxODAsIDIwNiwgNTIsIDIsIDE2MywgMjUwLCAxODAsIDIwNiwgNTIsIDIsIDIxNSwgMTQ3LCAxNjMsIDI1MCwgCisgICAgMTgwLCAyMDYsIDUyLCAyLCAyNTAsIDE4MSwgMjA3LCAzMywgMjIzLCAyMzIsIDIwNiwgNTIsIDIsIDI1MCwgMTIyLCAyMDYsIAorICAgIDUyLCAyLCAyMTUsIDE5OCwgMjUwLCAxMjIsIDIwNiwgNTIsIDE0MywgMjQ3LCA1NSwgNTUsIDIwNiwgNTIsIDIsIDIzMCwgCisgICAgMTM1LCAyMDYsIDUyLCAyLCAyMDYsIDIyMiwgMjA2LCA1MiwgMTQzLCAyMTUsIDI1MywgNTUsIDIwNiwgNTIsIDE0MywgNTIsIAorICAgIDIxNSwgMjUzLCA1NSwgOCwgMSwgNSwgNiwgNjMsIDgsIDEsIDUsIDYsIDI1MSwgMTA5LCA4LCA1LCAxLCAyMDcsIDE3NCwgCisgICAgMjUxLCAxMDksIDgsIDEsIDUsIDYsIDI0OCwgMjI1LCAyNDksIDI1NSwgOCwgMSwgNSwgNiwgMjQ3LCAxMjUsIDgsIDEsIDUsIAorICAgIDYsIDI0NSwgNTEsIDgsIDEsIDUsIDYsIDI0MCwgMjQzLCA4LCAxLCA1LCA2LCA3NCwgOCwgNSwgMSwgMjA3LCAxNzQsIDE3MSwgCisgICAgNzQsIDgsIDUsIDEsIDIwNywgMTc0LCA3NSwgOCwgMSwgNSwgNiwgMjMwLCAxODQsIDgsIDEsIDUsIDYsIDIzMCwgNTQsIDgsIAorICAgIDEsIDUsIDYsIDIyOCwgMTMxLCAzLCA5NSwgOCwgMSwgNSwgNiwgMjI2LCAxODUsIDgsIDEsIDUsIDYsIDIxNiwgNzMsIDIyMywgCisgICAgMTYzLCA4LCAxLCA1LCA2LCA3OCwgOCwgMSwgNSwgNiwgMTcxLCA3OCwgOCwgNSwgMSwgMjEyLCAxNTQsIDc4LCA4LCA1LCAxLCAKKyAgICAyMTIsIDE1NCwgMTcxLCA3OCwgOCwgNSwgMSwgMjEyLCAxNTQsIDE1OCwgMywgOTUsIDgsIDUsIDEsIDIwNywgMTc0LCAyMjAsIAorICAgIDczLCA4LCAxLCA1LCA2LCAyMTksIDIxNiwgOCwgNSwgMSwgMjA4LCAxNDUsIDE2MiwgNzgsIDgsIDUsIDEsIDI0NywgMjQ4LCAKKyAgICAxNjIsIDc4LCA4LCAxLCA1LCA2LCAyMTksIDE4NCwgOCwgMSwgNSwgNiwgMjE2LCA3MywgMTQ2LCA4LCAxLCA1LCA2LCAyMDcsIAorICAgIDE3NCwgMTQ2LCA4LCAxLCA1LCA2LCAyMTAsIDY5LCA4LCAxLCA1LCA2LCA2OCwgOCwgNSwgMSwgMjEyLCAxNTQsIDY4LCA4LCAKKyAgICA1LCAxLCAyMTIsIDE1NCwgMjQzLCAyMjksIDY4LCA4LCA1LCAxLCAyMTIsIDE1NCwgMjA3LCAxNzQsIDIyNiwgMTg1LCA4LCAKKyAgICAxLCA1LCA2LCAyMDYsIDE2NCwgOCwgMSwgNSwgNiwgMjA0LCAxNDQsIDgsIDEsIDUsIDYsIDIwMiwgMTU5LCA4LCAxLCA1LCAKKyAgICA2LCAyNDAsIDE3NywgOCwgMSwgMjA1LCAxODYsIDIyOCwgMywgMjExLCAyMDAsIDgsIDEsIDI1MSwgNTksIDMwLCAxLCA1LCAKKyAgICA2LCAyMzgsIDIzNSwgMzAsIDEsIDUsIDYsIDIyOCwgMjQsIDMwLCAxLCA1LCA2LCAyMTgsIDE2NywgMzAsIDEsIDUsIDYsIAorICAgIDIxNiwgNTksIDMwLCAxLCA1LCA2LCAyMTcsIDIwMiwgMzYsIDEsIDUsIDYsIDI0MSwgMTIyLCA2NSwgMSwgNiwgNjMsIDY1LCAKKyAgICAxLCA2LCAyNTEsIDEwOSwgNjUsIDEsIDYsIDI0OSwgMjU1LCA2NSwgMSwgNiwgMjQ4LCAyMjUsIDI0OSwgMjU1LCA2NSwgMSwgCisgICAgNiwgMjQ1LCA1MSwgNjUsIDEsIDYsIDc0LCA2NSwgMSwgNiwgMjE2LCA3MywgNzQsIDY1LCAxLCA2LCAyMzksIDc1LCA2NSwgCisgICAgMSwgNiwgMjM3LCAxNzEsIDY1LCAxLCA2LCA3NSwgNjUsIDEsIDYsIDIzMCwgMTg0LCA2NSwgMSwgNiwgMjMwLCA1NCwgNjUsIAorICAgIDEsIDYsIDE1OSwgNjUsIDEsIDYsIDIyNiwgMTg1LCA2NSwgMSwgNiwgMjIzLCAxNjMsIDY1LCAxLCA2LCAyMTYsIDczLCAKKyAgICAyMjMsIDE2MywgNjUsIDEsIDYsIDc4LCA2NSwgMSwgNiwgMjE5LCAyMTYsIDY1LCAxLCA2LCAyMTksIDE4NCwgNjUsIDEsIDYsIAorICAgIDE0NiwgNjUsIDEsIDYsIDIxMCwgNjksIDY1LCAxLCA2LCA2OCwgNjUsIDEsIDYsIDIwNCwgMTQ0LCA2NSwgMSwgNSwgNjMsIAorICAgIDY1LCAxLCA1LCAyMDcsIDE3NCwgNjMsIDY1LCAxLCA1LCAyNTEsIDIsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjUxLCAxMDksIAorICAgIDY1LCAxLCA1LCAyNDksIDI1NSwgNjUsIDEsIDUsIDI0NSwgNTEsIDY1LCAxLCA1LCA3NCwgNjUsIDEsIDUsIDIxNCwgMTkyLCAKKyAgICA2NSwgMSwgNSwgMTcxLCA3NCwgNjUsIDEsIDUsIDIwNywgMTc0LCAxNzEsIDc0LCA2NSwgMSwgNSwgMjM5LCA3NSwgNjUsIDEsIAorICAgIDUsIDIwNywgMTc0LCA3NSwgNjUsIDEsIDUsIDIzMCwgNTQsIDY1LCAxLCA1LCAyMjYsIDE4NSwgNjUsIDEsIDUsIDI0MSwgCisgICAgNzgsIDY1LCAxLCA1LCA3OCwgNjUsIDEsIDUsIDE3MSwgNzgsIDY1LCAxLCA1LCAyMDgsIDE0NSwgMTYyLCA3OCwgNjUsIDEsIAorICAgIDUsIDI0NywgMjQ4LCAxNjIsIDc4LCA2NSwgMSwgNSwgMjE5LCAxODQsIDY1LCAxLCA1LCAyMTAsIDY5LCA2NSwgMSwgNSwgCisgICAgNjgsIDY1LCAxLCA1LCAyMTIsIDE1NCwgNjgsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjI2LCAxODUsIDY1LCAxLCA1LCAyMDYsIAorICAgIDE2NCwgNjUsIDEsIDUsIDI1MSwgNTksIDY1LCAxLCA1LCAyNDgsIDEwNiwgNjUsIDEsIDUsIDMwLCAyMzgsIDIzNSwgNjUsIAorICAgIDEsIDUsIDI0NCwgMzcsIDY1LCAxLCA1LCAzMCwgMjE4LCAxOTIsIDY1LCAxLCA1LCAyNDYsIDE0MiwgOCwgMjEwLCAyNDYsIAorICAgIDUsIDEsIDc1LCA4LCAyMTAsIDI0NiwgNSwgMSwgMTQ2LCA4LCAyMTAsIDI0NiwgNSwgMSwgNjgsIDgsIDIxMCwgMjQ2LCA1LCAKKyAgICAxLCAyMDYsIDE2NCwgMzAsIDIxMCwgMjQ2LCA1LCAxLCAyNDgsIDEwNiwgMzAsIDIxMCwgMjQ2LCA1LCAxLCAyMzgsIDIzNSwgCisgICAgMzAsIDIxMCwgMjQ2LCA1LCAxLCAyMTYsIDU5LCAzMCwgMjEwLCAyNDYsIDUsIDEsIDIxOCwgMTkyLCAzMCwgMjEwLCAyNDYsIAorICAgIDUsIDEsIDI0NiwgMTQyLCA4LCA1LCAxLCAyMDcsIDI0LCA4LCA1LCAxLCA2NiwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgCisgICAgMjQ1LCA1MiwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjQwLCAxNzUsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIAorICAgIDIyNiwgMTg2LCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgCisgICAgMjE5LCAxODUsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIxNywgMSwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgCisgICAgMjE3LCAxLCAzLCAyMzksIDI0MSwgMjUsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDEwMSwgMjA4LCAKKyAgICAyMjcsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAxMDEsIDIwOCwgCisgICAgMjI3LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjM5LCA3NSwgNjUsIDEsIDM2LCAyNDEsIDkyLCA4LCA1LCAxLCAyMzEsIDQsIAorICAgIDIzOSwgNzUsIDgsIDUsIDEsIDIwOSwgMTExLCAzLCAyMTEsIDM2LCA4LCA1LCA2LCAxLCAyMzUsIDIwNiwgMywgOTUsIDgsIAorICAgIDUsIDEsIDIzMCwgMjMxLCAzLCA5NSwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDk1LCA4LCA1LCA2LCAxLCAxMDYsIDMsIDk1LCAKKyAgICA4LCA1LCAxLCAyMDYsIDIxNywgMywgOTUsIDgsIDUsIDEsIDY2LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyNDUsIAorICAgIDUyLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyNDAsIDE3NSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjM5LCAKKyAgICA3NiwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjI4LCAKKyAgICAxMzEsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIyNiwgMTg2LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMjMsIAorICAgIDE2NCwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIxNywgCisgICAgMSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjQxLCA4LCAKKyAgICAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjAzLCAxOTcsIAorICAgIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAzNCwgMywgCisgICAgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyNTEsIDMsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjQ1LCA1MiwgMywgMjM2LCAKKyAgICAxMTYsIDI1LCAyMDksIDI0OCwgOCwgNSwgMSwgMTg4LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDE3MSwgMTg4LCAzLCAKKyAgICAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIxNiwgNzMsIDE3MSwgMTg4LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIxNCwgCisgICAgMTkzLCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDE3MSwgCisgICAgMTU4LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDI0MSwgOCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAxMDYsIDMsIAorICAgIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjQwLCAxNzgsIDMsIDIxNiwgNzksIDExMywgNjUsIDEsIDUsIDIwNywgMTc0LCAKKyAgICAyNTEsIDIsIDY1LCAxLCA1LCAyNDcsIDEyNSwgNjUsIDEsIDUsIDI0NywgMTI2LCAzLCAyNDUsIDk1LCA2NSwgMSwgNSwgCisgICAgMjQwLCAyNDMsIDY1LCAxLCA1LCAyMTYsIDczLCAxNzEsIDc0LCA2NSwgMSwgNSwgMjQwLCAxNzQsIDY1LCAxLCA1LCAyNDMsIAorICAgIDg0LCAyMzAsIDE4NSwgMywgOTUsIDY1LCAxLCA1LCAxMzIsIDIzOSwgNzUsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjM3LCAKKyAgICAxNzEsIDY1LCAxLCA1LCAyMzUsIDIwNiwgMywgOTUsIDY1LCAxLCA1LCAyMzAsIDIzMCwgNjUsIDEsIDUsIDYsIDc1LCA2NSwgCisgICAgMSwgNSwgNiwgMjM1LCAyMDYsIDMsIDk1LCA2NSwgMSwgNSwgMjMwLCAxODUsIDMsIDI0NSwgMTI2LCA2NSwgMSwgNSwgMjI4LCAKKyAgICAxMzEsIDMsIDIxNiwgNzksIDExMywgNjUsIDEsIDUsIDIyOCwgMTMxLCAzLCAyMTksIDE0MiwgMTEzLCA2NSwgMSwgNSwgNiwgCisgICAgMTU5LCA2NSwgMSwgNSwgMjI2LCAxODYsIDMsIDExMywgNjUsIDEsIDUsIDIwNywgMTc0LCAyMjYsIDE4NiwgMywgMTYzLCAKKyAgICAyMjcsIDIxMCwgNjUsIDEsIDUsIDIyMywgMTY0LCAzLCA0OSwgMTEzLCA2NSwgMSwgNSwgMjIzLCAxNjQsIDMsIDIxNiwgNzksIAorICAgIDExMywgNjUsIDEsIDUsIDYsIDIyMywgMTYzLCA2NSwgMSwgNSwgMjQ4LCAyMjUsIDc4LCA2NSwgMSwgNSwgMjE4LCAxOTIsIAorICAgIDY1LCAxLCA1LCAyMTUsIDk0LCAzLCAxMTMsIDY1LCAxLCA1LCAyNDEsIDcsIDY1LCAxLCA1LCAyMTAsIDcwLCAzLCAyMTksIAorICAgIDE0MiwgMTEzLCA2NSwgMSwgNSwgMTA2LCAxNDIsIDY1LCAxLCA1LCAyMDYsIDIxNiwgNjUsIDEsIDUsIDYsIDY4LCA2NSwgMSwgCisgICAgNSwgMjA2LCAxNjUsIDMsIDExMywgNjUsIDEsIDUsIDIwNywgMTc0LCAyMDYsIDE2NCwgNjUsIDEsIDUsIDIwMiwgMTU5LCAKKyAgICA2NSwgMSwgNSwgMjAyLCAxNjAsIDMsIDIxNiwgNzksIDExMywgNjUsIDEsIDUsIDIwMiwgMTYwLCAzLCAyNDUsIDk1LCA2NSwgCisgICAgMSwgNSwgMjQwLCAxNzcsIDY1LCAxLCA1LCAyMDksIDc0LCAzOSwgMjQyLCA4MywgMjM3LCAyNTQsIDI1MSwgMTM4LCAzOSwgCisgICAgMjQyLCA4MywgMjUxLCAxMjYsIDI1MSwgMTM4LCAzOSwgMjEyLCAyNSwgNTYsIDM5LCAyMTAsIDE4MiwgODIsIDM5LCAyMjUsIAorICAgIDE2OSwgMzksIDIzNywgMjUxLCAzOSwgMjI1LCAxNjcsIDM5LCAyNTEsIDEyNCwgMzksIDIzNywgMjUyLCAzOSwgMjUxLCAKKyAgICAxMjUsIDM5LCA4LCA1LCAxLCAyMTcsIDEsIDU2LCAzOSwgMjQ3LCAyMTMsIDM5LCAyMjUsIDE2OCwgMzksIDUyLCAyNDYsIAorICAgIDUzLCA1NSwgMzksIDIyMCwgNjMsIDU1LCAzOSwgMjAyLCAzMCwgNTYsIDM5LCAyMzAsIDIxNiwgNTYsIDM5LCAyMDYsIDIxMSwgCisgICAgNTUsIDM5LCAyMDYsIDE5NCwgNTUsIDM5LCA4LCA1LCAxLCAyMzksIDIxNCwgMTcxLCAzNCwgNTUsIDM5LCA4LCA1LCAxLCAKKyAgICAyNTEsIDEwOSwgMzksIDgsIDUsIDEsIDI1MCwgMTc4LCAzOSwgOCwgNSwgMSwgMjUwLCAxOCwgMzksIDgsIDUsIDEsIDI0NywgCisgICAgMTI2LCAyNDYsIDIzMSwgMzksIDgsIDUsIDEsIDIzMSwgNCwgMjQ1LCA1MSwgMzksIDgsIDUsIDEsIDI0MCwgMjQzLCAzOSwgCisgICAgOCwgNSwgMSwgMjM5LCA3NSwgMzksIDgsIDEsIDUsIDYsIDIzOSwgNzUsIDM5LCA4LCA1LCAxLCAyMzAsIDU0LCAzOSwgOCwgCisgICAgNSwgMSwgMTU5LCAzOSwgOCwgMSwgNSwgNiwgMTU5LCAzOSwgOCwgMSwgNSwgNiwgMjI2LCAxODUsIDM5LCA4LCA1LCAxLCAKKyAgICAyMjMsIDE2MywgMzksIDgsIDEsIDUsIDYsIDIyMywgMTYzLCAzOSwgOCwgMSwgNSwgNiwgMTQ2LCAzOSwgOCwgNSwgMSwgCisgICAgMjE3LCAxLCAyMTUsIDE5MiwgMzksIDgsIDUsIDEsIDE5NCwgMzksIDgsIDUsIDEsIDE2MywgMTk0LCAzOSwgOCwgNSwgMSwgCisgICAgMjAyLCAxNTksIDM5LCA4LCA1LCAxLCAyNTEsIDIsIDM5LCA4LCA1LCAxLCAyNDksIDI1NSwgMzksIDgsIDUsIDEsIDI0OCwgCisgICAgMTA2LCAzOSwgOCwgNSwgMSwgMjE0LCAxOTIsIDM5LCA4LCA1LCAxLCAyNDAsIDE3NCwgMzksIDgsIDUsIDEsIDIyOCwgMTMxLCAKKyAgICAzLCA1MiwgMTAxLCAyMDgsIDIyNywgMzksIDgsIDUsIDEsIDE1OCwgMywgMTU3LCAyNDYsIDIxOSwgOTUsIDM5LCA4LCA1LCAKKyAgICAxLCAyMTksIDE4NCwgMzksIDgsIDUsIDEsIDI0MSwgNywgMzksIDgsIDUsIDEsIDEwNiwgMywgMTU3LCAyNDYsIDIxOSwgOTUsIAorICAgIDM5LCA4LCA1LCAxLCAyMDQsIDE0NCwgMzksIDgsIDUsIDEsIDM0LCAzLCAyNDMsIDIzMSwgMzksIDgsIDUsIDEsIDE1OCwgMywgCisgICAgMjQzLCAyMzEsIDM5LCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMxLCAzOSwgMTEyLCAyMTAsIDQsIDU1LCAzOSwgNTIsIAorICAgIDIzMCwgMjM5LCAyNDcsIDIxNSwgNTYsIDM5LCAyNTEsIDcsIDE1NiwgMjA4LCAxNzMsIDU2LCAzOSwgNDksIDI1MCwgOTUsIAorICAgIDU1LCAzOSwgNTAsIDI1MCwgOTUsIDI1LCAxMjEsIDI1MCwgOTUsIDU2LCA4LCA2LCAxLCAzNCwgMywgMjE1LCAyNTMsIDU2LCAKKyAgICA4LCA1LCAxLCAzNCwgMywgMjE1LCAyNTMsIDU2LCA4LCA2LCAxLCA2NiwgMywgNzAsIDU1LCA4LCA1LCAxLCA2NiwgMywgNzAsIAorICAgIDU1LCA4LCA2LCAxLCA2NiwgMywgNzAsIDU2LCA4LCA1LCAxLCA2NiwgMywgNzAsIDU2LCA4LCA2LCAxLCA2NiwgMywgMjI3LCAKKyAgICAxMTUsIDU2LCA4LCA1LCAxLCA2NiwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyNDcsIDEyNiwgMywgMjQ2LCAyMzIsIAorICAgIDI1LCAxNjUsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAyNDYsIDIzMiwgMjUsIDE2NSwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgCisgICAgNzAsIDU1LCA4LCA1LCAxLCAyNDUsIDUyLCAzLCA3MCwgNTUsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDcwLCA1NiwgOCwgNSwgCisgICAgMSwgMjQ1LCA1MiwgMywgNzAsIDU2LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDI0NSwgCisgICAgNTIsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIAorICAgIDI0NiwgMjMxLCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgMjQ2LCA1MywgCisgICAgNTYsIDgsIDYsIDEsIDE4OCwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTg4LCAzLCAyMjUsIDE3MSwgCisgICAgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDIyNSwgMTcxLCAyNSwgMTY1LCA4LCA1LCAxLCAxODgsIDMsIDIyNSwgCisgICAgMTcxLCAyNSwgMTY1LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgNTMsIDU2LCAKKyAgICA4LCA2LCAxLCAxODgsIDMsIDIwOCwgMjI4LCA1NiwgOCwgNSwgMSwgMTg4LCAzLCAyMDgsIDIyOCwgNTYsIDgsIDYsIDEsIAorICAgIDE4OCwgMywgMjQ2LCAyMzIsIDI1LCAyNDcsIDIxNCwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDIzMiwgMjUsIDI0NywgMjE0LCAKKyAgICA4LCA2LCAxLCAyNDAsIDE3NSwgMywgNzAsIDU1LCA4LCA1LCAxLCAyNDAsIDE3NSwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMzksIAorICAgIDc2LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMjM5LCA3NiwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCA3MCwgCisgICAgNTUsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCA3MCwgNTYsIDgsIDUsIDEsIAorICAgIDIzNywgMTcyLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjM3LCAxNzIsIAorICAgIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyNDYsIAorICAgIDIzMSwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDI0NywgMjE1LCA1NiwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDI0NywgMjE1LCAKKyAgICA1NiwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIwOCwgMjI4LCA1NiwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDIwOCwgMjI4LCAKKyAgICA1NiwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0MywgMjMyLCAyNSwgMTY1LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAKKyAgICAyMzIsIDI1LCAxNjUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDE2NSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMTY1LCA4LCA2LCAKKyAgICAxLCAyMzAsIDU1LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjMwLCA1NSwgMywgCisgICAgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAKKyAgICA3MCwgNTYsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCA3MCwgMjQ4LCAxMjYsIAorICAgIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAKKyAgICAyMjgsIDEzMSwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAKKyAgICAyMjgsIDEzMSwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDYsIDUzLCA1NiwgOCwgNiwgMSwgCisgICAgMjI2LCAxODYsIDMsIDE2NSwgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDE2NSwgOCwgNiwgMSwgMjI2LCAxODYsIDMsIDcwLCAKKyAgICA1NSwgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjI2LCAxODYsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCisgICAgMjI2LCAxODYsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIAorICAgIDcwLCA1NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDcwLCA1NiwgOCwgNiwgCisgICAgMSwgMjIzLCAxNjQsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgCisgICAgMSwgMjIzLCAxNjQsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ2LCA1MywgNTYsIDgsIDYsIDEsIAorICAgIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAxNjUsIDgsIDYsIDEsIAorICAgIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAyNDMsIDIzMSwgOCwgNSwgMSwgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDI0MywgMjMxLCAKKyAgICA4LCA2LCAxLCAxNTgsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgMjI1LCAxNzEsIDI1LCAKKyAgICAyMzcsIDI1MywgOCwgNiwgMSwgMTU4LCAzLCAyMjUsIDE3MSwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyMjUsIDE3MSwgCisgICAgMjUsIDE2NSwgOCwgNiwgMSwgMjE5LCAxODUsIDMsIDE2NSwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDE2NSwgOCwgNiwgMSwgCisgICAgMjE5LCAxODUsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAKKyAgICA3MCwgNTUsIDgsIDUsIDEsIDIxNywgMSwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCisgICAgMjE3LCAxLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIxNywgMSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMjI1LCAxNzAsIDgsIDUsIAorICAgIDEsIDIxNywgMSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDIxNywgMSwgMywgMjI3LCAxMTUsIAorICAgIDU2LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMjE1LCA5NCwgMywgNzAsIDU1LCA4LCA1LCAKKyAgICAxLCAyMTUsIDk0LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjE1LCA5NCwgMywgCisgICAgNzAsIDU2LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyNTEsIDEyNiwgMjUsIDcwLCA1NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgCisgICAgMjUxLCAxMjYsIDI1LCA3MCwgNTUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDI0NywgMzAsIDI1LCA3MCwgNTUsIDgsIDUsIDEsIAorICAgIDIxNSwgOTQsIDMsIDI0NywgMzAsIDI1LCA3MCwgNTUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIAorICAgIDcwLCA1NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgNzAsIDI0OCwgMTI2LCAyNSwgNzAsIDU1LCA4LCA2LCAxLCAyMTAsIDcwLCAKKyAgICAzLCA3MCwgNTUsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjEwLCA3MCwgMywgNzAsIDU2LCA4LCAKKyAgICA1LCAxLCAyMTAsIDcwLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgCisgICAgMjEwLCA3MCwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMjEwLCAKKyAgICA3MCwgMywgMjQ2LCA1MywgNTYsIDgsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDU2LCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgCisgICAgMjMyLCA1NiwgOCwgNiwgMSwgMTA2LCAzLCAyMDgsIDIyOCwgNTYsIDgsIDUsIDEsIDEwNiwgMywgMjA4LCAyMjgsIDU2LCA4LCAKKyAgICA2LCAxLCAxMDYsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAxMDYsIDMsIDI0NiwgNTMsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIAorICAgIDIwOCwgMjI4LCAyNSwgMTY1LCA4LCA1LCAxLCAxMDYsIDMsIDIwOCwgMjI4LCAyNSwgMTY1LCA4LCA2LCAxLCAxMDYsIDMsIAorICAgIDIyNSwgMTcxLCAyNSwgMjQzLCAyMzEsIDgsIDUsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAyNDMsIDIzMSwgOCwgNiwgMSwgCisgICAgMjA2LCAxNjUsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDIwNiwgMTY1LCAKKyAgICAzLCA3MCwgNTYsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCAyMzcsIDI1MywgCisgICAgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgMTY1LCA4LCA1LCAxLCAyMDQsIAorICAgIDE0NSwgMywgMTY1LCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCAyNDMsIAorICAgIDIzMSwgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDcwLCA1NSwgOCwgNiwgMSwgCisgICAgMjA0LCAxNDUsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjAzLCAxOTcsIDMsIAorICAgIDcwLCA1NSwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjAzLCAxOTcsIDMsIDI0MywgMjMxLCA4LCAKKyAgICA1LCAxLCAyMDMsIDE5NywgMywgMjQzLCAyMzEsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDIwMywgCisgICAgMTI1LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ2LCAKKyAgICA1MiwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NiwgOCwgNiwgMSwgCisgICAgMjAyLCAxNjAsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgCisgICAgMjM3LCAxNzIsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDIwNCwgCisgICAgMTQ1LCAzLCAyMTUsIDI1MywgNTUsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyMTUsIDI1MywgNTUsIDgsIDUsIDEsIDM0LCAzLCAKKyAgICA1MCwgMTYyLCAyMTUsIDI1MiwgOCwgNSwgMSwgMTYzLCAyMTUsIDk0LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDE2MywgMjE1LCAKKyAgICA5NCwgMywgMjQzLCAyMjgsIDk1LCA4LCA1LCAxLCAxNjMsIDIxNSwgOTQsIDMsIDEzOCwgOTUsIDgsIDYsIDEsIDIxMywgNTcsIAorICAgIDE5NCwgOCwgNSwgMSwgMjQ0LCAzNywgOCwgNiwgMSwgMzQsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMzQsIDMsIDcwLCA1NiwgOCwgCisgICAgNiwgMSwgMzQsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMzQsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMzQsIDMsIAorICAgIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMTY1LCA4LCA2LCAxLCAzNCwgMywgMjQ2LCAKKyAgICA1MywgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgCisgICAgMjQ2LCA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAyMzYsIDExNiwgNTUsIDgsIAorICAgIDYsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAKKyAgICAyMjcsIDgsIDYsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgNzAsIDU2LCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIAorICAgIDcwLCA1NiwgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMTY1LCA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAKKyAgICAxNjUsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTUsIAorICAgIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAzNCwgMywgCisgICAgMjQ3LCAyMTUsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDIwOCwgMjI3LCA4LCA1LCAKKyAgICAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgNzAsIDU2LCAKKyAgICA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCA3MCwgNTYsIDgsIDYsIDEsIDE4OCwgMywgNzAsIDU2LCA4LCA1LCAxLCAKKyAgICAxODgsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMTg4LCAzLCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDE4OCwgMywgMjM2LCAxMTYsIAorICAgIDU1LCA4LCA2LCAxLCAxODgsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAxODgsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAxODgsIAorICAgIDMsIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAKKyAgICAyNDYsIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAKKyAgICAxODgsIDMsIDI0NiwgNTMsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDIzNiwgCisgICAgMTE2LCA1NSwgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCAKKyAgICA1MywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCA3MCwgNTYsIDgsIDUsIDEsIDE4OCwgMywgCisgICAgMjQ2LCA1MywgMjUsIDcwLCA1NiwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMjM1LCAKKyAgICAyMDYsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIAorICAgIDcwLCA1NiwgOCwgNiwgMSwgMTU4LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDE1OCwgMywgNzAsIDU2LCA4LCA2LCAxLCAxNTgsIAorICAgIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCA1MywgCisgICAgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMTY1LCA4LCA2LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAKKyAgICAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCAKKyAgICA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA2LCAKKyAgICAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAyMjcsIAorICAgIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIDcwLCA1NiwgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgNzAsIAorICAgIDU2LCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDE2NSwgCisgICAgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIAorICAgIDIzNywgMjUzLCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDE1OCwgMywgCisgICAgMjM2LCA1NCwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMjA4LCAyMjcsIDgsIDUsIAorICAgIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCA3MCwgNTYsIAorICAgIDgsIDUsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDcwLCA1NiwgOCwgNiwgMSwgMTA2LCAzLCA3MCwgNTYsIDgsIDUsIDEsIAorICAgIDEwNiwgMywgNzAsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDExNiwgCisgICAgNTUsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDE2NSwgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMTY1LCAKKyAgICA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgCisgICAgMjM3LCAyNTMsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTA2LCAzLCAKKyAgICAyMzYsIDU0LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAyMDgsIDIyNywgOCwgNSwgCisgICAgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDcwLCA1NiwgCisgICAgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgNzAsIDU2LCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMjM3LCAyNTMsIDgsIAorICAgIDUsIDEsIDIwMywgMTI1LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjAzLCAKKyAgICAxMjUsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIAorICAgIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjA4LCAKKyAgICAyMjcsIDgsIDYsIDEsIDIyNCwgMTQ3LCAyMjcsIDc4LCA4LCA1LCAxLCAyMjQsIDE0NywgMjI3LCA3OCwgOCwgNiwgMSwgCisgICAgMjI0LCAxNDcsIDIwNiwgMTY0LCA4LCA1LCAxLCAyMjQsIDE0NywgMjA2LCAxNjQsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCAKKyAgICAyMjcsIDE0LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjI3LCAxNCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTUsIAorICAgIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgCisgICAgNzAsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAKKyAgICAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIAorICAgIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAKKyAgICAyMTgsIDIzOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQxLCAKKyAgICAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDI0NCwgCisgICAgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIAorICAgIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAKKyAgICAyMTgsIDIzOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI0MSwgMzgsIAorICAgIDMsIDIxNywgMTk1LCAzMCwgNSwgMSwgMjQxLCAzOCwgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyMTcsIAorICAgIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAKKyAgICAyNDEsIDM4LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjQxLCAzOCwgMywgMjQ0LCAxNDIsIDI1LCAKKyAgICAyMTksIDE4OSwgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjQ0LCAxNDEsIAorICAgIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyNDQsIAorICAgIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgCisgICAgMjQxLCAzOCwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NSwgMzAsIAorICAgIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgCisgICAgNzAsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIAorICAgIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgCisgICAgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIAorICAgIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyNDAsIAorICAgIDI0OSwgMywgMjQ0LCAxNDEsIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgCisgICAgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIAorICAgIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAyNDAsIAorICAgIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgCisgICAgMjM5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk1LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQxLCAKKyAgICAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIAorICAgIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIAorICAgIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAKKyAgICAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIAorICAgIDIzMCwgMjMxLCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MSwgMzAsIDYsIDEsIDIzMCwgCisgICAgMjMxLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIAorICAgIDcwLCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgCisgICAgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAKKyAgICAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyMTcsIAorICAgIDE5NSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjE3LCAxOTYsIDI1LCAKKyAgICAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNSwgCisgICAgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIAorICAgIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDIyMCwgMzUsIDMsIDI0NCwgMTQxLCAzMCwgNiwgMSwgCisgICAgMjIwLCAzNSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDIsIDI1LCAKKyAgICAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDIyMCwgMzUsIAorICAgIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjE3LCAxOTUsIDMwLCA1LCAxLCAKKyAgICAyMDYsIDIxNywgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgCisgICAgNSwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMTcsIAorICAgIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA1LCAKKyAgICAxLCAyMDYsIDIxNywgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDQsIDE0MiwgCisgICAgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQxLCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIAorICAgIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgCisgICAgNiwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIAorICAgIDE5NSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAKKyAgICAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNywgCisgICAgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIAorICAgIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAKKyAgICAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgCisgICAgMjQ0LCAxNDEsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM3LCAKKyAgICAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAKKyAgICAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgCisgICAgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgCisgICAgMSwgMjUxLCAzLCAzLCAyMDYsIDcwLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MSwgMzgsIAorICAgIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMDYsIAorICAgIDcwLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIwNiwgNzAsIDMwLCAKKyAgICA1LCAxLCAyMzAsIDIzMSwgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyMDYsIDcwLCAzMCwgNSwgMSwgCisgICAgMjIwLCAzNSwgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjA2LCA3MCwgMzAsIDUsIDEsIDIwNiwgMjE3LCAKKyAgICAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTksIAorICAgIDE4OSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgCisgICAgMjQ0LCAxNDIsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAyNSwgCisgICAgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgCisgICAgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIAorICAgIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIAorICAgIDI1LCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjQwLCAKKyAgICAyNSwgMjAyLCAyMjEsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIAorICAgIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MSwgCisgICAgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIDI1LCAyMTcsIDIwOSwgCisgICAgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE5MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAKKyAgICAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTkwLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgCisgICAgMTk2LCAyNSwgMjE4LCAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIAorICAgIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAKKyAgICAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgCisgICAgMjUsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIAorICAgIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAKKyAgICAyMjEsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgCisgICAgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAKKyAgICAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIAorICAgIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgCisgICAgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MSwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIAorICAgIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgCisgICAgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTkwLCAKKyAgICAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDI0MCwgMjUsIDIxNywgCisgICAgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDUsIAorICAgIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgCisgICAgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIAorICAgIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgCisgICAgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgCisgICAgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAKKyAgICAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyNDAsIDI1LCAyMDIsIAorICAgIDIyMSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAKKyAgICAyNDQsIDE0MiwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAyNSwgCisgICAgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIDI1LCAyMTcsIDIwOSwgMzAsIAorICAgIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgCisgICAgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgCisgICAgMTk2LCAyNSwgMjE4LCAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAKKyAgICAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjA1LCAxNjcsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIAorICAgIDIyNSwgMTcwLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIAorICAgIDMsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAKKyAgICAzLCAzLCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDYsIDEsIAorICAgIDI1MSwgMywgMywgMjA1LCAxNjcsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIyNSwgMTcwLCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAKKyAgICAyMDYsIDcwLCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAyMDksIAorICAgIDMwLCAyMjgsIDI1MiwgMzAsIDIxNywgMjA5LCAzMCwgMjE3LCAxOTUsIDMwLCAyMTgsIDIzOSwgMzAsIDI0MywgMjI1LCAyNSwgCisgICAgMjE4LCAyMzksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAKKyAgICAyNDksIDMsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAKKyAgICAxLCAyNDAsIDI0OSwgMywgMjE4LCAyMzksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgCisgICAgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIAorICAgIDI0MCwgMjQ5LCAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjQwLCAKKyAgICAyNDksIDMsIDIxNywgMjA5LCAzMCwgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgCisgICAgMzAsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjA1LCAxNjcsIDMwLCA1LCAxLCAKKyAgICAyMzAsIDIzMSwgMywgMjI1LCAxNzAsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjUsIDI1LCAyMDYsIDcwLCAzMCwgCisgICAgNSwgMSwgMjMwLCAyMzEsIDMsIDI0MywgMjI1LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE4LCAKKyAgICAyMzksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjUsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAKKyAgICAzLCAyMDUsIDE2NywgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMjUsIDE3MCwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMDYsIAorICAgIDcwLCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIxOSwgMTg5LCAzMCwgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgMjQ0LCAKKyAgICAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgCisgICAgMjA1LCAxNjcsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjI1LCAxNzAsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAKKyAgICAyMjUsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI1LCAyNSwgMjE5LCAxODksIDMwLCA1LCAKKyAgICAxLCAyMTYsIDYwLCAzLCAyMTcsIDE5NSwgMzAsIDUsIDEsIDIxNiwgNjAsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjA2LCAKKyAgICAyMTcsIDMsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI1LCAyNSwgMjE4LCAyMzksIDMwLCA2LCAKKyAgICAxLCAyMDYsIDIxNywgMywgMjA1LCAxNjcsIDMwLCA2LCAxLCAyMDYsIDIxNywgMywgMjI1LCAxNzAsIDMwLCA2LCAxLCAyMDYsIAorICAgIDIxNywgMywgMjA2LCA3MCwgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDIxNiwgNjAsIDMsIAorICAgIDI0NCwgMTQxLCAzMCwgMjQzLCAyMjUsIDI1LCAyMDYsIDcwLCAzMCwgMjQzLCAyMjUsIDI1LCAyMTksIDE4OSwgMzAsIDIwNiwgCisgICAgNzAsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAKKyAgICAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIAorICAgIDM3LCAzLCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA2LCAxLCAKKyAgICAyMjAsIDM1LCAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjE5LCAxODksIDMwLCA2LCAxLCAyMjAsIDM3LCAKKyAgICAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE5LCAxODksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIAorICAgIDIwOSwgMzAsIDIxOSwgMTg5LCAzMCwgMjQ0LCAxNDEsIDI0MSwgOTMsIDIxNywgNjIsIDI0MSwgMTA0LCAyMTcsIDYyLCAKKyAgICAyNDEsIDkzLCAyMTEsIDIyOCwgMjQxLCAxMDQsIDIxMSwgMjI4LCAyMDksIDI4LCAyMTEsIDIyOCwgMjM5LCAxNDUsIDIxMSwgCisgICAgMjI4LCAyMTIsIDg2LCAyMTEsIDIyOCwgMjQwLCAxNiwgMjExLCAyMjgsIDIxNywgMTc5LCAyMTEsIDIyOCwgMjA5LCA2MywgCisgICAgMjExLCAyMjgsIDIzNywgMTQ2LCAyMTEsIDIyOCwgMjAyLCA4NSwgMjA0LCAyNCwgMjExLCAyMjgsIDIwMiwgODUsIDIwNCwgCisgICAgMjQsIDIyMSwgMTgzLCAyMDIsIDg1LCAyMDQsIDI0LCAyMzAsIDk2LCAyMjcsIDIxMywgODIsIDIxNiwgNywgODIsIDIzNSwgCisgICAgMjIwLCAyMjEsIDE4NCwgMjM1LCAyMjAsIDI0MCwgMTYsIDI0NCwgMTQ0LCAyNDEsIDkzLCAyNDQsIDE0NCwgMjQxLCAxMDQsIAorICAgIDI0NCwgMTQ0LCAyMzYsIDEwNiwgMTQyLCA1MiwgODAsIDIyNywgMTE0LCA1MiwgMTI0LCAyMjcsIDExNCwgNDksIDIxMiwgCisgICAgMTIwLCAyMTcsIDMxLCA4MiwgNTAsIDIxMiwgMTIwLCAyMTcsIDMxLCA4MiwgMjEyLCAxMjAsIDIyNiwgMjU1LCAyMTcsIDMxLCAKKyAgICA4MiwgMjEyLCAxMjAsIDIzNiwgMjQxLCAyMTcsIDMxLCA4MiwgNDksIDUyLCAyMTcsIDMxLCA4MiwgNTAsIDUyLCAyMTcsIAorICAgIDMxLCA4MiwgNTIsIDIyNiwgMjU1LCAyMTcsIDMxLCA4MiwgNTIsIDIzNiwgMjQxLCAyMTcsIDMxLCA4MiwgMjQ0LCAxOTUsIAorICAgIDUyLCAyNDQsIDE5NSwgMjQ3LCAxNzcsIDIwOCwgODIsIDI0NywgMTc3LCAxMTgsIDcwLCAyMjcsIDIzMiwgMTIwLCA3MCwgCisgICAgMjI3LCAyMzIsIDIzNiwgMTA2LCAyNDEsIDEwOCwgMjM1LCAyMTgsIDIxOCwgNjIsIDIyNywgMTE1LCAyMTMsIDEzMCwgMjE5LCAKKyAgICA4OSwgMjEzLCAxMzAsIDIyNywgMjEzLCAyNDEsIDEwMiwgMjE2LCA3LCAyNDEsIDEwMiwgMjE4LCA0MiwgMjQzLCAxNjUsIAorICAgIDIzOSwgMTU3LCAyMjcsIDIxMywgMjE5LCAxOTYsIDIxNiwgNywgMjE5LCAxOTYsIDIyMywgNzMsIDIyMSwgMTkwLCAyMTEsIAorICAgIDIyOCwgMjE4LCAyNDcsIDIyNCwgMTE2LCA1NCwgMjE4LCAyNDcsIDIwOSwgMTUzLCAyMDksIDM3LCA1NCwgMjE3LCAyMzYsIAorICAgIDUyLCAyMTcsIDIzNiwgMjA4LCA3MCwgMjE3LCAyMzYsIDIxNiwgNzMsIDIxNywgMjM2LCAyMTYsIDczLCA1MiwgMjE3LCAKKyAgICAyMzYsIDIxNiwgNzMsIDIwOCwgNzAsIDIxNywgMjM2LCAyNDcsIDMzLCAyMTIsIDEyMCwgMjI3LCAyMTcsIDI1MCwgMjE4LCAKKyAgICAyMTcsIDMxLCA4MiwgMjEyLCAxMjAsIDIxNiwgMTEsIDI1MCwgMjE4LCAyMTcsIDMxLCA4MiwgMjE2LCAxMzQsIDgyLCA1MiwgCisgICAgMjQwLCAyMTIsIDgyLCAyMzAsIDI0NywgMjE5LCAxOTgsIDIwNiwgMjQzLCAxNjcsIDIwOCwgMjUwLCAyNDcsIDM0LCAyMzEsIAorICAgIDgsIDIxOCwgNjIsIDI1MCwgNTcsIDIzNSwgMjIxLCAyNDcsIDE3NywgMjM5LCAxMzgsIDIxMiwgNTcsIDQ5LCA1MSwgMjQ3LCAKKyAgICAyMjcsIDMsIDIxNywgNDEsIDUwLCA1MSwgMjQ3LCAyMjcsIDMsIDIxNywgNDEsIDUyLCAyMTcsIDQ3LCA4MiwgMjE3LCA0NywgCisgICAgMjQwLCAyMTIsIDgyLCAyNDAsIDIxMiwgMjE3LCA0NywgODIsIDIwOCwgMjAzLCAyLCAyNDAsIDI1MCwgMjE2LCA3MywgMjE4LCAKKyAgICAxMjYsIDU0LCA2MiwgOTYsIDI0NywgMTc3LCA2MiwgODYsIDI0NywgMTc3LCAxMjQsIDI1MCwgNTksIDIxNiwgNzMsIDIxMywgCisgICAgMTQzLCAyNDYsIDE3LCAyMDYsIDIyNCwgMTIwLCAyNTAsIDU4LCAyNTEsIDE4LCAyMDUsIDI0MywgMjQ1LCAyMzEsIDIyNCwgCisgICAgMTAzLCA1NCwgMjEwLCAxNTMsIDI0NCwgMTQ0LCAyMzAsIDIzOSwgMjA2LCAyNDMsIDIzOSwgMTk4LCAyMTcsIDE3OSwgODIsIAorICAgIDEyNiwgNzAsIDIxNywgMTc4LCAyMTcsIDU4LCAyMTcsIDIzNiwgMjM5LCAxNDcsIDcwLCAyMTcsIDE3OCwgMjM5LCAyMzMsIAorICAgIDcwLCAyMTcsIDE3OCwgMTIwLCA3MCwgMjE3LCAxNzgsIDIzOSwgMTQ3LCA3MCwgODIsIDI0MiwgODMsIDI0NSwgMTMwLCAKKyAgICAyMDgsIDgxLCA4MCwgMjM5LCAxNDcsIDI0MywgODMsIDIyNSwgMTAsIDEzLCAyMTEsIDIyOCwgMjAzLCAyMzgsIDIzMCwgOTYsIAorICAgIDIzOSwgMTAwLCAyNTAsIDE1NSwgMjMwLCAyMzcsIDIwOCwgMjE5LCAyMzAsIDIzNywgMjEzLCAxMzAsIDIzMCwgMjM3LCAKKyAgICAyMTgsIDc2LCAyMjcsIDIxMywgMjMwLCAyMDcsIDIxNiwgNywgMjMwLCAyMDcsIDIzOSwgMjQ1LCAyMTEsIDE4LCAyMzAsIAorICAgIDIwNywgMjE4LCA0MiwgMjQzLCAxNjUsIDIzMCwgMjA3LCAyMzEsIDIwLCAyMTAsIDEwMSwgMjEwLCAxNzAsIDI1MSwgMTI4LCAKKyAgICAyMTAsIDEwMSwgMjEwLCAxNzAsIDIzMSwgMjAsIDEwLCAyMzksIDE1OSwgMjEzLCA2MSwgMjUxLCAxMjgsIDEwLCAyMzksIAorICAgIDE1OSwgMjEzLCA2MSwgMjIzLCA2NywgMTcsIDIxMywgNjIsIDIyMSwgMTg2LCAxNywgMjEzLCA2MiwgMjEwLCAxOTksIDIwMiwgCisgICAgODQsIDIxMCwgMTk5LCA4LCA1LCAxLCA3NSwgMjEwLCAxOTksIDE0OSwgMjEwLCAxOTksIDE3MCwgMjEwLCAxOTksIDE5NSwgCisgICAgMjEwLCAxOTksIDIxMywgMTExLCAyMTAsIDE5OSwgMTk5LCAyMTAsIDE5OSwgMjIyLCA2MywgMjEwLCAxOTksIDkxLCA1NCwgCisgICAgMjEwLCAxOTksIDIyNCwgMTAyLCAyMTAsIDE5OSwgMjQxLCAzNSwgNTQsIDIxMCwgMTk5LCA0OSwgMjE5LCA3NiwgMjEwLCAKKyAgICAxOTksIDUwLCAyMTksIDc2LCAyMTAsIDE5OSwgOCwgNSwgMSwgMjIzLCAxNjMsIDIxMCwgMjQ2LCAyMDIsIDg0LCAyMTAsIAorICAgIDI0NiwgMTA1LCAyMTAsIDI0NiwgMTA4LCAyMTAsIDI0NiwgMTQ3LCAyMTAsIDI0NiwgMTQ5LCAyMTAsIDI0NiwgMTcwLCAKKyAgICAyMTAsIDI0NiwgMTk1LCAyMTAsIDI0NiwgMjEzLCAxMTEsIDIxMCwgMjQ2LCAxOTksIDIxMCwgMjQ2LCAyMjIsIDYzLCAyMTAsIAorICAgIDI0NiwgOTEsIDU0LCAyMTAsIDI0NiwgMjI0LCAxMDIsIDIxMCwgMjQ2LCAyNDEsIDM1LCA1NCwgMjEwLCAyNDYsIDQ5LCAKKyAgICAyMTksIDc2LCAyMTAsIDI0NiwgNTAsIDIxOSwgNzYsIDgsIDIxMCwgMjQ2LCA1LCAxLCA2MywgOCwgMjEwLCAyNDYsIDUsIDEsIAorICAgIDc0LCA4LCAyMTAsIDI0NiwgNSwgMSwgNzgsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMDMsIDE5NiwgOCwgMjEwLCAyNDYsIDUsIAorICAgIDEsIDIxNCwgMTkyLCA4LCAyMTAsIDI0NiwgNSwgMSwgMjM3LCAxNzEsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMzAsIDU0LCA4LCAKKyAgICAyMTAsIDI0NiwgNSwgMSwgMTU5LCA4LCAyMTAsIDI0NiwgNSwgMSwgMjI2LCAxODUsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMjMsIAorICAgIDE2MywgOCwgMjEwLCAyNDYsIDUsIDEsIDIxOSwgMTg0LCA4LCAyMTAsIDI0NiwgNSwgMSwgMTk0LCA4LCAyMTAsIDI0NiwgNSwgCisgICAgMSwgMjEwLCA2OSwgMjQwLCAyMjksIDU0LCAyNDUsIDI0MywgNTQsIDI0NSwgMTE1LCA1NCwgMjM5LCAxMjgsIDIzOSwgMTMyLCAKKyAgICA1NCwgMjI3LCA5NCwgNTQsIDIyNCwgMTE3LCA1NCwgMjIzLCA5MCwgNTQsIDIxOCwgMjI0LCA1NCwgMjE1LCAxMjAsIDU0LCAKKyAgICAyMDMsIDI0NiwgNTQsIDIyMiwgMjE0LCAyMTMsIDI5LCA1NCwgMjQzLCA5MiwgNTQsIDI0MCwgMjMwLCA1NCwgMjI5LCA3OSwgCisgICAgNTQsIDIwNywgMTk2LCA1NCwgMjQyLCA2NiwgNTQsIDIzOCwgMTY2LCAyMTksIDIsIDU0LCAyMTgsIDIyMSwgNTQsIDIzNywgCisgICAgMjI1LCA1NCwgMjUwLCAyNCwgNTQsIDIzNiwgMzIsIDU0LCAyNDYsIDIzMywgNTQsIDIyNywgODQsIDIwOCwgMTI1LCA1NCwgCisgICAgMjExLCAyMDksIDU0LCAyMDksIDE1MCwgNTQsIDIzMSwgMzQsIDIxNSwgMTIwLCA1NCwgMjA3LCAxNzcsIDIyNywgOTQsIDU0LCAKKyAgICAyMjEsIDE3MywgMTMxLCA1NCwgMjI1LCAxMjAsIDU0LCAyMTUsIDE0MiwgNTQsIDIyOCwgNCwgNTQsIDM5LCA0OSwgMjM3LCAKKyAgICA4NywgNTUsIDM5LCA1MCwgMjM3LCA4NywgNTUsIDM5LCAxNjMsIDgwLCAyMjcsIDExNSwgMjE5LCAxOTksIDM5LCAyMTIsIAorICAgIDIyOCwgODAsIDIyNywgMTE1LCAyMTksIDE5OSwgMzksIDI1MCwgMTk0LCA1MywgNTUsIDM5LCAyNDYsIDE4LCA1MywgNTUsIAorICAgIDM5LCA0OSwgNTMsIDU1LCAzOSwgNTAsIDUzLCA1NSwgMzksIDIxNSwgMjUzLCAyMTksIDE5OSwgMzksIDI0NiwgMTgsIDIxNSwgCisgICAgMjUzLCAyMTksIDE5OSwgMzksIDI1MCwgMTk0LCAyMTUsIDI1MywgMjE5LCAxOTksIDM5LCAxMjYsIDE4NywgNTUsIDM5LCAKKyAgICAyMzksIDE0NywgMTg3LCA1NSwgMzksIDI0MSwgODgsIDI0NiwgNjEsIDM5LCAyNDEsIDg4LCAyMTEsIDE3NywgMzksIDI0MSwgCisgICAgODgsIDI0MywgMjIxLCAzOSwgMjQxLCA4OCwgMjQ2LCA2MiwgMjQ5LCAyMCwgMzksIDQ5LCA1MCwgNTMsIDU1LCAzOSwgMjQxLCAKKyAgICA4OCwgMjE0LCAxODQsIDM5LCAyNDEsIDg4LCAyMjksIDE0NywgMzksIDI0MSwgODgsIDIwNiwgMjE0LCAyMTgsIDU5LCAyMDgsIAorICAgIDg1LCAzOSwgMjE2LCA3NCwgMjEyLCAxLCAyMTksIDE5OSwgMzksIDUyLCA4MCwgMjExLCAzMiwgMjE5LCAxOTksIDM5LCAKKyAgICAyNTAsIDIwNCwgOTcsIDM5LCAyMDgsIDcwLCAyMDYsIDI0NSwgMzksIDIwNCwgMjcsIDI0NywgMjA4LCA1NSwgMzksIDk2LCAKKyAgICA1MywgMjE5LCAxOTksIDM5LCAxNjMsIDUyLCAyMTIsIDEsIDIxOSwgMTk5LCAzOSwgODYsIDIzNywgODcsIDMsIDE1MCwgCisgICAgMjQyLCA2OCwgMzksIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNjgsIDM5LCA0OSwgNTMsIDU2LCAzOSwgNTAsIDUzLCAKKyAgICA1NiwgMzksIDI1MCwgNjAsIDU1LCAyNTEsIDEzNCwgMjIwLCA2OSwgMjUxLCAxMTgsIDIwOCwgMTczLCAyMDksIDkzLCAyMTAsIAorICAgIDI1NSwgMTY5LCA2LCAyNDcsIDEyNSwgMjQ0LCA1NSwgMjQ2LCAyMjMsIDI0NiwgMjE4LCAyMjcsIDExNSwgOTcsIDI0NywgCisgICAgMzUsIDIyMCwgNjksIDI0NywgODQsIDIwNiwgMjU0LCAyNDAsIDIzMSwgMjQ1LCAyMDAsIDIxNCwgMTgxLCAyNDQsIDU1LCAKKyAgICAyNDAsIDkwLCAxMzIsIDUsIDIzOSwgNzUsIDEzMiwgNiwgMjM3LCAxNzEsIDI0OCwgNDEsIDYsIDIzNywgMTcxLCAxNjksIDYsIAorICAgIDIzNywgMTcxLCAyMTgsIDkzLCAyNDUsIDIwMCwgMjE4LCA5MywgMjQ1LCAyMDEsIDExNSwgMTIwLCAyMTgsIDE2NywgMTMyLCAKKyAgICA2LCA3NSwgMjQ4LCA0MSwgNiwgNzUsIDEzMiwgNiwgMTU5LCAxMzIsIDUsIDE1OSwgMjI4LCAxMzEsIDY2LCAyNDgsIDIzMSwgCisgICAgOTcsIDE2OSwgNiwgMjIzLCAxNjMsIDIyMSwgNDIsIDU0LCAyMTEsIDI0MSwgMjE2LCAxNDYsIDI0NSwgMTY4LCAxMzIsIDYsIAorICAgIDIxOSwgMTg0LCAxNjksIDYsIDIxOSwgMTg0LCAxNjksIDYsIDIxNywgMTM0LCAxMzIsIDYsIDE0NiwgMjQ4LCA0MSwgNiwgCisgICAgMTQ2LCAxNjksIDYsIDE0NiwgMjE3LCAyNDMsIDIwOSwgMjQxLCAyMTYsIDg2LCAyMTMsIDEyMiwgODIsIDIwOSwgMTYyLCAKKyAgICA1NCwgMjA4LCAxMTUsIDEzMSwgNTQsIDIwNiwgMzksIDE2OSwgNiwgMjAyLCAxNTksIDIxOSwgMjE1LCA1NCwgMjIwLCA1OSwgCisgICAgNTQsIDIzMCwgMjM5LCAyMjAsIDU5LCA1NCwgMjQ4LCA0MSwgNiwgMjAyLCAxNTksIDIwNywgMTc0LCAzMCwgNSwgMSwgMjMwLCAKKyAgICAyMzAsIDIyOSwgMTg4LCA1NCwgMjUwLCAyMTMsIDU0LCAxMzIsIDYsIDI0OSwgMjU1LCAyNDgsIDQxLCA2LCAyNDcsIDEyNSwgCisgICAgMjQwLCAyNTUsIDk3LCAxMzIsIDUsIDc0LCAxMzIsIDYsIDc0LCAxMzIsIDYsIDI0MCwgMTc0LCAyMDcsIDE3NCwgNiwgMjQwLCAKKyAgICAxNzQsIDEzMiwgNiwgMjI2LCAxODUsIDEzMiwgNSwgNzgsIDEzNywgOTcsIDI0OCwgMTA5LCA5NywgMjM4LCA2OCwgOTcsIAorICAgIDI0NCwgMTc5LCA5NywgMjMxLCAyNSwgMjExLCAyMzksIDIxNSwgMTk4LCA2LCAyMTcsIDEzNCwgMjQwLCA5MywgNTQsIDE2OSwgCisgICAgNSwgMjE4LCAxNjcsIDE2OSwgNSwgMjM4LCAyMzUsIDE2OSwgNiwgMjM4LCAyMzUsIDE2OSwgNiwgMjE4LCAxNjcsIDE2OSwgCisgICAgMjIzLCAxNjIsIDIxMCwgMjE3LCAyMDcsIDE3NCwgNDEsIDYsIDIzOSwgNzUsIDIwNywgMTc0LCA0MSwgNiwgMTU5LCAyMTYsIAorICAgIDczLCA0MSwgNiwgMTU5LCAyMDcsIDE3NCwgNDEsIDYsIDIwMywgMTI0LCAxNjksIDM3LCA2LCAyNDUsIDUxLCAxNjksIDM3LCAKKyAgICA1LCAyNDUsIDUxLCAxNjksIDM3LCA1LCA3NCwgMTY5LCAzNywgNSwgNzUsIDE2OSwgMzcsIDUsIDIzMCwgMTg0LCAyMTcsIAorICAgIDIxMiwgMjI3LCAxMTQsIDIwNywgMTc0LCAyNTAsIDIzNSwgMjE4LCAyNDcsIDU0LCAyNTEsIDQxLCAyMDcsIDE3NCwgNSwgCisgICAgMjQwLCAxNzQsIDE2LCAzNSwgMjE0LCAyNTIsIDIxMSwgMjM5LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDExOCwgMjEzLCAxMDcsIAorICAgIDIwNCwgMTYxLCAyMzksIDEzOCwgMTE4LCAyMjIsIDU3LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDExOCwgMjA5LCAxNDMsIDIwNCwgCisgICAgMTYxLCAyMzksIDEzOCwgMTE4LCAyMDksIDYwLCAyMDQsIDE2MSwgMjM5LCAxMzgsIDEyMCwgMjA5LCA1NywgMjA0LCAxNjEsIAorICAgIDIzOSwgMTM4LCAxMTgsIDI0MCwgMjEsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTIwLCAyNDAsIDIwLCAyMDQsIDE2MSwgMjM5LCAKKyAgICAxMzgsIDEyNiwgMjQwLCAyMCwgMjA0LCAxNjEsIDIzOSwgMTM4LCAyMzksIDE0NywgMjQwLCAyMCwgMjA0LCAxNjEsIDIzOSwgCisgICAgMTM4LCAxMTgsIDIxMiwgNzgsIDIwNCwgMTYxLCAyMzksIDEzOCwgMjM5LCAyMzMsIDIxMiwgNzYsIDIwNCwgMTYxLCAyMzksIAorICAgIDEzOCwgMTE4LCAyNDEsIDEzOCwgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMjYsIDI0MSwgMTM2LCAyMDQsIDE2MSwgMjM5LCAKKyAgICAxMzgsIDIzOSwgMjMzLCAyNDEsIDEzNiwgMjA0LCAxNjEsIDIzOSwgMTM4LCAyMTMsIDExMiwgMjQxLCAxMzYsIDIzOSwgCisgICAgMTM4LCAyMjEsIDQzLCAxMDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMDgsIDIxNSwgCisgICAgMjEwLCAyMjEsIDQ0LCAxNDcsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNDksIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNzAsIDIxNSwgCisgICAgMjEwLCAyMjEsIDQ0LCAxOTUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMTMsIDExMSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE5OSwgCisgICAgMjE1LCAyMTAsIDIyMSwgNDQsIDIyMiwgNjMsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMDksIDE1MiwgMjE1LCAyMTAsIDIyMSwgCisgICAgNDQsIDI0MSwgMTEyLCAyMTUsIDIxMCwgMjIxLCA0NCwgMjA3LCAxNTQsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE4LCAKKyAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMTE4LCAyMzYsIDExLCAyMTUsIDIxMCwgMjIxLCA0NCwgMjM5LCAyMzMsIDIzNiwgMTEsIAorICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMTgsIDIwOSwgMzYsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMDUsIDUsIDIxNSwgMjEwLCAKKyAgICAyMjEsIDQ0LCAxMDgsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNDcsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNDksIDUsIAorICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNzAsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxOTUsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAKKyAgICAyMTMsIDExMSwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE5OSwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDIyMiwgNjMsIDUsIAorICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMDksIDE1MiwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MSwgMTEyLCA1LCAyMTUsIDIxMCwgCisgICAgMjIxLCA0NCwgMjA3LCAxNTQsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE4LCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgCisgICAgMTE4LCAyMzYsIDExLCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjM5LCAyMzMsIDIzNiwgMTEsIDUsIDIxNSwgMjEwLCAyMjEsIAorICAgIDQ0LCAxMTgsIDIwOSwgMzYsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMTgsIDIwOSwgMzcsIDI0NywgMTI2LCAyNDUsIDUxLCAKKyAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMjM5LCAyMzMsIDIwOSwgMzYsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMDksIDE1MywgMjA5LCAKKyAgICAzNiwgMjE1LCAyMTAsIDIyMSwgNDQsIDIxNiwgNzMsIDExOCwgMjM2LCAxMSwgOCwgNSwgMSwgMjE2LCA3MywgMjQ3LCAxMjUsIAorICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMTIsIDg4LCAyMjcsIDI1NSwgMTgsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE5LCAKKyAgICAyNDEsIDE4MiwgMTgsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE5LCAyMDksIDM2LCAyMTUsIDIxMCwgMjIxLCA0NCwgCisgICAgMTE4LCAyMzYsIDEyLCAyMDksIDM2LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDIwMiwgODUsIDIwOSwgNTcsIDIwNywgMTc0LCAKKyAgICAxNywgMTA4LCAyMDcsIDE3NCwgMTcsIDE0NywgOTYsIDQ3LCAxNzcsIDQ3LCA4NiwgNDcsIDE4MywgNDcsIDQ5LCA1MCwgNDcsIAorICAgIDExMiwgMTIxLCA0NywgMTUzLCAyMDQsIDQ2LCA0NywgMTUzLCAyNDEsIDE3NiwgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgCisgICAgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA0NywgOTYsIDUzLCAzLCA5NSwgODYsIDUzLCAzLCA5NSwgOTYsIDIwNCwgNzYsIDQ3LCAKKyAgICA4NiwgMjA0LCA3NiwgNDcsIDk2LCAxMjAsIDIzNywgNjIsIDQ3LCAxNzcsIDEyMCwgMjM3LCA2MiwgNDcsIDg2LCAxMjAsIAorICAgIDIzNywgNjIsIDQ3LCAxODMsIDEyMCwgMjM3LCA2MiwgNDcsIDk2LCA1MywgMywgMjA5LCAyNDgsIDg2LCA1MywgMywgMjA5LCAKKyAgICAyNDgsIDk2LCA1MywgMjM5LCAxMjAsIDE0MiwgMTc3LCA1MywgMjM5LCAxMjAsIDE0MiwgODYsIDUzLCAyMzksIDEyMCwgCisgICAgMTQyLCAxODMsIDUzLCAyMzksIDEyMCwgMTQyLCAxMTIsIDEyMSwgNTMsIDMsIDI0OCwgMjE4LCA5NiwgNTMsIDMsIDExMywgCisgICAgODYsIDUzLCAzLCAxMTMsIDk2LCA1MywgMywgMjI3LCAxNCwgODYsIDUzLCAzLCAyMjcsIDE0LCA0OSwgNTAsIDIwNCwgNzYsIAorICAgIDQ3LCA0OSwgNTAsIDUzLCAzLCA5NSwgMTgzLCAyMDIsIDMwLCA0NywgMTc3LCA1MywgMywgMjA4LCAyMTEsIDIyNywgMjEyLCAKKyAgICAxNzcsIDUzLCAzLCAyMDgsIDIxMSwgMjE2LCA1LCAxODMsIDUzLCAzLCAyMDgsIDIxMSwgMjI3LCAyMTIsIDE4MywgNTMsIDMsIAorICAgIDIwOCwgMjExLCAyMTYsIDUsIDg2LCA1MywgMywgMjQ1LCAxNjYsIDI0MiwgNjgsIDE4MywgNTMsIDMsIDI0NSwgMTY2LCAKKyAgICAyMjcsIDIxMiwgMjUwLCAxOTQsIDIwOCwgMTQ1LCAyMTMsIDE0NiwgNDcsIDI0NiwgMTgsIDIwOCwgMTQ1LCAyMTMsIDE0NiwgCisgICAgNDcsIDE1MywgMjA0LCA0NiwgNTMsIDIwOCwgMTczLCAxNjMsIDE0MiwgOTYsIDUzLCAyMDgsIDE3MywgMjQ4LCAyMzEsIAorICAgIDExNSwgODYsIDUzLCAyMDgsIDE3MywgMTQyLCAyNTAsIDE5NCwgMTcxLCAyNDYsIDYyLCA0NywgMjQ2LCAxOCwgMTcxLCAKKyAgICAyNDYsIDYyLCA0NywgOTYsIDIzNywgODcsIDMsIDE1MCwgMjA2LCAyMTIsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNjgsIAorICAgIDE3NywgMjM3LCA4NywgMywgMTUwLCAyMTYsIDUsIDE3NywgMjM3LCA4NywgMywgMTUwLCAyMjcsIDIxMiwgODYsIDIzNywgCisgICAgODcsIDMsIDE1MCwgMjA2LCAyMTIsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNjgsIDE4MywgMjM3LCA4NywgMywgMTUwLCAKKyAgICAyMTYsIDUsIDE4MywgMjM3LCA4NywgMywgMTUwLCAyMjcsIDIxMiwgODYsIDUzLCAxMTUsIDk2LCA0NywgMTc3LCA1MywgOTYsIAorICAgIDc2LCAxODMsIDQ3LCA5NiwgNTMsIDExNSwgODYsIDQ3LCA5NiwgMjE5LCAxNDYsIDI1MCwgOTEsIDE3NywgMjE5LCAxNDYsIAorICAgIDI1MCwgOTEsIDg2LCAyMTksIDE0NiwgMjUwLCA5MSwgMTgzLCAyMTksIDE0NiwgMjUwLCA5MSwgOTYsIDIzNywgODcsIDExNSwgCisgICAgODYsIDIzNywgODYsIDg2LCAyMzcsIDg3LCAxMTUsIDk2LCAyMzcsIDg2LCA5NiwgNTIsIDUzLCAzLCA5NSwgNDksIDUwLCAKKyAgICA1MiwgNTMsIDMsIDk1LCA4NiwgNTIsIDUzLCAzLCA5NSwgOTYsIDUyLCA0NywgMTc3LCA1MiwgNDcsIDg2LCA1MiwgNDcsIAorICAgIDE4MywgNTIsIDQ3LCA0OSwgNTAsIDUyLCA0NywgMTEyLCAxMjEsIDUyLCA0NywgMTUzLCAyMDQsIDQ2LCA1MiwgNDcsIDE1MywgCisgICAgMjQxLCAxNzYsIDUyLCA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCA1MiwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA1MiwgNDcsIAorICAgIDk2LCAyMDgsIDcwLCA0NywgODYsIDIwOCwgNzAsIDQ3LCA5NiwgMjExLCAxNzEsIDQ3LCA4NiwgMjExLCAxNzEsIDQ3LCAKKyAgICAxNzcsIDUzLCAzLCA1MiwgOTUsIDE4MywgNTMsIDMsIDUyLCA5NSwgOTYsIDI0NCwgMTQzLCA0NywgMTc3LCAyNDQsIDE0MywgCisgICAgNDcsIDg2LCAyNDQsIDE0MywgNDcsIDE4MywgMjQ0LCAxNDMsIDQ3LCA5NiwgNTMsIDIwOCwgMTczLCAxNDIsIDg2LCA1MywgCisgICAgMjA4LCAxNzMsIDE0MiwgOTYsIDYxLCA0NywgMTc3LCA2MSwgNDcsIDg2LCA2MSwgNDcsIDE4MywgNjEsIDQ3LCAxNzcsIDYxLCAKKyAgICA1MywgMjM5LCAxMjAsIDE0MiwgMTc3LCA2MSwgNTMsIDIyMCwgMzIsIDIxOSwgMjYsIDE3NywgNjEsIDUzLCAyMjAsIDMyLCAKKyAgICAyMTksIDI3LCAzLCAyMzYsIDEwNiwgMTQyLCAxNzcsIDYxLCA1MywgMjIwLCAzMiwgMjE5LCAyNywgMywgODAsIDE0MiwgCisgICAgMTc3LCA2MSwgNTIsIDQ3LCAxNzcsIDYxLCA1MiwgNTMsIDIyMCwgMzIsIDIxOSwgMjYsIDg2LCA2MSwgNTMsIDIzOSwgMTIwLCAKKyAgICAyMDQsIDk5LCAxNTMsIDIwNCwgNDYsIDUzLCAyMDgsIDE3MywgMjQ1LCAxNjUsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNTMsIAorICAgIDIwOCwgMTczLCAyNDUsIDE2NSwgMTEyLCAxMjEsIDYxLCA0NywgNTAsIDUzLCAzLCA1LCAyNDYsIDYxLCAxODMsIDUzLCA5NiwgCisgICAgNzYsIDE3NywgNDcsIDEyNiwgODYsIDI1MCwgOTEsIDk2LCA1MywgMywgODAsIDk1LCA4NiwgNTMsIDMsIDgwLCA5NSwgNDksIAorICAgIDUwLCA1MywgMywgODAsIDk1LCA5NiwgNTMsIDMsIDUyLCA4MCwgOTUsIDg2LCA1MywgMywgNTIsIDgwLCA5NSwgNDksIDUwLCAKKyAgICA1MywgMywgNTIsIDgwLCA5NSwgOTYsIDIyMCwgNiwgNDcsIDg2LCAyMjAsIDYsIDQ3LCA0OSwgNTAsIDIyMCwgNiwgNDcsIAorICAgIDM1LCAyNTEsIDE0LCAyNDUsIDIyOCwgMjE5LCA2OSwgMjQzLCAyMDUsIDIwOSwgODMsIDI0MCwgMjA3LCAyMDksIDgzLCAKKyAgICAyNDMsIDEwNCwgMjIxLCAxNjYsIDI0MCwgMjA4LCAyNDEsIDk0LCAyMTMsIDExNywgMjMxLCAzOCwgMjIzLCAxMDEsIDI0MSwgCisgICAgMTE1LCAyMjAsIDY5LCAyMjEsIDE2NiwgMjUwLCAyMzIsIDI0MSwgMTE1LCAyMjAsIDY5LCA1LCAyNDEsIDExNSwgMjIwLCAKKyAgICA2OSwgMjQ1LCAxOTQsIDI1MCwgODIsIDIyNCwgMjQ0LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDI0NSwgMTk2LCAyNTAsIDgyLCAKKyAgICAyMjQsIDI0NCwgNSwgMjQ1LCAxOTQsIDI1MCwgODIsIDIyNCwgMjQ0LCAyNDEsIDg0LCA3NiwgMjE3LCAyMTQsIDIyMywgCisgICAgMTYyLCAyMTcsIDIyNCwgMjIzLCAxNjIsIDI0NSwgMTcxLCAyMjMsIDE2MiwgMjEwLCAyMTcsIDIyNCwgMTAzLCA1NCwgMjI0LCAKKyAgICAxMDEsIDU0LCA3MCwgMjE4LCA3NiwgMjQzLCAxMzcsIDIxMiwgNTcsIDIxMywgMTE4LCAyMjQsIDEwMiwgMjUwLCA2MCwgCisgICAgMjE5LCAyNTQsIDIxNSwgMjUzLCAyMTksIDI1NCwgMjQ3LCAxNzgsIDIxOSwgMjU0LCA1MSwgMjE1LCAyMDQsIDI0NSwgMTA2LCAKKyAgICAyMTUsIDIwNCwgMjM5LCAxNDAsIDIxNSwgMjA0LCAyMTcsIDIxMCwgMTM1LCAyMzEsIDI3LCA1MCwgMjUwLCAyMTcsIDI1MCwgCisgICAgMjE3LCAyMjUsIDE3LCAyNTAsIDIxNywgMjExLCAyMDgsIDI1MCwgMjE3LCAyNDMsIDEzOSwgMjQzLCAxMDQsIDIyMSwgMTY2LCAKKyAgICAyNDMsIDE0MywgMjE5LCA4MiwgMTM1LCAyMjEsIDE2NiwgMjE5LCA4MiwgMTM1LCAyMjcsIDM3LCAyNTAsIDIyNiwgMjI3LCAKKyAgICAzNywgMjE5LCAyNDQsIDIzMCwgMjQ0LCAyMDYsIDIzNywgMjMxLCAyLCA1MiwgMjMxLCAyLCAyMDgsIDcwLCAyMzEsIDIsIAorICAgIDI0NSwgMTg4LCAyMzEsIDIsIDIxMCwgMTg5LCAyMzEsIDIsIDIwNSwgMTc4LCAyMzEsIDIsIDI0NiwgMTgsIDIzMSwgMiwgCisgICAgMjQ2LCAxOCwgMjQ1LCAxODgsIDIzMSwgMiwgMjUwLCAxOTQsIDI0NSwgMTg4LCAyMzEsIDIsIDIwOSwgODIsIDI0OCwgMTUyLCAKKyAgICAyMTYsIDE2OCwgMjE3LCAyMTEsIDcwLCAyMjQsIDEwMiwgMjQwLCAyMTUsIDIzOCwgMTcyLCAyMTcsIDIxMSwgMjM2LCAxMjEsIAorICAgIDIwOCwgMjI4LCAyMTksIDI1NCwgMjE2LCA3MywgMjA4LCAyMjcsIDIzMCwgMjM5LCAyMjcsIDI0MSwgMTk0LCAyMTIsIDEyMiwgCisgICAgMjA0LCA3NSwgMjAzLCAyMjYsIDIxNywgMjI0LCAyMjEsIDE2NiwgMjA4LCAyMjcsIDIyNCwgMTAzLCAyMDgsIDIyNywgMjUwLCAKKyAgICA1MywgMTU2LCAxMzUsIDIyMSwgMTY2LCAyNTAsIDUzLCAxNTYsIDEzNSwgMjUwLCAxNTEsIDE1NiwgMTM1LCAyNTAsIDE1MSwgCisgICAgMjQ3LCAxNDgsIDIyMSwgMTY2LCAyNTEsIDEyNywgMTU2LCAxMzUsIDIyMiwgMjMyLCAyNTAsIDE1MSwgMjIxLCAxNzUsIAorICAgIDI1MSwgMTI3LCAxNTYsIDEzNSwgMjUxLCA3LCAxNTYsIDEzNSwgMjIxLCAxNjYsIDI1MSwgNywgMTU2LCAxMzUsIDI1MSwgNywgCisgICAgMTU2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIwOCwgNzAsIDIwOCwgMjI3LCAyNTEsIDE1LCAxNTYsIDEzNSwgMjQxLCAzMCwgCisgICAgMTM1LCAyMzgsIDE3MSwgMjQxLCAzMCwgMTM1LCAyNDMsIDIwNiwgMjQ4LCAxMDMsIDI1MCwgMTUzLCAyMDksIDkzLCAyMjcsIAorICAgIDEyMiwgMjM4LCAxNzEsIDE1NiwgMTM1LCAyNTAsIDE1MSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIwOSwgOTMsIDIzMSwgCisgICAgNjUsIDIyMCwgNjksIDIzMSwgNjUsIDc2LCAyMTksIDI0NSwgMjUwLCAxNTEsIDE1NiwgMTM1LCAyNDUsIDI0MywgMjQxLCAKKyAgICAzNCwgMjQxLCAzNSwgMjQ1LCAyNDIsIDIxNSwgMjUzLCAyMzEsIDUwLCAxNTYsIDEzNSwgMjE1LCAyNTMsIDE1NiwgMTM1LCAKKyAgICAyNDUsIDE1OSwgMTM1LCAyNDAsIDI1NCwgMjQxLCAzMywgMTM1LCAyMTEsIDk1LCAyNDEsIDM0LCAyNDQsIDM4LCAxNTYsIAorICAgIDEzNSwgMTU2LCAyMDgsIDE3MywgMjQ3LCAxMzcsIDI0NCwgNTYsIDIyNSwgMTcsIDI0NywgMTM2LCAyMTcsIDQ1LCAxNTYsIAorICAgIDEzNSwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMzUsIDE1NCwgMTM1LCAyMjEsIDE2NiwgMjM1LCAxNTQsIDEzNSwgMjExLCAzOSwgCisgICAgMjQxLCAzMCwgMTM1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMzcsIDI0NywgMjE5LCAyNDUsIDE1NiwgMTM1LCAKKyAgICAyMjcsIDE3OSwgMTE1LCAxNTYsIDEzNSwgMjM3LCAyNDcsIDExNSwgMTU2LCAxMzUsIDIyNywgMTc5LCAyNDcsIDE0OCwgCisgICAgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMzcsIDI0NywgMjQ3LCAxNDgsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjIzLCAyNDAsIAorICAgIDIyNywgMTc4LCAyMjMsIDI0MCwgMjM3LCAyNDYsIDI0OCwgMTAzLCAyMjEsIDE2NiwgMjQxLCAzMCwgMTM1LCAyMjEsIDE2NiwgCisgICAgMjI3LCAxNzgsIDIyMSwgMTY2LCAyMzcsIDI0NiwgMjIyLCAyMzIsIDIyNywgMTc5LCAyMjEsIDE3NSwgMTU2LCAxMzUsIAorICAgIDIyMiwgMjMyLCAyMzcsIDI0NywgMjIxLCAxNzUsIDE1NiwgMTM1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDI0MSwgMzAsIDEzNSwgCisgICAgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyNDEsIDMwLCAxMzUsIDIyMiwgMjMyLCAyMjcsIDE3OSwgMjIxLCAxNzUsIDI0MSwgMzAsIAorICAgIDEzNSwgMjIyLCAyMzIsIDIzNywgMjQ3LCAyMjEsIDE3NSwgMjQxLCAzMCwgMTM1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDIzNywgCisgICAgMjQ2LCAyMzcsIDI0NywgMjE5LCAyNDUsIDIyNywgMTc4LCAyMjIsIDIzMiwgMjI3LCAxNzksIDIyMSwgMTc1LCAyMzcsIAorICAgIDI0NiwgMjIyLCAyMzIsIDIzNywgMjQ3LCAyMjEsIDE3NSwgMjI3LCAxNzgsIDIxNywgMjQ5LCAyMTAsIDIzNiwgMjE3LCAKKyAgICAyNTAsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjEwLCAyMzcsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjE3LCAyNTAsIDIxOSwgCisgICAgMjQ1LCAyNDEsIDMwLCAxMzUsIDIxMCwgMjM3LCAyMTksIDI0NSwgMjQxLCAzMCwgMTM1LCAyNDMsIDEwNCwgMjIxLCAxNjYsIAorICAgIDIxNywgMjUyLCAyNDMsIDEwNCwgMjIxLCAxNjYsIDIxMCwgMjM4LCAyMTAsIDI0NSwgMjIwLCA2OSwgMjEwLCAxOTgsIDIyMCwgCisgICAgNjksIDIyMSwgMTY2LCAzNCwgMjEwLCAyNDUsIDIyMCwgNjksIDIyMSwgMTY2LCAzNCwgMjEwLCAxOTgsIDIyMCwgNjksIAorICAgIDIxMCwgMjQ1LCA3NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMTAsIDE5OCwgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjIyLCAKKyAgICAyMzIsIDM0LCAyMTAsIDI0NSwgNzYsIDIyMSwgMTc1LCAxNTYsIDEzNSwgMjIyLCAyMzIsIDM0LCAyMTAsIDE5OCwgNzYsIAorICAgIDIyMSwgMTc1LCAxNTYsIDEzNSwgMjEwLCAyNDUsIDc2LCAzLCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIxMCwgMTk4LCA3NiwgMywgCisgICAgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMjMsIDIyMSwgMjIzLCAyMjIsIDIyMywgMjIzLCAyMjMsIDIyMiwgMjA2LCAyMzcsIDUxLCAKKyAgICAyMzEsIDY1LCAyMjAsIDY5LCA1MSwgMjE5LCAyMzYsIDIyMCwgNjksIDUxLCAyMzEsIDY1LCA3NiwgMjE5LCAyNDUsIDE1NiwgCisgICAgMTM1LCA1MSwgMjE5LCAyMzYsIDc2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDUxLCAyNDcsIDQ4LCA1MSwgMjQ1LCA5OSwgNDMsIAorICAgIDIxOCwgNzYsIDQzLCAyMjQsIDEwMiwgNDMsIDIwOCwgMjE5LCA0MywgMjQzLCAxMzcsIDIxMiwgNTcsIDQzLCA3MCwgMjE5LCAKKyAgICAyNTQsIDQzLCAyMTUsIDI1MywgMjE5LCAyNTQsIDQzLCAyNTAsIDYwLCAyMTksIDI1NCwgNDMsIDI0MSwgMzQsIDQzLCAyNDQsIAorICAgIDE0NCwgMTAzLCAyMTgsIDc2LCAxMDMsIDIyNCwgMTAyLCAxMDMsIDIwOCwgMjE5LCAxMDMsIDcwLCAyMTksIDI1NCwgNTAsIAorICAgIDIxMCwgMywgNDksIDIxMCwgMywgMTIxLCAyMTAsIDMsIDExMiwgMjEwLCAzLCAyNTAsIDYzLCAyMjQsIDc3LCAyMDgsIDQ5LCAKKyAgICAyMzksIDE2NSwgMjA4LCA3MCwgODAsIDI0OCwgMjMxLCA1MCwgMjA3LCAxNzMsIDUyLCA4MCwgMjQ4LCAyMzEsIDUyLCA1MCwgCisgICAgMjA3LCAxNzMsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjE3LCAyMDUsIDIyMSwgMTY2LCAyMDgsIDQ5LCAyNDMsIDEwNCwgMjIxLCAKKyAgICAxNjYsIDIzOSwgMTY2LCAyMjIsIDIzNCwgNTIsIDgwLCAyNDgsIDIzMSwgNTIsIDUwLCAyMDcsIDE3MywgMjE3LCAyNTAsIAorICAgIDIwNiwgMjQ4LCAyMTYsIDExNywgMjEwLCAyMzcsIDIwNiwgMjQ4LCAyMTYsIDExNywgMjIxLCAxNzIsIDIxMSwgMiwgMjIwLCAKKyAgICA2OSwgMjQ1LCAxOTQsIDI1MCwgODIsIDIyMSwgMTcyLCAyMTEsIDEsIDIyMSwgMTcyLCAyMTEsIDIsIDc2LCAyMTksIDI0NSwgCisgICAgMTU2LCAxMzUsIDI0NSwgMTk0LCAyNTAsIDgyLCAyMjEsIDE3MiwgMjExLCAyLCAyMTksIDI0NSwgMTU2LCAxMzUsIDIxOSwgCisgICAgMjM2LCAyMjAsIDY5LCAyMzEsIDY1LCAyMjAsIDY5LCAyMjMsIDIyOCwgMjM3LCAyNCwgMjQ1LCAyMDUsIDIyNSwgNjksIAorICAgIDIzMCwgMjU1LCAyMDMsIDE1NiwgMjIzLCA4MSwgMjIxLCAxNzQsIDUwLCAyNTAsIDIxOCwgMywgMjUwLCAxMjgsIDUwLCAKKyAgICAyMDgsIDg1LCAyMjMsIDE2MiwgMjI3LCAzNywgMjUwLCAyMjYsIDIyMywgMTYyLCAyMjcsIDM3LCAyMTksIDI0NCwgMjIzLCAKKyAgICAxNjIsIDIzMCwgMjQ0LCAyMjMsIDE2MiwgMjA2LCAyMzcsIDI0MywgMjIyLCAyMTksIDI1NCwgNzAsIDIxOSwgMjU0LCAyMTEsIAorICAgIDk1LCAyMTksIDI1NCwgMjQzLCAxMzcsIDIwOCwgMjE5LCAyNDcsIDIzNCwgNDksIDIyMSwgMTcyLCAyNDAsIDkyLCAyMTMsIAorICAgIDE0MiwgMjE3LCAyMjQsIDUwLCAyMjEsIDE3MiwgMjQwLCA5MiwgMjEzLCAxNDIsIDIxNywgMjI0LCA0OSwgMjEzLCAxNDIsIAorICAgIDIxNywgMjI0LCA1MCwgMjEzLCAxNDIsIDIxNywgMjI0LCAyMTYsIDczLCAyMDgsIDIyOCwgMjQxLCAzNCwgMjQ1LCA5MywgCisgICAgMjI3LCAzNywgMjE5LCAyNDQsIDI0NSwgOTMsIDIyNywgMzcsIDI1MCwgMjI2LCA1MiwgMjEwLCAyNDQsIDUyLCAyMTAsIAorICAgIDE5NywgNTIsIDIzMCwgMjQ0LCA1MiwgMjA2LCAyMzcsIDIxOCwgMTAzLCAxNTYsIDI1LCAyMTksIDgyLCAxMzUsIDIyNywgCisgICAgMTc5LCAzLCAyNDMsIDg1LCAyMzcsIDI0NywgMywgMjQzLCA4NSwgMjA1LCAyNDIsIDIyMywgMjQwLCAyMjcsIDE3OCwgMjA1LCAKKyAgICAyNDIsIDIyMywgMjQwLCAyMzcsIDI0NiwgMjI3LCAxNzksIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMzcsIDI0NiwgCisgICAgMjM3LCAyNDcsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMjcsIDE3OCwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIAorICAgIDIyNywgMTc4LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAyNDYsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAKKyAgICAyMTcsIDI0OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIxMCwgMjM2LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDIxNywgCisgICAgMjUzLCAyMTksIDI0NSwgMjQxLCAzNiwgMjQzLCAxMDQsIDIyMSwgMTY2LCAyMTAsIDIzOSwgMjE5LCAyNDUsIDI0MSwgMzYsIAorICAgIDIyMSwgMTY2LCA1MSwgMjMxLCA2NSwgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjIxLCAxNjYsIDUxLCAyMTksIDIzNiwgCisgICAgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgNTEsIDIzMSwgNjUsIDc2LCAyMTksIDI0NSwgMjIxLCAxNjYsIDE1NiwgMTM1LCAKKyAgICA1MSwgMjE5LCAyMzYsIDc2LCAyMTksIDI0NSwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMjcsIDE3OSwgMjQ3LCAxNDgsIDIyMSwgCisgICAgMTY2LCAyNDEsIDMwLCAxMzUsIDIzNywgMjQ3LCAyNDcsIDE0OCwgMjIxLCAxNjYsIDI0MSwgMzAsIDEzNSwgMjE3LCAyNTAsIAorICAgIDI0NywgMTQ4LCAyMjEsIDE2NiwgMjQxLCAzMCwgMTM1LCAyMTAsIDIzNywgMjQ3LCAxNDgsIDIyMSwgMTY2LCAyNDEsIDMwLCAKKyAgICAxMzUsIDIyMSwgMTY2LCAyMjEsIDE3MiwgMjExLCAyLCAyMjAsIDY5LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDI0NSwgMTk2LCAKKyAgICAyNTAsIDgyLCAyMjEsIDE3MiwgMjExLCAxLCAyMjEsIDE2NiwgMjIxLCAxNzIsIDIxMSwgMiwgNzYsIDIxOSwgMjQ1LCAxNTYsIAorICAgIDEzNSwgMjQzLCAxMDQsIDIyMSwgMTY2LCAyNDUsIDE5NiwgMjUwLCA4MiwgMjIxLCAxNzIsIDIxMSwgMiwgMjE5LCAyNDUsIAorICAgIDI0MSwgMzYsIDgwLCAyNDEsIDEwOCwgMjI0LCAxNDYsIDIzNiwgMTA2LCAyNDEsIDEwOCwgMTEyLCA1MCwgMjQzLCAyMjgsIAorICAgIDI0MSwgMTA4LCAxMjEsIDUwLCAyNDMsIDIyOCwgMjQxLCAxMDgsIDI0MSwgMTE1LCA3NiwgMywgMTYzLCAyMzYsIDEwNiwgCisgICAgOTUsIDI0MSwgMTE1LCA3NiwgMywgODAsIDI0OCwgMjMxLCAyNTAsIDUwLCAyNDEsIDg0LCA3NiwgMjM2LCAxMDYsIDk1LCA1LCAKKyAgICAyNDEsIDExNSwgNzYsIDMsIDgwLCAyNDgsIDIzMSwgMjUwLCA1MCwgMjQxLCA4NCwgNzYsIDIzNiwgMTA2LCA5NSwgMjQxLCAKKyAgICAxMTUsIDc2LCAzLCA3MCwgNTUsIDI0MSwgMTE1LCA3NiwgMywgMjE5LCAyMDMsIDUsIDI0MSwgMTE1LCA3NiwgMywgMjE5LCAKKyAgICAyMDMsIDI0MSwgMTE1LCA3NiwgMywgMjA2LCAyNDYsIDI0MSwgMTE1LCA3NiwgMywgMTIwLCAyMzYsIDEwNiwgMjExLCAxOSwgCisgICAgMjQ1LCAxOTQsIDMsIDE2MywgMjM2LCAxMDYsIDk1LCAyNDUsIDE5NCwgMywgODAsIDI0OCwgMjMxLCAyNTAsIDUwLCAyNDEsIAorICAgIDg0LCA3NiwgMjM2LCAxMDYsIDk1LCA1LCAyNDUsIDE5NCwgMywgODAsIDI0OCwgMjMxLCAyNTAsIDUwLCAyNDEsIDg0LCA3NiwgCisgICAgMjM2LCAxMDYsIDk1LCAyNDUsIDE5NCwgMywgMjE5LCAyMDMsIDUsIDI0NSwgMTk0LCAzLCAyMTksIDIwMywgMjAyLCAxNjAsIAorICAgIDIyMSwgMTY0LCAyNDksIDExLCAyMjQsIDI0MywgMjQzLCAyMjMsIDU0LCAyNDEsIDExNywgNDcsIDIzNiwgMzgsIDExMiwgCisgICAgMjUwLCA5NCwgMTIxLCAyNTAsIDk0LCAyMTcsIDIxOCwgMjE4LCAyMjcsIDIwNCwgNzIsIDIyNywgMTE0LCA0OSwgMjQ2LCAKKyAgICAyMjYsIDUwLCAyNDYsIDIyNiwgNDksIDIzOSwgMjA0LCA1MCwgMjM5LCAyMDQsIDI0NywgMjQ4LCA1MCwgMjQ1LCAxMzIsIAorICAgIDI0NywgMjQ4LCA0OSwgMjQ1LCAxMzIsIDIwOCwgMTQ1LCA1MCwgMjQ1LCAxMzIsIDIwOCwgMTQ1LCA0OSwgMjQ1LCAxMzIsIAorICAgIDIxNiwgNzMsIDIyMSwgMTY2LCA1NCwgNTEsIDIyNiwgMjQ2LCAyNTAsIDEyOCwgMjE0LCAxNTgsIDIxNCwgMTY2LCAyMDksIAorICAgIDE2MiwgMjE2LCAxNDcsIDIxOCwgMzQsIDIzMSwgMzEsIDIwNSwgMjE4LCAyMTEsIDE3NywgMjE4LCA5NywgNzYsIDIzMCwgCisgICAgMjU0LCA1NCwgMjA3LCAxNzQsIDIyMSwgMTY2LCA1NCwgMjA0LCA4MiwgMjM2LCA0MCwgMjA4LCAxNDUsIDQ5LCAyNDUsIAorICAgIDE2NSwgMjA4LCAxNDUsIDUwLCAyNDUsIDE2NSwgMjQ3LCAyNDgsIDQ5LCAyNDUsIDE2NSwgMjQ3LCAyNDgsIDUwLCAyNDUsIAorICAgIDE2NSwgMjA4LCAxNDUsIDE2MiwgMjMxLCAyLCAyNDcsIDI0OCwgMTYyLCAyMzEsIDIsIDIzOSwgMTE1LCAyMTIsIDMxLCAKKyAgICAxMTIsIDI1MCwgOTUsIDI0OCwgMTA0LCAxMjAsIDIzNiwgMTA2LCAyNDgsIDIyMCwgMjE5LCAyNDcsIDIyOSwgMTUxLCAyNDEsIAorICAgIDI2LCAyMDgsIDE3MywgMjA5LCA5MywgMjE2LCAxNiwgMjAzLCAxOTcsIDIzMSwgNTAsIDM0LCAyMTYsIDE0NCwgMjQ3LCAKKyAgICAyMzMsIDIyOSwgMTQ5LCAyMjcsIDIxNywgMjUwLCAyMTgsIDE1NSwgMjE2LCAxMSwgMjUwLCAyMTgsIDE1NSwgMjQxLCAyNiwgCisgICAgMjA4LCAxNzMsIDIwOSwgOTMsIDIyNywgMjIyLCAyNDgsIDExNSwgMjE1LCAyNTIsIDI0NSwgNjEsIDI1MSwgMTUsIDI1MCwgCisgICAgMTAzLCAyMTAsIDEwMCwgMjA4LCAxMzAsIDIxNSwgMTI1LCAyNDMsIDE4NSwgMjE5LCAyMzcsIDI0NSwgMjA5LCAyMDksIAorICAgIDIyMCwgMjEyLCA0NCwgMjQ1LCAxNTUsIDI0NSwgMTU0LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIzNSwgMjAzLCAyNTAsIAorICAgIDE2OSwgMjM5LCA5OCwgMTYsIDIxMSwgMTY5LCAyMTcsIDYyLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0MSwgCisgICAgMzYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQzLCAxNDMsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAKKyAgICA2MywgMjQzLCAyMjEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIAorICAgIDE2LCAyMTcsIDYzLCAyNDYsIDYxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDIxMSwgNjksIDI1MCwgMTY5LCAKKyAgICAyMzksIDk4LCAxNiwgMjQ2LCA2MiwgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTIsIDU4LCAxNDIsIDI1MCwgCisgICAgMTY5LCAyMzksIDk4LCAxNiwgMjQ5LCAyMSwgMTQyLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDIxMiwgNTcsIAorICAgIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQ5LCAyMCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAKKyAgICAyMjcsIDE3OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyMzcsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIAorICAgIDE2LCA5NiwgMjA2LCA3NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCA4NiwgMjA2LCA3NiwgMjUwLCAxNjksIDIzOSwgOTgsIAorICAgIDE2LCAyMTcsIDYzLCA5NiwgNDcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgODYsIDQ3LCAyNTAsIDE2OSwgCisgICAgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDI0OSwgMjAsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTIxLCAyMTAsIDQsIDIwNiwgCisgICAgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NCwgMzgsIDIxMSwgNjksIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAKKyAgICA2MywgMTIxLCAyNDcsIDMzLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0NCwgMzcsIDI1MCwgMTY5LCAyMzksIAorICAgIDk4LCAxNiwgMTIxLCAyMTAsIDQsIDIzMCwgODgsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTc3LCAyMDYsIDc2LCAyNTAsIAorICAgIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDE3NywgNDcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTEyLCAyMTAsIDQsIAorICAgIDIxOSwgMjAzLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NCwgNDksIDIxMSwgNjksIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgCisgICAgMjE3LCA2MywgMTEyLCAyNDcsIDMzLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0NCwgNDgsIDI1MCwgMTY5LCAKKyAgICAyMzksIDk4LCAxNiwgMTEyLCAyMTAsIDQsIDIzMCwgODgsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTgzLCAyMDYsIDc2LCAKKyAgICAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDE4MywgNDcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAzMCwgCisgICAgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ0LCAzOCwgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAKKyAgICAxNiwgMjQzLCAyMjIsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIzMCwgODksIDIwNiwgMjQ2LCAyNTAsIAorICAgIDE2OSwgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDExMiwgMjEyLCAKKyAgICAyNDAsIDIzMCwgODgsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAzMCwgMjE3LCA2MiwgMjUwLCAxNjksIDIzOSwgOTgsIAorICAgIDE2LCAyNDYsIDYyLCAyMTEsIDk0LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0NSwgMjQyLCAyNTAsIDE2OSwgCisgICAgMjM5LCA5OCwgMTYsIDExMiwgMjEwLCA0LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDQsIDQ5LCAyNDMsIAorICAgIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTEsIDk1LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAKKyAgICAyMzAsIDg5LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDYsIDYyLCAyNDMsIDIzMSwgMjUwLCAxNjksIAorICAgIDIzOSwgOTgsIDE2LCAxMjEsIDIxMiwgMjQwLCAyMTEsIDY5LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDQ5LCAyMTIsIDI0MCwgCisgICAgMjExLCA2OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMDgsIDIyOCwgMjQzLCAyMzEsIDI1MCwgMTY5LCAyMzksIDk4LCAKKyAgICAxNiwgMjM3LCAyNDcsIDI0MywgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NSwgMjM0LCAxNDIsIDI1MCwgMTY5LCAKKyAgICAyMzksIDk4LCAxNiwgMjQ0LCA0OSwgMjA4LCAyMjcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjAyLCAyOSwgMjUwLCAxNjksIAorICAgIDIzOSwgOTgsIDE2LCAyMTEsIDcwLCAyMDgsIDIyNywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTMsIDE0NCwgMjA2LCAKKyAgICAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjIxLCAxNjYsIDI0MSwgMzYsIDI1MCwgMTY5LCAyMzksIAorICAgIDk4LCAxNiwgMjE3LCA2MywgMjE3LCA0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxMjEsIDI0NywgMzQsIDIwOCwgMjI3LCAKKyAgICAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDExMiwgMjQ3LCAzNCwgMjA4LCAyMjcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgCisgICAgMjMwLCAyMzAsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE2LCA1OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMjAsIDM2LCAKKyAgICAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI1MSwgMywgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQxLCAzOCwgCisgICAgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjMwLCAyMzEsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgCisgICAgMTYsIDIyMCwgMzcsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI1MSwgMiwgMjIxLCAxNjYsIDI0NiwgMTY5LCAKKyAgICA4MiwgNTAsIDI1MCwgMjE4LCAzLCAxODMsIDIwMiwgMzAsIDQ3LCAyMTIsIDIxMCwgMTcxLCAyNDcsIDIzMywgMjQ4LCAxMjksIAorICAgIDk3LCA4MCwgMjI3LCAxMTUsIDMsIDEwMSwgMjQzLCA4NSwgMjMxLCA4LCA5NywgMjQ1LCAxODksIDIwNiwgMjQ0LCA5NywgCisgICAgMjQzLCAxNTgsIDIwNiwgMjQ0LCA5NywgMjQxLCA5NiwgOTcsIDI0NSwgMjI0LCA5NywgNjEsIDUxLCAzLCAyNDYsIDIxOCwgCisgICAgODAsIDIyNywgMTE0LCAyNDEsIDY4LCA5NywgMjUwLCAyNTAsIDIyOSwgMTUyLCA5NywgMjM3LCAzNywgOTcsIDQzLCAyMzYsIAorICAgIDEwNiwgMjQ4LCAyMzEsIDMsIDIyMSwgMTYzLCA0MywgMjA4LCA4NiwgMjQyLCA3MCwgMjQ3LCAyMDMsIDI0NiwgNjIsIDMsIAorICAgIDIyMSwgMTY5LCA0NywgMjA2LCAyNDIsIDk3LCAyMjQsIDQwLCA5NywgMjM1LCAyMTYsIDk3LCAyMjAsIDcsIDIzNywgMTcwLCAKKyAgICA5NywgMjIwLCA3LCAyMjgsIDEyOSwgOTcsIDIxOSwgNTksIDk3LCAyMTksIDU4LCA5NywgMjQzLCAxNjcsIDI0NSwgOTEsIAorICAgIDE2LCAyMzksIDE1OSwgMTA4LCAyMTIsIDUsIDk3LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjIsIDI0NCwgNjgsIAorICAgIDIxMywgMTMxLCAyMjksIDE1MiwgOTcsIDIxNywgMjM4LCAyMTksIDE1MywgMjIyLCAyMDgsIDIxOSwgMTUzLCAyMTcsIDIzNCwgCisgICAgMjE0LCAxODUsIDk3LCAyNDYsIDMzLCAyMTQsIDE4NSwgOTcsIDQ5LCAyMTksIDc3LCAyMDYsIDIyMSwgMTEzLCA0OSwgMjE5LCAKKyAgICA3NywgMjQwLCAyMDAsIDQ5LCAyMTksIDc3LCAyMjYsIDI1MSwgMTEzLCA1MCwgMjE5LCA3NywgMjA2LCAyMjEsIDExMywgNTAsIAorICAgIDIxOSwgNzcsIDI0MCwgMjAwLCA1MCwgMjE5LCA3NywgMjI2LCAyNTEsIDExMywgNDksIDUxLCAyNDcsIDIyNywgMjA2LCAKKyAgICAyMjEsIDI0NSwgMTY1LCA0OSwgNTEsIDI0NywgMjI3LCAyNDAsIDIwMCwgNDksIDUxLCAyNDcsIDIyNywgMjI2LCAyNTEsIAorICAgIDI0NSwgMTY1LCA1MCwgNTEsIDI0NywgMjI3LCAyMDYsIDIyMSwgMjQ1LCAxNjUsIDUwLCA1MSwgMjQ3LCAyMjcsIDI0MCwgCisgICAgMjAwLCA1MCwgNTEsIDI0NywgMjI3LCAyMjYsIDI1MSwgMjQ1LCAxNjUsIDQ5LCAyNDUsIDkzLCAyNDcsIDIyNywgMjA2LCAKKyAgICAyMjEsIDExMywgNDksIDI0NSwgOTMsIDI0NywgMjI3LCAxMDEsIDIxOCwgMTU5LCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIAorICAgIDIyNiwgMjUxLCAxMTMsIDI0NSwgOTMsIDI0NywgMjI3LCAyNDAsIDIwMCwgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAyMDYsIAorICAgIDIyMSwgMTEzLCA1MCwgMjQ1LCA5MywgMjQ3LCAyMjcsIDEwMSwgMjE4LCAxNTksIDUwLCAyNDUsIDkzLCAyNDcsIDIyNywgCisgICAgMjI2LCAyNTEsIDExMywgMjMxLCAzLCAyNDAsIDIwMCwgMjM2LCAxMDYsIDIyNywgMTE1LCAyNDAsIDIwMCwgMjA2LCAyMjEsIAorICAgIDQ5LCAyMTksIDI0NSwgMjI2LCAyNTEsIDUwLCAyNDUsIDkzLCAyNDcsIDIyNywgMjE0LCAxNjcsIDIwNiwgMjIxLCA1MCwgCisgICAgMjE5LCAyNDUsIDIyNiwgMjUxLCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIxNCwgMTY3LCAyMTAsIDIxOCwgMjA4LCAxNDQsIAorICAgIDIxMCwgMjE4LCAyNDcsIDI0NywgMjA4LCAxNDUsIDUxLCAxNTUsIDI0NywgMjQ4LCA1MSwgMTU1LCAyNDcsIDI0OCwgNTEsIAorICAgIDI0NywgMjI3LCAxMTUsIDIwOCwgMTQ1LCA1MSwgMTU1LCA0MCwgMTYsIDI0NywgMjQ3LCA0OSwgODAsIDk4LCAyMjcsIDExNCwgCisgICAgNTAsIDgwLCA5OCwgMjI3LCAxMTQsIDIzNiwgMTA2LCAyMTQsIDIwMiwgMjI3LCAxMTMsIDIzNiwgMTA2LCAyMTQsIDIwMiwgCisgICAgMjI3LCAxMTIsIDIzNiwgMTA2LCAyMTQsIDIwMiwgMjI3LCAxMTEsIDIzNiwgMTA2LCAyMTQsIDIwMiwgMjI3LCAxMTAsIAorICAgIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAyNSwgMjA4LCAxNDUsIDIxNiwgMTYsIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAyNSwgCisgICAgMjQ3LCAyNDgsIDIxNiwgMTYsIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAzLCAyNDYsIDYxLCAyNDQsIDI5LCAxNiwgMTU3LCAKKyAgICAxMjEsIDI1LCAyMzYsIDEwNiwgMywgMjQ2LCA2MSwgMjQ0LCAyOSwgMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAxMDYsIDMsIAorICAgIDI0NiwgNjEsIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAzLCAyMDgsIDg1LCAyNDQsIDI5LCAxNiwgMTU3LCAxMjEsIDI1LCAKKyAgICAyMzYsIDEwNiwgMywgMjA4LCA4NSwgMjQ0LCAyOSwgMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAxMDYsIDMsIDIwOCwgODUsIAorICAgIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAyNSwgMjA0LCA3NSwgMjQ0LCAyOSwgMTYsIDE1NywgMTIxLCAyNSwgMjM2LCAxMDYsIAorICAgIDMsIDIwNCwgNzUsIDI0NCwgMjksIDE2LCAxNTcsIDExMiwgMjUsIDIzNiwgMTA2LCAzLCAyMDQsIDc1LCAyNDQsIDI5LCAxNiwgCisgICAgMTU3LCAxMjEsIDI1LCAyMzYsIDEwNSwgMjQ0LCAyOSwgMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAxMDUsIDI0NCwgMjksIDE2LCAKKyAgICAxNTcsIDgwLCAyNSwgMjA4LCAxNDUsIDIyNywgMjIyLCAyNDQsIDI5LCAxNiwgMTU3LCA4MCwgMjUsIDI0NywgMjQ4LCAyMjcsIAorICAgIDIyMiwgNTEsIDIzOSwgMTcyLCAyMTYsIDc4LCA5NywgMjQxLCAxMzEsIDk3LCA4MCwgMjI3LCAxMTUsIDI0MCwgMjAwLCAKKyAgICAyMjQsIDIxNCwgMjQ3LCAyMTQsIDIyNCwgMjE0LCAxNjMsIDExNSwgMjEyLCAyMjcsIDIyNCwgMjE0LCAyMTIsIDIyOCwgCisgICAgMTE1LCAyMjcsIDI4LCAyMjQsIDIxNCwgMTYzLCAxMTUsIDEyMCwgMjEyLCAyMTMsIDIyNCwgMjE0LCAxMjAsIDIxMiwgMjE0LCAKKyAgICAxMTUsIDIyNywgMjgsIDIyNCwgMjE0LCAxMjAsIDIxMiwgMjE0LCAyMzAsIDk3LCAyMjQsIDIxNCwgMjA4LCA2NiwgMjI0LCAKKyAgICAyMTQsIDIwOSwgMTI0LCAyMjQsIDIxNCwgMjE4LCAyNTMsIDI0MSwgMTgwLCAyMzcsIDIzOSwgMjM5LCA5MiwgMjA4LCAxNDUsIAorICAgIDIxOSwgNzYsIDI0NywgMjQ4LCAyMTksIDc2LCAyMDgsIDE0NSwgMjQ1LCA5MywgMTU1LCAyNDcsIDI0OCwgMjQ1LCA5MywgCisgICAgMTU1LCAyMDgsIDE0NSwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgMjQ3LCAyNDgsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIAorICAgIDYxLCAyMDgsIDEwMSwgMjQ4LCAxMTUsIDIxNSwgMjUzLCAzLCAyNDYsIDYxLCAyMTEsIDUxLCAyMzksIDIxNSwgMjUxLCAKKyAgICAxNDIsIDI0NSwgOTAsIDI0MSwgMTE2LCAyMzAsIDI0NCwgMjQ0LCA2OCwgMjQwLCAyMDQsIDk3LCA2MiwgMjE2LCAxMSwgNTIsIAorICAgIDIwOCwgODUsIDYyLCAyMjcsIDIxNywgNTIsIDIwOCwgODUsIDYyLCAyMDYsIDIyMywgNTIsIDIwOCwgODUsIDYyLCAyNDIsIAorICAgIDY5LCA1MiwgMjA4LCA4NSwgNjIsIDIxNiwgMTEsIDUyLCAyMDgsIDg2LCAzLCA4MCwgMTQyLCA2MiwgMjI3LCAyMTcsIDUyLCAKKyAgICAyMDgsIDg2LCAzLCA4MCwgMTQyLCA2MiwgMjE2LCAxMSwgMjA4LCA4NiwgMywgNTIsIDgwLCAxNDIsIDI1MSwgMzQsIDI0NiwgCisgICAgMTksIDIxMSwgNTgsIDIwOCwgMjIwLCAyNDYsIDE5LCAyMzYsIDQxLCAzLCAyMzksIDE5NSwgMjE0LCAyNDEsIDYyLCAyMjUsIAorICAgIDEwLCAyMjcsIDIxNywgMjA4LCA4NSwgNjIsIDIyNSwgMTAsIDIxNiwgMTEsIDIwOCwgODUsIDYyLCAyMjUsIDEwLCAyMDYsIAorICAgIDIyMywgMjA4LCA4NSwgNjIsIDIyNSwgMTAsIDI0MiwgNjksIDIwOCwgODUsIDUyLCA4MCwgMTQyLCA2MiwgNTEsIDM1LCAKKyAgICAyMTEsIDYxLCA2MiwgMjQ2LCA2MiwgMzUsIDIxNiwgMTQ4LCAxNiwgMzUsIDIyMSwgNDgsIDE2LCAzNSwgMjExLCA5MCwgNzYsIAorICAgIDIzNywgNjEsIDE2LCAzNSwgMjExLCA5MCwgNzYsIDIwOSwgMTEyLCAxNiwgMzUsIDI0MSwgODQsIDc2LCAyMDksIDExMiwgCisgICAgMTYsIDM1LCAyNDEsIDg0LCA3NiwgMjA4LCAxMDUsIDE2LCAzNSwgMjQxLCA3MSwgMTYsIDM1LCAyNTEsIDEzMCwgMTYsIDM1LCAKKyAgICAyNDgsIDEyOCwgMTYsIDM1LCAyNDksIDE5LCAxNiwgMzUsIDIzNiwgMTA2LCAyMTAsIDUsIDE2LCAzNSwgMjI3LCAxMTUsIAorICAgIDI0MCwgNTEsIDE2LCAzNSwgODAsIDIxMCwgNSwgMTYsIDM1LCAyMzksIDE1OSwgMjQwLCA1MSwgMTYsIDM1LCAyNDcsIDI1LCAKKyAgICAyMTYsIDc3LCAxNiwgMzUsIDIxMywgNywgMjE5LCAyMTEsIDE2LCAzNSwgMjEzLCA3LCAyMzEsIDQ5LCAxNiwgMzUsIDI0NCwgCisgICAgMTM5LCAyMjcsIDEwNSwgMjQxLCA5LCAxNiwgMzUsIDI0NCwgOCwgMjQ1LCAxODQsIDEwNSwgMTYsIDM1LCAyNDQsIDgsIAorICAgIDI0NSwgMTg0LCAxMDgsIDE2LCAzNSwgMjQ0LCA4LCAyNDUsIDE4NCwgMTQ3LCAxNiwgMzUsIDI0NCwgOCwgMjQ1LCAxODQsIAorICAgIDE0OSwgMTYsIDM1LCAxODIsIDI1MSwgMTMwLCAxNiwgMzUsIDIxMCwgOTUsIDIzMSwgMTEyLCAxNiwgMzUsIDI0MSwgODQsIAorICAgIDc2LCAyMDgsIDEwNiwgMjQ4LCAzMywgMTYsIDM1LCAyNDcsIDU5LCAxNiwgMzUsIDI0MSwgODQsIDc2LCAyMjUsIDksIDE2LCAKKyAgICAzNSwgMjEwLCAyNDIsIDE2LCAzNSwgMjQxLCA5LCAxNiwgMzUsIDI0MCwgMTEsIDIxMywgMTMwLCAxNiwgMzUsIDIzNywgCisgICAgMjM4LCAyMTMsIDEzMCwgMTYsIDM1LCAyMTYsIDE0OSwgMjEzLCAxMzAsIDE2LCAzNSwgMjA2LCAyMzYsIDIxMywgMTMwLCAKKyAgICAxNiwgMzUsIDIxMSwgMjI4LCAxNiwgMzUsIDI0NCwgNDYsIDI0OCwgMzcsIDk3LCAxNzEsIDI0NywgMjMzLCAxNiwgMzUsIAorICAgIDIyMiwgMjExLCAxNiwgMzUsIDI0NCwgNDcsIDIzOSwgMTU5LCAxMDgsIDE2LCAzNSwgMjEwLCAyNDMsIDIzOSwgMTU5LCAKKyAgICAxMDgsIDIyMCwgODIsIDExMywgMjIwLCA4MiwgMjQ2LCAxOTQsIDIyMCwgODIsIDIzOSwgMTYyLCAyMjAsIDgyLCAyMzAsIAorICAgIDIzOSwgMjM5LCAxNjIsIDIyMCwgODIsIDI0OCwgMTI1LCAyNDcsIDE5MCwgMjIwLCA4MiwgMjQ3LCAyNDEsIDIwOCwgMjUwLCAKKyAgICAyMjAsIDgyLCAyNDcsIDIyNCwgMjQ4LCAyMzYsIDIzNSwgMTUzLCAyMjAsIDgyLCAyNTAsIDIzNywgNzYsIDI0NiwgMTY4LCAKKyAgICAyMjAsIDgyLCAyNDQsIDE0NCwgMjIwLCA4MiwgMjQ1LCA4MCwgMjUxLCAxMzQsIDIyMSwgNDYsIDIyMCwgODIsIDUyLCAyNDksIAorICAgIDIwLCA0MywgMTcsIDEwNSwgNDMsIDE3LCAxMDgsIDQzLCAxNywgMTQ3LCA0MywgMTcsIDE0OSwgNDMsIDE3LCAxNzAsIDQzLCAKKyAgICAxNywgMTk1LCA0MywgMTcsIDIxMywgMTExLCA0MywgMTcsIDE5OSwgNDMsIDE3LCAyMjIsIDYzLCA0MywgNDIsIDIwOSwgCisgICAgMTUyLCA0MywgNDIsIDI0MSwgMTEyLCA0MywgNDIsIDIwNywgMTU0LCA0MywgNDIsIDIwOSwgNTUsIDQzLCA0MiwgMjM5LCAKKyAgICAxNDEsIDQzLCA0MiwgMjQwLCAyMiwgNDMsIDQyLCAyMTIsIDgyLCA0MywgNDIsIDIxMywgMTA4LCA0MywgNDIsIDI0MSwgCisgICAgMTQwLCA0MywgNDIsIDIyMiwgNjAsIDQzLCA0MiwgMjA3LCAxNTEsIDEwMiwgMTcsIDEwNSwgMTAyLCAxNywgMTA4LCAxMDIsIAorICAgIDE3LCAxNDcsIDEwMiwgMTcsIDE0OSwgMTAyLCAxNywgMTcwLCAxMDIsIDE3LCAxOTUsIDEwMiwgMTcsIDIxMywgMTExLCAKKyAgICAxMDIsIDE3LCAxOTksIDEwMiwgMTcsIDIyMiwgNjMsIDEwMiwgNDIsIDIwOSwgMTUyLCAxMDIsIDQyLCAyNDEsIDExMiwgCisgICAgMTAyLCA0MiwgMjA3LCAxNTQsIDEwMiwgNDIsIDIwOSwgNTUsIDEwMiwgNDIsIDIzOSwgMTQxLCAxMDIsIDQyLCAyNDAsIDIyLCAKKyAgICAxMDIsIDQyLCAyMTIsIDgyLCAxMDIsIDQyLCAyMTMsIDEwOCwgMTAyLCA0MiwgMjQxLCAxNDAsIDEwMiwgNDIsIDIyMiwgNjAsIAorICAgIDEwMiwgNDIsIDIwNywgMTUxLCAxNywgMTE4LCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDEyMCwgMjM5LCAxMDIsIDIxMSwgCisgICAgNjEsIDE3LCAxMjYsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjM5LCAxNDcsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjM5LCAKKyAgICAyMzMsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjEyLCA4OCwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMTMsIDExMiwgCisgICAgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyNDEsIDE0MywgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMjIsIDY0LCAyMzksIAorICAgIDEwMiwgMjExLCA2MSwgNDIsIDIwOSwgMTUzLCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDI0MSwgMTEzLCAyMzksIDEwMiwgCisgICAgMjExLCA2MSwgNDIsIDIwNywgMTU1LCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIwOSwgNTYsIDIzOSwgMTAyLCAyMTEsIDYxLCAKKyAgICA0MiwgMjM5LCAxNDIsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjQwLCAyMywgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyMTIsIAorICAgIDgzLCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIxMywgMTA5LCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDI0MSwgMTQxLCAKKyAgICAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIyMiwgNjEsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjA3LCAxNTIsIDIzOSwgCisgICAgMTAyLCAyMTEsIDYxLCAxMDIsIDgsIDUsIDEsIDYzLCAxMDIsIDgsIDUsIDEsIDI0OSwgMjU1LCAxMDIsIDgsIDUsIDEsIAorICAgIDI0NywgMTI1LCAxMDIsIDgsIDUsIDEsIDI0NSwgNTEsIDEwMiwgOCwgNSwgMSwgNzQsIDEwMiwgOCwgNSwgMSwgMjQwLCAKKyAgICAxNzQsIDEwMiwgOCwgNSwgMSwgMjM5LCA3NSwgMTAyLCA4LCA1LCAxLCAyMzcsIDE3MSwgMTAyLCA4LCA1LCAxLCA3NSwgCisgICAgMTAyLCA4LCA1LCAxLCAyMzAsIDE4NCwgMTAyLCA4LCA1LCAxLCAyMzAsIDU0LCAxMDIsIDgsIDUsIDEsIDE1OSwgMTAyLCA4LCAKKyAgICA1LCAxLCAyMjYsIDE4NSwgMTAyLCA4LCA1LCAxLCAyMjMsIDE2MywgMTAyLCA4LCA1LCAxLCA3OCwgMTAyLCA4LCA1LCAxLCAKKyAgICAyMTksIDE4NCwgMTAyLCA4LCA1LCAxLCAyMTcsIDEzNCwgMTAyLCA4LCA1LCAxLCAxNDYsIDEwMiwgOCwgNSwgMSwgMTk0LCAKKyAgICAxMDIsIDgsIDUsIDEsIDIxMCwgNjksIDEwMiwgOCwgNSwgMSwgNjgsIDEwMiwgOCwgNSwgMSwgMjA2LCAxNjQsIDEwMiwgOCwgCisgICAgNSwgMSwgMjA0LCAxNDQsIDEwMiwgOCwgNSwgMSwgMjAzLCAxOTYsIDEwMiwgOCwgNSwgMSwgMjAzLCAxMjQsIDEwMiwgOCwgCisgICAgNSwgMSwgMjAyLCAxNTksIDQzLCA4LCA2LCAxLCA2MywgNDMsIDgsIDYsIDEsIDI0OSwgMjU1LCA0MywgOCwgNiwgMSwgMjQ3LCAKKyAgICAxMjUsIDQzLCA4LCA2LCAxLCAyNDUsIDUxLCA0MywgOCwgNiwgMSwgNzQsIDQzLCA4LCA2LCAxLCAyNDAsIDE3NCwgNDMsIDgsIAorICAgIDYsIDEsIDIzOSwgNzUsIDQzLCA4LCA2LCAxLCAyMzcsIDE3MSwgNDMsIDgsIDYsIDEsIDc1LCA0MywgOCwgNiwgMSwgMjMwLCAKKyAgICAxODQsIDQzLCA4LCA2LCAxLCAyMzAsIDU0LCA0MywgOCwgNiwgMSwgMTU5LCA0MywgOCwgNiwgMSwgMjI2LCAxODUsIDQzLCAKKyAgICA4LCA2LCAxLCAyMjMsIDE2MywgNDMsIDgsIDYsIDEsIDc4LCA0MywgOCwgNiwgMSwgMjE5LCAxODQsIDQzLCA4LCA2LCAxLCAKKyAgICAyMTcsIDEzNCwgNDMsIDgsIDYsIDEsIDE0NiwgNDMsIDgsIDYsIDEsIDE5NCwgNDMsIDgsIDYsIDEsIDIxMCwgNjksIDQzLCAKKyAgICA4LCA2LCAxLCA2OCwgNDMsIDgsIDYsIDEsIDIwNiwgMTY0LCA0MywgOCwgNiwgMSwgMjA0LCAxNDQsIDQzLCA4LCA2LCAxLCAKKyAgICAyMDMsIDE5NiwgNDMsIDgsIDYsIDEsIDIwMywgMTI0LCA0MywgOCwgNiwgMSwgMjAyLCAxNTksIDQzLCA4LCA1LCAxLCA2MywgCisgICAgNDMsIDgsIDUsIDEsIDI0OSwgMjU1LCA0MywgOCwgNSwgMSwgMjQ3LCAxMjUsIDQzLCA4LCA1LCAxLCAyNDUsIDUxLCA0MywgCisgICAgOCwgNSwgMSwgNzQsIDQzLCA4LCA1LCAxLCAyNDAsIDE3NCwgNDMsIDgsIDUsIDEsIDIzOSwgNzUsIDQzLCA4LCA1LCAxLCAKKyAgICAyMzcsIDE3MSwgNDMsIDgsIDUsIDEsIDc1LCA0MywgOCwgNSwgMSwgMjMwLCAxODQsIDQzLCA4LCA1LCAxLCAyMzAsIDU0LCAKKyAgICA0MywgOCwgNSwgMSwgMTU5LCA0MywgOCwgNSwgMSwgMjI2LCAxODUsIDQzLCA4LCA1LCAxLCAyMjMsIDE2MywgNDMsIDgsIDUsIAorICAgIDEsIDc4LCA0MywgOCwgNSwgMSwgMjE5LCAxODQsIDQzLCA4LCA1LCAxLCAyMTcsIDEzNCwgNDMsIDgsIDUsIDEsIDE0NiwgCisgICAgNDMsIDgsIDUsIDEsIDE5NCwgNDMsIDgsIDUsIDEsIDIxMCwgNjksIDQzLCA4LCA1LCAxLCA2OCwgNDMsIDgsIDUsIDEsIAorICAgIDIwNiwgMTY0LCA0MywgOCwgNSwgMSwgMjA0LCAxNDQsIDQzLCA4LCA1LCAxLCAyMDMsIDE5NiwgNDMsIDgsIDUsIDEsIDIwMywgCisgICAgMTI0LCA0MywgOCwgNSwgMSwgMjAyLCAxNTksIDQzLCAxNywgMjAyLCA4NCwgMTgyLCA0MywgNDIsIDI0MSwgMTEyLCAxODIsIAorICAgIDQzLCA0MiwgMjA3LCAxNTQsIDE4MiwgNDMsIDQyLCAyMDksIDU1LCAxODIsIDQzLCA0MiwgMjM5LCAxNDEsIDE4MiwgNDMsIAorICAgIDQyLCAyNDAsIDIyLCAxODIsIDQzLCA0MiwgMjEyLCA4MiwgMTgyLCA0MywgNDIsIDIxMywgMTA4LCAxODIsIDQzLCA0MiwgCisgICAgMjQxLCAxNDAsIDE4MiwgNDMsIDQyLCAyMjIsIDYwLCAxODIsIDQzLCA0MiwgMjA3LCAxNTEsIDUyLCA0MywgMTcsIDEwNSwgCisgICAgNTIsIDQzLCAxNywgMTA4LCA1MiwgNDMsIDE3LCAxNDcsIDUyLCA0MywgMTcsIDE0OSwgNTIsIDQzLCAxNywgMTcwLCA1MiwgCisgICAgNDMsIDE3LCAxOTUsIDUyLCA0MywgMTcsIDIxMywgMTExLCA1MiwgNDMsIDE3LCAxOTksIDUyLCA0MywgMTcsIDIyMiwgNjMsIAorICAgIDUyLCA0MywgNDIsIDIwOSwgMTUyLCAxODIsIDQzLCAxNywgMjAyLCA4NCwgOTgsIDExNiwgMTU3LCAyMzYsIDEwNSwgOTgsIAorICAgIDExNiwgNzksIDIzNiwgMTA1LCA5OCwgMTE2LCAxNTcsIDIwNiwgMzgsIDk4LCAxMTYsIDc5LCAyMDYsIDM4LCA5OCwgMTE2LCAKKyAgICAxNTcsIDIwOCwgNzAsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgNzksIDIwOCwgNzAsIDI0NCwgMTQ1LCAyMzYsIAorICAgIDEwNSwgOTgsIDExNiwgMTU3LCAyMDgsIDcwLCAyNDQsIDE0NSwgMjA2LCAzOCwgOTgsIDExNiwgNzksIDIwOCwgNzAsIDI0NCwgCisgICAgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCAxNTcsIDIxNywgNTgsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgNzksIAorICAgIDIxNywgNTgsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTU3LCAyMTcsIDU4LCAyNDQsIDE0NSwgMjA2LCAzOCwgCisgICAgOTgsIDExNiwgNzksIDIxNywgNTgsIDI0NCwgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCAxNTcsIDEyMSwgMjUsIDIxNiwgMTYsIAorICAgIDk4LCAxMTYsIDEyMSwgMTU3LCAyNSwgNTAsIDIzNywgNDksIDk4LCAxMTYsIDEyMSwgNzksIDI1LCA1MCwgMjI3LCAxMzQsIAorICAgIDk4LCAxMTYsIDc5LCAxMjEsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDEyMSwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAKKyAgICAxMjEsIDE1NywgMjUsIDQ5LCAyMzcsIDQ5LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgNDksIDIyNywgMTM0LCA5OCwgMTE2LCAKKyAgICA3OSwgMTIxLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDE1NywgMTEyLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTEyLCAxNTcsIAorICAgIDI1LCA1MCwgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCA3OSwgMjUsIDUwLCAyMjcsIDEzNCwgOTgsIDExNiwgNzksIDExMiwgCisgICAgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMTEyLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgNDksIAorICAgIDIzNywgNDksIDk4LCAxMTYsIDExMiwgNzksIDI1LCA0OSwgMjI3LCAxMzQsIDk4LCAxMTYsIDc5LCAxMTIsIDI1LCAyMjcsIAorICAgIDIyMiwgOTgsIDExNiwgMTU3LCA4MCwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDgwLCAxNTcsIDI1LCA1MCwgMjM3LCA0OSwgCisgICAgOTgsIDExNiwgMTEyLCA3OSwgMjUsIDUwLCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgNTAsIDExMiwgCisgICAgMjI3LCAxMzQsIDk4LCAxMTYsIDgwLCA3OSwgMjUsIDUwLCAyMjcsIDEzNCwgOTgsIDExNiwgMTIxLCAxNTcsIDI1LCA1MCwgCisgICAgMTEyLCAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDE1NywgMjUsIDUwLCAxMjEsIDIzNywgNDksIDk4LCAxMTYsIDc5LCA4MCwgCisgICAgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgODAsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgODAsIDE1NywgMjUsIDQ5LCAKKyAgICAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgNDksIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgNzksIDI1LCAKKyAgICA0OSwgMTEyLCAyMjcsIDEzNCwgOTgsIDExNiwgODAsIDc5LCAyNSwgNDksIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDE1NywgCisgICAgMjUsIDQ5LCAxMTIsIDIzNywgNDksIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgNDksIDEyMSwgMjM3LCA0OSwgOTgsIDExNiwgCisgICAgNzksIDgwLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDE1NywgMTIxLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDQ5LCA3OSwgCisgICAgMjUsIDUwLCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgNzksIDI1LCA0OSwgMTIxLCAyMjcsIDEzNCwgOTgsIDExNiwgCisgICAgMTIxLCAxNTcsIDI1LCAyMzYsIDEwNiwgMjM3LCA0OSwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIDIzNiwgMTA2LCAyMjcsIAorICAgIDEzNCwgOTgsIDExNiwgNTAsIDE1NywgMjUsIDQ5LCAxMjEsIDIzNywgNDksIDk4LCAxMTYsIDQ5LCAxNTcsIDI1LCA1MCwgCisgICAgMTIxLCAyMzcsIDQ5LCA5OCwgMTE2LCA3OSwgMTIxLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAKKyAgICAxMDUsIDk4LCAxMTYsIDQ5LCA3OSwgMjUsIDUwLCAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgNzksIDI1LCA0OSwgCisgICAgMTEyLCAyMjcsIDEzNCwgOTgsIDExNiwgMTEyLCAxNTcsIDI1LCAyMzYsIDEwNiwgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCAKKyAgICA3OSwgMjUsIDIzNiwgMTA2LCAyMjcsIDEzNCwgOTgsIDExNiwgNTAsIDE1NywgMjUsIDQ5LCAxMTIsIDIzNywgNDksIDk4LCAKKyAgICAxMTYsIDQ5LCAxNTcsIDI1LCA1MCwgMTEyLCAyMzcsIDQ5LCA5OCwgMTE2LCA3OSwgMTEyLCAyNSwgMjM2LCAxMDUsIDk4LCAKKyAgICAxMTYsIDE1NywgODAsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgNDksIDc5LCAyNSwgNTAsIDgwLCAyMjcsIDEzNCwgOTgsIAorICAgIDExNiwgNTAsIDc5LCAyNSwgNDksIDgwLCAyMjcsIDEzNCwgOTgsIDExNiwgODAsIDE1NywgMjUsIDIzNiwgMTA2LCAyMzcsIAorICAgIDQ5LCA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgMTIxLCAyMzYsIDEwNiwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgNzksIDI1LCAKKyAgICAxMTIsIDIzNiwgMTA2LCAyMjcsIDEzNCwgOTgsIDExNiwgODAsIDc5LCAyNSwgMjM2LCAxMDYsIDIyNywgMTM0LCA5OCwgCisgICAgMTE2LCA0OSwgMTEyLCA3OSwgMjUsIDUwLCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgMTEyLCA3OSwgMjUsIDQ5LCAKKyAgICAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCA0OSwgMTIxLCA3OSwgMjUsIDUwLCAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgCisgICAgMTIxLCA3OSwgMjUsIDQ5LCAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDE1NywgMjUsIDExMiwgMjM2LCAxMDYsIAorICAgIDIzNywgNDksIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgMTIxLCAyMzYsIDEwNiwgMjM3LCA0OSwgOTgsIDExNiwgNTAsIDE1NywgCisgICAgMjUsIDQ5LCA4MCwgMjM3LCA0OSwgOTgsIDExNiwgNDksIDE1NywgMjUsIDUwLCA4MCwgMjM3LCA0OSwgOTgsIDExNiwgNzksIAorICAgIDgwLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgNTIsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgNzksIDUyLCAKKyAgICAyNDQsIDE0NSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgNTIsIDI0NCwgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCA3OSwgNTIsIAorICAgIDI0NCwgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCA1MiwgMjM2LCAxMDUsIDk4LCAxMTYsIDUyLCAyMDYsIDM4LCA5OCwgMTE2LCAKKyAgICAxMjEsIDIxMiwgMTIwLCAyNSwgNTAsIDI0MiwgNzgsIDk4LCAxMTYsIDEyMSwgNTIsIDI1LCA1MCwgMjEyLCAxMTksIDk4LCAKKyAgICAxMTYsIDUyLCAxMjEsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxMjEsIDIxMiwgMTIwLCAyNSwgNDksIDI0MiwgNzgsIDk4LCAKKyAgICAxMTYsIDEyMSwgNTIsIDI1LCA0OSwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCAxMjEsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgCisgICAgMTEyLCAyMTIsIDEyMCwgMjUsIDUwLCAyNDIsIDc4LCA5OCwgMTE2LCAxMTIsIDUyLCAyNSwgNTAsIDIxMiwgMTE5LCA5OCwgCisgICAgMTE2LCA1MiwgMTEyLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTEyLCAyMTIsIDEyMCwgMjUsIDQ5LCAyNDIsIDc4LCA5OCwgCisgICAgMTE2LCAxMTIsIDUyLCAyNSwgNDksIDIxMiwgMTE5LCA5OCwgMTE2LCA1MiwgMTEyLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIAorICAgIDgwLCAyMTIsIDEyMCwgMjUsIDUwLCAyNDIsIDc4LCA5OCwgMTE2LCA4MCwgNTIsIDI1LCA1MCwgMjEyLCAxMTksIDk4LCAKKyAgICAxMTYsIDUyLCA4MCwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDgwLCAyMTIsIDEyMCwgMjUsIDQ5LCAyNDIsIDc4LCA5OCwgCisgICAgMTE2LCA4MCwgNTIsIDI1LCA0OSwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCA4MCwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAKKyAgICAxMjEsIDIxMiwgMTIwLCAyNSwgMjM2LCAxMDYsIDI0MiwgNzgsIDk4LCAxMTYsIDEyMSwgNTIsIDI1LCAyMzYsIDEwNiwgCisgICAgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCAxMjEsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTEyLCAyMTIsIDEyMCwgMjUsIAorICAgIDIzNiwgMTA2LCAyNDIsIDc4LCA5OCwgMTE2LCAxMTIsIDUyLCAyNSwgMjM2LCAxMDYsIDIxMiwgMTE5LCA5OCwgMTE2LCA1MiwgCisgICAgMTEyLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDgwLCAyMTIsIDEyMCwgMjUsIDIzNiwgMTA2LCAyNDIsIDc4LCA5OCwgMTE2LCAKKyAgICA4MCwgNTIsIDI1LCAyMzYsIDEwNiwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCA4MCwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCAKKyAgICAxNTcsIDI1MCwgMTI5LCAxMjEsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDI1MCwgMTI5LCAxMjEsIDI1LCAyMjcsIAorICAgIDIyMiwgOTgsIDExNiwgMTU3LCAyNTAsIDEyOSwgMTEyLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDE1NywgMjUwLCAxMjksIAorICAgIDExMiwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMjQzLCAyMjgsIDIwNiwgMjIxLCA1MCwgMjA4LCAxNzMsIDIyNiwgCisgICAgMjUxLCAyMjcsIDIyMiwgOTgsIDExNiwgMTU3LCAyNDMsIDIyOCwgMjA2LCAyMjEsIDQ5LCAyMDgsIDE3MywgMjI2LCAyNTEsIAorICAgIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMjQzLCAyMjgsIDI0NSwgMTMwLCA5OCwgMTE2LCAxNTcsIDIyNywgMjIyLCA5OCwgCisgICAgMTE2LCAxNTcsIDIwNiwgMjI0LCA5OCwgMTE2LCAxNTcsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMjQyLCA3MCwgOTgsIAorICAgIDExNiwgNzksIDIyNywgMjIyLCA5OCwgMTE2LCA3OSwgMjA2LCAyMjQsIDk4LCAxMTYsIDc5LCAyMTYsIDE2LCA5OCwgMTE2LCAKKyAgICA3OSwgMjQyLCA3MCwgOTgsIDExNiwgMTU3LCA0OSwgMjUsIDc5LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDExMiwgMjUsIAorICAgIDc5LCAyNDIsIDcwLCA5OCwgMTE2LCA3OSwgNDksIDI1LCAxNTcsIDIxNiwgMTYsIDk4LCAxMTYsIDc5LCAxMTIsIDI1LCAKKyAgICAxNTcsIDI0MiwgNzAsIDIwNiwgMjIxLCAxNjIsIDI0OCwgMzMsIDIyNiwgMjUxLCAxMTgsIDI0MSwgMTM5LCAyNDgsIDMzLCAKKyAgICAyMjYsIDI1MSwgMTE4LCAyMTcsIDU2LCAyNDgsIDMzLCAyMjYsIDI1MSwgMTI2LCAyNDEsIDEzNywgMjQ4LCAzMywgMjI2LCAKKyAgICAyNTEsIDE2MiwgMjQ4LCAzMywgMjI2LCAyNTEsIDIzOSwgMjMzLCAyNDEsIDEzNywgMjQ4LCAzMywgMjI2LCAyNTEsIDEyNiwgCisgICAgMjE3LCA1NCwgMjQ4LCAzMywgMjI2LCAyNTEsIDIxMywgMTEyLCAyNDEsIDEzNywgMjQ4LCAzMywgMjM5LCAxMDIsIDI0OCwgCisgICAgMzMsIDQ5LCAyMTMsIDExMiwgMjQxLCAxMzcsIDI0OCwgMzMsIDQ5LCAxMjYsIDIxNywgNTQsIDI0OCwgMzMsIDQ5LCAyMzksIAorICAgIDIzMywgMjQxLCAxMzcsIDI0OCwgMzMsIDQ5LCAxNjIsIDI0OCwgMzMsIDQ5LCAxMjYsIDI0MSwgMTM3LCAyNDgsIDMzLCA0OSwgCisgICAgMTE4LCAyMTcsIDU2LCAyNDgsIDMzLCA0OSwgMTE4LCAyNDEsIDEzOSwgMjQ4LCAzMywgNTAsIDE2MiwgMjQ4LCAzMywgMTU3LCAKKyAgICAyMTMsIDc5LCAyMjUsIDEwLCAyMTMsIDc5LCAyNDQsIDE1MCwgMjEzLCA3OSwgMjA2LCAyMjEsIDExOCwgMjQxLCAxMzksIAorICAgIDI0OCwgMzMsIDUwLCAxMTgsIDI0MSwgMTM5LCAyNDgsIDMzLCAyMTcsIDYwLCAyMjYsIDI1MSwgMjI3LCAyMjIsIDIxNywgCisgICAgNjAsIDIyNiwgMjUxLCAyMTYsIDE2LCAyMTcsIDYwLCAyMDYsIDIyMSwgMjI3LCAyMjIsIDIxNywgNjAsIDIwNiwgMjIxLCAKKyAgICA0OSwgMjUsIDIyNiwgMjUxLCA0OSwgMjUsIDIyNiwgMjUxLCAyMTYsIDE2LCAyMTcsIDYwLCAyMDYsIDIyMSwgNDksIDI1LCAKKyAgICAyMjYsIDI1MSwgMjE2LCAxNiwgMjE3LCA2MCwgMjA2LCAyMjEsIDQ5LCAyNSwgMjA2LCAyMjEsIDUwLCAyNSwgMjI2LCAyNTEsIAorICAgIDIyNywgMjIyLCAyMTcsIDYwLCAyMDYsIDIyMSwgNDksIDI1LCAyMDYsIDIyMSwgNTAsIDI1LCAyMjYsIDI1MSwgMjE2LCAxNiwgCisgICAgMjE3LCA2MCwgMjA2LCAyMjEsIDIxNiwgMTYsIDIxNywgNjAsIDIwNiwgMjIxLCA1MCwgMjUsIDIyNiwgMjUxLCAyMjcsIAorICAgIDIyMiwgMjE3LCA2MCwgMjA2LCAyMjEsIDUwLCAyNSwgMjI2LCAyNTEsIDQ5LCAyNSwgMjI2LCAyNTEsIDIxNiwgMTYsIDYyLCAKKyAgICAyMTEsIDE3NywgNjEsIDIxMSwgMTc3LCA2MSwgNTEsIDMsIDIxNSwgMTg5LCAyNDUsIDE2NCwgNjEsIDUxLCAyNDUsIDE5NSwgCisgICAgNjIsIDUsIDIxMSwgMTc3LCA1MSwgMywgMjM2LCAxMDYsIDI0MCwgOSwgNTEsIDMsIDgwLCAyNDAsIDksIDUxLCAzLCAyMTksIAorICAgIDIyOSwgMjQ1LCAxMjUsIDI0MCwgOSwgNTEsIDMsIDIwNiwgMjIxLCA0OSwgMjA4LCAxNzMsIDIyNiwgMjUxLCA1MCwgMjQwLCAKKyAgICA5LCA1MSwgMywgMjA2LCAyMjEsIDUwLCAyMDgsIDE3MywgMjI2LCAyNTEsIDQ5LCAyNDAsIDksIDUxLCAzLCAyNDMsIDIyOCwgCisgICAgMjQ1LCAxMjUsIDI0MCwgOSwgNjIsIDUsIDIxMSwgMTc3LCA2MSwgNSwgMjExLCAxNzcsIDYyLCAyMTYsIDE0MywgNjEsIAorICAgIDIxNiwgMTQzLCA2MiwgODAsIDIxNiwgMTQzLCA2MSwgODAsIDIxNiwgMTQzLCA2MiwgMjE5LCA4MCwgNjEsIDIxOSwgODAsIAorICAgIDYyLCAyMDYsIDIyMywgMjA4LCA4NSwgNjEsIDIwNiwgMjIzLCAyMDgsIDg1LCA2MiwgMjA2LCAyMjMsIDUsIDIwOCwgODUsIAorICAgIDYxLCAyMDYsIDIyMywgNSwgMjA4LCA4NSwgNjIsIDIxNiwgMTEsIDIwOCwgODUsIDYxLCAyMTYsIDExLCAyMDgsIDg1LCA2MiwgCisgICAgMjE2LCAxMSwgNSwgMjA4LCA4NSwgNjEsIDIxNiwgMTEsIDUsIDIwOCwgODUsIDYyLCAyMTYsIDExLCAyMTgsIDYwLCA2MSwgCisgICAgMjE2LCAxMSwgMjE4LCA2MCwgNjIsIDI0MiwgNjksIDIwOCwgODUsIDYxLCAyNDIsIDY5LCAyMDgsIDg1LCA2MiwgMjQyLCAKKyAgICA2OSwgNSwgMjA4LCA4NSwgNjEsIDI0MiwgNjksIDUsIDIwOCwgODUsIDYyLCAyMjcsIDIxNywgMjA4LCA4NSwgNjEsIDIyNywgCisgICAgMjE3LCAyMDgsIDg1LCA2MiwgMjI3LCAyMTcsIDUsIDIwOCwgODUsIDYxLCAyMjcsIDIxNywgNSwgMjA4LCA4NSwgNjIsIAorICAgIDIyNywgMjE3LCAyMTgsIDYwLCA2MSwgMjI3LCAyMTcsIDIxOCwgNjAsIDYyLCAyNDMsIDIyMSwgNjEsIDI0MywgMjIxLCA2MSwgCisgICAgMjQzLCAyMjIsIDI0NSwgMTk1LCA2MiwgNSwgMjQzLCAyMjEsIDIzOSwgMjQyLCAyMjYsIDI0NiwgNjEsIDI0NiwgNjEsIAorICAgIDI0MiwgODMsIDI0NiwgNjEsIDI0NiwgNjIsIDMsIDgwLCAyNDAsIDksIDI0NywgMTczLCA2MiwgMjQ2LCA2MSwgMjQ2LCA2MiwgCisgICAgMywgNDksIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgNTAsIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgMjI2LCAyNTEsIAorICAgIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgMjA2LCAyMjEsIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgMjA2LCAyMjEsIAorICAgIDUwLCAyMTcsIDYwLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCAyNTEsIDE1LCAyNDcsIDE0OCwgMjA2LCAyMjEsIDQ5LCAyMTcsIAorICAgIDYwLCAyNDgsIDQzLCA0OSwgMTYyLCA2MiwgMjQ2LCA2MSwgNTAsIDE2MiwgNjIsIDI0NiwgNjEsIDIzMCwgMjQwLCAyNDcsIAorICAgIDE3NywgMjMwLCAyNDAsIDYxLCAyNDYsIDYxLCAyMDYsIDIyMSwgMTYyLCAyMzAsIDI0MCwgNjEsIDI0NiwgNjEsIDIyNiwgCisgICAgMjUxLCAxNjIsIDIzMCwgMjQwLCA2MSwgMjQ2LCA2MSwgMjA2LCAyMjEsIDQ5LCAyMTcsIDYwLCAyNDYsIDU1LCAyNTAsIAorICAgIDEyOCwgMjA2LCAyMjEsIDUwLCAyMTcsIDYwLCAyNDYsIDU1LCAyNTAsIDEyOCwgMjI2LCAyNTEsIDUwLCAyMTcsIDYwLCAKKyAgICAyNDYsIDU1LCAyNTAsIDEyOCwgMjI2LCAyNTEsIDQ5LCAyMTcsIDYwLCAyNDYsIDU1LCAyNTAsIDEyOCwgMjA2LCAyMjEsIAorICAgIDE2MiwgMjQ2LCA2MSwgMjI2LCAyNTEsIDE2MiwgMjQ2LCA2MSwgNjIsIDIyNiwgMjUxLCA1MCwgMjA4LCA4NSwgNjIsIDIyNiwgCisgICAgMjUxLCA0OSwgMjA4LCA4NSwgNjIsIDIwNiwgMjIxLCA0OSwgMjA4LCA4NSwgNjIsIDIwNiwgMjIxLCA1MCwgMjA4LCA4NSwgCisgICAgNjEsIDI0NywgMTc3LCA1MSwgMywgNDksIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDUxLCAzLCAKKyAgICAyMDYsIDIyMSwgNDksIDI0MywgMjI4LCAxNjIsIDI0OCwgNDMsIDUxLCAzLCAyMjYsIDI1MSwgNTAsIDI0MywgMjI4LCAxNjIsIAorICAgIDI0OCwgNDMsIDYxLCA1MSwgMywgODAsIDI0OCwgNTUsIDIyNywgMTE0LCA2MSwgMjA2LCAyMjMsIDIwOCwgODYsIDMsIDI0MywgCisgICAgODUsIDIwNiwgMjIzLCAyMDgsIDg2LCAzLCA0OSwgMTYyLCAyNDgsIDQzLCAyMDYsIDIyMywgMjA4LCA4NiwgMywgNTAsIAorICAgIDE2MiwgMjQ4LCA0MywgMjI4LCA4LCAyNDYsIDYxLCA2MSwgNTEsIDMsIDIwNiwgMjIxLCA0OSwgMjE3LCA1OSwgNjEsIDUxLCAKKyAgICAzLCAyMjYsIDI1MSwgNDksIDIxNywgNTksIDYxLCA1MSwgMywgMjI2LCAyNTEsIDUwLCAyMTcsIDU5LCA2MSwgNTEsIDMsIAorICAgIDIwNiwgMjIxLCA1MCwgMjE3LCA1OSwgNjEsIDI0NiwgNjIsIDMsIDIwNiwgMjIxLCA0OSwgMjE3LCA1OSwgNjEsIDI0NiwgCisgICAgNjIsIDMsIDIyNiwgMjUxLCA0OSwgMjE3LCA1OSwgNjEsIDI0NiwgNjIsIDMsIDIyNiwgMjUxLCA1MCwgMjE3LCA1OSwgNjEsIAorICAgIDI0NiwgNjIsIDMsIDIwNiwgMjIxLCA1MCwgMjE3LCA1OSwgMjA2LCAyMjEsIDQ5LCAyMDgsIDg1LCAyMDYsIDIyMSwgNTAsIAorICAgIDIwOCwgODUsIDIyNiwgMjUxLCA0OSwgMjA4LCA4NSwgNjEsIDIyNSwgMTAsIDIxMSwgMTc3LCA2MiwgMjI1LCAxMCwgMjExLCAKKyAgICAxNzcsIDYxLCAyMjUsIDEwLCA1LCAyMTEsIDE3NywgNjIsIDIyNSwgMTAsIDUsIDIxMSwgMTc3LCAyMjYsIDI1MSwgNTAsIAorICAgIDIwOCwgODUsIDYyLCAyMTAsIDIxNSwgMywgMjE2LCAxNjIsIDI0NiwgNywgMjA3LCAzLCAyMTIsIDE1LCAyNDUsIDIzNiwgCisgICAgNjIsIDIxMSwgOTQsIDYxLCAyMTEsIDk0LCAyMjcsIDEzMSwgMjA5LCAxNywgMjEwLCAyMTQsIDI1MCwgNzgsIDIyMSwgMTg4LCAKKyAgICAyNDQsIDE5LCAyMjEsIDE4OCwgMjQ1LCAyMDQsIDIxOSwgMjUwLCA2MiwgMjA5LCAxNjEsIDYxLCAyMDksIDE2MSwgMjQ4LCAKKyAgICAyNDgsIDI0NywgMjMzLCAyNDgsIDI0OCwgOTgsIDMsIDI0NiwgMTY4LCAyNDgsIDI0OCwgOTgsIDMsIDIwMywgMTk2LCAyMTQsIAorICAgIDI1NCwgMjA3LCA0LCAzLCAyMTYsIDE5MSwgMjQyLCA0OCwgMjM2LCA0NywgMjQ4LCAxMDIsIDYxLCAyMTIsIDIzNywgMjE4LCAKKyAgICAxNTksIDYyLCAyMTIsIDIzNywgMjE4LCAxNTksIDIxMywgNjgsIDIxNiwgNzMsIDIxNSwgMTk4LCAyMzksIDIwMSwgMjM3LCAKKyAgICA1NiwgMjQ3LCAxNzcsIDYyLCA0OSwgMjE4LCA1OSwgMjMxLCAzNSwgNjIsIDUwLCAyMTgsIDU5LCAyMzEsIDM1LCA2MSwgNDksIAorICAgIDIxOCwgNTksIDIzMSwgMzUsIDYxLCAxMTIsIDIxOCwgNTksIDIzMSwgMzUsIDYxLCA1MCwgMjE4LCA1OSwgMjMxLCAzNSwgCisgICAgNjEsIDEyMSwgMjE4LCA1OSwgMjMxLCAzNSwgMjEyLCA2MywgMjUsIDI0NSwgMTI5LCAyNDcsIDExLCA1NCwgMjE2LCAyMDMsIAorICAgIDU0LCAyNDgsIDYyLCA1NCwgMjQ3LCA4MywgMjUwLCAyMDgsIDIxOSwgMjMwLCAyNDUsIDEzMCwgMjQ2LCAxNDMsIDIxNiwgCisgICAgNTksIDI0NSwgMTMxLCA3NiwgMjI3LCA5LCAyNDUsIDEzMSwgNzYsIDIzMCwgMTUxLCAyMTEsIDk1LCAyNSwgMjQ1LCAxMzgsIAorICAgIDI0MCwgNzUsIDk3LCAyNTEsIDExNSwgMjEzLCA3MCwgMjM3LCAxMzEsIDI1LCAyMTIsIDE1OSwgMjE5LCAzMywgOTcsIDIwMywgCisgICAgMSwgMjAzLCA3NiwgMjA4LCA3NSwgMzUsIDIzNywgNTEsIDIwOCwgNzUsIDM1LCAyMjgsIDMzLCAyMDgsIDc1LCAzNSwgMjM5LCAKKyAgICAyNDksIDIwOCwgNzUsIDM1LCAyMDksIDE4LCAyMDgsIDc1LCAzNSwgMjA0LCAxNiwgMjA4LCA3NSwgMzUsIDIwNCwgODAsIAorICAgIDIwOCwgNzUsIDM1LCAyMjQsIDEyLCAyMDgsIDc1LCAzNSwgMjQxLCAxNzksIDIwNCwgMzcsIDc2LCAyNDMsIDI0OSwgNjEsIAorICAgIDIzOSwgMTE0LCAyNDAsIDEwMiwgNjEsIDIxMiwgMzAsIDI0MCwgMTAyLCA2MiwgMjEyLCAzMCwgMjQwLCAxMDIsIDYxLCAKKyAgICAyMTAsIDIxNSwgMywgMjE2LCAxNjIsIDIzOSwgMjQ1LCAyMTcsIDU2LCAyMjQsIDI5LCAyMjgsIDEsIDIxNywgNTYsIDIyNCwgCisgICAgMjksIDIyNCwgMjM0LCAyNDAsIDQzLCA1NCwgMjQxLCAxNzksIDIyNSwgMTI3LCA1NCwgMjMwLCA2OSwgMjE0LCAyMTgsIAorICAgIDIwNiwgMjA1LCAyMjIsIDIyNCwgMjE4LCA3MywgMjUwLCAxMTQsIDIwOSwgMjA1LCAyMzgsIDE3OCwgMjQ3LCA1NywgMjI3LCAKKyAgICAxODQsIDIwNSwgMjAyLCAyMjcsIDE0NSwgMjE0LCAxODcsIDIxNSwgMjAsIDI0NywgNDMsIDI1MCwgMTQ1LCAyMTgsIDEwOCwgCisgICAgNjEsIDI0NiwgMTUwLCAyMjksIDgxLCA2MSwgMjQ2LCAxNTAsIDIxNywgNDgsIDYxLCAyNDYsIDE1MCwgMjE1LCAyMDYsIDYxLCAKKyAgICAyNDYsIDE1MCwgMjQ4LCA1NCwgNjEsIDI0NiwgMTUwLCAyMjksIDMxLCA2MSwgMjQ2LCAxNTAsIDIxOSwgNDUsIDYyLCAyNDYsIAorICAgIDE1MCwgMjI5LCA4MSwgNjIsIDI0NiwgMTUwLCAyMTcsIDQ4LCA2MiwgMjQ2LCAxNTAsIDIxNSwgMjA2LCA2MiwgMjQ2LCAKKyAgICAxNTAsIDI0OCwgNTQsIDYyLCAyNDYsIDE1MCwgMjI5LCAzMSwgNjIsIDI0NiwgMTUwLCAyMTksIDQ1LCA2MiwgMjExLCAyMjYsIAorICAgIDIxMCwgMjI3LCA2MSwgMjM3LCA1NiwgMjEwLCAyMjcsIDYxLCAyNDMsIDIyMiwgMjEwLCAyMjcsIDYyLCAyNDYsIDUsIDIxMCwgCisgICAgMjI3LCA2MSwgMjExLCAyMjYsIDIxMCwgMjI3LCA2MiwgMjM3LCA1NiwgMjEwLCAyMjcsIDYyLCAyNDMsIDIyMiwgMjEwLCAKKyAgICAyMjcsIDYxLCAyNDYsIDUsIDIxMCwgMjI3LCAyMzYsIDQ3LCAyMTEsIDE4MiwgMjE3LCA1NiwgMjIxLCAxNjAsIDI0MSwgCisgICAgMTM5LCAyMjEsIDE2MCwgMjQ4LCAxNTgsIDI0MSwgMTM5LCAyMjEsIDE1NSwgMjQ4LCAxNTgsIDIxMiwgODEsIDIyMSwgMTU1LCAKKyAgICAyMjMsIDE5NSwgMjM5LCAyMTcsIDU0LCAyMjMsIDE5NSwgMjIzLCA2NiwgNTQsIDIyMywgMTk1LCAyMTMsIDU3LCA1NCwgCisgICAgMjA0LCA0NiwgMjEwLCA4OSwgMjQ1LCAxMzAsIDI0MSwgMTc2LCAyMTAsIDg5LCAyNDUsIDEzMCwgMjA2LCAyMzMsIDIxNiwgCisgICAgMTM5LCA5NywgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMjAsIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTE4LCAKKyAgICAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDExNywgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMTUsIAorICAgIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTEzLCAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDExMSwgCisgICAgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMDksIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIzOCwgMTc2LCAKKyAgICAyMjUsIDcwLCA2MiwgMjA2LCAyMzMsIDIxNiwgMTM5LCA5NywgMjE2LCAxNDAsIDIxOSwgOTUsIDk3LCAyMTksIDY4LCAyMTksIAorICAgIDk1LCA5NywgMjE4LCAyMzgsIDIxOSwgOTUsIDU0LCAyMDQsIDM1LCA5NywgMjQzLCAyMTQsIDI0MCwgMTAxLCAyNDMsIDIxNCwgCisgICAgMjQwLCAxMDAsIDI0MywgMjE0LCAyNDAsIDk5LCAyNDMsIDIxNCwgMjQwLCA5OCwgMjQzLCAyMTQsIDI0MCwgOTcsIDI0MywgCisgICAgMjE0LCAyNDAsIDk2LCA2MSwgMjQ2LCA2MiwgMywgNzAsIDIxNiwgMTYsIDYxLCAyNDYsIDYyLCAzLCAxMjAsIDI0MywgODMsIAorICAgIDYyLCAyNDYsIDYyLCAzLCA2MSwgNzAsIDIxNiwgMTYsIDYyLCAyNDYsIDYyLCAzLCAxMjAsIDYxLCAyNDMsIDgzLCAyMjQsIAorICAgIDQ1LCAzNSwgMjAzLCA3NiwgMjI0LCA0NSwgMzUsIDIwMywgMCwgMjQzLCAxOTUsIDM1LCAyMzcsIDI0OCwgMjAzLCA3NiwgCisgICAgMjQzLCAxOTUsIDM1LCAyMjcsIDE3NywgMjAzLCAwLCAyNDMsIDE5NSwgMzUsIDIyNywgMTc3LCAyMDMsIDc2LCAyNDMsIAorICAgIDE5NSwgMzUsIDIzNywgMjQ4LCAyMDMsIDAsIDYxLCAyMzksIDIyNSwgNjIsIDIzOSwgMjI1LCAyMzcsIDEzMSwgMjUsIDIxOCwgCisgICAgMTYzLCAyNTAsIDIyOCwgMjQ1LCAxMjgsIDIxMCwgMTU0LCAyMTEsIDEwMywgNzYsIDI1MSwgOTIsIDIxNCwgMjAzLCAyNTEsIAorICAgIDI5LCAyMzksIDE5NywgMjM4LCAxODcsIDIxMSwgMTAzLCA3NiwgMjM3LCAyNiwgMjUwLCA0MiwgOTcsIDIzOSwgMjEzLCAKKyAgICAyMTksIDIwNywgNjEsIDIxMSwgOTQsIDEyNiwgMjI3LCAxMDksIDI0NSwgMTgxLCAyMTYsIDE2LCAxMjYsIDIyNywgMTA5LCAKKyAgICAyNDUsIDE4MSwgMjI3LCAyMjIsIDIwNCwgOTEsIDU0LCAxMzgsIDIwNSwgMTc5LCA1NCwgMjQyLCA3NSwgMjQwLCA0MywgNTQsIAorICAgIDI0MiwgNzUsIDIyNSwgMTI3LCA1NCwgMjMwLCAyNTAsIDI0MCwgNDMsIDI1LCAyMjUsIDEyNywgNTQsIDIyNSwgMTI3LCAyNSwgCisgICAgMjQwLCA0MywgNTQsIDIyNSwgMTI3LCAzLCAyMTEsIDMyLCA1NCwgMjI1LCAxMjcsIDMsIDIxMSwgMzIsIDI1LCAyMjUsIAorICAgIDEyNywgMjUsIDI0MCwgNDMsIDU0LCA4MCwgMjI1LCAxMjcsIDMsIDIxMSwgMzIsIDU0LCAyMzYsIDEwNiwgMjI1LCAxMjcsIAorICAgIDMsIDIxMSwgMzIsIDU0LCAyMjUsIDEwLCA2MSwgMjQ2LCA2MSwgMjI1LCAxMCwgNjIsIDI0NiwgNjEsIDIyNSwgMTAsIDUsIAorICAgIDYxLCAyNDYsIDYxLCAyMjUsIDg2LCA5NywgMjQzLCAxMzUsIDk3LCAyMDYsIDIzMCwgMjE5LCA2NywgOTcsIDI0NSwgMjQ3LCAKKyAgICAyMzksIDk3LCAyMDYsIDIwMSwgMjIyLCAyMTcsIDI0NiwgMjAzLCAyMTksIDEzNywgMjMwLCA3NSwgMjA1LCAyNDAsIDI0NiwgCisgICAgMTIzLCA2MiwgMjI0LCAzMCwgMjI3LCAxMjgsIDIxMywgMTAxLCAyMTMsIDE0MCwgMjE3LCAzOCwgMjEzLCAxMjAsIDIxMiwgCisgICAgMTAsIDI0OCwgMjUxLCAyNDgsIDIxNywgMTAzLCAyMjksIDE1MSwgNjEsIDI0MiwgNTgsIDIyNSwgMTIyLCA2MSwgMjQyLCAKKyAgICA1OCwgMjI5LCA4MSwgNjIsIDI0MiwgNTgsIDIyNSwgMTIyLCA2MiwgMjQyLCA1OCwgMjI5LCA4MSwgMjEyLCAxNiwgMjA0LCAKKyAgICAzLCAyMTIsIDE5LCAyMTAsIDIxNSwgMjQ4LCAxMzUsIDI0NiwgNywgMjE2LCAxOTAsIDYyLCAyMTIsIDE1LCAyMDksIDE5LCAKKyAgICAyNDYsIDgsIDI1LCAyMTYsIDE5MCwgMjA3LCAxNzQsIDYxLCAyMTIsIDIzNywgMjE4LCAxNTksIDIwNywgMTc0LCA2MiwgCisgICAgMjEyLCAyMzcsIDIxOCwgMTU5LCA2MSwgMjQzLCAyMjIsIDIzMSwgNTAsIDIxMSwgMTc3LCAyNDUsIDEyNCwgMjI4LCAxNSwgCisgICAgMjQzLCAxNjIsIDI0NywgMzksIDIxOSwgMjUzLCAyMTgsIDE2MywgMjQ3LCA0MCwgMjEyLCA0OCwgMjM3LCAzNiwgMywgNjEsIAorICAgIDI0NSwgMTMwLCA0MywgMjQ1LCAxMjQsIDIyOCwgMTUsIDI0NiwgMTk1LCAyMjEsIDE5MiwgMjQxLCA2MiwgMjUwLCAyNTUsIAorICAgIDIyMCwgMjYsIDQ5LCAyMDQsIDY2LCAyMDgsIDExMywgNjIsIDIwNywgMTMxLCA0OSwgMjA0LCA2NiwgMjA4LCAxMTMsIDYxLCAKKyAgICAyMDcsIDEzMSwgNDksIDIwNCwgNjYsIDIwOCwgMTEzLCA2MiwgNDksIDIyOCwgMTYsIDIyNCwgMjMzLCA2MSwgNDksIDIyOCwgCisgICAgMTYsIDIyNCwgMjMzLCAyNDIsIDUzLCAyMTIsIDQwLCA1NCwgNzksIDYxLCAyNDIsIDY5LCAyMDgsIDg1LCA0OSwgMjQ2LCAKKyAgICAxNiwgMjQxLCA2MiwgMTAzLCAyMTQsIDI1NCwgMjQwLCA4NCwgMjQzLCAyMjgsIDIzMSwgNTAsIDYxLCAyNDYsIDYyLCAyMzEsIAorICAgIDUwLCA2MiwgMjExLCAxNzcsIDYyLCAyMDgsIDUwLCAyMTYsIDg0LCA0OSwgMjQxLCA2MSwgMjE2LCA4NCwgNDksIDI0MSwgCisgICAgNjAsIDI1MCwgNTQsIDE2LCAzNSwgMjA2LCAyMDUsIDc5LCAyNDYsIDYyLCAzLCAyMTEsIDMyLCAyNSwgMTIwLCAxODcsIDU1LCAKKyAgICAyMTgsIDI1NCwgMjE2LCAxMywgMjMwLCAyNTIsIDIxOCwgMjU0LCAyMjcsIDIxOSwgMjMwLCAyNTIsIDIxOCwgMjU0LCAyMzAsIAorICAgIDIzOSwgMjE4LCAyNTQsIDYyLCAyNDUsIDEzMSwgMjIwLCAzMiwgMjEzLCA4LCAyMTIsIDI1MiwgMjEyLCAyMDMsIDI0NiwgCisgICAgOTAsIDI0NywgMTksIDIzNiwgMjMxLCAyMTIsIDg5LCAyMzgsIDE4OCwgMjA0LCAzLCAyMzYsIDIzLCAyMzgsIDE4OCwgMywgCisgICAgMjM3LCAxMDEsIDIyNSwgMTA3LCAxNiwgMzUsIDIyNywgMTMzLCAyMjQsIDEyLCAyMDcsIDQsIDIyMCwgMzIsIDIzNywgMjM5LCAKKyAgICAyMzksIDE0OCwgMjM5LCAyMjYsIDIzMSwgNTAsIDIzNiwgMTI2LCAyNDAsIDM0LCAyMTUsIDE1LCA1MSwgMjM5LCAxNDcsIAorICAgIDI0NSwgMTY0LCAyMTIsIDY2LCAyMzUsIDE2MywgMjEyLCA2OSwgMjE4LCAyMzAsIDMsIDI0OCwgMjUxLCAyMDksIDE0NCwgCisgICAgMjMwLCAxNjksIDI0OCwgMjM2LCA5NywgMjM3LCA1OSwgMjM3LCAyNTAsIDk3LCAyMzksIDEwNSwgMjE3LCAxODAsIDI0NSwgCisgICAgMTAwLCAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDYxLCAyMzksIDIyNiwgMywgMjM2LCAxMDYsIDEwMSwgNjIsIDIxMSwgMzMsIAorICAgIDYyLCAyMTUsIDI1LCAyMTQsIDE5MCwgMjA2LCAyMjEsIDI0OCwgMzgsIDIxNCwgMTkwLCA2MiwgMjE0LCAxOTAsIDIyNiwgCisgICAgMjUxLCAyNDgsIDM4LCAyMTQsIDE5MCwgNjEsIDIxNCwgMTkwLCA2MSwgNzksIDI0NiwgMTY5LCA4MiwgMjA5LCAxNjIsIAorICAgIDIyNywgNDcsIDU0LCAyMDksIDIyMSwgMjQyLCA1MiwgMjUxLCA1MiwgMjQxLCA1NywgMjE2LCAxODgsIDIzOSwgMjM4LCAKKyAgICAyMTYsIDE4OCwgMjM3LCAxMjMsIDIwNSwgMjI4LCAyMzcsIDEyMywgMjAzLCAyMjAsIDIzNywgMTIzLCAyMjYsIDI1MSwgNTAsIAorICAgIDIxOSwgOCwgMjE5LCA4LCAyMDYsIDIyMSwgNTAsIDIxOSwgOCwgNjEsIDIyMiwgOTcsIDYyLCAyMjIsIDk3LCAyNDYsIDE2OSwgCisgICAgODIsIDc5LCAyNDYsIDE2OSwgODIsIDIyMywgMjI0LCAyMDMsIDE5NiwgNzksIDIyMywgMjI0LCAyMDMsIDE5NiwgMjQ4LCAKKyAgICAyNDgsIDIwMywgMTk2LCA3OSwgMjQ4LCAyNDgsIDIwMywgMTk2LCAyMTksIDIwNywgMzAsIDI0NSwgMTMwLCA3OSwgMzAsIAorICAgIDI0NSwgMTMwLCAxNzEsIDI0NiwgMjE4LCAyNDUsIDEzMCwgNzksIDE3MSwgMjQ2LCAyMTgsIDI0NSwgMTMwLCA4LCAyNDUsIAorICAgIDEzMCwgMjEzLCA3NywgNjEsIDgsIDI0NSwgMTMwLCAyMTksIDIwNywgOCwgMjQ1LCAxMzAsIDIyNSwgMTI0LCAyNDUsIDEzMCwgCisgICAgMjExLCA5NSwgNzYsIDI0NCwgMTM3LCAyMzksIDE0NywgMjA5LCAxODAsIDI1MCwgNTksIDIzOSwgMTQ3LCAyNDgsIDI0OSwgCisgICAgMjUwLCA1OSwgNzksIDIzOSwgMTQ3LCAyNDgsIDI0OSwgMjUwLCA1OSwgMjM5LCAxNDcsIDI0NiwgMywgMjUwLCA1OSwgNjIsIAorICAgIDIzOSwgMTQ3LCAyMTgsIDYxLCAyMTEsIDk0LCA2MSwgMjM5LCAxNDcsIDIxOCwgNjEsIDIxMSwgOTQsIDIxMSwgMjIxLCAKKyAgICAyMTEsIDQyLCAyMTksIDIwNywgNjEsIDIxMSwgOTQsIDQzLCA2MSwgMjExLCA5NCwgMTcxLCAyNDYsIDIxOCwgNjIsIDIxMSwgCisgICAgOTQsIDYyLCAyNDYsIDIxOCwgNjEsIDIxMSwgOTQsIDIxOSwgMjA3LCA2MiwgMjExLCA5NCwgNzksIDIxOSwgMjA3LCA2MiwgCisgICAgMjExLCA5NCwgMjE4LCAxMTgsIDIxMSwgOTQsIDIxMywgNzcsIDYxLCAyMTEsIDk0LCA3OSwgMjUwLCA1OSwgMTcxLCAyNDYsIAorICAgIDIxOCwgMjUwLCA1OSwgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCAyNDEsIDE0MywgMjE4LCA2MSwgNjIsIDIxMSwgCisgICAgOTQsIDI0MSwgMTQzLCAyMTgsIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgMjEyLCA4OCwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIAorICAgIDI0MSwgMTQzLCAyMTgsIDYxLCAyMTYsIDE0MSwgNjIsIDIxMSwgOTQsIDc5LCAyNDEsIDE0MywgMjE4LCA2MSwgMjE2LCAKKyAgICAxNDEsIDYyLCAyMTEsIDk0LCAyMDcsIDE1NSwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIxMiwgODMsIDIxOCwgNjEsIDI1MCwgCisgICAgNTksIDIwOSwgMTgwLCAyNTAsIDU5LCAxNzEsIDI0NiwgMjE4LCAyMDksIDE4MCwgMjUwLCA1OSwgNzksIDIwOSwgMTgwLCAKKyAgICAyNTAsIDU5LCAyMTIsIDg4LCAyMTgsIDIxOCwgNjIsIDI1LCA2MSwgMjM5LCAyMDAsIDYyLCAyMzksIDIwMCwgNjEsIDIzOSwgCisgICAgMjAwLCAyNDEsIDE0MywgMjE4LCAyMTgsIDIxOSwgMjA3LCA2MiwgMjM5LCAyMDAsIDQzLCAxNzEsIDI0NiwgMjE4LCAyNDEsIAorICAgIDE0MywgMjE4LCA2MSwgMjExLCA5NCwgNzksIDIwOSwgMTgwLCAyMTgsIDExOCwgMjUwLCA1OSwgMjEyLCAxNywgMjA4LCAKKyAgICAyNDQsIDIwOCwgNzgsIDIxMiwgMTcsIDc5LCAyNDYsIDE0NiwgMjEyLCAxNywgMjExLCAyMjMsIDc5LCAyMTEsIDIyMywgCisgICAgMjQ4LCAyNDksIDI1MCwgNTksIDI0MSwgMTQzLCAyMDksIDE4MCwgMjE3LCAyMTMsIDI1MCwgNTksIDc5LCAyNDEsIDE0MywgCisgICAgMjA5LCAxODAsIDIxNywgMjEzLCAyNTAsIDU5LCAyNDUsIDEzMSwgODIsIDIxMywgNzcsIDYxLCAyNDYsIDYxLCAxODIsIAorICAgIDEwMywgMjQ1LCAxMzEsIDgyLCAyMjYsIDI1MSwgNTAsIDI0MiwgNTAsIDYxLCAyMTEsIDE3NywgMjA2LCAyMjEsIDUwLCAKKyAgICAyNDIsIDUwLCA2MSwgMjExLCAxNzcsIDIyNiwgMjUxLCA1MCwgMjEzLCA3NywgNjEsIDIxMSwgMTc3LCAyMDYsIDIyMSwgNTAsIAorICAgIDIxMywgNzcsIDYxLCAyMTEsIDE3NywgNjIsIDIxNywgNDcsIDEzMSwgMjE5LCAyMzMsIDYxLCAyMTcsIDQ3LCAxMzEsIDIxOSwgCisgICAgMjMzLCA2MSwgMjQwLCAyMTIsIDEzMSwgMjE5LCAyMzMsIDYyLCAyNDMsIDIyMiwgMjI0LCAxMDMsIDYxLCAyMDMsIDE5NiwgCisgICAgNzksIDI0MCwgMjEyLCAxMzEsIDk3LCAxNTcsIDgwLCAxNDIsIDIyNSwgMTAsIDgwLCAxNDIsIDc5LCA4MCwgMTQyLCA3OSwgCisgICAgMjEyLCAxMjAsIDIwNywgMTc0LCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDIxMiwgMTIwLCAyNDUsIAorICAgIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDUyLCAyMDcsIDE3NCwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgCisgICAgMjE5LCAyMzMsIDc5LCA1MiwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDc5LCAxMjQsIDIxMiwgMTIwLCAKKyAgICAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDEyNCwgNTIsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIAorICAgIDIxOSwgMjMzLCAyNDUsIDg2LCAyMTEsIDc4LCAyMTksIDg5LCAyLCAyMTksIDIzMywgNzksIDI0MCwgMjEyLCAxMzEsIDIxOSwgCisgICAgMjMzLCA3OSwgMjM3LCA1NiwgMjQwLCAyMTIsIDEzMSwgMjE5LCAyMzMsIDc5LCA2MiwgMjM3LCA1NSwgMjE1LCAxOTgsIDc5LCAKKyAgICA2MiwgMjM3LCA1NiwgMjQ3LCAxNzcsIDIzOSwgMjAxLCAyMzcsIDU1LCAyMTUsIDE5OCwgMjM5LCAyMDEsIDIzNywgNTYsIAorICAgIDI0NywgMTc3LCAyMjUsIDEwLCA0OSwgMjE5LCA3NywgMjE5LCAyMzMsIDIyNSwgMTAsIDUwLCAyMTksIDc3LCAyMTksIDIzMywgCisgICAgMjI1LCAxMCwgMjM5LCAyMTQsIDQ5LCAyMTksIDc3LCAyMTksIDIzMywgMjI1LCAxMCwgMjM5LCAyMTQsIDUwLCAyMTksIDc3LCAKKyAgICAyMTksIDIzMywgMjI1LCAxMCwgMjI3LCAyMTcsIDI1MCwgMjE4LCAyNDcsIDIyNywgMjE5LCAyMzMsIDIyNSwgMTAsIDIxNiwgCisgICAgMTEsIDI1MCwgMjE4LCAyNDcsIDIyNywgMjE5LCAyMzMsIDc5LCAyMjcsIDIxNywgMjUwLCAyMTgsIDIxNywgMzEsIDEzMSwgCisgICAgMjE5LCAyMzMsIDc5LCAyMTYsIDExLCAyNTAsIDIxOCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDIyNywgMjE3LCAKKyAgICAyNTAsIDIxOCwgMjQ3LCAyMjcsIDIxOSwgMjMzLCA3OSwgMjE2LCAxMSwgMjUwLCAyMTgsIDI0NywgMjI3LCAyMTksIDIzMywgCisgICAgMTU3LCA0OSwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI3LCAyMTksIDIzMywgMTU3LCA1MCwgMjA4LCAxMzMsIDIxMywgCisgICAgMzMsIDI0NywgMjI3LCAyMTksIDIzMywgMjI1LCAxMCwgNDksIDI0NSwgOTMsIDI0NywgMjI3LCAyMTksIDIzMywgMjI1LCAKKyAgICAxMCwgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAyMTksIDIzMywgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAxMDUsIDI0MywgCisgICAgMTc0LCAxODIsIDQzLCAxNywgMTA4LCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDE0NywgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAKKyAgICAxNDksIDI0MywgMTc0LCAxODIsIDQzLCAxNywgMTcwLCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDE5NSwgMjQzLCAxNzQsIAorICAgIDE4MiwgNDMsIDE3LCAyMTMsIDExMSwgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAxOTksIDI0MywgMTc0LCAxODIsIDQzLCAxNywgCisgICAgMjIyLCA2MywgMjQzLCAxNzQsIDE4MiwgNDMsIDQyLCAyMDksIDE1MiwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDEwNSwgMjQzLCAKKyAgICAxNzQsIDQzLCA0MSwgMTcsIDEwOCwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDE0NywgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIAorICAgIDE0OSwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDE3MCwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDE5NSwgMjQzLCAxNzQsIDQzLCAKKyAgICA0MSwgMTcsIDIxMywgMTExLCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTk5LCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMjIyLCAKKyAgICA2MywgMjQzLCAxNzQsIDQzLCA0MSwgNDIsIDIwOSwgMTUyLCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAxMDUsIDI0MywgCisgICAgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDEwOCwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMTQ3LCAyNDMsIDE3NCwgMTgyLCAKKyAgICA0MywgNDEsIDE3LCAxNDksIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDE3MCwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAKKyAgICAxNywgMTk1LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAyMTMsIDExMSwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgCisgICAgMTk5LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAyMjIsIDYzLCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDQyLCAyMDksIAorICAgIDE1MiwgNzksIDIwNCwgMjYsIDg2LCA0NywgNzksIDkxLCA1NCwgNzksIDIyNCwgMTAzLCA1NCwgNzksIDI0MywgMTM3LCA1NCwgCisgICAgNzksIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDc5LCA4NiwgNDcsIDc5LCAxNTMsIDI0MSwgMTc2LCA0NywgMjQyLCA2MywgCisgICAgMjE4LCA2MywgODYsIDQ3LCA3OSwgMjE1LCAxOTAsIDg2LCA0NywgMjA4LCA4NCwgODYsIDQ3LCA3OSwgMjA4LCA4NCwgODYsIAorICAgIDQ3LCAyNDQsIDE0MywgMjA4LCA4NCwgODYsIDQ3LCA3OSwgMjQ0LCAxNDMsIDIwOCwgODQsIDg2LCA0NywgNjIsIDg2LCA0NywgCisgICAgMjA5LCAzMSwgMjA4LCAxNDMsIDg2LCAyNTAsIDk0LCAyMDksIDMxLCAyNDcsIDI0NiwgODYsIDI1MCwgOTQsIDYyLCA4NiwgCisgICAgMjUwLCA5NCwgNzksIDYyLCAyNDUsIDg2LCAxODMsIDI1LCA4NiwgNDcsIDc5LCA2MiwgMjQ1LCA4NiwgMTc3LCAyNSwgODYsIAorICAgIDQ3LCAyMTEsIDE3NCwgNjIsIDg2LCA0NywgNzksIDI0NSwgMjE3LCA2MiwgODYsIDQ3LCAyMTYsIDEwLCA2MSwgODYsIDQ3LCAKKyAgICAyMjcsIDIxNiwgNjEsIDg2LCA0NywgMjQ5LCAyNCwgMjEzLCA3NywgNjEsIDg2LCA0NywgMjM5LCAxMTcsIDIxMywgNzcsIAorICAgIDYxLCA4NiwgNDcsIDc5LCAyMjYsIDI1MSwgMjE2LCA5LCA2MSwgODYsIDQ3LCA3OSwgMjA2LCAyMjEsIDIxNiwgOSwgNjEsIAorICAgIDg2LCA0NywgMjIxLCAxNjIsIDIyNiwgMjUxLCAyMTYsIDksIDYxLCA4NiwgNDcsIDI0NSwgOTMsIDIyNywgMTQsIDIyMSwgCisgICAgMTYyLCAyMDYsIDIyMSwgMjE2LCA5LCA2MSwgODYsIDQ3LCA0MywgNzksIDYxLCA4NiwgNDcsIDIwNCwgMzIsIDg2LCA0NywgCisgICAgMjQ4LCA0MiwgMjExLCAyMzgsIDI0MSwgMTc2LCA0NywgMjQ4LCA0MiwgODYsIDQ3LCAyNDgsIDQyLCAxNTMsIDI0MSwgMTc2LCAKKyAgICA0NywgNzksIDI0OCwgNDIsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDc5LCAyNDgsIDQyLCA4NiwgNDcsIDc5LCAyNDgsIAorICAgIDQyLCAxNTMsIDI0MSwgMTc2LCA0NywgMjA5LCAxODIsIDg2LCA0NywgNzksIDIwOSwgMTgxLCA4NiwgNDcsIDIwNCwgNTYsIAorICAgIDg2LCA0NywgNzksIDIwNCwgNTYsIDg2LCA0NywgMjIwLCAzLCA4NiwgNDcsIDUyLCAyNDUsIDkzLCAyMjcsIDE0LCAxMjYsIAorICAgIDI0MywgMTg0LCAyNTAsIDIxNywgNjEsIDIwOCwgODYsIDI0NSwgMTk1LCA1LCA2MSwgMjA4LCA4NSwgMjE4LCAyMzMsIDE3MSwgCisgICAgMjEwLCAyNDQsIDE3MSwgMjEwLCAxOTcsIDQ5LCAyMTUsIDkzLCAyNDksIDExLCAyNDQsIDQzLCA1MCwgMjE1LCA5MywgMjQ5LCAKKyAgICAxMSwgMjQ0LCA0MywgMjE5LCAyNDUsIDMsIDcwLCAyMzEsIDYsIDIxNiwgNzQsIDIxMiwgMSwgMjE3LCAyNDgsIDIxMCwgCisgICAgMjQ0LCAyMTAsIDE5OCwgMjE3LCAyNDgsIDIxMiwgMCwgODAsIDI0OCwgMjMxLCAzLCAyMzYsIDEwNiwgOTUsIDEzLCAyMTUsIAorICAgIDI0NSwgMjQzLCAyMjcsIDE2MywgMjQzLCAxMzYsIDEzLCAyNDAsIDg0LCAyNDMsIDIyNywgMTAzLCAyMjcsIDM3LCAyNTAsIAorICAgIDIyNiwgMTAzLCAyMjcsIDM3LCAyMTksIDI0NCwgNjEsIDI0MywgMjIyLCAzLCAyNDYsIDIxNiwgMjQzLCA4NSwgMjUsIDMsIAorICAgIDI0MywgODUsIDI0MSwgMTE1LCA3NiwgMjIwLCAxLCAyMDYsIDIxMiwgMjI2LCAyNTEsIDUwLCAyNDUsIDE2NiwgMywgMjQzLCAKKyAgICA4NSwgMjA2LCAyMjEsIDQ5LCAyNDUsIDE2NiwgMywgMjQzLCA4NSwgNDksIDIxOSwgMjA5LCAyMzAsIDk5LCA1MCwgMjE5LCAKKyAgICAyMDksIDIzMCwgOTksIDIzOSwgMTAyLCAyMTksIDIwOSwgMjMwLCA5OSwgMjI4LCA4LCAxMTIsIDIxMCwgMywgMjI4LCA4LCAKKyAgICAxMjEsIDIxMCwgMywgNDksIDI1LCA1MCwgNTIsIDIwNywgMTczLCA0OSwgMjUsIDUwLCAyMTAsIDMsIDQ5LCAyMjMsIDIyOCwgCisgICAgMTYzLCA1MCwgMjEwLCAzLCAxNjMsIDQ5LCAyMTAsIDMsIDExMiwgMjEwLCA0LCAzLCAyNDYsIDYyLCA1NSwgMjI2LCAyNDcsIAorICAgIDI0MywgMTQyLCAyNDcsIDEzNywgMjM2LCAxMDYsIDIxNSwgMTM1LCA2MSwgMjQ1LCAyMTYsIDI0MywgMjIxLCA2MSwgMjQ1LCAKKyAgICAyMTYsIDI0MywgMjIyLCAzLCA5NiwgMjA4LCAyNTQsIDYxLCAyNDUsIDIxNiwgMjQzLCAyMjIsIDMsIDg2LCAyMDgsIDI1NCwgCisgICAgNjEsIDUxLCAzLCA5NiwgMjA4LCAyNTQsIDYxLCA1MSwgMywgODYsIDIwOCwgMjU0LCAxMywgNDksIDYxLCA1MSwgMTU1LCAKKyAgICAxMywgNTAsIDYxLCA1MSwgMTU1LCAxMywgNDksIDI1MCwgMjE4LCAxNTUsIDEzLCA1MCwgMjUwLCAyMTgsIDE1NSwgMTMsIAorICAgIDQ5LCA1MiwgMjUwLCAyMTgsIDE1NSwgMTMsIDUwLCA1MiwgMjUwLCAyMTgsIDE1NSwgMTMsIDQ5LCA2MSwgMjA4LCAxMzMsIAorICAgIDIxMywgMzMsIDE1NSwgMTMsIDUwLCA2MSwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgMTMsIDQ5LCAyMzksIDIxNCwgMjE5LCAKKyAgICA3NiwgMTMsIDUwLCAyMzksIDIxNCwgMjE5LCA3NiwgMTc3LCAyMTcsIDU4LCA0NywgMTgzLCAyMTcsIDU4LCA0NywgMjUwLCAKKyAgICAxOTQsIDIzOCwgMjI2LCAyNDYsIDYyLCA0NywgMjQ2LCAxOCwgMjM4LCAyMjYsIDI0NiwgNjIsIDQ3LCA1MCwgNTMsIDMsIAorICAgIDQzLCAyMTgsIDc2LCAxNjMsIDk2LCA0NywgMTYzLCA4NiwgNDcsIDE2MywgNDksIDUwLCA0NywgMTYzLCA5NiwgNTIsIDQ3LCAKKyAgICAxNjMsIDg2LCA1MiwgNDcsIDE2MywgNDksIDUwLCA1MiwgNDcsIDE2MywgOTYsIDUzLCAyMzksIDEyMCwgMTQyLCAxNjMsIAorICAgIDg2LCA1MywgMjM5LCAxMjAsIDE0MiwgMTYzLCA5NiwgNTIsIDUzLCAyMzksIDEyMCwgMTQyLCAxNjMsIDg2LCA1MiwgNTMsIAorICAgIDIzOSwgMTIwLCAxNDIsIDE2MywgODYsIDIxMSwgMTcxLCA0NywgNTgsIDU5LCAyNDgsIDM2LCA1OCwgNTksIDI0MywgODIsIAorICAgIDU4LCA1OSwgMjQyLCAyMTAsIDU4LCA1OSwgMjQzLCA4MSwgNTgsIDU5LCAyNDIsIDE0NiwgNTgsIDU5LCAyNDMsIDE3LCA1OCwgCisgICAgNTksIDI0MiwgMjA5LCA1OCwgNTksIDI0MywgODAsIDU4LCA1OSwgMjQyLCAxMTQsIDU4LCA1OSwgMjQyLCAyNDEsIDU4LCAKKyAgICA1OSwgMjQyLCAxNzcsIDU4LCA1OSwgMjQzLCA0OCwgNTgsIDU5LCAyNDIsIDE0NSwgNTgsIDU5LCAyNDMsIDE2LCA1OCwgNTksIAorICAgIDI0MiwgMjA4LCA1OCwgNTksIDI0MywgNzksIDU4LCA1OSwgMjQyLCA5OCwgNTgsIDU5LCAyNDIsIDIyNSwgNTgsIDU5LCAKKyAgICAyNDIsIDE2MSwgNTgsIDU5LCAyNDMsIDMyLCA1OCwgNTksIDI0MiwgMTI5LCA1OCwgNTksIDI0MywgMCwgNTgsIDU5LCAyNDIsIAorICAgIDE5MiwgNTgsIDU5LCAyNDMsIDYzLCA1OCwgNTksIDI0MiwgMTEzLCA1OCwgNTksIDI0MiwgMjQwLCA1OCwgNTksIDI0MiwgCisgICAgMTc2LCA1OCwgNTksIDI0MywgNDcsIDU4LCA1OSwgMjQyLCAxNDQsIDU4LCA1OSwgMjQzLCAxNSwgNTgsIDU5LCAyNDIsIAorICAgIDIwNywgNTgsIDU5LCAyNDMsIDc4LCA1OCwgNTksIDI0MiwgOTAsIDU4LCA1OSwgMjQyLCAyMTcsIDU4LCA1OSwgMjQyLCAKKyAgICAxNTMsIDU4LCA1OSwgMjQzLCAyNCwgNTgsIDU5LCAyNDIsIDEyMSwgNTgsIDU5LCAyNDIsIDI0OCwgNTgsIDU5LCAyNDIsIAorICAgIDE4NCwgNTgsIDU5LCAyNDMsIDU1LCA1OCwgNTksIDI0MiwgMTA1LCA1OCwgNTksIDI0MiwgMjMyLCA1OCwgNTksIDI0MiwgCisgICAgMTY4LCA1OCwgNTksIDI0MywgMzksIDU4LCA1OSwgMjQyLCAxMzYsIDU4LCA1OSwgMjQzLCA3LCA1OCwgNTksIDI0MiwgMTk5LCAKKyAgICA1OCwgNTksIDI0MywgNzAsIDU4LCA1OSwgMjQyLCA5NywgNTgsIDU5LCAyNDIsIDIyNCwgNTgsIDU5LCAyNDIsIDE2MCwgNTgsIAorICAgIDU5LCAyNDMsIDMxLCA1OCwgNTksIDI0MiwgMTI4LCA1OCwgNTksIDI0MiwgMjU1LCA1OCwgNTksIDI0MiwgMTkxLCA1OCwgCisgICAgNTksIDI0MywgNjIsIDU4LCA1OSwgMjQyLCAxMTIsIDU4LCA1OSwgMjQyLCAyMzksIDU4LCA1OSwgMjQyLCAxNzUsIDU4LCAKKyAgICA1OSwgMjQzLCA0NiwgNTgsIDU5LCAyNDIsIDE0MywgNTgsIDU5LCAyNDMsIDE0LCA1OCwgNTksIDI0MiwgMjA2LCA1OCwgNTksIAorICAgIDI0MywgNzcsIDU4LCA1OSwgMjQyLCA4NiwgNTgsIDU5LCAyNDIsIDIxMywgNTgsIDU5LCAyNDIsIDE0OSwgNTgsIDU5LCAKKyAgICAyNDMsIDIwLCA1OCwgNTksIDI0MiwgMTE3LCA1OCwgNTksIDI0MiwgMjQ0LCA1OCwgNTksIDI0MiwgMTgwLCA1OCwgNTksIAorICAgIDI0MywgNTEsIDU4LCA1OSwgMjQyLCAxMDEsIDU4LCA1OSwgMjQyLCAyMjgsIDU4LCA1OSwgMjQyLCAxNjQsIDU4LCA1OSwgCisgICAgMjQzLCAzNSwgNTgsIDU5LCAyNDIsIDEzMiwgNTgsIDU5LCAyNDMsIDMsIDU4LCA1OSwgMjQyLCAxOTUsIDU4LCA1OSwgMjQzLCAKKyAgICA2NiwgNTgsIDU5LCAyNDIsIDkzLCA1OCwgNTksIDI0MiwgMjIwLCA1OCwgNTksIDI0MiwgMTU2LCA1OCwgNTksIDI0MywgMjcsIAorICAgIDU4LCA1OSwgMjQyLCAxMjQsIDU4LCA1OSwgMjQyLCAyNTEsIDU4LCA1OSwgMjQyLCAxODcsIDU4LCA1OSwgMjQzLCA1OCwgCisgICAgNTgsIDU5LCAyNDIsIDEwOCwgNTgsIDU5LCAyNDIsIDIzNSwgNTgsIDU5LCAyNDIsIDE3MSwgNTgsIDU5LCAyNDMsIDQyLCAKKyAgICA1OCwgNTksIDI0MiwgMTM5LCA1OCwgNTksIDI0MywgMTAsIDU4LCA1OSwgMjQyLCAyMDIsIDU4LCA1OSwgMjQzLCA3MywgNTgsIAorICAgIDU5LCAyNDIsIDg5LCA1OCwgNTksIDI0MiwgMjE2LCA1OCwgNTksIDI0MiwgMTUyLCA1OCwgNTksIDI0MywgMjMsIDU4LCA1OSwgCisgICAgMjQyLCAxMjAsIDU4LCA1OSwgMjQyLCAyNDcsIDU4LCA1OSwgMjQyLCAxODMsIDU4LCA1OSwgMjQzLCA1NCwgNTgsIDU5LCAKKyAgICAyNDIsIDEwNCwgNTgsIDU5LCAyNDIsIDIzMSwgNTgsIDU5LCAyNDIsIDE2NywgNTgsIDU5LCAyNDMsIDM4LCA1OCwgNTksIAorICAgIDI0MiwgMTM1LCA1OCwgNTksIDI0MywgNiwgNTgsIDU5LCAyNDIsIDE5OCwgNTgsIDU5LCAyNDMsIDY5LCA1OCwgNTksIDI0MiwgCisgICAgOTYsIDU4LCA1OSwgMjQyLCAyMjMsIDU4LCA1OSwgMjQyLCAxNTksIDU4LCA1OSwgMjQzLCAzMCwgNTgsIDU5LCAyNDIsIAorICAgIDEyNywgNTgsIDU5LCAyNDIsIDI1NCwgNTgsIDU5LCAyNDIsIDE5MCwgNTgsIDU5LCAyNDMsIDYxLCA1OCwgNTksIDI0MiwgCisgICAgMTExLCA1OCwgNTksIDI0MiwgMjM4LCA1OCwgNTksIDI0MiwgMTc0LCA1OCwgNTksIDI0MywgNDUsIDU4LCA1OSwgMjQyLCAKKyAgICAxNDIsIDU4LCA1OSwgMjQzLCAxMywgNTgsIDU5LCAyNDIsIDIwNSwgNTgsIDU5LCAyNDMsIDc2LCA1OCwgNTksIDI0MiwgODQsIAorICAgIDU4LCA1OSwgMjQyLCAyMTEsIDU4LCA1OSwgMjQyLCAxNDcsIDU4LCA1OSwgMjQzLCAxOCwgNTgsIDU5LCAyNDIsIDExNSwgCisgICAgNTgsIDU5LCAyNDIsIDI0MiwgNTgsIDU5LCAyNDIsIDE3OCwgNTgsIDU5LCAyNDMsIDQ5LCA1OCwgNTksIDI0MiwgOTksIDU4LCAKKyAgICA1OSwgMjQyLCAyMjYsIDU4LCA1OSwgMjQyLCAxNjIsIDU4LCA1OSwgMjQzLCAzMywgNTgsIDU5LCAyNDIsIDEzMCwgNTgsIAorICAgIDU5LCAyNDMsIDEsIDU4LCA1OSwgMjQyLCAxOTMsIDU4LCA1OSwgMjQzLCA2NCwgNTgsIDU5LCAyNDIsIDkxLCA1OCwgNTksIAorICAgIDI0MiwgMjE4LCA1OCwgNTksIDI0MiwgMTU0LCA1OCwgNTksIDI0MywgMjUsIDU4LCA1OSwgMjQyLCAxMjIsIDU4LCA1OSwgCisgICAgMjQyLCAyNDksIDU4LCA1OSwgMjQyLCAxODUsIDU4LCA1OSwgMjQzLCA1NiwgNTgsIDU5LCAyNDIsIDEwNiwgNTgsIDU5LCAKKyAgICAyNDIsIDIzMywgNTgsIDU5LCAyNDIsIDE2OSwgNTgsIDU5LCAyNDMsIDQwLCA1OCwgNTksIDI0MiwgMTM3LCA1OCwgNTksIAorICAgIDI0MywgOCwgNTgsIDU5LCAyNDIsIDIwMCwgNTgsIDU5LCAyNDMsIDcxLCA1OCwgNTksIDI0MiwgODcsIDU4LCA1OSwgMjQyLCAKKyAgICAyMTQsIDU4LCA1OSwgMjQyLCAxNTAsIDU4LCA1OSwgMjQzLCAyMSwgNTgsIDU5LCAyNDIsIDExOCwgNTgsIDU5LCAyNDIsIAorICAgIDI0NSwgNTgsIDU5LCAyNDIsIDE4MSwgNTgsIDU5LCAyNDMsIDUyLCA1OCwgNTksIDI0MiwgMTAyLCA1OCwgNTksIDI0MiwgCisgICAgMjI5LCA1OCwgNTksIDI0MiwgMTY1LCA1OCwgNTksIDI0MywgMzYsIDU4LCA1OSwgMjQyLCAxMzMsIDU4LCA1OSwgMjQzLCA0LCAKKyAgICA1OCwgNTksIDI0MiwgMTk2LCA1OCwgNTksIDI0MywgNjcsIDU4LCA1OSwgMjQyLCA5NCwgNTgsIDU5LCAyNDIsIDIyMSwgNTgsIAorICAgIDU5LCAyNDIsIDE1NywgNTgsIDU5LCAyNDMsIDI4LCA1OCwgNTksIDI0MiwgMTI1LCA1OCwgNTksIDI0MiwgMjUyLCA1OCwgCisgICAgNTksIDI0MiwgMTg4LCA1OCwgNTksIDI0MywgNTksIDU4LCA1OSwgMjQyLCAxMDksIDU4LCA1OSwgMjQyLCAyMzYsIDU4LCAKKyAgICA1OSwgMjQyLCAxNzIsIDU4LCA1OSwgMjQzLCA0MywgNTgsIDU5LCAyNDIsIDE0MCwgNTgsIDU5LCAyNDMsIDExLCA1OCwgNTksIAorICAgIDI0MiwgMjAzLCA1OCwgNTksIDI0MywgNzQsIDU4LCA1OSwgMjQyLCA4NSwgNTgsIDU5LCAyNDIsIDIxMiwgNTgsIDU5LCAKKyAgICAyNDIsIDE0OCwgNTgsIDU5LCAyNDMsIDE5LCA1OCwgNTksIDI0MiwgMTE2LCA1OCwgNTksIDI0MiwgMjQzLCA1OCwgNTksIAorICAgIDI0MiwgMTc5LCA1OCwgNTksIDI0MywgNTAsIDU4LCA1OSwgMjQyLCAxMDAsIDU4LCA1OSwgMjQyLCAyMjcsIDU4LCA1OSwgCisgICAgMjQyLCAxNjMsIDU4LCA1OSwgMjQzLCAzNCwgNTgsIDU5LCAyNDIsIDEzMSwgNTgsIDU5LCAyNDMsIDIsIDU4LCA1OSwgMjQyLCAKKyAgICAxOTQsIDU4LCA1OSwgMjQzLCA2NSwgNTgsIDU5LCAyNDIsIDkyLCA1OCwgNTksIDI0MiwgMjE5LCA1OCwgNTksIDI0MiwgCisgICAgMTU1LCA1OCwgNTksIDI0MywgMjYsIDU4LCA1OSwgMjQyLCAxMjMsIDU4LCA1OSwgMjQyLCAyNTAsIDU4LCA1OSwgMjQyLCAKKyAgICAxODYsIDU4LCA1OSwgMjQzLCA1NywgNTgsIDU5LCAyNDIsIDEwNywgNTgsIDU5LCAyNDIsIDIzNCwgNTgsIDU5LCAyNDIsIAorICAgIDE3MCwgNTgsIDU5LCAyNDMsIDQxLCA1OCwgNTksIDI0MiwgMTM4LCA1OCwgNTksIDI0MywgOSwgNTgsIDU5LCAyNDIsIDIwMSwgCisgICAgNTgsIDU5LCAyNDMsIDcyLCA1OCwgNTksIDI0MiwgODgsIDU4LCA1OSwgMjQyLCAyMTUsIDU4LCA1OSwgMjQyLCAxNTEsIDU4LCAKKyAgICA1OSwgMjQzLCAyMiwgNTgsIDU5LCAyNDIsIDExOSwgNTgsIDU5LCAyNDIsIDI0NiwgNTgsIDU5LCAyNDIsIDE4MiwgNTgsIAorICAgIDU5LCAyNDMsIDUzLCA1OCwgNTksIDI0MiwgMTAzLCA1OCwgNTksIDI0MiwgMjMwLCA1OCwgNTksIDI0MiwgMTY2LCA1OCwgCisgICAgNTksIDI0MywgMzcsIDU4LCA1OSwgMjQyLCAxMzQsIDU4LCA1OSwgMjQzLCA1LCA1OCwgNTksIDI0MiwgMTk3LCA1OCwgNTksIAorICAgIDI0MywgNjgsIDU4LCA1OSwgMjQyLCA5NSwgNTgsIDU5LCAyNDIsIDIyMiwgNTgsIDU5LCAyNDIsIDE1OCwgNTgsIDU5LCAKKyAgICAyNDMsIDI5LCA1OCwgNTksIDI0MiwgMTI2LCA1OCwgNTksIDI0MiwgMjUzLCA1OCwgNTksIDI0MiwgMTg5LCA1OCwgNTksIAorICAgIDI0MywgNjAsIDU4LCA1OSwgMjQyLCAxMTAsIDU4LCA1OSwgMjQyLCAyMzcsIDU4LCA1OSwgMjQyLCAxNzMsIDU4LCA1OSwgCisgICAgMjQzLCA0NCwgNTgsIDU5LCAyNDIsIDE0MSwgNTgsIDU5LCAyNDMsIDEyLCA1OCwgNTksIDI0MiwgMjA0LCA1OCwgNTksIAorICAgIDI0MywgNzUsIDg2LCAyMDcsIDEzNCwgNTMsIDMsIDgwLCA5NSwgODYsIDIwNywgMTM0LCA1MywgMywgNTIsIDgwLCA5NSwgCisgICAgOTYsIDUyLCA1MywgMywgODAsIDk1LCA4NiwgNTIsIDUzLCAzLCA4MCwgOTUsIDQ5LCA1MCwgNTIsIDUzLCAzLCA4MCwgOTUsIAorICAgIDg2LCAyMDcsIDEzNCwgNTMsIDIzOSwgMTIwLCAxNDIsIDk2LCA1MiwgNTMsIDIzOSwgMTIwLCAxNDIsIDg2LCA1MiwgNTMsIAorICAgIDIzOSwgMTIwLCAxNDIsIDE4MywgNTMsIDMsIDIzNiwgMTA2LCA5NSwgMTc3LCA1MywgMywgMjM2LCAxMDYsIDk1LCAxNzcsIAorICAgIDIwOCwgNzAsIDQ3LCAxODMsIDIwOCwgNzAsIDQ3LCA5NiwgNTIsIDI0NCwgMTQ1LCA0NywgODYsIDUyLCAyNDQsIDE0NSwgCisgICAgNDcsIDk2LCAyMDgsIDcwLCAyNDQsIDE0NSwgNDcsIDg2LCAyMDgsIDcwLCAyNDQsIDE0NSwgNDcsIDg2LCAyMDcsIDEzNCwgCisgICAgMjA4LCA3MCwgMjQ0LCAxNDUsIDQ3LCA4NiwgNTMsIDMsIDI0MiwgODMsIDIxMSwgNzcsIDE3NywgNTMsIDIwOCwgMTczLCAKKyAgICAxNDIsIDE4MywgNTMsIDIwOCwgMTczLCAxNDIsIDg2LCA1MywgMywgMjA5LCAyNDksIDMsIDgwLCA5NSwgODYsIDUzLCAzLCAKKyAgICAyMDksIDI0OSwgMywgNTIsIDgwLCA5NSwgODYsIDIwNywgMTM0LCA1MywgMywgMjA5LCAyNDgsIDg2LCAyMDcsIDEzNCwgNTMsIAorICAgIDMsIDIwOSwgMjQ5LCAzLCA4MCwgOTUsIDg2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOSwgMjQ5LCAzLCA1MiwgODAsIDk1LCA5NiwgCisgICAgMjUwLCA5NiwgODYsIDI1MCwgOTYsIDk2LCA1MiwgMjUwLCA5NiwgODYsIDUyLCAyNTAsIDk2LCA5NiwgNTMsIDIwOCwgMTczLCAKKyAgICA2MiwgMjQzLCAyMjEsIDg2LCA1MywgMjA4LCAxNzMsIDYyLCAyNDMsIDIyMSwgOTYsIDUzLCAyMzksIDEyMCwgMjQ4LCAyMzEsIAorICAgIDIwOCwgMTczLCA2MiwgMjQzLCAyMjEsIDg2LCA1MywgMjM5LCAxMjAsIDI0OCwgMjMxLCAyMDgsIDE3MywgNjIsIDI0MywgCisgICAgMjIxLCAxNTMsIDIwNCwgNDYsIDI1LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQ3LCAxNTMsIDI0MSwgMTc2LCAyNSwgMjExLCAKKyAgICAyMzgsIDIwNCwgNDYsIDQ3LCAxNTMsIDIwNCwgNDYsIDUzLCAzLCAxMTMsIDE1MywgMjQxLCAxNzYsIDUzLCAzLCAxMTMsIAorICAgIDIxMSwgMjM4LCAyNDEsIDE3NiwgNTMsIDMsIDExMywgMjExLCAyMzgsIDIwNCwgNDYsIDUzLCAzLCAxMTMsIDE1MywgMjA0LCAKKyAgICA0NiwgNTMsIDI1LCAxNTMsIDI0MSwgMTc2LCA0NywgMTUzLCAyNDEsIDE3NiwgNTMsIDI1LCAyMTEsIDIzOCwgMjQxLCAxNzYsIAorICAgIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDUzLCAyNSwgMjExLCAyMzgsIDIwNCwgNDYsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgCisgICAgNTMsIDI1LCAxNTMsIDIwNCwgNDYsIDQ3LCAyMTUsIDI0NSwgMjQzLCAyMjgsIDI0NSwgMTI0LCAyNDAsIDg0LCAyNDMsIAorICAgIDIyNywgMjQwLCA4NCwgMjQzLCAyMjgsIDI0NSwgMTI0LCAyMTUsIDI0NSwgMjQzLCAyMjcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgCisgICAgNTMsIDI0NSwgMTI0LCAxNTMsIDI0MSwgMTc2LCA0NywgMTUzLCAyNDEsIDE3NiwgNTMsIDI0NSwgMTI0LCAyMTEsIDIzOCwgCisgICAgMjQxLCAxNzYsIDQ3LCAyNDAsIDg0LCAyNDMsIDIyOCwgMjQ1LCAxMjQsIDE1MywgMjQxLCAxNzYsIDQ3LCAyMTUsIDI0NSwgCisgICAgMjQzLCAyMjgsIDI0NSwgMTI0LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQ3LCAxNTMsIDI0MSwgMTc2LCA1MywgMjQ1LCAxMjQsIAorICAgIDE1MywgMjA0LCA0NiwgNDcsIDE1MywgMjA0LCA0NiwgNTMsIDI0NSwgMTI0LCAxNTMsIDI0MSwgMTc2LCA0NywgMjA0LCA3NiwgCisgICAgNTMsIDIxOCwgNTksIDI0MywgMTY0LCAyMTYsIDE2LCA1MywgMjE4LCA1OSwgODYsIDIwOSwgODQsIDI0NSwgODQsIDIwNiwgCisgICAgMjEyLCA1MywgMjE4LCA1OSwgODYsIDIwOSwgODQsIDI0NSwgODQsIDI0MiwgNjgsIDUzLCAyMTgsIDU5LCAxODMsIDIwOSwgCisgICAgODQsIDI0NSwgODQsIDIyNywgMjEyLCA1MywgMjE4LCA1OSwgMTgzLCAyMDksIDg0LCAyNDUsIDg0LCAyMTYsIDUsIDIxNiwgCisgICAgOCwgMjUwLCAxMjksIDI0NiwgMTgsIDQ3LCAyMjcsIDIxNSwgMjUwLCAxMjksIDI1MCwgMTk0LCA0NywgMjA4LCAxNDUsIAorICAgIDI1MCwgMTI5LCAyNTAsIDE5NCwgNDcsIDI0NywgMjQ4LCAyNTAsIDEyOSwgMjUwLCAxOTQsIDQ3LCAyMDgsIDE0NSwgMjUwLCAKKyAgICAxMjksIDI0NiwgMTgsIDUzLCAzLCAyMjQsIDEwMiwgMjA4LCAxNDUsIDI1MCwgMTI5LCAyNTAsIDE5NCwgNTMsIDMsIDIxOCwgCisgICAgNzYsIDIyNiwgMjUxLCA1MCwgMjEzLCAxNDUsIDI0NiwgMTgsIDQ3LCAyMjYsIDI1MSwgNDksIDIxMywgMTQ1LCAyNTAsIAorICAgIDE5NCwgNDcsIDI1MCwgMTk0LCAyNDYsIDE2LCAyNDYsIDYyLCA0NywgMjQ2LCAxOCwgMjQ2LCAxNiwgMjQ2LCA2MiwgNDcsIAorICAgIDg2LCA1MywgODcsIDIxMiwgMjI4LCA5NiwgNDcsIDk2LCA1MywgODcsIDIxMiwgMjI4LCA4NiwgNDcsIDIxMiwgMjI4LCA4NiwgCisgICAgNTMsIDg3LCA5NiwgNDcsIDg2LCA1MywgMywgOTEsIDU2LCA5NiwgNTMsIDMsIDkxLCA1NiwgODYsIDUzLCAyMDksIDI1LCAKKyAgICAyMDMsIDE5NiwgNDksIDUwLCA1MywgMjA5LCAyNSwgNSwgMjQ2LCA2MSwgMTc3LCAyMDcsIDEzNCwgNTMsIDIzOSwgMTIwLCAKKyAgICA1LCAyNDYsIDYxLCA0OSwgMTUwLCAxMTIsIDUwLCAxNTAsIDEyMSwgMjM3LCA4NiwgNDksIDE1MCwgMTIxLCA1MCwgMTUwLCAKKyAgICAxMTIsIDIzNywgODYsIDExMiwgMTUwLCA1MCwgMTIxLCAxNTAsIDQ5LCAyMzcsIDg2LCAxMTIsIDE1MCwgNDksIDEyMSwgCisgICAgMTUwLCA1MCwgMjM3LCA4NiwgNDksIDE1MCwgMTEyLCA1MCwgMTUwLCAxMTIsIDIzNywgODYsIDExMiwgMTUwLCA1MCwgMTIxLCAKKyAgICAxNTAsIDUwLCAyMzcsIDg2LCA0OSwgMTUwLCAxMjEsIDUwLCAxNTAsIDEyMSwgMjM3LCA4NiwgMTEyLCAxNTAsIDQ5LCAxMjEsIAorICAgIDE1MCwgNDksIDIzNywgODYsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgMjA4LCAxNzMsIDE0MiwgODYsIDIzNywgODcsIAorICAgIDMsIDE1MCwgMTEyLCAyMDgsIDE3MywgMTQyLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgNTAsIDIwOCwgMTczLCAxNDIsIDE4MywgCisgICAgMjM3LCA4NywgMywgMTUwLCA1MCwgMjA4LCAxNzMsIDE0MiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAyMDgsIDE3MywgCisgICAgMTQyLCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMjEsIDIwOCwgMTczLCAxNDIsIDE3NywgMjM3LCA4NywgMywgMTUwLCA0OSwgCisgICAgMjA4LCAxNzMsIDE0MiwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAyMDgsIDE3MywgMTQyLCA5NiwgMjM3LCA4NywgMywgCisgICAgMTUwLCAxMTIsIDIzOSwgMTIwLCAxNDIsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgMjM5LCAxMjAsIDE0MiwgMTc3LCAKKyAgICAyMzcsIDg3LCAzLCAxNTAsIDUwLCAyMzksIDEyMCwgMTQyLCAxODMsIDIzNywgODcsIDMsIDE1MCwgNTAsIDIzOSwgMTIwLCAKKyAgICAxNDIsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgMjM5LCAxMjAsIDE0MiwgODYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAKKyAgICAyMzksIDEyMCwgMTQyLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgNDksIDIzOSwgMTIwLCAxNDIsIDE4MywgMjM3LCA4NywgMywgCisgICAgMTUwLCA0OSwgMjM5LCAxMjAsIDE0MiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgOTYsIDIzNywgODcsIDMsIAorICAgIDE1MCwgMjQyLCA3MCwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAyNDgsIDExMCwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIAorICAgIDIxNiwgMTYsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgODcsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNzAsIDE4MywgCisgICAgMjM3LCA4NywgMywgMTUwLCA0OSwgMjQ4LCAxMTAsIDE4MywgMjM3LCA4NywgMywgMTUwLCAyMTYsIDE2LCA5NiwgMjM3LCAKKyAgICA4NywgMywgMTUwLCAxMTIsIDg3LCA4NiwgMjM3LCA4NywgMywgMTUwLCAyMDYsIDIyNCwgOTYsIDIzNywgODcsIDMsIDE1MCwgCisgICAgMTIxLCA4NywgODYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA3MCwgODYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgOTYsIAorICAgIDIzNywgODcsIDMsIDE1MCwgMjA2LCAyMjQsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgODcsIDk2LCAyMzcsIDg3LCAzLCAKKyAgICAxNTAsIDI0MiwgNzAsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgODcsIDE2MywgMjQ0LCAxNDQsIDk2LCAyMzcsIDg3LCAKKyAgICAzLCAxNTAsIDEyMSwgMjQ4LCAxMjYsIDE2MywgMjQ0LCAxNDQsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgODcsIDE2MywgCisgICAgMjQ0LCAxNDQsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgMjQ4LCAxMjYsIDE2MywgMjQ0LCAxNDQsIDE3NywgMjM3LCAKKyAgICA4NywgMywgMTUwLCA0OSwgMjQ4LCAxMTAsIDE4MywgMjM3LCA4NywgMywgMTUwLCAyMTYsIDE2LCAxODMsIDIzNywgODcsIDMsIAorICAgIDE1MCwgNDksIDI0OCwgMTEwLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgMjE2LCAxNiwgNTAsIDUyLCA1MywgMywgMjE1LCAKKyAgICAxODksIDIzNywgNjQsIDI0MSwgMzUsIDIsIDg3LCA4NiwgNDcsIDIwOCwgMjI4LCAyMTksIDI1NSwgODcsIDg2LCA0NywgOTYsIAorICAgIDUzLCA4NywgMjA4LCAyMjgsIDIxOSwgMjU0LCA4NiwgNTMsIDg3LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDg2LCA1MywgODcsIAorICAgIDI1MSwgNywgMTU2LCAxMzUsIDIyNywgMTc5LCA4NywgOTYsIDQ3LCA5NiwgNTMsIDIwOSwgMjUsIDIyNywgMTc4LCAyMzcsIAorICAgIDI0NywgODcsIDg2LCA0NywgMjEwLCAyNDUsIDg3LCA4NiwgNDcsIDk2LCA1MywgMjA5LCAyNSwgMjEwLCAyNDQsIDIxMCwgCisgICAgMTk4LCA4NywgOTYsIDQ3LCA0OSwgMjM5LCAyNDQsIDIwOSwgMjQ4LCA1MCwgMjM5LCAyNDQsIDIwOSwgMjQ4LCAxMTIsIAorICAgIDIzOSwgMjQ0LCAyMDksIDI0OCwgMTIxLCAyMzksIDI0NCwgMjA5LCAyNDgsIDIwOCwgNzAsIDgwLCAyNDgsIDIzMSwgMjQ0LCAKKyAgICA0MywgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTEsIDE4OCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMDcsIDEyMSwgMjQ1LCAyNDIsIAorICAgIDQ5LCA2MSwgMjQ1LCA5MywgMTU1LCA1MCwgNjEsIDI0NSwgOTMsIDE1NSwgNDksIDYxLCAyMTksIDc2LCA1MCwgNjEsIDIxOSwgCisgICAgNzYsIDIwMiwgMTYwLCAyMjEsIDE2NCwgNDksIDIzMSwgNjUsIDE1NSwgMjAyLCAxNjAsIDIyMSwgMTY0LCA1MCwgMjMxLCAKKyAgICA2NSwgMTU1LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDQ5LCAyNDgsIDY1LCAxNTUsIDIwMiwgMTYwLCAyMjEsIDE2NCwgNTAsIAorICAgIDI0OCwgNjUsIDE1NSwgNDksIDUxLCAyNDcsIDIyNywgMywgMjA2LCAyNDYsIDUwLCA1MSwgMjQ3LCAyMjcsIDMsIDIwNiwgCisgICAgMjQ2LCA0OSwgNTEsIDI0NywgMjI3LCAzLCAyMDgsIDI1NSwgMjMxLCA1MCwgMjA4LCAxNDUsIDI0NSwgMTY1LCA1MCwgNTEsIAorICAgIDI0NywgMjI3LCAzLCAyMDgsIDI1NSwgMjMxLCA1MCwgMjQ3LCAyNDgsIDI0NSwgMTY1LCA0OSwgNTEsIDI0NywgMjI3LCAzLCAKKyAgICAyMDgsIDI1NSwgMjMxLCA1MCwgMjQ3LCAyNDgsIDI0NSwgMTY1LCA1MCwgNTEsIDI0NywgMjI3LCAzLCAyMDgsIDI1NSwgCisgICAgMjMxLCA1MCwgMjA4LCAxNDUsIDI0NSwgMTY1LCA0OSwgMjUwLCAyMTgsIDI0NywgMjI3LCAzLCAyNDMsIDg1LCA1MCwgMjUwLCAKKyAgICAyMTgsIDI0NywgMjI3LCAzLCAyNDMsIDg1LCA0OSwgMjUwLCAxMjksIDIyNywgMTc5LCAxNTUsIDUwLCAyNTAsIDEyOSwgCisgICAgMjM3LCAyNDcsIDE1NSwgNTIsIDQ5LCAyNTAsIDEyOSwgMjM3LCAyNDcsIDE1NSwgNTIsIDUwLCAyNTAsIDEyOSwgMjI3LCAKKyAgICAxNzksIDE1NSwgNDksIDYyLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA1MCwgNjIsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIAorICAgIDI0MiwgODMsIDI0MCwgNDAsIDgwLCAyMDIsIDMwLCAyMjcsIDExNCwgMjI1LCAxNywgMjUwLCAyMTgsIDIyMCwgMSwgMjI3LCAKKyAgICAyMjIsIDUwLCAyNTAsIDIxOCwgMjA2LCA2OSwgMywgMjExLCAxNzcsIDIyNSwgMTcsIDUwLCAyNTAsIDIxOCwgMywgMjQzLCAKKyAgICA4NSwgMjUwLCAyMTgsIDMsIDIxNSwgOTQsIDIzMSwgNiwgMjUxLCAxMjYsIDI1MCwgMjE3LCAyMTEsIDIwOCwgMjUwLCAyMTgsIAorICAgIDIyMCwgMSwgMjI3LCAyMjIsIDIxMSwgMjA4LCAyNTAsIDIxOCwgMjIwLCAxLCAyMDYsIDIyNCwgMjA3LCAxNzQsIDI1MCwgCisgICAgMjE3LCAyMTYsIDczLCAyNTAsIDIxNywgMjUwLCAyMTgsIDMsIDIwNiwgMjQ2LCAyMTYsIDczLCAyNTAsIDIxOCwgMywgMjA2LCAKKyAgICAyNDYsIDIyMCwgODksIDI1MCwgMjE4LCAyMjAsIDEsIDIwNiwgMjI0LCAyMjAsIDg5LCAyNTAsIDIxOCwgMjIwLCAxLCAyNDIsIAorICAgIDcwLCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIAorICAgIDExMiwgMjUsIDIxNiwgMTYsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCAKKyAgICA1MywgMjE4LCA1OSwgMTEyLCAyNSwgMjI3LCAyMjIsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIAorICAgIDgxLCAyMzEsIDUwLCA1MywgMjE4LCA1OSwgMTIxLCAyNSwgMjE2LCAxNiwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgCisgICAgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCAxMjEsIDI1LCAyMjcsIDIyMiwgMjI1LCAxNywgMjUwLCAKKyAgICAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCA1MCwgMjUsIDIwNiwgMjI0LCAKKyAgICAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDQ5LCAKKyAgICAyNSwgMjA2LCAyMjQsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCA1MywgCisgICAgMjE4LCA1OSwgNTAsIDI1LCAyNDIsIDcwLCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgCisgICAgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDQ5LCAyNSwgMjQyLCA3MCwgMjE2LCA3MywgMjQxLCA5NCwgMjEzLCAxMTcsIDI0MSwgCisgICAgOTQsIDIxMywgMTE4LCAzLCAyMTksIDIwMywgMjQxLCA5NCwgMjEzLCAxMTgsIDMsIDUsIDI0NiwgNjIsIDU1LCAyNDEsIDk0LCAKKyAgICAyMTMsIDExOCwgMywgNTAsIDUzLCA1NSwgMjQxLCA5NCwgMjEzLCAxMTgsIDMsIDQ5LCA1MywgNTUsIDI0NiwgNjIsIDMsIAorICAgIDIzNiwgMTA2LCAxNDIsIDQzLCA4MCwgMTQyLCA0MywgMjE5LCA4MSwgNDMsIDIxNiwgNzQsIDIxMiwgMCwgNDMsIDIxOCwgCisgICAgMjMzLCAyNDYsIDYyLCAyNDMsIDE0MiwgMjQ3LCAxMzcsIDIzNiwgMTA2LCAyNDgsIDIzMSwgMjUsIDIwOCwgMTQ1LCAxNjIsIAorICAgIDI0MywgMTQyLCAyNDcsIDEzNywgODAsIDE0MiwgMjQ2LCA2MiwgMywgMjEwLCAyMDAsIDIwMywgMTk2LCA0MywgMjUwLCAKKyAgICAxOTIsIDI0MywgMTM3LCA1NCwgMTEyLCA1MywgMjA5LCAyNSwgMjQ2LCA2MSwgNDMsIDYxLCAyNDcsIDE3NywgNDMsIDI0NywgCisgICAgMTc3LCA0MywgMjI3LCAxNzgsIDQzLCAyMzcsIDI0NiwgMjQ2LCA2MiwgMywgNSwgMjQ2LCA2MiwgMjA4LCAxNzMsIDIwOSwgCisgICAgOTMsIDIxNiwgMTYsIDI0NiwgNjIsIDMsIDEyMCwgMjM2LCAxMDYsIDIxMSwgMjAsIDIwOCwgMTczLCAyMDksIDkzLCAyMTYsIAorICAgIDE2LCAxMDMsIDIxNSwgMjQ1LCAyNDMsIDIyOCwgMjEyLCA1NywgMTAzLCAyNDAsIDg0LCAyNDMsIDIyOCwgMjEyLCA1NywgCisgICAgMTAzLCAyNTAsIDU5LCAxMDMsIDUsIDI0NiwgNjEsIDEwMywgMjExLCAxNzcsIDEyMCwgMjMwLCA5OCwgMjExLCAxNzUsIAorICAgIDIwOCwgODYsIDMsIDcwLCA1NSwgMjA4LCA4NiwgMywgMjA2LCAyNDYsIDIxNSwgOTQsIDIzMSwgNTAsIDIwOCwgODUsIDIwOCwgCisgICAgODYsIDMsIDIxMywgMTI0LCAyNTAsIDUwLCAyNDcsIDI0NywgNTAsIDIwOCwgODYsIDg3LCA0OSwgMjA4LCA4NSwgNDksIAorICAgIDIwOCwgODYsIDI0OCwgMTEwLCA4MCwgMTQyLCA4MCwgMjQ4LCAyMzEsIDI0OCwgMTEwLCA1MCwgMjA4LCA4NSwgMjQ3LCAKKyAgICAyMzUsIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDI0NywgMjM1LCAzLCA1MCwgMTYyLCAyNDgsIDQzLCA2MiwgMjQ3LCAyMzQsIAorICAgIDIzLCAzLCA0OSwgMTYyLCAyNDgsIDQzLCAyMywgMywgNTAsIDE2MiwgMjQ4LCA0MywgNjEsIDIzNiwgNDAsIDYyLCAyMzYsIAorICAgIDQwLCA0OSwgMjA0LCAyMSwgMjQwLCA0MCwgNTAsIDIwNCwgMjEsIDI0MCwgNDAsIDQ5LCA1MiwgMjA0LCAyMSwgMjQwLCA0MCwgCisgICAgNTAsIDUyLCAyMDQsIDIxLCAyNDAsIDQwLCAyMzEsIDQyLCAyMzEsIDI3LCAyMDgsIDI1MSwgMTE1LCAyMzEsIDI3LCAyMzEsIAorICAgIDI4LCAyMjIsIDIzNCwgMywgODAsIDE0MiwgMjQyLCA3NywgMjIzLCAyMjgsIDUxLCAzLCAyNDUsIDE4NywgMjE5LCAyMDgsIAorICAgIDIzMSwgMzksIDI1MCwgODEsIDIxMiwgMTkzLCAyMTcsIDIyNCwgMjQxLCAzNSwgMiwgMjUsIDIxMiwgNTksIDIxOSwgODEsIAorICAgIDI0MSwgMzUsIDIsIDI1LCAyMTIsIDU5LCAyMTksIDgyLCAzLCAyMDgsIDIyOCwgNTUsIDIzNSwgMTU0LCAyMDgsIDE3MywgCisgICAgMjUsIDIxMiwgNTksIDIxOSwgODEsIDIzOCwgNDgsIDIxMSwgOTMsIDIwOSwgODEsIDI0MiwgNjksIDIwOCwgODYsIDMsIDQ5LCAKKyAgICAxNjIsIDI0OCwgNDMsIDI0MiwgNjksIDIwOCwgODYsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDYyLCAyNDMsIDIyMiwgMywgCisgICAgMTIxLCA0NywgNjIsIDIyNiwgMjQ2LCA2MSwgMjQ2LCA2MiwgMywgMTIxLCA0NywgNjIsIDI0NiwgNjIsIDMsIDEyMSwgNDcsIAorICAgIDI0MSwgMjAsIDYxLCAyMTEsIDE3NywgMjQxLCAyMCwgNjIsIDIxMSwgMTc3LCAyNDEsIDIwLCA2MSwgMjQzLCAyMjEsIDI0MSwgCisgICAgMjAsIDYyLCAyNDMsIDIyMSwgMjQxLCAyMCwgNjEsIDI0NiwgNjEsIDI0MSwgMjAsIDYyLCAyNDYsIDYxLCAyMTUsIDEzNCwgCisgICAgMjE2LCA3NCwgMjEyLCAxLCAyMTksIDI1NCwgMjEyLCAxLCAzLCAyMTksIDIwMywgMjE2LCA3NCwgMjEyLCAxLCAzLCAyMzYsIAorICAgIDEwNiwgOTUsIDI0OCwgNzMsIDIxMiwgMCwgMjQ4LCA3MywgMjE2LCA3NCwgMjEyLCAwLCA1MiwgMjE4LCA3NiwgMjA4LCA3MCwgCisgICAgMjE4LCA3NiwgMjI3LCAyMTcsIDI0NSwgODYsIDI1MCwgMjE4LCAxNTUsIDIxNiwgMTEsIDI0NSwgODYsIDI1MCwgMjE4LCAKKyAgICAxNTUsIDIwOCwgMjEyLCAyMjQsIDEwMCwgMjIzLCAxNjIsIDQzLCA3MCwgMjE5LCAyNTQsIDIyMywgMTYyLCA0MywgOTEsIAorICAgIDIxOSwgMjU0LCAyMjMsIDE2MiwgNDMsIDIzLCAyMTksIDI1NCwgMjIzLCAxNjIsIDIwNiwgMjM4LCAyMTksIDI1NSwgMywgCisgICAgMjQzLCA4NSwgMjIzLCAxNjIsIDIwNiwgMjM4LCAyMTksIDI1NSwgMywgMjE4LCA3NiwgMjIzLCAxNjIsIDUxLCAyMzAsIAorICAgIDI0NSwgMjE5LCAyNTQsIDIyMywgMTYyLCA1MSwgMjA2LCAyMzgsIDIxOSwgMjU0LCAxMjAsIDIyNywgMzcsIDI1LCAyMTksIAorICAgIDI1NCwgMTIwLCAyMjcsIDM3LCAyMTksIDI0NSwgMjE5LCAyNTQsIDIyMywgMTYyLCAyMywgMjE5LCAyNTQsIDIyNCwgNTgsIAorICAgIDEyMCwgMjEwLCAyMjAsIDIxMCwgMjE4LCAzLCAyMzEsIDIsIDIxNywgNTgsIDIzMSwgMywgMjE5LCAyNTQsIDIzOSwgMjUyLCAKKyAgICAyMTksIDcxLCAyMzEsIDIsIDIzMSwgMywgMywgNTIsIDk1LCAyMzEsIDMsIDI1MCwgMTUsIDMsIDIxMiwgNTcsIDI0NiwgNTQsIAorICAgIDIzOSwgOTksIDI1MCwgMTk0LCAyMzEsIDAsIDIyNywgMTE1LCAyMzEsIDEsIDMsIDIxNiwgMTQyLCAyMTksIDUyLCAyNTAsIAorICAgIDEwNCwgMjE4LCA1MywgMjI3LCAxMTUsIDIzMSwgMSwgMywgMjEzLCAxNDUsIDIxOSwgNTIsIDI1MCwgMTA0LCAyMTgsIDUzLCAKKyAgICAyMjcsIDExNSwgMjMxLCAxLCAyMjEsIDE2NiwgMjMxLCA0NCwgMjA5LCA5MywgMjE4LCA1MywgMjMxLCAzLCAyNTAsIDEwNCwgCisgICAgMzQsIDIxOCwgNjMsIDIxOSwgMjU0LCAyMTcsIDUyLCAyMzEsIDMsIDIxOSwgMjU0LCAyMzEsIDMsIDMsIDk2LCA1MywgMywgCisgICAgMTEzLCAyMzEsIDMsIDMsIDIzLCA1NCwgMjMxLCAzLCAzLCAyMzAsIDI0NCwgMjMxLCAzLCAzLCAyMDYsIDIzNywgMjMxLCAzLCAKKyAgICAzLCAyMTksIDIwMywgMjMxLCAzLCAzLCAyMDYsIDI0NiwgMjMwLCA5OSwgMjI4LCA4LCA0OSwgMjA4LCA4NiwgMjE5LCAyNTQsIAorICAgIDIwMiwgMTYwLCAyMjEsIDE2NCwgMjE0LCAxOTgsIDI0NSwgMjIzLCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxNCwgMTk4LCAKKyAgICAyMTgsIDExNCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTQsIDE5OCwgMjE3LCAyMTksIDkxLCAyLCAzLCA1LCAyNDYsIDYyLCAKKyAgICA1NSwgOTEsIDIsIDMsIDI0NiwgNTMsIDI1MSwgMTM5LCA1NSwgOTEsIDIsIDMsIDIwOCwgMjI4LCA1NSwgOTEsIDIsIDMsIAorICAgIDcwLCA1NiwgOTEsIDIsIDMsIDIwOCwgMjI4LCA1NiwgOTEsIDIsIDMsIDIxMCwgMjQ2LCAxMDgsIDkxLCAyLCAzLCA2MiwgCisgICAgMjA4LCA4NSwgMjI0LCAxMDMsIDIsIDMsIDI0NSwgMjM0LCA1NSwgMjI0LCAxMDMsIDIsIDMsIDcwLCA1NiwgMjI0LCAxMDMsIAorICAgIDIsIDMsIDI0MCwgODQsIDI0MywgODMsIDIyNCwgMTAzLCAyLCAzLCAyMTUsIDI0NSwgMjQzLCA4MywgOTEsIDIsIDIzMSwgCisgICAgNTAsIDQ5LCAxNjIsIDI0NiwgNjEsIDkxLCAyLCAyMzEsIDUwLCA1MCwgMTYyLCAyNDYsIDYxLCAyMDYsIDU0LCAyMTksIAorICAgIDI0NSwgMjQ1LCAxMzEsIDIxNywgMjI0LCAyMjMsIDIyNCwgMiwgMywgNzAsIDU1LCAyMjMsIDIyNCwgMiwgMywgMjA2LCAKKyAgICAyNDYsIDIxMywgMTQyLCAyMTcsIDIyNSwgMywgMjQ3LCAyNDgsIDI0NiwgMTUsIDIxMiwgMzQsIDIxNywgMjI0LCAyMjMsIAorICAgIDIyNCwgMiwgMjMxLCA1MCwgNDksIDE2MiwgMjQ2LCA2MSwgMjIzLCAyMjQsIDIsIDIzMSwgNTAsIDUwLCAxNjIsIDI0NiwgCisgICAgNjEsIDQzLCAyMjMsIDIyNCwgMiwgMywgMjQ2LCA1MywgMjUxLCAxMzgsIDIyMywgMjI0LCAyLCAyMzEsIDUwLCA1MiwgMjQ2LCAKKyAgICA2MSwgNDMsIDI0MywgMTM3LCA1NCwgOTEsIDIsIDIzMSwgNTAsIDIwOCwgODUsIDIyNCwgMTAzLCAyLCAyMzEsIDUwLCAyMDgsIAorICAgIDg1LCAyMjMsIDIyNCwgMiwgMjMxLCA1MCwgMjA4LCA4NSwgMjMwLCAyNTMsIDIxNywgMjI0LCAyMTYsIDYsIDIzMCwgMjUzLCAKKyAgICAyMTcsIDIyNCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTYsIDExNiwgMjQ1LCAyMjMsIDI1MCwgMjQ1LCAyMTksIDI0NSwgCisgICAgMjQ1LCAxNzEsIDIzMCwgMjQ1LCAzLCAyNDMsIDg1LCAyMDYsIDIzOCwgMywgMjI0LCAxMDMsIDU0LCAyMDYsIDIzOCwgMywgCisgICAgMjE5LCAyMDMsIDIzMCwgMjQ1LCAzLCAyMTksIDIwMywgMjMwLCAyNDUsIDMsIDIyNywgMzcsIDI1MCwgMjI2LCAyMDYsIAorICAgIDIzOCwgMywgMjI3LCAzNywgMjE5LCAyNDQsIDIwNiwgMjM4LCA4NywgMjMwLCAyNDQsIDIzMCwgMjQ1LCA4NywgMjA2LCAKKyAgICAyMzcsIDIwNiwgMjM4LCA4NywgMjQ4LCAyMzEsIDg3LCAyMzAsIDI0NCwgMjMwLCAyNDUsIDg3LCAyNDgsIDIzMSwgODcsIAorICAgIDIwNiwgMjM3LCAyMDYsIDIzOCwgMjQ4LCAxMTAsIDI1LCAyMzAsIDk4LCAzLCAyMDYsIDIzNywgMjMwLCAyNDUsIDI0OCwgCisgICAgMTEwLCAyNSwgMjMwLCA5OCwgMywgMjMwLCAyNDQsIDI0NiwgMTYsIDIwNiwgMjM4LCAzLCAyMTMsIDEyMywgMjQ2LCAxNiwgCisgICAgMjMwLCAyNDUsIDMsIDIxMywgMTIzLCA1MiwgNTEsIDIzMCwgMjQ0LCA1MiwgNTEsIDIwNiwgMjM3LCAyNDYsIDE2LCAyMDYsIAorICAgIDIzOCwgMywgMjEzLCAxMjQsIDI1LCAyMTIsIDM0LCAyMTcsIDIyNCwgMjI3LCAzNywgMjUsIDMsIDcwLCA1NSwgMjI3LCAzNywgCisgICAgMjE5LCAyNDUsIDMsIDcwLCA1NSwgNTIsIDIyNywgMzcsIDI1MCwgMjI2LCA1MiwgMjI3LCAzNywgMjE5LCAyNDQsIDEyMCwgCisgICAgMjMwLCAyNDYsIDIyNywgMzcsIDI1MCwgMjI2LCAxMjAsIDIzMCwgMjQ2LCAyMjcsIDM3LCAyMTksIDI0NCwgMjEyLCA0MywgCisgICAgMjI4LCA4LCAyMTksIDI0NCwgMjEyLCA0MywgMjI4LCA4LCAyNTAsIDIyNiwgMjI3LCAzNywgMjE5LCAyNDUsIDIxOSwgMjAwLCAKKyAgICAyMjcsIDM3LCAyNTAsIDIyNiwgMjI3LCAzNywgMjUsIDMsIDEwMSwgMjExLCA3NywgMjI3LCAzNywgMjE5LCAyNDUsIDMsIAorICAgIDEwMSwgMjExLCA3NywgMjI3LCAzNywgMjUsIDMsIDIzNiwgMTA2LCAyNDQsIDE0NCwgMjI3LCAzNywgMjE5LCAyNDUsIDMsIAorICAgIDIzNiwgMTA2LCAyNDQsIDE0NCwgMjI3LCAzNywgMjUsIDMsIDUyLCAyMTksIDIwMywgMjI3LCAzNywgMjUsIDMsIDIwNiwgCisgICAgMjQ2LCAyMjcsIDM3LCAyNSwgMywgNTIsIDIwNiwgMjQ2LCA1LCAyMDYsIDUxLCAzLCAyMDYsIDI0NiwgMjI3LCAzNywgMjE5LCAKKyAgICAyNDUsIDMsIDUyLCAyMTksIDIwMywgMjI3LCAzNywgMjE5LCAyNDUsIDMsIDUyLCAyMDYsIDI0NiwgMjAyLCAxNjAsIDIyMSwgCisgICAgMTY0LCAyNDMsIDk0LCAyNTAsIDE4NCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTYsIDE3OSwgMjUwLCAxODQsIDI0MSwgMzUsIAorICAgIDIsIDMsIDcwLCA1NiwgMjM1LCAxNTQsIDMsIDcwLCA1NSwgMjA4LCA3MCwgMjM2LCAxMDYsIDI0OCwgMjMxLCAzLCA1MiwgCisgICAgODAsIDk1LCAyMDgsIDcwLCAyMzYsIDEwNiwgMjQ4LCAyMzEsIDMsIDIwOCwgNzAsIDgwLCA5NSwgMjA4LCAyMjgsIDIxOSwgCisgICAgMjU1LCAzLCA3MCwgNTUsIDIwOCwgMjI4LCAyMTksIDI1NSwgMywgMjE1LCAyNDUsIDI0MywgODMsIDIxMiwgMTI5LCAyMjQsIAorICAgIDEwMywgMjEyLCAxMjgsIDI0NSwgMjEwLCAzLCA3MCwgNTUsIDI0MSwgMzUsIDMsIDI1MCwgNTksIDI1MSwgNywgMTU2LCAKKyAgICAyMDgsIDE3MywgMywgMjQ2LCA1MywgMjUxLCAxMzgsIDI1MCwgMTUxLCAxNTYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjQxLCAKKyAgICAzNSwgMiwgODcsIDkxLCA1NCwgOTEsIDIsIDg3LCAyNDEsIDM1LCA1NCwgMjQxLCAzNSwgMiwgODcsIDIwOCwgMjI4LCAyMTksIAorICAgIDI1NCwgNTIsIDI0NSwgMjQzLCAyNDEsIDM2LCAxMjAsIDI0NSwgMjAzLCAyNDEsIDM1LCAyMTIsIDE0MywgMTI2LCAyNDUsIAorICAgIDIwMywgMjQxLCAzNSwgMjEyLCAxNDMsIDI0MSwgMzUsIDIsIDMsIDEyMCwgMTg3LCA4NywgMjUsIDEyMCwgMTg3LCA1NiwgCisgICAgMjQxLCAzMCwgMywgMjM5LCAxNDcsIDE4NywgNTUsIDIyNywgMTc5LCAzLCAyNDYsIDYyLCAyMzEsIDYsIDIzNywgMjQ3LCAzLCAKKyAgICAyNDYsIDYyLCAyMzEsIDYsIDIyNywgMTc5LCAzLCAyMTcsIDQ3LCAxMzEsIDU1LCAyMzcsIDI0NywgMywgMjE3LCA0NywgCisgICAgMTMxLCA1NSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDEzNSwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyMTIsIAorICAgIDU5LCAxNTYsIDEzNSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgMjMxLCA2LCAKKyAgICAyMzcsIDI0NywgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCAyMzEsIDYsIDIyNywgMTc5LCAyMTksIAorICAgIDI0NSwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDU1LCAyMzcsIDI0NywgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgCisgICAgMjA4LCAxNzMsIDMsIDcwLCA1NSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgCisgICAgODcsIDIxNiwgMTYsIDIzNywgMjQ3LCAyMTksIDI0NSwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDg3LCAyMjcsIAorICAgIDIyMiwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyNTAsIDE1MiwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyNTAsIDE1MiwgMjI3LCAKKyAgICAxNzksIDI1LCAyMTIsIDExOCwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMzcsIDI0NywgMjUsIDIxMiwgMTE4LCAyMjEsIDE2NiwgCisgICAgMTU2LCAxMzUsIDIyNywgMTc5LCAyNSwgMjIxLCAxNjYsIDI1MCwgMTUyLCAyMzcsIDI0NywgMjUsIDIyMSwgMTY2LCAyNTAsIAorICAgIDE1MiwgMjI3LCAxNzksIDg3LCAyNDIsIDc2LCAxNTYsIDg3LCAyMzcsIDI0NiwgMjM3LCAyNDcsIDg3LCAyNDIsIDc2LCAKKyAgICAxNTYsIDg3LCAyMjcsIDE3OCwgMjI3LCAxNzksIDg3LCAyMTIsIDEyOSwgMjE5LCAyNDUsIDI0MSwgMzYsIDIzNywgMjQ3LCAKKyAgICA4NywgMjEyLCAxMjksIDIxOSwgMjQ1LCAyNDEsIDM2LCAyMjcsIDE3OSwgODcsIDIxMiwgMTI5LCA4NywgMjM3LCAyNDYsIAorICAgIDIzNywgMjQ3LCA4NywgMjEyLCAxMjksIDg3LCAyMjcsIDE3OCwgMjI3LCAxNzksIDg3LCAyMzcsIDI0NywgODcsIDI0MiwgCisgICAgNzYsIDI0MSwgMzYsIDIzNywgMjQ3LCA4NywgMjI3LCAxNzksIDg3LCAyNDIsIDc2LCAyNDEsIDM2LCAyMjcsIDE3OSwgODcsIAorICAgIDIxMiwgNTksIDE1NiwgODcsIDIzNywgMjQ3LCA4NywgMjEyLCA1OSwgMjQxLCAzNiwgMjM3LCAyNDcsIDg3LCAyMTIsIDU5LCAKKyAgICAxNTYsIDg3LCAyMjcsIDE3OSwgODcsIDIxMiwgNTksIDI0MSwgMzYsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDIxOSwgCisgICAgMjQ1LCAyMjcsIDE3OCwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIzNywgMjQ2LCAyMTIsIDU5LCAxNTYsIAorICAgIDIwOCwgMTczLCAyMTksIDI0NSwgMjI3LCAxNzksIDMsIDcwLCAyMzEsIDYsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDIxOSwgCisgICAgMjQ1LCAyMzcsIDI0NywgMywgNzAsIDIzMSwgNiwgMjQyLCA3NiwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIyNywgMTc4LCAKKyAgICAyNDIsIDc2LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAyNDYsIDI0MiwgNzYsIDIxMiwgNTksIDE1NiwgMjA4LCAKKyAgICAxNzMsIDIxOSwgMjQ1LCAyMjcsIDE3OCwgMjQyLCA3NiwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIzNywgCisgICAgMjQ2LCAyMTIsIDEyOSwgMjE5LCAyNDUsIDIyNywgMTc4LCAyMTIsIDEyOSwgMjE5LCAyNDUsIDIzNywgMjQ2LCAyMTIsIAorICAgIDEyOSwgODcsIDIyNywgMTc5LCA4NywgMjQxLCAzNSwgNTQsIDIxMiwgMTI5LCA4NywgMjM3LCAyNDcsIDg3LCAyNDEsIDM1LCAKKyAgICA1NCwgNTIsIDIyMiwgMjIxLCAyMjcsIDE3OCwgNTIsIDIyMiwgMjIxLCAyMzcsIDI0NiwgNTIsIDIyMiwgMjIxLCAyMjcsIAorICAgIDE3OSwgMywgMjA2LCAyNDYsIDIzNywgMjQ3LCAyMTksIDIwMCwgMjI3LCAxNzgsIDIzNywgMjQ3LCAyNDgsIDExMCwgMjI3LCAKKyAgICAxNzgsIDIyNywgMTc5LCAyNDYsIDE2LCAyNDcsIDEzNywgMjQ1LCA4NywgMjM3LCAyNDcsIDI0NiwgMTYsIDI0NywgMTM3LCAKKyAgICAyNDUsIDg3LCAyMjcsIDE3OSwgMjQ2LCAxNiwgMjQ3LCAxMzcsIDI0NSwgODgsIDg3LCAyMTIsIDU5LCAyNDEsIDM2LCAyMzcsIAorICAgIDI0NywgMjQ2LCAxNiwgMjQ3LCAxMzcsIDI0NSwgODgsIDg3LCAyMTIsIDU5LCAyNDEsIDM2LCAyMTIsIDM1LCAyMDksIDk3LCAKKyAgICAyMjgsIDYsIDIwOSwgOTcsIDIxMiwgMzUsIDIwOSwgOTgsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjI4LCA2LCAyMDksIDk4LCAKKyAgICAyMTksIDI0NSwgMTU2LCAxMzUsIDI0MSwgMzUsIDIsIDMsIDI0NywgMTcwLCA1NSwgMjE3LCAyNTAsIDg3LCAyMTIsIDExOCwgCisgICAgMjQxLCAzNSwgNTQsIDIxMCwgMjM3LCA4NywgMjEyLCAxMTgsIDI0MSwgMzUsIDU0LCAyMTcsIDI1MCwgODcsIDIxMiwgMTE4LCAKKyAgICAyMjEsIDE2NiwgMTU2LCAxMzUsIDIxMCwgMjM3LCA4NywgMjEyLCAxMTgsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjE3LCAyNTAsIAorICAgIDg3LCAyNDEsIDM1LCA1NCwgMjEwLCAyMzcsIDg3LCAyNDEsIDM1LCA1NCwgMjE3LCAyNTAsIDg3LCAyMjEsIDE2NiwgMTU2LCAKKyAgICAxMzUsIDIxMCwgMjM3LCA4NywgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMTcsIDI1MCwgODcsIDI1MSwgNywgMTU2LCAxMzUsIAorICAgIDIxMCwgMjM3LCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgMjE3LCAyNTAsIDg3LCAyMjEsIDE2NiwgMjUxLCA3LCAxNTYsIDEzNSwgCisgICAgMjEwLCAyMzcsIDg3LCAyMjEsIDE2NiwgMjUxLCA3LCAxNTYsIDEzNSwgNTIsIDIxNywgMjQ5LCA1MiwgMjEwLCAyMzYsIAorICAgIDIxMCwgMjQ1LCAzLCAyNDMsIDg1LCAyMTAsIDE5OCwgMywgMjQzLCA4NSwgMjEwLCAyNDUsIDMsIDkxLCAyLCA1NiwgMjEwLCAKKyAgICAxOTgsIDMsIDkxLCAyLCA1NiwgMjEwLCAyNDUsIDMsIDIyMywgMjI0LCAyLCA1NiwgMjEwLCAxOTgsIDMsIDIyMywgMjI0LCAKKyAgICAyLCA1NiwgMjEwLCAyNDUsIDc2LCAyMTksIDI0NSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDU1LCAyMTAsIDE5OCwgNzYsIAorICAgIDIxOSwgMjQ1LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgNTUsIDIxMCwgMjQ1LCA3NiwgODcsIDI0MSwgMzUsIDU0LCAyMTAsIAorICAgIDE5OCwgNzYsIDg3LCAyNDEsIDM1LCA1NCwgMjEwLCAyNDUsIDc2LCA4NywgMjA4LCAyMjgsIDIxOSwgMjU0LCAyMTAsIDE5OCwgCisgICAgNzYsIDg3LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDIxMCwgMjQ1LCA3NiwgODcsIDI1MSwgNywgMTU2LCAxMzUsIDIxMCwgMTk4LCAKKyAgICA3NiwgODcsIDI1MSwgNywgMTU2LCAxMzUsIDIxMCwgMjQ1LCA3NiwgODcsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjEwLCAxOTgsIAorICAgIDc2LCA4NywgMjIxLCAxNjYsIDE1NiwgMTM1LCA1MSwgNDksIDE3MSwgOTgsIDIxOSwgMjU0LCA1MSwgNTAsIDE3MSwgOTgsIAorICAgIDIxOSwgMjU0LCAyNDYsIDE2LCAyMTAsIDI0NCwgMjQ2LCAxNiwgMjEwLCAxOTcsIDI0NiwgMTYsIDIxMCwgMjQ1LCAyMTksIAorICAgIDI0NSwgMTU2LCAxMzUsIDI0NiwgMTYsIDIxMCwgMTk4LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIxMCwgMjQ1LCA4NywgMjEwLCAKKyAgICAxOTcsIDIxMCwgMTk4LCA4NywgMjEwLCAyNDQsIDIxMCwgMjQ1LCA4NywgMjEwLCAyNDQsIDIxMCwgMTk4LCA4NywgMjEwLCAKKyAgICAxOTcsIDIxMCwgMTk4LCAyNDgsIDExMCwgMjEwLCAyNDQsIDIxMCwgMTk4LCAyNDgsIDExMCwgMjUsIDIzMCwgOTgsIDI0NywgCisgICAgMTM3LCAyNDQsIDE0NSwgMywgMjEwLCAyNDQsIDI0MSwgMTE1LCA3NiwgMjIwLCAxLCAyNDIsIDY4LCAyMTgsIDEwNCwgMywgCisgICAgMjA5LCAxNzcsIDIwOCwgMTQ0LCAyMDgsIDEwMiwgMjMwLCAyNDQsIDIzOSwgMTYwLCAyMjEsIDE4MSwgMjEyLCAyMjgsIDQ5LCAKKyAgICAyMTAsIDMsIDIxMiwgMjI4LCAxMjEsIDIxMCwgMywgMjEyLCAyMjgsIDExMiwgMjEwLCAzLCAyMTgsIDIzNCwgMywgMTk0LCAKKyAgICA4MCwgMjQ4LCAyMzEsIDIwOCwgNzAsIDUwLCAyMDcsIDE3MywgNTIsIDgwLCAyNDgsIDIzMSwgNDksIDIwNywgMTczLCA4MCwgCisgICAgMjQ4LCAyMzEsIDUyLCA0OSwgMjA3LCAxNzMsIDUyLCA4MCwgMjQ4LCAyMzEsIDUyLCA0OSwgMjA3LCAxNzMsIDE2MywgMjQ0LCAKKyAgICAxNDUsIDIzOSwgMTIwLCA0OSwgMjI0LCAyNDUsIDc2LCA1MiwgMjA2LCAzOCwgMjEyLCAyMjgsIDEyMSwgMjEwLCA0LCAzLCAKKyAgICAyMTksIDIwMywgMjEyLCAyMjgsIDExMiwgMjEwLCA0LCAzLCAyMDYsIDI0NiwgMjEyLCAyMjgsIDExMiwgMjEwLCA0LCA4NywgCisgICAgMjEyLCAyMjgsIDEyMSwgMjEwLCAzLCA1MiwgMTIxLCAyMTAsIDMsIDUyLCAxMTIsIDIxMCwgMywgNTIsIDIxMSwgMzIsIAorICAgIDIyMSwgMTY2LCA1NCwgMjE2LCA3MywgNTIsIDIxMSwgMzIsIDIyMSwgMTY2LCA1NCwgMjQzLCAxMDQsIDIyMSwgMTY2LCAKKyAgICAyNDMsIDE0NCwgMywgMjE2LCA3MywgMjIyLCAyMzMsIDIxMiwgNTcsIDgwLCAyMjcsIDExNSwgMywgMjQ2LCA2MiwgNTUsIAorICAgIDgwLCAyMjcsIDExNSwgMywgMjQ2LCA2MiwgNTYsIDEyMSwgMjEwLCA0LCAzLCAyNDYsIDYyLCA1NiwgMjE5LCA4MiwgMywgCisgICAgMjM2LCAxMDYsIDk1LCAyMTksIDgyLCAzLCAyMDgsIDIyOCwgMjE5LCAyNTQsIDIwOCwgNzAsIDgwLCAyNDgsIDIzMSwgMjQ4LCAKKyAgICA2NywgMjE2LCAxMTcsIDIwOCwgNzAsIDgwLCAyNDgsIDIzMSwgMywgMjM2LCAxMDYsIDk1LCAyMDgsIDcwLCAyNDUsIDI0MywgCisgICAgMjE5LCAyNTQsIDIwOCwgNzAsIDIyMiwgMjIxLCAyMjcsIDE3OCwgMjA4LCA3MCwgMjIyLCAyMjEsIDIzNywgMjQ2LCAyNDIsIAorICAgIDc2LCAyMTIsIDU5LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyNDIsIDc2LCAyMTIsIDU5LCAyMzcsIDI0NywgCisgICAgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMDgsIDcwLCAyMTIsIDEsIDI0OCwgNjcsIDIxNiwgMTE3LCAyMjgsIDgsIDIwOCwgNzAsIAorICAgIDgwLCAyNDgsIDIzMSwgMjE5LCAyNTQsIDUyLCAyMTIsIDEsIDIxOSwgMjU0LCA2MSwgODAsIDE0MiwgMjIzLCAxNjIsIDYxLCAKKyAgICA4MCwgMTQyLCAxNTMsIDI0MSwgMTc2LCA2MSwgNDcsIDE1MywgMjA0LCA0NiwgNjEsIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIAorICAgIDYxLCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDYxLCA0NywgNDksIDUwLCA2MSwgNDcsIDk2LCA2MiwgNDcsIDE3NywgNjIsIAorICAgIDQ3LCAxODMsIDYyLCA0NywgMTUzLCAyNDEsIDE3NiwgNjIsIDQ3LCAxNTMsIDIwNCwgNDYsIDYyLCA0NywgMjExLCAyMzgsIAorICAgIDI0MSwgMTc2LCA2MiwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA2MiwgNDcsIDQ5LCA1MCwgNjIsIDQ3LCAxMTIsIDEyMSwgCisgICAgNjIsIDQ3LCA4NiwgNTMsIDMsIDIwOCwgMjExLCAyNDIsIDY4LCA4NiwgNTMsIDMsIDIwOCwgMjExLCAyMDYsIDIxMiwgOTYsIAorICAgIDUzLCAzLCAyMDgsIDIxMSwgMjQyLCA2OCwgOTYsIDUzLCAzLCAyMDgsIDIxMSwgMjA2LCAyMTIsIDUxLCAzLCAyMDgsIDE0NSwgCisgICAgMTYyLCAyNDgsIDQzLCA1MSwgMywgMjQ3LCAyNDgsIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDIwNiwgMjIxLCA1MCwgMjQzLCAKKyAgICAyMjgsIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDIyNiwgMjUxLCA0OSwgMjQzLCAyMjgsIDE2MiwgMjQ4LCA0MywgMjQzLCAyMjIsIAorICAgIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDI0MywgMjIyLCAzLCA1MCwgMTYyLCAyNDgsIDQzLCAyNDMsIDIyMiwgMywgMjA4LCAKKyAgICAxNDUsIDE2MiwgMjQ4LCA0MywgMjQzLCAyMjIsIDMsIDI0NywgMjQ4LCAxNjIsIDI0OCwgNDMsIDI0MiwgODMsIDIxMSwgCisgICAgMTc3LCA2MiwgMjI4LCA4LCAyMTEsIDE3NywgNjEsIDIyOCwgOCwgMjExLCAxNzcsIDYyLCAyMDUsIDI0MiwgNSwgMjExLCAKKyAgICAxNzcsIDYxLCAyMDUsIDI0MiwgNSwgMjExLCAxNzcsIDYyLCAyMTgsIDI1NSwgNjEsIDIxOCwgMjU1LCA2MSwgMjM3LCAxNywgCisgICAgNjIsIDIzNywgMTcsIDIzNiwgMTA2LCA2MiwgMjM3LCAxNywgNjIsIDIyOCwgOCwgMjQ2LCA2MSwgNjIsIDIyNSwgMTAsIAorICAgIDI0MywgMjIxLCA2MSwgMjI1LCAxMCwgMjQzLCAyMjEsIDYyLCAyMjUsIDEwLCAyMjYsIDI0NiwgNjEsIDIyNSwgMTAsIDIyNiwgCisgICAgMjQ2LCA2MiwgNSwgMjQzLCAyMjEsIDYyLCA1LCAyMjYsIDI0NiwgNjEsIDUsIDIyNiwgMjQ2LCA2MiwgMjM2LCAxMDYsIAorICAgIDI0MSwgMTA5LCA2MSwgMjM2LCAxMDYsIDI0MSwgMTA5LCA2MiwgODAsIDI0MSwgMTA5LCA2MSwgODAsIDI0MSwgMTA5LCA0OSwgCisgICAgNTMsIDMsIDUsIDI0NiwgNjEsIDEyNiwgOTYsIDI1MCwgOTEsIDQ5LCA1MywgMywgNDMsIDIxOCwgNzYsIDE2MywgOTYsIAorICAgIDIxMSwgMTcxLCA0NywgOTYsIDIwNywgMTM0LCA1MywgMywgODAsIDk1LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCA1MiwgODAsIAorICAgIDk1LCA5NiwgMjA3LCAxMzQsIDUzLCAyMzksIDEyMCwgMTQyLCA5NiwgMjA3LCAxMzQsIDIwOCwgNzAsIDI0NCwgMTQ1LCA0NywgCisgICAgOTYsIDUzLCAzLCAyNDIsIDgzLCAyMTEsIDc3LCA5NiwgNTMsIDMsIDIwOSwgMjQ5LCAzLCA4MCwgOTUsIDk2LCA1MywgMywgCisgICAgMjA5LCAyNDksIDMsIDUyLCA4MCwgOTUsIDk2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOSwgMjQ4LCA5NiwgMjA3LCAxMzQsIDUzLCAKKyAgICAzLCAyMDksIDI0OSwgMywgODAsIDk1LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDksIDI0OSwgMywgNTIsIDgwLCA5NSwgOTYsIAorICAgIDUzLCAyMDksIDI1LCAyMDMsIDE5NiwgMjA0LCA3NiwgNTMsIDIxOCwgNTksIDI0MywgMTY0LCAyMjcsIDIyMiwgMjQxLCAzNSwgCisgICAgMiwgODcsIDk2LCA0NywgMjE2LCA3NCwgMjA4LCAyMjgsIDIxOSwgMjU1LCA4NywgOTYsIDQ3LCA5NiwgNTMsIDg3LCAyMTYsIAorICAgIDc0LCAyNTEsIDcsIDE1NiwgMTM1LCA4NiwgNTMsIDIwOSwgMjUsIDIzNywgMjQ2LCA4NiwgNTMsIDIwOSwgMjUsIDIxMCwgCisgICAgMTk3LCA5NiwgMjE3LCA1OCwgNDcsIDg2LCAyMTcsIDU4LCA0NywgMjE2LCA3NCwgMjA4LCAyMjgsIDIxOSwgMjU1LCA4NywgCisgICAgODYsIDQ3LCA4NiwgNTMsIDg3LCAyMTYsIDc0LCAyNTEsIDcsIDE1NiwgMTM1LCAyMDgsIDIyOCwgMjE5LCAyNTUsIDg3LCAKKyAgICA5NiwgNDcsIDk2LCA1MywgODcsIDI1MSwgNywgMTU2LCAxMzUsIDk2LCA1MywgODcsIDIxNiwgNzQsIDIwOCwgMjI4LCAyMTksIAorICAgIDI1NCwgODYsIDUzLCA4NywgMjE2LCA3NCwgMjA4LCAyMjgsIDIxOSwgMjU0LCAxODMsIDIwOCwgODQsIDIwMiwgMzAsIDQ3LCAKKyAgICAyMTIsIDIyOCwgMjEyLCA1OSwgMTUzLCA0NywgMjEyLCAyMjgsIDI0OSwgMjIsIDIxMSwgMjM4LCA0NywgNjEsIDIyNSwgMTAsIAorICAgIDIxMSwgOTQsIDYyLCA1LCAyMTEsIDk0LCA2MSwgNSwgMjExLCA5NCwgNjIsIDIxNiwgMTEsIDIxOCwgMjU1LCA2MSwgMjE2LCAKKyAgICAxMSwgMjE4LCAyNTUsIDc5LCAyMjgsIDgsIDI0NiwgNjEsIDc5LCAyMTksIDIwNSwgMywgMjE5LCAyMDUsIDIzMSwgNiwgNzksIAorICAgIDI0NiwgNjIsIDMsIDI0NiwgNjIsIDIzMSwgNiwgNzksIDI0NiwgNjEsIDc5LCA0MywgMjE0LCAyNTQsIDIxMiwgNTksIDE1MywgCisgICAgNTMsIDMsIDIzNiwgMTE1LCAyMzcsIDY0LCAyNDksIDIyLCAyMTEsIDIzOCwgNTMsIDMsIDIzNiwgMTE1LCAyMDksIDI0OCwgCisgICAgMjEyLCA1OSwgMTUzLCA1MywgMywgMjM2LCAxMDYsIDIwOSwgMjQ4LCAyNDksIDIyLCAyMTEsIDIzOCwgNTMsIDMsIDIzNiwgCisgICAgMTA2LCAyMDksIDI0OCwgMjQ4LCAxMTgsIDUzLCAyMTgsIDU5LCAxODMsIDIwOSwgODQsIDE1MywgMjQxLCAxNzUsIDIxMiwgCisgICAgMjI4LCAyNDgsIDExOCwgNTMsIDIxOCwgNTksIDE4MywgMjA5LCA4NCwgMTUzLCAyNDEsIDE3NSwgOTYsIDIwOCwgODQsIDQ3LCAKKyAgICAxNzcsIDIwOCwgODQsIDQ3LCA4NiwgMjA4LCA4NCwgNDcsIDE4MywgMjA4LCA4NCwgNDcsIDQ5LCA1MCwgMjA4LCA4NCwgNDcsIAorICAgIDExMiwgMTIxLCAyMDgsIDg0LCA0NywgMTUzLCAyMDQsIDQ2LCAyMDgsIDg0LCA0NywgMTUzLCAyNDEsIDE3NiwgMjA4LCA4NCwgCisgICAgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjA4LCA4NCwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMDgsIDg0LCA0NywgOTYsIAorICAgIDIwOCwgODQsIDI0NCwgMTQzLCA0NywgMTc3LCAyMDgsIDg0LCAyNDQsIDE0MywgNDcsIDg2LCAyMDgsIDg0LCAyNDQsIDE0MywgCisgICAgNDcsIDE4MywgMjA4LCA4NCwgMjQ0LCAxNDMsIDQ3LCAyNDYsIDE4LCAyMDgsIDg0LCAxNzEsIDI0NiwgNjIsIDQ3LCAyNTAsIAorICAgIDE5NCwgMjA4LCA4NCwgMTcxLCAyNDYsIDYyLCA0NywgOTYsIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgMTQyLCAxNzcsIDIwOCwgCisgICAgODQsIDUzLCAyMDgsIDE3MywgMTQyLCA4NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDE4MywgMjA4LCA4NCwgNTMsIAorICAgIDIwOCwgMTczLCAxNDIsIDE1MywgMjA0LCA0NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDE1MywgMjQxLCAxNzYsIAorICAgIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgMTQyLCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgCisgICAgMTQyLCAyMTEsIDIzOCwgMjA0LCA0NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDk2LCAyMDgsIDg0LCA1MywgMywgCisgICAgNTIsIDIzNiwgMTA2LCA5NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgNTIsIDIzNiwgMTA2LCA5NSwgODYsIDIwOCwgODQsIDUzLCAKKyAgICAzLCA1MiwgMjM2LCAxMDYsIDk1LCAxODMsIDIwOCwgODQsIDUzLCAzLCA1MiwgMjM2LCAxMDYsIDk1LCAyMzYsIDEwNiwgCisgICAgMjEwLCAxMSwgMjI5LCAxNTEsIDgwLCAyMTAsIDExLCAyMjksIDE1MSwgOTYsIDIwOCwgODQsIDUzLCAxMTUsIDg2LCAyMDgsIAorICAgIDg0LCA0NywgMTc3LCAyMDgsIDg0LCA1MywgOTYsIDc2LCAxODMsIDIwOCwgODQsIDQ3LCA4NiwgMjA4LCA4NCwgNTMsIDExNSwgCisgICAgOTYsIDIwOCwgODQsIDQ3LCAxODMsIDIwOCwgODQsIDUzLCA5NiwgNzYsIDE3NywgMjA4LCA4NCwgNDcsIDk2LCAyMDgsIDg0LCAKKyAgICAyMTksIDE0NiwgMjUwLCA5MSwgMTc3LCAyMDgsIDg0LCAyMTksIDE0NiwgMjUwLCA5MSwgODYsIDIwOCwgODQsIDIxOSwgCisgICAgMTQ2LCAyNTAsIDkxLCAxODMsIDIwOCwgODQsIDIxOSwgMTQ2LCAyNTAsIDkxLCA5NiwgNjIsIDQzLCA2MSwgNDcsIDE3NywgCisgICAgNjIsIDQzLCA2MSwgNDcsIDg2LCA2MiwgNDMsIDYxLCA0NywgMTgzLCA2MiwgNDMsIDYxLCA0NywgMjUwLCAxOTQsIDIwOCwgCisgICAgODQsIDUwLCAyMDcsIDkyLCA0NywgMjUwLCAxOTQsIDIwOCwgODQsIDI0NywgMjQ4LCAyMDcsIDkyLCA0NywgMjUwLCAxOTQsIAorICAgIDIwOCwgODQsIDQ5LCAyMDcsIDkyLCA0NywgMjUwLCAxOTQsIDIwOCwgODQsIDIwOCwgMTQ1LCAyMDcsIDkyLCA0NywgMjE2LCAKKyAgICA3OCwgMjI3LCAyMjIsIDIxNiwgNzgsIDIxNiwgMTYsIDIyMiwgMjEyLCAyMjcsIDIyMiwgMjIyLCAyMTIsIDIxNiwgMTYsIAorICAgIDIzOSwgMTQ3LCAyNDUsIDE2NiwgMjUwLCA5MiwgMjQ2LCA1NywgMjUwLCAxOTMsIDg2LCA2MiwgNDcsIDIwOSwgMzEsIDIwOCwgCisgICAgMTQzLCA5NiwgMjQxLCAzMSwgMjUwLCA5NCwgMjA5LCAzMSwgMjE2LCAxMiwgMTc3LCAyNDEsIDMxLCAyNTAsIDk0LCAyMDksIAorICAgIDMxLCAyMDgsIDE0MywgODYsIDI0MSwgMzEsIDI1MCwgOTQsIDIwOSwgMzEsIDIyNywgMjE4LCAxODMsIDI0MSwgMzEsIDI1MCwgCisgICAgOTQsIDYyLCA5NiwgMjQxLCAzMSwgMjUwLCA5NCwgNjIsIDE3NywgMjQxLCAzMSwgMjUwLCA5NCwgNjIsIDg2LCAyNDEsIDMxLCAKKyAgICAyNTAsIDk0LCA2MiwgMTgzLCAyNDEsIDMxLCAyNTAsIDk0LCAxODMsIDIwOCwgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAKKyAgICAyMjcsIDIxMiwgMTgzLCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjE2LCA1LCAxNzcsIDIwOCwgODQsIDUzLCAKKyAgICAzLCAxNjMsIDIwOCwgMjExLCAyMjcsIDIxMiwgMTc3LCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjE2LCA1LCAKKyAgICA5NiwgMjA4LCA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIDIwNiwgMjEyLCA4NiwgMjA4LCA4NCwgNTMsIDMsIDE2MywgCisgICAgMjA4LCAyMTEsIDIwNiwgMjEyLCA5NiwgMjA4LCA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIDI0MiwgNjgsIDg2LCAyMDgsIAorICAgIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjQyLCA2OCwgNjIsIDI0NSwgODYsIDE4MywgMjUsIDk2LCA0NywgNjIsIDI0NSwgCisgICAgODYsIDE4MywgMjUsIDg2LCA0NywgNjIsIDI0NSwgODYsIDE3NywgMjUsIDk2LCA0NywgNjIsIDI0NSwgODYsIDE3NywgMjUsIAorICAgIDg2LCA0NywgNjIsIDI0NSwgODYsIDk2LCAyNSwgMTc3LCA0NywgNjIsIDI0NSwgODYsIDg2LCAyNSwgMTc3LCA0NywgNjIsIAorICAgIDI0NSwgODYsIDk2LCAyNSwgMTgzLCA0NywgNjIsIDI0NSwgODYsIDg2LCAyNSwgMTgzLCA0NywgMjE2LCA1NSwgNTMsIDEyMSwgCisgICAgMjI3LCAyMjIsIDIxNiwgNTUsIDUzLCAxMjEsIDIxNiwgMTYsIDIxNiwgNTUsIDUzLCAxMTIsIDIyNywgMjIyLCAyMTYsIDU1LCAKKyAgICA1MywgMTEyLCAyMTYsIDE2LCAyMTYsIDU1LCA1MywgNDksIDIwNiwgMjI0LCAyMTYsIDU1LCA1MywgNTAsIDIwNiwgMjI0LCAKKyAgICAyMTYsIDU1LCA1MywgNDksIDI0MiwgNzAsIDIxNiwgNTUsIDUzLCA1MCwgMjQyLCA3MCwgMTc3LCA2MSwgNTMsIDIzOSwgCisgICAgMTIwLCAyNDgsIDIzMSwgMywgMjM2LCAxMDYsIDE0MiwgMTEyLCAyNTAsIDk1LCAyMzEsIDUwLCAzNCwgMjE2LCAxNDQsIAorICAgIDI0NywgMjMzLCAyNDgsIDI0OCwgOTgsIDMsIDE1NywgMjAzLCAxOTYsIDQzLCAyMDMsIDE5NiwgNDMsIDI2LCAyMDMsIDE5NiwgCisgICAgNjIsIDUxLCAyNDYsIDIxNSwgNjIsIDI0MywgMjIyLCAyNDYsIDIxNSwgMjA3LCAxNzQsIDYyLCAyMTgsIDI1NSwgMjM2LCAKKyAgICAxMDYsIDYyLCAyMjAsIDgxLCA2MiwgMjIwLCA4MSwgNjIsIDIyNSwgMTAsIDIwNiwgMjIzLCAyMDgsIDg2LCAyNDYsIDIxNSwgCisgICAgNjIsIDIyNSwgMTAsIDI0MiwgNjksIDIwOCwgODYsIDI0NiwgMjE1LCA2MiwgMjI1LCAxMCwgMjI3LCAyMTcsIDIwOCwgODYsIAorICAgIDI0NiwgMjE1LCA2MiwgMjI1LCAxMCwgMjE2LCAxMSwgMjA4LCA4NiwgMjQ2LCAyMTUsIDIwOCwgMTQ1LCAxNjIsIDYyLCAKKyAgICAyNDYsIDYxLCAyNDcsIDI0OCwgMTYyLCA2MiwgMjQ2LCA2MSwgMTU3LCAyMzksIDE0NywgMjE4LCA2MSwgNjIsIDI0NSwgODIsIAorICAgIDIxNSwgMTk4LCAxNTcsIDIzOSwgMTQ3LCAyMTgsIDYxLCA2MiwgMjQ1LCA4MiwgNjEsIDIzOSwgMTQ3LCAyMTgsIDYxLCAKKyAgICAyNDUsIDgyLCAyMTUsIDE5OCwgNjEsIDIzOSwgMTQ3LCAyMTgsIDYxLCAyNDUsIDgyLCA1MSwgMjE4LCAzNCwgMjMxLCAzMSwgCisgICAgMjA2LCAyNTAsIDU0LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDgsIDg2LCAyNTAsIDkzLCAxNzcsIDIwNywgMTM0LCA1MywgCisgICAgMywgMjA4LCA4NiwgMjUwLCA5MywgODYsIDIwNywgMTM0LCA1MywgMywgMjA4LCA4NiwgMjUwLCA5MywgMTgzLCAyMDcsIAorICAgIDEzNCwgNTMsIDMsIDIwOCwgODYsIDI1MCwgOTMsIDE4MCwgNiwgMSwgMjUwLCAwLCAxODAsIDYsIDEsIDI0NywgMTgxLCAKKyAgICAxODAsIDYsIDEsIDIwNiwgNTMsIDE4MCwgNiwgMSwgMjM4LCA1MCwgMTgwLCA2LCAxLCAyNDMsIDEwOCwgMTgwLCA2LCAxLCAKKyAgICAyMDMsIDI0LCAxODAsIDYsIDEsIDIwMiwgNjQsIDE4MCwgNiwgMSwgMjQxLCAyNTAsIDE4MCwgNiwgMSwgMjAyLCA4OSwgCisgICAgMTgwLCA2LCAxLCAyMzAsIDE4OCwgMTgwLCA2LCAxLCA4MSwgMjMwLCAxODgsIDE4MCwgNiwgMSwgNzUsIDE4MCwgNiwgMSwgCisgICAgMjQzLCAxMjgsIDE4MCwgNiwgMSwgMjMwLCAxMCwgMTgwLCA2LCAxLCAyMjcsIDc5LCAxODAsIDYsIDEsIDIyMywgMTY3LCAKKyAgICAxODAsIDYsIDEsIDIyMywgNjksIDE4MCwgNiwgMSwgMjIwLCAyMCwgMTgwLCA2LCAxLCAyMTgsIDU2LCAxODAsIDYsIDEsIAorICAgIDIxNSwgMjQ0LCAxODAsIDYsIDEsIDIxMiwgNDEsIDE4MCwgNiwgMSwgMjA3LCAxNjEsIDE4MCwgNiwgMSwgMjA3LCAxMCwgCisgICAgMTgwLCA2LCAxLCAyMzksIDEyMywgMTgwLCA2LCAxLCAyMzcsIDIzLCAxODAsIDYsIDEsIDIxOSwgMjE3LCAxODAsIDYsIDEsIAorICAgIDIxOSwgMzQsIDE4MCwgNiwgMSwgMjEyLCAyMDIsIDE4MCwgNiwgMSwgMjA3LCAyNTUsIDE4MCwgNiwgMSwgMjQ2LCAxMDQsIAorICAgIDE4MCwgNiwgMSwgMjEzLCA5MCwgMTgwLCA2LCAxLCAyMDMsIDMwLCAxODAsIDYsIDEsIDIwMywgMzIsIDE4MCwgNiwgMSwgCisgICAgMjAzLCA2NCwgMTgwLCA2LCAxLCAyMTEsIDIwNCwgMTUyLCAxODAsIDYsIDEsIDIwMiwgMjEzLCAxODAsIDYsIDEsIDUsIAorICAgIDIwMiwgMTgzLCAxODAsIDYsIDEsIDUsIDIwMiwgMTg0LCAzLCAyMDksIDI0OCwgMTgwLCA2LCAxLCAyMDIsIDI0NywgMTgwLCAKKyAgICA2LCAxLCAyMzAsIDIyOSwgNSwgMjAyLCAxODMsIDE4MCwgNiwgMSwgMjQ4LCA3MywgMjAyLCAxODMsIDE4MCwgNiwgMSwgCisgICAgMjMwLCAyMjksIDI0OCwgNzMsIDIwMiwgMTgzLCAxODAsIDYsIDEsIDIzOSwgMjM1LCAxODAsIDYsIDEsIDIzMCwgMTg2LCAKKyAgICAxODAsIDYsIDEsIDIxMiwgMjAxLCAxODAsIDYsIDEsIDIwOCwgNjAsIDYzLCAxODAsIDYsIDEsIDIyNywgMjUyLCAyMjMsIAorICAgIDE2NywgMTgwLCA1LCAxLCAyNTAsIDAsIDE4MCwgNSwgMSwgMjQ3LCAxODEsIDE4MCwgNSwgMSwgMjA2LCA1MywgMTgwLCA1LCAKKyAgICAxLCAyMzgsIDUwLCAxODAsIDUsIDEsIDI0MywgMTA4LCAxODAsIDUsIDEsIDIwMywgMjQsIDE4MCwgNSwgMSwgMjAyLCA2NCwgCisgICAgMTgwLCA1LCAxLCAyNDEsIDI1MCwgMTgwLCA1LCAxLCAyMDIsIDg5LCAxODAsIDUsIDEsIDIzMCwgMTg4LCAxODAsIDUsIDEsIAorICAgIDgxLCAyMzAsIDE4OCwgMTgwLCA1LCAxLCA3NSwgMTgwLCA1LCAxLCAyNDMsIDEyOCwgMTgwLCA1LCAxLCAyMzAsIDEwLCAKKyAgICAxODAsIDUsIDEsIDIyNywgNzksIDE4MCwgNSwgMSwgMjIzLCAxNjcsIDE4MCwgNSwgMSwgMjIzLCA2OSwgMTgwLCA1LCAxLCAKKyAgICAyMjAsIDIwLCAxODAsIDUsIDEsIDIxOCwgNTYsIDE4MCwgNSwgMSwgMjE1LCAyNDQsIDE4MCwgNSwgMSwgMjEyLCA0MSwgCisgICAgMTgwLCA1LCAxLCAyMDcsIDE2MSwgMTgwLCA1LCAxLCAyMDcsIDEwLCAxODAsIDUsIDEsIDIzOSwgMTIzLCAxODAsIDUsIDEsIAorICAgIDIzNywgMjMsIDE4MCwgNSwgMSwgMjE5LCAyMTcsIDE4MCwgNSwgMSwgMjE5LCAzNCwgMTgwLCA1LCAxLCAyMTIsIDIwMiwgCisgICAgMTgwLCA1LCAxLCAyMDcsIDI1NSwgMTgwLCA1LCAxLCAyNDYsIDEwNCwgMTgwLCA1LCAxLCAyMTMsIDkwLCAxODAsIDUsIDEsIAorICAgIDIwMywgMzAsIDE4MCwgNSwgMSwgMjAzLCAzMiwgMTgwLCA1LCAxLCAyMDMsIDY0LCAxODAsIDUsIDEsIDIxMSwgMjA0LCAKKyAgICAxNTIsIDE4MCwgNSwgMSwgMjAyLCAyMTMsIDE4MCwgNSwgMSwgNSwgMjAyLCAxODMsIDE4MCwgNSwgMSwgNSwgMjAyLCAxODQsIAorICAgIDMsIDIwOSwgMjQ4LCAxODAsIDUsIDEsIDIwMiwgMjQ3LCAxODAsIDUsIDEsIDIzMCwgMjI5LCA1LCAyMDIsIDE4MywgMTgwLCAKKyAgICA1LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMTgwLCA1LCAxLCAyMzAsIDIyOSwgMjQ4LCA3MywgMjAyLCAxODMsIDE4MCwgNSwgCisgICAgMSwgMjM5LCAyMzUsIDE4MCwgNSwgMSwgMjMwLCAxODYsIDE4MCwgNSwgMSwgMjEyLCAyMDEsIDE4MCwgNSwgMSwgMjA4LCAKKyAgICA2MCwgNjMsIDE4MCwgNSwgMSwgMjI3LCAyNTIsIDIyMywgMTY3LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgNTIsIDE0MiwgOCwgCisgICAgNSwgMSwgMjI4LCAxMzEsIDMsIDUyLCAxNDIsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA2LCAxLCAKKyAgICAyMTksIDE4NSwgMywgOTUsIDgsIDYsIDEsIDIxNywgMSwgMywgMjA5LCAyNDgsIDgsIDUsIDEsIDM0LCAzLCA5NSwgOCwgNSwgCisgICAgMSwgMjEwLCA3MCwgMywgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQ0LCAyMCwgOCwgNSwgMSwgMjM3LCAKKyAgICAxNzIsIDMsIDI0NCwgMjAsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDI0NCwgMjAsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDI0NCwgCisgICAgMjAsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCAyNDQsIDIwLCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ0LCAyMCwgOCwgNiwgCisgICAgMSwgMjUxLCAyLCA4LCA2LCAxLCAyMjYsIDE4NiwgMywgMTEzLCA4LCA2LCAxLCAyMDcsIDE3NCwgNjMsIDgsIDYsIDEsIAorICAgIDIwNywgMTc0LCAyNTEsIDIsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCA1MCwgMTEzLCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgCisgICAgMTEzLCA4LCA1LCAxLCAyMDQsIDE0NSwgMywgMTEzLCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMjQ1LCA5NSwgOCwgNiwgMSwgCisgICAgMTYyLCAyMzcsIDE3MSwgOCwgNSwgMSwgMTYyLCAyMzcsIDE3MSwgOCwgNSwgMSwgMjA5LCAyNDYsIDIxOCwgMTkyLCA4LCA1LCAKKyAgICAxLCAxODgsIDMsIDIyMSwgMTYzLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjE3LCAxLCAzLCAyMDksIDI0OCwgOCwgNSwgMSwgCisgICAgMTU4LCAzLCAxMjQsIDIxNSwgMjUzLCAyMzEsIDYsIDgsIDEsIDUsIDYsIDIwNywgMTc0LCA3NCwgOCwgMjEwLCAyNDYsIDUsIAorICAgIDEsIDIzMCwgMTg0LCA2NSwgMSwgNiwgMjA2LCAxNjQsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDIxMCwgMTY5LCAyMDksIDI0OCwgCisgICAgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDIxMCwgMTY5LCAyMDksIDI0OCwgODQsIDYsIDEsIDI1MSwgMjQsIDg0LCA1LCAxLCAKKyAgICAyNTEsIDI0LCA4NCwgNiwgMSwgMjA1LCAyMjcsIDg0LCA1LCAxLCAyMDUsIDIyNywgODQsIDYsIDEsIDIzOCwgMjM1LCA4NCwgCisgICAgNSwgMSwgMjM4LCAyMzUsIDg0LCA2LCAxLCAyNDQsIDE4MCwgODQsIDUsIDEsIDI0NCwgMTgwLCA4NCwgNiwgMSwgMjQxLCAKKyAgICAxNDQsIDg0LCA1LCAxLCAyNDEsIDE0NCwgODQsIDYsIDEsIDIxMSwgMjQzLCA4NCwgNSwgMSwgMjExLCAyNDMsIDg0LCA2LCAKKyAgICAxLCAyMDIsIDk5LCA4NCwgNSwgMSwgMjAyLCA5OSwgODQsIDYsIDEsIDIzNywgODAsIDg0LCA1LCAxLCAyMzcsIDgwLCA4NCwgCisgICAgNiwgMSwgMjA5LCA3MiwgODQsIDUsIDEsIDIwOSwgNzIsIDg0LCA2LCAxLCAyMzUsIDE2OCwgODQsIDUsIDEsIDIzNSwgMTY4LCAKKyAgICA4NCwgNiwgMSwgMjI5LCAyNTIsIDg0LCA1LCAxLCAyMjksIDI1MiwgODQsIDYsIDEsIDIyNywgMjQ4LCA4NCwgNSwgMSwgCisgICAgMjI3LCAyNDgsIDg0LCA2LCAxLCAyMjQsIDE1NSwgODQsIDUsIDEsIDIyNCwgMTU1LCA4NCwgNiwgMSwgMjIyLCAxMDAsIDg0LCAKKyAgICA1LCAxLCAyMjIsIDEwMCwgODQsIDYsIDEsIDIyOCwgMjI1LCA4NCwgNSwgMSwgMjI4LCAyMjUsIDg0LCA2LCAxLCA3OCwgODQsIAorICAgIDUsIDEsIDc4LCA4NCwgNiwgMSwgMjE4LCAxNjcsIDg0LCA1LCAxLCAyMTgsIDE2NywgODQsIDYsIDEsIDIxNSwgMjI3LCA4NCwgCisgICAgNSwgMSwgMjE1LCAyMjcsIDg0LCA2LCAxLCAyMTIsIDEzMiwgODQsIDUsIDEsIDIxMiwgMTMyLCA4NCwgNiwgMSwgMjA5LCAKKyAgICAyMDcsIDg0LCA1LCAxLCAyMDksIDIwNywgODQsIDYsIDEsIDIwNywgMzksIDg0LCA1LCAxLCAyMDcsIDM5LCA4NCwgNiwgMSwgCisgICAgMjQwLCAyNiwgODQsIDUsIDEsIDI0MCwgMjYsIDg0LCA2LCAxLCAyMjksIDEyMiwgODQsIDUsIDEsIDIyOSwgMTIyLCA4NCwgCisgICAgNiwgMSwgMjE3LCAyMDIsIDg0LCA1LCAxLCAyMTcsIDIwMiwgODQsIDYsIDEsIDIyMCwgMTIsIDg0LCA1LCAxLCAyMjAsIDEyLCAKKyAgICA4NCwgNiwgMSwgMjQzLCAyMjYsIDI1MSwgMzAsIDg0LCA1LCAxLCAyNDMsIDIyNiwgMjUxLCAzMCwgODQsIDYsIDEsIDM4LCAKKyAgICA4NCwgMjUxLCA1OSwgODQsIDUsIDEsIDM4LCA4NCwgMjUxLCA1OSwgODQsIDYsIDEsIDI0NSwgMTEzLCAyNDEsIDE0NCwgODQsIAorICAgIDUsIDEsIDI0NSwgMTEzLCAyNDEsIDE0NCwgODQsIDYsIDEsIDI0MywgMjI2LCAyMjksIDI1MiwgODQsIDUsIDEsIDI0MywgCisgICAgMjI2LCAyMjksIDI1MiwgODQsIDYsIDEsIDI0MywgMjI2LCAyMjIsIDEwMCwgODQsIDUsIDEsIDI0MywgMjI2LCAyMjIsIAorICAgIDEwMCwgODQsIDYsIDEsIDI0NSwgMTEzLCAyMjIsIDEwMCwgODQsIDUsIDEsIDI0NSwgMTEzLCAyMjIsIDEwMCwgODQsIDYsIAorICAgIDEsIDM4LCA4NCwgMjIwLCAxMiwgODQsIDUsIDEsIDM4LCA4NCwgMjIwLCAxMiwgODQsIDYsIDEsIDIxNCwgMjQ2LCA4NCwgNSwgCisgICAgMSwgMjE0LCAyNDYsIDg0LCA2LCAxLCAyNDUsIDEyOCwgMjEzLCAzNSwgODQsIDUsIDEsIDI0NSwgMTI4LCAyMTMsIDM1LCAKKyAgICA4NCwgNiwgMSwgMzgsIDg0LCAyMTMsIDM1LCA4NCwgNSwgMSwgMzgsIDg0LCAyMTMsIDM1LCA4NCwgNiwgMSwgMzgsIDg0LCAKKyAgICAyNDEsIDcsIDg0LCA1LCAxLCAzOCwgODQsIDI0MSwgNywgODQsIDYsIDEsIDI1MSwgNDMsIDIyOSwgMTI3LCA4NCwgNSwgMSwgCisgICAgMjUxLCA0MywgMjI5LCAxMjcsIDg0LCA2LCAxLCAyNDMsIDIyNiwgMjM2LCAxMDcsIDg0LCA1LCAxLCAyNDMsIDIyNiwgMjM2LCAKKyAgICAxMDcsIDg0LCA2LCAxLCAzOCwgODQsIDIzNiwgMTA3LCA4NCwgNSwgMSwgMzgsIDg0LCAyMzYsIDEwNywgODQsIDYsIDEsIAorICAgIDM4LCA4NCwgMTUyLCA4NCwgNSwgMSwgMzgsIDg0LCAxNTIsIDg0LCA2LCAxLCAyMjgsIDEzMCwgMTUyLCA4NCwgNSwgMSwgCisgICAgMjI4LCAxMzAsIDE1MiwgODQsIDYsIDEsIDM4LCA4NCwgMjM3LCA0MiwgODQsIDUsIDEsIDM4LCA4NCwgMjM3LCA0MiwgODQsIAorICAgIDYsIDEsIDM4LCA4NCwgMjM3LCA4MywgODQsIDUsIDEsIDM4LCA4NCwgMjM3LCA4MywgODQsIDYsIDEsIDM4LCA4NCwgMjM4LCAKKyAgICAyMzAsIDg0LCA1LCAxLCAzOCwgODQsIDIzOCwgMjMwLCA4NCwgNiwgMSwgMzgsIDg0LCAyNDMsIDEzMSwgODQsIDUsIDEsIAorICAgIDM4LCA4NCwgMjQzLCAxMzEsIDg0LCA2LCAxLCAzOCwgODQsIDIxMywgMSwgODQsIDUsIDEsIDM4LCA4NCwgMjEzLCAxLCA4NCwgCisgICAgNiwgMSwgMzgsIDIyMSwgNTQsIDIxMywgMSwgODQsIDUsIDEsIDM4LCAyMjEsIDU0LCAyMTMsIDEsIDg0LCA2LCAxLCAzOCwgCisgICAgMjIxLCA1NCwgMjIyLCAxNTEsIDg0LCA1LCAxLCAzOCwgMjIxLCA1NCwgMjIyLCAxNTEsIDg0LCA2LCAxLCAzOCwgMjIxLCAKKyAgICA1NCwgMjIwLCAyNDgsIDg0LCA1LCAxLCAzOCwgMjIxLCA1NCwgMjIwLCAyNDgsIDg0LCA2LCAxLCAzOCwgMjIxLCA1NCwgCisgICAgMjA0LCA3NywgODQsIDUsIDEsIDM4LCAyMjEsIDU0LCAyMDQsIDc3LCA4NCwgMTYsIDIzMCwgMTgsIDg0LCAxNiwgMjI0LCAKKyAgICAxNTYsIDIxNSwgMjI3LCA4NCwgMTYsIDIxOCwgMTY4LCAyMTUsIDIyNywgODQsIDE2LCAyMTEsIDg1LCA4NCwgMTYsIDIwOSwgCisgICAgMjA4LCAyMTUsIDIyNywgODQsIDE2LCAyMjksIDEyMywgMjE1LCAyMjcsIDg0LCAxNiwgMjEzLCAyLCAyMTIsIDEzMiwgODQsIAorICAgIDYsIDEsIDI0NSwgMTEzLCAyMTMsIDM1LCA4NCwgNSwgMSwgMjQ1LCAxMTMsIDIxMywgMzUsIDg0LCA2LCAxLCAyNDUsIDExMywgCisgICAgMjM4LCAyMzAsIDg0LCA1LCAxLCAyNDUsIDExMywgMjM4LCAyMzAsIDg0LCAzOSwgMjIyLCAxMDEsIDU1LCA4NCwgMzksIAorICAgIDIxMSwgMTk3LCAyNTAsIDY3LCA4NCwgMzksIDIxMSwgMTk3LCAyMjcsIDE4NiwgODQsIDYsIDEsIDI0OCwgMTYsIDIyOSwgCisgICAgMTI3LCA4NCwgNSwgMSwgMjQ4LCAxNiwgMjI5LCAxMjcsIDg0LCAzOCwgMjIxLCA1NCwgMjM5LCAxMDIsIDIxMSwgNjEsIDg0LCAKKyAgICAzOCwgMjIxLCA1NCwgMjQzLCAxNjcsIDIxNywgNDcsIDgyLCA4NCwgMzgsIDIyMSwgNTQsIDIzMSwgMzAsIDIxNywgNDcsIAorICAgIDgyLCA4NCwgMzgsIDIyMSwgNTQsIDIwNiwgNDAsIDI0MywgMTQxLCA4NCwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDg0LCAKKyAgICAyMzksIDEwMiwgMjExLCA2MSwgODQsIDIyNCwgMjUsIDI0MywgMTQxLCAxMTQsIDUsIDEsIDI1MCwgMjMxLCAxMTQsIDUsIDEsIAorICAgIDI0OCwgMjQyLCAxMTQsIDUsIDEsIDIzOCwgMjM0LCAxMTQsIDUsIDEsIDI0MywgOTMsIDExNCwgNSwgMSwgMjQxLCA5MiwgCisgICAgMTE0LCA1LCAxLCAyMDUsIDIxMywgMTE0LCA1LCAxLCAyMDIsIDg3LCAxMTQsIDUsIDEsIDIwOSwgMjMwLCAxMTQsIDUsIDEsIAorICAgIDIzMSwgNDksIDExNCwgNSwgMSwgMjMwLCA0LCAxMTQsIDUsIDEsIDIyOCwgMiwgMTE0LCA1LCAxLCAyMjUsIDEyMiwgMTE0LCAKKyAgICA1LCAxLCAyMjMsIDc0LCAxMTQsIDUsIDEsIDIyMCwgMzEsIDExNCwgNSwgMSwgMjE5LCA5MSwgMTE0LCA1LCAxLCAyMDIsIAorICAgIDc2LCAxMTQsIDUsIDEsIDIxNiwgMjAyLCAxMTQsIDUsIDEsIDIxNCwgMjQzLCAxMTQsIDUsIDEsIDIwOSwgMjE4LCAxMTQsIAorICAgIDUsIDEsIDIwNiwgMjU1LCAxMTQsIDUsIDEsIDIxOCwgMjAwLCAxMTQsIDUsIDEsIDIyOSwgMTMyLCAxMTQsIDUsIDEsIDIzOCwgCisgICAgMTEwLCAxMTQsIDUsIDEsIDIxNywgMTExLCAxMTQsIDUsIDEsIDIxMiwgMjU1LCAxMTQsIDUsIDEsIDI0NiwgMTI5LCAxMTQsIAorICAgIDUsIDEsIDI0NywgNjEsIDExNCwgNSwgMSwgMjMwLCAxMzMsIDExNCwgNSwgMSwgMjQ2LCA2OCwgMTE0LCA1LCAxLCAyNDYsIAorICAgIDE4MywgMTE0LCA1LCAxLCAyMDMsIDE4MCwgMTE0LCA1LCAxLCAyMzAsIDE0NiwgMTE0LCA1LCAxLCAyMzcsIDE1NCwgMTE0LCAKKyAgICA1LCAxLCAyMzcsIDY3LCAxMTQsIDUsIDEsIDIzNiwgMjU0LCAxMTQsIDUsIDEsIDIwNCwgNjIsIDExNCwgNSwgMSwgMjM3LCAKKyAgICA5MiwgMTE0LCA1LCAxLCAyMzYsIDEzMiwgMTE0LCA1LCAxLCAyMDIsIDI0OSwgMTE0LCA1LCAxLCAyNTEsIDk4LCAyMDgsIAorICAgIDI0NywgMSwgMTk4LCAyMDgsIDI0NywgMSwgMjAzLCAxMDYsIDIwOCwgMjQ3LCAxLCAyMDMsIDEwNSwgMjA4LCAyNDcsIDEsIAorICAgIDIwMywgOTUsIDIwOCwgMjQ3LCAxLCAyMDMsIDkzLCAyMDgsIDI0NywgMSwgMjQ4LCAxMTIsIDI1MSwgMTQwLCAyMDMsIDg4LCAKKyAgICAyMDgsIDI0NywgMSwgMjAzLCA4OCwgMjA4LCAyNDcsIDEsIDIwMywgMTAzLCAyMDgsIDI0NywgMSwgMjAzLCAxMDAsIDIwOCwgCisgICAgMjQ3LCAxLCAyMDMsIDEwMiwgMjA4LCAyNDcsIDEsIDIwMywgMTAxLCAyMDgsIDI0NywgMSwgMjAzLCAxNSwgMjA4LCAyNDcsIAorICAgIDEsIDIwMywgOTcsIDIwOCwgMjQ3LCAxLCAyMDMsIDg2LCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgODYsIDIwOCwgCisgICAgMjQ3LCAxLCAyMDMsIDgzLCAyMDgsIDI0NywgMSwgMjAzLCA5MSwgMjA4LCAyNDcsIDEsIDI0OCwgMTEyLCAyNTEsIDE0MCwgCisgICAgMjAzLCA5MSwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDkxLCAyMDgsIDI0NywgMSwgMjAzLCA5MCwgMjA4LCAyNDcsIAorICAgIDEsIDIwMywgMTEwLCAyMDgsIDI0NywgMSwgMjAzLCA4NCwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDg0LCAyMDgsIAorICAgIDI0NywgMSwgMjAzLCA3MywgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDczLCAyMDgsIDI0NywgMSwgMjAzLCAxMSwgCisgICAgMjA4LCAyNDcsIDEsIDIwMywgNTQsIDIwOCwgMjQ3LCAxLCAyNTEsIDcxLCAyMDMsIDU0LCAyMDgsIDI0NywgMSwgMjA3LCAKKyAgICAyMDAsIDIwMywgNTQsIDIwOCwgMjQ3LCAxLCAyMDMsIDgyLCAyMDgsIDI0NywgMSwgMjAzLCA4MSwgMjA4LCAyNDcsIDEsIAorICAgIDIwMywgNzgsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA5MiwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDc2LCAKKyAgICAyMDgsIDI0NywgMSwgMjAzLCA3NCwgMjA4LCAyNDcsIDEsIDIwMiwgMjEzLCAyMDgsIDI0NywgMSwgMjAzLCA3MSwgMjA4LCAKKyAgICAyNDcsIDEsIDIwMywgNzAsIDIwOCwgMjQ3LCAxLCAyMDMsIDk0LCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgOTQsIAorICAgIDIwOCwgMjQ3LCAxLCAyNTAsIDQsIDIwMywgOTQsIDIwOCwgMjQ3LCAxLCAyMDMsIDY5LCAyMDgsIDI0NywgMSwgMjAzLCA2NywgCisgICAgMjA4LCAyNDcsIDEsIDIwMywgNjgsIDIwOCwgMjQ3LCAxLCAyMDMsIDY2LCAyMDgsIDI0NywgMSwgMjAzLCA2NSwgMjA4LCAKKyAgICAyNDcsIDEsIDIwMywgMTA0LCAyMDgsIDI0NywgMSwgMjAzLCA2MywgMjA4LCAyNDcsIDEsIDIwMywgNjEsIDIwOCwgMjQ3LCAKKyAgICAxLCAyMDMsIDYwLCAyMDgsIDI0NywgMSwgMjAzLCA1OCwgMjA4LCAyNDcsIDEsIDIwMywgNTUsIDIwOCwgMjQ3LCAxLCAyMDksIAorICAgIDE5OSwgMjAzLCA1NSwgMjA4LCAyNDcsIDEsIDIwMywgNTMsIDIwOCwgMjQ3LCAxLCAyMDMsIDUyLCAyMDgsIDI0NywgMSwgCisgICAgMjAyLCAyNDcsIDIwOCwgMjQ3LCA2NSwgMSwgMjI4LCAxMDMsIDgyLCAyMDgsIDI0NywgMjEzLCAxMzEsIDgyLCAyMDgsIAorICAgIDI0NywgMTA5LCAyMzAsIDk2LCAzMywgNCwgMjI3LCA0OCwgMzMsIDQsIDIyNCwgODEsIDMzLCA0LCAyMTUsIDIyNSwgMzMsIAorICAgIDQsIDIxMiwgMTIsIDMzLCA0LCAyMTIsIDI0MSwgMzMsIDQsIDI0OCwgMjIsIDMzLCA0LCAyMDgsIDE3MiwgMzMsIDQsIDI0NSwgCisgICAgMjUzLCAzMywgNCwgMjIxLCAxODksIDMzLCA0LCAyMjAsIDIzMiwgMzMsIDQsIDIzOCwgNDUsIDIyMCwgOTcsIDMzLCA0LCAKKyAgICAyMDIsIDE2LCAzMywgNCwgMjQzLCAxMTEsIDMzLCA0LCAyNDQsIDg5LCAzMywgNCwgMjMwLCAxMDAsIDMzLCA0LCAyMDksIAorICAgIDQ2LCAzMywgNCwgMjQ2LCAxMTUsIDMzLCA0LCAyMTgsIDE3OSwgMzMsIDQsIDIxOCwgNjgsIDMzLCA0LCAyMzgsIDEyNSwgCisgICAgMzMsIDQsIDIzOCwgMTIxLCAzMywgNCwgMjM4LCAxMjIsIDMzLCA0LCAyMzgsIDEyMywgMzMsIDQsIDIxMSwgMTY0LCAzMywgCisgICAgNCwgMjExLCAxMTksIDMzLCA0LCAyMTEsIDEzMiwgMzMsIDQsIDIxMSwgMTYzLCAzMywgNCwgMjExLCAxMzcsIDMzLCA0LCAKKyAgICAyMTEsIDEzOCwgMzMsIDQsIDIxMSwgMTI0LCAzMywgNCwgMjQ3LCA1LCAzMywgNCwgMjQ2LCAyNDAsIDMzLCA0LCAyNDYsIAorICAgIDI0MiwgMzMsIDQsIDI0NywgNCwgMzMsIDQsIDI0NywgMiwgMzMsIDQsIDI0NywgMywgMzMsIDQsIDI0NiwgMjQxLCAzMywgNCwgCisgICAgMjAxLCAyMzUsIDMzLCA0LCAyMDEsIDIxMywgMzMsIDQsIDIwMSwgMjI2LCAzMywgNCwgMjAxLCAyMzQsIDMzLCA0LCAyMDEsIAorICAgIDIyOSwgMzMsIDQsIDIwMSwgMjMwLCAzMywgNCwgMjAxLCAyMTgsIDMzLCA0LCAyNDcsIDAsIDMzLCA0LCAyNDYsIDI0MywgCisgICAgMzMsIDQsIDI0NiwgMjQ1LCAzMywgNCwgMjQ2LCAyNTUsIDMzLCA0LCAyNDYsIDI1MywgMzMsIDQsIDI0NiwgMjU0LCAzMywgCisgICAgNCwgMjQ2LCAyNDQsIDMzLCA0LCAyMTcsIDEzLCAzMywgNCwgMjE3LCAzLCAzMywgNCwgMjE3LCA5LCAzMywgNCwgMjE3LCAKKyAgICAxMiwgMzMsIDQsIDIxNywgMTAsIDMzLCA0LCAyMTcsIDExLCAzMywgNCwgMjE3LCA4LCAzMywgNCwgMjI4LCAxNDEsIDMzLCAKKyAgICA0LCAyMjgsIDEzMywgMzMsIDQsIDIyOCwgMTM2LCAzMywgNCwgMjI4LCAxNDAsIDMzLCA0LCAyMjgsIDEzNywgMzMsIDQsIAorICAgIDIyOCwgMTM4LCAzMywgNCwgMjI4LCAxMzQsIDMzLCA0LCAyMDMsIDE0MCwgMzMsIDQsIDIwMywgMTI3LCAzMywgNCwgMjAzLCAKKyAgICAxMzUsIDMzLCA0LCAyMDMsIDEzOSwgMzMsIDQsIDIwMywgMTM3LCAzMywgNCwgMjAzLCAxMzgsIDMzLCA0LCAyMDMsIDEzNCwgCisgICAgMzMsIDQsIDIzNywgMTgzLCAzMywgNCwgMjM3LCAxNzMsIDMzLCA0LCAyMzcsIDE3NiwgMzMsIDQsIDIzNywgMTgyLCAzMywgCisgICAgNCwgMjM3LCAxNzgsIDMzLCA0LCAyMzcsIDE3OSwgMzMsIDQsIDIzNywgMTc1LCAzOSwgMzYsIDEsIDI0OCwgMTYyLCAzOSwgCisgICAgMzYsIDEsIDIwNiwgNTUsIDM5LCAzNiwgMSwgMjM4LCAxMDUsIDM5LCAzNiwgMSwgMjQ0LCA3NSwgMzksIDM2LCAxLCAyMDIsIAorICAgIDcxLCAzOSwgMzYsIDEsIDIwMiwgOTIsIDM5LCAzNiwgMSwgMTczLCAzOSwgMzYsIDEsIDI0MSwgMTIyLCAzOSwgMzYsIDEsIAorICAgIDI0MSwgMTAzLCAzOSwgMzYsIDEsIDI0MSwgOTIsIDM5LCAzNiwgMSwgNzgsIDM5LCAzNiwgMSwgMjE5LCAzNCwgMzksIDM2LCAKKyAgICAxLCAyNDEsIDI4LCAzOSwgMzYsIDEsIDI0MSwgMTcsIDM5LCAzNiwgMSwgMjA5LCAxODcsIDM5LCAzNiwgMSwgMTUyLCAzOSwgCisgICAgMzYsIDEsIDIwOCwgMTQsIDM5LCAzNiwgMSwgMjQ2LCAxNzAsIDM5LCAzNiwgMSwgMjEzLCA5MCwgMzksIDM2LCAxLCAyMTMsIAorICAgIDQ2LCAzOSwgMzYsIDEsIDIzOSwgMjM1LCAzOSwgMzYsIDEsIDI0MSwgMTMsIDM5LCAzNiwgMSwgNjMsIDM5LCAzNiwgMSwgCisgICAgMjMxLCAxMTAsIDM5LCAzNiwgMSwgMjQzLCAxMjksIDM5LCAzNiwgMSwgMjI0LCA0MywgMjA3LCAxNCwgMzksIDM2LCAxLCAKKyAgICAyMDMsIDY2LCAzOSwgMzYsIDEsIDIwMiwgMjEzLCAzOSwgMzYsIDEsIDIzMCwgMjI4LCA2MywgMzksIDM2LCAxLCAyMjcsIAorICAgIDg2LCAyMDIsIDE4MywgMzksIDM2LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMzksIDM2LCAxLCAyMzAsIDIyOCwgMjQ4LCA3MywgCisgICAgMjAyLCAxODMsIDUwLCAyNTAsIDIxOCwgMjEwLCAyNDEsIDIyNSwgODgsIDUwLCAyNTAsIDIxOCwgMjQyLCA4MywgMjEwLCAKKyAgICAyNDEsIDIyNSwgODgsIDQ5LCAyMTAsIDI0MSwgMTU1LCA1MCwgMjEwLCAyNDEsIDE1NSwgNDksIDI0MiwgODMsIDIxMCwgCisgICAgMjQxLCAxNTUsIDUwLCAyNDIsIDgzLCAyMTAsIDI0MSwgMTU1LCAyMTYsIDE4OCwgMjMwLCAyNDksIDIyNSwgODgsIDIxNiwgCisgICAgMTg4LCAyNDIsIDgzLCAyMzAsIDI0OSwgMjI1LCA4OCwgMjQyLCA4MywgMjA4LCAxMDMsIDIyNSwgODgsIDQ5LCAyMDgsIAorICAgIDEwMywgMTU1LCA1MCwgMjA4LCAxMDMsIDE1NSwgMjE2LCAxODgsIDIxMSwgMTc3LCA0OSwgMjE2LCAxODgsIDIyMCwgMzMsIAorICAgIDE1NSwgNTAsIDIxNiwgMTg4LCAyMjAsIDMzLCAxNTUsIDI0MSwgMTYyLCAyNDUsIDE2MywgMjE5LCA4NywgMjM5LCAxNjEsIAorICAgIDIxOSwgODcsIDIxNiwgNzMsIDIzOSwgMTYxLCAyMTksIDg3LCAyMzUsIDIxNywgMjQyLCA4MywgMjIwLCA5MiwgMTgzLCAKKyAgICAyNTAsIDIyNywgMTc3LCAyNTAsIDIyNywgMjQyLCA4MywgMjE2LCAxMSwgMjUwLCAyMTcsIDUyLCAyMjAsIDg5LCAyMzUsIAorICAgIDIyMCwgMjMwLCAyMzksIDIzMCwgMjQ3LCAyMTksIDEzNSwgMjQ3LCAyMjMsIDIzNSwgMjIxLCAzLCAyNDMsIDIzMSwgMjA4LCAKKyAgICAyMjgsIDMsIDIxNSwgMjUzLCA1NSwgNDksIDEyNCwgMjE5LCA3OSwgMTU1LCA1MCwgMTI0LCAyMTksIDc5LCAxNTUsIDIwOCwgCisgICAgMjI4LCAzLCA3MCwgNTUsIDIwOCwgMjI4LCAzLCA3MCwgNTYsIDQ5LCA4MCwgMjQ4LCAyMzEsIDMsIDIxNywgNDEsIDUwLCAKKyAgICA4MCwgMjQ4LCAyMzEsIDMsIDIxNywgNDEsIDIwOCwgMTQ1LCA0OSwgMTYyLCAxNTUsIDIwOCwgMTQ1LCA1MCwgMTYyLCAxNTUsIAorICAgIDI0NywgMjQ4LCA0OSwgMTYyLCAxNTUsIDI0NywgMjQ4LCA1MCwgMTYyLCAxNTUsIDQ5LCAyMTIsIDE1NCwgMTA2LCAxNTUsIAorICAgIDUwLCAyMTIsIDE1NCwgMTA2LCAxNTUsIDQ5LCA1MiwgMjE5LCA3NiwgNTAsIDUyLCAyMTksIDc2LCAxMjAsIDE4NywgMTE1LCAKKyAgICAxMTgsIDcwLCAyMTcsIDE3OCwgMTE4LCA3MCwgMTE1LCAxMjAsIDE4NywgMjE3LCAxNzgsIDEwMywgMjM5LCAxNDcsIDcwLCAKKyAgICAyMTcsIDE3OCwgMjM5LCAyMzMsIDcwLCA4MiwgMjE2LCA3MywgMjE3LCA0NywgODIsIDgwLCAyMDgsIDIyNywgMjE1LCAyNTMsIAorICAgIDIxOCwgNjIsIDIwMywgMjM4LCAyMTMsIDEzMSwgMTAxLCAyNDMsIDg1LCAyMDcsIDE3NCwgMjQ1LCAyMzMsIDIxNiwgMTg4LCAKKyAgICAyNDMsIDg1LCAyMTYsIDE4OCwgMjQ1LCAyMzMsIDIwNywgMTc0LCAyMTMsIDE0MywgMjQ0LCAxOTYsIDMsIDQ5LCAyMzcsIAorICAgIDIyNCwgMjQ0LCAxOTYsIDMsIDUwLCAyMzcsIDIyNCwgMjA3LCAxNzQsIDI0NCwgMTk1LCAyMDgsIDE0NSwgMTYyLCAyMTQsIAorICAgIDE2OCwgNTQsIDIwNywgMTM1LCAyNDQsIDE0NCwgMjA5LCAzMCwgMjQ0LCAxNDQsIDIxMSwgNzYsIDIzOSwgMTAyLCAyMTEsIAorICAgIDYxLCA4MCwgMjEyLCA4OCwgMjQzLCA4MywgMjA0LCAyMSwgODAsIDIyNywgMTE0LCAyNDcsIDQ2LCA1MiwgMjM1LCAyMjAsIAorICAgIDIxNiwgNzMsIDI0NSwgMjMzLCA1MiwgMjI2LCAyNTIsIDIxNywgMzEsIDgyLCAxMiwgNDAsIDIxNiwgMTAwLCAxMiwgNDAsIAorICAgIDI0NiwgMjYsIDEyLCA0MCwgMjE0LCAxNzEsIDEwNSwgMTIsIDQwLCAyMTQsIDE3MSwgMTA4LCAxMiwgNDAsIDIxNCwgMTcxLCAKKyAgICAxNDcsIDEyLCA0MCwgMjE4LCAyMjksIDEyLCA0MCwgMjQ3LCAyMzMsIDEyLCA0MCwgMjEwLCA4LCAxMiwgNDAsIDIyOSwgMzQsIAorICAgIDEwNSwgMTIsIDQwLCAyMjksIDM0LCAxMDgsIDEyLCA0MCwgMjQzLCAxMzgsIDEyLCA0MCwgMjE0LCAxNzUsIDEyLCA0MCwgNSwgCisgICAgMTA1LCAxMiwgNDAsIDUsIDEwOCwgMTIsIDQwLCAyMjgsIDIzLCAxMDUsIDEyLCA0MCwgMjI4LCAyMywgMTA4LCAxMiwgNDAsIAorICAgIDIyOCwgMjMsIDE0NywgMTIsIDQwLCAyMjgsIDIzLCAxNDksIDEyLCA0MCwgMjEyLCAyNCwgMTIsIDQwLCAyMDksIDMzLCAxMiwgCisgICAgNDAsIDIxMiwgMjIsIDEwNSwgMTIsIDQwLCAyMTIsIDIyLCAxMDgsIDEyLCA0MCwgMjM3LCA1NiwgMTA1LCAxMiwgNDAsIAorICAgIDIzNywgNTYsIDEwOCwgMTIsIDQwLCAyMzcsIDEyMywgMTIsIDQwLCAyMTYsIDE3OCwgMTIsIDQwLCAyNDYsIDExMiwgMTIsIAorICAgIDQwLCAyMTAsIDIxNCwgMTIsIDQwLCAyMjQsIDI5LCAxMiwgNDAsIDI0NCwgNzMsIDEyLCA0MCwgMjI0LCAyMCwgMTIsIDQwLCAKKyAgICAyNDYsIDQ0LCAxMiwgNDAsIDIwNCwgODEsIDEwNSwgMTIsIDQwLCAyMDQsIDgxLCAxMDgsIDEyLCA0MCwgMjM5LCAyNDksIAorICAgIDEyLCA0MCwgMjE5LCA0NiwgMTA1LCAxMiwgNDAsIDIxOSwgNDYsIDEwOCwgMTIsIDQwLCAyMTIsIDEyNywgMTYyLCAyMDgsIAorICAgIDk2LCAyMDgsIDI1LCAxMiwgNDAsIDI0NSwgMTQ5LCAxMiwgNDAsIDI0MywgMTAyLCAxMiwgNDAsIDIzMCwgMTc2LCAxMiwgCisgICAgNDAsIDI0OCwgMTUsIDc2LCAyNDYsIDEwLCAxMiwgNDAsIDI0MCwgMTkxLCAxMiwgNDAsIDIxMSwgMTk5LCAxMDUsIDEyLCAKKyAgICA0MCwgMjExLCAxOTksIDEwOCwgMTIsIDQwLCAyNDgsIDI0NCwgMTIsIDQwLCAyMTIsIDEzNCwgMTIsIDQwLCAyNDcsIDEyMiwgCisgICAgMjEyLCAxMzQsIDEyLCA0MCwgMjIyLCAyMjAsIDEwNSwgMTIsIDQwLCAyMjIsIDIyMCwgMTA4LCAxMiwgNDAsIDIyMiwgMjIwLCAKKyAgICAxNDcsIDEyLCA0MCwgMjIyLCAyMjAsIDE0OSwgMTIsIDQwLCAyMjQsIDIyNywgMTIsIDQwLCAyMTMsIDM3LCAxMiwgNDAsIAorICAgIDIxNiwgMTg0LCAxMiwgNDAsIDI0MCwgMjE5LCAxMiwgNDAsIDIyMCwgNDUsIDEyLCA0MCwgMjQ3LCAyMDEsIDEwNSwgMTIsIAorICAgIDQwLCAyNDcsIDIwMSwgMTA4LCAxMiwgNDAsIDIyNSwgMTUsIDEyLCA0MCwgMjI0LCAyNCwgMTIsIDQwLCAyMzgsIDEsIDEwNSwgCisgICAgMTIsIDQwLCAyMzgsIDEsIDEwOCwgMTIsIDQwLCAyMzgsIDEsIDE0NywgMTIsIDQwLCAyMDgsIDI0NSwgMTIsIDQwLCAyNDYsIAorICAgIDksIDEyLCA0MCwgMjA0LCA0NiwgMTA1LCAxMiwgNDAsIDIwNCwgNDYsIDEwOCwgMTIsIDQwLCAyNDcsIDEyMiwgMjE0LCAKKyAgICAxNjUsIDEyLCA0MCwgMjEyLCAxMjcsIDIzNiwgNTMsIDEyLCA0MCwgMjM2LCA1MywgMTIsIDQwLCAyNDcsIDEyMiwgMjExLCAKKyAgICAyMTEsIDEyLCA0MCwgMjQ3LCAxMjIsIDIxMywgMzIsIDEyLCA0MCwgMjM5LCAxNzIsIDEyLCA0MCwgMjQ3LCAxMjIsIDI0NywgCisgICAgMjMsIDEyLCA0MCwgMjEyLCAxMjcsIDIwNCwgMTAxLCAxMiwgNDAsIDIwNCwgMTAyLCAxMDUsIDEyLCA0MCwgMjA0LCAxMDIsIAorICAgIDEwOCwgMTIsIDQwLCAyNDYsIDQ3LCAxMiwgNDAsIDI0NywgMTIyLCAyMzgsIDMxLCAxMiwgNDAsIDE2MywgMTA1LCAxMiwgCisgICAgNDAsIDE2MywgMTA4LCAxMiwgNDAsIDI0NywgMTIyLCAyMjcsIDI4LCAxMiwgNDAsIDI0NywgMTIyLCAyMzgsIDIxNiwgMTIsIAorICAgIDQwLCAyMjQsIDE2LCAxMDUsIDEyLCA0MCwgMjI0LCAxNiwgMTA4LCAxMiwgNDAsIDIxNiwgMTkwLCAxMiwgNDAsIDI0OCwgCisgICAgMjUsIDEyLCA0MCwgMjQ3LCAxMjIsIDIwOSwgMjI0LCAyMjcsIDIyOCwgMTIsIDQwLCAyNDcsIDEyMiwgMjI3LCAyMjksIDEyLCAKKyAgICA0MCwgMjQ3LCAxMjIsIDIwNCwgMTYsIDEyLCA0MCwgMjQ3LCAxMjIsIDIzOSwgMTkwLCAxMiwgNDAsIDI0MSwgMTczLCAxMDUsIAorICAgIDEyLCA0MCwgMjQxLCAxNzMsIDEwOCwgMTIsIDQwLCAyNDEsIDE3MywgMTQ3LCAxMiwgNDAsIDI0NywgMTIyLCAyNDEsIDE3MiwgCisgICAgMTIsIDQwLCAyMzcsIDY0LCAxMiwgNDAsIDI0NywgMTIyLCAyMzYsIDQ5LCAxMiwgNDAsIDI0OCwgMTEsIDEyLCA0MCwgMjM4LCAKKyAgICA4OSwgMTIsIDQwLCAyNDcsIDEyMiwgMjM5LCAyNDMsIDEyLCA0MCwgMjQ3LCAxMjIsIDI0OCwgNjAsIDEyLCA0MCwgMjQ3LCAKKyAgICAxMjIsIDIxNSwgMSwgMTIsIDQwLCAyMTIsIDEyNywgMjA0LCAzOCwgMTIsIDQwLCAyMTIsIDEyNywgMjAzLCA0NCwgMTIsIAorICAgIDQwLCAyNDcsIDEyMiwgMjM5LCAxMjEsIDEyLCA0MCwgMjMwLCAxODMsIDI0MCwgMjI0LCAxMiwgNDAsIDI0NywgMTIyLCAKKyAgICAyNDAsIDIyNCwgMTIsIDQwLCAyMzAsIDE4MywgMjA4LCAxNDYsIDEyLCA0MCwgMjQ3LCAxMjIsIDIwOCwgMTQ2LCAxMiwgNDAsIAorICAgIDIzMCwgMTgzLCAyNDIsIDYxLCAxMiwgNDAsIDI0NywgMTIyLCAyNDIsIDYxLCAxMiwgNDAsIDIwNywgMTcxLCAxMiwgNDAsIAorICAgIDIzMCwgMTgzLCAyMDcsIDE3MSwgMTIsIDQwLCAyNDcsIDEyMiwgMjA3LCAxNzEsIDcxLCA0MCwgMTA1LCA3MSwgNDAsIDIyNywgCisgICAgMTE0LCA3MSwgNDAsIDI0MywgODUsIDcxLCA0MCwgMjEyLCA1NywgNzEsIDQwLCAyMTQsIDE3MCwgNzEsIDQwLCAxMTMsIDcxLCAKKyAgICA0MCwgMTA4LCA3MSwgNDAsIDIyNywgMTQzLCA3MSwgNDAsIDIyNSwgMTIyLCA3MSwgNDAsIDIyNywgMjA3LCA3MSwgNDAsIAorICAgIDI0MSwgNjcsIDcxLCA0MCwgMTk5LCA3MSwgNDAsIDEyMSwgMjQ3LCAyMzMsIDcxLCA0MCwgMjQ1LCAxNTEsIDcxLCA0MCwgCisgICAgMjM1LCAxNjIsIDcxLCA0MCwgMjEwLCA4LCA3MSwgNDAsIDE3MSwgMjQ3LCAyMzMsIDcxLCA0MCwgMjI5LCAzMywgNzEsIDQwLCAKKyAgICAyMTgsIDE2LCA3MSwgNDAsIDIwMywgMjI4LCA3MSwgNDAsIDIxMSwgMTkwLCA3MSwgNDAsIDUwLCAxNzEsIDI0NywgMjMzLCAKKyAgICA3MSwgNDAsIDIzNiwgMjU1LCAyNDEsIDg3LCA3MSwgNDAsIDIwOSwgMTUyLCA3MSwgNDAsIDI0MywgMTM4LCA3MSwgNDAsIAorICAgIDIxNCwgMTc1LCA3MSwgNDAsIDI0NiwgMjYsIDcxLCA0MCwgMjE3LCAyMjYsIDcxLCA0MCwgMjUxLCA4MCwgNzEsIDQwLCAKKyAgICAyMjQsIDcsIDcxLCA0MCwgMjQxLCA4NywgNzEsIDQwLCAyNDEsIDE3OSwgNzEsIDQwLCAyMTQsIDE5NywgNzEsIDQwLCAyMzgsIAorICAgIDM5LCA3MSwgNDAsIDIzOCwgNDAsIDIxMiwgMzgsIDcxLCA0MCwgMjQwLCAyMjMsIDcxLCA0MCwgMjQ4LCA3MiwgNzEsIDQwLCAKKyAgICAyMDMsIDI1MCwgNzEsIDQwLCAyNDYsIDEzMywgNzEsIDQwLCAyMTUsIDIwNywgNzEsIDQwLCAyMzEsIDQ1LCA3MSwgNDAsIAorICAgIDIxMiwgMzYsIDcxLCA0MCwgMjI4LCAyMiwgNzEsIDQwLCAyNDUsIDE2MSwgNzEsIDQwLCAyMTEsIDE4MSwgNzEsIDQwLCAKKyAgICAyMjQsIDEyLCA3MSwgNDAsIDIxNSwgMjQxLCA3MSwgNDAsIDIwMywgMjM1LCA3MSwgNDAsIDIyMCwgMjUsIDcxLCA0MCwgCisgICAgMjA3LCAxODAsIDcxLCA0MCwgMjQyLCA0NCwgNzEsIDQwLCAyMTIsIDIyOCwgMjA5LCAzMywgNzEsIDQwLCAyNDIsIDgzLCAKKyAgICAyNDYsIDI2LCA3MSwgNDAsIDE2MywgMjExLCAzOCwgNzEsIDQwLCAxMjAsIDIzNywgOTksIDcxLCA0MCwgMjEyLCAyMzQsIAorICAgIDcxLCA0MCwgMjQ3LCAyNDAsIDcxLCA0MCwgMjEyLCAyMSwgNzEsIDQwLCAyNDcsIDIwNSwgNzEsIDQwLCAyMTEsIDc1LCA3MSwgCisgICAgNDAsIDIzNywgNTUsIDcxLCA0MCwgMjM3LCAxMzgsIDcxLCA0MCwgMjQzLCA4OCwgNzEsIDQwLCAyMzcsIDEyMywgNzEsIDQwLCAKKyAgICAyNDcsIDIyMywgNzEsIDQwLCAyMTYsIDE3OCwgNzEsIDQwLCAyMTQsIDE4MywgNzEsIDQwLCAyNDMsIDE2OSwgNzEsIDQwLCAKKyAgICAyNTAsIDksIDcxLCA0MCwgMjExLCAxNzcsIDcxLCA0MCwgMjIxLCAxNjUsIDcxLCA0MCwgMjEwLCAyMTQsIDcxLCA0MCwgCisgICAgMjE0LCAyMDgsIDcxLCA0MCwgMjI0LCAyOSwgNzEsIDQwLCAyMDgsIDk1LCA3MSwgNDAsIDIyOCwgOTksIDcxLCA0MCwgMjExLCAKKyAgICA2MSwgNzEsIDQwLCAyNDQsIDczLCA3MSwgNDAsIDIwNCwgNjEsIDcxLCA0MCwgMjQzLCAxMTQsIDIyMSwgMTY1LCA3MSwgNDAsIAorICAgIDI0NSwgMjI5LCA3MSwgNDAsIDIzOSwgOTUsIDcxLCA0MCwgMjQ2LCAzOCwgNzEsIDQwLCAyMTEsIDgwLCA3MSwgNDAsIDIwNCwgCisgICAgODAsIDcxLCA0MCwgMjM5LCAyNDksIDcxLCA0MCwgMjQ2LCAzNCwgNzEsIDQwLCAyNDAsIDY3LCA3MSwgNDAsIDUyLCAyMDMsIAorICAgIDE5NiwgNzEsIDQwLCAxNjIsIDIwOCwgOTYsIDIwOCwgMjUsIDcxLCA0MCwgMjEyLCA1MCwgNzEsIDQwLCAyNDAsIDc5LCA3MSwgCisgICAgNDAsIDI0NSwgMTQ5LCA3MSwgNDAsIDI0MywgMTAyLCA3MSwgNDAsIDIxNywgMjIzLCA3MSwgNDAsIDIzMCwgMTc2LCA3MSwgCisgICAgNDAsIDIyNCwgMjQ5LCA3MSwgNDAsIDIwOCwgMjI2LCA3MSwgNDAsIDIxMCwgMTY0LCA3MSwgNDAsIDIyNywgMTM3LCA3MSwgCisgICAgNDAsIDIwNiwgMTkxLCA3MSwgNDAsIDI0MCwgMjQsIDcxLCA0MCwgMjQ4LCAxNSwgNzYsIDI0NiwgMTAsIDcxLCA0MCwgMjEyLCAKKyAgICAxNTgsIDcxLCA0MCwgMjQyLCA4MywgMjA5LCAxNDQsIDcxLCA0MCwgMjA0LCAzMywgNzEsIDQwLCAyMTIsIDY1LCA3MSwgNDAsIAorICAgIDI0MywgMTU2LCA3MSwgNDAsIDI0MCwgMTkxLCA3MSwgNDAsIDIxMSwgMjE0LCA3MSwgNDAsIDQ3LCA3MSwgNDAsIDIxMSwgCisgICAgNjMsIDcxLCA0MCwgMjExLCAxOTgsIDcxLCA0MCwgMjA4LCAxMTgsIDcxLCA0MCwgMjM4LCAxMCwgNzEsIDQwLCAyNDcsIDEwLCAKKyAgICA3MSwgNDAsIDIxMSwgOTgsIDcxLCA0MCwgMjQ4LCAyNDQsIDcxLCA0MCwgMjE2LCA1MiwgNzEsIDQwLCAyMTIsIDEzNCwgNzEsIAorICAgIDQwLCAyMzAsIDE2OCwgNzEsIDQwLCAyMjIsIDIxOSwgNzEsIDQwLCAyMTMsIDM3LCA3MSwgNDAsIDI0MCwgNTUsIDcxLCA0MCwgCisgICAgMjIwLCA0NSwgNzEsIDQwLCAyNTAsIDIyNiwgNzEsIDQwLCAyMTgsIDgzLCA3MSwgNDAsIDI0MSwgMTgzLCA3MSwgNDAsIAorICAgIDI0NywgMjAwLCA3MSwgNDAsIDIyNSwgMTUsIDcxLCA0MCwgMjI0LCAxMDQsIDcxLCA0MCwgMjEzLCAxNDksIDcxLCA0MCwgCisgICAgMjUwLCA5OCwgNzEsIDQwLCAyMjQsIDI0LCA3MSwgNDAsIDIwOCwgMTUwLCA3MSwgNDAsIDIxOSwgMjUyLCA3MSwgNDAsIAorICAgIDI0OCwgMTksIDcxLCA0MCwgMjExLCA1OSwgNzEsIDQwLCAyNDUsIDI0MSwgNzEsIDQwLCAyMzgsIDAsIDcxLCA0MCwgMjA4LCAKKyAgICAyNDUsIDcxLCA0MCwgMjMxLCA5LCA3MSwgNDAsIDI0OCwgMzEsIDcxLCA0MCwgMjA0LCAxMDIsIDI0MSwgODcsIDcxLCA0MCwgCisgICAgMjQ2LCA5LCA3MSwgNDAsIDIwNCwgNDUsIDcxLCA0MCwgMjE0LCAxNjUsIDcxLCA0MCwgMjM2LCA1MywgNzEsIDQwLCAyMTEsIAorICAgIDIxMSwgNzEsIDQwLCAyMDYsIDc5LCA3MSwgNDAsIDI0OCwgMTU3LCA3MSwgNDAsIDIxOCwgMTMxLCA3MSwgNDAsIDI0OSwgCisgICAgMTMsIDcxLCA0MCwgMjEzLCAzMiwgNzEsIDQwLCAyMTYsIDEzNywgNzEsIDQwLCAyMTUsIDEyOCwgNzEsIDQwLCAyMzksIAorICAgIDE3MiwgNzEsIDQwLCAyNDgsIDE3LCA3MSwgNDAsIDI0NywgMjMsIDcxLCA0MCwgMjQ4LCA0OCwgNzEsIDQwLCAyMjQsIDI2LCAKKyAgICA3MSwgNDAsIDIwNCwgMTAxLCA3MSwgNDAsIDI0NiwgNDcsIDcxLCA0MCwgMjA0LCAxMiwgNzEsIDQwLCAyNDMsIDE0OSwgNzEsIAorICAgIDQwLCAyMDUsIDIxNCwgNzEsIDQwLCAyMzgsIDMxLCA3MSwgNDAsIDIyNywgMjgsIDcxLCA0MCwgMjM4LCAyMTYsIDcxLCA0MCwgCisgICAgMjI0LCAxNSwgNzEsIDQwLCAyMTIsIDU2LCA3MSwgNDAsIDIxMiwgMjI4LCAyMDksIDI0NywgMjQ4LCA2MCwgNzEsIDQwLCAKKyAgICAyMTYsIDE5MCwgNzEsIDQwLCAyNDgsIDI1LCA3MSwgNDAsIDIwMywgMjE5LCA3MSwgNDAsIDI0MCwgMTAyLCA3MSwgNDAsIAorICAgIDIyNywgMjI4LCA3MSwgNDAsIDIwOSwgMjI0LCAyMjcsIDIyOCwgNzEsIDQwLCAyMjcsIDIyNCwgNzEsIDQwLCAyMTEsIDI0MCwgCisgICAgNzEsIDQwLCAyMjcsIDIyOSwgNzEsIDQwLCAyMDQsIDE2LCA3MSwgNDAsIDIzOSwgMTkwLCA3MSwgNDAsIDI0MSwgMTcyLCAKKyAgICA3MSwgNDAsIDIzNywgNjQsIDcxLCA0MCwgMjM5LCAxMzYsIDcxLCA0MCwgMjM2LCA0OSwgNzEsIDQwLCAyNDgsIDExLCA3MSwgCisgICAgNDAsIDIwOSwgMjMzLCA3MSwgNDAsIDIzNywgMTQ1LCA3MSwgNDAsIDI0MCwgMTcsIDcxLCA0MCwgMjE1LCAzMCwgMjA0LCAKKyAgICAxMiwgNzEsIDQwLCAyNDcsIDEyLCA3MSwgNDAsIDIzOCwgODksIDcxLCA0MCwgMjM5LCAyNDMsIDcxLCA0MCwgMjQ4LCA2MCwgCisgICAgNzEsIDQwLCAyMTUsIDEsIDcxLCA0MCwgMjQ0LCA1OCwgNzEsIDQwLCAyMDQsIDM4LCA3MSwgNDAsIDIzNywgMzQsIDcxLCAKKyAgICA0MCwgMjAzLCA0NCwgNzEsIDQwLCAyMjQsIDExNSwgNzEsIDQwLCAyNDgsIDQzLCA3MSwgNDAsIDI0MSwgOTksIDcxLCA0MCwgCisgICAgMjM5LCAxMjEsIDcxLCA0MCwgMjA4LCA2NywgNzEsIDQwLCAyNDIsIDQ2LCA3MSwgNDAsIDIxNiwgMTcyLCA3MSwgNDAsIAorICAgIDIyMSwgMTY3LCA3MSwgNDAsIDI0MCwgMjI0LCA3MSwgNDAsIDIwOCwgMTQ2LCA3MSwgNDAsIDI0MiwgNjEsIDcxLCA0MCwgCisgICAgMjA3LCAxNzEsIDcxLCA0MCwgMjM5LCAxOTMsIDEzOSwgMjQ0LCAxOCwgMTY3LCA0OSwgMjA4LCAxNzMsIDIxNiwgMTYsIAorICAgIDEzOSwgMjQ0LCAxOCwgMTY3LCA4NywgMjA4LCAxNzMsIDU2LCAxMzksIDI0NCwgMTgsIDE2NywgNDksIDIwOCwgMTczLCAKKyAgICAxMDEsIDI1LCAyMTYsIDE2LCAxMzksIDI0NCwgMTgsIDE2NywgODcsIDIwOCwgMTczLCAxMDEsIDI1LCA1NiwgMTM5LCAyNDQsIAorICAgIDE4LCAxNjcsIDIzOSwgMTAyLCAyMTAsIDE4NiwgMTM5LCAyNDQsIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgNTUsIAorICAgIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTAsIDE4NywgMjM5LCAxMjAsIDU2LCAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIAorICAgIDIzOSwgMTIwLCAyMjcsIDIyMiwgMTM5LCAyNDQsIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgMjA2LCAyMjEsIDIyNywgCisgICAgMjIyLCAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIDIzOSwgMTIwLCAyMDYsIDIyMSwgMjE2LCAxNiwgMTM5LCAyNDQsIAorICAgIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgMjI2LCAyNTEsIDIyNywgMjIyLCAxMzksIDI0NCwgMTgsIDE2NywgMjE5LCAKKyAgICAyMDIsIDEzOSwgMjExLCAyMjgsIDEzOSwgMjQ1LCAyMzMsIDEzOSwgMjM5LCAxMDIsIDIxMSwgNjEsIDI0MywgMTQ2LCA4MiwgCisgICAgMjMwLCAxNjksIDIzMSwgMjksIDIxMSwgOTcsIDk3LCAxMzksIDIzMCwgMTk5LCA4MiwgMTM5LCAyNDYsIDEyLCA4MiwgMTM5LCAKKyAgICA0MiwgMjAyLCA4NCwgNDksIDI1MCwgMjE4LCAxNTUsIDUwLCAyNTAsIDIxOCwgMTU1LCA0OSwgNTIsIDI1MCwgMjE4LCAxNTUsIAorICAgIDUwLCA1MiwgMjUwLCAyMTgsIDE1NSwgNDksIDI0NSwgMTY2LCAxNTUsIDUwLCAyNDUsIDE2NiwgMTU1LCA0OSwgNjEsIDI0NSwgCisgICAgMTY2LCAxNTUsIDUwLCA2MSwgMjQ1LCAxNjYsIDE1NSwgNDksIDYyLCAyMjcsIDE4NSwgMTU1LCA1MCwgNjIsIDIyNywgMTg1LCAKKyAgICAxNTUsIDIxOCwgMjksIDgyLCAyMzgsIDE1OCwgODIsIDQ5LCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA1MCwgMjA4LCAxMzMsIAorICAgIDIxMywgMzMsIDE1NSwgNDksIDYxLCAyMjcsIDE4NSwgMTU1LCA1MCwgNjEsIDIyNywgMTg1LCAxNTUsIDQ5LCA2MSwgMjA4LCAKKyAgICAxMzMsIDIxMywgMzMsIDE1NSwgNTAsIDYxLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA0OSwgNjEsIDUxLCAxNTUsIDUwLCAKKyAgICA2MSwgNTEsIDE1NSwgMjA0LCA3NiwgMjQ0LCAxNDQsIDIxNiwgNzMsIDUyLCAyMTcsIDIzNywgMjE3LCAzMSwgODIsIDUyLCAKKyAgICAyMTcsIDIzNywgMjE3LCAzMSwgODIsIDEyNCwgNTIsIDIxNywgMjM3LCAyMTcsIDMxLCA4MiwgMjE4LCAyOSwgMTMxLCAyNDAsIAorICAgIDEwMiwgMjM3LCA5NywgMjIxLCA0NCwgMTA1LCAyMzcsIDk3LCAyMjEsIDQ0LCAxMDgsIDIzNywgOTcsIDIyMSwgNDQsIDE0NywgCisgICAgMjM3LCA5NywgMjIxLCA0NCwgMTQ5LCAyMzcsIDk3LCAyMjEsIDQ0LCAxNzAsIDIzNywgOTcsIDIyMSwgNDQsIDE5NSwgMjM3LCAKKyAgICA5NywgMjIxLCA0NCwgMjEzLCAxMTEsIDIzNywgOTcsIDIyMSwgNDQsIDE5OSwgMjM3LCA5NywgMjIxLCA0NCwgMjIyLCA2MywgCisgICAgMTM5LCAyMjcsIDE2NywgMTQzLCA4MiwgMTM5LCAyMTUsIDI0NSwgMTQzLCA4MiwgMTM5LCAyNDQsIDI3LCAxNDMsIDgyLCAKKyAgICAxMzksIDI0MSwgNjYsIDE0MywgODIsIDI4LCAyMTIsIDEyMCwgNzAsIDE0MywgODIsIDI4LCA1MiwgNzAsIDE0MywgODIsIAorICAgIDIwNCwgNzIsIDI0NCwgMTQ0LCA4MCwgMjMwLCAzLCAyMTYsIDEwMSwgODIsIDgwLCAyMzAsIDMsIDIxNiwgMTAxLCAzLCAKKyAgICAyMDUsIDE4NiwgMjExLCAyNDEsIDgyLCA4MCwgMjMwLCAzLCAyMTYsIDEwMSwgMTMxLCAyMDYsIDIyMSwgMjM3LCAxMzcsIAorICAgIDgwLCAyMzAsIDMsIDIxNiwgMTAxLCAzLCAyMDUsIDE4NiwgMjExLCAyNDEsIDEzMSwgMjA2LCAyMjEsIDIzNywgMTM3LCA4MCwgCisgICAgMjMwLCAzLCAyMTYsIDEwMSwgMTMxLCAyMjYsIDI1MSwgMjM3LCAxMzcsIDQzLCAyMTgsIDI5LCA4MiwgMTM5LCAyMDksIAorICAgIDE2NCwgMjI3LCAxMTUsIDI0MCwgNTIsIDIxMywgMTMxLCA5NywgMjM3LCA5NywgMjIxLCA0NCwgMjA5LCAxNTIsIDIzNywgCisgICAgOTcsIDIyMSwgNDQsIDIwNywgMTUxLCAyMzcsIDk3LCAyMjEsIDQ0LCAyMDksIDUzLCA4MCwgMTM5LCAyMzAsIDE5OSwgODIsIAorICAgIDIyNSwgNzIsIDgyLCAyMTksIDcxLCAyNTAsIDI1MSwgODIsIDEzOSwgNTcsIDIzMSwgMzEsIDEzOSwgMTYyLCAyNDAsIDEwLCAKKyAgICAyMTEsIDIyOCwgMTcyLCAxLCA1LCA2MywgMTcyLCAxLCA2MywgMTcyLCAxLCA1LCA3NSwgMTcyLCAxLCA3NSwgMTcyLCAxLCAKKyAgICA1LCA2OCwgMTcyLCAxLCA2OCwgMTcyLCAxLCA1LCA3NCwgMTcyLCAxLCA3NCwgMTcyLCAxLCA1LCA3OCwgMTcyLCAxLCA3OCwgCisgICAgMTcyLCAxLCAxNzMsIDE3MiwgMSwgMjM5LCA4LCAxNzIsIDEsIDIyOSwgMTAwLCAxNzIsIDEsIDIzOCwgODEsIDE3MiwgMSwgCisgICAgMjI4LCAyMDksIDE3MiwgMSwgMjM3LCAyMzAsIDE3MiwgMSwgMjI5LCAyMDEsIDE3MiwgMSwgMjM4LCAxOTAsIDE3MiwgMSwgCisgICAgMjI5LCAyNiwgMTcyLCAxLCAyMzgsIDM5LCAxNzIsIDEsIDIxNSwgMzYsIDE3MiwgMSwgMjAyLCAxMTYsIDE3MiwgMSwgMjEyLCAKKyAgICAxNjIsIDE3MiwgMSwgMjAyLCAzOSwgMTcyLCAxLCAyMTEsIDEwLCAxNzIsIDEsIDIwMiwgNiwgMTcyLCAxLCAyMTQsIDE3NywgCisgICAgMTcyLCAxLCAyMDIsIDkyLCAxNzIsIDEsIDIxMiwgMTMsIDE3MiwgMSwgMjAyLCAxNywgMTcyLCAxLCAyMTAsIDIyLCAxNzIsIAorICAgIDEsIDI0NCwgMjEyLCAxNzIsIDEsIDIwOSwgMiwgMTcyLCAxLCAyNDMsIDIzMywgMTcyLCAxLCA1LCAyMDcsIDIwMywgMTcyLCAKKyAgICAxLCAyMDcsIDIwMywgMTcyLCAxLCAyNDIsIDQyLCAxNzIsIDEsIDIwOSwgMTg3LCAxNzIsIDEsIDI0NCwgNzUsIDE3MiwgMSwgCisgICAgMTM1LCAxNzIsIDEsIDI0MywgMTEzLCAxNzIsIDEsIDIwMSwgMjAxLCAxNzIsIDEsIDIyMiwgMTAwLCAxNzIsIDEsIDIyMSwgCisgICAgODQsIDE3MiwgMSwgMjIyLCAyNDAsIDE3MiwgMSwgMjIxLCAxOTEsIDE3MiwgMSwgMTUyLCAxNzIsIDEsIDI0OSwgMzIsIAorICAgIDE3MiwgMSwgMTg1LCAxNzIsIDEsIDIzNywgMywgMTcyLCAxLCAyNDgsIDg2LCAxNzIsIDEsIDIxOCwgMTY3LCAxNzIsIDEsIAorICAgIDIzNiwgMjYsIDE3MiwgMSwgMjQ3LCAxOTMsIDE3MiwgMSwgMjE3LCAxOTEsIDE3MiwgMSwgMjM3LCA2NywgMTcyLCAxLCAKKyAgICAyNDgsIDE2MiwgMTcyLCAxLCAyMTksIDM0LCAxNzIsIDEsIDIzNiwgMTM2LCAxNzIsIDEsIDI0OCwgMjMsIDE3MiwgMSwgCisgICAgMjE4LCA2OSwgMTcyLCAxLCAxOTIsIDE3MiwgMSwgMjI0LCAxNTUsIDE3MiwgMSwgMjIzLCAyNDYsIDE3MiwgMSwgMjI1LCAKKyAgICAyMCwgMTcyLCAxLCAyMjQsIDgyLCAxNzIsIDEsIDUsIDE5OCwgMTcyLCAxLCAxOTgsIDE3MiwgMSwgNSwgMjAyLCAyMTMsIAorICAgIDE3MiwgMSwgMjAyLCAyMTMsIDE3MiwgMSwgNSwgMjAyLCAyNDcsIDE3MiwgMSwgMjAyLCAyNDcsIDE3MiwgMSwgMjE2LCAKKyAgICAyMjAsIDE3MiwgMSwgMjE2LCA1NywgMTcyLCAxLCAyMTUsIDE0NSwgMTcyLCAxLCAyMTYsIDE1OCwgMTcyLCAxLCAyMTUsIAorICAgIDIyNywgMTcyLCAxLCA1LCAyMDQsIDExMSwgMTcyLCAxLCAyMDQsIDExMSwgMTcyLCAxLCAyMDQsIDMwLCAxNzIsIDEsIDIwNCwgCisgICAgNjIsIDE3MiwgMSwgMjA0LCAwLCAxNzIsIDEsIDIyMywgMTYzLCAxNzIsIDEsIDIwNCwgMTYzLCAxNzIsIDEsIDUsIDE3MywgCisgICAgMTcyLCAxLCA1LCAyMjksIDIwMSwgMzksIDIyOSwgMjI1LCAyMDUsIDE4NiwgMjExLCAyNDEsIDgyLCAzOSwgMjI5LCAyMjUsIAorICAgIDIxMywgMTQ4LCAyMTEsIDI0MSwgODIsIDIyOSwgMjI1LCAyMDUsIDE4NiwgMjExLCAyNDEsIDgyLCAyMjksIDIyNSwgMjEzLCAKKyAgICAxNDgsIDIxMSwgMjQxLCA4MiwgMTcyLCAyMzAsIDE5OSwgODIsIDE3MiwgMjA1LCAxODYsIDIzMCwgMTk5LCA4MiwgMTcyLCAKKyAgICAyNDMsIDE5MiwgMjAyLCAyMjgsIDIyOSwgMjI1LCA1MiwgMjM1LCAyMjAsIDY3LCAxLCA1LCA2MywgNjcsIDEsIDYzLCA2NywgCisgICAgMSwgNSwgNzUsIDY3LCAxLCA3NSwgNjcsIDEsIDUsIDY4LCA2NywgMSwgNjgsIDY3LCAxLCA1LCA3NCwgNjcsIDEsIDc0LCAKKyAgICA2NywgMSwgNSwgNzgsIDY3LCAxLCA3OCwgNjcsIDEsIDE3MywgNjcsIDEsIDIzOSwgOCwgNjcsIDEsIDIyOSwgMTAwLCA2NywgCisgICAgMSwgMjM4LCA4MSwgNjcsIDEsIDIyOCwgMjA5LCA2NywgMSwgMjM3LCAyMzAsIDY3LCAxLCAyMjksIDIwMSwgNjcsIDEsIAorICAgIDIzOCwgMTkwLCA2NywgMSwgMjI5LCAyNiwgNjcsIDEsIDIzOCwgMzksIDY3LCAxLCAyMTUsIDM2LCA2NywgMSwgMjAyLCAKKyAgICAxMTYsIDY3LCAxLCAyMTIsIDE2MiwgNjcsIDEsIDIwMiwgMzksIDY3LCAxLCAyMTEsIDEwLCA2NywgMSwgMjAyLCA2LCA2NywgCisgICAgMSwgMjE0LCAxNzcsIDY3LCAxLCAyMDIsIDkyLCA2NywgMSwgMjEyLCAxMywgNjcsIDEsIDIwMiwgMTcsIDY3LCAxLCAyMTAsIAorICAgIDIyLCA2NywgMSwgMjQ0LCAyMTIsIDY3LCAxLCAyMDksIDIsIDY3LCAxLCAyNDMsIDIzMywgNjcsIDEsIDUsIDIwNywgMjAzLCAKKyAgICA2NywgMSwgMjA3LCAyMDMsIDY3LCAxLCAyNDIsIDQyLCA2NywgMSwgMjA5LCAxODcsIDY3LCAxLCAyNDQsIDc1LCA2NywgMSwgCisgICAgMTM1LCA2NywgMSwgMjQzLCAxMTMsIDY3LCAxLCAyMDEsIDIwMSwgNjcsIDEsIDIyMiwgMTAwLCA2NywgMSwgMjIxLCA4NCwgCisgICAgNjcsIDEsIDIyMiwgMjQwLCA2NywgMSwgMjIxLCAxOTEsIDY3LCAxLCAxNTIsIDY3LCAxLCAyNDksIDMyLCA2NywgMSwgMTg1LCAKKyAgICA2NywgMSwgMjM3LCAzLCA2NywgMSwgMjQ4LCA4NiwgNjcsIDEsIDIxOCwgMTY3LCA2NywgMSwgMjM2LCAyNiwgNjcsIDEsIAorICAgIDI0NywgMTkzLCA2NywgMSwgMjE3LCAxOTEsIDY3LCAxLCAyMzcsIDY3LCA2NywgMSwgMjQ4LCAxNjIsIDY3LCAxLCAyMTksIAorICAgIDM0LCA2NywgMSwgMjM2LCAxMzYsIDY3LCAxLCAyNDgsIDIzLCA2NywgMSwgMjE4LCA2OSwgNjcsIDEsIDE5MiwgNjcsIDEsIAorICAgIDIyNCwgMTU1LCA2NywgMSwgMjIzLCAyNDYsIDY3LCAxLCAyMjUsIDIwLCA2NywgMSwgMjI0LCA4MiwgNjcsIDEsIDUsIDE5OCwgCisgICAgNjcsIDEsIDE5OCwgNjcsIDEsIDUsIDIwMiwgMjEzLCA2NywgMSwgMjAyLCAyMTMsIDY3LCAxLCA1LCAyMDIsIDI0NywgNjcsIAorICAgIDEsIDIwMiwgMjQ3LCA2NywgMSwgMjE2LCAyMjAsIDY3LCAxLCAyMTYsIDU3LCA2NywgMSwgMjE1LCAxNDUsIDY3LCAxLCAKKyAgICAyMTYsIDE1OCwgNjcsIDEsIDIxNSwgMjI3LCA2NywgMSwgNSwgMjA0LCAxMTEsIDY3LCAxLCAyMDQsIDExMSwgNjcsIDEsIAorICAgIDIwNCwgMzAsIDY3LCAxLCAyMDQsIDYyLCA2NywgMSwgMjA0LCAwLCA2NywgMSwgMjIzLCAxNjMsIDY3LCAxLCAyMDQsIDE2MywgCisgICAgNjcsIDEsIDUsIDE3MywgNjcsIDEsIDUsIDIyOSwgMjAxLCA2NywgMSwgMjA2LCA4NiwgNjcsIDEsIDIwNSwgMjMwLCA2NywgCisgICAgMSwgMjA2LCA1NSwgNjcsIDEsIDIwNSwgMTg5LCA2NywgMTAxLCAyNDMsIDg1LCAyMjksIDIyNSwgMjE3LCAyMTUsIDIxMSwgCisgICAgMjQxLCA4MiwgNjcsIDIzMCwgMTk5LCA4MiwgNjcsIDIwNSwgMTg2LCAyMzAsIDE5OSwgODIsIDY3LCAyNDMsIDE5MiwgMjI4LCAKKyAgICAyNDksIDI0OCwgMSwgMSwgMjQ5LCAyNTUsIDI0OCwgMSwgMSwgMjE5LCAxODQsIDI0OCwgMSwgMSwgMjI2LCAxODUsIDI0OCwgCisgICAgMSwgMSwgMjQwLCAxNzQsIDI0OCwgMSwgMSwgMjQ1LCA1MSwgMjQ4LCAxLCAxLCAyMTAsIDY5LCAyNDgsIDEsIDEsIDIyMywgCisgICAgMTYzLCAyNDgsIDEsIDEsIDE1OSwgMjQ4LCAxLCAxLCAyMzksIDc1LCAyNDgsIDEsIDEsIDIzMCwgNTQsIDI0OCwgMSwgMSwgCisgICAgMjM3LCAxNzEsIDI0OCwgMSwgMSwgMjMwLCAxODQsIDI0OCwgMSwgMSwgMjE3LCAxMzQsIDI0OCwgMSwgMSwgMjAzLCAxOTYsIAorICAgIDI0OCwgMSwgMSwgMjAyLCA4MSwgMjQ4LCAxLCAxLCAyNDYsIDIwMCwgMjQ4LCAxLCAxLCAyMTMsIDkyLCAyNDgsIDEsIDEsIAorICAgIDE0NiwgMjQ4LCAxLCAxLCAyMDIsIDE1OSwgMjQ4LCAxLCAxLCAyNDcsIDEyNSwgMjQ4LCAxLCAxLCAxOTQsIDI0OCwgMSwgMSwgCisgICAgNjMsIDI0OCwgMSwgMSwgNzgsIDI0OCwgMSwgMSwgNzQsIDI0OCwgMSwgMSwgMjQxLCAxNDcsIDI0OCwgMSwgMSwgMjUxLCAKKyAgICA2NCwgMjQ4LCAxLCAxLCAyNDEsIDE0NSwgMjQ4LCAxLCAxLCAyNTAsIDM0LCAyNDgsIDEsIDEsIDIxOSwgMjE2LCAyNDgsIDEsIAorICAgIDEsIDI1MCwgMjMxLCAyNDgsIDEsIDEsIDI0MSwgOTIsIDI0OCwgMSwgMSwgMjUwLCAyMjMsIDI0OCwgMSwgMSwgMjQxLCA3OCwgCisgICAgMjQ4LCAxLCAxLCAyNDEsIDI4LCAyNDgsIDEsIDEsIDc1LCAyNDgsIDEsIDEsIDY4LCAyNDgsIDEsIDEsIDIzMCwgMTk3LCAKKyAgICAyNDgsIDEsIDEsIDIwNiwgMTY0LCAyNDgsIDEsIDEsIDIyMiwgMjA1LCAyNDgsIDEsIDEsIDIzOCwgNDMsIDI0OCwgMSwgMSwgCisgICAgMjMxLCA4NCwgMjgsIDEsIDIyOSwgNTksIDI4LCAxLCAyMTEsIDE1NiwgMjgsIDEsIDIyOSwgNTIsIDI4LCAxLCAyMjIsIDkzLCAKKyAgICAyOCwgMSwgMjIyLCA5MSwgMjgsIDEsIDIyMiwgOTAsIDI4LCAxLCAyMDgsIDI0MCwgMjgsIDEsIDIxMSwgMTQ1LCAyOCwgMSwgCisgICAgMjE2LCA0NywgMjgsIDEsIDIxNiwgNDIsIDI4LCAxLCAyMTYsIDM5LCAyOCwgMSwgMjE2LCAzMiwgMjgsIDEsIDIxNiwgMjcsIAorICAgIDI4LCAxLCAyMTYsIDIyLCAyOCwgMSwgMjE2LCAzMywgMjgsIDEsIDIxNiwgNDUsIDI4LCAxLCAyMjQsIDE0MSwgMjgsIDEsIAorICAgIDIxOCwgMTUzLCAyOCwgMSwgMjExLCAxNTMsIDI4LCAxLCAyMTgsIDE0MiwgMjgsIDEsIDIxMiwgMTExLCAyOCwgMSwgMjExLCAKKyAgICAxNTAsIDI4LCAxLCAyMzEsIDEwNiwgMjgsIDEsIDI0NiwgNzQsIDI4LCAxLCAyMTEsIDE2MCwgMjgsIDEsIDI0NiwgMTM4LCAKKyAgICAyOCwgMSwgMjI5LCAxMjAsIDI4LCAxLCAyMDksIDY2LCAyOCwgMSwgMjE4LCAxOTAsIDI4LCAxLCAyMzYsIDI1MSwgMjgsIDEsIAorICAgIDYzLCAyOCwgMSwgMjUxLCAxMDksIDI4LCAxLCAxOTgsIDI4LCAxLCAyMDMsIDk5LCAyOCwgMSwgMjQxLCA1NSwgMjgsIDEsIAorICAgIDc0LCAyOCwgMSwgMjAzLCAzOSwgMjgsIDEsIDIwMywgNTIsIDI4LCAxLCA3OCwgMjgsIDEsIDIwNCwgMTExLCAyOCwgMSwgCisgICAgMjA0LCAxMDcsIDI4LCAxLCAyMjAsIDczLCAyOCwgMSwgMjAyLCAyNDcsIDI4LCAxLCA2OCwgMjgsIDEsIDIwNCwgNDgsIDI4LCAKKyAgICAxLCAyMDQsIDYyLCAyOCwgMSwgMjA0LCAzMCwgMjgsIDEsIDIwMiwgMjEzLCAyOCwgMSwgMjQwLCAyMzgsIDI4LCAxLCAyMDMsIAorICAgIDExLCAyOCwgMSwgNzUsIDI4LCAyNDAsIDcsIDI4LCAxLCAyMTEsIDE1NCwgMjgsIDEsIDIyMiwgODMsIDI4LCAxLCAyMjIsIAorICAgIDg1LCAyOCwgMSwgMjIyLCA4OCwgMjgsIDEsIDIxNiwgNDAsIDI4LCAxLCAyMTYsIDIxLCAyOCwgMSwgMjE2LCAyOSwgMjgsIAorICAgIDEsIDIxNiwgMzQsIDI4LCAxLCAyMTYsIDE5LCAyOCwgMSwgMjI0LCAxMzQsIDI4LCAxLCAyMjQsIDEzMSwgMjgsIDEsIDIyNCwgCisgICAgMTM1LCAyOCwgMSwgMjI5LCAyNDYsIDI4LCAxLCAyMTgsIDE0OCwgMjgsIDEsIDIxOCwgMTM0LCAyOCwgMSwgMjE4LCAxNDAsIAorICAgIDI4LCAxLCAyMTgsIDEzNywgMjgsIDEsIDIxOCwgMTUxLCAyOCwgMSwgMjE4LCAxMzUsIDI4LCAxLCAyMjksIDI0NCwgMjgsIAorICAgIDEsIDIyOSwgMjQyLCAyOCwgMSwgMjEyLCAxMDQsIDI4LCAxLCAyMTIsIDEwMiwgMjgsIDEsIDIxMiwgOTQsIDI4LCAxLCAKKyAgICAyMTIsIDk5LCAyOCwgMSwgMjEyLCAxMDksIDI4LCAxLCAyMTksIDEwNywgMjgsIDEsIDIxMSwgMTU3LCAyOCwgMSwgMjAzLCAKKyAgICAyOSwgMjgsIDEsIDIwMywgMjUsIDI4LCAxLCAyMDMsIDI2LCAyOCwgMSwgMjI5LCAyNDUsIDI4LCAxLCAyMTEsIDE1OCwgMjgsIAorICAgIDEsIDIwMywgMzUsIDI4LCAxLCAyMDIsIDI0MSwgMjgsIDEsIDIwMiwgMjQwLCAyOCwgMSwgMjAyLCAyNDMsIDI4LCAxLCAKKyAgICAyMDIsIDIwNCwgMjgsIDEsIDIwMiwgMjA1LCAyOCwgMSwgMjAyLCAyMDgsIDI4LCAxLCAyNTAsIDEzNywgMjgsIDEsIDI1MCwgCisgICAgMTMxLCAxMzksIDI1MCwgMjA1LCAyMjcsIDEwMywgODIsIDEzOSwgMjUwLCAyMDUsIDIxNiwgNzQsIDgyLCAxMzksIDI1MCwgCisgICAgMjA1LCAxMTgsIDgyLCAxMzksIDI1MCwgMjA1LCAxMjAsIDgyLCAxMzksIDI1MCwgMjA1LCAxMjYsIDgyLCAxMzksIDI1MCwgCisgICAgMjA1LCAyMzksIDE0NywgODIsIDEzOSwgMjUwLCAyMDUsIDIwOCwgMTQ1LCA4MiwgMTM5LCAyNTAsIDIwNSwgMTAxLCA4MiwgCisgICAgMTM5LCAyNTAsIDIwNSwgMjQ3LCAyNDgsIDgyLCAxMzksIDI1MCwgMjA1LCAyMzksIDI0NSwgODIsIDEzOSwgMjUwLCAyMDUsIAorICAgIDIxNCwgMTcxLCA4MiwgMTM5LCAyNTAsIDIwNSwgMjA5LCA2MSwgODIsIDEzOSwgMjUwLCAyMDUsIDIzOSwgMTQwLCA4MiwgCisgICAgMTM5LCAyNTAsIDIwNSwgMjM3LCA1MiwgODIsIDEzOSwgMjUwLCAyMDUsIDI0MSwgMTgwLCA4MiwgMTM5LCAyNTAsIDIwNSwgCisgICAgMjI1LCAxMjMsIDgyLCAyNDgsIDEsIDEsIDI0NywgMTkzLCAyNDgsIDEsIDEsIDIwMiwgMzksIDI0OCwgMSwgMSwgMjMwLCAKKyAgICAxNDEsIDI0OCwgMSwgMSwgMjM3LCAyMzAsIDI0OCwgMSwgMSwgMjQxLCAxNjEsIDI0OCwgMSwgMSwgMjQxLCA3NSwgMjQ4LCAKKyAgICAxLCAxLCAyMjAsIDE4LCAyNDgsIDEsIDEsIDIyMCwgMjIsIDI0OCwgMSwgMSwgMjMwLCAyMjQsIDI0OCwgMSwgMSwgMjUwLCAKKyAgICAyMDcsIDI0OCwgMSwgMSwgMjMxLCAxNiwgMjQ4LCAxLCAxLCAyMDYsIDIyOSwgMjQ4LCAxLCAxLCAyMzEsIDY2LCAyNDgsIDEsIAorICAgIDEsIDIyMiwgMTgzLCAyNDgsIDEsIDEsIDI1MSwgNTgsIDI0OCwgMSwgMSwgMjUwLCAyOSwgMjQ4LCAxLCAxLCAyNTAsIDI0NywgCisgICAgMjQ4LCAxLCAxLCAyMjAsIDM5LCAyNDgsIDEsIDEsIDIyMCwgMjQsIDI0OCwgMSwgMSwgMjMxLCAxMywgMjQ4LCAxLCA0NiwgCisgICAgMSwgMjE5LCAxODQsIDI0OCwgMSwgNDYsIDEsIDIxMCwgNjksIDI0OCwgMSwgNDYsIDEsIDIzMCwgNTQsIDI0OCwgMSwgNDYsIAorICAgIDEsIDIzNywgMTcxLCAyNDgsIDEsIDEsIDIzOCwgMTIwLCAyNDgsIDEsIDEsIDIyNywgMTYyLCAyNDgsIDEsIDEsIDIwMSwgCisgICAgMjQyLCAxMiwgMjExLCAzMiwgMjEwLCA2OSwgMTIsIDIxMSwgMzIsIDIwNCwgNDEsIDEyLCAyMTEsIDMyLCAyMDMsIDE3MSwgCisgICAgMTIsIDIxMSwgMzIsIDI0NywgMTM4LCAxMiwgMjExLCAzMiwgMjEwLCAxNzMsIDEyLCAyMTEsIDMyLCAyMzUsIDIxMCwgMTIsIAorICAgIDIxMSwgMzIsIDIzNSwgMjE0LCAxMiwgMjExLCAzMiwgMjM2LCAzNSwgMTIsIDIxMSwgMzIsIDIzNSwgMjExLCAxMiwgMjExLCAKKyAgICAzMiwgMjEwLCA3MiwgMTIsIDIxMSwgMzIsIDIzNSwgMjEzLCAxMiwgMjExLCAzMiwgMjM1LCAyMDksIDEyLCAyMTEsIDMyLCAKKyAgICAyMzYsIDMzLCAxMiwgMjExLCAzMiwgMjM1LCAyMTIsIDEyLCAyMTEsIDMyLCAyMzUsIDIwOCwgMTIsIDIxMSwgMzIsIDIyMywgCisgICAgMTYzLCAxMiwgMjExLCAzMiwgMjM3LCAxNzEsIDEyLCAyMTEsIDMyLCAxOTQsIDEyLCAyMTEsIDMyLCAyMTksIDE4NCwgMTIsIAorICAgIDIxMSwgMzIsIDIxMSwgMjMxLCAxMiwgMjExLCAzMiwgMjQ1LCA1MSwgMTIsIDIxMSwgMzIsIDIzNSwgMjE1LCAxMiwgMjExLCAKKyAgICAzMiwgMjM3LCAxMywgMTIsIDIxMSwgMzIsIDIxMCwgODEsIDEyLCAyMTEsIDMyLCAyMTAsIDE1MiwgMTIsIDIxMSwgMzIsIAorICAgIDIxMSwgMTA4LCAxMiwgMjExLCAzMiwgMjEzLCA5OCwgMTIsIDIxMSwgMzIsIDIxOSwgMzgsIDEyLCAyMTEsIDMyLCAyMTcsIAorICAgIDEzNiwgMTIsIDIxMSwgMzIsIDIwOCwgMTc0LCAxMiwgMjExLCAzMiwgMjEwLCA3MSwgMTIsIDIxMSwgMzIsIDIxMCwgMTYzLCAKKyAgICAxMiwgMjExLCAzMiwgMjM1LCAyMjMsIDEyLCAyMTEsIDMyLCAyMzUsIDIwNywgMTIsIDIxMSwgMzIsIDIxOCwgMjEwLCAxMiwgCisgICAgMjExLCAzMiwgMjE3LCAxMzQsIDY3LCAxLCA1LCAyMjgsIDIwOSwgNjcsIDEsIDUsIDIxMiwgMTYyLCA2NywgMSwgNSwgMjExLCAKKyAgICAxMCwgNjcsIDEsIDUsIDEzNSwgNjcsIDEsIDUsIDIyMSwgODQsIDY3LCAxLCA1LCAxNTIsIDY3LCAxLCA1LCAyMzcsIDMsIAorICAgIDY3LCAxLCA1LCAyMzYsIDI2LCA2NywgMSwgNSwgMjM3LCA2NywgNjcsIDEsIDUsIDIzNiwgMTM2LCA2NywgMSwgNSwgMjIzLCAKKyAgICAyNDYsIDY3LCAxLCA1LCAyMTYsIDIyMCwgNjcsIDEsIDUsIDIxNiwgNTcsIDY3LCAxLCA1LCAyMTUsIDE0NSwgNjcsIDEsIDUsIAorICAgIDIxNiwgMTU4LCA2NywgMSwgNSwgMjE1LCAyMjcsIDEwMiwgMjgsIDIyOSwgNTksIDEwMiwgMjgsIDIyMiwgOTMsIDEwMiwgCisgICAgMjgsIDIwOCwgMjQwLCAxMDIsIDI4LCAyMTYsIDQ3LCAxMDIsIDI4LCAyMjQsIDE0MSwgMTAyLCAyOCwgMjE4LCAxNTMsIAorICAgIDEwMiwgMjgsIDIxMiwgMTExLCAxMDIsIDI4LCAyMzEsIDEwNiwgMTAyLCAyOCwgMjQ2LCA3NCwgMTAyLCAyOCwgMjQ2LCAKKyAgICAxMzgsIDEwMiwgMjgsIDIyOSwgMTIwLCAxMDIsIDI4LCAyMDksIDY2LCAxMDIsIDI4LCAyMTgsIDE5MCwgMTAyLCAyOCwgCisgICAgMjM2LCAyNTEsIDEwMiwgMjgsIDIyOSwgNjAsIDYzLCAxMDIsIDI4LCAyMjIsIDk0LCA2MywgMTAyLCAyOCwgMjA4LCAyNDEsIAorICAgIDYzLCAxMDIsIDI4LCAyMTYsIDQ4LCA2MywgMTAyLCAyOCwgMjI0LCAxNDIsIDYzLCAxMDIsIDI4LCAyMTgsIDE1NCwgNjMsIAorICAgIDEwMiwgMjgsIDIxMiwgMTEyLCA2MywgMTAyLCAyOCwgMjMxLCAxMDcsIDYzLCAxMDIsIDI4LCAyNDYsIDc1LCA2MywgMTAyLCAKKyAgICAyOCwgMjQ2LCAxMzksIDYzLCAxMDIsIDI4LCAyMjksIDEyMSwgNjMsIDEwMiwgMjgsIDIwOSwgNjcsIDYzLCAxMDIsIDI4LCAKKyAgICAyMTgsIDE5MSwgNjMsIDEwMiwgMjgsIDIzNiwgMjUyLCA2MywgMTAyLCAyOCwgMjQ2LCA3NSwgNjgsIDEwMiwgMjI4LCAyNTMsIAorICAgIDE2NywgMjIwLCA1NCwgMTAyLCAyMjgsIDI1MywgMTY3LCAxNTgsIDIzNiwgMjYsIDEwMiwgMTg5LCAxMDUsIDEwMiwgMTg5LCAKKyAgICAxMDgsIDEwMiwgMTg5LCAxNDcsIDEwMiwgMTg5LCAxNDksIDEwMiwgMTg5LCAxNzAsIDEwMiwgMTg5LCAxOTUsIDEwMiwgCisgICAgMTg5LCAyMTMsIDExMSwgMTAyLCAxODksIDE5OSwgMTAyLCAxODksIDIyMiwgNjMsIDEwMiwgMTg5LCAyMDksIDE1MiwgMTAyLCAKKyAgICAxODksIDIyNCwgMjksIDEwMiwgMTg5LCAyMzksIDI0OSwgMTAyLCAxODksIDIwNCwgODAsIDEwMiwgMTg5LCAyMDMsIDI0MywgCisgICAgMTAyLCAxODksIDIyNCwgMjIwLCAxMDIsIDE4OSwgMjQxLCAxNzksIDEwMiwgMTg5LCAyMTAsIDIxNCwgMTAyLCAxODksIAorICAgIDIxMSwgNjQsIDEwMiwgMTg5LCAyMzcsIDc0LCAxMDIsIDE4OSwgMjEyLCA5LCAxMDIsIDE4OSwgMjIzLCA4NCwgMTAyLCAKKyAgICAxODksIDIxMSwgMjEzLCAxMDIsIDE4OSwgMjQwLCA0LCAxMDIsIDE4OSwgMjQ1LCAyMTEsIDEwMiwgMTg5LCAyMjgsIDEwMiwgCisgICAgMTAyLCAxODksIDIxNiwgOTUsIDEwMiwgMTg5LCAyNDcsIDcxLCAxMDIsIDE4OSwgMjExLCAxNCwgMTAyLCAxODksIDIxMCwgCisgICAgMTk2LCAxMDIsIDE4OSwgMjQxLCA2NSwgMTAyLCAxODksIDIxNiwgODcsIDEwMiwgMTg5LCAyNTEsIDEwLCAxMDIsIDE4OSwgCisgICAgMjQwLCAzMywgMTAyLCAxODksIDIxNiwgODUsIDEwMiwgMTg5LCAyMTMsIDE0OSwgMTAyLCAxODksIDIxNiwgMTU3LCA0MywgCisgICAgMTg5LCAyMTcsIDQ2LCA0MywgMTg5LCAyMjksIDgzLCA0MywgMTg5LCAyMTQsIDE5NSwgNDMsIDE4OSwgMjI4LCAyNDksIDQzLCAKKyAgICA0MiwgMjA5LCAxNTMsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyMDcsIDE1MiwgMjIwLCAzMiwgNjIsIDIxMSwgCisgICAgMTc3LCA0MywgNDIsIDIwOSwgNTQsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyMzksIDE1NCwgMjIwLCAzMiwgCisgICAgNjIsIDIxMSwgMTc3LCA0MywgNDIsIDI0MCwgMTksIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyMTIsIDc1LCAKKyAgICAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDQzLCA0MiwgMjEzLCAxMDYsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAKKyAgICAyNDEsIDEzNSwgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCAyMTksIDY3LCA1NCwgNDMsIDQyLCAyMDcsIDE1MiwgMTA1LCA0MywgCisgICAgNDIsIDIwNywgMTUyLCAxMDgsIDQzLCA0MiwgMjA3LCAxNTIsIDE0NywgNDMsIDQyLCAyMDcsIDE1MiwgMTQ5LCA0MywgNDIsIAorICAgIDIwNywgMTUyLCAxNzAsIDQzLCA0MiwgMjA3LCAxNTIsIDE5NSwgNDMsIDQyLCAyMDcsIDE1MiwgMjEzLCAxMTEsIDQzLCA0MiwgCisgICAgMjA3LCAxNTIsIDE5OSwgNDMsIDQyLCAyMDcsIDE1MiwgMjIyLCA2MywgNDMsIDQyLCAyMDksIDUzLCA0MywgNDIsIDIwOSwgCisgICAgNTQsIDEwNSwgNDMsIDQyLCAyMDksIDU0LCAxMDgsIDQzLCA0MiwgMjA5LCA1NCwgMTQ3LCA0MywgNDIsIDIwOSwgNTQsIAorICAgIDE0OSwgNDMsIDQyLCAyMDksIDU0LCAxNzAsIDQzLCAyOCwgMjI5LCA1OSwgNDMsIDI4LCAyMjIsIDkzLCA0MywgMjgsIDIwOCwgCisgICAgMjQwLCA0MywgMjgsIDIxNiwgNDcsIDQzLCAyOCwgMjI0LCAxNDEsIDQzLCAyOCwgMjE4LCAxNTMsIDQzLCAyOCwgMjEyLCAKKyAgICAxMTEsIDQzLCAyOCwgMjMxLCAxMDYsIDQzLCAyOCwgMjQ2LCA3NCwgNDMsIDI4LCAyNDYsIDEzOCwgNDMsIDI4LCAyMjksIAorICAgIDEyMCwgNDMsIDI4LCAyMDksIDY2LCA0MywgMjgsIDIxOCwgMTkwLCA0MywgMjgsIDIzNiwgMjUxLCA0MywgMjgsIDIyOSwgCisgICAgNjAsIDYzLCA0MywgMjgsIDIyMiwgOTQsIDYzLCA0MywgMjgsIDIwOCwgMjQxLCA2MywgNDMsIDI4LCAyMTYsIDQ4LCA2MywgCisgICAgNDMsIDI4LCAyMjQsIDE0MiwgNjMsIDQzLCAyOCwgMjE4LCAxNTQsIDYzLCA0MywgMjgsIDIxMiwgMTEyLCA2MywgNDMsIDI4LCAKKyAgICAyMzEsIDEwNywgNjMsIDQzLCAyOCwgMjQ2LCA3NSwgNjMsIDQzLCAyOCwgMjQ2LCAxMzksIDYzLCA0MywgMjgsIDIyOSwgCisgICAgMTIxLCA2MywgNDMsIDI4LCAyMDksIDY3LCA2MywgNDMsIDI4LCAyMTgsIDE5MSwgNjMsIDQzLCAyOCwgMjM2LCAyNTIsIDYzLCAKKyAgICA0MywgMjI4LCAyNTMsIDE2NywgMjQ2LCAxODksIDQzLCAyMjgsIDI1MywgMTY3LCAyMzAsIDc4LCA0MywgMjgsIDIzMSwgCisgICAgMTA3LCA2OCwgMjI4LCAyNTMsIDIxMSwgOTcsIDk3LCA0MywgMTg5LCAxMDUsIDQzLCAxODksIDEwOCwgNDMsIDE4OSwgMTQ3LCAKKyAgICA0MywgMTg5LCAxNDksIDQzLCAxODksIDE3MCwgNDMsIDE4OSwgMTk1LCA0MywgMTg5LCAyMTMsIDExMSwgNDMsIDE4OSwgCisgICAgMTk5LCA0MywgMTg5LCAyMjIsIDYzLCA0MywgMTg5LCAyMDksIDE1MiwgNDMsIDE4OSwgMjI0LCAyOSwgNDMsIDE4OSwgMjM5LCAKKyAgICAyNDksIDQzLCAxODksIDIwNCwgODAsIDQzLCAxODksIDIwMywgMjQzLCA0MywgMTg5LCAyMjQsIDIyMCwgNDMsIDE4OSwgCisgICAgMjQxLCAxNzksIDQzLCAxODksIDIxMCwgMjE0LCA0MywgMTg5LCAyMTEsIDY0LCA0MywgMTg5LCAyMzcsIDc0LCA0MywgMTg5LCAKKyAgICAyMTIsIDksIDQzLCAxODksIDIyMywgODQsIDQzLCAxODksIDIxMSwgMjEzLCA0MywgMTg5LCAyNDAsIDQsIDQzLCAxODksIAorICAgIDI0NSwgMjExLCA0MywgMTg5LCAyMjgsIDEwMiwgNDMsIDE4OSwgMjE0LCAxNjksIDQzLCAxODksIDIyNSwgMTI2LCA0MywgCisgICAgMTg5LCAyNDAsIDQyLCA0MywgMTg5LCAyMTAsIDIyNiwgNDMsIDE4OSwgMjQwLCAyMTYsIDQzLCAxODksIDIxNywgMjMzLCAKKyAgICA0MywgMTg5LCAyNTAsIDM4LCA0MywgMTg5LCAyMzAsIDIwMCwgNDMsIDE4OSwgMjE2LCA4NSwgNDMsIDE4OSwgMjQ1LCAxNzAsIAorICAgIDQzLCAxODksIDI0NSwgMTYwLCA0MywgMTg5LCAyMzYsIDI0NCwgNDMsIDE4OSwgMjQ2LCAyMTcsIDQzLCAxODksIDIyNywgMCwgCisgICAgNDMsIDE4OSwgMjI3LCAyMjIsIDQzLCAxODksIDIxNiwgMTYsIDQzLCAxODksIDIyNSwgMTEsIDQzLCAxODksIDIxNiwgMTEyLCAKKyAgICA0MywgMTg5LCAyMTEsIDE0LCA0MywgMTg5LCAyMTAsIDE5NiwgNDMsIDE4OSwgMjQxLCA2NSwgNDMsIDE4OSwgMjE2LCA4NywgCisgICAgNDMsIDE4OSwgMjUxLCAxMCwgNDMsIDE4OSwgMjIyLCA3OSwgNDMsIDQyLCAyMDksIDU0LCAxOTUsIDQzLCA0MiwgMjA5LCAKKyAgICA1NCwgMjEzLCAxMTEsIDQzLCA0MiwgMjA5LCA1NCwgMTk5LCA0MywgNDIsIDIwOSwgNTQsIDIyMiwgNjMsIDQzLCA0MiwgCisgICAgMjM5LCAxNTMsIDQzLCA0MiwgMjM5LCAxNTQsIDEwNSwgNDMsIDQyLCAyMzksIDE1NCwgMTA4LCA0MywgNDIsIDIzOSwgMTU0LCAKKyAgICAxNDcsIDQzLCA0MiwgMjM5LCAxNTQsIDE0OSwgNDMsIDQyLCAyMzksIDE1NCwgMTcwLCA0MywgNDIsIDIzOSwgMTU0LCAxOTUsIAorICAgIDQzLCA0MiwgMjM5LCAxNTQsIDIxMywgMTExLCA0MywgNDIsIDIzOSwgMTU0LCAxOTksIDQzLCA0MiwgMjM5LCAxNTQsIDIyMiwgCisgICAgNjMsIDQzLCA0MiwgMjQwLCAxOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzAsIDE3MSwgMTM5LCAyMDksIDE2NCwgMTYsIAorICAgIDM1LCAyNDAsIDU0LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIyNSwgOTQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjUwLCAKKyAgICAxNTAsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjI1LCA2MywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzAsIDc2LCAxMzksIAorICAgIDIwOSwgMTY0LCAxNiwgMzUsIDIzMCwgNzcsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjUwLCAzMCwgMTM5LCAyMDksIDE2NCwgCisgICAgMTYsIDM1LCAyMTMsIDEyOSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMjAsIDc5LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAorICAgIDIyMSwgMTUzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgNzAsIDUxLCAyMzcsIDEzLCA1MSwgMjQxLCAyNCwgNTEsIAorICAgIDI0MCwgMjI2LCAyMjcsIDEyMCwgMjI3LCAxNDcsIDU0LCA0MywgNjcsIDYzLCA0MywgNjcsIDc1LCA0MywgNjcsIDY4LCA0MywgCisgICAgNjcsIDc0LCA0MywgNjcsIDc4LCA0MywgNjcsIDE3MywgNDMsIDY3LCAyMjksIDEwMCwgNDMsIDY3LCAyMjgsIDIwOSwgNDMsIAorICAgIDY3LCAyMjksIDIwMSwgNDMsIDY3LCAyMjksIDI2LCA0MywgNjcsIDIxNSwgMzYsIDQzLCA2NywgMjEyLCAxNjIsIDQzLCA2NywgCisgICAgMjExLCAxMCwgNDMsIDY3LCAyMTQsIDE3NywgNDMsIDY3LCAyMTIsIDEzLCA0MywgNjcsIDIxMCwgMjIsIDQzLCA2NywgMjA5LCAKKyAgICAyLCA0MywgNjcsIDIwNywgMjAzLCA0MywgNjcsIDIwOSwgMTg3LCA0MywgNjcsIDEzNSwgNDMsIDY3LCAyMDEsIDIwMSwgNDMsIAorICAgIDY3LCAyMjIsIDEwMCwgNDMsIDY3LCAyMjEsIDg0LCA0MywgNjcsIDIyMiwgMjQwLCA0MywgNjcsIDIyMSwgMTkxLCA0MywgCisgICAgNjcsIDE1MiwgNDMsIDY3LCAyMzcsIDMsIDQzLCA2NywgMjM2LCAyNiwgNDMsIDY3LCAyMzcsIDY3LCA0MywgNjcsIDIzNiwgCisgICAgMTM2LCA0MywgNjcsIDE5MiwgNDMsIDY3LCAyMjQsIDE1NSwgNDMsIDY3LCAyMjMsIDI0NiwgNDMsIDY3LCAyMjUsIDIwLCAKKyAgICA0MywgNjcsIDIyNCwgODIsIDQzLCA2NywgMTk4LCA0MywgNjcsIDIwMiwgMjEzLCA0MywgNjcsIDIwMiwgMjQ3LCA0MywgNjcsIAorICAgIDIxNiwgMjIwLCA0MywgNjcsIDIxNiwgNTcsIDQzLCA2NywgMjE1LCAxNDUsIDQzLCA2NywgMjE2LCAxNTgsIDQzLCA2NywgCisgICAgMjE1LCAyMjcsIDQzLCA2NywgMjA0LCAxMTEsIDQzLCA2NywgMjA0LCAzMCwgNDMsIDY3LCAyMDQsIDYyLCA0MywgNjcsIAorICAgIDIwNCwgMCwgNTEsIDI1MCwgMTc0LCA1MSwgMjUwLCA4MywgNTEsIDI1MCwgMjAxLCA1MSwgMjUxLCAyMzksIDUxLCAyMzEsIAorICAgIDE4LCA1MSwgMjMwLCAyNDIsIDUxLCAyMDYsIDIyNywgNTEsIDI0MCwgMjUzLCA1MSwgMjQxLCAxNTgsIDUxLCAyMjAsIDIxLCAKKyAgICA1MSwgMjIwLCAxNCwgNTEsIDIzMCwgMTYsIDUxLCAyMjksIDIzOCwgNTEsIDIyOSwgMjM1LCA1MSwgMjM4LCAyMjAsIDUxLCAKKyAgICAyMzgsIDIyOSwgNTEsIDIzOCwgNzAsIDUxLCAyMzgsIDY2LCA1MSwgMjI4LCAxMzIsIDUxLCAyMzgsIDU4LCA1MSwgMjI5LCAKKyAgICA3NSwgNTEsIDIyOSwgNzQsIDUxLCAyMjksIDczLCA1MSwgMjI5LCA3MiwgNTEsIDIzNywgMjAwLCA1MSwgMjM3LCAxOTksIAorICAgIDUxLCAyMjgsIDE4MCwgNTEsIDIyOCwgMTgyLCA1MSwgMjI5LCAxOTQsIDUxLCAyMjgsIDI1MSwgNTEsIDIyOSwgMywgNTEsIAorICAgIDIxNSwgMTcsIDUxLCAyMTQsIDIzNiwgNTEsIDIxMiwgOTIsIDUxLCAyMTMsIDEzNCwgNTEsIDIxMywgMTMzLCA1MSwgMjQ0LCAKKyAgICAyMDksIDUxLCAyNDQsIDE0LCA1MSwgMjQzLCA4NiwgNTEsIDIwOCwgMTYzLCA1MSwgMjIzLCA3OSwgNTEsIDIyMSwgMTU0LCAKKyAgICA1MSwgMjM3LCAxNDIsIDUxLCAyMTksIDE2MywgNTEsIDIxOSwgMTYyLCA1MSwgMjQ5LCAyOSwgNTEsIDIxOCwgMTY0LCA1MSwgCisgICAgMjE4LCAxMjcsIDUxLCAyMTgsIDEyOCwgNTEsIDI0OCwgNTcsIDUxLCAyMzYsIDI0LCA1MSwgMjM2LCAxOSwgNTEsIDI0NywgCisgICAgMTUxLCA1MSwgMjM2LCA0LCA1MSwgMjM3LCAzOSwgNTEsIDIxOCwgMjIwLCA1MSwgMjE5LCA0LCA1MSwgMjM3LCAyMiwgNTEsIAorICAgIDIxOSwgMCwgNTEsIDIxOSwgMTgsIDUxLCAyNDgsIDE0NSwgNTEsIDIxOCwgNTgsIDUxLCAyNDcsIDI1MywgNTEsIDIzNiwgCisgICAgMTIwLCA1MSwgMjE4LCA0NiwgNTEsIDIzNiwgMTExLCA1MSwgMjM2LCAxMTMsIDUxLCAyMjUsIDEzOCwgNTEsIDIyNSwgMTM0LCAKKyAgICA1MSwgMjI1LCAxNDMsIDUxLCAyMjUsIDgzLCA1MSwgMjI1LCAxMTAsIDUxLCAyMjQsIDEyMSwgNTEsIDIyNCwgOTcsIDUxLCAKKyAgICAyMjQsIDk2LCA1MSwgMjI1LCAwLCA1MSwgMjI0LCAyNTMsIDUxLCAyMjUsIDEsIDUxLCAyMDMsIDEwOSwgNTEsIDIwMywgCisgICAgMTA3LCA1MSwgMjAyLCAyMDIsIDUxLCAyMTUsIDI0MywgNTEsIDIxNSwgMjQ3LCA1MSwgMjE1LCAxMTksIDUxLCAyMTUsIAorICAgIDExMywgNTEsIDIxNiwgMTA5LCA1MSwgMjE2LCAxMDYsIDUxLCAyMDQsIDc4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgCisgICAgNDMsIDIwMiwgODQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMTA1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAorICAgIDIzNiwgNDMsIDEwOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAxNDcsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCisgICAgMjM2LCA0MywgMTQ5LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDE3MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKKyAgICAyMzYsIDQzLCAxOTUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjEzLCAxMTEsIDEzOSwgMjA5LCAxNjQsIAorICAgIDE2LCAzNSwgMjM2LCA0MywgMTk5LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIyMiwgNjMsIDEzOSwgMjA5LCAKKyAgICAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjA5LCAxNTIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjQxLCAxMTIsIAorICAgIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjA3LCAxNTQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgCisgICAgMjA5LCA1NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMzksIDE0MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKKyAgICAyMzYsIDQzLCAyNDAsIDIyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIxMiwgODIsIDEzOSwgMjA5LCAxNjQsIAorICAgIDE2LCAzNSwgMjM2LCA0MywgMjEzLCAxMDgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjQxLCAxNDAsIDEzOSwgCisgICAgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjIyLCA2MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIAorICAgIDE1MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIDE0NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKKyAgICAyMzYsIDQzLCAyMDcsIDE0MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIDE0MiwgMTM5LCAyMDksIAorICAgIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIDE0NywgNTEsIDIzNiwgMzQsIDUxLCAyNDQsIDIxMiwgNTEsIDI1MCwgMzQsIAorICAgIDUxLCAxNDIsIDUxLCAyMTksIDIwNiwgNTEsIDIxOSwgMzksIDUxLCAyNDMsIDExNSwgNTEsIDI0MywgMTE2LCAyMTEsIDE3NiwgCisgICAgNTEsIDI0MywgMTE2LCAyNDUsIDEwNSwgNTEsIDIzMCwgMTk3LCA1MSwgMjQxLCAyNywgMjIzLCA4NSwgMjM3LCA0MCwgNTEsIAorICAgIDI0MSwgMjcsIDIyMywgODUsIDIxMCwgOTIsIDUxLCAyNDEsIDI3LCAyMjMsIDg1LCAyMDksIDI0NSwgNTEsIDI0MSwgMjcsIAorICAgIDIyMywgODUsIDIyNCwgMjUyLCA1MSwgMjQ1LCAxNjIsIDUxLCAyMTksIDE2OSwgMjUwLCAyMzMsIDUxLCAyMDEsIDIwMSwgCisgICAgNTEsIDIyMywgMjQ3LCA2MywgNTEsIDE5MiwgNTEsIDE3MywgNTEsIDIyOSwgMjA0LCA1MSwgMjI1LCA1OSwgNTEsIDIzOCwgCisgICAgMjA4LCA1MSwgMjQ3LCA3NiwgNTEsIDIyOSwgMjAzLCA1MSwgMjE4LCAyMTEsIDUxLCAyMjIsIDIwNywgNTEsIDIyMywgMjQ3LCAKKyAgICAyNDAsIDE3NCwgNTEsIDIyMywgMjQ3LCAyMzksIDc1LCA1MSwgMjI0LCAxOTYsIDUxLCAyMjksIDE0NiwgNTEsIDIzNSwgCisgICAgMjE1LCA1MSwgMjI5LCAxMDIsIDUxLCAyMjQsIDE1NywgNTEsIDIzOCwgODMsIDUxLCAyMDksIDQsIDUxLCAyMjMsIDI0NywgCisgICAgMTU5LCA1MSwgMjI0LCA5MCwgNTEsIDI0MywgMTI1LCA1MSwgMjI5LCA0MSwgNTEsIDIzOSwgMTg4LCA1MSwgMjIxLCAyMjksIAorICAgIDUxLCAyMjMsIDI0NywgMjI2LCAxODUsIDUxLCAyMjQsIDg3LCA1MSwgMjQ1LCAyNTUsIDUxLCAyMjksIDM1LCA1MSwgMjI0LCAKKyAgICA4OCwgMjExLCAxNzYsIDUxLCAyNDYsIDAsIDIxMSwgMTc2LCA1MSwgMjI2LCAxODYsIDIxMSwgMTc2LCA1MSwgMjI5LCAzNiwgCisgICAgMjExLCAxNzYsIDUxLCAyMjQsIDg4LCAyNDUsIDEwNSwgNTEsIDI0NiwgMCwgMjQ1LCAxMDUsIDUxLCAyMjYsIDE4NiwgMjQ1LCAKKyAgICAxMDUsIDUxLCAyMjksIDM2LCAyNDUsIDEwNSwgNTEsIDIyNiwgMTg2LCAxMTUsIDE5NCwgNTEsIDIyNiwgMTg2LCAxMTUsIAorICAgIDIxNSwgOTQsIDIxMSwgMTc2LCA1MSwgMTg1LCA1MSwgMjI4LCAyNDQsIDUxLCAyMjMsIDI1MCwgNTEsIDIzOCwgMTUsIDUxLCAKKyAgICAyMTYsIDIwNywgNTEsIDIxNiwgMjA4LCAxMTUsIDE5NCwgNTEsIDIxNiwgMjA4LCAxMTUsIDIxNSwgOTQsIDIxMSwgMTc2LCAKKyAgICA1MSwgMjE3LCAyMDQsIDUxLCAyMjEsIDEyMiwgNTEsIDIyMywgMjQ3LCAxOTQsIDUxLCAyMjMsIDI0OCwgNTEsIDIxNywgCisgICAgMTU0LCA1MSwgMjIxLCAyMiwgNTEsIDIyMywgMjQ3LCAyMDYsIDE2NCwgNTEsIDIyMywgMTg3LCA1MSwgMjI4LCAxNzAsIDUxLCAKKyAgICAyMjMsIDE4OCwgMjI1LCAwLCA1MSwgMjE3LCAxNTMsIDUxLCAyMjEsIDIxLCA1MSwgMjIzLCAyNDcsIDIwNCwgMTQ0LCA1MSwgCisgICAgMjIzLCAxODEsIDUxLCAyMjgsIDE2OCwgNTEsIDIyMywgMTgyLCAyMjUsIDAsIDUxLCAyMzAsIDU1LCAyMjAsIDU4LCA1MSwgCisgICAgMjI2LCAxODYsIDIyMCwgNTgsIDUxLCAyNTAsIDI0NywgNTEsIDI0NywgMjI5LCA1MSwgMjQ3LCA2LCA1MSwgMjQ2LCAyMzksIAorICAgIDUxLCAyNDcsIDEyNiwgMTE1LCAyMjksIDE0NiwgNTEsIDI0NSwgMjU0LCA1MSwgMjQ0LCAxMjksIDUxLCAyMzcsIDE4NCwgCisgICAgNTEsIDE1MiwgNTEsIDIzNiwgMzUsIDUxLCAyMzEsIDQ5LCA1MSwgMjI5LCA0OCwgNTEsIDIyOSwgMzYsIDI0NywgNDcsIDUxLCAKKyAgICAyMjgsIDIxMSwgNTEsIDIyNywgNTIsIDUxLCAyMjcsIDUxLCA1MSwgMjI3LCAzOCwgNTEsIDIyNiwgMjAwLCA1MSwgMjI1LCAKKyAgICA2MCwgMjEyLCAzNiwgNTEsIDIyNCwgMTIwLCA1MSwgMjI0LCA1NiwgNTEsIDIxOCwgMjA5LCA1MSwgMjE4LCA3MiwgNTEsIAorICAgIDIxOCwgMTEsIDUxLCAyMTgsIDksIDUxLCAyMTEsIDE2OCwgNTEsIDIxMCwgMTc3LCA1MSwgMjA0LCA2NCwgNTEsIDIwNiwgCisgICAgMTY1LCAxMTUsIDIyNiwgMTg1LCA1MSwgMzQsIDExNSwgMjI2LCAxODUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAKKyAgICAxMzMsIDEwNSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMTA4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAorICAgIDI0NCwgMTMzLCAxNDcsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDE0OSwgMTM5LCAyMDksIDE2NCwgMTYsIAorICAgIDM1LCAyNDQsIDEzMywgMTcwLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAxOTUsIDEzOSwgMjA5LCAxNjQsIAorICAgIDE2LCAzNSwgMjQ0LCAxMzMsIDIxMywgMTExLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAxOTksIDEzOSwgCisgICAgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIyMiwgNjMsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIAorICAgIDIwOSwgMTUyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyNDEsIDExMiwgMTM5LCAyMDksIDE2NCwgMTYsIAorICAgIDM1LCAyNDQsIDEzMywgMjA3LCAxNTQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwOSwgNTUsIDEzOSwgCisgICAgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIzOSwgMTQxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAKKyAgICAyNDAsIDIyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMTIsIDgyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAorICAgIDI0NCwgMTMzLCAyMTMsIDEwOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjQxLCAxNDAsIDEzOSwgMjA5LCAKKyAgICAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIyMiwgNjAsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgCisgICAgMTUxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE0NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKKyAgICAyNDQsIDEzMywgMjA3LCAxNDEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQyLCAxMzksIDIwOSwgCisgICAgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE0NywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAKKyAgICAxNDgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAorICAgIDI0NCwgMTMzLCAyMDcsIDE0NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNTAsIDEzOSwgMjA5LCAKKyAgICAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQ2LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDksIAorICAgIDUzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDksIDUyLCA1MSwgMjM4LCAyNDYsIDIzNywgMTYsIDM1LCAKKyAgICAyMDksIDkzLCAyNDUsIDE0MiwgMjM3LCA1MSwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIxNiwgMTUxLCAyNDEsIDE3OSwgCisgICAgMjM3LCAxNiwgMzUsIDI0MywgMjAzLCAyNTAsIDUwLCAyMDksIDkzLCAyNDgsIDE0MCwgMjM3LCAxNiwgMzUsIDIwMiwgMjI2LCAKKyAgICAyMzksIDE4MCwgMjM3LCAxNiwgMzUsIDIwNCwgMTAzLCAyMzcsIDE2LCAzNSwgMjQ1LCAyMTQsIDIzNywgMTYsIDM1LCAyMDksIAorICAgIDkzLCAyNTAsIDEwNSwgMjM3LCAxNiwgMzUsIDIzNiwgMTI3LCAyMDgsIDE2OSwgMjM3LCAxNiwgMzUsIDUsIDIwOSwgMjMxLCAKKyAgICAyMzcsIDE2LCAzNSwgMjA4LCA5NywgMjM3LCAxNiwgMzUsIDIxOSwgMzIsIDIzNywgMTYsIDM1LCAyMTEsIDk2LCAyMzcsIAorICAgIDE2LCAzNSwgMjQwLCA0NCwgMjM3LCAxNiwgMzUsIDIzNywgMjQ5LCAyMTgsIDMyLCAyMzcsIDE2LCAzNSwgMjI0LCA3NSwgCisgICAgMjM3LCAxNiwgMzUsIDI0MSwgNjQsIDIzNywgMTYsIDM1LCAyMzksIDE4MSwgMjM3LCAxNiwgMzUsIDIwMywgMjM2LCAyMjAsIAorICAgIDMyLCAyMDksIDkzLCAyNDQsIDcxLCAyMzcsIDE2LCAzNSwgMjUwLCAxNTQsIDIzNywgMTYsIDM1LCAyNDUsIDE5MywgMjM3LCAKKyAgICAxNiwgMzUsIDI0OCwgNDksIDIwOSwgMjQsIDIzNywgMTYsIDM1LCAyMzgsIDEzLCAyMzcsIDE2LCAzNSwgMjExLCAxOTIsIAorICAgIDI1MCwgMTczLCAyMzcsIDE2LCAzNSwgMjE2LCA3NywgMjM3LCAxNiwgMzUsIDIzMSwgMTIsIDIzNywgMTYsIDM1LCAyMzcsIAorICAgIDI0OSwgMjA5LCAyMzEsIDIzNywgMTYsIDM1LCAyMjQsIDgsIDI0NSwgMTY0LCAyMzcsIDE2LCAzNSwgMjM3LCAyNDksIDIxNywgCisgICAgMjQ0LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjUxLCAxNDMsIDIwNCwgODAsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyNDYsIAorICAgIDI0LCAyMzksIDI0OSwgMjM3LCAxNiwgMzUsIDIzMSwgMjYsIDIzNywgMTYsIDM1LCAyNDIsIDIwLCAyMzcsIDE2LCAzNSwgCisgICAgMjE2LCA4MCwgMjM3LCAxNiwgMzUsIDIzNywgMjQ5LCAyMTgsIDE2LCAyMzcsIDE2LCAzNSwgMjE3LCAyMjEsIDIzNywgMTYsIAorICAgIDM1LCAyNDQsIDE0OSwgNzYsIDIwOSwgOTMsIDIyNywgMTM0LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjQwLCA4MiwgMjM3LCAKKyAgICAxNiwgMzUsIDIxOSwgMjUwLCAyMzcsIDE2LCAzNSwgMjIwLCA4NSwgMjM3LCAxNiwgMzUsIDI0NCwgNDIsIDIzNywgMTYsIAorICAgIDM1LCAyNDQsIDYzLCAyMzcsIDE2LCAzNSwgMjMxLCA0MCwgMjM3LCAxNiwgMzUsIDI0NywgMjE3LCAyMzcsIDE2LCAzNSwgCisgICAgMjQ1LCAyMzUsIDIwOCwgMTczLCAyMjUsIDMsIDIzNywgMTYsIDM1LCAyMzgsIDIxNSwgMjA4LCAxNjksIDIzNywgMTYsIDM1LCAKKyAgICAyMTcsIDE2MywgMjA2LCAyMTMsIDIzNywgMTYsIDM1LCAyMTksIDI0OSwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIwNCwgNTAsIAorICAgIDIzNywgMTYsIDM1LCAyMTYsIDY4LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjQ3LCAxMiwgMjM3LCAxNiwgMzUsIDIwOSwgCisgICAgOTMsIDI1MCwgMTAxLCAyMDksIDE4LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjI5LCAxOTUsIDIxMSwgNjgsIDIyNCwgMTIsIAorICAgIDIzNywgMTYsIDM1LCAyNDQsIDksIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMjUsIDg1LCAyMjUsIDEzOSwgMjM3LCAxNiwgCisgICAgMzUsIDI1MSwgMTQ0LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjA0LCA5NiwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIzOCwgCisgICAgMTczLCAyMDQsIDE2LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjMwLCA4NCwgMjI4LCAzMywgMjM3LCAxNiwgMzUsIDI0MywgCisgICAgMTUzLCAyMzcsIDE2LCAzNSwgMjI3LCAxMjEsIDIzNywgMTYsIDM1LCAyMzEsIDE1LCAyMDgsIDI0LCAyMzcsIDE2LCAzNSwgCisgICAgNSwgMjE3LCAyNDQsIDIzNywgMTYsIDM1LCAyNTEsIDgyLCAyNDUsIDIyNiwgMjM3LCAxNiwgMzUsIDI0OCwgMTQzLCAyNDUsIAorICAgIDIyNiwgMTEsIDQsIDIzMCwgMjAxLCAxMSwgNCwgMjMwLCAxOTMsIDExLCA0LCA3NSwgMTEsIDQsIDIzMCwgMjI3LCAxMSwgNCwgCisgICAgMjMxLCAxMDgsIDExLCA0LCAyMzEsIDkxLCAxMSwgNCwgMjMxLCAxMTAsIDExLCA0LCAyMzEsIDEwOSwgMTEsIDQsIDI1MCwgCisgICAgNDksIDExLCA0LCAyNTAsIDEwLCAxMSwgNCwgNjMsIDExLCA0LCAyNTAsIDE3NSwgMTEsIDQsIDIwNiwgMjI1LCAxMSwgNCwgCisgICAgMjA2LCAyMjgsIDExLCA0LCAyMDYsIDIyNiwgMTEsIDQsIDIxOSwgMjI0LCAxMSwgNCwgMjE5LCAxOTMsIDExLCA0LCA3OCwgCisgICAgMTEsIDQsIDIyMCwgOSwgMTEsIDQsIDI0MCwgMjE3LCAxMSwgNCwgNzQsIDExLCA0LCAyMDMsIDIxNywgMTEsIDQsIDI0OCwgCisgICAgNTEsIDExLCA0LCAyNDgsIDQ3LCAxMSwgNCwgMjQ4LCA4NiwgMTEsIDQsIDI0OCwgNjEsIDExLCA0LCAyNDgsIDc1LCAxMSwgCisgICAgNCwgMjQ4LCA3NCwgMTEsIDQsIDI0OCwgNzcsIDExLCA0LCAyNDgsIDc2LCAxMSwgNCwgMjQ4LCAyMDksIDExLCA0LCAyNDgsIAorICAgIDIwMSwgMTEsIDQsIDI0OSwgMzIsIDExLCA0LCAyNDgsIDIzMiwgMTEsIDQsIDI0NywgMTYzLCAxMSwgNCwgMjQ3LCAxNjcsIAorICAgIDExLCA0LCAyNDcsIDE2NCwgMTEsIDQsIDI0NywgMjUyLCAxMSwgNCwgMjQ3LCAyMzMsIDExLCA0LCAyNDgsIDIzLCAxMSwgNCwgCisgICAgMjQ4LCAyLCAxMSwgNCwgMjQ4LCAxMDEsIDExLCA0LCAyNDgsIDE2MiwgMTEsIDQsIDI0OCwgMTEzLCAxMSwgNCwgMjQ3LCAKKyAgICAxNDcsIDExLCA0LCAyNDcsIDE0MywgMTEsIDQsIDI0NywgMTkzLCAxMSwgNCwgMjQ3LCAxNjIsIDExLCA0LCAyNDcsIDE1NSwgCisgICAgMTEsIDQsIDI0NywgMTYwLCAxMSwgNCwgMjQ3LCAxMzEsIDExLCA0LCAyNDcsIDEyOSwgMTEsIDQsIDI0NywgMTM2LCAxMSwgCisgICAgNCwgMjQ3LCAxMzQsIDExLCA0LCAyNDcsIDEzMiwgMTEsIDQsIDI0NywgMTMzLCAxMSwgNCwgMjE4LCAxMDUsIDExLCA0LCAKKyAgICAyMTgsIDEwMSwgMTEsIDQsIDIxOCwgMTY3LCAxMSwgNCwgMjE4LCAxMTcsIDExLCA0LCAyMTgsIDEzMywgMTEsIDQsIDIxOCwgCisgICAgMTYwLCAxMSwgNCwgMjE4LCAxNTYsIDExLCA0LCAyMTksIDU1LCAxMSwgNCwgMjE5LCA0NCwgMTEsIDQsIDE4NSwgMTEsIDQsIAorICAgIDIxOSwgOTYsIDExLCA0LCAyMTcsIDE3MywgMTEsIDQsIDIxNywgMTc1LCAxMSwgNCwgMjE3LCAxNzQsIDExLCA0LCAyMTgsIAorICAgIDI1LCAxMSwgNCwgMjE4LCAxNCwgMTEsIDQsIDIxOCwgNjksIDExLCA0LCAyMTgsIDQxLCAxMSwgNCwgMjE3LCAxNTksIDExLCAKKyAgICA0LCAyMTcsIDE1NSwgMTEsIDQsIDIxNywgMTkxLCAxMSwgNCwgMjE3LCAxNzIsIDExLCA0LCAyMTcsIDE2NCwgMTEsIDQsIAorICAgIDIxNywgMTcwLCAxMSwgNCwgMjE3LCAxMzgsIDExLCA0LCAyMTcsIDEzNywgMTEsIDQsIDIxNywgMTQyLCAxMSwgNCwgMjE3LCAKKyAgICAxNDEsIDExLCA0LCAyMTcsIDEzOSwgMTEsIDQsIDIxNywgMTQwLCAxMSwgNCwgMjQ4LCAxODMsIDExLCA0LCAyNDgsIDE4MiwgCisgICAgMTEsIDQsIDI0OCwgMTg5LCAxMSwgNCwgMjQ4LCAxODQsIDExLCA0LCAyNDgsIDE4NiwgMTEsIDQsIDI0OCwgMTg1LCAxMSwgCisgICAgNCwgMjQ4LCAxODgsIDExLCA0LCAyNDgsIDE4NywgMTEsIDQsIDI0OCwgMTk1LCAxMSwgNCwgMjQ4LCAxOTQsIDExLCA0LCAKKyAgICAyNDgsIDE5OCwgMTEsIDQsIDI0OCwgMTk2LCAxMSwgNCwgMjQ4LCAxNzQsIDExLCA0LCAyNDgsIDE3NiwgMTEsIDQsIDI0OCwgCisgICAgMTc1LCAxMSwgNCwgMjQ4LCAxNzksIDExLCA0LCAyNDgsIDE3OCwgMTEsIDQsIDI0OCwgMTgxLCAxMSwgNCwgMjQ4LCAxODAsIAorICAgIDExLCA0LCAyNDgsIDE5MCwgMTEsIDQsIDI0OCwgMTkzLCAxMSwgNCwgMjQ4LCAxOTEsIDExLCA0LCAyNDgsIDE3MCwgMTEsIAorICAgIDQsIDI0OCwgMTY5LCAxMSwgNCwgMjQ4LCAxNzcsIDExLCA0LCAyNDgsIDE3MywgMTEsIDQsIDI0OCwgMTcxLCAxMSwgNCwgCisgICAgMjQ4LCAxNzIsIDExLCA0LCAyNDgsIDE2NiwgMTEsIDQsIDI0OCwgMTY1LCAxMSwgNCwgMjQ4LCAxNjgsIDExLCA0LCAyNDgsIAorICAgIDE2NywgMTEsIDQsIDIyMywgNDcsIDExLCA0LCAyMjMsIDQ2LCAxMSwgNCwgMjIzLCA1MiwgMTEsIDQsIDIyMywgNDgsIDExLCAKKyAgICA0LCAyMjMsIDQ5LCAxMSwgNCwgMjIzLCA1MSwgMTEsIDQsIDIyMywgNTAsIDExLCA0LCAyMjMsIDU1LCAxMSwgNCwgMjIzLCAKKyAgICA1NCwgMTEsIDQsIDIyMywgNTcsIDExLCA0LCAyMjMsIDU2LCAxMSwgNCwgMjIzLCA0MywgMTEsIDQsIDIyMywgNDIsIDExLCAKKyAgICA0LCAyMjMsIDQ1LCAxMSwgNCwgMjIzLCA0NCwgMTEsIDQsIDIyMywgMzYsIDExLCA0LCAyMjMsIDM1LCAxMSwgNCwgMjIzLCAKKyAgICA0MCwgMTEsIDQsIDIyMywgMzksIDExLCA0LCAyMjMsIDM3LCAxMSwgNCwgMjIzLCAzOCwgMTEsIDQsIDIyMywgMzAsIDExLCAKKyAgICA0LCAyMjMsIDI5LCAxMSwgNCwgMjIzLCAzNCwgMTEsIDQsIDIyMywgMzMsIDExLCA0LCAyMjMsIDMxLCAxMSwgNCwgMjIzLCAKKyAgICAzMiwgMTEsIDQsIDIzNiwgMTgwLCAxMSwgNCwgMjM2LCAxNzksIDExLCA0LCAyMzYsIDE4NSwgMTEsIDQsIDIzNiwgMTgxLCAKKyAgICAxMSwgNCwgMjM2LCAxODIsIDExLCA0LCAyMzYsIDE4NCwgMTEsIDQsIDIzNiwgMTgzLCAxMSwgNCwgMjM2LCAxODgsIDExLCAKKyAgICA0LCAyMzYsIDE4NywgMTEsIDQsIDIzNiwgMTkwLCAxMSwgNCwgMjM2LCAxODksIDExLCA0LCAyMzYsIDE3MSwgMTEsIDQsIAorICAgIDIzNiwgMTczLCAxMSwgNCwgMjM2LCAxNzIsIDExLCA0LCAyMzYsIDE3NiwgMTEsIDQsIDIzNiwgMTc1LCAxMSwgNCwgMjM2LCAKKyAgICAxNzgsIDExLCA0LCAyMzYsIDE3NywgMTEsIDQsIDIzNiwgMTY3LCAxMSwgNCwgMjM2LCAxNjYsIDExLCA0LCAyMzYsIDE3NCwgCisgICAgMTEsIDQsIDIzNiwgMTcwLCAxMSwgNCwgMjM2LCAxNjgsIDExLCA0LCAyMzYsIDE2OSwgMTEsIDQsIDIzNiwgMTYxLCAxMSwgCisgICAgNCwgMjM2LCAxNjUsIDExLCA0LCAyMzYsIDE2NCwgMTEsIDQsIDIzNiwgMTYyLCAxMSwgNCwgMjM2LCAxNjMsIDExLCA0LCAKKyAgICAyMjQsIDkzLCAxMSwgNCwgMjI0LCA5MiwgMTEsIDQsIDIyNCwgMTU1LCAxMSwgNCwgMjI0LCA5OSwgMTEsIDQsIDIyNCwgCisgICAgMTI3LCAxMSwgNCwgMjI0LCAxNDUsIDExLCA0LCAyMjQsIDE0MywgMTEsIDQsIDIyNSwgNzEsIDExLCA0LCAyMjUsIDY2LCAKKyAgICAxMSwgNCwgMTkyLCAxMSwgNCwgMjI1LCAxMDYsIDExLCA0LCAyMjMsIDIxMywgMTEsIDQsIDIyMywgMjEyLCAxMSwgNCwgCisgICAgMjIzLCAyMTYsIDExLCA0LCAyMjMsIDIxNCwgMTEsIDQsIDIyNCwgMjEsIDExLCA0LCAyMjMsIDI1MiwgMTEsIDQsIDIyNCwgCisgICAgODIsIDExLCA0LCAyMjQsIDI3LCAxMSwgNCwgMjI0LCAyMDcsIDExLCA0LCAyMjUsIDIwLCAxMSwgNCwgMjIzLCAxOTMsIDExLCAKKyAgICA0LCAyMjMsIDE4OSwgMTEsIDQsIDIyMywgMjQ2LCAxMSwgNCwgMjIzLCAyMDksIDExLCA0LCAyMjMsIDIwMiwgMTEsIDQsIAorICAgIDIyMywgMjA3LCAxMSwgNCwgMjIzLCAxNjYsIDExLCA0LCAyMjMsIDE2NSwgMTEsIDQsIDIyMywgMTcxLCAxMSwgNCwgMjIzLCAKKyAgICAxNjgsIDExLCA0LCAyMzksIDIzNiwgMTEsIDQsIDIzOSwgMjMwLCAxMSwgNCwgMjQwLCAyNiwgMTEsIDQsIDIzOSwgMjUxLCAKKyAgICAxMSwgNCwgMjQwLCA3MywgMTEsIDQsIDI0MCwgNjQsIDExLCA0LCAyNDAsIDEwOCwgMTEsIDQsIDI0MCwgNzgsIDExLCA0LCAKKyAgICAyMzksIDEzOSwgMTEsIDQsIDIzOSwgMTg2LCAxMSwgNCwgMjM5LCAxNjcsIDExLCA0LCAyMzksIDkxLCAxMSwgNCwgMjM5LCAKKyAgICA5MCwgMTEsIDQsIDIzOSwgMTA4LCAxMSwgNCwgMjM5LCA5NiwgMTEsIDQsIDIzOSwgOTQsIDExLCA0LCAyMzksIDk1LCAxMSwgCisgICAgNCwgMjM5LCA3OCwgMTEsIDQsIDIzOSwgNzcsIDExLCA0LCAyMzksIDgxLCAxMSwgNCwgMjM5LCA3OSwgMTEsIDQsIDIwNSwgCisgICAgMTk2LCAxMSwgNCwgMjA1LCAxOTEsIDExLCA0LCAyMDUsIDIzMCwgMTEsIDQsIDIwNSwgMjA1LCAxMSwgNCwgMjA1LCAyMTksIAorICAgIDExLCA0LCAyMDUsIDIxNiwgMTEsIDQsIDIwNSwgMjIyLCAxMSwgNCwgMjA1LCAyMjEsIDExLCA0LCAyMDYsIDYzLCAxMSwgNCwgCisgICAgMjA2LCA1OCwgMTEsIDQsIDIwNiwgODYsIDExLCA0LCAyMDYsIDc1LCAxMSwgNCwgMjA1LCAxNzIsIDExLCA0LCAyMDUsIAorICAgIDE2OCwgMTEsIDQsIDIwNSwgMTg5LCAxMSwgNCwgMjA1LCAxNzQsIDExLCA0LCAyMDUsIDIzMywgMTEsIDQsIDIwNiwgNDQsIAorICAgIDExLCA0LCAyMDQsIDE1NywgMTEsIDQsIDIwNCwgMTU1LCAxMSwgNCwgMjA0LCAxNjMsIDExLCA0LCAyMDQsIDE2MCwgMTEsIAorICAgIDQsIDIwNCwgMTU4LCAxMSwgNCwgMjA0LCAxNTksIDExLCA0LCAyMDQsIDE0OCwgMTEsIDQsIDIwNCwgMTQ3LCAxMSwgNCwgCisgICAgMjA0LCAxNTIsIDExLCA0LCAyMDQsIDE1MSwgMTEsIDQsIDIwNCwgMTQ5LCAxMSwgNCwgMjA0LCAxNTAsIDExLCA0LCAyNDMsIAorICAgIDE0NywgMTEsIDQsIDI0MywgMTM0LCAxMSwgNCwgMjQzLCAyMzMsIDExLCA0LCAyNDMsIDE3MywgMTEsIDQsIDI0MywgMjA4LCAKKyAgICAxMSwgNCwgMjQzLCAyMTMsIDExLCA0LCAyNDMsIDIxMiwgMTEsIDQsIDI0NCwgMTQwLCAxMSwgNCwgMjQ0LCAxMzQsIDExLCAKKyAgICA0LCAyNDQsIDIxMiwgMTEsIDQsIDI0NCwgMTYwLCAxMSwgNCwgMjQyLCAyNSwgMTEsIDQsIDI0MiwgMjYsIDExLCA0LCAyNDMsIAorICAgIDg1LCAxMSwgNCwgMjQyLCA2NywgMTEsIDQsIDI0MywgMTEzLCAxMSwgNCwgMjQzLCA4NywgMTEsIDQsIDI0NCwgNywgMTEsIAorICAgIDQsIDI0NCwgNzUsIDExLCA0LCAyNDQsIDI4LCAxMSwgNCwgMjQyLCAxNiwgMTEsIDQsIDI0MiwgMTQsIDExLCA0LCAyNDIsIAorICAgIDQyLCAxMSwgNCwgMjQyLCAyNCwgMTEsIDQsIDI0MiwgMTksIDExLCA0LCAyNDIsIDIyLCAxMSwgNCwgMjA4LCAyMDAsIDExLCAKKyAgICA0LCAyMDgsIDE5MiwgMTEsIDQsIDIwOSwgMiwgMTEsIDQsIDIwOCwgMjEwLCAxMSwgNCwgMjA4LCAyNDgsIDExLCA0LCAyMDgsIAorICAgIDI1MCwgMTEsIDQsIDIwOCwgMjQ5LCAxMSwgNCwgMjA5LCAyMTIsIDExLCA0LCAyMDksIDE5OCwgMTEsIDQsIDIxMCwgMjIsIAorICAgIDExLCA0LCAyMDksIDIyMiwgMTEsIDQsIDIwNywgMTg1LCAxMSwgNCwgMjA3LCAxODQsIDExLCA0LCAyMDcsIDE4NywgMTEsIAorICAgIDQsIDIwNywgMTg2LCAxMSwgNCwgMjA4LCAxMzEsIDExLCA0LCAyMDgsIDEyMSwgMTEsIDQsIDEzNSwgMTEsIDQsIDIwOCwgCisgICAgMTQ0LCAxMSwgNCwgMjA5LCAxMTQsIDExLCA0LCAyMDksIDE4NywgMTEsIDQsIDIwOSwgMTM5LCAxMSwgNCwgMjA3LCAxNjgsIAorICAgIDExLCA0LCAyMDcsIDE2MywgMTEsIDQsIDIwNywgMjAzLCAxMSwgNCwgMjA3LCAxODMsIDExLCA0LCAyMDcsIDE2OSwgMTEsIAorICAgIDQsIDIwNywgMTgxLCAxMSwgNCwgMjQ0LCA5MiwgMTEsIDQsIDI0NCwgOTEsIDExLCA0LCAyNDQsIDk3LCAxMSwgNCwgMjQ0LCAKKyAgICA5MywgMTEsIDQsIDI0NCwgOTQsIDExLCA0LCAyNDQsIDk2LCAxMSwgNCwgMjQ0LCA5NSwgMTEsIDQsIDI0NCwgMTEzLCAxMSwgCisgICAgNCwgMjQ0LCAxMTIsIDExLCA0LCAyNDQsIDEyMCwgMTEsIDQsIDI0NCwgMTE0LCAxMSwgNCwgMjQ0LCA4MiwgMTEsIDQsIAorICAgIDI0NCwgODQsIDExLCA0LCAyNDQsIDgzLCAxMSwgNCwgMjQ0LCA4NywgMTEsIDQsIDI0NCwgODYsIDExLCA0LCAyNDQsIDkwLCAKKyAgICAxMSwgNCwgMjQ0LCA4OCwgMTEsIDQsIDI0NCwgMTA1LCAxMSwgNCwgMjQ0LCAxMDgsIDExLCA0LCAyNDQsIDEwNiwgMTEsIDQsIAorICAgIDI0NCwgNzgsIDExLCA0LCAyNDQsIDc3LCAxMSwgNCwgMjQ0LCA4NSwgMTEsIDQsIDI0NCwgODEsIDExLCA0LCAyNDQsIDc5LCAKKyAgICAxMSwgNCwgMjQ0LCA4MCwgMTEsIDQsIDIyMywgMywgMTEsIDQsIDIyMywgMiwgMTEsIDQsIDIyMywgMTAsIDExLCA0LCAyMjMsIAorICAgIDUsIDExLCA0LCAyMjMsIDYsIDExLCA0LCAyMjMsIDcsIDExLCA0LCAyMjMsIDE5LCAxMSwgNCwgMjIzLCAxOCwgMTEsIDQsIAorICAgIDIyMywgMjUsIDExLCA0LCAyMjMsIDIwLCAxMSwgNCwgMjIyLCAyNTEsIDExLCA0LCAyMjIsIDI1MCwgMTEsIDQsIDIyMywgMSwgCisgICAgMTEsIDQsIDIyMiwgMjUyLCAxMSwgNCwgMjIzLCAxMSwgMTEsIDQsIDIyMywgMTcsIDExLCA0LCAyMjMsIDE1LCAxMSwgNCwgCisgICAgMjIyLCAyNDMsIDExLCA0LCAyMjIsIDI0MiwgMTEsIDQsIDIyMiwgMjQ4LCAxMSwgNCwgMjIyLCAyNDYsIDExLCA0LCAyMjIsIAorICAgIDI0NCwgMTEsIDQsIDIyMiwgMjQ1LCAxMSwgNCwgMjM2LCAxNDYsIDExLCA0LCAyMzYsIDE0NSwgMTEsIDQsIDIzNiwgMTUyLCAKKyAgICAxMSwgNCwgMjM2LCAxNDcsIDExLCA0LCAyMzYsIDE0OSwgMTEsIDQsIDIzNiwgMTQ4LCAxMSwgNCwgMjM2LCAxNTEsIDExLCAKKyAgICA0LCAyMzYsIDE1MCwgMTEsIDQsIDIzNiwgMTU4LCAxMSwgNCwgMjM2LCAxNTYsIDExLCA0LCAyMzYsIDE2MCwgMTEsIDQsIAorICAgIDIzNiwgMTU5LCAxMSwgNCwgMjM2LCAxMzksIDExLCA0LCAyMzYsIDE0MCwgMTEsIDQsIDIzNiwgMTQzLCAxMSwgNCwgMjM2LCAKKyAgICAxNDIsIDExLCA0LCAyMzYsIDE0NCwgMTEsIDQsIDIzNiwgMTUzLCAxMSwgNCwgMjM2LCAxNTUsIDExLCA0LCAyMzYsIDE1NCwgCisgICAgMTEsIDQsIDIzNiwgMTM4LCAxMSwgNCwgMjIyLCA1MiwgMTEsIDQsIDIyMiwgNTAsIDExLCA0LCAyMjIsIDEwMCwgMTEsIDQsIAorICAgIDIyMiwgNTUsIDExLCA0LCAyMjIsIDgyLCAxMSwgNCwgMjIyLCA5NiwgMTEsIDQsIDIyMiwgOTUsIDExLCA0LCAyMjMsIDYxLCAKKyAgICAxMSwgNCwgMjAxLCAyMDEsIDExLCA0LCAyMjMsIDc2LCAxMSwgNCwgMjIxLCAzMiwgMTEsIDQsIDIyMSwgMzQsIDExLCA0LCAKKyAgICAyMjEsIDMzLCAxMSwgNCwgMjIxLCAxNjUsIDExLCA0LCAyMjEsIDE1MCwgMTEsIDQsIDIyMSwgMTkxLCAxMSwgNCwgMjIxLCAKKyAgICAxNzYsIDExLCA0LCAyMjIsIDIwOSwgMTEsIDQsIDIyMiwgMjQwLCAxMSwgNCwgMjIyLCAyMjUsIDExLCA0LCAyMjEsIDI3LCAKKyAgICAxMSwgNCwgMjIxLCAyMywgMTEsIDQsIDIyMSwgODQsIDExLCA0LCAyMjEsIDMxLCAxMSwgNCwgMjIxLCAyOSwgMTEsIDQsIAorICAgIDIyMSwgMzAsIDExLCA0LCAyMzYsIDIxMSwgMTEsIDQsIDIzNiwgMjEwLCAxMSwgNCwgMjM2LCAyMTYsIDExLCA0LCAyMzYsIAorICAgIDIxMiwgMTEsIDQsIDIzNiwgMjEzLCAxMSwgNCwgMjM2LCAyMTUsIDExLCA0LCAyMzYsIDIxNCwgMTEsIDQsIDIzNiwgMjIyLCAKKyAgICAxMSwgNCwgMjM2LCAyMjAsIDExLCA0LCAyMzYsIDIyNCwgMTEsIDQsIDIzNiwgMjIzLCAxMSwgNCwgMjM2LCAyMDMsIDExLCAKKyAgICA0LCAyMzYsIDIwNSwgMTEsIDQsIDIzNiwgMjA0LCAxMSwgNCwgMjM2LCAyMDcsIDExLCA0LCAyMzYsIDIwOSwgMTEsIDQsIAorICAgIDIzNiwgMjA4LCAxMSwgNCwgMjM2LCAyMTcsIDExLCA0LCAyMzYsIDIxOSwgMTEsIDQsIDIzNiwgMjE4LCAxMSwgNCwgMjM2LCAKKyAgICAxOTksIDExLCA0LCAyMzYsIDE5OCwgMTEsIDQsIDIzNiwgMjA2LCAxMSwgNCwgMjM2LCAyMDIsIDExLCA0LCAyMzYsIDIwMCwgCisgICAgMTEsIDQsIDIzNiwgMjAxLCAxMSwgNCwgMjM2LCAxOTMsIDExLCA0LCAyMzYsIDE5MiwgMTEsIDQsIDIzNiwgMTk3LCAxMSwgCisgICAgNCwgMjM2LCAxOTYsIDExLCA0LCAyMzYsIDE5NCwgMTEsIDQsIDIzNiwgMTk1LCAxMSwgNCwgMjI3LCA5MCwgMTEsIDQsIAorICAgIDIyNywgODIsIDExLCA0LCAyMjcsIDE0OCwgMTEsIDQsIDIyNywgMTAwLCAxMSwgNCwgMjI3LCAxMzksIDExLCA0LCAyMjcsIAorICAgIDEzOCwgMTEsIDQsIDIyNywgMTQyLCAxMSwgNCwgMjI3LCAxNDAsIDExLCA0LCAyMjgsIDAsIDExLCA0LCAyMjcsIDI0NSwgCisgICAgMTEsIDQsIDIyOCwgMTEzLCAxMSwgNCwgMjI4LCAxMSwgMTEsIDQsIDIyNiwgMjE3LCAxMSwgNCwgMjI2LCAyMTYsIDExLCA0LCAKKyAgICAyMjYsIDIxOSwgMTEsIDQsIDIyNiwgMjE4LCAxMSwgNCwgMjI3LCA2LCAxMSwgNCwgMjI2LCAyNDgsIDExLCA0LCAyMjcsIAorICAgIDQ5LCAxMSwgNCwgMjI3LCAxMSwgMTEsIDQsIDIyNywgMTY1LCAxMSwgNCwgMjI3LCAyMzQsIDExLCA0LCAyMjcsIDE4MiwgCisgICAgMTEsIDQsIDIyNiwgMjExLCAxMSwgNCwgMjI2LCAyMDksIDExLCA0LCAyMjYsIDIzOSwgMTEsIDQsIDIyNiwgMjE1LCAxMSwgCisgICAgNCwgMjI2LCAyMTMsIDExLCA0LCAyMjYsIDIxNCwgMTEsIDQsIDIyNiwgMTkwLCAxMSwgNCwgMjI2LCAxODksIDExLCA0LCAKKyAgICAyMjYsIDE5OSwgMTEsIDQsIDIyNiwgMTkzLCAxMSwgNCwgMjI2LCAxOTEsIDExLCA0LCAyMjYsIDE5MiwgMTEsIDQsIDIzOCwgCisgICAgNTQsIDExLCA0LCAyMzgsIDUzLCAxMSwgNCwgMjM4LCA4MSwgMTEsIDQsIDIzOCwgNjUsIDExLCA0LCAyMzgsIDczLCAxMSwgCisgICAgNCwgMjM4LCA3MiwgMTEsIDQsIDIzOCwgNzUsIDExLCA0LCAyMzgsIDc0LCAxMSwgNCwgMjM4LCAyMTcsIDExLCA0LCAyMzgsIAorICAgIDIxMiwgMTEsIDQsIDIzOSwgOCwgMTEsIDQsIDIzOCwgMjI3LCAxMSwgNCwgMjM3LCAyMDUsIDExLCA0LCAyMzcsIDIwNCwgCisgICAgMTEsIDQsIDIzNywgMjA3LCAxMSwgNCwgMjM3LCAyMDYsIDExLCA0LCAyMzgsIDE4LCAxMSwgNCwgMjM4LCAxNiwgMTEsIDQsIAorICAgIDIzOCwgMzksIDExLCA0LCAyMzgsIDI2LCAxMSwgNCwgMjM4LCAxNTksIDExLCA0LCAyMzgsIDE1NywgMTEsIDQsIDIzOCwgCisgICAgMTkwLCAxMSwgNCwgMjM4LCAxNzAsIDExLCA0LCAyMzcsIDE5NCwgMTEsIDQsIDIzNywgMTkzLCAxMSwgNCwgMjM3LCAyMzAsIAorICAgIDExLCA0LCAyMzcsIDIwMywgMTEsIDQsIDIzNywgMTk1LCAxMSwgNCwgMjM3LCAyMDIsIDExLCA0LCAyMjksIDY0LCAxMSwgNCwgCisgICAgMjI5LCA2MSwgMTEsIDQsIDIyOSwgMTAwLCAxMSwgNCwgMjI5LCA3OCwgMTEsIDQsIDIyOSwgODksIDExLCA0LCAyMjksIDkzLCAKKyAgICAxMSwgNCwgMjI5LCA5MSwgMTEsIDQsIDIyOSwgMjI2LCAxMSwgNCwgMjI5LCAyMDksIDExLCA0LCAxNzMsIDExLCA0LCAyMjksIAorICAgIDI1MywgMTEsIDQsIDIyOCwgMTg3LCAxMSwgNCwgMjI4LCAxOTIsIDExLCA0LCAyMjgsIDE4OSwgMTEsIDQsIDIyOCwgMjUwLCAKKyAgICAxMSwgNCwgMjI4LCAyNDUsIDExLCA0LCAyMjksIDI2LCAxMSwgNCwgMjI5LCAxLCAxMSwgNCwgMjI5LCAxNzAsIDExLCA0LCAKKyAgICAyMjksIDE1MywgMTEsIDQsIDIyOSwgMjAxLCAxMSwgNCwgMjI5LCAxNzQsIDExLCA0LCAyMjgsIDE3NSwgMTEsIDQsIDIyOCwgCisgICAgMTcxLCAxMSwgNCwgMjI4LCAyMDksIDExLCA0LCAyMjgsIDE4NiwgMTEsIDQsIDIyOCwgMTc5LCAxMSwgNCwgMjI4LCAxODMsIAorICAgIDExLCA0LCAyMzgsIDE0MSwgMTEsIDQsIDIzOCwgMTQwLCAxMSwgNCwgMjM4LCAxNDUsIDExLCA0LCAyMzgsIDE0MiwgMTEsIAorICAgIDQsIDIzOCwgMTQ0LCAxMSwgNCwgMjM4LCAxNDMsIDExLCA0LCAyMzgsIDE1MiwgMTEsIDQsIDIzOCwgMTUxLCAxMSwgNCwgCisgICAgMjM4LCAxNTUsIDExLCA0LCAyMzgsIDE1MywgMTEsIDQsIDIzOCwgMTMyLCAxMSwgNCwgMjM4LCAxMzEsIDExLCA0LCAyMzgsIAorICAgIDEzNCwgMTEsIDQsIDIzOCwgMTMzLCAxMSwgNCwgMjM4LCAxMzcsIDExLCA0LCAyMzgsIDEzNiwgMTEsIDQsIDIzOCwgMTM5LCAKKyAgICAxMSwgNCwgMjM4LCAxMzgsIDExLCA0LCAyMzgsIDE0NywgMTEsIDQsIDIzOCwgMTQ2LCAxMSwgNCwgMjM4LCAxNTAsIDExLCAKKyAgICA0LCAyMzgsIDE0OCwgMTEsIDQsIDIzOCwgMTI3LCAxMSwgNCwgMjM4LCAxMjYsIDExLCA0LCAyMzgsIDEzNSwgMTEsIDQsIAorICAgIDIzOCwgMTMwLCAxMSwgNCwgMjM4LCAxMjgsIDExLCA0LCAyMzgsIDEyOSwgMTEsIDQsIDIyNCwgMTc0LCAxMSwgNCwgMjI0LCAKKyAgICAxNzUsIDExLCA0LCAyMjQsIDE5MywgMTEsIDQsIDIyNCwgMTkyLCAxMSwgNCwgMjI0LCAxOTUsIDExLCA0LCAyMjQsIDE5NCwgCisgICAgMTEsIDQsIDIyNCwgMTY1LCAxMSwgNCwgMjI0LCAxNjcsIDExLCA0LCAyMjQsIDE2NiwgMTEsIDQsIDIyNCwgMTcwLCAxMSwgCisgICAgNCwgMjI0LCAxNjksIDExLCA0LCAyMjQsIDE3MiwgMTEsIDQsIDIyNCwgMTcxLCAxMSwgNCwgMjI0LCAxNzYsIDExLCA0LCAKKyAgICAyMjQsIDE3OCwgMTEsIDQsIDIyNCwgMTc3LCAxMSwgNCwgMjI0LCAxNjEsIDExLCA0LCAyMjQsIDE2MCwgMTEsIDQsIDIyNCwgCisgICAgMTY4LCAxMSwgNCwgMjI0LCAxNjQsIDExLCA0LCAyMjQsIDE2MiwgMTEsIDQsIDIyNCwgMTYzLCAxMSwgNCwgMjM1LCAyMzMsIAorICAgIDExLCA0LCAyMzUsIDIzMiwgMTEsIDQsIDIzNSwgMjM5LCAxMSwgNCwgMjM1LCAyMzQsIDExLCA0LCAyMzUsIDIzNiwgMTEsIAorICAgIDQsIDIzNSwgMjM1LCAxMSwgNCwgMjM1LCAyMzgsIDExLCA0LCAyMzUsIDIzNywgMTEsIDQsIDIzNSwgMjQ0LCAxMSwgNCwgCisgICAgMjM1LCAyNDMsIDExLCA0LCAyMzUsIDI0NiwgMTEsIDQsIDIzNSwgMjQ1LCAxMSwgNCwgMjM1LCAyMjUsIDExLCA0LCAyMzUsIAorICAgIDIyNCwgMTEsIDQsIDIzNSwgMjI3LCAxMSwgNCwgMjM1LCAyMjYsIDExLCA0LCAyMzUsIDIyOSwgMTEsIDQsIDIzNSwgMjI4LCAKKyAgICAxMSwgNCwgMjM1LCAyMzEsIDExLCA0LCAyMzUsIDIzMCwgMTEsIDQsIDIzNSwgMjQwLCAxMSwgNCwgMjM1LCAyNDIsIDExLCAKKyAgICA0LCAyMzUsIDI0MSwgMTEsIDQsIDIyMiwgMTQ4LCAxMSwgNCwgMjIyLCAxNTAsIDExLCA0LCAyMjIsIDE0OSwgMTEsIDQsIAorICAgIDIyMiwgMTkzLCAxMSwgNCwgMjIyLCAxOTEsIDExLCA0LCAyMjIsIDIwMywgMTEsIDQsIDIyMiwgMTk2LCAxMSwgNCwgMjIyLCAKKyAgICAxMTAsIDExLCA0LCAyMjIsIDEwOSwgMTEsIDQsIDIyMiwgMTExLCAxMSwgNCwgMjIyLCAxMjAsIDExLCA0LCAyMjIsIDExNywgCisgICAgMTEsIDQsIDIyMiwgMTI4LCAxMSwgNCwgMjIyLCAxMjIsIDExLCA0LCAyMjIsIDE4NCwgMTEsIDQsIDIyMiwgMTkwLCAxMSwgCisgICAgNCwgMjIyLCAxODYsIDExLCA0LCAyMzYsIDIzMCwgMTEsIDQsIDIzNiwgMjQ1LCAxMSwgNCwgMjM2LCAyNTQsIDExLCA0LCAKKyAgICAyMzcsIDgzLCAxMSwgNCwgMjM3LCA3MiwgMTEsIDQsIDE1MiwgMTEsIDQsIDIzNywgOTQsIDExLCA0LCAyMzYsIDYsIDExLCAKKyAgICA0LCAyMzYsIDUsIDExLCA0LCAyMzYsIDgsIDExLCA0LCAyMzYsIDcsIDExLCA0LCAyMzYsIDQ2LCAxMSwgNCwgMjM2LCAzNywgCisgICAgMTEsIDQsIDIzNiwgMTM2LCAxMSwgNCwgMjM2LCAxMDksIDExLCA0LCAyMzcsIDE4LCAxMSwgNCwgMjM3LCA2NywgMTEsIDQsIAorICAgIDIzNywgMzAsIDExLCA0LCAyMDQsIDgzLCAxMSwgNCwgMjA0LCA2OCwgMTEsIDQsIDIwNCwgMTExLCAxMSwgNCwgMjA0LCA5MywgCisgICAgMTEsIDQsIDIwMywgMjA2LCAxMSwgNCwgMjAzLCAyMDgsIDExLCA0LCAyMDMsIDIwNywgMTEsIDQsIDIwMywgMjI5LCAxMSwgCisgICAgNCwgMjA0LCAwLCAxMSwgNCwgMjAzLCAyMzksIDExLCA0LCAyMDQsIDQyLCAxMSwgNCwgMjA0LCA2MiwgMTEsIDQsIDIwNCwgCisgICAgNDcsIDExLCA0LCAyMDIsIDI0LCAxMSwgNCwgMjAyLCAyMywgMTEsIDQsIDIwMiwgMzksIDExLCA0LCAyMDIsIDI3LCAxMSwgCisgICAgNCwgMjAyLCAzMiwgMTEsIDQsIDIwMiwgMzQsIDExLCA0LCAyMDIsIDMzLCAxMSwgNCwgMjAyLCAxMDAsIDExLCA0LCAyMDIsIAorICAgIDk3LCAxMSwgNCwgMjAyLCAxMTYsIDExLCA0LCAyMDIsIDEwNCwgMTEsIDQsIDIwMSwgMjU1LCAxMSwgNCwgMjAyLCAxLCAxMSwgCisgICAgNCwgMjAyLCAwLCAxMSwgNCwgMjAyLCAxMywgMTEsIDQsIDIwMiwgMTIsIDExLCA0LCAyMDIsIDE3LCAxMSwgNCwgMjAyLCAKKyAgICAxNCwgMTEsIDQsIDIwMiwgODIsIDExLCA0LCAyMDIsIDkyLCAxMSwgNCwgMjAyLCA4NiwgMTEsIDQsIDIwMSwgMjUxLCAxMSwgCisgICAgNCwgMjAxLCAyNTAsIDExLCA0LCAyMDIsIDYsIDExLCA0LCAyMDEsIDI1NCwgMTEsIDQsIDIwMSwgMjUyLCAxMSwgNCwgMjAxLCAKKyAgICAyNTMsIDExLCA0LCAyMDEsIDIzNywgMTEsIDQsIDIwMSwgMjM2LCAxMSwgNCwgMjAxLCAyNDIsIDExLCA0LCAyMDEsIDI0MCwgCisgICAgMTEsIDQsIDIwMSwgMjM4LCAxMSwgNCwgMjAxLCAyMzksIDExLCA0LCAyNDYsIDUwLCAxMSwgNCwgMjQ2LCA0MywgMTEsIDQsIAorICAgIDI0NiwgNzksIDExLCA0LCAyNDYsIDYzLCAxMSwgNCwgMjQ2LCA3NiwgMTEsIDQsIDI0NiwgNzAsIDExLCA0LCAyNDYsIDc4LCAKKyAgICAxMSwgNCwgMjQ2LCA3NywgMTEsIDQsIDI0NywgMTcsIDExLCA0LCAyNDcsIDksIDExLCA0LCAyNDcsIDkyLCAxMSwgNCwgCisgICAgMjQ3LCA0OCwgMTEsIDQsIDI0NSwgMTAxLCAxMSwgNCwgMjQ1LCAxMDMsIDExLCA0LCAyNDUsIDEwMiwgMTEsIDQsIDI0NSwgCisgICAgMTU4LCAxMSwgNCwgMjQ1LCAxNDgsIDExLCA0LCAyNDUsIDI1NCwgMTEsIDQsIDI0NSwgMTc1LCAxMSwgNCwgMjQ2LCAyMDIsIAorICAgIDExLCA0LCAyNDYsIDIzOCwgMTEsIDQsIDI0NiwgMjA3LCAxMSwgNCwgMjQ1LCA3NywgMTEsIDQsIDI0NSwgNzUsIDExLCA0LCAKKyAgICAyNDUsIDExMCwgMTEsIDQsIDI0NSwgOTksIDExLCA0LCAyNDUsIDgzLCAxMSwgNCwgMjQ1LCA5NiwgMTEsIDQsIDI0NSwgNTQsIAorICAgIDExLCA0LCAyNDUsIDUzLCAxMSwgNCwgMjQ1LCA2NiwgMTEsIDQsIDI0NSwgNjAsIDExLCA0LCAyNDUsIDU1LCAxMSwgNCwgCisgICAgMjQ1LCA1NywgMTEsIDQsIDIwMSwgMjIwLCAxMSwgNCwgMjAxLCAyMTksIDExLCA0LCAyMDEsIDIyNiwgMTEsIDQsIDIwMSwgCisgICAgMjIxLCAxMSwgNCwgMjAxLCAyMjMsIDExLCA0LCAyMDEsIDIyMiwgMTEsIDQsIDIwMSwgMjI1LCAxMSwgNCwgMjAxLCAyMjQsIAorICAgIDExLCA0LCAyMDEsIDIzMiwgMTEsIDQsIDIwMSwgMjMxLCAxMSwgNCwgMjAxLCAyMzUsIDExLCA0LCAyMDEsIDIzMywgMTEsIAorICAgIDQsIDIwMSwgMjE2LCAxMSwgNCwgMjAxLCAyMTgsIDExLCA0LCAyMDEsIDIxNywgMTEsIDQsIDIwMSwgMjI3LCAxMSwgNCwgCisgICAgMjAxLCAyMzAsIDExLCA0LCAyMDEsIDIyOCwgMTEsIDQsIDIwMSwgMjA5LCAxMSwgNCwgMjAxLCAyMTMsIDExLCA0LCAyMDEsIAorICAgIDIxMiwgMTEsIDQsIDIwMSwgMjEwLCAxMSwgNCwgMjAxLCAyMTEsIDExLCA0LCAyMDEsIDIwMywgMTEsIDQsIDIwMSwgMjAyLCAKKyAgICAxMSwgNCwgMjAxLCAyMDgsIDExLCA0LCAyMDEsIDIwNiwgMTEsIDQsIDIwMSwgMjA0LCAxMSwgNCwgMjAxLCAyMDUsIDExLCAKKyAgICA0LCAyMjAsIDIwMSwgMTEsIDQsIDIyMCwgMjAwLCAxMSwgNCwgMjIwLCAyMDYsIDExLCA0LCAyMjAsIDIwMiwgMTEsIDQsIAorICAgIDIyMCwgMjAzLCAxMSwgNCwgMjIwLCAyMDUsIDExLCA0LCAyMjAsIDIwNCwgMTEsIDQsIDIyMCwgMjExLCAxMSwgNCwgMjIwLCAKKyAgICAyMTAsIDExLCA0LCAyMjAsIDIxNCwgMTEsIDQsIDIyMCwgMjEzLCAxMSwgNCwgMjIwLCAxOTQsIDExLCA0LCAyMjAsIDE5NSwgCisgICAgMTEsIDQsIDIyMCwgMTk4LCAxMSwgNCwgMjIwLCAxOTksIDExLCA0LCAyMjAsIDIwNywgMTEsIDQsIDIyMCwgMjA5LCAxMSwgCisgICAgNCwgMjIwLCAxODksIDExLCA0LCAyMjAsIDE5NywgMTEsIDQsIDIyMCwgMTkzLCAxMSwgNCwgMjIwLCAxOTAsIDExLCA0LCAKKyAgICAyMjAsIDE5MSwgMTEsIDQsIDIyMCwgMTg0LCAxMSwgNCwgMjIwLCAxODMsIDExLCA0LCAyMjAsIDE4OCwgMTEsIDQsIDIyMCwgCisgICAgMTg3LCAxMSwgNCwgMjIwLCAxODUsIDExLCA0LCAyMjAsIDE4NiwgMTEsIDQsIDIxMiwgOTAsIDExLCA0LCAxOTUsIDExLCA0LCAKKyAgICAyMTIsIDE2MiwgMTEsIDQsIDIxMiwgOTMsIDExLCA0LCAyMTIsIDE1MCwgMTEsIDQsIDIxMiwgMTUzLCAxMSwgNCwgMjEyLCAKKyAgICAxNTEsIDExLCA0LCAyMTQsIDIyNSwgMTEsIDQsIDIxNCwgMjExLCAxMSwgNCwgMjE1LCAzNiwgMTEsIDQsIDIxNCwgMjMzLCAKKyAgICAxMSwgNCwgMjEwLCAyMDQsIDExLCA0LCAyMTAsIDIwNiwgMTEsIDQsIDIxMCwgMjA1LCAxMSwgNCwgMjExLCAyNDQsIDExLCAKKyAgICA0LCAyMTEsIDIzMywgMTEsIDQsIDIxMiwgMTMsIDExLCA0LCAyMTEsIDI0OCwgMTEsIDQsIDIxMywgMTAzLCAxMSwgNCwgCisgICAgMjE0LCAxNzcsIDExLCA0LCAyMTMsIDEzMiwgMTEsIDQsIDIxMCwgMTgxLCAxMSwgNCwgMjEwLCAxNzgsIDExLCA0LCAyMTEsIAorICAgIDEwLCAxMSwgNCwgMjEwLCAyMDMsIDExLCA0LCAyMTAsIDE4NSwgMTEsIDQsIDIxMCwgMTkzLCAxMSwgNCwgMjEwLCA4MywgCisgICAgMTEsIDQsIDIxMCwgODIsIDExLCA0LCAyMTAsIDE1MSwgMTEsIDQsIDIxMCwgOTEsIDExLCA0LCAyMTAsIDg1LCAxMSwgNCwgCisgICAgMjEwLCA5MCwgMTEsIDQsIDIxMSwgMTI2LCAxMSwgNCwgMjExLCAxMjUsIDExLCA0LCAyMTEsIDEzMiwgMTEsIDQsIDIxMSwgCisgICAgMTI3LCAxMSwgNCwgMjExLCAxMjksIDExLCA0LCAyMTEsIDEzMSwgMTEsIDQsIDIxMSwgMTMwLCAxMSwgNCwgMjExLCAxNDEsIAorICAgIDExLCA0LCAyMTEsIDEzOSwgMTEsIDQsIDIxMSwgMTY0LCAxMSwgNCwgMjExLCAxNDIsIDExLCA0LCAyMTEsIDEyMSwgMTEsIAorICAgIDQsIDIxMSwgMTIwLCAxMSwgNCwgMjExLCAxMjQsIDExLCA0LCAyMTEsIDEyMiwgMTEsIDQsIDIxMSwgMTM1LCAxMSwgNCwgCisgICAgMjExLCAxMzgsIDExLCA0LCAyMTEsIDEzNiwgMTEsIDQsIDIxMSwgMTE3LCAxMSwgNCwgMjExLCAxMTUsIDExLCA0LCAyMTEsIAorICAgIDExOSwgMTEsIDQsIDIxMSwgMTE4LCAxMSwgNCwgMjExLCAxMTAsIDExLCA0LCAyMTEsIDEwOSwgMTEsIDQsIDIxMSwgMTE0LCAKKyAgICAxMSwgNCwgMjExLCAxMTMsIDExLCA0LCAyMTEsIDExMSwgMTEsIDQsIDIxMSwgMTEyLCAxMSwgNCwgMjAyLCA3NSwgMTEsIDQsIAorICAgIDIwMiwgNzQsIDExLCA0LCAyMDIsIDgwLCAxMSwgNCwgMjAyLCA3NywgMTEsIDQsIDIwMiwgNTQsIDExLCA0LCAyMDIsIDU2LCAKKyAgICAxMSwgNCwgMjAyLCA1NSwgMTEsIDQsIDIwMiwgNTksIDExLCA0LCAyMDIsIDU4LCAxMSwgNCwgMjAyLCA2MywgMTEsIDQsIAorICAgIDIwMiwgNjAsIDExLCA0LCAyMDIsIDY4LCAxMSwgNCwgMjAyLCA2NywgMTEsIDQsIDIwMiwgNzEsIDExLCA0LCAyMDIsIDY5LCAKKyAgICAxMSwgNCwgMjAyLCA1MCwgMTEsIDQsIDIwMiwgNDksIDExLCA0LCAyMDIsIDU3LCAxMSwgNCwgMjAyLCA1MywgMTEsIDQsIAorICAgIDIwMiwgNTEsIDExLCA0LCAyMDIsIDUyLCAxMSwgNCwgMjAyLCA0MiwgMTEsIDQsIDIwMiwgNDEsIDExLCA0LCAyMDIsIDQ2LCAKKyAgICAxMSwgNCwgMjAyLCA0NSwgMTEsIDQsIDIwMiwgNDMsIDExLCA0LCAyMDIsIDQ0LCAxMSwgNCwgMjQ2LCAxNzYsIDExLCA0LCAKKyAgICAyNDYsIDE3MiwgMTEsIDQsIDI0NiwgMTk5LCAxMSwgNCwgMjQ2LCAxODUsIDExLCA0LCAyNDYsIDk0LCAxMSwgNCwgMjQ2LCAKKyAgICA5MywgMTEsIDQsIDI0NiwgOTYsIDExLCA0LCAyNDYsIDk1LCAxMSwgNCwgMjQ2LCAxMDksIDExLCA0LCAyNDYsIDEwOCwgMTEsIAorICAgIDQsIDI0NiwgMTE2LCAxMSwgNCwgMjQ2LCAxMTEsIDExLCA0LCAyNDYsIDE0NywgMTEsIDQsIDI0NiwgMTQ1LCAxMSwgNCwgCisgICAgMjQ2LCAxNzAsIDExLCA0LCAyNDYsIDE1NSwgMTEsIDQsIDI0NiwgODgsIDExLCA0LCAyNDYsIDk4LCAxMSwgNCwgMjQ2LCAKKyAgICA5MiwgMTEsIDQsIDI0NiwgODksIDExLCA0LCAyNDYsIDkxLCAxMSwgNCwgMjQ2LCA4MSwgMTEsIDQsIDI0NiwgODAsIDExLCAKKyAgICA0LCAyNDYsIDg1LCAxMSwgNCwgMjQ2LCA4NCwgMTEsIDQsIDI0NiwgODIsIDExLCA0LCAyNDYsIDgzLCAxMSwgNCwgMjE1LCAKKyAgICAxODEsIDExLCA0LCAyMTUsIDE4NSwgMTEsIDQsIDIxNSwgMTYzLCAxMSwgNCwgMjE1LCAxNjQsIDExLCA0LCAyMTUsIDE2OCwgCisgICAgMTEsIDQsIDIxNSwgMTY3LCAxMSwgNCwgMjE1LCAxNzEsIDExLCA0LCAyMTUsIDE2OSwgMTEsIDQsIDIxNSwgMTc1LCAxMSwgCisgICAgNCwgMjE1LCAxNzQsIDExLCA0LCAyMTUsIDE4MCwgMTEsIDQsIDIxNSwgMTc2LCAxMSwgNCwgMjE1LCAxNTksIDExLCA0LCAKKyAgICAyMTUsIDE1NywgMTEsIDQsIDIxNSwgMTY1LCAxMSwgNCwgMjE1LCAxNjIsIDExLCA0LCAyMTUsIDE2MCwgMTEsIDQsIDIxNSwgCisgICAgMTYxLCAxMSwgNCwgMjE1LCAxNTIsIDExLCA0LCAyMTUsIDE1MSwgMTEsIDQsIDIxNSwgMTU2LCAxMSwgNCwgMjE1LCAxNTUsIAorICAgIDExLCA0LCAyMTUsIDE1MywgMTEsIDQsIDIxNSwgMTU0LCAxMSwgNCwgMjIxLCAxNDUsIDExLCA0LCAyMjEsIDE0NCwgMTEsIAorICAgIDQsIDIyMSwgMTQ3LCAxMSwgNCwgMjIxLCAxNDYsIDExLCA0LCAyMjEsIDEzNiwgMTEsIDQsIDIyMSwgMTM4LCAxMSwgNCwgCisgICAgMjIxLCAxMzcsIDExLCA0LCAyMjEsIDE0MCwgMTEsIDQsIDIyMSwgMTM5LCAxMSwgNCwgMjIxLCAxNDMsIDExLCA0LCAyMjEsIAorICAgIDE0MiwgMTEsIDQsIDIyMSwgMTMwLCAxMSwgNCwgMjIxLCAxMjksIDExLCA0LCAyMjEsIDEzNSwgMTEsIDQsIDIyMSwgMTMzLCAKKyAgICAxMSwgNCwgMjIxLCAxMzEsIDExLCA0LCAyMjEsIDEzMiwgMTEsIDQsIDIyMSwgMTI0LCAxMSwgNCwgMjIxLCAxMjMsIDExLCAKKyAgICA0LCAyMjEsIDEyOCwgMTEsIDQsIDIyMSwgMTI3LCAxMSwgNCwgMjIxLCAxMjUsIDExLCA0LCAyMjEsIDEyNiwgMTEsIDQsIAorICAgIDIxMywgNTMsIDExLCA0LCAyMTMsIDQ4LCAxMSwgNCwgMjEzLCA5MCwgMTEsIDQsIDIxMywgNjQsIDExLCA0LCAyMTIsIDE4OCwgCisgICAgMTEsIDQsIDIxMiwgMTkwLCAxMSwgNCwgMjEyLCAxODksIDExLCA0LCAyMTIsIDIxMiwgMTEsIDQsIDIxMiwgMjA4LCAxMSwgCisgICAgNCwgMjEyLCAyNDIsIDExLCA0LCAyMTIsIDIzMiwgMTEsIDQsIDIxMywgMjEsIDExLCA0LCAyMTMsIDE0LCAxMSwgNCwgMjEzLCAKKyAgICA0MywgMTEsIDQsIDIxMywgMzAsIDExLCA0LCAyMTIsIDE4NCwgMTEsIDQsIDIxMiwgMTgxLCAxMSwgNCwgMjEyLCAxOTksIAorICAgIDExLCA0LCAyMTIsIDE4NywgMTEsIDQsIDIxMiwgMTg1LCAxMSwgNCwgMjEyLCAxODYsIDExLCA0LCAyMTIsIDE2NSwgMTEsIAorICAgIDQsIDIxMiwgMTY0LCAxMSwgNCwgMjEyLCAxNzEsIDExLCA0LCAyMTIsIDE2OCwgMTEsIDQsIDIxMiwgMTY2LCAxMSwgNCwgCisgICAgMjEyLCAxNjcsIDExLCA0LCAyMTYsIDE3MiwgMTEsIDQsIDIxNiwgMTY2LCAxMSwgNCwgMjE2LCAyMjAsIDExLCA0LCAyMTYsIAorICAgIDE3OCwgMTEsIDQsIDIxNSwgMTIyLCAxMSwgNCwgMjE1LCAxMjQsIDExLCA0LCAyMTUsIDEyMywgMTEsIDQsIDIxNSwgMTk5LCAKKyAgICAxMSwgNCwgMjE1LCAxODcsIDExLCA0LCAyMTUsIDIyNywgMTEsIDQsIDIxNSwgMjAzLCAxMSwgNCwgMjE2LCA2NiwgMTEsIDQsIAorICAgIDIxNiwgMTU4LCAxMSwgNCwgMjE2LCAxMDUsIDExLCA0LCAyMTUsIDExNSwgMTEsIDQsIDIxNSwgMTEyLCAxMSwgNCwgMjE1LCAKKyAgICAxNDUsIDExLCA0LCAyMTUsIDEyMSwgMTEsIDQsIDIxNSwgMTE3LCAxMSwgNCwgMjE1LCAxMTgsIDExLCA0LCAyMTUsIDk3LCAKKyAgICAxMSwgNCwgMjE1LCA5NiwgMTEsIDQsIDIxNSwgMTAyLCAxMSwgNCwgMjE1LCAxMDAsIDExLCA0LCAyMTUsIDk4LCAxMSwgNCwgCisgICAgMjE1LCA5OSwgMTEsIDQsIDIzMCwgMTMxLCAxMSwgNCwgMjMwLCAxMzAsIDExLCA0LCAyMzAsIDE0MSwgMTEsIDQsIDIzMCwgCisgICAgMTMyLCAxMSwgNCwgMjMwLCAxMzcsIDExLCA0LCAyMzAsIDEzNiwgMTEsIDQsIDIzMCwgMTM5LCAxMSwgNCwgMjMwLCAxMzgsIAorICAgIDExLCA0LCAyMzAsIDcyLCAxMSwgNCwgMjMwLCA3MSwgMTEsIDQsIDIzMCwgNzQsIDExLCA0LCAyMzAsIDczLCAxMSwgNCwgCisgICAgMjMwLCA4OCwgMTEsIDQsIDIzMCwgODYsIDExLCA0LCAyMzAsIDEwMSwgMTEsIDQsIDIzMCwgOTAsIDExLCA0LCAyMzAsIDY1LCAKKyAgICAxMSwgNCwgMjMwLCA2MywgMTEsIDQsIDIzMCwgODIsIDExLCA0LCAyMzAsIDcwLCAxMSwgNCwgMjMwLCA2NywgMTEsIDQsIAorICAgIDIzMCwgNjgsIDExLCA0LCAyMzAsIDU3LCAxMSwgNCwgMjMwLCA1NiwgMTEsIDQsIDIzMCwgNjEsIDExLCA0LCAyMzAsIDYwLCAKKyAgICAxMSwgNCwgMjMwLCA1OCwgMTEsIDQsIDIzMCwgNTksIDExLCA0LCAyMTcsIDgxLCAxMSwgNCwgMjE3LCA3OSwgMTEsIDQsIAorICAgIDIxNywgODgsIDExLCA0LCAyMTcsIDgyLCAxMSwgNCwgMjE3LCA4NSwgMTEsIDQsIDIxNywgODQsIDExLCA0LCAyMTcsIDg3LCAKKyAgICAxMSwgNCwgMjE3LCA4NiwgMTEsIDQsIDIxNywgMzIsIDExLCA0LCAyMTcsIDI5LCAxMSwgNCwgMjE3LCAzNCwgMTEsIDQsIAorICAgIDIxNywgMzMsIDExLCA0LCAyMTcsIDY4LCAxMSwgNCwgMjE3LCA2NywgMTEsIDQsIDIxNywgNzcsIDExLCA0LCAyMTcsIDcxLCAKKyAgICAxMSwgNCwgMjE3LCAyNCwgMTEsIDQsIDIxNywgMjAsIDExLCA0LCAyMTcsIDY1LCAxMSwgNCwgMjE3LCAyOCwgMTEsIDQsIAorICAgIDIxNywgMjYsIDExLCA0LCAyMTcsIDI3LCAxMSwgNCwgMjE3LCA0LCAxMSwgNCwgMjE3LCAyLCAxMSwgNCwgMjE3LCAxNCwgCisgICAgMTEsIDQsIDIxNywgNywgMTEsIDQsIDIxNywgNSwgMTEsIDQsIDIxNywgNiwgMTEsIDQsIDIzMCwgMTIwLCAxMSwgNCwgMjMwLCAKKyAgICAxMTksIDExLCA0LCAyMzAsIDEyNiwgMTEsIDQsIDIzMCwgMTIxLCAxMSwgNCwgMjMwLCAxMjMsIDExLCA0LCAyMzAsIDEyMiwgCisgICAgMTEsIDQsIDIzMCwgMTI1LCAxMSwgNCwgMjMwLCAxMjQsIDExLCA0LCAyMzAsIDExMSwgMTEsIDQsIDIzMCwgMTEzLCAxMSwgCisgICAgNCwgMjMwLCAxMTIsIDExLCA0LCAyMzAsIDExNiwgMTEsIDQsIDIzMCwgMTE1LCAxMSwgNCwgMjMwLCAxMTgsIDExLCA0LCAKKyAgICAyMzAsIDExNywgMTEsIDQsIDIzMCwgMTA3LCAxMSwgNCwgMjMwLCAxMDYsIDExLCA0LCAyMzAsIDExNCwgMTEsIDQsIDIzMCwgCisgICAgMTEwLCAxMSwgNCwgMjMwLCAxMDgsIDExLCA0LCAyMzAsIDEwOSwgMTEsIDQsIDIzMCwgMTAzLCAxMSwgNCwgMjMwLCAxMDIsIAorICAgIDExLCA0LCAyMzAsIDEwNSwgMTEsIDQsIDIzMCwgMTA0LCAxMSwgNCwgMjIyLCAyNSwgMTEsIDQsIDIyMiwgMjQsIDExLCA0LCAKKyAgICAyMjIsIDMyLCAxMSwgNCwgMjIyLCAyNiwgMTEsIDQsIDIyMiwgMjgsIDExLCA0LCAyMjIsIDI3LCAxMSwgNCwgMjIyLCAzMSwgCisgICAgMTEsIDQsIDIyMiwgMjksIDExLCA0LCAyMjIsIDE0LCAxMSwgNCwgMjIyLCAxNSwgMTEsIDQsIDIyMiwgMjAsIDExLCA0LCAKKyAgICAyMjIsIDE5LCAxMSwgNCwgMjIyLCAyMywgMTEsIDQsIDIyMiwgMjEsIDExLCA0LCAyMjIsIDksIDExLCA0LCAyMjIsIDE4LCAKKyAgICAxMSwgNCwgMjIyLCAxMywgMTEsIDQsIDIyMiwgMTAsIDExLCA0LCAyMjIsIDExLCAxMSwgNCwgMjIyLCA0LCAxMSwgNCwgCisgICAgMjIyLCAzLCAxMSwgNCwgMjIyLCA4LCAxMSwgNCwgMjIyLCA3LCAxMSwgNCwgMjIyLCA1LCAxMSwgNCwgMjIyLCA2LCAxMSwgCisgICAgNCwgMjIwLCAyMzYsIDExLCA0LCAyMjAsIDIzNSwgMTEsIDQsIDIyMCwgMjQ4LCAxMSwgNCwgMjIwLCAyNDAsIDExLCA0LCAKKyAgICAyMjAsIDI0NSwgMTEsIDQsIDIyMCwgMjQ0LCAxMSwgNCwgMjIwLCAyNDcsIDExLCA0LCAyMjAsIDI0NiwgMTEsIDQsIDIyMCwgCisgICAgMjIxLCAxMSwgNCwgMjIwLCAyMjMsIDExLCA0LCAyMjAsIDIyMiwgMTEsIDQsIDIyMCwgMjI4LCAxMSwgNCwgMjIwLCAyMjcsIAorICAgIDExLCA0LCAyMjAsIDIzMywgMTEsIDQsIDIyMCwgMjI5LCAxMSwgNCwgMjIwLCAyMTksIDExLCA0LCAyMjAsIDIxNywgMTEsIAorICAgIDQsIDIyMCwgMjI2LCAxMSwgNCwgMjIwLCAyMjAsIDExLCA0LCAyMDMsIDE2MiwgMTEsIDQsIDIwMywgMTYxLCAxMSwgNCwgCisgICAgMjAzLCAxNzAsIDExLCA0LCAyMDMsIDE2NCwgMTEsIDQsIDIwMywgMTY2LCAxMSwgNCwgMjAzLCAxNjUsIDExLCA0LCAyMDMsIAorICAgIDE2OCwgMTEsIDQsIDIwMywgMTY3LCAxMSwgNCwgMjAzLCAxNTAsIDExLCA0LCAyMDMsIDE1MSwgMTEsIDQsIDIwMywgMTU1LCAKKyAgICAxMSwgNCwgMjAzLCAxNTQsIDExLCA0LCAyMDMsIDE2MCwgMTEsIDQsIDIwMywgMTU4LCAxMSwgNCwgMjAzLCAxMjgsIDExLCAKKyAgICA0LCAyMDMsIDEyNiwgMTEsIDQsIDIwMywgMTQxLCAxMSwgNCwgMjAzLCAxMzEsIDExLCA0LCAyMDMsIDEyOSwgMTEsIDQsIAorICAgIDIwMywgMTMwLCAxMSwgNCwgMjAyLCAyNTMsIDExLCA0LCAyMDIsIDI1MSwgMTEsIDQsIDIwMywgMTEsIDExLCA0LCAyMDIsIAorICAgIDI1NCwgMTEsIDQsIDIwMywgNSwgMTEsIDQsIDIwMywgNCwgMTEsIDQsIDIwMywgOCwgMTEsIDQsIDIwMywgNiwgMTEsIDQsIAorICAgIDIwMiwgMTkxLCAxMSwgNCwgMjAyLCAxOTAsIDExLCA0LCAyMDIsIDE5NCwgMTEsIDQsIDIwMiwgMTkyLCAxMSwgNCwgMjAyLCAKKyAgICAyMjcsIDExLCA0LCAyMDIsIDIyMywgMTEsIDQsIDIwMiwgMjQ3LCAxMSwgNCwgMjAyLCAyMzEsIDExLCA0LCAyMDIsIDE4MiwgCisgICAgMTEsIDQsIDIwMiwgMTc4LCAxMSwgNCwgMjAyLCAyMTMsIDExLCA0LCAyMDIsIDE4OSwgMTEsIDQsIDIwMiwgMTg1LCAxMSwgCisgICAgNCwgMjAyLCAxODYsIDExLCA0LCAyMDIsIDE2MiwgMTEsIDQsIDIwMiwgMTYxLCAxMSwgNCwgMjAyLCAxNjksIDExLCA0LCAKKyAgICAyMDIsIDE2NSwgMTEsIDQsIDIwMiwgMTYzLCAxMSwgNCwgMjAyLCAxNjQsIDExLCA0MCwgMjE3LCA2OCwgMTEsIDQwLCAyMjcsIAorICAgIDE0OCwgMTEsIDQwLCAyMjksIDY0LCAxMSwgNDAsIDIyMCwgMjQwLCAxMSwgNDAsIDI0NSwgNjAsIDExLCA0MCwgMjExLCAKKyAgICAxMzIsIDExLCA0MCwgMjM4LCAxMzgsIDExLCA0MCwgMjM4LCAxNzAsIDExLCA0MCwgMjI0LCAxNTUsIDExLCA0MCwgMjM1LCAKKyAgICAyMzMsIDExLCA0MCwgMjI2LCAxOTIsIDExLCA0MCwgMjQ4LCAxNzAsIDExLCA0MCwgMjI0LCAyNywgMTEsIDQwLCAyMDIsIAorICAgIDI0NywgMTEsIDQwLCAyMTcsIDE1OSwgMTEsIDQwLCAyMzUsIDIyNywgMTEsIDQwLCAyMDksIDIxMiwgMTEsIDQwLCAyMzksIAorICAgIDgsIDExLCA0MCwgMjAxLCAyNTQsIDExLCA0MCwgMjQ1LCA1NCwgMTEsIDQwLCAyNDQsIDgwLCAxMSwgNDAsIDI0NywgMTYwLCAKKyAgICAxMSwgNDAsIDIzOCwgMTM0LCAxMSwgNDAsIDIyMCwgMjI5LCAxMSwgNDAsIDIwNywgMjAzLCAxMSwgNDAsIDIyMCwgOSwgMTEsIAorICAgIDQwLCAyMzAsIDEwNywgMTEsIDQwLCAyMDIsIDEzLCAxMSwgNDAsIDIxNywgMTM4LCAxMSwgNDAsIDIzNiwgMTc4LCAxMSwgCisgICAgNDAsIDIwMiwgMjUzLCAxMSwgNDAsIDIwNCwgMTU5LCAxMSwgNDAsIDIxMiwgMTcxLCAxMSwgNDAsIDIwNiwgNDQsIDExLCAKKyAgICA0MCwgMjAyLCAxMTYsIDExLCA0MCwgMjMwLCAxMDEsIDExLCA0MCwgMjIwLCAxOTMsIDExLCA0MCwgMjMwLCAxMDUsIDExLCAKKyAgICA0MCwgMjM4LCAxOCwgMTEsIDQwLCAyMzAsIDEyNSwgMTEsIDQwLCAyMDQsIDAsIDExLCA0MCwgMjQyLCA0MiwgMTEsIDQwLCAKKyAgICAyMTIsIDE4NiwgMTEsIDQwLCAyMjcsIDE0MiwgMTEsIDQwLCAyNDUsIDY2LCAxMSwgNDAsIDI0NSwgMTAyLCAxMSwgNDAsIAorICAgIDI0NiwgNjMsIDExLCA0MCwgMjM1LCAyMzAsIDExLCA0MCwgMjEzLCA1MywgMTEsIDQwLCAyMDEsIDI1MywgMTEsIDQwLCAKKyAgICAyMTIsIDIzMiwgMTEsIDQwLCAyNDYsIDE3MCwgMTEsIDQwLCAyMDEsIDIyMywgMTEsIDQwLCAyMjMsIDUxLCAxMSwgNDAsIAorICAgIDIyOSwgMjAxLCAyMjcsIDkxLCAxLCAyNDksIDMyLCAyMjcsIDkxLCAxLCAxODUsIDIyNywgOTEsIDEsIDIxOCwgMjA4LCAKKyAgICAyMjcsIDkxLCAxLCAyNDQsIDIxMiwgMjI3LCA5MSwgMSwgMjEwLCAyMiwgMjI3LCA5MSwgMSwgMjA5LCAxMDgsIDIyNywgOTEsIAorICAgIDEsIDIzOSwgOCwgMjI3LCA5MSwgMSwgMTczLCAyMjcsIDkxLCAxLCAyMjksIDE0NCwgMjI3LCA5MSwgMSwgMjMwLCAxODEsIAorICAgIDIyNywgOTEsIDEsIDI0NywgOTIsIDIyNywgOTEsIDEsIDI0NiwgMTk5LCAyMjcsIDkxLCAxLCAyNDEsIDI1NSwgMjI3LCA5MSwgCisgICAgMSwgMjA4LCAyMCwgMjI3LCA5MSwgMSwgMjA4LCAxMCwgMjI3LCA5MSwgMSwgMTkyLCAyMjcsIDkxLCAxLCAyMDEsIDIwMSwgCisgICAgMjI3LCA5MSwgMSwgMjI4LCAxMTMsIDIyNywgOTEsIDEsIDIxNSwgMzYsIDIyNywgOTEsIDEsIDIwMiwgODAsIDIyNywgOTEsIAorICAgIDEsIDIwMiwgMTE2LCAyMjcsIDkxLCAxLCAyMjIsIDIwMywgMjI3LCA5MSwgMSwgMTUyLCAyMjcsIDkxLCAxLCAyMDMsIDE4MiwgCisgICAgMjI3LCA5MSwgMSwgMjM3LCAxMiwgMjI3LCA5MSwgMSwgMjQwLCAxMDgsIDIyNywgOTEsIDEsIDIwNCwgMTExLCAyMjcsIDkxLCAKKyAgICAxLCAyMTMsIDkwLCAyMjcsIDkxLCAxLCAxOTgsIDIyNywgOTEsIDEsIDIzOCwgMTE5LCAyMjcsIDkxLCAxLCA2MywgMjI3LCAKKyAgICA5MSwgMSwgMjUxLCAxMDksIDIyNywgOTEsIDEsIDc0LCAyMjcsIDkxLCAxLCAyNDAsIDIzOCwgMjI3LCA5MSwgMSwgNzUsIAorICAgIDIyNywgOTEsIDEsIDc4LCAyMjcsIDkxLCAxLCA2OCwgMjI3LCA5MSwgMSwgMjA3LCAyNCwgMjI3LCA5MSwgMSwgMjA3LCAxOCwgCisgICAgMjI3LCA5MSwgMSwgMjIwLCA3MywgMjI3LCA5MSwgMSwgMTQzLCAyMjMsIDE3MCwgMjA5LCAyLCAyMjcsIDkxLCAxLCAxNDMsIAorICAgIDIyMywgMTExLCAyMTgsIDY5LCAyMjcsIDkxLCAxLCAxNDMsIDIyMywgMTcwLCAyNDUsIDY1LCAyMjcsIDkxLCAxLCAxNDMsIAorICAgIDIyMywgMTcwLCAyNDgsIDIzLCAyMjcsIDkxLCAxLCAxNDMsIDIyMywgMTcwLCAyMDEsIDIwMSwgMjI3LCA5MSwgMSwgMTQzLCAKKyAgICAyMjMsIDE3MCwgMjMwLCAxNTAsIDIyNywgOTEsIDIxNywgMTc5LCAyNDUsIDIzMywgMjI3LCA5MSwgMjE3LCAxNzksIDIzOSwgCisgICAgMTAyLCAyMTEsIDYxLCA0OCwgNCwgMjQxLCAxNjEsIDQ4LCA0LCAyNDEsIDE1NywgNDgsIDQsIDIzNywgNDgsIDQ4LCA0LCAKKyAgICAyMDQsIDU1LCA0OCwgNCwgMjA0LCA1NCwgNDgsIDQsIDIxOSwgMjMsIDQ4LCA0LCAyNDgsIDkzLCA0OCwgNCwgMjQ4LCAxNTAsIAorICAgIDQ4LCA0LCAyMjUsIDQ2LCA0OCwgNCwgMjI4LCAyMzksIDQ4LCA0LCAyMjQsIDE4NywgNDgsIDQsIDIzOCwgMjAzLCA0OCwgNCwgCisgICAgMjQwLCA1MywgNDgsIDQsIDIwNiwgNTAsIDQ4LCA0LCAyMDksIDE3NiwgNDgsIDQsIDIwOSwgOTAsIDQ4LCA0LCAyNDMsIAorICAgIDI0NywgNDgsIDQsIDI0MywgMjQ0LCA0OCwgNCwgMjI3LCAyMjYsIDQ4LCA0LCAyMTYsIDEzNSwgNDgsIDQsIDI0NCwgNjEsIAorICAgIDQ4LCA0LCAyMjMsIDE2LCA0OCwgNCwgMjE0LCAxNjUsIDQ4LCA0LCAyMTMsIDQxLCA0OCwgNCwgMjAyLCA5MCwgNDgsIDQsIAorICAgIDIwMiwgNzAsIDQ4LCA0LCAyNDYsIDIzMCwgNDgsIDQsIDIzMCwgMTU5LCA0OCwgNCwgMjIyLCAzOSwgNDgsIDQsIDIwMywgCisgICAgNDksIDQ4LCA0LCAyMjksIDE5OCwgNDgsIDQsIDIyMiwgMTc2LCA0OCwgNCwgMjM4LCAxODIsIDQ4LCA0LCAyMjUsIDgsIDQ4LCAKKyAgICA0LCAyMjIsIDIzNSwgNDgsIDQsIDIyMSwgMCwgNDgsIDQsIDc1LCA0OCwgNCwgMjMxLCA0OSwgNDgsIDQsIDIzNywgMywgNDgsIAorICAgIDQsIDIzNiwgMjM4LCA0OCwgNCwgMjA0LCAzMCwgNDgsIDQsIDIwNCwgMTgsIDQ4LCA0LCAyMTgsIDE2NywgNDgsIDQsIDI0OCwgCisgICAgOTEsIDQ4LCA0LCAyNDgsIDg2LCA0OCwgNCwgMjI1LCAzOSwgNDgsIDQsIDIyOCwgMjM2LCA0OCwgNCwgMjI0LCAxODQsIDQ4LCAKKyAgICA0LCAyMzgsIDE5OSwgNDgsIDQsIDI0MCwgMjYsIDQ4LCA0LCAyMDUsIDIzMCwgNDgsIDQsIDIwOSwgMiwgNDgsIDQsIDIwOSwgCisgICAgNzAsIDQ4LCA0LCAyNDMsIDIzOSwgNDgsIDQsIDI0MywgMjQzLCA0OCwgNCwgMjI3LCAxNDgsIDQ4LCA0LCAyMTYsIDU3LCAKKyAgICA0OCwgNCwgMjQzLCAyMzMsIDQ4LCA0LCAyMjMsIDEwLCA0OCwgNCwgMjEyLCAxNjIsIDQ4LCA0LCAyMTMsIDExLCA0OCwgNCwgCisgICAgMjAyLCAzOSwgNDgsIDQsIDIwMiwgNjYsIDQ4LCA0LCAyNDYsIDc5LCA0OCwgNCwgMjMwLCAxNDEsIDQ4LCA0LCAyMjIsIDMyLCAKKyAgICA0OCwgNCwgMjAzLCAxMSwgNDgsIDQsIDIyOSwgMTAwLCA0OCwgNCwgMjIyLCAxNjgsIDQ4LCA0LCAyMzgsIDgxLCA0OCwgNCwgCisgICAgMjI0LCAxNTUsIDQ4LCA0LCAyMjIsIDEwMCwgNDgsIDQsIDIyMCwgMjQ4LCA0OCwgNCwgNjMsIDQ4LCA0LCAyNTAsIDIzMSwgCisgICAgNDgsIDQsIDIyMiwgMTk4LCA0OCwgNCwgMTUyLCA0OCwgNCwgMjM3LCAxMjYsIDQ4LCA0LCAyMDQsIDExMSwgNDgsIDQsIAorICAgIDIwNCwgOTcsIDQ4LCA0LCAxODUsIDQ4LCA0LCAyNDgsIDk4LCA0OCwgNCwgMjQ5LCAzMiwgNDgsIDQsIDIyNSwgNTQsIDQ4LCAKKyAgICA0LCAyMjgsIDI0NCwgNDgsIDQsIDIyOCwgMjQyLCA0OCwgNCwgMjI0LCAxOTEsIDQ4LCA0LCAyMzgsIDIwNywgNDgsIDQsIAorICAgIDI0MCwgMTA4LCA0OCwgNCwgMjA2LCA4NiwgNDgsIDQsIDIxMCwgMjIsIDQ4LCA0LCAyMDksIDEwOCwgNDgsIDQsIDI0NCwgMSwgCisgICAgNDgsIDQsIDI0MywgMjQ2LCA0OCwgNCwgMjI4LCAxMTMsIDQ4LCA0LCAyMTYsIDIyMCwgNDgsIDQsIDI0NCwgMjEyLCA0OCwgCisgICAgNCwgMjIzLCAyNSwgNDgsIDQsIDIxNSwgMzYsIDQ4LCA0LCAyMTMsIDkwLCA0OCwgNCwgMjAyLCAxMTYsIDQ4LCA0LCAyMDIsIAorICAgIDgwLCA0OCwgNCwgMjQ3LCA5MiwgNDgsIDQsIDIzMCwgMTgxLCA0OCwgNCwgMjIyLCA0OCwgNDgsIDQsIDE5OCwgNDgsIDQsIAorICAgIDE3MywgNDgsIDQsIDIzMCwgNCwgNDgsIDQsIDIyMiwgMTgyLCA0OCwgNCwgMjM5LCA4LCA0OCwgNCwgMTkyLCA0OCwgNCwgCisgICAgMjAxLCAyMDEsIDQ4LCA0LCAyMjEsIDExLCA0OCwgNCwgMjIwLCAxOCwgNDgsIDQsIDIyMCwgMTMsIDQ4LCA0LCAyMzYsIAorICAgIDExNywgNDgsIDQsIDIwMywgMjQ0LCA0OCwgNCwgMjAzLCAyNDAsIDQ4LCA0LCAyMTgsIDQ1LCA0OCwgNCwgMjQ4LCA4OSwgCisgICAgNDgsIDQsIDI0OCwgMTAsIDQ4LCA0LCAyMjUsIDM0LCA0OCwgNCwgMjI4LCAyMzQsIDQ4LCA0LCAyMjQsIDE4MCwgNDgsIDQsIAorICAgIDIzOCwgMTk1LCA0OCwgNCwgMjM5LCAxNzUsIDQ4LCA0LCAyMDUsIDE3NiwgNDgsIDQsIDIwOCwgMTQ4LCA0OCwgNCwgMjA5LCAKKyAgICA0MiwgNDgsIDQsIDI0MywgMjM2LCA0OCwgNCwgMjQzLCAyNDEsIDQ4LCA0LCAyMjcsIDE4LCA0OCwgNCwgMjE1LCAyMDgsIAorICAgIDQ4LCA0LCAyNDMsIDkwLCA0OCwgNCwgMjIyLCAyNTMsIDQ4LCA0LCAyMTEsIDI1MCwgNDgsIDQsIDIxMiwgMjM2LCA0OCwgNCwgCisgICAgMjAyLCAxNSwgNDgsIDQsIDIwMiwgNjEsIDQ4LCA0LCAyNDUsIDE4MCwgNDgsIDQsIDIzMCwgOTEsIDQ4LCA0LCAyMjIsIDIyLCAKKyAgICA0OCwgNCwgMjAyLCAyMzIsIDQ4LCA0LCAyMjksIDYsIDQ4LCA0LCAyMjIsIDE2NiwgNDgsIDQsIDIzOCwgMjgsIDQ4LCA0LCAKKyAgICAyMjQsIDM1LCA0OCwgNCwgMjIxLCAxODAsIDQ4LCA0LCAyMjAsIDIzMCwgNDgsIDQsIDY4LCA0OCwgNCwgMjA2LCAyNTUsIAorICAgIDQ4LCA0LCAyMzYsIDI2LCA0OCwgNCwgMjM2LCAxMywgNDgsIDQsIDIwMywgMjE3LCA0OCwgNCwgMjAzLCAyMTAsIDQ4LCA0LCAKKyAgICAyMTcsIDE5MSwgNDgsIDQsIDI0OCwgODgsIDQ4LCA0LCAyNDcsIDE5MywgNDgsIDQsIDIyNSwgMzMsIDQ4LCA0LCAyMjgsIAorICAgIDIzMiwgNDgsIDQsIDIyNCwgMTc5LCA0OCwgNCwgMjM4LCAxOTQsIDQ4LCA0LCAyMzksIDEwOCwgNDgsIDQsIDIwNCwgMTYzLCAKKyAgICA0OCwgNCwgMjA3LCAyMDMsIDQ4LCA0LCAyMDksIDIyLCA0OCwgNCwgMjQzLCAyMzQsIDQ4LCA0LCAyNDMsIDI0MCwgNDgsIDQsIAorICAgIDIyNiwgMjM5LCA0OCwgNCwgMjE1LCAxNDUsIDQ4LCA0LCAyNDIsIDQyLCA0OCwgNCwgMjIyLCAyNDgsIDQ4LCA0LCAyMTEsIAorICAgIDEwLCA0OCwgNCwgMjEyLCAxOTksIDQ4LCA0LCAyMDIsIDYsIDQ4LCA0LCAyMDIsIDU3LCA0OCwgNCwgMjQ1LCAxMTAsIDQ4LCAKKyAgICA0LCAyMzAsIDgyLCA0OCwgNCwgMjIyLCAxOCwgNDgsIDQsIDIwMiwgMjEzLCA0OCwgNCwgMjI4LCAyMDksIDQ4LCA0LCAyMjIsIAorICAgIDE2NSwgNDgsIDQsIDIzNywgMjMwLCA0OCwgNCwgMjIzLCAyNDYsIDQ4LCA0LCAyMjEsIDg0LCA0OCwgNCwgMjIwLCAyMjYsIAorICAgIDQ4LCA0LCA3OCwgNDgsIDQsIDIyMCwgMzEsIDQ4LCA0LCAyMjIsIDEyNCwgNDgsIDQsIDIzNiwgMTM2LCA0OCwgNCwgMjM2LCAKKyAgICAxMjAsIDQ4LCA0LCAyMDQsIDAsIDQ4LCA0LCAyMDMsIDI0NSwgNDgsIDQsIDIxOCwgNjksIDQ4LCA0LCAyNDgsIDkwLCA0OCwgCisgICAgNCwgMjQ4LCAyMywgNDgsIDQsIDIyNSwgMzUsIDQ4LCA0LCAyMjgsIDIzNSwgNDgsIDQsIDIyNCwgMTgyLCA0OCwgNCwgMjM4LCAKKyAgICAxOTcsIDQ4LCA0LCAyMzgsIDE5NiwgNDgsIDQsIDIzOSwgMTg2LCA0OCwgNCwgMjA1LCAxODksIDQ4LCA0LCAxMzUsIDQ4LCAKKyAgICA0LCAyMDksIDQ3LCA0OCwgNCwgMjQzLCAyMzcsIDQ4LCA0LCAyNDMsIDI0MiwgNDgsIDQsIDIyNywgNDksIDQ4LCA0LCAyMTUsIAorICAgIDIyNywgNDgsIDQsIDI0MywgMTEzLCA0OCwgNCwgMjIzLCAxLCA0OCwgNCwgMjEyLCAxMywgNDgsIDQsIDIxMiwgMjQyLCA0OCwgCisgICAgNCwgMjAyLCAxNywgNDgsIDQsIDIwMiwgNjMsIDQ4LCA0LCAyNDUsIDI1NCwgNDgsIDQsIDIzMCwgMTAxLCA0OCwgNCwgMjIyLCAKKyAgICAyMywgNDgsIDQsIDIwMiwgMjQ3LCA0OCwgNCwgMjI5LCAyNiwgNDgsIDQsIDIyMiwgMTY3LCA0OCwgNCwgMjM4LCAzOSwgNDgsIAorICAgIDQsIDIyNCwgODIsIDQ4LCA0LCAyMjEsIDE5MSwgNDgsIDQsIDIyMCwgMjMzLCA0OCwgNCwgNzQsIDQ4LCA0LCAyNDEsIDkyLCAKKyAgICA0OCwgNCwgMjIyLCAxODcsIDQ4LCA0LCAyMzcsIDY3LCA0OCwgNCwgMjM3LCAzMywgNDgsIDQsIDIwNCwgNjIsIDQ4LCA0LCAKKyAgICAyMDQsIDQ5LCA0OCwgNCwgMjE5LCAzNCwgNDgsIDQsIDI0OCwgOTQsIDQ4LCA0LCAyNDgsIDE2MiwgNDgsIDQsIDIyNSwgNDcsIAorICAgIDQ4LCA0LCAyMjgsIDI0MCwgNDgsIDQsIDIyOCwgMjM4LCA0OCwgNCwgMjI0LCAxODgsIDQ4LCA0LCAyMzgsIDIwNCwgNDgsIAorICAgIDQsIDIzOCwgMjAyLCA0OCwgNCwgMjQwLCA2MCwgNDgsIDQsIDIwNiwgNTUsIDQ4LCA0LCAyMDksIDE4NywgNDgsIDQsIDIwOSwgCisgICAgOTIsIDQ4LCA0LCAyNDMsIDI0OCwgNDgsIDQsIDI0MywgMjQ1LCA0OCwgNCwgMjI3LCAyMzQsIDQ4LCA0LCAyMTYsIDE1OCwgCisgICAgNDgsIDQsIDI0NCwgNzUsIDQ4LCA0LCAyMjMsIDE3LCA0OCwgNCwgMjE0LCAxNzcsIDQ4LCA0LCAyMTMsIDQzLCA0OCwgNCwgCisgICAgMjAyLCA5MiwgNDgsIDQsIDIwMiwgNzEsIDQ4LCA0LCAyNDYsIDIzOCwgNDgsIDQsIDIzMCwgMTYxLCA0OCwgNCwgMjIyLCAKKyAgICA0MSwgNDgsIDQsIDIwMywgNTIsIDQ4LCA0LCAyMjksIDIwMSwgNDgsIDQsIDIyMiwgMTc3LCA0OCwgNCwgMjIyLCAxNzMsIAorICAgIDQ4LCA0LCAyMzgsIDE5MCwgNDgsIDQsIDIzOCwgMTc3LCA0OCwgNCwgMjI1LCAyMCwgNDgsIDQsIDIyMiwgMjQwLCA0OCwgNCwgCisgICAgMjIxLCAxLCA0OCwgNCwgMjIyLCAyMDUsIDQ4LCA0LCAyMjcsIDE4OCwgNDgsIDI0NSwgMjMzLCA0OCwgMjM5LCAxMDIsIAorICAgIDIxMSwgNjEsIDQ4LCAyMTcsIDQ3LCA4MiwgNDgsIDQsIDIyMywgMCwgMjQwLCAxMDgsIDQ4LCA0LCAyMjMsIDAsIDE3MywgCisgICAgNDgsIDQsIDIyMywgMCwgMjExLCAyNTAsIDQ4LCAxNiwgMjQwLCA0OSwgNDgsIDE2LCAyMjksIDE5NiwgNDgsIDE2LCAyMDgsIAorICAgIDIxNSwgNDgsIDE2LCAyMjIsIDc1LCA0OCwgMTYsIDI0OCwgMjM3LCA0OCwgMTYsIDI0MCwgMTA3LCA0OCwgMTYsIDIxMCwgCisgICAgMTgsIDQ4LCAxNiwgMjQ0LCAxNjQsIDQ4LCAxNiwgMjQzLCA4OSwgNDgsIDE2LCAyMjgsIDE5MywgNDgsIDE2LCAyMDgsIAorICAgIDE1MiwgNDgsIDE2LCAyNDMsIDExMiwgNDgsIDE2LCAyMzAsIDkyLCA0OCwgMTcsIDIwMiwgODQsIDQ4LCAxNywgMTA1LCA0OCwgCisgICAgMTcsIDEwOCwgNDgsIDE3LCAxNDcsIDQ4LCAxNywgMTQ5LCA0OCwgMTcsIDE3MCwgNDgsIDE3LCAxOTUsIDQ4LCAxNywgMjEzLCAKKyAgICAxMTEsIDQ4LCAxNywgMTk5LCA0OCwgMTcsIDIyMiwgNjMsIDQ4LCA0LCAyMjMsIDAsIDE5MiwgNDgsIDQsIDIyMywgMCwgCisgICAgMjQzLCAxMTMsIDM2LCA2LCAxLCAyMDIsIDg4LCAzNiwgNSwgMSwgMjAyLCA4OCwgMzYsIDYsIDEsIDI0MSwgMjUwLCAzNiwgCisgICAgNSwgMSwgMjQxLCAyNTAsIDM2LCA2LCAxLCAyMTYsIDczLCAyNDEsIDI1MiwgMzYsIDUsIDEsIDIxNiwgNzMsIDI0MSwgMjUyLCAKKyAgICAzNiwgNiwgMSwgMjMwLCAyMzAsIDM2LCA1LCAxLCAyMzAsIDIzMCwgMzYsIDYsIDEsIDI0MywgMTI5LCAzNiwgNSwgMSwgCisgICAgMjQzLCAxMjksIDM2LCA2LCAxLCAyMjQsIDQzLCAyMDcsIDE0LCAzNiwgNSwgMSwgMjI0LCA0MywgMjA3LCAxNCwgMzYsIDYsIAorICAgIDEsIDI0NywgMjA0LCAyMjAsIDM2LCAzNiwgNSwgMSwgMjQ3LCAyMDQsIDIyMCwgMzYsIDM2LCA2LCAxLCAyMjIsIDIxNiwgCisgICAgMjAzLCAzNCwgMzYsIDUsIDEsIDIyMiwgMjE2LCAyMDMsIDM0LCAzNiwgNiwgMSwgMjAzLCAzMSwgMywgMjQ5LCAyNiwgMjAzLCAKKyAgICAzNCwgMzYsIDUsIDEsIDIwMywgMzEsIDMsIDI0OSwgMjYsIDIwMywgMzQsIDM2LCA2LCAxLCAyMzAsIDIyOCwgMjAzLCA2NiwgCisgICAgMzYsIDUsIDEsIDIzMCwgMjI4LCAyMDMsIDY2LCAzNiwgNiwgMSwgMjE2LCA3MywgMjAyLCAyMTMsIDM2LCA1LCAxLCAyMTYsIAorICAgIDczLCAyMDIsIDIxMywgMzYsIDYsIDEsIDIzMCwgMjI4LCA2MywgMzYsIDUsIDEsIDIzMCwgMjI4LCA2MywgMzYsIDYsIDEsIAorICAgIDI0NiwgMTYsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjQ2LCAxNiwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA2LCAKKyAgICAxLCAyNDgsIDM1LCAyMDIsIDE4MywgMzYsIDUsIDEsIDI0OCwgMzUsIDIwMiwgMTgzLCAzNiwgNiwgMSwgMjMwLCAyMjgsIAorICAgIDI0NiwgMTYsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjMwLCAyMjgsIDI0NiwgMTYsIDIyNywgODYsIDIwMiwgCisgICAgMTgzLCAzNiwgNiwgMSwgMjAyLCAyNDksIDM2LCA1LCAxLCAyMDIsIDI0OSwgMzYsIDYsIDEsIDIxNiwgNzMsIDIwOCwgMTQsIAorICAgIDM2LCA1LCAxLCAyMTYsIDczLCAyMDgsIDE0LCAzNiwgNiwgMSwgMjEyLCA3LCAyNDQsIDc1LCAzNiwgNSwgMSwgMjEyLCA3LCAKKyAgICAyNDQsIDc1LCAzNiwgNiwgMSwgMjEyLCA3LCAyNDEsIDEyMiwgMzYsIDUsIDEsIDIxMiwgNywgMjQxLCAxMjIsIDM2LCA2LCAKKyAgICAxLCAyMTIsIDcsIDI0MSwgMTAzLCAzNiwgNSwgMSwgMjEyLCA3LCAyNDEsIDEwMywgMzYsIDYsIDEsIDIyNCwgNDcsIDc4LCAKKyAgICAzNiwgNSwgMSwgMjI0LCA0NywgNzgsIDM2LCA2LCAxLCAyNDgsIDYzLCA3OCwgMzYsIDUsIDEsIDI0OCwgNjMsIDc4LCAzNiwgCisgICAgNiwgMSwgNTIsIDIyNCwgNDcsIDc4LCAzNiwgNSwgMSwgNTIsIDIyNCwgNDcsIDc4LCAzNiwgMSwgMjIzLCAyMjcsIDc4LCAKKyAgICAzOSwgMzYsIDIwNCwgMTQ2LCAzOSwgMzYsIDIwOSwgMTUzLCAyMjQsIDExNCwgNTQsIDM5LCAzNiwgMjM2LCAxMiwgMjI0LCAKKyAgICAxMTQsIDU0LCAzOSwgMzYsIDIwOSwgMzcsIDIyNCwgMTE0LCA1NCwgMjEyLCA1NSwgMjUwLCA1OSwgMzksIDM2LCAxLCAyMDcsIAorICAgIDExLCAyMzEsIDExMCwgMzksIDM2LCAxLCA3NSwgMzksIDM2LCAxLCAyMDMsIDExLCAzOSwgMzYsIDEsIDY4LCAzOSwgMzYsIAorICAgIDEsIDIzNywgOTEsIDU0LCAzOSwgMzYsIDEsIDIwMywgMzAsIDM5LCAzNiwgMSwgMjEyLCA3LCA1NCwgMzksIDM2LCAxLCAKKyAgICAyMjAsIDM2LCAzOSwgMzYsIDIyOSwgMjEzLCAzOSwgMzYsIDIxOSwgNDEsIDM2LCAyMjksIDIxMywgMzYsIDIxOSwgNDEsIAorICAgIDM2LCA2LCAxLCAyNDIsIDksIDM2LCA1LCAxLCAyNDIsIDksIDM2LCA2LCAxLCAyNDEsIDI0MSwgMzYsIDUsIDEsIDI0MSwgCisgICAgMjQxLCAzNiwgNiwgMSwgMjAyLCA0NywgMzYsIDUsIDEsIDIwMiwgNDcsIDM2LCA2LCAxLCAyNDYsIDI1NCwgMzYsIDUsIDEsIAorICAgIDI0NiwgMjU0LCAzNiwgNiwgMSwgMjQxLCAyMzgsIDM2LCA1LCAxLCAyNDEsIDIzOCwgMzYsIDYsIDEsIDIwOSwgMTg4LCAzLCAKKyAgICAxMDEsIDExMywgMzYsIDUsIDEsIDIwOSwgMTg4LCAzLCAxMDEsIDExMywgMzYsIDYsIDEsIDIwNywgMTU4LCAzNiwgNSwgMSwgCisgICAgMjA3LCAxNTgsIDM2LCA2LCAxLCAyMDcsIDI0NSwgMzYsIDUsIDEsIDIwNywgMjQ1LCAzNiwgNiwgMSwgMjA3LCAyNTAsIDM2LCAKKyAgICA1LCAxLCAyMDcsIDI1MCwgMzYsIDYsIDEsIDIwOSwgMTkzLCAzNiwgNSwgMSwgMjA5LCAxOTMsIDM2LCA2LCAxLCAyMzUsIAorICAgIDI1MSwgMzYsIDUsIDEsIDIzNSwgMjUxLCAzNiwgNiwgMSwgMjEyLCAxNzcsIDM2LCA1LCAxLCAyMTIsIDE3NywgMzYsIDYsIAorICAgIDEsIDUyLCA3OCwgMzYsIDUsIDEsIDUyLCA3OCwgMzYsIDYsIDEsIDI0NSwgMTI4LCA3OCwgMzYsIDUsIDEsIDI0NSwgMTI4LCAKKyAgICA3OCwgNjUsIDEsIDM2LCAyMzcsIDkxLCA1NCwgNjUsIDEsIDM2LCAyMTIsIDcsIDU0LCAzOSwgMzYsIDEsIDI0MSwgMTU0LCAKKyAgICAzOSwgMzYsIDEsIDIzMCwgMjI4LCA3NCwgMjQsIDEsIDYzLCAyNCwgMSwgMTczLCAyNCwgMSwgNjgsIDI0LCAxLCAyMjgsIAorICAgIDIwOSwgMjQsIDEsIDI0MSwgMTYxLCAyNCwgMSwgMjE2LCAxMzUsIDI0LCAxLCAyMTAsIDEsIDI0LCAxLCA3OCwgMjQsIDEsIAorICAgIDIyMCwgMjQ4LCAyNCwgMSwgNzUsIDI0LCAxLCAyMjgsIDExMywgMjQsIDEsIDE4NSwgMjQsIDEsIDIxNiwgMywgMjQsIDEsIAorICAgIDIxNiwgNTAsIDI0LCAxLCAyMjcsIDIyNSwgMjQsIDEsIDIyNSwgNywgMjQsIDEsIDIxMCwgMTgsIDI0LCAxLCAyMjMsIDIzLCAKKyAgICAyNCwgMSwgMjIyLCA0NiwgMjQsIDEsIDIyNiwgMTg1LCAyNCwgMSwgMjEwLCAxNzksIDI0LCAxLCAyMjMsIDI0NiwgMjQsIDEsIAorICAgIDIxMywgNiwgMjQsIDEsIDIxMiwgMTYyLCAyNCwgMSwgMjEzLCAxNiwgMjQsIDEsIDIxMywgMTEzLCAyNCwgMSwgMjI4LCAKKyAgICAxMzcsIDI0LCAxLCAyMjksIDE3MCwgMjQsIDEsIDIyMSwgNTUsIDI0LCAxLCAyMjEsIDg0LCAyNCwgMSwgMjIyLCAxNywgMjQsIAorICAgIDEsIDIwMiwgMjI5LCAyNCwgMSwgMjEyLCAxOTksIDI0LCAxLCAyMDIsIDE4NywgMjQsIDEsIDE5OCwgMjQsIDEsIDIyMSwgCisgICAgMTE4LCAyNCwgMSwgMjI5LCAxNTYsIDI0LCAxLCAyMTgsIDIxMiwgMjQsIDEsIDIyMiwgMzksIDI0LCAxLCAyMjEsIDk5LCAKKyAgICAyNCwgMSwgMjE3LCAxODMsIDI0LCAxLCAyMDMsIDIxNCwgMjQsIDEsIDIxOSwgMjMsIDI0LCAxLCAyNDAsIDUzLCAyNCwgMSwgCisgICAgMjE1LCAxNDUsIDI0LCAxLCAyMjYsIDIzOSwgMjQsIDEsIDIyNCwgMTU1LCAyNCwgMSwgMjIyLCAxMDAsIDI0LCAxLCAyMTYsIAorICAgIDc1LCAyNCwgMSwgMjE2LCAyMDIsIDI0LCAxLCAyMjksIDE4MCwgMjQsIDEsIDIyMiwgMTMxLCAyNCwgMSwgMjIyLCAxODIsIAorICAgIDI0LCAxLCAyMjIsIDIwMywgMjQsIDEsIDIxMiwgMjQyLCAyNCwgMSwgMjE3LCAxODgsIDI0LCAxLCAyMzksIDEwOCwgMjQsIAorICAgIDEsIDIzOSwgMTc5LCAyNCwgMSwgMjA0LCAxMTEsIDI0LCAxLCAyMDEsIDIwMSwgMjQsIDEsIDIyNywgMTQ4LCAyNCwgMSwgCisgICAgMjE4LCAxNjcsIDI0LCAxLCAyMjcsIDEwLCAyNCwgMSwgMjI5LCAyNiwgMjQsIDEsIDIyNSwgNDQsIDI0LCAxLCAyMTYsIAorICAgIDEwNywgMjQsIDEsIDIyNCwgMjQwLCAyNCwgMSwgMTkyLCAyNCwgMSwgMjA5LCAyLCAyNCwgMSwgMjI5LCAxMDAsIDI0LCAxLCAKKyAgICAyMjQsIDgyLCAyNCwgMSwgMjI1LCA1MiwgMjQsIDEsIDIwOSwgMTMyLCAyNCwgMSwgMjI4LCAyNDQsIDI0LCAxLCAyMDksIAorICAgIDE1MiwgMjQsIDEsIDIyMSwgODYsIDI0LCAxLCAyMTQsIDI1MSwgMjQsIDEsIDI0MCwgMTA0LCAyNCwgMSwgMjI4LCAyNDYsIAorICAgIDI0LCAxLCAyMjksIDIxLCAyNCwgMzksIDEzMSwgMjI4LCAyNTUsIDI0LCAzOSwgMTMxLCAyMDcsIDE5NCwgMjQsIDIyMiwgCisgICAgNDUsIDI0LCAyMzksIDEwMiwgMjExLCA2MSwgMjQsIDI0NSwgMjQyLCAyNCwgMjQ1LCAyMzMsIDI0LCAyMTMsIDE0MywgMjQsIAorICAgIDIxNywgNDcsIDgyLCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCAxLCAyMTgsIDExOSwgNjUsIDEsIDI0NiwgMTI4LCAKKyAgICAxNDMsIDIwMywgNzcsIDIxOCwgMTE5LCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCAxLCAyMTMsIDY1LCA2NSwgMSwgCisgICAgMjQ2LCAxMjgsIDE0MywgMjAzLCA3NywgMjEzLCA2NSwgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgMSwgMjE3LCA2NSwgCisgICAgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgNzcsIDIxNywgNjUsIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDEsIAorICAgIDIxNSwgMTQ1LCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCA3NywgMjE1LCAxNDUsIDY1LCAxLCAyNDAsIDE5OCwgMjQyLCAKKyAgICA4MywgMTQzLCAxNDIsIDY1LCAxLCAxMzgsIDI0MiwgODMsIDE0MywgMTQyLCA2NSwgMSwgMjI0LCAxNTAsIDI0MiwgODMsIAorICAgIDE0MywgMTQyLCA2NSwgMSwgMTI0LCAyNDIsIDgzLCAxNDMsIDE0MiwgNjUsIDEsIDI0MCwgMTk3LCAyNDIsIDgzLCAxNDMsIAorICAgIDE0MiwgNjUsIDEsIDI0MCwgMTk4LCAyNDIsIDgzLCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAxMzgsIDI0MiwgODMsIAorICAgIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDIyNCwgMTUwLCAyNDIsIDgzLCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAKKyAgICAxMjQsIDI0MiwgODMsIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDI0MCwgMTk3LCAyNDIsIDgzLCAyMjcsIDIxNCwgCisgICAgMTQzLCAxNDIsIDY1LCAxLCAyNDAsIDE5OCwgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMTM4LCAyMjcsIDIxNCwgMTQzLCAKKyAgICAxNDIsIDY1LCAxLCAyMjQsIDE1MCwgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMTI0LCAyMjcsIDIxNCwgMTQzLCAxNDIsIAorICAgIDY1LCAxLCAyNDAsIDE5NywgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgNzAsIDgwLCAxNDIsIDY1LCAxLCA3MCwgMjEyLCAKKyAgICA1NywgNjUsIDEsIDcwLCAyMzYsIDEwNiwgMTQyLCA2NSwgMSwgMjI2LCAyNTEsIDUwLCAyNDUsIDE2NiwgMjUwLCAyMTcsIAorICAgIDY1LCAxLCAyMTYsIDE4OCwgMTEyLCA0NywgNjUsIDEsIDIxNiwgMTg4LCAxMjEsIDQ3LCA2NSwgMSwgMjE2LCAxODgsIDI0MCwgCisgICAgMjEyLCA4MiwgNjUsIDEsIDIxNiwgMTg4LCAyMzAsIDIzOSwgMjQwLCAyMTIsIDgyLCA2NSwgMSwgMTI0LCAyMzAsIDIzOSwgCisgICAgMjQwLCAyMTIsIDgyLCA2NSwgMSwgMjExLCA0MiwgMjUsIDEzOCwgMjA4LCAxNjEsIDY1LCAxLCAyMTEsIDQyLCAyNSwgMTI0LCAKKyAgICAyMDgsIDE2MSwgOCwgNiwgMSwgMjQxLCAxNDksIDI1MSwgMzAsIDgsIDUsIDEsIDI0MSwgMTQ5LCAyNTEsIDMwLCA4LCA2LCAKKyAgICAxLCAyNDEsIDE0OSwgMjUxLCA1OSwgOCwgNSwgMSwgMjQxLCAxNDksIDI1MSwgNTksIDgsIDYsIDEsIDIzNywgMzEsIDgsIDUsIAorICAgIDEsIDIzNywgMzEsIDgsIDYsIDEsIDIwNywgMTA3LCA4LCA1LCAxLCAyMDcsIDEwNywgOCwgNiwgMSwgMjA4LCA4OSwgOCwgNSwgCisgICAgMSwgMjA4LCA4OSwgOCwgNiwgMSwgMjQ1LCAxMDcsIDgsIDUsIDEsIDI0NSwgMTA3LCA4LCA2LCAxLCAyNDUsIDEwOCwgMywgCisgICAgMjQ1LCAyMzMsIDgsIDUsIDEsIDI0NSwgMTA4LCAzLCAyNDUsIDIzMywgOCwgMSwgNSwgNiwgMjQwLCAxNzQsIDgsIDEsIDUsIAorICAgIDYsIDE5NCwgOCwgNiwgMSwgMjUyLCAyNSwgOCwgNSwgMSwgMjUyLCAyNSwgOCwgNiwgMSwgMjUwLCAxNzgsIDgsIDUsIDEsIAorICAgIDI1MCwgMTc4LCA4LCA2LCAxLCAyNTAsIDM0LCA4LCA1LCAxLCAyNTAsIDM0LCA4LCA2LCAxLCAyNTAsIDE4LCA4LCA1LCAxLCAKKyAgICAyNTAsIDE4LCA4LCA2LCAxLCAyNTAsIDE5LCAzLCAyMzYsIDEwNiwgMTQyLCA4LCA1LCAxLCAyNTAsIDE5LCAzLCAyMzYsIAorICAgIDEwNiwgMTQyLCA4LCA2LCAxLCAyNTAsIDgsIDgsIDUsIDEsIDI1MCwgOCwgOCwgNiwgMSwgMjE2LCA3MywgMjQ3LCAxMjYsIAorICAgIDMsIDI0MywgODUsIDgsIDUsIDEsIDIxNiwgNzMsIDI0NywgMTI2LCAzLCAyNDMsIDg1LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAKKyAgICA5NSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgOTUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNSwgMSwgCisgICAgMjMwLCA1NSwgMywgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAyMTEsIDMyLCAyNSwgMjQzLCAyMjgsIDk1LCAKKyAgICA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyMTEsIDMyLCAyNSwgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyNDcsIDIwMywgMTU5LCAKKyAgICA4LCA1LCAxLCAyNDcsIDIwMywgMTU5LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTM4LCA5NSwgOCwgNSwgMSwgMjI4LCAxMzEsIAorICAgIDMsIDEzOCwgOTUsIDgsIDYsIDEsIDE1OCwgMywgMTYzLCAyMTEsIDMyLCAyMTksIDE5OSwgOCwgNSwgMSwgMTU4LCAzLCAKKyAgICAxNjMsIDIxMSwgMzIsIDIxOSwgMTk5LCA4LCA2LCAxLCAxNTgsIDMsIDIyNywgMTQsIDgsIDUsIDEsIDE1OCwgMywgMjI3LCAKKyAgICAxNCwgOCwgNiwgMSwgMjIwLCAxOCwgOCwgNSwgMSwgMjIwLCAxOCwgOCwgNiwgMSwgMjE5LCAxODUsIDMsIDIxMSwgMzIsIAorICAgIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAyMTEsIDMyLCAyMDksIDI1LCAyNDQsIDIwLCA4LCA2LCAKKyAgICAxLCAyMTksIDE4NSwgMywgMjM5LCAxOTksIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAyMzksIDE5OSwgOCwgNiwgMSwgMjE5LCAKKyAgICAxODUsIDMsIDIxMSwgMTcwLCAyMDksIDI0OCwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDIxMSwgMTcwLCAyMDksIDI0OCwgOCwgCisgICAgNiwgMSwgMjE3LCAxMzUsIDMsIDIxMSwgMzIsIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDUsIDEsIDIxNywgMTM1LCAzLCAyMTEsIAorICAgIDMyLCAyMDksIDI1LCAyNDQsIDIwLCA4LCA2LCAxLCAyMTcsIDEzNSwgMywgMjQzLCAyMjgsIDk1LCA4LCA1LCAxLCAyMTcsIAorICAgIDEzNSwgMywgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyMTcsIDEsIDIxNSwgMTkyLCA4LCA1LCAxLCAyMTcsIDEsIDIxNSwgCisgICAgMTkyLCA4LCA2LCAxLCAyMTUsIDEzMiwgMjE1LCAxOTIsIDgsIDUsIDEsIDIxNSwgMTMyLCAyMTUsIDE5MiwgOCwgNiwgMSwgCisgICAgMjA2LCAxNjUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNiwgMSwgCisgICAgMjA0LCAxNTIsIDgsIDUsIDEsIDIwNCwgMTUyLCA4LCA2LCAxLCAyMDUsIDE5NywgMjAyLCAxNTksIDgsIDUsIDEsIDIwNSwgCisgICAgMTk3LCAyMDIsIDE1OSwgOCwgNiwgMSwgMjA5LCA0MSwgMywgOTUsIDgsIDUsIDEsIDIwOSwgNDEsIDMsIDk1LCA4LCA2LCAxLCAKKyAgICAyMDksIDQxLCAzLCAyMTEsIDMyLCAyMDksIDI1LCAyNDQsIDIwLCA4LCA1LCAxLCAyMDksIDQxLCAzLCAyMTEsIDMyLCAyMDksIAorICAgIDI1LCAyNDQsIDIwLCA4LCA2LCAxLCAyMDYsIDQ1LCA4LCA1LCAxLCAyMDYsIDQ1LCA4LCA2LCAxLCAyNDAsIDI1MCwgOCwgNSwgCisgICAgMSwgMjQwLCAyNTAsIDgsIDYsIDEsIDIzMCwgMjE1LCA4LCA1LCAxLCAyMzAsIDIxNSwgOCwgNiwgMSwgMjQ1LCAyMTgsIDgsIAorICAgIDUsIDEsIDI0NSwgMjE4LCA2NSwgMSwgMjA2LCAxOTMsIDgsIDUsIDEsIDI0MiwgMzIsIDgsIDUsIDEsIDIyNiwgMjIyLCA4LCAKKyAgICA1LCAxLCAyMjMsIDIyMCwgOCwgNSwgMSwgMjIxLCA0NywgOCwgNSwgMSwgMjE1LCAxMzEsIDgsIDEsIDUsIDYsIDIxNSwgCisgICAgMTMxLCA4LCA1LCAxLCAyMDcsIDE5MSwgOCwgNSwgMSwgMjA3LCA2LCA4LCA2LCAxLCAyMzEsIDQsIDI0NSwgNTEsIDgsIDUsIAorICAgIDEsIDIzMSwgNCwgMjQ1LCA1MSwgOCwgNiwgMSwgMjMxLCA0LCAyNDAsIDE3NCwgOCwgNSwgMSwgMjMxLCA0LCAyNDAsIDE3NCwgCisgICAgOCwgNiwgMSwgMjMxLCA0LCAyMzksIDc1LCA4LCA2LCAxLCAyMDcsIDE3NCwgMjMxLCA0LCAyMzksIDc1LCA4LCA1LCAxLCAKKyAgICAyMDcsIDE3NCwgMjMxLCA0LCAyMzksIDc1LCA4LCA2LCAxLCAyMDcsIDE3NCwgMTU5LCA4LCA1LCAxLCAyMDcsIDE3NCwgCisgICAgMTU5LCA4LCA2LCAxLCAyMzEsIDQsIDE0NiwgOCwgNSwgMSwgMjMxLCA0LCAxNDYsIDgsIDYsIDEsIDIzMSwgNCwgMTk0LCA4LCAKKyAgICA1LCAxLCAyMzEsIDQsIDE5NCwgOCwgNiwgMSwgMjMxLCA0LCAyMTAsIDY5LCA4LCA1LCAxLCAyMzEsIDQsIDIxMCwgNjksIAorICAgIDY1LCAxLCAxMjQsIDI0NiwgNTMsIDI1MSwgMTM4LCA2NSwgMSwgMjQ1LCAyNDIsIDY1LCAxLCAyMTIsIDIyOCwgMjQxLCAzNSwgCisgICAgNTQsIDgsIDYsIDEsIDIxNCwgMjU1LCA4LCA1LCAxLCAyMTQsIDI1NSwgOCwgNiwgMSwgMjA3LCAxNzQsIDIzNywgMTcxLCA4LCAKKyAgICA1LCAxLCAyMjgsIDEzMSwgMywgMjE2LCA3OSwgMjM2LCAxMTYsIDI1LCAyNDgsIDEyNCwgOCwgMSwgMjEyLCAxMTQsIDI0MywgCisgICAgODUsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyNDQsIDIwLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ0LCAyMCwgOCwgNiwgCisgICAgMSwgMjQ3LCAxMjYsIDMsIDE0MiwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDE0MiwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIAorICAgIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA2LCAxLCA2NiwgMywgMjM5LCAKKyAgICAxOTksIDgsIDUsIDEsIDY2LCAzLCAyMzksIDE5OSwgOCwgNiwgMSwgMjQwLCAxNzUsIDMsIDk1LCA4LCA1LCAxLCAyNDAsIAorICAgIDE3NSwgMywgOTUsIDgsIDYsIDEsIDIwNSwgMTgyLCAyNTEsIDEwOSwgOCwgNSwgMSwgMjA1LCAxODIsIDI1MSwgMTA5LCA4LCAKKyAgICA2LCAxLCAyMDUsIDE4MiwgMjIwLCA3MywgOCwgNSwgMSwgMjA1LCAxODIsIDIyMCwgNzMsIDgsIDYsIDEsIDIwNSwgMTgyLCAKKyAgICAyMDcsIDI0LCA4LCA1LCAxLCAyMDUsIDE4MiwgMjA3LCAyNCwgOCwgNiwgMSwgMjM5LCA3NiwgMywgMjIwLCA4OSwgOTUsIDgsIAorICAgIDUsIDEsIDIzOSwgNzYsIDMsIDIyMCwgODksIDk1LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAyMjAsIDg5LCA5NSwgOCwgNSwgMSwgCisgICAgMjMwLCA1NSwgMywgMjIwLCA4OSwgOTUsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyMjAsIDg5LCA5NSwgOCwgNSwgMSwgMjIzLCAKKyAgICAxNjQsIDMsIDIyMCwgODksIDk1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDIyMCwgODksIDk1LCA4LCA1LCAxLCAyMTcsIDEsIDMsIAorICAgIDIyMCwgODksIDk1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyMjAsIDg5LCA5NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjIwLCAKKyAgICA4OSwgOTUsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAxMTMsIDgsIDYsIDEsIDIxNiwgNzMsIDE3MSwgNzQsIDgsIDYsIDEsIAorICAgIDEzMiwgMjM5LCA3NSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDI0OCwgMTI0LCA4LCA2LCAxLCAyMDcsIDE3NCwgMjMwLCA1NCwgCisgICAgOCwgNiwgMSwgMjA3LCAxNzQsIDIxMCwgNjksIDgsIDYsIDEsIDIzMCwgMTg1LCAzLCAyNDUsIDEyNiwgOCwgNiwgMSwgMjQ2LCAKKyAgICAxNDIsIDgsIDYsIDEsIDI0OCwgMTA2LCA4LCA1LCAxLCAyNDgsIDEwNiwgOCwgNiwgMSwgMjIwLCAzNiwgOCwgNSwgMSwgCisgICAgMjIwLCAzNiwgOCwgMjQxLCA0MCwgMSwgMjEyLCAxNTQsIDc1LCA2NSwgMSwgNiwgMjM3LCAxNzIsIDMsIDk1LCA2NSwgMSwgCisgICAgNSwgMzIsIDIyMCwgNzMsIDgsIDEsIDUsIDYsIDIwNywgMTc0LCAyMjYsIDE4NSwgOCwgMjQxLCA0MCwgMSwgMjE2LCA3MywgCisgICAgMjQwLCAxNzQsIDgsIDI0MSwgNDAsIDEsIDIxNiwgNzMsIDIxOSwgMTg0LCA4LCAyNDEsIDQwLCAxLCAyMzAsIDIzOSwgMjI2LCAKKyAgICAxODUsIDgsIDI0MSwgNDAsIDEsIDIzNSwgMjA2LCAyMjcsIDIwLCA4LCAyNDEsIDQwLCAxLCAyNTAsIDEyNiwgMjI2LCAxODUsIAorICAgIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCA2MywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDc1LCAyMTAsIDE0OSwgMjIzLCA5NCwgMiwgCisgICAgMjQyLCAxMSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDY4LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgNzQsIDIxMCwgMTQ5LCAKKyAgICAyMjMsIDk0LCAxLCA3OCwgMjEwLCAxNDksIDIyMywgOTQsIDIsIDIzNywgODUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjksIAorICAgIDI2LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjI5LCAxMTUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMzgsIDM5LCAyMTAsIAorICAgIDE0OSwgMjIzLCA5NCwgMSwgMjM4LCA5MSwgMjEwLCAxNDksIDIyMywgOTQsIDIsIDI1MCwgMTgwLCAyMTAsIDE0OSwgMjIzLCAKKyAgICA5NCwgMSwgMjQ1LCAyNTQsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDYsIDExNiwgMjEwLCAxNDksIDIyMywgOTQsIDEsIAorICAgIDIzMCwgMTAxLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjMwLCAxNDMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMDcsIDIxOCwgCisgICAgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIwNywgMjI0LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjQ0LCA5MCwgMjEwLCAxNDksIAorICAgIDIyMywgOTQsIDEsIDI0NCwgOTksIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAxMzUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAKKyAgICAyMDksIDQ3LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjQzLCAxMTMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDMsIDIzNywgCisgICAgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIyMSwgMTkxLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjE4LCA2OSwgMjEwLCAxNDksIAorICAgIDIyMywgOTQsIDEsIDIxOCwgMTgwLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjQ4LCAyMywgMjEwLCAxNDksIDIyMywgOTQsIAorICAgIDEsIDI0OCwgOTAsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjQsIDgyLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjE1LCAKKyAgICAyMjcsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjcsIDQ5LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjE1LCAxNzEsIDIxMCwgCisgICAgMTQ5LCAyMjMsIDk0LCAxLCAyMTIsIDEzLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjM2LCAxMzYsIDIxMCwgMTQ5LCAyMjMsIAorICAgIDk0LCAyMiwgMiwgNjMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgNzUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgCisgICAgNjgsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgNzQsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgMjIwLCAxOCwgMjEwLCAKKyAgICAxNDksIDIyMywgOTQsIDIxOCwgNjQsIDIyNSwgOTIsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMTgsIDY0LCAyMjUsIDkxLCAyMTAsIAorICAgIDE0OSwgMjIzLCA5NCwgMjE4LCA2NCwgMjI1LCA5MCwgMjEwLCAxNDksIDIyMywgOTQsIDIxOCwgNjQsIDIyNSwgODksIDE1MywgCisgICAgMjMxLCAzMywgMjM5LCAxMzgsIDExOCwgMjE3LCA1NSwgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgCisgICAgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTI2LCAyMTcsIDUzLCAxNTMsIDIzMSwgMzMsIDIzOSwgMTM4LCAxMTgsIDIxMiwgCisgICAgODAsIDE1MywgMjMxLCAzMywgMjM5LCAxMzgsIDExOCwgMjQxLCAxMzgsIDE1MywgMjMxLCAzMywgMjM5LCAxMzgsIDEyNiwgCisgICAgMjEyLCA3OSwgMTUzLCAyMzEsIDMzLCAyMTcsIDU2LCA4MiwgMTUzLCAyMzEsIDMzLCAyMTgsIDk2LCA4MiwgMTUzLCAyMzEsIAorICAgIDMzLCAyMTUsIDEyMCwgODIsIDE1MywgMjMxLCAzMywgMjE3LCA1NywgODIsIDIxOCwgMjA0LCAxLCAxNzMsIDIxOCwgMjA0LCAKKyAgICAxLCAyMjksIDE0NCwgMjE4LCAyMDQsIDEsIDIzOSwgOCwgMjE4LCAyMDQsIDEsIDIyMiwgMjAzLCAyMTgsIDIwNCwgMSwgCisgICAgMjQ3LCA5MiwgMjE4LCAyMDQsIDEsIDI0NiwgMTk5LCAyMTgsIDIwNCwgMSwgMjMwLCAxODEsIDIxOCwgMjA0LCAxLCAyMjEsIAorICAgIDExLCAyMTgsIDIwNCwgMSwgMjEwLCAyMiwgMjE4LCAyMDQsIDEsIDIwOSwgMTA4LCAyMTgsIDIwNCwgMSwgMjQ0LCAyMTIsIAorICAgIDIxOCwgMjA0LCAxLCAyMDEsIDIwMSwgMjE4LCAyMDQsIDEsIDE4NSwgMjE4LCAyMDQsIDEsIDIxOCwgMjA4LCAyMTgsIDIwNCwgCisgICAgMSwgMjQ5LCAzMiwgMjE4LCAyMDQsIDEsIDE5MiwgMjE4LCAyMDQsIDEsIDIwOCwgMjAsIDIxOCwgMjA0LCAxLCAyMDgsIDEwLCAKKyAgICAyMTgsIDIwNCwgMSwgMjQxLCAyNTUsIDIxOCwgMjA0LCAxLCAyMDQsIDExMSwgMjE4LCAyMDQsIDEsIDIwMiwgODAsIDIxOCwgCisgICAgMjA0LCAxLCAyMDIsIDExNiwgMjE4LCAyMDQsIDEsIDUsIDYzLCAyMTgsIDIwNCwgMSwgMTk4LCAyMTgsIDIwNCwgMSwgMjE2LCAKKyAgICAyMjAsIDIxOCwgMjA0LCAxLCAyMjgsIDExMywgMjE4LCAyMDQsIDEsIDIxMywgOTAsIDIxOCwgMjA0LCAxLCAyMTUsIDM2LCAKKyAgICAyMTgsIDIwNCwgMSwgMTUyLCAyMTgsIDIwNCwgMSwgNjMsIDIxOCwgMjA0LCAxLCA3NSwgMjE4LCAyMDQsIDEsIDY4LCAyMTgsIAorICAgIDIwNCwgMSwgNzQsIDIxOCwgMjA0LCAxLCA3OCwgMjE4LCAyMDQsIDEsIDIxNywgMTI2LCAyMTgsIDIwNCwgMSwgMjAzLCAKKyAgICAxODIsIDIxOCwgMjA0LCAxLCAyNDAsIDEwOCwgMjE4LCAyMDQsIDEsIDIzOCwgMTU1LCAyMTgsIDIwNCwgMSwgMjQxLCAxNjEsIAorICAgIDIxOCwgMjA0LCAyMTAsIDI1NCwgMSwgMjA0LCAxMTEsIDIxOCwgMjA0LCAyMTAsIDI1NCwgMSwgMTk4LCAyMTgsIDIwNCwgMSwgCisgICAgMjA3LCAyNDEsIDIxOCwgMjA0LCAxLCAyMDcsIDIyOSwgMjE4LCAyMDQsIDEsIDI0NCwgMTIwLCAyMTgsIDIwNCwgMSwgMjIxLCAKKyAgICAyMjcsIDIxOCwgMjA0LCAxLCAyNTAsIDI1NSwgMTk4LCAyMTgsIDIwNCwgMSwgMjA1LCAxODUsIDIxMywgOTAsIDIxOCwgCisgICAgMjA0LCAxLCAyMDUsIDE4NiwgMTUyLCAyMTgsIDIwNCwgMSwgMjUwLCA2NiwgMjQwLCAxMDgsIDIxOCwgMjA0LCAyMTAsIAorICAgIDI1NCwgMSwgMjE2LCAyMjAsIDIxOCwgMjA0LCAyMTAsIDIwMSwgMSwgMjE2LCAyMjAsIDIxOCwgMjA0LCAxLCAyNDcsIDUyLCAKKyAgICAyMTgsIDIwNCwgMjEyLCAxMjAsIDIzNywgNjUsIDgyLCAyMTgsIDIwNCwgNTIsIDIzNywgNjUsIDgyLCAyMTgsIDIwNCwgCisgICAgMTMxLCAyMTMsIDgyLCAyMTgsIDIwNCwgMTMxLCA1MiwgMjEzLCA4MiwgMjE0LCAyMTUsIDIsIDI1MCwgMTgwLCAyMTQsIAorICAgIDIxNSwgMiwgMjA1LCAxOTksIDIxNCwgMjE1LCAxLCA2MywgMjE0LCAyMTUsIDEsIDI1MiwgMjUsIDIxNCwgMjE1LCAxLCA3NSwgCisgICAgMjE0LCAyMTUsIDEsIDIzMSwgODMsIDIxNCwgMjE1LCAxLCA2OCwgMjE0LCAyMTUsIDEsIDIwNiwgMTc4LCAyMTQsIDIxNSwgCisgICAgMSwgMTI1LCAxNDYsIDIxNCwgMjE1LCAxLCAxMjUsIDIxNSwgMTg2LCAyMTQsIDIxNSwgMSwgMTI1LCAxNTksIDIxNCwgMjE1LCAKKyAgICAxLCAxMjUsIDIyNywgNzgsIDIxNCwgMjE1LCAxLCA3NCwgMjE0LCAyMTUsIDEsIDI0MSwgMTYxLCAyMTQsIDIxNSwgMSwgCisgICAgMjUxLCA2NCwgMjE0LCAyMTUsIDEsIDc4LCAyMTQsIDIxNSwgMSwgMjIwLCAxOCwgMjE0LCAyMTUsIDEsIDI1MCwgMzQsIAorICAgIDIxNCwgMjE1LCAxLCAxNzMsIDIxNCwgMjE1LCAxLCAyMjksIDE0NCwgMjE0LCAyMTUsIDEsIDIzOSwgOCwgMjE0LCAyMTUsIAorICAgIDEsIDIzOCwgMTE5LCAyMTQsIDIxNSwgMSwgMjIyLCAyMDMsIDIxNCwgMjE1LCAxLCAyNDcsIDkyLCAyMTQsIDIxNSwgMSwgCisgICAgMjQ2LCAxOTksIDIxNCwgMjE1LCAxLCAyMzAsIDE4MSwgMjE0LCAyMTUsIDEsIDIzMCwgMTQ5LCAyMTQsIDIxNSwgMSwgMjIxLCAKKyAgICAxMSwgMjE0LCAyMTUsIDEsIDIwNywgMjQxLCAyMTQsIDIxNSwgMSwgMjA3LCAyMjksIDIxNCwgMjE1LCAxLCAyNDQsIDEyMCwgCisgICAgMjE0LCAyMTUsIDEsIDI0NCwgMTA0LCAyMTQsIDIxNSwgMSwgMjIxLCAyMjcsIDIxNCwgMjE1LCAxLCAyMTAsIDIyLCAyMTQsIAorICAgIDIxNSwgMSwgMjA5LCAxMDgsIDIxNCwgMjE1LCAxLCAyNDQsIDIxMiwgMjE0LCAyMTUsIDEsIDI0NCwgMSwgMjE0LCAyMTUsIAorICAgIDEsIDIwMSwgMjAxLCAyMTQsIDIxNSwgMSwgMTg1LCAyMTQsIDIxNSwgMSwgMjE4LCAyMDgsIDIxNCwgMjE1LCAxLCAyNDksIAorICAgIDMyLCAyMTQsIDIxNSwgMSwgMjQ4LCA5OCwgMjE0LCAyMTUsIDEsIDE5MiwgMjE0LCAyMTUsIDEsIDE5OCwgMjE0LCAyMTUsIAorICAgIDEsIDIxNiwgMjIwLCAyMTQsIDIxNSwgMSwgMjI4LCAxMTMsIDIxNCwgMjE1LCAxLCAyMDYsIDg2LCAyMTQsIDIxNSwgMSwgCisgICAgMjEzLCA5MCwgMjE0LCAyMTUsIDEsIDIxMSwgMTY0LCAyMTQsIDIxNSwgMSwgMjE1LCAzNiwgMjE0LCAyMTUsIDEsIDE1MiwgCisgICAgMjE0LCAyMTUsIDEsIDIyNywgNzcsIDIxNCwgMjE1LCAxMDksIDIsIDIzNywgMTU1LCAyMTQsIDIxNSwgMjIsIDIsIDI1MiwgCisgICAgMjUsIDIxNCwgMjE1LCAyMiwgMiwgNzUsIDIxNCwgMjE1LCAyMiwgMiwgMjMxLCA4MywgMjE0LCAyMTUsIDIyLCAyLCA2OCwgCisgICAgMjE0LCAyMTUsIDIyLCAyLCAyMDYsIDE3OCwgMjE0LCAyMTUsIDIyLCAyLCAxMjUsIDE0NiwgMjE0LCAyMTUsIDIyLCAyLCAKKyAgICAxMjUsIDIxNSwgMTg2LCAyMTQsIDIxNSwgMjIsIDIsIDEyNSwgMTU5LCAyMTQsIDIxNSwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgCisgICAgMjE0LCAyMTUsIDIyLCAyLCA3NCwgMjE0LCAyMTUsIDIyLCAyLCAyNDEsIDE2MSwgMjE0LCAyMTUsIDIyLCAyLCAyNTEsIDY0LCAKKyAgICAyMTQsIDIxNSwgMjIsIDIsIDc4LCAyMTQsIDIxNSwgMjIsIDIsIDIyMCwgMTgsIDIxNCwgMjE1LCAyMiwgMiwgMjUwLCAzNCwgCisgICAgMjE0LCAyMTUsIDIsIDIwNSwgMjA0LCAyMTQsIDIxNSwgMjQ0LCAxNjYsIDIxNCwgMjE1LCA1MiwgMjQ0LCAxNjYsIDIxNCwgCisgICAgMjE1LCAxNywgMjAyLCA4NCwgMjE0LCAyMTUsIDE3LCAxMDUsIDIxNCwgMjE1LCAxNywgMTA4LCAyMTQsIDIxNSwgMTcsIAorICAgIDE0NywgMjE0LCAyMTUsIDE3LCAxNDksIDIxNCwgMjE1LCAxNywgMTcwLCAyMTQsIDIxNSwgMTcsIDE5NSwgMjE0LCAyMTUsIAorICAgIDE3LCAyMTMsIDExMSwgMjE0LCAyMTUsIDE3LCAxOTksIDIxNCwgMjE1LCAxNywgMjIyLCA2MywgMzksIDkyLCAxNywgMjAyLCAKKyAgICA4NCwgMzksIDkyLCAxNywgMTA1LCAzOSwgOTIsIDE3LCAxMDgsIDM5LCA5MiwgMTcsIDE0NywgMzksIDkyLCAxNywgMTQ5LCAKKyAgICAzOSwgOTIsIDE3LCAxNzAsIDM5LCA5MiwgMTcsIDE5NSwgMzksIDkyLCAxNywgMjEzLCAxMTEsIDM5LCA5MiwgMTcsIDE5OSwgCisgICAgMzksIDkyLCAxNywgMjIyLCA2MywgMzksIDkyLCAxLCA2MywgMzksIDkyLCAxLCA2OCwgMzksIDkyLCAxLCAxNzMsIDM5LCAKKyAgICA5MiwgMSwgMjAxLCAyMDEsIDM5LCA5MiwgMSwgMTg1LCAzOSwgOTIsIDEsIDIxNiwgMjIwLCAzOSwgOTIsIDEsIDIwNSwgCisgICAgMjMwLCAzOSwgOTIsIDIsIDI1MCwgMTcsIDkyLCAyLCAyMTEsIDIyNywgMjQ3LCA1MiwgOTIsIDIsIDI0NywgNTMsIDIwNSwgCisgICAgMjA0LCA5MiwgMiwgNTIsIDI0NywgNTMsIDIwNSwgMjA0LCA5MiwgMiwgMjQ3LCA1MywgMTA4LCA5MiwgMiwgMjQ3LCA1MywgCisgICAgMTQ3LCA5MiwgMiwgMjQ3LCA1MywgMjUwLCAxNywgOTIsIDIsIDIxNywgMTYyLCA5MiwgMjM4LCAyMjgsIDI0MCwgNywgOTIsIAorICAgIDI0NywgMzMsIDkyLCAyMzcsIDU4LCA5MiwgMiwgMjEyLCAxNTcsIDkyLCAyMzAsIDE3MywgMjIwLCAzOSwgMjI5LCAyMDcsIAorICAgIDIyNywgMTQ5LCAxNywgMjAyLCA4NCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTA1LCAyMjksIDIwNywgMjI3LCAxNDksIAorICAgIDE3LCAxMDgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDE0NywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTQ5LCAyMjksIAorICAgIDIwNywgMjI3LCAxNDksIDE3LCAxNzAsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDE5NSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAKKyAgICAxNywgMjEzLCAxMTEsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDE5OSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMjIyLCAKKyAgICA2MywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAxNzMsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjI5LCAxNDQsIDIyOSwgCisgICAgMjA3LCAyMjcsIDE0OSwgMSwgMjM5LCA4LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIyMiwgMjAzLCAyMjksIDIwNywgMjI3LCAKKyAgICAxNDksIDEsIDIxNSwgMzYsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjEzLCA5MCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAKKyAgICAyMDIsIDExNiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMjEsIDExLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIxMCwgMjIsIAorICAgIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjM2LCAzMCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMDEsIDIwMSwgMjI5LCAKKyAgICAyMDcsIDIyNywgMTQ5LCAxLCAxODUsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjE4LCAyMDgsIDIyOSwgMjA3LCAyMjcsIAorICAgIDE0OSwgMSwgMTkyLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDI0NCwgMjEyLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDI0OSwgCisgICAgMzIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjE2LCAyMjAsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMTk4LCAyMjksIAorICAgIDIwNywgMjI3LCAxNDksIDEsIDIyOCwgMTEzLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIwNCwgMTExLCAyMjksIDIwNywgCisgICAgMjI3LCAxNDksIDEsIDIwOSwgMTA4LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDE1MiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAKKyAgICAyMDYsIDg2LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDI0NywgOTIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgNjMsIDIyOSwgCisgICAgMjA3LCAyMjcsIDE0OSwgMSwgMjIwLCA3MywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCA3NSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAKKyAgICAxLCAyMjAsIDE4LCAyMjksIDIwNywgMjI3LCAxNDksIDIyLCAyMDcsIDI0LCAyMjksIDIwNywgMjI3LCAxNDksIDIyLCA3NCwgCisgICAgMjI5LCAyMDcsIDIyNywgMTQ5LCAyMiwgNjgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMjIsIDI0MSwgMTYxLCAyMjksIDIwNywgCisgICAgMjI3LCAxNDksIDIyLCA3OCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNDMsIDIxOCwgODQsIDIyOSwgMjA3LCAyMjcsIDE0OSwgCisgICAgMTQzLCAyNDcsIDY4LCAyMjksIDIwNywgMjI3LCAxNDksIDE0MywgMjQ3LCA2OSwgMjE4LCA4NCwgMjI5LCAyMDcsIDIyNywgCisgICAgMTQ5LCAyLCAyNDUsIDcwLCAyMjksIDIwNywgMjI3LCAxNDksIDIsIDIxMiwgMTcwLCAyMTYsIDExOSwgMSwgMTczLCAyMTYsIAorICAgIDExOSwgMSwgMjM5LCA4LCAyMTYsIDExOSwgMSwgMjIyLCAyMDMsIDIxNiwgMTE5LCAxLCAyMTAsIDIyLCAyMTYsIDExOSwgMSwgCisgICAgMjQ0LCAyMTIsIDIxNiwgMTE5LCAxLCAyMDEsIDIwMSwgMjE2LCAxMTksIDEsIDE4NSwgMjE2LCAxMTksIDEsIDI0OSwgMzIsIAorICAgIDIxNiwgMTE5LCAxLCAxOTIsIDIxNiwgMTE5LCAxLCAyNDcsIDkyLCAyMTYsIDExOSwgMSwgMjMwLCAxODEsIDIxNiwgMTE5LCAKKyAgICAxLCAyMjEsIDExLCAyMTYsIDExOSwgMSwgMjE1LCAzNiwgMjE2LCAxMTksIDEsIDIxNiwgMjIwLCAyMTYsIDExOSwgMSwgCisgICAgMjI4LCAxMTMsIDIxNiwgMTE5LCAxLCAxOTgsIDIxNiwgMTE5LCAxLCAyMDQsIDExMSwgMjE2LCAxMTksIDEsIDE1MiwgMjE2LCAKKyAgICAxMTksIDEsIDIyNSwgNTQsIDIxNiwgMTE5LCAxLCAyMjIsIDE4MiwgMjE2LCAxMTksIDEsIDIyMywgMjUsIDIxNiwgMTE5LCAKKyAgICAxLCAyMjAsIDIzNCwgMjE2LCAxMTksIDEsIDYzLCAyMTYsIDExOSwgMjIsIDIsIDc1LCAyMTYsIDExOSwgMjIsIDIsIDY4LCAKKyAgICAyMTYsIDExOSwgMjIsIDIsIDc0LCAyMTYsIDExOSwgMjIsIDIsIDI1MSwgNjQsIDIxNiwgMTE5LCAyMiwgMiwgNzgsIDIxNiwgCisgICAgMTE5LCAyMiwgMiwgMjUwLCAzNCwgMjE2LCAxMTksIDIyLCAyLCAyNDAsIDIzOCwgMjE2LCAxMTksIDIyLCAyLCAyNDEsIAorICAgIDE4OSwgMjE2LCAxMTksIDEwOSwgMiwgMjIyLCAyMDUsIDIxNiwgMTE5LCAxMDksIDIsIDIyMywgMTYzLCAyMTYsIDExOSwgCisgICAgMTA5LCAyLCAxNDYsIDIxNiwgMTE5LCAxMDksIDIsIDIzNywgMTcxLCAyMTYsIDExOSwgMjA1LCAyMDQsIDIxNiwgMTE5LCAKKyAgICAyMTQsIDE2OCwgODIsIDI4LCAxMjMsIDIwOCwgMjM2LCAyOCwgMTIzLCAyMDgsIDIzNSwgMjgsIDEyMywgMjA4LCAyMzMsIAorICAgIDI4LCAxMjMsIDIwOCwgMjM4LCAyOCwgMTIzLCAyMTYsIDQyLCAyOCwgMTIzLCAyMTYsIDI2LCAyOCwgMTIzLCAyMTYsIDIxLCAKKyAgICAyOCwgMTIzLCAyMTYsIDIzLCAyOCwgMTIzLCAyMTYsIDM5LCAyOCwgMTIzLCAyMTYsIDMyLCAyOCwgMTIzLCAyMTYsIDI1LCAKKyAgICAyOCwgMTIzLCAyMTYsIDQ0LCAyOCwgMTIzLCAyMTYsIDI3LCAyOCwgMTIzLCAyMTYsIDQ2LCAyOCwgMTIzLCAyMTYsIDQzLCAKKyAgICAyOCwgMTIzLCAyMjQsIDEzNywgMjgsIDEyMywgMjI0LCAxMjgsIDI4LCAxMjMsIDIyNCwgMTMxLCAyOCwgMTIzLCAyMTgsIAorICAgIDEzOCwgMjgsIDEyMywgMjE4LCAxNDksIDI4LCAxMjMsIDIxOCwgMTUwLCAyOCwgMTIzLCAyMTEsIDE0OCwgMjgsIDEyMywgCisgICAgMjMxLCA5NiwgMjgsIDEyMywgMjMxLCAxMDMsIDI4LCAxMjMsIDIxMSwgMTU5LCAyOCwgMTIzLCAyMTEsIDE0NiwgMjgsIAorICAgIDEyMywgMjE4LCAxODksIDI4LCAxMjMsIDIzNiwgMjQ2LCAyOCwgMTIzLCAyMTEsIDE0MywgMTkwLCAyLCAyMTksIDEwMiwgCisgICAgMTkwLCAyLCAyNDYsIDIzNSwgMTkwLCAyLCAyMjcsIDI0MiwgMTkwLCAyLCAyMDQsIDIwLCAxOTAsIDEsIDYzLCAxOTAsIDEsIAorICAgIDIzNSwgMjA2LCAyMjksIDIxMSwgMTkwLCAxLCA3NSwgMTkwLCAxLCAyMzEsIDgzLCAxOTAsIDEsIDY4LCAxOTAsIDEsIDIxOSwgCisgICAgMTY5LCAyNDYsIDIwNSwgMTkwLCAxLCAyMjIsIDIwNCwgMjI3LCAyMDEsIDE5MCwgMSwgMjIyLCAyMDQsIDIyNywgMjAyLCAKKyAgICAyMTYsIDE3MywgMTkwLCAxLCA3NCwgMTkwLCAxLCAyNTEsIDY0LCAxOTAsIDEsIDc4LCAxOTAsIDEsIDE3MywgMTkwLCAxLCAKKyAgICAyMzAsIDQ0LCAyMTQsIDIyNywgMTkwLCAxLCAyMzAsIDQ0LCAyMjMsIDIwNSwgMTkwLCAxLCAyMzksIDgsIDE5MCwgMSwgCisgICAgMjM5LCA5LCAyMjMsIDIwNSwgMTkwLCAxLCAyMjIsIDIwMywgMTkwLCAxLCAyNDcsIDkyLCAxOTAsIDEsIDI0NywgOTMsIAorICAgIDIyMywgMjA1LCAxOTAsIDEsIDIzMCwgMTgxLCAxOTAsIDEsIDIyMSwgMTIsIDIyMywgMjA1LCAxOTAsIDEsIDIzMCwgMTgyLCAKKyAgICAyMjUsIDE0NCwgMTkwLCAxLCAyMjEsIDExLCAxOTAsIDEsIDIwNywgMjQxLCAxOTAsIDEsIDIwNywgMjQyLCAyMjUsIDE0NCwgCisgICAgMTkwLCAxLCAyNDQsIDEyMCwgMTkwLCAxLCAyNDQsIDEyMSwgMjI1LCAxNDQsIDE5MCwgMSwgMjIzLCAxMTEsIDIyMywgMjA1LCAKKyAgICAxOTAsIDEsIDIxMCwgMjIsIDE5MCwgMSwgMjEwLCAyMywgMjIzLCAyMDUsIDE5MCwgMSwgMjQ0LCAyMTIsIDE5MCwgMSwgCisgICAgMjQ0LCAyMTMsIDIyNSwgMTQ0LCAxOTAsIDEsIDIwMSwgMjAxLCAxOTAsIDEsIDE4NSwgMTkwLCAxLCAyMTksIDE2OSwgMjIzLCAKKyAgICAyMDUsIDE5MCwgMSwgMjQ5LCAzMiwgMTkwLCAxLCAyNDksIDMzLCAyMjMsIDIwNSwgMTkwLCAxLCAxOTIsIDE5MCwgMSwgCisgICAgMTk4LCAxOTAsIDEsIDIxNiwgMjIwLCAxOTAsIDEsIDIxNiwgMjIxLCAyNTEsIDc0LCAxOTAsIDEsIDIyOCwgMTEzLCAxOTAsIAorICAgIDEsIDIwNCwgMTExLCAxOTAsIDEsIDIxNSwgMzcsIDIyMywgMjA1LCAxOTAsIDEsIDIxNSwgMzcsIDIyNSwgMTQ0LCAxOTAsIAorICAgIDEsIDIxNSwgMzYsIDE5MCwgMSwgMTUyLCAxOTAsIDIsIDI0NiwgMjM2LCAyMDksIDE1NSwgMTkwLCAyMiwgMiwgMjA5LCAKKyAgICAyMTQsIDE5MCwgMjIsIDIsIDIwOCwgMTY2LCAxOTAsIDIyLCAyLCAyMDMsIDIxMSwgMTkwLCAyMiwgMiwgMjAzLCAyMTIsIAorICAgIDIyNCwgMjUxLCAxOTAsIDIyLCAyLCAyMTAsIDIyNCwgMTkwLCAyMiwgMiwgMjEwLCAyMjUsIDIyNCwgMjM5LCAxOTAsIDIyLCAKKyAgICAyLCAyMDksIDIzNSwgMTkwLCAyMiwgMiwgMjQzLCAxNjMsIDIyMywgMjA0LCAxOTAsIDIyLCAyLCAyMTgsIDI0OSwgMTkwLCAKKyAgICAxMDksIDIsIDIyOSwgMTczLCAxOTAsIDEwOSwgMiwgMjE5LCA2LCAxOTAsIDEwOSwgMiwgMjQ3LCA3NywgMTkwLCAyMTksIAorICAgIDExNSwgMTkwLCA0OSwgMjE2LCA5MywgMTkwLCA1MCwgMjE2LCA5MywgMTkwLCAyMTksIDE1OCwgMjUwLCAyMjUsIDE5MCwgCisgICAgMjE5LCAxNTgsIDIyNSwgMTYyLCAxOTAsIDIxOSwgMTU4LCAyMjYsIDIyNiwgMTkwLCAyMTksIDE1OCwgMjA0LCAxNCwgMTkwLCAKKyAgICAyMTksIDE1OCwgMjE5LCAxMTYsIDE5MCwgMjE5LCAxNTgsIDIyNywgMTA2LCAxOTAsIDIxOSwgMTU4LCAyMjYsIDIyMCwgCisgICAgMTkwLCAyMTksIDE1OCwgMjUxLCAxMTYsIDE5MCwgMjE5LCAxNTgsIDI1MSwgMTE3LCAyNTEsIDExNiwgMTkwLCAyMTksIAorICAgIDE1OCwgMjE4LCAxMDcsIDE5MCwgMjA3LCAxNzQsIDIxOSwgMTU4LCAyMTgsIDEwNywgMTkwLCAyMTksIDExMSwgMTkwLCAxNywgCisgICAgMjAyLCA4NCwgMTkwLCAxNywgMTA1LCAxOTAsIDE3LCAxMDgsIDE5MCwgMTcsIDE0NywgMTkwLCAxNywgMTQ5LCAxOTAsIDE3LCAKKyAgICAxNzAsIDE5MCwgMTcsIDE5NSwgMTkwLCAxNywgMjEzLCAxMTEsIDE5MCwgMTcsIDE5OSwgMTkwLCAxNywgMjIyLCA2MywgCisgICAgMTkwLCAyMTksIDE1OCwgMjA4LCAyMDIsIDIwNywgMTg5LCAxOTAsIDIxOSwgMTU4LCAyMzAsIDIxMSwgNjksIDEsIDIxMywgCisgICAgNjcsIDIzOCwgMTE5LCA2OSwgMSwgMjEzLCA2NywgMjQ2LCAxOTksIDY5LCAxLCAyMTMsIDY3LCAyMzAsIDE0OSwgNjksIDEsIAorICAgIDIxMywgNjcsIDIyMSwgMjI3LCA2OSwgMSwgMjEzLCA2NywgMjQ4LCA5OCwgNjksIDIsIDIxMywgNjcsIDIxNCwgMjEzLCA2OSwgCisgICAgNjUsIDEsIDIxMywgNjcsIDIxNiwgMTM2LCA2OSwgMSwgNDUsIDIyOCwgODUsIDIyMSwgMTEsIDY5LCAxLCA0NSwgMjI4LCAKKyAgICA4NSwgMjQwLCAxMDgsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjM5LCA4LCA2OSwgMSwgNDUsIDIyOCwgODUsIDIzOCwgMTE5LCAKKyAgICA2OSwgMSwgNDUsIDIyOCwgODUsIDIzMCwgMTgxLCA2OSwgMSwgNDUsIDIyOCwgODUsIDIzMCwgMTQ5LCA2OSwgMSwgNDUsIAorICAgIDIyOCwgODUsIDI0NCwgMTIwLCA2OSwgMSwgNDUsIDIyOCwgODUsIDI0NCwgMTA0LCA2OSwgMSwgNDUsIDIyOCwgODUsIDIyMSwgCisgICAgMjI3LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAyMDIsIDg0LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxMDUsIDY5LCA0NSwgMjI4LCAKKyAgICA4NSwgMTcsIDEwOCwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMTQ3LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxNDksIDY5LCA0NSwgCisgICAgMjI4LCA4NSwgMTcsIDE3MCwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMTk1LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAyMTMsIAorICAgIDExMSwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMTk5LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAyMjIsIDYzLCA2OSwgMSwgNDUsIAorICAgIDIyOCwgODUsIDIyNywgNzcsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ0LCAyMTIsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ0LCAKKyAgICAxLCA2OSwgMSwgNDUsIDIyOCwgODUsIDI0OSwgMzIsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ4LCA5OCwgMjQ2LCAxOTIsIDEsIAorICAgIDYzLCAyNDYsIDE5MiwgMSwgNzUsIDI0NiwgMTkyLCAxLCA2OCwgMjQ2LCAxOTIsIDEsIDc0LCAyNDYsIDE5MiwgMSwgMjUxLCAKKyAgICA2NCwgMjQ2LCAxOTIsIDEsIDc4LCAyNDYsIDE5MiwgMSwgMTczLCAyNDYsIDE5MiwgMSwgMjI5LCAxNDQsIDI0NiwgMTkyLCAKKyAgICAxLCAyMzksIDgsIDI0NiwgMTkyLCAxLCAyMzgsIDExOSwgMjQ2LCAxOTIsIDEsIDIyMiwgMTEyLCAyNDYsIDE5MiwgMSwgCisgICAgMjIyLCAyMDMsIDI0NiwgMTkyLCAxLCAyNDYsIDE5OSwgMjQ2LCAxOTIsIDEsIDI0NiwgMTQ0LCAyNDYsIDE5MiwgMSwgMjMwLCAKKyAgICAxODEsIDI0NiwgMTkyLCAxLCAyMzAsIDE0OSwgMjQ2LCAxOTIsIDEsIDIyMiwgMTAyLCAyNDYsIDE5MiwgMSwgMjIyLCAxMDQsIAorICAgIDI0NiwgMTkyLCAxLCAyMjIsIDEwMywgMjQ2LCAxOTIsIDEsIDIxMCwgMjIsIDI0NiwgMTkyLCAxLCAyMDksIDEwOCwgMjQ2LCAKKyAgICAxOTIsIDEsIDI0NCwgMjEyLCAyNDYsIDE5MiwgMSwgMjQ0LCAxLCAyNDYsIDE5MiwgMSwgMjIxLCA1MywgMjQ2LCAxOTIsIDEsIAorICAgIDIwMSwgMjAxLCAyNDYsIDE5MiwgMSwgMjQ0LCAxMjAsIDI0NiwgMTkyLCAxLCAxODUsIDI0NiwgMTkyLCAxLCAyMTgsIDEyLCAKKyAgICAyNDYsIDE5MiwgMSwgMjE4LCAyMDgsIDI0NiwgMTkyLCAxLCAyNDksIDMyLCAyNDYsIDE5MiwgMSwgMjQ4LCA5OCwgMjQ2LCAKKyAgICAxOTIsIDEsIDIyMywgMjM4LCAyNDYsIDE5MiwgMSwgMTkyLCAyNDYsIDE5MiwgMSwgMjQ4LCAxOTgsIDI0NiwgMTkyLCAxLCAKKyAgICAxOTgsIDI0NiwgMTkyLCAxLCAyMTYsIDIyMCwgMjQ2LCAxOTIsIDEsIDIyOCwgMTEzLCAyNDYsIDE5MiwgMSwgMjA2LCA4NiwgCisgICAgMjQ2LCAxOTIsIDEsIDIxMSwgMTY0LCAyNDYsIDE5MiwgMSwgMjE1LCAzNiwgMjQ2LCAxOTIsIDEsIDE1MiwgMjQ2LCAxOTIsIAorICAgIDIyLCAyLCAyNTIsIDI1LCAyNDYsIDE5MiwgMjIsIDIsIDc1LCAyNDYsIDE5MiwgMjIsIDIsIDIzMSwgODMsIDI0NiwgMTkyLCAKKyAgICAyMiwgMiwgMjQxLCAxNDUsIDI0NiwgMTkyLCAyMiwgMiwgNjgsIDI0NiwgMTkyLCAyMiwgMiwgMjIwLCA3MywgMjQ2LCAxOTIsIAorICAgIDIyLCAyLCA3OCwgMjQ2LCAxOTIsIDIyLCAyLCAyNTEsIDY0LCAyNDYsIDE5MiwgMjIsIDIsIDI1MCwgMzQsIDI0NiwgMTkyLCAKKyAgICAyMiwgMiwgMjA3LCAyNCwgMjQ2LCAxOTIsIDEwOSwgMiwgMTk4LCAyNDYsIDE5MiwgMTA5LCAyLCAyMTYsIDIyMCwgMjQ2LCAKKyAgICAxOTIsIDEwOSwgMiwgMjI4LCAxMTMsIDI0NiwgMTkyLCAxMDksIDIsIDIwNCwgMTExLCAyNDYsIDE5MiwgMSwgNDYsIDIzMCwgCisgICAgNTQsIDI0NiwgMTkyLCAxLCA0NiwgMjM5LCA3NSwgMjQ2LCAxOTIsIDEsIDQ2LCAyMjIsIDIwNSwgMjQ2LCAxOTIsIDEwOSwgCisgICAgMiwgNDYsIDIyMiwgMjA1LCAyNDYsIDE5MiwgMSwgNDYsIDI0NiwgMjAwLCAyNDYsIDE5MiwgMSwgNDYsIDIxMCwgNjksIAorICAgIDI0NiwgMTkyLCAxLCA0NiwgMjIzLCAxNjMsIDI0NiwgMTkyLCAxLCA0NiwgMjE5LCAxODQsIDI0NiwgMTkyLCAxLCA0NiwgCisgICAgMjAzLCAxMjQsIDI0NiwgMTkyLCAxLCA0NiwgMTQ2LCAyNDYsIDE5MiwgMSwgNDYsIDE1OSwgMjQ2LCAxOTIsIDEsIDQ2LCAKKyAgICAyMTEsIDE2NywgMjQ2LCAxOTIsIDEwOSwgMiwgNDYsIDIyNiwgMTg1LCAyNDYsIDE5MiwgMTA5LCAyLCA0NiwgMjM3LCAxNzEsIAorICAgIDI0NiwgMTkyLCAxNywgMjAyLCA4NCwgMjQ2LCAxOTIsIDE3LCAxMDUsIDI0NiwgMTkyLCAxNywgMTA4LCAyNDYsIDE5MiwgCisgICAgMTcsIDE0NywgMjQ2LCAxOTIsIDE3LCAxNDksIDI0NiwgMTkyLCAxNywgMTcwLCAyNDYsIDE5MiwgMTcsIDE5NSwgMjQ2LCAKKyAgICAxOTIsIDE3LCAyMTMsIDExMSwgMjQ2LCAxOTIsIDE3LCAxOTksIDI0NiwgMTkyLCAxNywgMjIyLCA2MywgMjQ2LCAxOTIsIAorICAgIDIxNywgMTc5LCAyMTEsIDIwMSwgMjQ2LCAxOTIsIDIxNywgMTc5LCAyNDQsIDE2NiwgMjQ2LCAxOTIsIDIxNywgMTc5LCA1MiwgCisgICAgMjQ0LCAxNjYsIDI0NiwgMTkyLCAyMTcsIDE3OSwgMjA4LCA3MCwgMjQ0LCAxNjYsIDY5LCAxLCAyMjksIDEzNywgMjM5LCA4LCAKKyAgICA2OSwgMSwgMjI5LCAxMzcsIDI0NywgOTIsIDY5LCAxLCAyMjksIDEzNywgMjQ2LCAxOTksIDY5LCAxLCAyMjksIDEzNywgCisgICAgMjMwLCAxODEsIDY5LCAxLCAyMjksIDEzNywgMjMwLCAxNDksIDY5LCAxLCAyMjksIDEzNywgMjIxLCAxMSwgNjksIDEsIAorICAgIDIyOSwgMTM3LCAyMDcsIDI0MSwgNjksIDEsIDIyOSwgMTM3LCAyMDcsIDIyOSwgNjksIDEsIDIyOSwgMTM3LCAyNDQsIDEyMCwgCisgICAgNjksIDEsIDIyOSwgMTM3LCAyNDQsIDEwNCwgNjksIDEsIDIyOSwgMTM3LCAyNDQsIDEsIDY5LCAxLCAyMjksIDEzNywgMjAxLCAKKyAgICAyMDEsIDY5LCAxLCAyMjksIDEzNywgMjE1LCAzNiwgNjksIDEsIDIyOSwgMTM3LCAxNTIsIDY5LCAxLCAyMjksIDEzNywgCisgICAgMjM3LCAxMiwgNjksIDEsIDIyOSwgMTM3LCAyNDAsIDEwOCwgNjksIDY1LCAxLCAyMjksIDEzNywgMjE2LCAxMzYsIDY5LCAxLCAKKyAgICAyMjksIDEzNywgMjAzLCAxODIsIDY5LCAxLCAyMjksIDEzNywgMjAyLCAxMTYsIDY5LCAxLCAyMjksIDEzNywgMjE2LCAyMjAsIAorICAgIDY5LCAyMjcsIDM2LCAyMjksIDEzNywgMjIwLCA5NCwgNjksIDIyNywgMzYsIDIyOSwgMTM3LCAyMTcsIDc4LCA2OSwgMjI3LCAKKyAgICAzNiwgMjI5LCAxMzcsIDIzNiwgMTkxLCA2OSwgMTYsIDI1MSwgNTEsIDI0MCwgMjExLCA2OSwgMTYsIDI1MSwgNTEsIDEwNSwgCisgICAgNjksIDE2LCAyNTEsIDUxLCAxMDgsIDY5LCAxLCAyNTEsIDUxLCAyMTYsIDIyMCwgNjksIDIsIDIxOSwgOTgsIDIyOSwgMjM3LCAKKyAgICAyMDgsIDE2MSwgNjksIDIsIDQ1LCAyMjgsIDg1LCAyMDgsIDE1OSwgNjksIDIsIDQ1LCAyMjgsIDg1LCAyMDgsIDE1NiwgNjksIAorICAgIDEsIDIxMiwgMTc4LCAyMTksIDEzOSwgMjQ2LCAxOTksIDY5LCAxLCAyMTIsIDE3OCwgMjE5LCAxMzksIDIxMywgOTAsIDQ1LCAKKyAgICAyMDUsIDIyMCwgMSwgMTI0LCAyMjksIDI2LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjI5LCAyNiwgNDUsIDIwNSwgMjIwLCAKKyAgICAxLCAxMjQsIDIyOSwgMTE1LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjI5LCAxMTUsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAKKyAgICAyMjksIDEyNCwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIyOSwgMTI0LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjM4LCAzOSwgCisgICAgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIzOCwgMzksIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMjIsIDEyOCwgNDUsIDIwNSwgCisgICAgMjIwLCAxLCAxMzgsIDIyMiwgMTI4LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjQ1LCAyNTQsIDQ1LCAyMDUsIDIyMCwgMSwgCisgICAgMTM4LCAyNDUsIDI1NCwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDI0NiwgMTE2LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjQ2LCAKKyAgICAxMTYsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMTIsIDEzLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjEyLCAxMywgNDUsIAorICAgIDIwNSwgMjIwLCAxLCAxMjQsIDIyMCwgMjMzLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjIwLCAyMzMsIDQ1LCAyMDUsIDIyMCwgCisgICAgMSwgMTI0LCAyNDMsIDExMywgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDI0MywgMTEzLCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgCisgICAgMTM1LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMTM1LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjA5LCA0NywgNDUsIDIwNSwgCisgICAgMjIwLCAxLCAxMzgsIDIwOSwgNDcsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMjEsIDE5MSwgNDUsIDIwNSwgMjIwLCAxLCAKKyAgICAxMzgsIDIyMSwgMTkxLCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjQ4LCAyMywgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDI0OCwgCisgICAgMjMsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMTgsIDY5LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjE4LCA2OSwgNDUsIAorICAgIDIwNSwgMjIwLCAxLCAxMjQsIDIxOCwgMTgwLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjE4LCAxODAsIDQ1LCAyMDUsIDIyMCwgCisgICAgMSwgMTI0LCAyMzksIDE4NiwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIzOSwgMTg2LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgCisgICAgMjI0LCA4MiwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIyNCwgODIsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMDIsIDI0NywgCisgICAgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIwMiwgMjQ3LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjE1LCAyMjcsIDQ1LCAyMDUsIAorICAgIDIyMCwgMSwgMTM4LCAyMTUsIDIyNywgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIyNywgNDksIDQ1LCAyMDUsIDIyMCwgMSwgCisgICAgMTM4LCAyMjcsIDQ5LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjA1LCAxODksIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMDUsIAorICAgIDE4OSwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIzNiwgMTM2LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjM2LCAxMzYsIDQ1LCAKKyAgICAyMDUsIDIyMCwgMSwgMTI0LCA3OCwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDc4LCA0NSwgMjA1LCAyMjAsIDIyNSwgMTQxLCAKKyAgICAyMzAsIDAsIDQ1LCAyMDUsIDIyMCwgMjIsIDI1MiwgMjUsIDQ1LCAyMDUsIDIyMCwgMjIsIDc1LCA0NSwgMjA1LCAyMjAsIAorICAgIDIyLCAyMDcsIDI0LCA0NSwgMjA1LCAyMjAsIDIyLCA2OCwgNDUsIDIwNSwgMjIwLCAyMiwgNzQsIDQ1LCAyMDUsIDIyMCwgCisgICAgMjIsIDc4LCA0NSwgMjA1LCAyMjAsIDIyNSwgMTQxLCAyMjksIDExOCwgNDUsIDIwNSwgMjIwLCAyMiwgMjM1LCAxNzEsIDQ1LCAKKyAgICAyMDUsIDIyMCwgMjIsIDIwNywgMjMsIDQ1LCAyMDUsIDIyMCwgMjIsIDIwNywgMzksIDQ1LCAyMDUsIDIyMCwgMjIsIDI1MCwgCisgICAgMzIsIDQ1LCAyMDUsIDIyMCwgMjIsIDI1MCwgOCwgNDUsIDIwNSwgMjIwLCAyMiwgMjUwLCAyMzEsIDQ1LCAyMDUsIDIyMCwgCisgICAgMjIsIDI1MCwgMjQ3LCA0NSwgMjA1LCAyMjAsIDE0MywgMjI1LCAxNDEsIDI0MSwgMTI5LCA0NSwgMjA1LCAyMjAsIDE0MywgCisgICAgMjI1LCAxNDEsIDIyMSwgNTIsIDQ1LCAyMDUsIDIyMCwgMTQzLCAyMjUsIDE0MSwgMjA5LCA0NywgNDUsIDIwNSwgMjIwLCAKKyAgICAxNDMsIDIyNSwgMTQxLCAyMTEsIDI1MiwgNDUsIDIwNSwgMjIwLCAxNiwgMjI5LCA5LCA0NSwgMjA1LCAyMjAsIDE2LCAyMjEsIAorICAgIDUyLCA0NSwgMjA1LCAyMjAsIDE2LCAyMTQsIDI1MywgNDUsIDIwNSwgMjIwLCAxNiwgMjM2LCAxMzcsIDIzNiwgMTMxLCA0NSwgCisgICAgMjA1LCAyMjAsIDE2LCAyMjksIDE5LCAyMjksIDE4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDc0LCAyMjUsIDIsIDIyNSwgNjEsIAorICAgIDEsIDc4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDI0NiwgMTk5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMSwgMTEsIDIyNSwgMiwgCisgICAgMjI1LCA2MSwgMSwgMjA3LCAyNDEsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjA3LCAyMjksIDIyNSwgMiwgMjI1LCA2MSwgMSwgCisgICAgMjQ0LCAxMjAsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjQ0LCAxMDQsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjIxLCAyMjcsIAorICAgIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjEzLCA5MCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMTEsIDE2NCwgMjI1LCAyLCAyMjUsIAorICAgIDYxLCAyMiwgMiwgMjMxLCA4MywgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjA2LCAxNzgsIDIyNSwgMiwgMjI1LCA2MSwgCisgICAgMjIsIDIsIDI1MSwgMjQ1LCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyNTAsIDM0LCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAKKyAgICAyNTEsIDIzOCwgMjI1LCAyLCAyMjUsIDYxLCAyNDYsIDE1OSwgMjI1LCAyLCAyMjUsIDYxLCAyNTEsIDcwLCAyMjksIDEwNywgCisgICAgMjI1LCAyLCAyMjUsIDYxLCAyNTAsIDIwOSwgMjI1LCAyLCAyMjUsIDYxLCA0LCAyMTYsIDk4LCA4MiwgMjI1LCAyLCAyMjUsIAorICAgIDYxLCAyMDMsIDIzOCwgMjE2LCA5OCwgODIsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIwNSwgMTk5LCAyMjUsIDIsIDIyNSwgCisgICAgNjEsIDIwNSwgMjA0LCAzMywgNCwgMjA3LCAyMjIsIDMzLCA0LCAyMDcsIDIyNSwgMzMsIDQsIDIwNywgMjI4LCAzMywgNCwgCisgICAgMjA3LCAyMjYsIDMzLCA0LCAyMDcsIDIyNywgMzMsIDQsIDIwNywgMjI0LCAzMywgNCwgMjQ0LCA5OCwgMzMsIDQsIDI0NCwgCisgICAgMTAwLCAzMywgNCwgMjQ0LCAxMDMsIDMzLCA0LCAyNDQsIDEwMSwgMzMsIDQsIDI0NCwgMTAyLCAzMywgNCwgMjQ0LCA5OSwgCisgICAgMzMsIDQsIDI0MSwgMjQyLCAzMywgNCwgMjQxLCAyNDYsIDMzLCA0LCAyNDEsIDI1NCwgMzMsIDQsIDI0MSwgMjUxLCAzMywgCisgICAgNCwgMjQxLCAyNTIsIDMzLCA0LCAyNDEsIDI0MywgMzMsIDQsIDI0NiwgMjUyLCAzMywgNCwgMjQ2LCAyNDYsIDMzLCA0LCAKKyAgICAyNDYsIDI0OCwgMzMsIDQsIDI0NiwgMjUxLCAzMywgNCwgMjQ2LCAyNDksIDMzLCA0LCAyNDYsIDI1MCwgMzMsIDQsIDI0NiwgCisgICAgMjQ3LCAzMywgNCwgMjQ4LCAxOTgsIDMzLCA0LCAyNDgsIDE3NywgMzMsIDQsIDI0OCwgMTg5LCAzMywgNCwgMjQ4LCAxOTcsIAorICAgIDMzLCA0LCAyNDgsIDE5MiwgMzMsIDQsIDI0OCwgMTkzLCAzMywgNCwgMjQ4LCAxODEsIDgsIDUsIDEsIDI0OCwgMjI1LCAKKyAgICAyNTEsIDIsIDgsIDUsIDEsIDM0LCAyMTYsIDcxLCA4LCA1LCAxLCAyNDgsIDM5LCA3NCwgOCwgNSwgMSwgMjQ4LCAyMjUsIAorICAgIDc0LCA4LCA1LCAxLCAxODgsIDMsIDIzOSwgMTk5LCA4LCA1LCAxLCAyMjcsIDE4NywgMjQwLCAxNzQsIDgsIDUsIDEsIDEzMiwgCisgICAgMjM5LCA3NiwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyMzAsIDIzOSwgMjI3LCAyNDEsIDE5NCwgOCwgCisgICAgNSwgMSwgMjI4LCAxMzEsIDMsIDUyLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyMTUsIAorICAgIDI1MiwgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDI0NSwgMTI2LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ1LCAxMjYsIDgsIAorICAgIDUsIDEsIDI0MSwgNzksIDMsIDI0NSwgMTI2LCA4LCA1LCAxLCAyNDgsIDM5LCA3OCwgOCwgNSwgMSwgMjQ4LCAzOSwgMTU4LCAKKyAgICAzLCA5NSwgOCwgNSwgMSwgMTcxLCAxNTgsIDMsIDk1LCA4LCA1LCAxLCAyMzAsIDIzOSwgMjIwLCA3MywgOCwgNSwgMSwgCisgICAgMjA3LCAxNzQsIDIyMCwgNzQsIDMsIDk1LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjIwLCA3NCwgMywgMjM2LCAxMDYsIDk1LCA4LCAKKyAgICA1LCAxLCAyMDcsIDE3NCwgMTU4LCAyMjAsIDQsIDgsIDUsIDEsIDIwNywgMTc0LCAxNTgsIDIyMCwgNSwgMywgOTUsIDgsIDUsIAorICAgIDEsIDIxMSwgNjYsIDE0NiwgOCwgMSwgNSwgNiwgMjE3LCAxLCAzLCA1MCwgMjI3LCAyMTAsIDgsIDUsIDEsIDIxNywgMSwgCisgICAgMjA0LCAzLCAyMzcsIDEwMiwgOCwgNSwgMSwgNTIsIDE0NiwgOCwgNSwgMSwgMjE3LCAxLCAzLCAyNDUsIDEyNiwgOCwgNSwgCisgICAgMSwgNTIsIDIxNywgMSwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDEzMiwgMTQ2LCA4LCA1LCAxLCAxMzIsIDIxNywgMSwgMywgCisgICAgMjE1LCAyNTIsIDgsIDUsIDEsIDI0OCwgMjE2LCAyNDEsIDcsIDgsIDUsIDEsIDEwNiwgMywgMjEyLCAyMjgsIDUwLCAyMjcsIAorICAgIDIxMCwgOCwgNSwgMSwgMTA2LCAyNDgsIDIzMSwgMywgMjEyLCAyMjgsIDUwLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjA3LCAxNywgCisgICAgOCwgNSwgMSwgMjA3LCAxNzQsIDIwNywgMTcsIDgsIDUsIDEsIDEwNiwgMywgNDksIDExMywgOCwgNSwgMSwgMjQ2LCAxNDIsIAorICAgIDgsIDUsIDEsIDI0NiwgMTQzLCAzLCAxMjQsIDUwLCAyMTUsIDI1MiwgOCwgNSwgMSwgMjQ2LCAxNDMsIDMsIDEyNCwgNDksIAorICAgIDIxMywgMTI1LCA4LCA1LCAxLCAyMDMsIDE5NywgMywgMTI0LCA1MCwgMjE1LCAyNTIsIDgsIDUsIDEsIDIwMywgMTk3LCAzLCAKKyAgICAxNjMsIDQ5LCAyMjcsIDIxMCwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIDE2MywgNDksIDIyNywgMjExLCAyNSwgMTI0LCA1MCwgCisgICAgMjE1LCAyNTIsIDgsIDUsIDEsIDIwMywgMTk3LCAzLCAxNjMsIDQ5LCAyMjcsIDIxMSwgMywgMjEzLCAxMjUsIDgsIDUsIDEsIAorICAgIDIwMywgMTI1LCAzLCAyMTIsIDIyOCwgNTAsIDIyNywgMjEwLCA2NSwgMjQ3LCAyMTUsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgCisgICAgNjUsIDEsIDUsIDIzNywgMzEsIDY1LCAxLCA1LCAyMjgsIDEzMSwgMywgMjMwLCAyMzksIDIyNywgMjQxLCAxOTQsIDY1LCAxLCAKKyAgICA1LCAyMjgsIDEzMSwgMywgMTAxLCAyMDgsIDIyNywgNjUsIDEsIDUsIDEwNiwgMywgNDksIDExMywgOCwgNSwgMSwgMjE1LCAKKyAgICAxMSwgMjAzLCA2NiwgOCwgNSwgMSwgMjMwLCAyMjgsIDc0LCA4LCA1LCAxLCAxNzEsIDIyMCwgNzMsIDgsIDUsIDEsIDIwNiwgCisgICAgMjI4LCA4LCA1LCAxLCAyMzAsIDIzOSwgMjUxLCAyLCAzMCwgMSwgNSwgNiwgMjIwLCAzNiwgOTAsIDUsIDEsIDYzLCA5MCwgCisgICAgNSwgMSwgNzQsIDkwLCA1LCAxLCA3NSwgOTAsIDUsIDEsIDc4LCA5MCwgNSwgMSwgNjgsIDkwLCA1LCAxLCAyMDYsIDE2NCwgCisgICAgOTAsIDUsIDEsIDIzOSwgOCwgOTAsIDUsIDEsIDE3MywgOTAsIDUsIDEsIDIzOCwgMTkwLCA5MCwgNSwgMSwgMjM4LCA4MSwgCisgICAgOTAsIDUsIDEsIDIzOCwgMzksIDkwLCA1LCAxLCAyMzcsIDIzMCwgOTAsIDUsIDEsIDIzNywgMTkyLCA5MCwgNSwgMSwgMTUyLCAKKyAgICA5MCwgNSwgMSwgMjM3LCA2NywgOTAsIDUsIDEsIDIzNywgMywgOTAsIDUsIDEsIDIzNiwgMTM2LCA5MCwgNSwgMSwgMjM2LCAKKyAgICAyNiwgOTAsIDUsIDEsIDIzNSwgMjU1LCA5MCwgNSwgMSwgMjI4LCAxMTMsIDkwLCA1LCAxLCAyMjcsIDIzNCwgOTAsIDUsIDEsIAorICAgIDIyNywgMTQ4LCA5MCwgNSwgMSwgMjI3LCA0OSwgOTAsIDUsIDEsIDIyNiwgMjM5LCA5MCwgNSwgMSwgMjI2LCAyMDgsIDkwLCAKKyAgICA1LCAxLCAxOTIsIDkwLCA1LCAxLCAyMjUsIDIwLCA5MCwgNSwgMSwgMjI0LCAxNTUsIDkwLCA1LCAxLCAyMjQsIDgyLCA5MCwgCisgICAgNSwgMSwgMjIzLCAyNDYsIDkwLCA1LCAxLCAyMDEsIDIwMSwgOTAsIDUsIDEsIDIzNiwgMTYwLCA5MCwgNSwgMSwgMjIzLCAKKyAgICA5MywgOTAsIDUsIDEsIDIyMiwgMjQwLCA5MCwgNSwgMSwgMjIyLCAxMDAsIDkwLCA1LCAxLCAyMjEsIDE5MSwgOTAsIDUsIDEsIAorICAgIDIyMSwgODQsIDkwLCA1LCAxLCAyMjEsIDIyLCA5MCwgNSwgMSwgMjE3LCA2NCwgOTAsIDUsIDEsIDIxNywgNTAsIDkwLCA1LCAKKyAgICAxLCAyMTcsIDQzLCA5MCwgNSwgMSwgMjE3LCAzNCwgOTAsIDUsIDEsIDIxNywgMjMsIDkwLCA1LCAxLCAyMTcsIDIxLCA5MCwgCisgICAgNSwgMSwgMjE1LCAzNiwgOTAsIDUsIDEsIDE5NCwgOTAsIDUsIDEsIDIxNCwgMTc3LCA5MCwgNSwgMSwgMjEyLCAxNjIsIDkwLCAKKyAgICA1LCAxLCAyMTIsIDEzLCA5MCwgNSwgMSwgMjExLCAxMCwgOTAsIDUsIDEsIDIxMCwgMTc3LCA5MCwgNSwgMSwgMjQ0LCAyMTIsIAorICAgIDkwLCA1LCAxLCAyMTAsIDIyLCA5MCwgNSwgMSwgMjQ0LCA3NSwgOTAsIDUsIDEsIDIwOSwgMTg3LCA5MCwgNSwgMSwgMjQzLCAKKyAgICAyMzMsIDkwLCA1LCAxLCAyMDksIDIsIDkwLCA1LCAxLCAyNDMsIDExMywgOTAsIDUsIDEsIDI0MiwgNDIsIDkwLCA1LCAxLCAKKyAgICAyNDIsIDEzLCA5MCwgNSwgMSwgMjQzLCAxMjQsIDkwLCA1LCAxLCAyMDgsIDE5MCwgOTAsIDUsIDEsIDIwOCwgMTg5LCA5MCwgCisgICAgNSwgMSwgMjA4LCAxNzgsIDkwLCA1LCAxLCAyMDgsIDE3NywgOTAsIDUsIDEsIDIwOCwgMTc2LCA5MCwgNSwgMSwgMjA4LCAKKyAgICAxNzUsIDkwLCA1LCAxLCAyMDgsIDIwLCA5MCwgNSwgMSwgMjA4LCAxNCwgOTAsIDUsIDEsIDIwNywgMjU1LCA5MCwgNSwgMSwgCisgICAgMjA3LCAyNTMsIDkwLCA1LCAxLCAyMDcsIDI0OSwgOTAsIDUsIDEsIDIwNywgMjQ4LCA5MCwgNSwgMSwgMjA0LCAxMTEsIDkwLCAKKyAgICA1LCAxLCAyMDQsIDYyLCA5MCwgNSwgMSwgMjA0LCAzMCwgOTAsIDUsIDEsIDIwNCwgMCwgOTAsIDUsIDEsIDIwMywgMjE3LCAKKyAgICA5MCwgNSwgMSwgMjAzLCAyMDQsIDkwLCA1LCAxLCAxOTgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjI5LCAxNiwgMjI1LCAyLCAKKyAgICAyMjUsIDYxLCAxLCAyMTQsIDI1MywgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjgsIDg2LCAyMjUsIDIsIDIyNSwgNjEsIDEsIAorICAgIDIyNCwgOTMsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMTg1LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwMSwgMjAxLCAyMjUsIDIsIAorICAgIDIyNSwgNjEsIDEsIDI0NiwgMTM0LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwOCwgMjI5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIAorICAgIDIyOSwgMTEwLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMiwgMTE4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwOSwgMzksIDIyNSwgCisgICAgMiwgMjI1LCA2MSwgMSwgMjA0LCAxMDUsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjAzLCA3NiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAKKyAgICAyMzYsIDE4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwNiwgMjU1LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDc1LCAyMjUsIDIsIAorICAgIDIyNSwgNjEsIDEsIDIxOCwgMjAyLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDI1MCwgNDUsIDIyNSwgMiwgMjI1LCA2MSwgMSwgCisgICAgMjM4LCAzMiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMzAsIDE0NywgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMTYsIDE5NywgMjI1LCAKKyAgICAyLCAyMjUsIDYxLCAxLCAyNDksIDMyLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIzMCwgMTMzLCAyMjUsIDIsIDIyNSwgNjEsIDEsIAorICAgIDI0MywgMTkwLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIzOCwgODgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjQzLCAyMzUsIDIyNSwgCisgICAgMiwgMjI1LCA2MSwgMSwgMjQ4LCA5NiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjksIDE3LCAyMjcsIDE5LCAyMjUsIDIsIAorICAgIDIyNSwgNjEsIDEsIDIyOCwgODcsIDIyNywgMTksIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjI0LCA5NCwgMjI3LCAxOSwgMjI1LCAKKyAgICAyLCAyMjUsIDYxLCAxLCAyMTksIDE2OSwgMjI3LCAxOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjMsIDExMSwgMjI3LCAxOSwgCisgICAgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDgsIDIzMCwgMjI3LCAxOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjIsIDExOSwgMjI3LCAKKyAgICAxOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMzUsIDIwNiwgMjI3LCAxOSwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjIwLCAKKyAgICAzMCwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjMxLCA0NywgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjUwLCAyMzAsIAorICAgIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIwMywgNDEsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIxMSwgMjQyLCAyMjUsIAorICAgIDIsIDIyNSwgNjEsIDIyLCAyLCAyMDYsIDI1MiwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjQ2LCAxNTcsIDIyNSwgMiwgCisgICAgMjI1LCA2MSwgMjIsIDIsIDIyMSwgMzcsIDIyNSwgMiwgMjI1LCA2MSwgMjQ2LCAxNTgsIDIyNSwgMiwgMjI1LCA2MSwgMjI2LCAKKyAgICAyMjMsIDIzMCwgMTkwLCAyMjUsIDIsIDIyNSwgNjEsIDI1MCwgMTQ5LCAyMzAsIDE5MCwgMjI1LCAyLCAyMjUsIDYxLCAxNywgCisgICAgMjAyLCA4NCwgMjI1LCAyLCAyMjUsIDYxLCAxNywgMTA1LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAxMDgsIDIyNSwgMiwgMjI1LCAKKyAgICA2MSwgMTcsIDE0NywgMjI1LCAyLCAyMjUsIDYxLCAxNywgMTQ5LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAxNzAsIDIyNSwgMiwgCisgICAgMjI1LCA2MSwgMTcsIDE5NSwgMjI1LCAyLCAyMjUsIDYxLCAxNywgMjEzLCAxMTEsIDIyNSwgMiwgMjI1LCA2MSwgMTcsIAorICAgIDE5OSwgMjI1LCAyLCAyMjUsIDYxLCAxNywgMjIyLCA2MywgMjgsIDE3NiwgMjIwLCAxNzQsIDI4LCAxNzYsIDIyMCwgMTc5LCAKKyAgICAyOCwgMTc2LCAyMDIsIDI0NiwgMjgsIDE3NiwgMjAyLCAyNDUsIDI4LCAxNzYsIDIwMiwgMjQ0LCAyOCwgMTc2LCAyMDcsIAorICAgIDg5LCAyOCwgMTc2LCAyMDcsIDkzLCAyOCwgMTc2LCAyMDIsIDIxMSwgMjgsIDE3NiwgMjAyLCAyMDcsIDI4LCAxNzYsIDI0MCwgCisgICAgMjM3LCAyOCwgMTc2LCAyNDAsIDIzNSwgMjgsIDE3NiwgMjQwLCAyMzYsIDI4LCAxNzYsIDI0MCwgMjMzLCAyOCwgMTc2LCAKKyAgICAyMzUsIDE5NiwgMjgsIDE3NiwgMjM1LCAxOTUsIDI4LCAxNzYsIDIzNSwgMTkzLCAyOCwgMTc2LCAyMzUsIDE5NCwgMjgsIAorICAgIDE3NiwgMjM1LCAxOTksIDI4LCAxNzYsIDIzNSwgMTkyLCAyOCwgMTc2LCAyMzUsIDE5MSwgMjgsIDE3NiwgMjM1LCAyMDEsIAorICAgIDI4LCAxNzYsIDI1MCwgMTM2LCAyOCwgMTc2LCAyNTAsIDEzNSwgMjgsIDEwNywgMjIyLCA4NiwgMjgsIDEwNywgMjIyLCA5MiwgCisgICAgMjgsIDEwNywgMjExLCAxNDUsIDI4LCAxMDcsIDIxMSwgMTQ0LCAyOCwgMTA3LCAyMDgsIDIzNSwgMjgsIDEwNywgMjA4LCAKKyAgICAyMzMsIDI4LCAxMDcsIDIwOCwgMjMyLCAyOCwgMTA3LCAyMDgsIDIzOCwgMjgsIDEwNywgMjA4LCAyMzksIDI4LCAxMDcsIAorICAgIDIwOCwgMjMxLCAyOCwgMTA3LCAyMTYsIDI2LCAyOCwgMTA3LCAyMTYsIDQxLCAyOCwgMTA3LCAyMTEsIDE1MSwgMjgsIDEwNywgCisgICAgMjE2LCAzOCwgMjgsIDEwNywgMjE2LCAyOCwgMjgsIDEwNywgMjE2LCAzMCwgMjgsIDEwNywgMjE2LCAxNywgMjgsIDEwNywgCisgICAgMjE2LCAxOCwgMjgsIDEwNywgMjI5LCAyNDMsIDI4LCAxMDcsIDIyNCwgMTM2LCAyOCwgMTA3LCAyMjQsIDEzMCwgMjgsIAorICAgIDEwNywgMjExLCAxNTUsIDI4LCAxMDcsIDIyNCwgMTMzLCAyOCwgMTA3LCAyMjQsIDEzOSwgMjgsIDEwNywgMjE4LCAxMzQsIAorICAgIDI4LCAxMDcsIDIxOCwgMTQzLCAyOCwgMTA3LCAyMTgsIDE0NywgMjgsIDEwNywgMjExLCAxNTMsIDI4LCAxMDcsIDIxOCwgCisgICAgMTM3LCAyOCwgMTA3LCAyMTgsIDE1MSwgMjgsIDEwNywgMjE4LCAxNTIsIDI4LCAxMDcsIDIxMiwgMTAzLCAyOCwgMTA3LCAKKyAgICAyMTIsIDEwNiwgMjgsIDEwNywgMjExLCAxNDksIDI4LCAxMDcsIDIxMSwgMTQ3LCAyOCwgMTA3LCAyMTIsIDEwMSwgMjgsIAorICAgIDEwNywgMjEyLCAxMDksIDI4LCAxMDcsIDIxMiwgMTEwLCAyOCwgMTA3LCAyMTIsIDk1LCAyOCwgMTA3LCAyMTIsIDEwOCwgCisgICAgMjgsIDEwNywgMjE5LCAxMDUsIDI4LCAxMDcsIDIxOSwgMTA2LCAyOCwgMTA3LCAyMDMsIDI3LCAyOCwgMTA3LCAyMDMsIDI4LCAKKyAgICAyOCwgMTA3LCAyNDYsIDcyLCAyOCwgMTA3LCAyNDYsIDcxLCAyOCwgMTA3LCAyMTEsIDE2MCwgMjgsIDEwNywgMjE4LCAxODcsIAorICAgIDI4LCAxMDcsIDIxOCwgMTg2LCAxMiwgMTUsIDIzMywgNzQsIDEyLCAxNSwgMjMzLCA3MywgMTIsIDE1LCAyMzMsIDcyLCAxMiwgCisgICAgMTUsIDIzMywgNzEsIDEyLCAxNSwgMjMzLCA3MCwgMTIsIDE1LCAyMzMsIDY5LCAxMiwgMTUsIDIzMywgNjgsIDEyLCAxNSwgCisgICAgMjMzLCA2NywgMTIsIDE1LCAyMzMsIDY2LCAxMiwgMTUsIDIzMywgNjUsIDEyLCAxNSwgMjMzLCA2NCwgMTIsIDE1LCAyMzMsIAorICAgIDYzLCAxMiwgMTUsIDIzMywgNjIsIDEyLCAxNSwgMjMzLCA2MSwgMTIsIDE1LCAyMzMsIDYwLCAxMiwgMTUsIDIzMywgNTksIAorICAgIDEyLCAxNSwgMjMzLCA1OCwgMTIsIDE1LCAyMzMsIDU3LCAxMiwgMTUsIDIzMywgNTYsIDEyLCAxNSwgMjMzLCA1NSwgMTIsIAorICAgIDE1LCAyMzMsIDU0LCAxMiwgMTUsIDIzMywgNTMsIDEyLCAxNSwgMjMzLCA1MiwgMTIsIDE1LCAyMzMsIDUxLCAxMiwgMTUsIAorICAgIDIzMywgNTAsIDEyLCAxNSwgMjMzLCA0OSwgMTIsIDE1LCAyMzMsIDQ4LCAxMiwgMTUsIDIzMywgNDcsIDEyLCAxNSwgMjMzLCAKKyAgICA0NiwgMTIsIDE1LCAyMzMsIDQ1LCAxMiwgMTUsIDIzMywgNDQsIDEyLCAxNSwgMjMzLCA0MywgMTIsIDE1LCAyMzMsIDQyLCAKKyAgICAxMiwgMTUsIDIzMywgNDEsIDEyLCAxNSwgMjMzLCA0MCwgMTIsIDE1LCAyMzMsIDM5LCAxMiwgMTUsIDIzMywgMzgsIDEyLCAKKyAgICAxNSwgMjMzLCAzNywgMTIsIDE1LCAyMzMsIDM2LCAxMiwgMTUsIDIzMywgMzUsIDEyLCAxNSwgMjMzLCAzNCwgMTIsIDE1LCAKKyAgICAyMzMsIDMzLCAxMiwgMTUsIDIzMywgMzIsIDEyLCAxNSwgMjMzLCAzMSwgMTIsIDE1LCAyMzMsIDMwLCAxMiwgMTUsIDIzMywgCisgICAgMjksIDEyLCAxNSwgMjMzLCAyOCwgMTIsIDE1LCAyMzMsIDI3LCAxMiwgMTUsIDIzMywgMjYsIDEyLCAxNSwgMjMzLCAyNSwgCisgICAgMTIsIDE1LCAyMzMsIDI0LCAxMiwgMTUsIDIzMywgMjMsIDEyLCAxNSwgMjMzLCAyMiwgMTIsIDE1LCAyMzMsIDIxLCAxMiwgCisgICAgMTUsIDIzMywgMjAsIDEyLCAxNSwgMjMzLCAxOSwgMTIsIDE1LCAyMzMsIDE4LCAxMiwgMTUsIDIzMywgMTcsIDEyLCAxNSwgCisgICAgMjMzLCAxNiwgMTIsIDE1LCAyMzMsIDE1LCAxMiwgMTUsIDIzMywgMTQsIDEyLCAxNSwgMjMzLCAxMywgMTIsIDE1LCAyMzMsIAorICAgIDEyLCAxMiwgMTUsIDIzMywgMTEsIDEyLCAxNSwgMjMzLCAxMCwgMTIsIDE1LCAyMzMsIDksIDEyLCAxNSwgMjMzLCA4LCAxMiwgCisgICAgMTUsIDIzMywgNywgMTIsIDE1LCAyMzMsIDYsIDEyLCAxNSwgMjMzLCA1LCAxMiwgMTUsIDIzMywgNCwgMTIsIDE1LCAyMzMsIAorICAgIDMsIDEyLCAxNSwgMjMzLCAyLCAxMiwgMTUsIDIzMywgMSwgMTIsIDE1LCAyMzMsIDAsIDEyLCAxNSwgMjMyLCAyNTUsIDEyLCAKKyAgICAxNSwgMjMyLCAyNTQsIDEyLCAxNSwgMjMyLCAyNTMsIDEyLCAxNSwgMjMyLCAyNTIsIDEyLCAxNSwgMjMyLCAyNTEsIDEyLCAKKyAgICAxNSwgMjMyLCAyNTAsIDEyLCAxNSwgMjMyLCAyNDksIDEyLCAxNSwgMjMyLCAyNDgsIDEyLCAxNSwgMjMyLCAyNDcsIDEyLCAKKyAgICAxNSwgMjMyLCAyNDYsIDEyLCAxNSwgMjMyLCAyNDUsIDEyLCAxNSwgMjMyLCAyNDQsIDEyLCAxNSwgMjMyLCAyNDMsIDEyLCAKKyAgICAxNSwgMjMyLCAyNDIsIDEyLCAxNSwgMjMyLCAyNDEsIDEyLCAxNSwgMjMyLCAyNDAsIDEyLCAxNSwgMjMyLCAyMzksIDEyLCAKKyAgICAxNSwgMjMyLCAyMzgsIDEyLCAxNSwgMjMyLCAyMzcsIDEyLCAxNSwgMjMyLCAyMzYsIDEyLCAxNSwgMjMyLCAyMzUsIDEyLCAKKyAgICAxNSwgMjMyLCAyMzQsIDEyLCAxNSwgMjMyLCAyMzMsIDEyLCAxNSwgMjMyLCAyMzIsIDEyLCAxNSwgMjMyLCAyMzEsIDEyLCAKKyAgICAxNSwgMjMyLCAyMzAsIDEyLCAxNSwgMjMyLCAyMjksIDEyLCAxNSwgMjMyLCAyMjgsIDEyLCAxNSwgMjMyLCAyMjcsIDEyLCAKKyAgICAxNSwgMjMyLCAyMjYsIDEyLCAxNSwgMjMyLCAyMjUsIDEyLCAxNSwgMjMyLCAyMjQsIDEyLCAxNSwgMjMyLCAyMjMsIDEyLCAKKyAgICAxNSwgMjMyLCAyMjIsIDEyLCAxNSwgMjMyLCAyMjEsIDEyLCAxNSwgMjMyLCAyMjAsIDEyLCAxNSwgMjMyLCAyMTksIDEyLCAKKyAgICAxNSwgMjMyLCAyMTgsIDEyLCAxNSwgMjMyLCAyMTcsIDEyLCAxNSwgMjMyLCAyMTYsIDEyLCAxNSwgMjMyLCAyMTUsIDEyLCAKKyAgICAxNSwgMjMyLCAyMTQsIDEyLCAxNSwgMjMyLCAyMTMsIDEyLCAxNSwgMjMyLCAyMTIsIDEyLCAxNSwgMjMyLCAyMTEsIDEyLCAKKyAgICAxNSwgMjMyLCAyMTAsIDEyLCAxNSwgMjMyLCAyMDksIDEyLCAxNSwgMjMyLCAyMDgsIDEyLCAxNSwgMjMyLCAyMDcsIDEyLCAKKyAgICAxNSwgMjMyLCAyMDYsIDEyLCAxNSwgMjMyLCAyMDUsIDEyLCAxNSwgMjMyLCAyMDQsIDEyLCAxNSwgMjMyLCAyMDMsIDEyLCAKKyAgICAxNSwgMjMyLCAyMDIsIDEyLCAxNSwgMjMyLCAyMDEsIDEyLCAxNSwgMjMyLCAyMDAsIDEyLCAxNSwgMjMyLCAxOTksIDEyLCAKKyAgICAxNSwgMjMyLCAxOTgsIDEyLCAxNSwgMjMyLCAxOTcsIDEyLCAxNSwgMjMyLCAxOTYsIDEyLCAxNSwgMjMyLCAxOTUsIDEyLCAKKyAgICAxNSwgMjMyLCAxOTQsIDEyLCAxNSwgMjMyLCAxOTMsIDEyLCAxNSwgMjMyLCAxOTIsIDEyLCAxNSwgMjMyLCAxOTEsIDEyLCAKKyAgICAxNSwgMjMyLCAxOTAsIDEyLCAxNSwgMjMyLCAxODksIDEyLCAxNSwgMjMyLCAxODgsIDEyLCAxNSwgMjMyLCAxODcsIDEyLCAKKyAgICAxNSwgMjMyLCAxODYsIDEyLCAxNSwgMjMyLCAxODUsIDEyLCAxNSwgMjMyLCAxODQsIDEyLCAxNSwgMjMyLCAxODMsIDEyLCAKKyAgICAxNSwgMjMyLCAxODIsIDEyLCAxNSwgMjMyLCAxODEsIDEyLCAxNSwgMjMyLCAxODAsIDEyLCAxNSwgMjMyLCAxNzksIDEyLCAKKyAgICAxNSwgMjMyLCAxNzgsIDEyLCAxNSwgMjMyLCAxNzcsIDEyLCAxNSwgMjMyLCAxNzYsIDEyLCAxNSwgMjMyLCAxNzUsIDEyLCAKKyAgICAxNSwgMjMyLCAxNzQsIDEyLCAxNSwgMjMyLCAxNzMsIDEyLCAxNSwgMjMyLCAxNzIsIDEyLCAxNSwgMjMyLCAxNzEsIDEyLCAKKyAgICAxNSwgMjMyLCAxNzAsIDEyLCAxNSwgMjMyLCAxNjksIDEyLCAxNSwgMjMyLCAxNjgsIDEyLCAxNSwgMjMyLCAxNjcsIDEyLCAKKyAgICAxNSwgMjMyLCAxNjYsIDEyLCAxNSwgMjMyLCAxNjUsIDEyLCAxNSwgMjMyLCAxNjQsIDEyLCAxNSwgMjMyLCAxNjMsIDEyLCAKKyAgICAxNSwgMjMyLCAxNjIsIDEyLCAxNSwgMjMyLCAxNjEsIDEyLCAxNSwgMjMyLCAxNjAsIDEyLCAxNSwgMjMyLCAxNTksIDEyLCAKKyAgICAxNSwgMjMyLCAxNTgsIDEyLCAxNSwgMjMyLCAxNTcsIDEyLCAxNSwgMjMyLCAxNTYsIDEyLCAxNSwgMjMyLCAxNTUsIDEyLCAKKyAgICAxNSwgMjMyLCAxNTQsIDEyLCAxNSwgMjMyLCAxNTMsIDEyLCAxNSwgMjMyLCAxNTIsIDEyLCAxNSwgMjMyLCAxNTEsIDEyLCAKKyAgICAxNSwgMjMyLCAxNTAsIDEyLCAxNSwgMjMyLCAxNDksIDEyLCAxNSwgMjMyLCAxNDgsIDEyLCAxNSwgMjMyLCAxNDcsIDEyLCAKKyAgICAxNSwgMjMyLCAxNDYsIDEyLCAxNSwgMjMyLCAxNDUsIDEyLCAxNSwgMjMyLCAxNDQsIDEyLCAxNSwgMjMyLCAxNDMsIDEyLCAKKyAgICAxNSwgMjMyLCAxNDIsIDEyLCAxNSwgMjMyLCAxNDEsIDEyLCAxNSwgMjMyLCAxNDAsIDEyLCAxNSwgMjMyLCAxMzksIDEyLCAKKyAgICAxNSwgMjMyLCAxMzgsIDEyLCAxNSwgMjMyLCAxMzcsIDEyLCAxNSwgMjMyLCAxMzYsIDEyLCAxNSwgMjMyLCAxMzUsIDEyLCAKKyAgICAxNSwgMjMyLCAxMzQsIDEyLCAxNSwgMjMyLCAxMzMsIDEyLCAxNSwgMjMyLCAxMzIsIDEyLCAxNSwgMjMyLCAxMzEsIDEyLCAKKyAgICAxNSwgMjMyLCAxMzAsIDEyLCAxNSwgMjMyLCAxMjksIDEyLCAxNSwgMjMyLCAxMjgsIDEyLCAxNSwgMjMyLCAxMjcsIDEyLCAKKyAgICAxNSwgMjMyLCAxMjYsIDEyLCAxNSwgMjMyLCAxMjUsIDEyLCAxNSwgMjMyLCAxMjQsIDEyLCAxNSwgMjMyLCAxMjMsIDEyLCAKKyAgICAxNSwgMjMyLCAxMjIsIDEyLCAxNSwgMjMyLCAxMjEsIDEyLCAxNSwgMjMyLCAxMjAsIDEyLCAxNSwgMjMyLCAxMTksIDEyLCAKKyAgICAxNSwgMjMyLCAxMTgsIDEyLCAxNSwgMjMyLCAxMTcsIDEyLCAxNSwgMjMyLCAxMTYsIDEyLCAxNSwgMjMyLCAxMTUsIDEyLCAKKyAgICAxNSwgMjMyLCAxMTQsIDEyLCAxNSwgMjMyLCAxMTMsIDEyLCAxNSwgMjMyLCAxMTIsIDEyLCAxNSwgMjMyLCAxMTEsIDEyLCAKKyAgICAxNSwgMjMyLCAxMTAsIDEyLCAxNSwgMjMyLCAxMDksIDEyLCAxNSwgMjMyLCAxMDgsIDEyLCAxNSwgMjMyLCAxMDcsIDEyLCAKKyAgICAxNSwgMjMyLCAxMDYsIDEyLCAxNSwgMjMyLCAxMDUsIDEyLCAxNSwgMjMyLCAxMDQsIDEyLCAxNSwgMjMyLCAxMDMsIDEyLCAKKyAgICAxNSwgMjMyLCAxMDIsIDEyLCAxNSwgMjMyLCAxMDEsIDEyLCAxNSwgMjMyLCAxMDAsIDEyLCAxNSwgMjMyLCA5OSwgMTIsIAorICAgIDE1LCAyMzIsIDk4LCAxMiwgMTUsIDIzMiwgOTcsIDEyLCAxNSwgMjMyLCA5NiwgMTIsIDE1LCAyMzIsIDk1LCAxMiwgMTUsIAorICAgIDIzMiwgOTQsIDEyLCAxNSwgMjMyLCA5MywgMTIsIDE1LCAyMzIsIDkyLCAxMiwgMTUsIDIzMiwgOTEsIDEyLCAxNSwgMjMyLCAKKyAgICA5MCwgMTIsIDE1LCAyMzIsIDg5LCAxMiwgMTUsIDIzMiwgODgsIDEyLCAxNSwgMjMyLCA4NywgMTIsIDE1LCAyMzIsIDg2LCAKKyAgICAxMiwgMTUsIDIzMiwgODUsIDEyLCAxNSwgMjMyLCA4NCwgMTIsIDE1LCAyMzIsIDgzLCAxMiwgMTUsIDIzMiwgODIsIDEyLCAKKyAgICAxNSwgMjMyLCA4MSwgMTIsIDE1LCAyMzIsIDgwLCAxMiwgMTUsIDIzMiwgNzksIDEyLCAxNSwgMjMyLCA3OCwgMTIsIDE1LCAKKyAgICAyMzIsIDc3LCAxMiwgMTUsIDIzMiwgNzYsIDEyLCAxNSwgMjMyLCA3NSwgMTIsIDE1LCAyMzIsIDc0LCAxMiwgMTUsIDIzMiwgCisgICAgNzMsIDEyLCAxNSwgMjMyLCA3MiwgMTIsIDE1LCAyMzIsIDcxLCAxMiwgMTUsIDIzMiwgNzAsIDEyLCAxNSwgMjMyLCA2OSwgCisgICAgMTIsIDE1LCAyMzIsIDY4LCAxMiwgMTUsIDIzMiwgNjcsIDEyLCAxNSwgMjMyLCA2NiwgMTIsIDE1LCAyMzIsIDY1LCAxMiwgCisgICAgMTUsIDIzMiwgNjQsIDEyLCAxNSwgMjMyLCA2MywgMTIsIDE1LCAyMzIsIDYyLCAxMiwgMTUsIDIzMiwgNjEsIDEyLCAxNSwgCisgICAgMjMyLCA2MCwgMTIsIDE1LCAyMzIsIDU5LCAxMiwgMTUsIDIzMiwgNTgsIDEyLCAxNSwgMjMyLCA1NywgMTIsIDE1LCAyMzIsIAorICAgIDU2LCAxMiwgMTUsIDIzMiwgNTUsIDEyLCAxNSwgMjMyLCA1NCwgMTIsIDE1LCAyMzIsIDUzLCAxMiwgMTUsIDIzMiwgNTIsIAorICAgIDEyLCAxNSwgMjMyLCA1MSwgMTIsIDE1LCAyMzIsIDUwLCAxMiwgMTUsIDIzMiwgNDksIDEyLCAxNSwgMjMyLCA0OCwgMTIsIAorICAgIDE1LCAyMzIsIDQ3LCAxMiwgMTUsIDIzMiwgNDYsIDEyLCAxNSwgMjMyLCA0NSwgMTIsIDE1LCAyMzIsIDQ0LCAxMiwgMTUsIAorICAgIDIzMiwgNDMsIDEyLCAxNSwgMjMyLCA0MiwgMTIsIDE1LCAyMzIsIDQxLCAxMiwgMTUsIDIzMiwgNDAsIDEyLCAxNSwgMjMyLCAKKyAgICAzOSwgMTIsIDE1LCAyMzIsIDM4LCAxMiwgMTUsIDIzMiwgMzcsIDEyLCAxNSwgMjMyLCAzNiwgMTIsIDE1LCAyMzIsIDM1LCAKKyAgICAxMiwgMTUsIDIzMiwgMzQsIDEyLCAxNSwgMjMyLCAzMywgMTIsIDE1LCAyMzIsIDMyLCAxMiwgMTUsIDIzMiwgMzEsIDEyLCAKKyAgICAxNSwgMjMyLCAzMCwgMTIsIDE1LCAyMzIsIDI5LCAxMiwgMTUsIDIzMiwgMjgsIDEyLCAxNSwgMjMyLCAyNywgMTIsIDE1LCAKKyAgICAyMzIsIDI2LCAxMiwgMTUsIDIzMiwgMjUsIDEyLCAxNSwgMjMyLCAyNCwgMTIsIDE1LCAyMzIsIDIzLCAxMiwgMTUsIDIzMiwgCisgICAgMjIsIDEyLCAxNSwgMjMyLCAyMSwgMTIsIDE1LCAyMzIsIDIwLCAxMiwgMTUsIDIzMiwgMTksIDEyLCAxNSwgMjMyLCAxOCwgCisgICAgMTIsIDE1LCAyMzIsIDE3LCAxMiwgMTUsIDIzMiwgMTYsIDEyLCAxNSwgMjMyLCAxNSwgMTIsIDE1LCAyMzIsIDE0LCAxMiwgCisgICAgMTUsIDIzMiwgMTMsIDEyLCAxNSwgMjMyLCAxMiwgMTIsIDE1LCAyMzIsIDExLCAxMiwgMTUsIDIzMiwgMTAsIDEyLCAxNSwgCisgICAgMjMyLCA5LCAxMiwgMTUsIDIzMiwgOCwgMTIsIDE1LCAyMzIsIDcsIDEyLCAxNSwgMjMyLCA2LCAxMiwgMTUsIDIzMiwgNSwgCisgICAgMTIsIDE1LCAyMzIsIDQsIDEyLCAxNSwgMjMyLCAzLCAxMiwgMTUsIDIzMiwgMiwgMTIsIDE1LCAyMzIsIDEsIDEyLCAxNSwgCisgICAgMjMyLCAwLCAxMiwgMTUsIDIzMSwgMjU1LCAxMiwgMTUsIDIzMSwgMjU0LCAxMiwgMTUsIDIzMSwgMjUzLCAxMiwgMTUsIAorICAgIDIzMSwgMjUyLCAxMiwgMTUsIDIzMSwgMjUxLCAxMiwgMTUsIDIzMSwgMjUwLCAxMiwgMTUsIDIzMSwgMjQ5LCAxMiwgMTUsIAorICAgIDIzMSwgMjQ4LCAxMiwgMTUsIDIzMSwgMjQ3LCAxMiwgMTUsIDIzMSwgMjQ2LCAxMiwgMTUsIDIzMSwgMjQ1LCAxMiwgMTUsIAorICAgIDIzMSwgMjQ0LCAxMiwgMTUsIDIzMSwgMjQzLCAxMiwgMTUsIDIzMSwgMjQyLCAxMiwgMTUsIDIzMSwgMjQxLCAxMiwgMTUsIAorICAgIDIzMSwgMjQwLCAxMiwgMTUsIDIzMSwgMjM5LCAxMiwgMTUsIDIzMSwgMjM4LCAxMiwgMTUsIDIzMSwgMjM3LCAxMiwgMTUsIAorICAgIDIzMSwgMjM2LCAxMiwgMTUsIDIzMSwgMjM1LCAxMiwgMTUsIDIzMSwgMjM0LCAxMiwgMTUsIDIzMSwgMjMzLCAxMiwgMTUsIAorICAgIDIzMSwgMjMyLCAxMiwgMTUsIDIzMSwgMjMxLCAxMiwgMTUsIDIzMSwgMjMwLCAxMiwgMTUsIDIzMSwgMjI5LCAxMiwgMTUsIAorICAgIDIzMSwgMjI4LCAxMiwgMTUsIDIzMSwgMjI3LCAxMiwgMTUsIDIzMSwgMjI2LCAxMiwgMTUsIDIzMSwgMjI1LCAxMiwgMTUsIAorICAgIDIzMSwgMjI0LCAxMiwgMTUsIDIzMSwgMjIzLCAxMiwgMTUsIDIzMSwgMjIyLCAxMiwgMTUsIDIzMSwgMjIxLCAxMiwgMTUsIAorICAgIDIzMSwgMjIwLCAxMiwgMTUsIDIzMSwgMjE5LCAxMiwgMTUsIDIzMSwgMjE4LCAxMiwgMTUsIDIzMSwgMjE3LCAxMiwgMTUsIAorICAgIDIzMSwgMjE2LCAxMiwgMTUsIDIzMSwgMjE1LCAxMiwgMTUsIDIzMSwgMjE0LCAxMiwgMTUsIDIzMSwgMjEzLCAxMiwgMTUsIAorICAgIDIzMSwgMjEyLCAxMiwgMTUsIDIzMSwgMjExLCAxMiwgMTUsIDIzMSwgMjEwLCAxMiwgMTUsIDIzMSwgMjA5LCAxMiwgMTUsIAorICAgIDIzMSwgMjA4LCAxMiwgMTUsIDIzMSwgMjA3LCAxMiwgMTUsIDIzMSwgMjA2LCAxMiwgMTUsIDIzMSwgMjA1LCAxMiwgMTUsIAorICAgIDIzMSwgMjA0LCAxMiwgMTUsIDIzMSwgMjAzLCAxMiwgMTUsIDIzMSwgMjAyLCAxMiwgMTUsIDIzMSwgMjAxLCAxMiwgMTUsIAorICAgIDIzMSwgMjAwLCAxMiwgMTUsIDIzMSwgMTk5LCAxMiwgMTUsIDIzMSwgMTk4LCAxMiwgMTUsIDIzMSwgMTk3LCAxMiwgMTUsIAorICAgIDIzMSwgMTk2LCAxMiwgMTUsIDIzMSwgMTk1LCAxMiwgMTUsIDIzMSwgMTk0LCAxMiwgMTUsIDIzMSwgMTkzLCAxMiwgMTUsIAorICAgIDIzMSwgMTkyLCAxMiwgMTUsIDIzMSwgMTkxLCAxMiwgMTUsIDIzMSwgMTkwLCAxMiwgMTUsIDIzMSwgMTg5LCAxMiwgMTUsIAorICAgIDIzMSwgMTg4LCAxMiwgMTUsIDIzMSwgMTg3LCAxMiwgMTUsIDIzMSwgMTg2LCAxMiwgMTUsIDIzMSwgMTg1LCAxMiwgMTUsIAorICAgIDIzMSwgMTg0LCAxMiwgMTUsIDIzMSwgMTgzLCAxMiwgMTUsIDIzMSwgMTgyLCAxMiwgMTUsIDIzMSwgMTgxLCAxMiwgMTUsIAorICAgIDIzMSwgMTgwLCAxMiwgMTUsIDIzMSwgMTc5LCAxMiwgMTUsIDIzMSwgMTc4LCAxMiwgMTUsIDIzMSwgMTc3LCAxMiwgMTUsIAorICAgIDIzMSwgMTc2LCAxMiwgMTUsIDIzMSwgMTc1LCAxMiwgMTUsIDIzMSwgMTc0LCAxMiwgMTUsIDIzMSwgMTczLCAxMiwgMTUsIAorICAgIDIzMSwgMTcyLCAxMiwgMTUsIDIzMSwgMTcxLCAxMiwgMTUsIDIzMSwgMTcwLCAxMiwgMTUsIDIzMSwgMTY5LCAxMiwgMTUsIAorICAgIDIzMSwgMTY4LCAxMiwgMTUsIDIzMSwgMTY3LCAxMiwgMTUsIDIzMSwgMTY2LCAxMiwgMTUsIDIzMSwgMTY1LCAxMiwgMTUsIAorICAgIDIzMSwgMTY0LCAxMiwgMTUsIDIzMSwgMTYzLCAxMiwgMTUsIDIzMSwgMTYyLCAxMiwgMTUsIDIzMSwgMTYxLCAxMiwgMTUsIAorICAgIDIzMSwgMTYwLCAxMiwgMTUsIDIzMSwgMTU5LCAxMiwgMTUsIDIzMSwgMTU4LCAxMiwgMTUsIDIzMSwgMTU3LCAxMiwgMTUsIAorICAgIDIzMSwgMTU2LCAxMiwgMTUsIDIzMSwgMTU1LCAxMiwgMTUsIDIzMSwgMTU0LCAxMiwgMTUsIDIzMSwgMTUzLCAxMiwgMTUsIAorICAgIDIzMSwgMTUyLCAxMiwgMTUsIDIzMSwgMTUxLCAxMiwgMTUsIDIzMSwgMTUwLCAxMiwgMTUsIDIzMSwgMTQ5LCAxMiwgMTUsIAorICAgIDIzMSwgMTQ4LCAxMiwgMTUsIDIzMSwgMTQ3LCAxMiwgMTUsIDIzMSwgMTQ2LCAxMiwgMTUsIDIzMSwgMTQ1LCAxMiwgMTUsIAorICAgIDIzMSwgMTQ0LCAxMiwgMTUsIDIzMSwgMTQzLCAxMiwgMTUsIDIzMSwgMTQyLCAxMiwgMTUsIDIzMSwgMTQxLCAxMiwgMTUsIAorICAgIDIzMSwgMTQwLCAxMiwgMTUsIDIzMSwgMTM5LCAxMiwgMTUsIDIzMSwgMTM4LCAxMiwgMTUsIDIzMSwgMTM3LCAxMiwgMTUsIAorICAgIDIzMSwgMTM2LCAxMiwgMTUsIDIzMSwgMTM1LCAxMiwgMTUsIDIzMSwgMTM0LCAxMiwgMTUsIDIzMSwgMTMzLCAxMiwgMTUsIAorICAgIDIzMSwgMTMyLCAxMiwgMTUsIDIzMSwgMTMxLCAxMiwgMTUsIDIzMSwgMTMwLCAxMiwgMTUsIDIzMSwgMTI5LCAxMiwgMTUsIAorICAgIDIzMSwgMTI4LCAxMiwgMTUsIDIzMSwgMTI3LCAxMiwgMTUsIDIzMSwgMTI2LCAxMiwgMTUsIDIzMSwgMTI1LCAxMiwgMTUsIAorICAgIDIzMSwgMTI0LCAxMiwgMTUsIDIzMSwgMTIzLCAxMiwgMTUsIDIzMSwgMTIyLCAxMiwgMTUsIDIzMSwgMTIxLCAxMiwgMTUsIAorICAgIDIzMSwgMTIwLCAxMiwgMTUsIDIzMSwgMTE5LCAxMiwgMTUsIDIzMSwgMTE4LCAxMiwgMTUsIDIzMSwgMTE3LCAxMiwgMTUsIAorICAgIDIzMSwgMTE2LCAxMiwgMTUsIDIzMSwgMTE1LCA4LCA1LCAzMiwgMjQwLCAzMCwgOCwgNSwgMzIsIDI0MCwgMjYsIDgsIDUsIAorICAgIDMyLCAyMzksIDIyOCwgOCwgNSwgMzIsIDI0MCwgMjksIDgsIDUsIDMyLCAyNDAsIDI4LCA4LCA1LCAzMiwgMTYzLCAyMTUsIAorICAgIDk0LCAyMTAsIDY5LCA4LCA1LCAzMiwgMjExLCAxMDgsIDE3OCwgNSwgMzIsIDIyNCwgMjQxLCAyMjEsIDE1MiwgMTc4LCA1LCAKKyAgICAzMiwgMjI0LCAyNDEsIDI0MSwgMTY3LCAxNzgsIDUsIDMyLCAyMjQsIDI0MSwgMjMxLCAxOSwgMTc4LCA1LCAzMiwgMjA1LCAKKyAgICAyMzUsIDIyMSwgMTUyLCAxNzgsIDUsIDMyLCAyMjQsIDI0MSwgMjAzLCAxNzQsIDExMCwgMSwgMjAyLCAyMzcsIDMsIDIzNiwgCisgICAgMjMyLCAxMTAsIDIxOCwgNjMsIDIzMCwgODEsIDIwNiwgNjcsIDExMCwgMzIsIDIwMywgOSwgMjAyLCAyMzcsIDIwMiwgMjM3LCAKKyAgICAyMTksIDU0LCAxMTAsIDEsIDI1MCwgMjUwLCAyNTAsIDMsIDExMCwgMSwgMjA0LCAyNywgMjUxLCAzMCwgMTEwLCAxLCAyMDQsIAorICAgIDI3LCAyNDQsIDE3OCwgMTEwLCAxLCAyMDQsIDI3LCAyMzcsIDY3LCAxMTAsIDEsIDIwNCwgMjcsIDIzMCwgMjIsIDExMCwgMSwgCisgICAgMjA0LCAyNywgMjI4LCAyMCwgMTEwLCAxLCAyMDQsIDI3LCA0NiwgMjI0LCAyNDcsIDExMCwgMSwgMjA0LCAyNywgMjE2LCAKKyAgICA5MSwgMTEwLCAxLCAyMDQsIDI3LCAyMDksIDIwMywgMTEwLCAxLCAyNTAsIDI1MCwgOTEsIDU0LCAxMTAsIDEsIDIxMywgMCwgCisgICAgMywgMjEzLCAwLCAyNDMsIDg1LCAxMTAsIDEsIDIxMywgMCwgMywgMjEyLCAxMjQsIDI0MywgODUsIDExMCwgMSwgMjEzLCAwLCAKKyAgICAzLCAyNDQsIDE5OCwgMjUsIDIxMywgMCwgMjQzLCA4NSwgMTEwLCAxLCAyMTMsIDAsIDMsIDI0NCwgMTk4LCAyNSwgMjEyLCAKKyAgICAxMjQsIDI0MywgODUsIDExMCwgMSwgMTM3LCAzLCAyMTksIDU0LCAxMTAsIDEsIDEzNywgMywgMjE3LCAxMTQsIDExMCwgMSwgCisgICAgMTM3LCAzLCAyMjUsIDEwNSwgMTEwLCAxLCAyNDgsIDEwOSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjM4LCA2OCwgMywgMjQ0LCAKKyAgICAxOTcsIDExMCwgMSwgMjQ0LCAxNzksIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIzNywgNjgsIDMsIDIyNSwgMTA1LCAxMTAsIDEsIAorICAgIDIwNiwgNjAsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIwMiwgOTYsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIwOSwgMTMzLCAzLCAKKyAgICAyNDQsIDE5NywgMTEwLCAxLCAyMDIsIDIzNywgMywgMjQ0LCAxOTcsIDExMCwgMSwgNDYsIDIzMCwgMjMsIDMsIDI0NCwgCisgICAgMTk3LCAxMTAsIDEsIDIzMCwgMjMsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIyOCwgMjEsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIAorICAgIDIyNCwgMjQ4LCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMjEsIDQxLCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMTQsIDI1MCwgMywgCisgICAgMjQ0LCAxOTcsIDExMCwgMSwgNDYsIDIxOSwgMzUsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxOSwgMzUsIDMsIDI0NCwgMTk3LCAKKyAgICAxMTAsIDEsIDIwOCwgMTYsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxNywgNzUsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxNiwgCisgICAgOTIsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxMywgMCwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjA5LCAyMDQsIDMsIDI0NCwgCisgICAgMTk3LCAxMTAsIDEsIDIwNiwgNjAsIDMsIDIzNiwgMTI4LCAxMTAsIDEsIDI0OCwgMTA5LCAzLCAyMTYsIDIwMCwgMTEwLCAxLCAKKyAgICAyMzAsIDIzLCAzLCAyMTYsIDIwMCwgMTEwLCAxLCAyMTksIDM1LCAzLCAyMTYsIDIwMCwgMTEwLCAzMiwgMTM3LCAyMjgsIAorICAgIDIwLCAxMCwgMSwgMTM3LCAyMDQsIDg4LCA2NCwgMTgsIDEwLCAxLCAxMzcsIDIwNCwgODgsIDQ2LCAxOCwgMTAsIDEsIDI0OCwgCisgICAgMTQ5LCA2NCwgMTgsIDEwLCAxLCAyNDgsIDE0OSwgNDYsIDE4LCAxMCwgMSwgMjQ4LCAxNDksIDgxLCAxOCwgMTAsIDEsIAorICAgIDI0OCwgMTQ5LCAxNzQsIDE4LCAxMCwgMSwgMjE5LCAxNywgNjQsIDE4LCAxMCwgMSwgMjE5LCAxNywgNDYsIDE4LCAxMCwgMSwgCisgICAgMjE5LCAxNywgODEsIDE4LCAxMCwgMSwgMjE5LCAxNywgMTc0LCAxOCwgMTAsIDEsIDI0OCwgMTM3LCA2NCwgMTgsIDEwLCAxLCAKKyAgICAyNDgsIDEzNywgNDYsIDE4LCAxMCwgMSwgMjQ4LCAxMzcsIDgxLCAxOCwgMTAsIDEsIDI0OCwgMTM3LCAxNzQsIDE4LCAxMCwgCisgICAgMSwgMjA3LCAyMzIsIDY0LCAxOCwgMTAsIDEsIDIwNywgMjMyLCA0NiwgMTgsIDEwLCAxLCAyMDcsIDIzMiwgODEsIDE4LCAKKyAgICAxMCwgMSwgMjA3LCAyMzIsIDE3NCwgMTgsIDEwLCAxLCAyMDksIDE2OCwgNjQsIDE4LCAxMCwgMSwgMjA5LCAxNjgsIDQ2LCAKKyAgICAxOCwgMTAsIDEsIDIwOSwgMTY4LCA4MSwgMTgsIDEwLCAxLCAyMDksIDE2OCwgMTc0LCAxOCwgMTAsIDEsIDIwNywgMjM0LCAKKyAgICA2NCwgMTgsIDEwLCAxLCAyMDcsIDIzNCwgNDYsIDE4LCAxMCwgMSwgMjA3LCAyMzQsIDgxLCAxOCwgMTAsIDEsIDIwNywgCisgICAgMjM0LCAxNzQsIDE4LCAxMCwgMSwgMjA2LCA0OSwgNjQsIDE4LCAxMCwgMSwgMjA2LCA0OSwgNDYsIDE4LCAxMCwgMSwgMjA2LCAKKyAgICA0OSwgODEsIDE4LCAxMCwgMSwgMjA2LCA0OSwgMTc0LCAxOCwgMTAsIDEsIDIxOSwgMTUsIDY0LCAxOCwgMTAsIDEsIDIxOSwgCisgICAgMTUsIDQ2LCAxOCwgMTAsIDEsIDIxOSwgMTUsIDgxLCAxOCwgMTAsIDEsIDIxOSwgMTUsIDE3NCwgMTgsIDEwLCAxLCAyNDIsIAorICAgIDYsIDY0LCAxOCwgMTAsIDEsIDI0MiwgNiwgNDYsIDE4LCAxMCwgMSwgMjQyLCA2LCA4MSwgMTgsIDEwLCAxLCAyNDIsIDYsIAorICAgIDE3NCwgMTgsIDEwLCAxLCAyMjAsIDI1NSwgNjQsIDE4LCAxMCwgMSwgMjIwLCAyNTUsIDQ2LCAxOCwgMTAsIDEsIDIyMCwgCisgICAgMjU1LCA4MSwgMTgsIDEwLCAxLCAyMjAsIDI1NSwgMTc0LCAxOCwgMTAsIDEsIDIwOSwgMTkyLCA2NCwgMTgsIDEwLCAxLCAKKyAgICAyMDksIDE5MiwgNDYsIDE4LCAxMCwgMSwgMjA5LCAxOTIsIDgxLCAxOCwgMTAsIDEsIDIwOSwgMTkyLCAxNzQsIDE4LCAxMCwgCisgICAgMSwgMjA5LCAxOTAsIDY0LCAxOCwgMTAsIDEsIDIwOSwgMTkwLCA0NiwgMTgsIDEwLCAxLCAyMDksIDE5MCwgODEsIDE4LCAKKyAgICAxMCwgMSwgMjA5LCAxOTAsIDE3NCwgMTgsIDEwLCAxLCAyNDQsIDExOCwgNjQsIDE4LCAxMCwgMSwgMjQ0LCAxMTgsIDQ2LCAKKyAgICAxOCwgMTAsIDEsIDI0NCwgMTkyLCA2NCwgMTgsIDEwLCAxLCAyNDQsIDE5MiwgNDYsIDE4LCAxMCwgMSwgMjQyLCAzNCwgNjQsIAorICAgIDE4LCAxMCwgMSwgMjQyLCAzNCwgNDYsIDE4LCAxMCwgMSwgMjQ0LCAxMTYsIDY0LCAxOCwgMTAsIDEsIDI0NCwgMTE2LCA0NiwgCisgICAgMTgsIDEwLCAxLCAyMzAsIDE1NiwgNjQsIDE4LCAxMCwgMSwgMjMwLCAxNTYsIDQ2LCAxOCwgMTAsIDEsIDIxNSwgMTc4LCAKKyAgICA2NCwgMTgsIDEwLCAxLCAyMTUsIDE3OCwgNDYsIDE4LCAxMCwgMSwgMjI5LCAxOTAsIDY0LCAxOCwgMTAsIDEsIDIyOSwgCisgICAgMTkwLCA0NiwgMTgsIDEwLCAxLCAyMjksIDE5MCwgODEsIDE4LCAxMCwgMSwgMjI5LCAxOTAsIDE3NCwgMTgsIDEwLCAxLCAKKyAgICAyMzgsIDI1MiwgNjQsIDE4LCAxMCwgMSwgMjM4LCAyNTIsIDQ2LCAxOCwgMTAsIDEsIDIzOCwgMjUyLCA4MSwgMTgsIDEwLCAKKyAgICAxLCAyMzgsIDI1MiwgMTc0LCAxOCwgMTAsIDEsIDIzNywgMjE4LCA2NCwgMTgsIDEwLCAxLCAyMzcsIDIxOCwgNDYsIDE4LCAKKyAgICAxMCwgMSwgMjM3LCAyMTgsIDgxLCAxOCwgMTAsIDEsIDIzNywgMjE4LCAxNzQsIDE4LCAxMCwgMSwgMjIyLCAxMjcsIDY0LCAKKyAgICAxOCwgMTAsIDEsIDIyMiwgMTI3LCA0NiwgMTgsIDEwLCAxLCAyMjIsIDEyNywgODEsIDE4LCAxMCwgMSwgMjIyLCAxMjcsIAorICAgIDE3NCwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgMjM4LCA4NiwgNjQsIDE4LCAxMCwgMSwgMjIxLCAxNzksIDIzOCwgODYsIDQ2LCAKKyAgICAxOCwgMTAsIDEsIDIxNSwgMjMxLCA2NCwgMTgsIDEwLCAxLCAyMTUsIDIzMSwgNDYsIDE4LCAxMCwgMSwgMjE1LCAyMzEsIAorICAgIDgxLCAxOCwgMTAsIDEsIDIxNSwgMjMxLCAxNzQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMywgODksIDg3LCA2NCwgMTgsIDEwLCAKKyAgICAxLCAyMzcsIDQ0LCAzLCA4OSwgODcsIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDIzOCwgMzcsIDY0LCAxOCwgMTAsIDEsIAorICAgIDIzNywgNDQsIDIzOCwgMzcsIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDIzOCwgMzcsIDgxLCAxOCwgMTAsIDEsIDIzNywgCisgICAgNDQsIDIzOCwgMzcsIDE3NCwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAyNDMsIDExMCwgNjQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgCisgICAgMjQzLCAxMTAsIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDI0MywgMTEwLCA4MSwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAyNDMsIAorICAgIDExMCwgMTc0LCAxOCwgMTAsIDEsIDg5LCAyNDgsIDIyNCwgNjQsIDE4LCAxMCwgMSwgODksIDI0OCwgMjI0LCA0NiwgMTgsIAorICAgIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMSwgODksIDI0OCwgMjI0LCAzLCAKKyAgICAyMzcsIDEyOCwgODcsIDQ2LCAxOCwgMTAsIDE2LCA3MCwgNTUsIDEwLCAxNiwgNzAsIDU2LCAxMCwgMTYsIDEyMCwgMTg3LCAKKyAgICA1NSwgMTAsIDE2LCAxMjAsIDE4NywgNTYsIDEwLCAxNiwgMTI2LCAxODcsIDU1LCAxMCwgMTYsIDEyNiwgMTg3LCA1NiwgMTAsIAorICAgIDE2LCAxMjYsIDE4NywgMjE4LCA1OSwgMTgzLCA1NSwgMTAsIDE2LCAxMjYsIDE4NywgMjE4LCA1OSwgMTgzLCA1NiwgMTAsIAorICAgIDE2LCAyMzksIDE0NywgMTg3LCA1NSwgMTAsIDE2LCAyMzksIDE0NywgMTg3LCA1NiwgMTAsIDE2LCA1MiwgODAsIDI0OCwgCisgICAgMjMxLCA1NiwgMTAsIDE2LCAxMjAsIDE4NywgMjA1LCAyNDQsIDU1LCAxMCwgMTYsIDEyMCwgMTg3LCAyMDUsIDI0NCwgNTYsIAorICAgIDEwLCAxNiwgMjE1LCAyNTIsIDEwLCAxNiwgNSwgMjA5LCAyNTIsIDU1LCAxMCwgMTYsIDUsIDIwOSwgMjUyLCA1NiwgMTAsIAorICAgIDEsIDIyMiwgMjA2LCA2NCwgMTgsIDEwLCAxLCAyMjIsIDIwNiwgNDYsIDE4LCAxMCwgMSwgMjIyLCAyMDYsIDgxLCAxOCwgCisgICAgMTAsIDEsIDIyMiwgMjA2LCAxNzQsIDE4LCAxMCwgMSwgMTA2LCA2NCwgMTgsIDEwLCAxLCAxMDYsIDQ2LCAxOCwgMTAsIDEsIAorICAgIDIyMCwgNzQsIDY0LCAxOCwgMTAsIDEsIDIyMCwgNzQsIDQ2LCAxOCwgMTAsIDEsIDIwMiwgMjE0LCA2NCwgMTgsIDEwLCAxLCAKKyAgICAyMDIsIDIxNCwgNDYsIDE4LCAxMCwgMSwgMTA2LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIDIwNiwgNTYsIAorICAgIDY0LCAxOCwgMTAsIDEsIDIwNiwgNTYsIDQ2LCAxOCwgMTAsIDEsIDIyOSwgNzYsIDIyMCwgNzQsIDY0LCAxOCwgMTAsIDEsIAorICAgIDIyOSwgNzYsIDIyMCwgNzQsIDQ2LCAxOCwgMTAsIDEsIDIyOSwgNzYsIDIwMiwgMjE0LCA2NCwgMTgsIDEwLCAxLCAyMjksIAorICAgIDc2LCAyMDIsIDIxNCwgNDYsIDE4LCAxMCwgMSwgMTg4LCA2NCwgMTgsIDEwLCAxLCAxODgsIDQ2LCAxOCwgMTAsIDEsIDE4OCwgCisgICAgODEsIDE4LCAxMCwgMSwgMTg4LCAxNzQsIDE4LCAxMCwgMSwgMjA3LCAxNiwgMjI5LCAyMDUsIDIyOSwgNzYsIDEzNywgMjI1LCAKKyAgICAxMzAsIDgxLCAxOCwgMTAsIDEsIDIwNywgMTYsIDIyOSwgMjA1LCAyMjksIDc2LCAxMzcsIDIyNSwgMTMwLCAxNzQsIDE4LCAKKyAgICAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIAorICAgIDMsIDEzNywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDI1MSwgMTEwLCA2NCwgMTgsIDEwLCAzMiwgCisgICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjUxLCAxMTAsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAKKyAgICAyMDQsIDcxLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjA0LCA3MSwgNDYsIDE4LCAxMCwgMzIsIAorICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEwNiwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEwNiwgCisgICAgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIyMCwgNzQsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgCisgICAgMjM3LCAxMjgsIDg3LCAzLCAyMjAsIDc0LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjAyLCAKKyAgICAyMTQsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDIsIDIxNCwgNDYsIDE4LCAxMCwgMzIsIAorICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE4OCwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE4OCwgCisgICAgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE4OCwgODEsIDE4LCAxMCwgMzIsIDIwNywgMTYsIAorICAgIDIyOSwgNzYsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMDcsIDE2LCAKKyAgICAyMjksIDc2LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA3LCAxNiwgCisgICAgMjI5LCA3NiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCAyMjUsIDEzMCwgODEsIDE4LCAxMCwgMSwgMjQwLCA3NSwgCisgICAgODksIDY0LCAxOCwgMTAsIDEsIDI0MCwgNzUsIDg5LCA0NiwgMTgsIDEwLCAxLCAyNDAsIDc1LCA4OSwgODEsIDE4LCAxMCwgCisgICAgMSwgMjQwLCA3NSwgODksIDE3NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg0LCA2NCwgMTgsIDEwLCAKKyAgICAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgCisgICAgODMsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAKKyAgICAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTg0LCA2NCwgMTgsIAorICAgIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAKKyAgICAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgCisgICAgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE4NCwgNjQsIDE4LCAKKyAgICAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIDY0LCAxOCwgCisgICAgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIAorICAgIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDE4NCwgNjQsIDE4LCAxMCwgCisgICAgMzIsIDIwOSwgODksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAKKyAgICAxMCwgMzIsIDIwOSwgODksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAxODQsIAorICAgIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMTUxLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDgzLCA2NCwgMTgsIAorICAgIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCAxNTEsIDY0LCAxOCwgMTAsIAorICAgIDMyLCAyMjksIDE0MSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgCisgICAgMjE0LCAxNjIsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIAorICAgIDIxNCwgMTYyLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIxNSwgCisgICAgMjksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAKKyAgICAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgCisgICAgODMsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCAKKyAgICA2NCwgMTgsIDEwLCAzMiwgMjAyLCAxMTEsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTg0LCA2NCwgMTgsIAorICAgIDEwLCAzMiwgMjUxLCA2MCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgCisgICAgMjM4LCAxMTUsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjQwLCAKKyAgICA0OCwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyNDAsIAorICAgIDQ4LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAKKyAgICAyNDAsIDQ4LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMTcsIAorICAgIDEyMCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIAorICAgIDIxNywgMTIwLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDEzNywgNjQsIDE4LCAxMCwgMzIsIDIzMCwgCisgICAgMjMsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIAorICAgIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMjI4LCAyOSwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIAorICAgIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgCisgICAgMjMsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCisgICAgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAKKyAgICA4MywgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAKKyAgICAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDgzLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCA2NCwgMTgsIAorICAgIDEwLCAzMiwgODMsIDMsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgODMsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgODMsIAorICAgIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCA4MywgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgCisgICAgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMjksIAorICAgIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxMzcsIAorICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgCisgICAgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCAxMzcsIAorICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMTg0LCA2NCwgCisgICAgMTgsIDEwLCAzMiwgODksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIAorICAgIDg5LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIAorICAgIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAxMDEsIDMsIDIxMCwgMTk5LCAxMzcsIDY0LCAxOCwgMTAsIDMyLCAyMTYsIDEyMywgCisgICAgMywgMjEwLCAxOTksIDEzNywgNjQsIDE4LCAxMCwgMzIsIDEzNywgMjI1LCAxMzAsIDMsIDIxMCwgMTk5LCAxMzcsIDY0LCAKKyAgICAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyNDQsIDE3MSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDIyOSwgMjI4LCAKKyAgICA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjQwLCA3MiwgNjQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDI0NCwgCisgICAgMTczLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjI5LCAyMzAsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAKKyAgICAyMTAsIDE5OSwgMTM3LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjE2LCAxMjMsIDQ2LCAxOCwgCisgICAgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIAorICAgIDEyOCwgODcsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjIxLCAxNzksIDQ2LCAxOCwgCisgICAgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIAorICAgIDIzNywgMTI4LCA4NywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIAorICAgIDMyLCAyNDgsIDEzOSwgMywgMjAyLCAxMDgsIDQ2LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgODMsIDQ2LCAxOCwgMTAsIAorICAgIDMyLCAyNDgsIDEzOSwgMywgMjIxLCAxNzksIDQ2LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTM3LCAyMjUsIDEzMCwgCisgICAgNDYsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMTYsIDEyMywgCisgICAgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgCisgICAgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxMzcsIAorICAgIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgCisgICAgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgODksIAorICAgIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMjIxLCAxNzksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAKKyAgICAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAKKyAgICAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIAorICAgIDEyMCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIAorICAgIDIzMCwgMjMsIDMsIDEzNywgNDYsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDIyOCwgMjksIDQ2LCAxOCwgMTAsIDMyLCAKKyAgICAyMzAsIDIzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIAorICAgIDMyLCAyMzAsIDIzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAKKyAgICAyOSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgODMsIAorICAgIDMsIDEzNywgNDYsIDE4LCAxMCwgMzIsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMTYsIDEyMywgCisgICAgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgCisgICAgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxMzcsIAorICAgIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMTM3LCAyMjUsIDEzMCwgCisgICAgMywgMjEwLCAxOTksIDEzNywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAKKyAgICAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMjEsIDE3OSwgNDYsIAorICAgIDE4LCAxMCwgMzIsIDg5LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDg5LCA0NiwgMTgsIDEwLCAKKyAgICAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgCisgICAgMTUxLCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAKKyAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIzNywgCisgICAgNDQsIDgxLCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDE1MSwgCisgICAgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4MywgCisgICAgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE4NCwgCisgICAgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIAorICAgIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjM3LCA0NCwgCisgICAgODEsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxNTEsIDgxLCAxOCwgMTAsIAorICAgIDMyLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMTUxLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAxNTEsIDMsIDgzLCAKKyAgICA4MSwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCA4MywgODEsIAorICAgIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTUxLCA4MSwgMTgsIAorICAgIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDgzLCA4MSwgMTgsIAorICAgIDEwLCAzMiwgMjE1LCAyOSwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMjI5LCAxNDEsIDgxLCAxOCwgCisgICAgMTAsIDMyLCAyMTUsIDI5LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAKKyAgICAyNDQsIDIwOCwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgCisgICAgMjQ0LCAyMDgsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIwMiwgCisgICAgMTExLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIAorICAgIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4MywgCisgICAgODEsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDE1MSwgODEsIDE4LCAKKyAgICAxMCwgMzIsIDI0MCwgNDgsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgODMsIDgxLCAxOCwgMTAsIAorICAgIDMyLCAyMTcsIDEyMCwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgCisgICAgMjMwLCAyMywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjMwLCAKKyAgICAyMywgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAyMjgsIDI5LCA4MSwgMTgsIDEwLCAzMiwgCisgICAgMjMwLCAyMywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAKKyAgICAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIAorICAgIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMjM3LCA0NCwgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAxODQsIDgxLCAKKyAgICAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgCisgICAgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAKKyAgICAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgCisgICAgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjM3LCA0NCwgODEsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIAorICAgIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgMjEwLCAKKyAgICAxOTksIDEzNywgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMTUxLCA4MSwgMTgsIAorICAgIDEwLCAzMiwgODksIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgODksIAorICAgIDMsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCA4MywgMTc0LCAxOCwgMTAsIDMyLCAKKyAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4MywgMTc0LCAKKyAgICAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDE3NCwgCisgICAgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgODMsIDE3NCwgCisgICAgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODMsIDE3NCwgCisgICAgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDE3NCwgCisgICAgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAyMjgsIDI5LCAKKyAgICAxNzQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDgzLCAxNzQsIAorICAgIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgMTc0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjM3LCA0NCwgMTc0LCAKKyAgICAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDE3NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgCisgICAgMjEzLCA4MSwgMywgMjQwLCA3MiwgMTc0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyNDQsIDE3MywgMTc0LCAxOCwgMTAsIAorICAgIDMyLCAyMTMsIDgxLCAzLCAyMjksIDIzMCwgMTc0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgMTM3LCAyMjUsIDEzMCwgCisgICAgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDEzNywgMjI1LCAKKyAgICAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCAxMzcsIAorICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIAorICAgIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAKKyAgICAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAxNTEsIDMsIAorICAgIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxMzcsIAorICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCAxMzcsIAorICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgCisgICAgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIAorICAgIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTMsIAorICAgIDQwLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAKKyAgICAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgCisgICAgMjE2LCAxMjMsIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjE2LCAxMjMsIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAKKyAgICAzLCAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMzIsIDIwOSwgCisgICAgMjUyLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCisgICAgMjUxLCA2MCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDg5LCA0NiwgMTgsIDEwLCAKKyAgICAzMiwgMjM4LCAxMTUsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgODksIDQ2LCAxOCwgCisgICAgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4OSwgNDYsIAorICAgIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4OSwgCisgICAgNDYsIDE4LCAxMCwgMzIsIDE1MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDE1MSwgMywgODksIDQ2LCAKKyAgICAxOCwgMTAsIDMyLCAxODQsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDg5LCA0NiwgMTgsIAorICAgIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjksIDE0MSwgMywgODksIDQ2LCAKKyAgICAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgODksIAorICAgIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAKKyAgICA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE4NCwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgNDYsIAorICAgIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDIyOSwgMTQxLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDQ2LCAxOCwgCisgICAgMTAsIDMyLCAyMTMsIDQwLCAzLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMTYsIDEyMywgNDYsIAorICAgIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDIxNiwgMTIzLCA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIxNiwgMTIzLCAKKyAgICA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCA4MSwgMTgsIAorICAgIDEwLCAzMiwgMjEzLCA0MCwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgODEsIDE4LCAxMCwgCisgICAgMzIsIDIxNCwgMTYyLCAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMjM3LCA0NCwgODEsIDE4LCAKKyAgICAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxODQsIDE3NCwgMTgsIDEwLCAKKyAgICAzMiwgMjE0LCAxNjIsIDMsIDE1MSwgMTc0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjI5LCAxNDEsIDE3NCwgMTgsIAorICAgIDEwLCAzMiwgMjEzLCA0MCwgMywgMTg0LCAxNzQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgMTc0LCAxOCwgMTAsIAorICAgIDMyLCAyMTMsIDQwLCAzLCAyMjksIDE0MSwgMTc0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIDE3NCwgMTgsIDEwLCAKKyAgICAzMiwgMjAyLCAxMTEsIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIDEzNywgMywgMjQwLCA3MCwgNDYsIDE4LCAxMCwgMzIsIAorICAgIDEzNywgMywgMjQwLCA3MCwgNjQsIDE4LCAyMTksIDIzMSwgNDksIDIxOSwgNzYsIDIxOSwgMjMxLCA1MCwgMjE5LCA3NiwgCisgICAgMTAsIDMyLCAyMDksIDE3MCwgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDMsIAorICAgIDE4NCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAKKyAgICAzLCAxNTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyOSwgMTQxLCAzLCA4MywgODEsIDE4LCAxMCwgCisgICAgMzIsIDIwOSwgMTcwLCAzLCA4MywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCAxNTEsIDgxLCAKKyAgICAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4MywgMywgCisgICAgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4MywgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMTUxLCAzLCA4MywgMywgCisgICAgODksIDQ2LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAKKyAgICAxNjIsIDMsIDE1MSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgMywgMTUxLCA4MSwgMTgsIAorICAgIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAKKyAgICA4MywgMywgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDgzLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIAorICAgIDE2MiwgMywgODMsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIAorICAgIDMyLCAyMTQsIDE2MiwgMywgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMTUxLCAzLCAxNTEsIDQ2LCAKKyAgICAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAxNTEsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDgzLCAzLCAKKyAgICA4MywgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAKKyAgICAxNTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgCisgICAgNDAsIDMsIDgzLCAzLCAyMjksIDE0MSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCAzLCAyMjksIDE0MSwgODEsIAorICAgIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCAzLCA4MywgCisgICAgODEsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAxNTEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIAorICAgIDIwOCwgMywgMjI5LCAxNDEsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIyOSwgMTQxLCAzLCA4MywgCisgICAgODEsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgMywgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCAKKyAgICAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIAorICAgIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDE4NCwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAKKyAgICAyNTEsIDYwLCAzLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIAorICAgIDMyLCAyNTEsIDYwLCAzLCA4MywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4MywgMywgCisgICAgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIAorICAgIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMjI5LCAxNDEsIDMsIDgzLCA0NiwgCisgICAgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMjI5LCAxNDEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDgzLCAKKyAgICAzLCAxNTEsIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgCisgICAgMywgMTUxLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAKKyAgICAyMjgsIDI5LCAzLCAxNTEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxODQsIDMsIAorICAgIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgMywgMTg0LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCisgICAgMjI5LCAxNDEsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMjI5LCAxNDEsIDMsIDgzLCA4MSwgMTgsIDEwLCAKKyAgICAzMiwgMjI4LCAyOSwgMywgODMsIDMsIDE1MSwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDgzLCAzLCAxNTEsIDgxLCAKKyAgICAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCAzLCA4MywgODEsIAorICAgIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgMywgMTUxLCA4MSwgCisgICAgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDMsIDE4NCwgCisgICAgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAyMjksIDE0MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMTg0LCAzLCAKKyAgICAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDgzLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMzcsIAorICAgIDQ0LCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTUxLCAzLCA4MywgODEsIDE4LCAxMCwgCisgICAgMzIsIDIyMSwgMTc5LCAzLCAxNTEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCAKKyAgICAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIAorICAgIDMsIDE4NCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgMywgODksIDQ2LCAxOCwgCisgICAgMTAsIDMyLCAyMjEsIDE3OSwgMywgODMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDMsIAorICAgIDgzLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMjksIAorICAgIDE0MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgCisgICAgMTcwLCAzLCAxODQsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIDMsIAorICAgIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyOSwgMTQxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAKKyAgICAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgMywgMTM3LCAyMjUsIAorICAgIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDE4NCwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxNTEsIDMsIAorICAgIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAKKyAgICAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgCisgICAgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIAorICAgIDIwOCwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgMTAsIAorICAgIDMyLCAyMjgsIDI5LCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgCisgICAgMzIsIDg5LCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIAorICAgIDgzLCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCisgICAgMjIxLCAxNzksIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIDMsIDE1MSwgODEsIDE4LCAKKyAgICAxMCwgMzIsIDIyOCwgMjksIDMsIDE1MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCA4MywgMywgODksIAorICAgIDQ2LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCAKKyAgICAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgCisgICAgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIAorICAgIDIyOCwgMjksIDMsIDE4NCwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCAzLCAxNTEsIDQ2LCAxOCwgCisgICAgMTAsIDMyLCAxODQsIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgCisgICAgMTAsIDMyLCA4MywgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAKKyAgICAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgODMsIDMsIDgzLCAKKyAgICA4MSwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDgzLCAKKyAgICAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMjksIDE0MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIAorICAgIDE3OSwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxNSwgNCwgMjA2LCAxODgsIDI1MCwgODIsIDIyOCwgMjU0LCAKKyAgICAyMTEsIDYyLCAyLCA2NCwgMTgsIDEwLCAzMiwgMjE3LCAxMTYsIDIwNiwgMTg4LCAyNTAsIDgyLCAyMjgsIDI1NCwgMjExLCAKKyAgICA2MiwgMiwgNjQsIDE4LCAxMCwgMzIsIDI1MSwgMTMsIDY0LCAxOCwgMTAsIDMyLCAyNTEsIDQ0LCA2NCwgMTgsIDEwLCAzMiwgCisgICAgMjI0LCA1NywgNjQsIDE4LCAxMCwgMzIsIDIxNSwgNSwgNjQsIDE4LCAxMCwgMzIsIDIxNiwgMTc0LCA2NCwgMTgsIDEwLCAKKyAgICAzMiwgMjUxLCAzMywgNjQsIDE4LCAxMCwgMzIsIDIwNCwgOTAsIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDQsIDY0LCAxOCwgMTAsIAorICAgIDMyLCAyMTUsIDMsIDI1MSwgMzMsIDIwNCwgODksIDEwLCAzMiwgMjMwLCAxNzIsIDIxNiwgNTYsIDU0LCAxMCwgMzIsIDI0OCwgCisgICAgNTMsIDI1MCwgMTQyLCAyNTAsIDE0MywgNTcsIDIxNCwgMTQ5LCA1NywgMjE0LCAzOCwgNTcsIDIxMywgMjI2LCA1NywgMjEzLCAKKyAgICAyMTUsIDU3LCAyMTMsIDIwNCwgNTcsIDIxMywgMTkzLCA1NywgMjEzLCAxODIsIDU3LCAyMTMsIDE3MSwgNTcsIDIxMywgCisgICAgMTYwLCA1NywgMjE0LCAxNDgsIDU3LCAyMTQsIDEzNywgNTcsIDIxNCwgMTI2LCA1NywgMjE0LCAxMTUsIDU3LCAyMTQsIAorICAgIDEwNCwgNTcsIDIxNCwgOTMsIDU3LCAyMTQsIDgyLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQ1LCAyMzMsIDIxNywgCisgICAgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAxMzksIDI0NSwgMjMzLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMTM5LCAKKyAgICAyMzksIDEwMiwgMjExLCA2MSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDI0NSwgMjQyLCAyMTcsIDI0MSwgMjM5LCAKKyAgICAxNTksIDM1LCA4MCwgMjEzLCAxNDMsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyNDAsIDIxMiwgODIsIDIxNywgCisgICAgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyMTcsIDQ3LCA4MiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA2MSwgCisgICAgMjI3LCAxODUsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA2MSwgMjI3LCAxODUsIDI0NywgMjI1LCAKKyAgICAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjM2LCAxMDYsIDI0MSwgMTA4LCAzOSwgMzIsIDQ5LCAyMzcsIDEzNywgMzksIAorICAgIDMyLCA1MCwgMjM3LCAxMzcsIDM5LCA1MiwgMjA4LCAyMjgsIDQ5LCAyMzcsIDEzNywgMzksIDUyLCAyMDgsIDIyOCwgNTAsIAorICAgIDIzNywgMTM3LCAzOSwgMjI1LCAxNzEsIDQ5LCAyMzcsIDEzNywgMzksIDIyNSwgMTcxLCA1MCwgMjM3LCAxMzcsIDM5LCAKKyAgICAyNDUsIDIwNiwgMjI1LCAxNzAsIDM5LCAzMiwgNDksIDE2MiwgNTYsIDM5LCAzMiwgNTAsIDE2MiwgNTYsIDM5LCAyMDgsIAorICAgIDIyOCwgNDksIDE2MiwgNTYsIDM5LCAyMDgsIDIyOCwgNTAsIDE2MiwgNTYsIDM5LCAyMjUsIDE3MSwgNDksIDE2MiwgNTYsIAorICAgIDM5LCAyMjUsIDE3MSwgNTAsIDE2MiwgNTYsIDM5LCAyNDUsIDIwNiwgMjI1LCAxNzEsIDU2LCAzOSwgMzYsIDIwOCwgMTk4LCAKKyAgICA0OSwgMjM3LCAxMzcsIDM5LCAzNiwgMjA4LCAxOTgsIDUwLCAyMzcsIDEzNywgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIAorICAgIDEyMCwgNzAsIDIyNywgMjMyLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQxLCAxMDQsIDI0NCwgMTQ0LCAyMTcsIAorICAgIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQxLCA5MywgMjQ0LCAxNDQsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAKKyAgICAxMjQsIDIyNywgMTE0LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjA0LCA3MiwgMTI0LCAyMjcsIDExNCwgMjE3LCAKKyAgICAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCAyMTksIDc2LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDIxOSwgCisgICAgNzYsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgMjQ1LCA5MywgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCAKKyAgICA4MCwgNTAsIDI0NSwgOTMsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCAyMDgsIDEzMywgMjEzLCAzMywgCisgICAgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDIxNywgMjQxLCAKKyAgICAyMzksIDE1OSwgMzUsIDgwLCA0OSwgNjIsIDIyNywgMTg1LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgCisgICAgNjIsIDIyNywgMTg1LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgNTIsIDI1MCwgMjE4LCAxNTUsIAorICAgIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgNTIsIDI1MCwgMjE4LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgCisgICAgMzUsIDgwLCA0OSwgMjUwLCAyMTgsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCAyNTAsIDIxOCwgMTU1LCAKKyAgICAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDI0NSwgMTY2LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIAorICAgIDgwLCA1MCwgMjQ1LCAxNjYsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA2MSwgMjQ1LCAxNjYsIDE1NSwgCisgICAgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA2MSwgMjQ1LCAxNjYsIDE1NSwgMjEzLCAxMjEsIDI0MywgODUsIDYxLCAKKyAgICAyMTMsIDEyMSwgMjQzLCA4NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA1MSwgMTU1LCAyMTcsIDI0MSwgCisgICAgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDUxLCAxNTUsIDI0NCwgMTQzLCAyMTksIDE5OCwgMjQ2LCAyMTQsIDIxOSwgMTk4LCAKKyAgICAyMDQsIDcyLCAyMTksIDE5OCwgNTIsIDIwNCwgNzIsIDIxOSwgMTk4LCAyNDQsIDE0MywgMTI0LCAyMjcsIDExNCwgMjQ2LCAKKyAgICAyMTQsIDEyNCwgMjI3LCAxMTQsIDIwNCwgNzIsIDEyNCwgMjI3LCAxMTQsIDUsIDI0NSwgMjMzLCA1LCAxMzksIDI0NSwgCisgICAgMjMzLCA1LCAyMzksIDEwMiwgMjExLCA2MSwgNSwgMjEzLCAxNDMsIDUsIDI0NSwgMjQyLCA1LCAyMTcsIDQ3LCA4MiwgNSwgCisgICAgMjQwLCAyMTIsIDgyLCA1LCAyNDEsIDEwNCwgMjQ0LCAxNDQsIDUsIDQ5LCAyMTksIDc2LCA1LCA1MCwgMjE5LCA3NiwgNSwgCisgICAgNDksIDI0NSwgOTMsIDE1NSwgNSwgNTAsIDI0NSwgOTMsIDE1NSwgNSwgNDksIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDUsIAorICAgIDUwLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA1LCA0MiwgNTQsIDUsIDI1MCwgMjM1LCA1LCAyNTAsIDU5LCA1LCA5MSwgCisgICAgNTQsIDUsIDIzNSwgMjE5LCA1LCAyMjcsIDE3OSwgNTQsIDUsIDIzNywgMjQ3LCA1NCwgNSwgMjQxLCAzNSwgNTQsIDUsIAorICAgIDIxNiwgNzQsIDIxMiwgMCwgNSwgMjQzLCA5NywgNTQsIDUsIDIxOCwgMjQ2LCA1NCwgNSwgMjQ1LCAyMzEsIDI1MCwgNDksIAorICAgIDEwLCAyNDAsIDcwLCA2NCwgMTgsIDEwLCAyMDksIDIxMCwgMywgMjQwLCA3MCwgNTUsIDEwLCAyNDQsIDE3MSwgNjQsIDE4LCAKKyAgICAxMCwgMjA5LCAyNDksIDIzOSwgMTM3LCAxMCwgMjI5LCAyMjgsIDY0LCAxOCwgMTAsIDI0MCwgNzIsIDY0LCAxOCwgMTAsIAorICAgIDI0MCwgNzIsIDE3NCwgMTgsIDEwLCAyNDQsIDE3MywgNjQsIDE4LCAxMCwgMjQ0LCAxNzMsIDE3NCwgMTgsIDEwLCAyMjksIAorICAgIDIzMCwgNjQsIDE4LCAxMCwgMjI5LCAyMzAsIDE3NCwgMTgsIDEwLCAyMTMsIDgxLCA2NCwgMTgsIDEwLCAyMTMsIDgxLCAKKyAgICAxNzQsIDE4LCAxMCwgMjEwLCAyMjMsIDY0LCAxOCwgMTAsIDIxMCwgMjIzLCAxNzQsIDE4LCAxMCwgMSwgMjM3LCAxMjgsIAorICAgIDY0LCAxOCwgMTAsIDEsIDEzNywgMywgMjI1LCAxNjYsIDg3LCA2NCwgMTgsIDEwLCAxLCAxMzcsIDMsIDIyNSwgMTY2LCA4NywgCisgICAgNDYsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIDEzNywgMywgMjM3LCAxMjgsIDg3LCAKKyAgICA0NiwgMTgsIDEwLCAxLCAyMDQsIDcxLCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIDIwNCwgNzEsIDMsIDIzNywgCisgICAgMTI4LCA4NywgNDYsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMzcsIDEyOCwgMjQ4LCAxMjYsIDY0LCAxOCwgMTAsIDEsIDEzNywgCisgICAgMywgMjM3LCAxMjgsIDI0OCwgMTI2LCA0NiwgMTgsIDEwLCAxLCA4OSwgMywgMjM3LCAxMjgsIDg3LCA2NCwgMTgsIDEwLCAxLCAKKyAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCA0NiwgMTgsIDEwLCAxLCA4OSwgMywgMjM3LCAxMjgsIDg3LCA4MSwgMTgsIDEwLCAxLCAKKyAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAxNzQsIDE4LCAxMCwgMSwgMTM3LCA2NCwgMTgsIDEwLCAxLCAxMzcsIDQ2LCAxOCwgMTAsIAorICAgIDEsIDI0OCwgMTM5LCA2NCwgMTgsIDEwLCAxLCAyNDgsIDEzOSwgNDYsIDE4LCAxMCwgMSwgMjQ4LCAxMzksIDgxLCAxOCwgCisgICAgMTAsIDEsIDI0OCwgMTM5LCAxNzQsIDE4LCAxMCwgMSwgMjA5LCAxNzAsIDIyNSwgOTksIDY0LCAxOCwgMTAsIDEsIDIwOSwgCisgICAgMTcwLCAyMjUsIDk5LCA0NiwgMTgsIDEwLCAxLCAyMDksIDE3MCwgNjQsIDE4LCAxMCwgMSwgMjA5LCAxNzAsIDQ2LCAxOCwgCisgICAgMTAsIDEsIDIwOSwgMTcwLCA4MSwgMTgsIDEwLCAxLCAyMDksIDE3MCwgMTc0LCAxOCwgMTAsIDEsIDIwOSwgODksIDY0LCAKKyAgICAxOCwgMTAsIDEsIDIwOSwgODksIDQ2LCAxOCwgMTAsIDEsIDIwOSwgODksIDgxLCAxOCwgMTAsIDEsIDIwOSwgODksIDE3NCwgCisgICAgMTgsIDEwLCAxLCAxODQsIDY0LCAxOCwgMTAsIDEsIDE4NCwgNDYsIDE4LCAxMCwgMSwgMTg0LCA4MSwgMTgsIDEwLCAxLCAKKyAgICAxODQsIDE3NCwgMTgsIDEwLCAxLCAxNTEsIDY0LCAxOCwgMTAsIDEsIDE1MSwgNDYsIDE4LCAxMCwgMSwgMTUxLCA4MSwgMTgsIAorICAgIDEwLCAxLCAxNTEsIDE3NCwgMTgsIDEwLCAxLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMSwgMjI5LCAxNDEsIDQ2LCAxOCwgCisgICAgMTAsIDEsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAxLCAyMjksIDE0MSwgMTc0LCAxOCwgMTAsIDEsIDI0NCwgMTg1LCA2NCwgCisgICAgMTgsIDEwLCAxLCAyNDQsIDE4NSwgNDYsIDE4LCAxMCwgMSwgMjA5LCAxMDEsIDY0LCAxOCwgMTAsIDEsIDIwOSwgMTAxLCAKKyAgICA0NiwgMTgsIDEwLCAxLCAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMSwgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIDEsIDIwMiwgCisgICAgMTA4LCA2NCwgMTgsIDEwLCAxLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMSwgMjE0LCAxNjIsIDY0LCAxOCwgMTAsIDEsIAorICAgIDIxNCwgMTYyLCA0NiwgMTgsIDEwLCAxLCAyMTQsIDE2MiwgODEsIDE4LCAxMCwgMSwgMjE0LCAxNjIsIDE3NCwgMTgsIDEwLCAKKyAgICAxLCAyMTMsIDQwLCA2NCwgMTgsIDEwLCAxLCAyMTMsIDQwLCA0NiwgMTgsIDEwLCAxLCAyMTMsIDQwLCA4MSwgMTgsIDEwLCAKKyAgICAxLCAyMTMsIDQwLCAxNzQsIDE4LCAxMCwgMSwgMjE1LCAyOSwgNjQsIDE4LCAxMCwgMSwgMjE1LCAyOSwgNDYsIDE4LCAxMCwgCisgICAgMSwgMjE1LCAyOSwgODEsIDE4LCAxMCwgMSwgMjE1LCAyOSwgMTc0LCAxOCwgMTAsIDEsIDI0NCwgMjA4LCA2NCwgMTgsIDEwLCAKKyAgICAxLCAyNDQsIDIwOCwgNDYsIDE4LCAxMCwgMSwgMjQ0LCAyMDgsIDgxLCAxOCwgMTAsIDEsIDI0NCwgMjA4LCAxNzQsIDE4LCAKKyAgICAxMCwgMSwgMjA5LCAyNTIsIDY0LCAxOCwgMTAsIDEsIDIwOSwgMjUyLCA0NiwgMTgsIDEwLCAxLCAyMDksIDI1MiwgODEsIAorICAgIDE4LCAxMCwgMSwgMjA5LCAyNTIsIDE3NCwgMTgsIDEwLCAxLCAyMDIsIDExMSwgNjQsIDE4LCAxMCwgMSwgMjAyLCAxMTEsIAorICAgIDQ2LCAxOCwgMTAsIDEsIDIwMiwgMTExLCA4MSwgMTgsIDEwLCAxLCAyMDIsIDExMSwgMTc0LCAxOCwgMTAsIDEsIDI1MSwgCisgICAgNjAsIDY0LCAxOCwgMTAsIDEsIDI1MSwgNjAsIDQ2LCAxOCwgMTAsIDEsIDI1MSwgNjAsIDgxLCAxOCwgMTAsIDEsIDI1MSwgCisgICAgNjAsIDE3NCwgMTgsIDEwLCAxLCAyMzgsIDExNSwgNjQsIDE4LCAxMCwgMSwgMjM4LCAxMTUsIDQ2LCAxOCwgMTAsIDEsIAorICAgIDIzOCwgMTE1LCA4MSwgMTgsIDEwLCAxLCAyMzgsIDExNSwgMTc0LCAxOCwgMTAsIDEsIDI0MCwgNDgsIDY0LCAxOCwgMTAsIAorICAgIDEsIDI0MCwgNDgsIDQ2LCAxOCwgMTAsIDEsIDI0MCwgNDgsIDgxLCAxOCwgMTAsIDEsIDI0MCwgNDgsIDE3NCwgMTgsIDEwLCAKKyAgICAxLCAyMTcsIDEyMCwgNjQsIDE4LCAxMCwgMSwgMjE3LCAxMjAsIDQ2LCAxOCwgMTAsIDEsIDIxNywgMTIwLCA4MSwgMTgsIAorICAgIDEwLCAxLCAyMTcsIDEyMCwgMTc0LCAxOCwgMTAsIDEsIDIzMCwgMjMsIDY0LCAxOCwgMTAsIDEsIDIzMCwgMjMsIDQ2LCAxOCwgCisgICAgMTAsIDEsIDIzMCwgMjMsIDgxLCAxOCwgMTAsIDEsIDIzMCwgMjMsIDE3NCwgMTgsIDEwLCAxLCAyMjgsIDI5LCA2NCwgMTgsIAorICAgIDEwLCAxLCAyMjgsIDI5LCA0NiwgMTgsIDEwLCAxLCAyMjgsIDI5LCA4MSwgMTgsIDEwLCAxLCAyMjgsIDI5LCAxNzQsIDE4LCAKKyAgICAxMCwgMSwgODMsIDY0LCAxOCwgMTAsIDEsIDgzLCA0NiwgMTgsIDEwLCAxLCA4MywgODEsIDE4LCAxMCwgMSwgODMsIDE3NCwgCisgICAgMTgsIDEwLCAxLCAyMjEsIDE3OSwgNjQsIDE4LCAxMCwgMSwgMjIxLCAxNzksIDQ2LCAxOCwgMTAsIDEsIDIyMSwgMTc5LCAKKyAgICA4MSwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgMTc0LCAxOCwgMTAsIDEsIDIzNywgNDQsIDY0LCAxOCwgMTAsIDEsIDIzNywgNDQsIAorICAgIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDEsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAxLCAyMDQsIDcxLCAKKyAgICA2NCwgMTgsIDEwLCAxLCAyMDQsIDcxLCA0NiwgMTgsIDEwLCAxLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAxLCAxMzcsIAorICAgIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAxLCA4OSwgNjQsIDE4LCAxMCwgMSwgODksIDQ2LCAxOCwgMTAsIDEsIDg5LCA4MSwgCisgICAgMTgsIDEwLCAxLCA4OSwgMTc0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDMsIDIyNSwgMTY2LCA4NywgNjQsIDE4LCAKKyAgICAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMywgMjI1LCAxNjYsIDg3LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCisgICAgMTM3LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDMsIDIzNywgMTI4LCA4NywgCisgICAgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMywgMjM3LCAxMjgsIDI0OCwgMTI2LCA2NCwgMTgsIDEwLCAzMiwgCisgICAgMjI4LCAyOSwgMywgMTM3LCAzLCAyMzcsIDEyOCwgMjQ4LCAxMjYsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIAorICAgIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDQ2LCAxOCwgMjAyLCA4NSwgMjA0LCAyNCwgMjIxLCAxOTAsIDIxMSwgCisgICAgMjI4LCAxNTQsIDI0MCwgMjEyLCA4MiwgMTU0LCAyMTcsIDMxLCA4MiwgMTU0LCA0MiwgNTQsIDE1NCwgMjQzLCA5NywgNTQsIAorICAgIDE1NCwgMjE4LCAyNDYsIDU0LCAxNTQsIDI1MCwgMjM1LCAxNTQsIDI1MCwgMTYwLCAxNTQsIDQ5LCAyMTksIDc2LCAxNTQsIAorICAgIDUwLCAyMTksIDc2LCAxNTQsIDI1MCwgNTksIDE1NCwgOTEsIDU0LCAxNTQsIDI0NSwgMjMzLCAxNTQsIDIzNSwgMjE5LCAKKyAgICAxNTQsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNTQsIDIxMiwgMCwgMTU0LCAxNywgMjAyLCA4NCwgMTU0LCAxNywgMTA1LCAxNTQsIAorICAgIDE3LCAxMDgsIDE1NCwgMTcsIDE0NywgMTU0LCAxNywgMTQ5LCAxNTQsIDE3LCAxNzAsIDE1NCwgMTcsIDE5NSwgMTU0LCAxNywgCisgICAgMjEzLCAxMTEsIDE1NCwgMTcsIDE5OSwgMTU0LCAxNywgMjIyLCA2MywgMTU0LCAyNDUsIDI0MiwgMTU0LCAyMTMsIDE0MywgCisgICAgMTU0LCAyMjcsIDE3OSwgNTQsIDE1NCwgMjQxLCAzNSwgNTQsIDE1NCwgMjM3LCAyNDcsIDU0LCAxNTQsIDIxNywgNDcsIDgyLCAKKyAgICAxNTQsIDI0NSwgMjMxLCAyNTAsIDQ5LCAxNTQsIDgsIDYsIDEsIDYzLCAxNTQsIDgsIDYsIDEsIDI0OSwgMjU1LCAxNTQsIDgsIAorICAgIDYsIDEsIDI0NywgMTI1LCAxNTQsIDgsIDYsIDEsIDI0NSwgNTEsIDE1NCwgOCwgNiwgMSwgNzQsIDE1NCwgOCwgNiwgMSwgCisgICAgMjQwLCAxNzQsIDE1NCwgOCwgNiwgMSwgMjM5LCA3NSwgMTU0LCA4LCA2LCAxLCAyMzcsIDE3MSwgMTU0LCA4LCA2LCAxLCAKKyAgICA3NSwgMTU0LCA4LCA2LCAxLCAyMzAsIDE4NCwgMTU0LCA4LCA2LCAxLCAyMzAsIDU0LCAxNTQsIDgsIDYsIDEsIDE1OSwgCisgICAgMTU0LCA4LCA2LCAxLCAyMjYsIDE4NSwgMTU0LCA4LCA2LCAxLCAyMjMsIDE2MywgMTU0LCA4LCA2LCAxLCA3OCwgMTU0LCA4LCAKKyAgICA2LCAxLCAyMTksIDE4NCwgMTU0LCA4LCA2LCAxLCAyMTcsIDEzNCwgMTU0LCA4LCA2LCAxLCAxNDYsIDE1NCwgOCwgNiwgMSwgCisgICAgMTk0LCAxNTQsIDgsIDYsIDEsIDIxMCwgNjksIDE1NCwgOCwgNiwgMSwgNjgsIDE1NCwgOCwgNiwgMSwgMjA2LCAxNjQsIAorICAgIDE1NCwgOCwgNiwgMSwgMjA0LCAxNDQsIDE1NCwgOCwgNiwgMSwgMjAzLCAxOTYsIDE1NCwgOCwgNiwgMSwgMjAzLCAxMjQsIAorICAgIDE1NCwgOCwgNiwgMSwgMjAyLCAxNTksIDE1NCwgNDksIDUxLCAxNTUsIDE1NCwgMjE2LCA3NCwgMjEyLCAwLCAxNTQsIDUwLCAKKyAgICA1MSwgMTU1LCAxNTQsIDI0NiwgNTMsIDI1MSwgMTM4LCAxNTQsIDEyNCwgMjI3LCAxMTQsIDE1NCwgMjM3LCAyNTQsIDI1MSwgCisgICAgMTM4LCAxNTQsIDgsIDUsIDEsIDYzLCAxNTQsIDgsIDUsIDEsIDI0OSwgMjU1LCAxNTQsIDgsIDUsIDEsIDI0NywgMTI1LCAKKyAgICAxNTQsIDgsIDUsIDEsIDI0NSwgNTEsIDE1NCwgOCwgNSwgMSwgNzQsIDE1NCwgOCwgNSwgMSwgMjQwLCAxNzQsIDE1NCwgOCwgCisgICAgNSwgMSwgMjM5LCA3NSwgMTU0LCA4LCA1LCAxLCAyMzcsIDE3MSwgMTU0LCA4LCA1LCAxLCA3NSwgMTU0LCA4LCA1LCAxLCAKKyAgICAyMzAsIDE4NCwgMTU0LCA4LCA1LCAxLCAyMzAsIDU0LCAxNTQsIDgsIDUsIDEsIDE1OSwgMTU0LCA4LCA1LCAxLCAyMjYsIAorICAgIDE4NSwgMTU0LCA4LCA1LCAxLCAyMjMsIDE2MywgMTU0LCA4LCA1LCAxLCA3OCwgMTU0LCA4LCA1LCAxLCAyMTksIDE4NCwgCisgICAgMTU0LCA4LCA1LCAxLCAyMTcsIDEzNCwgMTU0LCA4LCA1LCAxLCAxNDYsIDE1NCwgOCwgNSwgMSwgMTk0LCAxNTQsIDgsIDUsIAorICAgIDEsIDIxMCwgNjksIDE1NCwgOCwgNSwgMSwgNjgsIDE1NCwgOCwgNSwgMSwgMjA2LCAxNjQsIDE1NCwgOCwgNSwgMSwgMjA0LCAKKyAgICAxNDQsIDE1NCwgOCwgNSwgMSwgMjAzLCAxOTYsIDE1NCwgOCwgNSwgMSwgMjAzLCAxMjQsIDE1NCwgOCwgNSwgMSwgMjAyLCAKKyAgICAxNTksIDE1NCwgNDksIDI0NSwgOTMsIDE1NSwgMTU0LCA4MCwgMjI3LCAxMTQsIDE1NCwgNTAsIDI0NSwgOTMsIDE1NSwgCisgICAgMTU0LCAyMDgsIDIyNywgMTU0LCA0OSwgNjEsIDIxOSwgNzYsIDE1NCwgNTAsIDYxLCAyMTksIDc2LCAxMjcsIDEzOSwgMjM5LCAKKyAgICAxMDIsIDIxMSwgNjEsIDEyNywgNDksIDI0NSwgMTY2LCAxNTUsIDEyNywgNTAsIDI0NSwgMTY2LCAxNTUsIDEyNywgMTM5LCAKKyAgICAyNDUsIDIzMywgMTI3LCA2NywgMTAxLCAyNDMsIDg1LCAxMjcsIDY3LCAxLCAyMDQsIDAsIDEyNywgNjcsIDEsIDUsIDYzLCAKKyAgICAxMjcsIDY3LCAxLCA1LCA3NSwgMTI3LCA2NywgMSwgNSwgNjgsIDEyNywgNjcsIDEsIDUsIDc0LCAxMjcsIDY3LCAxLCA1LCAKKyAgICA3OCwgMTI3LCA2NywgMSwgNSwgMTk4LCAxMjcsIDY3LCAxLCA1LCAyMDIsIDIxMywgMTI3LCA2NywgMSwgNSwgMjAyLCAyNDcsIAorICAgIDEyNywgNjcsIDEsIDUsIDIwNywgMjAzLCAxMjcsIDIyOSwgMjI1LCAyMTcsIDIxNSwgMjExLCAyNDEsIDgyLCAxMjcsIDY3LCAKKyAgICAxLCA2MywgMTI3LCA2NywgMSwgNzUsIDEyNywgNjcsIDEsIDY4LCAxMjcsIDY3LCAxLCA3NCwgMTI3LCA2NywgMSwgNzgsIAorICAgIDEyNywgNjcsIDEsIDE3MywgMTI3LCA2NywgMSwgMjI5LCAxMDAsIDEyNywgNjcsIDEsIDIyOCwgMjA5LCAxMjcsIDY3LCAxLCAKKyAgICAyMjksIDIwMSwgMTI3LCA2NywgMSwgMjI5LCAyNiwgMTI3LCA2NywgMSwgMjE1LCAzNiwgMTI3LCA2NywgMSwgMjEyLCAxNjIsIAorICAgIDEyNywgNjcsIDEsIDIxMSwgMTAsIDEyNywgNjcsIDEsIDIxNCwgMTc3LCAxMjcsIDY3LCAxLCAyMTIsIDEzLCAxMjcsIDY3LCAKKyAgICAxLCAyMTAsIDIyLCAxMjcsIDY3LCAxLCAyMDksIDIsIDEyNywgNjcsIDEsIDIwNywgMjAzLCAxMjcsIDY3LCAxLCAyMDksIAorICAgIDE4NywgMTI3LCA2NywgMSwgMTM1LCAxMjcsIDY3LCAxLCAyMDEsIDIwMSwgMTI3LCA2NywgMSwgMjIyLCAxMDAsIDEyNywgCisgICAgNjcsIDEsIDIyMSwgODQsIDEyNywgNjcsIDEsIDIyMiwgMjQwLCAxMjcsIDY3LCAxLCAyMjEsIDE5MSwgMTI3LCA2NywgMSwgCisgICAgMTUyLCAxMjcsIDY3LCAxLCAyMzcsIDMsIDEyNywgNjcsIDEsIDIzNiwgMjYsIDEyNywgNjcsIDEsIDIzNywgNjcsIDEyNywgCisgICAgNjcsIDEsIDIzNiwgMTM2LCAxMjcsIDY3LCAxLCAxOTIsIDEyNywgNjcsIDEsIDIyNCwgMTU1LCAxMjcsIDY3LCAxLCAyMjMsIAorICAgIDI0NiwgMTI3LCA2NywgMSwgMjI1LCAyMCwgMTI3LCA2NywgMSwgMjI0LCA4MiwgMTI3LCA2NywgMSwgMTk4LCAxMjcsIDY3LCAKKyAgICAxLCAyMDIsIDIxMywgMTI3LCA2NywgMSwgMjAyLCAyNDcsIDEyNywgNjcsIDEsIDIxNiwgMjIwLCAxMjcsIDY3LCAxLCAyMTYsIAorICAgIDU3LCAxMjcsIDY3LCAxLCAyMTUsIDE0NSwgMTI3LCA2NywgMSwgMjE2LCAxNTgsIDEyNywgNjcsIDEsIDIxNSwgMjI3LCAKKyAgICAxMjcsIDY3LCAxLCAyMDQsIDExMSwgMTI3LCA2NywgMSwgMjIzLCAxNjMsIDEyNywgNjcsIDIwNSwgMTg2LCAyMTEsIDI0MSwgCisgICAgODIsIDEyNywgNjcsIDIxMywgMTQ4LCAyMTEsIDI0MSwgODIsIDEyNywgMjgsIDI0MCwgNywgMTI3LCAyOCwgMSwgMjI5LCAKKyAgICA1OSwgMTI3LCAyOCwgMSwgMjExLCAxNTYsIDEyNywgMjgsIDEsIDIyOSwgNTIsIDEyNywgMjgsIDEsIDIyMiwgOTMsIDEyNywgCisgICAgMjgsIDEsIDIyMiwgOTEsIDEyNywgMjgsIDEsIDIyMiwgOTAsIDEyNywgMjgsIDEsIDIwOCwgMjQwLCAxMjcsIDI4LCAxLCAKKyAgICAyMTEsIDE0NSwgMTI3LCAyOCwgMSwgMjE2LCA0NywgMTI3LCAyOCwgMSwgMjE2LCA0MiwgMTI3LCAyOCwgMSwgMjE2LCAzOSwgCisgICAgMTI3LCAyOCwgMSwgMjE2LCAzMiwgMTI3LCAyOCwgMSwgMjE2LCAyNywgMTI3LCAyOCwgMSwgMjE2LCAyMiwgMTI3LCAyOCwgCisgICAgMSwgMjE2LCAzMywgMTI3LCAyOCwgMSwgMjE2LCA0NSwgMTI3LCAyOCwgMSwgMjI0LCAxNDEsIDEyNywgMjgsIDEsIDIxOCwgCisgICAgMTUzLCAxMjcsIDI4LCAxLCAyMTEsIDE1MywgMTI3LCAyOCwgMSwgMjE4LCAxNDIsIDEyNywgMjgsIDEsIDIxMiwgMTExLCAKKyAgICAxMjcsIDI4LCAxLCAyMTEsIDE1MCwgMTI3LCAyOCwgMSwgMjMxLCAxMDYsIDEyNywgMjgsIDEsIDI0NiwgNzQsIDEyNywgMjgsIAorICAgIDEsIDIxMSwgMTYwLCAxMjcsIDI4LCAxLCAyNDYsIDEzOCwgMTI3LCAyOCwgMSwgMjI5LCAxMjAsIDEyNywgMjgsIDEsIDIwOSwgCisgICAgNjYsIDEyNywgMjgsIDEsIDIxOCwgMTkwLCAxMjcsIDI4LCAxLCAyMzYsIDI1MSwgMTI3LCAyOCwgMSwgNjMsIDEyNywgMjgsIAorICAgIDEsIDI1MSwgMTA5LCAxMjcsIDI4LCAxLCAxOTgsIDEyNywgMjgsIDEsIDIwMywgOTksIDEyNywgMjgsIDEsIDI0MSwgNTUsIAorICAgIDEyNywgMjgsIDEsIDc0LCAxMjcsIDI4LCAxLCAyMDMsIDM5LCAxMjcsIDI4LCAxLCAyMDMsIDUyLCAxMjcsIDI4LCAxLCA3OCwgCisgICAgMTI3LCAyOCwgMSwgMjA0LCAxMTEsIDEyNywgMjgsIDEsIDIwNCwgMTA3LCAxMjcsIDI4LCAxLCAyMjAsIDczLCAxMjcsIDI4LCAKKyAgICAxLCAyMDIsIDI0NywgMTI3LCAyOCwgMSwgNjgsIDEyNywgMjgsIDEsIDIwNCwgNDgsIDEyNywgMjgsIDEsIDIwNCwgNjIsIAorICAgIDEyNywgMjgsIDEsIDIwNCwgMzAsIDEyNywgMjgsIDEsIDIwMiwgMjEzLCAxMjcsIDI4LCAxLCAyNDAsIDIzOCwgMTI3LCAyOCwgCisgICAgMSwgMjAzLCAxMSwgMTI3LCAyOCwgMSwgNzUsIDE1NCwgMjQ2LCAyMjAsIDU0LCAxNTQsIDIxOCwgMjAsIDU0LCAxNTQsIAorICAgIDIyMSwgMTY2LCA1NCwgMTU0LCAyMjUsIDE3MCwgMTU0LCAyNDcsIDIwMywgMTQyLCAxNTQsIDIwMywgNDMsIDU0LCAxNTQsIAorICAgIDIwMywgMjQ2LCA1NCwgMTI3LCAyMzksIDE1NiwgMTU3LCAyMDYsIDM4LCAxMjcsIDk2LCA0NywgMTI3LCAxNzcsIDQ3LCAKKyAgICAxMjcsIDg2LCA0NywgMTI3LCAxODMsIDQ3LCAxMjcsIDYyLCAyMTEsIDE3NywgMTI3LCA2MSwgMjQ2LCA2MSwgMjMwLCAyNTEsIAorICAgIDI1MCwgMjA1LCAyNTAsIDIyOCwgMjMwLCAyNTEsIDI1MCwgMjA1LCAyMTMsIDEzMCwgMjMwLCAyNTEsIDI1MCwgMjA1LCAKKyAgICAyMDksIDEzOCwgMjIwLCA5MCwgMjE2LCA5NiwgMjQ2LCAxODIsIDIxNiwgOTYsIDI0NiwgMTgyLCAyOSwgNjYsIDQsIDI0OSwgCisgICAgMjM5LCA2MywgMjksIDY2LCA0LCAyNDksIDIwOCwgNzQsIDI5LCA2NiwgNCwgMjQ5LCAyMTcsIDc1LCAyOSwgNjYsIDQsIAorICAgIDI0OSwgMTg1LCA3OCwgMjksIDY2LCA0LCAyNDksIDIzNSwgNjgsIDI5LCA2NiwgNCwgMjQ5LCAyNTQsIDI0NCwgMjEyLCAyOSwgCisgICAgNjYsIDQsIDI0OSwgMjAxLCAyNDQsIDc1LCAyOSwgNjYsIDQsIDI0OSwgMjQxLCAyNDMsIDIzMywgMjksIDY2LCA0LCAyNDksIAorICAgIDIzMSwgMjQzLCAxMTMsIDI5LCA2NiwgNCwgMjQ5LCAxOTUsIDI0MiwgNDIsIDI5LCA2NiwgNCwgMjQ5LCAxODksIDIzMCwgCisgICAgMTgxLCAyOSwgNjYsIDQsIDI0OSwgMjAwLCAyMzAsIDE2MSwgMjksIDY2LCA0LCAyNDksIDIxMCwgMjMwLCAxMDEsIDI5LCAKKyAgICA2NiwgNCwgMjQ5LCAxODEsIDIzMCwgODIsIDI5LCA2NiwgNCwgMjQ5LCAxNjksIDE3MywgMjksIDY2LCA0LCAyNDksIDIwMiwgCisgICAgMjI5LCAyMDEsIDI5LCA2NiwgNCwgMjQ5LCAxNzksIDIyOSwgMTAwLCAyOSwgNjYsIDQsIDI0OSwgMTc2LCAyMjksIDI2LCAKKyAgICAyOSwgNjYsIDQsIDI0OSwgMTY1LCAyMjgsIDIwOSwgMjksIDY2LCA0LCAyNDksIDE2NiwgMTkyLCAyOSwgNjYsIDQsIDI0OSwgCisgICAgMjMyLCAyMjUsIDIwLCAyOSwgNjYsIDQsIDI0OSwgMTczLCAyMjQsIDE1NSwgMjksIDY2LCA0LCAyNDksIDIzMCwgMjI0LCAKKyAgICA4MiwgMjksIDY2LCA0LCAyNDksIDIyMiwgMjIzLCAyNDYsIDI5LCA2NiwgNCwgMjQ5LCAyNDMsIDIwMSwgMjAxLCAyOSwgNjYsIAorICAgIDQsIDI0OSwgMjIxLCAyMjIsIDI0MCwgMjksIDY2LCA0LCAyNDksIDIxNSwgMjIyLCAxMDAsIDI5LCA2NiwgNCwgMjQ5LCAKKyAgICAxOTQsIDIyMSwgMTkxLCAyOSwgNjYsIDQsIDI0OSwgMTkxLCAyMjEsIDg0LCAyOSwgNjYsIDQsIDI0OSwgMjUwLCAxODUsIAorICAgIDI5LCA2NiwgNCwgMjQ5LCAxNzQsIDIxOSwgMzQsIDI5LCA2NiwgNCwgMjQ5LCAyMDcsIDIxOCwgMTY3LCAyOSwgNjYsIDQsIAorICAgIDI0OSwgMjM0LCAyMTgsIDY5LCAyOSwgNjYsIDQsIDI0OSwgMTk2LCAyMTcsIDE5MSwgMjksIDY2LCA0LCAyNDksIDIyOSwgCisgICAgMjE3LCAxMjYsIDI5LCA2NiwgNCwgMjQ5LCAxNjgsIDIxNywgMTA2LCAyOSwgNjYsIDQsIDI0OSwgMjI0LCAyMTcsIDg4LCAKKyAgICAyOSwgNjYsIDQsIDI0OSwgMjEzLCAyMTcsIDc3LCAyOSwgNjYsIDQsIDI0OSwgMTg2LCAyMTYsIDIyMCwgMjksIDY2LCA0LCAKKyAgICAyNDksIDIxOCwgMjE2LCAxNTgsIDI5LCA2NiwgNCwgMjQ5LCAxOTMsIDIxNiwgNTcsIDI5LCA2NiwgNCwgMjQ5LCAyNTIsIAorICAgIDIxNSwgMjI3LCAyOSwgNjYsIDQsIDI0OSwgMjE5LCAyMTUsIDE0NSwgMjksIDY2LCA0LCAyNDksIDIxNCwgMjE1LCAzNiwgCisgICAgMjksIDY2LCA0LCAyNDksIDIzNywgMjE0LCAxNzcsIDI5LCA2NiwgNCwgMjQ5LCAyMDUsIDIxMiwgMTYyLCAyOSwgNjYsIDQsIAorICAgIDI0OSwgMjMzLCAyMTIsIDEzLCAyOSwgNjYsIDQsIDI0OSwgMTg4LCAyMTEsIDEwLCAyOSwgNjYsIDQsIDI0OSwgMTg3LCAKKyAgICAyMTAsIDIyLCAyOSwgNjYsIDQsIDI0OSwgMjQ4LCAyMDksIDE4NywgMjksIDY2LCA0LCAyNDksIDIwOSwgMjA5LCAyLCAyOSwgCisgICAgNjYsIDQsIDI0OSwgMjQ2LCAxMzUsIDI5LCA2NiwgNCwgMjQ5LCAxNzcsIDIwNywgMjAzLCAyOSwgNjYsIDQsIDI0OSwgMTkyLCAKKyAgICAyMDQsIDExMSwgMjksIDY2LCA0LCAyNDksIDE3MSwgMjA0LCA2MiwgMjksIDY2LCA0LCAyNDksIDIwNiwgMjA0LCAzMCwgMjksIAorICAgIDY2LCA0LCAyNDksIDIwNCwgMjA0LCAwLCAyOSwgNjYsIDQsIDI0OSwgMjI4LCAyMDIsIDExNiwgMjksIDY2LCA0LCAyNDksIAorICAgIDE3MiwgMjAyLCA5MiwgMjksIDY2LCA0LCAyNDksIDIyNSwgMjAyLCAxNywgMjksIDY2LCA0LCAyNDksIDIyMCwgMjU0LCAzNCwgCisgICAgMjksIDY2LCA0LCAyNDksIDIwMywgMjUzLCAxNzgsIDI5LCA2NiwgNCwgMjQ5LCAxNjIsIDI1MCwgMzQsIDI5LCA2NiwgNCwgCisgICAgMjQ5LCAxNzUsIDI0MiwgOSwgMjksIDY2LCA0LCAyNDksIDE1OCwgMjQyLCA4LCAyOSwgNjYsIDQsIDI0OSwgMTk4LCAyMjEsIAorICAgIDIwLCAyOSwgNjYsIDQsIDI0OSwgMjE2LCAyMTcsIDE4OSwgMjksIDY2LCA0LCAyNDksIDE4NCwgMjE3LCAxOTMsIDI5LCA2NiwgCisgICAgNCwgMjQ5LCAxNzAsIDIxNiwgMjE4LCAyOSwgNjYsIDQsIDI0OSwgMjEyLCAyMTYsIDIxNywgMjksIDY2LCA0LCAyNDksIAorICAgIDE3OCwgMjE1LCAyMjYsIDI5LCA2NiwgNCwgMjQ5LCAxODAsIDIxMCwgMTksIDI5LCA2NiwgNCwgMjQ5LCAxNjAsIDIwNywgCisgICAgMTU4LCAyOSwgNjYsIDQsIDI0OSwgMTU3LCAxMDgsIDI5LCA2NiwgMTYsIDI0OSwgMjI3LCAyOSwgNjYsIDE2LCAyNDksIAorICAgIDIyNiwgMjksIDY2LCAxNiwgMjQ5LCAyMjMsIDI5LCA2NiwgMTYsIDI0OSwgMjExLCAyOSwgNjYsIDE2LCAyNDksIDE5OSwgCisgICAgMjksIDY2LCAxNiwgMjQ5LCAxOTcsIDI5LCA2NiwgMTYsIDI0OSwgMTkwLCAyOSwgNjYsIDE2LCAyNDksIDE4MywgMjksIDY2LCAKKyAgICAxNiwgMjQ5LCAxODIsIDI5LCA2NiwgMTYsIDI0OSwgMTY3LCAyOSwgNjYsIDE2LCAyNDksIDE2NCwgMjksIDY2LCAxNiwgCisgICAgMjQ5LCAxNjMsIDI5LCA2NiwgMTYsIDI0OSwgMTYxLCAyOSwgNjYsIDE2LCAyNDksIDE1OSwgMjksIDY2LCAxMzMsIDI0OSwgCisgICAgMTU2LCAyMjUsIDEyMiwgMjksIDY2LCAxMzMsIDI0OSwgMTU1LCAyMDMsIDI1MCwgMjksIDY2LCAxMzMsIDI0OSwgMTU0LCAKKyAgICAyNDQsIDU4LCAyOSwgNjYsIDEzMywgMjQ5LCAxNTMsIDI0MSwgMzIsIDI5LCA2NiwgMTMzLCAyNDksIDE1MiwgMjI1LCA5MywgCisgICAgMjksIDY2LCAxMzMsIDI0OSwgMTUxLCAyMTEsIDEwMSwgMjksIDY2LCAxMzMsIDI0OSwgMTUwLCAyNDAsIDIxOSwgMjksIDY2LCAKKyAgICAxMzMsIDI0OSwgMTQ5LCAyMTYsIDE4NCwgMjksIDY2LCAxMzMsIDI0OSwgMTQ4LCAyMTMsIDQyLCAyOSwgNjYsIDEzMywgCisgICAgMjQ5LCAxNDcsIDIzNywgNjYsIDI5LCA2NiwgMTMzLCAyNDksIDE0NiwgMjExLCAyMzUsIDI5LCA2NiwgMTMzLCAyNDksIAorICAgIDE0NSwgMjQ4LCAyMSwgMjksIDY2LCAxMzMsIDI0OSwgMTQ0LCAyNDUsIDE0OSwgMjksIDY2LCAxMzMsIDI0OSwgMTQzLCAKKyAgICAyNDcsIDE3OSwgMjksIDY2LCAxMzMsIDI0OSwgMTQyLCAyMDQsIDM4LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDEsIDI0OCwgCisgICAgMjI3LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDAsIDIyMCwgNDEsIDI5LCA2NiwgMTMzLCAyNDksIDEzOSwgMjExLCAyMDcsIDI5LCAKKyAgICA2NiwgMTMzLCAyNDksIDEzOCwgMjQ1LCA1OSwgMjksIDY2LCAyMjQsIDQ1LCAyNDksIDEzNywgMjI5LCAyNDksIDI5LCA2NiwgCisgICAgMjI0LCA0NSwgMjQ5LCAxMzYsIDIzMCwgMiwgMjksIDY2LCAxMzMsIDI0OSwgMTM1LCAyMjAsIDU1LCAyOSwgNjYsIDEzMywgCisgICAgMjQ5LCAxMzQsIDIwNCwgMTIsIDI5LCA2NiwgMTMzLCAyNDksIDEzMywgMjksIDY2LCAyMjQsIDQ1LCAyNDksIDEzMiwgMjUwLCAKKyAgICAxMTksIDI5LCA2NiwgMjI0LCA0NSwgMjQ5LCAxMzEsIDIyNCwgMjMyLCAyOSwgNjYsIDEzMywgMjQ5LCAxMzAsIDI0NywgCisgICAgMjAyLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjksIDIzOCwgMzEsIDI5LCA2NiwgMTMzLCAyNDksIDEyOCwgMjksIDY2LCAxMzMsIAorICAgIDI0OSwgMTI3LCAyMDMsIDI0MSwgMjksIDY2LCAxMzMsIDI0OSwgMTI2LCAyOSwgNjYsIDEzMywgMjQ5LCAxMjUsIDI5LCA2NiwgCisgICAgMTMzLCAyNDksIDEyNCwgMjM2LCA1MywgMjksIDY2LCAxMzMsIDI0OSwgMTIzLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjIsIDI5LCAKKyAgICA2NiwgMTMzLCAyNDksIDEyMSwgMjksIDY2LCAyMjQsIDQ1LCAyNDksIDExOSwgMjA3LCAxNzIsIDI5LCA2NiwgMTMzLCAyNDksIAorICAgIDExOCwgMjksIDY2LCAxMzMsIDI0OSwgMTE3LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTYsIDI0NiwgMTAsIDI5LCA2NiwgMTMzLCAKKyAgICAyNDksIDExNSwgMjksIDY2LCAxMzMsIDI0OSwgMTE0LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTMsIDIzOCwgMjIxLCAyOSwgNjYsIAorICAgIDEzMywgMjQ5LCAxMTIsIDI1MCwgMTA2LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTEsIDI5LCA2NiwgMTMzLCAyNDksIDExMCwgCisgICAgMjksIDY2LCAxMzMsIDI0OSwgMTA5LCAyOSwgNjYsIDEzMywgMjQ5LCAxMDgsIDI5LCA2NiwgMTMzLCAyNDksIDEwNywgMjksIAorICAgIDY2LCAxMzMsIDI0OSwgMTA2LCAyOSwgNjYsIDEzMywgMjQ5LCAxMDUsIDI5LCA2NiwgMTMzLCAyNDksIDEwNCwgMjksIDY2LCAKKyAgICAxMzMsIDI0OSwgMTAzLCAyOSwgNjYsIDEzMywgMjQ5LCAxMDIsIDIyNCwgMzcsIDI5LCA2NiwgMTMzLCAyNDksIDEwMSwgMjksIAorICAgIDY2LCAxMzMsIDI0OSwgMTAwLCAyMDgsIDk1LCAyOSwgNjYsIDEzMywgMjQ5LCA5OSwgMjksIDY2LCAxMzMsIDI0OSwgOTgsIAorICAgIDI5LCA2NiwgMTMzLCAyNDksIDk3LCAyOSwgNjYsIDEzMywgMjQ5LCA5NiwgMjksIDY2LCAxMzMsIDI0OSwgOTUsIDI5LCA2NiwgCisgICAgMTMzLCAyNDksIDk0LCAyOSwgNjYsIDEzMywgMjQ5LCA5MywgMjksIDY2LCAxMzMsIDI0OSwgOTIsIDI5LCA2NiwgMTMzLCAKKyAgICAyNDksIDkxLCAyOSwgNjYsIDEzMywgMjQ5LCA5MCwgMjksIDY2LCAxMzMsIDI0OSwgODksIDI5LCA2NiwgMTMzLCAyNDksIAorICAgIDg4LCAyMzcsIDM1LCAyOSwgNjYsIDEzMywgMjQ5LCA2NywgMjM5LCAxNjgsIDI5LCA2NiwgMTMzLCAyNDksIDY0LCAyNDgsIAorICAgIDIwNCwgMjksIDY2LCAxMzMsIDI0OSwgNTksIDIxMSwgMjE0LCAyOSwgNjYsIDEzMywgMjQ5LCA1OCwgNDcsIDI5LCA2NiwgCisgICAgMTMzLCAyNDksIDU3LCAyOSwgNjYsIDEzMywgMjQ5LCA1NiwgMjEwLCAxNTUsIDI5LCA2NiwgMTMzLCAyNDksIDU1LCAyOSwgCisgICAgNjYsIDEzMywgMjQ5LCA1NCwgMjksIDY2LCAxMzMsIDI0OSwgNTMsIDIwNCwgMzQsIDI0NiwgMTc5LCAyOSwgNjYsIDEzMywgCisgICAgMjQ5LCA1MiwgMjQ2LCAxNzksIDI5LCA2NiwgMTMzLCAyNDksIDUxLCAyNDYsIDE4MCwgMjM5LCAxMzQsIDI5LCA2NiwgMTMzLCAKKyAgICAyNDksIDUwLCAyMDQsIDM2LCAyOSwgNjYsIDEzMywgMjQ5LCA0OSwgMjksIDY2LCAxMzMsIDI0OSwgNDgsIDI5LCA2NiwgCisgICAgMjI0LCA0NSwgMjQ5LCA0NywgMjQzLCAxNjgsIDI5LCA2NiwgMTMzLCAyNDksIDQ2LCAyOSwgNjYsIDEzMywgMjQ5LCA0NSwgCisgICAgMjksIDY2LCAxMzMsIDI0OSwgNDMsIDI5LCA2NiwgMTMzLCAyNDksIDQyLCAyOSwgNjYsIDEzMywgMjQ5LCA0MSwgMjksIDY2LCAKKyAgICAxMzMsIDI0OSwgNDAsIDI0NCwgMTQ3LCAyOSwgNjYsIDEzMywgMjQ5LCAzOSwgMjksIDY2LCAxMzMsIDI0OSwgMzgsIDI5LCAKKyAgICA2NiwgMTMzLCAyNDksIDM3LCAyOSwgNjYsIDEzMywgMjQ5LCAzNiwgMjksIDY2LCAxMzMsIDI0OSwgMzUsIDI5LCA2NiwgCisgICAgMTMzLCAyMDUsIDI0MSwgMjQ5LCAxMjAsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4NywgMjksIDY2LCAxMzMsIAorICAgIDIwNSwgMjQxLCAyNDksIDg2LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODUsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgCisgICAgMjQ5LCA4NCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDgzLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODIsIAorICAgIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4MSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDgwLCAyOSwgNjYsIAorICAgIDEzMywgMjA1LCAyNDEsIDI0OSwgNzksIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3OCwgMjksIDY2LCAxMzMsIDIwNSwgCisgICAgMjQxLCAyNDksIDc3LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzYsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCAKKyAgICA3NSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDc0LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzMsIDI5LCAKKyAgICA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3MiwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDcxLCAyOSwgNjYsIDEzMywgCisgICAgMjA1LCAyNDEsIDI0OSwgNzAsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2OSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAKKyAgICAyNDksIDY4LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjYsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2NSwgCisgICAgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDYzLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjIsIDI5LCA2NiwgCisgICAgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2MSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDYwLCAyOSwgNjYsIDEzMywgMjA1LCAKKyAgICAyNDEsIDI0OSwgNDQsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCAzNCwgMjUxLCAxMDIsIDIwMywgMjM4LCAyMTMsIAorICAgIDEzMSwgMjI3LCAxMTQsIDI1MSwgMTAyLCAyMDMsIDIzOCwgMjEzLCAxMzEsIDI0MywgODUsIDI1MSwgMTAyLCAyNDYsIDE2OSwgCisgICAgODIsIDI1MSwgMTAyLCA0MiwgMTA1LCAyNTEsIDEwMiwgNDIsIDEwOCwgMjUxLCAxMDIsIDQyLCAxNDcsIDI1MSwgMTAyLCAKKyAgICA0MiwgMTQ5LCAyNTEsIDEwMiwgNDIsIDE3MCwgMjUxLCAxMDIsIDQyLCAxOTUsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMTEsIAorICAgIDI1MSwgMTAyLCA0MiwgMTk5LCAyNTEsIDEwMiwgNDIsIDIyMiwgNjMsIDI1MSwgMTAyLCA0MiwgMjA5LCAxNTIsIDI1MSwgCisgICAgMTAyLCA0MiwgMjA3LCAxNTEsIDI1MSwgMTAyLCA0MiwgMjA5LCA1MywgMjUxLCAxMDIsIDQyLCAyMzksIDE1MywgMjUxLCAKKyAgICAxMDIsIDQyLCAyNDAsIDE4LCAyNTEsIDEwMiwgNDIsIDIxMiwgNzQsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMDUsIDI1MSwgCisgICAgMTAyLCA0MiwgMjQxLCAxMzQsIDI1MSwgMTAyLCA0MiwgMjIyLCA1OCwgMjUxLCAxMDIsIDQyLCAxMTgsIDIzNiwgMTEsIAorICAgIDI1MSwgMTAyLCA0MiwgMTIwLCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDEyNiwgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAKKyAgICAyMzksIDE0NywgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAyMzksIDIzMywgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAyMTIsIAorICAgIDg4LCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDIxMywgMTEyLCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDI0MSwgMTQzLCAKKyAgICAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDIyMiwgNjQsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMTE4LCAyMDksIDM2LCAyNTEsIAorICAgIDEwMiwgNDIsIDEyMCwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAxMjYsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjM5LCAKKyAgICAxNDcsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjM5LCAyMzMsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjEyLCA4OCwgCisgICAgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMTMsIDExMiwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyNDEsIDE0MywgMjA5LCAKKyAgICAzNiwgMjUxLCAxMDIsIDQyLCAyMjIsIDY0LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIwOSwgMTUzLCAyMDksIDM2LCAyNTEsIAorICAgIDEwMiwgNDIsIDIwNywgMTUyLCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIwOSwgNTQsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgCisgICAgMjM5LCAxNTQsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjQwLCAxOSwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMTIsIDc1LCAKKyAgICAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIxMywgMTA2LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDI0MSwgMTM1LCAyMDksIAorICAgIDM2LCAyNTEsIDEwMiwgNDIsIDIyMiwgNTksIDIwOSwgMzYsIDI1MSwgMTAyLCAyMDQsIDUxLCAyNDgsIDIxOSwgMjA2LCAKKyAgICAyMzUsIDI1MSwgMTAyLCAyMDQsIDUxLCAyMzksIDI0NSwgMjEwLCAyNDAsIDI1MSwgMTAyLCAyMDQsIDUxLCAyMTQsIDE3MSwgCisgICAgMjEwLCAyNDAsIDI1MSwgMTAyLCAyMDQsIDUxLCAyMDksIDYxLCAyMTAsIDI0MCwgMjUxLCAxMDIsIDIwNCwgNTEsIDIzOSwgCisgICAgMTQwLCAyMTAsIDI0MCwgMjUxLCAxMDIsIDI0MiwgNDUsIDIyNSwgMTksIDIzOSwgMjQ1LCAyMTAsIDI0MCwgMjUxLCAxMDIsIAorICAgIDIyNywgOTUsIDIyNSwgMTksIDIzOSwgMjQ1LCAyMTAsIDI0MCwgMjUxLCAxMDIsIDIyNSwgMTksIDIxNCwgMTcxLCAyMTAsIAorICAgIDI0MCwgMjUxLCAxMDIsIDIyNSwgMTksIDIwOSwgNjEsIDIxMCwgMjQwLCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDExOCwgCisgICAgMjE3LCA1NSwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIzNywgMTM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIAorICAgIDExOCwgMjQyLCA2NSwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxNzAsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjQwLCAxOCwgCisgICAgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIDIzMywgMjM2LCAxMSwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIAorICAgIDIzMywgMjA5LCAzNiwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyNDAsIDE5LCAyMDksIDM2LCAzMCwgMjUxLCAxMjksIDI1MCwgCisgICAgMzYsIDIzOSwgMjMzLCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMDksIDE1MywgMjA5LCAyMzcsIDMwLCAKKyAgICAyNTEsIDEyOSwgMjUwLCAzNiwgMjQwLCAxOSwgMjA5LCAyMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAyMzYsIAorICAgIDEyLCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIDIzMywgMjM2LCAxMiwgMjA5LCAyMzcsIDMwLCAKKyAgICAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAyMDksIDM3LCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIAorICAgIDIzMywgMjA5LCAzNywgMjA5LCAyMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjM5LCAyMzMsIDIxMSwgODgsIDMwLCAKKyAgICAyNTEsIDEyOSwgMjUwLCAzNiwgMjA5LCAxNTMsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjQwLCAxOSwgCisgICAgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIzNiwgMTIsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAKKyAgICAzNiwgMjM5LCAyMzMsIDIzNiwgMTIsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAyMDksIDM3LCAyMTEsIAorICAgIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIwOSwgMTUzLCAyMDksIDM3LCAyMTEsIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgCisgICAgMzYsIDI0MCwgMTksIDIwOSwgMzcsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjA5LCAxNTMsIDIyNCwgODUsIAorICAgIDMwLCAyNTEsIDEyOSwgMjM3LCAyOSwgMTE4LCAyMTgsIDg2LCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDEwNSwgMzAsIDI1MSwgCisgICAgMTI5LCAyMzcsIDI1LCAxMDUsIDMwLCAyNTEsIDEyOSwgMjQxLCA0MSwgMTA4LCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIAorICAgIDEwOCwgMzAsIDI1MSwgMTI5LCAyNDUsIDU2LCAxMjAsIDI0MiwgNjQsIDMwLCAyNTEsIDEyOSwgMjQxLCA0MSwgMTIwLCAKKyAgICAyNDIsIDY0LCAzMCwgMjUxLCAxMjksIDIwOCwgNjEsIDE3MCwgMzAsIDI1MSwgMTI5LCAyMDgsIDYxLCAyMDksIDE1MiwgMzAsIAorICAgIDI1MSwgMTI5LCAyMDgsIDYxLCAyMDksIDE1MywgMjUwLCAyNTUsIDE4LCAzMCwgMjUxLCAxMjksIDIzNywgMjUsIDIwOSwgCisgICAgMTUyLCAzMCwgMjUxLCAxMjksIDIyNCwgMjIyLCAyMDksIDE1MiwgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAyMDksIDE1MiwgCisgICAgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAyMDksIDUzLCAzMCwgMjUxLCAxMjksIDIwOCwgNjEsIDI0MCwgMTgsIDMwLCAyNTEsIAorICAgIDEyOSwgMjA4LCA2MSwgMjQwLCAxOSwgMjUwLCAyNTUsIDE4LCAzMCwgMjUxLCAxMjksIDIzNywgMjUsIDI0MCwgMTgsIDMwLCAKKyAgICAyNTEsIDEyOSwgMjA5LCA3NiwgMjQwLCAxOCwgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAxMTgsIDIzNiwgMTEsIDMwLCAyNTEsIAorICAgIDEyOSwgMjA5LCA3NiwgMTI2LCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDI0MSwgNDEsIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgCisgICAgMjUxLCAxMjksIDIwOCwgNjEsIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDIzOSwgMjMzLCAKKyAgICAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDI0NywgMjEsIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDIyMywgNjAsIAorICAgIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDExOCwgMjA5LCAzNiwgMzAsIDI1MSwgMTI5LCAKKyAgICAyMDksIDc2LCAyMzksIDIzMywgMjA5LCAzNiwgMzAsIDI1MSwgMTI5LCAyNDQsIDQwLCAyMzksIDIzMywgMjI0LCA4NSwgMzAsIAorICAgIDI1MSwgMTI5LCAyMTEsIDQ5LCAyNDAsIDE5LCAyMjQsIDg1LCAzMCwgMTE4LCAxNjIsIDU0LCAzMCwgMTE4LCAxNjIsIDIsIAorICAgIDI1MCwgMjU1LCAxOCwgMzAsIDEyMCwgMjA5LCA1OCwgNTQsIDMwLCAxMjYsIDIxNywgNTQsIDU0LCAzMCwgMjAzLCA1MCwgCisgICAgNTQsIDMwLCAyMDksIDIzOCwgNTQsIDMwLCAyNDIsIDY2LCA1NCwgMzAsIDIyMCwgODcsIDU0LCAzMCwgMTIwLCAyMjAsIDg2LCAKKyAgICA1NCwgMzAsIDEyNiwgMjIwLCA4NiwgNTQsIDMwLCAyMzksIDE0NywgMjIwLCA4NiwgNTQsIDMwLCAyMzksIDIzMywgMjIwLCAKKyAgICA4NiwgNTQsIDMwLCAyMjQsIDIxNiwgNTQsIDMwLCAyMjgsIDEzOSwgMjQ4LCAyMTksIDU0LCAzMCwgMjI3LCA4OCwgNTQsIAorICAgIDMwLCAyMTksIDIxMywgNTQsIDMwLCAyMDMsIDE3MywgNTQsIDMwLCAyNTAsIDg3LCA1NCwgMzAsIDI1MCwgMTAyLCA1NCwgCisgICAgMzAsIDIzOCwgNywgNTQsIDMwLCAyMDgsIDIzLCAyNDgsIDIxOSwgNTQsIDMwLCAyMDIsIDg1LCA1NCwgMzAsIDExOCwgMjE3LCAKKyAgICA1NiwgNTQsIDMwLCAyMTIsIDExMywgNTQsIDIxNSwgMjEwLCAyMTMsIDEwMiwgNTQsIDIxNSwgMjEwLCAyMDYsIDI0OSwgNTQsIAorICAgIDIxNSwgMjEwLCAyMTMsIDEzNSwgNTQsIDIxNSwgMjEwLCAyMTMsIDEwMCwgNTQsIDIxNSwgMjEwLCAyNDMsIDE4MywgMjEzLCAKKyAgICAxMDAsIDU0LCAyMTUsIDIxMCwgMjEyLCAxMzUsIDU0LCAyMTUsIDIxMCwgMjQ0LCAzNiwgNTQsIDIxNSwgMjEwLCAyMTcsIAorICAgIDM5LCA1NCwgMjE1LCAyMTAsIDIxMywgMTE5LCA1NCwgMjE1LCAyMTAsIDI0MiwgMjMsIDU0LCAyMTUsIDIxMCwgMjUwLCA4MiwgCisgICAgNTQsIDIxNSwgMjEwLCAyNDYsIDIxMywgNTQsIDMwLCAxNiwgMjA5LCAyMDgsIDIxNiwgNTksIDIxOCwgMjAzLCAyNDMsIAorICAgIDE2MCwgMiwgMjE5LCAyNSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTgsIDc4LCAyMzcsIDY0LCAyMTgsIDIwMywgMjQzLCAKKyAgICAxNjAsIDIsIDIwOSwgMjExLCAyMzcsIDY0LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0NywgNDIsIDIxOCwgMjAzLCAyNDMsIAorICAgIDE2MCwgMiwgMjQ2LCAxMzMsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjAzLCAyNTAsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgCisgICAgMjM3LCAzNSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMzgsIDIxMywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDksIDAsIAorICAgIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgNDcsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ3LCAyNDAsIDIxOCwgMjAzLCAKKyAgICAyNDMsIDE2MCwgMiwgMjEzLCA4LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0NiwgNCwgMjE4LCAyMDMsIDI0MywgMTYwLCAKKyAgICAyLCAyMjUsIDEyMSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMjUsIDY4LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxNCwgCisgICAgMjEzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIyNywgMTQzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0OCwgNSwgMjE4LCAKKyAgICAyMDMsIDI0MywgMTYwLCAyLCAyNDcsIDI2LCAyMTgsIDkxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0MywgOTgsIDIxOCwgCisgICAgMjAzLCAyNDMsIDE2MCwgMiwgMjQ1LCAyMzksIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjEyLCA0NiwgMjE4LCAyMDMsIAorICAgIDI0MywgMTYwLCAyLCAyNDUsIDI0MCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDgsIDE0NywgMjE4LCAyMDMsIDI0MywgCisgICAgMTYwLCAyLCAyMTIsIDI1MSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMzYsIDUzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIAorICAgIDIzNywgMSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDcsIDE3NCwgMjI3LCAyMTAsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgCisgICAgMjQ3LCAxNywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTYsIDE4NCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDEsIAorICAgIDE4NiwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDIsIDcxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIwNywgMTg4LCAKKyAgICAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0OCwgMTUwLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxOCwgOTIsIDIwOCwgOTUsIAorICAgIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjA1LCAyMTEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjE5LCA5MiwgMjE4LCAKKyAgICAyMDMsIDI0MywgMTYwLCAyLCAyMTUsIDIwMSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMjcsIDEyNywgMjE4LCAyMDMsIAorICAgIDI0MywgMTYwLCAyLCAyMTksIDE5NCwgMjQ5LCAyNSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMzksIDE5MywgMjE4LCAKKyAgICAyMDMsIDI0MywgMTYwLCAyLCAyMzcsIDI1NSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTEsIDUwLCAyMTgsIDIwMywgCisgICAgMjQzLCAxNjAsIDIsIDUsIDI1MCwgOSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDQsIDcyLCAyNDgsIDIzOCwgMjE4LCAKKyAgICAyMDMsIDI0MywgMTYwLCAyLCAzOSwgMjIwLCA4OSwgOTUsIDIyNiwgMTk3LCAxLCA2MywgMjI2LCAxOTcsIDEsIDc0LCAyMjYsIAorICAgIDE5NywgMSwgMjQ5LCAyNTUsIDIyNiwgMTk3LCAxLCAyNDgsIDk5LCAyMjYsIDE5NywgMSwgMjM5LCA3NSwgMjI2LCAxOTcsIAorICAgIDEsIDI0NSwgNTEsIDIyNiwgMTk3LCAxLCA3NSwgMjI2LCAxOTcsIDEsIDIwNCwgMTQ0LCAyMjYsIDE5NywgMSwgMjAyLCAKKyAgICAxNTksIDIyNiwgMTk3LCAxLCAyMDksIDExMCwgMjI2LCAxOTcsIDEsIDIzMCwgMTg0LCAyMjYsIDE5NywgMSwgMjMwLCA1NCwgCisgICAgMjI2LCAxOTcsIDEsIDIxNywgMTM0LCAyMjYsIDE5NywgMSwgMTU5LCAyMjYsIDE5NywgMSwgMjI2LCAxODUsIDIyNiwgMTk3LCAKKyAgICAxLCAyMjMsIDE2MywgMjI2LCAxOTcsIDEsIDIyNCwgODcsIDIyNiwgMTk3LCAxLCAyMjEsIDIyOCwgMjI2LCAxOTcsIDEsIAorICAgIDY4LCAyMjYsIDE5NywgMSwgMjE5LCAxODQsIDIyNiwgMTk3LCAxLCAyMjksIDQ4LCAyMjYsIDE5NywgMSwgMTQ2LCAyMjYsIAorICAgIDE5NywgMSwgMTk0LCAyMjYsIDE5NywgMSwgMjEwLCA2OSwgMjI2LCAxOTcsIDEsIDIwNywgMjQ0LCAyMjYsIDE5NywgMSwgCisgICAgMjUwLCAyMzEsIDIyNiwgMTk3LCAxLCAyNDEsIDkyLCAyMjYsIDE5NywgMSwgMjM3LCAxNzEsIDIyNiwgMTk3LCAxLCAyMDMsIAorICAgIDE5NiwgMjQ3LCAzMiwgMSwgNjMsIDI0NywgMzIsIDEsIDIxOSwgMTcwLCAyNDcsIDMyLCAxLCAyNDUsIDUxLCAyNDcsIDMyLCAKKyAgICAxLCAxNTksIDI0NywgMzIsIDEsIDIwNiwgMTc2LCAyNDcsIDMyLCAxLCAxNDYsIDI0NywgMzIsIDEsIDIyNywgMjM4LCAyNDcsIAorICAgIDMyLCAxLCAyNTQsIDM0LCAyNDcsIDMyLCAxLCAyMTcsIDEzNCwgMjQ3LCAzMiwgMSwgMjQ5LCAyNTUsIDI0NywgMzIsIDEsIAorICAgIDIyNiwgMTg1LCAyNDcsIDMyLCAxLCA3OCwgMjQ3LCAzMiwgMSwgMjQ0LCAyMTQsIDI0NywgMzIsIDEsIDIxMCwgNjksIDI0NywgCisgICAgMzIsIDEsIDIxMywgOTIsIDI0NywgMzIsIDEsIDIxMywgOTEsIDI0NywgMzIsIDEsIDE5NCwgMjQ3LCAzMiwgMSwgMjQ3LCAKKyAgICAxMjQsIDI0NywgMzIsIDEsIDY4LCAyNDcsIDMyLCAxLCAyMjEsIDIyOCwgMjQ3LCAzMiwgMSwgMjAzLCAxOTYsIDI0NywgMzIsIAorICAgIDEsIDIyMywgMTYzLCAyNDcsIDMyLCAxLCAyMDcsIDI0MywgMjQ3LCAzMiwgMSwgMjE5LCAxODQsIDI0NywgMzIsIDEsIDIxMSwgCisgICAgMTY3LCAyNDcsIDMyLCAxLCA3NSwgMjQ3LCAzMiwgMSwgNzQsIDI0NywgMzIsIDEsIDIwNiwgMTczLCAyNDcsIDMyLCAxLCAKKyAgICAyMzAsIDU0LCAyNDcsIDMyLCAxLCAyMzAsIDQ1LCAyNDcsIDMyLCAxLCAyMjMsIDI3LCAyNDcsIDMyLCAxLCAyMDYsIDE3OCwgCisgICAgMjQ3LCAzMiwgMSwgMjM5LCA3NSwgMjQ3LCAzMiwgMSwgMjM5LCAxMCwgMjQ3LCAzMiwgMSwgMjExLCAxMDgsIDI0NywgMzIsIAorICAgIDEsIDIxMSwgMTA3LCAyNDcsIDMyLCAxLCAyMjIsIDIwNSwgMjQ3LCAzMiwgMSwgMjMxLCA4MywgMjQ3LCAzMiwgMSwgMjQ3LCAKKyAgICAxMjMsIDI0NywgMzIsIDEsIDIwNywgMjQ0LCAyNDcsIDMyLCAxLCAyMDYsIDE3NSwgMjQ3LCAzMiwgMSwgMjE1LCAxODYsIAorICAgIDI0NywgMzIsIDEsIDIyNSwgNTksIDI0NywgMzIsIDEsIDIyNSwgNTgsIDI0NywgMzIsIDEsIDIyNSwgNTcsIDI0NywgMzIsIAorICAgIDEsIDIyNSwgNTYsIDI0NywgMzIsIDEsIDIyNywgMjM3LCAyNDcsIDMyLCAxLCAyNDEsIDE5MCwgMjQ3LCAzMiwgMSwgMjA2LCAKKyAgICAxNzQsIDg0LCAyNDEsIDQ0LCAyMDksIDM1LCA4MiwgODQsIDI0MSwgNDQsIDE3LCAxMDUsIDg0LCAyNDEsIDQ0LCAxNywgCisgICAgMTA4LCA4NCwgMjQxLCA0NCwgMTcsIDE0NywgODQsIDI0MSwgNDQsIDE3LCAxNDksIDg0LCAyNDEsIDQ0LCAxNywgMTcwLCAKKyAgICA4NCwgMjQxLCA0NCwgMTcsIDE5NSwgODQsIDI0MSwgNDQsIDE3LCAyMTMsIDExMSwgODQsIDI0MSwgNDQsIDE3LCAxOTksIAorICAgIDg0LCAyNDEsIDQ0LCAxNywgMjIyLCA2MywgODQsIDI0MSwgNDQsIDQyLCAyMDksIDE1MiwgODQsIDI0MSwgNDQsIDQyLCAKKyAgICAyMDcsIDE1MSwgODQsIDI0MSwgNDQsIDQyLCAyMDksIDUzLCA4NCwgMjQxLCA0NCwgNDIsIDIzOSwgMTUzLCA4NCwgMjQxLCAKKyAgICA0NCwgNDIsIDI0MCwgMTgsIDg0LCAyNDEsIDQ0LCA0MiwgMjEyLCA3NCwgODQsIDI0MSwgNDQsIDQyLCAyMTMsIDEwNSwgODQsIAorICAgIDI0MSwgNDQsIDQyLCAyNDEsIDEzNCwgODQsIDI0MSwgNDQsIDQyLCAyMjIsIDU4LCA4NCwgMjQxLCA0NCwgNDIsIDExOCwgCisgICAgMjM2LCAxMSwgODQsIDI0MSwgNDQsIDQyLCAxMjAsIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMTI2LCAyMzYsIDExLCAKKyAgICA4NCwgMjQxLCA0NCwgNDIsIDIzOSwgMTQ3LCAyMzYsIDExLCA4NCwgMjQxLCA0NCwgNDIsIDIzOSwgMjMzLCAyMzYsIDExLCAKKyAgICA4NCwgMjQxLCA0NCwgNDIsIDIxMiwgODgsIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMjEzLCAxMTIsIDIzNiwgMTEsIAorICAgIDg0LCAyNDEsIDQ0LCA0MiwgMjQxLCAxNDMsIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMjIyLCA2NCwgMjM2LCAxMSwgCisgICAgMzgsIDM3LCAxLCA2MywgMzgsIDM3LCAxLCAyNDgsIDE2MiwgMzgsIDM3LCAxLCAyMjksIDIwMSwgMzgsIDM3LCAxLCAyNDQsIAorICAgIDc1LCAzOCwgMzcsIDEsIDc0LCAzOCwgMzcsIDEsIDIwNiwgNTUsIDM4LCAzNywgMSwgMjAyLCA5MiwgMzgsIDM3LCAxLCAKKyAgICAyMzcsIDY3LCAzOCwgMzcsIDEsIDIwOSwgOTIsIDM4LCAzNywgMSwgNzUsIDM4LCAzNywgMSwgMTczLCAzOCwgMzcsIDEsIAorICAgIDI0MSwgMTIyLCAzOCwgMzcsIDEsIDI0MSwgMTAzLCAzOCwgMzcsIDEsIDI0MSwgOTIsIDM4LCAzNywgMSwgMjQxLCA3LCAzOCwgCisgICAgMzcsIDEsIDc4LCAzOCwgMzcsIDEsIDIxOSwgMzQsIDM4LCAzNywgMSwgMjEzLCA0MywgMzgsIDM3LCAxLCAyMjgsIDIwOSwgCisgICAgMzgsIDM3LCAxLCAyNDEsIDI4LCAzOCwgMzcsIDEsIDI0MSwgMTcsIDM4LCAzNywgMSwgMjA5LCAxODcsIDM4LCAzNywgMSwgCisgICAgNjgsIDM4LCAzNywgMSwgMjQxLCAxMjUsIDM4LCAzNywgMSwgMjE4LCAxOTUsIDM4LCAzNywgMSwgMjI5LCAxMjksIDM4LCAKKyAgICAzNywgMSwgMjQxLCAxNTQsIDM4LCAzNywgMSwgMjQxLCAxOSwgMzgsIDM3LCAxLCAyNDYsIDE3MCwgMzgsIDM3LCAxLCAyMzEsIAorICAgIDgzLCAzOCwgMzcsIDEsIDIwNiwgMTc4LCAzOCwgMzcsIDEsIDI0MSwgMCwgMzgsIDM3LCAyMjEsIDQ0LCAxMDUsIDM4LCAzNywgCisgICAgMjIxLCA0NCwgMTcwLCAzOCwgMzcsIDIyMSwgNDQsIDIwOSwgMTUyLCAzOCwgMzcsIDIyMSwgNDQsIDI0MCwgMTgsIDIzOCwgCisgICAgMTcsIDEsIDI1MSwgNjcsIDIzOCwgMTcsIDEsIDI0OCwgMjU1LCAyMzgsIDE3LCAxLCAyMzgsIDc4LCAyMzgsIDE3LCAxLCAKKyAgICAyNDQsIDE5NCwgMjM4LCAxNywgMSwgMjUxLCA2MywgMjM4LCAxNywgMSwgMjE3LCAxMTcsIDIzOCwgMTcsIDEsIDIzMCwgCisgICAgMTk2LCAyMzgsIDE3LCAxLCAyMzcsIDE1MCwgMjM4LCAxNywgMSwgMjA5LCA0OSwgMjM4LCAxNywgMSwgMjQxLCAxMzMsIAorICAgIDIzOCwgMTcsIDEsIDIyOCwgMTc2LCAyMzgsIDE3LCAxLCAyMjgsIDkwLCAyMzgsIDE3LCAxLCAyMjUsIDExNCwgMjM4LCAxNywgCisgICAgMSwgMjIzLCA2MiwgMjM4LCAxNywgMSwgMjMwLCAxNTQsIDIzOCwgMTcsIDEsIDIwNiwgMTk2LCAyMzgsIDE3LCAxLCAyMTksIAorICAgIDE0NSwgMjM4LCAxNywgMSwgMjIyLCA1OCwgMjM4LCAxNywgMSwgMjE2LCAxOTYsIDIzOCwgMTcsIDEsIDIxNCwgMjE2LCAKKyAgICAyMzgsIDE3LCAxLCAyMDksIDE2NiwgMjM4LCAxNywgMSwgMjA0LCAxMCwgMjM4LCAxNywgMSwgMjQwLCA4OCwgMjM4LCAxNywgCisgICAgMSwgMjMxLCA4NywgMjM4LCAxNywgMSwgMjM1LCAyNTIsIDIzOCwgMTcsIDEsIDIxOSwgMjIzLCAyMzgsIDE3LCAxLCAyMjIsIAorICAgIDY0LCAyMzYsIDExLCAzOCwgMjE4LCAyMzcsIDEsIDI1MCwgMjMxLCAzOCwgMjE4LCAyMzcsIDEsIDI0NywgMTYwLCAzOCwgCisgICAgMjE4LCAyMzcsIDEsIDIzOCwgMjQ4LCAzOCwgMjE4LCAyMzcsIDEsIDI0MywgMTAxLCAzOCwgMjE4LCAyMzcsIDEsIDc0LCAKKyAgICAzOCwgMjE4LCAyMzcsIDEsIDIwMiwgNjIsIDM4LCAyMTgsIDIzNywgMSwgMjQxLCAyNDcsIDM4LCAyMTgsIDIzNywgMSwgCisgICAgMjAyLCA5OSwgMzgsIDIxOCwgMjM3LCAxLCAyNDEsIDI0NSwgMzgsIDIxOCwgMjM3LCAxLCA3NSwgMzgsIDIxOCwgMjM3LCAxLCAKKyAgICAyMjksIDE1LCAzOCwgMjE4LCAyMzcsIDEsIDIyNywgMjA2LCAzOCwgMjE4LCAyMzcsIDEsIDIyNCwgMjM4LCAzOCwgMjE4LCAKKyAgICAyMzcsIDEsIDIyMiwgMjI4LCAzOCwgMjE4LCAyMzcsIDEsIDIwNSwgMTc1LCAzOCwgMjE4LCAyMzcsIDEsIDIxOSwgMjIsIAorICAgIDM4LCAyMTgsIDIzNywgMSwgMjE2LCAxMjEsIDM4LCAyMTgsIDIzNywgMSwgMjEyLCAxNDIsIDM4LCAyMTgsIDIzNywgMSwgCisgICAgMjA5LCAyNTAsIDM4LCAyMTgsIDIzNywgMSwgNjgsIDM4LCAyMTgsIDIzNywgMSwgMjQ2LCAxNTEsIDM4LCAyMTgsIDIzNywgCisgICAgMSwgMjEyLCAyMzUsIDM4LCAyMTgsIDIzNywgMSwgMjEzLCA0NSwgMzgsIDIxOCwgMjM3LCAxLCAyMDIsIDIxNSwgMzgsIAorICAgIDIxOCwgMjM3LCAxLCAyMDMsIDMwLCAzOCwgMjE4LCAyMzcsIDEsIDc4LCAzOCwgMjE4LCAyMzcsIDEsIDIyMCwgMTgsIDM4LCAKKyAgICAyMTgsIDIzNywgMSwgMjQxLCAxNTQsIDM4LCAyMTgsIDIzNywgMSwgMTUyLCAzOCwgMjE4LCAyMzcsIDEsIDIwNywgMjU0LCAKKyAgICAzOCwgMjE4LCAyMzcsIDEsIDIwNiwgNDMsIDM4LCAyMTgsIDIzNywgMSwgMjAzLCAzNCwgMzgsIDIxOCwgMjM3LCAxLCAyMDMsIAorICAgIDMyLCAzOCwgMjE4LCAyMzcsIDEsIDIwMywgNjYsIDM4LCAyMTgsIDIzNywgMSwgMjMxLCAxMTAsIDM4LCAyMTgsIDIzNywgMSwgCisgICAgMjAyLCAyMTMsIDM4LCAyMTgsIDIzNywgMSwgMTk4LCAzOCwgMjE4LCAyMzcsIDEsIDIzNSwgMTcxLCAzOSwgMzgsIDIxOCwgCisgICAgMjM3LCAxLCAyNTAsIDIzMSwgMzksIDM4LCAyMTgsIDIzNywgMSwgMjQzLCAxMDEsIDM5LCAzOCwgMjE4LCAyMzcsIDEsIAorICAgIDIwMiwgOTksIDM5LCAzOCwgMjE4LCAyMzcsIDEsIDIyMiwgMjI4LCAzOSwgMzgsIDIxOCwgMjM3LCAxLCAyMTIsIDE0MiwgCisgICAgMjA3LCAxOSwgMSwgMjUxLCA2LCAyMDcsIDE5LCAxLCAyNDgsIDEwNiwgMjA3LCAxOSwgMSwgMjM4LCAyMzYsIDIwNywgMTksIAorICAgIDEsIDIyOSwgMTQ0LCAyMDcsIDE5LCAxLCAyNDQsIDM3LCAyMDcsIDE5LCAxLCAyMzYsIDEzNiwgMjA3LCAxOSwgMSwgMjA0LCAKKyAgICAwLCAyMDcsIDE5LCAxLCAyMDIsIDgzLCAyMDcsIDE5LCAxLCAyMzYsIDQ1LCAyMDcsIDE5LCAxLCAyMDksIDEzMiwgMjA3LCAKKyAgICAxOSwgMSwgMjAyLCAyMzYsIDIwNywgMTksIDEsIDIzMCwgMjIsIDIwNywgMTksIDEsIDIxMiwgMjU1LCAyMDcsIDE5LCAxLCAKKyAgICAyMjgsIDI0LCAyMDcsIDE5LCAxLCAyMjQsIDI0NywgMjA3LCAxOSwgMSwgMjQzLCAyNTMsIDIwNywgMTksIDEsIDIyMSwgNDAsIAorICAgIDIwNywgMTksIDEsIDIwMiwgNiwgMjA3LCAxOSwgMSwgMjE0LCAyNDgsIDIwNywgMTksIDEsIDI1MSwgNTksIDIwNywgMTksIAorICAgIDEsIDIxNywgMTkxLCAyMDcsIDE5LCAxLCAyMTUsIDI3LCAyMDcsIDE5LCAxLCAyMTcsIDcwLCAyMDcsIDE5LCAxLCAyMTYsIAorICAgIDE3NSwgMjA3LCAxOSwgMSwgMjA5LCA5NiwgMjA3LCAxOSwgMSwgMjM4LCAxMTQsIDIwNywgMTksIDEsIDEzNSwgMjA3LCAxOSwgCisgICAgMSwgNzUsIDIwNywgMTksIDEsIDY4LCAyMDcsIDE5LCAxLCAyMTEsIDExOSwgMjA3LCAxOSwgMjAzLCAyMzgsIDI0MywgMTQxLCAKKyAgICAzOCwgMjE4LCAyMzEsIDIsIDYzLCAzOCwgMjE4LCAyMzEsIDIsIDc1LCAzOCwgMjE4LCAyMzEsIDIsIDY4LCAzOCwgMjE4LCAKKyAgICAyMzEsIDIsIDE3MywgMzgsIDIxOCwgMjMxLCAyLCAyMjgsIDIwOSwgMzgsIDIxOCwgMjMxLCAyLCAyMzksIDgsIDM4LCAyMTgsIAorICAgIDIzMSwgMiwgMjM3LCAyMzAsIDM4LCAyMTgsIDIzMSwgMiwgMjAzLCAxODIsIDM4LCAyMTgsIDIzMSwgMiwgMjQ3LCA5MiwgCisgICAgMzgsIDIxOCwgMjMxLCAyLCAyMzAsIDE4MSwgMzgsIDIxOCwgMjMxLCAyLCAyMzAsIDE0MSwgMzgsIDIxOCwgMjMxLCAyLCAKKyAgICAyMTAsIDIyLCAzOCwgMjE4LCAyMzEsIDIsIDIwNywgMjAzLCAzOCwgMjE4LCAyMzEsIDIsIDI0NCwgMjEyLCAzOCwgMjE4LCAKKyAgICAyMzEsIDIsIDI0MywgMjMzLCAzOCwgMjE4LCAyMzEsIDIsIDI0MiwgNDIsIDM4LCAyMTgsIDIzMSwgMiwgMjA5LCAxMDgsIAorICAgIDM4LCAyMTgsIDIzMSwgMiwgMTg1LCAzOCwgMjE4LCAyMzEsIDIsIDI0OSwgMzIsIDM4LCAyMTgsIDIzMSwgMiwgMjQwLCAKKyAgICAxMDgsIDM4LCAyMTgsIDIzMSwgMiwgMjAxLCAyMDEsIDM4LCAyMTgsIDIzMSwgMiwgMjIxLCA4NCwgMzgsIDIxOCwgMjMxLCAKKyAgICAyLCAxOTIsIDM4LCAyMTgsIDIzMSwgMiwgMjI0LCAxNTUsIDM4LCAyMTgsIDIzMSwgMiwgMjIzLCAyNDYsIDM4LCAyMTgsIAorICAgIDIzMSwgMiwgMTk4LCAzOCwgMjE4LCAyMzEsIDIsIDIwNiwgODYsIDM4LCAyMTgsIDIzMSwgMiwgMjA1LCAyMzAsIDM4LCAKKyAgICAyMTgsIDIzMSwgMiwgMjE2LCAyMjAsIDM4LCAyMTgsIDIzMSwgMiwgMjE1LCAxNDUsIDM4LCAyMTgsIDIzMSwgMiwgMjI4LCAKKyAgICAxMTMsIDM4LCAyMTgsIDIzMSwgMiwgMjE1LCAzNiwgMzgsIDIxOCwgMjMxLCAyLCAyMDIsIDExNiwgMzgsIDIxOCwgMjMxLCAKKyAgICAyLCAyMTMsIDkwLCAzOCwgMjE4LCAyMzEsIDIsIDIxMSwgMTY0LCAzOCwgMjE4LCAyMzEsIDIsIDE1MiwgMzgsIDIxOCwgCisgICAgMjMxLCAyLCAyNTAsIDI4LCAzOCwgMjE4LCAyMzEsIDIsIDI1MCwgMjcsIDM4LCAyMTgsIDIzMSwgMiwgMjUwLCAyNiwgMzgsIAorICAgIDIxOCwgMjMxLCAyLCAyMDMsIDE1MywgMzgsIDIxOCwgMjMxLCAyLCAyNDQsIDE5MCwgMzgsIDIxOCwgMjMxLCAyLCAyNDQsIAorICAgIDE4OSwgMzgsIDIxOCwgMjMxLCAyLCAyNDksIDgsIDM4LCAyMTgsIDIzMSwgMiwgMjQ3LCAxNDQsIDM4LCAyMTgsIDIzMSwgCisgICAgMjAzLCAyMzgsIDI0MywgMTQxLCAzOCwgMjE4LCAyMzEsIDQyLCAxMDUsIDM4LCAyMTgsIDIzMSwgNDIsIDEwOCwgMzgsIAorICAgIDIxOCwgMjMxLCA0MiwgMjA5LCAxNTIsIDM4LCAyMTgsIDIzMSwgNDIsIDIwNywgMTUxLCAzOCwgMjE4LCAyMzEsIDQyLCAKKyAgICAyMzYsIDExLCAyNDQsIDE3LCA2LCAxLCAxNjMsIDc1LCAyNDQsIDE3LCA2LCAxLCAxNjMsIDc0LCAyNDQsIDE3LCA2LCAxLCAKKyAgICAxNjMsIDYzLCAyNDQsIDE3LCA2LCAxLCAxNjMsIDI1MSwgNzMsIDI0NCwgMTcsIDYsIDEsIDE2MywgNzgsIDI0NCwgMTcsIDYsIAorICAgIDEsIDE2MywgMjIwLCAxOCwgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIDc1LCAyNDQsIDE3LCA2LCAxLCAyMTIsIDIyOCwgCisgICAgNzQsIDI0NCwgMTcsIDYsIDEsIDIxMiwgMjI4LCA2MywgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIDI1MSwgNzMsIDI0NCwgCisgICAgMTcsIDYsIDEsIDIxMiwgMjI4LCA3OCwgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIDIyMCwgMTgsIDI0NCwgMTcsIDYsIDEsIAorICAgIDI1MCwgOCwgMjQ0LCAxNywgNiwgMSwgMjE5LCAxOTUsIDI0NCwgMTcsIDYsIDEsIDIwMywgMjE3LCAyNDQsIDE3LCA2LCAxLCAKKyAgICAyMDMsIDQ5LCAyNDQsIDE3LCA2LCAxLCAyMzcsIDE3MSwgMjQ0LCAxNywgNiwgMSwgMjE5LCAyMywgMjQ0LCAxNywgNiwgMSwgCisgICAgMjQ4LCAxNTAsIDI0NCwgMTcsIDYsIDEsIDIwOSwgMTc2LCAyNDQsIDE3LCA2LCAxLCAyNDQsIDYxLCAyNDQsIDE3LCA2LCAxLCAKKyAgICAyNDYsIDE2NiwgMjQ0LCAxNywgNiwgMSwgMjMwLCAxNTksIDI0NCwgMTcsIDYsIDEsIDIyOSwgMjA4LCAyNDQsIDE3LCA2LCAKKyAgICAxLCAyMzgsIDIxMSwgMjQ0LCAxNywgNiwgMSwgMjQxLCAxNTQsIDI0NCwgMTcsIDYsIDEsIDIwNiwgNTAsIDI0NCwgMTcsIDYsIAorICAgIDEsIDI0MCwgMjQzLCAyNDQsIDE3LCA2LCAxLCAyMDksIDkwLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDE3LCAyNDQsIDE3LCA2LCAKKyAgICAxLCAyMDIsIDkwLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDcsIDI0NCwgMTcsIDYsIDEsIDIwMiwgNzAsIDI0NCwgMTcsIDYsIDEsIAorICAgIDI0MSwgMjgsIDI0NCwgMTcsIDYsIDEsIDI0MSwgMTIyLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDEwMywgMjQ0LCAxNywgNiwgMSwgCisgICAgMjQxLCA5MiwgMjQ0LCAxNywgNiwgMSwgMjQxLCA3OCwgMjQ0LCAxNywgNiwgMSwgMjIwLCA1NywgMjQ0LCAxNywgNiwgMSwgCisgICAgMjQwLCAyMjAsIDI0NCwgMTcsIDUsIDEsIDE2MywgNzUsIDI0NCwgMTcsIDUsIDEsIDE2MywgNzQsIDI0NCwgMTcsIDUsIDEsIAorICAgIDE2MywgNjMsIDI0NCwgMTcsIDUsIDEsIDE2MywgMjUxLCA3MywgMjQ0LCAxNywgNSwgMSwgMTYzLCA3OCwgMjQ0LCAxNywgNSwgCisgICAgMSwgMTYzLCAyMjAsIDE4LCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgNzUsIDI0NCwgMTcsIDUsIDEsIDIxMiwgMjI4LCAKKyAgICA3NCwgMjQ0LCAxNywgNSwgMSwgMjEyLCAyMjgsIDYzLCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgMjUxLCA3MywgMjQ0LCAKKyAgICAxNywgNSwgMSwgMjEyLCAyMjgsIDc4LCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgMjIwLCAxOCwgMjQ0LCAxNywgNSwgMSwgCisgICAgMjUwLCA4LCAyNDQsIDE3LCA1LCAxLCAyMTksIDE5NSwgMjQ0LCAxNywgNSwgMSwgMjAzLCAyMTcsIDI0NCwgMTcsIDUsIDEsIAorICAgIDIwMywgNDksIDI0NCwgMTcsIDUsIDEsIDIzNywgMTcxLCAyNDQsIDE3LCA1LCAxLCAyMTksIDIzLCAyNDQsIDE3LCA1LCAxLCAKKyAgICAyNDgsIDE1MCwgMjQ0LCAxNywgNSwgMSwgMjA5LCAxNzYsIDI0NCwgMTcsIDUsIDEsIDI0NCwgNjEsIDI0NCwgMTcsIDUsIDEsIAorICAgIDI0NiwgMTY2LCAyNDQsIDE3LCA1LCAxLCAyMzAsIDE1OSwgMjQ0LCAxNywgNSwgMSwgMjI5LCAyMDgsIDI0NCwgMTcsIDUsIAorICAgIDEsIDIzOCwgMjExLCAyNDQsIDE3LCA1LCAxLCAyNDEsIDE1NCwgMjQ0LCAxNywgNSwgMSwgMjA2LCA1MCwgMjQ0LCAxNywgNSwgCisgICAgMSwgMjQwLCAyNDMsIDI0NCwgMTcsIDUsIDEsIDIwOSwgOTAsIDI0NCwgMTcsIDUsIDEsIDI0MSwgMTcsIDI0NCwgMTcsIDUsIAorICAgIDEsIDIwMiwgOTAsIDI0NCwgMTcsIDUsIDEsIDI0MSwgNywgMjQ0LCAxNywgNSwgMSwgMjAyLCA3MCwgMjQ0LCAxNywgNSwgMSwgCisgICAgMjQxLCAyOCwgMjQ0LCAxNywgNSwgMSwgMjQxLCAxMjIsIDI0NCwgMTcsIDUsIDEsIDI0MSwgMTAzLCAyNDQsIDE3LCA1LCAxLCAKKyAgICAyNDEsIDkyLCAyNDQsIDE3LCA1LCAxLCAyNDEsIDc4LCAyNDQsIDE3LCA1LCAxLCAyMjAsIDU3LCAyNDQsIDE3LCA1LCAxLCAKKyAgICAyNDAsIDIyMCwgMjEzLCA1MCwgMSwgMjE5LCAyMCwgMjEzLCA1MCwgMSwgMjA4LCAxMzEsIDIxMywgNTAsIDEsIDIyOSwgOTYsIAorICAgIDIxMywgNTAsIDEsIDI0MCwgNTMsIDIxMywgNTAsIDEsIDIwOSwgNjUsIDIxMywgNTAsIDEsIDIxMiwgMTMsIDIxMywgNTAsIAorICAgIDEsIDIxMCwgMTkwLCAyMTMsIDUwLCAxLCAyNDYsIDkwLCAyMTMsIDUwLCAxLCAyMDMsIDUxLCAyMTMsIDUwLCAxLCAyMzYsIAorICAgIDksIDIxMywgNTAsIDEsIDI0OCwgODUsIDIxMywgNTAsIDEsIDI0NCwgNzQsIDIxMywgNTAsIDEsIDIzOCwgMjUwLCAyMTMsIAorICAgIDUwLCAxLCAyMDUsIDE3MCwgMjEzLCA1MCwgMSwgMjA5LCA3MSwgMjEzLCA1MCwgMSwgMjAyLCAxNSwgMjEzLCA1MCwgMSwgCisgICAgMjI1LCAxOCwgMjEzLCA1MCwgMSwgMjMwLCA4MCwgMjEzLCA1MCwgMSwgMjAzLCAyNTQsIDIxMywgNTAsIDEsIDIzNywgMTU5LCAKKyAgICAyMTMsIDUwLCAxLCAyMjcsIDMzLCAyMTMsIDUwLCAxLCAyMjQsIDExMSwgMjEzLCA1MCwgMSwgMjMxLCA5MCwgMjEzLCA1MCwgCisgICAgMSwgMjQxLCAxNTIsIDIxMywgNTAsIDEsIDI1MCwgNzUsIDIxMywgNTAsIDEsIDI1MSwgMTEzLCAyMTMsIDUwLCAxLCAyMjAsIAorICAgIDMxLCAyMTMsIDUwLCAxLCAyMDMsIDI0MSwgMjEzLCA1MCwgMSwgMjE5LCAyMTEsIDIxMywgNTAsIDEsIDI1MSwgNzMsIDIxMywgCisgICAgNTAsIDEsIDIxNSwgMjI0LCAyMTMsIDUwLCAxLCAyMjEsIDQwLCAyMTMsIDUwLCAxLCAyNDEsIDE3MiwgMjEzLCA1MCwgMSwgCisgICAgMjUxLCA3OCwgMjEzLCA1MCwgMSwgMjM1LCAxNjIsIDIxMywgNTAsIDEsIDIwNiwgMjI0LCAyMTMsIDUwLCAxLCAyMjAsIDk1LCAKKyAgICAyMTMsIDUwLCAxLCAyMjAsIDEwLCAyMTMsIDUwLCAxLCAyMjAsIDU1LCAyMTMsIDUwLCAxLCAyNTAsIDExLCAyMTMsIDUwLCAKKyAgICAxLCAyNTAsIDEyMSwgMjEzLCA1MCwgMSwgMjE5LCAyNDQsIDIxMywgNTAsIDEsIDI1MSwgNTQsIDIxMywgNTAsIDEsIDI0MSwgCisgICAgMjEsIDIxMywgNTAsIDEsIDI1MCwgOTksIDIxMywgNTAsIDEsIDI0MSwgMTgzLCAyMTMsIDUwLCAxLCAyMzUsIDE3MCwgMjEzLCAKKyAgICA1MCwgMSwgMjAzLCAxNiwgMjE5LCAyMjUsIDEsIDI1MSwgMzAsIDIxOSwgMjI1LCAxLCAyNDksIDMyLCAyMTksIDIyNSwgMSwgCisgICAgMjEwLCAyMiwgMjE5LCAyMjUsIDEsIDIzMCwgMTgxLCAyMTksIDIyNSwgMSwgMjAzLCAxODIsIDIxOSwgMjI1LCAxLCAyMjksIAorICAgIDE0NCwgMjE5LCAyMjUsIDEsIDI0NCwgNjAsIDIxOSwgMjI1LCAxLCAyMTYsIDIyMCwgMjE5LCAyMjUsIDEsIDIxNSwgMzYsIAorICAgIDIxOSwgMjI1LCAxLCAyMTMsIDUsIDIxOSwgMjI1LCAxLCAyNDQsIDEsIDIxOSwgMjI1LCAxLCAyNDcsIDcsIDIxOSwgMjI1LCAKKyAgICAxLCAyMzksIDgsIDIxOSwgMjI1LCAxLCAyNDAsIDEwOCwgMjE5LCAyMjUsIDEsIDIxNywgMTI0LCAyMTksIDIyNSwgMSwgCisgICAgMjMwLCAzOCwgMjE5LCAyMjUsIDEsIDIyOCwgMTA4LCAyMTksIDIyNSwgMSwgMjI0LCAxMjQsIDIxOSwgMjI1LCAxLCAyMjEsIAorICAgIDI0LCAyMTksIDIyNSwgMSwgMjA0LCA3MCwgMjE5LCAyMjUsIDEsIDE1MiwgMjE5LCAyMjUsIDEsIDE5OCwgMjE5LCAyMjUsIAorICAgIDEsIDYzLCAyMTksIDIyNSwgMSwgNzQsIDIxOSwgMjI1LCAxLCA3NSwgMjE5LCAyMjUsIDEsIDc4LCAyMTksIDIyNSwgMSwgCisgICAgNjgsIDIxOSwgMjI1LCAxLCAyNTIsIDI1LCAyMTksIDIyNSwgMSwgMjQxLCAxNjEsIDIxOSwgMjI1LCAxLCAyMjAsIDE4LCAKKyAgICAyMTksIDIyNSwgMTcsIDIwMiwgODQsIDIxOSwgMjI1LCAxNywgMTA1LCAyMTksIDIyNSwgMTcsIDEwOCwgMjE5LCAyMjUsIAorICAgIDE3LCAxNDcsIDIxOSwgMjI1LCAxNywgMTQ5LCAyMTksIDIyNSwgMTcsIDE3MCwgMjE5LCAyMjUsIDE3LCAxOTUsIDIxOSwgCisgICAgMjI1LCAxNywgMjEzLCAxMTEsIDIxOSwgMjI1LCAxNywgMTk5LCAyMTksIDIyNSwgMTcsIDIyMiwgNjMsIDI0MSwgMTE4LCAxLCAKKyAgICA2MywgMjQxLCAxMTgsIDEsIDI0OCwgMTYyLCAyNDEsIDExOCwgMSwgMjQ2LCAyMzgsIDI0MSwgMTE4LCAxLCAyNDYsIDE3MCwgCisgICAgMjQxLCAxMTgsIDEsIDI0NCwgNzUsIDI0MSwgMTE4LCAxLCAyMjMsIDE3LCAyNDEsIDExOCwgMSwgMjQzLCAyNDgsIDI0MSwgCisgICAgMTE4LCAxLCAyNDEsIDE0NSwgMjQxLCAxMTgsIDEsIDc0LCAyNDEsIDExOCwgMSwgMjQwLCA2MCwgMjQxLCAxMTgsIDEsIAorICAgIDIzOCwgMTkwLCAyNDEsIDExOCwgMSwgMjM4LCA1MiwgMjQxLCAxMTgsIDEsIDIzNywgNjcsIDI0MSwgMTE4LCAxLCA3NSwgCisgICAgMjQxLCAxMTgsIDEsIDIzMCwgMTYxLCAyNDEsIDExOCwgMSwgMjI5LCAyMDEsIDI0MSwgMTE4LCAxLCAyMjcsIDIzNCwgMjQxLCAKKyAgICAxMTgsIDEsIDIyNywgNzMsIDI0MSwgMTE4LCAxLCAyMjUsIDIwLCAyNDEsIDExOCwgMSwgMjIyLCAyNDAsIDI0MSwgMTE4LCAKKyAgICAxLCAyMDEsIDIwMSwgMjQxLCAxMTgsIDEsIDIyMiwgNDEsIDI0MSwgMTE4LCAxLCA3OCwgMjQxLCAxMTgsIDEsIDIxOSwgMzQsIAorICAgIDI0MSwgMTE4LCAxLCAyMTcsIDEwNiwgMjQxLCAxMTgsIDEsIDIxNiwgMTU4LCAyNDEsIDExOCwgMSwgMjE1LCAxODAsIDI0MSwgCisgICAgMTE4LCAxLCAyMTQsIDE3NywgMjQxLCAxMTgsIDEsIDIxMywgNDMsIDI0MSwgMTE4LCAxLCAyMDksIDE4NywgMjQxLCAxMTgsIAorICAgIDEsIDIwOSwgOTIsIDI0MSwgMTE4LCAxLCA2OCwgMjQxLCAxMTgsIDEsIDIwNiwgNTUsIDI0MSwgMTE4LCAxLCAyMDMsIDE3NiwgCisgICAgMjQxLCAxMTgsIDEsIDIwMywgMTI0LCAyNDEsIDExOCwgMSwgMjAyLCA5MiwgMjQxLCAxMTgsIDEsIDIwMiwgNzEsIDI0MSwgCisgICAgMTE4LCAxLCAyMzgsIDEwNSwgMjQxLCAxMTgsIDEsIDIzOCwgMTExLCAyNDEsIDExOCwgMSwgMjI5LCAxMjksIDI0NywgMTQsIAorICAgIDI1MSwgMzEsIDEsIDI1MSwgMSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ4LCAxMDgsIDI0NywgMTQsIDI1MSwgMzEsIDEsIAorICAgIDIzOCwgNjksIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NCwgMTQwLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDEsIDE3MSwgCisgICAgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjAyLCAxMDIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MCwgMTgzLCAyNDcsIDE0LCAKKyAgICAyNTEsIDMxLCAxLCAyMDIsIDY1LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDksIDIxMywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgCisgICAgMjQ2LCAxOTksIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwMiwgMjI0LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDIsIDgwLCAKKyAgICAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMzAsIDIyMywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjEzLCA5MCwgMjQ3LCAxNCwgCisgICAgMjUxLCAzMSwgMSwgMjI4LCAxNywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjMwLCAyMzUsIDI0NywgMTQsIDI1MSwgMzEsIDEsIAorICAgIDIwMywgMTcyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDIsIDcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NywgMzksIDI0NywgCisgICAgMTQsIDI1MSwgMzEsIDEsIDIzMCwgMTQyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMjksIDI0MCwgMjQ3LCAxNCwgMjUxLCAKKyAgICAzMSwgMSwgMjI2LCAxOTQsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIzNywgMTQsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxNywgCisgICAgMTA3LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNTAsIDE3NywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ2LCAxMDcsIDI0NywgCisgICAgMTQsIDI1MSwgMzEsIDEsIDI0NiwgMTQyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDUsIDYzLCAyNDcsIDE0LCAyNTEsIDMxLCAKKyAgICAxLCAyMjUsIDEwMywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE3LCAxMTEsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIyMSwgCisgICAgMTUxLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDEsIDI0MCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjEzLCA3MywgMjQ3LCAKKyAgICAxNCwgMjUxLCAzMSwgMSwgMjMwLCAxNjIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIyMCwgMzEsIDI0NywgMTQsIDI1MSwgMzEsIAorICAgIDEsIDIwNywgMTI1LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDAsIDgzLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDEsIDI1MywgCisgICAgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ2LCAxNzYsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxOSwgOSwgMjQ3LCAxNCwgMjUxLCAKKyAgICAzMSwgMSwgMjM4LCA5NSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE2LCAxNzIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxMywgCisgICAgOTksIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwNSwgMjMyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDgsIDE5MywgMjQ3LCAKKyAgICAxNCwgMjUxLCAzMSwgMSwgMjEyLCAyMDcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIzMCwgMTk0LCAyNDcsIDE0LCAyNTEsIAorICAgIDMxLCAxLCAyNDUsIDY0LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDcsIDcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwMywgCisgICAgNTYsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxOCwgMTAyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMjksIDYyLCAyNDcsIDE0LCAKKyAgICAyNTEsIDMxLCAyNDYsIDQ5LCA4MiwgMjksIDM0LCAyLCAyNTEsIDIzMSwgMjksIDM0LCAyLCAyNTEsIDIzMCwgMjksIDM0LCAKKyAgICAyLCAyNTEsIDIyOSwgMjksIDM0LCAyLCAyNTEsIDIyOCwgMjksIDM0LCAyLCAyNTEsIDIyNywgMjksIDM0LCAyLCAyNTEsIAorICAgIDIyNiwgMjksIDM0LCAyLCAyNTEsIDIyNSwgMjksIDM0LCAyLCAyNTEsIDIyNCwgMjksIDM0LCAyLCAyNTEsIDIyMywgMjksIAorICAgIDM0LCAyLCAyNTEsIDIyMiwgMjksIDM0LCAyLCAyNTEsIDIyMSwgMjksIDM0LCAyLCAyNTEsIDIyMCwgMjksIDM0LCAyLCAKKyAgICAyNTEsIDIxOSwgMjksIDM0LCAyLCAyNTEsIDIxOCwgMjksIDM0LCAyLCAyNTEsIDIxNywgMjksIDM0LCAyLCAyNTEsIDIxNiwgCisgICAgMjksIDM0LCAyLCAyNTEsIDIxNSwgMjksIDM0LCAyLCAyNTEsIDIxNCwgMjksIDM0LCAyLCAyNTEsIDIxMywgMjksIDM0LCAyLCAKKyAgICAyNTEsIDIxMiwgMjksIDM0LCAyLCAyNTEsIDIxMSwgMjksIDM0LCAyLCAyNTEsIDIxMCwgMjksIDM0LCAyLCAyNTEsIDIwOSwgCisgICAgMjksIDM0LCAyLCAyNTEsIDIwOCwgMjksIDM0LCAyLCAyNTEsIDIwNywgMjksIDM0LCAyLCAyNTEsIDIwNiwgMjksIDM0LCAyLCAKKyAgICAyNTEsIDIwNSwgMjksIDM0LCAyLCAyNTQsIDIzOSwgMjksIDM0LCAyLCAyNTEsIDIwNCwgMjksIDM0LCAyLCAyNTEsIDIwMywgCisgICAgMjksIDM0LCAyLCAyNTEsIDIwMiwgMjksIDM0LCAyLCAyNTEsIDIwMSwgMjksIDM0LCAyLCAyNTEsIDIwMCwgMjksIDM0LCAyLCAKKyAgICAyNTEsIDE5OSwgMjksIDM0LCAyLCAyNTEsIDE5OCwgMjksIDM0LCAyLCAyNTEsIDE5NywgMjksIDM0LCAyLCAyNTEsIDE5NiwgCisgICAgMjksIDM0LCAyLCAyNTEsIDE5NSwgMjksIDM0LCAyLCAyNTEsIDE5NCwgMjksIDM0LCAyLCAyNTEsIDE5MywgMjksIDM0LCAyLCAKKyAgICAyNTEsIDE5MiwgMjksIDM0LCAyLCAyNTEsIDE5MSwgMjksIDM0LCAyLCAyNTEsIDE5MCwgMjksIDM0LCAyLCAyNTEsIDE4OSwgCisgICAgMjksIDM0LCAyLCAyNTEsIDE4OCwgMjksIDM0LCAyLCAyNTEsIDE4NywgMjksIDM0LCAyLCAyNTEsIDE4NiwgMjksIDM0LCAyLCAKKyAgICAyNTEsIDE4NSwgMjksIDM0LCAyLCAyNTEsIDE4NCwgMjksIDM0LCAyLCAyNTEsIDE4MywgMjksIDM0LCAyLCAyNTEsIDE4MiwgCisgICAgMjksIDM0LCAyLCAyNTEsIDE4MSwgMjksIDM0LCAyLCAyNTEsIDE4MCwgMjksIDM0LCAyLCAyNTEsIDE3OSwgMjksIDM0LCAyLCAKKyAgICAyNTEsIDE3OCwgMjksIDM0LCAyLCAyNTEsIDE3NywgMjksIDM0LCAyLCAyNTEsIDE3NiwgMjksIDM0LCAyLCAyNTEsIDE3NSwgCisgICAgMjksIDM0LCAyLCAyNTEsIDE3NCwgMjksIDM0LCAyLCAyNTEsIDE3MywgMjksIDM0LCAyLCAyNTEsIDE3MiwgMjksIDM0LCAyLCAKKyAgICAyNTEsIDE3MSwgMjksIDM0LCAyLCAyNTEsIDE3MCwgMjksIDM0LCAyLCAyNTEsIDE2OSwgMjksIDM0LCAyLCAyNTEsIDE2OCwgCisgICAgMjksIDM0LCAyLCAyNTEsIDE2NywgMjksIDM0LCAyLCAyNTEsIDE2NiwgMjksIDM0LCAyLCAyNTEsIDE2NSwgMjksIDM0LCAyLCAKKyAgICAyNTEsIDE2NCwgMjksIDM0LCAyLCAyNTEsIDE2MywgMjksIDM0LCAyLCAyNTEsIDE2MiwgMjksIDM0LCAyLCAyNTQsIDE1MiwgCisgICAgMjksIDM0LCAyLCAyNTEsIDE2MSwgMjksIDM0LCAyLCAyNTEsIDE2MCwgMjksIDM0LCAyLCAyNTQsIDExNywgMjksIDM0LCAyLCAKKyAgICAyNTEsIDE1OSwgMjksIDM0LCAyLCAyNTEsIDE1OCwgMjksIDM0LCAyLCAyNTEsIDE1NywgMjksIDM0LCAyLCAyNTEsIDE1NiwgCisgICAgMjksIDM0LCAyLCAyNTQsIDEwNCwgMjksIDM0LCAyLCAyNTEsIDE1NSwgMjksIDM0LCAyLCAyNTEsIDE1NCwgMjksIDM0LCAyLCAKKyAgICAyNTEsIDE1MywgMjksIDM0LCAyLCAyNTEsIDE1MiwgMjksIDM0LCAyLCAyNTEsIDE1MSwgMjksIDM0LCAyLCAyNTMsIDE3NiwgCisgICAgMjksIDM0LCAyLCAyNTMsIDE3NSwgMjksIDM0LCAyLCAyNTMsIDE3NCwgMjksIDM0LCAyLCAyNTMsIDE3MywgMjksIDM0LCAyLCAKKyAgICAyNTMsIDE3MiwgMjksIDM0LCAyLCAyNTMsIDE3MSwgMjksIDM0LCAyLCAyNTMsIDE3MCwgMjksIDM0LCAyLCAyNTMsIDE2OSwgCisgICAgMjksIDM0LCAyLCAyNTMsIDE2NywgMjksIDM0LCAyLCAyNTMsIDE2NiwgMjksIDM0LCAyLCAyNTMsIDE2NSwgMjksIDM0LCAyLCAKKyAgICAyNTMsIDE2NCwgMjksIDM0LCAyLCAyNTMsIDE2MywgMjksIDM0LCAyLCAyNTMsIDE2MiwgMjksIDM0LCAyLCAyNTMsIDE2MCwgCisgICAgMjksIDM0LCAyLCAyNTMsIDE1OSwgMjksIDM0LCAyLCAyNTMsIDE1OCwgMjksIDM0LCAyLCAyNTMsIDE1NywgMjksIDM0LCAyLCAKKyAgICAyNTMsIDE1NiwgMjksIDM0LCAyLCAyNTMsIDE1NSwgMjksIDM0LCAyLCAyNTMsIDE1NCwgMjksIDM0LCAyLCAyNTMsIDE1MywgCisgICAgMjksIDM0LCAyLCAyNTMsIDE1MiwgMjksIDM0LCAyLCAyNTMsIDE1MSwgMjksIDM0LCAyLCAyNTMsIDE1MCwgMjksIDM0LCAyLCAKKyAgICAyNTMsIDE0OSwgMjksIDM0LCAyLCAyNTMsIDE0OCwgMjksIDM0LCAyLCAyNTMsIDE0NywgMjksIDM0LCAyLCAyNTMsIDE0NiwgCisgICAgMjksIDM0LCAyLCAyNTMsIDE0NSwgMjksIDM0LCAyLCAyNTMsIDE0NCwgMjksIDM0LCAyLCAyNTMsIDE0MywgMjksIDM0LCAyLCAKKyAgICAyNTMsIDE0MiwgMjksIDM0LCAyLCAyNTMsIDE0MCwgMjksIDM0LCAyLCAyNTMsIDEzOSwgMjksIDM0LCAyLCAyNTMsIDEzOCwgCisgICAgMjksIDM0LCAyLCAyNTMsIDEzNCwgMjksIDM0LCAyLCAyNTMsIDEzMywgMjksIDM0LCAyLCAyNTMsIDEzMiwgMjksIDM0LCAyLCAKKyAgICAyNTMsIDEzMSwgMjksIDM0LCAyLCAyNTMsIDEyNywgMjksIDM0LCAyLCAyNTMsIDEyNiwgMjksIDM0LCAyLCAyNTMsIDEyNSwgCisgICAgMjksIDM0LCAyLCAyNTMsIDEyNCwgMjksIDM0LCAyLCAyNTMsIDEyMywgMjksIDM0LCAyLCAyNTMsIDEyMiwgMjksIDM0LCAyLCAKKyAgICAyNTMsIDEyMSwgMjksIDM0LCAyLCAyNTMsIDEyMCwgMjksIDM0LCAyLCAyNTMsIDExOSwgMjksIDM0LCAyLCAyNTMsIDExOCwgCisgICAgMjksIDM0LCAyLCAyNTMsIDExNywgMjksIDM0LCAyLCAyNTMsIDExNiwgMjksIDM0LCAyLCAyNTMsIDExNSwgMjksIDM0LCAyLCAKKyAgICAyNTMsIDExNCwgMjksIDM0LCAyLCAyNTMsIDExMywgMjksIDM0LCAyLCAyNTMsIDExMiwgMjksIDM0LCAyLCAyNTMsIDExMSwgCisgICAgMjksIDM0LCAyLCAyNTMsIDExMCwgMjksIDM0LCAyLCAyNTMsIDEwOSwgMjksIDM0LCAyLCAyNTMsIDEwOCwgMjksIDM0LCAyLCAKKyAgICAyNTMsIDEwNywgMjksIDM0LCAyLCAyNTMsIDEwNiwgMjksIDM0LCAyLCAyNTMsIDEwNSwgMjksIDM0LCAyLCAyNTMsIDEwMywgCisgICAgMjksIDM0LCAyLCAyNTMsIDEwMiwgMjksIDM0LCAyLCAyNTMsIDEwMSwgMjksIDM0LCAyLCAyNTMsIDEwMCwgMjksIDM0LCAyLCAKKyAgICAyNTMsIDk5LCAyOSwgMzQsIDIsIDI1MywgOTcsIDI5LCAzNCwgMiwgMjUzLCA5NiwgMjksIDM0LCAyLCAyNTMsIDk1LCAyOSwgCisgICAgMzQsIDIsIDI1MywgOTQsIDI5LCAzNCwgMiwgMjUzLCA5MiwgMjksIDM0LCAyLCAyNTMsIDkxLCAyOSwgMzQsIDIsIDI1MywgCisgICAgOTAsIDI5LCAzNCwgMiwgMjUzLCA1NiwgMjksIDM0LCAyLCAyNTMsIDU0LCAyOSwgMzQsIDIsIDI1MywgNTIsIDI5LCAzNCwgCisgICAgMiwgMjUzLCA1MCwgMjksIDM0LCAyLCAyNTMsIDQ4LCAyOSwgMzQsIDIsIDI1MywgNDYsIDI5LCAzNCwgMiwgMjUzLCA0NCwgCisgICAgMjksIDM0LCAyLCAyNTMsIDQyLCAyOSwgMzQsIDIsIDI1MywgNDAsIDI5LCAzNCwgMiwgMjUzLCAzOCwgMjksIDM0LCAyLCAKKyAgICAyNTMsIDM2LCAyOSwgMzQsIDIsIDI1MywgMzMsIDI5LCAzNCwgMiwgMjUzLCAzMSwgMjksIDM0LCAyLCAyNTMsIDI5LCAyOSwgCisgICAgMzQsIDIsIDI1MywgMjcsIDI5LCAzNCwgMiwgMjUzLCAyNSwgMjksIDM0LCAyLCAyNTMsIDIzLCAyOSwgMzQsIDIsIDI1MywgCisgICAgMjEsIDI5LCAzNCwgMiwgMjUzLCAxOSwgMjksIDM0LCAyLCAyNTIsIDE5MywgMjksIDM0LCAyLCAyNTIsIDE5MiwgMjksIDM0LCAKKyAgICAyLCAyNTIsIDE5MSwgMjksIDM0LCAyLCAyNTIsIDE5MCwgMjksIDM0LCAyLCAyNTIsIDE4OSwgMjksIDM0LCAyLCAyNTIsIAorICAgIDE4OCwgMjksIDM0LCAyLCAyNTIsIDE4NiwgMjksIDM0LCAyLCAyNTIsIDE4NSwgMjksIDM0LCAyLCAyNTIsIDE4NCwgMjksIAorICAgIDM0LCAyLCAyNTIsIDE4MywgMjksIDM0LCAyLCAyNTIsIDE4MiwgMjksIDM0LCAyLCAyNTIsIDE4MSwgMjksIDM0LCAyLCAKKyAgICAyNTIsIDE3OSwgMjksIDM0LCAyLCAyNTIsIDE3OCwgMjksIDM0LCAyLCAyNTIsIDE3NCwgMjksIDM0LCAyLCAyNTIsIDE3MywgCisgICAgMjksIDM0LCAyLCAyNTIsIDE3MSwgMjksIDM0LCAyLCAyNTIsIDE3MCwgMjksIDM0LCAyLCAyNTIsIDE2OSwgMjksIDM0LCAyLCAKKyAgICAyNTIsIDE2OCwgMjksIDM0LCAyLCAyNTIsIDE2NywgMjksIDM0LCAyLCAyNTIsIDE2NiwgMjksIDM0LCAyLCAyNTIsIDE2NSwgCisgICAgMjksIDM0LCAyLCAyNTIsIDE2NCwgMjksIDM0LCAyLCAyNTIsIDE2MywgMjksIDM0LCAyLCAyNTIsIDE2MiwgMjksIDM0LCAyLCAKKyAgICAyNTIsIDE2MSwgMjksIDM0LCAyLCAyNTIsIDE2MCwgMjksIDM0LCAyLCAyNTIsIDE1OSwgMjksIDM0LCAyLCAyNTIsIDE1OCwgCisgICAgMjksIDM0LCAyLCAyNTIsIDE1NywgMjksIDM0LCAyLCAyNTIsIDE1NiwgMjksIDM0LCAyLCAyNTIsIDE1NSwgMjksIDM0LCAyLCAKKyAgICAyNTIsIDE1NCwgMjksIDM0LCAyLCAyNTIsIDE1MywgMjksIDM0LCAyLCAyNTIsIDE1MiwgMjksIDM0LCAyLCAyNTIsIDE1MSwgCisgICAgMjksIDM0LCAyLCAyNTIsIDE1MCwgMjksIDM0LCAyLCAyNTIsIDE0OSwgMjksIDM0LCAyLCAyNTIsIDE0OCwgMjksIDM0LCAyLCAKKyAgICAyNTIsIDE0NywgMjksIDM0LCAyLCAyNTIsIDE0NiwgMjksIDM0LCAyLCAyNTIsIDE0NSwgMjksIDM0LCAyLCAyNTIsIDE0NCwgCisgICAgMjksIDM0LCAyLCAyNTIsIDE0MywgMjksIDM0LCAyLCAyNTIsIDE0MiwgMjksIDM0LCAyLCAyNTIsIDE0MSwgMjksIDM0LCAyLCAKKyAgICAyNTIsIDE0MCwgMjksIDM0LCAyLCAyNTIsIDEzOSwgMjksIDM0LCAyLCAyNTIsIDEzOCwgMjksIDM0LCAyLCAyNTIsIDEzNywgCisgICAgMjksIDM0LCAyLCAyNTIsIDEzNiwgMjksIDM0LCAyLCAyNTIsIDEzNSwgMjksIDM0LCAyLCAyNTIsIDEzNCwgMjksIDM0LCAyLCAKKyAgICAyNTIsIDEzMywgMjksIDM0LCAyLCAyNTIsIDEzMiwgMjksIDM0LCAyLCAyNTIsIDEzMSwgMjksIDM0LCAyLCAyNTIsIDEzMCwgCisgICAgMjksIDM0LCAyLCAyNTIsIDEyOSwgMjksIDM0LCAyLCAyNTIsIDEyOCwgMjksIDM0LCAyLCAyNTIsIDEyNywgMjksIDM0LCAyLCAKKyAgICAyNTIsIDEyNiwgMjksIDM0LCAyLCAyNTIsIDEyNSwgMjksIDM0LCAyLCAyNTIsIDEyNCwgMjksIDM0LCAyLCAyNTIsIDEyMywgCisgICAgMjksIDM0LCAyLCAyNTIsIDEyMiwgMjksIDM0LCAyLCAyNTIsIDEyMSwgMjksIDM0LCAyLCAyNTIsIDEyMCwgMjksIDM0LCAyLCAKKyAgICAyNTIsIDExOSwgMjksIDM0LCAyLCAyNTIsIDExOCwgMjksIDM0LCAyLCAyNTIsIDExNywgMjksIDM0LCAyLCAyNTIsIDExNiwgCisgICAgMjksIDM0LCAyLCAyNTIsIDExNSwgMjksIDM0LCAyLCAyNTIsIDExNCwgMjksIDM0LCAyLCAyNTIsIDExMywgMjksIDM0LCAyLCAKKyAgICAyNTIsIDExMiwgMjksIDM0LCAyLCAyNTIsIDExMSwgMjksIDM0LCAyLCAyNTIsIDExMCwgMjksIDM0LCAyLCAyNTIsIDEwOSwgCisgICAgMjksIDM0LCAyLCAyNTIsIDEwOCwgMjksIDM0LCAyLCAyNTIsIDEwNywgMjksIDM0LCAyLCAyNTIsIDEwNiwgMjksIDM0LCAyLCAKKyAgICAyNTIsIDEwNSwgMjksIDM0LCAyLCAyNTIsIDEwNCwgMjksIDM0LCAyLCAyNTIsIDEwMywgMjksIDM0LCAyLCAyNTIsIDEwMiwgCisgICAgMjksIDM0LCAyLCAyNTIsIDEwMSwgMjksIDM0LCAyLCAyNTIsIDEwMCwgMjksIDM0LCAyLCAyNTIsIDk5LCAyOSwgMzQsIDIsIAorICAgIDI1MiwgOTgsIDI5LCAzNCwgMiwgMjUyLCA5NywgMjksIDM0LCAyLCAyNTIsIDk2LCAyOSwgMzQsIDIsIDI1MiwgOTUsIDI5LCAKKyAgICAzNCwgMiwgMjUyLCA5NCwgMjksIDM0LCAyLCAyNTIsIDkzLCAyOSwgMzQsIDIsIDI1MiwgOTIsIDI5LCAzNCwgMiwgMjUyLCAKKyAgICA5MSwgMjksIDM0LCAyLCAyNTIsIDkwLCAyOSwgMzQsIDIsIDI1MiwgODksIDI5LCAzNCwgMiwgMjUyLCA4OCwgMjksIDM0LCAKKyAgICAyLCAyNTIsIDg3LCAyOSwgMzQsIDIsIDI1MiwgODYsIDI5LCAzNCwgMiwgMjUyLCA4NSwgMjksIDM0LCAyLCAyNTIsIDg0LCAKKyAgICAyOSwgMzQsIDIsIDI1MiwgODMsIDI5LCAzNCwgMiwgMjUyLCA4MiwgMjksIDM0LCAyLCAyNTIsIDgxLCAyOSwgMzQsIDIsIAorICAgIDI1MiwgODAsIDI5LCAzNCwgMiwgMjUyLCA3OSwgMjksIDM0LCAyLCAyNTIsIDc4LCAyOSwgMzQsIDIsIDI1MiwgNzcsIDI5LCAKKyAgICAzNCwgMiwgMjUyLCA3NiwgMjksIDM0LCAyLCAyNTIsIDc1LCAyOSwgMzQsIDIsIDI1MiwgNzQsIDI5LCAzNCwgMiwgMjUyLCAKKyAgICA3MywgMjksIDM0LCAyLCAyNTIsIDcyLCAyOSwgMzQsIDIsIDI1MiwgNzEsIDI5LCAzNCwgMiwgMjUyLCA3MCwgMjksIDM0LCAKKyAgICAyLCAyNTIsIDY5LCAyOSwgMzQsIDIsIDI1MiwgNjgsIDI5LCAzNCwgMiwgMjUyLCA2NywgMjksIDM0LCAyLCAyNTIsIDY2LCAKKyAgICAyOSwgMzQsIDIsIDI1MiwgNjUsIDI5LCAzNCwgMiwgMjUyLCA2NCwgMjksIDM0LCAyLCAyNTIsIDYzLCAyOSwgMzQsIDIsIAorICAgIDI1MiwgNjIsIDI5LCAzNCwgMiwgMjUyLCA2MSwgMjksIDM0LCAyLCAyNTIsIDYwLCAyOSwgMzQsIDIsIDI1MiwgNTksIDI5LCAKKyAgICAzNCwgMiwgMjUyLCA1OCwgMjksIDM0LCAyLCAyNTIsIDU3LCAyOSwgMzQsIDIsIDI1MiwgNTYsIDI5LCAzNCwgMiwgMjUyLCAKKyAgICA1NSwgNjMsIDI5LCAzNCwgMiwgMjUyLCA1NCwgMjQ5LCAyNTUsIDI5LCAzNCwgMiwgMjUyLCA1MywgMjQ1LCA1MSwgMjksIAorICAgIDM0LCAyLCAyNTIsIDUyLCA3NCwgMjksIDM0LCAyLCAyNTIsIDUxLCAyNDAsIDE3NCwgMjksIDM0LCAyLCAyNTIsIDUwLCAKKyAgICAyMzcsIDE3MSwgMjksIDM0LCAyLCAyNTIsIDQ5LCAyMzAsIDE4NCwgMjksIDM0LCAyLCAyNTIsIDQ4LCAyMzAsIDU0LCAyOSwgCisgICAgMzQsIDIsIDI1MiwgNDcsIDE1OSwgMjksIDM0LCAyLCAyNTIsIDQ2LCAyMjgsIDExOCwgMjksIDM0LCAyLCAyNTIsIDQ1LCAKKyAgICAyMjgsIDExNywgMjksIDM0LCAyLCAyNTIsIDQ0LCAyMjgsIDExNiwgMjksIDM0LCAyLCAyNTIsIDQzLCAyMjgsIDExNSwgMjksIAorICAgIDM0LCAyLCAyNTIsIDQyLCAyMDQsIDE0NCwgMjksIDM0LCAyLCAyNTIsIDQxLCAyMDMsIDE5NiwgMjksIDM0LCAyLCAyNTIsIAorICAgIDQwLCAyMDMsIDEyNCwgMjksIDM0LCAyLCAyNTIsIDM5LCAyMjAsIDM2LCAyOSwgMzQsIDIsIDI1MiwgMzgsIDI1MSwgMTQ3LCAKKyAgICAyOSwgMzQsIDIsIDI1MiwgMzcsIDI0OCwgMTk5LCAyOSwgMzQsIDIsIDI1MiwgMzYsIDI0NCwgMTIyLCAyOSwgMzQsIDIsIAorICAgIDI1MiwgMzUsIDI0MCwgMTgyLCAyOSwgMzQsIDIsIDI1MiwgMzQsIDIzMCwgMTYxLCAyOSwgMzQsIDIsIDI1MiwgMzMsIDI5LCAKKyAgICAzNCwgMiwgMjUyLCAzMiwgMjksIDM0LCAyLCAyNTIsIDMxLCAyOSwgMzQsIDIsIDI1MiwgMzAsIDI5LCAzNCwgMiwgMjUyLCAKKyAgICAyOSwgMjksIDM0LCAyLCAyNTIsIDI4LCAyOSwgMzQsIDIsIDI1MiwgMjcsIDI5LCAzNCwgMiwgMjUyLCAyNiwgMjQ1LCA1OCwgCisgICAgNCwgNjMsIDI0NSwgNTgsIDQsIDc0LCAyNDUsIDU4LCA0LCA3NSwgMjQ1LCA1OCwgNCwgNzgsIDI0NSwgNTgsIDQsIDY4LCAKKyAgICAyNDUsIDU4LCA0LCAyMzAsIDE4MSwgMjQ1LCA1OCwgNCwgMjMwLCAxMDEsIDI0NSwgNTgsIDQsIDE3MywgMjQ1LCA1OCwgNCwgCisgICAgMjI5LCAyMDEsIDI0NSwgNTgsIDQsIDIyOSwgMTAwLCAyNDUsIDU4LCA0LCAyMjksIDI2LCAyNDUsIDU4LCA0LCAyMjgsIAorICAgIDIwOSwgMjQ1LCA1OCwgNCwgMjI4LCAxMTMsIDI0NSwgNTgsIDQsIDIyNywgMjM0LCAyNDUsIDU4LCA0LCAyMjcsIDE0OCwgCisgICAgMjQ1LCA1OCwgNCwgMjI3LCA0OSwgMjQ1LCA1OCwgNCwgMjI2LCAyMzksIDI0NSwgNTgsIDQsIDE5MiwgMjQ1LCA1OCwgNCwgCisgICAgMjI1LCAyMCwgMjQ1LCA1OCwgNCwgMjI0LCAxNTUsIDI0NSwgNTgsIDQsIDIyNCwgODIsIDI0NSwgNTgsIDQsIDIyMywgMjQ2LCAKKyAgICAyNDUsIDU4LCA0LCAyMDEsIDIwMSwgMjQ1LCA1OCwgNCwgMjIyLCAyNDAsIDI0NSwgNTgsIDQsIDIyMiwgMTAwLCAyNDUsIAorICAgIDU4LCA0LCAyMjEsIDE5MSwgMjQ1LCA1OCwgNCwgMjIxLCA4NCwgMjQ1LCA1OCwgNCwgMTg1LCAyNDUsIDU4LCA0LCAyMTksIAorICAgIDM0LCAyNDUsIDU4LCA0LCAyMTgsIDE2NywgMjQ1LCA1OCwgNCwgMjE4LCA2OSwgMjQ1LCA1OCwgNCwgMjE3LCAxOTEsIDI0NSwgCisgICAgNTgsIDQsIDIxNiwgMjIwLCAyNDUsIDU4LCA0LCAyMTYsIDE1OCwgMjQ1LCA1OCwgNCwgMjE2LCA1NywgMjQ1LCA1OCwgNCwgCisgICAgMjE1LCAyMjcsIDI0NSwgNTgsIDQsIDIxNSwgMTQ1LCAyNDUsIDU4LCA0LCAyMTUsIDM2LCAyNDUsIDU4LCA0LCAyMTQsIAorICAgIDE3NywgMjQ1LCA1OCwgNCwgMjEyLCAxNjIsIDI0NSwgNTgsIDQsIDIxMiwgMTMsIDI0NSwgNTgsIDQsIDIxMSwgMTAsIDI0NSwgCisgICAgNTgsIDQsIDIxMCwgMjIsIDI0NSwgNTgsIDQsIDIwOSwgMTg3LCAyNDUsIDU4LCA0LCAyMDksIDIsIDI0NSwgNTgsIDQsIAorICAgIDEzNSwgMjQ1LCA1OCwgNCwgMjA3LCAyMDMsIDI0NSwgNTgsIDQsIDIwNCwgMTExLCAyNDUsIDU4LCA0LCAyMDQsIDYyLCAKKyAgICAyNDUsIDU4LCA0LCAyMDQsIDMwLCAyNDUsIDU4LCA0LCAyMDQsIDAsIDI0NSwgNTgsIDQsIDIwMywgMTgyLCAyNDUsIDU4LCAKKyAgICA0LCAyMDMsIDE3NiwgMjQ1LCA1OCwgNCwgMjAyLCAxMTYsIDI0NSwgNTgsIDQsIDIwMiwgMTcsIDIzMSwgNTEsIDI1MCwgCisgICAgMTMwLCAxLCAyNTEsIDI4LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjQ4LCAxMDUsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAKKyAgICAyMzgsIDY3LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjQ0LCAxNzcsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMzcsIDY3LCAKKyAgICAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjA0LCA3MCwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIwMiwgOTUsIDIzMSwgNTEsIAorICAgIDI1MCwgMTMwLCAxLCAyMzcsIDE5LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjA5LCAxMjgsIDIzMSwgNTEsIDI1MCwgMTMwLCAKKyAgICAxLCAyMDIsIDIzNSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIyOSwgMjUwLCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjI4LCAKKyAgICAxOSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIyNCwgMjQ3LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjIxLCA0MCwgMjMxLCAKKyAgICA1MSwgMjUwLCAxMzAsIDEsIDIxNCwgMjQ5LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjUwLCAzLCAyMzEsIDUxLCAyNTAsIAorICAgIDEzMCwgMSwgMjE5LCAzNCwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIxNSwgMjYsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAKKyAgICAyMTcsIDY5LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjE2LCA5MSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIxMiwgMjU1LCAKKyAgICAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjA5LCAyMDEsIDIzMSwgNTEsIDI1MCwgMTMwLCAyMTQsIDE2OCwgNTQsIDIzMSwgNTEsIAorICAgIDI1MCwgMTMwLCA0MiwgMTA1LCAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDEwOCwgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAKKyAgICAxNDcsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMjA5LCAxNTIsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMjA3LCAxNTEsIAorICAgIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMTE4LCAyMzYsIDExLCAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDExOCwgMjA5LCAzNiwgCisgICAgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAyMDksIDE1MywgMjA5LCAzNiwgMjE5LCAxMzQsIDEsIDI1MSwgMjgsIDIxOSwgMTM0LCAKKyAgICAxLCAyNDgsIDEwNSwgMjE5LCAxMzQsIDEsIDIzOCwgNjcsIDIxOSwgMTM0LCAxLCAyNDQsIDE3NywgMjE5LCAxMzQsIDEsIAorICAgIDIzNywgNjcsIDIxOSwgMTM0LCAxLCAyMDQsIDcwLCAyMTksIDEzNCwgMSwgMjAyLCA5NSwgMjE5LCAxMzQsIDEsIDIzNywgCisgICAgMTksIDIxOSwgMTM0LCAxLCAyMDksIDEyOCwgMjE5LCAxMzQsIDEsIDIwMiwgMjM1LCAyMTksIDEzNCwgMSwgMjI5LCAyNTAsIAorICAgIDIxOSwgMTM0LCAxLCAyMjgsIDE5LCAyMTksIDEzNCwgMSwgMjI0LCAyNDcsIDIxOSwgMTM0LCAxLCA0NiwgMjIxLCA0MCwgCisgICAgMjE5LCAxMzQsIDEsIDIyMSwgNDAsIDIxOSwgMTM0LCAxLCAyMTQsIDI0OSwgMjE5LCAxMzQsIDEsIDI1MCwgMywgMjE5LCAKKyAgICAxMzQsIDEsIDIxOSwgMzQsIDIxOSwgMTM0LCAxLCAyMTUsIDI2LCAyMTksIDEzNCwgMSwgMjE3LCA2OSwgMjE5LCAxMzQsIDEsIAorICAgIDIxNiwgOTEsIDIxOSwgMTM0LCAxLCAyMTIsIDI1NSwgMjE5LCAxMzQsIDEsIDIwOSwgMjAxLCAyMTksIDEzNCwgMjI3LCAKKyAgICAyMTcsIDIzOSwgMjEyLCAyMTksIDEzNCwgMjE2LCAxMSwgMjM5LCAyMTIsIDIxOSwgMTM0LCA0MiwgMTA1LCAyMTksIDEzNCwgCisgICAgNDIsIDEwOCwgMjE5LCAxMzQsIDQyLCAxNDcsIDIxOSwgMTM0LCA0MiwgMTQ5LCAyMTksIDEzNCwgNDIsIDE3MCwgMjE5LCAKKyAgICAxMzQsIDQyLCAyMDksIDE1MiwgMjE5LCAxMzQsIDQyLCAyMDcsIDE1MSwgMjIzLCAxMDIsIDEsIDQ2LCAyNTEsIDI4LCAyMjMsIAorICAgIDEwMiwgMSwgMjUxLCAyOCwgMjIzLCAxMDIsIDEsIDQ2LCAyNDgsIDEwNSwgMjIzLCAxMDIsIDEsIDI0OCwgMTA1LCAyMjMsIAorICAgIDEwMiwgMSwgMjM4LCA2NywgMjIzLCAxMDIsIDEsIDI0NCwgMTc3LCAyMjMsIDEwMiwgMSwgNDYsIDIzNywgNjcsIDIyMywgCisgICAgMTAyLCAxLCAyMzcsIDY3LCAyMjMsIDEwMiwgMSwgMjA0LCA3MCwgMjIzLCAxMDIsIDEsIDIwMiwgOTUsIDIyMywgMTAyLCAxLCAKKyAgICAyMzcsIDE5LCAyMjMsIDEwMiwgMSwgMjA5LCAxMjgsIDIyMywgMTAyLCAxLCA0NiwgMjAyLCAyMzUsIDIyMywgMTAyLCAxLCAKKyAgICAyMDIsIDIzNSwgMjIzLCAxMDIsIDEsIDQ2LCAyMjksIDI1MCwgMjIzLCAxMDIsIDEsIDIyOSwgMjUwLCAyMjMsIDEwMiwgMSwgCisgICAgNDYsIDIyOCwgMTksIDIyMywgMTAyLCAxLCAyMjgsIDE5LCAyMjMsIDEwMiwgMSwgNDYsIDIyNCwgMjQ3LCAyMjMsIDEwMiwgCisgICAgMSwgMjI0LCAyNDcsIDIyMywgMTAyLCAxLCA0NiwgMjIxLCA0MCwgMjIzLCAxMDIsIDEsIDIyMSwgNDAsIDIyMywgMTAyLCAxLCAKKyAgICAyMTQsIDI0OSwgMjIzLCAxMDIsIDEsIDI1MCwgMywgMjIzLCAxMDIsIDEsIDIxOSwgMzQsIDIyMywgMTAyLCAxLCAyMTUsIAorICAgIDI2LCAyMjMsIDEwMiwgMSwgMjE3LCA2OSwgMjIzLCAxMDIsIDEsIDIxNiwgOTEsIDIyMywgMTAyLCAxLCA0NiwgMjEyLCAKKyAgICAyNTUsIDIyMywgMTAyLCAxLCAyMTIsIDI1NSwgMjIzLCAxMDIsIDEsIDIwOSwgMjAxLCAyMjMsIDEwMiwgNDIsIDEwNSwgCisgICAgMjIzLCAxMDIsIDQyLCAxMDgsIDIyMywgMTAyLCA0MiwgMTQ3LCAyMjMsIDEwMiwgNDIsIDE0OSwgMjIzLCAxMDIsIDI0NSwgCisgICAgMTE2LCA0MiwgMTQ5LCAyMjMsIDEwMiwgNDIsIDE3MCwgMjIzLCAxMDIsIDQyLCAyMDksIDE1MiwgMjIzLCAxMDIsIDQyLCAKKyAgICAyMDcsIDE1MSwgMjIzLCAxMDIsIDQyLCAxMTgsIDIzNiwgMTEsIDIzNywgNzgsIDEsIDI1MSwgMjgsIDIzNywgNzgsIDEsIAorICAgIDI0OCwgMTA1LCAyMzcsIDc4LCAxLCAyMzgsIDY3LCAyMzcsIDc4LCAxLCAyNDQsIDE3NiwgMjM3LCA3OCwgMSwgMjM3LCA2NywgCisgICAgMjM3LCA3OCwgMSwgMjA0LCA3MCwgMjM3LCA3OCwgMSwgMjAyLCA5NCwgMjM3LCA3OCwgMSwgMjM3LCAxOSwgMjM3LCA3OCwgCisgICAgMSwgMjA5LCAxMjgsIDIzNywgNzgsIDEsIDIwMiwgMjM1LCAyMzcsIDc4LCAxLCAyMjksIDI1MCwgMjM3LCA3OCwgMSwgMjI4LCAKKyAgICAxOSwgMjM3LCA3OCwgMSwgMjI0LCAyNDcsIDIzNywgNzgsIDEsIDIyMSwgNDAsIDIzNywgNzgsIDEsIDIxNCwgMjQ5LCAyMzcsIAorICAgIDc4LCAxLCAyNTAsIDIsIDIzNywgNzgsIDEsIDIxOSwgMzQsIDIzNywgNzgsIDEsIDIxNSwgMjYsIDIzNywgNzgsIDEsIDIxNywgCisgICAgNjksIDIzNywgNzgsIDEsIDIxMiwgMjU1LCAyMzcsIDc4LCAxLCAyMDksIDIwMSwgMjM3LCA3OCwgNDIsIDEwNSwgMjM3LCAKKyAgICA3OCwgNDIsIDE3MCwgMjM3LCA3OCwgNDIsIDIwOSwgMTUyLCAyMzcsIDc4LCA0MiwgMjA3LCAxNTEsIDIzNywgNzgsIDQyLCAKKyAgICAxMTgsIDIzNiwgMTEsIDIxOCwgMTc4LCAxLCAyNTEsIDI1LCAyMTgsIDE3OCwgMSwgMjQ4LCAxMDgsIDIxOCwgMTc4LCAxLCAKKyAgICAyMzgsIDIzNywgMjE4LCAxNzgsIDEsIDI0NCwgMzksIDIxOCwgMTc4LCAxLCAyMzcsIDY3LCAyMTgsIDE3OCwgMSwgMjA0LCAKKyAgICA3NywgMjE4LCAxNzgsIDEsIDIwMiwgMTA5LCAyMTgsIDE3OCwgMSwgMjM3LCAyMSwgMjE4LCAxNzgsIDEsIDIwOSwgMTMyLCAKKyAgICAyMTgsIDE3OCwgMSwgMjAyLCAyMzYsIDIxOCwgMTc4LCAxLCAyMzAsIDIyLCAyMTgsIDE3OCwgMSwgMjI4LCAyNSwgMjE4LCAKKyAgICAxNzgsIDEsIDIyNCwgMjQ3LCAyMTgsIDE3OCwgMSwgMjIxLCA0MCwgMjE4LCAxNzgsIDEsIDIxMywgMTM3LCAyMTgsIDE3OCwgCisgICAgMSwgMjUxLCA1OSwgMjE4LCAxNzgsIDEsIDIxOSwgMzQsIDIxOCwgMTc4LCAxLCAyMTUsIDI3LCAyMTgsIDE3OCwgMSwgMjE3LCAKKyAgICA3NCwgMjE4LCAxNzgsIDEsIDIxNSwgMjAwLCAyMTgsIDE3OCwgMSwgMjEyLCAyNTUsIDIxOCwgMTc4LCAxLCAyMDksIDIwNywgCisgICAgMjE4LCAxNzgsIDQyLCAxMDUsIDIxOCwgMTc4LCA0MiwgMjA5LCAxNTIsIDIxOCwgMTc4LCA0MiwgMjA3LCAxNTEsIDIxOCwgCisgICAgMTc4LCA0MiwgMTE4LCAyMzYsIDExLCAyMTgsIDE3OCwgNDIsIDEwOCwgMjE4LCAxNzgsIDQyLCAxNDcsIDIxOCwgMTc4LCAKKyAgICAyMDMsIDIzOCwgMjEzLCAxMzAsIDIyNiwgMTk2LCAxLCA2MywgMjI2LCAxOTYsIDEsIDI0OSwgMjU1LCAyMjYsIDE5NiwgMSwgCisgICAgMjM5LCA3NSwgMjI2LCAxOTYsIDEsIDI0NSwgNTEsIDIyNiwgMTk2LCAxLCA3NCwgMjI2LCAxOTYsIDEsIDIwNiwgMTY0LCAKKyAgICAyMjYsIDE5NiwgMSwgNzUsIDIyNiwgMTk2LCAxLCAyMDMsIDEyNCwgMjI2LCAxOTYsIDEsIDIzMCwgNTQsIDIyNiwgMTk2LCAKKyAgICAxLCAxNTksIDIyNiwgMTk2LCAxLCAyMjYsIDE4NSwgMjI2LCAxOTYsIDEsIDIyMywgMTYzLCAyMjYsIDE5NiwgMSwgNzgsIAorICAgIDIyNiwgMTk2LCAxLCAxNDYsIDIyNiwgMTk2LCAxLCAyMTEsIDE2NywgMjI2LCAxOTYsIDEsIDIxMCwgNjksIDIyNiwgMTk2LCAKKyAgICAxLCA2OCwgMjI2LCAxOTYsIDEsIDI0MCwgMTc0LCAyMjYsIDE5NiwgMSwgMjE3LCAxMzQsIDIyNiwgMTk2LCAxLCAxOTQsIAorICAgIDIyNiwgMTk2LCAxLCAyMDcsIDI0NCwgMjI2LCAxOTYsIDEsIDI1MCwgMjMxLCAyMjYsIDE5NiwgMSwgMjQxLCA5MiwgMjI2LCAKKyAgICAxOTYsIDEsIDIyNiwgMTk5LCAyMjYsIDE5NiwgMSwgMjIxLCAyMjgsIDIyNiwgMTk2LCAxLCAyNDcsIDEyNSwgMjI2LCAxOTYsIAorICAgIDIwOCwgODIsIDgyLCAxMjksIDIzNiwgMjUzLCAxLCA2MywgMTI5LCAyMzYsIDI1MywgMSwgNzQsIDEyOSwgMjM2LCAyNTMsIAorICAgIDEsIDc1LCAxMjksIDIzNiwgMjUzLCAxLCA3OCwgMTI5LCAyMzYsIDI1MywgMSwgMTk4LCAxMjksIDIzNiwgMjUzLCAxLCAKKyAgICAyMDQsIDExMSwgMTI5LCAyMzYsIDI1MywgMSwgMjQ5LCAzMiwgMTI5LCAyMzYsIDI1MywgMSwgMjQ5LCAzMSwgMTI5LCAyMzYsIAorICAgIDI1MywgMSwgMTg1LCAxMjksIDIzNiwgMjUzLCAxLCAxOTIsIDEyOSwgMjM2LCAyNTMsIDEsIDIwMSwgMjAxLCAxMjksIDIzNiwgCisgICAgMjUzLCAxLCAyMjMsIDExMCwgMTI5LCAyMzYsIDI1MywgMSwgMjIyLCAyNDAsIDEyOSwgMjM2LCAyNTMsIDEsIDIyMiwgMjM5LCAKKyAgICAxMjksIDIzNiwgMjUzLCAxLCAyMTYsIDIyMCwgMTI5LCAyMzYsIDI1MywgMSwgMjE2LCAyMTksIDEyOSwgMjM2LCAyNTMsIDEsIAorICAgIDIyOCwgMTEzLCAxMjksIDIzNiwgMjUzLCAxLCAyMjksIDE0NCwgMTI5LCAyMzYsIDI1MywgMSwgMjM3LCAxMiwgMTI5LCAKKyAgICAyMzYsIDI1MywgMSwgMjE1LCAzNiwgMTI5LCAyMzYsIDI1MywgMSwgMjE1LCAzNSwgMTI5LCAyMzYsIDI1MywgMSwgMjE0LCAKKyAgICAxNzcsIDEyOSwgMjM2LCAyNTMsIDEsIDE3MywgMTI5LCAyMzYsIDI1MywgMSwgMjE3LCAxMjYsIDEyOSwgMjM2LCAyNTMsIDEsIAorICAgIDIxMCwgMjIsIDEyOSwgMjM2LCAyNTMsIDEsIDIxMCwgMjEsIDEyOSwgMjM2LCAyNTMsIDEsIDIwOSwgMTg3LCAxMjksIDIzNiwgCisgICAgMjUzLCAxLCAyMDksIDE4NiwgMTI5LCAyMzYsIDI1MywgMSwgMTM1LCAxMjksIDIzNiwgMjUzLCAxLCAyNDQsIDIxMiwgMTI5LCAKKyAgICAyMzYsIDI1MywgMTYsIDIwNSwgMjI0LCAxMjksIDIzNiwgMjUzLCAxNiwgMjA1LCAyMjMsIDEyOSwgMTkxLCAxLCA2MywgCisgICAgMTI5LCAxOTEsIDEsIDc0LCAxMjksIDE5MSwgMSwgNzUsIDEyOSwgMTkxLCAxLCA3OCwgMTI5LCAxOTEsIDEsIDE5OCwgMTI5LCAKKyAgICAxOTEsIDEsIDIwNCwgMTExLCAxMjksIDE5MSwgMSwgMjQ5LCAzMiwgMTI5LCAxOTEsIDEsIDE4NSwgMTI5LCAxOTEsIDEsIAorICAgIDE5MiwgMTI5LCAxOTEsIDEsIDIwMSwgMjAxLCAxMjksIDE5MSwgMSwgMjIyLCAyNDAsIDEyOSwgMTkxLCAxLCAyMTYsIDIyMCwgCisgICAgMTI5LCAxOTEsIDEsIDIyOCwgMTEzLCAxMjksIDE5MSwgMSwgMjI5LCAxNDQsIDEyOSwgMTkxLCAxLCAyMzcsIDEyLCAxMjksIAorICAgIDE5MSwgMSwgMjE1LCAzNiwgMTI5LCAxOTEsIDEsIDI1MCwgMTI2LCAyMTUsIDM2LCAxMjksIDE5MSwgMSwgMjE0LCAxNzcsIAorICAgIDEyOSwgMTkxLCAxLCAxNzMsIDEyOSwgMTkxLCAxLCAyMTcsIDEyNiwgMTI5LCAxOTEsIDEsIDIxMCwgMjIsIDEyOSwgMTkxLCAKKyAgICAxLCAyMDksIDE4NywgMTI5LCAxOTEsIDEsIDEzNSwgMTI5LCAxOTEsIDEsIDI0NCwgMjEyLCAxMjksIDE5MSwgMjM5LCAxMzgsIAorICAgIDI0MSwgMTEzLCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCAxMjksIDE5MSwgMjI3LCAzNiwgCisgICAgMjE1LCAyMzMsIDEyOSwgMTkxLCAyMjcsIDM2LCAyMzEsIDU2LCAxMjksIDE5MSwgNDIsIDEwNSwgMTI5LCAxOTEsIDQyLCAKKyAgICAxMDgsIDEyOSwgMTkxLCA0MiwgMTQ3LCAxMjksIDE5MSwgNDIsIDE0OSwgMTI5LCAxOTEsIDQyLCAxNzAsIDEyOSwgMTkxLCAKKyAgICA0MiwgMTk1LCAxMjksIDE5MSwgNDIsIDIxMywgMTExLCAxMjksIDE5MSwgNDIsIDE5OSwgMTI5LCAxOTEsIDQyLCAyMjIsIAorICAgIDYzLCAxMjksIDE5MSwgNDIsIDIwOSwgMTUyLCAxMjksIDE5MSwgNDIsIDIwNywgMTUxLCAxMjksIDE5MSwgNDIsIDIwOSwgCisgICAgNTMsIDEyOSwgMTkxLCA0MiwgMjM5LCAxNTMsIDEyOSwgMTkxLCA0MiwgMjQwLCAxOCwgMTI5LCAxOTEsIDQyLCAyMTIsIDc0LCAKKyAgICAxMjksIDE5MSwgNDIsIDIxMywgMTA1LCAxMjksIDE5MSwgNDIsIDExOCwgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAxMjAsIAorICAgIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMTI2LCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDIzOSwgMTQ3LCAyMzYsIDExLCAKKyAgICAxMjksIDE5MSwgNDIsIDIzOSwgMjMzLCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDIxMiwgODgsIDIzNiwgMTEsIDEyOSwgCisgICAgMTkxLCA0MiwgMjEzLCAxMTIsIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMjQxLCAxNDMsIDIzNiwgMTEsIDEyOSwgMTkxLCAKKyAgICA0MiwgMjIyLCA2NCwgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAxMTgsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMTIwLCAyMDksIAorICAgIDM2LCAxMjksIDE5MSwgNDIsIDEyNiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIDE0NywgMjA5LCAzNiwgMTI5LCAKKyAgICAxOTEsIDQyLCAyMzksIDIzMywgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMTIsIDg4LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIAorICAgIDIxMywgMTEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDI0MSwgMTQzLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIyMiwgCisgICAgNjQsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjA5LCAxNTMsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjA3LCAxNTIsIAorICAgIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjA5LCA1NCwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIDE1NCwgMjA5LCAzNiwgCisgICAgMTI5LCAxOTEsIDQyLCAyNDAsIDE5LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIxMiwgNzUsIDIwOSwgMzYsIDEyOSwgMTkxLCAKKyAgICA0MiwgMjEzLCAxMDYsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjQxLCAxMzUsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgCisgICAgMjIyLCA1OSwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAxMTgsIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMTIwLCAKKyAgICAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDEyNiwgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIAorICAgIDE0NywgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIDIzMywgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAKKyAgICAxOTEsIDQyLCAyMTIsIDg4LCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIxMywgMTEyLCAyMzYsIDEyLCAyMDksIAorICAgIDM2LCAxMjksIDE5MSwgNDIsIDI0MSwgMTQzLCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIyMiwgNjQsIDIzNiwgCisgICAgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMTE4LCAyMDcsIDE1NywgMTI5LCAxOTEsIDIzOSwgMTM4LCAxMjAsIAorICAgIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDEyNiwgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMjM5LCAKKyAgICAxNDcsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDIzOSwgMjMzLCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgCisgICAgMTM4LCAyMTIsIDg4LCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAyMTMsIDExMiwgMjA3LCAxNTYsIDEyOSwgMTkxLCAKKyAgICAyMzksIDEzOCwgMjQxLCAxNDMsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDIyMiwgNjQsIDIwNywgMTU2LCAxMjksIAorICAgIDE5MSwgMjM5LCAxMzgsIDIwOSwgMTUzLCAyMDcsIDE1NiwgMjI5LCAxMzEsIDEsIDYzLCAyMjksIDEzMSwgMjIsIDIsIDc1LCAKKyAgICAyMjksIDEzMSwgMjIsIDIsIDY4LCAyMjksIDEzMSwgMjIsIDIsIDEyNSwgMTQ2LCAyMjksIDEzMSwgMjIsIDIsIDc0LCAyMjksIAorICAgIDEzMSwgMjIsIDIsIDc4LCAyMjksIDEzMSwgMjIsIDIyNywgMTk2LCA4MiwgMjI5LCAxMzEsIDIsIDUyLCAyMTUsIDI1MywgCisgICAgNTYsIDIyOSwgMTMxLCAyLCAyNTAsIDE4MCwgMjI5LCAxMzEsIDIsIDIwNSwgMTk5LCAyMjksIDEzMSwgMSwgMTczLCAyMjksIAorICAgIDEzMSwgMSwgMjI5LCAxNDQsIDIyOSwgMTMxLCAxLCAyMzksIDgsIDIyOSwgMTMxLCAxLCAyMzgsIDExOSwgMjI5LCAxMzEsIAorICAgIDEsIDI0NywgOTIsIDIyOSwgMTMxLCAxLCAyNDYsIDE5OSwgMjI5LCAxMzEsIDEsIDIzMCwgMTgxLCAyMjksIDEzMSwgMSwgCisgICAgMjIxLCAxMSwgMjI5LCAxMzEsIDEsIDIwNywgMjQxLCAyMjksIDEzMSwgMSwgMjA3LCAyMjksIDIyOSwgMTMxLCAxLCAyNDQsIAorICAgIDEyMCwgMjI5LCAxMzEsIDEsIDI0NCwgMTA0LCAyMjksIDEzMSwgMSwgMjIxLCAyMjcsIDIyOSwgMTMxLCAxLCAyMTAsIDIyLCAKKyAgICAyMjksIDEzMSwgMSwgMjA5LCAxMDgsIDIyOSwgMTMxLCAxLCAyNDQsIDIxMiwgMjI5LCAxMzEsIDEsIDI0NCwgMSwgMjI5LCAKKyAgICAxMzEsIDEsIDIwMSwgMjAxLCAyMjksIDEzMSwgMSwgMTg1LCAyMjksIDEzMSwgMSwgMjE4LCAyMDgsIDIyOSwgMTMxLCAxLCAKKyAgICAyNDksIDMyLCAyMjksIDEzMSwgMSwgMjQ4LCA5OCwgMjI5LCAxMzEsIDEsIDE5MiwgMjI5LCAxMzEsIDEsIDE5OCwgMjI5LCAKKyAgICAxMzEsIDEsIDIxNiwgMjIwLCAyMjksIDEzMSwgMSwgMjI4LCAxMTMsIDIyOSwgMTMxLCAxLCAyMDYsIDg2LCAyMjksIDEzMSwgCisgICAgMSwgMjEzLCA5MCwgMjI5LCAxMzEsIDEsIDIxMSwgMTY0LCAyMjksIDEzMSwgMSwgMjE1LCAzNiwgMjI5LCAxMzEsIDEsIAorICAgIDIwMiwgMTE2LCAyMjksIDEzMSwgMSwgMTUyLCAyMjksIDEzMSwgMSwgMjI5LCA0NywgMjI5LCAxMzEsIDEsIDIwNywgMjA5LCAKKyAgICAyMjksIDEzMSwgMiwgMjQ4LCAyMzEsIDU1LCAyMjksIDEzMSwgMiwgMjQ3LCAxMywgMjI5LCAxMzEsIDIsIDcwLCA1NiwgCisgICAgMjI5LCAxMzEsIDIwNSwgMjA0LCAyMjksIDEzMSwgMTcsIDEwNSwgMjI5LCAxMzEsIDE3LCAxMDgsIDIyOSwgMTMxLCAxNywgCisgICAgMTQ3LCAyMjksIDEzMSwgMTcsIDE0OSwgMjI5LCAxMzEsIDQyLCAyMDksIDE1MiwgMjI5LCAxMzEsIDQyLCAyMDcsIDE1MSwgCisgICAgMjI5LCAxMzEsIDQyLCAxMTgsIDIzNiwgMTEsIDIyOSwgMTMxLCA0MiwgMTE4LCAyMDksIDM2LCAyMjksIDEzMSwgMjE3LCAKKyAgICAxNzksIDI0MywgODUsIDIyOSwgMTMxLCAyMTcsIDE3OSwgNSwgMjQ2LCA2MSwgMjI5LCAxMzEsIDIxNywgMTc5LCAyNDYsIAorICAgIDYxLCAyMjksIDEzMSwgMjE3LCAxNzksIDI0NSwgMTM5LCAxNDIsIDIyOSwgMTMxLCAyMTcsIDE3OSwgMjI1LCAxMTYsIDIyOSwgCisgICAgMTMxLCAyMTcsIDE3OSwgMjI3LCA1LCAyMjksIDEzMSwgMjE3LCAxNzksIDI0NCwgMTY2LCAyMjksIDEzMSwgMjE3LCAxNzksIAorICAgIDUyLCAyNDQsIDE2NiwgMjI5LCAxMzEsIDIxNywgMTc5LCAyMjcsIDEwOCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCisgICAgMjM3LCA2NywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjI4LCAxOSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCisgICAgMjM3LCAxOSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjI0LCAyNDcsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAorICAgIDIxNywgNjksIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIwNCwgNzAsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAorICAgIDIxMiwgMjU1LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMTYsIDkxLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKKyAgICAyNDgsIDEwNSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjA5LCAyMDEsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAorICAgIDIxNCwgMjI1LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMjksIDI1MCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCisgICAgMjIxLCA0MCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjI5LCAxMjYsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAorICAgIDIxNSwgMjYsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIxNCwgMjQ5LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKKyAgICAyNDAsIDYwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyNTEsIDMwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKKyAgICAyNTAsIDIsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDI0MywgMjU0LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKKyAgICAyMzgsIDY3LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyNDQsIDE3NywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCisgICAgMjM4LCAxMDcsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIwOSwgMTI4LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKKyAgICAyMDIsIDk0LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyNDMsIDI1MSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCisgICAgMjAyLCAyMzUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIwOSwgOTQsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAorICAgIDIwOSwgNzMsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDQyLCAxMDUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDQyLCAKKyAgICAyNDAsIDE4LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxNDEsIDIzMSwgMzEsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzcsIAorICAgIDQzLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjI4LCAyOCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIzNywgMTQ4LCAzOCwgCisgICAgMTUzLCAyNTAsIDE0MSwgMSwgMjI1LCA1LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjE3LCAxMTksIDM4LCAxNTMsIDI1MCwgCisgICAgMTQxLCAxLCAyMDQsIDcwLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQxLCAxNSwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIAorICAgIDIxNiwgMTIyLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQ4LCAxMzgsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDksIDE2OSwgCisgICAgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI0MSwgMTYsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzAsIDIyLCAzOCwgMTUzLCAKKyAgICAyNTAsIDE0MSwgMSwgMjIxLCAxNzgsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMjksIDE0MCwgMzgsIDE1MywgMjUwLCAxNDEsIAorICAgIDEsIDIxNSwgMjgsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNDEsIDE0LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQwLCA0NywgCisgICAgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI1MSwgMzAsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNTEsIDU5LCAzOCwgMTUzLCAKKyAgICAyNTAsIDE0MSwgMSwgMjQ0LCAyMDcsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzgsIDE4MSwgMzgsIDE1MywgMjUwLCAxNDEsIAorICAgIDEsIDI0NCwgMTg0LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjM4LCAxMTQsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDksIAorICAgIDI1MSwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIwMiwgMTA3LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjA5LCAxMDAsIDM4LCAKKyAgICAxNTMsIDI1MCwgMTQxLCAxLCAyMDMsIDQ3LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjA5LCA4OCwgMzgsIDE1MywgMjUwLCAKKyAgICAxNDEsIDEsIDIwMiwgMTEwLCAzOCwgMTUzLCAyNTAsIDE0MSwgNDIsIDEwNSwgMzgsIDE1MywgMjUwLCAxNDEsIDQyLCAyMDksIAorICAgIDE1MiwgMzgsIDE1MywgMjUwLCAxNDEsIDQyLCAyMDcsIDE1MSwgMjI1LCAxMTUsIDEsIDI1MSwgMjgsIDIyNSwgMTE1LCAxLCAKKyAgICAyNDgsIDEwNSwgMjI1LCAxMTUsIDEsIDI0OCwgOTIsIDIyNSwgMTE1LCAxLCAyMzgsIDY3LCAyMjUsIDExNSwgMSwgMjM4LCAKKyAgICA5MiwgMjI1LCAxMTUsIDEsIDI0NCwgMTc3LCAyMjUsIDExNSwgMSwgMjM3LCA2NywgMjI1LCAxMTUsIDEsIDIwNCwgNzAsIAorICAgIDIyNSwgMTE1LCAyLCAyMDcsIDI5LCAyMjUsIDExNSwgMSwgMjAyLCA5NSwgMjI1LCAxMTUsIDEsIDIwMiwgNzMsIDIyNSwgCisgICAgMTE1LCAxLCAyMzAsIDE2MywgMjI1LCAxMTUsIDEsIDIzMCwgMTQ1LCAyMjUsIDExNSwgMSwgMjM3LCAxOSwgMjI1LCAxMTUsIAorICAgIDEsIDIwOSwgMTI4LCAyMjUsIDExNSwgMSwgMjAyLCAyMzUsIDIyNSwgMTE1LCAxLCAyMjksIDI1MCwgMjI1LCAxMTUsIDEsIAorICAgIDIwMywgMTc5LCAyMjUsIDExNSwgMSwgMjI5LCAxMzMsIDIyNSwgMTE1LCAxLCAyMjgsIDE5LCAyMjUsIDExNSwgMSwgMjQzLCAKKyAgICAyNTAsIDIyNSwgMTE1LCAxLCAyMDksIDk5LCAyMjUsIDExNSwgMSwgMjI0LCAyNDcsIDIyNSwgMTE1LCAxLCAyMjEsIDQwLCAKKyAgICAyMjUsIDExNSwgMSwgMjE0LCAyNDksIDIyNSwgMTE1LCAxLCAyNTAsIDMsIDIyNSwgMTE1LCAxLCAyNTEsIDIzNCwgMjI1LCAKKyAgICAxMTUsIDEsIDIxOSwgMzQsIDIyNSwgMTE1LCAxLCAyNDAsIDYwLCAyMjUsIDExNSwgMSwgMjE1LCAyNiwgMjI1LCAxMTUsIDEsIAorICAgIDIxNywgNjksIDIyNSwgMTE1LCAxLCAyMDMsIDE1NywgMjI1LCAxMTUsIDEsIDIxNywgOTUsIDIyNSwgMTE1LCAxLCAyMTYsIAorICAgIDkxLCAyMjUsIDExNSwgMSwgMjEyLCAyNTUsIDIyNSwgMTE1LCAxLCAyMTEsIDEzMywgMjI1LCAxMTUsIDEsIDIwOSwgMjAxLCAKKyAgICAyMjUsIDExNSwgMjUxLCAxNDYsIDEzMSwgNTUsIDIyNSwgMTE1LCAyNTEsIDE0NiwgMTMxLCA1NiwgMjI1LCAxMTUsIDQyLCAKKyAgICAxMDUsIDIyNSwgMTE1LCA0MiwgMTcwLCAyMjUsIDExNSwgNDIsIDIwOSwgMTUyLCAyMjUsIDExNSwgNDIsIDIwNywgMTUxLCAKKyAgICAyMjUsIDExNSwgNDIsIDExOCwgMjM2LCAxMSwgMjI1LCAxMTUsIDIxNywgMTc5LCAyMTEsIDk0LCAyMjUsIDExNSwgMjE3LCAKKyAgICAxNzksIDIzOSwgMjEyLCAyMjUsIDExNSwgMjE3LCAxNzksIDUyLCA3MCwgMjA0LCA1LCAyNDMsIDg1LCAyMjUsIDExNSwgCisgICAgMjE3LCAxNzksIDcwLCAyMDQsIDUsIDI0MywgODUsIDIyNSwgMTE1LCAyMTcsIDE3OSwgMjQzLCA4NSwgMjI1LCAxMTUsIAorICAgIDIxNywgMTc5LCAxMjAsIDI0MywgODMsIDIyNSwgMTE1LCAyMTcsIDE3OSwgMjI3LCAxMTUsIDI0MCwgNywgMjUwLCAxNCwgMSwgCisgICAgNjMsIDI1MCwgMTQsIDEsIDI1MiwgMjUsIDI1MCwgMTQsIDEsIDI1MCwgMTc4LCAyNTAsIDE0LCAxLCAyNTEsIDI0MCwgMjUwLCAKKyAgICAxNCwgMSwgMjUwLCAyMzEsIDI1MCwgMTQsIDEsIDI1MSwgMjQxLCAyNTAsIDE0LCAxLCAyNTEsIDEwOSwgMjUwLCAxNCwgMSwgCisgICAgMjUxLCAxMDUsIDI1MCwgMTQsIDEsIDc0LCAyNTAsIDE0LCAxLCAyNDEsIDE2MSwgMjUwLCAxNCwgMSwgNzgsIDI1MCwgMTQsIAorICAgIDEsIDIyMCwgMTgsIDI1MCwgMTQsIDEsIDc1LCAyNTAsIDE0LCAxLCAyMzEsIDgzLCAyNTAsIDE0LCAxLCA2OCwgMjUwLCAxNCwgCisgICAgMSwgMjA2LCAxNzgsIDI1MCwgMTQsIDEsIDIyOSwgMjAxLCAyNTAsIDE0LCAxLCAyMDMsIDE3NiwgMjUwLCAxNCwgMSwgMjAzLCAKKyAgICAxMzgsIDI1MCwgMTQsIDEsIDIwMywgMTQ4LCAyNTAsIDE0LCAxLCAyMzgsIDE5MCwgMjUwLCAxNCwgMSwgMjM4LCAxNTAsIAorICAgIDI1MCwgMTQsIDEsIDIzOCwgMTA1LCAyNTAsIDE0LCAxLCAyNDYsIDIzOCwgMjUwLCAxNCwgMSwgMjMwLCAxNjEsIDI1MCwgCisgICAgMTQsIDEsIDIwOSwgMTg3LCAyNTAsIDE0LCAxLCAyMDksIDkyLCAyNTAsIDE0LCAxLCAyNDQsIDc1LCAyNTAsIDE0LCAxLCAKKyAgICAyNDMsIDI0OCwgMjUwLCAxNCwgMSwgMjA3LCAyMzYsIDI1MCwgMTQsIDEsIDIxOSwgMzQsIDI1MCwgMTQsIDEsIDI0MCwgNjAsIAorICAgIDI1MCwgMTQsIDEsIDI0OCwgMTYyLCAyNTAsIDE0LCAxLCAyNDgsIDk0LCAyNTAsIDE0LCAxLCAyMjIsIDE5MCwgMjUwLCAxNCwgCisgICAgMSwgMjIyLCAxMDYsIDI1MCwgMTQsIDEsIDIyMiwgMTA3LCAyNTAsIDE0LCAxLCAyMjIsIDI0MCwgMjUwLCAxNCwgMSwgMjIxLCAKKyAgICAxLCAyNTAsIDE0LCAxLCAyMjEsIDIyMiwgMjUwLCAxNCwgMSwgMjI1LCAyMCwgMjUwLCAxNCwgMSwgMjM2LCAxODYsIDI1MCwgCisgICAgMTQsIDEsIDIwMiwgMTY2LCAyNTAsIDE0LCAxLCAyMDMsIDUyLCAyNTAsIDE0LCAxLCAyMDYsIDU1LCAyNTAsIDE0LCAxLCAKKyAgICAyMTYsIDE1OCwgMjUwLCAxNCwgMSwgMjI3LCAyMzQsIDI1MCwgMTQsIDEsIDIxNCwgMTc3LCAyNTAsIDE0LCAxLCAyMDIsIAorICAgIDkyLCAyNTAsIDE0LCAxLCAyMTMsIDQzLCAyNTAsIDE0LCAxLCAyMDIsIDcxLCAyNTAsIDE0LCAxLCAyMTIsIDE2OSwgMjUwLCAKKyAgICAxNCwgMSwgMjExLCAxMzQsIDI1MCwgMTQsIDEsIDIzNywgNjcsIDI1MCwgMTQsIDI1MSwgMTQ2LCA4MiwgMjA4LCAyMTMsIAorICAgIDEyMCwgMTg3LCAxMTUsIDExOCwgNzAsIDIxNywgMTc4LCA1LCAxMjAsIDE4NywgMTE1LCAxMTgsIDcwLCAyMTcsIDE3OCwgCisgICAgMjI4LCA4LCAxMjAsIDE4NywgMTE1LCAxMTgsIDcwLCAyMTcsIDE3OCwgMjI4LCA4LCAxMTgsIDcwLCAxMTUsIDEyMCwgMTg3LCAKKyAgICAyMTcsIDE3OCwgMjI4LCA4LCAxMjAsIDIxNSwgMjUwLCAxMTUsIDExOCwgMjE1LCAyNTMsIDIxNywgMTc4LCAyMjgsIDgsIAorICAgIDExOCwgMjE1LCAyNTMsIDExNSwgMTIwLCAyMTUsIDI1MCwgMjE3LCAxNzgsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDI1MSwgCisgICAgMjgsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDI0OCwgMTA1LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMzgsIDY3LCAyMzEsIDEwLCAKKyAgICAyMTksIDcwLCAxLCAyNDQsIDE3NywgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjM3LCA2NywgMjMxLCAxMCwgMjE5LCA3MCwgMSwgCisgICAgMjA0LCA3MCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjAyLCA5NSwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjM3LCAxOSwgMjMxLCAKKyAgICAxMCwgMjE5LCA3MCwgMSwgMjA5LCAxMjgsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIwMiwgMjM1LCAyMzEsIDEwLCAyMTksIAorICAgIDcwLCAxLCAyMjksIDI1MCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjI4LCAxOSwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjI0LCAKKyAgICAyNDcsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIyMSwgNDAsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxNCwgMjQ5LCAyMzEsIAorICAgIDEwLCAyMTksIDcwLCAxLCAyNTAsIDMsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxOSwgMzQsIDIzMSwgMTAsIDIxOSwgNzAsIAorICAgIDEsIDIxNSwgMjYsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxNywgNjksIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxNiwgOTEsIAorICAgIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxMiwgMjU1LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMDksIDIwMSwgMjMxLCAxMCwgCisgICAgMjE5LCA3MCwgNDIsIDEwNSwgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDEwOCwgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDE0NywgCisgICAgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDE0OSwgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDIwOSwgMTUyLCAyMzEsIDEwLCAyMTksIAorICAgIDcwLCA0MiwgMjA3LCAxNTEsIDIzMSwgMTAsIDIxOSwgNzAsIDQyLCAxMTgsIDIzNiwgMTEsIDIzMSwgMTAsIDIxOSwgNzAsIAorICAgIDQyLCAxMTgsIDIwOSwgMzYsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyNTEsIDI4LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgCisgICAgMjQ4LCAxMDUsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMzgsIDY3LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjQ0LCAxNzcsIAorICAgIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMzcsIDY3LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjA0LCA2OSwgMjMxLCAxMCwgCisgICAgMjE5LCAxNDksIDEsIDIwMiwgOTUsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMzcsIDE5LCAyMzEsIDEwLCAyMTksIDE0OSwgCisgICAgMSwgMjA5LCAxMjgsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMDIsIDIzNSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIyOSwgCisgICAgMjUwLCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjI4LCAxOSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIyNCwgMjQ2LCAyMzEsIAorICAgIDEwLCAyMTksIDE0OSwgMSwgMjIxLCA0MCwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIxNCwgMjQ5LCAyMzEsIDEwLCAyMTksIAorICAgIDE0OSwgMSwgMjE5LCAzNCwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIxNSwgMjYsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAKKyAgICAyMTIsIDI1NSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIwOSwgMjAxLCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIDEwNSwgCisgICAgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAxMDgsIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgMTQ3LCAyMzEsIDEwLCAyMTksIAorICAgIDE0OSwgNDIsIDE0OSwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAyMDksIDE1MiwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAKKyAgICAyMDcsIDE1MSwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAxMTgsIDIzNiwgMTEsIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgCisgICAgMTE4LCAyMDksIDM2LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDI1MSwgMjgsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjQ4LCAKKyAgICAxMDUsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjM4LCA2NywgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyNDQsIDE3NywgCisgICAgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMzcsIDY3LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIwNCwgNjksIDIxNywgMjAzLCAKKyAgICAyMTksIDE0OSwgMSwgMjAyLCA5NSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMzcsIDE5LCAyMTcsIDIwMywgMjE5LCAxNDksIAorICAgIDEsIDIwMiwgMjM1LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIyOSwgMjUwLCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIyOCwgCisgICAgMTksIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjI0LCAyNDYsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjIxLCA0MCwgMjE3LCAKKyAgICAyMDMsIDIxOSwgMTQ5LCAxLCAyMTQsIDI0OSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMTksIDM0LCAyMTcsIDIwMywgCisgICAgMjE5LCAxNDksIDEsIDIxNSwgMjYsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjEyLCAyNTUsIDIxNywgMjAzLCAyMTksIAorICAgIDE0OSwgMSwgMjA5LCAyMDEsIDIxNywgMjAzLCAyMTksIDE0OSwgMjE0LCAxNjgsIDgyLCAyMTcsIDIwMywgMjE5LCAxNDksIAorICAgIDIwNywgMTc0LCAyMTQsIDE2OCwgODIsIDIxNywgMjAzLCAyMTksIDE0OSwgMjM5LCAxNDcsIDE4NywgMywgMjQ1LCAxMzAsIAorICAgIDIxNywgMjAzLCAyMTksIDE0OSwgMjM5LCAxNDcsIDE4NywgMywgMjQzLCA4NSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCA0MiwgCisgICAgMTA1LCAyMTcsIDIwMywgMjE5LCAxNDksIDQyLCAxMDgsIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIDE0NywgMjE3LCAyMDMsIAorICAgIDIxOSwgMTQ5LCA0MiwgMTQ5LCAyMTcsIDIwMywgMjE5LCAxNDksIDQyLCAyMDksIDE1MiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAKKyAgICA0MiwgMjA3LCAxNTEsIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIDExOCwgMjM2LCAxMSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIAorICAgIDIzNSwgNjMsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgNjMsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAKKyAgICAxMDksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDc1LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDc1LCAzOCwgCisgICAgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDc0LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCA3OCwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMTksIDIzNSwgMjIwLCA3MywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyMjAsIDczLCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIxOSwgMjM1LCAyNTEsIDIzMiwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDIzMiwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMTksIDIzNSwgMjUxLCAxMDgsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAxMDgsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjE5LCAyMzUsIDI1MSwgODEsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCA4MSwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMTksIDIzNSwgMjUxLCAxMDMsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAxMDMsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjE5LCAyMzUsIDI1MSwgMTIyLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgMTIyLCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIxOSwgMjM1LCAyNTEsIDEwNywgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQwLCAxODEsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjAzLCA0MCwgMjQwLCAxODEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MCwgOCwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMDMsIDQwLCAyNTAsIDgsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MSwgOTAsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjAzLCA0MCwgMjUxLCA5MCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCAxMDEsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjAzLCA0MCwgMjUxLCAxMDEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDIyMCwgNzEsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjAzLCA0MCwgMjIwLCA3MSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCAzOSwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMDMsIDQwLCAyNTEsIDM5LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDEwMCwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMTksIDIzNSwgMjQxLCAxMDYsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgMTAzLCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIxOSwgMjM1LCAyNTAsIDIzMSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCA5OCwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMDMsIDQwLCAyNTEsIDk4LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDEsIDcwLCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIwMywgNDAsIDI0MSwgNzAsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgODksIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjAzLCA0MCwgMjQxLCA4OSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQxLCA1NiwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMDMsIDQwLCAyNDEsIDU2LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MCwgMjIzLCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIxOSwgMjM1LCAyNDEsIDc4LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgOTcsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjE5LCAyMzUsIDI0MSwgNDYsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDIyMCwgOSwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMTksIDIzNSwgMjM1LCAxNjQsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgMTY5LCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIwMywgNDAsIDI0MSwgMTY5LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTAsIDE0OCwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMDMsIDQwLCAyNTAsIDE0OCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjMwLCAyMjYsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjAzLCA0MCwgMjMwLCAyMjYsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDIxOSwgMjQ2LCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIwMywgNDAsIDIxOSwgMjQ2LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTAsIDE0NCwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMDMsIDQwLCAyNTAsIDE0NCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCA5NiwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMTksIDIzNSwgMjUwLCA4MSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCA5NCwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMTksIDIzNSwgMjUwLCA3NSwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTAsIDc1LCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIxOSwgMjM1LCAyNDEsIDcsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjQxLCA3LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgCisgICAgMjM1LCAyNTAsIDQ5LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MCwgNDksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAKKyAgICAyMzUsIDI1MSwgOTEsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCA5MSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIAorICAgIDIzNSwgMjE5LCAyMjQsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0OCwgMjE1LCAzOCwgMTQ1LCA2LCAxLCA2MywgCisgICAgMzgsIDE0NSwgNiwgMSwgMjUyLCAyNSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNzEsIDM4LCAxNDUsIDYsIDEsIDI1MCwgMjQyLCAKKyAgICAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE2OSwgMzgsIDE0NSwgNiwgMSwgMjQxLCA4OSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNjYsIAorICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTY1LCAzOCwgMTQ1LCA2LCAxLCAyNTAsIDIyNiwgMzgsIDE0NSwgNiwgMSwgNzQsIDM4LCAKKyAgICAxNDUsIDYsIDEsIDI0NiwgMTcsIDc0LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE2MSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNTQsIAorICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTUzLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE1MCwgMzgsIDE0NSwgNiwgMSwgMjQxLCAKKyAgICAxNDcsIDM4LCAxNDUsIDYsIDEsIDc1LCAzOCwgMTQ1LCA2LCAxLCAyMzEsIDgzLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDEzMiwgCisgICAgMzgsIDE0NSwgNiwgMSwgMjQxLCAxMjksIDM4LCAxNDUsIDYsIDEsIDI1MSwgNDcsIDM4LCAxNDUsIDYsIDEsIDIwNiwgMjMyLCAKKyAgICAzOCwgMTQ1LCA2LCAxLCAyNDEsIDEyMiwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxMDUsIDM4LCAxNDUsIDYsIDEsIDI0MSwgCisgICAgMTAzLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDkyLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDU2LCAzOCwgMTQ1LCA2LCAxLCA3OCwgCisgICAgMzgsIDE0NSwgNiwgMSwgMjIwLCAxOCwgMzgsIDE0NSwgNiwgMSwgMjIyLCA3MSwgMjIwLCA3MywgMzgsIDE0NSwgNiwgMSwgCisgICAgMjE1LCAxNDEsIDIyMCwgNzMsIDM4LCAxNDUsIDYsIDEsIDIyMCwgNzIsIDM4LCAxNDUsIDYsIDEsIDI0MSwgNDYsIDM4LCAKKyAgICAxNDUsIDYsIDEsIDI0MSwgOTcsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMjgsIDM4LCAxNDUsIDYsIDEsIDIxMiwgMjI4LCAyNDEsIAorICAgIDI4LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE3LCAzOCwgMTQ1LCA2LCAxLCAyNDAsIDI1MiwgMzgsIDE0NSwgNiwgMSwgMjQwLCAKKyAgICAyNTAsIDM4LCAxNDUsIDYsIDEsIDI0MSwgNzAsIDM4LCAxNDUsIDYsIDEsIDI0MCwgMjM5LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIAorICAgIDE2NywgMzgsIDE0NSwgNiwgMSwgNjgsIDM4LCAxNDUsIDYsIDEsIDIwNiwgMTc4LCAzOCwgMTQ1LCA2LCAxLCAyMjIsIDcxLCAKKyAgICAyMDcsIDI0LCAzOCwgMTQ1LCA2LCAxLCAyMTUsIDE0MSwgMjA3LCAyNCwgMzgsIDE0NSwgNiwgMSwgMjQwLCAyMjYsIDM4LCAKKyAgICAxNDUsIDYsIDEsIDI0MCwgMTgxLCAzOCwgMTQ1LCA2LCAxLCAyNDAsIDE3NiwgMzgsIDE0NSwgNiwgMSwgMjQxLCA2OSwgNTQsIAorICAgIDM4LCAxNDUsIDYsIDEsIDIwNiwgMTkzLCAzOCwgMTQ1LCA1LCAxLCA2MywgMzgsIDE0NSwgNSwgMSwgMjUyLCAyNSwgMzgsIAorICAgIDE0NSwgNSwgMSwgMjQxLCAxNzEsIDM4LCAxNDUsIDUsIDEsIDI1MCwgMjQyLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2OSwgCisgICAgMzgsIDE0NSwgNSwgMSwgMjQxLCA4OSwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNjYsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTY1LCAKKyAgICAzOCwgMTQ1LCA1LCAxLCAyNTAsIDIyNiwgMzgsIDE0NSwgNSwgMSwgNzQsIDM4LCAxNDUsIDUsIDEsIDI0NiwgMTcsIDc0LCAKKyAgICAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2MSwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNTQsIDM4LCAxNDUsIDUsIDEsIDI0MSwgCisgICAgMTUzLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE1MCwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNDcsIDM4LCAxNDUsIDUsIDEsIDc1LCAKKyAgICAzOCwgMTQ1LCA1LCAxLCAyMzEsIDgzLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEzMiwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxMjksIAorICAgIDM4LCAxNDUsIDUsIDEsIDI1MSwgNDcsIDM4LCAxNDUsIDUsIDEsIDIwNiwgMjMyLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEyMiwgCisgICAgMzgsIDE0NSwgNSwgMSwgMjQxLCAxMDUsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTAzLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDkyLCAKKyAgICAzOCwgMTQ1LCA1LCAxLCAyNDEsIDU2LCAzOCwgMTQ1LCA1LCAxLCA3OCwgMzgsIDE0NSwgNSwgMSwgMjIwLCAxOCwgMzgsIAorICAgIDE0NSwgNSwgMSwgMjIyLCA3MSwgMjIwLCA3MywgMzgsIDE0NSwgNSwgMSwgMjE1LCAxNDEsIDIyMCwgNzMsIDM4LCAxNDUsIAorICAgIDUsIDEsIDIyMCwgNzIsIDM4LCAxNDUsIDUsIDEsIDI0MSwgNDYsIDM4LCAxNDUsIDUsIDEsIDI0MSwgOTcsIDM4LCAxNDUsIAorICAgIDUsIDEsIDI0MSwgMjgsIDM4LCAxNDUsIDUsIDEsIDIxMiwgMjI4LCAyNDEsIDI4LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE3LCAKKyAgICAzOCwgMTQ1LCA1LCAxLCAyNDAsIDI1MiwgMzgsIDE0NSwgNSwgMSwgMjQwLCAyNTAsIDM4LCAxNDUsIDUsIDEsIDI0MSwgNzAsIAorICAgIDM4LCAxNDUsIDUsIDEsIDI0MCwgMjM5LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2NywgMzgsIDE0NSwgNSwgMSwgNjgsIDM4LCAKKyAgICAxNDUsIDUsIDEsIDIwNiwgMTc4LCAzOCwgMTQ1LCA1LCAxLCAyMjIsIDcxLCAyMDcsIDI0LCAzOCwgMTQ1LCA1LCAxLCAyMTUsIAorICAgIDE0MSwgMjA3LCAyNCwgMzgsIDE0NSwgNSwgMSwgMjQwLCAyMjYsIDM4LCAxNDUsIDUsIDEsIDI0MCwgMTgxLCAzOCwgMTQ1LCAKKyAgICA1LCAxLCAyNDAsIDE3NiwgMzgsIDE0NSwgNSwgMSwgMjQxLCA2OSwgNTQsIDM4LCAxNDUsIDUsIDEsIDIwNiwgMTkzLCAzOCwgCisgICAgMTQ1LCA0MiwgMTA1LCAzOCwgMTQ1LCA0MiwgMTcwLCAzOCwgMTQ1LCA0MiwgMjA5LCAxNTIsIDM4LCAxNDUsIDQyLCAyNDAsIAorICAgIDE4LCAzOCwgMTQ1LCA0MiwgMTE4LCAyMzYsIDExLCAzOCwgMTQ1LCA0MiwgMTE4LCAyMDksIDM2LCAyMTUsIDEyOSwgMTcsIAorICAgIDEwNSwgMjE1LCAxMjksIDE3LCAxMDgsIDIxNSwgMTI5LCAxNywgMTQ3LCAyMTUsIDEyOSwgMTcsIDE0OSwgMjE1LCAxMjksIAorICAgIDE3LCAxNzAsIDIxNSwgMTI5LCAxNywgMTk1LCAyMTUsIDEyOSwgMTcsIDIxMywgMTExLCAyMTUsIDEyOSwgMTcsIDE5OSwgCisgICAgMjE1LCAxMjksIDE3LCAyMjIsIDYzLCAyMTUsIDEyOSwgNDIsIDIwOSwgMTUyLCAyMTUsIDEyOSwgNDIsIDIwNywgMTUxLCAKKyAgICAyMTUsIDEyOSwgNDIsIDIwOSwgNTMsIDIxNSwgMTI5LCA0MiwgMjM5LCAxNTMsIDIxNSwgMTI5LCA0MiwgMjQwLCAxOCwgCisgICAgMjE1LCAxMjksIDQyLCAyMTIsIDc0LCAyMTUsIDEyOSwgNDIsIDIxMywgMTA1LCAyMTUsIDEyOSwgNDIsIDI0MSwgMTM0LCAKKyAgICAyMTUsIDEyOSwgNDIsIDIyMiwgNTgsIDIxNSwgMTI5LCA0MiwgMTE4LCAyMzYsIDExLCAyMTUsIDEyOSwgNDIsIDEyMCwgCisgICAgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAxMjYsIDIzNiwgMTEsIDIxNSwgMTI5LCA0MiwgMjM5LCAxNDcsIDIzNiwgMTEsIAorICAgIDIxNSwgMTI5LCA0MiwgMjM5LCAyMzMsIDIzNiwgMTEsIDIxNSwgMTI5LCA0MiwgMjEyLCA4OCwgMjM2LCAxMSwgMjE1LCAKKyAgICAxMjksIDQyLCAyMTMsIDExMiwgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAyNDEsIDE0MywgMjM2LCAxMSwgMjE1LCAxMjksIAorICAgIDQyLCAyMjIsIDY0LCAyMzYsIDExLCAyMTUsIDEyOSwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDIxNSwgMTI5LCAyMzksIAorICAgIDEzOCwgMTE4LCAyMTcsIDU1LCAyMTUsIDEyOSwgMjM5LCAxMzgsIDExOCwgMjA5LCA2MCwgMjE1LCAxMjksIDIzOSwgMTM4LCAKKyAgICAxMjAsIDIwOSwgNTcsIDE0NCwgMiwgMjQ3LCA1MiwgMTQ0LCAyLCAyNTAsIDE4MCwgMTQ0LCAyLCAyMDUsIDE5OSwgMTQ0LCAKKyAgICAyLCAyMzAsIDEzNSwgMTQ0LCAyLCAyMDYsIDIyMiwgMTQ0LCAxLCA2MywgMTQ0LCAxLCAyNTIsIDI1LCAxNDQsIDEsIDc1LCAKKyAgICAxNDQsIDEsIDIzMSwgODMsIDE0NCwgMSwgNjgsIDE0NCwgMSwgMjA2LCAxNzgsIDE0NCwgMSwgMTI1LCAxNDYsIDE0NCwgMSwgCisgICAgMTI1LCAyMTUsIDE4NiwgMTQ0LCAxLCAxMjUsIDE1OSwgMTQ0LCAxLCAxMjUsIDIyNywgNzgsIDE0NCwgMSwgNzQsIDE0NCwgCisgICAgMSwgMjUxLCA2NCwgMTQ0LCAxLCA3OCwgMTQ0LCAxLCAyNTAsIDM0LCAxNDQsIDEsIDE3MywgMTQ0LCAxLCAyMjksIDE0NCwgCisgICAgMTQ0LCAxLCAyMzksIDgsIDE0NCwgMSwgMjM4LCAxMTksIDE0NCwgMSwgMjIyLCAyMDMsIDE0NCwgMSwgMjQ3LCA5MiwgMTQ0LCAKKyAgICAxLCAyNDYsIDE5OSwgMTQ0LCAxLCAyMzAsIDE4MSwgMTQ0LCAxLCAyMzAsIDE0OSwgMTQ0LCAxLCAyMjEsIDExLCAxNDQsIDEsIAorICAgIDIwNywgMjQxLCAxNDQsIDEsIDIwNywgMjI5LCAxNDQsIDEsIDI0NCwgMTIwLCAxNDQsIDEsIDI0NCwgMTA0LCAxNDQsIDEsIAorICAgIDIyMSwgMjI3LCAxNDQsIDEsIDIxMCwgMjIsIDE0NCwgMSwgMjA5LCAxMDgsIDE0NCwgMSwgMjQ0LCAyMTIsIDE0NCwgMSwgCisgICAgMjQ0LCAxLCAxNDQsIDEsIDIwMSwgMjAxLCAxNDQsIDEsIDE4NSwgMTQ0LCAxLCAyMTgsIDIwOCwgMTQ0LCAxLCAyNDksIDMyLCAKKyAgICAxNDQsIDEsIDI0OCwgOTgsIDE0NCwgMSwgMTkyLCAxNDQsIDEsIDE5OCwgMTQ0LCAxLCAyMTYsIDIyMCwgMTQ0LCAxLCAyMjgsIAorICAgIDExMywgMTQ0LCAxLCAyMDYsIDg2LCAxNDQsIDEsIDIxMywgOTAsIDE0NCwgMSwgMjExLCAxNjQsIDE0NCwgMSwgMjE1LCAzNiwgCisgICAgMTQ0LCAxLCAxNTIsIDE0NCwgMSwgMjI3LCA3NywgMTQ0LCAxLCAzOCwgNDQsIDIyNywgNjgsIDE0NCwgMSwgMzgsIDQ0LCAKKyAgICAyMTUsIDE4NSwgMTQ0LCAxLCAzOCwgNDQsIDIyMSwgMjA5LCAxNDQsIDIyLCAyLCAyNTIsIDI1LCAxNDQsIDIyLCAyLCAyNDgsIAorICAgIDk1LCAyNTIsIDI1LCAxNDQsIDIyLCAyLCA3NSwgMTQ0LCAyMiwgMiwgMjMxLCA4MywgMTQ0LCAyMiwgMiwgNjgsIDE0NCwgCisgICAgMjIsIDIsIDIwNiwgMTc4LCAxNDQsIDIyLCAyLCAxMjUsIDE0NiwgMTQ0LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTQ0LCAKKyAgICAyMiwgMiwgMTI1LCAxNTksIDE0NCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTQ0LCAyMiwgMiwgNzQsIDE0NCwgMjIsIDIsIAorICAgIDI1MSwgNjQsIDE0NCwgMjIsIDIsIDc4LCAxNDQsIDIyLCAyLCAyNTAsIDM0LCAxNDQsIDIwNSwgMjA0LCAxNDQsIDI0NCwgCisgICAgMTY2LCAxNDQsIDUyLCAyNDQsIDE2NiwgMTQ0LCAyMTcsIDE3OSwgMjQzLCA4NSwgMTQ0LCAyMTcsIDE3OSwgNTIsIDI0MywgCisgICAgODUsIDE0NCwgMjE3LCAxNzksIDIyNywgMTE0LCAxNDQsIDIxNywgMTc5LCAyNDUsIDEzOSwgMTQyLCAxNDQsIDIxNywgMTc5LCAKKyAgICAyMjcsIDUsIDE0NCwgNDIsIDEwNSwgMTQ0LCA0MiwgMTA4LCAxNDQsIDQyLCAxNDcsIDE0NCwgNDIsIDE0OSwgMTQ0LCA0MiwgCisgICAgMTcwLCAxNDQsIDQyLCAxOTUsIDE0NCwgNDIsIDIxMywgMTExLCAxNDQsIDQyLCAxOTksIDE0NCwgNDIsIDIyMiwgNjMsIAorICAgIDE0NCwgNDIsIDIwOSwgMTUyLCAxNDQsIDQyLCAyMDcsIDE1MSwgMTQ0LCA0MiwgMjA5LCA1MywgMTQ0LCA0MiwgMjM5LCAKKyAgICAxNTMsIDE0NCwgNDIsIDI0MCwgMTgsIDE0NCwgNDIsIDIxMiwgNzQsIDE0NCwgNDIsIDIxMywgMTA1LCAxNDQsIDQyLCAyNDEsIAorICAgIDEzNCwgMTQ0LCA0MiwgMjIyLCA1OCwgMTQ0LCA0MiwgMTE4LCAyMzYsIDExLCAxNDQsIDQyLCAxMTgsIDIwOSwgMzYsIDE0NCwgCisgICAgMTcsIDIwMiwgODQsIDE0NCwgMTcsIDEwNSwgMTQ0LCAxNywgMTA4LCAxNDQsIDE3LCAxNDcsIDE0NCwgMTcsIDE0OSwgMTQ0LCAKKyAgICAxNywgMTcwLCAxNDQsIDE3LCAxOTUsIDE0NCwgMTcsIDIxMywgMTExLCAxNDQsIDE3LCAxOTksIDE0NCwgMTcsIDIyMiwgNjMsIAorICAgIDE0NCwgNDIsIDIzMCwgOTYsIDIzMCwgMTUsIDIsIDI0NywgNTIsIDIzMCwgMTUsIDIsIDI1MCwgMTgwLCAyMzAsIDE1LCAyLCAKKyAgICAyMDUsIDE5OSwgMjMwLCAxNSwgMSwgNjMsIDIzMCwgMTUsIDEsIDI1MiwgMjUsIDIzMCwgMTUsIDEsIDc1LCAyMzAsIDE1LCAKKyAgICAxLCAyMzEsIDgzLCAyMzAsIDE1LCAxLCA2OCwgMjMwLCAxNSwgMSwgMjA2LCAxNzgsIDIzMCwgMTUsIDEsIDc0LCAyMzAsIAorICAgIDE1LCAxLCAyNTEsIDY0LCAyMzAsIDE1LCAxLCA3OCwgMjMwLCAxNSwgMSwgMjUwLCAzNCwgMjMwLCAxNSwgMSwgMTczLCAKKyAgICAyMzAsIDE1LCAxLCAyMjksIDE0NCwgMjMwLCAxNSwgMSwgMjM5LCA4LCAyMzAsIDE1LCAxLCAyMzgsIDExOSwgMjMwLCAxNSwgCisgICAgMSwgMjIyLCAyMDMsIDIzMCwgMTUsIDEsIDI0NywgOTIsIDIzMCwgMTUsIDEsIDI0NiwgMTk5LCAyMzAsIDE1LCAxLCAyMzAsIAorICAgIDE4MSwgMjMwLCAxNSwgMSwgMjMwLCAxNDksIDIzMCwgMTUsIDEsIDIyMSwgMTEsIDIzMCwgMTUsIDEsIDIwNywgMjQxLCAKKyAgICAyMzAsIDE1LCAxLCAyMDcsIDIyOSwgMjMwLCAxNSwgMSwgMjQ0LCAxMjAsIDIzMCwgMTUsIDEsIDI0NCwgMTA5LCAyMzAsIAorICAgIDE1LCAxLCAyNDQsIDEwNCwgMjMwLCAxNSwgMSwgMjE2LCA2MSwgMjMwLCAxNSwgMSwgMjIxLCAyMjcsIDIzMCwgMTUsIDEsIAorICAgIDIxMCwgMjIsIDIzMCwgMTUsIDEsIDIwOSwgMTA4LCAyMzAsIDE1LCAxLCAyNDQsIDIxMiwgMjMwLCAxNSwgMSwgMjQ0LCAxLCAKKyAgICAyMzAsIDE1LCAxLCAyMDEsIDIwMSwgMjMwLCAxNSwgMSwgMTg1LCAyMzAsIDE1LCAxLCAyMTgsIDIwOCwgMjMwLCAxNSwgMSwgCisgICAgMjQ5LCAzMiwgMjMwLCAxNSwgMSwgMjQ4LCA5OCwgMjMwLCAxNSwgMSwgMTkyLCAyMzAsIDE1LCAxLCAxOTgsIDIzMCwgMTUsIAorICAgIDEsIDIxNiwgMjIwLCAyMzAsIDE1LCAxLCAyMjgsIDExMywgMjMwLCAxNSwgMSwgMjA2LCA4NiwgMjMwLCAxNSwgMSwgMjEzLCAKKyAgICA5MCwgMjMwLCAxNSwgMSwgMjExLCAxNjQsIDIzMCwgMTUsIDEsIDIxNSwgMzYsIDIzMCwgMTUsIDEsIDE1MiwgMjMwLCAxNSwgCisgICAgMjIsIDIsIDI1MiwgMjUsIDIzMCwgMTUsIDIyLCAyLCA3NSwgMjMwLCAxNSwgMjIsIDIsIDIzMSwgODMsIDIzMCwgMTUsIDIyLCAKKyAgICAyLCA2OCwgMjMwLCAxNSwgMjIsIDIsIDIwNiwgMTc4LCAyMzAsIDE1LCAyMiwgMiwgNzQsIDIzMCwgMTUsIDIyLCAyLCAyNTEsIAorICAgIDY0LCAyMzAsIDE1LCAyMiwgMiwgNzgsIDIzMCwgMTUsIDIyLCAyLCAyNTAsIDM0LCAyMzAsIDE1LCAyLCAyMDUsIDIwNCwgCisgICAgMjMwLCAxNSwgMiwgMjIxLCA1MSwgMjMwLCAxNSwgMjUxLCAxNDYsIDU0LCAyMzAsIDE1LCAyNDEsIDU5LCA1NCwgMjMwLCAKKyAgICAxNSwgNDIsIDU0LCAyMzAsIDE1LCAyMTQsIDE2OCwgODIsIDIzMCwgMTUsIDUyLCAyMTQsIDE2OCwgODIsIDIzMCwgMTUsIAorICAgIDI0NCwgMTY2LCAyMzAsIDE1LCA1MiwgMjQ0LCAxNjYsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjE1LCAxOSwgMjExLCAKKyAgICAyNDYsIDIxMSwgMjU0LCAxLCAyMDksIDI1MSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyNDksIDUsIDIxMSwgMjQ2LCAyMTEsIAorICAgIDI1NCwgMSwgMjQ3LCA4MSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyNDQsIDE5MywgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAKKyAgICAyMzgsIDI0OSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjUsIDE0OCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjIsIAorICAgIDIwMCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjgsIDg5LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyMywgOTMsIDIxMSwgCisgICAgMjQ2LCAyMTEsIDI1NCwgMSwgMjA2LCA4MiwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMTksIDE1MCwgMjExLCAyNDYsIAorICAgIDIxMSwgMjU0LCAxLCAyMDMsIDkxLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIxNiwgMTk5LCAyMTEsIDI0NiwgMjExLCAKKyAgICAyNTQsIDEsIDIzNywgMTQ4LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIzMCwgMjAsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgCisgICAgMjMwLCAxNzUsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjIxLCA4LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDI1MSwgNzMsIAorICAgIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjQxLCAxNTksIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjMxLCA4NCwgMjExLCAKKyAgICAyNDYsIDIxMSwgMjU0LCAxLCAyMDcsIDE4LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyMCwgNjAsIDIxMSwgMjQ2LCAyMTEsIAorICAgIDI1NCwgMSwgMjQxLCAxNDcsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjI1LCAxNjEsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgCisgICAgMTcsIDIwMiwgODQsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDEwNSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMTA4LCAKKyAgICAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxNDcsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDE0OSwgMjExLCAyNDYsIDIxMSwgCisgICAgMjU0LCAxNywgMTcwLCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxOTUsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDIxMywgCisgICAgMTExLCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxOTksIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDIyMiwgNjMsIDI0NiwgCisgICAgMTkzLCAyLCAyNDcsIDUyLCAyNDYsIDE5MywgMiwgMjUwLCAxODAsIDI0NiwgMTkzLCAyLCAyMDUsIDE5OSwgMjQ2LCAxOTMsIAorICAgIDEsIDI1MiwgMjUsIDI0NiwgMTkzLCAxLCA3NSwgMjQ2LCAxOTMsIDEsIDY4LCAyNDYsIDE5MywgMSwgNzQsIDI0NiwgMTkzLCAKKyAgICAxLCAyMzAsIDQxLCAyNDYsIDE5MywgMSwgMjI5LCAxNDMsIDI0NiwgMTkzLCAxLCAyMzksIDUsIDI0NiwgMTkzLCAxLCAyMzgsIAorICAgIDExOCwgMjQ2LCAxOTMsIDEsIDIyMiwgMjAyLCAyNDYsIDE5MywgMSwgMjQ3LCA5MSwgMjQ2LCAxOTMsIDEsIDI0NiwgMTk4LCAKKyAgICAyNDYsIDE5MywgMSwgMjMwLCAxODAsIDI0NiwgMTkzLCAxLCAyMzAsIDE0OCwgMjQ2LCAxOTMsIDEsIDIyMSwgMTAsIDI0NiwgCisgICAgMTkzLCAxLCAyMDcsIDI0MCwgMjQ2LCAxOTMsIDEsIDIwNywgMjI4LCAyNDYsIDE5MywgMSwgMjQ0LCAxMTksIDI0NiwgMTkzLCAKKyAgICAxLCAyNDQsIDEwMywgMjQ2LCAxOTMsIDEsIDIyMSwgMjI2LCAyNDYsIDE5MywgMSwgMjEwLCAxOCwgMjQ2LCAxOTMsIDEsIAorICAgIDIwOSwgMTA3LCAyNDYsIDE5MywgMSwgMjQ0LCAyMTEsIDI0NiwgMTkzLCAxLCAyNDQsIDAsIDI0NiwgMTkzLCAxLCAyMjMsIAorICAgIDEwNiwgMjQ2LCAxOTMsIDEsIDIxOSwgMTY4LCAyNDYsIDE5MywgMSwgMjE4LCAyMDcsIDI0NiwgMTkzLCAxLCAyNDksIDMwLCAKKyAgICAyNDYsIDE5MywgMSwgMjQ4LCA5NywgMjQ2LCAxOTMsIDEsIDIyNSwgMTc1LCAyNDYsIDE5MywgMSwgMjAyLCAxNjcsIDI0NiwgCisgICAgMTkzLCAxLCAyMDMsIDExMCwgMjQ2LCAxOTMsIDEsIDIxNiwgMjE2LCAyNDYsIDE5MywgMSwgMjI4LCAxMTIsIDI0NiwgMTkzLCAKKyAgICAxLCAyMDQsIDExMCwgMjQ2LCAxOTMsIDEsIDIxNSwgMzMsIDI0NiwgMTkzLCAxLCAyMzcsIDE1NywgMjQ2LCAxOTMsIDIyLCAKKyAgICAyLCA2MywgMjQ2LCAxOTMsIDIyLCAyLCA3NSwgMjQ2LCAxOTMsIDIyLCAyLCAyMzEsIDgzLCAyNDYsIDE5MywgMjIsIDIsIAorICAgIDY4LCAyNDYsIDE5MywgMjIsIDIsIDIwNiwgMTc4LCAyNDYsIDE5MywgMjIsIDIsIDc0LCAyNDYsIDE5MywgMjIsIDIsIDI1MSwgCisgICAgNjQsIDI0NiwgMTkzLCAyMiwgMiwgNzgsIDI0NiwgMTkzLCAyMiwgMiwgMjUwLCAzNCwgMjQ2LCAxOTMsIDIyLCAyLCAyMjAsIAorICAgIDU3LCAyNDYsIDE5MywgMTU4LCA4MiwgMjQ2LCAxOTMsIDI1MCwgMzUsIDgyLCAyNDYsIDE5MywgMjA1LCAyMDQsIDI0NiwgCisgICAgMTkzLCAyMjUsIDE3MywgMjQ2LCAxOTMsIDE3LCAyMDIsIDg0LCAyNDYsIDE5MywgMTcsIDEwNSwgMjQ2LCAxOTMsIDE3LCAKKyAgICAxMDgsIDI0NiwgMTkzLCAxNywgMTQ3LCAyNDYsIDE5MywgMTcsIDE0OSwgMjQ2LCAxOTMsIDE3LCAxNzAsIDI0NiwgMTkzLCAKKyAgICAxNywgMTk1LCAyNDYsIDE5MywgMTcsIDIxMywgMTExLCAyNDYsIDE5MywgMTcsIDE5OSwgMjQ2LCAxOTMsIDE3LCAyMjIsIAorICAgIDYzLCAyNDYsIDE5MywgMjE0LCAxNjgsIDgyLCAyNDYsIDE5MywgMjQ0LCAxNjYsIDI0NiwgMTkzLCA1MiwgMjQ0LCAxNjYsIAorICAgIDI0NiwgMTkzLCAyMTcsIDQ3LCA4MiwgMjI1LCAxNDYsIDEsIDYzLCAyMjUsIDE0NiwgMSwgNzUsIDIyNSwgMTQ2LCAxLCA2OCwgCisgICAgMjI1LCAxNDYsIDEsIDc0LCAyMjUsIDE0NiwgMSwgNzgsIDIyNSwgMTQ2LCAxLCAxNzMsIDIyNSwgMTQ2LCAxLCAyMjksIAorICAgIDE0NCwgMjI1LCAxNDYsIDEsIDIzOSwgOCwgMjI1LCAxNDYsIDEsIDIzOCwgMTE5LCAyMjUsIDE0NiwgMSwgMjQ3LCA5MiwgCisgICAgMjI1LCAxNDYsIDEsIDI0NiwgMTk5LCAyMjUsIDE0NiwgMSwgMjMwLCAxODEsIDIyNSwgMTQ2LCAxLCAyMzAsIDE0OSwgMjI1LCAKKyAgICAxNDYsIDEsIDIyMSwgMTEsIDIyNSwgMTQ2LCAxLCAyMDcsIDI0MSwgMjI1LCAxNDYsIDEsIDIwNywgMjI5LCAyMjUsIDE0NiwgCisgICAgMSwgMjQ0LCAxMjAsIDIyNSwgMTQ2LCAxLCAyNDQsIDEwNCwgMjI1LCAxNDYsIDEsIDIyMSwgMjI3LCAyMjUsIDE0NiwgMSwgCisgICAgMjEwLCAyMiwgMjI1LCAxNDYsIDEsIDIwOSwgMTA4LCAyMjUsIDE0NiwgMSwgMjQ0LCAyMTIsIDIyNSwgMTQ2LCAxLCAyNDQsIAorICAgIDEsIDIyNSwgMTQ2LCAxLCAyMDEsIDIwMSwgMjI1LCAxNDYsIDEsIDE4NSwgMjI1LCAxNDYsIDEsIDIxOCwgMjA4LCAyMjUsIAorICAgIDE0NiwgMSwgMjQ5LCAzMiwgMjI1LCAxNDYsIDEsIDI0OCwgOTgsIDIyNSwgMTQ2LCAxLCAxOTIsIDIyNSwgMTQ2LCAxLCAKKyAgICAyMTYsIDIyMCwgMjI1LCAxNDYsIDEsIDIyOCwgMTEzLCAyMjUsIDE0NiwgMSwgMjA2LCA4NiwgMjI1LCAxNDYsIDEsIDIxNSwgCisgICAgMzYsIDIyNSwgMTQ2LCAxLCAxNTIsIDIyNSwgMTQ2LCAxLCAyMTUsIDE4NSwgMjI1LCAxNDYsIDIsIDIyMSwgNTEsIDIyNSwgCisgICAgMTQ2LCAyNTEsIDE0NiwgNTQsIDIyNSwgMTQ2LCAyMTQsIDE2OCwgODIsIDIyNSwgMTQ2LCAzMiwgMjEyLCAyMDYsIDE4MSwgCisgICAgMiwgMjQ3LCA1MiwgMTgxLCAyLCAyNTAsIDE4MCwgMTgxLCAyLCAyMDUsIDE5OSwgMTgxLCAxLCA2MywgMTgxLCAxLCAyNTIsIAorICAgIDI1LCAxODEsIDEsIDc1LCAxODEsIDEsIDIzMSwgODMsIDE4MSwgMSwgNjgsIDE4MSwgMSwgMjA2LCAxNzgsIDE4MSwgMSwgCisgICAgMTI1LCAxNDYsIDE4MSwgMSwgMTI1LCAyMTUsIDE4NiwgMTgxLCAxLCAxMjUsIDE1OSwgMTgxLCAxLCAxMjUsIDIyNywgNzgsIAorICAgIDE4MSwgMSwgNzQsIDE4MSwgMSwgMjUxLCA2NCwgMTgxLCAxLCA3OCwgMTgxLCAxLCAyNTAsIDM0LCAxODEsIDEsIDE3MywgCisgICAgMTgxLCAxLCAyMjksIDE0NCwgMTgxLCAxLCAyMzksIDgsIDE4MSwgMSwgMjM4LCAxMTksIDE4MSwgMSwgMjIyLCAyMDMsIAorICAgIDE4MSwgMSwgMjQ3LCA5MiwgMTgxLCAxLCAyNDYsIDE5OSwgMTgxLCAxLCAyMzAsIDE4MSwgMTgxLCAxLCAyMzAsIDE0OSwgCisgICAgMTgxLCAxLCAyMjEsIDExLCAxODEsIDEsIDIwNywgMjQxLCAxODEsIDEsIDIwNywgMjI5LCAxODEsIDEsIDI0NCwgMTIwLCAKKyAgICAxODEsIDEsIDI0NCwgMTA0LCAxODEsIDEsIDIyMSwgMjI3LCAxODEsIDEsIDIxMCwgMjIsIDE4MSwgMSwgMjA5LCAxMDgsIAorICAgIDE4MSwgMSwgMjQ0LCAyMTIsIDE4MSwgMSwgMjQ0LCAxLCAxODEsIDEsIDIwMSwgMjAxLCAxODEsIDEsIDE4NSwgMTgxLCAxLCAKKyAgICAyMTgsIDIwOCwgMTgxLCAxLCAyNDksIDMyLCAxODEsIDEsIDI0OCwgOTgsIDE4MSwgMSwgMTkyLCAxODEsIDEsIDE5OCwgCisgICAgMTgxLCAxLCAyMTYsIDIyMCwgMTgxLCAxLCAyMjgsIDExMywgMTgxLCAxLCAyMjcsIDc3LCAxODEsIDEsIDIwNiwgODYsIAorICAgIDE4MSwgMSwgMjEzLCA5MCwgMTgxLCAxLCAyMTEsIDE2NCwgMTgxLCAxLCAyMTUsIDM2LCAxODEsIDEsIDE1MiwgMTgxLCAyMiwgCisgICAgMiwgMjUyLCAyNSwgMTgxLCAyMiwgMiwgNzUsIDE4MSwgMjIsIDIsIDIzMSwgODMsIDE4MSwgMjIsIDIsIDY4LCAxODEsIDIyLCAKKyAgICAyLCAyMDYsIDE3OCwgMTgxLCAyMiwgMiwgMTI1LCAxNDYsIDE4MSwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDE4MSwgMjIsIDIsIAorICAgIDEyNSwgMTU5LCAxODEsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDE4MSwgMjIsIDIsIDc0LCAxODEsIDIyLCAyLCAyNTEsIDY0LCAKKyAgICAxODEsIDIyLCAyLCA3OCwgMTgxLCAyMiwgMiwgMjUwLCAzNCwgMTgxLCAyLCAyMDUsIDIwNCwgMTgxLCAyLCAyNTAsIDE3LCAKKyAgICAxODEsIDIsIDIzMCwgMTM1LCAxODEsIDIsIDIwNiwgMjIyLCAxODEsIDIyMCwgMzksIDE4MSwgMjQ0LCAxNjYsIDE4MSwgNTIsIAorICAgIDI0NCwgMTY2LCAxODEsIDI1MSwgMTQ2LCA1NCwgMTgxLCAyMTMsIDEzMCwgMTgxLCAyMTQsIDIzOSwgODIsIDE4MSwgMiwgCisgICAgMjIxLCA1MSwgMTgxLCAyMiwgNjUsIDgyLCAxODEsIDI0MCwgMTk5LCAyMTIsIDIyOCwgMjIsIDgyLCAxODEsIDIxMCwgMTgwLCAKKyAgICA4MiwgMTgxLCAxNywgMjAyLCA4NCwgMTgxLCAxNywgMTA1LCAxODEsIDE3LCAxMDgsIDE4MSwgMTcsIDE0NywgMTgxLCAxNywgCisgICAgMTQ5LCAxODEsIDE3LCAxNzAsIDE4MSwgMTcsIDE5NSwgMTgxLCAxNywgMjEzLCAxMTEsIDE4MSwgMTcsIDE5OSwgMTgxLCAKKyAgICAxNywgMjIyLCA2MywgMTgxLCAyNDEsIDEyOCwgMTgxLCAyLCAyMTIsIDE1NywgMTgxLCAyMzcsIDU4LCAxODEsIDI0NSwgCisgICAgMTkxLCA1NCwgMTgxLCAyMTQsIDE2OCwgMjI1LCA5MiwgMTgxLCAyMTQsIDE2OCwgMjI1LCA5MSwgMTQwLCAyNTAsIDEyNiwgCisgICAgMTcsIDEwNSwgMTQwLCAyNTAsIDEyNiwgMTcsIDEwOCwgMTQwLCAyNTAsIDEyNiwgMTcsIDE0NywgMTQwLCAyNTAsIDEyNiwgCisgICAgMTcsIDE0OSwgMTQwLCAyNTAsIDEyNiwgMTcsIDE3MCwgMTQwLCAyNTAsIDEyNiwgMTcsIDE5NSwgMTQwLCAyNTAsIDEyNiwgCisgICAgMTcsIDIxMywgMTExLCAxNDAsIDI1MCwgMTI2LCAxNywgMTk5LCAxNDAsIDI1MCwgMTI2LCAxNywgMjIyLCA2MywgMTQwLCAKKyAgICAyNTAsIDEyNiwgNDIsIDIwOSwgMTUyLCAxNDAsIDI1MCwgMTI2LCA0MiwgMjA3LCAxNTEsIDE0MCwgMjUwLCAxMjYsIDQyLCAKKyAgICAyMDksIDUzLCAxNDAsIDI1MCwgMTI2LCA0MiwgMjM5LCAxNTMsIDE0MCwgMjUwLCAxMjYsIDQyLCAyNDAsIDE4LCAxNDAsIAorICAgIDI1MCwgMTI2LCA0MiwgMjEyLCA3NCwgMTQwLCAyNTAsIDEyNiwgNDIsIDIxMywgMTA1LCAxNDAsIDI1MCwgMTI2LCA0MiwgCisgICAgMjQxLCAxMzQsIDE0MCwgMjUwLCAxMjYsIDQyLCAyMjIsIDU4LCAxNDAsIDI1MCwgMTI2LCA0MiwgMTE4LCAyMzYsIDExLCAKKyAgICAxNDAsIDI1MCwgMTI2LCA0MiwgMTE4LCAyMDksIDM2LCAyMjksIDExNCwgMSwgNjMsIDIyOSwgMTE0LCAxLCAyNTIsIDI1LCAKKyAgICAyMjksIDExNCwgMSwgNzUsIDIyOSwgMTE0LCAxLCA2OCwgMjI5LCAxMTQsIDEsIDc0LCAyMjksIDExNCwgMSwgMjUxLCA2NCwgCisgICAgMjI5LCAxMTQsIDEsIDc4LCAyMjksIDExNCwgMSwgMjUwLCAzNCwgMjI5LCAxMTQsIDEsIDE3MywgMjI5LCAxMTQsIDEsIAorICAgIDIyOSwgMTQ0LCAyMjksIDExNCwgMSwgMjM5LCA4LCAyMjksIDExNCwgMSwgMjM4LCAxNTUsIDIyOSwgMTE0LCAxLCAyMzgsIAorICAgIDExOSwgMjI5LCAxMTQsIDEsIDIyMiwgMjAzLCAyMjksIDExNCwgMSwgMjQ3LCA5MiwgMjI5LCAxMTQsIDEsIDI0NiwgMTk5LCAKKyAgICAyMjksIDExNCwgMSwgMjMwLCAxODEsIDIyOSwgMTE0LCAxLCAyMzAsIDEyOSwgMjI5LCAxMTQsIDEsIDIyMSwgMTEsIDIyOSwgCisgICAgMTE0LCAxLCAyMDcsIDI0MSwgMjI5LCAxMTQsIDEsIDIwNywgMjI5LCAyMjksIDExNCwgMSwgMjQ0LCAxMjAsIDIyOSwgMTE0LCAKKyAgICAxLCAyNDQsIDEwNCwgMjI5LCAxMTQsIDEsIDIyMSwgMjI3LCAyMjksIDExNCwgMSwgMjEwLCAyMiwgMjI5LCAxMTQsIDEsIAorICAgIDIwOSwgMTA4LCAyMjksIDExNCwgMSwgMjQ0LCAyMTIsIDIyOSwgMTE0LCAxLCAyNDQsIDExMCwgMjI5LCAxMTQsIDEsIDI0NCwgCisgICAgMSwgMjI5LCAxMTQsIDEsIDIwMSwgMjAxLCAyMjksIDExNCwgMSwgMTg1LCAyMjksIDExNCwgMSwgMjE4LCAyMDgsIDIyOSwgCisgICAgMTE0LCAxLCAyNDksIDMyLCAyMjksIDExNCwgMSwgMjQ4LCAxOTgsIDIyOSwgMTE0LCAxLCAyNDgsIDk4LCAyMjksIDExNCwgCisgICAgMSwgMTkyLCAyMjksIDExNCwgMSwgMTk4LCAyMjksIDExNCwgMSwgMjE2LCAyMjAsIDIyOSwgMTE0LCAxLCAyMjgsIDExMywgCisgICAgMjI5LCAxMTQsIDEsIDIwNiwgODYsIDIyOSwgMTE0LCAxLCAyMTUsIDM2LCAyMjksIDExNCwgMSwgMTUyLCAyMjksIDExNCwgCisgICAgMSwgMjI3LCA3NywgMjI5LCAxMTQsIDIyLCAyLCAyNTIsIDI1LCAyMjksIDExNCwgMjIsIDIsIDc1LCAyMjksIDExNCwgMjIsIAorICAgIDIsIDIzMSwgODMsIDIyOSwgMTE0LCAyMiwgMiwgNjgsIDIyOSwgMTE0LCAyMiwgMiwgNzQsIDIyOSwgMTE0LCAyMiwgMiwgCisgICAgMjUxLCA2NCwgMjI5LCAxMTQsIDIyLCAyLCA3OCwgMjI5LCAxMTQsIDIyLCAyLCAyNTAsIDM0LCAyMjksIDExNCwgMiwgMjUwLCAKKyAgICAxODAsIDIyOSwgMTE0LCAyLCAyMDUsIDIwNCwgMjI5LCAxMTQsIDIsIDIyMSwgNTEsIDIyOSwgMTE0LCAyLCAyMTMsIDgwLCAKKyAgICAyMjksIDExNCwgMjQ0LCAxNjYsIDIyOSwgMTE0LCA1MiwgMjQ0LCAxNjYsIDIyOSwgMTE0LCAyMDMsIDIzOCwgMjEzLCAxMzAsIAorICAgIDIyOSwgMTE0LCAyMTQsIDE2OCwgODIsIDIyOSwgMTE0LCA1MiwgMjE0LCAxNjgsIDgyLCAyMjksIDExNCwgMjUxLCAxNDYsIAorICAgIDU0LCAyMjMsIDIzMCwgMSwgNjMsIDIyMywgMjMwLCAxLCA3NSwgMjIzLCAyMzAsIDEsIDY4LCAyMjMsIDIzMCwgMSwgNzQsIAorICAgIDIyMywgMjMwLCAxLCAxNzMsIDIyMywgMjMwLCAxLCAyMjksIDE0NCwgMjIzLCAyMzAsIDEsIDIzOSwgOCwgMjIzLCAyMzAsIAorICAgIDEsIDIzOCwgMTE5LCAyMjMsIDIzMCwgMSwgMjQ3LCA5MiwgMjIzLCAyMzAsIDEsIDI0NiwgMTk5LCAyMjMsIDIzMCwgMSwgCisgICAgMjMwLCAxODEsIDIyMywgMjMwLCAxLCAyMzAsIDEyOSwgMjIzLCAyMzAsIDEsIDIyMSwgMTEsIDIyMywgMjMwLCAxLCAyMDcsIAorICAgIDI0MSwgMjIzLCAyMzAsIDEsIDIwNywgMjI5LCAyMjMsIDIzMCwgMSwgMjQ0LCAxMjAsIDIyMywgMjMwLCAxLCAyNDQsIDExMCwgCisgICAgMjIzLCAyMzAsIDEsIDI0NCwgMTA0LCAyMjMsIDIzMCwgMSwgMjIxLCAyMjcsIDIyMywgMjMwLCAxLCAyMTAsIDIyLCAyMjMsIAorICAgIDIzMCwgMSwgMjA5LCAxMDgsIDIyMywgMjMwLCAxLCAyNDQsIDIxMiwgMjIzLCAyMzAsIDEsIDI0NCwgMSwgMjIzLCAyMzAsIAorICAgIDEsIDIwMSwgMjAxLCAyMjMsIDIzMCwgMSwgMTg1LCAyMjMsIDIzMCwgMSwgMjE4LCAyMDgsIDIyMywgMjMwLCAxLCAyNDksIAorICAgIDMyLCAyMjMsIDIzMCwgMSwgMjQ4LCA5OCwgMjIzLCAyMzAsIDEsIDE5MiwgMjIzLCAyMzAsIDEsIDE5OCwgMjIzLCAyMzAsIAorICAgIDEsIDIxNiwgMjIwLCAyMjMsIDIzMCwgMSwgMjI4LCAxMTMsIDIyMywgMjMwLCAxLCAyMDYsIDg2LCAyMjMsIDIzMCwgMSwgCisgICAgMjE1LCAzNiwgMjIzLCAyMzAsIDEsIDE1MiwgMjIzLCAyMzAsIDEsIDIxNSwgMTg1LCAyMjMsIDIzMCwgMSwgMjE2LCA2MSwgCisgICAgMjIzLCAyMzAsIDIxNCwgMTY4LCA4MiwgMjI5LCAxMDYsIDEsIDYzLCAyMjksIDEwNiwgMSwgMjUyLCAyNSwgMjI5LCAxMDYsIAorICAgIDEsIDc1LCAyMjksIDEwNiwgMSwgMjMxLCA4MywgMjI5LCAxMDYsIDEsIDY4LCAyMjksIDEwNiwgMSwgMjA2LCAxNzgsIDIyOSwgCisgICAgMTA2LCAxLCA3NCwgMjI5LCAxMDYsIDEsIDI1MSwgNjQsIDIyOSwgMTA2LCAxLCA3OCwgMjI5LCAxMDYsIDEsIDI1MCwgMzQsIAorICAgIDIyOSwgMTA2LCAxLCAxNzMsIDIyOSwgMTA2LCAxLCAyMjksIDE0NCwgMjI5LCAxMDYsIDEsIDIzOSwgOCwgMjI5LCAxMDYsIAorICAgIDEsIDIzOCwgMTU1LCAyMjksIDEwNiwgMSwgMjM4LCAxMTksIDIyOSwgMTA2LCAxLCAyMjIsIDIwMywgMjI5LCAxMDYsIDEsIAorICAgIDI0NywgOTIsIDIyOSwgMTA2LCAxLCAyNDYsIDE5OSwgMjI5LCAxMDYsIDEsIDIzMCwgMTgxLCAyMjksIDEwNiwgMSwgMjMwLCAKKyAgICAxMjksIDIyOSwgMTA2LCAxLCAyMzAsIDE0OSwgMjI5LCAxMDYsIDEsIDIyMSwgMTEsIDIyOSwgMTA2LCAxLCAyMDcsIDI0MSwgCisgICAgMjI5LCAxMDYsIDEsIDIwNywgMjI5LCAyMjksIDEwNiwgMSwgMjQ0LCAxMjAsIDIyOSwgMTA2LCAxLCAyNDQsIDExMCwgMjI5LCAKKyAgICAxMDYsIDEsIDIxNSwgMTg1LCAyMjksIDEwNiwgMSwgMjQ0LCAxMDQsIDIyOSwgMTA2LCAxLCAyMjEsIDIyNywgMjI5LCAxMDYsIAorICAgIDEsIDIxMCwgMjIsIDIyOSwgMTA2LCAxLCAyMDksIDEwOCwgMjI5LCAxMDYsIDEsIDI0NCwgMjEyLCAyMjksIDEwNiwgMSwgCisgICAgMjQ0LCAxLCAyMjksIDEwNiwgMSwgMjAxLCAyMDEsIDIyOSwgMTA2LCAxLCAxODUsIDIyOSwgMTA2LCAxLCAyMTgsIDIwOCwgCisgICAgMjI5LCAxMDYsIDEsIDI0OSwgMzIsIDIyOSwgMTA2LCAxLCAyNDgsIDE5OCwgMjI5LCAxMDYsIDEsIDI0OCwgOTgsIDIyOSwgCisgICAgMTA2LCAxLCAxOTIsIDIyOSwgMTA2LCAxLCAxOTgsIDIyOSwgMTA2LCAxLCAyMTYsIDIyMCwgMjI5LCAxMDYsIDEsIDIyOCwgCisgICAgMTEzLCAyMjksIDEwNiwgMSwgMjA2LCA4NiwgMjI5LCAxMDYsIDEsIDIxMywgOTAsIDIyOSwgMTA2LCAxLCAyMTUsIDM2LCAKKyAgICAyMjksIDEwNiwgMSwgMTUyLCAyMjksIDEwNiwgMiwgMjUwLCAxODAsIDIyOSwgMTA2LCAyMiwgMiwgMjUyLCAyNSwgMjI5LCAKKyAgICAxMDYsIDIyLCAyLCA3NSwgMjI5LCAxMDYsIDIyLCAyLCAyMzEsIDgzLCAyMjksIDEwNiwgMjIsIDIsIDY4LCAyMjksIDEwNiwgCisgICAgMjIsIDIsIDIwNiwgMTc4LCAyMjksIDEwNiwgMjIsIDIsIDc0LCAyMjksIDEwNiwgMjIsIDIsIDI1MSwgNjQsIDIyOSwgMTA2LCAKKyAgICAyMiwgMiwgNzgsIDIyOSwgMTA2LCAyMiwgMiwgMjUwLCAzNCwgMjI5LCAxMDYsIDIsIDIyMSwgNTEsIDIyOSwgMTA2LCAyLCAKKyAgICAyMDUsIDIwNCwgMjI5LCAxMDYsIDE3LCAyMDIsIDg0LCAyMjksIDEwNiwgMTcsIDEwNSwgMjI5LCAxMDYsIDE3LCAxMDgsIAorICAgIDIyOSwgMTA2LCAxNywgMTQ3LCAyMjksIDEwNiwgMTcsIDE0OSwgMjI5LCAxMDYsIDE3LCAxNzAsIDIyOSwgMTA2LCAxNywgCisgICAgMTk1LCAyMjksIDEwNiwgMTcsIDIxMywgMTExLCAyMjksIDEwNiwgMTcsIDE5OSwgMjI5LCAxMDYsIDE3LCAyMjIsIDYzLCAKKyAgICAyMzgsIDYsIDIsIDM5LCAyNTAsIDE4MSwgNTUsIDIzOCwgNiwgMiwgMjQ3LCA1MiwgMjM4LCA2LCAyLCAyNTAsIDE4MCwgCisgICAgMjM4LCA2LCAyLCAyMDUsIDE5OSwgMjM4LCA2LCAxLCA2MywgMjM4LCA2LCAxLCAyNTIsIDI1LCAyMzgsIDYsIDEsIDc1LCAKKyAgICAyMzgsIDYsIDEsIDIzMSwgODMsIDIzOCwgNiwgMSwgNjgsIDIzOCwgNiwgMSwgMjA2LCAxNzgsIDIzOCwgNiwgMSwgMTI1LCAKKyAgICAxNDYsIDIzOCwgNiwgMSwgMTI1LCAxNTksIDIzOCwgNiwgMSwgMjQxLCAxNjEsIDIzOCwgNiwgMSwgMjUxLCA2NCwgMjM4LCAKKyAgICA2LCAxLCAyMjAsIDE4LCAyMzgsIDYsIDEsIDI1MCwgMzQsIDIzOCwgNiwgMSwgMTczLCAyMzgsIDYsIDEsIDIyOSwgMTQ0LCAKKyAgICAyMzgsIDYsIDEsIDIzOSwgOCwgMjM4LCA2LCAxLCAyMzgsIDExOSwgMjM4LCA2LCAxLCAyMjIsIDIwMywgMjM4LCA2LCAxLCAKKyAgICAyNDcsIDkyLCAyMzgsIDYsIDEsIDI0NiwgMTk5LCAyMzgsIDYsIDEsIDIzMCwgMTgxLCAyMzgsIDYsIDEsIDIzMCwgMTQ5LCAKKyAgICAyMzgsIDYsIDEsIDIyMSwgMTEsIDIzOCwgNiwgMSwgMjA3LCAyNDEsIDIzOCwgNiwgMSwgMjA3LCAyMjksIDIzOCwgNiwgMSwgCisgICAgMjQ0LCAxMjAsIDIzOCwgNiwgMSwgMjQ0LCAxMDQsIDIzOCwgNiwgMSwgMjIxLCAyMjcsIDIzOCwgNiwgMSwgMjEwLCAyMiwgCisgICAgMjM4LCA2LCAxLCAyMDksIDEwOCwgMjM4LCA2LCAxLCAyNDQsIDIxMiwgMjM4LCA2LCAxLCAyNDQsIDEsIDIzOCwgNiwgMSwgCisgICAgMjAxLCAyMDEsIDIzOCwgNiwgMSwgMTg1LCAyMzgsIDYsIDEsIDIxOCwgMjA4LCAyMzgsIDYsIDEsIDI0OSwgMzIsIDIzOCwgCisgICAgNiwgMSwgMjQ4LCA5OCwgMjM4LCA2LCAxLCAxOTIsIDIzOCwgNiwgMSwgMTk4LCAyMzgsIDYsIDEsIDIxNiwgMjIwLCAyMzgsIAorICAgIDYsIDEsIDIyOCwgMTEzLCAyMzgsIDYsIDEsIDIyNywgNzcsIDIzOCwgNiwgMSwgMjA2LCA4NiwgMjM4LCA2LCAxLCAyMTMsIAorICAgIDkwLCAyMzgsIDYsIDEsIDIxMSwgMTY0LCAyMzgsIDYsIDEsIDIxNSwgMzYsIDIzOCwgNiwgMSwgMTUyLCAyMzgsIDYsIDIsIAorICAgIDIyMSwgNTEsIDIzOCwgNiwgMiwgMjUwLCAxNywgMjM4LCA2LCAyMiwgMiwgMjUyLCAyNSwgMjM4LCA2LCAyMiwgMiwgNzUsIAorICAgIDIzOCwgNiwgMjIsIDIsIDIzMSwgODMsIDIzOCwgNiwgMjIsIDIsIDY4LCAyMzgsIDYsIDIyLCAyLCAyMDYsIDE3OCwgMjM4LCAKKyAgICA2LCAyMiwgMiwgMTI1LCAxNDYsIDIzOCwgNiwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDIzOCwgNiwgMjIsIDIsIDI0MSwgCisgICAgMTYxLCAyMzgsIDYsIDIyLCAyLCAyNTEsIDY0LCAyMzgsIDYsIDIyLCAyLCAyMjAsIDE4LCAyMzgsIDYsIDIyLCAyLCAyNTAsIAorICAgIDM0LCAyMzgsIDYsIDIsIDIwNSwgMjA0LCAyMzgsIDYsIDIyMCwgMzksIDIzOCwgNiwgMjUwLCAzNSwgMjI3LCAxOTYsIDgyLCAKKyAgICAyMzgsIDYsIDIsIDIxOCwgNzQsIDIzOCwgNiwgMSwgMjA2LCA1MiwgMjUwLCAxODAsIDIzOCwgNiwgMSwgMjA2LCA1MiwgNTIsIAorICAgIDI1MCwgMTgwLCAyMzgsIDYsIDEsIDEyNSwgMjE1LCAxODYsIDIzOCwgNiwgMSwgMTI1LCAyMjcsIDc4LCAyMzgsIDYsIDIyLCAKKyAgICAyLCAxMjUsIDE1OSwgMjM4LCA2LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAzOSwgMjM4LCA2LCAxNywgMjAyLCA4NCwgMzksIAorICAgIDIzOCwgNiwgMTcsIDEwNSwgMzksIDIzOCwgNiwgMTcsIDEwOCwgMzksIDIzOCwgNiwgMTcsIDE0NywgMzksIDIzOCwgNiwgCisgICAgMTcsIDE0OSwgMzksIDIzOCwgNiwgMTcsIDE3MCwgMzksIDIzOCwgNiwgMTcsIDE5NSwgMzksIDIzOCwgNiwgMSwgNjMsIDM5LCAKKyAgICAyMzgsIDYsIDEsIDE3MywgMzksIDIzOCwgNiwgMSwgMjAxLCAyMDEsIDM5LCAyMzgsIDYsIDEsIDIwNSwgMjMwLCAzOSwgCisgICAgMjM4LCA2LCAxLCAxODUsIDIwOCwgMjA0LCAyNTAsIDIwOSwgMjA4LCAyMDQsIDEsIDYzLCAyMDgsIDIwNCwgMSwgMjUyLCAKKyAgICAyNSwgMjA4LCAyMDQsIDEsIDc1LCAyMDgsIDIwNCwgMSwgMjMxLCA4MywgMjA4LCAyMDQsIDEsIDY4LCAyMDgsIDIwNCwgMSwgCisgICAgMjA2LCAxNzgsIDIwOCwgMjA0LCAxLCAxMjUsIDE0NiwgMjA4LCAyMDQsIDEsIDEyNSwgMjE1LCAxODYsIDIwOCwgMjA0LCAxLCAKKyAgICAxMjUsIDE1OSwgMjA4LCAyMDQsIDEsIDEyNSwgMjI3LCA3OCwgMjA4LCAyMDQsIDEsIDc0LCAyMDgsIDIwNCwgMSwgMjUxLCAKKyAgICA2NCwgMjA4LCAyMDQsIDEsIDc4LCAyMDgsIDIwNCwgMSwgMjUwLCAzNCwgMjA4LCAyMDQsIDEsIDE3MywgMjA4LCAyMDQsIDEsIAorICAgIDIyOSwgMTQ0LCAyMDgsIDIwNCwgMSwgMjM5LCA4LCAyMDgsIDIwNCwgMSwgMjM4LCAxMTksIDIwOCwgMjA0LCAxLCAyMjIsIAorICAgIDIwMywgMjA4LCAyMDQsIDEsIDI0NywgOTIsIDIwOCwgMjA0LCAxLCAyNDYsIDE5OSwgMjA4LCAyMDQsIDEsIDIzMCwgMTgxLCAKKyAgICAyMDgsIDIwNCwgMSwgMjMwLCAxNDksIDIwOCwgMjA0LCAxLCAyMjEsIDExLCAyMDgsIDIwNCwgMSwgMjA3LCAyNDEsIDIwOCwgCisgICAgMjA0LCAxLCAyMDcsIDIyOSwgMjA4LCAyMDQsIDEsIDI0NCwgMTIwLCAyMDgsIDIwNCwgMSwgMjQ0LCAxMDQsIDIwOCwgMjA0LCAKKyAgICAxLCAyMjEsIDIyNywgMjA4LCAyMDQsIDEsIDIxMCwgMjIsIDIwOCwgMjA0LCAxLCAyMDksIDEwOCwgMjA4LCAyMDQsIDEsIAorICAgIDI0NCwgMjEyLCAyMDgsIDIwNCwgMSwgMjQ0LCAxLCAyMDgsIDIwNCwgMSwgMjAxLCAyMDEsIDIwOCwgMjA0LCAxLCAxODUsIAorICAgIDIwOCwgMjA0LCAxLCAyMTgsIDIwOCwgMjA4LCAyMDQsIDEsIDI0OSwgMzIsIDIwOCwgMjA0LCAxLCAyNDgsIDk4LCAyMDgsIAorICAgIDIwNCwgMSwgMTkyLCAyMDgsIDIwNCwgMSwgMTk4LCAyMDgsIDIwNCwgMSwgMjE2LCAyMjAsIDIwOCwgMjA0LCAxLCAyMjgsIAorICAgIDExMywgMjA4LCAyMDQsIDEsIDIwNiwgODYsIDIwOCwgMjA0LCAxLCAyMTMsIDkwLCAyMDgsIDIwNCwgMSwgMjExLCAxNjQsIAorICAgIDIwOCwgMjA0LCAxLCAyMTUsIDM2LCAyMDgsIDIwNCwgMSwgMTUyLCAyMDgsIDIwNCwgMjIsIDIsIDI1MiwgMjUsIDIwOCwgCisgICAgMjA0LCAyMiwgMiwgNzUsIDIwOCwgMjA0LCAyMiwgMiwgMjMxLCA4MywgMjA4LCAyMDQsIDIyLCAyLCA2OCwgMjA4LCAyMDQsIAorICAgIDIyLCAyLCAyMDYsIDE3OCwgMjA4LCAyMDQsIDIyLCAyLCAxMjUsIDE0NiwgMjA4LCAyMDQsIDIyLCAyLCAxMjUsIDIxNSwgCisgICAgMTg2LCAyMDgsIDIwNCwgMjIsIDIsIDEyNSwgMTU5LCAyMDgsIDIwNCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMjA4LCAyMDQsIAorICAgIDIyLCAyLCA3NCwgMjA4LCAyMDQsIDIyLCAyLCAyMTIsIDIyOCwgNzQsIDIwOCwgMjA0LCAyMiwgMiwgMjUxLCA2NCwgMjA4LCAKKyAgICAyMDQsIDIyLCAyLCA3OCwgMjA4LCAyMDQsIDIyLCAyLCAyMTIsIDIyOCwgNzgsIDIwOCwgMjA0LCAyMiwgMiwgMjUwLCAzNCwgCisgICAgMjA4LCAyMDQsIDIsIDI0NywgNTIsIDIwOCwgMjA0LCAyLCAyNTAsIDE4MCwgMjA4LCAyMDQsIDIsIDIwNSwgMTk5LCAyMDgsIAorICAgIDIwNCwgMiwgMjA1LCAyMDQsIDIwOCwgMjA0LCAyLCAyMjEsIDUxLCAyMDgsIDIwNCwgMiwgMjUwLCAxNywgMjA4LCAyMDQsIAorICAgIDIzNywgMTkxLCAyMDgsIDIwNCwgMjUxLCAxNDYsIDU0LCAyMDgsIDIwNCwgMjIwLCAzOSwgMjA4LCAyMDQsIDE3LCAyMDIsIAorICAgIDg0LCAyMDgsIDIwNCwgMTcsIDEwNSwgMjA4LCAyMDQsIDE3LCAxMDgsIDIwOCwgMjA0LCAxNywgMTQ3LCAyMDgsIDIwNCwgCisgICAgMTcsIDE0OSwgMjA4LCAyMDQsIDE3LCAxNzAsIDIwOCwgMjA0LCAxNywgMTk1LCAyMDgsIDIwNCwgMTcsIDIxMywgMTExLCAKKyAgICAyMDgsIDIwNCwgMTcsIDE5OSwgMjA4LCAyMDQsIDE3LCAyMjIsIDYzLCAxODYsIDEsIDYzLCAxODYsIDEsIDI1MiwgMjUsIAorICAgIDE4NiwgMSwgNzUsIDE4NiwgMSwgMjMxLCA4MywgMTg2LCAxLCA2OCwgMTg2LCAxLCAyMDYsIDE3OCwgMTg2LCAxLCAxMjUsIAorICAgIDE0NiwgMTg2LCAxLCAxMjUsIDIxNSwgMTg2LCAxODYsIDEsIDEyNSwgMTU5LCAxODYsIDEsIDEyNSwgMjI3LCA3OCwgMTg2LCAKKyAgICAxLCA3NCwgMTg2LCAxLCAyNTEsIDY0LCAxODYsIDEsIDc4LCAxODYsIDEsIDI1MCwgMzQsIDE4NiwgMSwgMTczLCAxODYsIDEsIAorICAgIDIyOSwgMTQ0LCAxODYsIDEsIDIzOSwgOCwgMTg2LCAxLCAyMzgsIDExOSwgMTg2LCAxLCAyMjIsIDIwMywgMTg2LCAxLCAKKyAgICAyNDcsIDkyLCAxODYsIDEsIDI0NiwgMTk5LCAxODYsIDEsIDIzMCwgMTgxLCAxODYsIDEsIDIzMCwgMTQ5LCAxODYsIDEsIAorICAgIDIyMSwgMTEsIDE4NiwgMSwgMjA3LCAyNDEsIDE4NiwgMSwgMjA3LCAyMjksIDE4NiwgMSwgMjQ0LCAxMjAsIDE4NiwgMSwgCisgICAgMjQ0LCAxMDQsIDE4NiwgMSwgMjIxLCAyMjcsIDE4NiwgMSwgMjEwLCAyMiwgMTg2LCAxLCAyMDksIDEwOCwgMTg2LCAxLCAKKyAgICAyNDQsIDIxMiwgMTg2LCAxLCAyNDQsIDEsIDE4NiwgMSwgMjAxLCAyMDEsIDE4NiwgMSwgMTg1LCAxODYsIDEsIDIxOCwgCisgICAgMjA4LCAxODYsIDEsIDI0OSwgMzIsIDE4NiwgMSwgMjQ4LCA5OCwgMTg2LCAxLCAxOTIsIDE4NiwgMSwgMTk4LCAxODYsIDEsIAorICAgIDIxNiwgMjIwLCAxODYsIDEsIDIyOCwgMTEzLCAxODYsIDEsIDIwNiwgODYsIDE4NiwgMSwgMjEzLCA5MCwgMTg2LCAxLCAKKyAgICAyMTEsIDE2NCwgMTg2LCAxLCAyMTUsIDM2LCAxODYsIDEsIDE1MiwgMTg2LCAyMiwgMiwgMjUyLCAyNSwgMTg2LCAyMiwgMiwgCisgICAgNzUsIDE4NiwgMjIsIDIsIDIzMSwgODMsIDE4NiwgMjIsIDIsIDY4LCAxODYsIDIyLCAyLCAyMDYsIDE3OCwgMTg2LCAyMiwgCisgICAgMiwgMTI1LCAxNDYsIDE4NiwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDE4NiwgMjIsIDIsIDc0LCAxODYsIDIyLCAyLCAyNTEsIAorICAgIDY0LCAxODYsIDIyLCAyLCA3OCwgMTg2LCAyMiwgMiwgMjUwLCAzNCwgMTg2LCAyLCAyNDcsIDUyLCAxODYsIDIsIDI1MCwgCisgICAgMTgwLCAxODYsIDIsIDIwNSwgMTk5LCAxODYsIDIsIDIwNSwgMjA0LCAxODYsIDIsIDIyMSwgNTEsIDE4NiwgMiwgMjEyLCAKKyAgICAxNTcsIDE4NiwgMjQ0LCAxNjYsIDE4NiwgNTIsIDI0NCwgMTY2LCAxODYsIDIxMywgMTMxLCAyNDMsIDg1LCAxODYsIDIxMywgCisgICAgMTMxLCAxNDIsIDE4NiwgMjE2LCA5OCwgMjI1LCA5MiwgMTg2LCAyMTYsIDk4LCAyMjUsIDkxLCAxODYsIDIxNiwgOTgsIAorICAgIDIyNSwgOTAsIDE4NiwgMjQxLCA4NCwgNzYsIDIwOSwgMTEzLCA4MiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyMDgsIDgwLCAKKyAgICAyNSwgMjA3LCA5MiwgMjE5LCAyMzIsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjA4LCA4MCwgMjUsIDI0MiwgODMsIDI0NSwgCisgICAgMTM3LCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDIxNiwgMTYzLCAyNSwgMjQyLCA4MywgMjQ1LCAxMzcsIDE4NiwgMjE0LCAKKyAgICAxNjgsIDEzMSwgMywgMjE2LCAxNjMsIDI1LCAyNDIsIDgzLCA1MiwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgCisgICAgMjE2LCAxNjMsIDI1LCAyNDIsIDgzLCAyMDgsIDcwLCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgMTMxLCA1MiwgMjE1LCAKKyAgICAyNTIsIDE4NiwgMjE0LCAxNjgsIDEzMSwgNTIsIDIxNSwgMjUzLCAzLCAyMTYsIDE2MiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAKKyAgICAzLCA1MiwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjA4LCA3MCwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIAorICAgIDEzMSwgMywgMjE3LCA1OCwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjEzLCAxMjgsIDI0NSwgMTM3LCAKKyAgICAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDI0NiwgNTksIDI1LCAyMTYsIDE2MiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyNDYsIAorICAgIDU5LCAyNSwgMTIwLCAyNDEsIDg2LCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDI0NiwgNTksIDI1LCAyMzksIDE0NywgMjQxLCAKKyAgICA4NiwgMTg2LCAxLCAyMDksIDMyLCAyNTAsIDI1NSwgNzUsIDE4NiwgMSwgMjA3LCAxMzYsIDI1MCwgMjU1LCA3NSwgMTg2LCAKKyAgICAxLCAyMDcsIDEzNiwgMjUwLCAyNTUsIDIzMSwgODMsIDE4NiwgMSwgMjUwLCAyNTUsIDY4LCAxODYsIDIyLCAyLCAyNTAsIAorICAgIDI1NSwgNjgsIDE4NiwgMjIsIDIsIDI1MCwgMjU1LCAyMDYsIDE3OCwgMjI0LCA3NCwgMSwgNjMsIDIyNCwgNzQsIDEsIDI1MiwgCisgICAgMjUsIDIyNCwgNzQsIDEsIDc1LCAyMjQsIDc0LCAxLCAyMzEsIDgzLCAyMjQsIDc0LCAxLCA2OCwgMjI0LCA3NCwgMSwgMjA2LCAKKyAgICAxNzgsIDIyNCwgNzQsIDEsIDEyNSwgMTQ2LCAyMjQsIDc0LCAxLCAxMjUsIDIxNSwgMTg2LCAyMjQsIDc0LCAxLCAxMjUsIAorICAgIDE1OSwgMjI0LCA3NCwgMSwgMTI1LCAyMjcsIDc4LCAyMjQsIDc0LCAxLCA3NCwgMjI0LCA3NCwgMSwgMjUxLCA2NCwgMjI0LCAKKyAgICA3NCwgMSwgNzgsIDIyNCwgNzQsIDEsIDI1MCwgMzQsIDIyNCwgNzQsIDEsIDE3MywgMjI0LCA3NCwgMSwgMjI5LCAxNDQsIAorICAgIDIyNCwgNzQsIDEsIDIzOSwgOCwgMjI0LCA3NCwgMSwgMjM4LCAxMTksIDIyNCwgNzQsIDEsIDIyMiwgMjAzLCAyMjQsIDc0LCAKKyAgICAxLCAyNDcsIDkyLCAyMjQsIDc0LCAxLCAyNDYsIDE5OSwgMjI0LCA3NCwgMSwgMjMwLCAxODEsIDIyNCwgNzQsIDEsIDIzMCwgCisgICAgMTQ5LCAyMjQsIDc0LCAxLCAyMjEsIDExLCAyMjQsIDc0LCAxLCAyMDcsIDI0MSwgMjI0LCA3NCwgMSwgMjA3LCAyMjksIAorICAgIDIyNCwgNzQsIDEsIDI0NCwgMTIwLCAyMjQsIDc0LCAxLCAyNDQsIDEwNCwgMjI0LCA3NCwgMSwgMjIxLCAyMjcsIDIyNCwgCisgICAgNzQsIDEsIDIxMCwgMjIsIDIyNCwgNzQsIDEsIDIwOSwgMTA4LCAyMjQsIDc0LCAxLCAyNDQsIDIxMiwgMjI0LCA3NCwgMSwgCisgICAgMjQ0LCAxLCAyMjQsIDc0LCAxLCAyMDEsIDIwMSwgMjI0LCA3NCwgMSwgMTg1LCAyMjQsIDc0LCAxLCAyMTgsIDIwOCwgMjI0LCAKKyAgICA3NCwgMSwgMjQ5LCAzMiwgMjI0LCA3NCwgMSwgMjQ4LCA5OCwgMjI0LCA3NCwgMSwgMTkyLCAyMjQsIDc0LCAxLCAxOTgsIAorICAgIDIyNCwgNzQsIDEsIDIxNiwgMjIwLCAyMjQsIDc0LCAxLCAyMjgsIDExMywgMjI0LCA3NCwgMSwgMjA2LCA4NiwgMjI0LCA3NCwgCisgICAgMSwgMjEzLCA5MCwgMjI0LCA3NCwgMSwgMjExLCAxNjQsIDIyNCwgNzQsIDEsIDIxNSwgMzYsIDIyNCwgNzQsIDEsIDE1MiwgCisgICAgMjI0LCA3NCwgMSwgMjI3LCA3NywgMjI0LCA3NCwgMjIsIDIsIDI1MiwgMjUsIDIyNCwgNzQsIDIyLCAyLCA3NSwgMjI0LCAKKyAgICA3NCwgMjIsIDIsIDIzMSwgODMsIDIyNCwgNzQsIDIyLCAyLCA2OCwgMjI0LCA3NCwgMjIsIDIsIDIwNiwgMTc4LCAyMjQsIAorICAgIDc0LCAyMiwgMiwgMTI1LCAxNDYsIDIyNCwgNzQsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAyMjQsIDc0LCAyMiwgMiwgMTI1LCAKKyAgICAxNTksIDIyNCwgNzQsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDIyNCwgNzQsIDIyLCAyLCA3NCwgMjI0LCA3NCwgMjIsIDIsIAorICAgIDI1MSwgNjQsIDIyNCwgNzQsIDIyLCAyLCA3OCwgMjI0LCA3NCwgMjIsIDIsIDI1MCwgMzQsIDIyNCwgNzQsIDIsIDI1MCwgCisgICAgMTgwLCAyMjQsIDc0LCAyLCAyMDUsIDE5OSwgMjI0LCA3NCwgMiwgMjA1LCAyMDQsIDIyNCwgNzQsIDIsIDI1MCwgMTIzLCAKKyAgICAyMjQsIDc0LCAyNDQsIDE2NiwgMjI0LCA3NCwgNTIsIDI0NCwgMTY2LCAyMjQsIDc0LCAyNTEsIDE0NiwgNTQsIDIyNCwgNzQsIAorICAgIDIsIDIzNiwgMCwgMjI0LCA3NCwgMTcsIDIwMiwgODQsIDIyNCwgNzQsIDE3LCAxMDUsIDIyNCwgNzQsIDE3LCAxMDgsIDIyNCwgCisgICAgNzQsIDE3LCAxNDcsIDIyNCwgNzQsIDE3LCAxNDksIDIyNCwgNzQsIDE3LCAxNzAsIDIyNCwgNzQsIDE3LCAxOTUsIDIyNCwgCisgICAgNzQsIDE3LCAyMTMsIDExMSwgMjI0LCA3NCwgMTcsIDE5OSwgMjI0LCA3NCwgMTcsIDIyMiwgNjMsIDIwOSwgMjM5LCAxLCAKKyAgICA2MywgMjA5LCAyMzksIDEsIDI1MiwgMjUsIDIwOSwgMjM5LCAxLCA3NSwgMjA5LCAyMzksIDEsIDIzMSwgODMsIDIwOSwgCisgICAgMjM5LCAxLCA2OCwgMjA5LCAyMzksIDEsIDIwNiwgMTc4LCAyMDksIDIzOSwgMSwgNzQsIDIwOSwgMjM5LCAxLCAyNTEsIDY0LCAKKyAgICAyMDksIDIzOSwgMSwgNzgsIDIwOSwgMjM5LCAxLCAyNTAsIDM0LCAyMDksIDIzOSwgMSwgMTczLCAyMDksIDIzOSwgMSwgCisgICAgMjI5LCAxNDQsIDIwOSwgMjM5LCAxLCAyMzksIDgsIDIwOSwgMjM5LCAxLCAyMzgsIDExOSwgMjA5LCAyMzksIDEsIDIyMiwgCisgICAgMjAzLCAyMDksIDIzOSwgMSwgMjQ3LCA5MiwgMjA5LCAyMzksIDEsIDI0NiwgMTk5LCAyMDksIDIzOSwgMSwgMjMwLCAxODEsIAorICAgIDIwOSwgMjM5LCAxLCAyMzAsIDE0OSwgMjA5LCAyMzksIDEsIDIyMSwgMTEsIDIwOSwgMjM5LCAxLCAyMDcsIDI0MSwgMjA5LCAKKyAgICAyMzksIDEsIDIwNywgMjI5LCAyMDksIDIzOSwgMSwgMjQ0LCAxMjAsIDIwOSwgMjM5LCAxLCAyNDQsIDEwNCwgMjA5LCAyMzksIAorICAgIDEsIDIyMSwgMjI3LCAyMDksIDIzOSwgMSwgMjEwLCAyMiwgMjA5LCAyMzksIDEsIDIwOSwgMTA4LCAyMDksIDIzOSwgMSwgCisgICAgMjQ0LCAyMTIsIDIwOSwgMjM5LCAxLCAyNDQsIDEsIDIwOSwgMjM5LCAxLCAyMDEsIDIwMSwgMjA5LCAyMzksIDEsIDE4NSwgCisgICAgMjA5LCAyMzksIDEsIDIxOCwgMjA4LCAyMDksIDIzOSwgMSwgMjQ5LCAzMiwgMjA5LCAyMzksIDEsIDI0OCwgOTgsIDIwOSwgCisgICAgMjM5LCAxLCAxOTIsIDIwOSwgMjM5LCAxLCAxOTgsIDIwOSwgMjM5LCAxLCAyMTYsIDIyMCwgMjA5LCAyMzksIDEsIDIyOCwgCisgICAgMTEzLCAyMDksIDIzOSwgMSwgMjA2LCA4NiwgMjA5LCAyMzksIDEsIDIxMywgOTAsIDIwOSwgMjM5LCAxLCAyMTUsIDM2LCAKKyAgICAyMDksIDIzOSwgMSwgMTUyLCAyMDksIDIzOSwgMSwgMjE1LCAxODUsIDIwOSwgMjM5LCAyLCAyNTAsIDE4MCwgMjA5LCAyMzksIAorICAgIDIsIDIwNSwgMTk5LCAyMDksIDIzOSwgMjIsIDIsIDI1MiwgMjUsIDIwOSwgMjM5LCAyMiwgMiwgNzUsIDIwOSwgMjM5LCAyMiwgCisgICAgMiwgMjMxLCA4MywgMjA5LCAyMzksIDIyLCAyLCA2OCwgMjA5LCAyMzksIDIyLCAyLCAyMDYsIDE3OCwgMjA5LCAyMzksIDIyLCAKKyAgICAyLCA3NCwgMjA5LCAyMzksIDIyLCAyLCAyNTEsIDY0LCAyMDksIDIzOSwgMjIsIDIsIDc4LCAyMDksIDIzOSwgMjIsIDIsIAorICAgIDI1MCwgMzQsIDIwOSwgMjM5LCAyLCAyMDUsIDIwNCwgMjA5LCAyMzksIDIsIDIyMSwgNTEsIDIwOSwgMjM5LCAxNywgMjAyLCAKKyAgICA4NCwgMjA5LCAyMzksIDE3LCAxMDUsIDIwOSwgMjM5LCAxNywgMTA4LCAyMDksIDIzOSwgMTcsIDE0NywgMjA5LCAyMzksIAorICAgIDE3LCAxNDksIDIwOSwgMjM5LCAxNywgMTcwLCAyMDksIDIzOSwgMTcsIDE5NSwgMjA5LCAyMzksIDE3LCAyMTMsIDExMSwgCisgICAgMjA5LCAyMzksIDE3LCAxOTksIDIwOSwgMjM5LCAxNywgMjIyLCA2MywgMjUxLCA2OCwgMSwgMTczLCAyNTEsIDY4LCAxLCAKKyAgICAyMjksIDE0NCwgMjUxLCA2OCwgMSwgMjIyLCAyMDMsIDI1MSwgNjgsIDEsIDIwMSwgMjAxLCAyNTEsIDY4LCAxLCAyMTAsIAorICAgIDIyLCAyNTEsIDY4LCAxLCAyNTAsIDI1NSwgMjEwLCAyMiwgMjUxLCA2OCwgMSwgMTg1LCAyNTEsIDY4LCAxLCAyMTgsIDIwOCwgCisgICAgMjUxLCA2OCwgMSwgMjQ5LCAzMiwgMjUxLCA2OCwgMSwgMTkyLCAyNTEsIDY4LCAxLCAyMzAsIDE4MSwgMjUxLCA2OCwgMSwgCisgICAgMjQ2LCAxOTksIDI1MSwgNjgsIDEsIDIwOSwgMTA4LCAyNTEsIDY4LCAxLCAyMTYsIDIyMCwgMjUxLCA2OCwgMSwgMjI4LCAKKyAgICAxMTMsIDI1MSwgNjgsIDEsIDIxNSwgMzYsIDI1MSwgNjgsIDEsIDIyMSwgMTEsIDI1MSwgNjgsIDEsIDE1MiwgMjUxLCA2OCwgCisgICAgMSwgNjMsIDI1MSwgNjgsIDEsIDI0NCwgMjEyLCAyNTEsIDY4LCAxLCAyNDQsIDEsIDI1MSwgNjgsIDEsIDIzOSwgOCwgMjUxLCAKKyAgICA2OCwgMSwgMjUwLCAyNTUsIDIzOSwgOCwgMjUxLCA2OCwgMSwgMjM4LCAxMTksIDI1MSwgNjgsIDEsIDI0OCwgOTgsIDI1MSwgCisgICAgNjgsIDEsIDIzMCwgMTQ5LCAyNTEsIDY4LCAxMDksIDIsIDE3NCwgMjI4LCAxMTMsIDI1MSwgNjgsIDEwOSwgMiwgMTc0LCAKKyAgICAyMTYsIDIyMCwgMjUxLCA2OCwgMTA5LCAyLCAxNzQsIDIyNywgMTM1LCAyMTYsIDIyMCwgMjUxLCA2OCwgMjIsIDIsIDYzLCAKKyAgICAyNTEsIDY4LCAyMiwgMiwgMjUyLCAyNSwgMjUxLCA2OCwgMjIsIDIsIDc1LCAyNTEsIDY4LCAyMiwgMiwgMjMxLCA4MywgCisgICAgMjUxLCA2OCwgMjIsIDIsIDY4LCAyNTEsIDY4LCAyMiwgMiwgMjA2LCAxNzgsIDI1MSwgNjgsIDIyLCAyLCA3NCwgMjUxLCAKKyAgICA2OCwgMjIsIDIsIDI1MCwgMTMsIDI1MSwgNjgsIDIyLCAyLCA3OCwgMjUxLCA2OCwgMjIsIDIsIDI1MSwgNjQsIDI1MSwgNjgsIAorICAgIDIyLCAyLCAyNTAsIDI0NywgMjUxLCA2OCwgMiwgMjI5LCA4NiwgMjUxLCA2OCwgMTcsIDIwMiwgODQsIDI1MSwgNjgsIDE3LCAKKyAgICAxMDUsIDI1MSwgNjgsIDE3LCAxMDgsIDI1MSwgNjgsIDE3LCAxNDcsIDI1MSwgNjgsIDE3LCAxNDksIDI1MSwgNjgsIDE3LCAKKyAgICAxNzAsIDI1MSwgNjgsIDE3LCAxOTUsIDI1MSwgNjgsIDE3LCAyMTMsIDExMSwgMjUxLCA2OCwgMTcsIDE5OSwgMjUxLCA2OCwgCisgICAgMTcsIDIyMiwgNjMsIDI1MSwgNjgsIDQyLCAyMDksIDE1MiwgMjUxLCA2OCwgNDIsIDIwNywgMTUxLCAyNTEsIDY4LCAyLCA1LCAKKyAgICAyMTQsIDE2NywgMjUxLCA2OCwgMiwgMjE0LCAxNjcsIDI1MSwgNjgsIDIsIDIxNSwgMTM2LCAyNTEsIDY4LCAxNiwgMjA1LCAKKyAgICAyMzAsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIyMiwgMjAyLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCA2MywgMjA0LCAKKyAgICA5MiwgMjQ2LCA0OCwgNiwgMSwgMjA0LCAzMCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjAyLCAyMTMsIDIwNCwgOTIsIAorICAgIDI0NiwgNDgsIDYsIDEsIDE5OCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjAyLCAyNDcsIDIwNCwgOTIsIDI0NiwgNDgsIAorICAgIDYsIDEsIDIzMSwgODMsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwNiwgMTc4LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAKKyAgICA3NCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgNzgsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI1MCwgMjIzLCAyMDQsIAorICAgIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMzksIDgsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIyOSwgMjYsIDIwNCwgOTIsIDI0NiwgCisgICAgNDgsIDYsIDEsIDI0MSwgNTYsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwMiwgMTk3LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAKKyAgICAxLCAyMDcsIDMxLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNDEsIDc1LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMjAsIAorICAgIDc2LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDcsIDIzNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjIxLCAzNywgCisgICAgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjQ0LCAyMTIsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI1MCwgNDksIDIwNCwgCisgICAgOTIsIDI0NiwgNDgsIDYsIDEsIDI1MCwgMjQ3LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNDcsIDE5MywgMjA0LCA5MiwgCisgICAgMjQ2LCA0OCwgNiwgMSwgMjE3LCAxOTEsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIzNiwgMjI4LCAyMDQsIDkyLCAyNDYsIAorICAgIDQ4LCA2LCAxLCAyMzYsIDEyNCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjM2LCA1MSwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgCisgICAgMSwgMjM3LCA5MiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjExLCAxMTYsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIAorICAgIDIxMiwgMTQyLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDUsIDE5MCwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjIyLCAKKyAgICAyMDIsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDYzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMDQsIDMwLCAyMDQsIAorICAgIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMDIsIDIxMywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMTk4LCAyMDQsIDkyLCAyNDYsIAorICAgIDQ4LCA1LCAxLCAyMDIsIDI0NywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjMxLCA4MywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgCisgICAgMSwgMjA2LCAxNzgsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDc0LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCA3OCwgMjA0LCAKKyAgICA5MiwgMjQ2LCA0OCwgNSwgMSwgMjUwLCAyMjMsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIzOSwgOCwgMjA0LCA5MiwgCisgICAgMjQ2LCA0OCwgNSwgMSwgMjI5LCAyNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjQxLCA1NiwgMjA0LCA5MiwgMjQ2LCAKKyAgICA0OCwgNSwgMSwgMjAyLCAxOTcsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIwNywgMzEsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIAorICAgIDEsIDI0MSwgNzUsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIyMCwgNzYsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIwNywgCisgICAgMjM2LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMjEsIDM3LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNDQsIDIxMiwgCisgICAgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjUwLCA0OSwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjUwLCAyNDcsIDIwNCwgCisgICAgOTIsIDI0NiwgNDgsIDUsIDEsIDI0NywgMTkzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMTcsIDE5MSwgMjA0LCA5MiwgCisgICAgMjQ2LCA0OCwgNSwgMSwgMjM2LCAyMjgsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIzNiwgMTI0LCAyMDQsIDkyLCAyNDYsIAorICAgIDQ4LCA1LCAxLCAyMzYsIDUxLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMzcsIDkyLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAKKyAgICAxLCAyMTEsIDExNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjEyLCAxNDIsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIAorICAgIDIwNSwgMTkwLCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMjAyLCA4NCwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDEwNSwgMjA0LCAKKyAgICA5MiwgMjQ2LCA0OCwgMTcsIDEwOCwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDE0NywgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIAorICAgIDE0OSwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDE3MCwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDE5NSwgMjA0LCA5MiwgMjQ2LCAKKyAgICA0OCwgMTcsIDIxMywgMTExLCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTk5LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMjIyLCAKKyAgICA2MywgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIDIwOSwgMTUyLCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjA3LCAxNTEsIDIwNCwgCisgICAgOTIsIDI0NiwgNDgsIDQyLCAyMDksIDUzLCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjM5LCAxNTMsIDIwNCwgOTIsIDI0NiwgCisgICAgNDgsIDQyLCAyNDAsIDE4LCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjEyLCA3NCwgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIAorICAgIDIxMywgMTA1LCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjQxLCAxMzQsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyMjIsIDU4LCAKKyAgICAyMDQsIDkyLCAyNDYsIDQ4LCAyMjAsIDM5LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAxODUsIDIxOSwgNDksIAorICAgIDI0NiwgNjYsIDIzNywgNzcsIDEsIDE3MywgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjI4LCAxMTMsIDIxOSwgCisgICAgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDE5MiwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjQ0LCAyMTIsIAorICAgIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIwMiwgMTE2LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAKKyAgICAyMDYsIDg2LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMjIsIDIwMywgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCAKKyAgICA3NywgMSwgMTUyLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMzksIDgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCisgICAgNzcsIDEsIDIyOSwgMTQ0LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMTUsIDM2LCAyMTksIDQ5LCAyNDYsIDY2LCAKKyAgICAyMzcsIDc3LCAxLCAyNDksIDMyLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyNDcsIDkyLCAyMTksIDQ5LCAyNDYsIAorICAgIDY2LCAyMzcsIDc3LCAxLCAyMTAsIDIyLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMDksIDEwOCwgMjE5LCA0OSwgCisgICAgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjAxLCAyMDEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIxOCwgMjA4LCAKKyAgICAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMTYsIDIyMCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgCisgICAgMjQwLCAxMDgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDI0NiwgMTk5LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIAorICAgIDc3LCAxLCA2MywgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNzQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIAorICAgIDEsIDc1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA3OCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgCisgICAgNjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIwNywgMzksIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIAorICAgIDIzNSwgMTcxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjE5LCAxODQsIDIxOSwgNDksIDI0NiwgNjYsIAorICAgIDIzNywgNzcsIDEsIDQ2LCAyMzAsIDU0LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjEwLCA2OSwgMjE5LCAKKyAgICA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDIyNiwgMTg1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgCisgICAgMjIzLCAxNjMsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAxNTksIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCisgICAgNzcsIDEsIDQ2LCAyMDQsIDE0NCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDIyMiwgMjA1LCAyMTksIDQ5LCAKKyAgICAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjAzLCAxMjQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNSwgMjQ1LCAKKyAgICAxNDMsIDIyNywgMjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNSwgMjQ1LCAyMDgsIDE2MSwgMjE5LCA0OSwgCisgICAgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDIzOCwgNDUsIDIxMSwgNjEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIAorICAgIDIxNSwgMjQ1LCAxNDMsIDE2MywgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMTUsIDI0NSwgMTQzLCAKKyAgICAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNCwgMjM5LCAyMzgsIDQ1LCAyMTEsIDYyLCAyNDAsIDUsIAorICAgIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNCwgMjM5LCAxNDMsIDIyNywgMjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCisgICAgNzcsIDIxNCwgMjM5LCAyMDgsIDE2MSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDE0MywgMTYzLCAKKyAgICAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNCwgMjM5LCAxNDMsIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCAKKyAgICA2NiwgMjM3LCA3NywgMjI0LCAxNDksIDIwOCwgMTYxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMzgsIDQ1LCAyMTEsIAorICAgIDYyLCAyMDYsIDY4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMjQsIDE0OSwgMTQzLCAxNjMsIDI0MCwgNSwgMjE5LCAKKyAgICA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjI0LCAxNDksIDE0MywgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAKKyAgICAyMjYsIDI1NCwgMTQzLCAyMjcsIDI4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMjYsIDI1NCwgMjA4LCAxNjEsIAorICAgIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIzOCwgNDUsIDIxMSwgNjEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIAorICAgIDIyNiwgMjU0LCAxNDMsIDE2MywgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMjYsIDI1NCwgMTQzLCAKKyAgICAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIzOCwgNDUsIDIxMSwgNjIsIDI0MCwgNSwgOSwgMiwgNjMsIDksIAorICAgIDIsIDM0LCAyMywgNjMsIDksIDIsIDM0LCAyMywgMjQ5LCAxNSwgOSwgMiwgMzQsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIAorICAgIDksIDIsIDM0LCAyMywgMTUyLCA5LCAyLCAzNCwgMjMsIDIzMSwgODUsIDksIDIsIDM0LCAyMywgMjI4LCA5MywgMjM3LCAKKyAgICAyMDgsIDksIDIsIDM0LCAyMywgMjIzLCAxOTksIDksIDIsIDM0LCAyMywgMjE1LCAyMiwgOSwgMiwgMjU0LCAzNCwgOSwgMiwgCisgICAgMjUxLCAyMzIsIDksIDIsIDI1MSwgMjMzLCAyMywgMjUwLCA3MywgOSwgMiwgMjUxLCAyMzMsIDIzLCAyNDIsIDMwLCAyMzcsIAorICAgIDIwOCwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMzgsIDI0NiwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMzgsIDIzMywgMjA5LCAKKyAgICAxNDEsIDksIDIsIDI1MSwgMjMzLCAyMywgMTUyLCA5LCAyLCAyNTEsIDIzMywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAKKyAgICAyLCAyNTEsIDIzMywgMjMsIDIzMSwgNTksIDksIDIsIDI1MSwgMjMzLCAyMywgMjI4LCA5NCwgOSwgMiwgMjUxLCAyMzMsIAorICAgIDIzLCAyMTMsIDI3LCA5LCAyLCAyNTEsIDIzMywgMjMsIDEwNiwgOTEsIDEwNiwgOTEsIDY4LCA5LCAyLCAyNTEsIDIzMywgCisgICAgMjM3LCAyMDgsIDksIDIsIDI1MSwgMTQ5LCA5LCAyLCAyNTEsIDE1MCwgMjMsIDI0OCwgMjUyLCA5LCAyLCAyNTEsIDE1MCwgCisgICAgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjUxLCAxNTAsIDIzLCAyMjUsIDIxLCA5MSwgMjQxLCA5MiwgOSwgMiwgCisgICAgMjUxLCAxNTAsIDIzLCAyMTMsIDg4LCA5LCAyLCAyNTEsIDE1MCwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyNTEsIDEyMiwgOSwgCisgICAgMiwgMjUxLCA0NywgOSwgMiwgMjUxLCA0OCwgMjMsIDI0MSwgMjIsIDksIDIsIDI1MSwgNDgsIDIzLCAyMTIsIDI0NSwgOTEsIAorICAgIDIzOCwgNTUsIDksIDIsIDI1MSwgMzksIDksIDIsIDI1MSwgNDAsIDIzLCAyNTEsIDM5LCA5LCAyLCAyNTEsIDQwLCAyMywgCisgICAgMjQzLCAxODYsIDksIDIsIDI1MSwgNDAsIDIzLCAyMzgsIDU1LCA5LCAyLCAyNTEsIDQwLCAyMywgMTUyLCA5LCAyLCAyNTEsIAorICAgIDQwLCAyMywgMjMwLCAyNywgOSwgMiwgMjUxLCA0MCwgMjMsIDIyOSwgMTAwLCA5LCAyLCAyNTEsIDQwLCAyMywgMjEzLCA0MywgCisgICAgOSwgMiwgMjUxLCA0MCwgMjMsIDIwNiwgMTg2LCA5LCAyLCAyNTEsIDM2LCA5LCAyLCAyNTEsIDI4LCA5LCAyLCAyNTAsIAorICAgIDI0MywgOSwgMiwgMjUwLCAyNDQsIDIzLCAyMTMsIDQzLCA5LCAyLCAyNTAsIDIzMSwgOSwgMiwgMjUwLCAyMzIsIDExNSwgCisgICAgMjUwLCAyMzEsIDksIDIsIDI1MCwgMjMyLCAxMjYsIDIwOCwgMjE5LCA5LCAyLCAyNTAsIDIzMiwgOTEsIDIyMywgOTcsIAorICAgIDIxOSwgMjUxLCAyNTAsIDIzMiwgOTEsIDIyMywgOTYsIDksIDIsIDI1MCwgMjMyLCA5MSwgMjIzLCA5NywgMjExLCAxNzYsIAorICAgIDksIDIsIDI1MCwgMjAwLCA5LCAyLCAyNTAsIDE3MCwgOSwgMiwgMjUwLCAxMzgsIDksIDIsIDI1MCwgMTM5LCAyMywgMjI4LCAKKyAgICAxODMsIDksIDIsIDI1MCwgMTEwLCA5LCAyLCAyNTAsIDgwLCA5LCAyLCAyNTAsIDc1LCA5LCAyLCAyNTAsIDc2LCAyMDIsIAorICAgIDM1LCAyMDksIDE0MSwgOSwgMiwgMjUwLCA3NiwgMjMwLCAzMSwgMjA5LCAxNDEsIDksIDIsIDI1MCwgNzYsIDExNSwgMjUwLCAKKyAgICA3NiwgMjA3LCAxOTgsIDExNSwgMjA3LCAxOTgsIDIwNywgMTk4LCAxMTUsIDIwNywgMTk4LCAyMTksIDk2LCA5LCAyLCAyNTAsIAorICAgIDc2LCAxMTUsIDI1MCwgNzYsIDExNSwgMjUwLCA3NSwgOSwgMiwgMjUwLCA3NiwgMTE1LCAyNTAsIDc2LCAxMTUsIDI1MCwgCisgICAgNzYsIDI0NSwgMTI0LCAyNTAsIDc2LCAxMTUsIDI1MCwgNzYsIDExNSwgMjUwLCA3NSwgOSwgMiwgMjUwLCA3MywgOSwgMiwgCisgICAgMjUwLCA2OSwgOSwgMiwgMjQ5LCAzMiwgOSwgMiwgMjQ5LCAxNSwgOSwgMiwgMjQ5LCA5LCA5LCAyLCAyNDksIDMsIDksIDIsIAorICAgIDI0OCwgMjUzLCA5LCAyLCAyNDgsIDI1NCwgMTE1LCAyNDgsIDI1MywgOSwgMiwgMjQ4LCAyNTIsIDksIDIsIDE0MiwgOSwgMiwgCisgICAgMjQ4LCAyMzAsIDksIDIsIDI0OCwgODYsIDksIDIsIDI0OCwgODcsIDIzLCA2MywgOSwgMiwgMjQ4LCA4NywgMjMsIDIzOCwgCisgICAgMjI0LCA5LCAyLCAyNDgsIDg3LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDI0NywgMTkzLCA5LCAyLCAyNDcsIAorICAgIDE5NCwgMTE1LCAyNDcsIDE5NCwgMjUxLCAyMzIsIDksIDIsIDI0NywgMTk0LCAxMTUsIDI0NywgMTk0LCAyMDYsIDI1NSwgOSwgCisgICAgMiwgMjQ3LCAxOTQsIDI0NSwgMTI0LCAyNDcsIDE5MywgOSwgMiwgMjQ3LCAxNzEsIDksIDIsIDI0NywgMTcyLCAxMTUsIAorICAgIDI0NywgMTcxLCA5LCAyLCAyNDcsIDE2MCwgOSwgMiwgMjQ3LCAxNTksIDksIDIsIDI0NCwgMjEyLCA5LCAyLCAyNDQsIDIwMywgCisgICAgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAzNCwgOTEsIDIyNSwgNzksIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAKKyAgICAyMywgMjUwLCAyNDMsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjQ4LCAyNTIsIDksIDIsIDI0NCwgMjA0LCAyMjksIAorICAgIDY5LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzksIDgsIDksIDIsIDI0NCwgMjA0LCAKKyAgICAyMjksIDY5LCAyMywgMjM5LCA5LCA5MSwgMjI1LCA3OSwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzgsIDgxLCAKKyAgICA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzOCwgNjMsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjM3LCAKKyAgICAyMTksIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMTUyLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzMCwgCisgICAgMjI0LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzMCwgMjI1LCA5MSwgMjI2LCAyMzksIDksIDIsIDI0NCwgMjA0LCAKKyAgICAyMjksIDY5LCAyMywgMjMwLCAxMiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMjgsIDExMywgOSwgMiwgMjQ0LCAKKyAgICAyMDQsIDIyOSwgNjksIDIzLCAyMjYsIDIzOSwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMjYsIDI0MCwgOTEsIAorICAgIDIyNSwgNzgsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjI2LCAyMjIsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAKKyAgICAyMywgMjIyLCAyNDAsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjE5LCA5NywgOTEsIDIxOSwgOTYsIDksIDIsIAorICAgIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjEyLCAxNjIsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjA5LCAyNDIsIAorICAgIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjA3LCA0MSwgOTEsIDIzOCwgNjMsIDksIDIsIDI0NCwgMjA0LCAyMjksIAorICAgIDY5LCAyMywgMjA2LCAxODYsIDksIDIsIDI0NCwgMTc1LCA5LCAyLCAyNDQsIDE1NCwgOSwgMiwgMjQ0LCAxNTMsIDksIDIsIAorICAgIDI0NCwgMTUyLCA5LCAyLCAyNDMsIDIzMywgOSwgMiwgMjQzLCAyMTUsIDksIDIsIDI0MywgMTg4LCA5LCAyLCAyNDMsIDE4OSwgCisgICAgMjMsIDIxMywgNDMsIDksIDIsIDI0MywgMTg2LCA5LCAyLCAyNDMsIDE3NiwgOSwgMiwgMjQzLCAxNzcsIDIyOSwgMjMyLCAKKyAgICAxMDYsIDIzNywgMjA5LCAyNDMsIDE1NiwgOSwgMiwgMjQzLCAxNTYsIDksIDIsIDI0MiwgNDIsIDksIDIsIDI0MiwgNDMsIAorICAgIDExNSwgMjQyLCA0MiwgOSwgMiwgMjQyLCA0MywgMjM3LCAyMDgsIDksIDIsIDI0MiwgNDMsIDIxMywgMjQsIDksIDIsIDI0MiwgCisgICAgNDAsIDksIDIsIDI0MiwgNDEsIDIzLCAyNDEsIDQsIDksIDIsIDI0MiwgMzksIDksIDIsIDI0MiwgMzcsIDksIDIsIDI0MiwgCisgICAgMzYsIDksIDIsIDI0MiwgMzUsIDksIDIsIDI0MiwgMzEsIDksIDIsIDI0MiwgMjksIDksIDIsIDI0MiwgMzAsIDIzNywgMjA4LCAKKyAgICA5LCAyLCAyNDIsIDMwLCAyMzcsIDIwOSwgMjM3LCAyMDgsIDksIDIsIDI0MiwgMjgsIDksIDIsIDI0MiwgMjEsIDksIDIsIAorICAgIDc0LCA5LCAyLCAxODgsIDIzLCAyMTksIDk2LCA5LCAyLCAxODgsIDExNSwgMTg4LCAyMjEsIDQxLCAxMTUsIDIyMSwgNDAsIAorICAgIDksIDIsIDI0MSwgMTkwLCA5LCAyLCAyNDEsIDE5MSwgMjMsIDM0LCA5MSwgMjM3LCAxNjAsIDkxLCAyNDQsIDIxMiwgOSwgMiwgCisgICAgMjQxLCAxOTEsIDIzLCAyMzgsIDIyNCwgOSwgMiwgMjQxLCAxOTEsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjQxLCAxOTEsIDIzLCAKKyAgICAyMTUsIDgsIDksIDIsIDI0MSwgMTkxLCAyMywgMjEzLCA0MywgOSwgMiwgMjQxLCAxOTEsIDIzLCA2OCwgOSwgMiwgMjQxLCAKKyAgICAxNjMsIDksIDIsIDI0MSwgMTUxLCA5LCAyLCAyNDEsIDEyMiwgOSwgMiwgMjQxLCA5MiwgOSwgMiwgMjQxLCA5MywgMjMsIAorICAgIDIzOCwgMjMyLCA5LCAyLCAyNDEsIDkzLCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyNDEsIDkzLCAyMywgMjI1LCAKKyAgICAyMCwgOSwgMiwgMjQxLCA5MywgMjQ1LCAxMjQsIDI0MSwgOTIsIDksIDIsIDI0MSwgOTMsIDIxOSwgMjUxLCAyNDEsIDkyLCAKKyAgICA5LCAyLCAyNDEsIDkzLCAyMTEsIDE3NiwgOSwgMiwgMjQxLCAyNSwgOSwgMiwgMjQxLCAyMiwgOSwgMiwgMjQxLCA0LCA5LCAKKyAgICAyLCAyNDAsIDE3OSwgOSwgMiwgMjQwLCAxODAsIDIzLCA2MywgOSwgMiwgMjQwLCAxODAsIDIzLCAzNCwgOTEsIDIyOCwgMzAsIAorICAgIDksIDIsIDI0MCwgMTgwLCAyMywgMzQsIDkxLCAyMjgsIDMxLCAyMywgMjI4LCAzMCwgOSwgMiwgMjQwLCAxODAsIDIzLCAKKyAgICAyNTAsIDIzMSwgOSwgMiwgMjQwLCAxODAsIDIzLCAyNDksIDE1LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDI0MiwgMzAsIDIzNywgCisgICAgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDI0MiwgMzAsIDIzNywgMjA5LCAyMzcsIDIwOCwgOSwgMiwgMjQwLCAxODAsIDIzLCAKKyAgICAxNTIsIDksIDIsIDI0MCwgMTgwLCAyMywgMjM3LCAxNjAsIDIzNywgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIzMSwgODYsIAorICAgIDIzNywgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyOSwgMjMxLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyOSwgMjMyLCAKKyAgICAyMTEsIDE3NiwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMjgsIDIwNywgOSwgMiwgMjQwLCAxODAsIDIzLCAyMjgsIDExMywgOSwgCisgICAgMiwgMjQwLCAxODAsIDIzLCAyMjgsIDMxLCAyMywgMjI4LCAzMCwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMjcsIDE0OCwgOSwgCisgICAgMiwgMjQwLCAxODAsIDIzLCAyMjYsIDIzOSwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMDcsIDQwLCA5LCAyLCAyNDAsIDE4MCwgCisgICAgMjMsIDIwNywgMjksIDksIDIsIDIzOSwgOCwgOSwgMiwgMjM5LCA5LCAyMzcsIDIwOCwgOSwgMiwgMjM5LCA2LCA5LCAyLCAKKyAgICAyMzksIDcsIDIzLCAzNCwgOTEsIDI0NCwgMjEzLCA5MSwgMTUyLCA5LCAyLCAyMzksIDcsIDIzLCAzNCwgOTEsIDE1MiwgOSwgCisgICAgMiwgMjM5LCA3LCAyMywgMzQsIDkxLCAyMzEsIDg1LCA5LCAyLCAyMzksIDcsIDIzLCAyNTEsIDE1MCwgMjA5LCAxNDIsIDkxLCAKKyAgICAyMTAsIDEwLCA5LCAyLCAyMzksIDcsIDIzLCAyNTAsIDIzMSwgOSwgMiwgMjM5LCA3LCAyMywgMjUwLCA3NSwgOSwgMiwgCisgICAgMjM5LCA3LCAyMywgMjUwLCA3NCwgOTEsIDIzOCwgMjQ2LCA5LCAyLCAyMzksIDcsIDIzLCAyNDksIDE1LCA5LCAyLCAyMzksIAorICAgIDcsIDIzLCAyNDgsIDIzMSwgOTEsIDIxNiwgMjIwLCA5LCAyLCAyMzksIDcsIDIzLCAyNDcsIDE2MCwgOSwgMiwgMjM5LCA3LCAKKyAgICAyMywgMjQ3LCAxNjEsIDkxLCAyMTYsIDIyMCwgOSwgMiwgMjM5LCA3LCAyMywgMjQ0LCAyMTIsIDksIDIsIDIzOSwgNywgMjMsIAorICAgIDI0MywgMjMzLCA5LCAyLCAyMzksIDcsIDIzLCAyNDMsIDE4OSwgMjMsIDIxMywgNDMsIDksIDIsIDIzOSwgNywgMjMsIDI0MiwgCisgICAgNDAsIDksIDIsIDIzOSwgNywgMjMsIDI0MSwgMTIyLCA5LCAyLCAyMzksIDcsIDIzLCAyNDEsIDEyMywgOTEsIDIyOCwgMTEzLCAKKyAgICA5LCAyLCAyMzksIDcsIDIzLCAyNDEsIDkyLCA5LCAyLCAyMzksIDcsIDIzLCAyNDEsIDkzLCAyMywgMjM4LCAyMzMsIDIwOSwgCisgICAgMTQxLCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgMjI0LCA5LCAKKyAgICAyLCAyMzksIDcsIDIzLCAyMzgsIDgxLCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIDc5LCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIAorICAgIDgwLCA5MSwgNjMsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgNjQsIDkxLCAyMTEsIDEwLCA5LCAyLCAyMzksIDcsIDIzLCAKKyAgICAyMzcsIDE2MCwgOTEsIDIyNiwgMjQwLCA5MSwgMjQxLCA0LCA5LCAyLCAyMzksIDcsIDIzLCAyMzcsIDE0MCwgOSwgMiwgCisgICAgMjM5LCA3LCAyMywgMjM3LCAxNDEsIDkxLCAyMjgsIDExMywgOSwgMiwgMjM5LCA3LCAyMywgMjM3LCA0LCA5MSwgMjI3LCAKKyAgICAxNDgsIDksIDIsIDIzOSwgNywgMjMsIDIzNiwgMjEsIDksIDIsIDIzOSwgNywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAKKyAgICAyLCAyMzksIDcsIDIzLCAyMzAsIDIxMCwgOTEsIDIzNiwgMjcsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMzksIDcsIDIzLCAyMzAsIAorICAgIDEyLCA5LCAyLCAyMzksIDcsIDIzLCAyMjksIDIzMSwgOSwgMiwgMjM5LCA3LCAyMywgMjI5LCA5NCwgOSwgMiwgMjM5LCA3LCAKKyAgICAyMywgMjI5LCA5NSwgOTEsIDIyOCwgMzAsIDksIDIsIDIzOSwgNywgMjMsIDIyOCwgMjA4LCA5MSwgMjUwLCAyMzEsIDksIDIsIAorICAgIDIzOSwgNywgMjMsIDIyOCwgMTEzLCA5LCAyLCAyMzksIDcsIDIzLCAyMjUsIDIxLCA5MSwgMjQxLCA5MiwgOSwgMiwgMjM5LCAKKyAgICA3LCAyMywgMjI0LCAxNTUsIDksIDIsIDIzOSwgNywgMjMsIDIyMSwgNDAsIDksIDIsIDIzOSwgNywgMjMsIDIyMSwgNDEsIAorICAgIDExNSwgMjIxLCA0MCwgOSwgMiwgMjM5LCA3LCAyMywgMTg1LCA5LCAyLCAyMzksIDcsIDIzLCAyMTUsIDgsIDksIDIsIDIzOSwgCisgICAgNywgMjMsIDIxNCwgMjMwLCA5LCAyLCAyMzksIDcsIDIzLCAyMTMsIDQzLCA5LCAyLCAyMzksIDcsIDIzLCAyMTMsIDQ0LCAKKyAgICA5MSwgMjA3LCAxODEsIDksIDIsIDIzOSwgNywgMjMsIDIxMywgOSwgOSwgMiwgMjM5LCA3LCAyMywgMjEwLCAyMjAsIDksIDIsIAorICAgIDIzOSwgNywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMzksIDcsIDIzLCA2OCwgOSwgMiwgMjM5LCA3LCAyMywgMjA3LCAyOSwgOSwgCisgICAgMiwgMjM5LCA3LCAyMywgMjA3LCAzMCwgOTEsIDI0MiwgNDIsIDksIDIsIDIzOSwgNywgMTE1LCAyMzksIDYsIDksIDIsIAorICAgIDIzOSwgMSwgOSwgMiwgMjM5LCAyLCAyNDUsIDEyNCwgMjM5LCAxLCA5LCAyLCAyMzgsIDI1NSwgOSwgMiwgMjM5LCAwLCAKKyAgICAxMTUsIDIzOSwgMCwgMjM4LCAyMjUsIDExNSwgMjM4LCAyMjQsIDksIDIsIDIzOCwgMjQ2LCA5LCAyLCAyMzgsIDI0NywgCisgICAgMjM5LCAwLCAxMTUsIDIzOSwgMCwgMjM4LCAyMjUsIDExNSwgMjM4LCAyMjQsIDksIDIsIDIzOCwgMjQ1LCA5LCAyLCAyMzgsIAorICAgIDI0MywgOSwgMiwgMjM4LCAyMzQsIDksIDIsIDIzOCwgMjMyLCA5LCAyLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIzOCwgCisgICAgMjMzLCAxMTUsIDIzOCwgMjMyLCA5LCAyLCAyMzgsIDIzMywgMjQ1LCAxMjQsIDIzOCwgMjMyLCA5LCAyLCAyMzgsIDIyNCwgCisgICAgOSwgMiwgMjM4LCAyMjMsIDksIDIsIDIzOCwgMjE4LCA5LCAyLCAyMzgsIDE2MiwgOSwgMiwgMjM4LCAxNjMsIDIzLCAyMjgsIAorICAgIDE4MywgOSwgMiwgMjM4LCA4MSwgOSwgMiwgMjM4LCA4MiwgMjMsIDc0LCA5LCAyLCAyMzgsIDgyLCAyMywgNjgsIDksIDIsIAorICAgIDIzOCwgODIsIDI0NSwgMTI0LCAyMzgsIDgxLCA5LCAyLCAyMzgsIDc5LCA5LCAyLCAyMzgsIDgwLCAxMTUsIDIzOCwgNzksIAorICAgIDksIDIsIDIzOCwgODAsIDI0NSwgMTI0LCAyMzgsIDc5LCA5LCAyLCAyMzgsIDc2LCA5LCAyLCAyMzgsIDYzLCA5LCAyLCAKKyAgICAyMzgsIDY0LCAyMzcsIDIwOCwgOSwgMiwgMjM4LCA2MSwgOSwgMiwgMjM4LCA2MiwgMjMsIDM0LCA5MSwgMjMxLCA4NSwgOSwgCisgICAgMiwgMjM4LCA2MiwgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjM4LCA2MiwgMjMsIDIzMSwgODUsIDksIDIsIAorICAgIDIzOCwgNjIsIDIzLCAyMjYsIDI0MCwgOTEsIDIzMSwgODUsIDksIDIsIDIzOCwgNjIsIDIzLCAxODUsIDksIDIsIDIzOCwgCisgICAgNTcsIDksIDIsIDIzOCwgNTUsIDksIDIsIDIzOCwgNTYsIDI0NSwgMTI0LCAyMzgsIDU1LCA5LCAyLCAyMzgsIDU2LCAyMywgCisgICAgMjQ5LCAxNSwgOSwgMiwgMjM4LCA1NiwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMzgsIDU2LCAyMDksIDE0MSwgOSwgMiwgMjM3LCAKKyAgICAyMzAsIDksIDIsIDIzNywgMjMxLCAyNDUsIDEyNCwgMjM3LCAyMzAsIDksIDIsIDIzNywgMjI4LCA5LCAyLCAyMzcsIDIyOSwgCisgICAgMjMsIDIzMCwgMTIsIDksIDIsIDIzNywgMjI5LCAyMywgMjMwLCAxMywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAKKyAgICAyMzcsIDIyOSwgMjMsIDIyMSwgNDAsIDksIDIsIDIzNywgMjI5LCAyMywgMjE1LCA5LCA5MSwgMjA3LCAxOTcsIDksIDIsIAorICAgIDIzNywgMjI5LCAyMzcsIDIwOCwgOSwgMiwgMjM3LCAyMTksIDksIDIsIDIzNywgMjIwLCAyMywgMzQsIDkxLCAyMjgsIDE4MywgCisgICAgOSwgMiwgMjM3LCAyMjAsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjM3LCAyMjAsIDExNSwgMjM3LCAyMjAsIDIyNiwgMjMwLCA5LCAKKyAgICAyLCAyMzcsIDIxMiwgOSwgMiwgMjM3LCAyMTAsIDksIDIsIDIzNywgMjExLCAyMywgMjEzLCA0MywgOSwgMiwgMjM3LCAyMDIsIAorICAgIDksIDIsIDIzNywgMjAxLCA5LCAyLCAyMzcsIDE5NywgOSwgMiwgMjM3LCAxOTYsIDksIDIsIDE1MiwgOSwgMiwgMjM3LCAKKyAgICAxNjAsIDIwOSwgMTQxLCA5LCAyLCAyMzcsIDE2MCwgMjM3LCAyMDgsIDksIDIsIDIzNywgMTQwLCA5LCAyLCAyMzcsIDMsIDksIAorICAgIDIsIDIzNywgNCwgMjMsIDI1MCwgNzUsIDksIDIsIDIzNywgNCwgMjMsIDI1MCwgNzMsIDksIDIsIDIzNywgNCwgMjMsIDI0OSwgCisgICAgMTUsIDksIDIsIDIzNywgNCwgMjMsIDI0MywgMTU2LCA5LCAyLCAyMzcsIDQsIDIzLCAyMzgsIDI1NSwgOSwgMiwgMjM3LCA0LCAKKyAgICAyMywgMjI5LCA4NCwgOSwgMiwgMjM3LCA0LCAyMywgMjIxLCA0MCwgOSwgMiwgMjM3LCA0LCAyMywgMjEzLCA0MywgOSwgMiwgCisgICAgMjM3LCA0LCAyMywgNjgsIDksIDIsIDIzNiwgMjYsIDksIDIsIDIzNiwgMjEsIDksIDIsIDIzNiwgMjIsIDIzLCAyNTAsIAorICAgIDIzMSwgOSwgMiwgMjM2LCAyMiwgMjMsIDIzNywgMTQwLCA5LCAyLCAyMzYsIDIyLCAyMywgMjI5LCAyMzEsIDksIDIsIDIzNiwgCisgICAgMjIsIDIzLCAyMjcsIDkyLCA5LCAyLCAyMzYsIDIyLCAyMywgMjA3LCAyOSwgOSwgMiwgMjM2LCAxNywgOSwgMiwgNzUsIDksIAorICAgIDIsIDIzNSwgMjA2LCA2MywgOSwgMiwgMjM1LCAxNjYsIDksIDIsIDIzMSwgMTEzLCA5LCAyLCAyMzEsIDExNCwgMTE1LCAKKyAgICAyMzEsIDExNCwgMjQ3LCAxNjAsIDksIDIsIDIzMSwgMTE0LCAxMTUsIDIzMSwgMTE0LCAyMTEsIDE3NiwgOSwgMiwgMjMxLCAKKyAgICA4OCwgOSwgMiwgMjMxLCA4NSwgOSwgMiwgMjMxLCA4NiwgMjQzLCAyMTUsIDksIDIsIDIzMSwgODYsIDIxNiwgNTcsIDksIDIsIAorICAgIDIzMSwgODYsIDExNSwgMjMxLCA4NiwgMjEyLCAyNDksIDExNSwgMjEyLCAyNDksIDIwNywgMzAsIDExNSwgMjA3LCAyOSwgOSwgCisgICAgMiwgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIzMSwgNzcsIDksIDIsIDIzMSwgNzgsIDIzLCAyMzgsIDIzMywgMjA5LCAKKyAgICAxNDEsIDksIDIsIDIzMSwgNzYsIDksIDIsIDIzMSwgNjYsIDksIDIsIDIzMSwgNjcsIDIzLCAyMDksIDI0MiwgOSwgMiwgCisgICAgMjMxLCA2NywgMjQ1LCAxMjQsIDIzMSwgNjYsIDksIDIsIDIzMSwgNjcsIDIxOSwgMjUxLCAyMzEsIDY2LCA5LCAyLCAyMzEsIAorICAgIDY3LCAyMTEsIDE3NiwgOSwgMiwgMjMxLCA1OSwgOSwgMiwgMjMxLCA0OSwgOSwgMiwgMjMwLCAyMjQsIDksIDIsIDIzMCwgCisgICAgMjA5LCA5LCAyLCAxNzMsIDksIDIsIDIzMCwgNDQsIDIzLCA2MywgOSwgMiwgMjMwLCA0NCwgMjMsIDI1MSwgMTIyLCA5LCAyLCAKKyAgICAyMzAsIDQ0LCAyMywgMjUxLCAxMjMsIDkxLCAyMjgsIDIwNywgOSwgMiwgMjMwLCA0NCwgMjMsIDI1MCwgNzMsIDksIDIsIAorICAgIDIzMCwgNDQsIDIzLCAyNDksIDE1LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjQ4LCAyNTIsIDksIDIsIDIzMCwgNDQsIDIzLCAKKyAgICAxNDIsIDksIDIsIDIzMCwgNDQsIDIzLCAyNDgsIDg2LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjQxLCAyMiwgOSwgMiwgMjMwLCAKKyAgICA0NCwgMjMsIDI0MSwgNCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOSwgOCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgMjQ2LCAKKyAgICA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCAyMjQsIDksIDIsIAorICAgIDIzMCwgNDQsIDIzLCAyMzgsIDIyNSwgOTEsIDIxMywgODksIDkxLCA2MywgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgODEsIAorICAgIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDYzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCA1NiwgOTEsIDIxNCwgMjMwLCA5LCAKKyAgICAyLCAyMzAsIDQ0LCAyMywgMjM4LCA1NiwgMjQ1LCAxMjQsIDIzOCwgNTUsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzcsIDIzMCwgCisgICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIzNywgMjAxLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjMxLCA4NSwgOSwgMiwgMjMwLCA0NCwgCisgICAgMjMsIDIzMSwgNjYsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzAsIDEyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI5LCAxMDAsIDksIAorICAgIDIsIDIzMCwgNDQsIDIzLCAyMjksIDk0LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI3LCAxNDgsIDksIDIsIDIzMCwgNDQsIDIzLCAKKyAgICAyMjYsIDIzOSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNSwgMjAsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjUsIDIxLCA5MSwgCisgICAgMjQyLCA0MiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNSwgMjEsIDkxLCAyMzgsIDgxLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI1LCAKKyAgICAyMSwgOTEsIDIwOSwgMTg3LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI0LCAxNTUsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjQsIAorICAgIDE1NiwgOTEsIDIyMSwgMzUsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyMSwgCisgICAgNDAsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTgsIDE2NywgOSwgMiwgMjMwLCA0NCwgMjMsIDIxNSwgMTQ1LCA5LCAyLCAyMzAsIAorICAgIDQ0LCAyMywgMjE1LCAzNiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxNCwgMjMwLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEzLCA5MCwgCisgICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMywgNDMsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTMsIDksIDksIDIsIDIzMCwgNDQsIDIzLCAKKyAgICAyMTIsIDE5OSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMiwgMTQ5LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEwLCAyMjksIDksIDIsIAorICAgIDIzMCwgNDQsIDIzLCAyMDksIDIxOCwgOSwgMiwgMjMwLCA0NCwgMjMsIDY4LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjA3LCA0MCwgCisgICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIwNywgMjksIDksIDIsIDIzMCwgNDQsIDIzLCAyMDcsIDIsIDIzLCAxODUsIDksIDIsIAorICAgIDIzMCwgNDQsIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIwMiwgMzksIDksIDIsIDIzMCwgNDIsIDksIDIsIAorICAgIDIzMCwgNDMsIDI0NSwgMTI0LCAyMzAsIDQyLCA5LCAyLCAyMzAsIDMyLCA5LCAyLCAyMzAsIDI5LCA5LCAyLCAyMzAsIDI3LCAKKyAgICA5LCAyLCAyMzAsIDI2LCA5LCAyLCAyMzAsIDI0LCA5LCAyLCAyMzAsIDI1LCAxMTUsIDIzMCwgMjQsIDksIDIsIDIzMCwgMTIsIAorICAgIDksIDIsIDIzMCwgMTMsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjMwLCA4LCA5LCAyLCAyMzAsIDksIDIzLCAKKyAgICAyNDksIDE1LCA5LCAyLCAyMzAsIDksIDI0NSwgMTI0LCAyMzAsIDgsIDksIDIsIDIzMCwgNiwgOSwgMiwgMjMwLCA1LCA5LCAKKyAgICAyLCAyMjksIDIzMSwgOSwgMiwgMjI5LCAyMzIsIDIyOCwgOTUsIDIzLCAxMDYsIDExNSwgMjI4LCA5NSwgMjMsIDY4LCA5LCAKKyAgICAyLCAyMjksIDIzMiwgMTE1LCAyMjksIDIzMiwgMjI4LCA5NSwgMjMsIDEwNiwgMTE1LCAyMjgsIDk1LCAyMywgNjgsIDksIDIsIAorICAgIDIyOSwgMTcxLCA5LCAyLCAyMjksIDEwMCwgOSwgMiwgMjI5LCAxMDEsIDIzLCAyNDksIDE1LCA5LCAyLCAyMjksIDEwMSwgCisgICAgMjMsIDY4LCA5LCAyLCAyMjksIDEwMSwgMjMsIDIwNywgMjksIDksIDIsIDIyOSwgOTQsIDksIDIsIDIyOSwgODQsIDksIDIsIAorICAgIDIyOSwgNzEsIDksIDIsIDIyOSwgNzAsIDksIDIsIDIyOSwgNjgsIDksIDIsIDIyOSwgNjksIDExNSwgMjI5LCA2OCwgOSwgMiwgCisgICAgMjI4LCAyMDksIDksIDIsIDIyOCwgMjEwLCAxMTUsIDIzNywgNCwgMjMsIDI1MCwgNzQsIDIyOCwgMjEwLCAxMTUsIDIzNywgCisgICAgNCwgMjMsIDI1MCwgNzMsIDksIDIsIDIyOCwgMjA3LCA5LCAyLCAyMjgsIDIwNSwgOSwgMiwgMjI4LCAyMDYsIDIwNiwgNjksIAorICAgIDE4LCA5LCAyLCAyMjgsIDIwNCwgOSwgMiwgMjI4LCAxOTYsIDksIDIsIDIyOCwgMTk3LCAyMzcsIDIwOCwgOSwgMiwgMjI4LCAKKyAgICAxOTUsIDksIDIsIDIyOCwgMTgzLCA5LCAyLCAyMjgsIDE4NCwgMjE5LCAyNTEsIDIyOCwgMTgzLCA5LCAyLCAyMjgsIDE3NywgCisgICAgOSwgMiwgMjI4LCAxNTUsIDksIDIsIDIyOCwgMTEzLCA5LCAyLCAyMjgsIDk0LCA5LCAyLCAyMjgsIDk1LCAyMywgNjMsIDksIAorICAgIDIsIDIyOCwgOTUsIDIzLCAzNCwgOTEsIDI0NCwgMjEzLCA5MSwgMTUyLCA5LCAyLCAyMjgsIDk1LCAyMywgMzQsIDkxLCAKKyAgICAyMzgsIDIyNCwgOSwgMiwgMjI4LCA5NSwgMjMsIDM0LCA5MSwgMjI4LCAzMCwgOSwgMiwgMjI4LCA5NSwgMjMsIDI1MSwgMzksIAorICAgIDksIDIsIDIyOCwgOTUsIDIzLCAyNTAsIDIzMSwgOSwgMiwgMjI4LCA5NSwgMjMsIDI1MCwgNzYsIDIwMiwgMzUsIDIwOSwgCisgICAgMTQxLCA5LCAyLCAyMjgsIDk1LCAyMywgMjQ5LCAxNSwgOSwgMiwgMjI4LCA5NSwgMjMsIDI0OCwgODYsIDksIDIsIDIyOCwgCisgICAgOTUsIDIzLCAyNDQsIDE1NCwgOSwgMiwgMjI4LCA5NSwgMjMsIDI0MSwgOTIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzksIDgsIAorICAgIDksIDIsIDIyOCwgOTUsIDIzLCAyMzgsIDIyNCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzNywgMjE5LCA5LCAyLCAyMjgsIDk1LCAKKyAgICAyMywgMjM3LCAyMjAsIDkxLCAyMzcsIDIxOSwgOSwgMiwgMjI4LCA5NSwgMjMsIDE1MiwgOSwgMiwgMjI4LCA5NSwgMjMsIAorICAgIDIzNywgMTQwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjM3LCA0LCAyMywgMjIxLCA0MCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzMSwgCisgICAgODYsIDIzNywgMjA4LCA5LCAyLCAyMjgsIDk1LCAyMywgMjMxLCA2NiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzMSwgNjcsIDkxLCAKKyAgICAxNTIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzEsIDY3LCA5MSwgMjI2LCAyMzksIDksIDIsIDIyOCwgOTUsIDIzLCAyMjksIAorICAgIDEwMCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyOSwgODQsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjgsIDIwNywgOSwgMiwgMjI4LCAKKyAgICA5NSwgMjMsIDIyOCwgMTk2LCA5LCAyLCAyMjgsIDk1LCAyMywgMjI4LCAxOTcsIDkxLCAyMzcsIDQsIDkxLCA2MywgOSwgMiwgCisgICAgMjI4LCA5NSwgMjMsIDIyOCwgOTQsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjcsIDkyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjI2LCAKKyAgICAyMzksIDksIDIsIDIyOCwgOTUsIDIzLCAyMjYsIDIyNCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyNSwgMjAsIDksIDIsIDIyOCwgCisgICAgOTUsIDIzLCAyMjUsIDIxLCA5MSwgMjQxLCA5MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyMywgMTk5LCA5LCAyLCAyMjgsIDk1LCAKKyAgICAyMywgMjIyLCAyNDAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMTMsIDQ0LCA5MSwgMjEwLCAyMjAsIDksIDIsIDIyOCwgOTUsIAorICAgIDIzLCAyMTIsIDI0NSwgOTEsIDIzOCwgNTYsIDkxLCAyNDEsIDIyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjEyLCAyNDUsIDkxLCAKKyAgICAyMzgsIDU2LCAyMDksIDE0MSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIxMiwgMTk3LCA5LCAyLCAyMjgsIDk1LCAyMywgMjEyLCAKKyAgICAxOTgsIDkxLCAyMTIsIDE5NywgOSwgMiwgMjI4LCA5NSwgMjMsIDIxMCwgMjIwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjA5LCAKKyAgICAyNTUsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwOSwgMTg4LCA5MSwgMzQsIAorICAgIDkxLCAyMTEsIDExLCA5MSwgMjAxLCAyMDEsIDksIDIsIDIyOCwgOTUsIDIzLCA2OCwgOSwgMiwgMjI4LCA5NSwgMjMsIDEwNiwgCisgICAgOTEsIDYzLCA5LCAyLCAyMjgsIDk1LCAyMywgMTA2LCA5MSwgMTA2LCA5MSwgNjgsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDcsIAorICAgIDQxLCA5MSwgMjUwLCA3NSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwNywgMjksIDksIDIsIDIyOCwgOTUsIDIzLCAyMDYsIDE4NiwgCisgICAgOSwgMiwgMjI4LCA5NSwgMjExLCAxNzYsIDksIDIsIDIyOCwgOTIsIDksIDIsIDIyOCwgOTMsIDIzLCAyMTMsIDQzLCA5LCAyLCAKKyAgICAyMjgsIDkzLCAyMywgMjEzLCA0NCwgOTEsIDIxMCwgMjIwLCA5LCAyLCAyMjgsIDkzLCAyMzcsIDIwOCwgOSwgMiwgMjI4LCAKKyAgICA5MywgMjM3LCAyMDksIDExNSwgMjI4LCA5MywgMjM3LCAyMDksIDIxMywgNDMsIDksIDIsIDIyOCwgODgsIDksIDIsIDIyOCwgCisgICAgMzAsIDksIDIsIDIyOCwgMzEsIDIzLCAyMjgsIDMwLCA5LCAyLCAyMjgsIDI4LCA5LCAyLCAyMjgsIDI5LCAyMywgMjI4LCAKKyAgICAxODMsIDksIDIsIDIyOCwgMjksIDIzLCAyMjgsIDE4NCwgOTEsIDIxNSwgMTQ1LCA5LCAyLCAyMjcsIDE0OCwgOSwgMiwgCisgICAgMjI3LCAxMjksIDksIDIsIDIyNywgMTE3LCA5LCAyLCAyMjcsIDkyLCA5LCAyLCAyMjYsIDIzOSwgOSwgMiwgMjI2LCAyNDAsIAorICAgIDIzLCAyNDksIDE1LCA5LCAyLCAyMjYsIDIzNywgOSwgMiwgMjI2LCAyMzgsIDIzLCAyNTEsIDM5LCA5LCAyLCAyMjYsIDIzOCwgCisgICAgMjMsIDI0OSwgMTUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjQxLCA0LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDI0MSwgNSwgMjA5LCAKKyAgICAxNDEsIDksIDIsIDIyNiwgMjM4LCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIzNywgNCwgCisgICAgMjMsIDI0OSwgMTUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjMxLCA2NiwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzAsIDI5LCA5LCAKKyAgICAyLCAyMjYsIDIzOCwgMjMsIDIzMCwgMjcsIDksIDIsIDIyNiwgMjM4LCAyMywgMjMwLCAyOCwgOTEsIDI1MCwgNzUsIDksIDIsIAorICAgIDIyNiwgMjM4LCAyMywgMjI5LCAxMDAsIDksIDIsIDIyNiwgMjM4LCAyMywgMjI4LCAxMTQsIDkxLCAyNTAsIDc1LCA5LCAyLCAKKyAgICAyMjYsIDIzOCwgMjMsIDIyOCwgOTQsIDksIDIsIDIyNiwgMjM4LCAyMywgMjI1LCAyMSwgOTEsIDI0MSwgOTIsIDksIDIsIAorICAgIDIyNiwgMjM4LCAyMywgMjIyLCAyNDAsIDksIDIsIDIyNiwgMjM4LCAyMywgMjIxLCA4NCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAKKyAgICAyMTIsIDE2MywgOTEsIDI1MCwgNzUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjEyLCAxNDEsIDkxLCAyNDcsIDE5MywgOSwgMiwgCisgICAgMjI2LCAyMzgsIDIzLCAyMDcsIDE5NywgOSwgMiwgMjI2LCAyMzgsIDIwOSwgMTQxLCA5LCAyLCAyMjYsIDIzOCwgMjQ1LCAKKyAgICAxMjQsIDIyNiwgMjM3LCA5LCAyLCAyMjYsIDIzOCwgMjE5LCAyNTEsIDIyNiwgMjM3LCA5LCAyLCAyMjYsIDIzOCwgMjExLCAKKyAgICAxNzYsIDksIDIsIDIyNiwgMjM4LCAyMTMsIDI0LCA5LCAyLCAyMjYsIDIzNiwgOSwgMiwgMjI2LCAyMzAsIDksIDIsIDIyNiwgCisgICAgMjMxLCAxMTUsIDIyNiwgMjMwLCA5LCAyLCAyMjYsIDIzMSwgMjE5LCAyNTEsIDIyNiwgMjMwLCA5LCAyLCAyMjYsIDIzMSwgCisgICAgMjEzLCAyNCwgOSwgMiwgMjI2LCAyMjcsIDksIDIsIDIyNiwgMjI0LCA5LCAyLCAyMjYsIDIyMiwgOSwgMiwgMjI2LCAyMjMsIAorICAgIDExNSwgMjI2LCAyMjIsIDksIDIsIDIyNiwgMjIzLCAxMTUsIDIyNiwgMjIzLCAyMzgsIDIyNSwgMTE1LCAyMzgsIDIyNCwgOSwgCisgICAgMiwgMTkyLCA5LCAyLCAyMjUsIDE3NywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMjUsIDE3NywgMjM3LCAyMDgsIDksIDIsIAorICAgIDIyNSwgMTc2LCA5LCAyLCAyMjUsIDE0OCwgOSwgMiwgMjI1LCAxMDAsIDksIDIsIDIyNSwgNzksIDksIDIsIDIyNSwgNzgsIAorICAgIDksIDIsIDIyNSwgMjAsIDksIDIsIDIyNCwgMjI4LCA5LCAyLCAyMjQsIDE1NSwgOSwgMiwgMjI0LCAxMTAsIDksIDIsIDIyMywgCisgICAgMjQ2LCA5LCAyLCAyMjMsIDI0NywgMTE1LCAyMjMsIDI0NiwgOSwgMiwgMjIzLCAyMzUsIDksIDIsIDIyMywgMjM2LCAyMzcsIAorICAgIDIwOCwgOSwgMiwgMjIzLCAyMTcsIDksIDIsIDIyMywgMjAzLCA5LCAyLCAyMjMsIDE5OSwgOSwgMiwgMjIzLCAyMDAsIDIzLCAKKyAgICA2MywgOSwgMiwgMjIzLCAyMDAsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjIzLCAyMDAsIDIzLCAyMDIsIDExNiwgOSwgMiwgCisgICAgMjIzLCAyMDAsIDExNSwgMjIzLCAxOTksIDksIDIsIDIyMywgMjAwLCAxMTUsIDIyMywgMjAwLCAyMywgMzQsIDkxLCAyMDEsIAorICAgIDIwMSwgOSwgMiwgMjIzLCAyMDAsIDI0NSwgMTI0LCAyMjMsIDE5OSwgOSwgMiwgMjIzLCAxOTcsIDksIDIsIDIyMywgMTk4LCAKKyAgICAyMywgNjMsIDksIDIsIDIyMywgMTk4LCAyMywgMzQsIDkxLCAyNDMsIDIzMywgOSwgMiwgMjIzLCAxOTgsIDIzLCAyNDMsIAorICAgIDIzMywgOSwgMiwgMjIzLCAxOTgsIDIzNywgMjA4LCA5LCAyLCAyMDEsIDIwMSwgOSwgMiwgMjIzLCAxMDksIDksIDIsIDIyMywgCisgICAgOTYsIDksIDIsIDIyMywgOTcsIDIzMCwgMjM4LCA5LCAyLCAyMjMsIDk3LCAyMywgMjEyLCAyMDAsIDIwOSwgMTQxLCA5LCAyLCAKKyAgICAyMjMsIDk3LCAyMTksIDI1MSwgMjIzLCA5NiwgOSwgMiwgMjIzLCA5NSwgOSwgMiwgMjIzLCA4OCwgMjIxLCAyNiwgOSwgMiwgCisgICAgMjIzLCA4NywgOSwgMiwgMjIzLCA4NiwgOSwgMiwgMjIyLCAyNDAsIDksIDIsIDIyMiwgMjQxLCAyMywgNjMsIDksIDIsIAorICAgIDIyMiwgMjQxLCAyMywgMjA3LCAyOSwgOSwgMiwgMjIyLCAyNDEsIDIxMywgMjQsIDksIDIsIDIyMiwgMTAwLCA5LCAyLCAKKyAgICAyMjIsIDEwMSwgMjMsIDc0LCA5LCAyLCAyMjIsIDk5LCA5LCAyLCAyMjIsIDY5LCA5LCAyLCAyMjIsIDcwLCAyMywgMjM4LCAKKyAgICAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMjIsIDcwLCAyMywgMjM4LCAyMjUsIDkxLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIAorICAgIDIyMiwgNjUsIDksIDIsIDIyMiwgNjYsIDIzLCAyNTAsIDIzMSwgOSwgMiwgMjIyLCA2NiwgMjMsIDI1MCwgNzUsIDksIDIsIAorICAgIDIyMiwgNjYsIDIzLCAyNTAsIDc2LCA5MSwgMjUwLCA3NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIzNywgMjE5LCA5LCAyLCAKKyAgICAyMjIsIDY2LCAyMywgMjI1LCAyMSwgOTEsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIyMiwgCisgICAgMjQwLCA5LCAyLCAyMjIsIDY2LCAyMywgMjIxLCA0MCwgOSwgMiwgMjIyLCA2NiwgMjMsIDIxMywgNDMsIDksIDIsIDIyMiwgCisgICAgNjYsIDIzLCAyMTMsIDQ0LCA5MSwgMzQsIDI1MCwgMjMxLCA5LCAyLCAyMjIsIDY2LCAyMywgMjEzLCA0NCwgOTEsIDI1MCwgCisgICAgNzUsIDksIDIsIDIyMiwgNjYsIDIzLCAyMTMsIDQ0LCA5MSwgMjUwLCA3NiwgOTEsIDI1MCwgNzUsIDksIDIsIDIyMiwgNjYsIAorICAgIDIzLCAyMDcsIDQxLCA5MSwgMjUwLCA3NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIwNiwgMTg2LCA5LCAyLCAyMjIsIDUzLCA5LCAKKyAgICAyLCAyMjEsIDg0LCA5LCAyLCAyMjEsIDU2LCA5LCAyLCAyMjEsIDQwLCA5LCAyLCAyMjEsIDQxLCAyMjgsIDkzLCAyMywgCisgICAgMjM4LCAyMjQsIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIDIzLCAyMjUsIDc5LCA5LCAyLCAyMjEsIDQxLCAyMjgsIDkzLCAKKyAgICAyMywgMjE1LCA4LCA5LCAyLCAyMjEsIDQxLCAyMjgsIDkzLCAyMywgMjE1LCA5LCAxMTUsIDIyMSwgNDEsIDIyOCwgOTMsIAorICAgIDIzLCAyMTUsIDgsIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjIxLCA0MSwgMjA5LCAKKyAgICAxNDEsIDksIDIsIDIyMSwgNDEsIDExNSwgMjIxLCA0MCwgOSwgMiwgMjIxLCA0MSwgMjQ1LCAxMjQsIDIyMSwgNDAsIDksIDIsIAorICAgIDIyMSwgNDEsIDI0NSwgMTI0LCAyMjEsIDQxLCAyMjgsIDkzLCAxMTUsIDIyOCwgOTIsIDksIDIsIDIyMSwgMzUsIDksIDIsIAorICAgIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjUwLCA2OSwgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyNDgsIDg2LCA5LCAKKyAgICAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDI0MiwgMzcsIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjM3LCAyMTksIAorICAgIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAKKyAgICAyMywgMjMwLCAyNywgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyMjgsIDExMywgOSwgMiwgMjIxLCAzNiwgMjUxLCAKKyAgICAxNTAsIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyMTIsIDEzOCwgOSwgMiwgMjIxLCAzNiwgCisgICAgMjUxLCAxNTAsIDIzLCAyMDcsIDQwLCA5LCAyLCAyMjEsIDM2LCAyMjksIDY5LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjIxLCAKKyAgICAzNiwgMjI5LCA2OSwgMjMsIDI0OCwgODcsIDY4LCA5LCAyLCAxODUsIDksIDIsIDIxOSwgMTU5LCA5LCAyLCAyMTksIDEyMiwgCisgICAgOSwgMiwgMjE5LCA5NiwgOSwgMiwgMjE4LCAyMjIsIDksIDIsIDIxOCwgMTY3LCA5LCAyLCAyMTgsIDE2OCwgMjMsIDYzLCA5LCAKKyAgICAyLCAyMTgsIDE2OCwgMjMsIDI1MSwgMjMyLCA5LCAyLCAyMTgsIDE2OCwgMjMsIDI0OCwgODYsIDksIDIsIDIxOCwgMTY4LCAKKyAgICAyMywgMjQ3LCAxOTMsIDksIDIsIDIxOCwgMTY4LCAyMywgNzQsIDksIDIsIDIxOCwgMTY4LCAyMywgNzUsIDksIDIsIDIxOCwgCisgICAgMTY4LCAyMywgMjM1LCAxNjYsIDksIDIsIDIxOCwgMTY4LCAyMywgNjgsIDksIDIsIDIxOCwgMTY4LCAyMywgMjA3LCA0MCwgCisgICAgOSwgMiwgMjE4LCAxNjgsIDI0NSwgMTI0LCAyMTgsIDE2NywgOSwgMiwgMjE4LCAxMDksIDksIDIsIDIxOCwgMTEwLCAyMywgCisgICAgMjMwLCA4LCA5LCAyLCAyMTgsIDExMCwgMjMsIDIwNywgMjksIDksIDIsIDIxOCwgMTEwLCAyMywgMjAyLCAxMTYsIDksIDIsIAorICAgIDIxOCwgMTEwLCAyMTksIDI1MSwgMjE4LCAxMDksIDksIDIsIDIxNiwgMjIwLCA5LCAyLCAyMTYsIDIxNCwgOSwgMiwgMjE2LCAKKyAgICA1NywgOSwgMiwgMjE1LCAxNDUsIDksIDIsIDIxNSwgMzYsIDksIDIsIDIxNSwgMjMsIDIyMSwgMjYsIDksIDIsIDIxNSwgMjIsIAorICAgIDksIDIsIDIxNSwgMjMsIDIzLCA2MywgOSwgMiwgMjE1LCAyMywgMjMsIDI0MiwgNDIsIDksIDIsIDIxNSwgMjMsIDIzLCAKKyAgICAyNDIsIDQwLCA5LCAyLCAyMTUsIDIzLCAyMywgMTUyLCA5LCAyLCAyMTUsIDIzLCAyMywgMjMwLCAxMiwgOSwgMiwgMjE1LCAKKyAgICAyMywgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMTUsIDIzLCAyMywgMjI2LCAyMjIsIDksIDIsIDIxNSwgMjMsIDIzLCAyMjQsIAorICAgIDE1NSwgOSwgMiwgMjE1LCAyMywgMjMsIDIyMSwgNDAsIDksIDIsIDIxNSwgMjMsIDIzLCAyMTUsIDgsIDksIDIsIDIxNSwgCisgICAgMjMsIDIzLCAyMTMsIDksIDksIDIsIDIxNSwgMjMsIDIzLCAyMTAsIDEwLCA5LCAyLCAyMTUsIDIzLCAyMywgMjA3LCA0MCwgCisgICAgOSwgMiwgMjE1LCAyMywgMjMsIDIwNywgMzUsIDksIDIsIDIxNSwgMjMsIDIzLCAyMDcsIDYsIDksIDIsIDIxNSwgMjMsIDIzLCAKKyAgICAyMDYsIDIxMCwgOSwgMiwgMjE1LCAyMywgMjMsIDIwNiwgMTg2LCA5LCAyLCAyMTUsIDIzLCAxMTUsIDIxNSwgMjIsIDksIDIsIAorICAgIDIxNSwgMjMsIDIzNywgMjA4LCA5LCAyLCAyMTUsIDgsIDksIDIsIDIxNSwgOSwgMjI4LCA5NSwgMjMsIDI1MCwgNzMsIDksIAorICAgIDIsIDIxNCwgMjM4LCA5LCAyLCAyMTQsIDIzMCwgOSwgMiwgMjEzLCA5MCwgOSwgMiwgMjEzLCA4OCwgOSwgMiwgMjEzLCA4OSwgCisgICAgMjMsIDYzLCA5LCAyLCAyMTMsIDg5LCAyMywgMjQ5LCAxNSwgOSwgMiwgMjEzLCA4OSwgMjMsIDIzOCwgNTUsIDksIDIsIAorICAgIDIxMywgODksIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjEzLCA4OSwgMjMsIDIxMiwgMTk3LCA5LCAyLCAyMTMsIDg5LCAyMywgCisgICAgMjA3LCAxODEsIDksIDIsIDIxMywgODksIDIzLCA2OCwgOSwgMiwgMjEzLCA4OSwgMjMsIDEwNiwgOTEsIDYzLCA5LCAyLCAKKyAgICAyMTMsIDg2LCA5LCAyLCAyMTMsIDg0LCA5LCAyLCAyMTMsIDU5LCA5LCAyLCAyMTMsIDQzLCA5LCAyLCAyMTMsIDQ0LCAyMzYsIAorICAgIDI2LCA5LCAyLCAyMTMsIDQ0LCAxMTUsIDIxMywgNDQsIDIzOSwgMCwgMTE1LCAyMzksIDAsIDIzOCwgMjI1LCAxMTUsIDIzOCwgCisgICAgMjI0LCA5LCAyLCAyMTMsIDQ0LCAxMTUsIDIxMywgNDQsIDIxMCwgMTEsIDExNSwgMjEwLCAxMSwgMjM4LCAyMjUsIDExNSwgCisgICAgMjM4LCAyMjQsIDksIDIsIDIxMywgMzYsIDksIDIsIDIxMywgMzEsIDksIDIsIDIxMywgMjcsIDksIDIsIDIxMywgMjYsIDksIAorICAgIDIsIDIxMywgMjMsIDksIDIsIDIxMywgOSwgOSwgMiwgMjEzLCAxMCwgMjMsIDYzLCA5LCAyLCAyMTMsIDEwLCAyMywgMjMxLCAKKyAgICA2NiwgOSwgMiwgMjEzLCAzLCA5LCAyLCAyMTMsIDQsIDIzLCA2MywgOSwgMiwgMjEzLCA0LCAyMywgMjQ4LCAyNTMsIDksIDIsIAorICAgIDIxMywgNCwgMjMsIDI0NywgMTcxLCA5LCAyLCAyMTMsIDQsIDIzLCAyNDMsIDE3NiwgOSwgMiwgMjEzLCA0LCAyMywgMjM4LCAKKyAgICAyMjQsIDksIDIsIDIxMywgNCwgMjMsIDIzMSwgODUsIDksIDIsIDIxMywgNCwgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAKKyAgICAyLCAyMTMsIDQsIDIzLCAyMjgsIDE3NywgOSwgMiwgMjEzLCA0LCAyMywgMjI2LCAyMjQsIDksIDIsIDIxMywgNCwgMjMsIAorICAgIDIyMywgMjM1LCA5LCAyLCAyMTMsIDQsIDIzLCAyMTUsIDgsIDksIDIsIDIxMiwgMjUzLCA5LCAyLCAyMTIsIDI0OCwgOSwgMiwgCisgICAgMjEyLCAyNDksIDIwOSwgMTQxLCA5LCAyLCAyMTIsIDI0OSwgMTE1LCAyMTIsIDI0OSwgMjQ3LCAxNjEsIDExNSwgMjQ3LCAKKyAgICAxNjAsIDksIDIsIDIxMiwgMjQ0LCA5LCAyLCAyMTIsIDE5OSwgOSwgMiwgMjEyLCAyMDAsIDExNSwgMjMwLCAyMzksIDIxMiwgCisgICAgMTk5LCA5LCAyLCAyMTIsIDE5NywgOSwgMiwgMjEyLCAxOTYsIDksIDIsIDIxMiwgMTYyLCA5LCAyLCAyMTIsIDE2MywgMjM3LCAKKyAgICAyMDgsIDksIDIsIDIxMiwgMTQ5LCA5LCAyLCAyMTIsIDE0NywgOSwgMiwgMjEyLCAxNDgsIDExNSwgMjEyLCAxNDgsIDIxMiwgCisgICAgMTk3LCA5LCAyLCAyMTIsIDE0MCwgOSwgMiwgMjEyLCAxMzgsIDksIDIsIDIxMSwgMTAsIDksIDIsIDIxMSwgMTEsIDExNSwgCisgICAgMjExLCAxMCwgOSwgMiwgMjEwLCAyMzIsIDksIDIsIDIxMCwgMjMxLCA5LCAyLCAyMTAsIDIyOSwgOSwgMiwgMjEwLCAyMjAsIAorICAgIDksIDIsIDIxMCwgMjE5LCA5LCAyLCAyMTAsIDE5MywgOSwgMiwgMjEwLCAxOTIsIDksIDIsIDIxMCwgMjIsIDksIDIsIDIxMCwgCisgICAgMjMsIDI1MCwgNTksIDksIDIsIDIxMCwgMjMsIDIzLCAyMzcsIDMsIDksIDIsIDIxMCwgMjMsIDIzLCAyMjQsIDE1NSwgOSwgCisgICAgMiwgMjEwLCAyMywgMjM3LCAyMDgsIDksIDIsIDIxMCwgMTAsIDksIDIsIDIxMCwgMTEsIDExNSwgMjEwLCAxMSwgMjIyLCAKKyAgICAxMDEsIDExNSwgMjIyLCAxMDEsIDI0MywgMTU3LCAxMTUsIDI0MywgMTU2LCA5LCAyLCAyMTAsIDExLCAyMTEsIDE3NiwgOSwgCisgICAgMiwgMjA5LCAyNTUsIDksIDIsIDE2MCwgMjMsIDI0OCwgODYsIDksIDIsIDE2MCwgMjMsIDIzNywgMjE5LCA5LCAyLCAxNjAsIAorICAgIDIzLCAyMTMsIDQzLCA5LCAyLCAxNjAsIDIzLCAyMTIsIDE5OSwgOSwgMiwgMTYwLCAyMywgMjA3LCAxOTcsIDksIDIsIDE2MCwgCisgICAgMjMsIDIwNywgMjksIDksIDIsIDIwOSwgMjQyLCA5LCAyLCAyMDksIDIxOCwgOSwgMiwgMjA5LCAxODcsIDksIDIsIDIwOSwgCisgICAgMTg4LCAyMzcsIDIwOCwgOSwgMiwgMjA5LCAyLCA5LCAyLCAyMDksIDMsIDIwOSwgMTQxLCA5LCAyLCAyMDgsIDIyOSwgOSwgCisgICAgMiwgMjA4LCAyMDYsIDksIDIsIDIwOCwgMjA3LCAyMywgMjA5LCAyNDIsIDksIDIsIDIwOCwgMjA3LCAxMTUsIDIwOCwgMjA2LCAKKyAgICA5LCAyLCAyMDgsIDIwNywgMTE1LCAyMDgsIDIwNywgMjM5LCAwLCAxMTUsIDIzOSwgMCwgMjM4LCAyMjUsIDExNSwgMjM4LCAKKyAgICAyMjQsIDksIDIsIDIwNywgMjAzLCA5LCAyLCAyMDcsIDE5NywgOSwgMiwgMjA3LCAxOTUsIDksIDIsIDIwNywgMTkxLCA5LCAKKyAgICAyLCAyMDcsIDE4MSwgOSwgMiwgMjA3LCAxODIsIDExNSwgMjA3LCAxODIsIDIwMiwgMTE3LCAxMTUsIDIwMiwgMTE2LCA5LCAKKyAgICAyLCA2OCwgOSwgMiwgMTA2LCAyMzcsIDIxOSwgOSwgMiwgMTA2LCAxMDYsIDY4LCA5LCAyLCAxMDYsIDExNSwgMTA2LCAyMTksIAorICAgIDE2OSwgMTE1LCAyMTksIDE2OSwgMjM4LCAyMjUsIDExNSwgMjM4LCAyMjQsIDksIDIsIDEwNiwgMTE1LCAxMDYsIDIxMCwgCisgICAgMTk0LCAxMTUsIDIxMCwgMTkzLCA5LCAyLCAxMDYsIDExNSwgMTA2LCAxMDYsIDIxNiwgNzMsIDExNSwgMTA2LCAyMTYsIDcyLCAKKyAgICA5LCAyLCAyMDcsIDQwLCA5LCAyLCAyMDcsIDM1LCA5LCAyLCAyMDcsIDI5LCA5LCAyLCAyMDcsIDMwLCAyMjgsIDE3NywgOSwgCisgICAgMiwgMjA3LCAzMCwgMjMsIDI0OSwgMTUsIDksIDIsIDIwNywgMzAsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjA3LCAzMCwgMjMsIAorICAgIDEwNiwgOTEsIDEwNiwgOTEsIDY4LCA5LCAyLCAyMDcsIDMwLCAyMywgMTA2LCA5MSwgMTA2LCA5MSwgMTA2LCAyMzcsIDIwOCwgCisgICAgOSwgMiwgMjA3LCAzMCwgMjM3LCAyMDgsIDksIDIsIDIwNywgMzAsIDIxMywgMjQsIDksIDIsIDIwNywgMzAsIDIxMywgMjUsIAorICAgIDIzLCAyNDksIDE1LCA5LCAyLCAyMDcsIDI1LCA5LCAyLCAyMDcsIDYsIDksIDIsIDIwNywgNywgMjMsIDIyOCwgOTQsIDksIAorICAgIDIsIDIwNywgNywgMjMsIDIyNSwgMjEsIDkxLCAyNDQsIDIxMiwgOSwgMiwgMjA3LCA3LCAyMywgMjEzLCA4OCwgOSwgMiwgCisgICAgMjA3LCA3LCAyMywgNjgsIDksIDIsIDIwNywgNSwgOSwgMiwgMjA3LCAxLCA5LCAyLCAyMDcsIDIsIDIzLCAyMjksIDIzMSwgCisgICAgOSwgMiwgMjA3LCAyLCAyMywgMTg1LCA5LCAyLCAyMDYsIDI1NSwgOSwgMiwgMjA3LCAwLCAyMzcsIDIwOCwgOSwgMiwgMjA2LCAKKyAgICAyMTAsIDksIDIsIDIwNiwgMjExLCAyNDUsIDEyNCwgMjA2LCAyMTAsIDksIDIsIDIwNiwgMjExLCAyMTMsIDI0LCA5LCAyLCAKKyAgICAyMDYsIDIwOCwgOSwgMiwgMjA2LCAyMDksIDIzLCAzNCwgOTEsIDE1MiwgOSwgMiwgMjA2LCAyMDksIDIzLCAzNCwgOTEsIAorICAgIDIwMSwgMjAxLCA5LCAyLCAyMDYsIDIwOSwgMjMsIDI1MSwgMzksIDksIDIsIDIwNiwgMjA5LCAyMywgMTUyLCA5LCAyLCAKKyAgICAyMDYsIDIwOSwgMjMsIDIyMSwgNDAsIDksIDIsIDIwNiwgMjA5LCAyMywgMjA3LCA0MCwgOSwgMiwgMjA2LCAyMDksIDIzLCAKKyAgICAyMDcsIDQxLCA5MSwgMjUwLCA3NSwgOSwgMiwgMjA2LCAyMDksIDIzLCAyMDcsIDQxLCA5MSwgMjQ4LCA4NiwgOSwgMiwgCisgICAgMjA2LCAyMDcsIDksIDIsIDIwNiwgMjA0LCA5LCAyLCAyMDYsIDIwMywgOSwgMiwgMjA2LCAxOTksIDksIDIsIDIwNiwgMjAwLCAKKyAgICAyMywgNjMsIDksIDIsIDIwNiwgMjAwLCAyMywgMjUwLCA2OSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAxNDIsIDksIDIsIDIwNiwgCisgICAgMjAwLCAyMywgMjQyLCAzMSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzksIDgsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM4LCAKKyAgICAyNDYsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzOCwgCisgICAgMjI0LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzNywgMjMwLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDE1MiwgOSwgMiwgMjA2LCAKKyAgICAyMDAsIDIzLCAyMzEsIDg1LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzMSwgNjYsIDksIDIsIDIwNiwgMjAwLCAyMywgMjMwLCAKKyAgICAyMDksIDksIDIsIDIwNiwgMjAwLCAyMywgMjI5LCAxMDAsIDksIDIsIDIwNiwgMjAwLCAyMywgMjI2LCAyMjIsIDksIDIsIAorICAgIDIwNiwgMjAwLCAyMywgMjI0LCAxMTAsIDksIDIsIDIwNiwgMjAwLCAyMywgMTg1LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIxMywgCisgICAgNDMsIDksIDIsIDIwNiwgMjAwLCAyMywgMjEyLCAxNDcsIDksIDIsIDIwNiwgMjAwLCAyMywgMjA3LCAyMDMsIDksIDIsIAorICAgIDIwNiwgMjAwLCAyMywgMTA2LCA5MSwgMjM3LCAyMTksIDksIDIsIDIwNiwgMjAwLCAyMywgMjA3LCAyOSwgOSwgMiwgMjA2LCAKKyAgICAyMDAsIDIzLCAyMDYsIDE5NywgOSwgMiwgMjA2LCAxOTcsIDksIDIsIDIwNiwgMTk4LCAyMywgNjgsIDksIDIsIDIwNiwgCisgICAgMTg2LCA5LCAyLCAyMDYsIDE4NywgMjMsIDYzLCA5LCAyLCAyMDYsIDE4NywgMjMsIDIyOCwgMjA5LCA5LCAyLCAyMDYsIAorICAgIDE4NywgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMDYsIDE4NywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMDYsIDE4MiwgOSwgMiwgCisgICAgMjA2LCAxODUsIDksIDIsIDIwNiwgMTgzLCA5LCAyLCAyMDYsIDE3OSwgOSwgMiwgMjA2LCAxNjcsIDksIDIsIDIwNiwgMTY4LCAKKyAgICAyMywgMjI5LCAyMzEsIDksIDIsIDIwNiwgMTY2LCA5LCAyLCAyMDIsIDExNiwgOSwgMiwgMjAyLCAxMTcsIDIwOSwgMTQxLCAKKyAgICA5LCAyLCAyMDIsIDExNywgMTAzLCAyMywgMjI4LCAxODMsIDksIDIsIDIwMiwgMTEyLCA5LCAyLCAyMDIsIDEwNSwgOSwgMiwgCisgICAgMjAyLCA5MSwgOSwgMiwgMjAyLCAzOSwgOSwgMiwgMjAyLCA0MCwgMTE1LCAyMDIsIDM5LCA5LCAyLCAyMDIsIDM4LCA5LCAyLCAKKyAgICAyMDIsIDM2LCA5LCAyLCAyMDIsIDM3LCAyMzAsIDMxLCAyMDksIDE0MSwgOSwgMiwgMjAyLCAzMSwgOSwgMiwgMjAyLCAyMiwgCisgICAgOSwgMiwgMjAyLCA2LCA5LCAyLCAyMDIsIDQsIDksIDIsIDIwMiwgNSwgMjMsIDYzLCA5LCAyLCAyMDIsIDMsIDksIDIsIAorICAgIDIwMiwgMiwgOSwgMiwgMjI5LCAyNTQsIDI0MSwgMTE5LCA5LCAyLCAyNTEsIDIzMywgMjMsIDIyMSwgNDAsIDksIDIsIDI1MSwgCisgICAgMTUwLCAyMywgNjMsIDksIDIsIDI1MCwgMjQ0LCAyMywgMjI4LCAxOTgsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgCisgICAgMjA3LCA0MSwgOTEsIDIyNSwgNzksIDksIDIsIDI0NCwgMjAyLCA5LCAyLCAyNDMsIDE1NywgOTEsIDIxMiwgMTk5LCA5LCAyLCAKKyAgICAyNDIsIDQxLCAyMywgMjEzLCA0MywgOSwgMiwgMjQwLCAxODAsIDIzLCAyMzcsIDIxOSwgOSwgMiwgMjQwLCAxODAsIDIzLCAKKyAgICAyMTMsIDQzLCA5LCAyLCAyMzksIDcsIDIzLCAyNTAsIDIzMiwgOTEsIDIzMCwgMTMsIDkxLCA2MywgOSwgMiwgMjM5LCA3LCAKKyAgICAyMywgMjUwLCA3MywgOSwgMiwgMjM4LCAxODksIDksIDIsIDIzOCwgNzEsIDksIDIsIDIzNiwgMywgOSwgMiwgMjMwLCA0NCwgCisgICAgMjMsIDI1MCwgMjAwLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjUwLCA3MiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgNTUsIDksIAorICAgIDIsIDIzMCwgNDQsIDIzLCAyMzcsIDIxOSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzNywgNCwgMjMsIDI1MCwgNzMsIDksIDIsIAorICAgIDIzMCwgNDQsIDIzLCAyMjYsIDIyMiwgOSwgMiwgMjMwLCA0NCwgMjMsIDE4NSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMiwgCisgICAgMTkyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjA3LCAyMDMsIDksIDIsIDIzMCwgNDQsIDIzLCAyMDYsIDIwOCwgOSwgMiwgMjI4LCAKKyAgICA5NSwgMjMsIDIzOCwgODEsIDksIDIsIDIyNiwgMjM4LCAyMTMsIDI1LCAyMywgMjQ5LCAxNSwgOSwgMiwgMjI2LCAyMzgsIAorICAgIDIzLCAyNDEsIDUsIDkxLCAyMjgsIDMwLCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIxMiwgMTk5LCA5LCAyLCAyMjQsIDIyNywgOSwgCisgICAgMiwgMjIzLCAxOTgsIDIzLCAyMDIsIDExNiwgOSwgMiwgMjIzLCAxMDgsIDksIDIsIDIyMiwgNjgsIDksIDIsIDIyMiwgNjcsIAorICAgIDksIDIsIDIyMiwgNjYsIDIzLCAyNDgsIDI1MywgOSwgMiwgMjIyLCA2NiwgMjMsIDIzOCwgODEsIDksIDIsIDIyMSwgNTcsIAorICAgIDIxNSwgMTk4LCAyMjIsIDU5LCAyNDQsIDU0LCA5LCAyLCAyMTgsIDIyMywgMjUwLCA1OSwgOSwgMiwgMjE4LCAxMTMsIDksIAorICAgIDIsIDIxNSwgMjMsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjA5LCAxLCA5LCAyLCAyMDcsIDcsIDIzLCAyMjUsIAorICAgIDIwLCA5LCAyLCAxMDYsIDY4LCA5LCAxNDEsIDIsIDEyMCwgMjUwLCA3NSwgOSwgMTQxLCAyLCAxMjYsIDI1MCwgNzUsIDksIAorICAgIDE0MSwgMiwgMjM5LCAxNDcsIDI1MCwgNzUsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI1MCwgNzUsIDksIDE0MSwgMiwgMjEyLCAKKyAgICA4OCwgMjUwLCA3NSwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjUwLCA3NSwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMjUwLCA3NSwgCisgICAgOSwgMTQxLCAyLCAyMjIsIDY0LCAyNTAsIDc1LCA5LCAxNDEsIDIsIDEyNiwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjM5LCAKKyAgICAxNDcsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyMTIsIDg4LCAyNDMsIAorICAgIDE1NiwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjQxLCAxNDMsIDI0MywgMTU2LCA5LCAKKyAgICAxNDEsIDIsIDIyMiwgNjQsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCA2OCwgOSwgMTQxLCAyLCAyMzksIDIzMywgCisgICAgNjgsIDksIDE0MSwgMiwgMjEyLCA4OCwgNjgsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDY4LCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAKKyAgICA2OCwgOSwgMTQxLCAyLCAyMjIsIDY0LCA2OCwgOSwgMTQxLCAyLCAxMTgsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDEyMCwgCisgICAgMjM4LCAxNjQsIDksIDE0MSwgMiwgMTI2LCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjM4LCAxNjQsIDksIAorICAgIDE0MSwgMiwgMjM5LCAyMzMsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDIxMiwgODgsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDIxMywgCisgICAgMTEyLCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMjM4LCAxNjQsIDksIDE0MSwgMiwgMjIyLCA2NCwgMjM4LCAKKyAgICAxNjQsIDksIDE0MSwgMiwgMTE4LCAyMzgsIDE2MSwgOSwgMTQxLCAyLCAxMjAsIDIzOCwgMTYxLCA5LCAxNDEsIDIsIDEyNiwgCisgICAgMjM4LCAxNjEsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIzOCwgMTYxLCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyMzgsIDE2MSwgCisgICAgOSwgMTQxLCAyLCAxMjAsIDIxMywgNTksIDksIDE0MSwgMiwgMTI2LCAyMTMsIDU5LCA5LCAxNDEsIDIsIDEyNiwgMjEzLCAKKyAgICA2MCwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIxMywgNTksIDksIDE0MSwgMiwgMjM5LCAyMzMsIDIxMywgCisgICAgNTksIDksIDE0MSwgMiwgMjEyLCA4OCwgMjEzLCA1OSwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjEzLCA1OSwgOSwgMTQxLCAyLCAKKyAgICAyNDEsIDE0MywgMjEzLCA1OSwgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMTMsIDU5LCA5LCAxNDEsIDIsIDExOCwgMjEzLCA1NCwgCisgICAgOSwgMTQxLCAyLCAxMjAsIDIxMywgNTQsIDksIDE0MSwgMiwgMTI2LCAyMTMsIDU0LCA5LCAxNDEsIDIsIDEyNiwgMjEzLCAKKyAgICA1NSwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIxMywgNTQsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDIxMywgCisgICAgNTQsIDksIDE0MSwgMiwgMjEzLCA2MCwgMjMsIDIzOCwgMjQ3LCA5MSwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjEzLCA2MCwgCisgICAgMjMsIDIzOCwgMjQ3LCA5MSwgMjI0LCAxMTAsIDksIDE0MSwgMiwgMTE4LCAyNDcsIDE1NiwgOSwgMTQxLCAyLCAxMjAsIAorICAgIDI0NywgMTU2LCA5LCAxNDEsIDIsIDEyNiwgMjQ3LCAxNTYsIDksIDE0MSwgMiwgMTI2LCAyNDcsIDE1NywgMjA2LCA2OSwgCisgICAgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDI0NywgMTU2LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNDcsIDE1NiwgOSwgMTQxLCAKKyAgICAyLCAxMjYsIDIwNiwgNjksIDIzOSwgMTU5LCAyNDEsIDYsIDksIDE0MSwgMiwgMTI2LCAyMDYsIDY5LCAyMzksIDE1OSwgCisgICAgMjQxLCAzLCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMDYsIDY5LCAyMzksIDE1OSwgMjI3LCAxMTgsIDksIDE0MSwgMiwgMjM5LCAKKyAgICAxNDcsIDIwNiwgNjksIDIzOSwgMTU5LCAyMjcsIDExNiwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjA2LCA2OSwgMjM5LCAxNTksIAorICAgIDIyNywgMTE5LCA2MywgOSwgMTQxLCAyLCAyMzksIDE0NywgMjA2LCA2OSwgMjM5LCAxNTksIDIyNywgMTE5LCAyNDksIDI1NSwgCisgICAgOSwgMTQxLCAyLCAyMTIsIDg4LCAyMDYsIDY5LCAyMzksIDE1OSwgMjUwLCA3MSwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjA2LCAKKyAgICA2OSwgMjM5LCAxNTksIDIzMSwgNTgsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDIwNiwgNjksIDIzOSwgMTU5LCAyMzEsIDYwLCAKKyAgICA2MywgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjA2LCA2OSwgMjM5LCAxNTksIDIzMSwgNjAsIDI0OSwgMjU1LCA5LCAxNDEsIDIsIAorICAgIDI0MSwgMTQzLCAyMDYsIDY5LCAyMzksIDE1OSwgMjA2LCAxODEsIDksIDE0MSwgMiwgMjQxLCAxNDMsIDIwNiwgNjksIDIzOSwgCisgICAgMTU5LCAyMDYsIDE4MCwgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA3NCwgOSwgMTQxLCAyLCAKKyAgICAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA3MywgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIAorICAgIDE1OSwgMjMxLCA3MiwgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA3NSwgNjMsIDksIDE0MSwgCisgICAgMiwgMTIwLCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgMTQxLCAyLCAxMjYsIDI1MCwgNzYsIDIwOSwgMTQxLCA5LCAxNDEsIDIsIAorICAgIDIzOSwgMTQ3LCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjUwLCA3NiwgMjA5LCAxNDEsIDksIAorICAgIDE0MSwgMiwgMjEyLCA4OCwgMjUwLCA3NiwgMjA5LCAxNDEsIDksIDE0MSwgMiwgMTE4LCAyNDgsIDI0MCwgOSwgMTQxLCAyLCAKKyAgICAxMjAsIDI0OCwgMjQwLCA5LCAxNDEsIDIsIDEyNiwgMjQ4LCAyNDAsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDI0OCwgMjQwLCAKKyAgICA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyNDgsIDI0MSwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI0OCwgCisgICAgMjQwLCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNDgsIDI0MSwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjIyLCA3NywgOSwgCisgICAgMTQxLCAyLCAyMjIsIDc4LCA5LCAxNDEsIDIsIDExOCwgMjQxLCAyLCA5LCAxNDEsIDIsIDEyMCwgMjQxLCAyLCA5LCAxNDEsIAorICAgIDIsIDExOCwgMjA5LCA2MSwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMTIwLCAyMDksIDU4LCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAKKyAgICAyMzksIDIzMywgMjEyLCA3NywgMjQzLCAxNTYsIDksIDE0MSwgMiwgMTE4LCAyMDksIDYxLCAyMDYsIDY5LCAyMzksIDE1OSwgCisgICAgNjMsIDksIDE0MSwgMiwgMTIwLCAyMDksIDU4LCAyMDYsIDY5LCAyMzksIDE1OSwgNjMsIDksIDE0MSwgMiwgMTE4LCAyNDEsIAorICAgIDEzOSwgMjUwLCA3NSwgOSwgMTQxLCAyLCAxMTgsIDIxNywgNTYsIDI1MCwgNzUsIDksIDE0MSwgMiwgMzgsIDI1MCwgNjIsIAorICAgIDExOCwgMjEyLCA3OCwgOSwgMTQxLCAyLCAzOCwgMjUwLCA2MiwgMTE4LCAyMTcsIDU1LCA5LCAxNDEsIDIsIDExOCwgMjE3LCAKKyAgICA1NiwgMjM3LCAyMDIsIDksIDE0MSwgMiwgMTE4LCAxNjIsIDIzNywgMjAyLCA5LCAxNDEsIDIsIDI0MSwgMTIwLCAxMTgsIAorICAgIDIwOSwgNjAsIDksIDE0MSwgMiwgMjQxLCAxMjAsIDEyMCwgMjA5LCA1NywgOSwgMTQxLCAyLCAyNDEsIDEyMCwgMjM5LCAKKyAgICAxNTMsIDksIDE0MSwgMiwgMjQxLCAxMjAsIDI0MCwgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDEwNiwgMjA2LCA2OSwgMTgsIAorICAgIDksIDE0MSwgMiwgMjM5LCAyMzMsIDEwNiwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjEyLCA4OCwgMTA2LCAyMDYsIDY5LCAKKyAgICAxOCwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMTA2LCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMTA2LCAyMDYsIAorICAgIDY5LCAxOCwgOSwgMTQxLCAyLCAyMjIsIDY0LCAxMDYsIDIwNiwgNjksIDE4LCA5LCAyMTcsIDE3OSwgMiwgMzgsIDI1MCwgCisgICAgNjIsIDIwMywgMjM4LCAyNDMsIDE0MSwgOSwgMjE3LCAxNzksIDIsIDgwLCAyNDUsIDI0MiwgOSwgMjE3LCAxNzksIDIsIAorICAgIDI0MywgMjI4LCAyNDUsIDI0MiwgOSwgMjE3LCAxNzksIDIsIDI0MywgMjI4LCAyMDgsIDgxLCA5LCAyMTcsIDE3OSwgMiwgCisgICAgMjQzLCAyMjgsIDIxNywgNjEsIDksIDIsIDI1MSwgMjMzLCAyMywgMjIxLCA0MSwgMjA5LCAxNDEsIDksIDIsIDI1MSwgMjMzLCAKKyAgICAyMywgMjEyLCAxOTcsIDksIDIsIDI1MSwgMTIzLCAyMywgMjQxLCA0LCA5LCAyLCAyNDksIDE2LCAyMywgMjQzLCAxNTcsIAorICAgIDIwOSwgMTQxLCA5LCAyLCAyNDksIDQsIDIzLCAyNTEsIDE0OSwgOSwgMiwgMjQ5LCA0LCAyMywgMjIyLCAxMDAsIDksIDIsIAorICAgIDI0OSwgNCwgMjMsIDIwMiwgMTE2LCA5LCAyLCAyNDcsIDE5NCwgMTE1LCAyNDcsIDE5NCwgMjMsIDIyMywgMTA5LCA5LCAyLCAKKyAgICAyNDQsIDIxMywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyNDQsIDIwNCwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyNDMsIDE4OSwgMjMsIAorICAgIDIzMSwgODUsIDksIDIsIDI0MywgMTg5LCAyMywgMTA2LCAxMDYsIDY4LCA5LCAyLCAyNDMsIDE4NywgMjMsIDIwNywgMjksIAorICAgIDksIDIsIDI0MiwgMzgsIDIzLCAyNTAsIDIwMCwgOSwgMiwgMjQyLCAzOCwgMjMsIDI1MCwgNzUsIDksIDIsIDI0MiwgMzgsIAorICAgIDIzLCAyNTAsIDc2LCAyNTAsIDUwLCAyMjcsIDIyMiwgOSwgMiwgMjQyLCAzOCwgMjMsIDI0MywgMTc2LCA5LCAyLCAyNDIsIAorICAgIDM4LCAyMywgMjQyLCAzMSwgOSwgMiwgMjQyLCAzOCwgMjMsIDI0MSwgMjIsIDksIDIsIDI0MiwgMzgsIDIzLCAyMzksIDgsIAorICAgIDksIDIsIDI0MiwgMzgsIDIzLCAyMzgsIDgxLCA5LCAyLCAyNDIsIDM4LCAyMywgMjM4LCA2NCwgMjM3LCAyMDgsIDksIDIsIAorICAgIDI0MiwgMzgsIDIzLCAyMzgsIDU1LCA5LCAyLCAyNDIsIDM4LCAyMywgMTUyLCA5LCAyLCAyNDIsIDM4LCAyMywgMjM3LCAzLCAKKyAgICA5LCAyLCAyNDIsIDM4LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjksIDIzMSwgOSwgMiwgCisgICAgMjQyLCAzOCwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyNDIsIDM4LCAyMywgMjI4LCAxNzcsIDksIDIsIDI0MiwgMzgsIDIzLCAKKyAgICAyMjgsIDE3OCwgOTEsIDIyOSwgMjMxLCA5LCAyLCAyNDIsIDM4LCAyMywgMjI4LCA4MiwgOSwgMiwgMjQyLCAzOCwgMjMsIAorICAgIDIyOCwgMjgsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjgsIDI5LCAyMywgMjI4LCAxODMsIDksIDIsIDI0MiwgMzgsIDIzLCAKKyAgICAyMjYsIDIyOCwgOTEsIDIzOCwgNTUsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjUsIDc5LCA5LCAyLCAyNDIsIDM4LCAyMywgCisgICAgMjI0LCAyMjgsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyMiwgMTAwLCA5LCAyLCAKKyAgICAyNDIsIDM4LCAyMywgMjE4LCAxNjcsIDksIDIsIDI0MiwgMzgsIDIzLCAyMTMsIDQzLCA5LCAyLCAyNDIsIDM4LCAyMywgCisgICAgMjEyLCAxNjMsIDIzNywgMjA4LCA5LCAyLCAyNDEsIDE5MSwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyNDEsIDE5MSwgMjMsIAorICAgIDIxOSwgOTYsIDksIDIsIDI0MSwgMjMsIDIwMywgMTk2LCA5LCAyLCAyNDEsIDUsIDI0NSwgMTI0LCAyNDEsIDQsIDksIDIsIAorICAgIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjUwLCA3NSwgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAyMzcsIDMsIDksIAorICAgIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgCisgICAgMjI4LCAxMTMsIDksIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjI4LCAzMCwgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIAorICAgIDIzLCAyMjUsIDIwLCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAyNSwgMjMsIDIyNCwgMjI4LCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAKKyAgICAyNSwgMjMsIDIxMSwgMTAsIDksIDIsIDI0MCwgMTgwLCAyMywgMjExLCAxMCwgOSwgMiwgMjM5LCA3LCAyMywgMjQ5LCAzLCAKKyAgICA5LCAyLCAyMzksIDcsIDIzLCAyNDMsIDE4OSwgMjM3LCAyMDgsIDksIDIsIDIzOSwgNywgMjMsIDI0MiwgMzgsIDIzLCAyMzEsIAorICAgIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjM5LCA3LCAyMywgMjQyLCAzOCwgMjMsIDIyOSwgMjMxLCA5LCAyLCAyMzksIDcsIDIzLCAKKyAgICAyNDEsIDI1LCA5LCAyLCAyMzksIDcsIDIzLCAyMzksIDgsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgMjI1LCA5MSwgMjQzLCAKKyAgICAyMzMsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgMjI1LCA5MSwgMjIyLCAyNDAsIDksIDIsIDIzOSwgNywgMjMsIDIzNywgCisgICAgMTYwLCA5MSwgNjMsIDksIDIsIDIzOSwgNywgMjMsIDIyOCwgMTc4LCA5MSwgMjI5LCAyMzEsIDksIDIsIDIzOSwgNywgMjMsIAorICAgIDIyOCwgMjgsIDksIDIsIDIzOSwgNywgMjMsIDIyOCwgMjksIDIzLCAyMjgsIDE4MywgOSwgMiwgMjM5LCA3LCAyMywgMjI2LCAKKyAgICAyMjcsIDksIDIsIDIzOSwgNywgMjMsIDIyMywgMTk5LCA5LCAyLCAyMzksIDcsIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjM5LCAKKyAgICA3LCAyMywgMjIyLCAyNDEsIDkxLCAyNDEsIDE5MCwgOSwgMiwgMjM5LCA3LCAyMywgMjIyLCAyNDEsIDkxLCAyMzgsIDgxLCAKKyAgICA5LCAyLCAyMzksIDcsIDIzLCAyMTMsIDMsIDksIDIsIDIzOSwgNywgMjMsIDIwMiwgMjIsIDksIDIsIDIzOSwgMiwgMjE1LCAKKyAgICAxOTgsIDIyMiwgNTksIDI0NCwgNTQsIDksIDIsIDIzOCwgMTYzLCAyMywgNjgsIDksIDIsIDIzOCwgNTYsIDIzLCAyMzgsIAorICAgIDU2LCAyNDUsIDEyNCwgMjM4LCA1NSwgOSwgMiwgMjM3LCAyMjksIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjM3LCAKKyAgICAyMjAsIDkxLCAyMzgsIDU2LCAyMywgMjA5LCAyNDIsIDksIDIsIDIzNywgMTYwLCAyMDksIDE0MiwgMjM3LCAyMDgsIDksIDIsIAorICAgIDIzNywgNCwgMjMsIDI1MCwgNzYsIDExNSwgMjM3LCA0LCAyMywgMjUwLCA3NSwgOSwgMiwgMjMwLCA0NCwgMjMsIDI0NywgCisgICAgMTkzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMTczLCA5LCAyLCAyMzAsIDQ0LCAyMywgMTA2LCAxMDYsIDY4LCA5LCAyLCAyMzAsIAorICAgIDQ0LCAyMywgMjA2LCAyMTAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDIsIDcsIDExNSwgMjAyLCA2LCA5LCAyLCAyMjgsIDgzLCAKKyAgICA5LCAyLCAyMjgsIDgxLCA5LCAyLCAyMjgsIDgwLCA5LCAyLCAyMjgsIDc5LCA5LCAyLCAyMjgsIDc4LCA5LCAyLCAyMjgsIAorICAgIDc3LCA5LCAyLCAyMjgsIDc2LCA5LCAyLCAyMjgsIDc1LCAxMTUsIDIyOCwgNzUsIDIzNywgMjA4LCA5LCAyLCAyMjgsIDc0LCAKKyAgICA5LCAyLCAyMjgsIDczLCAxMTUsIDIyOCwgNzIsIDksIDIsIDIyOCwgNzEsIDksIDIsIDIyOCwgNzAsIDksIDIsIDIyOCwgNjksIAorICAgIDksIDIsIDIyOCwgNjgsIDksIDIsIDIyOCwgNjcsIDksIDIsIDIyOCwgNjYsIDksIDIsIDIyOCwgNjUsIDksIDIsIDIyOCwgCisgICAgNjQsIDksIDIsIDIyOCwgNjMsIDksIDIsIDIyOCwgNjIsIDksIDIsIDIyOCwgNjEsIDksIDIsIDIyOCwgNjAsIDksIDIsIAorICAgIDIyOCwgNTksIDksIDIsIDIyOCwgNTgsIDksIDIsIDIyOCwgNTcsIDksIDIsIDIyOCwgNTYsIDksIDIsIDIyOCwgNTUsIDksIAorICAgIDIsIDIyOCwgNTQsIDksIDIsIDIyOCwgNTIsIDksIDIsIDIyOCwgNTMsIDIzLCAyMzcsIDIzMCwgOSwgMiwgMjI4LCA1MywgCisgICAgMjMsIDIzMSwgODUsIDksIDIsIDIyOCwgNTMsIDIzLCAyMTksIDk3LCA5MSwgMjI2LCAyMzYsIDksIDIsIDIyOCwgNTMsIDIzLCAKKyAgICAyMTksIDk3LCA5MSwgMjE5LCA5NywgOTEsIDIyNiwgMjM2LCA5LCAyLCAyMjgsIDUzLCAyMywgMjA3LCA0MSwgOTEsIDI0OSwgCisgICAgMzIsIDksIDIsIDIyOCwgNTEsIDksIDIsIDIyOCwgNTAsIDksIDIsIDIyOCwgNDksIDksIDIsIDIyOCwgNDgsIDksIDIsIAorICAgIDIyOCwgNDcsIDksIDIsIDIyOCwgNDYsIDksIDIsIDIyOCwgNDUsIDksIDIsIDIyOCwgNDQsIDksIDIsIDIyOCwgNDMsIDksIAorICAgIDIsIDIyOCwgNDIsIDksIDIsIDIyOCwgNDAsIDksIDIsIDIyOCwgNDEsIDIzLCAyNTAsIDc1LCA5LCAyLCAyMjgsIDQxLCAyMywgCisgICAgMjQ5LCAxNSwgOSwgMiwgMjI4LCA0MSwgMjMsIDI0MiwgMzAsIDIzNywgMjA5LCAyMzcsIDIwOCwgOSwgMiwgMjI4LCA0MSwgCisgICAgMjMsIDIyOCwgMjA3LCA5LCAyLCAyMjgsIDQxLCAyMywgMjI4LCAxMTMsIDksIDIsIDIyOCwgNDEsIDIzLCAyMDksIDIxOCwgCisgICAgOSwgMiwgMjI4LCA0MSwgMjMsIDIwOSwgMTg3LCA5LCAyLCAyMjgsIDQxLCAyMywgMjA3LCA0MCwgOSwgMiwgMjI4LCA0MSwgCisgICAgMjMsIDIwNywgMjksIDksIDIsIDIyOCwgNDEsIDIzLCAyMDYsIDE5NywgOSwgMiwgMjI4LCAzOSwgOSwgMiwgMjI4LCAzNywgCisgICAgOSwgMiwgMjI4LCAzOCwgMjMsIDI0MiwgNDAsIDksIDIsIDIyOCwgMzgsIDIzLCAyMzksIDgsIDksIDIsIDIyOCwgMzgsIDIzLCAKKyAgICAyMzEsIDg1LCA5LCAyLCAyMjgsIDM4LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIyOCwgMzgsIDIzLCAyMjIsIAorICAgIDEwMCwgOSwgMiwgMjI4LCAzOCwgMjMsIDIxOSwgOTcsIDkxLCAyMTksIDk3LCA5MSwgMjI2LCAyMzYsIDksIDIsIDIyOCwgCisgICAgMzgsIDIzLCAyMTMsIDI4LCA5MSwgMjI5LCAxMDAsIDksIDIsIDIyOCwgMzgsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMjgsIDM4LCAKKyAgICAyMywgMjA2LCAxOTcsIDksIDIsIDIyOCwgMzUsIDksIDIsIDIyOCwgMzQsIDksIDIsIDIyNiwgMjM4LCAyMzcsIDIwOSwgMjMsIAorICAgIDI1MCwgNzUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjQzLCAxNTYsIDksIDIsIDIyNiwgMjM4LCAyMywgMjM3LCAxNDAsIDksIAorICAgIDIsIDIyNiwgMjM4LCAyMywgMjE5LCA5NiwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMTksIDk3LCA5MSwgMjE5LCA5NywgOTEsIAorICAgIDIyNiwgMjM2LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMjQsIDE1NiwgOTEsIDIwMiwgMTE1LCA5LCAKKyAgICAyLCAyMjMsIDIwMCwgMTE1LCAyMjMsIDIwMCwgMjMsIDIzOSwgOCwgOSwgMiwgMjIzLCAyMDAsIDExNSwgMjIzLCAyMDAsIAorICAgIDIzLCAyMzAsIDEyLCA5LCAyLCAyMjIsIDY2LCAyMywgMjQzLCAxODksIDIzNywgMjA4LCA5LCAyLCAyMjIsIDY2LCAyMywgCisgICAgMjM4LCA1NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIzNywgMjEyLCA5LCAyLCAyMjIsIDY2LCAyMywgMjM3LCAzLCA5LCAyLCAKKyAgICAyMjIsIDY2LCAyMywgMjI5LCAxNzEsIDksIDIsIDIyMiwgNjYsIDIzLCAyMjgsIDc4LCA5LCAyLCAyMjIsIDY2LCAyMywgCisgICAgMjI1LCA3OSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIxOSwgOTcsIDkxLCAyMTksIDk2LCA5LCAyLCAyMjIsIDY2LCAyMywgNjgsIAorICAgIDksIDIsIDIyMiwgNjYsIDIzLCAxMDYsIDkxLCA2OCwgOSwgMiwgMjIyLCA2NiwgMjMsIDIwNiwgMTk3LCA5LCAyLCAyMTUsIAorICAgIDIzLCAyMzcsIDIwOSwgMjMsIDE1MiwgOSwgMiwgMjE1LCAyMywgMjMsIDI0MSwgOTIsIDksIDIsIDIxNSwgMjMsIDIzLCAKKyAgICAyMTMsIDQ0LCAyNTAsIDUwLCAyMjcsIDIyMiwgOSwgMiwgMjE1LCAyMywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMTMsIDg3LCAKKyAgICAyMDksIDE0MSwgOSwgMiwgMjEzLCA0NCwgMTE1LCAyMTMsIDQzLCA5LCAyLCAyMTMsIDQ0LCA5MSwgMjM2LCAyMSwgOSwgMiwgCisgICAgMjEzLCA0NCwgOTEsIDIyMywgODYsIDksIDIsIDIxMywgNDQsIDkxLCAyMTQsIDIzMCwgOSwgMiwgMjEyLCAxOTgsIDkxLCAKKyAgICAyNDIsIDM4LCAyMywgMjIyLCAxMDAsIDksIDIsIDIxMiwgMTk4LCA5MSwgMjQxLCAxOTEsIDIzLCAyNTAsIDIzMSwgOSwgMiwgCisgICAgMjEyLCAxNjMsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjA5LCAyNDMsIDkxLCAyMTUsIDIyLCA5LCAyLCAyMDcsIDE5MiwgMjMsIAorICAgIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjA3LCAxOTIsIDIzLCAxMjYsIDI0MywgMTU2LCA5LCAyLCAyMDYsIDIwOSwgCisgICAgMjMwLCAyMzgsIDksIDIsIDIwNiwgMjA5LCAyMywgMjA3LCAyOSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyNDQsIDE1MywgOSwgCisgICAgMiwgMjA2LCAyMDAsIDIzLCAyMjgsIDM2LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIyNiwgMjM2LCA5LCAyLCAyMDIsIDExNSwgCisgICAgOSwgMiwgMjAyLCA3LCAxMTUsIDIwMiwgNywgOTEsIDIxNCwgMjMwLCA5LCAyLCAyMDIsIDUsIDIzLCAxMjYsIDI0MywgMTU3LCAKKyAgICAyMDksIDE0MSwgMTQsIDcsIDI1NSwgMTgsIDE0LCA3LCAyNTUsIDE3LCAxNCwgNywgMjU1LCAxNiwgMTQsIDcsIDI1NSwgMTUsIAorICAgIDE0LCA3LCAyNTUsIDE0LCAxNCwgNywgMjU1LCAxMywgMTQsIDcsIDI1NSwgMTIsIDE0LCA3LCAyNTUsIDExLCAxNCwgNywgCisgICAgMjU1LCAxMCwgMTQsIDcsIDI1NSwgOSwgMTQsIDcsIDI1NSwgOCwgMTQsIDcsIDI1NSwgNywgMTQsIDcsIDI1NSwgNiwgMTQsIAorICAgIDcsIDI1NSwgNCwgMTQsIDcsIDI1NSwgMywgMTQsIDcsIDI1NSwgMiwgMTQsIDcsIDI1NSwgMSwgMTQsIDcsIDI1NSwgMCwgCisgICAgMTQsIDcsIDI1NCwgMjU1LCAxNCwgNywgMjU0LCAyNTQsIDE0LCA3LCAyNTQsIDI1MywgMTQsIDcsIDI1NCwgMjUyLCAxNCwgCisgICAgNywgMjU0LCAyNTEsIDE0LCA3LCAyNTQsIDI1MCwgMTQsIDcsIDI1NCwgMjQ5LCAxNCwgNywgMjU0LCAyNDgsIDE0LCA3LCAKKyAgICAyNTQsIDI0NywgMTQsIDcsIDI1NCwgMjQ2LCAxNCwgNywgMjU0LCAyNDUsIDE0LCA3LCAyNTQsIDI0NCwgMTQsIDcsIDI1NCwgCisgICAgMjQzLCAxNCwgNywgMjU0LCAyNDEsIDE0LCA3LCAyNTQsIDI0MCwgMTQsIDcsIDI1NCwgMjM4LCAxNCwgNywgMjU0LCAyMzcsIAorICAgIDE0LCA3LCAyNTQsIDIzNiwgMTQsIDcsIDI1NCwgMjM1LCAxNCwgNywgMjU0LCAyMzQsIDE0LCA3LCAyNTQsIDIzMywgMTQsIAorICAgIDcsIDI1NCwgMjMyLCAxNCwgNywgMjU0LCAyMzEsIDE0LCA3LCAyNTQsIDIzMCwgMTQsIDcsIDI1NCwgMjI5LCAxNCwgNywgCisgICAgMjU0LCAyMjgsIDE0LCA3LCAyNTQsIDIyNywgMTQsIDcsIDI1NCwgMjI1LCAxNCwgNywgMjU0LCAyMjQsIDE0LCA3LCAyNTQsIAorICAgIDIyMywgMTQsIDcsIDI1NCwgMjIxLCAxNCwgNywgMjU0LCAyMjAsIDE0LCA3LCAyNTQsIDIxOSwgMTQsIDcsIDI1NCwgMjE4LCAKKyAgICAxNCwgNywgMjU0LCAyMTcsIDE0LCA3LCAyNTQsIDIxNiwgMTQsIDcsIDI1NCwgMjE1LCAxNCwgNywgMjU0LCAyMTQsIDE0LCAKKyAgICA3LCAyNTQsIDIxMSwgMTQsIDcsIDI1NCwgMjEwLCAxNCwgNywgMjU0LCAyMDksIDE0LCA3LCAyNTQsIDIwOCwgMTQsIDcsIAorICAgIDI1NCwgMjA3LCAxNCwgNywgMjU0LCAyMDYsIDE0LCA3LCAyNTQsIDIwNSwgMTQsIDcsIDI1NCwgMjA0LCAxNCwgNywgMjU0LCAKKyAgICAyMDMsIDE0LCA3LCAyNTQsIDIwMiwgMTQsIDcsIDI1NCwgMjAxLCAxNCwgNywgMjU0LCAyMDAsIDE0LCA3LCAyNTQsIDE5OSwgCisgICAgMTQsIDcsIDI1NCwgMTk4LCAxNCwgNywgMjU0LCAxOTcsIDE0LCA3LCAyNTQsIDE5NiwgMTQsIDcsIDI1NCwgMTk1LCAxNCwgCisgICAgNywgMjU0LCAxOTQsIDE0LCA3LCAyNTQsIDE5MywgMTQsIDcsIDI1NCwgMTkyLCAxNCwgNywgMjU0LCAxODgsIDE0LCA3LCAKKyAgICAyNTQsIDE4NywgMTQsIDcsIDI1NCwgMTg2LCAxNCwgNywgMjU0LCAxODUsIDE0LCA3LCAyNDksIDI1MywgMTQsIDcsIDI0OSwgCisgICAgMjUxLCAxNCwgNywgMjQ5LCAyNDksIDE0LCA3LCAyNDksIDI0NywgMTQsIDcsIDI0OSwgMjQ1LCAxNCwgNywgMjQ5LCAyNDQsIAorICAgIDE0LCA3LCAyNDksIDI0MiwgMTQsIDcsIDI0OSwgMjQwLCAxNCwgNywgMjQ5LCAyMzgsIDE0LCA3LCAyNDksIDIzNiwgMTQsIAorICAgIDcsIDI0NywgMTIxLCAxNCwgNywgMjQ3LCAxMjAsIDE0LCA3LCAyNDcsIDExOSwgMTQsIDcsIDI0NywgMTE4LCAxNCwgNywgCisgICAgMjQ3LCAxMTcsIDE0LCA3LCAyNDcsIDExNiwgMTQsIDcsIDI0NywgMTE1LCAxNCwgNywgMjQ3LCAxMTQsIDE0LCA3LCAyNDcsIAorICAgIDExMywgMTQsIDcsIDI0NywgMTEyLCAxNCwgNywgMjQ3LCAxMTEsIDE0LCA3LCAyNDcsIDExMCwgMTQsIDcsIDI0NywgMTA5LCAKKyAgICAxNCwgNywgMjQ3LCAxMDgsIDE0LCA3LCAyNDcsIDEwNywgMTQsIDcsIDI0NywgMTA2LCAxNCwgNywgMjQ3LCAxMDUsIDE0LCAKKyAgICA3LCAyNDcsIDEwNCwgMTQsIDcsIDI0NywgMTAzLCAxNCwgNywgMjQ3LCAxMDIsIDE0LCA3LCAyNDcsIDEwMSwgMTQsIDcsIAorICAgIDI0NywgMTAwLCAxNCwgNywgMjQ3LCA5OSwgMTQsIDcsIDI0NywgOTgsIDE0LCA3LCAyNDcsIDk3LCAxNCwgNywgMjQ3LCA5NiwgCisgICAgMTQsIDcsIDI0NywgOTUsIDE0LCA3LCAyNDcsIDk0LCAxNCwgNywgMjQ1LCA1MCwgMTQsIDcsIDI0NSwgNDksIDE0LCA3LCAKKyAgICAyNDUsIDQ4LCAxNCwgNywgMjQ1LCA0NywgMTQsIDcsIDI0NSwgNDYsIDE0LCA3LCAyNDUsIDQ1LCAxNCwgNywgMjQ1LCA0NCwgCisgICAgMTQsIDcsIDI0NSwgNDMsIDE0LCA3LCAyNDUsIDQyLCAxNCwgNywgMjQ1LCA0MSwgMTQsIDcsIDI0NSwgNDAsIDE0LCA3LCAKKyAgICAyNDUsIDM5LCAxNCwgNywgMjQ1LCAzOCwgMTQsIDcsIDI0NSwgMzcsIDE0LCA3LCAyNDUsIDM2LCAxNCwgNywgMjQ1LCAzNSwgCisgICAgMTQsIDcsIDI0NSwgMzQsIDE0LCA3LCAyNDUsIDMzLCAxNCwgNywgMjQ1LCAzMiwgMTQsIDcsIDI0NSwgMzEsIDE0LCA3LCAKKyAgICAyNDUsIDMwLCAxNCwgNywgMjQ1LCAyOSwgMTQsIDcsIDI0NSwgMjgsIDE0LCA3LCAyNDUsIDI3LCAxNCwgNywgMjQ1LCAyNiwgCisgICAgMTQsIDcsIDI0NSwgMjUsIDE0LCA3LCAyNDUsIDI0LCAxNCwgNywgMjQ1LCAyMywgMTQsIDcsIDI0NSwgMjIsIDE0LCA3LCAKKyAgICAyNDUsIDIxLCAxNCwgNywgMjQ1LCAyMCwgMTQsIDcsIDI0NSwgMTksIDE0LCA3LCAyNDUsIDE4LCAxNCwgNywgMjQ1LCAxNywgCisgICAgMTQsIDcsIDI0NSwgMTYsIDE0LCA3LCAyNDUsIDE1LCAxNCwgNywgMjQ1LCAxNCwgMTQsIDcsIDI0NSwgMTMsIDE0LCA3LCAKKyAgICAyNDUsIDEyLCAxNCwgNywgMjQ1LCAxMSwgMTQsIDcsIDI0NSwgMTAsIDE0LCA3LCAyNDUsIDksIDE0LCA3LCAyNDUsIDgsIAorICAgIDE0LCA3LCAyNDUsIDcsIDE0LCA3LCAyNDUsIDYsIDE0LCA3LCAyNDUsIDUsIDE0LCA3LCAyNDUsIDQsIDE0LCA3LCAyNDUsIAorICAgIDMsIDE0LCA3LCAyNDUsIDIsIDE0LCA3LCAyNDUsIDEsIDE0LCA3LCAyNDUsIDAsIDE0LCA3LCAyNDQsIDI1NSwgMTQsIDcsIAorICAgIDI0NCwgMjU0LCAxNCwgNywgMjQ0LCAyNTMsIDE0LCA3LCAyNDQsIDI1MiwgMTQsIDcsIDI0NCwgMjUxLCAxNCwgNywgMjQ0LCAKKyAgICAyNTAsIDE0LCA3LCAyNDQsIDI0OSwgMTQsIDcsIDI0NCwgMjQ4LCAxNCwgNywgMjQ0LCAyNDcsIDE0LCA3LCAyNDQsIDI0NiwgCisgICAgMTQsIDcsIDI0NCwgMjQ1LCAxNCwgNywgMjQ0LCAyNDQsIDE0LCA3LCAyNDQsIDI0MywgMTQsIDcsIDI0NCwgMjQyLCAxNCwgCisgICAgNywgMjQ0LCAyNDEsIDE0LCA3LCAyNDQsIDI0MCwgMTQsIDcsIDI0NCwgMjM5LCAxNCwgNywgMjQ0LCAyMzgsIDE0LCA3LCAKKyAgICAyNDQsIDIzNywgMTQsIDcsIDI0NCwgMjM2LCAxNCwgNywgMjQ0LCAyMzUsIDE0LCA3LCAyNDQsIDIzNCwgMTQsIDcsIDI0NCwgCisgICAgMjMzLCAxNCwgNywgMjQ0LCAyMzIsIDE0LCA3LCAyNDQsIDIzMSwgMTQsIDcsIDI0NCwgMjMwLCAxNCwgNywgMjQ0LCAyMjksIAorICAgIDE0LCA3LCAyNDQsIDIyOCwgMTQsIDcsIDI0NCwgMjI3LCAxNCwgNywgMjQ0LCAyMjYsIDE0LCA3LCAyNDQsIDIyNSwgMTQsIAorICAgIDcsIDI0NCwgMjI0LCAxNCwgNywgMjQ0LCAyMjMsIDE0LCA3LCAyNDQsIDIyMiwgMTQsIDcsIDI0NCwgMjIxLCAxNCwgNywgCisgICAgMjQ0LCAyMjAsIDE0LCA3LCAyNDQsIDIxOSwgMTQsIDcsIDI0NCwgMjE4LCAxNCwgNywgMjQ0LCAyMTcsIDE0LCA3LCAyNDQsIAorICAgIDIxNiwgMTQsIDcsIDI0NCwgMjE1LCAxNCwgNywgMjQxLCAyMzUsIDE0LCA3LCAyNDEsIDIzNCwgMTQsIDcsIDI0MSwgMjMzLCAKKyAgICAxNCwgNywgMjQxLCAyMzIsIDE0LCA3LCAyNDEsIDIzMSwgMTQsIDcsIDI0MSwgMjMwLCAxNCwgNywgMjQxLCAyMjksIDE0LCAKKyAgICA3LCAyNDEsIDIyOCwgMTQsIDcsIDI0MSwgMjI3LCAxNCwgNywgMjQxLCAyMjYsIDE0LCA3LCAyNDEsIDIyNSwgMTQsIDcsIAorICAgIDI0MSwgMjI0LCAxNCwgNywgMjQxLCAyMjMsIDE0LCA3LCAyNDEsIDIyMiwgMTQsIDcsIDI0MSwgMjIxLCAxNCwgNywgMjQxLCAKKyAgICAyMjAsIDE0LCA3LCAyNDEsIDIxOSwgMTQsIDcsIDI0MSwgMjE4LCAxNCwgNywgMjQxLCAyMTcsIDE0LCA3LCAyNDEsIDIxNiwgCisgICAgMTQsIDcsIDI0MSwgMjE1LCAxNCwgNywgMjQxLCAyMTQsIDE0LCA3LCAyNDEsIDIxMywgMTQsIDcsIDI0MSwgMjEyLCAxNCwgCisgICAgNywgMjQxLCAyMTEsIDE0LCA3LCAyNDEsIDIxMCwgMTQsIDcsIDI0MSwgMjA5LCAxNCwgNywgMjQxLCAyMDgsIDE0LCA3LCAKKyAgICAyNDEsIDIwNywgMTQsIDcsIDI0MSwgMjA2LCAxNCwgNywgMjQxLCAyMDUsIDE0LCA3LCAyNDEsIDIwNCwgMTQsIDcsIDI0MSwgCisgICAgMjAzLCAxNCwgNywgMjQxLCAyMDIsIDE0LCA3LCAyNDEsIDIwMSwgMTQsIDcsIDI0MSwgMjAwLCAxNCwgNywgMjQxLCAxOTksIAorICAgIDE0LCA3LCAyNDEsIDE5OCwgMTQsIDcsIDI0MSwgMTk3LCAxNCwgNywgMjQxLCAxOTYsIDE0LCA3LCAyNDEsIDE5NSwgMTQsIAorICAgIDcsIDI0MSwgMTk0LCAxNCwgNywgMjQxLCAxOTMsIDE0LCA3LCAyNDEsIDE5MiwgMTQsIDcsIDI0MCwgMTczLCAxNCwgNywgCisgICAgMjQwLCAxNzIsIDE0LCA3LCAyNDAsIDE3MSwgMTQsIDcsIDI0MCwgMTcwLCAxNCwgNywgMjQwLCAxNjksIDE0LCA3LCAyNDAsIAorICAgIDE2OCwgMTQsIDcsIDI0MCwgMTY3LCAxNCwgNywgMjQwLCAxNjYsIDE0LCA3LCAyNDAsIDE2NSwgMTQsIDcsIDI0MCwgMTY0LCAKKyAgICAxNCwgNywgMjQwLCAxNjMsIDE0LCA3LCAyNDAsIDE2MiwgMTQsIDcsIDI0MCwgMTYxLCAxNCwgNywgMjQwLCAxNjAsIDE0LCAKKyAgICA3LCAyNDAsIDE1OSwgMTQsIDcsIDI0MCwgMTU4LCAxNCwgNywgMjQwLCAxNTcsIDE0LCA3LCAyNDAsIDE1NiwgMTQsIDcsIAorICAgIDI0MCwgMTU1LCAxNCwgNywgMjQwLCAxNTQsIDE0LCA3LCAyNDAsIDE1MywgMTQsIDcsIDI0MCwgMTUyLCAxNCwgNywgMjQwLCAKKyAgICAxNTEsIDE0LCA3LCAyNDAsIDE1MCwgMTQsIDcsIDI0MCwgMTQ5LCAxNCwgNywgMjQwLCAxNDgsIDE0LCA3LCAyNDAsIDE0NywgCisgICAgMTQsIDcsIDI0MCwgMTQ2LCAxNCwgNywgMjQwLCAxNDUsIDE0LCA3LCAyNDAsIDE0NCwgMTQsIDcsIDI0MCwgMTQzLCAxNCwgCisgICAgNywgMjQwLCAxNDIsIDE0LCA3LCAyNDAsIDE0MSwgMTQsIDcsIDI0MCwgMTQwLCAxNCwgNywgMjQwLCAxMzksIDE0LCA3LCAKKyAgICAyNDAsIDEzOCwgMTQsIDcsIDI0MCwgMTM3LCAxNCwgNywgMjQwLCAxMzYsIDE0LCA3LCAyNDAsIDEzNSwgMTQsIDcsIDI0MCwgCisgICAgMTM0LCAxNCwgNywgMjQwLCAxMzMsIDE0LCA3LCAyNDAsIDEzMiwgMTQsIDcsIDI0MCwgMTMxLCAxNCwgNywgMjQwLCAxMzAsIAorICAgIDE0LCA3LCAyNDAsIDEyOSwgMTQsIDcsIDI0MCwgMTI4LCAxNCwgNywgMjQwLCAxMjcsIDE0LCA3LCAyNDAsIDEyNiwgMTQsIAorICAgIDcsIDI0MCwgMTI1LCAxNCwgNywgMjQwLCAxMjQsIDE0LCA3LCAyNDAsIDEyMywgMTQsIDcsIDI0MCwgMTIyLCAxNCwgNywgCisgICAgMjQwLCAxMjEsIDE0LCA3LCAyNDAsIDEyMCwgMTQsIDcsIDI0MCwgMTE5LCAxNCwgNywgMjQwLCAxMTgsIDE0LCA3LCAyNDAsIAorICAgIDExNywgMTQsIDcsIDI0MCwgMTE2LCAxNCwgNywgMjQwLCAxMTUsIDE0LCA3LCAyNDAsIDExNCwgMTQsIDcsIDI0MCwgMTEzLCAKKyAgICAxNCwgNywgMjQwLCAxMTIsIDE0LCA3LCAyNDAsIDExMSwgMTQsIDcsIDI0MCwgMTEwLCAxNCwgNywgMjQwLCAxMDksIDE0LCAKKyAgICA3LCAyMzksIDc0LCAxNCwgNywgMjM5LCA3MywgMTQsIDcsIDIzOSwgNzIsIDE0LCA3LCAyMzksIDcxLCAxNCwgNywgMjM5LCAKKyAgICA3MCwgMTQsIDcsIDIzOSwgNjksIDE0LCA3LCAyMzksIDY4LCAxNCwgNywgMjM5LCA2NywgMTQsIDcsIDIzOSwgNjYsIDE0LCAKKyAgICA3LCAyMzksIDY1LCAxNCwgNywgMjM5LCA2NCwgMTQsIDcsIDIzOSwgNjMsIDE0LCA3LCAyMzksIDYyLCAxNCwgNywgMjM5LCAKKyAgICA2MSwgMTQsIDcsIDIzOSwgNjAsIDE0LCA3LCAyMzksIDU5LCAxNCwgNywgMjM5LCA1OCwgMTQsIDcsIDIzOSwgNTcsIDE0LCAKKyAgICA3LCAyMzksIDU2LCAxNCwgNywgMjM5LCA1NSwgMTQsIDcsIDIzOSwgNTQsIDE0LCA3LCAyMzksIDUzLCAxNCwgNywgMjM5LCAKKyAgICA1MiwgMTQsIDcsIDIzOSwgNTEsIDE0LCA3LCAyMzksIDUwLCAxNCwgNywgMjM5LCA0OSwgMTQsIDcsIDIzOSwgNDgsIDE0LCAKKyAgICA3LCAyMzksIDQ3LCAxNCwgNywgMjM5LCA0NiwgMTQsIDcsIDIzOSwgNDUsIDE0LCA3LCAyMzksIDQ0LCAxNCwgNywgMjM5LCAKKyAgICA0MywgMTQsIDcsIDIzOSwgNDIsIDE0LCA3LCAyMzksIDQxLCAxNCwgNywgMjM5LCA0MCwgMTQsIDcsIDIzOSwgMzksIDE0LCAKKyAgICA3LCAyMzksIDM4LCAxNCwgNywgMjM5LCAzNywgMTQsIDcsIDIzOSwgMzYsIDE0LCA3LCAyMzksIDM1LCAxNCwgNywgMjM5LCAKKyAgICAzNCwgMTQsIDcsIDIzOSwgMzMsIDE0LCA3LCAyMzksIDMyLCAxNCwgNywgMjM5LCAzMSwgMTQsIDcsIDIzOSwgMzAsIDE0LCAKKyAgICA3LCAyMzksIDI5LCAxNCwgNywgMjM5LCAyOCwgMTQsIDcsIDIzOSwgMjcsIDE0LCA3LCAyMzksIDI2LCAxNCwgNywgMjM5LCAKKyAgICAyNSwgMTQsIDcsIDIzOSwgMjQsIDE0LCA3LCAyMzksIDIzLCAxNCwgNywgMjM5LCAyMiwgMTQsIDcsIDIzOSwgMjEsIDE0LCAKKyAgICA3LCAyMzksIDIwLCAxNCwgNywgMjM5LCAxOSwgMTQsIDcsIDIzOSwgMTgsIDE0LCA3LCAyMzksIDE3LCAxNCwgNywgMjM5LCAKKyAgICAxNiwgMTQsIDcsIDIzOSwgMTUsIDE0LCA3LCAyMzksIDE0LCAxNCwgNywgMjM5LCAxMywgMTQsIDcsIDIzOSwgMTIsIDE0LCAKKyAgICA3LCAyMzksIDExLCAxNCwgNywgMjM3LCAxNjksIDE0LCA3LCAyMzcsIDE2OCwgMTQsIDcsIDIzNywgMTY3LCAxNCwgNywgCisgICAgMjM3LCAxNjYsIDE0LCA3LCAyMzcsIDE2NSwgMTQsIDcsIDIzNywgMTY0LCAxNCwgNywgMjM3LCAxNjMsIDE0LCA3LCAyMzcsIAorICAgIDE2MiwgMTQsIDcsIDIzNywgMTYxLCAxNCwgNywgMjM1LCAxOTAsIDE0LCA3LCAyMzUsIDE4OSwgMTQsIDcsIDIzNSwgMTg4LCAKKyAgICAxNCwgNywgMjM1LCAxODcsIDE0LCA3LCAyMzUsIDE4NiwgMTQsIDcsIDIzNSwgMTg1LCAxNCwgNywgMjM1LCAxODQsIDE0LCAKKyAgICA3LCAyMzUsIDE4MywgMTQsIDcsIDIzNSwgMTgyLCAxNCwgNywgMjM1LCAxODEsIDE0LCA3LCAyMzUsIDE4MCwgMTQsIDcsIAorICAgIDIzNSwgMTc5LCAxNCwgNywgMjM1LCAxNzgsIDE0LCA3LCAyMzUsIDE3NywgMTQsIDcsIDIzNSwgMTc2LCAxNCwgNywgMjM1LCAKKyAgICAxNzUsIDE0LCA3LCAyMzUsIDE3NCwgMTQsIDcsIDIzNSwgMTczLCAxNCwgNywgMjM1LCAxNzIsIDE0LCA3LCAyMzAsIDUzLCAKKyAgICAxNCwgNywgMjMwLCA1MiwgMTQsIDcsIDIzMCwgNTEsIDE0LCA3LCAyMzAsIDUwLCAxNCwgNywgMjMwLCA0OSwgMTQsIDcsIAorICAgIDIzMCwgNDgsIDE0LCA3LCAyMzAsIDQ3LCAxNCwgNywgMjMwLCA0NiwgMTQsIDcsIDIyOCwgMTI4LCAxNCwgNywgMjI4LCAKKyAgICAxMjcsIDE0LCA3LCAyMjgsIDEyNiwgMTQsIDcsIDIyOCwgMTI1LCAxNCwgNywgMjI4LCAxMjQsIDE0LCA3LCAyMjgsIDEyMywgCisgICAgMTQsIDcsIDIyOCwgMTIyLCAxNCwgNywgMjI4LCAxMjEsIDE0LCA3LCAyMjgsIDEyMCwgMTQsIDcsIDIyOCwgMTE5LCAxNCwgCisgICAgNywgMjI2LCAxODMsIDE0LCA3LCAyMjYsIDE4MiwgMTQsIDcsIDIyNiwgMTgxLCAxNCwgNywgMjI2LCAxNzksIDE0LCA3LCAKKyAgICAyMjYsIDE3NywgMTQsIDcsIDIyNiwgMTc2LCAxNCwgNywgMjI2LCAxNzQsIDE0LCA3LCAyMjYsIDE3MiwgMTQsIDcsIDIyNiwgCisgICAgMTcwLCAxNCwgNywgMjI2LCAxNjgsIDE0LCA3LCAyMjYsIDE2NiwgMTQsIDcsIDIyNiwgMTY0LCAxNCwgNywgMjI2LCAxNjIsIAorICAgIDE0LCA3LCAyMjYsIDE2MSwgMTQsIDcsIDIyNiwgMTU5LCAxNCwgNywgMjI2LCAxNTcsIDE0LCA3LCAyMjYsIDE1NiwgMTQsIAorICAgIDcsIDIyNiwgMTU1LCAxNCwgNywgMjI2LCAxNTQsIDE0LCA3LCAyMjYsIDE1MywgMTQsIDcsIDIyNiwgMTUyLCAxNCwgNywgCisgICAgMjI2LCAxNTEsIDE0LCA3LCAyMjYsIDE1MCwgMTQsIDcsIDIyNiwgMTQ5LCAxNCwgNywgMjI2LCAxNDcsIDE0LCA3LCAyMjYsIAorICAgIDE0NSwgMTQsIDcsIDIyNiwgMTQzLCAxNCwgNywgMjI2LCAxNDIsIDE0LCA3LCAyMjYsIDE0MCwgMTQsIDcsIDIyNiwgMTM5LCAKKyAgICAxNCwgNywgMjI2LCAxMzcsIDE0LCA3LCAyMjYsIDEzNiwgMTQsIDcsIDIyNiwgMTM0LCAxNCwgNywgMjI2LCAxMzIsIDE0LCAKKyAgICA3LCAyMjYsIDEzMCwgMTQsIDcsIDIyNiwgMTI4LCAxNCwgNywgMjI2LCAxMjYsIDE0LCA3LCAyMjYsIDEyNSwgMTQsIDcsIAorICAgIDIyNiwgMTIzLCAxNCwgNywgMjI2LCAxMjEsIDE0LCA3LCAyMjYsIDEyMCwgMTQsIDcsIDIyNiwgMTE4LCAxNCwgNywgMjI2LCAKKyAgICAxMTYsIDE0LCA3LCAyMjYsIDExNCwgMTQsIDcsIDIyNiwgMTEyLCAxNCwgNywgMjI2LCAxMTEsIDE0LCA3LCAyMjYsIDEwOSwgCisgICAgMTQsIDcsIDIyNiwgMTA3LCAxNCwgNywgMjI2LCAxMDUsIDE0LCA3LCAyMjYsIDEwNCwgMTQsIDcsIDIyNiwgMTAyLCAxNCwgCisgICAgNywgMjI2LCAxMDAsIDE0LCA3LCAyMjYsIDk5LCAxNCwgNywgMjI2LCA5OCwgMTQsIDcsIDIyNiwgOTYsIDE0LCA3LCAyMjYsIAorICAgIDk0LCAxNCwgNywgMjI2LCA5MiwgMTQsIDcsIDIyNiwgOTAsIDE0LCA3LCAyMjYsIDg4LCAxNCwgNywgMjI2LCA4NiwgMTQsIAorICAgIDcsIDIyNiwgODQsIDE0LCA3LCAyMjYsIDgzLCAxNCwgNywgMjI2LCA4MSwgMTQsIDcsIDIyNiwgNzksIDE0LCA3LCAyMjYsIAorICAgIDc3LCAxNCwgNywgMjI2LCA3NSwgMTQsIDcsIDIyMywgMTYwLCAxNCwgNywgMjIzLCAxNTksIDE0LCA3LCAyMjMsIDE1OCwgCisgICAgMTQsIDcsIDIyMywgMTU3LCAxNCwgNywgMjIzLCAxNTYsIDE0LCA3LCAyMjMsIDE1NSwgMTQsIDcsIDIyMywgMTU0LCAxNCwgCisgICAgNywgMjIzLCAxNTMsIDE0LCA3LCAyMjMsIDE1MiwgMTQsIDcsIDIyMywgMTUxLCAxNCwgNywgMjIzLCAxNTAsIDE0LCA3LCAKKyAgICAyMjMsIDE0OSwgMTQsIDcsIDIyMywgMTQ4LCAxNCwgNywgMjIzLCAxNDcsIDE0LCA3LCAyMjMsIDE0NiwgMTQsIDcsIDIyMywgCisgICAgMTQ1LCAxNCwgNywgMjIzLCAxNDQsIDE0LCA3LCAyMjMsIDE0MywgMTQsIDcsIDIyMywgMTQyLCAxNCwgNywgMjIzLCAxNDEsIAorICAgIDE0LCA3LCAyMjMsIDE0MCwgMTQsIDcsIDIyMywgMTM5LCAxNCwgNywgMjIzLCAxMzgsIDE0LCA3LCAyMjMsIDEzNywgMTQsIAorICAgIDcsIDIyMywgMTM2LCAxNCwgNywgMjIzLCAxMzUsIDE0LCA3LCAyMjMsIDEzNCwgMTQsIDcsIDIyMywgMTMzLCAxNCwgNywgCisgICAgMjIzLCAxMzIsIDE0LCA3LCAyMjMsIDEzMSwgMTQsIDcsIDIyMywgMTMwLCAxNCwgNywgMjIzLCAxMjksIDE0LCA3LCAyMjMsIAorICAgIDEyOCwgMTQsIDcsIDIyMywgMTI3LCAxNCwgNywgMjIzLCAxMjYsIDE0LCA3LCAyMjMsIDEyNSwgMTQsIDcsIDIyMywgMTI0LCAKKyAgICAxNCwgNywgMjIzLCAxMjMsIDE0LCA3LCAyMjMsIDEyMiwgMTQsIDcsIDIyMywgMTIxLCAxNCwgNywgMjIzLCAxMjAsIDE0LCAKKyAgICA3LCAyMjMsIDExOSwgMTQsIDcsIDIyMywgMTE4LCAxNCwgNywgMjIzLCAxMTcsIDE0LCA3LCAyMjMsIDExNiwgMTQsIDcsIAorICAgIDIyMywgMTE1LCAxNCwgNywgMjIzLCAxMTQsIDE0LCA3LCAyMjMsIDExMywgMTQsIDcsIDIyMywgMTEyLCAxNCwgNywgMjIxLCAKKyAgICAyNTIsIDE0LCA3LCAyMjEsIDI1MSwgMTQsIDcsIDIyMSwgMjUwLCAxNCwgNywgMjIxLCAyNDksIDE0LCA3LCAyMjEsIDI0OCwgCisgICAgMTQsIDcsIDIyMSwgMjQ3LCAxNCwgNywgMjIxLCAyNDYsIDE0LCA3LCAyMjEsIDI0NSwgMTQsIDcsIDIyMSwgMjQ0LCAxNCwgCisgICAgNywgMjIxLCAyNDMsIDE0LCA3LCAyMjEsIDI0MiwgMTQsIDcsIDIyMSwgMjQxLCAxNCwgNywgMjIxLCAyNDAsIDE0LCA3LCAKKyAgICAyMjEsIDIzOSwgMTQsIDcsIDIyMSwgMjM4LCAxNCwgNywgMjIxLCAyMzcsIDE0LCA3LCAyMjEsIDIzNiwgMTQsIDcsIDIyMSwgCisgICAgMjM1LCAxNCwgNywgMjIxLCAyMzQsIDE0LCA3LCAyMjEsIDIzMywgMTQsIDcsIDIyMSwgMjMyLCAxNCwgNywgMjIxLCAyMzEsIAorICAgIDE0LCA3LCAyMjEsIDgzLCAxNCwgNywgMjIxLCA4MiwgMTQsIDcsIDIyMSwgODEsIDE0LCA3LCAyMjEsIDgwLCAxNCwgNywgCisgICAgMjIxLCA3OSwgMTQsIDcsIDIyMSwgNzgsIDE0LCA3LCAyMjEsIDc3LCAxNCwgNywgMjIxLCA3NiwgMTQsIDcsIDIyMSwgNzUsIAorICAgIDE0LCA3LCAyMjEsIDc0LCAxNCwgNywgMjIxLCA3MywgMTQsIDcsIDIyMSwgNzIsIDE0LCA3LCAyMjEsIDcxLCAxNCwgNywgCisgICAgMjIxLCA3MCwgMTQsIDcsIDIyMSwgNjksIDE0LCA3LCAyMjEsIDY4LCAxNCwgNywgMjIxLCA2NywgMTQsIDcsIDIyMSwgNjYsIAorICAgIDE0LCA3LCAyMjEsIDY1LCAxNCwgNywgMjIxLCA2NCwgMTQsIDcsIDIyMSwgNjMsIDE0LCA3LCAyMjEsIDYyLCAxNCwgNywgCisgICAgMjIxLCA2MSwgMTQsIDcsIDIyMSwgNjAsIDE0LCA3LCAyMjEsIDU5LCAxNCwgNywgMjIxLCA1OCwgMTQsIDcsIDIyMCwgMTczLCAKKyAgICAxNCwgNywgMjIwLCAxNzIsIDE0LCA3LCAyMjAsIDE3MSwgMTQsIDcsIDIyMCwgMTcwLCAxNCwgNywgMjIwLCAxNjksIDE0LCAKKyAgICA3LCAyMjAsIDE2OCwgMTQsIDcsIDIyMCwgMTY3LCAxNCwgNywgMjIwLCAxNjYsIDE0LCA3LCAyMjAsIDE2NSwgMTQsIDcsIAorICAgIDIyMCwgMTY0LCAxNCwgNywgMjIwLCAxNjMsIDE0LCA3LCAyMjAsIDE2MiwgMTQsIDcsIDIyMCwgMTYxLCAxNCwgNywgMjIwLCAKKyAgICAxNjAsIDE0LCA3LCAyMjAsIDE1OSwgMTQsIDcsIDIyMCwgMTU4LCAxNCwgNywgMjIwLCAxNTcsIDE0LCA3LCAyMjAsIDE1NiwgCisgICAgMTQsIDcsIDIyMCwgMTU1LCAxNCwgNywgMjIwLCAxNTQsIDE0LCA3LCAyMjAsIDE1MywgMTQsIDcsIDIyMCwgMTUyLCAxNCwgCisgICAgNywgMjIwLCAxNTEsIDE0LCA3LCAyMjAsIDE1MCwgMTQsIDcsIDIyMCwgMTQ5LCAxNCwgNywgMjIwLCAxNDgsIDE0LCA3LCAKKyAgICAyMjAsIDE0NywgMTQsIDcsIDIyMCwgMTQ2LCAxNCwgNywgMjIwLCAxNDUsIDE0LCA3LCAyMjAsIDE0NCwgMTQsIDcsIDIyMCwgCisgICAgMTQzLCAxNCwgNywgMjIwLCAxNDIsIDE0LCA3LCAyMjAsIDE0MSwgMTQsIDcsIDIyMCwgMTQwLCAxNCwgNywgMjIwLCAxMzksIAorICAgIDE0LCA3LCAyMjAsIDEzOCwgMTQsIDcsIDIyMCwgMTM3LCAxNCwgNywgMjIwLCAxMzYsIDE0LCA3LCAyMjAsIDEzNSwgMTQsIAorICAgIDcsIDIyMCwgMTM0LCAxNCwgNywgMjIwLCAxMzMsIDE0LCA3LCAyMjAsIDEzMiwgMTQsIDcsIDIyMCwgMTMxLCAxNCwgNywgCisgICAgMjIwLCAxMzAsIDE0LCA3LCAyMjAsIDEyOSwgMTQsIDcsIDIyMCwgMTI4LCAxNCwgNywgMjIwLCAxMjcsIDE0LCA3LCAyMjAsIAorICAgIDEyNiwgMTQsIDcsIDIyMCwgMTI1LCAxNCwgNywgMjIwLCAxMjQsIDE0LCA3LCAyMjAsIDEyMywgMTQsIDcsIDIyMCwgMTIyLCAKKyAgICAxNCwgNywgMjIwLCAxMjEsIDE0LCA3LCAyMjAsIDEyMCwgMTQsIDcsIDIyMCwgMTE5LCAxNCwgNywgMjIwLCAxMTgsIDE0LCAKKyAgICA3LCAyMjAsIDExNywgMTQsIDcsIDIyMCwgMTE2LCAxNCwgNywgMjIwLCAxMTUsIDE0LCA3LCAyMjAsIDExNCwgMTQsIDcsIAorICAgIDIyMCwgMTEzLCAxNCwgNywgMjIwLCAxMTIsIDE0LCA3LCAyMjAsIDExMSwgMTQsIDcsIDIyMCwgMTEwLCAxNCwgNywgMjIwLCAKKyAgICAxMDksIDE0LCA3LCAyMjAsIDEwOCwgMTQsIDcsIDIyMCwgMTA3LCAxNCwgNywgMjIwLCAxMDYsIDE0LCA3LCAyMjAsIDEwNSwgCisgICAgMTQsIDcsIDIyMCwgMTA0LCAxNCwgNywgMjIwLCAxMDMsIDE0LCA3LCAyMjAsIDEwMiwgMTQsIDcsIDIyMCwgMTAxLCAxNCwgCisgICAgNywgMjIwLCAxMDAsIDE0LCA3LCAyMjAsIDk5LCAxNCwgNywgMjE5LCAxODMsIDE0LCA3LCAyMTksIDE4MiwgMTQsIDcsIAorICAgIDIxOSwgMTgxLCAxNCwgNywgMjE5LCAxODAsIDE0LCA3LCAyMTksIDE3OSwgMTQsIDcsIDIxOSwgMTc4LCAxNCwgNywgMjE5LCAKKyAgICAxNzcsIDE0LCA3LCAyMTksIDE3NiwgMTQsIDcsIDIxOSwgMTc1LCAxNCwgNywgMjE5LCAxNzQsIDE0LCA3LCAyMTksIDE3MywgCisgICAgMTQsIDcsIDIxOSwgMTcyLCAxNCwgNywgMjE5LCAxNzEsIDE0LCA3LCAyMTcsIDEzMywgMTQsIDcsIDIxNywgMTMyLCAxNCwgCisgICAgNywgMjE3LCAxMzEsIDE0LCA3LCAyMTcsIDEzMCwgMTQsIDcsIDIxNywgMTI5LCAxNCwgNywgMjE3LCAxMjgsIDE0LCA3LCAKKyAgICAyMTcsIDEyNywgMTQsIDcsIDIxNiwgMjU1LCAxNCwgNywgMjE2LCAyNTQsIDE0LCA3LCAyMTYsIDI1MywgMTQsIDcsIDIxNiwgCisgICAgMjUyLCAxNCwgNywgMjE2LCAyNTEsIDE0LCA3LCAyMTYsIDI1MCwgMTQsIDcsIDIxNiwgMjQ5LCAxNCwgNywgMjE2LCAyNDgsIAorICAgIDE0LCA3LCAyMTYsIDI0NywgMTQsIDcsIDIxNiwgMjQ2LCAxNCwgNywgMjE2LCAyNDUsIDE0LCA3LCAyMTYsIDI0NCwgMTQsIAorICAgIDcsIDIxNiwgMjQzLCAxNCwgNywgMjE2LCAyNDIsIDE0LCA3LCAyMTYsIDI0MSwgMTQsIDcsIDIxNiwgMjQwLCAxNCwgNywgCisgICAgMjE2LCAyMzksIDE0LCA3LCAyMTYsIDIzOCwgMTQsIDcsIDIxNiwgMjM3LCAxNCwgNywgMjE2LCAyMzYsIDE0LCA3LCAyMTYsIAorICAgIDIzNSwgMTQsIDcsIDIxNiwgMjM0LCAxNCwgNywgMjE2LCAyMzMsIDE0LCA3LCAyMTYsIDIzMiwgMTQsIDcsIDIxNiwgMjMxLCAKKyAgICAxNCwgNywgMjE2LCAyMzAsIDE0LCA3LCAyMTYsIDIyOSwgMTQsIDcsIDIxNiwgMjI4LCAxNCwgNywgMjE2LCAyMjcsIDE0LCAKKyAgICA3LCAyMTYsIDIyNiwgMTQsIDcsIDIxNiwgMjI1LCAxNCwgNywgMjE2LCAyMjQsIDE0LCA3LCAyMTYsIDIyMywgMTQsIDcsIAorICAgIDIxNiwgMjIyLCAxNCwgNywgMjE1LCA5MSwgMTQsIDcsIDIxNSwgOTAsIDE0LCA3LCAyMTUsIDg5LCAxNCwgNywgMjE1LCA4OCwgCisgICAgMTQsIDcsIDIxNSwgODcsIDE0LCA3LCAyMTUsIDg2LCAxNCwgNywgMjE1LCA4NSwgMTQsIDcsIDIxNSwgODQsIDE0LCA3LCAKKyAgICAyMTUsIDgzLCAxNCwgNywgMjE1LCA4MiwgMTQsIDcsIDIxNSwgODEsIDE0LCA3LCAyMTUsIDgwLCAxNCwgNywgMjE1LCA3OSwgCisgICAgMTQsIDcsIDIxNSwgNzgsIDE0LCA3LCAyMTUsIDc3LCAxNCwgNywgMjE1LCA3NiwgMTQsIDcsIDIxNSwgNzUsIDE0LCA3LCAKKyAgICAyMTUsIDc0LCAxNCwgNywgMjE1LCA3MywgMTQsIDcsIDIxNSwgNzIsIDE0LCA3LCAyMTUsIDcxLCAxNCwgNywgMjE1LCA3MCwgCisgICAgMTQsIDcsIDIxNSwgNjksIDE0LCA3LCAyMTUsIDY4LCAxNCwgNywgMjE1LCA2NywgMTQsIDcsIDIxNSwgNjYsIDE0LCA3LCAKKyAgICAyMTUsIDY1LCAxNCwgNywgMjE1LCA2NCwgMTQsIDcsIDIxNSwgNjMsIDE0LCA3LCAyMTUsIDYyLCAxNCwgNywgMjE1LCA2MSwgCisgICAgMTQsIDcsIDIxNSwgNjAsIDE0LCA3LCAyMTUsIDU5LCAxNCwgNywgMjE1LCA1OCwgMTQsIDcsIDIxNSwgNTcsIDE0LCA3LCAKKyAgICAyMTUsIDU2LCAxNCwgNywgMjE1LCA1NSwgMTQsIDcsIDIxNSwgNTQsIDE0LCA3LCAyMTUsIDUzLCAxNCwgNywgMjE1LCA1MiwgCisgICAgMTQsIDcsIDIxNSwgNTEsIDE0LCA3LCAyMTUsIDUwLCAxNCwgNywgMjE1LCA0OSwgMTQsIDcsIDIxNSwgNDgsIDE0LCA3LCAKKyAgICAyMTUsIDQ3LCAxNCwgNywgMjE1LCA0NiwgMTQsIDcsIDIxNSwgNDUsIDE0LCA3LCAyMTUsIDQ0LCAxNCwgNywgMjE1LCA0MywgCisgICAgMTQsIDcsIDIxNSwgNDIsIDE0LCA3LCAyMTUsIDQxLCAxNCwgNywgMjE1LCA0MCwgMTQsIDcsIDIxNSwgMzksIDE0LCA3LCAKKyAgICAyMTUsIDM4LCAxNCwgNywgMjEwLCA2NywgMTQsIDcsIDIxMCwgNjYsIDE0LCA3LCAyMTAsIDY1LCAxNCwgNywgMjEwLCA2NCwgCisgICAgMTQsIDcsIDIxMCwgNjMsIDE0LCA3LCAyMTAsIDYyLCAxNCwgNywgMjEwLCA2MSwgMTQsIDcsIDIxMCwgNjAsIDE0LCA3LCAKKyAgICAyMTAsIDU5LCAxNCwgNywgMjEwLCA1OCwgMTQsIDcsIDIxMCwgNTcsIDE0LCA3LCAyMTAsIDU2LCAxNCwgNywgMjEwLCA1NSwgCisgICAgMTQsIDcsIDIxMCwgNTQsIDE0LCA3LCAyMTAsIDUzLCAxNCwgNywgMjEwLCA1MiwgMTQsIDcsIDIxMCwgNTEsIDE0LCA3LCAKKyAgICAyMTAsIDUwLCAxNCwgNywgMjEwLCA0OSwgMTQsIDcsIDIxMCwgNDgsIDE0LCA3LCAyMTAsIDQ3LCAxNCwgNywgMjEwLCA0NiwgCisgICAgMTQsIDcsIDIxMCwgNDUsIDE0LCA3LCAyMTAsIDQ0LCAxNCwgNywgMjEwLCA0MywgMTQsIDcsIDIxMCwgNDIsIDE0LCA3LCAKKyAgICAyMTAsIDQxLCAxNCwgNywgMjEwLCA0MCwgMTQsIDcsIDIxMCwgMzksIDE0LCA3LCAyMTAsIDM4LCAxNCwgNywgMjEwLCAzNywgCisgICAgMTQsIDcsIDIxMCwgMzYsIDE0LCA3LCAyMTAsIDM1LCAxNCwgNywgMjEwLCAzNCwgMTQsIDcsIDIxMCwgMzMsIDE0LCA3LCAKKyAgICAyMTAsIDMyLCAxNCwgNywgMjEwLCAzMSwgMTQsIDcsIDIxMCwgMzAsIDE0LCA3LCAyMTAsIDI5LCAxNCwgNywgMjEwLCAyOCwgCisgICAgMTQsIDcsIDIxMCwgMjcsIDE0LCA3LCAyMTAsIDI2LCAxNCwgNywgMjEwLCAyNSwgMTQsIDcsIDIxMCwgMjQsIDE0LCA3LCAKKyAgICAyMDcsIDg4LCAxNCwgNywgMjA3LCA4NywgMTQsIDcsIDIwNywgODYsIDE0LCA3LCAyMDcsIDg1LCAxNCwgNywgMjA3LCA4NCwgCisgICAgMTQsIDcsIDIwNywgODMsIDE0LCA3LCAyMDcsIDgyLCAxNCwgNywgMjA3LCA4MSwgMTQsIDcsIDIwNywgODAsIDE0LCA3LCAKKyAgICAyMDcsIDc5LCAxNCwgNywgMjA3LCA3OCwgMTQsIDcsIDIwNywgNzcsIDE0LCA3LCAyMDcsIDc2LCAxNCwgNywgMjA3LCA3NSwgCisgICAgMTQsIDcsIDIwNywgNzQsIDE0LCA3LCAyMDcsIDczLCAxNCwgNywgMjA3LCA3MiwgMTQsIDcsIDIwNywgNzEsIDE0LCA3LCAKKyAgICAyMDcsIDcwLCAxNCwgNywgMjA3LCA2OSwgMTQsIDcsIDIwNywgNjgsIDE0LCA3LCAyMDcsIDY3LCAxNCwgNywgMjA3LCA2NiwgCisgICAgMTQsIDcsIDIwNywgNjUsIDE0LCA3LCAyMDcsIDY0LCAxNCwgNywgMjA3LCA2MywgMTQsIDcsIDIwNywgNjIsIDE0LCA3LCAKKyAgICAyMDcsIDYxLCAxNCwgNywgMjA3LCA2MCwgMTQsIDcsIDIwNywgNTksIDE0LCA3LCAyMDcsIDU4LCAxNCwgNywgMjA3LCA1NywgCisgICAgMTQsIDcsIDIwNywgNTYsIDE0LCA3LCAyMDcsIDU1LCAxNCwgNywgMjA3LCA1NCwgMTQsIDcsIDIwNywgNTMsIDE0LCA3LCAKKyAgICAyMDcsIDUyLCAxNCwgNywgMjA3LCA1MSwgMTQsIDcsIDIwNywgNTAsIDE0LCA3LCAyMDcsIDQ5LCAxNCwgNywgMjA3LCA0OCwgCisgICAgMTQsIDcsIDIwNywgNDcsIDE0LCA3LCAyMDcsIDQ2LCAxNCwgNywgMjA3LCA0NSwgMTQsIDcsIDIwNywgNDQsIDE0LCA3LCAKKyAgICAyMDcsIDQzLCAxNCwgNywgMjA3LCA0MiwgMTQsIDcsIDIwNiwgMTYzLCAxNCwgNywgMjA2LCAxNjIsIDE0LCA3LCAyMDYsIAorICAgIDE2MSwgMTQsIDcsIDIwNiwgMTYwLCAxNCwgNywgMjA2LCAxNTksIDE0LCA3LCAyMDYsIDE1OCwgMTQsIDcsIDIwNiwgMTU3LCAKKyAgICAxNCwgNywgMjA2LCAxNTYsIDE0LCA3LCAyMDYsIDE1NSwgMTQsIDcsIDIwNiwgMTU0LCAxNCwgNywgMjA2LCAxNTMsIDE0LCAKKyAgICA3LCAyMDYsIDE1MiwgMTQsIDcsIDIwNiwgMTUxLCAxNCwgNywgMjA2LCAxNTAsIDE0LCA3LCAyMDYsIDE0OSwgMTQsIDcsIAorICAgIDIwNiwgMTQ4LCAxNCwgNywgMjA2LCAxNDcsIDE0LCA3LCAyMDYsIDE0NiwgMTQsIDcsIDIwNiwgMTQ1LCAxNCwgNywgMjA2LCAKKyAgICAxNDQsIDE0LCA3LCAyMDYsIDE0MywgMTQsIDcsIDIwNiwgMTQyLCAxNCwgNywgMjA2LCAxNDEsIDE0LCA3LCAyMDYsIDE0MCwgCisgICAgMTQsIDcsIDIwNiwgMTM5LCAxNCwgNywgMjA2LCAxMzgsIDE0LCA3LCAyMDYsIDEzNywgMTQsIDcsIDIwNiwgMTM2LCAxNCwgCisgICAgNywgMjA2LCAxMzUsIDE0LCA3LCAyMDYsIDEzNCwgMTQsIDcsIDIwNiwgMTMzLCAxNCwgNywgMjA2LCAxMzIsIDE0LCA3LCAKKyAgICAyMDYsIDEzMSwgMTQsIDcsIDIwNiwgMTMwLCAxNCwgNywgMjA2LCAxMjksIDE0LCA3LCAyMDYsIDEyOCwgMTQsIDcsIDIwNiwgCisgICAgMTI3LCAxNCwgNywgMjA2LCAxMjYsIDE0LCA3LCAyMDYsIDEyNSwgMTQsIDcsIDIwNiwgMTI0LCAxNCwgNywgMjA2LCAxMjMsIAorICAgIDE0LCA3LCAyMDYsIDEyMiwgMTQsIDcsIDIwNiwgMTIxLCAxNCwgNywgMjA2LCAxMjAsIDE0LCA3LCAyMDYsIDExOSwgMTQsIAorICAgIDcsIDIwNiwgMTE4LCAxNCwgNywgMjA2LCAxMTcsIDE0LCA3LCAyMDYsIDExNiwgMTQsIDcsIDIwNiwgMTE1LCAxNCwgNywgCisgICAgMjA2LCAxMTQsIDE0LCA3LCAyMDYsIDExMywgMTQsIDcsIDIwNiwgMTEyLCAxNCwgNywgMjA2LCAxMTEsIDE0LCA3LCAyMDYsIAorICAgIDExMCwgMTQsIDcsIDIwNiwgMTA5LCAxNCwgNywgMjA2LCAxMDgsIDE0LCA3LCAyMDYsIDEwNywgMTQsIDcsIDIwNiwgMTA2LCAKKyAgICAxNCwgNywgMjA2LCAxMDUsIDE0LCA3LCAyMDYsIDEwNCwgMTQsIDcsIDIwNiwgMTAzLCAxNCwgNywgMjA2LCAxMDIsIDE0LCAKKyAgICA3LCAyMDYsIDEwMSwgMTQsIDcsIDIwNiwgMTAwLCAxNCwgNywgMjA2LCA5OSwgMTQsIDcsIDIwNiwgOTgsIDE0LCA3LCAyMDYsIAorICAgIDk3LCAxNCwgNywgMjA2LCA5NiwgMTQsIDcsIDIwNiwgOTUsIDE0LCA3LCAyMDYsIDk0LCAxNCwgNywgMjA2LCA5MywgMTQsIAorICAgIDcsIDIwNiwgOTIsIDE0LCA3LCAyMDYsIDkxLCAxNCwgNywgMjA2LCA5MCwgMTQsIDcsIDIwNiwgODksIDE0LCA3LCAyMDYsIAorICAgIDg4LCAxNCwgNywgMjA2LCA4NywgMTQsIDcsIDIwNCwgMTQzLCAxNCwgNywgMjA0LCAxNDIsIDE0LCA3LCAyMDQsIDE0MSwgCisgICAgMTQsIDcsIDIwNCwgMTQwLCAxNCwgNywgMjA0LCAxMzksIDE0LCA3LCAyMDQsIDEzOCwgMTQsIDcsIDIwNCwgMTM3LCAxNCwgCisgICAgNywgMjA0LCAxMzYsIDE0LCA3LCAyMDQsIDEzNSwgMTQsIDcsIDIwNCwgMTM0LCAxNCwgNywgMjA0LCAxMzMsIDE0LCA3LCAKKyAgICAyMDQsIDEzMiwgMTQsIDcsIDIwNCwgMTMxLCAxNCwgNywgMjA0LCAxMzAsIDE0LCA3LCAyMDQsIDEyOSwgMTQsIDcsIDIwNCwgCisgICAgMTI4LCAxNCwgNywgMjA0LCAxMjcsIDE0LCA3LCAyMDQsIDEyNiwgMTQsIDcsIDIwNCwgMTI1LCAxNCwgNywgMjA0LCAxMjQsIAorICAgIDE0LCA3LCAyMDQsIDEyMywgMTQsIDcsIDIwNCwgMTIyLCAxNCwgNywgMjA0LCAxMjEsIDE0LCA3LCAyMDQsIDEyMCwgMTQsIAorICAgIDcsIDIwNCwgMTE5LCAxNCwgNywgMjA0LCAxMTgsIDE0LCA3LCAyMDQsIDExNywgMTQsIDcsIDIwNCwgMTE2LCAxNCwgNywgCisgICAgMjA0LCAxMTUsIDE0LCA3LCAyMDQsIDExNCwgMTQsIDcsIDIwNCwgMTEzLCAxNCwgNywgMjA0LCAxMTIsIDE0LCA3LCAyMDMsIAorICAgIDE5NCwgMTQsIDcsIDIwMywgMTkzLCAxNCwgNywgMjAzLCAxOTIsIDE0LCA3LCAyMDMsIDE5MSwgMTQsIDcsIDIwMywgMTkwLCAKKyAgICAxNCwgNywgMjAzLCAxODksIDE0LCA3LCAyMDMsIDE4OCwgMTQsIDcsIDIwMywgMTg3LCAxNCwgNywgMjAzLCAxODYsIDE0LCAKKyAgICA3LCAyMDMsIDE4NSwgMTQsIDcsIDIwMywgMTg0LCAxNCwgNywgMjAzLCAxODMsIDE0LCA3LCAyMDMsIDEyMiwgMTQsIDcsIAorICAgIDIwMywgMTIxLCAxNCwgNywgMjAzLCAxMjAsIDE0LCA3LCAyMDMsIDExOSwgMTQsIDcsIDIwMywgMTE4LCAxNCwgNywgMjAzLCAKKyAgICAxMTcsIDE0LCA3LCAyMDMsIDExNiwgMTQsIDcsIDIwMywgMTE1LCAxNCwgNywgMjAzLCAxMTQsIDE0LCA3LCAyMDIsIDE1OCwgCisgICAgMTQsIDcsIDIwMiwgMTU3LCAxNCwgNywgMjAyLCAxNTYsIDE0LCA3LCAyMDIsIDE1NSwgMTQsIDcsIDIwMiwgMTU0LCAxNCwgCisgICAgNywgMjAyLCAxNTMsIDE0LCA3LCAyMDIsIDE1MiwgMTQsIDcsIDIwMiwgMTUxLCAxNCwgNywgMjAyLCAxNTAsIDE0LCA3LCAKKyAgICAyMDIsIDE0OSwgMTQsIDcsIDIwMiwgMTQ4LCAxNCwgNywgMjAyLCAxNDcsIDE0LCA3LCAyMDIsIDE0NiwgMTQsIDcsIDIwMiwgCisgICAgMTQ1LCAxNCwgNywgMjAyLCAxNDQsIDE0LCA3LCAyMDIsIDE0MywgMTQsIDcsIDIwMiwgMTQyLCAxNCwgNywgMjAyLCAxNDEsIAorICAgIDE0LCA3LCAyMDIsIDE0MCwgMTQsIDcsIDIwMiwgMTM5LCAxNCwgNywgMjAyLCAxMzgsIDE0LCA3LCAyMDIsIDEzNywgMTQsIAorICAgIDcsIDIwMiwgMTM2LCAxNCwgNywgMjAyLCAxMzUsIDE0LCA3LCAyMDIsIDEzNCwgMTQsIDcsIDIwMiwgMTMzLCAxNCwgNywgCisgICAgMjAyLCAxMzIsIDE0LCA3LCAyMDIsIDEzMSwgMTQsIDcsIDIwMiwgMTMwLCAxNCwgNywgMjAyLCAxMjksIDE0LCA3LCAyMDIsIAorICAgIDEyOCwgMTQsIDcsIDIwMiwgMTI3LCAxNCwgNywgMjAyLCAxMjYsIDE0LCA3LCAyMDIsIDEyNSwgMTQsIDcsIDIwMiwgMTI0LCAKKyAgICAxNCwgNywgMjAyLCAxMjMsIDE0LCA3LCAyMDIsIDEyMiwgMTQsIDcsIDIwMiwgMTIxLCAxNCwgNywgMjAyLCAxMjAsIDE0LCAKKyAgICA3LCAyMDIsIDExOSwgMTQsIDcsIDIwMiwgMTE4LCAxNCwgNywgMjUyLCAyNCwgMTQsIDcsIDI1MiwgMjMsIDE0LCA3LCAyNTIsIAorICAgIDIyLCAxNCwgNywgMjUyLCAyMSwgMTQsIDcsIDI1MiwgMjAsIDE0LCA3LCAyNTIsIDE5LCAxNCwgNywgMjUyLCAxOCwgMTQsIAorICAgIDcsIDI1MiwgMTcsIDE0LCA3LCAyNTIsIDE2LCAxNCwgNywgMjUyLCAxNSwgMTQsIDcsIDI1MiwgMTQsIDE0LCA3LCAyNTIsIAorICAgIDEzLCAxNCwgNywgMjUyLCAxMiwgMTQsIDcsIDI1MiwgMTEsIDE0LCA3LCAyNTIsIDEwLCAxNCwgNywgMjUyLCA5LCAxNCwgNywgCisgICAgMjUyLCA4LCAxNCwgNywgMjUyLCA3LCAxNCwgNywgMjUyLCA2LCAxNCwgNywgMjUyLCA1LCAxNCwgNywgMjUyLCA0LCAxNCwgCisgICAgNywgMjUyLCAzLCAxNCwgNywgMjUyLCAyLCAxNCwgNywgMjUyLCAxLCAxNCwgNywgMjUyLCAwLCAxNCwgNywgMjUxLCAyNTUsIAorICAgIDE0LCA3LCAyNTEsIDI1NCwgMTQsIDcsIDI1MSwgMjUzLCAxNCwgNywgMjUxLCAyNTIsIDE0LCA3LCAyNTEsIDI1MSwgMTQsIAorICAgIDcsIDI1MSwgMjUwLCAxNCwgNywgMjUxLCAyNDksIDE0LCA3LCAyNTEsIDI0OCwgMTQsIDcsIDI1MSwgMjQ3LCAyNywgNywgCisgICAgMjU1LCAxOCwgMjcsIDcsIDI1NSwgMTcsIDI3LCA3LCAyNTUsIDE2LCAyNywgNywgMjU1LCAxNSwgMjcsIDcsIDI1NSwgMTQsIAorICAgIDI3LCA3LCAyNTUsIDEyLCAyNywgNywgMjU1LCA5LCAyNywgNywgMjU1LCA4LCAyNywgNywgMjU1LCA3LCAyNywgNywgMjU1LCAKKyAgICA2LCAyNywgNywgMjU1LCA1LCAyNywgNywgMjU1LCA0LCAyNywgNywgMjU1LCAzLCAyNywgNywgMjU1LCAyLCAyNywgNywgCisgICAgMjU1LCAxLCAyNywgNywgMjU0LCAyNTUsIDI3LCA3LCAyNTQsIDI1NCwgMjcsIDcsIDI1NCwgMjUzLCAyNywgNywgMjU0LCAKKyAgICAyNTEsIDI3LCA3LCAyNTQsIDI1MCwgMjcsIDcsIDI1NCwgMjQ5LCAyNywgNywgMjU0LCAyNDgsIDI3LCA3LCAyNTQsIDI0NywgCisgICAgMjcsIDcsIDI1NCwgMjQ2LCAyNywgNywgMjU0LCAyNDUsIDI3LCA3LCAyNTQsIDI0NCwgMjcsIDcsIDI1NCwgMjQzLCAyNywgCisgICAgNywgMjU0LCAyNDIsIDI3LCA3LCAyNTQsIDI0MSwgMjcsIDcsIDI1NCwgMjQwLCAyNywgNywgMjU0LCAyMzgsIDI3LCA3LCAKKyAgICAyNTQsIDIzNywgMjcsIDcsIDI1NCwgMjM2LCAyNywgNywgMjU0LCAyMzUsIDI3LCA3LCAyNTQsIDIzMywgMjcsIDcsIDI1NCwgCisgICAgMjMyLCAyNywgNywgMjU0LCAyMzEsIDI3LCA3LCAyNTQsIDIzMCwgMjcsIDcsIDI1NCwgMjI5LCAyNywgNywgMjU0LCAyMjgsIAorICAgIDI3LCA3LCAyNTQsIDIyNywgMjcsIDcsIDI1NCwgMjI2LCAyNywgNywgMjU0LCAyMjUsIDI3LCA3LCAyNTQsIDIyMywgMjcsIAorICAgIDcsIDI1NCwgMjIyLCAyNywgNywgMjU0LCAyMjEsIDI3LCA3LCAyNTQsIDIxOSwgMjcsIDcsIDI1NCwgMjE3LCAyNywgNywgCisgICAgMjU0LCAyMTYsIDI3LCA3LCAyNTQsIDIxNSwgMjcsIDcsIDI1NCwgMjE0LCAyNywgNywgMjU0LCAyMTMsIDI3LCA3LCAyNTQsIAorICAgIDIxMiwgMjcsIDcsIDI1NCwgMjExLCAyNywgNywgMjU0LCAyMTAsIDI3LCA3LCAyNTQsIDIwOSwgMjcsIDcsIDI1NCwgMjA4LCAKKyAgICAyNywgNywgMjU0LCAyMDcsIDI3LCA3LCAyNTQsIDIwNiwgMjcsIDcsIDI1NCwgMjA1LCAyNywgNywgMjU0LCAyMDQsIDI3LCAKKyAgICA3LCAyNTQsIDIwMywgMjcsIDcsIDI1NCwgMjAyLCAyNywgNywgMjU0LCAyMDEsIDI3LCA3LCAyNTQsIDIwMCwgMjcsIDcsIAorICAgIDI1NCwgMTk5LCAyNywgNywgMjU0LCAxOTgsIDI3LCA3LCAyNTQsIDE5NywgMjcsIDcsIDI1NCwgMTk2LCAyNywgNywgMjU0LCAKKyAgICAxOTUsIDI3LCA3LCAyNTQsIDE5NCwgMjcsIDcsIDI1NCwgMTkzLCAyNywgNywgMjU0LCAxOTIsIDI3LCA3LCAyNTQsIDE5MSwgCisgICAgMjcsIDcsIDI1NCwgMTkwLCAyNywgNywgMjU0LCAxODksIDI3LCA3LCAyNTQsIDE4OCwgMjcsIDcsIDI1NCwgMTg3LCAyNywgCisgICAgNywgMjU0LCAxODYsIDI3LCA3LCAyNTQsIDE4NSwgMjcsIDcsIDI1NCwgMTg0LCAyNywgNywgMjU0LCAxODMsIDI3LCA3LCAKKyAgICAyNTQsIDE4MiwgMjcsIDcsIDI1NCwgMTgxLCAyNywgNywgMjU0LCAxODAsIDI3LCA3LCAyNTQsIDE3OSwgMjcsIDcsIDI1NCwgCisgICAgMTc4LCAyNywgNywgMjU0LCAxNzcsIDI3LCA3LCAyNTQsIDE3NiwgMjcsIDcsIDI1NCwgMTc1LCAyNywgNywgMjU0LCAxNzQsIAorICAgIDI3LCA3LCAyNTQsIDE3MywgMjcsIDcsIDI1NCwgMTcyLCAyNywgNywgMjU0LCAxNzEsIDI3LCA3LCAyNTQsIDE3MCwgMjcsIAorICAgIDcsIDI1NCwgMTY5LCAyNywgNywgMjU0LCAxNjgsIDI3LCA3LCAyNTQsIDE2NywgMjcsIDcsIDI1NCwgMTY2LCAyNywgNywgCisgICAgMjU0LCAxNjUsIDI3LCA3LCAyNTQsIDE2NCwgMjcsIDcsIDI1NCwgMTYzLCAyNywgNywgMjU0LCAxNjIsIDI3LCA3LCAyNTQsIAorICAgIDE2MSwgMjcsIDcsIDI1NCwgMTYwLCAyNywgNywgMjU0LCAxNTksIDI3LCA3LCAyNTQsIDE1OCwgMjcsIDcsIDI1NCwgMTU3LCAKKyAgICAyNywgNywgMjU0LCAxNTYsIDI3LCA3LCAyNTQsIDE1NSwgMjcsIDcsIDI1NCwgMTU0LCAyNywgNywgMjU0LCAxNTMsIDI3LCAKKyAgICA3LCAyNTQsIDE1MSwgMjcsIDcsIDI1NCwgMTUwLCAyNywgNywgMjU0LCAxNDksIDI3LCA3LCAyNTQsIDE0OCwgMjcsIDcsIAorICAgIDI1NCwgMTQ3LCAyNywgNywgMjU0LCAxNDYsIDI3LCA3LCAyNTQsIDE0NSwgMjcsIDcsIDI1NCwgMTQ0LCAyNywgNywgMjU0LCAKKyAgICAxNDMsIDI3LCA3LCAyNTQsIDE0MiwgMjcsIDcsIDI1NCwgMTQxLCAyNywgNywgMjU0LCAxNDAsIDI3LCA3LCAyNTQsIDEzOSwgCisgICAgMjcsIDcsIDI1NCwgMTM4LCAyNywgNywgMjU0LCAxMzcsIDI3LCA3LCAyNTQsIDEzNiwgMjcsIDcsIDI1NCwgMTM1LCAyNywgCisgICAgNywgMjU0LCAxMzQsIDI3LCA3LCAyNTQsIDEzMywgMjcsIDcsIDI1NCwgMTMyLCAyNywgNywgMjU0LCAxMzEsIDI3LCA3LCAKKyAgICAyNTQsIDEzMCwgMjcsIDcsIDI1NCwgMTI5LCAyNywgNywgMjU0LCAxMjgsIDI3LCA3LCAyNTQsIDEyNywgMjcsIDcsIDI1NCwgCisgICAgMTI2LCAyNywgNywgMjU0LCAxMjUsIDI3LCA3LCAyNTQsIDEyNCwgMjcsIDcsIDI1NCwgMTIzLCAyNywgNywgMjU0LCAxMjIsIAorICAgIDI3LCA3LCAyNTQsIDEyMSwgMjcsIDcsIDI1NCwgMTIwLCAyNywgNywgMjU0LCAxMTksIDI3LCA3LCAyNTQsIDExOCwgMjcsIAorICAgIDcsIDI1NCwgMTE2LCAyNywgNywgMjU0LCAxMTUsIDI3LCA3LCAyNTQsIDExNCwgMjcsIDcsIDI1NCwgMTEzLCAyNywgNywgCisgICAgMjU0LCAxMTIsIDI3LCA3LCAyNTQsIDExMSwgMjcsIDcsIDI1NCwgMTEwLCAyNywgNywgMjU0LCAxMDksIDI3LCA3LCAyNTQsIAorICAgIDEwOCwgMjcsIDcsIDI1NCwgMTA3LCAyNywgNywgMjU0LCAxMDYsIDI3LCA3LCAyNTQsIDEwNSwgMjcsIDcsIDI1NCwgMTAzLCAKKyAgICAyNywgNywgMjU0LCAxMDIsIDI3LCA3LCAyNTQsIDEwMSwgMjcsIDcsIDI1NCwgMTAwLCAyNywgNywgMjU0LCA5OSwgMjcsIDcsIAorICAgIDI1NCwgOTgsIDI3LCA3LCAyNTQsIDk3LCAyNywgNywgMjU0LCA5NiwgMjcsIDcsIDI1NCwgOTUsIDI3LCA3LCAyNTQsIDk0LCAKKyAgICAyNywgNywgMjU0LCA5MywgMjcsIDcsIDI1NCwgOTIsIDI3LCA3LCAyNTQsIDkxLCAyNywgNywgMjU0LCA5MCwgMjcsIDcsIAorICAgIDI1NCwgODksIDI3LCA3LCAyNTQsIDg4LCAyNywgNywgMjU0LCA4NywgMjcsIDcsIDI1NCwgODYsIDI3LCA3LCAyNTQsIDg1LCAKKyAgICAyNywgNywgMjU0LCA4NCwgMjcsIDcsIDI1NCwgODMsIDI3LCA3LCAyNTQsIDgyLCAyNywgNywgMjU0LCA4MSwgMjcsIDcsIAorICAgIDI1NCwgODAsIDI3LCA3LCAyNTQsIDc5LCAyNywgNywgMjU0LCA3OCwgMjcsIDcsIDI1NCwgNzcsIDI3LCA3LCAyNTQsIDc2LCAKKyAgICAyNywgNywgMjU0LCA3NSwgMjcsIDcsIDI1NCwgNzQsIDI3LCA3LCAyNTQsIDczLCAyNywgNywgMjU0LCA3MiwgMjcsIDcsIAorICAgIDI1NCwgNzEsIDI3LCA3LCAyNTQsIDcwLCAyNywgNywgMjU0LCA2OSwgMjcsIDcsIDI1NCwgNjgsIDI3LCA3LCAyNTQsIDY3LCAKKyAgICAyNywgNywgMjU0LCA2NiwgMjcsIDcsIDI1NCwgNjUsIDI3LCA3LCAyNTQsIDY0LCAyNywgNywgMjU0LCA2MywgMjcsIDcsIAorICAgIDI1NCwgNjIsIDI3LCA3LCAyNTQsIDYxLCAyNywgNywgMjU0LCA2MCwgMjcsIDcsIDI1NCwgNTksIDI3LCA3LCAyNTQsIDU4LCAKKyAgICAyNywgNywgMjU0LCA1NywgMjcsIDcsIDI1NCwgNTYsIDI3LCA3LCAyNTQsIDU1LCAyNywgNywgMjU0LCA1NCwgMjcsIDcsIAorICAgIDI1NCwgNTMsIDI3LCA3LCAyNTQsIDUyLCAyNywgNywgMjU0LCA1MSwgMjcsIDcsIDI1NCwgNTAsIDI3LCA3LCAyNTQsIDQ5LCAKKyAgICAyNywgNywgMjU0LCA0OCwgMjcsIDcsIDI1NCwgNDcsIDI3LCA3LCAyNTQsIDQ2LCAyNywgNywgMjU0LCA0NSwgMjcsIDcsIAorICAgIDI1NCwgNDQsIDI3LCA3LCAyNTQsIDQzLCAyNywgNywgMjU0LCA0MiwgMjcsIDcsIDI1NCwgNDEsIDI3LCA3LCAyNTQsIDQwLCAKKyAgICAyNywgNywgMjU0LCAzOSwgMjcsIDcsIDI1NCwgMzgsIDI3LCA3LCAyNTQsIDM3LCAyNywgNywgMjU0LCAzNiwgMjcsIDcsIAorICAgIDI1NCwgMzUsIDI3LCA3LCAyNTQsIDMzLCAyNywgNywgMjU0LCAzMiwgMjcsIDcsIDI1NCwgMzEsIDI3LCA3LCAyNTQsIDMwLCAKKyAgICAyNywgNywgMjU0LCAyOSwgMjcsIDcsIDI1NCwgMjgsIDI3LCA3LCAyNTQsIDI3LCAyNywgNywgMjU0LCAyNiwgMjcsIDcsIAorICAgIDI1NCwgMjUsIDI3LCA3LCAyNTQsIDI0LCAyNywgNywgMjU0LCAyMywgMjcsIDcsIDI1NCwgMjIsIDI3LCA3LCAyNTQsIDIxLCAKKyAgICAyNywgNywgMjU0LCAyMCwgMjcsIDcsIDI1NCwgMTksIDI3LCA3LCAyNTQsIDE4LCAyNywgNywgMjU0LCAxNywgMjcsIDcsIAorICAgIDI1NCwgMTYsIDI3LCA3LCAyNTQsIDE1LCAyNywgNywgMjU0LCAxNCwgMjcsIDcsIDI1NCwgMTMsIDI3LCA3LCAyNTQsIDEyLCAKKyAgICAyNywgNywgMjU0LCAxMSwgMjcsIDcsIDI1NCwgMTAsIDI3LCA3LCAyNTQsIDksIDI3LCA3LCAyNTQsIDgsIDI3LCA3LCAyNTQsIAorICAgIDcsIDI3LCA3LCAyNTQsIDYsIDI3LCA3LCAyNTQsIDUsIDI3LCA3LCAyNTQsIDQsIDI3LCA3LCAyNTQsIDMsIDI3LCA3LCAKKyAgICAyNTQsIDIsIDI3LCA3LCAyNTQsIDEsIDI3LCA3LCAyNTQsIDAsIDI3LCA3LCAyNTMsIDI1NSwgMjcsIDcsIDI1MywgMjU0LCAKKyAgICAyNywgNywgMjUzLCAyNTMsIDI3LCA3LCAyNTMsIDI1MiwgMjcsIDcsIDI1MywgMjUxLCAyNywgNywgMjUzLCAyNTAsIDI3LCAKKyAgICA3LCAyNTMsIDI0OSwgMjcsIDcsIDI1MywgMjQ4LCAyNywgNywgMjUzLCAyNDcsIDI3LCA3LCAyNTMsIDI0NiwgMjcsIDcsIAorICAgIDI1MywgMjQ1LCAyNywgNywgMjUzLCAyNDQsIDI3LCA3LCAyNTMsIDI0MywgMjcsIDcsIDI1MywgMjQyLCAyNywgNywgMjUzLCAKKyAgICAyNDEsIDI3LCA3LCAyNTMsIDI0MCwgMjcsIDcsIDI1MywgMjM5LCAyNywgNywgMjUzLCAyMzgsIDI3LCA3LCAyNTMsIDIzNywgCisgICAgMjcsIDcsIDI1MywgMjM2LCAyNywgNywgMjUzLCAyMzUsIDI3LCA3LCAyNTMsIDIzNCwgMjcsIDcsIDI1MywgMjMzLCAyNywgCisgICAgNywgMjUzLCAyMzIsIDI3LCA3LCAyNTMsIDIzMSwgMjcsIDcsIDI1MywgMjMwLCAyNywgNywgMjUzLCAyMjksIDI3LCA3LCAKKyAgICAyNTMsIDIyOCwgMjcsIDcsIDI1MywgMjI3LCAyNywgNywgMjUzLCAyMjYsIDI3LCA3LCAyNTMsIDIyNSwgMjcsIDcsIDI1MywgCisgICAgMjI0LCAyNywgNywgMjUzLCAyMjMsIDI3LCA3LCAyNTMsIDIyMiwgMjcsIDcsIDI1MywgMjIxLCAyNywgNywgMjUzLCAyMjAsIAorICAgIDI3LCA3LCAyNTMsIDIxOSwgMjcsIDcsIDI1MywgMjE4LCAyNywgNywgMjUzLCAyMTcsIDI3LCA3LCAyNTMsIDIxNiwgMjcsIAorICAgIDcsIDI1MywgMjE1LCAyNywgNywgMjUzLCAyMTQsIDI3LCA3LCAyNTMsIDIxMywgMjcsIDcsIDI1MywgMjEyLCAyNywgNywgCisgICAgMjUzLCAyMTEsIDI3LCA3LCAyNTMsIDIxMCwgMjcsIDcsIDI1MywgMjA5LCAyNywgNywgMjUzLCAyMDgsIDI3LCA3LCAyNTMsIAorICAgIDIwNywgMjcsIDcsIDI1MywgMjA2LCAyNywgNywgMjUzLCAyMDUsIDI3LCA3LCAyNTMsIDIwNCwgMjcsIDcsIDI1MywgMjAzLCAKKyAgICAyNywgNywgMjUzLCAyMDIsIDI3LCA3LCAyNTMsIDIwMSwgMjcsIDcsIDI1MywgMjAwLCAyNywgNywgMjUzLCAxOTksIDI3LCAKKyAgICA3LCAyNTMsIDE5OCwgMjcsIDcsIDI1MywgMTk3LCAyNywgNywgMjUzLCAxOTYsIDI3LCA3LCAyNTMsIDE5NSwgMjcsIDcsIAorICAgIDI1MywgMTk0LCAyNywgNywgMjUzLCAxOTMsIDI3LCA3LCAyNTMsIDE5MiwgMjcsIDcsIDI1MywgMTkxLCAyNywgNywgMjUzLCAKKyAgICAxOTAsIDI3LCA3LCAyNTMsIDE4OSwgMjcsIDcsIDI1MywgMTg4LCAyNywgNywgMjUzLCAxODcsIDI3LCA3LCAyNTMsIDE4NiwgCisgICAgMjcsIDcsIDI1MywgMTg1LCAyNywgNywgMjUzLCAxODQsIDI3LCA3LCAyNTMsIDE4MywgMjcsIDcsIDI1MywgMTgyLCAyNywgCisgICAgNywgMjUzLCAxODEsIDI3LCA3LCAyNTMsIDE4MCwgMjcsIDcsIDI1MywgMTc5LCAyNywgNywgMjUzLCAxNzcsIDI3LCA3LCAKKyAgICAyNTMsIDE3NiwgMjcsIDcsIDI1MywgMTc1LCAyNywgNywgMjUzLCAxNzQsIDI3LCA3LCAyNTMsIDE3MywgMjcsIDcsIDI1MywgCisgICAgMTcyLCAyNywgNywgMjUzLCAxNzEsIDI3LCA3LCAyNTMsIDE3MCwgMjcsIDcsIDI1MywgMTY5LCAyNywgNywgMjUzLCAxNjgsIAorICAgIDI3LCA3LCAyNTMsIDE2NywgMjcsIDcsIDI1MywgMTY0LCAyNywgNywgMjUzLCAxNjMsIDI3LCA3LCAyNTMsIDE2MiwgMjcsIAorICAgIDcsIDI1MywgMTYxLCAyNywgNywgMjUzLCAxNTcsIDI3LCA3LCAyNTMsIDE1NiwgMjcsIDcsIDI1MywgMTU1LCAyNywgNywgCisgICAgMjUzLCAxNTQsIDI3LCA3LCAyNTMsIDE1MywgMjcsIDcsIDI1MywgMTUyLCAyNywgNywgMjUzLCAxNTEsIDI3LCA3LCAyNTMsIAorICAgIDE1MCwgMjcsIDcsIDI1MywgMTQ5LCAyNywgNywgMjUzLCAxNDgsIDI3LCA3LCAyNTMsIDE0NywgMjcsIDcsIDI1MywgMTQ2LCAKKyAgICAyNywgNywgMjUzLCAxNDUsIDI3LCA3LCAyNTMsIDE0NCwgMjcsIDcsIDI1MywgMTQzLCAyNywgNywgMjUzLCAxNDIsIDI3LCAKKyAgICA3LCAyNTMsIDE0MSwgMjcsIDcsIDI1MywgMTQwLCAyNywgNywgMjUzLCAxMzksIDI3LCA3LCAyNTMsIDEzNywgMjcsIDcsIAorICAgIDI1MywgMTM2LCAyNywgNywgMjUzLCAxMzUsIDI3LCA3LCAyNTMsIDEzNCwgMjcsIDcsIDI1MywgMTMzLCAyNywgNywgMjUzLCAKKyAgICAxMzIsIDI3LCA3LCAyNTMsIDEzMSwgMjcsIDcsIDI1MywgMTMwLCAyNywgNywgMjUzLCAxMjksIDI3LCA3LCAyNTMsIDEyOCwgCisgICAgMjcsIDcsIDI1MywgMTI3LCAyNywgNywgMjUzLCAxMjYsIDI3LCA3LCAyNTMsIDEyNSwgMjcsIDcsIDI1MywgMTI0LCAyNywgCisgICAgNywgMjUzLCAxMjMsIDI3LCA3LCAyNTMsIDEyMiwgMjcsIDcsIDI1MywgMTIxLCAyNywgNywgMjUzLCAxMjAsIDI3LCA3LCAKKyAgICAyNTMsIDExOSwgMjcsIDcsIDI1MywgMTE4LCAyNywgNywgMjUzLCAxMTcsIDI3LCA3LCAyNTMsIDExNiwgMjcsIDcsIDI1MywgCisgICAgMTE1LCAyNywgNywgMjUzLCAxMTQsIDI3LCA3LCAyNTMsIDExMywgMjcsIDcsIDI1MywgMTEyLCAyNywgNywgMjUzLCAxMTEsIAorICAgIDI3LCA3LCAyNTMsIDExMCwgMjcsIDcsIDI1MywgMTA5LCAyNywgNywgMjUzLCAxMDgsIDI3LCA3LCAyNTMsIDEwNywgMjcsIAorICAgIDcsIDI1MywgMTA2LCAyNywgNywgMjUzLCAxMDUsIDI3LCA3LCAyNTMsIDEwNCwgMjcsIDcsIDI1MywgMTAzLCAyNywgNywgCisgICAgMjUzLCAxMDIsIDI3LCA3LCAyNTMsIDEwMSwgMjcsIDcsIDI1MywgMTAwLCAyNywgNywgMjUzLCA5OSwgMjcsIDcsIDI1MywgCisgICAgOTgsIDI3LCA3LCAyNTMsIDk3LCAyNywgNywgMjUzLCA5NiwgMjcsIDcsIDI1MywgOTUsIDI3LCA3LCAyNTMsIDk0LCAyNywgCisgICAgNywgMjUzLCA5MywgMjcsIDcsIDI1MywgOTIsIDI3LCA3LCAyNTMsIDkxLCAyNywgNywgMjUzLCA5MCwgMjcsIDcsIDI1MywgCisgICAgODksIDI3LCA3LCAyNTMsIDg4LCAyNywgNywgMjUzLCA4NywgMjcsIDcsIDI1MywgODYsIDI3LCA3LCAyNTMsIDg1LCAyNywgCisgICAgNywgMjUzLCA4NCwgMjcsIDcsIDI1MywgODMsIDI3LCA3LCAyNTMsIDgyLCAyNywgNywgMjUzLCA4MSwgMjcsIDcsIDI1MywgCisgICAgODAsIDI3LCA3LCAyNTMsIDc5LCAyNywgNywgMjUzLCA3OCwgMjcsIDcsIDI1MywgNzcsIDI3LCA3LCAyNTMsIDc2LCAyMTYsIAorICAgIDIyMSwgMjE5LCAyNDUsIDIxNiwgNTcsIDI3LCA3LCAyNTMsIDc1LCAyNywgNywgMjUzLCA3NCwgMjcsIDcsIDI1MywgNzMsIAorICAgIDI3LCA3LCAyNTMsIDcyLCAyNywgNywgMjUzLCA3MSwgMjcsIDcsIDI1MywgNzAsIDI3LCA3LCAyNTMsIDY5LCAyNywgNywgCisgICAgMjUzLCA2OCwgMjcsIDcsIDI1MywgNjcsIDI3LCA3LCAyNTMsIDY2LCAyNywgNywgMjUzLCA2NSwgMjcsIDcsIDI1MywgNjQsIAorICAgIDE5OSwgMjcsIDcsIDI1MywgNjMsIDI3LCA3LCAyNTMsIDYyLCAyNywgNywgMjUzLCA2MSwgMjcsIDcsIDI1MywgNjAsIDI3LCAKKyAgICA3LCAyNTMsIDU5LCAyNywgNywgMjUzLCA1OCwgMjcsIDcsIDI1MywgNTcsIDI3LCA3LCAyNTMsIDU1LCAyNywgNywgMjUzLCAKKyAgICA1MywgMjcsIDcsIDI1MywgNTEsIDI3LCA3LCAyNTMsIDQ5LCAyNywgNywgMjUzLCA0NywgMjcsIDcsIDI1MywgNDUsIDI3LCAKKyAgICA3LCAyNTMsIDQzLCAyNywgNywgMjUzLCA0MSwgMjcsIDcsIDI1MywgMzksIDI3LCA3LCAyNTMsIDM3LCAyNDgsIDE0MiwgCisgICAgMjI3LCAzNiwgODIsIDI3LCA3LCAyNTMsIDM1LCAyNDEsIDg0LCAyMjcsIDM2LCA4MiwgMjcsIDcsIDI1MywgMzQsIDI3LCA3LCAKKyAgICAyNTMsIDMyLCAyNywgNywgMjUzLCAzMCwgMjcsIDcsIDI1MywgMjgsIDI3LCA3LCAyNTMsIDI2LCAyNywgNywgMjUzLCAyNCwgCisgICAgMjcsIDcsIDI1MywgMjIsIDI3LCA3LCAyNTMsIDIwLCAyNywgNywgMjUzLCAxOCwgMjcsIDcsIDI1MywgMTcsIDI3LCA3LCAKKyAgICAyNTMsIDE2LCAyNywgNywgMjUzLCAxNSwgMjcsIDcsIDI1MywgMTQsIDI3LCA3LCAyNTMsIDEzLCAyNywgNywgMjUzLCAxMiwgCisgICAgMjcsIDcsIDI1MywgMTEsIDI3LCA3LCAyNTMsIDEwLCAyNywgNywgMjUzLCA5LCAyNywgNywgMjUzLCA4LCAyNywgNywgMjUzLCAKKyAgICA3LCAyNywgNywgMjUzLCA2LCAyNywgNywgMjUzLCA1LCAyNywgNywgMjUzLCA0LCAyNywgNywgMjUzLCAzLCAyNywgNywgCisgICAgMjUzLCAyLCAyNywgNywgMjUzLCAxLCAyNywgNywgMjUzLCAwLCAyNywgNywgMjUyLCAyNTUsIDI3LCA3LCAyNTIsIDI1NCwgCisgICAgMjcsIDcsIDI1MiwgMjUzLCAyNywgNywgMjUyLCAyNTIsIDI3LCA3LCAyNTIsIDI1MSwgMjcsIDcsIDI1MiwgMjUwLCAyNywgCisgICAgNywgMjUyLCAyNDksIDI3LCA3LCAyNTIsIDI0OCwgMjcsIDcsIDI1MiwgMjQ3LCAyNywgNywgMjUyLCAyNDYsIDI3LCA3LCAKKyAgICAyNTIsIDI0NSwgMjcsIDcsIDI1MiwgMjQ0LCAyNywgNywgMjUyLCAyNDMsIDI3LCA3LCAyNTIsIDI0MiwgMjcsIDcsIDI1MiwgCisgICAgMjQxLCAyNywgNywgMjUyLCAyNDAsIDI3LCA3LCAyNTIsIDIzOSwgMjcsIDcsIDI1MiwgMjM4LCAyNywgNywgMjUyLCAyMzcsIAorICAgIDI3LCA3LCAyNTIsIDIzNiwgMjcsIDcsIDI1MiwgMjM1LCAyNywgNywgMjUyLCAyMzQsIDI3LCA3LCAyNTIsIDIzMywgMjcsIAorICAgIDcsIDI1MiwgMjMyLCAyNywgNywgMjUyLCAyMzEsIDI3LCA3LCAyNTIsIDIzMCwgMjcsIDcsIDI1MiwgMjI5LCAyNywgNywgCisgICAgMjUyLCAyMjgsIDI3LCA3LCAyNTIsIDIyNywgMjcsIDcsIDI1MiwgMjI2LCAyNywgNywgMjUyLCAyMjUsIDI3LCA3LCAyNTIsIAorICAgIDIyNCwgMjcsIDcsIDI1MiwgMjIzLCAyNywgNywgMjUyLCAyMjIsIDI3LCA3LCAyNTIsIDIyMSwgMjcsIDcsIDI1MiwgMjIwLCAKKyAgICAyNywgNywgMjUyLCAyMTksIDI3LCA3LCAyNTIsIDIxOCwgMjcsIDcsIDI1MiwgMjE3LCAyNywgNywgMjUyLCAyMTYsIDI3LCAKKyAgICA3LCAyNTIsIDIxNSwgMjcsIDcsIDI1MiwgMjE0LCAyNywgNywgMjUyLCAyMTMsIDI3LCA3LCAyNTIsIDIxMiwgMjcsIDcsIAorICAgIDI1MiwgMjExLCAyNywgNywgMjUyLCAyMTAsIDI3LCA3LCAyNTIsIDIwOSwgMjcsIDcsIDI1MiwgMjA4LCAyNywgNywgMjUyLCAKKyAgICAyMDcsIDI3LCA3LCAyNTIsIDIwNiwgMjcsIDcsIDI1MiwgMjA1LCAyNywgNywgMjUyLCAyMDQsIDI3LCA3LCAyNTIsIDIwMywgCisgICAgMjcsIDcsIDI1MiwgMjAyLCAyNywgNywgMjUyLCAyMDEsIDI3LCA3LCAyNTIsIDIwMCwgMjcsIDcsIDI1MiwgMTk5LCAyNywgCisgICAgNywgMjUyLCAxOTgsIDI3LCA3LCAyNTIsIDE5NywgMjcsIDcsIDI1MiwgMTk2LCAyNywgNywgMjUyLCAxOTUsIDI3LCA3LCAKKyAgICAyNTIsIDE5NCwgMjcsIDcsIDI1MiwgMTkzLCAyNywgNywgMjUyLCAxOTIsIDI3LCA3LCAyNTIsIDE5MSwgMjcsIDcsIDI1MiwgCisgICAgMTkwLCAyNywgNywgMjUyLCAxODksIDI3LCA3LCAyNTIsIDE4OCwgMjcsIDcsIDI1MiwgMTg3LCAyNywgNywgMjUyLCAxODYsIAorICAgIDI3LCA3LCAyNTIsIDE4NSwgMjcsIDcsIDI1MiwgMTg0LCAyNywgNywgMjUyLCAxODMsIDI3LCA3LCAyNTIsIDE4MiwgMjcsIAorICAgIDcsIDI1MiwgMTgxLCAyNywgNywgMjUyLCAxODAsIDI3LCA3LCAyNTIsIDE3OSwgMjcsIDcsIDI1MiwgMTc4LCAyNywgNywgCisgICAgMjUyLCAxNzcsIDI3LCA3LCAyNTIsIDE3NiwgMjcsIDcsIDI1MiwgMTc1LCAyNywgNywgMjUyLCAxNzQsIDI3LCA3LCAyNTIsIAorICAgIDE3MywgMjcsIDcsIDI1MiwgMTcyLCAyNywgNywgMjUyLCAxNzEsIDI3LCA3LCAyNTIsIDE3MCwgMjcsIDcsIDI1MiwgMTY5LCAKKyAgICAyNywgNywgMjUyLCAxNjgsIDI3LCA3LCAyNTIsIDE2NywgMjcsIDcsIDI1MiwgMTY2LCAyNywgNywgMjUyLCAxNjUsIDI3LCAKKyAgICA3LCAyNTIsIDE2NCwgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDEzNiwgMjI0LCAxOTcsIDI0LCAxLCAyMTgsIDE5OCwgMjM4LCAKKyAgICAxOTgsIDIzOSwgMTc4LCAyNCwgMSwgMjE4LCAxOTgsIDIxOCwgNDcsIDIyNCwgMTk4LCAyMTgsIDExNSwgMjQsIDEsIDIxOCwgCisgICAgMTk4LCAyMTgsIDQ3LCAyMjQsIDE5OCwgMjE4LCAxMTYsIDI0LCAxLCAyMTgsIDE5OCwgMjIzLCAxMDcsIDIyNCwgMTk3LCAKKyAgICAyNCwgMSwgMjE4LCAxOTgsIDIxMiwgMTk1LCAyNCwgMSwgMjE4LCAxOTgsIDIwOCwgMTk5LCAyMjQsIDE5NywgMjQsIDEsIAorICAgIDIxOCwgMTk4LCAyMjAsIDIxNSwgMjI0LCAxOTcsIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCAyNTQsIDIxOSwgMTY5LCAyMjIsIAorICAgIDMyLCAyNCwgMSwgMjE4LCAxOTgsIDIxOCwgNDcsIDIxOSwgMTY5LCAyMjIsIDMzLCAyMTgsIDExNSwgMjQsIDEsIDIxOCwgCisgICAgMTk4LCAyMTgsIDQ3LCAyMTksIDE2OSwgMjIyLCAzMywgMjE4LCAxMTYsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxNTYsIDI0LCAKKyAgICAxLCAyMTgsIDE5OCwgMjA3LCAyMDQsIDIyNSwgMTU3LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgMTk3LCAyNCwgMSwgMjE4LCAKKyAgICAxOTgsIDIyNSwgMTUzLCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTExLCAyNCwgMSwgMjE4LCAxOTgsIDIyMywgMTg2LCAyNCwgCisgICAgMSwgMjE4LCAxOTgsIDIxMywgMTE0LCAyNCwgMSwgMjE4LCAxOTgsIDIyMSwgOTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI5LCAKKyAgICAxNjMsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAwLCAyNCwgMSwgMjE4LCAxOTgsIDIxMCwgMTc5LCAyNCwgMSwgMjE4LCAxOTgsIAorICAgIDIyMiwgMTM1LCAyNCwgMSwgMjE4LCAxOTgsIDIyOCwgMTAsIDI0LCAxLCAyMTgsIDE5OCwgMjI3LCAxNzYsIDIyOCwgMTc1LCAKKyAgICAyNCwgMSwgMjE4LCAxOTgsIDIyMSwgMTAxLCAyMjQsIDIwNSwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE2MCwgMjQsIDEsIAorICAgIDIxOCwgMTk4LCAyMTksIDYyLCAyNCwgMSwgMjE4LCAxOTgsIDIzOCwgMTAwLCAyNCwgMSwgMjE4LCAxOTgsIDIxOSwgMTI1LCAKKyAgICAyNCwgMSwgMjE4LCAxOTgsIDIyNCwgNTUsIDIyMiwgMTcwLCAyNCwgMSwgMjE4LCAxOTgsIDIyMCwgMTk2LCAyMjQsIDIwOCwgCisgICAgMjQsIDEsIDIxOCwgMTk4LCAxMDYsIDIwMiwgMTg4LCAyMjMsIDEwMCwgMjQsIDEsIDIxOCwgMTk4LCAyMzgsIDEwMSwgMjQsIAorICAgIDEsIDIxOCwgMTk4LCAyMjEsIDEwMSwgMjIxLCAxMDIsIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCA5MSwgMjQsIDEsIDIxOCwgCisgICAgMTk4LCAyMjQsIDE5MCwgMjQsIDEsIDIxOCwgMTk4LCAyMjQsIDIxMSwgMjQsIDEsIDIxOCwgMTk4LCAyMjQsIDMxLCAyNCwgCisgICAgMSwgMjE4LCAxOTgsIDIzMCwgMjEsIDI0LCAxLCAyMTgsIDE5OCwgMjE5LCAxNjksIDIyNywgMjIzLCAyNCwgMSwgMjE4LCAKKyAgICAxOTgsIDIyMywgMjYsIDIyNywgMjIzLCAyNCwgMSwgMjE4LCAxOTgsIDIxOCwgMjE5LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgCisgICAgMTU0LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgNzQsIDI0LCAxLCAyMTgsIDE5OCwgMjE3LCAxNzIsIDI0LCAxLCAyMTgsIAorICAgIDE5OCwgMjA3LCAyMDEsIDI0LCAxLCAyMTgsIDE5OCwgMjI2LCAyMzUsIDI0LCAxLCAyMTgsIDE5OCwgMjExLCAyNTEsIDI0LCAKKyAgICAxLCAyMTgsIDE5OCwgMjA5LCAxMTcsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxNTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI5LCAKKyAgICAxNzAsIDI0LCAxLCAyMTgsIDE5OCwgMjIzLCAyMiwgMjQsIDEsIDIxOCwgMTk4LCAyMjgsIDE4OCwgMjQsIDEsIDIxOCwgCisgICAgMTk4LCAyMjQsIDMyLCAyNCwgMSwgMjE4LCAxOTgsIDIxMiwgMTkxLCAyNCwgMSwgMjE4LCAxOTgsIDIyNywgMjksIDI0LCAxLCAKKyAgICAyMTgsIDE5OCwgMjM5LCAyNDYsIDI0LCAxLCAyMTgsIDE5OCwgMjE1LCAyMTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI4LCAyMzMsIAorICAgIDI0LCAxLCAyMTgsIDE5OCwgMjExLCAyNDcsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxMDcsIDIxOCwgMTU3LCAyNCwgMSwgCisgICAgMjE4LCAxOTgsIDIxMiwgMjQ3LCAyNCwgMSwgMjE4LCAxOTgsIDIyMSwgMTAwLCAyNCwgMSwgMjE4LCAxOTgsIDIxMiwgMjMwLCAKKyAgICAyMjEsIDExMSwgMjAyLCAxOTYsIDI0LCAxLCAyMTgsIDE5OCwgMjIwLCAyMzcsIDIyNCwgNTEsIDI0LCAxLCAyMTgsIDE5OCwgCisgICAgMjE5LCAxNjQsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAyLCAyNCwgMSwgMjE4LCAxOTgsIDIwNiwgMjMxLCAyNCwgMSwgMjE4LCAKKyAgICAxOTgsIDIyMiwgMTczLCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTUwLCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgNDQsIDI0LCAKKyAgICAxLCAyMTgsIDE5OCwgMjI1LCA0OSwgMjQsIDEsIDIxOCwgMTk4LCAyMjAsIDI1MSwgMjQsIDEsIDIxOCwgMTk4LCAyMDksIAorICAgIDEyMSwgMjQsIDEsIDIxOCwgMTk4LCAyMTEsIDI0NCwgMjQsIDEsIDIxOCwgMTk4LCAyMTksIDE2NSwgMjQsIDEsIDIxOCwgCisgICAgMTk4LCAyMjEsIDExNSwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE1OCwgMjQsIDEsIDIxOCwgMTk4LCAyMjAsIDI0OCwgMjQsIAorICAgIDEsIDIxOCwgMTk4LCAyMjksIDI0MSwgMjQsIDEsIDIxOCwgMTk4LCAyMjEsIDExOCwgMjQsIDEsIDIxOCwgMTk4LCAyMDYsIAorICAgIDUwLCAyNCwgMSwgMjE4LCAxOTgsIDIyNiwgMjM5LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgMjMwLCAyNCwgMSwgMjE4LCAKKyAgICAxOTgsIDIyMywgNzUsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCA0OCwgMjQsIDEsIDIxOCwgMTk3LCAyMjEsIDExMywgMjQsIDEsIAorICAgIDIxOCwgMTk3LCAyMDcsIDIwNCwgMjI1LCAxNTUsIDI0LCAxLCAyMTgsIDE5NywgMjEyLCAxNTIsIDI0LCAxLCAyMTgsIDE5NywgCisgICAgMjEzLCAxMTgsIDIwNywgMjAzLCAyNCwgMSwgMjE4LCAxOTcsIDIyNywgMzEsIDIyMSwgOTcsIDI0LCAxLCAyMTgsIDE5NywgCisgICAgMjI1LCA1NSwgMjI1LCAxNTksIDI0LCAxLCAyMTgsIDE5NywgMjI5LCA5MiwgMjQsIDEsIDIxOCwgMTk3LCAyMDMsIDE4LCAKKyAgICAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgNTAsIDI0LCAxLCAyMTgsIDE5NywgMjMwLCA3LCAyNCwgMSwgMjE4LCAxOTcsIDIxOSwgCisgICAgMTksIDI0LCAxLCAyMTgsIDE5NywgMjAzLCA5NiwgMjI3LCAyMjMsIDI0LCAxLCAyMTgsIDE5NywgMjI4LCAyOSwgMjIxLCAKKyAgICAxMTEsIDIyMSwgNiwgMjQsIDEsIDIxOCwgMTk3LCAyMjEsIDk0LCAyMTMsIDE3LCAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgCisgICAgMjQ5LCAyMjIsIDQ3LCAyNCwgMSwgMjE4LCAxOTcsIDIzOCwgOTgsIDI0LCAxLCAyMTgsIDE5NywgMjE4LCAxMDUsIDI0LCAxLCAKKyAgICAyMTgsIDE5NywgMjA3LCAyMDQsIDIyMSwgMTA5LCAyNCwgMSwgMjE4LCAxOTcsIDIxMywgMjIsIDIyMiwgNDIsIDI0LCAxLCAKKyAgICAyMTgsIDE5NywgMjEzLCAxOCwgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDE5OCwgMjA5LCAxMjAsIDI0LCAxLCAyMTgsIDE5NywgCisgICAgMjI1LCAzNywgMjI1LCA1MSwgMjQsIDEsIDIxOCwgMTk3LCAyMjAsIDI0OSwgMjIxLCA5NywgMjQsIDEsIDIxOCwgMTk3LCAKKyAgICAyMjksIDE1OSwgMjQsIDEsIDIxOCwgMTk3LCAyMzgsIDk5LCAyNCwgMSwgMjE4LCAxOTcsIDIyOSwgMTU1LCAyNCwgMSwgCisgICAgMjE4LCAxOTcsIDIyOCwgMTA3LCAyNCwgMSwgMjE4LCAxOTcsIDIxOSwgNjUsIDI0LCAxLCAyMTgsIDE5NywgMjA1LCAyMzcsIAorICAgIDI0LCAxLCAyMTgsIDE5NywgMjIyLCAxMzcsIDIyMywgMTg0LCAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgMTcyLCAyMjUsIDMzLCAKKyAgICAyNCwgMSwgMjE4LCAxOTcsIDIwMywgMjE1LCAyNCwgMSwgMjE4LCAxOTcsIDIxNSwgMTIsIDI0LCAxLCAyMTgsIDE5NywgCisgICAgMjEwLCAxNCwgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDIxMCwgMjQsIDEsIDIxOCwgMTk3LCAyMjIsIDE1NiwgMjQsIDEsIAorICAgIDIxOCwgMTk3LCAyMjIsIDE1NywgMjI4LCA3LCAyNCwgMSwgMjE4LCAxOTcsIDIyNCwgMjAwLCAyNCwgMSwgMjE4LCAxOTcsIAorICAgIDIxMCwgMjMwLCAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgNDEsIDI0LCAxLCAyMTgsIDE5NywgMjI0LCAzNiwgMjQsIDEsIDIxOCwgCisgICAgMTk3LCAyMjEsIDksIDI0LCAxLCAyMTgsIDE5NywgMjE3LCAxNzYsIDI0LCAxLCAyMTgsIDE5NywgMjI0LCAyMDksIDIyMiwgCisgICAgMTc0LCAyNCwgMSwgMjE4LCAxOTcsIDI0MCwgMzEsIDI0LCAxLCAyMTgsIDE5NywgMjI1LCAyOCwgMjQsIDEsIDIxOCwgMTk3LCAKKyAgICAyNDAsIDUzLCAyNCwgMSwgMjE4LCAxOTcsIDIyOSwgMTY3LCAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgMTc3LCAyMjIsIDM2LCAKKyAgICAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgMTc3LCAyMjIsIDEyLCAyNCwgMSwgMjE4LCAxOTcsIDIyNywgMTc1LCAyNCwgMSwgCisgICAgMjE4LCAxOTcsIDIyMiwgMTgwLCAyNCwgMSwgMjE4LCAxOTcsIDIyMSwgMTIwLCAyNCwgMSwgMjE4LCAxOTcsIDE5MiwgMjQsIAorICAgIDEsIDIxOCwgMTk3LCAyMjksIDc3LCAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgMTI1LCAyNCwgMSwgMTY4LCAyMjIsIDEzNiwgCisgICAgMjI1LCAxNTcsIDI0LCAxLCAxNjgsIDIyMCwgMjE0LCAyNCwgMSwgMTY4LCAyMDIsIDE5NiwgMjQsIDEsIDE2OCwgMjA0LCAKKyAgICA5NSwgMjQsIDEsIDE2OCwgMjIyLCAxNzMsIDI0LCAxLCAxNjgsIDIyMywgMTQsIDI0LCAxLCAxNjgsIDIyMiwgMTQzLCAyNCwgCisgICAgMSwgMTY4LCAyMzgsIDEwOCwgMjQsIDEsIDE2OCwgMjI1LCA0NSwgMjQsIDEsIDE2OCwgMjM4LCAyMDUsIDI0LCAxLCAxNjgsIAorICAgIDIyMCwgMjM5LCAyMjQsIDkxLCAyMjQsIDIxMiwgMjQsIDEsIDE2OCwgMjIxLCA4OSwgMjI1LCAzNiwgMjQsIDEsIDE2OCwgCisgICAgMjI1LCA0MiwgMjQsIDEsIDE2OCwgMjE4LCAxMTEsIDI0LCAxLCAxNjgsIDIyMiwgMjU1LCAyNCwgMSwgMTY4LCAyMjUsIDUzLCAKKyAgICAyNDcsIDg4LCAyNCwgMSwgMTY4LCAyMjksIDE1NywgMjQsIDEsIDE2OCwgMjM4LCAxMDksIDI0LCAxLCAxNjgsIDIyOSwgCisgICAgMTY0LCAyNCwgMSwgMTY4LCAyMDIsIDIxNCwgMjIzLCAyMTUsIDI0LCAxLCAxNjgsIDIyMCwgMjA4LCAyNCwgMSwgMTY4LCAKKyAgICAyMjUsIDMwLCAyNCwgMSwgMTY4LCAyMjEsIDExOSwgMjQsIDEsIDE2OCwgMjI1LCAzNiwgMjQsIDEsIDE2OCwgMjAzLCAxOSwgCisgICAgMjQsIDEsIDE2OCwgMjI4LCAyNDEsIDI0LCAxLCAxNjgsIDIzMCwgNDEsIDI0LCAxLCAxNjgsIDIxMywgMTEzLCAyNCwgMSwgCisgICAgMTY4LCAyMjMsIDgsIDI0LCAxLCAxNjgsIDIxMCwgMTIsIDI0LCAxLCAxNjgsIDIyMiwgMTYsIDI0LCAxLCAxNjgsIDIwOCwgCisgICAgMTk5LCAyMDIsIDE5OSwgMjQsIDEsIDE2OCwgMjExLCA1LCAyNCwgMSwgMTY4LCAyMjIsIDE2MywgMjIxLCA2LCAyNCwgMSwgCisgICAgMTY4LCAyMDUsIDIzNiwgMjQsIDEsIDE2OCwgMjIzLCA3OCwgMjQsIDEsIDE2OCwgMjI1LCAxNzcsIDIyOSwgMTY2LCAyNCwgCisgICAgMSwgMTY4LCAyMjEsIDEwMiwgMjQsIDEsIDE2OCwgMjIyLCAxNTgsIDI0LCAxLCAxNjgsIDIyOCwgMTEsIDI0LCAxLCAxNjgsIAorICAgIDIyNSwgMzgsIDI0LCAxLCAxNjgsIDIyNCwgMTg5LCAyNCwgMSwgMTY4LCAyMjEsIDk2LCAyNCwgMSwgMTY4LCAyMDksIDExNiwgCisgICAgMjQsIDEsIDE2OCwgMjIyLCAxNjAsIDI0LCAxLCAxNjgsIDIzOSwgMTA2LCAyNCwgMSwgMTY4LCAyMjMsIDEzLCAyNCwgMSwgCisgICAgMTY4LCAyMjEsIDEyMSwgMjQsIDEsIDE2OCwgMjIxLCAxMTcsIDI0LCAxLCAxNjgsIDI0NywgMTY5LCAyNCwgMSwgMTY4LCAKKyAgICAyMDUsIDIzOCwgMjQsIDEsIDE2OCwgMjI1LCA0MywgMjQsIDEsIDE2OCwgMjE1LCAxNDUsIDI0LCAxLCAxNjgsIDIyMiwgNDYsIAorICAgIDI0LCAxLCAxNjgsIDIyOCwgMjgsIDI0LCAxLCAxNjgsIDIwOCwgMTk2LCAyNCwgMSwgMTY4LCAyMjEsIDEwMywgMjIyLCAKKyAgICAxMjUsIDI0LCAxLCAxNjgsIDIyMiwgMzgsIDI0LCAxLCAxNjgsIDIyOSwgMTcwLCAyNCwgMSwgMTY4LCAyMjIsIDE2NSwgMjQsIAorICAgIDEsIDE2OCwgMjI1LCAxNTAsIDI0LCAxLCAxNjgsIDIyNSwgMzEsIDI0LCAxLCAxNjgsIDIyNiwgMjM5LCAyNCwgMSwgMTY4LCAKKyAgICAyMjgsIDE3NSwgMjQsIDEsIDE2OCwgMjIyLCA0NCwgMjQsIDEsIDE2OCwgMjIyLCAxMjUsIDI0LCAxLCAxNjgsIDIwMywgCisgICAgMjA1LCAyNCwgMSwgMTY4LCAyMjIsIDE2MSwgMjQsIDEsIDE2OCwgMjIxLCAxMDYsIDI0LCAxLCAxNjgsIDIyMSwgOTgsIDI0LCAKKyAgICAxLCAxNjgsIDIyOCwgMTkwLCAyMjIsIDIsIDI0LCAxLCAxNjgsIDIyMSwgMTA0LCAyNCwgMSwgMTY4LCAyMjMsIDIxLCAyNCwgCisgICAgMSwgMTY4LCAyMjUsIDE3NywgMjIxLCAxMDksIDI0LCAxLCAxNjgsIDIwMywgMTEwLCAyNCwgMSwgMTY4LCAyMjMsIDIwLCAKKyAgICAyNCwgMSwgMTY4LCAyMTIsIDE5NCwgMjQsIDEsIDE2OCwgMjEzLCAxMTYsIDI0LCAxLCAxNjgsIDIyNSwgMzksIDI0LCAxLCAKKyAgICAxNjgsIDIyNSwgMTU3LCAyNCwgMSwgMTY4LCAyMjUsIDQ5LCAyNCwgMSwgMTY4LCAyMjksIDE1OCwgMjQsIDEsIDE2OCwgCisgICAgMjI1LCA0MCwgMjQsIDEsIDE2OCwgMjI5LCAxNjIsIDI0LCAxLCAxNjgsIDIyNSwgNTMsIDIxOCwgMTYyLCAyNCwgMSwgMTY4LCAKKyAgICAyMDIsIDE3OSwgMjQsIDEsIDE2OCwgMjIyLCAzNCwgMjQsIDEsIDE2OCwgMjI0LCAxNDQsIDI0LCAxLCAxNjgsIDIyMywgCisgICAgMjQ0LCAyNCwgMSwgMTY4LCAyMTIsIDI1MCwgMjQsIDEsIDE2OCwgMjI5LCAxODEsIDIyNywgMjQ2LCAyNCwgMSwgMTY4LCAKKyAgICAyMjksIDE4MSwgMjQwLCA2NiwgMjQsIDEsIDE2OCwgMjIyLCAxOTUsIDI0LCAxLCAxNjgsIDIyMywgNzUsIDI0LCAxLCAxNjgsIAorICAgIDIyNywgOTYsIDI0LCAxLCAxNjgsIDIxOCwgMTIzLCAyNCwgMSwgMTY4LCAyMTksIDksIDI0LCAxLCAxNjgsIDIwOSwgMTMyLCAKKyAgICAyNCwgMSwgMTM0LCAyMjUsIDI5LCAyNCwgMSwgMTM0LCAyMDQsIDkzLCAyNCwgMSwgMTM0LCAyMjIsIDMyLCAyNCwgMSwgCisgICAgMTM0LCAyMjQsIDE5NywgMjQsIDEsIDEzNCwgMjIyLCAzMCwgMjQsIDEsIDEzNCwgMjI3LCAxNDEsIDI0LCAxLCAxMzQsIAorICAgIDIyMiwgMzUsIDI0LCAxLCAxMzQsIDIyMSwgMTE2LCAyNCwgMSwgMTM0LCAyMjIsIDE3OSwgMjQsIDEsIDEzNCwgMjIxLCA2LCAKKyAgICAyNCwgMSwgMTM0LCAyMDMsIDIxNiwgMjQsIDEsIDEzNCwgMjIyLCAxMzMsIDI0LCAxLCAxMzQsIDIxMywgNDEsIDI0LCAxLCAKKyAgICAxMzQsIDIyMiwgMTQ0LCAyNCwgMSwgMTM0LCAyMjksIDE2NSwgMjQsIDEsIDEzNCwgMjA5LCAxMTgsIDI0LCAxLCAxMzQsIAorICAgIDIxMywgMjAsIDI0LCAxLCAxMzQsIDIyMiwgNDMsIDI0LCAxLCAxMzQsIDIxMCwgMjMwLCAyNCwgMSwgMTM0LCAyMjksIDE3MCwgCisgICAgMjQsIDEsIDEzNCwgMjAzLCA5OCwgMjQsIDEsIDEzNCwgMjI4LCAxOTEsIDI0LCAxLCAxMzQsIDIxNCwgMjMzLCAyNCwgMSwgCisgICAgMTM0LCAyMjQsIDIwMiwgMjQsIDEsIDEzNCwgMjIzLCAxMiwgMjQsIDEsIDEzNCwgMjI1LCAxMjUsIDI0LCAxLCAxMzQsIAorICAgIDIyNCwgMjA4LCAyNCwgMSwgMTM0LCAyMTMsIDExNSwgMjQsIDEsIDEzNCwgMjAzLCA0MiwgMjQsIDEsIDEzNCwgMjIyLCAzNywgCisgICAgMjQsIDEsIDEzNCwgMjI5LCAxNjEsIDIyNSwgMzIsIDI0LCAxLCAxMzQsIDIyMiwgMTQwLCAyNCwgMSwgMTM0LCAyMDcsIAorICAgIDIwMywgMjQsIDEsIDEzNCwgMjM4LCAxMTgsIDI0LCAxLCAxMzQsIDIyMiwgMTMwLCAyNCwgMSwgMTM0LCAyNDAsIDMyLCAyNCwgCisgICAgMSwgMTM0LCAyMjMsIDE2LCAyNCwgMSwgMTM0LCAyMjQsIDE4MSwgMjQsIDEsIDEzNCwgMjI3LCAxNjksIDI0LCAxLCAxMzQsIAorICAgIDIyMiwgMjU0LCAyNCwgMSwgMTM0LCAyMjQsIDUwLCAyNCwgMSwgMTM0LCAyMjQsIDE4NSwgMjQsIDEsIDEzNCwgMjE3LCAKKyAgICAxNTYsIDI0LCAxLCAxMzQsIDIyNCwgMTgzLCAyNCwgMSwgMTM0LCAyMjQsIDE5OSwgMjQsIDEsIDEzNCwgMjI2LCAyMjIsIAorICAgIDI0LCAxLCAxMzQsIDIyMSwgMTA4LCAyNCwgMSwgMTM0LCAyMjUsIDUyLCAyNCwgMSwgMTM0LCAyMjgsIDE2NSwgMjQsIDEsIAorICAgIDEzNCwgMjIwLCAyNTEsIDI0LCAxLCAxMzQsIDIwOSwgMTIxLCAyNCwgMSwgMTM0LCAyMTEsIDI0NCwgMjQsIDEsIDEzNCwgCisgICAgMjAyLCAxNzksIDI0LCAxLCAxMzQsIDIyOSwgMTYyLCAyNCwgMSwgMTM0LCAyMTYsIDIwMSwgMjQsIDEsIDEzNCwgMjA5LCAKKyAgICAxNzUsIDI0LCAxLCAxMzQsIDIyMiwgMTQxLCAyNCwgMSwgMTM0LCAyMjQsIDIwNCwgMjQsIDEsIDEzNCwgMjIxLCAxMDcsIAorICAgIDI0LCAxLCAxMzQsIDIyOSwgMTYwLCAyNCwgMSwgMTM0LCAyMTgsIDExNywgMjQsIDEsIDEzNCwgMjE4LCAyMTMsIDI0LCAxLCAKKyAgICAxMzQsIDIyMCwgMjI1LCAyNCwgMSwgMTM0LCAyMjcsIDE3NSwgMjQsIDEsIDEzNCwgMjIyLCAxODAsIDI0LCAxLCAxMzQsIAorICAgIDIyNCwgMjAxLCAyNCwgMSwgMTM0LCAyMjIsIDE1MywgMjQsIDEsIDEzNCwgMjAyLCAxOTMsIDI0LCAxLCAxMzQsIDIxOSwgCisgICAgOTYsIDI0LCAxLCAxMzQsIDIwMiwgMTkyLCAyNCwgMSwgMTM0LCAyMjMsIDIxLCAyNCwgMSwgMTM0LCAyMjEsIDk3LCAyNCwgCisgICAgMSwgMTM0LCAyMTEsIDcsIDI0LCAxLCAxMzQsIDIyOCwgMTk1LCAyNCwgMSwgMTM0LCAyMjIsIDE2OSwgMjQsIDEsIDEzNCwgCisgICAgMjIyLCAxMzgsIDI0LCAxLCAxMzQsIDIwNywgMTg1LCAyNCwgMSwgMTM0LCAyMjQsIDIxMiwgMjQsIDEsIDEzNCwgMjI4LCAKKyAgICAxODUsIDI0LCAxLCAxMzQsIDIyMSwgMTA1LCAyNCwgMSwgMTM0LCAyMDksIDExOSwgMjQsIDEsIDEzNCwgMjI1LCAxNTIsIAorICAgIDI0LCAxLCAxMzQsIDIyMiwgMTc4LCAyNCwgMSwgMTM0LCAyMjcsIDE2OCwgMjQsIDEsIDEzNCwgMjIyLCAxNTksIDI0LCAxLCAKKyAgICAxMzQsIDIyMSwgMTEwLCAyNCwgMSwgMTM0LCAyMjIsIDE2LCAyNCwgMSwgMTM0LCAyMzgsIDEwMiwgMjQsIDEsIDEzNCwgCisgICAgMjI4LCAyMDksIDI0LCAxLCAxMzQsIDIxNiwgMTA4LCAyMjAsIDQ1LCAyNCwgMSwgMTM0LCAyMTAsIDEsIDI0LCAxLCAxMzQsIAorICAgIDIwOCwgMTQxLCAyNCwgMSwgMTM0LCAyMjAsIDI0OCwgMjQsIDEsIDEzNCwgMjE2LCAzLCAyNCwgMSwgMTM0LCAyMjcsIDIyNSwgCisgICAgMjQsIDEsIDEzNCwgMjI1LCA3LCAyNCwgMSwgMTM0LCAyMjYsIDE4NSwgMjQsIDEsIDEzNCwgMjEwLCAxNzksIDI0LCAxLCAKKyAgICAxMzQsIDIyMywgMjQ2LCAyNCwgMSwgMTM0LCAyMTMsIDYsIDI0LCAxLCAxMzQsIDIxMywgMTYsIDI0LCAxLCAxMzQsIDIyOCwgCisgICAgMTM3LCAyNCwgMSwgMTM0LCAyMjEsIDg0LCAyNCwgMSwgMTM0LCAyMTIsIDE5OSwgMjQsIDEsIDEzNCwgMjIxLCA5OSwgMjQsIAorICAgIDEsIDEzNCwgMjE5LCAyMywgMjQsIDEsIDEzNCwgMjIyLCAxMDAsIDI0LCAxLCAxMzQsIDIxMiwgMjI5LCAyNCwgMSwgMTM0LCAKKyAgICAyMTcsIDE3MSwgMjQsIDEsIDEzNCwgMjIzLCAxODQsIDI0LCAxLCAxMzQsIDIyNywgMTAsIDI0LCAxLCAxMzQsIDIxNiwgCisgICAgMTA4LCAyMjMsIDIzOSwgMjQsIDEsIDEzNCwgMjA5LCAyLCAyNCwgMSwgMTM0LCAyMjEsIDg2LCAyNCwgMSwgMTM0LCAyMjUsIAorICAgIDUzLCAyMTMsIDExMSwgMjQsIDEsIDEzNCwgMjE0LCAyMzEsIDI0LCAxLCAxMzQsIDI0MCwgMTA3LCAyNCwgMSwgOTMsIDIyMywgCisgICAgMjAsIDI0LCAxLCA5MywgMjA4LCAxNDcsIDI0LCAxLCA5MywgMjI1LCA0MiwgMjQsIDEsIDkzLCAyMjgsIDExLCAyNCwgMSwgCisgICAgOTMsIDIwNSwgMTc3LCAyNCwgMSwgOTMsIDIyNywgMTYsIDI0LCAxLCA5MywgMjE5LCAxNjgsIDI0LCAxLCA5MywgMjExLCAKKyAgICAyNTUsIDI0LCAxLCA5MywgMjE2LCAxNzYsIDI0LCAxLCA5MywgMjIxLCAxMTIsIDI0LCAxLCA5MywgMjIyLCAyNDcsIDI0LCAKKyAgICAxLCA5MywgMjE3LCAxODgsIDI0LCAxLCA5MywgMjA5LCAyMzIsIDI0LCAxLCA5MywgMjIyLCAxNDYsIDI0LCAxLCA5MywgCisgICAgMjI4LCAyMzcsIDI0LCAxLCA5MywgMjAzLCAyMDgsIDI0LCAxLCA5MywgMjE0LCAxNjUsIDI0LCAxLCA5MywgMjIyLCAxNzAsIAorICAgIDI0LCAxLCA5MywgMjE5LCAxNjUsIDI0LCAxLCA5MywgMjA4LCAxNDgsIDI0LCAxLCA5MywgMjI4LCAxODksIDI0LCAxLCA5MywgCisgICAgMjI3LCAzMCwgMjQsIDEsIDkzLCAyMjEsIDExNSwgMjQsIDEsIDkzLCAyMjIsIDEyMiwgMjQsIDEsIDkzLCAyMjUsIDE1OCwgCisgICAgMjQsIDEsIDkzLCAyMjIsIDEzOSwgMjQsIDEsIDkzLCAyMjIsIDEyMSwgMjQsIDEsIDkzLCAyMjEsIDExNCwgMjQsIDEsIDkzLCAKKyAgICAyMTYsIDAsIDI0LCAxLCA5MywgMjIyLCAzNCwgMjQsIDEsIDkzLCAyMTksIDIxLCAyNCwgMSwgOTMsIDIxNSwgMzMsIDI0LCAKKyAgICAxLCA5MywgMjIyLCAxNTQsIDI0LCAxLCA5MywgMjI0LCAxOTEsIDI0LCAxLCA5MywgMjM4LCA5NiwgMjQsIDEsIDkzLCAyMjIsIAorICAgIDE0MiwgMjQsIDEsIDkzLCAyMjIsIDQ1LCAyNCwgMSwgOTMsIDIyNSwgMTA2LCAyNCwgMSwgOTMsIDIyNywgMTIsIDI0LCAxLCAKKyAgICA5MywgMjIyLCAxNzUsIDI0LCAxLCA5MywgMjIzLCA0LCAyNCwgMSwgOTMsIDIxMCwgMCwgMjIxLCA5NywgMjQsIDEsIDkzLCAKKyAgICAyMTMsIDExNywgMjQsIDEsIDkzLCAyMTcsIDE4MSwgMjQsIDEsIDkzLCAyMjMsIDI0LCAyMTIsIDYsIDI0LCAxLCA5MywgCisgICAgMjIyLCAxNjIsIDIyMSwgNiwgMjQsIDEsIDkzLCAyMDMsIDcsIDI0LCAxLCA5MywgMjM4LCA5NywgMjQsIDEsIDkzLCAyMDcsIAorICAgIDIwMiwgMjQsIDEsIDkzLCAyMDMsIDIyLCAyNCwgMSwgOTMsIDIxOCwgNjksIDI0LCAxLCA5MywgMjA3LCAxOTAsIDI0LCAxLCAKKyAgICA5MywgMjI5LCAxNjgsIDI0LCAxLCA5MywgMjExLCA2LCAyNCwgMSwgOTMsIDIwOSwgMTIwLCAyNCwgMSwgOTMsIDIwNSwgCisgICAgMjM5LCAyNCwgMSwgOTMsIDIwNCwgNDMsIDI0LCAxLCA5MywgMjI4LCAxMTAsIDI0LCAxLCA5MywgMjE3LCAxOTEsIDI0LCAxLCAKKyAgICA5MywgMjEwLCAxMywgMjQsIDEsIDkzLCAyMzgsIDExNywgMjQsIDEsIDkzLCAyMjIsIDE4NSwgMjQsIDEsIDkzLCAyMTMsIAorICAgIDE5LCAyNCwgMSwgOTMsIDIyNCwgMTg2LCAyNCwgMSwgOTMsIDIyNSwgNDYsIDI0LCAxLCA5MywgMjIwLCAyMTIsIDI0LCAxLCAKKyAgICA5MywgMjIxLCAyNTQsIDI0LCAxLCA5MywgMjM4LCAyMDEsIDI0LCAxLCA5MywgMjA3LCAxOTEsIDI0LCAxLCA5MywgMjI4LCAKKyAgICAxOTksIDI0LCAxLCA5MywgMjAzLCA3NCwgMjQsIDEsIDkzLCAyMjAsIDI0OSwgMjQ2LCAzMiwgMjQsIDEsIDkzLCAyMDIsIAorICAgIDI1MywgMjQsIDEsIDkzLCAyMjQsIDIwMywgMjQsIDEsIDkzLCAyMjMsIDksIDI0LCAxLCA5MywgMjE4LCAxNTgsIDI0LCAxLCAKKyAgICA5MywgMjAyLCAxOTgsIDI0LCAxLCA5MywgMjI3LCAxNzAsIDI0LCAxLCA5MywgMjM5LCAxMDYsIDI0LCAxLCA5MywgMjM4LCAKKyAgICAyMDAsIDI0LCAxLCA5MywgMjIyLCAxMzIsIDI0LCAxLCA5MywgMjI5LCAxNzAsIDI0LCAxLCA5MywgMjI1LCAxNjEsIDI0LCAKKyAgICAxLCA5MywgMjIyLCAxNDUsIDI0LCAxLCA5MywgMjM4LCAxMDMsIDI0LCAxLCA5MywgMjQwLCAxMDgsIDI0LCAxLCA5MywgCisgICAgMjIxLCA4NywgMjQsIDEsIDkzLCAyMTgsIDIxNCwgMjQsIDEsIDkzLCAyMDMsIDIwLCAyNCwgMSwgOTMsIDIyMiwgMTcxLCAKKyAgICAyNCwgMSwgOTMsIDIyMCwgMjQ5LCAyNDgsIDEwMywgMjQsIDEsIDkzLCAyMjAsIDE5MiwgMjQsIDEsIDkzLCAyMTgsIDQzLCAKKyAgICAyNCwgMSwgOTMsIDIyNCwgMTQ0LCAyNCwgMSwgOTMsIDIzOSwgMTA0LCAyNCwgMSwgOTMsIDIyMywgMTAwLCAyNCwgMSwgOTMsIAorICAgIDIyMywgMjQ0LCAyNCwgMSwgOTMsIDIzOCwgMTAyLCAyNCwgMSwgOTMsIDIzOSwgMTA5LCA3NSwgMjQsIDEsIDkzLCAyMjMsIAorICAgIDE4NSwgMjQsIDEsIDkzLCAyMTcsIDE4NywgMjQsIDEsIDkzLCAyMjIsIDEzNCwgMjQsIDEsIDkzLCAyMjgsIDE3NSwgMjQsIAorICAgIDEsIDkzLCAyMTgsIDE1NSwgMjQsIDEsIDkzLCAyMjEsIDEwMCwgMjQsIDEsIDkzLCAyMDMsIDIxLCAyNCwgMSwgOTMsIDIyMiwgCisgICAgMTU1LCAyNCwgMSwgOTMsIDIxOSwgMTY5LCAyMTgsIDI1MiwgMjQsIDEsIDkzLCAyMzksIDEwOSwgMjQ3LCA3MSwgMjQsIDEsIAorICAgIDkzLCAyMzksIDE3OSwgMjQsIDEsIDkzLCAyMjIsIDM5LCAyNCwgMSwgOTMsIDYzLCAyNCwgMSwgOTMsIDIwOCwgMTQxLCAyNCwgCisgICAgMSwgOTMsIDc4LCAyNCwgMSwgOTMsIDc1LCAyNCwgMSwgOTMsIDIyOCwgOSwgMjQsIDEsIDkzLCAyMTksIDE2OSwgMjE4LCAKKyAgICA3NywgMjQsIDEsIDkzLCAyMTAsIDE4LCAyNCwgMSwgOTMsIDIwOSwgMjE5LCAyNCwgMSwgOTMsIDIyMywgMjQsIDIyMywgCisgICAgMTcyLCAyMzYsIDM4LCAyNCwgMSwgOTMsIDIxMiwgMjUwLCAyNCwgMSwgOTMsIDIwMywgMTcsIDI0LCAxLCA5MywgMjIyLCAKKyAgICAxMTUsIDI0LCAxLCA5MywgMjAyLCAyMDMsIDI0LCAxLCA5MywgMjAyLCAyMzAsIDIxMCwgMTU5LCAyNCwgMSwgOTMsIDIwMiwgCisgICAgMjMwLCAyNDUsIDE1MSwgMjQsIDEsIDkzLCAyMDIsIDE4NywgMjQsIDEsIDkzLCAyMDIsIDE5NSwgMjQsIDEsIDkzLCAyMjksIAorICAgIDE1NiwgMjQsIDEsIDkzLCAyMTgsIDIxMiwgMjQsIDEsIDkzLCAyMjIsIDQwLCAyNDEsIDM5LCAyNCwgMSwgOTMsIDIxNywgCisgICAgMTgzLCAyNCwgMSwgOTMsIDIwMywgMjE0LCAyNCwgMSwgOTMsIDI0MCwgNTMsIDI0LCAxLCA5MywgMjA2LCA1MCwgMjQsIDEsIAorICAgIDkzLCAyMjYsIDIzOSwgMjQsIDEsIDkzLCAyMjQsIDE1NSwgMjQsIDEsIDkzLCAyMTYsIDc1LCAyNCwgMSwgOTMsIDIxNiwgCisgICAgMjAyLCAyNCwgMSwgOTMsIDIyMiwgMTE0LCAyNCwgMSwgOTMsIDIyMiwgMjAzLCAyNCwgMSwgOTMsIDIxMiwgMjQyLCAyNCwgCisgICAgMSwgOTMsIDIxMiwgMjI5LCAyNCwgMSwgOTMsIDIzOSwgMTA5LCAyMTYsIDExMSwgMjQsIDEsIDkzLCAyMDEsIDIwMSwgMjQsIAorICAgIDEsIDkzLCAyMTgsIDE2NywgMjQsIDEsIDkzLCAyMjcsIDEwLCAyNCwgMSwgOTMsIDIyOSwgMjYsIDI0LCAxLCA5MywgMjI0LCAKKyAgICAyNDAsIDI0LCAxLCA5MywgMTkyLCAyNCwgMSwgOTMsIDIyNSwgMTAzLCAyNCwgMSwgOTMsIDIwOSwgMTIyLCAyNCwgMSwgOTMsIAorICAgIDIyOSwgMTAwLCAyNCwgMSwgOTMsIDIyNCwgNTQsIDI0LCAxLCA5MywgMjA5LCAxNTIsIDI0LCAxLCA5MywgMjQwLCA3NywgCisgICAgMjQsIDEsIDkzLCAyMzgsIDkwLCAyNCwgMSwgMjE4LCAxOTYsIDE3MywgMjQsIDEsIDIxOCwgMTk2LCA2OCwgMjQsIDEsIAorICAgIDIxOCwgMTk2LCAyMjgsIDIwOSwgMjQsIDEsIDIxOCwgMTk2LCAyNDEsIDE2MSwgMjQsIDEsIDIxOCwgMTk2LCAyMTYsIDEzNSwgCisgICAgMjQsIDEsIDIxOCwgMTk2LCAyMTAsIDEsIDI0LCAxLCAyMTgsIDE5NiwgMjIwLCAyNDgsIDI0LCAxLCAyMTgsIDE5NiwgMjI4LCAKKyAgICAxMTMsIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCAzLCAyNCwgMSwgMjE4LCAxOTYsIDIxNiwgNTAsIDI0LCAxLCAyMTgsIDE5NiwgCisgICAgMjI1LCA3LCAyNCwgMSwgMjE4LCAxOTYsIDIxMCwgMTgsIDI0LCAxLCAyMTgsIDE5NiwgMjIzLCAyMywgMjQsIDEsIDIxOCwgCisgICAgMTk2LCAyMjIsIDQ2LCAyNCwgMSwgMjE4LCAxOTYsIDIyNiwgMTg1LCAyNCwgMSwgMjE4LCAxOTYsIDIxMCwgMTc5LCAyNCwgCisgICAgMSwgMjE4LCAxOTYsIDIxMywgNiwgMjQsIDEsIDIxOCwgMTk2LCAyMTIsIDE2MiwgMjQsIDEsIDIxOCwgMTk2LCAyMTMsIAorICAgIDExMywgMjQsIDEsIDIxOCwgMTk2LCAyMjgsIDEzNywgMjQsIDEsIDIxOCwgMTk2LCAyMjksIDE3MCwgMjQsIDEsIDIxOCwgCisgICAgMTk2LCAyMjEsIDU1LCAyNCwgMSwgMjE4LCAxOTYsIDIyMSwgODQsIDI0LCAxLCAyMTgsIDE5NiwgMjIyLCAxNywgMjQsIDEsIAorICAgIDIxOCwgMTk2LCAyMDIsIDIyOSwgMjQsIDEsIDIxOCwgMTk2LCAyMTIsIDE5OSwgMjQsIDEsIDIxOCwgMTk2LCAxOTgsIDI0LCAKKyAgICAxLCAyMTgsIDE5NiwgMjIxLCAxMTgsIDI0LCAxLCAyMTgsIDE5NiwgMjE4LCAyMTIsIDI0LCAxLCAyMTgsIDE5NiwgMjIxLCAKKyAgICA5OSwgMjQsIDEsIDIxOCwgMTk2LCAyMDMsIDIxNCwgMjQsIDEsIDIxOCwgMTk2LCAyMTksIDIzLCAyNCwgMSwgMjE4LCAxOTYsIAorICAgIDIxNSwgMTQ1LCAyNCwgMSwgMjE4LCAxOTYsIDIyMiwgMTAwLCAyNCwgMSwgMjE4LCAxOTYsIDIxNiwgNzUsIDI0LCAxLCAKKyAgICAyMTgsIDE5NiwgMjI5LCAxODAsIDI0LCAxLCAyMTgsIDE5NiwgMjIyLCAxMzEsIDI0LCAxLCAyMTgsIDE5NiwgMjIyLCAxODIsIAorICAgIDI0LCAxLCAyMTgsIDE5NiwgMjEyLCAyNDIsIDI0LCAxLCAyMTgsIDE5NiwgMjE3LCAxODgsIDI0LCAxLCAyMTgsIDE5NiwgCisgICAgMjM5LCAxNzksIDI0LCAxLCAyMTgsIDE5NiwgMjA0LCAxMTEsIDI0LCAxLCAyMTgsIDE5NiwgMjI3LCAxNDgsIDI0LCAxLCAKKyAgICAyMTgsIDE5NiwgMjI3LCAxMCwgMjQsIDEsIDIxOCwgMTk2LCAyMjksIDI2LCAyNCwgMSwgMjE4LCAxOTYsIDIyNSwgNDQsIAorICAgIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCAxMDcsIDI0LCAxLCAyMTgsIDE5NiwgMTkyLCAyNCwgMSwgMjE4LCAxOTYsIDIyNCwgCisgICAgODIsIDI0LCAxLCAyMTgsIDE5NiwgMjI1LCA1MiwgMjQsIDEsIDIxOCwgMTk2LCAyMDksIDEzMiwgMjQsIDEsIDIxOCwgMTk2LCAKKyAgICAyMjgsIDI0NCwgMjQsIDEsIDIxOCwgMTk2LCAyMTQsIDI1MSwgMjQsIDEsIDIxOCwgMTk2LCAyMDQsIDE2MiwgMjIzLCAyNDksIAorICAgIDEsIDIxMCwgMjIsIDIyMywgMjQ5LCAxLCAyMjIsIDE1MSwgMjIzLCAyNDksIDEsIDIwMiwgMjQ3LCAyMjMsIDI0OSwgMSwgCisgICAgMjI0LCAxMTIsIDIyMywgMjQ5LCAxLCAyNDksIDMyLCAyMjMsIDI0OSwgMSwgMjQ0LCAyMTIsIDIyMywgMjQ5LCAxLCA2MywgCisgICAgMjIzLCAyNDksIDEsIDIxOCwgMTkyLCAyMjMsIDI0OSwgMSwgMjI5LCAxMzksIDIyMywgMjQ5LCAxLCAyMzcsIDk1LCAyMjMsIAorICAgIDI0OSwgMSwgMjQ0LCAxODgsIDIyMywgMjQ5LCAxLCAyNDYsIDk4LCAyMjMsIDI0OSwgMSwgMjI5LCAyMDAsIDIyMywgMjQ5LCAKKyAgICAxLCAyMjAsIDQ2LCAyMjMsIDI0OSwgMSwgMjI1LCAxNTgsIDIyMywgMjQ5LCAxLCAyMjIsIDY4LCAyMjMsIDI0OSwgMSwgCisgICAgMTg1LCAyMjMsIDI0OSwgMSwgMjIwLCAxOCwgMjIzLCAyNDksIDEsIDc4LCAyMjMsIDI0OSwgMSwgMjE1LCAyMjcsIDIyMywgCisgICAgMjQ5LCAxLCAyMTMsIDExLCAyMjMsIDI0OSwgMSwgMjA5LCA5MSwgMjIzLCAyNDksIDEsIDI0MSwgMTg5LCAyMjMsIDI0OSwgCisgICAgMSwgMjA0LCAxMTEsIDIyMywgMjQ5LCAxLCA3NCwgMjIzLCAyNDksIDEsIDIyOSwgMjYsIDIyMywgMjQ5LCAxLCAyMjgsIDE3LCAKKyAgICAyMjMsIDI0OSwgMSwgMjI4LCAxMTMsIDIyMywgMjQ5LCAxLCAyMzcsIDE0NywgMjIzLCAyNDksIDEsIDIxNiwgNTcsIDIyMywgCisgICAgMjQ5LCAxLCAyMDksIDE2NSwgMjIzLCAyNDksIDE3LCAyMDIsIDg0LCAyMjMsIDI0OSwgMTcsIDEwNSwgMjIzLCAyNDksIDE3LCAKKyAgICAxMDgsIDIyMywgMjQ5LCAxNywgMTQ3LCAyMjMsIDI0OSwgMTcsIDE0OSwgMjIzLCAyNDksIDE3LCAxNzAsIDIyMywgMjQ5LCAKKyAgICAxNywgMTk1LCAyMjMsIDI0OSwgMTcsIDIxMywgMTExLCAyMjMsIDI0OSwgMTcsIDE5OSwgMjIzLCAyNDksIDE3LCAyMjIsIAorICAgIDYzLCAyMjMsIDI0OSwgMjQ0LCAxNjYsIDIyMywgMjQ5LCA1MiwgMjQ0LCAxNjYsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAKKyAgICAyNDEsIDc0LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMTczLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjE0LCAxNzcsIDI0OCwgCisgICAgMjEyLCAyMDYsIDgzLCAxLCAyNDAsIDEwOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIyNSwgNDcsIDI0OCwgMjEyLCAyMDYsIAorICAgIDgzLCAxLCAyMDMsIDgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMzgsIDI0OSwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDI0MywgCisgICAgMjM4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjI4LCAyNDMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMzAsIDEwMSwgMjQ4LCAKKyAgICAyMTIsIDIwNiwgODMsIDEsIDIzNSwgMjUzLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjA0LCAxMTEsIDI0OCwgMjEyLCAyMDYsIAorICAgIDgzLCAxLCAyMDIsIDE3LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjM4LCAxOTQsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAKKyAgICAyNDMsIDExMywgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDI0NiwgMjM4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjA2LCAxNzEsIAorICAgIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAxMzUsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyNDksIDMyLCAyNDgsIDIxMiwgMjA2LCAKKyAgICA4MywgMSwgMjA0LCAxNjMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMDMsIDQ2LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgCisgICAgMTg1LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjA0LCAxMDgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCA2MywgMjQ4LCAyMTIsIAorICAgIDIwNiwgODMsIDEsIDc4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjIwLCAxOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDY4LCAKKyAgICAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjQxLCAxNjEsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCA3NCwgMjQ4LCAyMTIsIDIwNiwgCisgICAgODMsIDEsIDc1LCAyNDgsIDIxMiwgMjA2LCA4MywgMzksIDEzOCwgMjA4LCAxNjEsIDI0OCwgMjEyLCAyMDYsIDgzLCAzOSwgCisgICAgMTI0LCAyMDgsIDE2MSwgMjQ4LCAyMTIsIDIwNiwgODMsIDM5LCAyMjQsIDE1MCwgMjA4LCAxNjEsIDI0OCwgMjEyLCAyMDYsIAorICAgIDgzLCAzOSwgMjI2LCAyNTMsIDIwOCwgMTYxLCAyNDgsIDIxMiwgMjA2LCA4MywgMzksIDIzNiwgMjQyLCAyMDgsIDE2MSwgCisgICAgMjQ4LCAyMTIsIDIwNiwgODMsIDIzOSwgMTAyLCAyMTEsIDYxLCAxMTksIDExNywgMjIsIDIyOSwgMTk3LCAxMTksIDExNywgCisgICAgMjIsIDIyOSwgMTkzLCAxMTksIDExNywgMjIsIDIyOSwgOTcsIDExOSwgMTE3LCAyMiwgMjI5LCA2MywgMTE5LCAxMTcsIDIyLCAKKyAgICAyMjksIDIxOCwgMTE5LCAxMTcsIDIyLCAyMjksIDIxNSwgMTE5LCAxMTcsIDIyLCAyMjgsIDIwMCwgMTE5LCAxMTcsIDIyLCAKKyAgICAyMjgsIDE3MiwgMTE5LCAxMTcsIDIyLCAyMjksIDE5OSwgMTE5LCAxMTcsIDIyLCAyMjksIDE1NCwgMTE5LCAxMTcsIDIyLCAKKyAgICAyMzAsIDE3LCAxMTksIDExNywgMjIsIDIzMCwgMTQsIDExOSwgMTE3LCAyMiwgMjI5LCA1LCAxMTksIDExNywgMjIsIDIyOSwgCisgICAgMiwgMTE5LCAxMTcsIDIyLCAyMjksIDIxMiwgMTE5LCAxMTcsIDIyLCAyMjksIDIxMCwgMTE5LCAxMTcsIDIyLCAyMjgsIAorICAgIDIwMiwgMTE5LCAxMTcsIDIyLCAyMjgsIDIwMSwgMTE5LCAxMTcsIDIyLCAyMjksIDIzLCAxMTksIDExNywgMjIsIDIyOCwgCisgICAgMjQ3LCAxMTksIDExNywgMjIsIDIyOSwgOTksIDExOSwgMTE3LCAyMiwgMjI5LCA5OCwgMTE5LCAxMTcsIDIyLCAyMzAsIDMyLCAKKyAgICAxMTksIDExNywgMjIsIDIyOSwgMjE0LCAxMTksIDExNywgMjIsIDIyOCwgMTYzLCAxMTksIDExNywgMjIsIDIyOCwgMTU0LCAKKyAgICAxMTksIDExNywgMjIsIDIzMCwgNDAsIDExOSwgMTE3LCAyMiwgMjMwLCAzMywgMTE5LCAxMTcsIDEwOSwgMjA2LCA2MSwgCisgICAgMTE5LCAxMTcsIDEwOSwgMjIxLCA5MCwgMTE5LCAxMTcsIDEwOSwgMjI3LCAyNTEsIDExOSwgMTE3LCAxMDksIDIzNywgNzYsIAorICAgIDExOSwgMTE3LCAxMDksIDIyMSwgMjMwLCAxMTksIDExNywgMTA5LCAyMTYsIDE2NywgMTE5LCAxMTcsIDEwOSwgMjIyLCAxLCAKKyAgICAxMTksIDExNywgMTA5LCAyMTcsIDEwMCwgMTE5LCAxMTcsIDEwOSwgMjAzLCA2MiwgMTE5LCAxMTcsIDEwOSwgMjM2LCAyMjEsIAorICAgIDExOSwgMTE3LCAxMDksIDIyNSwgNjcsIDExOSwgMTE3LCAxMDksIDI0NiwgMTc0LCAxMTksIDExNywgMTA5LCAyMjMsIDI4LCAKKyAgICAxMTksIDExNywgMTA5LCAyMzYsIDE1NywgMTE5LCAxMTcsIDEwOSwgMjE4LCA4NSwgMTE5LCAxMTcsIDEwOSwgMjIxLCA5NSwgCisgICAgMTE5LCAxMTcsIDEwOSwgMjIzLCA2NSwgMTE5LCAxMTcsIDEwOSwgMjUwLCAzNCwgMTE5LCAxMTcsIDEwOSwgMjAzLCAxNzgsIAorICAgIDExOSwgMTE3LCAxMDksIDI0NywgMTUsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIDIwNywgMTk5LCAxMTksIDExNywgMTMxLCAKKyAgICAyNDYsIDY3LCAyMTIsIDEzLCAxMTksIDExNywgMTMxLCAyNDYsIDY3LCAyMjksIDE3MiwgMTE5LCAxMTcsIDEzMSwgMjQ2LCAKKyAgICA2NywgMjI5LCAxMzAsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIDIxMSwgNCwgMTE5LCAxMTcsIDEzMSwgMjQ2LCA2NywgCisgICAgMjM2LCAxMjMsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIDIwOSwgMjA2LCAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIwOSwgCisgICAgNDQsIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjA4LCA5LCAyNDYsIDIyOSwgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDI0NiwgCisgICAgMTYzLCAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIwOSwgNjksIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjQwLCA1MCwgMTE5LCAKKyAgICAxMTcsIDIsIDIwMywgMTM2LCAyMjEsIDg1LCAxMTksIDExNywgMiwgMjAzLCAxMzYsIDIxNiwgNTksIDExOSwgMTE3LCAyLCAKKyAgICAyMDMsIDEzNiwgMjA4LCAxMjQsIDExOSwgMTE3LCAyLCAyMDMsIDEzNiwgMjQwLCA4OSwgMTE5LCAxMTcsIDIsIDIwNSwgCisgICAgMTczLCAyMTQsIDE1OSwgMTE5LCAxMTcsIDIsIDIyNSwgNiwgMjExLCA4LCAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIyMSwgCisgICAgMTM0LCAxMTksIDExNywgMiwgMjM1LCAxNjcsIDIwMywgODEsIDExOSwgMTE3LCAyLCAyMDMsIDE3NywgMTE5LCAxMTcsIDIsIAorICAgIDI0NiwgNjcsIDIwNywgMjUyLCAyMTUsIDIxNiwgMTE5LCAxMTcsIDE3LCAyMDIsIDg0LCAxMTksIDExNywgMTcsIDEwNSwgCisgICAgMTE5LCAxMTcsIDE3LCAxMDgsIDExOSwgMTE3LCAxNywgMTQ3LCAxMTksIDExNywgMTcsIDE0OSwgMTE5LCAxMTcsIDE3LCAKKyAgICAxNzAsIDExOSwgMTE3LCAxNywgMTk1LCAxMTksIDExNywgMTcsIDIxMywgMTExLCAxMTksIDExNywgMTcsIDE5OSwgMTE5LCAKKyAgICAxMTcsIDE3LCAyMjIsIDYzLCAxMTksIDExNywgNDIsIDIwOSwgMTQ3LCAxMTksIDExNywgNDIsIDIzNiwgMTAsIDExOSwgCisgICAgMTE3LCA0MiwgMjA5LCAxNTMsIDIwOSwgMzQsIDExOSwgMTE3LCA0MiwgMjI0LCAxMTMsIDExOSwgMTE3LCA0MiwgMjM2LCAKKyAgICAxMiwgMjI0LCAxMTMsIDExOSwgMTE3LCA0MiwgMjA5LCAxNTMsIDI0OCwgNjgsIDExOSwgMTE3LCA0MiwgMjA4LCA3MiwgCisgICAgMTE5LCAxMTcsIDIsIDIwNSwgMTczLCAyMjYsIDIzNCwgMTE5LCAxMTcsIDIsIDIwMywgMTMzLCAxMTksIDExNywgMiwgMjM2LCAKKyAgICAyMTYsIDExOSwgMTE3LCAyLCAyMDksIDU5LCAyMzYsIDIxNiwgMTE5LCAxMTcsIDIsIDIwMSwgMjQ3LCAyMDksIDEwMiwgCisgICAgMTE5LCAxMTcsIDIsIDIzNiwgMTQxLCAxMTksIDExNywgMiwgMjIxLCAxNDgsIDExOSwgMTE3LCAyLCAyMDMsIDE2OSwgMTE5LCAKKyAgICAxMTcsIDIsIDIyMSwgODgsIDExOSwgMTE3LCAyLCAyNTAsIDE4LCAxMTksIDExNywgMiwgMjA3LCAxMjksIDI0NiwgMjI4LCAKKyAgICAxMTksIDExNywgMiwgMjI1LCA2LCAyMDgsIDEyLCAxMTksIDExNywgMiwgMjA5LCAyMDcsIDExOSwgMTE3LCAyLCAyMjcsIDcsIAorICAgIDExOSwgMTE3LCAyLCAyMjMsIDIwMSwgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDIzNywgMTQzLCAyMjYsIDIxMiwgMjIxLCA5MywgCisgICAgMjIxLCA5MiwgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDI0NSwgMTA5LCAyMDgsIDMsIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAKKyAgICAyMDcsIDEyNywgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDIwNywgMTI4LCAyNDYsIDg2LCAxMTksIDExNywgMiwgMjQ2LCA2NywgCisgICAgMjE3LCAxODYsIDI0NCwgMTM1LCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjIxLCAxNDEsIDIwOCwgMTMyLCAxMTksIDExNywgCisgICAgMjQ2LCAzOSwgMiwgMjA4LCA3LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjAzLCA0OCwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIAorICAgIDIyNywgOTMsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMjcsIDI1MCwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIwMywgMTMyLCAKKyAgICAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjI5LCA2LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjM3LCA3MywgMTE5LCAxMTcsIAorICAgIDI0NiwgMzksIDIsIDIyMywgMjQyLCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjA5LCA0NSwgMTE5LCAxMTcsIDI0NiwgMzksIAorICAgIDIsIDIwOCwgMTcsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMTgsIDIwNSwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIyOSwgCisgICAgMTQyLCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjM3LCAxMzMsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMDYsIDgwLCAxMTksIAorICAgIDExNywgMjQ2LCAzOSwgMiwgMjQwLCA4NiwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIwMywgODgsIDExOSwgMTE3LCAyNDYsIAorICAgIDM5LCAyLCAyMDcsIDI0NiwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIyOCwgMTU4LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgCisgICAgMjA0LCAxNTMsIDExMSwgMSwgMTg1LCAxMTEsIDEsIDI0OSwgMzIsIDExMSwgMSwgMTEsIDE4NSwgMTExLCAxLCAyMTgsIDk4LCAKKyAgICAxMTEsIDEsIDE5MiwgMTExLCAxLCAyMjQsIDE1OCwgMTExLCAxLCAyNTAsIDEyNiwgMTkyLCAxMTEsIDEsIDI0MCwgMTA4LCAKKyAgICAxMTEsIDEsIDIwNiwgODYsIDExMSwgMSwgMjA1LCAyMzEsIDExMSwgMSwgMjEwLCAyMiwgMTExLCAxLCAyNDQsIDIxMiwgCisgICAgMTExLCAxLCAxMSwgMjA3LCAyNDEsIDExMSwgMSwgMTEsIDIxMCwgMjIsIDExMSwgMSwgMjA3LCAyNDEsIDExMSwgMSwgMjQ0LCAKKyAgICAxMjAsIDExMSwgMSwgMjAxLCAyMDEsIDExMSwgMSwgMjIyLCAxMDQsIDExMSwgMSwgMTEsIDIyMSwgMjI3LCAxMTEsIDEsIAorICAgIDI1MCwgMTI2LCAyMDEsIDIwMSwgMTExLCAxLCAyMjEsIDIyNywgMTExLCAxLCAyMjEsIDIxMywgMTExLCAxLCAyMjgsIDExMywgCisgICAgMTExLCAxLCAyMjYsIDE5OCwgMTExLCAxLCAyMjcsIDE2MSwgMTExLCAxLCAyMjcsIDE1MCwgMTExLCAxLCAyMDgsIDE4NywgCisgICAgMTExLCAxLCAyNDMsIDEyMSwgMTExLCAxLCAyMDgsIDE3OSwgMTExLCAxLCAyNDMsIDEyMCwgMTExLCAxLCAxNzMsIDExMSwgCisgICAgMSwgMjM5LCA4LCAxMTEsIDEsIDExLCAxNzMsIDExMSwgMSwgMjE3LCAxMjYsIDExMSwgMSwgMjE3LCAxMDMsIDExMSwgMSwgCisgICAgMjIyLCAyMDMsIDExMSwgMSwgMjIyLCAxNTIsIDExMSwgMSwgMjUwLCAxMjYsIDIyMiwgMjAzLCAxMTEsIDEsIDE1MiwgMTExLCAKKyAgICAxLCAyMDMsIDE4MiwgMTExLCAxLCAyMzgsIDExOSwgMTExLCAxLCAyMzgsIDk0LCAxMTEsIDEsIDIwNywgMjUxLCAxMTEsIDEsIAorICAgIDI0MSwgMjM5LCAxMTEsIDEsIDIyMSwgMTEsIDExMSwgMSwgMjIwLCAyNTAsIDExMSwgMSwgMjA4LCAxMCwgMTExLCAxLCAKKyAgICAyNDEsIDI0OSwgMTExLCAxLCAxMSwgMjA4LCAxMCwgMTExLCAxLCAxMSwgMjQxLCAyNDksIDExMSwgMSwgMjE2LCAxMzMsIAorICAgIDIwOCwgMTAsIDExMSwgMSwgMjEzLCA5MCwgMTExLCAxLCAyMTEsIDE2NCwgMTExLCAxLCAyMDIsIDgwLCAxMTEsIDEsIDIwMiwgCisgICAgOCwgMTExLCAxLCAyMDgsIDIwLCAxMTEsIDEsIDI0MSwgMjU1LCAxMTEsIDEsIDExLCAyMDgsIDIwLCAxMTEsIDEsIDIxNSwgCisgICAgMzYsIDExMSwgMSwgMjAyLCAxMTYsIDExMSwgMSwgMjAyLCA5LCAxMTEsIDEsIDIwMSwgMjM1LCAxMTEsIDEsIDIwMSwgMjE1LCAKKyAgICAxMTEsIDEsIDI1MCwgMTI2LCAyMDEsIDIzNSwgMTExLCAxLCAyMDEsIDIwNywgMTExLCAxLCAyMDEsIDIxNCwgMTExLCAxLCAKKyAgICAyMDQsIDExMSwgMTExLCAxLCAyNTEsIDczLCAxMTEsIDEsIDIzNywgMTIsIDExMSwgMSwgMjIzLCA3MCwgMTExLCAyLCAyNTAsIAorICAgIDY1LCAxMTEsIDIsIDIxNiwgMTMzLCAyMDUsIDE4NCwgMTExLCAyLCAyMTYsIDEzMywgMjUwLCA2NSwgMTExLCAyMiwgMiwgCisgICAgNjMsIDExMSwgMjIsIDIsIDI1MiwgMjUsIDExMSwgMjIsIDIsIDI1MSwgNjksIDExMSwgMjIsIDIsIDI1MCwgMjMxLCAxMTEsIAorICAgIDIyLCAyLCAyNTAsIDIyMywgMTExLCAyMiwgMiwgNzgsIDExMSwgMjIsIDIsIDIyMCwgMTgsIDExMSwgMjIsIDIsIDIwNCwgMCwgCisgICAgMTExLCAyMiwgMiwgMjA0LCAxNDQsIDExMSwgMjIsIDIsIDc0LCAxMTEsIDIyLCAyLCAyNDEsIDkyLCAxMTEsIDIyLCAyLCAKKyAgICAyNDEsIDc4LCAxMTEsIDIyLCAyLCAyMjAsIDcwLCAxMTEsIDIyLCAyLCA3NSwgMTExLCAyMiwgMiwgMjM1LCAxNzEsIDExMSwgCisgICAgMjIsIDIsIDIzNSwgMTcwLCAxMTEsIDIyLCAyLCAyMzUsIDE2OSwgMTExLCAyMiwgMiwgMjMwLCAyMzQsIDExMSwgMjIsIDIsIAorICAgIDIzMSwgMTEwLCAxMTEsIDIyLCAyLCAyMzEsIDgzLCAxMTEsIDIyLCAyLCAyMzAsIDE5NywgMTExLCAyMiwgMiwgMjMxLCAyNCwgCisgICAgMTExLCAyMiwgMiwgNjgsIDExMSwgMjIsIDIsIDIwNywgMzksIDExMSwgMjIsIDIsIDIwNywgMzgsIDExMSwgMjIsIDIsIAorICAgIDIwNywgMzcsIDExMSwgMjIsIDIsIDIwNiwgMTc4LCAxMTEsIDIyLCAyLCAyMDcsIDIxLCAxMTEsIDIyLCAyLCAyMDYsIDI0MSwgCisgICAgMTExLCAyMiwgMiwgMjAzLCAxMjQsIDExMSwgMjIsIDIsIDIwMywgMTEsIDExMSwgMjIsIDIsIDI1MSwgMTA5LCAxMTEsIDIyLCAKKyAgICAyLCAyNTEsIDEwNSwgMTExLCAyMiwgMiwgMjQxLCAyMSwgMTExLCAyMiwgMiwgMjE1LCAxODksIDI0MSwgMjEsIDExMSwgMjIsIAorICAgIDIsIDI0MSwgMjgsIDExMSwgMjIsIDIsIDIxNSwgMTg5LCAyNDEsIDI4LCAxMTEsIDIyLCAyLCAyNTEsIDY0LCAxMTEsIDIyLCAKKyAgICAyLCAyNDEsIDE0NSwgMTExLCAyMiwgMiwgMjUwLCAzNCwgMTExLCAyMiwgMiwgMjE5LCAyMTYsIDExMSwgMjIsIDIsIDIyMywgCisgICAgMTYzLCAxMTEsIDIyLCAyLCAyMjIsIDIwNSwgMTExLCAxNDMsIDIxNiwgMTYsIDExMSwgMTQzLCAyMDgsIDE0NSwgMjE2LCAKKyAgICAxNiwgMTExLCAxNDMsIDU1LCAxMTEsIDE0MywgNTYsIDExMSwgMSwgMjA4LCAxNTksIDExMSwgMSwgMjA4LCAxNTgsIDExMSwgCisgICAgMSwgMjA4LCAxNTcsIDExMSwgMSwgMjA4LCAxNTYsIDExMSwgMSwgMjA4LCAxNTUsIDExMSwgMSwgMjA4LCAxNTQsIDExMSwgCisgICAgMSwgMjA4LCAxNTMsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgMTYwLCAxMTEsIDEsIDIxNiwgMTMzLCAyMDgsIDE1OSwgMTExLCAKKyAgICAxLCAyMTYsIDEzMywgMjA4LCAxNTcsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgMTU2LCAxMTEsIDEsIDIxNiwgMTMzLCAyMDgsIAorICAgIDE1NSwgMTExLCAxLCAyMTYsIDEzMywgMjA4LCAxNTMsIDY3LCAxLCAyNTAsIDEyNiwgNzQsIDE3MiwgMSwgMjUwLCAxMjYsIAorICAgIDIwMywgNTIsIDEwMCwgMSwgMjM3LCAxNzEsIDEwMCwgMSwgMjAzLCAxOTYsIDEwMCwgMSwgMjE5LCAxODQsIDEwMCwgMSwgCisgICAgMjEwLCA2OSwgMTAwLCAxLCAyNDAsIDE3NCwgMTAwLCAxLCAyMzAsIDU0LCAxMDAsIDEsIDE1OSwgMTAwLCAxLCAyNDksIAorICAgIDI1NSwgMTAwLCAxLCAyNDUsIDUxLCAxMDAsIDEsIDIwNiwgMTY0LCAxMDAsIDEsIDIzOSwgNzUsIDEwMCwgMSwgMTQ2LCAKKyAgICAxMDAsIDEsIDIxOSwgMTg1LCAyMjMsIDE2MywgMTAwLCAxLCAyNDUsIDUyLCAxOTQsIDEwMCwgMSwgMjQwLCAxNzUsIDIyMywgCisgICAgMTYzLCAxMDAsIDEsIDIzMCwgNTUsIDIyNiwgMTg1LCAxMDAsIDEsIDIxNywgMSwgMTk0LCAxMDAsIDEsIDIwOSwgMTEwLCAKKyAgICAxMDAsIDEsIDIxMiwgNDUsIDI0NCwgMiwgMTAwLCAxLCAyNDQsIDIsIDEwMCwgMSwgMjI5LCA0OCwgMTAwLCAxLCAyMTIsIAorICAgIDQ1LCAyMzAsIDE4NCwgMTAwLCAxLCAyMzYsIDIyNSwgMTAwLCAxLCAyMjcsIDE2MiwgMTAwLCAxLCAyMTYsIDYyLCAxMDAsIAorICAgIDEsIDIyNiwgMTg1LCAxMDAsIDEsIDIyMywgMTYzLCAxMDAsIDEsIDIzMCwgMTg0LCAxMDAsIDEsIDE5NCwgMTAwLCAxLCAKKyAgICAyMjYsIDE4NiwgMjIzLCAxNjMsIDEwMCwgMSwgMjIzLCAxNjQsIDIyNiwgMTg1LCAxMDAsIDEsIDIzMCwgMTg1LCAyMjYsIAorICAgIDE4NSwgMTAwLCAxLCAyMTUsIDk0LCAyMzAsIDE4NCwgMTAwLCAxLCAyMjYsIDE4NiwgMywgMjQzLCA4NSwgMTAwLCAxLCAKKyAgICAyMjMsIDE2NCwgMywgMjQzLCA4NSwgMTAwLCAxLCAyMzAsIDE4NSwgMywgMjQzLCA4NSwgMTAwLCAxLCAyMzAsIDE4NSwgMywgCisgICAgMTg3LCAyMzEsIDcsIDI1LCA1NSwgMTAwLCAxLCAyMTUsIDk0LCAzLCAyNDMsIDg1LCAxMDAsIDEsIDIxNSwgOTQsIDMsIDcwLCAKKyAgICA1NiwgMTAwLCAxLCAyMjYsIDE4NiwgMTk0LCAxMDAsIDEsIDIyMywgMTY0LCAxOTQsIDEwMCwgMSwgMjMwLCAxODUsIDE5NCwgCisgICAgMTAwLCAxLCAyMTUsIDk0LCAxOTQsIDEwMCwgMSwgMjI2LCAxODYsIDIyMywgMTY0LCAxOTQsIDEwMCwgMSwgMjIzLCAxNjQsIAorICAgIDIyNiwgMTg2LCAxOTQsIDEwMCwgMSwgMjMwLCAxODUsIDIyNiwgMTg2LCAxOTQsIDEwMCwgMSwgMjE1LCA5NCwgMjMwLCAKKyAgICAxODUsIDE5NCwgMTAwLCAxLCAyMzAsIDE4NSwgMjE1LCA5NCwgMywgMjQzLCA4NSwgMTAwLCAxLCAyMzAsIDE4NSwgMjIzLCAKKyAgICAxNjMsIDEwMCwgMSwgMjMwLCAxODUsIDIyMywgMTY0LCAxOTQsIDEwMCwgMSwgMjE1LCA5NCwgMjEwLCA2OSwgMTAwLCAxLCAKKyAgICAyMTUsIDk0LCAyMTAsIDcwLCAxNDYsIDEwMCwgMSwgMjE1LCA5NCwgMjE5LCAxODQsIDEwMCwgMSwgMjE1LCA5NCwgMjE5LCAKKyAgICAxODUsIDE0NiwgMTAwLCAxLCAyMTAsIDcwLCAxOTQsIDEwMCwgMSwgMjEwLCA3MCwgMjE3LCAxLCAxOTQsIDEwMCwgMSwgCisgICAgMjA0LCAxNDQsIDEwMCwgMSwgMjA0LCA0MCwgMTAwLCAxLCAyMDQsIDE0NSwgMTQ2LCAxMDAsIDEsIDIxNSwgOTQsIDIyMywgCisgICAgMTYzLCAxMDAsIDEsIDIxNSwgOTQsIDIyNiwgMTg1LCAxMDAsIDEsIDIzMCwgNTUsIDIxNywgMSwgMTk0LCAxMDAsIDEsIAorICAgIDIzOSwgNzYsIDIxNywgMSwgMTk0LCAxMDAsIDEsIDIxNSwgOTQsIDIzMCwgNTQsIDEwMCwgMSwgMjE1LCA5NCwgMjMwLCA1NSwgCisgICAgMTQ2LCAxMDAsIDEsIDYzLCAxMDAsIDEsIDIxMiwgNDUsIDIxOSwgMTk1LCAxMDAsIDEsIDIyMCwgOTcsIDEwMCwgMSwgNzgsIAorICAgIDEwMCwgMSwgMjUwLCAxNzYsIDEwMCwgMSwgNzUsIDEwMCwgMSwgNzQsIDEwMCwgMSwgMjMxLCAxMTAsIDEwMCwgMSwgMjEyLCAKKyAgICAyMjgsIDc1LCAxMDAsIDEsIDIwNywgMTcsIDEwMCwgMSwgMjQxLCAxNjEsIDEwMCwgMSwgMjEyLCA0NSwgMjQxLCAxNDcsIAorICAgIDEwMCwgMSwgMjE1LCAyMDksIDc1LCAxMDAsIDEsIDIxMiwgNDUsIDI0MSwgMTYxLCAxMDAsIDEsIDE2MywgNzUsIDEwMCwgMSwgCisgICAgMjAzLCA1MiwgMTAwLCAxLCA2OCwgMTAwLCAxLCAyNDAsIDIzOCwgMTAwLCAxLCAyMDMsIDE0NywgMTAwLCAxLCAxMDYsIAorICAgIDIyMywgMTYzLCAxMDAsIDEsIDE2MywgNjgsIDEwMCwgMSwgMjE1LCAyMDksIDY4LCAxMDAsIDEsIDIwNywgMTgsIDEwMCwgMSwgCisgICAgMjEyLCA0NSwgNjgsIDEwMCwgMSwgMjIwLCAxNSwgMTAwLCAxLCAyMTksIDE5NSwgMTAwLCAxLCAyMTksIDIxNiwgMTAwLCAxLCAKKyAgICAyMDQsIDExMSwgMTAwLCAxLCAyMDQsIDAsIDEwMCwgMSwgMjA0LCAzMCwgMTAwLCAxLCAyMDQsIDUzLCAxMDAsIDEsIDIwMywgCisgICAgMjMwLCAxMDAsIDEsIDIyMywgNzIsIDY4LCAxMDAsIDEsIDIyMywgNzIsIDc4LCAxMDAsIDEsIDIyMywgNzIsIDc1LCAxMDAsIAorICAgIDEsIDIyMywgNzIsIDYzLCAxMDAsIDEsIDIxOCwgMjM1LCAyNTAsIDIzMSwgMTAwLCAxLCAyMTgsIDIzNSwgMjUwLCAyNDcsIAorICAgIDEwMCwgMSwgMjEyLCA0NSwgMjQxLCA5MiwgMTAwLCAxLCAyMTIsIDQ1LCAyNTAsIDIzMSwgMTAwLCAxLCAyMTIsIDQ1LCAKKyAgICAyMjAsIDMxLCAxMDAsIDEsIDEyNSwgMjI2LCAxODUsIDEwMCwgMjUxLCA4OCwgNDksIDIzNiwgMTA2LCAyMTQsIDE3MiwgCisgICAgMTAwLCAyNTEsIDg4LCAyMjQsIDE1MCwgMjM2LCAxMDYsIDIxNCwgMTcyLCAxMDAsIDI1MSwgODgsIDUwLCAyMzYsIDEwNiwgCisgICAgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgMTI0LCA4MCwgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgMjI0LCAxNTAsIDgwLCAKKyAgICAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAxMzgsIDgwLCAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMTQsIAorICAgIDE3MiwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMjcsIDIxMywgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgCisgICAgMjA5LCAyMjYsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMjA5LCAyNDgsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMTg4LCAKKyAgICAxMTMsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMjM1LCAyMDYsIDExMywgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMDksIAorICAgIDIyNywgMTEzLCAxMDAsIDI1MSwgODgsIDEzOCwgMTY1LCAxMDAsIDI1MSwgODgsIDEzOCwgMjA4LCAyNDQsIDE2NSwgMTAwLCAKKyAgICAyNTEsIDg4LCAxMzgsIDIzNywgMjUzLCAxMDAsIDI1MSwgODgsIDEzOCwgMTYzLCAyMzcsIDI1MywgMTAwLCAyNTEsIDg4LCAKKyAgICAxMzgsIDI0MywgODUsIDEwMCwgMjUxLCA4OCwgMTM4LCAyNDYsIDYxLCAxMDAsIDI1MSwgODgsIDEzOCwgMjI3LCAxMTQsIAorICAgIDEwMCwgMjUxLCA4OCwgMTM4LCAyMDQsIDc1LCAxMDAsIDI1MSwgODgsIDEzOCwgMjA2LCAzOCwgMTAwLCAyNTEsIDg4LCAKKyAgICAxMjQsIDE2NSwgMTAwLCAyNTEsIDg4LCAxMjQsIDIwOCwgMjQ0LCAxNjUsIDEwMCwgMjUxLCA4OCwgMTI0LCAyMzcsIDI1MywgCisgICAgMTAwLCAyNTEsIDg4LCAxMjQsIDE2MywgMjM3LCAyNTMsIDEwMCwgMjUxLCA4OCwgMTI0LCAyNDMsIDg1LCAxMDAsIDI1MSwgCisgICAgODgsIDEyNCwgMjQ2LCA2MSwgMTAwLCAyNTEsIDg4LCAxMjQsIDIyNywgMTE0LCAxMDAsIDI1MSwgODgsIDEyNCwgMjA0LCAKKyAgICA3NSwgMTAwLCAyNTEsIDg4LCAxMjQsIDIwNiwgMzgsIDEwMCwgMjUxLCA4OCwgMTI0LCA0NywgMTAwLCAyLCAxNTgsIDMsIAorICAgIDI0NSwgMTMwLCAxMDAsIDIwOSwgNjgsIDEsIDIxNCwgMTUwLCAxMDAsIDUyLCA4MiwgMTAwLCAyMTcsIDE3OSwgMjQ2LCAKKyAgICAxMjYsIDIzOSwgMTAyLCAyMTEsIDYxLCAyMTIsIDIxNSwgMjM5LCAxNTgsIDEsIDIxOSwgMjAxLCAyMTIsIDIxNSwgMjM5LCAKKyAgICAxNTgsIDI0NSwgMTkwLCAyMTksIDIwMSwgMjEyLCAyMTUsIDIzOSwgMTU4LCAxMjEsIDIxMSwgNzUsIDIxMiwgMjE1LCAyMzksIAorICAgIDE1OCwgMTEyLCAyMTEsIDc1LCA2MCwgMzEsIDE2LCAyMTcsIDE5NSwgNjAsIDMxLCAxNiwgMjQ0LCAxNDYsIDYwLCAzMSwgCisgICAgMTYsIDIxOCwgMjM5LCA2MCwgMzEsIDE2LCAyMTksIDE5MiwgMjQxLCAxMjYsIDYwLCAzMSwgMTYsIDIxOSwgMTkyLCAyNDMsIAorICAgIDE3MSwgNjAsIDMxLCAxNiwgMjA2LCA3MywgMjQxLCAxMjYsIDYwLCAzMSwgMTYsIDIwNiwgNzMsIDI0MywgMTcxLCA2MCwgCisgICAgMzEsIDE2LCAyMjksIDIyMSwgNjAsIDMxLCAxNiwgMjEwLCA4NiwgNjAsIDMxLCAxNiwgMjE5LCA4MywgNjAsIDMxLCAxNiwgCisgICAgMjAyLCAyMTksIDYwLCAzMSwgMTYsIDIwMiwgMjIwLCAyNDMsIDE3MSwgNjAsIDMxLCAxNiwgMjI4LCAyMjYsIDYwLCAzMSwgCisgICAgMTYsIDI1MCwgMTcxLCAyNDEsIDEyNiwgNjAsIDMxLCAxNiwgMjQwLCAyMDYsIDI0MSwgMTI2LCA2MCwgMzEsIDE2LCAyMDksIAorICAgIDE2MywgNjAsIDMxLCAxNiwgMjI5LCAxNzYsIDYwLCAzMSwgMTYsIDI1MCwgMTYxLCA2MCwgMzEsIDE2LCAyNTAsIDE2MiwgCisgICAgMjQzLCAxNzEsIDYwLCAzMSwgMTYsIDIxMCwgOTMsIDYwLCAzMSwgMTYsIDIwOSwgNTAsIDYwLCAzMSwgMTYsIDIyMCwgNDIsIAorICAgIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMzgsIDIzLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjE3LCAxOTQsIDYwLCAzMSwgCisgICAgMTYsIDI0NiwgMTkwLCA2MCwgMzEsIDE2LCAyMDYsIDYyLCA2MCwgMzEsIDE2LCAyMzAsIDIwNiwgMjUwLCAxMjQsIDYwLCAKKyAgICAzMSwgMTYsIDIyOSwgMTc4LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjI5LCAxNzcsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAKKyAgICAyMTQsIDIxMCwgNjAsIDMxLCAxNiwgMjE5LCA3MywgNjAsIDMxLCAxNiwgMjExLCA4NCwgMjUwLCAxNjQsIDYwLCAzMSwgMTYsIAorICAgIDIxOSwgMTkxLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjA2LCA3MiwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDI1MCwgMTY1LCAKKyAgICAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjUwLCAxNTksIDYwLCAzMSwgMTYsIDIyOSwgMzgsIDYwLCAzMSwgMTYsIDIxNiwgNjksIAorICAgIDYwLCAzMSwgMTYsIDIxOCwgMTY1LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjA4LCAyMTcsIDYwLCAzMSwgMTYsIDI1MCwgCisgICAgMjI5LCA2MCwgMzEsIDE2LCAyMTQsIDE1MywgNjAsIDMxLCAxNiwgMjEwLCA5NywgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIAorICAgIDIxMCwgOTcsIDIyNCwgMjIxLCAyMTEsIDgyLCA2MCwgMzEsIDE2LCAyMTksIDE4NiwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIAorICAgIDIwOSwgODYsIDYwLCAzMSwgMTYsIDIyNywgMjAwLCA2MCwgMzEsIDE2LCAyNDIsIDIsIDYwLCAzMSwgMTYsIDIwOCwgODcsIAorICAgIDYwLCAzMSwgMTYsIDIwOSwgMTM0LCA2MCwgMzEsIDE2LCAyMjgsIDIyOSwgNjAsIDMxLCAxNiwgMjUwLCAxNzEsIDI0MCwgCisgICAgMjA2LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMzEsIDYyLCA2MCwgCisgICAgMzEsIDE2LCAyMDgsIDU3LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjI5LCAyMjQsIDIwOCwgNTYsIDYwLCAzMSwgMTYsIAorICAgIDIxOSwgMTEsIDYwLCAzMSwgMTYsIDIxNywgMTk5LCA2MCwgMzEsIDE2LCAyMjksIDcsIDYwLCAzMSwgMTYsIDI0NiwgMTEwLCAKKyAgICAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjE2LCAxNzcsIDYwLCAzMSwgMTYsIDIxOSwgODYsIDI1MCwgMTI0LCA2MCwgMzEsIAorICAgIDE2LCAyMTksIDg0LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjM1LCAxNjAsIDYwLCAzMSwgMTYsIDIyMywgODIsIDYwLCAzMSwgCisgICAgMTYsIDIxOCwgMjE3LCA2MCwgMzEsIDE2LCAyMjksIDgsIDI1MSwgOSwgNjAsIDMxLCAxNiwgMjA4LCA1NywgMjUxLCA5LCAKKyAgICA2MCwgMzEsIDE2LCAyMTEsIDU1LCA2MCwgMzEsIDE2LCAyMzcsIDI0MCwgNjAsIDMxLCAxNiwgMjMwLCAyMDYsIDIyMiwgCisgICAgMjI2LCA2MCwgMzEsIDE2LCAyMjAsIDQyLCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjE5LCAxOTIsIDIyMiwgMjI2LCA2MCwgCisgICAgMzEsIDE2LCAyMTgsIDIxNiwgNjAsIDMxLCAxNiwgMjI4LCAyNDgsIDYwLCAzMSwgMTYsIDIxOCwgMjE1LCA2MCwgMzEsIDE2LCAKKyAgICAyMjgsIDIyOCwgNjAsIDMxLCAxNiwgMjE5LCAxMiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIyOSwgMTc3LCAyMjIsIDIyNywgCisgICAgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDIyOSwgMTc4LCAyMjIsIDIyNywgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDIwMiwgMjE3LCAKKyAgICA2MCwgMzEsIDE2LCAyNTAsIDE2MiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDI1MCwgMTYzLCAyMTAsIDk0LCAyMjIsIDIyNiwgCisgICAgNjAsIDMxLCAxNiwgMjAyLCAyMTgsIDYwLCAzMSwgMTYsIDIyOCwgMjI3LCA2MCwgMzEsIDE2LCAyNDEsIDEyMSwgNjAsIDMxLCAKKyAgICAxNiwgMjQ2LCAxOTEsIDYwLCAzMSwgMTYsIDIyNCwgMTIyLCAyMzAsIDIwNSwgNjAsIDMxLCAxNiwgMjA2LCA3MywgMjIyLCAKKyAgICAyMjYsIDYwLCAzMSwgMTYsIDIxOCwgMTY1LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjE3LCAyMDAsIDIyMiwgMjI2LCA2MCwgCisgICAgMzEsIDE2LCAyMjAsIDM4LCA2MCwgMzEsIDE2LCAyNTAsIDE4OSwgNjAsIDMxLCAxNiwgMjI2LCAxOTUsIDYwLCAzMSwgMTYsIAorICAgIDIxOSwgODQsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMTksIDg2LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjQwLCAyNDQsIAorICAgIDIxOSwgODUsIDYwLCAzMSwgMTYsIDIyOCwgMTM1LCA2MCwgMzEsIDE2LCAyNTAsIDE5MCwgNjAsIDMxLCAxNiwgMjA4LCA1NywgCisgICAgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDI0MSwgMTI0LCA2MCwgMzEsIDE2LCAyMTAsIDk3LCAyMjIsIDIyNiwgNjAsIDMxLCAKKyAgICAxNiwgMjEwLCA4NywgNjAsIDMxLCAxNiwgMjQ2LCAxMTAsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyNDEsIDQzLCA2MCwgMzEsIAorICAgIDE2LCAyMTQsIDE1NCwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIwMywgMTYzLCAyMjksIDM4LCA2MCwgMzEsIDE2LCAyMDgsIAorICAgIDU0LCA2MCwgMzEsIDE2LCAyMTcsIDIwMSwgNjAsIDMxLCAxNiwgMjA4LCA1OCwgNjAsIDMxLCAxNiwgMjA4LCA1NSwgNjAsIAorICAgIDMxLCAxNiwgMjE3LCAxOTgsIDYwLCAzMSwgMTYsIDIwOCwgNTMsIDYwLCAzMSwgMTYsIDIxNywgMTk3LCA2MCwgMzEsIDE2LCAKKyAgICAyMzgsIDIyLCA2MCwgMzEsIDE2LCAyNTAsIDExNiwgNjAsIDMxLCAxNiwgMjQwLCAyNDQsIDI1MCwgMTE2LCA2MCwgMzEsIAorICAgIDE2LCAyMTksIDE4NiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIwOSwgODUsIDI0MSwgMSwgNjAsIDMxLCAxNiwgMjA5LCA4NSwgCisgICAgMjQwLCAyMDUsIDYwLCAzMSwgMTYsIDIwOSwgODcsIDI1MCwgMTY2LCA2MCwgMzEsIDE2LCAyMDksIDc5LCAyMzAsIDE5LCAKKyAgICAyNTAsIDE1OCwgNjAsIDMxLCAxNiwgMjI5LCAyMjMsIDYwLCAzMSwgMTYsIDI0MSwgODAsIDYwLCAzMSwgMTYsIDIwMywgMTQsIAorICAgIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyMDMsIDE0LCAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjExLCA4MywgNjAsIDMxLCAxNiwgCisgICAgMjI5LCAzOSwgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDI0MywgMTcyLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjI4LCAyMzAsIAorICAgIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMjgsIDIzMCwgMjUxLCA5LCA2MCwgMzEsIDE2LCAyMjgsIDIzMCwgMjIyLCAyMjYsIAorICAgIDYwLCAzMSwgMTYsIDI1MCwgMTY1LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjUwLCAxNjcsIDYwLCAzMSwgMTYsIDI0MywgCisgICAgMTcxLCA2MCwgMzEsIDE2LCAyMDgsIDY4LCA2MCwgMzEsIDE2LCAyMDksIDEyNSwgNjAsIDMxLCAxNiwgMjI4LCAyNTIsIDYwLCAKKyAgICAzMSwgMTYsIDIyNywgMjA1LCAyNDEsIDczLCAyNDYsIDEwMCwgNjAsIDMxLCAxNiwgMjI3LCAyMDUsIDI0MiwgMywgMjQ2LCAKKyAgICAxMDEsIDYwLCAzMSwgMTYsIDIyNywgMjA1LCAyMDgsIDcxLCAyNDYsIDEwMSwgNjAsIDMxLCAxNiwgMjI3LCAyMDUsIDIwOSwgCisgICAgMTM2LCAyNDYsIDEwMSwgNjAsIDMxLCAxNiwgMjI3LCAyMDUsIDIzMSwgNTcsIDI0NiwgMTAwLCA2MCwgMzEsIDE2LCAyMzgsIAorICAgIDIzLCAyMjIsIDIyNywgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDIzOCwgMjMsIDIxOSwgNzQsIDI1MCwgMTEyLCA2MCwgMzEsIAorICAgIDE2LCAyMzgsIDIzLCAyMTksIDc0LCAyNDQsIDYsIDYwLCAzMSwgMTYsIDI0MywgMTk2LCA2MCwgMzEsIDE2LCAyNDMsIDE5NywgCisgICAgMjE5LCA3NCwgMjUwLCAxMTMsIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyNDMsIDE5NywgMjE5LCA3NCwgMjUwLCAxMTMsIAorICAgIDI1MCwgMjAyLCA2MCwgMzEsIDE2LCAyNDMsIDE5NywgMjE5LCA3NCwgMjQ0LCA2LCA2MCwgMzEsIDE2LCAyMDgsIDc2LCA2MCwgCisgICAgMzEsIDE2LCAyNTAsIDExNywgNjAsIDMxLCAxNiwgMjMxLCA2NCwgNjAsIDMxLCAxNiwgMjQzLCAyMTksIDYwLCAzMSwgMTYsIAorICAgIDI1MSwgNzUsIDIxOCwgNTIsIDI1MCwgMTE4LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAyNTAsIDExNSwgNjAsIDMxLCAxNiwgCisgICAgMjUxLCA3NSwgMjUwLCAxMTgsIDYwLCAzMSwgMTYsIDI1MSwgNzUsIDIyNCwgMjE1LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAKKyAgICAyMjQsIDIyNiwgNjAsIDMxLCAxNiwgMjUxLCA3NSwgMjM4LCAyNCwgNjAsIDMxLCAxNiwgMjUxLCA3NSwgMjM4LCAyMSwgNjAsIAorICAgIDMxLCAxNiwgMjUxLCA3NSwgMjE4LCA1MiwgMjM4LCAyNCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjE3LCAyMDcsIDIzNSwgCisgICAgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyNTEsIDExLCAyMTcsIDIwNywgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgCisgICAgODQsIDI0NCwgNSwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDI1MSwgMTEsIDI0NCwgNSwgMjM1LCAxNTgsIDYwLCAKKyAgICAzMSwgMTYsIDIyNSwgODQsIDIwOCwgNjMsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyMDgsIDc3LCA2MCwgMzEsIAorICAgIDE2LCAyMjUsIDg0LCAyMDksIDEzMCwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIwOSwgMTMwLCAyMjcsIDIwOSwgCisgICAgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIyNywgMjA5LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgCisgICAgMjE4LCA5NSwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIzMCwgMjEzLCAyMDksIDE1NiwgMjM1LCAxNTksIDYwLCAzMSwgMTYsIAorICAgIDI1MCwgMTYzLCAyMDksIDE1NiwgMjM1LCAxNTksIDYwLCAzMSwgMTYsIDI0MCwgODAsIDIwOSwgMTI3LCA2MCwgMzEsIDE2LCAKKyAgICAyNDAsIDgwLCAyMjQsIDQ2LCA2MCwgMzEsIDE2LCAyNDAsIDgwLCAyNDMsIDIwMiwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgCisgICAgMjA2LCA2NiwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIxNywgMjA2LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgCisgICAgMjI1LCA4NCwgMjE4LCA5NSwgMjA5LCAxMzAsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMzgsIDE5LCAyMjMsIDE2NCwgMjUwLCAKKyAgICAxNjYsIDYwLCAzMSwgMTYsIDIzOCwgMTksIDIyMywgMTY0LCAyNDMsIDE3MCwgNjAsIDMxLCAxNiwgMjQxLCA5MCwgMjMwLCAKKyAgICAxOSwgMjM5LCAxMTAsIDIwNSwgMTcxLCA2MCwgMzEsIDE2LCAyMzEsIDYzLCA2MCwgMzEsIDE2LCAyMzEsIDYxLCA2MCwgMzEsIAorICAgIDE2LCAyMzksIDExMCwgMjUwLCAxMjUsIDI0NCwgNCwgMjM1LCAxNTcsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIDIxNywgCisgICAgMTg1LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDIyMywgODIsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyMjMsIAorICAgIDc3LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyNDMsIDIzMywgNjAsIDMxLCAxNiwgMjM5LCAKKyAgICAxMTAsIDIxMiwgNjQsIDI0MywgMjE2LCAyNDMsIDIzMywgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyMjksIAorICAgIDIwMSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyMDIsIDE3LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAKKyAgICAyMTcsIDIyMiwgMTAxLCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyMjIsIDEwMSwgMjUwLCAKKyAgICAyMDIsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyMjUsIDEyOCwgMjQ2LCAxMDIsIDI0MywgMjAyLCA2MCwgMzEsIDE2LCAyMzksIAorICAgIDExMCwgMjI1LCAxMjgsIDI0NiwgMTAyLCAyMjQsIDQ2LCA2MCwgMzEsIDE2LCAyNDAsIDI3LCAyMTIsIDY0LCAyNDYsIDEwMiwgCisgICAgMjA2LCA2NSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIxMiwgNjQsIDI0NiwgMTAyLCAyMTAsIDk4LCA2MCwgMzEsIDE2LCAKKyAgICAyMzksIDExMCwgMjIyLCAyMjksIDYwLCAzMSwgMTYsIDI0NiwgMTAzLCAyMDEsIDI0MSwgNjAsIDMxLCAxNiwgMjQ2LCAxMDMsIAorICAgIDIyOSwgMzcsIDYwLCAzMSwgMTYsIDI0NiwgMTAzLCAyMTEsIDIxOSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIzNSwgMjA2LCAKKyAgICAyMDMsIDEzLCAyMDksIDEzMSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MSwgOTEsIDI1MCwgMTkxLCA2MCwgMzEsIDE2LCAKKyAgICAyMDMsIDEzLCAyMDgsIDY0LCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgMjA4LCA2NCwgNjAsIDMxLCAxNiwgMjQzLCAyMTAsIAorICAgIDIwOSwgMTMxLCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgMjUwLCAxNjgsIDI0MiwgMywgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIAorICAgIDI0MywgMjEwLCAyMjQsIDQ0LCAyMDksIDEzNSwgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDI0MywgMjEwLCAyNDMsIDE5MywgCisgICAgMjQwLCAyMTgsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgMjA4LCA3NCwgMjIwLCA0OCwgMjQzLCAxMDUsIDYwLCAKKyAgICAzMSwgMTYsIDIwMywgMTMsIDI1MCwgMTY4LCAyNDIsIDMsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAyMDMsIDEzLCAyMjQsIAorICAgIDQ0LCAyMDksIDEzNSwgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDIwMywgMTMsIDI0MywgMTkzLCAyNDAsIDIxOCwgMjQzLCAKKyAgICAxMDUsIDYwLCAzMSwgMTYsIDIwMywgMTMsIDIwOCwgNzQsIDIyMCwgNDgsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAyMzgsIAorICAgIDE3NSwgMjQzLCAyMDksIDYwLCAzMSwgMTYsIDIzOCwgMTc1LCAyMDMsIDEyLCA2MCwgMzEsIDE2LCAyNDMsIDIxOCwgMjUwLCAKKyAgICAxNjgsIDIyNCwgMTIzLCA2MCwgMzEsIDE2LCAyNDMsIDIxOCwgMjUwLCAxNjgsIDIyNCwgMjU1LCA2MCwgMzEsIDE2LCAyNDMsIAorICAgIDIxOCwgMjQzLCAxNzEsIDYwLCAzMSwgMTYsIDI0MywgMjE4LCAyMDksIDc3LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjA5LCAKKyAgICA3NywgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDIwOSwgNzgsIDI0MywgMTU1LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjA5LCAKKyAgICA3OCwgMjA4LCA2NSwgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDIwOSwgNzgsIDIwOSwgMTIzLCA2MCwgMzEsIDE2LCAyMTIsIAorICAgIDEzMCwgMjUwLCA4OCwgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDI1MCwgODksIDI0MywgMTU1LCA2MCwgMzEsIDE2LCAyMTIsIAorICAgIDEzMCwgMjUwLCA4OSwgMjA4LCA2NSwgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDI1MCwgODksIDIwOSwgMTIzLCA2MCwgMzEsIAorICAgIDE2LCAyNDMsIDE5NCwgMjM4LCAxNTYsIDYwLCAzMSwgMTYsIDI0MywgMjAxLCAyMTksIDIxNiwgNjAsIDMxLCAxNiwgMjExLCAKKyAgICA3MSwgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDE4NSwgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDIwNSwgMTcxLCA2MCwgMzEsIAorICAgIDE2LCAyNTAsIDEwOSwgMjM5LCA4LCA2MCwgMzEsIDE2LCAyNTAsIDEwOSwgMjQzLCAyMzMsIDYwLCAzMSwgMTYsIDI1MCwgCisgICAgMTA5LCAyMjksIDIwMSwgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDIwMiwgMTcsIDYwLCAzMSwgMTYsIDI1MCwgMTA5LCAyMjIsIAorICAgIDEwMCwgNjAsIDMxLCAxNiwgMjI5LCAxNzcsIDIyMiwgMjI3LCAyMjQsIDIyNSwgNjAsIDMxLCAxNiwgMjI5LCAxNzgsIDIyMiwgCisgICAgMjI3LCAyMjQsIDIyNSwgNjAsIDMxLCAxNiwgMjI5LCAxNzcsIDIyMiwgMjI3LCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjI5LCAKKyAgICAxNzgsIDIyMiwgMjI3LCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjI5LCAzOSwgMjI5LCAyMjAsIDYwLCAzMSwgMTYsIDIzOCwgCisgICAgMjMsIDIyMiwgMjI3LCAyMjksIDIyMCwgMzEsIDE2LCAyMTIsIDEyMCwgMjQ4LCAyMjYsIDMxLCAxNiwgNTIsIDI0OCwgMjI2LCAKKyAgICAzMSwgMTYsIDQ2LCAyNDgsIDIyNiwgMzEsIDE2LCAyMTYsIDc0LCA0NiwgMjQ4LCAyMjYsIDMxLCAxNiwgMjQ0LCAxNDMsIAorICAgIDI0OCwgMjI2LCAzMSwgMTYsIDIxMiwgMjI4LCAyNDgsIDIyNiwgMzEsIDE2LCA0OSwgMjE2LCAxMDEsIDU0LCAzMSwgMTYsIAorICAgIDUwLCAyMTYsIDEwMSwgNTQsIDMxLCAxNiwgMjE2LCAxMDEsIDI0MywgODMsIDMxLCAxNiwgMjQ0LCAxODUsIDIxNCwgMTU3LCAKKyAgICAzMSwgMTYsIDI0NCwgMjEzLCAyNDcsIDQ1LCAzMSwgMTYsIDIxNCwgMTU3LCAzMSwgMTYsIDI0NSwgMjUwLCAzMSwgMTYsIAorICAgIDIxNiwgOTksIDI0MCwgMTUsIDMxLCAxNiwgMjE2LCA5OSwgMjQwLCAxNCwgMzEsIDE2LCAyMTYsIDk5LCAyNDAsIDEzLCAzMSwgCisgICAgMTYsIDI0MCwgMzYsIDMxLCAxNiwgMjQwLCAzNywgNTYsIDMxLCAxNiwgMjQ3LCAyMTYsIDgyLCAzMSwgMTYsIDI0NywgODIsIAorICAgIDMxLCAxNiwgMjQ3LCAyMjgsIDMxLCAxNiwgMTU1LCAzMSwgMTYsIDIyMCwgMjgsIDIxMSwgMTAyLCAzMSwgMTYsIDIwNywgCisgICAgMTMzLCAyMTEsIDEwMiwgMzEsIDE2LCAyMDksIDI5LCAyMTEsIDEwMiwgMzEsIDE2LCAyMzksIDE0NiwgMjExLCAxMDIsIDMxLCAKKyAgICAxNiwgMjM5LCAyMzIsIDIxMSwgMTAyLCAzMSwgMTYsIDIxMiwgODcsIDIxMSwgMTAyLCAzMSwgMTYsIDIxMiwgODUsIDIzOSwgCisgICAgMTI3LCAzMSwgMTYsIDIzOSwgMTQ0LCAyMzksIDEyNywgMzEsIDE2LCAyMzksIDc2LCAyNDYsIDMwLCAzMSwgMTYsIDIzOSwgCisgICAgNzYsIDI0NiwgMzEsIDIxOSwgMjE4LCAyNTEsIDAsIDMxLCAxNiwgMjM5LCA3NiwgMjQ2LCAzMSwgMjE5LCAyMTgsIDI0OCwgCisgICAgMjExLCAzMSwgMTYsIDI0NywgMTI2LCAyNDYsIDMwLCAzMSwgMTYsIDI0MCwgMTc1LCAyNDYsIDMwLCAzMSwgMTYsIDI0MCwgCisgICAgMTc1LCAyNDYsIDMxLCAyMTksIDIxOCwgMjUxLCAwLCAzMSwgMTYsIDI0MCwgMTc1LCAyNDYsIDMxLCAyMTksIDIxOCwgMjQ4LCAKKyAgICAyMTEsIDMxLCAxNiwgMjQyLCA0NywgMjQ2LCAyOSwgMzEsIDE2LCAyNDIsIDQ3LCAyNDYsIDI4LCAzMSwgMTYsIDIyMywgCisgICAgMjI2LCAyMjUsIDE5LCAyMTYsIDg1LCAzMSwgMTYsIDUyLCAyMTMsIDU2LCAzMSwgMTYsIDUyLCAyMzksIDIxNiwgMzEsIDE2LCAKKyAgICAyMzksIDIxNywgMjA2LCAyMjQsIDMxLCAxNiwgMjM5LCAyMTcsIDI0MiwgNzAsIDMxLCAxNiwgMjIzLCA2NiwgMjA2LCAyMjQsIAorICAgIDMxLCAxNiwgMjIzLCA2NiwgMjQyLCA3MCwgMzEsIDE2LCAyMTMsIDU3LCAyMDYsIDIyNCwgMzEsIDE2LCAyMTMsIDU3LCAKKyAgICAyNDIsIDcwLCAzMSwgMTYsIDIxNywgNTYsIDE0MywgMjEzLCA1NiwgMzEsIDE2LCAyMTcsIDU2LCAxNDMsIDIzOSwgMjE2LCAKKyAgICAzMSwgMTYsIDI0NSwgMjMwLCAyMDgsIDIyMSwgMzEsIDE2LCAyNDUsIDc4LCAyMDgsIDIyMSwgMzEsIDE2LCAyMTksIDIxOCwgCisgICAgMjUxLCAwLCAzMSwgMTYsIDIxOSwgMjE4LCAyNDgsIDIxMSwgMzEsIDE2LCAyMTcsIDM3LCAyNTEsIDAsIDMxLCAxNiwgMjE3LCAKKyAgICAzNywgMjQ4LCAyMTEsIDMxLCAxNiwgMjIzLCAyMjksIDIxNiwgODUsIDMxLCAxNiwgMjA0LCAzMSwgMjE2LCA4NSwgMzEsIAorICAgIDE2LCAxNjIsIDIxNiwgODUsIDMxLCAxNiwgMjE3LCA1NiwgMjE2LCA4NSwgMzEsIDE2LCAyNDEsIDEzOSwgMjE2LCA4NSwgCisgICAgMzEsIDE2LCAyMTIsIDgxLCAyMTYsIDg1LCAzMSwgMTYsIDIwOSwgNTEsIDIxNiwgODUsIDMxLCAxNiwgMjEyLCA3MywgMjE2LCAKKyAgICA4NSwgMzEsIDE2LCAxMTgsIDIzNiwgMTIsIDIwNywgMTQ5LCAyMTYsIDg1LCAzMSwgMTYsIDIwMywgMTk3LCAyMjEsIDE1NiwgCisgICAgMzEsIDE2LCA5MSwgMjIxLCAxNTYsIDMxLCAxNiwgMjQ2LCA2MiwgMjAzLCAxOTcsIDIyMSwgMTU2LCAzMSwgMTYsIDUxLCAKKyAgICAyMjEsIDE1NywgMjA0LCAzMywgMzEsIDE2LCA1MSwgMjIxLCAxNTcsIDI0OCwgNDMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAKKyAgICAxNTcsIDExMiwgMjA0LCAzMywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgMTEyLCAyNDgsIDQzLCAzMSwgMTYsIDIwOCwgCisgICAgODYsIDIyMSwgMTU3LCA0OSwgMjA0LCAzMywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgNDksIDI0OCwgNDMsIDMxLCAKKyAgICAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDUwLCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCA1MCwgMjQ4LCAKKyAgICA0MywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgMTIxLCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCAKKyAgICAxMjEsIDI0OCwgNDMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDExMiwgNTAsIDIwNCwgMzMsIDMxLCAxNiwgMjA4LCAKKyAgICA4NiwgMjIxLCAxNTcsIDExMiwgNTAsIDI0OCwgNDMsIDMxLCAxNiwgMjI0LCAzMCwgMjIxLCAxNTcsIDIwNCwgMzMsIDMxLCAKKyAgICAxNiwgMjI0LCAzMCwgMjIxLCAxNTcsIDI0OCwgNDMsIDMxLCAxNiwgMjA4LCA4MywgMjIxLCAxNTcsIDEyMSwgMjA0LCAzMywgCisgICAgMzEsIDE2LCAyMDgsIDgzLCAyMjEsIDE1NywgMTIxLCAyNDgsIDQzLCAzMSwgMTYsIDIxOSwgNzcsIDIyMSwgMTU2LCAzMSwgCisgICAgMTYsIDIwNSwgMTgzLCAyMjEsIDE1NiwgMzEsIDE2LCAyMjEsIDE1NywgMjQ4LCA0MywgMzEsIDE2LCAyMjEsIDQ5LCAyMjEsIAorICAgIDE1NiwgMzEsIDE2LCAyNDYsIDEsIDIyMSwgMTU3LCAyMDQsIDMzLCAzMSwgMTYsIDI0NiwgMSwgMjIxLCAxNTcsIDI0OCwgCisgICAgNDMsIDMxLCAxNiwgMjQ3LCAyMTQsIDMxLCAxNiwgMjA0LCAzMSwgMjIxLCAxNjAsIDMxLCAxNiwgMTYyLCAyMjEsIDE2MCwgCisgICAgMzEsIDE2LCAyMTcsIDU2LCAyMjEsIDE2MCwgMzEsIDE2LCAyNDEsIDEzOSwgMjIxLCAxNjAsIDMxLCAxNiwgMjEyLCA4MSwgCisgICAgMjIxLCAxNjAsIDMxLCAxNiwgMjA5LCA1MSwgMjIxLCAxNjAsIDMxLCAxNiwgMjEyLCA3MywgMjIxLCAxNjAsIDMxLCAxNiwgCisgICAgMTE4LCAyMzYsIDEyLCAyMDcsIDE0OSwgMjIxLCAxNjAsIDMxLCAxNiwgMzksIDIxMSwgNzcsIDMxLCAxNiwgMzksIDIxMSwgCisgICAgMTg0LCAyMTEsIDc3LCAzMSwgMTYsIDM5LCAyMDgsIDk0LCAzMSwgMTYsIDM5LCAyMDgsIDkzLCAzMSwgMTYsIDM5LCAyMDgsIAorICAgIDkyLCAzMSwgMTYsIDI0MCwgMCwgMjA4LCA5NCwgMzEsIDE2LCAyNDAsIDAsIDIwOCwgOTMsIDMxLCAxNiwgMjQwLCAwLCAKKyAgICAyMDgsIDkyLCAzMSwgMTYsIDM5LCAyNTAsIDMxLCAyNDMsIDg1LCAzMSwgMTYsIDM5LCAyMzksIDIyNCwgMzEsIDE2LCAzOSwgCisgICAgMjM5LCAyMjMsIDMxLCAxNiwgMzksIDIzOSwgMjIyLCAzMSwgMTYsIDM5LCAyMzksIDIyMSwgMzEsIDE2LCAzOSwgMjM5LCAKKyAgICAyMjAsIDMxLCAxNiwgMjQ4LCAxNDIsIDI0OCwgMTU5LCAzMSwgMTYsIDI0MSwgODQsIDI0OCwgMTU5LCAzMSwgMTYsIDI0OCwgCisgICAgMTQyLCAyMDgsIDI1MCwgMzEsIDE2LCAyNDEsIDg0LCAyMDgsIDI1MCwgMzEsIDE2LCAyNDgsIDE0MiwgMjEyLCAzNywgMzEsIAorICAgIDE2LCAyNDEsIDg0LCAyMTIsIDM3LCAzMSwgMTYsIDI0OCwgMTQyLCAyMTgsIDE3NCwgMzEsIDE2LCAyNDEsIDg0LCAyMTgsIAorICAgIDE3NCwgMzEsIDE2LCAzOSwgMjUxLCAxMzgsIDMxLCAxNiwgMzksIDIxMSwgMTA1LCAzMSwgMTYsIDM5LCAyMDksIDE0MCwgCisgICAgMzEsIDE2LCAzOSwgMjExLCAxMDYsIDMxLCAxNiwgMzksIDIyNSwgOTYsIDMxLCAxNiwgMzksIDIyNSwgOTUsIDMxLCAxNiwgCisgICAgMzksIDI1MSwgMTM3LCAzMSwgMTYsIDM5LCAyMjcsIDIsIDMxLCAxNiwgMjUwLCAxMDAsIDIwNiwgMjI0LCAzMSwgMTYsIAorICAgIDI1MCwgMTAwLCAyNDIsIDcwLCAzMSwgMTYsIDM5LCAyNDMsIDEwMCwgMzEsIDE2LCAzOSwgMjE1LCAyNDksIDMxLCAxNiwgCisgICAgMzksIDIzOSwgMjA2LCAzMSwgMTYsIDM5LCAyMTIsIDMzLCAzMSwgMTYsIDM5LCAyNDgsIDEyMCwgMzEsIDE2LCAzOSwgNTIsIAorICAgIDIwOCwgMTUwLCAzMSwgMTYsIDM5LCAyMDgsIDcwLCAyMDgsIDE1MCwgMzEsIDE2LCAyMTUsIDI1NCwgMzEsIDE2LCAyMTEsIAorICAgIDAsIDMxLCAxNiwgMjAyLCAxNTksIDMxLCAxNiwgMjE4LCAxNjYsIDMxLCAxNiwgMjI0LCAyMDYsIDMxLCAxNiwgMjM5LCAKKyAgICAxNTUsIDMxLCAxNiwgMjQ1LCAxNDAsIDMxLCAxNiwgMjQ0LCA2MiwgMzEsIDE2LCAyMzgsIDE0LCAyMjEsIDE2MSwgMjEyLCAKKyAgICA1NywgMzEsIDE2LCAyMzgsIDE0LCAyMjEsIDE2MSwgMjIxLCAxOTIsIDIxMiwgNTcsIDMxLCAxNiwgMjA4LCAxMjAsIDMxLCAKKyAgICAxNiwgMjA3LCAxNzUsIDMxLCAxNiwgMjMwLCAyMzksIDIwNywgMTc1LCAzMSwgMTYsIDIwNywgMTc2LCAyMTIsIDU3LCAzMSwgCisgICAgMTYsIDIwNywgMTc2LCAyMDYsIDIyNCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAzMSwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAKKyAgICAyOCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyNywgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyNiwgMzEsIDE2LCAyMTksIAorICAgIDIzNCwgMjExLCAyNSwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyNCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyMywgMzEsIAorICAgIDE2LCAyMTksIDIzNCwgMjExLCAyMiwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyMSwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAKKyAgICAzMCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyOSwgMzEsIDE2LCAyMzcsIDc1LCAzMSwgMTYsIDIyMiwgMjM4LCAzMSwgMTYsIAorICAgIDI0MSwgODQsIDc2LCAyMTEsIDY3LCAzMSwgMTYsIDI0NCwgNTUsIDIxMiwgNTcsIDMxLCAxNiwgMzksIDEyMSwgMjQ3LCAKKyAgICAyNDAsIDMxLCAxNiwgMzksIDExMiwgMjQ3LCAyNDAsIDMxLCAxNiwgMzksIDIzNywgODgsIDMxLCAxNiwgMzksIDIxMiwgMjMsIAorICAgIDIxOCwgOTksIDMxLCAxNiwgMjE5LCAyOCwgODIsIDMxLCAxNiwgMjE5LCAyOCwgMTEyLCA4MiwgMzEsIDE2LCAxNjIsIDIxOSwgCisgICAgMjgsIDgyLCAzMSwgMTYsIDIzOCwgNDcsIDIwNiwgMjI0LCAzMSwgMTYsIDIzOCwgNDcsIDI0MiwgNzAsIDMxLCAxNiwgMywgCisgICAgMjM5LCAyNTUsIDMxLCAxNiwgMjQ0LCAxNjgsIDMxLCAxNiwgMjQ0LCAxNjksIDI1MSwgMTQsIDMxLCAxNiwgMjI1LCA2NSwgCisgICAgMzEsIDE2LCAyMjcsIDIwLCAzMSwgMTYsIDI0NywgMjExLCAzMSwgMTYsIDIxMywgMTQ3LCAyMDQsIDMzLCAzMSwgMTYsIAorICAgIDIxMywgMTQ3LCAyNDgsIDQzLCAzMSwgMTYsIDIyNCwgMTA2LCAzMSwgMTYsIDIyNCwgMTA3LCAyNDgsIDQzLCAzMSwgMTYsIAorICAgIDIxMywgMTQxLCAyMDQsIDMzLCAzMSwgMTYsIDIxMywgMTQxLCAyNDgsIDQzLCAzMSwgMTYsIDIzOSwgOTMsIDIwNCwgMzMsIAorICAgIDMxLCAxNiwgMjM5LCA5MywgMjQ4LCA0MywgMzEsIDE2LCAyMjcsIDIxLCAyMTgsIDI0NCwgMjE2LCA4NSwgMzEsIDE2LCAKKyAgICAyMjcsIDIxLCAyMzEsIDU0LCAyMTYsIDg1LCAzMSwgMTYsIDI0NywgMjEyLCAyMTYsIDg1LCAzMSwgMTYsIDIxMywgMTQ3LCAKKyAgICAyMTYsIDg1LCAzMSwgMTYsIDIyNCwgMTA3LCAyMTYsIDg1LCAzMSwgMTYsIDIxMywgMTQxLCAyMTYsIDg1LCAzMSwgMTYsIAorICAgIDIwOSwgMTU0LCAyMTgsIDI0MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMTgsIDI0MywgMzEsIDE2LCAyMDksIDE1NCwgMjE4LCAKKyAgICAyNDIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1MywgMzEsIDE2LCAyMDksIDE1NCwgMjE4LCAyNDIsIDI0NSwgMTA0LCAKKyAgICAyMTcsIDIxNiwgMjE4LCAyNDQsIDI0MywgMTgxLCAzMSwgMTYsIDIwOSwgMTU0LCAyMzEsIDUyLCAyNDUsIDEwNCwgMjE3LCAKKyAgICAyMTYsIDIxOCwgMjQzLCAzMSwgMTYsIDIwOSwgMTU0LCAyMzEsIDUyLCAyNDUsIDEwNCwgMjE3LCAyMTYsIDIzMSwgNTMsIAorICAgIDMxLCAxNiwgMjA5LCAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1NCwgMjQzLCAxODEsIDMxLCAxNiwgCisgICAgMjA5LCAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1NCwgMjQzLCAxODAsIDMxLCAxNiwgMjA5LCAKKyAgICAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1NCwgMjQzLCAxNzksIDMxLCAxNiwgMjQ1LCAxMzMsIAorICAgIDMxLCAxNiwgMjM3LCAyNDMsIDI0NywgMTI2LCAyNDYsIDMwLCAzMSwgMTYsIDIzNywgMjQzLCAyNDAsIDE3NSwgMjQ2LCAzMCwgCisgICAgMzEsIDE2LCA1MSwgMjQ5LCAyNTUsIDMxLCAxNiwgMjA1LCAyMDMsIDMxLCAxNiwgMjE4LCA2NiwgMzEsIDE2LCAyNDYsIDIxLCAKKyAgICAzMSwgMTYsIDIxNCwgMjAwLCAzMSwgMTYsIDI0NiwgMjUsIDMxLCAxNiwgMjA4LCAxMzgsIDMxLCAxNiwgMjE4LCAzNiwgMzEsIAorICAgIDE2LCAyMTgsIDM3LCAyMzksIDIwOSwgMzEsIDE2LCAyMTQsIDIwMSwgMjM5LCAyMDksIDMxLCAxNiwgMjA4LCAxMzksIDIxNiwgCisgICAgODIsIDMxLCAxNiwgMjE4LCAyMjUsIDIxMCwgMjQ3LCAzMSwgMTYsIDIyOSwgOTAsIDI0NywgMTI2LCAyNDYsIDMwLCAzMSwgCisgICAgMTYsIDIyOSwgOTAsIDI0MSwgODQsIDc2LCAyMTgsIDE1OSwgMzEsIDE2LCAyMjksIDkwLCA0NiwgMjIxLCAxNjAsIDMxLCAKKyAgICAxNiwgMjI5LCA5MCwgMjE2LCAxNTAsIDgyLCAzMSwgMTYsIDIyOSwgOTAsIDIwNCwgMzEsIDIyMSwgMTYwLCAzMSwgMTYsIAorICAgIDIyOSwgOTAsIDE2MiwgMjIxLCAxNjAsIDMxLCAxNiwgMjI5LCA5MCwgMjE3LCA1NiwgMjIxLCAxNjEsIDIxMSwgNzgsIDI0MiwgCisgICAgNzAsIDMxLCAxNiwgMjI5LCA5MCwgMjE3LCA1NiwgMjIxLCAxNjEsIDIxMSwgNzgsIDIwNiwgMjI0LCAzMSwgMTYsIDIyOSwgCisgICAgOTAsIDI0MSwgMTM5LCAyMjEsIDE2MSwgMjExLCA3OCwgMjQyLCA3MCwgMzEsIDE2LCAyMjksIDkwLCAyNDEsIDEzOSwgMjIxLCAKKyAgICAxNjEsIDIxMSwgNzgsIDIwNiwgMjI0LCAzMSwgMTYsIDIyOSwgOTAsIDIzOSwgMjE3LCA1NCwgMzAsIDIwNSwgMTg4LCAyMjEsIAorICAgIDE2NCwgMjEwLCAxNDgsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTM3LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAKKyAgICAyMTAsIDEyNywgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMjAsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgCisgICAgMTEyLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwNiwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDUsIAorICAgIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTA0LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwMywgMzAsIAorICAgIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDcsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQ2LCAzMCwgMjA1LCAKKyAgICAxODgsIDIyMSwgMTY0LCAyMTAsIDE0NSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDQsIDMwLCAyMDUsIDE4OCwgCisgICAgMjIxLCAxNjQsIDIxMCwgMTQzLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDE0MiwgMzAsIDIwNSwgMTg4LCAyMjEsIAorICAgIDE2NCwgMjEwLCAxNDEsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQwLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAKKyAgICAyMTAsIDEzOSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzgsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgCisgICAgMTM2LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzNSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzQsIAorICAgIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTMzLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzMiwgMzAsIAorICAgIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMTEsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTEwLCAzMCwgMjA1LCAKKyAgICAxODgsIDIyMSwgMTY0LCAyMTAsIDEwOSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDgsIDMwLCAyMDUsIDE4OCwgCisgICAgMjIxLCAxNjQsIDIxMCwgMTA3LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxNDgsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAKKyAgICAyMTAsIDEzNywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTIwLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTIsIAorICAgIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEwNSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA0LCAzMCwgMjMxLCAKKyAgICA1LCAyMjEsIDE2NCwgMjEwLCAxNDYsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDE0NSwgMzAsIDIzMSwgNSwgMjIxLCAKKyAgICAxNjQsIDIxMCwgMTQ0LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxNDMsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIAorICAgIDE0MCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTM5LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMzgsIDMwLCAKKyAgICAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEzMywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTMyLCAzMCwgMjMxLCA1LCAKKyAgICAyMjEsIDE2NCwgMjEwLCAxMzEsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEzMCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIAorICAgIDIxMCwgMTI5LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjgsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEyNiwgCisgICAgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTI1LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjQsIDMwLCAyMzEsIAorICAgIDUsIDIyMSwgMTY0LCAyMTAsIDEyMywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTIyLCAzMCwgMjMxLCA1LCAyMjEsIAorICAgIDE2NCwgMjEwLCAxMjEsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExOSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgCisgICAgMTE4LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTcsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExNiwgMzAsIAorICAgIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTE1LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTQsIDMwLCAyMzEsIDUsIAorICAgIDIyMSwgMTY0LCAyMTAsIDExMywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTExLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgCisgICAgMjEwLCAxMTAsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEwOSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA4LCAKKyAgICAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMDcsIDM5LCAzMCwgMzEsIDIwOCwgNjYsIDM5LCAzMCwgMzEsIDIwOSwgCisgICAgMTI0LCAzOSwgMzAsIDMxLCAyMTgsIDI1MywgMzAsIDMxLCAyMjcsIDIwNCwgMjI0LCA0NSwgMzUsIDI0MSwgMTc5LCAyNDMsIAorICAgIDE5NSwgMzUsIDIzNywgNTAsIDI0MSwgMTc5LCAyNDMsIDE5NSwgMzUsIDIzNiwgMTYsIDI0MSwgMTc5LCAyNDMsIDE5NSwgCisgICAgMzUsIDI0MSwgMTc4LCAyMzcsIDUxLCAyNDMsIDE5NSwgMzUsIDI0MSwgMTc4LCAyMzYsIDE1LCAyNDMsIDE5NSwgMzUsIAorICAgIDI0MSwgMTc5LCAyMDksIDEyNiwgMzUsIDI0NiwgMjE3LCAyMDksIDEyNiwgMzUsIDIzOSwgMTAyLCAyNDYsIDYxLCAyMDksIAorICAgIDEyNiwgMzUsIDIyNCwgOTgsIDIwOSwgMTI2LCAzNSwgMjQ4LCAyMjEsIDIwOSwgMTI2LCAzNSwgMjI5LCAxOTUsIDIxMiwgCisgICAgMzYsIDIwOSwgMTI2LCAzNSwgMjQ1LCAxODUsIDIwOSwgMTI2LCAzNSwgMjUwLCA3NywgMjA5LCAxMjYsIDM1LCAyMTksIAorICAgIDI1MCwgMjA5LCAxMjYsIDM1LCAyNDcsIDIyMSwgMjE5LCAyMTEsIDIwOSwgMTI2LCAzNSwgMjQ0LCA1NywgMjE5LCAyNDUsIAorICAgIDI0MywgMTQ4LCAyMDksIDEyNiwgMzUsIDI0MywgMTQ1LCAyMDksIDEyNiwgMzUsIDIwMiwgMjI1LCAyMDksIDEyNiwgMzUsIAorICAgIDIzMSwgNDAsIDIwOSwgMTI2LCAzNSwgMjE5LCA3LCAyMDksIDEyNiwgMzUsIDIxNiwgMTU3LCAyMDksIDEyNiwgMzUsIDI0NSwgCisgICAgMTk3LCAyMDksIDEyNiwgMzUsIDIzNiwgMTI3LCAyNDksIDI1LCAyMDksIDEyNiwgMzUsIDIwNCwgMTAzLCAyMDksIDEyNiwgCisgICAgMzUsIDIzOSwgMTgxLCAyMDksIDEyNiwgMzUsIDI1MSwgMTEyLCAyMDksIDEyNiwgMzUsIDIxNiwgMTE0LCAyMDksIDEyNiwgCisgICAgMzUsIDIxNiwgODksIDIwOSwgMTI2LCAzNSwgMjQxLCAxNzcsIDIwOSwgMTI2LCAzNSwgMjMwLCA4NSwgMjA5LCAxMjYsIDM1LCAKKyAgICAyNDUsIDE5MiwgMjA5LCAxMjYsIDM1LCAyNDEsIDgzLCAyMDksIDEyNiwgMzUsIDI0MiwgMTUsIDIwOSwgMTI2LCAzNSwgCisgICAgMjQ2LCAxODYsIDIwOSwgMTI2LCAzNSwgMjQ0LCA2NywgMjA5LCAxMjYsIDM1LCAyNiwgMjE2LCA4OCwgMjA5LCAxMjYsIDM1LCAKKyAgICAyMTksIDE2MCwgMjA5LCAxMjYsIDM1LCAyMjcsIDIwOCwgMjA5LCAxMjYsIDM1LCAyNDYsIDE0LCAyMDksIDEyNiwgMzUsIAorICAgIDIyOSwgODAsIDIwOSwgMTI2LCAzNSwgMjM4LCAyMTQsIDIwOSwgMTI2LCAzNSwgMjExLCA0MywgMjA5LCAxMjYsIDM1LCAKKyAgICAyMTcsIDE2OCwgMjA5LCAxMjYsIDM1LCAyMzksIDEwMSwgMjA5LCAxMjYsIDM1LCAyMTYsIDkwLCAyMDksIDEyNiwgMzUsIAorICAgIDIyNywgMjQ3LCAyMTksIDI0NSwgMjI0LCA3OCwgMjA5LCAxMjYsIDM1LCAyMTYsIDg2LCAyMDksIDEyNiwgMzUsIDIzOCwgCisgICAgMzMsIDIwOCwgMTczLCAyMjUsIDMsIDIwOSwgMTI2LCAzNSwgMjQxLCA4NSwgMjA5LCAxMjYsIDM1LCAyMTEsIDU2LCAyMDksIAorICAgIDEyNiwgMzUsIDIzNywgMjQ1LCAyMDksIDEyNiwgMzUsIDI0MSwgNzYsIDIwOSwgMTI2LCAzNSwgMjE5LCA1MCwgMjA5LCAKKyAgICAxMjYsIDM1LCAyMTUsIDI0MiwgMjA5LCAxMjYsIDM1LCAyMzksIDIwNywgMjA5LCAxMjYsIDM1LCAyMDYsIDY0LCAyMTksIAorICAgIDI0NSwgMjA0LCA4NCwgMjA5LCAxMjYsIDM1LCAyNDUsIDIwMiwgMjA5LCAxMjYsIDM1LCAyMjUsIDE4LCAyMDksIDEyNiwgCisgICAgMzUsIDI0MCwgMjQ1LCAyMDksIDEyNiwgMzUsIDIwNiwgMjM0LCAyMDksIDEyNiwgMzUsIDI0MywgMTgyLCAyMDksIDEyNiwgCisgICAgMzUsIDI0NiwgMTYsIDIyNCwgNywgMjA5LCAxMjYsIDM1LCAyMzcsIDIyMiwgMjA5LCAxMjYsIDM1LCAyMzgsIDIxNSwgMjMxLCAKKyAgICA0OSwgMjA5LCAxMjYsIDM1LCAyMjUsIDczLCAyMDksIDEyNiwgMzUsIDI1MSwgMTMzLCAyMDksIDEyNiwgMzUsIDI0MSwgCisgICAgMTAxLCAyMDksIDEyNiwgMzUsIDI0MiwgNzQsIDIwOSwgMTI2LCAzNSwgMjA0LCA4MiwgMjA5LCAxMjYsIDM1LCAyMTIsIAorICAgIDExNSwgMjA5LCAxMjYsIDM1LCAyMzEsIDE0LCAyMDksIDEyNiwgMzUsIDI0NCwgMjUsIDIwOSwgMTI2LCAzNSwgMjQ0LCAKKyAgICAxNDgsIDIwOSwgMTI2LCAzNSwgMjQzLCAxNzgsIDIwOSwgMTI2LCAzNSwgMjQwLCAyMDksIDIwOSwgMTI2LCAzNSwgMjEzLCAKKyAgICAxMDQsIDIwOSwgMTI2LCAzNSwgMjExLCA2MCwgMjA5LCAxMjYsIDM1LCAyMzcsIDkwLCAyMDksIDEyNiwgMzUsIDI0NSwgCisgICAgMjI2LCAyMDksIDEyNiwgMzUsIDI0NiwgMTEsIDIwOSwgMTI2LCAzNSwgMjQwLCA4NywgMjA5LCAxMjYsIDM1LCAyNTEsIDc2LCAKKyAgICAyMDksIDEyNiwgMzUsIDI0NSwgMjI1LCAyMDksIDEyNiwgMzUsIDIyMCwgMzIsIDIwOSwgOTMsIDIwNiwgNDEsIDIwOSwgCisgICAgMTI2LCAzNSwgMjQzLCAyMDQsIDIwOSwgMTI2LCAzNSwgMjI4LCAxMDEsIDIwOSwgMTI2LCAzNSwgMjM5LCAxNTAsIDI0NSwgCisgICAgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxMDUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxMDgsIAorICAgIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxNDcsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAKKyAgICAxNDksIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxNzAsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIAorICAgIDE3LCAxOTUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAyMTMsIDExMSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAKKyAgICAyMDYsIDIzNiwgMTcsIDE5OSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDIyMiwgNjMsIDI0NSwgMTUzLCAKKyAgICAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxMDUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxMDgsIDI0NSwgCisgICAgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxNDcsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxNDksIAorICAgIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxNzAsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAKKyAgICAxOTUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAyMTMsIDExMSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIAorICAgIDE0OCwgMTcsIDE5OSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDIyMiwgNjMsIDEzLCAyNiwgNiwgNjMsIAorICAgIDEzLCAyNiwgNiwgMjQ5LCAyNTUsIDEzLCAyNiwgNiwgMjQ3LCAxMjUsIDEzLCAyNiwgNiwgMjQ1LCA1MSwgMTMsIDI2LCA2LCAKKyAgICA3NCwgMTMsIDI2LCA2LCAyNDAsIDE3NCwgMTMsIDI2LCA2LCAyMzksIDc1LCAxMywgMjYsIDYsIDIzNywgMTcxLCAxMywgMjYsIAorICAgIDYsIDc1LCAxMywgMjYsIDYsIDIzMCwgMTg0LCAxMywgMjYsIDYsIDIzMCwgNTQsIDEzLCAyNiwgNiwgMTU5LCAxMywgMjYsIAorICAgIDYsIDIyNiwgMTg1LCAxMywgMjYsIDYsIDIyMywgMTYzLCAxMywgMjYsIDYsIDc4LCAxMywgMjYsIDYsIDIxOSwgMTg0LCAxMywgCisgICAgMjYsIDYsIDIxNywgMTM0LCAxMywgMjYsIDYsIDE0NiwgMTMsIDI2LCA2LCAxOTQsIDEzLCAyNiwgNiwgMjEwLCA2OSwgMTMsIAorICAgIDI2LCA2LCA2OCwgMTMsIDI2LCA2LCAyMDYsIDE2NCwgMTMsIDI2LCA2LCAyMDQsIDE0NCwgMTMsIDI2LCA2LCAyMDMsIDE5NiwgCisgICAgMTMsIDI2LCA2LCAyMDMsIDEyNCwgMTMsIDI2LCA2LCAyMDIsIDE1OSwgMTMsIDI2LCA1LCA2MywgMTMsIDI2LCA1LCAyNDksIAorICAgIDI1NSwgMTMsIDI2LCA1LCAyNDcsIDEyNSwgMTMsIDI2LCA1LCAyNDUsIDUxLCAxMywgMjYsIDUsIDc0LCAxMywgMjYsIDUsIAorICAgIDI0MCwgMTc0LCAxMywgMjYsIDUsIDIzOSwgNzUsIDEzLCAyNiwgNSwgMjM3LCAxNzEsIDEzLCAyNiwgNSwgNzUsIDEzLCAyNiwgCisgICAgNSwgMjMwLCAxODQsIDEzLCAyNiwgNSwgMjMwLCA1NCwgMTMsIDI2LCA1LCAxNTksIDEzLCAyNiwgNSwgMjI2LCAxODUsIDEzLCAKKyAgICAyNiwgNSwgMjIzLCAxNjMsIDEzLCAyNiwgNSwgNzgsIDEzLCAyNiwgNSwgMjE5LCAxODQsIDEzLCAyNiwgNSwgMjE3LCAxMzQsIAorICAgIDEzLCAyNiwgNSwgMTQ2LCAxMywgMjYsIDUsIDE5NCwgMTMsIDI2LCA1LCAyMTAsIDY5LCAxMywgMjYsIDUsIDY4LCAxMywgCisgICAgMjYsIDUsIDIwNiwgMTY0LCAxMywgMjYsIDUsIDIwNCwgMTQ0LCAxMywgMjYsIDUsIDIwMywgMTk2LCAxMywgMjYsIDUsIAorICAgIDIwMywgMTI0LCAxMywgMjYsIDUsIDIwMiwgMTU5LCAxMywgMzcsIDYsIDYzLCAxMywgMzcsIDYsIDI0OSwgMjU1LCAxMywgCisgICAgMzcsIDYsIDI0NywgMTI1LCAxMywgMzcsIDYsIDI0NSwgNTEsIDEzLCAzNywgNiwgNzQsIDEzLCAzNywgNiwgMjQwLCAxNzQsIAorICAgIDEzLCAzNywgNiwgMjM5LCA3NSwgMTMsIDM3LCA2LCAyMzcsIDE3MSwgMTMsIDM3LCA2LCA3NSwgMTMsIDM3LCA2LCAyMzAsIAorICAgIDE4NCwgMTMsIDM3LCA2LCAyMzAsIDU0LCAxMywgMzcsIDYsIDE1OSwgMTMsIDM3LCA2LCAyMjYsIDE4NSwgMTMsIDM3LCA2LCAKKyAgICAyMjMsIDE2MywgMTMsIDM3LCA2LCA3OCwgMTMsIDM3LCA2LCAyMTksIDE4NCwgMTMsIDM3LCA2LCAyMTcsIDEzNCwgMTMsIAorICAgIDM3LCA2LCAxNDYsIDEzLCAzNywgNiwgMTk0LCAxMywgMzcsIDYsIDIxMCwgNjksIDEzLCAzNywgNiwgNjgsIDEzLCAzNywgNiwgCisgICAgMjA2LCAxNjQsIDEzLCAzNywgNiwgMjA0LCAxNDQsIDEzLCAzNywgNiwgMjAzLCAxOTYsIDEzLCAzNywgNiwgMjAzLCAxMjQsIAorICAgIDEzLCAzNywgNiwgMjAyLCAxNTksIDEzLCAzNywgNSwgNjMsIDEzLCAzNywgNSwgMjQ5LCAyNTUsIDEzLCAzNywgNSwgMjQ3LCAKKyAgICAxMjUsIDEzLCAzNywgNSwgMjQ1LCA1MSwgMTMsIDM3LCA1LCA3NCwgMTMsIDM3LCA1LCAyNDAsIDE3NCwgMTMsIDM3LCA1LCAKKyAgICAyMzksIDc1LCAxMywgMzcsIDUsIDc1LCAxMywgMzcsIDUsIDIzMCwgMTg0LCAxMywgMzcsIDUsIDIzMCwgNTQsIDEzLCAzNywgCisgICAgNSwgMTU5LCAxMywgMzcsIDUsIDIyNiwgMTg1LCAxMywgMzcsIDUsIDIyMywgMTYzLCAxMywgMzcsIDUsIDc4LCAxMywgMzcsIAorICAgIDUsIDIxOSwgMTg0LCAxMywgMzcsIDUsIDIxNywgMTM0LCAxMywgMzcsIDUsIDE0NiwgMTMsIDM3LCA1LCAxOTQsIDEzLCAzNywgCisgICAgNSwgMjEwLCA2OSwgMTMsIDM3LCA1LCA2OCwgMTMsIDM3LCA1LCAyMDYsIDE2NCwgMTMsIDM3LCA1LCAyMDQsIDE0NCwgMTMsIAorICAgIDM3LCA1LCAyMDMsIDE5NiwgMTMsIDM3LCA1LCAyMDMsIDEyNCwgMTMsIDM3LCA1LCAyMDIsIDE1OSwgMTMsIDI2LCAzNywgNiwgCisgICAgNjMsIDEzLCAyNiwgMzcsIDYsIDI0OSwgMjU1LCAxMywgMjYsIDM3LCA2LCAyNDcsIDEyNSwgMTMsIDI2LCAzNywgNiwgMjQ1LCAKKyAgICA1MSwgMTMsIDI2LCAzNywgNiwgNzQsIDEzLCAyNiwgMzcsIDYsIDI0MCwgMTc0LCAxMywgMjYsIDM3LCA2LCAyMzksIDc1LCAKKyAgICAxMywgMjYsIDM3LCA2LCAyMzcsIDE3MSwgMTMsIDI2LCAzNywgNiwgNzUsIDEzLCAyNiwgMzcsIDYsIDIzMCwgMTg0LCAxMywgCisgICAgMjYsIDM3LCA2LCAyMzAsIDU0LCAxMywgMjYsIDM3LCA2LCAxNTksIDEzLCAyNiwgMzcsIDYsIDIyNiwgMTg1LCAxMywgMjYsIAorICAgIDM3LCA2LCAyMjMsIDE2MywgMTMsIDI2LCAzNywgNiwgNzgsIDEzLCAyNiwgMzcsIDYsIDIxOSwgMTg0LCAxMywgMjYsIDM3LCAKKyAgICA2LCAyMTcsIDEzNCwgMTMsIDI2LCAzNywgNiwgMTQ2LCAxMywgMjYsIDM3LCA2LCAxOTQsIDEzLCAyNiwgMzcsIDYsIDIxMCwgCisgICAgNjksIDEzLCAyNiwgMzcsIDYsIDY4LCAxMywgMjYsIDM3LCA2LCAyMDYsIDE2NCwgMTMsIDI2LCAzNywgNiwgMjA0LCAxNDQsIAorICAgIDEzLCAyNiwgMzcsIDYsIDIwMywgMTk2LCAxMywgMjYsIDM3LCA2LCAyMDMsIDEyNCwgMTMsIDI2LCAzNywgNiwgMjAyLCAKKyAgICAxNTksIDEzLCAyNiwgMzcsIDUsIDYzLCAxMywgMjYsIDM3LCA1LCAyNDksIDI1NSwgMTMsIDI2LCAzNywgNSwgMjQ3LCAxMjUsIAorICAgIDEzLCAyNiwgMzcsIDUsIDI0NSwgNTEsIDEzLCAyNiwgMzcsIDUsIDc0LCAxMywgMjYsIDM3LCA1LCAyNDAsIDE3NCwgMTMsIAorICAgIDI2LCAzNywgNSwgMjM5LCA3NSwgMTMsIDI2LCAzNywgNSwgMjM3LCAxNzEsIDEzLCAyNiwgMzcsIDUsIDc1LCAxMywgMjYsIAorICAgIDM3LCA1LCAyMzAsIDE4NCwgMTMsIDI2LCAzNywgNSwgMjMwLCA1NCwgMTMsIDI2LCAzNywgNSwgMTU5LCAxMywgMjYsIDM3LCAKKyAgICA1LCAyMjYsIDE4NSwgMTMsIDI2LCAzNywgNSwgMjIzLCAxNjMsIDEzLCAyNiwgMzcsIDUsIDc4LCAxMywgMjYsIDM3LCA1LCAKKyAgICAyMTksIDE4NCwgMTMsIDI2LCAzNywgNSwgMjE3LCAxMzQsIDEzLCAyNiwgMzcsIDUsIDE0NiwgMTMsIDI2LCAzNywgNSwgCisgICAgMTk0LCAxMywgMjYsIDM3LCA1LCAyMTAsIDY5LCAxMywgMjYsIDM3LCA1LCA2OCwgMTMsIDI2LCAzNywgNSwgMjA2LCAxNjQsIAorICAgIDEzLCAyNiwgMzcsIDUsIDIwNCwgMTQ0LCAxMywgMjYsIDM3LCA1LCAyMDMsIDE5NiwgMTMsIDI2LCAzNywgNSwgMjAzLCAKKyAgICAxMjQsIDEzLCAyNiwgMzcsIDUsIDIwMiwgMTU5LCAxMywgMTMyLCA2LCA2MywgMTMsIDEzMiwgNiwgMjQ3LCAxMjUsIDEzLCAKKyAgICAxMzIsIDYsIDI0NSwgNTEsIDEzLCAxMzIsIDYsIDIzOSwgNzUsIDEzLCAxMzIsIDYsIDIzMCwgMTg0LCAxMywgMTMyLCA2LCAKKyAgICAyMzAsIDU0LCAxMywgMTMyLCA2LCAyMjMsIDE2MywgMTMsIDEzMiwgNiwgNzgsIDEzLCAxMzIsIDYsIDIxOSwgMTg0LCAxMywgCisgICAgMTMyLCA2LCAyMTcsIDEzNCwgMTMsIDEzMiwgNiwgMTk0LCAxMywgMTMyLCA2LCAyMTAsIDY5LCAxMywgMTMyLCA2LCA2OCwgCisgICAgMTMsIDEzMiwgNiwgMjA2LCAxNjQsIDEzLCAxMzIsIDYsIDIwNCwgMTQ0LCAxMywgMTMyLCA2LCAyMDMsIDE5NiwgMTMsIAorICAgIDEzMiwgNiwgMjAzLCAxMjQsIDEzLCAxMzIsIDYsIDIwMiwgMTU5LCAxMywgMTMyLCA1LCA2MywgMTMsIDEzMiwgNSwgMjQ5LCAKKyAgICAyNTUsIDEzLCAxMzIsIDUsIDI0NywgMTI1LCAxMywgMTMyLCA1LCAyNDUsIDUxLCAxMywgMTMyLCA1LCAyNDAsIDE3NCwgMTMsIAorICAgIDEzMiwgNSwgMjM3LCAxNzEsIDEzLCAxMzIsIDUsIDc1LCAxMywgMTMyLCA1LCAyMzAsIDE4NCwgMTMsIDEzMiwgNSwgMjMwLCAKKyAgICA1NCwgMTMsIDEzMiwgNSwgMTU5LCAxMywgMTMyLCA1LCAyMjYsIDE4NSwgMTMsIDEzMiwgNSwgMjIzLCAxNjMsIDEzLCAxMzIsIAorICAgIDUsIDIxOSwgMTg0LCAxMywgMTMyLCA1LCAyMTcsIDEzNCwgMTMsIDEzMiwgNSwgMTQ2LCAxMywgMTMyLCA1LCAxOTQsIDEzLCAKKyAgICAxMzIsIDUsIDIxMCwgNjksIDEzLCAxMzIsIDUsIDY4LCAxMywgMTMyLCA1LCAyMDYsIDE2NCwgMTMsIDEzMiwgNSwgMjA0LCAKKyAgICAxNDQsIDEzLCAxMzIsIDUsIDIwMywgMTk2LCAxMywgMTMyLCA1LCAyMDMsIDEyNCwgMTMsIDEzMiwgNSwgMjAyLCAxNTksIAorICAgIDEzLCAyNiwgMTMyLCA2LCA2MywgMTMsIDI2LCAxMzIsIDYsIDI0OSwgMjU1LCAxMywgMjYsIDEzMiwgNiwgMjQ3LCAxMjUsIAorICAgIDEzLCAyNiwgMTMyLCA2LCAyNDUsIDUxLCAxMywgMjYsIDEzMiwgNiwgNzQsIDEzLCAyNiwgMTMyLCA2LCAyNDAsIDE3NCwgCisgICAgMTMsIDI2LCAxMzIsIDYsIDIzOSwgNzUsIDEzLCAyNiwgMTMyLCA2LCAyMzcsIDE3MSwgMTMsIDI2LCAxMzIsIDYsIDc1LCAKKyAgICAxMywgMjYsIDEzMiwgNiwgMjMwLCAxODQsIDEzLCAyNiwgMTMyLCA2LCAyMzAsIDU0LCAxMywgMjYsIDEzMiwgNiwgMTU5LCAKKyAgICAxMywgMjYsIDEzMiwgNiwgMjI2LCAxODUsIDEzLCAyNiwgMTMyLCA2LCAyMjMsIDE2MywgMTMsIDI2LCAxMzIsIDYsIDc4LCAKKyAgICAxMywgMjYsIDEzMiwgNiwgMjE5LCAxODQsIDEzLCAyNiwgMTMyLCA2LCAyMTcsIDEzNCwgMTMsIDI2LCAxMzIsIDYsIDE0NiwgCisgICAgMTMsIDI2LCAxMzIsIDYsIDE5NCwgMTMsIDI2LCAxMzIsIDYsIDIxMCwgNjksIDEzLCAyNiwgMTMyLCA2LCA2OCwgMTMsIDI2LCAKKyAgICAxMzIsIDYsIDIwNiwgMTY0LCAxMywgMjYsIDEzMiwgNiwgMjA0LCAxNDQsIDEzLCAyNiwgMTMyLCA2LCAyMDMsIDE5NiwgMTMsIAorICAgIDI2LCAxMzIsIDYsIDIwMywgMTI0LCAxMywgMjYsIDEzMiwgNiwgMjAyLCAxNTksIDEzLCAyNiwgMTMyLCA1LCA2MywgMTMsIAorICAgIDI2LCAxMzIsIDUsIDI0OSwgMjU1LCAxMywgMjYsIDEzMiwgNSwgMjQ3LCAxMjUsIDEzLCAyNiwgMTMyLCA1LCAyNDUsIDUxLCAKKyAgICAxMywgMjYsIDEzMiwgNSwgNzQsIDEzLCAyNiwgMTMyLCA1LCAyNDAsIDE3NCwgMTMsIDI2LCAxMzIsIDUsIDIzOSwgNzUsIAorICAgIDEzLCAyNiwgMTMyLCA1LCAyMzcsIDE3MSwgMTMsIDI2LCAxMzIsIDUsIDc1LCAxMywgMjYsIDEzMiwgNSwgMjMwLCAxODQsIAorICAgIDEzLCAyNiwgMTMyLCA1LCAyMzAsIDU0LCAxMywgMjYsIDEzMiwgNSwgMTU5LCAxMywgMjYsIDEzMiwgNSwgMjI2LCAxODUsIAorICAgIDEzLCAyNiwgMTMyLCA1LCAyMjMsIDE2MywgMTMsIDI2LCAxMzIsIDUsIDc4LCAxMywgMjYsIDEzMiwgNSwgMjE5LCAxODQsIAorICAgIDEzLCAyNiwgMTMyLCA1LCAyMTcsIDEzNCwgMTMsIDI2LCAxMzIsIDUsIDE0NiwgMTMsIDI2LCAxMzIsIDUsIDE5NCwgMTMsIAorICAgIDI2LCAxMzIsIDUsIDIxMCwgNjksIDEzLCAyNiwgMTMyLCA1LCA2OCwgMTMsIDI2LCAxMzIsIDUsIDIwNiwgMTY0LCAxMywgCisgICAgMjYsIDEzMiwgNSwgMjA0LCAxNDQsIDEzLCAyNiwgMTMyLCA1LCAyMDMsIDE5NiwgMTMsIDI2LCAxMzIsIDUsIDIwMywgMTI0LCAKKyAgICAxMywgMjYsIDEzMiwgNSwgMjAyLCAxNTksIDEzLCAxNjYsIDYsIDYzLCAxMywgMTY2LCA2LCAyNDksIDI1NSwgMTMsIDE2NiwgCisgICAgNiwgMjQ1LCA1MSwgMTMsIDE2NiwgNiwgNzQsIDEzLCAxNjYsIDYsIDI0MCwgMTc0LCAxMywgMTY2LCA2LCAyMzksIDc1LCAKKyAgICAxMywgMTY2LCA2LCAyMzAsIDE4NCwgMTMsIDE2NiwgNiwgMjMwLCA1NCwgMTMsIDE2NiwgNiwgMTU5LCAxMywgMTY2LCA2LCAKKyAgICAyMjYsIDE4NSwgMTMsIDE2NiwgNiwgMjIzLCAxNjMsIDEzLCAxNjYsIDYsIDc4LCAxMywgMTY2LCA2LCAyMTksIDE4NCwgMTMsIAorICAgIDE2NiwgNiwgMjE3LCAxMzQsIDEzLCAxNjYsIDYsIDE5NCwgMTMsIDE2NiwgNiwgMjEwLCA2OSwgMTMsIDE2NiwgNiwgNjgsIAorICAgIDEzLCAxNjYsIDYsIDIwNiwgMTY0LCAxMywgMTY2LCA2LCAyMDQsIDE0NCwgMTMsIDE2NiwgNiwgMjAzLCAxOTYsIDEzLCAKKyAgICAxNjYsIDYsIDIwMywgMTI0LCAxMywgMTY2LCA1LCA2MywgMTMsIDE2NiwgNSwgMjQ5LCAyNTUsIDEzLCAxNjYsIDUsIDI0NywgCisgICAgMTI1LCAxMywgMTY2LCA1LCAyNDUsIDUxLCAxMywgMTY2LCA1LCA3NCwgMTMsIDE2NiwgNSwgMjQwLCAxNzQsIDEzLCAxNjYsIAorICAgIDUsIDIzOSwgNzUsIDEzLCAxNjYsIDUsIDIzNywgMTcxLCAxMywgMTY2LCA1LCA3NSwgMTMsIDE2NiwgNSwgMjMwLCAxODQsIAorICAgIDEzLCAxNjYsIDUsIDIzMCwgNTQsIDEzLCAxNjYsIDUsIDE1OSwgMTMsIDE2NiwgNSwgMjI2LCAxODUsIDEzLCAxNjYsIDUsIAorICAgIDIyMywgMTYzLCAxMywgMTY2LCA1LCA3OCwgMTMsIDE2NiwgNSwgMjE5LCAxODQsIDEzLCAxNjYsIDUsIDIxNywgMTM0LCAxMywgCisgICAgMTY2LCA1LCAxNDYsIDEzLCAxNjYsIDUsIDE5NCwgMTMsIDE2NiwgNSwgMjEwLCA2OSwgMTMsIDE2NiwgNSwgNjgsIDEzLCAKKyAgICAxNjYsIDUsIDIwNiwgMTY0LCAxMywgMTY2LCA1LCAyMDQsIDE0NCwgMTMsIDE2NiwgNSwgMjAzLCAxOTYsIDEzLCAxNjYsIDUsIAorICAgIDIwMywgMTI0LCAxMywgMTY2LCA1LCAyMDIsIDE1OSwgMTMsIDE2OSwgNiwgNjMsIDEzLCAxNjksIDYsIDI0OSwgMjU1LCAxMywgCisgICAgMTY5LCA2LCAyNDUsIDUxLCAxMywgMTY5LCA2LCA3NCwgMTMsIDE2OSwgNiwgMjQwLCAxNzQsIDEzLCAxNjksIDYsIDIzOSwgCisgICAgNzUsIDEzLCAxNjksIDYsIDc1LCAxMywgMTY5LCA2LCAyMzAsIDE4NCwgMTMsIDE2OSwgNiwgMjMwLCA1NCwgMTMsIDE2OSwgCisgICAgNiwgMTU5LCAxMywgMTY5LCA2LCAyMjYsIDE4NSwgMTMsIDE2OSwgNiwgNzgsIDEzLCAxNjksIDYsIDE5NCwgMTMsIDE2OSwgCisgICAgNiwgMjEwLCA2OSwgMTMsIDE2OSwgNiwgNjgsIDEzLCAxNjksIDYsIDIwNiwgMTY0LCAxMywgMTY5LCA2LCAyMDQsIDE0NCwgCisgICAgMTMsIDE2OSwgNiwgMjAzLCAxOTYsIDEzLCAxNjksIDYsIDIwMywgMTI0LCAxMywgMTY5LCA1LCA2MywgMTMsIDE2OSwgNSwgCisgICAgMjQ5LCAyNTUsIDEzLCAxNjksIDUsIDI0NywgMTI1LCAxMywgMTY5LCA1LCAyNDUsIDUxLCAxMywgMTY5LCA1LCA3NCwgMTMsIAorICAgIDE2OSwgNSwgMjQwLCAxNzQsIDEzLCAxNjksIDUsIDIzOSwgNzUsIDEzLCAxNjksIDUsIDIzNywgMTcxLCAxMywgMTY5LCA1LCAKKyAgICA3NSwgMTMsIDE2OSwgNSwgMjMwLCAxODQsIDEzLCAxNjksIDUsIDIzMCwgNTQsIDEzLCAxNjksIDUsIDE1OSwgMTMsIDE2OSwgCisgICAgNSwgMjI2LCAxODUsIDEzLCAxNjksIDUsIDIyMywgMTYzLCAxMywgMTY5LCA1LCA3OCwgMTMsIDE2OSwgNSwgMjE5LCAxODQsIAorICAgIDEzLCAxNjksIDUsIDIxNywgMTM0LCAxMywgMTY5LCA1LCAxNDYsIDEzLCAxNjksIDUsIDE5NCwgMTMsIDE2OSwgNSwgMjEwLCAKKyAgICA2OSwgMTMsIDE2OSwgNSwgNjgsIDEzLCAxNjksIDUsIDIwNiwgMTY0LCAxMywgMTY5LCA1LCAyMDQsIDE0NCwgMTMsIDE2OSwgCisgICAgNSwgMjAzLCAxOTYsIDEzLCAxNjksIDUsIDIwMywgMTI0LCAxMywgMTY5LCA1LCAyMDIsIDE1OSwgMTMsIDI2LCAxNjYsIDYsIAorICAgIDYzLCAxMywgMjYsIDE2NiwgNiwgMjQ5LCAyNTUsIDEzLCAyNiwgMTY2LCA2LCAyNDcsIDEyNSwgMTMsIDI2LCAxNjYsIDYsIAorICAgIDI0NSwgNTEsIDEzLCAyNiwgMTY2LCA2LCA3NCwgMTMsIDI2LCAxNjYsIDYsIDI0MCwgMTc0LCAxMywgMjYsIDE2NiwgNiwgCisgICAgMjM5LCA3NSwgMTMsIDI2LCAxNjYsIDYsIDIzNywgMTcxLCAxMywgMjYsIDE2NiwgNiwgNzUsIDEzLCAyNiwgMTY2LCA2LCAKKyAgICAyMzAsIDE4NCwgMTMsIDI2LCAxNjYsIDYsIDIzMCwgNTQsIDEzLCAyNiwgMTY2LCA2LCAxNTksIDEzLCAyNiwgMTY2LCA2LCAKKyAgICAyMjYsIDE4NSwgMTMsIDI2LCAxNjYsIDYsIDIyMywgMTYzLCAxMywgMjYsIDE2NiwgNiwgNzgsIDEzLCAyNiwgMTY2LCA2LCAKKyAgICAyMTksIDE4NCwgMTMsIDI2LCAxNjYsIDYsIDIxNywgMTM0LCAxMywgMjYsIDE2NiwgNiwgMTQ2LCAxMywgMjYsIDE2NiwgNiwgCisgICAgMTk0LCAxMywgMjYsIDE2NiwgNiwgMjEwLCA2OSwgMTMsIDI2LCAxNjYsIDYsIDY4LCAxMywgMjYsIDE2NiwgNiwgMjA2LCAKKyAgICAxNjQsIDEzLCAyNiwgMTY2LCA2LCAyMDQsIDE0NCwgMTMsIDI2LCAxNjYsIDYsIDIwMywgMTk2LCAxMywgMjYsIDE2NiwgNiwgCisgICAgMjAzLCAxMjQsIDEzLCAyNiwgMTY2LCA2LCAyMDIsIDE1OSwgMTMsIDI2LCAxNjYsIDUsIDYzLCAxMywgMjYsIDE2NiwgNSwgCisgICAgMjQ5LCAyNTUsIDEzLCAyNiwgMTY2LCA1LCAyNDcsIDEyNSwgMTMsIDI2LCAxNjYsIDUsIDI0NSwgNTEsIDEzLCAyNiwgMTY2LCAKKyAgICA1LCA3NCwgMTMsIDI2LCAxNjYsIDUsIDI0MCwgMTc0LCAxMywgMjYsIDE2NiwgNSwgMjM5LCA3NSwgMTMsIDI2LCAxNjYsIDUsIAorICAgIDIzNywgMTcxLCAxMywgMjYsIDE2NiwgNSwgNzUsIDEzLCAyNiwgMTY2LCA1LCAyMzAsIDE4NCwgMTMsIDI2LCAxNjYsIDUsIAorICAgIDIzMCwgNTQsIDEzLCAyNiwgMTY2LCA1LCAxNTksIDEzLCAyNiwgMTY2LCA1LCAyMjYsIDE4NSwgMTMsIDI2LCAxNjYsIDUsIAorICAgIDIyMywgMTYzLCAxMywgMjYsIDE2NiwgNSwgNzgsIDEzLCAyNiwgMTY2LCA1LCAyMTksIDE4NCwgMTMsIDI2LCAxNjYsIDUsIAorICAgIDIxNywgMTM0LCAxMywgMjYsIDE2NiwgNSwgMTQ2LCAxMywgMjYsIDE2NiwgNSwgMTk0LCAxMywgMjYsIDE2NiwgNSwgMjEwLCAKKyAgICA2OSwgMTMsIDI2LCAxNjYsIDUsIDY4LCAxMywgMjYsIDE2NiwgNSwgMjA2LCAxNjQsIDEzLCAyNiwgMTY2LCA1LCAyMDQsIAorICAgIDE0NCwgMTMsIDI2LCAxNjYsIDUsIDIwMywgMTk2LCAxMywgMjYsIDE2NiwgNSwgMjAzLCAxMjQsIDEzLCAyNiwgMTY2LCA1LCAKKyAgICAyMDIsIDE1OSwgMTMsIDQxLCA2LCA2MywgMTMsIDQxLCA2LCAyNDksIDI1NSwgMTMsIDQxLCA2LCAyNDcsIDEyNSwgMTMsIAorICAgIDQxLCA2LCAyNDUsIDUxLCAxMywgNDEsIDYsIDc0LCAxMywgNDEsIDYsIDI0MCwgMTc0LCAxMywgNDEsIDYsIDIzOSwgNzUsIAorICAgIDEzLCA0MSwgNiwgMjM3LCAxNzEsIDEzLCA0MSwgNiwgNzUsIDEzLCA0MSwgNiwgMjMwLCAxODQsIDEzLCA0MSwgNiwgMjMwLCAKKyAgICA1NCwgMTMsIDQxLCA2LCAxNTksIDEzLCA0MSwgNiwgMjI2LCAxODUsIDEzLCA0MSwgNiwgMjIzLCAxNjMsIDEzLCA0MSwgNiwgCisgICAgNzgsIDEzLCA0MSwgNiwgMjE5LCAxODQsIDEzLCA0MSwgNiwgMjE3LCAxMzQsIDEzLCA0MSwgNiwgMTQ2LCAxMywgNDEsIDYsIAorICAgIDE5NCwgMTMsIDQxLCA2LCAyMTAsIDY5LCAxMywgNDEsIDYsIDY4LCAxMywgNDEsIDYsIDIwNiwgMTY0LCAxMywgNDEsIDYsIAorICAgIDIwNCwgMTQ0LCAxMywgNDEsIDYsIDIwMywgMTk2LCAxMywgNDEsIDYsIDIwMywgMTI0LCAxMywgNDEsIDYsIDIwMiwgMTU5LCAKKyAgICAxMywgNDEsIDUsIDYzLCAxMywgNDEsIDUsIDI0OSwgMjU1LCAxMywgNDEsIDUsIDI0NywgMTI1LCAxMywgNDEsIDUsIDI0NSwgCisgICAgNTEsIDEzLCA0MSwgNSwgNzQsIDEzLCA0MSwgNSwgMjQwLCAxNzQsIDEzLCA0MSwgNSwgMjM5LCA3NSwgMTMsIDQxLCA1LCAKKyAgICAyMzcsIDE3MSwgMTMsIDQxLCA1LCA3NSwgMTMsIDQxLCA1LCAyMzAsIDE4NCwgMTMsIDQxLCA1LCAyMzAsIDU0LCAxMywgNDEsIAorICAgIDUsIDE1OSwgMTMsIDQxLCA1LCAyMjYsIDE4NSwgMTMsIDQxLCA1LCAyMjMsIDE2MywgMTMsIDQxLCA1LCA3OCwgMTMsIDQxLCAKKyAgICA1LCAyMTksIDE4NCwgMTMsIDQxLCA1LCAyMTcsIDEzNCwgMTMsIDQxLCA1LCAxNDYsIDEzLCA0MSwgNSwgMTk0LCAxMywgNDEsIAorICAgIDUsIDIxMCwgNjksIDEzLCA0MSwgNSwgNjgsIDEzLCA0MSwgNSwgMjA2LCAxNjQsIDEzLCA0MSwgNSwgMjA0LCAxNDQsIDEzLCAKKyAgICA0MSwgNSwgMjAzLCAxOTYsIDEzLCA0MSwgNSwgMjAzLCAxMjQsIDEzLCA0MSwgNSwgMjAyLCAxNTksIDEzLCA0MSwgMjYsIDYsIAorICAgIDYzLCAxMywgNDEsIDI2LCA2LCAyNDksIDI1NSwgMTMsIDQxLCAyNiwgNiwgMjQ3LCAxMjUsIDEzLCA0MSwgMjYsIDYsIDI0NSwgCisgICAgNTEsIDEzLCA0MSwgMjYsIDYsIDc0LCAxMywgNDEsIDI2LCA2LCAyNDAsIDE3NCwgMTMsIDQxLCAyNiwgNiwgMjM5LCA3NSwgCisgICAgMTMsIDQxLCAyNiwgNiwgMjM3LCAxNzEsIDEzLCA0MSwgMjYsIDYsIDc1LCAxMywgNDEsIDI2LCA2LCAyMzAsIDE4NCwgMTMsIAorICAgIDQxLCAyNiwgNiwgMjMwLCA1NCwgMTMsIDQxLCAyNiwgNiwgMTU5LCAxMywgNDEsIDI2LCA2LCAyMjYsIDE4NSwgMTMsIDQxLCAKKyAgICAyNiwgNiwgMjIzLCAxNjMsIDEzLCA0MSwgMjYsIDYsIDc4LCAxMywgNDEsIDI2LCA2LCAyMTksIDE4NCwgMTMsIDQxLCAyNiwgCisgICAgNiwgMjE3LCAxMzQsIDEzLCA0MSwgMjYsIDYsIDE0NiwgMTMsIDQxLCAyNiwgNiwgMTk0LCAxMywgNDEsIDI2LCA2LCAyMTAsIAorICAgIDY5LCAxMywgNDEsIDI2LCA2LCA2OCwgMTMsIDQxLCAyNiwgNiwgMjA2LCAxNjQsIDEzLCA0MSwgMjYsIDYsIDIwNCwgMTQ0LCAKKyAgICAxMywgNDEsIDI2LCA2LCAyMDMsIDE5NiwgMTMsIDQxLCAyNiwgNiwgMjAzLCAxMjQsIDEzLCA0MSwgMjYsIDYsIDIwMiwgCisgICAgMTU5LCAxMywgNDEsIDI2LCA1LCA2MywgMTMsIDQxLCAyNiwgNSwgMjQ5LCAyNTUsIDEzLCA0MSwgMjYsIDUsIDI0NywgMTI1LCAKKyAgICAxMywgNDEsIDI2LCA1LCAyNDUsIDUxLCAxMywgNDEsIDI2LCA1LCA3NCwgMTMsIDQxLCAyNiwgNSwgMjQwLCAxNzQsIDEzLCAKKyAgICA0MSwgMjYsIDUsIDIzOSwgNzUsIDEzLCA0MSwgMjYsIDUsIDIzNywgMTcxLCAxMywgNDEsIDI2LCA1LCA3NSwgMTMsIDQxLCAKKyAgICAyNiwgNSwgMjMwLCAxODQsIDEzLCA0MSwgMjYsIDUsIDIzMCwgNTQsIDEzLCA0MSwgMjYsIDUsIDE1OSwgMTMsIDQxLCAyNiwgCisgICAgNSwgMjI2LCAxODUsIDEzLCA0MSwgMjYsIDUsIDIyMywgMTYzLCAxMywgNDEsIDI2LCA1LCA3OCwgMTMsIDQxLCAyNiwgNSwgCisgICAgMjE5LCAxODQsIDEzLCA0MSwgMjYsIDUsIDIxNywgMTM0LCAxMywgNDEsIDI2LCA1LCAxNDYsIDEzLCA0MSwgMjYsIDUsIAorICAgIDE5NCwgMTMsIDQxLCAyNiwgNSwgMjEwLCA2OSwgMTMsIDQxLCAyNiwgNSwgNjgsIDEzLCA0MSwgMjYsIDUsIDIwNiwgMTY0LCAKKyAgICAxMywgNDEsIDI2LCA1LCAyMDQsIDE0NCwgMTMsIDQxLCAyNiwgNSwgMjAzLCAxOTYsIDEzLCA0MSwgMjYsIDUsIDIwMywgCisgICAgMTI0LCAxMywgNDEsIDI2LCA1LCAyMDIsIDE1OSwgMTMsIDQxLCAzNywgNiwgNjMsIDEzLCA0MSwgMzcsIDYsIDI0OSwgMjU1LCAKKyAgICAxMywgNDEsIDM3LCA2LCAyNDcsIDEyNSwgMTMsIDQxLCAzNywgNiwgMjQ1LCA1MSwgMTMsIDQxLCAzNywgNiwgNzQsIDEzLCAKKyAgICA0MSwgMzcsIDYsIDI0MCwgMTc0LCAxMywgNDEsIDM3LCA2LCAyMzksIDc1LCAxMywgNDEsIDM3LCA2LCAyMzcsIDE3MSwgMTMsIAorICAgIDQxLCAzNywgNiwgNzUsIDEzLCA0MSwgMzcsIDYsIDIzMCwgMTg0LCAxMywgNDEsIDM3LCA2LCAyMzAsIDU0LCAxMywgNDEsIAorICAgIDM3LCA2LCAxNTksIDEzLCA0MSwgMzcsIDYsIDIyNiwgMTg1LCAxMywgNDEsIDM3LCA2LCAyMjMsIDE2MywgMTMsIDQxLCAzNywgCisgICAgNiwgNzgsIDEzLCA0MSwgMzcsIDYsIDIxOSwgMTg0LCAxMywgNDEsIDM3LCA2LCAyMTcsIDEzNCwgMTMsIDQxLCAzNywgNiwgCisgICAgMTQ2LCAxMywgNDEsIDM3LCA2LCAxOTQsIDEzLCA0MSwgMzcsIDYsIDIxMCwgNjksIDEzLCA0MSwgMzcsIDYsIDY4LCAxMywgCisgICAgNDEsIDM3LCA2LCAyMDYsIDE2NCwgMTMsIDQxLCAzNywgNiwgMjA0LCAxNDQsIDEzLCA0MSwgMzcsIDYsIDIwMywgMTk2LCAKKyAgICAxMywgNDEsIDM3LCA2LCAyMDMsIDEyNCwgMTMsIDQxLCAzNywgNiwgMjAyLCAxNTksIDEzLCA0MSwgMzcsIDUsIDYzLCAxMywgCisgICAgNDEsIDM3LCA1LCAyNDksIDI1NSwgMTMsIDQxLCAzNywgNSwgMjQ3LCAxMjUsIDEzLCA0MSwgMzcsIDUsIDI0NSwgNTEsIDEzLCAKKyAgICA0MSwgMzcsIDUsIDc0LCAxMywgNDEsIDM3LCA1LCAyNDAsIDE3NCwgMTMsIDQxLCAzNywgNSwgMjM5LCA3NSwgMTMsIDQxLCAKKyAgICAzNywgNSwgMjM3LCAxNzEsIDEzLCA0MSwgMzcsIDUsIDc1LCAxMywgNDEsIDM3LCA1LCAyMzAsIDE4NCwgMTMsIDQxLCAzNywgCisgICAgNSwgMjMwLCA1NCwgMTMsIDQxLCAzNywgNSwgMTU5LCAxMywgNDEsIDM3LCA1LCAyMjYsIDE4NSwgMTMsIDQxLCAzNywgNSwgCisgICAgMjIzLCAxNjMsIDEzLCA0MSwgMzcsIDUsIDc4LCAxMywgNDEsIDM3LCA1LCAyMTksIDE4NCwgMTMsIDQxLCAzNywgNSwgMjE3LCAKKyAgICAxMzQsIDEzLCA0MSwgMzcsIDUsIDE0NiwgMTMsIDQxLCAzNywgNSwgMTk0LCAxMywgNDEsIDM3LCA1LCAyMTAsIDY5LCAxMywgCisgICAgNDEsIDM3LCA1LCA2OCwgMTMsIDQxLCAzNywgNSwgMjA2LCAxNjQsIDEzLCA0MSwgMzcsIDUsIDIwNCwgMTQ0LCAxMywgNDEsIAorICAgIDM3LCA1LCAyMDMsIDE5NiwgMTMsIDQxLCAzNywgNSwgMjAzLCAxMjQsIDEzLCA0MSwgMzcsIDUsIDIwMiwgMTU5LCAxMywgCisgICAgNDEsIDI2LCAzNywgNiwgNjMsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDksIDI1NSwgMTMsIDQxLCAyNiwgMzcsIDYsIDI0NywgCisgICAgMTI1LCAxMywgNDEsIDI2LCAzNywgNiwgMjQ1LCA1MSwgMTMsIDQxLCAyNiwgMzcsIDYsIDc0LCAxMywgNDEsIDI2LCAzNywgCisgICAgNiwgMjQwLCAxNzQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMzksIDc1LCAxMywgNDEsIDI2LCAzNywgNiwgMjM3LCAxNzEsIDEzLCAKKyAgICA0MSwgMjYsIDM3LCA2LCA3NSwgMTMsIDQxLCAyNiwgMzcsIDYsIDIzMCwgMTg0LCAxMywgNDEsIDI2LCAzNywgNiwgMjMwLCAKKyAgICA1NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDE1OSwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyNiwgMTg1LCAxMywgNDEsIDI2LCAzNywgCisgICAgNiwgMjIzLCAxNjMsIDEzLCA0MSwgMjYsIDM3LCA2LCA3OCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIxOSwgMTg0LCAxMywgNDEsIAorICAgIDI2LCAzNywgNiwgMjE3LCAxMzQsIDEzLCA0MSwgMjYsIDM3LCA2LCAxNDYsIDEzLCA0MSwgMjYsIDM3LCA2LCAxOTQsIDEzLCAKKyAgICA0MSwgMjYsIDM3LCA2LCAyMTAsIDY5LCAxMywgNDEsIDI2LCAzNywgNiwgNjgsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDYsIAorICAgIDE2NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwNCwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNiwgMjAzLCAxOTYsIDEzLCA0MSwgCisgICAgMjYsIDM3LCA2LCAyMDMsIDEyNCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwMiwgMTU5LCAxMywgNDEsIDI2LCAzNywgNSwgNjMsIAorICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDksIDI1NSwgMTMsIDQxLCAyNiwgMzcsIDUsIDI0NywgMTI1LCAxMywgNDEsIDI2LCAzNywgCisgICAgNSwgMjQ1LCA1MSwgMTMsIDQxLCAyNiwgMzcsIDUsIDc0LCAxMywgNDEsIDI2LCAzNywgNSwgMjQwLCAxNzQsIDEzLCA0MSwgCisgICAgMjYsIDM3LCA1LCAyMzksIDc1LCAxMywgNDEsIDI2LCAzNywgNSwgMjM3LCAxNzEsIDEzLCA0MSwgMjYsIDM3LCA1LCA3NSwgCisgICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIzMCwgMTg0LCAxMywgNDEsIDI2LCAzNywgNSwgMjMwLCA1NCwgMTMsIDQxLCAyNiwgMzcsIAorICAgIDUsIDE1OSwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyNiwgMTg1LCAxMywgNDEsIDI2LCAzNywgNSwgMjIzLCAxNjMsIDEzLCA0MSwgCisgICAgMjYsIDM3LCA1LCA3OCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIxOSwgMTg0LCAxMywgNDEsIDI2LCAzNywgNSwgMjE3LCAxMzQsIAorICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAxNDYsIDEzLCA0MSwgMjYsIDM3LCA1LCAxOTQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTAsIAorICAgIDY5LCAxMywgNDEsIDI2LCAzNywgNSwgNjgsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDYsIDE2NCwgMTMsIDQxLCAyNiwgMzcsIAorICAgIDUsIDIwNCwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNSwgMjAzLCAxOTYsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDMsIDEyNCwgCisgICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIwMiwgMTU5LCAxMywgMjI0LCA0MSwgNiwgNjMsIDEzLCAyMjQsIDQxLCA2LCAyNDksIAorICAgIDI1NSwgMTMsIDIyNCwgNDEsIDYsIDI0NywgMTI1LCAxMywgMjI0LCA0MSwgNiwgMjQ1LCA1MSwgMTMsIDIyNCwgNDEsIDYsIAorICAgIDc0LCAxMywgMjI0LCA0MSwgNiwgMjQwLCAxNzQsIDEzLCAyMjQsIDQxLCA2LCAyMzksIDc1LCAxMywgMjI0LCA0MSwgNiwgCisgICAgMjM3LCAxNzEsIDEzLCAyMjQsIDQxLCA2LCA3NSwgMTMsIDIyNCwgNDEsIDYsIDIzMCwgMTg0LCAxMywgMjI0LCA0MSwgNiwgCisgICAgMjMwLCA1NCwgMTMsIDIyNCwgNDEsIDYsIDE1OSwgMTMsIDIyNCwgNDEsIDYsIDIyNiwgMTg1LCAxMywgMjI0LCA0MSwgNiwgCisgICAgMjIzLCAxNjMsIDEzLCAyMjQsIDQxLCA2LCA3OCwgMTMsIDIyNCwgNDEsIDYsIDIxOSwgMTg0LCAxMywgMjI0LCA0MSwgNiwgCisgICAgMjE3LCAxMzQsIDEzLCAyMjQsIDQxLCA2LCAxNDYsIDEzLCAyMjQsIDQxLCA2LCAxOTQsIDEzLCAyMjQsIDQxLCA2LCAyMTAsIAorICAgIDY5LCAxMywgMjI0LCA0MSwgNiwgNjgsIDEzLCAyMjQsIDQxLCA2LCAyMDYsIDE2NCwgMTMsIDIyNCwgNDEsIDYsIDIwNCwgCisgICAgMTQ0LCAxMywgMjI0LCA0MSwgNiwgMjAzLCAxOTYsIDEzLCAyMjQsIDQxLCA2LCAyMDMsIDEyNCwgMTMsIDIyNCwgNDEsIDYsIAorICAgIDIwMiwgMTU5LCAxMywgMjI0LCA0MSwgNSwgNjMsIDEzLCAyMjQsIDQxLCA1LCAyNDksIDI1NSwgMTMsIDIyNCwgNDEsIDUsIAorICAgIDI0NywgMTI1LCAxMywgMjI0LCA0MSwgNSwgMjQ1LCA1MSwgMTMsIDIyNCwgNDEsIDUsIDc0LCAxMywgMjI0LCA0MSwgNSwgCisgICAgMjQwLCAxNzQsIDEzLCAyMjQsIDQxLCA1LCAyMzksIDc1LCAxMywgMjI0LCA0MSwgNSwgMjM3LCAxNzEsIDEzLCAyMjQsIDQxLCAKKyAgICA1LCA3NSwgMTMsIDIyNCwgNDEsIDUsIDIzMCwgMTg0LCAxMywgMjI0LCA0MSwgNSwgMjMwLCA1NCwgMTMsIDIyNCwgNDEsIDUsIAorICAgIDE1OSwgMTMsIDIyNCwgNDEsIDUsIDIyNiwgMTg1LCAxMywgMjI0LCA0MSwgNSwgMjIzLCAxNjMsIDEzLCAyMjQsIDQxLCA1LCAKKyAgICA3OCwgMTMsIDIyNCwgNDEsIDUsIDIxOSwgMTg0LCAxMywgMjI0LCA0MSwgNSwgMjE3LCAxMzQsIDEzLCAyMjQsIDQxLCA1LCAKKyAgICAxNDYsIDEzLCAyMjQsIDQxLCA1LCAxOTQsIDEzLCAyMjQsIDQxLCA1LCAyMTAsIDY5LCAxMywgMjI0LCA0MSwgNSwgNjgsIAorICAgIDEzLCAyMjQsIDQxLCA1LCAyMDYsIDE2NCwgMTMsIDIyNCwgNDEsIDUsIDIwNCwgMTQ0LCAxMywgMjI0LCA0MSwgNSwgMjAzLCAKKyAgICAxOTYsIDEzLCAyMjQsIDQxLCA1LCAyMDMsIDEyNCwgMTMsIDIyNCwgNDEsIDUsIDIwMiwgMTU5LCAxMywgMzcsIDUsIDI0MywgCisgICAgODQsIDc1LCAxMywgMzcsIDUsIDI0MywgODQsIDIzMCwgMTg0LCAxMywgMjYsIDYsIDI1MSwgMiwgMTMsIDI2LCA2LCAyNDgsIAorICAgIDEwNiwgMTMsIDI2LCA2LCAyMzgsIDIzNSwgMTMsIDI2LCA2LCAyNDQsIDM3LCAxMywgMjYsIDYsIDI0MSwgMzcsIDEzLCAyNiwgCisgICAgNiwgMjAyLCA4MywgMTMsIDI2LCA2LCAyNDAsIDI0OCwgMTMsIDI2LCA2LCAyMDksIDc0LCAxMywgMjYsIDYsIDIzMCwgMjMwLCAKKyAgICAxMywgMjYsIDYsIDIyOSwgMjQ3LCAxMywgMjYsIDYsIDIyOCwgMjQsIDEzLCAyNiwgNiwgMjIzLCAyNDYsIDEzLCAyNiwgNiwgCisgICAgMjIxLCA4NCwgMTMsIDI2LCA2LCAyMDMsIDE3MCwgMTMsIDI2LCA2LCAyMjAsIDM0LCAxMywgMjYsIDYsIDIxOCwgMTY3LCAKKyAgICAxMywgMjYsIDYsIDIxNiwgNTksIDEzLCAyNiwgNiwgMjA5LCA3NSwgOTcsIDEzLCAyNiwgNiwgMjEyLCAxNDQsIDEzLCAyNiwgCisgICAgNiwgMjA5LCAyMDcsIDEzLCAyNiwgNiwgMjA2LCAyMTYsIDEzLCAyNiwgNiwgMjE4LCAxOTIsIDEzLCAyNiwgNiwgMjQ2LCAKKyAgICAxNDIsIDEzLCAyNiwgNiwgMjE3LCAyMDIsIDEzLCAyNiwgNiwgMjIwLCAzNiwgMTMsIDI2LCAyMjMsIDEwMSwgMTMsIDI2LCAKKyAgICA1LCAyNTEsIDIsIDEzLCAyNiwgNSwgMjQ4LCAxMDYsIDEzLCAyNiwgNSwgMjM4LCAyMzUsIDEzLCAyNiwgNSwgMjQ0LCAzNywgCisgICAgMTMsIDI2LCA1LCAyNDEsIDM3LCAxMywgMjYsIDUsIDIwMiwgODMsIDEzLCAyNiwgNSwgMjQwLCAyNDgsIDEzLCAyNiwgNSwgCisgICAgMjA5LCA3NCwgMTMsIDI2LCA1LCAyMzAsIDIzMCwgMTMsIDI2LCA1LCAyMjksIDI0NywgMTMsIDI2LCA1LCAyMjgsIDI0LCAKKyAgICAxMywgMjYsIDUsIDIyMywgMjQ2LCAxMywgMjYsIDUsIDIyMSwgODQsIDEzLCAyNiwgNSwgMjAzLCAxNzAsIDEzLCAyNiwgNSwgCisgICAgMjIwLCAzNCwgMTMsIDI2LCA1LCAyMTgsIDE2NywgMTMsIDI2LCA1LCAyMTYsIDU5LCAxMywgMjYsIDUsIDQ2LCAyMTIsIAorICAgIDE0NCwgMTMsIDI2LCA1LCAyMTIsIDE0NCwgMTMsIDI2LCA1LCAyMDksIDIwNywgMTMsIDI2LCA1LCAyMDYsIDIxNiwgMTMsIAorICAgIDI2LCA1LCAyMTgsIDE5MiwgMTMsIDI2LCA1LCAyNDYsIDE0MiwgMTMsIDI2LCA1LCAyMTcsIDIwMiwgMTMsIDI2LCA1LCAKKyAgICAyMjAsIDM2LCAxMywgMjYsIDIxOSwgNjksIDI0MywgMjA1LCAxMywgMjYsIDI0MSwgMzgsIDk3LCAxMywgMjYsIDIwOSwgNzUsIAorICAgIDk3LCAxMywgMjYsIDIyOSwgMjQ4LCA5NywgMTMsIDI2LCAyMTgsIDE5MywgOTcsIDEzLCAyNiwgMjE2LCA2MCwgOTcsIDEzLCAKKyAgICAyNiwgMjE4LCAxNjgsIDk3LCAxMywgMzcsIDYsIDI1MSwgMiwgMTMsIDM3LCA2LCAyNDgsIDEwNiwgMTMsIDM3LCA2LCAyMzgsIAorICAgIDIzNSwgMTMsIDM3LCA2LCAyNDQsIDM3LCAxMywgMzcsIDYsIDI0MSwgMzcsIDEzLCAzNywgNiwgMjAyLCA4MywgMTMsIDM3LCAKKyAgICA2LCAyNDAsIDI0OCwgMTMsIDM3LCA2LCAyMDksIDc0LCAxMywgMzcsIDYsIDIzMCwgMjMwLCAxMywgMzcsIDYsIDIyOSwgCisgICAgMjQ3LCAxMywgMzcsIDYsIDIyOCwgMjQsIDEzLCAzNywgNiwgMjIzLCAyNDYsIDEzLCAzNywgNiwgMjIxLCA4NCwgMTMsIDM3LCAKKyAgICA2LCAyMDMsIDE3MCwgMTMsIDM3LCA2LCAyMjAsIDM0LCAxMywgMzcsIDYsIDIxOCwgMTY3LCAxMywgMzcsIDYsIDIxNiwgNTksIAorICAgIDEzLCAzNywgNiwgMjA5LCA3NSwgOTcsIDEzLCAzNywgNiwgMjEyLCAxNDQsIDEzLCAzNywgNiwgMjA5LCAyMDcsIDEzLCAzNywgCisgICAgNiwgMjA2LCAyMTYsIDEzLCAzNywgNiwgMjE4LCAxOTIsIDEzLCAzNywgNiwgMjQ2LCAxNDIsIDEzLCAzNywgNiwgMjE3LCAKKyAgICAyMDIsIDEzLCAzNywgNiwgMjIwLCAzNiwgMTMsIDM3LCAyMjMsIDEwMSwgMTMsIDM3LCA1LCAyNTEsIDIsIDEzLCAzNywgNSwgCisgICAgMjQ4LCAxMDYsIDEzLCAzNywgNSwgMjM4LCAyMzUsIDEzLCAzNywgNSwgMjQ0LCAzNywgMTMsIDM3LCA1LCAyNDEsIDM3LCAKKyAgICAxMywgMzcsIDUsIDIwMiwgODMsIDEzLCAzNywgNSwgMjQwLCAyNDgsIDEzLCAzNywgNSwgMjA5LCA3NCwgMTMsIDM3LCA1LCAKKyAgICAyMzAsIDIzMCwgMTMsIDM3LCA1LCAyMjksIDI0NywgMTMsIDM3LCA1LCAyMjgsIDI0LCAxMywgMzcsIDUsIDIyMywgMjQ2LCAKKyAgICAxMywgMzcsIDUsIDIyMSwgODQsIDEzLCAzNywgNSwgMjAzLCAxNzAsIDEzLCAzNywgNSwgMjIwLCAzNCwgMTMsIDM3LCA1LCAKKyAgICAyMTgsIDE2NywgMTMsIDM3LCA1LCAyMTYsIDU5LCAxMywgMzcsIDUsIDQ2LCAyMTIsIDE0NCwgMTMsIDM3LCA1LCAyMTIsIAorICAgIDE0NCwgMTMsIDM3LCA1LCAyMDksIDIwNywgMTMsIDM3LCA1LCAyMDYsIDIxNiwgMTMsIDM3LCA1LCAyMTgsIDE5MiwgMTMsIAorICAgIDM3LCA1LCAyNDYsIDE0MiwgMTMsIDM3LCA1LCAyMTcsIDIwMiwgMTMsIDM3LCA1LCAyMjAsIDM2LCAxMywgMzcsIDIxOSwgCisgICAgNjksIDI0MywgMjA1LCAxMywgMzcsIDI0MSwgMzgsIDk3LCAxMywgMzcsIDIwOSwgNzUsIDk3LCAxMywgMzcsIDIyOSwgMjQ4LCAKKyAgICA5NywgMTMsIDM3LCAyMTgsIDE5MywgOTcsIDEzLCAzNywgMjE2LCA2MCwgOTcsIDEzLCAzNywgMjE4LCAxNjgsIDk3LCAxMywgCisgICAgMjYsIDM3LCA2LCAyNTEsIDIsIDEzLCAyNiwgMzcsIDYsIDI0OCwgMTA2LCAxMywgMjYsIDM3LCA2LCAyMzgsIDIzNSwgMTMsIAorICAgIDI2LCAzNywgNiwgMjQ0LCAzNywgMTMsIDI2LCAzNywgNiwgMjQxLCAzNywgMTMsIDI2LCAzNywgNiwgMjAyLCA4MywgMTMsIAorICAgIDI2LCAzNywgNiwgMjQwLCAyNDgsIDEzLCAyNiwgMzcsIDYsIDIwOSwgNzQsIDEzLCAyNiwgMzcsIDYsIDIzMCwgMjMwLCAxMywgCisgICAgMjYsIDM3LCA2LCAyMjksIDI0NywgMTMsIDI2LCAzNywgNiwgMjI4LCAyNCwgMTMsIDI2LCAzNywgNiwgMjIzLCAyNDYsIDEzLCAKKyAgICAyNiwgMzcsIDYsIDIyMSwgODQsIDEzLCAyNiwgMzcsIDYsIDIwMywgMTcwLCAxMywgMjYsIDM3LCA2LCAyMjAsIDM0LCAxMywgCisgICAgMjYsIDM3LCA2LCAyMTgsIDE2NywgMTMsIDI2LCAzNywgNiwgMjE2LCA1OSwgMTMsIDI2LCAzNywgNiwgMjA5LCA3NSwgOTcsIAorICAgIDEzLCAyNiwgMzcsIDYsIDIxMiwgMTQ0LCAxMywgMjYsIDM3LCA2LCAyMDksIDIwNywgMTMsIDI2LCAzNywgNiwgMjA2LCAKKyAgICAyMTYsIDEzLCAyNiwgMzcsIDYsIDIxOCwgMTkyLCAxMywgMjYsIDM3LCA2LCAyNDYsIDE0MiwgMTMsIDI2LCAzNywgNiwgCisgICAgMjE3LCAyMDIsIDEzLCAyNiwgMzcsIDYsIDIyMCwgMzYsIDEzLCAyNiwgMzcsIDIyMywgMTAxLCAxMywgMjYsIDM3LCA1LCAKKyAgICAyNTEsIDIsIDEzLCAyNiwgMzcsIDUsIDI0OCwgMTA2LCAxMywgMjYsIDM3LCA1LCAyMzgsIDIzNSwgMTMsIDI2LCAzNywgNSwgCisgICAgMjQ0LCAzNywgMTMsIDI2LCAzNywgNSwgMjQxLCAzNywgMTMsIDI2LCAzNywgNSwgMjAyLCA4MywgMTMsIDI2LCAzNywgNSwgCisgICAgMjQwLCAyNDgsIDEzLCAyNiwgMzcsIDUsIDIwOSwgNzQsIDEzLCAyNiwgMzcsIDUsIDIzMCwgMjMwLCAxMywgMjYsIDM3LCA1LCAKKyAgICAyMjksIDI0NywgMTMsIDI2LCAzNywgNSwgMjI4LCAyNCwgMTMsIDI2LCAzNywgNSwgMjIzLCAyNDYsIDEzLCAyNiwgMzcsIDUsIAorICAgIDIyMSwgODQsIDEzLCAyNiwgMzcsIDUsIDIwMywgMTcwLCAxMywgMjYsIDM3LCA1LCAyMjAsIDM0LCAxMywgMjYsIDM3LCA1LCAKKyAgICAyMTgsIDE2NywgMTMsIDI2LCAzNywgNSwgMjE2LCA1OSwgMTMsIDI2LCAzNywgNSwgNDYsIDIxMiwgMTQ0LCAxMywgMjYsIAorICAgIDM3LCA1LCAyMTIsIDE0NCwgMTMsIDI2LCAzNywgNSwgMjA5LCAyMDcsIDEzLCAyNiwgMzcsIDUsIDIwNiwgMjE2LCAxMywgCisgICAgMjYsIDM3LCA1LCAyMTgsIDE5MiwgMTMsIDI2LCAzNywgNSwgMjQ2LCAxNDIsIDEzLCAyNiwgMzcsIDUsIDIxNywgMjAyLCAKKyAgICAxMywgMjYsIDM3LCA1LCAyMjAsIDM2LCAxMywgMjYsIDM3LCAyMTksIDY5LCAyNDMsIDIwNSwgMTMsIDI2LCAzNywgMjQxLCAKKyAgICAzOCwgOTcsIDEzLCAyNiwgMzcsIDIwOSwgNzUsIDk3LCAxMywgMjYsIDM3LCAyMjksIDI0OCwgOTcsIDEzLCAyNiwgMzcsIAorICAgIDIxOCwgMTkzLCA5NywgMTMsIDI2LCAzNywgMjE2LCA2MCwgOTcsIDEzLCAyNiwgMzcsIDIxOCwgMTY4LCA5NywgMTMsIDQxLCAKKyAgICAyNiwgNiwgMjUxLCAyLCAxMywgNDEsIDI2LCA2LCAyNDgsIDEwNiwgMTMsIDQxLCAyNiwgNiwgMjM4LCAyMzUsIDEzLCA0MSwgCisgICAgMjYsIDYsIDI0NCwgMzcsIDEzLCA0MSwgMjYsIDYsIDI0MSwgMzcsIDEzLCA0MSwgMjYsIDYsIDIwMiwgODMsIDEzLCA0MSwgCisgICAgMjYsIDYsIDI0MCwgMjQ4LCAxMywgNDEsIDI2LCA2LCAyMDksIDc0LCAxMywgNDEsIDI2LCA2LCAyMzAsIDIzMCwgMTMsIDQxLCAKKyAgICAyNiwgNiwgMjI5LCAyNDcsIDEzLCA0MSwgMjYsIDYsIDIyOCwgMjQsIDEzLCA0MSwgMjYsIDYsIDIyMywgMjQ2LCAxMywgNDEsIAorICAgIDI2LCA2LCAyMjEsIDg0LCAxMywgNDEsIDI2LCA2LCAyMDMsIDE3MCwgMTMsIDQxLCAyNiwgNiwgMjIwLCAzNCwgMTMsIDQxLCAKKyAgICAyNiwgNiwgMjE4LCAxNjcsIDEzLCA0MSwgMjYsIDYsIDIxNiwgNTksIDEzLCA0MSwgMjYsIDYsIDIwOSwgNzUsIDk3LCAxMywgCisgICAgNDEsIDI2LCA2LCAyMTIsIDE0NCwgMTMsIDQxLCAyNiwgNiwgMjA5LCAyMDcsIDEzLCA0MSwgMjYsIDYsIDIwNiwgMjE2LCAKKyAgICAxMywgNDEsIDI2LCA2LCAyMTgsIDE5MiwgMTMsIDQxLCAyNiwgNiwgMjQ2LCAxNDIsIDEzLCA0MSwgMjYsIDYsIDIxNywgCisgICAgMjAyLCAxMywgNDEsIDI2LCA2LCAyMjAsIDM2LCAxMywgNDEsIDI2LCAyMjMsIDEwMSwgMTMsIDQxLCAyNiwgNSwgMjUxLCAyLCAKKyAgICAxMywgNDEsIDI2LCA1LCAyNDgsIDEwNiwgMTMsIDQxLCAyNiwgNSwgMjM4LCAyMzUsIDEzLCA0MSwgMjYsIDUsIDI0NCwgMzcsIAorICAgIDEzLCA0MSwgMjYsIDUsIDI0MSwgMzcsIDEzLCA0MSwgMjYsIDUsIDIwMiwgODMsIDEzLCA0MSwgMjYsIDUsIDI0MCwgMjQ4LCAKKyAgICAxMywgNDEsIDI2LCA1LCAyMDksIDc0LCAxMywgNDEsIDI2LCA1LCAyMzAsIDIzMCwgMTMsIDQxLCAyNiwgNSwgMjI5LCAyNDcsIAorICAgIDEzLCA0MSwgMjYsIDUsIDIyOCwgMjQsIDEzLCA0MSwgMjYsIDUsIDIyMywgMjQ2LCAxMywgNDEsIDI2LCA1LCAyMjEsIDg0LCAKKyAgICAxMywgNDEsIDI2LCA1LCAyMDMsIDE3MCwgMTMsIDQxLCAyNiwgNSwgMjIwLCAzNCwgMTMsIDQxLCAyNiwgNSwgMjE4LCAxNjcsIAorICAgIDEzLCA0MSwgMjYsIDUsIDIxNiwgNTksIDEzLCA0MSwgMjYsIDUsIDQ2LCAyMTIsIDE0NCwgMTMsIDQxLCAyNiwgNSwgMjEyLCAKKyAgICAxNDQsIDEzLCA0MSwgMjYsIDUsIDIwOSwgMjA3LCAxMywgNDEsIDI2LCA1LCAyMDYsIDIxNiwgMTMsIDQxLCAyNiwgNSwgCisgICAgMjE4LCAxOTIsIDEzLCA0MSwgMjYsIDUsIDI0NiwgMTQyLCAxMywgNDEsIDI2LCA1LCAyMTcsIDIwMiwgMTMsIDQxLCAyNiwgCisgICAgNSwgMjIwLCAzNiwgMTMsIDQxLCAyNiwgMjE5LCA2OSwgMjQzLCAyMDUsIDEzLCA0MSwgMjYsIDI0MSwgMzgsIDk3LCAxMywgCisgICAgNDEsIDI2LCAyMDksIDc1LCA5NywgMTMsIDQxLCAyNiwgMjI5LCAyNDgsIDk3LCAxMywgNDEsIDI2LCAyMTgsIDE5MywgOTcsIAorICAgIDEzLCA0MSwgMjYsIDIxNiwgNjAsIDk3LCAxMywgNDEsIDI2LCAyMTgsIDE2OCwgOTcsIDEzLCA0MSwgMjYsIDM3LCA2LCAKKyAgICAyNTEsIDIsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDgsIDEwNiwgMTMsIDQxLCAyNiwgMzcsIDYsIDIzOCwgMjM1LCAxMywgNDEsIAorICAgIDI2LCAzNywgNiwgMjQ0LCAzNywgMTMsIDQxLCAyNiwgMzcsIDYsIDI0MSwgMzcsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDIsIAorICAgIDgzLCAxMywgNDEsIDI2LCAzNywgNiwgMjQwLCAyNDgsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDksIDc0LCAxMywgNDEsIDI2LCAKKyAgICAzNywgNiwgMjMwLCAyMzAsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjksIDI0NywgMTMsIDQxLCAyNiwgMzcsIDYsIDIyOCwgMjQsIAorICAgIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjMsIDI0NiwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyMSwgODQsIDEzLCA0MSwgMjYsIDM3LCAKKyAgICA2LCAyMDMsIDE3MCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyMCwgMzQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMTgsIDE2NywgMTMsIAorICAgIDQxLCAyNiwgMzcsIDYsIDIxNiwgNTksIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDksIDc1LCA5NywgMTMsIDQxLCAyNiwgMzcsIAorICAgIDYsIDIxMiwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNiwgMjA5LCAyMDcsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDYsIDIxNiwgCisgICAgMTMsIDQxLCAyNiwgMzcsIDYsIDIxOCwgMTkyLCAxMywgNDEsIDI2LCAzNywgNiwgMjQ2LCAxNDIsIDEzLCA0MSwgMjYsIDM3LCAKKyAgICA2LCAyMTcsIDIwMiwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyMCwgMzYsIDEzLCA0MSwgMjYsIDM3LCAyMjMsIDEwMSwgMTMsIAorICAgIDQxLCAyNiwgMzcsIDUsIDI1MSwgMiwgMTMsIDQxLCAyNiwgMzcsIDUsIDI0OCwgMTA2LCAxMywgNDEsIDI2LCAzNywgNSwgCisgICAgMjM4LCAyMzUsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDQsIDM3LCAxMywgNDEsIDI2LCAzNywgNSwgMjQxLCAzNywgMTMsIDQxLCAKKyAgICAyNiwgMzcsIDUsIDIwMiwgODMsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDAsIDI0OCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIwOSwgCisgICAgNzQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMzAsIDIzMCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyOSwgMjQ3LCAxMywgNDEsIDI2LCAKKyAgICAzNywgNSwgMjI4LCAyNCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyMywgMjQ2LCAxMywgNDEsIDI2LCAzNywgNSwgMjIxLCA4NCwgCisgICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIwMywgMTcwLCAxMywgNDEsIDI2LCAzNywgNSwgMjIwLCAzNCwgMTMsIDQxLCAyNiwgMzcsIAorICAgIDUsIDIxOCwgMTY3LCAxMywgNDEsIDI2LCAzNywgNSwgMjE2LCA1OSwgMTMsIDQxLCAyNiwgMzcsIDUsIDQ2LCAyMTIsIDE0NCwgCisgICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIxMiwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNSwgMjA5LCAyMDcsIDEzLCA0MSwgMjYsIDM3LCAKKyAgICA1LCAyMDYsIDIxNiwgMTMsIDQxLCAyNiwgMzcsIDUsIDIxOCwgMTkyLCAxMywgNDEsIDI2LCAzNywgNSwgMjQ2LCAxNDIsIAorICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTcsIDIwMiwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyMCwgMzYsIDEzLCA0MSwgMjYsIDM3LCAKKyAgICAyMTksIDY5LCAyNDMsIDIwNSwgMTMsIDQxLCAyNiwgMzcsIDI0MSwgMzgsIDk3LCAxMywgNDEsIDI2LCAzNywgMjA5LCA3NSwgCisgICAgOTcsIDEzLCA0MSwgMjYsIDM3LCAyMjksIDI0OCwgOTcsIDEzLCA0MSwgMjYsIDM3LCAyMTgsIDE5MywgOTcsIDEzLCA0MSwgCisgICAgMjYsIDM3LCAyMTYsIDYwLCA5NywgMTMsIDQxLCAyNiwgMzcsIDIxOCwgMTY4LCA5NywgMTMsIDI2LCA2LCAyNDMsIDE5OSwgCisgICAgMTMsIDI2LCA1LCAyNDMsIDE5OSwgMTMsIDI2LCAxNywgMjAyLCA4NCwgMTMsIDI2LCAxNywgMTA1LCAxMywgMjYsIDE3LCAKKyAgICAxMDgsIDEzLCAyNiwgMTcsIDE0NywgMTMsIDI2LCAxNywgMTQ5LCAxMywgMjYsIDE3LCAxNzAsIDEzLCAyNiwgMTcsIDE5NSwgCisgICAgMTMsIDI2LCAxNywgMjEzLCAxMTEsIDEzLCAyNiwgMTcsIDE5OSwgMTMsIDI2LCAxNywgMjIyLCA2MywgMTMsIDE2OSwgMTcsIAorICAgIDIwMiwgODQsIDEzLCAxNjksIDE3LCAxMDUsIDEzLCAxNjksIDE3LCAxMDgsIDEzLCAxNjksIDE3LCAxNDcsIDEzLCAxNjksIAorICAgIDE3LCAxNDksIDEzLCAxNjksIDE3LCAxNzAsIDEzLCAxNjksIDE3LCAxOTUsIDEzLCAxNjksIDE3LCAyMTMsIDExMSwgMTMsIAorICAgIDE2OSwgMTcsIDE5OSwgMTMsIDE2OSwgMTcsIDIyMiwgNjMsIDEzLCA0MSwgMTcsIDIwMiwgODQsIDEzLCA0MSwgMTcsIDEwNSwgCisgICAgMTMsIDQxLCAxNywgMTA4LCAxMywgNDEsIDE3LCAxNDcsIDEzLCA0MSwgMTcsIDE0OSwgMTMsIDQxLCAxNywgMTcwLCAxMywgCisgICAgNDEsIDE3LCAxOTUsIDEzLCA0MSwgMTcsIDIxMywgMTExLCAxMywgNDEsIDE3LCAxOTksIDEzLCA0MSwgMTcsIDIyMiwgNjMsIAorICAgIDEzLCA0MSwgMjYsIDE3LCAyMDIsIDg0LCAxMywgNDEsIDI2LCAxNywgMTA1LCAxMywgNDEsIDI2LCAxNywgMTA4LCAxMywgCisgICAgNDEsIDI2LCAxNywgMTQ3LCAxMywgNDEsIDI2LCAxNywgMTQ5LCAxMywgNDEsIDI2LCAxNywgMTcwLCAxMywgNDEsIDI2LCAKKyAgICAxNywgMTk1LCAxMywgNDEsIDI2LCAxNywgMjEzLCAxMTEsIDEzLCA0MSwgMjYsIDE3LCAxOTksIDEzLCA0MSwgMjYsIDE3LCAKKyAgICAyMjIsIDYzLCAxMywgMjI0LCA0MSwgMTcsIDIwMiwgODQsIDEzLCAyMjQsIDQxLCAxNywgMTA1LCAxMywgMjI0LCA0MSwgMTcsIAorICAgIDEwOCwgMTMsIDIyNCwgNDEsIDE3LCAxNDcsIDEzLCAyMjQsIDQxLCAxNywgMTQ5LCAxMywgMjI0LCA0MSwgMTcsIDE3MCwgCisgICAgMTMsIDIyNCwgNDEsIDE3LCAxOTUsIDEzLCAyMjQsIDQxLCAxNywgMjEzLCAxMTEsIDEzLCAyMjQsIDQxLCAxNywgMTk5LCAKKyAgICAxMywgMjI0LCA0MSwgMTcsIDIyMiwgNjMsIDIxLCAxMjgsIDIzMSwgMzUsIDIxLCAyMzcsIDEyMCwgMjMxLCAzNSwgMjEsIAorICAgIDIzNywgMTE2LCAyMzEsIDM1LCAyMSwgMjM3LCAxMDUsIDIzMSwgMzUsIDIxLCAyMzcsIDEwOSwgMjMxLCAzNSwgMjEsIDIzNywgCisgICAgMTIyLCAyMzEsIDM1LCAyMSwgMTI4LCAxMjIsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMjAsIDEyMiwgMjQ4LCAxMTcsIDIxLCAKKyAgICAxMjgsIDE0OCwgMjA2LCAyNDgsIDEyMiwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMjE2LCAxODgsIDIyOSwgMjksIDIxLCAKKyAgICAxMjgsIDEyMiwgMjQ1LCA5NywgMjEsIDEyOCwgMTIyLCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAyMzYsIDIzNiwgMjI3LCAKKyAgICAwLCAyMSwgMjM3LCAxMjAsIDEyMiwgMjM2LCAyMzcsIDIxLCAxMjgsIDEyMiwgMjI0LCAxNDgsIDIxLCAyMzcsIDEyMCwgCisgICAgMTIyLCAyMjQsIDE0OCwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjE2LCAxODgsIAorICAgIDIyOSwgMjgsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxMTIsIDEwMSwgMjM2LCAyMzUsIAorICAgIDIxLCAxMjgsIDEyMiwgMjM2LCAyMzYsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwNywgMjEsIAorICAgIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxMjIsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDEwMSwgCisgICAgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMjQ1LCA5NywgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgCisgICAgMjA4LCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMTI3LCAyMSwgMjM3LCAxMjAsIDEyMiwgMTAxLCAyNDUsIAorICAgIDEyNywgMjEsIDEyOCwgMTAxLCAyNDgsIDExOCwgMTE1LCAyMzEsIDM1LCAyMSwgMTI4LCAxMjIsIDI0OCwgMTE4LCAxMTUsIAorICAgIDIyNCwgMTQ4LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjA5LCAyMSwgMjEsIDIzNywgMTIwLCAxMjIsIDEwMSwgMjA5LCAyMSwgCisgICAgMjEsIDEyOCwgMTIyLCAxMDEsIDIxMSwgNTMsIDE0OCwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDgsIDExOCwgCisgICAgMTQ4LCAyMTEsIDUyLCAyMSwgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDIzNiwgCisgICAgMjM2LCAyMTEsIDE4NiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMTIsIDEwMSwgMjM2LCAyMzYsIDE0OCwgMjEyLCAKKyAgICAxNTUsIDIxLCAxMjgsIDEyMiwgMTEyLCAxMDEsIDIzNiwgMjM2LCAxNDgsIDI0NSwgMjA3LCAyMSwgMTI4LCAxMjIsIDIzNiwgCisgICAgMjM2LCAxMDEsIDExMiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDExMiwgMjExLCAxODYsIDE0OCwgMjM5LCAKKyAgICAxNTEsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDI0NSwgOTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDI0NiwgNjAsIAorICAgIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDIzNiwgMTE0LCAyMSwgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyMzYsIDIzNSwgMjEsIAorICAgIDEyOCwgMTQ4LCAyNDgsIDEwNCwgMTIyLCAxMDEsIDIxMSwgNTIsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMTQ4LCAKKyAgICAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxNDgsIDIxMiwgMTU2LCAyNDUsIDIwNywgMjEsIDEyOCwgCisgICAgMTIyLCAxMDEsIDI0NSwgMjA4LCAxNDgsIDIxMiwgMTU2LCAyNDgsIDExNywgMjEsIDEyOCwgMTAxLCAxNDgsIDIzNiwgMTE1LCAKKyAgICAxMjIsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjM2LCAxMTUsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgCisgICAgMTAxLCAyNDUsIDIwOCwgMjM2LCAyMzYsIDE0OCwgMjEyLCAxNTUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDEyOCwgMTQ4LCAKKyAgICAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxNDgsIDIzOSwgMTUxLCAyMSwgMTI4LCAxMjIsIDEwMSwgCisgICAgMjQ1LCAyMDgsIDI0NSwgOTgsIDE0OCwgMjM5LCAxNTEsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyNDUsIDk4LCAxMjIsIDIwNiwgCisgICAgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjQ1LCA5OCwgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTAxLCAxNDgsIDQzLCAKKyAgICAxMjIsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMDEsIDE0OCwgNDMsIDEyMiwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMTQ4LCAKKyAgICAyNTAsIDIxNiwgMjE5LCAyMTIsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyNTAsIDIxNiwgMjMxLCA1MCwgCisgICAgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxNDgsIDQzLCAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDEwMSwgCisgICAgMTQ4LCAyNDUsIDIwOCwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDI1MCwgMjE2LCAyMTksIDIxMSwgMjEsIAorICAgIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjUwLCAyMTUsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyNTAsIDIxNiwgMjE5LCAyMTIsIDEyMiwgCisgICAgMjA2LCAyMjQsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyNTAsIDIxNiwgMjE5LCAyMTIsIDEyMiwgMjQ1LCAxMjcsIDIxLCAxMjgsIAorICAgIDEwMSwgMTQ4LCAyNTAsIDIxNiwgMTIyLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxNDgsIDIzNiwgMTE1LCAxMDEsIDIzNiwgCisgICAgMjM1LCAyMSwgMjM3LCAxMTEsIDIzOSwgMTQ3LCAyMzksIDI1MywgMjEsIDIzNywgMTExLCAyMzksIDE0NywgMjM5LCAyNTQsIAorICAgIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIzOSwgMTQ3LCAyMzksIDI1NCwgMjM2LCAyMzUsIDIxLCAyMzcsIDExMSwgMjM5LCAKKyAgICAxNDcsIDIzOSwgMjU0LCAyNDUsIDIwNywgMjEsIDIzNywgMTExLCAyMzksIDE0NywgMjM5LCAyNTQsIDI0NSwgMjA4LCAyMTEsIAorICAgIDE5MywgMjEsIDIzNywgMTE4LCAyMzksIDE0NywgMjM5LCAyNTQsIDI0NSwgMjA3LCAyMSwgMTI4LCAyMzksIDE0NywgMjM5LCAKKyAgICAyNTQsIDI0NSwgMjA4LCAyNDgsIDExNywgMjEsIDIzNywgMTA5LCAyMzksIDE0NywgMjM5LCAyNTQsIDI0NSwgMjA3LCAyMSwgCisgICAgMjM3LCAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODUsIDIxLCAyMzcsIDExMSwgMjM3LCA0NiwgMjM5LCAyMzMsIAorICAgIDIzOSwgMjU0LCAyMTEsIDE4NSwgMjEsIDIzNywgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzksIDE0NywgCisgICAgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMjM3LCA0NiwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM5LCAxNDcsIAorICAgIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDI0OCwgMTE3LCAyMSwgMjM3LCAKKyAgICAxMTEsIDIzNywgNDYsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIzOSwgCisgICAgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDE0OCwgMjM5LCAxNTEsIDIxLCAyMzcsIDExNiwgMjM5LCAyMzMsIDIzOSwgMjU0LCAKKyAgICAyMTEsIDE4NSwgMjEsIDIzNywgMTE2LCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMjAsIDgsIDIxLCAyMzcsIAorICAgIDEwOSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjIwLCA4LCAyMSwgMjM3LCAxMDUsIDIzOSwgMjMzLCAyMzksIAorICAgIDI1NCwgMjExLCAxODUsIDIxLCAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM2LCAyMzUsIDIxLCAKKyAgICAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM2LCAyMzYsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIAorICAgIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM2LCAyMzYsIDIyMSwgMTkyLCAyMDksIDIxLCAyMSwgMjM3LCAKKyAgICAxMTAsIDIxLCAyMzcsIDExMSwgMjQ4LCAxMDQsIDIxOSwgMTM1LCAyNDAsIDk0LCAyMSwgMjM3LCAxMTEsIDIzNywgNDUsIAorICAgIDIxLCAyMzcsIDExMSwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTExLCAyMzcsIDQ2LCAxNDgsIDIxMiwgMTU1LCAyMSwgCisgICAgMjM3LCAxMTEsIDE0OCwgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgMTExLCAyMTEsIAorICAgIDE5NCwgMTIyLCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMTEsIDIxMSwgMTk0LCAyNDYsIDIxNywgMjEsIDIzNywgMTExLCAKKyAgICAyMTEsIDE5NCwgMjQ2LCAyMTgsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExMSwgMjExLCAxOTQsIDI0NiwgMjE4LCAxNDgsIAorICAgIDIxMiwgMTU2LCAyNDgsIDExNywgMjEsIDIzNywgMTExLCAyMTEsIDE5NCwgMjI3LCA4NSwgMjEsIDIzNywgMTE3LCAyMSwgCisgICAgMjM3LCAxMTgsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExOCwgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIDExOCwgCisgICAgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgMTA3LCAyNDUsIDk0LCAyMSwgMjM3LCAxMDYsIDIxLCAyMzcsIDExNiwgMjIwLCA4LCAKKyAgICAyMSwgMjM3LCAxMTUsIDIxLCAyMzcsIDExNiwgMTcxLCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMTYsIDE0OCwgMjEyLCAKKyAgICAxNTUsIDIxLCAyMzcsIDExNiwgMTcxLCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTE2LCAyMjEsIDE5MiwgMjA5LCAKKyAgICAyMSwgMjEsIDIzNywgMTE2LCAxNzEsIDE0OCwgMjM5LCAxNTEsIDIxLCAyMzcsIDExNiwgMTQ4LCAyMzksIDE1MSwgMjEsIAorICAgIDIzNywgMTE0LCAyMjAsIDgsIDIxLCAyMzcsIDExMywgMjEsIDIzNywgMTE5LCAyMSwgMjM3LCAxMDQsIDIxLCAyMzcsIDEwNSwgCisgICAgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTA1LCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTA1LCAxNDgsIDIzOSwgCisgICAgMTUxLCAyMSwgMjM3LCAxMDksIDIyMCwgOCwgMjEsIDIzNywgMTA5LCAxNzEsIDE0OCwgMjM5LCAxNTEsIDIxLCAyMzcsIAorICAgIDEwOCwgMjEsIDIzNywgMTA5LCAyMTIsIDM2LCAyMSwgMjM3LCAxMDksIDE3MSwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgCisgICAgMTA5LCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMDksIDE3MSwgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgCisgICAgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgMTQ4LCAyMTIsIDE1NiwgMjA4LCAxMjcsIDIzMSwgMzUsIDIxLCAKKyAgICAyMzcsIDEwOSwgMTQ4LCAyNDgsIDEwNCwgMTAxLCAyMTUsIDI1MiwgMjEsIDIzNywgMTIxLCAyMSwgMTI4LCAxMjIsIDEwMSwgCisgICAgMjE1LCAyNTIsIDIxLCAyMzcsIDEyMCwgMTIyLCAxMDEsIDIxNSwgMjUyLCAyMSwgMjM3LCAxMDksIDEyMiwgMTAxLCAyMTUsIAorICAgIDI1MiwgMjEsIDIzNywgMTIyLCAxMjIsIDEwMSwgMjE1LCAyNTIsIDIxLCAyMzcsIDEwOSwgMjI3LCA4NSwgMjEsIDEyOCwgCisgICAgMTIyLCAxMDEsIDIxNSwgMjUzLCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDIxNSwgMjUzLCAyNDUsIDIwNywgMjEsIAorICAgIDIzNywgMTA5LCAxMjIsIDEwMSwgMjE1LCAyNTMsIDI0NSwgMjA3LCAyMSwgMTI4LCAyMjcsIDg2LCAyNDIsIDcwLCAyMSwgCisgICAgMTI4LCAyMjcsIDg2LCAxMjEsIDIxNSwgMjQ4LCAyMTEsIDUyLCAyMSwgMTI4LCAyMjcsIDg2LCAxMjEsIDIxNSwgMjQ4LCAKKyAgICAyNDUsIDg1LCAyMSwgMTI4LCAyMjcsIDg2LCAxMjEsIDIxOSwgMjIwLCAyNDYsIDYwLCAyMSwgMTI4LCAyMjcsIDg2LCAyMDYsIAorICAgIDIyNCwgMjEsIDEyOCwgMTQ4LCAyMDYsIDI0OCwgMjI3LCA4NiwgMjA2LCAyMjQsIDIxLCAyMzcsIDEyMCwgMjI3LCA4NiwgCisgICAgMjA2LCAyMjQsIDIxLCAyMzcsIDEwNSwgMjI3LCA4NiwgMjA2LCAyMjQsIDIxLCAyMzcsIDEyMiwgMjI3LCA4NiwgMjA2LCAKKyAgICAyMjQsIDIxLCAxMjgsIDIyNywgODYsIDIxNiwgMTg4LCAyMjksIDI5LCAyMSwgMTI4LCAyMjcsIDg2LCAyNDgsIDExNywgMjEsIAorICAgIDEyOCwgMjI3LCA4NiwgMjA4LCAxMjgsIDIwOSwgMjEsIDIxLCAxMjgsIDIyNywgODYsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgCisgICAgMjI3LCA4NiwgMjA5LCAyMSwgMjEsIDEyOCwgMjI3LCA4NiwgMTIyLCAyMDksIDIxLCAyMSwgMjM3LCAxMDksIDIyNywgODYsIAorICAgIDEyMiwgMjA5LCAyMSwgMjEsIDIzNywgMTIyLCAyMjcsIDg2LCAxMjIsIDE0OCwgMTIyLCAxNDgsIDIxOSwgMjExLCAyMSwgCisgICAgMjM3LCAxMjIsIDIyNywgODYsIDEyMiwgMTQ4LCAxMjIsIDIwOSwgMjEsIDIxLCAxMjgsIDIyNywgODYsIDIzMSwgMzUsIDIxLCAKKyAgICAyMzcsIDEyMCwgMjI3LCA4NiwgMjMxLCAzNSwgMjEsIDIzNywgMTA5LCAyMjcsIDg2LCAyMzEsIDM1LCAyMSwgMjM3LCAxMjIsIAorICAgIDIyNywgODYsIDIzMSwgMzUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMjcsIDg1LCAyMSwgMjM3LCAxMjAsIDEyMiwgMTAxLCAKKyAgICAyMjcsIDg1LCAyMSwgMjM3LCAxMDksIDEyMiwgMTAxLCAyMjcsIDg1LCAyMSwgMjM3LCAxMDksIDIxNSwgMjUyLCAyMSwgCisgICAgMjM3LCAxMjIsIDEyMiwgMTAxLCAyMjcsIDg1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAxMzEsIDIyNywgODUsIDIxLCAKKyAgICAyMzcsIDEyMCwgMTIyLCAxMDEsIDI0NSwgMTMxLCAyMjcsIDg1LCAyMSwgMTI4LCAyMTUsIDI1MywgMjQyLCA3MCwgMjEsIAorICAgIDIzNywgMTA5LCAyMTUsIDI1MywgMTIxLCAxMjIsIDE0OCwgMjM2LCAxMTYsIDIyNCwgMTQ4LCAyMSwgMjM3LCAxMjIsIDIxNSwgCisgICAgMjUzLCAxMjEsIDEwMSwgMTQ4LCAxMjIsIDI0NSwgMTMwLCAyMSwgMTI4LCAyMTUsIDI1MywgMjA2LCAyMjQsIDIxLCAxMjgsIAorICAgIDIxNSwgMjUzLCAyMTYsIDE4OCwgMjI5LCAyOSwgMjEsIDEyOCwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMCwgCisgICAgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEwNSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMiwgMjE1LCAKKyAgICAyNTMsIDIyNywgODUsIDIxLCAxMjgsIDIxNSwgMjUzLCAyMjQsIDE0OCwgMjEsIDEyOCwgMjE1LCAyNTMsIDEwMSwgMjQ1LCAKKyAgICAyMDcsIDIxLCAxMjgsIDIxNSwgMjUzLCAxMDEsIDIxNiwgMTg4LCAyMjksIDI4LCAyMSwgMTI4LCAyMTUsIDI1MywgMjMxLCAKKyAgICAzNSwgMjEsIDEyOCwgMjE1LCAyNTMsIDIwOSwgMjEsIDIxLCAyMzcsIDEwNywgMjE1LCAyNTMsIDIwOSwgMjEsIDIxLCAxMjgsIAorICAgIDEyMiwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMCwgMTIyLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgCisgICAgMTE0LCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMjAsIDMxLCAyMSwgMjM3LCAxMDcsIDEyMiwgMjE1LCAyNTMsIDIyNywgCisgICAgODYsIDIxOSwgMjExLCAyMSwgMjM3LCAxMDcsIDEyMiwgMjE1LCAyNTMsIDIyNywgODYsIDIzMSwgNDksIDIxLCAyMzcsIAorICAgIDEwNywgMTIyLCAyMTUsIDI1MywgMjI3LCA4NiwgMjA2LCAyNDcsIDIxLCAyMzcsIDExNiwgMTIyLCAyMTUsIDI1MywgMjI3LCAKKyAgICA4NSwgMjEsIDIzNywgMTA5LCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMjIsIDEyMiwgMjE1LCAyNTMsIAorICAgIDIyNywgODYsIDIxOSwgMjExLCAyMSwgMjM3LCAxMjIsIDEyMiwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAxMjgsIDEwMSwgCisgICAgMjQyLCA3MCwgMjEsIDIzNywgMTA5LCAyMjQsIDE0OCwgMjEsIDEyOCwgMTAxLCAyMDYsIDIyNCwgMjEsIDIzNywgMTIwLCAKKyAgICAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMDEsIDIxNiwgMTg4LCAyMjksIDI5LCAyMSwgMTI4LCAxMDEsIDExMiwgMTQ4LCAKKyAgICAyMTIsIDE1NSwgMjEsIDIzNywgMTA3LCAxMDEsIDIwOSwgMjEsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyMjcsIDg1LCAyMSwgCisgICAgMTI4LCAxMDEsIDIyNywgODUsIDIxLCAxMjgsIDEwMSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMCwgMTAxLCAKKyAgICAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTE0LCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMjAsIDMxLCAyMSwgCisgICAgMjM3LCAxMTYsIDEwMSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEwOSwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NSwgCisgICAgMjEsIDIzNywgMTIyLCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMTksIDIxMSwgMjEsIDIzNywgMTIyLCAxMDEsIDIxNSwgCisgICAgMjUzLCAyMjcsIDg2LCAyMzEsIDQ5LCAyMSwgMjM3LCAxMjIsIDEwMSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIAorICAgIDEyMCwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjQ4LCAxMTcsIDIxLCAyMzcsIDExOCwgMTAxLCAyMTUsIDI1MywgMjI3LCAKKyAgICA4NiwgMjQ1LCAyMDcsIDIxLCAyMzcsIDExOCwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjQ1LCAyMDgsIDIxMiwgMTU1LCAKKyAgICAyMSwgMjM3LCAxMDcsIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDI0NSwgMjA4LCAyMTksIDIxMSwgMjEsIDIzNywgMTA3LCAKKyAgICAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyNDUsIDIwOCwgMjMxLCA0OSwgMjEsIDIzNywgMTA3LCAxMDEsIDIxNSwgMjUzLCAKKyAgICAyMjcsIDg2LCAyNDUsIDIwNywgMjEsIDIzNywgMTA5LCAxMjIsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAKKyAgICAxNTUsIDIxLCAyMzcsIDEwOSwgMTIyLCAxNDgsIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAxNTYsIDE0OCwgCisgICAgMjQzLCAyMjcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgMTQ4LCAyNDUsIDIwNywgMjEsIDEyOCwgMTIyLCAxNDgsIAorICAgIDIxMiwgMTU2LCAxNDgsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAxNTYsIDEyMiwgMjQ4LCAxMTcsIDIxLCAKKyAgICAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgMjQ3LCAyNTEsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAxNTYsIAorICAgIDEyMiwgMjM2LCAyMzcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMzksIDE1MiwgMTIyLCAyMTEsIDUyLCAyMSwgMTI4LCAxMjIsIAorICAgIDE0OCwgMjM5LCAxNTIsIDEyMiwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAxMTMsIDIxLCAxMjgsIDEyMiwgMTQ4LCAKKyAgICAyNDUsIDk0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjQ1LCA4OCwgMTQ4LCAyMzEsIDYsIDIxLCAyMzcsIDExOCwgMTIyLCAxNDgsIAorICAgIDI0NSwgODgsIDE0OCwgMjMxLCA2LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjQ1LCA4OCwgMTQ4LCAyMDYsIDI0NywgMjEsIDEyOCwgCisgICAgMTIyLCAxNDgsIDI0NiwgNjEsIDIxLCAyMzcsIDExNiwgMTIyLCAyMDksIDIxLCAyMSwgMjM3LCAxMTYsIDEyMiwgMTQ4LCAKKyAgICAyMjAsIDgsIDIxLCAyMzcsIDEwOSwgMTIyLCAxNDgsIDIyMCwgOCwgMjEsIDIzNywgMTA5LCAxMjIsIDE0OCwgMjI4LCA3LCAKKyAgICAyMSwgMjM3LCAxMDksIDEyMiwgMjA5LCAyMSwgMjEsIDIzNywgMTA5LCAxMjIsIDE0OCwgMjEyLCAzNiwgMjEsIDIzNywgCisgICAgMTIyLCAxMjIsIDE0OCwgMjE5LCAyMTEsIDIxLCAyMzcsIDEyMiwgMTIyLCAxNDgsIDIzMSwgNDksIDIxLCAyMzcsIDEyMiwgCisgICAgMTIyLCAyMDksIDIxLCAyMSwgMTI4LCAyMDksIDIxLCAyMSwgMTI4LCAxNDgsIDIzNywgNDUsIDIxLCAxMjgsIDE0OCwgMjEyLCAKKyAgICAxNTYsIDI0MywgMjI3LCAyMSwgMTI4LCAxNDgsIDIxMiwgMTU2LCAyNDUsIDIwNywgMjEsIDEyOCwgMTQ4LCAyMTIsIDE1NiwgCisgICAgMjQ4LCAxMTcsIDIxLCAxMjgsIDE0OCwgMjM5LCAxNTEsIDIxLCAxMjgsIDE0OCwgMjQ4LCAxMDQsIDEyMiwgMjI0LCAxNDgsIAorICAgIDIxLCAxMjgsIDE0OCwgMjQ4LCAxMDQsIDEwMSwgMjE1LCAyNTIsIDIxLCAxMjgsIDE0OCwgMjQ4LCAxMDQsIDIxNSwgMjUzLCAKKyAgICAyMjcsIDg1LCAyMSwgMTI4LCAxNDgsIDIwNiwgMjQ4LCAxMjAsIDIzOSwgMjUzLCAyMSwgMTI4LCAxNDgsIDExNSwgMTIwLCAKKyAgICAyMzksIDI1MywgMjEsIDEyOCwgMTQ4LCAyMDYsIDI0OCwgMTI2LCAyMzksIDI1MywgMjEsIDEyOCwgMTQ4LCAyMDYsIDI0OCwgCisgICAgMjM5LCAxNDcsIDIzOSwgMjUzLCAyMSwgMTI4LCAxNDgsIDExNSwgMjM5LCAxNDcsIDIxNiwgMTg4LCAyMjksIDI4LCAyMSwgCisgICAgMjM3LCAxMTIsIDIxLCAxMjgsIDIzNywgNDUsIDIxLCAyMDgsIDEyOSwgMjEyLCAxMTksIDIxLCAyMDgsIDEyOSwgMjIzLCAKKyAgICAyMjUsIDIxLCAyMDgsIDEyOSwgMjQ4LCAxMDMsIDIxLCAyMzgsIDIsIDIxMiwgMTE5LCAyMSwgMjM4LCAyLCAyMjMsIDIyNSwgCisgICAgMjEsIDIzOCwgMiwgMjQ4LCAxMDMsIDIxLCAyMTEsIDM3LCAyMTIsIDExOSwgMjEsIDIxMSwgMzcsIDIyMywgMjI1LCAyMSwgCisgICAgMjExLCAzNywgMjQ4LCAxMDMsIDIxLCAyNDcsIDIwMSwgMjEyLCAxMTksIDIxLCAyNDcsIDIwMSwgMjIzLCAyMjUsIDIxLCAKKyAgICAyNDcsIDIwMSwgMjQ4LCAxMDMsIDIxLCAyMTUsIDE0MywgMjEyLCAxMTksIDIxLCAyMTUsIDE0MywgMjIzLCAyMjUsIDIxLCAKKyAgICAyMTUsIDE0MywgMjQ4LCAxMDMsIDIxLCAyMTAsIDE4OSwgMjEwLCAxMDIsIDIxLCAyMTAsIDE4OSwgMjQ4LCAxMDMsIDIxLCAKKyAgICAyMTEsIDE3MywgMjI4LCA4LCAyMTIsIDExOSwgMjEsIDIxMSwgMTczLCA1LCAyMTIsIDExOSwgMjEsIDIxMSwgMTczLCAyMjgsIAorICAgIDgsIDIyMywgMjI1LCAyMSwgMjExLCAxNzMsIDUsIDIyMywgMjI1LCAyMSwgMjExLCAxNzMsIDIxMywgMTI2LCAyMSwgMjM5LCAKKyAgICAyMDgsIDIyOCwgOCwgMjEyLCAxMTksIDIxLCAyMzksIDIwOCwgNSwgMjEyLCAxMTksIDIxLCAyMzksIDIwOCwgMjI4LCA4LCAKKyAgICAyMjMsIDIyNSwgMjEsIDIzOSwgMjA4LCA1LCAyMjMsIDIyNSwgMjEsIDIzOSwgMjA4LCAyMTMsIDEyNiwgMjEsIDIxMSwgCisgICAgMTczLCAyMzksIDIwOCwgMjUwLCAyNTIsIDIxLCAyMjQsIDAsIDExMiwgMTIxLCAyMjgsIDcsIDIxLCAyMjQsIDAsIDExMiwgCisgICAgMTIxLCAyMTIsIDM2LCAyMSwgMjI0LCAwLCAxMTIsIDIxMywgMTI2LCAyMSwgMjI0LCAwLCAxMjEsIDIxMywgMTI2LCAyMSwgCisgICAgMjI0LCAwLCAxMTIsIDEyMSwgMjUwLCAyNTMsIDIyOCwgNywgMjEsIDIyNCwgMCwgMTEyLCAxMjEsIDI1MCwgMjUzLCAyMTIsIAorICAgIDM2LCAyMSwgMjI0LCAwLCAyMTIsIDE1NiwgMjA4LCAxNzMsIDIxMiwgMTU2LCAyMTQsIDE5MCwgMjEsIDIyMywgMjU1LCAKKyAgICAyNDAsIDMsIDI0NSwgMTk3LCAyMSwgMjI0LCAxLCAyNDAsIDMsIDI0NSwgMTk3LCAyMSwgMjIzLCAyNTUsIDIxMiwgMTIwLCAKKyAgICAyMTEsIDUzLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIxMiwgMTIwLCAyMTEsIDUzLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgCisgICAgMjEyLCAxMjAsIDIxMSwgNTMsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyMTIsIDEyMCwgMjExLCA1MywgMjI4LCA1LCAyMSwgCisgICAgMjIzLCAyNTUsIDIxMiwgMTIwLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjMsIDI1NSwgNTIsIDIxMSwgNTIsIDIxLCAKKyAgICAyMjMsIDI1NSwgNTIsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyMywgMjU1LCA1MiwgMjUwLCAyNTIsIDIxLCAyMjMsIAorICAgIDI1NSwgNTIsIDI1MCwgMjUzLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjMsIDI1NSwgMjQ1LCAxMzAsIDIxLCAyMjMsIAorICAgIDI1NSwgMjA4LCA3MCwgMjExLCA1MywgMjI0LCAzLCAyMSwgMjIzLCAyNTUsIDIwOCwgNzAsIDIwMywgMjIxLCAyMzksIDIxMSwgCisgICAgMjEsIDIyMywgMjU1LCAyMDgsIDcwLCAyNTAsIDI1MiwgMjEsIDIyMywgMjU1LCAyMDgsIDcwLCAyNTAsIDI1MywgMjAzLCAKKyAgICAyMjEsIDIzOSwgMjExLCAyMSwgMjIzLCAyNTUsIDI0OCwgMTIxLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDI0OCwgMTIxLCAKKyAgICAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjQ4LCAxMjEsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyNDUsIDE2NiwgMjEyLCAzNiwgCisgICAgMjEsIDIyMywgMjU1LCAyNDUsIDE2NiwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDI0NSwgMTY2LCAyMjgsIDcsIDIxLCAyMjMsIAorICAgIDI1NSwgMjQ1LCAxNjYsIDIxNSwgMTk2LCAyMSwgMjIzLCAyNTUsIDI0NiwgMTY5LCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIAorICAgIDI0NiwgMTY5LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjQ2LCAxNjksIDIyOCwgNywgMjEsIDIyMywgMjU1LCA5OCwgMjEyLCAKKyAgICAzNiwgMjEsIDIyMywgMjU1LCA5OCwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDk4LCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgCisgICAgMjAyLCAzMCwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMDIsIDMwLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjAyLCAzMCwgCisgICAgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDIxOSwgMzAsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjE5LCAzMCwgMjI1LCA5LCAKKyAgICAyMSwgMjIzLCAyNTUsIDIxOSwgMzAsIDIyOCwgNywgMjEsIDIwOCwgOTksIDIxNSwgMTk0LCAyMTIsIDExOSwgMjEsIDIwOCwgCisgICAgOTksIDIxNSwgMTk0LCAyNDIsIDc4LCAyMSwgMjA4LCA5OSwgMjE1LCAxOTQsIDI1MCwgMjUyLCAyMSwgMjA4LCA5OSwgMjE1LCAKKyAgICAxOTUsIDIxMiwgMTE5LCAyMSwgMjA4LCA5OSwgMjE1LCAxOTUsIDI0MiwgNzgsIDIxLCAyMDgsIDk5LCAyMTUsIDE5NSwgCisgICAgMjUwLCAyNTIsIDIxLCAyMDgsIDk5LCAyMTMsIDcxLCAyMSwgMjA4LCA5OSwgMjUwLCAxMDcsIDIxMSwgMjAyLCAyMTIsIAorICAgIDExOSwgMjEsIDIwOCwgOTksIDI1MCwgMTA3LCAyMTEsIDIwMiwgMjQyLCA3OCwgMjEsIDIwOCwgOTksIDI1MCwgMTA3LCAKKyAgICAyMTEsIDIwMiwgMjA4LCA2OSwgMjEsIDIyNCwgMiwgMjUwLCAxMiwgMjEyLCAzNiwgMjEsIDIyNCwgMiwgMjUwLCAxMiwgCisgICAgMjI1LCA5LCAyMSwgMjI0LCAyLCAyNTAsIDEyLCAyMjgsIDcsIDIxLCAyMjQsIDIsIDI1MCwgMTIsIDIyOCwgNSwgMjEsIAorICAgIDIyNCwgMiwgMjA4LCAxMjMsIDIxMiwgMzYsIDIxLCAyMjQsIDIsIDIwOCwgMTIzLCAyMjUsIDksIDIxLCAyMjQsIDIsIDIwOCwgCisgICAgMTIzLCAyMjgsIDcsIDIxLCAyMjQsIDIsIDIwOCwgMTIzLCAyMjgsIDUsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyNTAsIDEyLCAKKyAgICAyMTIsIDM2LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgMjUwLCAxMiwgMjI1LCA5LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgCisgICAgMjUwLCAxMiwgMjI4LCA3LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgMjUwLCAxMiwgMjI4LCA1LCAyMSwgMjI0LCAyLCAyNDgsIAorICAgIDEwNCwgMjA4LCAxMjMsIDIxMiwgMzYsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyMDgsIDEyMywgMjI1LCA5LCAyMSwgMjI0LCAKKyAgICAyLCAyNDgsIDEwNCwgMjA4LCAxMjMsIDIyOCwgNywgMjEsIDIyNCwgMiwgMjQ4LCAxMDQsIDIwOCwgMTIzLCAyMjgsIDUsIAorICAgIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMTEsIDUzLCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjExLCA1MywgCisgICAgMjI1LCA5LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjExLCA1MywgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjExLCAKKyAgICA1MywgMjI4LCA1LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjI0LCAxLCA1MiwgCisgICAgMjExLCA1MiwgMjEsIDIyNCwgMSwgNTIsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyNCwgMSwgNTIsIDI1MCwgMjUyLCAKKyAgICAyMSwgMjI0LCAxLCA1MiwgMjUwLCAyNTMsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyNCwgMSwgMjQ1LCAxMzAsIDIxLCAKKyAgICAyMjQsIDEsIDIwOCwgNzAsIDIxMSwgNTMsIDIyNCwgMywgMjEsIDIyNCwgMSwgMjA4LCA3MCwgMjAzLCAyMjEsIDIzOSwgCisgICAgMjExLCAyMSwgMjI0LCAxLCAyMDgsIDcwLCAyNTAsIDI1MywgMjI0LCAzLCAyMSwgMjI0LCAxLCAyMDgsIDcwLCAyNTAsIAorICAgIDI1MywgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjI0LCAxLCAyNDgsIDEyMCwgMjEsIDIyNCwgMSwgMjQ1LCAxNjYsIDIxMiwgCisgICAgMzYsIDIxLCAyMjQsIDEsIDI0NSwgMTY2LCAyMjUsIDksIDIxLCAyMjQsIDEsIDI0NSwgMTY2LCAyMjgsIDcsIDIxLCAyMjQsIAorICAgIDEsIDI0NiwgMTY4LCAyMSwgMjI0LCAxLCA5OCwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgOTgsIDIyNSwgOSwgMjEsIDIyNCwgMSwgCisgICAgOTgsIDIyOCwgNywgMjEsIDIyNCwgMSwgMjAyLCAzMCwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjAyLCAzMCwgMjI1LCA5LCAKKyAgICAyMSwgMjI0LCAxLCAyMDIsIDMwLCAyMjgsIDcsIDIxLCAyMjQsIDEsIDIxOSwgMzAsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIAorICAgIDIxOSwgMzAsIDIyNSwgOSwgMjEsIDIyNCwgMSwgMjE5LCAzMCwgMjI4LCA3LCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk1LCAKKyAgICAyMTIsIDExOSwgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NSwgMjQyLCA3OCwgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NSwgMjUwLCAKKyAgICAyNTIsIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTQsIDIxMiwgMTE5LCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk0LCAyNDIsIDc4LCAKKyAgICAyMSwgMjA4LCAxMDAsIDIxNSwgMTk0LCAyNTAsIDI1MiwgMjEsIDIwOCwgMTAwLCAyMTMsIDcxLCAyMSwgMjIzLCAyNTUsIAorICAgIDI0NSwgODgsIDIxNywgNTYsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjE3LCA1NiwgMjI1LCA5LCAyMSwgCisgICAgMjIzLCAyNTUsIDI0NSwgODgsIDIxNywgNTYsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMTcsIDU2LCAyMjgsIAorICAgIDUsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjM3LCAxMzYsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjM3LCAKKyAgICAxMzYsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMzcsIDEzNiwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDI0NSwgCisgICAgODgsIDIzNywgMTM2LCAyMjgsIDUsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjA5LCAyNywgMjQ2LCA2MiwgMjEyLCAzNiwgCisgICAgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMDksIDI3LCAyNDYsIDYyLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgCisgICAgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMzYsIDE0LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgMjI4LCA3LCAKKyAgICAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjI3LCAxNSwgMjI1LCA5LCAyMSwgMjIzLCAKKyAgICAyNTUsIDIyNywgMTUsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyMjcsIDE1LCA1LCAyNDIsIDc4LCAyMSwgMjIzLCAyNTUsIAorICAgIDIwNCwgNzYsIDI0NSwgODgsIDUyLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0NSwgODgsIDUyLCAyMjUsIAorICAgIDksIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQ1LCA4OCwgNTIsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAKKyAgICAyNDUsIDg4LCAyMDgsIDcwLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0NSwgODgsIDIwOCwgNzAsIDIyNSwgCisgICAgOSwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyNDUsIDg4LCAyMDgsIDcwLCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjQ1LCAKKyAgICA4OCwgMjA5LCA4NCwgMjExLCA1MiwgMjEsIDIyMywgMjU1LCAyNDUsIDg2LCAyNDUsIDEzMSwgMjEyLCAzNiwgMjEsIDIyMywgCisgICAgMjU1LCAyNDUsIDg2LCAyNDUsIDEzMSwgMjI1LCA5LCAyMSwgMjE1LCAxOTQsIDIxMiwgMTE5LCAyMSwgMjE1LCAxOTQsIAorICAgIDI0MiwgNzgsIDIxLCAyMTUsIDE5NCwgMjUwLCAyNTQsIDIxLCAyMjMsIDI1NSwgMjEzLCA3MSwgMjEsIDIyMywgMjU1LCAKKyAgICAyNDUsIDg4LCAyMzYsIDIyOSwgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgMjM2LCAyMjksIAorICAgIDIzOSwgMTE5LCAyMDQsIDk5LCAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgCisgICAgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyMzYsIDIyOSwgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMTUsIDE5NCwgMjEyLCAKKyAgICAxMjAsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgMjEsIDIxNSwgMTk0LCA1MiwgMjM2LCAyMjksIDIzOSwgMTE5LCAKKyAgICAyMDQsIDk5LCAyMSwgMjE1LCAxOTQsIDI1MCwgMjUzLCAyMzYsIDIyOSwgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMjMsIAorICAgIDI1NSwgMjQ1LCA4OCwgMjM2LCAyMjksIDI0NiwgMTQ5LCAyMSwgMjIzLCAyNTUsIDIzNiwgMTQsIDIzNiwgMjI5LCAyNDYsIAorICAgIDE0OSwgMjEsIDIyMywgMjU1LCAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgCisgICAgMjM2LCAyMjksIDI0NiwgMTQ5LCAyMSwgMjE1LCAxOTQsIDIxMiwgMTIwLCAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMTUsIAorICAgIDE5NCwgNTIsIDIzNiwgMjI5LCAyNDYsIDE0OSwgMjEsIDIxNSwgMTk0LCAyNTAsIDI1MywgMjM2LCAyMjksIDI0NiwgMTQ5LCAKKyAgICAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0MywgMjI4LCAyMTksIDUyLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIAorICAgIDI0MywgMjI4LCAyMTksIDUyLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQzLCAyMjgsIDIxOSwgNTIsIDIyOCwgCisgICAgNywgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyNDUsIDg4LCAKKyAgICAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgNywgMjEsIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAyMjksIDI0NiwgMjI3LCA1LCAKKyAgICAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgOCwgMjQyLCA3OCwgMjEsIAorICAgIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAyMjksIDI0NiwgMjI3LCA1LCAyMDgsIDY5LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAKKyAgICAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgOCwgMjA4LCA2OSwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDI0NiwgCisgICAgMjI3LCA1LCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMjgsIDgsIDIxMiwgCisgICAgMTE5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDUsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIAorICAgIDIyNywgMTUsIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA4LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMzYsIAorICAgIDIyOSwgMjQ2LCAyMjcsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA3LCAKKyAgICAyMSwgMjE1LCAxOTUsIDIxMiwgMTIwLCAyMzYsIDIyOSwgMjQ2LCAyMjYsIDIxLCAyMTUsIDE5NSwgNTIsIDIzNiwgMjI5LCAKKyAgICAyNDYsIDIyNiwgMjEsIDIxNSwgMTk1LCAyNTAsIDI1MywgMjM2LCAyMjksIDI0NiwgMjI2LCAyMSwgMjI0LCAxLCAyNDUsIAorICAgIDg4LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDI0NSwgODgsIDIzNiwgMjI5LCAyMzksIDIwNSwgCisgICAgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDUsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIAorICAgIDIzNiwgMTQsIDIzNiwgMjI5LCAyMzksIDIwNSwgMjI4LCA4LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIAorICAgIDIyOSwgMjM5LCAyMDUsIDIwOCwgNzAsIDUsIDIwOCwgNjksIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgMjI5LCAyMzksIAorICAgIDIwNSwgMjA4LCA3MCwgMjI4LCA4LCAyMDgsIDY5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjM5LCAyMDUsIAorICAgIDUsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDIyOCwgOCwgMjEyLCAxMTksIAorICAgIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyMzksIDIwNSwgNSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgCisgICAgMjM2LCAyMjksIDIzOSwgMjA1LCAyMjgsIDgsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIzNiwgMjI5LCAyMzksIAorICAgIDIwNSwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjA0LCA3NiwgMjM2LCAyMjksIDIzOSwgMjA1LCAyMjgsIDcsIDIxLCAyMTUsIAorICAgIDE5NSwgMjEyLCAxMjAsIDIzNiwgMjI5LCAyMzksIDIwNCwgMjEsIDIxNSwgMTk1LCA1MiwgMjM2LCAyMjksIDIzOSwgMjA0LCAKKyAgICAyMSwgMjE1LCAxOTUsIDI1MCwgMjUzLCAyMzYsIDIyOSwgMjM5LCAyMDQsIDIxLCAyMjQsIDEsIDI0NSwgODgsIDIxMiwgMzYsIAorICAgIDIxLCAyMjQsIDEsIDI0NSwgODgsIDIyNSwgOSwgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjI4LCA3LCAyMSwgMjI0LCAxLCAKKyAgICAyNDUsIDg4LCAyMjgsIDUsIDIxLCAyMjQsIDEsIDI0NSwgODgsIDI0NSwgMjM3LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMTIsIAorICAgIDM2LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMTIsIDI0LCAyMSwgMjI0LCAKKyAgICAxLCAyMDQsIDc2LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMjgsIDcsIDIxLCAyMTUsIDE5NSwgMjEyLCAxMTksIAorICAgIDIxLCAyMTUsIDE5NSwgMjQyLCA3OCwgMjEsIDIxNSwgMTk1LCAyNTAsIDI1MiwgMjEsIDIyNCwgMSwgMjEzLCA3MiwgMjE5LCAKKyAgICA4MSwgMjEsIDIyMywgMjU1LCAyNTAsIDEwNywgMjQ2LCA2MiwgNSwgMjEyLCAxMTksIDIxLCAyMjMsIDI1NSwgMjUwLCAxMDcsIAorICAgIDI0NiwgNjIsIDIyNSwgMTAsIDIxMiwgMTE5LCAyMSwgMjIzLCAyNTUsIDI1MCwgMTA3LCAyNDYsIDYyLCA1LCAyNDIsIDc4LCAKKyAgICAyMSwgMjIzLCAyNTUsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMjUsIDEwLCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyNTAsIDEwNywgCisgICAgMjQ2LCA2MiwgMjM2LCAyMjksIDIwNCwgMTAwLCA1LCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIAorICAgIDIzNiwgMjI5LCAyMDQsIDEwMCwgMjI1LCAxMCwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAKKyAgICAyMzYsIDIyOSwgMjA0LCAxMDAsIDIyOCwgOCwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMzYsIAorICAgIDIyOSwgMjA0LCAxMDAsIDUsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMzYsIDIyOSwgMjA0LCAKKyAgICAxMDAsIDIyNSwgMTAsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMzYsIDIyOSwgMjA0LCAxMDAsIAorICAgIDIyOCwgOCwgMjQyLCA3OCwgMjEsIDIyMywgMjU1LCAyMDMsIDIyMSwgMjQ2LCA2MiwgMjM5LCAxMTksIDIxMiwgMTE5LCAyMSwgCisgICAgMjIzLCAyNTUsIDIwMywgMjIxLCAyNDYsIDYyLCAyMzksIDExOSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjAzLCAyMjEsIAorICAgIDI0NiwgNjIsIDIzNiwgMjI5LCAyMDQsIDEwMCwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDIwMywgMjIxLCAyNDYsIDYyLCAKKyAgICAyMzYsIDIyOSwgMjA0LCAxMDAsIDI0MiwgNzgsIDIxLCAyMjMsIDI1NSwgMjQwLCAzLCAyNDYsIDU5LCAyMTIsIDExOSwgMjEsIAorICAgIDIyMywgMjU1LCAyNDAsIDMsIDI0NiwgNTksIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDI0MCwgMywgMjQ2LCA1OSwgMjM2LCAKKyAgICAyMjksIDIwNCwgMTAwLCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjQwLCAzLCAyNDYsIDU5LCAyMzYsIDIyOSwgMjA0LCAxMDAsIAorICAgIDI0MiwgNzgsIDIxLCAyNDIsIDQsIDI1MCwgOTUsIDIxMiwgMzYsIDIxLCAyNDIsIDQsIDI1MCwgOTUsIDIyOCwgNywgMjEsIAorICAgIDI0MiwgNCwgMjQwLCA3NCwgMjEsIDI0MiwgNCwgMjEyLCAzOSwgMjEsIDI0MiwgNCwgMjA5LCAxNDUsIDIxLCAyNDIsIDQsIAorICAgIDIxNiwgMTE1LCAyMSwgMjQyLCA0LCAyMTIsIDEyNSwgMjEsIDI0MiwgNCwgMjEyLCAxMjYsIDI1MCwgMjUyLCAyMSwgMjQyLCAKKyAgICA0LCAyNDAsIDIyMSwgMjE5LCAyMjEsIDIwOCwgMjIxLCAyMSwgMjQyLCA0LCAyMzgsIDEyLCAyMSwgMjM3LCA2NCwgMjEsIAorICAgIDIzNywgNjUsIDIxNiwgMSwgMjEsIDIzNywgNjUsIDIyMywgMjU1LCAyMTEsIDUyLCAyMSwgMjM3LCA2NSwgMjIzLCAyNTUsIAorICAgIDIwOCwgMjI0LCAyMSwgMjM3LCA2NSwgMjI0LCAxLCAyMTEsIDUyLCAyMSwgMjM3LCA2NSwgMjIzLCAyNTUsIDI0NSwgODcsIAorICAgIDIxLCAyMzcsIDY1LCAyMjQsIDEsIDI0NSwgODcsIDIxLCAyMzcsIDY1LCAyMjQsIDQsIDI0NiwgNjEsIDIxLCAyNDAsIDEwMywgCisgICAgMjQzLCAxNjYsIDIxOCwgMzQsIDIyMSwgMTY4LCAyMzksIDE1MiwgMjA4LCAyMjIsIDIxLCAyNDAsIDEwMywgMjQzLCAxNjYsIAorICAgIDIxOCwgMzQsIDIyMSwgMTY4LCAxMTIsIDIxOSwgMjQ1LCAyNDIsIDcwLCAyMSwgMjQwLCAxMDMsIDI0MywgMTY2LCAyMTgsIAorICAgIDM0LCAyMjEsIDE2OCwgMTEyLCAyMTksIDI0NSwgMTIxLCAyMDgsIDIyMiwgMjEsIDI0MCwgMTkwLCAyMTEsIDUzLCAyMDYsIAorICAgIDIyNCwgMjEsIDI0MCwgMTkwLCAyMTEsIDUzLCAyMjIsIDIxNSwgMjEsIDI0MCwgMTkwLCAyMTEsIDUzLCAyNDIsIDcwLCAyMSwgCisgICAgMjQyLCA1NywgMjQwLCAxOTAsIDIyMiwgMjE2LCAyNDIsIDcwLCAyMSwgMjQyLCA1NywgMjQwLCAxOTAsIDEyMSwgMjIyLCAKKyAgICAyMTUsIDIxLCAyNDIsIDU3LCAyNDAsIDE5MCwgMTEyLCAyMjIsIDIxNSwgMjEsIDI0MiwgNTcsIDI0MCwgMTkwLCAyMjIsIAorICAgIDIxNiwgMjA2LCAyMjQsIDIxLCAyMzksIDE2NCwgMjIyLCAyMTUsIDIxLCAyMzksIDE2NCwgMjQ1LCAxOTcsIDIxLCAyMzksIAorICAgIDE2NCwgMjAzLCAyMjQsIDIxLCAyNDAsIDE4NSwgMjIwLCA4LCAyMSwgMjQwLCAxODUsIDIxMSwgMTcyLCAyMSwgMjQwLCAKKyAgICAxODUsIDI0NiwgMTUsIDIxLCAyNDAsIDE5MiwgMjQ4LCAzNCwgMjEyLCAxMTksIDIxLCAyNDAsIDE5MiwgMjQ4LCAzNCwgCisgICAgMjIzLCAyMjUsIDIxLCAyNDAsIDE4NSwgMTYyLCAyMjAsIDgsIDIxLCAyNDAsIDE4NSwgMjA0LCAyNywgMjIwLCA4LCAyMSwgCisgICAgMjQwLCAxODUsIDE2MiwgMjQ2LCAxNSwgMjEsIDI0MCwgMTg1LCAyMDQsIDI1LCAyMjQsIDMsIDIxLCAyNDAsIDE5MiwgMjA0LCAKKyAgICA5LCAyMSwgMjQwLCAxODYsIDIwNiwgMjI0LCAyMSwgMjQwLCAxODYsIDI0MiwgNzAsIDIxLCAyNDAsIDE4NiwgMjM5LCAxOTEsIAorICAgIDIxLCAyNDAsIDE4OCwgMjExLCA1MiwgMjEsIDI0MCwgMTg4LCAyMTEsIDUzLCAyNDIsIDc4LCAyMSwgMjQwLCAxODgsIDIxMSwgCisgICAgNTMsIDI1MCwgMjUyLCAyMSwgMjQwLCAxODksIDIxMSwgNTIsIDIxLCAyNDAsIDE4OSwgMjExLCA1MywgMjQyLCA3OCwgMjEsIAorICAgIDI0MCwgMTg5LCAyMTEsIDUzLCAyNTAsIDI1MiwgMjEsIDI0MCwgMTg4LCAyNDUsIDg1LCAyMSwgMjQwLCAxODksIDI0NSwgCisgICAgODUsIDIxLCAyNDAsIDE4OCwgMjQ2LCA1NiwgMjEsIDI0NiwgMTY0LCAyMTcsIDE4MiwgMjEsIDI0NiwgMTY0LCAyMjIsIAorICAgIDIxNSwgMjEsIDI0NiwgMTY0LCAyMTAsIDIzNCwgMjEsIDIwOSwgMTQ2LCAyNDYsIDE2NCwgMjM2LCAyNDQsIDIxLCAyMDksIAorICAgIDE0NiwgMjQ2LCAxNjQsIDIyNCwgMTQ4LCAyMSwgMjA5LCAxNDYsIDI0NiwgMTY0LCAyMjcsIDAsIDIxLCAyNDEsIDE4MSwgCisgICAgMjEsIDIyMSwgMTY4LCAyMjIsIDIxNSwgMjEsIDIyMSwgMTY4LCAyNDUsIDE5NywgMjEsIDIyMSwgMTY4LCAyMDMsIDIyMiwgCisgICAgMjEsIDIyMSwgMTY4LCAyMDQsIDIyLCAyMSwgMjUxLCA1NSwgMjQ4LCAyNywgMjE5LCAyMTEsIDIxLCAyNTEsIDU1LCAyMTAsIAorICAgIDIzMywgMjMxLCA0OSwgMjEsIDI1MSwgNTUsIDI0OCwgMjksIDUsIDIxNSwgMTkzLCAyMSwgMjUxLCA1NSwgMjEwLCAyMzUsIAorICAgIDUsIDIxNSwgMTkzLCAyMSwgMjQ3LCAyMTYsIDIzMSwgMjIsIDIxLCAyNDcsIDIxNiwgMjQwLCAyMTAsIDIxLCAyMjQsIDgsIAorICAgIDI0NiwgMTYsIDIyMiwgMjE1LCAyMSwgMjI0LCA4LCAyNDYsIDE2LCAyMzksIDE1MSwgMjEsIDIyNCwgOCwgMjQ2LCAxNiwgCisgICAgMjQ1LCAxOTcsIDIxLCAyMjQsIDgsIDIxMiwgMzEsIDIxLCAyMjQsIDgsIDIxMiwgMzIsIDIwMywgMjI0LCAyMSwgMjI0LCA4LCAKKyAgICAyMTIsIDMyLCAyMjAsIDgsIDIxLCAyMjQsIDgsIDIzOSwgMTE1LCAyMSwgMjI0LCA4LCAyMzksIDExNiwgMjAzLCAyMjQsIAorICAgIDIxLCAyMjQsIDgsIDIzOSwgMTE2LCAyMjAsIDgsIDIxLCAyMjQsIDgsIDE3MSwgMjQ2LCA2MSwgMjEsIDIyNCwgOCwgMTcxLCAKKyAgICAyMzksIDE1MSwgMjEsIDIyNCwgOCwgMTcxLCAyMDMsIDIyNCwgMjEsIDIyNCwgOCwgMTcxLCAyMTksIDIwNCwgMjEsIDIyNCwgCisgICAgOCwgMTcxLCAyMTksIDIwNSwgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIDE3MSwgMjE5LCAyMDUsIDIwMywgNTksIDIxLCAyMjQsIAorICAgIDgsIDE3MSwgMjE2LCAxNDMsIDIxLCAyMjQsIDgsIDE3MSwgMjE2LCAxNDQsIDIwMywgMjI0LCAyMSwgMjI0LCA4LCAxNzEsIAorICAgIDIxNiwgMTQ0LCAyMDMsIDU5LCAyMSwgMjI0LCA4LCAyMjksIDY2LCAyMSwgMjI0LCA4LCAyMjksIDY3LCAyMzksIDE1MSwgCisgICAgMjEsIDIyNCwgOCwgMjI5LCA2NywgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIDIwOSwgMTQ1LCAyMSwgMjI0LCA4LCAyMDksIAorICAgIDE0NiwgMjM5LCAxNTEsIDIxLCAyMjQsIDgsIDIwOSwgMTQ2LCAyMTAsIDIzNCwgMjEsIDIyNywgOTksIDIxNywgMjM5LCAKKyAgICAyMDgsIDE2OSwgMjEsIDIyNywgMTAxLCAyMjYsIDI1MSwgMTE1LCAyMDYsIDIyMCwgMjEsIDIyNywgMTAxLCAyMDYsIDIyMSwgCisgICAgMTE1LCAyMjYsIDI1MCwgMjEsIDIyNCwgOCwgMjQ1LCAxNjQsIDIxLCAyMjQsIDgsIDIwMywgMjIzLCAyMTIsIDExOSwgMjEsIAorICAgIDIyNCwgOCwgMjAzLCAyMjMsIDI0MiwgNzgsIDIxLCAyMDgsIDE1MSwgMjExLCA3MiwgMjE5LCAyMTIsIDI0MCwgNzYsIDIxLCAKKyAgICAyMDgsIDE1MSwgMjI3LCAxNDQsIDIyNywgOTgsIDIxLCAyMDgsIDE1MSwgMjA4LCAyMTEsIDI0OCwgMTA0LCAyMjcsIDk4LCAKKyAgICAyMSwgMjA4LCAxNTEsIDIwOCwgMjExLCAyMDgsIDEyNywgMjMxLCA3LCAyMjQsIDcsIDIxLCAyMDgsIDE1MSwgMjMxLCA3LCAKKyAgICAyMjQsIDgsIDIxNiwgMTE1LCAyMSwgMjA4LCAxNTEsIDIyMywgMjU0LCAyNTEsIDc5LCAyNDYsIDE2NSwgMjEsIDIwOCwgCisgICAgMTUxLCAyNDYsIDIxOCwgMjExLCA3MiwgMjE5LCAyMTEsIDIxLCAyMDgsIDE1MSwgMjQ2LCAyMTgsIDIzMSwgNywgMjI0LCA3LCAKKyAgICAyMSwgMjA5LCAxNzIsIDIxLCAyMDksIDE3MywgMjI0LCAzLCAyMSwgMjA5LCAxNzMsIDIyMCwgMzIsIDIwOCwgMTUwLCAyMSwgCisgICAgMjA5LCAxNzMsIDIyMCwgMzIsIDIwOCwgMTUxLCAyMjQsIDMsIDIxLCAyMDksIDE3MywgMjIwLCAzMiwgMjI3LCA5OCwgMjEsIAorICAgIDIwOSwgMTczLCAyMjAsIDMyLCAyMjcsIDk5LCAyMjQsIDMsIDIxLCAyMDksIDE3MywgMjQ4LCA1MCwgMjI3LCA5OCwgMjEsIAorICAgIDIyMywgMjU1LCAyMzAsIDE2NSwgMjEsIDIyNCwgMSwgMjMwLCAxNjUsIDIxLCAyMjIsIDIzNywgMjEsIDIzNywgMTQ1LCAyMSwgCisgICAgMjQwLCAyMTMsIDIxLCAyMTIsIDIxMSwgMjM2LCAyMzQsIDIxMSwgMjAzLCAyMSwgMjEyLCAyMTEsIDIzNiwgMjM0LCAyMTgsIAorICAgIDMzLCAyMSwgMjA0LCA5OCwgMjEyLCAyMTEsIDIzNiwgMjM0LCAyMjQsIDYsIDIxLCAyMzksIDIwMywgMjEyLCAyMTEsIDIzNiwgCisgICAgMjM0LCAyMjQsIDYsIDIxLCAyMTIsIDIxMSwgMjA4LCAyMjMsIDIzOSwgMTIwLCAyMDQsIDEwNCwgMjEsIDIwOCwgMTM0LCAKKyAgICAyMTEsIDUzLCAyMTEsIDQxLCAyMSwgMjA4LCAxMzQsIDI0NSwgODYsIDI0OCwgMTIwLCAyMSwgMjA4LCAxMzUsIDIwNywgCisgICAgMTM3LCAyMSwgMjA2LCAyMjEsIDI0OCwgMTgsIDIwOCwgMjIzLCAyMzksIDEyMCwgMjM2LCAyMzQsIDIzMCwgOTUsIDIxLCAKKyAgICAyMjcsIDEyNiwgMjQ1LCAyMzgsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTUsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTQsIDIxLCAKKyAgICAyMjcsIDEyNiwgMjI3LCAxOTMsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTIsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTEsIDIxLCAKKyAgICAyMjcsIDEyNiwgMjI3LCAxOTAsIDIxLCAyMjcsIDEyNiwgMjI3LCAxODksIDIxLCAyNDAsIDIsIDIxLCAyMjcsIDQ1LCAyMTEsIAorICAgIDIyOCwgMjEsIDIyNywgNDYsIDIxMSwgMjI4LCAyMSwgMjI3LCA0NywgMjM3LCA0MSwgMjEsIDIyNywgNDcsIDIwNCwgMjMsIAorICAgIDIxLCAyMjcsIDQ3LCAyNDQsIDI0LCAyMSwgMjI3LCA0NywgMjM3LCA2NSwgMjIyLCAyMzcsIDIxLCAyMjcsIDQ3LCAyMDgsIAorICAgIDEzNiwgMjEsIDIyNywgNDcsIDIyNywgMTI1LCAyNDMsIDE5OCwgMjEsIDI0NSwgMjMzLCAyMSwgMjM5LCAxMDIsIDIxMSwgCisgICAgNjEsIDIxLCAyMTMsIDE0MywgMjEsIDI0NSwgMjQyLCAyMSwgMjE5LCA3NiwgMjEsIDI0MCwgMTAsIDIyNCwgNjYsIDIxLCAKKyAgICAyNDAsIDEwLCAyMjQsIDY1LCAyMSwgMjQwLCAxMCwgMjI0LCA2NCwgMjEsIDI0MCwgMTAsIDIyNCwgNjMsIDIxLCAyNDAsIAorICAgIDEwLCAyMjQsIDYyLCAyMSwgMjE1LCAxOTcsIDIyNCwgNjYsIDIxLCAyMTUsIDE5NywgMjI0LCA2NSwgMjEsIDIxNSwgMTk3LCAKKyAgICAyMjQsIDY0LCAyMSwgMjE1LCAxOTcsIDIyNCwgNjMsIDIxLCAyMTUsIDE5NywgMjI0LCA2MiwgMjEsIDIxNSwgMTk3LCAyMjQsIAorICAgIDYxLCAyMSwgMjE1LCAxOTcsIDIyNCwgNjAsIDIxLCAyMTUsIDE5NywgMjI0LCA1OSwgMjEsIDIxNSwgMTk3LCAyMjQsIDczLCAKKyAgICAyMSwgMjE1LCAxOTcsIDIyNCwgNzIsIDIxLCAyMTUsIDE5NywgMjI0LCA3MSwgMjEsIDIxNSwgMTk3LCAyMjQsIDcwLCAyMSwgCisgICAgMjE1LCAxOTcsIDIyNCwgNjksIDIxLCAyMTUsIDE5NywgMjI0LCA2OCwgMjEsIDIxNSwgMTk3LCAyMjQsIDY3LCA3MywgNzIsIAorICAgIDQsIDIyNiwgMTg0LCAyMjksIDEwMCwgNzMsIDcyLCA0LCAyMjYsIDE4MCwgMTczLCA3MywgNzIsIDQsIDIyNiwgMTc4LCAKKyAgICAyMjgsIDIwOSwgNzMsIDcyLCA0LCAyMjYsIDU0LCAyMjksIDE5OCwgNzMsIDcyLCA0LCAyMjYsIDI0LCAyMjksIDIwMSwgNzMsIAorICAgIDcyLCA0LCAyMjYsIDQzLCAyMjksIDYsIDczLCA3MiwgNCwgMjI2LCA3MSwgMjI5LCAyNiwgNzMsIDcyLCA0LCAyMjUsIDE5NiwgCisgICAgMjI4LCAyMDMsIDczLCA3MiwgNCwgMjI2LCAxNzUsIDIwNCwgMzAsIDczLCA3MiwgNCwgMjI2LCAxNzMsIDIwNCwgMTExLCAKKyAgICA3MywgNzIsIDQsIDIyNiwgMTcxLCAyMDMsIDIxNywgNzMsIDcyLCA0LCAyMjUsIDI0OSwgMjA0LCA1NSwgNzMsIDcyLCA0LCAKKyAgICAyMjYsIDEsIDIwNCwgNjIsIDczLCA3MiwgNCwgMjI2LCA1LCAyMDMsIDI0NCwgNzMsIDcyLCA0LCAyMjYsIDc0LCAyMDQsIDAsIAorICAgIDczLCA3MiwgNCwgMjI1LCAxODEsIDIwMywgMjEzLCA3MywgNzIsIDQsIDIyNSwgMjMyLCAyMDQsIDUzLCA3MywgNzIsIDQsIAorICAgIDIyNiwgNTgsIDIwMywgMjAxLCA3MywgNzIsIDQsIDIyNiwgNzAsIDIwMywgMjAzLCA3MywgNzIsIDQsIDIyNSwgMjM2LCAKKyAgICAyMDMsIDIwMiwgNzMsIDcyLCA0LCAyMjYsIDE2OSwgMjI0LCAxMTAsIDczLCA3MiwgNCwgMjI2LCAxNjcsIDIyNSwgMTIyLCAKKyAgICA3MywgNzIsIDQsIDIyNiwgMTY1LCAyMjMsIDIxOSwgNzMsIDcyLCA0LCAyMjYsIDYwLCAyMjQsIDI0MCwgNzMsIDcyLCA0LCAKKyAgICAyMjYsIDI1LCAyMjQsIDU0LCA3MywgNzIsIDQsIDIyNSwgMjIxLCAyMjMsIDI0MywgNzMsIDcyLCA0LCAyMjUsIDE4NiwgCisgICAgMjIzLCAyMzcsIDczLCA3MiwgNCwgMjI2LCAxNjMsIDI0OCwgODYsIDczLCA3MiwgNCwgMjI2LCAxNjAsIDI0OSwgMzIsIDczLCAKKyAgICA3MiwgNCwgMjI2LCAxNTgsIDI0NywgMTkzLCA3MywgNzIsIDQsIDIyNSwgMjI1LCAyNDgsIDE1MCwgNzMsIDcyLCA0LCAyMjYsIAorICAgIDIyLCAyNDgsIDE2MiwgNzMsIDcyLCA0LCAyMjYsIDE2LCAyNDgsIDEwLCA3MywgNzIsIDQsIDIyNSwgMjM3LCAyNDgsIDIzLCAKKyAgICA3MywgNzIsIDQsIDIyNiwgMTQ4LCA3NSwgNzMsIDcyLCA0LCAyMjYsIDE0NiwgNjMsIDczLCA3MiwgNCwgMjI2LCAxNDQsIAorICAgIDY4LCA3MywgNzIsIDQsIDIyNSwgMjEyLCAyNDEsIDE2MSwgNzMsIDcyLCA0LCAyMjYsIDE5LCA3NCwgNzMsIDcyLCA0LCAKKyAgICAyMjUsIDIxMCwgMjIwLCAxOCwgNzMsIDcyLCA0LCAyMjUsIDIyOCwgNzgsIDczLCA3MiwgNCwgMjI1LCAyMzgsIDI0MSwgCisgICAgMTQ1LCA3MywgNzIsIDQsIDIyNSwgMjQ0LCAyMzEsIDQ5LCA3MywgNzIsIDQsIDIyNSwgMjQwLCAyMzEsIDQ5LCA3MywgNzIsIAorICAgIDQsIDIyNSwgMTgwLCAyNTAsIDIzMSwgNzMsIDcyLCA0LCAyMjUsIDE5NywgMjQxLCA5MiwgNzMsIDcyLCA0LCAyMjYsIDEzMywgCisgICAgMjEyLCAxNjIsIDczLCA3MiwgNCwgMjI2LCAxMzEsIDIxNSwgMzYsIDczLCA3MiwgNCwgMjI2LCAxMjksIDIxMSwgMTAsIDczLCAKKyAgICA3MiwgNCwgMjI1LCAyMTMsIDIxNCwgMTY1LCA3MywgNzIsIDQsIDIyNiwgMywgMjE0LCAxNzcsIDczLCA3MiwgNCwgMjI1LCAKKyAgICAyMzksIDIxMSwgMjUwLCA3MywgNzIsIDQsIDIyNiwgNDAsIDIxMiwgMTMsIDczLCA3MiwgNCwgMjI1LCAxNzksIDIxMiwgCisgICAgMTYxLCA3MywgNzIsIDQsIDIyNiwgMTE5LCAyMjcsIDE0OCwgNzMsIDcyLCA0LCAyMjYsIDExNywgMjI4LCAxMTMsIDczLCAKKyAgICA3MiwgNCwgMjI2LCAxMTUsIDIyNiwgMjM5LCA3MywgNzIsIDQsIDIyNiwgMzUsIDIyNywgMjI2LCA3MywgNzIsIDQsIDIyNiwgCisgICAgNDYsIDIyNywgMjM0LCA3MywgNzIsIDQsIDIyNiwgNjUsIDIyNywgMTgsIDczLCA3MiwgNCwgMjI1LCAyMjIsIDIyNywgNDksIAorICAgIDczLCA3MiwgNCwgMjI2LCA5LCAxNjMsIDIyNywgMjM0LCA3MywgNzIsIDQsIDIyNiwgMTQxLCAyNDMsIDIzMywgNzMsIDcyLCAKKyAgICA0LCAyMjYsIDEzOCwgMjQ0LCAyMTIsIDczLCA3MiwgNCwgMjI2LCAxMzUsIDI0MiwgNDIsIDczLCA3MiwgNCwgMjI2LCAzMCwgCisgICAgMjQ0LCA2MSwgNzMsIDcyLCA0LCAyMjUsIDE5NSwgMjQzLCA5MCwgNzMsIDcyLCA0LCAyMjUsIDE5NCwgMjQzLCAxMTMsIDczLCAKKyAgICA3MiwgNCwgMjI2LCAxMjcsIDIwOSwgMiwgNzMsIDcyLCA0LCAyMjYsIDEyNCwgMjEwLCAyMiwgNzMsIDcyLCA0LCAyMjYsIAorICAgIDEyMiwgMjA3LCAyMDMsIDczLCA3MiwgNCwgMjI2LCAyOCwgMjA5LCAxNzYsIDczLCA3MiwgNCwgMjI2LCA2NCwgMjA5LCAKKyAgICAxODcsIDczLCA3MiwgNCwgMjI2LCAxNSwgMjA4LCAxNDgsIDczLCA3MiwgNCwgMjI2LCA1MCwgMTM1LCA3MywgNzIsIDQsIAorICAgIDIyNiwgMTEzLCAyMzAsIDE0MSwgNzMsIDcyLCA0LCAyMjYsIDExMCwgMjMwLCAxODEsIDczLCA3MiwgNCwgMjI2LCAxMDgsIAorICAgIDIzMCwgODIsIDczLCA3MiwgNCwgMjI1LCAyMTgsIDIzMCwgMTU5LCA3MywgNzIsIDQsIDIyNiwgNiwgMjMwLCAxNjEsIDczLCAKKyAgICA3MiwgNCwgMjI1LCAyMTUsIDIzMCwgOTEsIDczLCA3MiwgNCwgMjI2LCA1NiwgMjMwLCAxMDEsIDczLCA3MiwgNCwgMjI1LCAKKyAgICAyMDAsIDE2MywgMjMwLCAxMDEsIDczLCA3MiwgNCwgMjI2LCAxMDYsIDIwMywgMTEsIDczLCA3MiwgNCwgMjI2LCAxMDMsIAorICAgIDE5OCwgNzMsIDcyLCA0LCAyMjYsIDEwMSwgMjAyLCAyMTMsIDczLCA3MiwgNCwgMjI2LCAxMCwgMjAzLCA0OSwgNzMsIDcyLCAKKyAgICA0LCAyMjYsIDM5LCAyMDMsIDUyLCA3MywgNzIsIDQsIDIyNSwgMjM0LCAyMDIsIDIzMiwgNzMsIDcyLCA0LCAyMjUsIDI1NCwgCisgICAgMjAyLCAyNDcsIDczLCA3MiwgNCwgMjI2LCA5NywgMjQwLCAyNiwgNzMsIDcyLCA0LCAyMjYsIDk1LCAyNDAsIDEwOCwgNzMsIAorICAgIDcyLCA0LCAyMjYsIDkzLCAyMzksIDEwOCwgNzMsIDcyLCA0LCAyMjYsIDQxLCAyNDAsIDUzLCA3MywgNzIsIDQsIDIyNiwgCisgICAgNDQsIDI0MCwgNjAsIDczLCA3MiwgNCwgMjI1LCAyNDIsIDIzOSwgMTc1LCA3MywgNzIsIDQsIDIyNiwgMzEsIDIzOSwgMTg2LCAKKyAgICA3MywgNzIsIDQsIDIyNSwgMTc4LCAyMzksIDEwNywgNzMsIDcyLCA0LCAyMjYsIDE4LCAyNDAsIDgxLCA3MywgNzIsIDQsIAorICAgIDIyNiwgOTEsIDIyMiwgNjgsIDczLCA3MiwgNCwgMjI2LCA4OSwgMjIzLCA4MywgNzMsIDcyLCA0LCAyMjYsIDg3LCAyMjEsIAorICAgIDQwLCA3MywgNzIsIDQsIDIyNiwgMiwgMjIyLCAyMzAsIDczLCA3MiwgNCwgMjI1LCAyMDYsIDIyMSwgMTg1LCA3MywgNzIsIAorICAgIDQsIDIyNSwgMTk5LCAyMzcsIDMsIDczLCA3MiwgNCwgMjI2LCA4MiwgMTUyLCA3MywgNzIsIDQsIDIyNSwgMTg5LCAyMzYsIAorICAgIDI2LCA3MywgNzIsIDQsIDIyNiwgODUsIDIzNywgNDgsIDczLCA3MiwgNCwgMjI2LCAyMywgMjM3LCA2NywgNzMsIDcyLCA0LCAKKyAgICAyMjYsIDgwLCAyMzYsIDExNywgNzMsIDcyLCA0LCAyMjUsIDIzNSwgMjM2LCAxMzYsIDczLCA3MiwgNCwgMjI2LCAzNiwgCisgICAgMjM3LCA0NywgNzMsIDcyLCA0LCAyMjUsIDI0NywgMjM2LCAxMTAsIDczLCA3MiwgNCwgMjI2LCA2NiwgMjM2LCAyMzgsIDczLCAKKyAgICA3MiwgNCwgMjI1LCAyNDUsIDIzNywgMTI2LCA3MywgNzIsIDQsIDIyNiwgMzIsIDIzNiwgMTMsIDczLCA3MiwgNCwgMjI2LCAKKyAgICA2NywgMjM3LCAzMywgNzMsIDcyLCA0LCAyMjUsIDE4MiwgMjM2LCAxMjAsIDczLCA3MiwgNCwgMjI2LCA3MywgMjM2LCAyNSwgCisgICAgNzMsIDcyLCA0LCAyMjYsIDI5LCAyMjIsIDE2OCwgNzMsIDcyLCA0LCAyMjYsIDc4LCAyMjIsIDE4MiwgNzMsIDcyLCA0LCAKKyAgICAyMjYsIDM3LCAyMjIsIDE2NSwgNzMsIDcyLCA0LCAyMjYsIDQsIDIyMiwgMTc2LCA3MywgNzIsIDQsIDIyNSwgMjI5LCAyMjIsIAorICAgIDE3NywgNzMsIDcyLCA0LCAyMjUsIDIxOSwgMjIyLCAxNjYsIDczLCA3MiwgNCwgMjI1LCAyNTUsIDIyMiwgMTY3LCA3MywgCisgICAgNzIsIDQsIDIyNSwgMjE2LCAyMjIsIDE4MSwgNzMsIDcyLCA0LCAyMjUsIDI0OCwgMjIyLCAxNjQsIDczLCA3MiwgNCwgMjI2LCAKKyAgICAzMywgMTYzLCAyMjIsIDE3NywgNzMsIDcyLCA0LCAyMjYsIDEzLCAxNjMsIDIyMiwgMTY2LCA3MywgNzIsIDQsIDIyNSwgCisgICAgMTkyLCAxNjMsIDIyMiwgMTY3LCA3MywgNzIsIDQsIDIyNSwgMjIwLCAyMzgsIDgxLCA3MywgNzIsIDQsIDIyNiwgOCwgMjM5LCAKKyAgICA4LCA3MywgNzIsIDQsIDIyNSwgMjA3LCAyMzcsIDIzMCwgNzMsIDcyLCA0LCAyMjUsIDE4NSwgMjM4LCAxODIsIDczLCA3MiwgCisgICAgNCwgMjI1LCAyMDksIDIzNywgMjE2LCA3MywgNzIsIDQsIDIyNSwgMjA4LCAyMzcsIDIyNiwgNzMsIDcyLCA0LCAyMjUsIAorICAgIDE5MSwgMjIyLCAxODcsIDczLCA3MiwgNCwgMjI2LCA2MiwgMjIyLCAxMjQsIDczLCA3MiwgNCwgMjI1LCAxOTgsIDIyMiwgCisgICAgMTEzLCA3MywgNzIsIDQsIDIyNiwgNTEsIDIxOCwgMTY3LCA3MywgNzIsIDQsIDIyNiwgMjAsIDE4NSwgNzMsIDcyLCA0LCAKKyAgICAyMjYsIDY5LCAyMTcsIDE5MSwgNzMsIDcyLCA0LCAyMjYsIDM4LCAyMTksIDIzLCA3MywgNzIsIDQsIDIyNiwgNjgsIDIxOSwgCisgICAgMzQsIDczLCA3MiwgNCwgMjI2LCAxNywgMjE4LCA0NSwgNzMsIDcyLCA0LCAyMjYsIDUzLCAyMTgsIDY5LCA3MywgNzIsIDQsIAorICAgIDIyNSwgMjMwLCAyMjUsIDM5LCA3MywgNzIsIDQsIDIyNiwgNTcsIDIyNSwgNTQsIDczLCA3MiwgNCwgMjI1LCAyNTMsIDIyNSwgCisgICAgMzMsIDczLCA3MiwgNCwgMjI2LCA3MiwgMjI1LCA0NiwgNzMsIDcyLCA0LCAyMjUsIDE4NywgMjI1LCA0NiwgNzMsIDcyLCA0LCAKKyAgICAyMjYsIDQ3LCAyMjUsIDQ3LCA3MywgNzIsIDQsIDIyNSwgMjAzLCAyMjUsIDM0LCA3MywgNzIsIDQsIDIyNSwgMjAxLCAyMjUsIAorICAgIDM1LCA3MywgNzIsIDQsIDIyNSwgMTg4LCAyMjUsIDI3LCA3MywgNzIsIDQsIDIyNSwgMjE0LCAxNjMsIDIyNSwgNDcsIDczLCAKKyAgICA3MiwgNCwgMjI2LCAxNCwgMTYzLCAyMjUsIDM0LCA3MywgNzIsIDQsIDIyNSwgMjMzLCAxNjMsIDIyNSwgMzUsIDczLCA3MiwgCisgICAgNCwgMjI1LCAyNDMsIDIyOCwgMjM2LCA3MywgNzIsIDQsIDIyNiwgMjcsIDIyOCwgMjQ0LCA3MywgNzIsIDQsIDIyNiwgNDUsIAorICAgIDIyOCwgMjMyLCA3MywgNzIsIDQsIDIyNiwgNzYsIDIyOCwgMjM5LCA3MywgNzIsIDQsIDIyNiwgMTEsIDIyOCwgMjQwLCA3MywgCisgICAgNzIsIDQsIDIyNiwgNywgMjI4LCAyMzQsIDczLCA3MiwgNCwgMjI1LCAyMTcsIDIyOCwgMjM1LCA3MywgNzIsIDQsIDIyNSwgCisgICAgMjUxLCAyMzgsIDE5OSwgNzMsIDcyLCA0LCAyMjYsIDYzLCAyMzgsIDIwNywgNzMsIDcyLCA0LCAyMjUsIDIyNywgMjM4LCAKKyAgICAxOTQsIDczLCA3MiwgNCwgMjI2LCAyNiwgMjM4LCAyMDMsIDczLCA3MiwgNCwgMjI2LCAxMiwgMjM4LCAyMDQsIDczLCA3MiwgCisgICAgNCwgMjI2LCA0OCwgMjM4LCAxOTUsIDczLCA3MiwgNCwgMjI2LCA0OSwgMjM4LCAxOTcsIDczLCA3MiwgNCwgMjI1LCAyMDQsIAorICAgIDIxNiwgMjIwLCA3MywgNzIsIDQsIDIyNSwgMjUyLCAyMjMsIDEwLCA3MywgNzIsIDQsIDIyNSwgMjQ2LCAyMjMsIDI1LCA3MywgCisgICAgNzIsIDQsIDIyNSwgMjUwLCAyMjIsIDI0OCwgNzMsIDcyLCA0LCAyMjUsIDE4NCwgMjIzLCAxNiwgNzMsIDcyLCA0LCAyMjYsIAorICAgIDAsIDIyMywgMTcsIDczLCA3MiwgNCwgMjI2LCA1MiwgMjIyLCAyNTMsIDczLCA3MiwgNCwgMjI2LCA1NSwgMjIzLCAxLCA3MywgCisgICAgNzIsIDQsIDIyNSwgMjIzLCAyMjIsIDQ4LCA3MywgNzIsIDQsIDIyNSwgMTgzLCAyMjIsIDE4LCA3MywgNzIsIDQsIDIyNSwgCisgICAgMjI2LCAyMjIsIDM5LCA3MywgNzIsIDQsIDIyNSwgMjQxLCAyMjIsIDIyLCA3MywgNzIsIDQsIDIyNSwgMTkzLCAyMDUsIAorICAgIDIzMCwgNzMsIDcyLCA0LCAyMjUsIDE5MCwgMjA2LCA4NiwgNzMsIDcyLCA0LCAyMjUsIDIyNCwgMjA0LCAxNjMsIDczLCA3MiwgCisgICAgNCwgMjI1LCAyMDIsIDIwNiwgNTAsIDczLCA3MiwgNCwgMjI2LCAzNCwgMjA2LCA1NSwgNzMsIDcyLCA0LCAyMjUsIDIzMSwgCisgICAgMjA1LCAxNzYsIDczLCA3MiwgNCwgMjI2LCA0MiwgMjA1LCAxODksIDczLCA3MiwgNCwgMjI1LCAyMTEsIDIyMCwgMjQyLCAKKyAgICA3MywgNzIsIDQsIDIyNiwgNjEsIDIyMSwgNSwgNzMsIDcyLCA0LCAyMjUsIDIwNSwgMjIwLCAyMjQsIDczLCA3MiwgNCwgCisgICAgMjI2LCAyMSwgMjIwLCAyNTMsIDczLCA3MiwgNCwgMjI2LCA1OSwgMjIwLCAyMzEsIDczLCA3MiwgMTcsIDEwNSwgNzMsIDcyLCAKKyAgICAxNywgMTA4LCA3MywgNzIsIDE3LCAxNDcsIDczLCA3MiwgMTcsIDE0OSwgNzMsIDcyLCAxNywgMTcwLCA3MywgNzIsIDE3LCAKKyAgICAxOTUsIDczLCA3MiwgMTcsIDIxMywgMTExLCA3MywgNzIsIDE3LCAxOTksIDczLCA3MiwgMTcsIDIyMiwgNjMsIDczLCA3MiwgCisgICAgMzksIDQyLCAyMDksIDE3NCwgNzMsIDcyLCAzOSwgNDIsIDIwOSwgMTQ3LCA3MywgNzIsIDM5LCA0MiwgMjM2LCAxMCwgNzMsIAorICAgIDcyLCAzOSwgNDIsIDIwOSwgMzQsIDczLCA3MiwgMzksIDQyLCAyMDksIDE1MywgMjA5LCAzNCwgNzMsIDcyLCAzOSwgNDIsIAorICAgIDIzNiwgMTIsIDIwOSwgMzQsIDczLCA3MiwgMzksIDQyLCAyMjQsIDExMywgMTAsIDEzLCAyNTEsIDMwLCAxMCwgMTMsIDI0OCwgCisgICAgMTM4LCAxMCwgMTMsIDIzMCwgMTU4LCAxMCwgMTMsIDI0NCwgMTg0LCAxMCwgMTMsIDIwNCwgNzAsIDEwLCAxMywgMjAyLCAKKyAgICAxMDcsIDEwLCAxMywgMjM3LCAxNDgsIDEwLCAxMywgMjA5LCAyNTEsIDEwLCAxMywgMjAzLCA0NywgMTAsIDEzLCAyMzAsIAorICAgIDIyLCAxMCwgMTMsIDIyOCwgMjgsIDEwLCAxMywgMjI1LCA1LCAxMCwgMTMsIDIyMSwgMTc4LCAxMCwgMTMsIDIxNCwgMTYxLCAKKyAgICAxMCwgMTMsIDI1MSwgNTksIDEwLCAxMywgMjQwLCA0NywgMTAsIDEzLCAyMTUsIDI4LCAxMCwgMTMsIDIxNywgMTE5LCAxMCwgCisgICAgMTMsIDIxNiwgMTIyLCAxMCwgMTMsIDIxMywgMzksIDEwLCAxMywgMjA5LCAxNjksIDEwLCAxMywgMjA5LCA4OCwgMTAsIDEzLCAKKyAgICAyMjksIDE0MCwgMTAsIDEzLCAyMDksIDEwMCwgMTAsIDEzLCAyNDQsIDIwNywgMTAsIDEzLCAyMDIsIDExMCwgMTAsIDEzLCAKKyAgICAyMzgsIDExNCwgMTAsIDEzLCAyNDMsIDg0LCAyNDgsIDEzOCwgMTAsIDEzLCAyNDMsIDg0LCAyMjEsIDE3OCwgMTAsIDEzLCAKKyAgICAyNDMsIDg0LCAyNDAsIDQ3LCAxMCwgMTMsIDI0MywgODQsIDIxNywgMTE5LCAxMCwgMTMsIDgxLCAyNDgsIDEzOCwgMTAsIAorICAgIDEzLCA4MSwgMjMwLCAxNTgsIDEwLCAxMywgODEsIDIzNywgNDMsIDEwLCAxMywgODEsIDIzNywgMTQ4LCAxMCwgMTMsIDgxLCAKKyAgICAyMDMsIDQ3LCAxMCwgMTMsIDgxLCAyMzAsIDIyLCAxMCwgMTMsIDgxLCAyMjgsIDI4LCAxMCwgMTMsIDgxLCAyMjUsIDUsIAorICAgIDEwLCAxMywgODEsIDIyMSwgMTc4LCAxMCwgMTMsIDgxLCAyMTQsIDE2MSwgMTAsIDEzLCA4MSwgMjUxLCA1OSwgMTAsIDEzLCAKKyAgICA4MSwgMjQwLCA0NywgMTAsIDEzLCA4MSwgMjE1LCAyOCwgMTAsIDEzLCA4MSwgMjE3LCAxMTksIDEwLCAxMywgODEsIDIxMywgCisgICAgMzksIDEwLCAxMywgODEsIDIwOSwgMTY5LCAxMCwgMTMsIDgxLCAyMDksIDg4LCAxMCwgMTMsIDgxLCAyMjksIDE0MCwgMTAsIAorICAgIDEzLCA4MSwgMjQ0LCAyMDcsIDEwLCAxMywgODEsIDIzOCwgMTE0LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMzAsIDE1OCwgMTAsIAorICAgIDEzLCAyMDksIDI0NywgMjM3LCAxNDgsIDEwLCAxMywgMjA5LCAyNDcsIDIwMywgNDcsIDEwLCAxMywgMjA5LCAyNDcsIDIyOCwgCisgICAgMjgsIDEwLCAxMywgMjA5LCAyNDcsIDIyMSwgMTc4LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMTQsIDE2MSwgMTAsIDEzLCAyMDksIAorICAgIDI0NywgMjUxLCA1OSwgMTAsIDEzLCAyMDksIDI0NywgMjE1LCAyOCwgMTAsIDEzLCAyMDksIDI0NywgMjE3LCAxMTksIDEwLCAKKyAgICAxMywgMjA5LCAyNDcsIDIxMywgMzksIDEwLCAxMywgMjA5LCAyNDcsIDIyOSwgMTQwLCAxMCwgMTMsIDIwOSwgMjQ3LCAyNDQsIAorICAgIDIwNywgMTAsIDEzLCAyMDksIDI0NywgMjM4LCAxMTQsIDEwLCAxMywgMjA5LCAyNDcsIDI0MywgODQsIDIyMSwgMTc4LCAxMCwgCisgICAgMTMsIDIwOSwgMjQ3LCAyNDMsIDg0LCAyMTcsIDExOSwgMTAsIDEzLCAyMTEsIDQwLCAyNDgsIDEzOCwgMTAsIDEzLCAyMTEsIAorICAgIDQwLCAyMzAsIDE1OCwgMTAsIDEzLCAyMTEsIDQwLCAyMzcsIDQzLCAxMCwgMTMsIDIxMSwgNDAsIDIzNywgMTQ4LCAxMCwgCisgICAgMTMsIDIxMSwgNDAsIDIwOSwgMjUxLCAxMCwgMTMsIDIxMSwgNDAsIDIwMywgNDcsIDEwLCAxMywgMjExLCA0MCwgMjMwLCAKKyAgICAyMiwgMTAsIDEzLCAyMTEsIDQwLCAyMjUsIDUsIDEwLCAxMywgMjExLCA0MCwgMjIxLCAxNzgsIDEwLCAxMywgMjExLCA0MCwgCisgICAgMjE0LCAxNjEsIDEwLCAxMywgMjExLCA0MCwgMjUxLCA1OSwgMTAsIDEzLCAyMTEsIDQwLCAyNDAsIDQ3LCAxMCwgMTMsIAorICAgIDIxMSwgNDAsIDIxNSwgMjgsIDEwLCAxMywgMjExLCA0MCwgMjE3LCAxMTksIDEwLCAxMywgMjExLCA0MCwgMjEzLCAzOSwgCisgICAgMTAsIDEzLCAyMTEsIDQwLCAyMDksIDE2OSwgMTAsIDEzLCAyMTEsIDQwLCAyMDksIDg4LCAxMCwgMTMsIDIxMSwgNDAsIAorICAgIDIyOSwgMTQwLCAxMCwgMTMsIDIxMSwgNDAsIDI0NCwgMjA3LCAxMCwgMTMsIDIxMSwgNDAsIDIwMiwgMTEwLCAxMCwgMTMsIAorICAgIDIxMSwgNDAsIDIzOCwgMTE0LCAxMCwgMTMsIDIxMSwgNDAsIDI0MywgODQsIDI0OCwgMTM4LCAxMCwgMTMsIDIxMSwgNDAsIAorICAgIDI0MywgODQsIDI0MCwgNDcsIDEwLCAxMywgMjI3LCAxMywgMjUxLCAzMCwgMTAsIDEzLCAyMjcsIDEzLCAyNDgsIDEzOCwgCisgICAgMTAsIDEzLCAyMjcsIDEzLCAyMzAsIDE1OCwgMTAsIDEzLCAyMjcsIDEzLCAyNDQsIDE4NCwgMTAsIDEzLCAyMjcsIDEzLCAKKyAgICAyMzcsIDQzLCAxMCwgMTMsIDIyNywgMTMsIDIwNCwgNzAsIDEwLCAxMywgMjI3LCAxMywgMjAyLCAxMDcsIDEwLCAxMywgCisgICAgMjI3LCAxMywgMjM3LCAxNDgsIDEwLCAxMywgMjI3LCAxMywgMjA5LCAyNTEsIDEwLCAxMywgMjI3LCAxMywgMjAzLCA0NywgCisgICAgMTAsIDEzLCAyMjcsIDEzLCAyMjgsIDI4LCAxMCwgMTMsIDIyNywgMTMsIDIyNSwgNSwgMTAsIDEzLCAyMjcsIDEzLCAyMjEsIAorICAgIDE3OCwgMTAsIDEzLCAyMjcsIDEzLCAyMTQsIDE2MSwgMTAsIDEzLCAyMjcsIDEzLCAyNTEsIDU5LCAxMCwgMTMsIDIyNywgCisgICAgMTMsIDI0MCwgNDcsIDEwLCAxMywgMjI3LCAxMywgMjE1LCAyOCwgMTAsIDEzLCAyMjcsIDEzLCAyMTcsIDExOSwgMTAsIDEzLCAKKyAgICAyMjcsIDEzLCAyMTYsIDEyMiwgMTAsIDEzLCAyMjcsIDEzLCAyMTMsIDM5LCAxMCwgMTMsIDIyNywgMTMsIDIwOSwgMTY5LCAKKyAgICAxMCwgMTMsIDIyNywgMTMsIDIwOSwgODgsIDEwLCAxMywgMjI3LCAxMywgMjI5LCAxNDAsIDEwLCAxMywgMjI3LCAxMywgCisgICAgMjA5LCAxMDAsIDEwLCAxMywgMjI3LCAxMywgMjQ0LCAyMDcsIDEwLCAxMywgMjI3LCAxMywgMjAyLCAxMTAsIDEwLCAxMywgCisgICAgMjI3LCAxMywgMjM4LCAxMTQsIDEwLCAxMywgMTY5LCAyNDgsIDEzOCwgMTAsIDEzLCAxNjksIDIzMCwgMTU4LCAxMCwgMTMsIAorICAgIDE2OSwgMjQ0LCAxODQsIDEwLCAxMywgMTY5LCAyMDQsIDcwLCAxMCwgMTMsIDE2OSwgMjAyLCAxMDcsIDEwLCAxMywgMTY5LCAKKyAgICAyMzcsIDE0OCwgMTAsIDEzLCAxNjksIDIwOSwgMjUxLCAxMCwgMTMsIDE2OSwgMjAzLCA0NywgMTAsIDEzLCAxNjksIDIyOCwgCisgICAgMjgsIDEwLCAxMywgMTY5LCAyMjUsIDUsIDEwLCAxMywgMTY5LCAyMjEsIDE3OCwgMTAsIDEzLCAxNjksIDIxNCwgMTYxLCAKKyAgICAxMCwgMTMsIDE2OSwgMjUxLCA1OSwgMTAsIDEzLCAxNjksIDI0MCwgNDcsIDEwLCAxMywgMTY5LCAyMTUsIDI4LCAxMCwgMTMsIAorICAgIDE2OSwgMjE3LCAxMTksIDEwLCAxMywgMTY5LCAyMTYsIDEyMiwgMTAsIDEzLCAxNjksIDIxMywgMzksIDEwLCAxMywgMTY5LCAKKyAgICAyMDksIDE2OSwgMTAsIDEzLCAxNjksIDIwOSwgODgsIDEwLCAxMywgMTY5LCAyMjksIDE0MCwgMTAsIDEzLCAxNjksIDIwOSwgCisgICAgMTAwLCAxMCwgMTMsIDE2OSwgMjQ0LCAyMDcsIDEwLCAxMywgMTY5LCAyMDIsIDExMCwgMTAsIDEzLCAxNjksIDIzOCwgMTE0LCAKKyAgICAxMCwgMTMsIDIxOSwgMjU1LCA4MywgMywgMTUxLCAzLCAyMDksIDIwOSwgMTAsIDEzLCAyMTksIDI1NSwgMTUxLCAzLCAyNDQsIAorICAgIDE4NCwgMjI1LCAxNDIsIDk5LCAyNDEsIDE3NiwgMjA0LCAxNiwgMjI1LCAxNDIsIDk5LCAyMTEsIDIzOCwgMjA0LCAxNiwgCisgICAgMjI1LCAxNDIsIDk5LCAyMDQsIDQ2LCAyMDQsIDE2LCAyMjUsIDE0MiwgOTksIDE1MywgMjA0LCAxNiwgMjI1LCAxNDIsIDk5LCAKKyAgICAyMTYsIDEzOCwgMjQyLCA2MSwgMjI1LCAxNDIsIDk5LCAyMzcsIDI0NCwgMjQyLCA2MSwgMjI1LCAxNDIsIDk5LCA2MSwgCisgICAgMjQyLCA2MSwgMjI1LCAxNDIsIDk5LCAxMTgsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAxMjAsIDc2LCAyNDYsIAorICAgIDE4MSwgMjI1LCAxNDIsIDk5LCAxMjYsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyMzksIDE0NywgNzYsIDI0NiwgCisgICAgMTgxLCAyMjUsIDE0MiwgOTksIDIzOSwgMjMzLCA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMjEyLCA4OCwgNzYsIAorICAgIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDIxMywgMTEyLCA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMjQxLCAxNDMsIAorICAgIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyMjIsIDY0LCA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMTE4LCA3NiwgCisgICAgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMTIwLCA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMTI2LCA3NiwgMjQ4LCAKKyAgICAyNDMsIDIyNSwgMTQyLCA5OSwgMjM5LCAxNDcsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAyMzksIDIzMywgNzYsIAorICAgIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDIxMiwgODgsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAyMTMsIDExMiwgCisgICAgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDI0MSwgMTQzLCA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMjIyLCAKKyAgICA2NCwgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDExOCwgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMTIwLCA3NiwgCisgICAgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAxMjYsIDc2LCAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDIzOSwgMTQ3LCA3NiwgMjQ2LCAKKyAgICA1OCwgMjI1LCAxNDIsIDk5LCAyMzksIDIzMywgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMjEyLCA4OCwgNzYsIDI0NiwgCisgICAgNTgsIDIyNSwgMTQyLCA5OSwgMjEzLCAxMTIsIDc2LCAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDI0MSwgMTQzLCA3NiwgMjQ2LCAKKyAgICA1OCwgMjI1LCAxNDIsIDk5LCAyMjIsIDY0LCA3NiwgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAyMTgsIDc5LCAyMjUsIDE0MiwgCisgICAgOTksIDIxOSwgMjQyLCAyMjUsIDE0MiwgOTksIDI0OCwgMjQ0LCAyMjUsIDE0MiwgOTksIDI0NiwgOTksIDIyNSwgMTQyLCAKKyAgICA5OSwgMjExLCAxODMsIDIyNSwgMTQyLCA5OSwgMjEwLCAyMTYsIDIyNSwgMTQyLCA5OSwgMjUwLCAyMSwgMjI1LCAxNDIsIAorICAgIDk5LCAyMDQsIDcsIDIyNSwgMTQyLCA5OSwgMjMwLCA5NCwgMjI1LCAxNDIsIDk5LCAyNDksIDI1LCAxNjEsIDk5LCAyMzYsIAorICAgIDEwNiwgMjQ5LCAyNSwgMTYxLCA5OSwgMjM2LCAxMDQsIDE2MSwgOTksIDIzNiwgMTAzLCAxNjEsIDk5LCAyMzYsIDEwMiwgCisgICAgMTYxLCA5OSwgMjM2LCAxMDEsIDE2MSwgOTksIDIzNiwgMTAwLCAxNjEsIDk5LCAyMzYsIDk5LCAxNjEsIDk5LCAyMzYsIDk4LCAKKyAgICAxNjEsIDk5LCAyMzYsIDk3LCAxNjEsIDk5LCAyMzYsIDk2LCAxNjEsIDk5LCAyMzYsIDk1LCAxNjEsIDk5LCAyMzYsIDk0LCAKKyAgICAxNjEsIDk5LCAyMzYsIDkzLCAxNjEsIDk5LCAyMzYsIDkyLCAxNjEsIDk5LCAyMzYsIDkxLCAxNjEsIDk5LCAyMzYsIDkwLCAKKyAgICAxNjEsIDk5LCAyMzYsIDg5LCAxNjEsIDk5LCAyMzYsIDg4LCAxNjEsIDk5LCAyMzYsIDg3LCAxNjEsIDk5LCAyMzYsIDg2LCAKKyAgICAxNjEsIDk5LCAyMzYsIDg1LCAxNjEsIDk5LCAyMzYsIDg0LCAxNjEsIDk5LCAyMzYsIDgzLCAxNjEsIDk5LCAyMzYsIDgyLCAKKyAgICAxNjEsIDk5LCAyMzYsIDgxLCAxNjEsIDk5LCAyMzYsIDgwLCAxNjEsIDk5LCAyMzYsIDc5LCAxNjEsIDk5LCAyMzYsIDc4LCAKKyAgICAxNjEsIDk5LCAyMzYsIDc3LCAxNjEsIDk5LCAyMzYsIDc2LCAxNjEsIDk5LCAyMzYsIDc1LCAxNjEsIDk5LCAyMzYsIDc0LCAKKyAgICAxNjEsIDk5LCAyMzYsIDczLCAxNjEsIDk5LCAyMzYsIDcyLCAxNjEsIDk5LCAyMzYsIDcxLCAxNjEsIDk5LCAyMzYsIDcwLCAKKyAgICAxNjEsIDk5LCAyMzYsIDY5LCAxNjEsIDk5LCAyMzYsIDY4LCAxNjEsIDk5LCAyMzYsIDY3LCAxNjEsIDk5LCAyMzYsIDY2LCAKKyAgICAxNjEsIDk5LCAyMzYsIDY1LCAxNjEsIDk5LCAyMzYsIDY0LCAxNjEsIDk5LCAyMzYsIDYzLCAxNjEsIDk5LCAyMzYsIDYyLCAKKyAgICAxNjEsIDk5LCAyMzYsIDYxLCAxNjEsIDk5LCAyMzYsIDYwLCAxNjEsIDk5LCAyMzYsIDU5LCAxNjEsIDk5LCAyMzYsIDU4LCAKKyAgICAxNjEsIDk5LCAyMzYsIDU3LCAxNjEsIDk5LCAyMzYsIDU2LCAxNjEsIDk5LCA4MCwgMjQ5LCAyNSwgMTYxLCA5OSwgMjA2LCAKKyAgICAzNywgMTYxLCA5OSwgMjA2LCAzNiwgMTYxLCA5OSwgMjA2LCAzNSwgMTYxLCA5OSwgMjA2LCAzNCwgMTYxLCA5OSwgMjA2LCAKKyAgICAzMywgMTYxLCA5OSwgMjA2LCAzMiwgMTYxLCA5OSwgMjA2LCAzMSwgMTYxLCA5OSwgMjA2LCAzMCwgMTYxLCA5OSwgMjA2LCAKKyAgICAyOSwgMTYxLCA5OSwgMjA2LCAyOCwgMTYxLCA5OSwgMjA2LCAyNywgMTYxLCA5OSwgMjA2LCAyNiwgMTYxLCA5OSwgMjA2LCAKKyAgICAyNSwgMTYxLCA5OSwgMjA2LCAyNCwgMTYxLCA5OSwgMjA2LCAyMywgMTYxLCA5OSwgMjA2LCAyMiwgMTYxLCA5OSwgMjA2LCAKKyAgICAyMSwgMTYxLCA5OSwgMjA2LCAyMCwgMTYxLCA5OSwgMjA2LCAxOSwgMTYxLCA5OSwgMjA2LCAxOCwgMTYxLCA5OSwgMjA2LCAKKyAgICAxNywgMTYxLCA5OSwgMjA2LCAxNiwgMTYxLCA5OSwgMjA2LCAxNSwgMTYxLCA5OSwgMjA2LCAxNCwgMTYxLCA5OSwgMjA2LCAKKyAgICAxMywgMTYxLCA5OSwgMjA2LCAxMiwgMTYxLCA5OSwgMjA2LCAxMSwgMTYxLCA5OSwgMjA2LCAxMCwgMTYxLCA5OSwgMjA2LCAKKyAgICA5LCAxNjEsIDk5LCAyMDYsIDgsIDE2MSwgOTksIDIwNiwgNywgMTYxLCA5OSwgMjA2LCA2LCAxNjEsIDk5LCAyMDYsIDUsIAorICAgIDE2MSwgOTksIDIwNiwgNCwgMTYxLCA5OSwgMjA2LCAzLCAxNjEsIDk5LCAyMDYsIDIsIDE2MSwgOTksIDIwNiwgMSwgMTYxLCAKKyAgICA5OSwgMjA2LCAwLCAxNjEsIDk5LCAyMDUsIDI1NSwgMTYxLCA5OSwgMjA1LCAyNTQsIDE2MSwgOTksIDIwNSwgMjUzLCAxNjEsIAorICAgIDk5LCAyMDUsIDI1MiwgMTYxLCA5OSwgMjA1LCAyNTEsIDE2MSwgOTksIDIwNSwgMjUwLCAxNjEsIDk5LCAyMDUsIDI0OSwgCisgICAgMTYxLCA5OSwgMjA1LCAyNDgsIDE2MSwgOTksIDIwNSwgMjQ3LCAxNjEsIDk5LCAyMDUsIDI0NiwgMTYxLCA5OSwgMjA1LCAKKyAgICAyNDUsIDIxOCwgODgsIDI0NywgMzgsIDI0OSwgMjUsIDIxOCwgODgsIDI0NywgMzgsIDI1MSwgMTMyLCA3NiwgMjExLCAyMjUsIAorICAgIDIxOCwgODgsIDI0NywgMzgsIDEyMCwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAxMjYsIDc2LCAyMTEsIDIyNSwgCisgICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAxNDcsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAyMzMsIDc2LCAKKyAgICAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjEyLCA4OCwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMTMsIAorICAgIDExMiwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyNDEsIDE0MywgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAKKyAgICAyNDcsIDM4LCAyMjIsIDY0LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIwOSwgMTUzLCA3NiwgMjExLCAyMjUsIAorICAgIDIxOCwgODgsIDI0NywgMzgsIDIzMCwgMTc5LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIyOSwgMzIsIDc2LCAKKyAgICAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjE3LCA0OSwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMjksIAorICAgIDgyLCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDI1MSwgMTMyLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAKKyAgICAzOCwgMTIwLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMTI2LCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAKKyAgICAzOCwgMjM5LCAxNDcsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDIzMywgNzYsIDIzNywgNTMsIDIxOCwgCisgICAgODgsIDI0NywgMzgsIDIxMiwgODgsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTMsIDExMiwgNzYsIDIzNywgCisgICAgNTMsIDIxOCwgODgsIDI0NywgMzgsIDI0MSwgMTQzLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjIyLCA2NCwgCisgICAgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIwOSwgMTUzLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgCisgICAgMjMwLCAxNzksIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMjksIDMyLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgCisgICAgMjQ3LCAzOCwgMjE3LCA0OSwgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIyOSwgODIsIDc2LCAyMzcsIDUzLCAKKyAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMTYsIDEzOCwgMjMwLCA5NCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjUxLCAxMzIsIDc2LCAyNDMsIAorICAgIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMTIwLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDEyNiwgNzYsIDI0MywgCisgICAgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDE0NywgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIAorICAgIDIzMywgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTIsIDg4LCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgCisgICAgMzgsIDIxMywgMTEyLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDI0MSwgMTQzLCA3NiwgMjQzLCAyMjAsIAorICAgIDIxOCwgODgsIDI0NywgMzgsIDIyMiwgNjQsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA5LCAxNTMsIDc2LCAKKyAgICAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjMwLCAxNzksIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgCisgICAgMjI5LCAzMiwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTcsIDQ5LCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIAorICAgIDI0NywgMzgsIDIyOSwgODIsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgNjIsIDIzMCwgOTQsIDIxOCwgODgsIAorICAgIDI0NywgMzgsIDI1MSwgMTMyLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAxMjAsIDc2LCAyNDYsIDIsIDIxOCwgCisgICAgODgsIDI0NywgMzgsIDEyNiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAxNDcsIDc2LCAyNDYsIDIsIAorICAgIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgMjMzLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTIsIDg4LCA3NiwgCisgICAgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTMsIDExMiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjQxLCAKKyAgICAxNDMsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIyMiwgNjQsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIAorICAgIDIwOSwgMTUzLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzAsIDE3OSwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgCisgICAgMjQ3LCAzOCwgMjI5LCAzMiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjE3LCA0OSwgNzYsIDI0NiwgMiwgMjE4LCAKKyAgICA4OCwgMjQ3LCAzOCwgMjI5LCA4MiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgNjEsIDIzMCwgOTQsIDIxOCwgODgsIAorICAgIDI0NywgMzgsIDIzOSwgMTczLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ4LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM3LCAKKyAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM0LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDMzLCAyMTgsIDg4LCAyNDcsIDM4LCAKKyAgICAyMDgsIDMyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDMxLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDMwLCAyMTgsIDg4LCAKKyAgICAyNDcsIDM4LCAyMDgsIDI5LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDI4LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ3LCAKKyAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ2LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ1LCAyMTgsIDg4LCAyNDcsIDM4LCAKKyAgICAyMDgsIDQ0LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQyLCAyMTgsIDg4LCAKKyAgICAyNDcsIDM4LCAyMDgsIDQxLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM5LCAKKyAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM4LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM2LCAyMTgsIDg4LCAyNDcsIDM4LCAKKyAgICAyMDgsIDM1LCAxNywgMjAyLCA4NSwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMDIsIDg1LCAyNDUsIDIzMywgMTcsIDExOCwgCisgICAgMjQ1LCAyMzMsIDE3LCAxMjAsIDI0NSwgMjMzLCAxNywgMTI2LCAyNDUsIDIzMywgMTcsIDIzOSwgMTQ3LCAyNDUsIDIzMywgCisgICAgMTcsIDIzOSwgMjMzLCAyNDUsIDIzMywgMTcsIDIxMiwgODgsIDI0NSwgMjMzLCAxNywgMjEzLCAxMTIsIDI0NSwgMjMzLCAKKyAgICAxNywgMjQxLCAxNDMsIDI0NSwgMjMzLCAxNywgMjIyLCA2NCwgMjQ1LCAyMzMsIDI0MywgMTc0LCA0MywgNDEsIDE3LCAyMDIsIAorICAgIDg0LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAyMDIsIDg0LCAxMDIsIDgsIDYsIDEsIDYzLCAxMDIsIDgsIDYsIDEsIAorICAgIDI0OSwgMjU1LCAxMDIsIDgsIDYsIDEsIDI0NywgMTI1LCAxMDIsIDgsIDYsIDEsIDI0NSwgNTEsIDEwMiwgOCwgNiwgMSwgCisgICAgNzQsIDEwMiwgOCwgNiwgMSwgMjQwLCAxNzQsIDEwMiwgOCwgNiwgMSwgMjM5LCA3NSwgMTAyLCA4LCA2LCAxLCAyMzcsIAorICAgIDE3MSwgMTAyLCA4LCA2LCAxLCA3NSwgMTAyLCA4LCA2LCAxLCAyMzAsIDE4NCwgMTAyLCA4LCA2LCAxLCAyMzAsIDU0LCAKKyAgICAxMDIsIDgsIDYsIDEsIDE1OSwgMTAyLCA4LCA2LCAxLCAyMjYsIDE4NSwgMTAyLCA4LCA2LCAxLCAyMjMsIDE2MywgMTAyLCAKKyAgICA4LCA2LCAxLCA3OCwgMTAyLCA4LCA2LCAxLCAyMTksIDE4NCwgMTAyLCA4LCA2LCAxLCAyMTcsIDEzNCwgMTAyLCA4LCA2LCAKKyAgICAxLCAxNDYsIDEwMiwgOCwgNiwgMSwgMTk0LCAxMDIsIDgsIDYsIDEsIDIxMCwgNjksIDEwMiwgOCwgNiwgMSwgNjgsIDEwMiwgCisgICAgOCwgNiwgMSwgMjA2LCAxNjQsIDEwMiwgOCwgNiwgMSwgMjA0LCAxNDQsIDEwMiwgOCwgNiwgMSwgMjAzLCAxOTYsIDEwMiwgCisgICAgOCwgNiwgMSwgMjAzLCAxMjQsIDEwMiwgOCwgNiwgMSwgMjAyLCAxNTksIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgCisgICAgOCwgNiwgMSwgMTk0LCA0MywgMzcsIDgsIDYsIDEsIDI0NywgMTI1LCA0MywgMzcsIDgsIDYsIDEsIDE0NiwgNDMsIDI0NiwgCisgICAgMjM5LCA0MywgMjAzLCAxOTgsIDEwMywgOCwgNiwgMSwgNjMsIDEwMywgOCwgNiwgMSwgMjQ5LCAyNTUsIDEwMywgOCwgNiwgCisgICAgMSwgMjQ3LCAxMjUsIDEwMywgOCwgNiwgMSwgMjQ1LCA1MSwgMTAzLCA4LCA2LCAxLCA3NCwgMTAzLCA4LCA2LCAxLCAyNDAsIAorICAgIDE3NCwgMTAzLCA4LCA2LCAxLCAyMzksIDc1LCAxMDMsIDgsIDYsIDEsIDIzNywgMTcxLCAxMDMsIDgsIDYsIDEsIDc1LCAKKyAgICAxMDMsIDgsIDYsIDEsIDIzMCwgMTg0LCAxMDMsIDgsIDYsIDEsIDIzMCwgNTQsIDEwMywgOCwgNiwgMSwgMTU5LCAxMDMsIDgsIAorICAgIDYsIDEsIDIyNiwgMTg1LCAxMDMsIDgsIDYsIDEsIDIyMywgMTYzLCAxMDMsIDgsIDYsIDEsIDc4LCAxMDMsIDgsIDYsIDEsIAorICAgIDIxOSwgMTg0LCAxMDMsIDgsIDYsIDEsIDIxNywgMTM0LCAxMDMsIDgsIDYsIDEsIDE0NiwgMTAzLCA4LCA2LCAxLCAxOTQsIAorICAgIDEwMywgOCwgNiwgMSwgMjEwLCA2OSwgMTAzLCA4LCA2LCAxLCA2OCwgMTAzLCA4LCA2LCAxLCAyMDYsIDE2NCwgMTAzLCA4LCAKKyAgICA2LCAxLCAyMDQsIDE0NCwgMTAzLCA4LCA2LCAxLCAyMDMsIDE5NiwgMTAzLCA4LCA2LCAxLCAyMDMsIDEyNCwgMTAzLCA4LCAKKyAgICA2LCAxLCAyMDIsIDE1OSwgMTAzLCAyMzUsIDI1NSwgMTAzLCAyMjMsIDE4NywgMTAzLCAyMTQsIDE3OSwgMTAzLCAyMTEsIAorICAgIDE2NywgMTAzLCAyMTgsIDEwLCAxMDMsIDIwNCwgNjMsIDE4MiwgNDMsIDgsIDYsIDEsIDYzLCAxODIsIDQzLCA4LCA2LCAxLCAKKyAgICAyNDksIDI1NSwgMTgyLCA0MywgOCwgNiwgMSwgMjQ3LCAxMjUsIDE4MiwgNDMsIDgsIDYsIDEsIDI0NSwgNTEsIDE4MiwgNDMsIAorICAgIDgsIDYsIDEsIDc0LCAxODIsIDQzLCA4LCA2LCAxLCAyNDAsIDE3NCwgMTgyLCA0MywgOCwgNiwgMSwgMjM5LCA3NSwgMTgyLCAKKyAgICA0MywgOCwgNiwgMSwgMjM3LCAxNzEsIDE4MiwgNDMsIDgsIDYsIDEsIDc1LCAxODIsIDQzLCA4LCA2LCAxLCAyMzAsIDE4NCwgCisgICAgMTgyLCA0MywgOCwgNiwgMSwgMjMwLCA1NCwgMTgyLCA0MywgOCwgNiwgMSwgMTU5LCAxODIsIDQzLCA4LCA2LCAxLCAyMjYsIAorICAgIDE4NSwgMTgyLCA0MywgOCwgNiwgMSwgMjIzLCAxNjMsIDE4MiwgNDMsIDgsIDYsIDEsIDc4LCAxODIsIDQzLCA4LCA2LCAxLCAKKyAgICAyMTksIDE4NCwgMTgyLCA0MywgOCwgNiwgMSwgMjE3LCAxMzQsIDE4MiwgNDMsIDgsIDYsIDEsIDE0NiwgMTgyLCA0MywgOCwgCisgICAgNiwgMSwgMTk0LCAxODIsIDQzLCA4LCA2LCAxLCAyMTAsIDY5LCAxODIsIDQzLCA4LCA2LCAxLCA2OCwgMTgyLCA0MywgOCwgCisgICAgNiwgMSwgMjA2LCAxNjQsIDE4MiwgNDMsIDgsIDYsIDEsIDIwNCwgMTQ0LCAxODIsIDQzLCA4LCA2LCAxLCAyMDMsIDE5NiwgCisgICAgMTgyLCA0MywgOCwgNiwgMSwgMjAzLCAxMjQsIDE4MiwgNDMsIDgsIDYsIDEsIDIwMiwgMTU5LCAyMTYsIDE4OCwgMjI1LCAKKyAgICAyNiwgNTQsIDIxNiwgMTg4LCAyMjUsIDIzLCA1NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDYzLCAxODIsIDEwMywgOCwgNiwgMSwgCisgICAgMjQ5LCAyNTUsIDE4MiwgMTAzLCA4LCA2LCAxLCAyNDcsIDEyNSwgMTgyLCAxMDMsIDgsIDYsIDEsIDI0NSwgNTEsIDE4MiwgCisgICAgMTAzLCA4LCA2LCAxLCA3NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDI0MCwgMTc0LCAxODIsIDEwMywgOCwgNiwgMSwgMjM5LCAKKyAgICA3NSwgMTgyLCAxMDMsIDgsIDYsIDEsIDIzNywgMTcxLCAxODIsIDEwMywgOCwgNiwgMSwgNzUsIDE4MiwgMTAzLCA4LCA2LCAKKyAgICAxLCAyMzAsIDE4NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIzMCwgNTQsIDE4MiwgMTAzLCA4LCA2LCAxLCAxNTksIDE4MiwgCisgICAgMTAzLCA4LCA2LCAxLCAyMjYsIDE4NSwgMTgyLCAxMDMsIDgsIDYsIDEsIDIyMywgMTYzLCAxODIsIDEwMywgOCwgNiwgMSwgCisgICAgNzgsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMTksIDE4NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIxNywgMTM0LCAxODIsIDEwMywgCisgICAgOCwgNiwgMSwgMTQ2LCAxODIsIDEwMywgOCwgNiwgMSwgMTk0LCAxODIsIDEwMywgOCwgNiwgMSwgMjEwLCA2OSwgMTgyLCAKKyAgICAxMDMsIDgsIDYsIDEsIDY4LCAxODIsIDEwMywgOCwgNiwgMSwgMjA2LCAxNjQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMDQsIAorICAgIDE0NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIwMywgMTk2LCAxODIsIDEwMywgOCwgNiwgMSwgMjAzLCAxMjQsIDE4MiwgMTAzLCAKKyAgICA4LCA2LCAxLCAyMDIsIDE1OSwgMjQ1LCAxMjgsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMTksIDE4NCwgMTgyLCAxMDMsIDIzNSwgCisgICAgMTY0LCAxODIsIDEwMywgMTg1LCAxODIsIDEwMywgMjE1LCAzNiwgMTgyLCAxMDMsIDI1MSwgMjMyLCAxODIsIDEwMywgMjA0LCAKKyAgICA2MywgNTEsIDI0MywgMTMyLCAxMDMsIDI0NiwgNDIsIDEwMywgMjQ1LCAxNzYsIDEwMywgMjM5LCAxMjksIDEwMywgMjM1LCAKKyAgICAxNTUsIDEwMywgMjIyLCAyMTMsIDEwMywgMjIyLCAyMDUsIDEwMywgMjIwLCA1MSwgMTAzLCAyMTEsIDI0NSwgMTAzLCAxMTIsIAorICAgIDMsIDI0MCwgMjEyLCA4MiwgMTAzLCAyMDUsIDE2NiwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCA2MywgMjE2LCAxMzAsIAorICAgIDIzMSwgMzIsIDE2LCAxLCAyNDksIDI1NSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyNDcsIDEyNSwgMjE2LCAxMzAsIAorICAgIDIzMSwgMzIsIDE2LCAxLCAyNDUsIDUxLCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDc0LCAyMTYsIDEzMCwgMjMxLCAzMiwgCisgICAgMTYsIDEsIDI0MCwgMTc0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIzOSwgNzUsIDIxNiwgMTMwLCAyMzEsIDMyLCAKKyAgICAxNiwgMSwgMjM3LCAxNzEsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgNzUsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgCisgICAgMjMwLCAxODQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjMwLCA1NCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAKKyAgICAxNTksIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjI2LCAxODUsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjIzLCAKKyAgICAxNjMsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgNzgsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjE5LCAxODQsIAorICAgIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjE3LCAxMzQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMTQ2LCAyMTYsIAorICAgIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDE5NCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMTAsIDY5LCAyMTYsIDEzMCwgCisgICAgMjMxLCAzMiwgMTYsIDEsIDY4LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIwNiwgMTY0LCAyMTYsIDEzMCwgMjMxLCAKKyAgICAzMiwgMTYsIDEsIDIwNCwgMTQ0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIwMywgMTk2LCAyMTYsIDEzMCwgMjMxLCAKKyAgICAzMiwgMTYsIDEsIDIwMywgMTI0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIwMiwgMTU5LCA1MSwgMTcyLCAyMzYsIAorICAgIDEzMCwgMTAzLCA2NywgMjI5LCAxNCwgMTAzLCA2NywgMjE1LCAzNiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTAwLCAKKyAgICAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDQsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDExMiwgMTAzLCA2NywgMjQ0LCAKKyAgICA3NSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTE5LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDYsIDEwMywgMTIsIAorICAgIDIwNiwgMjM5LCAyMzMsIDc4LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDUsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAorICAgIDExOCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTIsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDg1LCAxMDMsIDEyLCAKKyAgICAyMDYsIDIzOSwgMjMzLCA5NCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTE1LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKKyAgICAxMDEsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDExNywgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTMsIDEwMywgMTIsIAorICAgIDIwNiwgMjM5LCAyMzMsIDExNiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgNzksIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAorICAgIDg0LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA3NywgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTA3LCAxMDMsIDEyLCAKKyAgICAyMDYsIDIzOSwgMjMzLCAxMDksIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDg3LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKKyAgICA5OCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTYsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEyMiwgMTAzLCAxMiwgCisgICAgMjA2LCAyMzksIDIzMywgMTIxLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA3NSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgCisgICAgMTAyLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMjAsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDExMSwgMTAzLCAxMiwgCisgICAgMjA2LCAyMzksIDIzMywgOTcsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDc2LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKKyAgICA5OSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODEsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDgwLCAxMDMsIDEyLCAyMDYsIAorICAgIDIzOSwgMjMzLCAxMTAsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDg4LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5MCwgCisgICAgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTEsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDgzLCAxMDMsIDEyLCAyMDYsIAorICAgIDIzOSwgMjMzLCAxMTQsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwOCwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAKKyAgICAxMiwgMjA2LCAyMzksIDIzMywgODksIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIAorICAgIDEyMSwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgMTE5LCAyMDgsIDEzMywgMjEzLCAKKyAgICAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDMsIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIAorICAgIDIwNiwgMjM5LCAyMzMsIDg2LCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCA5OSwgCisgICAgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgODIsIDIwOCwgMTMzLCAyMTMsIDMzLCAKKyAgICAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIDExMywgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAKKyAgICAyMzksIDIzMywgOTUsIDQzLCAxODksIDI1MSwgMTExLCA0MywgMTg5LCAyNTEsIDEzNiwgMjQ1LCA2MiwgMjM5LCAxODQsIAorICAgIDI0NiwgMTYsIDIwNywgMywgMjIyLCA4MCwgMywgMjExLCA5MSwgMjEwLCAyMDksIDExNSwgMjI0LCAxMSwgMjEwLCAyMDgsIAorICAgIDI0NiwgNDYsIDI1MCwgNTAsIDI0MiwgMTcsIDIxMCwgMjA3LCAxMTUsIDI0NywgMTgyLCAyMTYsIDE4OSwgMjQ3LCAyMDgsIAorICAgIDI1MCwgNTAsIDIyMiwgNzksIDIwNCwgODEsIDIwNCwgNzUsIDIwNSwgMTgxLCAyMjQsIDExOCwgMjA0LCA2NSwgMjQxLCAKKyAgICAxODAsIDIzOCwgNDYsIDI0MCwgMjI4LCAyNDEsIDE4MCwgMjM4LCA0NiwgMjUwLCAyMzgsIDI0MSwgMTgwLCAyMzgsIDQ2LCAKKyAgICAyNTAsIDY4LCAyMzgsIDQ2LCAzLCAyMjQsIDIzMSwgMjIyLCAyMTQsIDIyNCwgMzAsIDk3LCAyMDQsIDY3LCAyNDUsIDEzOSwgCisgICAgMjI0LCAzMCwgOTcsIDIzOSwgMjQ1LCAyMTcsIDU2LCAyMjQsIDMwLCA5NywgMjA0LCA2NywgMjM4LCA3NywgMjI0LCAzMCwgCisgICAgOTcsIDIzOSwgMTAyLCAyMjQsIDMwLCA5NywgMjA0LCA5NCwgMjM4LCA3NywgMjI0LCAzMCwgOTcsIDIyOCwgMSwgMjE3LCAKKyAgICA1NiwgMjI0LCAzMCwgOTcsIDIwNCwgOTQsIDI0NSwgMTM5LCAyMjQsIDMwLCA5NywgMjQ1LCAxMzksIDIyNCwgMjksIDIyMiwgCisgICAgMjE0LCAyMjQsIDMwLCAzLCAyNDAsIDEwMiwgMjM5LCAyNDUsIDIxNywgNTYsIDIyNCwgMzAsIDMsIDI0MCwgMTAyLCAyMjgsIAorICAgIDEsIDIxNywgNTYsIDIyNCwgMzAsIDMsIDI0MCwgMTAyLCAyMzksIDEwMiwgMjI0LCAzMCwgMywgMjQwLCAxMDIsIDIxMCwgCisgICAgMjE1LCAzLCAyNDAsIDEwMiwgMjM4LCA0NCwgMjExLCA5NCwgMjEyLCAyMzMsIDIxMSwgOTQsIDIwOSwgODAsIDYyLCAyNDIsIAorICAgIDQ5LCA2MSwgMjEwLCAyMTQsIDYxLCAyMTAsIDIxNSwgMywgNSwgMjQ2LCA3LCA2MSwgMjEwLCAyMTUsIDI0OCwgMTM1LCAKKyAgICAyNDYsIDcsIDYxLCAyMTAsIDIxNSwgMjQ4LCAxMzUsIDI0NiwgOCwgMywgMjE2LCAxOTAsIDI0NiwgOCwgMywgMjE2LCAxOTAsIAorICAgIDI0NiwgOCwgMywgMjEyLCAxOSwgMjQ2LCA4LCAzLCAyMjcsIDEzMSwgMjQ2LCA4LCAzLCAyMDgsIDEzNywgMjM5LCAxODUsIAorICAgIDIwNCwgMTcsIDI0OCwgMjcsIDI0MCwgMTAyLCAyMzYsIDQ3LCAyNDMsIDEwMiwgMjEwLCAyLCAyNDcsIDE1OCwgMjQ2LCAKKyAgICAxNDgsIDIxNCwgMTYzLCAyNDAsIDIyMiwgMjA4LCA5NSwgMjQ0LCA2OSwgMjA4LCA5NSwgMjE5LCAxMzUsIDIwOCwgOTUsIAorICAgIDI0NywgODUsIDIzNiwgNDcsIDIxOCwgMjQ4LCAyMDcsIDE5MywgMjQ2LCAxNTIsIDI0OCwgMzAsIDIxNSwgMjAyLCAyMzcsIAorICAgIDIsIDIxMCwgMjEyLCAyNDgsIDMwLCAyNDEsIDE4NCwgNzYsIDIyNSwgMTMxLCAyNDEsIDE4NCwgNzYsIDIxNiwgNTIsIDIzNywgCisgICAgMjgsIDIzOSwgMTQ3LCAyMjcsIDIzMCwgMjQ2LCA2LCAyMjUsIDEwNCwgMjI3LCAyMjksIDI0MCwgODUsIDIyNywgMjI5LCAKKyAgICAyMjcsIDIzMCwgMjM5LCAxOTIsIDIzMSwgNTAsIDIwNCwgMTYsIDIyMywgMTk2LCAyMDgsIDE2NSwgMjUwLCAzMywgMjM4LCAKKyAgICA1LCAyMjQsIDI0OSwgMjA0LCA3OSwgMjA5LCAyMjUsIDIyNywgMTk5LCAyNDgsIDIzOSwgMjE4LCAxMjAsIDIxNiwgMTM4LCAKKyAgICAyNTAsIDE1NywgMjM3LCAyNDQsIDI1MCwgMTU3LCAyMTksIDI5LCAyMTksIDMxLCAyNDYsIDE1MywgMjExLCA0NSwgMjM3LCAKKyAgICAxMzIsIDIxMiwgNTEsIDc2LCAyMTgsIDEwMCwgMjI1LCAxNiwgMjIwLCAzMiwgMjQ4LCAxMSwgMjE4LCAyMSwgMjI3LCAyMTAsIAorICAgIDIxNiwgNTMsIDI0NSwgMTQ1LCAyMTYsIDUzLCAyNDgsIDI1MSwgMjQ1LCAxNzksIDIxNiwgNTIsIDI0NSwgODksIDI1LCAKKyAgICAyMTYsIDUyLCAyMTEsIDc5LCAyNDcsIDIzNywgMjExLCAyMjQsIDI0NywgMjE5LCAyMzksIDEyOCwgMjM5LCAxMjQsIDIxNSwgCisgICAgMjIzLCAyMTAsIDE2NSwgMjE4LCAyMywgMjQ0LCAxNjMsIDIyMCwgNzUsIDIxMCwgMTgzLCAyMzksIDEyNSwgMjEyLCAyMDQsIAorICAgIDIzOSwgMjQ0LCAyNDcsIDc5LCAzLCAyMTAsIDE1OCwgMjQ0LCAxMywgMjEyLCA3LCAyMzUsIDE2MywgMjQ1LCAxNDMsIDIxMywgCisgICAgNTEsIDIzNSwgMTYyLCAyMzUsIDE2MywgMjQ1LCAxNDMsIDI0MiwgNzMsIDI0NSwgMTc4LCAyNDYsIDExNCwgMTQyLCAyNDcsIAorICAgIDUxLCAyMjcsIDMyLCAyNDUsIDgxLCAyMzYsIDExOSwgMjE4LCAyNSwgMjEyLCAyMTcsIDI0OCwgMTE2LCAyNDcsIDIzMywgCisgICAgMjE4LCAyNiwgNzYsIDIzOSwgMTc0LCAyNDUsIDE3NywgMjM5LCAxNjMsIDI1LCAyMjksIDMzLCAyMDksIDE4NCwgMjA0LCAzLCAKKyAgICAyMzcsIDEwMiwgMjE1LCAxMywgMjQ3LCAyNTAsIDI1LCAyNDUsIDk5LCAyMDQsIDEzLCAyMzgsIDQ5LCAyNDUsIDI1MSwgCisgICAgMjM4LCA0OSwgMjA4LCA1MSwgMjQyLCA1NCwgMjQ4LCAxNDYsIDIyMywgMjM1LCAyNDYsIDIzLCAyNDgsIDE0NiwgMjIzLCAKKyAgICAyMzQsIDI0OSwgMjgsIDI0NywgMjQ5LCAyMzksIDE2MywgMjUsIDIyOSwgMzQsIDMsIDIxOCwgODksIDI0NywgMjUwLCAzLCAKKyAgICAyMTgsIDM4LCAyNDUsIDE2NywgMjE4LCA0MCwgMjE2LCA1NCwgMjAzLCAyMjcsIDIxNywgMjQyLCAyNDgsIDU4LCAyNDcsIAorICAgIDc4LCAyMzAsIDE3OCwgMjQ2LCAxMDYsIDIwOCwgOTUsIDI0MCwgNjgsIDI0NiwgMTA1LCAyMzksIDI0NywgMjM5LCAyNDgsIAorICAgIDIxMSwgMjIyLCAyNDgsIDI1MCwgMjE5LCA2NiwgMjE4LCAzOSwgMjQ1LCAyMTUsIDI0OCwgMjUxLCAyMDksIDIyOSwgMjA4LCAKKyAgICA5NSwgMjQ1LCAxMjgsIDIzOSwgMjE5LCAyMTgsIDEyMSwgMjQ0LCA2NiwgMjMwLCAxNjksIDI0MywgOTYsIDI0NywgMjcsIAorICAgIDIxMSwgNDQsIDIwNCwgMTcsIDI0NiwgMTMwLCAyMjQsIDMwLCAyMDUsIDIxNywgMjQ2LCAyMDQsIDIxNCwgMTk2LCAyMTQsIAorICAgIDIyMywgMjM4LCAxMSwgMjQ3LCA0OCwgMjM3LCA1NiwgMywgMjA4LCAyMTEsIDIyMCwgMzIsIDIwOSwgOTMsIDIyNywgMjIyLCAKKyAgICAyNDcsIDI0MywgNzYsIDIzOSwgMTk2LCAyMjQsIDExOSwgMjI1LCAxMywgMjE2LCAxMTAsIDIxNiwgNTQsIDMxLCAyMjksIAorICAgIDE1MCwgMywgMjMwLCAxNzcsIDIxMSwgMTUsIDIyNCwgMTUyLCAyMjcsIDE2NywgMjEyLCA0OSwgMjQ1LCAxODQsIDIyOSwgCisgICAgMzAsIDI0OCwgMTU4LCAyNTAsIDc4LCAzMSwgMjIxLCAxNTUsIDI0OCwgMTU4LCAyNDQsIDE5LCAzMSwgMjIxLCAxNTUsIAorICAgIDI0MCwgNiwgMjM5LCAxMzMsIDI1MSwgMTE0LCAyMDgsIDI1MiwgMjQ3LCAyOCwgMjM2LCA0OSwgMjQwLCAzNSwgMjA0LCAzNiwgCisgICAgMjE1LCAyMTMsIDI0NSwgMjUyLCAyMzksIDIzOSwgMjE4LCA1NCwgMjUsIDIzOSwgMjQzLCAyMjQsIDE1MiwgMjIzLCAyNTMsIAorICAgIDI0NywgNjUsIDI0NiwgNjUsIDIzNywgNjAsIDI1MCwgODUsIDIxOSwgMTM4LCAyMDgsIDE0NSwgMjM3LCA4MywgMjQ2LCA1MSwgCisgICAgMjA5LCAxNDQsIDIwOCwgMjUzLCAyNDYsIDM3LCAyNDgsIDIwLCAyMTgsIDI0MSwgMjUwLCA4NCwgMjA1LCAyMjYsIDIzOCwgCisgICAgMjM4LCAyNDMsIDE2NywgMjM2LCAyMzAsIDIxMiwgNDIsIDIyNSwgMTcyLCAyNDgsIDY5LCAyMzgsIDIzOSwgMjQzLCAyMTMsIAorICAgIDI0NywgMjM2LCAyMzksIDE5OCwgMjE4LCA4OCwgMjQ3LCAzNiwgMzEsIDIyMSwgMTYwLCAyMjMsIDIyNiwgMzEsIDIyMSwgCisgICAgMTU1LCAyMTQsIDIwOSwgMjM3LCAyMTQsIDMxLCAyMjksIDE0OSwgMjA4LCAyNywgMjA1LCAyMDYsIDMxLCAyMTQsIDE4OSwgCisgICAgMjE1LCAxMjYsIDIxMiwgMjQ2LCAzLCAyMTQsIDIyNiwgMjA5LCAxNDksIDIxNiwgMjA5LCAyNSwgMjQ4LCAyNTEsIDIxMiwgCisgICAgNjcsIDI1LCAyMTIsIDY3LCAyNDgsIDQsIDI0OCwgMjEzLCAyNSwgMjM2LCAxMTIsIDI0NiwgMTU0LCAyMzksIDIyNSwgMjEyLCAKKyAgICAxOCwgMjE1LCAxMjcsIDIxMCwgMTg4LCAyMTEsIDE4OSwgMjI1LCAxMywgMjA4LCA1MiwgMjM2LCA1MCwgMjE2LCAyMTAsIAorICAgIDI1MCwgMjM5LCAyMzksIDE3MSwgMjE1LCAxMzksIDIzOSwgMTcxLCAyMTAsIDE2MCwgMjA0LCA1MSwgMjI3LCAxMzYsIDIzOCwgCisgICAgMzAsIDIxNiwgMjExLCAyMjQsIDE4LCAyMTYsIDIxMSwgMjQ3LCAzOSwgMjQ1LCAxMzYsIDI0OCwgMjEwLCAyNSwgMjQ4LCAKKyAgICAyNTEsIDIwNSwgMTgwLCAyNDAsIDI1LCAyMzYsIDEzMywgMjExLCA3MywgMjUsIDI0OCwgMjUxLCAyMzUsIDE2MywgMjM2LCAKKyAgICAxMzMsIDIxMSwgNzMsIDI1LCAyMTcsIDE4NCwgMjEwLCA5LCAyMDksIDE0OSwgMjE5LCAxNTYsIDI1LCAyNDgsIDI1MSwgCisgICAgMjEyLCAyMCwgMjQ3LCA0NCwgMjI0LCAxMiwgMjQ3LCA2MywgMjQ4LCAxNjEsIDMsIDIwNywgMywgMjQ3LCAxODQsIDI0NSwgCisgICAgMTk4LCAyMzYsIDM5LCAyNDcsIDE4MiwgMjQ2LCA0NSwgMjQ0LCAyMywgMjM2LCAzOSwgMjQ3LCAxODMsIDI0NiwgMzUsIAorICAgIDI0NywgMTgzLCAyNDQsIDE1LCAyNDQsIDE2LCAyMzAsIDIwOCwgMjIzLCA2NywgMjE5LCA3MiwgMjExLCAxMDQsIDIzNiwgCisgICAgMzksIDI0NywgMTgzLCAyMzYsIDM5LCAzLCAyMzgsIDIyMiwgMjIwLCA2NywgMjQ3LCAxODMsIDIzMCwgMTY5LCAyMTgsIDMxLCAKKyAgICAyMjAsIDY2LCAyNDAsIDIyNywgMjE4LCAzMSwgMjIwLCA2NiwgMjM2LCA0OCwgMjQ4LCAyMzUsIDI1MCwgMjMsIDIwOSwgCisgICAgMTU3LCAyMjUsIDE3MiwgMjM2LCA0NCwgMjI3LCAxLCAyMzYsIDQ0LCAyNDUsIDE4MiwgMjExLCA1NywgMjE0LCAxOTUsIAorICAgIDI0NCwgMjYsIDIxMSwgNTcsIDI0MCwgOTEsIDIzMCwgMTg5LCAyMjgsIDEzLCAyMzAsIDE2OSwgMjQ3LCAxOSwgMjQwLCAKKyAgICAyMjcsIDI0NywgMTksIDYxLCAyMTksIDMsIDYyLCAyMTksIDMsIDIwNCwgNzMsIDYxLCAyMzksIDIyNSwgMjA0LCA3MywgNjIsIAorICAgIDIzOSwgMjI1LCAyMTUsIDIwMSwgNjIsIDIxNSwgMjAxLCAyMjgsIDEwNSwgMjQ5LCAxMiwgMjE2LCAyMDksIDI1LCAyMTIsIAorICAgIDE4MywgMjQ3LCAyNDEsIDI1LCA0NywgMjUwLCAyMzQsIDI0MSwgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTksIDI0MSwgCisgICAgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTYsIDI0MSwgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTQsIDI0MSwgOTgsIDY1LCAKKyAgICAyMzksIDIzNCwgMjA3LCAxMTIsIDI0MSwgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTAsIDIxNiwgMTcyLCAyMjQsIDksIAorICAgIDIxOSwgMTkzLCAyMDQsIDgxLCAyNDcsIDE4OCwgMjQ1LCAxNDksIDIwOCwgMjQ1LCAyMjcsIDE4MywgMjE2LCAyMTIsIDI0NywgCisgICAgMTcsIDI0MiwgNjEsIDI0NSwgMTM1LCAyMDQsIDM5LCAyMTIsIDI2LCAyMTIsIDI0LCAyMzYsIDQ5LCAyMTYsIDE4NCwgMjM4LCAKKyAgICAzNSwgMjEzLCAzNywgMjI0LCA0OCwgMjE1LCAyMDUsIDI0NiwgMTQwLCAyNDMsIDEwMiwgMjE4LCAxMzEsIDI0OCwgMjEsIAorICAgIDI0MSwgMTE0LCAyMjAsIDc4LCAyMTEsIDIwMiwgMjEzLCAzMiwgMjQ3LCAxODcsIDI1MCwgMTk4LCAyMzYsIDExOCwgMjI4LCAKKyAgICA5OCwgMjQ4LCAxNDQsIDIzOSwgMjQzLCAyMDgsIDUxLCAyMzksIDI0MywgMjQ4LCAyOCwgMjA3LCAxNzEsIDIzNywgODEsIAorICAgIDI0NiwgMTQxLCAyNDksIDI4LCAyNDYsIDE0MSwgMjM5LCAxMTgsIDI0OSwgMjgsIDI0NiwgMTQxLCAyNDgsIDYwLCAyMTksIAorICAgIDUsIDIyOSwgMjQsIDIxOCwgNDQsIDI0MiwgNTEsIDI0NywgNjcsIDI0OSwgMTcsIDI0NywgNjcsIDI0MywgOTUsIDIyNCwgCisgICAgMTAsIDI0MCwgMTAyLCAyNDUsIDE1MCwgMjQwLCAxMDIsIDIwOCwgMjQ2LCAyNDAsIDEwMiwgMjE2LCAyMTMsIDI0MCwgMTAyLCAKKyAgICAyNDcsIDE4LCAyNDAsIDEwMiwgMjQyLCA2MiwgMjQwLCAxMDIsIDIxMSwgMTg3LCAyMDQsIDM5LCAyMzYsIDUwLCAyNDAsIAorICAgIDEwMiwgMjI0LCA0OSwgMjQwLCAxMDIsIDI0MywgMTAzLCAyNDAsIDEwMiwgMjE4LCAxMzIsIDI0MCwgMTAyLCAyMzksIDEyMiwgCisgICAgMjQwLCAxMDIsIDIzNywgMTI5LCAyNDAsIDEwMiwgMjAzLCAyNTMsIDI0MCwgMTAyLCAyNDgsIDE1NiwgMjQwLCAxMDIsIAorICAgIDIxOSwgMTIwLCAyNDAsIDEwMiwgMjE4LCAxMzIsIDIyMSwgMTY3LCAyMTksIDQ2LCAyMTcsIDIzMCwgMjQ2LCAxMjUsIDI0MCwgCisgICAgMTg0LCAyNDAsIDE5MSwgMjQxLCAxODMsIDIyMSwgMTY3LCAyMjQsIDcsIDIwOCwgMTUwLCA2MSwgMTEyLCAyMTgsIDU5LCAKKyAgICAyNDksIDIzLCAyMzEsIDM1LCA2MSwgMTIxLCAyMTgsIDU5LCAyNDksIDIzLCAyMzEsIDM1LCA2MSwgNDksIDIxOCwgNTksIAorICAgIDI0OSwgMjMsIDIzMSwgMzUsIDYxLCA1MCwgMjE4LCA1OSwgMjQ5LCAyMywgMjMxLCAzNSwgMjM5LCAyMzcsIDIzNywgMTI0LCAKKyAgICA1NCwgMjA0LCA3MywgMjM3LCAxMjQsIDU0LCAyMjAsIDUyLCAyMzcsIDEyNCwgNTQsIDIwOSwgMjAsIDExMiwgNTQsIDIwOSwgCisgICAgMjAsIDEyMSwgNTQsIDI0NiwgMzYsIDIzNywgMTAwLCA1NCwgMTcxLCAyMzcsIDEwMCwgNTQsIDI0NSwgMTIyLCAyMDMsIAorICAgIDI0OSwgMjM3LCA4MywgMjQwLCAxODcsIDIyMiwgMjM2LCAyMTAsIDY4LCAyMzAsIDE2MCwgMjQyLCA1NiwgMjI5LCA4NSwgCisgICAgMjQ4LCA3MSwgMjAzLCAyNDksIDI0NiwgOSwgMjE3LCAxNjUsIDIzNywgMTAzLCAyMTgsIDIyLCAyMjUsIDExMiwgMjEyLCAKKyAgICAyMzksIDI1MCwgNDYsIDIxMiwgMjM5LCAyMzYsIDI0MywgMjEyLCAyMzksIDIwMywgMjQ5LCAyMTQsIDI0MCwgMjAzLCAyNDksIAorICAgIDI0OCwgMywgMjM5LCAxNjksIDI0NywgMTUwLCAyMzEsIDUwLCAyMTIsIDEzNiwgMjQ3LCAxNDksIDIzMSwgNTAsIDIxMiwgCisgICAgMTM2LCAyNDcsIDIzMiwgMjM4LCA2MCwgMjI1LCAxMjIsIDIwMywgMjUwLCAyNDAsIDgyLCAyMjUsIDEyMywgMjUsIDIwMywgCisgICAgMjUxLCAyMzYsIDEyNywgMjM3LCA5OSwgMTIwLCAyMjQsIDI0MSwgMjM2LCAxMjcsIDIzNywgOTksIDEyMCwgMjAzLCAyNDgsIAorICAgIDIzNiwgMTI3LCAyMzcsIDk5LCAyMTgsIDUxLCAyMjAsIDY1LCAyMDMsIDI1MSwgMywgMjQ3LCAxNjgsIDI0MSwgMTgxLCAKKyAgICAyNDcsIDIwOSwgMywgMjA2LCA0NiwgMjE4LCAyMzAsIDMsIDI0OCwgMzIsIDIzNywgMTQ1LCAyMjUsIDEyMywgMywgMjM3LCAKKyAgICAyMjcsIDIxOCwgMTY4LCAyMjUsIDEwOCwgMjI1LCAxMjMsIDMsIDIwNywgMTgwLCAyMjAsIDQ0LCAyMjUsIDEyMiwgMjIwLCAKKyAgICA0NCwgMjAzLCAyNTAsIDI0OSwgMjcsIDI0NSwgMTk5LCAyMDMsIDIzNCwgMjE3LCAyMzUsIDIzMCwgMTY5LCAyMjAsIDYxLCAKKyAgICAyMzAsIDE2OSwgMjM4LCAzNCwgMjM4LCA4OSwgMjQ5LCAyOCwgMjUwLCAyMjEsIDI0MCwgMTk2LCAyNTEsIDIwLCAyNTEsIAorICAgIDIxLCAyMjQsIDM5LCAyMzEsIDU1LCAyMTIsIDYyLCAyMzEsIDI1LCAyNDQsIDEyLCAyMTgsIDIyOSwgMjM3LCAyMjEsIDI0NCwgCisgICAgMTY3LCAyMjcsIDk3LCAyMjMsIDkxLCAyMTgsIDUwLCAyNDAsIDEwMywgMjI1LCA3NCwgMjM3LCAxNDQsIDI0OCwgMjI5LCAKKyAgICAyMTgsIDUzLCAyMTAsIDg4LCAyMTgsIDEyNCwgMjI5LCA2NywgODIsIDIyNywgMSwgMjI3LCAxNzQsIDIxNSwgMjUyLCAyMzgsIAorICAgIDE4MCwgMjExLCA2MywgMjI5LCA2NiwgMjQ3LCAyNDIsIDI0NSwgMTUyLCAzLCAyMzcsIDU1LCAyMDQsIDU4LCAyNDgsIDE1NCwgCisgICAgMjM3LCA1NSwgMjQ3LCAyMDMsIDIzNywgNTUsIDEyMCwgMjM3LCA1MywgMjExLCAyMjAsIDIzNywgNTUsIDIzNywgMjM3LCAKKyAgICAyMzcsIDU1LCAyMzcsIDU2LCAzLCA0NywgMjQ4LCAyNiwgMjM3LCA1NSwgMjM3LCAyNDQsIDIzNywgNTUsIDIwMywgNDUsIAorICAgIDIzNywgNTUsIDIxNywgMTY2LCAyMzcsIDU1LCAyMzcsIDU2LCAzLCAyMTYsIDU0LCAyMTYsIDY3LCAyMzcsIDUzLCAyMzcsIAorICAgIDU2LCAyNDQsIDY2LCAyNDMsIDIyMiwgMjEzLCA2MywgMywgMzQsIDcwLCAyMzEsIDYsIDI0MSwgMTE3LCAxNTcsIDI0NywgCisgICAgMTgwLCAyNTAsIDIyMCwgOTcsIDI0OCwgMTIsIDIxMiwgNTQsIDk3LCAyNDUsIDI0NCwgOTcsIDIxMSwgMTk2LCAyMTAsIAorICAgIDE2NywgOTcsIDI0MiwgNDksIDI0NCwgMTQ1LCA5NywgMjE4LCAxMjUsIDc2LCAyMTgsIDQ1LCAyMzksIDIxMCwgMjQ4LCA4MywgCisgICAgMjQzLCAxMzMsIDk3LCAyMTEsIDIxMiwgMjQ4LCAyNTAsIDIwOSwgMzgsIDI0OCwgMjUwLCA2MSwgMjM5LCAxOTcsIDIzNiwgCisgICAgMTIsIDIxOCwgNTcsIDk3LCAyMjQsIDUzLCAyNDksIDEwLCAyNDUsIDkyLCAyNDAsIDIxNCwgNzksIDI0MywgOTcsIDU0LCAKKyAgICAyNDUsIDE0MSwgMjQ3LCAzNywgMjQ4LCAyMzQsIDMsIDIwMywgNDMsIDU0LCAyNDgsIDIzNCwgMywgMjQzLCA5NywgNTQsIAorICAgIDI0OCwgMjM0LCAzLCAyNDAsIDIzMCwgNTQsIDI0OCwgMjM0LCAzLCAyMTgsIDIwLCA1NCwgMjI0LCA1MywgMywgMjA0LCAxMSwgCisgICAgMjQ2LCAxNzgsIDMsIDE3NywgMjA4LCA5MSwgMjUsIDIwMywgNDMsIDU0LCAyMTQsIDE3NCwgMjE4LCAyMjgsIDI0NSwgMjIwLCAKKyAgICAyNDcsIDIwNywgMjI0LCAxMDgsIDIzOSwgMjAyLCAyNDMsIDE1NCwgMjE5LCAyNDgsIDI0MywgMTU5LCAyNDIsIDEyLCAyNDAsIAorICAgIDExLCAyMzksIDE4MiwgMTcxLCAyNDAsIDExLCAyMzksIDE4MiwgMjE5LCAxNTQsIDMsIDI0NSwgOTUsIDIxOSwgMTU0LCAKKyAgICAyNDAsIDk1LCAyMDYsIDIyNCwgMjQ3LCA3MiwgMjA5LCAxODMsIDI0NywgNzIsIDI0NywgMzgsIDIzMSwgMzUsIDI0NiwgCisgICAgMTc4LCAzLCAxNzcsIDIwOCwgOTAsIDI0NiwgMTc4LCAzLCAxODMsIDIwOCwgOTAsIDI0OCwgMjMxLCAyNDYsIDE3NywgMjQ2LCAKKyAgICAyMiwgMjE3LCAxNjEsIDIxNSwgMTkxLCAyMTcsIDE2MSwgMjE5LCA5NCwgMjExLCA1MywgMjE1LCAxMzMsIDIwOCwgODIsIAorICAgIDIxNSwgMTMzLCAyNDgsIDgsIDIxMCwgNywgMjI3LCAyMjcsIDIyMSwgMTU4LCAyMjEsIDE1OSwgMywgMjQ0LCA2NSwgMjQ1LCAKKyAgICAxNTEsIDI0NiwgMTYsIDI0OCwgOSwgMTcxLCAyNDgsIDksIDIzNywgMjQ0LCAyNDgsIDksIDI0OCwgMjYsIDI0OCwgOSwgCisgICAgMjE5LCAyNDMsIDI0OCwgOSwgMjQ4LCA2LCAyMjMsIDg1LCAyNDksIDE0LCAyMTQsIDE4MiwgMjI0LCAyNDIsIDIwOSwgMTYyLCAKKyAgICAyMTYsIDE1MiwgMjE5LCAxNTIsIDI0MCwgNjUsIDIyNSwgMTcyLCAyMTQsIDIyMiwgMjUwLCAxOTUsIDIxNywgMTg1LCAyNTEsIAorICAgIDExOSwgMjI3LCAzLCAyNDYsIDE2MiwgMjI0LCAyNTQsIDIxOSwgMjEwLCAyMDgsIDk4LCAyMzEsIDQ2LCAyMDgsIDk4LCAKKyAgICAyMTksIDE2MSwgMjQxLCAyMzYsIDk3LCAyMzEsIDQzLCAyNDEsIDU3LCAyNDEsIDU4LCAzLCAxODMsIDUzLCA1NSwgMjQ2LCAKKyAgICAxNiwgMjI1LCAxMzcsIDMsIDIyNiwgMjQ5LCAyMzksIDIyNSwgMjQ2LCAxNiwgMjI1LCAxMzcsIDMsIDIxNiwgMTg4LCAyMzksIAorICAgIDIyNSwgMTcxLCAyMjUsIDEzNywgMywgMjE2LCAxODgsIDIzOSwgMjI1LCAxNzEsIDIyNSwgMTM3LCAzLCAyMjYsIDI0OSwgCisgICAgMjM5LCAyMjUsIDIxOCwgMjgsIDIxOCwgMjksIDIzNiwgNTMsIDIyMiwgMjEwLCAyMjQsIDgwLCAyMTgsIDE3NiwgMjI0LCAKKyAgICA4MCwgMjE4LCAxNzcsIDMsIDg2LCA1MywgMjUwLCA1MCwgMjI3LCAyMjIsIDIwNSwgMjI5LCAyMjQsIDc5LCAyMjQsIDgwLCAKKyAgICAyMTgsIDE3NywgMjIwLCA2OCwgMjIxLCAxOTIsIDIyNCwgODAsIDIxOCwgMTc1LCAyNTAsIDE5NiwgMywgMjQ4LCAyMjAsIAorICAgIDI0NywgNjUsIDI0NywgNjYsIDMsIDIzOSwgMjE4LCAyMDUsIDIyNiwgMjQ3LCA2NSwgMjA5LCAxNTksIDIxNiwgMjA0LCAKKyAgICAyMDUsIDIyNSwgMjQwLCA2LCAyMTcsIDIxNywgMjE4LCAzNSwgMjExLCA3NCwgMjE3LCAyNTQsIDI0OCwgMTYwLCAyMDcsIAorICAgIDEzOCwgODYsIDI1MCwgOTEsIDI0NiwgMTgsIDg2LCAyNSwgOTYsIDE3MSwgMjQ2LCA2MiwgMjUwLCA5MSwgMjQ2LCAxOCwgCisgICAgODYsIDI1LCA5NiwgMTcxLCAyNDYsIDYyLCAyNTAsIDkyLCAzLCA0MywgMTE4LCAyMTksIDE5OSwgMjQ2LCAxOCwgMTgzLCAKKyAgICAyNSwgMTc3LCAxNzEsIDI0NiwgNjIsIDI1MCwgOTEsIDI1MCwgMTk0LCAxODMsIDI1LCAxNzcsIDE3MSwgMjQ2LCA2MiwgCisgICAgMjUwLCA5MSwgMTI0LCAyNDcsIDIwNiwgOTcsIDEzOCwgMjQ3LCAyMDYsIDk3LCAyMTEsIDIxNywgMywgMjQ3LCA1OCwgOTUsIAorICAgIDIxMSwgMjE2LCAyMTEsIDIxNywgMywgMTE4LCAyMTEsIDI0MSwgMjA0LCA3NSwgMjExLCAyMTcsIDMsIDEyNiwgMjExLCAKKyAgICAyNDEsIDIwNCwgNzQsIDI0OCwgMjAzLCAyNDEsIDExNywgMjE4LCA4MSwgMjI3LCAyMTcsIDIyNSwgMTQ5LCAyMzgsIDQ5LCAKKyAgICAyMTYsIDExLCAyMjUsIDE0OSwgMjM4LCA0OSwgMjI3LCA0MywgMywgMjMxLCAxNywgMjE5LCA5LCAyNDYsIDE2LCAyMjcsIAorICAgIDQzLCAzLCAyMjksIDE1MSwgMjI5LCAxNTEsIDIyNywgNDIsIDE3MSwgMjI3LCA0MiwgMjQ4LCAxMjgsIDI0OCwgMTI5LCAzLCAKKyAgICAyNDcsIDU4LCA5NSwgMjQ4LCA3LCAyMjcsIDEwNSwgOTcsIDIxNiwgMjA1LCAyNDcsIDE0NSwgMjQ5LCAyNiwgMywgOTYsIAorICAgIDUzLCA1NSwgMjQxLCA4NCwgMywgOTYsIDUzLCA1NSwgMjIwLCAzMiwgMywgMjQwLCAyMTIsIDEzMSwgMywgNDksIDUwLCA1MywgCisgICAgNTUsIDIxMSwgMjQ5LCAzLCA4NiwgNTMsIDU1LCAyMDgsIDE0NSwgMywgMTc3LCA1MywgNTUsIDIyMSwgMTkyLCAxMTgsIAorICAgIDIwNiwgMjQ4LCAyNDEsIDE0MSwgOTcsIDIyOSwgMTQ4LCAyMDksIDE1MiwgMjMxLCAxMSwgMTYsIDM1LCA4LCA2LCAyMjcsIAorICAgIDE3MywgMjMxLCAxMSwgMTYsIDM1LCA4LCA1LCAyMjcsIDE3MywgMjMxLCAxMSwgMTYsIDM1LCAyMjEsIDQ1LCAyMzEsIDExLCAKKyAgICAxNiwgMzUsIDIxMCwgMTAyLCAyMzEsIDExLCAxNiwgMzUsIDgsIDIyNywgMTczLCAyMzksIDI0OSwgMjQxLCAxMTcsIDIwOCwgCisgICAgMTQwLCAyMDMsIDIyNSwgMjM3LCAxMzAsIDIyMSwgMjgsIDI1LCAyNDgsIDE0LCAyMzYsIDEzNCwgMjE4LCAxMDYsIDIyNCwgCisgICAgMTUxLCAyMDksIDE2MCwgMjQ1LCAxMTIsIDI0OCwgMjUxLCAyMTIsIDg4LCAyMTgsIDYxLCAyMTEsIDk1LCAzLCAxMDEsIAorICAgIDI0MywgODUsIDIzMCwgMTY5LCAxNiwgMzUsIDI0OCwgMTQxLCAyMDgsIDgwLCAyNDEsIDEwMCwgNjIsIDUxLCAyNDcsIDE0NSwgCisgICAgNjEsIDUxLCAyNDcsIDE0NSwgMjI4LCA4LCAyMTYsIDEzOCwgMjQ2LCA2MSwgMjI4LCA4LCAyNDgsIDI2LCAyNDYsIDYxLCAKKyAgICAyMjgsIDgsIDIxOSwgMjQzLCAyNDMsIDIyMSwgMjI4LCA4LCAyNDgsIDI2LCAyNDMsIDIyMSwgNSwgMjE5LCAyNDMsIDI0MywgCisgICAgMjIxLCA1LCAyNDgsIDI2LCAyNDMsIDIyMSwgMjA2LCAyMjMsIDIxNiwgMTM4LCAyMDgsIDg1LCAyNDIsIDY5LCAyMTYsIAorICAgIDEzOCwgMjA4LCA4NSwgMjA2LCAyMjMsIDUsIDIxNiwgMTM4LCAyMDgsIDg1LCAyNDIsIDY5LCA1LCAyMTYsIDEzOCwgMjA4LCAKKyAgICA4NSwgMjI2LCAyNTEsIDUwLCAyMTMsIDc3LCA2MSwgMjQ2LCA2MSwgMjA2LCAyMjEsIDUwLCAyMTMsIDc3LCA2MSwgMjQ2LCAKKyAgICA2MSwgNDMsIDI0NSwgMTMxLCAyMTgsIDQ4LCAyNDUsIDEzMSwgMjE4LCA0OSwgMywgMjM3LCAxMzYsIDU2LCAyNDUsIDEzMSwgCisgICAgMjE4LCA0OCwgMjIxLCAxNjIsIDQ5LCAyMTMsIDE0NiwgMywgMTI2LCAyNDMsIDgzLCAyMjEsIDE2MiwgNTAsIDIxMywgMTQ2LCAKKyAgICAzLCAxMjYsIDI0MywgODMsIDE2LCAzNSwgMjI1LCA4NywgMjQ2LCAxODQsIDYxLCA4LCAyNDUsIDEzMCwgNzksIDgsIDI0NSwgCisgICAgMTMwLCAyNDYsIDIyMiwgMjQ1LCAxMzAsIDIyMCwgNDAsIDk3LCAyNDIsIDcyLCA3NiwgMjE5LCAzMiwgMjMwLCAzOSwgMjI0LCAKKyAgICAyMiwgMjEwLCA5NiwgMjI0LCAyMzcsIDMsIDIyMiwgNjQsIDI0NywgMjIyLCAyNDcsIDIzOCwgNzYsIDIzNSwgMjIyLCAyNDYsIAorICAgIDIwLCAyNDAsIDEwMywgMTE4LCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMTIwLCAyMjAsIDgzLCAyNDYsIDIwLCAKKyAgICAyNDAsIDEwMywgMTI2LCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjM5LCAxNDcsIDIyMCwgODMsIDI0NiwgMjAsIAorICAgIDI0MCwgMTAzLCAyMzksIDIzMywgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIxMiwgODgsIDIyMCwgODMsIDI0NiwgCisgICAgMjAsIDI0MCwgMTAzLCAyMTMsIDExMiwgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDI0MSwgMTQzLCAyMjAsIDgzLCAKKyAgICAyNDYsIDIwLCAyNDAsIDEwMywgMjIyLCA2NCwgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIwOSwgMTUzLCAyMjAsIAorICAgIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjQxLCAxMTMsIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMDcsIDE1NSwgCisgICAgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIyMCwgMjcsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMDcsIDEzMiwgMjQ2LCAKKyAgICAyMCwgMjQwLCAxMDMsIDIwOSwgMjYsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMzksIDE0MywgMjQ2LCAyMCwgMjQwLCAxMDMsIAorICAgIDIzOSwgMjMxLCAyNDYsIDIwLCAyNDAsIDEwMywgMjEyLCA4NCwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIxMywgMTEwLCAyNDYsIAorICAgIDIwLCAyNDAsIDEwMywgMjQxLCAxNDIsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMjIsIDYyLCAyNDYsIDIwLCAyNDAsIDEwMywgCisgICAgMjA5LCAxNTEsIDI0NiwgMjAsIDI0MCwgMTAzLCAyNDEsIDExMSwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIwNywgMTUzLCA1MCwgCisgICAgMjExLCAyMTYsIDUwLCAyMTEsIDIxNywgMywgMTE4LCAyMTEsIDI0MSwgMjA0LCA3NSwgNTAsIDIxMSwgMjE3LCAzLCAxMjYsIAorICAgIDIxMSwgMjQxLCAyMDQsIDc0LCAyNDcsIDE3NSwgMjQ3LCAxNzYsIDMsIDIxMSwgMjQxLCAyMDQsIDc0LCAyMTUsIDI1MSwgCisgICAgMjQ4LCAxMjgsIDI0OCwgOSwgMjQ3LCA1NiwgMjI1LCAxMDksIDI0NiwgMTksIDYyLCAyMTIsIDYzLCAyNSwgMjQ1LCAxMjksIAorICAgIDIyMSwgMTkyLCAyMTgsIDExMiwgMjM2LCAxMjYsIDIyNSwgMTIzLCAyMzEsIDUwLCAyNDcsIDE1MiwgMjEwLCAyMjgsIDIyNywgCisgICAgMTY2LCAyMTIsIDUyLCAyMTksIDI0NSwgMjExLCAxNzgsIDI0NCwgMTUwLCAyMTAsIDIxMCwgMjExLCAyMDUsIDIxMSwgMjA2LCAKKyAgICAyMDQsIDU5LCAyMzAsIDgzLCA0OSwgMjM3LCAxMjQsIDIwOSwgMTYyLCAyMTYsIDE1MiwgMjA5LCAxNjIsIDIxNiwgMTUzLCAKKyAgICAzLCAyMTksIDE1MywgNTAsIDIzNywgMTI0LCAyMDksIDE2MiwgMjE2LCAxNTIsIDYxLCAyMDgsIDEyNiwgMjA5LCAxNjEsIAorICAgIDYyLCAyMDgsIDEyNiwgMjA5LCAxNjEsIDIwOSwgMTYyLCAyMjAsIDMyLCAyMDgsIDE0NSwgNzYsIDIyNCwgNzYsIDI0NiwgCisgICAgNDAsIDIyNCwgODAsIDIxOCwgMTc2LCAyNDksIDI2LCA3NiwgMjQxLCA1NywgMjExLCAxMDAsIDI0MSwgNTcsIDI0MSwgNTgsIAorICAgIDMsIDIyNywgMTMxLCAyMzksIDE4OSwgMjQxLCA1NywgMjE5LCAxMCwgMTE1LCAyMTEsIDEwMCwgMjQxLCA1NywgMjI3LCAKKyAgICAxMDQsIDIxOSwgOTMsIDYyLCAyMTcsIDE2MSwgMjI2LCAyNTEsIDQ5LCAyMTksIDgsIDIyNiwgMjUxLCA0OSwgMjQ4LCAyNDYsIAorICAgIDIxOSwgOSwgMjI2LCAyNTEsIDQ5LCAyMzksIDE0OSwgMjE5LCA5LCAyMjYsIDI1MSwgNDksIDIxOSwgMTQ3LCAyMjYsIDI1MSwgCisgICAgNDksIDI0NSwgMTQ0LCA0OSwgMjAzLCAyMjAsIDIzNywgMTIzLCAyMDcsIDE3NCwgMjIwLCA1MiwgMjM3LCAxMjQsIDU0LCAKKyAgICAyMTYsIDE4OCwgMjM3LCAxMjQsIDMsIDIzOSwgMjU0LCAyMTEsIDE5NSwgMjE2LCA3MywgMjE2LCAxODgsIDIzNywgMTI0LCAKKyAgICAzLCAyMzksIDI1NCwgMjExLCAxOTUsIDIxNiwgNzMsIDIwOSwgMjAsIDExMiwgNTQsIDIxNiwgNzMsIDIwOSwgMjAsIDEyMSwgCisgICAgNTQsIDIxNiwgNzMsIDIwNSwgMjI4LCAyMzcsIDEyMywgMjE2LCA3MywgMjM3LCAxMjQsIDMsIDEwMSwgMjQwLCAzLCAyNDAsIAorICAgIDIwMSwgMjE2LCAxODgsIDIzNywgMTI0LCAzLCAyMTksIDcxLCAyNDgsIDEwNCwgMTAxLCAyNSwgMjE1LCAyNTMsIDIzOSwgCisgICAgMjUzLCA2MSwgMTIxLCAyMTgsIDU5LCA0OSwgMjM3LCAxMjQsIDIzMSwgMzUsIDIxMiwgMTU0LCA2MSwgNDksIDIxOCwgNTksIAorICAgIDIzMSwgMzUsIDIxMiwgMTU0LCA2MSwgNTAsIDIxOCwgNTksIDIzMSwgMzUsIDIxMiwgMTU0LCA2MiwgNDksIDIxOCwgNTksIAorICAgIDIzMSwgMzUsIDIxMiwgMTU0LCA2MiwgNTAsIDIxOCwgNTksIDIzMSwgMzUsIDYyLCA0OSwgMjE4LCA1OSwgMjQ5LCAyMywgCisgICAgMjMxLCAzNSwgNjIsIDUwLCAyMTgsIDU5LCAyNDksIDIzLCAyMzEsIDM1LCAyMTIsIDE1NCwgNjEsIDExMiwgMjE4LCA1OSwgCisgICAgMjMxLCAzNSwgMjEyLCAxNTQsIDYxLCAxMjEsIDIxOCwgNTksIDIzMSwgMzUsIDIxMiwgMTU0LCA2MiwgMTEyLCAyMTgsIDU5LCAKKyAgICAyMzEsIDM1LCAyMTIsIDE1NCwgNjIsIDEyMSwgMjE4LCA1OSwgMjMxLCAzNSwgNjIsIDExMiwgMjE4LCA1OSwgMjQ5LCAyMywgCisgICAgMjMxLCAzNSwgNjIsIDEyMSwgMjE4LCA1OSwgMjQ5LCAyMywgMjMxLCAzNSwgMjQ0LCAxMSwgMjQ1LCAyMjAsIDIyOSwgMTUwLCAKKyAgICAyNSwgMjI0LCA5LCAxMjYsIDIyMiwgMjE4LCAyNDUsIDIxOSwgMjE3LCAyMzEsIDIxOCwgNjcsIDI0NywgNzQsIDYyLCAyMzcsIAorICAgIDkxLCAyMTMsIDMzLCAyMzksIDIwMiwgMjQzLCAxNTQsIDYxLCAyMzcsIDkxLCAyMTMsIDMzLCAyMzksIDIwMiwgMjQzLCAKKyAgICAxNTQsIDIxMiwgNywgMjEzLCAzMywgMjM5LCAyMDIsIDI0MywgMTU0LCAyMDksIDIyMSwgMjQ3LCAyMiwgMjA0LCA2LCAyMjksIAorICAgIDE0OSwgMTE4LCAyNDcsIDE0NiwgMjI0LCA5LCAxMjAsIDI0NywgMTQ2LCAyMjQsIDksIDEyNiwgMjQ3LCAxNDYsIDIyNCwgOSwgCisgICAgMjA4LCAxMTcsIDM4LCAyMTgsIDIyOCwgMjQ1LCAyMjAsIDIzNywgOTEsIDI0MywgMTU0LCAyMTQsIDE4NCwgMjE3LCAyMzIsIAorICAgIDIzNSwgMTU2LCAyNDAsIDY1LCAyMzUsIDE1NiwgMjE5LCAyNDgsIDI0MywgMTYwLCAyMzUsIDE1NiwgMjQzLCAxMDcsIDMsIAorICAgIDIwOSwgMTEyLCAyNDMsIDEwNywgMywgMjA5LCAxMTMsIDI1LCAyMTgsIDE2MSwgMjQzLCAxMDcsIDMsIDIxOCwgMTYxLCAKKyAgICAyMzksIDEzNSwgMywgMjE4LCAxNjEsIDIzOSwgMTM1LCAzLCAyMDgsIDIyNSwgMjM5LCAxMzUsIDMsIDI1MCwgMjMyLCAyMDMsIAorICAgIDE5NiwgNjIsIDIzOSwgMTgyLCAyMzksIDE4MiwgMTcxLCAyMzksIDE4MiwgMjQ3LCAzOCwgMTIyLCAyNDMsIDE0MCwgMjQ3LCAKKyAgICAzOCwgMjQwLCAxMSwgMjQ3LCAyMzMsIDI0MCwgMTEsIDI0NywgODcsIDI0MSwgOTQsIDIyMSwgMTYwLCAyNDEsIDk0LCAyMjEsIAorICAgIDE2MSwgMjE5LCAxNTMsIDI0MSwgOTQsIDIyMSwgMTYxLCAyMTksIDE1OSwgMjIxLCAxNjAsIDIyMSwgMTYxLCAyMTksIDE1MywgCisgICAgMjIxLCAxNjEsIDIxOSwgMTU5LCAyNDEsIDk0LCAyNDMsIDEwNiwgMjQxLCA5NCwgMjE5LCAxNTMsIDI0MSwgOTQsIDIxOSwgCisgICAgMTUxLCAyNDMsIDEwNiwgMjE5LCAxNTMsIDIxOSwgMTUxLCAyMDQsIDg1LCAyMTEsIDIwMiwgMjIxLCAxNjEsIDIxOSwgMTU5LCAKKyAgICAyMTEsIDIwMiwgMjQ3LCA3MywgMjE5LCAxNTksIDI0NCwgMTEsIDIwNCwgMTUsIDIyNCwgMTA1LCAyMjUsIDY0LCAyMTksIAorICAgIDIwMSwgMjQ2LCAxOCwgNTAsIDI1LCA0OSwgMjEzLCAxNDYsIDI1MCwgOTEsIDI0NywgNTgsIDIwMywgMTk2LCAyMzEsIDQxLCAKKyAgICAyMzksIDE3NiwgMjEyLCA3MiwgOTcsIDI0NCwgNjQsIDIzOSwgMTc2LCAyMTIsIDcyLCA5NywgMjQ1LCAyMjEsIDM4LCAyMjksIAorICAgIDE1MSwgMjE1LCAyMTQsIDIyMiwgMjEwLCAyMTksIDE1NCwgMywgNDMsIDIwOSwgMTEyLCAyMTEsIDY1LCAyNDYsIDE3NywgCisgICAgMjQ0LCAxOTYsIDIyOSwgMzMsIDIyNywgOTgsIDIxMSwgMjE1LCAyMzcsIDY1LCAyMzEsIDUwLCAyMTIsIDEzNiwgMTI2LCAKKyAgICAyMTYsIDE2MywgNTUsIDEyNiwgMjE2LCAxNjMsIDU2LCAxMjYsIDIxNiwgMTYzLCAyMjcsIDIyMiwgMTI2LCAyMTYsIDE2MywgCisgICAgMjE2LCAxNiwgNDksIDIxMSwgMjEyLCAyNDcsIDE5MiwgNTAsIDIxMSwgMjEyLCAyNDcsIDE5MiwgMTIwLCAyMTEsIDIxMiwgCisgICAgMjQ3LCAxOTEsIDEyNiwgMjExLCAyMTIsIDI0NywgMTkxLCA0OSwgMjA5LCAzOCwgMjQ3LCAxOTIsIDUwLCAyMDksIDM4LCAKKyAgICAyNDcsIDE5MiwgNDksIDI1MCwgMjIwLCAyNDcsIDE5MiwgNTAsIDI1MCwgMjIwLCAyNDcsIDE5MiwgMjI0LCAzNCwgMjQ3LCAKKyAgICAxOTIsIDIyNywgMTMyLCAyMjQsIDM0LCAyNDcsIDE5MiwgMjI3LCAxMzIsIDIyNCwgMzMsIDI0OCwgMjQ4LCA5OCwgMywgCisgICAgMjQ4LCAyNDcsIDI0OCwgMjQ4LCAxMzIsIDIwMywgMTk2LCAyNDgsIDI0OCwgOTgsIDMsIDEzMiwgMjAzLCAxOTYsIDI0OCwgCisgICAgMjQ4LCAyNiwgMTMyLCAyMDMsIDE5NiwgMjQ4LCAyNDgsIDk4LCAzLCAyNiwgMTMyLCAyMDMsIDE5NiwgMTU3LCAyNDYsIAorICAgIDE2OSwgODIsIDI0OCwgMjQ4LCA5OCwgMywgMjYsIDI0NiwgMTY4LCAyMDMsIDIzMywgMjI1LCAxMDYsIDIyNCwgMTQsIDIzOSwgCisgICAgMTAzLCAyMDgsIDE2NywgMjA4LCAxMjIsIDIxMSwgODYsIDc2LCAyMjcsIDE0NiwgMjEyLCAxMzcsIDc2LCAyMzAsIDE3MCwgCisgICAgMjIzLCAyNTEsIDIzNywgMjQxLCAyNDAsIDEwMiwgMjM3LCAyNDEsIDI0MCwgMTAzLCAzLCAyMTIsIDMwLCAyNDAsIDE4NCwgCisgICAgMjQwLCAxMDMsIDMsIDIwOSwgMTc5LCA3NiwgMjMwLCA4NSwgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDE3MSwgMjI0LCA3LCAKKyAgICAyMTIsIDMwLCAyNDAsIDEwMywgMywgMTcxLCAyMjQsIDgsIDI1LCAyMTIsIDMwLCAyNDAsIDE4NCwgMjEyLCAzMCwgMjQwLCAKKyAgICAxMDMsIDMsIDE3MSwgMjI0LCA4LCAyNSwgMjQ1LCAyNDYsIDIxMCwgMTY2LCAyMTIsIDMwLCAyNDAsIDEwMywgMywgMTcxLCAKKyAgICAyMjQsIDgsIDI1LCAyMDgsIDI0MywgMjQwLCAxODQsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAyMzcsIDEzNSwgMjEyLCAzMCwgCisgICAgMjQwLCAxMDMsIDMsIDIzNiwgNTIsIDIwNCwgOCwgMjQwLCAxMDIsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAyMTIsIDMwLCAKKyAgICAyNDAsIDE4NCwgMjQwLCAxMDMsIDIxNCwgMjE0LCAyNDQsIDQ1LCAyMzksIDE3NCwgMjE2LCAxMTMsIDI0MCwgMTAyLCAyMTIsIAorICAgIDMwLCAyNDAsIDEwMywgMywgMjM3LCA1NCwgMjQwLCAxODQsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAyMTAsIDIxMCwgMjEyLCAKKyAgICAyOSwgMjQwLCAxMDIsIDIyMiwgMjE2LCAyNDAsIDEwMiwgMjQwLCAyMDMsIDI0MCwgMTAyLCAyMDYsIDI1MywgMjQwLCAxMDIsIAorICAgIDI0MCwgMTAzLCAzLCAyNDUsIDI0NiwgMjEwLCAxNjYsIDIxOSwgMSwgMjQwLCAxMDIsIDI0NSwgMjEyLCAyNDAsIDEwMiwgCisgICAgMjQ1LCAyMTMsIDI0MCwgMTAyLCAyMjksIDY1LCAyNDAsIDEwMiwgMjQwLCAxMDMsIDIwOSwgMjMsIDM0LCAyMjksIDY2LCAKKyAgICAyMjksIDY1LCAyNDAsIDEwMywgMywgMjEyLCAzMCwgMjQwLCAxODQsIDIyOSwgNjUsIDI0MCwgMTAzLCAzLCAyNDYsIDE2LCAKKyAgICAyNDAsIDE4NCwgMjQwLCAxMDMsIDMsIDIxMSwgMTYsIDIwOCwgMTUwLCAyNDAsIDEwMywgMywgMjExLCAxNiwgMjA4LCAxNTEsIAorICAgIDI1LCAyMDQsIDgsIDI0MCwgMTkxLCAyNDAsIDEwMywgMywgMjExLCAxNiwgMjA4LCAxNTEsIDI1LCAyMDgsIDI0MywgMjQwLCAKKyAgICAxODQsIDI0MywgMTYxLCAyNDAsIDEwMiwgMjAzLCAyMzIsIDI0MCwgMTAyLCAyNTAsIDIxNCwgMjQwLCAxMDIsIDIxOCwgMTksIAorICAgIDI0MCwgMTAyLCAyNDUsIDExNCwgMjQwLCAxMDIsIDIxOCwgMjMyLCAyNDAsIDEwMiwgMjQwLCAxMDMsIDMsIDIyNywgMTcsIAorICAgIDc2LCAyMDgsIDYyLCAyNDMsIDE2MSwgMjQ3LCAxNDgsIDIxNiwgMTEzLCAyNDAsIDEwMiwgMjM5LCAxMTQsIDI0MCwgMTAzLCAKKyAgICAzLCAxNzEsIDIyNCwgNywgMjUwLCAyMTIsIDI0MCwgMTAyLCAyNDAsIDU4LCAyNDAsIDEwMiwgMjA0LCA2MCwgMjQwLCAxMDIsIAorICAgIDIxMiwgNTMsIDI0MCwgMTAyLCAyMDgsIDIwNSwgMjQwLCAxMDIsIDIzNywgMjQyLCAyNDAsIDEwMiwgMjI3LCA0LCAyNDUsIAorICAgIDExNCwgMjQwLCAxMDIsIDI0MCwgMTAzLCAzLCAxNzEsIDIyNCwgNywgMjM2LCAyLCAyNDAsIDEwMiwgMjQwLCAxMDMsIDMsIAorICAgIDE3MSwgMjI0LCA4LCAyNSwgMjQ1LCAyNDYsIDIxMCwgMTY2LCAyNDAsIDEwMywgMjE0LCAxODYsIDIzMSwgNTAsIDI0MCwgCisgICAgNTksIDI1MCwgNTYsIDI0MCwgMTAyLCAyMzksIDE5NCwgMjQwLCAxMDIsIDIxMiwgNTQsIDI0MCwgMTAyLCAyNDMsIDEzMywgCisgICAgMjQwLCAxMDIsIDI0MCwgMTAzLCAyMDQsIDMsIDIyNCwgNywgMjQwLCAxMDMsIDMsIDIyNSwgMTIsIDIyNSwgNzYsIDIzNywgCisgICAgMjQxLCAyNDcsIDE4LCAyNDAsIDEwMywgMywgMjEyLCAzMCwgMjQwLCAxODQsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyMDksIAorICAgIDE3OSwgNzYsIDIzMCwgODUsIDIxMiwgMzAsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAxNzEsIDIyNCwgNywgMjEyLCAzMCwgCisgICAgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDIzNywgNTQsIDI0MCwgMTg0LCAyNDcsIDE4LCAyNDAsIDEwMywgMywgMjAzLCAyMTgsIAorICAgIDIxMiwgMzEsIDIyOSwgNjUsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyNDYsIDE2LCAyNDAsIDE4NCwgMjE4LCAxOSwgMjQ3LCAKKyAgICAxOCwgMjQwLCAxMDIsIDI0NSwgMTE0LCAyNDcsIDE4LCAyNDAsIDEwMiwgMjA0LCA2MCwgMjQ3LCAxOCwgMjQwLCAxMDIsIAorICAgIDIxMiwgNDcsIDIzOSwgMTE0LCAyNDAsIDEwMiwgMjEyLCA0NywgMjEyLCAzMCwgMjQwLCAxMDIsIDIwNiwgMjE4LCAyNDAsIAorICAgIDEwMiwgMjQwLCAxMDMsIDMsIDIxNSwgMjEyLCAyNDAsIDE4NCwgMjQwLCAxMDMsIDMsIDIyMSwgMTkyLCAyMzgsIDI3LCAKKyAgICAyMzgsIDE2MCwgMjQwLCAxMDMsIDMsIDIyMCwgNTIsIDIzOCwgMTYwLCAyMTgsIDIzMCwgMjQ3LCAyMzksIDI0NCwgNTksIAorICAgIDIxNCwgMTY0LCAyMjQsIDQ4LCAyMzcsIDU3LCAyMjQsIDQ4LCAyMTEsIDIxOCwgMjI0LCA0OCwgMjM3LCA5MywgMjE4LCAKKyAgICAyMzAsIDIxNiwgMTg3LCAxMTgsIDIzNywgMTIzLCAyMTgsIDIzMCwgMjE2LCAxODcsIDI0NywgMjUxLCAyMzcsIDEwMCwgCisgICAgMjMxLCA1MCwgMjQ2LCAyMjQsIDIxOCwgMjMwLCAyMzksIDExMywgMjE4LCAyMzAsIDMsIDIxOCwgMTksIDI0MCwgMTAyLCAKKyAgICAyMTgsIDIzMCwgMywgMjM5LCAxODMsIDIzNywgOTksIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIxMSwgCisgICAgMjM4LCAyMDQsIDQ2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIxMSwgCisgICAgMjM4LCAyNDEsIDE3NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIwNywgMTc0LCAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDIyNywgCisgICAgMjI5LCAyMDcsIDE3NCwgMjExLCAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIDIyNywgMjI5LCAyMDcsIDE3NCwgMTUzLCAyNDEsIAorICAgIDE3NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIwNywgMTc0LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIxOCwgNTksIDIyNywgMjI5LCAKKyAgICAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgMjExLCAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIAorICAgIDIwNSwgMjEyLCAyMjcsIDIyOSwgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCAyMTEsIDIzOCwgCisgICAgMjQxLCAxNzYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgNzksIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjA1LCAKKyAgICAyMTIsIDIyNywgMjI5LCA3OSwgMjExLCAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgNzksIAorICAgIDE1MywgMjQxLCAxNzYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgNzksIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjE4LCAKKyAgICA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDI0NywgMTg5LCAyMTEsIDIzOCwgMjA0LCAKKyAgICA0NiwgMjE4LCA1OSwgMjQ3LCAxODksIDE1MywgMjQxLCAxNzYsIDIxOCwgNTksIDI0NywgMTg5LCAyMTEsIDIzOCwgMjQxLCAKKyAgICAxNzYsIDIxOCwgNTksIDI0NywgMTg5LCA3OSwgMTUzLCAyMDQsIDQ2LCAyMTgsIDU5LCAyNDcsIDE4OSwgNzksIDIxMSwgCisgICAgMjM4LCAyMDQsIDQ2LCAyMTgsIDU5LCAyNDcsIDE4OSwgNzksIDE1MywgMjQxLCAxNzYsIDIxOCwgNTksIDI0NywgMTg5LCAKKyAgICA3OSwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMTgsIDU5LCAyNDcsIDE4OSwgMjM2LCAxMjUsIDIxNywgNDAsIDUxLCAyMTksIAorICAgIDIzMywgMjM2LCAxMjUsIDIxNywgNDAsIDUxLCAyMTksIDIzNCwgMjMxLCA1MCwgNjIsIDIxMSwgMTc3LCAyMTIsIDIsIDIxNywgCisgICAgNDAsIDUxLCAyMTksIDIzMywgMjEyLCAyLCAyMTcsIDQwLCA1MSwgMjE5LCAyMzQsIDIzMSwgNTAsIDYyLCAyMTEsIDE3NywgCisgICAgOTYsIDIxNSwgMjE4LCAxNzcsIDIxNSwgMjE4LCA4NiwgMjE1LCAyMTgsIDE4MywgMjE1LCAyMTgsIDEzMiwgMzIsIDI0MCwgCisgICAgMjUxLCAyMTksIDIzMywgNzksIDEzMiwgMzIsIDI0MCwgMjUxLCAyMTksIDIzMywgMzIsIDE3MSwgMjQwLCAyNTEsIDIxOSwgCisgICAgMjMzLCA3OSwgMzIsIDE3MSwgMjQwLCAyNTEsIDIxOSwgMjMzLCA3OSwgMjUwLCAyMzYsIDIxOSwgMjMzLCAyMTAsIDE2OSwgCisgICAgMjUwLCAyMzYsIDIxOSwgMjMzLCA0MSwgNzksIDUyLCAyMDcsIDE3NCwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAKKyAgICAyMzMsIDQxLCA3OSwgNTIsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA0MSwgNzksIDEyNCwgNTIsIDI0NSwgCisgICAgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgMjMwLCAyNDgsIDIxOSwgMjMzLCA0MSwgMjMwLCAyNDgsIDIxOSwgCisgICAgMjMzLCA3OSwgNDEsIDIzMCwgMjQ4LCAyMTksIDIzMywgMjA1LCAyNDIsIDc5LCAyMTIsIDAsIDIwNSwgMjQyLCA3OSwgMjE2LCAKKyAgICA3NCwgMjEyLCAwLCAyNDYsIDE2NywgMjQ4LCAyMCwgMjE2LCA3NCwgMjQ2LCAxNjcsIDI0OCwgMjAsIDIxNSwgMjE4LCAyMzcsIAorICAgIDM4LCAyMTEsIDgxLCAyMjcsIDQwLCAyMTYsIDE5MywgMjQ3LCAzOSwgMjM2LCAyNDAsIDIwOCwgMTEwLCAyMzYsIDI0MCwgCisgICAgMjA4LCAxMTEsIDMsIDI0NywgMTc4LCAyMjEsIDE2NywgMjA4LCAxMTAsIDIyNCwgMjEzLCAxNTcsIDIxNiwgMTk0LCAyMTEsIAorICAgIDg3LCAyMDgsIDEwOCwgMjA4LCAxMDksIDI0NywgMzksIDI0NywgMTUzLCAyMjAsIDI5LCAyNDcsIDE1MywgMjA4LCA1OSwgCisgICAgMjQ3LCAxNTQsIDIxMSwgNjEsIDIyNCwgMTA5LCAyNTAsIDI0MCwgMjM5LCAyNTAsIDI0MSwgNzcsIDIxOCwgNTEsIDI0NywgCisgICAgMzksIDIyMCwgMjksIDIxOCwgNTEsIDI0NywgMzksIDIwOSwgMTk3LCAyMjAsIDI5LCAyMDksIDE5NywgMjUwLCAyMiwgMjIwLCAKKyAgICAyOSwgMjUwLCAyMiwgMjE2LCAxNDUsIDIwNiwgNDcsIDI0NCwgNDEsIDIwOCwgNTAsIDI1MCwgODYsIDIyNywgOCwgMjA4LCAKKyAgICAxMTYsIDIyNCwgNDIsIDIyNCwgMTMsIDIxNiwgMTkyLCAyMTAsIDE4MiwgMjE2LCAxOTIsIDIyNCwgMTMsIDI0NywgODYsIAorICAgIDI1MSwgOTUsIDIwOCwgMTA3LCAyMTIsIDI1MSwgMjE1LCAxODgsIDIxMSwgMjEwLCAyMzYsIDEwNiwgMjA4LCAxMTQsIDIyNywgCisgICAgMTM0LCA4MCwgMjA4LCAxMTQsIDIyNywgMTM0LCAyNDUsIDE5OSwgNTQsIDIxOCwgNTEsIDI0NywgMjQsIDIxNiwgNjcsIAorICAgIDIyNywgMTM0LCAyMDgsIDgyLCAyMzksIDIyNiwgMjIwLCAzMiwgMjE4LCAzMCwgMjQzLCA4OCwgMjIxLCAxOTIsIDI0MSwgCisgICAgNjMsIDU0LCAyMTIsIDI4LCA5NywgMjIxLCAxOTIsIDIxMiwgMjgsIDk3LCAyMTcsIDE2MCwgMjI3LCA4NywgMjMxLCA1MCwgCisgICAgMjMwLCAxOTgsIDIxOCwgOTcsIDk3LCAyNDMsIDExNCwgMjIxLCAxNjYsIDIyNywgODcsIDk3LCAyMTgsIDI0LCAyMDQsIDgxLCAKKyAgICA5NywgMjIxLCAxODIsIDIwNCwgODEsIDk3LCAyNDgsIDgyLCAyMjEsIDE5MiwgMjQ4LCA4MSwgMjQ4LCA4MCwgMjI0LCAxMywgCisgICAgMjQ4LCA4MCwgMjE5LCAyNSwgMjIxLCAxOTIsIDIxOSwgMjQsIDI0NiwgMTMyLCAyNDUsIDEyMywgMjI0LCAyMzYsIDk3LCAKKyAgICAyMDMsIDI0NywgOTcsIDIxNiwgODMsIDI0OSwgMjgsIDk3LCAyMDgsIDE2OCwgMjA0LCA4MSwgMjQ2LCAxMywgMjEyLCAyMDksIAorICAgIDI0OCwgMjA2LCAyNDgsIDIwNCwgMjE5LCA1NywgMjQ1LCAxODMsIDI0NSwgNzksIDI0OSwgNywgMjQ2LCA0MSwgNDksIDIyNiwgCisgICAgMjI5LCAyMDgsIDg2LCAzLCAyMTUsIDE4OSwgMjQ1LCAxNjQsIDIxNywgMjIwLCA1NCwgNDMsIDIzMSwgMjUsIDIxMSwgMjM5LCAKKyAgICAyNDcsIDIzMSwgOTcsIDIzOCwgNTksIDk3LCAyNDUsIDE1NywgMjUsIDIyOCwgMTgsIDIxMiwgNTQsIDI1MSwgMTM1LCAyMTIsIAorICAgIDIzMSwgMjQ5LCA2LCAyNDgsIDEyNywgMjQ4LCAxMjgsIDI0OCwgMTUxLCAyMTgsIDk3LCA3NiwgMjAzLCAyMzEsIDIzNywgCisgICAgMTMxLCAyNSwgMjAzLCAyMjUsIDIxMywgOCwgMjIwLCA1NiwgMjQyLCA0NiwgMjI0LCAxNywgMjE2LCAxOTMsIDIwOCwgMTE4LCAKKyAgICAyMjQsIDE5LCAyNDgsIDE5LCAyMDYsIDIyMywgMjI0LCAxMTksIDI1MSwgNTIsIDIwNiwgMjIzLCAyNTEsIDUyLCAyMDYsIAorICAgIDIyMywgNSwgMjUxLCA1MiwgNSwgMjUxLCA1MiwgMjIxLCAxNzEsIDI1MSwgNTIsIDI1MSwgNTMsIDI0NCwgMjUsIDI1MSwgCisgICAgNTMsIDI1MCwgOTcsIDIxNCwgMjIxLCAyMjAsIDI5LCAyMzksIDI1MCwgMjQxLCA3NywgMjQzLCAyMTEsIDIyNywgNDAsIAorICAgIDIxOSwgNjAsIDIxMiwgMjUxLCAxMzYsIDE2LCAzNSwgMjE3LCAzNiwgMTM2LCAxNiwgMzUsIDI1MSwgNTQsIDEzNiwgMTYsIAorICAgIDM1LCAyMzksIDI0OSwgMTM2LCAxNiwgMzUsIDI0MSwgMTc5LCAxMzYsIDE2LCAzNSwgMjA0LCA4MCwgMTM2LCAxNiwgMzUsIAorICAgIDI1MCwgMTQ2LCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIxNiwgMTMyLCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIxNiwgCisgICAgMTMxLCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIwNSwgMTk1LCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIwNSwgMTk0LCAKKyAgICAxMzYsIDE2LCAzNSwgMjA1LCAyMDksIDEzNiwgMTYsIDM1LCAyMDUsIDIwOCwgMTM2LCAxNiwgMzUsIDIwNSwgMjA3LCAxMzYsIAorICAgIDE2LCAzNSwgMjEwLCAyMjEsIDEzNiwgMTYsIDM1LCAyMTgsIDE4NCwgMjEwLCAyMjEsIDEzNiwgMTYsIDM1LCA2MiwgMjEwLCAKKyAgICAyMjEsIDEzNiwgMTYsIDM1LCAyMjQsIDIzNSwgMjEwLCAyNTIsIDEzNiwgMTYsIDM1LCAyMjQsIDIzNSwgMjEwLCAyNTEsIAorICAgIDEzNiwgMTYsIDM1LCAyMjQsIDIzNSwgMjEwLCAyNTAsIDEzNiwgMTYsIDM1LCAyNDYsIDY0LCAxMzYsIDE2LCAzNSwgMjE1LCAKKyAgICAxLCAxMzYsIDE2LCAzNSwgMjIyLCA1MSwgMTM2LCAxNiwgMzUsIDIwNSwgMTkzLCAxMzYsIDE2LCAzNSwgMjA1LCAxOTIsIAorICAgIDEzNiwgMTYsIDM1LCAyMTUsIDIxOSwgMjE1LCAxLCAxMzYsIDE2LCAzNSwgMjE1LCAyMTksIDIxNSwgMCwgMTM2LCAxNiwgCisgICAgMzUsIDIzOCwgMzEsIDEzNiwgMTYsIDM1LCAyMTIsIDEzMywgMTM2LCAxNiwgMzUsIDIzMCwgMjIxLCAyMTksIDIzOSwgMTM2LCAKKyAgICAxNiwgMzUsIDIzMCwgMjIxLCAyMTksIDIzOCwgMTM2LCAxNiwgMzUsIDI0NSwgMTM0LCA3NiwgMjMwLCAyMjAsIDEzNiwgMTYsIAorICAgIDM1LCAyMTYsIDEyOCwgNzYsIDIzMCwgMjIwLCAxMzYsIDE2LCAzNSwgMjQ1LCAxNzQsIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgCisgICAgMjMwLCAyMTksIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgMjEwLCAyNTMsIDc2LCAyNDUsIDE3MywgMTM2LCAxNiwgMzUsIAorICAgIDI0NSwgMTM0LCA3NiwgMjQ1LCAxNzMsIDEzNiwgMTYsIDM1LCAyNDUsIDEzNCwgNzYsIDI0NSwgMTcyLCAxMzYsIDE2LCAzNSwgCisgICAgMjQ1LCAxNzQsIDI1MCwgMTg4LCAxMzYsIDE2LCAzNSwgMjE1LCAyLCA3NiwgMjQ1LCAxNzQsIDI1MCwgMTg4LCAxMzYsIDE2LCAKKyAgICAzNSwgMjEwLCAyNTMsIDc2LCAyMTUsIDIsIDc2LCAyNDUsIDE3MywgMTM2LCAxNiwgMzUsIDIwNiwgNDIsIDEzNiwgMTYsIAorICAgIDM1LCAyMDgsIDIxOCwgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAyMjcsIDIzMywgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAKKyAgICAyNTAsIDE4NywgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAyMTAsIDI1MywgNzYsIDI1MCwgMTg2LCAxMzYsIDE2LCAzNSwgCisgICAgMjE1LCAyLCA3NiwgMjUwLCAxODYsIDEzNiwgMTYsIDM1LCAyMTAsIDI1MywgNzYsIDIxNSwgMiwgNzYsIDI1MCwgMTg2LCAKKyAgICAxMzYsIDE2LCAzNSwgMjA1LCAyMTAsIDc2LCAyNTAsIDE4NiwgMTM2LCAxNiwgMzUsIDIxNiwgMTI4LCA3NiwgMjUwLCAxODYsIAorICAgIDEzNiwgMTYsIDM1LCAyMTYsIDEyOCwgNzYsIDI1MCwgMTg1LCAxMzYsIDE2LCAzNSwgMjE2LCAxMjcsIDEzNiwgMTYsIDM1LCAKKyAgICAyMTYsIDEyNiwgMTM2LCAxNiwgMzUsIDIxNiwgMTI1LCAxMzYsIDE2LCAzNSwgMjE2LCAxMjQsIDEzNiwgMTYsIDM1LCAyNTEsIAorICAgIDE3LCAxMzYsIDE2LCAzNSwgMjUxLCAxNiwgMTM2LCAxNiwgMzUsIDIyNSwgOTcsIDEzNiwgMTYsIDM1LCAyMTUsIDcsIDEzNiwgCisgICAgMTYsIDM1LCAyNTAsIDkwLCAxMzYsIDE2LCAzNSwgMjE2LCAxNTUsIDEzNiwgMTYsIDM1LCAyMTYsIDE1NCwgMTM2LCAxNiwgCisgICAgMzUsIDI1MCwgMjUsIDEzNiwgMTYsIDM1LCAyNDgsIDUyLCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIDIwOSwgMjE2LCAxMzYsIAorICAgIDE2LCAzNSwgMjA5LCAyMTUsIDEzNiwgMTYsIDM1LCAyMTcsIDQyLCAyMjcsIDEyMywgMTM2LCAxNiwgMzUsIDI0OCwgMCwgCisgICAgMTM2LCAxNiwgMzUsIDI0NywgMjU1LCAxMzYsIDE2LCAzNSwgMjQ3LCAyNTQsIDEzNiwgMTYsIDM1LCAyNTAsIDI0OSwgMTM2LCAKKyAgICAxNiwgMzUsIDIyMCwgNTUsIDEzNiwgMTYsIDM1LCAyMTEsIDE5OCwgMTM2LCAxNiwgMzUsIDIwOCwgMjE2LCAxMzYsIDE2LCAKKyAgICAzNSwgMjM3LCAyMTAsIDEzNiwgMTYsIDM1LCAyMDQsIDY4LCAxMzYsIDE2LCAzNSwgMjE4LCAxOCwgMTM2LCAxNiwgMzUsIAorICAgIDI0NywgNzAsIDEzNiwgMTYsIDM1LCAyMDcsIDE2NiwgMTM2LCAxNiwgMzUsIDI0NywgNDEsIDIyNCwgMjMsIDEzNiwgMTYsIAorICAgIDM1LCAyMTQsIDE5OSwgNzYsIDIzMCwgODcsIDEzNiwgMTYsIDM1LCAyNDcsIDgzLCAxMzYsIDE2LCAzNSwgMjA4LCA3OSwgCisgICAgMTM2LCAxNiwgMzUsIDIxMSwgOTIsIDIwOCwgNzksIDEzNiwgMTYsIDM1LCAyMjcsIDM5LCAxMzYsIDE2LCAzNSwgMjEyLCAKKyAgICAxMSwgMTM2LCAxNiwgMzUsIDIwNiwgMjAyLCAxMzYsIDE2LCAzNSwgMjM2LCA1MCwgMjQyLCAyNywgMTM2LCAxNiwgMzUsIAorICAgIDI1MCwgNzAsIDEzNiwgMTYsIDM1LCAyMTgsIDI2LCAyNTAsIDcwLCAxMzYsIDE2LCAzNSwgMjQ3LCAyMTAsIDEzNiwgMTYsIAorICAgIDM1LCAyMTgsIDE3LCAyNDcsIDIxMCwgMTM2LCAxNiwgMzUsIDI1MCwgMjQ2LCAxMzYsIDE2LCAzNSwgMjExLCA0OCwgMjEwLCAKKyAgICAyMDIsIDIxMSwgNDcsIDEzNiwgMTYsIDM1LCAyMTEsIDQ4LCAyMTAsIDIwMiwgMjExLCA0NiwgMTM2LCAxNiwgMzUsIDIxMCwgCisgICAgMjQ5LCAxMzYsIDE2LCAzNSwgMjE3LCAyNDcsIDEzNiwgMTYsIDM1LCAyNDMsIDE1MCwgMTM2LCAxNiwgMzUsIDI0MywgMTUyLCAKKyAgICAxMzYsIDE2LCAzNSwgMjQzLCAxNTEsIDEzNiwgMTYsIDM1LCAyMTcsIDE2OSwgMTM2LCAxNiwgMzUsIDIxNywgMTU4LCAxMzYsIAorICAgIDE2LCAzNSwgMjQ1LCAxMjEsIDEzNiwgMTYsIDM1LCAyNDUsIDEyMCwgMTM2LCAxNiwgMzUsIDI0NSwgMTE5LCAxMzYsIDE2LCAKKyAgICAzNSwgMjQ1LCAxMTgsIDEzNiwgMTYsIDM1LCAyNDUsIDExNywgMTM2LCAxNiwgMzUsIDI1MSwgMjksIDEzNiwgMTYsIDM1LCAKKyAgICAyNDgsIDIwNywgNzYsIDIyNSwgODEsIDEzNiwgMTYsIDM1LCAyNDgsIDIwNywgNzYsIDIwNiwgNzQsIDEzNiwgMTYsIDM1LCAKKyAgICAyMTYsIDgxLCAxMzYsIDE2LCAzNSwgMjM2LCA0MiwgMTM2LCAxNiwgMzUsIDIyMiwgNzksIDEzNiwgMTYsIDM1LCAyNDQsIAorICAgIDEzMiwgMTM2LCAxNiwgMzUsIDIyNCwgMzcsIDEzNiwgMTYsIDM1LCAxNjIsIDI0MiwgNTksIDEzNiwgMTYsIDM1LCAxNjIsIAorICAgIDIxOSwgMjE0LCA2MiwgMjI3LCAyMTcsIDIzMCwgMjA0LCA1MCwgMjA4LCA4NSwgNjIsIDIwNiwgMjIzLCAyMzAsIDIwNCwgCisgICAgNTAsIDIwOCwgODUsIDYyLCAyMTYsIDExLCAyMzAsIDIwNCwgNTAsIDIwOCwgODUsIDYyLCAyNDIsIDY5LCAyMzAsIDIwNCwgCisgICAgNTAsIDIwOCwgODUsIDYyLCAyMTIsIDQ3LCA1LCAyNDYsIDYxLCAyMjUsIDEwLCAyNiwgNjEsIDI0NiwgNjEsIDI2LCA2MSwgCisgICAgMjQ2LCA2MSwgNzksIDYxLCAyNDYsIDYxLCAyMDUsIDI0MiwgNzksIDYxLCAyNDYsIDYxLCAyNDAsIDE5NSwgNzksIDYxLCAKKyAgICAyNDYsIDYxLCA2MSwgMjQ2LCA2MiwgMjQ1LCAxOTUsIDYyLCA1LCAyNDYsIDYxLCAyMTUsIDE5MSwgMjA5LCAyMTcsIDYyLCAKKyAgICAyMDgsIDIxMywgMjExLCAxNzcsIDYyLCAyMTIsIDQ3LCA1LCAyMTEsIDE3NywgMTU3LCA2MSwgMjExLCAxNzcsIDIyNSwgMTAsIAorICAgIDYxLCAyMTEsIDE3NywgMjYsIDYxLCAyMTEsIDE3NywgNzksIDYxLCAyMTEsIDE3NywgMjA1LCAyNDIsIDc5LCA2MSwgMjExLCAKKyAgICAxNzcsIDI0MCwgMTk1LCA3OSwgNjEsIDIxMSwgMTc3LCA2MSwgNTEsIDI0NSwgMTk1LCA2MiwgMjA1LCAyNDIsIDUsIDIxMSwgCisgICAgMTc3LCA2MSwgNTEsIDI0NSwgMTk1LCA2MiwgMjI1LCAxMCwgMjExLCAxNzcsIDUxLCAyMDksIDIxNywgNjIsIDIwOCwgMjEzLCAKKyAgICAyNDMsIDIyMSwgNjIsIDIwNSwgMjQyLCA1LCAyNDMsIDIyMSwgNjIsIDIyNSwgMTAsIDUsIDI0MywgMjIxLCA2MSwgMjQzLCAKKyAgICAyMjIsIDI0NSwgMTk1LCA2MiwgMjA1LCAyNDIsIDUsIDI0MywgMjIxLCA2MSwgMjQzLCAyMjIsIDI0NSwgMTk1LCA2MiwgCisgICAgMjI1LCAxMCwgMjQzLCAyMjEsIDI0MywgMjIyLCAyMDksIDIxNywgNjIsIDIwOCwgMjEzLCAyMjYsIDI0NiwgNjIsIDIwNSwgCisgICAgMjQyLCA1LCAyMjYsIDI0NiwgNjIsIDIyNSwgMTAsIDUsIDIyNiwgMjQ2LCA2MSwgMjI2LCAyNDcsIDI0NSwgMTk1LCA2MiwgCisgICAgNSwgMjI2LCAyNDYsIDIwOSwgNjMsIDMwLCAyNDUsIDEzMCwgMTU3LCAzMCwgMjQ1LCAxMzAsIDIyNSwgMTAsIDMwLCAyNDUsIAorICAgIDEzMCwgMjYsIDMwLCAyNDUsIDEzMCwgMjA1LCAyNDIsIDI2LCAzMCwgMjQ1LCAxMzAsIDIwNSwgMjQyLCA3OSwgMzAsIDI0NSwgCisgICAgMTMwLCAyNDAsIDE5NSwgNzksIDMwLCAyNDUsIDEzMCwgMjA5LCA2MywgMjE0LCAyNTQsIDE1NywgMjE0LCAyNTQsIDIyNSwgCisgICAgMTAsIDIxNCwgMjU0LCAyNiwgMjE0LCAyNTQsIDc5LCAyMTQsIDI1NCwgMjA1LCAyNDIsIDc5LCAyMTQsIDI1NCwgMjQwLCAKKyAgICAxOTUsIDc5LCAyMTQsIDI1NCwgMTU3LCAyMzksIDIzMywgMjExLCAxOTEsIDI1MCwgNTksIDIyNSwgMTAsIDIzOSwgMjMzLCAKKyAgICAyMTEsIDE5MSwgMjUwLCA1OSwgMjYsIDIzOSwgMjMzLCAyMTEsIDE5MSwgMjUwLCA1OSwgNzksIDIzOSwgMjMzLCAyMTEsIAorICAgIDE5MSwgMjUwLCA1OSwgMjA1LCAyNDIsIDc5LCAyMzksIDIzMywgMjExLCAxOTEsIDI1MCwgNTksIDI0MCwgMTk1LCA3OSwgCisgICAgMjM5LCAyMzMsIDIxMSwgMTkxLCAyNTAsIDU5LCAxNTcsIDIxMiwgODgsIDIxMSwgMTkxLCAyNTAsIDU5LCAyMjUsIDEwLCAKKyAgICAyMTIsIDg4LCAyMTEsIDE5MSwgMjUwLCA1OSwgMjYsIDIxMiwgODgsIDIxMSwgMTkxLCAyNTAsIDU5LCA3OSwgMjEyLCA4OCwgCisgICAgMjExLCAxOTEsIDI1MCwgNTksIDIwNSwgMjQyLCA3OSwgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDI0MCwgMTk1LCAKKyAgICA3OSwgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDE1NywgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCAyMjUsIAorICAgIDEwLCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDI2LCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDc5LCAKKyAgICAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDIwNSwgMjQyLCA3OSwgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCAKKyAgICAxNTcsIDEyNiwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDEyNiwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDEyNiwgCisgICAgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDEyNiwgMjE4LCA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIDE1NywgMjM5LCAKKyAgICAxNDcsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMjUsIDEwLCAyMzksIDE0NywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIzOSwgCisgICAgMTQ3LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjI1LCAxMCwgMjM5LCAxNDcsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAKKyAgICAyMTYsIDc0LCAxNTcsIDIzOSwgMTQ3LCAyMTgsIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgMTU3LCAyMzksIDIzMywgMjE4LCAKKyAgICA2MSwgNjIsIDIxMSwgOTQsIDc5LCAyMzksIDIzMywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDIxMiwgODgsIAorICAgIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCA3OSwgMjEyLCA4OCwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIxMiwgODgsIDIxOCwgCisgICAgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAyMjUsIDEwLCAyNDEsIDE0MywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDc5LCAyNDEsIAorICAgIDE0MywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIwNSwgMjQyLCA3OSwgMjQxLCAxNDMsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAKKyAgICA3OSwgMjQxLCAxNDMsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAxNTcsIDIwNywgMTU1LCAyMTgsIDYxLCA2MiwgCisgICAgMjExLCA5NCwgNzksIDIwNywgMTU1LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgNzksIDIwNywgMTU1LCAyMTgsIDYxLCAyMTgsIAorICAgIDExOCwgMjExLCA5NCwgOTYsIDUzLCAzLCA1LCAyMDgsIDg2LCAyNTAsIDk0LCAxNzcsIDUzLCAzLCA1LCAyMDgsIDg2LCAKKyAgICAyNTAsIDk0LCA4NiwgNTMsIDMsIDUsIDIwOCwgODYsIDI1MCwgOTQsIDE4MywgNTMsIDMsIDUsIDIwOCwgODYsIDI1MCwgOTQsIAorICAgIDk2LCA1MywgMywgMjI1LCAxMCwgMjA4LCA4NiwgMjUwLCA5NCwgMTc3LCA1MywgMywgMjI1LCAxMCwgMjA4LCA4NiwgMjUwLCAKKyAgICA5NCwgODYsIDUzLCAzLCAyMjUsIDEwLCAyMDgsIDg2LCAyNTAsIDk0LCAxODMsIDUzLCAzLCAyMjUsIDEwLCAyMDgsIDg2LCAKKyAgICAyNTAsIDk0LCA5NiwgNTMsIDMsIDIyOCwgOCwgMjA4LCA4NiwgMjUwLCA5NCwgMTc3LCA1MywgMywgMjI4LCA4LCAyMDgsIAorICAgIDg2LCAyNTAsIDk0LCA4NiwgNTMsIDMsIDIyOCwgOCwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCA1MywgMywgMjI4LCA4LCAKKyAgICAyMDgsIDg2LCAyNTAsIDk0LCA5NiwgNTMsIDMsIDUsIDI0MSwgMzEsIDI1MCwgOTQsIDE3NywgNTMsIDMsIDUsIDI0MSwgMzEsIAorICAgIDI1MCwgOTQsIDg2LCA1MywgMywgNSwgMjQxLCAzMSwgMjUwLCA5NCwgMTgzLCA1MywgMywgNSwgMjQxLCAzMSwgMjUwLCA5NCwgCisgICAgOTYsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCAxNzcsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCA4NiwgNTMsIDMsIAorICAgIDI0MSwgMzEsIDI1MCwgOTQsIDE4MywgNTMsIDMsIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCA5NiwgNTMsIDMsIDI0MSwgMzEsIAorICAgIDI1MCwgOTQsIDc5LCAxNzcsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCA3OSwgODYsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIAorICAgIDk0LCA3OSwgMTgzLCA1MywgMywgMjQxLCAzMSwgMjUwLCA5NCwgNzksIDk2LCA1MywgMywgMjI4LCA4LCAyNDEsIDMxLCAKKyAgICAyNTAsIDk0LCA3OSwgMTc3LCA1MywgMywgMjI4LCA4LCAyNDEsIDMxLCAyNTAsIDk0LCA3OSwgODYsIDUzLCAzLCAyMjgsIDgsIAorICAgIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCAxODMsIDUzLCAzLCAyMjgsIDgsIDI0MSwgMzEsIDI1MCwgOTQsIDk2LCAyMDgsIDg0LCAKKyAgICA1MywgMywgMjIzLCA3MywgMjEzLCA3NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgMjIzLCA3MywgMjEzLCA3NSwgODYsIDIwOCwgCisgICAgODQsIDUzLCAzLCAyMjMsIDczLCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCAyMjMsIDczLCAyMTMsIDc1LCA5NiwgCisgICAgMjA4LCA4NCwgNTMsIDMsIDIyNSwgMTAsIDIxMywgNzUsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDIyNSwgMTAsIDIxMywgNzUsIAorICAgIDg2LCAyMDgsIDg0LCA1MywgMywgMjI1LCAxMCwgMjEzLCA3NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgMjI1LCAxMCwgMjEzLCAKKyAgICA3NSwgOTYsIDIwOCwgODQsIDUzLCAzLCAyNiwgMjEzLCA3NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgMjYsIDIxMywgNzUsIAorICAgIDg2LCAyMDgsIDg0LCA1MywgMywgMjYsIDIxMywgNzUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDI2LCAyMTMsIDc1LCA5NiwgCisgICAgMjA4LCA4NCwgNTMsIDMsIDc5LCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCA3OSwgMjEzLCA3NSwgODYsIDIwOCwgCisgICAgODQsIDUzLCAzLCA3OSwgMjEzLCA3NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgNzksIDIxMywgNzUsIDk2LCAyMDgsIDg0LCAKKyAgICA1MywgMywgMjA1LCAyNDIsIDc5LCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCAyMDUsIDI0MiwgNzksIDIxMywgNzUsIAorICAgIDg2LCAyMDgsIDg0LCA1MywgMywgMjA1LCAyNDIsIDc5LCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCAyMDUsIDI0MiwgCisgICAgNzksIDIxMywgNzUsIDk2LCAyNDAsIDEsIDQ3LCAxNzcsIDI0MCwgMSwgNDcsIDg2LCAyNDAsIDEsIDQ3LCAxODMsIDI0MCwgCisgICAgMSwgNDcsIDk2LCAxMDMsIDQ3LCAxNzcsIDEwMywgNDcsIDg2LCAxMDMsIDQ3LCAxODMsIDEwMywgNDcsIDk2LCAyNDUsIAorICAgIDIyMiwgNDcsIDE3NywgMjQ1LCAyMjIsIDQ3LCA4NiwgMjQ1LCAyMjIsIDQ3LCAxODMsIDI0NSwgMjIyLCA0NywgOTYsIDc5LCAKKyAgICAyNDUsIDIyMiwgNDcsIDE3NywgNzksIDI0NSwgMjIyLCA0NywgODYsIDc5LCAyNDUsIDIyMiwgNDcsIDE4MywgNzksIDI0NSwgCisgICAgMjIyLCA0NywgOTYsIDc5LCA0NywgMTc3LCA3OSwgNDcsIDg2LCA3OSwgNDcsIDE4MywgNzksIDQ3LCA5NiwgNDEsIDQ3LCAKKyAgICAxNzcsIDQxLCA0NywgODYsIDQxLCA0NywgMTgzLCA0MSwgNDcsIDE1MywgMjA0LCA0NiwgNDEsIDQ3LCAxNTMsIDI0MSwgCisgICAgMTc2LCA0MSwgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDEsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgNDEsIDQ3LCA0OSwgCisgICAgNTAsIDQxLCA0NywgMTEyLCAxMjEsIDQxLCA0NywgMjA0LCAyNiwgOTYsIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgMTc3LCAKKyAgICAxNTcsIDE1MCwgNDcsIDIwNCwgMjYsIDg2LCAxNTcsIDE1MCwgNDcsIDIwNCwgMjYsIDE4MywgMTU3LCAxNTAsIDQ3LCAyMDQsIAorICAgIDI2LCAxNTMsIDIwNCwgNDYsIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyNDEsIDE3NiwgMTU3LCAxNTAsIDQ3LCAKKyAgICAyMDQsIDI2LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDIwNCwgNDYsIAorICAgIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgOTYsIDE1MCwgNDcsIDIwNCwgMjYsIDE3NywgMTUwLCA0NywgMjA0LCAyNiwgODYsIAorICAgIDE1MCwgNDcsIDIwNCwgMjYsIDE4MywgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyMDQsIDQ2LCAxNTAsIDQ3LCAyMDQsIDI2LCAKKyAgICAxNTMsIDI0MSwgMTc2LCAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDE1MCwgNDcsIDIwNCwgMjYsIAorICAgIDIxMSwgMjM4LCAyMDQsIDQ2LCAxNTAsIDQ3LCAyMDQsIDI2LCA5NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgMTc3LCAKKyAgICAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCA4NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCAyMjUsIDEwLCAKKyAgICAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDIwNCwgNDYsIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjQxLCAxNzYsIAorICAgIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgCisgICAgMjExLCAyMzgsIDIwNCwgNDYsIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDk2LCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgCisgICAgMTc3LCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgODYsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxODMsIDc5LCAxNTAsIDQ3LCAKKyAgICAyMDQsIDI2LCAxNTMsIDIwNCwgNDYsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDI0MSwgMTc2LCA3OSwgMTUwLCA0NywgCisgICAgMjA0LCAyNiwgMjExLCAyMzgsIDI0MSwgMTc2LCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDIwNCwgNDYsIDc5LCAKKyAgICAxNTAsIDQ3LCAyMDQsIDI2LCA5NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNzcsIDIwNSwgMjQyLCA3OSwgCisgICAgMTUwLCA0NywgMjA0LCAyNiwgODYsIDIwNSwgMjQyLCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCAyMDUsIDI0MiwgNzksIAorICAgIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjA0LCA0NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDI0MSwgCisgICAgMTc2LCAyMDUsIDI0MiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjA1LCAyNDIsIDc5LCAKKyAgICAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjA0LCA0NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCA5NiwgMjA4LCA4NiwgCisgICAgMjUwLCA5NCwgMTc3LCAyMDgsIDg2LCAyNTAsIDk0LCA4NiwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCAyMDgsIDg2LCAyNTAsIAorICAgIDk0LCA5NiwgNjEsIDUzLCAyMDQsIDUsIDIwOCwgODYsIDI1MCwgOTQsIDE3NywgNjEsIDUzLCAyMDQsIDUsIDIwOCwgODYsIAorICAgIDI1MCwgOTQsIDg2LCA2MSwgNTMsIDIwNCwgNSwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCA2MSwgNTMsIDIwNCwgNSwgMjA4LCAKKyAgICA4NiwgMjUwLCA5NCwgOTYsIDUzLCAzLCAyMjEsIDE2MiwgMjA5LCAyNDgsIDE3NywgNTMsIDMsIDIyMSwgMTYyLCAyMDksIAorICAgIDI0OCwgODYsIDUzLCAzLCAyMjEsIDE2MiwgMjA5LCAyNDgsIDE4MywgNTMsIDMsIDIyMSwgMTYyLCAyMDksIDI0OCwgNzksIAorICAgIDUzLCAyMTMsIDc2LCAyMDQsIDI0LCAxMDUsIDc5LCA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTIwLCAyMDksIDU3LCA3OSwgCisgICAgNTMsIDIxMywgNzYsIDIwNCwgMjQsIDExOCwgMjM3LCAxMzcsIDc5LCA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTE4LCAyMDksIAorICAgIDYwLCA5NiwgMjQ3LCAyNDUsIDYxLCA0NywgODYsIDI0NywgMjQ4LCAyMTMsIDc4LCA2MSwgNDcsIDk2LCAyMDgsIDE0NSwgCisgICAgMjEzLCA3OCwgNjEsIDQ3LCA4NiwgMjA4LCAxNDUsIDIxMywgNzgsIDYxLCA0NywgOTYsIDIyNywgMjE2LCA2MSwgNDcsIDg2LCAKKyAgICAyMTYsIDEwLCA2MSwgNDcsIDk2LCAyMTYsIDEwLCA2MSwgNDcsIDg2LCAyMjcsIDIxNiwgNjEsIDQ3LCA5NiwgMjQ5LCAyNCwgCisgICAgMjEzLCA3NywgNjEsIDQ3LCA4NiwgMjQ5LCAyNCwgMjEzLCA3NywgNjEsIDQ3LCA5NiwgMjM5LCAxMTcsIDIxMywgNzcsIDYxLCAKKyAgICA0NywgODYsIDIzOSwgMTE3LCAyMTMsIDc3LCA2MSwgNDcsIDYxLCA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTA1LCA2MSwgNTMsIAorICAgIDIxMywgNzYsIDIwNCwgMjQsIDEyMCwgMjA5LCA1NywgMjAyLCAyNiwgMjQwLCAxMDIsIDIyNCwgNTIsIDI0MCwgMTAyLCAKKyAgICAyNDAsIDEwMywgMywgMjA5LCA4MCwgMjIyLCAyMjIsIDI0MCwgMTAyLCAyMDksIDYyLCAyNDAsIDEwMiwgMjQwLCAxMDMsIDMsIAorICAgIDIzNywgNjMsIDIxNSwgMjIxLCAyNDAsIDEwMiwgMjM2LCAyMCwgMjQwLCAxMDIsIDIsIDc2LCAyMDksIDkzLCAyMzYsIDUyLCAKKyAgICAyNDUsIDE0NiwgMjI3LCAxMDIsIDI0MCwgMTAyLCAyMTQsIDE4OCwgMjA3LCAxNzksIDIwNiwgMjQwLCAyNDAsIDEwMiwgCisgICAgMjQ2LCAxNjEsIDIwNCwgNTcsIDEyLCAxNSwgMjM1LCAxNTIsIDEyLCAxNSwgMjM1LCAxNTEsIDEyLCAxNSwgMjM1LCAxNTAsIAorICAgIDEyLCAxNSwgMjM1LCAxNDksIDEyLCAxNSwgMjM1LCAxNDgsIDEyLCAxNSwgMjM1LCAxNDcsIDEyLCAxNSwgMjM1LCAxNDYsIAorICAgIDEyLCAxNSwgMjM1LCAxNDUsIDEyLCAxNSwgMjM1LCAxNDQsIDEyLCAxNSwgMjM1LCAxNDMsIDEyLCAxNSwgMjM1LCAxNDIsIAorICAgIDEyLCAxNSwgMjM1LCAxNDEsIDEyLCAxNSwgMjM1LCAxNDAsIDEyLCAxNSwgMjM1LCAxMzksIDEyLCAxNSwgMjM1LCAxMzgsIAorICAgIDEyLCAxNSwgMjM1LCAxMzcsIDEyLCAxNSwgMjM1LCAxMzYsIDEyLCAxNSwgMjM1LCAxMzUsIDEyLCAxNSwgMjM1LCAxMzQsIAorICAgIDEyLCAxNSwgMjM1LCAxMzMsIDEyLCAxNSwgMjM1LCAxMzIsIDEyLCAxNSwgMjM1LCAxMzEsIDEyLCAxNSwgMjM1LCAxMzAsIAorICAgIDEyLCAxNSwgMjM1LCAxMjksIDEyLCAxNSwgMjM1LCAxMjgsIDEyLCAxNSwgMjM1LCAxMjcsIDEyLCAxNSwgMjM1LCAxMjYsIAorICAgIDEyLCAxNSwgMjM1LCAxMjUsIDEyLCAxNSwgMjM1LCAxMjQsIDEyLCAxNSwgMjM1LCAxMjMsIDEyLCAxNSwgMjM1LCAxMjIsIAorICAgIDEyLCAxNSwgMjM1LCAxMjEsIDEyLCAxNSwgMjM1LCAxMjAsIDEyLCAxNSwgMjM1LCAxMTksIDEyLCAxNSwgMjM1LCAxMTgsIAorICAgIDEyLCAxNSwgMjM1LCAxMTcsIDEyLCAxNSwgMjM1LCAxMTYsIDEyLCAxNSwgMjM1LCAxMTUsIDEyLCAxNSwgMjM1LCAxMTQsIAorICAgIDEyLCAxNSwgMjM1LCAxMTMsIDEyLCAxNSwgMjM1LCAxMTIsIDEyLCAxNSwgMjM1LCAxMTEsIDEyLCAxNSwgMjM1LCAxMTAsIAorICAgIDEyLCAxNSwgMjM1LCAxMDksIDEyLCAxNSwgMjM1LCAxMDgsIDEyLCAxNSwgMjM1LCAxMDcsIDEyLCAxNSwgMjM1LCAxMDYsIAorICAgIDEyLCAxNSwgMjM1LCAxMDUsIDEyLCAxNSwgMjM1LCAxMDQsIDEyLCAxNSwgMjM1LCAxMDMsIDEyLCAxNSwgMjM1LCAxMDIsIAorICAgIDEyLCAxNSwgMjM1LCAxMDEsIDEyLCAxNSwgMjM1LCAxMDAsIDEyLCAxNSwgMjM1LCA5OSwgMTIsIDE1LCAyMzUsIDk4LCAxMiwgCisgICAgMTUsIDIzNSwgOTcsIDEyLCAxNSwgMjM1LCA5NiwgMTIsIDE1LCAyMzUsIDk1LCAxMiwgMTUsIDIzNSwgOTQsIDEyLCAxNSwgCisgICAgMjM1LCA5MywgMTIsIDE1LCAyMzUsIDkyLCAxMiwgMTUsIDIzNSwgOTEsIDEyLCAxNSwgMjM1LCA5MCwgMTIsIDE1LCAyMzUsIAorICAgIDg5LCAxMiwgMTUsIDIzNSwgODgsIDEyLCAxNSwgMjM1LCA4NywgMTIsIDE1LCAyMzUsIDg2LCAxMiwgMTUsIDIzNSwgODUsIAorICAgIDEyLCAxNSwgMjM1LCA4NCwgMTIsIDE1LCAyMzUsIDgzLCAxMiwgMTUsIDIzNSwgODIsIDEyLCAxNSwgMjM1LCA4MSwgMTIsIAorICAgIDE1LCAyMzUsIDgwLCAxMiwgMTUsIDIzNSwgNzksIDEyLCAxNSwgMjM1LCA3OCwgMTIsIDE1LCAyMzUsIDc3LCAxMiwgMTUsIAorICAgIDIzNSwgNzYsIDEyLCAxNSwgMjM1LCA3NSwgMTIsIDE1LCAyMzUsIDc0LCAxMiwgMTUsIDIzNSwgNzMsIDEyLCAxNSwgMjM1LCAKKyAgICA3MiwgMTIsIDE1LCAyMzUsIDcxLCAxMiwgMTUsIDIzNSwgNzAsIDEyLCAxNSwgMjM1LCA2OSwgMTIsIDE1LCAyMzUsIDY4LCAKKyAgICAxMiwgMTUsIDIzNSwgNjcsIDEyLCAxNSwgMjM1LCA2NiwgMTIsIDE1LCAyMzUsIDY1LCAxMiwgMTUsIDIzNSwgNjQsIDEyLCAKKyAgICAxNSwgMjM1LCA2MywgMTIsIDE1LCAyMzUsIDYyLCAxMiwgMTUsIDIzNSwgNjEsIDEyLCAxNSwgMjM1LCA2MCwgMTIsIDE1LCAKKyAgICAyMzUsIDU5LCAxMiwgMTUsIDIzNSwgNTgsIDEyLCAxNSwgMjM1LCA1NywgMTIsIDE1LCAyMzUsIDU2LCAxMiwgMTUsIDIzNSwgCisgICAgNTUsIDEyLCAxNSwgMjM1LCA1NCwgMTIsIDE1LCAyMzUsIDUzLCAxMiwgMTUsIDIzNSwgNTIsIDEyLCAxNSwgMjM1LCA1MSwgCisgICAgMTIsIDE1LCAyMzUsIDUwLCAxMiwgMTUsIDIzNSwgNDksIDEyLCAxNSwgMjM1LCA0OCwgMTIsIDE1LCAyMzUsIDQ3LCAxMiwgCisgICAgMTUsIDIzNSwgNDYsIDEyLCAxNSwgMjM1LCA0NSwgMTIsIDE1LCAyMzUsIDQ0LCAxMiwgMTUsIDIzNSwgNDMsIDEyLCAxNSwgCisgICAgMjM1LCA0MiwgMTIsIDE1LCAyMzUsIDQxLCAxMiwgMTUsIDIzNSwgNDAsIDEyLCAxNSwgMjM1LCAzOSwgMTIsIDE1LCAyMzUsIAorICAgIDM4LCAxMiwgMTUsIDIzNSwgMzcsIDEyLCAxNSwgMjM1LCAzNiwgMTIsIDE1LCAyMzUsIDM1LCAxMiwgMTUsIDIzNSwgMzQsIAorICAgIDEyLCAxNSwgMjM1LCAzMywgMTIsIDE1LCAyMzUsIDMyLCAxMiwgMTUsIDIzNSwgMzEsIDEyLCAxNSwgMjM1LCAzMCwgMTIsIAorICAgIDE1LCAyMzUsIDI5LCAxMiwgMTUsIDIzNSwgMjgsIDEyLCAxNSwgMjM1LCAyNywgMTIsIDE1LCAyMzUsIDI2LCAxMiwgMTUsIAorICAgIDIzNSwgMjUsIDEyLCAxNSwgMjM1LCAyNCwgMTIsIDE1LCAyMzUsIDIzLCAxMiwgMTUsIDIzNSwgMjIsIDEyLCAxNSwgMjM1LCAKKyAgICAyMSwgMTIsIDE1LCAyMzUsIDIwLCAxMiwgMTUsIDIzNSwgMTksIDEyLCAxNSwgMjM1LCAxOCwgMTIsIDE1LCAyMzUsIDE3LCAKKyAgICAxMiwgMTUsIDIzNSwgMTYsIDEyLCAxNSwgMjM1LCAxNSwgMTIsIDE1LCAyMzUsIDE0LCAxMiwgMTUsIDIzNSwgMTMsIDEyLCAKKyAgICAxNSwgMjM1LCAxMiwgMTIsIDE1LCAyMzUsIDExLCAxMiwgMTUsIDIzNSwgMTAsIDEyLCAxNSwgMjM1LCA5LCAxMiwgMTUsIAorICAgIDIzNSwgOCwgMTIsIDE1LCAyMzUsIDcsIDEyLCAxNSwgMjM1LCA2LCAxMiwgMTUsIDIzNSwgNSwgMTIsIDE1LCAyMzUsIDQsIAorICAgIDEyLCAxNSwgMjM1LCAzLCAxMiwgMTUsIDIzNSwgMiwgMTIsIDE1LCAyMzUsIDEsIDEyLCAxNSwgMjM1LCAwLCAxMiwgMTUsIAorICAgIDIzNCwgMjU1LCAxMiwgMTUsIDIzNCwgMjU0LCAxMiwgMTUsIDIzNCwgMjUzLCAxMiwgMTUsIDIzNCwgMjUyLCAxMiwgMTUsIAorICAgIDIzNCwgMjUxLCAxMiwgMTUsIDIzNCwgMjUwLCAxMiwgMTUsIDIzNCwgMjQ5LCAxMiwgMTUsIDIzNCwgMjQ4LCAxMiwgMTUsIAorICAgIDIzNCwgMjQ3LCAxMiwgMTUsIDIzNCwgMjQ2LCAxMiwgMTUsIDIzNCwgMjQ1LCAxMiwgMTUsIDIzNCwgMjQ0LCAxMiwgMTUsIAorICAgIDIzNCwgMjQzLCAxMiwgMTUsIDIzNCwgMjQyLCAxMiwgMTUsIDIzNCwgMjQxLCAxMiwgMTUsIDIzNCwgMjQwLCAxMiwgMTUsIAorICAgIDIzNCwgMjM5LCAxMiwgMTUsIDIzNCwgMjM4LCAxMiwgMTUsIDIzNCwgMjM3LCAxMiwgMTUsIDIzNCwgMjM2LCAxMiwgMTUsIAorICAgIDIzNCwgMjM1LCAxMiwgMTUsIDIzNCwgMjM0LCAxMiwgMTUsIDIzNCwgMjMzLCAxMiwgMTUsIDIzNCwgMjMyLCAxMiwgMTUsIAorICAgIDIzNCwgMjMxLCAxMiwgMTUsIDIzNCwgMjMwLCAxMiwgMTUsIDIzNCwgMjI5LCAxMiwgMTUsIDIzNCwgMjI4LCAxMiwgMTUsIAorICAgIDIzNCwgMjI3LCAxMiwgMTUsIDIzNCwgMjI2LCAxMiwgMTUsIDIzNCwgMjI1LCAxMiwgMTUsIDIzNCwgMjI0LCAxMiwgMTUsIAorICAgIDIzNCwgMjIzLCAxMiwgMTUsIDIzNCwgMjIyLCAxMiwgMTUsIDIzNCwgMjIxLCAxMiwgMTUsIDIzNCwgMjIwLCAxMiwgMTUsIAorICAgIDIzNCwgMjE5LCAxMiwgMTUsIDIzNCwgMjE4LCAxMiwgMTUsIDIzNCwgMjE3LCAxMiwgMTUsIDIzNCwgMjE2LCAxMiwgMTUsIAorICAgIDIzNCwgMjE1LCAxMiwgMTUsIDIzNCwgMjE0LCAxMiwgMTUsIDIzNCwgMjEzLCAxMiwgMTUsIDIzNCwgMjEyLCAxMiwgMTUsIAorICAgIDIzNCwgMjExLCAxMiwgMTUsIDIzNCwgMjEwLCAxMiwgMTUsIDIzNCwgMjA5LCAxMiwgMTUsIDIzNCwgMjA4LCAxMiwgMTUsIAorICAgIDIzNCwgMjA3LCAxMiwgMTUsIDIzNCwgMjA2LCAxMiwgMTUsIDIzNCwgMjA1LCAxMiwgMTUsIDIzNCwgMjA0LCAxMiwgMTUsIAorICAgIDIzNCwgMjAzLCAxMiwgMTUsIDIzNCwgMjAyLCAxMiwgMTUsIDIzNCwgMjAxLCAxMiwgMTUsIDIzNCwgMjAwLCAxMiwgMTUsIAorICAgIDIzNCwgMTk5LCAxMiwgMTUsIDIzNCwgMTk4LCAxMiwgMTUsIDIzNCwgMTk3LCAxMiwgMTUsIDIzNCwgMTk2LCAxMiwgMTUsIAorICAgIDIzNCwgMTk1LCAxMiwgMTUsIDIzNCwgMTk0LCAxMiwgMTUsIDIzNCwgMTkzLCAxMiwgMTUsIDIzNCwgMTkyLCAxMiwgMTUsIAorICAgIDIzNCwgMTkxLCAxMiwgMTUsIDIzNCwgMTkwLCAxMiwgMTUsIDIzNCwgMTg5LCAxMiwgMTUsIDIzNCwgMTg4LCAxMiwgMTUsIAorICAgIDIzNCwgMTg3LCAxMiwgMTUsIDIzNCwgMTg2LCAxMiwgMTUsIDIzNCwgMTg1LCAxMiwgMTUsIDIzNCwgMTg0LCAxMiwgMTUsIAorICAgIDIzNCwgMTgzLCAxMiwgMTUsIDIzNCwgMTgyLCAxMiwgMTUsIDIzNCwgMTgxLCAxMiwgMTUsIDIzNCwgMTgwLCAxMiwgMTUsIAorICAgIDIzNCwgMTc5LCAxMiwgMTUsIDIzNCwgMTc4LCAxMiwgMTUsIDIzNCwgMTc3LCAxMiwgMTUsIDIzNCwgMTc2LCAxMiwgMTUsIAorICAgIDIzNCwgMTc1LCAxMiwgMTUsIDIzNCwgMTc0LCAxMiwgMTUsIDIzNCwgMTczLCAxMiwgMTUsIDIzNCwgMTcyLCAxMiwgMTUsIAorICAgIDIzNCwgMTcxLCAxMiwgMTUsIDIzNCwgMTcwLCAxMiwgMTUsIDIzNCwgMTY5LCAxMiwgMTUsIDIzNCwgMTY4LCAxMiwgMTUsIAorICAgIDIzNCwgMTY3LCAxMiwgMTUsIDIzNCwgMTY2LCAxMiwgMTUsIDIzNCwgMTY1LCAxMiwgMTUsIDIzNCwgMTY0LCAxMiwgMTUsIAorICAgIDIzNCwgMTYzLCAxMiwgMTUsIDIzNCwgMTYyLCAxMiwgMTUsIDIzNCwgMTYxLCAxMiwgMTUsIDIzNCwgMTYwLCAxMiwgMTUsIAorICAgIDIzNCwgMTU5LCAxMiwgMTUsIDIzNCwgMTU4LCAxMiwgMTUsIDIzNCwgMTU3LCAxMiwgMTUsIDIzNCwgMTU2LCAxMiwgMTUsIAorICAgIDIzNCwgMTU1LCAxMiwgMTUsIDIzNCwgMTU0LCAxMiwgMTUsIDIzNCwgMTUzLCAxMiwgMTUsIDIzNCwgMTUyLCAxMiwgMTUsIAorICAgIDIzNCwgMTUxLCAxMiwgMTUsIDIzNCwgMTUwLCAxMiwgMTUsIDIzNCwgMTQ5LCAxMiwgMTUsIDIzNCwgMTQ4LCAxMiwgMTUsIAorICAgIDIzNCwgMTQ3LCAxMiwgMTUsIDIzNCwgMTQ2LCAxMiwgMTUsIDIzNCwgMTQ1LCAxMiwgMTUsIDIzNCwgMTQ0LCAxMiwgMTUsIAorICAgIDIzNCwgMTQzLCAxMiwgMTUsIDIzNCwgMTQyLCAxMiwgMTUsIDIzNCwgMTQxLCAxMiwgMTUsIDIzNCwgMTQwLCAxMiwgMTUsIAorICAgIDIzNCwgMTM5LCAxMiwgMTUsIDIzNCwgMTM4LCAxMiwgMTUsIDIzNCwgMTM3LCAxMiwgMTUsIDIzNCwgMTM2LCAxMiwgMTUsIAorICAgIDIzNCwgMTM1LCAxMiwgMTUsIDIzNCwgMTM0LCAxMiwgMTUsIDIzNCwgMTMzLCAxMiwgMTUsIDIzNCwgMTMyLCAxMiwgMTUsIAorICAgIDIzNCwgMTMxLCAxMiwgMTUsIDIzNCwgMTMwLCAxMiwgMTUsIDIzNCwgMTI5LCAxMiwgMTUsIDIzNCwgMTI4LCAxMiwgMTUsIAorICAgIDIzNCwgMTI3LCAxMiwgMTUsIDIzNCwgMTI2LCAxMiwgMTUsIDIzNCwgMTI1LCAxMiwgMTUsIDIzNCwgMTI0LCAxMiwgMTUsIAorICAgIDIzNCwgMTIzLCAxMiwgMTUsIDIzNCwgMTIyLCAxMiwgMTUsIDIzNCwgMTIxLCAxMiwgMTUsIDIzNCwgMTIwLCAxMiwgMTUsIAorICAgIDIzNCwgMTE5LCAxMiwgMTUsIDIzNCwgMTE4LCAxMiwgMTUsIDIzNCwgMTE3LCAxMiwgMTUsIDIzNCwgMTE2LCAxMiwgMTUsIAorICAgIDIzNCwgMTE1LCAxMiwgMTUsIDIzNCwgMTE0LCAxMiwgMTUsIDIzNCwgMTEzLCAxMiwgMTUsIDIzNCwgMTEyLCAxMiwgMTUsIAorICAgIDIzNCwgMTExLCAxMiwgMTUsIDIzNCwgMTEwLCAxMiwgMTUsIDIzNCwgMTA5LCAxMiwgMTUsIDIzNCwgMTA4LCAxMiwgMTUsIAorICAgIDIzNCwgMTA3LCAxMiwgMTUsIDIzNCwgMTA2LCAxMiwgMTUsIDIzNCwgMTA1LCAxMiwgMTUsIDIzNCwgMTA0LCAxMiwgMTUsIAorICAgIDIzNCwgMTAzLCAxMiwgMTUsIDIzNCwgMTAyLCAxMiwgMTUsIDIzNCwgMTAxLCAxMiwgMTUsIDIzNCwgMTAwLCAxMiwgMTUsIAorICAgIDIzNCwgOTksIDEyLCAxNSwgMjM0LCA5OCwgMTIsIDE1LCAyMzQsIDk3LCAxMiwgMTUsIDIzNCwgOTYsIDEyLCAxNSwgMjM0LCAKKyAgICA5NSwgMTIsIDE1LCAyMzQsIDk0LCAxMiwgMTUsIDIzNCwgOTMsIDEyLCAxNSwgMjM0LCA5MiwgMTIsIDE1LCAyMzQsIDkxLCAKKyAgICAxMiwgMTUsIDIzNCwgOTAsIDEyLCAxNSwgMjM0LCA4OSwgMTIsIDE1LCAyMzQsIDg4LCAxMiwgMTUsIDIzNCwgODcsIDEyLCAKKyAgICAxNSwgMjM0LCA4NiwgMTIsIDE1LCAyMzQsIDg1LCAxMiwgMTUsIDIzNCwgODQsIDEyLCAxNSwgMjM0LCA4MywgMTIsIDE1LCAKKyAgICAyMzQsIDgyLCAxMiwgMTUsIDIzNCwgODEsIDEyLCAxNSwgMjM0LCA4MCwgMTIsIDE1LCAyMzQsIDc5LCAxMiwgMTUsIDIzNCwgCisgICAgNzgsIDEyLCAxNSwgMjM0LCA3NywgMTIsIDE1LCAyMzQsIDc2LCAxMiwgMTUsIDIzNCwgNzUsIDEyLCAxNSwgMjM0LCA3NCwgCisgICAgMTIsIDE1LCAyMzQsIDczLCAxMiwgMTUsIDIzNCwgNzIsIDEyLCAxNSwgMjM0LCA3MSwgMTIsIDE1LCAyMzQsIDcwLCAxMiwgCisgICAgMTUsIDIzNCwgNjksIDEyLCAxNSwgMjM0LCA2OCwgMTIsIDE1LCAyMzQsIDY3LCAxMiwgMTUsIDIzNCwgNjYsIDEyLCAxNSwgCisgICAgMjM0LCA2NSwgMTIsIDE1LCAyMzQsIDY0LCAxMiwgMTUsIDIzNCwgNjMsIDEyLCAxNSwgMjM0LCA2MiwgMTIsIDE1LCAyMzQsIAorICAgIDYxLCAxMiwgMTUsIDIzNCwgNjAsIDEyLCAxNSwgMjM0LCA1OSwgMTIsIDE1LCAyMzQsIDU4LCAxMiwgMTUsIDIzNCwgNTcsIAorICAgIDEyLCAxNSwgMjM0LCA1NiwgMTIsIDE1LCAyMzQsIDU1LCAxMiwgMTUsIDIzNCwgNTQsIDEyLCAxNSwgMjM0LCA1MywgMTIsIAorICAgIDE1LCAyMzQsIDUyLCAxMiwgMTUsIDIzNCwgNTEsIDEyLCAxNSwgMjM0LCA1MCwgMTIsIDE1LCAyMzQsIDQ5LCAxMiwgMTUsIAorICAgIDIzNCwgNDgsIDEyLCAxNSwgMjM0LCA0NywgMTIsIDE1LCAyMzQsIDQ2LCAxMiwgMTUsIDIzNCwgNDUsIDEyLCAxNSwgMjM0LCAKKyAgICA0NCwgMTIsIDE1LCAyMzQsIDQzLCAxMiwgMTUsIDIzNCwgNDIsIDEyLCAxNSwgMjM0LCA0MSwgMTIsIDE1LCAyMzQsIDQwLCAKKyAgICAxMiwgMTUsIDIzNCwgMzksIDEyLCAxNSwgMjM0LCAzOCwgMTIsIDE1LCAyMzQsIDM3LCAxMiwgMTUsIDIzNCwgMzYsIDEyLCAKKyAgICAxNSwgMjM0LCAzNSwgMTIsIDE1LCAyMzQsIDM0LCAxMiwgMTUsIDIzNCwgMzMsIDEyLCAxNSwgMjM0LCAzMiwgMTIsIDE1LCAKKyAgICAyMzQsIDMxLCAxMiwgMTUsIDIzNCwgMzAsIDEyLCAxNSwgMjM0LCAyOSwgMTIsIDE1LCAyMzQsIDI4LCAxMiwgMTUsIDIzNCwgCisgICAgMjcsIDEyLCAxNSwgMjM0LCAyNiwgMTIsIDE1LCAyMzQsIDI1LCAxMiwgMTUsIDIzNCwgMjQsIDEyLCAxNSwgMjM0LCAyMywgCisgICAgMTIsIDE1LCAyMzQsIDIyLCAxMiwgMTUsIDIzNCwgMjEsIDEyLCAxNSwgMjM0LCAyMCwgMTIsIDE1LCAyMzQsIDE5LCAxMiwgCisgICAgMTUsIDIzNCwgMTgsIDEyLCAxNSwgMjM0LCAxNywgMTIsIDE1LCAyMzQsIDE2LCAxMiwgMTUsIDIzNCwgMTUsIDEyLCAxNSwgCisgICAgMjM0LCAxNCwgMTIsIDE1LCAyMzQsIDEzLCAxMiwgMTUsIDIzNCwgMTIsIDEyLCAxNSwgMjM0LCAxMSwgMTIsIDE1LCAyMzQsIAorICAgIDEwLCAxMiwgMTUsIDIzNCwgOSwgMTIsIDE1LCAyMzQsIDgsIDEyLCAxNSwgMjM0LCA3LCAxMiwgMTUsIDIzNCwgNiwgMTIsIAorICAgIDE1LCAyMzQsIDUsIDEyLCAxNSwgMjM0LCA0LCAxMiwgMTUsIDIzNCwgMywgMTIsIDE1LCAyMzQsIDIsIDEyLCAxNSwgMjM0LCAKKyAgICAxLCAxMiwgMTUsIDIzNCwgMCwgMTIsIDE1LCAyMzMsIDI1NSwgMTIsIDE1LCAyMzMsIDI1NCwgMTIsIDE1LCAyMzMsIDI1MywgCisgICAgMTIsIDE1LCAyMzMsIDI1MiwgMTIsIDE1LCAyMzMsIDI1MSwgMTIsIDE1LCAyMzMsIDI1MCwgMTIsIDE1LCAyMzMsIDI0OSwgCisgICAgMTIsIDE1LCAyMzMsIDI0OCwgMTIsIDE1LCAyMzMsIDI0NywgMTIsIDE1LCAyMzMsIDI0NiwgMTIsIDE1LCAyMzMsIDI0NSwgCisgICAgMTIsIDE1LCAyMzMsIDI0NCwgMTIsIDE1LCAyMzMsIDI0MywgMTIsIDE1LCAyMzMsIDI0MiwgMTIsIDE1LCAyMzMsIDI0MSwgCisgICAgMTIsIDE1LCAyMzMsIDI0MCwgMTIsIDE1LCAyMzMsIDIzOSwgMTIsIDE1LCAyMzMsIDIzOCwgMTIsIDE1LCAyMzMsIDIzNywgCisgICAgMTIsIDE1LCAyMzMsIDIzNiwgMTIsIDE1LCAyMzMsIDIzNSwgMTIsIDE1LCAyMzMsIDIzNCwgMTIsIDE1LCAyMzMsIDIzMywgCisgICAgMTIsIDE1LCAyMzMsIDIzMiwgMTIsIDE1LCAyMzMsIDIzMSwgMTIsIDE1LCAyMzMsIDIzMCwgMTIsIDE1LCAyMzMsIDIyOSwgCisgICAgMTIsIDE1LCAyMzMsIDIyOCwgMTIsIDE1LCAyMzMsIDIyNywgMTIsIDE1LCAyMzMsIDIyNiwgMTIsIDE1LCAyMzMsIDIyNSwgCisgICAgMTIsIDE1LCAyMzMsIDIyNCwgMTIsIDE1LCAyMzMsIDIyMywgMTIsIDE1LCAyMzMsIDIyMiwgMTIsIDE1LCAyMzMsIDIyMSwgCisgICAgMTIsIDE1LCAyMzMsIDIyMCwgMTIsIDE1LCAyMzMsIDIxOSwgMTIsIDE1LCAyMzMsIDIxOCwgMTIsIDE1LCAyMzMsIDIxNywgCisgICAgMTIsIDE1LCAyMzMsIDIxNiwgMTIsIDE1LCAyMzMsIDIxNSwgMTIsIDE1LCAyMzMsIDIxNCwgMTIsIDE1LCAyMzMsIDIxMywgCisgICAgMTIsIDE1LCAyMzMsIDIxMiwgMTIsIDE1LCAyMzMsIDIxMSwgMTIsIDE1LCAyMzMsIDIxMCwgMTIsIDE1LCAyMzMsIDIwOSwgCisgICAgMTIsIDE1LCAyMzMsIDIwOCwgMTIsIDE1LCAyMzMsIDIwNywgMTIsIDE1LCAyMzMsIDIwNiwgMTIsIDE1LCAyMzMsIDIwNSwgCisgICAgMTIsIDE1LCAyMzMsIDIwNCwgMTIsIDE1LCAyMzMsIDIwMywgMTIsIDE1LCAyMzMsIDIwMiwgMTIsIDE1LCAyMzMsIDIwMSwgCisgICAgMTIsIDE1LCAyMzMsIDIwMCwgMTIsIDE1LCAyMzMsIDE5OSwgMTIsIDE1LCAyMzMsIDE5OCwgMTIsIDE1LCAyMzMsIDE5NywgCisgICAgMTIsIDE1LCAyMzMsIDE5NiwgMTIsIDE1LCAyMzMsIDE5NSwgMTIsIDE1LCAyMzMsIDE5NCwgMTIsIDE1LCAyMzMsIDE5MywgCisgICAgMTIsIDE1LCAyMzMsIDE5MiwgMTIsIDE1LCAyMzMsIDE5MSwgMTIsIDE1LCAyMzMsIDE5MCwgMTIsIDE1LCAyMzMsIDE4OSwgCisgICAgMTIsIDE1LCAyMzMsIDE4OCwgMTIsIDE1LCAyMzMsIDE4NywgMTIsIDE1LCAyMzMsIDE4NiwgMTIsIDE1LCAyMzMsIDE4NSwgCisgICAgMTIsIDE1LCAyMzMsIDE4NCwgMTIsIDE1LCAyMzMsIDE4MywgMTIsIDE1LCAyMzMsIDE4MiwgMTIsIDE1LCAyMzMsIDE4MSwgCisgICAgMTIsIDE1LCAyMzMsIDE4MCwgMTIsIDE1LCAyMzMsIDE3OSwgMTIsIDE1LCAyMzMsIDE3OCwgMTIsIDE1LCAyMzMsIDE3NywgCisgICAgMTIsIDE1LCAyMzMsIDE3NiwgMTIsIDE1LCAyMzMsIDE3NSwgMTIsIDE1LCAyMzMsIDE3NCwgMTIsIDE1LCAyMzMsIDE3MywgCisgICAgMTIsIDE1LCAyMzMsIDE3MiwgMTIsIDE1LCAyMzMsIDE3MSwgMTIsIDE1LCAyMzMsIDE3MCwgMTIsIDE1LCAyMzMsIDE2OSwgCisgICAgMTIsIDE1LCAyMzMsIDE2OCwgMTIsIDE1LCAyMzMsIDE2NywgMTIsIDE1LCAyMzMsIDE2NiwgMTIsIDE1LCAyMzMsIDE2NSwgCisgICAgMTIsIDE1LCAyMzMsIDE2NCwgMTIsIDE1LCAyMzMsIDE2MywgMTIsIDE1LCAyMzMsIDE2MiwgMTIsIDE1LCAyMzMsIDE2MSwgCisgICAgMTIsIDE1LCAyMzMsIDE2MCwgMTIsIDE1LCAyMzMsIDE1OSwgMTIsIDE1LCAyMzMsIDE1OCwgMTIsIDE1LCAyMzMsIDE1NywgCisgICAgMTIsIDE1LCAyMzMsIDE1NiwgMTIsIDE1LCAyMzMsIDE1NSwgMTIsIDE1LCAyMzMsIDE1NCwgMTIsIDE1LCAyMzMsIDE1MywgCisgICAgMTIsIDE1LCAyMzMsIDE1MiwgMTIsIDE1LCAyMzMsIDE1MSwgMTIsIDE1LCAyMzMsIDE1MCwgMTIsIDE1LCAyMzMsIDE0OSwgCisgICAgMTIsIDE1LCAyMzMsIDE0OCwgMTIsIDE1LCAyMzMsIDE0NywgMTIsIDE1LCAyMzMsIDE0NiwgMTIsIDE1LCAyMzMsIDE0NSwgCisgICAgMTIsIDE1LCAyMzMsIDE0NCwgMTIsIDE1LCAyMzMsIDE0MywgMTIsIDE1LCAyMzMsIDE0MiwgMTIsIDE1LCAyMzMsIDE0MSwgCisgICAgMTIsIDE1LCAyMzMsIDE0MCwgMTIsIDE1LCAyMzMsIDEzOSwgMTIsIDE1LCAyMzMsIDEzOCwgMTIsIDE1LCAyMzMsIDEzNywgCisgICAgMTIsIDE1LCAyMzMsIDEzNiwgMTIsIDE1LCAyMzMsIDEzNSwgMTIsIDE1LCAyMzMsIDEzNCwgMTIsIDE1LCAyMzMsIDEzMywgCisgICAgMTIsIDE1LCAyMzMsIDEzMiwgMTIsIDE1LCAyMzMsIDEzMSwgMTIsIDE1LCAyMzMsIDEzMCwgMTIsIDE1LCAyMzMsIDEyOSwgCisgICAgMTIsIDE1LCAyMzMsIDEyOCwgMTIsIDE1LCAyMzMsIDEyNywgMTIsIDE1LCAyMzMsIDEyNiwgMTIsIDE1LCAyMzMsIDEyNSwgCisgICAgMTIsIDE1LCAyMzMsIDEyNCwgMTIsIDE1LCAyMzMsIDEyMywgMjI4LCAxNCwgMjA5LCAyNTUsIDE2MCwgMjExLCAyMjgsIAorICAgIDE2MCwgMjQwLCAyMTIsIDgyLCAxNjAsIDIxNywgMzEsIDgyLCAxNjAsIDQyLCA1NCwgMTYwLCAyNDMsIDk3LCA1NCwgMTYwLCAKKyAgICAyMTgsIDI0NiwgNTQsIDE2MCwgMjUwLCAyMzUsIDE2MCwgMjUwLCAxNjAsIDE2MCwgNDksIDIxOSwgNzYsIDE2MCwgNTAsIAorICAgIDIxOSwgNzYsIDE2MCwgMjUwLCA1OSwgMTYwLCA5MSwgNTQsIDE2MCwgMjQ1LCAyMzMsIDE2MCwgMjM1LCAyMTksIDE2MCwgCisgICAgMjM5LCAxMDIsIDIxMSwgNjEsIDE2MCwgMjEyLCAwLCAxNjAsIDE3LCAyMDIsIDg0LCAxNjAsIDE3LCAxMDUsIDE2MCwgMTcsIAorICAgIDEwOCwgMTYwLCAxNywgMTQ3LCAxNjAsIDE3LCAxNDksIDE2MCwgMTcsIDE3MCwgMTYwLCAxNywgMTk1LCAxNjAsIDE3LCAKKyAgICAyMTMsIDExMSwgMTYwLCAxNywgMTk5LCAxNjAsIDE3LCAyMjIsIDYzLCAxNjAsIDI0NSwgMjQyLCAxNjAsIDIxMywgMTQzLCAKKyAgICAxNjAsIDIyNywgMTc5LCA1NCwgMTYwLCAyNDEsIDM1LCA1NCwgMTYwLCAyMzcsIDI0NywgNTQsIDE2MCwgMjE3LCA0NywgODIsIAorICAgIDE2MCwgMjQ1LCAyMzEsIDI1MCwgNDksIDE2MCwgOCwgNiwgMSwgNjMsIDE2MCwgOCwgNiwgMSwgMjQ5LCAyNTUsIDE2MCwgOCwgCisgICAgNiwgMSwgMjQ3LCAxMjUsIDE2MCwgOCwgNiwgMSwgMjQ1LCA1MSwgMTYwLCA4LCA2LCAxLCA3NCwgMTYwLCA4LCA2LCAxLCAKKyAgICAyNDAsIDE3NCwgMTYwLCA4LCA2LCAxLCAyMzksIDc1LCAxNjAsIDgsIDYsIDEsIDIzNywgMTcxLCAxNjAsIDgsIDYsIDEsIAorICAgIDc1LCAxNjAsIDgsIDYsIDEsIDIzMCwgMTg0LCAxNjAsIDgsIDYsIDEsIDIzMCwgNTQsIDE2MCwgOCwgNiwgMSwgMTU5LCAKKyAgICAxNjAsIDgsIDYsIDEsIDIyNiwgMTg1LCAxNjAsIDgsIDYsIDEsIDIyMywgMTYzLCAxNjAsIDgsIDYsIDEsIDc4LCAxNjAsIDgsIAorICAgIDYsIDEsIDIxOSwgMTg0LCAxNjAsIDgsIDYsIDEsIDIxNywgMTM0LCAxNjAsIDgsIDYsIDEsIDE0NiwgMTYwLCA4LCA2LCAxLCAKKyAgICAxOTQsIDE2MCwgOCwgNiwgMSwgMjEwLCA2OSwgMTYwLCA4LCA2LCAxLCA2OCwgMTYwLCA4LCA2LCAxLCAyMDYsIDE2NCwgCisgICAgMTYwLCA4LCA2LCAxLCAyMDQsIDE0NCwgMTYwLCA4LCA2LCAxLCAyMDMsIDE5NiwgMTYwLCA4LCA2LCAxLCAyMDMsIDEyNCwgCisgICAgMTYwLCA4LCA2LCAxLCAyMDIsIDE1OSwgMTYwLCA0OSwgNTEsIDE1NSwgMTYwLCAyMTYsIDc0LCAyMTIsIDAsIDE2MCwgNTAsIAorICAgIDUxLCAxNTUsIDE2MCwgMjQ2LCA1MywgMjUxLCAxMzgsIDE2MCwgMTI0LCAyMjcsIDExNCwgMTYwLCAyMzcsIDI1NCwgMjUxLCAKKyAgICAxMzgsIDE2MCwgOCwgNSwgMSwgNjMsIDE2MCwgOCwgNSwgMSwgMjQ5LCAyNTUsIDE2MCwgOCwgNSwgMSwgMjQ3LCAxMjUsIAorICAgIDE2MCwgOCwgNSwgMSwgMjQ1LCA1MSwgMTYwLCA4LCA1LCAxLCA3NCwgMTYwLCA4LCA1LCAxLCAyNDAsIDE3NCwgMTYwLCA4LCAKKyAgICA1LCAxLCAyMzksIDc1LCAxNjAsIDgsIDUsIDEsIDIzNywgMTcxLCAxNjAsIDgsIDUsIDEsIDc1LCAxNjAsIDgsIDUsIDEsIAorICAgIDIzMCwgMTg0LCAxNjAsIDgsIDUsIDEsIDIzMCwgNTQsIDE2MCwgOCwgNSwgMSwgMTU5LCAxNjAsIDgsIDUsIDEsIDIyNiwgCisgICAgMTg1LCAxNjAsIDgsIDUsIDEsIDIyMywgMTYzLCAxNjAsIDgsIDUsIDEsIDc4LCAxNjAsIDgsIDUsIDEsIDIxOSwgMTg0LCAKKyAgICAxNjAsIDgsIDUsIDEsIDIxNywgMTM0LCAxNjAsIDgsIDUsIDEsIDE0NiwgMTYwLCA4LCA1LCAxLCAxOTQsIDE2MCwgOCwgNSwgCisgICAgMSwgMjEwLCA2OSwgMTYwLCA4LCA1LCAxLCA2OCwgMTYwLCA4LCA1LCAxLCAyMDYsIDE2NCwgMTYwLCA4LCA1LCAxLCAyMDQsIAorICAgIDE0NCwgMTYwLCA4LCA1LCAxLCAyMDMsIDE5NiwgMTYwLCA4LCA1LCAxLCAyMDMsIDEyNCwgMTYwLCA4LCA1LCAxLCAyMDIsIAorICAgIDE1OSwgMTYwLCA0OSwgMjQ1LCA5MywgMTU1LCAxNjAsIDgwLCAyMjcsIDExNCwgMTYwLCA1MCwgMjQ1LCA5MywgMTU1LCAKKyAgICAxNjAsIDIwOCwgMjI3LCAyNDcsIDYwLCAyMDksIDI1NSwgNTcsIDIxNCwgNzEsIDU3LCAyMTQsIDYwLCA1NywgMjE0LCA0OSwgCisgICAgNTcsIDIxNCwgMzcsIDU3LCAyMTQsIDI2LCA1NywgMjE0LCAxNSwgNTcsIDIxNCwgNCwgNTcsIDIxMywgMjQ5LCA1NywgMjEzLCAKKyAgICAyMzgsIDU3LCAyMTMsIDIzMCwgNTcsIDIxMywgMjI5LCA1NywgMjEzLCAyMjgsIDU3LCAyMTMsIDIyNywgNTcsIDIxMywgCisgICAgMjI1LCA1NywgMjEzLCAyMjQsIDU3LCAyMTMsIDIyMywgNTcsIDIxMywgMjIyLCA1NywgMjEzLCAyMjEsIDU3LCAyMTMsIAorICAgIDIyMCwgNTcsIDIxMywgMjE5LCA1NywgMjEzLCAyMTgsIDU3LCAyMTMsIDIxNywgNTcsIDIxMywgMjE2LCA1NywgMjEzLCAKKyAgICAyMTQsIDU3LCAyMTMsIDIxMywgNTcsIDIxMywgMjEyLCA1NywgMjEzLCAyMTEsIDU3LCAyMTMsIDIxMCwgNTcsIDIxMywgCisgICAgMjA5LCA1NywgMjEzLCAyMDgsIDU3LCAyMTMsIDIwNywgNTcsIDIxMywgMjA2LCA1NywgMjEzLCAyMDUsIDU3LCAyMTMsIAorICAgIDIwMywgNTcsIDIxMywgMjAyLCA1NywgMjEzLCAyMDEsIDU3LCAyMTMsIDIwMCwgNTcsIDIxMywgMTk5LCA1NywgMjEzLCAKKyAgICAxOTgsIDU3LCAyMTMsIDE5NywgNTcsIDIxMywgMTk2LCA1NywgMjEzLCAxOTUsIDU3LCAyMTMsIDE5NCwgNTcsIDIxMywgCisgICAgMTkyLCA1NywgMjEzLCAxOTEsIDU3LCAyMTMsIDE5MCwgNTcsIDIxMywgMTg5LCA1NywgMjEzLCAxODgsIDU3LCAyMTMsIAorICAgIDE4NywgNTcsIDIxMywgMTg2LCA1NywgMjEzLCAxODUsIDU3LCAyMTMsIDE4NCwgNTcsIDIxMywgMTgzLCA1NywgMjEzLCAKKyAgICAxODEsIDU3LCAyMTMsIDE4MCwgNTcsIDIxMywgMTc5LCA1NywgMjEzLCAxNzgsIDU3LCAyMTMsIDE3NywgNTcsIDIxMywgCisgICAgMTc2LCA1NywgMjEzLCAxNzUsIDU3LCAyMTMsIDE3NCwgNTcsIDIxMywgMTczLCA1NywgMjEzLCAxNzIsIDU3LCAyMTMsIAorICAgIDE3MCwgNTcsIDIxMywgMTY5LCA1NywgMjEzLCAxNjgsIDU3LCAyMTMsIDE2NywgNTcsIDIxMywgMTY2LCA1NywgMjEzLCAKKyAgICAxNjUsIDU3LCAyMTMsIDE2NCwgNTcsIDIxMywgMTYzLCA1NywgMjEzLCAxNjIsIDU3LCAyMTMsIDE2MSwgNTcsIDIxMywgCisgICAgMTU5LCA1NywgMjEzLCAxNTgsIDU3LCAyMTMsIDE1NywgNTcsIDIxMywgMTU2LCA1NywgMjEzLCAxNTUsIDU3LCAyMTMsIAorICAgIDE1NCwgNTcsIDIxMywgMTUzLCA1NywgMjEzLCAxNTIsIDU3LCAyMTMsIDE1MSwgNTcsIDIxMywgMTUwLCA1NywgMjE0LCAKKyAgICAxNDcsIDU3LCAyMTQsIDE0NiwgNTcsIDIxNCwgMTQ1LCA1NywgMjE0LCAxNDQsIDU3LCAyMTQsIDE0MywgNTcsIDIxNCwgCisgICAgMTQyLCA1NywgMjE0LCAxNDEsIDU3LCAyMTQsIDE0MCwgNTcsIDIxNCwgMTM5LCA1NywgMjE0LCAxMzgsIDU3LCAyMTQsIAorICAgIDEzNiwgNTcsIDIxNCwgMTM1LCA1NywgMjE0LCAxMzQsIDU3LCAyMTQsIDEzMywgNTcsIDIxNCwgMTMyLCA1NywgMjE0LCAKKyAgICAxMzEsIDU3LCAyMTQsIDEzMCwgNTcsIDIxNCwgMTI5LCA1NywgMjE0LCAxMjgsIDU3LCAyMTQsIDEyNywgNTcsIDIxNCwgCisgICAgMTI1LCA1NywgMjE0LCAxMjQsIDU3LCAyMTQsIDEyMywgNTcsIDIxNCwgMTIyLCA1NywgMjE0LCAxMjEsIDU3LCAyMTQsIAorICAgIDEyMCwgNTcsIDIxNCwgMTE5LCA1NywgMjE0LCAxMTgsIDU3LCAyMTQsIDExNywgNTcsIDIxNCwgMTE2LCA1NywgMjE0LCAKKyAgICAxMTQsIDU3LCAyMTQsIDExMywgNTcsIDIxNCwgMTEyLCA1NywgMjE0LCAxMTEsIDU3LCAyMTQsIDExMCwgNTcsIDIxNCwgCisgICAgMTA5LCA1NywgMjE0LCAxMDgsIDU3LCAyMTQsIDEwNywgNTcsIDIxNCwgMTA2LCA1NywgMjE0LCAxMDUsIDU3LCAyMTQsIAorICAgIDEwMywgNTcsIDIxNCwgMTAyLCA1NywgMjE0LCAxMDEsIDU3LCAyMTQsIDEwMCwgNTcsIDIxNCwgOTksIDU3LCAyMTQsIDk4LCAKKyAgICA1NywgMjE0LCA5NywgNTcsIDIxNCwgOTYsIDU3LCAyMTQsIDk1LCA1NywgMjE0LCA5NCwgNTcsIDIxNCwgOTIsIDU3LCAyMTQsIAorICAgIDkxLCA1NywgMjE0LCA5MCwgNTcsIDIxNCwgODksIDU3LCAyMTQsIDg4LCA1NywgMjE0LCA4NywgNTcsIDIxNCwgODYsIDU3LCAKKyAgICAyMTQsIDg1LCA1NywgMjE0LCA4NCwgNTcsIDIxNCwgODMsIDU3LCAyMTQsIDgxLCA1NywgMjE0LCA4MCwgNTcsIDIxNCwgNzksIAorICAgIDU3LCAyMTQsIDc4LCA1NywgMjE0LCA3NywgNTcsIDIxNCwgNzYsIDU3LCAyMTQsIDc1LCA1NywgMjE0LCA3NCwgNTcsIDIxNCwgCisgICAgNzMsIDU3LCAyMTQsIDcyLCA1NywgMjE0LCA3MCwgNTcsIDIxNCwgNjksIDU3LCAyMTQsIDY4LCA1NywgMjE0LCA2NywgNTcsIAorICAgIDIxNCwgNjYsIDU3LCAyMTQsIDY1LCA1NywgMjE0LCA2NCwgNTcsIDIxNCwgNjMsIDU3LCAyMTQsIDYyLCA1NywgMjE0LCA2MSwgCisgICAgNTcsIDIxNCwgNTksIDU3LCAyMTQsIDU4LCA1NywgMjE0LCA1NywgNTcsIDIxNCwgNTYsIDU3LCAyMTQsIDU1LCA1NywgMjE0LCAKKyAgICA1NCwgNTcsIDIxNCwgNTMsIDU3LCAyMTQsIDUyLCA1NywgMjE0LCA1MSwgNTcsIDIxNCwgNTAsIDU3LCAyMTQsIDQ4LCA1NywgCisgICAgMjE0LCA0NywgNTcsIDIxNCwgNDYsIDU3LCAyMTQsIDQ1LCA1NywgMjE0LCA0NCwgNTcsIDIxNCwgNDMsIDU3LCAyMTQsIDQyLCAKKyAgICA1NywgMjE0LCA0MSwgNTcsIDIxNCwgNDAsIDU3LCAyMTQsIDM5LCA1NywgMjE0LCAzNiwgNTcsIDIxNCwgMzUsIDU3LCAyMTQsIAorICAgIDM0LCA1NywgMjE0LCAzMywgNTcsIDIxNCwgMzIsIDU3LCAyMTQsIDMxLCA1NywgMjE0LCAzMCwgNTcsIDIxNCwgMjksIDU3LCAKKyAgICAyMTQsIDI4LCA1NywgMjE0LCAyNywgNTcsIDIxNCwgMjUsIDU3LCAyMTQsIDI0LCA1NywgMjE0LCAyMywgNTcsIDIxNCwgMjIsIAorICAgIDU3LCAyMTQsIDIxLCA1NywgMjE0LCAyMCwgNTcsIDIxNCwgMTksIDU3LCAyMTQsIDE4LCA1NywgMjE0LCAxNywgNTcsIDIxNCwgCisgICAgMTYsIDU3LCAyMTQsIDE0LCA1NywgMjE0LCAxMywgNTcsIDIxNCwgMTIsIDU3LCAyMTQsIDExLCA1NywgMjE0LCAxMCwgNTcsIAorICAgIDIxNCwgOSwgNTcsIDIxNCwgOCwgNTcsIDIxNCwgNywgNTcsIDIxNCwgNiwgNTcsIDIxNCwgNSwgNTcsIDIxNCwgMywgNTcsIAorICAgIDIxNCwgMiwgNTcsIDIxNCwgMSwgNTcsIDIxNCwgMCwgNTcsIDIxMywgMjU1LCA1NywgMjEzLCAyNTQsIDU3LCAyMTMsIDI1MywgCisgICAgNTcsIDIxMywgMjUyLCA1NywgMjEzLCAyNTEsIDU3LCAyMTMsIDI1MCwgNTcsIDIxMywgMjQ4LCA1NywgMjEzLCAyNDcsIDU3LCAKKyAgICAyMTMsIDI0NiwgNTcsIDIxMywgMjQ1LCA1NywgMjEzLCAyNDQsIDU3LCAyMTMsIDI0MywgNTcsIDIxMywgMjQyLCA1NywgCisgICAgMjEzLCAyNDEsIDU3LCAyMTMsIDI0MCwgNTcsIDIxMywgMjM5LCA1NywgMjEzLCAyMzcsIDU3LCAyMTMsIDIzNiwgNTcsIAorICAgIDIxMywgMjM1LCA1NywgMjEzLCAyMzQsIDU3LCAyMTMsIDIzMywgNTcsIDIxMywgMjMyLCA1NywgMjEzLCAyMzEsIDIyMSwgCisgICAgNDgsIDIyMSwgNTAsIDIxMSwgOTAsIDc2LCAyMzcsIDYxLCAyMTIsIDMsIDIxMSwgOTAsIDc2LCAyMDksIDExMiwgMjExLCAKKyAgICAxMiwgMjQxLCA4NCwgNzYsIDIwOSwgMTEyLCAyNDAsIDI0MCwgMjQxLCA4NCwgNzYsIDIwOCwgMTA1LCAyNDEsIDQ3LCAyNDEsIAorICAgIDcxLCAyNDEsIDcyLCAyNTEsIDEzMCwgMjUxLCAxMzEsIDI1MSwgMjcsIDI0OCwgMTMxLCAyNDksIDE5LCAyNDcsIDE5OSwgCisgICAgMTY3LCAyMTAsIDUsIDIzNiwgMTA2LCAyMTAsIDUsIDIzNiwgMzEsIDIxMCwgMTAsIDIyNywgMTE1LCAyNDAsIDUxLCAyMjIsIAorICAgIDIxNCwgMjI3LCAxMTQsIDI0MSwgODQsIDc2LCAyMjcsIDExNCwgMjI3LCAxNjMsIDIyMSwgMjUzLCAyNDEsIDUwLCAyMjcsIAorICAgIDExNSwgMjEwLCA1LCA4MCwgMjEwLCA1LCAyMDQsIDE2NSwgMjM5LCAxNTksIDI0MCwgNTEsIDI0MCwgMzAsIDI0NywgMjUsIAorICAgIDIxNiwgNzcsIDI0NSwgMTQ3LCAyMTMsIDcsIDIxOSwgMjExLCAyMjcsIDQxLCAxMDUsIDIxMiwgMTMsIDIxMywgNywgMjMxLCAKKyAgICA0OSwgMjI3LCA0MSwgMjAyLCA4NCwgMjEyLCAxNjIsIDI0NCwgMTM5LCAyMjcsIDEwNSwgMjQxLCA5LCAyNDMsIDEyMywgCisgICAgMjQ0LCA4LCAyNDUsIDE4NCwgMTA1LCAyNDQsIDEyOCwgMjQ0LCA4LCAyNDUsIDE4NCwgMTA4LCAyNDQsIDEyNywgMjQ0LCA4LCAKKyAgICAyNDUsIDE4NCwgMTQ3LCAyNDQsIDEyNiwgMjQ0LCA4LCAyNDUsIDE4NCwgMTQ5LCAyNDQsIDEyNSwgMTgyLCAyNTEsIDEzMCwgCisgICAgMjIzLCA4OSwgMjEwLCA5NSwgMjMxLCAxMTIsIDIxMCwgOTksIDI0MSwgODQsIDc2LCAyMDgsIDEwNiwgMjQ4LCAzMywgMjQwLCAKKyAgICAyNDcsIDI0NywgNTksIDI0NywgNjEsIDI0MSwgODQsIDc2LCAyMjUsIDksIDI0MSwgNDgsIDIxMCwgMjQyLCAyMTEsIDMsIAorICAgIDI0MSwgOSwgMjQxLCAxMCwgMjMxLCAyNSwgMjEzLCAxMzEsIDE0OSwgMjQwLCAxMSwgMjEzLCAxMzAsIDIzOSwgMTEyLCAKKyAgICAyMzEsIDI1LCAyMTMsIDEzMSwgMTQ3LCAyMzcsIDIzOCwgMjEzLCAxMzAsIDIzNywgMjM1LCAyMzEsIDI1LCAyMTMsIDEzMSwgCisgICAgMTA4LCAyMTYsIDE0OSwgMjEzLCAxMzAsIDIxNSwgMTUwLCAyMzEsIDI1LCAyMTMsIDEzMSwgMTA1LCAyMDYsIDIzNiwgMjEzLCAKKyAgICAxMzAsIDIwNiwgMTkzLCAyMTEsIDIzMSwgMjQ0LCA0NiwgMjQ0LCA0OCwgMjE5LCAxNTcsIDI0NiwgMTgyLCAyMTksIDE1OSwgCisgICAgMTM4LCAyMjAsIDgwLCAyMTcsIDI0MCwgMjM2LCAxMDksIDI0NywgMjE4LCAyMTgsIDIzNiwgMjM3LCAyNywgMjQ3LCAyMzAsIAorICAgIDIyMSwgMTkyLCAyNDcsIDIxOCwgMjM3LCAyNywgMjIzLCA1MywgMjMxLCAzNSwgMjMxLCAzNywgMjIyLCAyMDgsIDIyNywgCisgICAgMTE0LCAyMjIsIDIzMSwgMjExLCA5MCwgNzYsIDIxNCwgMTUyLCAyNTAsIDEyMCwgMjExLCAxNjQsIDI0MSwgODQsIDc2LCAKKyAgICAyMTQsIDE1MiwgMjUwLCAxMjAsIDI0MSwgMTIsIDE2NywgMjEwLCA2LCAyMTMsIDExNywgMjM2LCAxMDYsIDIxMCwgNiwgCisgICAgMjEzLCAxMTcsIDIzNiwgMjgsIDE2NywgMjEwLCA2LCAzLCAyMzAsIDY2LCAyMzYsIDEwNiwgMjEwLCA2LCAzLCAyMzAsIDY2LCAKKyAgICAyMzYsIDI5LCAyMjcsIDExNSwgMjEwLCA2LCAyMTMsIDExNywgODAsIDIxMCwgNiwgMjEzLCAxMTcsIDIwNCwgMTY0LCAyMTksIAorICAgIDY5LCAyMjcsIDExNSwgMjM5LCAxNTEsIDIxOSwgNjksIDIyNywgMTE1LCAyNDIsIDcwLCAyMTgsIDg3LCAyMTksIDY5LCAKKyAgICAyMjcsIDExNSwgMjQ5LCAxOCwgMjE5LCA2OSwgMjI3LCAxMTUsIDIwNiwgMjI0LCAyMTgsIDgyLCAyMTYsIDc0LCAyMjcsIAorICAgIDExNSwgMjQwLCA1MSwgMjE2LCA3NCwgMjMxLCAzNSwgMjE2LCA1NywgMjEyLCAxMjAsIDIxMywgNywgMTA4LCAyMTIsIDExNywgCisgICAgMjExLCAxNjYsIDIxMiwgMTIwLCAyMTMsIDcsIDE0NywgMjEyLCAxMTYsIDIxMSwgMTY1LCAyNDQsIDgsIDI0NSwgMTg0LCAKKyAgICAyMTEsIDM0LCAyNDQsIDEyMywgMjE3LCAyMjcsIDIwNiwgMTkyLCAxMDUsIDIxNywgMjI3LCAyMDYsIDE5MCwgMjE3LCAxOTAsIAorICAgIDIxNywgMjI3LCAyMDYsIDE5MiwgMTA4LCAyMTcsIDIyNywgMjA2LCAxODksIDIxNywgMTg5LCAyMTMsIDExOCwgMjA4LCAKKyAgICAxMDQsIDIxMSwgODksIDIxMSwgMTcsIDI0NywgNjAsIDI0NiwgMTgyLCAyNDcsIDEsIDIyNCwgMjI0LCAyMDQsIDEwMywgCisgICAgMjIzLCAxODEsIDIxMSwgOTAsIDc2LCAyMzcsIDIyMywgMjUwLCAxMjAsIDIxMSwgOTAsIDc2LCAyMTcsIDIwOCwgMjUwLCAKKyAgICAxMjAsIDIxMSwgMjMwLCAyNDEsIDg0LCA3NiwgMjM3LCAyMjMsIDI1MCwgMTIwLCAyNDEsIDg0LCA3NiwgMjE3LCAyMDgsIAorICAgIDI1MCwgMTIwLCAyNDEsIDQ1LCAyMTEsIDkwLCA3NiwgMjExLCAzNCwgMjExLCAyNDUsIDIxMiwgMTIwLCAyMzgsIDMsIDE2NywgCisgICAgMjMwLCAyNDEsIDIxMywgOTUsIDIxMiwgMTIwLCAxNjcsIDIzMCwgMjQxLCAyMTQsIDE5MSwgMjQ1LCAxODQsIDIxMywgMTI3LCAKKyAgICAyMzAsIDI0MSwgMjQ1LCAxMTEsIDIxMSwgMzUsIDIwOSwgMTM4LCAyMTEsIDEwOCwgMjIwLCAwLCAyMTAsIDg0LCAyNDUsIAorICAgIDIzMiwgMjE5LCAyMjYsIDIxNywgMjI4LCAyMjQsIDIyMywgMjE4LCA3MiwgMjUwLCAxNTYsIDIxNywgMjIyLCAyNDUsIDIzMiwgCisgICAgMjUwLCAxNzIsIDIyMywgNDEsIDIxMiwgMTcxLCA4LCA2LCAxLCAyMzgsIDExOSwgOCwgNSwgMSwgMjM4LCAxMTksIDI0NiwgCisgICAgMjAxLCAyNTEsIDgsIDIxMCwgODksIDIxMCwgMjQ4LCAyNDUsIDI0MywgMjEyLCA2OCwgMjI3LCAyMjIsIDIwMCwgMSwgMjI3LCAKKyAgICA2OCwgMjI4LCAxMiwgMSwgMjM5LCAxODcsIDIzOSwgMTc4LCAyMjgsIDEyLCAxLCAyMzksIDE4NywgMjQwLCA2MywgMjI4LCAKKyAgICAxMiwgMSwgMjE1LCAyMjcsIDIyOCwgMTIsIDEsIDIyNywgNDksIDc3LCAxMzEsIDI0OCwgNDUsIDIxMiwgMjM4LCAyMzgsIAorICAgIDgyLCAyMjQsIDE3MywgMjE2LCA2NCwgMjM5LCA4OSwgMjM5LCA4OCwgMjM5LCA4NywgMjIzLCAxODMsIDIwMSwgMjQzLCAKKyAgICAyMDEsIDI0NCwgMjAxLCAyNDYsIDIyNiwgMjQzLCAyMTUsIDIzNSwgMjI2LCAyNDUsIDIxNSwgMjM3LCAyMTksIDM3LCAyMjYsIAorICAgIDI0MiwgMjE1LCAyMzQsIDIyMSwgMjIzLCAyMjQsIDg2LCAyMDQsIDIsIDIyNiwgMjQ0LCAyMTUsIDIzNiwgMjM5LCAxMTEsIAorICAgIDIxOSwgMzYsIDIwNCwgNTIsIDI0MSwgMTA3LCAyMzksIDk5LCAyMjQsIDE1NCwgMjIwLCAzMiwgMjA2LCAxOTQsIDk3LCAKKyAgICAyMjQsIDE1NCwgMjQ0LCAxNDUsIDk3LCA5NiwgMjA4LCA4NCwgNTMsIDMsIDUyLCA4MCwgOTUsIDg2LCAyMDgsIDg0LCA1MywgCisgICAgMywgNTIsIDgwLCA5NSwgMTEsIDQsIDIzMCwgMTk5LCA4MiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA2MSwgCisgICAgMjI3LCAxODUsIDE1NSwgMjA1LCAxNjUsIDIwNSwgNTQsIDIwNCwgMjQyLCAyMDQsIDIzMSwgMjA0LCAyMjAsIDIwNCwgMjA5LCAKKyAgICAyMDQsIDE5OCwgMjA0LCAxODcsIDIwNCwgMTc2LCAyMDUsIDE2NCwgMjA1LCAxNTMsIDIwNSwgMTQyLCAyMDUsIDEzMSwgCisgICAgMjA1LCAxMjAsIDIwNSwgMTA5LCAyMDUsIDk4LCAyNDcsIDEzMCwgMjE5LCAyNDEsIDgyLCAyNDgsIDEzLCAyMDEsIDI0NSwgCisgICAgOSwgMiwgMjIxLCA1NywgMjA5LCAxNDEsIDksIDIsIDIyMSwgNTcsIDExNSwgMjIxLCA1NywgMjQ3LCAxNjEsIDExNSwgMjQ3LCAKKyAgICAxNjAsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyMTIsIDY0LCAyNDYsIDEwMiwgMjA2LCA2NSwgMjA1LCA4NywgMjA1LCA3NiwgCisgICAgMjA1LCA2NSwgMjA1LCA1MywgMjA1LCA0MiwgMjA1LCAzMSwgMjA1LCAyMCwgMjA1LCA5LCAyMDQsIDI1NCwgMjA0LCAyNDYsIAorICAgIDIwNCwgMjQ1LCAyMDQsIDI0NCwgMjA0LCAyNDMsIDIwNCwgMjQxLCAyMDQsIDI0MCwgMjA0LCAyMzksIDIwNCwgMjM4LCAKKyAgICAyMDQsIDIzNywgMjA0LCAyMzYsIDIwNCwgMjM1LCAyMDQsIDIzNCwgMjA0LCAyMzMsIDIwNCwgMjMyLCAyMDQsIDIzMCwgCisgICAgMjA0LCAyMjksIDIwNCwgMjI4LCAyMDQsIDIyNywgMjA0LCAyMjYsIDIwNCwgMjI1LCAyMDQsIDIyNCwgMjA0LCAyMjMsIAorICAgIDIwNCwgMjIyLCAyMDQsIDIyMSwgMjA0LCAyMTksIDIwNCwgMjE4LCAyMDQsIDIxNywgMjA0LCAyMTYsIDIwNCwgMjE1LCAKKyAgICAyMDQsIDIxNCwgMjA0LCAyMTMsIDIwNCwgMjEyLCAyMDQsIDIxMSwgMjA0LCAyMTAsIDIwNCwgMjA4LCAyMDQsIDIwNywgCisgICAgMjA0LCAyMDYsIDIwNCwgMjA1LCAyMDQsIDIwNCwgMjA0LCAyMDMsIDIwNCwgMjAyLCAyMDQsIDIwMSwgMjA0LCAyMDAsIAorICAgIDIwNCwgMTk5LCAyMDQsIDE5NywgMjA0LCAxOTYsIDIwNCwgMTk1LCAyMDQsIDE5NCwgMjA0LCAxOTMsIDIwNCwgMTkyLCAKKyAgICAyMDQsIDE5MSwgMjA0LCAxOTAsIDIwNCwgMTg5LCAyMDQsIDE4OCwgMjA0LCAxODYsIDIwNCwgMTg1LCAyMDQsIDE4NCwgCisgICAgMjA0LCAxODMsIDIwNCwgMTgyLCAyMDQsIDE4MSwgMjA0LCAxODAsIDIwNCwgMTc5LCAyMDQsIDE3OCwgMjA0LCAxNzcsIAorICAgIDIwNCwgMTc1LCAyMDQsIDE3NCwgMjA0LCAxNzMsIDIwNCwgMTcyLCAyMDQsIDE3MSwgMjA0LCAxNzAsIDIwNCwgMTY5LCAKKyAgICAyMDQsIDE2OCwgMjA0LCAxNjcsIDIwNCwgMTY2LCAyMDUsIDE2MywgMjA1LCAxNjIsIDIwNSwgMTYxLCAyMDUsIDE2MCwgCisgICAgMjA1LCAxNTksIDIwNSwgMTU4LCAyMDUsIDE1NywgMjA1LCAxNTYsIDIwNSwgMTU1LCAyMDUsIDE1NCwgMjA1LCAxNTIsIAorICAgIDIwNSwgMTUxLCAyMDUsIDE1MCwgMjA1LCAxNDksIDIwNSwgMTQ4LCAyMDUsIDE0NywgMjA1LCAxNDYsIDIwNSwgMTQ1LCAKKyAgICAyMDUsIDE0NCwgMjA1LCAxNDMsIDIwNSwgMTQxLCAyMDUsIDE0MCwgMjA1LCAxMzksIDIwNSwgMTM4LCAyMDUsIDEzNywgCisgICAgMjA1LCAxMzYsIDIwNSwgMTM1LCAyMDUsIDEzNCwgMjA1LCAxMzMsIDIwNSwgMTMyLCAyMDUsIDEzMCwgMjA1LCAxMjksIAorICAgIDIwNSwgMTI4LCAyMDUsIDEyNywgMjA1LCAxMjYsIDIwNSwgMTI1LCAyMDUsIDEyNCwgMjA1LCAxMjMsIDIwNSwgMTIyLCAKKyAgICAyMDUsIDEyMSwgMjA1LCAxMTksIDIwNSwgMTE4LCAyMDUsIDExNywgMjA1LCAxMTYsIDIwNSwgMTE1LCAyMDUsIDExNCwgCisgICAgMjA1LCAxMTMsIDIwNSwgMTEyLCAyMDUsIDExMSwgMjA1LCAxMTAsIDIwNSwgMTA4LCAyMDUsIDEwNywgMjA1LCAxMDYsIAorICAgIDIwNSwgMTA1LCAyMDUsIDEwNCwgMjA1LCAxMDMsIDIwNSwgMTAyLCAyMDUsIDEwMSwgMjA1LCAxMDAsIDIwNSwgOTksIDIwNSwgCisgICAgOTcsIDIwNSwgOTYsIDIwNSwgOTUsIDIwNSwgOTQsIDIwNSwgOTMsIDIwNSwgOTIsIDIwNSwgOTEsIDIwNSwgOTAsIDIwNSwgCisgICAgODksIDIwNSwgODgsIDIwNSwgODYsIDIwNSwgODUsIDIwNSwgODQsIDIwNSwgODMsIDIwNSwgODIsIDIwNSwgODEsIDIwNSwgCisgICAgODAsIDIwNSwgNzksIDIwNSwgNzgsIDIwNSwgNzcsIDIwNSwgNzUsIDIwNSwgNzQsIDIwNSwgNzMsIDIwNSwgNzIsIDIwNSwgCisgICAgNzEsIDIwNSwgNzAsIDIwNSwgNjksIDIwNSwgNjgsIDIwNSwgNjcsIDIwNSwgNjYsIDIwNSwgNjQsIDIwNSwgNjMsIDIwNSwgCisgICAgNjIsIDIwNSwgNjEsIDIwNSwgNjAsIDIwNSwgNTksIDIwNSwgNTgsIDIwNSwgNTcsIDIwNSwgNTYsIDIwNSwgNTUsIDIwNSwgCisgICAgNTIsIDIwNSwgNTEsIDIwNSwgNTAsIDIwNSwgNDksIDIwNSwgNDgsIDIwNSwgNDcsIDIwNSwgNDYsIDIwNSwgNDUsIDIwNSwgCisgICAgNDQsIDIwNSwgNDMsIDIwNSwgNDEsIDIwNSwgNDAsIDIwNSwgMzksIDIwNSwgMzgsIDIwNSwgMzcsIDIwNSwgMzYsIDIwNSwgCisgICAgMzUsIDIwNSwgMzQsIDIwNSwgMzMsIDIwNSwgMzIsIDIwNSwgMzAsIDIwNSwgMjksIDIwNSwgMjgsIDIwNSwgMjcsIDIwNSwgCisgICAgMjYsIDIwNSwgMjUsIDIwNSwgMjQsIDIwNSwgMjMsIDIwNSwgMjIsIDIwNSwgMjEsIDIwNSwgMTksIDIwNSwgMTgsIDIwNSwgCisgICAgMTcsIDIwNSwgMTYsIDIwNSwgMTUsIDIwNSwgMTQsIDIwNSwgMTMsIDIwNSwgMTIsIDIwNSwgMTEsIDIwNSwgMTAsIDIwNSwgCisgICAgOCwgMjA1LCA3LCAyMDUsIDYsIDIwNSwgNSwgMjA1LCA0LCAyMDUsIDMsIDIwNSwgMiwgMjA1LCAxLCAyMDUsIDAsIDIwNCwgCisgICAgMjU1LCAyMDQsIDI1MywgMjA0LCAyNTIsIDIwNCwgMjUxLCAyMDQsIDI1MCwgMjA0LCAyNDksIDIwNCwgMjQ4LCAyMDQsIAorICAgIDI0NywgOCwgNiwgMSwgMzQsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDM0LCAzLCAyMjUsIDE3MSwgCisgICAgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDgwLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDE4OCwgMywgODAsIAorICAgIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMTg4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMjM3LCAyNTMsIDgsIAorICAgIDUsIDEsIDE4OCwgMywgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDgwLCAKKyAgICAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIAorICAgIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgCisgICAgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCAyNDcsIDI5LCA4LCA1LCAxLCAxODgsIDMsIAorICAgIDI0NiwgNTMsIDI1LCAyNDcsIDI5LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgCisgICAgMSwgMjM1LCAyMDYsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCA3MCwgODcsIDI1LCAKKyAgICAxNjUsIDgsIDUsIDEsIDIyMiwgMjA2LCAzLCAyMDgsIDIyOCwgNTUsIDgsIDYsIDEsIDE1OCwgMywgODAsIDIyNywgMTE1LCAKKyAgICA1NiwgOCwgNSwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAxNTgsIDMsIDgwLCAyMjcsIDExNSwgCisgICAgMjQ4LCAxMjYsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMjM3LCAKKyAgICAyNTMsIDgsIDYsIDEsIDE1OCwgMywgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAKKyAgICA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMTY1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCA4MCwgMjI3LCAxMTUsIDU2LCAKKyAgICA4LCA1LCAxLCAyMTUsIDk0LCAzLCA4MCwgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDIyNSwgMTcxLCAyNSwgCisgICAgMjM3LCAyNTMsIDgsIDUsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDIyMCwgCisgICAgNjMsIDI1LCAxNjUsIDgsIDUsIDEsIDM0LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA2LCAxLCAzNCwgMywgMjIwLCA2MywgCisgICAgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAzNCwgMywgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAxODgsIDMsIAorICAgIDIyMCwgNjMsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgMjIwLCA2MywgMjUsIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAKKyAgICAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDE4OCwgMywgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAKKyAgICAxODgsIDMsIDcwLCA4NywgMjUsIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCA3MCwgODcsIDI1LCAxNjUsIDgsIDYsIDEsIDE4OCwgCisgICAgMywgNzAsIDg3LCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDE4OCwgMywgNzAsIDg3LCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIAorICAgIDIzNSwgMjA2LCAzLCA3MCwgODcsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDcwLCA4NywgMjUsIDIwOCwgCisgICAgMjI3LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjIwLCA2MywgMjUsIDE2NSwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgCisgICAgNjMsIDI1LCA3MCwgODcsIDI1LCAxNjUsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIAorICAgIDUsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYzLCAyNSwgNzAsIDg3LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDIzMCwgMTg1LCAKKyAgICAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMjMwLCAxODUsIDMsIDcwLCA4NywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMjgsIAorICAgIDEzMSwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMjI2LCAxODYsIDMsIAorICAgIDIwOCwgMjI3LCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDIxNywgMSwgMywgMjA4LCAyMjcsIAorICAgIDgsIDUsIDEsIDIxNywgMSwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDEwNiwgMywgMjIwLCA2MywgMjUsIDE2NSwgOCwgNSwgMSwgCisgICAgMTA2LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA2LCAxLCAxMDYsIDMsIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgNSwgCisgICAgMSwgMTA2LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAxNjUsIDgsIAorICAgIDUsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAxNjUsIDgsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAyMDgsIDIyNywgCisgICAgOCwgNSwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAyNTEsIDExMCwgMywgMjM3LCAyNTMsIAorICAgIDgsIDUsIDEsIDE3MSwgMTU4LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMTcxLCAxNTgsIDMsIDE2NSwgOCwgNSwgMSwgMjA3LCAKKyAgICAxNzQsIDIwNiwgMTY1LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMjA3LCAxNzQsIDIwNiwgMTY1LCAzLCAxNjUsIDgsIDUsIDEsIAorICAgIDIxNCwgMTkzLCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMjE0LCAxOTMsIDMsIDE2NSwgOCwgNSwgMSwgMjM2LCAxMTUsIDIxNCwgCisgICAgMTkzLCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMjM2LCAxMTUsIDIxNCwgMTkzLCAzLCAxNjUsIDEwLCAyMTMsIDEyNywgODksIAorICAgIDMsIDIzNywgMTI4LCA4NywgMywgMjUxLCAzMCwgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDQsIAorICAgIDcwLCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMjksIDEwLCAyMTMsIDEyNywgCisgICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjIwLCA3MywgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAKKyAgICA2OCwgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDIsIDIxMywgMTAsIDIxMywgMTI3LCA4OSwgMywgCisgICAgMjM3LCAxMjgsIDg3LCAzLCA3NCwgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyNTEsIDEwOSwgMTAsIAorICAgIDIxMywgMTI3LCAyMjEsIDE3OSwgMywgMjI5LCAxODksIDE3OSwgMSwgMjI5LCAxMTksIDQ0LCAxMDksIDIzMCwgNTQsIDQ0LCAKKyAgICAxMDksIDIyMiwgMjA1LCA0NCwgMTA5LCAyNDcsIDEyNSwgNDQsIDEwOSwgMjIxLCAxMywgNDQsIDEwOSwgMjA3LCAyNDQsIAorICAgIDQ0LCAxMDksIDIyMSwgMjI4LCA0NCwgMTA5LCAyMTAsIDY5LCA0NCwgMTA5LCAyMjMsIDE2MywgNDQsIDEwOSwgMjE5LCAKKyAgICAxODQsIDQ0LCAxMDksIDIyNiwgMTg1LCA0NCwgMTA5LCAyMDMsIDEyNCwgNDQsIDEwOSwgMTQ2LCA0NCwgMTA5LCAxNTksIAorICAgIDQ0LCAxMDksIDIwNiwgMTY0LCA0NCwgMTA5LCAyMjcsIDY5LCA0NCwgMTA5LCAyMjcsIDc4LCA0NCwgMTA5LCAyMTUsIDE4NiwgCisgICAgNDQsIDEwOSwgMjIxLCAyMTAsIDQ0LCAxMDksIDIzMCwgMTg0LCA0NCwgMTA5LCAyMTMsIDkyLCA0NCwgMTA5LCAyMTEsIAorICAgIDE2NywgNDQsIDEwOSwgMTk0LCA0NCwgMTA5LCAyMzcsIDE3MSwgNDQsIDEwOSwgMjI4LCAyMjQsIDQ0LCA0LCAyMzAsIDQxLCAKKyAgICA0NCwgNCwgMjI5LCAxMDAsIDQ0LCA0LCAyMjksIDg3LCA0NCwgNCwgMjI4LCAyMDksIDQ0LCA0LCAyMjgsIDE3NCwgNDQsIDQsIAorICAgIDIyOSwgMjAxLCA0NCwgNCwgMjI5LCAxOTgsIDQ0LCA0LCAyMzAsIDE4LCA0NCwgNCwgMjI5LCAyNiwgNDQsIDQsIDIyOSwgNiwgCisgICAgNDQsIDQsIDIyOSwgMjE5LCA0NCwgNCwgMjIyLCAyMDIsIDQ0LCA0LCAyMjIsIDE1MSwgNDQsIDQsIDIyMiwgMTQ3LCA0NCwgCisgICAgNCwgMjIyLCAxMTYsIDQ0LCA0LCAyMjIsIDEwOCwgNDQsIDQsIDIyMiwgMTkwLCA0NCwgNCwgMjIyLCAxODgsIDQ0LCA0LCAKKyAgICAyMjIsIDE5OSwgNDQsIDQsIDIyMiwgMTI4LCA0NCwgNCwgMjIyLCAxMjMsIDQ0LCA0LCAyMjIsIDE5MiwgNDQsIDQsIDI0NywgCisgICAgOTEsIDQ0LCA0LCAyNDYsIDc5LCA0NCwgNCwgMjQ2LCA2OSwgNDQsIDQsIDI0NSwgMTEwLCA0NCwgNCwgMjQ1LCA3NiwgNDQsIAorICAgIDQsIDI0NiwgMjM4LCA0NCwgNCwgMjQ2LCAyMzAsIDQ0LCA0LCAyNDcsIDgwLCA0NCwgNCwgMjQ1LCAyNTQsIDQ0LCA0LCAKKyAgICAyNDUsIDE4MCwgNDQsIDQsIDI0NywgMTUsIDQ0LCA0LCAyMjEsIDEwLCA0NCwgNCwgMjIwLCAyNDgsIDQ0LCA0LCAyMjAsIAorICAgIDI0MywgNDQsIDQsIDIyMCwgMjI2LCA0NCwgNCwgMjIwLCAyMTgsIDQ0LCA0LCAyMjEsIDEsIDQ0LCA0LCAyMjEsIDAsIDQ0LCAKKyAgICA0LCAyMjEsIDcsIDQ0LCA0LCAyMjAsIDIzMywgNDQsIDQsIDIyMCwgMjMwLCA0NCwgNCwgMjIxLCA0LCA0NCwgNCwgMjA3LCAKKyAgICAyNDAsIDQ0LCA0LCAyMDcsIDIyMCwgNDQsIDQsIDIwNywgMjE5LCA0NCwgNCwgMjA3LCAyMDgsIDQ0LCA0LCAyMDcsIDIwNSwgCisgICAgNDQsIDQsIDIwNywgMjM2LCA0NCwgNCwgMjA3LCAyMzUsIDQ0LCA0LCAyMDcsIDIzOSwgNDQsIDQsIDIwNywgMjE4LCA0NCwgCisgICAgNCwgMjA3LCAyMTcsIDQ0LCA0LCAyMDcsIDIzOCwgNDQsIDQsIDIyMSwgMjI2LCA0NCwgNCwgMjIxLCAyMTIsIDQ0LCA0LCAKKyAgICAyMjEsIDIxMSwgNDQsIDQsIDIyMSwgMTk1LCA0NCwgNCwgMjIxLCAxOTQsIDQ0LCA0LCAyMjEsIDIyMiwgNDQsIDQsIDIyMSwgCisgICAgMjIxLCA0NCwgNCwgMjIxLCAyMjUsIDQ0LCA0LCAyMjEsIDE5NywgNDQsIDQsIDIyMSwgMTk2LCA0NCwgNCwgMjIxLCAyMjQsIAorICAgIDQ0LCA0LCAyMTAsIDE4LCA0NCwgNCwgMjA5LCAyLCA0NCwgNCwgMjA4LCAyNDIsIDQ0LCA0LCAyMDcsIDIwMywgNDQsIDQsIAorICAgIDIwNywgMTY1LCA0NCwgNCwgMjA5LCAxODcsIDQ0LCA0LCAyMDksIDE3NiwgNDQsIDQsIDIwOSwgMjUwLCA0NCwgNCwgMTM1LCAKKyAgICA0NCwgNCwgMjA4LCAxNDgsIDQ0LCA0LCAyMDksIDIwNywgNDQsIDQsIDIyMywgMTA2LCA0NCwgNCwgMjIyLCAxMDAsIDQ0LCAKKyAgICA0LCAyMjIsIDc1LCA0NCwgNCwgMjIxLCA4NCwgNDQsIDQsIDIyMSwgMjUsIDQ0LCA0LCAyMjIsIDI0MCwgNDQsIDQsIDIyMiwgCisgICAgMjM1LCA0NCwgNCwgMjIzLCA5MiwgNDQsIDQsIDIyMSwgMTkxLCA0NCwgNCwgMjIxLCAxODAsIDQ0LCA0LCAyMjMsIDY1LCAKKyAgICA0NCwgNCwgMjE5LCAxNjgsIDQ0LCA0LCAyMTgsIDE2NywgNDQsIDQsIDIxOCwgMTI5LCA0NCwgNCwgMjE3LCAxOTEsIDQ0LCAKKyAgICA0LCAyMTcsIDE1NywgNDQsIDQsIDIxOSwgMzQsIDQ0LCA0LCAyMTksIDIzLCA0NCwgNCwgMjE5LCAxNDgsIDQ0LCA0LCAyMTgsIAorICAgIDY5LCA0NCwgNCwgMjE4LCA0NSwgNDQsIDQsIDIxOSwgNDgsIDQ0LCA0LCAyMjUsIDE3NSwgNDQsIDQsIDIyNCwgMTU1LCA0NCwgCisgICAgNCwgMjI0LCAxMjUsIDQ0LCA0LCAyMjMsIDI0NiwgNDQsIDQsIDIyMywgMTkyLCA0NCwgNCwgMjI1LCAyMCwgNDQsIDQsIAorICAgIDIyNSwgOCwgNDQsIDQsIDIyNSwgMTQwLCA0NCwgNCwgMjI0LCA4MiwgNDQsIDQsIDIyNCwgMzUsIDQ0LCA0LCAyMjUsIDY3LCAKKyAgICA0NCwgNCwgMjAzLCAxMTAsIDQ0LCA0LCAyMDMsIDExLCA0NCwgNCwgMjAzLCAyLCA0NCwgNCwgMjAyLCAyMTMsIDQ0LCA0LCAKKyAgICAyMDIsIDE4MSwgNDQsIDQsIDIwMywgNTIsIDQ0LCA0LCAyMDMsIDQ5LCA0NCwgNCwgMjAzLCA4OSwgNDQsIDQsIDIwMiwgCisgICAgMjQ3LCA0NCwgNCwgMjAyLCAyMzIsIDQ0LCA0LCAyMDMsIDYyLCA0NCwgNCwgMjE2LCAyMTYsIDQ0LCA0LCAyMTYsIDU3LCAKKyAgICA0NCwgNCwgMjE2LCAzLCA0NCwgNCwgMjE1LCAxNDUsIDQ0LCA0LCAyMTUsIDExNCwgNDQsIDQsIDIxNiwgMTU4LCA0NCwgNCwgCisgICAgMjE2LCAxMzUsIDQ0LCA0LCAyMTYsIDE5NywgNDQsIDQsIDIxNSwgMjI3LCA0NCwgNCwgMjE1LCAyMDgsIDQ0LCA0LCAyMTYsIAorICAgIDE2NywgNDQsIDQsIDIyOCwgMTEyLCA0NCwgNCwgMjI3LCAxNDgsIDQ0LCA0LCAyMjcsIDEzMCwgNDQsIDQsIDIyNiwgMjM5LCAKKyAgICA0NCwgNCwgMjI2LCAyMTAsIDQ0LCA0LCAyMjcsIDIzNCwgNDQsIDQsIDIyNywgMjI2LCA0NCwgNCwgMjI4LCA4NiwgNDQsIDQsIAorICAgIDIyNywgNDksIDQ0LCA0LCAyMjcsIDE4LCA0NCwgNCwgMjI3LCAyNTEsIDQ0LCA0LCAyMDYsIDg1LCA0NCwgNCwgMjA1LCAKKyAgICAyMzAsIDQ0LCA0LCAyMDUsIDIxNSwgNDQsIDQsIDIwNCwgMTYzLCA0NCwgNCwgMjA0LCAxNTYsIDQ0LCA0LCAyMDYsIDU1LCAKKyAgICA0NCwgNCwgMjA2LCA1MCwgNDQsIDQsIDIwNiwgODEsIDQ0LCA0LCAyMDUsIDE4OSwgNDQsIDQsIDIwNSwgMTc2LCA0NCwgNCwgCisgICAgMjA2LCA2MSwgNDQsIDQsIDIyNywgNjcsIDQ0LCA0LCAyMjcsIDYyLCA0NCwgNCwgMjI3LCA2MSwgNDQsIDQsIDIyNywgNTgsIAorICAgIDQ0LCA0LCAyMjcsIDU3LCA0NCwgNCwgMjI3LCA2NCwgNDQsIDQsIDIyNywgNjMsIDQ0LCA0LCAyMjcsIDY2LCA0NCwgNCwgCisgICAgMjI3LCA2MCwgNDQsIDQsIDIyNywgNTksIDQ0LCA0LCAyMjcsIDY1LCA0NCwgNCwgMjI3LCA3NiwgNDQsIDQsIDIyNywgNzEsIAorICAgIDQ0LCA0LCAyMjcsIDcwLCA0NCwgNCwgMjI3LCA1NCwgNDQsIDQsIDIyNywgNTMsIDQ0LCA0LCAyMjcsIDczLCA0NCwgNCwgCisgICAgMjI3LCA3MiwgNDQsIDQsIDIyNywgNzUsIDQ0LCA0LCAyMjcsIDU2LCA0NCwgNCwgMjI3LCA1NSwgNDQsIDQsIDIyNywgNzQsIAorICAgIDQ0LCA0LCAyMTUsIDE4NCwgNDQsIDQsIDIxNSwgMTczLCA0NCwgNCwgMjE1LCAxNzIsIDQ0LCA0LCAyMTUsIDE2NSwgNDQsIAorICAgIDQsIDIxNSwgMTU4LCA0NCwgNCwgMjE1LCAxODAsIDQ0LCA0LCAyMTUsIDE3OSwgNDQsIDQsIDIxNSwgMTgzLCA0NCwgNCwgCisgICAgMjE1LCAxNzEsIDQ0LCA0LCAyMTUsIDE3MCwgNDQsIDQsIDIxNSwgMTgyLCA0NCwgNCwgMjIxLCAyMDgsIDQ0LCA0LCAyMjEsIAorICAgIDIwMywgNDQsIDQsIDIyMSwgMjAyLCA0NCwgNCwgMjIxLCAxOTksIDQ0LCA0LCAyMjEsIDE5OCwgNDQsIDQsIDIyMSwgMjA1LCAKKyAgICA0NCwgNCwgMjIxLCAyMDQsIDQ0LCA0LCAyMjEsIDIwNywgNDQsIDQsIDIyMSwgMjAxLCA0NCwgNCwgMjIxLCAyMDAsIDQ0LCAKKyAgICA0LCAyMjEsIDIwNiwgNDQsIDQsIDIzMCwgMTgwLCA0NCwgNCwgMjMwLCAxNDEsIDQ0LCA0LCAyMzAsIDEzNCwgNDQsIDQsIAorICAgIDIzMCwgODIsIDQ0LCA0LCAyMzAsIDY0LCA0NCwgNCwgMjMwLCAxNjEsIDQ0LCA0LCAyMzAsIDE1OSwgNDQsIDQsIDIzMCwgCisgICAgMTc0LCA0NCwgNCwgMjMwLCAxMDEsIDQ0LCA0LCAyMzAsIDkxLCA0NCwgNCwgMjMwLCAxNjcsIDQ0LCA0LCAyMTMsIDg1LCAKKyAgICA0NCwgNCwgMjEzLCAxMSwgNDQsIDQsIDIxMywgNiwgNDQsIDQsIDIxMiwgMTk5LCA0NCwgNCwgMjEyLCAxODIsIDQ0LCA0LCAKKyAgICAyMTMsIDQzLCA0NCwgNCwgMjEzLCA0MSwgNDQsIDQsIDIxMywgNzQsIDQ0LCA0LCAyMTIsIDI0MiwgNDQsIDQsIDIxMiwgCisgICAgMjM2LCA0NCwgNCwgMjEzLCA1MiwgNDQsIDQsIDIxMSwgMTYzLCA0NCwgNCwgMjExLCAxMzIsIDQ0LCA0LCAyMTEsIDEyOCwgCisgICAgNDQsIDQsIDIxMSwgMTE5LCA0NCwgNCwgMjExLCAxMTYsIDQ0LCA0LCAyMTEsIDEzOCwgNDQsIDQsIDIxMSwgMTM3LCA0NCwgCisgICAgNCwgMjExLCAxNjIsIDQ0LCA0LCAyMTEsIDEyNCwgNDQsIDQsIDIxMSwgMTIzLCA0NCwgNCwgMjExLCAxNDAsIDQ0LCA0LCAKKyAgICAyMTUsIDMzLCA0NCwgNCwgMjEyLCAxNjIsIDQ0LCA0LCAyMTIsIDE0MiwgNDQsIDQsIDIxMSwgMTAsIDQ0LCA0LCAyMTAsIAorICAgIDE3OSwgNDQsIDQsIDIxNCwgMTc3LCA0NCwgNCwgMjE0LCAxNjUsIDQ0LCA0LCAyMTUsIDE4LCA0NCwgNCwgMjEyLCAxMywgCisgICAgNDQsIDQsIDIxMSwgMjUwLCA0NCwgNCwgMjE0LCAyMTcsIDQ0LCA0LCAyMzcsIDE1NywgNDQsIDQsIDIzNywgMywgNDQsIDQsIAorICAgIDIzNiwgMjM5LCA0NCwgNCwgMjM2LCAyNiwgNDQsIDQsIDIzNiwgMSwgNDQsIDQsIDIzNywgNjcsIDQ0LCA0LCAyMzcsIDQ4LCAKKyAgICA0NCwgNCwgMjM3LCAxNDcsIDQ0LCA0LCAyMzYsIDEzNiwgNDQsIDQsIDIzNiwgMTE3LCA0NCwgNCwgMjM3LCA3NiwgNDQsIDQsIAorICAgIDIyOCwgMjIzLCA0NCwgNCwgMjI4LCAyMjIsIDQ0LCA0LCAyMjgsIDIxNywgNDQsIDQsIDIyOCwgMjE2LCA0NCwgNCwgMjI4LCAKKyAgICAyMTMsIDQ0LCA0LCAyMjgsIDIxMiwgNDQsIDQsIDIyOCwgMjE5LCA0NCwgNCwgMjI4LCAyMTgsIDQ0LCA0LCAyMjgsIDIyMSwgCisgICAgNDQsIDQsIDIyOCwgMjE1LCA0NCwgNCwgMjI4LCAyMTQsIDQ0LCA0LCAyMjgsIDIyMCwgNDQsIDQsIDIxMiwgMjA1LCAxNDAsIAorICAgIDEwOSwgMiwgMjAzLCA3NSwgMTQwLCAxMDksIDIsIDIxNiwgMTg2LCAxNDAsIDEwOSwgMiwgMjE2LCAxMDIsIDExNCwgMSwgCisgICAgMjA3LCA5NSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDE3MywgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyOSwgMTQ0LCA4NSwgCisgICAgMTA5LCAyLCAyNDUsIDI0OSwgMjI5LCAyNiwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyOSwgMTE1LCA4NSwgMTA5LCAyLCAKKyAgICAyNDUsIDI0OSwgMjIyLCAxMjgsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDcsIDkyLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgCisgICAgMjQ2LCAxOTksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDUsIDI1NCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDI0NiwgMTE2LCAKKyAgICA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjIwLCAyMzMsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDQsIDIxMiwgODUsIDEwOSwgCisgICAgMiwgMjQ1LCAyNDksIDIwNywgMjI5LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjQzLCAxMTMsIDg1LCAxMDksIDIsIDI0NSwgCisgICAgMjQ5LCAyMDcsIDIyNCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIwMSwgMjAxLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjEwLCAKKyAgICAyMiwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIwOSwgMTA4LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMTM1LCA4NSwgMTA5LCAKKyAgICAyLCAyNDUsIDI0OSwgMjA5LCA0NywgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyMSwgMTkxLCA4NSwgMTA5LCAyLCAyNDUsIAorICAgIDI0OSwgMjQ5LCAzMiwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxOCwgMjA4LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE4LCAKKyAgICA2OSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxOCwgMTgwLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjI0LCA4MiwgODUsIAorICAgIDEwOSwgMiwgMjQ1LCAyNDksIDIwMiwgMjQ3LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE1LCAyMjcsIDg1LCAxMDksIDIsIAorICAgIDI0NSwgMjQ5LCAyMjcsIDQ5LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjA1LCAxODksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAKKyAgICAyMTMsIDkwLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjExLCAxNjQsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTUsIDM2LCAKKyAgICA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMTUyLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjI4LCAxMTMsIDg1LCAyMiwgMiwgCisgICAgMjQ1LCAyNDksIDIxNywgMTI2LCA4NSwgMjMxLCAzNiwgMjIsIDIsIDI0NSwgMjQ5LCAyMTcsIDY1LCA4NSwgMjMxLCAzNiwgCisgICAgMjIsIDIsIDI0NSwgMjQ5LCAyMTUsIDEwMiwgODUsIDIzMSwgMzYsIDIyLCAyLCAyNDUsIDI0OSwgMjE1LCA5NSwgODUsIAorICAgIDIzMSwgMzYsIDIyLCAyLCAyNDUsIDI0OSwgMjE3LCAxMDYsIDg1LCAyMiwgMiwgMjIwLCAzOSwgODUsIDIyLCAyLCAyNTEsIAorICAgIDI0MiwgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDIwMywgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDE1MSwgMTcyLCAxLCAyNDgsIAorICAgIDc5LCAyMjIsIDExNiwgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDE5MCwgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDEyOCwgNjcsIAorICAgIDEsIDI0OCwgNzksIDIyMiwgMjAzLCA2NywgMSwgMjQ4LCA3OSwgMjIyLCAxNTEsIDY3LCAxLCAyNDgsIDc5LCAyMjIsIDExNiwgCisgICAgNjcsIDEsIDI0OCwgNzksIDIyMiwgMTkwLCA2NywgMSwgMjQ4LCA3OSwgMjIyLCAxMjgsIDY3LCAxLCAyNTEsIDU3LCAyNDYsIAorICAgIDIzOCwgNjcsIDEsIDI1MSwgNTcsIDIwNywgMjAzLCA2NywgMSwgMjUxLCA1NywgMTM1LCA2NywgMSwgMjUxLCA1NywgMjE5LCAKKyAgICAxODQsIDY1LCAxLCAyNDAsIDE5OCwgMjQwLCAxOTcsIDI0NSwgMTg4LCAxNDMsIDE0MiwgNjUsIDEsIDI0MCwgMTk3LCAyNDAsIAorICAgIDE5OCwgMjQ1LCAxODgsIDE0MywgMTQyLCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIHBocmFzZWJvb2tfb2Zmc2V0MVtdID0gewogICAgIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgCiAgICAgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgCi0gICAgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgCi0gICAgNTcsIDU4LCA1OSwgNjAsIDYxLCA2MiwgNjMsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgCi0gICAgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTAsIDkxLCA5MiwgCi0gICAgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTA0LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDEwNSwgMTA2LCAxMDcsIDEwOCwgMTA5LCAKLSAgICAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLCAxMjIsIDEyMywgCi0gICAgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjgsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDEyOSwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTMwLCAxMzEsIAotICAgIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgMTQ1LCAKLSAgICAxNDYsIDE0NywgODcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMTUyLCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxNTMsIDg3LCAKLSAgICAxNTQsIDE1NSwgMTU2LCA4NywgMTU3LCA4NywgMTU4LCA4NywgODcsIDg3LCAxNTksIDg3LCA4NywgODcsIDE2MCwgMTYxLCAKLSAgICAxNjIsIDE2MywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTY0LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxNjUsIDE2NiwgMTY3LCAxNjgsIAotICAgIDE2OSwgMTcwLCAxNzEsIDg3LCAxNzIsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTczLCAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgCi0gICAgMTc5LCAxODAsIDE4MSwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE4MiwgCi0gICAgMTgzLCAxODQsIDE4NSwgMTg2LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxODcsIDE4OCwgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICAxODksIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCA4NywgMTk1LCAKLSAgICA4NywgMTk2LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgMjA0LCAyMDUsIDg3LCA4NywgMjA2LCAyMDcsIDIwOCwgMjA5LCAyMTAsIDg3LCAyMTEsIDIxMiwgMjEzLCAyMTQsIAotICAgIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAyMjAsIDIyMSwgCi0gICAgMjIyLCAyMjMsIDIyNCwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMjI1LCA4NywgMjI2LCAyMjcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCAyMjgsIDIyOSwgMjMwLCAyMzEsIDIzMiwgMjMzLCAyMzQsIDIzNSwgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCAKKyAgICAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUzLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTQsIDU1LCA1NiwgNTcsIDU4LCAKKyAgICA1OSwgNjAsIDYxLCA2MiwgNjMsIDY0LCA2NSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDY2LCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA2NywgNjgsIDY5LCA3MCwgNzEsIDcyLCAKKyAgICA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDg0LCA4NSwgODYsIDUyLCA4NywgNTIsIDg4LCAKKyAgICA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDUyLCA5NywgNTIsIDUyLCA1MiwgNTIsIDUyLCA5OCwgOTksIDEwMCwgCisgICAgMTAxLCAxMDIsIDEwMywgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEwNCwgMTA1LCAxMDYsIAorICAgIDEwNywgMTA4LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICAxMDksIDExMCwgMTExLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCAxMTIsIDExMywgMTE0LCAxMTUsIDUyLCA1MiwgNTIsIDExNiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDExNywgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMTgsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMTksIDEyMCwgCisgICAgMTIxLCAxMjIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjgsIDEyOSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEzMCwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMzEsIDUyLCAxMzIsIDEzMywgMTM0LCAKKyAgICAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTQyLCAxNDMsIDE0NCwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE0NSwgMTQ2LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE0NywgMTQ4LCAxNDksIAorICAgIDE1MCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGludCBwaHJhc2Vib29rX29mZnNldDJbXSA9IHsKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAzLCA2LCA5LCAxMSwgMTQsIDE3LCAxOSwgMjEsIDI0LCAyNywgMjksIDMxLCAKLSAgICAzMywgMzUsIDM5LCA0MSwgNDQsIDQ2LCA0OCwgNTAsIDUyLCA1NCwgNTYsIDU4LCA2MCwgNjIsIDY0LCA2NiwgNjksIDcyLCAKLSAgICA3NSwgNzgsIDgyLCA4NiwgOTEsIDk2LCAxMDEsIDEwNSwgMTEwLCAxMTUsIDEyMCwgMTI0LCAxMjksIDEzNCwgMTM4LCAxNDIsIAotICAgIDE0NywgMTUxLCAxNTYsIDE2MSwgMTY1LCAxNzAsIDE3NSwgMTc5LCAxODQsIDE4OSwgMTk0LCAxOTksIDIwNCwgMjA3LCAKLSAgICAyMTEsIDIxNCwgMjE4LCAyMjEsIDIyNSwgMjI5LCAyMzQsIDIzOSwgMjQ0LCAyNDgsIDI1MywgMjU4LCAyNjMsIDI2NywgCi0gICAgMjcyLCAyNzcsIDI4MSwgMjg1LCAyOTAsIDI5NCwgMjk5LCAzMDQsIDMwOCwgMzEzLCAzMTgsIDMyMiwgMzI3LCAzMzIsIAotICAgIDMzNywgMzQyLCAzNDcsIDM1MSwgMzU0LCAzNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1OSwgMzYzLCAzNjgsIAotICAgIDM3MSwgMzc0LCAzNzcsIDM4MCwgMzgzLCAzODYsIDM4OCwgMzkxLCAzOTcsIDQwNSwgNDA4LCA0MTIsIDQxNSwgNDE3LCAKLSAgICA0MjAsIDQyMywgNDI2LCA0MjksIDQzMywgNDM2LCA0MzksIDQ0MywgNDQ1LCA0NDgsIDQ1NCwgNDYyLCA0NjksIDQ3NiwgCi0gICAgNDgzLCA0ODgsIDQ5NSwgNTAxLCA1MDgsIDUxNCwgNTIxLCA1MjksIDUzNCwgNTQyLCA1NDksIDU1NSwgNTYyLCA1NjksIAotICAgIDU3NywgNTg0LCA1OTIsIDYwMCwgNjA1LCA2MTIsIDYxOSwgNjI1LCA2MzIsIDYzOCwgNjQ1LCA2NDgsIDY1NCwgNjYxLCAKLSAgICA2NjcsIDY3NCwgNjgxLCA2ODgsIDY5MywgNzAwLCA3MDcsIDcxMywgNzIwLCA3MjYsIDczMywgNzQxLCA3NDYsIDc1NCwgCi0gICAgNzYxLCA3NjcsIDc3NCwgNzgxLCA3ODksIDc5NiwgODA0LCA4MTIsIDgxNywgODI0LCA4MzEsIDgzNywgODQ0LCA4NTAsIAotICAgIDg1NywgODYwLCA4NjYsIDg3MywgODc5LCA4ODYsIDg5MywgOTAwLCA5MDUsIDkxMywgOTIwLCA5MjcsIDkzNCwgOTQxLCAKLSAgICA5NDgsIDk1NSwgOTYyLCA5NjksIDk3NywgOTg1LCA5OTMsIDEwMDEsIDEwMDksIDEwMTcsIDEwMjUsIDEwMzMsIDEwNDAsIAotICAgIDEwNDcsIDEwNTQsIDEwNjEsIDEwNjgsIDEwNzUsIDEwODIsIDEwODksIDEwOTYsIDExMDMsIDExMTAsIDExMTcsIDExMjUsIAotICAgIDExMzMsIDExNDEsIDExNDksIDExNTcsIDExNjUsIDExNzMsIDExODEsIDExODksIDExOTcsIDEyMDQsIDEyMTEsIDEyMTgsIAotICAgIDEyMjUsIDEyMzMsIDEyNDEsIDEyNDksIDEyNTcsIDEyNjUsIDEyNzMsIDEyODEsIDEyODcsIDEyOTIsIDEyOTcsIDEzMDUsIAotICAgIDEzMTMsIDEzMjEsIDEzMjksIDEzMzQsIDEzNDEsIDEzNDgsIDEzNTYsIDEzNjQsIDEzNzIsIDEzODAsIDEzOTAsIDE0MDAsIAotICAgIDE0MDcsIDE0MTQsIDE0MjEsIDE0MjgsIDE0MzYsIDE0NDQsIDE0NTIsIDE0NjAsIDE0NzEsIDE0NzYsIDE0ODEsIDE0ODgsIAotICAgIDE0OTUsIDE1MDIsIDE1MDksIDE1MTYsIDE1MjMsIDE1MjgsIDE1MzMsIDE1NDAsIDE1NDcsIDE1NTUsIDE1NjMsIDE1NzEsIAotICAgIDE1NzksIDE1ODYsIDE1OTMsIDE2MDEsIDE2MDksIDE2MTcsIDE2MjUsIDE2MzMsIDE2NDEsIDE2NDksIDE2NTcsIDE2NjUsIAotICAgIDE2NzMsIDE2ODAsIDE2ODcsIDE2OTMsIDE2OTksIDE3MDYsIDE3MTMsIDE3MjAsIDE3MjcsIDE3MzUsIDE3NDMsIDE3NTAsIAotICAgIDE3NTcsIDE3NjQsIDE3NzEsIDE3NzksIDE3ODcsIDE3OTUsIDE4MDMsIDE4MTEsIDE4MTgsIDE4MjUsIDE4MzMsIDE4NDEsIAotICAgIDE4NDksIDE4NTcsIDE4NjMsIDE4NjksIDE4NzUsIDE4ODIsIDE4ODksIDE4OTQsIDE4OTksIDE5MDQsIDE5MTEsIDE5MTgsIAotICAgIDE5MjUsIDE5MzIsIDE5NDAsIDE5NDgsIDE5NTUsIDE5NjEsIDE5NjYsIDE5NzEsIDE5NzgsIDE5ODUsIDE5OTIsIDE5OTcsIAotICAgIDIwMDIsIDIwMDcsIDIwMTQsIDIwMjEsIDIwMjgsIDIwMzUsIDIwNDIsIDIwNDgsIDIwNTYsIDIwNjYsIDIwNzQsIDIwODEsIAotICAgIDIwODgsIDIwOTMsIDIwOTgsIDIxMDUsIDIxMTIsIDIxMTYsIDIxMjEsIDIxMjYsIDIxMzEsIDIxMzksIDIxNDgsIDIxNTUsIAotICAgIDIxNjIsIDIxNzEsIDIxNzgsIDIxODUsIDIxOTAsIDIxOTcsIDIyMDQsIDIyMTEsIDIyMTgsIDIyMjUsIDIyMzAsIDIyMzcsIAotICAgIDIyNDQsIDIyNTIsIDIyNTcsIDIyNjIsIDIyNjcsIDIyNzcsIDIyODEsIDIyODcsIDIyOTMsIDIyOTksIDIzMDUsIDIzMTMsIAotICAgIDIzMjYsIDIzMzQsIDIzMzksIDIzNDksIDIzNTQsIDIzNTksIDIzNjksIDIzNzQsIDIzODEsIDIzODgsIDIzOTYsIDI0MDQsIAotICAgIDI0MTEsIDI0MTgsIDI0MjUsIDI0MzIsIDI0NDIsIDI0NTIsIDI0NjEsIDI0NzAsIDI0ODAsIDI0OTAsIDI1MDAsIDI1MTAsIAotICAgIDI1MTYsIDI1MjYsIDI1MzYsIDI1NDYsIDI1NTYsIDI1NjQsIDI1NzIsIDI1NzksIDI1ODYsIDI1OTQsIDI2MDIsIDI2MTAsIAotICAgIDI2MTgsIDI2MjUsIDI2MzIsIDI2NDIsIDI2NTIsIDI2NjAsIDI2NjgsIDI2NzYsIDI2ODEsIDI2OTEsIDI2OTYsIDI3MDMsIAotICAgIDI3MTAsIDI3MTUsIDI3MjAsIDI3MjgsIDI3MzYsIDI3NDYsIDI3NTYsIDI3NjMsIDI3NzAsIDI3NzksIDI3ODgsIDI3OTYsIAotICAgIDI4MDQsIDI4MTMsIDI4MjIsIDI4MzAsIDI4MzgsIDI4NDcsIDI4NTYsIDI4NjUsIDI4NzQsIDI4ODQsIDI4OTQsIDI5MDIsIAotICAgIDI5MTAsIDI5MTksIDI5MjgsIDI5MzcsIDI5NDYsIDI5NTYsIDI5NjYsIDI5NzQsIDI5ODIsIDI5OTEsIDMwMDAsIDMwMDksIAotICAgIDMwMTgsIDMwMjcsIDMwMzYsIDMwNDEsIDMwNDYsIDMwNTQsIDMwNjIsIDMwNzIsIDMwODAsIDMwODUsIDMwOTAsIDMwOTcsIAotICAgIDMxMDQsIDMxMTEsIDMxMTgsIDMxMjUsIDMxMzIsIDMxNDIsIDMxNTIsIDMxNjIsIDMxNzIsIDMxNzksIDMxODYsIDMxOTYsIAotICAgIDMyMDYsIDMyMTQsIDMyMjIsIDMyMzAsIDMyMzgsIDMyNDYsIDMyNTMsIDMyNjAsIDMyNjcsIDMyNzMsIDMyODAsIDMyODcsIAotICAgIDMyOTQsIDMzMDMsIDMzMTMsIDMzMjMsIDMzMzAsIDMzMzcsIDMzNDMsIDMzNDgsIDMzNTUsIDMzNjEsIDMzNjcsIDMzNzQsIAotICAgIDMzODEsIDMzOTIsIDM0MDIsIDM0MDksIDM0MTYsIDM0MjMsIDM0MzAsIDM0MzYsIDM0NDEsIDM0NDgsIDM0NTQsIDM0NTksIAotICAgIDM0NjcsIDM0NzUsIDM0ODIsIDM0ODgsIDM0OTMsIDM1MDAsIDM1MDUsIDM1MTIsIDM1MjEsIDM1MzAsIDM1MzksIDM1NDYsIAotICAgIDM1NTIsIDM1NTgsIDM1NjMsIDM1NzAsIDM1NzcsIDM1ODQsIDM1OTEsIDM1OTgsIDM2MDMsIDM2MDgsIDM2MTcsIDM2MjUsIAotICAgIDM2MzQsIDM2MzksIDM2NDUsIDM2NTYsIDM2NjMsIDM2NzEsIDM2ODAsIDM2ODYsIDM2OTIsIDM2OTgsIDM3MDUsIDM3MTAsIAotICAgIDM3MTYsIDM3MjcsIDM3MzYsIDM3NDUsIDM3NTMsIDM3NjEsIDM3NzEsIDM3NzYsIDM3ODMsIDM3OTAsIDM3OTUsIDM4MDcsIAotICAgIDM4MTYsIDM4MjQsIDM4MzEsIDM4NDAsIDM4NDUsIDM4NTAsIDM4NTcsIDM4NjQsIDM4NzEsIDM4NzgsIDM4ODQsIDM4OTMsIAotICAgIDM5MDEsIDM5MDYsIDM5MTQsIDM5MjAsIDM5MjgsIDM5MzYsIDM5NDIsIDM5NDgsIDM5NTQsIDM5NjEsIDM5NjksIDM5NzUsIAotICAgIDM5ODMsIDM5OTAsIDM5OTUsIDQwMDIsIDQwMTAsIDQwMjAsIDQwMjcsIDQwMzQsIDQwNDQsIDQwNTEsIDQwNTgsIDQwNjgsIAotICAgIDQwNzUsIDQwODIsIDQwODksIDQwOTUsIDQxMDEsIDQxMTEsIDQxMjQsIDQxMjksIDQxMzYsIDQxNDEsIDQxNDUsIDQxNTEsIAotICAgIDQxNjAsIDQxNjcsIDQxNzIsIDQxNzcsIDQxODEsIDQxODYsIDQxOTIsIDQxOTYsIDQyMDIsIDQyMDgsIDQyMTQsIDQyMjAsIAotICAgIDQyMjgsIDQyMzMsIDQyMzgsIDQyNDMsIDQyNDgsIDQyNTQsIDQyNTYsIDQyNjEsIDQyNjUsIDQyNzEsIDQyNzcsIDQyODMsIAotICAgIDQyODgsIDQyOTUsIDQzMDIsIDQzMDgsIDQzMTUsIDQzMjMsIDQzMzEsIDQzMzYsIDQzNDEsIDQzNDUsIDQzNTAsIDQzNTIsIAotICAgIDQzNTQsIDQzNTcsIDQzNTksIDQzNjEsIDQzNjYsIDQzNzEsIDQzNzcsIDQzODIsIDQzODYsIDQzOTEsIDQzOTYsIDQ0MDUsIAotICAgIDQ0MTEsIDQ0MTYsIDQ0MjIsIDQ0MjcsIDQ0MzMsIDQ0NDEsIDQ0NDksIDQ0NTMsIDQ0NTcsIDQ0NjIsIDQ0NjgsIDQ0NzQsIAotICAgIDQ0ODAsIDQ0ODYsIDQ0OTEsIDQ0OTksIDQ1MDgsIDQ1MTcsIDQ1MjEsIDQ1MjcsIDQ1MzQsIDQ1NDEsIDQ1NDgsIDQ1NTUsIAotICAgIDQ1NTksIDQ1NjQsIDQ1NjksIDQ1NzQsIDQ1NzksIDQ1ODQsIDQ1ODYsIDQ1ODksIDQ1OTIsIDQ1OTUsIDQ1OTgsIDQ2MDEsIAotICAgIDQ2MDUsIDQ2MDksIDQ2MTUsIDQ2MTgsIDQ2MjMsIDQ2MjksIDQ2MzUsIDQ2MzgsIDQ2NDMsIDQ2NDksIDQ2NTMsIDQ2NTksIAotICAgIDQ2NjUsIDQ2NzEsIDQ2NzcsIDQ2ODIsIDQ2ODcsIDQ2OTIsIDQ2OTUsIDQ3MDEsIDQ3MDYsIDQ3MTEsIDQ3MTUsIDQ3MjAsIAotICAgIDQ3MjYsIDQ3MzIsIDQ3MzUsIDQ3MzksIDQ3NDMsIDQ3NDcsIDQ3NTAsIDQ3NTMsIDQ3NTgsIDQ3NjIsIDQ3NjksIDQ3NzMsIAotICAgIDQ3NzksIDQ3ODMsIDQ3ODksIDQ3OTMsIDQ3OTcsIDQ4MDEsIDQ4MDYsIDQ4MTEsIDQ4MTgsIDQ4MjQsIDQ4MzEsIDQ4MzcsIAotICAgIDQ4NDMsIDQ4NDksIDQ4NTIsIDQ4NTYsIDQ4NjAsIDQ4NjMsIDQ4NjcsIDQ4NzIsIDQ4NzcsIDQ4ODEsIDQ4ODUsIDQ4OTEsIAotICAgIDQ4OTUsIDQ4OTksIDQ5MDQsIDQ5MTAsIDQ5MTUsIDQ5MjEsIDQ5MjUsIDQ5MzIsIDQ5MzcsIDQ5NDIsIDQ5NDcsIDQ5NTIsIAotICAgIDQ5NTgsIDQ5NjEsIDQ5NjUsIDQ5NzAsIDQ5NzUsIDQ5ODQsIDQ5OTAsIDQ5OTUsIDQ5OTksIDUwMDQsIDUwMDgsIDUwMTMsIAotICAgIDUwMTcsIDUwMjEsIDUwMjYsIDUwMjksIDUwMzUsIDUwNDAsIDUwNDUsIDUwNTAsIDUwNTUsIDUwNjAsIDUwNjUsIDUwNzEsIAotICAgIDUwNzcsIDUwODMsIDUwODgsIDUwOTMsIDUwOTksIDUxMDUsIDUxMTEsIDUxMTYsIDUxMjEsIDUxMjgsIDUxMzUsIDUxMzksIAotICAgIDUxNDUsIDUxNTIsIDAsIDAsIDUxNTksIDUxNjIsIDUxNzEsIDUxODAsIDUxOTEsIDAsIDAsIDAsIDAsIDAsIDUxOTUsIAotICAgIDUxOTgsIDUyMDMsIDUyMTEsIDUyMTYsIDUyMjQsIDUyMzIsIDAsIDUyNDAsIDAsIDUyNDgsIDUyNTYsIDUyNjQsIDUyNzUsIAotICAgIDUyODAsIDUyODUsIDUyOTAsIDUyOTUsIDUzMDAsIDUzMDUsIDUzMTAsIDUzMTUsIDUzMjAsIDUzMjUsIDUzMzAsIDUzMzUsIAotICAgIDUzNDAsIDUzNDUsIDUzNTAsIDUzNTUsIDAsIDUzNjAsIDUzNjUsIDUzNzAsIDUzNzUsIDUzODAsIDUzODUsIDUzOTAsIAotICAgIDUzOTUsIDU0MDMsIDU0MTEsIDU0MTksIDU0MjcsIDU0MzUsIDU0NDMsIDU0NTQsIDU0NTksIDU0NjQsIDU0NjksIDU0NzQsIAotICAgIDU0NzksIDU0ODQsIDU0ODksIDU0OTQsIDU0OTksIDU1MDQsIDU1MDksIDU1MTQsIDU1MTksIDU1MjQsIDU1MjksIDU1MzQsIAotICAgIDU1MzksIDU1NDUsIDU1NTAsIDU1NTUsIDU1NjAsIDU1NjUsIDU1NzAsIDU1NzUsIDU1ODAsIDU1ODgsIDU1OTYsIDU2MDQsIAotICAgIDU2MTIsIDU2MjAsIDU2MjUsIDU2MjksIDU2MzMsIDU2NDAsIDU2NTAsIDU2NjAsIDU2NjQsIDU2NjgsIDU2NzIsIDU2NzgsIAotICAgIDU2ODUsIDU2ODksIDU2OTQsIDU2OTgsIDU3MDMsIDU3MDcsIDU3MTIsIDU3MTYsIDU3MjEsIDU3MjYsIDU3MzEsIDU3MzYsIAotICAgIDU3NDEsIDU3NDYsIDU3NTEsIDU3NTYsIDU3NjEsIDU3NjYsIDU3NzEsIDU3NzYsIDU3ODEsIDU3ODYsIDU3OTEsIDU3OTUsIAotICAgIDU3OTksIDU4MDUsIDU4MDksIDU4MTQsIDU4MjAsIDU4MjgsIDU4MzMsIDU4MzgsIDU4NDUsIDU4NTAsIDU4NTUsIDU4NjIsIAotICAgIDU4NzEsIDU4ODAsIDU4OTEsIDU4OTksIDU5MDQsIDU5MDksIDU5MTQsIDU5MjEsIDU5MjYsIDU5MzIsIDU5MzcsIDU5NDIsIAotICAgIDU5NDcsIDU5NTIsIDU5NTcsIDU5NjIsIDU5NzAsIDU5NzYsIDU5ODEsIDU5ODUsIDU5OTAsIDU5OTUsIDYwMDAsIDYwMDUsIAotICAgIDYwMTAsIDYwMTUsIDYwMjAsIDYwMjQsIDYwMzAsIDYwMzQsIDYwMzksIDYwNDQsIDYwNDksIDYwNTMsIDYwNTgsIDYwNjMsIAotICAgIDYwNjgsIDYwNzMsIDYwNzcsIDYwODIsIDYwODYsIDYwOTEsIDYwOTYsIDYxMDEsIDYxMDYsIDYxMTIsIDYxMTcsIDYxMjMsIAotICAgIDYxMjcsIDYxMzIsIDYxMzYsIDYxNDAsIDYxNDUsIDYxNTAsIDYxNTUsIDYxNjAsIDYxNjUsIDYxNzAsIDYxNzUsIDYxNzksIAotICAgIDYxODUsIDYxODksIDYxOTQsIDYxOTksIDYyMDQsIDYyMDgsIDYyMTMsIDYyMTgsIDYyMjMsIDYyMjgsIDYyMzIsIDYyMzcsIAotICAgIDYyNDEsIDYyNDYsIDYyNTEsIDYyNTYsIDYyNjEsIDYyNjcsIDYyNzIsIDYyNzgsIDYyODIsIDYyODcsIDYyOTEsIDYyOTksIAotICAgIDYzMDQsIDYzMDksIDYzMTQsIDYzMjEsIDYzMjYsIDYzMzIsIDYzMzcsIDYzNDIsIDYzNDcsIDYzNTIsIDYzNTcsIDYzNjIsIAotICAgIDYzNzAsIDYzNzYsIDYzODEsIDYzODYsIDYzOTEsIDYzOTYsIDY0MDEsIDY0MDcsIDY0MTMsIDY0MjAsIDY0MjcsIDY0MzYsIAotICAgIDY0NDUsIDY0NTIsIDY0NTksIDY0NjgsIDY0NzcsIDY0ODIsIDY0ODcsIDY0OTIsIDY0OTcsIDY1MDIsIDY1MDcsIDY1MTIsIAotICAgIDY1MTcsIDY1MjgsIDY1MzksIDY1NDQsIDY1NDksIDY1NTYsIDY1NjMsIDY1NzEsIDY1NzksIDY1ODQsIDY1ODksIDY1OTQsIAotICAgIDY1OTksIDY2MDMsIDY2MDcsIDY2MTEsIDY2MTcsIDY2MjMsIDY2MjcsIDY2MzQsIDY2MzksIDY2NDksIDY2NTksIDY2NjUsIAotICAgIDY2NzEsIDY2NzksIDY2ODcsIDY2OTUsIDY3MDMsIDY3MTAsIDY3MTcsIDY3MjYsIDY3MzUsIDY3NDMsIDY3NTEsIDY3NTksIAotICAgIDY3NjcsIDY3NzUsIDY3ODMsIDY3OTEsIDY3OTksIDY4MDYsIDY4MTMsIDY4MTksIDY4MjUsIDY4MzMsIDY4NDEsIDY4NDgsIAotICAgIDY4NTUsIDY4NjQsIDY4NzMsIDY4NzksIDY4ODUsIDY4OTMsIDY5MDEsIDY5MDksIDY5MTcsIDY5MjMsIDY5MjksIDY5MzcsIAotICAgIDY5NDUsIDY5NTMsIDY5NjEsIDY5NjgsIDY5NzUsIDY5ODMsIDY5OTEsIDY5OTksIDcwMDcsIDcwMTIsIDcwMTcsIDcwMjQsIAotICAgIDcwMzEsIDcwNDEsIDcwNTEsIDcwNTUsIDcwNjMsIDcwNzEsIDcwNzgsIDcwODUsIDcwOTMsIDcxMDEsIDcxMDgsIDcxMTUsIAotICAgIDcxMjMsIDcxMzEsIDcxMzgsIDcxNDUsIDcxNTMsIDcxNjEsIDcxNjYsIDcxNzMsIDcxODAsIDcxODcsIDcxOTQsIDcyMDAsIAotICAgIDcyMDYsIDcyMTQsIDcyMjIsIDcyMjcsIDcyMzIsIDcyNDAsIDcyNDgsIDcyNTYsIDcyNjQsIDcyNzIsIDcyODAsIDcyODcsIAotICAgIDcyOTQsIDczMDIsIDczMTAsIDczMTgsIDczMjYsIDczMzMsIDczNDAsIDczNDYsIDczNTIsIDczNjEsIDczNzAsIDczNzcsIAotICAgIDczODQsIDczOTEsIDczOTgsIDc0MDUsIDc0MTIsIDc0MTksIDc0MjYsIDc0MzQsIDc0NDIsIDc0NTAsIDc0NTgsIDc0NjYsIAotICAgIDc0NzQsIDc0ODQsIDc0OTQsIDc1MDEsIDc1MDgsIDc1MTUsIDc1MjIsIDc1MjksIDc1MzYsIDc1NDMsIDc1NTAsIDc1NTcsIAotICAgIDc1NjQsIDc1NzEsIDc1NzgsIDc1ODUsIDc1OTIsIDc1OTksIDc2MDYsIDc2MTMsIDc2MjAsIDc2MjcsIDc2MzQsIDc2NDEsIAotICAgIDc2NDgsIDc2NTUsIDc2NjIsIDc2NjcsIDc2NzIsIDc2NzcsIDc2ODIsIDc2ODcsIDc2OTIsIDc2OTcsIDc3MDIsIDc3MDcsIAotICAgIDc3MTIsIDc3MTgsIDc3MjQsIDc3MzMsIDc3NDIsIDc3NTEsIDc3NjAsIDc3NjgsIDc3NzYsIDc3ODQsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDc3OTIsIDc3OTcsIDc4MDIsIDc4MDcsIDc4MTIsIDc4MTcsIDc4MjIsIDc4MjcsIDc4MzIsIAotICAgIDc4MzYsIDc4NDEsIDc4NDYsIDc4NTEsIDc4NTYsIDc4NjEsIDc4NjYsIDc4NzEsIDc4NzYsIDc4ODEsIDc4ODYsIDc4OTEsIAotICAgIDc4OTYsIDc5MDEsIDc5MDYsIDc5MTEsIDc5MTYsIDc5MjEsIDc5MjYsIDc5MzAsIDc5MzUsIDc5NDAsIDc5NDUsIDc5NTAsIAotICAgIDc5NTUsIDc5NjAsIDc5NjUsIDc5NzAsIDc5NzUsIDAsIDAsIDc5ODAsIDc5ODcsIDc5OTAsIDc5OTQsIDc5OTgsIDgwMDEsIAotICAgIDgwMDUsIDAsIDgwMDksIDgwMTQsIDgwMTksIDgwMjQsIDgwMjksIDgwMzQsIDgwMzksIDgwNDQsIDgwNDksIDgwNTMsIAotICAgIDgwNTgsIDgwNjMsIDgwNjgsIDgwNzMsIDgwNzgsIDgwODMsIDgwODgsIDgwOTMsIDgwOTgsIDgxMDMsIDgxMDgsIDgxMTMsIAotICAgIDgxMTgsIDgxMjMsIDgxMjgsIDgxMzMsIDgxMzgsIDgxNDMsIDgxNDcsIDgxNTIsIDgxNTcsIDgxNjIsIDgxNjcsIDgxNzIsIAotICAgIDgxNzcsIDgxODIsIDgxODcsIDgxOTIsIDgxOTcsIDAsIDgyMDQsIDgyMDksIDAsIDAsIDAsIDAsIDgyMTIsIDAsIDgyMTYsIAotICAgIDgyMjEsIDgyMjYsIDgyMzEsIDgyMzgsIDgyNDUsIDgyNTAsIDgyNTUsIDgyNjAsIDgyNjUsIDgyNzAsIDgyNzUsIDgyODAsIAotICAgIDgyODcsIDgyOTIsIDgyOTksIDgzMDYsIDgzMTEsIDgzMTgsIDgzMjMsIDgzMjgsIDgzMzMsIDgzNDAsIDgzNDUsIDgzNTAsIAotICAgIDgzNTcsIDgzNjYsIDgzNzEsIDgzNzYsIDgzODEsIDgzODYsIDgzOTIsIDgzOTcsIDg0MDQsIDg0MTEsIDg0MTgsIDg0MjMsIAotICAgIDg0MjgsIDg0MzMsIDg0MzgsIDg0NDMsIDg0NDgsIDg0NTgsIDg0NjMsIDg0NzEsIDg0NzYsIDg0ODEsIDg0ODYsIDg0OTEsIAotICAgIDg0OTgsIDg1MDUsIDg1MTIsIDg1MTgsIDg1MjQsIDg1MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg1MzgsIDg1NDIsIAotICAgIDg1NDYsIDg1NTAsIDg1NTQsIDg1NTgsIDg1NjIsIDg1NjYsIDg1NzAsIDg1NzQsIDg1NzgsIDg1ODMsIDg1ODcsIDg1OTEsIAotICAgIDg1OTYsIDg2MDAsIDg2MDUsIDg2MDksIDg2MTMsIDg2MTcsIDg2MjIsIDg2MjYsIDg2MzEsIDg2MzUsIDg2MzksIDg2NDMsIAotICAgIDg2NDcsIDAsIDAsIDAsIDAsIDAsIDg2NTEsIDg2NTgsIDg2NjYsIDg2NzMsIDg2NzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDg2ODMsIDg2ODYsIDg2OTAsIDg2OTUsIDg2OTksIDAsIDg3MDMsIDg3MDksIDg3MTUsIDg3MTgsIAotICAgIDg3MjUsIDg3MzQsIDg3MzcsIDg3NDAsIDg3NDUsIDg3NTEsIDg3NTUsIDg3NjMsIDg3NjksIDg3NzUsIDg3ODMsIDg3ODcsIAotICAgIDg3OTIsIDg4MDMsIDg4MDgsIDg4MTIsIDg4MTYsIDg4MjAsIDg4MjMsIDAsIDg4MjYsIDg4MzMsIDg4MzcsIDg4NDMsIAotICAgIDg4NDcsIDg4NTQsIDg4NjAsIDg4NjcsIDg4NzMsIDg4NzksIDg4ODMsIDg4ODcsIDg4OTMsIDg4OTcsIDg5MDEsIDg5MDUsIAotICAgIDg5MDksIDg5MTMsIDg5MTcsIDg5MjEsIDg5MjUsIDg5MjksIDg5MzMsIDg5MzcsIDg5NDEsIDg5NDUsIDg5NDksIDg5NTMsIAotICAgIDg5NTcsIDg5NjEsIDg5NjksIDg5NzcsIDg5ODcsIDg5OTYsIDkwMDUsIDkwMDgsIDkwMTIsIDkwMTYsIDkwMjAsIDkwMjQsIAotICAgIDkwMjgsIDkwMzIsIDkwMzYsIDkwNDAsIDkwNDUsIDkwNDksIDkwNTIsIDkwNTUsIDkwNTgsIDkwNjEsIDkwNjQsIDkwNjcsIAotICAgIDkwNzAsIDkwNzMsIDkwNzcsIDkwODAsIDkwODMsIDkwODgsIDkwOTMsIDkwOTksIDkxMDIsIDkxMDksIDkxMTgsIDkxMjMsIAotICAgIDkxMjgsIDkxMzUsIDkxNDAsIDkxNDUsIDkxNDksIDkxNTMsIDkxNTcsIDkxNjEsIDkxNjUsIDkxNjksIDkxNzMsIDkxNzcsIAotICAgIDkxODEsIDkxODUsIDkxOTAsIDkxOTUsIDkyMDIsIDkyMDgsIDkyMTQsIDkyMjAsIDkyMjUsIDkyMzMsIDkyNDEsIDkyNDYsIAotICAgIDkyNTIsIDkyNTgsIDkyNjQsIDkyNzAsIDkyNzQsIDkyNzgsIDkyODIsIDkyODksIDkyOTksIDkzMDMsIDkzMDcsIDkzMTEsIAotICAgIDkzMTcsIDkzMjUsIDkzMjksIDkzMzMsIDkzNDAsIDkzNDQsIDkzNDgsIDkzNTIsIDkzNTksIDkzNjYsIDkzNzgsIDkzODIsIAotICAgIDkzODYsIDkzOTAsIDk0MDAsIDk0MDksIDk0MTMsIDk0MjEsIDk0MjgsIDk0MzUsIDk0NDQsIDk0NTUsIDk0NjMsIDk0NjcsIAotICAgIDk0NzYsIDk0ODcsIDk0OTUsIDk1MDgsIDk1MTYsIDk1MjQsIDk1MzIsIDk1NDAsIDk1NDYsIDk1NTUsIDk1NjIsIDk1NjYsIAotICAgIDk1NzQsIDk1NzgsIDk1ODUsIDk1OTMsIDk1OTcsIDk2MDMsIDk2MTAsIDk2MTcsIDk2MjEsIDk2MjksIDk2MzMsIDk2NDAsIAotICAgIDk2NDQsIDk2NTIsIDk2NTYsIDk2NjQsIDk2NzIsIDk2NzksIDk2ODcsIDk2OTUsIDk3MDIsIDk3MDgsIDk3MTIsIDk3MTksIAotICAgIDk3MjcsIDk3MzMsIDk3NDAsIDk3NDcsIDk3NTMsIDk3NjIsIDk3NzAsIDk3NzcsIDk3ODMsIDk3ODcsIDk3OTAsIDk3OTQsIAotICAgIDk4MDAsIDk4MDgsIDk4MTIsIDk4MTgsIDk4MjQsIDk4MzEsIDk4MzgsIDk4NDEsIDk4NDgsIDk4NTMsIDk4NjEsIDk4NjYsIAotICAgIDk4NzAsIDk4ODMsIDk4OTYsIDk5MDIsIDk5MDksIDk5MTQsIDk5MjAsIDk5MjUsIDk5MzEsIDk5NDEsIDk5NDgsIDk5NTcsIAotICAgIDk5NjcsIDk5NzMsIDk5NzgsIDk5ODMsIDk5ODcsIDk5OTEsIDk5OTYsIDEwMDAxLCAxMDAwNywgMTAwMTUsIDEwMDIzLCAKLSAgICAxMDAzNCwgMTAwMzksIDEwMDQ4LCAxMDA1NywgMTAwNjQsIDEwMDcwLCAxMDA3NiwgMTAwODIsIDEwMDg4LCAxMDA5NCwgCi0gICAgMTAxMDAsIDEwMTA2LCAxMDExMiwgMTAxMTgsIDEwMTI1LCAxMDEzMiwgMTAxMzksIDEwMTQ1LCAxMDE1MywgMTAxNjIsIAotICAgIDEwMTY4LCAxMDE3NSwgMTAxODIsIDEwMTg3LCAxMDE5MiwgMTAxOTYsIDEwMjAzLCAxMDIxMCwgMTAyMTksIDEwMjI4LCAKLSAgICAxMDIzMSwgMTAyMzYsIDEwMjQxLCAwLCAxMDI0NiwgMTAyNTAsIDEwMjU0LCAxMDI2MCwgMTAyNjQsIDEwMjY4LCAxMDI3NCwgCi0gICAgMTAyNzgsIDEwMjg2LCAxMDI5MCwgMTAyOTQsIDEwMjk4LCAxMDMwMiwgMTAzMDYsIDEwMzEyLCAxMDMxNiwgMTAzMjIsIAotICAgIDEwMzI2LCAxMDMzMCwgMTAzMzQsIDEwMzM4LCAxMDM0MiwgMTAzNDcsIDEwMzUwLCAxMDM1NCwgMTAzNjAsIDEwMzY0LCAKLSAgICAxMDM2OCwgMTAzNzIsIDEwMzc2LCAxMDM4MCwgMTAzODYsIDEwMzkyLCAxMDM5OCwgMTA0MDIsIDEwNDA2LCAxMDQxMSwgCi0gICAgMTA0MTUsIDEwNDE5LCAxMDQyNCwgMTA0MjgsIDEwNDMyLCAxMDQzOSwgMTA0NDYsIDEwNDUwLCAxMDQ1NCwgMTA0NTksIAotICAgIDEwNDYzLCAxMDQ2NywgMTA0NzAsIDEwNDc1LCAxMDQ3OCwgMTA0ODEsIDEwNDg2LCAxMDQ5MSwgMTA0OTUsIDEwNDk5LCAKLSAgICAxMDUwNSwgMTA1MTEsIDEwNTE0LCAwLCAwLCAxMDUxNywgMTA1MjMsIDEwNTI5LCAxMDUzNSwgMTA1NDUsIDEwNTU3LCAKLSAgICAxMDU2OSwgMTA1ODYsIDEwNTk4LCAxMDYwOSwgMTA2MTcsIDEwNjI0LCAxMDYzNSwgMTA2NTAsIDEwNjYxLCAxMDY2NywgCi0gICAgMTA2NzYsIDEwNjg0LCAxMDY5NiwgMTA3MDYsIDEwNzE0LCAxMDcyNiwgMTA3MzMsIDEwNzQxLCAxMDc1MywgMTA3NTksIAotICAgIDEwNzY1LCAxMDc3MywgMTA3ODEsIDEwNzg5LCAxMDc5NSwgMTA4MDUsIDEwODEyLCAxMDgyMiwgMTA4MzIsIDEwODQ1LCAKLSAgICAxMDg1OSwgMTA4NzMsIDEwODgzLCAxMDg5NCwgMTA5MDUsIDEwOTE4LCAxMDkzMSwgMTA5NDUsIDEwOTU3LCAxMDk2OSwgCi0gICAgMTA5ODIsIDEwOTk1LCAxMTAwNywgMTEwMjAsIDExMDI5LCAxMTAzNywgMTEwNDIsIDExMDQ3LCAxMTA1MiwgMTEwNTcsIAotICAgIDExMDYyLCAxMTA2NywgMTEwNzIsIDExMDc3LCAxMTA4MiwgMTEwODcsIDExMDkyLCAxMTA5NywgMTExMDIsIDExMTA3LCAKLSAgICAxMTExMiwgMTExMTcsIDExMTIyLCAxMTEyNywgMTExMzIsIDExMTM3LCAxMTE0MiwgMTExNDcsIDExMTUyLCAxMTE1NywgCi0gICAgMTExNjIsIDExMTY3LCAxMTE3MiwgMTExNzcsIDExMTgyLCAxMTE4NywgMTExOTIsIDExMTk3LCAxMTIwMSwgMTEyMDYsIAotICAgIDExMjExLCAxMTIxNiwgMTEyMjEsIDExMjI2LCAxMTIzMCwgMTEyMzQsIDExMjM4LCAxMTI0MiwgMTEyNDYsIDExMjUwLCAKLSAgICAxMTI1NCwgMTEyNTgsIDExMjYyLCAxMTI2NiwgMTEyNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDExMjc1LCAxMTI4MCwgMTEyODQsIDExMjg4LCAxMTI5MiwgMTEyOTYsIDExMzAwLCAxMTMwNCwgMTEzMDgsIDExMzEyLCAKLSAgICAxMTMxNiwgMTEzMjAsIDExMzI1LCAxMTMyOSwgMTEzMzMsIDExMzM3LCAxMTM0MiwgMTEzNDYsIDExMzUxLCAxMTM1NiwgCi0gICAgMTEzNjEsIDExMzY1LCAxMTM3MCwgMTEzNzUsIDExMzgwLCAxMTM4NSwgMTEzODksIDExMzk0LCAxMTM5OCwgMTE0MDMsIAotICAgIDExNDA4LCAxMTQxMiwgMTE0MTcsIDExNDI0LCAxMTQyOCwgMTE0MzMsIDExNDM3LCAxMTQ0MSwgMTE0NDYsIDExNDUwLCAKLSAgICAxMTQ1NywgMTE0NjQsIDExNDcxLCAxMTQ3NywgMTE0ODUsIDExNDkzLCAxMTUwMiwgMTE1MTAsIDExNTE3LCAxMTUyNCwgCi0gICAgMTE1MzIsIDExNTM4LCAxMTU0NCwgMTE1NTAsIDExNTU2LCAxMTU2MywgMTE1NjgsIDExNTcyLCAxMTU3NywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTE1ODEsIDExNTg2LCAxMTU5MSwgMTE1OTYsIDExNjAxLCAxMTYwNiwgMTE2MTEsIDExNjE2LCAxMTYyMSwgCi0gICAgMTE2MjYsIDExNjMxLCAxMTYzNiwgMTE2NDEsIDExNjQ2LCAxMTY1MSwgMTE2NTYsIDExNjYxLCAxMTY2NiwgMTE2NzEsIAotICAgIDExNjc2LCAxMTY4MSwgMTE2ODYsIDExNjkxLCAxMTY5NiwgMTE3MDEsIDExNzA2LCAxMTcxMSwgMTE3MTksIDExNzI2LCAKLSAgICAxMTczMiwgMTE3MzcsIDExNzQ1LCAxMTc1MiwgMTE3NTgsIDExNzY1LCAxMTc3MSwgMTE3NzYsIDExNzgzLCAxMTc5MCwgCi0gICAgMTE3OTYsIDExODAxLCAxMTgwNiwgMTE4MTIsIDExODE3LCAxMTgyMiwgMTE4MjgsIDAsIDAsIDExODMzLCAxMTgzOSwgCi0gICAgMTE4NDUsIDExODUxLCAxMTg1NywgMTE4NjMsIDExODY5LCAxMTg3NCwgMTE4ODIsIDExODg4LCAxMTg5NCwgMTE5MDAsIAotICAgIDExOTA2LCAxMTkxMiwgMTE5MjAsIDAsIDExOTI2LCAxMTkzMSwgMTE5MzYsIDExOTQxLCAxMTk0NiwgMTE5NTEsIDExOTU2LCAKLSAgICAxMTk2MSwgMTE5NjYsIDExOTcxLCAxMTk3NiwgMTE5ODEsIDExOTg2LCAxMTk5MSwgMTE5OTYsIDEyMDAxLCAxMjAwNiwgCi0gICAgMTIwMTEsIDEyMDE2LCAxMjAyMSwgMTIwMjYsIDEyMDMxLCAxMjAzNiwgMTIwNDEsIDEyMDQ2LCAxMjA1MSwgMTIwNTYsIAotICAgIDEyMDYxLCAwLCAwLCAxMjA2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzMsIDM1LCAzOSwgNDEsIDQ0LCA0NiwgNDgsIDUwLCA1MiwgNTQsIDU2LCA1OSwgNjEsIDY0LCA2NiwgNjgsIDcxLCA3NCwgCisgICAgNzcsIDgwLCA4NCwgODgsIDkzLCA5OCwgMTAzLCAxMDcsIDExMiwgMTE3LCAxMjIsIDEyNiwgMTMxLCAxMzYsIDE0MCwgMTQ1LCAKKyAgICAxNTAsIDE1NCwgMTU5LCAxNjQsIDE2OCwgMTcyLCAxNzcsIDE4MSwgMTg2LCAxOTEsIDE5NiwgMjAxLCAyMDYsIDIwOSwgCisgICAgMjEzLCAyMTYsIDIyMCwgMjIzLCAyMjcsIDIzMSwgMjM2LCAyNDEsIDI0NiwgMjUwLCAyNTUsIDI2MCwgMjY1LCAyNjksIAorICAgIDI3NCwgMjc5LCAyODMsIDI4OCwgMjkzLCAyOTcsIDMwMiwgMzA3LCAzMTEsIDMxNSwgMzIwLCAzMjQsIDMyOSwgMzM0LCAKKyAgICAzMzksIDM0NCwgMzQ5LCAzNTMsIDM1NiwgMzYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjIsIDM2NiwgMzcxLCAKKyAgICAzNzQsIDM3NywgMzgwLCAzODMsIDM4NiwgMzg5LCAzOTEsIDM5NCwgNDAwLCA0MDgsIDQxMSwgNDE1LCA0MTgsIDQyMCwgCisgICAgNDIzLCA0MjYsIDQyOSwgNDMyLCA0MzYsIDQzOSwgNDQyLCA0NDUsIDQ0NywgNDUwLCA0NTYsIDQ2NCwgNDcxLCA0NzgsIAorICAgIDQ4NSwgNDkwLCA0OTcsIDUwMywgNTEwLCA1MTcsIDUyNCwgNTMyLCA1MzcsIDU0NSwgNTUyLCA1NTgsIDU2NSwgNTcyLCAKKyAgICA1ODAsIDU4NywgNTk1LCA2MDMsIDYwOCwgNjE2LCA2MjMsIDYyOSwgNjM2LCA2NDMsIDY1MCwgNjUzLCA2NTksIDY2NiwgCisgICAgNjcyLCA2NzksIDY4NiwgNjkzLCA2OTgsIDcwNCwgNzExLCA3MTcsIDcyNCwgNzMxLCA3MzgsIDc0NiwgNzUxLCA3NTksIAorICAgIDc2NiwgNzcyLCA3NzksIDc4NiwgNzk0LCA4MDEsIDgwOSwgODE3LCA4MjIsIDgzMCwgODM3LCA4NDMsIDg1MCwgODU3LCAKKyAgICA4NjQsIDg2NywgODczLCA4ODAsIDg4NiwgODkzLCA5MDAsIDkwNywgOTEyLCA5MjAsIDkyNywgOTM0LCA5NDEsIDk0OCwgCisgICAgOTU1LCA5NjIsIDk2OSwgOTc2LCA5ODQsIDk5MiwgMTAwMCwgMTAwOCwgMTAxNiwgMTAyNCwgMTAzMiwgMTA0MCwgMTA0NywgCisgICAgMTA1NCwgMTA2MSwgMTA2OCwgMTA3NSwgMTA4MiwgMTA4OSwgMTA5NiwgMTEwMywgMTExMCwgMTExNywgMTEyNCwgMTEzMiwgCisgICAgMTE0MCwgMTE0OCwgMTE1NiwgMTE2NCwgMTE3MiwgMTE4MCwgMTE4OCwgMTE5NiwgMTIwNCwgMTIxMSwgMTIxOCwgMTIyNiwgCisgICAgMTIzNCwgMTI0MiwgMTI1MCwgMTI1OCwgMTI2NiwgMTI3NCwgMTI4MiwgMTI5MCwgMTI5NiwgMTMwMSwgMTMwNiwgMTMxNCwgCisgICAgMTMyMiwgMTMzMCwgMTMzOCwgMTM0MywgMTM1MCwgMTM1NywgMTM2NSwgMTM3MywgMTM4MSwgMTM4OSwgMTM5OCwgMTQwNywgCisgICAgMTQxNCwgMTQyMSwgMTQyOCwgMTQzNSwgMTQ0MywgMTQ1MSwgMTQ1OSwgMTQ2NywgMTQ3OCwgMTQ4MywgMTQ4OCwgMTQ5NSwgCisgICAgMTUwMiwgMTUwOSwgMTUxNiwgMTUyMywgMTUzMCwgMTUzNSwgMTU0MCwgMTU0NywgMTU1NCwgMTU2MiwgMTU3MCwgMTU3OCwgCisgICAgMTU4NiwgMTU5MywgMTYwMCwgMTYwOCwgMTYxNiwgMTYyNCwgMTYzMiwgMTY0MCwgMTY0OCwgMTY1NiwgMTY2NCwgMTY3MiwgCisgICAgMTY4MCwgMTY4NywgMTY5NCwgMTcwMSwgMTcwOCwgMTcxNSwgMTcyMiwgMTcyOSwgMTczNiwgMTc0NCwgMTc1MiwgMTc1OSwgCisgICAgMTc2NiwgMTc3MywgMTc4MCwgMTc4OCwgMTc5NiwgMTgwNCwgMTgxMiwgMTgyMCwgMTgyNywgMTgzNCwgMTg0MiwgMTg1MCwgCisgICAgMTg1OCwgMTg2NiwgMTg3MSwgMTg3NywgMTg4MywgMTg5MCwgMTg5NywgMTkwMiwgMTkwNywgMTkxMiwgMTkxOSwgMTkyNiwgCisgICAgMTkzMywgMTk0MCwgMTk0OCwgMTk1NiwgMTk2MywgMTk2OSwgMTk3NCwgMTk3OSwgMTk4NiwgMTk5MywgMjAwMCwgMjAwNSwgCisgICAgMjAxMCwgMjAxNSwgMjAyMiwgMjAyOSwgMjAzNiwgMjA0MywgMjA1MCwgMjA1NywgMjA2NSwgMjA3NSwgMjA4MywgMjA5MCwgCisgICAgMjA5NywgMjEwMiwgMjEwNywgMjExNCwgMjEyMSwgMjEyNSwgMjEzMCwgMjEzNSwgMjE0MCwgMjE0OCwgMjE1NywgMjE2NCwgCisgICAgMjE3MSwgMjE4MCwgMjE4NywgMjE5NCwgMjE5OSwgMjIwNiwgMjIxMywgMjIyMCwgMjIyNywgMjIzNCwgMjIzOSwgMjI0NiwgCisgICAgMjI1MywgMjI2MSwgMjI2NiwgMjI3MSwgMjI3NiwgMjI4NiwgMjI5MCwgMjI5NiwgMjMwMiwgMjMwOCwgMjMxNCwgMjMyMiwgCisgICAgMjMzNSwgMjM0MywgMjM0OCwgMjM1OCwgMjM2MywgMjM2OCwgMjM3OCwgMjM4MywgMjM5MCwgMjM5NywgMjQwNSwgMjQxMywgCisgICAgMjQyMCwgMjQyNywgMjQzNCwgMjQ0MSwgMjQ1MSwgMjQ2MSwgMjQ3MCwgMjQ3OSwgMjQ4OSwgMjQ5OSwgMjUwOSwgMjUxOSwgCisgICAgMjUyNSwgMjUzNSwgMjU0NSwgMjU1NSwgMjU2NSwgMjU3MywgMjU4MSwgMjU4OCwgMjU5NSwgMjYwMywgMjYxMSwgMjYxOSwgCisgICAgMjYyNywgMjYzNCwgMjY0MSwgMjY1MSwgMjY2MSwgMjY2OSwgMjY3NywgMjY4NSwgMjY5MCwgMjcwMCwgMjcwNSwgMjcxMiwgCisgICAgMjcxOSwgMjcyNCwgMjcyOSwgMjczNywgMjc0NSwgMjc1NSwgMjc2NSwgMjc3MiwgMjc3OSwgMjc4OCwgMjc5NywgMjgwNSwgCisgICAgMjgxMywgMjgyMiwgMjgzMSwgMjgzOSwgMjg0NywgMjg1NiwgMjg2NSwgMjg3NCwgMjg4MywgMjg5MywgMjkwMywgMjkxMSwgCisgICAgMjkxOSwgMjkyOCwgMjkzNywgMjk0NiwgMjk1NSwgMjk2NSwgMjk3NSwgMjk4MywgMjk5MSwgMzAwMCwgMzAwOSwgMzAxOCwgCisgICAgMzAyNywgMzAzNiwgMzA0NSwgMzA1MCwgMzA1NSwgMzA2MywgMzA3MSwgMzA4MSwgMzA4OSwgMzA5NCwgMzA5OSwgMzEwNiwgCisgICAgMzExMywgMzEyMCwgMzEyNywgMzEzNCwgMzE0MSwgMzE1MSwgMzE2MSwgMzE3MSwgMzE4MSwgMzE4OCwgMzE5NSwgMzIwNSwgCisgICAgMzIxNSwgMzIyMywgMzIzMSwgMzIzOSwgMzI0NywgMzI1NSwgMzI2MiwgMzI2OSwgMzI3NiwgMzI4MiwgMzI4OSwgMzI5NiwgCisgICAgMzMwMywgMzMxMiwgMzMyMiwgMzMzMiwgMzMzOSwgMzM0NiwgMzM1MiwgMzM1NywgMzM2NCwgMzM3MCwgMzM3NiwgMzM4MywgCisgICAgMzM5MCwgMzQwMSwgMzQxMSwgMzQxOCwgMzQyNSwgMzQzMiwgMzQzOSwgMzQ0NSwgMzQ1MCwgMzQ1NywgMzQ2MywgMzQ2OCwgCisgICAgMzQ3NiwgMzQ4NCwgMzQ5MSwgMzQ5NywgMzUwMiwgMzUwOSwgMzUxNCwgMzUyMSwgMzUzMCwgMzUzOSwgMzU0OCwgMzU1NSwgCisgICAgMzU2MSwgMzU2NywgMzU3MiwgMzU3OSwgMzU4NiwgMzU5MywgMzYwMCwgMzYwNywgMzYxMiwgMzYxNywgMzYyNiwgMzYzNCwgCisgICAgMzY0MywgMzY0OCwgMzY1NSwgMzY2NiwgMzY3MywgMzY4MSwgMzY5MCwgMzY5NiwgMzcwMiwgMzcwOCwgMzcxNSwgMzcyMCwgCisgICAgMzcyNiwgMzczNywgMzc0NiwgMzc1NSwgMzc2MywgMzc3MSwgMzc4MSwgMzc4NiwgMzc5MywgMzgwMCwgMzgwNSwgMzgxNywgCisgICAgMzgyNiwgMzgzNCwgMzg0MSwgMzg1MCwgMzg1NSwgMzg2MCwgMzg2NywgMzg3NCwgMzg4MSwgMzg4OCwgMzg5NCwgMzkwMywgCisgICAgMzkxMSwgMzkxNiwgMzkyNCwgMzkzMCwgMzkzOCwgMzk0NiwgMzk1MiwgMzk1OCwgMzk2NCwgMzk3MSwgMzk3OSwgMzk4NSwgCisgICAgMzk5MywgNDAwMCwgNDAwNSwgNDAxMiwgNDAyMCwgNDAzMCwgNDAzNywgNDA0NCwgNDA1NCwgNDA2MSwgNDA2OCwgNDA3OCwgCisgICAgNDA4NSwgNDA5MiwgNDA5OSwgNDEwNSwgNDExMSwgNDEyMSwgNDEzNCwgNDEzOSwgNDE0NiwgNDE1MSwgNDE1NSwgNDE2MSwgCisgICAgNDE3MCwgNDE3NywgNDE4MiwgNDE4NywgNDE5MSwgNDE5NiwgNDIwMiwgNDIwNiwgNDIxMiwgNDIxOCwgNDIyNCwgNDIzMCwgCisgICAgNDIzOCwgNDI0MywgNDI0OCwgNDI1MywgNDI1OCwgNDI2NCwgNDI2NiwgNDI3MSwgNDI3NSwgNDI4MSwgNDI4NywgNDI5MywgCisgICAgNDI5OCwgNDMwNSwgNDMxMiwgNDMxOCwgNDMyNSwgNDMzMywgNDM0MSwgNDM0NiwgNDM1MSwgNDM1NSwgNDM2MCwgNDM2MiwgCisgICAgNDM2NCwgNDM2NywgNDM2OSwgNDM3MiwgNDM3NywgNDM4MiwgNDM4OCwgNDM5MywgNDM5NywgNDQwMSwgNDQwNiwgNDQxNSwgCisgICAgNDQyMSwgNDQyNiwgNDQzMiwgNDQzNywgNDQ0MywgNDQ1MSwgNDQ1OSwgNDQ2MywgNDQ2NywgNDQ3MiwgNDQ3OCwgNDQ4NCwgCisgICAgNDQ5MCwgNDQ5NiwgNDUwMSwgNDUwOCwgNDUxNiwgNDUyNCwgNDUyOSwgNDUzNSwgNDU0MiwgNDU0OSwgNDU1NiwgNDU2MywgCisgICAgNDU2NywgNDU3MiwgNDU3NywgNDU4MiwgNDU4NywgNDU5MiwgNDU5NSwgNDU5OCwgNDYwMSwgNDYwNCwgNDYwNywgNDYxMCwgCisgICAgNDYxNCwgNDYxOCwgNDYyNCwgNDYyNywgNDYzMiwgNDYzOCwgNDY0NCwgNDY0NywgNDY1MiwgNDY1OCwgNDY2MiwgNDY2OCwgCisgICAgNDY3NCwgNDY4MCwgNDY4NiwgNDY5MSwgNDY5NiwgNDcwMSwgNDcwNCwgNDcxMCwgNDcxNSwgNDcyMCwgNDcyNCwgNDcyOSwgCisgICAgNDczNSwgNDc0MSwgNDc0NCwgNDc0OCwgNDc1MiwgNDc1NiwgNDc1OSwgNDc2MiwgNDc2NywgNDc3MSwgNDc3OCwgNDc4MiwgCisgICAgNDc4OCwgNDc5MiwgNDc5OCwgNDgwMiwgNDgwNiwgNDgxMCwgNDgxNSwgNDgyMCwgNDgyNywgNDgzMywgNDg0MCwgNDg0NiwgCisgICAgNDg1MiwgNDg1OCwgNDg2MSwgNDg2NSwgNDg2OSwgNDg3MywgNDg3NywgNDg4MiwgNDg4NywgNDg5MSwgNDg5NSwgNDkwMSwgCisgICAgNDkwNSwgNDkwOSwgNDkxNCwgNDkyMCwgNDkyNSwgNDkzMSwgNDkzNSwgNDk0MiwgNDk0NywgNDk1MSwgNDk1NiwgNDk2MSwgCisgICAgNDk2NywgNDk3MCwgNDk3NCwgNDk3OSwgNDk4NCwgNDk5MywgNDk5OSwgNTAwNCwgNTAwOCwgNTAxMywgNTAxNywgNTAyMiwgCisgICAgNTAyNiwgNTAzMCwgNTAzNSwgNTAzOSwgNTA0NSwgNTA1MCwgNTA1NSwgNTA2MCwgNTA2NSwgNTA3MCwgNTA3NSwgNTA4MSwgCisgICAgNTA4NywgNTA5MywgNTA5OSwgNTEwNCwgNTExMCwgNTExNiwgNTEyMiwgNTEyNywgNTEzMiwgNTEzOSwgNTE0NiwgNTE1MCwgCisgICAgNTE1NiwgNTE2MywgMCwgMCwgNTE3MCwgNTE3MywgNTE4MiwgNTE5MSwgNTIwMiwgNTIwNiwgMCwgMCwgMCwgMCwgNTIxMSwgCisgICAgNTIxNCwgNTIxOSwgNTIyNywgNTIzMiwgNTI0MCwgNTI0OCwgMCwgNTI1NiwgMCwgNTI2NCwgNTI3MiwgNTI4MCwgNTI5MSwgCisgICAgNTI5NiwgNTMwMSwgNTMwNiwgNTMxMSwgNTMxNiwgNTMyMSwgNTMyNiwgNTMzMSwgNTMzNiwgNTM0MSwgNTM0NiwgNTM1MSwgCisgICAgNTM1NiwgNTM2MSwgNTM2NiwgNTM3MSwgMCwgNTM3NiwgNTM4MSwgNTM4NiwgNTM5MSwgNTM5NiwgNTQwMSwgNTQwNiwgCisgICAgNTQxMSwgNTQxOSwgNTQyNywgNTQzNSwgNTQ0MywgNTQ1MSwgNTQ1OSwgNTQ3MCwgNTQ3NSwgNTQ4MCwgNTQ4NSwgNTQ5MCwgCisgICAgNTQ5NSwgNTUwMCwgNTUwNSwgNTUxMCwgNTUxNSwgNTUyMCwgNTUyNSwgNTUzMCwgNTUzNSwgNTU0MCwgNTU0NSwgNTU1MCwgCisgICAgNTU1NSwgNTU2MSwgNTU2NiwgNTU3MSwgNTU3NiwgNTU4MSwgNTU4NiwgNTU5MSwgNTU5NiwgNTYwNCwgNTYxMiwgNTYyMCwgCisgICAgNTYyOCwgNTYzNiwgNTY0MSwgNTY0NSwgNTY0OSwgNTY1NiwgNTY2NiwgNTY3NiwgNTY4MCwgNTY4NCwgNTY4OCwgNTY5NCwgCisgICAgNTcwMSwgNTcwNSwgNTcxMCwgNTcxNCwgNTcxOSwgNTcyMywgNTcyOCwgNTczMiwgNTczNywgNTc0MiwgNTc0NywgNTc1MiwgCisgICAgNTc1NywgNTc2MiwgNTc2NywgNTc3MiwgNTc3NywgNTc4MiwgNTc4NywgNTc5MiwgNTc5NywgNTgwMiwgNTgwNywgNTgxMSwgCisgICAgNTgxNSwgNTgyMSwgNTgyNSwgNTgzMCwgNTgzNiwgNTg0NCwgNTg0OSwgNTg1NCwgNTg2MSwgNTg2NiwgNTg3MSwgNTg3OCwgCisgICAgNTg4NywgNTg5NiwgNTkwNywgNTkxNSwgNTkyMCwgNTkyNSwgNTkzMCwgNTkzNywgNTk0MiwgNTk0OCwgNTk1MywgNTk1OCwgCisgICAgNTk2MywgNTk2OCwgNTk3MywgNTk3OCwgNTk4NiwgNTk5MiwgNTk5NywgNjAwMSwgNjAwNiwgNjAxMSwgNjAxNiwgNjAyMSwgCisgICAgNjAyNiwgNjAzMSwgNjAzNiwgNjA0MCwgNjA0NiwgNjA1MCwgNjA1NSwgNjA2MCwgNjA2NSwgNjA2OSwgNjA3NCwgNjA3OSwgCisgICAgNjA4NCwgNjA4OSwgNjA5MywgNjA5OCwgNjEwMiwgNjEwNywgNjExMiwgNjExNywgNjEyMiwgNjEyOCwgNjEzMywgNjEzOSwgCisgICAgNjE0MywgNjE0OCwgNjE1MiwgNjE1NiwgNjE2MSwgNjE2NiwgNjE3MSwgNjE3NiwgNjE4MSwgNjE4NiwgNjE5MSwgNjE5NSwgCisgICAgNjIwMSwgNjIwNSwgNjIxMCwgNjIxNSwgNjIyMCwgNjIyNCwgNjIyOSwgNjIzNCwgNjIzOSwgNjI0NCwgNjI0OCwgNjI1MywgCisgICAgNjI1NywgNjI2MiwgNjI2NywgNjI3MiwgNjI3NywgNjI4MywgNjI4OCwgNjI5NCwgNjI5OCwgNjMwMywgNjMwNywgNjMxNSwgCisgICAgNjMyMCwgNjMyNSwgNjMzMCwgNjMzNywgNjM0MiwgNjM0OCwgNjM1MywgNjM1OCwgNjM2MywgNjM2OCwgNjM3MywgNjM3OCwgCisgICAgNjM4NiwgNjM5MiwgNjM5NywgNjQwMiwgNjQwNywgNjQxMiwgNjQxNywgNjQyMywgNjQyOSwgNjQzNiwgNjQ0MywgNjQ1MiwgCisgICAgNjQ2MSwgNjQ2OCwgNjQ3NSwgNjQ4NCwgNjQ5MywgNjQ5OCwgNjUwMywgNjUwOCwgNjUxMywgNjUxOCwgNjUyMywgNjUyOCwgCisgICAgNjUzMywgNjU0NCwgNjU1NSwgNjU2MCwgNjU2NSwgNjU3MiwgNjU3OSwgNjU4NywgNjU5NSwgNjYwMCwgNjYwNSwgNjYxMCwgCisgICAgNjYxNSwgNjYxOSwgNjYyMywgNjYyNywgNjYzMywgNjYzOSwgNjY0MywgNjY1MCwgNjY1NSwgNjY2NSwgNjY3NSwgNjY4MSwgCisgICAgNjY4NywgNjY5NSwgNjcwMywgNjcxMSwgNjcxOSwgNjcyNiwgNjczMywgNjc0MSwgNjc0OSwgNjc1NywgNjc2NSwgNjc3MywgCisgICAgNjc4MSwgNjc4OSwgNjc5NywgNjgwNSwgNjgxMywgNjgyMCwgNjgyNywgNjgzMywgNjgzOSwgNjg0NywgNjg1NSwgNjg2MiwgCisgICAgNjg2OSwgNjg3NywgNjg4NSwgNjg5MSwgNjg5NywgNjkwNSwgNjkxMywgNjkyMSwgNjkyOSwgNjkzNSwgNjk0MSwgNjk0OSwgCisgICAgNjk1NywgNjk2NSwgNjk3MywgNjk4MCwgNjk4NywgNjk5NSwgNzAwMywgNzAxMSwgNzAxOSwgNzAyNCwgNzAyOSwgNzAzNiwgCisgICAgNzA0MywgNzA1MywgNzA2MywgNzA2NywgNzA3NSwgNzA4MywgNzA5MCwgNzA5NywgNzEwNSwgNzExMywgNzEyMCwgNzEyNywgCisgICAgNzEzNSwgNzE0MywgNzE1MCwgNzE1NywgNzE2NSwgNzE3MywgNzE3OCwgNzE4NSwgNzE5MiwgNzE5OSwgNzIwNiwgNzIxMiwgCisgICAgNzIxOCwgNzIyNiwgNzIzNCwgNzIzOSwgNzI0NCwgNzI1MiwgNzI2MCwgNzI2OCwgNzI3NiwgNzI4NCwgNzI5MiwgNzI5OSwgCisgICAgNzMwNiwgNzMxNCwgNzMyMiwgNzMzMCwgNzMzOCwgNzM0NSwgNzM1MiwgNzM1OCwgNzM2NCwgNzM3MywgNzM4MiwgNzM4OSwgCisgICAgNzM5NiwgNzQwMywgNzQxMCwgNzQxNywgNzQyNCwgNzQzMSwgNzQzOCwgNzQ0NiwgNzQ1NCwgNzQ2MiwgNzQ3MCwgNzQ3OCwgCisgICAgNzQ4NiwgNzQ5NiwgNzUwNiwgNzUxMywgNzUyMCwgNzUyNywgNzUzNCwgNzU0MSwgNzU0OCwgNzU1NSwgNzU2MiwgNzU2OSwgCisgICAgNzU3NiwgNzU4MywgNzU5MCwgNzU5NywgNzYwNCwgNzYxMSwgNzYxOCwgNzYyNSwgNzYzMiwgNzYzOSwgNzY0NiwgNzY1MywgCisgICAgNzY2MCwgNzY2NywgNzY3NCwgNzY3OSwgNzY4NCwgNzY4OSwgNzY5NCwgNzY5OSwgNzcwNCwgNzcwOSwgNzcxNCwgNzcxOSwgCisgICAgNzcyNCwgNzczMCwgNzczNiwgNzc0NCwgNzc1MiwgNzc2MCwgNzc2OCwgNzc3NiwgNzc4NCwgNzc5MiwgNzgwMCwgNzgwOCwgCisgICAgNzgxNiwgNzgyMSwgNzgyNiwgNzgzMSwgNzgzNiwgNzg0NCwgMCwgNzg1MiwgNzg1NywgNzg2MiwgNzg2NywgNzg3MiwgCisgICAgNzg3NywgNzg4MiwgNzg4NywgNzg5MiwgNzg5NiwgNzkwMSwgNzkwNiwgNzkxMSwgNzkxNiwgNzkyMSwgNzkyNiwgNzkzMSwgCisgICAgNzkzNiwgNzk0MSwgNzk0NiwgNzk1MSwgNzk1NiwgNzk2MSwgNzk2NiwgNzk3MSwgNzk3NiwgNzk4MSwgNzk4NiwgNzk5MSwgCisgICAgNzk5NiwgODAwMSwgODAwNiwgODAxMSwgODAxNiwgODAyMSwgODAyNiwgODAzMSwgODAzNiwgMCwgMCwgODA0MSwgODA0OCwgCisgICAgODA1MSwgODA1NSwgODA1OSwgODA2MiwgODA2NiwgMCwgODA3MCwgODA3NSwgODA4MCwgODA4NSwgODA5MCwgODA5NSwgCisgICAgODEwMCwgODEwNSwgODExMCwgODExNCwgODExOSwgODEyNCwgODEyOSwgODEzNCwgODEzOSwgODE0NCwgODE0OSwgODE1NCwgCisgICAgODE1OSwgODE2NCwgODE2OSwgODE3NCwgODE3OSwgODE4NCwgODE4OSwgODE5NCwgODE5OSwgODIwNCwgODIwOSwgODIxNCwgCisgICAgODIxOSwgODIyNCwgODIyOSwgODIzNCwgODIzOSwgODI0NCwgODI0OSwgODI1NCwgODI1OSwgMCwgODI2NiwgODI3MSwgMCwgCisgICAgMCwgODI3NCwgODI4MCwgODI4NiwgMCwgODI5MCwgODI5NSwgODMwMCwgODMwNSwgODMxMiwgODMxOSwgODMyNCwgODMyOSwgCisgICAgODMzNCwgODMzOSwgODM0NCwgODM0OSwgODM1NCwgODM2MSwgODM2NiwgODM3MywgODM4MCwgODM4NSwgODM5MiwgODM5NywgCisgICAgODQwMiwgODQwNywgODQxNCwgODQxOSwgODQyNCwgODQzMSwgODQ0MCwgODQ0NSwgODQ1MCwgODQ1NSwgODQ2MCwgODQ2NiwgCisgICAgODQ3MSwgODQ3OCwgODQ4NSwgODQ5MiwgODQ5NywgODUwMiwgODUwNywgODUxMiwgODUxNywgODUyMiwgODUzMiwgODUzNywgCisgICAgODU0NiwgODU1MSwgODU1NiwgODU2MSwgODU2NiwgODU3MywgODU4MCwgODU4NywgODU5MywgODU5OSwgODYwNiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgODYxMywgODYxNywgODYyMSwgODYyNSwgODYyOSwgODYzMywgODYzNywgODY0MSwgODY0NSwgCisgICAgODY0OSwgODY1MywgODY1OCwgODY2MiwgODY2NiwgODY3MSwgODY3NSwgODY4MCwgODY4NCwgODY4OCwgODY5MiwgODY5NywgCisgICAgODcwMSwgODcwNiwgODcxMCwgODcxNCwgODcxOCwgODcyMiwgMCwgMCwgMCwgMCwgMCwgODcyNiwgODczMywgODc0MSwgCisgICAgODc0OCwgODc1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODc1OCwgODc2MSwgODc2NSwgODc3MCwgCisgICAgODc3NCwgODc3OCwgODc4MiwgODc4OCwgODc5NCwgODc5NywgODgwNCwgODgxMywgODgxNiwgODgxOSwgODgyNCwgODgzMCwgCisgICAgODgzNCwgODg0MiwgODg0OCwgODg1NCwgODg2MiwgODg2NiwgODg3MSwgODg4MiwgODg4NywgODg5MSwgODg5NSwgODg5OSwgCisgICAgODkwMiwgMCwgODkwNSwgODkxMiwgODkxNiwgODkyMiwgODkyNiwgODkzMywgODk0MCwgODk0OCwgODk1NSwgODk2MiwgCisgICAgODk2NiwgODk3MCwgODk3NiwgODk4MCwgODk4NCwgODk4OCwgODk5MiwgODk5NiwgOTAwMCwgOTAwNCwgOTAwOCwgOTAxMiwgCisgICAgOTAxNiwgOTAyMCwgOTAyNCwgOTAyOCwgOTAzMiwgOTAzNiwgOTA0MCwgOTA0NCwgOTA1MiwgOTA2MCwgOTA3MCwgOTA3OSwgCisgICAgOTA4OCwgOTA5MSwgOTA5NSwgOTA5OSwgOTEwMywgOTEwNywgOTExMSwgOTExNSwgOTExOSwgOTEyMywgOTEyOCwgOTEzMiwgCisgICAgOTEzNSwgOTEzOCwgOTE0MSwgOTE0NCwgOTE0NywgOTE1MCwgOTE1MywgOTE1NiwgOTE2MCwgOTE2NCwgOTE2OCwgOTE3MywgCisgICAgOTE3OCwgOTE4NCwgOTE4NywgOTE5NCwgOTIwMywgOTIwOCwgOTIxMywgOTIyMCwgOTIyNiwgOTIzMSwgOTIzNSwgOTIzOSwgCisgICAgOTI0MywgOTI0NywgOTI1MSwgOTI1NSwgOTI2MCwgOTI2NCwgOTI2OSwgOTI3MywgOTI3OCwgOTI4MywgOTI5MCwgOTI5NiwgCisgICAgOTMwMiwgOTMwOCwgOTMxMywgOTMyMiwgOTMzMSwgOTMzNiwgOTM0MywgOTM1MCwgOTM1NywgOTM2NCwgOTM2OCwgOTM3MiwgCisgICAgOTM3NiwgOTM4MywgOTM5MywgOTM5NywgOTQwMSwgOTQwNSwgOTQxMiwgOTQyMCwgOTQyNCwgOTQyOCwgOTQzNSwgOTQzOSwgCisgICAgOTQ0MywgOTQ0NywgOTQ1NCwgOTQ2MSwgOTQ3MywgOTQ3NywgOTQ4MSwgOTQ4NSwgOTQ5NSwgOTUwNCwgOTUwOCwgOTUxNiwgCisgICAgOTUyMywgOTUzMCwgOTUzOSwgOTU1MCwgOTU1OCwgOTU2MiwgOTU3MSwgOTU4MiwgOTU5MCwgOTYwMywgOTYxMSwgOTYxOSwgCisgICAgOTYyNywgOTYzNSwgOTY0MSwgOTY1MCwgOTY1NywgOTY2MSwgOTY2OSwgOTY3MywgOTY4MCwgOTY4OCwgOTY5MiwgOTY5OCwgCisgICAgOTcwNSwgOTcxMiwgOTcxNiwgOTcyNCwgOTcyOCwgOTczNSwgOTczOSwgOTc0NywgOTc1MSwgOTc1OSwgOTc2NywgOTc3NCwgCisgICAgOTc4MiwgOTc5MCwgOTc5NywgOTgwMywgOTgwNywgOTgxNCwgOTgyMiwgOTgyOCwgOTgzNSwgOTg0MiwgOTg0OCwgOTg1OCwgCisgICAgOTg2NiwgOTg3MywgOTg3OSwgOTg4MywgOTg4NiwgOTg5MCwgOTg5NiwgOTkwNCwgOTkwOCwgOTkxNCwgOTkyMCwgOTkyNywgCisgICAgOTkzNCwgOTkzNywgOTk0NCwgOTk0OSwgOTk1OCwgOTk2MywgOTk2NywgOTk4MCwgOTk5MywgOTk5OSwgMTAwMDYsIDEwMDExLCAKKyAgICAxMDAxNywgMTAwMjIsIDEwMDI4LCAxMDAzOCwgMTAwNDUsIDEwMDU0LCAxMDA2NCwgMTAwNzAsIDEwMDc1LCAxMDA4MCwgCisgICAgMTAwODQsIDEwMDg4LCAxMDA5MywgMTAwOTgsIDEwMTA0LCAxMDExMiwgMTAxMjAsIDEwMTMxLCAxMDEzNiwgMTAxNDUsIAorICAgIDEwMTU0LCAxMDE2MSwgMTAxNjcsIDEwMTczLCAxMDE3OSwgMTAxODUsIDEwMTkxLCAxMDE5NywgMTAyMDQsIDEwMjEwLCAKKyAgICAxMDIxNywgMTAyMjQsIDEwMjMxLCAxMDIzOCwgMTAyNDQsIDEwMjUyLCAxMDI2MSwgMTAyNjgsIDEwMjc2LCAxMDI4NCwgCisgICAgMTAyOTAsIDEwMjk2LCAxMDMwMiwgMTAzMTAsIDEwMzE4LCAxMDMyOCwgMTAzMzgsIDEwMzQyLCAxMDM0OCwgMTAzNTQsIDAsIAorICAgIDEwMzYwLCAxMDM2NSwgMTAzNzAsIDEwMzc3LCAxMDM4MiwgMTAzODcsIDEwMzk0LCAxMDM5OSwgMTA0MDgsIDEwNDEzLCAKKyAgICAxMDQxOCwgMTA0MjMsIDEwNDI4LCAxMDQzMywgMTA0NDAsIDEwNDQ1LCAxMDQ1MiwgMTA0NTcsIDEwNDYyLCAxMDQ2NywgCisgICAgMTA0NzIsIDEwNDc3LCAxMDQ4MywgMTA0ODcsIDEwNDkyLCAxMDQ5OSwgMTA1MDQsIDEwNTA5LCAxMDUxNCwgMTA1MTksIAorICAgIDEwNTI0LCAxMDUzMSwgMTA1MzgsIDEwNTQ1LCAxMDU1MCwgMTA1NTUsIDEwNTYxLCAxMDU2NiwgMTA1NzEsIDEwNTc3LCAKKyAgICAxMDU4MiwgMTA1ODcsIDEwNTk1LCAxMDYwMywgMTA2MDgsIDEwNjEzLCAxMDYxOSwgMTA2MjQsIDEwNjI5LCAxMDYzMywgCisgICAgMTA2MzksIDEwNjQzLCAxMDY0NywgMTA2NTMsIDEwNjU5LCAxMDY2NCwgMTA2NjksIDEwNjc2LCAxMDY4MywgMTA2ODcsIDAsIAorICAgIDAsIDEwNjkxLCAxMDY5OCwgMTA3MDUsIDEwNzEyLCAxMDcyMiwgMTA3MzQsIDEwNzQ1LCAxMDc2MSwgMTA3NzMsIDEwNzg0LCAKKyAgICAxMDc5MiwgMTA3OTksIDEwODA5LCAxMDgyNCwgMTA4MzUsIDEwODQxLCAxMDg1MCwgMTA4NTgsIDEwODY5LCAxMDg3OSwgCisgICAgMTA4ODcsIDEwODk4LCAxMDkwNSwgMTA5MTMsIDEwOTI0LCAxMDkzMCwgMTA5MzYsIDEwOTQ0LCAxMDk1MiwgMTA5NjAsIAorICAgIDEwOTY2LCAxMDk3NiwgMTA5ODQsIDEwOTk0LCAxMTAwNCwgMTEwMTcsIDExMDMxLCAxMTA0NSwgMTEwNTUsIDExMDY2LCAKKyAgICAxMTA3NywgMTEwOTAsIDExMTAzLCAxMTExNywgMTExMjksIDExMTQxLCAxMTE1NCwgMTExNjcsIDExMTc5LCAxMTE5MiwgCisgICAgMTEyMDEsIDExMjA5LCAxMTIxNCwgMTEyMTksIDExMjI0LCAxMTIyOSwgMTEyMzQsIDExMjM5LCAxMTI0NCwgMTEyNDksIAorICAgIDExMjU0LCAxMTI1OSwgMTEyNjQsIDExMjY5LCAxMTI3NCwgMTEyNzksIDExMjg0LCAxMTI4OSwgMTEyOTQsIDExMjk5LCAKKyAgICAxMTMwNCwgMTEzMDksIDExMzE0LCAxMTMxOSwgMTEzMjQsIDExMzI5LCAxMTMzNCwgMTEzMzksIDExMzQ0LCAxMTM0OSwgCisgICAgMTEzNTQsIDExMzU5LCAxMTM2NCwgMTEzNjksIDExMzczLCAxMTM3OCwgMTEzODMsIDExMzg4LCAxMTM5MywgMTEzOTgsIAorICAgIDExNDAyLCAxMTQwNiwgMTE0MTAsIDExNDE0LCAxMTQxOCwgMTE0MjIsIDExNDI2LCAxMTQzMCwgMTE0MzQsIDExNDM4LCAKKyAgICAxMTQ0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE0NDcsIDExNDUyLCAxMTQ1NiwgCisgICAgMTE0NjAsIDExNDY0LCAxMTQ2OCwgMTE0NzIsIDExNDc2LCAxMTQ4MSwgMTE0ODUsIDExNDkwLCAxMTQ5NCwgMTE0OTksIAorICAgIDExNTAzLCAxMTUwNywgMTE1MTEsIDExNTE2LCAxMTUyMCwgMTE1MjUsIDExNTMwLCAxMTUzNSwgMTE1MzksIDExNTQ0LCAKKyAgICAxMTU0OSwgMTE1NTQsIDExNTU5LCAxMTU2NCwgMTE1NjksIDExNTc0LCAxMTU3OSwgMTE1ODQsIDExNTg4LCAxMTU5MywgCisgICAgMTE2MDAsIDExNjA0LCAxMTYwOSwgMTE2MTQsIDExNjE4LCAxMTYyMywgMTE2MjcsIDExNjM0LCAxMTY0MSwgMTE2NDgsIAorICAgIDExNjU1LCAxMTY2MywgMTE2NzEsIDExNjgwLCAxMTY4OCwgMTE2OTUsIDExNzAyLCAxMTcxMCwgMTE3MTYsIDExNzIyLCAKKyAgICAxMTcyOCwgMTE3MzQsIDExNzQxLCAxMTc0NiwgMTE3NTAsIDExNzU1LCAwLCAwLCAwLCAwLCAwLCAxMTc1OSwgMTE3NjQsIAorICAgIDExNzY5LCAxMTc3NCwgMTE3NzksIDExNzg0LCAxMTc4OSwgMTE3OTQsIDExNzk5LCAxMTgwNCwgMTE4MDksIDExODE0LCAKKyAgICAxMTgxOSwgMTE4MjQsIDExODI5LCAxMTgzNCwgMTE4MzksIDExODQ0LCAxMTg0OSwgMTE4NTQsIDExODU5LCAxMTg2NCwgCisgICAgMTE4NjksIDExODc0LCAxMTg3OSwgMTE4ODQsIDExODg5LCAxMTg5NywgMTE5MDQsIDExOTEwLCAxMTkxNSwgMTE5MjMsIAorICAgIDExOTMwLCAxMTkzNiwgMTE5NDMsIDExOTQ5LCAxMTk1NCwgMTE5NjEsIDExOTY4LCAxMTk3NCwgMTE5NzksIDExOTg0LCAKKyAgICAxMTk5MCwgMTE5OTUsIDEyMDAwLCAxMjAwNiwgMCwgMCwgMTIwMTEsIDEyMDE3LCAxMjAyMywgMTIwMjksIDEyMDM1LCAKKyAgICAxMjA0MSwgMTIwNDcsIDEyMDUyLCAxMjA2MCwgMTIwNjYsIDEyMDcyLCAxMjA3OCwgMTIwODQsIDEyMDkwLCAxMjA5OCwgMCwgCisgICAgMTIxMDQsIDEyMTA5LCAxMjExNCwgMTIxMTksIDEyMTI0LCAxMjEyOSwgMTIxMzQsIDEyMTM5LCAxMjE0NCwgMTIxNDksIAorICAgIDEyMTU0LCAxMjE1OSwgMTIxNjQsIDEyMTY5LCAxMjE3NCwgMTIxNzksIDEyMTg0LCAxMjE4OSwgMTIxOTQsIDEyMTk5LCAKKyAgICAxMjIwNCwgMTIyMDksIDEyMjE0LCAxMjIxOSwgMTIyMjQsIDEyMjI5LCAxMjIzNCwgMTIyMzksIDAsIDAsIDEyMjQ0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjI0OCwgMTIyNTcsIDEyMjY1LCAKKyAgICAxMjI3MiwgMTIyODAsIDEyMjkyLCAxMjI5OSwgMTIzMDYsIDEyMzEzLCAxMjMyNSwgMTIzMzYsIDEyMzQzLCAxMjM1MSwgCisgICAgMTIzNTcsIDEyMzYyLCAxMjM3MCwgMTIzNzgsIDEyMzg2LCAxMjM5MiwgMTI0MDIsIDEyNDEwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQxNywgMTI0MjMsIDEyNDI4LCAKKyAgICAxMjQzMywgMTI0MzgsIDEyNDQzLCAxMjQ0OCwgMTI0NTMsIDEyNDU4LCAxMjQ2MywgMTI0NjgsIDEyNDczLCAxMjQ3OCwgCisgICAgMTI0ODMsIDEyNDg3LCAxMjQ5MSwgMTI0OTUsIDEyNTAwLCAxMjUwNiwgMTI1MTIsIDEyNTE4LCAxMjUyMywgMTI1MjgsIAorICAgIDEyNTMzLCAxMjUzOCwgMTI1NDQsIDEyNTUzLCAxMjU2MSwgMTI1NjcsIDEyNTc1LCAxMjU4MSwgMTI1ODUsIDEyNTg5LCAKKyAgICAxMjU5MywgMTI1OTgsIDEyNjAxLCAxMjYwNSwgMTI2MDgsIDEyNjEyLCAxMjYxNSwgMTI2MTksIDEyNjIzLCAxMjYyNywgCisgICAgMTI2MzIsIDEyNjM3LCAxMjY0MCwgMTI2NDQsIDEyNjQ5LCAxMjY1NCwgMTI2NTcsIDEyNjYxLCAxMjY2NCwgMTI2NjgsIAorICAgIDEyNjcyLCAxMjY3NiwgMTI2ODAsIDEyNjg0LCAxMjY4OCwgMTI2OTIsIDEyNjk2LCAxMjcwMCwgMTI3MDQsIDEyNzA4LCAKKyAgICAxMjcxMiwgMTI3MTYsIDEyNzIwLCAxMjcyNCwgMTI3MjgsIDEyNzMyLCAxMjczNiwgMTI3NDAsIDEyNzQ0LCAxMjc0NywgCisgICAgMTI3NTEsIDEyNzU1LCAxMjc1OSwgMTI3NjIsIDEyNzY1LCAxMjc2OSwgMTI3NzMsIDEyNzc3LCAxMjc4MSwgMTI3ODUsIAorICAgIDEyNzg5LCAxMjc5MywgMTI3OTcsIDEyODAxLCAxMjgwNCwgMTI4MDksIDEyODE0LCAxMjgxOCwgMTI4MjIsIDEyODI3LCAKKyAgICAxMjgzMSwgMTI4MzYsIDEyODQwLCAxMjg0NSwgMTI4NTAsIDEyODU2LCAxMjg2MiwgMTI4NjgsIDEyODcyLCAxMjg3NywgCisgICAgMTI4ODMsIDEyODg5LCAxMjg5MywgMTI4OTgsIDEyOTAyLCAxMjkwOCwgMTI5MTMsIDEyOTE2LCAxMjkyMiwgMTI5MjgsIAorICAgIDEyOTMzLCAxMjkzOCwgMTI5NDUsIDEyOTUwLCAxMjk1NSwgMTI5NTksIDEyOTYzLCAxMjk2NywgMTI5NzEsIDEyOTc1LCAKKyAgICAxMjk3OSwgMTI5ODMsIDEyOTg3LCAxMjk5MiwgMTI5OTcsIDEzMDAyLCAxMzAwOCwgMTMwMTEsIDEzMDE1LCAxMzAxOSwgCisgICAgMTMwMjIsIDEzMDI1LCAxMzAyOCwgMTMwMzEsIDEzMDM0LCAxMzAzNywgMTMwNDEsIDEzMDQ0LCAxMzA0OCwgMTMwNTIsIAorICAgIDEzMDU5LCAxMzA2NCwgMTMwNjgsIDEzMDcyLCAxMzA3NiwgMTMwODAsIDEzMDg0LCAxMzA5MCwgMTMwOTQsIDEzMDk4LCAKKyAgICAxMzEwMiwgMTMxMDYsIDEzMTEyLCAxMzExNiwgMTMxMjAsIDEzMTIzLCAxMzEyNywgMTMxMzEsIDAsIDEzMTM1LCAxMzEzOCwgCisgICAgMTMxNDIsIDEzMTQ1LCAxMzE0OSwgMTMxNTIsIDEzMTU2LCAxMzE2MCwgMCwgMCwgMTMxNjQsIDEzMTY3LCAwLCAwLCAKKyAgICAxMzE3MSwgMTMxNzQsIDEzMTc4LCAxMzE4MSwgMTMxODUsIDEzMTg5LCAxMzE5MywgMTMxOTcsIDEzMjAxLCAxMzIwNSwgCisgICAgMTMyMDksIDEzMjEzLCAxMzIxNywgMTMyMjEsIDEzMjI1LCAxMzIyOSwgMTMyMzMsIDEzMjM3LCAxMzI0MSwgMTMyNDUsIAorICAgIDEzMjQ5LCAxMzI1MywgMCwgMTMyNTcsIDEzMjYwLCAxMzI2NCwgMTMyNjgsIDEzMjcyLCAxMzI3NSwgMTMyNzgsIDAsIAorICAgIDEzMjgyLCAwLCAwLCAwLCAxMzI4NiwgMTMyOTAsIDEzMjk0LCAxMzI5OCwgMCwgMCwgMTMzMDEsIDEzMzA1LCAxMzMwOSwgCisgICAgMTMzMTQsIDEzMzE4LCAxMzMyMywgMTMzMjcsIDEzMzMyLCAxMzMzNywgMCwgMCwgMTMzNDMsIDEzMzQ3LCAwLCAwLCAKKyAgICAxMzM1MiwgMTMzNTYsIDEzMzYxLCAxMzM2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMzNzEsIDAsIDAsIDAsIDAsIAorICAgIDEzMzc3LCAxMzM4MSwgMCwgMTMzODUsIDEzMzg5LCAxMzM5NCwgMTMzOTksIDEzNDA0LCAwLCAwLCAxMzQxMCwgMTM0MTQsIAorICAgIDEzNDE3LCAxMzQyMCwgMTM0MjMsIDEzNDI2LCAxMzQyOSwgMTM0MzIsIDEzNDM2LCAxMzQzOSwgMTM0NDMsIDEzNDUxLCAKKyAgICAxMzQ2MCwgMTM0NjQsIDEzNDY4LCAxMzQ3NCwgMTM0ODAsIDEzNDg2LCAxMzQ5MiwgMTM1MDYsIDEzNTEzLCAxMzUxNiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTM1MjAsIDEzNTI3LCAxMzUzMiwgMCwgMTM1MzcsIDEzNTQxLCAxMzU0NiwgMTM1NTAsIDEzNTU1LCAKKyAgICAxMzU1OSwgMCwgMCwgMCwgMCwgMTM1NjQsIDEzNTY5LCAwLCAwLCAxMzU3NCwgMTM1NzksIDEzNTg0LCAxMzU4OCwgMTM1OTMsIAorICAgIDEzNTk4LCAxMzYwMywgMTM2MDgsIDEzNjEzLCAxMzYxOCwgMTM2MjMsIDEzNjI4LCAxMzYzMywgMTM2MzgsIDEzNjQzLCAKKyAgICAxMzY0OCwgMTM2NTMsIDEzNjU4LCAxMzY2MywgMTM2NjgsIDEzNjczLCAxMzY3OCwgMCwgMTM2ODMsIDEzNjg3LCAxMzY5MiwgCisgICAgMTM2OTcsIDEzNzAyLCAxMzcwNiwgMTM3MTAsIDAsIDEzNzE1LCAxMzcyMCwgMCwgMTM3MjUsIDEzNzMwLCAwLCAxMzczNSwgCisgICAgMTM3NDAsIDAsIDAsIDEzNzQ0LCAwLCAxMzc0OSwgMTM3NTUsIDEzNzYwLCAxMzc2NiwgMTM3NzEsIDAsIDAsIDAsIDAsIAorICAgIDEzNzc3LCAxMzc4MywgMCwgMCwgMTM3ODksIDEzNzk1LCAxMzgwMSwgMCwgMCwgMCwgMTM4MDYsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEzODExLCAxMzgxNiwgMTM4MjEsIDEzODI2LCAwLCAxMzgzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4MzYsIAorICAgIDEzODQxLCAxMzg0NSwgMTM4NDksIDEzODUzLCAxMzg1NywgMTM4NjEsIDEzODY1LCAxMzg3MCwgMTM4NzQsIDEzODc5LCAKKyAgICAxMzg4MywgMTM4ODcsIDEzODkxLCAxMzg5NSwgMTM5MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzOTA2LCAxMzkxMSwgMTM5MTYsIDAsIDEzOTIxLCAxMzkyNSwgMTM5MzAsIDEzOTM0LCAxMzkzOSwgMTM5NDMsIDEzOTQ4LCAKKyAgICAxMzk1MywgMTM5NTgsIDAsIDEzOTY0LCAxMzk2OCwgMTM5NzMsIDAsIDEzOTc5LCAxMzk4MywgMTM5ODgsIDEzOTkyLCAKKyAgICAxMzk5NywgMTQwMDIsIDE0MDA3LCAxNDAxMiwgMTQwMTcsIDE0MDIyLCAxNDAyNywgMTQwMzIsIDE0MDM3LCAxNDA0MiwgCisgICAgMTQwNDcsIDE0MDUyLCAxNDA1NywgMTQwNjIsIDE0MDY3LCAxNDA3MiwgMTQwNzcsIDE0MDgyLCAwLCAxNDA4NywgMTQwOTEsIAorICAgIDE0MDk2LCAxNDEwMSwgMTQxMDYsIDE0MTEwLCAxNDExNCwgMCwgMTQxMTksIDE0MTI0LCAwLCAxNDEyOSwgMTQxMzQsIAorICAgIDE0MTM5LCAxNDE0NCwgMTQxNDksIDAsIDAsIDE0MTUzLCAxNDE1OCwgMTQxNjMsIDE0MTY5LCAxNDE3NCwgMTQxODAsIAorICAgIDE0MTg1LCAxNDE5MSwgMTQxOTcsIDE0MjA0LCAwLCAxNDIxMSwgMTQyMTYsIDE0MjIyLCAwLCAxNDIyOSwgMTQyMzQsIAorICAgIDE0MjQwLCAwLCAwLCAxNDI0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQyNDksIAorICAgIDE0MjU1LCAxNDI2MSwgMTQyNjcsIDAsIDAsIDE0Mjc0LCAxNDI3OSwgMTQyODMsIDE0Mjg3LCAxNDI5MSwgMTQyOTUsIAorICAgIDE0Mjk5LCAxNDMwMywgMTQzMDgsIDE0MzEyLCAxNDMxNywgMTQzMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MzI3LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDMzMiwgMTQzMzYsIDE0MzQwLCAwLCAxNDM0NCwgMTQzNDcsIDE0MzUxLCAxNDM1NCwgCisgICAgMTQzNTgsIDE0MzYxLCAxNDM2NSwgMTQzNjksIDAsIDAsIDE0MzczLCAxNDM3NiwgMCwgMCwgMTQzODAsIDE0MzgzLCAKKyAgICAxNDM4NywgMTQzOTAsIDE0Mzk0LCAxNDM5OCwgMTQ0MDIsIDE0NDA2LCAxNDQxMCwgMTQ0MTQsIDE0NDE4LCAxNDQyMiwgCisgICAgMTQ0MjYsIDE0NDMwLCAxNDQzNCwgMTQ0MzgsIDE0NDQyLCAxNDQ0NiwgMTQ0NTAsIDE0NDU0LCAxNDQ1OCwgMTQ0NjIsIDAsIAorICAgIDE0NDY2LCAxNDQ2OSwgMTQ0NzMsIDE0NDc3LCAxNDQ4MSwgMTQ0ODQsIDE0NDg3LCAwLCAxNDQ5MSwgMTQ0OTUsIDAsIAorICAgIDE0NDk5LCAxNDUwMywgMTQ1MDcsIDE0NTExLCAxNDUxNSwgMCwgMCwgMTQ1MTgsIDE0NTIyLCAxNDUyNiwgMTQ1MzEsIAorICAgIDE0NTM1LCAxNDU0MCwgMTQ1NDQsIDE0NTQ5LCAxNDU1NCwgMCwgMCwgMTQ1NjAsIDE0NTY0LCAwLCAwLCAxNDU2OSwgCisgICAgMTQ1NzMsIDE0NTc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDU4MiwgMTQ1ODgsIDAsIDAsIDAsIDAsIDE0NTk0LCAKKyAgICAxNDU5OCwgMCwgMTQ2MDIsIDE0NjA2LCAxNDYxMSwgMTQ2MTYsIDE0NjIxLCAwLCAwLCAxNDYyNywgMTQ2MzEsIDE0NjM0LCAKKyAgICAxNDYzNywgMTQ2NDAsIDE0NjQzLCAxNDY0NiwgMTQ2NDksIDE0NjUzLCAxNDY1NiwgMTQ2NjAsIDE0NjYzLCAxNDY2NywgCisgICAgMTQ2NzMsIDE0Njc5LCAxNDY4NSwgMTQ2OTEsIDE0Njk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDcwMywgCisgICAgMTQ3MDcsIDAsIDE0NzExLCAxNDcxNCwgMTQ3MTgsIDE0NzIxLCAxNDcyNSwgMTQ3MjgsIDAsIDAsIDAsIDE0NzMyLCAKKyAgICAxNDczNSwgMTQ3MzksIDAsIDE0NzQzLCAxNDc0NiwgMTQ3NTAsIDE0NzU0LCAwLCAwLCAwLCAxNDc1NywgMTQ3NjEsIDAsIAorICAgIDE0NzY1LCAwLCAxNDc2OSwgMTQ3NzMsIDAsIDAsIDAsIDE0Nzc3LCAxNDc4MSwgMCwgMCwgMCwgMTQ3ODUsIDE0Nzg5LCAKKyAgICAxNDc5MywgMCwgMCwgMCwgMTQ3OTYsIDE0Nzk5LCAxNDgwMiwgMTQ4MDYsIDE0ODEwLCAxNDgxNCwgMTQ4MTgsIDE0ODIyLCAKKyAgICAxNDgyNiwgMTQ4MzAsIDE0ODM0LCAxNDgzOCwgMCwgMCwgMCwgMCwgMTQ4NDEsIDE0ODQ2LCAxNDg1MCwgMTQ4NTUsIAorICAgIDE0ODU5LCAwLCAwLCAwLCAxNDg2NCwgMTQ4NjgsIDE0ODczLCAwLCAxNDg3OCwgMTQ4ODIsIDE0ODg3LCAxNDg5MiwgMCwgMCwgCisgICAgMTQ4OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDE0ODk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDkwNSwgMTQ5MDksIDE0OTEyLCAxNDkxNSwgMTQ5MTgsIDE0OTIxLCAxNDkyNCwgMTQ5MjcsIDE0OTMxLCAxNDkzNCwgCisgICAgMTQ5MzgsIDE0OTQyLCAxNDk0NywgMTQ5NTIsIDE0OTU2LCAxNDk2MCwgMTQ5NjQsIDE0OTY4LCAxNDk3MiwgMTQ5NzcsIAorICAgIDE0OTgxLCAwLCAwLCAwLCAwLCAwLCAxNDk4NCwgMTQ5OTAsIDE0OTk0LCAxNDk5OCwgMCwgMTUwMDIsIDE1MDA1LCAxNTAwOSwgCisgICAgMTUwMTIsIDE1MDE2LCAxNTAxOSwgMTUwMjMsIDE1MDI3LCAwLCAxNTAzMSwgMTUwMzQsIDE1MDM4LCAwLCAxNTA0MiwgCisgICAgMTUwNDUsIDE1MDQ5LCAxNTA1MywgMTUwNTYsIDE1MDYwLCAxNTA2NCwgMTUwNjgsIDE1MDcyLCAxNTA3NiwgMTUwODAsIAorICAgIDE1MDg0LCAxNTA4OCwgMTUwOTIsIDE1MDk2LCAxNTEwMCwgMTUxMDQsIDE1MTA4LCAxNTExMiwgMTUxMTYsIDE1MTIwLCAKKyAgICAxNTEyNCwgMTUxMjgsIDAsIDE1MTMyLCAxNTEzNSwgMTUxMzksIDE1MTQzLCAxNTE0NywgMTUxNTAsIDE1MTUzLCAxNTE1NywgCisgICAgMTUxNjEsIDE1MTY1LCAxNTE2OSwgMTUxNzMsIDE1MTc3LCAxNTE4MSwgMTUxODUsIDE1MTg5LCAwLCAwLCAwLCAxNTE5MiwgCisgICAgMTUxOTYsIDE1MjAxLCAxNTIwNSwgMTUyMTAsIDE1MjE0LCAxNTIxOSwgMTUyMjQsIDAsIDE1MjMwLCAxNTIzNCwgMTUyMzksIAorICAgIDAsIDE1MjQ0LCAxNTI0OCwgMTUyNTMsIDE1MjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTI2MiwgMTUyNjYsIDAsIAorICAgIDE1MjcyLCAxNTI3NiwgMTUyODAsIDAsIDAsIDAsIDAsIDAsIDE1Mjg0LCAxNTI4OSwgMTUyOTQsIDE1Mjk5LCAwLCAwLCAKKyAgICAxNTMwNSwgMTUzMDksIDE1MzEyLCAxNTMxNSwgMTUzMTgsIDE1MzIxLCAxNTMyNCwgMTUzMjcsIDE1MzMxLCAxNTMzNCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzMzgsIDE1MzUxLCAxNTM2MywgMTUzNzUsIDE1Mzg3LCAxNTM5OSwgMTU0MTEsIAorICAgIDE1NDIzLCAwLCAxNTQyNywgMTU0MzEsIDE1NDM1LCAwLCAxNTQzOSwgMTU0NDIsIDE1NDQ2LCAxNTQ0OSwgMTU0NTMsIAorICAgIDE1NDU2LCAxNTQ2MCwgMTU0NjQsIDAsIDE1NDY4LCAxNTQ3MSwgMTU0NzUsIDAsIDE1NDc5LCAxNTQ4MiwgMTU0ODYsIAorICAgIDE1NDkwLCAxNTQ5MywgMTU0OTcsIDE1NTAxLCAxNTUwNSwgMTU1MDksIDE1NTEzLCAxNTUxNywgMTU1MjEsIDE1NTI1LCAKKyAgICAxNTUyOSwgMTU1MzMsIDE1NTM3LCAxNTU0MSwgMTU1NDUsIDE1NTQ5LCAxNTU1MywgMTU1NTcsIDE1NTYxLCAxNTU2NSwgMCwgCisgICAgMTU1NjksIDE1NTcyLCAxNTU3NiwgMTU1ODAsIDE1NTg0LCAxNTU4NywgMTU1OTAsIDE1NTk0LCAxNTU5OCwgMTU2MDIsIDAsIAorICAgIDE1NjA2LCAxNTYxMCwgMTU2MTQsIDE1NjE4LCAxNTYyMiwgMCwgMCwgMTU2MjUsIDE1NjI5LCAxNTYzMywgMTU2MzgsIAorICAgIDE1NjQyLCAxNTY0NywgMTU2NTEsIDE1NjU2LCAxNTY2MSwgMCwgMTU2NjcsIDE1NjcxLCAxNTY3NiwgMCwgMTU2ODEsIAorICAgIDE1Njg1LCAxNTY5MCwgMTU2OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1Njk5LCAxNTcwMywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTU3MDksIDAsIDE1NzEzLCAxNTcxOCwgMTU3MjMsIDE1NzI4LCAwLCAwLCAxNTczNCwgMTU3MzgsIDE1NzQxLCAKKyAgICAxNTc0NCwgMTU3NDcsIDE1NzUwLCAxNTc1MywgMTU3NTYsIDE1NzYwLCAxNTc2MywgMCwgMTU3NjcsIDE1NzcxLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTc3NSwgMTU3NzksIDE1NzgzLCAwLCAxNTc4NywgMTU3OTAsIAorICAgIDE1Nzk0LCAxNTc5NywgMTU4MDEsIDE1ODA0LCAxNTgwOCwgMTU4MTIsIDAsIDE1ODE2LCAxNTgxOSwgMTU4MjMsIDAsIAorICAgIDE1ODI3LCAxNTgzMCwgMTU4MzQsIDE1ODM4LCAxNTg0MSwgMTU4NDUsIDE1ODQ5LCAxNTg1MywgMTU4NTcsIDE1ODYxLCAKKyAgICAxNTg2NSwgMTU4NjksIDE1ODczLCAxNTg3NywgMTU4ODEsIDE1ODg1LCAxNTg4OSwgMTU4OTMsIDE1ODk3LCAxNTkwMSwgCisgICAgMTU5MDUsIDE1OTA5LCAxNTkxMywgMTU5MTcsIDE1OTIxLCAxNTkyNCwgMTU5MjgsIDE1OTMyLCAxNTkzNiwgMTU5MzksIAorICAgIDE1OTQyLCAxNTk0NiwgMTU5NTAsIDE1OTU0LCAxNTk1OCwgMTU5NjIsIDE1OTY2LCAxNTk3MCwgMTU5NzQsIDE1OTc4LCAKKyAgICAxNTk4MSwgMCwgMCwgMTU5ODUsIDE1OTg5LCAxNTk5NCwgMTU5OTgsIDE2MDAzLCAxNjAwNywgMTYwMTIsIDE2MDE3LCAwLCAKKyAgICAxNjAyMywgMTYwMjcsIDE2MDMyLCAwLCAxNjAzNywgMTYwNDEsIDE2MDQ2LCAxNjA1MSwgMTYwNTUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE2MDYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjA2NiwgMTYwNzIsIDE2MDc3LCAxNjA4MiwgMTYwODcsIAorICAgIDAsIDAsIDE2MDkzLCAxNjA5NywgMTYxMDAsIDE2MTAzLCAxNjEwNiwgMTYxMDksIDE2MTEyLCAxNjExNSwgMTYxMTksIAorICAgIDE2MTIyLCAxNjEyNiwgMTYxMzAsIDE2MTM1LCAxNjE0MCwgMTYxNDYsIDE2MTUyLCAwLCAwLCAwLCAxNjE1OCwgMTYxNjIsIAorICAgIDE2MTY4LCAxNjE3NCwgMTYxODAsIDE2MTg1LCAxNjE5MSwgMCwgMCwgMTYxOTcsIDE2MjAxLCAwLCAxNjIwNSwgMTYyMDksIAorICAgIDE2MjEzLCAxNjIxNywgMTYyMjEsIDE2MjI1LCAxNjIyOSwgMTYyMzMsIDE2MjM3LCAxNjI0MSwgMTYyNDUsIDE2MjQ5LCAKKyAgICAxNjI1MywgMTYyNTcsIDE2MjYxLCAxNjI2NSwgMTYyNjksIDE2MjczLCAwLCAwLCAwLCAxNjI3NywgMTYyODMsIDE2Mjg5LCAKKyAgICAxNjI5NSwgMTYzMDEsIDE2MzA3LCAxNjMxMywgMTYzMTksIDE2MzI1LCAxNjMzMSwgMTYzMzcsIDE2MzQzLCAxNjM1MSwgCisgICAgMTYzNTcsIDE2MzYzLCAxNjM2OSwgMTYzNzUsIDE2MzgxLCAxNjM4NywgMTYzOTMsIDE2Mzk5LCAxNjQwNSwgMTY0MTEsIAorICAgIDE2NDE3LCAwLCAxNjQyMywgMTY0MjksIDE2NDM1LCAxNjQ0MSwgMTY0NDcsIDE2NDUzLCAxNjQ1NywgMTY0NjMsIDE2NDY3LCAKKyAgICAwLCAxNjQ3MSwgMCwgMCwgMTY0NzcsIDE2NDgxLCAxNjQ4NywgMTY0OTMsIDE2NDk5LCAxNjUwMywgMTY1MDksIDAsIDAsIDAsIAorICAgIDE2NTEzLCAwLCAwLCAwLCAwLCAxNjUxNywgMTY1MjIsIDE2NTI5LCAxNjUzNiwgMTY1NDMsIDE2NTUwLCAwLCAxNjU1NywgMCwgCisgICAgMTY1NjQsIDE2NTY5LCAxNjU3NCwgMTY1ODEsIDE2NTg4LCAxNjU5NywgMTY2MDgsIDE2NjE3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNjYyMiwgMTY2MjgsIDE2NjMzLCAxNjYzOCwgMTY2NDMsIDE2NjQ4LCAxNjY1MywgMTY2NTgsIDE2NjY0LCAxNjY2OSwgMCwgCisgICAgMCwgMTY2NzUsIDE2NjgyLCAxNjY4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY2OTQsIDE2NzAxLCAKKyAgICAxNjcwOCwgMTY3MTUsIDE2NzIyLCAxNjcyOSwgMTY3MzYsIDE2NzQzLCAxNjc1MCwgMTY3NTcsIDE2NzY0LCAxNjc3MSwgCisgICAgMTY3NzgsIDE2Nzg1LCAxNjc5MiwgMTY3OTksIDE2ODA2LCAxNjgxMywgMTY4MjAsIDE2ODI3LCAxNjgzNCwgMTY4NDEsIAorICAgIDE2ODQ4LCAxNjg1NSwgMTY4NjIsIDE2ODY5LCAxNjg3NiwgMTY4ODMsIDE2ODkwLCAxNjg5NywgMTY5MDQsIDE2OTExLCAKKyAgICAxNjkxOCwgMTY5MjQsIDE2OTMxLCAxNjkzOCwgMTY5NDMsIDE2OTUwLCAxNjk1NSwgMTY5NjIsIDE2OTY5LCAxNjk3NiwgCisgICAgMTY5ODMsIDE2OTkwLCAxNjk5NywgMTcwMDMsIDE3MDEwLCAxNzAxNSwgMTcwMjEsIDE3MDI4LCAxNzAzNSwgMTcwNDIsIAorICAgIDE3MDQ4LCAxNzA1NSwgMTcwNjIsIDE3MDY5LCAxNzA3NSwgMTcwODIsIDAsIDAsIDAsIDAsIDE3MDg3LCAxNzA5NCwgCisgICAgMTcxMDAsIDE3MTA3LCAxNzExMywgMTcxMjIsIDE3MTMxLCAxNzEzNiwgMTcxNDEsIDE3MTQ2LCAxNzE1MywgMTcxNjAsIAorICAgIDE3MTY3LCAxNzE3NCwgMTcxNzksIDE3MTg0LCAxNzE4OSwgMTcxOTQsIDE3MTk5LCAxNzIwMywgMTcyMDcsIDE3MjExLCAKKyAgICAxNzIxNSwgMTcyMTksIDE3MjIzLCAxNzIyOCwgMTcyMzIsIDE3MjM3LCAxNzI0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTcyNDcsIDE3MjUyLCAwLCAxNzI1OSwgMCwgMCwgMTcyNjYsIDE3MjcxLCAwLCAxNzI3NiwgMCwgCisgICAgMCwgMTcyODMsIDAsIDAsIDAsIDAsIDAsIDAsIDE3Mjg4LCAxNzI5MywgMTcyOTcsIDE3MzA0LCAwLCAxNzMxMSwgMTczMTYsIAorICAgIDE3MzIxLCAxNzMyNiwgMTczMzMsIDE3MzQwLCAxNzM0NywgMCwgMTczNTQsIDE3MzU5LCAxNzM2NCwgMCwgMTczNzEsIDAsIAorICAgIDE3Mzc4LCAwLCAwLCAxNzM4MywgMTczOTAsIDAsIDE3Mzk3LCAxNzQwMSwgMTc0MDgsIDE3NDEyLCAxNzQxNywgMTc0MjUsIAorICAgIDE3NDMxLCAxNzQzNywgMTc0NDIsIDE3NDQ4LCAxNzQ1NCwgMTc0NjAsIDE3NDY1LCAwLCAxNzQ3MSwgMTc0NzksIDE3NDg2LCAKKyAgICAwLCAwLCAxNzQ5MywgMTc0OTgsIDE3NTA0LCAxNzUwOSwgMTc1MTUsIDAsIDE3NTIxLCAwLCAxNzUyNywgMTc1MzQsIAorICAgIDE3NTQxLCAxNzU0OCwgMTc1NTUsIDE3NTYwLCAwLCAwLCAxNzU2NCwgMTc1NjksIDE3NTczLCAxNzU3NywgMTc1ODEsIAorICAgIDE3NTg1LCAxNzU4OSwgMTc1OTMsIDE3NTk4LCAxNzYwMiwgMCwgMCwgMTc2MDcsIDE3NjEzLCAxNzYxOSwgMTc2MjYsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3NjMzLCAxNzYzNywgMTc2NDgsIDE3NjYzLCAxNzY3OCwgMTc2ODgsIDE3Njk5LCAKKyAgICAxNzcxMiwgMTc3MjMsIDE3NzI5LCAxNzczNywgMTc3NDcsIDE3NzUzLCAxNzc2MSwgMTc3NjUsIDE3NzcxLCAxNzc3NywgCisgICAgMTc3ODUsIDE3Nzk1LCAxNzgwMywgMTc4MTYsIDE3ODIyLCAxNzgzMCwgMTc4MzgsIDE3ODUwLCAxNzg1NywgMTc4NjUsIAorICAgIDE3ODczLCAxNzg4MSwgMTc4ODksIDE3ODk3LCAxNzkwNSwgMTc5MTUsIDE3OTE5LCAxNzkyMiwgMTc5MjUsIDE3OTI4LCAKKyAgICAxNzkzMSwgMTc5MzQsIDE3OTM3LCAxNzk0MSwgMTc5NDQsIDE3OTQ4LCAxNzk1MiwgMTc5NTYsIDE3OTYwLCAxNzk2NCwgCisgICAgMTc5NjgsIDE3OTcyLCAxNzk3NywgMTc5ODEsIDE3OTg2LCAxNzk5MSwgMTc5OTcsIDE4MDA3LCAxODAyMSwgMTgwMzEsIAorICAgIDE4MDM3LCAxODA0MywgMTgwNTEsIDE4MDU5LCAxODA2NywgMTgwNzUsIDE4MDgxLCAxODA4NywgMTgwOTAsIDE4MDk0LCAKKyAgICAxODA5OCwgMTgxMDIsIDE4MTA2LCAxODExMCwgMTgxMTQsIDAsIDE4MTE4LCAxODEyMiwgMTgxMjYsIDE4MTMwLCAxODEzNCwgCisgICAgMTgxMzgsIDE4MTQyLCAxODE0NiwgMTgxNTAsIDE4MTU0LCAxODE1OCwgMTgxNjIsIDE4MTY1LCAxODE2OSwgMTgxNzMsIAorICAgIDE4MTc3LCAxODE4MCwgMTgxODQsIDE4MTg4LCAxODE5MiwgMTgxOTYsIDE4MjAwLCAxODIwNCwgMTgyMDgsIDE4MjEyLCAKKyAgICAxODIxNSwgMTgyMTksIDE4MjIzLCAxODIyNywgMTgyMzEsIDE4MjM1LCAxODIzOCwgMTgyNDEsIDE4MjQ1LCAxODI1MSwgCisgICAgMTgyNTUsIDAsIDAsIDAsIDAsIDE4MjU5LCAxODI2NCwgMTgyNjgsIDE4MjczLCAxODI3NywgMTgyODIsIDE4Mjg3LCAKKyAgICAxODI5MywgMTgyOTgsIDE4MzA0LCAxODMwOCwgMTgzMTMsIDE4MzE3LCAxODMyMiwgMTgzMzIsIDE4MzM4LCAxODM0NCwgCisgICAgMTgzNTEsIDE4MzYxLCAxODM2NywgMTgzNzEsIDE4Mzc1LCAxODM4MSwgMTgzODcsIDE4Mzk1LCAxODQwMSwgMTg0MDksIAorICAgIDE4NDE3LCAxODQyNSwgMTg0MzUsIDE4NDQzLCAxODQ1MywgMTg0NTgsIDE4NDY0LCAxODQ3MCwgMTg0NzYsIDE4NDgyLCAKKyAgICAxODQ4OCwgMTg0OTQsIDAsIDE4NTAwLCAxODUwNiwgMTg1MTIsIDE4NTE4LCAxODUyNCwgMTg1MzAsIDE4NTM2LCAxODU0MiwgCisgICAgMTg1NDgsIDE4NTU0LCAxODU2MCwgMTg1NjYsIDE4NTcxLCAxODU3NywgMTg1ODMsIDE4NTg5LCAxODU5NCwgMTg2MDAsIAorICAgIDE4NjA2LCAxODYxMiwgMTg2MTgsIDE4NjI0LCAxODYzMCwgMTg2MzYsIDE4NjQyLCAxODY0NywgMTg2NTMsIDE4NjU5LCAKKyAgICAxODY2NSwgMTg2NzEsIDE4Njc3LCAxODY4MiwgMTg2ODcsIDE4NjkzLCAxODcwMSwgMTg3MDgsIDAsIDE4NzE2LCAxODcyMywgCisgICAgMTg3MzYsIDE4NzQzLCAxODc1MCwgMTg3NTgsIDE4NzY2LCAxODc3MiwgMTg3NzgsIDE4Nzg0LCAxODc5NCwgMTg3OTksIAorICAgIDE4ODA1LCAxODgxNSwgMTg4MjUsIDAsIDE4ODM1LCAxODg0NSwgMTg4NTMsIDE4ODY1LCAxODg3NywgMTg4ODMsIDE4ODk3LCAKKyAgICAxODkxMiwgMTg5MTcsIDE4OTIyLCAxODkzMCwgMTg5MzgsIDE4OTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxODk1NCwgMTg5NTcsIDE4OTYxLCAxODk2NSwgMTg5NjksIDE4OTczLCAxODk3NywgMTg5ODEsIDE4OTg1LCAKKyAgICAxODk4OSwgMTg5OTMsIDE4OTk3LCAxOTAwMSwgMTkwMDUsIDE5MDA5LCAxOTAxMywgMTkwMTcsIDE5MDIxLCAxOTAyNSwgCisgICAgMTkwMjksIDE5MDMzLCAxOTAzNywgMTkwNDAsIDE5MDQ0LCAxOTA0OCwgMTkwNTIsIDE5MDU1LCAxOTA1OCwgMTkwNjIsIAorICAgIDE5MDY2LCAxOTA3MCwgMTkwNzQsIDE5MDc3LCAxOTA4MSwgMTkwODQsIDE5MDg5LCAxOTA5MiwgMTkwOTYsIDE5MDk5LCAKKyAgICAxOTEwMywgMTkxMDYsIDE5MTExLCAxOTExNCwgMTkxMTgsIDE5MTI1LCAxOTEzMCwgMTkxMzQsIDE5MTM5LCAxOTE0MywgCisgICAgMTkxNDgsIDE5MTUyLCAxOTE1NywgMTkxNjQsIDE5MTcwLCAxOTE3NSwgMTkxNzksIDE5MTgzLCAxOTE4NywgMTkxOTEsIAorICAgIDE5MTk1LCAxOTIwMCwgMTkyMDYsIDE5MjEyLCAxOTIxNywgMTkyMjMsIDE5MjI3LCAxOTIzMCwgMTkyMzMsIDE5MjM2LCAKKyAgICAxOTIzOSwgMTkyNDIsIDE5MjQ1LCAxOTI0OSwgMTkyNTIsIDE5MjU2LCAxOTI2MiwgMTkyNjYsIDE5MjcwLCAxOTI3NCwgCisgICAgMTkyNzgsIDE5MjgyLCAxOTI4NiwgMTkyOTAsIDE5Mjk0LCAxOTI5OSwgMTkzMDMsIDE5MzA4LCAxOTMxMywgMTkzMTksIAorICAgIDE5MzI0LCAxOTMzMCwgMTkzMzYsIDE5MzQyLCAxOTM0OCwgMTkzNTQsIDE5MzYyLCAxOTM2OSwgMTkzNzcsIDE5Mzg1LCAKKyAgICAxOTM5NCwgMTk0MDMsIDE5NDE0LCAxOTQyNCwgMTk0MzQsIDE5NDQ1LCAxOTQ1NiwgMTk0NjYsIDE5NDc2LCAxOTQ4NiwgCisgICAgMTk0OTYsIDE5NTA2LCAxOTUxNiwgMTk1MjYsIDE5NTM2LCAxOTU0NCwgMTk1NTEsIDE5NTU3LCAxOTU2NCwgMTk1NjksIAorICAgIDE5NTc1LCAxOTU4MSwgMTk1ODcsIDE5NTkzLCAxOTU5OSwgMTk2MDUsIDE5NjExLCAxOTYxNywgMTk2MjMsIDE5NjI5LCAKKyAgICAxOTYzNSwgMTk2NDAsIDE5NjQ4LCAxOTY1NSwgMTk2NjEsIDE5NjY4LCAxOTY3NiwgMTk2ODIsIDE5Njg4LCAxOTY5NCwgCisgICAgMTk3MDAsIDE5NzA4LCAxOTcxNiwgMTk3MjYsIDE5NzM0LCAxOTc0MiwgMTk3NDgsIDE5NzUzLCAxOTc1OCwgMTk3NjMsIAorICAgIDE5NzY4LCAxOTc3MywgMTk3NzgsIDE5Nzg0LCAxOTc4OSwgMTk3OTUsIDE5ODAxLCAxOTgwNywgMTk4MTMsIDE5ODIwLCAKKyAgICAxOTgyNSwgMTk4MzEsIDE5ODM2LCAxOTg0MSwgMTk4NDYsIDE5ODUxLCAxOTg1NiwgMTk4NjEsIDE5ODY2LCAxOTg3MSwgCisgICAgMTk4NzYsIDE5ODgxLCAxOTg4NiwgMTk4OTEsIDE5ODk2LCAxOTkwMSwgMTk5MDYsIDE5OTExLCAxOTkxNiwgMTk5MjEsIAorICAgIDE5OTI2LCAxOTkzMSwgMTk5MzYsIDE5OTQxLCAxOTk0NiwgMTk5NTEsIDE5OTU2LCAxOTk2MSwgMTk5NjYsIDE5OTcxLCAKKyAgICAxOTk3NiwgMTk5ODEsIDE5OTg2LCAxOTk5MSwgMTk5OTYsIDIwMDAxLCAyMDAwNiwgMjAwMTEsIDIwMDE2LCAwLCAyMDAyMSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjAwMjYsIDAsIDAsIDIwMDMxLCAyMDAzNSwgMjAwMzksIDIwMDQzLCAyMDA0NywgMjAwNTEsIAorICAgIDIwMDU1LCAyMDA1OSwgMjAwNjMsIDIwMDY3LCAyMDA3MSwgMjAwNzUsIDIwMDc5LCAyMDA4MywgMjAwODcsIDIwMDkxLCAKKyAgICAyMDA5NSwgMjAwOTksIDIwMTAzLCAyMDEwNywgMjAxMTEsIDIwMTE1LCAyMDExOSwgMjAxMjMsIDIwMTI3LCAyMDEzMSwgCisgICAgMjAxMzUsIDIwMTM5LCAyMDE0MywgMjAxNDcsIDIwMTUxLCAyMDE1NSwgMjAxNTksIDIwMTYzLCAyMDE2NywgMjAxNzEsIAorICAgIDIwMTc1LCAyMDE3OSwgMjAxODMsIDIwMTg3LCAyMDE5MSwgMjAxOTUsIDIwMjAxLCAyMDIwNSwgMjAyMTAsIDIwMjE1LCAKKyAgICAyMDIxOSwgMjAyMjQsIDIwMjI5LCAyMDIzMywgMjAyMzcsIDIwMjQxLCAyMDI0NSwgMjAyNDksIDIwMjUzLCAyMDI1NywgCisgICAgMjAyNjEsIDIwMjY1LCAyMDI2OSwgMjAyNzMsIDIwMjc3LCAyMDI4MSwgMjAyODUsIDIwMjg5LCAyMDI5MywgMjAyOTcsIAorICAgIDIwMzAxLCAyMDMwNSwgMjAzMDksIDIwMzEzLCAyMDMxNywgMjAzMjEsIDIwMzI1LCAyMDMyOSwgMjAzMzMsIDIwMzM3LCAKKyAgICAyMDM0MSwgMjAzNDUsIDIwMzQ5LCAyMDM1MywgMjAzNTcsIDIwMzYxLCAyMDM2NSwgMjAzNjksIDIwMzczLCAyMDM3NywgCisgICAgMjAzODEsIDIwMzg1LCAyMDM4OSwgMjAzOTMsIDIwMzk3LCAyMDQwMSwgMjA0MDUsIDIwNDA5LCAyMDQxMywgMjA0MTcsIAorICAgIDIwNDIxLCAyMDQyNSwgMjA0MjksIDIwNDMzLCAyMDQzNywgMjA0NDEsIDIwNDQ1LCAyMDQ0OSwgMjA0NTMsIDIwNDU3LCAKKyAgICAyMDQ2MSwgMjA0NjUsIDIwNDY5LCAyMDQ3MywgMjA0NzcsIDIwNDgxLCAyMDQ4NSwgMjA0ODksIDIwNDkzLCAyMDQ5NywgCisgICAgMjA1MDEsIDIwNTA1LCAyMDUwOSwgMjA1MTMsIDIwNTE3LCAyMDUyMSwgMjA1MjUsIDIwNTI5LCAyMDUzMywgMjA1MzcsIAorICAgIDIwNTQxLCAyMDU0NSwgMjA1NDksIDIwNTUzLCAyMDU1NywgMjA1NjEsIDIwNTY1LCAyMDU2OSwgMjA1NzMsIDIwNTc3LCAKKyAgICAyMDU4MSwgMjA1ODUsIDIwNTg5LCAyMDU5MywgMjA1OTcsIDIwNjAxLCAyMDYwNSwgMjA2MDksIDIwNjEzLCAyMDYxNywgCisgICAgMjA2MjAsIDIwNjI0LCAyMDYyNywgMjA2MzEsIDIwNjM1LCAyMDYzOCwgMjA2NDIsIDIwNjQ2LCAyMDY0OSwgMjA2NTMsIAorICAgIDIwNjU3LCAyMDY2MSwgMjA2NjUsIDIwNjY4LCAyMDY3MiwgMjA2NzYsIDIwNjgwLCAyMDY4NCwgMjA2ODgsIDIwNjkyLCAKKyAgICAyMDY5NSwgMjA2OTksIDIwNzAzLCAyMDcwNywgMjA3MTEsIDIwNzE1LCAyMDcxOSwgMjA3MjMsIDIwNzI3LCAyMDczMSwgCisgICAgMjA3MzUsIDIwNzM5LCAyMDc0MywgMjA3NDcsIDIwNzUxLCAyMDc1NSwgMjA3NTksIDIwNzYzLCAyMDc2NywgMjA3NzEsIAorICAgIDIwNzc1LCAyMDc3OSwgMjA3ODMsIDIwNzg3LCAyMDc5MSwgMjA3OTUsIDIwNzk5LCAyMDgwMywgMjA4MDcsIDIwODExLCAKKyAgICAyMDgxNSwgMjA4MTksIDIwODIzLCAyMDgyNywgMjA4MzEsIDIwODM1LCAyMDgzOSwgMjA4NDMsIDIwODQ3LCAyMDg1MSwgCisgICAgMjA4NTUsIDIwODU5LCAyMDg2MywgMjA4NjcsIDIwODcxLCAyMDg3NSwgMjA4NzksIDIwODgzLCAyMDg4NywgMjA4OTEsIAorICAgIDIwODk1LCAyMDg5OSwgMjA5MDMsIDIwOTA3LCAyMDkxMSwgMjA5MTUsIDIwOTE5LCAyMDkyMywgMjA5MjcsIDIwOTMxLCAKKyAgICAyMDkzNSwgMjA5MzksIDIwOTQzLCAyMDk0NywgMjA5NTEsIDIwOTU1LCAyMDk1OSwgMjA5NjMsIDIwOTY3LCAyMDk3MSwgCisgICAgMjA5NzUsIDIwOTc5LCAyMDk4MywgMjA5ODcsIDIwOTkxLCAyMDk5NSwgMjA5OTksIDIxMDAzLCAyMTAwNywgMjEwMTEsIAorICAgIDIxMDE1LCAyMTAxOSwgMjEwMjMsIDIxMDI3LCAyMTAzMSwgMjEwMzUsIDIxMDM5LCAyMTA0MywgMjEwNDcsIDIxMDUxLCAKKyAgICAyMTA1NSwgMjEwNTksIDIxMDYzLCAyMTA2NywgMjEwNzEsIDIxMDc1LCAyMTA3OSwgMjEwODMsIDIxMDg3LCAyMTA5MSwgCisgICAgMjEwOTUsIDIxMDk5LCAyMTEwMywgMjExMDcsIDIxMTExLCAyMTExNSwgMjExMTksIDIxMTIzLCAyMTEyNywgMjExMzEsIAorICAgIDIxMTM1LCAyMTEzOSwgMjExNDMsIDIxMTQ3LCAyMTE1MSwgMjExNTUsIDIxMTU5LCAyMTE2MywgMjExNjcsIDIxMTcxLCAKKyAgICAyMTE3NSwgMjExNzksIDIxMTgzLCAyMTE4NywgMjExOTEsIDIxMTk1LCAyMTE5OSwgMjEyMDMsIDIxMjA3LCAyMTIxMSwgCisgICAgMjEyMTUsIDIxMjE5LCAyMTIyMywgMjEyMjcsIDIxMjMxLCAyMTIzNSwgMjEyMzksIDIxMjQzLCAyMTI0NywgMjEyNTAsIAorICAgIDIxMjU0LCAyMTI1OCwgMjEyNjIsIDIxMjY2LCAyMTI3MCwgMjEyNzQsIDIxMjc4LCAyMTI4MiwgMjEyODYsIDIxMjkwLCAKKyAgICAyMTI5NCwgMjEyOTgsIDIxMzAyLCAyMTMwNiwgMjEzMTAsIDIxMzE0LCAyMTMxOCwgMjEzMjIsIDIxMzI2LCAyMTMzMCwgCisgICAgMjEzMzQsIDIxMzM4LCAyMTM0MiwgMjEzNDUsIDIxMzQ5LCAyMTM1MywgMjEzNTcsIDIxMzYxLCAyMTM2NSwgMjEzNjksIAorICAgIDIxMzczLCAyMTM3NywgMjEzODEsIDIxMzg1LCAyMTM4OSwgMjEzOTMsIDIxMzk3LCAyMTQwMSwgMjE0MDUsIDIxNDA5LCAKKyAgICAyMTQxMywgMjE0MTcsIDIxNDIxLCAyMTQyNSwgMjE0MjksIDIxNDMzLCAyMTQzNywgMjE0NDEsIDIxNDQ1LCAyMTQ0OSwgCisgICAgMjE0NTMsIDIxNDU3LCAyMTQ2MSwgMjE0NjUsIDIxNDY5LCAyMTQ3MywgMjE0NzcsIDIxNDgxLCAyMTQ4NSwgMjE0ODksIAorICAgIDIxNDkzLCAyMTQ5NywgMjE1MDEsIDIxNTA1LCAyMTUwOSwgMjE1MTMsIDIxNTE3LCAyMTUyMSwgMjE1MjUsIDIxNTI5LCAKKyAgICAyMTUzMywgMCwgMjE1MzcsIDIxNTQxLCAyMTU0NSwgMjE1NDksIDAsIDAsIDIxNTUzLCAyMTU1NywgMjE1NjEsIDIxNTY1LCAKKyAgICAyMTU2OSwgMjE1NzMsIDIxNTc3LCAwLCAyMTU4MSwgMCwgMjE1ODUsIDIxNTg5LCAyMTU5MywgMjE1OTcsIDAsIDAsIAorICAgIDIxNjAxLCAyMTYwNSwgMjE2MDksIDIxNjEzLCAyMTYxNywgMjE2MjEsIDIxNjI1LCAyMTYyOSwgMjE2MzMsIDIxNjM3LCAKKyAgICAyMTY0MSwgMjE2NDUsIDIxNjQ5LCAyMTY1MywgMjE2NTcsIDIxNjYxLCAyMTY2NSwgMjE2NjksIDIxNjczLCAyMTY3NywgCisgICAgMjE2ODEsIDIxNjg1LCAyMTY4OSwgMjE2OTIsIDIxNjk2LCAyMTcwMCwgMjE3MDQsIDIxNzA4LCAyMTcxMiwgMjE3MTYsIAorICAgIDIxNzIwLCAyMTcyNCwgMjE3MjgsIDIxNzMyLCAyMTczNiwgMjE3NDAsIDIxNzQ0LCAyMTc0OCwgMjE3NTIsIDIxNzU2LCAKKyAgICAyMTc2MCwgMCwgMjE3NjQsIDIxNzY4LCAyMTc3MiwgMjE3NzYsIDAsIDAsIDIxNzgwLCAyMTc4NCwgMjE3ODgsIDIxNzkyLCAKKyAgICAyMTc5NiwgMjE4MDAsIDIxODA0LCAyMTgwOCwgMjE4MTIsIDIxODE2LCAyMTgyMCwgMjE4MjQsIDIxODI4LCAyMTgzMiwgCisgICAgMjE4MzYsIDIxODQwLCAyMTg0NCwgMjE4NDksIDIxODU0LCAyMTg1OSwgMjE4NjUsIDIxODcxLCAyMTg3NiwgMjE4ODEsIAorICAgIDIxODg3LCAyMTg5MCwgMjE4OTQsIDIxODk4LCAyMTkwMiwgMjE5MDYsIDIxOTEwLCAyMTkxNCwgMjE5MTgsIDAsIDIxOTIyLCAKKyAgICAyMTkyNiwgMjE5MzAsIDIxOTM0LCAwLCAwLCAyMTkzOCwgMjE5NDIsIDIxOTQ2LCAyMTk1MCwgMjE5NTQsIDIxOTU4LCAKKyAgICAyMTk2MiwgMCwgMjE5NjYsIDAsIDIxOTcwLCAyMTk3NCwgMjE5NzgsIDIxOTgyLCAwLCAwLCAyMTk4NiwgMjE5OTAsIAorICAgIDIxOTk0LCAyMTk5OCwgMjIwMDIsIDIyMDA2LCAyMjAxMCwgMjIwMTQsIDIyMDE4LCAyMjAyMywgMjIwMjgsIDIyMDMzLCAKKyAgICAyMjAzOSwgMjIwNDUsIDIyMDUwLCAwLCAyMjA1NSwgMjIwNTksIDIyMDYzLCAyMjA2NywgMjIwNzEsIDIyMDc1LCAyMjA3OSwgCisgICAgMjIwODMsIDIyMDg3LCAyMjA5MSwgMjIwOTUsIDIyMDk5LCAyMjEwMywgMjIxMDcsIDIyMTExLCAyMjExNSwgMjIxMTksIAorICAgIDIyMTIyLCAyMjEyNiwgMjIxMzAsIDIyMTM0LCAyMjEzOCwgMjIxNDIsIDIyMTQ2LCAyMjE1MCwgMjIxNTQsIDIyMTU4LCAKKyAgICAyMjE2MiwgMjIxNjYsIDIyMTcwLCAyMjE3NCwgMjIxNzgsIDIyMTgyLCAyMjE4NiwgMjIxOTAsIDIyMTk0LCAyMjE5OCwgCisgICAgMjIyMDIsIDIyMjA2LCAyMjIxMCwgMjIyMTQsIDIyMjE4LCAyMjIyMiwgMjIyMjYsIDIyMjMwLCAyMjIzNCwgMjIyMzgsIAorICAgIDIyMjQyLCAyMjI0NiwgMjIyNTAsIDIyMjU0LCAyMjI1OCwgMjIyNjIsIDIyMjY2LCAyMjI3MCwgMjIyNzQsIDIyMjc4LCAwLCAKKyAgICAyMjI4MiwgMjIyODYsIDIyMjkwLCAyMjI5NCwgMCwgMCwgMjIyOTgsIDIyMzAyLCAyMjMwNiwgMjIzMTAsIDIyMzE0LCAKKyAgICAyMjMxOCwgMjIzMjIsIDIyMzI2LCAyMjMzMCwgMjIzMzQsIDIyMzM4LCAyMjM0MiwgMjIzNDYsIDIyMzUwLCAyMjM1NCwgCisgICAgMjIzNTgsIDIyMzYyLCAyMjM2NiwgMjIzNzAsIDIyMzc0LCAyMjM3OCwgMjIzODIsIDIyMzg2LCAyMjM5MCwgMjIzOTQsIAorICAgIDIyMzk4LCAyMjQwMiwgMjI0MDYsIDIyNDEwLCAyMjQxNCwgMjI0MTgsIDIyNDIyLCAyMjQyNiwgMjI0MzAsIDIyNDM0LCAKKyAgICAyMjQzOCwgMjI0NDIsIDIyNDQ2LCAyMjQ1MCwgMjI0NTQsIDIyNDU4LCAyMjQ2MiwgMjI0NjYsIDIyNDcwLCAyMjQ3NCwgCisgICAgMjI0NzgsIDIyNDgyLCAyMjQ4NiwgMjI0OTAsIDIyNDk0LCAyMjQ5OCwgMjI1MDIsIDIyNTA2LCAyMjUxMCwgMjI1MTQsIAorICAgIDIyNTE4LCAyMjUyMiwgMjI1MjUsIDIyNTI5LCAyMjUzMywgMjI1MzcsIDIyNTQxLCAyMjU0NSwgMjI1NDksIDIyNTUzLCAKKyAgICAyMjU1NywgMjI1NjEsIDAsIDAsIDIyNTY1LCAyMjU3NCwgMjI1ODAsIDIyNTg1LCAyMjU4OSwgMjI1OTIsIDIyNTk3LCAKKyAgICAyMjYwMCwgMjI2MDMsIDIyNjA2LCAyMjYxMSwgMjI2MTUsIDIyNjIwLCAyMjYyMywgMjI2MjYsIDIyNjI5LCAyMjYzMiwgCisgICAgMjI2MzUsIDIyNjM4LCAyMjY0MiwgMjI2NDUsIDIyNjQ5LCAyMjY1MywgMjI2NTcsIDIyNjYxLCAyMjY2NSwgMjI2NjksIAorICAgIDIyNjczLCAyMjY3NywgMjI2ODEsIDIyNjg1LCAyMjY4OSwgMCwgMCwgMCwgMjI2OTUsIDIyNzAxLCAyMjcwNSwgMjI3MDksIAorICAgIDIyNzEzLCAyMjcxOSwgMjI3MjMsIDIyNzI3LCAyMjczMSwgMjI3MzcsIDIyNzQxLCAyMjc0NSwgMjI3NDksIDIyNzU1LCAKKyAgICAyMjc1OSwgMjI3NjMsIDIyNzY3LCAyMjc3MywgMjI3NzksIDIyNzg1LCAyMjc5MywgMjI3OTksIDIyODA1LCAyMjgxMSwgCisgICAgMjI4MTcsIDIyODIzLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjgyOSwgMjI4MzIsIDIyODM1LCAyMjgzOCwgMjI4NDEsIDIyODQ0LCAKKyAgICAyMjg0OCwgMjI4NTIsIDIyODU1LCAyMjg1OSwgMjI4NjMsIDIyODY3LCAyMjg3MSwgMjI4NzUsIDIyODc4LCAyMjg4MiwgCisgICAgMjI4ODYsIDIyODkwLCAyMjg5NCwgMjI4OTgsIDIyOTAyLCAyMjkwNiwgMjI5MTAsIDIyOTE0LCAyMjkxOCwgMjI5MjIsIAorICAgIDIyOTI1LCAyMjkyOSwgMjI5MzMsIDIyOTM3LCAyMjk0MSwgMjI5NDUsIDIyOTQ5LCAyMjk1MywgMjI5NTcsIDIyOTYxLCAKKyAgICAyMjk2NSwgMjI5NjksIDIyOTczLCAyMjk3NywgMjI5ODEsIDIyOTg1LCAyMjk4OSwgMjI5OTMsIDIyOTk3LCAyMzAwMSwgCisgICAgMjMwMDQsIDIzMDA4LCAyMzAxMiwgMjMwMTYsIDIzMDIwLCAyMzAyNCwgMjMwMjgsIDIzMDMyLCAyMzAzNiwgMjMwNDAsIAorICAgIDIzMDQ0LCAyMzA0OCwgMjMwNTIsIDIzMDU2LCAyMzA2MCwgMjMwNjQsIDIzMDY4LCAyMzA3MiwgMjMwNzYsIDIzMDgwLCAKKyAgICAyMzA4NCwgMjMwODgsIDIzMDkyLCAyMzA5NiwgMjMxMDAsIDIzMTA0LCAyMzEwOCwgMjMxMTIsIDIzMTE2LCAyMzEyMCwgCisgICAgMjMxMjQsIDIzMTI4LCAyMzEzMiwgMjMxMzYsIDIzMTM5LCAyMzE0MywgMjMxNDcsIDIzMTUxLCAyMzE1NSwgMjMxNTksIDAsIAorICAgIDAsIDIzMTYzLCAyMzE2OCwgMjMxNzMsIDIzMTc4LCAyMzE4MywgMjMxODgsIDAsIDAsIDIzMTkzLCAyMzE5NywgMjMyMDAsIAorICAgIDIzMjA0LCAyMzIwNywgMjMyMTEsIDIzMjE0LCAyMzIxOCwgMjMyMjQsIDIzMjI5LCAyMzIzMywgMjMyMzYsIDIzMjQwLCAKKyAgICAyMzI0NCwgMjMyNDksIDIzMjUzLCAyMzI1OCwgMjMyNjIsIDIzMjY3LCAyMzI3MSwgMjMyNzYsIDIzMjgwLCAyMzI4NSwgCisgICAgMjMyOTEsIDIzMjk1LCAyMzMwMCwgMjMzMDQsIDIzMzA5LCAyMzMxNSwgMjMzMTksIDIzMzI1LCAyMzMzMSwgMjMzMzUsIAorICAgIDIzMzQwLCAyMzM0OCwgMjMzNTYsIDIzMzYzLCAyMzM2OCwgMjMzNzMsIDIzMzgyLCAyMzM4OCwgMjMzOTYsIDIzNDAxLCAKKyAgICAyMzQwNywgMjM0MTEsIDIzNDE1LCAyMzQxOSwgMjM0MjMsIDIzNDI3LCAyMzQzMSwgMjM0MzUsIDIzNDM5LCAyMzQ0MywgCisgICAgMjM0NDcsIDIzNDUzLCAyMzQ1OCwgMjM0NjMsIDIzNDY2LCAyMzQ3MCwgMjM0NzQsIDIzNDc5LCAyMzQ4MywgMjM0ODgsIAorICAgIDIzNDkyLCAyMzQ5NywgMjM1MDEsIDIzNTA2LCAyMzUxMCwgMjM1MTUsIDIzNTE5LCAyMzUyNCwgMjM1MjgsIDIzNTMzLCAKKyAgICAyMzUzOSwgMjM1NDMsIDIzNTQ4LCAyMzU1MywgMjM1NTcsIDIzNTYxLCAyMzU2NSwgMjM1NjksIDIzNTcyLCAyMzU3NiwgCisgICAgMjM1ODIsIDIzNTg3LCAyMzU5MiwgMjM1OTYsIDIzNjAwLCAyMzYwNCwgMjM2MDksIDIzNjEzLCAyMzYxOCwgMjM2MjIsIAorICAgIDIzNjI3LCAyMzYzMCwgMjM2MzQsIDIzNjM4LCAyMzY0MywgMjM2NDcsIDIzNjUyLCAyMzY1NiwgMjM2NjEsIDIzNjY3LCAKKyAgICAyMzY3MSwgMjM2NzUsIDIzNjc5LCAyMzY4MywgMjM2ODcsIDIzNjkxLCAyMzY5NSwgMjM2OTksIDIzNzAzLCAyMzcwNywgCisgICAgMjM3MTEsIDIzNzE3LCAyMzcyMCwgMjM3MjQsIDIzNzI4LCAyMzczMywgMjM3MzcsIDIzNzQyLCAyMzc0NiwgMjM3NTEsIAorICAgIDIzNzU1LCAyMzc2MCwgMjM3NjQsIDIzNzY5LCAyMzc3MywgMjM3NzgsIDIzNzgyLCAyMzc4NywgMjM3OTMsIDIzNzk3LCAKKyAgICAyMzgwMSwgMjM4MDcsIDIzODEzLCAyMzgxOSwgMjM4MjUsIDIzODI5LCAyMzgzMywgMjM4MzcsIDIzODQxLCAyMzg0NSwgCisgICAgMjM4NDksIDIzODU1LCAyMzg1OSwgMjM4NjMsIDIzODY3LCAyMzg3MiwgMjM4NzYsIDIzODgxLCAyMzg4NSwgMjM4OTAsIAorICAgIDIzODk0LCAyMzg5OSwgMjM5MDMsIDIzOTA4LCAyMzkxMiwgMjM5MTcsIDIzOTIxLCAyMzkyNiwgMjM5MzIsIDIzOTM2LCAKKyAgICAyMzk0MiwgMjM5NDYsIDIzOTUwLCAyMzk1NCwgMjM5NTgsIDIzOTYyLCAyMzk2NiwgMjM5NzIsIDIzOTc1LCAyMzk3OSwgCisgICAgMjM5ODMsIDIzOTg4LCAyMzk5MiwgMjM5OTcsIDI0MDAxLCAyNDAwNiwgMjQwMTAsIDI0MDE1LCAyNDAxOSwgMjQwMjQsIAorICAgIDI0MDI4LCAyNDAzMywgMjQwMzcsIDI0MDQyLCAyNDA0OCwgMjQwNTIsIDI0MDU3LCAyNDA2MSwgMjQwNjcsIDI0MDczLCAKKyAgICAyNDA3NywgMjQwODEsIDI0MDg1LCAyNDA4OSwgMjQwOTMsIDI0MDk3LCAyNDEwMywgMjQxMDcsIDI0MTExLCAyNDExNSwgCisgICAgMjQxMjAsIDI0MTI0LCAyNDEyOSwgMjQxMzMsIDI0MTM4LCAyNDE0NCwgMjQxNDgsIDI0MTUzLCAyNDE1NywgMjQxNjEsIAorICAgIDI0MTY1LCAyNDE2OSwgMjQxNzMsIDI0MTc3LCAyNDE4MSwgMjQxODcsIDI0MTkxLCAyNDE5NSwgMjQxOTksIDI0MjA0LCAKKyAgICAyNDIwOCwgMjQyMTMsIDI0MjE3LCAyNDIyMiwgMjQyMjYsIDI0MjMxLCAyNDIzNSwgMjQyNDAsIDI0MjQ0LCAyNDI0OSwgCisgICAgMjQyNTMsIDI0MjU4LCAyNDI2MSwgMjQyNjUsIDI0MjY5LCAyNDI3MywgMjQyNzcsIDI0MjgxLCAyNDI4NSwgMjQyODksIAorICAgIDI0MjkzLCAyNDI5OSwgMjQzMDMsIDI0MzA3LCAyNDMxMSwgMjQzMTYsIDI0MzIwLCAyNDMyNSwgMjQzMjksIDI0MzM0LCAKKyAgICAyNDMzOCwgMjQzNDMsIDI0MzQ3LCAyNDM1MiwgMjQzNTYsIDI0MzYxLCAyNDM2NSwgMjQzNzAsIDI0Mzc2LCAyNDM3OSwgCisgICAgMjQzODQsIDI0Mzg4LCAyNDM5MywgMjQzOTksIDI0NDA1LCAyNDQxMSwgMjQ0MTcsIDI0NDIzLCAyNDQyOSwgMjQ0MzUsIAorICAgIDI0NDM5LCAyNDQ0MywgMjQ0NDcsIDI0NDUxLCAyNDQ1NSwgMjQ0NTksIDI0NDYzLCAyNDQ2NywgMjQ0NzIsIDI0NDc2LCAKKyAgICAyNDQ4MSwgMjQ0ODUsIDI0NDkwLCAyNDQ5NCwgMjQ0OTksIDI0NTAzLCAyNDUwOCwgMjQ1MTIsIDI0NTE3LCAyNDUyMSwgCisgICAgMjQ1MjYsIDI0NTMwLCAyNDUzNCwgMjQ1MzgsIDI0NTQyLCAyNDU0NiwgMjQ1NTAsIDI0NTU0LCAyNDU2MCwgMjQ1NjMsIAorICAgIDI0NTY3LCAyNDU3MSwgMjQ1NzYsIDI0NTgwLCAyNDU4NSwgMjQ1ODksIDI0NTk0LCAyNDU5OCwgMjQ2MDMsIDI0NjA3LCAKKyAgICAyNDYxMiwgMjQ2MTYsIDI0NjIxLCAyNDYyNSwgMjQ2MzAsIDI0NjM2LCAyNDY0MCwgMjQ2NDYsIDI0NjUxLCAyNDY1NywgCisgICAgMjQ2NjEsIDI0NjY3LCAyNDY3MiwgMjQ2NzYsIDI0NjgwLCAyNDY4NCwgMjQ2ODgsIDI0NjkyLCAyNDY5NywgMjQ3MDEsIAorICAgIDI0NzA1LCAyNDcxMCwgMjQ3MTQsIDI0NzE5LCAyNDcyMiwgMjQ3MjYsIDI0NzMwLCAyNDczNCwgMjQ3MzgsIDI0NzQyLCAKKyAgICAyNDc0NiwgMjQ3NTAsIDI0NzU0LCAyNDc1OCwgMjQ3NjIsIDI0NzY2LCAyNDc3MSwgMjQ3NzUsIDI0Nzc5LCAyNDc4NSwgCisgICAgMjQ3ODksIDI0Nzk1LCAyNDc5OSwgMjQ4MDUsIDI0ODA5LCAyNDgxMywgMjQ4MTcsIDI0ODIxLCAyNDgyNSwgMjQ4MzAsIAorICAgIDI0ODM0LCAyNDgzOCwgMjQ4NDIsIDI0ODQ2LCAyNDg1MCwgMjQ4NTQsIDI0ODU4LCAyNDg2MiwgMjQ4NjYsIDI0ODcwLCAKKyAgICAyNDg3NiwgMjQ4ODIsIDI0ODg4LCAyNDg5NCwgMjQ5MDAsIDI0OTA1LCAyNDkxMSwgMjQ5MTcsIDI0OTIzLCAyNDkyNywgCisgICAgMjQ5MzEsIDI0OTM1LCAyNDkzOSwgMjQ5NDMsIDI0OTQ3LCAyNDk1MSwgMjQ5NTUsIDI0OTU5LCAyNDk2MywgMjQ5NjcsIAorICAgIDI0OTcxLCAyNDk3NSwgMjQ5ODAsIDI0OTg1LCAyNDk5MCwgMjQ5OTUsIDI0OTk5LCAyNTAwMywgMjUwMDcsIDI1MDExLCAKKyAgICAyNTAxNSwgMjUwMTksIDI1MDIzLCAyNTAyNywgMjUwMzEsIDI1MDM3LCAyNTA0MywgMjUwNDksIDI1MDU1LCAyNTA2MSwgCisgICAgMjUwNjcsIDI1MDczLCAyNTA3OSwgMjUwODUsIDI1MDg5LCAyNTA5MywgMjUwOTcsIDI1MTAxLCAyNTEwNSwgMjUxMDksIAorICAgIDI1MTEzLCAyNTExOSwgMjUxMjUsIDI1MTMxLCAyNTEzNywgMjUxNDMsIDI1MTQ5LCAyNTE1NSwgMjUxNjEsIDI1MTY3LCAKKyAgICAyNTE3MiwgMjUxNzcsIDI1MTgyLCAyNTE4NywgMjUxOTMsIDI1MTk5LCAyNTIwNSwgMjUyMTEsIDI1MjE3LCAyNTIyMywgCisgICAgMjUyMjksIDI1MjM1LCAyNTI0MSwgMjUyNDcsIDI1MjUzLCAyNTI1OCwgMjUyNjQsIDI1MjcwLCAyNTI3NiwgMjUyODEsIAorICAgIDI1Mjg2LCAyNTI5MSwgMjUyOTYsIDI1MzAxLCAyNTMwNiwgMjUzMTEsIDI1MzE2LCAyNTMyMSwgMjUzMjYsIDI1MzMxLCAKKyAgICAyNTMzNiwgMjUzNDEsIDI1MzQ2LCAyNTM1MSwgMjUzNTYsIDI1MzYxLCAyNTM2NiwgMjUzNzEsIDI1Mzc2LCAyNTM4MSwgCisgICAgMjUzODYsIDI1MzkxLCAyNTM5NiwgMjU0MDEsIDI1NDA2LCAyNTQxMSwgMjU0MTYsIDI1NDIxLCAyNTQyNiwgMjU0MzEsIAorICAgIDI1NDM2LCAyNTQ0MSwgMjU0NDYsIDI1NDUxLCAyNTQ1NiwgMjU0NjEsIDI1NDY2LCAyNTQ3MSwgMjU0NzYsIDI1NDgxLCAKKyAgICAyNTQ4NiwgMjU0OTAsIDI1NDk1LCAyNTUwMCwgMjU1MDUsIDI1NTEwLCAyNTUxNSwgMjU1MjAsIDI1NTI1LCAyNTUzMCwgCisgICAgMjU1MzUsIDI1NTQwLCAyNTU0NSwgMjU1NTAsIDI1NTU1LCAyNTU2MCwgMjU1NjUsIDI1NTcwLCAyNTU3NSwgMjU1ODAsIAorICAgIDI1NTg1LCAyNTU5MCwgMjU1OTUsIDI1NjAwLCAyNTYwNSwgMjU2MTAsIDI1NjE1LCAyNTYyMCwgMjU2MjUsIDI1NjMwLCAKKyAgICAyNTYzNSwgMjU2NDAsIDI1NjQ1LCAyNTY0OSwgMjU2NTQsIDI1NjU5LCAyNTY2NCwgMjU2NjksIDI1Njc0LCAyNTY3OCwgCisgICAgMjU2ODMsIDI1Njg5LCAyNTY5NCwgMjU2OTksIDI1NzA0LCAyNTcwOSwgMjU3MTUsIDI1NzIwLCAyNTcyNSwgMjU3MzAsIAorICAgIDI1NzM1LCAyNTc0MCwgMjU3NDUsIDI1NzUwLCAyNTc1NSwgMjU3NjAsIDI1NzY1LCAyNTc3MCwgMjU3NzUsIDI1NzgwLCAKKyAgICAyNTc4NSwgMjU3OTAsIDI1Nzk1LCAyNTgwMCwgMjU4MDUsIDI1ODEwLCAyNTgxNSwgMjU4MjAsIDI1ODI1LCAyNTgzMCwgCisgICAgMjU4MzUsIDI1ODQwLCAyNTg0NSwgMjU4NTAsIDI1ODU1LCAyNTg2MCwgMjU4NjUsIDI1ODcwLCAyNTg3NSwgMjU4ODAsIAorICAgIDI1ODg1LCAyNTg5MCwgMjU4OTUsIDI1OTAwLCAyNTkwNSwgMjU5MTAsIDI1OTE1LCAyNTkyMCwgMjU5MjUsIDI1OTMwLCAKKyAgICAyNTkzNSwgMjU5NDEsIDI1OTQ2LCAyNTk1MSwgMjU5NTYsIDI1OTYxLCAyNTk2NiwgMjU5NzEsIDI1OTc2LCAyNTk4MSwgCisgICAgMjU5ODYsIDI1OTkxLCAyNTk5NiwgMjYwMDEsIDI2MDA2LCAyNjAxMSwgMjYwMTYsIDI2MDIxLCAyNjAyNiwgMjYwMzEsIAorICAgIDI2MDM2LCAyNjA0MSwgMjYwNDYsIDI2MDUxLCAyNjA1NiwgMjYwNjEsIDI2MDY2LCAyNjA3MSwgMjYwNzYsIDI2MDgxLCAKKyAgICAyNjA4NiwgMjYwOTEsIDI2MDk2LCAyNjEwMSwgMjYxMDYsIDI2MTExLCAyNjExNiwgMjYxMjEsIDI2MTI2LCAyNjEzMSwgCisgICAgMjYxMzcsIDI2MTQxLCAyNjE0NSwgMjYxNDksIDI2MTUzLCAyNjE1NywgMjYxNjEsIDI2MTY1LCAyNjE2OSwgMjYxNzUsIAorICAgIDI2MTgxLCAyNjE4NywgMjYxOTMsIDI2MTk5LCAyNjIwNSwgMjYyMTEsIDI2MjE4LCAyNjIyNCwgMjYyMjksIDI2MjM0LCAKKyAgICAyNjIzOSwgMjYyNDQsIDI2MjQ5LCAyNjI1NCwgMjYyNTksIDI2MjY0LCAyNjI2OSwgMjYyNzQsIDI2Mjc5LCAyNjI4NCwgCisgICAgMjYyODksIDI2Mjk0LCAyNjI5OSwgMjYzMDQsIDI2MzA5LCAyNjMxNCwgMjYzMTksIDI2MzI0LCAyNjMyOSwgMjYzMzQsIAorICAgIDI2MzM5LCAyNjM0NCwgMjYzNDksIDI2MzU0LCAyNjM1OSwgMjYzNjQsIDAsIDAsIDAsIDI2MzcxLCAyNjM4MSwgMjYzODUsIAorICAgIDI2MzkyLCAyNjM5NiwgMjY0MDAsIDI2NDA0LCAyNjQxMiwgMjY0MTYsIDI2NDIxLCAyNjQyNiwgMjY0MzEsIDI2NDM1LCAKKyAgICAyNjQ0MCwgMjY0NDUsIDI2NDQ4LCAyNjQ1MiwgMjY0NTYsIDI2NDY1LCAyNjQ2OSwgMjY0NzMsIDI2NDc5LCAyNjQ4MywgCisgICAgMjY0ODcsIDI2NDk1LCAyNjQ5OSwgMjY1MDcsIDI2NTEzLCAyNjUxOSwgMjY1MjUsIDI2NTMxLCAyNjU0MSwgMjY1NDcsIAorICAgIDI2NTUxLCAyNjU2MCwgMjY1NjMsIDI2NTY5LCAyNjU3MywgMjY1NzksIDI2NTg0LCAyNjU5MCwgMjY1OTgsIDI2NjA0LCAKKyAgICAyNjYwOSwgMjY2MTYsIDI2NjIxLCAyNjYyNSwgMjY2MjksIDI2NjM5LCAyNjY0NSwgMjY2NDksIDI2NjU5LCAyNjY2NSwgCisgICAgMjY2NjksIDI2NjczLCAyNjY4MCwgMjY2ODgsIDI2Njk0LCAyNjcwMCwgMjY3MDksIDI2NzEzLCAyNjcxNywgMjY3MjEsIAorICAgIDI2NzI5LCAyNjczNiwgMjY3NDAsIDI2NzQ0LCAyNjc0OCwgMjY3NTIsIDI2NzU2LCAyNjc2MCwgMjY3NjQsIDI2NzY4LCAKKyAgICAyNjc3MiwgMjY3NzYsIDI2NzgwLCAyNjc4NSwgMjY3OTAsIDI2Nzk1LCAyNjc5OSwgMjY4MDMsIDI2ODA3LCAyNjgxMSwgCisgICAgMjY4MTUsIDI2ODE5LCAyNjgyNywgMjY4MzUsIDI2ODQzLCAyNjg1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY4NTksIAorICAgIDI2ODYzLCAyNjg2NywgMjY4NzEsIDI2ODc1LCAyNjg4MCwgMjY4ODUsIDI2ODkwLCAyNjg5NSwgMjY5MDAsIDI2OTA0LCAKKyAgICAyNjkwOSwgMjY5MTMsIDAsIDI2OTE3LCAyNjkyMiwgMjY5MjcsIDI2OTMyLCAyNjkzNiwgMjY5NDEsIDI2OTQ2LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjk1MSwgMjY5NTUsIDI2OTU5LCAyNjk2MywgMjY5NjcsIDI2OTcyLCAKKyAgICAyNjk3NywgMjY5ODIsIDI2OTg3LCAyNjk5MiwgMjY5OTYsIDI3MDAxLCAyNzAwNSwgMjcwMDksIDI3MDE0LCAyNzAxOSwgCisgICAgMjcwMjQsIDI3MDI5LCAyNzAzMywgMjcwMzgsIDI3MDQzLCAyNzA0OCwgMjcwNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI3MDU5LCAyNzA2MywgMjcwNjcsIDI3MDcxLCAyNzA3NSwgMjcwODAsIDI3MDg1LCAyNzA5MCwgMjcwOTUsIDI3MTAwLCAKKyAgICAyNzEwNCwgMjcxMDksIDI3MTEzLCAyNzExNywgMjcxMjIsIDI3MTI3LCAyNzEzMiwgMjcxMzcsIDI3MTQxLCAyNzE0NiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcxNTEsIDI3MTU1LCAyNzE1OSwgMjcxNjMsIDI3MTY3LCAKKyAgICAyNzE3MiwgMjcxNzcsIDI3MTgyLCAyNzE4NywgMjcxOTIsIDI3MTk2LCAyNzIwMSwgMjcyMDUsIDAsIDI3MjA5LCAyNzIxNCwgCisgICAgMjcyMTksIDAsIDI3MjI0LCAyNzIyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcyMzQsIDI3MjM3LCAKKyAgICAyNzI0MSwgMjcyNDUsIDI3MjQ5LCAyNzI1MywgMjcyNTcsIDI3MjYxLCAyNzI2NSwgMjcyNjksIDI3MjczLCAyNzI3NywgCisgICAgMjcyODEsIDI3Mjg1LCAyNzI4OSwgMjcyOTMsIDI3Mjk3LCAyNzMwMSwgMjczMDQsIDI3MzA4LCAyNzMxMiwgMjczMTYsIAorICAgIDI3MzIwLCAyNzMyNCwgMjczMjgsIDI3MzMyLCAyNzMzNiwgMjczNDAsIDI3MzQ0LCAyNzM0OCwgMjczNTIsIDI3MzU2LCAKKyAgICAyNzM2MCwgMjczNjMsIDI3MzY3LCAyNzM3MSwgMjczNzcsIDI3MzgzLCAyNzM4OSwgMjczOTUsIDI3NDAxLCAyNzQwNywgCisgICAgMjc0MTMsIDI3NDE5LCAyNzQyNSwgMjc0MzEsIDI3NDM3LCAyNzQ0MywgMjc0NDksIDI3NDU1LCAyNzQ2NCwgMjc0NzMsIAorICAgIDI3NDc5LCAyNzQ4NSwgMjc0OTEsIDI3NDk2LCAyNzUwMCwgMjc1MDUsIDI3NTEwLCAyNzUxNSwgMjc1MTksIDI3NTI0LCAKKyAgICAyNzUyOSwgMjc1MzQsIDI3NTM4LCAyNzU0MywgMjc1NDcsIDI3NTUyLCAyNzU1NywgMjc1NjIsIDI3NTY3LCAyNzU3MSwgCisgICAgMjc1NzUsIDI3NTc5LCAyNzU4MywgMjc1ODcsIDI3NTkxLCAyNzU5NSwgMjc1OTksIDI3NjAzLCAyNzYwNywgMjc2MTMsIAorICAgIDI3NjE3LCAyNzYyMSwgMjc2MjUsIDI3NjI5LCAyNzYzMywgMjc2NDEsIDI3NjQ3LCAyNzY1MSwgMjc2NTcsIDI3NjYxLCAKKyAgICAyNzY2NywgMjc2NzEsIDAsIDAsIDI3Njc1LCAyNzY3OSwgMjc2ODIsIDI3Njg1LCAyNzY4OCwgMjc2OTEsIDI3Njk0LCAKKyAgICAyNzY5NywgMjc3MDEsIDI3NzA0LCAwLCAwLCAwLCAwLCAwLCAwLCAyNzcwOCwgMjc3MTYsIDI3NzI0LCAyNzczMiwgMjc3NDAsIAorICAgIDI3NzQ4LCAyNzc1NiwgMjc3NjQsIDI3NzcyLCAyNzc4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc3ODgsIDI3NzkxLCAyNzc5NCwgCisgICAgMjc3OTcsIDI3ODAyLCAyNzgwNSwgMjc4MTAsIDI3ODE3LCAyNzgyNSwgMjc4MzAsIDI3ODM3LCAyNzg0MCwgMjc4NDcsIAorICAgIDI3ODU0LCAyNzg2MSwgMCwgMjc4NjUsIDI3ODY5LCAyNzg3MiwgMjc4NzUsIDI3ODc4LCAyNzg4MSwgMjc4ODQsIDI3ODg3LCAKKyAgICAyNzg5MSwgMjc4OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDI3ODk4LCAyNzkwMSwgMjc5MDQsIDI3OTA3LCAyNzkxMCwgMjc5MTMsIAorICAgIDI3OTE3LCAyNzkyMSwgMjc5MjUsIDI3OTI5LCAyNzkzMywgMjc5MzcsIDI3OTQwLCAyNzk0NCwgMjc5NDgsIDI3OTUxLCAKKyAgICAyNzk1NSwgMjc5NTksIDI3OTYzLCAyNzk2NywgMjc5NzEsIDI3OTc1LCAyNzk3OSwgMjc5ODIsIDI3OTg2LCAyNzk5MCwgCisgICAgMjc5OTQsIDI3OTk3LCAyODAwMSwgMjgwMDUsIDI4MDA5LCAyODAxMywgMjgwMTcsIDI4MDIxLCAyODAyNSwgMjgwMjksIAorICAgIDI4MDM2LCAyODA0MSwgMjgwNDYsIDI4MDUxLCAyODA1NiwgMjgwNjIsIDI4MDY4LCAyODA3NCwgMjgwODAsIDI4MDg1LCAKKyAgICAyODA5MSwgMjgwOTcsIDI4MTAyLCAyODEwOCwgMjgxMTQsIDI4MTIwLCAyODEyNiwgMjgxMzIsIDI4MTM3LCAyODE0MywgCisgICAgMjgxNDgsIDI4MTU0LCAyODE2MCwgMjgxNjYsIDI4MTcyLCAyODE3OCwgMjgxODMsIDI4MTg4LCAyODE5NCwgMjgyMDAsIAorICAgIDI4MjA1LCAyODIxMSwgMjgyMTYsIDI4MjIyLCAyODIyNywgMjgyMzIsIDI4MjM4LCAyODI0NCwgMjgyNTAsIDI4MjU2LCAKKyAgICAyODI2MiwgMjgyNjgsIDI4Mjc0LCAyODI4MCwgMjgyODYsIDI4MjkyLCAyODI5OCwgMjgzMDQsIDI4MzA5LCAyODMxNCwgCisgICAgMjgzMjAsIDI4MzI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODMzMiwgMjgzNDEsIDI4MzUwLCAyODM1OCwgMjgzNjYsIAorICAgIDI4Mzc2LCAyODM4NCwgMjgzOTMsIDI4NDAwLCAyODQwNywgMjg0MTQsIDI4NDIyLCAyODQzMCwgMjg0MzgsIDI4NDQ2LCAKKyAgICAyODQ1NCwgMjg0NjIsIDI4NDcwLCAyODQ3OCwgMjg0ODUsIDI4NDkzLCAyODUwMSwgMjg1MDksIDI4NTE3LCAyODUyNSwgCisgICAgMjg1MzUsIDI4NTQ1LCAyODU1NSwgMjg1NjUsIDI4NTc1LCAyODU4NSwgMjg1OTUsIDI4NjA1LCAyODYxNSwgMjg2MjUsIAorICAgIDI4NjM1LCAyODY0NSwgMjg2NTUsIDI4NjY1LCAyODY3MywgMjg2ODEsIDI4NjkxLCAyODY5OSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjg3MDksIDI4NzEzLCAyODcxNywgMjg3MjEsIDI4NzI1LCAyODcyOSwgMjg3MzMsIDI4NzM3LCAyODc0MSwgMjg3NDUsIAorICAgIDI4NzQ5LCAyODc1MywgMjg3NTcsIDI4NzYxLCAyODc2NSwgMjg3NjksIDI4NzczLCAyODc3NywgMjg3ODEsIDI4Nzg1LCAKKyAgICAyODc4OSwgMjg3OTMsIDI4Nzk3LCAyODgwMSwgMjg4MDcsIDI4ODExLCAyODgxNywgMjg4MjEsIDI4ODI3LCAyODgzMSwgCisgICAgMjg4MzcsIDI4ODQxLCAyODg0NSwgMjg4NDksIDI4ODUzLCAyODg1NywgMjg4NjEsIDI4ODY3LCAyODg3MywgMjg4NzksIAorICAgIDI4ODg1LCAyODg5MSwgMjg4OTcsIDI4OTAyLCAyODkwOCwgMjg5MTQsIDI4OTIwLCAyODkyNiwgMjg5MzMsIDI4OTM5LCAKKyAgICAyODk0NCwgMjg5NDksIDI4OTUzLCAyODk1NywgMjg5NjEsIDI4OTY1LCAyODk2OSwgMjg5NzMsIDI4OTc3LCAyODk4MywgCisgICAgMjg5ODksIDI4OTk1LCAyOTAwMCwgMjkwMDcsIDI5MDEyLCAyOTAxNywgMjkwMjMsIDI5MDI4LCAyOTAzNSwgMjkwNDIsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5MDQ4LCAyOTA1NCwgMjkwNTgsIDI5MDYzLCAyOTA2OCwgMjkwNzMsIAorICAgIDI5MDc4LCAyOTA4MywgMjkwODgsIDI5MDkzLCAyOTA5OCwgMjkxMDMsIDI5MTA4LCAyOTExMywgMjkxMTgsIDI5MTIzLCAKKyAgICAyOTEyOCwgMjkxMzIsIDI5MTM3LCAyOTE0MiwgMjkxNDcsIDI5MTUxLCAyOTE1NSwgMjkxNjAsIDI5MTY1LCAyOTE3MCwgCisgICAgMjkxNzUsIDI5MTgwLCAyOTE4NSwgMjkxODksIDI5MTk0LCAwLCAyOTE5OSwgMjkyMDQsIDI5MjA5LCAyOTIxNCwgMjkyMjAsIAorICAgIDI5MjI2LCAyOTIzMiwgMjkyMzgsIDI5MjQzLCAyOTI0OCwgMjkyNTQsIDI5MjYxLCAwLCAwLCAwLCAwLCAyOTI2OCwgCisgICAgMjkyNzMsIDI5Mjc5LCAyOTI4NSwgMjkyOTEsIDI5Mjk3LCAyOTMwMiwgMjkzMDcsIDI5MzEzLCAyOTMxOSwgMjkzMjQsIAorICAgIDI5MzI5LCAwLCAwLCAwLCAwLCAyOTMzNCwgMCwgMCwgMCwgMjkzMzksIDI5MzQ0LCAyOTM0OSwgMjkzNTQsIDI5MzU4LCAKKyAgICAyOTM2MiwgMjkzNjYsIDI5MzcwLCAyOTM3NCwgMjkzNzgsIDI5MzgzLCAyOTM4NywgMjkzOTIsIDI5Mzk3LCAyOTQwMywgCisgICAgMjk0MDksIDI5NDE1LCAyOTQyMSwgMjk0MjYsIDI5NDMyLCAyOTQzOCwgMjk0NDQsIDI5NDQ5LCAyOTQ1NSwgMjk0NjAsIAorICAgIDI5NDY2LCAyOTQ3MiwgMjk0NzcsIDI5NDgzLCAyOTQ4OSwgMjk0OTUsIDI5NTAxLCAyOTUwNiwgMjk1MTEsIDI5NTE3LCAKKyAgICAyOTUyMywgMjk1MjgsIDI5NTM0LCAyOTUzOSwgMjk1NDUsIDI5NTUwLCAyOTU1NiwgMCwgMCwgMjk1NjIsIDI5NTY4LCAKKyAgICAyOTU3NCwgMjk1ODAsIDI5NTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTU5MiwgMjk2MDEsIAorICAgIDI5NjEwLCAyOTYxOCwgMjk2MjcsIDI5NjM2LCAyOTY0NCwgMjk2NTMsIDI5NjYyLCAyOTY3MSwgMjk2ODAsIDI5Njg4LCAKKyAgICAyOTY5NywgMjk3MDYsIDI5NzE0LCAyOTcyMywgMjk3MzIsIDI5NzQxLCAyOTc1MCwgMjk3NTksIDI5NzY4LCAyOTc3NiwgCisgICAgMjk3ODUsIDI5NzkzLCAyOTgwMSwgMjk4MTAsIDI5ODE4LCAyOTgyNywgMjk4MzYsIDI5ODQ1LCAyOTg1NCwgMjk4NjMsIAorICAgIDI5ODcyLCAyOTg4MCwgMjk4ODksIDI5ODk4LCAyOTkwNiwgMjk5MTUsIDI5OTI0LCAyOTkzMywgMjk5NDIsIDI5OTUxLCAKKyAgICAyOTk2MCwgMjk5NjksIDAsIDAsIDAsIDAsIDI5OTc4LCAyOTk4OCwgMjk5OTcsIDMwMDA2LCAzMDAxNCwgMzAwMjMsIAorICAgIDMwMDMxLCAzMDA0MCwgMzAwNDgsIDMwMDU3LCAzMDA2NiwgMzAwNzUsIDMwMDg0LCAzMDA5MywgMzAxMDIsIDMwMTExLCAKKyAgICAzMDEyMCwgMzAxMjksIDMwMTM4LCAzMDE0NywgMzAxNTYsIDMwMTY1LCAzMDE3NCwgMzAxODMsIDMwMTkyLCAzMDIwMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMzAyMDgsIDMwMjE2LCAzMDIyMywgMzAyMzAsIDMwMjM3LCAzMDI0NCwgMzAyNTEsIDMwMjU4LCAKKyAgICAzMDI2NiwgMzAyNzMsIDMwMjgxLCAwLCAwLCAwLCAzMDI4OSwgMzAyOTcsIDMwMzA1LCAzMDMwOSwgMzAzMTUsIDMwMzIxLCAKKyAgICAzMDMyNywgMzAzMzMsIDMwMzM5LCAzMDM0NSwgMzAzNTEsIDMwMzU3LCAzMDM2MywgMzAzNjksIDMwMzc1LCAzMDM4MSwgCisgICAgMzAzODcsIDMwMzkzLCAzMDM5OSwgMzA0MDMsIDMwNDA5LCAzMDQxNSwgMzA0MjEsIDMwNDI3LCAzMDQzMywgMzA0MzksIAorICAgIDMwNDQ1LCAzMDQ1MSwgMzA0NTcsIDMwNDYzLCAzMDQ2OSwgMzA0NzUsIDMwNDgxLCAzMDQ4NywgMzA0OTMsIDMwNDk3LCAKKyAgICAzMDUwMiwgMzA1MDcsIDMwNTEyLCAzMDUxNiwgMzA1MjEsIDMwNTI1LCAzMDUzMCwgMzA1MzUsIDMwNTQwLCAzMDU0NSwgCisgICAgMzA1NTAsIDMwNTU1LCAzMDU2MCwgMzA1NjUsIDMwNTcwLCAzMDU3NCwgMzA1NzksIDMwNTg0LCAzMDU4OSwgMzA1OTQsIAorICAgIDMwNTk4LCAzMDYwMiwgMzA2MDcsIDMwNjEyLCAzMDYxNywgMzA2MjIsIDAsIDAsIDMwNjI4LCAzMDYzMiwgMzA2MzksIAorICAgIDMwNjQ0LCAzMDY1MCwgMzA2NTYsIDMwNjYxLCAzMDY2NywgMzA2NzMsIDMwNjc4LCAzMDY4NCwgMzA2OTAsIDMwNjk2LCAKKyAgICAzMDcwMiwgMzA3MDgsIDMwNzEzLCAzMDcxOCwgMzA3MjQsIDMwNzI5LCAzMDczNSwgMzA3NDAsIDMwNzQ2LCAzMDc1MiwgCisgICAgMzA3NTgsIDMwNzY0LCAzMDc2OSwgMzA3NzQsIDMwNzc5LCAzMDc4NSwgMzA3OTEsIDMwNzk2LCAzMDgwMiwgMzA4MDgsIAorICAgIDMwODEyLCAzMDgxNywgMzA4MjIsIDMwODI3LCAzMDgzMiwgMzA4MzcsIDMwODQyLCAzMDg0NywgMzA4NTMsIDMwODU5LCAKKyAgICAzMDg2NSwgMzA4NzAsIDMwODc1LCAzMDg3OSwgMzA4ODQsIDMwODg4LCAzMDg5MywgMzA4OTcsIDMwOTAyLCAzMDkwNywgCisgICAgMzA5MTIsIDMwOTE3LCAzMDkyNCwgMzA5MzEsIDMwOTM4LCAzMDk0OCwgMzA5NTcsIDMwOTY0LCAzMDk3MCwgMzA5ODEsIAorICAgIDMwOTg2LCAzMDk5MiwgMCwgMzA5OTgsIDMxMDAzLCAzMTAwOCwgMzEwMTYsIDMxMDIyLCAzMTAzMCwgMzEwMzUsIDMxMDQxLCAKKyAgICAzMTA0NywgMzEwNTMsIDMxMDU4LCAzMTA2NCwgMzEwNjksIDMxMDc2LCAzMTA4MiwgMzEwODcsIDMxMDkzLCAzMTA5OSwgCisgICAgMzExMDUsIDMxMTEyLCAzMTExOSwgMzExMjYsIDMxMTMxLCAzMTEzNiwgMzExNDMsIDMxMTUwLCAzMTE1NywgMzExNjQsIAorICAgIDMxMTcxLCAwLCAwLCAzMTE3OCwgMzExODUsIDMxMTkyLCAzMTE5OCwgMzEyMDQsIDMxMjEwLCAzMTIxNiwgMzEyMjIsIAorICAgIDMxMjI4LCAzMTIzNSwgMzEyNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMjQ4LCAzMTI1NCwgMzEyNTksIDMxMjY0LCAzMTI2OSwgCisgICAgMzEyNzQsIDMxMjc5LCAzMTI4NCwgMzEyOTAsIDMxMjk1LCAwLCAwLCAwLCAwLCAwLCAwLCAzMTMwMSwgMzEzMDYsIDMxMzExLCAKKyAgICAzMTMxNiwgMzEzMjEsIDMxMzI2LCAzMTMzMSwgMzEzNDAsIDMxMzQ3LCAzMTM1MiwgMzEzNTcsIDMxMzYyLCAzMTM2NywgCisgICAgMzEzNzIsIDAsIDAsIDMxMzc3LCAzMTM4NCwgMzEzODcsIDMxMzkwLCAzMTM5MywgMzEzOTgsIDMxNDAyLCAzMTQwOCwgCisgICAgMzE0MTIsIDMxNDE3LCAzMTQyNCwgMzE0MzIsIDMxNDM2LCAzMTQ0MSwgMzE0NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNDUwLCAzMTQ1NiwgMzE0NjIsIDMxNDY2LCAzMTQ3MCwgMzE0NzQsIAorICAgIDMxNDc4LCAzMTQ4NCwgMzE0ODgsIDMxNDk0LCAzMTQ5OCwgMzE1MDQsIDMxNTEwLCAzMTUxOCwgMzE1MjQsIDMxNTMyLCAKKyAgICAzMTUzNiwgMzE1NDAsIDMxNTQ0LCAzMTU1MCwgMzE1NTMsIDMxNTU5LCAzMTU2MywgMzE1NjksIDMxNTczLCAzMTU3NywgCisgICAgMzE1ODMsIDMxNTg3LCAzMTU5MywgMzE1OTcsIDMxNjAzLCAzMTYxMSwgMzE2MTksIDMxNjI3LCAzMTYzMywgMzE2MzcsIAorICAgIDMxNjQzLCAzMTY0NywgMzE2NTMsIDMxNjU3LCAzMTY2MCwgMzE2NjYsIDMxNjcwLCAzMTY3NiwgMzE2NzksIDMxNjgyLCAKKyAgICAzMTY4NiwgMzE2OTAsIDMxNjk0LCAzMTcwMCwgMzE3MDYsIDMxNzEwLCAzMTcxMywgMzE3MTcsIDMxNzIyLCAzMTcyNywgCisgICAgMzE3MzQsIDMxNzM5LCAzMTc0NiwgMzE3NTMsIDMxNzYyLCAzMTc2OSwgMzE3NzgsIDMxNzgzLCAzMTc5MCwgMzE3OTcsIAorICAgIDMxODA2LCAzMTgxMSwgMzE4MTgsIDMxODIzLCAzMTgyOSwgMzE4MzUsIDMxODQxLCAzMTg0NywgMzE4NTMsIDMxODU5LCAwLCAKKyAgICAwLCAwLCAwLCAzMTg2NSwgMzE4NjksIDMxODcyLCAzMTg3NSwgMzE4NzgsIDMxODgxLCAzMTg4NCwgMzE4ODcsIDMxODkxLCAKKyAgICAzMTg5NCwgMzE4OTgsIDMxOTAxLCAzMTkwNCwgMzE5MDcsIDMxOTEyLCAzMTkxNywgMzE5MjIsIDMxOTI1LCAzMTkzMCwgCisgICAgMzE5MzUsIDMxOTQwLCAzMTk0NSwgMzE5NTIsIDMxOTU3LCAzMTk2MiwgMzE5NjcsIDMxOTcyLCAzMTk3OSwgMzE5ODUsIAorICAgIDMxOTkxLCAzMTk5NywgMzIwMDMsIDMyMDA5LCAzMjAxOCwgMzIwMjcsIDMyMDMzLCAzMjAzOSwgMzIwNDcsIDMyMDU1LCAKKyAgICAzMjA2NCwgMzIwNzMsIDMyMDgxLCAzMjA4OSwgMzIwOTgsIDMyMTA3LCAwLCAwLCAwLCAzMjExNSwgMzIxMjAsIDMyMTI1LCAKKyAgICAzMjEzMCwgMzIxMzQsIDMyMTM4LCAzMjE0MiwgMzIxNDcsIDMyMTUxLCAzMjE1NSwgMzIxNjAsIDMyMTY0LCAzMjE2OSwgCisgICAgMzIxNzQsIDMyMTc5LCAzMjE4NCwgMzIxODksIDMyMTk0LCAzMjE5OSwgMzIyMDQsIDMyMjA5LCAzMjIxNCwgMzIyMTgsIAorICAgIDMyMjIzLCAzMjIyOCwgMzIyMzMsIDMyMjM3LCAzMjI0MSwgMzIyNDYsIDMyMjUxLCAzMjI1NiwgMzIyNjEsIDMyMjY2LCAKKyAgICAzMjI3MCwgMzIyNzYsIDMyMjgyLCAzMjI4OCwgMzIyOTQsIDMyMzAwLCAzMjMwNiwgMzIzMTIsIDMyMzE4LCAzMjMyNCwgCisgICAgMzIzMjksIDMyMzM0LCAzMjM0MSwgMzIzNDksIDMyMzU0LCAzMjM1OSwgMzIzNjQsIDMyMzY4LCAzMjM3MiwgMzIzNzYsIAorICAgIDMyMzgwLCAzMjM4NCwgMzIzODgsIDMyMzkzLCAzMjM5NywgMzI0MDIsIDMyNDA2LCAzMjQxMSwgMzI0MTYsIDMyNDIxLCAKKyAgICAzMjQyNywgMzI0MzMsIDMyNDM3LCAzMjQ0MywgMzI0NDcsIDMyNDUzLCAzMjQ1OSwgMzI0NjQsIDMyNDcxLCAzMjQ3NSwgCisgICAgMzI0ODEsIDMyNDg2LCAzMjQ5MywgMzI0OTgsIDMyNTA1LCAzMjUxMiwgMzI1MTcsIDMyNTI0LCAzMjUyOSwgMzI1MzQsIAorICAgIDMyNTM5LCAzMjU0NiwgMzI1NTAsIDMyNTU2LCAzMjU2MywgMzI1NzAsIDMyNTc1LCAzMjU4MiwgMzI1ODksIDMyNTkzLCAKKyAgICAzMjU5OSwgMzI2MDQsIDMyNjA5LCAzMjYxNiwgMzI2MjEsIDMyNjI2LCAzMjYzMSwgMzI2MzYsIDMyNjQwLCAzMjY0NCwgCisgICAgMzI2NDksIDMyNjU0LCAzMjY2MSwgMzI2NjcsIDMyNjcyLCAzMjY3OSwgMzI2ODQsIDMyNjkxLCAzMjY5NiwgMzI3MDYsIAorICAgIDMyNzEyLCAzMjcxOCwgMzI3MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNzI2LCAzMjczNSwgMzI3NDIsIDMyNzQ5LCAKKyAgICAzMjc1NiwgMzI3NjAsIDMyNzY1LCAzMjc3MCwgMzI3NzUsIDMyNzgwLCAzMjc4NSwgMzI3OTAsIDMyNzk1LCAzMjgwMCwgCisgICAgMzI4MDUsIDMyODEwLCAzMjgxNSwgMzI4MjAsIDMyODI1LCAzMjgyOSwgMzI4MzQsIDMyODM5LCAzMjg0NCwgMzI4NDksIAorICAgIDMyODU0LCAzMjg1OSwgMzI4NjMsIDMyODY4LCAzMjg3MywgMzI4NzgsIDMyODgzLCAzMjg4NywgMzI4OTIsIDMyODk3LCAKKyAgICAzMjkwMSwgMzI5MDYsIDMyOTExLCAzMjkxNiwgMzI5MjEsIDMyOTI2LCAzMjkzMCwgMzI5MzYsIDMyOTQzLCAzMjk0OSwgCisgICAgMzI5NTQsIDMyOTU5LCAzMjk2NSwgMzI5NzAsIDMyOTc2LCAzMjk4MSwgMzI5ODcsIDMyOTkzLCAzMjk5OCwgMzMwMDQsIAorICAgIDMzMDEwLCAzMzAxNSwgMzMwMjEsIDMzMDI3LCAzMzAzMywgMzMwMzgsIDAsIDAsIDAsIDMzMDQzLCAzMzA0OSwgMzMwNTksIAorICAgIDMzMDY1LCAzMzA3MywgMzMwNzksIDMzMDg0LCAzMzA4OCwgMzMwOTIsIDMzMDk2LCAzMzEwMCwgMzMxMDQsIDMzMTA4LCAKKyAgICAzMzExMywgMzMxMTcsIDAsIDAsIDAsIDMzMTIyLCAzMzEyNywgMzMxMzIsIDMzMTM3LCAzMzE0NCwgMzMxNTAsIDMzMTU2LCAKKyAgICAzMzE2MiwgMzMxNjgsIDMzMTc0LCAzMzE4MCwgMzMxODcsIDMzMTkzLCAzMzIwMCwgMzMyMDcsIDMzMjE0LCAzMzIyMSwgCisgICAgMzMyMjgsIDMzMjM1LCAzMzI0MiwgMzMyNDksIDMzMjU2LCAzMzI2MywgMzMyNzAsIDMzMjc3LCAzMzI4NCwgMzMyOTEsIAorICAgIDMzMjk4LCAzMzMwNSwgMzMzMTIsIDMzMzE5LCAzMzMyNiwgMzMzMzMsIDMzMzQwLCAzMzM0NywgMzMzNTQsIDMzMzYxLCAKKyAgICAzMzM2OCwgMzMzNzUsIDMzMzgyLCAzMzM4OSwgMzMzOTYsIDMzNDAzLCAzMzQxMCwgMzM0MTgsIDMzNDI2LCAzMzQzNCwgCisgICAgMzM0NDAsIDMzNDQ2LCAzMzQ1MiwgMzM0NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDMzNDY5LCAzMzQ3NywgMzM0ODUsIDMzNDkzLCAzMzUwMSwgMzM1MTEsIDMzNTIxLCAzMzUzMSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMzM1NDEsIDMzNTQ2LCAzMzU1MSwgMzM1NTYsIDMzNTYxLCAzMzU3MCwgMzM1ODEsIDMzNTkwLCAzMzYwMSwgCisgICAgMzM2MDcsIDMzNjIwLCAzMzYyNiwgMzM2MzMsIDMzNjQwLCAzMzY0NSwgMzM2NTEsIDMzNjU3LCAzMzY2OCwgMzM2NzcsIAorICAgIDMzNjg0LCAzMzY5MSwgMzM3MDAsIDMzNzA3LCAzMzcxNiwgMzM3MjYsIDMzNzM2LCAzMzc0MywgMzM3NTAsIDMzNzU3LCAKKyAgICAzMzc2NywgMzM3NzIsIDMzNzgwLCAzMzc4NiwgMzM3OTQsIDMzODAzLCAzMzgwOCwgMzM4MTUsIDMzODIxLCAzMzgyNiwgMCwgCisgICAgMzM4MzEsIDMzODM3LCAwLCAwLCAwLCAwLCAwLCAwLCAzMzg0NCwgMzM4NDksIDMzODU1LCAzMzg2MiwgMzM4NzAsIDMzODc2LCAKKyAgICAzMzg4MiwgMzM4ODgsIDMzODkzLCAzMzkwMCwgMzM5MDYsIDMzOTEyLCAzMzkxOCwgMzM5MjYsIDMzOTMyLCAzMzk0MCwgCisgICAgMzM5NDUsIDMzOTUxLCAzMzk1NywgMzM5NjQsIDMzOTcyLCAzMzk3OSwgMzM5ODUsIDMzOTkyLCAzMzk5OSwgMzQwMDUsIAorICAgIDM0MDEyLCAzNDAxOSwgMzQwMjUsIDM0MDMwLCAzNDAzNiwgMzQwNDQsIDM0MDUzLCAzNDA1OSwgMzQwNjUsIDM0MDcxLCAKKyAgICAzNDA3NywgMzQwODUsIDM0MDg5LCAzNDA5NSwgMzQxMDEsIDM0MTA3LCAzNDExMywgMzQxMTksIDM0MTI1LCAzNDEyOSwgCisgICAgMzQxMzQsIDM0MTM5LCAzNDE0NiwgMzQxNTEsIDM0MTU1LCAzNDE2MSwgMzQxNjYsIDM0MTcxLCAzNDE3NSwgMzQxODAsIAorICAgIDM0MTg1LCAzNDE4OSwgMzQxOTQsIDM0MTk5LCAzNDIwNiwgMzQyMTAsIDM0MjE1LCAzNDIyMCwgMzQyMjQsIDM0MjI5LCAKKyAgICAzNDIzMywgMzQyMzgsIDM0MjQyLCAzNDI0OCwgMzQyNTMsIDM0MjYwLCAzNDI2NSwgMzQyNzAsIDM0Mjc0LCAzNDI3OSwgCisgICAgMzQyODQsIDM0MjkxLCAzNDI5NiwgMzQzMDIsIDM0MzA3LCAzNDMxMiwgMzQzMTcsIDM0MzIxLCAzNDMyNiwgMzQzMzMsIAorICAgIDM0MzQwLCAzNDM0NSwgMzQzNTAsIDM0MzU0LCAzNDM2MCwgMzQzNjcsIDM0MzcyLCAzNDM3NywgMzQzODIsIDM0Mzg4LCAKKyAgICAzNDM5MywgMzQzOTksIDM0NDA0LCAzNDQxMCwgMzQ0MTYsIDM0NDIyLCAzNDQyOSwgMzQ0MzYsIDM0NDQzLCAzNDQ1MCwgCisgICAgMzQ0NTcsIDM0NDY0LCAzNDQ2OSwgMzQ0NzcsIDM0NDg2LCAzNDQ5NSwgMzQ1MDQsIDM0NTEzLCAzNDUyMiwgMzQ1MzEsIAorICAgIDM0NTQzLCAzNDU1MiwgMzQ1NjEsIDM0NTcwLCAzNDU3NywgMzQ1ODIsIDM0NTg5LCAzNDU5NywgMzQ2MDUsIDM0NjEyLCAKKyAgICAzNDYxOSwgMzQ2MjYsIDM0NjMzLCAzNDY0MSwgMzQ2NTAsIDM0NjU5LCAzNDY2OCwgMzQ2NzcsIDM0Njg2LCAzNDY5NSwgCisgICAgMzQ3MDQsIDM0NzEzLCAzNDcyMiwgMzQ3MzEsIDM0NzQwLCAzNDc0OSwgMzQ3NTgsIDM0NzY3LCAzNDc3NSwgMzQ3ODQsIAorICAgIDM0Nzk1LCAzNDgwMywgMzQ4MTIsIDM0ODIzLCAzNDgzMiwgMzQ4NDEsIDM0ODUwLCAzNDg1OSwgMzQ4NjcsIDM0ODc2LCAKKyAgICAzNDg4MywgMzQ4ODgsIDM0ODk2LCAzNDkwMSwgMzQ5MDgsIDM0OTEzLCAzNDkyMiwgMzQ5MjgsIDM0OTM1LCAzNDk0MiwgCisgICAgMzQ5NDcsIDM0OTUyLCAzNDk2MCwgMzQ5NjgsIDM0OTc3LCAzNDk4NiwgMzQ5OTEsIDM0OTk4LCAzNTAwOSwgMzUwMTcsIAorICAgIDM1MDI2LCAzNTAzMiwgMzUwMzgsIDM1MDQzLCAzNTA1MCwgMzUwNTUsIDM1MDY0LCAzNTA2OSwgMzUwNzQsIDM1MDc5LCAKKyAgICAzNTA4NiwgMzUwOTMsIDM1MDk4LCAzNTEwNywgMzUxMTUsIDM1MTIwLCAzNTEyNSwgMzUxMzIsIDM1MTM5LCAzNTE0MywgCisgICAgMzUxNDcsIDM1MTUwLCAzNTE1MywgMzUxNTYsIDM1MTU5LCAzNTE2MiwgMzUxNjUsIDM1MTcyLCAzNTE3NSwgMzUxNzgsIAorICAgIDM1MTgzLCAzNTE4NywgMzUxOTEsIDM1MTk1LCAzNTE5OSwgMzUyMDMsIDM1MjEyLCAzNTIxOCwgMzUyMjQsIDM1MjMwLCAKKyAgICAzNTIzOCwgMzUyNDYsIDM1MjUyLCAzNTI1OCwgMzUyNjUsIDM1MjcxLCAzNTI3NiwgMzUyODIsIDM1Mjg5LCAzNTI5NSwgCisgICAgMzUzMDIsIDM1MzA4LCAzNTMxNiwgMzUzMjEsIDM1MzI3LCAzNTMzMywgMzUzMzksIDM1MzQ1LCAzNTM1MSwgMzUzNTcsIAorICAgIDM1MzYzLCAzNTM3NCwgMzUzODQsIDM1MzkwLCAzNTM5NiwgMzU0MDYsIDM1NDEyLCAzNTQyMCwgMzU0MjgsIDM1NDM2LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzNTQ0MSwgMzU0NDgsIDM1NDU1LCAzNTQ2MCwgMzU0NjksIDM1NDc3LCAzNTQ4NSwgMzU0OTIsIAorICAgIDM1NDk5LCAzNTUwNiwgMzU1MTMsIDM1NTIxLCAzNTUyOSwgMzU1MzksIDM1NTQ5LCAzNTU1NywgMzU1NjUsIDM1NTczLCAKKyAgICAzNTU4MSwgMzU1OTAsIDM1NTk5LCAzNTYwNywgMzU2MTUsIDM1NjI0LCAzNTYzMywgMzU2NDMsIDM1NjUzLCAzNTY2MiwgCisgICAgMzU2NzEsIDM1Njc5LCAzNTY4NywgMzU2OTUsIDM1NzAzLCAzNTcxMywgMzU3MjMsIDM1NzMxLCAzNTczOSwgMzU3NDcsIAorICAgIDM1NzU1LCAzNTc2MywgMzU3NzEsIDM1Nzc5LCAzNTc4NywgMzU3OTUsIDM1ODAzLCAzNTgxMSwgMzU4MTksIDM1ODI4LCAKKyAgICAzNTgzNywgMzU4NDYsIDM1ODU1LCAzNTg2NSwgMzU4NzUsIDM1ODgyLCAzNTg4OSwgMzU4OTcsIDM1OTA1LCAzNTkxNCwgCisgICAgMzU5MjMsIDM1OTMxLCAzNTkzOSwgMzU5NTEsIDM1OTYzLCAzNTk3MiwgMzU5ODEsIDM1OTkwLCAzNTk5OSwgMzYwMDYsIAorICAgIDM2MDEzLCAzNjAyMSwgMzYwMjksIDM2MDM3LCAzNjA0NSwgMzYwNTMsIDM2MDYxLCAzNjA2OSwgMzYwNzcsIDM2MDg2LCAKKyAgICAzNjA5NSwgMzYxMDQsIDM2MTEzLCAzNjEyMiwgMzYxMzEsIDM2MTQxLCAzNjE1MSwgMzYxNjEsIDM2MTcxLCAzNjE4MCwgCisgICAgMzYxODksIDM2MTk2LCAzNjIwMywgMzYyMTEsIDM2MjE5LCAzNjIyNywgMzYyMzUsIDM2MjQzLCAzNjI1MSwgMzYyNjMsIAorICAgIDM2Mjc1LCAzNjI4NCwgMzYyOTMsIDM2MzAxLCAzNjMwOSwgMzYzMTcsIDM2MzI1LCAzNjMzNiwgMzYzNDcsIDM2MzU4LCAKKyAgICAzNjM2OSwgMzYzODEsIDM2MzkzLCAzNjQwMSwgMzY0MDksIDM2NDE3LCAzNjQyNSwgMzY0MzQsIDM2NDQzLCAzNjQ1MiwgCisgICAgMzY0NjEsIDM2NDY5LCAzNjQ3NywgMzY0ODUsIDM2NDkzLCAzNjUwMSwgMzY1MDksIDM2NTE4LCAzNjUyNywgMzY1MzcsIAorICAgIDM2NTQ3LCAzNjU1NSwgMzY1NjMsIDM2NTcxLCAzNjU3OSwgMzY1ODcsIDM2NTk1LCAzNjYwMiwgMzY2MDksIDM2NjE3LCAKKyAgICAzNjYyNSwgMzY2MzMsIDM2NjQxLCAzNjY0OSwgMzY2NTcsIDM2NjY1LCAzNjY3MywgMzY2ODEsIDM2Njg5LCAzNjY5NywgCisgICAgMzY3MDUsIDM2NzEzLCAzNjcyMSwgMzY3MjksIDM2NzM3LCAzNjc0NiwgMzY3NTUsIDM2NzY0LCAzNjc3MiwgMzY3ODEsIAorICAgIDM2NzkwLCAzNjc5OSwgMzY4MDgsIDM2ODE4LCAzNjgyNywgMzY4MzMsIDM2ODM4LCAzNjg0NSwgMzY4NTIsIDM2ODYwLCAKKyAgICAzNjg2OCwgMzY4NzcsIDM2ODg2LCAzNjg5NiwgMzY5MDYsIDM2OTE3LCAzNjkyOCwgMzY5MzgsIDM2OTQ4LCAzNjk1OCwgCisgICAgMzY5NjgsIDM2OTc3LCAzNjk4NiwgMzY5OTYsIDM3MDA2LCAzNzAxNywgMzcwMjgsIDM3MDM4LCAzNzA0OCwgMzcwNTgsIAorICAgIDM3MDY4LCAzNzA3NSwgMzcwODIsIDM3MDkwLCAzNzA5OCwgMzcxMDUsIDM3MTEyLCAzNzEyMSwgMzcxMzAsIDM3MTQwLCAKKyAgICAzNzE1MCwgMzcxNjEsIDM3MTcyLCAzNzE4MiwgMzcxOTIsIDM3MjAyLCAzNzIxMiwgMzcyMjEsIDM3MjMwLCAzNzIzOCwgCisgICAgMzcyNDYsIDM3MjUzLCAzNzI2MCwgMzcyNjgsIDM3Mjc2LCAzNzI4NSwgMzcyOTQsIDM3MzA0LCAzNzMxNCwgMzczMjUsIAorICAgIDM3MzM2LCAzNzM0NiwgMzczNTYsIDM3MzY2LCAzNzM3NiwgMzczODUsIDM3Mzk0LCAzNzQwNCwgMzc0MTQsIDM3NDI1LCAKKyAgICAzNzQzNiwgMzc0NDYsIDM3NDU2LCAzNzQ2NiwgMzc0NzYsIDM3NDgzLCAzNzQ5MCwgMzc0OTgsIDM3NTA2LCAzNzUxNSwgCisgICAgMzc1MjQsIDM3NTM0LCAzNzU0NCwgMzc1NTUsIDM3NTY2LCAzNzU3NiwgMzc1ODYsIDM3NTk2LCAzNzYwNiwgMzc2MTQsIAorICAgIDM3NjIyLCAzNzYzMCwgMzc2MzgsIDM3NjQ3LCAzNzY1NiwgMzc2NjQsIDM3NjcyLCAzNzY3OSwgMzc2ODYsIDM3NjkzLCAKKyAgICAzNzcwMCwgMzc3MDgsIDM3NzE2LCAzNzcyNCwgMzc3MzIsIDM3NzQzLCAzNzc1NCwgMzc3NjUsIDM3Nzc2LCAzNzc4NywgCisgICAgMzc3OTgsIDM3ODA2LCAzNzgxNCwgMzc4MjUsIDM3ODM2LCAzNzg0NywgMzc4NTgsIDM3ODY5LCAzNzg4MCwgMzc4ODgsIAorICAgIDM3ODk2LCAzNzkwNywgMzc5MTgsIDM3OTI5LCAwLCAwLCAzNzk0MCwgMzc5NDgsIDM3OTU2LCAzNzk2NywgMzc5NzgsIAorICAgIDM3OTg5LCAwLCAwLCAzODAwMCwgMzgwMDgsIDM4MDE2LCAzODAyNywgMzgwMzgsIDM4MDQ5LCAzODA2MCwgMzgwNzEsIAorICAgIDM4MDgyLCAzODA5MCwgMzgwOTgsIDM4MTA5LCAzODEyMCwgMzgxMzEsIDM4MTQyLCAzODE1MywgMzgxNjQsIDM4MTcyLCAKKyAgICAzODE4MCwgMzgxOTEsIDM4MjAyLCAzODIxMywgMzgyMjQsIDM4MjM1LCAzODI0NiwgMzgyNTQsIDM4MjYyLCAzODI3MywgCisgICAgMzgyODQsIDM4Mjk1LCAzODMwNiwgMzgzMTcsIDM4MzI4LCAzODMzNiwgMzgzNDQsIDM4MzU1LCAzODM2NiwgMzgzNzcsIDAsIAorICAgIDAsIDM4Mzg4LCAzODM5NiwgMzg0MDQsIDM4NDE1LCAzODQyNiwgMzg0MzcsIDAsIDAsIDM4NDQ4LCAzODQ1NiwgMzg0NjQsIAorICAgIDM4NDc1LCAzODQ4NiwgMzg0OTcsIDM4NTA4LCAzODUxOSwgMCwgMzg1MzAsIDAsIDM4NTM4LCAwLCAzODU0OSwgMCwgCisgICAgMzg1NjAsIDM4NTcxLCAzODU3OSwgMzg1ODcsIDM4NTk4LCAzODYwOSwgMzg2MjAsIDM4NjMxLCAzODY0MiwgMzg2NTMsIAorICAgIDM4NjYxLCAzODY2OSwgMzg2ODAsIDM4NjkxLCAzODcwMiwgMzg3MTMsIDM4NzI0LCAzODczNSwgMzg3NDMsIDM4NzUxLCAKKyAgICAzODc1OSwgMzg3NjcsIDM4Nzc1LCAzODc4MywgMzg3OTEsIDM4Nzk5LCAzODgwNywgMzg4MTUsIDM4ODIzLCAzODgzMSwgCisgICAgMzg4MzksIDAsIDAsIDM4ODQ3LCAzODg1OCwgMzg4NjksIDM4ODgzLCAzODg5NywgMzg5MTEsIDM4OTI1LCAzODkzOSwgCisgICAgMzg5NTMsIDM4OTY0LCAzODk3NSwgMzg5ODksIDM5MDAzLCAzOTAxNywgMzkwMzEsIDM5MDQ1LCAzOTA1OSwgMzkwNzAsIAorICAgIDM5MDgxLCAzOTA5NSwgMzkxMDksIDM5MTIzLCAzOTEzNywgMzkxNTEsIDM5MTY1LCAzOTE3NiwgMzkxODcsIDM5MjAxLCAKKyAgICAzOTIxNSwgMzkyMjksIDM5MjQzLCAzOTI1NywgMzkyNzEsIDM5MjgyLCAzOTI5MywgMzkzMDcsIDM5MzIxLCAzOTMzNSwgCisgICAgMzkzNDksIDM5MzYzLCAzOTM3NywgMzkzODgsIDM5Mzk5LCAzOTQxMywgMzk0MjcsIDM5NDQxLCAzOTQ1NSwgMzk0NjksIAorICAgIDM5NDgzLCAzOTQ5MSwgMzk0OTksIDM5NTEwLCAzOTUxOCwgMCwgMzk1MjksIDM5NTM3LCAzOTU0OCwgMzk1NTYsIDM5NTY0LCAKKyAgICAzOTU3MiwgMzk1ODAsIDM5NTg4LCAzOTU5MSwgMzk1OTQsIDM5NTk3LCAzOTYwMCwgMzk2MDYsIDM5NjE3LCAzOTYyNSwgMCwgCisgICAgMzk2MzYsIDM5NjQ0LCAzOTY1NSwgMzk2NjMsIDM5NjcxLCAzOTY3OSwgMzk2ODcsIDM5Njk1LCAzOTcwMSwgMzk3MDcsIAorICAgIDM5NzEzLCAzOTcyMSwgMzk3MjksIDM5NzQwLCAwLCAwLCAzOTc1MSwgMzk3NTksIDM5NzcwLCAzOTc3OCwgMzk3ODYsIAorICAgIDM5Nzk0LCAwLCAzOTgwMiwgMzk4MDgsIDM5ODE0LCAzOTgyMCwgMzk4MjgsIDM5ODM2LCAzOTg0NywgMzk4NTgsIDM5ODY2LCAKKyAgICAzOTg3NCwgMzk4ODIsIDM5ODkzLCAzOTkwMSwgMzk5MDksIDM5OTE3LCAzOTkyNSwgMzk5MzMsIDM5OTM5LCAzOTk0NSwgMCwgCisgICAgMCwgMzk5NDgsIDM5OTU5LCAzOTk2NywgMCwgMzk5NzgsIDM5OTg2LCAzOTk5NywgNDAwMDUsIDQwMDEzLCA0MDAyMSwgCisgICAgNDAwMjksIDQwMDM3LCA0MDA0MCwgMCwgNDAwNDMsIDQwMDQ3LCA0MDA1MSwgNDAwNTUsIDQwMDU5LCA0MDA2MywgNDAwNjcsIAorICAgIDQwMDcxLCA0MDA3NSwgNDAwNzksIDQwMDgzLCA0MDA4NywgNDAwOTMsIDQwMDk5LCA0MDEwNSwgNDAxMDgsIDQwMTExLCAKKyAgICA0MDExMywgNDAxMTcsIDQwMTIxLCA0MDEyNSwgNDAxMjksIDQwMTMyLCA0MDEzNiwgNDAxNDAsIDQwMTQ2LCA0MDE1MiwgCisgICAgNDAxNTksIDQwMTY2LCA0MDE3MSwgNDAxNzYsIDQwMTgyLCA0MDE4OCwgNDAxOTAsIDQwMTkzLCA0MDE5NSwgNDAxOTksIAorICAgIDQwMjAzLCA0MDIwNywgNDAyMTEsIDQwMjE1LCA0MDIxOSwgNDAyMjMsIDQwMjI3LCA0MDIzMSwgNDAyMzcsIDQwMjQxLCAKKyAgICA0MDI0NSwgNDAyNTEsIDQwMjU2LCA0MDI2MywgNDAyNjUsIDQwMjY4LCA0MDI3MiwgNDAyNzYsIDQwMjgxLCA0MDI4NywgCisgICAgNDAyODksIDQwMjk4LCA0MDMwNywgNDAzMTAsIDQwMzE0LCA0MDMxNiwgNDAzMTgsIDQwMzIwLCA0MDMyMywgNDAzMjksIAorICAgIDQwMzMxLCA0MDMzNSwgNDAzMzksIDQwMzQ2LCA0MDM1MywgNDAzNTcsIDQwMzYyLCA0MDM2NywgNDAzNzIsIDQwMzc3LCAKKyAgICA0MDM4MSwgNDAzODUsIDQwMzg4LCA0MDM5MiwgNDAzOTYsIDQwNDAzLCA0MDQwOCwgNDA0MTIsIDQwNDE2LCA0MDQyMSwgCisgICAgNDA0MjUsIDQwNDI5LCA0MDQzNCwgNDA0MzksIDQwNDQzLCA0MDQ0NywgNDA0NTEsIDQwNDUzLCA0MDQ1OCwgNDA0NjMsIAorICAgIDQwNDY3LCA0MDQ3MSwgNDA0NzUsIDQwNDc5LCAwLCA0MDQ4MywgNDA0ODcsIDQwNDkxLCA0MDQ5NywgNDA1MDMsIDQwNTA5LCAKKyAgICA0MDUxNSwgNDA1MjIsIDQwNTI5LCA0MDUzNCwgNDA1MzksIDQwNTQzLCAwLCAwLCA0MDU0OSwgNDA1NTIsIDQwNTU1LCAKKyAgICA0MDU1OCwgNDA1NjIsIDQwNTY1LCA0MDU2OSwgNDA1NzMsIDQwNTc3LCA0MDU4MiwgNDA1ODcsIDQwNTkyLCA0MDU5OSwgCisgICAgNDA2MDMsIDQwNjA2LCA0MDYwOSwgNDA2MTIsIDQwNjE1LCA0MDYxOCwgNDA2MjEsIDQwNjI1LCA0MDYyOCwgNDA2MzIsIAorICAgIDQwNjM2LCA0MDY0MCwgNDA2NDUsIDQwNjUwLCAwLCA0MDY1NSwgNDA2NjEsIDQwNjY3LCA0MDY3MywgNDA2ODAsIDQwNjg3LCAKKyAgICA0MDY5NCwgNDA3MDEsIDQwNzA3LCA0MDcxNCwgNDA3MjEsIDQwNzI4LCA0MDczNCwgMCwgMCwgMCwgNDA3NDEsIDQwNzQ0LCAKKyAgICA0MDc0NywgNDA3NTAsIDQwNzU1LCA0MDc1OCwgNDA3NjEsIDQwNzY0LCA0MDc2NywgNDA3NzAsIDQwNzczLCA0MDc3OCwgCisgICAgNDA3ODEsIDQwNzg0LCA0MDc4NywgNDA3OTAsIDQwNzkzLCA0MDc5OCwgNDA4MDEsIDQwODA0LCA0MDgwNywgNDA4MTAsIAorICAgIDQwODEzLCA0MDgxOCwgNDA4MjEsIDQwODI0LCA0MDgyOSwgNDA4MzQsIDQwODM4LCA0MDg0MSwgNDA4NDQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwODQ3LCA0MDg1MiwgNDA4NTcsIDQwODY0LCAKKyAgICA0MDg3MiwgNDA4NzcsIDQwODgyLCA0MDg4NiwgNDA4OTAsIDQwODk1LCA0MDkwMiwgNDA5MDksIDQwOTEzLCA0MDkxOCwgCisgICAgNDA5MjMsIDQwOTI4LCA0MDkzMywgNDA5NDAsIDQwOTQ1LCA0MDk1MCwgNDA5NTUsIDQwOTY0LCA0MDk3MSwgNDA5NzgsIAorICAgIDQwOTgyLCA0MDk4NywgNDA5OTMsIDQwOTk4LCA0MTAwNSwgNDEwMTMsIDQxMDIxLCA0MTAyNSwgNDEwMjksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMDMzLCA0MTAzNywgNDEwNDUsIDQxMDQ5LCA0MTA1MywgCisgICAgNDEwNTgsIDQxMDYyLCA0MTA2NiwgNDEwNzAsIDQxMDcyLCA0MTA3NiwgNDEwODAsIDQxMDg0LCA0MTA4OSwgNDEwOTMsIAorICAgIDQxMDk3LCA0MTEwNSwgNDExMDgsIDQxMTEyLCA0MTExNSwgNDExMTgsIDQxMTI0LCA0MTEyOCwgNDExMzEsIDQxMTM3LCAKKyAgICA0MTE0MSwgNDExNDUsIDQxMTQ5LCA0MTE1MiwgNDExNTYsIDQxMTU5LCA0MTE2MywgNDExNjUsIDQxMTY4LCA0MTE3MSwgCisgICAgNDExNzUsIDQxMTc3LCA0MTE4MSwgNDExODQsIDQxMTg3LCA0MTE5MiwgNDExOTcsIDQxMjA0LCA0MTIwNywgNDEyMTAsIAorICAgIDQxMjE0LCA0MTIxOSwgNDEyMjIsIDQxMjI1LCA0MTIyOCwgNDEyMzIsIDQxMjM3LCA0MTI0MSwgNDEyNDQsIDQxMjQ2LCAKKyAgICA0MTI0OSwgNDEyNTIsIDQxMjU1LCA0MTI1OSwgNDEyNjQsIDQxMjY3LCA0MTI3MSwgNDEyNzUsIDQxMjc5LCA0MTI4MywgCisgICAgNDEyODgsIDQxMjk0LCA0MTI5OSwgNDEzMDQsIDQxMzEwLCA0MTMxNSwgNDEzMjAsIDQxMzI0LCA0MTMyOCwgNDEzMzMsIAorICAgIDQxMzM3LCA0MTM0MSwgNDEzNDQsIDQxMzQ2LCA0MTM1MSwgNDEzNTcsIDQxMzY0LCA0MTM3MSwgNDEzNzgsIDQxMzg1LCAKKyAgICA0MTM5MiwgNDEzOTksIDQxNDA2LCA0MTQxMywgNDE0MjEsIDQxNDI4LCA0MTQzNiwgNDE0NDMsIDQxNDUwLCA0MTQ1OCwgCisgICAgNDE0NjYsIDQxNDcxLCA0MTQ3NiwgNDE0ODEsIDQxNDg2LCA0MTQ5MSwgNDE0OTYsIDQxNTAxLCA0MTUwNywgNDE1MTIsIAorICAgIDQxNTE4LCA0MTUyNCwgNDE1MzAsIDQxNTM2LCA0MTU0MiwgNDE1NDksIDQxNTU3LCA0MTU2NCwgNDE1NzAsIDQxNTc2LCAKKyAgICA0MTU4MiwgNDE1ODgsIDQxNTk0LCA0MTYwMCwgNDE2MDcsIDQxNjEzLCA0MTYyMCwgNDE2MjcsIDQxNjM0LCA0MTY0MSwgCisgICAgNDE2NDgsIDQxNjU2LCA0MTY2NSwgNDE2NzMsIDQxNjg0LCA0MTY5MiwgNDE3MDAsIDQxNzA5LCA0MTcxNiwgNDE3MjUsIAorICAgIDQxNzM0LCA0MTc0MiwgNDE3NTEsIDQxNzU5LCA0MTc2MywgMCwgMCwgMCwgMCwgNDE3NjcsIDQxNzY5LCA0MTc3MSwgCisgICAgNDE3NzMsIDQxNzc1LCA0MTc3OCwgNDE3ODEsIDQxNzg1LCA0MTc4OSwgNDE3OTQsIDQxNzk5LCA0MTgwMywgNDE4MDcsIAorICAgIDQxODExLCA0MTgxNSwgNDE4MjAsIDQxODI1LCA0MTgzMCwgNDE4MzUsIDQxODQwLCA0MTg0NSwgNDE4NTAsIDQxODU1LCAKKyAgICA0MTg2MCwgNDE4NjUsIDQxODcxLCA0MTg3NSwgNDE4NzksIDQxODg0LCA0MTg4OSwgNDE4OTQsIDQxODk5LCA0MTkwMywgCisgICAgNDE5MTAsIDQxOTE3LCA0MTkyNCwgNDE5MzEsIDQxOTM4LCA0MTk0NSwgNDE5NTIsIDQxOTU5LCA0MTk2NywgNDE5NzksIAorICAgIDQxOTg1LCA0MTk5MSwgNDE5OTgsIDQyMDA1LCA0MjAxMiwgNDIwMTksIDQyMDI2LCA0MjAzMywgNDIwNDAsIDQyMDQ3LCAKKyAgICA0MjA1MiwgNDIwNTgsIDQyMDYzLCA0MjA2OCwgNDIwNzMsIDQyMDc4LCA0MjA4MywgNDIwOTAsIDQyMDk3LCA0MjEwMiwgCisgICAgNDIxMDgsIDQyMTEzLCA0MjExNiwgNDIxMTksIDQyMTIyLCA0MjEyNSwgNDIxMjksIDQyMTMzLCA0MjEzOCwgNDIxNDMsIAorICAgIDQyMTQ5LCA0MjE1NSwgNDIxNTksIDQyMTYzLCA0MjE2NywgNDIxNzEsIDQyMTc2LCA0MjE4MSwgNDIxODUsIDQyMTg5LCAKKyAgICA0MjE5MywgNDIxOTcsIDQyMjAyLCA0MjIwNywgNDIyMTAsIDQyMjEzLCA0MjIxNiwgNDIyMTksIDQyMjI1LCA0MjIzMiwgCisgICAgNDIyNDMsIDQyMjUzLCA0MjI1NywgNDIyNjUsIDQyMjcyLCA0MjI4MCwgNDIyODksIDQyMjkzLCA0MjI5OSwgNDIzMDUsIAorICAgIDQyMzA5LCA0MjMxNCwgNDIzMTksIDQyMzI1LCA0MjMzMSwgNDIzMzcsIDQyMzQ0LCA0MjM0OCwgNDIzNTIsIDQyMzU3LCAKKyAgICA0MjM2MCwgNDIzNjIsIDQyMzY2LCA0MjM3MCwgNDIzNzgsIDQyMzgyLCA0MjM4NCwgNDIzODYsIDQyMzkwLCA0MjM5OCwgCisgICAgNDI0MDMsIDQyNDA5LCA0MjQxOSwgNDI0MjYsIDQyNDMxLCA0MjQzNSwgNDI0MzksIDQyNDQzLCA0MjQ0NiwgNDI0NDksIAorICAgIDQyNDUyLCA0MjQ1NiwgNDI0NjAsIDQyNDY0LCA0MjQ2OCwgNDI0NzIsIDQyNDc1LCA0MjQ3OSwgNDI0ODMsIDQyNDg2LCAKKyAgICA0MjQ4OCwgNDI0OTEsIDQyNDkzLCA0MjQ5NywgNDI1MDEsIDQyNTAzLCA0MjUwOSwgNDI1MTIsIDQyNTE3LCA0MjUyMSwgCisgICAgNDI1MjUsIDQyNTI3LCA0MjUyOSwgNDI1MzEsIDQyNTM0LCA0MjUzOCwgNDI1NDIsIDQyNTQ2LCA0MjU1MCwgNDI1NTQsIAorICAgIDQyNTYwLCA0MjU2NiwgNDI1NjgsIDQyNTcwLCA0MjU3MiwgNDI1NzQsIDQyNTc3LCA0MjU3OSwgNDI1ODMsIDQyNTg1LCAKKyAgICA0MjU4OSwgNDI1OTMsIDQyNTk4LCA0MjYwMiwgNDI2MDYsIDQyNjEwLCA0MjYxNCwgNDI2MTgsIDQyNjI0LCA0MjYyOCwgCisgICAgNDI2MzgsIDQyNjQ4LCA0MjY1MiwgNDI2NTgsIDQyNjY1LCA0MjY2OSwgNDI2NzMsIDQyNjc2LCA0MjY4MSwgNDI2ODUsIAorICAgIDQyNjkxLCA0MjY5NSwgNDI3MDgsIDQyNzE3LCA0MjcyMSwgNDI3MjUsIDQyNzMxLCA0MjczNSwgNDI3MzgsIDQyNzQwLCAKKyAgICA0Mjc0MywgNDI3NDcsIDQyNzUxLCA0Mjc1OCwgNDI3NjIsIDQyNzY2LCA0Mjc3MCwgNDI3NzMsIDQyNzc4LCA0Mjc4MywgCisgICAgNDI3ODksIDQyNzk1LCA0MjgwMCwgNDI4MDUsIDQyODEzLCA0MjgyMSwgNDI4MjUsIDQyODI5LCA0MjgzMSwgNDI4MzYsIAorICAgIDQyODQwLCA0Mjg0NCwgNDI4NTIsIDQyODYwLCA0Mjg2NywgNDI4NzQsIDQyODgzLCA0Mjg5MiwgNDI4OTgsIDQyOTA0LCAKKyAgICA0MjkxMiwgNDI5MjAsIDQyOTIyLCA0MjkyNCwgNDI5MzAsIDQyOTM2LCA0Mjk0MywgNDI5NTAsIDQyOTU2LCA0Mjk2MiwgCisgICAgNDI5NjYsIDQyOTcwLCA0Mjk3NywgNDI5ODQsIDQyOTkxLCA0Mjk5OCwgNDMwMDgsIDQzMDE4LCA0MzAyNiwgNDMwMzQsIAorICAgIDQzMDM2LCA0MzA0MCwgNDMwNDQsIDQzMDQ5LCA0MzA1NCwgNDMwNjIsIDQzMDcwLCA0MzA3MywgNDMwNzYsIDQzMDc5LCAKKyAgICA0MzA4MiwgNDMwODUsIDQzMDkwLCA0MzA5NCwgNDMwOTksIDQzMTA0LCA0MzEwNywgNDMxMTAsIDQzMTEzLCA0MzExNiwgCisgICAgNDMxMTksIDQzMTIzLCA0MzEyNiwgNDMxMjksIDQzMTMyLCA0MzEzNSwgNDMxMzcsIDQzMTM5LCA0MzE0MSwgNDMxNDMsIAorICAgIDQzMTUxLCA0MzE1OSwgNDMxNjUsIDQzMTY5LCA0MzE3NSwgNDMxODUsIDQzMTkxLCA0MzE5NywgNDMyMDMsIDQzMjExLCAKKyAgICA0MzIyMCwgNDMyMzIsIDQzMjM2LCA0MzI0MCwgNDMyNDIsIDQzMjQ4LCA0MzI1MCwgNDMyNTIsIDQzMjU0LCA0MzI1NiwgCisgICAgNDMyNjIsIDQzMjY1LCA0MzI3MSwgNDMyNzcsIDQzMjgxLCA0MzI4NSwgNDMyODksIDQzMjkyLCA0MzI5NiwgNDMzMDAsIAorICAgIDQzMzAyLCA0MzMxMSwgNDMzMjAsIDQzMzI1LCA0MzMzMCwgNDMzMzYsIDQzMzQyLCA0MzM0OCwgNDMzNTEsIDQzMzU0LCAKKyAgICA0MzM1NywgNDMzNjAsIDQzMzYyLCA0MzM2NywgNDMzNzIsIDQzMzc3LCA0MzM4MywgNDMzODksIDQzMzk4LCA0MzQwNywgCisgICAgNDM0MTQsIDQzNDIxLCA0MzQyOCwgNDM0MzUsIDQzNDQ1LCA0MzQ1NSwgNDM0NjUsIDQzNDc1LCA0MzQ4NSwgNDM0OTUsIAorICAgIDQzNTA0LCA0MzUxMywgNDM1MjIsIDQzNTMxLCA0MzUzOSwgNDM1NTEsIDQzNTYyLCA0MzU3OCwgNDM1ODEsIDQzNTg3LCAKKyAgICA0MzU5MywgNDM1OTksIDQzNjA3LCA0MzYyMiwgNDM2MzgsIDQzNjQ0LCA0MzY1MCwgNDM2NTcsIDQzNjYzLCA0MzY3MiwgCisgICAgNDM2NzksIDQzNjkzLCA0MzcwOCwgNDM3MTMsIDQzNzE5LCA0MzcyNywgNDM3MzAsIDQzNzMzLCA0MzczNSwgNDM3MzgsIAorICAgIDQzNzQxLCA0Mzc0MywgNDM3NDUsIDQzNzQ5LCA0Mzc1MiwgNDM3NTUsIDQzNzU4LCA0Mzc2MSwgNDM3NjYsIDQzNzcxLCAKKyAgICA0Mzc3NiwgNDM3ODEsIDQzNzg2LCA0Mzc4OSwgNDM3OTEsIDQzNzkzLCA0Mzc5NSwgNDM3OTksIDQzODAzLCA0MzgwNywgCisgICAgNDM4MTMsIDQzODE4LCA0MzgyMCwgNDM4MjIsIDQzODI3LCA0MzgzMiwgNDM4MzcsIDQzODQyLCA0Mzg0NywgNDM4NTIsIAorICAgIDQzODU0LCA0Mzg1NiwgNDM4NjYsIDQzODcwLCA0Mzg3OCwgNDM4ODcsIDQzODg5LCA0Mzg5NCwgNDM4OTksIDQzOTA3LCAKKyAgICA0MzkxMSwgNDM5MTMsIDQzOTE3LCA0MzkxOSwgNDM5MjMsIDQzOTI3LCA0MzkzMSwgNDM5MzMsIDQzOTM1LCA0MzkzNywgCisgICAgNDM5NDQsIDQzOTUzLCA0Mzk2MiwgNDM5NzEsIDQzOTgwLCA0Mzk4OSwgNDM5OTgsIDQ0MDA3LCA0NDAxNiwgNDQwMjQsIAorICAgIDQ0MDMyLCA0NDA0MSwgNDQwNTAsIDQ0MDU5LCA0NDA2OCwgNDQwNzYsIDQ0MDg0LCA0NDA5MywgNDQxMDIsIDQ0MTExLCAKKyAgICA0NDEyMSwgNDQxMzAsIDQ0MTQwLCA0NDE0OSwgNDQxNTksIDQ0MTY3LCA0NDE3NiwgNDQxODYsIDQ0MTk1LCA0NDIwNSwgCisgICAgNDQyMTQsIDQ0MjI0LCA0NDIzMiwgNDQyNDEsIDQ0MjUwLCA0NDI1OSwgNDQyNjgsIDQ0Mjc3LCA0NDI4NiwgNDQyOTYsIAorICAgIDQ0MzA1LCA0NDMxNCwgNDQzMjMsIDQ0MzMzLCA0NDM0MiwgNDQzNTEsIDQ0MzYwLCA0NDM2OSwgNDQzNzksIDQ0Mzg5LCAKKyAgICA0NDM5OCwgNDQ0MDcsIDQ0NDE1LCA0NDQyNCwgNDQ0MzEsIDQ0NDQwLCA0NDQ0OSwgNDQ0NjAsIDQ0NDY5LCA0NDQ3OSwgCisgICAgNDQ0ODksIDQ0NDk2LCA0NDUwMywgNDQ1MTAsIDQ0NTE5LCA0NDUyOCwgNDQ1MzcsIDQ0NTQ2LCA0NDU1MywgNDQ1NTgsIAorICAgIDQ0NTY2LCA0NDU3MSwgNDQ1NzQsIDQ0NTgxLCA0NDU4NCwgNDQ1ODksIDQ0NTk0LCA0NDU5NywgNDQ2MDAsIDQ0NjA4LCAKKyAgICA0NDYxMSwgNDQ2MTYsIDQ0NjE5LCA0NDYyNywgNDQ2MzIsIDQ0NjQwLCA0NDY0MywgNDQ2NDYsIDQ0NjQ5LCA0NDY1NCwgCisgICAgNDQ2NTksIDQ0NjYyLCA0NDY2NSwgNDQ2NzMsIDQ0Njc2LCA0NDY4MywgNDQ2OTAsIDQ0Njk0LCA0NDY5OCwgNDQ3MDMsIAorICAgIDQ0NzA4LCA0NDcxNCwgNDQ3MTksIDQ0NzI1LCA0NDczMSwgNDQ3MzYsIDQ0NzQyLCA0NDc1MCwgNDQ3NTYsIDQ0NzY0LCAKKyAgICA0NDc3MiwgNDQ3NzgsIDQ0Nzg2LCA0NDc5NCwgNDQ4MDIsIDQ0ODEwLCA0NDgxNiwgNDQ4MjQsIDQ0ODMyLCA0NDg0MCwgCisgICAgNDQ4NDQsIDQ0ODUwLCA0NDg2NCwgNDQ4NzgsIDQ0ODgyLCA0NDg4NiwgNDQ4OTAsIDQ0ODk0LCA0NDkwNCwgNDQ5MDgsIAorICAgIDQ0OTEzLCA0NDkxOCwgNDQ5MjQsIDQ0OTMwLCA0NDkzNiwgNDQ5NDIsIDQ0OTUyLCA0NDk2MiwgNDQ5NzAsIDQ0OTgxLCAKKyAgICA0NDk5MiwgNDUwMDAsIDQ1MDExLCA0NTAyMiwgNDUwMzAsIDQ1MDQxLCA0NTA1MiwgNDUwNjAsIDQ1MDY4LCA0NTA3OCwgCisgICAgNDUwODgsIDQ1MDkxLCA0NTA5NCwgNDUwOTcsIDQ1MTAyLCA0NTEwNiwgNDUxMTIsIDQ1MTE5LCA0NTEyNiwgNDUxMzQsIAorICAgIDQ1MTQxLCA0NTE0NSwgNDUxNDksIDQ1MTUzLCA0NTE1NywgNDUxNTksIDQ1MTYzLCA0NTE2NywgNDUxNzIsIDQ1MTc3LCAKKyAgICA0NTE4NCwgNDUxOTEsIDQ1MTk0LCA0NTIwMSwgNDUyMDMsIDQ1MjA1LCA0NTIwOSwgNDUyMTMsIDQ1MjE4LCA0NTIyNCwgCisgICAgNDUyMzAsIDQ1MjM2LCA0NTI0MiwgNDUyNTEsIDQ1MjYwLCA0NTI2OSwgNDUyNzMsIDQ1Mjc1LCA0NTI3OSwgNDUyODYsIAorICAgIDQ1MjkzLCA0NTMwMCwgNDUzMDcsIDQ1MzE0LCA0NTMxNywgNDUzMjIsIDAsIDAsIDAsIDAsIDAsIDQ1MzI4LCA0NTMzMiwgCisgICAgNDUzMzksIDQ1MzQ2LCA0NTM1MywgNDUzNjAsIDQ1MzY0LCA0NTM2OCwgNDUzNzIsIDQ1Mzc2LCA0NTM4MiwgNDUzODgsIAorICAgIDQ1MzkzLCA0NTM5OSwgNDU0MDUsIDQ1NDExLCA0NTQxNywgNDU0MjUsIDQ1NDMyLCA0NTQzOSwgNDU0NDYsIDQ1NDUzLCAKKyAgICA0NTQ1OCwgNDU0NjQsIDQ1NDczLCA0NTQ3NywgNDU0ODQsIDQ1NDg4LCA0NTQ5MiwgNDU0OTgsIDQ1NTA0LCA0NTUxMCwgCisgICAgNDU1MTYsIDQ1NTIwLCA0NTUyNCwgNDU1MjcsIDQ1NTMwLCA0NTUzNCwgNDU1NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NTQ4LCA0NTU1MSwgNDU1NTUsIAorICAgIDQ1NTU5LCA0NTU2NSwgNDU1NzEsIDQ1NTc3LCA0NTU4NSwgNDU1OTIsIDQ1NTk2LCA0NTYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU2MDksIDQ1NjEyLCA0NTYxNSwgNDU2MTgsIAorICAgIDQ1NjIxLCA0NTYyNCwgNDU2MjcsIDQ1NjMxLCA0NTYzNCwgNDU2MzgsIDQ1NjQyLCA0NTY0NiwgNDU2NTAsIDQ1NjU0LCAKKyAgICA0NTY1OCwgNDU2NjIsIDQ1NjY2LCA0NTY3MCwgNDU2NzQsIDQ1Njc4LCA0NTY4MiwgNDU2ODUsIDQ1Njg4LCA0NTY5MSwgCisgICAgNDU2OTQsIDQ1Njk3LCA0NTcwMCwgNDU3MDQsIDQ1NzA3LCA0NTcxMSwgNDU3MTUsIDQ1NzE5LCA0NTcyMywgNDU3MjcsIAorICAgIDQ1NzMxLCA0NTczNSwgNDU3MzksIDQ1NzQzLCA0NTc0NywgNDU3NTEsIDQ1NzU1LCA0NTc2MSwgNDU3NjcsIDQ1NzczLCAKKyAgICA0NTc4MCwgNDU3ODcsIDQ1Nzk0LCA0NTgwMSwgNDU4MDgsIDQ1ODE1LCA0NTgyMiwgNDU4MjksIDQ1ODM2LCA0NTg0MywgCisgICAgNDU4NTAsIDQ1ODU3LCA0NTg2NCwgNDU4NzEsIDQ1ODc4LCA0NTg4NSwgNDU4OTIsIDQ1ODk3LCA0NTkwMywgNDU5MDksIAorICAgIDQ1OTE1LCA0NTkyMCwgNDU5MjYsIDQ1OTMyLCA0NTkzOCwgNDU5NDMsIDQ1OTQ5LCA0NTk1NSwgNDU5NjAsIDQ1OTY2LCAKKyAgICA0NTk3MiwgNDU5NzcsIDQ1OTgzLCA0NTk4OSwgNDU5OTQsIDQ1OTk5LCA0NjAwNSwgNDYwMTAsIDQ2MDE2LCA0NjAyMiwgCisgICAgNDYwMjgsIDQ2MDM0LCA0NjA0MCwgNDYwNDUsIDQ2MDUxLCA0NjA1NywgNDYwNjMsIDQ2MDY4LCA0NjA3NCwgNDYwODAsIAorICAgIDQ2MDg2LCA0NjA5MSwgNDYwOTcsIDQ2MTAzLCA0NjEwOCwgNDYxMTQsIDQ2MTIwLCA0NjEyNSwgNDYxMzEsIDQ2MTM3LCAKKyAgICA0NjE0MiwgNDYxNDcsIDQ2MTUzLCA0NjE1OCwgNDYxNjQsIDQ2MTcwLCA0NjE3NiwgNDYxODIsIDQ2MTg4LCA0NjE5MywgCisgICAgNDYxOTksIDQ2MjA1LCA0NjIxMSwgNDYyMTYsIDQ2MjIyLCA0NjIyOCwgNDYyMzQsIDQ2MjM5LCA0NjI0NSwgNDYyNTEsIAorICAgIDQ2MjU2LCA0NjI2MiwgNDYyNjgsIDQ2MjczLCA0NjI3OSwgNDYyODUsIDQ2MjkwLCA0NjI5NSwgNDYzMDEsIDQ2MzA2LCAKKyAgICA0NjMxMiwgNDYzMTgsIDQ2MzI0LCA0NjMzMCwgNDYzMzYsIDQ2MzQwLCA0NjM0NSwgNDYzNTAsIDQ2MzU1LCA0NjM2MCwgCisgICAgNDYzNjUsIDQ2MzcwLCA0NjM3NSwgNDYzODAsIDQ2Mzg1LCA0NjM5MCwgNDYzOTQsIDQ2Mzk4LCA0NjQwMiwgNDY0MDYsIAorICAgIDQ2NDEwLCA0NjQxNCwgNDY0MTksIDQ2NDIzLCA0NjQyOCwgNDY0MzMsIDQ2NDM4LCA0NjQ0MywgNDY0NDgsIDQ2NDUzLCAKKyAgICA0NjQ1OCwgNDY0NjcsIDQ2NDc2LCA0NjQ4NSwgNDY0OTQsIDQ2NTAzLCA0NjUxMiwgNDY1MjEsIDQ2NTMwLCA0NjUzNywgCisgICAgNDY1NDUsIDQ2NTUzLCA0NjU2MCwgNDY1NjcsIDQ2NTc1LCA0NjU4MywgNDY1OTAsIDQ2NTk3LCA0NjYwNSwgNDY2MTMsIAorICAgIDQ2NjIwLCA0NjYyNywgNDY2MzUsIDQ2NjQzLCA0NjY1MCwgNDY2NTcsIDQ2NjY1LCA0NjY3NCwgNDY2ODMsIDQ2NjkxLCAKKyAgICA0NjcwMCwgNDY3MDksIDQ2NzE2LCA0NjcyMywgNDY3MzEsIDQ2NzQwLCA0Njc0OSwgNDY3NTcsIDQ2NzY2LCA0Njc3NSwgCisgICAgNDY3ODIsIDQ2Nzg5LCA0Njc5OCwgNDY4MDcsIDQ2ODE2LCA0NjgyNSwgNDY4MzQsIDQ2ODQzLCA0Njg1MCwgNDY4NTcsIAorICAgIDQ2ODY2LCA0Njg3NSwgNDY4ODQsIDQ2ODkzLCA0NjkwMiwgNDY5MTEsIDQ2OTE4LCA0NjkyNSwgNDY5MzQsIDQ2OTQzLCAKKyAgICA0Njk1MiwgNDY5NjIsIDQ2OTcyLCA0Njk4MSwgNDY5OTEsIDQ3MDAxLCA0NzAxMSwgNDcwMjEsIDQ3MDMxLCA0NzA0MSwgCisgICAgNDcwNTAsIDQ3MDU5LCA0NzA2NiwgNDcwNzQsIDQ3MDgyLCA0NzA5MCwgNDcwOTgsIDQ3MTAzLCA0NzEwOCwgNDcxMTcsIAorICAgIDQ3MTI1LCA0NzEzMiwgNDcxNDEsIDQ3MTQ5LCA0NzE1NiwgNDcxNjUsIDQ3MTczLCA0NzE4MCwgNDcxODksIDQ3MTk3LCAKKyAgICA0NzIwNCwgNDcyMTMsIDQ3MjIxLCA0NzIyOCwgNDcyMzcsIDQ3MjQ1LCA0NzI1MiwgNDcyNjIsIDQ3MjcxLCA0NzI3OCwgCisgICAgNDcyODgsIDQ3Mjk3LCA0NzMwNCwgNDczMTQsIDQ3MzIzLCA0NzMzMCwgNDczMzksIDQ3MzQ4LCA0NzM1NywgNDczNjYsIAorICAgIDQ3MzgwLCA0NzM5NCwgNDc0MDEsIDQ3NDA2LCA0NzQxMSwgNDc0MTYsIDQ3NDIxLCA0NzQyNiwgNDc0MzEsIDQ3NDM2LCAKKyAgICA0NzQ0MSwgNDc0NDksIDQ3NDU3LCA0NzQ2NSwgNDc0NzMsIDQ3NDc4LCA0NzQ4NSwgNDc0OTIsIDQ3NDk5LCA0NzUwNCwgCisgICAgNDc1MTIsIDQ3NTE5LCA0NzUyNywgNDc1MzEsIDQ3NTM4LCA0NzU0NCwgNDc1NTEsIDQ3NTU1LCA0NzU2MSwgNDc1NjcsIAorICAgIDQ3NTczLCA0NzU3NywgNDc1ODAsIDQ3NTg0LCA0NzU4OCwgNDc1OTUsIDQ3NjAxLCA0NzYwNywgNDc2MTMsIDQ3NjE5LCAKKyAgICA0NzYzMywgNDc2NDMsIDQ3NjU3LCA0NzY3MSwgNDc2NzcsIDQ3Njg3LCA0NzcwMSwgNDc3MDQsIDQ3NzA3LCA0NzcxNCwgCisgICAgNDc3MjIsIDQ3NzI4LCA0NzczMywgNDc3NDEsIDQ3NzUzLCA0Nzc2NSwgNDc3NzMsIDQ3Nzc3LCA0Nzc4MSwgNDc3ODQsIAorICAgIDQ3Nzg3LCA0Nzc5MSwgNDc3OTUsIDQ3Nzk4LCA0NzgwMSwgNDc4MDYsIDQ3ODExLCA0NzgxNywgNDc4MjMsIDQ3ODI4LCAKKyAgICA0NzgzMywgNDc4MzksIDQ3ODQ1LCA0Nzg1MCwgNDc4NTUsIDQ3ODYwLCA0Nzg2NSwgNDc4NzEsIDQ3ODc3LCA0Nzg4MiwgCisgICAgNDc4ODcsIDQ3ODkzLCA0Nzg5OSwgNDc5MDQsIDQ3OTA5LCA0NzkxMiwgNDc5MTUsIDQ3OTI0LCA0NzkyNiwgNDc5MjgsIAorICAgIDQ3OTMxLCA0NzkzNSwgNDc5NDEsIDQ3OTQzLCA0Nzk0NiwgNDc5NTMsIDQ3OTYwLCA0Nzk2OCwgNDc5NzYsIDQ3OTg2LCAKKyAgICA0ODAwMCwgNDgwMDUsIDQ4MDEwLCA0ODAxNCwgNDgwMTksIDQ4MDI3LCA0ODAzNSwgNDgwNDQsIDQ4MDUzLCA0ODA2MiwgCisgICAgNDgwNzEsIDQ4MDc2LCA0ODA4MSwgNDgwODcsIDQ4MDkzLCA0ODA5OSwgNDgxMDUsIDQ4MTA4LCA0ODExNCwgNDgxMjAsIAorICAgIDQ4MTMwLCA0ODE0MCwgNDgxNDgsIDQ4MTU2LCA0ODE2NSwgNDgxNzQsIDQ4MTc4LCA0ODE4NiwgNDgxOTQsIDQ4MjAyLCAKKyAgICA0ODIxMCwgNDgyMTksIDQ4MjI4LCA0ODIzNywgNDgyNDYsIDQ4MjUxLCA0ODI1NiwgNDgyNjEsIDQ4MjY2LCA0ODI3MSwgCisgICAgNDgyNzcsIDQ4MjgzLCA0ODI4OCwgNDgyOTQsIDQ4Mjk2LCA0ODI5OCwgNDgzMDAsIDQ4MzAyLCA0ODMwNSwgNDgzMDgsIAorICAgIDQ4MzEwLCA0ODMxMiwgNDgzMTQsIDQ4MzE4LCA0ODMyMiwgNDgzMjQsIDQ4MzI2LCA0ODMyOSwgNDgzMzIsIDQ4MzM2LCAKKyAgICA0ODM0MiwgNDgzNDgsIDQ4MzUwLCA0ODM1NywgNDgzNjEsIDQ4MzY2LCA0ODM3MSwgNDgzNzMsIDQ4MzgzLCA0ODM4OSwgCisgICAgNDgzOTUsIDQ4NDAxLCA0ODQwNywgNDg0MTMsIDQ4NDE5LCA0ODQyNCwgNDg0MjcsIDQ4NDMwLCA0ODQzMywgNDg0MzUsIAorICAgIDQ4NDM3LCA0ODQ0MSwgNDg0NDUsIDQ4NDUwLCA0ODQ1NSwgNDg0NjAsIDQ4NDYzLCA0ODQ2NywgNDg0NzIsIDQ4NDc1LCAKKyAgICA0ODQ3OSwgNDg0ODQsIDQ4NDg5LCA0ODQ5NCwgNDg0OTksIDQ4NTA0LCA0ODUwOSwgNDg1MTQsIDQ4NTE5LCA0ODUyNCwgCisgICAgNDg1MjksIDQ4NTM0LCA0ODUzOSwgNDg1NDUsIDQ4NTUxLCA0ODU1NywgNDg1NTksIDQ4NTYyLCA0ODU2NCwgNDg1NjcsIAorICAgIDQ4NTY5LCA0ODU3MSwgNDg1NzMsIDQ4NTc1LCA0ODU3NywgNDg1NzksIDQ4NTgxLCA0ODU4MywgNDg1ODUsIDQ4NTg3LCAKKyAgICA0ODU4OSwgNDg1OTEsIDQ4NTkzLCA0ODU5NSwgNDg1OTcsIDQ4NTk5LCA0ODYwMSwgNDg2MDYsIDQ4NjExLCA0ODYxNiwgCisgICAgNDg2MjEsIDQ4NjI2LCA0ODYzMSwgNDg2MzYsIDQ4NjQxLCA0ODY0NiwgNDg2NTEsIDQ4NjU2LCA0ODY2MSwgNDg2NjYsIAorICAgIDQ4NjcxLCA0ODY3NiwgNDg2ODEsIDQ4Njg2LCA0ODY5MSwgNDg2OTYsIDQ4NzAxLCA0ODcwNSwgNDg3MDksIDQ4NzEzLCAKKyAgICA0ODcxOSwgNDg3MjUsIDQ4NzMwLCA0ODczNSwgNDg3NDAsIDQ4NzQ2LCA0ODc1MiwgNDg3NTcsIDQ4NzY1LCA0ODc3MywgCisgICAgNDg3ODEsIDQ4Nzg5LCA0ODc5NywgNDg4MDUsIDQ4ODEzLCA0ODgyMSwgNDg4MjcsIDQ4ODMyLCA0ODgzNywgNDg4NDIsIAorICAgIDQ4ODQ1LCA0ODg0OSwgNDg4NTMsIDQ4ODU3LCA0ODg2MSwgNDg4NjUsIDQ4ODY5LCA0ODg3NiwgNDg4ODMsIDQ4ODkxLCAKKyAgICA0ODg5OSwgNDg5MDQsIDQ4OTA5LCA0ODkxNiwgNDg5MjMsIDQ4OTMwLCA0ODkzNywgNDg5NDAsIDQ4OTQzLCA0ODk0OCwgCisgICAgNDg5NTAsIDQ4OTU0LCA0ODk1OSwgNDg5NjEsIDQ4OTYzLCA0ODk2NSwgNDg5NjcsIDQ4OTcyLCA0ODk3NSwgNDg5NzcsIAorICAgIDQ4OTgyLCA0ODk4OSwgNDg5OTYsIDQ4OTk5LCA0OTAwMywgNDkwMDgsIDQ5MDEzLCA0OTAyMSwgNDkwMjcsIDQ5MDMzLCAKKyAgICA0OTA0NSwgNDkwNTIsIDQ5MDYwLCA0OTA2NSwgNDkwNzAsIDQ5MDc2LCA0OTA3OSwgNDkwODIsIDQ5MDg3LCA0OTA4OSwgCisgICAgNDkwOTMsIDQ5MDk1LCA0OTA5NywgNDkwOTksIDQ5MTAxLCA0OTEwMywgNDkxMDUsIDQ5MTEwLCA0OTExMiwgNDkxMTQsIAorICAgIDQ5MTE2LCA0OTExOCwgNDkxMjIsIDQ5MTI0LCA0OTEyNywgNDkxMzIsIDQ5MTM3LCA0OTE0MiwgNDkxNDcsIDQ5MTUzLCAKKyAgICA0OTE1OSwgNDkxNjEsIDQ5MTY0LCA0OTE3MSwgNDkxNzgsIDQ5MTg1LCA0OTE5MiwgNDkxOTYsIDQ5MjAwLCA0OTIwMiwgCisgICAgNDkyMDQsIDQ5MjA4LCA0OTIxNCwgNDkyMTksIDQ5MjIxLCA0OTIyNSwgNDkyMzQsIDQ5MjQyLCA0OTI1MCwgNDkyNTYsIAorICAgIDQ5MjYyLCA0OTI2NywgNDkyNzMsIDQ5Mjc4LCA0OTI4MSwgNDkyOTUsIDQ5Mjk4LCA0OTMwMywgNDkzMDgsIDQ5MzE0LCAKKyAgICA0OTMyNCwgNDkzMjYsIDQ5MzMyLCA0OTMzOCwgNDkzNDIsIDQ5MzQ5LCA0OTM1MywgNDkzNTUsIDQ5MzU3LCA0OTM2MSwgCisgICAgNDkzNjcsIDQ5MzcyLCA0OTM3OCwgNDkzODAsIDQ5Mzg2LCA0OTM4OCwgNDkzOTQsIDQ5Mzk2LCA0OTM5OCwgNDk0MDMsIAorICAgIDQ5NDA1LCA0OTQwOSwgNDk0MTQsIDQ5NDE2LCA0OTQyMSwgNDk0MjYsIDQ5NDMwLCA0OTQzNywgNDk0NDcsIDQ5NDUyLCAKKyAgICA0OTQ1OCwgNDk0NjEsIDQ5NDY3LCA0OTQ3MCwgNDk0NzUsIDQ5NDgwLCA0OTQ4NCwgNDk0ODYsIDQ5NDg4LCA0OTQ5MiwgCisgICAgNDk0OTYsIDQ5NTAwLCA0OTUwNCwgNDk1MDksIDQ5NTExLCA0OTUxNiwgNDk1MTksIDQ5NTIyLCA0OTUyNSwgNDk1MjksIAorICAgIDQ5NTMzLCA0OTUzOCwgNDk1NDIsIDQ5NTQ3LCA0OTU1MiwgNDk1NTYsIDQ5NTYxLCA0OTU2NywgNDk1NzAsIDQ5NTc2LCAKKyAgICA0OTU4MSwgNDk1ODUsIDQ5NTkwLCA0OTU5NiwgNDk2MDIsIDQ5NjA5LCA0OTYxNSwgNDk2MjIsIDQ5NjI5LCA0OTYzMSwgCisgICAgNDk2MzgsIDQ5NjQyLCA0OTY0OCwgNDk2NTQsIDQ5NjU5LCA0OTY2NSwgNDk2NjksIDQ5Njc0LCA0OTY3NywgNDk2ODIsIAorICAgIDQ5Njg4LCA0OTY5NSwgNDk3MDMsIDQ5NzEwLCA0OTcxOSwgNDk3MjksIDQ5NzM2LCA0OTc0MiwgNDk3NDYsIDQ5NzUzLCAKKyAgICA0OTc1OCwgNDk3NjcsIDQ5NzcwLCA0OTc3MywgNDk3ODIsIDQ5NzkyLCA0OTc5OSwgNDk4MDEsIDQ5ODA3LCA0OTgxMiwgCisgICAgNDk4MTQsIDQ5ODE3LCA0OTgyMSwgNDk4MjksIDQ5ODM4LCA0OTg0MSwgNDk4NDYsIDQ5ODUxLCA0OTg1OSwgNDk4NjcsIAorICAgIDQ5ODc1LCA0OTg4MywgNDk4ODksIDQ5ODk1LCA0OTkwMSwgNDk5MDksIDQ5OTE0LCA0OTkxNywgNDk5MjEsIDQ5OTI0LCAKKyAgICA0OTkzNiwgNDk5NDYsIDQ5OTU3LCA0OTk2NiwgNDk5NzcsIDQ5OTg3LCA0OTk5NiwgNTAwMDIsIDUwMDEwLCA1MDAxNCwgCisgICAgNTAwMjIsIDUwMDI2LCA1MDAzNCwgNTAwNDEsIDUwMDQ4LCA1MDA1NywgNTAwNjYsIDUwMDc2LCA1MDA4NiwgNTAwOTYsIAorICAgIDUwMTA2LCA1MDExNSwgNTAxMjQsIDUwMTM0LCA1MDE0NCwgNTAxNTMsIDUwMTYyLCA1MDE2OCwgNTAxNzQsIDUwMTgwLCAKKyAgICA1MDE4NiwgNTAxOTIsIDUwMTk4LCA1MDIwNSwgNTAyMTEsIDUwMjE4LCA1MDIyNSwgNTAyMzEsIDUwMjM3LCA1MDI0MywgCisgICAgNTAyNDksIDUwMjU1LCA1MDI2MSwgNTAyNjgsIDUwMjc0LCA1MDI4MSwgNTAyODgsIDUwMjk1LCA1MDMwMiwgNTAzMDksIAorICAgIDUwMzE2LCA1MDMyMywgNTAzMzAsIDUwMzM4LCA1MDM0NSwgNTAzNTMsIDUwMzYxLCA1MDM2NiwgNTAzNjksIDUwMzczLCAKKyAgICA1MDM3NywgNTAzODMsIDUwMzg2LCA1MDM5MSwgNTAzOTcsIDUwNDAyLCA1MDQwNiwgNTA0MTEsIDUwNDE3LCA1MDQyNCwgCisgICAgNTA0MjcsIDUwNDM0LCA1MDQ0MSwgNTA0NDUsIDUwNDUzLCA1MDQ2MSwgNTA0NjYsIDUwNDcyLCA1MDQ3NywgNTA0ODIsIAorICAgIDUwNDg5LCA1MDQ5NiwgNTA1MDQsIDUwNTEyLCA1MDUyMSwgNTA1MjUsIDUwNTM0LCA1MDUzOSwgNTA1NDMsIDUwNTUwLCAKKyAgICA1MDU1NCwgNTA1NjAsIDUwNTY4LCA1MDU3MywgNTA1ODAsIDUwNTg0LCA1MDU4OSwgNTA1OTMsIDUwNTk4LCA1MDYwMiwgCisgICAgNTA2MDcsIDUwNjEyLCA1MDYyMSwgNTA2MjMsIDUwNjI2LCA1MDYyOSwgNTA2MzYsIDUwNjQzLCA1MDY0OSwgNTA2NTcsIAorICAgIDUwNjYzLCA1MDY3MCwgNTA2NzUsIDUwNjc4LCA1MDY4MywgNTA2ODgsIDUwNjkzLCA1MDcwMSwgNTA3MDUsIDUwNzEyLCAKKyAgICA1MDcyMCwgNTA3MjgsIDUwNzMzLCA1MDczOCwgNTA3NDQsIDUwNzQ5LCA1MDc1NCwgNTA3NjAsIDUwNzY1LCA1MDc2OCwgCisgICAgNTA3NzIsIDUwNzc2LCA1MDc4MywgNTA3OTMsIDUwNzk4LCA1MDgwNywgNTA4MTYsIDUwODIyLCA1MDgyOCwgNTA4MzMsIAorICAgIDUwODM4LCA1MDg0MywgNTA4NDgsIDUwODU0LCA1MDg2MCwgNTA4NjgsIDUwODc2LCA1MDg4MiwgNTA4ODgsIDUwODkyLCAKKyAgICA1MDg5NiwgNTA5MDMsIDUwOTEwLCA1MDkxNiwgNTA5MTksIDUwOTIyLCA1MDkyNiwgNTA5MzAsIDUwOTM0LCA1MDkzOSwgCisgICAgNTA5NDUsIDUwOTUxLCA1MDk1OCwgNTA5NjUsIDUwOTcwLCA1MDk3NCwgNTA5NzgsIDUwOTgyLCA1MDk4NiwgNTA5OTAsIAorICAgIDUwOTk0LCA1MDk5OCwgNTEwMDIsIDUxMDA2LCA1MTAxMCwgNTEwMTQsIDUxMDE4LCA1MTAyMiwgNTEwMjYsIDUxMDMwLCAKKyAgICA1MTAzNCwgNTEwMzgsIDUxMDQyLCA1MTA0NiwgNTEwNTAsIDUxMDU0LCA1MTA1OCwgNTEwNjIsIDUxMDY2LCA1MTA3MCwgCisgICAgNTEwNzQsIDUxMDc4LCA1MTA4MiwgNTEwODYsIDUxMDkwLCA1MTA5NCwgNTEwOTgsIDUxMTAyLCA1MTEwNiwgNTExMTAsIAorICAgIDUxMTE0LCA1MTExOCwgNTExMjIsIDUxMTI2LCA1MTEzMCwgNTExMzQsIDUxMTM4LCA1MTE0MiwgNTExNDYsIDUxMTUwLCAKKyAgICA1MTE1NCwgNTExNTgsIDUxMTYyLCA1MTE2NiwgNTExNzAsIDUxMTc0LCA1MTE3OCwgNTExODIsIDUxMTg2LCA1MTE5MCwgCisgICAgNTExOTQsIDUxMTk4LCA1MTIwMiwgNTEyMDYsIDUxMjEwLCA1MTIxNCwgNTEyMTgsIDUxMjIyLCA1MTIyNiwgNTEyMzAsIAorICAgIDUxMjM0LCA1MTIzOCwgNTEyNDIsIDUxMjQ2LCA1MTI1MCwgNTEyNTQsIDUxMjU4LCA1MTI2MiwgNTEyNjYsIDUxMjcwLCAKKyAgICA1MTI3NCwgNTEyNzgsIDUxMjgyLCA1MTI4NiwgNTEyOTAsIDUxMjk0LCA1MTI5OCwgNTEzMDIsIDUxMzA2LCA1MTMxMCwgCisgICAgNTEzMTQsIDUxMzE4LCA1MTMyMiwgNTEzMjYsIDUxMzMwLCA1MTMzNCwgNTEzMzgsIDUxMzQyLCA1MTM0NiwgNTEzNTAsIAorICAgIDUxMzU0LCA1MTM1OCwgNTEzNjIsIDUxMzY2LCA1MTM3MCwgNTEzNzQsIDUxMzc4LCA1MTM4MiwgNTEzODYsIDUxMzkwLCAKKyAgICA1MTM5NCwgNTEzOTgsIDUxNDAyLCA1MTQwNiwgNTE0MTAsIDUxNDE0LCA1MTQxOCwgNTE0MjIsIDUxNDI2LCA1MTQzMCwgCisgICAgNTE0MzQsIDUxNDM4LCA1MTQ0MiwgNTE0NDYsIDUxNDUwLCA1MTQ1NCwgNTE0NTgsIDUxNDYyLCA1MTQ2NiwgNTE0NzAsIAorICAgIDUxNDc0LCA1MTQ3OCwgNTE0ODIsIDUxNDg2LCA1MTQ5MCwgNTE0OTQsIDUxNDk4LCA1MTUwMiwgNTE1MDYsIDUxNTEwLCAKKyAgICA1MTUxNCwgNTE1MTgsIDUxNTIyLCA1MTUyNiwgNTE1MzAsIDUxNTM0LCA1MTUzOCwgNTE1NDIsIDUxNTQ2LCA1MTU1MCwgCisgICAgNTE1NTQsIDUxNTU4LCA1MTU2MiwgNTE1NjYsIDUxNTcwLCA1MTU3NCwgNTE1NzgsIDUxNTgyLCA1MTU4NiwgNTE1OTAsIAorICAgIDUxNTk0LCA1MTU5OCwgNTE2MDIsIDUxNjA2LCA1MTYxMCwgNTE2MTQsIDUxNjE4LCA1MTYyMiwgNTE2MjYsIDUxNjMwLCAKKyAgICA1MTYzNCwgNTE2MzgsIDUxNjQyLCA1MTY0NiwgNTE2NTAsIDUxNjU0LCA1MTY1OCwgNTE2NjIsIDUxNjY2LCA1MTY3MCwgCisgICAgNTE2NzQsIDUxNjc4LCA1MTY4MiwgNTE2ODYsIDUxNjkwLCA1MTY5NCwgNTE2OTgsIDUxNzAyLCA1MTcwNiwgNTE3MTAsIAorICAgIDUxNzE0LCA1MTcxOCwgNTE3MjIsIDUxNzI2LCA1MTczMCwgNTE3MzQsIDUxNzM4LCA1MTc0MiwgNTE3NDYsIDUxNzUwLCAKKyAgICA1MTc1NCwgNTE3NTgsIDUxNzYyLCA1MTc2NiwgNTE3NzAsIDUxNzc0LCA1MTc3OCwgNTE3ODIsIDUxNzg2LCA1MTc5MCwgCisgICAgNTE3OTQsIDUxNzk4LCA1MTgwMiwgNTE4MDYsIDUxODEwLCA1MTgxNCwgNTE4MTgsIDUxODIyLCA1MTgyNiwgNTE4MzAsIAorICAgIDUxODM0LCA1MTgzOCwgNTE4NDIsIDUxODQ2LCA1MTg1MCwgNTE4NTQsIDUxODU4LCA1MTg2MiwgNTE4NjYsIDUxODcwLCAKKyAgICA1MTg3NCwgNTE4NzgsIDUxODgyLCA1MTg4NiwgNTE4OTAsIDUxODk0LCA1MTg5OCwgNTE5MDIsIDUxOTA2LCA1MTkxMCwgCisgICAgNTE5MTQsIDUxOTE4LCA1MTkyMiwgNTE5MjYsIDUxOTMwLCA1MTkzNCwgNTE5MzgsIDUxOTQyLCA1MTk0NiwgNTE5NTAsIAorICAgIDUxOTU0LCA1MTk1OCwgNTE5NjIsIDUxOTY2LCA1MTk3MCwgNTE5NzQsIDUxOTc4LCA1MTk4MiwgNTE5ODYsIDUxOTkwLCAKKyAgICA1MTk5NCwgNTIwMDEsIDUyMDA5LCA1MjAxNSwgNTIwMjEsIDUyMDI4LCA1MjAzNSwgNTIwNDEsIDUyMDQ3LCA1MjA1MywgCisgICAgNTIwNTksIDUyMDYzLCA1MjA2NywgNTIwNzIsIDUyMDc3LCA1MjA4MywgNTIwODksIDUyMDk3LCA1MjEwNCwgNTIxMDksIAorICAgIDUyMTE0LCA1MjEyMiwgNTIxMzEsIDUyMTM4LCA1MjE0OCwgNTIxNTksIDUyMTYyLCA1MjE2NSwgNTIxNjksIDUyMTczLCAKKyAgICA1MjE4MCwgNTIxODcsIDUyMTk4LCA1MjIwOSwgNTIyMTgsIDUyMjI3LCA1MjIzMywgNTIyMzksIDUyMjQ2LCA1MjI1MywgCisgICAgNTIyNjIsIDUyMjcyLCA1MjI4MywgNTIyOTMsIDUyMzAzLCA1MjMxMywgNTIzMjQsIDUyMzM1LCA1MjM0NSwgNTIzNTYsIAorICAgIDUyMzY2LCA1MjM3NiwgNTIzODUsIDUyMzk1LCA1MjQwNSwgNTI0MTUsIDUyNDI1LCA1MjQzMiwgNTI0MzksIDUyNDQ2LCAKKyAgICA1MjQ1MywgNTI0NjMsIDUyNDczLCA1MjQ4MSwgNTI0ODksIDUyNDk2LCA1MjUwMywgNTI1MTAsIDUyNTE3LCA1MjUyNCwgCisgICAgNTI1MjksIDUyNTM0LCA1MjU0MCwgNTI1NDgsIDUyNTU3LCA1MjU2NSwgNTI1NzMsIDUyNTgxLCA1MjU4OSwgNTI1OTcsIAorICAgIDUyNjA1LCA1MjYxMywgNTI2MjEsIDUyNjMwLCA1MjYzOSwgNTI2NDgsIDUyNjU3LCA1MjY2NiwgNTI2NzUsIDUyNjg0LCAKKyAgICA1MjY5MywgNTI3MDIsIDUyNzExLCA1MjcyMCwgNTI3MjksIDUyNzM4LCA1Mjc0NywgNTI3NTYsIDUyNzY1LCA1Mjc3OSwgCisgICAgNTI3OTQsIDUyODA4LCA1MjgyMywgNTI4MzcsIDUyODUxLCA1Mjg2NSwgNTI4NzksIDUyODg5LCA1MjkwMCwgNTI5MTAsIAorICAgIDUyOTIxLCA1MjkzNiwgNTI5NTEsIDUyOTU5LCA1Mjk2NSwgNTI5NzIsIDUyOTc5LCA1Mjk4NiwgNTI5OTMsIDUyOTk4LCAKKyAgICA1MzAwNCwgNTMwMDksIDUzMDE0LCA1MzAyMCwgNTMwMjUsIDUzMDMwLCA1MzAzNSwgNTMwNDAsIDUzMDQ1LCA1MzA1MiwgCisgICAgNTMwNTgsIDUzMDY2LCA1MzA3MSwgNTMwNzYsIDUzMDgwLCA1MzA4NCwgNTMwOTIsIDUzMTAwLCA1MzEwOCwgNTMxMTYsIAorICAgIDUzMTIzLCA1MzEzMCwgNTMxNDMsIDUzMTU2LCA1MzE2OSwgNTMxODIsIDUzMTkwLCA1MzE5OCwgNTMyMDQsIDUzMjEwLCAKKyAgICA1MzIxNywgNTMyMjQsIDUzMjMxLCA1MzIzOCwgNTMyNDIsIDUzMjQ3LCA1MzI1NSwgNTMyNjMsIDUzMjcxLCA1MzI3OCwgCisgICAgNTMyODIsIDUzMjkwLCA1MzI5OCwgNTMzMDIsIDUzMzA2LCA1MzMxMSwgNTMzMTgsIDUzMzI2LCA1MzMzNCwgNTMzNTMsIAorICAgIDUzMzcyLCA1MzM5MSwgNTM0MTAsIDUzNDI5LCA1MzQ0OCwgNTM0NjcsIDUzNDg2LCA1MzQ5MiwgNTM0OTksIDUzNTA4LCAKKyAgICA1MzUxNiwgNTM1MjQsIDUzNTMwLCA1MzUzMywgNTM1MzYsIDUzNTQxLCA1MzU0NCwgNTM1NjQsIDUzNTcxLCA1MzU3NywgCisgICAgNTM1ODMsIDUzNTg3LCA1MzU5MCwgNTM1OTMsIDUzNTk2LCA1MzYwOCwgNTM2MjIsIDUzNjI5LCA1MzYzNiwgNTM2MzksIAorICAgIDUzNjQzLCA1MzY0NiwgNTM2NTEsIDUzNjU2LCA1MzY2MSwgNTM2NjcsIDUzNjc2LCA1MzY4MywgNTM2OTAsIDUzNjk4LCAKKyAgICA1MzcwNSwgNTM3MTIsIDUzNzE1LCA1MzcyMSwgNTM3MjcsIDUzNzMwLCA1MzczMywgNTM3MzgsIDUzNzQzLCA1Mzc0OSwgCisgICAgNTM3NTUsIDUzNzU5LCA1Mzc2NCwgNTM3NzEsIDUzNzc1LCA1Mzc4MSwgNTM3ODUsIDUzNzg5LCA1Mzc5NywgNTM4MDksIAorICAgIDUzODE4LCA1MzgyMiwgNTM4MjQsIDUzODMzLCA1Mzg0MiwgNTM4NDgsIDUzODUxLCA1Mzg1NywgNTM4NjMsIDUzODY4LCAKKyAgICA1Mzg3MywgNTM4NzgsIDUzODgzLCA1Mzg4OCwgNTM4OTMsIDUzODk1LCA1MzkwMSwgNTM5MDYsIDUzOTE0LCA1MzkxOCwgCisgICAgNTM5MjQsIDUzOTI3LCA1MzkzMSwgNTM5MzgsIDUzOTQ1LCA1Mzk0NywgNTM5NDksIDUzOTU1LCA1Mzk2MSwgNTM5NjcsIAorICAgIDUzOTc2LCA1Mzk4NSwgNTM5OTIsIDUzOTk5LCA1NDAwNSwgNTQwMTIsIDU0MDE3LCA1NDAyMiwgNTQwMjcsIDU0MDMzLCAKKyAgICA1NDAzOSwgNTQwNDQsIDU0MDUxLCA1NDA1NSwgNTQwNTksIDU0MDcyLCA1NDA4NSwgNTQwOTcsIDU0MTA2LCA1NDExMiwgCisgICAgNTQxMTksIDU0MTI0LCA1NDEyOSwgNTQxMzQsIDU0MTM5LCA1NDE0NCwgNTQxNDYsIDU0MTUzLCA1NDE2MSwgNTQxNjksIAorICAgIDU0MTc3LCA1NDE4NCwgNTQxOTIsIDU0MTk4LCA1NDIwMywgNTQyMDksIDU0MjE1LCA1NDIyMSwgNTQyMjgsIDU0MjM0LCAKKyAgICA1NDI0MiwgNTQyNTAsIDU0MjU4LCA1NDI2NiwgNTQyNzQsIDU0MjgwLCA1NDI4NiwgNTQyOTUsIDU0Mjk5LCA1NDMwOCwgCisgICAgNTQzMTcsIDU0MzI2LCA1NDMzNCwgNTQzMzgsIDU0MzQ0LCA1NDM1MSwgNTQzNTgsIDU0MzYyLCA1NDM2OCwgNTQzNzYsIAorICAgIDU0MzgyLCA1NDM4NywgNTQzOTMsIDU0Mzk4LCA1NDQwMywgNTQ0MTAsIDU0NDE3LCA1NDQyMiwgNTQ0MjcsIDU0NDM1LCAKKyAgICA1NDQ0MywgNTQ0NTMsIDU0NDYzLCA1NDQ3MCwgNTQ0NzcsIDU0NDgxLCA1NDQ4NSwgNTQ0OTcsIDU0NTAzLCA1NDUxMCwgCisgICAgNTQ1MTUsIDU0NTIwLCA1NDUyNywgNTQ1MzQsIDU0NTQwLCA1NDU0NiwgNTQ1NTYsIDU0NTYzLCA1NDU3MSwgNTQ1NzksIAorICAgIDU0NTg4LCA1NDU5NSwgNTQ2MDEsIDU0NjA4LCA1NDYxNCwgNTQ2MjIsIDU0NjMwLCA1NDYzOCwgNTQ2NDYsIDU0NjUyLCAKKyAgICA1NDY1NywgNTQ2NjcsIDU0Njc4LCA1NDY4NSwgNTQ2OTQsIDU0NzAwLCA1NDcwNSwgNTQ3MTAsIDU0NzIwLCA1NDcyNywgCisgICAgNTQ3MzMsIDU0NzM5LCA1NDc0NywgNTQ3NTIsIDU0NzU5LCA1NDc2NiwgNTQ3NzcsIDU0Nzg0LCA1NDc5MSwgNTQ3OTgsIAorICAgIDU0ODA1LCA1NDgxMiwgNTQ4MjAsIDU0ODI4LCA1NDg0MSwgNTQ4NTQsIDU0ODY2LCA1NDg3OCwgNTQ4OTIsIDU0OTA2LCAKKyAgICA1NDkxMiwgNTQ5MTgsIDU0OTI3LCA1NDkzNiwgNTQ5NDMsIDU0OTUwLCA1NDk1OSwgNTQ5NjgsIDU0OTc3LCA1NDk4NiwgCisgICAgNTQ5OTQsIDU1MDAyLCA1NTAxMiwgNTUwMjIsIDU1MDM2LCA1NTA1MCwgNTUwNTksIDU1MDY4LCA1NTA4MSwgNTUwOTQsIAorICAgIDU1MTAzLCA1NTExMiwgNTUxMjMsIDU1MTM0LCA1NTE0MCwgNTUxNDYsIDU1MTU1LCA1NTE2NCwgNTUxNjksIDU1MTc0LCAKKyAgICA1NTE4MiwgNTUxODgsIDU1MTk0LCA1NTIwMiwgNTUyMTAsIDU1MjIzLCA1NTIzNiwgNTUyNDAsIDU1MjQ0LCA1NTI1MiwgCisgICAgNTUyNjAsIDU1MjY3LCA1NTI3NSwgNTUyODMsIDU1MjkyLCA1NTMwMSwgNTUzMDcsIDU1MzEzLCA1NTMyMCwgNTUzMjcsIAorICAgIDU1MzM0LCA1NTM0MSwgNTUzNTAsIDU1MzU5LCA1NTM2MiwgNTUzNjUsIDU1MzcwLCA1NTM3NSwgNTUzODEsIDU1Mzg3LCAKKyAgICA1NTM5NCwgNTU0MDEsIDU1NDEyLCA1NTQyMywgNTU0MzAsIDU1NDM3LCA1NTQ0NSwgNTU0NTMsIDU1NDYxLCA1NTQ2OSwgCisgICAgNTU0NzcsIDU1NDg1LCA1NTQ5MSwgNTU0OTcsIDU1NTAxLCA1NTUwNSwgNTU1MTMsIDU1NTIxLCA1NTUyNiwgNTU1MzEsIAorICAgIDU1NTM2LCA1NTU0MSwgNTU1NDcsIDU1NTYxLCA1NTU2OCwgNTU1NzUsIDU1NTc5LCA1NTU4MSwgNTU1ODMsIDU1NTg4LCAKKyAgICA1NTU5MywgNTU1OTgsIDU1NjAyLCA1NTYxMCwgNTU2MTcsIDU1NjI0LCA1NTYzMiwgNTU2NDQsIDU1NjUyLCA1NTY2MCwgCisgICAgNTU2NzEsIDU1Njc1LCA1NTY3OSwgNTU2ODUsIDU1NjkzLCA1NTcwNiwgNTU3MTMsIDU1NzIwLCA1NTcyNywgNTU3MzMsIAorICAgIDU1NzQwLCA1NTc0OSwgNTU3NTgsIDU1NzY0LCA1NTc3MCwgNTU3NzYsIDU1Nzg2LCA1NTc5NiwgNTU4MDQsIDU1ODEzLCAKKyAgICA1NTgxOCwgNTU4MjEsIDU1ODI2LCA1NTgzMSwgNTU4MzYsIDU1ODQyLCA1NTg0OCwgNTU4NTIsIDU1ODU1LCA1NTg1OCwgCisgICAgNTU4NjEsIDU1ODY2LCA1NTg3MSwgNTU4NzcsIDU1ODgzLCA1NTg4NywgNTU4OTEsIDU1ODk4LCA1NTkwNSwgNTU5MTIsIAorICAgIDU1OTE5LCA1NTkyNiwgNTU5MzMsIDU1OTQzLCA1NTk1MywgNTU5NjAsIDU1OTY3LCA1NTk3NSwgNTU5ODMsIDU1OTg3LCAKKyAgICA1NTk5MiwgNTU5OTcsIDU2MDAzLCA1NjAwOSwgNTYwMTIsIDU2MDE1LCA1NjAxOCwgNTYwMjEsIDU2MDI2LCA1NjAzMSwgCisgICAgNTYwMzYsIDU2MDQxLCA1NjA0NiwgNTYwNTEsIDU2MDU1LCA1NjA1OSwgNTYwNjMsIDU2MDY4LCA1NjA3MywgNTYwNzcsIAorICAgIDU2MDgxLCA1NjA4NywgNTYwOTEsIDU2MDk3LCA1NjEwMiwgNTYxMDksIDU2MTE3LCA1NjEyNCwgNTYxMzIsIDU2MTM5LCAKKyAgICA1NjE0NywgNTYxNTYsIDU2MTYzLCA1NjE3MywgNTYxODQsIDU2MTkwLCA1NjE5OSwgNTYyMDUsIDU2MjE0LCA1NjIyMywgCisgICAgNTYyMjksIDU2MjM1LCA1NjIzOSwgNTYyNDMsIDU2MjUyLCA1NjI2MSwgNTYyNjgsIDU2Mjc1LCA1NjI4NCwgNTYyOTMsIAorICAgIDU2Mjk5LCA1NjMwNSwgNTYzMTIsIDU2MzE3LCA1NjMyMSwgNTYzMjUsIDU2MzMwLCA1NjMzNSwgNTYzNDAsIDU2MzQ4LCAKKyAgICA1NjM1NiwgNTYzNTksIDU2MzYzLCA1NjM3MiwgNTYzODIsIDU2MzkxLCA1NjQwMSwgNTY0MTIsIDU2NDI1LCA1NjQyOSwgCisgICAgNTY0MzMsIDU2NDM3LCA1NjQ0MSwgNTY0NDYsIDU2NDUxLCA1NjQ1NywgNTY0NjMsIDU2NDcwLCA1NjQ3NywgNTY0ODMsIAorICAgIDU2NDg5LCA1NjQ5NSwgNTY1MDEsIDU2NTA5LCA1NjUxNywgNTY1MjQsIDU2NTMxLCA1NjUzOCwgMCwgMCwgNTY1NDUsIAorICAgIDU2NTU0LCA1NjU2MywgNTY1NzMsIDU2NTgzLCA1NjU5MiwgNTY2MDEsIDU2NjEwLCA1NjYxOSwgNTY2MjUsIDU2NjMwLCAKKyAgICA1NjYzOSwgNTY2NDksIDU2NjU4LCA1NjY2OCwgNTY2NzUsIDU2NjgyLCA1NjY4OSwgNTY2OTYsIDU2NzAxLCA1NjcwNiwgCisgICAgNTY3MTEsIDU2NzE2LCA1NjcyNCwgNTY3MzMsIDU2NzQxLCA1Njc1MCwgNTY3NTQsIDU2NzU4LCA1Njc2MiwgNTY3NjYsIAorICAgIDU2Nzc2LCAwLCAwLCA1Njc3OSwgNTY3ODgsIDU2Nzk3LCA1NjgwNiwgNTY4MTUsIDU2ODIxLCA1NjgyNywgNTY4MzMsIAorICAgIDU2ODM5LCA1Njg0OSwgNTY4NTksIDU2ODY5LCA1Njg3OSwgNTY4ODksIDU2ODk5LCA1NjkwOSwgNTY5MTksIDU2OTI2LCAKKyAgICA1NjkzMywgNTY5NDAsIDU2OTQ3LCA1Njk1NCwgNTY5NjEsIDU2OTY4LCA1Njk3NSwgNTY5ODEsIDU2OTg3LCA1Njk5MywgCisgICAgNTY5OTksIDU3MDA1LCA1NzAxMSwgNTcwMTcsIDU3MDIzLCA1NzAzNCwgMCwgMCwgMCwgNTcwNDQsIDU3MDUxLCA1NzA1NCwgCisgICAgNTcwNTgsIDU3MDYyLCA1NzA2NywgNTcwNzIsIDU3MDc3LCA1NzA4MCwgNTcwODksIDU3MDk4LCA1NzEwNywgMCwgNTcxMTYsIAorICAgIDU3MTIyLCA1NzEyOCwgNTcxMzYsIDU3MTQ2LCA1NzE1MywgNTcxNjIsIDU3MTY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzE3MCwgNTcxNzksIAorICAgIDU3MTg4LCA1NzE5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTcyMDYsIAorICAgIDU3MjExLCA1NzIxNiwgNTcyMjEsIDU3MjI2LCA1NzIzMSwgNTcyMzYsIDU3MjQxLCA1NzI0NiwgNTcyNTEsIDU3MjU2LCAKKyAgICA1NzI2MiwgNTcyNjYsIDU3MjcxLCA1NzI3NiwgNTcyODEsIDU3Mjg2LCA1NzI5MSwgNTcyOTYsIDU3MzAxLCA1NzMwNiwgCisgICAgNTczMTEsIDU3MzE2LCA1NzMyMSwgNTczMjYsIDU3MzMxLCA1NzMzNiwgNTczNDEsIDU3MzQ2LCA1NzM1MSwgNTczNTYsIAorICAgIDU3MzYxLCA1NzM2NiwgNTczNzEsIDU3Mzc2LCA1NzM4MiwgNTczODcsIDU3MzkzLCA1NzQwMiwgNTc0MDcsIDU3NDE1LCAKKyAgICA1NzQyMiwgNTc0MzEsIDU3NDM2LCA1NzQ0MSwgNTc0NDYsIDU3NDUyLCAwLCA1NzQ1OSwgNTc0NjQsIDU3NDY5LCA1NzQ3NCwgCisgICAgNTc0NzksIDU3NDg0LCA1NzQ4OSwgNTc0OTQsIDU3NDk5LCA1NzUwNCwgNTc1MDksIDU3NTE1LCA1NzUxOSwgNTc1MjQsIAorICAgIDU3NTI5LCA1NzUzNCwgNTc1MzksIDU3NTQ0LCA1NzU0OSwgNTc1NTQsIDU3NTU5LCA1NzU2NCwgNTc1NjksIDU3NTc0LCAKKyAgICA1NzU3OSwgNTc1ODQsIDU3NTg5LCA1NzU5NCwgNTc1OTksIDU3NjA0LCA1NzYwOSwgNTc2MTQsIDU3NjE5LCA1NzYyNCwgCisgICAgNTc2MjksIDU3NjM1LCA1NzY0MCwgNTc2NDYsIDU3NjU1LCA1NzY2MCwgNTc2NjgsIDU3Njc1LCA1NzY4NCwgNTc2ODksIAorICAgIDU3Njk0LCA1NzY5OSwgNTc3MDUsIDAsIDU3NzEyLCA1NzcyMCwgNTc3MjgsIDU3NzM3LCA1Nzc0NCwgNTc3NTIsIDU3NzU4LCAKKyAgICA1Nzc2NywgNTc3NzUsIDU3NzgzLCA1Nzc5MSwgNTc3OTksIDU3ODA3LCA1NzgxNSwgNTc4MjAsIDU3ODI3LCA1NzgzMywgCisgICAgNTc4NDAsIDU3ODQ4LCA1Nzg1NSwgNTc4NjIsIDU3ODcwLCA1Nzg3NiwgNTc4ODIsIDU3ODg5LCA1Nzg5NiwgNTc5MDYsIAorICAgIDU3OTE2LCA1NzkyMywgNTc5MzAsIDU3OTM1LCA1Nzk0NSwgNTc5NTUsIDU3OTYwLCA1Nzk2NSwgNTc5NzAsIDU3OTc1LCAKKyAgICA1Nzk4MCwgNTc5ODUsIDU3OTkwLCA1Nzk5NSwgNTgwMDAsIDU4MDA1LCA1ODAxMCwgNTgwMTUsIDU4MDIwLCA1ODAyNSwgCisgICAgNTgwMzAsIDU4MDM1LCA1ODA0MCwgNTgwNDUsIDU4MDUwLCA1ODA1NSwgNTgwNjAsIDU4MDY1LCA1ODA3MCwgNTgwNzUsIAorICAgIDU4MDgwLCA1ODA4NSwgNTgwOTAsIDU4MDk1LCA1ODEwMCwgNTgxMDUsIDU4MTA5LCA1ODExMywgNTgxMTgsIDU4MTIzLCAKKyAgICA1ODEyOCwgNTgxMzMsIDU4MTM4LCA1ODE0MywgNTgxNDgsIDU4MTUzLCA1ODE1OCwgNTgxNjMsIDU4MTY4LCA1ODE3MywgCisgICAgNTgxNzgsIDU4MTgzLCA1ODE4OCwgNTgxOTMsIDU4MTk4LCA1ODIwMywgNTgyMTAsIDU4MjE3LCA1ODIyNCwgNTgyMzEsIAorICAgIDU4MjM4LCA1ODI0NSwgNTgyNTIsIDU4MjU5LCA1ODI2NiwgNTgyNzMsIDU4MjgwLCA1ODI4NywgNTgyOTQsIDU4MzAxLCAKKyAgICA1ODMwNiwgNTgzMTEsIDU4MzE4LCA1ODMyNSwgNTgzMzIsIDU4MzM5LCA1ODM0NiwgNTgzNTMsIDU4MzYwLCA1ODM2NywgCisgICAgNTgzNzQsIDU4MzgxLCA1ODM4OCwgNTgzOTUsIDU4NDAxLCA1ODQwNywgNTg0MTMsIDU4NDE5LCA1ODQyNiwgNTg0MzMsIAorICAgIDU4NDQwLCA1ODQ0NywgNTg0NTQsIDU4NDYxLCA1ODQ2OCwgNTg0NzUsIDU4NDgyLCA1ODQ4OSwgNTg0OTcsIDU4NTA1LCAKKyAgICA1ODUxMywgNTg1MjEsIDU4NTI5LCA1ODUzNywgNTg1NDUsIDU4NTUzLCA1ODU1NywgNTg1NjMsIDU4NTY5LCA1ODU3MywgCisgICAgNTg1NzksIDU4NTg1LCA1ODU5MSwgNTg1OTgsIDU4NjA1LCA1ODYxMiwgNTg2MTksIDU4NjI0LCA1ODYzMCwgNTg2MzYsIAorICAgIDU4NjQzLCAwLCAwLCAwLCAwLCAwLCA1ODY1MCwgNTg2NTgsIDU4NjY3LCA1ODY3NiwgNTg2ODQsIDU4NjkwLCA1ODY5NSwgCisgICAgNTg3MDAsIDU4NzA1LCA1ODcxMCwgNTg3MTUsIDU4NzIwLCA1ODcyNSwgNTg3MzAsIDU4NzM1LCA1ODc0MCwgNTg3NDUsIAorICAgIDU4NzUwLCA1ODc1NSwgNTg3NjAsIDU4NzY1LCA1ODc3MCwgNTg3NzUsIDU4NzgwLCA1ODc4NSwgNTg3OTAsIDU4Nzk1LCAKKyAgICA1ODgwMCwgNTg4MDUsIDU4ODEwLCA1ODgxNSwgNTg4MjAsIDU4ODI1LCA1ODgzMCwgNTg4MzUsIDU4ODQwLCA1ODg0NSwgCisgICAgNTg4NTAsIDU4ODU1LCA1ODg2MCwgNTg4NjUsIDU4ODcwLCA1ODg3NSwgNTg4ODAsIDU4ODg1LCAwLCA1ODg5MCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTg4OTUsIDAsIDAsIDU4OTAwLCA1ODkwNCwgNTg5MDksIDU4OTE0LCA1ODkxOSwgNTg5MjQsIDU4OTMzLCAKKyAgICA1ODkzOCwgNTg5NDMsIDU4OTQ4LCA1ODk1MywgNTg5NTgsIDU4OTYzLCA1ODk2OCwgNTg5NzMsIDU4OTgwLCA1ODk4NSwgCisgICAgNTg5OTAsIDU4OTk5LCA1OTAwNiwgNTkwMTEsIDU5MDE2LCA1OTAyMSwgNTkwMjgsIDU5MDMzLCA1OTA0MCwgNTkwNDUsIAorICAgIDU5MDUwLCA1OTA1NywgNTkwNjQsIDU5MDY5LCA1OTA3NCwgNTkwNzksIDU5MDg2LCA1OTA5MywgNTkwOTgsIDU5MTAzLCAKKyAgICA1OTEwOCwgNTkxMTMsIDU5MTE4LCA1OTEyNSwgNTkxMzIsIDU5MTM3LCA1OTE0MiwgNTkxNDcsIDU5MTUyLCA1OTE1NywgCisgICAgNTkxNjIsIDU5MTY3LCA1OTE3MiwgNTkxNzcsIDU5MTgyLCA1OTE4NywgNTkxOTQsIDU5MTk5LCA1OTIwNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTkyMDksIDU5MjE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1OTIyMSwgNTkyMjYsIDU5MjMwLCA1OTIzNCwgNTkyMzgsIDU5MjQyLCA1OTI0NiwgNTkyNTAsIDU5MjU0LCA1OTI1OCwgCisgICAgNTkyNjIsIDU5MjY2LCA1OTI3MiwgNTkyNzYsIDU5MjgwLCA1OTI4NCwgNTkyODgsIDU5MjkyLCA1OTI5NiwgNTkzMDAsIAorICAgIDU5MzA0LCA1OTMwOCwgNTkzMTIsIDU5MzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTMyMCwgNTkzMjQsIAorICAgIDU5MzI4LCA1OTMzMiwgNTkzMzYsIDU5MzQwLCA1OTM0NCwgMCwgNTkzNDgsIDU5MzUyLCA1OTM1NiwgNTkzNjAsIDU5MzY0LCAKKyAgICA1OTM2OCwgNTkzNzIsIDAsIDU5Mzc2LCA1OTM4MCwgNTkzODQsIDU5Mzg4LCA1OTM5MiwgNTkzOTYsIDU5NDAwLCAwLCAKKyAgICA1OTQwNCwgNTk0MDgsIDU5NDEyLCA1OTQxNiwgNTk0MjAsIDU5NDI0LCA1OTQyOCwgMCwgNTk0MzIsIDU5NDM2LCA1OTQ0MCwgCisgICAgNTk0NDQsIDU5NDQ4LCA1OTQ1MiwgNTk0NTYsIDAsIDU5NDYwLCA1OTQ2NCwgNTk0NjgsIDU5NDcyLCA1OTQ3NiwgNTk0ODAsIAorICAgIDU5NDg0LCAwLCA1OTQ4OCwgNTk0OTIsIDU5NDk2LCA1OTUwMCwgNTk1MDQsIDU5NTA4LCA1OTUxMiwgMCwgNTk1MTYsIAorICAgIDU5NTIwLCA1OTUyNCwgNTk1MjgsIDU5NTMyLCA1OTUzNiwgNTk1NDAsIDAsIDU5NTQ0LCA1OTU0OSwgNTk1NTQsIDU5NTU5LCAKKyAgICA1OTU2NCwgNTk1NjksIDU5NTc0LCA1OTU3OCwgNTk1ODMsIDU5NTg4LCA1OTU5MywgNTk1OTcsIDU5NjAyLCA1OTYwNywgCisgICAgNTk2MTIsIDU5NjE3LCA1OTYyMSwgNTk2MjYsIDU5NjMxLCA1OTYzNiwgNTk2NDEsIDU5NjQ2LCA1OTY1MSwgNTk2NTUsIAorICAgIDU5NjYwLCA1OTY2NSwgNTk2NzIsIDU5Njc3LCA1OTY4MiwgNTk2ODgsIDU5Njk1LCA1OTcwMiwgNTk3MTEsIDU5NzE4LCAKKyAgICA1OTcyNywgNTk3MzEsIDU5NzM1LCA1OTc0MSwgNTk3NDcsIDU5NzUzLCA1OTc2MSwgNTk3NjcsIDU5NzcxLCA1OTc3NSwgCisgICAgNTk3NzksIDU5Nzg1LCA1OTc5MSwgNTk3OTUsIDU5Nzk3LCA1OTgwMSwgNTk4MDcsIDU5ODA5LCA1OTgxMywgNTk4MTYsIAorICAgIDU5ODE5LCA1OTgyNSwgNTk4MzAsIDU5ODM0LCA1OTgzOCwgNTk4NDMsIDU5ODQ5LCA1OTg1NCwgNTk4NTksIDU5ODY0LCAKKyAgICA1OTg2OSwgNTk4NzYsIDU5ODgzLCA1OTg4OCwgNTk4OTMsIDU5ODk4LCA1OTkwMywgNTk5MDgsIDU5OTEzLCA1OTkxNywgCisgICAgNTk5MjEsIDU5OTI4LCA1OTkzNSwgNTk5NDEsIDU5OTQ1LCA1OTk1MCwgNTk5NTMsIDU5OTU3LCA1OTk2NCwgNTk5NjgsIAorICAgIDU5OTcyLCA1OTk3NiwgNTk5ODAsIDU5OTg2LCA1OTk5MiwgNTk5OTYsIDYwMDAyLCA2MDAwNiwgNjAwMTAsIDYwMDE2LCAKKyAgICA2MDAyMSwgNjAwMjYsIDYwMDI4LCA2MDAzMSwgNjAwMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDYwMDQxLCA2MDA0NSwgNjAwNDksIDYwMDU0LCA2MDA1OSwgNjAwNjQsIDYwMDY4LCA2MDA3MiwgNjAwNzYsIDYwMDgxLCAKKyAgICA2MDA4NiwgNjAwOTAsIDYwMDk0LCA2MDA5OCwgNjAxMDIsIDYwMTA3LCA2MDExMiwgNjAxMTcsIDYwMTIyLCA2MDEyNiwgCisgICAgNjAxMzAsIDYwMTM1LCA2MDE0MCwgNjAxNDUsIDYwMTUwLCA2MDE1NCwgMCwgNjAxNTgsIDYwMTYyLCA2MDE2NiwgNjAxNzAsIAorICAgIDYwMTc0LCA2MDE3OCwgNjAxODIsIDYwMTg3LCA2MDE5MiwgNjAxOTYsIDYwMjAxLCA2MDIwNiwgNjAyMTUsIDYwMjE5LCAKKyAgICA2MDIyMywgNjAyMjcsIDYwMjM0LCA2MDIzOCwgNjAyNDMsIDYwMjQ4LCA2MDI1MiwgNjAyNTYsIDYwMjYyLCA2MDI2NywgCisgICAgNjAyNzIsIDYwMjc3LCA2MDI4MiwgNjAyODYsIDYwMjkwLCA2MDI5NCwgNjAyOTgsIDYwMzAyLCA2MDMwNywgNjAzMTIsIAorICAgIDYwMzE2LCA2MDMyMCwgNjAzMjUsIDYwMzMwLCA2MDMzNSwgNjAzMzksIDYwMzQzLCA2MDM0OCwgNjAzNTMsIDYwMzU5LCAKKyAgICA2MDM2NSwgNjAzNjksIDYwMzc1LCA2MDM4MSwgNjAzODUsIDYwMzkxLCA2MDM5NywgNjA0MDIsIDYwNDA3LCA2MDQxMSwgCisgICAgNjA0MTcsIDYwNDIxLCA2MDQyNSwgNjA0MzEsIDYwNDM3LCA2MDQ0MiwgNjA0NDcsIDYwNDUxLCA2MDQ1NSwgNjA0NjMsIAorICAgIDYwNDY5LCA2MDQ3NSwgNjA0ODEsIDYwNDg2LCA2MDQ5MSwgNjA0OTYsIDYwNTAyLCA2MDUwNiwgNjA1MTIsIDYwNTE2LCAKKyAgICA2MDUyMCwgNjA1MjYsIDYwNTMyLCA2MDUzOCwgNjA1NDQsIDYwNTUwLCA2MDU1NiwgNjA1NjIsIDYwNTY4LCA2MDU3NCwgCisgICAgNjA1ODAsIDYwNTg2LCA2MDU5MiwgNjA1OTYsIDYwNjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2MDYwOCwgNjA2MTEsIDYwNjE1LCA2MDYxOSwgNjA2MjMsIDYwNjI3LCA2MDYzMCwgNjA2MzMsIDYwNjM3LCA2MDY0MSwgCisgICAgNjA2NDUsIDYwNjQ5LCA2MDY1MiwgNjA2NTcsIDYwNjYxLCA2MDY2NSwgNjA2NjksIDYwNjc0LCA2MDY3OCwgNjA2ODIsIAorICAgIDYwNjg2LCA2MDY5MCwgNjA2OTYsIDYwNzAyLCA2MDcwNiwgNjA3MTAsIDYwNzE0LCA2MDcxOCwgNjA3MjIsIDYwNzI2LCAKKyAgICA2MDczMCwgNjA3MzQsIDYwNzM4LCA2MDc0MiwgNjA3NDYsIDYwNzUyLCA2MDc1NiwgNjA3NjAsIDYwNzY0LCA2MDc2OCwgCisgICAgNjA3NzIsIDYwNzc2LCA2MDc4MCwgNjA3ODQsIDYwNzg4LCA2MDc5MiwgNjA3OTYsIDYwODAwLCA2MDgwNCwgNjA4MDgsIAorICAgIDYwODEyLCA2MDgxNiwgNjA4MjIsIDYwODI4LCA2MDgzMywgNjA4MzgsIDYwODQyLCA2MDg0NiwgNjA4NTAsIDYwODU0LCAKKyAgICA2MDg1OCwgNjA4NjIsIDYwODY2LCA2MDg3MCwgNjA4NzQsIDYwODc4LCA2MDg4MiwgNjA4ODYsIDYwODkwLCA2MDg5NCwgCisgICAgNjA4OTgsIDYwOTAyLCA2MDkwNiwgNjA5MTAsIDYwOTE0LCA2MDkxOCwgNjA5MjIsIDYwOTI2LCA2MDkzMCwgNjA5MzQsIAorICAgIDYwOTQwLCA2MDk0NCwgNjA5NDgsIDYwOTUyLCA2MDk1NiwgNjA5NjAsIDYwOTY0LCA2MDk2OCwgNjA5NzIsIDYwOTc3LCAKKyAgICA2MDk4NCwgNjA5ODgsIDYwOTkyLCA2MDk5NiwgNjEwMDAsIDYxMDA0LCA2MTAwOCwgNjEwMTIsIDYxMDE2LCA2MTAyMCwgCisgICAgNjEwMjQsIDYxMDI4LCA2MTAzMiwgNjEwMzksIDYxMDQzLCA2MTA0OSwgNjEwNTMsIDYxMDU3LCA2MTA2MSwgNjEwNjUsIAorICAgIDYxMDY5LCA2MTA3MiwgNjEwNzYsIDYxMDgwLCA2MTA4NCwgNjEwODgsIDYxMDkyLCA2MTA5NiwgNjExMDAsIDYxMTA0LCAKKyAgICA2MTEwOCwgNjExMTIsIDYxMTE2LCA2MTEyMCwgNjExMjQsIDYxMTI4LCA2MTEzMiwgNjExMzYsIDYxMTQwLCA2MTE0NCwgCisgICAgNjExNDgsIDYxMTUyLCA2MTE1NiwgNjExNjAsIDYxMTY0LCA2MTE2OCwgNjExNzIsIDYxMTc2LCA2MTE4MCwgNjExODQsIAorICAgIDYxMTg4LCA2MTE5MiwgNjExOTYsIDYxMjAwLCA2MTIwNiwgNjEyMTAsIDYxMjE0LCA2MTIxOCwgNjEyMjIsIDYxMjI2LCAKKyAgICA2MTIzMCwgNjEyMzQsIDYxMjM4LCA2MTI0MiwgNjEyNDYsIDYxMjUwLCA2MTI1NCwgNjEyNTgsIDYxMjYyLCA2MTI2NiwgCisgICAgNjEyNzAsIDYxMjc0LCA2MTI3OCwgNjEyODIsIDYxMjg2LCA2MTI5MCwgNjEyOTQsIDYxMjk4LCA2MTMwMiwgNjEzMDYsIAorICAgIDYxMzEwLCA2MTMxNCwgNjEzMjIsIDYxMzI2LCA2MTMzMCwgNjEzMzQsIDYxMzM4LCA2MTM0MiwgNjEzNDgsIDYxMzUyLCAKKyAgICA2MTM1NiwgNjEzNjAsIDYxMzY0LCA2MTM2OCwgNjEzNzIsIDYxMzc2LCA2MTM4MCwgNjEzODQsIDYxMzg4LCA2MTM5MiwgCisgICAgNjEzOTYsIDYxNDAwLCA2MTQwNiwgNjE0MTAsIDYxNDE0LCA2MTQxOCwgNjE0MjIsIDYxNDI2LCA2MTQzMCwgNjE0MzQsIAorICAgIDYxNDM4LCA2MTQ0MiwgNjE0NDYsIDYxNDUwLCA2MTQ1NCwgNjE0NTgsIDYxNDYyLCA2MTQ2NiwgNjE0NzAsIDYxNDc0LCAKKyAgICA2MTQ3OCwgNjE0ODIsIDYxNDg2LCA2MTQ5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE0OTQsIDYxNTAzLCA2MTUxMSwgNjE1MjIsIDYxNTMyLCAKKyAgICA2MTU0MCwgNjE1NDksIDYxNTU4LCA2MTU2OCwgNjE1ODAsIDYxNTkyLCA2MTYwNCwgMCwgMCwgMCwgMCwgNjE2MTAsIAorICAgIDYxNjEzLCA2MTYxNiwgNjE2MjEsIDYxNjI0LCA2MTYzMSwgNjE2MzUsIDYxNjM5LCA2MTY0MywgNjE2NDcsIDYxNjUxLCAKKyAgICA2MTY1NiwgNjE2NjEsIDYxNjY1LCA2MTY2OSwgNjE2NzQsIDYxNjc5LCA2MTY4NCwgNjE2ODksIDYxNjkyLCA2MTY5NSwgCisgICAgNjE3MDEsIDYxNzA3LCA2MTcxMiwgNjE3MTcsIDYxNzI0LCA2MTczMSwgNjE3MzUsIDYxNzM5LCA2MTc0MywgNjE3NTEsIAorICAgIDYxNzU3LCA2MTc2NCwgNjE3NjksIDYxNzc0LCA2MTc3OSwgNjE3ODQsIDYxNzg5LCA2MTc5NCwgNjE3OTksIDYxODA1LCAKKyAgICA2MTgxMCwgNjE4MTYsIDYxODIxLCA2MTgyNiwgNjE4MzEsIDYxODM2LCA2MTg0MiwgNjE4NDcsIDYxODUxLCA2MTg1NywgCisgICAgNjE4NjgsIDYxODc4LCA2MTg5MywgNjE5MDMsIDYxOTA3LCA2MTkxNywgNjE5MjMsIDYxOTI5LCA2MTkzNSwgNjE5NDAsIAorICAgIDYxOTQzLCA2MTk0OCwgNjE5NTIsIDAsIDYxOTU4LCA2MTk2MiwgNjE5NjUsIDYxOTY5LCA2MTk3MiwgNjE5NzYsIDYxOTc5LCAKKyAgICA2MTk4MywgNjE5ODYsIDYxOTkwLCA2MTk5MywgNjE5OTYsIDYyMDAwLCA2MjAwNCwgNjIwMDgsIDYyMDEyLCA2MjAxNiwgCisgICAgNjIwMjAsIDYyMDI0LCA2MjAyOCwgNjIwMzIsIDYyMDM2LCA2MjA0MCwgNjIwNDQsIDYyMDQ4LCA2MjA1MiwgNjIwNTYsIAorICAgIDYyMDYwLCA2MjA2NCwgNjIwNjgsIDYyMDcyLCA2MjA3NiwgNjIwODAsIDYyMDg0LCA2MjA4OCwgNjIwOTMsIDYyMDk3LCAKKyAgICA2MjEwMSwgNjIxMDUsIDYyMTA5LCA2MjExMiwgNjIxMTYsIDYyMTIwLCA2MjEyNCwgNjIxMjgsIDYyMTMyLCA2MjEzNiwgCisgICAgNjIxMzksIDYyMTQzLCA2MjE0NiwgNjIxNTAsIDYyMTU0LCA2MjE1OCwgNjIxNjIsIDYyMTY2LCA2MjE3MCwgNjIxNzQsIAorICAgIDYyMTc4LCA2MjE4MiwgNjIxODYsIDYyMTkwLCA2MjE5NCwgNjIxOTcsIDYyMjAxLCA2MjIwNSwgNjIyMDksIDYyMjEzLCAKKyAgICA2MjIxNywgNjIyMjAsIDYyMjI1LCA2MjIyOSwgNjIyMzQsIDYyMjM4LCA2MjI0MiwgNjIyNDYsIDYyMjUwLCA2MjI1NCwgCisgICAgNjIyNTgsIDYyMjYzLCA2MjI2NywgNjIyNzEsIDYyMjc1LCA2MjI3OSwgNjIyODMsIDYyMjg3LCA2MjI5MSwgMCwgMCwgCisgICAgNjIyOTYsIDYyMzA0LCA2MjMxMiwgNjIzMTksIDYyMzI2LCA2MjMzMCwgNjIzMzYsIDYyMzQxLCA2MjM0NiwgNjIzNTAsIAorICAgIDYyMzUzLCA2MjM1NywgNjIzNjAsIDYyMzY0LCA2MjM2NywgNjIzNzEsIDYyMzc0LCA2MjM3OCwgNjIzODEsIDYyMzg0LCAKKyAgICA2MjM4OCwgNjIzOTIsIDYyMzk2LCA2MjQwMCwgNjI0MDQsIDYyNDA4LCA2MjQxMiwgNjI0MTYsIDYyNDIwLCA2MjQyNCwgCisgICAgNjI0MjgsIDYyNDMyLCA2MjQzNiwgNjI0NDAsIDYyNDQ0LCA2MjQ0OCwgNjI0NTIsIDYyNDU2LCA2MjQ2MCwgNjI0NjQsIAorICAgIDYyNDY4LCA2MjQ3MiwgNjI0NzYsIDYyNDgxLCA2MjQ4NSwgNjI0ODksIDYyNDkzLCA2MjQ5NywgNjI1MDAsIDYyNTA0LCAKKyAgICA2MjUwOCwgNjI1MTIsIDYyNTE2LCA2MjUyMCwgNjI1MjQsIDYyNTI3LCA2MjUzMSwgNjI1MzQsIDYyNTM4LCA2MjU0MiwgCisgICAgNjI1NDYsIDYyNTUwLCA2MjU1NCwgNjI1NTgsIDYyNTYyLCA2MjU2NiwgNjI1NzAsIDYyNTc0LCA2MjU3OCwgNjI1ODIsIAorICAgIDYyNTg1LCA2MjU4OSwgNjI1OTMsIDYyNTk3LCA2MjYwMSwgNjI2MDUsIDYyNjA4LCA2MjYxMywgNjI2MTcsIDYyNjIyLCAKKyAgICA2MjYyNiwgNjI2MzAsIDYyNjM0LCA2MjYzOCwgNjI2NDIsIDYyNjQ2LCA2MjY1MSwgNjI2NTUsIDYyNjU5LCA2MjY2MywgCisgICAgNjI2NjcsIDYyNjcxLCA2MjY3NSwgNjI2NzksIDYyNjg0LCA2MjY4OCwgNjI2OTIsIDYyNjk2LCA2MjcwMCwgNjI3MDQsIAorICAgIDYyNzExLCA2MjcxNSwgNjI3MjEsIDAsIDAsIDAsIDAsIDAsIDYyNzI2LCA2MjczMSwgNjI3MzYsIDYyNzQxLCA2Mjc0NiwgCisgICAgNjI3NTEsIDYyNzU2LCA2Mjc2MSwgNjI3NjUsIDYyNzcwLCA2Mjc3NSwgNjI3ODAsIDYyNzg1LCA2Mjc5MCwgNjI3OTUsIAorICAgIDYyODAwLCA2MjgwNSwgNjI4MTAsIDYyODE0LCA2MjgxOSwgNjI4MjQsIDYyODI4LCA2MjgzMiwgNjI4MzYsIDYyODQwLCAKKyAgICA2Mjg0NSwgNjI4NTAsIDYyODU1LCA2Mjg2MCwgNjI4NjUsIDYyODcwLCA2Mjg3NSwgNjI4ODAsIDYyODg1LCA2Mjg5MCwgCisgICAgNjI4OTQsIDYyODk4LCA2MjkwMywgNjI5MDgsIDYyOTEzLCA2MjkxOCwgMCwgMCwgMCwgNjI5MjMsIDYyOTI3LCA2MjkzMSwgCisgICAgNjI5MzUsIDYyOTM5LCA2Mjk0MywgNjI5NDcsIDYyOTUxLCA2Mjk1NSwgNjI5NTksIDYyOTYzLCA2Mjk2NywgNjI5NzEsIAorICAgIDYyOTc1LCA2Mjk3OSwgNjI5ODMsIDYyOTg3LCA2Mjk5MSwgNjI5OTUsIDYyOTk5LCA2MzAwMywgNjMwMDcsIDYzMDExLCAKKyAgICA2MzAxNSwgNjMwMTksIDYzMDIzLCA2MzAyNywgNjMwMzEsIDYzMDM1LCA2MzAzOSwgNjMwNDMsIDYzMDQ2LCA2MzA1MCwgCisgICAgNjMwNTMsIDYzMDU3LCA2MzA2MSwgNjMwNjQsIDYzMDY4LCA2MzA3MiwgNjMwNzUsIDYzMDc5LCA2MzA4MywgNjMwODcsIAorICAgIDYzMDkxLCA2MzA5NCwgNjMwOTgsIDYzMTAyLCA2MzEwNiwgNjMxMTAsIDYzMTE0LCA2MzExOCwgNjMxMjEsIDYzMTI0LCAKKyAgICA2MzEyOCwgNjMxMzIsIDYzMTM2LCA2MzE0MCwgNjMxNDQsIDYzMTQ4LCA2MzE1MiwgNjMxNTYsIDYzMTYwLCA2MzE2NCwgCisgICAgNjMxNjgsIDYzMTcyLCA2MzE3NiwgNjMxODAsIDYzMTg0LCA2MzE4OCwgNjMxOTIsIDYzMTk2LCA2MzIwMCwgNjMyMDQsIAorICAgIDYzMjA4LCA2MzIxMiwgNjMyMTYsIDYzMjIwLCA2MzIyNCwgNjMyMjgsIDYzMjMyLCA2MzIzNiwgNjMyNDAsIDYzMjQ0LCAKKyAgICA2MzI0OCwgNjMyNTIsIDYzMjU2LCA2MzI2MCwgNjMyNjQsIDYzMjY4LCA2MzI3MiwgNjMyNzYsIDYzMjgwLCA2MzI4NCwgCisgICAgNjMyODgsIDAsIDYzMjkyLCA2MzI5OCwgNjMzMDQsIDYzMzA5LCA2MzMxNCwgNjMzMTksIDYzMzI1LCA2MzMzMSwgNjMzMzYsIAorICAgIDYzMzQyLCA2MzM0OCwgNjMzNTQsIDYzMzYwLCA2MzM2NiwgNjMzNzIsIDYzMzc4LCA2MzM4NCwgNjMzODksIDYzMzk0LCAKKyAgICA2MzM5OSwgNjM0MDQsIDYzNDA5LCA2MzQxNCwgNjM0MTksIDYzNDI0LCA2MzQyOSwgNjM0MzQsIDYzNDM5LCA2MzQ0NCwgCisgICAgNjM0NDksIDYzNDU0LCA2MzQ1OSwgNjM0NjQsIDYzNDY5LCA2MzQ3NCwgNjM0NzksIDYzNDg0LCA2MzQ5MCwgNjM0OTYsIAorICAgIDYzNTAyLCA2MzUwOCwgNjM1MTMsIDYzNTE4LCAwLCAwLCAwLCAwLCAwLCA2MzUyMywgNjM1MjgsIDYzNTMzLCA2MzUzOCwgCisgICAgNjM1NDMsIDYzNTQ4LCA2MzU1MywgNjM1NTgsIDYzNTYzLCA2MzU2OCwgNjM1NzMsIDYzNTc4LCA2MzU4MywgNjM1ODgsIAorICAgIDYzNTkzLCA2MzU5OCwgNjM2MDMsIDYzNjA4LCA2MzYxMiwgNjM2MTcsIDYzNjIyLCA2MzYyNywgNjM2MzIsIDYzNjM3LCAKKyAgICA2MzY0MiwgNjM2NDcsIDYzNjUyLCA2MzY1NywgNjM2NjIsIDYzNjY3LCA2MzY3MiwgNjM2NzcsIDYzNjgyLCA2MzY4NywgCisgICAgNjM2OTIsIDYzNjk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzcwMiwgNjM3MDcsIDYzNzEyLCAKKyAgICA2MzcxNywgNjM3MjEsIDYzNzI2LCA2MzczMCwgNjM3MzUsIDYzNzQwLCA2Mzc0NSwgNjM3NTAsIDYzNzU1LCA2Mzc2MCwgCisgICAgNjM3NjUsIDYzNzcwLCA2Mzc3NSwgNjM3ODAsIDYzNzg0LCA2Mzc4OCwgNjM3OTIsIDYzNzk2LCA2MzgwMCwgNjM4MDQsIAorICAgIDYzODA4LCA2MzgxMiwgNjM4MTYsIDYzODIwLCA2MzgyNCwgNjM4MjgsIDYzODMyLCA2MzgzNiwgNjM4NDEsIDYzODQ2LCAKKyAgICA2Mzg1MSwgNjM4NTYsIDYzODYxLCA2Mzg2NiwgNjM4NzEsIDYzODc2LCA2Mzg4MSwgNjM4ODYsIDYzODkxLCA2Mzg5NiwgCisgICAgNjM5MDEsIDYzOTA2LCA2MzkxMSwgNjM5MTcsIDAsIDYzOTI0LCA2MzkyNywgNjM5MzAsIDYzOTMzLCA2MzkzNiwgNjM5MzksIAorICAgIDYzOTQyLCA2Mzk0NiwgNjM5NDksIDYzOTUzLCA2Mzk1NywgNjM5NjEsIDYzOTY1LCA2Mzk2OSwgNjM5NzMsIDYzOTc3LCAKKyAgICA2Mzk4MSwgNjM5ODUsIDYzOTg5LCA2Mzk5MywgNjM5OTcsIDY0MDAxLCA2NDAwNSwgNjQwMDksIDY0MDEzLCA2NDAxNywgCisgICAgNjQwMjEsIDY0MDI1LCA2NDAyOSwgNjQwMzMsIDY0MDM3LCA2NDA0MSwgNjQwNDUsIDY0MDQ5LCA2NDA1MywgNjQwNTcsIAorICAgIDY0MDYxLCA2NDA2NSwgNjQwNjksIDY0MDczLCA2NDA3NywgNjQwODYsIDY0MDk1LCA2NDEwNCwgNjQxMTMsIDY0MTIyLCAKKyAgICA2NDEzMSwgNjQxNDAsIDY0MTQ5LCA2NDE1MiwgNjQxNTcsIDY0MTYyLCA2NDE2NywgNjQxNzIsIDY0MTc3LCA2NDE4MiwgCisgICAgNjQxODgsIDY0MTkzLCA2NDE5OSwgNjQyMDMsIDY0MjA4LCA2NDIxMywgNjQyMTgsIDY0MjIzLCA2NDIyOCwgNjQyMzIsIAorICAgIDY0MjM2LCA2NDI0MCwgNjQyNDQsIDY0MjQ4LCA2NDI1MiwgNjQyNTYsIDY0MjYwLCA2NDI2NCwgNjQyNjgsIDY0MjcyLCAKKyAgICA2NDI3NiwgNjQyODAsIDY0Mjg0LCA2NDI4OSwgNjQyOTQsIDY0Mjk5LCA2NDMwNCwgNjQzMDksIDY0MzE0LCA2NDMxOSwgCisgICAgNjQzMjQsIDY0MzI5LCA2NDMzNCwgNjQzMzksIDY0MzQ0LCA2NDM0OSwgNjQzNTQsIDY0MzYwLCA2NDM2NiwgNjQzNzEsIAorICAgIDY0Mzc2LCA2NDM3OSwgNjQzODIsIDY0Mzg1LCA2NDM4OCwgNjQzOTEsIDY0Mzk0LCA2NDM5OCwgNjQ0MDEsIDY0NDA1LCAKKyAgICA2NDQwOSwgNjQ0MTMsIDY0NDE3LCA2NDQyMSwgNjQ0MjUsIDY0NDI5LCA2NDQzMywgNjQ0MzcsIDY0NDQxLCA2NDQ0NSwgCisgICAgNjQ0NDksIDY0NDUzLCA2NDQ1NywgNjQ0NjEsIDY0NDY1LCA2NDQ2OSwgNjQ0NzMsIDY0NDc3LCA2NDQ4MSwgNjQ0ODUsIAorICAgIDY0NDg5LCA2NDQ5MywgNjQ0OTcsIDY0NTAxLCA2NDUwNSwgNjQ1MDksIDY0NTEzLCA2NDUxNywgNjQ1MjEsIDY0NTI1LCAKKyAgICA2NDUyOSwgNjQ1MzMsIDY0NTM3LCA2NDU0MSwgNjQ1NDUsIDY0NTQ5LCA2NDU1MywgNjQ1NTcsIDY0NTYxLCA2NDU2NSwgCisgICAgNjQ1NzAsIDY0NTc2LCA2NDU4MSwgNjQ1ODcsIDY0NTkxLCA2NDU5NiwgNjQ2MDEsIDY0NjA2LCA2NDYxMSwgNjQ2MTYsIAorICAgIDY0NjIxLCA2NDYyNywgNjQ2MzIsIDY0NjM4LCA2NDY0MiwgNjQ2NDksIDY0NjU2LCA2NDY2MywgNjQ2NzAsIDY0Njc3LCAKKyAgICA2NDY4NCwgNjQ2OTEsIDY0Njk4LCA2NDcwNSwgNjQ3MTIsIDY0NzE5LCA2NDcyNiwgNjQ3MjksIDY0NzMyLCA2NDczNSwgCisgICAgNjQ3NDAsIDY0NzQzLCA2NDc0NiwgNjQ3NDksIDY0NzUyLCA2NDc1NSwgNjQ3NTgsIDY0NzYyLCA2NDc2NiwgNjQ3NzAsIAorICAgIDY0Nzc0LCA2NDc3OCwgNjQ3ODIsIDY0Nzg2LCA2NDc5MCwgNjQ3OTQsIDY0Nzk4LCA2NDgwMiwgNjQ4MDYsIDY0ODEwLCAKKyAgICA2NDgxMywgNjQ4MTcsIDY0ODIxLCA2NDgyNSwgNjQ4MjksIDY0ODMzLCA2NDgzNiwgNjQ4NDAsIDY0ODQ0LCA2NDg0OCwgCisgICAgNjQ4NTIsIDY0ODU1LCA2NDg1OSwgNjQ4NjMsIDY0ODY3LCA2NDg3MSwgNjQ4NzQsIDY0ODc4LCA2NDg4MiwgNjQ4ODYsIAorICAgIDY0ODkwLCA2NDg5NCwgNjQ4OTgsIDY0OTAyLCA2NDkwNiwgNjQ5MTAsIDY0OTE0LCAwLCA2NDkxOCwgNjQ5MjEsIDY0OTI0LCAKKyAgICA2NDkyNywgNjQ5MzAsIDY0OTMzLCA2NDkzNiwgNjQ5MzksIDY0OTQyLCA2NDk0NSwgNjQ5NDgsIDY0OTUxLCA2NDk1NCwgCisgICAgNjQ5NTcsIDY0OTYwLCA2NDk2MywgNjQ5NjYsIDY0OTY5LCA2NDk3MiwgNjQ5NzUsIDY0OTc4LCA2NDk4MSwgNjQ5ODQsIAorICAgIDY0OTg3LCA2NDk5MCwgNjQ5OTMsIDY0OTk2LCA2NDk5OSwgNjUwMDIsIDY1MDA1LCA2NTAwOCwgNjUwMTEsIDY1MDE0LCAKKyAgICA2NTAxNywgNjUwMjAsIDY1MDIzLCA2NTAyNiwgNjUwMjksIDY1MDMyLCA2NTAzNSwgNjUwMzgsIDY1MDQxLCA2NTA0NCwgCisgICAgNjUwNDcsIDY1MDUwLCA2NTA1MywgNjUwNTYsIDY1MDU5LCA2NTA2MiwgNjUwNjUsIDY1MDY4LCA2NTA3MSwgNjUwNzQsIAorICAgIDY1MDc3LCA2NTA4MCwgNjUwODMsIDY1MDg2LCA2NTA4OSwgNjUwOTIsIDY1MDk1LCA2NTA5OCwgNjUxMDEsIDY1MTA0LCAKKyAgICA2NTEwNywgNjUxMTAsIDY1MTEzLCA2NTExNiwgNjUxMTksIDY1MTIyLCA2NTEyNSwgNjUxMjgsIDY1MTMxLCA2NTEzNCwgCisgICAgNjUxMzcsIDY1MTQwLCA2NTE0MywgNjUxNDYsIDY1MTQ5LCA2NTE1MiwgNjUxNTUsIDY1MTU4LCA2NTE2MSwgNjUxNjQsIAorICAgIDY1MTY3LCA2NTE3MCwgNjUxNzMsIDY1MTc2LCA2NTE3OSwgNjUxODIsIDY1MTkxLCA2NTE5OSwgNjUyMDcsIDY1MjE1LCAKKyAgICA2NTIyMywgNjUyMzEsIDY1MjM5LCA2NTI0OCwgNjUyNTYsIDY1MjY1LCA2NTI3NCwgNjUyODMsIDY1MjkyLCA2NTMwMSwgCisgICAgNjUzMTAsIDY1MzE5LCA2NTMyOCwgNjUzMzcsIDY1MzQ2LCA2NTM1NSwgNjUzNjQsIDY1MzczLCA2NTM4MiwgNjUzOTEsIAorICAgIDY1NDAwLCA2NTQwMywgNjU0MDYsIDY1NDA5LCA2NTQxMSwgNjU0MTQsIDY1NDE3LCA2NTQyMCwgNjU0MjUsIDY1NDMwLCAKKyAgICA2NTQzMywgNjU0NDAsIDY1NDQ3LCA2NTQ1NCwgNjU0NjEsIDY1NDY0LCA2NTQ2OSwgNjU0NzIsIDY1NDc2LCA2NTQ3OCwgCisgICAgNjU0ODAsIDY1NDgzLCA2NTQ4NiwgNjU0ODksIDY1NDkyLCA2NTQ5NSwgNjU0OTgsIDY1NTAxLCA2NTUwNiwgNjU1MTEsIAorICAgIDY1NTE0LCA2NTUxNywgNjU1MjAsIDY1NTIzLCA2NTUyNiwgNjU1MjksIDY1NTMyLCA2NTUzNiwgNjU1MzksIDY1NTQyLCAKKyAgICA2NTU0NSwgNjU1NDgsIDY1NTUxLCA2NTU1NiwgNjU1NTksIDY1NTYyLCA2NTU2NSwgNjU1NzAsIDY1NTc1LCA2NTU4MCwgCisgICAgNjU1ODUsIDY1NTkwLCA2NTU5NSwgNjU2MDAsIDY1NjA1LCA2NTYxMCwgNjU2MTgsIDY1NjIwLCA2NTYyMywgNjU2MjYsIAorICAgIDY1NjI5LCA2NTYzMiwgNjU2MzcsIDY1NjQ1LCA2NTY0OCwgNjU2NTEsIDY1NjU1LCA2NTY1OCwgNjU2NjEsIDY1NjY0LCAKKyAgICA2NTY2OSwgNjU2NzIsIDY1Njc1LCA2NTY4MCwgNjU2ODMsIDY1Njg2LCA2NTY5MSwgNjU2OTQsIDY1Njk3LCA2NTcwMiwgCisgICAgNjU3MDcsIDY1NzEyLCA2NTcxNSwgNjU3MTgsIDY1NzIxLCA2NTcyNCwgNjU3MzAsIDY1NzMzLCA2NTczNiwgNjU3MzksIAorICAgIDY1NzQxLCA2NTc0NCwgNjU3NDcsIDY1NzUwLCA2NTc1NSwgNjU3NTgsIDY1NzYxLCA2NTc2NCwgNjU3NjcsIDY1NzcwLCAKKyAgICA2NTc3NSwgNjU3NzgsIDY1NzgxLCA2NTc4NCwgNjU3ODcsIDY1NzkwLCA2NTc5MywgNjU3OTYsIDY1Nzk5LCA2NTgwMiwgCisgICAgNjU4MDgsIDY1ODEzLCA2NTgyMSwgNjU4MjksIDY1ODM3LCA2NTg0NSwgNjU4NTMsIDY1ODYxLCA2NTg3MCwgNjU4NzgsIAorICAgIDY1ODg3LCA2NTg5NiwgNjU5MDUsIDY1OTE0LCA2NTkyMywgNjU5MzIsIDY1OTQxLCA2NTk1MCwgNjU5NTksIDY1OTY4LCAKKyAgICA2NTk3NywgNjU5ODYsIDY1OTk1LCA2NjAwNCwgNjYwMTMsIDY2MDIyLCA2NjAzMSwgNjYwNDAsIDY2MDQ5LCA2NjA1OCwgCisgICAgNjYwNjcsIDY2MDc2LCA2NjA4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTIwNzAsIDAsIDEyMDc5LCAxMjA4NiwgMTIwOTQsIDEyMTA2LCAxMjExMywgMTIxMjAsIDEyMTI3LCAxMjEzOCwgMTIxNDksIAotICAgIDEyMTU2LCAxMjE2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIxNzAsIDEyMTc1LCAxMjE4MCwgMTIxODUsIDEyMTkwLCAKLSAgICAxMjE5NSwgMTIyMDAsIDEyMjA1LCAxMjIxMCwgMTIyMTUsIDEyMjIwLCAxMjIyNSwgMTIyMzAsIDEyMjM0LCAxMjIzOCwgCi0gICAgMTIyNDIsIDEyMjQ3LCAxMjI1MywgMTIyNTksIDEyMjY1LCAxMjI3MCwgMTIyNzUsIDEyMjgwLCAxMjI4NSwgMTIyOTEsIAotICAgIDEyMzAwLCAxMjMwOCwgMCwgMTIzMTQsIDEyMzIwLCAxMjMyNCwgMTIzMjgsIDEyMzMyLCAxMjMzNywgMTIzNDAsIDEyMzQ0LCAKLSAgICAxMjM0NywgMTIzNTEsIDEyMzU0LCAxMjM1OCwgMTIzNjIsIDEyMzY2LCAxMjM3MSwgMTIzNzYsIDEyMzc5LCAxMjM4MywgCi0gICAgMTIzODgsIDEyMzkzLCAxMjM5NiwgMTI0MDAsIDEyNDAzLCAxMjQwNywgMTI0MTEsIDEyNDE1LCAxMjQxOSwgMTI0MjMsIAotICAgIDEyNDI3LCAxMjQzMSwgMTI0MzUsIDEyNDM5LCAxMjQ0MywgMTI0NDcsIDEyNDUxLCAxMjQ1NSwgMTI0NTksIDEyNDYzLCAKLSAgICAxMjQ2NywgMTI0NzEsIDEyNDc1LCAxMjQ3OCwgMTI0ODIsIDEyNDg1LCAxMjQ4OSwgMTI0OTMsIDEyNDk3LCAxMjUwMCwgCi0gICAgMTI1MDMsIDEyNTA2LCAxMjUxMCwgMTI1MTQsIDEyNTE4LCAxMjUyMiwgMTI1MjYsIDEyNTMwLCAxMjUzNCwgMTI1MzcsIAotICAgIDEyNTQwLCAxMjU0NSwgMTI1NTAsIDEyNTU0LCAxMjU1OCwgMTI1NjMsIDEyNTY3LCAxMjU3MiwgMTI1NzYsIDEyNTgxLCAKLSAgICAxMjU4NiwgMTI1OTIsIDEyNTk4LCAxMjYwNCwgMTI2MDgsIDEyNjEzLCAxMjYxOSwgMTI2MjUsIDEyNjI5LCAxMjYzNCwgCi0gICAgMTI2MzgsIDEyNjQ0LCAxMjY0OSwgMTI2NTIsIDEyNjU4LCAxMjY2NCwgMTI2NjksIDEyNjc0LCAxMjY4MSwgMTI2ODYsIAotICAgIDEyNjkxLCAxMjY5NSwgMTI2OTksIDEyNzAzLCAxMjcwNywgMTI3MTEsIDEyNzE1LCAxMjcxOSwgMTI3MjMsIDEyNzI4LCAKLSAgICAxMjczMywgMTI3MzgsIDEyNzQ0LCAxMjc0NywgMTI3NTEsIDEyNzU1LCAxMjc1OCwgMTI3NjEsIDEyNzY0LCAxMjc2NywgCi0gICAgMTI3NzAsIDEyNzczLCAxMjc3NiwgMTI3NzksIDEyNzgyLCAxMjc4NiwgMTI3OTMsIDEyNzk4LCAxMjgwMiwgMTI4MDYsIAotICAgIDEyODEwLCAxMjgxNCwgMCwgMTI4MTgsIDEyODIyLCAxMjgyNiwgMTI4MzAsIDEyODM0LCAxMjg0MCwgMTI4NDQsIDAsIAotICAgIDEyODQ4LCAxMjg1MiwgMTI4NTYsIDAsIDEyODYwLCAxMjg2MywgMTI4NjcsIDEyODcwLCAxMjg3NCwgMTI4NzcsIDEyODgxLCAKLSAgICAxMjg4NSwgMCwgMCwgMTI4ODksIDEyODkyLCAwLCAwLCAxMjg5NiwgMTI4OTksIDEyOTAzLCAxMjkwNiwgMTI5MTAsIAotICAgIDEyOTE0LCAxMjkxOCwgMTI5MjIsIDEyOTI2LCAxMjkzMCwgMTI5MzQsIDEyOTM4LCAxMjk0MiwgMTI5NDYsIDEyOTUwLCAKLSAgICAxMjk1NCwgMTI5NTgsIDEyOTYyLCAxMjk2NiwgMTI5NzAsIDEyOTc0LCAxMjk3OCwgMCwgMTI5ODEsIDEyOTg0LCAxMjk4OCwgCi0gICAgMTI5OTIsIDEyOTk2LCAxMjk5OSwgMTMwMDIsIDAsIDEzMDA1LCAwLCAwLCAwLCAxMzAwOSwgMTMwMTMsIDEzMDE3LCAKLSAgICAxMzAyMCwgMCwgMCwgMTMwMjMsIDEzMDI3LCAxMzAzMSwgMTMwMzYsIDEzMDQwLCAxMzA0NSwgMTMwNDksIDEzMDU0LCAKLSAgICAxMzA1OSwgMCwgMCwgMTMwNjUsIDEzMDY5LCAwLCAwLCAxMzA3NCwgMTMwNzgsIDEzMDgzLCAxMzA4NywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTMwOTMsIDAsIDAsIDAsIDAsIDEzMDk5LCAxMzEwMywgMCwgMTMxMDcsIDEzMTExLCAxMzExNiwgCi0gICAgMTMxMjEsIDEzMTI2LCAwLCAwLCAxMzEzMiwgMTMxMzYsIDEzMTM5LCAxMzE0MiwgMTMxNDUsIDEzMTQ4LCAxMzE1MSwgCi0gICAgMTMxNTQsIDEzMTU3LCAxMzE2MCwgMTMxNjMsIDEzMTcyLCAxMzE4MSwgMTMxODUsIDEzMTg5LCAxMzE5NSwgMTMyMDEsIAotICAgIDEzMjA3LCAxMzIxMywgMTMyMjcsIDEzMjM0LCAxMzIzNywgMCwgMCwgMCwgMCwgMCwgMTMyNDEsIDEzMjQ3LCAxMzI1MSwgMCwgCi0gICAgMTMyNTUsIDEzMjU4LCAxMzI2MiwgMTMyNjUsIDEzMjY5LCAxMzI3MiwgMCwgMCwgMCwgMCwgMTMyNzYsIDEzMjgwLCAwLCAwLCAKLSAgICAxMzI4NCwgMTMyODgsIDEzMjkyLCAxMzI5NSwgMTMyOTksIDEzMzAzLCAxMzMwNywgMTMzMTEsIDEzMzE1LCAxMzMxOSwgCi0gICAgMTMzMjMsIDEzMzI3LCAxMzMzMSwgMTMzMzUsIDEzMzM5LCAxMzM0MywgMTMzNDcsIDEzMzUxLCAxMzM1NSwgMTMzNTksIAotICAgIDEzMzYzLCAxMzM2NywgMCwgMTMzNzAsIDEzMzczLCAxMzM3NywgMTMzODEsIDEzMzg1LCAxMzM4OCwgMTMzOTEsIDAsIAotICAgIDEzMzk0LCAxMzM5OCwgMCwgMTM0MDIsIDEzNDA2LCAwLCAxMzQxMCwgMTM0MTMsIDAsIDAsIDEzNDE2LCAwLCAxMzQyMCwgCi0gICAgMTM0MjUsIDEzNDI5LCAxMzQzNCwgMTM0MzgsIDAsIDAsIDAsIDAsIDEzNDQzLCAxMzQ0OCwgMCwgMCwgMTM0NTMsIDEzNDU4LCAKLSAgICAxMzQ2MywgMCwgMCwgMCwgMTM0NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDcxLCAxMzQ3NSwgMTM0NzksIDEzNDgzLCAKLSAgICAwLCAxMzQ4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM0OTEsIDEzNDk1LCAxMzQ5OCwgMTM1MDEsIDEzNTA0LCAxMzUwNywgCi0gICAgMTM1MTAsIDEzNTEzLCAxMzUxNiwgMTM1MTksIDEzNTIyLCAxMzUyNSwgMTM1MjgsIDEzNTMxLCAxMzUzNCwgMTM1MzksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNTQzLCAxMzU0NywgMTM1NTEsIDAsIDEzNTU1LCAxMzU1OCwgCi0gICAgMTM1NjIsIDEzNTY1LCAxMzU2OSwgMTM1NzIsIDEzNTc2LCAxMzU4MCwgMTM1ODQsIDAsIDEzNTg5LCAxMzU5MiwgMTM1OTYsIAotICAgIDAsIDEzNjAxLCAxMzYwNCwgMTM2MDgsIDEzNjExLCAxMzYxNSwgMTM2MTksIDEzNjIzLCAxMzYyNywgMTM2MzEsIDEzNjM1LCAKLSAgICAxMzYzOSwgMTM2NDMsIDEzNjQ3LCAxMzY1MSwgMTM2NTUsIDEzNjU5LCAxMzY2MywgMTM2NjcsIDEzNjcxLCAxMzY3NSwgCi0gICAgMTM2NzksIDEzNjgzLCAwLCAxMzY4NiwgMTM2ODksIDEzNjkzLCAxMzY5NywgMTM3MDEsIDEzNzA0LCAxMzcwNywgMCwgCi0gICAgMTM3MTAsIDEzNzE0LCAwLCAxMzcxOCwgMTM3MjIsIDEzNzI2LCAxMzczMCwgMTM3MzMsIDAsIDAsIDEzNzM2LCAxMzc0MCwgCi0gICAgMTM3NDQsIDEzNzQ5LCAxMzc1MywgMTM3NTgsIDEzNzYyLCAxMzc2NywgMTM3NzIsIDEzNzc4LCAwLCAxMzc4NCwgMTM3ODgsIAotICAgIDEzNzkzLCAwLCAxMzc5OSwgMTM4MDMsIDEzODA4LCAwLCAwLCAxMzgxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTM4MTUsIDEzODIwLCAxMzgyNSwgMTM4MzAsIDAsIDAsIDEzODM2LCAxMzg0MCwgMTM4NDMsIAotICAgIDEzODQ2LCAxMzg0OSwgMTM4NTIsIDEzODU1LCAxMzg1OCwgMTM4NjEsIDEzODY0LCAxMzg2NywgMTM4NzEsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODc1LCAxMzg3OSwgMTM4ODMsIDAsIDEzODg3LCAxMzg5MCwgCi0gICAgMTM4OTQsIDEzODk3LCAxMzkwMSwgMTM5MDQsIDEzOTA4LCAxMzkxMiwgMCwgMCwgMTM5MTYsIDEzOTE5LCAwLCAwLCAKLSAgICAxMzkyMywgMTM5MjYsIDEzOTMwLCAxMzkzMywgMTM5MzcsIDEzOTQxLCAxMzk0NSwgMTM5NDksIDEzOTUzLCAxMzk1NywgCi0gICAgMTM5NjEsIDEzOTY1LCAxMzk2OSwgMTM5NzMsIDEzOTc3LCAxMzk4MSwgMTM5ODUsIDEzOTg5LCAxMzk5MywgMTM5OTcsIAotICAgIDE0MDAxLCAxNDAwNSwgMCwgMTQwMDgsIDE0MDExLCAxNDAxNSwgMTQwMTksIDE0MDIzLCAxNDAyNiwgMTQwMjksIDAsIAotICAgIDE0MDMyLCAxNDAzNiwgMCwgMTQwNDAsIDE0MDQ0LCAxNDA0OCwgMTQwNTIsIDE0MDU1LCAwLCAwLCAxNDA1OCwgMTQwNjIsIAotICAgIDE0MDY2LCAxNDA3MSwgMTQwNzUsIDE0MDgwLCAxNDA4NCwgMTQwODksIDE0MDk0LCAwLCAwLCAxNDEwMCwgMTQxMDQsIDAsIAotICAgIDAsIDE0MTA5LCAxNDExMywgMTQxMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MTIyLCAxNDEyOCwgMCwgMCwgMCwgMCwgCi0gICAgMTQxMzQsIDE0MTM4LCAwLCAxNDE0MiwgMTQxNDYsIDE0MTUxLCAxNDE1NiwgMTQxNjEsIDAsIDAsIDE0MTY3LCAxNDE3MSwgCi0gICAgMTQxNzQsIDE0MTc3LCAxNDE4MCwgMTQxODMsIDE0MTg2LCAxNDE4OSwgMTQxOTIsIDE0MTk1LCAxNDE5OCwgMTQyMDEsIAotICAgIDE0MjA1LCAxNDIxMSwgMTQyMTcsIDE0MjIzLCAxNDIyOSwgMTQyMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE0MjQxLCAxNDI0NSwgMCwgMTQyNDksIDE0MjUyLCAxNDI1NiwgMTQyNTksIDE0MjYzLCAxNDI2NiwgMCwgMCwgMCwgCi0gICAgMTQyNzAsIDE0MjczLCAxNDI3NywgMCwgMTQyODEsIDE0Mjg0LCAxNDI4OCwgMTQyOTIsIDAsIDAsIDAsIDE0Mjk1LCAKLSAgICAxNDI5OSwgMCwgMTQzMDMsIDAsIDE0MzA3LCAxNDMxMSwgMCwgMCwgMCwgMTQzMTUsIDE0MzE5LCAwLCAwLCAwLCAxNDMyMywgCi0gICAgMTQzMjYsIDE0MzMwLCAwLCAwLCAwLCAxNDMzMywgMTQzMzYsIDE0MzM5LCAxNDM0MiwgMTQzNDYsIDE0MzUwLCAxNDM1NCwgCi0gICAgMTQzNTgsIDE0MzYyLCAxNDM2NiwgMTQzNzAsIDE0MzczLCAwLCAwLCAwLCAwLCAxNDM3NiwgMTQzODEsIDE0Mzg1LCAKLSAgICAxNDM5MCwgMTQzOTQsIDAsIDAsIDAsIDE0Mzk5LCAxNDQwMywgMTQ0MDgsIDAsIDE0NDEzLCAxNDQxNywgMTQ0MjIsIAotICAgIDE0NDI3LCAwLCAwLCAxNDQzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE0NDQwLCAxNDQ0NCwgMTQ0NDcsIDE0NDUwLCAxNDQ1MywgMTQ0NTYsIDE0NDU5LCAxNDQ2MiwgCi0gICAgMTQ0NjUsIDE0NDY4LCAxNDQ3MSwgMTQ0NzUsIDE0NDgwLCAxNDQ4NSwgMTQ0ODksIDE0NDkzLCAxNDQ5NywgMTQ1MDEsIAotICAgIDE0NTA1LCAxNDUxMCwgMTQ1MTQsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NTE3LCAxNDUyMSwgMTQ1MjUsIDAsIDE0NTI5LCAKLSAgICAxNDUzMiwgMTQ1MzYsIDE0NTM5LCAxNDU0MywgMTQ1NDYsIDE0NTUwLCAxNDU1NCwgMCwgMTQ1NTgsIDE0NTYxLCAxNDU2NSwgCi0gICAgMCwgMTQ1NjksIDE0NTcyLCAxNDU3NiwgMTQ1ODAsIDE0NTgzLCAxNDU4NywgMTQ1OTEsIDE0NTk1LCAxNDU5OSwgMTQ2MDMsIAotICAgIDE0NjA3LCAxNDYxMSwgMTQ2MTUsIDE0NjE5LCAxNDYyMywgMTQ2MjcsIDE0NjMxLCAxNDYzNSwgMTQ2MzksIDE0NjQzLCAKLSAgICAxNDY0NywgMTQ2NTEsIDE0NjU1LCAwLCAxNDY1OCwgMTQ2NjEsIDE0NjY1LCAxNDY2OSwgMTQ2NzMsIDE0Njc2LCAxNDY3OSwgCi0gICAgMTQ2ODIsIDE0Njg2LCAxNDY5MCwgMCwgMTQ2OTQsIDE0Njk4LCAxNDcwMiwgMTQ3MDYsIDE0NzA5LCAwLCAwLCAwLCAKLSAgICAxNDcxMiwgMTQ3MTYsIDE0NzIxLCAxNDcyNSwgMTQ3MzAsIDE0NzM0LCAxNDczOSwgMTQ3NDQsIDAsIDE0NzUwLCAxNDc1NCwgCi0gICAgMTQ3NTksIDAsIDE0NzY0LCAxNDc2OCwgMTQ3NzMsIDE0Nzc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDc4MiwgMTQ3ODYsIAotICAgIDAsIDE0NzkyLCAxNDc5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4MDAsIDE0ODA1LCAxNDgxMCwgMTQ4MTUsIDAsIDAsIAotICAgIDE0ODIxLCAxNDgyNSwgMTQ4MjgsIDE0ODMxLCAxNDgzNCwgMTQ4MzcsIDE0ODQwLCAxNDg0MywgMTQ4NDYsIDE0ODQ5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDg1MiwgMTQ4NjUsIDE0ODc3LCAxNDg4OSwgMTQ5MDEsIDE0OTEzLCAxNDkyNSwgCi0gICAgMTQ5MzcsIDAsIDAsIDE0OTQxLCAxNDk0NSwgMCwgMTQ5NDksIDE0OTUyLCAxNDk1NiwgMTQ5NTksIDE0OTYzLCAxNDk2NiwgCi0gICAgMTQ5NzAsIDE0OTc0LCAwLCAxNDk3OCwgMTQ5ODEsIDE0OTg1LCAwLCAxNDk4OSwgMTQ5OTIsIDE0OTk2LCAxNTAwMCwgCi0gICAgMTUwMDMsIDE1MDA3LCAxNTAxMSwgMTUwMTUsIDE1MDE5LCAxNTAyMywgMTUwMjcsIDE1MDMxLCAxNTAzNSwgMTUwMzksIAotICAgIDE1MDQzLCAxNTA0NywgMTUwNTEsIDE1MDU1LCAxNTA1OSwgMTUwNjMsIDE1MDY3LCAxNTA3MSwgMTUwNzUsIDAsIDE1MDc4LCAKLSAgICAxNTA4MSwgMTUwODUsIDE1MDg5LCAxNTA5MywgMTUwOTYsIDE1MDk5LCAxNTEwMiwgMTUxMDYsIDE1MTEwLCAwLCAxNTExNCwgCi0gICAgMTUxMTgsIDE1MTIyLCAxNTEyNiwgMTUxMjksIDAsIDAsIDE1MTMyLCAxNTEzNiwgMTUxNDAsIDE1MTQ1LCAxNTE0OSwgCi0gICAgMTUxNTQsIDE1MTU4LCAxNTE2MywgMTUxNjgsIDAsIDE1MTc0LCAxNTE3OCwgMTUxODMsIDAsIDE1MTg4LCAxNTE5MiwgCi0gICAgMTUxOTcsIDE1MjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTIwNiwgMTUyMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE1MjE2LCAwLCAxNTIyMCwgMTUyMjUsIDE1MjMwLCAxNTIzNSwgMCwgMCwgMTUyNDEsIDE1MjQ1LCAxNTI0OCwgMTUyNTEsIAotICAgIDE1MjU0LCAxNTI1NywgMTUyNjAsIDE1MjYzLCAxNTI2NiwgMTUyNjksIDAsIDE1MjcyLCAxNTI3NiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUyODAsIDE1Mjg0LCAwLCAxNTI4OCwgMTUyOTEsIDE1Mjk1LCAKLSAgICAxNTI5OCwgMTUzMDIsIDE1MzA1LCAxNTMwOSwgMTUzMTMsIDAsIDE1MzE3LCAxNTMyMCwgMTUzMjQsIDAsIDE1MzI4LCAKLSAgICAxNTMzMSwgMTUzMzUsIDE1MzM5LCAxNTM0MiwgMTUzNDYsIDE1MzUwLCAxNTM1NCwgMTUzNTgsIDE1MzYyLCAxNTM2NiwgCi0gICAgMTUzNzAsIDE1Mzc0LCAxNTM3OCwgMTUzODIsIDE1Mzg2LCAxNTM5MCwgMTUzOTQsIDE1Mzk4LCAxNTQwMiwgMTU0MDYsIAotICAgIDE1NDEwLCAxNTQxNCwgMTU0MTcsIDE1NDIxLCAxNTQyNCwgMTU0MjgsIDE1NDMyLCAxNTQzNiwgMTU0MzksIDE1NDQyLCAKLSAgICAxNTQ0NSwgMTU0NDksIDE1NDUzLCAxNTQ1NywgMTU0NjEsIDE1NDY1LCAxNTQ2OSwgMTU0NzMsIDE1NDc2LCAxNTQ3OSwgMCwgCi0gICAgMCwgMTU0ODMsIDE1NDg3LCAxNTQ5MiwgMTU0OTYsIDE1NTAxLCAxNTUwNSwgMTU1MTAsIDE1NTE1LCAwLCAxNTUyMSwgCi0gICAgMTU1MjUsIDE1NTMwLCAwLCAxNTUzNSwgMTU1MzksIDE1NTQ0LCAxNTU0OSwgMTU1NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE1NTU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTU2NCwgMTU1NjksIDE1NTc0LCAxNTU3OSwgMCwgMCwgCi0gICAgMTU1ODUsIDE1NTg5LCAxNTU5MiwgMTU1OTUsIDE1NTk4LCAxNTYwMSwgMTU2MDQsIDE1NjA3LCAxNTYxMCwgMTU2MTMsIAotICAgIDE1NjE2LCAxNTYyMCwgMTU2MjUsIDE1NjMwLCAxNTYzNiwgMTU2NDIsIDAsIDAsIDAsIDE1NjQ4LCAxNTY1MiwgMTU2NTgsIAotICAgIDE1NjY0LCAxNTY3MCwgMTU2NzUsIDE1NjgxLCAwLCAwLCAxNTY4NywgMTU2OTEsIDAsIDE1Njk1LCAxNTY5OSwgMTU3MDMsIAotICAgIDE1NzA3LCAxNTcxMSwgMTU3MTUsIDE1NzE5LCAxNTcyMywgMTU3MjcsIDE1NzMxLCAxNTczNSwgMTU3MzksIDE1NzQzLCAKLSAgICAxNTc0NywgMTU3NTEsIDE1NzU1LCAxNTc1OSwgMTU3NjMsIDAsIDAsIDAsIDE1NzY3LCAxNTc3MywgMTU3NzksIDE1Nzg1LCAKLSAgICAxNTc5MSwgMTU3OTcsIDE1ODAzLCAxNTgwOSwgMTU4MTUsIDE1ODIxLCAxNTgyNywgMTU4MzMsIDE1ODQxLCAxNTg0NywgCi0gICAgMTU4NTMsIDE1ODU5LCAxNTg2NSwgMTU4NzEsIDE1ODc3LCAxNTg4MywgMTU4ODksIDE1ODk1LCAxNTkwMSwgMTU5MDcsIDAsIAotICAgIDE1OTEzLCAxNTkxOSwgMTU5MjUsIDE1OTMxLCAxNTkzNywgMTU5NDMsIDE1OTQ3LCAxNTk1MywgMTU5NTcsIDAsIDE1OTYxLCAKLSAgICAwLCAwLCAxNTk2NywgMTU5NzEsIDE1OTc3LCAxNTk4MywgMTU5ODksIDE1OTkzLCAxNTk5OSwgMCwgMCwgMCwgMTYwMDMsIDAsIAotICAgIDAsIDAsIDAsIDE2MDA3LCAxNjAxMiwgMTYwMTksIDE2MDI2LCAxNjAzMywgMTYwNDAsIDAsIDE2MDQ3LCAwLCAxNjA1NCwgCi0gICAgMTYwNTksIDE2MDY0LCAxNjA3MSwgMTYwNzgsIDE2MDg3LCAxNjA5OCwgMTYxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MTEyLCAxNjExOSwgMTYxMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE2MTMxLCAxNjEzNywgMTYxNDMsIDE2MTQ5LCAxNjE1NSwgMTYxNjEsIDE2MTY3LCAxNjE3MywgCi0gICAgMTYxNzksIDE2MTg1LCAxNjE5MSwgMTYxOTcsIDE2MjAzLCAxNjIwOSwgMTYyMTUsIDE2MjIxLCAxNjIyNywgMTYyMzMsIAotICAgIDE2MjM5LCAxNjI0NSwgMTYyNTEsIDE2MjU3LCAxNjI2MywgMTYyNjksIDE2Mjc1LCAxNjI4MSwgMTYyODcsIDE2MjkzLCAKLSAgICAxNjI5OSwgMTYzMDUsIDE2MzExLCAxNjMxNywgMTYzMjMsIDE2MzI4LCAxNjMzNCwgMTYzNDAsIDE2MzQ0LCAxNjM1MCwgCi0gICAgMTYzNTQsIDE2MzYwLCAxNjM2NiwgMTYzNzIsIDE2Mzc4LCAxNjM4NCwgMTYzOTAsIDE2Mzk1LCAxNjQwMSwgMTY0MDUsIAotICAgIDE2NDEwLCAxNjQxNiwgMTY0MjIsIDE2NDI4LCAxNjQzMywgMTY0MzksIDE2NDQ1LCAxNjQ1MSwgMTY0NTYsIDE2NDYyLCAwLCAKLSAgICAwLCAwLCAwLCAxNjQ2NiwgMTY0NzIsIDE2NDc3LCAxNjQ4MywgMTY0ODgsIDE2NDk2LCAxNjUwNCwgMTY1MDgsIDE2NTEyLCAKLSAgICAxNjUxNiwgMTY1MjIsIDE2NTI4LCAxNjUzNCwgMTY1NDAsIDE2NTQ0LCAxNjU0OCwgMTY1NTIsIDE2NTU2LCAxNjU2MCwgCi0gICAgMTY1NjMsIDE2NTY2LCAxNjU2OSwgMTY1NzIsIDE2NTc1LCAxNjU3OCwgMTY1ODEsIDE2NTg0LCAxNjU4NywgMTY1OTEsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2NTk1LCAxNjYwMCwgMCwgMTY2MDcsIDAsIDAsIDE2NjE0LCAKLSAgICAxNjYxOSwgMCwgMTY2MjQsIDAsIDAsIDE2NjMxLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjYzNiwgMTY2NDEsIDE2NjQ1LCAKLSAgICAxNjY1MiwgMCwgMTY2NTksIDE2NjY0LCAxNjY2OSwgMTY2NzQsIDE2NjgxLCAxNjY4OCwgMTY2OTUsIDAsIDE2NzAyLCAKLSAgICAxNjcwNywgMTY3MTIsIDAsIDE2NzE5LCAwLCAxNjcyNiwgMCwgMCwgMTY3MzEsIDE2NzM4LCAwLCAxNjc0NSwgMTY3NDksIAotICAgIDE2NzU2LCAxNjc2MCwgMTY3NjUsIDE2NzczLCAxNjc3OSwgMTY3ODUsIDE2NzkwLCAxNjc5NiwgMTY4MDIsIDE2ODA4LCAKLSAgICAxNjgxMywgMCwgMTY4MTksIDE2ODI3LCAxNjgzNCwgMCwgMCwgMTY4NDEsIDE2ODQ2LCAxNjg1MiwgMTY4NTcsIDE2ODYzLCAKLSAgICAwLCAxNjg2OSwgMCwgMTY4NzUsIDE2ODgyLCAxNjg4OSwgMTY4OTYsIDE2OTAzLCAxNjkwOCwgMCwgMCwgMTY5MTIsIAotICAgIDE2OTE3LCAxNjkyMSwgMTY5MjUsIDE2OTI5LCAxNjkzMywgMTY5MzcsIDE2OTQxLCAxNjk0NSwgMTY5NDksIDAsIDAsIAotICAgIDE2OTUzLCAxNjk1OSwgMTY5NjUsIDE2OTcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjk3OSwgMTY5ODMsIDE2OTk0LCAKLSAgICAxNzAwOSwgMTcwMjQsIDE3MDM0LCAxNzA0NSwgMTcwNTgsIDE3MDY5LCAxNzA3NSwgMTcwODMsIDE3MDkzLCAxNzA5OSwgCi0gICAgMTcxMDcsIDE3MTExLCAxNzExNywgMTcxMjMsIDE3MTMxLCAxNzE0MSwgMTcxNDksIDE3MTYyLCAxNzE2OCwgMTcxNzYsIAotICAgIDE3MTg0LCAxNzE5NiwgMTcyMDMsIDE3MjExLCAxNzIxOSwgMTcyMjcsIDE3MjM1LCAxNzI0MywgMTcyNTEsIDE3MjYxLCAKLSAgICAxNzI2NSwgMTcyNjgsIDE3MjcxLCAxNzI3NCwgMTcyNzcsIDE3MjgwLCAxNzI4MywgMTcyODYsIDE3Mjg5LCAxNzI5MiwgCi0gICAgMTcyOTYsIDE3MzAwLCAxNzMwNCwgMTczMDgsIDE3MzEyLCAxNzMxNiwgMTczMjAsIDE3MzI0LCAxNzMyOCwgMTczMzMsIAotICAgIDE3MzM5LCAxNzM0OSwgMTczNjMsIDE3MzczLCAxNzM3OSwgMTczODUsIDE3MzkzLCAxNzQwMSwgMTc0MDksIDE3NDE3LCAKLSAgICAxNzQyMywgMTc0MjksIDE3NDMyLCAxNzQzNiwgMTc0NDAsIDE3NDQ0LCAxNzQ0OCwgMTc0NTIsIDE3NDU2LCAwLCAxNzQ2MCwgCi0gICAgMTc0NjQsIDE3NDY4LCAxNzQ3MiwgMTc0NzYsIDE3NDgwLCAxNzQ4NCwgMTc0ODgsIDE3NDkyLCAxNzQ5NiwgMTc1MDAsIAotICAgIDE3NTAzLCAxNzUwNiwgMTc1MTAsIDE3NTE0LCAxNzUxOCwgMTc1MjEsIDE3NTI1LCAxNzUyOSwgMTc1MzMsIDE3NTM3LCAKLSAgICAxNzU0MSwgMTc1NDUsIDE3NTQ5LCAxNzU1MywgMTc1NTYsIDE3NTU5LCAxNzU2MywgMTc1NjcsIDE3NTcxLCAxNzU3NCwgCi0gICAgMTc1NzcsIDE3NTgwLCAxNzU4NCwgMTc1ODksIDE3NTkzLCAwLCAwLCAwLCAwLCAxNzU5NywgMTc2MDIsIDE3NjA2LCAKLSAgICAxNzYxMSwgMTc2MTUsIDE3NjIwLCAxNzYyNSwgMTc2MzEsIDE3NjM2LCAxNzY0MiwgMTc2NDYsIDE3NjUxLCAxNzY1NSwgCi0gICAgMTc2NjAsIDE3NjcwLCAxNzY3NiwgMTc2ODIsIDE3Njg5LCAxNzY5OSwgMTc3MDUsIDE3NzA5LCAxNzcxMywgMTc3MTksIAotICAgIDE3NzI1LCAxNzczMywgMTc3MzksIDE3NzQ3LCAxNzc1NSwgMTc3NjMsIDE3NzczLCAxNzc4MSwgMTc3OTEsIDE3Nzk2LCAKLSAgICAxNzgwMiwgMTc4MDgsIDE3ODE0LCAxNzgyMCwgMTc4MjYsIDE3ODMyLCAwLCAxNzgzOCwgMTc4NDQsIDE3ODUwLCAxNzg1NiwgCi0gICAgMTc4NjIsIDE3ODY4LCAxNzg3NCwgMTc4ODAsIDE3ODg2LCAxNzg5MiwgMTc4OTgsIDE3OTAzLCAxNzkwOCwgMTc5MTQsIAotICAgIDE3OTIwLCAxNzkyNiwgMTc5MzEsIDE3OTM3LCAxNzk0MywgMTc5NDksIDE3OTU1LCAxNzk2MSwgMTc5NjcsIDE3OTczLCAKLSAgICAxNzk3OSwgMTc5ODQsIDE3OTg5LCAxNzk5NSwgMTgwMDEsIDE4MDA3LCAxODAxMiwgMTgwMTcsIDE4MDIyLCAxODAyOCwgCi0gICAgMTgwMzYsIDE4MDQzLCAwLCAxODA1MCwgMTgwNTcsIDE4MDcwLCAxODA3NywgMTgwODQsIDE4MDkyLCAxODEwMCwgMTgxMDYsIAotICAgIDE4MTEyLCAxODExOCwgMTgxMjgsIDE4MTMzLCAxODEzOSwgMTgxNDksIDE4MTU5LCAwLCAxODE2OSwgMTgxNzksIDE4MTg3LCAKLSAgICAxODE5OSwgMTgyMTEsIDE4MjE3LCAxODIzMSwgMTgyNDYsIDE4MjUxLCAxODI1NiwgMTgyNjQsIDE4MjcyLCAxODI4MCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgyODgsIDE4MjkxLCAxODI5NSwgMTgyOTksIDE4MzAzLCAKLSAgICAxODMwNywgMTgzMTEsIDE4MzE1LCAxODMxOSwgMTgzMjMsIDE4MzI3LCAxODMzMSwgMTgzMzUsIDE4MzM5LCAxODM0MywgCi0gICAgMTgzNDcsIDE4MzUxLCAxODM1NSwgMTgzNTksIDE4MzYzLCAxODM2NywgMTgzNzAsIDE4MzczLCAxODM3NywgMTgzODEsIAotICAgIDE4Mzg1LCAxODM4OCwgMTgzOTEsIDE4Mzk0LCAxODM5OCwgMTg0MDIsIDE4NDA1LCAxODQwOCwgMTg0MTIsIDE4NDE1LCAKLSAgICAxODQyMCwgMTg0MjMsIDE4NDI3LCAxODQzMCwgMTg0MzQsIDE4NDM3LCAxODQ0MiwgMTg0NDUsIDE4NDQ5LCAxODQ1NiwgCi0gICAgMTg0NjEsIDE4NDY1LCAxODQ3MCwgMTg0NzQsIDE4NDc5LCAxODQ4MywgMTg0ODgsIDE4NDk1LCAxODUwMSwgMTg1MDYsIAotICAgIDE4NTEwLCAxODUxNCwgMTg1MTgsIDE4NTIyLCAxODUyNiwgMTg1MzEsIDE4NTM2LCAxODU0MiwgMTg1NDcsIDE4NTUyLCAKLSAgICAxODU1NiwgMTg1NTksIDE4NTYyLCAxODU2NSwgMTg1NjgsIDE4NTcxLCAxODU3NCwgMTg1NzcsIDE4NTgwLCAxODU4MywgCi0gICAgMTg1ODksIDE4NTkzLCAxODU5NywgMTg2MDEsIDE4NjA1LCAxODYwOSwgMTg2MTMsIDE4NjE3LCAxODYyMSwgMTg2MjYsIAotICAgIDE4NjMwLCAxODYzNSwgMTg2NDAsIDE4NjQ2LCAxODY1MSwgMTg2NTcsIDE4NjYzLCAxODY2OSwgMTg2NzUsIDE4NjgxLCAKLSAgICAxODY4OCwgMTg2OTUsIDE4NzAzLCAxODcxMSwgMTg3MjAsIDE4NzI5LCAxODc0MCwgMTg3NTAsIDE4NzYwLCAxODc3MSwgCi0gICAgMTg3ODIsIDE4NzkyLCAxODgwMiwgMTg4MTIsIDE4ODIyLCAxODgzMiwgMTg4NDIsIDE4ODUyLCAxODg2MiwgMTg4NzAsIAotICAgIDE4ODc3LCAxODg4MywgMTg4OTAsIDE4ODk1LCAxODkwMSwgMTg5MDcsIDE4OTEzLCAxODkxOSwgMTg5MjUsIDE4OTMxLCAKLSAgICAxODkzNiwgMTg5NDIsIDE4OTQ4LCAxODk1NCwgMTg5NjAsIDE4OTY1LCAxODk3MywgMTg5ODAsIDE4OTg2LCAxODk5MywgCi0gICAgMTkwMDEsIDE5MDA3LCAxOTAxMywgMTkwMTksIDE5MDI1LCAxOTAzMywgMTkwNDEsIDE5MDUxLCAxOTA1OSwgMTkwNjcsIAotICAgIDE5MDczLCAxOTA3OCwgMTkwODMsIDE5MDg4LCAxOTA5MywgMTkwOTgsIDE5MTAzLCAxOTEwOCwgMTkxMTMsIDE5MTE4LCAKLSAgICAxOTEyNCwgMTkxMzAsIDE5MTM2LCAxOTE0MywgMTkxNDgsIDE5MTU0LCAxOTE1OSwgMTkxNjQsIDE5MTY5LCAxOTE3NCwgCi0gICAgMTkxNzksIDE5MTg0LCAxOTE4OSwgMTkxOTQsIDE5MTk5LCAxOTIwNCwgMTkyMDksIDE5MjE0LCAxOTIxOSwgMTkyMjQsIAotICAgIDE5MjI5LCAxOTIzNCwgMTkyMzksIDE5MjQ0LCAxOTI0OSwgMTkyNTQsIDE5MjU5LCAxOTI2NCwgMTkyNjksIDE5Mjc0LCAKLSAgICAxOTI3OSwgMTkyODQsIDE5Mjg5LCAxOTI5NCwgMTkyOTksIDE5MzA0LCAxOTMwOSwgMTkzMTQsIDE5MzE5LCAxOTMyNCwgCi0gICAgMTkzMjksIDE5MzM0LCAxOTMzOSwgMCwgMTkzNDQsIDAsIDAsIDAsIDAsIDAsIDE5MzQ5LCAwLCAwLCAxOTM1NCwgMTkzNTgsIAotICAgIDE5MzYyLCAxOTM2NiwgMTkzNzAsIDE5Mzc0LCAxOTM3OCwgMTkzODIsIDE5Mzg2LCAxOTM5MCwgMTkzOTQsIDE5Mzk4LCAKLSAgICAxOTQwMiwgMTk0MDYsIDE5NDEwLCAxOTQxNCwgMTk0MTgsIDE5NDIyLCAxOTQyNiwgMTk0MzAsIDE5NDM0LCAxOTQzOCwgCi0gICAgMTk0NDIsIDE5NDQ2LCAxOTQ1MCwgMTk0NTQsIDE5NDU4LCAxOTQ2MiwgMTk0NjYsIDE5NDcwLCAxOTQ3NCwgMTk0NzgsIAotICAgIDE5NDgyLCAxOTQ4NiwgMTk0OTAsIDE5NDk0LCAxOTQ5OCwgMTk1MDIsIDE5NTA2LCAxOTUxMCwgMTk1MTQsIDE5NTE4LCAKLSAgICAxOTUyNCwgMTk1MjgsIDE5NTMzLCAxOTUzOCwgMTk1NDIsIDE5NTQ3LCAxOTU1MiwgMTk1NTYsIDE5NTYwLCAxOTU2NCwgCi0gICAgMTk1NjgsIDE5NTcyLCAxOTU3NiwgMTk1ODAsIDE5NTg0LCAxOTU4OCwgMTk1OTIsIDE5NTk2LCAxOTYwMCwgMTk2MDQsIAotICAgIDE5NjA4LCAxOTYxMiwgMTk2MTYsIDE5NjIwLCAxOTYyNCwgMTk2MjgsIDE5NjMyLCAxOTYzNiwgMTk2NDAsIDE5NjQ0LCAKLSAgICAxOTY0OCwgMTk2NTIsIDE5NjU2LCAxOTY2MCwgMTk2NjQsIDE5NjY4LCAxOTY3MiwgMTk2NzYsIDE5NjgwLCAxOTY4NCwgCi0gICAgMTk2ODgsIDE5NjkyLCAxOTY5NiwgMTk3MDAsIDE5NzA0LCAxOTcwOCwgMTk3MTIsIDE5NzE2LCAxOTcyMCwgMTk3MjQsIAotICAgIDE5NzI4LCAxOTczMiwgMTk3MzYsIDE5NzQwLCAxOTc0NCwgMTk3NDgsIDE5NzUyLCAxOTc1NiwgMTk3NjAsIDE5NzY0LCAKLSAgICAxOTc2OCwgMTk3NzIsIDE5Nzc2LCAxOTc4MCwgMTk3ODQsIDE5Nzg4LCAxOTc5MiwgMTk3OTYsIDE5ODAwLCAxOTgwNCwgCi0gICAgMTk4MDgsIDE5ODEyLCAxOTgxNiwgMTk4MjAsIDE5ODI0LCAxOTgyOCwgMTk4MzIsIDE5ODM2LCAxOTg0MCwgMTk4NDQsIAotICAgIDE5ODQ4LCAxOTg1MiwgMTk4NTYsIDE5ODYwLCAxOTg2NCwgMTk4NjgsIDE5ODcyLCAxOTg3NiwgMTk4ODAsIDE5ODg0LCAKLSAgICAxOTg4OCwgMTk4OTIsIDE5ODk2LCAxOTkwMCwgMTk5MDQsIDE5OTA4LCAxOTkxMiwgMTk5MTYsIDE5OTIwLCAxOTkyNCwgCi0gICAgMTk5MjgsIDE5OTMyLCAxOTkzNiwgMTk5NDAsIDE5OTQzLCAxOTk0NywgMTk5NTAsIDE5OTU0LCAxOTk1OCwgMTk5NjEsIAotICAgIDE5OTY1LCAxOTk2OSwgMTk5NzIsIDE5OTc2LCAxOTk4MCwgMTk5ODQsIDE5OTg4LCAxOTk5MSwgMTk5OTUsIDE5OTk5LCAKLSAgICAyMDAwMywgMjAwMDcsIDIwMDExLCAyMDAxNSwgMjAwMTgsIDIwMDIyLCAyMDAyNiwgMjAwMzAsIDIwMDM0LCAyMDAzOCwgCi0gICAgMjAwNDIsIDIwMDQ2LCAyMDA1MCwgMjAwNTQsIDIwMDU4LCAyMDA2MiwgMjAwNjYsIDIwMDcwLCAyMDA3NCwgMjAwNzgsIAotICAgIDIwMDgyLCAyMDA4NiwgMjAwOTAsIDIwMDk0LCAyMDA5OCwgMjAxMDIsIDIwMTA2LCAyMDExMCwgMjAxMTQsIDIwMTE4LCAKLSAgICAyMDEyMiwgMjAxMjYsIDIwMTMwLCAyMDEzNCwgMjAxMzgsIDIwMTQyLCAyMDE0NiwgMjAxNTAsIDIwMTU0LCAyMDE1OCwgCi0gICAgMjAxNjIsIDIwMTY2LCAyMDE3MCwgMjAxNzQsIDIwMTc4LCAyMDE4MiwgMjAxODYsIDIwMTkwLCAyMDE5NCwgMjAxOTgsIAotICAgIDIwMjAyLCAyMDIwNiwgMjAyMTAsIDIwMjE0LCAyMDIxOCwgMjAyMjIsIDIwMjI2LCAyMDIzMCwgMjAyMzQsIDIwMjM4LCAKLSAgICAyMDI0MiwgMjAyNDYsIDIwMjUwLCAyMDI1NCwgMjAyNTgsIDIwMjYyLCAyMDI2NiwgMjAyNzAsIDIwMjc0LCAyMDI3OCwgCi0gICAgMjAyODIsIDIwMjg2LCAyMDI5MCwgMjAyOTQsIDIwMjk4LCAyMDMwMiwgMjAzMDYsIDIwMzEwLCAyMDMxNCwgMjAzMTgsIAotICAgIDIwMzIyLCAyMDMyNiwgMjAzMzAsIDIwMzM0LCAyMDMzOCwgMjAzNDIsIDIwMzQ2LCAyMDM1MCwgMjAzNTQsIDIwMzU4LCAKLSAgICAyMDM2MiwgMjAzNjYsIDIwMzcwLCAyMDM3NCwgMjAzNzgsIDIwMzgyLCAyMDM4NiwgMjAzOTAsIDIwMzk0LCAyMDM5OCwgCi0gICAgMjA0MDIsIDIwNDA2LCAyMDQxMCwgMjA0MTQsIDIwNDE4LCAyMDQyMiwgMjA0MjYsIDIwNDMwLCAyMDQzNCwgMjA0MzgsIAotICAgIDIwNDQyLCAyMDQ0NiwgMjA0NTAsIDIwNDU0LCAyMDQ1OCwgMjA0NjIsIDIwNDY2LCAyMDQ3MCwgMjA0NzQsIDIwNDc4LCAKLSAgICAyMDQ4MiwgMjA0ODYsIDIwNDkwLCAyMDQ5NCwgMjA0OTgsIDIwNTAyLCAyMDUwNiwgMjA1MTAsIDIwNTE0LCAyMDUxOCwgCi0gICAgMjA1MjIsIDIwNTI2LCAyMDUzMCwgMjA1MzQsIDIwNTM4LCAyMDU0MiwgMjA1NDYsIDIwNTUwLCAyMDU1NCwgMjA1NTgsIAotICAgIDIwNTYyLCAyMDU2NiwgMjA1NzAsIDIwNTczLCAyMDU3NywgMjA1ODEsIDIwNTg1LCAyMDU4OSwgMjA1OTMsIDIwNTk3LCAKLSAgICAyMDYwMSwgMjA2MDUsIDIwNjA5LCAyMDYxMywgMjA2MTcsIDIwNjIxLCAyMDYyNSwgMjA2MjksIDIwNjMzLCAyMDYzNywgCi0gICAgMjA2NDEsIDIwNjQ1LCAyMDY0OSwgMjA2NTMsIDIwNjU3LCAyMDY2MSwgMjA2NjUsIDIwNjY4LCAyMDY3MiwgMjA2NzYsIAotICAgIDIwNjgwLCAyMDY4NCwgMjA2ODgsIDIwNjkyLCAyMDY5NiwgMjA3MDAsIDIwNzA0LCAyMDcwOCwgMjA3MTIsIDIwNzE2LCAKLSAgICAyMDcyMCwgMjA3MjQsIDIwNzI4LCAyMDczMSwgMjA3MzUsIDIwNzM5LCAyMDc0MywgMjA3NDcsIDIwNzUxLCAyMDc1NSwgCi0gICAgMjA3NTksIDIwNzYyLCAyMDc2NiwgMjA3NzAsIDIwNzc0LCAyMDc3OCwgMjA3ODIsIDIwNzg2LCAyMDc5MCwgMjA3OTQsIAotICAgIDIwNzk4LCAyMDgwMiwgMjA4MDYsIDIwODEwLCAyMDgxNCwgMjA4MTgsIDIwODIyLCAyMDgyNiwgMjA4MzAsIDIwODM0LCAKLSAgICAyMDgzOCwgMjA4NDIsIDIwODQ2LCAyMDg1MCwgMjA4NTQsIDAsIDIwODU4LCAyMDg2MiwgMjA4NjYsIDIwODcwLCAwLCAwLCAKLSAgICAyMDg3NCwgMjA4NzgsIDIwODgyLCAyMDg4NiwgMjA4OTAsIDIwODk0LCAyMDg5OCwgMCwgMjA5MDIsIDAsIDIwOTA2LCAKLSAgICAyMDkxMCwgMjA5MTQsIDIwOTE4LCAwLCAwLCAyMDkyMiwgMjA5MjYsIDIwOTMwLCAyMDkzNCwgMjA5MzgsIDIwOTQyLCAKLSAgICAyMDk0NiwgMjA5NTAsIDIwOTU0LCAyMDk1OCwgMjA5NjIsIDIwOTY2LCAyMDk3MCwgMjA5NzQsIDIwOTc4LCAyMDk4MiwgCi0gICAgMjA5ODYsIDIwOTkwLCAyMDk5NCwgMjA5OTgsIDIxMDAyLCAyMTAwNiwgMjEwMTAsIDIxMDEzLCAyMTAxNywgMjEwMjEsIAotICAgIDIxMDI1LCAyMTAyOSwgMjEwMzMsIDIxMDM3LCAyMTA0MSwgMjEwNDUsIDIxMDQ5LCAyMTA1MywgMjEwNTcsIDIxMDYxLCAKLSAgICAyMTA2NSwgMjEwNjksIDIxMDczLCAyMTA3NywgMjEwODEsIDAsIDIxMDg1LCAyMTA4OSwgMjEwOTMsIDIxMDk3LCAwLCAwLCAKLSAgICAyMTEwMSwgMjExMDQsIDIxMTA4LCAyMTExMiwgMjExMTYsIDIxMTIwLCAyMTEyNCwgMjExMjgsIDIxMTMyLCAyMTEzNiwgCi0gICAgMjExNDAsIDIxMTQ0LCAyMTE0OCwgMjExNTIsIDIxMTU2LCAyMTE2MCwgMjExNjQsIDIxMTY5LCAyMTE3NCwgMjExNzksIAotICAgIDIxMTg1LCAyMTE5MSwgMjExOTYsIDIxMjAxLCAyMTIwNywgMjEyMTAsIDIxMjE0LCAyMTIxOCwgMjEyMjIsIDIxMjI2LCAKLSAgICAyMTIzMCwgMjEyMzQsIDIxMjM4LCAwLCAyMTI0MiwgMjEyNDYsIDIxMjUwLCAyMTI1NCwgMCwgMCwgMjEyNTgsIDIxMjYyLCAKLSAgICAyMTI2NiwgMjEyNzAsIDIxMjc0LCAyMTI3OCwgMjEyODIsIDAsIDIxMjg2LCAwLCAyMTI5MCwgMjEyOTQsIDIxMjk4LCAKLSAgICAyMTMwMiwgMCwgMCwgMjEzMDYsIDIxMzEwLCAyMTMxNCwgMjEzMTgsIDIxMzIyLCAyMTMyNiwgMjEzMzAsIDIxMzM0LCAKLSAgICAyMTMzOCwgMjEzNDMsIDIxMzQ4LCAyMTM1MywgMjEzNTksIDIxMzY1LCAyMTM3MCwgMCwgMjEzNzUsIDIxMzc5LCAyMTM4MywgCi0gICAgMjEzODcsIDIxMzkxLCAyMTM5NSwgMjEzOTksIDIxNDAzLCAyMTQwNywgMjE0MTEsIDIxNDE1LCAyMTQxOSwgMjE0MjMsIAotICAgIDIxNDI3LCAyMTQzMSwgMjE0MzUsIDIxNDM5LCAyMTQ0MiwgMjE0NDYsIDIxNDUwLCAyMTQ1NCwgMjE0NTgsIDIxNDYyLCAKLSAgICAyMTQ2NiwgMjE0NzAsIDIxNDc0LCAyMTQ3OCwgMjE0ODIsIDIxNDg2LCAyMTQ5MCwgMjE0OTQsIDIxNDk4LCAyMTUwMiwgCi0gICAgMjE1MDYsIDIxNTEwLCAyMTUxNCwgMjE1MTgsIDIxNTIyLCAyMTUyNiwgMjE1MzAsIDIxNTM0LCAyMTUzOCwgMjE1NDIsIAotICAgIDIxNTQ2LCAyMTU1MCwgMjE1NTQsIDIxNTU4LCAyMTU2MiwgMjE1NjYsIDIxNTcwLCAyMTU3NCwgMjE1NzgsIDIxNTgyLCAKLSAgICAyMTU4NiwgMjE1OTAsIDIxNTk0LCAyMTU5OCwgMCwgMjE2MDIsIDIxNjA2LCAyMTYxMCwgMjE2MTQsIDAsIDAsIDIxNjE4LCAKLSAgICAyMTYyMiwgMjE2MjYsIDIxNjMwLCAyMTYzNCwgMjE2MzgsIDIxNjQyLCAyMTY0NiwgMjE2NTAsIDIxNjU0LCAyMTY1OCwgCi0gICAgMjE2NjIsIDIxNjY2LCAyMTY3MCwgMjE2NzQsIDIxNjc4LCAyMTY4MiwgMjE2ODYsIDIxNjkwLCAyMTY5NCwgMjE2OTgsIAotICAgIDIxNzAyLCAyMTcwNiwgMjE3MTAsIDIxNzE0LCAyMTcxOCwgMjE3MjIsIDIxNzI2LCAyMTczMCwgMjE3MzQsIDIxNzM4LCAKLSAgICAyMTc0MiwgMjE3NDYsIDIxNzUwLCAyMTc1NCwgMjE3NTgsIDIxNzYyLCAyMTc2NiwgMjE3NzAsIDIxNzc0LCAyMTc3OCwgCi0gICAgMjE3ODIsIDIxNzg2LCAyMTc5MCwgMjE3OTQsIDIxNzk4LCAyMTgwMiwgMjE4MDYsIDIxODEwLCAyMTgxNCwgMjE4MTgsIAotICAgIDIxODIyLCAyMTgyNiwgMjE4MzAsIDIxODM0LCAyMTgzOCwgMjE4NDIsIDIxODQ1LCAyMTg0OSwgMjE4NTMsIDIxODU3LCAKLSAgICAyMTg2MSwgMjE4NjUsIDIxODY5LCAyMTg3MywgMjE4NzcsIDIxODgxLCAwLCAwLCAyMTg4NSwgMjE4OTQsIDIxOTAwLCAKLSAgICAyMTkwNSwgMjE5MDksIDIxOTEyLCAyMTkxNywgMjE5MjAsIDIxOTIzLCAyMTkyNiwgMjE5MzEsIDIxOTM1LCAyMTk0MCwgCi0gICAgMjE5NDMsIDIxOTQ2LCAyMTk0OSwgMjE5NTIsIDIxOTU1LCAyMTk1OCwgMjE5NjEsIDIxOTY0LCAyMTk2NywgMjE5NzEsIAotICAgIDIxOTc1LCAyMTk3OSwgMjE5ODMsIDIxOTg3LCAyMTk5MSwgMjE5OTUsIDIxOTk5LCAyMjAwMywgMjIwMDcsIDAsIDAsIDAsIAotICAgIDIyMDEzLCAyMjAxOSwgMjIwMjMsIDIyMDI3LCAyMjAzMSwgMjIwMzcsIDIyMDQxLCAyMjA0NSwgMjIwNDksIDIyMDU1LCAKLSAgICAyMjA1OSwgMjIwNjMsIDIyMDY3LCAyMjA3MywgMjIwNzcsIDIyMDgxLCAyMjA4NSwgMjIwOTEsIDIyMDk3LCAyMjEwMywgCi0gICAgMjIxMTEsIDIyMTE3LCAyMjEyMywgMjIxMjksIDIyMTM1LCAyMjE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMjIxNDcsIDIyMTUwLCAKLSAgICAyMjE1MywgMjIxNTYsIDIyMTU5LCAyMjE2MiwgMjIxNjYsIDIyMTcwLCAyMjE3MywgMjIxNzcsIDIyMTgxLCAyMjE4NSwgCi0gICAgMjIxODksIDIyMTkzLCAyMjE5NiwgMjIyMDAsIDIyMjA0LCAyMjIwOCwgMjIyMTIsIDIyMjE2LCAyMjIyMCwgMjIyMjQsIAotICAgIDIyMjI4LCAyMjIzMiwgMjIyMzYsIDIyMjQwLCAyMjI0MywgMjIyNDcsIDIyMjUxLCAyMjI1NSwgMjIyNTksIDIyMjYyLCAKLSAgICAyMjI2NiwgMjIyNzAsIDIyMjc0LCAyMjI3OCwgMjIyODIsIDIyMjg2LCAyMjI5MCwgMjIyOTQsIDIyMjk4LCAyMjMwMiwgCi0gICAgMjIzMDYsIDIyMzEwLCAyMjMxNCwgMjIzMTcsIDIyMzIxLCAyMjMyNSwgMjIzMjksIDIyMzMzLCAyMjMzNywgMjIzNDEsIAotICAgIDIyMzQ1LCAyMjM0OSwgMjIzNTMsIDIyMzU3LCAyMjM2MSwgMjIzNjUsIDIyMzY5LCAyMjM3MywgMjIzNzcsIDIyMzgxLCAKLSAgICAyMjM4NSwgMjIzODksIDIyMzkzLCAyMjM5NywgMjI0MDEsIDIyNDA1LCAyMjQwOSwgMjI0MTMsIDIyNDE3LCAyMjQyMSwgCi0gICAgMjI0MjUsIDIyNDI5LCAyMjQzMywgMjI0MzcsIDIyNDQxLCAyMjQ0NSwgMjI0NDksIDIyNDUzLCAyMjQ1NiwgMjI0NjAsIAotICAgIDIyNDY0LCAyMjQ2OCwgMjI0NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyNDc2LCAyMjQ4MCwgCi0gICAgMjI0ODMsIDIyNDg3LCAyMjQ5MCwgMjI0OTQsIDIyNDk3LCAyMjUwMSwgMjI1MDcsIDIyNTEyLCAyMjUxNiwgMjI1MTksIAotICAgIDIyNTIzLCAyMjUyNywgMjI1MzIsIDIyNTM2LCAyMjU0MSwgMjI1NDUsIDIyNTUwLCAyMjU1NCwgMjI1NTksIDIyNTYzLCAKLSAgICAyMjU2OCwgMjI1NzQsIDIyNTc4LCAyMjU4MywgMjI1ODcsIDIyNTkyLCAyMjU5OCwgMjI2MDIsIDIyNjA4LCAyMjYxNCwgCi0gICAgMjI2MTgsIDIyNjIzLCAyMjYzMSwgMjI2MzksIDIyNjQ2LCAyMjY1MSwgMjI2NTYsIDIyNjY1LCAyMjY3MiwgMjI2NzksIAotICAgIDIyNjg0LCAyMjY5MCwgMjI2OTQsIDIyNjk4LCAyMjcwMiwgMjI3MDYsIDIyNzEwLCAyMjcxNCwgMjI3MTgsIDIyNzIyLCAKLSAgICAyMjcyNiwgMjI3MzAsIDIyNzM2LCAyMjc0MSwgMjI3NDYsIDIyNzQ5LCAyMjc1MywgMjI3NTcsIDIyNzYyLCAyMjc2NiwgCi0gICAgMjI3NzEsIDIyNzc1LCAyMjc4MCwgMjI3ODQsIDIyNzg5LCAyMjc5MywgMjI3OTgsIDIyODAyLCAyMjgwNywgMjI4MTEsIAotICAgIDIyODE2LCAyMjgyMiwgMjI4MjYsIDIyODMxLCAyMjgzNiwgMjI4NDAsIDIyODQ0LCAyMjg0OCwgMjI4NTIsIDIyODU1LCAKLSAgICAyMjg1OSwgMjI4NjUsIDIyODcwLCAyMjg3NSwgMjI4NzksIDIyODgzLCAyMjg4NywgMjI4OTIsIDIyODk2LCAyMjkwMSwgCi0gICAgMjI5MDUsIDIyOTEwLCAyMjkxMywgMjI5MTcsIDIyOTIxLCAyMjkyNiwgMjI5MzAsIDIyOTM1LCAyMjkzOSwgMjI5NDQsIAotICAgIDIyOTUwLCAyMjk1NCwgMjI5NTgsIDIyOTYyLCAyMjk2NiwgMjI5NzAsIDIyOTc0LCAyMjk3OCwgMjI5ODIsIDIyOTg2LCAKLSAgICAyMjk5MCwgMjI5OTQsIDIzMDAwLCAyMzAwMywgMjMwMDcsIDIzMDExLCAyMzAxNiwgMjMwMjAsIDIzMDI1LCAyMzAyOSwgCi0gICAgMjMwMzQsIDIzMDM4LCAyMzA0MywgMjMwNDcsIDIzMDUyLCAyMzA1NiwgMjMwNjEsIDIzMDY1LCAyMzA3MCwgMjMwNzYsIAotICAgIDIzMDgwLCAyMzA4NCwgMjMwOTAsIDIzMDk2LCAyMzEwMiwgMjMxMDgsIDIzMTEyLCAyMzExNiwgMjMxMjAsIDIzMTI0LCAKLSAgICAyMzEyOCwgMjMxMzIsIDIzMTM4LCAyMzE0MiwgMjMxNDYsIDIzMTUwLCAyMzE1NSwgMjMxNTksIDIzMTY0LCAyMzE2OCwgCi0gICAgMjMxNzMsIDIzMTc3LCAyMzE4MiwgMjMxODYsIDIzMTkxLCAyMzE5NSwgMjMyMDAsIDIzMjA0LCAyMzIwOSwgMjMyMTUsIAotICAgIDIzMjE5LCAyMzIyNSwgMjMyMjksIDIzMjMzLCAyMzIzNywgMjMyNDEsIDIzMjQ1LCAyMzI0OSwgMjMyNTUsIDIzMjU4LCAKLSAgICAyMzI2MiwgMjMyNjYsIDIzMjcxLCAyMzI3NSwgMjMyODAsIDIzMjg0LCAyMzI4OSwgMjMyOTMsIDIzMjk4LCAyMzMwMiwgCi0gICAgMjMzMDcsIDIzMzExLCAyMzMxNiwgMjMzMjAsIDIzMzI1LCAyMzMzMSwgMjMzMzQsIDIzMzM4LCAyMzM0MiwgMjMzNDcsIAotICAgIDIzMzUyLCAyMzM1NiwgMjMzNjAsIDIzMzY0LCAyMzM2OCwgMjMzNzIsIDIzMzc2LCAyMzM4MiwgMjMzODUsIDIzMzg5LCAKLSAgICAyMzM5MywgMjMzOTgsIDIzNDAyLCAyMzQwNywgMjM0MTEsIDIzNDE2LCAyMzQyMiwgMjM0MjYsIDIzNDMxLCAyMzQzNSwgCi0gICAgMjM0MzksIDIzNDQzLCAyMzQ0NywgMjM0NTEsIDIzNDU1LCAyMzQ1OSwgMjM0NjUsIDIzNDY5LCAyMzQ3MywgMjM0NzcsIAotICAgIDIzNDgyLCAyMzQ4NiwgMjM0OTEsIDIzNDk1LCAyMzUwMCwgMjM1MDQsIDIzNTA5LCAyMzUxMywgMjM1MTgsIDIzNTIyLCAKLSAgICAyMzUyNywgMjM1MzEsIDIzNTM2LCAyMzUzOSwgMjM1NDMsIDIzNTQ3LCAyMzU1MSwgMjM1NTUsIDIzNTU5LCAyMzU2MywgCi0gICAgMjM1NjcsIDIzNTcxLCAyMzU3NywgMjM1ODAsIDIzNTg0LCAyMzU4OCwgMjM1OTMsIDIzNTk3LCAyMzYwMiwgMjM2MDYsIAotICAgIDIzNjExLCAyMzYxNSwgMjM2MjAsIDIzNjI0LCAyMzYyOSwgMjM2MzMsIDIzNjM4LCAyMzY0MiwgMjM2NDcsIDIzNjUzLCAKLSAgICAyMzY1NywgMjM2NjMsIDIzNjY3LCAyMzY3MywgMjM2NzksIDIzNjg1LCAyMzY5MSwgMjM2OTcsIDIzNzAzLCAyMzcwOSwgCi0gICAgMjM3MTUsIDIzNzE5LCAyMzcyMywgMjM3MjcsIDIzNzMxLCAyMzczNSwgMjM3MzksIDIzNzQzLCAyMzc0NywgMjM3NTIsIAotICAgIDIzNzU2LCAyMzc2MSwgMjM3NjUsIDIzNzcwLCAyMzc3NCwgMjM3NzksIDIzNzgzLCAyMzc4OCwgMjM3OTIsIDIzNzk3LCAKLSAgICAyMzgwMSwgMjM4MDYsIDIzODEwLCAyMzgxNCwgMjM4MTgsIDIzODIyLCAyMzgyNiwgMjM4MzAsIDIzODM0LCAyMzg0MCwgCi0gICAgMjM4NDMsIDIzODQ3LCAyMzg1MSwgMjM4NTYsIDIzODYwLCAyMzg2NSwgMjM4NjksIDIzODc0LCAyMzg3OCwgMjM4ODMsIAotICAgIDIzODg3LCAyMzg5MiwgMjM4OTYsIDIzOTAxLCAyMzkwNSwgMjM5MTAsIDIzOTE2LCAyMzkyMCwgMjM5MjYsIDIzOTMxLCAKLSAgICAyMzkzNywgMjM5NDEsIDIzOTQ3LCAyMzk1MiwgMjM5NTYsIDIzOTYwLCAyMzk2NCwgMjM5NjgsIDIzOTcyLCAyMzk3NywgCi0gICAgMjM5ODAsIDIzOTg0LCAyMzk4OSwgMjM5OTMsIDIzOTk4LCAyNDAwMSwgMjQwMDUsIDI0MDA5LCAyNDAxMywgMjQwMTcsIAotICAgIDI0MDIxLCAyNDAyNSwgMjQwMjksIDI0MDMzLCAyNDAzNywgMjQwNDEsIDI0MDQ1LCAyNDA1MCwgMjQwNTQsIDI0MDU4LCAKLSAgICAyNDA2NCwgMjQwNjgsIDI0MDc0LCAyNDA3OCwgMjQwODQsIDI0MDg4LCAyNDA5MiwgMjQwOTYsIDI0MTAwLCAyNDEwNCwgCi0gICAgMjQxMDksIDI0MTEzLCAyNDExNywgMjQxMjEsIDI0MTI1LCAyNDEyOSwgMjQxMzMsIDI0MTM3LCAyNDE0MSwgMjQxNDUsIAotICAgIDI0MTQ5LCAyNDE1NSwgMjQxNjEsIDI0MTY3LCAyNDE3MywgMjQxNzksIDI0MTg0LCAyNDE5MCwgMjQxOTYsIDI0MjAyLCAKLSAgICAyNDIwNiwgMjQyMTAsIDI0MjE0LCAyNDIxOCwgMjQyMjIsIDI0MjI2LCAyNDIzMCwgMjQyMzQsIDI0MjM4LCAyNDI0MiwgCi0gICAgMjQyNDYsIDI0MjUwLCAyNDI1NCwgMjQyNTksIDI0MjY0LCAyNDI2OSwgMjQyNzMsIDI0Mjc3LCAyNDI4MSwgMjQyODUsIAotICAgIDI0Mjg5LCAyNDI5MywgMjQyOTcsIDI0MzAxLCAyNDMwNSwgMjQzMDksIDI0MzE1LCAyNDMyMSwgMjQzMjcsIDI0MzMzLCAKLSAgICAyNDMzOSwgMjQzNDUsIDI0MzUxLCAyNDM1NywgMjQzNjMsIDI0MzY3LCAyNDM3MSwgMjQzNzUsIDI0Mzc5LCAyNDM4MywgCi0gICAgMjQzODcsIDI0MzkxLCAyNDM5NywgMjQ0MDMsIDI0NDA5LCAyNDQxNSwgMjQ0MjEsIDI0NDI3LCAyNDQzMywgMjQ0MzksIAotICAgIDI0NDQ1LCAyNDQ1MCwgMjQ0NTUsIDI0NDYwLCAyNDQ2NSwgMjQ0NzEsIDI0NDc3LCAyNDQ4MywgMjQ0ODksIDI0NDk1LCAKLSAgICAyNDUwMSwgMjQ1MDcsIDI0NTEyLCAyNDUxOCwgMjQ1MjQsIDI0NTMwLCAyNDUzNSwgMjQ1NDEsIDI0NTQ3LCAyNDU1MywgCi0gICAgMjQ1NTgsIDI0NTYzLCAyNDU2OCwgMjQ1NzMsIDI0NTc4LCAyNDU4MywgMjQ1ODgsIDI0NTkzLCAyNDU5OCwgMjQ2MDMsIAotICAgIDI0NjA4LCAyNDYxMywgMjQ2MTcsIDI0NjIyLCAyNDYyNywgMjQ2MzIsIDI0NjM3LCAyNDY0MiwgMjQ2NDcsIDI0NjUyLCAKLSAgICAyNDY1NywgMjQ2NjIsIDI0NjY3LCAyNDY3MiwgMjQ2NzcsIDI0NjgyLCAyNDY4NywgMjQ2OTIsIDI0Njk3LCAyNDcwMiwgCi0gICAgMjQ3MDcsIDI0NzEyLCAyNDcxNywgMjQ3MjIsIDI0NzI3LCAyNDczMiwgMjQ3MzcsIDI0NzQyLCAyNDc0NywgMjQ3NTIsIAotICAgIDI0NzU3LCAyNDc2MiwgMjQ3NjYsIDI0NzcxLCAyNDc3NiwgMjQ3ODEsIDI0Nzg2LCAyNDc5MSwgMjQ3OTYsIDI0ODAxLCAKLSAgICAyNDgwNiwgMjQ4MTEsIDI0ODE2LCAyNDgyMSwgMjQ4MjYsIDI0ODMxLCAyNDgzNiwgMjQ4NDEsIDI0ODQ2LCAyNDg1MSwgCi0gICAgMjQ4NTYsIDI0ODYxLCAyNDg2NiwgMjQ4NzEsIDI0ODc2LCAyNDg4MSwgMjQ4ODYsIDI0ODkxLCAyNDg5NSwgMjQ5MDAsIAotICAgIDI0OTA1LCAyNDkxMCwgMjQ5MTUsIDI0OTIwLCAyNDkyNCwgMjQ5MjksIDI0OTM0LCAyNDkzOSwgMjQ5NDQsIDI0OTQ5LCAKLSAgICAyNDk1MywgMjQ5NTgsIDI0OTY0LCAyNDk2OSwgMjQ5NzQsIDI0OTc5LCAyNDk4NCwgMjQ5OTAsIDI0OTk1LCAyNTAwMCwgCi0gICAgMjUwMDUsIDI1MDEwLCAyNTAxNSwgMjUwMjAsIDI1MDI1LCAyNTAzMCwgMjUwMzUsIDI1MDQwLCAyNTA0NSwgMjUwNTAsIAotICAgIDI1MDU1LCAyNTA2MCwgMjUwNjUsIDI1MDcwLCAyNTA3NSwgMjUwODAsIDI1MDg1LCAyNTA5MCwgMjUwOTUsIDI1MTAwLCAKLSAgICAyNTEwNSwgMjUxMTAsIDI1MTE1LCAyNTEyMCwgMjUxMjUsIDI1MTMwLCAyNTEzNSwgMjUxNDAsIDI1MTQ1LCAyNTE1MCwgCi0gICAgMjUxNTUsIDI1MTYwLCAyNTE2NSwgMjUxNzAsIDI1MTc1LCAyNTE4MCwgMjUxODUsIDI1MTkwLCAyNTE5NSwgMjUyMDAsIAotICAgIDI1MjA1LCAyNTIxMCwgMjUyMTYsIDI1MjIxLCAyNTIyNiwgMjUyMzEsIDI1MjM2LCAyNTI0MSwgMjUyNDYsIDI1MjUxLCAKLSAgICAyNTI1NiwgMjUyNjEsIDI1MjY2LCAyNTI3MSwgMjUyNzUsIDI1MjgwLCAyNTI4NSwgMjUyOTAsIDI1Mjk1LCAyNTMwMCwgCi0gICAgMjUzMDUsIDI1MzEwLCAyNTMxNSwgMjUzMjAsIDI1MzI1LCAyNTMzMCwgMjUzMzUsIDI1MzQwLCAyNTM0NSwgMjUzNTAsIAotICAgIDI1MzU1LCAyNTM2MCwgMjUzNjUsIDI1MzcwLCAyNTM3NSwgMjUzODAsIDI1Mzg1LCAyNTM5MCwgMjUzOTUsIDI1NDAwLCAKLSAgICAyNTQwNSwgMjU0MTEsIDI1NDE1LCAyNTQxOSwgMjU0MjMsIDI1NDI3LCAyNTQzMSwgMjU0MzUsIDI1NDM5LCAyNTQ0MywgCi0gICAgMjU0NDksIDI1NDU1LCAyNTQ2MSwgMjU0NjcsIDI1NDczLCAyNTQ3OSwgMjU0ODUsIDI1NDkyLCAyNTQ5OCwgMjU1MDMsIAotICAgIDI1NTA4LCAyNTUxMywgMjU1MTgsIDI1NTIzLCAyNTUyOCwgMjU1MzMsIDI1NTM4LCAyNTU0MywgMjU1NDgsIDI1NTUzLCAKLSAgICAyNTU1OCwgMjU1NjMsIDI1NTY4LCAyNTU3MywgMjU1NzgsIDI1NTgzLCAyNTU4OCwgMjU1OTMsIDI1NTk4LCAyNTYwMywgCi0gICAgMjU2MDgsIDI1NjEzLCAyNTYxOCwgMjU2MjMsIDI1NjI4LCAyNTYzMywgMjU2MzgsIDAsIDAsIDAsIDI1NjQ1LCAyNTY1NSwgCi0gICAgMjU2NTksIDI1NjY2LCAyNTY3MCwgMjU2NzQsIDI1Njc4LCAyNTY4NiwgMjU2OTAsIDI1Njk1LCAyNTcwMCwgMjU3MDUsIAotICAgIDI1NzA5LCAyNTcxNCwgMjU3MTksIDI1NzIyLCAyNTcyNiwgMjU3MzAsIDI1NzM5LCAyNTc0MywgMjU3NDcsIDI1NzUzLCAKLSAgICAyNTc1NywgMjU3NjEsIDI1NzY5LCAyNTc3MywgMjU3ODEsIDI1Nzg3LCAyNTc5MywgMjU3OTksIDI1ODA1LCAyNTgxNSwgCi0gICAgMjU4MjEsIDI1ODI1LCAyNTgzNCwgMjU4MzcsIDI1ODQzLCAyNTg0NywgMjU4NTMsIDI1ODU4LCAyNTg2NCwgMjU4NzIsIAotICAgIDI1ODc4LCAyNTg4NCwgMjU4OTIsIDI1ODk4LCAyNTkwMiwgMjU5MDYsIDI1OTE2LCAyNTkyMiwgMjU5MjYsIDI1OTM2LCAKLSAgICAyNTk0MiwgMjU5NDYsIDI1OTUwLCAyNTk1NywgMjU5NjQsIDI1OTY5LCAyNTk3NCwgMjU5ODMsIDI1OTg3LCAyNTk5MSwgCi0gICAgMjU5OTUsIDI2MDAzLCAyNjAxMCwgMjYwMTQsIDI2MDE4LCAyNjAyMiwgMjYwMjYsIDI2MDMwLCAyNjAzNCwgMjYwMzgsIAotICAgIDI2MDQyLCAyNjA0NiwgMjYwNTAsIDI2MDU0LCAyNjA1OSwgMjYwNjQsIDI2MDY5LCAyNjA3MywgMjYwNzcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MDgxLCAyNjA4NSwgMjYwODksIDI2MDkzLCAyNjA5NywgCi0gICAgMjYxMDIsIDI2MTA3LCAyNjExMiwgMjYxMTcsIDI2MTIxLCAyNjEyNSwgMjYxMzAsIDI2MTM0LCAwLCAyNjEzOCwgMjYxNDMsIAotICAgIDI2MTQ4LCAyNjE1MiwgMjYxNTYsIDI2MTYxLCAyNjE2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjYxNzEsIDI2MTc1LCAyNjE3OSwgMjYxODMsIDI2MTg3LCAyNjE5MiwgMjYxOTcsIDI2MjAyLCAyNjIwNywgMjYyMTEsIAotICAgIDI2MjE1LCAyNjIyMCwgMjYyMjQsIDI2MjI4LCAyNjIzMiwgMjYyMzcsIDI2MjQyLCAyNjI0NiwgMjYyNTAsIDI2MjU1LCAKLSAgICAyNjI2MCwgMjYyNjUsIDI2MjcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjI3NiwgMjYyODAsIDI2Mjg0LCAKLSAgICAyNjI4OCwgMjYyOTIsIDI2Mjk3LCAyNjMwMiwgMjYzMDcsIDI2MzEyLCAyNjMxNiwgMjYzMjAsIDI2MzI1LCAyNjMyOSwgCi0gICAgMjYzMzMsIDI2MzM3LCAyNjM0MiwgMjYzNDcsIDI2MzUxLCAyNjM1NSwgMjYzNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI2MzY1LCAyNjM2OSwgMjYzNzMsIDI2Mzc3LCAyNjM4MSwgMjYzODYsIDI2MzkxLCAyNjM5NiwgCi0gICAgMjY0MDEsIDI2NDA1LCAyNjQwOSwgMjY0MTQsIDI2NDE4LCAwLCAyNjQyMiwgMjY0MjcsIDI2NDMyLCAwLCAyNjQzNiwgCi0gICAgMjY0NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2NDQ2LCAyNjQ0OSwgMjY0NTMsIDI2NDU3LCAKLSAgICAyNjQ2MSwgMjY0NjUsIDI2NDY5LCAyNjQ3MywgMjY0NzcsIDI2NDgxLCAyNjQ4NSwgMjY0ODksIDI2NDkzLCAyNjQ5NywgCi0gICAgMjY1MDEsIDI2NTA1LCAyNjUwOSwgMjY1MTMsIDI2NTE2LCAyNjUyMCwgMjY1MjQsIDI2NTI4LCAyNjUzMiwgMjY1MzYsIAotICAgIDI2NTQwLCAyNjU0NCwgMjY1NDgsIDI2NTUyLCAyNjU1NiwgMjY1NjAsIDI2NTY0LCAyNjU2OCwgMjY1NzEsIDI2NTc0LCAKLSAgICAyNjU3OCwgMjY1ODIsIDI2NTg4LCAyNjU5NCwgMjY2MDAsIDI2NjA2LCAyNjYxMiwgMjY2MTgsIDI2NjI0LCAyNjYzMCwgCi0gICAgMjY2MzYsIDI2NjQyLCAyNjY0OCwgMjY2NTQsIDI2NjYwLCAyNjY2NiwgMjY2NzUsIDI2Njg0LCAyNjY5MCwgMjY2OTYsIAotICAgIDI2NzAyLCAyNjcwNywgMjY3MTEsIDI2NzE2LCAyNjcyMSwgMjY3MjYsIDI2NzMwLCAyNjczNSwgMjY3NDAsIDI2NzQ1LCAKLSAgICAyNjc0OSwgMjY3NTQsIDI2NzU4LCAyNjc2MywgMjY3NjgsIDI2NzczLCAyNjc3OCwgMjY3ODIsIDI2Nzg2LCAyNjc5MCwgCi0gICAgMjY3OTQsIDI2Nzk4LCAyNjgwMiwgMjY4MDYsIDI2ODEwLCAyNjgxNCwgMjY4MTgsIDI2ODI0LCAyNjgyOCwgMjY4MzIsIAotICAgIDI2ODM2LCAyNjg0MCwgMjY4NDQsIDI2ODUyLCAyNjg1OCwgMjY4NjIsIDI2ODY4LCAyNjg3MiwgMjY4NzgsIDI2ODgyLCAwLCAKLSAgICAwLCAyNjg4NiwgMjY4OTAsIDI2ODkzLCAyNjg5NiwgMjY4OTksIDI2OTAyLCAyNjkwNSwgMjY5MDgsIDI2OTExLCAyNjkxNCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMjY5MTcsIDI2OTI1LCAyNjkzMywgMjY5NDEsIDI2OTQ5LCAyNjk1NywgMjY5NjUsIDI2OTczLCAKLSAgICAyNjk4MSwgMjY5ODksIDAsIDAsIDAsIDAsIDAsIDAsIDI2OTk3LCAyNzAwMCwgMjcwMDMsIDI3MDA2LCAyNzAxMSwgMjcwMTQsIAotICAgIDI3MDE5LCAyNzAyNiwgMjcwMzQsIDI3MDM5LCAyNzA0NiwgMjcwNDksIDI3MDU2LCAyNzA2MywgMjcwNzAsIDAsIDI3MDc0LCAKLSAgICAyNzA3OCwgMjcwODEsIDI3MDg0LCAyNzA4NywgMjcwOTAsIDI3MDkzLCAyNzA5NiwgMjcwOTksIDI3MTAyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAyNzEwNSwgMjcxMDgsIDI3MTExLCAyNzExNCwgMjcxMTcsIDI3MTIwLCAyNzEyNCwgMjcxMjgsIDI3MTMyLCAKLSAgICAyNzEzNSwgMjcxMzksIDI3MTQzLCAyNzE0NiwgMjcxNTAsIDI3MTU0LCAyNzE1NywgMjcxNjEsIDI3MTY0LCAyNzE2OCwgCi0gICAgMjcxNzIsIDI3MTc2LCAyNzE4MCwgMjcxODQsIDI3MTg3LCAyNzE5MCwgMjcxOTQsIDI3MTk4LCAyNzIwMSwgMjcyMDUsIAotICAgIDI3MjA5LCAyNzIxMywgMjcyMTcsIDI3MjIxLCAyNzIyNSwgMjcyMjksIDI3MjMzLCAyNzI0MCwgMjcyNDUsIDI3MjUwLCAKLSAgICAyNzI1NSwgMjcyNjAsIDI3MjY2LCAyNzI3MiwgMjcyNzgsIDI3Mjg0LCAyNzI4OSwgMjcyOTUsIDI3MzAxLCAyNzMwNiwgCi0gICAgMjczMTIsIDI3MzE4LCAyNzMyNCwgMjczMzAsIDI3MzM2LCAyNzM0MSwgMjczNDcsIDI3MzUyLCAyNzM1OCwgMjczNjQsIAotICAgIDI3MzcwLCAyNzM3NiwgMjczODIsIDI3Mzg3LCAyNzM5MiwgMjczOTgsIDI3NDA0LCAyNzQwOSwgMjc0MTUsIDI3NDIwLCAKLSAgICAyNzQyNiwgMjc0MzEsIDI3NDM2LCAyNzQ0MiwgMjc0NDgsIDI3NDU0LCAyNzQ2MCwgMjc0NjYsIDI3NDcyLCAyNzQ3OCwgCi0gICAgMjc0ODQsIDI3NDkwLCAyNzQ5NiwgMjc1MDIsIDI3NTA4LCAyNzUxMywgMjc1MTgsIDI3NTIzLCAyNzUyOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjc1MzUsIDI3NTQ0LCAyNzU1MywgMjc1NjEsIDI3NTY5LCAyNzU3OSwgMjc1ODcsIDI3NTk2LCAKLSAgICAyNzYwMywgMjc2MTAsIDI3NjE3LCAyNzYyNSwgMjc2MzMsIDI3NjQxLCAyNzY0OSwgMjc2NTcsIDI3NjY1LCAyNzY3MywgCi0gICAgMjc2ODEsIDI3Njg4LCAyNzY5NiwgMjc3MDQsIDI3NzEyLCAyNzcyMCwgMjc3MjgsIDI3NzM4LCAyNzc0OCwgMjc3NTgsIAotICAgIDI3NzY4LCAyNzc3OCwgMjc3ODgsIDI3Nzk4LCAyNzgwOCwgMjc4MTgsIDI3ODI4LCAyNzgzOCwgMjc4NDgsIDI3ODU4LCAKLSAgICAyNzg2OCwgMjc4NzYsIDI3ODg0LCAyNzg5NCwgMjc5MDIsIDAsIDAsIDAsIDAsIDAsIDI3OTEyLCAyNzkxNiwgMjc5MjAsIAotICAgIDI3OTI0LCAyNzkyOCwgMjc5MzIsIDI3OTM2LCAyNzk0MCwgMjc5NDQsIDI3OTQ4LCAyNzk1MiwgMjc5NTYsIDI3OTYwLCAKLSAgICAyNzk2NCwgMjc5NjgsIDI3OTcyLCAyNzk3NiwgMjc5ODAsIDI3OTg0LCAyNzk4OCwgMjc5OTIsIDI3OTk2LCAyODAwMCwgCi0gICAgMjgwMDQsIDI4MDEwLCAyODAxNCwgMjgwMjAsIDI4MDI0LCAyODAzMCwgMjgwMzQsIDI4MDQwLCAyODA0NCwgMjgwNDgsIAotICAgIDI4MDUyLCAyODA1NiwgMjgwNjAsIDI4MDY0LCAyODA3MCwgMjgwNzYsIDI4MDgyLCAyODA4OCwgMjgwOTMsIDI4MDk5LCAKLSAgICAyODEwNSwgMjgxMTEsIDI4MTE3LCAyODEyMywgMjgxMjksIDI4MTM2LCAyODE0MiwgMjgxNDcsIDI4MTUyLCAyODE1NiwgCi0gICAgMjgxNjAsIDI4MTY0LCAyODE2OCwgMjgxNzIsIDI4MTc2LCAyODE4MCwgMjgxODYsIDI4MTkyLCAyODE5OCwgMjgyMDMsIAotICAgIDI4MjEwLCAyODIxNSwgMjgyMjAsIDI4MjI2LCAyODIzMSwgMjgyMzgsIDI4MjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyODI1MiwgMjgyNTgsIDI4MjYyLCAyODI2NywgMjgyNzIsIDI4Mjc3LCAyODI4MiwgMjgyODcsIDI4MjkyLCAKLSAgICAyODI5NywgMjgzMDIsIDI4MzA3LCAyODMxMiwgMjgzMTcsIDI4MzIyLCAyODMyNywgMjgzMzEsIDI4MzM1LCAyODM0MCwgCi0gICAgMjgzNDUsIDI4MzUwLCAyODM1NCwgMjgzNTgsIDI4MzYyLCAyODM2NywgMjgzNzIsIDI4Mzc3LCAyODM4MiwgMjgzODYsIDAsIAotICAgIDAsIDAsIDI4MzkwLCAyODM5NSwgMjg0MDAsIDI4NDA1LCAyODQxMSwgMjg0MTcsIDI4NDIzLCAyODQyOSwgMjg0MzQsIAotICAgIDI4NDM5LCAyODQ0NSwgMjg0NTEsIDAsIDAsIDAsIDAsIDI4NDU4LCAyODQ2MywgMjg0NjksIDI4NDc1LCAyODQ4MSwgCi0gICAgMjg0ODYsIDI4NDkxLCAyODQ5NiwgMjg1MDEsIDI4NTA3LCAyODUxMiwgMjg1MTcsIDAsIDAsIDAsIDAsIDI4NTIyLCAwLCAwLCAKLSAgICAwLCAyODUyNywgMjg1MzIsIDI4NTM3LCAyODU0MiwgMjg1NDYsIDI4NTUwLCAyODU1NCwgMjg1NTgsIDI4NTYyLCAyODU2NiwgCi0gICAgMjg1NzAsIDI4NTc0LCAyODU3OCwgMjg1ODMsIDI4NTg5LCAyODU5NSwgMjg2MDEsIDI4NjA2LCAyODYxMSwgMjg2MTcsIAotICAgIDI4NjIzLCAyODYyOSwgMjg2MzQsIDI4NjQwLCAyODY0NSwgMjg2NTEsIDI4NjU3LCAyODY2MiwgMjg2NjgsIDI4Njc0LCAKLSAgICAyODY4MCwgMjg2ODUsIDI4NjkwLCAyODY5NSwgMjg3MDEsIDI4NzA3LCAyODcxMiwgMjg3MTgsIDI4NzIzLCAyODcyOSwgCi0gICAgMjg3MzQsIDI4NzQwLCAwLCAwLCAyODc0NiwgMjg3NTIsIDI4NzU4LCAyODc2NCwgMjg3NzAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI4Nzc2LCAyODc4MywgMjg3OTAsIDI4Nzk2LCAyODgwMywgMjg4MTAsIDI4ODE2LCAyODgyMywgCi0gICAgMjg4MzAsIDI4ODM3LCAyODg0MywgMjg4NDksIDI4ODU2LCAyODg2MiwgMjg4NjgsIDI4ODc1LCAyODg4MiwgMjg4ODgsIAotICAgIDI4ODk1LCAyODkwMiwgMjg5MDgsIDI4OTE0LCAyODkyMSwgMjg5MjcsIDI4OTMzLCAyODk0MCwgMjg5NDYsIDI4OTUzLCAKLSAgICAyODk2MCwgMjg5NjcsIDI4OTc0LCAyODk4MSwgMjg5ODgsIDI4OTk0LCAyOTAwMSwgMjkwMDgsIDI5MDE0LCAyOTAyMSwgCi0gICAgMjkwMjgsIDI5MDM1LCAyOTA0MiwgMjkwNDksIDI5MDU2LCAyOTA2MywgMCwgMCwgMCwgMCwgMjkwNzAsIDI5MDc4LCAKLSAgICAyOTA4NSwgMjkwOTIsIDI5MDk4LCAyOTEwNSwgMjkxMTEsIDI5MTE4LCAyOTEyNCwgMjkxMzEsIDI5MTM4LCAyOTE0NSwgCi0gICAgMjkxNTIsIDI5MTU5LCAyOTE2NiwgMjkxNzMsIDI5MTgwLCAyOTE4NywgMjkxOTQsIDI5MjAxLCAyOTIwOCwgMjkyMTQsIAotICAgIDI5MjIxLCAyOTIyOCwgMjkyMzUsIDI5MjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTI0NywgMjkyNTMsIDI5MjU4LCAyOTI2MywgCi0gICAgMjkyNjgsIDI5MjczLCAyOTI3OCwgMjkyODMsIDI5Mjg4LCAyOTI5MywgMjkyOTgsIDAsIDAsIDAsIDI5MzA0LCAyOTMxMCwgCi0gICAgMjkzMTYsIDI5MzIwLCAyOTMyNiwgMjkzMzIsIDI5MzM4LCAyOTM0NCwgMjkzNTAsIDI5MzU2LCAyOTM2MiwgMjkzNjgsIAotICAgIDI5Mzc0LCAyOTM4MCwgMjkzODYsIDI5MzkyLCAyOTM5OCwgMjk0MDQsIDI5NDEwLCAyOTQxNCwgMjk0MjAsIDI5NDI2LCAKLSAgICAyOTQzMiwgMjk0MzgsIDI5NDQ0LCAyOTQ1MCwgMjk0NTYsIDI5NDYyLCAyOTQ2OCwgMjk0NzQsIDI5NDgwLCAyOTQ4NiwgCi0gICAgMjk0OTIsIDI5NDk4LCAyOTUwNCwgMjk1MDgsIDI5NTEzLCAyOTUxOCwgMjk1MjMsIDI5NTI3LCAyOTUzMiwgMjk1MzYsIAotICAgIDI5NTQxLCAyOTU0NiwgMjk1NTEsIDI5NTU1LCAyOTU2MCwgMjk1NjUsIDI5NTcwLCAyOTU3NSwgMjk1ODAsIDI5NTg0LCAKLSAgICAyOTU4OCwgMjk1OTMsIDI5NTk4LCAyOTYwMiwgMjk2MDYsIDI5NjEwLCAyOTYxNSwgMjk2MjAsIDI5NjI1LCAyOTYzMCwgMCwgCi0gICAgMCwgMjk2MzYsIDI5NjQwLCAyOTY0NywgMjk2NTIsIDI5NjU4LCAyOTY2NCwgMjk2NjksIDI5Njc1LCAyOTY4MSwgMjk2ODYsIAotICAgIDI5NjkyLCAyOTY5OCwgMjk3MDQsIDI5NzA5LCAyOTcxNSwgMjk3MjAsIDI5NzI1LCAyOTczMSwgMjk3MzYsIDI5NzQyLCAKLSAgICAyOTc0NywgMjk3NTMsIDI5NzU5LCAyOTc2NSwgMjk3NzEsIDI5Nzc1LCAyOTc4MCwgMjk3ODUsIDI5NzkxLCAyOTc5NywgCi0gICAgMjk4MDIsIDI5ODA4LCAyOTgxNCwgMjk4MTgsIDI5ODIzLCAyOTgyOCwgMjk4MzIsIDI5ODM3LCAyOTg0MiwgMjk4NDcsIAotICAgIDI5ODUyLCAyOTg1OCwgMjk4NjQsIDI5ODY5LCAyOTg3NCwgMjk4NzksIDI5ODgzLCAyOTg4OCwgMjk4OTIsIDI5ODk3LCAKLSAgICAyOTkwMSwgMjk5MDYsIDI5OTExLCAyOTkxNiwgMjk5MjEsIDI5OTI3LCAyOTkzMywgMjk5NDAsIDI5OTUwLCAyOTk1OSwgCi0gICAgMjk5NjYsIDI5OTcyLCAyOTk4MiwgMjk5ODcsIDI5OTkzLCAwLCAyOTk5OCwgMzAwMDMsIDMwMDA4LCAzMDAxNiwgMzAwMjIsIAotICAgIDMwMDMwLCAzMDAzNSwgMzAwNDEsIDMwMDQ3LCAzMDA1MywgMzAwNTgsIDMwMDY0LCAzMDA2OSwgMzAwNzYsIDMwMDgyLCAKLSAgICAzMDA4NywgMzAwOTMsIDMwMDk5LCAzMDEwNSwgMzAxMTIsIDMwMTE5LCAzMDEyNiwgMzAxMzEsIDMwMTM2LCAzMDE0MywgCi0gICAgMzAxNTAsIDMwMTU3LCAzMDE2NCwgMzAxNzEsIDAsIDAsIDMwMTc4LCAzMDE4NSwgMzAxOTIsIDMwMTk4LCAzMDIwNCwgCi0gICAgMzAyMTAsIDMwMjE2LCAzMDIyMiwgMzAyMjgsIDMwMjM0LCAzMDI0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAyNDYsIDMwMjUyLCAKLSAgICAzMDI1NywgMzAyNjIsIDMwMjY3LCAzMDI3MiwgMzAyNzcsIDMwMjgyLCAzMDI4NywgMzAyOTIsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDMwMjk3LCAzMDMwMiwgMzAzMDcsIDMwMzEyLCAzMDMxNywgMzAzMjIsIDMwMzI3LCAzMDMzNiwgMzAzNDMsIDMwMzQ4LCAKLSAgICAzMDM1MywgMzAzNTgsIDMwMzYzLCAzMDM2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjYwODgsIDY2MDk3LCA2NjEwNiwgNjYxMTcsIDY2MTI0LCA2NjEyOSwgNjYxMzQsIDY2MTQxLCA2NjE0OCwgNjYxNTQsIAorICAgIDY2MTU5LCA2NjE2NCwgNjYxNjksIDY2MTc0LCA2NjE4MSwgNjYxODYsIDY2MTkxLCA2NjE5NiwgNjYyMDcsIDY2MjEyLCAKKyAgICA2NjIxNywgNjYyMjQsIDY2MjI5LCA2NjIzNiwgNjYyNDEsIDY2MjQ2LCA2NjI1MywgNjYyNjAsIDY2MjY3LCA2NjI3NiwgCisgICAgNjYyODUsIDY2MjkwLCA2NjI5NSwgNjYzMDAsIDY2MzA3LCA2NjMxMiwgNjYzMjIsIDY2MzI5LCA2NjMzNCwgNjYzMzksIAorICAgIDY2MzQ0LCA2NjM0OSwgNjYzNTQsIDY2MzU5LCA2NjM2OCwgNjYzNzUsIDY2MzgyLCA2NjM4NywgNjYzOTQsIDY2Mzk5LCAKKyAgICA2NjQwNiwgNjY0MTUsIDY2NDI2LCA2NjQzMSwgNjY0NDAsIDY2NDQ1LCA2NjQ1MiwgNjY0NjEsIDY2NDcwLCA2NjQ3NSwgCisgICAgNjY0ODAsIDY2NDg3LCA2NjQ5MywgNjY1MDAsIDY2NTA3LCA2NjUxMSwgNjY1MTUsIDY2NTE4LCA2NjUyMiwgNjY1MjYsIAorICAgIDY2NTMwLCA2NjUzNCwgNjY1MzgsIDY2NTQyLCA2NjU0NiwgNjY1NDksIDY2NTUzLCA2NjU1NywgNjY1NjEsIDY2NTY1LCAKKyAgICA2NjU2OSwgNjY1NzMsIDY2NTc2LCA2NjU4MCwgNjY1ODQsIDY2NTg3LCA2NjU5MSwgNjY1OTUsIDY2NTk5LCA2NjYwMywgCisgICAgNjY2MDcsIDY2NjExLCA2NjYxNSwgNjY2MTksIDY2NjIzLCA2NjYyNywgNjY2MzEsIDY2NjM1LCA2NjYzOSwgNjY2NDMsIAorICAgIDY2NjQ3LCA2NjY1MSwgNjY2NTUsIDY2NjU5LCA2NjY2MywgNjY2NjcsIDY2NjcxLCA2NjY3NSwgNjY2NzksIDY2NjgzLCAKKyAgICA2NjY4NywgNjY2OTEsIDY2Njk1LCA2NjY5OSwgNjY3MDMsIDY2NzA3LCA2NjcxMSwgNjY3MTUsIDY2NzE5LCA2NjcyMywgCisgICAgNjY3MjcsIDY2NzMxLCA2NjczNSwgNjY3MzksIDY2NzQzLCA2Njc0NywgNjY3NTEsIDY2NzU1LCA2Njc1OSwgNjY3NjMsIAorICAgIDY2NzY2LCA2Njc3MCwgNjY3NzQsIDY2Nzc4LCA2Njc4MiwgNjY3ODYsIDY2NzkwLCA2Njc5NCwgNjY3OTgsIDY2ODAyLCAKKyAgICA2NjgwNiwgNjY4MTAsIDY2ODE0LCA2NjgxOCwgNjY4MjIsIDY2ODI2LCA2NjgzMCwgNjY4MzQsIDY2ODM4LCA2Njg0MiwgCisgICAgNjY4NDYsIDY2ODUwLCA2Njg1NCwgNjY4NTgsIDY2ODYyLCA2Njg2NiwgNjY4NzAsIDY2ODc0LCA2Njg3OCwgNjY4ODIsIAorICAgIDY2ODg2LCA2Njg5MCwgNjY4OTQsIDY2ODk4LCA2NjkwMiwgNjY5MDYsIDY2OTEwLCA2NjkxNCwgNjY5MTgsIDY2OTIyLCAKKyAgICA2NjkyNiwgNjY5MzAsIDY2OTM0LCA2NjkzOCwgNjY5NDIsIDY2OTQ2LCA2Njk1MCwgNjY5NTQsIDY2OTU4LCA2Njk2MiwgCisgICAgNjY5NjYsIDY2OTcwLCA2Njk3NCwgNjY5NzgsIDY2OTgyLCA2Njk4NiwgNjY5OTAsIDY2OTk0LCA2Njk5OCwgNjcwMDIsIAorICAgIDY3MDA2LCA2NzAxMCwgNjcwMTQsIDY3MDE4LCA2NzAyMiwgNjcwMjYsIDY3MDMwLCA2NzAzNCwgNjcwMzgsIDY3MDQyLCAKKyAgICA2NzA0NiwgNjcwNTAsIDY3MDU0LCA2NzA1OCwgNjcwNjIsIDY3MDY2LCA2NzA3MCwgNjcwNzQsIDY3MDc4LCA2NzA4MiwgCisgICAgNjcwODYsIDY3MDkwLCA2NzA5NCwgNjcwOTgsIDY3MTAyLCA2NzEwNiwgNjcxMTAsIDY3MTE0LCA2NzExOCwgNjcxMjIsIAorICAgIDY3MTI2LCA2NzEzMCwgNjcxMzQsIDY3MTM4LCA2NzE0MiwgNjcxNDYsIDY3MTUwLCA2NzE1NCwgNjcxNTgsIDY3MTYyLCAKKyAgICA2NzE2NiwgNjcxNzAsIDY3MTc0LCA2NzE3OCwgNjcxODIsIDY3MTg2LCA2NzE5MCwgNjcxOTQsIDY3MTk4LCA2NzIwMiwgCisgICAgNjcyMDYsIDY3MjEwLCA2NzIxNCwgNjcyMTgsIDY3MjIyLCA2NzIyNiwgNjcyMzAsIDY3MjM0LCA2NzIzNywgNjcyNDEsIAorICAgIDY3MjQ1LCA2NzI0OSwgNjcyNTMsIDY3MjU3LCA2NzI2MSwgNjcyNjUsIDY3MjY5LCA2NzI3MywgNjcyNzcsIDY3MjgxLCAKKyAgICA2NzI4NSwgNjcyODksIDY3MjkzLCA2NzI5NywgNjczMDEsIDY3MzA1LCA2NzMwOSwgNjczMTMsIDY3MzE3LCA2NzMyMSwgCisgICAgNjczMjUsIDY3MzI5LCA2NzMzMywgNjczMzcsIDY3MzQxLCA2NzM0NSwgNjczNDksIDY3MzUzLCA2NzM1NywgNjczNjEsIAorICAgIDY3MzY1LCA2NzM2OSwgNjczNzMsIDY3Mzc3LCA2NzM4MSwgNjczODUsIDY3Mzg5LCA2NzM5MywgNjczOTcsIDY3NDAxLCAKKyAgICA2NzQwNSwgNjc0MDksIDY3NDEzLCA2NzQxNywgNjc0MjEsIDY3NDI1LCA2NzQyOSwgNjc0MzMsIDY3NDM3LCA2NzQ0MSwgCisgICAgNjc0NDUsIDY3NDQ5LCA2NzQ1MywgNjc0NTcsIDY3NDYxLCA2NzQ2NSwgNjc0NjksIDY3NDczLCA2NzQ3NywgNjc0ODEsIAorICAgIDY3NDg1LCA2NzQ4OSwgNjc0OTMsIDY3NDk3LCA2NzUwMSwgNjc1MDUsIDY3NTA5LCA2NzUxMywgNjc1MTcsIDY3NTIxLCAKKyAgICA2NzUyNSwgNjc1MjksIDY3NTMzLCA2NzUzNywgNjc1NDEsIDY3NTQ1LCA2NzU0OSwgNjc1NTMsIDY3NTU3LCA2NzU2MSwgCisgICAgNjc1NjUsIDY3NTY5LCA2NzU3MywgNjc1NzcsIDY3NTgxLCA2NzU4NSwgNjc1ODksIDY3NTkzLCA2NzU5NywgNjc2MDEsIAorICAgIDY3NjA1LCA2NzYwOSwgNjc2MTMsIDY3NjE3LCA2NzYyMSwgNjc2MjUsIDY3NjI5LCA2NzYzMywgNjc2MzcsIDY3NjQxLCAKKyAgICA2NzY0NSwgNjc2NDksIDY3NjUzLCA2NzY1NywgNjc2NjEsIDY3NjY1LCA2NzY2OSwgNjc2NzMsIDY3Njc3LCA2NzY4MSwgCisgICAgNjc2ODUsIDY3Njg5LCA2NzY5MywgNjc2OTcsIDY3NzAwLCA2NzcwNCwgNjc3MDgsIDY3NzEyLCA2NzcxNiwgNjc3MjAsIAorICAgIDY3NzI0LCA2NzcyOCwgNjc3MzIsIDY3NzM2LCA2Nzc0MCwgNjc3NDQsIDY3NzQ4LCA2Nzc1MiwgNjc3NTYsIDY3NzYwLCAKKyAgICA2Nzc2NCwgNjc3NjgsIDY3NzcyLCA2Nzc3NiwgNjc3ODAsIDY3Nzg0LCA2Nzc4OCwgNjc3OTIsIDY3Nzk2LCA2NzgwMCwgCisgICAgNjc4MDQsIDY3ODA4LCA2NzgxMiwgNjc4MTYsIDY3ODIwLCA2NzgyNCwgNjc4MjgsIDY3ODMyLCA2NzgzNiwgNjc4NDAsIAorICAgIDY3ODQ0LCA2Nzg0OCwgNjc4NTIsIDY3ODU2LCA2Nzg2MCwgNjc4NjQsIDY3ODY4LCA2Nzg3MiwgNjc4NzYsIDY3ODgwLCAKKyAgICA2Nzg4NCwgNjc4ODgsIDY3ODkyLCA2Nzg5NiwgNjc5MDAsIDY3OTA0LCA2NzkwOCwgNjc5MTIsIDY3OTE2LCA2NzkyMCwgCisgICAgNjc5MjQsIDY3OTI4LCA2NzkzMiwgNjc5MzYsIDY3OTQwLCA2Nzk0NCwgNjc5NDgsIDY3OTUyLCA2Nzk1NiwgNjc5NjAsIAorICAgIDY3OTY0LCA2Nzk2OCwgNjc5NzIsIDY3OTc2LCA2Nzk4MCwgNjc5ODQsIDY3OTg4LCA2Nzk5MiwgNjc5OTYsIDY4MDAwLCAKKyAgICA2ODAwNCwgNjgwMDgsIDY4MDEyLCA2ODAxNiwgNjgwMjAsIDY4MDI0LCA2ODAyOCwgNjgwMzIsIDY4MDM2LCA2ODA0MCwgCisgICAgNjgwNDQsIDY4MDQ4LCA2ODA1MiwgNjgwNTYsIDY4MDYwLCA2ODA2NCwgNjgwNjgsIDY4MDcyLCA2ODA3NiwgNjgwODAsIAorICAgIDY4MDg0LCA2ODA4OCwgNjgwOTIsIDY4MDk2LCA2ODEwMCwgNjgxMDQsIDY4MTA4LCA2ODExMiwgNjgxMTYsIDY4MTIwLCAKKyAgICA2ODEyNCwgNjgxMjgsIDY4MTMyLCA2ODEzNiwgNjgxNDAsIDY4MTQ0LCA2ODE0OCwgNjgxNTIsIDY4MTU2LCA2ODE2MCwgCisgICAgNjgxNjQsIDY4MTY4LCA2ODE3MiwgNjgxNzYsIDY4MTgwLCA2ODE4NCwgNjgxODgsIDY4MTkyLCA2ODE5NiwgNjgyMDAsIAorICAgIDY4MjA0LCA2ODIwOCwgNjgyMTIsIDY4MjE2LCA2ODIyMCwgNjgyMjQsIDY4MjI4LCA2ODIzMiwgNjgyMzYsIDY4MjQwLCAKKyAgICA2ODI0NCwgNjgyNDgsIDY4MjUyLCA2ODI1NiwgNjgyNjAsIDY4MjY0LCA2ODI2OCwgNjgyNzIsIDY4Mjc2LCA2ODI4MCwgCisgICAgNjgyODQsIDY4Mjg4LCA2ODI5MiwgNjgyOTYsIDY4MzAwLCA2ODMwNCwgNjgzMDgsIDY4MzEyLCA2ODMxNiwgNjgzMjAsIAorICAgIDY4MzI0LCA2ODMyOCwgNjgzMzIsIDY4MzM2LCA2ODM0MCwgNjgzNDQsIDY4MzQ4LCA2ODM1MiwgNjgzNTYsIDY4MzYwLCAKKyAgICA2ODM2NCwgNjgzNjgsIDY4MzcyLCA2ODM3NiwgNjgzODAsIDY4Mzg0LCA2ODM4OCwgNjgzOTIsIDY4Mzk2LCA2ODQwMCwgCisgICAgNjg0MDQsIDY4NDA4LCA2ODQxMiwgNjg0MTYsIDY4NDIwLCA2ODQyNCwgNjg0MjgsIDY4NDMyLCA2ODQzNiwgNjg0NDAsIAorICAgIDY4NDQ0LCA2ODQ0OCwgNjg0NTIsIDY4NDU2LCA2ODQ2MCwgNjg0NjQsIDY4NDY4LCA2ODQ3MiwgNjg0NzYsIDY4NDgwLCAKKyAgICA2ODQ4NCwgNjg0ODgsIDY4NDkyLCA2ODQ5NiwgNjg1MDAsIDY4NTA0LCA2ODUwOCwgNjg1MTIsIDY4NTE2LCA2ODUyMCwgCisgICAgNjg1MjQsIDY4NTI4LCA2ODUzMiwgNjg1MzYsIDY4NTQwLCA2ODU0NCwgNjg1NDgsIDY4NTUyLCA2ODU1NSwgNjg1NTksIAorICAgIDY4NTYzLCA2ODU2NywgNjg1NzEsIDY4NTc1LCA2ODU3OSwgNjg1ODMsIDY4NTg3LCA2ODU5MSwgNjg1OTUsIDY4NTk5LCAKKyAgICA2ODYwMywgNjg2MDcsIDY4NjExLCA2ODYxNSwgNjg2MTksIDY4NjIzLCA2ODYyNywgNjg2MzEsIDY4NjM1LCA2ODYzOSwgCisgICAgNjg2NDMsIDY4NjQ3LCA2ODY1MSwgNjg2NTUsIDY4NjU5LCA2ODY2MywgNjg2NjcsIDY4NjcxLCA2ODY3NSwgNjg2NzksIAorICAgIDY4NjgzLCA2ODY4NywgNjg2OTEsIDY4Njk1LCA2ODY5OSwgNjg3MDMsIDY4NzA3LCA2ODcxMSwgNjg3MTUsIDY4NzE5LCAKKyAgICA2ODcyMywgNjg3MjcsIDY4NzMxLCA2ODczNSwgNjg3MzksIDY4NzQzLCA2ODc0NywgNjg3NTEsIDY4NzU1LCA2ODc1OSwgCisgICAgNjg3NjMsIDY4NzY3LCA2ODc3MSwgNjg3NzUsIDY4Nzc5LCA2ODc4MywgNjg3ODcsIDY4NzkxLCA2ODc5NSwgNjg3OTksIAorICAgIDY4ODAzLCA2ODgwNywgNjg4MTEsIDY4ODE1LCA2ODgxOSwgNjg4MjMsIDY4ODI3LCA2ODgzMSwgNjg4MzUsIDY4ODM5LCAKKyAgICA2ODg0MywgNjg4NDcsIDY4ODUxLCA2ODg1NSwgNjg4NTksIDY4ODYzLCA2ODg2NywgNjg4NzEsIDY4ODc1LCA2ODg3OSwgCisgICAgNjg4ODMsIDY4ODg3LCA2ODg5MSwgNjg4OTUsIDY4ODk5LCA2ODkwMywgNjg5MDcsIDY4OTExLCA2ODkxNSwgNjg5MTksIAorICAgIDY4OTIzLCA2ODkyNywgNjg5MzEsIDY4OTM1LCA2ODkzOSwgNjg5NDMsIDY4OTQ3LCA2ODk1MSwgNjg5NTUsIDY4OTU5LCAKKyAgICA2ODk2MywgNjg5NjcsIDY4OTcxLCA2ODk3NSwgNjg5NzksIDY4OTgzLCA2ODk4NywgNjg5OTEsIDY4OTk1LCA2ODk5OSwgCisgICAgNjkwMDMsIDY5MDA3LCA2OTAxMCwgNjkwMTQsIDY5MDE4LCA2OTAyMiwgNjkwMjYsIDY5MDMwLCA2OTAzNCwgNjkwMzgsIAorICAgIDY5MDQyLCA2OTA0NiwgNjkwNTAsIDY5MDU0LCA2OTA1OCwgNjkwNjIsIDY5MDY2LCA2OTA3MCwgNjkwNzQsIDY5MDc4LCAKKyAgICA2OTA4MiwgNjkwODYsIDY5MDkwLCA2OTA5NCwgNjkwOTgsIDY5MTAyLCA2OTEwNiwgNjkxMTAsIDY5MTE0LCA2OTExOCwgCisgICAgNjkxMjIsIDY5MTI2LCA2OTEzMCwgNjkxMzQsIDY5MTM4LCA2OTE0MiwgNjkxNDYsIDY5MTUwLCA2OTE1NCwgNjkxNTgsIAorICAgIDY5MTYyLCA2OTE2NiwgNjkxNzAsIDY5MTc0LCA2OTE3OCwgNjkxODIsIDY5MTg2LCA2OTE5MCwgNjkxOTQsIDY5MTk4LCAKKyAgICA2OTIwMiwgNjkyMDYsIDY5MjEwLCA2OTIxNCwgNjkyMTgsIDY5MjIyLCA2OTIyNiwgNjkyMzAsIDY5MjM0LCA2OTIzOCwgCisgICAgNjkyNDIsIDY5MjQ2LCA2OTI1MCwgNjkyNTQsIDY5MjU4LCA2OTI2MiwgNjkyNjYsIDY5MjcwLCA2OTI3NCwgNjkyNzgsIAorICAgIDY5MjgyLCA2OTI4NiwgNjkyOTAsIDY5Mjk0LCA2OTI5OCwgNjkzMDIsIDY5MzA2LCA2OTMxMCwgNjkzMTQsIDY5MzE4LCAKKyAgICA2OTMyMiwgNjkzMjYsIDY5MzMwLCA2OTMzNCwgNjkzMzgsIDY5MzQyLCA2OTM0NiwgNjkzNTAsIDY5MzU0LCA2OTM1OCwgCisgICAgNjkzNjIsIDY5MzY2LCA2OTM3MCwgNjkzNzQsIDY5Mzc4LCA2OTM4MiwgNjkzODYsIDY5MzkwLCA2OTM5NCwgNjkzOTgsIAorICAgIDY5NDAyLCA2OTQwNiwgNjk0MTAsIDY5NDE0LCA2OTQxOCwgNjk0MjIsIDY5NDI2LCA2OTQzMCwgNjk0MzQsIDY5NDM4LCAKKyAgICA2OTQ0MiwgNjk0NDYsIDY5NDUwLCA2OTQ1NCwgNjk0NTgsIDY5NDYyLCA2OTQ2NiwgNjk0NzAsIDY5NDc0LCA2OTQ3OCwgCisgICAgNjk0ODIsIDY5NDg2LCA2OTQ5MCwgNjk0OTQsIDY5NDk4LCA2OTUwMiwgNjk1MDYsIDY5NTEwLCA2OTUxNCwgNjk1MTgsIAorICAgIDY5NTIyLCA2OTUyNiwgNjk1MzAsIDY5NTM0LCA2OTUzOCwgNjk1NDIsIDY5NTQ2LCA2OTU1MCwgNjk1NTQsIDY5NTU4LCAKKyAgICA2OTU2MiwgNjk1NjYsIDY5NTcwLCA2OTU3NCwgNjk1NzgsIDY5NTgyLCA2OTU4NiwgNjk1OTAsIDY5NTk0LCA2OTU5OCwgCisgICAgNjk2MDIsIDY5NjA2LCA2OTYxMCwgNjk2MTMsIDY5NjE3LCA2OTYyMSwgNjk2MjUsIDY5NjI5LCA2OTYzMywgNjk2MzcsIAorICAgIDY5NjQxLCA2OTY0NSwgNjk2NDksIDY5NjUzLCA2OTY1NywgNjk2NjEsIDY5NjY1LCA2OTY2OSwgNjk2NzMsIDY5Njc3LCAKKyAgICA2OTY4MSwgNjk2ODUsIDY5Njg5LCA2OTY5MywgNjk2OTcsIDY5NzAxLCA2OTcwNSwgNjk3MDksIDY5NzEzLCA2OTcxNywgCisgICAgNjk3MjEsIDY5NzI1LCA2OTcyOSwgNjk3MzMsIDY5NzM3LCA2OTc0MSwgNjk3NDUsIDY5NzQ5LCA2OTc1MywgNjk3NTcsIAorICAgIDY5NzYxLCA2OTc2NSwgNjk3NjksIDY5NzczLCA2OTc3NywgNjk3ODEsIDY5Nzg1LCA2OTc4OSwgNjk3OTMsIDY5Nzk3LCAKKyAgICA2OTgwMSwgNjk4MDUsIDY5ODA5LCA2OTgxMywgNjk4MTcsIDY5ODIxLCA2OTgyNSwgNjk4MjksIDY5ODMzLCA2OTgzNywgCisgICAgNjk4NDEsIDY5ODQ1LCA2OTg0OSwgNjk4NTMsIDY5ODU3LCA2OTg2MSwgNjk4NjUsIDY5ODY5LCA2OTg3MywgNjk4NzcsIAorICAgIDY5ODgxLCA2OTg4NSwgNjk4ODksIDY5ODkzLCA2OTg5NywgNjk5MDEsIDY5OTA1LCA2OTkwOSwgNjk5MTMsIDY5OTE3LCAKKyAgICA2OTkyMSwgNjk5MjUsIDY5OTI5LCA2OTkzMywgNjk5MzcsIDY5OTQxLCA2OTk0NSwgNjk5NDksIDY5OTUzLCA2OTk1NywgCisgICAgNjk5NjEsIDY5OTY1LCA2OTk2OSwgNjk5NzMsIDY5OTc3LCA2OTk4MSwgNjk5ODUsIDY5OTg5LCA2OTk5MywgNjk5OTcsIAorICAgIDcwMDAxLCA3MDAwNSwgNzAwMDksIDcwMDEzLCA3MDAxNywgNzAwMjEsIDcwMDI1LCA3MDAyOSwgNzAwMzMsIDcwMDM3LCAKKyAgICA3MDA0MSwgNzAwNDUsIDcwMDQ5LCA3MDA1MywgNzAwNTcsIDcwMDYxLCA3MDA2NSwgNzAwNjksIDcwMDczLCA3MDA3NywgCisgICAgNzAwODEsIDcwMDg1LCA3MDA4OSwgNzAwOTMsIDcwMDk3LCA3MDEwMSwgNzAxMDUsIDcwMTA5LCA3MDExMywgNzAxMTcsIAorICAgIDcwMTIxLCA3MDEyNSwgNzAxMjksIDcwMTMzLCA3MDEzNywgNzAxNDEsIDcwMTQ1LCA3MDE0OSwgNzAxNTMsIDcwMTU3LCAKKyAgICA3MDE2MSwgNzAxNjUsIDcwMTY5LCA3MDE3MywgNzAxNzcsIDcwMTgxLCA3MDE4NSwgNzAxODksIDcwMTkzLCA3MDE5NywgCisgICAgNzAyMDEsIDcwMjA1LCA3MDIwOSwgNzAyMTMsIDcwMjE3LCA3MDIyMSwgNzAyMjUsIDcwMjI5LCA3MDIzMywgNzAyMzcsIAorICAgIDcwMjQxLCA3MDI0NSwgNzAyNDksIDcwMjUzLCA3MDI1NywgNzAyNjEsIDcwMjY1LCA3MDI2OSwgNzAyNzMsIDcwMjc3LCAKKyAgICA3MDI4MSwgNzAyODUsIDcwMjg5LCA3MDI5MywgNzAyOTcsIDcwMzAxLCA3MDMwNSwgNzAzMDksIDcwMzEzLCA3MDMxNywgCisgICAgNzAzMjEsIDcwMzI1LCA3MDMyOSwgNzAzMzMsIDcwMzM3LCA3MDM0MSwgNzAzNDUsIDcwMzQ5LCA3MDM1MywgNzAzNTcsIAorICAgIDcwMzYxLCA3MDM2NSwgNzAzNjksIDcwMzczLCA3MDM3NywgNzAzODEsIDcwMzg1LCA3MDM4OSwgNzAzOTMsIDcwMzk3LCAKKyAgICA3MDQwMSwgNzA0MDUsIDcwNDA5LCA3MDQxMywgNzA0MTcsIDcwNDIxLCA3MDQyNSwgNzA0MjksIDcwNDMzLCA3MDQzNywgCisgICAgNzA0NDEsIDcwNDQ1LCA3MDQ0OSwgNzA0NTMsIDcwNDU3LCA3MDQ2MSwgNzA0NjUsIDcwNDY5LCA3MDQ3MywgNzA0NzcsIAorICAgIDcwNDgxLCA3MDQ4NSwgNzA0ODksIDcwNDkzLCA3MDQ5NywgNzA1MDEsIDcwNTA1LCA3MDUwOSwgNzA1MTMsIDcwNTE3LCAKKyAgICA3MDUyMSwgNzA1MjUsIDcwNTI5LCA3MDUzMywgNzA1MzcsIDcwNTQxLCA3MDU0NSwgNzA1NDksIDcwNTUzLCA3MDU1NywgCisgICAgNzA1NjEsIDcwNTY1LCA3MDU2OSwgNzA1NzMsIDcwNTc3LCA3MDU4MSwgNzA1ODUsIDcwNTg5LCA3MDU5MywgNzA1OTcsIAorICAgIDcwNjAxLCA3MDYwNSwgNzA2MDksIDcwNjEzLCA3MDYxNywgNzA2MjEsIDcwNjI1LCA3MDYyOSwgNzA2MzMsIDcwNjM3LCAKKyAgICA3MDY0MSwgNzA2NDUsIDcwNjQ5LCA3MDY1MywgNzA2NTcsIDcwNjYxLCA3MDY2NSwgNzA2NjksIDcwNjczLCA3MDY3NywgCisgICAgNzA2ODEsIDcwNjg1LCA3MDY4OSwgNzA2OTMsIDcwNjk3LCA3MDcwMSwgNzA3MDUsIDcwNzA5LCA3MDcxMywgNzA3MTcsIAorICAgIDcwNzIxLCA3MDcyNSwgNzA3MjksIDcwNzMzLCA3MDczNywgNzA3NDEsIDcwNzQ1LCA3MDc0OSwgNzA3NTMsIDcwNzU3LCAKKyAgICA3MDc2MSwgNzA3NjUsIDcwNzY5LCA3MDc3MywgNzA3NzcsIDcwNzgxLCA3MDc4NSwgNzA3ODksIDcwNzkzLCA3MDc5NywgCisgICAgNzA4MDEsIDcwODA1LCA3MDgwOSwgNzA4MTMsIDcwODE3LCA3MDgyMSwgNzA4MjUsIDcwODI5LCA3MDgzMywgNzA4MzcsIAorICAgIDcwODQxLCA3MDg0NSwgNzA4NDksIDcwODUzLCA3MDg1NywgNzA4NjEsIDcwODY1LCA3MDg2OSwgNzA4NzMsIDcwODc3LCAKKyAgICA3MDg4MSwgNzA4ODUsIDcwODg5LCA3MDg5MywgNzA4OTcsIDcwOTAxLCA3MDkwNSwgNzA5MDksIDcwOTEzLCA3MDkxNywgCisgICAgNzA5MjEsIDcwOTI1LCA3MDkyOSwgNzA5MzMsIDcwOTM3LCA3MDk0MSwgNzA5NDUsIDcwOTQ5LCA3MDk1MywgNzA5NTcsIAorICAgIDcwOTYxLCA3MDk2NSwgNzA5NjksIDcwOTczLCA3MDk3NywgNzA5ODEsIDcwOTg1LCA3MDk4OSwgNzA5OTMsIDcwOTk3LCAKKyAgICA3MTAwMSwgNzEwMDUsIDcxMDA5LCA3MTAxMywgNzEwMTcsIDcxMDIxLCA3MTAyNSwgNzEwMjksIDcxMDMzLCA3MTAzNywgCisgICAgNzEwNDEsIDcxMDQ1LCA3MTA0OSwgNzEwNTMsIDcxMDU3LCA3MTA2MSwgNzEwNjUsIDcxMDY5LCA3MTA3MywgNzEwNzcsIAorICAgIDcxMDgxLCA3MTA4NSwgNzEwODksIDcxMDkzLCA3MTA5NywgNzExMDEsIDcxMTA1LCA3MTEwOSwgNzExMTMsIDcxMTE3LCAKKyAgICA3MTEyMSwgNzExMjUsIDcxMTI5LCA3MTEzMywgNzExMzcsIDcxMTQxLCA3MTE0NSwgNzExNDksIDcxMTUzLCAwLCAwLCAwLCAKKyAgICA3MTE1NywgNzExNjEsIDcxMTY1LCA3MTE2OSwgNzExNzMsIDcxMTc3LCA3MTE4MSwgNzExODUsIDcxMTg5LCA3MTE5MywgCisgICAgNzExOTcsIDcxMjAxLCA3MTIwNSwgNzEyMDksIDcxMjEzLCA3MTIxNywgNzEyMjEsIDcxMjI1LCA3MTIyOSwgNzEyMzMsIAorICAgIDcxMjM3LCA3MTI0MSwgNzEyNDUsIDcxMjQ5LCA3MTI1MywgNzEyNTcsIDcxMjYxLCA3MTI2NSwgNzEyNjksIDcxMjczLCAKKyAgICA3MTI3NywgNzEyODEsIDcxMjg1LCA3MTI4OSwgNzEyOTMsIDcxMjk3LCA3MTMwMSwgNzEzMDUsIDcxMzA5LCA3MTMxMywgCisgICAgNzEzMTcsIDcxMzIxLCA3MTMyNSwgNzEzMjksIDcxMzMzLCA3MTMzNywgNzEzNDEsIDcxMzQ1LCA3MTM0OSwgNzEzNTMsIAorICAgIDcxMzU3LCA3MTM2MSwgNzEzNjUsIDcxMzY5LCA3MTM3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzEzNzcsIAorICAgIDcxMzgyLCA3MTM4NiwgNzEzOTEsIDcxMzk2LCA3MTQwMSwgNzE0MDYsIDcxNDExLCA3MTQxNSwgNzE0MjAsIDcxNDI1LCAKKyAgICA3MTQzMCwgNzE0MzUsIDcxNDQwLCA3MTQ0NSwgNzE0NTAsIDcxNDU0LCA3MTQ1OSwgNzE0NjQsIDcxNDY5LCA3MTQ3NCwgCisgICAgNzE0NzksIDcxNDg0LCA3MTQ4OCwgNzE0OTMsIDcxNDk4LCA3MTUwMywgNzE1MDgsIDcxNTEzLCA3MTUxNywgNzE1MjIsIAorICAgIDcxNTI2LCA3MTUzMSwgNzE1MzUsIDcxNTQwLCA3MTU0NCwgNzE1NDgsIDcxNTUyLCA3MTU1NywgNzE1NjIsIDcxNTY3LCAKKyAgICA3MTU3NSwgNzE1ODMsIDcxNTkxLCA3MTU5OSwgNzE2MDcsIDcxNjE1LCA3MTYyMSwgNzE2MjksIDcxNjMzLCA3MTYzNywgCisgICAgNzE2NDEsIDcxNjQ1LCA3MTY0OSwgNzE2NTMsIDcxNjU3LCA3MTY2MSwgNzE2NjUsIDcxNjY5LCA3MTY3MywgNzE2NzcsIAorICAgIDcxNjgxLCA3MTY4NSwgNzE2ODksIDcxNjkzLCA3MTY5NywgNzE3MDEsIDcxNzA1LCA3MTcwOSwgNzE3MTMsIDcxNzE3LCAKKyAgICA3MTcyMSwgNzE3MjUsIDcxNzI5LCA3MTczMywgNzE3MzcsIDcxNzQxLCA3MTc0NSwgNzE3NDksIDcxNzUzLCA3MTc1NywgCisgICAgNzE3NjEsIDcxNzY1LCA3MTc2OSwgNzE3NzMsIDcxNzc2LCA3MTc4MCwgNzE3ODQsIDcxNzg4LCA3MTc5MiwgNzE3OTYsIAorICAgIDcxODAwLCA3MTgwNCwgNzE4MDgsIDcxODEyLCA3MTgxNiwgNzE4MjAsIDcxODI0LCA3MTgyOCwgNzE4MzIsIDcxODM2LCAKKyAgICA3MTg0MCwgNzE4NDQsIDcxODQ4LCA3MTg1MiwgNzE4NTYsIDcxODYwLCA3MTg2NCwgNzE4NjgsIDcxODcyLCA3MTg3NiwgCisgICAgNzE4ODAsIDcxODg0LCA3MTg4OCwgNzE4OTIsIDcxODk2LCA3MTkwMCwgNzE5MDQsIDcxOTA4LCA3MTkxMiwgNzE5MTYsIAorICAgIDcxOTIwLCA3MTkyMywgNzE5MjcsIDcxOTMxLCA3MTkzNCwgNzE5MzgsIDcxOTQyLCA3MTk0NiwgNzE5NDksIDcxOTUzLCAKKyAgICA3MTk1NywgNzE5NjEsIDcxOTY1LCA3MTk2OSwgNzE5NzMsIDcxOTc3LCA3MTk4MSwgNzE5ODUsIDcxOTg5LCA3MTk5MywgCisgICAgNzE5OTcsIDcyMDAxLCA3MjAwNSwgNzIwMDksIDcyMDEzLCA3MjAxNywgNzIwMjEsIDcyMDI1LCA3MjAyOSwgNzIwMzMsIAorICAgIDcyMDM3LCA3MjA0MSwgNzIwNDUsIDcyMDQ4LCA3MjA1MSwgNzIwNTUsIDcyMDU5LCA3MjA2MywgNzIwNjYsIDcyMDcwLCAKKyAgICA3MjA3NCwgNzIwNzgsIDcyMDgyLCA3MjA4NiwgNzIwOTAsIDcyMDk0LCA3MjA5OCwgNzIxMDIsIDcyMTA2LCA3MjExMCwgCisgICAgNzIxMTQsIDcyMTE4LCA3MjEyMiwgNzIxMjYsIDcyMTMwLCA3MjEzNCwgNzIxMzgsIDcyMTQyLCA3MjE0NiwgNzIxNTAsIAorICAgIDcyMTU0LCA3MjE1OCwgNzIxNjIsIDcyMTY2LCA3MjE3MCwgNzIxNzQsIDcyMTc4LCA3MjE4MiwgNzIxODYsIDcyMTkwLCAKKyAgICA3MjE5NCwgNzIxOTgsIDcyMjAyLCA3MjIwNiwgNzIyMTAsIDcyMjE0LCA3MjIxOCwgNzIyMjEsIDcyMjI1LCA3MjIyOSwgCisgICAgNzIyMzMsIDcyMjM3LCA3MjI0MSwgNzIyNDUsIDcyMjQ5LCA3MjI1MywgNzIyNTcsIDcyMjYxLCA3MjI2NSwgNzIyNjksIAorICAgIDcyMjczLCA3MjI3NywgNzIyODEsIDcyMjg1LCA3MjI4OSwgNzIyOTMsIDcyMjk3LCA3MjMwMSwgNzIzMDUsIDcyMzA5LCAKKyAgICA3MjMxMywgNzIzMTcsIDcyMzIxLCA3MjMyNSwgNzIzMjksIDcyMzMzLCA3MjMzNywgNzIzNDEsIDcyMzQ1LCA3MjM0OSwgCisgICAgNzIzNTMsIDcyMzU3LCA3MjM2MSwgNzIzNjUsIDcyMzY4LCA3MjM3MiwgNzIzNzYsIDcyMzgwLCA3MjM4NCwgNzIzODgsIAorICAgIDcyMzkyLCA3MjM5NiwgNzI0MDAsIDcyNDA0LCA3MjQwOCwgNzI0MTIsIDcyNDE2LCA3MjQyMCwgNzI0MjQsIDcyNDI4LCAKKyAgICA3MjQzMiwgNzI0MzUsIDcyNDM5LCA3MjQ0MywgNzI0NDcsIDcyNDUxLCA3MjQ1NSwgNzI0NTksIDcyNDYzLCA3MjQ2NywgCisgICAgNzI0NzEsIDcyNDc1LCA3MjQ3OSwgNzI0ODMsIDcyNDg3LCA3MjQ5MSwgNzI0OTUsIDcyNDk5LCA3MjUwMywgNzI1MDcsIAorICAgIDcyNTExLCA3MjUxNSwgNzI1MTksIDcyNTIyLCA3MjUyNiwgNzI1MzAsIDcyNTM0LCA3MjUzOCwgNzI1NDIsIDcyNTQ2LCAKKyAgICA3MjU1MCwgNzI1NTQsIDcyNTU4LCA3MjU2MiwgNzI1NjYsIDcyNTcwLCA3MjU3NCwgNzI1NzgsIDcyNTgyLCA3MjU4NiwgCisgICAgNzI1OTAsIDcyNTk0LCA3MjU5OCwgNzI2MDIsIDcyNjA2LCA3MjYxMCwgNzI2MTQsIDcyNjE4LCA3MjYyMiwgNzI2MjYsIAorICAgIDcyNjMwLCA3MjYzNCwgNzI2MzgsIDcyNjQyLCA3MjY0NiwgNzI2NTAsIDcyNjU0LCA3MjY1OCwgNzI2NjIsIDcyNjY2LCAKKyAgICA3MjY3MCwgNzI2NzQsIDcyNjc4LCA3MjY4MiwgNzI2ODYsIDcyNjkwLCA3MjY5NCwgNzI2OTcsIDcyNzAyLCA3MjcwNiwgCisgICAgNzI3MTIsIDcyNzE3LCA3MjcyMywgNzI3MjcsIDcyNzMxLCA3MjczNSwgNzI3MzksIDcyNzQzLCA3Mjc0NywgNzI3NTEsIAorICAgIDcyNzU1LCA3Mjc1OSwgNzI3NjMsIDcyNzY3LCA3Mjc3MSwgNzI3NzUsIDcyNzc5LCA3Mjc4MiwgNzI3ODUsIDcyNzg4LCAKKyAgICA3Mjc5MSwgNzI3OTQsIDcyNzk3LCA3MjgwMSwgNzI4MDQsIDcyODA4LCA3MjgxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzI4MTksIDcyODI0LCA3MjgyOSwgNzI4MzQsIDcyODM5LCAKKyAgICA3Mjg0NiwgNzI4NTMsIDcyODU4LCA3Mjg2MywgNzI4NjgsIDcyODczLCA3Mjg4MCwgNzI4ODcsIDcyODk0LCA3MjkwMSwgCisgICAgNzI5MDgsIDcyOTE1LCA3MjkyNSwgNzI5MzUsIDcyOTQyLCA3Mjk0OSwgNzI5NTYsIDcyOTYzLCA3Mjk2OSwgNzI5NzUsIAorICAgIDcyOTg0LCA3Mjk5MywgNzMwMDAsIDczMDA3LCA3MzAxOCwgNzMwMjksIDczMDM0LCA3MzAzOSwgNzMwNDYsIDczMDUzLCAKKyAgICA3MzA2MCwgNzMwNjcsIDczMDc0LCA3MzA4MSwgNzMwODgsIDczMDk1LCA3MzEwMSwgNzMxMDcsIDczMTEzLCA3MzExOSwgCisgICAgNzMxMjYsIDczMTMzLCA3MzEzOCwgNzMxNDIsIDczMTQ5LCA3MzE1NiwgNzMxNjMsIDczMTY3LCA3MzE3NCwgNzMxNzgsIAorICAgIDczMTgzLCA3MzE4NywgNzMxOTMsIDczMTk4LCA3MzIwNCwgNzMyMDksIDczMjEzLCA3MzIxNywgNzMyMjAsIDczMjIzLCAKKyAgICA3MzIyOCwgNzMyMzMsIDczMjM4LCA3MzI0MywgNzMyNDgsIDczMjUzLCA3MzI1OCwgNzMyNjMsIDczMjY4LCA3MzI3MywgCisgICAgNzMyODEsIDczMjg5LCA3MzI5NCwgNzMyOTksIDczMzA0LCA3MzMwOSwgNzMzMTQsIDczMzE5LCA3MzMyNCwgNzMzMjksIAorICAgIDczMzM0LCA3MzMzOSwgNzMzNDQsIDczMzQ5LCA3MzM1NCwgNzMzNTksIDczMzY1LCA3MzM3MSwgNzMzNzcsIDczMzgzLCAKKyAgICA3MzM4OCwgNzMzOTQsIDczMzk3LCA3MzQwMCwgNzM0MDMsIDczNDA3LCA3MzQxMSwgNzM0MTUsIDczNDE5LCA3MzQyMiwgCisgICAgNzM0MjYsIDczNDI5LCA3MzQzMywgNzM0MzYsIDczNDQwLCA3MzQ0NCwgNzM0NDgsIDczNDUyLCA3MzQ1NiwgNzM0NjAsIAorICAgIDczNDY0LCA3MzQ2OCwgNzM0NzIsIDczNDc2LCA3MzQ4MCwgNzM0ODQsIDczNDg4LCA3MzQ5MiwgNzM0OTYsIDczNTAwLCAKKyAgICA3MzUwNCwgNzM1MDgsIDczNTEyLCA3MzUxNiwgNzM1MjAsIDczNTI0LCA3MzUyNywgNzM1MzEsIDczNTM1LCA3MzUzOSwgCisgICAgNzM1NDMsIDczNTQ3LCA3MzU1MSwgNzM1NTUsIDczNTU5LCA3MzU2MywgNzM1NjcsIDczNTcxLCA3MzU3NSwgNzM1NzksIAorICAgIDczNTgzLCA3MzU4NywgNzM1OTEsIDczNTk1LCA3MzU5OSwgNzM2MDMsIDczNjA3LCA3MzYxMSwgNzM2MTUsIDczNjE5LCAKKyAgICA3MzYyMywgNzM2MjcsIDczNjMxLCA3MzYzNSwgNzM2MzksIDczNjQzLCA3MzY0NywgNzM2NTEsIDczNjU1LCA3MzY1OCwgCisgICAgNzM2NjIsIDczNjY2LCA3MzY3MCwgNzM2NzQsIDczNjc4LCA3MzY4MiwgNzM2ODYsIDczNjkwLCA3MzY5NCwgNzM2OTgsIAorICAgIDczNzAyLCA3MzcwNiwgNzM3MTEsIDczNzE2LCA3MzcxOSwgNzM3MjQsIDczNzI3LCA3MzczMCwgNzM3MzMsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDczNzM3LCA3Mzc0NiwgNzM3NTUsIDczNzY0LCA3Mzc3MywgNzM3ODIsIDczNzkxLCA3MzgwMCwgCisgICAgNzM4MDksIDczODE3LCA3MzgyNCwgNzM4MzIsIDczODM5LCA3Mzg0NywgNzM4NTcsIDczODY2LCA3Mzg3NiwgNzM4ODUsIAorICAgIDczODk1LCA3MzkwMywgNzM5MTAsIDczOTE4LCA3MzkyNSwgNzM5MzMsIDczOTM4LCA3Mzk0MywgNzM5NDksIDczOTU4LCAKKyAgICA3Mzk2NCwgNzM5NzAsIDczOTc3LCA3Mzk4NiwgNzM5OTQsIDc0MDAyLCA3NDAxMCwgNzQwMTcsIDc0MDI0LCA3NDAzMSwgCisgICAgNzQwMzgsIDc0MDQzLCA3NDA0OCwgNzQwNTMsIDc0MDU4LCA3NDA2MywgNzQwNjgsIDc0MDczLCA3NDA3OCwgNzQwODYsIAorICAgIDc0MDk0LCA3NDEwMCwgNzQxMDUsIDc0MTEwLCA3NDExNSwgNzQxMjAsIDc0MTI1LCA3NDEzMCwgNzQxMzUsIDc0MTQwLCAKKyAgICA3NDE0NSwgNzQxNTQsIDc0MTYzLCA3NDE2OCwgNzQxNzMsIDc0MTgzLCA3NDE5MywgNzQyMDAsIDc0MjA3LCA3NDIxNiwgCisgICAgNzQyMjUsIDc0MjM3LCA3NDI0OSwgNzQyNTUsIDc0MjYxLCA3NDI2OSwgNzQyNzcsIDc0Mjg3LCA3NDI5NywgNzQzMDQsIAorICAgIDc0MzExLCA3NDMxNiwgNzQzMjEsIDc0MzMzLCA3NDM0NSwgNzQzNTMsIDc0MzYxLCA3NDM3MSwgNzQzODEsIDc0MzkzLCAKKyAgICA3NDQwNSwgNzQ0MTQsIDc0NDIzLCA3NDQzMCwgNzQ0MzcsIDc0NDQ0LCA3NDQ1MSwgNzQ0NjAsIDc0NDY5LCA3NDQ3NCwgCisgICAgNzQ0NzksIDc0NDg2LCA3NDQ5MywgNzQ1MDAsIDc0NTA3LCA3NDUxOSwgNzQ1MzEsIDc0NTM2LCA3NDU0MSwgNzQ1NDYsIAorICAgIDc0NTUxLCA3NDU1NiwgNzQ1NjEsIDc0NTY2LCA3NDU3MSwgNzQ1NzUsIDc0NTgwLCA3NDU4NSwgNzQ1OTAsIDc0NTk1LCAKKyAgICA3NDYwMCwgNzQ2MDYsIDc0NjExLCA3NDYxNiwgNzQ2MjMsIDc0NjMwLCA3NDYzNywgNzQ2NDQsIDc0NjUxLCA3NDY2MCwgCisgICAgNzQ2NjksIDc0Njc1LCA3NDY4MSwgNzQ2ODcsIDc0NjkzLCA3NDY5OSwgNzQ3MDUsIDc0NzEyLCA3NDcxOSwgNzQ3MjYsIAorICAgIDc0NzMwLCA3NDczNywgNzQ3NDIsIDc0NzQ3LCA3NDc1NCwgNzQ3NjcsIDc0NzczLCA3NDc4MSwgNzQ3ODksIDc0Nzk2LCAKKyAgICA3NDgwMywgNzQ4MTIsIDc0ODIxLCA3NDgyOCwgNzQ4MzUsIDc0ODQyLCA3NDg0OSwgNzQ4NTYsIDc0ODYzLCA3NDg3MCwgCisgICAgNzQ4NzcsIDc0ODg0LCA3NDg5MSwgNzQ5MDAsIDc0OTA5LCA3NDkxOCwgNzQ5MjcsIDc0OTM2LCA3NDk0NSwgNzQ5NTQsIAorICAgIDc0OTYzLCA3NDk3MiwgNzQ5ODEsIDc0OTg4LCA3NDk5NSwgNzUwMDEsIDAsIDAsIDc1MDA5LCA3NTAxNiwgNzUwMjMsIAorICAgIDc1MDMxLCA3NTAzNiwgNzUwNDEsIDc1MDQ2LCA3NTA1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAzNzMsIDMwMzc5LCAKLSAgICAzMDM4NSwgMzAzODksIDMwMzkzLCAzMDM5NywgMzA0MDEsIDMwNDA3LCAzMDQxMSwgMzA0MTcsIDMwNDIxLCAzMDQyNywgCi0gICAgMzA0MzMsIDMwNDQxLCAzMDQ0NywgMzA0NTUsIDMwNDU5LCAzMDQ2MywgMzA0NjcsIDMwNDczLCAzMDQ3NiwgMzA0ODIsIAotICAgIDMwNDg2LCAzMDQ5MiwgMzA0OTYsIDMwNTAwLCAzMDUwNiwgMzA1MTAsIDMwNTE2LCAzMDUyMCwgMzA1MjYsIDMwNTM0LCAKLSAgICAzMDU0MiwgMzA1NTAsIDMwNTU2LCAzMDU2MCwgMzA1NjYsIDMwNTcwLCAzMDU3NiwgMzA1NzksIDMwNTgyLCAzMDU4OCwgCi0gICAgMzA1OTIsIDMwNTk4LCAzMDYwMSwgMzA2MDQsIDMwNjA3LCAzMDYxMSwgMzA2MTUsIDMwNjIxLCAzMDYyNywgMzA2MzAsIAotICAgIDMwNjMzLCAzMDYzNywgMzA2NDIsIDMwNjQ3LCAzMDY1NCwgMzA2NTksIDMwNjY2LCAzMDY3MywgMzA2ODIsIDMwNjg5LCAKLSAgICAzMDY5OCwgMzA3MDMsIDMwNzEwLCAzMDcxNywgMzA3MjYsIDMwNzMxLCAzMDczOCwgMzA3NDMsIDMwNzQ5LCAzMDc1NSwgCi0gICAgMzA3NjEsIDMwNzY3LCAzMDc3MywgMzA3NzksIDAsIDAsIDAsIDAsIDMwNzg1LCAzMDc4OSwgMzA3OTIsIDMwNzk1LCAKLSAgICAzMDc5OCwgMzA4MDEsIDMwODA0LCAzMDgwNywgMzA4MTAsIDMwODEzLCAzMDgxNiwgMzA4MTksIDMwODIyLCAzMDgyNSwgCi0gICAgMzA4MzAsIDMwODM1LCAzMDg0MCwgMzA4NDMsIDMwODQ4LCAzMDg1MywgMzA4NTgsIDMwODYzLCAzMDg3MCwgMzA4NzUsIAotICAgIDMwODgwLCAzMDg4NSwgMzA4OTAsIDMwODk3LCAzMDkwMywgMzA5MDksIDMwOTE1LCAzMDkyMSwgMzA5MjcsIDMwOTM2LCAKLSAgICAzMDk0NSwgMzA5NTEsIDMwOTU3LCAzMDk2NSwgMzA5NzMsIDMwOTgyLCAzMDk5MSwgMzA5OTksIDMxMDA3LCAzMTAxNiwgCi0gICAgMzEwMjUsIDAsIDAsIDAsIDMxMDMzLCAzMTAzNywgMzEwNDEsIDMxMDQ1LCAzMTA0OCwgMzEwNTEsIDMxMDU0LCAzMTA1OCwgCi0gICAgMzEwNjEsIDMxMDY0LCAzMTA2OCwgMzEwNzEsIDMxMDc1LCAzMTA3OSwgMzEwODMsIDMxMDg3LCAzMTA5MSwgMzEwOTUsIAotICAgIDMxMDk5LCAzMTEwMywgMzExMDcsIDMxMTEwLCAzMTExMywgMzExMTcsIDMxMTIxLCAzMTEyNSwgMzExMjgsIDMxMTMxLCAKLSAgICAzMTEzNCwgMzExMzgsIDMxMTQyLCAzMTE0NSwgMzExNDksIDMxMTUyLCAzMTE1NywgMzExNjIsIDMxMTY3LCAzMTE3MiwgCi0gICAgMzExNzcsIDMxMTgyLCAzMTE4NywgMzExOTIsIDMxMTk3LCAzMTIwMSwgMzEyMDUsIDMxMjExLCAzMTIxOCwgMzEyMjIsIAotICAgIDMxMjI2LCAzMTIzMCwgMzEyMzMsIDMxMjM2LCAzMTIzOSwgMzEyNDIsIDMxMjQ1LCAzMTI0OCwgMzEyNTEsIDMxMjU0LCAKLSAgICAzMTI1NywgMzEyNjAsIDMxMjY0LCAzMTI2OCwgMzEyNzIsIDMxMjc3LCAzMTI4MSwgMzEyODUsIDMxMjkxLCAzMTI5NSwgCi0gICAgMzEzMDEsIDMxMzA3LCAzMTMxMiwgMzEzMTksIDMxMzIzLCAzMTMyOSwgMzEzMzMsIDMxMzM5LCAzMTM0NCwgMzEzNTEsIAotICAgIDMxMzU4LCAzMTM2MywgMzEzNzAsIDMxMzc1LCAzMTM4MCwgMzEzODQsIDMxMzkwLCAzMTM5NCwgMzE0MDAsIDMxNDA3LCAKLSAgICAzMTQxNCwgMzE0MTgsIDMxNDI0LCAzMTQzMCwgMzE0MzQsIDMxNDQwLCAzMTQ0NSwgMzE0NTAsIDMxNDU3LCAzMTQ2MiwgCi0gICAgMzE0NjcsIDMxNDcyLCAzMTQ3NywgMzE0ODEsIDMxNDg1LCAzMTQ5MCwgMzE0OTUsIDMxNTAyLCAzMTUwOCwgMzE1MTMsIAotICAgIDMxNTIwLCAzMTUyNSwgMzE1MzIsIDMxNTM3LCAzMTU0NiwgMzE1NTIsIDMxNTU4LCAzMTU2MiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMzE1NjYsIDMxNTc1LCAzMTU4MiwgMzE1ODksIDMxNTk2LCAzMTU5OSwgMzE2MDMsIDMxNjA3LCAzMTYxMSwgCi0gICAgMzE2MTUsIDMxNjE5LCAzMTYyMywgMzE2MjcsIDMxNjMxLCAzMTYzNSwgMzE2MzksIDMxNjQzLCAzMTY0NywgMzE2NTAsIAotICAgIDMxNjUzLCAzMTY1NywgMzE2NjEsIDMxNjY1LCAzMTY2OSwgMzE2NzMsIDMxNjc3LCAzMTY4MCwgMzE2ODQsIDMxNjg4LCAKLSAgICAzMTY5MiwgMzE2OTYsIDMxNjk5LCAzMTcwMiwgMzE3MDYsIDMxNzA5LCAzMTcxMywgMzE3MTcsIDMxNzIwLCAzMTcyNCwgCi0gICAgMzE3MjgsIDMxNzMxLCAzMTczNiwgMzE3NDEsIDMxNzQ2LCAzMTc1MCwgMzE3NTQsIDMxNzU5LCAzMTc2MywgMzE3NjgsIAotICAgIDMxNzcyLCAzMTc3NywgMzE3ODEsIDMxNzg1LCAzMTc5MCwgMzE3OTUsIDMxNzk5LCAzMTgwNCwgMzE4MDksIDMxODE0LCAKLSAgICAzMTgxOCwgMCwgMCwgMCwgMzE4MjIsIDMxODI3LCAzMTgzNiwgMzE4NDEsIDMxODQ4LCAzMTg1MywgMzE4NTcsIDMxODYwLCAKLSAgICAzMTg2MywgMzE4NjYsIDMxODY5LCAzMTg3MiwgMzE4NzUsIDMxODc4LCAzMTg4MSwgMCwgMCwgMCwgMzE4ODQsIDMxODg4LCAKLSAgICAzMTg5MiwgMzE4OTYsIDMxOTAzLCAzMTkwOSwgMzE5MTUsIDMxOTIxLCAzMTkyNywgMzE5MzMsIDMxOTM5LCAzMTk0NSwgCi0gICAgMzE5NTEsIDMxOTU3LCAzMTk2NCwgMzE5NzEsIDMxOTc4LCAzMTk4NSwgMzE5OTIsIDMxOTk5LCAzMjAwNiwgMzIwMTMsIAotICAgIDMyMDIwLCAzMjAyNywgMzIwMzQsIDMyMDQxLCAzMjA0OCwgMzIwNTUsIDMyMDYyLCAzMjA2OSwgMzIwNzYsIDMyMDgzLCAKLSAgICAzMjA5MCwgMzIwOTcsIDMyMTA0LCAzMjExMSwgMzIxMTgsIDMyMTI1LCAzMjEzMiwgMzIxMzksIDMyMTQ2LCAzMjE1MywgCi0gICAgMzIxNjAsIDMyMTY3LCAzMjE3NSwgMzIxODMsIDMyMTkxLCAzMjE5NywgMzIyMDMsIDMyMjA5LCAzMjIxNywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIyMjYsIDMyMjMzLCAzMjI0MCwgMzIyNDcsIDMyMjU0LCAKLSAgICAzMjI2MywgMzIyNzIsIDMyMjgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjI5MCwgMzIyOTUsIDMyMzAwLCAzMjMwNSwgCi0gICAgMzIzMTAsIDMyMzE5LCAzMjMzMCwgMzIzMzksIDMyMzUwLCAzMjM1NiwgMzIzNjksIDMyMzc1LCAzMjM4MiwgMzIzODksIAotICAgIDMyMzk0LCAzMjQwMCwgMzI0MDYsIDMyNDE3LCAzMjQyNiwgMzI0MzMsIDMyNDQwLCAzMjQ0OSwgMzI0NTYsIDMyNDY1LCAKLSAgICAzMjQ3NSwgMzI0ODUsIDMyNDkyLCAzMjQ5OSwgMzI1MDYsIDMyNTE2LCAzMjUyMSwgMzI1MjksIDMyNTM1LCAzMjU0MywgCi0gICAgMzI1NTIsIDMyNTU3LCAzMjU2NCwgMzI1NzAsIDMyNTc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjU4MCwgCi0gICAgMzI1ODUsIDMyNTkxLCAzMjU5OCwgMzI2MDYsIDMyNjEyLCAzMjYxOCwgMzI2MjQsIDMyNjI5LCAzMjYzNiwgMzI2NDIsIAotICAgIDMyNjQ4LCAzMjY1NCwgMzI2NjIsIDMyNjY3LCAzMjY3NSwgMzI2ODAsIDMyNjg2LCAzMjY5MiwgMzI2OTksIDMyNzA3LCAKLSAgICAzMjcxNCwgMzI3MjAsIDMyNzI3LCAzMjczNCwgMzI3NDAsIDMyNzQ3LCAzMjc1NCwgMzI3NjAsIDMyNzY1LCAzMjc3MSwgCi0gICAgMzI3NzksIDMyNzg3LCAzMjc5MywgMzI3OTksIDMyODA1LCAzMjgxMSwgMzI4MTksIDMyODIzLCAzMjgyOSwgMzI4MzUsIAotICAgIDMyODQxLCAzMjg0NywgMzI4NTMsIDMyODU5LCAzMjg2MywgMzI4NjgsIDMyODczLCAzMjg4MCwgMzI4ODUsIDMyODg5LCAKLSAgICAzMjg5NSwgMzI5MDAsIDMyOTA1LCAzMjkwOSwgMzI5MTQsIDMyOTE5LCAzMjkyMywgMzI5MjcsIDMyOTMyLCAzMjkzOSwgCi0gICAgMzI5NDMsIDMyOTQ4LCAzMjk1MywgMzI5NTcsIDMyOTYyLCAzMjk2NiwgMzI5NzEsIDMyOTc1LCAzMjk4MSwgMzI5ODYsIAotICAgIDMyOTkzLCAzMjk5OCwgMzMwMDMsIDMzMDA3LCAzMzAxMiwgMzMwMTcsIDMzMDI0LCAzMzAyOSwgMzMwMzUsIDMzMDQwLCAKLSAgICAzMzA0NCwgMzMwNDksIDMzMDUzLCAzMzA1OCwgMzMwNjUsIDMzMDcyLCAzMzA3NywgMzMwODIsIDMzMDg2LCAzMzA5MiwgCi0gICAgMzMwOTgsIDMzMTAzLCAzMzEwOCwgMzMxMTMsIDMzMTE5LCAzMzEyNCwgMzMxMzAsIDMzMTM1LCAzMzE0MSwgMzMxNDcsIAotICAgIDMzMTUzLCAzMzE2MCwgMzMxNjcsIDMzMTc0LCAzMzE4MSwgMzMxODgsIDMzMTk1LCAzMzIwMCwgMzMyMDgsIDMzMjE3LCAKLSAgICAzMzIyNiwgMzMyMzUsIDMzMjQ0LCAzMzI1MywgMzMyNjIsIDMzMjc0LCAzMzI4MywgMzMyOTIsIDMzMzAxLCAzMzMwOCwgCi0gICAgMzMzMTMsIDMzMzIwLCAzMzMyOCwgMzMzMzYsIDMzMzQzLCAzMzM1MCwgMzMzNTcsIDMzMzY0LCAzMzM3MiwgMzMzODEsIAotICAgIDMzMzkwLCAzMzM5OSwgMzM0MDgsIDMzNDE3LCAzMzQyNiwgMzM0MzUsIDMzNDQ0LCAzMzQ1MywgMzM0NjIsIDMzNDcxLCAKLSAgICAzMzQ4MCwgMzM0ODksIDMzNDk4LCAzMzUwNiwgMzM1MTUsIDMzNTI2LCAzMzUzNCwgMzM1NDMsIDMzNTU0LCAzMzU2MywgCi0gICAgMzM1NzIsIDMzNTgxLCAzMzU5MCwgMzM1OTgsIDMzNjA3LCAzMzYxNCwgMzM2MTksIDMzNjI3LCAzMzYzMiwgMzM2MzksIAotICAgIDMzNjQ0LCAzMzY1MywgMzM2NTksIDMzNjY2LCAzMzY3MywgMzM2NzgsIDMzNjgzLCAzMzY5MSwgMzM2OTksIDMzNzA4LCAKLSAgICAzMzcxNywgMzM3MjIsIDMzNzI5LCAzMzc0MCwgMzM3NDgsIDMzNzU3LCAzMzc2MywgMzM3NjksIDMzNzc0LCAzMzc4MSwgCi0gICAgMzM3ODYsIDMzNzk1LCAzMzgwMCwgMzM4MDUsIDMzODEwLCAzMzgxNywgMzM4MjQsIDMzODI5LCAzMzgzOCwgMzM4NDYsIAotICAgIDMzODUxLCAzMzg1NiwgMzM4NjMsIDMzODcwLCAzMzg3NCwgMzM4NzgsIDMzODgxLCAzMzg4NCwgMzM4ODcsIDMzODkwLCAKLSAgICAzMzg5MywgMzM4OTYsIDMzOTAzLCAzMzkwNiwgMzM5MDksIDMzOTE0LCAzMzkxOCwgMzM5MjIsIDMzOTI2LCAzMzkzMCwgCi0gICAgMzM5MzQsIDMzOTQzLCAzMzk0OSwgMzM5NTUsIDMzOTYxLCAzMzk2OSwgMzM5NzcsIDMzOTgzLCAzMzk4OSwgMzM5OTYsIAotICAgIDM0MDAyLCAzNDAwNywgMzQwMTMsIDM0MDE5LCAzNDAyNSwgMzQwMzIsIDM0MDM4LCAzNDA0NiwgMzQwNTIsIDM0MDU5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDA2NSwgMzQwNzIsIAotICAgIDM0MDc5LCAzNDA4NCwgMzQwOTMsIDM0MTAxLCAzNDEwOSwgMzQxMTYsIDM0MTIzLCAzNDEzMCwgMzQxMzcsIDM0MTQ1LCAKLSAgICAzNDE1MywgMzQxNjMsIDM0MTczLCAzNDE4MSwgMzQxODksIDM0MTk3LCAzNDIwNSwgMzQyMTQsIDM0MjIzLCAzNDIzMSwgCi0gICAgMzQyMzksIDM0MjQ4LCAzNDI1NywgMzQyNjcsIDM0Mjc3LCAzNDI4NiwgMzQyOTUsIDM0MzAzLCAzNDMxMSwgMzQzMTksIAotICAgIDM0MzI3LCAzNDMzNywgMzQzNDcsIDM0MzU1LCAzNDM2MywgMzQzNzEsIDM0Mzc5LCAzNDM4NywgMzQzOTUsIDM0NDAzLCAKLSAgICAzNDQxMSwgMzQ0MTksIDM0NDI3LCAzNDQzNSwgMzQ0NDMsIDM0NDUyLCAzNDQ2MSwgMzQ0NzAsIDM0NDc5LCAzNDQ4OSwgCi0gICAgMzQ0OTksIDM0NTA2LCAzNDUxMywgMzQ1MjEsIDM0NTI5LCAzNDUzOCwgMzQ1NDcsIDM0NTU1LCAzNDU2MywgMzQ1NzUsIAotICAgIDM0NTg3LCAzNDU5NiwgMzQ2MDUsIDM0NjE0LCAzNDYyMywgMzQ2MzAsIDM0NjM3LCAzNDY0NSwgMzQ2NTMsIDM0NjYxLCAKLSAgICAzNDY2OSwgMzQ2NzcsIDM0Njg1LCAzNDY5MywgMzQ3MDEsIDM0NzEwLCAzNDcxOSwgMzQ3MjgsIDM0NzM3LCAzNDc0NiwgCi0gICAgMzQ3NTUsIDM0NzY1LCAzNDc3NSwgMzQ3ODUsIDM0Nzk1LCAzNDgwNCwgMzQ4MTMsIDM0ODIwLCAzNDgyNywgMzQ4MzUsIAotICAgIDM0ODQzLCAzNDg1MSwgMzQ4NTksIDM0ODY3LCAzNDg3NSwgMzQ4ODcsIDM0ODk5LCAzNDkwOCwgMzQ5MTcsIDM0OTI1LCAKLSAgICAzNDkzMywgMzQ5NDEsIDM0OTQ5LCAzNDk2MCwgMzQ5NzEsIDM0OTgyLCAzNDk5MywgMzUwMDUsIDM1MDE3LCAzNTAyNSwgCi0gICAgMzUwMzMsIDM1MDQxLCAzNTA0OSwgMzUwNTgsIDM1MDY3LCAzNTA3NiwgMzUwODUsIDM1MDkzLCAzNTEwMSwgMzUxMDksIAotICAgIDM1MTE3LCAzNTEyNSwgMzUxMzMsIDM1MTQyLCAzNTE1MSwgMzUxNjEsIDM1MTcxLCAzNTE3OCwgMzUxODUsIDM1MTkzLCAKLSAgICAzNTIwMSwgMzUyMDksIDM1MjE3LCAzNTIyNCwgMzUyMzEsIDM1MjM5LCAzNTI0NywgMzUyNTUsIDM1MjYzLCAzNTI3MSwgCi0gICAgMzUyNzksIDM1Mjg3LCAzNTI5NSwgMzUzMDMsIDM1MzExLCAzNTMxOSwgMzUzMjcsIDM1MzM1LCAzNTM0MywgMzUzNTEsIAotICAgIDM1MzU5LCAzNTM2OCwgMzUzNzcsIDM1Mzg2LCAzNTM5NCwgMzU0MDMsIDM1NDEyLCAzNTQyMSwgMzU0MzAsIDM1NDQwLCAKLSAgICAzNTQ0OSwgMzU0NTYsIDM1NDYxLCAzNTQ2OCwgMzU0NzUsIDM1NDgzLCAzNTQ5MSwgMzU1MDAsIDM1NTA5LCAzNTUxOSwgCi0gICAgMzU1MjksIDM1NTQwLCAzNTU1MSwgMzU1NjAsIDM1NTY5LCAzNTU3OSwgMzU1ODksIDM1NTk4LCAzNTYwNywgMzU2MTcsIAotICAgIDM1NjI3LCAzNTYzOCwgMzU2NDksIDM1NjU4LCAzNTY2NywgMzU2NzcsIDM1Njg3LCAzNTY5NCwgMzU3MDEsIDM1NzA5LCAKLSAgICAzNTcxNywgMzU3MjMsIDM1NzI5LCAzNTczOCwgMzU3NDcsIDM1NzU3LCAzNTc2NywgMzU3NzgsIDM1Nzg5LCAzNTc5OCwgCi0gICAgMzU4MDcsIDM1ODE3LCAzNTgyNywgMzU4MzYsIDM1ODQ1LCAzNTg1MywgMzU4NjEsIDM1ODY4LCAzNTg3NSwgMzU4ODMsIAotICAgIDM1ODkxLCAzNTkwMCwgMzU5MDksIDM1OTE5LCAzNTkyOSwgMzU5NDAsIDM1OTUxLCAzNTk2MCwgMzU5NjksIDM1OTc5LCAKLSAgICAzNTk4OSwgMzU5OTgsIDM2MDA3LCAzNjAxNywgMzYwMjcsIDM2MDM4LCAzNjA0OSwgMzYwNTgsIDM2MDY3LCAzNjA3NywgCi0gICAgMzYwODcsIDM2MDk0LCAzNjEwMSwgMzYxMDksIDM2MTE3LCAzNjEyNiwgMzYxMzUsIDM2MTQ1LCAzNjE1NSwgMzYxNjYsIAotICAgIDM2MTc3LCAzNjE4NiwgMzYxOTUsIDM2MjA1LCAzNjIxNSwgMzYyMjMsIDM2MjMxLCAzNjIzOSwgMzYyNDcsIDM2MjU2LCAKLSAgICAzNjI2NSwgMzYyNzIsIDM2Mjc5LCAzNjI4NiwgMzYyOTMsIDM2MzAwLCAzNjMwNywgMzYzMTUsIDM2MzIzLCAzNjMzMSwgCi0gICAgMzYzMzksIDM2MzUwLCAzNjM2MSwgMzYzNzIsIDM2MzgzLCAzNjM5NCwgMzY0MDUsIDM2NDEzLCAzNjQyMSwgMzY0MzIsIAotICAgIDM2NDQzLCAzNjQ1NCwgMzY0NjUsIDM2NDc2LCAzNjQ4NywgMzY0OTUsIDM2NTAzLCAzNjUxNCwgMzY1MjUsIDM2NTM2LCAwLCAKLSAgICAwLCAzNjU0NywgMzY1NTUsIDM2NTYzLCAzNjU3NCwgMzY1ODUsIDM2NTk2LCAwLCAwLCAzNjYwNywgMzY2MTUsIDM2NjIzLCAKLSAgICAzNjYzNCwgMzY2NDUsIDM2NjU2LCAzNjY2NywgMzY2NzgsIDM2Njg5LCAzNjY5NywgMzY3MDUsIDM2NzE2LCAzNjcyNywgCi0gICAgMzY3MzgsIDM2NzQ5LCAzNjc2MCwgMzY3NzEsIDM2Nzc5LCAzNjc4NywgMzY3OTgsIDM2ODA5LCAzNjgyMCwgMzY4MzEsIAotICAgIDM2ODQyLCAzNjg1MywgMzY4NjEsIDM2ODY5LCAzNjg4MCwgMzY4OTEsIDM2OTAyLCAzNjkxMywgMzY5MjQsIDM2OTM1LCAKLSAgICAzNjk0MywgMzY5NTEsIDM2OTYyLCAzNjk3MywgMzY5ODQsIDAsIDAsIDM2OTk1LCAzNzAwMywgMzcwMTEsIDM3MDIyLCAKLSAgICAzNzAzMywgMzcwNDQsIDAsIDAsIDM3MDU1LCAzNzA2MywgMzcwNzEsIDM3MDgyLCAzNzA5MywgMzcxMDQsIDM3MTE1LCAKLSAgICAzNzEyNiwgMCwgMzcxMzcsIDAsIDM3MTQ1LCAwLCAzNzE1NiwgMCwgMzcxNjcsIDM3MTc4LCAzNzE4NiwgMzcxOTQsIAotICAgIDM3MjA1LCAzNzIxNiwgMzcyMjcsIDM3MjM4LCAzNzI0OSwgMzcyNjAsIDM3MjY4LCAzNzI3NiwgMzcyODcsIDM3Mjk4LCAKLSAgICAzNzMwOSwgMzczMjAsIDM3MzMxLCAzNzM0MiwgMzczNTAsIDM3MzU4LCAzNzM2NiwgMzczNzQsIDM3MzgyLCAzNzM5MCwgCi0gICAgMzczOTgsIDM3NDA2LCAzNzQxNCwgMzc0MjIsIDM3NDMwLCAzNzQzOCwgMzc0NDYsIDAsIDAsIDM3NDU0LCAzNzQ2NSwgCi0gICAgMzc0NzYsIDM3NDkwLCAzNzUwNCwgMzc1MTgsIDM3NTMyLCAzNzU0NiwgMzc1NjAsIDM3NTcxLCAzNzU4MiwgMzc1OTYsIAotICAgIDM3NjEwLCAzNzYyNCwgMzc2MzgsIDM3NjUyLCAzNzY2NiwgMzc2NzcsIDM3Njg4LCAzNzcwMiwgMzc3MTYsIDM3NzMwLCAKLSAgICAzNzc0NCwgMzc3NTgsIDM3NzcyLCAzNzc4MywgMzc3OTQsIDM3ODA4LCAzNzgyMiwgMzc4MzYsIDM3ODUwLCAzNzg2NCwgCi0gICAgMzc4NzgsIDM3ODg5LCAzNzkwMCwgMzc5MTQsIDM3OTI4LCAzNzk0MiwgMzc5NTYsIDM3OTcwLCAzNzk4NCwgMzc5OTUsIAotICAgIDM4MDA2LCAzODAyMCwgMzgwMzQsIDM4MDQ4LCAzODA2MiwgMzgwNzYsIDM4MDkwLCAzODA5OCwgMzgxMDYsIDM4MTE3LCAKLSAgICAzODEyNSwgMCwgMzgxMzYsIDM4MTQ0LCAzODE1NSwgMzgxNjMsIDM4MTcxLCAzODE3OSwgMzgxODcsIDM4MTk1LCAzODE5OCwgCi0gICAgMzgyMDEsIDM4MjA0LCAzODIwNywgMzgyMTMsIDM4MjI0LCAzODIzMiwgMCwgMzgyNDMsIDM4MjUxLCAzODI2MiwgMzgyNzAsIAotICAgIDM4Mjc4LCAzODI4NiwgMzgyOTQsIDM4MzAyLCAzODMwOCwgMzgzMTQsIDM4MzIwLCAzODMyOCwgMzgzMzYsIDM4MzQ3LCAwLCAKLSAgICAwLCAzODM1OCwgMzgzNjYsIDM4Mzc3LCAzODM4NSwgMzgzOTMsIDM4NDAxLCAwLCAzODQwOSwgMzg0MTUsIDM4NDIxLCAKLSAgICAzODQyNywgMzg0MzUsIDM4NDQzLCAzODQ1NCwgMzg0NjUsIDM4NDczLCAzODQ4MSwgMzg0ODksIDM4NTAwLCAzODUwOCwgCi0gICAgMzg1MTYsIDM4NTI0LCAzODUzMiwgMzg1NDAsIDM4NTQ2LCAzODU1MiwgMCwgMCwgMzg1NTUsIDM4NTY2LCAzODU3NCwgMCwgCi0gICAgMzg1ODUsIDM4NTkzLCAzODYwNCwgMzg2MTIsIDM4NjIwLCAzODYyOCwgMzg2MzYsIDM4NjQ0LCAzODY0NywgMCwgMzg2NTAsIAotICAgIDM4NjU0LCAzODY1OCwgMzg2NjIsIDM4NjY2LCAzODY3MCwgMzg2NzQsIDM4Njc4LCAzODY4MiwgMzg2ODYsIDM4NjkwLCAKLSAgICAzODY5NCwgMzg3MDAsIDM4NzA2LCAzODcxMiwgMzg3MTUsIDM4NzE4LCAzODcyMCwgMzg3MjQsIDM4NzI4LCAzODczMiwgCi0gICAgMzg3MzYsIDM4NzM4LCAzODc0MiwgMzg3NDYsIDM4NzUyLCAzODc1OCwgMzg3NjUsIDM4NzcyLCAzODc3NywgMzg3ODIsIAotICAgIDM4Nzg4LCAzODc5NCwgMzg3OTYsIDM4Nzk5LCAzODgwMSwgMzg4MDUsIDM4ODA5LCAzODgxMywgMzg4MTYsIDM4ODIwLCAKLSAgICAzODgyNCwgMzg4MjgsIDM4ODMyLCAzODgzNiwgMzg4NDIsIDM4ODQ2LCAzODg1MCwgMzg4NTYsIDM4ODYxLCAzODg2OCwgCi0gICAgMzg4NzAsIDM4ODczLCAzODg3NywgMzg4ODEsIDM4ODg2LCAzODg5MiwgMzg4OTQsIDM4OTAzLCAzODkxMiwgMzg5MTUsIAotICAgIDM4OTE5LCAzODkyMSwgMzg5MjMsIDM4OTI1LCAzODkyOCwgMzg5MzQsIDM4OTM2LCAzODk0MCwgMzg5NDQsIDM4OTUxLCAKLSAgICAzODk1OCwgMzg5NjIsIDM4OTY3LCAzODk3MiwgMzg5NzcsIDM4OTgyLCAzODk4NiwgMzg5OTAsIDM4OTkzLCAzODk5NywgCi0gICAgMzkwMDEsIDM5MDA4LCAzOTAxMywgMzkwMTcsIDM5MDIxLCAzOTAyNiwgMzkwMzAsIDM5MDM0LCAzOTAzOSwgMzkwNDQsIAotICAgIDM5MDQ4LCAzOTA1MiwgMzkwNTYsIDM5MDU4LCAzOTA2MywgMzkwNjgsIDM5MDcyLCAzOTA3NiwgMzkwODAsIDM5MDg0LCAwLCAKLSAgICAzOTA4OCwgMzkwOTIsIDM5MDk2LCAzOTEwMiwgMzkxMDgsIDM5MTE0LCAzOTEyMCwgMzkxMjcsIDM5MTM0LCAzOTEzOSwgCi0gICAgMzkxNDQsIDM5MTQ4LCAwLCAwLCAzOTE1NCwgMzkxNTcsIDM5MTYwLCAzOTE2MywgMzkxNjYsIDM5MTY5LCAzOTE3MiwgCi0gICAgMzkxNzYsIDM5MTgwLCAzOTE4NSwgMzkxOTAsIDM5MTk1LCAzOTIwMiwgMzkyMDYsIDM5MjA5LCAzOTIxMiwgMzkyMTUsIAotICAgIDM5MjE4LCAzOTIyMSwgMzkyMjQsIDM5MjI3LCAzOTIzMCwgMzkyMzMsIDM5MjM3LCAzOTI0MSwgMzkyNDYsIDM5MjUxLCAwLCAKLSAgICAzOTI1NiwgMzkyNjIsIDM5MjY4LCAzOTI3NCwgMzkyODEsIDM5Mjg4LCAzOTI5NSwgMzkzMDIsIDM5MzA4LCAzOTMxNCwgCi0gICAgMzkzMjEsIDM5MzI4LCAzOTMzNSwgMCwgMCwgMCwgMzkzNDIsIDM5MzQ1LCAzOTM0OCwgMzkzNTEsIDM5MzU2LCAzOTM1OSwgCi0gICAgMzkzNjIsIDM5MzY1LCAzOTM2OCwgMzkzNzEsIDM5Mzc0LCAzOTM3OCwgMzkzODEsIDM5Mzg0LCAzOTM4NywgMzkzOTAsIAotICAgIDM5MzkzLCAzOTM5OCwgMzk0MDEsIDM5NDA0LCAzOTQwNywgMzk0MTAsIDM5NDEzLCAzOTQxOCwgMzk0MjEsIDM5NDI0LCAKLSAgICAzOTQyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzk0MzQsIDM5NDM5LCAzOTQ0NCwgMzk0NTEsIDM5NDU5LCAzOTQ2NCwgMzk0NjksIDM5NDczLCAzOTQ3NywgMzk0ODIsIAotICAgIDM5NDg5LCAzOTQ5NiwgMzk1MDAsIDM5NTA1LCAzOTUxMCwgMzk1MTUsIDM5NTIwLCAzOTUyNywgMzk1MzIsIDM5NTM3LCAKLSAgICAzOTU0MiwgMzk1NTEsIDM5NTU4LCAzOTU2NSwgMzk1NjksIDM5NTc0LCAzOTU4MCwgMzk1ODUsIDM5NTkyLCAzOTYwMSwgCi0gICAgMzk2MTAsIDM5NjE0LCAzOTYxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk2MjIsIAotICAgIDM5NjI2LCAzOTYzNCwgMzk2MzgsIDM5NjQyLCAzOTY0NywgMzk2NTEsIDM5NjU1LCAzOTY1OSwgMzk2NjEsIDM5NjY1LCAKLSAgICAzOTY2OSwgMzk2NzMsIDM5Njc4LCAzOTY4MiwgMzk2ODYsIDM5Njk0LCAzOTY5NywgMzk3MDEsIDM5NzA0LCAzOTcwNywgCi0gICAgMzk3MTMsIDM5NzE3LCAzOTcyMCwgMzk3MjYsIDM5NzMwLCAzOTczNCwgMzk3MzgsIDM5NzQxLCAzOTc0NSwgMzk3NDgsIAotICAgIDM5NzUyLCAzOTc1NCwgMzk3NTcsIDM5NzYwLCAzOTc2NCwgMzk3NjYsIDM5NzcwLCAzOTc3MywgMzk3NzYsIDM5NzgxLCAKLSAgICAzOTc4NiwgMzk3OTMsIDM5Nzk2LCAzOTc5OSwgMzk4MDMsIDM5ODA4LCAzOTgxMSwgMzk4MTQsIDM5ODE3LCAzOTgyMSwgCi0gICAgMzk4MjYsIDM5ODI5LCAzOTgzMiwgMzk4MzQsIDM5ODM3LCAzOTg0MCwgMzk4NDMsIDM5ODQ3LCAzOTg1MiwgMzk4NTUsIAotICAgIDM5ODU5LCAzOTg2MywgMzk4NjcsIDM5ODcxLCAzOTg3NiwgMzk4ODIsIDM5ODg3LCAzOTg5MiwgMzk4OTgsIDM5OTAzLCAKLSAgICAzOTkwOCwgMzk5MTIsIDM5OTE2LCAzOTkyMSwgMzk5MjUsIDM5OTI5LCAzOTkzMiwgMzk5MzQsIDM5OTM5LCAzOTk0NSwgCi0gICAgMzk5NTIsIDM5OTU5LCAzOTk2NiwgMzk5NzMsIDM5OTgwLCAzOTk4NywgMzk5OTQsIDQwMDAxLCA0MDAwOSwgNDAwMTYsIAotICAgIDQwMDI0LCA0MDAzMSwgNDAwMzgsIDQwMDQ2LCA0MDA1NCwgNDAwNTksIDQwMDY0LCA0MDA2OSwgNDAwNzQsIDQwMDc5LCAKLSAgICA0MDA4NCwgNDAwODksIDQwMDk0LCA0MDA5OSwgNDAxMDQsIDQwMTEwLCA0MDExNiwgNDAxMjIsIDQwMTI4LCA0MDEzNSwgCi0gICAgNDAxNDMsIDQwMTUwLCA0MDE1NiwgNDAxNjIsIDQwMTY4LCA0MDE3NCwgNDAxODAsIDQwMTg2LCA0MDE5MiwgNDAxOTgsIAotICAgIDQwMjA0LCA0MDIxMSwgNDAyMTgsIDQwMjI1LCA0MDIzMiwgNDAyNDAsIDQwMjQ5LCA0MDI1NywgNDAyNjgsIDQwMjc2LCAKLSAgICA0MDI4NCwgNDAyOTMsIDQwMzAwLCA0MDMwOSwgNDAzMTgsIDQwMzI2LCA0MDMzNSwgMCwgMCwgMCwgMCwgMCwgMCwgNDAzNDMsIAotICAgIDQwMzQ1LCA0MDM0OCwgNDAzNTAsIDQwMzUzLCA0MDM1NiwgNDAzNTksIDQwMzY0LCA0MDM2OSwgNDAzNzQsIDQwMzc5LCAKLSAgICA0MDM4MywgNDAzODcsIDQwMzkxLCA0MDM5NSwgNDA0MDAsIDQwNDA2LCA0MDQxMSwgNDA0MTcsIDQwNDIyLCA0MDQyNywgCi0gICAgNDA0MzIsIDQwNDM4LCA0MDQ0MywgNDA0NDksIDQwNDU1LCA0MDQ1OSwgNDA0NjMsIDQwNDY4LCA0MDQ3MywgNDA0NzgsIAotICAgIDQwNDgzLCA0MDQ4OCwgNDA0OTYsIDQwNTA0LCA0MDUxMiwgNDA1MjAsIDQwNTI3LCA0MDUzNSwgNDA1NDIsIDQwNTQ5LCAKLSAgICA0MDU1OCwgNDA1NzAsIDQwNTc2LCA0MDU4MiwgNDA1OTAsIDQwNTk4LCA0MDYwNywgNDA2MTYsIDQwNjI0LCA0MDYzMiwgCi0gICAgNDA2NDEsIDQwNjUwLCA0MDY1NSwgNDA2NjMsIDQwNjY4LCA0MDY3MywgNDA2NzksIDQwNjg0LCA0MDY5MCwgNDA2OTcsIAotICAgIDQwNzA0LCA0MDcwOSwgNDA3MTUsIDQwNzIwLCA0MDcyMywgNDA3MjcsIDQwNzMwLCA0MDczNCwgNDA3MzgsIDQwNzQyLCAKLSAgICA0MDc0OCwgNDA3NTQsIDQwNzYwLCA0MDc2NiwgNDA3NzAsIDQwNzc0LCA0MDc3OCwgNDA3ODIsIDQwNzg4LCA0MDc5NCwgCi0gICAgNDA3OTgsIDQwODAzLCA0MDgwNywgNDA4MTIsIDQwODE3LCA0MDgyMiwgNDA4MjUsIDQwODI5LCA0MDgzMiwgNDA4MzYsIAotICAgIDQwODQzLCA0MDg1MSwgNDA4NjIsIDQwODczLCA0MDg3OCwgNDA4ODcsIDQwODk0LCA0MDkwMywgNDA5MTIsIDQwOTE2LCAKLSAgICA0MDkyMiwgNDA5MzAsIDQwOTM0LCA0MDkzOSwgNDA5NDQsIDQwOTUwLCA0MDk1NiwgNDA5NjIsIDQwOTY5LCA0MDk3MywgCi0gICAgNDA5NzcsIDQwOTgyLCA0MDk4NSwgNDA5ODcsIDQwOTkxLCA0MDk5NSwgNDEwMDMsIDQxMDA3LCA0MTAwOSwgNDEwMTEsIAotICAgIDQxMDE1LCA0MTAyMywgNDEwMjgsIDQxMDM0LCA0MTA0NCwgNDEwNTEsIDQxMDU2LCA0MTA2MCwgNDEwNjQsIDQxMDY4LCAKLSAgICA0MTA3MSwgNDEwNzQsIDQxMDc3LCA0MTA4MSwgNDEwODUsIDQxMDg5LCA0MTA5MywgNDEwOTcsIDQxMTAwLCA0MTEwNCwgCi0gICAgNDExMDgsIDQxMTExLCA0MTExMywgNDExMTYsIDQxMTE4LCA0MTEyMiwgNDExMjYsIDQxMTI4LCA0MTEzNCwgNDExMzcsIAotICAgIDQxMTQyLCA0MTE0NiwgNDExNTAsIDQxMTUyLCA0MTE1NCwgNDExNTYsIDQxMTU5LCA0MTE2MywgNDExNjcsIDQxMTcxLCAKLSAgICA0MTE3NSwgNDExNzksIDQxMTg1LCA0MTE5MSwgNDExOTMsIDQxMTk1LCA0MTE5NywgNDExOTksIDQxMjAyLCA0MTIwNCwgCi0gICAgNDEyMDgsIDQxMjEwLCA0MTIxNCwgNDEyMTcsIDQxMjIzLCA0MTIyNywgNDEyMzEsIDQxMjM0LCA0MTIzNywgNDEyNDEsIAotICAgIDQxMjQ3LCA0MTI1MSwgNDEyNjEsIDQxMjcxLCA0MTI3NSwgNDEyODEsIDQxMjg3LCA0MTI5MCwgNDEyOTQsIDQxMjk3LCAKLSAgICA0MTMwMiwgNDEzMDYsIDQxMzEyLCA0MTMxNiwgNDEzMjgsIDQxMzM2LCA0MTM0MCwgNDEzNDQsIDQxMzUwLCA0MTM1NCwgCi0gICAgNDEzNTcsIDQxMzU5LCA0MTM2MiwgNDEzNjYsIDQxMzcwLCA0MTM3NywgNDEzODEsIDQxMzg1LCA0MTM4OSwgNDEzOTIsIAotICAgIDQxMzk3LCA0MTQwMiwgNDE0MDcsIDQxNDEyLCA0MTQxNywgNDE0MjIsIDQxNDMwLCA0MTQzOCwgNDE0NDIsIDQxNDQ2LCAKLSAgICA0MTQ0OCwgNDE0NTMsIDQxNDU3LCA0MTQ2MSwgNDE0NjksIDQxNDc3LCA0MTQ4MywgNDE0ODksIDQxNDk4LCA0MTUwNywgCi0gICAgNDE1MTIsIDQxNTE3LCA0MTUyNSwgNDE1MzMsIDQxNTM1LCA0MTUzNywgNDE1NDIsIDQxNTQ3LCA0MTU1MywgNDE1NTksIAotICAgIDQxNTY1LCA0MTU3MSwgNDE1NzUsIDQxNTc5LCA0MTU4NiwgNDE1OTMsIDQxNTk5LCA0MTYwNSwgNDE2MTUsIDQxNjI1LCAKLSAgICA0MTYzMywgNDE2NDEsIDQxNjQzLCA0MTY0NywgNDE2NTEsIDQxNjU2LCA0MTY2MSwgNDE2NjgsIDQxNjc1LCA0MTY3OCwgCi0gICAgNDE2ODEsIDQxNjg0LCA0MTY4NywgNDE2OTAsIDQxNjk1LCA0MTY5OSwgNDE3MDQsIDQxNzA5LCA0MTcxMiwgNDE3MTUsIAotICAgIDQxNzE4LCA0MTcyMSwgNDE3MjQsIDQxNzI4LCA0MTczMSwgNDE3MzQsIDQxNzM3LCA0MTc0MCwgNDE3NDIsIDQxNzQ0LCAKLSAgICA0MTc0NiwgNDE3NDgsIDQxNzU2LCA0MTc2NCwgNDE3NzAsIDQxNzc0LCA0MTc4MCwgNDE3OTAsIDQxNzk2LCA0MTgwMiwgCi0gICAgNDE4MDgsIDQxODE2LCA0MTgyNCwgNDE4MzUsIDQxODM5LCA0MTg0MywgNDE4NDUsIDQxODUxLCA0MTg1MywgNDE4NTUsIAotICAgIDQxODU3LCA0MTg1OSwgNDE4NjUsIDQxODY4LCA0MTg3NCwgNDE4ODAsIDQxODg0LCA0MTg4OCwgNDE4OTIsIDQxODk1LCAKLSAgICA0MTg5OSwgNDE5MDMsIDQxOTA1LCA0MTkxNCwgNDE5MjMsIDQxOTI4LCA0MTkzMywgNDE5MzksIDQxOTQ1LCA0MTk1MSwgCi0gICAgNDE5NTQsIDQxOTU3LCA0MTk2MCwgNDE5NjMsIDQxOTY1LCA0MTk3MCwgNDE5NzUsIDQxOTgwLCA0MTk4NiwgNDE5OTIsIAotICAgIDQyMDAwLCA0MjAwOCwgNDIwMTQsIDQyMDIwLCA0MjAyNiwgNDIwMzIsIDQyMDQxLCA0MjA1MCwgNDIwNTksIDQyMDY4LCAKLSAgICA0MjA3NywgNDIwODYsIDQyMDk1LCA0MjEwNCwgNDIxMTMsIDQyMTIyLCA0MjEzMCwgNDIxNDIsIDQyMTUyLCA0MjE2NywgCi0gICAgNDIxNzAsIDQyMTc1LCA0MjE4MSwgNDIxODcsIDQyMTk0LCA0MjIwOCwgNDIyMjMsIDQyMjI5LCA0MjIzNSwgNDIyNDIsIAotICAgIDQyMjQ4LCA0MjI1NiwgNDIyNjIsIDQyMjc1LCA0MjI4OSwgNDIyOTQsIDQyMzAwLCA0MjMwNywgNDIzMTAsIDQyMzEzLCAKLSAgICA0MjMxNSwgNDIzMTgsIDQyMzIxLCA0MjMyMywgNDIzMjUsIDQyMzI5LCA0MjMzMiwgNDIzMzUsIDQyMzM4LCA0MjM0MSwgCi0gICAgNDIzNDYsIDQyMzUxLCA0MjM1NiwgNDIzNjEsIDQyMzY2LCA0MjM2OSwgNDIzNzEsIDQyMzczLCA0MjM3NSwgNDIzNzksIAotICAgIDQyMzgzLCA0MjM4NywgNDIzOTMsIDQyMzk4LCA0MjQwMCwgNDI0MDIsIDQyNDA3LCA0MjQxMiwgNDI0MTcsIDQyNDIyLCAKLSAgICA0MjQyNywgNDI0MzIsIDQyNDM0LCA0MjQzNiwgNDI0NDUsIDQyNDQ5LCA0MjQ1NywgNDI0NjYsIDQyNDY4LCA0MjQ3MywgCi0gICAgNDI0NzgsIDQyNDg2LCA0MjQ5MCwgNDI0OTIsIDQyNDk2LCA0MjQ5OCwgNDI1MDIsIDQyNTA2LCA0MjUxMCwgNDI1MTIsIAotICAgIDQyNTE0LCA0MjUxNiwgNDI1MjMsIDQyNTMyLCA0MjU0MSwgNDI1NTAsIDQyNTU5LCA0MjU2OCwgNDI1NzcsIDQyNTg2LCAKLSAgICA0MjU5NSwgNDI2MDMsIDQyNjExLCA0MjYyMCwgNDI2MjksIDQyNjM4LCA0MjY0NywgNDI2NTUsIDQyNjYzLCA0MjY3MiwgCi0gICAgNDI2ODEsIDQyNjkwLCA0MjcwMCwgNDI3MDksIDQyNzE5LCA0MjcyOCwgNDI3MzgsIDQyNzQ3LCA0Mjc1NywgNDI3NjcsIAotICAgIDQyNzc2LCA0Mjc4NiwgNDI3OTUsIDQyODA1LCA0MjgxNCwgNDI4MjQsIDQyODMzLCA0Mjg0MiwgNDI4NTEsIDQyODYwLCAKLSAgICA0Mjg2OSwgNDI4NzksIDQyODg4LCA0Mjg5NywgNDI5MDYsIDQyOTE2LCA0MjkyNSwgNDI5MzQsIDQyOTQzLCA0Mjk1MiwgCi0gICAgNDI5NjIsIDQyOTcyLCA0Mjk4MSwgNDI5OTAsIDQyOTk4LCA0MzAwNiwgNDMwMTMsIDQzMDIxLCA0MzAzMCwgNDMwNDEsIAotICAgIDQzMDUwLCA0MzA1OSwgNDMwNjgsIDQzMDc1LCA0MzA4MiwgNDMwODksIDQzMDk4LCA0MzEwNywgNDMxMTYsIDQzMTI1LCAKLSAgICA0MzEzMiwgNDMxMzcsIDQzMTQ2LCA0MzE1MSwgNDMxNTQsIDQzMTYyLCA0MzE2NSwgNDMxNzAsIDQzMTc1LCA0MzE3OCwgCi0gICAgNDMxODEsIDQzMTg5LCA0MzE5MiwgNDMxOTcsIDQzMjAwLCA0MzIwNywgNDMyMTIsIDQzMjIwLCA0MzIyMywgNDMyMjYsIAotICAgIDQzMjI5LCA0MzIzNCwgNDMyMzksIDQzMjQyLCA0MzI0NSwgNDMyNTMsIDQzMjU2LCA0MzI2MywgNDMyNzAsIDQzMjc0LCAKLSAgICA0MzI3OCwgNDMyODMsIDQzMjg4LCA0MzI5NCwgNDMyOTksIDQzMzA1LCA0MzMxMSwgNDMzMTYsIDQzMzIyLCA0MzMzMCwgCi0gICAgNDMzMzYsIDQzMzQ0LCA0MzM1MiwgNDMzNTgsIDQzMzY2LCA0MzM3NCwgNDMzODMsIDQzMzkxLCA0MzM5NywgNDM0MDUsIAotICAgIDQzNDE0LCA0MzQyMiwgNDM0MjYsIDQzNDMxLCA0MzQ0NCwgNDM0NTcsIDQzNDYxLCA0MzQ2NSwgNDM0NjksIDQzNDczLCAKLSAgICA0MzQ4MywgNDM0ODcsIDQzNDkyLCA0MzQ5NywgNDM1MDIsIDQzNTA3LCA0MzUxMiwgNDM1MTcsIDQzNTI3LCA0MzUzNywgCi0gICAgNDM1NDUsIDQzNTU1LCA0MzU2NSwgNDM1NzMsIDQzNTgzLCA0MzU5MywgNDM2MDEsIDQzNjExLCA0MzYyMSwgNDM2MjksIAotICAgIDQzNjM3LCA0MzY0NywgNDM2NTcsIDQzNjYwLCA0MzY2MywgNDM2NjYsIDQzNjcxLCA0MzY3NSwgNDM2ODEsIDQzNjg4LCAKLSAgICA0MzY5NSwgNDM3MDMsIDQzNzEwLCA0MzcxNCwgNDM3MTgsIDQzNzIyLCA0MzcyNiwgNDM3MjgsIDQzNzMyLCA0MzczNiwgCi0gICAgNDM3NDEsIDQzNzQ2LCA0Mzc1MywgNDM3NjAsIDQzNzYzLCA0Mzc3MCwgNDM3NzIsIDQzNzc0LCA0Mzc3OCwgNDM3ODIsIAotICAgIDQzNzg3LCA0Mzc5MywgNDM3OTksIDQzODA1LCA0MzgxMSwgNDM4MjAsIDQzODI5LCA0MzgzOCwgNDM4NDIsIDQzODQ0LCAKLSAgICA0Mzg0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM4NTUsIDQzODU5LCA0Mzg2NiwgNDM4NzMsIAotICAgIDQzODgwLCA0Mzg4NywgNDM4OTEsIDQzODk1LCA0Mzg5OSwgNDM5MDMsIDQzOTA4LCA0MzkxNCwgNDM5MTksIDQzOTI1LCAKLSAgICA0MzkzMSwgNDM5MzcsIDQzOTQzLCA0Mzk1MSwgNDM5NTgsIDQzOTY1LCA0Mzk3MiwgNDM5NzksIDQzOTg0LCA0Mzk5MCwgCi0gICAgNDM5OTksIDQ0MDAzLCA0NDAxMCwgNDQwMTQsIDQ0MDE4LCA0NDAyNCwgNDQwMzAsIDQ0MDM2LCA0NDA0MiwgNDQwNDYsIAotICAgIDQ0MDUwLCA0NDA1MywgNDQwNTYsIDQ0MDYwLCA0NDA2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQwNzQsIDQ0MDc3LCA0NDA4MSwgNDQwODUsIDQ0MDkxLCAKLSAgICA0NDA5NywgNDQxMDMsIDQ0MTExLCA0NDExOCwgNDQxMjIsIDQ0MTMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDEzNSwgNDQxMzgsIDQ0MTQxLCA0NDE0NCwgNDQxNDcsIAotICAgIDQ0MTUwLCA0NDE1MywgNDQxNTYsIDQ0MTU5LCA0NDE2MiwgNDQxNjYsIDQ0MTcwLCA0NDE3NCwgNDQxNzgsIDQ0MTgyLCAKLSAgICA0NDE4NiwgNDQxOTAsIDQ0MTk0LCA0NDE5OCwgNDQyMDIsIDQ0MjA2LCA0NDIwOSwgNDQyMTIsIDQ0MjE1LCA0NDIxOCwgCi0gICAgNDQyMjEsIDQ0MjI0LCA0NDIyNywgNDQyMzAsIDQ0MjMzLCA0NDIzNywgNDQyNDEsIDQ0MjQ1LCA0NDI0OSwgNDQyNTMsIAotICAgIDQ0MjU3LCA0NDI2MSwgNDQyNjUsIDQ0MjY5LCA0NDI3MywgNDQyNzcsIDQ0MjgzLCA0NDI4OSwgNDQyOTUsIDQ0MzAyLCAKLSAgICA0NDMwOSwgNDQzMTYsIDQ0MzIzLCA0NDMzMCwgNDQzMzcsIDQ0MzQ0LCA0NDM1MSwgNDQzNTgsIDQ0MzY1LCA0NDM3MiwgCi0gICAgNDQzNzksIDQ0Mzg2LCA0NDM5MywgNDQ0MDAsIDQ0NDA3LCA0NDQxNCwgNDQ0MTksIDQ0NDI1LCA0NDQzMSwgNDQ0MzcsIAotICAgIDQ0NDQyLCA0NDQ0OCwgNDQ0NTQsIDQ0NDYwLCA0NDQ2NSwgNDQ0NzEsIDQ0NDc3LCA0NDQ4MiwgNDQ0ODcsIDQ0NDkzLCAKLSAgICA0NDQ5OCwgNDQ1MDQsIDQ0NTEwLCA0NDUxNSwgNDQ1MjEsIDQ0NTI3LCA0NDUzMiwgNDQ1MzgsIDQ0NTQ0LCA0NDU1MCwgCi0gICAgNDQ1NTYsIDQ0NTYyLCA0NDU2NywgNDQ1NzMsIDQ0NTc5LCA0NDU4NSwgNDQ1OTAsIDQ0NTk2LCA0NDYwMiwgNDQ2MDgsIAotICAgIDQ0NjEzLCA0NDYxOSwgNDQ2MjUsIDQ0NjMwLCA0NDYzNSwgNDQ2NDEsIDQ0NjQ2LCA0NDY1MiwgNDQ2NTgsIDQ0NjYzLCAKLSAgICA0NDY2OSwgNDQ2NzUsIDQ0NjgwLCA0NDY4NiwgNDQ2OTIsIDQ0Njk4LCA0NDcwNCwgNDQ3MTAsIDQ0NzE1LCA0NDcyMSwgCi0gICAgNDQ3MjcsIDQ0NzMzLCA0NDczOCwgNDQ3NDQsIDQ0NzUwLCA0NDc1NiwgNDQ3NjEsIDQ0NzY3LCA0NDc3MywgNDQ3NzgsIAotICAgIDQ0NzgzLCA0NDc4OSwgNDQ3OTQsIDQ0ODAwLCA0NDgwNiwgNDQ4MTEsIDQ0ODE3LCA0NDgyMywgNDQ4MjgsIDQ0ODM0LCAKLSAgICA0NDg0MCwgNDQ4NDYsIDQ0ODUyLCA0NDg1OCwgNDQ4NjIsIDQ0ODY3LCA0NDg3MiwgNDQ4NzcsIDQ0ODgyLCA0NDg4NywgCi0gICAgNDQ4OTIsIDQ0ODk3LCA0NDkwMiwgNDQ5MDcsIDQ0OTEyLCA0NDkxNiwgNDQ5MjAsIDQ0OTI0LCA0NDkyOCwgNDQ5MzIsIAotICAgIDQ0OTM2LCA0NDk0MCwgNDQ5NDQsIDQ0OTQ4LCA0NDk1MywgNDQ5NTgsIDQ0OTYzLCA0NDk2OCwgNDQ5NzMsIDQ0OTc4LCAKLSAgICA0NDk4NywgNDQ5OTYsIDQ1MDA1LCA0NTAxNCwgNDUwMjMsIDQ1MDMyLCA0NTA0MSwgNDUwNTAsIDQ1MDU3LCA0NTA2NSwgCi0gICAgNDUwNzMsIDQ1MDgwLCA0NTA4NywgNDUwOTUsIDQ1MTAzLCA0NTExMCwgNDUxMTcsIDQ1MTI1LCA0NTEzMywgNDUxNDAsIAotICAgIDQ1MTQ3LCA0NTE1NSwgNDUxNjMsIDQ1MTcwLCA0NTE3NywgNDUxODUsIDQ1MTk0LCA0NTIwMywgNDUyMTEsIDQ1MjIwLCAKLSAgICA0NTIyOSwgNDUyMzYsIDQ1MjQzLCA0NTI1MSwgNDUyNjAsIDQ1MjY5LCA0NTI3NywgNDUyODYsIDQ1Mjk1LCA0NTMwMiwgCi0gICAgNDUzMDksIDQ1MzE4LCA0NTMyNywgNDUzMzUsIDQ1MzQzLCA0NTM1MiwgNDUzNjEsIDQ1MzY4LCA0NTM3NSwgNDUzODQsIAotICAgIDQ1MzkzLCA0NTQwMSwgNDU0MDksIDQ1NDE4LCA0NTQyNywgNDU0MzQsIDQ1NDQxLCA0NTQ1MCwgNDU0NTksIDQ1NDY3LCAKLSAgICA0NTQ3NiwgNDU0ODUsIDQ1NDkzLCA0NTUwMywgNDU1MTMsIDQ1NTIzLCA0NTUzMywgNDU1NDIsIDQ1NTUxLCA0NTU2MCwgCi0gICAgNDU1NjksIDQ1NTc2LCA0NTU4NCwgNDU1OTIsIDQ1NjAwLCA0NTYwOCwgNDU2MTMsIDQ1NjE4LCA0NTYyNywgNDU2MzUsIAotICAgIDQ1NjQyLCA0NTY1MSwgNDU2NTksIDQ1NjY2LCA0NTY3NSwgNDU2ODMsIDQ1NjkwLCA0NTY5OSwgNDU3MDcsIDQ1NzE0LCAKLSAgICA0NTcyMywgNDU3MzEsIDQ1NzM4LCA0NTc0NywgNDU3NTUsIDQ1NzYyLCA0NTc3MSwgNDU3NzksIDQ1Nzg2LCA0NTc5NSwgCi0gICAgNDU4MDMsIDQ1ODEwLCA0NTgxOSwgNDU4MjcsIDQ1ODM0LCA0NTg0MywgNDU4NTIsIDQ1ODYxLCA0NTg3MCwgNDU4ODQsIAotICAgIDQ1ODk4LCA0NTkwNSwgNDU5MTAsIDQ1OTE1LCA0NTkyMCwgNDU5MjUsIDQ1OTMwLCA0NTkzNSwgNDU5NDAsIDQ1OTQ1LCAKLSAgICA0NTk1MywgNDU5NjEsIDQ1OTY5LCA0NTk3NywgNDU5ODIsIDQ1OTg5LCA0NTk5NiwgNDYwMDMsIDQ2MDA4LCA0NjAxNiwgCi0gICAgNDYwMjMsIDQ2MDMxLCA0NjAzNSwgNDYwNDIsIDQ2MDQ4LCA0NjA1NSwgNDYwNTksIDQ2MDY1LCA0NjA3MSwgNDYwNzcsIAotICAgIDQ2MDgxLCA0NjA4NCwgNDYwODgsIDQ2MDkyLCA0NjA5OSwgNDYxMDUsIDQ2MTExLCA0NjExNywgNDYxMjMsIDQ2MTM3LCAKLSAgICA0NjE0NywgNDYxNjEsIDQ2MTc1LCA0NjE4MSwgNDYxOTEsIDQ2MjA1LCA0NjIwOCwgNDYyMTEsIDQ2MjE4LCA0NjIyNiwgCi0gICAgNDYyMzEsIDQ2MjM2LCA0NjI0NCwgNDYyNTYsIDQ2MjY4LCA0NjI3NiwgNDYyODAsIDQ2Mjg0LCA0NjI4NywgNDYyOTAsIAotICAgIDQ2Mjk0LCA0NjI5OCwgNDYzMDEsIDQ2MzA0LCA0NjMwOSwgNDYzMTQsIDQ2MzIwLCA0NjMyNiwgNDYzMzEsIDQ2MzM2LCAKLSAgICA0NjM0MiwgNDYzNDgsIDQ2MzUzLCA0NjM1OCwgNDYzNjMsIDQ2MzY4LCA0NjM3NCwgNDYzODAsIDQ2Mzg1LCA0NjM5MCwgCi0gICAgNDYzOTYsIDQ2NDAyLCA0NjQwNywgNDY0MTIsIDQ2NDE1LCA0NjQxOCwgNDY0MjcsIDQ2NDI5LCA0NjQzMSwgNDY0MzQsIAotICAgIDQ2NDM4LCA0NjQ0NCwgNDY0NDYsIDQ2NDQ5LCA0NjQ1NiwgNDY0NjMsIDQ2NDcxLCA0NjQ3OSwgNDY0ODksIDQ2NTAzLCAKLSAgICA0NjUwOCwgNDY1MTMsIDQ2NTE3LCA0NjUyMiwgNDY1MzAsIDQ2NTM4LCA0NjU0NywgNDY1NTYsIDQ2NTY1LCA0NjU3NCwgCi0gICAgNDY1NzksIDQ2NTg0LCA0NjU5MCwgNDY1OTYsIDQ2NjAyLCA0NjYwOCwgNDY2MTEsIDQ2NjE3LCA0NjYyMywgNDY2MzMsIAotICAgIDQ2NjQzLCA0NjY1MSwgNDY2NTksIDQ2NjY4LCA0NjY3NywgNDY2ODEsIDQ2Njg5LCA0NjY5NywgNDY3MDUsIDQ2NzEzLCAKLSAgICA0NjcyMiwgNDY3MzEsIDQ2NzQwLCA0Njc0OSwgNDY3NTQsIDQ2NzU5LCA0Njc2NCwgNDY3NjksIDQ2Nzc0LCA0Njc4MCwgCi0gICAgNDY3ODYsIDQ2NzkxLCA0Njc5NywgNDY3OTksIDQ2ODAxLCA0NjgwMywgNDY4MDUsIDQ2ODA4LCA0NjgxMSwgNDY4MTMsIAotICAgIDQ2ODE1LCA0NjgxNywgNDY4MjEsIDQ2ODI1LCA0NjgyNywgNDY4MjksIDQ2ODMyLCA0NjgzNSwgNDY4MzksIDQ2ODQ1LCAKLSAgICA0Njg1MSwgNDY4NTMsIDQ2ODYwLCA0Njg2NCwgNDY4NjksIDQ2ODc0LCA0Njg3NiwgNDY4ODYsIDQ2ODkyLCA0Njg5OCwgCi0gICAgNDY5MDQsIDQ2OTEwLCA0NjkxNiwgNDY5MjIsIDQ2OTI3LCA0NjkzMCwgNDY5MzMsIDQ2OTM2LCA0NjkzOCwgNDY5NDAsIAotICAgIDQ2OTQ0LCA0Njk0OCwgNDY5NTMsIDQ2OTU4LCA0Njk2MywgNDY5NjYsIDQ2OTcwLCA0Njk3NSwgNDY5NzgsIDQ2OTgyLCAKLSAgICA0Njk4NywgNDY5OTIsIDQ2OTk3LCA0NzAwMiwgNDcwMDcsIDQ3MDEyLCA0NzAxNywgNDcwMjIsIDQ3MDI3LCA0NzAzMiwgCi0gICAgNDcwMzcsIDQ3MDQyLCA0NzA0OCwgNDcwNTQsIDQ3MDYwLCA0NzA2MiwgNDcwNjUsIDQ3MDY3LCA0NzA3MCwgNDcwNzIsIAotICAgIDQ3MDc0LCA0NzA3NiwgNDcwNzgsIDQ3MDgwLCA0NzA4MiwgNDcwODQsIDQ3MDg2LCA0NzA4OCwgNDcwOTAsIDQ3MDkyLCAKLSAgICA0NzA5NCwgNDcwOTYsIDQ3MDk4LCA0NzEwMCwgNDcxMDIsIDQ3MTA0LCA0NzEwOSwgNDcxMTQsIDQ3MTE5LCA0NzEyNCwgCi0gICAgNDcxMjksIDQ3MTM0LCA0NzEzOSwgNDcxNDQsIDQ3MTQ5LCA0NzE1NCwgNDcxNTksIDQ3MTY0LCA0NzE2OSwgNDcxNzQsIAotICAgIDQ3MTc5LCA0NzE4NCwgNDcxODksIDQ3MTk0LCA0NzE5OSwgNDcyMDQsIDQ3MjA4LCA0NzIxMiwgNDcyMTYsIDQ3MjIyLCAKLSAgICA0NzIyOCwgNDcyMzMsIDQ3MjM4LCA0NzI0MywgNDcyNDgsIDQ3MjUzLCA0NzI1OCwgNDcyNjYsIDQ3Mjc0LCA0NzI4MiwgCi0gICAgNDcyOTAsIDQ3Mjk4LCA0NzMwNiwgNDczMTQsIDQ3MzIyLCA0NzMyOCwgNDczMzMsIDQ3MzM4LCA0NzM0MywgNDczNDYsIAotICAgIDQ3MzUwLCA0NzM1NCwgNDczNTgsIDQ3MzYyLCA0NzM2NiwgNDczNzAsIDQ3Mzc3LCA0NzM4NCwgNDczOTIsIDQ3NDAwLCAKLSAgICA0NzQwNSwgNDc0MTAsIDQ3NDE3LCA0NzQyNCwgNDc0MzEsIDQ3NDM4LCA0NzQ0MSwgNDc0NDQsIDQ3NDQ5LCA0NzQ1MSwgCi0gICAgNDc0NTUsIDQ3NDYwLCA0NzQ2MiwgNDc0NjQsIDQ3NDY2LCA0NzQ2OCwgNDc0NzMsIDQ3NDc2LCA0NzQ3OCwgNDc0ODMsIAotICAgIDQ3NDkwLCA0NzQ5NywgNDc1MDAsIDQ3NTA0LCA0NzUwOSwgNDc1MTQsIDQ3NTIyLCA0NzUyOCwgNDc1MzQsIDQ3NTQ2LCAKLSAgICA0NzU1MywgNDc1NjAsIDQ3NTY1LCA0NzU3MCwgNDc1NzYsIDQ3NTc5LCA0NzU4MiwgNDc1ODcsIDQ3NTg5LCA0NzU5MywgCi0gICAgNDc1OTUsIDQ3NTk3LCA0NzU5OSwgNDc2MDEsIDQ3NjAzLCA0NzYwNSwgNDc2MTAsIDQ3NjEyLCA0NzYxNCwgNDc2MTYsIAotICAgIDQ3NjE4LCA0NzYyMiwgNDc2MjQsIDQ3NjI3LCA0NzYzMiwgNDc2MzcsIDQ3NjQyLCA0NzY0NywgNDc2NTMsIDQ3NjU5LCAKLSAgICA0NzY2MSwgNDc2NjQsIDQ3NjcxLCA0NzY3OCwgNDc2ODUsIDQ3NjkyLCA0NzY5NiwgNDc3MDAsIDQ3NzAyLCA0NzcwNCwgCi0gICAgNDc3MDgsIDQ3NzE0LCA0NzcxOSwgNDc3MjEsIDQ3NzI1LCA0NzczNCwgNDc3NDIsIDQ3NzUwLCA0Nzc1NiwgNDc3NjIsIAotICAgIDQ3NzY3LCA0Nzc3MywgNDc3NzgsIDQ3NzgxLCA0Nzc5NSwgNDc3OTgsIDQ3ODAzLCA0NzgwOCwgNDc4MTQsIDQ3ODI0LCAKLSAgICA0NzgyNiwgNDc4MzIsIDQ3ODM4LCA0Nzg0MiwgNDc4NDksIDQ3ODUzLCA0Nzg1NSwgNDc4NTcsIDQ3ODYxLCA0Nzg2NywgCi0gICAgNDc4NzIsIDQ3ODc4LCA0Nzg4MCwgNDc4ODYsIDQ3ODg4LCA0Nzg5NCwgNDc4OTYsIDQ3ODk4LCA0NzkwMywgNDc5MDUsIAotICAgIDQ3OTA5LCA0NzkxNCwgNDc5MTYsIDQ3OTIxLCA0NzkyNiwgNDc5MzAsIDQ3OTM3LCAwLCA0Nzk0NywgNDc5NTMsIDQ3OTU2LCAKLSAgICA0Nzk2MiwgNDc5NjUsIDQ3OTcwLCA0Nzk3NSwgNDc5NzksIDQ3OTgxLCA0Nzk4MywgNDc5ODcsIDQ3OTkxLCA0Nzk5NSwgCi0gICAgNDc5OTksIDQ4MDA0LCA0ODAwNiwgNDgwMTEsIDQ4MDE0LCA0ODAxNywgNDgwMjAsIDQ4MDI0LCA0ODAyOCwgNDgwMzMsIAotICAgIDQ4MDM3LCA0ODA0MiwgNDgwNDcsIDQ4MDUxLCA0ODA1NiwgNDgwNjIsIDQ4MDY1LCA0ODA3MSwgNDgwNzYsIDQ4MDgwLCAKLSAgICA0ODA4NSwgNDgwOTEsIDQ4MDk3LCA0ODEwNCwgNDgxMTAsIDQ4MTE3LCA0ODEyNCwgNDgxMjYsIDQ4MTMzLCA0ODEzNywgCi0gICAgNDgxNDMsIDQ4MTQ5LCA0ODE1NCwgNDgxNjAsIDQ4MTY0LCA0ODE2OSwgNDgxNzIsIDQ4MTc3LCA0ODE4MywgNDgxOTAsIAotICAgIDQ4MTk4LCA0ODIwNSwgNDgyMTQsIDQ4MjI0LCA0ODIzMSwgNDgyMzcsIDQ4MjQxLCA0ODI0OCwgNDgyNTMsIDQ4MjYyLCAKLSAgICA0ODI2NSwgNDgyNjgsIDQ4Mjc3LCA0ODI4NywgNDgyOTQsIDQ4Mjk2LCA0ODMwMiwgNDgzMDcsIDQ4MzA5LCA0ODMxMiwgCi0gICAgNDgzMTYsIDQ4MzI0LCA0ODMzMywgNDgzMzYsIDQ4MzQxLCA0ODM0NiwgNDgzNTQsIDQ4MzYyLCA0ODM3MCwgNDgzNzgsIAotICAgIDQ4Mzg0LCA0ODM5MCwgNDgzOTYsIDQ4NDA0LCA0ODQwOSwgNDg0MTIsIDQ4NDE2LCA0ODQxOSwgNDg0MzEsIDQ4NDQxLCAKLSAgICA0ODQ1MiwgNDg0NjEsIDQ4NDcyLCA0ODQ4MiwgNDg0OTEsIDQ4NDk3LCA0ODUwNSwgNDg1MDksIDQ4NTE3LCA0ODUyMSwgCi0gICAgNDg1MjksIDQ4NTM2LCA0ODU0MywgNDg1NTIsIDQ4NTYxLCA0ODU3MSwgNDg1ODEsIDQ4NTkxLCA0ODYwMSwgNDg2MTAsIAotICAgIDQ4NjE5LCA0ODYyOSwgNDg2MzksIDQ4NjQ4LCA0ODY1NywgNDg2NjMsIDQ4NjY5LCA0ODY3NSwgNDg2ODEsIDQ4Njg3LCAKLSAgICA0ODY5MywgNDg2OTksIDQ4NzA1LCA0ODcxMSwgNDg3MTgsIDQ4NzI0LCA0ODczMCwgNDg3MzYsIDQ4NzQyLCA0ODc0OCwgCi0gICAgNDg3NTQsIDQ4NzYwLCA0ODc2NiwgNDg3NzIsIDQ4Nzc5LCA0ODc4NiwgNDg3OTMsIDQ4ODAwLCA0ODgwNywgNDg4MTQsIAotICAgIDQ4ODIxLCA0ODgyOCwgNDg4MzUsIDQ4ODQyLCA0ODg1MCwgNDg4NTUsIDQ4ODU4LCA0ODg2MiwgNDg4NjYsIDQ4ODcyLCAKLSAgICA0ODg3NSwgNDg4ODEsIDQ4ODg3LCA0ODg5MiwgNDg4OTYsIDQ4OTAxLCA0ODkwNywgNDg5MTQsIDQ4OTE3LCA0ODkyNCwgCi0gICAgNDg5MzEsIDQ4OTM1LCA0ODk0NCwgNDg5NTMsIDQ4OTU4LCA0ODk2NCwgNDg5NjksIDQ4OTc0LCA0ODk4MSwgNDg5ODgsIAotICAgIDQ4OTk2LCA0OTAwNCwgNDkwMTMsIDQ5MDE3LCA0OTAyNiwgNDkwMzEsIDQ5MDM1LCA0OTA0MiwgNDkwNDYsIDQ5MDUzLCAKLSAgICA0OTA2MSwgNDkwNjYsIDQ5MDc0LCA0OTA3OCwgNDkwODMsIDQ5MDg3LCA0OTA5MiwgNDkwOTYsIDQ5MTAxLCA0OTEwNiwgCi0gICAgNDkxMTUsIDQ5MTE3LCA0OTEyMCwgNDkxMjMsIDQ5MTMwLCA0OTEzNywgNDkxNDIsIDQ5MTUwLCA0OTE1NiwgNDkxNjIsIAotICAgIDQ5MTY3LCA0OTE3MCwgNDkxNzUsIDQ5MTgwLCA0OTE4NSwgNDkxOTMsIDQ5MTk3LCA0OTIwNCwgNDkyMTIsIDQ5MjIwLCAKLSAgICA0OTIyNSwgNDkyMzAsIDQ5MjM2LCA0OTI0MSwgNDkyNDYsIDQ5MjUyLCA0OTI1NywgNDkyNjAsIDQ5MjY0LCA0OTI2OCwgCi0gICAgNDkyNzUsIDQ5Mjg0LCA0OTI4OSwgNDkyOTgsIDQ5MzA3LCA0OTMxMywgNDkzMTksIDQ5MzI0LCA0OTMyOSwgNDkzMzQsIAotICAgIDQ5MzM5LCA0OTM0NSwgNDkzNTEsIDQ5MzU5LCA0OTM2NywgNDkzNzMsIDQ5Mzc5LCA0OTM4NCwgNDkzODksIDQ5Mzk2LCAKLSAgICA0OTQwMywgNDk0MDksIDQ5NDEyLCA0OTQxNSwgNDk0MTksIDQ5NDIzLCA0OTQyNywgNDk0MzIsIDQ5NDM4LCA0OTQ0NCwgCi0gICAgNDk0NTEsIDQ5NDU4LCA0OTQ2MywgNDk0NjcsIDQ5NDcxLCA0OTQ3NSwgNDk0NzksIDQ5NDgzLCA0OTQ4NywgNDk0OTEsIAotICAgIDQ5NDk1LCA0OTQ5OSwgNDk1MDMsIDQ5NTA3LCA0OTUxMSwgNDk1MTUsIDQ5NTE5LCA0OTUyMywgNDk1MjcsIDQ5NTMxLCAKLSAgICA0OTUzNSwgNDk1MzksIDQ5NTQzLCA0OTU0NywgNDk1NTEsIDQ5NTU1LCA0OTU1OSwgNDk1NjMsIDQ5NTY3LCA0OTU3MSwgCi0gICAgNDk1NzUsIDQ5NTc5LCA0OTU4MywgNDk1ODcsIDQ5NTkxLCA0OTU5NSwgNDk1OTksIDQ5NjAzLCA0OTYwNywgNDk2MTEsIAotICAgIDQ5NjE1LCA0OTYxOSwgNDk2MjMsIDQ5NjI3LCA0OTYzMSwgNDk2MzUsIDQ5NjM5LCA0OTY0MywgNDk2NDcsIDQ5NjUxLCAKLSAgICA0OTY1NSwgNDk2NTksIDQ5NjYzLCA0OTY2NywgNDk2NzEsIDQ5Njc1LCA0OTY3OSwgNDk2ODMsIDQ5Njg3LCA0OTY5MSwgCi0gICAgNDk2OTUsIDQ5Njk5LCA0OTcwMywgNDk3MDcsIDQ5NzExLCA0OTcxNSwgNDk3MTksIDQ5NzIzLCA0OTcyNywgNDk3MzEsIAotICAgIDQ5NzM1LCA0OTczOSwgNDk3NDMsIDQ5NzQ3LCA0OTc1MSwgNDk3NTUsIDQ5NzU5LCA0OTc2MywgNDk3NjcsIDQ5NzcxLCAKLSAgICA0OTc3NSwgNDk3NzksIDQ5NzgzLCA0OTc4NywgNDk3OTEsIDQ5Nzk1LCA0OTc5OSwgNDk4MDMsIDQ5ODA3LCA0OTgxMSwgCi0gICAgNDk4MTUsIDQ5ODE5LCA0OTgyMywgNDk4MjcsIDQ5ODMxLCA0OTgzNSwgNDk4MzksIDQ5ODQzLCA0OTg0NywgNDk4NTEsIAotICAgIDQ5ODU1LCA0OTg1OSwgNDk4NjMsIDQ5ODY3LCA0OTg3MSwgNDk4NzUsIDQ5ODc5LCA0OTg4MywgNDk4ODcsIDQ5ODkxLCAKLSAgICA0OTg5NSwgNDk4OTksIDQ5OTAzLCA0OTkwNywgNDk5MTEsIDQ5OTE1LCA0OTkxOSwgNDk5MjMsIDQ5OTI3LCA0OTkzMSwgCi0gICAgNDk5MzUsIDQ5OTM5LCA0OTk0MywgNDk5NDcsIDQ5OTUxLCA0OTk1NSwgNDk5NTksIDQ5OTYzLCA0OTk2NywgNDk5NzEsIAotICAgIDQ5OTc1LCA0OTk3OSwgNDk5ODMsIDQ5OTg3LCA0OTk5MSwgNDk5OTUsIDQ5OTk5LCA1MDAwMywgNTAwMDcsIDUwMDExLCAKLSAgICA1MDAxNSwgNTAwMTksIDUwMDIzLCA1MDAyNywgNTAwMzEsIDUwMDM1LCA1MDAzOSwgNTAwNDMsIDUwMDQ3LCA1MDA1MSwgCi0gICAgNTAwNTUsIDUwMDU5LCA1MDA2MywgNTAwNjcsIDUwMDcxLCA1MDA3NSwgNTAwNzksIDUwMDgzLCA1MDA4NywgNTAwOTEsIAotICAgIDUwMDk1LCA1MDA5OSwgNTAxMDMsIDUwMTA3LCA1MDExMSwgNTAxMTUsIDUwMTE5LCA1MDEyMywgNTAxMjcsIDUwMTMxLCAKLSAgICA1MDEzNSwgNTAxMzksIDUwMTQzLCA1MDE0NywgNTAxNTEsIDUwMTU1LCA1MDE1OSwgNTAxNjMsIDUwMTY3LCA1MDE3MSwgCi0gICAgNTAxNzUsIDUwMTc5LCA1MDE4MywgNTAxODcsIDUwMTkxLCA1MDE5NSwgNTAxOTksIDUwMjAzLCA1MDIwNywgNTAyMTEsIAotICAgIDUwMjE1LCA1MDIxOSwgNTAyMjMsIDUwMjI3LCA1MDIzMSwgNTAyMzUsIDUwMjM5LCA1MDI0MywgNTAyNDcsIDUwMjUxLCAKLSAgICA1MDI1NSwgNTAyNTksIDUwMjYzLCA1MDI2NywgNTAyNzEsIDUwMjc1LCA1MDI3OSwgNTAyODMsIDUwMjg3LCA1MDI5MSwgCi0gICAgNTAyOTUsIDUwMjk5LCA1MDMwMywgNTAzMDcsIDUwMzExLCA1MDMxNSwgNTAzMTksIDUwMzIzLCA1MDMyNywgNTAzMzEsIAotICAgIDUwMzM1LCA1MDMzOSwgNTAzNDMsIDUwMzQ3LCA1MDM1MSwgNTAzNTUsIDUwMzU5LCA1MDM2MywgNTAzNjcsIDUwMzcxLCAKLSAgICA1MDM3NSwgNTAzNzksIDUwMzgzLCA1MDM4NywgNTAzOTEsIDUwMzk1LCA1MDM5OSwgNTA0MDMsIDUwNDA3LCA1MDQxMSwgCi0gICAgNTA0MTUsIDUwNDE5LCA1MDQyMywgNTA0MjcsIDUwNDMxLCA1MDQzNSwgNTA0MzksIDUwNDQzLCA1MDQ0NywgNTA0NTEsIAotICAgIDUwNDU1LCA1MDQ1OSwgNTA0NjMsIDUwNDY3LCA1MDQ3MSwgNTA0NzUsIDUwNDc5LCA1MDQ4MywgNTA0ODcsIDUwNDk0LCAKLSAgICA1MDUwMiwgNTA1MDgsIDUwNTE0LCA1MDUyMSwgNTA1MjgsIDUwNTM0LCA1MDU0MCwgNTA1NDYsIDUwNTUyLCA1MDU1NywgCi0gICAgNTA1NjIsIDUwNTY3LCA1MDU3MiwgNTA1NzgsIDUwNTg0LCA1MDU5MiwgNTA1OTksIDUwNjA1LCA1MDYxMSwgNTA2MTksIAotICAgIDUwNjI4LCA1MDYzNSwgNTA2NDUsIDUwNjU2LCA1MDY1OSwgNTA2NjIsIDUwNjY2LCA1MDY3MCwgNTA2NzcsIDUwNjg0LCAKLSAgICA1MDY5NSwgNTA3MDYsIDUwNzE2LCA1MDcyNiwgNTA3MzMsIDUwNzQwLCA1MDc0NywgNTA3NTQsIDUwNzY1LCA1MDc3NiwgCi0gICAgNTA3ODcsIDUwNzk4LCA1MDgwOCwgNTA4MTgsIDUwODMwLCA1MDg0MiwgNTA4NTMsIDUwODY0LCA1MDg3NiwgNTA4ODgsIAotICAgIDUwODk3LCA1MDkwNywgNTA5MTcsIDUwOTI4LCA1MDkzOSwgNTA5NDYsIDUwOTUzLCA1MDk2MCwgNTA5NjcsIDUwOTc3LCAKLSAgICA1MDk4NywgNTA5OTUsIDUxMDAzLCA1MTAxMCwgNTEwMTcsIDUxMDI0LCA1MTAzMSwgNTEwMzgsIDUxMDQzLCA1MTA0OCwgCi0gICAgNTEwNTQsIDUxMDYyLCA1MTA3MiwgNTEwODIsIDUxMDkyLCA1MTEwMiwgNTExMTIsIDUxMTIyLCA1MTEzMiwgNTExNDIsIAotICAgIDUxMTUyLCA1MTE2MiwgNTExNzIsIDUxMTgzLCA1MTE5NCwgNTEyMDQsIDUxMjE0LCA1MTIyNSwgNTEyMzYsIDUxMjQ2LCAKLSAgICA1MTI1NiwgNTEyNjcsIDUxMjc4LCA1MTI4OCwgNTEyOTgsIDUxMzA5LCA1MTMyMCwgNTEzMzYsIDUxMzU1LCA1MTM3MSwgCi0gICAgNTEzOTAsIDUxNDA2LCA1MTQyMiwgNTE0MzgsIDUxNDU0LCA1MTQ2NSwgNTE0NzcsIDUxNDg4LCA1MTUwMCwgNTE1MTksIAotICAgIDUxNTM4LCA1MTU0NiwgNTE1NTIsIDUxNTU5LCA1MTU2NiwgNTE1NzMsIDUxNTgwLCA1MTU4NSwgNTE1OTEsIDUxNTk2LCAKLSAgICA1MTYwMSwgNTE2MDcsIDUxNjEyLCA1MTYxNywgNTE2MjIsIDUxNjI3LCA1MTYzMiwgNTE2MzksIDUxNjQ0LCA1MTY1MSwgCi0gICAgNTE2NTYsIDUxNjYxLCA1MTY2NSwgNTE2NjksIDUxNjc2LCA1MTY4MywgNTE2OTAsIDUxNjk3LCA1MTcwNCwgNTE3MTEsIAotICAgIDUxNzI0LCA1MTczNywgNTE3NTAsIDUxNzYzLCA1MTc3MSwgNTE3NzksIDUxNzg1LCA1MTc5MSwgNTE3OTgsIDUxODA1LCAKLSAgICA1MTgxMiwgNTE4MTksIDUxODIzLCA1MTgyOCwgNTE4MzYsIDUxODQ0LCA1MTg1MiwgNTE4NTksIDUxODYzLCA1MTg3MSwgCi0gICAgNTE4NzksIDUxODgzLCA1MTg4NywgNTE4OTIsIDUxODk5LCA1MTkwNywgNTE5MTUsIDUxOTM0LCA1MTk1MywgNTE5NzIsIAotICAgIDUxOTkxLCA1MjAxMCwgNTIwMjksIDUyMDQ4LCA1MjA2NywgNTIwNzMsIDUyMDgwLCA1MjA4OSwgNTIwOTcsIDUyMTA1LCAKLSAgICA1MjExMCwgNTIxMTMsIDUyMTE2LCA1MjEyMSwgNTIxMjQsIDUyMTQzLCA1MjE1MCwgNTIxNTYsIDUyMTYyLCA1MjE2NiwgCi0gICAgNTIxNjksIDUyMTcyLCA1MjE3NSwgNTIxODcsIDUyMjAwLCA1MjIwNywgNTIyMTQsIDUyMjE3LCA1MjIyMSwgNTIyMjQsIAotICAgIDUyMjI5LCA1MjIzNCwgNTIyMzksIDUyMjQ1LCA1MjI1NCwgNTIyNjEsIDUyMjY4LCA1MjI3NiwgNTIyODMsIDUyMjkwLCAKLSAgICA1MjI5MywgNTIyOTksIDUyMzA1LCA1MjMwOCwgNTIzMTEsIDUyMzE2LCA1MjMyMSwgNTIzMjcsIDUyMzMzLCA1MjMzNywgCi0gICAgNTIzNDIsIDUyMzQ5LCA1MjM1MywgNTIzNTksIDUyMzYzLCA1MjM2NywgNTIzNzUsIDUyMzg3LCA1MjM5NiwgNTI0MDAsIAotICAgIDUyNDAyLCA1MjQxMSwgNTI0MjAsIDUyNDI2LCA1MjQyOSwgNTI0MzUsIDUyNDQxLCA1MjQ0NiwgNTI0NTEsIDUyNDU2LCAKLSAgICA1MjQ2MSwgNTI0NjYsIDUyNDcxLCA1MjQ3MywgNTI0NzksIDUyNDg0LCA1MjQ5MSwgNTI0OTUsIDUyNTAxLCA1MjUwNCwgCi0gICAgNTI1MDgsIDUyNTE1LCA1MjUyMiwgNTI1MjQsIDUyNTI2LCA1MjUzMiwgNTI1MzgsIDUyNTQ0LCA1MjU1MywgNTI1NjIsIAotICAgIDUyNTY5LCA1MjU3NiwgNTI1ODIsIDUyNTg4LCA1MjU5MywgNTI1OTgsIDUyNjAzLCA1MjYwOSwgNTI2MTUsIDUyNjIwLCAKLSAgICA1MjYyNywgNTI2MzEsIDUyNjM1LCA1MjY0OCwgNTI2NjEsIDUyNjczLCA1MjY4MiwgNTI2ODgsIDUyNjk1LCA1MjcwMCwgCi0gICAgNTI3MDUsIDUyNzEwLCA1MjcxNSwgNTI3MjAsIDUyNzIyLCA1MjcyOSwgNTI3MzYsIDUyNzQzLCA1Mjc1MCwgNTI3NTcsIAotICAgIDUyNzY1LCA1Mjc3MSwgNTI3NzYsIDUyNzgyLCA1Mjc4OCwgNTI3OTQsIDUyODAxLCA1MjgwNywgNTI4MTUsIDUyODIzLCAKLSAgICA1MjgzMSwgNTI4MzksIDUyODQ2LCA1Mjg1MiwgNTI4NTgsIDUyODY3LCA1Mjg3MSwgNTI4ODAsIDUyODg5LCA1Mjg5OCwgCi0gICAgNTI5MDYsIDUyOTEwLCA1MjkxNiwgNTI5MjMsIDUyOTMwLCA1MjkzNCwgNTI5NDAsIDUyOTQ3LCA1Mjk1MiwgNTI5NTcsIAotICAgIDUyOTYzLCA1Mjk2OCwgNTI5NzMsIDUyOTgwLCA1Mjk4NywgNTI5OTIsIDUyOTk3LCA1MzAwNSwgNTMwMTMsIDUzMDIzLCAKLSAgICA1MzAzMywgNTMwNDAsIDUzMDQ3LCA1MzA1MSwgNTMwNTUsIDUzMDY3LCA1MzA3MywgNTMwNzksIDUzMDg0LCA1MzA4OSwgCi0gICAgNTMwOTYsIDUzMTAzLCA1MzEwOSwgNTMxMTUsIDUzMTI0LCA1MzEzMiwgNTMxNDAsIDUzMTQ3LCA1MzE1NCwgNTMxNjEsIAotICAgIDUzMTY3LCA1MzE3NCwgNTMxODAsIDUzMTg3LCA1MzE5NCwgNTMyMDEsIDUzMjA4LCA1MzIxNCwgNTMyMTksIDUzMjI4LCAKLSAgICA1MzIzOCwgNTMyNDUsIDUzMjU0LCA1MzI2MCwgNTMyNjUsIDUzMjcwLCA1MzI4MCwgNTMyODYsIDUzMjkyLCA1MzI5OCwgCi0gICAgNTMzMDYsIDUzMzExLCA1MzMxOCwgNTMzMjUsIDUzMzM2LCA1MzM0MywgNTMzNTAsIDUzMzU3LCA1MzM2NCwgNTMzNzEsIAotICAgIDUzMzc4LCA1MzM4NSwgNTMzOTcsIDUzNDA5LCA1MzQyMCwgNTM0MzEsIDUzNDQ0LCA1MzQ1NywgNTM0NjIsIDUzNDY3LCAKLSAgICA1MzQ3NiwgNTM0ODUsIDUzNDkyLCA1MzQ5OSwgNTM1MDgsIDUzNTE3LCA1MzUyNSwgNTM1MzMsIDUzNTQxLCA1MzU0OSwgCi0gICAgNTM1NTksIDUzNTY5LCA1MzU4MywgNTM1OTcsIDUzNjA1LCA1MzYxMywgNTM2MjUsIDUzNjM3LCA1MzY0NSwgNTM2NTMsIAotICAgIDUzNjYzLCA1MzY3MywgNTM2NzgsIDUzNjgzLCA1MzY5MiwgNTM3MDEsIDUzNzA2LCA1MzcxMSwgNTM3MTksIDUzNzI1LCAKLSAgICA1MzczMSwgNTM3MzksIDUzNzQ3LCA1Mzc2MCwgNTM3NzMsIDUzNzc3LCA1Mzc4MSwgNTM3ODgsIDUzNzk1LCA1MzgwMiwgCi0gICAgNTM4MTAsIDUzODE4LCA1MzgyNywgNTM4MzYsIDUzODQyLCA1Mzg0OCwgNTM4NTUsIDUzODYyLCA1Mzg2OSwgNTM4NzYsIAotICAgIDUzODg1LCA1Mzg5NCwgNTM4OTcsIDUzOTAwLCA1MzkwNSwgNTM5MTAsIDUzOTE2LCA1MzkyMiwgNTM5MjksIDUzOTM2LCAKLSAgICA1Mzk0NiwgNTM5NTYsIDUzOTYzLCA1Mzk3MCwgNTM5NzgsIDUzOTg2LCA1Mzk5NCwgNTQwMDIsIDU0MDEwLCA1NDAxOCwgCi0gICAgNTQwMjQsIDU0MDMwLCA1NDAzNCwgNTQwMzgsIDU0MDQ1LCA1NDA1MiwgNTQwNTcsIDU0MDYyLCA1NDA2NywgNTQwNzIsIAotICAgIDU0MDc4LCA1NDA5MiwgNTQwOTksIDU0MTA2LCA1NDExMCwgNTQxMTIsIDU0MTE0LCA1NDExOSwgNTQxMjQsIDU0MTI5LCAKLSAgICA1NDEzNCwgNTQxNDIsIDU0MTQ5LCA1NDE1NiwgNTQxNjQsIDU0MTc2LCA1NDE4NCwgNTQxOTIsIDU0MjAzLCA1NDIwNywgCi0gICAgNTQyMTEsIDU0MjE3LCA1NDIyNSwgNTQyMzgsIDU0MjQ1LCA1NDI1MiwgNTQyNTksIDU0MjY0LCA1NDI3MSwgNTQyODAsIAotICAgIDU0Mjg4LCA1NDI5NCwgNTQzMDAsIDU0MzA2LCA1NDMxNSwgNTQzMjQsIDU0MzMyLCA1NDM0MSwgNTQzNDYsIDU0MzQ5LCAKLSAgICA1NDM1NCwgNTQzNjAsIDU0MzY2LCA1NDM3MiwgNTQzNzgsIDU0MzgyLCA1NDM4NSwgNTQzODksIDU0MzkzLCA1NDM5OSwgCi0gICAgNTQ0MDUsIDU0NDExLCA1NDQxNywgNTQ0MjEsIDU0NDI1LCA1NDQzMiwgNTQ0MzksIDU0NDQ2LCA1NDQ1MywgNTQ0NjAsIAotICAgIDU0NDY3LCA1NDQ3NywgNTQ0ODcsIDU0NDk0LCA1NDUwMSwgNTQ1MDksIDU0NTE3LCA1NDUyMSwgNTQ1MjYsIDU0NTMxLCAKLSAgICA1NDUzNywgNTQ1NDMsIDU0NTQ2LCA1NDU0OSwgNTQ1NTIsIDU0NTU1LCA1NDU1OSwgNTQ1NjQsIDU0NTY5LCA1NDU3NCwgCi0gICAgNTQ1NzksIDU0NTg0LCA1NDU4OCwgNTQ1OTIsIDU0NTk2LCA1NDYwMCwgNTQ2MDQsIDU0NjA4LCA1NDYxMiwgNTQ2MTgsIAotICAgIDU0NjIyLCA1NDYyOCwgNTQ2MzMsIDU0NjQwLCA1NDY0OCwgNTQ2NTUsIDU0NjYzLCA1NDY3MCwgNTQ2NzgsIDU0Njg3LCAKLSAgICA1NDY5NCwgNTQ3MDQsIDU0NzE1LCA1NDcyMSwgNTQ3MzAsIDU0NzM2LCA1NDc0NSwgNTQ3NTQsIDU0NzYwLCA1NDc2NiwgCi0gICAgNTQ3NzAsIDU0Nzc0LCA1NDc4MywgNTQ3OTIsIDU0Nzk5LCA1NDgwNiwgNTQ4MTUsIDAsIDAsIDAsIDU0ODI0LCA1NDgyOSwgCi0gICAgNTQ4MzMsIDU0ODM3LCA1NDg0MiwgNTQ4NDcsIDU0ODUyLCA1NDg2MCwgNTQ4NjgsIDU0ODcxLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA3NTA1NiwgNzUwNjMsIDc1MDcwLCA3NTA3NiwgNzUwODQsIDc1MDkyLCA3NTEwMCwgNzUxMDgsIDc1MTE2LCAKKyAgICA3NTEyNCwgNzUxMzAsIDc1MTM2LCA3NTE0MywgNzUxNDksIDc1MTU1LCA3NTE2MSwgNzUxNjgsIDc1MTc1LCA3NTE4MiwgCisgICAgNzUxODksIDc1MTk2LCA3NTIwMywgNzUyMTAsIDc1MjE3LCA3NTIyNCwgNzUyMzEsIDc1MjM4LCA3NTI0NSwgNzUyNTIsIAorICAgIDc1MjU5LCA3NTI2NSwgNzUyNzIsIDc1Mjc5LCA3NTI4NiwgNzUyOTMsIDc1MzAwLCA3NTMwNywgNzUzMTQsIDc1MzIxLCAKKyAgICA3NTMyOCwgNzUzMzUsIDc1MzQyLCA3NTM0OSwgNzUzNTYsIDc1MzYzLCA3NTM3MCwgNzUzNzcsIDc1Mzg0LCA3NTM5MSwgCisgICAgNzUzOTksIDc1NDA3LCA3NTQxNSwgNzU0MjMsIDAsIDAsIDAsIDAsIDc1NDMxLCA3NTQzOSwgNzU0NDcsIDc1NDU1LCAKKyAgICA3NTQ2MywgNzU0NzEsIDc1NDc5LCA3NTQ4NSwgNzU0OTEsIDc1NDk3LCAwLCAwLCAwLCAwLCAwLCAwLCA3NTUwMywgNzU1MDcsIAorICAgIDc1NTEyLCA3NTUxNywgNzU1MjIsIDc1NTI3LCA3NTUzMiwgNzU1MzcsIDc1NTQyLCA3NTU0NywgNzU1NTIsIDc1NTU3LCAKKyAgICA3NTU2MiwgNzU1NjYsIDc1NTcxLCA3NTU3NiwgNzU1ODAsIDc1NTg1LCA3NTU5MCwgNzU1OTUsIDc1NjAwLCA3NTYwNSwgCisgICAgNzU2MTAsIDc1NjE1LCA3NTYxOSwgNzU2MjQsIDc1NjI5LCA3NTYzNCwgNzU2MzksIDc1NjQzLCA3NTY0NywgNzU2NTEsIAorICAgIDc1NjU1LCA3NTY1OSwgNzU2NjMsIDc1NjY4LCA3NTY3MywgNzU2NzgsIDc1NjgzLCA3NTY4OCwgNzU2OTUsIDc1NzAxLCAKKyAgICA3NTcwNiwgNzU3MTEsIDc1NzE2LCA3NTcyMSwgNzU3MjcsIDc1NzM0LCA3NTc0MCwgNzU3NDcsIDc1NzU0LCA3NTc2MSwgCisgICAgNzU3NjYsIDc1NzczLCA3NTc3OSwgNzU3ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1NzkwLCA3NTc5NSwgNzU4MDAsIAorICAgIDc1ODA0LCA3NTgwOSwgNzU4MTMsIDc1ODE4LCA3NTgyMiwgNzU4MjcsIDc1ODMyLCA3NTgzOCwgNzU4NDMsIDc1ODQ5LCAKKyAgICA3NTg1MywgNzU4NTgsIDc1ODYzLCA3NTg2NywgNzU4NzIsIDc1ODc3LCA3NTg4MSwgNzU4ODYsIDc1ODkxLCA3NTg5NiwgCisgICAgNzU5MDEsIDc1OTA2LCA3NTkxMSwgNzU5MTYsIDc1OTIxLCA3NTkyNiwgNzU5MzEsIDc1OTM2LCA3NTk0MSwgNzU5NDYsIAorICAgIDc1OTUxLCA3NTk1NiwgNzU5NjEsIDc1OTY2LCA3NTk3MSwgNzU5NzYsIDc1OTgwLCA3NTk4NSwgNzU5OTAsIDc1OTk1LCAKKyAgICA3NTk5OSwgNzYwMDMsIDc2MDA4LCA3NjAxMywgNzYwMTgsIDc2MDIzLCA3NjAyOCwgNzYwMzMsIDc2MDM3LCA3NjA0MiwgCisgICAgNzYwNDgsIDc2MDU0LCA3NjA1OSwgNzYwNjUsIDc2MDcwLCA3NjA3NiwgNzYwODIsIDc2MDg5LCA3NjA5NSwgNzYxMDIsIAorICAgIDc2MTA3LCA3NjExMywgNzYxMTksIDc2MTI0LCA3NjEzMCwgNzYxMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDc2MTQxLCA3NjE0NSwgNzYxNTAsIDc2MTU1LCA3NjE1OSwgNzYxNjMsIDc2MTY3LCA3NjE3MSwgNzYxNzUsIDc2MTc5LCAKKyAgICA3NjE4NCwgNzYxODgsIDAsIDAsIDAsIDAsIDAsIDAsIDc2MTkzLCA3NjE5OCwgNzYyMDIsIDc2MjA2LCA3NjIxMCwgNzYyMTQsIAorICAgIDc2MjE4LCA3NjIyMiwgNzYyMjcsIDc2MjMxLCA3NjIzNiwgNzYyNDAsIDc2MjQ0LCA3NjI0OCwgNzYyNTMsIDc2MjU3LCAKKyAgICA3NjI2MiwgNzYyNjcsIDc2MjcyLCA3NjI3OCwgNzYyODQsIDc2MjkxLCA3NjI5NiwgNzYzMDEsIDc2MzA3LCA3NjMxMSwgCisgICAgNzYzMTYsIDc2MzE5LCA3NjMyMiwgNzYzMjYsIDAsIDAsIDc2MzMxLCA3NjMzOCwgNzYzNDQsIDc2MzUwLCA3NjM1NiwgCisgICAgNzYzNjIsIDc2MzY4LCA3NjM3NCwgNzYzODEsIDc2Mzg3LCA3NjM5NCwgNzY0MDAsIDc2NDA3LCA3NjQxNCwgNzY0MjEsIAorICAgIDc2NDI4LCA3NjQzNSwgNzY0NDIsIDc2NDQ5LCA3NjQ1NiwgNzY0NjMsIDc2NDcwLCA3NjQ3NiwgNzY0ODMsIDc2NDg5LCAKKyAgICA3NjQ5NiwgNzY1MDMsIDc2NTEwLCA3NjUxNiwgNzY1MjMsIDc2NTMwLCA3NjUzNywgNzY1NDMsIDc2NTUwLCA3NjU1NywgCisgICAgNzY1NjMsIDc2NTcwLCA3NjU3NiwgNzY1ODMsIDc2NTkwLCA3NjU5NiwgNzY2MDIsIDc2NjA5LCA3NjYxNSwgNzY2MjIsIAorICAgIDc2NjI5LCA3NjYzOCwgNzY2NDUsIDc2NjUyLCA3NjY1NiwgNzY2NjEsIDc2NjY2LCA3NjY3MSwgNzY2NzYsIDc2NjgxLCAKKyAgICA3NjY4NSwgNzY2OTAsIDc2Njk0LCA3NjY5OSwgNzY3MDQsIDc2NzA5LCA3NjcxNCwgNzY3MTksIDc2NzI0LCA3NjcyOCwgCisgICAgNzY3MzMsIDc2NzM3LCA3Njc0MiwgNzY3NDcsIDc2NzUyLCA3Njc1NywgNzY3NjEsIDc2NzY2LCA3Njc3MSwgNzY3NzYsIAorICAgIDc2NzgyLCA3Njc4NywgNzY3OTMsIDc2Nzk5LCA3NjgwNSwgNzY4MTEsIDc2ODE3LCA3NjgyMiwgNzY4MjgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc2ODMyLCA3NjgzNywgNzY4NDEsIDc2ODQ1LCA3Njg0OSwgNzY4NTMsIDc2ODU3LCAKKyAgICA3Njg2MSwgNzY4NjUsIDc2ODY5LCA3Njg3MywgNzY4NzcsIDc2ODgxLCA3Njg4NSwgNzY4ODksIDc2ODkzLCA3Njg5NywgCisgICAgNzY5MDEsIDc2OTA1LCA3NjkwOSwgNzY5MTMsIDc2OTE3LCA3NjkyMSwgNzY5MjUsIDc2OTI5LCA3NjkzMywgNzY5MzcsIAorICAgIDc2OTQxLCA3Njk0NSwgNzY5NDksIDAsIDAsIDAsIDc2OTUzLCA3Njk1NywgNzY5NjEsIDc2OTY1LCA3Njk2OSwgNzY5NzIsIAorICAgIDc2OTc4LCA3Njk4MSwgNzY5ODUsIDc2OTg4LCA3Njk5NCwgNzcwMDAsIDc3MDA4LCA3NzAxMSwgNzcwMTUsIDc3MDE4LCAKKyAgICA3NzAyMSwgNzcwMjcsIDc3MDMzLCA3NzAzNywgNzcwNDMsIDc3MDQ3LCA3NzA1MSwgNzcwNTcsIDc3MDYxLCA3NzA2NywgCisgICAgNzcwNzMsIDc3MDc3LCA3NzA4MSwgNzcwODcsIDc3MDkxLCA3NzA5NywgNzcxMDMsIDc3MTA3LCA3NzExMywgNzcxMTcsIAorICAgIDc3MTIzLCA3NzEyNywgNzcxMzAsIDc3MTM2LCA3NzE0MCwgNzcxNDYsIDc3MTQ5LCA3NzE1MiwgNzcxNTYsIDc3MTYyLCAKKyAgICA3NzE2NiwgNzcxNzAsIDc3MTc2LCA3NzE4MiwgNzcxODYsIDc3MTg5LCA3NzE5NSwgNzcyMDAsIDc3MjA1LCA3NzIxMCwgCisgICAgNzcyMTcsIDc3MjIyLCA3NzIyOSwgNzcyMzQsIDc3MjQxLCA3NzI0NiwgNzcyNTEsIDc3MjU2LCA3NzI2MSwgNzcyNjQsIAorICAgIDc3MjY4LCA3NzI3MiwgNzcyNzcsIDc3MjgyLCA3NzI4NywgNzcyOTIsIDc3Mjk3LCA3NzMwMiwgNzczMDcsIDc3MzEyLCAKKyAgICA3NzMxOSwgNzczMjQsIDAsIDc3MzMxLCA3NzMzNCwgNzczMzgsIDc3MzQxLCA3NzM0NCwgNzczNDcsIDc3MzUwLCA3NzM1MywgCisgICAgNzczNTYsIDc3MzYwLCA3NzM2MywgMCwgMCwgMCwgMCwgNzczNjcsIDc3Mzc0LCA3NzM3OSwgNzczODUsIDc3MzkxLCAKKyAgICA3NzM5NywgNzc0MDMsIDc3NDA5LCA3NzQxNSwgNzc0MjIsIDc3NDI5LCA3NzQzNiwgNzc0NDMsIDc3NDUwLCA3NzQ1NywgCisgICAgNzc0NjQsIDc3NDcxLCA3NzQ3OCwgNzc0ODUsIDc3NDkyLCA3NzQ5OCwgNzc1MDQsIDc3NTEwLCA3NzUxNiwgNzc1MjIsIAorICAgIDc3NTI4LCA3NzUzNSwgNzc1NDEsIDc3NTQ4LCA3NzU1NSwgNzc1NjIsIDc3NTY5LCA3NzU3NiwgMCwgNzc1ODMsIDc3NTg3LCAKKyAgICA3NzU5MSwgNzc1OTUsIDc3NTk5LCA3NzYwNCwgNzc2MDgsIDc3NjEyLCA3NzYxNywgNzc2MjIsIDc3NjI3LCA3NzYzMiwgCisgICAgNzc2MzcsIDc3NjQyLCA3NzY0NywgNzc2NTIsIDc3NjU3LCA3NzY2MiwgNzc2NjcsIDc3NjcyLCA3NzY3NywgNzc2ODIsIAorICAgIDc3Njg3LCA3NzY5MiwgNzc2OTcsIDc3NzAyLCA3NzcwNywgNzc3MTEsIDc3NzE2LCA3NzcyMSwgNzc3MjYsIDc3NzMxLCAKKyAgICA3NzczNiwgNzc3NDAsIDc3NzQ1LCA3Nzc0OSwgNzc3NTQsIDc3NzU5LCA3Nzc2NCwgNzc3NjksIDc3Nzc0LCA3Nzc3OCwgCisgICAgNzc3ODQsIDc3Nzg5LCA3Nzc5NSwgNzc4MDEsIDc3ODA2LCA3NzgxMiwgNzc4MTcsIDc3ODIzLCA3NzgyOSwgNzc4MzUsIAorICAgIDc3ODQwLCA3Nzg0NiwgNzc4NTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc3ODU4LCA3Nzg2NCwgNzc4NzAsIAorICAgIDc3ODc2LCA3Nzg4MywgNzc4ODksIDc3ODk1LCA3NzkwMSwgNzc5MDcsIDc3OTEzLCA3NzkxOCwgNzc5MjMsIDc3OTI5LCAKKyAgICA3NzkzNiwgMCwgMCwgNzc5NDMsIDc3OTQ4LCA3Nzk1MiwgNzc5NTYsIDc3OTYwLCA3Nzk2NCwgNzc5NjgsIDc3OTcyLCAKKyAgICA3Nzk3NywgNzc5ODEsIDAsIDAsIDc3OTg2LCA3Nzk5MiwgNzc5OTgsIDc4MDA1LCA3ODAxMywgNzgwMTksIDc4MDI1LCAKKyAgICA3ODAzMSwgNzgwMzcsIDc4MDQzLCA3ODA0OSwgNzgwNTUsIDc4MDYxLCA3ODA2NywgNzgwNzMsIDc4MDc5LCA3ODA4NSwgCisgICAgNzgwOTEsIDc4MDk2LCA3ODEwMiwgNzgxMDgsIDc4MTE1LCA3ODEyMSwgNzgxMjcsIDc4MTMzLCA3ODE0MCwgNzgxNDcsIAorICAgIDc4MTU0LCA3ODE2MCwgNzgxNjUsIDc4MTcwLCA3ODE3NiwgNzgxODQsIDc4MTkxLCA3ODE5OCwgNzgyMDYsIDc4MjE0LCAKKyAgICA3ODIyMSwgNzgyMjgsIDc4MjM1LCA3ODI0MiwgNzgyNDksIDc4MjU2LCA3ODI2MywgNzgyNzAsIDc4Mjc3LCA3ODI4NCwgCisgICAgNzgyOTEsIDc4Mjk4LCA3ODMwNSwgNzgzMTIsIDc4MzE5LCA3ODMyNiwgNzgzMzMsIDc4MzQwLCA3ODM0NywgNzgzNTQsIAorICAgIDc4MzYwLCA3ODM2NiwgNzgzNzMsIDc4MzgwLCA3ODM4NywgNzgzOTQsIDc4NDAxLCA3ODQwOCwgNzg0MTUsIDc4NDIyLCAKKyAgICA3ODQyOSwgNzg0MzYsIDc4NDQzLCA3ODQ1MCwgNzg0NTcsIDc4NDY0LCA3ODQ3MSwgNzg0NzgsIDc4NDg1LCA3ODQ5MiwgCisgICAgNzg0OTksIDc4NTA2LCA3ODUxMywgNzg1MjAsIDc4NTI3LCA3ODUzNCwgNzg1NDAsIDc4NTQ2LCA3ODU1MywgNzg1NTksIAorICAgIDc4NTY0LCA3ODU3MCwgNzg1NzUsIDc4NTgwLCA3ODU4NSwgNzg1OTIsIDc4NTk4LCA3ODYwNCwgNzg2MTAsIDc4NjE2LCAKKyAgICA3ODYyMiwgNzg2MjgsIDc4NjM0LCA3ODY0MiwgNzg2NTAsIDc4NjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3ODY2NiwgNzg2NzIsIDc4Njc4LCA3ODY4NCwgCisgICAgNzg2OTIsIDc4NzAwLCA3ODcwNiwgNzg3MTIsIDc4NzE5LCA3ODcyNiwgNzg3MzMsIDc4NzQwLCA3ODc0NywgNzg3NTQsIAorICAgIDc4NzYxLCA3ODc2OCwgNzg3NzUsIDc4NzgzLCA3ODc5MSwgNzg3OTksIDc4ODA3LCA3ODgxNSwgNzg4MjEsIDc4ODI5LCAKKyAgICA3ODgzNSwgNzg4NDMsIDc4ODUyLCA3ODg2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzg4NjYsIDc4ODcwLCAKKyAgICA3ODg3NCwgNzg4NzgsIDc4ODgyLCA3ODg4NiwgMCwgMCwgNzg4OTAsIDc4ODk0LCA3ODg5OCwgNzg5MDIsIDc4OTA2LCAKKyAgICA3ODkxMCwgMCwgMCwgNzg5MTQsIDc4OTE4LCA3ODkyMiwgNzg5MjYsIDc4OTMwLCA3ODkzNCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNzg5MzgsIDc4OTQyLCA3ODk0NiwgNzg5NTAsIDc4OTU0LCA3ODk1OCwgNzg5NjIsIDAsIDc4OTY2LCAKKyAgICA3ODk3MCwgNzg5NzQsIDc4OTc4LCA3ODk4MiwgNzg5ODYsIDc4OTkwLCAwLCA3ODk5NCwgNzkwMDEsIDc5MDA3LCA3OTAxMywgCisgICAgNzkwMTksIDc5MDI2LCA3OTAzMywgNzkwNDIsIDc5MDUzLCA3OTA2MywgNzkwNzIsIDc5MDgwLCA3OTA4OCwgNzkwOTYsIAorICAgIDc5MTAyLCA3OTExMCwgNzkxMTcsIDc5MTI0LCA3OTEzMywgNzkxNDQsIDc5MTUyLCA3OTE2MiwgNzkxNjgsIDc5MTc4LCAKKyAgICA3OTE4NywgNzkxOTIsIDc5MjAwLCA3OTIwOSwgNzkyMTQsIDc5MjIzLCA3OTIzMCwgNzkyNDAsIDc5MjUyLCA3OTI1NywgCisgICAgNzkyNjQsIDc5MjcxLCA3OTI3NiwgNzkyODYsIDc5Mjk2LCA3OTMwNiwgNzkzMTYsIDc5MzMxLCA3OTM0NCwgNzkzNTUsIAorICAgIDc5MzYzLCA3OTM2OCwgNzkzNzksIDc5Mzg4LCA3OTM5NSwgNzk0MDIsIDc5NDA4LCA3OTQxNCwgNzk0MTksIDc5NDI2LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OTQzMiwgNzk0MzYsIDc5NDQwLCA3OTQ0NCwgNzk0NDgsIDc5NDUyLCAKKyAgICA3OTQ1NywgNzk0NjIsIDc5NDY2LCA3OTQ3MSwgNzk0NzYsIDc5NDgxLCA3OTQ4NiwgNzk0OTEsIDc5NDk1LCA3OTUwMCwgCisgICAgNzk1MDUsIDc5NTEwLCA3OTUxNSwgNzk1MjAsIDc5NTI1LCA3OTUzMCwgNzk1MzUsIDc5NTQwLCA3OTU0NSwgNzk1NTAsIAorICAgIDc5NTU0LCA3OTU1OSwgNzk1NjQsIDc5NTY5LCA3OTU3NCwgNzk1NzksIDc5NTg0LCA3OTU4OSwgNzk1OTQsIDc5NTk5LCAKKyAgICA3OTYwNCwgNzk2MDksIDc5NjE0LCA3OTYxOSwgNzk2MjQsIDc5NjI5LCA3OTYzNCwgNzk2MzksIDc5NjQ0LCA3OTY0OSwgCisgICAgNzk2NTMsIDc5NjU4LCA3OTY2MywgNzk2NjgsIDc5NjczLCA3OTY3OCwgNzk2ODMsIDc5Njg4LCA3OTY5MywgNzk2OTgsIAorICAgIDc5NzAzLCA3OTcwOCwgNzk3MTMsIDc5NzE4LCA3OTcyMywgNzk3MjgsIDc5NzMzLCA3OTczOCwgNzk3NDMsIDc5NzQ4LCAKKyAgICA3OTc1MywgNzk3NTgsIDc5NzYzLCA3OTc2OCwgNzk3NzMsIDc5Nzc4LCA3OTc4MywgNzk3ODgsIDc5NzkzLCA3OTc5OCwgCisgICAgNzk4MDMsIDc5ODA4LCA3OTgxMywgNzk4MTgsIDc5ODIyLCA3OTgyOSwgNzk4MzYsIDc5ODQzLCA3OTg1MCwgNzk4NTYsIAorICAgIDc5ODYzLCA3OTg3MCwgNzk4NzcsIDc5ODg0LCA3OTg5MSwgNzk4OTgsIDc5OTA1LCA3OTkxMiwgNzk5MTksIDc5OTI2LCAKKyAgICA3OTkzMiwgNzk5MzksIDc5OTQ2LCA3OTk1MywgNzk5NjAsIDc5OTY3LCA3OTk3NCwgNzk5ODEsIDc5OTg4LCA3OTk5NSwgCisgICAgODAwMDIsIDgwMDA5LCA4MDAxOCwgODAwMjcsIDgwMDM2LCA4MDA0NSwgODAwNTQsIDgwMDYzLCA4MDA3MiwgODAwODEsIAorICAgIDgwMDg5LCA4MDA5NywgODAxMDUsIDgwMTEzLCA4MDEyMSwgODAxMjksIDgwMTM3LCA4MDE0NSwgODAxNTEsIDgwMTU5LCAwLCAKKyAgICAwLCA4MDE2NywgODAxNzQsIDgwMTgwLCA4MDE4NiwgODAxOTIsIDgwMTk4LCA4MDIwNCwgODAyMTAsIDgwMjE3LCA4MDIyMywgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ4NzUsIDU0ODgwLCA1NDg4NSwgCi0gICAgNTQ4OTAsIDU0ODk1LCA1NDkwMCwgNTQ5MDUsIDU0OTEwLCA1NDkxNSwgNTQ5MjAsIDU0OTI1LCA1NDkzMSwgNTQ5MzUsIAotICAgIDU0OTQwLCA1NDk0NSwgNTQ5NTAsIDU0OTU1LCA1NDk2MCwgNTQ5NjUsIDU0OTcwLCA1NDk3NSwgNTQ5ODAsIDU0OTg1LCAKLSAgICA1NDk5MCwgNTQ5OTUsIDU1MDAwLCA1NTAwNSwgNTUwMTAsIDU1MDE1LCA1NTAyMCwgNTUwMjUsIDU1MDMwLCA1NTAzNSwgCi0gICAgNTUwNDAsIDU1MDQ1LCA1NTA1MSwgNTUwNTYsIDU1MDYyLCA1NTA3MSwgNTUwNzYsIDU1MDg0LCA1NTA5MSwgNTUxMDAsIAotICAgIDU1MTA1LCA1NTExMCwgNTUxMTUsIDU1MTIxLCAwLCA1NTEyOCwgNTUxMzMsIDU1MTM4LCA1NTE0MywgNTUxNDgsIDU1MTUzLCAKLSAgICA1NTE1OCwgNTUxNjMsIDU1MTY4LCA1NTE3MywgNTUxNzgsIDU1MTg0LCA1NTE4OCwgNTUxOTMsIDU1MTk4LCA1NTIwMywgCi0gICAgNTUyMDgsIDU1MjEzLCA1NTIxOCwgNTUyMjMsIDU1MjI4LCA1NTIzMywgNTUyMzgsIDU1MjQzLCA1NTI0OCwgNTUyNTMsIAotICAgIDU1MjU4LCA1NTI2MywgNTUyNjgsIDU1MjczLCA1NTI3OCwgNTUyODMsIDU1Mjg4LCA1NTI5MywgNTUyOTgsIDU1MzA0LCAKLSAgICA1NTMwOSwgNTUzMTUsIDU1MzI0LCA1NTMyOSwgNTUzMzcsIDU1MzQ0LCA1NTM1MywgNTUzNTgsIDU1MzYzLCA1NTM2OCwgCi0gICAgNTUzNzQsIDAsIDU1MzgxLCA1NTM4OSwgNTUzOTcsIDU1NDA2LCA1NTQxMywgNTU0MjEsIDU1NDI3LCA1NTQzNiwgNTU0NDQsIAotICAgIDU1NDUyLCA1NTQ2MCwgNTU0NjgsIDU1NDc2LCA1NTQ4NCwgNTU0ODksIDU1NDk2LCA1NTUwMiwgNTU1MDksIDU1NTE3LCAKLSAgICA1NTUyNCwgNTU1MzEsIDU1NTM5LCA1NTU0NSwgNTU1NTEsIDU1NTU4LCA1NTU2NSwgNTU1NzUsIDU1NTg1LCA1NTU5MiwgCi0gICAgNTU1OTksIDU1NjA0LCA1NTYxNCwgNTU2MjQsIDU1NjI5LCA1NTYzNCwgNTU2MzksIDU1NjQ0LCA1NTY0OSwgNTU2NTQsIAotICAgIDU1NjU5LCA1NTY2NCwgNTU2NjksIDU1Njc0LCA1NTY3OSwgNTU2ODQsIDU1Njg5LCA1NTY5NCwgNTU2OTksIDU1NzA0LCAKLSAgICA1NTcwOSwgNTU3MTQsIDU1NzE5LCA1NTcyNCwgNTU3MjksIDU1NzM0LCA1NTczOSwgNTU3NDQsIDU1NzQ5LCA1NTc1NCwgCi0gICAgNTU3NTksIDU1NzY0LCA1NTc2OSwgNTU3NzQsIDU1Nzc4LCA1NTc4MiwgNTU3ODcsIDU1NzkyLCA1NTc5NywgNTU4MDIsIAotICAgIDU1ODA3LCA1NTgxMiwgNTU4MTcsIDU1ODIyLCA1NTgyNywgNTU4MzIsIDU1ODM3LCA1NTg0MiwgNTU4NDcsIDU1ODUyLCAKLSAgICA1NTg1NywgNTU4NjIsIDU1ODY3LCA1NTg3MiwgNTU4NzksIDU1ODg2LCA1NTg5MywgNTU5MDAsIDU1OTA3LCA1NTkxNCwgCi0gICAgNTU5MjEsIDU1OTI4LCA1NTkzNSwgNTU5NDIsIDU1OTQ5LCA1NTk1NiwgNTU5NjMsIDU1OTcwLCA1NTk3NSwgNTU5ODAsIAotICAgIDU1OTg3LCA1NTk5NCwgNTYwMDEsIDU2MDA4LCA1NjAxNSwgNTYwMjIsIDU2MDI5LCA1NjAzNiwgNTYwNDMsIDU2MDUwLCAKLSAgICA1NjA1NywgNTYwNjQsIDU2MDcwLCA1NjA3NiwgNTYwODIsIDU2MDg4LCA1NjA5NSwgNTYxMDIsIDU2MTA5LCA1NjExNiwgCi0gICAgNTYxMjMsIDU2MTMwLCA1NjEzNywgNTYxNDQsIDU2MTUxLCA1NjE1OCwgNTYxNjYsIDU2MTc0LCA1NjE4MiwgNTYxOTAsIAotICAgIDU2MTk4LCA1NjIwNiwgNTYyMTQsIDU2MjIyLCA1NjIyNiwgNTYyMzIsIDU2MjM4LCA1NjI0MiwgNTYyNDgsIDU2MjU0LCAKLSAgICA1NjI2MCwgNTYyNjcsIDU2Mjc0LCA1NjI4MSwgNTYyODgsIDU2MjkzLCA1NjI5OSwgNTYzMDUsIDU2MzEyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1NjMxOSwgNTYzMjcsIDU2MzM2LCA1NjM0NSwgNTYzNTMsIDU2MzU5LCA1NjM2NCwgNTYzNjksIDU2Mzc0LCAKLSAgICA1NjM3OSwgNTYzODQsIDU2Mzg5LCA1NjM5NCwgNTYzOTksIDU2NDA0LCA1NjQwOSwgNTY0MTQsIDU2NDE5LCA1NjQyNCwgCi0gICAgNTY0MjksIDU2NDM0LCA1NjQzOSwgNTY0NDQsIDU2NDQ5LCA1NjQ1NCwgNTY0NTksIDU2NDY0LCA1NjQ2OSwgNTY0NzQsIAotICAgIDU2NDc5LCA1NjQ4NCwgNTY0ODksIDU2NDk0LCA1NjQ5OSwgNTY1MDQsIDU2NTA5LCA1NjUxNCwgNTY1MTksIDU2NTI0LCAKLSAgICA1NjUyOSwgNTY1MzQsIDU2NTM5LCA1NjU0NCwgNTY1NDksIDU2NTU0LCAwLCA1NjU1OSwgMCwgMCwgMCwgMCwgMCwgNTY1NjQsIAotICAgIDAsIDAsIDU2NTY5LCA1NjU3MywgNTY1NzgsIDU2NTgzLCA1NjU4OCwgNTY1OTMsIDU2NjAyLCA1NjYwNywgNTY2MTIsIAotICAgIDU2NjE3LCA1NjYyMiwgNTY2MjcsIDU2NjMyLCA1NjYzNywgNTY2NDIsIDU2NjQ5LCA1NjY1NCwgNTY2NTksIDU2NjY4LCAKLSAgICA1NjY3NSwgNTY2ODAsIDU2Njg1LCA1NjY5MCwgNTY2OTcsIDU2NzAyLCA1NjcwOSwgNTY3MTQsIDU2NzE5LCA1NjcyNiwgCi0gICAgNTY3MzMsIDU2NzM4LCA1Njc0MywgNTY3NDgsIDU2NzU1LCA1Njc2MiwgNTY3NjcsIDU2NzcyLCA1Njc3NywgNTY3ODIsIAotICAgIDU2Nzg3LCA1Njc5NCwgNTY4MDEsIDU2ODA2LCA1NjgxMSwgNTY4MTYsIDU2ODIxLCA1NjgyNiwgNTY4MzEsIDU2ODM2LCAKLSAgICA1Njg0MSwgNTY4NDYsIDU2ODUxLCA1Njg1NiwgNTY4NjMsIDU2ODY4LCA1Njg3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTY4NzgsIDU2ODg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1Njg5MCwgNTY4OTUsIAotICAgIDU2ODk5LCA1NjkwMywgNTY5MDcsIDU2OTExLCA1NjkxNSwgNTY5MTksIDU2OTIzLCA1NjkyNywgNTY5MzEsIDU2OTM1LCAKLSAgICA1Njk0MSwgNTY5NDUsIDU2OTQ5LCA1Njk1MywgNTY5NTcsIDU2OTYxLCA1Njk2NSwgNTY5NjksIDU2OTczLCA1Njk3NywgCi0gICAgNTY5ODEsIDU2OTg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1Njk4OSwgNTY5OTMsIDU2OTk3LCA1NzAwMSwgCi0gICAgNTcwMDUsIDU3MDA5LCA1NzAxMywgMCwgNTcwMTcsIDU3MDIxLCA1NzAyNSwgNTcwMjksIDU3MDMzLCA1NzAzNywgNTcwNDEsIAotICAgIDAsIDU3MDQ1LCA1NzA0OSwgNTcwNTMsIDU3MDU3LCA1NzA2MSwgNTcwNjUsIDU3MDY5LCAwLCA1NzA3MywgNTcwNzcsIAotICAgIDU3MDgxLCA1NzA4NSwgNTcwODksIDU3MDkzLCA1NzA5NywgMCwgNTcxMDEsIDU3MTA1LCA1NzEwOSwgNTcxMTMsIDU3MTE3LCAKLSAgICA1NzEyMSwgNTcxMjUsIDAsIDU3MTI5LCA1NzEzMywgNTcxMzcsIDU3MTQxLCA1NzE0NSwgNTcxNDksIDU3MTUzLCAwLCAKLSAgICA1NzE1NywgNTcxNjEsIDU3MTY1LCA1NzE2OSwgNTcxNzMsIDU3MTc3LCA1NzE4MSwgMCwgNTcxODUsIDU3MTg5LCA1NzE5MywgCi0gICAgNTcxOTcsIDU3MjAxLCA1NzIwNSwgNTcyMDksIDAsIDU3MjEzLCA1NzIxOCwgNTcyMjMsIDU3MjI4LCA1NzIzMywgNTcyMzgsIAotICAgIDU3MjQzLCA1NzI0NywgNTcyNTIsIDU3MjU3LCA1NzI2MiwgNTcyNjYsIDU3MjcxLCA1NzI3NiwgNTcyODEsIDU3Mjg2LCAKLSAgICA1NzI5MCwgNTcyOTUsIDU3MzAwLCA1NzMwNSwgNTczMTAsIDU3MzE1LCA1NzMyMCwgNTczMjQsIDU3MzI5LCA1NzMzNCwgCi0gICAgNTczNDEsIDU3MzQ2LCA1NzM1MSwgNTczNTcsIDU3MzY0LCA1NzM3MSwgNTczODAsIDU3Mzg3LCA1NzM5NiwgNTc0MDAsIAotICAgIDU3NDA0LCA1NzQxMCwgNTc0MTYsIDU3NDIyLCA1NzQzMCwgNTc0MzYsIDU3NDQwLCA1NzQ0NCwgNTc0NDgsIDU3NDU0LCAKLSAgICA1NzQ2MCwgNTc0NjQsIDU3NDY2LCA1NzQ3MCwgNTc0NzYsIDU3NDc4LCA1NzQ4MiwgNTc0ODYsIDU3NDkwLCA1NzQ5NiwgCi0gICAgNTc1MDEsIDU3NTA1LCA1NzUwOSwgNTc1MTQsIDU3NTIwLCA1NzUyNSwgNTc1MzAsIDU3NTM1LCA1NzU0MCwgNTc1NDcsIAotICAgIDU3NTU0LCA1NzU1OSwgNTc1NjQsIDU3NTY5LCA1NzU3NCwgNTc1NzksIDU3NTg0LCA1NzU4OCwgNTc1OTIsIDU3NTk5LCAKLSAgICA1NzYwNiwgNTc2MTIsIDU3NjE2LCA1NzYyMSwgNTc2MjMsIDU3NjI3LCA1NzYzNSwgNTc2MzksIDU3NjQzLCA1NzY0NywgCi0gICAgNTc2NTEsIDU3NjU3LCA1NzY2MywgNTc2NjcsIDU3NjczLCA1NzY3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAyMzAsIDgwMjM0LCA4MDIzOCwgODAyNDIsIAorICAgIDgwMjQ2LCA4MDI1MCwgODAyNTQsIDgwMjU4LCA4MDI2MiwgODAyNjYsIDgwMjcwLCA4MDI3NCwgODAyNzgsIDgwMjgyLCAKKyAgICA4MDI4NiwgODAyOTAsIDgwMjk0LCA4MDI5OCwgODAzMDIsIDgwMzA2LCA4MDMxMCwgODAzMTQsIDgwMzE4LCAwLCAwLCAwLCAKKyAgICAwLCA4MDMyMiwgODAzMjYsIDgwMzMwLCA4MDMzNCwgODAzMzgsIDgwMzQyLCA4MDM0NiwgODAzNTAsIDgwMzU0LCA4MDM1OCwgCisgICAgODAzNjIsIDgwMzY2LCA4MDM3MCwgODAzNzQsIDgwMzc4LCA4MDM4MiwgODAzODYsIDgwMzkwLCA4MDM5NCwgODAzOTgsIAorICAgIDgwNDAyLCA4MDQwNiwgODA0MTAsIDgwNDE0LCA4MDQxOCwgODA0MjIsIDgwNDI2LCA4MDQzMCwgODA0MzQsIDgwNDM4LCAKKyAgICA4MDQ0MiwgODA0NDYsIDgwNDUwLCA4MDQ1NCwgODA0NTgsIDgwNDYyLCA4MDQ2NiwgODA0NzAsIDgwNDc0LCA4MDQ3OCwgCisgICAgODA0ODIsIDgwNDg2LCA4MDQ5MCwgODA0OTQsIDgwNDk4LCA4MDUwMiwgODA1MDYsIDgwNTEwLCA4MDUxNCwgMCwgMCwgMCwgCisgICAgMCwgODA1MTgsIDgwNTIyLCA4MDUyNiwgODA1MzAsIDgwNTM0LCA4MDUzOCwgODA1NDIsIDgwNTQ2LCA4MDU1MCwgODA1NTQsIAorICAgIDgwNTU4LCA4MDU2MiwgODA1NjYsIDgwNTcwLCA4MDU3NCwgODA1NzgsIDgwNTgyLCA4MDU4NiwgODA1OTAsIDgwNTk0LCAKKyAgICA4MDU5OCwgODA2MDIsIDgwNjA2LCA4MDYxMCwgODA2MTQsIDgwNjE4LCA4MDYyMiwgODA2MjYsIDgwNjMwLCA4MDYzNCwgCisgICAgODA2MzgsIDgwNjQyLCA4MDY0NiwgODA2NTAsIDgwNjU0LCA4MDY1OCwgODA2NjIsIDgwNjY2LCA4MDY3MCwgODA2NzQsIAorICAgIDgwNjc4LCA4MDY4MiwgODA2ODYsIDgwNjkwLCA4MDY5NCwgODA2OTgsIDgwNzAyLCA4MDcwNiwgODA3MTAsIDgwNzE0LCAKKyAgICA4MDcxOCwgODA3MjIsIDgwNzI2LCA4MDczMCwgODA3MzQsIDgwNzM4LCA4MDc0MiwgODA3NDYsIDgwNzUwLCA4MDc1NCwgCisgICAgODA3NTgsIDgwNzYyLCA4MDc2NiwgODA3NzAsIDgwNzc0LCA4MDc3OCwgODA3ODIsIDgwNzg2LCA4MDc5MCwgODA3OTQsIAorICAgIDgwNzk4LCA4MDgwMiwgODA4MDYsIDgwODEwLCA4MDgxNCwgODA4MTgsIDgwODIyLCA4MDgyNiwgODA4MzAsIDgwODM0LCAKKyAgICA4MDgzOCwgODA4NDIsIDgwODQ2LCA4MDg1MCwgODA4NTQsIDgwODU4LCA4MDg2MiwgODA4NjYsIDgwODcwLCA4MDg3NCwgCisgICAgODA4NzgsIDgwODgyLCA4MDg4NiwgODA4OTAsIDgwODk0LCA4MDg5OCwgODA5MDIsIDgwOTA2LCA4MDkxMCwgODA5MTQsIAorICAgIDgwOTE4LCA4MDkyMiwgODA5MjYsIDgwOTMwLCA4MDkzNCwgODA5MzgsIDgwOTQyLCA4MDk0NiwgODA5NTAsIDgwOTU0LCAKKyAgICA4MDk1OCwgODA5NjIsIDgwOTY2LCA4MDk3MCwgODA5NzQsIDgwOTc4LCA4MDk4MiwgODA5ODYsIDgwOTkwLCA4MDk5NCwgCisgICAgODA5OTgsIDgxMDAyLCA4MTAwNiwgODEwMTAsIDgxMDE0LCA4MTAxOCwgODEwMjIsIDgxMDI2LCA4MTAzMCwgODEwMzQsIAorICAgIDgxMDM4LCA4MTA0MiwgODEwNDYsIDgxMDUwLCA4MTA1NCwgODEwNTgsIDgxMDYyLCA4MTA2NiwgODEwNzAsIDgxMDc0LCAKKyAgICA4MTA3OCwgODEwODIsIDgxMDg2LCA4MTA5MCwgODEwOTQsIDgxMDk4LCA4MTEwMiwgODExMDYsIDgxMTEwLCA4MTExNCwgCisgICAgODExMTgsIDgxMTIyLCA4MTEyNiwgODExMzAsIDgxMTM0LCA4MTEzOCwgODExNDIsIDgxMTQ2LCA4MTE1MCwgODExNTQsIAorICAgIDgxMTU4LCA4MTE2MiwgODExNjYsIDgxMTcwLCA4MTE3NCwgODExNzgsIDgxMTgyLCA4MTE4NiwgODExOTAsIDgxMTk0LCAKKyAgICA4MTE5OCwgODEyMDIsIDgxMjA2LCA4MTIxMCwgODEyMTQsIDgxMjE4LCA4MTIyMiwgODEyMjYsIDgxMjMwLCA4MTIzNCwgCisgICAgODEyMzgsIDgxMjQyLCA4MTI0NiwgODEyNTAsIDgxMjU0LCA4MTI1OCwgODEyNjIsIDgxMjY2LCA4MTI3MCwgODEyNzQsIAorICAgIDgxMjc4LCA4MTI4MiwgODEyODYsIDgxMjkwLCA4MTI5NCwgODEyOTgsIDgxMzAyLCA4MTMwNiwgODEzMTAsIDgxMzE0LCAKKyAgICA4MTMxOCwgODEzMjIsIDgxMzI2LCA4MTMzMCwgODEzMzQsIDgxMzM4LCA4MTM0MiwgODEzNDYsIDgxMzUwLCA4MTM1NCwgCisgICAgODEzNTgsIDgxMzYyLCA4MTM2NiwgODEzNzAsIDgxMzc0LCA4MTM3OCwgODEzODIsIDgxMzg2LCA4MTM5MCwgODEzOTQsIAorICAgIDgxMzk4LCA4MTQwMiwgODE0MDYsIDgxNDEwLCA4MTQxNCwgODE0MTgsIDgxNDIyLCA4MTQyNiwgODE0MzAsIDgxNDM0LCAKKyAgICA4MTQzOCwgODE0NDIsIDgxNDQ2LCA4MTQ1MCwgODE0NTQsIDgxNDU4LCA4MTQ2MiwgODE0NjYsIDgxNDcwLCA4MTQ3NCwgCisgICAgODE0NzgsIDgxNDgyLCA4MTQ4NiwgODE0OTAsIDgxNDk0LCA4MTQ5OCwgODE1MDIsIDgxNTA2LCA4MTUxMCwgODE1MTQsIAorICAgIDgxNTE4LCA4MTUyMiwgODE1MjYsIDgxNTMwLCA4MTUzNCwgODE1MzgsIDgxNTQyLCA4MTU0NiwgODE1NTAsIDgxNTU0LCAKKyAgICA4MTU1OCwgODE1NjIsIDgxNTY2LCA4MTU3MCwgODE1NzQsIDgxNTc4LCA4MTU4MiwgODE1ODYsIDgxNTkwLCA4MTU5NCwgCisgICAgODE1OTgsIDgxNjAyLCA4MTYwNiwgODE2MTAsIDgxNjE0LCA4MTYxOCwgODE2MjIsIDgxNjI2LCA4MTYzMCwgODE2MzQsIAorICAgIDgxNjM4LCA4MTY0MiwgODE2NDYsIDgxNjUwLCA4MTY1NCwgODE2NTgsIDgxNjYyLCA4MTY2NiwgODE2NzAsIDgxNjc0LCAKKyAgICA4MTY3OCwgODE2ODIsIDgxNjg2LCA4MTY5MCwgODE2OTQsIDgxNjk4LCA4MTcwMiwgODE3MDYsIDgxNzEwLCA4MTcxNCwgCisgICAgODE3MTgsIDgxNzIyLCA4MTcyNiwgODE3MzAsIDgxNzM0LCA4MTczOCwgODE3NDIsIDgxNzQ2LCA4MTc1MCwgODE3NTQsIAorICAgIDgxNzU4LCA4MTc2MiwgODE3NjYsIDgxNzcwLCA4MTc3NCwgODE3NzgsIDgxNzgyLCA4MTc4NiwgODE3OTAsIDgxNzk0LCAKKyAgICA4MTc5OCwgODE4MDIsIDgxODA2LCA4MTgxMCwgODE4MTQsIDgxODE4LCA4MTgyMiwgODE4MjYsIDgxODMwLCA4MTgzNCwgCisgICAgODE4MzgsIDgxODQyLCA4MTg0NiwgODE4NTAsIDgxODU0LCA4MTg1OCwgODE4NjIsIDgxODY2LCA4MTg3MCwgODE4NzQsIAorICAgIDgxODc4LCA4MTg4MiwgODE4ODYsIDgxODkwLCA4MTg5NCwgODE4OTgsIDgxOTAyLCA4MTkwNiwgODE5MTAsIDgxOTE0LCAKKyAgICA4MTkxOCwgODE5MjIsIDgxOTI2LCA4MTkzMCwgODE5MzQsIDgxOTM4LCA4MTk0MiwgODE5NDYsIDgxOTUwLCA4MTk1NCwgCisgICAgODE5NTgsIDgxOTYyLCA4MTk2NiwgODE5NzAsIDgxOTc0LCA4MTk3OCwgMCwgMCwgODE5ODIsIDgxOTg2LCA4MTk5MCwgCisgICAgODE5OTQsIDgxOTk4LCA4MjAwMiwgODIwMDYsIDgyMDEwLCA4MjAxNCwgODIwMTgsIDgyMDIyLCA4MjAyNiwgODIwMzAsIAorICAgIDgyMDM0LCA4MjAzOCwgODIwNDIsIDgyMDQ2LCA4MjA1MCwgODIwNTQsIDgyMDU4LCA4MjA2MiwgODIwNjYsIDgyMDcwLCAKKyAgICA4MjA3NCwgODIwNzgsIDgyMDgyLCA4MjA4NiwgODIwOTAsIDgyMDk0LCA4MjA5OCwgODIxMDIsIDgyMTA2LCA4MjExMCwgCisgICAgODIxMTQsIDgyMTE4LCA4MjEyMiwgODIxMjYsIDgyMTMwLCA4MjEzNCwgODIxMzgsIDgyMTQyLCA4MjE0NiwgODIxNTAsIAorICAgIDgyMTU0LCA4MjE1OCwgODIxNjIsIDgyMTY2LCA4MjE3MCwgODIxNzQsIDgyMTc4LCA4MjE4MiwgODIxODYsIDgyMTkwLCAKKyAgICA4MjE5NCwgODIxOTgsIDgyMjAyLCA4MjIwNiwgODIyMTAsIDgyMjE0LCA4MjIxOCwgODIyMjIsIDgyMjI2LCA4MjIzMCwgCisgICAgODIyMzQsIDgyMjM4LCA4MjI0MiwgODIyNDYsIDgyMjUwLCA4MjI1NCwgODIyNTgsIDgyMjYyLCA4MjI2NiwgODIyNzAsIAorICAgIDgyMjc0LCA4MjI3OCwgODIyODIsIDgyMjg2LCA4MjI5MCwgODIyOTQsIDgyMjk4LCA4MjMwMiwgODIzMDYsIDgyMzEwLCAKKyAgICA4MjMxNCwgODIzMTgsIDgyMzIyLCA4MjMyNiwgODIzMzAsIDgyMzM0LCA4MjMzOCwgODIzNDIsIDgyMzQ2LCA4MjM1MCwgCisgICAgODIzNTQsIDgyMzU4LCA4MjM2MiwgODIzNjYsIDgyMzcwLCA4MjM3NCwgODIzNzgsIDgyMzgyLCA4MjM4NiwgODIzOTAsIAorICAgIDgyMzk0LCA4MjM5OCwgODI0MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyNDA2LCAKKyAgICA4MjQxMSwgODI0MTYsIDgyNDIxLCA4MjQyNiwgODI0MzEsIDgyNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA4MjQ0NCwgODI0NTEsIDgyNDU4LCA4MjQ2NSwgODI0NzIsIDAsIDAsIDAsIDAsIDAsIDgyNDc5LCA4MjQ4NiwgCisgICAgODI0OTMsIDgyNTAzLCA4MjUwOSwgODI1MTUsIDgyNTIxLCA4MjUyNywgODI1MzMsIDgyNTM5LCA4MjU0NiwgODI1NTIsIAorICAgIDgyNTU4LCA4MjU2NCwgODI1NzMsIDgyNTgyLCA4MjU5NCwgODI2MDYsIDgyNjEyLCA4MjYxOCwgODI2MjQsIDgyNjMxLCAKKyAgICA4MjYzOCwgODI2NDUsIDgyNjUyLCA4MjY1OSwgMCwgODI2NjYsIDgyNjczLCA4MjY4MCwgODI2ODgsIDgyNjk1LCAwLCAKKyAgICA4MjcwMiwgMCwgODI3MDksIDgyNzE2LCAwLCA4MjcyMywgODI3MzEsIDAsIDgyNzM4LCA4Mjc0NSwgODI3NTIsIDgyNzU5LCAKKyAgICA4Mjc2NiwgODI3NzMsIDgyNzgwLCA4Mjc4NywgODI3OTQsIDgyODAxLCA4MjgwNiwgODI4MTMsIDgyODIwLCA4MjgyNiwgCisgICAgODI4MzIsIDgyODM4LCA4Mjg0NCwgODI4NTAsIDgyODU2LCA4Mjg2MiwgODI4NjgsIDgyODc0LCA4Mjg4MCwgODI4ODYsIAorICAgIDgyODkyLCA4Mjg5OCwgODI5MDQsIDgyOTEwLCA4MjkxNiwgODI5MjIsIDgyOTI4LCA4MjkzNCwgODI5NDAsIDgyOTQ2LCAKKyAgICA4Mjk1MiwgODI5NTgsIDgyOTY0LCA4Mjk3MCwgODI5NzYsIDgyOTgyLCA4Mjk4OCwgODI5OTQsIDgzMDAwLCA4MzAwNiwgCisgICAgODMwMTIsIDgzMDE4LCA4MzAyNCwgODMwMzAsIDgzMDM2LCA4MzA0MiwgODMwNDgsIDgzMDU0LCA4MzA2MCwgODMwNjYsIAorICAgIDgzMDcyLCA4MzA3OCwgODMwODQsIDgzMDkwLCA4MzA5NiwgODMxMDIsIDgzMTA4LCA4MzExNCwgODMxMjAsIDgzMTI2LCAKKyAgICA4MzEzMiwgODMxMzgsIDgzMTQ0LCA4MzE1MCwgODMxNTYsIDgzMTYyLCA4MzE2OCwgODMxNzQsIDgzMTgwLCA4MzE4NiwgCisgICAgODMxOTIsIDgzMTk4LCA4MzIwNCwgODMyMTAsIDgzMjE2LCA4MzIyMiwgODMyMjgsIDgzMjM0LCA4MzI0MCwgODMyNDYsIAorICAgIDgzMjUyLCA4MzI1OCwgODMyNjQsIDgzMjcwLCA4MzI3NiwgODMyODQsIDgzMjkyLCA4MzI5OCwgODMzMDQsIDgzMzEwLCAKKyAgICA4MzMxNiwgODMzMjUsIDgzMzM0LCA4MzM0MiwgODMzNTAsIDgzMzU4LCA4MzM2NiwgODMzNzQsIDgzMzgyLCA4MzM5MCwgCisgICAgODMzOTgsIDgzNDA1LCA4MzQxMiwgODM0MjMsIDgzNDM0LCA4MzQzOCwgODM0NDIsIDgzNDQ3LCA4MzQ1MiwgODM0NTcsIAorICAgIDgzNDYyLCA4MzQ3MCwgODM0NzgsIDgzNDg0LCA4MzQ5MCwgODM0OTcsIDgzNTA0LCA4MzUxMSwgODM1MTUsIDgzNTIxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MzUyNywgODM1MzMsIDgzNTM5LCAKKyAgICA4MzU0NSwgODM1NTEsIDgzNTU2LCA4MzU2MSwgODM1NjcsIDgzNTczLCA4MzU3OSwgODM1ODUsIDgzNTk0LCA4MzYwMCwgCisgICAgODM2MDYsIDgzNjE0LCA4MzYyMiwgODM2MzAsIDgzNjM4LCA4MzY0MywgODM2NDgsIDgzNjUzLCA4MzY1OCwgODM2NzEsIAorICAgIDgzNjg0LCA4MzY5NSwgODM3MDYsIDgzNzE4LCA4MzczMCwgODM3NDIsIDgzNzU0LCA4Mzc2NSwgODM3NzYsIDgzNzg4LCAKKyAgICA4MzgwMCwgODM4MTIsIDgzODI0LCA4MzgzNSwgODM4NDYsIDgzODU3LCA4Mzg3NCwgODM4OTEsIDgzOTA4LCA4MzkxNSwgCisgICAgODM5MjIsIDgzOTI5LCA4MzkzNiwgODM5NDcsIDgzOTU4LCA4Mzk2OSwgODM5ODIsIDgzOTkzLCA4NDAwMSwgODQwMDksIAorICAgIDg0MDE4LCA4NDAyNiwgODQwMzYsIDg0MDQ0LCA4NDA1MiwgODQwNjAsIDg0MDY5LCA4NDA3NywgODQwODcsIDg0MDk1LCAKKyAgICA4NDEwMywgODQxMTEsIDg0MTIxLCA4NDEyOSwgODQxMzYsIDg0MTQzLCA4NDE1MCwgODQxNTcsIDg0MTY1LCA4NDE3MywgCisgICAgODQxODEsIDg0MTg5LCA4NDE5NywgODQyMDYsIDg0MjE0LCA4NDIyMiwgODQyMzAsIDg0MjM4LCA4NDI0NiwgODQyNTUsIAorICAgIDg0MjYzLCA4NDI3MSwgODQyNzksIDg0Mjg3LCA4NDI5NSwgODQzMDMsIDg0MzExLCA4NDMxOSwgODQzMjcsIDg0MzM1LCAKKyAgICA4NDM0NCwgODQzNTIsIDg0MzYyLCA4NDM3MCwgODQzNzgsIDg0Mzg2LCA4NDM5NiwgODQ0MDQsIDg0NDEyLCA4NDQyMCwgCisgICAgODQ0MjgsIDg0NDM3LCA4NDQ0NiwgODQ0NTQsIDg0NDY0LCA4NDQ3MiwgODQ0ODAsIDg0NDg4LCA4NDQ5NywgODQ1MDUsIAorICAgIDg0NTE1LCA4NDUyMywgODQ1MzAsIDg0NTM3LCA4NDU0NSwgODQ1NTIsIDg0NTYxLCA4NDU2OCwgODQ1NzYsIDg0NTg0LCAKKyAgICA4NDU5MywgODQ2MDEsIDg0NjExLCA4NDYxOSwgODQ2MjcsIDg0NjM1LCA4NDY0NSwgODQ2NTMsIDg0NjYwLCA4NDY2NywgCisgICAgODQ2NzUsIDg0NjgyLCA4NDY5MSwgODQ2OTgsIDg0NzA4LCA4NDcxOCwgODQ3MjksIDg0NzM4LCA4NDc0NywgODQ3NTYsIAorICAgIDg0NzY1LCA4NDc3NCwgODQ3ODQsIDg0Nzk2LCA4NDgwOCwgODQ4MTksIDg0ODMxLCA4NDg0NCwgODQ4NTUsIDg0ODY0LCAKKyAgICA4NDg3MywgODQ4ODEsIDg0ODkwLCA4NDkwMCwgODQ5MDgsIDg0OTE3LCA4NDkyNiwgODQ5MzQsIDg0OTQzLCA4NDk1MywgCisgICAgODQ5NjEsIDg0OTcwLCA4NDk3OSwgODQ5ODcsIDg0OTk2LCA4NTAwNiwgODUwMTQsIDg1MDI0LCA4NTAzMiwgODUwNDIsIAorICAgIDg1MDUwLCA4NTA1OCwgODUwNjcsIDg1MDc1LCA4NTA4NSwgODUwOTMsIDg1MTAxLCA4NTExMSwgODUxMTksIDg1MTI2LCAKKyAgICA4NTEzMywgODUxNDIsIDg1MTUxLCA4NTE1OSwgODUxNjgsIDg1MTc4LCA4NTE4NiwgODUxOTcsIDg1MjA1LCA4NTIxMywgCisgICAgODUyMjAsIDg1MjI4LCA4NTIzNywgODUyNDQsIDg1MjU1LCA4NTI2NiwgODUyNzgsIDg1Mjg5LCA4NTMwMSwgODUzMDksIAorICAgIDg1MzE3LCA4NTMyNiwgODUzMzQsIDg1MzQzLCA4NTM1MSwgODUzNTksIDg1MzY4LCA4NTM3NiwgODUzODUsIDg1MzkzLCAKKyAgICA4NTQwMCwgODU0MDcsIDg1NDE0LCA4NTQyMSwgODU0MjksIDg1NDM3LCA4NTQ0NSwgODU0NTMsIDg1NDYyLCA4NTQ3MCwgCisgICAgODU0NzgsIDg1NDg3LCA4NTQ5NSwgODU1MDMsIDg1NTExLCA4NTUyMCwgODU1MjgsIDg1NTM2LCA4NTU0NCwgODU1NTIsIAorICAgIDg1NTYwLCA4NTU2OCwgODU1NzYsIDg1NTg0LCA4NTU5MiwgODU2MDEsIDg1NjA5LCA4NTYxNywgODU2MjUsIDg1NjMzLCAKKyAgICA4NTY0MSwgODU2NTAsIDg1NjU5LCA4NTY2NywgODU2NzUsIDg1NjgzLCA4NTY5MiwgODU3MDAsIDg1NzA5LCA4NTcxNiwgCisgICAgODU3MjMsIDg1NzMxLCA4NTczOCwgODU3NDYsIDg1NzU0LCA4NTc2MywgODU3NzEsIDg1NzgwLCA4NTc4OCwgODU3OTYsIAorICAgIDg1ODA2LCA4NTgxMywgODU4MjAsIDg1ODI4LCA4NTgzNSwgODU4NDMsIDg1ODU0LCA4NTg2NiwgODU4NzQsIDg1ODgzLCAKKyAgICA4NTg5MSwgODU5MDAsIDg1OTA4LCA4NTkxNywgODU5MjUsIDg1OTM0LCA4NTk0MiwgODU5NTEsIDg1OTYwLCA4NTk2OCwgCisgICAgODU5NzYsIDg1OTg0LCA4NTk5MywgODYwMDAsIDg2MDA4LCA4NjAxNywgODYwMjYsIDg2MDM1LCA4NjA0NSwgODYwNTMsIAorICAgIDg2MDYzLCA4NjA3MSwgODYwODEsIDg2MDg5LCA4NjA5OSwgODYxMDcsIDg2MTE3LCA4NjEyNSwgODYxMzQsIDg2MTQxLCAKKyAgICA4NjE1MCwgODYxNTcsIDg2MTY3LCA4NjE3NSwgODYxODUsIDg2MTkzLCA4NjIwMywgODYyMTEsIDg2MjE5LCA4NjIyNywgCisgICAgODYyMzYsIDg2MjQ0LCA4NjI1MywgODYyNjIsIDg2MjcxLCA4NjI4MCwgODYyOTAsIDg2Mjk4LCA4NjMwOCwgODYzMTYsIAorICAgIDg2MzI2LCA4NjMzNCwgODYzNDQsIDg2MzUyLCA4NjM2MiwgODYzNzAsIDg2Mzc5LCA4NjM4NiwgODYzOTUsIDg2NDAyLCAKKyAgICA4NjQxMiwgODY0MjAsIDg2NDMwLCA4NjQzOCwgODY0NDgsIDg2NDU2LCA4NjQ2NCwgODY0NzIsIDg2NDgxLCA4NjQ4OSwgCisgICAgODY0OTgsIDg2NTA3LCA4NjUxNiwgODY1MjUsIDg2NTMzLCA4NjU0MSwgODY1NTAsIDg2NTU4LCA4NjU2NywgODY1NzYsIAorICAgIDg2NTg0LCA4NjU5MiwgODY2MDAsIDg2NjA5LCA4NjYxNywgODY2MjUsIDg2NjM0LCA4NjY0MiwgODY2NTAsIDg2NjU4LCAKKyAgICA4NjY2NiwgODY2NzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2Njc2LCAKKyAgICA4NjY4NiwgODY2OTYsIDg2NzA2LCA4NjcxNiwgODY3MjcsIDg2NzM3LCA4Njc0NywgODY3NTgsIDg2NzY3LCA4Njc3NiwgCisgICAgODY3ODUsIDg2Nzk2LCA4NjgwNiwgODY4MTYsIDg2ODI4LCA4NjgzOCwgODY4NDgsIDg2ODU4LCA4Njg2OCwgODY4NzgsIAorICAgIDg2ODg4LCA4Njg5OCwgODY5MDgsIDg2OTE4LCA4NjkyOCwgODY5MzgsIDg2OTQ5LCA4Njk2MCwgODY5NzAsIDg2OTgwLCAKKyAgICA4Njk5MiwgODcwMDMsIDg3MDE0LCA4NzAyNCwgODcwMzQsIDg3MDQ0LCA4NzA1NCwgODcwNjQsIDg3MDc0LCA4NzA4NCwgCisgICAgODcwOTYsIDg3MTA2LCA4NzExNiwgODcxMjgsIDg3MTM5LCA4NzE1MCwgODcxNjAsIDg3MTcwLCA4NzE4MCwgODcxOTAsIAorICAgIDg3MjAyLCA4NzIxMiwgODcyMjIsIDg3MjMzLCA4NzI0NCwgODcyNTQsIDg3MjY0LCA4NzI3MywgODcyODIsIDg3MjkxLCAKKyAgICA4NzMwMCwgODczMDksIDg3MzE5LCAwLCAwLCA4NzMyOSwgODczMzksIDg3MzQ5LCA4NzM1OSwgODczNjksIDg3MzgxLCAKKyAgICA4NzM5MSwgODc0MDEsIDg3NDEzLCA4NzQyMywgODc0MzUsIDg3NDQ0LCA4NzQ1MywgODc0NjQsIDg3NDc0LCA4NzQ4NiwgCisgICAgODc0OTcsIDg3NTEwLCA4NzUyMCwgODc1MzIsIDg3NTQxLCA4NzU1MiwgODc1NjMsIDg3NTc2LCA4NzU4NiwgODc1OTYsIAorICAgIDg3NjA2LCA4NzYxNiwgODc2MjYsIDg3NjM1LCA4NzY0NCwgODc2NTMsIDg3NjYyLCA4NzY3MiwgODc2ODIsIDg3NjkyLCAKKyAgICA4NzcwMiwgODc3MTIsIDg3NzIyLCA4NzczMiwgODc3NDIsIDg3NzUyLCA4Nzc2MiwgODc3NzIsIDg3NzgyLCA4Nzc5MSwgCisgICAgODc4MDAsIDg3ODA5LCA4NzgxOSwgODc4MjksIDg3ODM5LCA4Nzg0OSwgODc4NTksIDg3ODcwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzY4MSwgNTc2ODUsIDU3Njg5LCA1NzY5NCwgNTc2OTksIDU3NzA0LCAKLSAgICA1NzcwOCwgNTc3MTIsIDU3NzE2LCA1NzcyMSwgNTc3MjYsIDU3NzMwLCA1NzczNCwgNTc3MzgsIDU3NzQyLCA1Nzc0NywgCi0gICAgNTc3NTIsIDU3NzU3LCA1Nzc2MiwgNTc3NjYsIDU3NzcwLCA1Nzc3NSwgNTc3ODAsIDU3Nzg1LCA1Nzc5MCwgNTc3OTQsIDAsIAotICAgIDU3Nzk4LCA1NzgwMiwgNTc4MDYsIDU3ODEwLCA1NzgxNCwgNTc4MTgsIDU3ODIyLCA1NzgyNywgNTc4MzIsIDU3ODM2LCAKLSAgICA1Nzg0MSwgNTc4NDYsIDU3ODU1LCA1Nzg1OSwgNTc4NjMsIDU3ODY3LCA1Nzg3NCwgNTc4NzgsIDU3ODgzLCA1Nzg4OCwgCi0gICAgNTc4OTIsIDU3ODk2LCA1NzkwMiwgNTc5MDcsIDU3OTEyLCA1NzkxNywgNTc5MjIsIDU3OTI2LCA1NzkzMCwgNTc5MzQsIAotICAgIDU3OTM4LCA1Nzk0MiwgNTc5NDcsIDU3OTUyLCA1Nzk1NiwgNTc5NjAsIDU3OTY1LCA1Nzk3MCwgNTc5NzUsIDU3OTc5LCAKLSAgICA1Nzk4MywgNTc5ODgsIDU3OTkzLCA1Nzk5OSwgNTgwMDUsIDU4MDA5LCA1ODAxNSwgNTgwMjEsIDU4MDI1LCA1ODAzMSwgCi0gICAgNTgwMzcsIDU4MDQyLCA1ODA0NywgNTgwNTEsIDU4MDU3LCA1ODA2MSwgNTgwNjUsIDU4MDcxLCA1ODA3NywgNTgwODIsIAotICAgIDU4MDg3LCA1ODA5MSwgNTgwOTUsIDU4MTAzLCA1ODEwOSwgNTgxMTUsIDU4MTIxLCA1ODEyNiwgNTgxMzEsIDU4MTM2LCAKLSAgICA1ODE0MiwgNTgxNDYsIDU4MTUyLCA1ODE1NiwgNTgxNjAsIDU4MTY2LCA1ODE3MiwgNTgxNzgsIDU4MTg0LCA1ODE5MCwgCi0gICAgNTgxOTYsIDU4MjAyLCA1ODIwOCwgNTgyMTQsIDU4MjIwLCA1ODIyNiwgNTgyMzIsIDU4MjM2LCA1ODI0MiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgyNDgsIDU4MjUxLCA1ODI1NSwgNTgyNTksIDU4MjYzLCA1ODI2NywgCi0gICAgNTgyNzAsIDU4MjczLCA1ODI3NywgNTgyODEsIDU4Mjg1LCA1ODI4OSwgNTgyOTIsIDU4Mjk3LCA1ODMwMSwgNTgzMDUsIAotICAgIDU4MzA5LCA1ODMxNCwgNTgzMTgsIDU4MzIyLCA1ODMyNiwgNTgzMzAsIDU4MzM2LCA1ODM0MiwgNTgzNDYsIDU4MzUwLCAKLSAgICA1ODM1NCwgNTgzNTgsIDU4MzYyLCA1ODM2NiwgNTgzNzAsIDU4Mzc0LCA1ODM3OCwgNTgzODIsIDU4Mzg2LCA1ODM5MiwgCi0gICAgNTgzOTYsIDU4NDAwLCA1ODQwNCwgNTg0MDgsIDU4NDEyLCA1ODQxNiwgNTg0MjAsIDU4NDI0LCA1ODQyOCwgNTg0MzIsIAotICAgIDU4NDM2LCA1ODQ0MCwgNTg0NDQsIDU4NDQ4LCA1ODQ1MiwgNTg0NTYsIDU4NDYyLCA1ODQ2OCwgNTg0NzMsIDU4NDc4LCAKLSAgICA1ODQ4MiwgNTg0ODYsIDU4NDkwLCA1ODQ5NCwgNTg0OTgsIDU4NTAyLCA1ODUwNiwgNTg1MTAsIDU4NTE0LCA1ODUxOCwgCi0gICAgNTg1MjIsIDU4NTI2LCA1ODUzMCwgNTg1MzQsIDU4NTM4LCA1ODU0MiwgNTg1NDYsIDU4NTUwLCA1ODU1NCwgNTg1NTgsIAotICAgIDU4NTYyLCA1ODU2NiwgNTg1NzAsIDU4NTc0LCA1ODU4MCwgNTg1ODQsIDU4NTg4LCA1ODU5MiwgNTg1OTYsIDU4NjAwLCAKLSAgICA1ODYwNCwgNTg2MDgsIDU4NjEyLCA1ODYxNywgNTg2MjQsIDU4NjI4LCA1ODYzMiwgNTg2MzYsIDU4NjQwLCA1ODY0NCwgCi0gICAgNTg2NDgsIDU4NjUyLCA1ODY1NiwgNTg2NjAsIDU4NjY0LCA1ODY2OCwgNTg2NzIsIDU4Njc5LCA1ODY4MywgNTg2ODksIAotICAgIDU4NjkzLCA1ODY5NywgNTg3MDEsIDU4NzA1LCA1ODcwOSwgNTg3MTIsIDU4NzE2LCA1ODcyMCwgNTg3MjQsIDU4NzI4LCAKLSAgICA1ODczMiwgNTg3MzYsIDU4NzQwLCA1ODc0NCwgNTg3NDgsIDU4NzUyLCA1ODc1NiwgNTg3NjAsIDU4NzY0LCA1ODc2OCwgCi0gICAgNTg3NzIsIDU4Nzc2LCA1ODc4MCwgNTg3ODQsIDU4Nzg4LCA1ODc5MiwgNTg3OTYsIDU4ODAwLCA1ODgwNCwgNTg4MDgsIAotICAgIDU4ODEyLCA1ODgxNiwgNTg4MjAsIDU4ODI0LCA1ODgyOCwgNTg4MzIsIDU4ODM2LCA1ODg0MCwgNTg4NDYsIDU4ODUwLCAKLSAgICA1ODg1NCwgNTg4NTgsIDU4ODYyLCA1ODg2NiwgNTg4NzAsIDU4ODc0LCA1ODg3OCwgNTg4ODIsIDU4ODg2LCA1ODg5MCwgCi0gICAgNTg4OTQsIDU4ODk4LCA1ODkwMiwgNTg5MDYsIDU4OTEwLCA1ODkxNCwgNTg5MTgsIDU4OTIyLCA1ODkyNiwgNTg5MzAsIAotICAgIDU4OTM0LCA1ODkzOCwgNTg5NDIsIDU4OTQ2LCA1ODk1MCwgNTg5NTQsIDU4OTYyLCA1ODk2NiwgNTg5NzAsIDU4OTc0LCAKLSAgICA1ODk3OCwgNTg5ODIsIDU4OTg4LCA1ODk5MiwgNTg5OTYsIDU5MDAwLCA1OTAwNCwgNTkwMDgsIDU5MDEyLCA1OTAxNiwgCi0gICAgNTkwMjAsIDU5MDI0LCA1OTAyOCwgNTkwMzIsIDU5MDM2LCA1OTA0MCwgNTkwNDYsIDU5MDUwLCA1OTA1NCwgNTkwNTgsIAotICAgIDU5MDYyLCA1OTA2NiwgNTkwNzAsIDU5MDc0LCA1OTA3OCwgNTkwODIsIDU5MDg2LCA1OTA5MCwgNTkwOTQsIDU5MDk4LCAKLSAgICA1OTEwMiwgNTkxMDYsIDU5MTEwLCA1OTExNCwgNTkxMTgsIDU5MTIyLCA1OTEyNiwgNTkxMzAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MTM0LCA1OTE0MywgCi0gICAgNTkxNTEsIDU5MTYzLCA1OTE3NCwgNTkxODIsIDU5MTkxLCA1OTIwMCwgNTkyMTAsIDU5MjIyLCA1OTIzNCwgNTkyNDYsIDAsIAotICAgIDAsIDAsIDAsIDU5MjUyLCA1OTI1NSwgNTkyNTgsIDU5MjYzLCA1OTI2NiwgNTkyNzMsIDU5Mjc3LCA1OTI4MSwgNTkyODUsIAotICAgIDU5Mjg5LCA1OTI5MywgNTkyOTgsIDU5MzAzLCA1OTMwNywgNTkzMTEsIDU5MzE2LCA1OTMyMSwgNTkzMjYsIDU5MzMxLCAKLSAgICA1OTMzNCwgNTkzMzcsIDU5MzQzLCA1OTM0OSwgNTkzNTQsIDU5MzU5LCA1OTM2NiwgNTkzNzMsIDU5Mzc3LCA1OTM4MSwgCi0gICAgNTkzODUsIDU5MzkzLCA1OTM5OSwgNTk0MDYsIDU5NDExLCA1OTQxNiwgNTk0MjEsIDU5NDI2LCA1OTQzMSwgNTk0MzYsIAotICAgIDU5NDQxLCA1OTQ0NiwgNTk0NTEsIDU5NDU2LCA1OTQ2MSwgNTk0NjYsIDU5NDcxLCA1OTQ3NiwgNTk0ODIsIDU5NDg3LCAKLSAgICA1OTQ5MSwgNTk0OTcsIDU5NTA4LCA1OTUxOCwgNTk1MzMsIDU5NTQzLCA1OTU0NywgNTk1NTcsIDU5NTYzLCA1OTU2OSwgCi0gICAgNTk1NzUsIDU5NTgwLCA1OTU4MywgNTk1ODgsIDU5NTkyLCAwLCA1OTU5OCwgNTk2MDIsIDU5NjA1LCA1OTYwOSwgNTk2MTIsIAotICAgIDU5NjE2LCA1OTYxOSwgNTk2MjMsIDU5NjI2LCA1OTYzMCwgNTk2MzMsIDU5NjM2LCA1OTY0MCwgNTk2NDQsIDU5NjQ4LCAKLSAgICA1OTY1MiwgNTk2NTYsIDU5NjYwLCA1OTY2NCwgNTk2NjgsIDU5NjcyLCA1OTY3NSwgNTk2NzksIDU5NjgzLCA1OTY4NywgCi0gICAgNTk2OTEsIDU5Njk1LCA1OTY5OSwgNTk3MDMsIDU5NzA3LCA1OTcxMSwgNTk3MTUsIDU5NzE5LCA1OTcyMywgNTk3MjcsIAotICAgIDU5NzMyLCA1OTczNiwgNTk3NDAsIDU5NzQ0LCA1OTc0OCwgNTk3NTEsIDU5NzU1LCA1OTc1OCwgNTk3NjIsIDU5NzY2LCAKLSAgICA1OTc3MCwgNTk3NzQsIDU5Nzc3LCA1OTc4MSwgNTk3ODQsIDU5Nzg4LCA1OTc5MiwgNTk3OTYsIDU5ODAwLCA1OTgwNCwgCi0gICAgNTk4MDgsIDU5ODEyLCA1OTgxNiwgNTk4MjAsIDU5ODI0LCA1OTgyOCwgNTk4MzIsIDU5ODM1LCA1OTgzOSwgNTk4NDMsIAotICAgIDU5ODQ3LCA1OTg1MSwgNTk4NTUsIDU5ODU4LCA1OTg2MywgNTk4NjcsIDU5ODcyLCA1OTg3NiwgNTk4NzksIDU5ODgzLCAKLSAgICA1OTg4NywgNTk4OTEsIDU5ODk1LCA1OTkwMCwgNTk5MDQsIDU5OTA4LCA1OTkxMiwgNTk5MTYsIDU5OTIwLCA1OTkyNCwgCi0gICAgNTk5MjgsIDAsIDAsIDU5OTMzLCA1OTk0MSwgNTk5NDksIDU5OTU2LCA1OTk2MywgNTk5NjcsIDU5OTczLCA1OTk3OCwgCi0gICAgNTk5ODMsIDU5OTg3LCA1OTk5MCwgNTk5OTQsIDU5OTk3LCA2MDAwMSwgNjAwMDQsIDYwMDA4LCA2MDAxMSwgNjAwMTUsIAotICAgIDYwMDE4LCA2MDAyMSwgNjAwMjUsIDYwMDI5LCA2MDAzMywgNjAwMzcsIDYwMDQxLCA2MDA0NSwgNjAwNDksIDYwMDUzLCAKLSAgICA2MDA1NywgNjAwNjAsIDYwMDY0LCA2MDA2OCwgNjAwNzIsIDYwMDc2LCA2MDA4MCwgNjAwODQsIDYwMDg4LCA2MDA5MiwgCi0gICAgNjAwOTYsIDYwMTAwLCA2MDEwNCwgNjAxMDgsIDYwMTEyLCA2MDExNywgNjAxMjEsIDYwMTI1LCA2MDEyOSwgNjAxMzMsIAotICAgIDYwMTM2LCA2MDE0MCwgNjAxNDMsIDYwMTQ3LCA2MDE1MSwgNjAxNTUsIDYwMTU5LCA2MDE2MiwgNjAxNjYsIDYwMTY5LCAKLSAgICA2MDE3MywgNjAxNzcsIDYwMTgxLCA2MDE4NSwgNjAxODksIDYwMTkzLCA2MDE5NywgNjAyMDEsIDYwMjA1LCA2MDIwOSwgCi0gICAgNjAyMTMsIDYwMjE3LCA2MDIyMCwgNjAyMjQsIDYwMjI4LCA2MDIzMiwgNjAyMzYsIDYwMjQwLCA2MDI0MywgNjAyNDgsIAotICAgIDYwMjUyLCA2MDI1NywgNjAyNjEsIDYwMjY0LCA2MDI2OCwgNjAyNzIsIDYwMjc2LCA2MDI4MCwgNjAyODUsIDYwMjg5LCAKLSAgICA2MDI5MywgNjAyOTcsIDYwMzAxLCA2MDMwNSwgNjAzMDksIDYwMzEzLCA2MDMxOCwgNjAzMjIsIDYwMzI2LCA2MDMzMCwgCi0gICAgNjAzMzQsIDYwMzM5LCA2MDM0NiwgNjAzNTAsIDYwMzU2LCAwLCAwLCAwLCAwLCAwLCA2MDM2MSwgNjAzNjYsIDYwMzcxLCAKLSAgICA2MDM3NSwgNjAzODAsIDYwMzg1LCA2MDM5MCwgNjAzOTUsIDYwMzk5LCA2MDQwNCwgNjA0MDksIDYwNDE0LCA2MDQxOSwgCi0gICAgNjA0MjQsIDYwNDI5LCA2MDQzNCwgNjA0MzksIDYwNDQ0LCA2MDQ0OCwgNjA0NTMsIDYwNDU4LCA2MDQ2MywgNjA0NjcsIAotICAgIDYwNDcxLCA2MDQ3NSwgNjA0ODAsIDYwNDg1LCA2MDQ5MCwgNjA0OTUsIDYwNTAwLCA2MDUwNSwgNjA1MTAsIDYwNTE1LCAKLSAgICA2MDUyMCwgNjA1MjUsIDYwNTI5LCA2MDUzMywgNjA1MzgsIDYwNTQzLCA2MDU0OCwgNjA1NTMsIDAsIDAsIDAsIDYwNTU4LCAKLSAgICA2MDU2MiwgNjA1NjYsIDYwNTcwLCA2MDU3NCwgNjA1NzgsIDYwNTgyLCA2MDU4NiwgNjA1OTAsIDYwNTk0LCA2MDU5OCwgCi0gICAgNjA2MDIsIDYwNjA2LCA2MDYxMCwgNjA2MTQsIDYwNjE4LCA2MDYyMiwgNjA2MjYsIDYwNjMwLCA2MDYzNCwgNjA2MzgsIAotICAgIDYwNjQyLCA2MDY0NiwgNjA2NTAsIDYwNjU0LCA2MDY1OCwgNjA2NjIsIDYwNjY2LCA2MDY3MCwgNjA2NzQsIDYwNjc4LCAKLSAgICA2MDY4MSwgNjA2ODUsIDYwNjg4LCA2MDY5MiwgNjA2OTYsIDYwNjk5LCA2MDcwMywgNjA3MDcsIDYwNzEwLCA2MDcxNCwgCi0gICAgNjA3MTgsIDYwNzIyLCA2MDcyNiwgNjA3MjksIDYwNzMzLCA2MDczNywgNjA3NDEsIDYwNzQ1LCA2MDc0OSwgNjA3NTMsIAotICAgIDYwNzU2LCA2MDc1OSwgNjA3NjMsIDYwNzY3LCA2MDc3MSwgNjA3NzUsIDYwNzc5LCA2MDc4MywgNjA3ODcsIDYwNzkxLCAKLSAgICA2MDc5NSwgNjA3OTksIDYwODAzLCA2MDgwNywgNjA4MTEsIDYwODE1LCA2MDgxOSwgNjA4MjMsIDYwODI3LCA2MDgzMSwgCi0gICAgNjA4MzUsIDYwODM5LCA2MDg0MywgNjA4NDcsIDYwODUxLCA2MDg1NSwgNjA4NTksIDYwODYzLCA2MDg2NywgNjA4NzEsIAotICAgIDYwODc1LCA2MDg3OSwgNjA4ODMsIDYwODg3LCA2MDg5MSwgNjA4OTUsIDYwODk5LCA2MDkwMywgNjA5MDcsIDYwOTExLCAKLSAgICA2MDkxNSwgNjA5MTksIDYwOTIzLCAwLCA2MDkyNywgNjA5MzMsIDYwOTM5LCA2MDk0NCwgNjA5NDksIDYwOTU0LCA2MDk2MCwgCi0gICAgNjA5NjYsIDYwOTcyLCA2MDk3OCwgNjA5ODQsIDYwOTkwLCA2MDk5NiwgNjEwMDIsIDYxMDA4LCA2MTAxNCwgNjEwMjAsIAotICAgIDYxMDI1LCA2MTAzMCwgNjEwMzUsIDYxMDQwLCA2MTA0NSwgNjEwNTAsIDYxMDU1LCA2MTA2MCwgNjEwNjUsIDYxMDcwLCAKLSAgICA2MTA3NSwgNjEwODAsIDYxMDg1LCA2MTA5MCwgNjEwOTUsIDYxMTAwLCA2MTEwNSwgNjExMTAsIDYxMTE1LCA2MTEyMCwgCi0gICAgNjExMjYsIDYxMTMyLCA2MTEzOCwgNjExNDQsIDYxMTQ5LCA2MTE1NCwgMCwgMCwgMCwgMCwgMCwgNjExNTksIDYxMTY0LCAKLSAgICA2MTE2OSwgNjExNzQsIDYxMTc5LCA2MTE4NCwgNjExODksIDYxMTk0LCA2MTE5OSwgNjEyMDQsIDYxMjA5LCA2MTIxNCwgCi0gICAgNjEyMTksIDYxMjI0LCA2MTIyOSwgNjEyMzQsIDYxMjM5LCA2MTI0NCwgNjEyNDksIDYxMjU0LCA2MTI1OSwgNjEyNjQsIAotICAgIDYxMjY5LCA2MTI3NCwgNjEyNzksIDYxMjg0LCA2MTI4OSwgNjEyOTQsIDYxMjk5LCA2MTMwNCwgNjEzMDksIDYxMzE0LCAKLSAgICA2MTMxOSwgNjEzMjQsIDYxMzI5LCA2MTMzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjEzMzksIAotICAgIDYxMzQ0LCA2MTM0OSwgNjEzNTQsIDYxMzU4LCA2MTM2MywgNjEzNjcsIDYxMzcyLCA2MTM3NywgNjEzODIsIDYxMzg3LCAKLSAgICA2MTM5MiwgNjEzOTYsIDYxNDAxLCA2MTQwNiwgNjE0MTEsIDYxNDE2LCA2MTQyMCwgNjE0MjQsIDYxNDI4LCA2MTQzMiwgCi0gICAgNjE0MzYsIDYxNDQwLCA2MTQ0NCwgNjE0NDgsIDYxNDUyLCA2MTQ1NiwgNjE0NjAsIDYxNDY0LCA2MTQ2OCwgNjE0NzIsIAotICAgIDYxNDc3LCA2MTQ4MiwgNjE0ODcsIDYxNDkyLCA2MTQ5NywgNjE1MDIsIDYxNTA3LCA2MTUxMiwgNjE1MTcsIDYxNTIyLCAKLSAgICA2MTUyNywgNjE1MzIsIDYxNTM3LCA2MTU0MiwgNjE1NDcsIDYxNTUzLCAwLCA2MTU2MCwgNjE1NjMsIDYxNTY2LCA2MTU2OSwgCi0gICAgNjE1NzIsIDYxNTc1LCA2MTU3OCwgNjE1ODEsIDYxNTg0LCA2MTU4NywgNjE1OTEsIDYxNTk1LCA2MTU5OSwgNjE2MDMsIAotICAgIDYxNjA3LCA2MTYxMSwgNjE2MTUsIDYxNjE5LCA2MTYyMywgNjE2MjcsIDYxNjMxLCA2MTYzNSwgNjE2MzksIDYxNjQzLCAKLSAgICA2MTY0NywgNjE2NTEsIDYxNjU1LCA2MTY1OSwgNjE2NjMsIDYxNjY3LCA2MTY3MSwgNjE2NzUsIDYxNjc5LCA2MTY4MywgCi0gICAgNjE2ODcsIDYxNjkxLCA2MTY5NSwgNjE2OTksIDYxNzAzLCA2MTcwNywgNjE3MTEsIDYxNzIwLCA2MTcyOSwgNjE3MzgsIAotICAgIDYxNzQ3LCA2MTc1NiwgNjE3NjUsIDYxNzc0LCA2MTc4MywgNjE3ODYsIDYxNzkxLCA2MTc5NiwgNjE4MDEsIDYxODA2LCAKLSAgICA2MTgxMSwgNjE4MTYsIDYxODIxLCA2MTgyNiwgNjE4MzEsIDYxODM1LCA2MTg0MCwgNjE4NDUsIDYxODUwLCA2MTg1NSwgCi0gICAgNjE4NjAsIDYxODY0LCA2MTg2OCwgNjE4NzIsIDYxODc2LCA2MTg4MCwgNjE4ODQsIDYxODg4LCA2MTg5MiwgNjE4OTYsIAotICAgIDYxOTAwLCA2MTkwNCwgNjE5MDgsIDYxOTEyLCA2MTkxNiwgNjE5MjEsIDYxOTI2LCA2MTkzMSwgNjE5MzYsIDYxOTQxLCAKLSAgICA2MTk0NiwgNjE5NTEsIDYxOTU2LCA2MTk2MSwgNjE5NjYsIDYxOTcxLCA2MTk3NiwgNjE5ODEsIDYxOTg2LCA2MTk5MiwgCi0gICAgNjE5OTgsIDYyMDAzLCA2MjAwOCwgNjIwMTEsIDYyMDE0LCA2MjAxNywgNjIwMjAsIDYyMDIzLCA2MjAyNiwgNjIwMjksIAotICAgIDYyMDMyLCA2MjAzNSwgNjIwMzksIDYyMDQzLCA2MjA0NywgNjIwNTEsIDYyMDU1LCA2MjA1OSwgNjIwNjMsIDYyMDY3LCAKLSAgICA2MjA3MSwgNjIwNzUsIDYyMDc5LCA2MjA4MywgNjIwODcsIDYyMDkxLCA2MjA5NSwgNjIwOTksIDYyMTAzLCA2MjEwNywgCi0gICAgNjIxMTEsIDYyMTE1LCA2MjExOSwgNjIxMjMsIDYyMTI3LCA2MjEzMSwgNjIxMzUsIDYyMTM5LCA2MjE0MywgNjIxNDcsIAotICAgIDYyMTUxLCA2MjE1NSwgNjIxNTksIDYyMTYzLCA2MjE2NywgNjIxNzEsIDYyMTc1LCA2MjE3OSwgNjIxODMsIDYyMTg3LCAKLSAgICA2MjE5MSwgNjIxOTUsIDYyMjAwLCA2MjIwNSwgNjIyMTAsIDYyMjE1LCA2MjIxOSwgNjIyMjQsIDYyMjI5LCA2MjIzNCwgCi0gICAgNjIyMzksIDYyMjQ0LCA2MjI0OSwgNjIyNTQsIDYyMjU5LCA2MjI2NCwgNjIyNjgsIDYyMjc1LCA2MjI4MiwgNjIyODksIAotICAgIDYyMjk2LCA2MjMwMywgNjIzMTAsIDYyMzE3LCA2MjMyNCwgNjIzMzEsIDYyMzM4LCA2MjM0NSwgNjIzNTIsIDYyMzU1LCAKLSAgICA2MjM1OCwgNjIzNjEsIDYyMzY2LCA2MjM2OSwgNjIzNzIsIDYyMzc1LCA2MjM3OCwgNjIzODEsIDYyMzg0LCA2MjM4OCwgCi0gICAgNjIzOTIsIDYyMzk2LCA2MjQwMCwgNjI0MDMsIDYyNDA3LCA2MjQxMSwgNjI0MTUsIDYyNDE5LCA2MjQyMywgNjI0MjcsIAotICAgIDYyNDMxLCA2MjQzNSwgNjI0MzgsIDYyNDQxLCA2MjQ0NSwgNjI0NDksIDYyNDUzLCA2MjQ1NywgNjI0NjAsIDYyNDY0LCAKLSAgICA2MjQ2OCwgNjI0NzIsIDYyNDc2LCA2MjQ3OSwgNjI0ODMsIDYyNDg3LCA2MjQ5MSwgNjI0OTUsIDYyNDk4LCA2MjUwMiwgCi0gICAgNjI1MDYsIDYyNTA5LCA2MjUxMywgNjI1MTcsIDYyNTIxLCA2MjUyNSwgNjI1MjksIDYyNTMzLCA2MjUzNywgMCwgNjI1NDEsIAotICAgIDYyNTQ0LCA2MjU0NywgNjI1NTAsIDYyNTUzLCA2MjU1NiwgNjI1NTksIDYyNTYyLCA2MjU2NSwgNjI1NjgsIDYyNTcxLCAKLSAgICA2MjU3NCwgNjI1NzcsIDYyNTgwLCA2MjU4MywgNjI1ODYsIDYyNTg5LCA2MjU5MiwgNjI1OTUsIDYyNTk4LCA2MjYwMSwgCi0gICAgNjI2MDQsIDYyNjA3LCA2MjYxMCwgNjI2MTMsIDYyNjE2LCA2MjYxOSwgNjI2MjIsIDYyNjI1LCA2MjYyOCwgNjI2MzEsIAotICAgIDYyNjM0LCA2MjYzNywgNjI2NDAsIDYyNjQzLCA2MjY0NiwgNjI2NDksIDYyNjUyLCA2MjY1NSwgNjI2NTgsIDYyNjYxLCAKLSAgICA2MjY2NCwgNjI2NjcsIDYyNjcwLCA2MjY3MywgNjI2NzYsIDYyNjc5LCA2MjY4MiwgNjI2ODUsIDYyNjg4LCA2MjY5MSwgCi0gICAgNjI2OTQsIDYyNjk3LCA2MjcwMCwgNjI3MDMsIDYyNzA2LCA2MjcwOSwgNjI3MTIsIDYyNzE1LCA2MjcxOCwgNjI3MjEsIAotICAgIDYyNzI0LCA2MjcyNywgNjI3MzAsIDYyNzMzLCA2MjczNiwgNjI3MzksIDYyNzQyLCA2Mjc0NSwgNjI3NDgsIDYyNzUxLCAKLSAgICA2Mjc1NCwgNjI3NTcsIDYyNzYwLCA2Mjc2MywgNjI3NjYsIDYyNzY5LCA2Mjc3MiwgNjI3NzUsIDYyNzc4LCA2Mjc4MSwgCi0gICAgNjI3ODQsIDYyNzg3LCA2Mjc5MCwgNjI3OTMsIDYyNzk2LCA2Mjc5OSwgNjI4MDIsIDYyODA1LCA2MjgxNCwgNjI4MjIsIAotICAgIDYyODMwLCA2MjgzOCwgNjI4NDYsIDYyODU0LCA2Mjg2MiwgNjI4NzAsIDYyODc4LCA2Mjg4NiwgNjI4OTUsIDYyOTA0LCAKLSAgICA2MjkxMywgNjI5MjIsIDYyOTMxLCA2Mjk0MCwgNjI5NDksIDYyOTU4LCA2Mjk2NywgNjI5NzYsIDYyOTg1LCA2Mjk5NCwgCi0gICAgNjMwMDMsIDYzMDEyLCA2MzAyMSwgNjMwMjQsIDYzMDI3LCA2MzAzMCwgNjMwMzIsIDYzMDM1LCA2MzAzOCwgNjMwNDEsIAotICAgIDYzMDQ2LCA2MzA1MSwgNjMwNTQsIDYzMDYxLCA2MzA2OCwgNjMwNzUsIDYzMDgyLCA2MzA4NSwgNjMwOTAsIDYzMDkyLCAKLSAgICA2MzA5NiwgNjMwOTgsIDYzMTAwLCA2MzEwMywgNjMxMDYsIDYzMTA5LCA2MzExMiwgNjMxMTUsIDYzMTE4LCA2MzEyMSwgCi0gICAgNjMxMjYsIDYzMTMxLCA2MzEzNCwgNjMxMzcsIDYzMTQwLCA2MzE0MywgNjMxNDYsIDYzMTQ5LCA2MzE1MiwgNjMxNTYsIAotICAgIDYzMTU5LCA2MzE2MiwgNjMxNjUsIDYzMTY4LCA2MzE3MSwgNjMxNzUsIDYzMTc4LCA2MzE4MSwgNjMxODQsIDYzMTg5LCAKLSAgICA2MzE5NCwgNjMxOTksIDYzMjA0LCA2MzIwOSwgNjMyMTQsIDYzMjE5LCA2MzIyNCwgNjMyMzAsIDYzMjM4LCA2MzI0MCwgCi0gICAgNjMyNDMsIDYzMjQ2LCA2MzI0OSwgNjMyNTIsIDYzMjU4LCA2MzI2NiwgNjMyNjksIDYzMjcyLCA2MzI3NywgNjMyODAsIAotICAgIDYzMjgzLCA2MzI4NiwgNjMyOTEsIDYzMjk0LCA2MzI5NywgNjMzMDIsIDYzMzA1LCA2MzMwOCwgNjMzMTMsIDYzMzE2LCAKLSAgICA2MzMxOSwgNjMzMjQsIDYzMzI5LCA2MzMzNCwgNjMzMzcsIDYzMzQwLCA2MzM0MywgNjMzNDYsIDYzMzUyLCA2MzM1NSwgCi0gICAgNjMzNTgsIDYzMzYxLCA2MzM2MywgNjMzNjYsIDYzMzY5LCA2MzM3MiwgNjMzNzcsIDYzMzgwLCA2MzM4MywgNjMzODYsIAotICAgIDYzMzg5LCA2MzM5MiwgNjMzOTcsIDYzNDAwLCA2MzQwMywgNjM0MDYsIDYzNDA5LCA2MzQxMiwgNjM0MTUsIDYzNDE4LCAKLSAgICA2MzQyMSwgNjM0MjQsIDYzNDI5LCA2MzQzMywgNjM0NDEsIDYzNDQ5LCA2MzQ1NywgNjM0NjUsIDYzNDczLCA2MzQ4MSwgCi0gICAgNjM0ODksIDYzNDk3LCA2MzUwNSwgNjM1MTQsIDYzNTIzLCA2MzUzMiwgNjM1NDEsIDYzNTUwLCA2MzU1OSwgNjM1NjgsIAotICAgIDYzNTc3LCA2MzU4NiwgNjM1OTUsIDYzNjA0LCA2MzYxMywgNjM2MjIsIDYzNjMxLCA2MzY0MCwgNjM2NDksIDYzNjU4LCAKLSAgICA2MzY2NywgNjM2NzYsIDYzNjg1LCA2MzY5NCwgNjM3MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg3ODgwLCA4Nzg5NSwgODc5MTAsIDg3OTE2LCA4NzkyMiwgODc5MjgsIAorICAgIDg3OTM0LCA4Nzk0MCwgODc5NDYsIDg3OTUyLCA4Nzk1OCwgODc5NjYsIDg3OTcwLCA4Nzk3MywgMCwgMCwgODc5ODEsIAorICAgIDg3OTg0LCA4Nzk4NywgODc5OTAsIDg3OTkzLCA4Nzk5NiwgODc5OTksIDg4MDAyLCA4ODAwNSwgODgwMDgsIDg4MDExLCAKKyAgICA4ODAxNCwgODgwMTcsIDg4MDIwLCA4ODAyMywgODgwMjYsIDg4MDI5LCA4ODAzNywgODgwNDYsIDg4MDU3LCA4ODA2NSwgCisgICAgODgwNzMsIDg4MDgyLCA4ODA5MSwgODgxMDIsIDg4MTE0LCAwLCAwLCAwLCAwLCAwLCAwLCA4ODEyNCwgODgxMjksIDg4MTM0LCAKKyAgICA4ODE0MSwgODgxNDgsIDg4MTU0LCA4ODE2MCwgODgxNjUsIDg4MTcwLCA4ODE3NSwgODgxODEsIDg4MTg3LCA4ODE5MywgCisgICAgODgxOTksIDg4MjA1LCA4ODIxMiwgODgyMTksIDg4MjI5LCA4ODIzOSwgODgyNDksIDg4MjU4LCA4ODI2OSwgODgyNzgsIAorICAgIDg4Mjg3LCA4ODI5NywgODgzMDcsIDg4MzE5LCA4ODMzMSwgODgzNDIsIDg4MzUzLCA4ODM2NCwgODgzNzUsIDg4Mzg1LCAKKyAgICA4ODM5NSwgODg0MDUsIDg4NDE1LCA4ODQyNiwgODg0MzcsIDg4NDQxLCA4ODQ0NiwgODg0NTUsIDg4NDY0LCA4ODQ2OCwgCisgICAgODg0NzIsIDg4NDc2LCA4ODQ4MSwgODg0ODYsIDg4NDkxLCA4ODQ5NiwgODg0OTksIDg4NTAzLCAwLCA4ODUwOCwgODg1MTEsIAorICAgIDg4NTE0LCA4ODUxOCwgODg1MjIsIDg4NTI3LCA4ODUzMSwgODg1MzUsIDg4NTQwLCA4ODU0NSwgODg1NTIsIDg4NTU5LCAKKyAgICA4ODU2MiwgODg1NjUsIDg4NTY4LCA4ODU3MSwgODg1NzQsIDg4NTc4LCA4ODU4MiwgMCwgODg1ODYsIDg4NTkxLCA4ODU5NSwgCisgICAgODg1OTksIDAsIDAsIDAsIDAsIDg4NjA0LCA4ODYwOSwgODg2MTYsIDg4NjIxLCA4ODYyNiwgMCwgODg2MzEsIDg4NjM2LCAKKyAgICA4ODY0MSwgODg2NDYsIDg4NjUxLCA4ODY1NiwgODg2NjEsIDg4NjY2LCA4ODY3MSwgODg2NzYsIDg4NjgxLCA4ODY4NywgCisgICAgODg2OTYsIDg4NzA1LCA4ODcxNCwgODg3MjMsIDg4NzMzLCA4ODc0MywgODg3NTMsIDg4NzYzLCA4ODc3MiwgODg3ODEsIAorICAgIDg4NzkwLCA4ODc5OSwgODg4MDQsIDg4ODA5LCA4ODgxNSwgODg4MjEsIDg4ODI3LCA4ODgzMywgODg4NDEsIDg4ODQ5LCAKKyAgICA4ODg1NSwgODg4NjEsIDg4ODY3LCA4ODg3MywgODg4NzksIDg4ODg1LCA4ODg5MSwgODg4OTcsIDg4OTAyLCA4ODkwNywgCisgICAgODg5MTIsIDg4OTE3LCA4ODkyMiwgODg5MjcsIDg4OTMyLCA4ODkzNywgODg5NDMsIDg4OTQ5LCA4ODk1NSwgODg5NjEsIAorICAgIDg4OTY3LCA4ODk3MywgODg5NzksIDg4OTg1LCA4ODk5MSwgODg5OTcsIDg5MDAzLCA4OTAwOSwgODkwMTUsIDg5MDIxLCAKKyAgICA4OTAyNywgODkwMzMsIDg5MDM5LCA4OTA0NSwgODkwNTEsIDg5MDU3LCA4OTA2MywgODkwNjksIDg5MDc1LCA4OTA4MSwgCisgICAgODkwODcsIDg5MDkzLCA4OTA5OSwgODkxMDUsIDg5MTExLCA4OTExNywgODkxMjMsIDg5MTI5LCA4OTEzNSwgODkxNDEsIAorICAgIDg5MTQ3LCA4OTE1MywgODkxNTksIDg5MTY1LCA4OTE3MSwgODkxNzcsIDg5MTgzLCA4OTE4OSwgODkxOTUsIDg5MjAxLCAKKyAgICA4OTIwNywgODkyMTMsIDg5MjE5LCA4OTIyNSwgODkyMzEsIDg5MjM3LCA4OTI0MywgODkyNDksIDg5MjU1LCA4OTI2MSwgCisgICAgODkyNjcsIDg5MjczLCA4OTI3OSwgODkyODUsIDg5MjkxLCA4OTI5NywgODkzMDIsIDg5MzA3LCA4OTMxMiwgODkzMTcsIAorICAgIDg5MzIzLCA4OTMyOSwgODkzMzUsIDg5MzQxLCA4OTM0NywgODkzNTMsIDg5MzU5LCA4OTM2NSwgODkzNzEsIDg5Mzc3LCAKKyAgICA4OTM4NCwgODkzOTEsIDg5Mzk2LCA4OTQwMSwgODk0MDYsIDg5NDExLCA4OTQyMywgODk0MzUsIDg5NDQ3LCA4OTQ1OSwgCisgICAgODk0NzIsIDg5NDg1LCA4OTQ5MywgMCwgMCwgODk1MDEsIDAsIDg5NTA5LCA4OTUxMywgODk1MTcsIDg5NTIwLCA4OTUyNCwgCisgICAgODk1MjgsIDg5NTMxLCA4OTUzNCwgODk1MzgsIDg5NTQyLCA4OTU0NSwgODk1NDgsIDg5NTUxLCA4OTU1NCwgODk1NTksIAorICAgIDg5NTYyLCA4OTU2NiwgODk1NjksIDg5NTcyLCA4OTU3NSwgODk1NzgsIDg5NTgxLCA4OTU4NCwgODk1ODgsIDg5NTkxLCAKKyAgICA4OTU5NSwgODk1OTgsIDg5NjAxLCA4OTYwNSwgODk2MDksIDg5NjEzLCA4OTYxNywgODk2MjIsIDg5NjI3LCA4OTYzMywgCisgICAgODk2MzksIDg5NjQ1LCA4OTY1MCwgODk2NTYsIDg5NjYyLCA4OTY2OCwgODk2NzMsIDg5Njc5LCA4OTY4NSwgODk2OTAsIAorICAgIDg5Njk2LCA4OTcwMiwgODk3MDcsIDg5NzEzLCA4OTcxOSwgODk3MjQsIDg5NzI5LCA4OTczNSwgODk3NDAsIDg5NzQ2LCAKKyAgICA4OTc1MiwgODk3NTgsIDg5NzY0LCA4OTc3MCwgODk3NzQsIDg5Nzc5LCA4OTc4MywgODk3ODgsIDg5NzkyLCA4OTc5NywgCisgICAgODk4MDIsIDg5ODA4LCA4OTgxNCwgODk4MjAsIDg5ODI1LCA4OTgzMSwgODk4MzcsIDg5ODQzLCA4OTg0OCwgODk4NTQsIAorICAgIDg5ODYwLCA4OTg2NSwgODk4NzEsIDg5ODc3LCA4OTg4MiwgODk4ODgsIDg5ODk0LCA4OTg5OSwgODk5MDQsIDg5OTEwLCAKKyAgICA4OTkxNSwgODk5MjEsIDg5OTI3LCA4OTkzMywgODk5MzksIDg5OTQ1LCA4OTk1MCwgODk5NTQsIDg5OTU5LCA4OTk2MiwgCisgICAgODk5NjcsIDg5OTcyLCA4OTk3OCwgODk5ODMsIDg5OTg4LCA4OTk5MiwgODk5OTcsIDkwMDAyLCA5MDAwNywgOTAwMTIsIAorICAgIDkwMDE3LCA5MDAyMiwgOTAwMjcsIDkwMDMyLCA5MDAzOCwgOTAwNDQsIDkwMDUwLCA5MDA1OCwgOTAwNjIsIDkwMDY2LCAKKyAgICA5MDA3MCwgOTAwNzQsIDkwMDc4LCA5MDA4MiwgOTAwODcsIDkwMDkyLCA5MDA5NywgOTAxMDIsIDkwMTA3LCA5MDExMiwgCisgICAgOTAxMTcsIDkwMTIyLCA5MDEyNywgOTAxMzIsIDkwMTM3LCA5MDE0MiwgOTAxNDcsIDkwMTUxLCA5MDE1NiwgOTAxNjEsIAorICAgIDkwMTY2LCA5MDE3MSwgOTAxNzYsIDkwMTgwLCA5MDE4NSwgOTAxOTAsIDkwMTk1LCA5MDIwMCwgOTAyMDQsIDkwMjA5LCAKKyAgICA5MDIxNCwgOTAyMTksIDkwMjI0LCA5MDIyOCwgOTAyMzMsIDkwMjM4LCA5MDI0MywgOTAyNDgsIDkwMjUzLCA5MDI1OCwgCisgICAgOTAyNjMsIDkwMjY4LCA5MDI3MywgOTAyODAsIDkwMjg3LCA5MDI5MSwgOTAyOTYsIDkwMzAxLCA5MDMwNiwgOTAzMTEsIAorICAgIDkwMzE2LCA5MDMyMSwgOTAzMjYsIDkwMzMxLCA5MDMzNiwgOTAzNDEsIDkwMzQ2LCA5MDM1MSwgOTAzNTYsIDkwMzYxLCAKKyAgICA5MDM2NiwgOTAzNzEsIDkwMzc2LCA5MDM4MSwgOTAzODYsIDkwMzkxLCA5MDM5NiwgOTA0MDEsIDkwNDA2LCA5MDQxMSwgCisgICAgOTA0MTYsIDkwNDIxLCA5MDQyNiwgOTA0MzEsIDkwNDM2LCAwLCAwLCAwLCA5MDQ0MSwgOTA0NDUsIDkwNDUwLCA5MDQ1NCwgCisgICAgOTA0NTksIDkwNDY0LCAwLCAwLCA5MDQ2OCwgOTA0NzMsIDkwNDc4LCA5MDQ4MiwgOTA0ODcsIDkwNDkyLCAwLCAwLCAKKyAgICA5MDQ5NywgOTA1MDIsIDkwNTA2LCA5MDUxMSwgOTA1MTYsIDkwNTIxLCAwLCAwLCA5MDUyNiwgOTA1MzEsIDkwNTM2LCAwLCAKKyAgICAwLCAwLCA5MDU0MCwgOTA1NDQsIDkwNTQ4LCA5MDU1MiwgOTA1NTUsIDkwNTU5LCA5MDU2MywgMCwgOTA1NjcsIDkwNTczLCAKKyAgICA5MDU3NiwgOTA1NzksIDkwNTgyLCA5MDU4NSwgOTA1ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkwNTkzLCAKKyAgICA5MDU5OSwgOTA2MDUsIDkwNjExLCA5MDYxNywgMCwgMCwgOTA2MjEsIDkwNjI3LCA5MDYzMywgOTA2MzksIDkwNjQ1LCAKKyAgICA5MDY1MSwgOTA2NTgsIDkwNjY1LCA5MDY3MiwgOTA2NzksIDkwNjg2LCA5MDY5MywgMCwgOTA3MDAsIDkwNzA3LCA5MDcxNCwgCisgICAgOTA3MjAsIDkwNzI3LCA5MDczNCwgOTA3NDEsIDkwNzQ4LCA5MDc1NCwgOTA3NjEsIDkwNzY4LCA5MDc3NSwgOTA3ODIsIAorICAgIDkwNzg5LCA5MDc5NiwgOTA4MDMsIDkwODEwLCA5MDgxNywgOTA4MjMsIDkwODMwLCA5MDgzNywgOTA4NDQsIDkwODUxLCAKKyAgICA5MDg1OCwgOTA4NjUsIDkwODcyLCAwLCA5MDg3OSwgOTA4ODYsIDkwODkzLCA5MDkwMCwgOTA5MDcsIDkwOTE0LCA5MDkyMSwgCisgICAgOTA5MjgsIDkwOTM1LCA5MDk0MiwgOTA5NDksIDkwOTU2LCA5MDk2MywgOTA5NzAsIDkwOTc2LCA5MDk4MywgOTA5OTAsIAorICAgIDkwOTk3LCA5MTAwNCwgMCwgOTEwMTEsIDkxMDE4LCAwLCA5MTAyNSwgOTEwMzIsIDkxMDM5LCA5MTA0NiwgOTEwNTMsIAorICAgIDkxMDYwLCA5MTA2NywgOTEwNzQsIDkxMDgxLCA5MTA4OCwgOTEwOTUsIDkxMTAyLCA5MTEwOSwgOTExMTYsIDkxMTIzLCAwLCAKKyAgICAwLCA5MTEyOSwgOTExMzQsIDkxMTM5LCA5MTE0NCwgOTExNDksIDkxMTU0LCA5MTE1OSwgOTExNjQsIDkxMTY5LCA5MTE3NCwgCisgICAgOTExNzksIDkxMTg0LCA5MTE4OSwgOTExOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxMTk5LCA5MTIwNiwgCisgICAgOTEyMTMsIDkxMjIwLCA5MTIyNywgOTEyMzQsIDkxMjQxLCA5MTI0OCwgOTEyNTUsIDkxMjYyLCA5MTI2OSwgOTEyNzYsIAorICAgIDkxMjgzLCA5MTI5MCwgOTEyOTcsIDkxMzA0LCA5MTMxMSwgOTEzMTgsIDkxMzI1LCA5MTMzMiwgOTEzNDAsIDkxMzQ4LCAKKyAgICA5MTM1NSwgOTEzNjIsIDkxMzY3LCA5MTM3NSwgOTEzODMsIDkxMzkwLCA5MTM5NywgOTE0MDIsIDkxNDA5LCA5MTQxNCwgCisgICAgOTE0MTksIDkxNDI2LCA5MTQzMSwgOTE0MzYsIDkxNDQxLCA5MTQ0OSwgOTE0NTQsIDkxNDU5LCA5MTQ2NiwgOTE0NzEsIAorICAgIDkxNDc2LCA5MTQ4MywgOTE0OTAsIDkxNDk1LCA5MTUwMCwgOTE1MDUsIDkxNTEwLCA5MTUxNSwgOTE1MjAsIDkxNTI1LCAKKyAgICA5MTUzMCwgOTE1MzUsIDkxNTQyLCA5MTU0NywgOTE1NTQsIDkxNTU5LCA5MTU2NCwgOTE1NjksIDkxNTc0LCA5MTU3OSwgCisgICAgOTE1ODQsIDkxNTg5LCA5MTU5NCwgOTE1OTksIDkxNjA0LCA5MTYwOSwgOTE2MTYsIDkxNjIzLCA5MTYzMCwgOTE2MzcsIAorICAgIDkxNjQzLCA5MTY0OCwgOTE2NTUsIDkxNjYwLCA5MTY2NSwgOTE2NzQsIDkxNjgxLCA5MTY5MCwgOTE2OTcsIDkxNzAyLCAKKyAgICA5MTcwNywgOTE3MTUsIDkxNzIwLCA5MTcyNSwgOTE3MzAsIDkxNzM1LCA5MTc0MCwgOTE3NDcsIDkxNzUyLCA5MTc1NywgCisgICAgOTE3NjIsIDkxNzY3LCA5MTc3MiwgOTE3NzksIDkxNzg2LCA5MTc5MywgOTE4MDAsIDkxODA3LCA5MTgxNCwgOTE4MjEsIAorICAgIDkxODI4LCA5MTgzNSwgOTE4NDIsIDkxODQ5LCA5MTg1NiwgOTE4NjMsIDkxODcwLCA5MTg3NywgOTE4ODQsIDkxODkxLCAKKyAgICA5MTg5OCwgOTE5MDUsIDkxOTEyLCA5MTkxOSwgOTE5MjYsIDkxOTMzLCA5MTk0MCwgOTE5NDcsIDkxOTU0LCA5MTk2MSwgCisgICAgOTE5NjgsIDAsIDAsIDAsIDAsIDAsIDkxOTc1LCA5MTk4MywgOTE5OTEsIDAsIDAsIDAsIDAsIDkxOTk2LCA5MjAwMCwgCisgICAgOTIwMDQsIDkyMDA4LCA5MjAxMiwgOTIwMTYsIDkyMDIwLCA5MjAyNSwgOTIwMjksIDkyMDM0LCA5MjAzOSwgOTIwNDQsIAorICAgIDkyMDQ5LCA5MjA1NCwgOTIwNTksIDkyMDY0LCA5MjA2OSwgOTIwNzQsIDkyMDc5LCA5MjA4NSwgOTIwOTEsIDkyMDk3LCAKKyAgICA5MjEwNCwgOTIxMTEsIDkyMTE4LCA5MjEyNSwgOTIxMzIsIDkyMTM5LCA5MjE0NSwgOTIxNTEsIDkyMTU3LCA5MjE2NCwgCisgICAgOTIxNzEsIDkyMTc4LCA5MjE4NSwgOTIxOTIsIDkyMTk5LCA5MjIwNiwgOTIyMTMsIDkyMjIwLCA5MjIyNywgOTIyMzQsIAorICAgIDkyMjQxLCA5MjI0OCwgOTIyNTUsIDAsIDAsIDAsIDkyMjYyLCA5MjI3MCwgOTIyNzgsIDkyMjg2LCA5MjI5NCwgOTIzMDIsIAorICAgIDkyMzEyLCA5MjMyMiwgOTIzMzAsIDkyMzM4LCA5MjM0NiwgOTIzNTQsIDkyMzYyLCA5MjM2OCwgOTIzNzUsIDkyMzg0LCAKKyAgICA5MjM5MywgOTI0MDIsIDkyNDExLCA5MjQyMCwgOTI0MjksIDkyNDM5LCA5MjQ1MCwgOTI0NjAsIDkyNDcxLCA5MjQ4MCwgCisgICAgOTI0ODksIDkyNDk4LCA5MjUwOCwgOTI1MTksIDkyNTI5LCA5MjU0MCwgOTI1NTEsIDkyNTYwLCA5MjU2OCwgOTI1NzQsIAorICAgIDkyNTgwLCA5MjU4NiwgOTI1OTIsIDkyNjAwLCA5MjYwOCwgOTI2MTQsIDkyNjIxLCA5MjYzMSwgOTI2MzgsIDkyNjQ1LCAKKyAgICA5MjY1MiwgOTI2NTksIDkyNjY2LCA5MjY3NiwgOTI2ODMsIDkyNjkwLCA5MjY5OCwgOTI3MDYsIDkyNzE1LCA5MjcyNCwgCisgICAgOTI3MzMsIDkyNzQyLCA5Mjc1MSwgOTI3NTksIDkyNzY4LCA5Mjc3NywgOTI3ODYsIDkyNzkwLCA5Mjc5NywgOTI4MDIsIAorICAgIDkyODA3LCA5MjgxMSwgOTI4MTUsIDkyODE5LCA5MjgyMywgOTI4MjgsIDkyODMzLCA5MjgzOSwgOTI4NDUsIDkyODQ5LCAKKyAgICA5Mjg1NSwgOTI4NTksIDkyODYzLCA5Mjg2NywgOTI4NzEsIDkyODc1LCA5Mjg3OSwgOTI4ODUsIDkyODg5LCA5Mjg5NCwgMCwgCisgICAgMCwgMCwgOTI4OTgsIDkyOTAzLCA5MjkwOCwgOTI5MTMsIDkyOTE4LCA5MjkyNSwgOTI5MzAsIDkyOTM1LCA5Mjk0MCwgCisgICAgOTI5NDUsIDkyOTUwLCA5Mjk1NSwgMCwgMCwgMCwgMCwgOTI5NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDYzNzA2LCA2MzcxNSwgNjM3MjQsIDYzNzM1LCA2Mzc0MiwgNjM3NDcsIDYzNzUyLCA2Mzc1OSwgNjM3NjYsIAotICAgIDYzNzcyLCA2Mzc3NywgNjM3ODIsIDYzNzg3LCA2Mzc5MiwgNjM3OTksIDYzODA0LCA2MzgwOSwgNjM4MTQsIDYzODI1LCAKLSAgICA2MzgzMCwgNjM4MzUsIDYzODQyLCA2Mzg0NywgNjM4NTQsIDYzODU5LCA2Mzg2NCwgNjM4NzEsIDYzODc4LCA2Mzg4NSwgCi0gICAgNjM4OTQsIDYzOTAzLCA2MzkwOCwgNjM5MTMsIDYzOTE4LCA2MzkyNSwgNjM5MzAsIDYzOTQwLCA2Mzk0NywgNjM5NTIsIAotICAgIDYzOTU3LCA2Mzk2MiwgNjM5NjcsIDYzOTcyLCA2Mzk3NywgNjM5ODYsIDYzOTkzLCA2NDAwMCwgNjQwMDUsIDY0MDEyLCAKLSAgICA2NDAxNywgNjQwMjQsIDY0MDMzLCA2NDA0NCwgNjQwNDksIDY0MDU4LCA2NDA2MywgNjQwNzAsIDY0MDc5LCA2NDA4OCwgCi0gICAgNjQwOTMsIDY0MDk4LCA2NDEwNSwgNjQxMTEsIDY0MTE4LCA2NDEyNSwgNjQxMjksIDY0MTMzLCA2NDEzNiwgNjQxNDAsIAotICAgIDY0MTQ0LCA2NDE0OCwgNjQxNTIsIDY0MTU2LCA2NDE2MCwgNjQxNjQsIDY0MTY3LCA2NDE3MSwgNjQxNzUsIDY0MTc5LCAKLSAgICA2NDE4MywgNjQxODcsIDY0MTkxLCA2NDE5NCwgNjQxOTgsIDY0MjAyLCA2NDIwNSwgNjQyMDksIDY0MjEzLCA2NDIxNywgCi0gICAgNjQyMjEsIDY0MjI1LCA2NDIyOSwgNjQyMzMsIDY0MjM3LCA2NDI0MSwgNjQyNDUsIDY0MjQ5LCA2NDI1MywgNjQyNTcsIAotICAgIDY0MjYxLCA2NDI2NSwgNjQyNjksIDY0MjczLCA2NDI3NywgNjQyODEsIDY0Mjg1LCA2NDI4OSwgNjQyOTMsIDY0Mjk3LCAKLSAgICA2NDMwMSwgNjQzMDUsIDY0MzA5LCA2NDMxMywgNjQzMTcsIDY0MzIxLCA2NDMyNSwgNjQzMjksIDY0MzMzLCA2NDMzNywgCi0gICAgNjQzNDEsIDY0MzQ1LCA2NDM0OSwgNjQzNTMsIDY0MzU3LCA2NDM2MSwgNjQzNjUsIDY0MzY5LCA2NDM3MywgNjQzNzcsIAotICAgIDY0MzgxLCA2NDM4NCwgNjQzODgsIDY0MzkyLCA2NDM5NiwgNjQ0MDAsIDY0NDA0LCA2NDQwOCwgNjQ0MTIsIDY0NDE2LCAKLSAgICA2NDQyMCwgNjQ0MjQsIDY0NDI4LCA2NDQzMiwgNjQ0MzYsIDY0NDQwLCA2NDQ0NCwgNjQ0NDgsIDY0NDUyLCA2NDQ1NiwgCi0gICAgNjQ0NjAsIDY0NDY0LCA2NDQ2OCwgNjQ0NzIsIDY0NDc2LCA2NDQ4MCwgNjQ0ODQsIDY0NDg4LCA2NDQ5MiwgNjQ0OTYsIAotICAgIDY0NTAwLCA2NDUwNCwgNjQ1MDgsIDY0NTEyLCA2NDUxNiwgNjQ1MjAsIDY0NTI0LCA2NDUyOCwgNjQ1MzIsIDY0NTM2LCAKLSAgICA2NDU0MCwgNjQ1NDQsIDY0NTQ4LCA2NDU1MiwgNjQ1NTYsIDY0NTYwLCA2NDU2NCwgNjQ1NjgsIDY0NTcyLCA2NDU3NiwgCi0gICAgNjQ1ODAsIDY0NTg0LCA2NDU4OCwgNjQ1OTIsIDY0NTk2LCA2NDYwMCwgNjQ2MDQsIDY0NjA4LCA2NDYxMiwgNjQ2MTYsIAotICAgIDY0NjIwLCA2NDYyNCwgNjQ2MjgsIDY0NjMyLCA2NDYzNiwgNjQ2NDAsIDY0NjQ0LCA2NDY0OCwgNjQ2NTIsIDY0NjU2LCAKLSAgICA2NDY2MCwgNjQ2NjQsIDY0NjY4LCA2NDY3MiwgNjQ2NzYsIDY0NjgwLCA2NDY4NCwgNjQ2ODgsIDY0NjkyLCA2NDY5NiwgCi0gICAgNjQ3MDAsIDY0NzA0LCA2NDcwOCwgNjQ3MTIsIDY0NzE2LCA2NDcyMCwgNjQ3MjQsIDY0NzI4LCA2NDczMiwgNjQ3MzYsIAotICAgIDY0NzQwLCA2NDc0NCwgNjQ3NDgsIDY0NzUyLCA2NDc1NiwgNjQ3NjAsIDY0NzY0LCA2NDc2OCwgNjQ3NzIsIDY0Nzc2LCAKLSAgICA2NDc4MCwgNjQ3ODQsIDY0Nzg4LCA2NDc5MiwgNjQ3OTYsIDY0ODAwLCA2NDgwNCwgNjQ4MDgsIDY0ODEyLCA2NDgxNiwgCi0gICAgNjQ4MjAsIDY0ODI0LCA2NDgyOCwgNjQ4MzIsIDY0ODM2LCA2NDg0MCwgNjQ4NDQsIDY0ODQ4LCA2NDg1MiwgNjQ4NTUsIAotICAgIDY0ODU5LCA2NDg2MywgNjQ4NjcsIDY0ODcxLCA2NDg3NSwgNjQ4NzksIDY0ODgzLCA2NDg4NywgNjQ4OTEsIDY0ODk1LCAKLSAgICA2NDg5OSwgNjQ5MDMsIDY0OTA3LCA2NDkxMSwgNjQ5MTUsIDY0OTE5LCA2NDkyMywgNjQ5MjcsIDY0OTMxLCA2NDkzNSwgCi0gICAgNjQ5MzksIDY0OTQzLCA2NDk0NywgNjQ5NTEsIDY0OTU1LCA2NDk1OSwgNjQ5NjMsIDY0OTY3LCA2NDk3MSwgNjQ5NzUsIAotICAgIDY0OTc5LCA2NDk4MywgNjQ5ODcsIDY0OTkxLCA2NDk5NSwgNjQ5OTksIDY1MDAzLCA2NTAwNywgNjUwMTEsIDY1MDE1LCAKLSAgICA2NTAxOSwgNjUwMjMsIDY1MDI3LCA2NTAzMSwgNjUwMzUsIDY1MDM5LCA2NTA0MywgNjUwNDcsIDY1MDUxLCA2NTA1NSwgCi0gICAgNjUwNTksIDY1MDYzLCA2NTA2NywgNjUwNzEsIDY1MDc1LCA2NTA3OSwgNjUwODMsIDY1MDg3LCA2NTA5MSwgNjUwOTUsIAotICAgIDY1MDk5LCA2NTEwMywgNjUxMDcsIDY1MTExLCA2NTExNSwgNjUxMTksIDY1MTIzLCA2NTEyNywgNjUxMzEsIDY1MTM1LCAKLSAgICA2NTEzOSwgNjUxNDMsIDY1MTQ3LCA2NTE1MSwgNjUxNTUsIDY1MTU5LCA2NTE2MywgNjUxNjcsIDY1MTcxLCA2NTE3NSwgCi0gICAgNjUxNzksIDY1MTgzLCA2NTE4NywgNjUxOTEsIDY1MTk1LCA2NTE5OSwgNjUyMDMsIDY1MjA3LCA2NTIxMSwgNjUyMTUsIAotICAgIDY1MjE5LCA2NTIyMywgNjUyMjcsIDY1MjMxLCA2NTIzNSwgNjUyMzksIDY1MjQzLCA2NTI0NywgNjUyNTEsIDY1MjU1LCAKLSAgICA2NTI1OSwgNjUyNjMsIDY1MjY3LCA2NTI3MSwgNjUyNzUsIDY1Mjc5LCA2NTI4MywgNjUyODcsIDY1MjkxLCA2NTI5NSwgCi0gICAgNjUyOTksIDY1MzAzLCA2NTMwNywgNjUzMTEsIDY1MzE1LCA2NTMxOCwgNjUzMjIsIDY1MzI2LCA2NTMzMCwgNjUzMzQsIAotICAgIDY1MzM4LCA2NTM0MiwgNjUzNDYsIDY1MzUwLCA2NTM1NCwgNjUzNTgsIDY1MzYyLCA2NTM2NiwgNjUzNzAsIDY1Mzc0LCAKLSAgICA2NTM3OCwgNjUzODIsIDY1Mzg2LCA2NTM5MCwgNjUzOTQsIDY1Mzk4LCA2NTQwMiwgNjU0MDYsIDY1NDEwLCA2NTQxNCwgCi0gICAgNjU0MTgsIDY1NDIyLCA2NTQyNiwgNjU0MzAsIDY1NDM0LCA2NTQzOCwgNjU0NDIsIDY1NDQ2LCA2NTQ1MCwgNjU0NTQsIAotICAgIDY1NDU4LCA2NTQ2MiwgNjU0NjYsIDY1NDcwLCA2NTQ3NCwgNjU0NzgsIDY1NDgyLCA2NTQ4NiwgNjU0OTAsIDY1NDk0LCAKLSAgICA2NTQ5OCwgNjU1MDIsIDY1NTA2LCA2NTUxMCwgNjU1MTQsIDY1NTE4LCA2NTUyMiwgNjU1MjYsIDY1NTMwLCA2NTUzNCwgCi0gICAgNjU1MzgsIDY1NTQyLCA2NTU0NiwgNjU1NTAsIDY1NTU0LCA2NTU1OCwgNjU1NjIsIDY1NTY2LCA2NTU3MCwgNjU1NzQsIAotICAgIDY1NTc4LCA2NTU4MiwgNjU1ODYsIDY1NTkwLCA2NTU5NCwgNjU1OTgsIDY1NjAyLCA2NTYwNiwgNjU2MTAsIDY1NjE0LCAKLSAgICA2NTYxOCwgNjU2MjIsIDY1NjI2LCA2NTYzMCwgNjU2MzQsIDY1NjM4LCA2NTY0MiwgNjU2NDYsIDY1NjUwLCA2NTY1NCwgCi0gICAgNjU2NTgsIDY1NjYyLCA2NTY2NiwgNjU2NzAsIDY1Njc0LCA2NTY3NywgNjU2ODEsIDY1Njg1LCA2NTY4OSwgNjU2OTMsIAotICAgIDY1Njk3LCA2NTcwMSwgNjU3MDUsIDY1NzA5LCA2NTcxMywgNjU3MTcsIDY1NzIxLCA2NTcyNSwgNjU3MjksIDY1NzMzLCAKLSAgICA2NTczNywgNjU3NDEsIDY1NzQ1LCA2NTc0OSwgNjU3NTMsIDY1NzU3LCA2NTc2MSwgNjU3NjUsIDY1NzY5LCA2NTc3MywgCi0gICAgNjU3NzcsIDY1NzgxLCA2NTc4NSwgNjU3ODksIDY1NzkzLCA2NTc5NywgNjU4MDEsIDY1ODA1LCA2NTgwOSwgNjU4MTMsIAotICAgIDY1ODE3LCA2NTgyMSwgNjU4MjUsIDY1ODI5LCA2NTgzMywgNjU4MzcsIDY1ODQxLCA2NTg0NSwgNjU4NDksIDY1ODUzLCAKLSAgICA2NTg1NywgNjU4NjEsIDY1ODY1LCA2NTg2OSwgNjU4NzMsIDY1ODc3LCA2NTg4MSwgNjU4ODUsIDY1ODg5LCA2NTg5MywgCi0gICAgNjU4OTcsIDY1OTAxLCA2NTkwNSwgNjU5MDksIDY1OTEzLCA2NTkxNywgNjU5MjEsIDY1OTI1LCA2NTkyOSwgNjU5MzMsIAotICAgIDY1OTM3LCA2NTk0MSwgNjU5NDUsIDY1OTQ5LCA2NTk1MywgNjU5NTcsIDY1OTYxLCA2NTk2NSwgNjU5NjksIDY1OTczLCAKLSAgICA2NTk3NywgNjU5ODEsIDY1OTg1LCA2NTk4OSwgNjU5OTMsIDY1OTk3LCA2NjAwMSwgNjYwMDUsIDY2MDA5LCA2NjAxMywgCi0gICAgNjYwMTcsIDY2MDIxLCA2NjAyNSwgNjYwMjksIDY2MDMzLCA2NjAzNywgNjYwNDEsIDY2MDQ1LCA2NjA0OSwgNjYwNTMsIAotICAgIDY2MDU3LCA2NjA2MSwgNjYwNjUsIDY2MDY5LCA2NjA3MywgNjYwNzcsIDY2MDgxLCA2NjA4NSwgNjYwODksIDY2MDkzLCAKLSAgICA2NjA5NywgNjYxMDEsIDY2MTA1LCA2NjEwOSwgNjYxMTMsIDY2MTE3LCA2NjEyMSwgNjYxMjUsIDY2MTI5LCA2NjEzMywgCi0gICAgNjYxMzcsIDY2MTQxLCA2NjE0NSwgNjYxNDksIDY2MTUzLCA2NjE1NywgNjYxNjEsIDY2MTY1LCA2NjE2OSwgNjYxNzIsIAotICAgIDY2MTc2LCA2NjE4MCwgNjYxODQsIDY2MTg4LCA2NjE5MiwgNjYxOTYsIDY2MjAwLCA2NjIwNCwgNjYyMDgsIDY2MjEyLCAKLSAgICA2NjIxNiwgNjYyMjAsIDY2MjI0LCA2NjIyOCwgNjYyMzIsIDY2MjM2LCA2NjI0MCwgNjYyNDQsIDY2MjQ4LCA2NjI1MiwgCi0gICAgNjYyNTYsIDY2MjYwLCA2NjI2NCwgNjYyNjgsIDY2MjcyLCA2NjI3NiwgNjYyODAsIDY2Mjg0LCA2NjI4OCwgNjYyOTIsIAotICAgIDY2Mjk2LCA2NjMwMCwgNjYzMDQsIDY2MzA4LCA2NjMxMiwgNjYzMTYsIDY2MzIwLCA2NjMyNCwgNjYzMjgsIDY2MzMyLCAKLSAgICA2NjMzNiwgNjYzNDAsIDY2MzQ0LCA2NjM0OCwgNjYzNTIsIDY2MzU2LCA2NjM2MCwgNjYzNjQsIDY2MzY4LCA2NjM3MiwgCi0gICAgNjYzNzYsIDY2MzgwLCA2NjM4NCwgNjYzODgsIDY2MzkyLCA2NjM5NiwgNjY0MDAsIDY2NDA0LCA2NjQwOCwgNjY0MTIsIAotICAgIDY2NDE2LCA2NjQyMCwgNjY0MjQsIDY2NDI4LCA2NjQzMiwgNjY0MzYsIDY2NDQwLCA2NjQ0NCwgNjY0NDgsIDY2NDUyLCAKLSAgICA2NjQ1NiwgNjY0NjAsIDY2NDY0LCA2NjQ2OCwgNjY0NzIsIDY2NDc2LCA2NjQ4MCwgNjY0ODQsIDY2NDg4LCA2NjQ5MiwgCi0gICAgNjY0OTYsIDY2NTAwLCA2NjUwNCwgNjY1MDgsIDY2NTEyLCA2NjUxNiwgNjY1MjAsIDY2NTI0LCA2NjUyOCwgNjY1MzIsIAotICAgIDY2NTM2LCA2NjU0MCwgNjY1NDQsIDY2NTQ4LCA2NjU1MiwgNjY1NTYsIDY2NTYwLCA2NjU2NCwgNjY1NjgsIDY2NTcyLCAKLSAgICA2NjU3NiwgNjY1ODAsIDY2NTg0LCA2NjU4OCwgNjY1OTIsIDY2NTk2LCA2NjYwMCwgNjY2MDQsIDY2NjA4LCA2NjYxMiwgCi0gICAgNjY2MTYsIDY2NjIwLCA2NjYyNCwgNjY2MjcsIDY2NjMxLCA2NjYzNSwgNjY2MzksIDY2NjQzLCA2NjY0NywgNjY2NTEsIAotICAgIDY2NjU1LCA2NjY1OSwgNjY2NjMsIDY2NjY3LCA2NjY3MSwgNjY2NzUsIDY2Njc5LCA2NjY4MywgNjY2ODcsIDY2NjkxLCAKLSAgICA2NjY5NSwgNjY2OTksIDY2NzAzLCA2NjcwNywgNjY3MTEsIDY2NzE1LCA2NjcxOSwgNjY3MjMsIDY2NzI3LCA2NjczMSwgCi0gICAgNjY3MzUsIDY2NzM5LCA2Njc0MywgNjY3NDcsIDY2NzUxLCA2Njc1NSwgNjY3NTksIDY2NzYzLCA2Njc2NywgNjY3NzEsIAotICAgIDY2Nzc1LCA2Njc3OSwgNjY3ODMsIDY2Nzg3LCA2Njc5MSwgNjY3OTUsIDY2Nzk5LCA2NjgwMywgNjY4MDcsIDY2ODExLCAKLSAgICA2NjgxNSwgNjY4MTksIDY2ODIzLCA2NjgyNywgNjY4MzEsIDY2ODM1LCA2NjgzOSwgNjY4NDMsIDY2ODQ3LCA2Njg1MSwgCi0gICAgNjY4NTUsIDY2ODU5LCA2Njg2MywgNjY4NjcsIDY2ODcxLCA2Njg3NSwgNjY4NzksIDY2ODgzLCA2Njg4NywgNjY4OTEsIAotICAgIDY2ODk1LCA2Njg5OSwgNjY5MDMsIDY2OTA3LCA2NjkxMSwgNjY5MTUsIDY2OTE5LCA2NjkyMywgNjY5MjcsIDY2OTMxLCAKLSAgICA2NjkzNSwgNjY5MzksIDY2OTQzLCA2Njk0NywgNjY5NTEsIDY2OTU1LCA2Njk1OSwgNjY5NjMsIDY2OTY3LCA2Njk3MSwgCi0gICAgNjY5NzUsIDY2OTc5LCA2Njk4MywgNjY5ODcsIDY2OTkxLCA2Njk5NSwgNjY5OTksIDY3MDAzLCA2NzAwNywgNjcwMTEsIAotICAgIDY3MDE1LCA2NzAxOSwgNjcwMjMsIDY3MDI3LCA2NzAzMSwgNjcwMzUsIDY3MDM5LCA2NzA0MywgNjcwNDcsIDY3MDUxLCAKLSAgICA2NzA1NSwgNjcwNTksIDY3MDYzLCA2NzA2NywgNjcwNzEsIDY3MDc1LCA2NzA3OSwgNjcwODMsIDY3MDg3LCA2NzA5MSwgCi0gICAgNjcwOTUsIDY3MDk5LCA2NzEwMywgNjcxMDcsIDY3MTExLCA2NzExNSwgNjcxMTksIDY3MTIzLCA2NzEyNywgNjcxMzEsIAotICAgIDY3MTM1LCA2NzEzOSwgNjcxNDMsIDY3MTQ3LCA2NzE1MSwgNjcxNTUsIDY3MTU5LCA2NzE2MywgNjcxNjcsIDY3MTcxLCAKLSAgICA2NzE3NSwgNjcxNzksIDY3MTgzLCA2NzE4NywgNjcxOTEsIDY3MTk1LCA2NzE5OSwgNjcyMDMsIDY3MjA3LCA2NzIxMSwgCi0gICAgNjcyMTUsIDY3MjE5LCA2NzIyMywgNjcyMjcsIDY3MjMwLCA2NzIzNCwgNjcyMzgsIDY3MjQyLCA2NzI0NiwgNjcyNTAsIAotICAgIDY3MjU0LCA2NzI1OCwgNjcyNjEsIDY3MjY1LCA2NzI2OSwgNjcyNzMsIDY3Mjc3LCA2NzI4MSwgNjcyODUsIDY3Mjg5LCAKLSAgICA2NzI5MywgNjcyOTcsIDY3MzAxLCA2NzMwNSwgNjczMDksIDY3MzEzLCA2NzMxNywgNjczMjEsIDY3MzI1LCA2NzMyOSwgCi0gICAgNjczMzMsIDY3MzM3LCA2NzM0MSwgNjczNDUsIDY3MzQ5LCA2NzM1MywgNjczNTcsIDY3MzYxLCA2NzM2NSwgNjczNjksIAotICAgIDY3MzczLCA2NzM3NywgNjczODEsIDY3Mzg1LCA2NzM4OSwgNjczOTMsIDY3Mzk3LCA2NzQwMSwgNjc0MDUsIDY3NDA5LCAKLSAgICA2NzQxMywgNjc0MTcsIDY3NDIxLCA2NzQyNSwgNjc0MjksIDY3NDMzLCA2NzQzNywgNjc0NDEsIDY3NDQ1LCA2NzQ0OSwgCi0gICAgNjc0NTMsIDY3NDU3LCA2NzQ2MSwgNjc0NjUsIDY3NDY5LCA2NzQ3MywgNjc0NzcsIDY3NDgxLCA2NzQ4NSwgNjc0ODksIAotICAgIDY3NDkzLCA2NzQ5NywgNjc1MDEsIDY3NTA1LCA2NzUwOSwgNjc1MTMsIDY3NTE3LCA2NzUyMSwgNjc1MjUsIDY3NTI5LCAKLSAgICA2NzUzMywgNjc1MzcsIDY3NTQxLCA2NzU0NSwgNjc1NDksIDY3NTUzLCA2NzU1NywgNjc1NjEsIDY3NTY1LCA2NzU2OSwgCi0gICAgNjc1NzMsIDY3NTc3LCA2NzU4MSwgNjc1ODUsIDY3NTg5LCA2NzU5MywgNjc1OTcsIDY3NjAxLCA2NzYwNSwgNjc2MDksIAotICAgIDY3NjEzLCA2NzYxNywgNjc2MjEsIDY3NjI1LCA2NzYyOSwgNjc2MzMsIDY3NjM3LCA2NzY0MSwgNjc2NDUsIDY3NjQ5LCAKLSAgICA2NzY1MywgNjc2NTcsIDY3NjYxLCA2NzY2NSwgNjc2NjksIDY3NjczLCA2NzY3NywgNjc2ODEsIDY3Njg1LCA2NzY4OSwgCi0gICAgNjc2OTMsIDY3Njk3LCA2NzcwMSwgNjc3MDUsIDY3NzA5LCA2NzcxMywgNjc3MTcsIDY3NzIxLCA2NzcyNSwgNjc3MjksIAotICAgIDY3NzMzLCA2NzczNywgNjc3NDEsIDY3NzQ1LCA2Nzc0OSwgNjc3NTMsIDY3NzU3LCA2Nzc2MSwgNjc3NjUsIDY3NzY5LCAKLSAgICA2Nzc3MywgNjc3NzcsIDY3NzgxLCA2Nzc4NSwgNjc3ODksIDY3NzkzLCA2Nzc5NywgNjc4MDEsIDY3ODA1LCA2NzgwOSwgCi0gICAgNjc4MTMsIDY3ODE3LCA2NzgyMSwgNjc4MjUsIDY3ODI5LCA2NzgzMywgNjc4MzcsIDY3ODQxLCA2Nzg0NSwgNjc4NDksIAotICAgIDY3ODUzLCA2Nzg1NywgNjc4NjEsIDY3ODY1LCA2Nzg2OSwgNjc4NzMsIDY3ODc3LCA2Nzg4MSwgNjc4ODUsIDY3ODg5LCAKLSAgICA2Nzg5MywgNjc4OTcsIDY3OTAxLCA2NzkwNSwgNjc5MDksIDY3OTEzLCA2NzkxNywgNjc5MjEsIDY3OTI1LCA2NzkyOSwgCi0gICAgNjc5MzMsIDY3OTM3LCA2Nzk0MSwgNjc5NDUsIDY3OTQ5LCA2Nzk1MywgNjc5NTcsIDY3OTYxLCA2Nzk2NSwgNjc5NjksIAotICAgIDY3OTczLCA2Nzk3NywgNjc5ODEsIDY3OTg1LCA2Nzk4OCwgNjc5OTIsIDY3OTk2LCA2ODAwMCwgNjgwMDQsIDY4MDA4LCAKLSAgICA2ODAxMiwgNjgwMTYsIDY4MDIwLCA2ODAyNCwgNjgwMjgsIDY4MDMyLCA2ODAzNiwgNjgwNDAsIDY4MDQ0LCA2ODA0OCwgCi0gICAgNjgwNTIsIDY4MDU2LCA2ODA2MCwgNjgwNjQsIDY4MDY4LCA2ODA3MiwgNjgwNzYsIDY4MDgwLCA2ODA4NCwgNjgwODgsIAotICAgIDY4MDkyLCA2ODA5NiwgNjgxMDAsIDY4MTA0LCA2ODEwOCwgNjgxMTIsIDY4MTE2LCA2ODEyMCwgNjgxMjQsIDY4MTI4LCAKLSAgICA2ODEzMiwgNjgxMzYsIDY4MTQwLCA2ODE0NCwgNjgxNDgsIDY4MTUyLCA2ODE1NiwgNjgxNjAsIDY4MTY0LCA2ODE2OCwgCi0gICAgNjgxNzIsIDY4MTc2LCA2ODE4MCwgNjgxODQsIDY4MTg4LCA2ODE5MiwgNjgxOTYsIDY4MjAwLCA2ODIwNCwgNjgyMDgsIAotICAgIDY4MjEyLCA2ODIxNiwgNjgyMjAsIDY4MjI0LCA2ODIyOCwgNjgyMzIsIDY4MjM2LCA2ODI0MCwgNjgyNDQsIDY4MjQ4LCAKLSAgICA2ODI1MiwgNjgyNTYsIDY4MjYwLCA2ODI2NCwgNjgyNjgsIDY4MjcyLCA2ODI3NiwgNjgyODAsIDY4Mjg0LCA2ODI4OCwgCi0gICAgNjgyOTIsIDY4Mjk2LCA2ODMwMCwgNjgzMDQsIDY4MzA4LCA2ODMxMiwgNjgzMTYsIDY4MzIwLCA2ODMyNCwgNjgzMjgsIAotICAgIDY4MzMyLCA2ODMzNiwgNjgzNDAsIDY4MzQ0LCA2ODM0OCwgNjgzNTIsIDY4MzU2LCA2ODM2MCwgNjgzNjQsIDY4MzY4LCAKLSAgICA2ODM3MiwgNjgzNzYsIDY4MzgwLCA2ODM4NCwgNjgzODgsIDY4MzkyLCA2ODM5NiwgNjg0MDAsIDY4NDA0LCA2ODQwOCwgCi0gICAgNjg0MTIsIDY4NDE2LCA2ODQyMCwgNjg0MjQsIDY4NDI4LCA2ODQzMiwgNjg0MzYsIDY4NDQwLCA2ODQ0NCwgNjg0NDgsIAotICAgIDY4NDUyLCA2ODQ1NiwgNjg0NjAsIDY4NDY0LCA2ODQ2OCwgNjg0NzIsIDY4NDc2LCA2ODQ4MCwgNjg0ODQsIDY4NDg4LCAKLSAgICA2ODQ5MiwgNjg0OTYsIDY4NTAwLCA2ODUwNCwgNjg1MDgsIDY4NTEyLCA2ODUxNiwgNjg1MjAsIDY4NTI0LCA2ODUyOCwgCi0gICAgNjg1MzIsIDY4NTM2LCA2ODU0MCwgNjg1NDQsIDY4NTQ4LCA2ODU1MiwgNjg1NTYsIDY4NTYwLCA2ODU2NCwgNjg1NjgsIAotICAgIDY4NTcyLCA2ODU3NiwgNjg1ODAsIDY4NTg0LCA2ODU4OCwgNjg1OTIsIDY4NTk2LCA2ODYwMCwgNjg2MDQsIDY4NjA4LCAKLSAgICA2ODYxMiwgNjg2MTYsIDY4NjIwLCA2ODYyNCwgNjg2MjgsIDY4NjMyLCA2ODYzNiwgNjg2NDAsIDY4NjQ0LCA2ODY0OCwgCi0gICAgNjg2NTIsIDY4NjU2LCA2ODY2MCwgNjg2NjQsIDY4NjY4LCA2ODY3MiwgNjg2NzYsIDY4NjgwLCA2ODY4NCwgNjg2ODgsIAotICAgIDY4NjkyLCA2ODY5NiwgNjg3MDAsIDY4NzA0LCA2ODcwOCwgNjg3MTIsIDY4NzE2LCA2ODcyMCwgNjg3MjQsIDY4NzI4LCAKLSAgICA2ODczMiwgNjg3MzYsIDY4NzQwLCA2ODc0NCwgNjg3NDgsIDY4NzUyLCA2ODc1NiwgNjg3NjAsIDY4NzY0LCA2ODc2OCwgMCwgCi0gICAgMCwgMCwgNjg3NzIsIDY4Nzc2LCA2ODc4MCwgNjg3ODQsIDY4Nzg4LCA2ODc5MiwgNjg3OTYsIDY4ODAwLCA2ODgwNCwgCi0gICAgNjg4MDgsIDY4ODEyLCA2ODgxNiwgNjg4MjAsIDY4ODI0LCA2ODgyOCwgNjg4MzIsIDY4ODM2LCA2ODg0MCwgNjg4NDQsIAotICAgIDY4ODQ4LCA2ODg1MiwgNjg4NTYsIDY4ODYwLCA2ODg2NCwgNjg4NjgsIDY4ODcyLCA2ODg3NiwgNjg4ODAsIDY4ODg0LCAKLSAgICA2ODg4OCwgNjg4OTIsIDY4ODk2LCA2ODkwMCwgNjg5MDQsIDY4OTA4LCA2ODkxMiwgNjg5MTYsIDY4OTIwLCA2ODkyNCwgCi0gICAgNjg5MjgsIDY4OTMyLCA2ODkzNiwgNjg5NDAsIDY4OTQ0LCA2ODk0OCwgNjg5NTIsIDY4OTU2LCA2ODk2MCwgNjg5NjQsIAotICAgIDY4OTY4LCA2ODk3MiwgNjg5NzYsIDY4OTgwLCA2ODk4NCwgNjg5ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY4OTkyLCA2ODk5NywgNjkwMDEsIDY5MDA2LCA2OTAxMSwgNjkwMTYsIDY5MDIxLCA2OTAyNiwgNjkwMzAsIDY5MDM1LCAKLSAgICA2OTA0MCwgNjkwNDUsIDY5MDUwLCA2OTA1NSwgNjkwNjAsIDY5MDY1LCA2OTA2OSwgNjkwNzMsIDY5MDc4LCA2OTA4MiwgCi0gICAgNjkwODcsIDY5MDkyLCA2OTA5NywgNjkxMDEsIDY5MTA2LCA2OTExMSwgNjkxMTYsIDY5MTIxLCA2OTEyNiwgNjkxMzAsIAotICAgIDY5MTM1LCA2OTEzOSwgNjkxNDQsIDY5MTQ4LCA2OTE1MywgNjkxNTcsIDY5MTYxLCA2OTE2NSwgNjkxNzAsIDY5MTc1LCAKLSAgICA2OTE4MCwgNjkxODgsIDY5MTk2LCA2OTIwNCwgNjkyMTIsIDY5MjE5LCA2OTIyNywgNjkyMzMsIDY5MjQxLCA2OTI0NSwgCi0gICAgNjkyNDksIDY5MjUzLCA2OTI1NywgNjkyNjEsIDY5MjY1LCA2OTI2OSwgNjkyNzMsIDY5Mjc3LCA2OTI4MSwgNjkyODUsIAotICAgIDY5Mjg5LCA2OTI5MywgNjkyOTcsIDY5MzAxLCA2OTMwNSwgNjkzMDksIDY5MzEzLCA2OTMxNywgNjkzMjEsIDY5MzI1LCAKLSAgICA2OTMyOSwgNjkzMzMsIDY5MzM3LCA2OTM0MSwgNjkzNDUsIDY5MzQ5LCA2OTM1MywgNjkzNTcsIDY5MzYxLCA2OTM2NSwgCi0gICAgNjkzNjksIDY5MzczLCA2OTM3NywgNjkzODEsIDY5Mzg1LCA2OTM4OCwgNjkzOTIsIDY5Mzk2LCA2OTQwMCwgNjk0MDQsIAotICAgIDY5NDA4LCA2OTQxMiwgNjk0MTYsIDY5NDIwLCA2OTQyNCwgNjk0MjgsIDY5NDMyLCA2OTQzNiwgNjk0NDAsIDY5NDQ0LCAKLSAgICA2OTQ0OCwgNjk0NTIsIDY5NDU2LCA2OTQ2MCwgNjk0NjQsIDY5NDY4LCA2OTQ3MiwgNjk0NzYsIDY5NDgwLCA2OTQ4NCwgCi0gICAgNjk0ODgsIDY5NDkyLCA2OTQ5NiwgNjk1MDAsIDY5NTA0LCA2OTUwOCwgNjk1MTIsIDY5NTE2LCA2OTUyMCwgNjk1MjQsIAotICAgIDY5NTI4LCA2OTUzMiwgNjk1MzUsIDY5NTM5LCA2OTU0MywgNjk1NDYsIDY5NTUwLCA2OTU1NCwgNjk1NTgsIDY5NTYxLCAKLSAgICA2OTU2NSwgNjk1NjksIDY5NTczLCA2OTU3NywgNjk1ODEsIDY5NTg1LCA2OTU4OSwgNjk1OTMsIDY5NTk3LCA2OTYwMSwgCi0gICAgNjk2MDUsIDY5NjA5LCA2OTYxMywgNjk2MTcsIDY5NjIwLCA2OTYyNCwgNjk2MjgsIDY5NjMxLCA2OTYzNSwgNjk2MzksIAotICAgIDY5NjQzLCA2OTY0NywgNjk2NTEsIDY5NjU1LCA2OTY1OCwgNjk2NjEsIDY5NjY1LCA2OTY2OSwgNjk2NzMsIDY5Njc2LCAKLSAgICA2OTY3OSwgNjk2ODMsIDY5Njg3LCA2OTY5MSwgNjk2OTUsIDY5Njk5LCA2OTcwMywgNjk3MDcsIDY5NzExLCA2OTcxNSwgCi0gICAgNjk3MTksIDY5NzIzLCA2OTcyNywgNjk3MzEsIDY5NzM1LCA2OTczOSwgNjk3NDMsIDY5NzQ3LCA2OTc1MSwgNjk3NTUsIAotICAgIDY5NzU5LCA2OTc2MywgNjk3NjcsIDY5NzcxLCA2OTc3NSwgNjk3NzksIDY5NzgzLCA2OTc4NywgNjk3OTEsIDY5Nzk1LCAKLSAgICA2OTc5OSwgNjk4MDMsIDY5ODA3LCA2OTgxMSwgNjk4MTUsIDY5ODE5LCA2OTgyMywgNjk4MjcsIDY5ODMwLCA2OTgzNCwgCi0gICAgNjk4MzgsIDY5ODQyLCA2OTg0NiwgNjk4NTAsIDY5ODU0LCA2OTg1OCwgNjk4NjIsIDY5ODY2LCA2OTg3MCwgNjk4NzQsIAotICAgIDY5ODc4LCA2OTg4MiwgNjk4ODYsIDY5ODkwLCA2OTg5NCwgNjk4OTgsIDY5OTAyLCA2OTkwNiwgNjk5MTAsIDY5OTE0LCAKLSAgICA2OTkxOCwgNjk5MjIsIDY5OTI2LCA2OTkzMCwgNjk5MzQsIDY5OTM4LCA2OTk0MiwgNjk5NDYsIDY5OTUwLCA2OTk1NCwgCi0gICAgNjk5NTgsIDY5OTYyLCA2OTk2NiwgNjk5NzAsIDY5OTc0LCA2OTk3NywgNjk5ODEsIDY5OTg1LCA2OTk4OSwgNjk5OTMsIAotICAgIDY5OTk3LCA3MDAwMSwgNzAwMDUsIDcwMDA5LCA3MDAxMywgNzAwMTcsIDcwMDIxLCA3MDAyNSwgNzAwMjksIDcwMDMzLCAKLSAgICA3MDAzNywgNzAwNDEsIDcwMDQ0LCA3MDA0OCwgNzAwNTIsIDcwMDU2LCA3MDA2MCwgNzAwNjQsIDcwMDY4LCA3MDA3MiwgCi0gICAgNzAwNzYsIDcwMDgwLCA3MDA4NCwgNzAwODgsIDcwMDkyLCA3MDA5NiwgNzAxMDAsIDcwMTA0LCA3MDEwOCwgNzAxMTIsIAotICAgIDcwMTE2LCA3MDEyMCwgNzAxMjQsIDcwMTI4LCA3MDEzMSwgNzAxMzUsIDcwMTM5LCA3MDE0MywgNzAxNDcsIDcwMTUxLCAKLSAgICA3MDE1NSwgNzAxNTksIDcwMTYzLCA3MDE2NywgNzAxNzEsIDcwMTc1LCA3MDE3OSwgNzAxODMsIDcwMTg3LCA3MDE5MSwgCi0gICAgNzAxOTUsIDcwMTk5LCA3MDIwMywgNzAyMDcsIDcwMjExLCA3MDIxNSwgNzAyMTksIDcwMjIzLCA3MDIyNywgNzAyMzEsIAotICAgIDcwMjM1LCA3MDIzOSwgNzAyNDMsIDcwMjQ3LCA3MDI1MSwgNzAyNTUsIDcwMjU5LCA3MDI2MywgNzAyNjcsIDcwMjcxLCAKLSAgICA3MDI3NSwgNzAyNzksIDcwMjgzLCA3MDI4NywgNzAyOTEsIDcwMjk1LCA3MDI5OSwgNzAzMDMsIDcwMzA2LCA3MDMxMSwgCi0gICAgNzAzMTUsIDcwMzIxLCA3MDMyNiwgNzAzMzIsIDcwMzM2LCA3MDM0MCwgNzAzNDQsIDcwMzQ4LCA3MDM1MiwgNzAzNTYsIAotICAgIDcwMzYwLCA3MDM2NCwgNzAzNjgsIDcwMzcyLCA3MDM3NiwgNzAzODAsIDcwMzg0LCA3MDM4OCwgNzAzOTEsIDcwMzk0LCAKLSAgICA3MDM5NywgNzA0MDAsIDcwNDAzLCA3MDQwNiwgNzA0MDksIDcwNDEyLCA3MDQxNSwgNzA0MjAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcwNDI2LCA3MDQzMSwgNzA0MzYsIDcwNDQxLCAKLSAgICA3MDQ0NiwgNzA0NTMsIDcwNDYwLCA3MDQ2NSwgNzA0NzAsIDcwNDc1LCA3MDQ4MCwgNzA0ODcsIDcwNDk0LCA3MDUwMSwgCi0gICAgNzA1MDgsIDcwNTE1LCA3MDUyMiwgNzA1MzIsIDcwNTQyLCA3MDU0OSwgNzA1NTYsIDcwNTYzLCA3MDU3MCwgNzA1NzYsIAotICAgIDcwNTgyLCA3MDU5MSwgNzA2MDAsIDcwNjA3LCA3MDYxNCwgNzA2MjUsIDcwNjM2LCA3MDY0MSwgNzA2NDYsIDcwNjUzLCAKLSAgICA3MDY2MCwgNzA2NjcsIDcwNjc0LCA3MDY4MSwgNzA2ODgsIDcwNjk1LCA3MDcwMiwgNzA3MDgsIDcwNzE0LCA3MDcyMCwgCi0gICAgNzA3MjYsIDcwNzMzLCA3MDc0MCwgNzA3NDUsIDcwNzQ5LCA3MDc1NiwgNzA3NjMsIDcwNzcwLCA3MDc3NCwgNzA3ODEsIAotICAgIDcwNzg1LCA3MDc5MCwgNzA3OTQsIDcwODAwLCA3MDgwNSwgNzA4MTEsIDcwODE2LCA3MDgyMCwgNzA4MjQsIDcwODI3LCAKLSAgICA3MDgzMCwgNzA4MzUsIDcwODQwLCA3MDg0NSwgNzA4NTAsIDcwODU1LCA3MDg2MCwgNzA4NjUsIDcwODcwLCA3MDg3NSwgCi0gICAgNzA4ODAsIDcwODg5LCA3MDg5OCwgNzA5MDMsIDcwOTA4LCA3MDkxMywgNzA5MTgsIDcwOTIzLCA3MDkyOCwgNzA5MzMsIAotICAgIDcwOTM4LCA3MDk0MywgNzA5NDgsIDcwOTUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MDk1OCwgNzA5NjQsIDcwOTY3LCAKLSAgICA3MDk3MCwgNzA5NzMsIDcwOTc3LCA3MDk4MSwgNzA5ODUsIDcwOTg5LCA3MDk5MiwgNzA5OTYsIDcwOTk5LCA3MTAwMywgCi0gICAgNzEwMDYsIDcxMDEwLCA3MTAxNCwgNzEwMTgsIDcxMDIyLCA3MTAyNiwgNzEwMzAsIDcxMDM0LCA3MTAzNywgNzEwNDEsIAotICAgIDcxMDQ1LCA3MTA0OSwgNzEwNTMsIDcxMDU3LCA3MTA2MSwgNzEwNjUsIDcxMDY5LCA3MTA3MywgNzEwNzcsIDcxMDgxLCAKLSAgICA3MTA4NSwgNzEwODksIDcxMDkzLCA3MTA5NiwgNzExMDAsIDcxMTA0LCA3MTEwOCwgNzExMTIsIDcxMTE2LCA3MTEyMCwgCi0gICAgNzExMjQsIDcxMTI4LCA3MTEzMiwgNzExMzYsIDcxMTQwLCA3MTE0NCwgNzExNDgsIDcxMTUyLCA3MTE1NiwgNzExNjAsIAotICAgIDcxMTY0LCA3MTE2OCwgNzExNzIsIDcxMTc2LCA3MTE4MCwgNzExODQsIDcxMTg4LCA3MTE5MiwgNzExOTUsIDcxMTk5LCAKLSAgICA3MTIwMywgNzEyMDcsIDcxMjExLCA3MTIxNSwgNzEyMTksIDcxMjIzLCA3MTIyNiwgNzEyMzAsIDcxMjM0LCA3MTIzOCwgCi0gICAgNzEyNDIsIDcxMjQ2LCA3MTI1MCwgNzEyNTQsIDcxMjU4LCA3MTI2MiwgNzEyNjYsIDcxMjcwLCA3MTI3NCwgNzEyNzksIAotICAgIDcxMjg0LCA3MTI4NywgNzEyOTIsIDcxMjk1LCA3MTI5OCwgNzEzMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcxMzA1LCAKLSAgICA3MTMxNCwgNzEzMjMsIDcxMzMyLCA3MTM0MSwgNzEzNTAsIDcxMzU5LCA3MTM2OCwgNzEzNzcsIDcxMzg1LCA3MTM5MiwgCi0gICAgNzE0MDAsIDcxNDA3LCA3MTQxNSwgNzE0MjUsIDcxNDM0LCA3MTQ0NCwgNzE0NTMsIDcxNDYzLCA3MTQ3MSwgNzE0NzgsIAotICAgIDcxNDg2LCA3MTQ5MywgNzE1MDEsIDcxNTA2LCA3MTUxMSwgNzE1MTYsIDcxNTI1LCA3MTUzMSwgNzE1MzcsIDcxNTQ0LCAKLSAgICA3MTU1MywgNzE1NjEsIDcxNTY5LCA3MTU3NywgNzE1ODQsIDcxNTkxLCA3MTU5OCwgNzE2MDUsIDcxNjEwLCA3MTYxNSwgCi0gICAgNzE2MjAsIDcxNjI1LCA3MTYzMCwgNzE2MzUsIDcxNjQwLCA3MTY0NSwgNzE2NTMsIDcxNjYxLCA3MTY2NywgNzE2NzMsIAotICAgIDcxNjc4LCA3MTY4MywgNzE2ODgsIDcxNjkzLCA3MTY5OCwgNzE3MDMsIDcxNzA4LCA3MTcxMywgNzE3MjEsIDcxNzI5LCAKLSAgICA3MTczNCwgNzE3MzksIDcxNzQ5LCA3MTc1OSwgNzE3NjYsIDcxNzczLCA3MTc4MiwgNzE3OTEsIDcxODAzLCA3MTgxNSwgCi0gICAgNzE4MjEsIDcxODI3LCA3MTgzNSwgNzE4NDMsIDcxODUzLCA3MTg2MywgNzE4NzAsIDcxODc3LCA3MTg4MiwgNzE4ODcsIAotICAgIDcxODk5LCA3MTkxMSwgNzE5MTksIDcxOTI3LCA3MTkzNywgNzE5NDcsIDcxOTU5LCA3MTk3MSwgNzE5ODAsIDcxOTg5LCAKLSAgICA3MTk5NiwgNzIwMDMsIDcyMDEwLCA3MjAxNywgNzIwMjYsIDcyMDM1LCA3MjA0MCwgNzIwNDUsIDcyMDUyLCA3MjA1OSwgCi0gICAgNzIwNjYsIDcyMDczLCA3MjA4NSwgNzIwOTcsIDcyMTAyLCA3MjEwNywgNzIxMTIsIDcyMTE3LCA3MjEyMiwgNzIxMjcsIAotICAgIDcyMTMyLCA3MjEzNywgNzIxNDEsIDcyMTQ2LCA3MjE1MSwgNzIxNTYsIDcyMTYxLCA3MjE2NiwgNzIxNzIsIDcyMTc3LCAKLSAgICA3MjE4MiwgNzIxODksIDcyMTk2LCA3MjIwMywgNzIyMTAsIDcyMjE3LCA3MjIyNiwgNzIyMzUsIDcyMjQxLCA3MjI0NywgCi0gICAgNzIyNTMsIDcyMjU5LCA3MjI2NiwgNzIyNzMsIDcyMjgwLCA3MjI4NywgNzIyOTQsIDcyMjk4LCA3MjMwNSwgNzIzMTAsIAotICAgIDcyMzE1LCA3MjMyMiwgMCwgNzIzMzUsIDcyMzQzLCA3MjM1MSwgNzIzNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcyMzY1LCA3MjM3NCwgNzIzODMsIDcyMzkyLCA3MjQwMSwgNzI0MTAsIDcyNDE5LCA3MjQyOCwgNzI0MzcsIAotICAgIDcyNDQ2LCA3MjQ1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzI0NjIsIDcyNDY5LCA3MjQ3NSwgNzI0ODIsIDcyNDkwLCA3MjQ5OCwgCi0gICAgNzI1MDUsIDcyNTEzLCA3MjUyMCwgNzI1MjYsIDcyNTMyLCA3MjUzOSwgNzI1NDUsIDcyNTUxLCA3MjU1NywgNzI1NjQsIAotICAgIDcyNTcxLCA3MjU3OCwgNzI1ODUsIDcyNTkyLCA3MjU5OSwgNzI2MDYsIDcyNjEzLCA3MjYyMCwgNzI2MjcsIDcyNjM0LCAKLSAgICA3MjY0MSwgNzI2NDgsIDcyNjU1LCA3MjY2MSwgNzI2NjgsIDcyNjc1LCA3MjY4MiwgNzI2ODksIDcyNjk2LCA3MjcwMywgCi0gICAgNzI3MTAsIDcyNzE3LCA3MjcyNCwgNzI3MzEsIDcyNzM4LCA3Mjc0NSwgNzI3NTIsIDcyNzU5LCA3Mjc2NiwgNzI3NzMsIAotICAgIDcyNzgwLCA3Mjc4NywgNzI3OTUsIDcyODAzLCA3MjgxMSwgNzI4MTksIDAsIDAsIDAsIDAsIDcyODI3LCA3MjgzNiwgCi0gICAgNzI4NDUsIDcyODU0LCA3Mjg2MywgNzI4NzIsIDcyODgxLCA3Mjg4OCwgNzI4OTUsIDcyOTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3MjkwOSwgNzI5MTMsIDcyOTE4LCA3MjkyMywgNzI5MjgsIDcyOTMzLCA3MjkzOCwgNzI5NDMsIDcyOTQ4LCA3Mjk1MywgCi0gICAgNzI5NTgsIDcyOTYzLCA3Mjk2NywgNzI5NzEsIDcyOTc2LCA3Mjk4MSwgNzI5ODUsIDcyOTkwLCA3Mjk5NSwgNzMwMDAsIAotICAgIDczMDA1LCA3MzAxMCwgNzMwMTUsIDczMDIwLCA3MzAyNCwgNzMwMjgsIDczMDMzLCA3MzAzOCwgNzMwNDIsIDczMDQ2LCAKLSAgICA3MzA1MCwgNzMwNTQsIDczMDU4LCA3MzA2MiwgNzMwNjYsIDczMDcxLCA3MzA3NiwgNzMwODEsIDczMDg2LCA3MzA5MSwgCi0gICAgNzMwOTgsIDczMTA0LCA3MzEwOSwgNzMxMTQsIDczMTE5LCA3MzEyNCwgNzMxMzAsIDczMTM3LCA3MzE0MywgNzMxNTAsIAotICAgIDczMTU2LCA3MzE2MiwgNzMxNjcsIDczMTc0LCA3MzE4MCwgNzMxODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDczMTkxLCAKLSAgICA3MzE5NSwgNzMxOTksIDczMjAyLCA3MzIwNiwgNzMyMDksIDczMjEzLCA3MzIxNiwgNzMyMjAsIDczMjI0LCA3MzIyOSwgCi0gICAgNzMyMzMsIDczMjM4LCA3MzI0MSwgNzMyNDUsIDczMjQ5LCA3MzI1MiwgNzMyNTYsIDczMjYwLCA3MzI2MywgNzMyNjcsIAotICAgIDczMjcxLCA3MzI3NSwgNzMyNzksIDczMjgzLCA3MzI4NywgNzMyOTEsIDczMjk1LCA3MzI5OSwgNzMzMDMsIDczMzA3LCAKLSAgICA3MzMxMSwgNzMzMTUsIDczMzE5LCA3MzMyMywgNzMzMjcsIDczMzMxLCA3MzMzNSwgNzMzMzgsIDczMzQxLCA3MzM0NSwgCi0gICAgNzMzNDksIDczMzUzLCA3MzM1NiwgNzMzNTksIDczMzYyLCA3MzM2NiwgNzMzNzAsIDczMzc0LCA3MzM3OCwgNzMzODEsIAotICAgIDczMzg0LCA3MzM4OCwgNzMzOTMsIDczMzk4LCA3MzQwMiwgNzM0MDcsIDczNDExLCA3MzQxNiwgNzM0MjEsIDczNDI3LCAKLSAgICA3MzQzMiwgNzM0MzgsIDczNDQyLCA3MzQ0NywgNzM0NTIsIDczNDU2LCA3MzQ2MSwgNzM0NjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDczNDcwLCA3MzQ3MywgNzM0NzcsIDczNDgxLCA3MzQ4NCwgNzM0ODcsIDczNDkwLCA3MzQ5MywgNzM0OTYsIAotICAgIDczNDk5LCA3MzUwMiwgNzM1MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDczNTA4LCA3MzUxMywgNzM1MTcsIDczNTIxLCA3MzUyNSwgCi0gICAgNzM1MjksIDczNTMzLCA3MzUzNywgNzM1NDEsIDczNTQ1LCA3MzU0OSwgNzM1NTMsIDczNTU3LCA3MzU2MSwgNzM1NjUsIAotICAgIDczNTY5LCA3MzU3MywgNzM1NzgsIDczNTgzLCA3MzU4OSwgNzM1OTUsIDczNjAyLCA3MzYwNywgNzM2MTIsIDczNjE4LCAKLSAgICA3MzYyMiwgNzM2MjcsIDczNjMwLCAwLCAwLCAwLCAwLCA3MzYzMywgNzM2NDAsIDczNjQ2LCA3MzY1MiwgNzM2NTgsIAotICAgIDczNjY0LCA3MzY3MCwgNzM2NzYsIDczNjgyLCA3MzY4OCwgNzM2OTQsIDczNzAwLCA3MzcwNywgNzM3MTQsIDczNzIxLCAKLSAgICA3MzcyNywgNzM3MzQsIDczNzQxLCA3Mzc0OCwgNzM3NTUsIDczNzYyLCA3Mzc2OCwgNzM3NzQsIDczNzgxLCA3Mzc4NywgCi0gICAgNzM3OTQsIDczODAxLCA3MzgwNywgNzM4MTMsIDczODIwLCA3MzgyNywgNzM4MzQsIDczODQwLCA3Mzg0NywgNzM4NTQsIAotICAgIDczODYwLCA3Mzg2NywgNzM4NzMsIDczODgwLCA3Mzg4NywgNzM4OTMsIDczODk5LCA3MzkwNiwgNzM5MTIsIDczOTE5LCAKLSAgICA3MzkyNiwgNzM5MzUsIDczOTQyLCA3Mzk0OSwgNzM5NTMsIDczOTU4LCA3Mzk2MywgNzM5NjgsIDczOTczLCA3Mzk3NywgCi0gICAgNzM5ODEsIDczOTg2LCA3Mzk5MCwgNzM5OTUsIDc0MDAwLCA3NDAwNSwgNzQwMDksIDc0MDEzLCA3NDAxOCwgNzQwMjIsIAotICAgIDc0MDI3LCA3NDAzMSwgNzQwMzYsIDc0MDQxLCA3NDA0NiwgNzQwNTEsIDc0MDU1LCA3NDA2MCwgNzQwNjUsIDc0MDcwLCAKLSAgICA3NDA3NiwgNzQwODEsIDc0MDg3LCA3NDA5MywgNzQwOTksIDc0MTA1LCA3NDExMSwgNzQxMTYsIDc0MTIyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDEyNiwgNzQxMzEsIDc0MTM1LCA3NDEzOSwgNzQxNDMsIDc0MTQ3LCA3NDE1MSwgCi0gICAgNzQxNTUsIDc0MTU5LCA3NDE2MywgNzQxNjcsIDc0MTcxLCA3NDE3NSwgNzQxNzksIDc0MTgzLCA3NDE4NywgNzQxOTEsIAotICAgIDc0MTk1LCA3NDE5OSwgNzQyMDMsIDc0MjA3LCA3NDIxMSwgNzQyMTUsIDc0MjE5LCA3NDIyMywgNzQyMjcsIDc0MjMxLCAKLSAgICA3NDIzNSwgNzQyMzksIDc0MjQzLCAwLCAwLCAwLCA3NDI0NywgNzQyNTEsIDc0MjU1LCA3NDI1OSwgNzQyNjMsIDc0MjY2LCAKLSAgICA3NDI3MiwgNzQyNzUsIDc0Mjc5LCA3NDI4MiwgNzQyODgsIDc0Mjk0LCA3NDMwMiwgNzQzMDUsIDc0MzA5LCA3NDMxMiwgCi0gICAgNzQzMTUsIDc0MzIxLCA3NDMyNywgNzQzMzEsIDc0MzM3LCA3NDM0MSwgNzQzNDUsIDc0MzUxLCA3NDM1NSwgNzQzNjEsIAotICAgIDc0MzY3LCA3NDM3MSwgNzQzNzUsIDc0MzgxLCA3NDM4NSwgNzQzOTEsIDc0Mzk3LCA3NDQwMSwgNzQ0MDcsIDc0NDExLCAKLSAgICA3NDQxNywgNzQ0MjAsIDc0NDIzLCA3NDQyOSwgNzQ0MzMsIDc0NDM5LCA3NDQ0MiwgNzQ0NDUsIDc0NDQ4LCA3NDQ1NCwgCi0gICAgNzQ0NTgsIDc0NDYyLCA3NDQ2OCwgNzQ0NzQsIDc0NDc3LCA3NDQ4MCwgNzQ0ODYsIDc0NDkxLCA3NDQ5NiwgNzQ1MDEsIAotICAgIDc0NTA4LCA3NDUxMywgNzQ1MjAsIDc0NTI1LCA3NDUzMiwgNzQ1MzcsIDc0NTQyLCA3NDU0NywgNzQ1NTIsIDc0NTU1LCAKLSAgICA3NDU1OSwgNzQ1NjMsIDc0NTY4LCA3NDU3MywgNzQ1NzgsIDc0NTgzLCA3NDU4OCwgNzQ1OTMsIDc0NTk4LCA3NDYwMywgCi0gICAgNzQ2MTAsIDc0NjE1LCAwLCA3NDYyMiwgNzQ2MjUsIDc0NjI5LCA3NDYzMiwgNzQ2MzUsIDc0NjM4LCA3NDY0MSwgNzQ2NDQsIAotICAgIDc0NjQ3LCA3NDY1MCwgNzQ2NTMsIDAsIDAsIDAsIDAsIDc0NjU2LCA3NDY2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNzQ2NjgsIDc0NjcxLCA3NDY3NCwgNzQ2NzcsIDc0NjgwLCA3NDY4NCwgNzQ2ODcsIDc0NjkwLCA3NDY5NCwgNzQ2OTgsIAotICAgIDc0NzAyLCA3NDcwNiwgNzQ3MTAsIDc0NzE0LCA3NDcxOCwgNzQ3MjIsIDc0NzI2LCA3NDczMCwgNzQ3MzQsIDc0NzM4LCAKLSAgICA3NDc0MiwgNzQ3NDYsIDc0NzUwLCA3NDc1NCwgNzQ3NTgsIDc0NzYxLCA3NDc2NSwgNzQ3NjgsIDc0NzcyLCA3NDc3NiwgCi0gICAgNzQ3ODAsIDc0Nzg0LCA3NDc4OCwgNzQ3OTEsIDc0Nzk1LCA3NDc5OCwgNzQ4MDEsIDc0ODA1LCA3NDgwOSwgNzQ4MTMsIAotICAgIDc0ODE2LCA3NDgxOSwgNzQ4MjQsIDc0ODI4LCA3NDgzMywgNzQ4MzgsIDc0ODQyLCA3NDg0NywgNzQ4NTEsIDc0ODU2LCAKLSAgICA3NDg2MSwgNzQ4NjYsIDc0ODcwLCA3NDg3NCwgNzQ4NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0ODg0LCAKLSAgICA3NDg4OSwgNzQ4OTQsIDc0ODk5LCA3NDkwNSwgNzQ5MTAsIDc0OTE1LCA3NDkyMCwgNzQ5MjUsIDc0OTMwLCA3NDkzNCwgCi0gICAgNzQ5MzgsIDc0OTQzLCA3NDk0OCwgMCwgMCwgNzQ5NTQsIDc0OTU4LCA3NDk2MSwgNzQ5NjQsIDc0OTY3LCA3NDk3MCwgCi0gICAgNzQ5NzMsIDc0OTc2LCA3NDk3OSwgNzQ5ODIsIDAsIDAsIDc0OTg1LCA3NDk5MCwgNzQ5OTUsIDc1MDAxLCA3NTAwOCwgCi0gICAgNzUwMTQsIDc1MDIwLCA3NTAyNiwgNzUwMzIsIDc1MDM4LCA3NTA0NCwgNzUwNTAsIDc1MDU2LCA3NTA2MiwgNzUwNjgsIAotICAgIDc1MDc0LCA3NTA3OSwgNzUwODQsIDc1MDg5LCA3NTA5NSwgNzUxMDEsIDc1MTA4LCA3NTExNCwgNzUxMjAsIDc1MTI1LCAKLSAgICA3NTEzMiwgNzUxMzksIDc1MTQ2LCA3NTE1MiwgNzUxNTcsIDc1MTYyLCA3NTE2NywgMCwgMCwgMCwgMCwgNzUxNzUsIAotICAgIDc1MTgxLCA3NTE4NywgNzUxOTMsIDc1MTk5LCA3NTIwNSwgNzUyMTEsIDc1MjE3LCA3NTIyMywgNzUyMjksIDc1MjM1LCAKLSAgICA3NTI0MSwgNzUyNDcsIDc1MjUzLCA3NTI1OSwgNzUyNjUsIDc1MjcxLCA3NTI3NywgNzUyODMsIDc1Mjg5LCA3NTI5NSwgCi0gICAgNzUzMDAsIDc1MzA1LCA3NTMxMSwgNzUzMTcsIDc1MzIzLCA3NTMyOSwgNzUzMzUsIDc1MzQxLCA3NTM0NywgNzUzNTMsIAotICAgIDc1MzU5LCA3NTM2NSwgNzUzNzEsIDc1Mzc3LCA3NTM4MywgNzUzODksIDc1Mzk1LCA3NTQwMSwgNzU0MDcsIDc1NDEzLCAKLSAgICA3NTQxOSwgNzU0MjUsIDc1NDMxLCA3NTQzNywgNzU0NDMsIDc1NDQ5LCA3NTQ1NCwgNzU0NTksIDc1NDY1LCA3NTQ3MCwgCi0gICAgNzU0NzQsIDc1NDc5LCA3NTQ4MywgNzU0ODcsIDc1NDkxLCA3NTQ5NywgNzU1MDIsIDc1NTA3LCA3NTUxMiwgNzU1MTcsIAotICAgIDc1NTIyLCA3NTUyNywgNzU1MzIsIDc1NTM5LCA3NTU0NiwgNzU1NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1NTYwLCA3NTU2NSwgNzU1NzAsIDc1NTc1LCAKLSAgICA3NTU4MiwgNzU1ODksIDc1NTkzLCA3NTU5NywgNzU2MDIsIDc1NjA3LCA3NTYxMiwgNzU2MTcsIDc1NjIyLCA3NTYyNywgCi0gICAgNzU2MzIsIDc1NjM3LCA3NTY0MiwgNzU2NDgsIDc1NjU0LCA3NTY2MCwgNzU2NjYsIDc1NjcyLCA3NTY3NiwgNzU2ODIsIAotICAgIDc1Njg2LCA3NTY5MiwgNzU2OTksIDc1NzA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NTcwOSwgNzU3MTMsIAotICAgIDc1NzE3LCA3NTcyMSwgNzU3MjUsIDc1NzI5LCAwLCAwLCA3NTczMywgNzU3MzcsIDc1NzQxLCA3NTc0NSwgNzU3NDksIAotICAgIDc1NzUzLCAwLCAwLCA3NTc1NywgNzU3NjEsIDc1NzY1LCA3NTc2OSwgNzU3NzMsIDc1Nzc3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3NTc4MSwgNzU3ODUsIDc1Nzg5LCA3NTc5MywgNzU3OTcsIDc1ODAxLCA3NTgwNSwgMCwgNzU4MDksIAotICAgIDc1ODEzLCA3NTgxNywgNzU4MjEsIDc1ODI1LCA3NTgyOSwgNzU4MzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkyOTY2LCA5Mjk3MywgOTI5ODIsIDkyOTkxLCA5Mjk5OCwgCisgICAgOTMwMDUsIDkzMDEyLCA5MzAxOSwgOTMwMjYsIDkzMDMzLCA5MzAzOSwgOTMwNDYsIDkzMDUzLCA5MzA2MCwgOTMwNjcsIAorICAgIDkzMDc0LCA5MzA4MSwgOTMwODgsIDkzMDk1LCA5MzEwNCwgOTMxMTEsIDkzMTE4LCA5MzEyNSwgOTMxMzIsIDkzMTM5LCAKKyAgICA5MzE0NiwgOTMxNTMsIDkzMTYwLCA5MzE2OSwgOTMxNzYsIDkzMTgzLCA5MzE5MCwgOTMxOTcsIDkzMjA0LCA5MzIxMSwgCisgICAgOTMyMjAsIDkzMjI3LCA5MzIzNCwgOTMyNDEsIDkzMjQ4LCA5MzI1NywgOTMyNjQsIDkzMjcxLCA5MzI3OCwgOTMyODYsIAorICAgIDkzMjk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MzMwNCwgOTMzMDgsIDkzMzEyLCA5MzMxNywgOTMzMjIsIAorICAgIDkzMzI3LCA5MzMzMiwgOTMzMzYsIDkzMzQxLCA5MzM0NiwgOTMzNTEsIDkzMzU2LCA5MzM2MSwgOTMzNjYsIDkzMzcwLCAKKyAgICA5MzM3NSwgOTMzODAsIDkzMzg1LCA5MzM5MCwgOTMzOTQsIDkzMzk5LCA5MzQwNCwgOTM0MDgsIDkzNDEyLCA5MzQxNywgCisgICAgOTM0MjIsIDkzNDI3LCA5MzQzMiwgOTM0MzcsIDAsIDAsIDAsIDkzNDQyLCA5MzQ0NiwgOTM0NTEsIDkzNDU2LCA5MzQ2MCwgCisgICAgOTM0NjUsIDkzNDY5LCA5MzQ3NCwgOTM0NzksIDkzNDg0LCA5MzQ4OSwgOTM0OTQsIDkzNDk4LCA5MzUwMywgOTM1MDgsIAorICAgIDkzNTEzLCA5MzUxOCwgOTM1MjIsIDkzNTI3LCA5MzUzMSwgOTM1MzYsIDkzNTQxLCA5MzU0NiwgOTM1NTEsIDkzNTU2LCAKKyAgICA5MzU2MSwgOTM1NjUsIDkzNTY5LCA5MzU3NCwgOTM1NzksIDkzNTg0LCA5MzU4OSwgOTM1OTQsIDkzNTk5LCA5MzYwNCwgCisgICAgOTM2MDksIDkzNjE0LCA5MzYxOSwgOTM2MjQsIDkzNjI5LCA5MzYzNCwgOTM2MzksIDkzNjQ0LCA5MzY0OSwgOTM2NTQsIAorICAgIDkzNjU5LCA5MzY2NCwgOTM2NjksIDkzNjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5MzY3OSwgOTM2ODUsIDkzNjkwLCA5MzY5NSwgOTM3MDAsIDkzNzA1LCA5MzcxMCwgOTM3MTUsIDkzNzIxLCA5MzcyNiwgCisgICAgOTM3MzIsIDkzNzM4LCA5Mzc0NCwgOTM3NTAsIDkzNzU2LCA5Mzc2MiwgOTM3NjgsIDkzNzc0LCA5Mzc4MCwgOTM3ODYsIAorICAgIDkzNzkzLCA5MzgwMCwgOTM4MDcsIDkzODE1LCA5MzgyMywgOTM4MzEsIDkzODM5LCA5Mzg0NywgMCwgMCwgMCwgMCwgCisgICAgOTM4NTUsIDkzODU5LCA5Mzg2NCwgOTM4NjksIDkzODc0LCA5Mzg3OCwgOTM4ODMsIDkzODg4LCA5Mzg5MywgOTM4OTgsIAorICAgIDkzOTAyLCA5MzkwNiwgOTM5MTEsIDkzOTE2LCA5MzkyMSwgOTM5MjYsIDkzOTMwLCA5MzkzNSwgOTM5NDAsIDkzOTQ1LCAKKyAgICA5Mzk1MCwgOTM5NTUsIDkzOTYwLCA5Mzk2NCwgOTM5NjksIDkzOTc0LCA5Mzk3OSwgOTM5ODQsIDkzOTg5LCA5Mzk5NCwgCisgICAgOTM5OTksIDk0MDA0LCA5NDAwOSwgOTQwMTQsIDk0MDE5LCA5NDAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOTQwMzEsIDk0MDM2LCA5NDA0MSwgOTQwNDYsIDk0MDUxLCA5NDA1NiwgOTQwNjEsIDk0MDY2LCA5NDA3MSwgCisgICAgOTQwNzYsIDk0MDgxLCA5NDA4NiwgOTQwOTEsIDk0MDk2LCA5NDEwMSwgOTQxMDYsIDk0MTExLCA5NDExNiwgOTQxMjEsIAorICAgIDk0MTI2LCA5NDEzMSwgOTQxMzYsIDk0MTQxLCA5NDE0NiwgOTQxNTEsIDk0MTU2LCA5NDE2MSwgMCwgMCwgMCwgMCwgMCwgCisgICAgOTQxNjgsIDk0MTc0LCA5NDE4MCwgOTQxODYsIDk0MTkyLCA5NDE5NywgOTQyMDMsIDk0MjA5LCA5NDIxNSwgOTQyMjEsIAorICAgIDk0MjI2LCA5NDIzMiwgOTQyMzgsIDk0MjQ0LCA5NDI1MCwgOTQyNTYsIDk0MjYyLCA5NDI2OCwgOTQyNzQsIDk0MjgwLCAKKyAgICA5NDI4NSwgOTQyOTEsIDk0Mjk3LCA5NDMwMywgOTQzMDksIDk0MzE1LCA5NDMyMCwgOTQzMjYsIDk0MzMyLCA5NDMzNywgCisgICAgOTQzNDMsIDk0MzQ5LCA5NDM1NSwgOTQzNjEsIDk0MzY3LCA5NDM3MywgOTQzNzksIDk0Mzg0LCA5NDM5MCwgOTQzOTcsIAorICAgIDk0NDA0LCA5NDQxMSwgOTQ0MTgsIDAsIDAsIDAsIDAsIDAsIDk0NDI1LCA5NDQzMCwgOTQ0MzUsIDk0NDQwLCA5NDQ0NSwgCisgICAgOTQ0NTAsIDk0NDU1LCA5NDQ2MCwgOTQ0NjUsIDk0NDcwLCA5NDQ3NSwgOTQ0ODAsIDk0NDg1LCA5NDQ5MCwgOTQ0OTUsIAorICAgIDk0NTAwLCA5NDUwNSwgOTQ1MTAsIDk0NTE1LCA5NDUyMCwgOTQ1MjUsIDk0NTMwLCA5NDUzNSwgOTQ1NDAsIDk0NTQ1LCAKKyAgICA5NDU1MCwgOTQ1NTUsIDk0NTU5LCA5NDU2MywgOTQ1NjcsIDAsIDk0NTcyLCA5NDU3OCwgOTQ1ODMsIDk0NTg4LCA5NDU5MywgCisgICAgOTQ1OTgsIDk0NjA0LCA5NDYxMCwgOTQ2MTYsIDk0NjIyLCA5NDYyOCwgOTQ2MzQsIDk0NjQwLCA5NDY0NiwgOTQ2NTIsIAorICAgIDk0NjU4LCA5NDY2NCwgOTQ2NzAsIDk0Njc2LCA5NDY4MSwgOTQ2ODcsIDk0NjkzLCA5NDY5OSwgOTQ3MDUsIDk0NzEwLCAKKyAgICA5NDcxNiwgOTQ3MjIsIDk0NzI3LCA5NDczMywgOTQ3MzksIDk0NzQ1LCA5NDc1MSwgOTQ3NTcsIDk0NzYzLCA5NDc2OSwgCisgICAgOTQ3NzUsIDk0NzgxLCAwLCAwLCAwLCAwLCA5NDc4NiwgOTQ3OTIsIDk0Nzk4LCA5NDgwNCwgOTQ4MTAsIDk0ODE2LCAKKyAgICA5NDgyMiwgOTQ4MjgsIDk0ODM0LCA5NDg0MSwgOTQ4NDYsIDk0ODUxLCA5NDg1NywgOTQ4NjMsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1ODM3LCA3NTg0MiwgNzU4NDcsIDc1ODUyLCAKLSAgICA3NTg1NywgNzU4NjEsIDc1ODY1LCA3NTg3MCwgNzU4NzUsIDc1ODgwLCA3NTg4NSwgNzU4OTAsIDc1ODk1LCA3NTkwMCwgCi0gICAgNzU5MDUsIDc1OTEwLCA3NTkxNCwgNzU5MTksIDc1OTI0LCA3NTkyOSwgNzU5MzQsIDc1OTM5LCA3NTk0NCwgNzU5NDksIAotICAgIDc1OTU0LCA3NTk1OSwgNzU5NjQsIDc1OTY5LCA3NTk3NiwgNzU5ODMsIDc1OTkwLCA3NTk5NywgNzYwMDQsIDc2MDExLCAKLSAgICA3NjAxOCwgNzYwMjUsIDc2MDMxLCA3NjAzNywgNzYwNDMsIDc2MDQ5LCA3NjA1NSwgNzYwNjEsIDc2MDY3LCA3NjA3MywgCi0gICAgNzYwNzcsIDc2MDgzLCAwLCAwLCA3NjA4OSwgNzYwOTQsIDc2MDk4LCA3NjEwMiwgNzYxMDYsIDc2MTEwLCA3NjExNCwgCi0gICAgNzYxMTgsIDc2MTIyLCA3NjEyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTQ4NjksIDk0ODc1LCA5NDg4MSwgOTQ4ODcsIDk0ODk0LCAKKyAgICA5NDkwMCwgOTQ5MDcsIDk0OTE0LCA5NDkyMSwgOTQ5MjgsIDk0OTM2LCA5NDk0MywgOTQ5NTEsIDk0OTU3LCA5NDk2MywgCisgICAgOTQ5NjksIDk0OTc1LCA5NDk4MSwgOTQ5ODcsIDk0OTkzLCA5NDk5OSwgOTUwMDUsIDk1MDExLCA5NTAxNywgOTUwMjMsIAorICAgIDk1MDI5LCA5NTAzNSwgOTUwNDEsIDk1MDQ3LCA5NTA1MywgOTUwNTksIDk1MDY1LCA5NTA3MSwgOTUwNzcsIDk1MDgzLCAKKyAgICA5NTA4OSwgOTUwOTUsIDk1MTAxLCA5NTEwNywgOTUxMTMsIDk1MTE5LCA5NTEyNSwgOTUxMzEsIDk1MTM3LCA5NTE0NCwgCisgICAgOTUxNTAsIDk1MTU3LCA5NTE2NCwgOTUxNzEsIDk1MTc4LCA5NTE4NiwgOTUxOTMsIDk1MjAxLCA5NTIwNywgOTUyMTMsIAorICAgIDk1MjE5LCA5NTIyNSwgOTUyMzEsIDk1MjM3LCA5NTI0MywgOTUyNDksIDk1MjU1LCA5NTI2MSwgOTUyNjcsIDk1MjczLCAKKyAgICA5NTI3OSwgOTUyODUsIDk1MjkxLCA5NTI5NywgOTUzMDMsIDk1MzA5LCA5NTMxNSwgOTUzMjEsIDk1MzI3LCA5NTMzMywgCisgICAgOTUzMzksIDk1MzQ1LCA5NTM1MSwgOTUzNTcsIDk1MzYzLCA5NTM2OSwgOTUzNzQsIDk1Mzc5LCA5NTM4NCwgOTUzODksIAorICAgIDk1Mzk0LCA5NTM5OSwgOTU0MDQsIDk1NDA5LCA5NTQxNCwgOTU0MTksIDk1NDI0LCA5NTQyOSwgOTU0MzQsIDk1NDM5LCAKKyAgICA5NTQ0NCwgOTU0NDksIDk1NDU0LCA5NTQ1OSwgOTU0NjQsIDk1NDY5LCA5NTQ3NCwgOTU0NzksIDk1NDg0LCA5NTQ4OSwgCisgICAgOTU0OTQsIDk1NDk5LCA5NTUwNCwgOTU1MDksIDk1NTE0LCA5NTUxOSwgOTU1MjQsIDk1NTI5LCA5NTUzNCwgOTU1MzksIAorICAgIDk1NTQ0LCA5NTU0OSwgOTU1NTQsIDk1NTU5LCA5NTU2NCwgOTU1NjksIDk1NTc0LCA5NTU3OSwgOTU1ODQsIDk1NTg5LCAKKyAgICA5NTU5NCwgOTU1OTksIDk1NjA0LCA5NTYwOSwgOTU2MTQsIDk1NjE5LCA5NTYyNCwgOTU2MjksIDk1NjM0LCA5NTYzOSwgCisgICAgOTU2NDQsIDk1NjQ5LCA5NTY1NCwgOTU2NTksIDk1NjY0LCA5NTY2OSwgOTU2NzQsIDk1Njc5LCA5NTY4NCwgOTU2ODksIAorICAgIDk1Njk0LCA5NTY5OSwgOTU3MDQsIDk1NzA5LCA5NTcxMywgOTU3MTcsIDk1NzIxLCA5NTcyNSwgOTU3MjksIDk1NzMzLCAKKyAgICA5NTczNywgOTU3NDIsIDk1NzQ3LCAwLCAwLCA5NTc1MiwgOTU3NTcsIDk1NzYxLCA5NTc2NSwgOTU3NjksIDk1NzczLCAKKyAgICA5NTc3NywgOTU3ODEsIDk1Nzg2LCA5NTc5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzYxMzAsIDc2MTM0LCA3NjEzOCwgNzYxNDIsIDc2MTQ2LCAKLSAgICA3NjE1MCwgNzYxNTQsIDc2MTU4LCA3NjE2MiwgNzYxNjYsIDc2MTcwLCA3NjE3NCwgNzYxNzgsIDc2MTgyLCA3NjE4NiwgCi0gICAgNzYxOTAsIDc2MTk0LCA3NjE5OCwgNzYyMDIsIDc2MjA2LCA3NjIxMCwgNzYyMTQsIDc2MjE4LCAwLCAwLCAwLCAwLCAKLSAgICA3NjIyMiwgNzYyMjYsIDc2MjMwLCA3NjIzNCwgNzYyMzgsIDc2MjQyLCA3NjI0NiwgNzYyNTAsIDc2MjU0LCA3NjI1OCwgCi0gICAgNzYyNjIsIDc2MjY2LCA3NjI3MCwgNzYyNzQsIDc2Mjc4LCA3NjI4MiwgNzYyODYsIDc2MjkwLCA3NjI5NCwgNzYyOTgsIAotICAgIDc2MzAyLCA3NjMwNiwgNzYzMTAsIDc2MzE0LCA3NjMxOCwgNzYzMjIsIDc2MzI2LCA3NjMzMCwgNzYzMzQsIDc2MzM4LCAKLSAgICA3NjM0MiwgNzYzNDYsIDc2MzUwLCA3NjM1NCwgNzYzNTgsIDc2MzYyLCA3NjM2NiwgNzYzNzAsIDc2Mzc0LCA3NjM3OCwgCi0gICAgNzYzODIsIDc2Mzg2LCA3NjM5MCwgNzYzOTQsIDc2Mzk4LCA3NjQwMiwgNzY0MDYsIDc2NDEwLCA3NjQxNCwgMCwgMCwgMCwgCi0gICAgMCwgNzY0MTgsIDc2NDIyLCA3NjQyNiwgNzY0MzAsIDc2NDM0LCA3NjQzOCwgNzY0NDIsIDc2NDQ2LCA3NjQ1MCwgNzY0NTQsIAotICAgIDc2NDU4LCA3NjQ2MiwgNzY0NjYsIDc2NDcwLCA3NjQ3NCwgNzY0NzgsIDc2NDgyLCA3NjQ4NiwgNzY0OTAsIDc2NDk0LCAKLSAgICA3NjQ5OCwgNzY1MDIsIDc2NTA2LCA3NjUxMCwgNzY1MTQsIDc2NTE4LCA3NjUyMiwgNzY1MjYsIDc2NTMwLCA3NjUzNCwgCi0gICAgNzY1MzgsIDc2NTQyLCA3NjU0NiwgNzY1NTAsIDc2NTU0LCA3NjU1OCwgNzY1NjIsIDc2NTY2LCA3NjU3MCwgNzY1NzQsIAotICAgIDc2NTc4LCA3NjU4MiwgNzY1ODYsIDc2NTkwLCA3NjU5NCwgNzY1OTgsIDc2NjAyLCA3NjYwNiwgNzY2MTAsIDc2NjE0LCAKLSAgICA3NjYxOCwgNzY2MjIsIDc2NjI2LCA3NjYzMCwgNzY2MzQsIDc2NjM4LCA3NjY0MiwgNzY2NDYsIDc2NjUwLCA3NjY1NCwgCi0gICAgNzY2NTgsIDc2NjYyLCA3NjY2NiwgNzY2NzAsIDc2Njc0LCA3NjY3OCwgNzY2ODIsIDc2Njg2LCA3NjY5MCwgNzY2OTQsIAotICAgIDc2Njk4LCA3NjcwMiwgNzY3MDYsIDc2NzEwLCA3NjcxNCwgNzY3MTgsIDc2NzIyLCA3NjcyNiwgNzY3MzAsIDc2NzM0LCAKLSAgICA3NjczOCwgNzY3NDIsIDc2NzQ2LCA3Njc1MCwgNzY3NTQsIDc2NzU4LCA3Njc2MiwgNzY3NjYsIDc2NzcwLCA3Njc3NCwgCi0gICAgNzY3NzgsIDc2NzgyLCA3Njc4NiwgNzY3OTAsIDc2Nzk0LCA3Njc5OCwgNzY4MDIsIDc2ODA2LCA3NjgxMCwgNzY4MTQsIAotICAgIDc2ODE4LCA3NjgyMiwgNzY4MjYsIDc2ODMwLCA3NjgzNCwgNzY4MzgsIDc2ODQyLCA3Njg0NiwgNzY4NTAsIDc2ODU0LCAKLSAgICA3Njg1OCwgNzY4NjIsIDc2ODY2LCA3Njg3MCwgNzY4NzQsIDc2ODc4LCA3Njg4MiwgNzY4ODYsIDc2ODkwLCA3Njg5NCwgCi0gICAgNzY4OTgsIDc2OTAyLCA3NjkwNiwgNzY5MTAsIDc2OTE0LCA3NjkxOCwgNzY5MjIsIDc2OTI2LCA3NjkzMCwgNzY5MzQsIAotICAgIDc2OTM4LCA3Njk0MiwgNzY5NDYsIDc2OTUwLCA3Njk1NCwgNzY5NTgsIDc2OTYyLCA3Njk2NiwgNzY5NzAsIDc2OTc0LCAKLSAgICA3Njk3OCwgNzY5ODIsIDc2OTg2LCA3Njk5MCwgNzY5OTQsIDc2OTk4LCA3NzAwMiwgNzcwMDYsIDc3MDEwLCA3NzAxNCwgCi0gICAgNzcwMTgsIDc3MDIyLCA3NzAyNiwgNzcwMzAsIDc3MDM0LCA3NzAzOCwgNzcwNDIsIDc3MDQ2LCA3NzA1MCwgNzcwNTQsIAotICAgIDc3MDU4LCA3NzA2MiwgNzcwNjYsIDc3MDcwLCA3NzA3NCwgNzcwNzgsIDc3MDgyLCA3NzA4NiwgNzcwOTAsIDc3MDk0LCAKLSAgICA3NzA5OCwgNzcxMDIsIDc3MTA2LCA3NzExMCwgNzcxMTQsIDc3MTE4LCA3NzEyMiwgNzcxMjYsIDc3MTMwLCA3NzEzNCwgCi0gICAgNzcxMzgsIDc3MTQyLCA3NzE0NiwgNzcxNTAsIDc3MTU0LCA3NzE1OCwgNzcxNjIsIDc3MTY2LCA3NzE3MCwgNzcxNzQsIAotICAgIDc3MTc4LCA3NzE4MiwgNzcxODYsIDc3MTkwLCA3NzE5NCwgNzcxOTgsIDc3MjAyLCA3NzIwNiwgNzcyMTAsIDc3MjE0LCAKLSAgICA3NzIxOCwgNzcyMjIsIDc3MjI2LCA3NzIzMCwgNzcyMzQsIDc3MjM4LCA3NzI0MiwgNzcyNDYsIDc3MjUwLCA3NzI1NCwgCi0gICAgNzcyNTgsIDc3MjYyLCA3NzI2NiwgNzcyNzAsIDc3Mjc0LCA3NzI3OCwgNzcyODIsIDc3Mjg2LCA3NzI5MCwgNzcyOTQsIAotICAgIDc3Mjk4LCA3NzMwMiwgNzczMDYsIDc3MzEwLCA3NzMxNCwgNzczMTgsIDc3MzIyLCA3NzMyNiwgNzczMzAsIDc3MzM0LCAKLSAgICA3NzMzOCwgNzczNDIsIDc3MzQ2LCA3NzM1MCwgNzczNTQsIDc3MzU4LCA3NzM2MiwgNzczNjYsIDc3MzcwLCA3NzM3NCwgCi0gICAgNzczNzgsIDc3MzgyLCA3NzM4NiwgNzczOTAsIDc3Mzk0LCA3NzM5OCwgNzc0MDIsIDc3NDA2LCA3NzQxMCwgNzc0MTQsIAotICAgIDc3NDE4LCA3NzQyMiwgNzc0MjYsIDc3NDMwLCA3NzQzNCwgNzc0MzgsIDc3NDQyLCA3NzQ0NiwgNzc0NTAsIDc3NDU0LCAKLSAgICA3NzQ1OCwgNzc0NjIsIDc3NDY2LCA3NzQ3MCwgNzc0NzQsIDc3NDc4LCA3NzQ4MiwgNzc0ODYsIDc3NDkwLCA3NzQ5NCwgCi0gICAgNzc0OTgsIDc3NTAyLCA3NzUwNiwgNzc1MTAsIDc3NTE0LCA3NzUxOCwgNzc1MjIsIDc3NTI2LCA3NzUzMCwgNzc1MzQsIAotICAgIDc3NTM4LCA3NzU0MiwgNzc1NDYsIDc3NTUwLCA3NzU1NCwgNzc1NTgsIDc3NTYyLCA3NzU2NiwgNzc1NzAsIDc3NTc0LCAKLSAgICA3NzU3OCwgNzc1ODIsIDc3NTg2LCA3NzU5MCwgNzc1OTQsIDc3NTk4LCA3NzYwMiwgNzc2MDYsIDc3NjEwLCA3NzYxNCwgCi0gICAgNzc2MTgsIDc3NjIyLCA3NzYyNiwgNzc2MzAsIDc3NjM0LCA3NzYzOCwgNzc2NDIsIDc3NjQ2LCA3NzY1MCwgNzc2NTQsIAotICAgIDc3NjU4LCA3NzY2MiwgNzc2NjYsIDc3NjcwLCA3NzY3NCwgNzc2NzgsIDc3NjgyLCA3NzY4NiwgNzc2OTAsIDc3Njk0LCAKLSAgICA3NzY5OCwgNzc3MDIsIDc3NzA2LCA3NzcxMCwgNzc3MTQsIDc3NzE4LCA3NzcyMiwgNzc3MjYsIDc3NzMwLCA3NzczNCwgCi0gICAgNzc3MzgsIDc3NzQyLCA3Nzc0NiwgNzc3NTAsIDc3NzU0LCA3Nzc1OCwgNzc3NjIsIDc3NzY2LCA3Nzc3MCwgNzc3NzQsIAotICAgIDc3Nzc4LCA3Nzc4MiwgNzc3ODYsIDc3NzkwLCA3Nzc5NCwgNzc3OTgsIDc3ODAyLCA3NzgwNiwgNzc4MTAsIDc3ODE0LCAKLSAgICA3NzgxOCwgNzc4MjIsIDc3ODI2LCA3NzgzMCwgNzc4MzQsIDc3ODM4LCA3Nzg0MiwgNzc4NDYsIDc3ODUwLCA3Nzg1NCwgCi0gICAgNzc4NTgsIDc3ODYyLCA3Nzg2NiwgNzc4NzAsIDc3ODc0LCA3Nzg3OCwgMCwgMCwgNzc4ODIsIDc3ODg2LCA3Nzg5MCwgCi0gICAgNzc4OTQsIDc3ODk4LCA3NzkwMiwgNzc5MDYsIDc3OTEwLCA3NzkxNCwgNzc5MTgsIDc3OTIyLCA3NzkyNiwgNzc5MzAsIAotICAgIDc3OTM0LCA3NzkzOCwgNzc5NDIsIDc3OTQ2LCA3Nzk1MCwgNzc5NTQsIDc3OTU4LCA3Nzk2MiwgNzc5NjYsIDc3OTcwLCAKLSAgICA3Nzk3NCwgNzc5NzgsIDc3OTgyLCA3Nzk4NiwgNzc5OTAsIDc3OTk0LCA3Nzk5OCwgNzgwMDIsIDc4MDA2LCA3ODAxMCwgCi0gICAgNzgwMTQsIDc4MDE4LCA3ODAyMiwgNzgwMjYsIDc4MDMwLCA3ODAzNCwgNzgwMzgsIDc4MDQyLCA3ODA0NiwgNzgwNTAsIAotICAgIDc4MDU0LCA3ODA1OCwgNzgwNjIsIDc4MDY2LCA3ODA3MCwgNzgwNzQsIDc4MDc4LCA3ODA4MiwgNzgwODYsIDc4MDkwLCAKLSAgICA3ODA5NCwgNzgwOTgsIDc4MTAyLCA3ODEwNiwgNzgxMTAsIDc4MTE0LCA3ODExOCwgNzgxMjIsIDc4MTI2LCA3ODEzMCwgCi0gICAgNzgxMzQsIDc4MTM4LCA3ODE0MiwgNzgxNDYsIDc4MTUwLCA3ODE1NCwgNzgxNTgsIDc4MTYyLCA3ODE2NiwgNzgxNzAsIAotICAgIDc4MTc0LCA3ODE3OCwgNzgxODIsIDc4MTg2LCA3ODE5MCwgNzgxOTQsIDc4MTk4LCA3ODIwMiwgNzgyMDYsIDc4MjEwLCAKLSAgICA3ODIxNCwgNzgyMTgsIDc4MjIyLCA3ODIyNiwgNzgyMzAsIDc4MjM0LCA3ODIzOCwgNzgyNDIsIDc4MjQ2LCA3ODI1MCwgCi0gICAgNzgyNTQsIDc4MjU4LCA3ODI2MiwgNzgyNjYsIDc4MjcwLCA3ODI3NCwgNzgyNzgsIDc4MjgyLCA3ODI4NiwgNzgyOTAsIAotICAgIDc4Mjk0LCA3ODI5OCwgNzgzMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4MzA2LCAKLSAgICA3ODMxMSwgNzgzMTYsIDc4MzIxLCA3ODMyNiwgNzgzMzEsIDc4MzM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3ODM0NCwgNzgzNTEsIDc4MzU4LCA3ODM2NSwgNzgzNzIsIDAsIDAsIDAsIDAsIDAsIDc4Mzc5LCA3ODM4NiwgCi0gICAgNzgzOTMsIDc4NDAzLCA3ODQwOSwgNzg0MTUsIDc4NDIxLCA3ODQyNywgNzg0MzMsIDc4NDM5LCA3ODQ0NiwgNzg0NTIsIAotICAgIDc4NDU4LCA3ODQ2NCwgNzg0NzMsIDc4NDgyLCA3ODQ5NCwgNzg1MDYsIDc4NTEyLCA3ODUxOCwgNzg1MjQsIDc4NTMxLCAKLSAgICA3ODUzOCwgNzg1NDUsIDc4NTUyLCA3ODU1OSwgMCwgNzg1NjYsIDc4NTczLCA3ODU4MCwgNzg1ODgsIDc4NTk1LCAwLCAKLSAgICA3ODYwMiwgMCwgNzg2MDksIDc4NjE2LCAwLCA3ODYyMywgNzg2MzEsIDAsIDc4NjM4LCA3ODY0NSwgNzg2NTIsIDc4NjU5LCAKLSAgICA3ODY2NiwgNzg2NzMsIDc4NjgwLCA3ODY4NywgNzg2OTQsIDc4NzAxLCA3ODcwNiwgNzg3MTMsIDc4NzIwLCA3ODcyNiwgCi0gICAgNzg3MzIsIDc4NzM4LCA3ODc0NCwgNzg3NTAsIDc4NzU2LCA3ODc2MiwgNzg3NjgsIDc4Nzc0LCA3ODc4MCwgNzg3ODYsIAotICAgIDc4NzkyLCA3ODc5OCwgNzg4MDQsIDc4ODEwLCA3ODgxNiwgNzg4MjIsIDc4ODI4LCA3ODgzNCwgNzg4NDAsIDc4ODQ2LCAKLSAgICA3ODg1MiwgNzg4NTgsIDc4ODY0LCA3ODg3MCwgNzg4NzYsIDc4ODgyLCA3ODg4OCwgNzg4OTQsIDc4OTAwLCA3ODkwNiwgCi0gICAgNzg5MTIsIDc4OTE4LCA3ODkyNCwgNzg5MzAsIDc4OTM2LCA3ODk0MiwgNzg5NDgsIDc4OTU0LCA3ODk2MCwgNzg5NjYsIAotICAgIDc4OTcyLCA3ODk3OCwgNzg5ODQsIDc4OTkwLCA3ODk5NiwgNzkwMDIsIDc5MDA4LCA3OTAxNCwgNzkwMjAsIDc5MDI2LCAKLSAgICA3OTAzMiwgNzkwMzgsIDc5MDQ0LCA3OTA1MCwgNzkwNTYsIDc5MDYyLCA3OTA2OCwgNzkwNzQsIDc5MDgwLCA3OTA4NiwgCi0gICAgNzkwOTIsIDc5MDk4LCA3OTEwNCwgNzkxMTAsIDc5MTE2LCA3OTEyMiwgNzkxMjgsIDc5MTM0LCA3OTE0MCwgNzkxNDYsIAotICAgIDc5MTUyLCA3OTE1OCwgNzkxNjQsIDc5MTcwLCA3OTE3NiwgNzkxODQsIDc5MTkyLCA3OTE5OCwgNzkyMDQsIDc5MjEwLCAKLSAgICA3OTIxNiwgNzkyMjUsIDc5MjM0LCA3OTI0MiwgNzkyNTAsIDc5MjU4LCA3OTI2NiwgNzkyNzQsIDc5MjgyLCA3OTI5MCwgCi0gICAgNzkyOTgsIDc5MzA1LCA3OTMxMiwgNzkzMjIsIDc5MzMyLCA3OTMzNiwgNzkzNDAsIDc5MzQ1LCA3OTM1MCwgNzkzNTUsIAotICAgIDc5MzYwLCA3OTM2OSwgNzkzNzgsIDc5Mzg0LCA3OTM5MCwgNzkzOTcsIDc5NDA0LCA3OTQxMSwgNzk0MTUsIDc5NDIxLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OTQyNywgNzk0MzMsIDc5NDM5LCAKLSAgICA3OTQ0NSwgNzk0NTEsIDc5NDU2LCA3OTQ2MSwgNzk0NjcsIDc5NDczLCA3OTQ3OSwgNzk0ODUsIDc5NDkzLCA3OTQ5OSwgCi0gICAgNzk1MDUsIDc5NTEzLCA3OTUyMSwgNzk1MjksIDc5NTM3LCA3OTU0MiwgNzk1NDcsIDc5NTUyLCA3OTU1NywgNzk1NzAsIAotICAgIDc5NTgzLCA3OTU5MywgNzk2MDMsIDc5NjE0LCA3OTYyNSwgNzk2MzYsIDc5NjQ3LCA3OTY1NywgNzk2NjcsIDc5Njc4LCAKLSAgICA3OTY4OSwgNzk3MDAsIDc5NzExLCA3OTcyMSwgNzk3MzEsIDc5NzQxLCA3OTc1NywgNzk3NzMsIDc5Nzg5LCA3OTc5NiwgCi0gICAgNzk4MDMsIDc5ODEwLCA3OTgxNywgNzk4MjcsIDc5ODM3LCA3OTg0NywgNzk4NTksIDc5ODY5LCA3OTg3NywgNzk4ODUsIAotICAgIDc5ODk0LCA3OTkwMiwgNzk5MTIsIDc5OTIwLCA3OTkyOCwgNzk5MzYsIDc5OTQ1LCA3OTk1MywgNzk5NjMsIDc5OTcxLCAKLSAgICA3OTk3OSwgNzk5ODcsIDc5OTk3LCA4MDAwNSwgODAwMTIsIDgwMDE5LCA4MDAyNiwgODAwMzMsIDgwMDQxLCA4MDA0OSwgCi0gICAgODAwNTcsIDgwMDY1LCA4MDA3MywgODAwODIsIDgwMDkwLCA4MDA5OCwgODAxMDYsIDgwMTE0LCA4MDEyMiwgODAxMzEsIAotICAgIDgwMTM5LCA4MDE0NywgODAxNTUsIDgwMTYzLCA4MDE3MSwgODAxNzksIDgwMTg3LCA4MDE5NSwgODAyMDMsIDgwMjExLCAKLSAgICA4MDIyMCwgODAyMjgsIDgwMjM4LCA4MDI0NiwgODAyNTQsIDgwMjYyLCA4MDI3MiwgODAyODAsIDgwMjg4LCA4MDI5NiwgCi0gICAgODAzMDQsIDgwMzEzLCA4MDMyMiwgODAzMzAsIDgwMzQwLCA4MDM0OCwgODAzNTYsIDgwMzY0LCA4MDM3MywgODAzODEsIAotICAgIDgwMzkxLCA4MDM5OSwgODA0MDYsIDgwNDEzLCA4MDQyMSwgODA0MjgsIDgwNDM3LCA4MDQ0NCwgODA0NTIsIDgwNDYwLCAKLSAgICA4MDQ2OSwgODA0NzcsIDgwNDg3LCA4MDQ5NSwgODA1MDMsIDgwNTExLCA4MDUyMSwgODA1MjksIDgwNTM2LCA4MDU0MywgCi0gICAgODA1NTEsIDgwNTU4LCA4MDU2NywgODA1NzQsIDgwNTg0LCA4MDU5NCwgODA2MDUsIDgwNjE0LCA4MDYyMywgODA2MzIsIAotICAgIDgwNjQxLCA4MDY1MCwgODA2NjAsIDgwNjcxLCA4MDY4MiwgODA2OTIsIDgwNzAzLCA4MDcxNSwgODA3MjUsIDgwNzM0LCAKLSAgICA4MDc0MywgODA3NTEsIDgwNzYwLCA4MDc3MCwgODA3NzgsIDgwNzg3LCA4MDc5NiwgODA4MDQsIDgwODEzLCA4MDgyMywgCi0gICAgODA4MzEsIDgwODQwLCA4MDg0OSwgODA4NTcsIDgwODY2LCA4MDg3NiwgODA4ODQsIDgwODk0LCA4MDkwMiwgODA5MTIsIAotICAgIDgwOTIwLCA4MDkyOCwgODA5MzcsIDgwOTQ1LCA4MDk1NSwgODA5NjMsIDgwOTcxLCA4MDk4MSwgODA5ODksIDgwOTk2LCAKLSAgICA4MTAwMywgODEwMTIsIDgxMDIxLCA4MTAyOSwgODEwMzgsIDgxMDQ4LCA4MTA1NiwgODEwNjcsIDgxMDc1LCA4MTA4MywgCi0gICAgODEwOTAsIDgxMDk4LCA4MTEwNywgODExMTQsIDgxMTI0LCA4MTEzNCwgODExNDUsIDgxMTU1LCA4MTE2NiwgODExNzQsIAotICAgIDgxMTgyLCA4MTE5MSwgODExOTksIDgxMjA4LCA4MTIxNiwgODEyMjQsIDgxMjMzLCA4MTI0MSwgODEyNTAsIDgxMjU4LCAKLSAgICA4MTI2NSwgODEyNzIsIDgxMjc5LCA4MTI4NiwgODEyOTQsIDgxMzAyLCA4MTMxMCwgODEzMTgsIDgxMzI3LCA4MTMzNSwgCi0gICAgODEzNDMsIDgxMzUyLCA4MTM2MCwgODEzNjgsIDgxMzc2LCA4MTM4NSwgODEzOTMsIDgxNDAxLCA4MTQwOSwgODE0MTcsIAotICAgIDgxNDI1LCA4MTQzMywgODE0NDEsIDgxNDQ5LCA4MTQ1NywgODE0NjYsIDgxNDc0LCA4MTQ4MiwgODE0OTAsIDgxNDk4LCAKLSAgICA4MTUwNiwgODE1MTUsIDgxNTI0LCA4MTUzMiwgODE1NDAsIDgxNTQ4LCA4MTU1NywgODE1NjUsIDgxNTc0LCA4MTU4MSwgCi0gICAgODE1ODgsIDgxNTk2LCA4MTYwMywgODE2MTEsIDgxNjE5LCA4MTYyOCwgODE2MzYsIDgxNjQ1LCA4MTY1MywgODE2NjEsIAotICAgIDgxNjcxLCA4MTY3OCwgODE2ODUsIDgxNjkzLCA4MTcwMCwgODE3MDgsIDgxNzE4LCA4MTcyOSwgODE3MzcsIDgxNzQ2LCAKLSAgICA4MTc1NCwgODE3NjMsIDgxNzcxLCA4MTc4MCwgODE3ODgsIDgxNzk3LCA4MTgwNSwgODE4MTQsIDgxODIzLCA4MTgzMSwgCi0gICAgODE4MzksIDgxODQ3LCA4MTg1NiwgODE4NjMsIDgxODcxLCA4MTg4MCwgODE4ODksIDgxODk4LCA4MTkwOCwgODE5MTYsIAotICAgIDgxOTI2LCA4MTkzNCwgODE5NDQsIDgxOTUyLCA4MTk2MiwgODE5NzAsIDgxOTgwLCA4MTk4OCwgODE5OTcsIDgyMDA0LCAKLSAgICA4MjAxMywgODIwMjAsIDgyMDMwLCA4MjAzOCwgODIwNDgsIDgyMDU2LCA4MjA2NiwgODIwNzQsIDgyMDgyLCA4MjA5MCwgCi0gICAgODIwOTksIDgyMTA3LCA4MjExNiwgODIxMjUsIDgyMTM0LCA4MjE0MywgODIxNTMsIDgyMTYxLCA4MjE3MSwgODIxNzksIAotICAgIDgyMTg5LCA4MjE5NywgODIyMDcsIDgyMjE1LCA4MjIyNSwgODIyMzMsIDgyMjQyLCA4MjI0OSwgODIyNTgsIDgyMjY1LCAKLSAgICA4MjI3NSwgODIyODMsIDgyMjkzLCA4MjMwMSwgODIzMTEsIDgyMzE5LCA4MjMyNywgODIzMzUsIDgyMzQ0LCA4MjM1MiwgCi0gICAgODIzNjEsIDgyMzcwLCA4MjM3OSwgODIzODgsIDgyMzk2LCA4MjQwNCwgODI0MTMsIDgyNDIxLCA4MjQzMCwgODI0MzksIAotICAgIDgyNDQ3LCA4MjQ1NSwgODI0NjMsIDgyNDcyLCA4MjQ4MCwgODI0ODgsIDgyNDk3LCA4MjUwNSwgODI1MTMsIDgyNTIxLCAKLSAgICA4MjUyOSwgODI1MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyNTM5LCAKLSAgICA4MjU0OSwgODI1NTksIDgyNTY5LCA4MjU3OSwgODI1OTAsIDgyNjAwLCA4MjYxMCwgODI2MjEsIDgyNjMwLCA4MjYzOSwgCi0gICAgODI2NDgsIDgyNjU5LCA4MjY2OSwgODI2NzksIDgyNjkxLCA4MjcwMSwgODI3MTEsIDgyNzIxLCA4MjczMSwgODI3NDEsIAotICAgIDgyNzUxLCA4Mjc2MSwgODI3NzEsIDgyNzgxLCA4Mjc5MSwgODI4MDEsIDgyODEyLCA4MjgyMywgODI4MzMsIDgyODQzLCAKLSAgICA4Mjg1NSwgODI4NjYsIDgyODc3LCA4Mjg4NywgODI4OTcsIDgyOTA3LCA4MjkxNywgODI5MjcsIDgyOTM3LCA4Mjk0NywgCi0gICAgODI5NTksIDgyOTY5LCA4Mjk3OSwgODI5OTEsIDgzMDAyLCA4MzAxMywgODMwMjMsIDgzMDMzLCA4MzA0MywgODMwNTMsIAotICAgIDgzMDY1LCA4MzA3NSwgODMwODUsIDgzMDk2LCA4MzEwNywgODMxMTcsIDgzMTI3LCA4MzEzNiwgODMxNDUsIDgzMTU0LCAKLSAgICA4MzE2MywgODMxNzIsIDgzMTgyLCAwLCAwLCA4MzE5MiwgODMyMDIsIDgzMjEyLCA4MzIyMiwgODMyMzIsIDgzMjQ0LCAKLSAgICA4MzI1NCwgODMyNjQsIDgzMjc2LCA4MzI4NiwgODMyOTgsIDgzMzA3LCA4MzMxNiwgODMzMjcsIDgzMzM3LCA4MzM0OSwgCi0gICAgODMzNjAsIDgzMzczLCA4MzM4MywgODMzOTUsIDgzNDA0LCA4MzQxNSwgODM0MjYsIDgzNDM5LCA4MzQ0OSwgODM0NTksIAotICAgIDgzNDY5LCA4MzQ3OSwgODM0ODksIDgzNDk4LCA4MzUwNywgODM1MTYsIDgzNTI1LCA4MzUzNSwgODM1NDUsIDgzNTU1LCAKLSAgICA4MzU2NSwgODM1NzUsIDgzNTg1LCA4MzU5NSwgODM2MDUsIDgzNjE1LCA4MzYyNSwgODM2MzUsIDgzNjQ1LCA4MzY1NCwgCi0gICAgODM2NjMsIDgzNjcyLCA4MzY4MiwgODM2OTIsIDgzNzAyLCA4MzcxMiwgODM3MjIsIDgzNzMzLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4Mzc0MywgODM3NTgsIDgzNzczLCA4Mzc3OSwgODM3ODUsIDgzNzkxLCAKLSAgICA4Mzc5NywgODM4MDMsIDgzODA5LCA4MzgxNSwgODM4MjEsIDgzODI5LCA4MzgzMywgODM4MzYsIDAsIDAsIDgzODQ0LCAKLSAgICA4Mzg0NywgODM4NTAsIDgzODUzLCA4Mzg1NiwgODM4NTksIDgzODYyLCA4Mzg2NSwgODM4NjgsIDgzODcxLCA4Mzg3NCwgCi0gICAgODM4NzcsIDgzODgwLCA4Mzg4MywgODM4ODYsIDgzODg5LCA4Mzg5MiwgODM5MDAsIDgzOTA5LCA4MzkyMCwgODM5MjgsIAotICAgIDgzOTM2LCA4Mzk0NSwgODM5NTQsIDgzOTY1LCA4Mzk3NywgMCwgMCwgMCwgMCwgMCwgMCwgODM5ODYsIDgzOTkxLCA4Mzk5NiwgCi0gICAgODQwMDMsIDg0MDEwLCA4NDAxNiwgODQwMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg0MDI3LCA4NDAzNywgCi0gICAgODQwNDcsIDg0MDU3LCA4NDA2NiwgODQwNzcsIDg0MDg2LCA4NDA5NSwgODQxMDUsIDg0MTE1LCA4NDEyNywgODQxMzksIAotICAgIDg0MTUwLCA4NDE2MSwgODQxNzIsIDg0MTgzLCA4NDE5MywgODQyMDMsIDg0MjEzLCA4NDIyMywgODQyMzQsIDg0MjQ1LCAKLSAgICA4NDI0OSwgODQyNTQsIDg0MjYzLCA4NDI3MiwgODQyNzYsIDg0MjgwLCA4NDI4NCwgODQyODksIDg0Mjk0LCA4NDI5OSwgCi0gICAgODQzMDQsIDg0MzA3LCA4NDMxMSwgMCwgODQzMTYsIDg0MzE5LCA4NDMyMiwgODQzMjYsIDg0MzMwLCA4NDMzNSwgODQzMzksIAotICAgIDg0MzQzLCA4NDM0OCwgODQzNTMsIDg0MzYwLCA4NDM2NywgODQzNzAsIDg0MzczLCA4NDM3NiwgODQzNzksIDg0MzgyLCAKLSAgICA4NDM4NiwgODQzOTAsIDAsIDg0Mzk0LCA4NDM5OSwgODQ0MDMsIDg0NDA3LCAwLCAwLCAwLCAwLCA4NDQxMiwgODQ0MTcsIAotICAgIDg0NDI0LCA4NDQyOSwgODQ0MzQsIDAsIDg0NDM5LCA4NDQ0NCwgODQ0NDksIDg0NDU0LCA4NDQ1OSwgODQ0NjQsIDg0NDY5LCAKLSAgICA4NDQ3NCwgODQ0NzksIDg0NDg0LCA4NDQ4OSwgODQ0OTQsIDg0NTAzLCA4NDUxMiwgODQ1MjAsIDg0NTI4LCA4NDUzNywgCi0gICAgODQ1NDYsIDg0NTU1LCA4NDU2NCwgODQ1NzIsIDg0NTgwLCA4NDU4OCwgODQ1OTYsIDg0NjAxLCA4NDYwNiwgODQ2MTIsIAotICAgIDg0NjE4LCA4NDYyNCwgODQ2MzAsIDg0NjM4LCA4NDY0NiwgODQ2NTIsIDg0NjU4LCA4NDY2NCwgODQ2NzAsIDg0Njc2LCAKLSAgICA4NDY4MiwgODQ2ODgsIDg0Njk0LCA4NDY5OSwgODQ3MDQsIDg0NzA5LCA4NDcxNCwgODQ3MTksIDg0NzI0LCA4NDcyOSwgCi0gICAgODQ3MzQsIDg0NzQwLCA4NDc0NiwgODQ3NTIsIDg0NzU4LCA4NDc2NCwgODQ3NzAsIDg0Nzc2LCA4NDc4MiwgODQ3ODgsIAotICAgIDg0Nzk0LCA4NDgwMCwgODQ4MDYsIDg0ODEyLCA4NDgxOCwgODQ4MjQsIDg0ODMwLCA4NDgzNiwgODQ4NDIsIDg0ODQ4LCAKLSAgICA4NDg1NCwgODQ4NjAsIDg0ODY2LCA4NDg3MiwgODQ4NzgsIDg0ODg0LCA4NDg5MCwgODQ4OTYsIDg0OTAyLCA4NDkwOCwgCi0gICAgODQ5MTQsIDg0OTIwLCA4NDkyNiwgODQ5MzIsIDg0OTM4LCA4NDk0NCwgODQ5NTAsIDg0OTU2LCA4NDk2MiwgODQ5NjgsIAotICAgIDg0OTc0LCA4NDk4MCwgODQ5ODYsIDg0OTkyLCA4NDk5OCwgODUwMDQsIDg1MDEwLCA4NTAxNiwgODUwMjIsIDg1MDI4LCAKLSAgICA4NTAzNCwgODUwNDAsIDg1MDQ2LCA4NTA1MiwgODUwNTgsIDg1MDY0LCA4NTA3MCwgODUwNzYsIDg1MDgyLCA4NTA4OCwgCi0gICAgODUwOTQsIDg1MDk5LCA4NTEwNCwgODUxMDksIDg1MTE0LCA4NTEyMCwgODUxMjYsIDg1MTMyLCA4NTEzOCwgODUxNDQsIAotICAgIDg1MTUwLCA4NTE1NiwgODUxNjIsIDg1MTY4LCA4NTE3NCwgODUxODEsIDg1MTg4LCA4NTE5MywgODUxOTgsIDg1MjAzLCAKLSAgICA4NTIwOCwgODUyMjAsIDg1MjMyLCA4NTI0MywgODUyNTQsIDg1MjY2LCA4NTI3OCwgODUyODYsIDAsIDAsIDg1Mjk0LCAwLCAKLSAgICA4NTMwMiwgODUzMDYsIDg1MzEwLCA4NTMxMywgODUzMTcsIDg1MzIxLCA4NTMyNCwgODUzMjcsIDg1MzMxLCA4NTMzNSwgCi0gICAgODUzMzgsIDg1MzQxLCA4NTM0NCwgODUzNDcsIDg1MzUyLCA4NTM1NSwgODUzNTksIDg1MzYyLCA4NTM2NSwgODUzNjgsIAotICAgIDg1MzcxLCA4NTM3NCwgODUzNzcsIDg1MzgwLCA4NTM4MywgODUzODYsIDg1Mzg5LCA4NTM5MiwgODUzOTYsIDg1NDAwLCAKLSAgICA4NTQwNCwgODU0MDgsIDg1NDEzLCA4NTQxOCwgODU0MjQsIDg1NDMwLCA4NTQzNiwgODU0NDEsIDg1NDQ3LCA4NTQ1MywgCi0gICAgODU0NTksIDg1NDY0LCA4NTQ3MCwgODU0NzYsIDg1NDgxLCA4NTQ4NiwgODU0OTIsIDg1NDk3LCA4NTUwMywgODU1MDksIAotICAgIDg1NTE0LCA4NTUyMCwgODU1MjYsIDg1NTMxLCA4NTUzNywgODU1NDMsIDg1NTQ5LCA4NTU1NSwgODU1NjEsIDg1NTY1LCAKLSAgICA4NTU3MCwgODU1NzQsIDg1NTc5LCA4NTU4MywgODU1ODgsIDg1NTkzLCA4NTU5OSwgODU2MDUsIDg1NjExLCA4NTYxNiwgCi0gICAgODU2MjIsIDg1NjI4LCA4NTYzNCwgODU2MzksIDg1NjQ1LCA4NTY1MSwgODU2NTYsIDg1NjYxLCA4NTY2NywgODU2NzIsIAotICAgIDg1Njc4LCA4NTY4NCwgODU2ODksIDg1Njk1LCA4NTcwMSwgODU3MDYsIDg1NzEyLCA4NTcxOCwgODU3MjQsIDg1NzMwLCAKLSAgICA4NTczNiwgODU3NDEsIDg1NzQ1LCA4NTc1MCwgODU3NTIsIDg1NzU3LCA4NTc2MiwgODU3NjgsIDg1NzczLCA4NTc3OCwgCi0gICAgODU3ODIsIDg1Nzg4LCA4NTc5MywgODU3OTgsIDg1ODAzLCA4NTgwOCwgODU4MTMsIDg1ODE4LCA4NTgyMywgODU4MjksIAotICAgIDg1ODM1LCA4NTg0MSwgODU4NDksIDg1ODUzLCA4NTg1NywgODU4NjEsIDg1ODY1LCA4NTg2OSwgODU4NzMsIDg1ODc4LCAKLSAgICA4NTg4MywgODU4ODgsIDg1ODkzLCA4NTg5NywgODU5MDIsIDg1OTA3LCA4NTkxMiwgODU5MTcsIDg1OTIyLCA4NTkyNywgCi0gICAgODU5MzIsIDg1OTM3LCA4NTk0MSwgODU5NDUsIDg1OTUwLCA4NTk1NSwgODU5NjAsIDg1OTY1LCA4NTk2OSwgODU5NzQsIAotICAgIDg1OTc5LCA4NTk4NCwgODU5ODksIDg1OTkzLCA4NTk5OCwgODYwMDMsIDg2MDA4LCA4NjAxMywgODYwMTcsIDg2MDIyLCAKLSAgICA4NjAyNywgODYwMzEsIDg2MDM2LCA4NjA0MSwgODYwNDYsIDg2MDUxLCA4NjA1NiwgODYwNjEsIDg2MDY4LCA4NjA3NSwgCi0gICAgODYwNzksIDg2MDg0LCA4NjA4OSwgODYwOTQsIDg2MDk5LCA4NjEwNCwgODYxMDksIDg2MTE0LCA4NjExOSwgODYxMjQsIAotICAgIDg2MTI5LCA4NjEzNCwgODYxMzksIDg2MTQ0LCA4NjE0OSwgODYxNTQsIDg2MTU5LCA4NjE2NCwgODYxNjksIDg2MTc0LCAKLSAgICA4NjE3OSwgODYxODQsIDg2MTg5LCA4NjE5NCwgODYxOTksIDg2MjA0LCA4NjIwOSwgODYyMTQsIDg2MjE5LCA4NjIyNCwgMCwgCi0gICAgMCwgMCwgODYyMjksIDg2MjMzLCA4NjIzOCwgODYyNDIsIDg2MjQ3LCA4NjI1MiwgMCwgMCwgODYyNTYsIDg2MjYxLCAKLSAgICA4NjI2NiwgODYyNzAsIDg2Mjc1LCA4NjI4MCwgMCwgMCwgODYyODUsIDg2MjkwLCA4NjI5NCwgODYyOTksIDg2MzA0LCAKLSAgICA4NjMwOSwgMCwgMCwgODYzMTQsIDg2MzE5LCA4NjMyNCwgMCwgMCwgMCwgODYzMjgsIDg2MzMyLCA4NjMzNiwgODYzNDAsIAotICAgIDg2MzQzLCA4NjM0NywgODYzNTEsIDAsIDg2MzU1LCA4NjM2MSwgODYzNjQsIDg2MzY4LCA4NjM3MSwgODYzNzUsIDg2Mzc5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NjM4MywgODYzODksIDg2Mzk1LCA4NjQwMSwgODY0MDcsIDAsIDAsIAotICAgIDg2NDExLCA4NjQxNywgODY0MjMsIDg2NDI5LCA4NjQzNSwgODY0NDEsIDg2NDQ4LCA4NjQ1NSwgODY0NjIsIDg2NDY5LCAKLSAgICA4NjQ3NiwgODY0ODMsIDAsIDg2NDkwLCA4NjQ5NywgODY1MDQsIDg2NTEwLCA4NjUxNywgODY1MjQsIDg2NTMxLCA4NjUzOCwgCi0gICAgODY1NDQsIDg2NTUxLCA4NjU1OCwgODY1NjUsIDg2NTcyLCA4NjU3OCwgODY1ODUsIDg2NTkyLCA4NjU5OSwgODY2MDYsIAotICAgIDg2NjEyLCA4NjYxOSwgODY2MjYsIDg2NjMzLCA4NjY0MCwgODY2NDcsIDg2NjU0LCA4NjY2MSwgMCwgODY2NjgsIDg2Njc0LCAKLSAgICA4NjY4MSwgODY2ODgsIDg2Njk1LCA4NjcwMiwgODY3MDgsIDg2NzE1LCA4NjcyMiwgODY3MjksIDg2NzM2LCA4Njc0MywgCi0gICAgODY3NTAsIDg2NzU3LCA4Njc2MywgODY3NzAsIDg2Nzc3LCA4Njc4NCwgODY3OTEsIDAsIDg2Nzk4LCA4NjgwNSwgMCwgCi0gICAgODY4MTIsIDg2ODE5LCA4NjgyNiwgODY4MzMsIDg2ODQwLCA4Njg0NywgODY4NTQsIDg2ODYxLCA4Njg2OCwgODY4NzUsIAotICAgIDg2ODgyLCA4Njg4OSwgODY4OTYsIDg2OTAzLCA4NjkxMCwgMCwgMCwgODY5MTYsIDg2OTIxLCA4NjkyNiwgODY5MzEsIAotICAgIDg2OTM2LCA4Njk0MSwgODY5NDYsIDg2OTUxLCA4Njk1NiwgODY5NjEsIDg2OTY2LCA4Njk3MSwgODY5NzYsIDg2OTgxLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4Njk4NiwgODY5OTMsIDg3MDAwLCA4NzAwNywgODcwMTQsIDg3MDIxLCAKLSAgICA4NzAyOCwgODcwMzUsIDg3MDQyLCA4NzA0OSwgODcwNTYsIDg3MDYzLCA4NzA3MCwgODcwNzcsIDg3MDg0LCA4NzA5MSwgCi0gICAgODcwOTgsIDg3MTA1LCA4NzExMiwgODcxMTksIDg3MTI3LCA4NzEzNSwgODcxNDIsIDg3MTQ5LCA4NzE1NCwgODcxNjIsIAotICAgIDg3MTcwLCA4NzE3NywgODcxODQsIDg3MTg5LCA4NzE5NiwgODcyMDEsIDg3MjA2LCA4NzIxMywgODcyMTgsIDg3MjIzLCAKLSAgICA4NzIyOCwgODcyMzYsIDg3MjQxLCA4NzI0NiwgODcyNTMsIDg3MjU4LCA4NzI2MywgODcyNzAsIDg3Mjc3LCA4NzI4MiwgCi0gICAgODcyODcsIDg3MjkyLCA4NzI5NywgODczMDIsIDg3MzA3LCA4NzMxMiwgODczMTcsIDg3MzIyLCA4NzMyOSwgODczMzQsIAotICAgIDg3MzQxLCA4NzM0NiwgODczNTEsIDg3MzU2LCA4NzM2MSwgODczNjYsIDg3MzcxLCA4NzM3NiwgODczODEsIDg3Mzg2LCAKLSAgICA4NzM5MSwgODczOTYsIDg3NDAzLCA4NzQxMCwgODc0MTcsIDg3NDI0LCA4NzQzMCwgODc0MzUsIDg3NDQyLCA4NzQ0NywgCi0gICAgODc0NTIsIDg3NDYxLCA4NzQ2OCwgODc0NzcsIDg3NDg0LCA4NzQ4OSwgODc0OTQsIDg3NTAyLCA4NzUwNywgODc1MTIsIAotICAgIDg3NTE3LCA4NzUyMiwgODc1MjcsIDg3NTM0LCA4NzUzOSwgODc1NDQsIDg3NTQ5LCA4NzU1NCwgODc1NTksIDg3NTY2LCAKLSAgICA4NzU3MywgODc1ODAsIDg3NTg3LCA4NzU5NCwgODc2MDEsIDg3NjA4LCA4NzYxNSwgODc2MjIsIDg3NjI5LCA4NzYzNiwgCi0gICAgODc2NDMsIDg3NjUwLCA4NzY1NywgODc2NjQsIDg3NjcxLCA4NzY3OCwgODc2ODUsIDg3NjkyLCA4NzY5OSwgODc3MDYsIAotICAgIDg3NzEzLCA4NzcyMCwgODc3MjcsIDg3NzM0LCA4Nzc0MSwgODc3NDgsIDg3NzU1LCAwLCAwLCAwLCAwLCAwLCA4Nzc2MiwgCi0gICAgODc3NzAsIDg3Nzc4LCAwLCAwLCAwLCAwLCA4Nzc4MywgODc3ODcsIDg3NzkxLCA4Nzc5NSwgODc3OTksIDg3ODAzLCAKLSAgICA4NzgwNywgODc4MTEsIDg3ODE1LCA4NzgxOSwgODc4MjQsIDg3ODI5LCA4NzgzNCwgODc4MzksIDg3ODQ0LCA4Nzg0OSwgCi0gICAgODc4NTQsIDg3ODU5LCA4Nzg2NCwgODc4NzAsIDg3ODc2LCA4Nzg4MiwgODc4ODksIDg3ODk2LCA4NzkwMywgODc5MTAsIAotICAgIDg3OTE3LCA4NzkyNCwgODc5MzAsIDg3OTM2LCA4Nzk0MiwgODc5NDksIDg3OTU2LCA4Nzk2MywgODc5NzAsIDg3OTc3LCAKLSAgICA4Nzk4NCwgODc5OTEsIDg3OTk4LCA4ODAwNSwgODgwMTIsIDg4MDE5LCA4ODAyNiwgODgwMzMsIDg4MDQwLCAwLCAwLCAwLCAKLSAgICA4ODA0NywgODgwNTUsIDg4MDYzLCA4ODA3MSwgODgwNzksIDg4MDg3LCA4ODA5NywgODgxMDcsIDg4MTE1LCA4ODEyMywgCi0gICAgODgxMzEsIDg4MTM5LCA4ODE0NywgODgxNTMsIDg4MTYwLCA4ODE2OSwgODgxNzgsIDg4MTg3LCA4ODE5NiwgODgyMDUsIAotICAgIDg4MjE0LCA4ODIyNCwgODgyMzUsIDg4MjQ1LCA4ODI1NiwgODgyNjUsIDg4Mjc0LCA4ODI4MywgODgyOTMsIDg4MzA0LCAKLSAgICA4ODMxNCwgODgzMjUsIDg4MzM2LCA4ODM0NSwgODgzNTMsIDg4MzU5LCA4ODM2NSwgODgzNzEsIDg4Mzc3LCA4ODM4NSwgCi0gICAgODgzOTMsIDg4Mzk5LCA4ODQwNiwgODg0MTYsIDg4NDIzLCA4ODQzMCwgODg0MzcsIDg4NDQ0LCA4ODQ1MSwgODg0NjEsIAotICAgIDg4NDY4LCA4ODQ3NSwgODg0ODMsIDg4NDkxLCA4ODUwMCwgODg1MDksIDg4NTE4LCA4ODUyNywgODg1MzYsIDg4NTQ0LCAKLSAgICA4ODU1MywgODg1NjIsIDg4NTcxLCA4ODU3NSwgODg1ODIsIDg4NTg3LCA4ODU5MiwgODg1OTYsIDg4NjAwLCA4ODYwNCwgCi0gICAgODg2MDgsIDg4NjEzLCA4ODYxOCwgODg2MjQsIDg4NjMwLCA4ODYzNCwgODg2NDAsIDg4NjQ0LCA4ODY0OCwgODg2NTIsIAotICAgIDg4NjU2LCA4ODY2MCwgODg2NjQsIDg4NjcwLCAwLCAwLCAwLCAwLCAwLCA4ODY3NCwgODg2NzksIDg4Njg0LCA4ODY4OSwgCi0gICAgODg2OTQsIDg4NzAxLCA4ODcwNiwgODg3MTEsIDg4NzE2LCA4ODcyMSwgODg3MjYsIDg4NzMxLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODczNiwgCi0gICAgODg3NDMsIDg4NzUyLCA4ODc2MSwgODg3NjgsIDg4Nzc1LCA4ODc4MiwgODg3ODksIDg4Nzk2LCA4ODgwMywgODg4MDksIAotICAgIDg4ODE2LCA4ODgyMywgODg4MzAsIDg4ODM3LCA4ODg0NCwgODg4NTEsIDg4ODU4LCA4ODg2NSwgODg4NzQsIDg4ODgxLCAKLSAgICA4ODg4OCwgODg4OTUsIDg4OTAyLCA4ODkwOSwgODg5MTYsIDg4OTIzLCA4ODkzMCwgODg5MzksIDg4OTQ2LCA4ODk1MywgCi0gICAgODg5NjAsIDg4OTY3LCA4ODk3NCwgODg5ODEsIDg4OTkwLCA4ODk5NywgODkwMDQsIDg5MDExLCA4OTAxOCwgODkwMjcsIAotICAgIDg5MDM0LCA4OTA0MSwgODkwNDgsIDg5MDU2LCA4OTA2NSwgMCwgMCwgODkwNzQsIDg5MDc4LCA4OTA4MiwgODkwODcsIAotICAgIDg5MDkyLCA4OTA5NywgODkxMDIsIDg5MTA2LCA4OTExMSwgODkxMTYsIDg5MTIxLCA4OTEyNiwgODkxMzEsIDg5MTM2LCAKLSAgICA4OTE0MCwgODkxNDQsIDg5MTQ5LCA4OTE1NCwgODkxNTksIDg5MTYzLCA4OTE2OCwgODkxNzMsIDg5MTc3LCA4OTE4MiwgCi0gICAgODkxODcsIDg5MTkyLCA4OTE5NywgODkyMDIsIDg5MjA3LCAwLCAwLCAwLCA4OTIxMiwgODkyMTYsIDg5MjIxLCA4OTIyNiwgCi0gICAgODkyMzAsIDg5MjM1LCA4OTIzOSwgODkyNDQsIDg5MjQ5LCA4OTI1NCwgODkyNTksIDg5MjYzLCA4OTI2NywgODkyNzIsIAotICAgIDg5Mjc3LCA4OTI4MiwgODkyODcsIDg5MjkyLCA4OTI5NywgODkzMDEsIDg5MzA2LCA4OTMxMSwgODkzMTYsIDg5MzIxLCAKLSAgICA4OTMyNiwgODkzMzEsIDg5MzM1LCA4OTMzOSwgODkzNDQsIDg5MzQ5LCA4OTM1NCwgODkzNTksIDg5MzY0LCA4OTM2OSwgCi0gICAgODkzNzQsIDg5Mzc5LCA4OTM4NCwgODkzODksIDg5Mzk0LCA4OTM5OSwgODk0MDQsIDg5NDA5LCA4OTQxNCwgODk0MTksIAotICAgIDg5NDI0LCA4OTQyOSwgODk0MzQsIDg5NDM5LCA4OTQ0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODk0NDksIDg5NDUzLCA4OTQ1OCwgODk0NjMsIDg5NDY4LCA4OTQ3MiwgCi0gICAgODk0NzcsIDg5NDgyLCA4OTQ4NywgODk0OTIsIDg5NDk2LCA4OTUwMCwgODk1MDUsIDg5NTEwLCA4OTUxNSwgODk1MjAsIAotICAgIDg5NTI0LCA4OTUyOSwgODk1MzQsIDg5NTM5LCA4OTU0NCwgODk1NDksIDg5NTU0LCA4OTU1OCwgODk1NjMsIDg5NTY4LCAKLSAgICA4OTU3MywgODk1NzgsIDg5NTgzLCA4OTU4OCwgODk1OTMsIDAsIDg5NTk4LCA4OTYwMywgODk2MDgsIDg5NjE0LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4OTYyMCwgODk2MjUsIDg5NjMwLCA4OTYzNSwgODk2NDAsIDg5NjQ1LCAKLSAgICA4OTY1MCwgODk2NTUsIDg5NjYwLCA4OTY2NSwgODk2NzAsIDg5Njc1LCA4OTY4MCwgODk2ODUsIDg5NjkwLCA4OTY5NSwgCi0gICAgODk3MDAsIDg5NzA1LCA4OTcxMCwgODk3MTUsIDg5NzIwLCA4OTcyNSwgODk3MzAsIDg5NzM1LCA4OTc0MCwgODk3NDUsIAotICAgIDg5NzUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4OTc1NywgODk3NjIsIDg5NzY3LCA4OTc3MiwgODk3NzcsIDg5NzgyLCA4OTc4NywgCi0gICAgODk3OTIsIDg5Nzk3LCA4OTgwMiwgODk4MDcsIDg5ODEyLCA4OTgxNywgODk4MjIsIDg5ODI3LCA4OTgzMiwgODk4MzcsIAotICAgIDg5ODQyLCA4OTg0NywgODk4NTIsIDg5ODU3LCA4OTg2MiwgODk4NjcsIDg5ODcyLCA4OTg3NywgODk4ODIsIDg5ODg3LCAKLSAgICA4OTg5MSwgODk4OTUsIDg5ODk5LCAwLCA4OTkwNCwgODk5MTAsIDg5OTE1LCA4OTkyMCwgODk5MjUsIDg5OTMwLCA4OTkzNiwgCi0gICAgODk5NDIsIDg5OTQ4LCA4OTk1NCwgODk5NjAsIDg5OTY2LCA4OTk3MiwgODk5NzgsIDg5OTg0LCA4OTk5MCwgODk5OTYsIAotICAgIDkwMDAyLCA5MDAwOCwgOTAwMTMsIDkwMDE5LCA5MDAyNSwgOTAwMzAsIDkwMDM2LCA5MDA0MSwgOTAwNDcsIDkwMDUzLCAKLSAgICA5MDA1OCwgOTAwNjQsIDkwMDcwLCA5MDA3NSwgOTAwODEsIDkwMDg3LCA5MDA5MiwgOTAwOTgsIDkwMTA0LCA5MDExMCwgMCwgCi0gICAgMCwgMCwgMCwgOTAxMTUsIDkwMTIxLCA5MDEyNywgOTAxMzMsIDkwMTM5LCA5MDE0NSwgOTAxNTEsIDkwMTU3LCA5MDE2MywgCi0gICAgOTAxNzAsIDkwMTc1LCA5MDE4MCwgOTAxODYsIDkwMTkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA5MDE5OCwgOTAyMDMsIDkwMjA4LCA5MDIxMywgOTAyMTksIDkwMjI0LCA5MDIzMCwgOTAyMzYsIAotICAgIDkwMjQyLCA5MDI0OCwgOTAyNTUsIDkwMjYxLCA5MDI2OCwgOTAyNzMsIDkwMjc4LCA5MDI4MywgOTAyODgsIDkwMjkzLCAKLSAgICA5MDI5OCwgOTAzMDMsIDkwMzA4LCA5MDMxMywgOTAzMTgsIDkwMzIzLCA5MDMyOCwgOTAzMzMsIDkwMzM4LCA5MDM0MywgCi0gICAgOTAzNDgsIDkwMzUzLCA5MDM1OCwgOTAzNjMsIDkwMzY4LCA5MDM3MywgOTAzNzgsIDkwMzgzLCA5MDM4OCwgOTAzOTMsIAotICAgIDkwMzk4LCA5MDQwMywgOTA0MDgsIDkwNDEzLCA5MDQxOCwgOTA0MjMsIDkwNDI5LCA5MDQzNCwgOTA0NDAsIDkwNDQ2LCAKLSAgICA5MDQ1MiwgOTA0NTgsIDkwNDY1LCA5MDQ3MSwgOTA0NzgsIDkwNDgzLCA5MDQ4OCwgOTA0OTMsIDkwNDk4LCA5MDUwMywgCi0gICAgOTA1MDgsIDkwNTEzLCA5MDUxOCwgOTA1MjMsIDkwNTI4LCA5MDUzMywgOTA1MzgsIDkwNTQzLCA5MDU0OCwgOTA1NTMsIAotICAgIDkwNTU4LCA5MDU2MywgOTA1NjgsIDkwNTczLCA5MDU3OCwgOTA1ODMsIDkwNTg4LCA5MDU5MywgOTA1OTgsIDkwNjAzLCAKLSAgICA5MDYwOCwgOTA2MTMsIDkwNjE4LCA5MDYyMywgOTA2MjgsIDkwNjMzLCA5MDYzOCwgOTA2NDMsIDkwNjQ4LCA5MDY1MywgCi0gICAgOTA2NTgsIDkwNjYzLCA5MDY2OCwgOTA2NzMsIDkwNjc4LCA5MDY4MywgOTA2ODgsIDkwNjkzLCA5MDY5OCwgOTA3MDMsIAotICAgIDkwNzA4LCA5MDcxMywgOTA3MTgsIDkwNzIzLCA5MDcyOCwgOTA3MzMsIDkwNzM4LCA5MDc0MywgOTA3NDgsIDkwNzUzLCAKLSAgICA5MDc1OCwgOTA3NjMsIDkwNzY4LCA5MDc3MywgOTA3NzgsIDkwNzgzLCA5MDc4OCwgOTA3OTMsIDkwNzk4LCA5MDgwMywgCi0gICAgOTA4MDgsIDkwODEzLCA5MDgxOCwgOTA4MjMsIDkwODI4LCA5MDgzMywgOTA4MzgsIDkwODQzLCA5MDg0OCwgOTA4NTMsIAotICAgIDkwODU4LCA5MDg2MywgOTA4NjgsIDkwODczLCA5MDg3OCwgOTA4ODMsIDkwODg4LCA5MDg5MywgOTA4OTcsIDkwOTAxLCAKLSAgICA5MDkwNiwgOTA5MTEsIDkwOTE2LCA5MDkyMSwgOTA5MjYsIDkwOTMxLCA5MDkzNiwgOTA5NDEsIDkwOTQ2LCA5MDk1MSwgCi0gICAgOTA5NTYsIDkwOTYwLCA5MDk2NCwgOTA5NjgsIDkwOTcyLCA5MDk3NiwgOTA5ODAsIDkwOTg0LCA5MDk4OSwgOTA5OTQsIDAsIAotICAgIDAsIDkwOTk5LCA5MTAwNCwgOTEwMDgsIDkxMDEyLCA5MTAxNiwgOTEwMjAsIDkxMDI0LCA5MTAyOCwgOTEwMzIsIDkxMDM2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTA0MCwgOTEwNDQsIDkxMDQ4LCA5MTA1MiwgCi0gICAgOTEwNTYsIDkxMDYwLCAwLCAwLCA5MTA2NSwgMCwgOTEwNzAsIDkxMDc0LCA5MTA3OSwgOTEwODQsIDkxMDg5LCA5MTA5NCwgCi0gICAgOTEwOTksIDkxMTA0LCA5MTEwOSwgOTExMTQsIDkxMTE5LCA5MTEyMywgOTExMjgsIDkxMTMzLCA5MTEzOCwgOTExNDMsIAotICAgIDkxMTQ3LCA5MTE1MiwgOTExNTcsIDkxMTYyLCA5MTE2NywgOTExNzEsIDkxMTc2LCA5MTE4MSwgOTExODYsIDkxMTkxLCAKLSAgICA5MTE5NSwgOTEyMDAsIDkxMjA1LCA5MTIxMCwgOTEyMTUsIDkxMjE5LCA5MTIyNCwgOTEyMjksIDkxMjM0LCA5MTIzOSwgCi0gICAgOTEyNDQsIDkxMjQ5LCA5MTI1NCwgOTEyNTgsIDkxMjYzLCA5MTI2OCwgOTEyNzMsIDkxMjc4LCAwLCA5MTI4MywgOTEyODgsIAotICAgIDAsIDAsIDAsIDkxMjkzLCAwLCAwLCA5MTI5OCwgOTEzMDMsIDkxMzEwLCA5MTMxNywgOTEzMjQsIDkxMzMxLCA5MTMzOCwgCi0gICAgOTEzNDUsIDkxMzUyLCA5MTM1OSwgOTEzNjYsIDkxMzczLCA5MTM4MCwgOTEzODcsIDkxMzk0LCA5MTQwMSwgOTE0MDgsIAotICAgIDkxNDE1LCA5MTQyMiwgOTE0MjksIDkxNDM2LCA5MTQ0MywgOTE0NTAsIDAsIDkxNDU3LCA5MTQ2NCwgOTE0NzAsIDkxNDc2LCAKLSAgICA5MTQ4MiwgOTE0ODksIDkxNDk2LCA5MTUwNCwgOTE1MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxNTIxLCA5MTUyNiwgCi0gICAgOTE1MzEsIDkxNTM2LCA5MTU0MSwgOTE1NDYsIDkxNTUxLCA5MTU1NiwgOTE1NjEsIDkxNTY2LCA5MTU3MSwgOTE1NzYsIAotICAgIDkxNTgxLCA5MTU4NiwgOTE1OTEsIDkxNTk2LCA5MTYwMSwgOTE2MDYsIDkxNjExLCA5MTYxNiwgOTE2MjEsIDkxNjI2LCAKLSAgICA5MTYzMSwgOTE2MzUsIDkxNjQwLCA5MTY0NSwgOTE2NTEsIDkxNjU1LCAwLCAwLCAwLCA5MTY1OSwgOTE2NjUsIDkxNjY5LCAKLSAgICA5MTY3NCwgOTE2NzksIDkxNjg0LCA5MTY4OCwgOTE2OTMsIDkxNjk3LCA5MTcwMiwgOTE3MDcsIDkxNzExLCA5MTcxNSwgCi0gICAgOTE3MjAsIDkxNzI0LCA5MTcyOCwgOTE3MzMsIDkxNzM4LCA5MTc0MiwgOTE3NDcsIDkxNzUyLCA5MTc1NywgOTE3NjIsIAotICAgIDkxNzY3LCA5MTc3MiwgOTE3NzcsIDkxNzgyLCAwLCAwLCAwLCAwLCAwLCA5MTc4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTE3OTIsIDkxNzk4LCA5MTgwNCwgOTE4MTAsIDkxODE2LCA5MTgyMiwgOTE4MjksIAotICAgIDkxODM2LCA5MTg0MywgOTE4NDksIDkxODU1LCA5MTg2MSwgOTE4NjgsIDkxODc1LCA5MTg4MiwgOTE4ODgsIDkxODk1LCAKLSAgICA5MTkwMiwgOTE5MDksIDkxOTE2LCA5MTkyMiwgOTE5MjksIDkxOTM2LCA5MTk0MiwgOTE5NDksIDkxOTU2LCA5MTk2MywgCi0gICAgOTE5NzAsIDkxOTc3LCA5MTk4MywgOTE5OTAsIDkxOTk3LCA5MjAwNCwgOTIwMTAsIDkyMDE2LCA5MjAyMiwgOTIwMjgsIAotICAgIDkyMDM0LCA5MjA0MSwgOTIwNDgsIDkyMDU0LCA5MjA2MCwgOTIwNjYsIDkyMDczLCA5MjA3OSwgOTIwODYsIDkyMDkzLCAKLSAgICA5MjEwMCwgOTIxMDYsIDkyMTE0LCA5MjEyMSwgOTIxMjcsIDkyMTM0LCA5MjE0MSwgOTIxNDgsIDkyMTU0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5MjE2MSwgOTIxNjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDkyMTc3LCA5MjE4MSwgOTIxODYsIDkyMTkxLCAwLCA5MjE5NywgOTIyMDIsIDAsIDAsIDAsIDAsIDAsIDkyMjA3LCA5MjIxMywgCi0gICAgOTIyMjAsIDkyMjI1LCA5MjIzMCwgOTIyMzQsIDkyMjM5LCA5MjI0NCwgMCwgOTIyNDksIDkyMjU0LCA5MjI1OSwgMCwgCi0gICAgOTIyNjQsIDkyMjY5LCA5MjI3NCwgOTIyNzksIDkyMjg0LCA5MjI4OSwgOTIyOTQsIDkyMjk5LCA5MjMwNCwgOTIzMDksIAotICAgIDkyMzE0LCA5MjMxOCwgOTIzMjIsIDkyMzI3LCA5MjMzMiwgOTIzMzcsIDkyMzQxLCA5MjM0NSwgOTIzNDksIDkyMzU0LCAKLSAgICA5MjM1OSwgOTIzNjQsIDkyMzY5LCA5MjM3MywgOTIzNzgsIDkyMzgyLCA5MjM4NywgMCwgMCwgMCwgMCwgOTIzOTIsIAotICAgIDkyMzk4LCA5MjQwMywgMCwgMCwgMCwgMCwgOTI0MDgsIDkyNDEyLCA5MjQxNiwgOTI0MjAsIDkyNDI0LCA5MjQyOCwgCi0gICAgOTI0MzMsIDkyNDM4LCA5MjQ0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTI0NTAsIDkyNDU2LCA5MjQ2MywgOTI0NjksIAotICAgIDkyNDc2LCA5MjQ4MiwgOTI0ODgsIDkyNDk0LCA5MjUwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTI1MDcsIDkyNTE1LCAKLSAgICA5MjUyMywgOTI1MzEsIDkyNTM5LCA5MjU0NywgOTI1NTUsIDkyNTYzLCA5MjU3MSwgOTI1NzksIDkyNTg3LCA5MjU5NSwgCi0gICAgOTI2MDMsIDkyNjExLCA5MjYxOSwgOTI2MjcsIDkyNjM1LCA5MjY0MywgOTI2NTEsIDkyNjU5LCA5MjY2NywgOTI2NzUsIAotICAgIDkyNjgzLCA5MjY5MSwgOTI2OTksIDkyNzA3LCA5MjcxNSwgOTI3MjMsIDkyNzMxLCA5MjczOSwgOTI3NDYsIDkyNzU0LCAKLSAgICA5Mjc2MiwgOTI3NjYsIDkyNzcxLCA5Mjc3NiwgOTI3ODEsIDkyNzg2LCA5Mjc5MSwgOTI3OTYsIDkyODAxLCA5MjgwNSwgCi0gICAgOTI4MTAsIDkyODE0LCA5MjgxOSwgOTI4MjMsIDkyODI4LCA5MjgzMiwgOTI4MzcsIDkyODQyLCA5Mjg0NywgOTI4NTIsIAotICAgIDkyODU3LCA5Mjg2MiwgOTI4NjcsIDkyODcyLCA5Mjg3NywgOTI4ODIsIDkyODg3LCA5Mjg5MiwgOTI4OTcsIDkyOTAyLCAKLSAgICA5MjkwNywgOTI5MTIsIDkyOTE3LCA5MjkyMiwgOTI5MjcsIDkyOTMyLCA5MjkzNywgOTI5NDIsIDkyOTQ3LCA5Mjk1MiwgCi0gICAgOTI5NTcsIDkyOTYyLCA5Mjk2NywgOTI5NzIsIDkyOTc3LCA5Mjk4MiwgOTI5ODcsIDkyOTkyLCA5Mjk5NywgOTMwMDIsIAotICAgIDkzMDA3LCA5MzAxMiwgOTMwMTcsIDkzMDIyLCAwLCAwLCAwLCA5MzAyNywgOTMwMzIsIDkzMDQxLCA5MzA0OSwgOTMwNTgsIAotICAgIDkzMDY3LCA5MzA3OCwgOTMwODksIDkzMDk2LCA5MzEwMywgOTMxMTAsIDkzMTE3LCA5MzEyNCwgOTMxMzEsIDkzMTM4LCAKLSAgICA5MzE0NSwgOTMxNTIsIDkzMTU5LCA5MzE2NiwgOTMxNzMsIDkzMTgwLCA5MzE4NywgOTMxOTQsIDkzMjAxLCA5MzIwOCwgCi0gICAgOTMyMTUsIDkzMjIyLCA5MzIyOSwgOTMyMzYsIDAsIDAsIDkzMjQzLCA5MzI0OSwgOTMyNTUsIDkzMjYxLCA5MzI2NywgCi0gICAgOTMyNzQsIDkzMjgxLCA5MzI4OSwgOTMyOTcsIDkzMzA0LCA5MzMxMSwgOTMzMTgsIDkzMzI1LCA5MzMzMiwgOTMzMzksIAotICAgIDkzMzQ2LCA5MzM1MywgOTMzNjAsIDkzMzY3LCA5MzM3NCwgOTMzODEsIDkzMzg4LCA5MzM5NSwgOTM0MDIsIDkzNDA5LCAKLSAgICA5MzQxNiwgOTM0MjMsIDAsIDAsIDAsIDAsIDAsIDkzNDMwLCA5MzQzNiwgOTM0NDIsIDkzNDQ4LCA5MzQ1NCwgOTM0NjEsIAotICAgIDkzNDY4LCA5MzQ3NiwgOTM0ODQsIDkzNDkwLCA5MzQ5NiwgOTM1MDMsIDkzNTA5LCA5MzUxNSwgOTM1MjEsIDkzNTI3LCAKLSAgICA5MzUzNCwgOTM1NDEsIDkzNTQ4LCA5MzU1NSwgOTM1NjIsIDkzNTY5LCA5MzU3NiwgOTM1ODMsIDkzNTkwLCA5MzU5NywgCi0gICAgOTM2MDQsIDkzNjExLCA5MzYxOCwgOTM2MjUsIDkzNjMyLCA5MzYzOSwgOTM2NDYsIDkzNjUzLCA5MzY2MCwgOTM2NjcsIAotICAgIDkzNjc0LCA5MzY4MSwgOTM2ODgsIDkzNjk1LCA5MzcwMiwgOTM3MDksIDkzNzE2LCA5MzcyMywgOTM3MzAsIDkzNzM3LCAKLSAgICA5Mzc0NCwgOTM3NTEsIDkzNzU4LCA5Mzc2NSwgOTM3NzIsIDkzNzc5LCA5Mzc4NiwgOTM3OTMsIDkzODAwLCA5MzgwNywgCi0gICAgOTM4MTQsIDkzODIxLCA5MzgyOCwgOTM4MzUsIDkzODQyLCA5Mzg0OSwgOTM4NTYsIDkzODYzLCA5Mzg3MCwgOTM4NzcsIAotICAgIDkzODg0LCA5Mzg5MSwgOTM4OTgsIDkzOTA1LCA5MzkxMiwgOTM5MTksIDkzOTI2LCA5MzkzMywgOTM5NDAsIDkzOTQ3LCAKLSAgICA5Mzk1NCwgOTM5NjEsIDkzOTY4LCA5Mzk3NSwgOTM5ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDk1Nzk1LCA5NTc5OSwgOTU4MDQsIDk1ODA5LCA5NTgxNCwgOTU4MTksIDk1ODI0LCA5NTgyOSwgOTU4MzQsIDk1ODM4LCAKKyAgICA5NTg0MywgOTU4NDgsIDk1ODUzLCA5NTg1OCwgOTU4NjIsIDk1ODY3LCA5NTg3MiwgOTU4NzcsIDk1ODgyLCA5NTg4NywgCisgICAgOTU4OTIsIDk1ODk3LCA5NTkwMiwgOTU5MDYsIDk1OTExLCA5NTkxNiwgOTU5MjEsIDk1OTI2LCA5NTkzMSwgOTU5MzYsIAorICAgIDk1OTQxLCA5NTk0NiwgOTU5NTAsIDk1OTU1LCA5NTk2MCwgOTU5NjUsIDk1OTcwLCA5NTk3NSwgOTU5ODAsIDk1OTg1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTk5MCwgOTU5OTcsIDk2MDA0LCA5NjAxMSwgOTYwMTgsIDk2MDI1LCA5NjAzMiwgCisgICAgOTYwMzksIDk2MDQ2LCA5NjA1MywgOTYwNjAsIDk2MDY3LCA5NjA3NCwgOTYwODEsIDk2MDg4LCA5NjA5NSwgOTYxMDIsIAorICAgIDk2MTA5LCA5NjExNiwgOTYxMjMsIDk2MTMwLCA5NjEzNywgOTYxNDQsIDk2MTUxLCA5NjE1OCwgOTYxNjUsIDk2MTcyLCAKKyAgICA5NjE3OSwgOTYxODYsIDk2MTkzLCA5NjIwMCwgOTYyMDcsIDk2MjE0LCA5NjIyMSwgOTYyMjgsIDk2MjM1LCA5NjI0MiwgCisgICAgOTYyNDksIDk2MjU2LCA5NjI2MywgOTYyNzAsIDk2Mjc3LCA5NjI4NCwgOTYyOTEsIDk2Mjk4LCA5NjMwNSwgOTYzMTIsIAorICAgIDk2MzE5LCA5NjMyNiwgOTYzMzMsIDk2MzQwLCA5NjM0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOTYzNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkzOTg5LCA5Mzk5MywgCi0gICAgOTM5OTcsIDk0MDAxLCA5NDAwNSwgOTQwMDksIDk0MDEzLCA5NDAxNywgOTQwMjEsIDk0MDI1LCA5NDAzMCwgOTQwMzUsIAotICAgIDk0MDQwLCA5NDA0NSwgOTQwNTAsIDk0MDU1LCA5NDA2MCwgOTQwNjUsIDk0MDcwLCA5NDA3NiwgOTQwODIsIDk0MDg4LCAKLSAgICA5NDA5NSwgOTQxMDIsIDk0MTA5LCA5NDExNiwgOTQxMjMsIDk0MTMwLCA5NDEzNywgOTQxNDQsIDk0MTUxLCAwLCA5NDE1OCwgCi0gICAgOTQxNjIsIDk0MTY2LCA5NDE3MCwgOTQxNzQsIDk0MTc4LCA5NDE4MSwgOTQxODUsIDk0MTg4LCA5NDE5MiwgOTQxOTUsIAotICAgIDk0MTk5LCA5NDIwMywgOTQyMDgsIDk0MjEyLCA5NDIxNywgOTQyMjAsIDk0MjI0LCA5NDIyNywgOTQyMzEsIDk0MjM0LCAKLSAgICA5NDIzOCwgOTQyNDIsIDk0MjQ2LCA5NDI1MCwgOTQyNTQsIDk0MjU4LCA5NDI2MiwgOTQyNjYsIDk0MjcwLCA5NDI3NCwgCi0gICAgOTQyNzgsIDk0MjgyLCA5NDI4NiwgOTQyOTAsIDk0Mjk0LCA5NDI5OCwgOTQzMDIsIDk0MzA2LCA5NDMwOSwgOTQzMTIsIAotICAgIDk0MzE2LCA5NDMyMCwgOTQzMjQsIDk0MzI3LCA5NDMzMCwgOTQzMzMsIDk0MzM3LCA5NDM0MSwgOTQzNDUsIDk0MzQ5LCAKLSAgICA5NDM1MiwgOTQzNTUsIDk0MzU5LCA5NDM2NSwgOTQzNzEsIDk0Mzc3LCA5NDM4MiwgOTQzODksIDk0MzkzLCA5NDM5OCwgCi0gICAgOTQ0MDIsIDk0NDA3LCA5NDQxMiwgOTQ0MTgsIDk0NDIzLCA5NDQyOSwgOTQ0MzMsIDk0NDM4LCA5NDQ0MiwgOTQ0NDcsIAotICAgIDk0NDUwLCA5NDQ1MywgOTQ0NTcsIDk0NDYyLCA5NDQ2OCwgOTQ0NzMsIDk0NDc5LCAwLCAwLCAwLCAwLCA5NDQ4NCwgCi0gICAgOTQ0ODcsIDk0NDkwLCA5NDQ5MywgOTQ0OTYsIDk0NDk5LCA5NDUwMiwgOTQ1MDUsIDk0NTA4LCA5NDUxMSwgOTQ1MTUsIAotICAgIDk0NTE5LCA5NDUyMywgOTQ1MjcsIDk0NTMxLCA5NDUzNSwgOTQ1MzksIDk0NTQzLCA5NDU0NywgOTQ1NTIsIDk0NTU3LCAKLSAgICA5NDU2MSwgOTQ1NjQsIDk0NTY3LCA5NDU3MCwgOTQ1NzMsIDk0NTc2LCA5NDU3OSwgOTQ1ODIsIDk0NTg1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NDU4OCwgOTQ1OTMsIDk0NTk4LCA5NDYwMywgOTQ2MDcsIAotICAgIDk0NjEyLCA5NDYxNiwgOTQ2MjEsIDk0NjI1LCA5NDYzMCwgOTQ2MzQsIDk0NjM5LCA5NDY0MywgOTQ2NDgsIDk0NjUyLCAKLSAgICA5NDY1NywgOTQ2NjIsIDk0NjY3LCA5NDY3MiwgOTQ2NzcsIDk0NjgyLCA5NDY4NywgOTQ2OTIsIDk0Njk3LCA5NDcwMiwgCi0gICAgOTQ3MDcsIDk0NzEyLCA5NDcxNywgOTQ3MjIsIDk0NzI3LCA5NDczMiwgOTQ3MzcsIDk0NzQyLCA5NDc0NywgOTQ3NTIsIAotICAgIDk0NzU2LCA5NDc2MCwgOTQ3NjUsIDk0NzcwLCA5NDc3NSwgOTQ3NzksIDk0NzgzLCA5NDc4NywgOTQ3OTIsIDk0Nzk3LCAKLSAgICA5NDgwMiwgOTQ4MDcsIDk0ODExLCA5NDgxNSwgOTQ4MjEsIDk0ODI2LCA5NDgzMiwgOTQ4MzcsIDk0ODQzLCA5NDg0OCwgCi0gICAgOTQ4NTQsIDk0ODU5LCA5NDg2NSwgOTQ4NzAsIDk0ODc1LCA5NDg4MCwgOTQ4ODUsIDk0ODg5LCA5NDg5NCwgOTQ5MDAsIAotICAgIDk0OTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NDkwOSwgOTQ5MTYsIDk0OTIzLCAKLSAgICA5NDkzMCwgOTQ5MzcsIDk0OTQ0LCA5NDk1MSwgOTQ5NTgsIDk0OTY1LCA5NDk3MiwgOTQ5NzksIDk0OTg2LCA5NDk5MywgCi0gICAgOTUwMDAsIDk1MDA3LCA5NTAxNCwgOTUwMjEsIDk1MDI4LCA5NTAzNSwgOTUwNDIsIDk1MDQ5LCA5NTA1NiwgOTUwNjMsIAotICAgIDk1MDcwLCA5NTA3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTUwODQsIDk1MDkxLCA5NTA5NywgOTUxMDMsIDk1MTA5LCAKLSAgICA5NTExNSwgOTUxMjEsIDk1MTI3LCA5NTEzMywgOTUxMzksIDAsIDAsIDAsIDAsIDAsIDAsIDk1MTQ1LCA5NTE1MCwgOTUxNTUsIAotICAgIDk1MTYwLCA5NTE2NSwgOTUxNjksIDk1MTczLCA5NTE3NywgOTUxODIsIDk1MTg3LCA5NTE5MiwgOTUxOTcsIDk1MjAyLCAKLSAgICA5NTIwNywgOTUyMTIsIDk1MjE3LCA5NTIyMiwgOTUyMjcsIDk1MjMyLCA5NTIzNywgOTUyNDIsIDk1MjQ3LCA5NTI1MiwgCi0gICAgOTUyNTcsIDk1MjYyLCA5NTI2NywgOTUyNzIsIDk1Mjc3LCA5NTI4MiwgOTUyODcsIDk1MjkyLCA5NTI5NywgOTUzMDIsIAotICAgIDk1MzA3LCA5NTMxMiwgOTUzMTcsIDk1MzIyLCA5NTMyNywgOTUzMzIsIDk1MzM3LCA5NTM0MiwgOTUzNDcsIDk1MzUzLCAKLSAgICA5NTM1OCwgOTUzNjQsIDk1MzY5LCA5NTM3NSwgOTUzODAsIDk1Mzg2LCA5NTM5MiwgOTUzOTYsIDk1NDAxLCA5NTQwNSwgMCwgCi0gICAgOTU0MDksIDk1NDE0LCA5NTQxOCwgOTU0MjIsIDk1NDI2LCA5NTQzMCwgOTU0MzQsIDk1NDM4LCA5NTQ0MiwgOTU0NDYsIAotICAgIDk1NDUwLCA5NTQ1NSwgOTU0NTksIDk1NDY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTQ2OSwgCi0gICAgOTU0NzMsIDk1NDc3LCA5NTQ4MSwgOTU0ODQsIDk1NDg4LCA5NTQ5MSwgOTU0OTUsIDk1NDk4LCA5NTUwMiwgOTU1MDYsIAotICAgIDk1NTExLCA5NTUxNSwgOTU1MjAsIDk1NTIzLCA5NTUyNywgOTU1MzAsIDk1NTM0LCA5NTUzNywgOTU1NDEsIDk1NTQ1LCAKLSAgICA5NTU0OSwgOTU1NTMsIDk1NTU3LCA5NTU2MSwgOTU1NjUsIDk1NTY5LCA5NTU3MywgOTU1NzcsIDk1NTgxLCA5NTU4NSwgCi0gICAgOTU1ODksIDk1NTkzLCA5NTU5NywgOTU2MDEsIDk1NjA1LCA5NTYwOSwgOTU2MTIsIDk1NjE1LCA5NTYxOSwgOTU2MjMsIAotICAgIDk1NjI3LCA5NTYzMCwgOTU2MzMsIDk1NjM2LCA5NTY0MCwgOTU2NDQsIDk1NjQ4LCA5NTY1MiwgOTU2NTYsIDk1NjU5LCAKLSAgICA5NTY2MiwgOTU2NjcsIDk1NjcxLCA5NTY3NiwgOTU2ODAsIDk1Njg1LCA5NTY5MCwgOTU2OTYsIDk1NzAxLCA5NTcwNywgCi0gICAgOTU3MTEsIDk1NzE2LCA5NTcyMCwgOTU3MjUsIDk1NzI5LCA5NTczMywgOTU3MzcsIDk1NzQxLCA5NTc0NCwgOTU3NDcsIAotICAgIDk1NzUxLCA5NTc1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU3NTgsIDk1NzYyLCA5NTc2NSwgOTU3NjgsIDk1NzcxLCAKLSAgICA5NTc3NCwgOTU3NzcsIDk1NzgwLCA5NTc4MywgOTU3ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDk1Nzg5LCA5NTc5MywgOTU3OTgsIDk1ODAyLCA5NTgwNywgOTU4MTEsIDk1ODE2LCA5NTgyMCwgOTU4MjUsIDk1ODI5LCAKLSAgICA5NTgzNCwgOTU4MzgsIDk1ODQzLCA5NTg0OCwgOTU4NTMsIDk1ODU4LCA5NTg2MywgOTU4NjgsIDk1ODczLCA5NTg3OCwgCi0gICAgOTU4ODMsIDk1ODg4LCA5NTg5MywgOTU4OTgsIDk1OTAzLCA5NTkwOCwgOTU5MTMsIDk1OTE4LCA5NTkyMywgOTU5MjgsIAotICAgIDk1OTMyLCA5NTkzNiwgOTU5NDEsIDk1OTQ2LCA5NTk1MSwgOTU5NTUsIDk1OTU5LCA5NTk2MywgOTU5NjgsIDk1OTczLCAKLSAgICA5NTk3OCwgOTU5ODIsIDk1OTg2LCA5NTk5MSwgOTU5OTYsIDk2MDAxLCA5NjAwNywgOTYwMTIsIDk2MDE4LCA5NjAyMywgCi0gICAgOTYwMjksIDk2MDM0LCA5NjA0MCwgOTYwNDUsIDk2MDUxLCA5NjA1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTYwNjEsIAotICAgIDk2MDY2LCA5NjA3MCwgOTYwNzQsIDk2MDc4LCA5NjA4MiwgOTYwODYsIDk2MDkwLCA5NjA5NCwgOTYwOTgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDk2MTAyLCA5NjEwNSwgOTYxMTAsIDk2MTE2LCA5NjEyNCwgOTYxMjksIDk2MTM1LCA5NjE0MywgOTYxNDksIAotICAgIDk2MTU1LCA5NjE1OSwgOTYxNjMsIDk2MTcwLCA5NjE3OSwgOTYxODYsIDk2MTk1LCA5NjIwMSwgOTYyMTAsIDk2MjE3LCAKLSAgICA5NjIyNCwgOTYyMzEsIDk2MjQxLCA5NjI0NywgOTYyNTEsIDk2MjU4LCA5NjI2NywgOTYyNzcsIDk2Mjg0LCA5NjI5MSwgCi0gICAgOTYyOTUsIDk2Mjk5LCA5NjMwNiwgOTYzMTYsIDk2MzIwLCA5NjMyNywgOTYzMzQsIDk2MzQxLCA5NjM0NywgOTYzNTQsIAotICAgIDk2MzYxLCA5NjM2OCwgOTYzNzUsIDk2Mzc5LCA5NjM4MywgOTYzODcsIDk2Mzk0LCA5NjM5OCwgOTY0MDUsIDk2NDEyLCAKLSAgICA5NjQyNiwgOTY0MzUsIDk2NDM5LCA5NjQ0MywgOTY0NDcsIDk2NDU0LCA5NjQ1OCwgOTY0NjIsIDk2NDY2LCA5NjQ3NCwgCi0gICAgOTY0ODIsIDk2NTAxLCA5NjUxMSwgOTY1MzEsIDk2NTM1LCA5NjUzOSwgOTY1NDMsIDk2NTQ3LCA5NjU1MSwgOTY1NTUsIAotICAgIDk2NTU5LCA5NjU2NiwgOTY1NzAsIDk2NTczLCA5NjU3NywgOTY1ODEsIDk2NTg3LCA5NjU5NCwgOTY2MDMsIDk2NjA3LCAKLSAgICA5NjYxNiwgOTY2MjUsIDk2NjMzLCA5NjYzNywgOTY2NDQsIDk2NjQ4LCA5NjY1MiwgOTY2NTYsIDk2NjYwLCA5NjY3MSwgCi0gICAgOTY2ODAsIDk2Njg5LCA5NjY5OCwgOTY3MDcsIDk2NzE5LCA5NjcyOCwgOTY3MzcsIDk2NzQ2LCA5Njc1NCwgOTY3NjMsIAotICAgIDk2Nzc1LCA5Njc4NCwgOTY3OTMsIDk2ODAyLCA5NjgxNCwgOTY4MjMsIDk2ODMyLCA5Njg0NCwgOTY4NTMsIDk2ODYyLCAKLSAgICA5Njg3NCwgOTY4ODMsIDk2ODg3LCA5Njg5MSwgOTY4OTUsIDk2ODk5LCA5NjkwMywgOTY5MDcsIDk2OTExLCA5NjkxOCwgCi0gICAgOTY5MjIsIDk2OTI2LCA5NjkzNywgOTY5NDEsIDk2OTQ1LCA5Njk1MiwgOTY5NTgsIDk2OTY0LCA5Njk2OCwgOTY5NzUsIAotICAgIDk2OTc5LCA5Njk4MywgOTY5ODcsIDk2OTkxLCA5Njk5NSwgOTY5OTksIDk3MDA1LCA5NzAxMywgOTcwMTcsIDk3MDIxLCAKLSAgICA5NzAyNCwgOTcwMzAsIDk3MDQwLCA5NzA0NCwgOTcwNTYsIDk3MDYzLCA5NzA3MCwgOTcwNzcsIDk3MDg0LCA5NzA5MCwgCi0gICAgOTcwOTQsIDk3MDk4LCA5NzEwMiwgOTcxMDYsIDk3MTEzLCA5NzEyMiwgOTcxMjksIDk3MTM3LCA5NzE0NSwgOTcxNTEsIAotICAgIDk3MTU1LCA5NzE1OSwgOTcxNjMsIDk3MTY3LCA5NzE3MywgOTcxODIsIDk3MTk0LCA5NzIwMSwgOTcyMDgsIDk3MjE3LCAKLSAgICA5NzIyOCwgOTcyMzQsIDk3MjQzLCA5NzI1MiwgOTcyNTksIDk3MjY4LCA5NzI3NSwgOTcyODIsIDk3MjkyLCA5NzI5OSwgCi0gICAgOTczMDYsIDk3MzEzLCA5NzMyMCwgOTczMjQsIDk3MzMwLCA5NzMzNCwgOTczNDUsIDk3MzUzLCA5NzM2MiwgOTczNzQsIAotICAgIDk3MzgxLCA5NzM4OCwgOTczOTgsIDk3NDA1LCA5NzQxNCwgOTc0MjEsIDk3NDMwLCA5NzQzNywgOTc0NDQsIDk3NDU0LCAKLSAgICA5NzQ2MSwgOTc0NjgsIDk3NDc4LCA5NzQ4NSwgOTc0OTcsIDk3NTA2LCA5NzUxMywgOTc1MjAsIDk3NTI3LCA5NzUzNiwgCi0gICAgOTc1NDYsIDk3NTU5LCA5NzU2NiwgOTc1NzYsIDk3NTg2LCA5NzU5MywgOTc2MDIsIDk3NjE1LCA5NzYyMiwgOTc2MjksIAotICAgIDk3NjM2LCA5NzY0NiwgOTc2NTYsIDk3NjYzLCA5NzY3MywgOTc2ODAsIDk3Njg3LCA5NzY5NywgOTc3MDMsIDk3NzEwLCAKLSAgICA5NzcxNywgOTc3MjQsIDk3NzM0LCA5Nzc0MSwgOTc3NDgsIDk3NzU1LCA5Nzc2MSwgOTc3NjgsIDk3Nzc4LCA5Nzc4NSwgCi0gICAgOTc3ODksIDk3Nzk3LCA5NzgwMSwgOTc4MTMsIDk3ODE3LCA5NzgzMSwgOTc4MzUsIDk3ODM5LCA5Nzg0MywgOTc4NDcsIAotICAgIDk3ODUzLCA5Nzg2MCwgOTc4NjgsIDk3ODcyLCA5Nzg3NiwgOTc4ODAsIDk3ODg0LCA5Nzg5MSwgOTc4OTUsIDk3OTAxLCAKLSAgICA5NzkwNywgOTc5MTUsIDk3OTE5LCA5NzkyNiwgOTc5MzQsIDk3OTM4LCA5Nzk0MiwgOTc5NDgsIDk3OTUyLCA5Nzk2MSwgCi0gICAgOTc5NzAsIDk3OTc3LCA5Nzk4NywgOTc5OTMsIDk3OTk3LCA5ODAwMSwgOTgwMDksIDk4MDE2LCA5ODAyMywgOTgwMjksIAotICAgIDk4MDMzLCA5ODA0MSwgOTgwNDUsIDk4MDUyLCA5ODA2NCwgOTgwNzEsIDk4MDgxLCA5ODA4NywgOTgwOTEsIDk4MTAwLCAKLSAgICA5ODEwNywgOTgxMTYsIDk4MTIwLCA5ODEyNCwgOTgxMzEsIDk4MTM1LCA5ODEzOSwgOTgxNDMsIDk4MTQ3LCA5ODE1MCwgCi0gICAgOTgxNTYsIDk4MTYyLCA5ODE2NiwgOTgxNzAsIDk4MTc3LCA5ODE4NCwgOTgxOTEsIDk4MTk4LCA5ODIwNSwgOTgyMTIsIAotICAgIDk4MjE5LCA5ODIyNiwgOTgyMzIsIDk4MjM2LCA5ODI0MCwgOTgyNDcsIDk4MjU0LCA5ODI2MSwgOTgyNjgsIDk4Mjc1LCAKLSAgICA5ODI3OSwgOTgyODIsIDk4Mjg3LCA5ODI5MSwgOTgyOTUsIDk4MzA0LCA5ODMxMywgOTgzMTcsIDk4MzIxLCA5ODMyNywgCi0gICAgOTgzMzMsIDk4MzUwLCA5ODM1NiwgOTgzNjAsIDk4MzY5LCA5ODM3MywgOTgzNzcsIDk4Mzg0LCA5ODM5MiwgOTg0MDAsIAotICAgIDk4NDA2LCA5ODQxMCwgOTg0MTQsIDk4NDE4LCA5ODQyMiwgOTg0MjUsIDk4NDMxLCA5ODQzOCwgOTg0NDgsIDk4NDU1LCAKLSAgICA5ODQ2MiwgOTg0NjksIDk4NDc1LCA5ODQ4MiwgOTg0ODksIDk4NDk2LCA5ODUwMywgOTg1MTAsIDk4NTE5LCA5ODUyNiwgCi0gICAgOTg1MzgsIDk4NTQ1LCA5ODU1MiwgOTg1NjIsIDk4NTczLCA5ODU4MCwgOTg1ODcsIDk4NTk0LCA5ODYwMSwgOTg2MDgsIAotICAgIDk4NjE1LCA5ODYyMiwgOTg2MjksIDk4NjM2LCA5ODY0MywgOTg2NTMsIDk4NjYzLCA5ODY3MywgOTg2ODAsIDk4NjkwLCAKLSAgICA5ODY5NywgOTg3MDQsIDk4NzExLCA5ODcxOCwgOTg3MjQsIDk4NzMxLCA5ODczOCwgOTg3NDUsIDk4NzUyLCA5ODc1OSwgCi0gICAgOTg3NjYsIDk4NzczLCA5ODc4MCwgOTg3ODYsIDk4NzkzLCA5ODgwMCwgOTg4MDksIDk4ODE2LCA5ODgyMywgOTg4MjcsIAotICAgIDk4ODM1LCA5ODgzOSwgOTg4NDMsIDk4ODQ3LCA5ODg1MSwgOTg4NTUsIDk4ODYyLCA5ODg2NiwgOTg4NzUsIDk4ODc5LCAKLSAgICA5ODg4NiwgOTg4OTQsIDk4ODk4LCA5ODkwMiwgOTg5MDYsIDk4OTE5LCA5ODkzNSwgOTg5MzksIDk4OTQzLCA5ODk1MCwgCi0gICAgOTg5NTYsIDk4OTYzLCA5ODk2NywgOTg5NzEsIDk4OTc1LCA5ODk3OSwgOTg5ODMsIDk4OTkwLCA5ODk5NCwgOTkwMTIsIAotICAgIDk5MDE2LCA5OTAyMCwgOTkwMjcsIDk5MDMxLCA5OTAzNSwgOTkwNDEsIDk5MDQ1LCA5OTA0OSwgOTkwNTcsIDk5MDYxLCAKLSAgICA5OTA2NSwgOTkwNjksIDk5MDczLCA5OTA3OSwgOTkwOTAsIDk5MDk5LCA5OTEwOCwgOTkxMTUsIDk5MTIyLCA5OTEzMywgCi0gICAgOTkxNDAsIDk5MTQ3LCA5OTE1NCwgOTkxNjEsIDk5MTY4LCA5OTE3NSwgOTkxODIsIDk5MTkyLCA5OTE5OCwgOTkyMDUsIAotICAgIDk5MjE1LCA5OTIyNCwgOTkyMzEsIDk5MjQwLCA5OTI1MCwgOTkyNTcsIDk5MjY0LCA5OTI3MSwgOTkyNzgsIDk5MjkwLCAKLSAgICA5OTI5NywgOTkzMDQsIDk5MzExLCA5OTMxOCwgOTkzMjUsIDk5MzM1LCA5OTM0MiwgOTkzNDksIDk5MzU5LCA5OTM3MiwgCi0gICAgOTkzODQsIDk5MzkxLCA5OTQwMSwgOTk0MDgsIDk5NDE1LCA5OTQyMiwgOTk0MzYsIDk5NDQyLCA5OTQ1MCwgOTk0NjAsIAotICAgIDk5NDcwLCA5OTQ3NywgOTk0ODQsIDk5NDkwLCA5OTQ5NCwgOTk1MDEsIDk5NTExLCA5OTUxNywgOTk1MzAsIDk5NTM0LCAKLSAgICA5OTUzOCwgOTk1NDUsIDk5NTQ5LCA5OTU1NiwgOTk1NjYsIDk5NTcwLCA5OTU3NCwgOTk1NzgsIDk5NTgyLCA5OTU4NiwgCi0gICAgOTk1OTMsIDk5NTk3LCA5OTYwNCwgOTk2MTEsIDk5NjE4LCA5OTYyNywgOTk2MzYsIDk5NjQ2LCA5OTY1MywgOTk2NjAsIAotICAgIDk5NjY3LCA5OTY3NywgOTk2ODQsIDk5Njk0LCA5OTcwMSwgOTk3MTEsIDk5NzE4LCA5OTcyNSwgOTk3MzUsIDk5NzQ1LCAKLSAgICA5OTc1MiwgOTk3NTgsIDk5NzY2LCA5OTc3NCwgOTk3ODAsIDk5Nzg2LCA5OTc5MCwgOTk3OTQsIDk5ODAxLCA5OTgwOSwgCi0gICAgOTk4MTUsIDk5ODE5LCA5OTgyMywgOTk4MjcsIDk5ODM0LCA5OTg0NiwgOTk4NDksIDk5ODU2LCA5OTg2MiwgOTk4NjYsIAotICAgIDk5ODcwLCA5OTg3NCwgOTk4NzgsIDk5ODgyLCA5OTg4NiwgOTk4OTAsIDk5ODk0LCA5OTg5OCwgOTk5MDIsIDk5OTA5LCAKLSAgICA5OTkxMywgOTk5MTksIDk5OTIzLCA5OTkyNywgOTk5MzEsIDk5OTM3LCA5OTk0NCwgOTk5NTEsIDk5OTU4LCA5OTk2OSwgCi0gICAgOTk5NzcsIDk5OTgxLCA5OTk4NywgOTk5OTYsIDEwMDAwMywgMTAwMDA5LCAxMDAwMTIsIDEwMDAxNiwgMTAwMDIwLCAKLSAgICAxMDAwMjYsIDEwMDAzNSwgMTAwMDQzLCAxMDAwNDcsIDEwMDA1MywgMTAwMDU3LCAxMDAwNjEsIDEwMDA2NSwgMTAwMDcxLCAKLSAgICAxMDAwNzgsIDEwMDA4NCwgMTAwMDg4LCAxMDAwOTQsIDEwMDA5OCwgMTAwMTAyLCAxMDAxMTEsIDEwMDEyMywgMTAwMTI3LCAKLSAgICAxMDAxMzQsIDEwMDE0MSwgMTAwMTUxLCAxMDAxNTgsIDEwMDE3MCwgMTAwMTc3LCAxMDAxODQsIDEwMDE5MSwgMTAwMjAyLCAKLSAgICAxMDAyMTIsIDEwMDIyNSwgMTAwMjM1LCAxMDAyNDIsIDEwMDI0NiwgMTAwMjUwLCAxMDAyNTQsIDEwMDI1OCwgMTAwMjY3LCAKLSAgICAxMDAyNzYsIDEwMDI4NSwgMTAwMzAyLCAxMDAzMTEsIDEwMDMxNywgMTAwMzI0LCAxMDAzMzIsIDEwMDM0NSwgMTAwMzQ5LCAKLSAgICAxMDAzNTgsIDEwMDM2NywgMTAwMzc2LCAxMDAzODUsIDEwMDM5NiwgMTAwNDA1LCAxMDA0MTQsIDEwMDQyMywgMTAwNDMyLCAKLSAgICAxMDA0NDEsIDEwMDQ1MCwgMTAwNDYwLCAxMDA0NjMsIDEwMDQ2NywgMTAwNDcxLCAxMDA0NzUsIDEwMDQ3OSwgMTAwNDgzLCAKLSAgICAxMDA0ODksIDEwMDQ5NiwgMTAwNTAzLCAxMDA1MTAsIDEwMDUxNiwgMTAwNTIyLCAxMDA1MjksIDEwMDUzNSwgMTAwNTQyLCAKLSAgICAxMDA1NTAsIDEwMDU1NCwgMTAwNTYxLCAxMDA1NjgsIDEwMDU3NSwgMTAwNTgzLCAxMDA1ODYsIDEwMDU5MCwgMTAwNTk0LCAKLSAgICAxMDA1OTgsIDEwMDYwMSwgMTAwNjA3LCAxMDA2MTEsIDEwMDYxNywgMTAwNjI0LCAxMDA2MzEsIDEwMDYzNywgMTAwNjQ0LCAKLSAgICAxMDA2NTEsIDEwMDY1OCwgMTAwNjY1LCAxMDA2NzIsIDEwMDY3OSwgMTAwNjg2LCAxMDA2OTMsIDEwMDcwMCwgMTAwNzA3LCAKLSAgICAxMDA3MTQsIDEwMDcyMSwgMTAwNzI4LCAxMDA3MzUsIDEwMDc0MSwgMTAwNzQ1LCAxMDA3NTQsIDEwMDc1OCwgMTAwNzYyLCAKLSAgICAxMDA3NjYsIDEwMDc3MCwgMTAwNzc2LCAxMDA3ODMsIDEwMDc5MCwgMTAwNzk3LCAxMDA4MDQsIDEwMDgxMSwgMTAwODE3LCAKLSAgICAxMDA4MjUsIDEwMDgyOSwgMTAwODMzLCAxMDA4MzcsIDEwMDg0MSwgMTAwODQ3LCAxMDA4NjQsIDEwMDg4MSwgMTAwODg1LCAKLSAgICAxMDA4ODksIDEwMDg5MywgMTAwODk3LCAxMDA5MDEsIDEwMDkwNSwgMTAwOTExLCAxMDA5MTgsIDEwMDkyMiwgMTAwOTI4LCAKLSAgICAxMDA5MzUsIDEwMDk0MiwgMTAwOTQ5LCAxMDA5NTYsIDEwMDk2MywgMTAwOTcyLCAxMDA5NzksIDEwMDk4NiwgMTAwOTkzLCAKLSAgICAxMDEwMDAsIDEwMTAwNCwgMTAxMDA4LCAxMDEwMTQsIDEwMTAyNiwgMTAxMDMwLCAxMDEwMzQsIDEwMTA0MywgMTAxMDQ3LCAKLSAgICAxMDEwNTEsIDEwMTA1NSwgMTAxMDYxLCAxMDEwNjUsIDEwMTA2OSwgMTAxMDc4LCAxMDEwODIsIDEwMTA4NiwgMTAxMDkwLCAKLSAgICAxMDEwOTcsIDEwMTEwMSwgMTAxMTA1LCAxMDExMDksIDEwMTExMywgMTAxMTE3LCAxMDExMjEsIDEwMTEyNSwgMTAxMTI5LCAKLSAgICAxMDExMzUsIDEwMTE0MiwgMTAxMTQ5LCAxMDExNTUsIDEwMTE1OSwgMTAxMTc2LCAxMDExODIsIDEwMTE4NiwgMTAxMTkyLCAKLSAgICAxMDExOTgsIDEwMTIwNCwgMTAxMjEwLCAxMDEyMTYsIDEwMTIyMiwgMTAxMjI2LCAxMDEyMzAsIDEwMTIzNCwgMTAxMjQwLCAKLSAgICAxMDEyNDQsIDEwMTI1MCwgMTAxMjU0LCAxMDEyNTgsIDEwMTI2NSwgMTAxMjcyLCAxMDEyODksIDEwMTI5MywgMTAxMjk3LCAKLSAgICAxMDEzMDEsIDEwMTMwNSwgMTAxMzA5LCAxMDEzMjEsIDEwMTMyNCwgMTAxMzI5LCAxMDEzMzQsIDEwMTM0OSwgMTAxMzU5LCAKLSAgICAxMDEzNzEsIDEwMTM3NSwgMTAxMzc5LCAxMDEzODMsIDEwMTM4OSwgMTAxMzk2LCAxMDE0MDMsIDEwMTQxMywgMTAxNDI1LCAKLSAgICAxMDE0MzEsIDEwMTQzNywgMTAxNDQ2LCAxMDE0NTAsIDEwMTQ1NCwgMTAxNDYxLCAxMDE0NzEsIDEwMTQ3OCwgMTAxNDg0LCAKLSAgICAxMDE0ODgsIDEwMTQ5MiwgMTAxNDk5LCAxMDE1MDUsIDEwMTUwOSwgMTAxNTE1LCAxMDE1MTksIDEwMTUyNywgMTAxNTMzLCAKLSAgICAxMDE1MzcsIDEwMTU0NSwgMTAxNTUzLCAxMDE1NjAsIDEwMTU2NiwgMTAxNTczLCAxMDE1ODAsIDEwMTU5MCwgMTAxNjAwLCAKLSAgICAxMDE2MDQsIDEwMTYwOCwgMTAxNjEyLCAxMDE2MTYsIDEwMTYyMiwgMTAxNjI5LCAxMDE2MzUsIDEwMTY0MiwgMTAxNjQ5LCAKLSAgICAxMDE2NTYsIDEwMTY2NSwgMTAxNjcyLCAxMDE2NzksIDEwMTY4NSwgMTAxNjkyLCAxMDE2OTksIDEwMTcwNiwgMTAxNzEzLCAKLSAgICAxMDE3MjAsIDEwMTcyNywgMTAxNzMzLCAxMDE3NDAsIDEwMTc0NywgMTAxNzU0LCAxMDE3NjMsIDEwMTc3MCwgMTAxNzc3LCAKLSAgICAxMDE3ODEsIDEwMTc4NywgMTAxNzkxLCAxMDE3OTcsIDEwMTgwNCwgMTAxODExLCAxMDE4MTgsIDEwMTgyMiwgMTAxODI2LCAKLSAgICAxMDE4MzAsIDEwMTgzNCwgMTAxODM4LCAxMDE4NDUsIDEwMTg0OSwgMTAxODUzLCAxMDE4NTksIDEwMTg2NywgMTAxODcxLCAKLSAgICAxMDE4NzUsIDEwMTg3OSwgMTAxODgzLCAxMDE4OTAsIDEwMTg5NCwgMTAxODk4LCAxMDE5MDYsIDEwMTkxMCwgMTAxOTE0LCAKLSAgICAxMDE5MTgsIDEwMTkyMiwgMTAxOTI4LCAxMDE5MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEwMTkzNiwgMTAxOTQyLCAxMDE5NDgsIDEwMTk1NSwgMTAxOTYyLCAxMDE5NjksIDEwMTk3NiwgMTAxOTgzLCAKLSAgICAxMDE5OTAsIDEwMTk5NiwgMTAyMDAzLCAxMDIwMTAsIDEwMjAxNywgMTAyMDI0LCAxMDIwMzEsIDEwMjAzOCwgMTAyMDQ0LCAKLSAgICAxMDIwNTAsIDEwMjA1NiwgMTAyMDYyLCAxMDIwNjgsIDEwMjA3NCwgMTAyMDgwLCAxMDIwODYsIDEwMjA5MiwgMTAyMDk5LCAKLSAgICAxMDIxMDYsIDEwMjExMywgMTAyMTIwLCAxMDIxMjcsIDEwMjEzNCwgMTAyMTQwLCAxMDIxNDYsIDEwMjE1MiwgMTAyMTU5LCAKLSAgICAxMDIxNjYsIDEwMjE3MiwgMTAyMTc4LCAxMDIxODcsIDEwMjE5NCwgMTAyMjAxLCAxMDIyMDgsIDEwMjIxNSwgMTAyMjIyLCAKLSAgICAxMDIyMjksIDEwMjIzNSwgMTAyMjQxLCAxMDIyNDcsIDEwMjI1NiwgMTAyMjYzLCAxMDIyNzAsIDEwMjI4MSwgMTAyMjkyLCAKLSAgICAxMDIyOTgsIDEwMjMwNCwgMTAyMzEwLCAxMDIzMTksIDEwMjMyNiwgMTAyMzMzLCAxMDIzNDMsIDEwMjM1MywgMTAyMzY0LCAKLSAgICAxMDIzNzUsIDEwMjM4NywgMTAyNDAwLCAxMDI0MTEsIDEwMjQyMiwgMTAyNDM0LCAxMDI0NDcsIDEwMjQ1OCwgMTAyNDY5LCAKLSAgICAxMDI0ODAsIDEwMjQ5MSwgMTAyNTAyLCAxMDI1MTQsIDEwMjUyMiwgMTAyNTMwLCAxMDI1MzksIDEwMjU0OCwgMTAyNTU3LCAKLSAgICAxMDI1NjMsIDEwMjU2OSwgMTAyNTc1LCAxMDI1ODIsIDEwMjU5MiwgMTAyNTk5LCAxMDI2MDksIDEwMjYxNCwgMTAyNjE5LCAKLSAgICAxMDI2MjUsIDEwMjYzMSwgMTAyNjM5LCAxMDI2NDcsIDEwMjY1NiwgMTAyNjY3LCAxMDI2NzgsIDEwMjY4NiwgMTAyNjk0LCAKLSAgICAxMDI3MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjcxMiwgMTAyNzIzLCAxMDI3MzAsIAotICAgIDEwMjczOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyNzQ2LCAxMDI3NTAsIDEwMjc1NCwgCi0gICAgMTAyNzU4LCAxMDI3NjIsIDEwMjc2NiwgMTAyNzcwLCAxMDI3NzQsIDEwMjc3OCwgMTAyNzgyLCAxMDI3ODYsIDEwMjc5MCwgCi0gICAgMTAyNzk0LCAxMDI3OTgsIDEwMjgwMiwgMTAyODA2LCAxMDI4MTAsIDEwMjgxNCwgMTAyODE4LCAxMDI4MjIsIDEwMjgyNiwgCi0gICAgMTAyODMwLCAxMDI4MzQsIDEwMjgzOCwgMTAyODQyLCAxMDI4NDYsIDEwMjg1MCwgMTAyODU0LCAxMDI4NTgsIDEwMjg2MiwgCi0gICAgMTAyODY2LCAxMDI4NzAsIDEwMjg3NCwgMTAyODc4LCAxMDI4ODIsIDEwMjg4NiwgMTAyODkwLCAxMDI4OTQsIDEwMjg5OCwgCi0gICAgMTAyOTAyLCAxMDI5MDYsIDEwMjkxMCwgMTAyOTE0LCAxMDI5MTgsIDEwMjkyMiwgMTAyOTI2LCAxMDI5MzAsIDEwMjkzNCwgCi0gICAgMTAyOTM4LCAxMDI5NDIsIDEwMjk0NiwgMTAyOTUwLCAxMDI5NTQsIDEwMjk1OCwgMTAyOTYyLCAxMDI5NjYsIDEwMjk3MCwgCi0gICAgMTAyOTc0LCAxMDI5NzgsIDEwMjk4MiwgMTAyOTg2LCAxMDI5OTAsIDEwMjk5NCwgMTAyOTk4LCAxMDMwMDIsIDEwMzAwNiwgCi0gICAgMTAzMDEwLCAxMDMwMTQsIDEwMzAxOCwgMTAzMDIyLCAxMDMwMjYsIDEwMzAzMCwgMTAzMDM0LCAxMDMwMzgsIDEwMzA0MiwgCi0gICAgMTAzMDQ2LCAxMDMwNTAsIDEwMzA1NCwgMTAzMDU4LCAxMDMwNjIsIDEwMzA2NiwgMTAzMDcwLCAxMDMwNzQsIDEwMzA3OCwgCi0gICAgMTAzMDgyLCAxMDMwODYsIDEwMzA5MCwgMTAzMDk0LCAxMDMwOTgsIDEwMzEwMiwgMTAzMTA2LCAxMDMxMTAsIDEwMzExNCwgCi0gICAgMTAzMTE4LCAxMDMxMjIsIDEwMzEyNiwgMTAzMTMwLCAxMDMxMzQsIDEwMzEzOCwgMTAzMTQyLCAxMDMxNDYsIDEwMzE1MCwgCi0gICAgMTAzMTU0LCAxMDMxNTgsIDEwMzE2MiwgMTAzMTY2LCAxMDMxNzAsIDEwMzE3NCwgMTAzMTc4LCAxMDMxODIsIDEwMzE4NiwgCi0gICAgMTAzMTkwLCAxMDMxOTQsIDEwMzE5OCwgMTAzMjAyLCAxMDMyMDYsIDEwMzIxMCwgMTAzMjE0LCAxMDMyMTgsIDEwMzIyMiwgCi0gICAgMTAzMjI2LCAxMDMyMzAsIDEwMzIzNCwgMTAzMjM4LCAxMDMyNDIsIDEwMzI0NiwgMTAzMjUwLCAxMDMyNTQsIDEwMzI1OCwgCi0gICAgMTAzMjYyLCAxMDMyNjYsIDEwMzI3MCwgMTAzMjc0LCAxMDMyNzgsIDEwMzI4MiwgMTAzMjg2LCAxMDMyOTAsIDEwMzI5NCwgCi0gICAgMTAzMjk4LCAxMDMzMDIsIDEwMzMwNiwgMTAzMzEwLCAxMDMzMTQsIDEwMzMxOCwgMTAzMzIyLCAxMDMzMjYsIDEwMzMzMCwgCi0gICAgMTAzMzM0LCAxMDMzMzgsIDEwMzM0MiwgMTAzMzQ2LCAxMDMzNTAsIDEwMzM1NCwgMTAzMzU4LCAxMDMzNjIsIDEwMzM2NiwgCi0gICAgMTAzMzcwLCAxMDMzNzQsIDEwMzM3OCwgMTAzMzgyLCAxMDMzODYsIDEwMzM5MCwgMTAzMzk0LCAxMDMzOTgsIDEwMzQwMiwgCi0gICAgMTAzNDA2LCAxMDM0MTAsIDEwMzQxNCwgMTAzNDE4LCAxMDM0MjIsIDEwMzQyNiwgMTAzNDMwLCAxMDM0MzQsIDEwMzQzOCwgCi0gICAgMTAzNDQyLCAxMDM0NDYsIDEwMzQ1MCwgMTAzNDU0LCAxMDM0NTgsIDEwMzQ2MiwgMTAzNDY2LCAxMDM0NzAsIDEwMzQ3NCwgCi0gICAgMTAzNDc4LCAxMDM0ODIsIDEwMzQ4NiwgMTAzNDkwLCAxMDM0OTQsIDEwMzQ5OCwgMTAzNTAyLCAxMDM1MDYsIDEwMzUxMCwgCi0gICAgMTAzNTE0LCAxMDM1MTgsIDEwMzUyMiwgMTAzNTI2LCAxMDM1MzAsIDEwMzUzNCwgMTAzNTM4LCAxMDM1NDIsIDEwMzU0NiwgCi0gICAgMTAzNTUwLCAxMDM1NTQsIDEwMzU1OCwgMTAzNTYyLCAxMDM1NjYsIDEwMzU3MCwgMTAzNTc0LCAxMDM1NzgsIDEwMzU4MiwgCi0gICAgMTAzNTg2LCAxMDM1OTAsIDEwMzU5NCwgMTAzNTk4LCAxMDM2MDIsIDEwMzYwNiwgMTAzNjEwLCAxMDM2MTQsIDEwMzYxOCwgCi0gICAgMTAzNjIyLCAxMDM2MjYsIDEwMzYzMCwgMTAzNjM0LCAxMDM2MzgsIDEwMzY0MiwgMTAzNjQ2LCAxMDM2NTAsIDEwMzY1NCwgCi0gICAgMTAzNjU4LCAxMDM2NjIsIDEwMzY2NiwgMTAzNjcwLCAxMDM2NzQsIDEwMzY3OCwgMTAzNjgyLCAxMDM2ODYsIDEwMzY5MCwgCi0gICAgMTAzNjk0LCAxMDM2OTgsIDEwMzcwMiwgMTAzNzA2LCAxMDM3MTAsIDEwMzcxNCwgMTAzNzE4LCAxMDM3MjIsIDEwMzcyNiwgCi0gICAgMTAzNzMwLCAxMDM3MzQsIDEwMzczOCwgMTAzNzQyLCAxMDM3NDYsIDEwMzc1MCwgMTAzNzU0LCAxMDM3NTgsIDEwMzc2MiwgCi0gICAgMTAzNzY2LCAxMDM3NzAsIDEwMzc3NCwgMTAzNzc4LCAxMDM3ODIsIDEwMzc4NiwgMTAzNzkwLCAxMDM3OTQsIDEwMzc5OCwgCi0gICAgMTAzODAyLCAxMDM4MDYsIDEwMzgxMCwgMTAzODE0LCAxMDM4MTgsIDEwMzgyMiwgMTAzODI2LCAxMDM4MzAsIDEwMzgzNCwgCi0gICAgMTAzODM4LCAxMDM4NDIsIDEwMzg0NiwgMTAzODUwLCAxMDM4NTQsIDEwMzg1OCwgMTAzODYyLCAxMDM4NjYsIDEwMzg3MCwgCi0gICAgMTAzODc0LCAxMDM4NzgsIDEwMzg4MiwgMTAzODg2LCAxMDM4OTAsIDEwMzg5NCwgMTAzODk4LCAxMDM5MDIsIDEwMzkwNiwgCi0gICAgMTAzOTEwLCAxMDM5MTQsIDEwMzkxOCwgMTAzOTIyLCAxMDM5MjYsIDEwMzkzMCwgMTAzOTM0LCAxMDM5MzgsIDEwMzk0MiwgCi0gICAgMTAzOTQ2LCAxMDM5NTAsIDEwMzk1NCwgMTAzOTU4LCAxMDM5NjIsIDEwMzk2NiwgMTAzOTcwLCAxMDM5NzQsIDEwMzk3OCwgCi0gICAgMTAzOTgyLCAxMDM5ODYsIDEwMzk5MCwgMTAzOTk0LCAxMDM5OTgsIDEwNDAwMiwgMTA0MDA2LCAxMDQwMTAsIDEwNDAxNCwgCi0gICAgMTA0MDE4LCAxMDQwMjIsIDEwNDAyNiwgMTA0MDMwLCAxMDQwMzQsIDEwNDAzOCwgMTA0MDQyLCAxMDQwNDYsIDEwNDA1MCwgCi0gICAgMTA0MDU0LCAxMDQwNTgsIDEwNDA2MiwgMTA0MDY2LCAxMDQwNzAsIDEwNDA3NCwgMTA0MDc4LCAxMDQwODIsIDEwNDA4NiwgCi0gICAgMTA0MDkwLCAxMDQwOTQsIDEwNDA5OCwgMTA0MTAyLCAxMDQxMDYsIDEwNDExMCwgMTA0MTE0LCAxMDQxMTgsIDEwNDEyMiwgCi0gICAgMTA0MTI2LCAxMDQxMzAsIDEwNDEzNCwgMTA0MTM4LCAxMDQxNDIsIDEwNDE0NiwgMTA0MTUwLCAxMDQxNTQsIDEwNDE1OCwgCi0gICAgMTA0MTYyLCAxMDQxNjYsIDEwNDE3MCwgMTA0MTc0LCAxMDQxNzgsIDEwNDE4MiwgMTA0MTg2LCAxMDQxOTAsIDEwNDE5NCwgCi0gICAgMTA0MTk4LCAxMDQyMDIsIDEwNDIwNiwgMTA0MjEwLCAxMDQyMTQsIDEwNDIxOCwgMTA0MjIyLCAxMDQyMjYsIDEwNDIzMCwgCi0gICAgMTA0MjM0LCAxMDQyMzgsIDEwNDI0MiwgMTA0MjQ2LCAxMDQyNTAsIDEwNDI1NCwgMTA0MjU4LCAxMDQyNjIsIDEwNDI2NiwgCi0gICAgMTA0MjcwLCAxMDQyNzQsIDEwNDI3OCwgMTA0MjgyLCAxMDQyODYsIDEwNDI5MCwgMTA0Mjk0LCAxMDQyOTgsIDEwNDMwMiwgCi0gICAgMTA0MzA2LCAxMDQzMTAsIDEwNDMxNCwgMTA0MzE4LCAxMDQzMjIsIDEwNDMyNiwgMTA0MzMwLCAxMDQzMzQsIDEwNDMzOCwgCi0gICAgMTA0MzQyLCAxMDQzNDYsIDEwNDM1MCwgMTA0MzU0LCAxMDQzNTgsIDEwNDM2MiwgMTA0MzY2LCAxMDQzNzAsIDEwNDM3NCwgCi0gICAgMTA0Mzc4LCAxMDQzODIsIDEwNDM4NiwgMTA0MzkwLCAxMDQzOTQsIDEwNDM5OCwgMTA0NDAyLCAxMDQ0MDYsIDEwNDQxMCwgCi0gICAgMTA0NDE0LCAxMDQ0MTgsIDEwNDQyMiwgMTA0NDI2LCAxMDQ0MzAsIDEwNDQzNCwgMTA0NDM4LCAxMDQ0NDIsIDEwNDQ0NiwgCi0gICAgMTA0NDUwLCAxMDQ0NTQsIDEwNDQ1OCwgMTA0NDYyLCAxMDQ0NjYsIDEwNDQ3MCwgMTA0NDc0LCAxMDQ0NzgsIDEwNDQ4MiwgCi0gICAgMTA0NDg2LCAxMDQ0OTAsIDEwNDQ5NCwgMTA0NDk4LCAxMDQ1MDIsIDEwNDUwNiwgMTA0NTEwLCAxMDQ1MTQsIDEwNDUxOCwgCi0gICAgMTA0NTIyLCAxMDQ1MjYsIDEwNDUzMCwgMTA0NTM0LCAxMDQ1MzgsIDEwNDU0MiwgMTA0NTQ2LCAxMDQ1NTAsIDEwNDU1NCwgCi0gICAgMTA0NTU4LCAxMDQ1NjIsIDEwNDU2NiwgMTA0NTcwLCAxMDQ1NzQsIDEwNDU3OCwgMTA0NTgyLCAxMDQ1ODYsIDEwNDU5MCwgCi0gICAgMTA0NTk0LCAxMDQ1OTgsIDEwNDYwMiwgMTA0NjA2LCAxMDQ2MTAsIDEwNDYxNCwgMTA0NjE4LCAxMDQ2MjIsIDEwNDYyNiwgCi0gICAgMTA0NjMwLCAxMDQ2MzQsIDEwNDYzOCwgMTA0NjQyLCAxMDQ2NDYsIDEwNDY1MCwgMTA0NjU0LCAxMDQ2NTgsIDEwNDY2MiwgCi0gICAgMTA0NjY2LCAxMDQ2NzAsIDEwNDY3NCwgMTA0Njc4LCAxMDQ2ODIsIDEwNDY4NiwgMTA0NjkwLCAxMDQ2OTQsIDEwNDY5OCwgCi0gICAgMTA0NzAyLCAxMDQ3MDYsIDEwNDcxMCwgMTA0NzE0LCAxMDQ3MTgsIDEwNDcyMiwgMTA0NzI2LCAxMDQ3MzAsIDEwNDczNCwgCi0gICAgMTA0NzM4LCAxMDQ3NDIsIDEwNDc0NiwgMTA0NzUwLCAxMDQ3NTQsIDEwNDc1OCwgMTA0NzYyLCAxMDQ3NjYsIDEwNDc3MCwgCi0gICAgMTA0Nzc0LCAxMDQ3NzgsIDEwNDc4MiwgMTA0Nzg2LCAxMDQ3OTAsIDEwNDc5NCwgMTA0Nzk4LCAxMDQ4MDIsIDEwNDgwNiwgCi0gICAgMTA0ODEwLCAxMDQ4MTQsIDEwNDgxOCwgMTA0ODIyLCAxMDQ4MjYsIDEwNDgzMCwgMTA0ODM0LCAxMDQ4MzgsIDEwNDg0MiwgCi0gICAgMTA0ODQ2LCAxMDQ4NTAsIDEwNDg1NCwgMTA0ODU4LCAxMDQ4NjIsIDEwNDg2NiwgMTA0ODcwLCAxMDQ4NzQsIDEwNDg3OCwgCi0gICAgMTA0ODgyLCAxMDQ4ODYsIDEwNDg5MCwgMTA0ODk0LCAxMDQ4OTgsIDEwNDkwMiwgMTA0OTA2LCAxMDQ5MTAsIDEwNDkxNCwgCi0gICAgMTA0OTE4LCAxMDQ5MjIsIDEwNDkyNiwgMTA0OTMwLCAxMDQ5MzQsIDEwNDkzOCwgMTA0OTQyLCAxMDQ5NDYsIDEwNDk1MCwgCi0gICAgMTA0OTU0LCAxMDQ5NTgsIDEwNDk2MiwgMTA0OTY2LCAxMDQ5NzAsIDEwNDk3NCwgMTA0OTc4LCAxMDQ5ODIsIDEwNDk4NiwgCi0gICAgMTA0OTkwLCAxMDQ5OTQsIDEwNDk5OCwgMTA1MDAyLCAxMDUwMDYsIDEwNTAxMCwgMTA1MDE0LCAxMDUwMTgsIDEwNTAyMiwgCi0gICAgMTA1MDI2LCAxMDUwMzAsIDEwNTAzNCwgMTA1MDM4LCAxMDUwNDIsIDEwNTA0NiwgMTA1MDUwLCAxMDUwNTQsIDEwNTA1OCwgCi0gICAgMTA1MDYyLCAxMDUwNjYsIDEwNTA3MCwgMTA1MDc0LCAxMDUwNzgsIDEwNTA4MiwgMTA1MDg2LCAxMDUwOTAsIDEwNTA5NCwgCi0gICAgMTA1MDk4LCAxMDUxMDIsIDEwNTEwNiwgMTA1MTEwLCAxMDUxMTQsIDEwNTExOCwgMTA1MTIyLCAxMDUxMjYsIDEwNTEzMCwgCi0gICAgMTA1MTM0LCAxMDUxMzgsIDEwNTE0MiwgMTA1MTQ2LCAxMDUxNTAsIDEwNTE1NCwgMTA1MTU4LCAxMDUxNjIsIDEwNTE2NiwgCi0gICAgMTA1MTcwLCAxMDUxNzQsIDEwNTE3OCwgMTA1MTgyLCAxMDUxODYsIDEwNTE5MCwgMTA1MTk0LCAxMDUxOTgsIDEwNTIwMiwgCi0gICAgMTA1MjA2LCAxMDUyMTAsIDEwNTIxNCwgMTA1MjE4LCAxMDUyMjIsIDEwNTIyNiwgMTA1MjMwLCAxMDUyMzQsIDEwNTIzOCwgCi0gICAgMTA1MjQyLCAxMDUyNDYsIDEwNTI1MCwgMTA1MjU0LCAxMDUyNTgsIDEwNTI2MiwgMTA1MjY2LCAxMDUyNzAsIDEwNTI3NCwgCi0gICAgMTA1Mjc4LCAxMDUyODIsIDEwNTI4NiwgMTA1MjkwLCAxMDUyOTQsIDEwNTI5OCwgMTA1MzAyLCAxMDUzMDYsIDEwNTMxMCwgCi0gICAgMTA1MzE0LCAxMDUzMTgsIDEwNTMyMiwgMTA1MzI2LCAxMDUzMzAsIDEwNTMzNCwgMTA1MzM4LCAxMDUzNDIsIDEwNTM0NiwgCi0gICAgMTA1MzUwLCAxMDUzNTQsIDEwNTM1OCwgMTA1MzYyLCAxMDUzNjYsIDEwNTM3MCwgMTA1Mzc0LCAxMDUzNzgsIDEwNTM4MiwgCi0gICAgMTA1Mzg2LCAxMDUzOTAsIDEwNTM5NCwgMTA1Mzk4LCAxMDU0MDIsIDEwNTQwNiwgMTA1NDEwLCAxMDU0MTQsIDEwNTQxOCwgCi0gICAgMTA1NDIyLCAxMDU0MjYsIDEwNTQzMCwgMTA1NDM0LCAxMDU0MzgsIDEwNTQ0MiwgMTA1NDQ2LCAxMDU0NTAsIDEwNTQ1NCwgCi0gICAgMTA1NDU4LCAxMDU0NjIsIDEwNTQ2NiwgMTA1NDcwLCAxMDU0NzQsIDEwNTQ3OCwgMTA1NDgyLCAxMDU0ODYsIDEwNTQ5MCwgCi0gICAgMTA1NDk0LCAxMDU0OTgsIDEwNTUwMiwgMTA1NTA2LCAxMDU1MTAsIDEwNTUxNCwgMTA1NTE4LCAxMDU1MjIsIDEwNTUyNiwgCi0gICAgMTA1NTMwLCAxMDU1MzQsIDEwNTUzOCwgMTA1NTQyLCAxMDU1NDYsIDEwNTU1MCwgMTA1NTU0LCAxMDU1NTgsIDEwNTU2MiwgCi0gICAgMTA1NTY2LCAxMDU1NzAsIDEwNTU3NCwgMTA1NTc4LCAxMDU1ODIsIDEwNTU4NiwgMTA1NTkwLCAxMDU1OTQsIDEwNTU5OCwgCi0gICAgMTA1NjAyLCAxMDU2MDYsIDEwNTYxMCwgMTA1NjE0LCAxMDU2MTgsIDEwNTYyMiwgMTA1NjI2LCAxMDU2MzAsIDEwNTYzNCwgCi0gICAgMTA1NjM4LCAxMDU2NDIsIDEwNTY0NiwgMTA1NjUwLCAxMDU2NTQsIDEwNTY1OCwgMTA1NjYyLCAxMDU2NjYsIDEwNTY3MCwgCi0gICAgMTA1Njc0LCAxMDU2NzgsIDEwNTY4MiwgMTA1Njg2LCAxMDU2OTAsIDEwNTY5NCwgMTA1Njk4LCAxMDU3MDIsIDEwNTcwNiwgCi0gICAgMTA1NzEwLCAxMDU3MTQsIDEwNTcxOCwgMTA1NzIyLCAxMDU3MjYsIDEwNTczMCwgMTA1NzM0LCAxMDU3MzgsIDEwNTc0MiwgCi0gICAgMTA1NzQ2LCAxMDU3NTAsIDEwNTc1NCwgMTA1NzU4LCAxMDU3NjIsIDEwNTc2NiwgMTA1NzcwLCAxMDU3NzQsIDEwNTc3OCwgCi0gICAgMTA1NzgyLCAxMDU3ODYsIDEwNTc5MCwgMTA1Nzk0LCAxMDU3OTgsIDEwNTgwMiwgMTA1ODA2LCAxMDU4MTAsIDEwNTgxNCwgCi0gICAgMTA1ODE4LCAxMDU4MjIsIDEwNTgyNiwgMTA1ODMwLCAxMDU4MzQsIDEwNTgzOCwgMTA1ODQyLCAxMDU4NDYsIDEwNTg1MCwgCi0gICAgMTA1ODU0LCAxMDU4NTgsIDEwNTg2MiwgMTA1ODY2LCAxMDU4NzAsIDEwNTg3NCwgMTA1ODc4LCAxMDU4ODIsIDEwNTg4NiwgCi0gICAgMTA1ODkwLCAxMDU4OTQsIDEwNTg5OCwgMTA1OTAyLCAxMDU5MDYsIDEwNTkxMCwgMTA1OTE0LCAxMDU5MTgsIDEwNTkyMiwgCi0gICAgMTA1OTI2LCAxMDU5MzAsIDEwNTkzNCwgMTA1OTM4LCAxMDU5NDIsIDEwNTk0NiwgMTA1OTUwLCAxMDU5NTQsIDEwNTk1OCwgCi0gICAgMTA1OTYyLCAxMDU5NjYsIDEwNTk3MCwgMTA1OTc0LCAxMDU5NzgsIDEwNTk4MiwgMTA1OTg2LCAxMDU5OTAsIDEwNTk5NCwgCi0gICAgMTA1OTk4LCAxMDYwMDIsIDEwNjAwNiwgMTA2MDEwLCAxMDYwMTQsIDEwNjAxOCwgMTA2MDIyLCAxMDYwMjYsIDEwNjAzMCwgCi0gICAgMTA2MDM0LCAxMDYwMzgsIDEwNjA0MiwgMTA2MDQ2LCAxMDYwNTAsIDEwNjA1NCwgMTA2MDU4LCAxMDYwNjIsIDEwNjA2NiwgCi0gICAgMTA2MDcwLCAxMDYwNzQsIDEwNjA3OCwgMTA2MDgyLCAxMDYwODYsIDEwNjA5MCwgMTA2MDk0LCAxMDYwOTgsIDEwNjEwMiwgCi0gICAgMTA2MTA2LCAxMDYxMTAsIDEwNjExNCwgMTA2MTE4LCAxMDYxMjIsIDEwNjEyNiwgMTA2MTMwLCAxMDYxMzQsIDEwNjEzOCwgCi0gICAgMTA2MTQyLCAxMDYxNDYsIDEwNjE1MCwgMTA2MTU0LCAxMDYxNTgsIDEwNjE2MiwgMTA2MTY2LCAxMDYxNzAsIDEwNjE3NCwgCi0gICAgMTA2MTc4LCAxMDYxODIsIDEwNjE4NiwgMTA2MTkwLCAxMDYxOTQsIDEwNjE5OCwgMTA2MjAyLCAxMDYyMDYsIDEwNjIxMCwgCi0gICAgMTA2MjE0LCAxMDYyMTgsIDEwNjIyMiwgMTA2MjI2LCAxMDYyMzAsIDEwNjIzNCwgMTA2MjM4LCAxMDYyNDIsIDEwNjI0NiwgCi0gICAgMTA2MjUwLCAxMDYyNTQsIDEwNjI1OCwgMTA2MjYyLCAxMDYyNjYsIDEwNjI3MCwgMTA2Mjc0LCAxMDYyNzgsIDEwNjI4MiwgCi0gICAgMTA2Mjg2LCAxMDYyOTAsIDEwNjI5NCwgMTA2Mjk4LCAxMDYzMDIsIDEwNjMwNiwgMTA2MzEwLCAxMDYzMTQsIDEwNjMxOCwgCi0gICAgMTA2MzIyLCAxMDYzMjYsIDEwNjMzMCwgMTA2MzM0LCAxMDYzMzgsIDEwNjM0MiwgMTA2MzQ2LCAxMDYzNTAsIDEwNjM1NCwgCi0gICAgMTA2MzU4LCAxMDYzNjIsIDEwNjM2NiwgMTA2MzcwLCAxMDYzNzQsIDEwNjM3OCwgMTA2MzgyLCAxMDYzODYsIDEwNjM5MCwgCi0gICAgMTA2Mzk0LCAxMDYzOTgsIDEwNjQwMiwgMTA2NDA2LCAxMDY0MTAsIDEwNjQxNCwgMTA2NDE4LCAxMDY0MjIsIDEwNjQyNiwgCi0gICAgMTA2NDMwLCAxMDY0MzQsIDEwNjQzOCwgMTA2NDQyLCAxMDY0NDYsIDEwNjQ1MCwgMTA2NDU0LCAxMDY0NTgsIDEwNjQ2MiwgCi0gICAgMTA2NDY2LCAxMDY0NzAsIDEwNjQ3NCwgMTA2NDc4LCAxMDY0ODIsIDEwNjQ4NiwgMTA2NDkwLCAxMDY0OTQsIDEwNjQ5OCwgCi0gICAgMTA2NTAyLCAxMDY1MDYsIDEwNjUxMCwgMTA2NTE0LCAxMDY1MTgsIDEwNjUyMiwgMTA2NTI2LCAxMDY1MzAsIDEwNjUzNCwgCi0gICAgMTA2NTM4LCAxMDY1NDIsIDEwNjU0NiwgMTA2NTUwLCAxMDY1NTQsIDEwNjU1OCwgMTA2NTYyLCAxMDY1NjYsIDEwNjU3MCwgCi0gICAgMTA2NTc0LCAxMDY1NzgsIDEwNjU4MiwgMTA2NTg2LCAxMDY1OTAsIDEwNjU5NCwgMTA2NTk4LCAxMDY2MDIsIDEwNjYwNiwgCi0gICAgMTA2NjEwLCAxMDY2MTQsIDEwNjYxOCwgMTA2NjIyLCAxMDY2MjYsIDEwNjYzMCwgMTA2NjM0LCAxMDY2MzgsIDEwNjY0MiwgCi0gICAgMTA2NjQ2LCAxMDY2NTAsIDEwNjY1NCwgMTA2NjU4LCAxMDY2NjIsIDEwNjY2NiwgMTA2NjcwLCAxMDY2NzQsIDEwNjY3OCwgCi0gICAgMTA2NjgyLCAxMDY2ODYsIDEwNjY5MCwgMTA2Njk0LCAxMDY2OTgsIDEwNjcwMiwgMTA2NzA2LCAxMDY3MTAsIDEwNjcxNCwgCi0gICAgMTA2NzE4LCAxMDY3MjIsIDEwNjcyNiwgMTA2NzMwLCAxMDY3MzQsIDEwNjczOCwgMTA2NzQyLCAxMDY3NDYsIDEwNjc1MCwgCi0gICAgMTA2NzU0LCAxMDY3NTgsIDEwNjc2MiwgMTA2NzY2LCAxMDY3NzAsIDEwNjc3NCwgMTA2Nzc4LCAxMDY3ODIsIDEwNjc4NiwgCi0gICAgMTA2NzkwLCAxMDY3OTQsIDEwNjc5OCwgMTA2ODAyLCAxMDY4MDYsIDEwNjgxMCwgMTA2ODE0LCAxMDY4MTgsIDEwNjgyMiwgCi0gICAgMTA2ODI2LCAxMDY4MzAsIDEwNjgzNCwgMTA2ODM4LCAxMDY4NDIsIDEwNjg0NiwgMTA2ODUwLCAxMDY4NTQsIDEwNjg1OCwgCi0gICAgMTA2ODYyLCAxMDY4NjYsIDEwNjg3MCwgMTA2ODc0LCAxMDY4NzgsIDEwNjg4MiwgMTA2ODg2LCAxMDY4OTAsIDEwNjg5NCwgCi0gICAgMTA2ODk4LCAxMDY5MDIsIDEwNjkwNiwgMTA2OTEwLCAxMDY5MTQsIDEwNjkxOCwgMTA2OTIyLCAxMDY5MjYsIDEwNjkzMCwgCi0gICAgMTA2OTM0LCAxMDY5MzgsIDEwNjk0MiwgMTA2OTQ2LCAxMDY5NTAsIDEwNjk1NCwgMTA2OTU4LCAxMDY5NjIsIDEwNjk2NiwgCi0gICAgMTA2OTcwLCAxMDY5NzQsIDEwNjk3OCwgMTA2OTgyLCAxMDY5ODYsIDEwNjk5MCwgMTA2OTk0LCAxMDY5OTgsIDEwNzAwMiwgCi0gICAgMTA3MDA2LCAxMDcwMTAsIDEwNzAxNCwgMTA3MDE4LCAxMDcwMjIsIDEwNzAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTA3MDMwLCAxMDcwMzcsIDEwNzA0NCwgMTA3MDUzLCAxMDcwNjIsIDEwNzA2OSwgMTA3MDc0LCAxMDcwODEsIAotICAgIDEwNzA4OCwgMTA3MDk3LCAxMDcxMDgsIDEwNzExOSwgMTA3MTI0LCAxMDcxMzEsIDEwNzEzNiwgMTA3MTQxLCAxMDcxNDYsIAotICAgIDEwNzE1MSwgMTA3MTU2LCAxMDcxNjEsIDEwNzE2NiwgMTA3MTcxLCAxMDcxNzYsIDEwNzE4MSwgMTA3MTg2LCAxMDcxOTMsIAotICAgIDEwNzIwMCwgMTA3MjA1LCAxMDcyMTAsIDEwNzIxNSwgMTA3MjIwLCAxMDcyMjcsIDEwNzIzNCwgMTA3MjQyLCAxMDcyNDcsIAotICAgIDEwNzI1NCwgMTA3MjU5LCAxMDcyNjQsIDEwNzI2OSwgMTA3Mjc0LCAxMDcyNzksIDEwNzI4NiwgMTA3MjkzLCAxMDcyOTgsIAotICAgIDEwNzMwMywgMTA3MzA4LCAxMDczMTMsIDEwNzMxOCwgMTA3MzIzLCAxMDczMjgsIDEwNzMzMywgMTA3MzM4LCAxMDczNDMsIAotICAgIDEwNzM0OCwgMTA3MzUzLCAxMDczNTgsIDEwNzM2MywgMTA3MzY4LCAxMDczNzMsIDEwNzM3OCwgMTA3MzgzLCAxMDczODgsIAotICAgIDEwNzM5NSwgMTA3NDAwLCAxMDc0MDUsIDEwNzQxNCwgMTA3NDIxLCAxMDc0MjYsIDEwNzQzMSwgMTA3NDM2LCAxMDc0NDEsIAotICAgIDEwNzQ0NiwgMTA3NDUxLCAxMDc0NTYsIDEwNzQ2MSwgMTA3NDY2LCAxMDc0NzEsIDEwNzQ3NiwgMTA3NDgxLCAxMDc0ODYsIAotICAgIDEwNzQ5MSwgMTA3NDk2LCAxMDc1MDEsIDEwNzUwNiwgMTA3NTExLCAxMDc1MTYsIDEwNzUyMSwgMTA3NTI2LCAxMDc1MzIsIAotICAgIDEwNzU0MCwgMTA3NTQ2LCAxMDc1NTQsIDEwNzU2MiwgMTA3NTcwLCAxMDc1NzYsIDEwNzU4MiwgMTA3NTg4LCAxMDc1OTQsIAotICAgIDEwNzYwMCwgMTA3NjA4LCAxMDc2MTgsIDEwNzYyNiwgMTA3NjM0LCAxMDc2NDAsIDEwNzY0NiwgMTA3NjU0LCAxMDc2NjIsIAotICAgIDEwNzY2OCwgMTA3Njc2LCAxMDc2ODQsIDEwNzY5MiwgMTA3Njk4LCAxMDc3MDQsIDEwNzcxMCwgMTA3NzE2LCAxMDc3MjIsIAotICAgIDEwNzcyOCwgMTA3NzM2LCAxMDc3NDQsIDEwNzc1MCwgMTA3NzU2LCAxMDc3NjIsIDEwNzc2OCwgMTA3Nzc0LCAxMDc3ODIsIAotICAgIDEwNzc4OCwgMTA3Nzk0LCAxMDc4MDAsIDEwNzgwNiwgMTA3ODEyLCAxMDc4MTgsIDEwNzgyNiwgMTA3ODMyLCAxMDc4MzgsIAotICAgIDEwNzg0NCwgMTA3ODUwLCAxMDc4NTgsIDEwNzg2NiwgMTA3ODcyLCAxMDc4NzgsIDEwNzg4NCwgMTA3ODg5LCAxMDc4OTUsIAotICAgIDEwNzkwMSwgMTA3OTA4LCAxMDc5MTMsIDEwNzkxOCwgMTA3OTIzLCAxMDc5MjgsIDEwNzkzMywgMTA3OTM4LCAxMDc5NDMsIAotICAgIDEwNzk0OCwgMTA3OTUzLCAxMDc5NjIsIDEwNzk2OSwgMTA3OTc0LCAxMDc5NzksIDEwNzk4NCwgMTA3OTkxLCAxMDc5OTYsIAotICAgIDEwODAwMSwgMTA4MDA2LCAxMDgwMTMsIDEwODAxOCwgMTA4MDIzLCAxMDgwMjgsIDEwODAzMywgMTA4MDM4LCAxMDgwNDMsIAotICAgIDEwODA0OCwgMTA4MDUzLCAxMDgwNTgsIDEwODA2MywgMTA4MDY4LCAxMDgwNzUsIDEwODA4MCwgMTA4MDg3LCAxMDgwOTIsIAotICAgIDEwODA5NywgMTA4MTA0LCAxMDgxMDksIDEwODExNCwgMTA4MTE5LCAxMDgxMjQsIDEwODEyOSwgMTA4MTM0LCAxMDgxMzksIAotICAgIDEwODE0NCwgMTA4MTQ5LCAxMDgxNTQsIDEwODE1OSwgMTA4MTY0LCAxMDgxNjksIDEwODE3NCwgMTA4MTc5LCAxMDgxODQsIAotICAgIDEwODE4OSwgMTA4MTk0LCAxMDgxOTksIDEwODIwNiwgMTA4MjExLCAxMDgyMTYsIDEwODIyMSwgMTA4MjI2LCAxMDgyMzEsIAotICAgIDEwODIzNiwgMTA4MjQxLCAxMDgyNDYsIDEwODI1MSwgMTA4MjU2LCAxMDgyNjEsIDEwODI2NiwgMTA4MjcxLCAxMDgyNzgsIAotICAgIDEwODI4MywgMTA4Mjg4LCAxMDgyOTUsIDEwODMwMCwgMTA4MzA1LCAxMDgzMTAsIDEwODMxNSwgMTA4MzIwLCAxMDgzMjUsIAotICAgIDEwODMzMCwgMTA4MzM1LCAxMDgzNDAsIDEwODM0NSwgMTA4MzUyLCAxMDgzNTcsIDEwODM2MiwgMTA4MzY3LCAxMDgzNzIsIAotICAgIDEwODM3NywgMTA4Mzg0LCAxMDgzOTEsIDEwODM5NiwgMTA4NDAxLCAxMDg0MDYsIDEwODQxMSwgMTA4NDE2LCAxMDg0MjEsIAotICAgIDEwODQyNiwgMTA4NDMxLCAxMDg0MzYsIDEwODQ0MSwgMTA4NDQ2LCAxMDg0NTEsIDEwODQ1NiwgMTA4NDYxLCAxMDg0NjYsIAotICAgIDEwODQ3MSwgMTA4NDc2LCAxMDg0ODEsIDEwODQ4NiwgMTA4NDkxLCAxMDg0OTYsIDEwODUwMSwgMTA4NTA2LCAxMDg1MTEsIAotICAgIDEwODUxNiwgMTA4NTIxLCAxMDg1MjYsIDEwODUzMSwgMTA4NTM2LCAxMDg1NDEsIDEwODU0NiwgMTA4NTUxLCAxMDg1NTYsIAotICAgIDEwODU2MSwgMTA4NTY2LCAxMDg1NzEsIDEwODU3OCwgMTA4NTgzLCAxMDg1ODgsIDEwODU5MywgMTA4NTk4LCAxMDg2MDMsIAotICAgIDEwODYwOCwgMTA4NjEzLCAxMDg2MTgsIDEwODYyMywgMTA4NjI4LCAxMDg2MzMsIDEwODYzOCwgMTA4NjQzLCAxMDg2NDgsIAotICAgIDEwODY1MywgMTA4NjU4LCAxMDg2NjMsIDEwODY2OCwgMTA4NjczLCAxMDg2NzgsIDEwODY4MywgMTA4Njg4LCAxMDg2OTMsIAotICAgIDEwODY5OCwgMTA4NzAzLCAxMDg3MDgsIDEwODcxMywgMTA4NzE4LCAxMDg3MjMsIDEwODcyOCwgMTA4NzMzLCAxMDg3MzgsIAotICAgIDEwODc0MywgMTA4NzQ4LCAxMDg3NTMsIDEwODc1OCwgMTA4NzYzLCAxMDg3NjgsIDEwODc3MywgMTA4Nzc4LCAxMDg3ODMsIAotICAgIDEwODc4OCwgMTA4NzkzLCAxMDg3OTgsIDEwODgwMywgMTA4ODA4LCAxMDg4MTMsIDEwODgxOCwgMTA4ODIzLCAxMDg4MjgsIAotICAgIDEwODgzMywgMTA4ODM4LCAxMDg4NDMsIDEwODg0OCwgMTA4ODUzLCAxMDg4NTgsIDEwODg2MywgMTA4ODY4LCAxMDg4NzUsIAotICAgIDEwODg4MCwgMTA4ODg1LCAxMDg4OTAsIDEwODg5NSwgMTA4OTAwLCAxMDg5MDUsIDEwODkwOSwgMTA4OTE0LCAxMDg5MTksIAotICAgIDEwODkyNCwgMTA4OTI5LCAxMDg5MzQsIDEwODkzOSwgMTA4OTQ0LCAxMDg5NDksIDEwODk1NCwgMTA4OTU5LCAxMDg5NjQsIAotICAgIDEwODk2OSwgMTA4OTc0LCAxMDg5NzksIDEwODk4NiwgMTA4OTkxLCAxMDg5OTYsIDEwOTAwMiwgMTA5MDA3LCAxMDkwMTIsIAotICAgIDEwOTAxNywgMTA5MDIyLCAxMDkwMjcsIDEwOTAzMiwgMTA5MDM3LCAxMDkwNDIsIDEwOTA0NywgMTA5MDUyLCAxMDkwNTcsIAotICAgIDEwOTA2MiwgMTA5MDY3LCAxMDkwNzIsIDEwOTA3NywgMTA5MDgyLCAxMDkwODcsIDEwOTA5MiwgMTA5MDk3LCAxMDkxMDIsIAotICAgIDEwOTEwNywgMTA5MTEyLCAxMDkxMTcsIDEwOTEyMiwgMTA5MTI3LCAxMDkxMzIsIDEwOTEzNywgMTA5MTQyLCAxMDkxNDcsIAotICAgIDEwOTE1MiwgMTA5MTU3LCAxMDkxNjIsIDEwOTE2NywgMTA5MTcyLCAxMDkxNzcsIDEwOTE4MiwgMTA5MTg3LCAxMDkxOTIsIAotICAgIDEwOTE5NywgMTA5MjAyLCAxMDkyMDcsIDEwOTIxMiwgMTA5MjE3LCAxMDkyMjQsIDEwOTIyOSwgMTA5MjM0LCAxMDkyNDEsIAotICAgIDEwOTI0OCwgMTA5MjUzLCAxMDkyNTgsIDEwOTI2MywgMTA5MjY4LCAxMDkyNzMsIDEwOTI3OCwgMTA5MjgzLCAxMDkyODgsIAotICAgIDEwOTI5MywgMTA5Mjk4LCAxMDkzMDMsIDEwOTMwOCwgMTA5MzEzLCAxMDkzMTgsIDEwOTMyMywgMTA5MzI4LCAxMDkzMzMsIAotICAgIDEwOTMzOCwgMTA5MzQzLCAxMDkzNDgsIDEwOTM1MywgMTA5MzU4LCAxMDkzNjMsIDEwOTM2OCwgMTA5MzczLCAxMDkzODAsIAotICAgIDEwOTM4NSwgMTA5MzkwLCAxMDkzOTUsIDEwOTQwMCwgMTA5NDA1LCAxMDk0MTAsIDEwOTQxNSwgMTA5NDIwLCAxMDk0MjUsIAotICAgIDEwOTQzMCwgMTA5NDM1LCAxMDk0NDAsIDEwOTQ0NSwgMTA5NDUwLCAxMDk0NTUsIDEwOTQ2MCwgMTA5NDY1LCAxMDk0NzAsIAotICAgIDEwOTQ3NywgMTA5NDgyLCAxMDk0ODcsIDEwOTQ5MiwgMTA5NDk3LCAxMDk1MDIsIDEwOTUwNywgMTA5NTEyLCAxMDk1MTgsIAotICAgIDEwOTUyMywgMTA5NTI4LCAxMDk1MzMsIDEwOTUzOCwgMTA5NTQzLCAxMDk1NDgsIDEwOTU1MywgMTA5NTU4LCAxMDk1NjUsIAotICAgIDEwOTU3MiwgMTA5NTc3LCAxMDk1ODIsIDEwOTU4NiwgMTA5NTkxLCAxMDk1OTUsIDEwOTU5OSwgMTA5NjA0LCAxMDk2MTEsIAotICAgIDEwOTYxNiwgMTA5NjIxLCAxMDk2MzAsIDEwOTYzNSwgMTA5NjQwLCAxMDk2NDUsIDEwOTY1MCwgMTA5NjU3LCAxMDk2NjQsIAotICAgIDEwOTY2OSwgMTA5Njc0LCAxMDk2NzksIDEwOTY4NCwgMTA5NjkxLCAxMDk2OTYsIDEwOTcwMSwgMTA5NzA2LCAxMDk3MTEsIAotICAgIDEwOTcxNiwgMTA5NzIxLCAxMDk3MjYsIDEwOTczMSwgMTA5NzM2LCAxMDk3NDEsIDEwOTc0NiwgMTA5NzUxLCAxMDk3NTgsIAotICAgIDEwOTc2MiwgMTA5NzY3LCAxMDk3NzIsIDEwOTc3NywgMTA5NzgyLCAxMDk3ODYsIDEwOTc5MSwgMTA5Nzk2LCAxMDk4MDEsIAotICAgIDEwOTgwNiwgMTA5ODExLCAxMDk4MTYsIDEwOTgyMSwgMTA5ODI2LCAxMDk4MzEsIDEwOTgzNywgMTA5ODQzLCAxMDk4NDksIAotICAgIDEwOTg1NSwgMTA5ODYxLCAxMDk4NjcsIDEwOTg3MywgMTA5ODc5LCAxMDk4ODUsIDEwOTg5MSwgMTA5ODk3LCAxMDk5MDMsIAotICAgIDEwOTkwOCwgMTA5OTE0LCAxMDk5MjAsIDEwOTkyNiwgMTA5OTMyLCAxMDk5MzgsIDEwOTk0NCwgMTA5OTUwLCAxMDk5NTYsIAotICAgIDEwOTk2MiwgMTA5OTY4LCAxMDk5NzQsIDEwOTk3OSwgMTA5OTg1LCAxMDk5OTEsIDEwOTk5NywgMTEwMDAzLCAxMTAwMDksIAotICAgIDExMDAxNSwgMTEwMDIxLCAxMTAwMjcsIDExMDAzMywgMTEwMDM5LCAxMTAwNDUsIDExMDA1MSwgMTEwMDU3LCAxMTAwNjMsIAotICAgIDExMDA2OSwgMTEwMDc1LCAxMTAwODEsIDExMDA4NywgMTEwMDkzLCAxMTAwOTksIDExMDEwNCwgMTEwMTEwLCAxMTAxMTYsIAotICAgIDExMDEyMiwgMTEwMTI4LCAxMTAxMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDE0MCwgMTEwMTQzLCAxMTAxNDcsIDExMDE1MSwgMTEwMTU1LCAxMTAxNTgsIAotICAgIDExMDE2MiwgMTEwMTY3LCAxMTAxNzEsIDExMDE3NSwgMTEwMTc5LCAxMTAxODMsIDExMDE4NywgMTEwMTkyLCAxMTAxOTcsIAotICAgIDExMDIwMSwgMTEwMjA1LCAxMTAyMDgsIDExMDIxMiwgMTEwMjE3LCAxMTAyMjIsIDExMDIyNiwgMTEwMjMwLCAxMTAyMzQsIAotICAgIDExMDIzOCwgMTEwMjQyLCAxMTAyNDYsIDExMDI1MCwgMTEwMjU0LCAxMTAyNTgsIDExMDI2MiwgMTEwMjY1LCAxMTAyNjksIAotICAgIDExMDI3MywgMTEwMjc3LCAxMTAyODEsIDExMDI4NSwgMTEwMjg5LCAxMTAyOTUsIDExMDI5OCwgMTEwMzAyLCAxMTAzMDYsIAotICAgIDExMDMxMCwgMTEwMzE0LCAxMTAzMTgsIDExMDMyMiwgMTEwMzI2LCAxMTAzMzAsIDExMDMzNCwgMTEwMzM5LCAxMTAzNDQsIAotICAgIDExMDM1MCwgMTEwMzU0LCAxMTAzNTgsIDExMDM2MiwgMTEwMzY2LCAxMTAzNzAsIDExMDM3NCwgMTEwMzc5LCAxMTAzODIsIAotICAgIDExMDM4NiwgMTEwMzkwLCAxMTAzOTQsIDExMDM5OCwgMTEwNDA0LCAxMTA0MDgsIDExMDQxMiwgMTEwNDE2LCAxMTA0MjAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDQyNCwgMTEwNDI4LCAxMTA0MzIsIDExMDQzOCwgMTEwNDQ0LCAKLSAgICAxMTA0NDgsIDExMDQ1MywgMTEwNDU4LCAxMTA0NjMsIDExMDQ2OCwgMTEwNDcyLCAxMTA0NzcsIDExMDQ4MiwgMTEwNDg3LCAKLSAgICAxMTA0OTEsIDExMDQ5NiwgMTEwNTAxLCAxMTA1MDYsIDExMDUxMCwgMTEwNTE1LCAxMTA1MjAsIDExMDUyNSwgMTEwNTMwLCAKLSAgICAxMTA1MzUsIDExMDU0MCwgMTEwNTQ1LCAxMTA1NTAsIDExMDU1NCwgMTEwNTU5LCAxMTA1NjQsIDExMDU2OSwgMTEwNTc0LCAKLSAgICAxMTA1NzksIDExMDU4NCwgMTEwNTg5LCAxMTA1OTQsIDExMDU5OSwgMTEwNjA0LCAxMTA2MDksIDExMDYxNiwgMTEwNjIxLCAKLSAgICAxMTA2MjgsIDExMDYzMywgMTEwNjM4LCAxMTA2NDMsIDExMDY0OCwgMTEwNjUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTA2NTgsIDExMDY2MiwgMTEwNjY4LCAxMTA2NzEsIDExMDY3NCwgMTEwNjc4LCAKLSAgICAxMTA2ODIsIDExMDY4NiwgMTEwNjkwLCAxMTA2OTQsIDExMDY5OCwgMTEwNzAyLCAxMTA3MDgsIDExMDcxNCwgMTEwNzIwLCAKLSAgICAxMTA3MjYsIDExMDczMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTEwNzM4LCAxMTA3NDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDc0OSwgMTEwNzU0LCAxMTA3NTksIAotICAgIDExMDc2NCwgMTEwNzcxLCAxMTA3NzgsIDExMDc4NSwgMTEwNzkyLCAxMTA3OTcsIDExMDgwMiwgMTEwODA3LCAxMTA4MTIsIAotICAgIDExMDgxOSwgMTEwODI0LCAxMTA4MzEsIDExMDgzOCwgMTEwODQzLCAxMTA4NDgsIDExMDg1MywgMTEwODYwLCAxMTA4NjUsIAotICAgIDExMDg3MCwgMTEwODc3LCAxMTA4ODQsIDExMDg4OSwgMTEwODk0LCAxMTA4OTksIDExMDkwNiwgMTEwOTEzLCAxMTA5MjAsIAotICAgIDExMDkyNSwgMTEwOTMwLCAxMTA5MzcsIDExMDk0NCwgMTEwOTUxLCAxMTA5NTgsIDExMDk2MywgMTEwOTY4LCAxMTA5NzMsIAotICAgIDExMDk4MCwgMTEwOTg1LCAxMTA5OTAsIDExMDk5NSwgMTExMDAyLCAxMTEwMTEsIDExMTAxOCwgMTExMDIzLCAxMTEwMjgsIAotICAgIDExMTAzMywgMTExMDM4LCAxMTEwNDMsIDExMTA0OCwgMTExMDU3LCAxMTEwNjQsIDExMTA2OSwgMTExMDc2LCAxMTEwODMsIAotICAgIDExMTA4OCwgMTExMDkzLCAxMTEwOTgsIDExMTEwNSwgMTExMTEwLCAxMTExMTcsIDExMTEyNCwgMTExMTI5LCAxMTExMzQsIAotICAgIDExMTEzOSwgMTExMTQ2LCAxMTExNTMsIDExMTE1OCwgMTExMTYzLCAxMTExNzAsIDExMTE3NywgMTExMTg0LCAxMTExODksIAotICAgIDExMTE5NCwgMTExMTk5LCAxMTEyMDQsIDExMTIxMSwgMTExMjIwLCAxMTEyMjksIDExMTIzNCwgMTExMjQxLCAxMTEyNTAsIAotICAgIDExMTI1NSwgMTExMjYwLCAxMTEyNjUsIDExMTI3MCwgMTExMjc3LCAxMTEyODQsIDExMTI5MSwgMTExMjk4LCAxMTEzMDMsIAotICAgIDExMTMwOCwgMTExMzEzLCAxMTEzMjAsIDExMTMyNywgMTExMzM0LCAxMTEzMzksIDExMTM0NCwgMTExMzUxLCAxMTEzNTYsIAotICAgIDExMTM2MywgMTExMzY4LCAxMTEzNzUsIDExMTM4MCwgMTExMzg3LCAxMTEzOTQsIDExMTM5OSwgMTExNDA0LCAxMTE0MDksIAotICAgIDExMTQxNCwgMTExNDE5LCAxMTE0MjQsIDExMTQyOSwgMTExNDM0LCAxMTE0MzksIDExMTQ0NiwgMTExNDUzLCAxMTE0NjAsIAotICAgIDExMTQ2NywgMTExNDc0LCAxMTE0ODMsIDExMTQ4OCwgMTExNDkzLCAxMTE1MDAsIDExMTUwNywgMTExNTEyLCAxMTE1MTksIAotICAgIDExMTUyNiwgMTExNTMzLCAxMTE1NDAsIDExMTU0NywgMTExNTU0LCAxMTE1NTksIDExMTU2NCwgMTExNTY5LCAxMTE1NzQsIAotICAgIDExMTU3OSwgMTExNTg4LCAxMTE1OTcsIDExMTYwNiwgMTExNjE1LCAxMTE2MjQsIDExMTYzMywgMTExNjQyLCAxMTE2NTEsIAotICAgIDExMTY1NiwgMTExNjY3LCAxMTE2NzgsIDExMTY4NywgMTExNjkyLCAxMTE2OTcsIDExMTcwMiwgMTExNzA3LCAxMTE3MTYsIAotICAgIDExMTcyMywgMTExNzMwLCAxMTE3MzcsIDExMTc0NCwgMTExNzUxLCAxMTE3NTgsIDExMTc2NywgMTExNzc2LCAxMTE3ODcsIAotICAgIDExMTc5NiwgMTExODA3LCAxMTE4MTYsIDExMTgyMywgMTExODMyLCAxMTE4NDMsIDExMTg1MiwgMTExODYxLCAxMTE4NzAsIAotICAgIDExMTg3OSwgMTExODg2LCAxMTE4OTMsIDExMTkwMCwgMTExOTA5LCAxMTE5MTgsIDExMTkyOSwgMTExOTM4LCAxMTE5NDcsIAotICAgIDExMTk1OCwgMTExOTYzLCAxMTE5NjgsIDExMTk3OSwgMTExOTg3LCAxMTE5OTYsIDExMjAwNSwgMTEyMDE0LCAxMTIwMjUsIAotICAgIDExMjAzNCwgMTEyMDQzLCAxMTIwNTQsIDExMjA2NSwgMTEyMDc2LCAxMTIwODcsIDExMjA5OCwgMTEyMTA5LCAxMTIxMTYsIAotICAgIDExMjEyMywgMTEyMTMwLCAxMTIxMzcsIDExMjE0OCwgMTEyMTU3LCAxMTIxNjQsIDExMjE3MSwgMTEyMTc4LCAxMTIxODksIAotICAgIDExMjIwMCwgMTEyMjExLCAxMTIyMjIsIDExMjIzMywgMTEyMjQ0LCAxMTIyNTUsIDExMjI2NiwgMTEyMjczLCAxMTIyODAsIAotICAgIDExMjI4OSwgMTEyMjk4LCAxMTIzMDUsIDExMjMxMiwgMTEyMzE5LCAxMTIzMjgsIDExMjMzNywgMTEyMzQ2LCAxMTIzNTMsIAotICAgIDExMjM2MiwgMTEyMzcxLCAxMTIzODAsIDExMjM4NywgMTEyMzk0LCAxMTIzOTksIDExMjQwNSwgMTEyNDEyLCAxMTI0MTksIAotICAgIDExMjQyNiwgMTEyNDMzLCAxMTI0NDAsIDExMjQ0NywgMTEyNDU2LCAxMTI0NjUsIDExMjQ3NCwgMTEyNDgzLCAxMTI0OTAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMjQ5OSwgMTEyNTA1LCAxMTI1MTAsIDExMjUxNSwgMTEyNTIyLCAKLSAgICAxMTI1MjgsIDExMjUzNCwgMTEyNTQwLCAxMTI1NDYsIDExMjU1MiwgMTEyNTU4LCAxMTI1NjQsIDExMjU2OCwgMTEyNTcyLCAKLSAgICAxMTI1NzgsIDExMjU4NCwgMTEyNTkwLCAxMTI1OTQsIDExMjU5OSwgMTEyNjA0LCAxMTI2MDgsIDExMjYxMiwgMTEyNjE1LCAKLSAgICAxMTI2MjEsIDExMjYyNywgMTEyNjMzLCAxMTI2MzksIDExMjY0NSwgMTEyNjUxLCAxMTI2NTcsIDExMjY2MywgMTEyNjY5LCAKLSAgICAxMTI2NzksIDExMjY4OSwgMTEyNjk1LCAxMTI3MDEsIDExMjcxMSwgMTEyNzIxLCAxMTI3MjcsIDAsIDAsIDExMjczMywgCi0gICAgMTEyNzQxLCAxMTI3NDYsIDExMjc1MSwgMTEyNzU3LCAxMTI3NjMsIDExMjc2OSwgMTEyNzc1LCAxMTI3ODEsIDExMjc4NywgCi0gICAgMTEyNzk0LCAxMTI4MDEsIDExMjgwNywgMTEyODEzLCAxMTI4MTksIDExMjgyNSwgMTEyODMxLCAxMTI4MzcsIDExMjg0MywgCi0gICAgMTEyODQ5LCAxMTI4NTQsIDExMjg2MCwgMTEyODY2LCAxMTI4NzIsIDExMjg3OCwgMTEyODg0LCAxMTI4OTMsIDExMjg5OSwgCi0gICAgMTEyOTA0LCAxMTI5MTIsIDExMjkxOSwgMTEyOTI2LCAxMTI5MzUsIDExMjk0NCwgMTEyOTUzLCAxMTI5NjIsIDExMjk3MSwgCi0gICAgMTEyOTgwLCAxMTI5ODksIDExMjk5OCwgMTEzMDA4LCAxMTMwMTgsIDExMzAyNiwgMTEzMDM0LCAxMTMwNDMsIDExMzA1MiwgCi0gICAgMTEzMDU4LCAxMTMwNjQsIDExMzA3MCwgMTEzMDc2LCAxMTMwODQsIDExMzA5MiwgMTEzMDk2LCAxMTMxMDIsIDExMzEwNywgCi0gICAgMTEzMTEzLCAxMTMxMTksIDExMzEyNSwgMTEzMTMxLCAxMTMxMzcsIDExMzE0NiwgMTEzMTUxLCAxMTMxNTgsIDExMzE2MywgCi0gICAgMTEzMTY4LCAxMTMxNzMsIDExMzE3OSwgMTEzMTg1LCAxMTMxOTEsIDExMzE5OCwgMTEzMjAzLCAxMTMyMDgsIDExMzIxMywgCi0gICAgMTEzMjE4LCAxMTMyMjMsIDExMzIyOSwgMTEzMjM1LCAxMTMyNDEsIDExMzI0NywgMTEzMjUzLCAxMTMyNTksIDExMzI2NSwgCi0gICAgMTEzMjcxLCAxMTMyNzYsIDExMzI4MSwgMTEzMjg2LCAxMTMyOTEsIDExMzI5NiwgMTEzMzAxLCAxMTMzMDYsIDExMzMxMSwgCi0gICAgMTEzMzE3LCAxMTMzMjMsIDExMzMyOCwgMTEzMzMzLCAxMTMzMzgsIDExMzM0MywgMTEzMzQ4LCAxMTMzNTQsIDExMzM2MSwgCi0gICAgMTEzMzY1LCAxMTMzNjksIDExMzM3MywgMTEzMzc3LCAxMTMzODEsIDExMzM4NSwgMTEzMzg5LCAxMTMzOTMsIDExMzQwMSwgCi0gICAgMTEzNDExLCAxMTM0MTUsIDExMzQxOSwgMTEzNDI1LCAxMTM0MzEsIDExMzQzNywgMTEzNDQzLCAxMTM0NDksIDExMzQ1NSwgCi0gICAgMTEzNDYxLCAxMTM0NjcsIDExMzQ3MywgMTEzNDc5LCAxMTM0ODUsIDExMzQ5MSwgMTEzNDk3LCAxMTM1MDMsIDExMzUwNywgCi0gICAgMTEzNTExLCAxMTM1MTgsIDExMzUyNCwgMTEzNTMwLCAxMTM1MzYsIDExMzU0MSwgMTEzNTQ4LCAxMTM1NTMsIDExMzU1OSwgCi0gICAgMTEzNTY1LCAxMTM1NzEsIDExMzU3NywgMTEzNTgyLCAxMTM1ODYsIDExMzU5MiwgMTEzNTk2LCAxMTM2MDAsIDExMzYwNCwgCi0gICAgMTEzNjEwLCAxMTM2MTYsIDExMzYyMCwgMTEzNjI2LCAxMTM2MzIsIDExMzYzOCwgMTEzNjQ0LCAxMTM2NTAsIDExMzY1OCwgCi0gICAgMTEzNjY2LCAxMTM2NzIsIDExMzY3OCwgMTEzNjg0LCAxMTM2OTAsIDExMzcwMiwgMTEzNzE0LCAxMTM3MjgsIDExMzc0MCwgCi0gICAgMTEzNzUyLCAxMTM3NjYsIDExMzc4MCwgMTEzNzk0LCAxMTM3OTgsIDExMzgwNiwgMTEzODE0LCAxMTM4MTksIDExMzgyMywgCi0gICAgMTEzODI3LCAxMTM4MzEsIDExMzgzNSwgMTEzODM5LCAxMTM4NDMsIDExMzg0NywgMTEzODUzLCAxMTM4NTksIDExMzg2NSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEzODcxLCAxMTM4NzcsIDExMzg4MywgMTEzODg5LCAxMTM4OTUsIAotICAgIDExMzkwMSwgMTEzOTA3LCAxMTM5MTMsIDExMzkxOSwgMTEzOTI1LCAxMTM5MzEsIDExMzkzNywgMTEzOTQzLCAxMTM5NDksIAotICAgIDExMzk1NSwgMTEzOTYxLCAxMTM5NjcsIDExMzk3MywgMTEzOTc5LCAxMTM5ODUsIDExMzk5MSwgMTEzOTk3LCAxMTQwMDMsIAotICAgIDExNDAwOSwgMTE0MDE1LCAxMTQwMjEsIDExNDAyNywgMTE0MDMzLCAxMTQwMzksIDExNDA0NSwgMTE0MDUxLCAxMTQwNTcsIAotICAgIDExNDA2MywgMTE0MDY5LCAxMTQwNzUsIDExNDA4MSwgMTE0MDg3LCAxMTQwOTMsIDExNDA5OSwgMTE0MTA1LCAxMTQxMTEsIAotICAgIDExNDExNywgMTE0MTIzLCAxMTQxMjksIDExNDEzNSwgMTE0MTQxLCAxMTQxNDcsIDExNDE1MywgMTE0MTU5LCAxMTQxNjUsIAotICAgIDExNDE3MSwgMTE0MTc3LCAxMTQxODMsIDExNDE4OSwgMTE0MTk1LCAxMTQyMDEsIDExNDIwNywgMTE0MjEzLCAxMTQyMTksIAotICAgIDExNDIyNSwgMTE0MjMxLCAxMTQyMzcsIDExNDI0MywgMTE0MjQ5LCAxMTQyNTUsIDExNDI2MSwgMTE0MjY3LCAxMTQyNzIsIAotICAgIDExNDI3NywgMTE0MjgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTQyODYsIDExNDI5MSwgMTE0Mjk4LCAKLSAgICAxMTQzMDUsIDExNDMxMiwgMTE0MzE5LCAxMTQzMjQsIDExNDMyOCwgMTE0MzM0LCAxMTQzMzgsIDExNDM0MiwgMTE0MzQ4LCAKLSAgICAxMTQzNTIsIDExNDM1NiwgMTE0MzYwLCAxMTQzNjYsIDExNDM3MywgMTE0Mzc3LCAxMTQzODEsIDExNDM4NSwgMTE0Mzg5LCAKLSAgICAxMTQzOTMsIDExNDM5NywgMTE0NDAzLCAxMTQ0MDcsIDExNDQxMSwgMTE0NDE1LCAxMTQ0MTksIDExNDQyMywgMTE0NDI3LCAKLSAgICAxMTQ0MzEsIDExNDQzNSwgMTE0NDM5LCAxMTQ0NDMsIDExNDQ0NywgMTE0NDUxLCAxMTQ0NTYsIDExNDQ2MCwgMTE0NDY0LCAKLSAgICAxMTQ0NjgsIDExNDQ3MiwgMTE0NDc2LCAxMTQ0ODAsIDExNDQ4NCwgMTE0NDg4LCAxMTQ0OTIsIDExNDQ5OSwgMTE0NTAzLCAKLSAgICAxMTQ1MTEsIDExNDUxNSwgMTE0NTE5LCAxMTQ1MjMsIDExNDUyNywgMTE0NTMxLCAxMTQ1MzUsIDExNDUzOSwgMTE0NTQ2LCAKLSAgICAxMTQ1NTAsIDExNDU1NCwgMTE0NTU4LCAxMTQ1NjIsIDExNDU2NiwgMTE0NTcyLCAxMTQ1NzYsIDExNDU4MiwgMTE0NTg2LCAKLSAgICAxMTQ1OTAsIDExNDU5NCwgMTE0NTk4LCAxMTQ2MDIsIDExNDYwNiwgMTE0NjEwLCAxMTQ2MTQsIDExNDYxOCwgMTE0NjIyLCAKLSAgICAxMTQ2MjYsIDExNDYzMCwgMTE0NjM0LCAxMTQ2MzgsIDExNDY0MiwgMTE0NjQ2LCAxMTQ2NTAsIDExNDY1NCwgMTE0NjU4LCAKLSAgICAxMTQ2NjYsIDExNDY3MCwgMTE0Njc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTQ2NzgsIDExNDY4NiwgCi0gICAgMTE0Njk0LCAxMTQ3MDIsIDExNDcxMCwgMTE0NzE4LCAxMTQ3MjYsIDExNDczNCwgMTE0NzQyLCAxMTQ3NTAsIDExNDc1OCwgCi0gICAgMTE0NzY2LCAxMTQ3NzQsIDExNDc4MiwgMTE0NzkwLCAxMTQ3OTgsIDExNDgwNiwgMTE0ODE0LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTQ4MjIsIDExNDgyNiwgMTE0ODMxLCAxMTQ4MzYsIDExNDg0MSwgMTE0ODQ1LCAKLSAgICAxMTQ4NTAsIDExNDg1NSwgMTE0ODYwLCAxMTQ4NjQsIDExNDg2OSwgMTE0ODc0LCAxMTQ4NzgsIDExNDg4MiwgMTE0ODg3LCAKLSAgICAxMTQ4OTEsIDExNDg5NiwgMTE0OTAxLCAxMTQ5MDUsIDExNDkxMCwgMTE0OTE1LCAxMTQ5MTksIDExNDkyNCwgMTE0OTI5LCAKLSAgICAxMTQ5MzQsIDExNDkzOSwgMTE0OTQ0LCAxMTQ5NDgsIDExNDk1MywgMTE0OTU4LCAxMTQ5NjMsIDExNDk2NywgMTE0OTcyLCAKLSAgICAxMTQ5NzcsIDExNDk4MiwgMTE0OTg2LCAxMTQ5OTEsIDExNDk5NiwgMTE1MDAwLCAxMTUwMDQsIDExNTAwOSwgMTE1MDEzLCAKLSAgICAxMTUwMTgsIDExNTAyMywgMTE1MDI3LCAxMTUwMzIsIDExNTAzNywgMTE1MDQxLCAxMTUwNDYsIDExNTA1MSwgMTE1MDU2LCAKLSAgICAxMTUwNjEsIDExNTA2NiwgMTE1MDcwLCAxMTUwNzUsIDExNTA4MCwgMTE1MDg1LCAxMTUwODksIDExNTA5NCwgMTE1MDk5LCAKLSAgICAxMTUxMDQsIDExNTEwOCwgMTE1MTEzLCAxMTUxMTgsIDExNTEyMiwgMTE1MTI2LCAxMTUxMzEsIDExNTEzNSwgMTE1MTQwLCAKLSAgICAxMTUxNDUsIDExNTE0OSwgMTE1MTU0LCAxMTUxNTksIDExNTE2MywgMTE1MTY4LCAxMTUxNzMsIDExNTE3OCwgMTE1MTgzLCAKLSAgICAxMTUxODgsIDExNTE5MiwgMTE1MTk3LCAxMTUyMDIsIDExNTIwNywgMTE1MjExLCAxMTUyMTYsIDAsIDExNTIyMSwgCi0gICAgMTE1MjI1LCAxMTUyMzAsIDExNTIzNSwgMTE1MjM5LCAxMTUyNDMsIDExNTI0OCwgMTE1MjUyLCAxMTUyNTcsIDExNTI2MiwgCi0gICAgMTE1MjY2LCAxMTUyNzEsIDExNTI3NiwgMTE1MjgwLCAxMTUyODUsIDExNTI5MCwgMTE1Mjk1LCAxMTUzMDAsIDExNTMwNSwgCi0gICAgMTE1MzEwLCAxMTUzMTYsIDExNTMyMiwgMTE1MzI4LCAxMTUzMzMsIDExNTMzOSwgMTE1MzQ1LCAxMTUzNTEsIDExNTM1NiwgCi0gICAgMTE1MzYyLCAxMTUzNjgsIDExNTM3MywgMTE1Mzc4LCAxMTUzODQsIDExNTM4OSwgMTE1Mzk1LCAxMTU0MDEsIDExNTQwNiwgCi0gICAgMTE1NDEyLCAxMTU0MTgsIDExNTQyMywgMTE1NDI5LCAxMTU0MzUsIDExNTQ0MSwgMTE1NDQ3LCAxMTU0NTMsIDExNTQ1OCwgCi0gICAgMTE1NDY0LCAxMTU0NzAsIDExNTQ3NiwgMTE1NDgxLCAxMTU0ODcsIDExNTQ5MywgMTE1NDk5LCAxMTU1MDQsIDExNTUxMCwgCi0gICAgMTE1NTE2LCAxMTU1MjEsIDExNTUyNiwgMTE1NTMyLCAxMTU1MzcsIDExNTU0MywgMTE1NTQ5LCAxMTU1NTQsIDExNTU2MCwgCi0gICAgMTE1NTY2LCAxMTU1NzEsIDExNTU3NywgMTE1NTgzLCAxMTU1ODksIDExNTU5NSwgMTE1NjAxLCAwLCAxMTU2MDUsIAotICAgIDExNTYxMCwgMCwgMCwgMTE1NjE1LCAwLCAwLCAxMTU2MjAsIDExNTYyNSwgMCwgMCwgMTE1NjMwLCAxMTU2MzUsIDExNTYzOSwgCi0gICAgMTE1NjQ0LCAwLCAxMTU2NDksIDExNTY1NCwgMTE1NjU5LCAxMTU2NjMsIDExNTY2OCwgMTE1NjczLCAxMTU2NzgsIAotICAgIDExNTY4MywgMTE1Njg4LCAxMTU2OTIsIDExNTY5NywgMTE1NzAyLCAwLCAxMTU3MDcsIDAsIDExNTcxMiwgMTE1NzE3LCAKLSAgICAxMTU3MjEsIDExNTcyNiwgMTE1NzMxLCAxMTU3MzUsIDExNTczOSwgMCwgMTE1NzQ0LCAxMTU3NDksIDExNTc1NCwgCi0gICAgMTE1NzU4LCAxMTU3NjMsIDExNTc2OCwgMTE1NzcyLCAxMTU3NzcsIDExNTc4MiwgMTE1Nzg3LCAxMTU3OTIsIDExNTc5NywgCi0gICAgMTE1ODAyLCAxMTU4MDgsIDExNTgxNCwgMTE1ODIwLCAxMTU4MjUsIDExNTgzMSwgMTE1ODM3LCAxMTU4NDMsIDExNTg0OCwgCi0gICAgMTE1ODU0LCAxMTU4NjAsIDExNTg2NSwgMTE1ODcwLCAxMTU4NzYsIDExNTg4MSwgMTE1ODg3LCAxMTU4OTMsIDExNTg5OCwgCi0gICAgMTE1OTA0LCAxMTU5MTAsIDExNTkxNSwgMTE1OTIxLCAxMTU5MjcsIDExNTkzMywgMTE1OTM5LCAxMTU5NDUsIDExNTk1MCwgCi0gICAgMTE1OTU2LCAxMTU5NjIsIDExNTk2OCwgMTE1OTczLCAxMTU5NzksIDExNTk4NSwgMTE1OTkxLCAxMTU5OTYsIDExNjAwMiwgCi0gICAgMTE2MDA4LCAxMTYwMTMsIDExNjAxOCwgMTE2MDI0LCAxMTYwMjksIDExNjAzNSwgMTE2MDQxLCAxMTYwNDYsIDExNjA1MiwgCi0gICAgMTE2MDU4LCAxMTYwNjMsIDExNjA2OSwgMTE2MDc1LCAxMTYwODEsIDExNjA4NywgMTE2MDkzLCAxMTYwOTcsIDAsIAotICAgIDExNjEwMiwgMTE2MTA3LCAxMTYxMTEsIDExNjExNiwgMCwgMCwgMTE2MTIxLCAxMTYxMjYsIDExNjEzMSwgMTE2MTM1LCAKLSAgICAxMTYxMzksIDExNjE0NCwgMTE2MTQ4LCAxMTYxNTMsIDAsIDExNjE1OCwgMTE2MTYzLCAxMTYxNjgsIDExNjE3MiwgCi0gICAgMTE2MTc3LCAxMTYxODIsIDExNjE4NywgMCwgMTE2MTkyLCAxMTYxOTYsIDExNjIwMSwgMTE2MjA2LCAxMTYyMTEsIAotICAgIDExNjIxNSwgMTE2MjIwLCAxMTYyMjUsIDExNjIzMCwgMTE2MjM0LCAxMTYyMzksIDExNjI0NCwgMTE2MjQ4LCAxMTYyNTIsIAotICAgIDExNjI1NywgMTE2MjYxLCAxMTYyNjYsIDExNjI3MSwgMTE2Mjc1LCAxMTYyODAsIDExNjI4NSwgMTE2Mjg5LCAxMTYyOTQsIAotICAgIDExNjI5OSwgMTE2MzA0LCAxMTYzMDksIDExNjMxNCwgMTE2MzE4LCAwLCAxMTYzMjMsIDExNjMyOCwgMTE2MzMyLCAKLSAgICAxMTYzMzcsIDAsIDExNjM0MiwgMTE2MzQ2LCAxMTYzNTEsIDExNjM1NiwgMTE2MzYwLCAwLCAxMTYzNjQsIDAsIDAsIDAsIAotICAgIDExNjM2OCwgMTE2MzczLCAxMTYzNzgsIDExNjM4MiwgMTE2Mzg3LCAxMTYzOTIsIDExNjM5NywgMCwgMTE2NDAyLCAKLSAgICAxMTY0MDYsIDExNjQxMSwgMTE2NDE2LCAxMTY0MjEsIDExNjQyNSwgMTE2NDMwLCAxMTY0MzUsIDExNjQ0MCwgMTE2NDQ0LCAKLSAgICAxMTY0NDksIDExNjQ1NCwgMTE2NDU4LCAxMTY0NjIsIDExNjQ2NywgMTE2NDcxLCAxMTY0NzYsIDExNjQ4MSwgMTE2NDg1LCAKLSAgICAxMTY0OTAsIDExNjQ5NSwgMTE2NDk5LCAxMTY1MDQsIDExNjUwOSwgMTE2NTE0LCAxMTY1MTksIDExNjUyNCwgMTE2NTI5LCAKLSAgICAxMTY1MzUsIDExNjU0MSwgMTE2NTQ3LCAxMTY1NTIsIDExNjU1OCwgMTE2NTY0LCAxMTY1NzAsIDExNjU3NSwgMTE2NTgxLCAKLSAgICAxMTY1ODcsIDExNjU5MiwgMTE2NTk3LCAxMTY2MDMsIDExNjYwOCwgMTE2NjE0LCAxMTY2MjAsIDExNjYyNSwgMTE2NjMxLCAKLSAgICAxMTY2MzcsIDExNjY0MiwgMTE2NjQ4LCAxMTY2NTQsIDExNjY2MCwgMTE2NjY2LCAxMTY2NzIsIDExNjY3NywgMTE2NjgzLCAKLSAgICAxMTY2ODksIDExNjY5NSwgMTE2NzAwLCAxMTY3MDYsIDExNjcxMiwgMTE2NzE4LCAxMTY3MjMsIDExNjcyOSwgMTE2NzM1LCAKLSAgICAxMTY3NDAsIDExNjc0NSwgMTE2NzUxLCAxMTY3NTYsIDExNjc2MiwgMTE2NzY4LCAxMTY3NzMsIDExNjc3OSwgMTE2Nzg1LCAKLSAgICAxMTY3OTAsIDExNjc5NiwgMTE2ODAyLCAxMTY4MDgsIDExNjgxNCwgMTE2ODIwLCAxMTY4MjQsIDExNjgyOSwgMTE2ODM0LCAKLSAgICAxMTY4MzksIDExNjg0MywgMTE2ODQ4LCAxMTY4NTMsIDExNjg1OCwgMTE2ODYyLCAxMTY4NjcsIDExNjg3MiwgMTE2ODc2LCAKLSAgICAxMTY4ODAsIDExNjg4NSwgMTE2ODg5LCAxMTY4OTQsIDExNjg5OSwgMTE2OTAzLCAxMTY5MDgsIDExNjkxMywgMTE2OTE3LCAKLSAgICAxMTY5MjIsIDExNjkyNywgMTE2OTMyLCAxMTY5MzcsIDExNjk0MiwgMTE2OTQ2LCAxMTY5NTEsIDExNjk1NiwgMTE2OTYxLCAKLSAgICAxMTY5NjUsIDExNjk3MCwgMTE2OTc1LCAxMTY5ODAsIDExNjk4NCwgMTE2OTg5LCAxMTY5OTQsIDExNjk5OCwgMTE3MDAyLCAKLSAgICAxMTcwMDcsIDExNzAxMSwgMTE3MDE2LCAxMTcwMjEsIDExNzAyNSwgMTE3MDMwLCAxMTcwMzUsIDExNzAzOSwgMTE3MDQ0LCAKLSAgICAxMTcwNDksIDExNzA1NCwgMTE3MDU5LCAxMTcwNjQsIDExNzA2OSwgMTE3MDc1LCAxMTcwODEsIDExNzA4NywgMTE3MDkyLCAKLSAgICAxMTcwOTgsIDExNzEwNCwgMTE3MTEwLCAxMTcxMTUsIDExNzEyMSwgMTE3MTI3LCAxMTcxMzIsIDExNzEzNywgMTE3MTQzLCAKLSAgICAxMTcxNDgsIDExNzE1NCwgMTE3MTYwLCAxMTcxNjUsIDExNzE3MSwgMTE3MTc3LCAxMTcxODIsIDExNzE4OCwgMTE3MTk0LCAKLSAgICAxMTcyMDAsIDExNzIwNiwgMTE3MjEyLCAxMTcyMTcsIDExNzIyMywgMTE3MjI5LCAxMTcyMzUsIDExNzI0MCwgMTE3MjQ2LCAKLSAgICAxMTcyNTIsIDExNzI1OCwgMTE3MjYzLCAxMTcyNjksIDExNzI3NSwgMTE3MjgwLCAxMTcyODUsIDExNzI5MSwgMTE3Mjk2LCAKLSAgICAxMTczMDIsIDExNzMwOCwgMTE3MzEzLCAxMTczMTksIDExNzMyNSwgMTE3MzMwLCAxMTczMzYsIDExNzM0MiwgMTE3MzQ4LCAKLSAgICAxMTczNTQsIDExNzM2MCwgMTE3MzY1LCAxMTczNzEsIDExNzM3NywgMTE3MzgzLCAxMTczODgsIDExNzM5NCwgMTE3NDAwLCAKLSAgICAxMTc0MDYsIDExNzQxMSwgMTE3NDE3LCAxMTc0MjMsIDExNzQyOCwgMTE3NDMzLCAxMTc0MzksIDExNzQ0NCwgMTE3NDUwLCAKLSAgICAxMTc0NTYsIDExNzQ2MSwgMTE3NDY3LCAxMTc0NzMsIDExNzQ3OCwgMTE3NDg0LCAxMTc0OTAsIDExNzQ5NiwgMTE3NTAyLCAKLSAgICAxMTc1MDgsIDExNzUxMywgMTE3NTE5LCAxMTc1MjUsIDExNzUzMSwgMTE3NTM2LCAxMTc1NDIsIDExNzU0OCwgMTE3NTU0LCAKLSAgICAxMTc1NTksIDExNzU2NSwgMTE3NTcxLCAxMTc1NzYsIDExNzU4MSwgMTE3NTg3LCAxMTc1OTIsIDExNzU5OCwgMTE3NjA0LCAKLSAgICAxMTc2MDksIDExNzYxNSwgMTE3NjIxLCAxMTc2MjYsIDExNzYzMiwgMTE3NjM4LCAxMTc2NDQsIDExNzY1MCwgMTE3NjU2LCAKLSAgICAxMTc2NjIsIDExNzY2OSwgMTE3Njc2LCAxMTc2ODMsIDExNzY4OSwgMTE3Njk2LCAxMTc3MDMsIDExNzcxMCwgMTE3NzE2LCAKLSAgICAxMTc3MjMsIDExNzczMCwgMTE3NzM2LCAxMTc3NDIsIDExNzc0OSwgMTE3NzU1LCAxMTc3NjIsIDExNzc2OSwgMTE3Nzc1LCAKLSAgICAxMTc3ODIsIDExNzc4OSwgMTE3Nzk1LCAxMTc4MDIsIDExNzgwOSwgMTE3ODE2LCAxMTc4MjMsIDExNzgzMCwgMTE3ODM2LCAKLSAgICAxMTc4NDMsIDExNzg1MCwgMTE3ODU3LCAxMTc4NjMsIDExNzg3MCwgMTE3ODc3LCAxMTc4ODQsIDExNzg5MCwgMTE3ODk3LCAKLSAgICAxMTc5MDQsIDExNzkxMCwgMTE3OTE2LCAxMTc5MjMsIDExNzkyOSwgMTE3OTM2LCAxMTc5NDMsIDExNzk0OSwgMTE3OTU2LCAKLSAgICAxMTc5NjMsIDExNzk2OSwgMTE3OTc2LCAxMTc5ODMsIDExNzk5MCwgMTE3OTk3LCAxMTgwMDQsIDExODAwOSwgMTE4MDE1LCAKLSAgICAxMTgwMjEsIDExODAyNywgMTE4MDMyLCAxMTgwMzgsIDExODA0NCwgMTE4MDUwLCAxMTgwNTUsIDExODA2MSwgMTE4MDY3LCAKLSAgICAxMTgwNzIsIDExODA3NywgMTE4MDgzLCAxMTgwODgsIDExODA5NCwgMTE4MTAwLCAxMTgxMDUsIDExODExMSwgMTE4MTE3LCAKLSAgICAxMTgxMjIsIDExODEyOCwgMTE4MTM0LCAxMTgxNDAsIDExODE0NiwgMTE4MTUyLCAxMTgxNTcsIDExODE2MywgMTE4MTY5LCAKLSAgICAxMTgxNzUsIDExODE4MCwgMTE4MTg2LCAxMTgxOTIsIDExODE5OCwgMTE4MjAzLCAxMTgyMDksIDExODIxNSwgMTE4MjIwLCAKLSAgICAxMTgyMjUsIDExODIzMSwgMTE4MjM2LCAxMTgyNDIsIDExODI0OCwgMTE4MjUzLCAxMTgyNTksIDExODI2NSwgMTE4MjcwLCAKLSAgICAxMTgyNzYsIDExODI4MiwgMTE4Mjg4LCAxMTgyOTQsIDExODMwMCwgMTE4MzA2LCAwLCAwLCAxMTgzMTMsIDExODMxOCwgCi0gICAgMTE4MzIzLCAxMTgzMjgsIDExODMzMywgMTE4MzM4LCAxMTgzNDMsIDExODM0OCwgMTE4MzUzLCAxMTgzNTgsIDExODM2MywgCi0gICAgMTE4MzY4LCAxMTgzNzMsIDExODM3OCwgMTE4MzgzLCAxMTgzODgsIDExODM5MywgMTE4Mzk4LCAxMTg0MDQsIDExODQwOSwgCi0gICAgMTE4NDE0LCAxMTg0MTksIDExODQyNCwgMTE4NDI5LCAxMTg0MzQsIDExODQzOSwgMTE4NDQzLCAxMTg0NDgsIDExODQ1MywgCi0gICAgMTE4NDU4LCAxMTg0NjMsIDExODQ2OCwgMTE4NDczLCAxMTg0NzgsIDExODQ4MywgMTE4NDg4LCAxMTg0OTMsIDExODQ5OCwgCi0gICAgMTE4NTAzLCAxMTg1MDgsIDExODUxMywgMTE4NTE4LCAxMTg1MjMsIDExODUyOCwgMTE4NTM0LCAxMTg1MzksIDExODU0NCwgCi0gICAgMTE4NTQ5LCAxMTg1NTQsIDExODU1OSwgMTE4NTY0LCAxMTg1NjksIDExODU3NSwgMTE4NTgwLCAxMTg1ODUsIDExODU5MCwgCi0gICAgMTE4NTk1LCAxMTg2MDAsIDExODYwNSwgMTE4NjEwLCAxMTg2MTUsIDExODYyMCwgMTE4NjI1LCAxMTg2MzAsIDExODYzNSwgCi0gICAgMTE4NjQwLCAxMTg2NDUsIDExODY1MCwgMTE4NjU1LCAxMTg2NjAsIDExODY2NSwgMTE4NjcwLCAxMTg2NzUsIDExODY4MCwgCi0gICAgMTE4Njg1LCAxMTg2OTAsIDExODY5NiwgMTE4NzAxLCAxMTg3MDYsIDExODcxMSwgMTE4NzE2LCAxMTg3MjEsIDExODcyNiwgCi0gICAgMTE4NzMxLCAxMTg3MzUsIDExODc0MCwgMTE4NzQ1LCAxMTg3NTAsIDExODc1NSwgMTE4NzYwLCAxMTg3NjUsIDExODc3MCwgCi0gICAgMTE4Nzc1LCAxMTg3ODAsIDExODc4NSwgMTE4NzkwLCAxMTg3OTUsIDExODgwMCwgMTE4ODA1LCAxMTg4MTAsIDExODgxNSwgCi0gICAgMTE4ODIwLCAxMTg4MjYsIDExODgzMSwgMTE4ODM2LCAxMTg4NDEsIDExODg0NiwgMTE4ODUxLCAxMTg4NTYsIDExODg2MSwgCi0gICAgMTE4ODY3LCAxMTg4NzIsIDExODg3NywgMTE4ODgyLCAxMTg4ODcsIDExODg5MiwgMTE4ODk3LCAxMTg5MDMsIDExODkwOSwgCi0gICAgMTE4OTE1LCAxMTg5MjEsIDExODkyNywgMTE4OTMzLCAxMTg5MzksIDExODk0NSwgMTE4OTUxLCAxMTg5NTcsIDExODk2MywgCi0gICAgMTE4OTY5LCAxMTg5NzUsIDExODk4MSwgMTE4OTg3LCAxMTg5OTMsIDExODk5OSwgMTE5MDA2LCAxMTkwMTIsIDExOTAxOCwgCi0gICAgMTE5MDI0LCAxMTkwMzAsIDExOTAzNiwgMTE5MDQyLCAxMTkwNDgsIDExOTA1MywgMTE5MDU5LCAxMTkwNjUsIDExOTA3MSwgCi0gICAgMTE5MDc3LCAxMTkwODMsIDExOTA4OSwgMTE5MDk1LCAxMTkxMDEsIDExOTEwNywgMTE5MTEzLCAxMTkxMTksIDExOTEyNSwgCi0gICAgMTE5MTMxLCAxMTkxMzcsIDExOTE0MywgMTE5MTQ5LCAxMTkxNTUsIDExOTE2MiwgMTE5MTY4LCAxMTkxNzQsIDExOTE4MCwgCi0gICAgMTE5MTg2LCAxMTkxOTIsIDExOTE5OCwgMTE5MjA0LCAxMTkyMTEsIDExOTIxNywgMTE5MjIzLCAxMTkyMjksIDExOTIzNSwgCi0gICAgMTE5MjQxLCAxMTkyNDcsIDExOTI1MywgMTE5MjU5LCAxMTkyNjUsIDExOTI3MSwgMTE5Mjc3LCAxMTkyODMsIDExOTI4OSwgCi0gICAgMTE5Mjk1LCAxMTkzMDEsIDExOTMwNywgMTE5MzEzLCAxMTkzMTksIDExOTMyNSwgMTE5MzMxLCAxMTkzMzcsIDExOTM0MywgCi0gICAgMTE5MzQ5LCAxMTkzNTYsIDExOTM2MiwgMTE5MzY4LCAxMTkzNzQsIDExOTM4MCwgMTE5Mzg2LCAxMTkzOTIsIDExOTM5OCwgCi0gICAgMTE5NDAzLCAxMTk0MDksIDExOTQxNSwgMTE5NDIxLCAxMTk0MjcsIDExOTQzMywgMTE5NDM5LCAxMTk0NDUsIDExOTQ1MSwgCi0gICAgMTE5NDU3LCAxMTk0NjMsIDExOTQ2OSwgMTE5NDc1LCAxMTk0ODEsIDExOTQ4NywgMTE5NDkzLCAxMTk0OTksIDExOTUwNSwgCi0gICAgMTE5NTEyLCAxMTk1MTgsIDExOTUyNCwgMTE5NTMwLCAxMTk1MzYsIDExOTU0MiwgMTE5NTQ4LCAxMTk1NTQsIDExOTU2MSwgCi0gICAgMTE5NTY3LCAxMTk1NzMsIDExOTU3OSwgMTE5NTg1LCAxMTk1OTEsIDExOTU5NywgMTE5NjA0LCAxMTk2MTEsIDExOTYxOCwgCi0gICAgMTE5NjI1LCAxMTk2MzIsIDExOTYzOSwgMTE5NjQ2LCAxMTk2NTMsIDExOTY2MCwgMTE5NjY3LCAxMTk2NzQsIDExOTY4MSwgCi0gICAgMTE5Njg4LCAxMTk2OTUsIDExOTcwMiwgMTE5NzA5LCAxMTk3MTYsIDExOTcyNCwgMTE5NzMxLCAxMTk3MzgsIDExOTc0NSwgCi0gICAgMTE5NzUyLCAxMTk3NTksIDExOTc2NiwgMTE5NzczLCAxMTk3NzksIDExOTc4NiwgMTE5NzkzLCAxMTk4MDAsIDExOTgwNywgCi0gICAgMTE5ODE0LCAxMTk4MjEsIDExOTgyOCwgMTE5ODM1LCAxMTk4NDIsIDExOTg0OSwgMTE5ODU2LCAxMTk4NjMsIDExOTg3MCwgCi0gICAgMTE5ODc3LCAxMTk4ODQsIDExOTg5MSwgMTE5ODk4LCAxMTk5MDYsIDExOTkxMywgMTE5OTIwLCAxMTk5MjcsIDExOTkzNCwgCi0gICAgMTE5OTQxLCAxMTk5NDgsIDExOTk1NSwgMTE5OTYzLCAxMTk5NzAsIDExOTk3NywgMTE5OTg0LCAxMTk5OTEsIDExOTk5OCwgCi0gICAgMTIwMDA1LCAxMjAwMTAsIDAsIDAsIDEyMDAxNSwgMTIwMDIwLCAxMjAwMjQsIDEyMDAyOCwgMTIwMDMyLCAxMjAwMzYsIAotICAgIDEyMDA0MCwgMTIwMDQ0LCAxMjAwNDgsIDEyMDA1MiwgMTIwMDU2LCAxMjAwNjEsIDEyMDA2NSwgMTIwMDY5LCAxMjAwNzMsIAotICAgIDEyMDA3NywgMTIwMDgxLCAxMjAwODUsIDEyMDA4OSwgMTIwMDkzLCAxMjAwOTcsIDEyMDEwMiwgMTIwMTA2LCAxMjAxMTAsIAotICAgIDEyMDExNCwgMTIwMTE4LCAxMjAxMjIsIDEyMDEyNiwgMTIwMTMwLCAxMjAxMzQsIDEyMDEzOCwgMTIwMTQ0LCAxMjAxNDksIAotICAgIDEyMDE1NCwgMTIwMTU5LCAxMjAxNjQsIDEyMDE2OSwgMTIwMTc0LCAxMjAxNzksIDEyMDE4NCwgMTIwMTg5LCAxMjAxOTUsIAotICAgIDEyMDIwMCwgMTIwMjA1LCAxMjAyMTAsIDEyMDIxNSwgMTIwMjIwLCAxMjAyMjUsIDEyMDIzMCwgMTIwMjM1LCAxMjAyNDAsIAotICAgIDEyMDI0NCwgMTIwMjQ4LCAxMjAyNTIsIDAsIDEyMDI1NiwgMTIwMjYwLCAxMjAyNjQsIDEyMDI2OCwgMTIwMjcyLCAKLSAgICAxMjAyNzYsIDEyMDI4MCwgMTIwMjg0LCAxMjAyODgsIDEyMDI5MiwgMTIwMjk2LCAxMjAzMDAsIDEyMDMwNCwgMTIwMzA4LCAKLSAgICAxMjAzMTIsIDEyMDMxNiwgMTIwMzIwLCAxMjAzMjQsIDEyMDMyOCwgMTIwMzMyLCAxMjAzMzYsIDEyMDM0MCwgMTIwMzQ0LCAKLSAgICAxMjAzNDgsIDEyMDM1NCwgMTIwMzYwLCAxMjAzNjYsIDAsIDEyMDM3MiwgMTIwMzc3LCAwLCAxMjAzODIsIDAsIDAsIAotICAgIDEyMDM4NywgMCwgMTIwMzkyLCAxMjAzOTcsIDEyMDQwMiwgMTIwNDA3LCAxMjA0MTIsIDEyMDQxNywgMTIwNDIyLCAKLSAgICAxMjA0MjcsIDEyMDQzMiwgMTIwNDM3LCAwLCAxMjA0NDIsIDEyMDQ0NywgMTIwNDUyLCAxMjA0NTcsIDAsIDEyMDQ2MiwgMCwgCi0gICAgMTIwNDY3LCAwLCAwLCAwLCAwLCAwLCAwLCAxMjA0NzIsIDAsIDAsIDAsIDAsIDEyMDQ3OCwgMCwgMTIwNDg0LCAwLCAKLSAgICAxMjA0OTAsIDAsIDEyMDQ5NiwgMTIwNTAyLCAxMjA1MDgsIDAsIDEyMDUxNCwgMTIwNTIwLCAwLCAxMjA1MjYsIDAsIDAsIAotICAgIDEyMDUzMiwgMCwgMTIwNTM4LCAwLCAxMjA1NDQsIDAsIDEyMDU1MCwgMCwgMTIwNTU4LCAwLCAxMjA1NjYsIDEyMDU3MiwgMCwgCi0gICAgMTIwNTc4LCAwLCAwLCAxMjA1ODQsIDEyMDU5MCwgMTIwNTk2LCAxMjA2MDIsIDAsIDEyMDYwOCwgMTIwNjE0LCAxMjA2MjAsIAotICAgIDEyMDYyNiwgMTIwNjMyLCAxMjA2MzgsIDEyMDY0NCwgMCwgMTIwNjUwLCAxMjA2NTYsIDEyMDY2MiwgMTIwNjY4LCAwLCAKLSAgICAxMjA2NzQsIDEyMDY4MCwgMTIwNjg2LCAxMjA2OTIsIDAsIDEyMDcwMCwgMCwgMTIwNzA4LCAxMjA3MTQsIDEyMDcyMCwgCi0gICAgMTIwNzI2LCAxMjA3MzIsIDEyMDczOCwgMTIwNzQ0LCAxMjA3NTAsIDEyMDc1NiwgMTIwNzYyLCAwLCAxMjA3NjgsIAotICAgIDEyMDc3NCwgMTIwNzgwLCAxMjA3ODYsIDEyMDc5MiwgMTIwNzk4LCAxMjA4MDQsIDEyMDgxMCwgMTIwODE2LCAxMjA4MjIsIAotICAgIDEyMDgyOCwgMTIwODM0LCAxMjA4NDAsIDEyMDg0NiwgMTIwODUyLCAxMjA4NTgsIDEyMDg2NCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTIwODcwLCAxMjA4NzUsIDEyMDg4MCwgMCwgMTIwODg1LCAxMjA4OTAsIDEyMDg5NSwgMTIwOTAwLCAxMjA5MDUsIDAsIAotICAgIDEyMDkxMCwgMTIwOTE1LCAxMjA5MjAsIDEyMDkyNSwgMTIwOTMwLCAxMjA5MzUsIDEyMDk0MCwgMTIwOTQ1LCAxMjA5NTAsIAotICAgIDEyMDk1NSwgMTIwOTYwLCAxMjA5NjUsIDEyMDk3MCwgMTIwOTc1LCAxMjA5ODAsIDEyMDk4NSwgMTIwOTkwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMjA5OTUsIDEyMTAwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIxMDEzLCAKLSAgICAxMjEwMjAsIDEyMTAyNywgMTIxMDM0LCAxMjEwNDEsIDEyMTA0OCwgMTIxMDU1LCAxMjEwNjEsIDEyMTA2OCwgMTIxMDc1LCAKLSAgICAxMjEwODIsIDEyMTA5MCwgMTIxMDk4LCAxMjExMDYsIDEyMTExNCwgMTIxMTIyLCAxMjExMzAsIDEyMTEzNywgMTIxMTQ0LCAKLSAgICAxMjExNTEsIDEyMTE1OSwgMTIxMTY3LCAxMjExNzUsIDEyMTE4MywgMTIxMTkxLCAxMjExOTksIDEyMTIwNiwgMTIxMjEzLCAKLSAgICAxMjEyMjAsIDEyMTIyOCwgMTIxMjM2LCAxMjEyNDQsIDEyMTI1MiwgMTIxMjYwLCAxMjEyNjgsIDEyMTI3MywgMTIxMjc4LCAKLSAgICAxMjEyODMsIDEyMTI4OCwgMTIxMjkzLCAxMjEyOTgsIDEyMTMwMywgMTIxMzA4LCAxMjEzMTMsIDAsIDAsIDAsIDAsIAotICAgIDEyMTMxOCwgMTIxMzIzLCAxMjEzMjcsIDEyMTMzMSwgMTIxMzM1LCAxMjEzMzksIDEyMTM0MywgMTIxMzQ3LCAxMjEzNTEsIAotICAgIDEyMTM1NSwgMTIxMzU5LCAxMjEzNjMsIDEyMTM2NywgMTIxMzcxLCAxMjEzNzUsIDEyMTM3OSwgMTIxMzgzLCAxMjEzODcsIAotICAgIDEyMTM5MSwgMTIxMzk1LCAxMjEzOTksIDEyMTQwMywgMTIxNDA3LCAxMjE0MTEsIDEyMTQxNSwgMTIxNDE5LCAxMjE0MjMsIAotICAgIDEyMTQyNywgMTIxNDMxLCAxMjE0MzUsIDEyMTQzOSwgMTIxNDQzLCAxMjE0NDcsIDEyMTQ1MSwgMTIxNDU1LCAxMjE0NTksIAotICAgIDEyMTQ2MywgMTIxNDY3LCAxMjE0NzEsIDEyMTQ3NSwgMTIxNDc5LCAxMjE0ODMsIDEyMTQ4NywgMTIxNDkxLCAxMjE0OTUsIAotICAgIDEyMTQ5OSwgMTIxNTAzLCAxMjE1MDcsIDEyMTUxMSwgMTIxNTE1LCAxMjE1MTksIDEyMTUyNCwgMTIxNTI4LCAxMjE1MzIsIAotICAgIDEyMTUzNiwgMTIxNTQwLCAxMjE1NDQsIDEyMTU0OCwgMTIxNTUyLCAxMjE1NTYsIDEyMTU2MCwgMTIxNTY0LCAxMjE1NjgsIAotICAgIDEyMTU3MiwgMTIxNTc2LCAxMjE1ODAsIDEyMTU4NCwgMTIxNTg4LCAxMjE1OTIsIDEyMTU5NiwgMTIxNjAwLCAxMjE2MDQsIAotICAgIDEyMTYwOCwgMTIxNjEyLCAxMjE2MTYsIDEyMTYyMCwgMTIxNjI0LCAxMjE2MjgsIDEyMTYzMiwgMTIxNjM2LCAxMjE2NDAsIAotICAgIDEyMTY0NCwgMTIxNjQ4LCAxMjE2NTIsIDEyMTY1NiwgMTIxNjYwLCAxMjE2NjQsIDEyMTY2OCwgMTIxNjcyLCAxMjE2NzYsIAotICAgIDEyMTY4MCwgMTIxNjg0LCAxMjE2ODgsIDEyMTY5MiwgMTIxNjk2LCAxMjE3MDAsIDEyMTcwNCwgMTIxNzA4LCAxMjE3MTIsIAotICAgIDEyMTcxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIxNzIwLCAxMjE3MjYsIDEyMTczNSwgCi0gICAgMTIxNzQzLCAxMjE3NTEsIDEyMTc2MCwgMTIxNzY5LCAxMjE3NzgsIDEyMTc4NywgMTIxNzk2LCAxMjE4MDUsIDEyMTgxNCwgCi0gICAgMTIxODIzLCAxMjE4MzIsIDEyMTg0MSwgMCwgMCwgMTIxODUwLCAxMjE4NTksIDEyMTg2NywgMTIxODc1LCAxMjE4ODQsIAotICAgIDEyMTg5MywgMTIxOTAyLCAxMjE5MTEsIDEyMTkyMCwgMTIxOTI5LCAxMjE5MzgsIDEyMTk0NywgMTIxOTU2LCAxMjE5NjUsIAotICAgIDAsIDAsIDEyMTk3NCwgMTIxOTgzLCAxMjE5OTEsIDEyMTk5OSwgMTIyMDA4LCAxMjIwMTcsIDEyMjAyNiwgMTIyMDM1LCAKLSAgICAxMjIwNDQsIDEyMjA1MywgMTIyMDYyLCAxMjIwNzEsIDEyMjA4MCwgMTIyMDg5LCAxMjIwOTgsIDAsIDEyMjEwNSwgCi0gICAgMTIyMTE0LCAxMjIxMjIsIDEyMjEzMCwgMTIyMTM5LCAxMjIxNDgsIDEyMjE1NywgMTIyMTY2LCAxMjIxNzUsIDEyMjE4NCwgCi0gICAgMTIyMTkzLCAxMjIyMDIsIDEyMjIxMSwgMTIyMjIwLCAxMjIyMjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMjIzNiwgCi0gICAgMTIyMjQzLCAxMjIyNDgsIDEyMjI1MiwgMTIyMjU2LCAxMjIyNjAsIDEyMjI2NSwgMTIyMjcwLCAxMjIyNzUsIDEyMjI4MCwgCi0gICAgMTIyMjg1LCAwLCAwLCAwLCAwLCAwLCAxMjIyOTAsIDEyMjI5NSwgMTIyMzAxLCAxMjIzMDcsIDEyMjMxMywgMTIyMzE4LCAKLSAgICAxMjIzMjQsIDEyMjMzMCwgMTIyMzM2LCAxMjIzNDEsIDEyMjM0NywgMTIyMzUzLCAxMjIzNTgsIDEyMjM2MywgMTIyMzY5LCAKLSAgICAxMjIzNzQsIDEyMjM4MCwgMTIyMzg2LCAxMjIzOTEsIDEyMjM5NywgMTIyNDAzLCAxMjI0MDgsIDEyMjQxNCwgMTIyNDIwLCAKLSAgICAxMjI0MjYsIDEyMjQzMiwgMTIyNDM4LCAxMjI0NDksIDEyMjQ1NiwgMTIyNDYyLCAxMjI0NjUsIDAsIDEyMjQ2OCwgCi0gICAgMTIyNDczLCAxMjI0NzksIDEyMjQ4NSwgMTIyNDkxLCAxMjI0OTYsIDEyMjUwMiwgMTIyNTA4LCAxMjI1MTQsIDEyMjUxOSwgCi0gICAgMTIyNTI1LCAxMjI1MzEsIDEyMjUzNiwgMTIyNTQxLCAxMjI1NDcsIDEyMjU1MiwgMTIyNTU4LCAxMjI1NjQsIDEyMjU2OSwgCi0gICAgMTIyNTc1LCAxMjI1ODEsIDEyMjU4NiwgMTIyNTkyLCAxMjI1OTgsIDEyMjYwNCwgMTIyNjEwLCAxMjI2MTYsIDEyMjYxOSwgCi0gICAgMTIyNjIyLCAxMjI2MjUsIDEyMjYyOCwgMTIyNjMxLCAxMjI2MzQsIDEyMjY0MCwgMTIyNjQ3LCAxMjI2NTQsIDEyMjY2MSwgCi0gICAgMTIyNjY3LCAxMjI2NzQsIDEyMjY4MSwgMTIyNjg4LCAxMjI2OTQsIDEyMjcwMSwgMTIyNzA4LCAxMjI3MTQsIDEyMjcyMCwgCi0gICAgMTIyNzI3LCAxMjI3MzMsIDEyMjc0MCwgMTIyNzQ3LCAxMjI3NTMsIDEyMjc2MCwgMTIyNzY3LCAxMjI3NzMsIDEyMjc4MCwgCi0gICAgMTIyNzg3LCAxMjI3OTQsIDEyMjgwMSwgMTIyODA4LCAxMjI4MTMsIDAsIDAsIDAsIDAsIDEyMjgxOCwgMTIyODI0LCAKLSAgICAxMjI4MzEsIDEyMjgzOCwgMTIyODQ1LCAxMjI4NTEsIDEyMjg1OCwgMTIyODY1LCAxMjI4NzIsIDEyMjg3OCwgMTIyODg1LCAKLSAgICAxMjI4OTIsIDEyMjg5OCwgMTIyOTA0LCAxMjI5MTEsIDEyMjkxNywgMTIyOTI0LCAxMjI5MzEsIDEyMjkzNywgMTIyOTQ0LCAKLSAgICAxMjI5NTEsIDEyMjk1NywgMTIyOTY0LCAxMjI5NzEsIDEyMjk3OCwgMTIyOTg1LCAxMjI5OTIsIDEyMzAwMSwgMTIzMDA1LCAKLSAgICAxMjMwMDgsIDEyMzAxMSwgMTIzMDE1LCAxMjMwMTksIDEyMzAyMiwgMTIzMDI1LCAxMjMwMjgsIDEyMzAzMSwgMTIzMDM0LCAKLSAgICAxMjMwMzcsIDEyMzA0MCwgMTIzMDQzLCAxMjMwNDYsIDEyMzA1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIzMDU1LCAxMjMwNjIsIDEyMzA3MCwgCi0gICAgMTIzMDc4LCAxMjMwODYsIDEyMzA5MywgMTIzMTAxLCAxMjMxMDksIDEyMzExNywgMTIzMTI0LCAxMjMxMzIsIDEyMzE0MCwgCi0gICAgMTIzMTQ3LCAxMjMxNTQsIDEyMzE2MiwgMTIzMTY5LCAxMjMxNzcsIDEyMzE4NSwgMTIzMTkyLCAxMjMyMDAsIDEyMzIwOCwgCi0gICAgMTIzMjE1LCAxMjMyMjMsIDEyMzIzMSwgMTIzMjM5LCAxMjMyNDcsIDEyMzI1NSwgMTIzMjU5LCAxMjMyNjMsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMzI2NiwgMTIzMjcyLCAxMjMyNzgsIDEyMzI4NCwgMTIzMjg4LCAKLSAgICAxMjMyOTQsIDEyMzMwMCwgMTIzMzA2LCAxMjMzMTIsIDEyMzMxOCwgMTIzMzI0LCAxMjMzMzAsIDEyMzMzNiwgMTIzMzQyLCAKLSAgICAxMjMzNDgsIDEyMzM1NCwgMTIzMzYwLCAxMjMzNjYsIDEyMzM3MiwgMTIzMzc4LCAxMjMzODQsIDEyMzM5MCwgMTIzMzk2LCAKLSAgICAxMjM0MDIsIDEyMzQwOCwgMTIzNDE0LCAxMjM0MjAsIDEyMzQyNiwgMTIzNDMyLCAxMjM0MzgsIDEyMzQ0NCwgMTIzNDUwLCAKLSAgICAxMjM0NTYsIDEyMzQ2MiwgMTIzNDY4LCAxMjM0NzQsIDEyMzQ4MCwgMTIzNDg2LCAxMjM0OTIsIDEyMzQ5OCwgMTIzNTA0LCAKLSAgICAxMjM1MTAsIDEyMzUxNiwgMCwgMCwgMCwgMCwgMCwgMTIzNTIyLCAxMjM1MzMsIDEyMzU0NCwgMTIzNTU1LCAxMjM1NjYsIAotICAgIDEyMzU3NywgMTIzNTg4LCAxMjM1OTksIDEyMzYxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIzNjIxLCAxMjM2MjUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMzYyOSwgCi0gICAgMTIzNjMxLCAxMjM2MzMsIDEyMzYzNywgMTIzNjQyLCAxMjM2NDcsIDEyMzY0OSwgMTIzNjU1LCAxMjM2NjAsIDEyMzY2MiwgCi0gICAgMTIzNjY4LCAxMjM2NzIsIDEyMzY3NCwgMTIzNjc4LCAxMjM2ODQsIDEyMzY5MCwgMTIzNjk2LCAxMjM3MDEsIDEyMzcwNSwgCi0gICAgMTIzNzEyLCAxMjM3MTksIDEyMzcyNiwgMTIzNzMxLCAxMjM3MzgsIDEyMzc0NSwgMTIzNzUyLCAxMjM3NTYsIDEyMzc2MiwgCi0gICAgMTIzNzcxLCAxMjM3ODAsIDEyMzc4NywgMTIzNzkyLCAxMjM3OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEyMzgwMCwgMTIzODAyLCAxMjM4MDQsIDEyMzgwOCwgMTIzODEyLCAxMjM4MTYsIDAsIDEyMzgxOCwgCi0gICAgMTIzODIwLCAxMjM4MjQsIDEyMzgyNiwgMTIzODI4LCAxMjM4MzAsIDEyMzgzMiwgMTIzODM3LCAxMjM4NDIsIDEyMzg0NCwgCi0gICAgMTIzODUwLCAxMjM4NTQsIDEyMzg1OCwgMTIzODY2LCAxMjM4NjgsIDEyMzg3MCwgMTIzODcyLCAxMjM4NzQsIDEyMzg3NiwgCi0gICAgMTIzODc4LCAxMjM4ODAsIDEyMzg4MiwgMTIzODg0LCAxMjM4ODYsIDEyMzg5MCwgMTIzODk0LCAxMjM4OTYsIDEyMzg5OCwgCi0gICAgMTIzOTAwLCAxMjM5MDIsIDEyMzkwNCwgMTIzOTA5LCAxMjM5MTUsIDEyMzkxOSwgMTIzOTIzLCAxMjM5MjcsIDEyMzkzMSwgCi0gICAgMTIzOTM2LCAxMjM5NDAsIDEyMzk0MiwgMTIzOTQ0LCAxMjM5NDgsIDEyMzk1NCwgMTIzOTU2LCAxMjM5NTgsIDEyMzk2MCwgCi0gICAgMTIzOTY0LCAxMjM5NzMsIDEyMzk3OSwgMTIzOTgzLCAxMjM5ODcsIDEyMzk4OSwgMTIzOTkxLCAxMjM5OTQsIDEyMzk5NiwgCi0gICAgMTIzOTk4LCAxMjQwMDAsIDEyNDAwNCwgMTI0MDA2LCAxMjQwMTAsIDEyNDAxNSwgMTI0MDE3LCAxMjQwMjIsIDEyNDAyOCwgCi0gICAgMTI0MDM1LCAxMjQwMzksIDEyNDA0MywgMTI0MDQ3LCAxMjQwNTEsIDEyNDA1NywgMCwgMCwgMCwgMTI0MDYxLCAxMjQwNjMsIAotICAgIDEyNDA2NywgMTI0MDcxLCAxMjQwNzMsIDEyNDA3NywgMTI0MDgxLCAxMjQwODMsIDEyNDA4NywgMTI0MDg5LCAxMjQwOTMsIAotICAgIDEyNDA5NywgMTI0MTAxLCAxMjQxMDUsIDEyNDEwOSwgMTI0MTEzLCAxMjQxMTcsIDEyNDEyMSwgMTI0MTI3LCAxMjQxMzEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDEzNSwgMTI0MTM5LCAxMjQxNDMsIDEyNDE0NywgCi0gICAgMTI0MTU0LCAxMjQxNTYsIDEyNDE2MCwgMTI0MTYyLCAxMjQxNjQsIDEyNDE2OCwgMTI0MTcyLCAxMjQxNzYsIDEyNDE3OCwgCi0gICAgMTI0MTgyLCAxMjQxODYsIDEyNDE5MCwgMTI0MTk0LCAxMjQxOTgsIDEyNDIwMCwgMTI0MjA0LCAxMjQyMDYsIDEyNDIxMiwgCi0gICAgMTI0MjE1LCAxMjQyMjAsIDEyNDIyMiwgMTI0MjI0LCAxMjQyMjcsIDEyNDIyOSwgMTI0MjMxLCAxMjQyMzQsIDEyNDI0MSwgCi0gICAgMTI0MjQ4LCAxMjQyNTUsIDEyNDI2MCwgMTI0MjY0LCAxMjQyNjYsIDEyNDI2OCwgMCwgMTI0MjcwLCAxMjQyNzIsIAotICAgIDEyNDI3NiwgMTI0MjgwLCAxMjQyODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEyNDI4NiwgMTI0MjkwLCAxMjQyOTUsIDEyNDI5OSwgMTI0MzA1LCAxMjQzMTEsIDEyNDMxMywgCi0gICAgMTI0MzE1LCAxMjQzMjEsIDEyNDMyMywgMTI0MzI3LCAxMjQzMzEsIDEyNDMzMywgMTI0MzM3LCAxMjQzMzksIDEyNDM0MywgCi0gICAgMTI0MzQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQzNTEsIDEyNDM1MywgCi0gICAgMTI0MzU1LCAxMjQzNTcsIDEyNDM2MSwgMTI0MzYzLCAxMjQzNjUsIDEyNDM2NywgMTI0MzY5LCAxMjQzNzEsIDEyNDM3MywgCi0gICAgMTI0Mzc1LCAxMjQzNzcsIDEyNDM3OSwgMTI0MzgxLCAxMjQzODMsIDEyNDM4NSwgMTI0Mzg3LCAxMjQzODksIDEyNDM5MSwgCi0gICAgMTI0MzkzLCAxMjQzOTUsIDEyNDM5NywgMTI0Mzk5LCAxMjQ0MDEsIDEyNDQwMywgMTI0NDA1LCAxMjQ0MDksIDEyNDQxMSwgCi0gICAgMTI0NDEzLCAxMjQ0MTUsIDEyNDQxOSwgMTI0NDIxLCAxMjQ0MjUsIDEyNDQyNywgMTI0NDI5LCAxMjQ0MzMsIDEyNDQzNywgCi0gICAgMTI0NDQzLCAxMjQ0NDUsIDEyNDQ0NywgMTI0NDQ5LCAxMjQ0NTEsIDEyNDQ1NSwgMTI0NDU5LCAxMjQ0NjEsIDEyNDQ2NSwgCi0gICAgMTI0NDY5LCAxMjQ0NzMsIDEyNDQ3NywgMTI0NDgxLCAxMjQ0ODUsIDEyNDQ4OSwgMTI0NDkzLCAxMjQ0OTcsIDEyNDUwMSwgCi0gICAgMTI0NTA1LCAxMjQ1MDksIDEyNDUxMywgMTI0NTE3LCAxMjQ1MjEsIDEyNDUyNSwgMTI0NTI5LCAwLCAxMjQ1MzMsIDAsIAotICAgIDEyNDUzNSwgMTI0NTM3LCAxMjQ1MzksIDEyNDU0MSwgMTI0NTQzLCAxMjQ1NTEsIDEyNDU1OSwgMTI0NTY3LCAxMjQ1NzUsIAotICAgIDEyNDU4MCwgMTI0NTg1LCAxMjQ1OTAsIDEyNDU5NCwgMTI0NTk4LCAxMjQ2MDMsIDEyNDYwNywgMTI0NjA5LCAxMjQ2MTMsIAotICAgIDEyNDYxNSwgMTI0NjE3LCAxMjQ2MTksIDEyNDYyMSwgMTI0NjIzLCAxMjQ2MjUsIDEyNDYyNywgMTI0NjMxLCAxMjQ2MzMsIAotICAgIDEyNDYzNSwgMTI0NjM3LCAxMjQ2NDEsIDEyNDY0NSwgMTI0NjQ5LCAxMjQ2NTMsIDEyNDY1NywgMTI0NjU5LCAxMjQ2NjUsIAotICAgIDEyNDY3MSwgMTI0NjczLCAxMjQ2NzUsIDEyNDY3NywgMTI0Njc5LCAxMjQ2ODEsIDEyNDY5MCwgMTI0Njk3LCAxMjQ3MDQsIAotICAgIDEyNDcwOCwgMTI0NzE1LCAxMjQ3MjAsIDEyNDcyNywgMTI0NzM2LCAxMjQ3NDEsIDEyNDc0NSwgMTI0NzQ5LCAxMjQ3NTEsIAotICAgIDEyNDc1NSwgMTI0NzU3LCAxMjQ3NjEsIDEyNDc2NSwgMTI0NzY3LCAxMjQ3NzEsIDEyNDc3NSwgMTI0Nzc5LCAxMjQ3ODEsIAotICAgIDEyNDc4MywgMTI0Nzg5LCAxMjQ3OTEsIDEyNDc5MywgMTI0Nzk1LCAxMjQ3OTksIDEyNDgwMywgMTI0ODA1LCAxMjQ4MDksIAotICAgIDEyNDgxMSwgMTI0ODEzLCAxMjQ4MTYsIDEyNDgyMCwgMTI0ODIyLCAxMjQ4MjYsIDEyNDgyOCwgMTI0ODMwLCAxMjQ4MzUsIAotICAgIDEyNDgzNywgMTI0ODQxLCAxMjQ4NDUsIDEyNDg0OCwgMTI0ODUyLCAxMjQ4NTYsIDEyNDg2MCwgMTI0ODY0LCAxMjQ4NjgsIAotICAgIDEyNDg3MiwgMTI0ODc2LCAxMjQ4ODEsIDEyNDg4NSwgMTI0ODg5LCAxMjQ4OTgsIDEyNDkwMywgMTI0OTA2LCAxMjQ5MDgsIAotICAgIDEyNDkxMSwgMTI0OTE0LCAxMjQ5MTksIDEyNDkyMSwgMTI0OTI0LCAxMjQ5MjksIDEyNDkzMywgMTI0OTM2LCAxMjQ5NDAsIAotICAgIDEyNDk0NCwgMTI0OTQ3LCAxMjQ5NTIsIDEyNDk1NiwgMTI0OTYwLCAxMjQ5NjQsIDEyNDk2OCwgMTI0OTc0LCAxMjQ5ODAsIAotICAgIDEyNDk4NiwgMTI0OTkyLCAxMjQ5OTcsIDEyNTAwOCwgMTI1MDEwLCAxMjUwMTQsIDEyNTAxNiwgMTI1MDE4LCAxMjUwMjIsIAotICAgIDEyNTAyNiwgMTI1MDI4LCAxMjUwMzIsIDEyNTAzNywgMTI1MDQyLCAxMjUwNDgsIDEyNTA1MCwgMTI1MDU0LCAxMjUwNTgsIAotICAgIDEyNTA2NSwgMTI1MDcyLCAxMjUwNzYsIDEyNTA3OCwgMTI1MDgwLCAxMjUwODQsIDEyNTA4NiwgMTI1MDkwLCAxMjUwOTQsIAotICAgIDEyNTA5OCwgMTI1MTAwLCAxMjUxMDIsIDEyNTEwOSwgMTI1MTEzLCAxMjUxMTYsIDEyNTEyMCwgMTI1MTI0LCAxMjUxMjgsIAotICAgIDEyNTEzMCwgMTI1MTM0LCAxMjUxMzYsIDEyNTEzOCwgMTI1MTQyLCAxMjUxNDQsIDEyNTE0OCwgMTI1MTUyLCAxMjUxNTgsIAotICAgIDEyNTE2MiwgMTI1MTY2LCAxMjUxNzAsIDEyNTE3MiwgMTI1MTc1LCAxMjUxNzksIDEyNTE4NiwgMTI1MTk1LCAxMjUyMDQsIAotICAgIDEyNTIxMiwgMTI1MjIwLCAxMjUyMjIsIDEyNTIyNiwgMTI1MjI4LCAxMjUyMzIsIDEyNTI0MywgMTI1MjQ3LCAxMjUyNTMsIAotICAgIDEyNTI1OSwgMTI1MjY0LCAwLCAxMjUyNjYsIDEyNTI3MCwgMTI1MjcyLCAxMjUyNzQsIDAsIDAsIDAsIDEyNTI3NiwgCi0gICAgMTI1MjgxLCAxMjUyOTEsIDEyNTMwNiwgMTI1MzE4LCAxMjUzMzAsIDEyNTMzNCwgMTI1MzM4LCAxMjUzNDQsIDEyNTM0NiwgCi0gICAgMTI1MzU0LCAxMjUzNjIsIDEyNTM2NCwgMTI1MzY4LCAxMjUzNzQsIDEyNTM4MCwgMTI1Mzg3LCAxMjUzOTQsIDEyNTM5NiwgCi0gICAgMTI1Mzk4LCAxMjU0MDEsIDEyNTQwMywgMTI1NDA5LCAxMjU0MTEsIDEyNTQxNCwgMTI1NDE4LCAxMjU0MjQsIDEyNTQzMCwgCi0gICAgMTI1NDQxLCAxMjU0NDcsIDEyNTQ1NCwgMTI1NDYyLCAxMjU0NjYsIDEyNTQ3NCwgMTI1NDgyLCAxMjU0ODgsIDEyNTQ5NCwgCi0gICAgMTI1NTAxLCAxMjU1MDMsIDEyNTUwNywgMTI1NTA5LCAxMjU1MTEsIDEyNTUxNiwgMTI1NTE4LCAxMjU1MjAsIDEyNTUyMiwgCi0gICAgMTI1NTI0LCAxMjU1MjgsIDEyNTUzOSwgMTI1NTQ1LCAxMjU1NDksIDEyNTU1MywgMTI1NTU3LCAxMjU1NjMsIDEyNTU2OSwgCi0gICAgMTI1NTc1LCAxMjU1ODEsIDEyNTU4NiwgMTI1NTkxLCAxMjU1OTcsIDEyNTYwMywgMTI1NjEwLCAwLCAwLCAxMjU2MTcsIAotICAgIDEyNTYyMiwgMTI1NjMwLCAxMjU2MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTY0MywgCi0gICAgMTI1NjUwLCAxMjU2NTcsIDEyNTY2NCwgMTI1NjcyLCAxMjU2ODAsIDEyNTY4OCwgMTI1Njk2LCAxMjU3MDQsIDEyNTcxMiwgCi0gICAgMTI1NzIwLCAxMjU3MjgsIDEyNTczNiwgMTI1NzQyLCAxMjU3NDgsIDEyNTc1NCwgMTI1NzYwLCAxMjU3NjYsIDEyNTc3MiwgCi0gICAgMTI1Nzc4LCAxMjU3ODQsIDEyNTc5MCwgMTI1Nzk2LCAxMjU4MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDk2MzYxLCA5NjM2NiwgOTYzNzEsIDk2Mzc2LCA5NjM4MSwgOTYzODYsIDk2MzkxLCA5NjM5NiwgOTY0MDEsIAorICAgIDk2NDA2LCA5NjQxMSwgOTY0MTYsIDk2NDIxLCA5NjQyNiwgOTY0MzEsIDk2NDM2LCA5NjQ0MSwgOTY0NDYsIDk2NDUxLCAKKyAgICA5NjQ1NiwgOTY0NjEsIDk2NDY2LCA5NjQ3MSwgOTY0NzYsIDk2NDgxLCA5NjQ4NiwgOTY0OTEsIDk2NDk2LCA5NjUwMSwgCisgICAgOTY1MDYsIDk2NTExLCA5NjUxNiwgOTY1MjEsIDk2NTI2LCA5NjUzMSwgOTY1MzYsIDk2NTQxLCA5NjU0NiwgOTY1NTEsIAorICAgIDk2NTU2LCA5NjU2MSwgOTY1NjYsIDk2NTcxLCA5NjU3NiwgOTY1ODEsIDk2NTg2LCA5NjU5MSwgOTY1OTYsIDk2NjAxLCAKKyAgICA5NjYwNiwgOTY2MTEsIDk2NjE2LCA5NjYyMSwgOTY2MjYsIDk2NjMxLCA5NjYzNiwgOTY2NDEsIDk2NjQ2LCA5NjY1MSwgCisgICAgOTY2NTYsIDk2NjYxLCA5NjY2NiwgOTY2NzEsIDk2Njc2LCA5NjY4MSwgOTY2ODYsIDk2NjkxLCA5NjY5NiwgOTY3MDEsIAorICAgIDk2NzA2LCA5NjcxMSwgOTY3MTYsIDk2NzIxLCA5NjcyNiwgOTY3MzEsIDk2NzM2LCA5Njc0MSwgOTY3NDYsIDk2NzUxLCAKKyAgICA5Njc1NiwgOTY3NjEsIDk2NzY2LCA5Njc3MSwgOTY3NzYsIDk2NzgxLCA5Njc4NiwgOTY3OTEsIDk2Nzk2LCA5NjgwMSwgCisgICAgOTY4MDYsIDk2ODExLCA5NjgxNiwgOTY4MjEsIDk2ODI2LCA5NjgzMSwgOTY4MzYsIDk2ODQxLCA5Njg0NiwgOTY4NTEsIAorICAgIDk2ODU2LCA5Njg2MSwgOTY4NjYsIDk2ODcxLCA5Njg3NiwgOTY4ODEsIDk2ODg2LCA5Njg5MSwgOTY4OTYsIDk2OTAxLCAKKyAgICA5NjkwNiwgOTY5MTEsIDk2OTE2LCA5NjkyMSwgOTY5MjYsIDk2OTMxLCA5NjkzNiwgOTY5NDEsIDk2OTQ2LCA5Njk1MSwgCisgICAgOTY5NTYsIDk2OTYxLCA5Njk2NiwgOTY5NzEsIDk2OTc2LCA5Njk4MSwgOTY5ODYsIDk2OTkxLCA5Njk5NiwgOTcwMDEsIAorICAgIDk3MDA2LCA5NzAxMSwgOTcwMTYsIDk3MDIxLCA5NzAyNiwgOTcwMzEsIDk3MDM2LCA5NzA0MSwgOTcwNDYsIDk3MDUxLCAKKyAgICA5NzA1NiwgOTcwNjEsIDk3MDY2LCA5NzA3MSwgOTcwNzYsIDk3MDgxLCA5NzA4NiwgOTcwOTEsIDk3MDk2LCA5NzEwMSwgCisgICAgOTcxMDYsIDk3MTExLCA5NzExNiwgOTcxMjEsIDk3MTI2LCA5NzEzMSwgOTcxMzYsIDk3MTQxLCA5NzE0NiwgOTcxNTEsIAorICAgIDk3MTU2LCA5NzE2MSwgOTcxNjYsIDk3MTcxLCA5NzE3NiwgOTcxODEsIDk3MTg2LCA5NzE5MSwgOTcxOTYsIDk3MjAxLCAKKyAgICA5NzIwNiwgOTcyMTEsIDk3MjE2LCA5NzIyMSwgOTcyMjYsIDk3MjMxLCA5NzIzNiwgOTcyNDEsIDk3MjQ2LCA5NzI1MSwgCisgICAgOTcyNTYsIDk3MjYxLCA5NzI2NiwgOTcyNzEsIDk3Mjc2LCA5NzI4MSwgOTcyODYsIDk3MjkxLCA5NzI5NiwgOTczMDEsIAorICAgIDk3MzA2LCA5NzMxMSwgOTczMTYsIDk3MzIxLCA5NzMyNiwgOTczMzEsIDk3MzM2LCA5NzM0MSwgOTczNDYsIDk3MzUxLCAKKyAgICA5NzM1NiwgOTczNjEsIDk3MzY2LCA5NzM3MSwgOTczNzYsIDk3MzgxLCA5NzM4NiwgOTczOTEsIDk3Mzk2LCA5NzQwMSwgCisgICAgOTc0MDYsIDk3NDExLCA5NzQxNiwgOTc0MjEsIDk3NDI2LCA5NzQzMSwgOTc0MzYsIDk3NDQxLCA5NzQ0NiwgOTc0NTEsIAorICAgIDk3NDU2LCA5NzQ2MSwgOTc0NjYsIDk3NDcxLCA5NzQ3NiwgOTc0ODEsIDk3NDg2LCA5NzQ5MSwgOTc0OTYsIDk3NTAxLCAKKyAgICA5NzUwNiwgOTc1MTEsIDk3NTE2LCA5NzUyMSwgOTc1MjYsIDk3NTMxLCA5NzUzNiwgOTc1NDEsIDk3NTQ2LCA5NzU1MSwgCisgICAgOTc1NTYsIDk3NTYxLCA5NzU2NiwgOTc1NzEsIDk3NTc2LCA5NzU4MSwgOTc1ODYsIDk3NTkxLCA5NzU5NiwgOTc2MDEsIAorICAgIDk3NjA2LCA5NzYxMSwgOTc2MTYsIDk3NjIxLCA5NzYyNiwgOTc2MzEsIDk3NjM2LCA5NzY0MSwgOTc2NDYsIDk3NjUxLCAKKyAgICA5NzY1NiwgOTc2NjEsIDk3NjY2LCA5NzY3MSwgOTc2NzYsIDk3NjgxLCA5NzY4NiwgOTc2OTEsIDk3Njk2LCA5NzcwMSwgCisgICAgOTc3MDYsIDk3NzExLCA5NzcxNiwgOTc3MjEsIDk3NzI2LCA5NzczMSwgOTc3MzYsIDk3NzQxLCA5Nzc0NiwgOTc3NTEsIAorICAgIDk3NzU2LCA5Nzc2MSwgOTc3NjYsIDk3NzcxLCA5Nzc3NiwgOTc3ODEsIDk3Nzg2LCA5Nzc5MSwgOTc3OTYsIDk3ODAxLCAKKyAgICA5NzgwNiwgOTc4MTEsIDk3ODE2LCA5NzgyMSwgOTc4MjYsIDk3ODMxLCA5NzgzNiwgOTc4NDEsIDk3ODQ2LCA5Nzg1MSwgCisgICAgOTc4NTYsIDk3ODYxLCA5Nzg2NiwgOTc4NzEsIDk3ODc2LCA5Nzg4MSwgOTc4ODYsIDk3ODkxLCA5Nzg5NiwgOTc5MDEsIAorICAgIDk3OTA2LCA5NzkxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTc5MTYsIDk3OTIyLCA5NzkyOSwgOTc5MzYsIAorICAgIDk3OTQyLCA5Nzk0OSwgOTc5NTYsIDk3OTYzLCA5Nzk3MCwgOTc5NzYsIDk3OTgzLCA5Nzk5MCwgOTc5OTcsIDk4MDA0LCAKKyAgICA5ODAxMSwgOTgwMTgsIDk4MDI1LCA5ODAzMiwgOTgwMzksIDk4MDQ2LCA5ODA1MywgOTgwNjAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDk4MDY3LCA5ODA3MiwgOTgwNzcsIDk4MDgyLCA5ODA4NywgOTgwOTIsIDk4MDk3LCA5ODEwMiwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI1ODA4LCAxMjU4MTIsIDEyNTgxNiwgCi0gICAgMTI1ODIxLCAxMjU4MjYsIDEyNTgyOCwgMTI1ODMyLCAxMjU4NDEsIDEyNTg0OSwgMTI1ODU3LCAxMjU4NzAsIDEyNTg4MywgCi0gICAgMTI1ODk2LCAxMjU5MDMsIDEyNTkxMCwgMTI1OTE0LCAxMjU5MjMsIDEyNTkzMSwgMTI1OTM1LCAxMjU5NDQsIDEyNTk1MSwgCi0gICAgMTI1OTU1LCAxMjU5NTksIDEyNTk2MywgMTI1OTY3LCAxMjU5NzQsIDEyNTk3OCwgMTI1OTgyLCAxMjU5ODYsIDEyNTk5MCwgCi0gICAgMTI1OTk3LCAxMjYwMDYsIDEyNjAxNSwgMTI2MDIyLCAxMjYwMzQsIDEyNjA0NiwgMTI2MDUwLCAxMjYwNTQsIDEyNjA1OCwgCi0gICAgMTI2MDYyLCAxMjYwNjYsIDEyNjA3MCwgMTI2MDc4LCAxMjYwODYsIDEyNjA5NCwgMTI2MDk4LCAxMjYxMDIsIDEyNjEwNiwgCi0gICAgMTI2MTEwLCAxMjYxMTQsIDEyNjExOCwgMTI2MTI0LCAxMjYxMzAsIDEyNjEzNCwgMTI2MTQ1LCAxMjYxNTMsIDEyNjE1NywgCi0gICAgMTI2MTYxLCAxMjYxNjUsIDEyNjE2OSwgMTI2MTc1LCAxMjYxODIsIDEyNjE5MywgMTI2MjAzLCAxMjYyMTMsIDEyNjIyNCwgCi0gICAgMTI2MjMzLCAxMjYyNDQsIDEyNjI1MCwgMTI2MjU2LCAwLCAwLCAwLCAwLCAxMjYyNjIsIDEyNjI3MSwgMTI2Mjc4LCAKLSAgICAxMjYyODQsIDEyNjI4OCwgMTI2MjkyLCAxMjYyOTYsIDEyNjMwNSwgMTI2MzE3LCAxMjYzMjEsIDEyNjMyOCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI2MzM1LCAKLSAgICAxMjYzMzcsIDEyNjMzOSwgMTI2MzQzLCAxMjYzNDcsIDEyNjM1MSwgMTI2MzYwLCAxMjYzNjIsIDEyNjM2NCwgMTI2MzY3LCAKLSAgICAxMjYzNjksIDEyNjM3MSwgMTI2Mzc1LCAxMjYzNzcsIDEyNjM4MSwgMTI2MzgzLCAxMjYzODcsIDEyNjM4OSwgMTI2MzkxLCAKLSAgICAxMjYzOTUsIDEyNjM5OSwgMTI2NDA1LCAxMjY0MDcsIDEyNjQxMSwgMTI2NDEzLCAxMjY0MTcsIDEyNjQyMSwgMTI2NDI1LCAKLSAgICAxMjY0MjksIDEyNjQzMSwgMTI2NDMzLCAxMjY0MzcsIDEyNjQ0MSwgMTI2NDQ1LCAxMjY0NDksIDEyNjQ1MSwgMTI2NDUzLCAKLSAgICAxMjY0NTUsIDEyNjQ2MCwgMTI2NDY1LCAxMjY0NjgsIDEyNjQ3NiwgMTI2NDg0LCAxMjY0ODYsIDEyNjQ5MSwgMTI2NDk0LCAKLSAgICAxMjY0OTksIDEyNjUxMCwgMTI2NTE3LCAxMjY1MjIsIDEyNjUyNywgMTI2NTI5LCAxMjY1MzMsIDEyNjUzNSwgMTI2NTM5LCAKLSAgICAxMjY1NDEsIDEyNjU0NSwgMTI2NTQ5LCAxMjY1NTIsIDEyNjU1NSwgMTI2NTU3LCAxMjY1NjAsIDEyNjU2MiwgMTI2NTY2LCAKLSAgICAxMjY1NjgsIDEyNjU3MCwgMTI2NTcyLCAxMjY1NzYsIDEyNjU3OCwgMTI2NTgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5ODEwNywgOTgxMTEsIDk4MTE1LCA5ODExOSwgOTgxMjMsIDk4MTI3LCAwLCAwLCA5ODEzMiwgCisgICAgMCwgOTgxMzcsIDk4MTQxLCA5ODE0NiwgOTgxNTEsIDk4MTU2LCA5ODE2MSwgOTgxNjYsIDk4MTcxLCA5ODE3NiwgOTgxODEsIAorICAgIDk4MTg2LCA5ODE5MCwgOTgxOTUsIDk4MjAwLCA5ODIwNSwgOTgyMTAsIDk4MjE1LCA5ODIyMCwgOTgyMjUsIDk4MjMwLCAKKyAgICA5ODIzNSwgOTgyMzksIDk4MjQ0LCA5ODI0OSwgOTgyNTQsIDk4MjU5LCA5ODI2NCwgOTgyNjksIDk4Mjc0LCA5ODI3OSwgCisgICAgOTgyODQsIDk4Mjg5LCA5ODI5NCwgOTgyOTksIDk4MzA0LCA5ODMwOSwgOTgzMTQsIDk4MzE5LCA5ODMyNCwgOTgzMjgsIAorICAgIDk4MzMzLCA5ODMzOCwgOTgzNDMsIDk4MzQ4LCAwLCA5ODM1MywgOTgzNTgsIDAsIDAsIDAsIDk4MzYzLCAwLCAwLCA5ODM2OCwgCisgICAgOTgzNzMsIDk4MzgwLCA5ODM4NywgOTgzOTQsIDk4NDAxLCA5ODQwOCwgOTg0MTUsIDk4NDIyLCA5ODQyOSwgOTg0MzYsIAorICAgIDk4NDQzLCA5ODQ1MCwgOTg0NTcsIDk4NDY0LCA5ODQ3MSwgOTg0NzgsIDk4NDg1LCA5ODQ5MiwgOTg0OTksIDk4NTA2LCAKKyAgICA5ODUxMywgOTg1MjAsIDAsIDk4NTI3LCA5ODUzNCwgOTg1NDAsIDk4NTQ2LCA5ODU1MiwgOTg1NTksIDk4NTY2LCA5ODU3NCwgCisgICAgOTg1ODIsIDk4NTkxLCA5ODU5NiwgOTg2MDEsIDk4NjA2LCA5ODYxMSwgOTg2MTYsIDk4NjIxLCA5ODYyNiwgOTg2MzEsIAorICAgIDk4NjM2LCA5ODY0MSwgOTg2NDYsIDk4NjUxLCA5ODY1NiwgOTg2NjIsIDk4NjY3LCA5ODY3MiwgOTg2NzcsIDk4NjgyLCAKKyAgICA5ODY4NywgOTg2OTIsIDk4Njk3LCA5ODcwMiwgOTg3MDcsIDk4NzEzLCA5ODcxOSwgOTg3MjMsIDk4NzI3LCA5ODczMSwgCisgICAgOTg3MzUsIDk4NzM5LCA5ODc0NCwgOTg3NDksIDk4NzU1LCA5ODc2MCwgOTg3NjYsIDk4NzcxLCA5ODc3NiwgOTg3ODEsIAorICAgIDk4Nzg3LCA5ODc5MiwgOTg3OTcsIDk4ODAyLCA5ODgwNywgOTg4MTIsIDk4ODE4LCA5ODgyMywgOTg4MjksIDk4ODM0LCAKKyAgICA5ODg0MCwgOTg4NDUsIDk4ODUxLCA5ODg1NiwgOTg4NjIsIDk4ODY3LCA5ODg3MiwgOTg4NzcsIDk4ODgyLCA5ODg4NywgCisgICAgOTg4OTIsIDk4ODk3LCA5ODkwMywgOTg5MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk4OTEzLCA5ODkxNywgOTg5MjEsIAorICAgIDk4OTI1LCA5ODkyOSwgOTg5MzUsIDk4OTM5LCA5ODk0NCwgOTg5NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk4OTU1LCA5ODk2MCwgOTg5NjUsIDk4OTcwLCAKKyAgICA5ODk3NSwgOTg5ODAsIDk4OTg1LCA5ODk5MCwgOTg5OTUsIDk5MDAwLCA5OTAwNSwgOTkwMTAsIDk5MDE1LCA5OTAyMCwgCisgICAgOTkwMjUsIDk5MDMwLCA5OTAzNSwgOTkwNDAsIDk5MDQ1LCAwLCA5OTA1MCwgOTkwNTUsIDAsIDAsIDAsIDAsIDAsIDk5MDYwLCAKKyAgICA5OTA2NCwgOTkwNjgsIDk5MDczLCA5OTA3OCwgOTkwODQsIDk5MDg5LCA5OTA5NCwgOTkwOTksIDk5MTA0LCA5OTEwOSwgCisgICAgOTkxMTQsIDk5MTE5LCA5OTEyNCwgOTkxMjksIDk5MTM0LCA5OTEzOSwgOTkxNDQsIDk5MTQ5LCA5OTE1NCwgOTkxNTksIAorICAgIDk5MTY0LCA5OTE2OSwgOTkxNzQsIDk5MTc5LCA5OTE4NCwgOTkxODksIDk5MTk0LCA5OTE5OCwgOTkyMDMsIDk5MjA4LCAKKyAgICA5OTIxNCwgOTkyMTgsIDAsIDAsIDAsIDk5MjIyLCA5OTIyOCwgOTkyMzIsIDk5MjM3LCA5OTI0MiwgOTkyNDcsIDk5MjUxLCAKKyAgICA5OTI1NiwgOTkyNjAsIDk5MjY1LCA5OTI3MCwgOTkyNzQsIDk5Mjc5LCA5OTI4NCwgOTkyODgsIDk5MjkyLCA5OTI5NywgCisgICAgOTkzMDIsIDk5MzA2LCA5OTMxMSwgOTkzMTYsIDk5MzIwLCA5OTMyNSwgOTkzMzAsIDk5MzM1LCA5OTM0MCwgOTkzNDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDk5MzUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMjY1ODUsIDEyNjU5MCwgMTI2NTk1LCAxMjY2MDAsIDEyNjYwNSwgMTI2NjEwLCAxMjY2MTUsIDEyNjYyMiwgCi0gICAgMTI2NjI5LCAxMjY2MzYsIDEyNjY0MywgMTI2NjQ4LCAxMjY2NTMsIDEyNjY1OCwgMTI2NjYzLCAxMjY2NzAsIDEyNjY3NiwgCi0gICAgMTI2NjgzLCAxMjY2OTAsIDEyNjY5NywgMTI2NzAyLCAxMjY3MDcsIDEyNjcxMiwgMTI2NzE3LCAxMjY3MjIsIDEyNjcyOSwgCi0gICAgMTI2NzM2LCAxMjY3NDEsIDEyNjc0NiwgMTI2NzUzLCAxMjY3NjAsIDEyNjc2OCwgMTI2Nzc2LCAxMjY3ODMsIDEyNjc5MCwgCi0gICAgMTI2Nzk4LCAxMjY4MDYsIDEyNjgxNCwgMTI2ODIxLCAxMjY4MzEsIDEyNjg0MiwgMTI2ODQ3LCAxMjY4NTQsIDEyNjg2MSwgCi0gICAgMTI2ODY4LCAxMjY4NzYsIDEyNjg4NCwgMTI2ODk1LCAxMjY5MDMsIDEyNjkxMSwgMTI2OTE5LCAxMjY5MjQsIDEyNjkyOSwgCi0gICAgMTI2OTM0LCAxMjY5MzksIDEyNjk0NCwgMTI2OTQ5LCAxMjY5NTQsIDEyNjk1OSwgMTI2OTY0LCAxMjY5NjksIDEyNjk3NCwgCi0gICAgMTI2OTc5LCAxMjY5ODYsIDEyNjk5MSwgMTI2OTk2LCAxMjcwMDMsIDEyNzAwOCwgMTI3MDEzLCAxMjcwMTgsIDEyNzAyMywgCi0gICAgMTI3MDI4LCAxMjcwMzMsIDEyNzAzOCwgMTI3MDQzLCAxMjcwNDgsIDEyNzA1MywgMTI3MDU4LCAxMjcwNjMsIDEyNzA3MCwgCi0gICAgMTI3MDc4LCAxMjcwODMsIDEyNzA4OCwgMTI3MDk1LCAxMjcxMDAsIDEyNzEwNSwgMTI3MTEwLCAxMjcxMTcsIDEyNzEyMiwgCi0gICAgMTI3MTI5LCAxMjcxMzQsIDEyNzE0MSwgMTI3MTQ2LCAxMjcxNTUsIDEyNzE2NCwgMTI3MTY5LCAxMjcxNzQsIDEyNzE3OSwgCi0gICAgMTI3MTg0LCAxMjcxODksIDEyNzE5NCwgMTI3MTk5LCAxMjcyMDQsIDEyNzIwOSwgMTI3MjE0LCAxMjcyMTksIDEyNzIyNCwgCi0gICAgMTI3MjI5LCAxMjcyMzcsIDEyNzI0NSwgMTI3MjUwLCAxMjcyNTUsIDEyNzI2MCwgMTI3MjY1LCAxMjcyNzAsIDEyNzI3NiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3MjgyLCAxMjcyODYsIDEyNzI5MCwgMTI3Mjk0LCAKLSAgICAxMjcyOTgsIDEyNzMwMiwgMTI3MzA2LCAxMjczMTAsIDEyNzMxNCwgMTI3MzE4LCAxMjczMjIsIDEyNzMyNiwgMTI3MzMwLCAKLSAgICAxMjczMzQsIDEyNzMzOCwgMTI3MzQyLCAxMjczNDYsIDEyNzM1MCwgMTI3MzU0LCAxMjczNTgsIDEyNzM2MiwgMTI3MzY2LCAKLSAgICAxMjczNzAsIDEyNzM3NCwgMTI3Mzc4LCAxMjczODIsIDEyNzM4NiwgMTI3MzkwLCAxMjczOTQsIDEyNzM5OCwgMTI3NDAyLCAKLSAgICAxMjc0MDYsIDEyNzQxMCwgMTI3NDE0LCAxMjc0MTgsIDEyNzQyMiwgMTI3NDI2LCAxMjc0MzAsIDEyNzQzNCwgMTI3NDM4LCAKLSAgICAxMjc0NDIsIDEyNzQ0NiwgMTI3NDUwLCAxMjc0NTQsIDEyNzQ1OCwgMTI3NDYyLCAxMjc0NjYsIDEyNzQ3MCwgMTI3NDc0LCAKLSAgICAxMjc0NzgsIDEyNzQ4MiwgMTI3NDg2LCAxMjc0OTAsIDEyNzQ5NCwgMTI3NDk4LCAxMjc1MDIsIDEyNzUwNiwgMTI3NTEwLCAKLSAgICAxMjc1MTQsIDEyNzUxOCwgMTI3NTIyLCAxMjc1MjYsIDEyNzUzMCwgMTI3NTM0LCAxMjc1MzgsIDEyNzU0MiwgMTI3NTQ2LCAKLSAgICAxMjc1NTAsIDEyNzU1NCwgMTI3NTU4LCAxMjc1NjIsIDEyNzU2NiwgMTI3NTcwLCAxMjc1NzQsIDEyNzU3OCwgMTI3NTgyLCAKLSAgICAxMjc1ODYsIDEyNzU5MCwgMTI3NTk0LCAxMjc1OTgsIDEyNzYwMiwgMTI3NjA2LCAxMjc2MTAsIDEyNzYxNCwgMTI3NjE4LCAKLSAgICAxMjc2MjIsIDEyNzYyNiwgMTI3NjMwLCAxMjc2MzQsIDEyNzYzOCwgMTI3NjQyLCAxMjc2NDYsIDEyNzY1MCwgMTI3NjU0LCAKLSAgICAxMjc2NTgsIDEyNzY2MiwgMTI3NjY2LCAxMjc2NzAsIDEyNzY3NCwgMTI3Njc4LCAxMjc2ODIsIDEyNzY4NiwgMTI3NjkwLCAKLSAgICAxMjc2OTQsIDEyNzY5OCwgMTI3NzAyLCAxMjc3MDYsIDEyNzcxMCwgMTI3NzE0LCAxMjc3MTgsIDEyNzcyMiwgMTI3NzI2LCAKLSAgICAxMjc3MzAsIDEyNzczNCwgMTI3NzM4LCAxMjc3NDIsIDEyNzc0NiwgMTI3NzUwLCAxMjc3NTQsIDEyNzc1OCwgMTI3NzYyLCAKLSAgICAxMjc3NjYsIDEyNzc3MCwgMTI3Nzc0LCAxMjc3NzgsIDEyNzc4MiwgMTI3Nzg2LCAxMjc3OTAsIDEyNzc5NCwgMTI3Nzk4LCAKLSAgICAxMjc4MDIsIDEyNzgwNiwgMTI3ODEwLCAxMjc4MTQsIDEyNzgxOCwgMTI3ODIyLCAxMjc4MjYsIDEyNzgzMCwgMTI3ODM0LCAKLSAgICAxMjc4MzgsIDEyNzg0MiwgMTI3ODQ2LCAxMjc4NTAsIDEyNzg1NCwgMTI3ODU4LCAxMjc4NjIsIDEyNzg2NiwgMTI3ODcwLCAKLSAgICAxMjc4NzQsIDEyNzg3OCwgMTI3ODgyLCAxMjc4ODYsIDEyNzg5MCwgMTI3ODk0LCAxMjc4OTgsIDEyNzkwMiwgMTI3OTA2LCAKLSAgICAxMjc5MTAsIDEyNzkxNCwgMTI3OTE4LCAxMjc5MjIsIDEyNzkyNiwgMTI3OTMwLCAxMjc5MzQsIDEyNzkzOCwgMTI3OTQyLCAKLSAgICAxMjc5NDYsIDEyNzk1MCwgMTI3OTU0LCAxMjc5NTgsIDEyNzk2MiwgMTI3OTY2LCAxMjc5NzAsIDEyNzk3NCwgMTI3OTc4LCAKLSAgICAxMjc5ODIsIDEyNzk4NiwgMTI3OTkwLCAxMjc5OTQsIDEyNzk5OCwgMTI4MDAyLCAxMjgwMDYsIDEyODAxMCwgMTI4MDE0LCAKLSAgICAxMjgwMTgsIDEyODAyMiwgMTI4MDI2LCAxMjgwMzAsIDEyODAzNCwgMTI4MDM4LCAxMjgwNDIsIDEyODA0NiwgMTI4MDUwLCAKLSAgICAxMjgwNTQsIDEyODA1OCwgMTI4MDYyLCAxMjgwNjYsIDEyODA3MCwgMTI4MDc0LCAxMjgwNzgsIDEyODA4MiwgMTI4MDg2LCAKLSAgICAxMjgwOTAsIDEyODA5NCwgMTI4MDk4LCAxMjgxMDIsIDEyODEwNiwgMTI4MTEwLCAxMjgxMTQsIDEyODExOCwgMTI4MTIyLCAKLSAgICAxMjgxMjYsIDEyODEzMCwgMTI4MTM0LCAxMjgxMzgsIDEyODE0MiwgMTI4MTQ2LCAxMjgxNTAsIDEyODE1NCwgMTI4MTU4LCAKLSAgICAxMjgxNjIsIDEyODE2NiwgMTI4MTcwLCAxMjgxNzQsIDEyODE3OCwgMTI4MTgyLCAxMjgxODYsIDEyODE5MCwgMTI4MTk0LCAKLSAgICAxMjgxOTgsIDEyODIwMiwgMTI4MjA2LCAxMjgyMTAsIDEyODIxNCwgMTI4MjE4LCAxMjgyMjIsIDEyODIyNiwgMTI4MjMwLCAKLSAgICAxMjgyMzQsIDEyODIzOCwgMTI4MjQyLCAxMjgyNDYsIDEyODI1MCwgMTI4MjU0LCAxMjgyNTgsIDEyODI2MiwgMTI4MjY2LCAKLSAgICAxMjgyNzAsIDEyODI3NCwgMTI4Mjc4LCAxMjgyODIsIDEyODI4NiwgMTI4MjkwLCAxMjgyOTQsIDEyODI5OCwgMTI4MzAyLCAKLSAgICAxMjgzMDYsIDEyODMxMCwgMTI4MzE0LCAxMjgzMTgsIDEyODMyMiwgMTI4MzI2LCAxMjgzMzAsIDEyODMzNCwgMTI4MzM4LCAKLSAgICAxMjgzNDIsIDEyODM0NiwgMTI4MzUwLCAxMjgzNTQsIDEyODM1OCwgMTI4MzYyLCAxMjgzNjYsIDEyODM3MCwgMTI4Mzc0LCAKLSAgICAxMjgzNzgsIDEyODM4MiwgMTI4Mzg2LCAxMjgzOTAsIDEyODM5NCwgMTI4Mzk4LCAxMjg0MDIsIDEyODQwNiwgMTI4NDEwLCAKLSAgICAxMjg0MTQsIDEyODQxOCwgMTI4NDIyLCAxMjg0MjYsIDEyODQzMCwgMTI4NDM0LCAxMjg0MzgsIDEyODQ0MiwgMTI4NDQ2LCAKLSAgICAxMjg0NTAsIDEyODQ1NCwgMTI4NDU4LCAxMjg0NjIsIDEyODQ2NiwgMTI4NDcwLCAxMjg0NzQsIDEyODQ3OCwgMTI4NDgyLCAKLSAgICAxMjg0ODYsIDEyODQ5MCwgMTI4NDk0LCAxMjg0OTgsIDEyODUwMiwgMTI4NTA2LCAxMjg1MTAsIDEyODUxNCwgMTI4NTE4LCAKLSAgICAxMjg1MjIsIDEyODUyNiwgMTI4NTMwLCAxMjg1MzQsIDEyODUzOCwgMTI4NTQyLCAxMjg1NDYsIDEyODU1MCwgMTI4NTU0LCAKLSAgICAxMjg1NTgsIDEyODU2MiwgMTI4NTY2LCAxMjg1NzAsIDEyODU3NCwgMTI4NTc4LCAxMjg1ODIsIDEyODU4NiwgMTI4NTkwLCAKLSAgICAxMjg1OTQsIDEyODU5OCwgMTI4NjAyLCAxMjg2MDYsIDEyODYxMCwgMTI4NjE0LCAxMjg2MTgsIDEyODYyMiwgMTI4NjI2LCAKLSAgICAxMjg2MzAsIDEyODYzNCwgMTI4NjM4LCAxMjg2NDIsIDEyODY0NiwgMTI4NjUwLCAxMjg2NTQsIDEyODY1OCwgMTI4NjYyLCAKLSAgICAxMjg2NjYsIDEyODY3MCwgMTI4Njc0LCAxMjg2NzgsIDEyODY4MiwgMTI4Njg2LCAxMjg2OTAsIDEyODY5NCwgMTI4Njk4LCAKLSAgICAxMjg3MDIsIDEyODcwNiwgMTI4NzEwLCAxMjg3MTQsIDEyODcxOCwgMTI4NzIyLCAxMjg3MjYsIDEyODczMCwgMTI4NzM0LCAKLSAgICAxMjg3MzgsIDEyODc0MiwgMTI4NzQ2LCAxMjg3NTAsIDEyODc1NCwgMTI4NzU4LCAxMjg3NjIsIDEyODc2NiwgMTI4NzcwLCAKLSAgICAxMjg3NzQsIDEyODc3OCwgMTI4NzgyLCAxMjg3ODYsIDEyODc5MCwgMTI4Nzk0LCAxMjg3OTgsIDEyODgwMiwgMTI4ODA2LCAKLSAgICAxMjg4MTAsIDEyODgxNCwgMTI4ODE4LCAxMjg4MjIsIDEyODgyNiwgMTI4ODMwLCAxMjg4MzQsIDEyODgzOCwgMTI4ODQyLCAKLSAgICAxMjg4NDYsIDEyODg1MCwgMTI4ODU0LCAxMjg4NTgsIDEyODg2MiwgMTI4ODY2LCAxMjg4NzAsIDEyODg3NCwgMTI4ODc4LCAKLSAgICAxMjg4ODIsIDEyODg4NiwgMTI4ODkwLCAxMjg4OTQsIDEyODg5OCwgMTI4OTAyLCAxMjg5MDYsIDEyODkxMCwgMTI4OTE0LCAKLSAgICAxMjg5MTgsIDEyODkyMiwgMTI4OTI2LCAxMjg5MzAsIDEyODkzNCwgMTI4OTM4LCAxMjg5NDIsIDEyODk0NiwgMTI4OTUwLCAKLSAgICAxMjg5NTQsIDEyODk1OCwgMTI4OTYyLCAxMjg5NjYsIDEyODk3MCwgMTI4OTc0LCAxMjg5NzgsIDEyODk4MiwgMTI4OTg2LCAKLSAgICAxMjg5OTAsIDEyODk5NCwgMTI4OTk4LCAxMjkwMDIsIDEyOTAwNiwgMTI5MDEwLCAxMjkwMTQsIDEyOTAxOCwgMTI5MDIyLCAKLSAgICAxMjkwMjYsIDEyOTAzMCwgMTI5MDM0LCAxMjkwMzgsIDEyOTA0MiwgMTI5MDQ2LCAxMjkwNTAsIDEyOTA1NCwgMTI5MDU4LCAKLSAgICAxMjkwNjIsIDEyOTA2NiwgMTI5MDcwLCAxMjkwNzQsIDEyOTA3OCwgMTI5MDgyLCAxMjkwODYsIDEyOTA5MCwgMTI5MDk0LCAKLSAgICAxMjkwOTgsIDEyOTEwMiwgMTI5MTA2LCAxMjkxMTAsIDEyOTExNCwgMTI5MTE4LCAxMjkxMjIsIDEyOTEyNiwgMTI5MTMwLCAKLSAgICAxMjkxMzQsIDEyOTEzOCwgMTI5MTQyLCAxMjkxNDYsIDEyOTE1MCwgMTI5MTU0LCAxMjkxNTgsIDEyOTE2MiwgMTI5MTY2LCAKLSAgICAxMjkxNzAsIDEyOTE3NCwgMTI5MTc4LCAxMjkxODIsIDEyOTE4NiwgMTI5MTkwLCAxMjkxOTQsIDEyOTE5OCwgMTI5MjAyLCAKLSAgICAxMjkyMDYsIDEyOTIxMCwgMTI5MjE0LCAxMjkyMTgsIDEyOTIyMiwgMTI5MjI2LCAxMjkyMzAsIDEyOTIzNCwgMTI5MjM4LCAKLSAgICAxMjkyNDIsIDEyOTI0NiwgMTI5MjUwLCAxMjkyNTQsIDEyOTI1OCwgMTI5MjYyLCAxMjkyNjYsIDEyOTI3MCwgMTI5Mjc0LCAKLSAgICAxMjkyNzgsIDEyOTI4MiwgMTI5Mjg2LCAxMjkyOTAsIDEyOTI5NCwgMTI5Mjk4LCAxMjkzMDIsIDEyOTMwNiwgMTI5MzEwLCAKLSAgICAxMjkzMTQsIDEyOTMxOCwgMTI5MzIyLCAxMjkzMjYsIDEyOTMzMCwgMTI5MzM0LCAxMjkzMzgsIDEyOTM0MiwgMTI5MzQ2LCAKLSAgICAxMjkzNTAsIDEyOTM1NCwgMTI5MzU4LCAxMjkzNjIsIDEyOTM2NiwgMTI5MzcwLCAxMjkzNzQsIDEyOTM3OCwgMTI5MzgyLCAKLSAgICAxMjkzODYsIDEyOTM5MCwgMTI5Mzk0LCAxMjkzOTgsIDEyOTQwMiwgMTI5NDA2LCAxMjk0MTAsIDEyOTQxNCwgMTI5NDE4LCAKLSAgICAxMjk0MjIsIDEyOTQyNiwgMTI5NDMwLCAxMjk0MzQsIDEyOTQzOCwgMTI5NDQyLCAxMjk0NDYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk5MzU1LCAKKyAgICA5OTM2MCwgOTkzNjUsIDk5MzcwLCA5OTM3NSwgOTkzODAsIDk5Mzg2LCA5OTM5MiwgOTkzOTgsIDk5NDAzLCA5OTQwOCwgCisgICAgOTk0MTQsIDk5NDIwLCA5OTQyNiwgOTk0MzIsIDk5NDM4LCA5OTQ0NCwgOTk0NTAsIDk5NDU2LCA5OTQ2MiwgOTk0NjgsIAorICAgIDk5NDc0LCA5OTQ4MCwgOTk0ODUsIDk5NDkxLCA5OTQ5NywgOTk1MDMsIDk5NTA5LCA5OTUxNSwgOTk1MjAsIDk5NTI2LCAKKyAgICA5OTUzMiwgOTk1MzgsIDk5NTQyLCA5OTU0NiwgOTk1NTAsIDk5NTU0LCA5OTU1OCwgOTk1NjMsIDk5NTY4LCA5OTU3MiwgCisgICAgOTk1NzYsIDk5NTgxLCA5OTU4NiwgOTk1OTEsIDk5NTk2LCA5OTYwMSwgOTk2MDYsIDk5NjExLCA5OTYxOCwgOTk2MjMsIAorICAgIDk5NjI3LCA5OTYzMiwgOTk2MzcsIDk5NjQyLCA5OTY0NiwgMCwgMCwgMCwgMCwgOTk2NTEsIDk5NjU5LCA5OTY2NiwgCisgICAgOTk2NzIsIDk5Njc4LCA5OTY4MiwgOTk2ODYsIDk5NjkwLCA5OTY5NCwgOTk2OTgsIDk5NzAyLCA5OTcwNywgOTk3MTEsIAorICAgIDk5NzE2LCA5OTcyMSwgOTk3MjYsIDk5NzMxLCA5OTczNiwgOTk3NDEsIDk5NzQ2LCAwLCAwLCA5OTc1MSwgOTk3NTcsIAorICAgIDk5NzYzLCA5OTc2OSwgOTk3NzYsIDk5NzgzLCA5OTc5MCwgOTk3OTcsIDk5ODA0LCA5OTgxMSwgOTk4MTcsIDk5ODIzLCAKKyAgICA5OTgyOSwgOTk4MzYsIDk5ODQzLCA5OTg1MCwgOTk4NTcsIDk5ODY0LCA5OTg3MSwgOTk4NzgsIDk5ODg1LCA5OTg5MiwgCisgICAgOTk4OTksIDk5OTA2LCA5OTkxMywgOTk5MjAsIDk5OTI3LCA5OTkzNCwgOTk5NDIsIDk5OTUwLCA5OTk1OCwgOTk5NjcsIAorICAgIDk5OTc2LCA5OTk4NSwgOTk5OTQsIDEwMDAwMywgMTAwMDEyLCAxMDAwMTksIDEwMDAyNiwgMTAwMDMzLCAxMDAwNDEsIAorICAgIDEwMDA0OSwgMTAwMDU3LCAxMDAwNjUsIDEwMDA3MywgMTAwMDgxLCAxMDAwODksIDEwMDA5MywgMTAwMDk4LCAxMDAxMDMsIAorICAgIDAsIDEwMDEwOSwgMTAwMTE0LCAwLCAwLCAwLCAwLCAwLCAxMDAxMTksIDEwMDEyNSwgMTAwMTMyLCAxMDAxMzcsIDEwMDE0MiwgCisgICAgMTAwMTQ2LCAxMDAxNTEsIDEwMDE1NiwgMCwgMTAwMTYxLCAxMDAxNjYsIDEwMDE3MSwgMCwgMTAwMTc2LCAxMDAxODEsIAorICAgIDEwMDE4NiwgMTAwMTkxLCAxMDAxOTYsIDEwMDIwMSwgMTAwMjA2LCAxMDAyMTEsIDEwMDIxNiwgMTAwMjIxLCAxMDAyMjYsIAorICAgIDEwMDIzMSwgMTAwMjM1LCAxMDAyNDAsIDEwMDI0NSwgMTAwMjUwLCAxMDAyNTQsIDEwMDI1OCwgMTAwMjYzLCAxMDAyNjgsIAorICAgIDEwMDI3MywgMTAwMjc4LCAxMDAyODMsIDEwMDI4OCwgMTAwMjkzLCAxMDAyOTcsIDEwMDMwMiwgMCwgMCwgMCwgMCwgCisgICAgMTAwMzA3LCAxMDAzMTMsIDEwMDMxOCwgMCwgMCwgMCwgMCwgMTAwMzIzLCAxMDAzMjcsIDEwMDMzMSwgMTAwMzM1LCAKKyAgICAxMDAzMzksIDEwMDM0MywgMTAwMzQ4LCAxMDAzNTMsIDEwMDM1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAwMzY1LCAKKyAgICAxMDAzNzEsIDEwMDM3OCwgMTAwMzg0LCAxMDAzOTEsIDEwMDM5NywgMTAwNDAzLCAxMDA0MDksIDEwMDQxNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTAwNDIyLCAxMDA0MzAsIDEwMDQzOCwgMTAwNDQ2LCAxMDA0NTQsIDEwMDQ2MiwgMTAwNDcwLCAKKyAgICAxMDA0NzgsIDEwMDQ4NiwgMTAwNDk0LCAxMDA1MDIsIDEwMDUxMCwgMTAwNTE4LCAxMDA1MjYsIDEwMDUzNCwgMTAwNTQyLCAKKyAgICAxMDA1NTAsIDEwMDU1OCwgMTAwNTY2LCAxMDA1NzQsIDEwMDU4MiwgMTAwNTkwLCAxMDA1OTgsIDEwMDYwNiwgMTAwNjE0LCAKKyAgICAxMDA2MjIsIDEwMDYzMCwgMTAwNjM4LCAxMDA2NDYsIDEwMDY1NCwgMTAwNjYxLCAxMDA2NjksIDEwMDY3NywgMTAwNjg0LCAKKyAgICAxMDA2OTEsIDEwMDY5OCwgMTAwNzA1LCAxMDA3MTIsIDEwMDcxOSwgMTAwNzI2LCAxMDA3MzMsIDEwMDc0MCwgMTAwNzQ3LCAKKyAgICAxMDA3NTQsIDEwMDc2MSwgMTAwNzY4LCAxMDA3NzUsIDEwMDc4MiwgMTAwNzg5LCAxMDA3OTYsIDEwMDgwMywgMTAwODEwLCAKKyAgICAxMDA4MTcsIDEwMDgyNCwgMTAwODMxLCAxMDA4MzgsIDEwMDg0NSwgMTAwODUyLCAxMDA4NTksIDEwMDg2NiwgMTAwODczLCAKKyAgICAxMDA4ODAsIDEwMDg4NiwgMTAwODkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDA5MDAsIDEwMDkwNSwgMTAwOTEwLCAKKyAgICAxMDA5MTUsIDEwMDkyMCwgMTAwOTI1LCAxMDA5MzAsIDEwMDkzNSwgMTAwOTQwLCAxMDA5NDUsIDEwMDk1MCwgMTAwOTU1LCAKKyAgICAxMDA5NjAsIDEwMDk2NSwgMTAwOTcwLCAxMDA5NzUsIDEwMDk4MCwgMTAwOTg1LCAxMDA5OTAsIDEwMDk5NSwgMTAxMDAwLCAKKyAgICAxMDEwMDUsIDEwMTAxMCwgMTAxMDE1LCAxMDEwMjAsIDEwMTAyNSwgMTAxMDMwLCAxMDEwMzUsIDEwMTA0MCwgMTAxMDQ1LCAKKyAgICAxMDEwNTAsIDEwMTA1NSwgMTAxMDYwLCAxMDEwNjUsIDEwMTA3MCwgMTAxMDc1LCAxMDEwODAsIDEwMTA4NSwgMTAxMDkxLCAKKyAgICAwLCAwLCAwLCAwLCAxMDEwOTcsIDEwMTEwMSwgMTAxMTA1LCAxMDExMTAsIDEwMTExNSwgMTAxMTIxLCAxMDExMjcsIAorICAgIDEwMTEzMywgMTAxMTQzLCAxMDExNTIsIDEwMTE1OCwgMTAxMTY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDExNzMsIDEwMTE3NywgMTAxMTgyLCAxMDExODcsIDEwMTE5MiwgMTAxMTk3LCAxMDEyMDIsIDEwMTIwNywgMTAxMjEyLCAKKyAgICAxMDEyMTYsIDEwMTIyMSwgMTAxMjI1LCAxMDEyMzAsIDEwMTIzNCwgMTAxMjM5LCAxMDEyNDMsIDEwMTI0OCwgMTAxMjUzLCAKKyAgICAxMDEyNTgsIDEwMTI2MywgMTAxMjY4LCAxMDEyNzMsIDEwMTI3OCwgMTAxMjgzLCAxMDEyODgsIDEwMTI5MywgMTAxMjk4LCAKKyAgICAxMDEzMDMsIDEwMTMwOCwgMTAxMzEzLCAxMDEzMTgsIDEwMTMyMywgMTAxMzI4LCAxMDEzMzMsIDEwMTMzOCwgMTAxMzQzLCAKKyAgICAxMDEzNDgsIDEwMTM1MywgMTAxMzU4LCAxMDEzNjMsIDEwMTM2OCwgMTAxMzczLCAxMDEzNzgsIDEwMTM4MywgMTAxMzg4LCAKKyAgICAxMDEzOTMsIDEwMTM5OCwgMTAxNDAzLCAxMDE0MDgsIDEwMTQxMywgMTAxNDE4LCAxMDE0MjMsIDEwMTQyOCwgMTAxNDMzLCAKKyAgICAwLCAwLCAwLCAxMDE0MzgsIDEwMTQ0MywgMTAxNDUyLCAxMDE0NjAsIDEwMTQ2OSwgMTAxNDc4LCAxMDE0ODksIDEwMTUwMCwgCisgICAgMTAxNTA3LCAxMDE1MTQsIDEwMTUyMSwgMTAxNTI4LCAxMDE1MzUsIDEwMTU0MiwgMTAxNTQ5LCAxMDE1NTYsIDEwMTU2MywgCisgICAgMTAxNTcwLCAxMDE1NzcsIDEwMTU4NCwgMTAxNTkxLCAxMDE1OTgsIDEwMTYwNSwgMTAxNjEyLCAxMDE2MTksIDEwMTYyNiwgCisgICAgMTAxNjMzLCAxMDE2NDAsIDEwMTY0NywgMCwgMCwgMTAxNjU0LCAxMDE2NjAsIDEwMTY2NiwgMTAxNjcyLCAxMDE2NzgsIAorICAgIDEwMTY4NSwgMTAxNjkyLCAxMDE3MDAsIDEwMTcwOCwgMTAxNzE1LCAxMDE3MjIsIDEwMTcyOSwgMTAxNzM2LCAxMDE3NDMsIAorICAgIDEwMTc1MCwgMTAxNzU3LCAxMDE3NjQsIDEwMTc3MSwgMTAxNzc4LCAxMDE3ODUsIDEwMTc5MiwgMTAxNzk5LCAxMDE4MDYsIAorICAgIDEwMTgxMywgMTAxODIwLCAxMDE4MjcsIDEwMTgzNCwgMCwgMCwgMCwgMCwgMCwgMTAxODQxLCAxMDE4NDcsIDEwMTg1MywgCisgICAgMTAxODU5LCAxMDE4NjUsIDEwMTg3MiwgMTAxODc5LCAxMDE4ODcsIDEwMTg5NSwgMTAxOTAyLCAxMDE5MDksIDEwMTkxNiwgCisgICAgMTAxOTIzLCAxMDE5MzAsIDEwMTkzNywgMTAxOTQ0LCAxMDE5NTEsIDEwMTk1OCwgMTAxOTY1LCAxMDE5NzIsIDEwMTk3OSwgCisgICAgMTAxOTg2LCAxMDE5OTMsIDEwMjAwMCwgMTAyMDA3LCAxMDIwMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjAyMSwgCisgICAgMTAyMDI4LCAxMDIwMzcsIDEwMjA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyMDU3LCAKKyAgICAxMDIwNjMsIDEwMjA2OSwgMTAyMDc1LCAxMDIwODEsIDEwMjA4OCwgMTAyMDk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk0NTAsIDAsIAorICAgIDEwMjEwMywgMTAyMTEwLCAxMDIxMTcsIDEwMjEyNSwgMTAyMTMyLCAxMDIxMzksIDEwMjE0NiwgMTAyMTUzLCAxMDIxNjEsIAorICAgIDEwMjE2OSwgMTAyMTc3LCAxMDIxODUsIDEwMjE5MywgMTAyMjAxLCAxMDIyMDksIDEwMjIxNywgMTAyMjI1LCAxMDIyMzMsIAorICAgIDEwMjI0MSwgMTAyMjQ5LCAxMDIyNTcsIDEwMjI2NSwgMTAyMjczLCAxMDIyODEsIDEwMjI4OSwgMTAyMjk3LCAxMDIzMDUsIAorICAgIDEwMjMxMywgMTAyMzIxLCAxMDIzMjksIDEwMjMzNywgMTAyMzQ1LCAxMDIzNTMsIDEwMjM2MSwgMTAyMzY5LCAxMDIzNzcsIAorICAgIDEwMjM4NSwgMTAyMzkzLCAxMDI0MDEsIDEwMjQwOSwgMTAyNDE3LCAxMDI0MjUsIDEwMjQzMywgMTAyNDQxLCAxMDI0NDksIAorICAgIDEwMjQ1NywgMTAyNDY1LCAxMDI0NzMsIDEwMjQ4MSwgMTAyNDg5LCAxMDI0OTcsIDEwMjUwNSwgMTAyNTEzLCAxMDI1MjEsIAorICAgIDEwMjUyOSwgMTAyNTM3LCAxMDI1NDUsIDEwMjU1MywgMTAyNTYxLCAxMDI1NjksIDEwMjU3NywgMTAyNTg1LCAxMDI1OTMsIAorICAgIDEwMjYwMSwgMTAyNjA5LCAxMDI2MTcsIDEwMjYyNSwgMTAyNjMzLCAxMDI2NDEsIDEwMjY0OSwgMTAyNjU3LCAxMDI2NjUsIAorICAgIDEwMjY3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTI5NDU0LCAxMjk0NTcsIDEyOTQ2MSwgMTI5NDY1LCAxMjk0NjgsIDEyOTQ3MiwgMTI5NDc2LCAKLSAgICAxMjk0NzksIDEyOTQ4MiwgMTI5NDg2LCAxMjk0OTAsIDEyOTQ5MywgMTI5NDk2LCAxMjk0OTksIDEyOTUwMiwgMTI5NTA3LCAKLSAgICAxMjk1MTAsIDEyOTUxNCwgMTI5NTE3LCAxMjk1MjAsIDEyOTUyMywgMTI5NTI2LCAxMjk1MjksIDEyOTUzMiwgMTI5NTM1LCAKLSAgICAxMjk1MzgsIDEyOTU0MSwgMTI5NTQ0LCAxMjk1NDcsIDEyOTU1MSwgMTI5NTU1LCAxMjk1NTksIDEyOTU2MywgMTI5NTY4LCAKLSAgICAxMjk1NzMsIDEyOTU3OSwgMTI5NTg1LCAxMjk1OTEsIDEyOTU5NiwgMTI5NjAyLCAxMjk2MDgsIDEyOTYxNCwgMTI5NjE5LCAKLSAgICAxMjk2MjUsIDEyOTYzMSwgMTI5NjM2LCAxMjk2NDEsIDEyOTY0NywgMTI5NjUyLCAxMjk2NTgsIDEyOTY2NCwgMTI5NjY5LCAKLSAgICAxMjk2NzUsIDEyOTY4MSwgMTI5Njg2LCAxMjk2OTIsIDEyOTY5OCwgMTI5NzA0LCAxMjk3MTAsIDEyOTcxNiwgMTI5NzIwLCAKLSAgICAxMjk3MjUsIDEyOTcyOSwgMTI5NzM0LCAxMjk3MzgsIDEyOTc0MywgMTI5NzQ4LCAxMjk3NTQsIDEyOTc2MCwgMTI5NzY2LCAKLSAgICAxMjk3NzEsIDEyOTc3NywgMTI5NzgzLCAxMjk3ODksIDEyOTc5NCwgMTI5ODAwLCAxMjk4MDYsIDEyOTgxMSwgMTI5ODE2LCAKLSAgICAxMjk4MjIsIDEyOTgyNywgMTI5ODMzLCAxMjk4MzksIDEyOTg0NCwgMTI5ODUwLCAxMjk4NTYsIDEyOTg2MSwgMTI5ODY3LCAKLSAgICAxMjk4NzMsIDEyOTg3OSwgMTI5ODg1LCAxMjk4OTEsIDEyOTg5NiwgMTI5OTAwLCAxMjk5MDUsIDEyOTkwNywgMTI5OTExLCAKLSAgICAxMjk5MTQsIDEyOTkxNywgMTI5OTIwLCAxMjk5MjMsIDEyOTkyNiwgMTI5OTI5LCAxMjk5MzIsIDEyOTkzNSwgMTI5OTM4LCAKLSAgICAxMjk5NDEsIDEyOTk0NCwgMTI5OTQ3LCAxMjk5NTAsIDEyOTk1MywgMTI5OTU2LCAxMjk5NTksIDEyOTk2MiwgMTI5OTY1LCAKLSAgICAxMjk5NjgsIDEyOTk3MSwgMTI5OTc0LCAxMjk5NzcsIDEyOTk4MCwgMTI5OTgzLCAxMjk5ODYsIDEyOTk4OSwgMTI5OTkyLCAKLSAgICAxMjk5OTUsIDEyOTk5OCwgMTMwMDAxLCAxMzAwMDQsIDEzMDAwNywgMTMwMDEwLCAxMzAwMTMsIDEzMDAxNiwgMTMwMDE5LCAKLSAgICAxMzAwMjIsIDEzMDAyNSwgMTMwMDI4LCAxMzAwMzEsIDEzMDAzNCwgMTMwMDM3LCAxMzAwNDAsIDEzMDA0MywgMTMwMDQ2LCAKLSAgICAxMzAwNDksIDEzMDA1MiwgMTMwMDU1LCAxMzAwNTgsIDEzMDA2MSwgMTMwMDY0LCAxMzAwNjcsIDEzMDA3MCwgMTMwMDczLCAKLSAgICAxMzAwNzYsIDEzMDA3OSwgMTMwMDgyLCAxMzAwODUsIDEzMDA4OCwgMTMwMDkxLCAxMzAwOTQsIDEzMDA5NywgMTMwMTAwLCAKLSAgICAxMzAxMDMsIDEzMDEwNiwgMTMwMTA5LCAxMzAxMTIsIDEzMDExNSwgMTMwMTE4LCAxMzAxMjEsIDEzMDEyNCwgMTMwMTI3LCAKLSAgICAxMzAxMzAsIDEzMDEzMywgMTMwMTM2LCAxMzAxMzksIDEzMDE0MiwgMTMwMTQ1LCAxMzAxNDgsIDEzMDE1MSwgMTMwMTU0LCAKLSAgICAxMzAxNTcsIDEzMDE2MCwgMTMwMTYzLCAxMzAxNjYsIDEzMDE2OSwgMTMwMTcyLCAxMzAxNzUsIDEzMDE3OCwgMTMwMTgxLCAKLSAgICAxMzAxODQsIDEzMDE4NywgMTMwMTkwLCAxMzAxOTMsIDEzMDE5NiwgMTMwMTk5LCAxMzAyMDIsIDEzMDIwNSwgMTMwMjA4LCAKLSAgICAxMzAyMTEsIDEzMDIxNCwgMTMwMjE3LCAxMzAyMjAsIDEzMDIyMywgMTMwMjI2LCAxMzAyMjksIDEzMDIzMiwgMTMwMjM1LCAKLSAgICAxMzAyMzgsIDEzMDI0MSwgMTMwMjQ0LCAxMzAyNDcsIDEzMDI1MCwgMTMwMjUzLCAxMzAyNTYsIDEzMDI1OSwgMTMwMjYyLCAKLSAgICAxMzAyNjUsIDEzMDI2OCwgMTMwMjcxLCAxMzAyNzQsIDEzMDI3NywgMTMwMjgwLCAxMzAyODMsIDEzMDI4NiwgMTMwMjg5LCAKLSAgICAxMzAyOTIsIDEzMDI5NSwgMTMwMjk4LCAxMzAzMDEsIDEzMDMwNCwgMTMwMzA3LCAxMzAzMTAsIDEzMDMxMywgMTMwMzE2LCAKLSAgICAxMzAzMTksIDEzMDMyMiwgMTMwMzI1LCAxMzAzMjgsIDEzMDMzMSwgMTMwMzM0LCAxMzAzMzcsIDEzMDM0MCwgMTMwMzQzLCAKLSAgICAxMzAzNDYsIDEzMDM0OSwgMTMwMzUyLCAxMzAzNTUsIDEzMDM1OCwgMTMwMzYxLCAxMzAzNjQsIDEzMDM2NywgMTMwMzcwLCAKLSAgICAxMzAzNzMsIDEzMDM3NiwgMTMwMzc5LCAxMzAzODIsIDEzMDM4NSwgMTMwMzg4LCAxMzAzOTEsIDEzMDM5NCwgMTMwMzk3LCAKLSAgICAxMzA0MDAsIDEzMDQwMywgMTMwNDA2LCAxMzA0MDksIDEzMDQxMiwgMTMwNDE1LCAxMzA0MTgsIDEzMDQyMSwgMTMwNDI0LCAKLSAgICAxMzA0MjcsIDEzMDQzMCwgMTMwNDMzLCAxMzA0MzYsIDEzMDQzOSwgMTMwNDQyLCAxMzA0NDUsIDEzMDQ0OCwgMTMwNDUxLCAKLSAgICAxMzA0NTQsIDEzMDQ1NywgMTMwNDYwLCAxMzA0NjMsIDEzMDQ2NiwgMTMwNDY5LCAxMzA0NzIsIDEzMDQ3NSwgMTMwNDc4LCAKLSAgICAxMzA0ODEsIDEzMDQ4NCwgMTMwNDg3LCAxMzA0OTAsIDEzMDQ5MywgMTMwNDk2LCAxMzA0OTksIDEzMDUwMiwgMTMwNTA1LCAKLSAgICAxMzA1MDgsIDEzMDUxMSwgMTMwNTE0LCAxMzA1MTcsIDEzMDUyMCwgMTMwNTIzLCAxMzA1MjYsIDEzMDUyOSwgMTMwNTMyLCAKLSAgICAxMzA1MzUsIDEzMDUzOCwgMTMwNTQxLCAxMzA1NDQsIDEzMDU0NywgMTMwNTUwLCAxMzA1NTMsIDEzMDU1NiwgMTMwNTU5LCAKLSAgICAxMzA1NjIsIDEzMDU2NSwgMTMwNTY4LCAxMzA1NzEsIDEzMDU3NCwgMTMwNTc3LCAxMzA1ODAsIDEzMDU4MywgMTMwNTg2LCAKLSAgICAxMzA1ODksIDEzMDU5MiwgMTMwNTk1LCAxMzA1OTgsIDEzMDYwMSwgMTMwNjA0LCAxMzA2MDcsIDEzMDYxMCwgMTMwNjEzLCAKLSAgICAxMzA2MTYsIDEzMDYxOSwgMTMwNjIyLCAxMzA2MjUsIDEzMDYyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTMwNjMxLCAxMzA2MzMsIDEzMDYzNSwgMTMwNjQwLCAxMzA2NDIsIDEzMDY0NywgMTMwNjQ5LCAKLSAgICAxMzA2NTQsIDEzMDY1NiwgMTMwNjYxLCAxMzA2NjMsIDEzMDY2NSwgMTMwNjY3LCAxMzA2NjksIDEzMDY3MSwgMTMwNjczLCAKLSAgICAxMzA2NzUsIDEzMDY3NywgMTMwNjc5LCAxMzA2ODIsIDEzMDY4NSwgMTMwNjg3LCAxMzA2ODksIDEzMDY5MywgMTMwNjk2LCAKLSAgICAxMzA3MDEsIDEzMDcwMywgMTMwNzA1LCAxMzA3MDcsIDEzMDcxMSwgMTMwNzE0LCAxMzA3MTYsIDEzMDcyMCwgMTMwNzIyLCAKLSAgICAxMzA3MjYsIDEzMDcyOCwgMTMwNzMyLCAxMzA3MzUsIDEzMDczNywgMTMwNzQxLCAxMzA3NDUsIDEzMDc0NywgMTMwNzUzLCAKLSAgICAxMzA3NTUsIDEzMDc2MCwgMTMwNzYyLCAxMzA3NjcsIDEzMDc2OSwgMTMwNzc0LCAxMzA3NzYsIDEzMDc4MSwgMTMwNzgzLCAKLSAgICAxMzA3ODYsIDEzMDc4OCwgMTMwNzkyLCAxMzA3OTQsIDEzMDgwMSwgMTMwODAzLCAxMzA4MDUsIDEzMDgwNywgMTMwODEyLCAKLSAgICAxMzA4MTQsIDEzMDgxNiwgMTMwODE4LCAxMzA4MjAsIDEzMDgyMiwgMTMwODI3LCAxMzA4MzEsIDEzMDgzMywgMTMwODM4LCAKLSAgICAxMzA4NDIsIDEzMDg0NCwgMTMwODQ5LCAxMzA4NTMsIDEzMDg1NSwgMTMwODYwLCAxMzA4NjQsIDEzMDg2NiwgMTMwODY4LCAKLSAgICAxMzA4NzAsIDEzMDg3MiwgMTMwODc2LCAxMzA4NzgsIDEzMDg4MywgMTMwODg1LCAxMzA4OTEsIDEzMDg5MywgMTMwODk5LCAKLSAgICAxMzA5MDEsIDEzMDkwMywgMTMwOTA1LCAxMzA5MDksIDEzMDkxMSwgMTMwOTE4LCAxMzA5MjAsIDEzMDkyNywgMTMwOTI5LCAKLSAgICAxMzA5MzQsIDEzMDkzOSwgMTMwOTQxLCAxMzA5NDcsIDEzMDk1MywgMTMwOTU1LCAxMzA5NjEsIDEzMDk2NiwgMTMwOTY4LCAKLSAgICAxMzA5NzQsIDEzMDk4MCwgMTMwOTgyLCAxMzA5ODgsIDEzMDk5NCwgMTMwOTk2LCAxMzEwMDIsIDEzMTAwNiwgMTMxMDA4LCAKLSAgICAxMzEwMTMsIDEzMTAxNSwgMTMxMDE3LCAxMzEwMjIsIDEzMTAyNCwgMTMxMDI2LCAxMzEwMzIsIDEzMTAzNCwgMTMxMDM5LCAKLSAgICAxMzEwNDMsIDEzMTA0NSwgMTMxMDUwLCAxMzEwNTQsIDEzMTA1NiwgMTMxMDYyLCAxMzEwNjQsIDEzMTA2OCwgMTMxMDcwLCAKLSAgICAxMzEwNzQsIDEzMTA3NiwgMTMxMDgzLCAxMzEwOTAsIDEzMTA5MiwgMTMxMDk5LCAxMzExMDYsIDEzMTEwOCwgMTMxMTEzLCAKLSAgICAxMzExMTUsIDEzMTEyMiwgMTMxMTI0LCAxMzExMjksIDEzMTEzMSwgMTMxMTM3LCAxMzExMzksIDEzMTE0MywgMTMxMTQ1LCAKLSAgICAxMzExNTEsIDEzMTE1MywgMTMxMTU3LCAxMzExNTksIDEzMTE2NSwgMTMxMTY3LCAxMzExNjksIDEzMTE3MSwgMTMxMTc2LCAKLSAgICAxMzExODEsIDEzMTE4MywgMTMxMTg1LCAxMzExOTQsIDEzMTE5OCwgMTMxMjA1LCAxMzEyMTIsIDEzMTIxNywgMTMxMjIyLCAKLSAgICAxMzEyMzQsIDEzMTIzNiwgMTMxMjM4LCAxMzEyNDAsIDEzMTI0MiwgMTMxMjQ0LCAxMzEyNDYsIDEzMTI0OCwgMTMxMjUwLCAKLSAgICAxMzEyNTIsIDEzMTI1NCwgMTMxMjU2LCAxMzEyNTgsIDEzMTI2MCwgMTMxMjYyLCAxMzEyNjQsIDEzMTI2NiwgMTMxMjY4LCAKLSAgICAxMzEyNzAsIDEzMTI3MiwgMTMxMjc0LCAxMzEyNzYsIDEzMTI4MiwgMTMxMjg5LCAxMzEyOTQsIDEzMTI5OSwgMTMxMzEwLCAKLSAgICAxMzEzMTIsIDEzMTMxNCwgMTMxMzE2LCAxMzEzMTgsIDEzMTMyMCwgMTMxMzIyLCAxMzEzMjQsIDEzMTMyNiwgMTMxMzI4LCAKLSAgICAxMzEzMzAsIDEzMTMzMiwgMTMxMzM0LCAxMzEzMzYsIDEzMTMzOCwgMTMxMzQwLCAxMzEzNDIsIDEzMTM0NywgMTMxMzQ5LCAKLSAgICAxMzEzNTEsIDEzMTM1NywgMTMxMzY5LCAxMzEzODAsIDEzMTM4MiwgMTMxMzg0LCAxMzEzODYsIDEzMTM4OCwgMTMxMzkwLCAKLSAgICAxMzEzOTIsIDEzMTM5NCwgMTMxMzk2LCAxMzEzOTgsIDEzMTQwMCwgMTMxNDAyLCAxMzE0MDQsIDEzMTQwNiwgMTMxNDA4LCAKLSAgICAxMzE0MTAsIDEzMTQxMiwgMTMxNDE0LCAxMzE0MTYsIDEzMTQxOCwgMTMxNDIwLCAxMzE0MjIsIDEzMTQyNCwgMTMxNDI2LCAKLSAgICAxMzE0MjgsIDEzMTQzMCwgMTMxNDMyLCAxMzE0MzQsIDEzMTQzNiwgMTMxNDM4LCAxMzE0NDAsIDEzMTQ0MiwgMTMxNDQ0LCAKLSAgICAxMzE0NDYsIDEzMTQ0OCwgMTMxNDUwLCAxMzE0NTIsIDEzMTQ1NCwgMTMxNDU2LCAxMzE0NTgsIDEzMTQ2MCwgMTMxNDYyLCAKLSAgICAxMzE0NjQsIDEzMTQ2NiwgMTMxNDY4LCAxMzE0NzAsIDEzMTQ3MiwgMTMxNDc0LCAxMzE0NzYsIDEzMTQ3OCwgMTMxNDgwLCAKLSAgICAxMzE0ODIsIDEzMTQ4NCwgMTMxNDg2LCAxMzE0ODgsIDEzMTQ5MCwgMTMxNDkyLCAxMzE0OTQsIDEzMTQ5NiwgMTMxNDk4LCAKLSAgICAxMzE1MDAsIDEzMTUwMiwgMTMxNTA0LCAxMzE1MDYsIDEzMTUwOCwgMTMxNTEwLCAxMzE1MTIsIDEzMTUxNCwgMTMxNTE2LCAKLSAgICAxMzE1MTgsIDEzMTUyMCwgMTMxNTIyLCAxMzE1MjQsIDEzMTUyNiwgMTMxNTI4LCAxMzE1MzAsIDEzMTUzMiwgMTMxNTM0LCAKLSAgICAxMzE1MzYsIDEzMTUzOCwgMTMxNTQwLCAxMzE1NDIsIDEzMTU0NCwgMTMxNTQ2LCAxMzE1NDgsIDEzMTU1MCwgMTMxNTUyLCAKLSAgICAxMzE1NTQsIDEzMTU1NiwgMTMxNTU4LCAxMzE1NjAsIDEzMTU2MiwgMTMxNTY0LCAxMzE1NjYsIDEzMTU2OCwgMTMxNTcwLCAKLSAgICAxMzE1NzIsIDEzMTU3NCwgMTMxNTc2LCAxMzE1NzgsIDEzMTU4MCwgMTMxNTgyLCAxMzE1ODQsIDEzMTU4NiwgMTMxNTg4LCAKLSAgICAxMzE1OTAsIDEzMTU5MiwgMTMxNTk0LCAxMzE1OTYsIDEzMTU5OCwgMTMxNjAwLCAxMzE2MDIsIDEzMTYwNCwgMTMxNjA2LCAKLSAgICAxMzE2MDgsIDEzMTYxMCwgMTMxNjEyLCAxMzE2MTQsIDEzMTYxNiwgMTMxNjE4LCAxMzE2MjAsIDEzMTYyMiwgMTMxNjI0LCAKLSAgICAxMzE2MjYsIDEzMTYyOCwgMTMxNjMwLCAxMzE2MzIsIDEzMTYzNCwgMTMxNjM2LCAxMzE2MzgsIDEzMTY0MCwgMTMxNjQyLCAKLSAgICAxMzE2NDQsIDEzMTY0NiwgMTMxNjQ4LCAxMzE2NTAsIDEzMTY1MiwgMTMxNjU0LCAxMzE2NTYsIDEzMTY1OCwgMTMxNjYwLCAKLSAgICAxMzE2NjIsIDEzMTY2NCwgMTMxNjY2LCAxMzE2NjgsIDEzMTY3MCwgMTMxNjcyLCAxMzE2NzQsIDEzMTY3NiwgMTMxNjc4LCAKLSAgICAxMzE2ODAsIDEzMTY4MiwgMTMxNjg0LCAxMzE2ODYsIDEzMTY4OCwgMTMxNjkwLCAxMzE2OTIsIDEzMTY5NCwgMTMxNjk2LCAKLSAgICAxMzE2OTgsIDEzMTcwMCwgMTMxNzAyLCAxMzE3MDQsIDEzMTcwNiwgMTMxNzA4LCAxMzE3MTAsIDEzMTcxMiwgMTMxNzE0LCAKLSAgICAxMzE3MTYsIDEzMTcxOCwgMTMxNzIwLCAxMzE3MjIsIDEzMTcyNCwgMTMxNzI2LCAxMzE3MjgsIDEzMTczMCwgMTMxNzMyLCAKLSAgICAxMzE3MzQsIDEzMTczNiwgMTMxNzM4LCAxMzE3NDAsIDEzMTc0MiwgMTMxNzQ0LCAxMzE3NDYsIDEzMTc0OCwgMTMxNzUwLCAKLSAgICAxMzE3NTIsIDEzMTc1NCwgMTMxNzU2LCAxMzE3NTgsIDEzMTc2MCwgMTMxNzYyLCAxMzE3NjQsIDEzMTc2NiwgMTMxNzY4LCAKLSAgICAxMzE3NzAsIDEzMTc3MiwgMTMxNzc0LCAxMzE3NzYsIDEzMTc3OCwgMTMxNzgwLCAxMzE3ODIsIDEzMTc4NCwgMTMxNzg2LCAKLSAgICAxMzE3ODgsIDEzMTc5MCwgMTMxNzkyLCAxMzE3OTQsIDEzMTc5NiwgMTMxNzk4LCAxMzE4MDAsIDEzMTgwMiwgMTMxODA0LCAKLSAgICAxMzE4MDYsIDEzMTgwOCwgMTMxODEwLCAxMzE4MTIsIDEzMTgxNCwgMTMxODE2LCAxMzE4MTgsIDEzMTgyMCwgMTMxODIyLCAKLSAgICAxMzE4MjQsIDEzMTgyNiwgMTMxODI4LCAxMzE4MzAsIDEzMTgzMiwgMTMxODM0LCAxMzE4MzYsIDEzMTgzOCwgMTMxODQwLCAKLSAgICAxMzE4NDIsIDEzMTg0NCwgMTMxODQ2LCAxMzE4NDgsIDEzMTg1MCwgMTMxODUyLCAxMzE4NTQsIDEzMTg1NiwgMTMxODU4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDI2ODEsIDEwMjY4NiwgMTAyNjkyLCAxMDI2OTgsIDEwMjcwNCwgCisgICAgMTAyNzEwLCAxMDI3MTYsIDEwMjcyMiwgMTAyNzI4LCAxMDI3MzQsIDEwMjczOSwgMTAyNzQ2LCAxMDI3NTIsIDEwMjc1OCwgCisgICAgMTAyNzY0LCAxMDI3NzAsIDEwMjc3NiwgMTAyNzgxLCAxMDI3ODcsIDEwMjc5MywgMTAyNzk5LCAxMDI4MDUsIDEwMjgxMSwgCisgICAgMTAyODE3LCAxMDI4MjMsIDEwMjgyOSwgMTAyODM1LCAxMDI4NDEsIDEwMjg0NiwgMTAyODUyLCAxMDI4NjAsIDEwMjg2OCwgCisgICAgMTAyODc0LCAxMDI4ODAsIDEwMjg4NiwgMTAyODkyLCAxMDI5MDAsIDEwMjkwNiwgMTAyOTEyLCAxMDI5MTgsIDEwMjkyNCwgCisgICAgMTAyOTMwLCAxMDI5MzYsIDEwMjk0MSwgMTAyOTQ3LCAxMDI5NTUsIDEwMjk2MywgMTAyOTY5LCAxMDI5NzUsIDEwMjk4MSwgCisgICAgMTAyOTg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDI5OTQsIDEwMjk5OSwgMTAzMDA1LCAKKyAgICAxMDMwMTEsIDEwMzAxNywgMTAzMDIzLCAxMDMwMjksIDEwMzAzNSwgMTAzMDQxLCAxMDMwNDcsIDEwMzA1MiwgMTAzMDU5LCAKKyAgICAxMDMwNjUsIDEwMzA3MSwgMTAzMDc3LCAxMDMwODMsIDEwMzA4OSwgMTAzMDk0LCAxMDMxMDAsIDEwMzEwNiwgMTAzMTEyLCAKKyAgICAxMDMxMTgsIDEwMzEyNCwgMTAzMTMwLCAxMDMxMzYsIDEwMzE0MiwgMTAzMTQ4LCAxMDMxNTQsIDEwMzE1OSwgMTAzMTY1LCAKKyAgICAxMDMxNzMsIDEwMzE4MSwgMTAzMTg3LCAxMDMxOTMsIDEwMzE5OSwgMTAzMjA1LCAxMDMyMTMsIDEwMzIxOSwgMTAzMjI1LCAKKyAgICAxMDMyMzEsIDEwMzIzNywgMTAzMjQzLCAxMDMyNDksIDEwMzI1NCwgMTAzMjYwLCAxMDMyNjgsIDEwMzI3NiwgMTAzMjgyLCAKKyAgICAxMDMyODgsIDEwMzI5NCwgMTAzMzAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDMzMDcsIDEwMzMxMSwgMTAzMzE1LCAKKyAgICAxMDMzMjAsIDEwMzMyNSwgMTAzMzMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzE4NjAsIDEzMTg3MCwgMTMxODgwLCAxMzE4ODksIDEzMTg5OCwgMTMxOTExLCAKLSAgICAxMzE5MjQsIDEzMTkzNiwgMTMxOTQ4LCAxMzE5NTgsIDEzMTk2OCwgMTMxOTc4LCAxMzE5ODgsIDEzMTk5OSwgMTMyMDEwLCAKLSAgICAxMzIwMjAsIDEzMjAyOSwgMTMyMDM4LCAxMzIwNDcsIDEzMjA2MCwgMTMyMDczLCAxMzIwODUsIDEzMjA5NywgMTMyMTA3LCAKLSAgICAxMzIxMTcsIDEzMjEyNywgMTMyMTM3LCAxMzIxNDYsIDEzMjE1NSwgMTMyMTY0LCAxMzIxNzMsIDEzMjE4MiwgMTMyMTkxLCAKLSAgICAxMzIyMDAsIDEzMjIwOSwgMTMyMjE4LCAxMzIyMjcsIDEzMjIzNiwgMTMyMjQ1LCAxMzIyNTYsIDEzMjI2NiwgMTMyMjc2LCAKLSAgICAxMzIyODksIDEzMjI5OSwgMTMyMzEyLCAxMzIzMTksIDEzMjMyOSwgMTMyMzM2LCAxMzIzNDMsIDEzMjM1MCwgMTMyMzU3LCAKLSAgICAxMzIzNjQsIDEzMjM3MSwgMTMyMzgwLCAxMzIzODksIDEzMjM5OCwgMTMyNDA3LCAxMzI0MTYsIDEzMjQyNSwgMTMyNDM0LCAKLSAgICAxMzI0NDMsIDEzMjQ1MSwgMTMyNDU5LCAxMzI0NjYsIDEzMjQ3NiwgMTMyNDg1LCAxMzI0OTMsIDEzMjUwMCwgMTMyNTEwLCAKLSAgICAxMzI1MTksIDEzMjUyOSwgMTMyNTM5LCAxMzI1NTAsIDEzMjU2MCwgMTMyNTY5LCAxMzI1NzksIDEzMjU4OCwgMTMyNTk4LCAKLSAgICAxMzI2MDYsIDEzMjYxMCwgMTMyNjE0LCAxMzI2MTgsIDEzMjYyMiwgMTMyNjI2LCAxMzI2MzAsIDEzMjYzNCwgMTMyNjM4LCAKLSAgICAxMzI2NDIsIDEzMjY0NiwgMTMyNjQ5LCAxMzI2NTMsIDEzMjY1NiwgMTMyNjU5LCAxMzI2NjMsIDEzMjY2NywgMTMyNjcxLCAKLSAgICAxMzI2NzUsIDEzMjY3OSwgMTMyNjgzLCAxMzI2ODcsIDEzMjY5MSwgMTMyNjk1LCAxMzI2OTksIDEzMjcwMywgMTMyNzA3LCAKLSAgICAxMzI3MTEsIDEzMjcxNSwgMTMyNzE5LCAxMzI3MjMsIDEzMjcyNywgMTMyNzMxLCAxMzI3MzUsIDEzMjczOSwgMTMyNzQzLCAKLSAgICAxMzI3NDcsIDEzMjc1MSwgMTMyNzU1LCAxMzI3NTksIDEzMjc2MywgMTMyNzY3LCAxMzI3NzEsIDEzMjc3NSwgMTMyNzc5LCAKLSAgICAxMzI3ODMsIDEzMjc4NywgMTMyNzkxLCAxMzI3OTUsIDEzMjc5OSwgMTMyODAzLCAxMzI4MDcsIDEzMjgxMSwgMTMyODE1LCAKLSAgICAxMzI4MTksIDEzMjgyMywgMTMyODI3LCAxMzI4MzEsIDEzMjgzNSwgMTMyODM5LCAxMzI4NDMsIDEzMjg0NywgMTMyODUxLCAKLSAgICAxMzI4NTUsIDEzMjg1OSwgMTMyODYzLCAxMzI4NjcsIDEzMjg3MSwgMTMyODc1LCAxMzI4NzksIDEzMjg4MywgMTMyODg3LCAKLSAgICAxMzI4OTEsIDEzMjg5NSwgMTMyODk5LCAxMzI5MDMsIDEzMjkwNywgMTMyOTExLCAxMzI5MTUsIDEzMjkxOSwgMTMyOTIzLCAKLSAgICAxMzI5MjcsIDEzMjkzMSwgMTMyOTM1LCAxMzI5MzksIDEzMjk0MywgMTMyOTQ3LCAxMzI5NTEsIDEzMjk1NSwgMTMyOTU5LCAKLSAgICAxMzI5NjMsIDEzMjk2NywgMTMyOTcxLCAxMzI5NzUsIDEzMjk3OSwgMTMyOTgzLCAxMzI5ODcsIDEzMjk5MSwgMTMyOTk1LCAKLSAgICAxMzI5OTksIDEzMzAwMiwgMTMzMDA2LCAxMzMwMTAsIDEzMzAxNCwgMTMzMDE4LCAxMzMwMjIsIDEzMzAyNiwgMTMzMDMwLCAKLSAgICAxMzMwMzQsIDEzMzAzOCwgMTMzMDQyLCAxMzMwNDYsIDEzMzA1MCwgMTMzMDU0LCAxMzMwNTgsIDEzMzA2MiwgMTMzMDY2LCAKLSAgICAxMzMwNzAsIDEzMzA3NCwgMTMzMDc4LCAxMzMwODIsIDEzMzA4NiwgMTMzMDkwLCAxMzMwOTQsIDEzMzA5OCwgMTMzMTAyLCAKLSAgICAxMzMxMDYsIDEzMzExMCwgMTMzMTE0LCAxMzMxMTgsIDEzMzEyMiwgMTMzMTI2LCAxMzMxMzAsIDEzMzEzNCwgMTMzMTM4LCAKLSAgICAxMzMxNDIsIDEzMzE0NiwgMTMzMTUwLCAxMzMxNTQsIDEzMzE1OCwgMTMzMTYyLCAxMzMxNjYsIDEzMzE3MCwgMTMzMTc0LCAKLSAgICAxMzMxNzgsIDEzMzE4MiwgMTMzMTg2LCAxMzMxOTAsIDEzMzE5NCwgMTMzMTk4LCAxMzMyMDIsIDEzMzIwNiwgMTMzMjEwLCAKLSAgICAxMzMyMTQsIDEzMzIxOCwgMTMzMjIyLCAxMzMyMjYsIDEzMzIzMCwgMTMzMjM0LCAxMzMyMzgsIDEzMzI0MiwgMTMzMjQ2LCAKLSAgICAxMzMyNTAsIDEzMzI1NCwgMTMzMjU4LCAxMzMyNjIsIDEzMzI2NiwgMTMzMjcwLCAxMzMyNzQsIDEzMzI3OCwgMTMzMjgyLCAKLSAgICAxMzMyODYsIDEzMzI5MCwgMTMzMjk0LCAxMzMyOTgsIDEzMzMwMiwgMTMzMzA2LCAxMzMzMTAsIDEzMzMxNCwgMTMzMzE4LCAKLSAgICAxMzMzMjIsIDEzMzMyNiwgMTMzMzMwLCAxMzMzMzQsIDEzMzMzOCwgMTMzMzQyLCAxMzMzNDYsIDEzMzM1MCwgMTMzMzU0LCAKLSAgICAxMzMzNTgsIDEzMzM2MiwgMTMzMzY2LCAxMzMzNzAsIDEzMzM3NCwgMTMzMzc4LCAxMzMzODIsIDEzMzM4NiwgMTMzMzkwLCAKLSAgICAxMzMzOTQsIDEzMzM5OCwgMTMzNDAyLCAxMzM0MDYsIDEzMzQxMCwgMTMzNDE0LCAxMzM0MTgsIDEzMzQyMiwgMTMzNDI2LCAKLSAgICAxMzM0MzAsIDEzMzQzNCwgMTMzNDM4LCAxMzM0NDIsIDEzMzQ0NiwgMTMzNDUwLCAxMzM0NTQsIDEzMzQ1OCwgMTMzNDYyLCAKLSAgICAxMzM0NjYsIDEzMzQ3MCwgMTMzNDc0LCAxMzM0NzgsIDEzMzQ4MiwgMTMzNDg2LCAxMzM0OTAsIDEzMzQ5NCwgMTMzNDk4LCAKLSAgICAxMzM1MDIsIDEzMzUwNiwgMTMzNTEwLCAxMzM1MTQsIDEzMzUxOCwgMTMzNTIyLCAxMzM1MjYsIDEzMzUzMCwgMTMzNTM0LCAKLSAgICAxMzM1MzgsIDEzMzU0MiwgMTMzNTQ2LCAxMzM1NTAsIDEzMzU1NCwgMTMzNTU4LCAxMzM1NjIsIDEzMzU2NiwgMTMzNTcwLCAKLSAgICAxMzM1NzQsIDEzMzU3OCwgMTMzNTgyLCAxMzM1ODYsIDEzMzU5MCwgMTMzNTk0LCAxMzM1OTgsIDEzMzYwMiwgMTMzNjA2LCAKLSAgICAxMzM2MTAsIDEzMzYxNCwgMTMzNjE4LCAxMzM2MjIsIDEzMzYyNiwgMTMzNjMwLCAxMzM2MzQsIDEzMzYzOCwgMTMzNjQyLCAKLSAgICAxMzM2NDYsIDEzMzY1MCwgMTMzNjU0LCAxMzM2NTgsIDEzMzY2MiwgMTMzNjY2LCAxMzM2NzAsIDEzMzY3NCwgMTMzNjc4LCAKLSAgICAxMzM2ODIsIDEzMzY4NiwgMTMzNjkwLCAxMzM2OTQsIDEzMzY5OCwgMTMzNzAyLCAxMzM3MDYsIDEzMzcxMCwgMTMzNzE0LCAKLSAgICAxMzM3MTgsIDEzMzcyMiwgMTMzNzI2LCAxMzM3MzAsIDEzMzczNCwgMTMzNzM4LCAxMzM3NDIsIDEzMzc0NiwgMTMzNzUwLCAKLSAgICAxMzM3NTQsIDEzMzc1OCwgMTMzNzYyLCAxMzM3NjYsIDEzMzc3MSwgMTMzNzc2LCAxMzM3ODEsIDEzMzc4NSwgMTMzNzkxLCAKLSAgICAxMzM3OTgsIDEzMzgwNSwgMTMzODEyLCAxMzM4MTksIDEzMzgyNiwgMTMzODMzLCAxMzM4NDAsIDEzMzg0NywgMTMzODU0LCAKLSAgICAxMzM4NjEsIDEzMzg2OCwgMTMzODc1LCAxMzM4ODIsIDEzMzg4OCwgMTMzODk1LCAxMzM5MDIsIDEzMzkwOCwgMTMzOTE1LCAKLSAgICAxMzM5MjIsIDEzMzkyOSwgMTMzOTM2LCAxMzM5NDMsIDEzMzk1MCwgMTMzOTU3LCAxMzM5NjQsIDEzMzk3MSwgMTMzOTc4LCAKLSAgICAxMzM5ODUsIDEzMzk5MiwgMTMzOTk5LCAxMzQwMDUsIDEzNDAxMSwgMTM0MDE4LCAxMzQwMjUsIDEzNDAzNCwgMTM0MDQzLCAKLSAgICAxMzQwNTIsIDEzNDA2MSwgMTM0MDY2LCAxMzQwNzEsIDEzNDA3NywgMTM0MDgzLCAxMzQwODksIDEzNDA5NSwgMTM0MTAxLCAKLSAgICAxMzQxMDcsIDEzNDExMywgMTM0MTE5LCAxMzQxMjUsIDEzNDEzMSwgMTM0MTM3LCAxMzQxNDMsIDEzNDE0OCwgMTM0MTU0LCAKLSAgICAxMzQxNjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMzMzNywgMTAzMzQxLCAxMDMzNDUsIDEwMzM0OSwgMTAzMzUzLCAxMDMzNTcsIAorICAgIDEwMzM2MSwgMTAzMzY2LCAxMDMzNzAsIDEwMzM3NSwgMTAzMzgwLCAxMDMzODUsIDEwMzM5MCwgMTAzMzk1LCAxMDM0MDAsIAorICAgIDEwMzQwNSwgMTAzNDEwLCAxMDM0MTUsIDEwMzQyMCwgMTAzNDI2LCAxMDM0MzIsIDEwMzQzOCwgMTAzNDQ1LCAxMDM0NTIsIAorICAgIDEwMzQ1OSwgMTAzNDY2LCAxMDM0NzMsIDEwMzQ4MCwgMTAzNDg3LCAxMDM0OTQsIDEwMzUwMSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTAzNTA4LCAxMDM1MTIsIDEwMzUxNiwgMTAzNTIwLCAxMDM1MjQsIDEwMzUyOCwgMTAzNTMxLCAxMDM1MzUsIAorICAgIDEwMzUzOCwgMTAzNTQyLCAxMDM1NDUsIDEwMzU0OSwgMTAzNTUzLCAxMDM1NTgsIDEwMzU2MiwgMTAzNTY3LCAxMDM1NzAsIAorICAgIDEwMzU3NCwgMTAzNTc3LCAxMDM1ODEsIDEwMzU4NCwgMTAzNTg4LCAxMDM1OTIsIDEwMzU5NiwgMTAzNjAwLCAxMDM2MDQsIAorICAgIDEwMzYwOCwgMTAzNjEyLCAxMDM2MTYsIDEwMzYyMCwgMTAzNjI0LCAxMDM2MjgsIDEwMzYzMiwgMTAzNjM2LCAxMDM2NDAsIAorICAgIDEwMzY0NCwgMTAzNjQ4LCAxMDM2NTIsIDEwMzY1NiwgMTAzNjYwLCAxMDM2NjMsIDEwMzY2NywgMTAzNjcxLCAxMDM2NzUsIAorICAgIDEwMzY3OCwgMTAzNjgxLCAxMDM2ODUsIDEwMzY4OSwgMTAzNjkzLCAxMDM2OTcsIDEwMzcwMSwgMTAzNzA1LCAxMDM3MDgsIAorICAgIDEwMzcxMiwgMTAzNzE4LCAxMDM3MjQsIDEwMzczMCwgMTAzNzM1LCAxMDM3NDIsIDEwMzc0NiwgMTAzNzUxLCAxMDM3NTUsIAorICAgIDEwMzc2MCwgMTAzNzY1LCAxMDM3NzEsIDEwMzc3NiwgMTAzNzgyLCAxMDM3ODYsIDEwMzc5MSwgMTAzNzk1LCAxMDM4MDAsIAorICAgIDEwMzgwMywgMTAzODA2LCAxMDM4MTAsIDEwMzgxNSwgMTAzODIxLCAxMDM4MjYsIDEwMzgzMiwgMCwgMCwgMCwgMCwgCisgICAgMTAzODM3LCAxMDM4NDAsIDEwMzg0MywgMTAzODQ2LCAxMDM4NDksIDEwMzg1MiwgMTAzODU1LCAxMDM4NTksIDEwMzg2MiwgCisgICAgMTAzODY2LCAxMDM4NzAsIDEwMzg3NCwgMTAzODc4LCAxMDM4ODIsIDEwMzg4NiwgMTAzODkwLCAxMDM4OTQsIDEwMzg5OCwgCisgICAgMTAzOTAyLCAxMDM5MDcsIDEwMzkxMiwgMTAzOTE2LCAxMDM5MTksIDEwMzkyMiwgMTAzOTI1LCAxMDM5MjgsIDEwMzkzMSwgCisgICAgMTAzOTM0LCAxMDM5MzgsIDEwMzk0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTAzOTQ1LCAxMDM5NDksIDEwMzk1NCwgMTAzOTU5LCAxMDM5NjQsIDEwMzk2OCwgMTAzOTczLCAxMDM5NzcsIDEwMzk4MiwgCisgICAgMTAzOTg2LCAxMDM5OTEsIDEwMzk5NSwgMTA0MDAwLCAxMDQwMDQsIDEwNDAwOSwgMTA0MDEzLCAxMDQwMTgsIDEwNDAyMywgCisgICAgMTA0MDI4LCAxMDQwMzMsIDEwNDAzOCwgMTA0MDQzLCAxMDQwNDgsIDEwNDA1MywgMTA0MDU4LCAxMDQwNjMsIDEwNDA2OCwgCisgICAgMTA0MDczLCAxMDQwNzgsIDEwNDA4MywgMTA0MDg4LCAxMDQwOTMsIDEwNDA5OCwgMTA0MTAzLCAxMDQxMDgsIDEwNDExMywgCisgICAgMTA0MTE4LCAxMDQxMjIsIDEwNDEyNywgMTA0MTMyLCAxMDQxMzcsIDEwNDE0MSwgMTA0MTQ1LCAxMDQxNTAsIDEwNDE1NSwgCisgICAgMTA0MTYwLCAxMDQxNjUsIDEwNDE3MCwgMTA0MTc1LCAxMDQxNzksIDEwNDE4NSwgMTA0MTkwLCAxMDQxOTYsIDEwNDIwMSwgCisgICAgMTA0MjA3LCAxMDQyMTIsIDEwNDIxOCwgMTA0MjIzLCAxMDQyMjksIDEwNDIzNCwgMTA0MjM5LCAxMDQyNDQsIDEwNDI0OSwgCisgICAgMTA0MjUzLCAxMDQyNTgsIDEwNDI2NCwgMTA0MjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDQyNzMsIDEwNDI4MCwgMTA0Mjg3LCAxMDQyOTQsIDEwNDMwMSwgMTA0MzA4LCAxMDQzMTUsIDEwNDMyMiwgMTA0MzI5LCAKKyAgICAxMDQzMzYsIDEwNDM0MywgMTA0MzUwLCAxMDQzNTcsIDEwNDM2NCwgMTA0MzcxLCAxMDQzNzgsIDEwNDM4NSwgMTA0MzkyLCAKKyAgICAxMDQzOTksIDEwNDQwNiwgMTA0NDEzLCAxMDQ0MjAsIDEwNDQyNywgMTA0NDM0LCAxMDQ0NDEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEwNDQ0OCwgMTA0NDU1LCAxMDQ0NjEsIDEwNDQ2NywgMTA0NDczLCAxMDQ0NzksIDEwNDQ4NSwgMTA0NDkxLCAKKyAgICAxMDQ0OTgsIDEwNDUwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NTExLCAxMDQ1MTYsIDEwNDUyMSwgMTA0NTI2LCAxMDQ1MzEsIAorICAgIDEwNDUzNSwgMTA0NTM5LCAxMDQ1NDMsIDEwNDU0OCwgMTA0NTUzLCAxMDQ1NTgsIDEwNDU2MywgMTA0NTY4LCAxMDQ1NzMsIAorICAgIDEwNDU3OCwgMTA0NTgzLCAxMDQ1ODgsIDEwNDU5MywgMTA0NTk4LCAxMDQ2MDMsIDEwNDYwOCwgMTA0NjEzLCAxMDQ2MTgsIAorICAgIDEwNDYyMywgMTA0NjI4LCAxMDQ2MzMsIDEwNDYzOCwgMTA0NjQzLCAxMDQ2NDgsIDEwNDY1MywgMTA0NjU4LCAxMDQ2NjMsIAorICAgIDEwNDY2OCwgMTA0NjczLCAxMDQ2NzgsIDEwNDY4MywgMTA0Njg4LCAxMDQ2OTMsIDEwNDY5OCwgMTA0NzAzLCAxMDQ3MDgsIAorICAgIDEwNDcxMywgMTA0NzE5LCAxMDQ3MjQsIDEwNDczMCwgMTA0NzM1LCAxMDQ3NDEsIDEwNDc0NiwgMTA0NzUyLCAxMDQ3NTgsIAorICAgIDEwNDc2MiwgMTA0NzY3LCAxMDQ3NzEsIDAsIDEwNDc3NSwgMTA0NzgwLCAxMDQ3ODQsIDEwNDc4OCwgMTA0NzkyLCAKKyAgICAxMDQ3OTYsIDEwNDgwMCwgMTA0ODA0LCAxMDQ4MDksIDEwNDgxMywgMTA0ODE4LCAxMDQ4MjMsIDEwNDgyNywgMTA0ODMyLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ4MzcsIDEwNDg0MSwgMTA0ODQ1LCAxMDQ4NDksIAorICAgIDEwNDg1MywgMTA0ODU3LCAxMDQ4NjEsIDEwNDg2NiwgMTA0ODcxLCAxMDQ4NzYsIDEwNDg4MSwgMTA0ODg2LCAxMDQ4OTEsIAorICAgIDEwNDg5NiwgMTA0OTAxLCAxMDQ5MDYsIDEwNDkxMSwgMTA0OTE2LCAxMDQ5MjEsIDEwNDkyNiwgMTA0OTMxLCAxMDQ5MzYsIAorICAgIDEwNDk0MSwgMTA0OTQ2LCAxMDQ5NTEsIDEwNDk1NSwgMTA0OTYwLCAxMDQ5NjUsIDEwNDk3MCwgMTA0OTc0LCAxMDQ5NzksIAorICAgIDEwNDk4NCwgMTA0OTg5LCAxMDQ5OTQsIDEwNDk5OCwgMTA1MDAzLCAxMDUwMDgsIDEwNTAxMywgMTA1MDE4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMDUwMjMsIDEwNTAyNywgMTA1MDMxLCAxMDUwMzUsIDEwNTAzOCwgMTA1MDQyLCAxMDUwNDUsIAorICAgIDEwNTA0OSwgMTA1MDUyLCAxMDUwNTYsIDEwNTA2MCwgMTA1MDY1LCAxMDUwNjksIDEwNTA3NCwgMTA1MDc3LCAxMDUwODEsIAorICAgIDEwNTA4NCwgMTA1MDg4LCAxMDUwOTEsIDEwNTA5NSwgMTA1MDk5LCAxMDUxMDMsIDEwNTEwNywgMTA1MTExLCAxMDUxMTUsIAorICAgIDEwNTExOSwgMTA1MTIzLCAxMDUxMjcsIDEwNTEzMSwgMTA1MTM1LCAxMDUxMzksIDEwNTE0MywgMTA1MTQ3LCAxMDUxNTEsIAorICAgIDEwNTE1NSwgMTA1MTU5LCAxMDUxNjMsIDEwNTE2NywgMTA1MTcwLCAxMDUxNzQsIDEwNTE3OCwgMTA1MTgyLCAxMDUxODUsIAorICAgIDEwNTE4OCwgMTA1MTkyLCAxMDUxOTYsIDEwNTIwMCwgMTA1MjA0LCAxMDUyMDgsIDEwNTIxMiwgMTA1MjE2LCAxMDUyMTksIAorICAgIDEwNTIyNCwgMTA1MjI4LCAxMDUyMzMsIDEwNTIzNywgMTA1MjQyLCAxMDUyNDcsIDEwNTI1MywgMTA1MjU4LCAxMDUyNjQsIAorICAgIDEwNTI2OCwgMTA1MjczLCAxMDUyNzcsIDEwNTI4MiwgMTA1Mjg2LCAxMDUyOTAsIDEwNTI5NCwgMTA1Mjk4LCAxMDUzMDEsIAorICAgIDEwNTMwNCwgMTA1MzA4LCAxMDUzMTIsIDEwNTMxNSwgMTA1MzE5LCAxMDUzMjMsIDEwNTMyNywgMTA1MzM0LCAwLCAwLCAKKyAgICAxMDUzMzgsIDEwNTM0MiwgMTA1MzQ1LCAxMDUzNDgsIDEwNTM1MSwgMTA1MzU0LCAxMDUzNTcsIDEwNTM2MCwgMTA1MzY0LCAKKyAgICAxMDUzNjcsIDEwNTM3MSwgMTA1Mzc0LCAxMDUzNzgsIDEwNTM4MSwgMTA1Mzg1LCAxMDUzOTAsIDAsIDEwNTM5NSwgCisgICAgMTA1NDAwLCAxMDU0MDUsIDEwNTQxMCwgMTA1NDE1LCAxMDU0MjAsIDEwNTQyNSwgMTA1NDMxLCAxMDU0MzYsIDEwNTQ0MiwgCisgICAgMTA1NDQ4LCAxMDU0NTQsIDEwNTQ2MCwgMTA1NDY2LCAxMDU0NzIsIDEwNTQ3OCwgMTA1NDg0LCAxMDU0OTAsIDEwNTQ5NiwgCisgICAgMTA1NTAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDU1MTAsIDEwNTUxNCwgMTA1NTE5LCAxMDU1MjMsIAorICAgIDEwNTUyNywgMTA1NTMxLCAxMDU1MzYsIDEwNTU0MCwgMTA1NTQ1LCAxMDU1NDksIDEwNTU1NCwgMTA1NTU5LCAxMDU1NjQsIAorICAgIDEwNTU2OSwgMTA1NTc0LCAxMDU1NzksIDEwNTU4NCwgMTA1NTg5LCAwLCAxMDU1OTQsIDEwNTU5OSwgMTA1NjA0LCAKKyAgICAxMDU2MDksIDEwNTYxNCwgMTA1NjE5LCAxMDU2MjQsIDEwNTYyOSwgMTA1NjM0LCAxMDU2MzksIDEwNTY0NCwgMTA1NjQ5LCAKKyAgICAxMDU2NTQsIDEwNTY1OCwgMTA1NjYzLCAxMDU2NjgsIDEwNTY3MywgMTA1Njc4LCAxMDU2ODIsIDEwNTY4NiwgMTA1NjkxLCAKKyAgICAxMDU2OTYsIDEwNTcwMSwgMTA1NzA2LCAxMDU3MTAsIDEwNTcxNSwgMTA1NzIxLCAxMDU3MjYsIDEwNTczMiwgMTA1NzM3LCAKKyAgICAxMDU3NDIsIDEwNTc0OCwgMTA1NzUzLCAxMDU3NTksIDEwNTc2NCwgMTA1NzY5LCAxMDU3NzQsIDEwNTc3OSwgMTA1NzgzLCAKKyAgICAxMDU3ODgsIDEwNTc5NCwgMTA1Nzk5LCAxMDU4MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwNTgxMCwgMTA1ODE0LCAxMDU4MTgsIDEwNTgyMiwgMTA1ODI2LCAxMDU4MzAsIDEwNTgzNSwgMCwgCisgICAgMTA1ODQwLCAwLCAxMDU4NDUsIDEwNTg1MCwgMTA1ODU1LCAxMDU4NjAsIDAsIDEwNTg2NSwgMTA1ODcwLCAxMDU4NzUsIAorICAgIDEwNTg4MCwgMTA1ODg1LCAxMDU4OTAsIDEwNTg5NSwgMTA1OTAwLCAxMDU5MDUsIDEwNTkxMCwgMTA1OTE1LCAxMDU5MjAsIAorICAgIDEwNTkyNSwgMTA1OTI5LCAxMDU5MzQsIDAsIDEwNTkzOSwgMTA1OTQ0LCAxMDU5NDgsIDEwNTk1MiwgMTA1OTU3LCAKKyAgICAxMDU5NjIsIDEwNTk2NywgMTA1OTcyLCAxMDU5NzYsIDEwNTk4MSwgMTA1OTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAxMDU5OTEsIAorICAgIDEwNTk5NSwgMTA2MDAwLCAxMDYwMDQsIDEwNjAwOSwgMTA2MDEzLCAxMDYwMTgsIDEwNjAyMiwgMTA2MDI3LCAxMDYwMzEsIAorICAgIDEwNjAzNiwgMTA2MDQwLCAxMDYwNDUsIDEwNjA1MCwgMTA2MDU1LCAxMDYwNjAsIDEwNjA2NSwgMTA2MDcwLCAxMDYwNzUsIAorICAgIDEwNjA4MCwgMTA2MDg1LCAxMDYwOTAsIDEwNjA5NSwgMTA2MTAwLCAxMDYxMDUsIDEwNjExMCwgMTA2MTE1LCAxMDYxMjAsIAorICAgIDEwNjEyNSwgMTA2MTMwLCAxMDYxMzUsIDEwNjE0MCwgMTA2MTQ1LCAxMDYxNTAsIDEwNjE1NSwgMTA2MTU5LCAxMDYxNjQsIAorICAgIDEwNjE2OSwgMTA2MTc0LCAxMDYxNzksIDEwNjE4MywgMTA2MTg3LCAxMDYxOTIsIDEwNjE5NywgMTA2MjAyLCAxMDYyMDcsIAorICAgIDEwNjIxMiwgMTA2MjE2LCAxMDYyMjEsIDEwNjIyNywgMTA2MjMyLCAxMDYyMzgsIDEwNjI0MywgMTA2MjQ5LCAxMDYyNTQsIAorICAgIDEwNjI2MCwgMTA2MjY1LCAxMDYyNzEsIDEwNjI3NiwgMCwgMCwgMCwgMCwgMCwgMTA2MjgxLCAxMDYyODYsIDEwNjI5MCwgCisgICAgMTA2Mjk0LCAxMDYyOTgsIDEwNjMwMiwgMTA2MzA2LCAxMDYzMTAsIDEwNjMxNSwgMTA2MzE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDYzMjQsIDEwNjMzMSwgMTA2MzM2LCAxMDYzNDEsIDAsIDEwNjM0NiwgMTA2MzUwLCAxMDYzNTUsIDEwNjM1OSwgCisgICAgMTA2MzY0LCAxMDYzNjgsIDEwNjM3MywgMTA2Mzc4LCAwLCAwLCAxMDYzODMsIDEwNjM4OCwgMCwgMCwgMTA2MzkzLCAKKyAgICAxMDYzOTgsIDEwNjQwMywgMTA2NDA3LCAxMDY0MTIsIDEwNjQxNywgMTA2NDIyLCAxMDY0MjcsIDEwNjQzMiwgMTA2NDM3LCAKKyAgICAxMDY0NDIsIDEwNjQ0NywgMTA2NDUyLCAxMDY0NTcsIDEwNjQ2MiwgMTA2NDY3LCAxMDY0NzIsIDEwNjQ3NywgMTA2NDgyLCAKKyAgICAxMDY0ODcsIDEwNjQ5MiwgMTA2NDk3LCAwLCAxMDY1MDIsIDEwNjUwNiwgMTA2NTExLCAxMDY1MTYsIDEwNjUyMSwgCisgICAgMTA2NTI1LCAxMDY1MjksIDAsIDEwNjUzNCwgMTA2NTM5LCAwLCAxMDY1NDQsIDEwNjU0OSwgMTA2NTU0LCAxMDY1NTksIAorICAgIDEwNjU2NCwgMCwgMCwgMTA2NTY4LCAxMDY1NzMsIDEwNjU3OCwgMTA2NTg0LCAxMDY1ODksIDEwNjU5NSwgMTA2NjAwLCAKKyAgICAxMDY2MDYsIDEwNjYxMiwgMCwgMCwgMTA2NjE5LCAxMDY2MjUsIDAsIDAsIDEwNjYzMSwgMTA2NjM3LCAxMDY2NDMsIDAsIDAsIAorICAgIDEwNjY0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA2NjUyLCAwLCAwLCAwLCAwLCAwLCAxMDY2NTksIDEwNjY2NCwgMTA2NjcxLCAKKyAgICAxMDY2NzksIDEwNjY4NSwgMTA2NjkxLCAxMDY2OTcsIDAsIDAsIDEwNjcwNCwgMTA2NzEwLCAxMDY3MTUsIDEwNjcyMCwgCisgICAgMTA2NzI1LCAxMDY3MzAsIDEwNjczNSwgMCwgMCwgMCwgMTA2NzQwLCAxMDY3NDUsIDEwNjc1MCwgMTA2NzU2LCAxMDY3NjIsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEwNjc2NywgMTA2NzcxLCAxMDY3NzUsIDEwNjc4MCwgMTA2Nzg0LCAxMDY3ODksIDEwNjc5MywgMTA2Nzk4LCAKKyAgICAxMDY4MDMsIDEwNjgwOSwgMTA2ODE0LCAxMDY4MjAsIDEwNjgyNCwgMTA2ODI5LCAxMDY4MzMsIDEwNjgzOCwgMTA2ODQyLCAKKyAgICAxMDY4NDcsIDEwNjg1MiwgMTA2ODU3LCAxMDY4NjIsIDEwNjg2NywgMTA2ODcyLCAxMDY4NzcsIDEwNjg4MiwgMTA2ODg3LCAKKyAgICAxMDY4OTIsIDEwNjg5NywgMTA2OTAyLCAxMDY5MDcsIDEwNjkxMiwgMTA2OTE3LCAxMDY5MjIsIDEwNjkyNywgMTA2OTMyLCAKKyAgICAxMDY5MzcsIDEwNjk0MSwgMTA2OTQ2LCAxMDY5NTEsIDEwNjk1NiwgMTA2OTYwLCAxMDY5NjQsIDEwNjk2OSwgMTA2OTc0LCAKKyAgICAxMDY5NzksIDEwNjk4NCwgMTA2OTg5LCAxMDY5OTQsIDEwNjk5OCwgMTA3MDA0LCAxMDcwMDksIDEwNzAxNSwgMTA3MDIwLCAKKyAgICAxMDcwMjYsIDEwNzAzMiwgMTA3MDM5LCAxMDcwNDUsIDEwNzA1MiwgMTA3MDU3LCAxMDcwNjQsIDEwNzA3MCwgMTA3MDc1LCAKKyAgICAxMDcwODIsIDEwNzA4OCwgMTA3MDkzLCAxMDcwOTgsIDEwNzEwMywgMTA3MTA4LCAxMDcxMTMsIDEwNzExOCwgMTA3MTIyLCAKKyAgICAxMDcxMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNzEzMSwgMTA3MTM2LCAxMDcxNDAsIDEwNzE0NCwgMTA3MTQ4LCAKKyAgICAxMDcxNTIsIDEwNzE1NiwgMTA3MTYwLCAxMDcxNjUsIDEwNzE2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3MTc0LCAxMDcxNzcsIDEwNzE4MSwgMTA3MTg0LCAxMDcxODgsIAorICAgIDEwNzE5MSwgMTA3MTk1LCAxMDcxOTksIDEwNzIwNCwgMTA3MjA4LCAxMDcyMTMsIDEwNzIxNiwgMTA3MjIwLCAxMDcyMjMsIAorICAgIDEwNzIyNywgMTA3MjMwLCAxMDcyMzQsIDEwNzIzOCwgMTA3MjQyLCAxMDcyNDYsIDEwNzI1MCwgMTA3MjU0LCAxMDcyNTgsIAorICAgIDEwNzI2MiwgMTA3MjY2LCAxMDcyNzAsIDEwNzI3NCwgMTA3Mjc4LCAxMDcyODIsIDEwNzI4NiwgMTA3MjkwLCAxMDcyOTQsIAorICAgIDEwNzI5OCwgMTA3MzAyLCAxMDczMDYsIDEwNzMwOSwgMTA3MzEzLCAxMDczMTcsIDEwNzMyMSwgMTA3MzI0LCAxMDczMjcsIAorICAgIDEwNzMzMSwgMTA3MzM1LCAxMDczMzksIDEwNzM0MywgMTA3MzQ3LCAxMDczNTEsIDEwNzM1NCwgMTA3MzU5LCAxMDczNjMsIAorICAgIDEwNzM2OCwgMTA3MzcyLCAxMDczNzcsIDEwNzM4MiwgMCwgMCwgMTA3Mzg4LCAxMDczOTIsIDEwNzM5NywgMTA3NDAxLCAKKyAgICAxMDc0MDYsIDEwNzQxMCwgMTA3NDE0LCAxMDc0MTgsIDEwNzQyMiwgMTA3NDI2LCAxMDc0MzAsIDEwNzQzMywgMTA3NDM3LCAKKyAgICAxMDc0NDIsIDEwNzQ0NiwgMTA3NDUxLCAxMDc0NTYsIDEwNzQ2MSwgMTA3NDY4LCAxMDc0ODAsIDEwNzQ5MiwgMTA3NTA0LCAKKyAgICAxMDc1MTcsIDEwNzUzMSwgMTA3NTM4LCAxMDc1NDgsIDEwNzU1NiwgMTA3NTY1LCAxMDc1NzQsIDEwNzU4MywgMTA3NTkzLCAKKyAgICAxMDc2MDQsIDEwNzYxNiwgMTA3NjIzLCAxMDc2MzAsIDEwNzYzOCwgMTA3NjQzLCAxMDc2NDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwNzY1NiwgMTA3NjYwLCAxMDc2NjUsIDEwNzY2OSwgMTA3Njc0LCAxMDc2NzgsIDEwNzY4MywgCisgICAgMTA3Njg4LCAxMDc2OTQsIDEwNzY5OSwgMTA3NzA1LCAxMDc3MDksIDEwNzcxNCwgMTA3NzE4LCAxMDc3MjMsIDEwNzcyNywgCisgICAgMTA3NzMyLCAxMDc3MzcsIDEwNzc0MiwgMTA3NzQ3LCAxMDc3NTIsIDEwNzc1NywgMTA3NzYyLCAxMDc3NjcsIDEwNzc3MiwgCisgICAgMTA3Nzc3LCAxMDc3ODIsIDEwNzc4NywgMTA3NzkyLCAxMDc3OTcsIDEwNzgwMiwgMTA3ODA3LCAxMDc4MTIsIDEwNzgxNywgCisgICAgMTA3ODIyLCAxMDc4MjYsIDEwNzgzMSwgMTA3ODM2LCAxMDc4NDEsIDEwNzg0NSwgMTA3ODQ5LCAxMDc4NTQsIDEwNzg1OSwgCisgICAgMTA3ODY0LCAxMDc4NjksIDEwNzg3NCwgMTA3ODc5LCAxMDc4ODMsIDEwNzg4OCwgMTA3ODk0LCAxMDc4OTksIDEwNzkwNSwgCisgICAgMTA3OTEwLCAxMDc5MTYsIDEwNzkyMiwgMTA3OTI5LCAxMDc5MzUsIDEwNzk0MiwgMTA3OTQ3LCAxMDc5NTMsIDEwNzk1OCwgCisgICAgMTA3OTY0LCAxMDc5NjksIDEwNzk3NCwgMTA3OTc5LCAxMDc5ODQsIDEwNzk4OCwgMTA3OTkzLCAxMDc5OTgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODAwMywgMTA4MDA4LCAxMDgwMTIsIDEwODAxNiwgMTA4MDIwLCAxMDgwMjQsIAorICAgIDEwODAyOCwgMTA4MDMyLCAxMDgwMzcsIDEwODA0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA4MDQ2LCAxMDgwNTAsIDEwODA1NSwgMTA4MDU5LCAxMDgwNjQsIDEwODA2OCwgMTA4MDczLCAxMDgwNzcsIDEwODA4MiwgCisgICAgMTA4MDg2LCAxMDgwOTEsIDEwODA5NSwgMTA4MTAwLCAxMDgxMDUsIDEwODExMCwgMTA4MTE1LCAxMDgxMjAsIDEwODEyNSwgCisgICAgMTA4MTMwLCAxMDgxMzUsIDEwODE0MCwgMTA4MTQ1LCAxMDgxNTAsIDEwODE1NSwgMTA4MTYwLCAxMDgxNjUsIDEwODE3MCwgCisgICAgMTA4MTc1LCAxMDgxODAsIDEwODE4NSwgMTA4MTkwLCAxMDgxOTQsIDEwODE5OSwgMTA4MjA0LCAxMDgyMDksIDEwODIxMywgCisgICAgMTA4MjE3LCAxMDgyMjIsIDEwODIyNywgMTA4MjMyLCAxMDgyMzcsIDEwODI0MiwgMTA4MjQ2LCAxMDgyNTEsIDEwODI1NiwgCisgICAgMTA4MjYxLCAxMDgyNjcsIDEwODI3MiwgMTA4Mjc4LCAxMDgyODMsIDEwODI4OSwgMTA4Mjk0LCAxMDgzMDAsIDEwODMwNSwgCisgICAgMTA4MzExLCAxMDgzMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODMyMSwgMTA4MzI2LCAxMDgzMzAsIDEwODMzNCwgCisgICAgMTA4MzM4LCAxMDgzNDIsIDEwODM0NiwgMTA4MzUwLCAxMDgzNTUsIDEwODM1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4MzY0LCAKKyAgICAxMDgzNjgsIDEwODM3MywgMTA4Mzc4LCAxMDgzODMsIDEwODM4OCwgMTA4Mzk1LCAxMDgzOTksIDEwODQwNCwgMTA4NDA5LCAKKyAgICAxMDg0MTMsIDEwODQxOCwgMTA4NDIzLCAxMDg0MjgsIDEwODQzMywgMTA4NDM4LCAxMDg0NDMsIDEwODQ0OCwgMTA4NDUyLCAKKyAgICAxMDg0NTYsIDEwODQ2MSwgMTA4NDY2LCAxMDg0NzEsIDEwODQ3OCwgMTA4NDgzLCAxMDg0ODgsIDAsIDAsIDAsIDEwODQ5MywgCisgICAgMTA4NTAwLCAxMDg1MDcsIDEwODUxNiwgMTA4NTIxLCAxMDg1MjcsIDEwODUzMiwgMTA4NTM4LCAxMDg1NDMsIDEwODU0OSwgCisgICAgMTA4NTU0LCAxMDg1NjAsIDEwODU2NSwgMTA4NTcxLCAxMDg1NzcsIDAsIDAsIDAsIDAsIDEwODU4MiwgMTA4NTg3LCAKKyAgICAxMDg1OTEsIDEwODU5NSwgMTA4NTk5LCAxMDg2MDMsIDEwODYwNywgMTA4NjExLCAxMDg2MTYsIDEwODYyMCwgMTA4NjI1LCAKKyAgICAxMDg2MzAsIDEwODYzNSwgMTA4NjQxLCAxMDg2NDYsIDEwODY1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTA4NjU2LCAxMDg2NjQsIDEwODY3MSwgMTA4Njc5LCAxMDg2ODcsIDEwODY5NCwgMTA4NzAyLCAKKyAgICAxMDg3MTAsIDEwODcxOCwgMTA4NzI1LCAxMDg3MzIsIDEwODc0MCwgMTA4NzQ4LCAxMDg3NTYsIDEwODc2NCwgMTA4NzcyLCAKKyAgICAxMDg3ODAsIDEwODc4OCwgMTA4Nzk2LCAxMDg4MDQsIDEwODgxMiwgMTA4ODIwLCAxMDg4MjgsIDEwODgzNiwgMTA4ODQ0LCAKKyAgICAxMDg4NTIsIDEwODg2MCwgMTA4ODY4LCAxMDg4NzYsIDEwODg4NCwgMTA4ODkyLCAxMDg5MDAsIDEwODkwOCwgMTA4OTE2LCAKKyAgICAxMDg5MjMsIDEwODkzMSwgMTA4OTM5LCAxMDg5NDYsIDEwODk1NCwgMTA4OTYyLCAxMDg5NzAsIDEwODk3NywgMTA4OTg0LCAKKyAgICAxMDg5OTIsIDEwOTAwMCwgMTA5MDA4LCAxMDkwMTYsIDEwOTAyNCwgMTA5MDMyLCAxMDkwNDAsIDEwOTA0OCwgMTA5MDU2LCAKKyAgICAxMDkwNjQsIDEwOTA3MiwgMTA5MDgwLCAxMDkwODgsIDEwOTA5NiwgMTA5MTA0LCAxMDkxMTIsIDEwOTEyMCwgMTA5MTI4LCAKKyAgICAxMDkxMzYsIDEwOTE0NCwgMTA5MTUyLCAxMDkxNjAsIDEwOTE2NywgMTA5MTczLCAxMDkxNzksIDEwOTE4NSwgMTA5MTkxLCAKKyAgICAxMDkxOTcsIDEwOTIwMywgMTA5MjEwLCAxMDkyMTYsIDEwOTIyMywgMTA5MjMwLCAxMDkyMzcsIDEwOTI0NCwgMTA5MjUxLCAKKyAgICAxMDkyNTgsIDEwOTI2NSwgMTA5MjcyLCAxMDkyNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwOTI4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTA5MjkyLCAxMDkzMDAsIDEwOTMwOCwgMTA5MzE3LCAxMDkzMjUsIDEwOTMzNCwgMTA5MzQzLCAxMDkzNTIsIAorICAgIDEwOTM2MSwgMTA5MzY5LCAxMDkzNzgsIDEwOTM4NywgMTA5Mzk2LCAxMDk0MDUsIDEwOTQxNCwgMTA5NDIzLCAxMDk0MzIsIAorICAgIDEwOTQ0MSwgMTA5NDUwLCAxMDk0NTksIDEwOTQ2OCwgMTA5NDc3LCAxMDk0ODUsIDEwOTQ5MywgMTA5NTAxLCAxMDk1MDksIAorICAgIDEwOTUxNywgMTA5NTI2LCAxMDk1MzUsIDEwOTU0NSwgMTA5NTU1LCAxMDk1NjUsIDEwOTU3NSwgMTA5NTg1LCAxMDk1OTQsIAorICAgIDEwOTYwNCwgMTA5NjE0LCAxMDk2MjQsIDEwOTYzNSwgMTA5NjQ1LCAxMDk2NTcsIDEwOTY2OSwgMTA5NjgwLCAxMDk2OTQsIAorICAgIDEwOTcwNSwgMTA5NzE1LCAxMDk3MjcsIDEwOTczOCwgMTA5NzQ4LCAxMDk3NjAsIDEwOTc3MiwgMTA5NzgzLCAxMDk3OTQsIAorICAgIDEwOTgwNCwgMTA5ODE0LCAxMDk4MjYsIDEwOTgzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA5ODQ5LCAxMDk4NTIsIAorICAgIDEwOTg1NywgMTA5ODYzLCAxMDk4NzEsIDEwOTg3NiwgMTA5ODgyLCAxMDk4OTAsIDEwOTg5NiwgMTA5OTAyLCAxMDk5MDYsIAorICAgIDEwOTkxMCwgMTA5OTE3LCAxMDk5MjYsIDEwOTkzMywgMTA5OTQyLCAxMDk5NDgsIDEwOTk1NywgMTA5OTY0LCAxMDk5NzEsIAorICAgIDEwOTk3OCwgMTA5OTg4LCAxMDk5OTQsIDEwOTk5OCwgMTEwMDA1LCAxMTAwMTQsIDExMDAyNCwgMTEwMDMxLCAxMTAwMzgsIAorICAgIDExMDA0MiwgMTEwMDQ2LCAxMTAwNTMsIDExMDA2MywgMTEwMDY3LCAxMTAwNzQsIDExMDA4MSwgMTEwMDg4LCAxMTAwOTQsIAorICAgIDExMDEwMSwgMTEwMTA4LCAxMTAxMTUsIDExMDEyMiwgMTEwMTI2LCAxMTAxMzAsIDExMDEzNCwgMTEwMTQxLCAxMTAxNDUsIAorICAgIDExMDE1MiwgMTEwMTU5LCAxMTAxNzMsIDExMDE4MiwgMTEwMTg2LCAxMTAxOTAsIDExMDE5NCwgMTEwMjAxLCAxMTAyMDUsIAorICAgIDExMDIwOSwgMTEwMjEzLCAxMTAyMjEsIDExMDIyOSwgMTEwMjQ4LCAxMTAyNTgsIDExMDI3OCwgMTEwMjgyLCAxMTAyODYsIAorICAgIDExMDI5MCwgMTEwMjk0LCAxMTAyOTgsIDExMDMwMiwgMTEwMzA2LCAxMTAzMTMsIDExMDMxNywgMTEwMzIwLCAxMTAzMjQsIAorICAgIDExMDMyOCwgMTEwMzM0LCAxMTAzNDEsIDExMDM1MCwgMTEwMzU0LCAxMTAzNjMsIDExMDM3MiwgMTEwMzgwLCAxMTAzODQsIAorICAgIDExMDM5MSwgMTEwMzk1LCAxMTAzOTksIDExMDQwMywgMTEwNDA3LCAxMTA0MTgsIDExMDQyNywgMTEwNDM2LCAxMTA0NDUsIAorICAgIDExMDQ1NCwgMTEwNDY2LCAxMTA0NzUsIDExMDQ4NCwgMTEwNDkzLCAxMTA1MDEsIDExMDUxMCwgMTEwNTIyLCAxMTA1MzEsIAorICAgIDExMDU0MCwgMTEwNTQ5LCAxMTA1NjEsIDExMDU3MCwgMTEwNTc5LCAxMTA1OTEsIDExMDYwMCwgMTEwNjA5LCAxMTA2MjEsIAorICAgIDExMDYzMCwgMTEwNjM0LCAxMTA2MzgsIDExMDY0MiwgMTEwNjQ2LCAxMTA2NTAsIDExMDY1NCwgMTEwNjU4LCAxMTA2NjUsIAorICAgIDExMDY2OSwgMTEwNjczLCAxMTA2ODQsIDExMDY4OCwgMTEwNjkyLCAxMTA2OTksIDExMDcwNSwgMTEwNzExLCAxMTA3MTUsIAorICAgIDExMDcyMiwgMTEwNzI2LCAxMTA3MzAsIDExMDczNCwgMTEwNzM4LCAxMTA3NDIsIDExMDc0NiwgMTEwNzUyLCAxMTA3NjAsIAorICAgIDExMDc2NCwgMTEwNzY4LCAxMTA3NzEsIDExMDc3NywgMTEwNzg3LCAxMTA3OTEsIDExMDgwMywgMTEwODEwLCAxMTA4MTcsIAorICAgIDExMDgyNCwgMTEwODMxLCAxMTA4MzcsIDExMDg0MSwgMTEwODQ1LCAxMTA4NDksIDExMDg1MywgMTEwODYwLCAxMTA4NjksIAorICAgIDExMDg3NiwgMTEwODg0LCAxMTA4OTIsIDExMDg5OCwgMTEwOTAyLCAxMTA5MDYsIDExMDkxMCwgMTEwOTE0LCAxMTA5MjAsIAorICAgIDExMDkyOSwgMTEwOTQxLCAxMTA5NDgsIDExMDk1NSwgMTEwOTY0LCAxMTA5NzUsIDExMDk4MSwgMTEwOTkwLCAxMTA5OTksIAorICAgIDExMTAwNiwgMTExMDE1LCAxMTEwMjIsIDExMTAyOSwgMTExMDM5LCAxMTEwNDYsIDExMTA1MywgMTExMDYwLCAxMTEwNjcsIAorICAgIDExMTA3MSwgMTExMDc3LCAxMTEwODEsIDExMTA5MiwgMTExMTAwLCAxMTExMDksIDExMTEyMSwgMTExMTI4LCAxMTExMzUsIAorICAgIDExMTE0NSwgMTExMTUyLCAxMTExNjIsIDExMTE2OSwgMTExMTc5LCAxMTExODYsIDExMTE5MywgMTExMjAzLCAxMTEyMTAsIAorICAgIDExMTIxNywgMTExMjI3LCAxMTEyMzQsIDExMTI0NiwgMTExMjU1LCAxMTEyNjIsIDExMTI2OSwgMTExMjc2LCAxMTEyODUsIAorICAgIDExMTI5NSwgMTExMzA4LCAxMTEzMTUsIDExMTMyNSwgMTExMzM1LCAxMTEzNDIsIDExMTM1MSwgMTExMzY0LCAxMTEzNzEsIAorICAgIDExMTM3OCwgMTExMzg1LCAxMTEzOTUsIDExMTQwNSwgMTExNDEyLCAxMTE0MjIsIDExMTQyOSwgMTExNDM2LCAxMTE0NDYsIAorICAgIDExMTQ1MiwgMTExNDU5LCAxMTE0NjYsIDExMTQ3MywgMTExNDgzLCAxMTE0OTAsIDExMTQ5NywgMTExNTA0LCAxMTE1MTAsIAorICAgIDExMTUxNywgMTExNTI3LCAxMTE1MzQsIDExMTUzOCwgMTExNTQ2LCAxMTE1NTAsIDExMTU2MiwgMTExNTY2LCAxMTE1ODAsIAorICAgIDExMTU4NCwgMTExNTg4LCAxMTE1OTIsIDExMTU5NiwgMTExNjAyLCAxMTE2MDksIDExMTYxNywgMTExNjIxLCAxMTE2MjUsIAorICAgIDExMTYyOSwgMTExNjMzLCAxMTE2NDAsIDExMTY0NCwgMTExNjUwLCAxMTE2NTYsIDExMTY2NCwgMTExNjY4LCAxMTE2NzUsIAorICAgIDExMTY4MywgMTExNjg3LCAxMTE2OTEsIDExMTY5NywgMTExNzAxLCAxMTE3MTAsIDExMTcxOSwgMTExNzI2LCAxMTE3MzYsIAorICAgIDExMTc0MiwgMTExNzQ2LCAxMTE3NTAsIDExMTc1OCwgMTExNzY1LCAxMTE3NzIsIDExMTc3OCwgMTExNzgyLCAxMTE3OTAsIAorICAgIDExMTc5NCwgMTExODAxLCAxMTE4MTMsIDExMTgyMCwgMTExODMwLCAxMTE4MzYsIDExMTg0MCwgMTExODQ5LCAxMTE4NTYsIAorICAgIDExMTg2NSwgMTExODY5LCAxMTE4NzMsIDExMTg4MCwgMTExODg0LCAxMTE4ODgsIDExMTg5MiwgMTExODk2LCAxMTE4OTksIAorICAgIDExMTkwNSwgMTExOTExLCAxMTE5MTUsIDExMTkxOSwgMTExOTI2LCAxMTE5MzMsIDExMTk0MCwgMTExOTQ3LCAxMTE5NTQsIAorICAgIDExMTk2MSwgMTExOTY4LCAxMTE5NzUsIDExMTk4MSwgMTExOTg1LCAxMTE5ODksIDExMTk5NiwgMTEyMDAzLCAxMTIwMTAsIAorICAgIDExMjAxNywgMTEyMDI0LCAxMTIwMjgsIDExMjAzMSwgMTEyMDM2LCAxMTIwNDAsIDExMjA0NCwgMTEyMDUzLCAxMTIwNjIsIAorICAgIDExMjA2NiwgMTEyMDcwLCAxMTIwNzYsIDExMjA4MiwgMTEyMDk5LCAxMTIxMDUsIDExMjEwOSwgMTEyMTE4LCAxMTIxMjIsIAorICAgIDExMjEyNiwgMTEyMTMzLCAxMTIxNDEsIDExMjE0OSwgMTEyMTU1LCAxMTIxNTksIDExMjE2MywgMTEyMTY3LCAxMTIxNzEsIAorICAgIDExMjE3NCwgMTEyMTgwLCAxMTIxODcsIDExMjE5NywgMTEyMjA0LCAxMTIyMTEsIDExMjIxOCwgMTEyMjI0LCAxMTIyMzEsIAorICAgIDExMjIzOCwgMTEyMjQ1LCAxMTIyNTIsIDExMjI1OSwgMTEyMjY4LCAxMTIyNzUsIDExMjI4NywgMTEyMjk0LCAxMTIzMDEsIAorICAgIDExMjMxMSwgMTEyMzIyLCAxMTIzMjksIDExMjMzNiwgMTEyMzQzLCAxMTIzNTAsIDExMjM1NywgMTEyMzY0LCAxMTIzNzEsIAorICAgIDExMjM3OCwgMTEyMzg1LCAxMTIzOTIsIDExMjQwMiwgMTEyNDEyLCAxMTI0MjIsIDExMjQyOSwgMTEyNDM5LCAxMTI0NDYsIAorICAgIDExMjQ1MywgMTEyNDYwLCAxMTI0NjcsIDExMjQ3NCwgMTEyNDgxLCAxMTI0ODgsIDExMjQ5NSwgMTEyNTAyLCAxMTI1MDksIAorICAgIDExMjUxNiwgMTEyNTIzLCAxMTI1MzAsIDExMjUzNiwgMTEyNTQzLCAxMTI1NTAsIDExMjU1OSwgMTEyNTY2LCAxMTI1NzMsIAorICAgIDExMjU3NywgMTEyNTg1LCAxMTI1ODksIDExMjU5MywgMTEyNTk3LCAxMTI2MDEsIDExMjYwNSwgMTEyNjEyLCAxMTI2MTYsIAorICAgIDExMjYyNSwgMTEyNjI5LCAxMTI2MzYsIDExMjY0NCwgMTEyNjQ4LCAxMTI2NTIsIDExMjY1NiwgMTEyNjY5LCAxMTI2ODUsIAorICAgIDExMjY4OSwgMTEyNjkzLCAxMTI3MDAsIDExMjcwNiwgMTEyNzEzLCAxMTI3MTcsIDExMjcyMSwgMTEyNzI1LCAxMTI3MjksIAorICAgIDExMjczMywgMTEyNzQwLCAxMTI3NDQsIDExMjc2MiwgMTEyNzY2LCAxMTI3NzAsIDExMjc3NywgMTEyNzgxLCAxMTI3ODUsIAorICAgIDExMjc5MSwgMTEyNzk1LCAxMTI3OTksIDExMjgwNywgMTEyODExLCAxMTI4MTUsIDExMjgxOSwgMTEyODIzLCAxMTI4MjksIAorICAgIDExMjg0MCwgMTEyODQ5LCAxMTI4NTgsIDExMjg2NSwgMTEyODcyLCAxMTI4ODMsIDExMjg5MCwgMTEyODk3LCAxMTI5MDQsIAorICAgIDExMjkxMSwgMTEyOTE4LCAxMTI5MjUsIDExMjkzMiwgMTEyOTQyLCAxMTI5NDgsIDExMjk1NSwgMTEyOTY1LCAxMTI5NzQsIAorICAgIDExMjk4MSwgMTEyOTkwLCAxMTMwMDAsIDExMzAwNywgMTEzMDE0LCAxMTMwMjEsIDExMzAyOCwgMTEzMDQwLCAxMTMwNDcsIAorICAgIDExMzA1NCwgMTEzMDYxLCAxMTMwNjgsIDExMzA3NSwgMTEzMDg1LCAxMTMwOTIsIDExMzA5OSwgMTEzMTA5LCAxMTMxMjIsIAorICAgIDExMzEzNCwgMTEzMTQxLCAxMTMxNTEsIDExMzE1OCwgMTEzMTY1LCAxMTMxNzIsIDExMzE4NywgMTEzMTkzLCAxMTMyMDEsIAorICAgIDExMzIxMSwgMTEzMjIxLCAxMTMyMjgsIDExMzIzNSwgMTEzMjQxLCAxMTMyNDUsIDExMzI1MiwgMTEzMjYyLCAxMTMyNjgsIAorICAgIDExMzI4MSwgMTEzMjg1LCAxMTMyODksIDExMzI5NiwgMTEzMzAwLCAxMTMzMDcsIDExMzMxNywgMTEzMzIxLCAxMTMzMjUsIAorICAgIDExMzMyOSwgMTEzMzMzLCAxMTMzMzcsIDExMzM0NCwgMTEzMzQ4LCAxMTMzNTUsIDExMzM2MiwgMTEzMzY5LCAxMTMzNzgsIAorICAgIDExMzM4NywgMTEzMzk3LCAxMTM0MDQsIDExMzQxMSwgMTEzNDE4LCAxMTM0MjgsIDExMzQzNSwgMTEzNDQ1LCAxMTM0NTIsIAorICAgIDExMzQ2MiwgMTEzNDY5LCAxMTM0NzYsIDExMzQ4NiwgMTEzNDk2LCAxMTM1MDMsIDExMzUwOSwgMTEzNTE3LCAxMTM1MjUsIAorICAgIDExMzUzMSwgMTEzNTM3LCAxMTM1NDEsIDExMzU0NSwgMTEzNTUyLCAxMTM1NjAsIDExMzU2NiwgMTEzNTcwLCAxMTM1NzQsIAorICAgIDExMzU3OCwgMTEzNTg1LCAxMTM1OTcsIDExMzYwMCwgMTEzNjA3LCAxMTM2MTMsIDExMzYxNywgMTEzNjIxLCAxMTM2MjUsIAorICAgIDExMzYyOSwgMTEzNjMzLCAxMTM2MzcsIDExMzY0MSwgMTEzNjQ1LCAxMTM2NDksIDExMzY1MywgMTEzNjYwLCAxMTM2NjQsIAorICAgIDExMzY3MCwgMTEzNjc0LCAxMTM2NzgsIDExMzY4MiwgMTEzNjg4LCAxMTM2OTUsIDExMzcwMiwgMTEzNzA5LCAxMTM3MjEsIAorICAgIDExMzcyOSwgMTEzNzMzLCAxMTM3MzksIDExMzc0OCwgMTEzNzU1LCAxMTM3NjEsIDExMzc2NSwgMTEzNzY5LCAxMTM3NzMsIAorICAgIDExMzc3OSwgMTEzNzg4LCAxMTM3OTYsIDExMzgwMCwgMTEzODA2LCAxMTM4MTAsIDExMzgxNCwgMTEzODE4LCAxMTM4MjQsIAorICAgIDExMzgzMSwgMTEzODM3LCAxMTM4NDEsIDExMzg0NywgMTEzODUxLCAxMTM4NTUsIDExMzg2NCwgMTEzODc2LCAxMTM4ODAsIAorICAgIDExMzg4NywgMTEzODk0LCAxMTM5MDQsIDExMzkxMSwgMTEzOTIzLCAxMTM5MzAsIDExMzkzNywgMTEzOTQ0LCAxMTM5NTUsIAorICAgIDExMzk2NSwgMTEzOTc4LCAxMTM5ODgsIDExMzk5NSwgMTEzOTk5LCAxMTQwMDMsIDExNDAwNywgMTE0MDExLCAxMTQwMjAsIAorICAgIDExNDAyOSwgMTE0MDM4LCAxMTQwNTUsIDExNDA2NCwgMTE0MDcwLCAxMTQwNzcsIDExNDA4NSwgMTE0MDk4LCAxMTQxMDIsIAorICAgIDExNDExMSwgMTE0MTIwLCAxMTQxMjksIDExNDEzOCwgMTE0MTQ5LCAxMTQxNTgsIDExNDE2NywgMTE0MTc2LCAxMTQxODUsIAorICAgIDExNDE5NCwgMTE0MjAzLCAxMTQyMTMsIDExNDIxNiwgMTE0MjIwLCAxMTQyMjQsIDExNDIyOCwgMTE0MjMyLCAxMTQyMzYsIAorICAgIDExNDI0MiwgMTE0MjQ5LCAxMTQyNTYsIDExNDI2MywgMTE0MjY5LCAxMTQyNzUsIDExNDI4MiwgMTE0Mjg4LCAxMTQyOTUsIAorICAgIDExNDMwMywgMTE0MzA3LCAxMTQzMTQsIDExNDMyMSwgMTE0MzI4LCAxMTQzMzYsIDExNDM0MCwgMTE0MzQ0LCAxMTQzNDgsIAorICAgIDExNDM1MiwgMTE0MzU2LCAxMTQzNjIsIDExNDM2NiwgMTE0MzcyLCAxMTQzNzksIDExNDM4NiwgMTE0MzkyLCAxMTQzOTksIAorICAgIDExNDQwNiwgMTE0NDEzLCAxMTQ0MjAsIDExNDQyNywgMTE0NDM0LCAxMTQ0NDEsIDExNDQ0OCwgMTE0NDU1LCAxMTQ0NjIsIAorICAgIDExNDQ2OSwgMTE0NDc2LCAxMTQ0ODMsIDExNDQ5MCwgMTE0NDk2LCAxMTQ1MDAsIDExNDUwOSwgMTE0NTEzLCAxMTQ1MTcsIAorICAgIDExNDUyMSwgMTE0NTI1LCAxMTQ1MzEsIDExNDUzOCwgMTE0NTQ1LCAxMTQ1NTIsIDExNDU1OSwgMTE0NTY2LCAxMTQ1NzIsIAorICAgIDExNDU4MCwgMTE0NTg0LCAxMTQ1ODgsIDExNDU5MiwgMTE0NTk2LCAxMTQ2MDIsIDExNDYxOSwgMTE0NjM2LCAxMTQ2NDAsIAorICAgIDExNDY0NCwgMTE0NjQ4LCAxMTQ2NTIsIDExNDY1NiwgMTE0NjYwLCAxMTQ2NjYsIDExNDY3MywgMTE0Njc3LCAxMTQ2ODMsIAorICAgIDExNDY5MCwgMTE0Njk3LCAxMTQ3MDQsIDExNDcxMSwgMTE0NzE4LCAxMTQ3MjcsIDExNDczNCwgMTE0NzQxLCAxMTQ3NDgsIAorICAgIDExNDc1NSwgMTE0NzU5LCAxMTQ3NjMsIDExNDc2OSwgMTE0NzgxLCAxMTQ3ODUsIDExNDc4OSwgMTE0Nzk4LCAxMTQ4MDIsIAorICAgIDExNDgwNiwgMTE0ODEwLCAxMTQ4MTYsIDExNDgyMCwgMTE0ODI0LCAxMTQ4MzMsIDExNDgzNywgMTE0ODQxLCAxMTQ4NDUsIAorICAgIDExNDg1MiwgMTE0ODU2LCAxMTQ4NjAsIDExNDg2NCwgMTE0ODY4LCAxMTQ4NzIsIDExNDg3NiwgMTE0ODgwLCAxMTQ4ODQsIAorICAgIDExNDg5MCwgMTE0ODk3LCAxMTQ5MDQsIDExNDkxMCwgMTE0OTE0LCAxMTQ5MzEsIDExNDkzNywgMTE0OTQxLCAxMTQ5NDcsIAorICAgIDExNDk1MywgMTE0OTU5LCAxMTQ5NjUsIDExNDk3MSwgMTE0OTc3LCAxMTQ5ODEsIDExNDk4NSwgMTE0OTg5LCAxMTQ5OTUsIAorICAgIDExNDk5OSwgMTE1MDA1LCAxMTUwMDksIDExNTAxMywgMTE1MDIwLCAxMTUwMjcsIDExNTA0NCwgMTE1MDQ4LCAxMTUwNTIsIAorICAgIDExNTA1NiwgMTE1MDYwLCAxMTUwNjQsIDExNTA3NiwgMTE1MDc5LCAxMTUwODQsIDExNTA4OSwgMTE1MTA0LCAxMTUxMTQsIAorICAgIDExNTEyNiwgMTE1MTMwLCAxMTUxMzQsIDExNTEzOCwgMTE1MTQ0LCAxMTUxNTEsIDExNTE1OCwgMTE1MTY4LCAxMTUxODAsIAorICAgIDExNTE4NiwgMTE1MTkyLCAxMTUyMDEsIDExNTIwNSwgMTE1MjA5LCAxMTUyMTYsIDExNTIyNiwgMTE1MjMzLCAxMTUyMzksIAorICAgIDExNTI0MywgMTE1MjQ3LCAxMTUyNTQsIDExNTI2MCwgMTE1MjY0LCAxMTUyNzAsIDExNTI3NCwgMTE1MjgyLCAxMTUyODgsIAorICAgIDExNTI5MiwgMTE1MzAwLCAxMTUzMDksIDExNTMxNiwgMTE1MzIyLCAxMTUzMjksIDExNTMzNiwgMTE1MzQ2LCAxMTUzNTYsIAorICAgIDExNTM2MCwgMTE1MzY0LCAxMTUzNjgsIDExNTM3MiwgMTE1Mzc4LCAxMTUzODUsIDExNTM5MSwgMTE1Mzk4LCAxMTU0MDUsIAorICAgIDExNTQxMiwgMTE1NDIxLCAxMTU0MjgsIDExNTQzNSwgMTE1NDQxLCAxMTU0NDgsIDExNTQ1NSwgMTE1NDYyLCAxMTU0NjksIAorICAgIDExNTQ3NiwgMTE1NDgzLCAxMTU0ODksIDExNTQ5NiwgMTE1NTAzLCAxMTU1MTAsIDExNTUxOSwgMTE1NTI2LCAxMTU1MzMsIAorICAgIDExNTUzNywgMTE1NTQzLCAxMTU1NDcsIDExNTU1MywgMTE1NTYwLCAxMTU1NjcsIDExNTU3NCwgMTE1NTc4LCAxMTU1ODIsIAorICAgIDExNTU4NiwgMTE1NTkwLCAxMTU1OTQsIDExNTYwMSwgMTE1NjA1LCAxMTU2MDksIDExNTYxNSwgMTE1NjIzLCAxMTU2MjcsIAorICAgIDExNTYzMSwgMTE1NjM1LCAxMTU2MzksIDExNTY0NiwgMTE1NjUwLCAxMTU2NTQsIDExNTY2MiwgMTE1NjY2LCAxMTU2NzAsIAorICAgIDExNTY3NCwgMTE1Njc4LCAxMTU2ODQsIDExNTY4OCwgMTE1NjkyLCAxMTU2OTgsIDExNTcwNSwgMTE1NzExLCAxMTU3MTgsIAorICAgIDExNTczMCwgMTE1NzM0LCAxMTU3NDEsIDExNTc0OCwgMTE1NzU1LCAxMTU3NjIsIDExNTc3NCwgMTE1NzgxLCAxMTU3ODUsIAorICAgIDExNTc4OSwgMTE1NzkzLCAxMTU4MDAsIDExNTgwNywgMTE1ODE0LCAxMTU4MjEsIDExNTgzMSwgMTE1ODM4LCAxMTU4NDQsIAorICAgIDExNTg1MSwgMTE1ODU4LCAxMTU4NjUsIDExNTg3MiwgMTE1ODgxLCAxMTU4OTEsIDExNTg5OCwgMTE1OTAyLCAxMTU5MDksIAorICAgIDExNTkxMywgMTE1OTE3LCAxMTU5MjEsIDExNTkyOCwgMTE1OTM1LCAxMTU5NDUsIDExNTk1MSwgMTE1OTU1LCAxMTU5NjQsIAorICAgIDExNTk2OCwgMTE1OTc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTU5NzksIDExNTk4NSwgMTE1OTkxLCAxMTU5OTgsIDExNjAwNSwgCisgICAgMTE2MDEyLCAxMTYwMTksIDExNjAyNiwgMTE2MDMzLCAxMTYwMzksIDExNjA0NiwgMTE2MDUzLCAxMTYwNjAsIDExNjA2NywgCisgICAgMTE2MDc0LCAxMTYwODEsIDExNjA4NywgMTE2MDkzLCAxMTYwOTksIDExNjEwNSwgMTE2MTExLCAxMTYxMTcsIDExNjEyMywgCisgICAgMTE2MTI5LCAxMTYxMzUsIDExNjE0MiwgMTE2MTQ5LCAxMTYxNTYsIDExNjE2MywgMTE2MTcwLCAxMTYxNzcsIDExNjE4MywgCisgICAgMTE2MTg5LCAxMTYxOTUsIDExNjIwMiwgMTE2MjA5LCAxMTYyMTUsIDExNjIyMSwgMTE2MjMwLCAxMTYyMzcsIDExNjI0NCwgCisgICAgMTE2MjUxLCAxMTYyNTgsIDExNjI2NSwgMTE2MjcyLCAxMTYyNzgsIDExNjI4NCwgMTE2MjkwLCAxMTYyOTksIDExNjMwNiwgCisgICAgMTE2MzEzLCAxMTYzMjQsIDExNjMzNSwgMTE2MzQxLCAxMTYzNDcsIDExNjM1MywgMTE2MzYyLCAxMTYzNjksIDExNjM3NiwgCisgICAgMTE2Mzg2LCAxMTYzOTYsIDExNjQwNywgMTE2NDE4LCAxMTY0MzAsIDExNjQ0MywgMTE2NDU0LCAxMTY0NjUsIDExNjQ3NywgCisgICAgMTE2NDkwLCAxMTY1MDEsIDExNjUxMiwgMTE2NTIzLCAxMTY1MzQsIDExNjU0NSwgMTE2NTU3LCAxMTY1NjUsIDExNjU3MywgCisgICAgMTE2NTgyLCAxMTY1OTEsIDExNjYwMCwgMTE2NjA2LCAxMTY2MTIsIDExNjYxOCwgMTE2NjI1LCAxMTY2MzUsIDExNjY0MiwgCisgICAgMTE2NjUyLCAxMTY2NTcsIDExNjY2MiwgMTE2NjY4LCAxMTY2NzQsIDExNjY4MiwgMTE2NjkwLCAxMTY2OTksIDExNjcxMCwgCisgICAgMTE2NzIxLCAxMTY3MjksIDExNjczNywgMTE2NzQ2LCAxMTY3NTUsIDExNjc2MywgMTE2NzcwLCAxMTY3NzgsIDExNjc4NiwgCisgICAgMTE2NzkzLCAxMTY4MDAsIDExNjgwOSwgMTE2ODE4LCAxMTY4MjcsIDExNjgzNiwgMTE2ODQ1LCAwLCAxMTY4NTQsIAorICAgIDExNjg2NSwgMTE2ODcyLCAxMTY4ODAsIDExNjg4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE2ODk2LCAKKyAgICAxMTY5MDUsIDExNjkxMiwgMTE2OTE5LCAxMTY5MjgsIDExNjkzNSwgMTE2OTQyLCAxMTY5NDksIDExNjk1OSwgMTE2OTY2LCAKKyAgICAxMTY5NzMsIDExNjk4MCwgMTE2OTg4LCAxMTY5OTUsIDExNzAwMiwgMTE3MDA5LCAxMTcwMjAsIDExNzAyNywgMTE3MDM0LCAKKyAgICAxMTcwNDEsIDExNzA0OCwgMTE3MDU1LCAxMTcwNjQsIDExNzA3MSwgMTE3MDc3LCAxMTcwODQsIDExNzA5MywgMTE3MTAwLCAKKyAgICAxMTcxMDcsIDExNzExNCwgMTE3MTI0LCAxMTcxMzEsIDExNzEzOCwgMTE3MTQ4LCAxMTcxNTgsIDExNzE2NSwgMTE3MTcyLCAKKyAgICAxMTcxNzksIDExNzE4NiwgMTE3MTkzLCAxMTcyMDAsIDExNzIwOSwgMTE3MjE2LCAxMTcyMjMsIDExNzIyOSwgMTE3MjM3LCAKKyAgICAxMTcyNDYsIDExNzI1NSwgMTE3MjY2LCAxMTcyNzUsIDExNzI4NCwgMTE3MjkzLCAxMTczMDIsIDExNzMxMSwgMTE3MzE4LCAKKyAgICAxMTczMjUsIDExNzMzNCwgMTE3MzQ2LCAxMTczNTYsIDExNzM2MywgMTE3MzcwLCAxMTczODAsIDExNzM5MCwgMTE3Mzk5LCAKKyAgICAxMTc0MDksIDExNzQxNiwgMTE3NDI2LCAxMTc0MzMsIDExNzQ0MCwgMTE3NDQ3LCAxMTc0NTcsIDExNzQ2NywgMTE3NDc0LCAKKyAgICAxMTc0ODEsIDExNzQ5MSwgMTE3NDk3LCAxMTc1MDgsIDExNzUxNywgMTE3NTI3LCAxMTc1MzUsIDExNzU0OCwgMTE3NTU1LCAKKyAgICAxMTc1NjEsIDExNzU2OSwgMTE3NTc2LCAxMTc1ODYsIDExNzU5MCwgMTE3NTk0LCAxMTc1OTgsIDExNzYwMiwgMTE3NjA2LCAKKyAgICAxMTc2MTAsIDExNzYxNCwgMTE3NjIzLCAxMTc2MjcsIDExNzYzNCwgMTE3NjM4LCAxMTc2NDIsIDExNzY0NiwgMTE3NjUwLCAKKyAgICAxMTc2NTQsIDExNzY1OCwgMTE3NjYyLCAxMTc2NjYsIDExNzY3MCwgMTE3Njc0LCAxMTc2NzgsIDExNzY4MiwgMTE3Njg2LCAKKyAgICAxMTc2OTAsIDExNzY5NCwgMTE3Njk4LCAxMTc3MDIsIDExNzcwNiwgMTE3NzEwLCAxMTc3MTcsIDExNzcyNCwgMTE3NzM0LCAKKyAgICAxMTc3NDcsIDExNzc1NywgMTE3NzYxLCAxMTc3NjUsIDExNzc2OSwgMTE3NzczLCAxMTc3NzcsIDExNzc4MSwgMTE3Nzg1LCAKKyAgICAxMTc3ODksIDExNzc5MywgMTE3Nzk3LCAxMTc4MDEsIDExNzgwOCwgMTE3ODE1LCAxMTc4MjYsIDExNzgzMywgMTE3ODQwLCAKKyAgICAxMTc4NDcsIDExNzg1NCwgMTE3ODYxLCAxMTc4NjgsIDExNzg3NSwgMTE3ODc5LCAxMTc4ODMsIDExNzg5MCwgMTE3ODk3LCAKKyAgICAxMTc5MDQsIDExNzkxMywgMTE3OTIwLCAxMTc5MzMsIDExNzk0MywgMTE3OTUwLCAxMTc5NTcsIDExNzk2MSwgMTE3OTY1LCAKKyAgICAxMTc5NzQsIDExNzk4MSwgMTE3OTg4LCAxMTc5OTUsIDExODAwOCwgMTE4MDE1LCAxMTgwMjIsIDExODAzMiwgMTE4MDQyLCAKKyAgICAxMTgwNTEsIDExODA1OCwgMTE4MDY1LCAxMTgwNzIsIDExODA3OSwgMTE4MDg2LCAxMTgwOTMsIDExODEwMywgMTE4MTA5LCAKKyAgICAxMTgxMTcsIDExODEyNCwgMTE4MTMyLCAxMTgxMzksIDExODE1MCwgMTE4MTU3LCAxMTgxNjMsIDExODE3MCwgMTE4MTc3LCAKKyAgICAxMTgxODQsIDExODE5MSwgMTE4MjAxLCAxMTgyMTEsIDExODIxOCwgMTE4MjI1LCAxMTgyMzQsIDExODI0MiwgMTE4MjQ4LCAKKyAgICAxMTgyNTUsIDExODI2MiwgMTE4MjY5LCAxMTgyNzYsIDExODI4MCwgMTE4MjkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTgzMDAsIDExODMwNCwgMTE4MzA4LCAxMTgzMTIsIAorICAgIDExODMxNiwgMTE4MzIwLCAxMTgzMjQsIDExODMyOCwgMTE4MzMyLCAxMTgzMzYsIDExODM0MCwgMTE4MzQ0LCAxMTgzNDgsIAorICAgIDExODM1MiwgMTE4MzU2LCAxMTgzNjAsIDExODM2NCwgMTE4MzY4LCAxMTgzNzIsIDExODM3NiwgMTE4MzgwLCAxMTgzODQsIAorICAgIDExODM4OCwgMTE4MzkyLCAxMTgzOTYsIDExODQwMCwgMTE4NDA0LCAxMTg0MDgsIDExODQxMiwgMTE4NDE2LCAxMTg0MjAsIAorICAgIDExODQyNCwgMTE4NDI4LCAxMTg0MzIsIDExODQzNiwgMTE4NDQwLCAxMTg0NDQsIDExODQ0OCwgMTE4NDUyLCAxMTg0NTYsIAorICAgIDExODQ2MCwgMTE4NDY0LCAxMTg0NjgsIDExODQ3MiwgMTE4NDc2LCAxMTg0ODAsIDExODQ4NCwgMTE4NDg4LCAxMTg0OTIsIAorICAgIDExODQ5NiwgMTE4NTAwLCAxMTg1MDQsIDExODUwOCwgMTE4NTEyLCAxMTg1MTYsIDExODUyMCwgMTE4NTI0LCAxMTg1MjgsIAorICAgIDExODUzMiwgMTE4NTM2LCAxMTg1NDAsIDExODU0NCwgMTE4NTQ4LCAxMTg1NTIsIDExODU1NiwgMTE4NTYwLCAxMTg1NjQsIAorICAgIDExODU2OCwgMTE4NTcyLCAxMTg1NzYsIDExODU4MCwgMTE4NTg0LCAxMTg1ODgsIDExODU5MiwgMTE4NTk2LCAxMTg2MDAsIAorICAgIDExODYwNCwgMTE4NjA4LCAxMTg2MTIsIDExODYxNiwgMTE4NjIwLCAxMTg2MjQsIDExODYyOCwgMTE4NjMyLCAxMTg2MzYsIAorICAgIDExODY0MCwgMTE4NjQ0LCAxMTg2NDgsIDExODY1MiwgMTE4NjU2LCAxMTg2NjAsIDExODY2NCwgMTE4NjY4LCAxMTg2NzIsIAorICAgIDExODY3NiwgMTE4NjgwLCAxMTg2ODQsIDExODY4OCwgMTE4NjkyLCAxMTg2OTYsIDExODcwMCwgMTE4NzA0LCAxMTg3MDgsIAorICAgIDExODcxMiwgMTE4NzE2LCAxMTg3MjAsIDExODcyNCwgMTE4NzI4LCAxMTg3MzIsIDExODczNiwgMTE4NzQwLCAxMTg3NDQsIAorICAgIDExODc0OCwgMTE4NzUyLCAxMTg3NTYsIDExODc2MCwgMTE4NzY0LCAxMTg3NjgsIDExODc3MiwgMTE4Nzc2LCAxMTg3ODAsIAorICAgIDExODc4NCwgMTE4Nzg4LCAxMTg3OTIsIDExODc5NiwgMTE4ODAwLCAxMTg4MDQsIDExODgwOCwgMTE4ODEyLCAxMTg4MTYsIAorICAgIDExODgyMCwgMTE4ODI0LCAxMTg4MjgsIDExODgzMiwgMTE4ODM2LCAxMTg4NDAsIDExODg0NCwgMTE4ODQ4LCAxMTg4NTIsIAorICAgIDExODg1NiwgMTE4ODYwLCAxMTg4NjQsIDExODg2OCwgMTE4ODcyLCAxMTg4NzYsIDExODg4MCwgMTE4ODg0LCAxMTg4ODgsIAorICAgIDExODg5MiwgMTE4ODk2LCAxMTg5MDAsIDExODkwNCwgMTE4OTA4LCAxMTg5MTIsIDExODkxNiwgMTE4OTIwLCAxMTg5MjQsIAorICAgIDExODkyOCwgMTE4OTMyLCAxMTg5MzYsIDExODk0MCwgMTE4OTQ0LCAxMTg5NDgsIDExODk1MiwgMTE4OTU2LCAxMTg5NjAsIAorICAgIDExODk2NCwgMTE4OTY4LCAxMTg5NzIsIDExODk3NiwgMTE4OTgwLCAxMTg5ODQsIDExODk4OCwgMTE4OTkyLCAxMTg5OTYsIAorICAgIDExOTAwMCwgMTE5MDA0LCAxMTkwMDgsIDExOTAxMiwgMTE5MDE2LCAxMTkwMjAsIDExOTAyNCwgMTE5MDI4LCAxMTkwMzIsIAorICAgIDExOTAzNiwgMTE5MDQwLCAxMTkwNDQsIDExOTA0OCwgMTE5MDUyLCAxMTkwNTYsIDExOTA2MCwgMTE5MDY0LCAxMTkwNjgsIAorICAgIDExOTA3MiwgMTE5MDc2LCAxMTkwODAsIDExOTA4NCwgMTE5MDg4LCAxMTkwOTIsIDExOTA5NiwgMTE5MTAwLCAxMTkxMDQsIAorICAgIDExOTEwOCwgMTE5MTEyLCAxMTkxMTYsIDExOTEyMCwgMTE5MTI0LCAxMTkxMjgsIDExOTEzMiwgMTE5MTM2LCAxMTkxNDAsIAorICAgIDExOTE0NCwgMTE5MTQ4LCAxMTkxNTIsIDExOTE1NiwgMTE5MTYwLCAxMTkxNjQsIDExOTE2OCwgMTE5MTcyLCAxMTkxNzYsIAorICAgIDExOTE4MCwgMTE5MTg0LCAxMTkxODgsIDExOTE5MiwgMTE5MTk2LCAxMTkyMDAsIDExOTIwNCwgMTE5MjA4LCAxMTkyMTIsIAorICAgIDExOTIxNiwgMTE5MjIwLCAxMTkyMjQsIDExOTIyOCwgMTE5MjMyLCAxMTkyMzYsIDExOTI0MCwgMTE5MjQ0LCAxMTkyNDgsIAorICAgIDExOTI1MiwgMTE5MjU2LCAxMTkyNjAsIDExOTI2NCwgMTE5MjY4LCAxMTkyNzIsIDExOTI3NiwgMTE5MjgwLCAxMTkyODQsIAorICAgIDExOTI4OCwgMTE5MjkyLCAxMTkyOTYsIDExOTMwMCwgMTE5MzA0LCAxMTkzMDgsIDExOTMxMiwgMTE5MzE2LCAxMTkzMjAsIAorICAgIDExOTMyNCwgMTE5MzI4LCAxMTkzMzIsIDExOTMzNiwgMTE5MzQwLCAxMTkzNDQsIDExOTM0OCwgMTE5MzUyLCAxMTkzNTYsIAorICAgIDExOTM2MCwgMTE5MzY0LCAxMTkzNjgsIDExOTM3MiwgMTE5Mzc2LCAxMTkzODAsIDExOTM4NCwgMTE5Mzg4LCAxMTkzOTIsIAorICAgIDExOTM5NiwgMTE5NDAwLCAxMTk0MDQsIDExOTQwOCwgMTE5NDEyLCAxMTk0MTYsIDExOTQyMCwgMTE5NDI0LCAxMTk0MjgsIAorICAgIDExOTQzMiwgMTE5NDM2LCAxMTk0NDAsIDExOTQ0NCwgMTE5NDQ4LCAxMTk0NTIsIDExOTQ1NiwgMTE5NDYwLCAxMTk0NjQsIAorICAgIDExOTQ2OCwgMTE5NDcyLCAxMTk0NzYsIDExOTQ4MCwgMTE5NDg0LCAxMTk0ODgsIDExOTQ5MiwgMTE5NDk2LCAxMTk1MDAsIAorICAgIDExOTUwNCwgMTE5NTA4LCAxMTk1MTIsIDExOTUxNiwgMTE5NTIwLCAxMTk1MjQsIDExOTUyOCwgMTE5NTMyLCAxMTk1MzYsIAorICAgIDExOTU0MCwgMTE5NTQ0LCAxMTk1NDgsIDExOTU1MiwgMTE5NTU2LCAxMTk1NjAsIDExOTU2NCwgMTE5NTY4LCAxMTk1NzIsIAorICAgIDExOTU3NiwgMTE5NTgwLCAxMTk1ODQsIDExOTU4OCwgMTE5NTkyLCAxMTk1OTYsIDExOTYwMCwgMTE5NjA0LCAxMTk2MDgsIAorICAgIDExOTYxMiwgMTE5NjE2LCAxMTk2MjAsIDExOTYyNCwgMTE5NjI4LCAxMTk2MzIsIDExOTYzNiwgMTE5NjQwLCAxMTk2NDQsIAorICAgIDExOTY0OCwgMTE5NjUyLCAxMTk2NTYsIDExOTY2MCwgMTE5NjY0LCAxMTk2NjgsIDExOTY3MiwgMTE5Njc2LCAxMTk2ODAsIAorICAgIDExOTY4NCwgMTE5Njg4LCAxMTk2OTIsIDExOTY5NiwgMTE5NzAwLCAxMTk3MDQsIDExOTcwOCwgMTE5NzEyLCAxMTk3MTYsIAorICAgIDExOTcyMCwgMTE5NzI0LCAxMTk3MjgsIDExOTczMiwgMTE5NzM2LCAxMTk3NDAsIDExOTc0NCwgMTE5NzQ4LCAxMTk3NTIsIAorICAgIDExOTc1NiwgMTE5NzYwLCAxMTk3NjQsIDExOTc2OCwgMTE5NzcyLCAxMTk3NzYsIDExOTc4MCwgMTE5Nzg0LCAxMTk3ODgsIAorICAgIDExOTc5MiwgMTE5Nzk2LCAxMTk4MDAsIDExOTgwNCwgMTE5ODA4LCAxMTk4MTIsIDExOTgxNiwgMTE5ODIwLCAxMTk4MjQsIAorICAgIDExOTgyOCwgMTE5ODMyLCAxMTk4MzYsIDExOTg0MCwgMTE5ODQ0LCAxMTk4NDgsIDExOTg1MiwgMTE5ODU2LCAxMTk4NjAsIAorICAgIDExOTg2NCwgMTE5ODY4LCAxMTk4NzIsIDExOTg3NiwgMTE5ODgwLCAxMTk4ODQsIDExOTg4OCwgMTE5ODkyLCAxMTk4OTYsIAorICAgIDExOTkwMCwgMTE5OTA0LCAxMTk5MDgsIDExOTkxMiwgMTE5OTE2LCAxMTk5MjAsIDExOTkyNCwgMTE5OTI4LCAxMTk5MzIsIAorICAgIDExOTkzNiwgMTE5OTQwLCAxMTk5NDQsIDExOTk0OCwgMTE5OTUyLCAxMTk5NTYsIDExOTk2MCwgMTE5OTY0LCAxMTk5NjgsIAorICAgIDExOTk3MiwgMTE5OTc2LCAxMTk5ODAsIDExOTk4NCwgMTE5OTg4LCAxMTk5OTIsIDExOTk5NiwgMTIwMDAwLCAxMjAwMDQsIAorICAgIDEyMDAwOCwgMTIwMDEyLCAxMjAwMTYsIDEyMDAyMCwgMTIwMDI0LCAxMjAwMjgsIDEyMDAzMiwgMTIwMDM2LCAxMjAwNDAsIAorICAgIDEyMDA0NCwgMTIwMDQ4LCAxMjAwNTIsIDEyMDA1NiwgMTIwMDYwLCAxMjAwNjQsIDEyMDA2OCwgMTIwMDcyLCAxMjAwNzYsIAorICAgIDEyMDA4MCwgMTIwMDg0LCAxMjAwODgsIDEyMDA5MiwgMTIwMDk2LCAxMjAxMDAsIDEyMDEwNCwgMTIwMTA4LCAxMjAxMTIsIAorICAgIDEyMDExNiwgMTIwMTIwLCAxMjAxMjQsIDEyMDEyOCwgMTIwMTMyLCAxMjAxMzYsIDEyMDE0MCwgMTIwMTQ0LCAxMjAxNDgsIAorICAgIDEyMDE1MiwgMTIwMTU2LCAxMjAxNjAsIDEyMDE2NCwgMTIwMTY4LCAxMjAxNzIsIDEyMDE3NiwgMTIwMTgwLCAxMjAxODQsIAorICAgIDEyMDE4OCwgMTIwMTkyLCAxMjAxOTYsIDEyMDIwMCwgMTIwMjA0LCAxMjAyMDgsIDEyMDIxMiwgMTIwMjE2LCAxMjAyMjAsIAorICAgIDEyMDIyNCwgMTIwMjI4LCAxMjAyMzIsIDEyMDIzNiwgMTIwMjQwLCAxMjAyNDQsIDEyMDI0OCwgMTIwMjUyLCAxMjAyNTYsIAorICAgIDEyMDI2MCwgMTIwMjY0LCAxMjAyNjgsIDEyMDI3MiwgMTIwMjc2LCAxMjAyODAsIDEyMDI4NCwgMTIwMjg4LCAxMjAyOTIsIAorICAgIDEyMDI5NiwgMTIwMzAwLCAxMjAzMDQsIDEyMDMwOCwgMTIwMzEyLCAxMjAzMTYsIDEyMDMyMCwgMTIwMzI0LCAxMjAzMjgsIAorICAgIDEyMDMzMiwgMTIwMzM2LCAxMjAzNDAsIDEyMDM0NCwgMTIwMzQ4LCAxMjAzNTIsIDEyMDM1NiwgMTIwMzYwLCAxMjAzNjQsIAorICAgIDEyMDM2OCwgMTIwMzcyLCAxMjAzNzYsIDEyMDM4MCwgMTIwMzg0LCAxMjAzODgsIDEyMDM5MiwgMTIwMzk2LCAxMjA0MDAsIAorICAgIDEyMDQwNCwgMTIwNDA4LCAxMjA0MTIsIDEyMDQxNiwgMTIwNDIwLCAxMjA0MjQsIDEyMDQyOCwgMTIwNDMyLCAxMjA0MzYsIAorICAgIDEyMDQ0MCwgMTIwNDQ0LCAxMjA0NDgsIDEyMDQ1MiwgMTIwNDU2LCAxMjA0NjAsIDEyMDQ2NCwgMTIwNDY4LCAxMjA0NzIsIAorICAgIDEyMDQ3NiwgMTIwNDgwLCAxMjA0ODQsIDEyMDQ4OCwgMTIwNDkyLCAxMjA0OTYsIDEyMDUwMCwgMTIwNTA0LCAxMjA1MDgsIAorICAgIDEyMDUxMiwgMTIwNTE2LCAxMjA1MjAsIDEyMDUyNCwgMTIwNTI4LCAxMjA1MzIsIDEyMDUzNiwgMTIwNTQwLCAxMjA1NDQsIAorICAgIDEyMDU0OCwgMTIwNTUyLCAxMjA1NTYsIDEyMDU2MCwgMTIwNTY0LCAxMjA1NjgsIDEyMDU3MiwgMTIwNTc2LCAxMjA1ODAsIAorICAgIDEyMDU4NCwgMTIwNTg4LCAxMjA1OTIsIDEyMDU5NiwgMTIwNjAwLCAxMjA2MDQsIDEyMDYwOCwgMTIwNjEyLCAxMjA2MTYsIAorICAgIDEyMDYyMCwgMTIwNjI0LCAxMjA2MjgsIDEyMDYzMiwgMTIwNjM2LCAxMjA2NDAsIDEyMDY0NCwgMTIwNjQ4LCAxMjA2NTIsIAorICAgIDEyMDY1NiwgMTIwNjYwLCAxMjA2NjQsIDEyMDY2OCwgMTIwNjcyLCAxMjA2NzYsIDEyMDY4MCwgMTIwNjg0LCAxMjA2ODgsIAorICAgIDEyMDY5MiwgMTIwNjk2LCAxMjA3MDAsIDEyMDcwNCwgMTIwNzA4LCAxMjA3MTIsIDEyMDcxNiwgMTIwNzIwLCAxMjA3MjQsIAorICAgIDEyMDcyOCwgMTIwNzMyLCAxMjA3MzYsIDEyMDc0MCwgMTIwNzQ0LCAxMjA3NDgsIDEyMDc1MiwgMTIwNzU2LCAxMjA3NjAsIAorICAgIDEyMDc2NCwgMTIwNzY4LCAxMjA3NzIsIDEyMDc3NiwgMTIwNzgwLCAxMjA3ODQsIDEyMDc4OCwgMTIwNzkyLCAxMjA3OTYsIAorICAgIDEyMDgwMCwgMTIwODA0LCAxMjA4MDgsIDEyMDgxMiwgMTIwODE2LCAxMjA4MjAsIDEyMDgyNCwgMTIwODI4LCAxMjA4MzIsIAorICAgIDEyMDgzNiwgMTIwODQwLCAxMjA4NDQsIDEyMDg0OCwgMTIwODUyLCAxMjA4NTYsIDEyMDg2MCwgMTIwODY0LCAxMjA4NjgsIAorICAgIDEyMDg3MiwgMTIwODc2LCAxMjA4ODAsIDEyMDg4NCwgMTIwODg4LCAxMjA4OTIsIDEyMDg5NiwgMTIwOTAwLCAxMjA5MDQsIAorICAgIDEyMDkwOCwgMTIwOTEyLCAxMjA5MTYsIDEyMDkyMCwgMTIwOTI0LCAxMjA5MjgsIDEyMDkzMiwgMTIwOTM2LCAxMjA5NDAsIAorICAgIDEyMDk0NCwgMTIwOTQ4LCAxMjA5NTIsIDEyMDk1NiwgMTIwOTYwLCAxMjA5NjQsIDEyMDk2OCwgMTIwOTcyLCAxMjA5NzYsIAorICAgIDEyMDk4MCwgMTIwOTg0LCAxMjA5ODgsIDEyMDk5MiwgMTIwOTk2LCAxMjEwMDAsIDEyMTAwNCwgMTIxMDA4LCAxMjEwMTIsIAorICAgIDEyMTAxNiwgMTIxMDIwLCAxMjEwMjQsIDEyMTAyOCwgMTIxMDMyLCAxMjEwMzYsIDEyMTA0MCwgMTIxMDQ0LCAxMjEwNDgsIAorICAgIDEyMTA1MiwgMTIxMDU2LCAxMjEwNjAsIDEyMTA2NCwgMTIxMDY4LCAxMjEwNzIsIDEyMTA3NiwgMTIxMDgwLCAxMjEwODQsIAorICAgIDEyMTA4OCwgMTIxMDkyLCAxMjEwOTYsIDEyMTEwMCwgMTIxMTA0LCAxMjExMDgsIDEyMTExMiwgMTIxMTE2LCAxMjExMjAsIAorICAgIDEyMTEyNCwgMTIxMTI4LCAxMjExMzIsIDEyMTEzNiwgMTIxMTQwLCAxMjExNDQsIDEyMTE0OCwgMTIxMTUyLCAxMjExNTYsIAorICAgIDEyMTE2MCwgMTIxMTY0LCAxMjExNjgsIDEyMTE3MiwgMTIxMTc2LCAxMjExODAsIDEyMTE4NCwgMTIxMTg4LCAxMjExOTIsIAorICAgIDEyMTE5NiwgMTIxMjAwLCAxMjEyMDQsIDEyMTIwOCwgMTIxMjEyLCAxMjEyMTYsIDEyMTIyMCwgMTIxMjI0LCAxMjEyMjgsIAorICAgIDEyMTIzMiwgMTIxMjM2LCAxMjEyNDAsIDEyMTI0NCwgMTIxMjQ4LCAxMjEyNTIsIDEyMTI1NiwgMTIxMjYwLCAxMjEyNjQsIAorICAgIDEyMTI2OCwgMTIxMjcyLCAxMjEyNzYsIDEyMTI4MCwgMTIxMjg0LCAxMjEyODgsIDEyMTI5MiwgMTIxMjk2LCAxMjEzMDAsIAorICAgIDEyMTMwNCwgMTIxMzA4LCAxMjEzMTIsIDEyMTMxNiwgMTIxMzIwLCAxMjEzMjQsIDEyMTMyOCwgMTIxMzMyLCAxMjEzMzYsIAorICAgIDEyMTM0MCwgMTIxMzQ0LCAxMjEzNDgsIDEyMTM1MiwgMTIxMzU2LCAxMjEzNjAsIDEyMTM2NCwgMTIxMzY4LCAxMjEzNzIsIAorICAgIDEyMTM3NiwgMTIxMzgwLCAxMjEzODQsIDEyMTM4OCwgMTIxMzkyLCAxMjEzOTYsIDEyMTQwMCwgMTIxNDA0LCAxMjE0MDgsIAorICAgIDEyMTQxMiwgMTIxNDE2LCAxMjE0MjAsIDEyMTQyNCwgMTIxNDI4LCAxMjE0MzIsIDEyMTQzNiwgMTIxNDQwLCAxMjE0NDQsIAorICAgIDEyMTQ0OCwgMTIxNDUyLCAxMjE0NTYsIDEyMTQ2MCwgMTIxNDY0LCAxMjE0NjgsIDEyMTQ3MiwgMTIxNDc2LCAxMjE0ODAsIAorICAgIDEyMTQ4NCwgMTIxNDg4LCAxMjE0OTIsIDEyMTQ5NiwgMTIxNTAwLCAxMjE1MDQsIDEyMTUwOCwgMTIxNTEyLCAxMjE1MTYsIAorICAgIDEyMTUyMCwgMTIxNTI0LCAxMjE1MjgsIDEyMTUzMiwgMTIxNTM2LCAxMjE1NDAsIDEyMTU0NCwgMTIxNTQ4LCAxMjE1NTIsIAorICAgIDEyMTU1NiwgMTIxNTYwLCAxMjE1NjQsIDEyMTU2OCwgMTIxNTcyLCAxMjE1NzYsIDEyMTU4MCwgMTIxNTg0LCAxMjE1ODgsIAorICAgIDEyMTU5MiwgMTIxNTk2LCAxMjE2MDAsIDEyMTYwNCwgMTIxNjA4LCAxMjE2MTIsIDEyMTYxNiwgMTIxNjIwLCAxMjE2MjQsIAorICAgIDEyMTYyOCwgMTIxNjMyLCAxMjE2MzYsIDEyMTY0MCwgMTIxNjQ0LCAxMjE2NDgsIDEyMTY1MiwgMTIxNjU2LCAxMjE2NjAsIAorICAgIDEyMTY2NCwgMTIxNjY4LCAxMjE2NzIsIDEyMTY3NiwgMTIxNjgwLCAxMjE2ODQsIDEyMTY4OCwgMTIxNjkyLCAxMjE2OTYsIAorICAgIDEyMTcwMCwgMTIxNzA0LCAxMjE3MDgsIDEyMTcxMiwgMTIxNzE2LCAxMjE3MjAsIDEyMTcyNCwgMTIxNzI4LCAxMjE3MzIsIAorICAgIDEyMTczNiwgMTIxNzQwLCAxMjE3NDQsIDEyMTc0OCwgMTIxNzUyLCAxMjE3NTYsIDEyMTc2MCwgMTIxNzY0LCAxMjE3NjgsIAorICAgIDEyMTc3MiwgMTIxNzc2LCAxMjE3ODAsIDEyMTc4NCwgMTIxNzg4LCAxMjE3OTIsIDEyMTc5NiwgMTIxODAwLCAxMjE4MDQsIAorICAgIDEyMTgwOCwgMTIxODEyLCAxMjE4MTYsIDEyMTgyMCwgMTIxODI0LCAxMjE4MjgsIDEyMTgzMiwgMTIxODM2LCAxMjE4NDAsIAorICAgIDEyMTg0NCwgMTIxODQ4LCAxMjE4NTIsIDEyMTg1NiwgMTIxODYwLCAxMjE4NjQsIDEyMTg2OCwgMTIxODcyLCAxMjE4NzYsIAorICAgIDEyMTg4MCwgMTIxODg0LCAxMjE4ODgsIDEyMTg5MiwgMTIxODk2LCAxMjE5MDAsIDEyMTkwNCwgMTIxOTA4LCAxMjE5MTIsIAorICAgIDEyMTkxNiwgMTIxOTIwLCAxMjE5MjQsIDEyMTkyOCwgMTIxOTMyLCAxMjE5MzYsIDEyMTk0MCwgMTIxOTQ0LCAxMjE5NDgsIAorICAgIDEyMTk1MiwgMTIxOTU2LCAxMjE5NjAsIDEyMTk2NCwgMTIxOTY4LCAxMjE5NzIsIDEyMTk3NiwgMTIxOTgwLCAxMjE5ODQsIAorICAgIDEyMTk4OCwgMTIxOTkyLCAxMjE5OTYsIDEyMjAwMCwgMTIyMDA0LCAxMjIwMDgsIDEyMjAxMiwgMTIyMDE2LCAxMjIwMjAsIAorICAgIDEyMjAyNCwgMTIyMDI4LCAxMjIwMzIsIDEyMjAzNiwgMTIyMDQwLCAxMjIwNDQsIDEyMjA0OCwgMTIyMDUyLCAxMjIwNTYsIAorICAgIDEyMjA2MCwgMTIyMDY0LCAxMjIwNjgsIDEyMjA3MiwgMTIyMDc2LCAxMjIwODAsIDEyMjA4NCwgMTIyMDg4LCAxMjIwOTIsIAorICAgIDEyMjA5NiwgMTIyMTAwLCAxMjIxMDQsIDEyMjEwOCwgMTIyMTEyLCAxMjIxMTYsIDEyMjEyMCwgMTIyMTI0LCAxMjIxMjgsIAorICAgIDEyMjEzMiwgMTIyMTM2LCAxMjIxNDAsIDEyMjE0NCwgMTIyMTQ4LCAxMjIxNTIsIDEyMjE1NiwgMTIyMTYwLCAxMjIxNjQsIAorICAgIDEyMjE2OCwgMTIyMTcyLCAxMjIxNzYsIDEyMjE4MCwgMTIyMTg0LCAxMjIxODgsIDEyMjE5MiwgMTIyMTk2LCAxMjIyMDAsIAorICAgIDEyMjIwNCwgMTIyMjA4LCAxMjIyMTIsIDEyMjIxNiwgMTIyMjIwLCAxMjIyMjQsIDEyMjIyOCwgMTIyMjMyLCAxMjIyMzYsIAorICAgIDEyMjI0MCwgMTIyMjQ0LCAxMjIyNDgsIDEyMjI1MiwgMTIyMjU2LCAxMjIyNjAsIDEyMjI2NCwgMTIyMjY4LCAxMjIyNzIsIAorICAgIDEyMjI3NiwgMTIyMjgwLCAxMjIyODQsIDEyMjI4OCwgMTIyMjkyLCAxMjIyOTYsIDEyMjMwMCwgMTIyMzA0LCAxMjIzMDgsIAorICAgIDEyMjMxMiwgMTIyMzE2LCAxMjIzMjAsIDEyMjMyNCwgMTIyMzI4LCAxMjIzMzIsIDEyMjMzNiwgMTIyMzQwLCAxMjIzNDQsIAorICAgIDEyMjM0OCwgMTIyMzUyLCAxMjIzNTYsIDEyMjM2MCwgMTIyMzY0LCAxMjIzNjgsIDEyMjM3MiwgMTIyMzc2LCAxMjIzODAsIAorICAgIDEyMjM4NCwgMTIyMzg4LCAxMjIzOTIsIDEyMjM5NiwgMTIyNDAwLCAxMjI0MDQsIDEyMjQwOCwgMTIyNDEyLCAxMjI0MTYsIAorICAgIDEyMjQyMCwgMTIyNDI0LCAxMjI0MjgsIDEyMjQzMiwgMTIyNDM2LCAxMjI0NDAsIDEyMjQ0NCwgMTIyNDQ4LCAxMjI0NTIsIAorICAgIDEyMjQ1NiwgMTIyNDYwLCAxMjI0NjQsIDEyMjQ2OCwgMTIyNDcyLCAxMjI0NzYsIDEyMjQ4MCwgMTIyNDg0LCAxMjI0ODgsIAorICAgIDEyMjQ5MiwgMTIyNDk2LCAxMjI1MDAsIDEyMjUwNCwgMTIyNTA4LCAxMjI1MTIsIDEyMjUxNiwgMTIyNTIwLCAxMjI1MjQsIAorICAgIDEyMjUyOCwgMTIyNTMyLCAxMjI1MzYsIDEyMjU0MCwgMTIyNTQ0LCAxMjI1NDgsIDEyMjU1MiwgMTIyNTU2LCAxMjI1NjAsIAorICAgIDEyMjU2NCwgMTIyNTY4LCAxMjI1NzIsIDEyMjU3NiwgMTIyNTgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMjI1ODQsIDEyMjU4OCwgMTIyNTkyLCAxMjI1OTYsIDEyMjYwMCwgMTIyNjA0LCAxMjI2MDgsIAorICAgIDEyMjYxMiwgMTIyNjE2LCAxMjI2MjAsIDEyMjYyNCwgMTIyNjI4LCAxMjI2MzIsIDEyMjYzNiwgMTIyNjQwLCAxMjI2NDQsIAorICAgIDEyMjY0OCwgMTIyNjUyLCAxMjI2NTYsIDEyMjY2MCwgMTIyNjY0LCAxMjI2NjgsIDEyMjY3MiwgMTIyNjc2LCAxMjI2ODAsIAorICAgIDEyMjY4NCwgMTIyNjg4LCAxMjI2OTIsIDEyMjY5NiwgMTIyNzAwLCAxMjI3MDQsIDEyMjcwOCwgMTIyNzEyLCAxMjI3MTYsIAorICAgIDEyMjcyMCwgMTIyNzI0LCAxMjI3MjgsIDEyMjczMiwgMTIyNzM2LCAxMjI3NDAsIDEyMjc0NCwgMTIyNzQ4LCAxMjI3NTIsIAorICAgIDEyMjc1NiwgMTIyNzYwLCAxMjI3NjQsIDEyMjc2OCwgMTIyNzcyLCAxMjI3NzYsIDEyMjc4MCwgMTIyNzg0LCAxMjI3ODgsIAorICAgIDEyMjc5MiwgMTIyNzk2LCAxMjI4MDAsIDEyMjgwNCwgMTIyODA4LCAxMjI4MTIsIDEyMjgxNiwgMTIyODIwLCAxMjI4MjQsIAorICAgIDEyMjgyOCwgMTIyODMyLCAxMjI4MzYsIDEyMjg0MCwgMTIyODQ0LCAxMjI4NDgsIDEyMjg1MiwgMTIyODU2LCAxMjI4NjAsIAorICAgIDEyMjg2NCwgMTIyODY4LCAxMjI4NzIsIDEyMjg3NiwgMTIyODgwLCAxMjI4ODQsIDEyMjg4OCwgMTIyODkyLCAxMjI4OTYsIAorICAgIDEyMjkwMCwgMTIyOTA0LCAxMjI5MDgsIDEyMjkxMiwgMTIyOTE2LCAxMjI5MjAsIDEyMjkyNCwgMTIyOTI4LCAxMjI5MzIsIAorICAgIDEyMjkzNiwgMTIyOTQwLCAxMjI5NDQsIDEyMjk0OCwgMTIyOTUyLCAxMjI5NTYsIDEyMjk2MCwgMTIyOTY0LCAxMjI5NjgsIAorICAgIDEyMjk3MiwgMTIyOTc2LCAxMjI5ODAsIDEyMjk4NCwgMTIyOTg4LCAxMjI5OTIsIDEyMjk5NiwgMTIzMDAwLCAxMjMwMDQsIAorICAgIDEyMzAwOCwgMTIzMDEyLCAxMjMwMTYsIDEyMzAyMCwgMTIzMDI0LCAxMjMwMjgsIDEyMzAzMiwgMTIzMDM2LCAxMjMwNDAsIAorICAgIDEyMzA0NCwgMTIzMDQ4LCAxMjMwNTIsIDEyMzA1NiwgMTIzMDYwLCAxMjMwNjQsIDEyMzA2OCwgMTIzMDcyLCAxMjMwNzYsIAorICAgIDEyMzA4MCwgMTIzMDg0LCAxMjMwODgsIDEyMzA5MiwgMTIzMDk2LCAxMjMxMDAsIDEyMzEwNCwgMTIzMTA4LCAxMjMxMTIsIAorICAgIDEyMzExNiwgMTIzMTIwLCAxMjMxMjQsIDEyMzEyOCwgMTIzMTMyLCAxMjMxMzYsIDEyMzE0MCwgMTIzMTQ0LCAxMjMxNDgsIAorICAgIDEyMzE1MiwgMTIzMTU2LCAxMjMxNjAsIDEyMzE2NCwgMTIzMTY4LCAxMjMxNzIsIDEyMzE3NiwgMTIzMTgwLCAxMjMxODQsIAorICAgIDEyMzE4OCwgMTIzMTkyLCAxMjMxOTYsIDEyMzIwMCwgMTIzMjA0LCAxMjMyMDgsIDEyMzIxMiwgMTIzMjE2LCAxMjMyMjAsIAorICAgIDEyMzIyNCwgMTIzMjI4LCAxMjMyMzIsIDEyMzIzNiwgMTIzMjQwLCAxMjMyNDQsIDEyMzI0OCwgMTIzMjUyLCAxMjMyNTYsIAorICAgIDEyMzI2MCwgMTIzMjY0LCAxMjMyNjgsIDEyMzI3MiwgMTIzMjc2LCAxMjMyODAsIDEyMzI4NCwgMTIzMjg4LCAxMjMyOTIsIAorICAgIDEyMzI5NiwgMTIzMzAwLCAxMjMzMDQsIDEyMzMwOCwgMTIzMzEyLCAxMjMzMTYsIDEyMzMyMCwgMTIzMzI0LCAxMjMzMjgsIAorICAgIDEyMzMzMiwgMTIzMzM2LCAxMjMzNDAsIDEyMzM0NCwgMTIzMzQ4LCAxMjMzNTIsIDEyMzM1NiwgMTIzMzYwLCAxMjMzNjQsIAorICAgIDEyMzM2OCwgMTIzMzcyLCAxMjMzNzYsIDEyMzM4MCwgMTIzMzg0LCAxMjMzODgsIDEyMzM5MiwgMTIzMzk2LCAxMjM0MDAsIAorICAgIDEyMzQwNCwgMTIzNDA4LCAxMjM0MTIsIDEyMzQxNiwgMTIzNDIwLCAxMjM0MjQsIDEyMzQyOCwgMTIzNDMyLCAxMjM0MzYsIAorICAgIDEyMzQ0MCwgMTIzNDQ0LCAxMjM0NDgsIDEyMzQ1MiwgMTIzNDU2LCAxMjM0NjAsIDEyMzQ2NCwgMTIzNDY4LCAxMjM0NzIsIAorICAgIDEyMzQ3NiwgMTIzNDgwLCAxMjM0ODQsIDEyMzQ4OCwgMTIzNDkyLCAxMjM0OTYsIDEyMzUwMCwgMTIzNTA0LCAxMjM1MDgsIAorICAgIDEyMzUxMiwgMTIzNTE2LCAxMjM1MjAsIDEyMzUyNCwgMTIzNTI4LCAxMjM1MzIsIDEyMzUzNiwgMTIzNTQwLCAxMjM1NDQsIAorICAgIDEyMzU0OCwgMTIzNTUyLCAxMjM1NTYsIDEyMzU2MCwgMTIzNTY0LCAxMjM1NjgsIDEyMzU3MiwgMTIzNTc2LCAxMjM1ODAsIAorICAgIDEyMzU4NCwgMTIzNTg4LCAxMjM1OTIsIDEyMzU5NiwgMTIzNjAwLCAxMjM2MDQsIDEyMzYwOCwgMTIzNjEyLCAxMjM2MTYsIAorICAgIDEyMzYyMCwgMTIzNjI0LCAxMjM2MjgsIDEyMzYzMiwgMTIzNjM2LCAxMjM2NDAsIDEyMzY0NCwgMTIzNjQ4LCAxMjM2NTIsIAorICAgIDEyMzY1NiwgMTIzNjYwLCAxMjM2NjQsIDEyMzY2OCwgMTIzNjcyLCAxMjM2NzYsIDEyMzY4MCwgMTIzNjg0LCAxMjM2ODgsIAorICAgIDEyMzY5MiwgMTIzNjk2LCAxMjM3MDAsIDEyMzcwNCwgMTIzNzA4LCAxMjM3MTIsIDEyMzcxNiwgMTIzNzIwLCAxMjM3MjQsIAorICAgIDEyMzcyOCwgMTIzNzMyLCAxMjM3MzYsIDEyMzc0MCwgMTIzNzQ0LCAxMjM3NDgsIDEyMzc1MiwgMTIzNzU2LCAxMjM3NjAsIAorICAgIDEyMzc2NCwgMTIzNzY4LCAxMjM3NzIsIDEyMzc3NiwgMTIzNzgwLCAxMjM3ODQsIDEyMzc4OCwgMTIzNzkyLCAxMjM3OTYsIAorICAgIDEyMzgwMCwgMTIzODA0LCAxMjM4MDgsIDEyMzgxMiwgMTIzODE2LCAxMjM4MjAsIDEyMzgyNCwgMTIzODI4LCAxMjM4MzIsIAorICAgIDEyMzgzNiwgMTIzODQwLCAxMjM4NDQsIDEyMzg0OCwgMTIzODUyLCAxMjM4NTYsIDEyMzg2MCwgMTIzODY0LCAxMjM4NjgsIAorICAgIDEyMzg3MiwgMTIzODc2LCAxMjM4ODAsIDEyMzg4NCwgMTIzODg4LCAxMjM4OTIsIDEyMzg5NiwgMTIzOTAwLCAxMjM5MDQsIAorICAgIDEyMzkwOCwgMTIzOTEyLCAxMjM5MTYsIDEyMzkyMCwgMTIzOTI0LCAxMjM5MjgsIDEyMzkzMiwgMTIzOTM2LCAxMjM5NDAsIAorICAgIDEyMzk0NCwgMTIzOTQ4LCAxMjM5NTIsIDEyMzk1NiwgMTIzOTYwLCAxMjM5NjQsIDEyMzk2OCwgMTIzOTcyLCAxMjM5NzYsIAorICAgIDEyMzk4MCwgMTIzOTg0LCAxMjM5ODgsIDEyMzk5MiwgMTIzOTk2LCAxMjQwMDAsIDEyNDAwNCwgMTI0MDA4LCAxMjQwMTIsIAorICAgIDEyNDAxNiwgMTI0MDIwLCAxMjQwMjQsIDEyNDAyOCwgMTI0MDMyLCAxMjQwMzYsIDEyNDA0MCwgMTI0MDQ0LCAxMjQwNDgsIAorICAgIDEyNDA1MiwgMTI0MDU2LCAxMjQwNjAsIDEyNDA2NCwgMTI0MDY4LCAxMjQwNzIsIDEyNDA3NiwgMTI0MDgwLCAxMjQwODQsIAorICAgIDEyNDA4OCwgMTI0MDkyLCAxMjQwOTYsIDEyNDEwMCwgMTI0MTA0LCAxMjQxMDgsIDEyNDExMiwgMTI0MTE2LCAxMjQxMjAsIAorICAgIDEyNDEyNCwgMTI0MTI4LCAxMjQxMzIsIDEyNDEzNiwgMTI0MTQwLCAxMjQxNDQsIDEyNDE0OCwgMTI0MTUyLCAxMjQxNTYsIAorICAgIDEyNDE2MCwgMTI0MTY0LCAxMjQxNjgsIDEyNDE3MiwgMTI0MTc2LCAxMjQxODAsIDEyNDE4NCwgMTI0MTg4LCAxMjQxOTIsIAorICAgIDEyNDE5NiwgMTI0MjAwLCAxMjQyMDQsIDEyNDIwOCwgMTI0MjEyLCAxMjQyMTYsIDEyNDIyMCwgMTI0MjI0LCAxMjQyMjgsIAorICAgIDEyNDIzMiwgMTI0MjM2LCAxMjQyNDAsIDEyNDI0NCwgMTI0MjQ4LCAxMjQyNTIsIDEyNDI1NiwgMTI0MjYwLCAxMjQyNjQsIAorICAgIDEyNDI2OCwgMTI0MjcyLCAxMjQyNzYsIDEyNDI4MCwgMTI0Mjg0LCAxMjQyODgsIDEyNDI5MiwgMTI0Mjk2LCAxMjQzMDAsIAorICAgIDEyNDMwNCwgMTI0MzA4LCAxMjQzMTIsIDEyNDMxNiwgMTI0MzI2LCAxMjQzMzAsIDEyNDMzNCwgMTI0MzM4LCAxMjQzNDIsIAorICAgIDEyNDM0NiwgMTI0MzUwLCAxMjQzNTQsIDEyNDM1OCwgMTI0MzYyLCAxMjQzNjYsIDEyNDM3MCwgMTI0Mzc1LCAxMjQzNzksIAorICAgIDEyNDM4MywgMTI0Mzg3LCAxMjQzOTEsIDEyNDM5NSwgMTI0Mzk5LCAxMjQ0MDMsIDEyNDQwNywgMTI0NDExLCAxMjQ0MTUsIAorICAgIDEyNDQxOSwgMTI0NDIzLCAxMjQ0MjcsIDEyNDQzMSwgMTI0NDM1LCAxMjQ0MzksIDEyNDQ0OCwgMTI0NDU3LCAxMjQ0NjEsIAorICAgIDEyNDQ2NSwgMTI0NDY5LCAxMjQ0NzMsIDEyNDQ3NywgMTI0NDgxLCAxMjQ0ODUsIDEyNDQ4OSwgMTI0NDkzLCAxMjQ0OTcsIAorICAgIDEyNDUwMSwgMTI0NTA1LCAxMjQ1MDksIDEyNDUxMywgMTI0NTE3LCAxMjQ1MjEsIDEyNDUyNSwgMTI0NTI5LCAxMjQ1MzMsIAorICAgIDEyNDUzNywgMTI0NTQxLCAxMjQ1NDUsIDEyNDU0OSwgMTI0NTUzLCAxMjQ1NTcsIDEyNDU2MSwgMTI0NTY1LCAxMjQ1NjksIAorICAgIDEyNDU3MywgMTI0NTc3LCAxMjQ1ODEsIDEyNDU4NSwgMTI0NTg5LCAxMjQ1OTMsIDEyNDU5NywgMTI0NjAxLCAxMjQ2MDUsIAorICAgIDEyNDYwOSwgMTI0NjEzLCAxMjQ2MTcsIDEyNDYyMSwgMTI0NjI1LCAxMjQ2MjksIDEyNDYzMywgMTI0NjM3LCAxMjQ2NDEsIAorICAgIDEyNDY0NSwgMTI0NjQ5LCAxMjQ2NTMsIDEyNDY1NywgMTI0NjYxLCAxMjQ2NjUsIDEyNDY2OSwgMTI0NjczLCAxMjQ2NzcsIAorICAgIDEyNDY4MSwgMTI0Njg1LCAxMjQ2ODksIDEyNDY5MywgMTI0Njk3LCAxMjQ3MDEsIDEyNDcwNSwgMTI0NzA5LCAxMjQ3MTMsIAorICAgIDEyNDcxNywgMTI0NzIxLCAxMjQ3MjUsIDEyNDcyOSwgMTI0NzMzLCAxMjQ3MzcsIDEyNDc0MSwgMTI0NzQ1LCAxMjQ3NDksIAorICAgIDEyNDc1MywgMTI0NzU3LCAxMjQ3NjEsIDEyNDc2NSwgMTI0NzY5LCAxMjQ3NzMsIDEyNDc3NywgMTI0NzgxLCAxMjQ3ODUsIAorICAgIDEyNDc4OSwgMTI0NzkzLCAxMjQ3OTcsIDEyNDgwMSwgMTI0ODA1LCAxMjQ4MDksIDEyNDgxMywgMTI0ODE3LCAxMjQ4MjEsIAorICAgIDEyNDgyNSwgMTI0ODI5LCAxMjQ4MzMsIDEyNDgzNywgMTI0ODQxLCAxMjQ4NDUsIDEyNDg0OSwgMTI0ODUzLCAxMjQ4NTcsIAorICAgIDEyNDg2MSwgMTI0ODY1LCAxMjQ4NjksIDEyNDg3MywgMTI0ODc3LCAxMjQ4ODEsIDEyNDg4NSwgMTI0ODg5LCAxMjQ4OTMsIAorICAgIDEyNDg5NywgMTI0OTAxLCAxMjQ5MDUsIDEyNDkwOSwgMTI0OTEzLCAxMjQ5MTcsIDEyNDkyMSwgMTI0OTI1LCAxMjQ5MjksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDkzMywgMTI0OTQxLCAKKyAgICAxMjQ5NDksIDEyNDk1OSwgMTI0OTY5LCAxMjQ5NzcsIDEyNDk4MywgMTI0OTkxLCAxMjQ5OTksIDEyNTAwOSwgMTI1MDIxLCAKKyAgICAxMjUwMzMsIDEyNTAzOSwgMTI1MDQ3LCAxMjUwNTMsIDEyNTA1OSwgMTI1MDY1LCAxMjUwNzEsIDEyNTA3NywgMTI1MDgzLCAKKyAgICAxMjUwODksIDEyNTA5NSwgMTI1MTAxLCAxMjUxMDcsIDEyNTExMywgMTI1MTIxLCAxMjUxMjksIDEyNTEzNSwgMTI1MTQxLCAKKyAgICAxMjUxNDcsIDEyNTE1MywgMTI1MTYxLCAxMjUxNjksIDEyNTE3OCwgMTI1MTg0LCAxMjUxOTIsIDEyNTE5OCwgMTI1MjA0LCAKKyAgICAxMjUyMTAsIDEyNTIxNiwgMTI1MjIyLCAxMjUyMzAsIDEyNTIzOCwgMTI1MjQ0LCAxMjUyNTAsIDEyNTI1NiwgMTI1MjYyLCAKKyAgICAxMjUyNjgsIDEyNTI3NCwgMTI1MjgwLCAxMjUyODYsIDEyNTI5MiwgMTI1Mjk4LCAxMjUzMDQsIDEyNTMxMCwgMTI1MzE2LCAKKyAgICAxMjUzMjIsIDEyNTMyOCwgMTI1MzM0LCAxMjUzNDAsIDEyNTM0NiwgMTI1MzUyLCAxMjUzNjAsIDEyNTM2NiwgMTI1MzcyLCAKKyAgICAxMjUzODIsIDEyNTM5MCwgMTI1Mzk2LCAxMjU0MDIsIDEyNTQwOCwgMTI1NDE0LCAxMjU0MjAsIDEyNTQyNiwgMTI1NDMyLCAKKyAgICAxMjU0MzgsIDEyNTQ0NCwgMTI1NDUwLCAxMjU0NTYsIDEyNTQ2MiwgMTI1NDY4LCAxMjU0NzQsIDEyNTQ4MCwgMTI1NDg2LCAKKyAgICAxMjU0OTIsIDEyNTQ5OCwgMTI1NTA0LCAxMjU1MTAsIDEyNTUxNiwgMTI1NTIyLCAxMjU1MzAsIDEyNTUzNiwgMTI1NTQ0LCAKKyAgICAxMjU1NTIsIDEyNTU2MCwgMTI1NTY2LCAxMjU1NzIsIDEyNTU3OCwgMTI1NTg0LCAxMjU1OTAsIDEyNTU5OCwgMTI1NjA4LCAKKyAgICAxMjU2MTYsIDEyNTYyNCwgMTI1NjMwLCAxMjU2MzYsIDEyNTY0NCwgMTI1NjUyLCAxMjU2NTgsIDEyNTY2NiwgMTI1Njc0LCAKKyAgICAxMjU2ODIsIDEyNTY4OCwgMTI1Njk0LCAxMjU3MDAsIDEyNTcwNiwgMTI1NzEyLCAxMjU3MTgsIDEyNTcyNiwgMTI1NzM0LCAKKyAgICAxMjU3NDAsIDEyNTc0NiwgMTI1NzUyLCAxMjU3NTgsIDEyNTc2NCwgMTI1NzcyLCAxMjU3NzgsIDEyNTc4NCwgMTI1NzkwLCAKKyAgICAxMjU3OTYsIDEyNTgwMiwgMTI1ODA4LCAxMjU4MTYsIDEyNTgyMiwgMTI1ODI4LCAxMjU4MzQsIDEyNTg0MCwgMTI1ODQ4LCAKKyAgICAxMjU4NTYsIDEyNTg2MiwgMTI1ODY4LCAxMjU4NzQsIDEyNTg3OSwgMTI1ODg1LCAxMjU4OTEsIDEyNTg5OCwgMTI1OTAzLCAKKyAgICAxMjU5MDgsIDEyNTkxMywgMTI1OTE4LCAxMjU5MjMsIDEyNTkyOCwgMTI1OTMzLCAxMjU5MzgsIDEyNTk0MywgMTI1OTUyLCAKKyAgICAxMjU5NTksIDEyNTk2NCwgMTI1OTY5LCAxMjU5NzQsIDEyNTk4MSwgMTI1OTg2LCAxMjU5OTEsIDEyNTk5NiwgMTI2MDAzLCAKKyAgICAxMjYwMDgsIDEyNjAxMywgMTI2MDE4LCAxMjYwMjMsIDEyNjAyOCwgMTI2MDMzLCAxMjYwMzgsIDEyNjA0MywgMTI2MDQ4LCAKKyAgICAxMjYwNTMsIDEyNjA1OCwgMTI2MDY1LCAxMjYwNzAsIDEyNjA3NywgMTI2MDgyLCAxMjYwODcsIDEyNjA5NCwgMTI2MDk5LCAKKyAgICAxMjYxMDQsIDEyNjEwOSwgMTI2MTE0LCAxMjYxMTksIDEyNjEyNCwgMTI2MTI5LCAxMjYxMzQsIDEyNjEzOSwgMTI2MTQ0LCAKKyAgICAxMjYxNDksIDEyNjE1NCwgMTI2MTU5LCAxMjYxNjQsIDEyNjE2OSwgMTI2MTc0LCAxMjYxNzksIDEyNjE4NCwgMTI2MTg5LCAKKyAgICAxMjYxOTYsIDEyNjIwMSwgMTI2MjA2LCAxMjYyMTEsIDEyNjIxNiwgMTI2MjIxLCAxMjYyMjYsIDEyNjIzMSwgMTI2MjM2LCAKKyAgICAxMjYyNDEsIDEyNjI0NiwgMTI2MjUxLCAxMjYyNTYsIDEyNjI2MSwgMTI2MjY4LCAxMjYyNzMsIDEyNjI3OCwgMTI2Mjg1LCAKKyAgICAxMjYyOTAsIDEyNjI5NSwgMTI2MzAwLCAxMjYzMDUsIDEyNjMxMCwgMTI2MzE1LCAxMjYzMjAsIDEyNjMyNSwgMTI2MzMwLCAKKyAgICAxMjYzMzUsIDEyNjM0MiwgMTI2MzQ3LCAxMjYzNTIsIDEyNjM1NywgMTI2MzYyLCAxMjYzNjcsIDEyNjM3NCwgMTI2MzgxLCAKKyAgICAxMjYzODYsIDEyNjM5MSwgMTI2Mzk2LCAxMjY0MDEsIDEyNjQwNiwgMTI2NDExLCAxMjY0MTYsIDEyNjQyMSwgMTI2NDI2LCAKKyAgICAxMjY0MzEsIDEyNjQzNiwgMTI2NDQxLCAxMjY0NDYsIDEyNjQ1MSwgMTI2NDU2LCAxMjY0NjEsIDEyNjQ2NiwgMTI2NDcxLCAKKyAgICAxMjY0NzYsIDEyNjQ4MSwgMTI2NDg2LCAxMjY0OTEsIDEyNjQ5NiwgMTI2NTAxLCAxMjY1MDYsIDEyNjUxMSwgMTI2NTE2LCAKKyAgICAxMjY1MjEsIDEyNjUyNiwgMTI2NTMxLCAxMjY1MzYsIDEyNjU0MSwgMTI2NTQ2LCAxMjY1NTEsIDEyNjU1NiwgMTI2NTYxLCAKKyAgICAxMjY1NjgsIDEyNjU3MywgMTI2NTc4LCAxMjY1ODMsIDEyNjU4OCwgMTI2NTkzLCAxMjY1OTgsIDEyNjYwMywgMTI2NjA4LCAKKyAgICAxMjY2MTMsIDEyNjYxOCwgMTI2NjIzLCAxMjY2MjgsIDEyNjYzMywgMTI2NjM4LCAxMjY2NDMsIDEyNjY0OCwgMTI2NjUzLCAKKyAgICAxMjY2NTgsIDEyNjY2MywgMTI2NjY4LCAxMjY2NzMsIDEyNjY3OCwgMTI2NjgzLCAxMjY2ODgsIDEyNjY5MywgMTI2Njk4LCAKKyAgICAxMjY3MDMsIDEyNjcwOCwgMTI2NzEzLCAxMjY3MTgsIDEyNjcyMywgMTI2NzI4LCAxMjY3MzMsIDEyNjczOCwgMTI2NzQzLCAKKyAgICAxMjY3NDgsIDEyNjc1MywgMTI2NzU4LCAxMjY3NjMsIDEyNjc2OCwgMTI2NzczLCAxMjY3NzgsIDEyNjc4MywgMTI2Nzg4LCAKKyAgICAxMjY3OTMsIDEyNjc5OCwgMTI2ODAzLCAxMjY4MDgsIDEyNjgxMywgMTI2ODE4LCAxMjY4MjMsIDEyNjgyOCwgMTI2ODMzLCAKKyAgICAxMjY4MzgsIDEyNjg0MywgMTI2ODQ4LCAxMjY4NTMsIDEyNjg1OCwgMTI2ODY1LCAxMjY4NzAsIDEyNjg3NSwgMTI2ODgwLCAKKyAgICAxMjY4ODUsIDEyNjg5MCwgMTI2ODk1LCAxMjY5MDAsIDEyNjkwNSwgMTI2OTEwLCAxMjY5MTUsIDEyNjkyMCwgMTI2OTI1LCAKKyAgICAxMjY5MzAsIDEyNjkzNSwgMTI2OTQwLCAxMjY5NDUsIDEyNjk1MCwgMTI2OTU1LCAxMjY5NjAsIDEyNjk2NSwgMTI2OTcwLCAKKyAgICAxMjY5NzcsIDEyNjk4MiwgMTI2OTg3LCAxMjY5OTQsIDEyNjk5OSwgMTI3MDA0LCAxMjcwMDksIDEyNzAxNCwgMTI3MDE5LCAKKyAgICAxMjcwMjQsIDEyNzAyOSwgMTI3MDM0LCAxMjcwMzksIDEyNzA0NCwgMTI3MDQ5LCAxMjcwNTQsIDEyNzA1OSwgMTI3MDY0LCAKKyAgICAxMjcwNjksIDEyNzA3NCwgMTI3MDc5LCAxMjcwODQsIDEyNzA4OSwgMTI3MDk0LCAxMjcwOTksIDEyNzEwNCwgMTI3MTA5LCAKKyAgICAxMjcxMTQsIDEyNzExOSwgMTI3MTI0LCAxMjcxMjksIDEyNzEzNCwgMTI3MTM5LCAxMjcxNDQsIDEyNzE0OSwgMTI3MTU0LCAKKyAgICAxMjcxNTksIDEyNzE2NCwgMTI3MTY5LCAxMjcxNzQsIDEyNzE3OSwgMTI3MTg0LCAxMjcxODksIDEyNzE5NCwgMTI3MTk5LCAKKyAgICAxMjcyMDQsIDEyNzIwOSwgMTI3MjE2LCAxMjcyMjEsIDEyNzIyNiwgMTI3MjMzLCAxMjcyNDAsIDEyNzI0NSwgMTI3MjUwLCAKKyAgICAxMjcyNTUsIDEyNzI2MCwgMTI3MjY1LCAxMjcyNzAsIDEyNzI3NSwgMTI3MjgwLCAxMjcyODUsIDEyNzI5MCwgMTI3Mjk1LCAKKyAgICAxMjczMDAsIDEyNzMwNSwgMTI3MzEwLCAxMjczMTUsIDEyNzMyMCwgMTI3MzI1LCAxMjczMzAsIDEyNzMzNSwgMTI3MzQwLCAKKyAgICAxMjczNDUsIDEyNzM1MCwgMTI3MzU1LCAxMjczNjAsIDEyNzM2NSwgMTI3MzcyLCAxMjczNzcsIDEyNzM4MiwgMTI3Mzg3LCAKKyAgICAxMjczOTIsIDEyNzM5NywgMTI3NDAyLCAxMjc0MDcsIDEyNzQxMiwgMTI3NDE3LCAxMjc0MjIsIDEyNzQyNywgMTI3NDMyLCAKKyAgICAxMjc0MzcsIDEyNzQ0MiwgMTI3NDQ3LCAxMjc0NTIsIDEyNzQ1NywgMTI3NDYyLCAxMjc0NjksIDEyNzQ3NCwgMTI3NDc5LCAKKyAgICAxMjc0ODQsIDEyNzQ4OSwgMTI3NDk0LCAxMjc0OTksIDEyNzUwNCwgMTI3NTEwLCAxMjc1MTUsIDEyNzUyMCwgMTI3NTI1LCAKKyAgICAxMjc1MzAsIDEyNzUzNSwgMTI3NTQwLCAxMjc1NDUsIDEyNzU1MCwgMTI3NTU3LCAxMjc1NjQsIDEyNzU2OSwgMTI3NTc0LCAKKyAgICAxMjc1NzgsIDEyNzU4MywgMTI3NTg3LCAxMjc1OTEsIDEyNzU5NiwgMTI3NjAzLCAxMjc2MDgsIDEyNzYxMywgMTI3NjIyLCAKKyAgICAxMjc2MjcsIDEyNzYzMiwgMTI3NjM3LCAxMjc2NDIsIDEyNzY0OSwgMTI3NjU2LCAxMjc2NjEsIDEyNzY2NiwgMTI3NjcxLCAKKyAgICAxMjc2NzYsIDEyNzY4MywgMTI3Njg4LCAxMjc2OTMsIDEyNzY5OCwgMTI3NzAzLCAxMjc3MDgsIDEyNzcxMywgMTI3NzE4LCAKKyAgICAxMjc3MjMsIDEyNzcyOCwgMTI3NzMzLCAxMjc3MzgsIDEyNzc0MywgMTI3NzUwLCAxMjc3NTUsIDEyNzc2MCwgMTI3NzY1LCAKKyAgICAxMjc3NzAsIDEyNzc3NSwgMTI3Nzc5LCAxMjc3ODQsIDEyNzc4OSwgMTI3Nzk0LCAxMjc3OTksIDEyNzgwNCwgMTI3ODA5LCAKKyAgICAxMjc4MTQsIDEyNzgxOSwgMTI3ODI0LCAxMjc4MzAsIDEyNzgzNiwgMTI3ODQyLCAxMjc4NDgsIDEyNzg1NCwgMTI3ODYwLCAKKyAgICAxMjc4NjYsIDEyNzg3MiwgMTI3ODc4LCAxMjc4ODQsIDEyNzg5MCwgMTI3ODk2LCAxMjc5MDIsIDEyNzkwOCwgMTI3OTE0LCAKKyAgICAxMjc5MjAsIDEyNzkyNiwgMTI3OTMyLCAxMjc5MzgsIDEyNzk0NCwgMTI3OTUwLCAxMjc5NTYsIDEyNzk2MiwgMTI3OTY4LCAKKyAgICAxMjc5NzMsIDEyNzk3OSwgMTI3OTg1LCAxMjc5OTEsIDEyNzk5NywgMTI4MDAzLCAxMjgwMDksIDEyODAxNSwgMTI4MDIxLCAKKyAgICAxMjgwMjcsIDEyODAzMywgMTI4MDM5LCAxMjgwNDUsIDEyODA1MSwgMTI4MDU3LCAxMjgwNjMsIDEyODA2OSwgMTI4MDc1LCAKKyAgICAxMjgwODEsIDEyODA4NywgMTI4MDkzLCAxMjgwOTgsIDEyODEwNCwgMTI4MTEwLCAxMjgxMTYsIDEyODEyMiwgMTI4MTI4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgxMzQsIDEyODEzOSwgMTI4MTQ0LCAxMjgxNDksIDEyODE1NCwgMTI4MTU5LCAKKyAgICAxMjgxNjQsIDEyODE2OCwgMTI4MTczLCAxMjgxNzgsIDEyODE4MywgMTI4MTg4LCAxMjgxOTMsIDEyODE5OCwgMTI4MjAzLCAKKyAgICAxMjgyMDgsIDEyODIxMywgMTI4MjE3LCAxMjgyMjIsIDEyODIyNiwgMTI4MjMxLCAxMjgyMzYsIDEyODI0MSwgMTI4MjQ2LCAKKyAgICAxMjgyNTEsIDEyODI1NSwgMTI4MjYwLCAxMjgyNjUsIDEyODI3MCwgMTI4Mjc1LCAxMjgyODAsIDAsIDEyODI4NSwgCisgICAgMTI4MjkwLCAxMjgyOTQsIDEyODI5OCwgMTI4MzAyLCAxMjgzMDYsIDEyODMxMCwgMTI4MzE0LCAxMjgzMTksIDEyODMyMywgCisgICAgMCwgMCwgMCwgMCwgMTI4MzI4LCAxMjgzMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODMzNywgMTI4MzQ0LCAxMjgzNTAsIDEyODM1NywgMTI4MzY0LCAKKyAgICAxMjgzNzEsIDEyODM3OCwgMTI4Mzg1LCAxMjgzOTIsIDEyODM5OSwgMTI4NDA2LCAxMjg0MTMsIDEyODQyMCwgMTI4NDI3LCAKKyAgICAxMjg0MzQsIDEyODQ0MSwgMTI4NDQ4LCAxMjg0NTUsIDEyODQ2MSwgMTI4NDY4LCAxMjg0NzUsIDEyODQ4MiwgMTI4NDg4LCAKKyAgICAxMjg0OTUsIDEyODUwMSwgMTI4NTA3LCAxMjg1MTQsIDEyODUyMCwgMTI4NTI3LCAxMjg1MzMsIDAsIDAsIDEyODUzOSwgCisgICAgMTI4NTQ3LCAxMjg1NTUsIDEyODU2NCwgMTI4NTczLCAxMjg1ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyODU5MCwgMTI4NTk1LCAxMjg2MDAsIDEyODYwNSwgMTI4NjEwLCAxMjg2MTUsIDEyODYyMCwgMTI4NjI1LCAxMjg2MzAsIAorICAgIDEyODYzNSwgMTI4NjQwLCAxMjg2NDUsIDEyODY1MCwgMTI4NjU1LCAxMjg2NjAsIDEyODY2NSwgMTI4NjcwLCAxMjg2NzUsIAorICAgIDEyODY4MCwgMTI4Njg1LCAxMjg2OTAsIDEyODY5NSwgMTI4NzAwLCAxMjg3MDUsIDEyODcxMCwgMTI4NzE1LCAxMjg3MjAsIAorICAgIDEyODcyNSwgMTI4NzMwLCAxMjg3MzUsIDEyODc0MCwgMTI4NzQ1LCAxMjg3NTAsIDEyODc1NSwgMTI4NzYwLCAxMjg3NjUsIAorICAgIDEyODc3MCwgMTI4Nzc1LCAxMjg3ODAsIDEyODc4NSwgMTI4NzkwLCAxMjg3OTUsIDEyODgwMCwgMTI4ODA1LCAxMjg4MTAsIAorICAgIDEyODgxNSwgMTI4ODIwLCAxMjg4MjUsIDEyODgzMCwgMTI4ODM3LCAxMjg4NDQsIDEyODg1MSwgMTI4ODU4LCAxMjg4NjUsIAorICAgIDEyODg3MiwgMTI4ODc5LCAxMjg4ODYsIDEyODg5NSwgMTI4OTAyLCAxMjg5MDksIDEyODkxNiwgMTI4OTIzLCAxMjg5MzAsIAorICAgIDEyODkzNywgMTI4OTQ0LCAxMjg5NTEsIDEyODk1OCwgMTI4OTY1LCAxMjg5NzIsIDEyODk3NywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTI4OTg2LCAxMjg5OTEsIDEyODk5NSwgMTI4OTk5LCAxMjkwMDMsIDEyOTAwNywgMTI5MDExLCAKKyAgICAxMjkwMTUsIDEyOTAyMCwgMTI5MDI0LCAwLCAxMjkwMjksIDEyOTAzNCwgMTI5MDM5LCAxMjkwNDYsIDEyOTA1MSwgCisgICAgMTI5MDU4LCAxMjkwNjUsIDAsIDEyOTA3MCwgMTI5MDc3LCAxMjkwODIsIDEyOTA4NywgMTI5MDk0LCAxMjkxMDEsIAorICAgIDEyOTEwNiwgMTI5MTExLCAxMjkxMTYsIDEyOTEyMSwgMTI5MTI2LCAxMjkxMzMsIDEyOTE0MCwgMTI5MTQ1LCAxMjkxNTAsIAorICAgIDEyOTE1NSwgMTI5MTY4LCAxMjkxNzcsIDEyOTE4NCwgMTI5MTkzLCAxMjkyMDIsIDAsIDAsIDAsIDAsIDAsIDEyOTIxMSwgCisgICAgMTI5MjE4LCAxMjkyMjUsIDEyOTIzMiwgMTI5MjM5LCAxMjkyNDYsIDEyOTI1MywgMTI5MjYwLCAxMjkyNjcsIDEyOTI3NCwgCisgICAgMTI5MjgxLCAxMjkyODgsIDEyOTI5NSwgMTI5MzAyLCAxMjkzMDksIDEyOTMxNiwgMTI5MzIzLCAxMjkzMzAsIDEyOTMzNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5MzQ0LCAxMjkzNDcsIDEyOTM1MSwgCisgICAgMTI5MzU1LCAxMjkzNTksIDEyOTM2MiwgMTI5MzY2LCAxMjkzNzEsIDEyOTM3NSwgMTI5Mzc5LCAxMjkzODMsIDEyOTM4NywgCisgICAgMTI5MzkxLCAxMjkzOTYsIDEyOTQwMSwgMTI5NDA1LCAxMjk0MDksIDEyOTQxMywgMTI5NDE3LCAxMjk0MjIsIDEyOTQyOCwgCisgICAgMTI5NDMyLCAxMjk0MzYsIDEyOTQ0MCwgMTI5NDQ0LCAxMjk0NDgsIDEyOTQ1MiwgMTI5NDU2LCAxMjk0NjAsIDEyOTQ2NCwgCisgICAgMTI5NDY4LCAxMjk0NzEsIDEyOTQ3NSwgMTI5NDc5LCAxMjk0ODMsIDEyOTQ4NywgMTI5NDkxLCAxMjk0OTUsIDEyOTUwMSwgCisgICAgMTI5NTA0LCAxMjk1MDgsIDEyOTUxMiwgMTI5NTE2LCAxMjk1MjAsIDEyOTUyNCwgMTI5NTI4LCAxMjk1MzIsIDEyOTUzNiwgCisgICAgMTI5NTQwLCAxMjk1NDUsIDEyOTU1MCwgMTI5NTU2LCAxMjk1NjAsIDEyOTU2NCwgMTI5NTY4LCAxMjk1NzIsIDEyOTU3NiwgCisgICAgMTI5NTgwLCAxMjk1ODUsIDEyOTU4OSwgMTI5NTkzLCAxMjk1OTcsIDEyOTYwMSwgMTI5NjA1LCAxMjk2MTEsIDEyOTYxNSwgCisgICAgMTI5NjE5LCAxMjk2MjMsIDEyOTYyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5NjMxLCAxMjk2MzUsIAorICAgIDEyOTYzOSwgMTI5NjQ1LCAxMjk2NTEsIDEyOTY1NSwgMTI5NjYwLCAxMjk2NjUsIDEyOTY3MCwgMTI5Njc1LCAxMjk2NzksIAorICAgIDEyOTY4NCwgMTI5Njg5LCAxMjk2OTQsIDEyOTY5OCwgMTI5NzAzLCAxMjk3MDgsIDEyOTcxMywgMTI5NzE3LCAxMjk3MjIsIAorICAgIDEyOTcyNywgMTI5NzMyLCAxMjk3MzcsIDEyOTc0MiwgMTI5NzQ3LCAxMjk3NTIsIDEyOTc1NywgMTI5NzYxLCAxMjk3NjYsIAorICAgIDEyOTc3MSwgMTI5Nzc2LCAxMjk3ODEsIDEyOTc4NiwgMTI5NzkxLCAxMjk3OTYsIDEyOTgwMSwgMTI5ODA2LCAxMjk4MTEsIAorICAgIDEyOTgxNiwgMTI5ODIzLCAxMjk4MjgsIDEyOTgzNSwgMTI5ODQwLCAxMjk4NDUsIDEyOTg1MCwgMTI5ODU1LCAxMjk4NjAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTg2NSwgMTI5ODY5LCAxMjk4NzUsIAorICAgIDEyOTg3OCwgMTI5ODgxLCAxMjk4ODUsIDEyOTg4OSwgMTI5ODkzLCAxMjk4OTcsIDEyOTkwMSwgMTI5OTA1LCAxMjk5MDksIAorICAgIDEyOTkxNSwgMTI5OTIxLCAxMjk5MjcsIDEyOTkzMywgMTI5OTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk5NDUsIDEyOTk1MCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5OTU2LCAxMjk5NjAsIDEyOTk2NCwgMTI5OTY4LCAxMjk5NzIsIDEyOTk3NiwgCisgICAgMTI5OTgwLCAxMjk5ODMsIDEyOTk4NywgMTI5OTkxLCAxMjk5OTUsIDEyOTk5OSwgMTMwMDAyLCAxMzAwMDgsIDEzMDAxMywgCisgICAgMTMwMDE5LCAxMzAwMjUsIDEzMDAzMCwgMTMwMDM0LCAxMzAwNDAsIDEzMDA0NCwgMTMwMDQ4LCAxMzAwNTQsIDEzMDA1OCwgCisgICAgMTMwMDYyLCAxMzAwNjYsIDEzMDA3MCwgMTMwMDc0LCAxMzAwNzgsIDEzMDA4MSwgMTMwMDg3LCAxMzAwOTMsIDEzMDA5OSwgCisgICAgMTMwMTA1LCAxMzAxMTIsIDEzMDExOSwgMTMwMTI2LCAxMzAxMzYsIDEzMDE0MywgMTMwMTUwLCAxMzAxNTUsIDEzMDE2MCwgCisgICAgMTMwMTY1LCAxMzAxNzAsIDEzMDE3NywgMTMwMTg0LCAxMzAxOTEsIDEzMDE5OCwgMTMwMjA3LCAxMzAyMTMsIDEzMDIyMCwgCisgICAgMTMwMjI2LCAxMzAyMzMsIDEzMDIzOSwgMTMwMjQ2LCAxMzAyNTEsIDEzMDI1OCwgMTMwMjYyLCAxMzAyNjYsIDEzMDI3MSwgCisgICAgMTMwMjc3LCAxMzAyODMsIDEzMDI5MCwgMTMwMjk3LCAxMzAzMDMsIDEzMDMxMCwgMTMwMzEzLCAxMzAzMTksIDEzMDMyMywgCisgICAgMTMwMzI2LCAxMzAzMzAsIDEzMDMzMywgMTMwMzM2LCAxMzAzNDAsIDEzMDM0NSwgMTMwMzQ5LCAxMzAzNTMsIDEzMDM1OSwgCisgICAgMTMwMzY0LCAxMzAzNzAsIDEzMDM3NCwgMTMwMzc4LCAxMzAzODEsIDEzMDM4NSwgMTMwMzg5LCAxMzAzOTQsIDEzMDM5OCwgCisgICAgMTMwNDAzLCAxMzA0MDcsIDEzMDQxMiwgMTMwNDE2LCAxMzA0MjAsIDEzMDQyNCwgMTMwNDI4LCAxMzA0MzIsIDEzMDQzNiwgCisgICAgMTMwNDQwLCAxMzA0NDQsIDEzMDQ0OSwgMTMwNDU0LCAxMzA0NTksIDEzMDQ2NCwgMTMwNDcwLCAxMzA0NzYsIDEzMDQ4MiwgCisgICAgMTMwNDg4LCAxMzA0OTQsIDAsIDAsIDAsIDAsIDAsIDEzMDQ5OSwgMTMwNTA3LCAxMzA1MTYsIDEzMDUyNCwgMTMwNTMxLCAKKyAgICAxMzA1MzksIDEzMDU0NiwgMTMwNTUzLCAxMzA1NjIsIDEzMDU2OSwgMTMwNTc2LCAxMzA1ODMsIDEzMDU5MSwgMCwgMCwgMCwgCisgICAgMTMwNTk5LCAxMzA2MDQsIDEzMDYxMSwgMTMwNjE3LCAxMzA2MjQsIDEzMDYzMCwgMTMwNjM2LCAxMzA2NDIsIDEzMDY0OCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwNjU0LCAxMzA2NTksIDEzMDY2NiwgMTMwNjcyLCAxMzA2NzksIDEzMDY4NSwgCisgICAgMTMwNjkxLCAxMzA2OTcsIDEzMDcwMywgMTMwNzA5LCAwLCAwLCAxMzA3MTQsIDEzMDcyMCwgMTMwNzI2LCAxMzA3MjksIAorICAgIDEzMDczOCwgMTMwNzQ1LCAxMzA3NTMsIDEzMDc2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTMwNzY3LCAxMzA3NzIsIDEzMDc3NywgMTMwNzgyLCAxMzA3ODksIDEzMDc5NiwgMTMwODAzLCAKKyAgICAxMzA4MTAsIDEzMDgxNSwgMTMwODIwLCAxMzA4MjUsIDEzMDgzMCwgMTMwODM3LCAxMzA4NDIsIDEzMDg0OSwgMTMwODU2LCAKKyAgICAxMzA4NjEsIDEzMDg2NiwgMTMwODcxLCAxMzA4NzgsIDEzMDg4MywgMTMwODg4LCAxMzA4OTUsIDEzMDkwMiwgMTMwOTA3LCAKKyAgICAxMzA5MTIsIDEzMDkxNywgMTMwOTI0LCAxMzA5MzEsIDEzMDkzOCwgMTMwOTQzLCAxMzA5NDgsIDEzMDk1NSwgMTMwOTYyLCAKKyAgICAxMzA5NjksIDEzMDk3NiwgMTMwOTgxLCAxMzA5ODYsIDEzMDk5MSwgMTMwOTk4LCAxMzEwMDMsIDEzMTAwOCwgMTMxMDEzLCAKKyAgICAxMzEwMjAsIDEzMTAyOSwgMTMxMDM2LCAxMzEwNDEsIDEzMTA0NiwgMTMxMDUxLCAxMzEwNTYsIDEzMTA2MSwgMTMxMDY2LCAKKyAgICAxMzEwNzUsIDEzMTA4MiwgMTMxMDg3LCAxMzEwOTQsIDEzMTEwMSwgMTMxMTA2LCAxMzExMTEsIDEzMTExNiwgMTMxMTIzLCAKKyAgICAxMzExMjgsIDEzMTEzNSwgMTMxMTQyLCAxMzExNDcsIDEzMTE1MiwgMTMxMTU3LCAxMzExNjQsIDEzMTE3MSwgMTMxMTc2LCAKKyAgICAxMzExODEsIDEzMTE4OCwgMTMxMTk1LCAxMzEyMDIsIDEzMTIwNywgMTMxMjEyLCAxMzEyMTcsIDEzMTIyMiwgMTMxMjI5LCAKKyAgICAxMzEyMzgsIDEzMTI0NywgMTMxMjUyLCAxMzEyNTksIDEzMTI2OCwgMTMxMjczLCAxMzEyNzgsIDEzMTI4MywgMTMxMjg4LCAKKyAgICAxMzEyOTUsIDEzMTMwMiwgMTMxMzA5LCAxMzEzMTYsIDEzMTMyMSwgMTMxMzI2LCAxMzEzMzEsIDEzMTMzOCwgMTMxMzQ1LCAKKyAgICAxMzEzNTIsIDEzMTM1NywgMTMxMzYyLCAxMzEzNjksIDEzMTM3NCwgMTMxMzgxLCAxMzEzODYsIDEzMTM5MywgMTMxMzk4LCAKKyAgICAxMzE0MDUsIDEzMTQxMiwgMTMxNDE3LCAxMzE0MjIsIDEzMTQyNywgMTMxNDMyLCAxMzE0MzcsIDEzMTQ0MiwgMTMxNDQ3LCAKKyAgICAxMzE0NTIsIDEzMTQ1NywgMTMxNDY0LCAxMzE0NzEsIDEzMTQ3OCwgMTMxNDg1LCAxMzE0OTIsIDEzMTUwMSwgMTMxNTA2LCAKKyAgICAxMzE1MTEsIDEzMTUxOCwgMTMxNTI1LCAxMzE1MzAsIDEzMTUzNywgMTMxNTQ0LCAxMzE1NTEsIDEzMTU1OCwgMTMxNTY1LCAKKyAgICAxMzE1NzIsIDEzMTU3NywgMTMxNTgyLCAxMzE1ODcsIDEzMTU5MiwgMTMxNTk3LCAxMzE2MDYsIDEzMTYxNSwgMTMxNjI0LCAKKyAgICAxMzE2MzMsIDEzMTY0MiwgMTMxNjUxLCAxMzE2NjAsIDEzMTY2OSwgMTMxNjc0LCAxMzE2ODUsIDEzMTY5NiwgMTMxNzA1LCAKKyAgICAxMzE3MTAsIDEzMTcxNSwgMTMxNzIwLCAxMzE3MjUsIDEzMTczNCwgMTMxNzQxLCAxMzE3NDgsIDEzMTc1NSwgMTMxNzYyLCAKKyAgICAxMzE3NjksIDEzMTc3NiwgMTMxNzg1LCAxMzE3OTQsIDEzMTgwNSwgMTMxODE0LCAxMzE4MjUsIDEzMTgzNCwgMTMxODQxLCAKKyAgICAxMzE4NTAsIDEzMTg2MSwgMTMxODcwLCAxMzE4NzksIDEzMTg4OCwgMTMxODk3LCAxMzE5MDQsIDEzMTkxMSwgMTMxOTE4LCAKKyAgICAxMzE5MjcsIDEzMTkzNiwgMTMxOTQ3LCAxMzE5NTYsIDEzMTk2NSwgMTMxOTc2LCAxMzE5ODEsIDEzMTk4NiwgMTMxOTk3LCAKKyAgICAxMzIwMDUsIDEzMjAxNCwgMTMyMDIzLCAxMzIwMzIsIDEzMjA0MywgMTMyMDUyLCAxMzIwNjEsIDEzMjA3MiwgMTMyMDgzLCAKKyAgICAxMzIwOTQsIDEzMjEwNSwgMTMyMTE2LCAxMzIxMjcsIDEzMjEzNCwgMTMyMTQxLCAxMzIxNDgsIDEzMjE1NSwgMTMyMTY2LCAKKyAgICAxMzIxNzUsIDEzMjE4MiwgMTMyMTg5LCAxMzIxOTYsIDEzMjIwNywgMTMyMjE4LCAxMzIyMjksIDEzMjI0MCwgMTMyMjUxLCAKKyAgICAxMzIyNjIsIDEzMjI3MywgMTMyMjg0LCAxMzIyOTEsIDEzMjI5OCwgMTMyMzA3LCAxMzIzMTYsIDEzMjMyMywgMTMyMzMwLCAKKyAgICAxMzIzMzcsIDEzMjM0NiwgMTMyMzU1LCAxMzIzNjQsIDEzMjM3MSwgMTMyMzgwLCAxMzIzODksIDEzMjM5OCwgMTMyNDA1LCAKKyAgICAxMzI0MTIsIDEzMjQxNywgMTMyNDIzLCAxMzI0MzAsIDEzMjQzNywgMTMyNDQ0LCAxMzI0NTEsIDEzMjQ1OCwgMTMyNDY1LCAKKyAgICAxMzI0NzQsIDEzMjQ4MywgMTMyNDkyLCAxMzI1MDEsIDEzMjUwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTMyNTE3LCAxMzI1MjMsIDEzMjUyOCwgMTMyNTMzLCAxMzI1NDAsIDEzMjU0NiwgMTMyNTUyLCAxMzI1NTgsIDEzMjU2NCwgCisgICAgMTMyNTcwLCAxMzI1NzYsIDEzMjU4MiwgMTMyNTg2LCAxMzI1OTAsIDEzMjU5NiwgMTMyNjAyLCAxMzI2MDgsIDEzMjYxMiwgCisgICAgMTMyNjE3LCAxMzI2MjIsIDEzMjYyNiwgMTMyNjMwLCAxMzI2MzMsIDEzMjYzOSwgMTMyNjQ1LCAxMzI2NTEsIDEzMjY1NywgCisgICAgMTMyNjYzLCAxMzI2NjksIDEzMjY3NSwgMTMyNjgxLCAxMzI2ODcsIDEzMjY5NywgMTMyNzA3LCAxMzI3MTMsIDEzMjcxOSwgCisgICAgMTMyNzI5LCAxMzI3MzksIDEzMjc0NSwgMCwgMCwgMTMyNzUxLCAxMzI3NTksIDEzMjc2NCwgMTMyNzY5LCAxMzI3NzUsIAorICAgIDEzMjc4MSwgMTMyNzg3LCAxMzI3OTMsIDEzMjc5OSwgMTMyODA1LCAxMzI4MTIsIDEzMjgxOSwgMTMyODI1LCAxMzI4MzEsIAorICAgIDEzMjgzNywgMTMyODQzLCAxMzI4NDksIDEzMjg1NSwgMTMyODYxLCAxMzI4NjcsIDEzMjg3MiwgMTMyODc4LCAxMzI4ODQsIAorICAgIDEzMjg5MCwgMTMyODk2LCAxMzI5MDIsIDEzMjkxMSwgMTMyOTE3LCAxMzI5MjIsIDEzMjkzMCwgMTMyOTM3LCAxMzI5NDQsIAorICAgIDEzMjk1MywgMTMyOTYyLCAxMzI5NzEsIDEzMjk4MCwgMTMyOTg5LCAxMzI5OTgsIDEzMzAwNywgMTMzMDE2LCAxMzMwMjYsIAorICAgIDEzMzAzNiwgMTMzMDQ0LCAxMzMwNTIsIDEzMzA2MSwgMTMzMDcwLCAxMzMwNzYsIDEzMzA4MiwgMTMzMDg4LCAxMzMwOTQsIAorICAgIDEzMzEwMiwgMTMzMTEwLCAxMzMxMTQsIDEzMzEyMCwgMTMzMTI1LCAxMzMxMzEsIDEzMzEzNywgMTMzMTQzLCAxMzMxNDksIAorICAgIDEzMzE1NSwgMTMzMTY0LCAxMzMxNjksIDEzMzE3NiwgMTMzMTgxLCAxMzMxODYsIDEzMzE5MSwgMTMzMTk3LCAxMzMyMDMsIAorICAgIDEzMzIwOSwgMTMzMjE2LCAxMzMyMjEsIDEzMzIyNiwgMTMzMjMxLCAxMzMyMzYsIDEzMzI0MSwgMTMzMjQ3LCAxMzMyNTMsIAorICAgIDEzMzI1OSwgMTMzMjY1LCAxMzMyNzEsIDEzMzI3NywgMTMzMjgzLCAxMzMyODksIDEzMzI5NCwgMTMzMjk5LCAxMzMzMDQsIAorICAgIDEzMzMwOSwgMTMzMzE0LCAxMzMzMTksIDEzMzMyNCwgMTMzMzI5LCAxMzMzMzUsIDEzMzM0MSwgMTMzMzQ2LCAxMzMzNTEsIAorICAgIDEzMzM1NiwgMTMzMzYxLCAxMzMzNjYsIDEzMzM3MiwgMTMzMzc5LCAxMzMzODMsIDEzMzM4NywgMTMzMzkxLCAxMzMzOTUsIAorICAgIDEzMzM5OSwgMTMzNDAzLCAxMzM0MDcsIDEzMzQxMSwgMTMzNDE5LCAxMzM0MjksIDEzMzQzMywgMTMzNDM3LCAxMzM0NDMsIAorICAgIDEzMzQ0OSwgMTMzNDU1LCAxMzM0NjEsIDEzMzQ2NywgMTMzNDczLCAxMzM0NzksIDEzMzQ4NSwgMTMzNDkxLCAxMzM0OTcsIAorICAgIDEzMzUwMywgMTMzNTA5LCAxMzM1MTUsIDEzMzUyMSwgMTMzNTI1LCAxMzM1MjksIDEzMzUzNiwgMTMzNTQyLCAxMzM1NDgsIAorICAgIDEzMzU1NCwgMTMzNTU5LCAxMzM1NjYsIDEzMzU3MSwgMTMzNTc3LCAxMzM1ODMsIDEzMzU4OSwgMTMzNTk1LCAxMzM2MDAsIAorICAgIDEzMzYwNCwgMTMzNjEwLCAxMzM2MTQsIDEzMzYxOCwgMTMzNjIyLCAxMzM2MjgsIDEzMzYzNCwgMTMzNjM4LCAxMzM2NDQsIAorICAgIDEzMzY1MCwgMTMzNjU2LCAxMzM2NjIsIDEzMzY2OCwgMTMzNjc2LCAxMzM2ODQsIDEzMzY5MCwgMTMzNjk2LCAxMzM3MDIsIAorICAgIDEzMzcwOCwgMTMzNzIwLCAxMzM3MzIsIDEzMzc0NiwgMTMzNzU4LCAxMzM3NzAsIDEzMzc4NCwgMTMzNzk4LCAxMzM4MTIsIAorICAgIDEzMzgxNiwgMTMzODI0LCAxMzM4MzIsIDEzMzgzNywgMTMzODQxLCAxMzM4NDUsIDEzMzg0OSwgMTMzODUzLCAxMzM4NTcsIAorICAgIDEzMzg2MSwgMTMzODY1LCAxMzM4NzEsIDEzMzg3NywgMTMzODgzLCAxMzM4ODksIDEzMzg5NywgMTMzOTA2LCAxMzM5MTMsIAorICAgIDEzMzkyMCwgMTMzOTI4LCAxMzM5MzUsIDEzMzk0NywgMTMzOTU5LCAxMzM5NzEsIDEzMzk4MywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMzOTkwLCAxMzM5OTcsIAorICAgIDEzNDAwNCwgMTM0MDExLCAxMzQwMTgsIDEzNDAyNSwgMTM0MDMyLCAxMzQwMzksIDEzNDA0NiwgMTM0MDUzLCAxMzQwNjAsIAorICAgIDEzNDA2NywgMTM0MDc0LCAxMzQwODEsIDEzNDA4OCwgMTM0MDk1LCAxMzQxMDIsIDEzNDEwOSwgMTM0MTE2LCAxMzQxMjMsIAorICAgIDEzNDEzMCwgMTM0MTM3LCAxMzQxNDQsIDEzNDE1MSwgMTM0MTU4LCAxMzQxNjUsIDEzNDE3MiwgMTM0MTc5LCAxMzQxODYsIAorICAgIDEzNDE5MywgMTM0MjAwLCAxMzQyMDcsIDEzNDIxNCwgMTM0MjIxLCAxMzQyMjgsIDEzNDIzNSwgMTM0MjQyLCAxMzQyNDksIAorICAgIDEzNDI1NiwgMTM0MjYzLCAxMzQyNzAsIDEzNDI3NywgMTM0Mjg0LCAxMzQyOTEsIDEzNDI5OCwgMTM0MzA1LCAxMzQzMTIsIAorICAgIDEzNDMxOSwgMTM0MzI2LCAxMzQzMzMsIDEzNDM0MCwgMTM0MzQ3LCAxMzQzNTQsIDEzNDM2MSwgMTM0MzY4LCAxMzQzNzUsIAorICAgIDEzNDM4MiwgMTM0Mzg5LCAxMzQzOTYsIDEzNDQwMywgMTM0NDEwLCAxMzQ0MTcsIDEzNDQyNCwgMTM0NDMxLCAxMzQ0MzgsIAorICAgIDEzNDQ0NSwgMTM0NDUyLCAxMzQ0NTcsIDEzNDQ2MiwgMTM0NDY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ0NzEsIDEzNDQ3NiwgMTM0NDgzLCAxMzQ0OTAsIDEzNDQ5NywgMTM0NTA0LCAKKyAgICAxMzQ1MDksIDEzNDUxNCwgMTM0NTIxLCAxMzQ1MjYsIDEzNDUzMSwgMTM0NTM4LCAxMzQ1NDMsIDEzNDU0OCwgMTM0NTUzLCAKKyAgICAxMzQ1NjAsIDEzNDU2OSwgMTM0NTc0LCAxMzQ1NzksIDEzNDU4NCwgMTM0NTg5LCAxMzQ1OTQsIDEzNDU5OSwgMTM0NjA2LCAKKyAgICAxMzQ2MTEsIDEzNDYxNiwgMTM0NjIxLCAxMzQ2MjYsIDEzNDYzMSwgMTM0NjM2LCAxMzQ2NDEsIDEzNDY0NiwgMTM0NjUxLCAKKyAgICAxMzQ2NTYsIDEzNDY2MSwgMTM0NjY2LCAxMzQ2NzIsIDEzNDY3NywgMTM0NjgyLCAxMzQ2ODcsIDEzNDY5MiwgMTM0Njk3LCAKKyAgICAxMzQ3MDIsIDEzNDcwNywgMTM0NzEyLCAxMzQ3MTcsIDEzNDcyNiwgMTM0NzMxLCAxMzQ3NDAsIDEzNDc0NSwgMTM0NzUwLCAKKyAgICAxMzQ3NTUsIDEzNDc2MCwgMTM0NzY1LCAxMzQ3NzAsIDEzNDc3NSwgMTM0Nzg0LCAxMzQ3ODksIDEzNDc5NCwgMTM0Nzk5LCAKKyAgICAxMzQ4MDQsIDEzNDgwOSwgMTM0ODE2LCAxMzQ4MjEsIDEzNDgyOCwgMTM0ODMzLCAxMzQ4MzgsIDEzNDg0MywgMTM0ODQ4LCAKKyAgICAxMzQ4NTMsIDEzNDg1OCwgMTM0ODYzLCAxMzQ4NjgsIDEzNDg3MywgMTM0ODc4LCAxMzQ4ODMsIDEzNDg4OCwgMTM0ODkzLCAKKyAgICAxMzQ4OTgsIDEzNDkwMywgMTM0OTA4LCAxMzQ5MTMsIDEzNDkxOCwgMTM0OTIzLCAxMzQ5MzIsIDEzNDkzNywgMTM0OTQyLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ5NDcsIDEzNDk1NSwgMTM0OTYzLCAxMzQ5NzEsIDEzNDk3OSwgCisgICAgMTM0OTg3LCAxMzQ5OTUsIDEzNTAwNCwgMTM1MDEyLCAxMzUwMjEsIDEzNTAyOSwgMTM1MDM3LCAxMzUwNDUsIDEzNTA1MywgCisgICAgMTM1MDYxLCAxMzUwNjksIDEzNTA3OCwgMTM1MDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUwOTUsIDEzNTA5OSwgMTM1MTA0LCAxMzUxMDksIDEzNTExNCwgMTM1MTE4LCAKKyAgICAxMzUxMjMsIDEzNTEyOCwgMTM1MTMzLCAxMzUxMzcsIDEzNTE0MiwgMTM1MTQ3LCAxMzUxNTEsIDEzNTE1NiwgMTM1MTYxLCAKKyAgICAxMzUxNjUsIDEzNTE3MCwgMTM1MTc1LCAxMzUxNzksIDEzNTE4MywgMTM1MTg4LCAxMzUxOTIsIDEzNTE5NywgMTM1MjAyLCAKKyAgICAxMzUyMDcsIDEzNTIxMiwgMTM1MjE3LCAxMzUyMjEsIDEzNTIyNiwgMTM1MjMxLCAxMzUyMzYsIDEzNTI0MCwgMTM1MjQ1LCAKKyAgICAxMzUyNTAsIDEzNTI1NSwgMTM1MjU5LCAxMzUyNjQsIDEzNTI2OSwgMTM1MjczLCAxMzUyNzgsIDEzNTI4MywgMTM1Mjg3LCAKKyAgICAxMzUyOTIsIDEzNTI5NywgMTM1MzAxLCAxMzUzMDUsIDEzNTMxMCwgMTM1MzE0LCAxMzUzMTksIDEzNTMyNCwgMTM1MzI5LCAKKyAgICAxMzUzMzQsIDEzNTMzOSwgMTM1MzQzLCAxMzUzNDgsIDEzNTM1MywgMTM1MzU4LCAxMzUzNjIsIDEzNTM2NywgMTM1MzcyLCAKKyAgICAxMzUzNzcsIDEzNTM4MSwgMTM1Mzg2LCAxMzUzOTEsIDEzNTM5NSwgMTM1NDAwLCAxMzU0MDUsIDEzNTQwOSwgMTM1NDE0LCAKKyAgICAxMzU0MTksIDEzNTQyMywgMTM1NDI3LCAxMzU0MzIsIDEzNTQzNiwgMTM1NDQxLCAxMzU0NDYsIDEzNTQ1MSwgMTM1NDU2LCAKKyAgICAxMzU0NjEsIDEzNTQ2NSwgMTM1NDcwLCAxMzU0NzUsIDEzNTQ4MCwgMTM1NDg0LCAxMzU0ODksIDAsIDEzNTQ5NCwgCisgICAgMTM1NDk4LCAxMzU1MDMsIDEzNTUwOCwgMTM1NTEyLCAxMzU1MTcsIDEzNTUyMiwgMTM1NTI2LCAxMzU1MzEsIDEzNTUzNiwgCisgICAgMTM1NTQwLCAxMzU1NDQsIDEzNTU0OSwgMTM1NTUzLCAxMzU1NTgsIDEzNTU2MywgMTM1NTY4LCAxMzU1NzMsIDEzNTU3OCwgCisgICAgMTM1NTgzLCAxMzU1ODksIDEzNTU5NSwgMTM1NjAxLCAxMzU2MDYsIDEzNTYxMiwgMTM1NjE4LCAxMzU2MjQsIDEzNTYyOSwgCisgICAgMTM1NjM1LCAxMzU2NDEsIDEzNTY0NiwgMTM1NjUyLCAxMzU2NTgsIDEzNTY2MywgMTM1NjY5LCAxMzU2NzUsIDEzNTY4MCwgCisgICAgMTM1Njg1LCAxMzU2OTEsIDEzNTY5NiwgMTM1NzAyLCAxMzU3MDgsIDEzNTcxNCwgMTM1NzIwLCAxMzU3MjYsIDEzNTczMSwgCisgICAgMTM1NzM3LCAxMzU3NDMsIDEzNTc0OSwgMTM1NzU0LCAxMzU3NjAsIDEzNTc2NiwgMTM1NzcyLCAxMzU3NzcsIDEzNTc4MywgCisgICAgMTM1Nzg5LCAxMzU3OTQsIDEzNTgwMCwgMTM1ODA2LCAxMzU4MTEsIDEzNTgxNywgMTM1ODIzLCAxMzU4MjgsIDEzNTgzMywgCisgICAgMTM1ODM5LCAxMzU4NDQsIDEzNTg1MCwgMTM1ODU2LCAxMzU4NjIsIDEzNTg2OCwgMTM1ODc0LCAwLCAxMzU4NzgsIAorICAgIDEzNTg4MywgMCwgMCwgMTM1ODg4LCAwLCAwLCAxMzU4OTMsIDEzNTg5OCwgMCwgMCwgMTM1OTAzLCAxMzU5MDgsIDEzNTkxMiwgCisgICAgMTM1OTE3LCAwLCAxMzU5MjIsIDEzNTkyNiwgMTM1OTMxLCAxMzU5MzUsIDEzNTk0MCwgMTM1OTQ1LCAxMzU5NTAsIAorICAgIDEzNTk1NSwgMTM1OTYwLCAxMzU5NjQsIDEzNTk2OSwgMTM1OTc0LCAwLCAxMzU5NzksIDAsIDEzNTk4NCwgMTM1OTg5LCAKKyAgICAxMzU5OTMsIDEzNTk5OCwgMTM2MDAzLCAxMzYwMDcsIDEzNjAxMiwgMCwgMTM2MDE3LCAxMzYwMjIsIDEzNjAyNywgCisgICAgMTM2MDMxLCAxMzYwMzUsIDEzNjA0MCwgMTM2MDQ0LCAxMzYwNDksIDEzNjA1NCwgMTM2MDU5LCAxMzYwNjQsIDEzNjA2OSwgCisgICAgMTM2MDc0LCAxMzYwODAsIDEzNjA4NiwgMTM2MDkyLCAxMzYwOTcsIDEzNjEwMywgMTM2MTA5LCAxMzYxMTUsIDEzNjEyMCwgCisgICAgMTM2MTI2LCAxMzYxMzIsIDEzNjEzNywgMTM2MTQzLCAxMzYxNDksIDEzNjE1NCwgMTM2MTYwLCAxMzYxNjYsIDEzNjE3MSwgCisgICAgMTM2MTc2LCAxMzYxODIsIDEzNjE4NywgMTM2MTkzLCAxMzYxOTksIDEzNjIwNSwgMTM2MjExLCAxMzYyMTcsIDEzNjIyMiwgCisgICAgMTM2MjI4LCAxMzYyMzQsIDEzNjI0MCwgMTM2MjQ1LCAxMzYyNTEsIDEzNjI1NywgMTM2MjYzLCAxMzYyNjgsIDEzNjI3NCwgCisgICAgMTM2MjgwLCAxMzYyODUsIDEzNjI5MSwgMTM2Mjk3LCAxMzYzMDIsIDEzNjMwOCwgMTM2MzE0LCAxMzYzMTksIDEzNjMyNCwgCisgICAgMTM2MzMwLCAxMzYzMzUsIDEzNjM0MSwgMTM2MzQ3LCAxMzYzNTMsIDEzNjM1OSwgMTM2MzY1LCAxMzYzNjksIDAsIAorICAgIDEzNjM3NCwgMTM2Mzc5LCAxMzYzODMsIDEzNjM4OCwgMCwgMCwgMTM2MzkzLCAxMzYzOTgsIDEzNjQwMywgMTM2NDA3LCAKKyAgICAxMzY0MTIsIDEzNjQxNywgMTM2NDIxLCAxMzY0MjYsIDAsIDEzNjQzMSwgMTM2NDM1LCAxMzY0NDAsIDEzNjQ0NCwgCisgICAgMTM2NDQ5LCAxMzY0NTQsIDEzNjQ1OSwgMCwgMTM2NDY0LCAxMzY0NjgsIDEzNjQ3MywgMTM2NDc4LCAxMzY0ODMsIAorICAgIDEzNjQ4NywgMTM2NDkyLCAxMzY0OTcsIDEzNjUwMiwgMTM2NTA2LCAxMzY1MTEsIDEzNjUxNiwgMTM2NTIwLCAxMzY1MjUsIAorICAgIDEzNjUzMCwgMTM2NTM0LCAxMzY1MzksIDEzNjU0NCwgMTM2NTQ4LCAxMzY1NTIsIDEzNjU1NywgMTM2NTYxLCAxMzY1NjYsIAorICAgIDEzNjU3MSwgMTM2NTc2LCAxMzY1ODEsIDEzNjU4NiwgMTM2NTkwLCAwLCAxMzY1OTUsIDEzNjYwMCwgMTM2NjA0LCAKKyAgICAxMzY2MDksIDAsIDEzNjYxNCwgMTM2NjE4LCAxMzY2MjMsIDEzNjYyOCwgMTM2NjMyLCAwLCAxMzY2MzcsIDAsIDAsIDAsIAorICAgIDEzNjY0MSwgMTM2NjQ1LCAxMzY2NTAsIDEzNjY1NCwgMTM2NjU5LCAxMzY2NjQsIDEzNjY2OSwgMCwgMTM2Njc0LCAKKyAgICAxMzY2NzgsIDEzNjY4MywgMTM2Njg4LCAxMzY2OTMsIDEzNjY5NywgMTM2NzAyLCAxMzY3MDcsIDEzNjcxMiwgMTM2NzE2LCAKKyAgICAxMzY3MjEsIDEzNjcyNiwgMTM2NzMwLCAxMzY3MzUsIDEzNjc0MCwgMTM2NzQ0LCAxMzY3NDksIDEzNjc1NCwgMTM2NzU4LCAKKyAgICAxMzY3NjIsIDEzNjc2NywgMTM2NzcxLCAxMzY3NzYsIDEzNjc4MSwgMTM2Nzg2LCAxMzY3OTEsIDEzNjc5NiwgMTM2ODAxLCAKKyAgICAxMzY4MDcsIDEzNjgxMywgMTM2ODE5LCAxMzY4MjQsIDEzNjgzMCwgMTM2ODM2LCAxMzY4NDIsIDEzNjg0NywgMTM2ODUzLCAKKyAgICAxMzY4NTksIDEzNjg2NCwgMTM2ODcwLCAxMzY4NzYsIDEzNjg4MSwgMTM2ODg3LCAxMzY4OTMsIDEzNjg5OCwgMTM2OTAzLCAKKyAgICAxMzY5MDksIDEzNjkxNCwgMTM2OTIwLCAxMzY5MjYsIDEzNjkzMiwgMTM2OTM4LCAxMzY5NDQsIDEzNjk0OSwgMTM2OTU1LCAKKyAgICAxMzY5NjEsIDEzNjk2NywgMTM2OTcyLCAxMzY5NzgsIDEzNjk4NCwgMTM2OTkwLCAxMzY5OTUsIDEzNzAwMSwgMTM3MDA3LCAKKyAgICAxMzcwMTIsIDEzNzAxOCwgMTM3MDI0LCAxMzcwMjksIDEzNzAzNSwgMTM3MDQxLCAxMzcwNDYsIDEzNzA1MSwgMTM3MDU3LCAKKyAgICAxMzcwNjIsIDEzNzA2OCwgMTM3MDc0LCAxMzcwODAsIDEzNzA4NiwgMTM3MDkyLCAxMzcwOTYsIDEzNzEwMSwgMTM3MTA2LCAKKyAgICAxMzcxMTEsIDEzNzExNSwgMTM3MTIwLCAxMzcxMjUsIDEzNzEzMCwgMTM3MTM0LCAxMzcxMzksIDEzNzE0NCwgMTM3MTQ4LCAKKyAgICAxMzcxNTMsIDEzNzE1OCwgMTM3MTYyLCAxMzcxNjcsIDEzNzE3MiwgMTM3MTc2LCAxMzcxODAsIDEzNzE4NSwgMTM3MTg5LCAKKyAgICAxMzcxOTQsIDEzNzE5OSwgMTM3MjA0LCAxMzcyMDksIDEzNzIxNCwgMTM3MjE4LCAxMzcyMjMsIDEzNzIyOCwgMTM3MjMzLCAKKyAgICAxMzcyMzcsIDEzNzI0MiwgMTM3MjQ3LCAxMzcyNTIsIDEzNzI1NiwgMTM3MjYxLCAxMzcyNjYsIDEzNzI3MCwgMTM3Mjc1LCAKKyAgICAxMzcyODAsIDEzNzI4NCwgMTM3Mjg5LCAxMzcyOTQsIDEzNzI5OCwgMTM3MzAyLCAxMzczMDcsIDEzNzMxMSwgMTM3MzE2LCAKKyAgICAxMzczMjEsIDEzNzMyNiwgMTM3MzMxLCAxMzczMzYsIDEzNzM0MSwgMTM3MzQ3LCAxMzczNTMsIDEzNzM1OSwgMTM3MzY0LCAKKyAgICAxMzczNzAsIDEzNzM3NiwgMTM3MzgyLCAxMzczODcsIDEzNzM5MywgMTM3Mzk5LCAxMzc0MDQsIDEzNzQxMCwgMTM3NDE2LCAKKyAgICAxMzc0MjEsIDEzNzQyNywgMTM3NDMzLCAxMzc0MzgsIDEzNzQ0MywgMTM3NDQ5LCAxMzc0NTQsIDEzNzQ2MCwgMTM3NDY2LCAKKyAgICAxMzc0NzIsIDEzNzQ3OCwgMTM3NDg0LCAxMzc0ODksIDEzNzQ5NSwgMTM3NTAxLCAxMzc1MDcsIDEzNzUxMiwgMTM3NTE4LCAKKyAgICAxMzc1MjQsIDEzNzUzMCwgMTM3NTM1LCAxMzc1NDEsIDEzNzU0NywgMTM3NTUyLCAxMzc1NTgsIDEzNzU2NCwgMTM3NTY5LCAKKyAgICAxMzc1NzUsIDEzNzU4MSwgMTM3NTg2LCAxMzc1OTEsIDEzNzU5NywgMTM3NjAyLCAxMzc2MDgsIDEzNzYxNCwgMTM3NjIwLCAKKyAgICAxMzc2MjYsIDEzNzYzMiwgMTM3NjM3LCAxMzc2NDMsIDEzNzY0OSwgMTM3NjU1LCAxMzc2NjAsIDEzNzY2NiwgMTM3NjcyLCAKKyAgICAxMzc2NzgsIDEzNzY4MywgMTM3Njg5LCAxMzc2OTUsIDEzNzcwMCwgMTM3NzA2LCAxMzc3MTIsIDEzNzcxNywgMTM3NzIzLCAKKyAgICAxMzc3MjksIDEzNzczNCwgMTM3NzM5LCAxMzc3NDUsIDEzNzc1MCwgMTM3NzU2LCAxMzc3NjIsIDEzNzc2OCwgMTM3Nzc0LCAKKyAgICAxMzc3ODAsIDEzNzc4NSwgMTM3NzkxLCAxMzc3OTcsIDEzNzgwMywgMTM3ODA4LCAxMzc4MTQsIDEzNzgyMCwgMTM3ODI2LCAKKyAgICAxMzc4MzEsIDEzNzgzNywgMTM3ODQzLCAxMzc4NDgsIDEzNzg1NCwgMTM3ODYwLCAxMzc4NjUsIDEzNzg3MSwgMTM3ODc3LCAKKyAgICAxMzc4ODIsIDEzNzg4NywgMTM3ODkzLCAxMzc4OTgsIDEzNzkwNCwgMTM3OTEwLCAxMzc5MTYsIDEzNzkyMiwgMTM3OTI4LCAKKyAgICAxMzc5MzQsIDEzNzk0MSwgMTM3OTQ4LCAxMzc5NTUsIDEzNzk2MSwgMTM3OTY4LCAxMzc5NzUsIDEzNzk4MiwgMTM3OTg4LCAKKyAgICAxMzc5OTUsIDEzODAwMiwgMTM4MDA4LCAxMzgwMTUsIDEzODAyMiwgMTM4MDI4LCAxMzgwMzUsIDEzODA0MiwgMTM4MDQ4LCAKKyAgICAxMzgwNTQsIDEzODA2MSwgMTM4MDY3LCAxMzgwNzQsIDEzODA4MSwgMTM4MDg4LCAxMzgwOTUsIDEzODEwMiwgMTM4MTA4LCAKKyAgICAxMzgxMTUsIDEzODEyMiwgMTM4MTI5LCAxMzgxMzUsIDEzODE0MiwgMTM4MTQ5LCAxMzgxNTYsIDEzODE2MiwgMTM4MTY5LCAKKyAgICAxMzgxNzYsIDEzODE4MiwgMTM4MTg5LCAxMzgxOTYsIDEzODIwMiwgMTM4MjA5LCAxMzgyMTYsIDEzODIyMiwgMTM4MjI4LCAKKyAgICAxMzgyMzUsIDEzODI0MSwgMTM4MjQ4LCAxMzgyNTUsIDEzODI2MiwgMTM4MjY5LCAxMzgyNzYsIDEzODI4MSwgMTM4Mjg3LCAKKyAgICAxMzgyOTMsIDEzODI5OSwgMTM4MzA0LCAxMzgzMTAsIDEzODMxNiwgMTM4MzIyLCAxMzgzMjcsIDEzODMzMywgMTM4MzM5LCAKKyAgICAxMzgzNDQsIDEzODM1MCwgMTM4MzU2LCAxMzgzNjEsIDEzODM2NywgMTM4MzczLCAxMzgzNzgsIDEzODM4MywgMTM4Mzg5LCAKKyAgICAxMzgzOTQsIDEzODQwMCwgMTM4NDA2LCAxMzg0MTIsIDEzODQxOCwgMTM4NDI0LCAxMzg0MjksIDEzODQzNSwgMTM4NDQxLCAKKyAgICAxMzg0NDcsIDEzODQ1MiwgMTM4NDU4LCAxMzg0NjQsIDEzODQ3MCwgMTM4NDc1LCAxMzg0ODEsIDEzODQ4NywgMTM4NDkyLCAKKyAgICAxMzg0OTgsIDEzODUwNCwgMTM4NTA5LCAxMzg1MTUsIDEzODUyMSwgMTM4NTI2LCAxMzg1MzEsIDEzODUzNywgMTM4NTQyLCAKKyAgICAxMzg1NDgsIDEzODU1NCwgMTM4NTYwLCAxMzg1NjYsIDEzODU3MiwgMTM4NTc4LCAwLCAwLCAxMzg1ODUsIDEzODU5MCwgCisgICAgMTM4NTk1LCAxMzg2MDAsIDEzODYwNSwgMTM4NjEwLCAxMzg2MTUsIDEzODYyMCwgMTM4NjI1LCAxMzg2MzAsIDEzODYzNSwgCisgICAgMTM4NjQwLCAxMzg2NDUsIDEzODY1MCwgMTM4NjU1LCAxMzg2NjAsIDEzODY2NSwgMTM4NjcwLCAxMzg2NzYsIDEzODY4MSwgCisgICAgMTM4Njg2LCAxMzg2OTEsIDEzODY5NiwgMTM4NzAxLCAxMzg3MDYsIDEzODcxMSwgMTM4NzE1LCAxMzg3MjAsIDEzODcyNSwgCisgICAgMTM4NzMwLCAxMzg3MzUsIDEzODc0MCwgMTM4NzQ1LCAxMzg3NTAsIDEzODc1NSwgMTM4NzYwLCAxMzg3NjUsIDEzODc3MCwgCisgICAgMTM4Nzc1LCAxMzg3ODAsIDEzODc4NSwgMTM4NzkwLCAxMzg3OTUsIDEzODgwMCwgMTM4ODA2LCAxMzg4MTEsIDEzODgxNiwgCisgICAgMTM4ODIxLCAxMzg4MjYsIDEzODgzMSwgMTM4ODM2LCAxMzg4NDEsIDEzODg0NywgMTM4ODUyLCAxMzg4NTcsIDEzODg2MiwgCisgICAgMTM4ODY3LCAxMzg4NzIsIDEzODg3NywgMTM4ODgyLCAxMzg4ODcsIDEzODg5MiwgMTM4ODk3LCAxMzg5MDIsIDEzODkwNywgCisgICAgMTM4OTEyLCAxMzg5MTcsIDEzODkyMiwgMTM4OTI3LCAxMzg5MzIsIDEzODkzNywgMTM4OTQyLCAxMzg5NDcsIDEzODk1MiwgCisgICAgMTM4OTU3LCAxMzg5NjIsIDEzODk2OCwgMTM4OTczLCAxMzg5NzgsIDEzODk4MywgMTM4OTg4LCAxMzg5OTMsIDEzODk5OCwgCisgICAgMTM5MDAzLCAxMzkwMDcsIDEzOTAxMiwgMTM5MDE3LCAxMzkwMjIsIDEzOTAyNywgMTM5MDMyLCAxMzkwMzcsIDEzOTA0MiwgCisgICAgMTM5MDQ3LCAxMzkwNTIsIDEzOTA1NywgMTM5MDYyLCAxMzkwNjcsIDEzOTA3MiwgMTM5MDc3LCAxMzkwODIsIDEzOTA4NywgCisgICAgMTM5MDkyLCAxMzkwOTgsIDEzOTEwMywgMTM5MTA4LCAxMzkxMTMsIDEzOTExOCwgMTM5MTIzLCAxMzkxMjgsIDEzOTEzMywgCisgICAgMTM5MTM5LCAxMzkxNDQsIDEzOTE0OSwgMTM5MTU0LCAxMzkxNTksIDEzOTE2NCwgMTM5MTY5LCAxMzkxNzUsIDEzOTE4MSwgCisgICAgMTM5MTg3LCAxMzkxOTMsIDEzOTE5OSwgMTM5MjA1LCAxMzkyMTEsIDEzOTIxNywgMTM5MjIzLCAxMzkyMjksIDEzOTIzNSwgCisgICAgMTM5MjQxLCAxMzkyNDcsIDEzOTI1MywgMTM5MjU5LCAxMzkyNjUsIDEzOTI3MSwgMTM5Mjc4LCAxMzkyODQsIDEzOTI5MCwgCisgICAgMTM5Mjk2LCAxMzkzMDIsIDEzOTMwOCwgMTM5MzE0LCAxMzkzMjAsIDEzOTMyNSwgMTM5MzMxLCAxMzkzMzcsIDEzOTM0MywgCisgICAgMTM5MzQ5LCAxMzkzNTUsIDEzOTM2MSwgMTM5MzY3LCAxMzkzNzMsIDEzOTM3OSwgMTM5Mzg1LCAxMzkzOTEsIDEzOTM5NywgCisgICAgMTM5NDAzLCAxMzk0MDksIDEzOTQxNSwgMTM5NDIxLCAxMzk0MjcsIDEzOTQzNCwgMTM5NDQwLCAxMzk0NDYsIDEzOTQ1MiwgCisgICAgMTM5NDU4LCAxMzk0NjQsIDEzOTQ3MCwgMTM5NDc2LCAxMzk0ODMsIDEzOTQ4OSwgMTM5NDk1LCAxMzk1MDEsIDEzOTUwNywgCisgICAgMTM5NTEzLCAxMzk1MTksIDEzOTUyNSwgMTM5NTMxLCAxMzk1MzcsIDEzOTU0MywgMTM5NTQ5LCAxMzk1NTUsIDEzOTU2MSwgCisgICAgMTM5NTY3LCAxMzk1NzMsIDEzOTU3OSwgMTM5NTg1LCAxMzk1OTEsIDEzOTU5NywgMTM5NjAzLCAxMzk2MDksIDEzOTYxNSwgCisgICAgMTM5NjIxLCAxMzk2MjgsIDEzOTYzNCwgMTM5NjQwLCAxMzk2NDYsIDEzOTY1MiwgMTM5NjU4LCAxMzk2NjQsIDEzOTY3MCwgCisgICAgMTM5Njc1LCAxMzk2ODEsIDEzOTY4NywgMTM5NjkzLCAxMzk2OTksIDEzOTcwNSwgMTM5NzExLCAxMzk3MTcsIDEzOTcyMywgCisgICAgMTM5NzI5LCAxMzk3MzUsIDEzOTc0MSwgMTM5NzQ3LCAxMzk3NTMsIDEzOTc1OSwgMTM5NzY1LCAxMzk3NzEsIDEzOTc3NywgCisgICAgMTM5Nzg0LCAxMzk3OTAsIDEzOTc5NiwgMTM5ODAyLCAxMzk4MDgsIDEzOTgxNCwgMTM5ODIwLCAxMzk4MjYsIDEzOTgzMywgCisgICAgMTM5ODM5LCAxMzk4NDUsIDEzOTg1MSwgMTM5ODU3LCAxMzk4NjMsIDEzOTg2OSwgMTM5ODc2LCAxMzk4ODMsIDEzOTg5MCwgCisgICAgMTM5ODk3LCAxMzk5MDQsIDEzOTkxMSwgMTM5OTE4LCAxMzk5MjUsIDEzOTkzMiwgMTM5OTM5LCAxMzk5NDYsIDEzOTk1MywgCisgICAgMTM5OTYwLCAxMzk5NjcsIDEzOTk3NCwgMTM5OTgxLCAxMzk5ODgsIDEzOTk5NiwgMTQwMDAzLCAxNDAwMTAsIDE0MDAxNywgCisgICAgMTQwMDI0LCAxNDAwMzEsIDE0MDAzOCwgMTQwMDQ1LCAxNDAwNTEsIDE0MDA1OCwgMTQwMDY1LCAxNDAwNzIsIDE0MDA3OSwgCisgICAgMTQwMDg2LCAxNDAwOTMsIDE0MDEwMCwgMTQwMTA3LCAxNDAxMTQsIDE0MDEyMSwgMTQwMTI4LCAxNDAxMzUsIDE0MDE0MiwgCisgICAgMTQwMTQ5LCAxNDAxNTYsIDE0MDE2MywgMTQwMTcwLCAxNDAxNzgsIDE0MDE4NSwgMTQwMTkyLCAxNDAxOTksIDE0MDIwNiwgCisgICAgMTQwMjEzLCAxNDAyMjAsIDE0MDIyNywgMTQwMjM1LCAxNDAyNDIsIDE0MDI0OSwgMTQwMjU2LCAxNDAyNjMsIDE0MDI3MCwgCisgICAgMTQwMjc3LCAxNDAyODIsIDAsIDAsIDE0MDI4NywgMTQwMjkyLCAxNDAyOTYsIDE0MDMwMCwgMTQwMzA0LCAxNDAzMDgsIAorICAgIDE0MDMxMiwgMTQwMzE2LCAxNDAzMjEsIDE0MDMyNSwgMTQwMzMwLCAxNDAzMzUsIDE0MDMzOSwgMTQwMzQzLCAxNDAzNDcsIAorICAgIDE0MDM1MSwgMTQwMzU1LCAxNDAzNTksIDE0MDM2NCwgMTQwMzY4LCAxNDAzNzMsIDE0MDM3OCwgMTQwMzgyLCAxNDAzODYsIAorICAgIDE0MDM5MCwgMTQwMzk0LCAxNDAzOTgsIDE0MDQwMiwgMTQwNDA3LCAxNDA0MTEsIDE0MDQxNiwgMTQwNDIyLCAxNDA0MjcsIAorICAgIDE0MDQzMiwgMTQwNDM3LCAxNDA0NDIsIDE0MDQ0NywgMTQwNDUyLCAxNDA0NTgsIDE0MDQ2MywgMTQwNDY5LCAxNDA0NzUsIAorICAgIDE0MDQ4MCwgMTQwNDg1LCAxNDA0OTAsIDE0MDQ5NSwgMTQwNTAwLCAxNDA1MDUsIDE0MDUxMSwgMTQwNTE2LCAxNDA1MjIsIAorICAgIDE0MDUyNiwgMTQwNTMxLCAxNDA1MzYsIDE0MDU0MSwgMTQwNTQ2LCAxNDA1NTEsIDE0MDU1NiwgMTQwNTYyLCAxNDA1NzAsIAorICAgIDE0MDU3NywgMTQwNTgyLCAxNDA1ODcsIDE0MDU5NCwgMTQwNjAwLCAxNDA2MDUsIDE0MDYxMSwgMTQwNjE3LCAxNDA2MjUsIAorICAgIDE0MDYzMSwgMTQwNjM4LCAxNDA2NDYsIDE0MDY1MiwgMTQwNjYxLCAxNDA2NzAsIDE0MDY3OCwgMTQwNjg2LCAxNDA2OTIsIAorICAgIDE0MDY5OSwgMTQwNzA3LCAxNDA3MTUsIDE0MDcyMSwgMTQwNzI4LCAxNDA3MzcsIDE0MDc0NiwgMTQwNzUzLCAxNDA3NjQsIAorICAgIDE0MDc3NCwgMTQwNzg0LCAxNDA3OTQsIDE0MDgwNCwgMTQwODExLCAxNDA4MTgsIDE0MDgyNSwgMTQwODMyLCAxNDA4NDEsIAorICAgIDE0MDg1MCwgMTQwODYxLCAxNDA4NzIsIDE0MDg4MSwgMTQwODkwLCAxNDA5MDEsIDE0MDkxMCwgMTQwOTE5LCAxNDA5MzAsIAorICAgIDE0MDkzOSwgMTQwOTQ4LCAxNDA5NTYsIDE0MDk2NCwgMTQwOTc1LCAxNDA5ODYsIDE0MDk5NCwgMTQxMDAzLCAxNDEwMTIsIAorICAgIDE0MTAxOSwgMTQxMDMwLCAxNDEwNDEsIDE0MTA1MCwgMTQxMDU5LCAxNDEwNjYsIDE0MTA3NSwgMTQxMDg0LCAxNDEwOTMsIAorICAgIDE0MTEwNCwgMTQxMTEzLCAxNDExMjMsIDE0MTEzMiwgMTQxMTQxLCAxNDExNTIsIDE0MTE2NSwgMTQxMTgwLCAxNDExOTEsIAorICAgIDE0MTIwNCwgMTQxMjE2LCAxNDEyMjUsIDE0MTIzNiwgMTQxMjQ3LCAxNDEyNTYsIDE0MTI2NywgMTQxMjgxLCAxNDEyOTYsIAorICAgIDE0MTI5OSwgMTQxMzA4LCAxNDEzMTMsIDE0MTMxOSwgMTQxMzI3LCAxNDEzMzMsIDE0MTMzOSwgMTQxMzQ4LCAxNDEzNTUsIAorICAgIDE0MTM2NSwgMTQxMzc3LCAxNDEzODQsIDE0MTM4NywgMTQxMzkzLCAxNDE0MDAsIDE0MTQwNiwgMTQxNDExLCAxNDE0MTQsIAorICAgIDE0MTQxOSwgMTQxNDIyLCAxNDE0MjksIDE0MTQzNSwgMTQxNDQzLCAxNDE0NTAsIDE0MTQ1NywgMTQxNDYzLCAxNDE0NjgsIAorICAgIDE0MTQ3MSwgMTQxNDc0LCAxNDE0NzcsIDE0MTQ4MywgMTQxNDkwLCAxNDE0OTYsIDE0MTUwMSwgMTQxNTA4LCAxNDE1MTEsIAorICAgIDE0MTUxNiwgMTQxNTIzLCAxNDE1MjksIDE0MTUzNywgMTQxNTQ0LCAxNDE1NTQsIDE0MTU2MywgMTQxNTY2LCAxNDE1NzIsIAorICAgIDE0MTU3OSwgMTQxNTg2LCAxNDE1OTMsIDE0MTU5OCwgMTQxNjA2LCAxNDE2MTQsIDE0MTYyMywgMTQxNjI5LCAxNDE2MzgsIAorICAgIDE0MTY0NywgMTQxNjU2LCAxNDE2NjIsIDE0MTY3MSwgMTQxNjc4LCAxNDE2ODUsIDE0MTY5MiwgMTQxNzAwLCAxNDE3MDYsIAorICAgIDE0MTcxNCwgMTQxNzIwLCAxNDE3MjcsIDE0MTczNCwgMTQxNzQyLCAxNDE3NTMsIDE0MTc2MywgMTQxNzY5LCAxNDE3NzYsIAorICAgIDE0MTc4MywgMTQxNzkwLCAxNDE3OTYsIDE0MTgwMywgMTQxODEwLCAxNDE4MTUsIDE0MTgyMiwgMTQxODMwLCAxNDE4MzksIAorICAgIDE0MTg0NSwgMTQxODU3LCAxNDE4NjgsIDE0MTg3NCwgMTQxODgyLCAxNDE4ODgsIDE0MTg5NSwgMTQxOTAyLCAxNDE5MDksIAorICAgIDE0MTkxNSwgMTQxOTIyLCAxNDE5MzEsIDE0MTkzNywgMTQxOTQzLCAxNDE5NTAsIDE0MTk1NywgMTQxOTY1LCAxNDE5NzUsIAorICAgIDE0MTk4NSwgMTQxOTk1LCAxNDIwMDUsIDE0MjAxMywgMTQyMDIxLCAxNDIwMzEsIDE0MjAzOSwgMTQyMDQ0LCAxNDIwNDksIAorICAgIDE0MjA1NCwgMTQyMDYwLCAxNDIwNjcsIDE0MjA3NCwgMTQyMDgwLCAxNDIwODYsIDE0MjA5MSwgMTQyMDk4LCAxNDIxMDYsIAorICAgIDE0MjExNiwgMTQyMTI0LCAxNDIxMzIsIDE0MjE0MiwgMTQyMTUyLCAxNDIxNjAsIDE0MjE3MCwgMTQyMTgwLCAxNDIxOTIsIAorICAgIDE0MjIwNCwgMTQyMjE2LCAxNDIyMjYsIDE0MjIzMiwgMTQyMjM4LCAxNDIyNDUsIDE0MjI1NCwgMTQyMjYzLCAxNDIyNzIsIAorICAgIDE0MjI4MSwgMTQyMjkxLCAxNDIzMDAsIDE0MjMwOSwgMTQyMzE4LCAxNDIzMjMsIDE0MjMyOSwgMTQyMzM4LCAxNDIzNDgsIAorICAgIDE0MjM1NywgMTQyMzYzLCAxNDIzNjksIDE0MjM3NiwgMTQyMzgzLCAxNDIzOTAsIDE0MjM5NiwgMTQyNDAzLCAxNDI0MTAsIAorICAgIDE0MjQxNywgMTQyNDIzLCAxNDI0MjcsIDE0MjQzMiwgMTQyNDM5LCAxNDI0NDYsIDE0MjQ1MywgMTQyNDU4LCAxNDI0NjYsIAorICAgIDE0MjQ3NCwgMTQyNDgzLCAxNDI0OTEsIDE0MjQ5OCwgMTQyNTA2LCAxNDI1MTUsIDE0MjUyNSwgMTQyNTI4LCAxNDI1MzIsIAorICAgIDE0MjUzNywgMTQyNTQyLCAxNDI1NDcsIDE0MjU1MiwgMTQyNTU3LCAxNDI1NjIsIDE0MjU2NywgMTQyNTcyLCAxNDI1NzcsIAorICAgIDE0MjU4MiwgMTQyNTg3LCAxNDI1OTIsIDE0MjU5NywgMTQyNjAyLCAxNDI2MDcsIDE0MjYxMiwgMTQyNjE3LCAxNDI2MjQsIAorICAgIDE0MjYzMCwgMTQyNjM3LCAxNDI2NDMsIDE0MjY0OCwgMTQyNjU1LCAxNDI2NjEsIDE0MjY2OCwgMTQyNjc0LCAxNDI2NzksIAorICAgIDE0MjY4NiwgMTQyNjkzLCAxNDI3MDAsIDE0MjcwNiwgMTQyNzEyLCAxNDI3MjEsIDE0MjczMCwgMTQyNzQxLCAxNDI3NDgsIAorICAgIDE0Mjc1NSwgMTQyNzY0LCAxNDI3NzMsIDE0Mjc4MiwgMTQyNzkxLCAxNDI4MDAsIDE0MjgwNiwgMTQyODE0LCAxNDI4MjAsIAorICAgIDE0MjgzMCwgMTQyODM1LCAxNDI4NDQsIDE0Mjg1MywgMTQyODYwLCAxNDI4NzEsIDE0Mjg3OCwgMTQyODg1LCAxNDI4OTIsIAorICAgIDE0Mjg5OSwgMTQyOTA2LCAxNDI5MTMsIDE0MjkyMCwgMTQyOTI3LCAxNDI5MzQsIDE0Mjk0MSwgMTQyOTQ3LCAxNDI5NTMsIAorICAgIDE0Mjk1OSwgMTQyOTY2LCAxNDI5NzMsIDE0Mjk4MCwgMTQyOTg3LCAxNDI5OTQsIDE0MzAwMSwgMTQzMDA4LCAxNDMwMTUsIAorICAgIDE0MzAyMiwgMTQzMDI5LCAxNDMwMzYsIDE0MzA0MywgMTQzMDQ4LCAxNDMwNTcsIDE0MzA2NiwgMTQzMDc1LCAxNDMwODIsIAorICAgIDE0MzA4OSwgMTQzMDk2LCAxNDMxMDMsIDE0MzExMCwgMTQzMTE3LCAxNDMxMjQsIDE0MzEzMSwgMTQzMTQwLCAxNDMxNDksIAorICAgIDE0MzE1OCwgMTQzMTY3LCAxNDMxNzYsIDE0MzE4NSwgMTQzMTk0LCAxNDMyMDMsIDE0MzIxMiwgMTQzMjIxLCAxNDMyMzAsIAorICAgIDE0MzIzOSwgMTQzMjQ4LCAxNDMyNTQsIDE0MzI2MiwgMTQzMjY4LCAxNDMyNzgsIDE0MzI4MywgMTQzMjkyLCAxNDMzMDEsIAorICAgIDE0MzMxMCwgMTQzMzIxLCAxNDMzMjYsIDE0MzMzMywgMTQzMzQwLCAxNDMzNDcsIDE0MzM1MiwgMTQzMzU4LCAxNDMzNjQsIAorICAgIDE0MzM3MCwgMTQzMzc3LCAxNDMzODQsIDE0MzM5MSwgMTQzMzk4LCAxNDM0MDUsIDE0MzQxMiwgMTQzNDE5LCAxNDM0MjYsIAorICAgIDE0MzQzMywgMTQzNDQwLCAxNDM0NDcsIDE0MzQ1NCwgMTQzNDU5LCAxNDM0NjgsIDE0MzQ3NywgMTQzNDg2LCAxNDM0OTUsIAorICAgIDE0MzUwNCwgMTQzNTEzLCAxNDM1MjIsIDE0MzUzMSwgMTQzNTQyLCAxNDM1NTMsIDE0MzU2MCwgMTQzNTY3LCAxNDM1NzQsIAorICAgIDE0MzU4MSwgMTQzNTg4LCAxNDM1OTUsIDE0MzYwMywgMTQzNjEzLCAxNDM2MjMsIDE0MzYzMywgMTQzNjQ0LCAxNDM2NTUsIAorICAgIDE0MzY2NiwgMTQzNjc1LCAxNDM2ODQsIDE0MzY5MywgMTQzNjk4LCAxNDM3MDMsIDE0MzcwOCwgMTQzNzEzLCAxNDM3MjQsIAorICAgIDE0MzczNSwgMTQzNzQ2LCAxNDM3NTcsIDE0Mzc2OCwgMTQzNzc4LCAxNDM3ODksIDE0Mzc5OCwgMTQzODA3LCAxNDM4MTYsIAorICAgIDE0MzgyNSwgMTQzODM0LCAxNDM4NDIsIDE0Mzg1MSwgMTQzODYyLCAxNDM4NzMsIDE0Mzg4NCwgMTQzODk1LCAxNDM5MDYsIAorICAgIDE0MzkxOCwgMTQzOTMxLCAxNDM5NDMsIDE0Mzk1NiwgMTQzOTY4LCAxNDM5ODEsIDE0Mzk5MywgMTQ0MDA2LCAxNDQwMTcsIAorICAgIDE0NDAyOCwgMTQ0MDM3LCAxNDQwNDUsIDE0NDA1NCwgMTQ0MDY1LCAxNDQwNzYsIDE0NDA4OCwgMTQ0MTAxLCAxNDQxMTUsIAorICAgIDE0NDEzMCwgMTQ0MTQyLCAxNDQxNTUsIDE0NDE2NywgMTQ0MTgwLCAxNDQxOTEsIDE0NDIwMiwgMTQ0MjExLCAxNDQyMTksIAorICAgIDE0NDIyOCwgMTQ0MjM1LCAxNDQyNDIsIDE0NDI0OSwgMTQ0MjU2LCAxNDQyNjMsIDE0NDI3MCwgMTQ0Mjc3LCAxNDQyODQsIAorICAgIDE0NDI5MSwgMTQ0Mjk4LCAxNDQzMDMsIDE0NDMwOCwgMTQ0MzEzLCAxNDQzMjAsIDE0NDMzMCwgMTQ0MzQxLCAxNDQzNTEsIAorICAgIDE0NDM2MiwgMTQ0Mzc2LCAxNDQzOTEsIDE0NDQwNiwgMTQ0NDIwLCAxNDQ0MzUsIDE0NDQ1MCwgMTQ0NDYxLCAxNDQ0NzIsIAorICAgIDE0NDQ4NSwgMTQ0NDk4LCAxNDQ1MDcsIDE0NDUxNiwgMTQ0NTI5LCAxNDQ1NDIsIDE0NDU0OSwgMTQ0NTU2LCAxNDQ1NjEsIAorICAgIDE0NDU2NiwgMTQ0NTcxLCAxNDQ1NzYsIDE0NDU4MSwgMTQ0NTg4LCAxNDQ1OTcsIDE0NDYwMiwgMTQ0NjA1LCAxNDQ2MTAsIAorICAgIDE0NDYxNywgMTQ0NjI0LCAxNDQ2MzEsIDE0NDYzOCwgMTQ0NjQ1LCAxNDQ2NTIsIDE0NDY2NSwgMTQ0Njc5LCAxNDQ2OTQsIAorICAgIDE0NDcwMSwgMTQ0NzA4LCAxNDQ3MTUsIDE0NDcyNCwgMTQ0NzMyLCAxNDQ3NDAsIDE0NDc0OSwgMTQ0NzU0LCAxNDQ3NTksIAorICAgIDE0NDc2NCwgMTQ0NzY5LCAxNDQ3NzQsIDE0NDc3OSwgMTQ0Nzg2LCAxNDQ3OTMsIDE0NDc5OSwgMTQ0ODA2LCAxNDQ4MTIsIAorICAgIDE0NDgxOSwgMTQ0ODI0LCAxNDQ4MjksIDE0NDgzNCwgMTQ0ODM5LCAxNDQ4NDQsIDE0NDg1MSwgMTQ0ODU4LCAxNDQ4NjMsIAorICAgIDE0NDg3MCwgMTQ0ODc3LCAxNDQ4ODIsIDE0NDg4NywgMTQ0ODkyLCAxNDQ4OTcsIDE0NDkwMiwgMTQ0OTA3LCAxNDQ5MTQsIAorICAgIDE0NDkyMSwgMTQ0OTI4LCAxNDQ5MzEsIDE0NDkzNiwgMTQ0OTQxLCAxNDQ5NDYsIDE0NDk1MSwgMTQ0OTU4LCAxNDQ5NjUsIAorICAgIDE0NDk3MywgMTQ0OTgxLCAxNDQ5ODYsIDE0NDk5MSwgMTQ0OTk4LCAxNDUwMDUsIDE0NTAxMiwgMTQ1MDE3LCAxNDUwMjQsIAorICAgIDE0NTAzMSwgMTQ1MDM2LCAxNDUwNDMsIDE0NTA1MCwgMTQ1MDU2LCAxNDUwNjIsIDE0NTA2OCwgMTQ1MDc0LCAxNDUwODIsIAorICAgIDE0NTA5MCwgMTQ1MDk2LCAxNDUxMDQsIDE0NTExMiwgMTQ1MTE3LCAxNDUxMjQsIDE0NTEzMSwgMTQ1MTM2LCAxNDUxNDMsIAorICAgIDE0NTE1MCwgMTQ1MTU3LCAxNDUxNjUsIDE0NTE3MywgMTQ1MTc4LCAxNDUxODUsIDE0NTE5MiwgMTQ1MjAxLCAxNDUyMDgsIAorICAgIDE0NTIxNywgMTQ1MjI4LCAxNDUyMzcsIDE0NTI0NiwgMTQ1MjU1LCAxNDUyNjQsIDE0NTI2NywgMTQ1MjcyLCAxNDUyNzksIAorICAgIDE0NTI4OCwgMTQ1Mjk1LCAxNDUzMDQsIDE0NTMxMSwgMTQ1MzE2LCAxNDUzMjEsIDE0NTMyNCwgMTQ1MzI3LCAxNDUzMzAsIAorICAgIDE0NTMzNywgMTQ1MzQ0LCAxNDUzNTMsIDE0NTM2MiwgMTQ1MzcxLCAxNDUzNzgsIDE0NTM4NSwgMTQ1MzkwLCAxNDU0MDMsIAorICAgIDE0NTQwOCwgMTQ1NDEzLCAxNDU0MTgsIDE0NTQyMywgMTQ1NDI4LCAxNDU0MzMsIDE0NTQzOCwgMTQ1NDQzLCAxNDU0NDYsIAorICAgIDE0NTQ1MSwgMTQ1NDU2LCAxNDU0NjEsIDE0NTQ2NiwgMTQ1NDcxLCAxNDU0NzgsIDE0NTQ4MywgMTQ1NDkwLCAxNDU0OTMsIAorICAgIDE0NTQ5OCwgMTQ1NTAxLCAxNDU1MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0NTUwNywgMTQ1NTEyLCAxNDU1MTcsIDE0NTUyMiwgMTQ1NTI3LCAwLCAxNDU1MzIsIDE0NTUzNywgMTQ1NTQyLCAKKyAgICAxNDU1NDcsIDE0NTU1MiwgMTQ1NTU3LCAxNDU1NjIsIDE0NTU2NywgMTQ1NTcyLCAxNDU1NzcsIDE0NTU4MiwgMTQ1NTg3LCAKKyAgICAxNDU1OTIsIDE0NTU5NywgMTQ1NjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDU2MDcsIDE0NTYxNCwgMTQ1NjIwLCAKKyAgICAxNDU2MjcsIDE0NTYzNCwgMTQ1NjQxLCAxNDU2NDgsIDE0NTY1NSwgMTQ1NjYyLCAxNDU2NjksIDE0NTY3NiwgMTQ1NjgzLCAKKyAgICAxNDU2OTAsIDE0NTY5NywgMTQ1NzA0LCAxNDU3MTEsIDE0NTcxOCwgMTQ1NzI1LCAxNDU3MzIsIDE0NTczOSwgMTQ1NzQ2LCAKKyAgICAxNDU3NTMsIDE0NTc2MCwgMTQ1NzY3LCAxNDU3NzQsIDE0NTc4MSwgMTQ1Nzg4LCAxNDU3OTUsIDE0NTgwMiwgMTQ1ODA5LCAKKyAgICAxNDU4MTYsIDE0NTgyMywgMTQ1ODMwLCAxNDU4MzcsIDE0NTg0NCwgMTQ1ODUwLCAxNDU4NTYsIDE0NTg2MiwgMTQ1ODY5LCAKKyAgICAxNDU4NzUsIDE0NTg4MiwgMTQ1ODg4LCAxNDU4OTUsIDE0NTkwMiwgMTQ1OTA5LCAxNDU5MTYsIDE0NTkyMywgMTQ1OTMwLCAKKyAgICAxNDU5MzcsIDE0NTk0NCwgMTQ1OTUxLCAxNDU5NTgsIDE0NTk2NSwgMTQ1OTcyLCAxNDU5NzksIDE0NTk4NiwgMTQ1OTkzLCAKKyAgICAxNDYwMDAsIDE0NjAwNywgMTQ2MDE0LCAxNDYwMjEsIDE0NjAyOCwgMTQ2MDM2LCAxNDYwNDMsIDE0NjA1MCwgMTQ2MDU3LCAKKyAgICAxNDYwNjQsIDE0NjA3MSwgMTQ2MDc4LCAxNDYwODUsIDE0NjA5MiwgMTQ2MDk5LCAxNDYxMDYsIDE0NjExMywgMTQ2MTIwLCAKKyAgICAxNDYxMjYsIDE0NjEzMywgMTQ2MTQwLCAxNDYxNDcsIDE0NjE1NCwgMTQ2MTYxLCAxNDYxNjgsIDE0NjE3NSwgMTQ2MTgzLCAKKyAgICAxNDYxOTAsIDE0NjE5NiwgMTQ2MjAzLCAxNDYyMTAsIDE0NjIxNywgMTQ2MjI0LCAxNDYyMzEsIDE0NjIzOCwgMTQ2MjQ1LCAKKyAgICAxNDYyNTIsIDE0NjI1OSwgMTQ2MjY2LCAxNDYyNzMsIDE0NjI4MCwgMTQ2Mjg3LCAxNDYyOTQsIDE0NjMwMSwgMTQ2MzA4LCAKKyAgICAxNDYzMTUsIDE0NjMyMiwgMTQ2MzI5LCAxNDYzMzYsIDE0NjM0MiwgMTQ2MzQ5LCAxNDYzNTYsIDE0NjM2MywgMTQ2MzcwLCAKKyAgICAxNDYzNzcsIDE0NjM4NCwgMTQ2MzkxLCAxNDYzOTgsIDE0NjQwNSwgMTQ2NDEyLCAxNDY0MTksIDE0NjQyNiwgMTQ2NDMzLCAKKyAgICAxNDY0NDAsIDE0NjQ0NywgMTQ2NDU0LCAxNDY0NjEsIDE0NjQ2OCwgMTQ2NDc1LCAxNDY0ODIsIDE0NjQ4OSwgMTQ2NDk2LCAKKyAgICAxNDY1MDQsIDE0NjUxMiwgMTQ2NTIwLCAxNDY1MjcsIDE0NjUzNCwgMTQ2NTQxLCAxNDY1NDgsIDE0NjU1NSwgMTQ2NTYyLCAKKyAgICAxNDY1NjksIDE0NjU3NiwgMTQ2NTgzLCAxNDY1OTAsIDE0NjU5NiwgMTQ2NjAzLCAxNDY2MTAsIDE0NjYxNywgMTQ2NjI0LCAKKyAgICAxNDY2MzEsIDE0NjYzOCwgMTQ2NjQ1LCAxNDY2NTIsIDE0NjY1OSwgMTQ2NjY2LCAxNDY2NzMsIDE0NjY4MCwgMTQ2Njg3LCAKKyAgICAxNDY2OTQsIDE0NjcwMiwgMTQ2NzEwLCAxNDY3MTgsIDE0NjcyNSwgMTQ2NzMyLCAxNDY3MzksIDE0Njc0NiwgMTQ2NzUzLCAKKyAgICAxNDY3NjAsIDE0Njc2NywgMTQ2Nzc0LCAxNDY3ODEsIDE0Njc4OCwgMTQ2Nzk1LCAxNDY4MDIsIDE0NjgwOSwgMTQ2ODE2LCAKKyAgICAxNDY4MjMsIDE0NjgzMCwgMTQ2ODM3LCAxNDY4NDQsIDE0Njg1MSwgMTQ2ODU4LCAxNDY4NjUsIDE0Njg3MiwgMTQ2ODc5LCAKKyAgICAxNDY4ODYsIDE0Njg5MywgMTQ2OTAwLCAxNDY5MDcsIDE0NjkxNCwgMTQ2OTIxLCAxNDY5MjgsIDE0NjkzNSwgMTQ2OTQyLCAKKyAgICAxNDY5NDksIDE0Njk1NiwgMTQ2OTYzLCAxNDY5NzAsIDE0Njk3NywgMCwgMCwgMTQ2OTg0LCAxNDY5ODgsIDE0Njk5MiwgCisgICAgMTQ2OTk2LCAxNDcwMDAsIDE0NzAwNCwgMTQ3MDA4LCAxNDcwMTMsIDE0NzAxNywgMTQ3MDIyLCAxNDcwMjgsIDE0NzAzNCwgCisgICAgMTQ3MDQwLCAxNDcwNDYsIDE0NzA1NCwgMTQ3MDYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxNDcwNjgsIDE0NzA3MiwgMTQ3MDc2LCAxNDcwODAsIDAsIDE0NzA4NCwgMTQ3MDg4LCAxNDcwOTIsIAorICAgIDE0NzA5NiwgMTQ3MTAwLCAxNDcxMDQsIDE0NzEwOCwgMTQ3MTEyLCAxNDcxMTYsIDE0NzEyMCwgMTQ3MTI0LCAxNDcxMjgsIAorICAgIDE0NzEzMiwgMTQ3MTM2LCAxNDcxNDAsIDE0NzE0NCwgMTQ3MTQ4LCAxNDcxNTIsIDE0NzE1NiwgMTQ3MTYwLCAxNDcxNjQsIAorICAgIDE0NzE2OCwgMTQ3MTcyLCAxNDcxNzYsIDE0NzE4MiwgMTQ3MTg4LCAxNDcxOTQsIDAsIDE0NzIwMCwgMTQ3MjA1LCAwLCAKKyAgICAxNDcyMTAsIDAsIDAsIDE0NzIxNSwgMCwgMTQ3MjIwLCAxNDcyMjUsIDE0NzIzMCwgMTQ3MjM1LCAxNDcyNDAsIDE0NzI0NSwgCisgICAgMTQ3MjUwLCAxNDcyNTUsIDE0NzI2MCwgMTQ3MjY1LCAwLCAxNDcyNzAsIDE0NzI3NSwgMTQ3MjgwLCAxNDcyODUsIDAsIAorICAgIDE0NzI5MCwgMCwgMTQ3Mjk1LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDczMDAsIDAsIDAsIDAsIDAsIDE0NzMwNiwgMCwgCisgICAgMTQ3MzEyLCAwLCAxNDczMTgsIDAsIDE0NzMyNCwgMTQ3MzMwLCAxNDczMzYsIDAsIDE0NzM0MiwgMTQ3MzQ4LCAwLCAKKyAgICAxNDczNTQsIDAsIDAsIDE0NzM2MCwgMCwgMTQ3MzY2LCAwLCAxNDczNzIsIDAsIDE0NzM3OCwgMCwgMTQ3Mzg2LCAwLCAKKyAgICAxNDczOTQsIDE0NzQwMCwgMCwgMTQ3NDA2LCAwLCAwLCAxNDc0MTIsIDE0NzQxOCwgMTQ3NDI0LCAxNDc0MzAsIDAsIAorICAgIDE0NzQzNiwgMTQ3NDQyLCAxNDc0NDgsIDE0NzQ1NCwgMTQ3NDYwLCAxNDc0NjYsIDE0NzQ3MiwgMCwgMTQ3NDc4LCAKKyAgICAxNDc0ODQsIDE0NzQ5MCwgMTQ3NDk2LCAwLCAxNDc1MDIsIDE0NzUwOCwgMTQ3NTE0LCAxNDc1MjAsIDAsIDE0NzUyOCwgMCwgCisgICAgMTQ3NTM2LCAxNDc1NDIsIDE0NzU0OCwgMTQ3NTU0LCAxNDc1NjAsIDE0NzU2NiwgMTQ3NTcyLCAxNDc1NzgsIDE0NzU4NCwgCisgICAgMTQ3NTkwLCAwLCAxNDc1OTYsIDE0NzYwMiwgMTQ3NjA4LCAxNDc2MTQsIDE0NzYyMCwgMTQ3NjI2LCAxNDc2MzIsIAorICAgIDE0NzYzOCwgMTQ3NjQ0LCAxNDc2NTAsIDE0NzY1NiwgMTQ3NjYyLCAxNDc2NjgsIDE0NzY3NCwgMTQ3NjgwLCAxNDc2ODYsIAorICAgIDE0NzY5MiwgMCwgMCwgMCwgMCwgMCwgMTQ3Njk4LCAxNDc3MDMsIDE0NzcwOCwgMCwgMTQ3NzEzLCAxNDc3MTgsIDE0NzcyMywgCisgICAgMTQ3NzI4LCAxNDc3MzMsIDAsIDE0NzczOCwgMTQ3NzQzLCAxNDc3NDgsIDE0Nzc1MywgMTQ3NzU4LCAxNDc3NjMsIAorICAgIDE0Nzc2OCwgMTQ3NzczLCAxNDc3NzgsIDE0Nzc4MywgMTQ3Nzg4LCAxNDc3OTMsIDE0Nzc5OCwgMTQ3ODAzLCAxNDc4MDgsIAorICAgIDE0NzgxMywgMTQ3ODE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDc4MjMsIDE0NzgzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTQ3ODQxLCAxNDc4NDgsIDE0Nzg1NSwgMTQ3ODYyLCAxNDc4NjgsIDE0Nzg3NSwgMTQ3ODgyLCAKKyAgICAxNDc4ODgsIDE0Nzg5NSwgMTQ3OTAyLCAxNDc5MDksIDE0NzkxNywgMTQ3OTI1LCAxNDc5MzMsIDE0Nzk0MSwgMTQ3OTQ5LCAKKyAgICAxNDc5NTcsIDE0Nzk2NCwgMTQ3OTcxLCAxNDc5NzgsIDE0Nzk4NiwgMTQ3OTk0LCAxNDgwMDIsIDE0ODAxMCwgMTQ4MDE4LCAKKyAgICAxNDgwMjYsIDE0ODAzMywgMTQ4MDQwLCAxNDgwNDcsIDE0ODA1NSwgMTQ4MDYzLCAxNDgwNzEsIDE0ODA3OSwgMTQ4MDg3LCAKKyAgICAxNDgwOTUsIDE0ODEwMCwgMTQ4MTA1LCAxNDgxMTAsIDE0ODExNSwgMTQ4MTIwLCAxNDgxMjUsIDE0ODEzMCwgMTQ4MTM1LCAKKyAgICAxNDgxNDAsIDAsIDAsIDAsIDAsIDE0ODE0NSwgMTQ4MTUxLCAxNDgxNTUsIDE0ODE1OSwgMTQ4MTYzLCAxNDgxNjcsIAorICAgIDE0ODE3MSwgMTQ4MTc1LCAxNDgxNzksIDE0ODE4MywgMTQ4MTg3LCAxNDgxOTEsIDE0ODE5NSwgMTQ4MTk5LCAxNDgyMDMsIAorICAgIDE0ODIwNywgMTQ4MjExLCAxNDgyMTUsIDE0ODIxOSwgMTQ4MjIzLCAxNDgyMjcsIDE0ODIzMSwgMTQ4MjM1LCAxNDgyMzksIAorICAgIDE0ODI0MywgMTQ4MjQ3LCAxNDgyNTEsIDE0ODI1NSwgMTQ4MjU5LCAxNDgyNjMsIDE0ODI2NywgMTQ4MjcxLCAxNDgyNzUsIAorICAgIDE0ODI3OSwgMTQ4MjgzLCAxNDgyODcsIDE0ODI5MSwgMTQ4Mjk1LCAxNDgyOTksIDE0ODMwMywgMTQ4MzA3LCAxNDgzMTEsIAorICAgIDE0ODMxNSwgMTQ4MzE5LCAxNDgzMjMsIDE0ODMyNywgMTQ4MzMxLCAxNDgzMzUsIDE0ODMzOSwgMTQ4MzQzLCAxNDgzNDcsIAorICAgIDE0ODM1MiwgMTQ4MzU2LCAxNDgzNjAsIDE0ODM2NCwgMTQ4MzY4LCAxNDgzNzIsIDE0ODM3NiwgMTQ4MzgwLCAxNDgzODQsIAorICAgIDE0ODM4OCwgMTQ4MzkyLCAxNDgzOTYsIDE0ODQwMCwgMTQ4NDA0LCAxNDg0MDgsIDE0ODQxMiwgMTQ4NDE2LCAxNDg0MjAsIAorICAgIDE0ODQyNCwgMTQ4NDI4LCAxNDg0MzIsIDE0ODQzNiwgMTQ4NDQwLCAxNDg0NDQsIDE0ODQ0OCwgMTQ4NDUyLCAxNDg0NTYsIAorICAgIDE0ODQ2MCwgMTQ4NDY0LCAxNDg0NjgsIDE0ODQ3MiwgMTQ4NDc2LCAxNDg0ODAsIDE0ODQ4NCwgMTQ4NDg4LCAxNDg0OTIsIAorICAgIDE0ODQ5NiwgMTQ4NTAwLCAxNDg1MDQsIDE0ODUwOCwgMTQ4NTEyLCAxNDg1MTYsIDE0ODUyMCwgMTQ4NTI0LCAxNDg1MjgsIAorICAgIDE0ODUzMiwgMTQ4NTM2LCAxNDg1NDAsIDE0ODU0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQ4NTQ4LCAxNDg1NTQsIDE0ODU2MywgMTQ4NTcxLCAxNDg1NzksIDE0ODU4OCwgMTQ4NTk3LCAxNDg2MDYsIDE0ODYxNSwgCisgICAgMTQ4NjI0LCAxNDg2MzMsIDE0ODY0MiwgMTQ4NjUxLCAxNDg2NjAsIDE0ODY2OSwgMCwgMCwgMTQ4Njc4LCAxNDg2ODcsIAorICAgIDE0ODY5NSwgMTQ4NzAzLCAxNDg3MTIsIDE0ODcyMSwgMTQ4NzMwLCAxNDg3MzksIDE0ODc0OCwgMTQ4NzU3LCAxNDg3NjYsIAorICAgIDE0ODc3NSwgMTQ4Nzg0LCAxNDg3OTMsIDE0ODgwMiwgMCwgMTQ4ODEwLCAxNDg4MTksIDE0ODgyNywgMTQ4ODM1LCAKKyAgICAxNDg4NDQsIDE0ODg1MywgMTQ4ODYyLCAxNDg4NzEsIDE0ODg4MCwgMTQ4ODg5LCAxNDg4OTgsIDE0ODkwNywgMTQ4OTE2LCAKKyAgICAxNDg5MjUsIDE0ODkzNCwgMCwgMTQ4OTQxLCAxNDg5NTAsIDE0ODk1OCwgMTQ4OTY2LCAxNDg5NzUsIDE0ODk4NCwgCisgICAgMTQ4OTkzLCAxNDkwMDIsIDE0OTAxMSwgMTQ5MDIwLCAxNDkwMjksIDE0OTAzOCwgMTQ5MDQ3LCAxNDkwNTYsIDE0OTA2NSwgCisgICAgMTQ5MDcyLCAxNDkwNzgsIDE0OTA4NCwgMTQ5MDkwLCAxNDkwOTYsIDE0OTEwMiwgMTQ5MTA4LCAxNDkxMTQsIDE0OTEyMCwgCisgICAgMTQ5MTI2LCAxNDkxMzIsIDE0OTEzOCwgMTQ5MTQ0LCAxNDkxNTAsIDE0OTE1NiwgMTQ5MTYyLCAxNDkxNjgsIDE0OTE3NCwgCisgICAgMTQ5MTgwLCAxNDkxODYsIDE0OTE5MiwgMTQ5MTk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDkyMDQsIAorICAgIDE0OTIxMSwgMTQ5MjE2LCAxNDkyMjAsIDE0OTIyNCwgMTQ5MjI4LCAxNDkyMzMsIDE0OTIzOCwgMTQ5MjQzLCAxNDkyNDgsIAorICAgIDE0OTI1MywgMTQ5MjU4LCAxNDkyNjUsIDAsIDAsIDAsIDE0OTI3MywgMTQ5Mjc4LCAxNDkyODQsIDE0OTI5MCwgMTQ5Mjk2LCAKKyAgICAxNDkzMDEsIDE0OTMwNywgMTQ5MzEzLCAxNDkzMTksIDE0OTMyNCwgMTQ5MzMwLCAxNDkzMzYsIDE0OTM0MSwgMTQ5MzQ3LCAKKyAgICAxNDkzNTMsIDE0OTM1OCwgMTQ5MzY0LCAxNDkzNzAsIDE0OTM3NSwgMTQ5MzgwLCAxNDkzODYsIDE0OTM5MSwgMTQ5Mzk3LCAKKyAgICAxNDk0MDMsIDE0OTQwOSwgMTQ5NDE1LCAxNDk0MjEsIDE0OTQzMSwgMTQ5NDM4LCAxNDk0NDQsIDE0OTQ0NywgMCwgCisgICAgMTQ5NDUwLCAxNDk0NTUsIDE0OTQ2MSwgMTQ5NDY3LCAxNDk0NzMsIDE0OTQ3OCwgMTQ5NDg0LCAxNDk0OTAsIDE0OTQ5NiwgCisgICAgMTQ5NTAxLCAxNDk1MDcsIDE0OTUxMywgMTQ5NTE4LCAxNDk1MjQsIDE0OTUzMCwgMTQ5NTM1LCAxNDk1NDEsIDE0OTU0NywgCisgICAgMTQ5NTUyLCAxNDk1NTcsIDE0OTU2MywgMTQ5NTY4LCAxNDk1NzQsIDE0OTU4MCwgMTQ5NTg2LCAxNDk1OTIsIDE0OTU5OCwgCisgICAgMTQ5NjAxLCAxNDk2MDQsIDE0OTYwNywgMTQ5NjEwLCAxNDk2MTMsIDE0OTYxNiwgMTQ5NjIyLCAxNDk2MjksIDE0OTYzNiwgCisgICAgMTQ5NjQzLCAxNDk2NDksIDE0OTY1NiwgMTQ5NjYzLCAxNDk2NzAsIDE0OTY3NiwgMTQ5NjgzLCAxNDk2OTAsIDE0OTY5NiwgCisgICAgMTQ5NzAzLCAxNDk3MTAsIDE0OTcxNiwgMTQ5NzIzLCAxNDk3MzAsIDE0OTczNiwgMTQ5NzQyLCAxNDk3NDksIDE0OTc1NSwgCisgICAgMTQ5NzYyLCAxNDk3NjksIDE0OTc3NiwgMTQ5NzgzLCAxNDk3OTAsIDE0OTc5NSwgMCwgMCwgMCwgMCwgMTQ5ODAwLCAKKyAgICAxNDk4MDYsIDE0OTgxMywgMTQ5ODIwLCAxNDk4MjcsIDE0OTgzMywgMTQ5ODQwLCAxNDk4NDcsIDE0OTg1NCwgMTQ5ODYwLCAKKyAgICAxNDk4NjcsIDE0OTg3NCwgMTQ5ODgwLCAxNDk4ODcsIDE0OTg5NCwgMTQ5OTAwLCAxNDk5MDcsIDE0OTkxNCwgMTQ5OTIwLCAKKyAgICAxNDk5MjYsIDE0OTkzMywgMTQ5OTM5LCAxNDk5NDYsIDE0OTk1MywgMTQ5OTYwLCAxNDk5NjcsIDE0OTk3NCwgMTQ5OTgzLCAKKyAgICAxNDk5ODcsIDE0OTk5MCwgMTQ5OTk0LCAxNDk5OTgsIDE1MDAwMiwgMTUwMDA1LCAxNTAwMDgsIDE1MDAxMSwgMTUwMDE0LCAKKyAgICAxNTAwMTcsIDE1MDAyMCwgMTUwMDIzLCAxNTAwMjYsIDE1MDAyOSwgMTUwMDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTAwMzgsIDE1MDA0NSwgCisgICAgMTUwMDUzLCAxNTAwNjEsIDE1MDA2OSwgMTUwMDc2LCAxNTAwODQsIDE1MDA5MiwgMTUwMTAwLCAxNTAxMDcsIDE1MDExNSwgCisgICAgMTUwMTIzLCAxNTAxMzAsIDE1MDEzOCwgMTUwMTQ2LCAxNTAxNTMsIDE1MDE2MSwgMTUwMTY5LCAxNTAxNzYsIDE1MDE4MywgCisgICAgMTUwMTkxLCAxNTAxOTgsIDE1MDIwNiwgMTUwMjE0LCAxNTAyMjIsIDE1MDIzMCwgMTUwMjM4LCAxNTAyNDIsIDE1MDI0NiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwMjUwLCAxNTAyNTYsIDE1MDI2MiwgMTUwMjY4LCAKKyAgICAxNTAyNzIsIDE1MDI3OCwgMTUwMjg0LCAxNTAyOTAsIDE1MDI5NiwgMTUwMzAyLCAxNTAzMDgsIDE1MDMxNCwgMTUwMzIwLCAKKyAgICAxNTAzMjYsIDE1MDMzMiwgMTUwMzM4LCAxNTAzNDQsIDE1MDM1MCwgMTUwMzU2LCAxNTAzNjIsIDE1MDM2OCwgMTUwMzc0LCAKKyAgICAxNTAzODAsIDE1MDM4NiwgMTUwMzkyLCAxNTAzOTgsIDE1MDQwNCwgMTUwNDEwLCAxNTA0MTYsIDE1MDQyMiwgMTUwNDI4LCAKKyAgICAxNTA0MzQsIDE1MDQ0MCwgMTUwNDQ2LCAxNTA0NTIsIDE1MDQ1OCwgMTUwNDY0LCAxNTA0NzAsIDE1MDQ3NiwgMTUwNDgyLCAKKyAgICAxNTA0ODgsIDE1MDQ5NCwgMTUwNTAwLCAwLCAwLCAwLCAwLCAwLCAxNTA1MDYsIDE1MDUxNywgMTUwNTI4LCAxNTA1MzksIAorICAgIDE1MDU1MCwgMTUwNTYxLCAxNTA1NzIsIDE1MDU4MywgMTUwNTk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTA2MDUsIAorICAgIDE1MDYwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwNjEzLCAxNTA2MTUsIDE1MDYxNywgMTUwNjIxLCAxNTA2MjYsIDE1MDYzMSwgCisgICAgMTUwNjMzLCAxNTA2MzksIDE1MDY0NCwgMTUwNjQ2LCAxNTA2NTIsIDE1MDY1NiwgMTUwNjU4LCAxNTA2NjIsIDE1MDY2OCwgCisgICAgMTUwNjc0LCAxNTA2ODAsIDE1MDY4NSwgMTUwNjkwLCAxNTA2OTcsIDE1MDcwNCwgMTUwNzExLCAxNTA3MTYsIDE1MDcyMywgCisgICAgMTUwNzMwLCAxNTA3MzcsIDE1MDc0MSwgMTUwNzQ4LCAxNTA3NTcsIDE1MDc2NiwgMTUwNzczLCAxNTA3NzgsIDE1MDc4MiwgCisgICAgMTUwNzg2LCAxNTA3ODgsIDE1MDc5MSwgMTUwNzk0LCAxNTA4MDEsIDE1MDgwOCwgMTUwODE4LCAxNTA4MjMsIDE1MDgyOCwgCisgICAgMTUwODMzLCAxNTA4MzgsIDE1MDg0MCwgMTUwODQ2LCAxNTA4NTAsIDE1MDg1MiwgMTUwODU0LCAxNTA4NTYsIDE1MDg1OCwgCisgICAgMTUwODYyLCAxNTA4NjYsIDE1MDg3MCwgMTUwODcyLCAxNTA4NzYsIDE1MDg3OCwgMTUwODgyLCAxNTA4ODQsIDE1MDg4NiwgCisgICAgMTUwODg4LCAxNTA4OTAsIDE1MDg5NSwgMTUwOTAwLCAxNTA5MDIsIDE1MDkwOCwgMTUwOTEyLCAxNTA5MTYsIDE1MDkyNCwgCisgICAgMTUwOTI2LCAxNTA5MjgsIDE1MDkzMCwgMTUwOTMyLCAxNTA5MzQsIDE1MDkzNiwgMTUwOTM4LCAxNTA5NDAsIDE1MDk0MiwgCisgICAgMTUwOTQ0LCAxNTA5NDgsIDE1MDk1MiwgMTUwOTU0LCAxNTA5NTYsIDE1MDk1OCwgMTUwOTYwLCAxNTA5NjIsIDE1MDk2NywgCisgICAgMTUwOTczLCAxNTA5NzcsIDE1MDk4MSwgMTUwOTg1LCAxNTA5ODksIDE1MDk5NCwgMTUwOTk4LCAxNTEwMDAsIDE1MTAwMiwgCisgICAgMTUxMDA2LCAxNTEwMTIsIDE1MTAxNCwgMTUxMDE2LCAxNTEwMTgsIDE1MTAyMiwgMTUxMDMxLCAxNTEwMzcsIDE1MTA0MSwgCisgICAgMTUxMDQ1LCAxNTEwNDcsIDE1MTA0OSwgMTUxMDUyLCAxNTEwNTQsIDE1MTA1NiwgMTUxMDU4LCAxNTEwNjIsIDE1MTA2NCwgCisgICAgMTUxMDY4LCAxNTEwNzMsIDE1MTA3NSwgMTUxMDgwLCAxNTEwODYsIDE1MTA5MywgMTUxMDk3LCAxNTExMDEsIDE1MTEwNSwgCisgICAgMTUxMTA5LCAxNTExMTUsIDE1MTExOSwgMTUxMTI3LCAxNTExMzQsIDE1MTEzNiwgMTUxMTM4LCAxNTExNDIsIDE1MTE0NiwgCisgICAgMTUxMTQ4LCAxNTExNTIsIDE1MTE1NiwgMTUxMTU4LCAxNTExNjIsIDE1MTE2NCwgMTUxMTY4LCAxNTExNzIsIDE1MTE3NiwgCisgICAgMTUxMTgwLCAxNTExODQsIDE1MTE4OCwgMTUxMTkyLCAxNTExOTYsIDE1MTIwMiwgMTUxMjA2LCAxNTEyMTAsIDE1MTIyMSwgCisgICAgMTUxMjI2LCAxNTEyMzAsIDE1MTIzNCwgMTUxMjQwLCAxNTEyNDQsIDE1MTI0OCwgMTUxMjUyLCAxNTEyNTksIDE1MTI2NiwgCisgICAgMTUxMjcwLCAxNTEyNzQsIDE1MTI3OCwgMTUxMjgyLCAxNTEyODYsIDE1MTI5MywgMTUxMjk1LCAxNTEyOTksIDE1MTMwMSwgCisgICAgMTUxMzAzLCAxNTEzMDcsIDE1MTMxMSwgMTUxMzE1LCAxNTEzMTcsIDE1MTMyMSwgMTUxMzI1LCAxNTEzMjksIDE1MTMzMywgCisgICAgMTUxMzM3LCAxNTEzMzksIDE1MTM0MywgMTUxMzQ1LCAxNTEzNTEsIDE1MTM1NCwgMTUxMzU5LCAxNTEzNjEsIDE1MTM2MywgCisgICAgMTUxMzY2LCAxNTEzNjgsIDE1MTM3MCwgMTUxMzczLCAxNTEzODAsIDE1MTM4NywgMTUxMzk0LCAxNTEzOTksIDE1MTQwMywgCisgICAgMTUxNDA1LCAxNTE0MDcsIDE1MTQwOSwgMTUxNDEzLCAxNTE0MTUsIDE1MTQxOSwgMTUxNDIzLCAxNTE0MjcsIDE1MTQyOSwgCisgICAgMTUxNDMzLCAxNTE0MzUsIDE1MTQzOSwgMTUxNDQzLCAxNTE0NTAsIDE1MTQ1MiwgMTUxNDYxLCAxNTE0NzAsIDE1MTQ3OSwgCisgICAgMTUxNDg1LCAxNTE0ODcsIDE1MTQ5MiwgMTUxNDk2LCAxNTE1MDAsIDE1MTUwMiwgMTUxNTA4LCAxNTE1MTIsIDE1MTUxNCwgCisgICAgMTUxNTE4LCAxNTE1MjIsIDE1MTUyNCwgMTUxNTI4LCAxNTE1MzMsIDE1MTUzNywgMTUxNTQzLCAxNTE1NDksIDE1MTU1MSwgCisgICAgMTUxNTUzLCAxNTE1NTksIDE1MTU2MSwgMTUxNTY1LCAxNTE1NjksIDE1MTU3MSwgMTUxNTc1LCAxNTE1NzcsIDE1MTU4MSwgCisgICAgMTUxNTg1LCAxNTE1ODksIDE1MTU5MiwgMTUxNTk1LCAxNTE2MDAsIDE1MTYwNSwgMTUxNjA3LCAxNTE2MTAsIDE1MTYxMiwgCisgICAgMTUxNjE5LCAxNTE2MjMsIDE1MTYyNSwgMTUxNjMyLCAxNTE2MzksIDE1MTY0NiwgMTUxNjUzLCAxNTE2NjAsIDE1MTY2MiwgCisgICAgMTUxNjY0LCAxNTE2NjYsIDE1MTY3MCwgMTUxNjcyLCAxNTE2NzQsIDE1MTY3NiwgMTUxNjc4LCAxNTE2ODAsIDE1MTY4MiwgCisgICAgMTUxNjg0LCAxNTE2ODYsIDE1MTY4OCwgMTUxNjkwLCAxNTE2OTIsIDE1MTY5NCwgMTUxNjk2LCAxNTE2OTgsIDE1MTcwMCwgCisgICAgMTUxNzAyLCAxNTE3MDQsIDE1MTcwNiwgMTUxNzA4LCAxNTE3MTAsIDE1MTcxMiwgMTUxNzE0LCAxNTE3MTgsIDE1MTcyMCwgCisgICAgMTUxNzIyLCAxNTE3MjQsIDE1MTcyOCwgMTUxNzMwLCAxNTE3MzQsIDE1MTczNiwgMTUxNzM4LCAxNTE3NDIsIDE1MTc0NiwgCisgICAgMTUxNzUyLCAxNTE3NTQsIDE1MTc1NiwgMTUxNzU4LCAxNTE3NjAsIDE1MTc2NCwgMTUxNzY4LCAxNTE3NzAsIDE1MTc3NCwgCisgICAgMTUxNzc4LCAxNTE3ODIsIDE1MTc4NiwgMTUxNzkwLCAxNTE3OTQsIDE1MTc5OCwgMTUxODAyLCAxNTE4MDYsIDE1MTgxMCwgCisgICAgMTUxODE0LCAxNTE4MTgsIDE1MTgyMiwgMTUxODI2LCAxNTE4MzAsIDE1MTgzNCwgMTUxODM4LCAxNTE4NDIsIDE1MTg0NCwgCisgICAgMTUxODQ2LCAxNTE4NDgsIDE1MTg1MCwgMTUxODUyLCAxNTE4NTQsIDE1MTg1NiwgMTUxODY0LCAxNTE4NzIsIDE1MTg4MCwgCisgICAgMTUxODg4LCAxNTE4OTMsIDE1MTg5OCwgMTUxOTAzLCAxNTE5MDcsIDE1MTkxMSwgMTUxOTE2LCAxNTE5MjAsIDE1MTkyMiwgCisgICAgMTUxOTI2LCAxNTE5MjgsIDE1MTkzMCwgMTUxOTMyLCAxNTE5MzQsIDE1MTkzNiwgMTUxOTM4LCAxNTE5NDAsIDE1MTk0NCwgCisgICAgMTUxOTQ2LCAxNTE5NDgsIDE1MTk1MCwgMTUxOTU0LCAxNTE5NTgsIDE1MTk2MiwgMTUxOTY2LCAxNTE5NzAsIDE1MTk3MiwgCisgICAgMTUxOTc4LCAxNTE5ODQsIDE1MTk4NiwgMTUxOTg4LCAxNTE5OTAsIDE1MTk5MiwgMTUxOTk0LCAxNTIwMDMsIDE1MjAxMCwgCisgICAgMTUyMDE3LCAxNTIwMjEsIDE1MjAyOCwgMTUyMDMzLCAxNTIwNDAsIDE1MjA0OSwgMTUyMDU0LCAxNTIwNTgsIDE1MjA2MiwgCisgICAgMTUyMDY0LCAxNTIwNjgsIDE1MjA3MCwgMTUyMDc0LCAxNTIwNzgsIDE1MjA4MCwgMTUyMDg0LCAxNTIwODgsIDE1MjA5MiwgCisgICAgMTUyMDk0LCAxNTIwOTYsIDE1MjEwMiwgMTUyMTA0LCAxNTIxMDYsIDE1MjEwOCwgMTUyMTEyLCAxNTIxMTYsIDE1MjExOCwgCisgICAgMTUyMTIyLCAxNTIxMjQsIDE1MjEyNiwgMTUyMTI5LCAxNTIxMzMsIDE1MjEzNSwgMTUyMTM5LCAxNTIxNDEsIDE1MjE0MywgCisgICAgMTUyMTQ4LCAxNTIxNTAsIDE1MjE1NCwgMTUyMTU4LCAxNTIxNjEsIDE1MjE2NSwgMTUyMTY5LCAxNTIxNzMsIDE1MjE3NywgCisgICAgMTUyMTgxLCAxNTIxODUsIDE1MjE4OSwgMTUyMTk0LCAxNTIxOTgsIDE1MjIwMiwgMTUyMjExLCAxNTIyMTYsIDE1MjIxOSwgCisgICAgMTUyMjIxLCAxNTIyMjQsIDE1MjIyNywgMTUyMjMyLCAxNTIyMzQsIDE1MjIzNywgMTUyMjQyLCAxNTIyNDYsIDE1MjI0OSwgCisgICAgMTUyMjUzLCAxNTIyNTcsIDE1MjI2MCwgMTUyMjY1LCAxNTIyNjksIDE1MjI3MywgMTUyMjc3LCAxNTIyODEsIDE1MjI4NywgCisgICAgMTUyMjkzLCAxNTIyOTksIDE1MjMwNSwgMTUyMzEwLCAxNTIzMjAsIDE1MjMyMiwgMTUyMzI2LCAxNTIzMjgsIDE1MjMzMCwgCisgICAgMTUyMzM0LCAxNTIzMzgsIDE1MjM0MCwgMTUyMzQ0LCAxNTIzNDksIDE1MjM1NCwgMTUyMzYwLCAxNTIzNjIsIDE1MjM2NiwgCisgICAgMTUyMzcwLCAxNTIzNzYsIDE1MjM4MiwgMTUyMzg2LCAxNTIzODgsIDE1MjM5MCwgMTUyMzk0LCAxNTIzOTYsIDE1MjQwMCwgCisgICAgMTUyNDA0LCAxNTI0MDgsIDE1MjQxMCwgMTUyNDEyLCAxNTI0MTksIDE1MjQyMywgMTUyNDI2LCAxNTI0MzAsIDE1MjQzNCwgCisgICAgMTUyNDM4LCAxNTI0NDAsIDE1MjQ0NCwgMTUyNDQ2LCAxNTI0NDgsIDE1MjQ1MiwgMTUyNDU0LCAxNTI0NTgsIDE1MjQ2MiwgCisgICAgMTUyNDY4LCAxNTI0NzIsIDE1MjQ3NiwgMTUyNDgwLCAxNTI0ODIsIDE1MjQ4NSwgMTUyNDg5LCAxNTI0OTUsIDE1MjUwNCwgCisgICAgMTUyNTEzLCAxNTI1MjEsIDE1MjUyOSwgMTUyNTMxLCAxNTI1MzUsIDE1MjUzNywgMTUyNTQxLCAxNTI1NTIsIDE1MjU1NiwgCisgICAgMTUyNTYyLCAxNTI1NjgsIDE1MjU3MywgMTUyNTc1LCAxNTI1ODAsIDE1MjU4NCwgMTUyNTg2LCAxNTI1ODgsIDE1MjU5MCwgCisgICAgMTUyNTk0LCAxNTI1OTgsIDE1MjYwMiwgMTUyNjA3LCAxNTI2MTcsIDE1MjYzMiwgMTUyNjQyLCAxNTI2NTIsIDE1MjY1NiwgCisgICAgMTUyNjYwLCAxNTI2NjYsIDE1MjY2OCwgMTUyNjc2LCAxNTI2ODQsIDE1MjY4NiwgMTUyNjkwLCAxNTI2OTYsIDE1MjcwMiwgCisgICAgMTUyNzA5LCAxNTI3MTYsIDE1MjcxOCwgMTUyNzIwLCAxNTI3MjMsIDE1MjcyNSwgMTUyNzMxLCAxNTI3MzMsIDE1MjczNiwgCisgICAgMTUyNzQwLCAxNTI3NDYsIDE1Mjc1MiwgMTUyNzYzLCAxNTI3NjksIDE1Mjc3NSwgMTUyNzgzLCAxNTI3ODcsIDE1Mjc5NSwgCisgICAgMTUyODAzLCAxNTI4MDksIDE1MjgxNSwgMTUyODIyLCAxNTI4MjQsIDE1MjgyOCwgMTUyODMwLCAxNTI4MzIsIDE1MjgzNywgCisgICAgMTUyODM5LCAxNTI4NDEsIDE1Mjg0MywgMTUyODQ1LCAxNTI4NDksIDE1Mjg1OSwgMTUyODY1LCAxNTI4NjksIDE1Mjg3MywgCisgICAgMTUyODc3LCAxNTI4ODMsIDE1Mjg4OSwgMTUyODk1LCAxNTI5MDEsIDE1MjkwNiwgMTUyOTExLCAxNTI5MTcsIDE1MjkyMywgCisgICAgMTUyOTMwLCAxNTI5MzcsIDE1Mjk0NSwgMTUyOTUzLCAxNTI5NTgsIDE1Mjk2NiwgMTUyOTcwLCAxNTI5NzksIDE1Mjk4OCwgCisgICAgMTUyOTk0LCAxNTI5OTgsIDE1MzAwMiwgMTUzMDA2LCAxNTMwMDksIDE1MzAxNCwgMTUzMDE2LCAxNTMwMTgsIDE1MzAyMCwgCisgICAgMTUzMDI3LCAxNTMwMzIsIDE1MzAzOSwgMTUzMDQ2LCAxNTMwNTMsIDE1MzA2MSwgMTUzMDY5LCAxNTMwNzcsIDE1MzA4NSwgCisgICAgMTUzMDkzLCAxNTMxMDEsIDE1MzEwOSwgMTUzMTE3LCAxNTMxMjUsIDE1MzEzMSwgMTUzMTM3LCAxNTMxNDMsIDE1MzE0OSwgCisgICAgMTUzMTU1LCAxNTMxNjEsIDE1MzE2NywgMTUzMTczLCAxNTMxNzksIDE1MzE4NSwgMTUzMTkxLCAxNTMxOTcsIDE1MzIwMCwgCisgICAgMTUzMjA5LCAxNTMyMTgsIDE1MzIyMCwgMTUzMjI3LCAxNTMyMzEsIDE1MzIzMywgMTUzMjM1LCAxNTMyMzksIDE1MzI0NSwgCisgICAgMTUzMjQ5LCAxNTMyNTEsIDE1MzI2MSwgMTUzMjY3LCAxNTMyNzEsIDE1MzI3MywgMTUzMjc3LCAwLCAxNTMyNzksIAorICAgIDE1MzI4NiwgMTUzMjkzLCAxNTMzMDAsIDE1MzMwNSwgMTUzMzEwLCAxNTMzMTksIDE1MzMyNSwgMTUzMzMwLCAxNTMzMzQsIAorICAgIDE1MzMzOSwgMTUzMzQzLCAxNTMzNTAsIDE1MzM1NCwgMTUzMzU3LCAxNTMzNjIsIDE1MzM2OSwgMTUzMzc2LCAxNTMzODEsIAorICAgIDE1MzM4NiwgMTUzMzkxLCAxNTMzOTgsIDE1MzQwNywgMTUzNDE4LCAxNTM0MjQsIDE1MzQzMCwgMTUzNDM2LCAxNTM0NDYsIAorICAgIDE1MzQ2MSwgMTUzNDcwLCAxNTM0NzgsIDE1MzQ4NiwgMTUzNDk0LCAxNTM1MDIsIDE1MzUxMCwgMTUzNTE4LCAxNTM1MjYsIAorICAgIDE1MzUzNCwgMTUzNTQyLCAxNTM1NTAsIDE1MzU1OCwgMCwgMTUzNTY2LCAxNTM1NzAsIDE1MzU3NSwgMTUzNTgwLCAKKyAgICAxNTM1ODIsIDE1MzU4NiwgMTUzNTk1LCAxNTM2MDQsIDE1MzYxMiwgMTUzNjE2LCAxNTM2MjAsIDE1MzYyNSwgMTUzNjMwLCAKKyAgICAxNTM2MzUsIDE1MzYzNywgMTUzNjQyLCAxNTM2NDYsIDE1MzY0OCwgMTUzNjUyLCAxNTM2NTYsIDE1MzY2MiwgMTUzNjY3LCAKKyAgICAxNTM2NzUsIDE1MzY4MCwgMTUzNjg1LCAxNTM2OTAsIDE1MzY5NywgMTUzNzAwLCAxNTM3MDIsIDE1MzcwNSwgMTUzNzEwLCAKKyAgICAxNTM3MTYsIDE1MzcyMCwgMTUzNzI0LCAxNTM3MzAsIDE1MzczNiwgMTUzNzM4LCAxNTM3NDIsIDE1Mzc0NiwgMTUzNzUwLCAKKyAgICAxNTM3NTQsIDE1Mzc1OCwgMTUzNzYwLCAxNTM3NjIsIDE1Mzc2NCwgMTUzNzY2LCAxNTM3NzIsIDE1Mzc3OCwgMTUzNzgyLCAKKyAgICAxNTM3ODQsIDE1Mzc4NiwgMTUzNzg4LCAxNTM3OTcsIDE1MzgwMSwgMTUzODA4LCAxNTM4MTUsIDE1MzgxNywgMTUzODIwLCAKKyAgICAxNTM4MjQsIDE1MzgzMCwgMTUzODM0LCAxNTM4MzgsIDE1Mzg0MCwgMTUzODQ4LCAxNTM4NTIsIDE1Mzg1NiwgMTUzODYxLCAKKyAgICAxNTM4NjYsIDE1Mzg3MSwgMTUzODc2LCAxNTM4ODEsIDE1Mzg4NiwgMTUzODkxLCAxNTM4OTYsIDE1MzkwMSwgMTUzOTA2LCAKKyAgICAxNTM5MTAsIDE1MzkxNiwgMTUzOTIwLCAxNTM5MjYsIDE1MzkzMSwgMTUzOTM4LCAxNTM5NDQsIDE1Mzk1MiwgMTUzOTU2LCAKKyAgICAxNTM5NjMsIDE1Mzk2NywgMTUzOTcxLCAxNTM5NzUsIDE1Mzk4MCwgMTUzOTg1LCAxNTM5ODcsIDE1Mzk5MSwgMTU0MDAwLCAKKyAgICAxNTQwMDgsIDE1NDAxNiwgMTU0MDI5LCAxNTQwNDIsIDE1NDA1NSwgMTU0MDYyLCAxNTQwNjksIDE1NDA3MywgMTU0MDgyLCAKKyAgICAxNTQwOTAsIDE1NDA5NCwgMTU0MTAzLCAxNTQxMTAsIDE1NDExNCwgMTU0MTE4LCAxNTQxMjIsIDE1NDEyNiwgMTU0MTMzLCAKKyAgICAxNTQxMzcsIDE1NDE0MSwgMTU0MTQ1LCAxNTQxNDksIDE1NDE1NiwgMTU0MTY1LCAxNTQxNzQsIDE1NDE4MSwgMTU0MTkzLCAKKyAgICAxNTQyMDUsIDE1NDIwOSwgMTU0MjEzLCAxNTQyMTcsIDE1NDIyMSwgMTU0MjI1LCAxNTQyMjksIDE1NDIzNywgMTU0MjQ1LCAKKyAgICAxNTQyNTMsIDE1NDI1NywgMTU0MjYxLCAxNTQyNjUsIDE1NDI2OSwgMTU0MjczLCAxNTQyNzcsIDE1NDI4MywgMTU0Mjg5LCAKKyAgICAxNTQyOTMsIDE1NDMwNCwgMTU0MzEyLCAxNTQzMTYsIDE1NDMyMCwgMTU0MzI0LCAxNTQzMjgsIDE1NDMzNCwgMTU0MzQxLCAKKyAgICAxNTQzNTIsIDE1NDM2MiwgMTU0MzcyLCAxNTQzODMsIDE1NDM5MiwgMTU0NDAzLCAxNTQ0MDksIDE1NDQxNSwgMTU0NDIxLCAKKyAgICAxNTQ0MjcsIDE1NDQzMywgMTU0NDM3LCAxNTQ0NDQsIDE1NDQ1MywgMTU0NDYwLCAxNTQ0NjYsIDE1NDQ3MCwgMTU0NDc0LCAKKyAgICAxNTQ0NzgsIDE1NDQ4NywgMTU0NDk5LCAxNTQ1MDMsIDE1NDUxMCwgMTU0NTE3LCAxNTQ1MjQsIDE1NDUzMiwgMTU0NTM5LCAKKyAgICAxNTQ1NDcsIDE1NDU1NiwgMTU0NTY2LCAxNTQ1NzUsIDE1NDU4NSwgMTU0NTk0LCAxNTQ2MDQsIDE1NDYxMywgMTU0NjIzLCAKKyAgICAxNTQ2MzMsIDE1NDY0NCwgMTU0NjU0LCAxNTQ2NjUsIDE1NDY3MiwgMTU0NjgwLCAxNTQ2ODcsIDE1NDY5NSwgMTU0NzAzLCAKKyAgICAxNTQ3MTIsIDE1NDcyMCwgMTU0NzI5LCAxNTQ3MzYsIDE1NDc0OCwgMTU0NzU1LCAxNTQ3NjcsIDE1NDc3MCwgMTU0NzczLCAKKyAgICAxNTQ3NzYsIDE1NDc3OSwgMTU0Nzg1LCAxNTQ3OTIsIDE1NDc5OCwgMTU0ODA1LCAxNTQ4MTAsIDE1NDgxNiwgMTU0ODI4LCAKKyAgICAxNTQ4MzgsIDE1NDg0OSwgMTU0ODU0LCAxNTQ4NTksIDE1NDg2NSwgMTU0ODcwLCAxNTQ4NzcsIDE1NDg4MSwgMTU0ODg3LCAKKyAgICAxNTQ4ODksIDE1NDg5MSwgMTU0ODk1LCAxNTQ4OTksIDE1NDkwMywgMTU0OTEyLCAxNTQ5MTQsIDE1NDkxNiwgMTU0OTE5LCAKKyAgICAxNTQ5MjEsIDE1NDkyMywgMTU0OTI3LCAxNTQ5MjksIDE1NDkzMywgMTU0OTM1LCAxNTQ5MzksIDE1NDk0MSwgMTU0OTQzLCAKKyAgICAxNTQ5NDcsIDE1NDk1MSwgMTU0OTU3LCAxNTQ5NTksIDE1NDk2MywgMTU0OTY1LCAxNTQ5NjksIDE1NDk3MywgMTU0OTc3LCAKKyAgICAxNTQ5ODEsIDE1NDk4MywgMTU0OTg1LCAxNTQ5ODksIDE1NDk5MywgMTU0OTk3LCAxNTUwMDEsIDE1NTAwMywgMTU1MDA1LCAKKyAgICAxNTUwMDcsIDE1NTAxMywgMTU1MDE4LCAxNTUwMjEsIDE1NTAyOSwgMTU1MDM3LCAxNTUwMzksIDE1NTA0NCwgMTU1MDQ3LCAKKyAgICAxNTUwNTIsIDE1NTA2MywgMTU1MDcwLCAxNTUwNzUsIDE1NTA4MCwgMTU1MDgyLCAxNTUwODYsIDE1NTA4OCwgMTU1MDkyLCAKKyAgICAxNTUwOTQsIDE1NTA5OCwgMTU1MTAyLCAxNTUxMDUsIDE1NTEwOCwgMTU1MTEwLCAxNTUxMTMsIDE1NTExNSwgMTU1MTE5LCAKKyAgICAxNTUxMjEsIDE1NTEyMywgMTU1MTI1LCAxNTUxMjksIDE1NTEzMSwgMTU1MTM1LCAxNTUxMzgsIDE1NTE0NSwgMTU1MTQ4LCAKKyAgICAxNTUxNTMsIDE1NTE1NiwgMTU1MTU5LCAxNTUxNjQsIDE1NTE2OCwgMTU1MTcyLCAxNTUxNzYsIDE1NTE3OCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU1MTgzLCAxNTUxODgsIDE1NTE5MCwgMTU1MTk0LCAKKyAgICAxNTUxOTYsIDE1NTIwMCwgMTU1MjA0LCAxNTUyMTAsIDE1NTIxNCwgMTU1MjE5LCAxNTUyMjIsIDE1NTIyNiwgMTU1MjMwLCAKKyAgICAwLCAwLCAwLCAxNTUyMzQsIDE1NTIzNiwgMTU1MjQyLCAxNTUyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE1NTI1MCwgMTU1MjU1LCAxNTUyNjAsIDE1NTI2NSwgMTU1MjcwLCAxNTUyNzUsIDE1NTI4MCwgMTU1Mjg3LCAKKyAgICAxNTUyOTQsIDE1NTMwMSwgMTU1MzA4LCAxNTUzMTMsIDE1NTMxOCwgMTU1MzIzLCAxNTUzMjgsIDE1NTMzNSwgMTU1MzQxLCAKKyAgICAxNTUzNDgsIDE1NTM1NSwgMTU1MzYyLCAxNTUzNjcsIDE1NTM3MiwgMTU1Mzc3LCAxNTUzODIsIDE1NTM4NywgMTU1Mzk0LCAKKyAgICAxNTU0MDEsIDE1NTQwNiwgMTU1NDExLCAxNTU0MTgsIDE1NTQyNSwgMTU1NDMzLCAxNTU0NDEsIDE1NTQ0OCwgMTU1NDU1LCAKKyAgICAxNTU0NjMsIDE1NTQ3MSwgMTU1NDc5LCAxNTU0ODYsIDE1NTQ5NiwgMTU1NTA3LCAxNTU1MTIsIDE1NTUxOSwgMTU1NTI2LCAKKyAgICAxNTU1MzMsIDE1NTU0MSwgMTU1NTQ5LCAxNTU1NjAsIDE1NTU2OCwgMTU1NTc2LCAxNTU1ODQsIDE1NTU4OSwgMTU1NTk0LCAKKyAgICAxNTU1OTksIDE1NTYwNCwgMTU1NjA5LCAxNTU2MTQsIDE1NTYxOSwgMTU1NjI0LCAxNTU2MjksIDE1NTYzNCwgMTU1NjM5LCAKKyAgICAxNTU2NDQsIDE1NTY1MSwgMTU1NjU2LCAxNTU2NjEsIDE1NTY2OCwgMTU1NjczLCAxNTU2NzgsIDE1NTY4MywgMTU1Njg4LCAKKyAgICAxNTU2OTMsIDE1NTY5OCwgMTU1NzAzLCAxNTU3MDgsIDE1NTcxMywgMTU1NzE4LCAxNTU3MjMsIDE1NTcyOCwgMTU1NzM1LCAKKyAgICAxNTU3NDMsIDE1NTc0OCwgMTU1NzUzLCAxNTU3NjAsIDE1NTc2NSwgMTU1NzcwLCAxNTU3NzUsIDE1NTc4MiwgMTU1Nzg3LCAKKyAgICAxNTU3OTQsIDE1NTc5OSwgMTU1ODA2LCAxNTU4MTEsIDE1NTgyMCwgMTU1ODI5LCAxNTU4MzQsIDE1NTgzOSwgMTU1ODQ0LCAKKyAgICAxNTU4NDksIDE1NTg1NCwgMTU1ODU5LCAxNTU4NjQsIDE1NTg2OSwgMTU1ODc0LCAxNTU4NzksIDE1NTg4NCwgMTU1ODg5LCAKKyAgICAxNTU4OTQsIDE1NTkwMiwgMTU1OTEwLCAxNTU5MTUsIDE1NTkyMCwgMTU1OTI1LCAxNTU5MzAsIDE1NTkzNSwgMTU1OTQxLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTU5NDcsIDE1NTk1NSwgMTU1OTYzLCAxNTU5NzEsIAorICAgIDE1NTk3OSwgMTU1OTg1LCAxNTU5OTEsIDE1NTk5NSwgMTU1OTk5LCAxNTYwMDUsIDE1NjAxMSwgMTU2MDIwLCAxNTYwMjQsIAorICAgIDE1NjAyOSwgMTU2MDM1LCAxNTYwMzksIDE1NjA0NCwgMTU2MDQ4LCAxNTYwNTIsIDE1NjA1OCwgMTU2MDY0LCAxNTYwNzQsIAorICAgIDE1NjA4MywgMTU2MDg2LCAxNTYwOTEsIDE1NjA5NywgMTU2MTAzLCAxNTYxMTQsIDE1NjEyNCwgMTU2MTI4LCAxNTYxMzMsIAorICAgIDE1NjEzOSwgMTU2MTQ1LCAxNTYxNTQsIDE1NjE1OSwgMTU2MTYzLCAxNTYxNjgsIDE1NjE3MiwgMTU2MTc4LCAxNTYxODQsIAorICAgIDE1NjE5MCwgMTU2MTk0LCAxNTYxOTcsIDE1NjIwMSwgMTU2MjA0LCAxNTYyMDcsIDE1NjIxMiwgMTU2MjE3LCAxNTYyMjQsIAorICAgIDE1NjIzMiwgMTU2MjM5LCAxNTYyNDYsIDE1NjI1NSwgMTU2MjY0LCAxNTYyNzEsIDE1NjI3OSwgMTU2Mjg2LCAxNTYyOTMsIAorICAgIDE1NjMwMiwgMTU2MzExLCAxNTYzMTgsIDE1NjMyNiwgMTU2MzMzLCAxNTYzNDAsIDE1NjM0OSwgMTU2MzU2LCAxNTYzNjQsIAorICAgIDE1NjM3MCwgMTU2Mzc5LCAxNTYzODcsIDE1NjM5NiwgMTU2NDAzLCAxNTY0MTMsIDE1NjQyNCwgMTU2NDMyLCAxNTY0NDAsIAorICAgIDE1NjQ0OSwgMTU2NDU3LCAxNTY0NjUsIDE1NjQ3NCwgMTU2NDgyLCAxNTY0OTIsIDE1NjUwMSwgMTU2NTA5LCAxNTY1MTcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NjUyNiwgMTU2NTM0LCAKKyAgICAxNTY1NDIsIDE1NjU1MCwgMTU2NTU4LCAxNTY1NjcsIDE1NjU3NiwgMTU2NTg1LCAxNTY1OTQsIDE1NjYwMywgMTU2NjEyLCAKKyAgICAxNTY2MjEsIDAsIDAsIDAsIDAsIDE1NjYzMCwgMTU2NjM4LCAxNTY2NDYsIDE1NjY1NCwgMTU2NjYyLCAxNTY2NjksIAorICAgIDE1NjY3NiwgMTU2NjgzLCAxNTY2OTAsIDE1NjY5OCwgMTU2NzA2LCAxNTY3MTQsIDE1NjcyMiwgMTU2NzMyLCAxNTY3NDIsIAorICAgIDE1Njc1MiwgMTU2NzYyLCAxNTY3NzEsIDE1Njc4MCwgMTU2Nzg5LCAxNTY3OTgsIDE1NjgwNywgMTU2ODE2LCAxNTY4MjUsIAorICAgIDE1NjgzNCwgMTU2ODQyLCAxNTY4NTAsIDE1Njg1OCwgMTU2ODY2LCAxNTY4NzQsIDE1Njg4MiwgMTU2ODkwLCAxNTY4OTgsIAorICAgIDE1NjkwOCwgMTU2OTE4LCAxNTY5MjgsIDE1NjkzOCwgMTU2OTQyLCAxNTY5NDYsIDE1Njk1MCwgMTU2OTU0LCAxNTY5NTcsIAorICAgIDE1Njk2MCwgMTU2OTYzLCAxNTY5NjYsIDE1Njk3MCwgMTU2OTc0LCAxNTY5NzgsIDE1Njk4MiwgMTU2OTg3LCAxNTY5OTIsIAorICAgIDE1Njk5NywgMTU3MDAyLCAxNTcwMDUsIDE1NzAwOCwgMTU3MDExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTcwMTQsIAorICAgIDE1NzAxNywgMTU3MDIwLCAxNTcwMjMsIDE1NzAyNiwgMTU3MDMxLCAxNTcwMzYsIDE1NzA0MiwgMTU3MDQ4LCAxNTcwNTIsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzA1NiwgMTU3MDYyLCAxNTcwNjgsIDE1NzA3NCwgMTU3MDgwLCAxNTcwODgsIDE1NzA5NiwgCisgICAgMTU3MTA1LCAxNTcxMTQsIDE1NzExOSwgMTU3MTI0LCAxNTcxMjksIDE1NzEzNCwgMTU3MTQxLCAxNTcxNDgsIDE1NzE1NiwgCisgICAgMTU3MTY0LCAxNTcxNzEsIDE1NzE3OCwgMTU3MTg1LCAxNTcxOTIsIDE1NzIwMSwgMTU3MjEwLCAxNTcyMjAsIDE1NzIzMCwgCisgICAgMTU3MjM2LCAxNTcyNDIsIDE1NzI0OCwgMTU3MjU0LCAxNTcyNjIsIDE1NzI3MCwgMTU3Mjc5LCAxNTcyODgsIDE1NzI5NiwgCisgICAgMTU3MzA0LCAxNTczMTIsIDE1NzMyMCwgMTU3MzMwLCAxNTczNDAsIDE1NzM1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTU3MzYyLCAxNTczNjcsIDE1NzM3MiwgMTU3Mzc3LCAxNTczODIsIDE1NzM5MSwgMTU3NDAwLCAxNTc0MDksIDE1NzQxOCwgCisgICAgMTU3NDI1LCAxNTc0MzIsIDE1NzQzOSwgMTU3NDQ2LCAxNTc0NTMsIDE1NzQ2MiwgMTU3NDcxLCAxNTc0ODAsIDE1NzQ4NSwgCisgICAgMTU3NDkyLCAxNTc0OTksIDE1NzUwNiwgMTU3NTExLCAxNTc1MTYsIDE1NzUyMSwgMTU3NTI2LCAxNTc1MzMsIDE1NzU0MCwgCisgICAgMTU3NTQ3LCAxNTc1NTQsIDE1NzU2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NTcwLCAxNTc1NzQsIDE1NzU3OCwgMTU3NTgzLCAxNTc1ODcsIAorICAgIDE1NzU5MSwgMTU3NTk2LCAxNTc2MDAsIDE1NzYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NjEwLCAxNTc2MTIsIAorICAgIDE1NzYxNiwgMTU3NjE4LCAxNTc2MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzYyNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NjI4LCAxNTc2MzIsIDE1NzYzNiwgMTU3NjQwLCAKKyAgICAxNTc2NDQsIDE1NzY0OCwgMTU3NjUyLCAxNTc2NTYsIDE1NzY2MCwgMTU3NjY0LCAxNTc2NjgsIDE1NzY3MiwgMTU3Njc2LCAKKyAgICAxNTc2ODAsIDE1NzY4NCwgMTU3Njg4LCAxNTc2OTIsIDE1NzY5NiwgMTU3NzAwLCAxNTc3MDQsIDE1NzcwOCwgMTU3NzEyLCAKKyAgICAxNTc3MTYsIDE1NzcyMCwgMTU3NzI0LCAxNTc3MjgsIDE1NzczMiwgMTU3NzM2LCAxNTc3NDAsIDE1Nzc0NCwgMTU3NzQ4LCAKKyAgICAxNTc3NTIsIDE1Nzc1NiwgMTU3NzYwLCAxNTc3NjQsIDE1Nzc2OCwgMTU3NzcyLCAxNTc3NzYsIDE1Nzc4MCwgMTU3Nzg0LCAKKyAgICAxNTc3ODgsIDE1Nzc5MiwgMTU3Nzk2LCAxNTc4MDAsIDE1NzgwNCwgMTU3ODA4LCAxNTc4MTIsIDE1NzgxNiwgMTU3ODIwLCAKKyAgICAxNTc4MjQsIDE1NzgyOCwgMTU3ODMyLCAxNTc4MzYsIDE1Nzg0MCwgMTU3ODQ0LCAxNTc4NDgsIDE1Nzg1MiwgMTU3ODU2LCAKKyAgICAxNTc4NjAsIDE1Nzg2NCwgMTU3ODY4LCAxNTc4NzIsIDE1Nzg3NiwgMTU3ODgwLCAxNTc4ODQsIDE1Nzg4OCwgMTU3ODkyLCAKKyAgICAxNTc4OTYsIDE1NzkwMCwgMTU3OTA0LCAxNTc5MDgsIDE1NzkxMiwgMTU3OTE2LCAxNTc5MjAsIDE1NzkyNCwgMTU3OTI4LCAKKyAgICAxNTc5MzIsIDE1NzkzNiwgMTU3OTQwLCAxNTc5NDQsIDE1Nzk0OCwgMTU3OTUyLCAxNTc5NTYsIDE1Nzk2MCwgMTU3OTY0LCAKKyAgICAxNTc5NjgsIDE1Nzk3MiwgMTU3OTc2LCAxNTc5ODAsIDE1Nzk4NCwgMTU3OTg4LCAxNTc5OTIsIDE1Nzk5NiwgMTU4MDAwLCAKKyAgICAxNTgwMDQsIDE1ODAwOCwgMTU4MDEyLCAxNTgwMTYsIDE1ODAyMCwgMTU4MDI0LCAxNTgwMjgsIDE1ODAzMiwgMTU4MDM2LCAKKyAgICAxNTgwNDAsIDE1ODA0NCwgMTU4MDQ4LCAxNTgwNTIsIDE1ODA1NiwgMTU4MDYwLCAxNTgwNjQsIDE1ODA2OCwgMTU4MDcyLCAKKyAgICAxNTgwNzYsIDE1ODA4MCwgMTU4MDg0LCAxNTgwODgsIDE1ODA5MiwgMTU4MDk2LCAxNTgxMDAsIDE1ODEwNCwgMTU4MTA4LCAKKyAgICAxNTgxMTIsIDE1ODExNiwgMTU4MTIwLCAxNTgxMjQsIDE1ODEyOCwgMTU4MTMyLCAxNTgxMzYsIDE1ODE0MCwgMTU4MTQ0LCAKKyAgICAxNTgxNDgsIDE1ODE1MiwgMTU4MTU2LCAxNTgxNjAsIDE1ODE2NCwgMTU4MTY4LCAxNTgxNzIsIDE1ODE3NiwgMTU4MTgwLCAKKyAgICAxNTgxODQsIDE1ODE4OCwgMTU4MTkyLCAxNTgxOTYsIDE1ODIwMCwgMTU4MjA0LCAxNTgyMDgsIDE1ODIxMiwgMTU4MjE2LCAKKyAgICAxNTgyMjAsIDE1ODIyNCwgMTU4MjI4LCAxNTgyMzIsIDE1ODIzNiwgMTU4MjQwLCAxNTgyNDQsIDE1ODI0OCwgMTU4MjUyLCAKKyAgICAxNTgyNTYsIDE1ODI2MCwgMTU4MjY0LCAxNTgyNjgsIDE1ODI3MiwgMTU4Mjc2LCAxNTgyODAsIDE1ODI4NCwgMTU4Mjg4LCAKKyAgICAxNTgyOTIsIDE1ODI5NiwgMTU4MzAwLCAxNTgzMDQsIDE1ODMwOCwgMTU4MzEyLCAxNTgzMTYsIDE1ODMyMCwgMTU4MzI0LCAKKyAgICAxNTgzMjgsIDE1ODMzMiwgMTU4MzM2LCAxNTgzNDAsIDE1ODM0NCwgMTU4MzQ4LCAxNTgzNTIsIDE1ODM1NiwgMTU4MzYwLCAKKyAgICAxNTgzNjQsIDE1ODM2OCwgMTU4MzcyLCAxNTgzNzYsIDE1ODM4MCwgMTU4Mzg0LCAxNTgzODgsIDE1ODM5MiwgMTU4Mzk2LCAKKyAgICAxNTg0MDAsIDE1ODQwNCwgMTU4NDA4LCAxNTg0MTIsIDE1ODQxNiwgMTU4NDIwLCAxNTg0MjQsIDE1ODQyOCwgMTU4NDMyLCAKKyAgICAxNTg0MzYsIDE1ODQ0MCwgMTU4NDQ0LCAxNTg0NDgsIDE1ODQ1MiwgMTU4NDU2LCAxNTg0NjAsIDE1ODQ2NCwgMTU4NDY4LCAKKyAgICAxNTg0NzIsIDE1ODQ3NiwgMTU4NDgwLCAxNTg0ODQsIDE1ODQ4OCwgMTU4NDkyLCAxNTg0OTYsIDE1ODUwMCwgMTU4NTA0LCAKKyAgICAxNTg1MDgsIDE1ODUxMiwgMTU4NTE2LCAxNTg1MjAsIDE1ODUyNCwgMTU4NTI4LCAxNTg1MzIsIDE1ODUzNiwgMTU4NTQwLCAKKyAgICAxNTg1NDQsIDE1ODU0OCwgMTU4NTUyLCAxNTg1NTYsIDE1ODU2MCwgMTU4NTY0LCAxNTg1NjgsIDE1ODU3MiwgMTU4NTc2LCAKKyAgICAxNTg1ODAsIDE1ODU4NCwgMTU4NTg4LCAxNTg1OTIsIDE1ODU5NiwgMTU4NjAwLCAxNTg2MDQsIDE1ODYwOCwgMTU4NjEyLCAKKyAgICAxNTg2MTYsIDE1ODYyMCwgMTU4NjI0LCAxNTg2MjgsIDE1ODYzMiwgMTU4NjM2LCAxNTg2NDAsIDE1ODY0NCwgMTU4NjQ4LCAKKyAgICAxNTg2NTIsIDE1ODY1NiwgMTU4NjYwLCAxNTg2NjQsIDE1ODY2OCwgMTU4NjcyLCAxNTg2NzYsIDE1ODY4MCwgMTU4Njg0LCAKKyAgICAxNTg2ODgsIDE1ODY5MiwgMTU4Njk2LCAxNTg3MDAsIDE1ODcwNCwgMTU4NzA4LCAxNTg3MTIsIDE1ODcxNiwgMTU4NzIwLCAKKyAgICAxNTg3MjQsIDE1ODcyOCwgMTU4NzMyLCAxNTg3MzYsIDE1ODc0MCwgMTU4NzQ0LCAxNTg3NDgsIDE1ODc1MiwgMTU4NzU2LCAKKyAgICAxNTg3NjAsIDE1ODc2NCwgMTU4NzY4LCAxNTg3NzIsIDE1ODc3NiwgMTU4NzgwLCAxNTg3ODQsIDE1ODc4OCwgMTU4NzkyLCAKKyAgICAxNTg3OTYsIDE1ODgwMCwgMTU4ODA0LCAxNTg4MDgsIDE1ODgxMiwgMTU4ODE2LCAxNTg4MjAsIDE1ODgyNCwgMTU4ODI4LCAKKyAgICAxNTg4MzIsIDE1ODgzNiwgMTU4ODQwLCAxNTg4NDQsIDE1ODg0OCwgMTU4ODUyLCAxNTg4NTYsIDE1ODg2MCwgMTU4ODY0LCAKKyAgICAxNTg4NjgsIDE1ODg3MiwgMTU4ODc2LCAxNTg4ODAsIDE1ODg4NCwgMTU4ODg4LCAxNTg4OTIsIDE1ODg5NiwgMTU4OTAwLCAKKyAgICAxNTg5MDQsIDE1ODkwOCwgMTU4OTEyLCAxNTg5MTYsIDE1ODkyMCwgMTU4OTI0LCAxNTg5MjgsIDE1ODkzMiwgMTU4OTM2LCAKKyAgICAxNTg5NDAsIDE1ODk0NCwgMTU4OTQ4LCAxNTg5NTIsIDE1ODk1NiwgMTU4OTYwLCAxNTg5NjQsIDE1ODk2OCwgMTU4OTcyLCAKKyAgICAxNTg5NzYsIDE1ODk4MCwgMTU4OTg0LCAxNTg5ODgsIDE1ODk5MiwgMTU4OTk2LCAxNTkwMDAsIDE1OTAwNCwgMTU5MDA4LCAKKyAgICAxNTkwMTIsIDE1OTAxNiwgMTU5MDIwLCAxNTkwMjQsIDE1OTAyOCwgMTU5MDMyLCAxNTkwMzYsIDE1OTA0MCwgMTU5MDQ0LCAKKyAgICAxNTkwNDgsIDE1OTA1MiwgMTU5MDU2LCAxNTkwNjAsIDE1OTA2NCwgMTU5MDY4LCAxNTkwNzIsIDE1OTA3NiwgMTU5MDgwLCAKKyAgICAxNTkwODQsIDE1OTA4OCwgMTU5MDkyLCAxNTkwOTYsIDE1OTEwMCwgMTU5MTA0LCAxNTkxMDgsIDE1OTExMiwgMTU5MTE2LCAKKyAgICAxNTkxMjAsIDE1OTEyNCwgMTU5MTI4LCAxNTkxMzIsIDE1OTEzNiwgMTU5MTQwLCAxNTkxNDQsIDE1OTE0OCwgMTU5MTUyLCAKKyAgICAxNTkxNTYsIDE1OTE2MCwgMTU5MTY0LCAxNTkxNjgsIDE1OTE3MiwgMTU5MTc2LCAxNTkxODAsIDE1OTE4NCwgMTU5MTg4LCAKKyAgICAxNTkxOTIsIDE1OTE5NiwgMTU5MjAwLCAxNTkyMDQsIDE1OTIwOCwgMTU5MjEyLCAxNTkyMTYsIDE1OTIyMCwgMTU5MjI0LCAKKyAgICAxNTkyMjgsIDE1OTIzMiwgMTU5MjM2LCAxNTkyNDAsIDE1OTI0NCwgMTU5MjQ4LCAxNTkyNTIsIDE1OTI1NiwgMTU5MjYwLCAKKyAgICAxNTkyNjQsIDE1OTI2OCwgMTU5MjcyLCAxNTkyNzYsIDE1OTI4MCwgMTU5Mjg0LCAxNTkyODgsIDE1OTI5MiwgMTU5Mjk2LCAKKyAgICAxNTkzMDAsIDE1OTMwNCwgMTU5MzA4LCAxNTkzMTIsIDE1OTMxNiwgMTU5MzIwLCAxNTkzMjQsIDE1OTMyOCwgMTU5MzMyLCAKKyAgICAxNTkzMzYsIDE1OTM0MCwgMTU5MzQ0LCAxNTkzNDgsIDE1OTM1MiwgMTU5MzU2LCAxNTkzNjAsIDE1OTM2NCwgMTU5MzY4LCAKKyAgICAxNTkzNzIsIDE1OTM3NiwgMTU5MzgwLCAxNTkzODQsIDE1OTM4OCwgMTU5MzkyLCAxNTkzOTYsIDE1OTQwMCwgMTU5NDA0LCAKKyAgICAxNTk0MDgsIDE1OTQxMiwgMTU5NDE2LCAxNTk0MjAsIDE1OTQyNCwgMTU5NDI4LCAxNTk0MzIsIDE1OTQzNiwgMTU5NDQwLCAKKyAgICAxNTk0NDQsIDE1OTQ0OCwgMTU5NDUyLCAxNTk0NTYsIDE1OTQ2MCwgMTU5NDY0LCAxNTk0NjgsIDE1OTQ3MiwgMTU5NDc2LCAKKyAgICAxNTk0ODAsIDE1OTQ4NCwgMTU5NDg4LCAxNTk0OTIsIDE1OTQ5NiwgMTU5NTAwLCAxNTk1MDQsIDE1OTUwOCwgMTU5NTEyLCAKKyAgICAxNTk1MTYsIDE1OTUyMCwgMTU5NTI0LCAxNTk1MjgsIDE1OTUzMiwgMTU5NTM2LCAxNTk1NDAsIDE1OTU0NCwgMTU5NTQ4LCAKKyAgICAxNTk1NTIsIDE1OTU1NiwgMTU5NTYwLCAxNTk1NjQsIDE1OTU2OCwgMTU5NTcyLCAxNTk1NzYsIDE1OTU4MCwgMTU5NTg0LCAKKyAgICAxNTk1ODgsIDE1OTU5MiwgMTU5NTk2LCAxNTk2MDAsIDE1OTYwNCwgMTU5NjA4LCAxNTk2MTIsIDE1OTYxNiwgMTU5NjIwLCAKKyAgICAxNTk2MjQsIDE1OTYyOCwgMTU5NjMyLCAxNTk2MzYsIDE1OTY0MCwgMTU5NjQ0LCAxNTk2NDgsIDE1OTY1MiwgMTU5NjU2LCAKKyAgICAxNTk2NjAsIDE1OTY2NCwgMTU5NjY4LCAxNTk2NzIsIDE1OTY3NiwgMTU5NjgwLCAxNTk2ODQsIDE1OTY4OCwgMTU5NjkyLCAKKyAgICAxNTk2OTYsIDE1OTcwMCwgMTU5NzA0LCAxNTk3MDgsIDE1OTcxMiwgMTU5NzE2LCAxNTk3MjAsIDE1OTcyNCwgMTU5NzI4LCAKKyAgICAxNTk3MzIsIDE1OTczNiwgMTU5NzQwLCAxNTk3NDQsIDE1OTc0OCwgMTU5NzUyLCAxNTk3NTYsIDE1OTc2MCwgMTU5NzY0LCAKKyAgICAxNTk3NjgsIDE1OTc3MiwgMTU5Nzc2LCAxNTk3ODAsIDE1OTc4NCwgMTU5Nzg4LCAxNTk3OTIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE1OTc5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU5ODAwLCAxNTk4MDMsIDE1OTgwNywgMTU5ODExLCAKKyAgICAxNTk4MTQsIDE1OTgxOCwgMTU5ODIyLCAxNTk4MjUsIDE1OTgyOCwgMTU5ODMyLCAxNTk4MzYsIDE1OTgzOSwgMTU5ODQyLCAKKyAgICAxNTk4NDUsIDE1OTg0OCwgMTU5ODUzLCAxNTk4NTYsIDE1OTg2MCwgMTU5ODYzLCAxNTk4NjYsIDE1OTg2OSwgMTU5ODcyLCAKKyAgICAxNTk4NzUsIDE1OTg3OCwgMTU5ODgyLCAxNTk4ODUsIDE1OTg4OSwgMTU5ODkyLCAxNTk4OTUsIDE1OTg5OSwgMTU5OTAzLCAKKyAgICAxNTk5MDcsIDE1OTkxMSwgMTU5OTE2LCAxNTk5MjEsIDE1OTkyNywgMTU5OTMzLCAxNTk5MzksIDE1OTk0NCwgMTU5OTUwLCAKKyAgICAxNTk5NTYsIDE1OTk2MiwgMTU5OTY3LCAxNTk5NzMsIDE1OTk3OSwgMTU5OTg0LCAxNTk5OTAsIDE1OTk5NiwgMTYwMDAxLCAKKyAgICAxNjAwMDcsIDE2MDAxMywgMTYwMDE4LCAxNjAwMjMsIDE2MDAyOSwgMTYwMDM0LCAxNjAwNDAsIDE2MDA0NiwgMTYwMDUyLCAKKyAgICAxNjAwNTgsIDE2MDA2NCwgMTYwMDY4LCAxNjAwNzMsIDE2MDA3NywgMTYwMDgyLCAxNjAwODYsIDE2MDA5MSwgMTYwMDk2LCAKKyAgICAxNjAxMDIsIDE2MDEwOCwgMTYwMTE0LCAxNjAxMTksIDE2MDEyNSwgMTYwMTMxLCAxNjAxMzcsIDE2MDE0MiwgMTYwMTQ4LCAKKyAgICAxNjAxNTQsIDE2MDE1OSwgMTYwMTY1LCAxNjAxNzEsIDE2MDE3NiwgMTYwMTgyLCAxNjAxODgsIDE2MDE5MywgMTYwMTk4LCAKKyAgICAxNjAyMDQsIDE2MDIwOSwgMTYwMjE1LCAxNjAyMjEsIDE2MDIyNywgMTYwMjMzLCAxNjAyMzksIDE2MDI0NCwgMTYwMjQ4LCAKKyAgICAxNjAyNTMsIDE2MDI1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYwMjYwLCAxNjAyNjMsIDE2MDI2NiwgMTYwMjY5LCAKKyAgICAxNjAyNzIsIDE2MDI3NSwgMTYwMjc4LCAxNjAyODEsIDE2MDI4NCwgMTYwMjg3LCAxNjAyOTAsIDE2MDI5MywgMTYwMjk2LCAKKyAgICAxNjAyOTksIDE2MDMwMiwgMTYwMzA1LCAxNjAzMDgsIDE2MDMxMSwgMTYwMzE0LCAxNjAzMTcsIDE2MDMyMCwgMTYwMzIzLCAKKyAgICAxNjAzMjYsIDE2MDMyOSwgMTYwMzMyLCAxNjAzMzUsIDE2MDMzOCwgMTYwMzQxLCAxNjAzNDQsIDE2MDM0NywgMTYwMzUwLCAKKyAgICAxNjAzNTMsIDE2MDM1NiwgMTYwMzU5LCAxNjAzNjIsIDE2MDM2NSwgMTYwMzY4LCAxNjAzNzEsIDE2MDM3NCwgMTYwMzc3LCAKKyAgICAxNjAzODAsIDE2MDM4MywgMTYwMzg2LCAxNjAzODksIDE2MDM5MiwgMTYwMzk1LCAxNjAzOTgsIDE2MDQwMSwgMTYwNDA0LCAKKyAgICAxNjA0MDcsIDE2MDQxMCwgMTYwNDEzLCAxNjA0MTYsIDE2MDQxOSwgMTYwNDIyLCAxNjA0MjUsIDE2MDQyOCwgMTYwNDMxLCAKKyAgICAxNjA0MzQsIDE2MDQzNywgMTYwNDQwLCAxNjA0NDMsIDE2MDQ0NiwgMTYwNDQ5LCAxNjA0NTIsIDE2MDQ1NSwgMTYwNDU4LCAKKyAgICAxNjA0NjEsIDE2MDQ2NCwgMTYwNDY3LCAxNjA0NzAsIDE2MDQ3MywgMTYwNDc2LCAxNjA0NzksIDE2MDQ4MiwgMTYwNDg1LCAKKyAgICAxNjA0ODgsIDE2MDQ5MSwgMTYwNDk0LCAxNjA0OTcsIDE2MDUwMCwgMTYwNTAzLCAxNjA1MDYsIDE2MDUwOSwgMTYwNTEyLCAKKyAgICAxNjA1MTUsIDE2MDUxOCwgMTYwNTIxLCAxNjA1MjQsIDE2MDUyNywgMTYwNTMwLCAxNjA1MzMsIDE2MDUzNiwgMTYwNTM5LCAKKyAgICAxNjA1NDIsIDE2MDU0NSwgMTYwNTQ4LCAxNjA1NTEsIDE2MDU1NCwgMTYwNTU3LCAxNjA1NjAsIDE2MDU2MywgMTYwNTY2LCAKKyAgICAxNjA1NjksIDE2MDU3MiwgMTYwNTc1LCAxNjA1NzgsIDE2MDU4MSwgMTYwNTg0LCAxNjA1ODcsIDE2MDU5MCwgMTYwNTkzLCAKKyAgICAxNjA1OTYsIDE2MDU5OSwgMTYwNjAyLCAxNjA2MDUsIDE2MDYwOCwgMTYwNjExLCAxNjA2MTQsIDE2MDYxNywgMTYwNjIwLCAKKyAgICAxNjA2MjMsIDE2MDYyNiwgMTYwNjI5LCAxNjA2MzIsIDE2MDYzNSwgMTYwNjM4LCAxNjA2NDEsIDE2MDY0NCwgMTYwNjQ3LCAKKyAgICAxNjA2NTAsIDE2MDY1MywgMTYwNjU2LCAxNjA2NTksIDE2MDY2MiwgMTYwNjY1LCAxNjA2NjgsIDE2MDY3MSwgMTYwNjc0LCAKKyAgICAxNjA2NzcsIDE2MDY4MCwgMTYwNjgzLCAxNjA2ODYsIDE2MDY4OSwgMTYwNjkyLCAxNjA2OTUsIDE2MDY5OCwgMTYwNzAxLCAKKyAgICAxNjA3MDQsIDE2MDcwNywgMTYwNzEwLCAxNjA3MTMsIDE2MDcxNiwgMTYwNzE5LCAxNjA3MjIsIDE2MDcyNSwgMTYwNzI4LCAKKyAgICAxNjA3MzEsIDE2MDczNCwgMTYwNzM3LCAxNjA3NDAsIDE2MDc0MywgMTYwNzQ2LCAxNjA3NDksIDE2MDc1MiwgMTYwNzU1LCAKKyAgICAxNjA3NTgsIDE2MDc2MSwgMTYwNzY0LCAxNjA3NjcsIDE2MDc3MCwgMTYwNzczLCAxNjA3NzYsIDE2MDc3OSwgMTYwNzgyLCAKKyAgICAxNjA3ODUsIDE2MDc4OCwgMTYwNzkxLCAxNjA3OTQsIDE2MDc5NywgMTYwODAwLCAxNjA4MDMsIDE2MDgwNiwgMTYwODA5LCAKKyAgICAxNjA4MTIsIDE2MDgxNSwgMTYwODE4LCAxNjA4MjEsIDE2MDgyNCwgMTYwODI3LCAxNjA4MzAsIDE2MDgzMywgMTYwODM2LCAKKyAgICAxNjA4MzksIDE2MDg0MiwgMTYwODQ1LCAxNjA4NDgsIDE2MDg1MSwgMTYwODU0LCAxNjA4NTcsIDE2MDg2MCwgMTYwODYzLCAKKyAgICAxNjA4NjYsIDE2MDg2OSwgMTYwODcyLCAxNjA4NzUsIDE2MDg3OCwgMTYwODgxLCAxNjA4ODQsIDE2MDg4NywgMTYwODkwLCAKKyAgICAxNjA4OTMsIDE2MDg5NiwgMTYwODk5LCAxNjA5MDIsIDE2MDkwNSwgMTYwOTA4LCAxNjA5MTEsIDE2MDkxNCwgMTYwOTE3LCAKKyAgICAxNjA5MjAsIDE2MDkyMywgMTYwOTI2LCAxNjA5MjksIDE2MDkzMiwgMTYwOTM1LCAxNjA5MzgsIDE2MDk0MSwgMTYwOTQ0LCAKKyAgICAxNjA5NDcsIDE2MDk1MCwgMTYwOTUzLCAxNjA5NTYsIDE2MDk1OSwgMTYwOTYyLCAxNjA5NjUsIDE2MDk2OCwgMTYwOTcxLCAKKyAgICAxNjA5NzQsIDE2MDk3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYwOTgwLCAKKyAgICAxNjA5ODIsIDE2MDk4NCwgMTYwOTg5LCAxNjA5OTEsIDE2MDk5NiwgMTYwOTk4LCAxNjEwMDMsIDE2MTAwNSwgMTYxMDEwLCAKKyAgICAxNjEwMTIsIDE2MTAxNCwgMTYxMDE2LCAxNjEwMTgsIDE2MTAyMCwgMTYxMDIyLCAxNjEwMjQsIDE2MTAyNiwgMTYxMDI4LCAKKyAgICAxNjEwMzEsIDE2MTAzNSwgMTYxMDM3LCAxNjEwMzksIDE2MTA0MywgMTYxMDQ3LCAxNjEwNTIsIDE2MTA1NCwgMTYxMDU2LCAKKyAgICAxNjEwNTgsIDE2MTA2MiwgMTYxMDY1LCAxNjEwNjcsIDE2MTA3MSwgMTYxMDczLCAxNjEwNzcsIDE2MTA3OSwgMTYxMDgzLCAKKyAgICAxNjEwODYsIDE2MTA4OCwgMTYxMDkyLCAxNjEwOTYsIDE2MTA5OCwgMTYxMTA0LCAxNjExMDYsIDE2MTExMSwgMTYxMTEzLCAKKyAgICAxNjExMTgsIDE2MTEyMCwgMTYxMTI1LCAxNjExMjcsIDE2MTEzMiwgMTYxMTM0LCAxNjExMzcsIDE2MTEzOSwgMTYxMTQzLCAKKyAgICAxNjExNDUsIDE2MTE1MiwgMTYxMTU0LCAxNjExNTYsIDE2MTE1OCwgMTYxMTYzLCAxNjExNjUsIDE2MTE2NywgMTYxMTY5LCAKKyAgICAxNjExNzEsIDE2MTE3MywgMTYxMTc4LCAxNjExODIsIDE2MTE4NCwgMTYxMTg5LCAxNjExOTMsIDE2MTE5NSwgMTYxMjAwLCAKKyAgICAxNjEyMDQsIDE2MTIwNiwgMTYxMjExLCAxNjEyMTUsIDE2MTIxNywgMTYxMjE5LCAxNjEyMjEsIDE2MTIyMywgMTYxMjI3LCAKKyAgICAxNjEyMjksIDE2MTIzNCwgMTYxMjM2LCAxNjEyNDIsIDE2MTI0NCwgMTYxMjUwLCAxNjEyNTIsIDE2MTI1NCwgMTYxMjU2LCAKKyAgICAxNjEyNjAsIDE2MTI2MiwgMTYxMjY5LCAxNjEyNzEsIDE2MTI3OCwgMTYxMjgwLCAxNjEyODUsIDE2MTI5MSwgMTYxMjkzLCAKKyAgICAxNjEyOTksIDE2MTMwNiwgMTYxMzA4LCAxNjEzMTQsIDE2MTMxOSwgMTYxMzIxLCAxNjEzMjcsIDE2MTMzMywgMTYxMzM1LCAKKyAgICAxNjEzNDEsIDE2MTM0NywgMTYxMzQ5LCAxNjEzNTUsIDE2MTM1OSwgMTYxMzYxLCAxNjEzNjYsIDE2MTM2OCwgMTYxMzcwLCAKKyAgICAxNjEzNzUsIDE2MTM3NywgMTYxMzc5LCAxNjEzODUsIDE2MTM4NywgMTYxMzkyLCAxNjEzOTYsIDE2MTM5OCwgMTYxNDAzLCAKKyAgICAxNjE0MDcsIDE2MTQwOSwgMTYxNDE1LCAxNjE0MTcsIDE2MTQyMSwgMTYxNDIzLCAxNjE0MjcsIDE2MTQyOSwgMTYxNDM2LCAKKyAgICAxNjE0NDMsIDE2MTQ0NSwgMTYxNDUyLCAxNjE0NTksIDE2MTQ2MSwgMTYxNDY2LCAxNjE0NjgsIDE2MTQ3NSwgMTYxNDc3LCAKKyAgICAxNjE0ODIsIDE2MTQ4NCwgMTYxNDkwLCAxNjE0OTIsIDE2MTQ5NiwgMTYxNDk4LCAxNjE1MDQsIDE2MTUwNiwgMTYxNTEwLCAKKyAgICAxNjE1MTIsIDE2MTUxOCwgMTYxNTIwLCAxNjE1MjIsIDE2MTUyNCwgMTYxNTI5LCAxNjE1MzQsIDE2MTUzNiwgMTYxNTM4LCAKKyAgICAxNjE1NDgsIDE2MTU1MiwgMTYxNTU5LCAxNjE1NjYsIDE2MTU3MSwgMTYxNTc2LCAxNjE1ODgsIDE2MTU5MCwgMTYxNTkyLCAKKyAgICAxNjE1OTQsIDE2MTU5NiwgMTYxNTk4LCAxNjE2MDAsIDE2MTYwMiwgMTYxNjA0LCAxNjE2MDYsIDE2MTYwOCwgMTYxNjEwLCAKKyAgICAxNjE2MTIsIDE2MTYxNCwgMTYxNjE2LCAxNjE2MTgsIDE2MTYyMCwgMTYxNjIyLCAxNjE2MjQsIDE2MTYyNiwgMTYxNjI4LCAKKyAgICAxNjE2MzAsIDE2MTYzNiwgMTYxNjQzLCAxNjE2NDgsIDE2MTY1NiwgMTYxNjY0LCAxNjE2NjksIDE2MTY4MCwgMTYxNjgyLCAKKyAgICAxNjE2ODQsIDE2MTY4NiwgMTYxNjg4LCAxNjE2OTAsIDE2MTY5MiwgMTYxNjk0LCAxNjE2OTYsIDE2MTY5OCwgMTYxNzAwLCAKKyAgICAxNjE3MDIsIDE2MTcwNCwgMTYxNzA2LCAxNjE3MDgsIDE2MTcxMCwgMTYxNzEyLCAxNjE3MTcsIDE2MTcxOSwgMTYxNzIxLCAKKyAgICAxNjE3MjcsIDE2MTczOSwgMTYxNzUwLCAxNjE3NTIsIDE2MTc1NCwgMTYxNzU2LCAxNjE3NTgsIDE2MTc2MCwgMTYxNzYyLCAKKyAgICAxNjE3NjQsIDE2MTc2NiwgMTYxNzY4LCAxNjE3NzAsIDE2MTc3MiwgMTYxNzc0LCAxNjE3NzYsIDE2MTc3OCwgMTYxNzgwLCAKKyAgICAxNjE3ODIsIDE2MTc4NCwgMTYxNzg2LCAxNjE3ODgsIDE2MTc5MCwgMTYxNzkyLCAxNjE3OTQsIDE2MTc5NiwgMTYxNzk4LCAKKyAgICAxNjE4MDAsIDE2MTgwMiwgMTYxODA0LCAxNjE4MDYsIDE2MTgwOCwgMTYxODEwLCAxNjE4MTIsIDE2MTgxNCwgMTYxODE2LCAKKyAgICAxNjE4MTgsIDE2MTgyMCwgMTYxODIyLCAxNjE4MjQsIDE2MTgyNiwgMTYxODI4LCAxNjE4MzAsIDE2MTgzMiwgMTYxODM0LCAKKyAgICAxNjE4MzYsIDE2MTgzOCwgMTYxODQwLCAxNjE4NDIsIDE2MTg0NCwgMTYxODQ2LCAxNjE4NDgsIDE2MTg1MCwgMTYxODUyLCAKKyAgICAxNjE4NTQsIDE2MTg1NiwgMTYxODU4LCAxNjE4NjAsIDE2MTg2MiwgMTYxODY0LCAxNjE4NjYsIDE2MTg2OCwgMTYxODcwLCAKKyAgICAxNjE4NzIsIDE2MTg3NCwgMTYxODc2LCAxNjE4NzgsIDE2MTg4MCwgMTYxODgyLCAxNjE4ODQsIDE2MTg4NiwgMTYxODg4LCAKKyAgICAxNjE4OTAsIDE2MTg5MiwgMTYxODk0LCAxNjE4OTYsIDE2MTg5OCwgMTYxOTAwLCAxNjE5MDIsIDE2MTkwNCwgMTYxOTA2LCAKKyAgICAxNjE5MDgsIDE2MTkxMCwgMTYxOTEyLCAxNjE5MTQsIDE2MTkxNiwgMTYxOTE4LCAxNjE5MjAsIDE2MTkyMiwgMTYxOTI0LCAKKyAgICAxNjE5MjYsIDE2MTkyOCwgMTYxOTMwLCAxNjE5MzIsIDE2MTkzNCwgMTYxOTM2LCAxNjE5MzgsIDE2MTk0MCwgMTYxOTQyLCAKKyAgICAxNjE5NDQsIDE2MTk0NiwgMTYxOTQ4LCAxNjE5NTAsIDE2MTk1MiwgMTYxOTU0LCAxNjE5NTYsIDE2MTk1OCwgMTYxOTYwLCAKKyAgICAxNjE5NjIsIDE2MTk2NCwgMTYxOTY2LCAxNjE5NjgsIDE2MTk3MCwgMTYxOTcyLCAxNjE5NzQsIDE2MTk3NiwgMTYxOTc4LCAKKyAgICAxNjE5ODAsIDE2MTk4MiwgMTYxOTg0LCAxNjE5ODYsIDE2MTk4OCwgMTYxOTkwLCAxNjE5OTIsIDE2MTk5NCwgMTYxOTk2LCAKKyAgICAxNjE5OTgsIDE2MjAwMCwgMTYyMDAyLCAxNjIwMDQsIDE2MjAwNiwgMTYyMDA4LCAxNjIwMTAsIDE2MjAxMiwgMTYyMDE0LCAKKyAgICAxNjIwMTYsIDE2MjAxOCwgMTYyMDIwLCAxNjIwMjIsIDE2MjAyNCwgMTYyMDI2LCAxNjIwMjgsIDE2MjAzMCwgMTYyMDMyLCAKKyAgICAxNjIwMzQsIDE2MjAzNiwgMTYyMDM4LCAxNjIwNDAsIDE2MjA0MiwgMTYyMDQ0LCAxNjIwNDYsIDE2MjA0OCwgMTYyMDUwLCAKKyAgICAxNjIwNTIsIDE2MjA1NCwgMTYyMDU2LCAxNjIwNTgsIDE2MjA2MCwgMTYyMDYyLCAxNjIwNjQsIDE2MjA2NiwgMTYyMDY4LCAKKyAgICAxNjIwNzAsIDE2MjA3MiwgMTYyMDc0LCAxNjIwNzYsIDE2MjA3OCwgMTYyMDgwLCAxNjIwODIsIDE2MjA4NCwgMTYyMDg2LCAKKyAgICAxNjIwODgsIDE2MjA5MCwgMTYyMDkyLCAxNjIwOTQsIDE2MjA5NiwgMTYyMDk4LCAxNjIxMDAsIDE2MjEwMiwgMTYyMTA0LCAKKyAgICAxNjIxMDYsIDE2MjEwOCwgMTYyMTEwLCAxNjIxMTIsIDE2MjExNCwgMTYyMTE2LCAxNjIxMTgsIDE2MjEyMCwgMTYyMTIyLCAKKyAgICAxNjIxMjQsIDE2MjEyNiwgMTYyMTI4LCAxNjIxMzAsIDE2MjEzMiwgMTYyMTM0LCAxNjIxMzYsIDE2MjEzOCwgMTYyMTQwLCAKKyAgICAxNjIxNDIsIDE2MjE0NCwgMTYyMTQ2LCAxNjIxNDgsIDE2MjE1MCwgMTYyMTUyLCAxNjIxNTQsIDE2MjE1NiwgMTYyMTU4LCAKKyAgICAxNjIxNjAsIDE2MjE2MiwgMTYyMTY0LCAxNjIxNjYsIDE2MjE2OCwgMTYyMTcwLCAxNjIxNzIsIDE2MjE3NCwgMTYyMTc2LCAKKyAgICAxNjIxNzgsIDE2MjE4MCwgMTYyMTgyLCAxNjIxODQsIDE2MjE4NiwgMTYyMTg4LCAxNjIxOTAsIDE2MjE5MiwgMTYyMTk0LCAKKyAgICAxNjIxOTYsIDE2MjE5OCwgMTYyMjAwLCAxNjIyMDIsIDE2MjIwNCwgMTYyMjA2LCAxNjIyMDgsIDE2MjIxMCwgMTYyMjEyLCAKKyAgICAxNjIyMTQsIDE2MjIxNiwgMTYyMjE4LCAxNjIyMjAsIDE2MjIyMiwgMTYyMjI0LCAxNjIyMjYsIDE2MjIyOCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTYyMjMwLCAxNjIyNDAsIDE2MjI1MCwgMTYyMjU5LCAxNjIyNjgsIDE2MjI4MSwgMTYyMjk0LCAxNjIzMDYsIAorICAgIDE2MjMxOCwgMTYyMzI4LCAxNjIzMzgsIDE2MjM0OCwgMTYyMzU4LCAxNjIzNjksIDE2MjM4MCwgMTYyMzkwLCAxNjIzOTksIAorICAgIDE2MjQwOCwgMTYyNDE3LCAxNjI0MzAsIDE2MjQ0MywgMTYyNDU1LCAxNjI0NjcsIDE2MjQ3NywgMTYyNDg3LCAxNjI0OTcsIAorICAgIDE2MjUwNywgMTYyNTE2LCAxNjI1MjUsIDE2MjUzNSwgMTYyNTQ1LCAxNjI1NTQsIDE2MjU2MywgMTYyNTczLCAxNjI1ODMsIAorICAgIDE2MjU5MiwgMTYyNjAxLCAxNjI2MTEsIDE2MjYyMSwgMTYyNjMyLCAxNjI2NDMsIDE2MjY1MywgMTYyNjY2LCAxNjI2NzcsIAorICAgIDE2MjY5MSwgMTYyNjk5LCAxNjI3MTAsIDE2MjcxOCwgMTYyNzI2LCAxNjI3MzQsIDE2Mjc0MiwgMTYyNzUwLCAxNjI3NTgsIAorICAgIDE2Mjc2NywgMTYyNzc2LCAxNjI3ODYsIDE2Mjc5NiwgMTYyODA1LCAxNjI4MTQsIDE2MjgyNCwgMTYyODM0LCAxNjI4NDIsIAorICAgIDE2Mjg1MCwgMTYyODU3LCAxNjI4NjcsIDE2Mjg3NiwgMTYyODg0LCAxNjI4OTEsIDE2MjkwMSwgMTYyOTEwLCAxNjI5MjEsIAorICAgIDE2MjkzMiwgMTYyOTQ0LCAxNjI5NTUsIDE2Mjk2NSwgMTYyOTc2LCAxNjI5ODYsIDE2Mjk5NywgMTYzMDA1LCAxNjMwMDksIAorICAgIDE2MzAxMywgMTYzMDE3LCAxNjMwMjEsIDE2MzAyNSwgMTYzMDI5LCAxNjMwMzMsIDE2MzAzNywgMTYzMDQxLCAxNjMwNDUsIAorICAgIDE2MzA0OSwgMTYzMDUzLCAxNjMwNTYsIDE2MzA1OSwgMTYzMDYzLCAxNjMwNjcsIDE2MzA3MSwgMTYzMDc1LCAxNjMwNzksIAorICAgIDE2MzA4MywgMTYzMDg3LCAxNjMwOTEsIDE2MzA5NCwgMTYzMDk4LCAxNjMxMDIsIDE2MzEwNiwgMTYzMTEwLCAxNjMxMTQsIAorICAgIDE2MzExOCwgMTYzMTIyLCAxNjMxMjYsIDE2MzEzMCwgMTYzMTM0LCAxNjMxMzgsIDE2MzE0MiwgMTYzMTQ2LCAxNjMxNTAsIAorICAgIDE2MzE1NCwgMTYzMTU4LCAxNjMxNjIsIDE2MzE2NiwgMTYzMTcwLCAxNjMxNzQsIDE2MzE3OCwgMTYzMTgyLCAxNjMxODYsIAorICAgIDE2MzE5MCwgMTYzMTk0LCAxNjMxOTgsIDE2MzIwMiwgMTYzMjA2LCAxNjMyMTAsIDE2MzIxNCwgMTYzMjE4LCAxNjMyMjIsIAorICAgIDE2MzIyNiwgMTYzMjMwLCAxNjMyMzQsIDE2MzIzOCwgMTYzMjQyLCAxNjMyNDYsIDE2MzI1MCwgMTYzMjU0LCAxNjMyNTgsIAorICAgIDE2MzI2MiwgMTYzMjY2LCAxNjMyNzAsIDE2MzI3NCwgMTYzMjc4LCAxNjMyODIsIDE2MzI4NiwgMTYzMjkwLCAxNjMyOTQsIAorICAgIDE2MzI5OCwgMTYzMzAyLCAxNjMzMDYsIDE2MzMxMCwgMTYzMzE0LCAxNjMzMTgsIDE2MzMyMiwgMTYzMzI2LCAxNjMzMzAsIAorICAgIDE2MzMzNCwgMTYzMzM4LCAxNjMzNDIsIDE2MzM0NiwgMTYzMzUwLCAxNjMzNTQsIDE2MzM1OCwgMTYzMzYyLCAxNjMzNjYsIAorICAgIDE2MzM3MCwgMTYzMzc0LCAxNjMzNzgsIDE2MzM4MiwgMTYzMzg2LCAxNjMzOTAsIDE2MzM5NCwgMTYzMzk4LCAxNjM0MDEsIAorICAgIDE2MzQwNSwgMTYzNDA5LCAxNjM0MTMsIDE2MzQxNywgMTYzNDIxLCAxNjM0MjUsIDE2MzQyOSwgMTYzNDMzLCAxNjM0MzcsIAorICAgIDE2MzQ0MSwgMTYzNDQ1LCAxNjM0NDksIDE2MzQ1MywgMTYzNDU3LCAxNjM0NjEsIDE2MzQ2NSwgMTYzNDY5LCAxNjM0NzMsIAorICAgIDE2MzQ3NywgMTYzNDgxLCAxNjM0ODUsIDE2MzQ4OSwgMTYzNDkzLCAxNjM0OTcsIDE2MzUwMSwgMTYzNTA1LCAxNjM1MDksIAorICAgIDE2MzUxMywgMTYzNTE3LCAxNjM1MjEsIDE2MzUyNSwgMTYzNTI5LCAxNjM1MzMsIDE2MzUzNywgMTYzNTQxLCAxNjM1NDUsIAorICAgIDE2MzU0OSwgMTYzNTUzLCAxNjM1NTcsIDE2MzU2MSwgMTYzNTY1LCAxNjM1NjksIDE2MzU3MywgMTYzNTc3LCAxNjM1ODEsIAorICAgIDE2MzU4NSwgMTYzNTg5LCAxNjM1OTMsIDE2MzU5NywgMTYzNjAxLCAxNjM2MDUsIDE2MzYwOSwgMTYzNjEzLCAxNjM2MTcsIAorICAgIDE2MzYyMSwgMTYzNjI1LCAxNjM2MjksIDE2MzYzMywgMTYzNjM3LCAxNjM2NDEsIDE2MzY0NSwgMTYzNjQ5LCAxNjM2NTMsIAorICAgIDE2MzY1NywgMTYzNjYxLCAxNjM2NjUsIDE2MzY2OSwgMTYzNjczLCAxNjM2NzcsIDE2MzY4MSwgMTYzNjg1LCAxNjM2ODksIAorICAgIDE2MzY5MywgMTYzNjk3LCAxNjM3MDEsIDE2MzcwNSwgMTYzNzA5LCAxNjM3MTMsIDE2MzcxNywgMTYzNzIxLCAxNjM3MjUsIAorICAgIDE2MzcyOSwgMTYzNzMzLCAxNjM3MzcsIDE2Mzc0MSwgMTYzNzQ1LCAxNjM3NDksIDE2Mzc1MywgMTYzNzU3LCAxNjM3NjEsIAorICAgIDE2Mzc2NSwgMTYzNzY5LCAxNjM3NzMsIDE2Mzc3NywgMTYzNzgxLCAxNjM3ODUsIDE2Mzc4OSwgMTYzNzkzLCAxNjM3OTcsIAorICAgIDE2MzgwMSwgMTYzODA1LCAxNjM4MDksIDE2MzgxMywgMTYzODE3LCAxNjM4MjEsIDE2MzgyNSwgMTYzODI5LCAxNjM4MzMsIAorICAgIDE2MzgzNywgMTYzODQxLCAxNjM4NDUsIDE2Mzg0OSwgMTYzODUzLCAxNjM4NTcsIDE2Mzg2MSwgMTYzODY1LCAxNjM4NjksIAorICAgIDE2Mzg3MywgMTYzODc3LCAxNjM4ODEsIDE2Mzg4NSwgMTYzODg5LCAxNjM4OTMsIDE2Mzg5NywgMTYzOTAxLCAxNjM5MDUsIAorICAgIDE2MzkwOSwgMTYzOTEzLCAxNjM5MTcsIDE2MzkyMSwgMTYzOTI1LCAxNjM5MjksIDE2MzkzMywgMTYzOTM3LCAxNjM5NDEsIAorICAgIDE2Mzk0NSwgMTYzOTQ5LCAxNjM5NTMsIDE2Mzk1NywgMTYzOTYxLCAxNjM5NjUsIDE2Mzk2OSwgMTYzOTczLCAxNjM5NzcsIAorICAgIDE2Mzk4MSwgMTYzOTg1LCAxNjM5ODksIDE2Mzk5MywgMTYzOTk3LCAxNjQwMDEsIDE2NDAwNSwgMTY0MDA5LCAxNjQwMTMsIAorICAgIDE2NDAxNywgMTY0MDIxLCAxNjQwMjUsIDE2NDAyOSwgMTY0MDMzLCAxNjQwMzcsIDE2NDA0MSwgMTY0MDQ1LCAxNjQwNDksIAorICAgIDE2NDA1MywgMTY0MDU3LCAxNjQwNjEsIDE2NDA2NSwgMTY0MDY5LCAxNjQwNzMsIDE2NDA3NywgMTY0MDgxLCAxNjQwODUsIAorICAgIDE2NDA4OSwgMTY0MDkzLCAxNjQwOTcsIDE2NDEwMSwgMTY0MTA1LCAxNjQxMDksIDE2NDExMywgMTY0MTE3LCAxNjQxMjEsIAorICAgIDE2NDEyNSwgMTY0MTI5LCAxNjQxMzMsIDE2NDEzNywgMTY0MTQxLCAxNjQxNDUsIDE2NDE0OSwgMTY0MTUzLCAxNjQxNTcsIAorICAgIDE2NDE2MSwgMTY0MTY1LCAxNjQxNzAsIDE2NDE3NSwgMTY0MTgwLCAxNjQxODQsIDE2NDE5MCwgMTY0MTk3LCAxNjQyMDQsIAorICAgIDE2NDIxMSwgMTY0MjE4LCAxNjQyMjUsIDE2NDIzMiwgMTY0MjM5LCAxNjQyNDYsIDE2NDI1MywgMTY0MjYwLCAxNjQyNjcsIAorICAgIDE2NDI3NCwgMTY0MjgxLCAxNjQyODgsIDE2NDI5NSwgMTY0MzAyLCAxNjQzMDgsIDE2NDMxNSwgMTY0MzIyLCAxNjQzMjksIAorICAgIDE2NDMzNiwgMTY0MzQzLCAxNjQzNTAsIDE2NDM1NywgMTY0MzY0LCAxNjQzNzEsIDE2NDM3OCwgMTY0Mzg1LCAxNjQzOTIsIAorICAgIDE2NDM5OSwgMTY0NDA2LCAxNjQ0MTIsIDE2NDQxOSwgMTY0NDI2LCAxNjQ0MzUsIDE2NDQ0NCwgMTY0NDUzLCAxNjQ0NjIsIAorICAgIDE2NDQ2NywgMTY0NDcyLCAxNjQ0NzgsIDE2NDQ4NCwgMTY0NDkwLCAxNjQ0OTYsIDE2NDUwMiwgMTY0NTA4LCAxNjQ1MTQsIAorICAgIDE2NDUyMCwgMTY0NTI2LCAxNjQ1MzIsIDE2NDUzOCwgMTY0NTQ0LCAxNjQ1NDksIDE2NDU1NSwgMTY0NTY1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKIH07CiAKIC8qIG5hbWUtPmNvZGUgZGljdGlvbmFyeSAqLwogc3RhdGljIHVuc2lnbmVkIGludCBjb2RlX2hhc2hbXSA9IHsKLSAgICA3NDIyNCwgNDg1MSwgMCwgNzgxNTYsIDc4NDk5LCAxMjg2ODUsIDc5MjksIDAsIDE5NDY4MiwgMTI3NzY2LCA3ODUwMCwgCi0gICAgNjY0ODAsIDAsIDQyODMzLCA3NDUyOSwgMTIwNjQsIDAsIDU5NiwgOTgzODIxLCA2OTg1MCwgMTMxOTIsIDg2NTEsIDAsIDAsIAotICAgIDEyMDIxOCwgMTI5OTUsIDY0ODY1LCAxMzczLCAwLCAwLCA1ODE2LCAxMTkwNjcsIDY0ODEwLCA0MjMxLCA2ODI1LCA0Mjg5NywgCi0gICAgNDIzMywgNDIzNCwgNDIzMiwgOTE3ODM2LCA3NDQxNSwgMTIwMjEwLCA2Mzg0LCA5MTc4NDAsIDc4MTA4LCA4ODUxLCAwLCAKLSAgICAxMjg1NTMsIDAsIDQxNjAxLCA4ODc0LCA5ODM3ODMsIDc3NDgsIDAsIDAsIDAsIDEyNzkzOSwgNDE2MDMsIDk3ODQsIDAsIAotICAgIDkxODgsIDQxNjAwLCAwLCAxMjA2MTgsIDEyODM0MywgMTQ1NywgMzUzNSwgMCwgMCwgMCwgMCwgNjUyNDAsIDExOTUxLCAwLCAKLSAgICAzNDA0LCAwLCAwLCAwLCAxNzU5LCAwLCA0MTA3NiwgNjgzODMsIDEyMDU3MiwgMTE5MjA1LCA2NjU3NywgOTQwMTQsIAotICAgIDEyNzc2NCwgNjU4NTksIDAsIDc0MDQsIDAsIDAsIDAsIDAsIDY1OTA4LCA5ODM0LCAzMDU1LCA5ODUyLCA5ODM4NjAsIAotICAgIDY1Mjg4LCAwLCAxMTM5OCwgMCwgOTI0MTcsIDExOTI1NSwgMCwgMCwgNjAzLCA3NDM5OCwgNDM1NDgsIDAsIDAsIDkxNzgyNCwgCi0gICAgMzM1MCwgMTIwODE3LCA2NDMxOCwgOTE3ODI4LCAxMjcwODksIDMzOTAsIDc0NDgzLCA0MzI2NSwgMTIwNTk5LCA5MTc4MzAsIAotICAgIDc4NTczLCAwLCAxOTE5LCAzNDAwLCAxMjA2NTEsIDEyNzk0NCwgMTE2NDcsIDkxNzU0MCwgNjY0NDYsIDY0MTQxLCA4NTYyLCAKLSAgICAyMTIxLCA2NDEzOCwgNDA0MywgODcxMiwgNjQxMzQsIDY0MTMzLCAxMTI5NywgOTgzNjg4LCA5ODMxNTIsIDExOTY2LCAKLSAgICA2NDEyOCwgMTI4NTg3LCAwLCAwLCA2NDEzMiwgMTA4NjcsIDY0MTMwLCA2NDEyOSwgOTgzODQ0LCA0MzM3NCwgOTc3OSwgCi0gICAgMjc2NCwgNjYwMDIsIDEwMTY3LCA5NDcxLCAwLCA2NjAyMSwgMCwgMCwgNTQ1NywgNTQ0MCwgODg1NywgOTM5ODEsIDY1MjgyLCAKLSAgICAyODQzLCA1MzU1LCAxMjc5MjgsIDk4Mzk2NSwgMCwgNTE5NCwgMTE2NTcsIDQzOTg0LCAxMjgyOTIsIDAsIDk4MzYyMCwgMCwgCi0gICAgMCwgMTI3MDI3LCAxMDcxNywgNjQ1NzAsIDU2MzAsIDUzOTYsIDY0MTQzLCAxMDY4MiwgMCwgMTA2MDIsIDgwMCwgNDI0OTksIAotICAgIDY2MTg2LCAwLCAwLCA2NDkzMCwgMTE2MzEsIDY0MTQ2LCA2NDE0NSwgNjQxNDQsIDc2MiwgMTMxNzIsIDExODg1OSwgCi0gICAgMTk0NjYxLCA2NDQ2OCwgMTA5MDYsIDEzNTMsIDY5NjAsIDAsIDAsIDU4MjgsIDg3MjQsIDkxNzgwNiwgODkzMywgMTYwMSwgCi0gICAgNDIyNDQsIDg1OCwgNzA4MCwgNjQxMDksIDY0MTA4LCA4MDkwLCAwLCA3NDQwMSwgOTE3ODExLCA1ODcsIDAsIDEyODEzMSwgCi0gICAgMCwgMCwgMCwgNzgyMTQsIDI3NTAsIDc0MjE4LCA1NTYsIDY0MTU4LCA2NDE1NywgOTgzOTQ5LCAxMjIxMywgMTk0Njc4LCAKLSAgICAyNzYwLCAwLCAwLCAwLCAxOTQ3OTQsIDY0MTU2LCA2NDE1NSwgNDI0OTYsIDAsIDY0MTUxLCA2NDE1MCwgMTI2NzksIAotICAgIDEwMDUzLCAxMDQyMSwgMTEwOTMsIDY0MTUzLCA2NDE1MiwgMCwgMCwgNDgzOSwgMCwgMCwgMTg3NCwgMTE5MDE2LCAwLCAKLSAgICA2NTc3LCA2NDEyNSwgNjQxMjQsIDY0MTIzLCAwLCAxMjc1MzEsIDkyNTM0LCA3MDA3LCA3NTkwLCA2NTQ0MywgOTAzNiwgCi0gICAgOTI1NTAsIDY0MTIyLCA3NDQyMiwgNjY2MDksIDAsIDY0MTE3LCA2NDExNiwgNjI4NywgNjQxMTQsIDI3MjUsIDY0MTIwLCAKLSAgICA2NDExOSwgNDM5ODEsIDQyMTI4LCAxMjc4NDIsIDExNzcsIDY1NjAxLCAxMjMyMiwgNjQxMDYsIDY5NjQwLCAxMjczMDYsIAotICAgIDY0MTAyLCA3ODU5LCAxOTQ1LCA2NDA5OSwgMCwgMTA0NTMsIDY0MTA0LCA3MTg4LCA3OTk3LCAwLCA3Mzg5LCA5ODMxNjEsIAotICAgIDg3MDUsIDY0MDk3LCA2NDA5NiwgOTU3MSwgNTI4LCAxMjg2NzEsIDQ0MDE3LCAxMTQyOSwgNzEzNDcsIDAsIDk4MzA3NywgCi0gICAgOTE3OTkwLCA3Mzg0MSwgMCwgMCwgOTA1NiwgNjQzMTMsIDYxODgsIDEyMDAxOSwgNjE1NSwgNjQwNjgsIDE4MjMsIDY0MDY2LCAKLSAgICA2NDA2NSwgNjQwNzIsIDY0MDcxLCA2MywgNzIzMywgOTIyMTIsIDAsIDQxOTA0LCA2NjM5LCA2NDA2NCwgOTgzNzc1LCAKLSAgICAxMjgzNDQsIDAsIDExNzYsIDExODk1OSwgMTI3OTMwLCA4MTYyLCAxMjg2NjcsIDk4MzgzMSwgMCwgMTIwNTE5LCA2NjM3NiwgCi0gICAgNjYyNDIsIDExNDE1LCA0MzMzLCA5ODU1LCA2NDExMiwgNjQ2NDIsIDAsIDUzODgsIDAsIDAsIDAsIDc3MTQsIDY2MjIyLCAKLSAgICA2OTkwMiwgNzc2OCwgMCwgNDE5OSwgNjQ3MDgsIDk4MzQyMSwgMCwgMCwgODcwOCwgOTU2MCwgNjQwNzcsIDY0MDc2LCAKLSAgICA4OTk2LCA0OTkyLCA0NDcxLCA0MjYyMiwgNjQwNzksIDY0MDc4LCA5MjE3OSwgMCwgMTI2NTcwLCAwLCA2NDYxNSwgNDE5MTUsIAotICAgIDAsIDEyMDc1LCA3MDA2MiwgMCwgNTE3NCwgOTgzMjE3LCAwLCAxMjc1NTcsIDMxMjMsIDAsIDEyNjg1LCAxMjc5MDQsIAotICAgIDg0MDgsIDY0NzA0LCAwLCAwLCA5MjIzLCAwLCA0MTYxNiwgNjc5OTksIDczNzk3LCAwLCAxMTE2LCAxMjgyMDQsIDQzMDQ5LCAKLSAgICA3MTM2LCA0MzA1MCwgODU0OCwgMTIwNDg1LCAwLCAxMTkwNjEsIDkxNzk5OSwgMCwgMTMxMTUsIDQzNjc1LCA2NDA5MSwgCi0gICAgOTMyMiwgMCwgMTIwNTk1LCA2NDA5NSwgNjQwOTQsIDgxMTEsIDY2MjQ3LCA0MjMzMiwgNjQwODksIDY0MDg4LCA2MTk5LCAwLCAKLSAgICAwLCAxMTQzNCwgNjQwODMsIDY0MDgyLCAxMTMyOSwgNzczNywgNjQwODcsIDY0MDg2LCA2NDA4NSwgNjQwODQsIDE5NDgxNywgCi0gICAgOTkyNywgNDEzMzUsIDQxMTgsIDE3OTcsIDAsIDQxMzM0LCAwLCA0NiwgNDM0NDgsIDEyNzg4MSwgMjk4LCAwLCAxMjgxMTQsIAotICAgIDAsIDQyNjI3LCAwLCAzMiwgNjE4NywgMTE5MDUyLCAxMTQ5NSwgMTE0NTksIDM2NjUsIDk4MzYwMCwgNDI4NzEsIDAsIAotICAgIDE5OTIzLCA3NDMzNSwgMCwgMTI3MTkyLCA2NjIzOSwgNDIyNjQsIDY0NDAzLCA0NDEyLCA3MjQwLCA5MjQ5NSwgMCwgCi0gICAgOTgzNDY2LCA2NTc1OCwgMTI3NTAsIDQxODEsIDg1NDQsIDAsIDEyMDE5OSwgOTE3ODk3LCAxMjAxOTgsIDY5ODA5LCA2MTgxLCAKLSAgICA2NTAxNCwgMCwgMCwgOTgzMTk2LCAzNjM5LCAxMTk1ODgsIDAsIDAsIDExODkwNCwgMTAwNzMsIDEyMDIwNiwgMTI4ODYyLCAKLSAgICAxMjcxODYsIDY4NDA5LCA0Mjg0NCwgNzQ5OCwgMTA5OCwgOTI1NjUsIDEyMDIwNSwgMCwgOTgzMTE4LCAxMDIwNywgODc4OSwgCi0gICAgOTgzMjI1LCAwLCAwLCA5ODM0NzIsIDkyMzQsIDAsIDYxODIsIDk4MzQ3NCwgNjUwNTgsIDAsIDk4MzQ3OCwgOTgzNDc1LCAwLCAKLSAgICA1NDcxLCA5NDYxLCA1NTczLCAxMTg5MzYsIDU0NzMsIDQ0LCAwLCA2NjI0NCwgOTQwNzIsIDAsIDY2MjM4LCAxMjg0NCwgMCwgCi0gICAgMTYyMiwgNzc2NywgMTkwMCwgNDEzMzksIDExNDU4LCAwLCAwLCA2NTgxLCA1NTc2LCAwLCA2NDQwNSwgNDEzMzcsIDAsIAotICAgIDQxNjMxLCA4OTQ3LCA2ODM5MCwgMTI3ODQ0LCA0MTY5NCwgMCwgMCwgNzkwOCwgMCwgMTA0MDgsIDY1NzksIDAsIDY0NjE4LCAKLSAgICAwLCAxMjAxNDcsIDIxMzgsIDY1ODMsIDc3NjEsIDEyNzAxMCwgMTIwNTA0LCAxOTQ4MjgsIDAsIDUwNTgsIDQxMDEwLCAKLSAgICA5OTkyLCAxMjgyOTksIDUwNTcsIDAsIDAsIDc0NTM4LCA1MDU0LCAxMTg5NTEsIDE5NDk3MSwgNzg2MDYsIDAsIDE0MzcsIAotICAgIDQxNjE3LCA2NTgsIDM0OTcsIDEyODUwOSwgNzQ4NiwgNTA2MSwgNTA2MCwgNDIzNSwgMTI3ODc4LCAwLCAxMjg1MjksIAotICAgIDEyMTEzLCA0MjM2LCA0NzI3LCAwLCAwLCA3NjkzLCAxMDc0OSwgMCwgNzQ4OCwgNTc3MywgOTc4LCAxMjgxMzQsIDAsIAotICAgIDQxNjE5LCAxMDIzOSwgNjg2MTEsIDAsIDY2MjA5LCAwLCAxMjg3MDAsIDk3NDgsIDk4Mzk1NiwgMTI3NTI0LCAwLCAwLCAwLCAKLSAgICAwLCAxOTUwODMsIDAsIDk4Mzg0MywgMCwgMCwgMCwgMCwgMCwgOTM0MSwgMTE5NTk2LCAyMzc5LCAxMTMyNSwgMCwgNjQ2NjgsIAotICAgIDY3ODU0LCA4MTI1LCAxMjA1NDUsIDY3NDMsIDExOTE3NSwgOTE3OTQwLCAyMzY5LCAwLCA5ODM5NzIsIDk4Mzk3MywgCi0gICAgMTE5MjM1LCA3NDA5MiwgNzM5MzYsIDcwMDgsIDQzNjYwLCAwLCAwLCAwLCAyMzY3LCAxMjc4MjcsIDk4Mzg1NywgMjY0LCAKLSAgICAyMzc1LCA4MDYwLCA2MTk0LCAxMTk4NTgsIDE4NDQsIDExOTA4NCwgMCwgNjAxOSwgMCwgMCwgNjk2MSwgMCwgMTE4ODM5LCAKLSAgICAwLCA4ODAwLCAwLCA0Mjg2MiwgNDQ2MywgNjU1ODEsIDYxOTIsIDE5NDY3NiwgNDI3NzEsIDAsIDkyMzMzLCA3MjUsIAotICAgIDY1MDQyLCAxMTg3OTcsIDEyMDgwMCwgOTgzMDQwLCAxMjg5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3MjYxLCAxMjA3MDcsIAotICAgIDk4MzEyOCwgMCwgNTA3NCwgNTA3MywgMTI4NzkwLCA4OTgzLCAxMTg5ODEsIDc0NDkzLCA5ODM1NjEsIDUwNzIsIDkzOTc3LCAKLSAgICA2MTk4LCAxMTYxNCwgMCwgMTk2LCAwLCAwLCAwLCA0OTI5LCAxMjAzNDIsIDAsIDAsIDAsIDAsIDQyODQ3LCAwLCAwLCAwLCAKLSAgICA0OTM0LCAwLCA0MTMyMywgOTc1OCwgMCwgOTIyODksIDEyNzkxNywgNDI1ODQsIDAsIDQzMjksIDQxMzIxLCA0OTc5LCAKLSAgICAzMDQ4LCA3NzUyLCA0MTMyMCwgOTgzMDQyLCA3NDQxOCwgMTI4MTksIDAsIDUwNzEsIDAsIDM2NDIsIDAsIDUwNzAsIAotICAgIDEwMDQyLCAxMTg4MzUsIDM5ODcsIDUwNjgsIDAsIDg5MDksIDc4NjUwLCA3ODY0OSwgNjk5MTcsIDEwNjM2LCA3Mzk4MSwgCi0gICAgMTE4MDYsIDQzMTY3LCA0NTMxLCAxMjQ1LCA5MTA1LCA2NjQ2MywgNDkyMSwgMTIwMjE5LCA0OTI2LCA2NTU0NCwgNzM4ODQsIAotICAgIDE5NDYxOSwgMCwgMCwgNjQ3MDksIDAsIDE5NDYyMCwgNzg4ODAsIDQ5MjIsIDMyNSwgOTkyLCAxMTk1NjgsIDQ5MjUsIDAsIAotICAgIDAsIDk1MjYsIDQ5MjAsIDAsIDk0OCwgMCwgMTIwMjA4LCA0OTMwLCAwLCA5MjE3NSwgMTIwMjc1LCA0OTMzLCAxMjAyMTEsIAotICAgIDAsIDExODk4NSwgNDkyOCwgMCwgMCwgNzQ3NzAsIDEyMDE5NCwgMTI2NTQ4LCA3MjIsIDE5NDkzNCwgMTk5MDgsIDEyNjM3LCAKLSAgICAxMjc0ODUsIDExOTg1NSwgODc1MywgMTUwOSwgMCwgNTQ2OCwgOTUxMSwgMTI3NDc0LCAxMjc0NzcsIDE2NzIsIDYyMDUsIAotICAgIDEwODY0LCA3NDU4NiwgMTI3NDgwLCA3MDEwMywgMTI3NDY2LCA3ODU1NSwgMTI3NDY4LCA3Mzg2MywgMTI2NTc3LCAKLSAgICAxMjY1MDMsIDQxNjA3LCAxMjAxMTUsIDE2NzksIDEyMDExNiwgMTIwMTgwLCAxMjAxMTMsIDEyNzQ2MiwgNzAwNSwgNDE2MDksIAotICAgIDk1ODAsIDAsIDQwMSwgNjk5NDksIDQzNzc5LCA2OTY4LCA1NzYxLCAzNDIsIDg1NTMsIDAsIDgxNDMsIDEyNzExNSwgCi0gICAgMTE5ODMsIDkyMjQ5LCA2MjQsIDc0NTA4LCA0MDU3LCA0Mzc4OCwgNTA3OCwgNzQyNTgsIDEyNDc4LCAwLCA1MDc2LCAwLCAKLSAgICAxOTQ2MDksIDAsIDgyOTUsIDY4NSwgOTAyNSwgMTUyNCwgMTI2MTgsIDAsIDU1MzksIDAsIDkyNTIzLCAxMjAxMDIsIDcxMzgsIAotICAgIDEyMDU1MiwgMCwgMTk0NjExLCA3ODc1MiwgMCwgMTI1MjAsIDgwNTgsIDk3MzIsIDAsIDUwODAsIDY0Nzc1LCA1MDM2LCAKLSAgICA1MDM1LCAxMjA1OTAsIDQyNjA0LCA5ODM2NTYsIDAsIDgwNzQsIDI3NSwgMTMyOTEsIDE5MDcsIDc4ODM4LCA0NDMyLCAKLSAgICAxMjcyNzEsIDUwMzMsIDEyNzI3MywgMTI3MjcyLCA0ODM2LCAzODg4LCA3Mzc5MiwgMTA3MjksIDY0NTQ2LCAxMjcyNjIsIAotICAgIDQzNzA0LCAxMjcyNjQsIDEyNzI1MSwgNjc1ODgsIDExOTAwMCwgMTI3MjUyLCAxMjcyNTUsIDg4NTgsIDY0MDksIDEyNzI1NiwgCi0gICAgMTIwMjUyLCAxMjgxMDAsIDAsIDAsIDY2MzIxLCAwLCAxMjgxNCwgMTI3MjQ4LCAzNDMyLCAxMDIxOCwgMCwgNjA5NCwgCi0gICAgNzY0MSwgNDI0NDUsIDAsIDkyNDg3LCA0MjQwNiwgMTY3NiwgNzQzMjAsIDE5NDYwNywgOTgzMTc3LCA1MDMwLCAwLCAwLCAwLCAKLSAgICA3Mzg2OSwgOTYyMiwgMCwgNjk5NDQsIDY3ODcsIDAsIDAsIDAsIDk4MzU4MywgMTA1NDQsIDEyOTE5LCAwLCA5MjIxOCwgMCwgCi0gICAgMCwgNjk5MDYsIDEyMDc4OSwgMCwgOTQ3LCAxMTk4MzUsIDE5NDU4NiwgMTk0NTg1LCAxMDk2OSwgMTE5OTM1LCA3NjEzLCAKKyAgICA3NDIyNCwgNDg1MSwgMTI1MTM4LCA3ODE1NiwgNzg0OTksIDcyMzkxLCA3OTI5LCA2NjkxMCwgMTk0NjgyLCAxMjc3NjYsIAorICAgIDc4NTAwLCA2NjQ4MCwgNjQwMzgsIDQyODMzLCA3NDUyOSwgMTIwNjQsIDcyMzg1LCA1OTYsIDk4MzgyMSwgNjk4NTAsIAorICAgIDEzMTkyLCA4NjUxLCAxMjAyMTcsIDEyNjU0MiwgMTIwMjE4LCAxMjk5NSwgNjQ4NjUsIDEzNzMsIDExOTg1NiwgMTEzNzUyLCAKKyAgICA1ODE2LCAxMTkwNjcsIDY0ODEwLCA0MjMxLCA2ODI1LCA0Mjg5NywgNDIzMywgNDIzNCwgNDIzMiwgMTIwODg5LCA3NDQxNSwgCisgICAgMTIwMjEwLCA2Mzg0LCA3MDM1MSwgNzgxMDgsIDg4NTEsIDY3Njk4LCAxMjg1NTMsIDgyOTU0LCA0MTYwMSwgODg3NCwgCisgICAgNzIzOTIsIDc3NDgsIDEyNTA4MywgMCwgMTI3MDI2LCAxMjc5MzksIDQxNjAzLCA5Nzg0LCAwLCA5MTg4LCA0MTYwMCwgMCwgCisgICAgMTIwNjE4LCAxMjgzNDMsIDE0NTcsIDM1MzUsIDEyODYzNSwgNjM4MSwgMCwgMCwgNjUyNDAsIDExOTUxLCAwLCAzNDA0LCAKKyAgICA5ODMwNzksIDcwNDg3LCA3MjQxMSwgMTc1OSwgMTIwODUzLCA0MTA3NiwgNjgzODMsIDY5OTcyLCAxMTkyMDUsIDY2NTc3LCAKKyAgICA5NDAxNCwgMTI3NzY0LCA2NTg1OSwgMCwgNzQwNCwgMCwgMCwgNjk5NzAsIDEyODM4NywgNjU5MDgsIDk4MzQsIDMwNTUsIAorICAgIDk4NTIsIDEyODM2MCwgNjUyODgsIDEyMTI5MSwgMTEzOTgsIDAsIDkyNDE3LCA5MzAxNiwgMTI4MzgwLCAxMjczMzcsIDYwMywgCisgICAgNzQzOTgsIDQzNTQ4LCAwLCA3MTg2NSwgOTE3ODI0LCAzMzUwLCAxMjA4MTcsIDY0MzE4LCAxOTQ2OTgsIDc4MTIxLCAzMzkwLCAKKyAgICA3NDQ4MywgNDMyNjUsIDkyMzk5LCA5MTc4MzAsIDc4NTczLCAxMTg4MDMsIDE5MTksIDM0MDAsIDEyMDY1MSwgODMyOTYsIAorICAgIDExNjQ3LCA4MzI5OCwgNjY0NDYsIDY0MTQxLCA4NTYyLCAyMTIxLCA2NDEzOCwgNDA0MywgODcxMiwgNjQxMzQsIDY0MTMzLCAKKyAgICAxMTI5NywgOTgzNjg4LCA5ODMxNTIsIDExOTY2LCA2NDEyOCwgNjYyODYsIDkzMDQyLCAxMjg4MzAsIDY0MTMyLCAxMDg2NywgCisgICAgNjQxMzAsIDY0MTI5LCAxMjEyNTUsIDQzMzc0LCA5Nzc5LCAyNzY0LCA2NjAwMiwgMTAxNjcsIDk0NzEsIDgzNDU4LCAKKyAgICA2NjAyMSwgNzQ1MDksIDAsIDU0NTcsIDU0NDAsIDg4NTcsIDkzOTgxLCA2NTI4MiwgMjg0MywgNTM1NSwgNjg4NTgsIAorICAgIDk4MzM0MiwgNjk5NzEsIDUxOTQsIDExNjU3LCA0Mzk4NCwgMTI4MjkyLCAxMTM3MjQsIDEyODg3MiwgMCwgMCwgNzIzOTMsIAorICAgIDEwNzE3LCA2NDU3MCwgNTYzMCwgNTM5NiwgNjQxNDMsIDEwNjgyLCA4MzMwMCwgMTA2MDIsIDgwMCwgNDI0OTksIDY2MTg2LCAKKyAgICAwLCAwLCA2NDkzMCwgMTE2MzEsIDY0MTQ2LCA2NDE0NSwgNjQxNDQsIDc2MiwgMTMxNzIsIDc1MDA4LCA3NzkyOCwgNDM5MjksIAorICAgIDEwOTA2LCAxMzUzLCA2OTYwLCA4MzAzMiwgMTI4Nzc5LCA1ODI4LCA4NzI0LCA5MTc4MDYsIDg5MzMsIDE2MDEsIDQyMjQ0LCAKKyAgICA4NTgsIDcwODAsIDY0MTA5LCA2NDEwOCwgODA5MCwgNzA0NTUsIDcyMzg4LCA3NDYwNiwgNTg3LCA5MTc5MDcsIDgyOTcxLCAKKyAgICAwLCAwLCAwLCA3ODIxNCwgMjc1MCwgNzQyMTgsIDU1NiwgNjQxNTgsIDY0MTU3LCA3ODcwNywgMTIyMTMsIDgzMjkwLCAKKyAgICAyNzYwLCA4MzI4NCwgODMyODUsIDc4NzA4LCA4MzI4NywgNjQxNTYsIDY0MTU1LCA0MjQ5NiwgODMyODMsIDY0MTUxLCAKKyAgICA2NDE1MCwgMTI2NzksIDEwMDUzLCAxMDQyMSwgMTEwOTMsIDY0MTUzLCA2NDE1MiwgMTI1MDE2LCAwLCA0ODM5LCA2ODUyNywgCisgICAgMCwgMTg3NCwgMTE5MDE2LCAxMjAwOTEsIDY1NzcsIDY0MTI1LCA2NDEyNCwgNjQxMjMsIDAsIDEyNzUzMSwgOTI1MzQsIAorICAgIDcwMDcsIDc1OTAsIDY1NDQzLCA5MDM2LCA3ODg0NywgNjQxMjIsIDY2Mzg5LCA2NjYwOSwgMTIxMzQ3LCA2NDExNywgCisgICAgNjQxMTYsIDYyODcsIDY0MTE0LCAyNzI1LCA2NDEyMCwgNjQxMTksIDQzOTgxLCA0MjEyOCwgMTI3ODQyLCAxMTc3LCAKKyAgICA2NTYwMSwgMTIzMjIsIDY0MTA2LCA2OTY0MCwgOTI4OTUsIDY0MTAyLCA3ODU5LCAxOTQ1LCA2NDA5OSwgMCwgMTA0NTMsIAorICAgIDY0MTA0LCA3MTg4LCA3OTk3LCAwLCA3Mzg5LCA5ODMxNjEsIDg3MDUsIDY0MDk3LCA2NDA5NiwgOTU3MSwgNTI4LCAKKyAgICAxMjg1NDUsIDQ0MDE3LCAxMTQyOSwgNzEzNDcsIDAsIDk4MzA3NywgMTIwODY0LCA3Mzg0MSwgODMzMzksIDgzMzQwLCAKKyAgICA5MDU2LCA2NDMxMywgNjE4OCwgNzQzNjAsIDYxNTUsIDY0MDY4LCAxODIzLCA2NDA2NiwgNjQwNjUsIDY0MDcyLCA2NDA3MSwgCisgICAgNjMsIDcyMzMsIDkyMjEyLCA3MjQxNCwgNDE5MDQsIDY2MzksIDY0MDY0LCA5ODM3NzUsIDEyODM0NCwgMTIxMzg4LCAxMTc2LCAKKyAgICAxMTg5NTksIDEyNzkzMCwgODE2MiwgMTI3MDE5LCAxMjgxOTcsIDkyNzQ3LCAxMjA1MTksIDQyOTMxLCA2NjI0MiwgMTE0MTUsIAorICAgIDQzMzMsIDk4NTUsIDY0MTEyLCA2NDY0MiwgMCwgNTM4OCwgMCwgMTIxMjcxLCA5ODM2NDksIDc3MTQsIDY2MjIyLCA2OTkwMiwgCisgICAgNzc2OCwgNzI0MDMsIDQxOTksIDY0NzA4LCA2NTA2NCwgNzAxMTcsIDAsIDg3MDgsIDk1NjAsIDY0MDc3LCA2NDA3NiwgCisgICAgODk5NiwgNDk5MiwgNDQ3MSwgNDI2MjIsIDY0MDc5LCA2NDA3OCwgOTIxNzksIDcxODc4LCAxMjY1NzAsIDEyMTI1NiwgCisgICAgNjQ2MTUsIDQxOTE1LCAwLCAxMjA3NSwgNDIwNDEsIDE5NDgyNSwgNTE3NCwgOTgzMjE3LCAwLCAxMjc1NTcsIDMxMjMsIAorICAgIDEyNTEwMCwgMTI2ODUsIDExOTIxNiwgODQwOCwgNjQ3MDQsIDgzMzI4LCAwLCA5MjIzLCAwLCA0MTYxNiwgNjc5OTksIAorICAgIDczNzk3LCA4MzMyNywgMTExNiwgNzUwNjcsIDQzMDQ5LCA3MTM2LCA0MzA1MCwgODU0OCwgMTIwNDg1LCAwLCA3NTAzMSwgCisgICAgOTE3NjIyLCAxMjgxNjgsIDEzMTE1LCA0MzY3NSwgNjQwOTEsIDkzMjIsIDgzMzM4LCA4MzMzMSwgNjQwOTUsIDY0MDk0LCAKKyAgICA4MTExLCA2NjI0NywgNDIzMzIsIDY0MDg5LCA2NDA4OCwgNjE5OSwgNjcyNDksIDY2Mzk4LCAxMTQzNCwgNjQwODMsIAorICAgIDY0MDgyLCAxMTMyOSwgNzczNywgNjQwODcsIDY0MDg2LCA2NDA4NSwgNjQwODQsIDgzMDMzLCA5OTI3LCA0MTMzNSwgNDExOCwgCisgICAgMTc5NywgODMzMTIsIDQxMzM0LCAwLCA0NiwgNDM0NDgsIDgzMzA5LCAyOTgsIDgzMzAzLCA4MzMwNCwgODMzMDUsIDQyNjI3LCAKKyAgICAxMjUwMTEsIDMyLCA2MTg3LCA4MzAzNywgMTE0OTUsIDExNDU5LCAzNjY1LCA4MzAzNiwgNDI4NzEsIDAsIDE5OTIzLCAKKyAgICA3NDMzNSwgMCwgMTI3MTkyLCA2NjIzOSwgNDIyNjQsIDY0NDAzLCA0NDEyLCA3MjQwLCA4MzMxNCwgNzE0NDQsIDk4MzQ2OCwgCisgICAgNjU3NTgsIDEyNzUwLCA0MTgxLCA4NTQ0LCA4MzQ2MSwgNjgwNTMsIDgzNDA3LCAxMjAxOTgsIDY5ODA5LCA2MTgxLCAKKyAgICA2NTAxNCwgOTgzNDIyLCAxMjg0ODQsIDk4MzE5NiwgMzYzOSwgMTE5NTg4LCAxMTg4NTEsIDgzMDM5LCAxMTg5MDQsIAorICAgIDEwMDczLCAxMjAyMDYsIDgzMDM4LCAxMjcxODYsIDY4NDA5LCA0Mjg0NCwgNzQ5OCwgMTA5OCwgOTI1NjUsIDEyMDIwNSwgMCwgCisgICAgMTI4OTE1LCAxMDIwNywgODc4OSwgOTMwNzAsIDEyMDMzOCwgOTI5NzMsIDEyODMyNSwgOTIzNCwgOTE3ODk1LCA2MTgyLCAKKyAgICA5ODM0NzUsIDY1MDU4LCAxMjAzMTksIDk4MzQ4MCwgNjgwNjQsIDkxNzgzMSwgNTQ3MSwgOTQ2MSwgNTU3MywgMTE4OTM2LCAKKyAgICA1NDczLCA0NCwgMCwgNjYyNDQsIDk0MDcyLCAwLCA2NjIzOCwgMTI4NDQsIDY2ODk0LCAxNjIyLCA3NzY3LCAxOTAwLCAKKyAgICA0MTMzOSwgMTE0NTgsIDExOTA2MSwgMCwgNjU4MSwgNTU3NiwgMTI4NjE4LCA0Mzg1NSwgNDEzMzcsIDAsIDQxNjMxLCAKKyAgICA4OTQ3LCA2ODM5MCwgNjk2ODMsIDQxNjk0LCA5ODM4NDgsIDcyMzk2LCA3OTA4LCAwLCAxMDQwOCwgNjU3OSwgOTE3ODcyLCAKKyAgICA2NDYxOCwgMCwgMTIwMTQ3LCAyMTM4LCA2NTgzLCA3NzYxLCA3MDAwNSwgMTIwNTA0LCAxOTQ4MjgsIDEyODk2MSwgNTA1OCwgCisgICAgNDEwMTAsIDk5OTIsIDEyODI5OSwgNTA1NywgOTE3OTQxLCAwLCA3NDUzOCwgNTA1NCwgMTE4OTUxLCAxOTQ5NzEsIDc4NjA2LCAKKyAgICAwLCAxNDM3LCA0MTYxNywgNjU4LCAzNDk3LCAxMjg1MDksIDc0ODYsIDUwNjEsIDUwNjAsIDQyMzUsIDEyNzg3OCwgCisgICAgMTI4MzIyLCAxMjg1MjksIDEyMTEzLCA0MjM2LCA0NzI3LCAxMjg0ODcsIDAsIDc2OTMsIDEwNzQ5LCAxMjAzMzIsIDc0ODgsIAorICAgIDU3NzMsIDk3OCwgMTI4MTM0LCA5ODM2OTksIDQxNjE5LCAxMDIzOSwgNjg2MTEsIDcxODY0LCA2NjIwOSwgMTI3MjMzLCAKKyAgICA3NDEzNSwgOTc0OCwgOTgzOTU2LCAxMjc1MjQsIDAsIDk4MzMxNiwgMTk0Njc2LCAxOTQ2NzUsIDEyODA4MSwgMCwgCisgICAgOTgzMzEzLCA5ODMzMDIsIDAsIDEyNzg2NSwgMCwgOTI3NzYsIDkzNDEsIDc4ODIxLCAyMzc5LCAxMTMyNSwgOTE3OTAyLCAKKyAgICA2NDY2OCwgNjc4NTQsIDgxMjUsIDEyMDU0NSwgNjc0MywgODMxNjQsIDkxNzk0MCwgMjM2OSwgODM0MDYsIDk4MzMyMywgCisgICAgMTI3OTY2LCAxMTkyMzUsIDcxODY4LCA3MzkzNiwgNzAwOCwgNDM2NjAsIDEyMDM0NiwgMCwgNDM4NDEsIDIzNjcsIAorICAgIDEyNzgyNywgOTgzODU3LCAyNjQsIDIzNzUsIDgwNjAsIDYxOTQsIDExOTg1OCwgMTg0NCwgMTE5MDg0LCAxMjkwNDksIAorICAgIDYwMTksIDEyODk3NSwgMCwgNjk2MSwgMCwgNzA0MzUsIDY3MTcxLCA4ODAwLCAxMjczMzIsIDQyODYyLCA0NDYzLCA2NTU4MSwgCisgICAgNjE5MiwgMTE5NjEwLCA0Mjc3MSwgMCwgOTIzMzMsIDcyNSwgNjUwNDIsIDkzMDE0LCAxMjA4MDAsIDc0OTQyLCAxMjg5MiwgCisgICAgMCwgNjcxNDksIDc0ODk5LCA3MzkzMSwgMCwgMTIwNDk1LCAxMjcyNjEsIDEyMjI0LCA5ODMxMjgsIDEyOTA2MSwgNTA3NCwgCisgICAgNTA3MywgMTIxMTY0LCA4OTgzLCAxMTg5ODEsIDc0NDkzLCA3MTIzMSwgNTA3MiwgNzQ1NDcsIDYxOTgsIDExNjE0LCAwLCAKKyAgICAxOTYsIDk4MzE1NCwgMCwgOTgzOTM2LCA0OTI5LCAxMjAzNDIsIDEyOTE0NSwgMCwgMTI3OTg3LCAxMjE0NTUsIDQyODQ3LCAKKyAgICA5Mjk1MywgMCwgNjc3NTQsIDQ5MzQsIDk4Mzk4MSwgNDEzMjMsIDk3NTgsIDAsIDkyMjg5LCA3MDE4MSwgNDI1ODQsIDAsIAorICAgIDQzMjksIDQxMzIxLCA0OTc5LCAzMDQ4LCA3NzUyLCA0MTMyMCwgOTgzMDQyLCA2NDY2NywgMTI4MTksIDk4Mzg3MCwgNTA3MSwgCisgICAgMTI3OTE1LCAzNjQyLCA2NzMzNCwgNTA3MCwgMTAwNDIsIDExMzgxMywgMzk4NywgNTA2OCwgOTgzNDYwLCA4OTA5LCAKKyAgICA3ODY1MCwgNzg2NDksIDY5OTE3LCAxMDYzNiwgNzM5ODEsIDExODA2LCA0MzE2NywgNDUzMSwgMTI0NSwgOTEwNSwgNjY0NjMsIAorICAgIDQ5MjEsIDEyMDIxOSwgNDkyNiwgNjU1NDQsIDczODg0LCAxMjEzNTksIDEyODAyOCwgMCwgNjQ3MDksIDgzMjY5LCAKKyAgICAxMjg4NTQsIDc4ODgwLCA0OTIyLCAzMjUsIDk5MiwgMTE5NTY4LCA0OTI1LCAxMjcyMTgsIDAsIDk1MjYsIDQ5MjAsIAorICAgIDEyODYxNywgOTQ4LCAwLCAxMjAyMDgsIDQ5MzAsIDEyNzg1NywgOTIxNzUsIDEyMDI3NSwgNDkzMywgMTEzNzc5LCAKKyAgICAxMjEwNDksIDExODk4NSwgNDkyOCwgOTgzMTQ5LCA4MzUxNCwgNzQ3NzAsIDEyMDE5NCwgMTI2NTQ4LCA3MjIsIDE5NDkzNCwgCisgICAgMTk5MDgsIDEyNjM3LCAxMjc0ODUsIDgyOTk5LCA4NzUzLCAxNTA5LCAwLCA1NDY4LCA5NTExLCA0MzQ5MywgMTI3NDc3LCAKKyAgICAxNjcyLCA2MjA1LCAxMDg2NCwgNzQ1ODYsIDEyNzQ4MCwgNzAxMDMsIDkyNjk0LCA3ODU1NSwgMTI3NDY4LCA3Mzg2MywgCisgICAgMTI2NTc3LCA2ODMzNiwgNDE2MDcsIDEyMDExNSwgMTY3OSwgMTIwMTE2LCAxMjAxODAsIDkyNzYxLCAxMjc0NjIsIDcwMDUsIAorICAgIDQxNjA5LCA5NTgwLCA3MDQzMSwgNDAxLCA2OTk0OSwgNDM3NzksIDY5NjgsIDU3NjEsIDM0MiwgODU1MywgMTI3OTAwLCAKKyAgICA4MTQzLCAxMjcxMTUsIDExOTgzLCA5MjI0OSwgNjI0LCA3NDUwOCwgNDA1NywgNDM3ODgsIDUwNzgsIDc0MjU4LCAxMjQ3OCwgCisgICAgMCwgNTA3NiwgMTI4NzAyLCA4Mjk5MSwgMCwgODI5NSwgNjg1LCA5MDI1LCAxNTI0LCAxMjYxOCwgMCwgNTUzOSwgMTI5MTgyLCAKKyAgICA5MjUyMywgNzE0MzUsIDcxMzgsIDEyMDU1MiwgNDM1MDQsIDE5NDYxMSwgNjY5MTQsIDY1Nzk0LCAxMjUyMCwgODA1OCwgCisgICAgOTczMiwgOTI0ODAsIDUwODAsIDY0Nzc1LCA1MDM2LCA1MDM1LCAxMjA1OTAsIDQyNjA0LCA5ODM2NTYsIDAsIDgwNzQsIAorICAgIDI3NSwgMTMyOTEsIDE5MDcsIDc4ODM4LCA0NDMyLCAxMjEzMTMsIDUwMzMsIDEyMDM0MSwgMTIwODE4LCA0ODM2LCAzODg4LCAKKyAgICA3Mzc5MiwgMTA3MjksIDY0NTQ2LCAxMjcyNjIsIDQzNzA0LCAxMjcyNjQsIDkyOTU3LCA2NzU4OCwgNjgwNjEsIDEyNDk4MywgCisgICAgNzAzNjAsIDg4NTgsIDY0MDksIDc2NjMsIDEyMDI1MiwgMTI4MTAwLCAxMTkwMDcsIDAsIDY2MzIxLCA5NDA1MiwgMTI4MTQsIAorICAgIDEyNzI0OCwgMzQzMiwgMTAyMTgsIDAsIDYwOTQsIDc2NDEsIDQyNDQ1LCAxMjg3OTIsIDkyNDg3LCA0MjQwNiwgMTY3NiwgCisgICAgNjczNjIsIDc0ODYyLCA2NzM2NSwgNTAzMCwgNjczNjQsIDExODgxMCwgMTk1MDA4LCA3Mzg2OSwgOTYyMiwgMTEzNzYzLCAKKyAgICA2OTk0NCwgNjc4NywgNjczNjEsIDk4MzI3MCwgMCwgNjgzMTksIDEwNTQ0LCAxMjkxOSwgNzE0ODQsIDcyMzk3LCAwLCAwLCAKKyAgICA2OTkwNiwgMTIwNzg5LCA5ODMwNDEsIDk0NywgNjc2OTUsIDY3MzY3LCAxMjg1MjgsIDEwOTY5LCA2NzIyOCwgNzYxMywgCiAgICAgOTI1NjIsIDExOTkzNiwgNDc5NSwgMTE5OTMwLCA3MDE4LCA3Mzc2LCAxMjAxODEsIDEyMDE5MiwgMTIwMjY4LCAwLCAKLSAgICA0MzU2NywgNzQwNTYsIDkxNzkxMCwgMTE4MzMsIDExOTkxOSwgNzIxNiwgNjUyMzIsIDcyMTcsIDI1MSwgNzIxOCwgNzg5NSwgCi0gICAgNDM5NSwgNDM1MzgsIDExOTkyNiwgMTE5OTI5LCAxMTk5MjgsIDcyMTMsIDExOTkyMiwgNzIxNCwgNzIxNSwgOTgzODM2LCAKLSAgICA3NDE0MSwgODg4MCwgNzY4NSwgNjY0NTksIDEyMDE3MywgNjU1NDAsIDExOTYxOCwgNjI1LCA4MTg3LCA0Mjg2MSwgMTExMywgCi0gICAgNzIzNiwgNzkxNSwgMzYzMCwgMTIwMTc2LCA4MTc5LCA3NDI2NCwgNjc4ODYsIDkzMTYsIDEwOTgwLCAyNDg5LCA2NTYyNCwgCi0gICAgODE1MCwgMTM1OSwgNjc2NTIsIDEyNzMyOSwgMTI3MzMwLCA3Mzc1NiwgNTA0MiwgNTA0MSwgNDI3NjksIDEyMDg0LCAKLSAgICAxMjczMjQsIDEyNzMyMSwgOTIyNzksIDEyNzMxOSwgMTI3MzIwLCAxMjczMTcsIDEyNzMxOCwgMTI3MzE1LCAxMjI4MywgCi0gICAgMTYxNiwgMzc5NSwgMCwgODc5NSwgNjYyNDUsIDAsIDAsIDAsIDExMzgsIDczOTA1LCAxMjY3NywgMCwgMCwgMzIzOSwgCi0gICAgMTI3MzExLCAwLCAwLCA4NDMxLCAwLCA0MjE2NCwgMCwgMTE3NzgsIDEyNjIwLCA2ODI2LCA3Mzc3MywgMTE5MDczLCA1MDQwLCAKLSAgICAwLCAwLCA5ODM0NDMsIDc4NDIwLCAwLCA1MDM5LCAwLCA3ODQxOCwgMCwgNTAzOCwgMCwgMCwgMTMxODQsIDc0MjkzLCAwLCAKLSAgICA2NDY0OCwgMCwgOTM1OSwgNzg0MTYsIDAsIDEyODc3MCwgNjUxNTcsIDY2NjIsIDAsIDAsIDM4NjMsIDczOTA5LCA0ODM1LCAKLSAgICA1NTI2NiwgNDM0MzIsIDEyNzgyMiwgNDMwOSwgNzEyNywgMTk0NTY5LCAwLCAxOTQ1NjgsIDEzMDEsIDAsIDQyNTg5LCA1NjksIAotICAgIDAsIDczODEzLCA3MTEsIDQzODksIDcxMzMsIDAsIDczODgwLCAxMTYxMCwgMTEzNjgsIDAsIDE5NDU3MCwgNDEzMzEsIAotICAgIDEwMDYsIDc0MjQwLCAwLCAxNTUwLCA4MjAxLCA3MzczNywgNzYyNywgNTQ5OSwgNTAzMSwgNzc5MDgsIDQyNzM4LCA2NTc4NCwgCi0gICAgNzc5MDcsIDY1MjY3LCAzNzU4LCAwLCA2NTc4MSwgNjQ3MzQsIDcwMDczLCAyNDQwLCA2NTc4MCwgNzc5MTMsIDg0NDksIDAsIAotICAgIDUwMDgsIDk4MzU3MiwgMjExOCwgMCwgMTIxMjEsIDgyNTUsIDU1MTIsIDczODc1LCAyMTI4LCAyMTMwLCAyMTMxLCAyMTI2LCAKLSAgICAyMTMzLCAxMTE5LCAxMjcwNjgsIDIxMTQsIDIxMTYsIDI0NTUsIDAsIDIxMjIsIDIxMjMsIDIxMjQsIDIxMjUsIDEyNzQ4NiwgCi0gICAgODcxNCwgOTgzODIwLCAyMTEzLCAwLCAyMTE1LCAxMjgxNzcsIDEyNzkwNywgNDM3MTMsIDUwNTIsIDY2MjIwLCA1ODIxLCAKLSAgICA2MTg2LCA2NTc3OCwgNjU3NzUsIDUwNTEsIDY1NzczLCAxNDI5LCA0MjY0NywgNTA1MCwgMzAyLCAzODgsIDQxMTE1LCA3MzUsIAotICAgIDY2MzcsIDU5MDcsIDY1MDg4LCAwLCAxMjcyNiwgNzQ1OTQsIDkxMTcsIDk4MzE4MSwgMTIwMDMsIDU1MTMsIDY2NjYsIAotICAgIDUwNTMsIDc0MjMwLCA1NTEwLCA3ODQ1MSwgMCwgNzg0NDcsIDI0NzAsIDc4NDM3LCAwLCAxOTI1LCAwLCA5MjIzNywgCi0gICAgNzQ4MDcsIDAsIDUwNDgsIDUwNDcsIDAsIDAsIDAsIDkyMzEzLCAwLCA3NDQ5NywgOTIzOTUsIDgwODksIDY5MjksIDYzOSwgCi0gICAgOTgzNTYzLCA2ODE3OSwgNjQ0NDIsIDAsIDkyMzQ4LCA0NTk5LCA0MTQwMiwgNjY3NCwgNDMzOTcsIDQzMjk0LCAxNDc2LCAKLSAgICA2NDgsIDAsIDY1ODE5LCAzMjMzLCAwLCA0MTc4MiwgNjk1MSwgOTQwMTcsIDk4Mzk3NiwgMzUzMCwgOTc1MCwgMTI4MzE3LCAKLSAgICAwLCA2NjU2LCA0MjYxOCwgMCwgNTA0NiwgODUxMiwgNjU4NTYsIDc0MjYxLCA4OTY3LCAwLCA1MDQ1LCA0MjAyNiwgMTkxNiwgCi0gICAgNzk4NiwgNTA0NCwgMTIwNTU2LCA5MDA2LCAxMzEyOCwgNTA0MywgMCwgNzg1MywgNzQwNjgsIDc0MDA0LCA5NjY5LCAKLSAgICAxMjM0MSwgMTI3MDMsIDg0MDIsIDAsIDExOTA3MCwgOTE3NjAwLCA0MTc1MCwgMzU4NiwgNjQ1MDgsIDQzMTQ4LCAwLCAwLCAKLSAgICAxMTk2MDYsIDY3OTgzLCAxMzI5NiwgNTE3LCAwLCAxMjg1MzQsIDE5NDk0NiwgNDE1MjgsIDEyMywgNjU0NTQsIDAsIDAsIAotICAgIDc0NDc4LCAxMDUzMSwgNzc4NCwgNDE1MjYsIDEwODI5LCA3Mzk5MSwgODA1NywgMTEyNiwgNzM4OTUsIDAsIDE5NDU5MSwgMCwgCi0gICAgMzkyNSwgNDI1MSwgODA2OSwgMTA1MTcsIDEyMDQzOSwgNDg5LCAwLCA0MjUwLCAxMjA0NDEsIDEyMDQ1MiwgNDMxNTEsIAotICAgIDk4MzE3OCwgMTk0ODUxLCA2NjIwMCwgMCwgMCwgMCwgNzg0MjMsIDAsIDAsIDg3MTEsIDYxODMsIDAsIDAsIDAsIDEyMDQ0OCwgCi0gICAgNzYyMywgMTE4OTI1LCAxMTg4ODksIDkyMzUsIDEyNzYwLCA3NDE3NiwgNjk2NjIsIDY2NDQ1LCA0MzU0MCwgMTAwNjIsIAotICAgIDM3NDMsIDExNTE0LCAxMTA3OCwgMCwgMTIxMzYsIDAsIDEyNjU5NywgMTIwNDM1LCAwLCA3NzI2LCAwLCAxOTkyMiwgMjY3LCAKLSAgICAzMzkzLCA0MjE5OCwgMTM3MSwgMTk0ODQ5LCA2OTIzMywgMjQ1OCwgMCwgNjIwMSwgMCwgNDEwNzQsIDQyNjYsIDEwNjUyLCAKLSAgICA0MTYxMiwgNDEwNzcsIDM0MDIsIDkwNTAsIDMzOTgsIDAsIDk4MzM0OCwgMCwgMzM5MSwgNDEwNzUsIDI0NzYsIDAsIAotICAgIDEyODAxNywgMCwgMTA2MjUsIDAsIDEyNzY3LCAxMzAxNywgNzg3NDMsIDY0MjYxLCA2NDkzNCwgMTI3NTM3LCAxMzAxNCwgCi0gICAgMTMwMTMsIDAsIDY2NzMsIDAsIDAsIDAsIDEyNDM4LCAwLCA5ODMzNDIsIDAsIDk4Mzg4MCwgMTI2NjM4LCA5MDUzLCAKLSAgICAxMzAxNSwgNzQ1MjMsIDAsIDcwNCwgNjYyMTUsIDYxOTUsIDk4MzgyOCwgNjY2MCwgNzg3NTgsIDkxNzc2MCwgOTE3NzkzLCAKLSAgICA0MjIxMiwgMTI2MjksIDExNDM1LCAwLCA1NTI1NiwgNjU1MzgsIDAsIDEyNzk0MCwgOTgzMzQxLCA3NDU0NywgMTI2NTg1LCAKLSAgICA2NTQ0OCwgNzgxMDAsIDEyOTQ4LCAxMTkwMDEsIDE5NTAwMiwgMTE5MjM4LCAxOTUwMDQsIDc4MDk5LCAxMjcwODUsIDAsIAotICAgIDEyODMyMCwgNDI4NywgODI3NiwgNDkwMiwgMTEzMSwgMCwgNzg0NTgsIDY2NzI4LCAxODE2LCAwLCA0MjUzMywgMTY4LCAKLSAgICA0Mjg0NSwgNDg5OCwgNjQyOTgsIDk4MzE0MSwgMCwgNDkwMSwgMTgyMSwgMCwgNTc4LCAzNjUzLCAwLCA3OTEsIDkxNjIsIAotICAgIDY5NzcsIDAsIDc4ODg5LCA3NDU2MSwgMCwgNzM3MzEsIDgzNTQsIDQzNTkwLCAxMTkzMDMsIDk4MzQ0OSwgNzU1NywgCi0gICAgMTE5MzM5LCAxMTkzMDEsIDgyMzQsIDcyNDEsIDAsIDEyMDY3MSwgMTE5MTY3LCAxOTQ5OTYsIDEyODExLCA2NTkyNSwgCi0gICAgMzk0NiwgNzgwNzgsIDEwOTk4LCA3ODA4MCwgNjczLCAxOTQ4NjcsIDY0Mzk3LCAxMjgyNzYsIDc0NTk5LCA3ODQ0OSwgCi0gICAgODg5MCwgMTk0OTc3LCAxOTQ5NzYsIDI0NDgsIDc4MDg1LCAxMDI2NywgODQyNCwgMjQ1MiwgNzgwODMsIDEyODgyNCwgCi0gICAgODcyOSwgNzg0NTYsIDAsIDc4NDUsIDkxNzkxNywgNzEzMDIsIDQ0MDgsIDQxMjIsIDY3NzIsIDExMDM5LCA4NzIzLCAKLSAgICAxOTQ5OTAsIDcxMzEwLCAxMTkzMDIsIDczMSwgMTE5MzA0LCA5MjI4NiwgMjQzOCwgNjQ4NTUsIDExOTMwMCwgMTE5Mjk5LCAKLSAgICAxMTc1LCAwLCA0MjEzNSwgMzczLCAxMTkxNzIsIDIxMTksIDExNDU3LCAxMTUyMSwgNzcyMywgMCwgMCwgMCwgNDE5NTIsIDAsIAotICAgIDUyNzMsIDIxMjcsIDUyNjksIDYzMzcsIDUyMDIsIDI0MDQsIDUyNjcsIDQyODIzLCAxMTI5MSwgMTk5MTUsIDUyNzcsIAotICAgIDEyOTYzLCAxMjc4NjQsIDYxODksIDQxMjUsIDEzMTQsIDEyMTMzLCAxMjAzNDAsIDExODg3MywgMTI3MSwgOTgzNjQwLCAwLCAKLSAgICA2NjAyNCwgNDE0ODIsIDM4NjQsIDc0NTM5LCAwLCAzODc5LCAwLCAxMjk3OCwgNDE2NiwgNDU3NCwgMCwgNzU2NywgNzQ1OSwgCi0gICAgOTgzMTYwLCA0MTM5MCwgNTM4NCwgNDE4ODIsIDY3NjQ3LCA5MjU0OCwgNTc1OSwgOTgzOTEyLCAwLCA0MTM4OCwgNjQ0NDYsIAotICAgIDQxMzkyLCA2NDI4OCwgNDEzODcsIDAsIDg3MDYsIDU1NTIsIDk4MzE4NywgNzAwLCAwLCA1NTUzLCAwLCA3MDg4LCA1MzU2LCAKLSAgICA3NDk5LCA2ODAwNywgNjY1OTYsIDc0MDY2LCAwLCAxMDI2MywgNTU1NCwgMCwgMTIzNDQsIDEwMzExLCA3ODExMywgNjY2NSwgCi0gICAgOTI2MjYsIDAsIDc2MTgsIDg1MTcsIDExNDU1LCA3ODQ0MCwgNjQ2MzIsIDY0NDQ3LCA1NTU1LCA3ODA4OCwgNzgwOTMsIAotICAgIDc4MDkxLCAwLCA0MjgwMywgNjUwMzMsIDkxNDMsIDY2NjgsIDE5NTA2NywgNjc5OTUsIDE5NTA2OSwgNjU2LCAxOTUwNzEsIAotICAgIDY1MDM3LCA0NTc3LCA2NDYyNCwgMCwgMCwgMCwgOTgzNjQ5LCA0MjY5LCA3Mzg4NSwgOTE3Nzc1LCA0Mjg0NiwgNjk2NDQsIAotICAgIDk1MCwgMCwgOTIyNzMsIDY2NTgwLCAxMTg4OTUsIDY2NjgzLCAxMDU1NCwgOTE3Nzc4LCAxMTkxMjEsIDAsIDUwOTgsIAotICAgIDkxNzc3MCwgMCwgMTE5MDk5LCA1MDk3LCA0OTM1LCA5ODQ4LCAxMDM4MSwgMCwgMTI4ODcwLCA5ODM3MDEsIDM2NTEsIDAsIAotICAgIDEyMDczMCwgMTI3NTU2LCA1MTAyLCA1MTAxLCAxMDI2OSwgMTI5ODMsIDgxMzgsIDQ1MTcsIDE5MzIsIDUxMDAsIDE0MzksIAotICAgIDEyMDkzLCAxMjQ3LCAxMDAzNCwgMTk1MDY0LCA1MDk5LCA3ODM3MywgMTQ0MSwgNDIwODcsIDMwNjMsIDY1MCwgMCwgNzgzOCwgCi0gICAgMCwgMTk1MDQxLCAxOTUwNDAsIDExOTE0MiwgOTAzMSwgMTIwNzkwLCAxMjg1ODIsIDkwNzgsIDg1NDUsIDY2MzU2LCAKLSAgICAxMjg3OTksIDAsIDkxNTQsIDkxMTgsIDEyNjU0MywgMCwgMjY3NiwgMjI3NywgMCwgNzM4MTIsIDYxOTAsIDg1OTksIAotICAgIDE5NTA1MywgNjk5MTgsIDEwNzk1LCA5ODU3LCA3MDE0LCA5ODU2LCAxOTUwMzMsIDkyNjIwLCAxMjEyOSwgMCwgODQ4MSwgMCwgCi0gICAgNjIwMiwgMTk1MDM1LCAxMDkyMCwgMTI4MjM3LCA1MjAzLCAxOTUwMzksIDE5NTAzOCwgNTEwOCwgNTEwNywgNjU4MTgsIAotICAgIDY2MDE5LCA5NzYyLCAwLCA1NTQxLCA3NDc3MiwgMCwgMTI2MTMsIDUyODQsIDY2NTcsIDIwNywgMTI4ODA2LCA0Mjc1LCAKLSAgICA3NDgxOSwgODU0LCA2ODE0NywgNzQzODEsIDAsIDc4Nzg2LCA1MTAzLCAxMjc4NjEsIDY0MzQ4LCA0MTM2OCwgNDM5NzQsIAotICAgIDQ4OCwgNjk4MTEsIDAsIDcxMzM5LCAxMDE1NywgMCwgNDMwMzQsIDExNDM4LCA2NDY3NCwgMCwgOTI2OTQsIDY4NDMxLCAKLSAgICA0MTc3MSwgNTEwNiwgNjY2OSwgODUwNCwgNjUxNTQsIDY5ODEzLCA0MTM2NywgNTEwNSwgMTI3NTA5LCA2OTcyMCwgNjQ3NiwgCi0gICAgNTEwNCwgOTgzNzQ5LCAzMDQsIDMxNzYsIDExOTAxMCwgMCwgOTMyLCAxMjA2MzMsIDY1NjcsIDIzOCwgNjk2NTYsIAotICAgIDE5NTAxMSwgMTk0NTk1LCAxOTkwNSwgMTIwNTc3LCAxOTUwMTUsIDc4ODcwLCA0MTA0NCwgNjc2NDAsIDE5NDkwMiwgCi0gICAgNDIwNTUsIDk5MTIsIDY1OTM5LCAxMDY3MCwgNzQwOTMsIDEzMjczLCAwLCAxMjU1MiwgMTk1MDE5LCA4ODAzLCAzMDksIAotICAgIDY2MjIsIDgxNTEsIDEwODU4LCA3ODcwNiwgNjc2MzYsIDAsIDEyNTY4LCAwLCAxMjU1MywgMTA4MTQsIDQzMjc1LCA2OTUwLCAKLSAgICA5NzEyLCA2ODY4MCwgNDM5NzAsIDk4MzE5OCwgNjUxNjUsIDkyNzI1LCAwLCA2NjQ2NiwgMCwgMCwgMCwgNjY3MjUsIDYxOTEsIAotICAgIDExMzUxLCAxMDQzNywgMTEzMTYsIDY3NjM0LCA0Mzc2MywgMCwgNDE3NTQsIDY3NjM1LCA5MzcwLCAyNzIwLCAxOTQ5NzUsIAotICAgIDY4NDYyLCA4MjMyLCAxMTg4MTcsIDAsIDMyMjIsIDAsIDAsIDAsIDY2NjYzLCAwLCAwLCAxMDgzNCwgMCwgMCwgNjU3MzIsIAotICAgIDk0MDk1LCA5MTc1NDcsIDkyNjgyLCA2NzY3OSwgMTk1MDIwLCAwLCA3NzgxLCA0MTM4MywgNjQ1NjgsIDAsIDEyMDczOCwgCi0gICAgMTIwNzcsIDAsIDY0NTg2LCA5MTc2MjAsIDQyMzk2LCA1NTI1NSwgMzQ3NSwgMTI4MDM1LCAyNDc5LCAwLCAzNjMyLCAKLSAgICAxMjA3MjgsIDEwNjk4LCA4Mzc2LCAzNjQ4LCAxOTQ5NjAsIDc0ODQ0LCA2NzYzOSwgMzYzNiwgNjc4OTQsIDM2NTAsIDg4MzcsIAotICAgIDY1MjI5LCAxODQzLCA0MjI4MywgNDMyNTAsIDQxNTYyLCA5MTAwLCA3NDU0OCwgOTE3NjMwLCAzNjQwLCAxMjcxOTAsIAotICAgIDQyMzIxLCA3Mjg0LCAxOTQ5NzQsIDE5NDk3MywgMTk0OTUwLCAxOTQ5NDksIDE5NDk1MiwgMTk0OTUxLCAxMjY2NDksIAotICAgIDE5NDk1MywgNDIwODAsIDI1MjksIDAsIDAsIDAsIDQyMDgzLCAxMjA2NzgsIDY4Mzk4LCAxOTQ5NTcsIDY3NjE5LCA2NjM2NywgCi0gICAgMTk0OTU4LCA5NjM0LCA5MjM4MCwgOTk4OCwgMCwgNDEwNjgsIDAsIDQyOTUsIDY1MjY0LCA2ODAwNiwgMCwgOTI1NDUsIDAsIAotICAgIDc4NSwgODIzNiwgMTI4NjQ3LCA5MDI3LCA2ODE2MCwgNjc2MjMsIDY0MzgzLCAxMjAyNjUsIDkyNSwgMTI3MTU2LCAwLCAKLSAgICA0MTk4NSwgNDEwNzEsIDk1ODYsIDAsIDQxOTg0LCA5MjE3LCAwLCAwLCAwLCA5MTg2LCAyMDY3LCA0MDE2LCA5ODM4MDMsIDAsIAotICAgIDM4MSwgMTI5MzYsIDAsIDQyMDc3LCAwLCA2OTg4MCwgNTE4NCwgNDIwNzgsIDE5NDk0NywgMTA4MTAsIDEyODUzMSwgNDU4NSwgCi0gICAgMTk5NDMsIDU4NjAsIDY3NjMzLCAwLCAwLCA4MTIsIDM2MTUsIDAsIDUxNzgsIDQ0MDAwLCAxMjA1NDgsIDc4ODA3LCA1MTg4LCAKLSAgICA3NDI4NywgNjc2MjksIDM2MDUsIDEwNjkyLCAxMTY2LCA2NDQyOSwgNDI2MzksIDkyNCwgMCwgNjc2MzEsIDQyNjE2LCAKLSAgICAxMjA2NzAsIDI0NDIsIDEwNzAzLCA3ODc4OSwgNjc2MzIsIDkxNzkyNCwgMTI3NzEsIDEyNzM2LCAxMjc1MywgNjY3MDgsIAotICAgIDczOTMzLCA2NzYyNiwgNDI0MDEsIDAsIDY5ODcyLCAxMjczNzMsIDQyMjg4LCAxMjc1MSwgMCwgODU0MiwgMTMxNDUsIAotICAgIDE5NDk2MywgMjQ2OCwgNjY3MDYsIDQxMjk0LCAzNjI2LCAzODgzLCA2NDM4OCwgNDI0NzksIDAsIDQxMTE3LCAwLCA5MjU4MCwgCi0gICAgMCwgMCwgNjc2MjQsIDAsIDEyOTAsIDAsIDY1NTg1LCAyNzE1LCA4MDYsIDY1MjA4LCA0MTg4NCwgOTE3ODgzLCAxMzE4LCAKLSAgICA2NDczMSwgMTI2NTc4LCAwLCAwLCA2NjMyNSwgMzQ2NSwgMjQwNSwgOTI0MCwgMCwgMTI3NTYsIDY1MjU5LCAwLCA5ODM3ODEsIAotICAgIDEyNzUyLCA1ODMzLCAxNDMyLCAwLCA0MTg4MywgNzM5MTIsIDk3OTksIDAsIDQxODg2LCAyNDgwLCAwLCAyMDYyLCAKLSAgICAxMjcyOTMsIDY0OTQsIDU1MzcsIDc4NjU2LCAwLCAxOTQ1ODcsIDAsIDEyMTEsIDAsIDAsIDAsIDExODgzMiwgMTIzMTgsIDAsIAotICAgIDAsIDY4MDA1LCAxMDYyMiwgOTgzNzc5LCAwLCA3ODY1NCwgNjU2NiwgNzg2NTksIDAsIDczNzgwLCAxMTkxOTYsIDY0ODY0LCAKLSAgICAwLCA3ODY2MCwgMCwgODI4NCwgMTMwODEsIDAsIDM1ODksIDQyMDUxLCA0MDM1LCA2NDkyLCA5MjIzNiwgNDI2NSwgNjY0MiwgCi0gICAgMzk3NywgNzQxODYsIDQxNzc4LCA4MzYsIDExOTIxNiwgMjQ4OCwgMCwgNDU4MiwgMCwgMCwgNDE3NzcsIDEyOTI2LCAKLSAgICA5ODMzNzcsIDc1MjgsIDEwNTUwLCAwLCA5MjcwNiwgMCwgMTA5NjEsIDAsIDEzNzQsIDY0ODc4LCAxMTkwMTQsIDAsIAotICAgIDQyMzg5LCA0MTM3NCwgMjI4NiwgMCwgNzg0OTIsIDQxMzc3LCAxMjc5MDksIDAsIDQwMCwgMTI1OTcsIDEyMDU4NiwgMCwgMCwgCi0gICAgNjY2MSwgOTgzMTQ1LCA2NDgyNywgMCwgNzM4MTcsIDM5MCwgMCwgNzEzMDEsIDk4Mzg2MiwgMzQ3MywgNzcxOCwgMCwgMCwgCi0gICAgMCwgNTUyODUsIDAsIDAsIDAsIDExOTY5LCA5ODMzOTAsIDEyNzg0MSwgNjM2NSwgMTg4NywgNjc2MywgOTgzMzcwLCA4MDgwLCAKLSAgICA3MDA2LCAwLCA5ODMzNzEsIDY3NTcsIDY0MzUxLCAxNTQ0LCAwLCA2NzY2LCA2NDY3NywgMTIwNzE2LCA5ODMzNzIsIDYxNDYsIAotICAgIDAsIDc3MSwgOTgzMzczLCAwLCAxMjgxMiwgMTMxNjgsIDQyMjcyLCAxMjIwMCwgOTE3OTI3LCA3OTA0LCAwLCA5NTMsIAotICAgIDEyOTE3LCAxMTk1NjAsIDEyMzAwLCAwLCAxMTQ5MSwgOTcyNCwgMTAzNDEsIDk4Mzc3MywgOTUyNCwgNzQ5MCwgMTEzODksIAotICAgIDc0ODksIDMzNzksIDAsIDc0ODcsIDAsIDQ3MSwgNzQ4NCwgNzQ4MiwgNjc1MywgNzQ4MCwgNTc2NCwgNzQ3OCwgNzQ3NywgCi0gICAgNjUwMSwgNzQ3NSwgNjkxOCwgNzQ3MywgNzQ3MiwgMjQ3NCwgNzQ3MCwgNzQ2OCwgMTAyMzIsIDEwNjE1LCAxMDIxMywgCi0gICAgMTI3Mjg4LCA5MjM1NywgMTAwNDksIDExODM0LCAzNTQ0LCAwLCA2MDE3LCA2NTMxMSwgMTI3NDgxLCAxMjAyMTYsIDEzMzA2LCAKLSAgICAxMDUzMywgNzg3MCwgNzM5NDksIDc2MjUsIDAsIDEyMDU0NCwgMCwgMCwgOTI2NjAsIDAsIDAsIDAsIDE5OTYxLCAyNDcyLCAKLSAgICA0MjY2NSwgOTIzNDEsIDAsIDIxMzksIDQyNTYsIDEyMDc3NiwgNzQzODAsIDAsIDQyNjc1LCA0MjY1OCwgMTI4NDUsIDAsIDAsIAotICAgIDY1MTM4LCAxMTkzNTUsIDY3ODYyLCAwLCA2NTY3MSwgNzA4MywgMTIwMDA4LCA4MDY2LCA3Njc4LCA3NDg2NSwgMCwgMCwgMCwgCi0gICAgMCwgNzE4NiwgMCwgMTIwNTU1LCAwLCA0NDUsIDEyMDU2NiwgMTI4MzA4LCAwLCAwLCA4MzMwLCAwLCAwLCA0Mjc5NywgCi0gICAgOTgzMTUwLCAxMjAyMTUsIDAsIDM5MDIsIDAsIDE3NzAsIDAsIDEyODg2NiwgMTU2MCwgMTIwMjA5LCAxOTQ5NzIsIDQ1ODQsIAotICAgIDczODQzLCAwLCAxMTcxMiwgMTA4NjYsIDExODkyOCwgMTExOCwgNzEzMzQsIDAsIDAsIDEwODEsIDc0MzYsIDY4NDIwLCAKLSAgICA3MjUyLCAwLCA1OTk2LCA2OTkyMSwgNDkwMywgMCwgNDEzODYsIDUxNjIsIDExOTE4OSwgMTMzMCwgMCwgNzEzOSwgMCwgCi0gICAgMTIwNDcsIDQxMzg0LCAwLCAwLCAxODQ4LCA0MzM0LCA2MzI0LCA0MTk3NSwgNjQ3NzcsIDEwNjc0LCAxMjMwOCwgMTIxODYsIAotICAgIDAsIDAsIDk4Mzc0MSwgMTI3MTUsIDY4MDAyLCA5ODM0NzksIDEyNjYzMCwgMjAxOCwgNjY2NzIsIDQxOTc5LCA2NjY4NSwgCi0gICAgMTE5MTU3LCA2ODAwMCwgOTI0NjQsIDAsIDEyNjk4NCwgNjgwMDEsIDkzMzQsIDkyNzA1LCA5MjMxNSwgNzAxMDEsIDc5NzUsIAotICAgIDAsIDc3OTU3LCAwLCA2NjYyMSwgNDg4NCwgNjY1OTcsIDY5NzMyLCAwLCAwLCA2MzEzLCA2NTUxMywgNjk4NTcsIDAsIDAsIAotICAgIDAsIDIzNDUsIDQzNjk3LCA0NjMsIDAsIDAsIDExOTYwNywgMzExNywgNTQ2MCwgMCwgMCwgOTgzMzg3LCAwLCA0MjI3OSwgCi0gICAgMTk0NTc3LCAwLCA3ODQxNSwgMCwgMTk1MDA4LCA5ODMzODQsIDEzMjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA1NjYzLCAwLCAwLCAKLSAgICAwLCAwLCAyNDgyLCAxNDcxLCAwLCAwLCA0MjI0NywgMTIzNzgsIDczOTI1LCA2OTY2NCwgMCwgMTIzNzQsIDAsIDAsIDAsIAotICAgIDk4MzY5NCwgMjQ2MCwgMCwgMTE5NDQsIDEyMzc2LCAxMjc4NjgsIDY0Njc5LCAwLCAxMjM4MCwgMTA1NTcsIDY0NDczLCAKLSAgICA1ODcwLCAwLCAyMDI0LCAxMjcxODAsIDAsIDAsIDUzOSwgMCwgMTI3NzY1LCA5NDA1MiwgMzg1MywgNjUxODAsIDEyNzkyMywgCi0gICAgMTIwNzk2LCAxMjAyNDUsIDkyMzI0LCAwLCA4NjU5LCAwLCAxMjQ3NCwgOTI1NzksIDk1MDMsIDE5NDk2OSwgMjQ3OCwgMCwgCi0gICAgNDE2MiwgMCwgNDI2MCwgMTI5NTMsIDY5NjMzLCAxMjAwODksIDEyNDcwLCAwLCA3NDE4OSwgMjc0MiwgMTI0NzYsIDExNzk4LCAKLSAgICAxMDk0NiwgMTI3MzEwLCA1MDAwLCAwLCA5ODM1NzksIDAsIDY5NjcyLCA4MjEzLCA3NDAxNywgNzc3MSwgNjE2MSwgNjgwMTgsIAotICAgIDY3MDksIDAsIDc4ODg1LCA5ODM3MDgsIDEyNzk3MSwgMTIwNTgyLCA3ODU0NywgMCwgMTAzMDEsIDEwMzMzLCAxMDM5NywgMCwgCi0gICAgMCwgNzM3OTEsIDAsIDAsIDAsIDAsIDExOTEyMywgNDAxNCwgMTI4NDIsIDczOTUyLCAxMjAxNSwgMTI3MjkwLCA4Mjc1LCAKLSAgICAzODkzLCA5ODMyNjQsIDAsIDEyMjEwLCA3MjIxLCA0MjE0NywgMCwgNzQ1NTAsIDc0NDY1LCA2NDc0NywgMTE4ODQxLCAwLCAKLSAgICAxMjUxNiwgNDQ0NCwgMCwgOTIyNzEsIDc0NTM3LCAxMDg5MiwgODIzMSwgMCwgNjQ3MywgNDE5NjgsIDc4Mzg4LCA0MTk3MywgCi0gICAgMzU5MSwgNDE5NjksIDAsIDI0NTMsIDEyODU0OSwgOTI2NjYsIDY0NzA1LCAwLCAwLCAxMDM0OSwgMTA0MTMsIDQzNTkxLCAKLSAgICA0MTk2MiwgMzIwMiwgNzQzNTMsIDAsIDgzMTYsIDAsIDAsIDk0MDYwLCA2ODcsIDAsIDAsIDAsIDE4NDAsIDAsIDY4NjcxLCAKLSAgICAxMTk4MDksIDQ4ODMsIDI4NSwgNDcyMywgNzAwOTksIDkyNjkyLCA0NDU5LCA3NDU3NywgNDI5MjEsIDQxNzIwLCAxMTA4OSwgCi0gICAgMjQwLCAxOTkwNiwgMCwgNDIzMjMsIDAsIDk3NDMsIDEyMDIzMiwgMTMxMzQsIDEyNjUzNSwgMCwgMCwgMCwgMCwgNDI2MzQsIAotICAgIDk4MzM0MywgNDM0MzcsIDMwODEsIDExNDYzLCAxMjAxNTQsIDAsIDAsIDEwNDQ1LCAwLCAwLCA2NjcxNywgMjYxNCwgOTEyNSwgCi0gICAgMTE5MDIzLCAxNzI5LCAwLCAxMjAyMzYsIDY1MjIxLCA2Mzg4MywgNDMzMzQsIDY0ODUyLCAwLCA2NTE5NCwgNjYyMDEsIDAsIAotICAgIDY2NTc4LCA1MDAxLCA0MTg3OSwgNzQ0MjcsIDQxMjEsIDUwMDMsIDg4NCwgNjY3MDAsIDYzODc5LCA0OTQzLCA1MTUwLCAKLSAgICA3Mzg4OSwgNzQxODIsIDEyNzkxNSwgNjQzLCAzMDg2LCAwLCA0MjQ0OCwgNDIyOTksIDU4LCAwLCA5MTc5NTIsIDEyMDA4MywgCi0gICAgNjM4NzMsIDg0OTEsIDAsIDAsIDk4MzYyMywgNDUzMCwgNDI0MDksIDcxMjYsIDE5NDU3NSwgMjcyMSwgMTIwMDc0LCAKLSAgICAxMTkwOTYsIDE5OTI5LCAwLCAxOTQ1NzQsIDAsIDQyNDIsIDQyNjQsIDEyMDA3NywgMTIwNTMwLCA2NjE3OSwgNDI0MTIsIAotICAgIDY1OTQxLCAxMzExNCwgNjQ1MjIsIDEwNzQwLCAzMDk0LCAwLCA5NzU0LCAxMTkxMDIsIDQ0MzcsIDczOTQ4LCAxMjcwNzQsIAotICAgIDk4MzIzOCwgNTUyODAsIDQyMTc0LCAxOTQ5MjUsIDQyNDMwLCAwLCAwLCA0MjM1NSwgNjYwMjYsIDQzMDYsIDQxMzgwLCAKLSAgICA2ODQzMiwgOTI1ODYsIDAsIDY2NjY3LCAxMjczMDksIDAsIDEyNjUyMSwgNDIyMDAsIDQyNTY2LCAwLCAwLCA1MDg4LCAKLSAgICA2OTQ4LCAwLCA4NTI0LCAwLCAwLCAxMjM4NSwgMCwgMCwgNjk2NDYsIDEzODYsIDY0NTgwLCAxMTQ4MCwgNjExNiwgNjUwMzksIAotICAgIDY1MDM4LCAxMjM5MiwgNjUwMzYsIDgwNjQsIDAsIDEyMTAxLCA1ODIyLCAxMTkwMDQsIDIwODAsIDcxMCwgNzc5OTksIAotICAgIDExNjYzLCAxNjY2LCA0MjA5MSwgMTE5NjU3LCAxMjM4MywgNDM2NzEsIDQyMDkyLCA2ODQxOCwgNDI4OSwgMCwgNjM4OTYsIAotICAgIDEyMDYxLCA0MjA5NiwgNDM2MjEsIDMzNjIsIDEyMzc3LCA5ODM4MzIsIDk4MzgzNCwgNjg0NDksIDc0NjEsIDczOTAxLCAKLSAgICAxMjQ0LCAzMzEsIDczNzg2LCAxMjY4MywgMTA2NjIsIDAsIDgxMTIsIDAsIDY1ODUyLCAwLCAxMjM3OSwgMTk0ODc3LCAKLSAgICAxMjA4MTgsIDQxOTY0LCA0MjIwOCwgNjM4NDMsIDIwODQsIDQxOTY1LCAwLCA2NTg2NiwgNDMyNywgMCwgNjM4NDAsIAotICAgIDc4NTQ5LCA0MTIyMCwgMTMwMzIsIDAsIDU4NCwgMTI5MzMsIDQzMTc3LCAxMjM3MywgNjk4NTUsIDEzMDAwLCAxMzUxLCAKLSAgICAyOTM1LCA4Njk4LCAxMjY2NSwgMCwgMTkzMCwgMCwgNzgyMjksIDEyNDI3LCA2NjUxNCwgNjk4NTksIDEzMDMxLCAwLCAKLSAgICA2MzkwMSwgMCwgMzY1NywgMTI4NTcyLCA2NTIwMiwgNjAwMCwgMTE5MjA2LCAxMjQyNiwgMTI3MTgxLCAwLCA0MTc0MCwgCi0gICAgMTI0MjgsIDQxMjgzLCA0MTkxNiwgMTE5MjEwLCAwLCAwLCAxMjQyOSwgNjcyNywgMCwgNzU2MiwgMCwgNTE3MCwgMCwgCi0gICAgNDE3NTUsIDY3NiwgMCwgNjY3MDQsIDY2NjY0LCA5OTc4LCA2NjQ5MSwgMzUzNiwgMCwgOTc1MiwgOTIzOTcsIDYxNjIsIDAsIAotICAgIDY5MjI4LCAxMDExMywgNDE4MjksIDY1ODg2LCA1MTU5LCAxMjQyMiwgNDE4MzIsIDQzOSwgNDMwNzcsIDAsIDQyMjA3LCAKLSAgICA3NDU0OSwgMTE3OTYsIDQwOTcwLCA0MTgzMCwgMCwgOTE3Nzk5LCA4MzA4LCA5MTc3OTcsIDkxNzc5NiwgMCwgNjc4NjQsIAotICAgIDkxNzgwMSwgOTE3ODAwLCAxMjMzNiwgNDEzNSwgNjk4MDUsIDM0MSwgMjcyNywgNDEyOSwgMzUzOSwgMCwgNjM4NjEsIDAsIAotICAgIDc5MTMsIDAsIDYzODU5LCA0MTMxLCA2Mzg2OCwgMCwgNjM4NjcsIDQxMzMsIDExMzcxLCAyMTAsIDQ2MDAsIDAsIDc0NTYwLCAKLSAgICA0MTM3LCA4MDgyLCA3ODUwNiwgMTE5MDYyLCA3ODUwNCwgNjcwNCwgNDU5MSwgMTI4MDI5LCAwLCAwLCA5NjgwLCAwLCAKLSAgICAxMjA2MjMsIDU2MSwgMTIxNTksIDE5NSwgNzg1MDgsIDQxNTAxLCAwLCA0MjAzMSwgNTcxOSwgNzE3MiwgNDI2ODcsIDgzNjgsIAotICAgIDAsIDQxNDk5LCAwLCAwLCA0MjI0MiwgNDE0OTgsIDkxNzc5NCwgNDIwMjUsIDc4NTY1LCA2NTgwNSwgNDI0NjMsIDAsIAotICAgIDI5MjQsIDAsIDEyMDUxMCwgMCwgMCwgMTE5MjEzLCA3Mzk0MSwgMCwgNDIzMzAsIDkxNzc4NCwgMzk2OSwgMCwgMCwgNzE2OSwgCi0gICAgMTk5MiwgOTY1MiwgNzM5NzcsIDcyNDYsIDQyMDg2LCAxMjY2MTUsIDIyMTksIDAsIDAsIDEyODgwMSwgMTk0ODM3LCAwLCAKLSAgICAzMjcsIDAsIDkwNDIsIDkxNzc3NywgOTE3Nzc2LCA2NTE0OCwgMTI0MzMsIDkxNzc4MSwgMTI3Mjc2LCA5MTc3NzksIAotICAgIDEyNDMxLCA4NjY4LCAxMjQzNCwgOTgzODM1LCA5MTc3ODIsIDU5OTksIDAsIDc3MTIsIDEyNDMyLCAxMjgyNDMsIDQzNjUzLCAKLSAgICAxNzI2LCAxMDE1LCAwLCA4MjEyLCAwLCAxMjgwMTQsIDQyNDIzLCAxMTkwNjYsIDAsIDEyODEwOCwgNjY3MDksIDAsIDg4MTEsIAotICAgIDkyNywgMCwgMCwgMTI0MzYsIDk4MzI0NSwgNDIwMjEsIDAsIDAsIDEyOTksIDEyMjQwLCA0MjM1MCwgNjUxNDMsIDAsIAotICAgIDE5NTAxNiwgMCwgNzgxOTcsIDExMzQ4LCAwLCA3ODAzNywgOTE5NCwgOTgzMTg0LCAwLCAxOTkxNCwgMTIxNzksIDk4MzgxMiwgCi0gICAgMjI5NiwgMTk0OTIzLCA2MzgzNiwgNjM4MzIsIDkxNzc3MywgMTA5NjcsIDYzODE2LCAyNTk0LCAzNDQ0LCA2MzgxNywgCi0gICAgNjQ2NTEsIDAsIDQxNTAzLCAxMjc0NzgsIDExMjY1LCAwLCAxMjA3NTYsIDE5NDkyMiwgMCwgNTY2NCwgMzk3MiwgMCwgMCwgCi0gICAgMCwgMTI4NTA4LCAxMjQxNiwgOTE3NzY0LCAxMTk2MDgsIDEwODE2LCA5MTc3NjksIDkxNzc2OCwgMTI0MTgsIDc0MTExLCAKLSAgICAzODgyLCA4NTMyLCA5MTc3NzEsIDE1NzMsIDEyODY0OCwgMTE5ODQ3LCA0NTk2LCA2NjMzOSwgMTI0MTcsIDY2MDAxLCAKLSAgICA2NTM0MywgMTI2NDkxLCAxMjQxNCwgODI4NywgNjgyMTksIDE5NTAxNywgNjgxMDgsIDExNDMsIDExOTE2OSwgMTE5ODQ2LCAKLSAgICAxMjQxNSwgNjYyNiwgNDI3NjMsIDAsIDExODg4NCwgOTAyMSwgMTIwNzgzLCAwLCAxMTcyNCwgMCwgMCwgMTI3MTA0LCAKLSAgICAxMjY2MTksIDAsIDAsIDgwMjcsIDEwOTk3LCA5MTcxLCAxMjc0MSwgMTE0MDAsIDcxMzA1LCAxOTQ3OTksIDAsIDEyODIzOSwgCi0gICAgMCwgMTI4ODgxLCAxMTk2MDQsIDEyNzUyMywgMTIwMTkwLCAxOTQ3NzMsIDY3NjA4LCAxMjgyMTQsIDQyMzY4LCAwLCA3NzE1LCAKLSAgICAzODgxLCA0MTQ4NywgMTIxMTgsIDQyNTE0LCA2ODY1MSwgMCwgOTgzODk1LCAzMDA5LCA0MTQ3NiwgNDE0ODksIDY5ODI1LCAKLSAgICAzMDA3LCAxNDQ4LCAzMDE4LCAxOTQ4MDksIDM4ODksIDg1MjEsIDUwODMsIDUwODIsIDExOTg1OSwgMTIwMTg0LCA4NTE5LCAKLSAgICA5ODMyNDEsIDMwMTQsIDUwODEsIDY1ODUzLCAxMjA3MTUsIDAsIDY4MDE0LCA2OTk1MSwgNTA3OSwgNjQ4MDIsIDQyMjEwLCAKLSAgICA0NTk3LCA2NTUzMiwgMTE4MjgsIDEyMDE4NSwgMTIzNzEsIDAsIDg0MDcsIDAsIDEwODA1LCA4NTE4LCAxMDc3OSwgCi0gICAgMTIwMTg4LCA3MTMwMywgOTgzOTMzLCAxMjM2NywgNDIxNzAsIDAsIDkyNTU3LCA2MjksIDE5MjQsIDAsIDEyMDM3LCAKLSAgICA3NDM2NiwgNTk4NywgODQ2MiwgODAwNSwgMTIzNjUsIDYzOTMzLCA2OTczNSwgMTIwODE1LCAxMjM2OSwgMTA2NDksIAotICAgIDY3OTgxLCA1MDc3LCAxMjAxNzQsIDEwODgwLCA2MzkyNywgNTA3NSwgOTE3ODgxLCAwLCA2NTA3NSwgMCwgMTEwMDcsIAotICAgIDk4MzcwNSwgNjY2NTksIDkyNjA3LCAwLCA2NjY4NCwgMCwgMzQzNCwgNDk1NCwgMTkwNCwgMCwgNTI2NiwgMTI2OTgwLCAKLSAgICA1MjcyLCAxMDQ5OSwgNDUwNywgOTU3OCwgNjM5MjMsIDEyMDE3NywgNzk3OSwgMCwgOTgzMSwgMCwgMTk0OTI2LCA0NjEsIAotICAgIDk4MDMsIDAsIDQ1MDQsIDE1MDUsIDAsIDYzMjUsIDUyNzYsIDQzMDIxLCAxMjA0ODgsIDAsIDU1MjM2LCAwLCA2NjQ2MSwgCi0gICAgNTE3NywgNDEzMjQsIDEyMDU1LCA4NzIyLCAwLCA0MTMyNywgMCwgNjY2OTUsIDQxMTQsIDQwOSwgNDM4MywgODkwMCwgCi0gICAgODk0OCwgNDEzMjUsIDAsIDcyMSwgMTAxODIsIDkxMDgsIDcxMzExLCAwLCAxMTkxODUsIDQyMjI5LCAxOTQ5MTIsIDAsIAotICAgIDU5OTgsIDAsIDQyMzUzLCA3NDgyNSwgMCwgMTI1ODcsIDk0MTA0LCA3ODU3MSwgMCwgNzEzMjgsIDE5NDU2MiwgNDE1NzYsIAotICAgIDQyMjE1LCA3ODU3MCwgMTE5MjA3LCAwLCA4NTc4LCA1OTk1LCA3NTczLCA0MTU3NSwgNzQ3ODksIDc0NzUyLCA2Mzk0NCwgCi0gICAgNjM5NDksIDY0NzY3LCAyNjcwLCA0MTY3LCAxOTQ3OTYsIDExNzIzLCAwLCA3NDEyMCwgMCwgNjUwNzYsIDkzOCwgNDM0MTQsIAotICAgIDczODU0LCAxMTczNywgOTcyMSwgMCwgMCwgMCwgMTE3NDIsIDI0MTksIDAsIDExNDkzLCAxMjMzNCwgMTk0OTEzLCA0MTUzLCAKLSAgICAxMjMwMiwgMTA3OTMsIDUyNTAsIDEyNDA3LCAxMTk3OCwgNDQwNCwgOTE4OSwgMTI0MDEsIDQyMDA3LCA1Nzc1LCA2NzU5LCAKLSAgICA2NTgwNiwgNDM5OTcsIDAsIDQyMDAyLCAxMjQwNCwgOTgzNTUzLCAwLCA0OTQwLCAxMjQxMCwgNzY4MywgMTE2NywgNzM3MjksIAotICAgIDQ5ODMsIDEyMDUwNywgODYxLCAwLCAwLCAwLCAwLCA0Mzc1NywgNDMzNzAsIDAsIDAsIDExOTU2LCAwLCAwLCAwLCA5NjE2LCAKLSAgICA2NjMxLCAwLCAxMjgxNiwgNDM3NTksIDQyMjE4LCAxMjcxMCwgNjg2NzQsIDEyNzIxLCA0MTAxLCA2NjE4NSwgMCwgNTk5MiwgCi0gICAgNzYxNiwgMTk1MDQ0LCAwLCAxMjU3NywgMCwgOTgzODg0LCA4NTMsIDQyNjkzLCAxOTUwMTQsIDAsIDk4MzY0NywgNTAxNiwgCi0gICAgNDM1MzUsIDYzODkzLCA0MjgzNSwgOTQ5MSwgOTE3OTEzLCAwLCA5MTc5MTQsIDAsIDEyNzEyLCA3MTA1LCAxMjc4MDcsIAotICAgIDY1MDYwLCAxMjA3OTcsIDk5MDAsIDc3NTAsIDAsIDE5NDkxOSwgMCwgMTI3ODMwLCAwLCA2NDc3OCwgMTI1ODUsIDEwNTY1LCAKLSAgICAxMjgxNTEsIDEyMTc3LCAwLCAwLCAwLCA3NzgyNCwgMCwgNDkwMCwgMTI3ODc0LCAxMjg3OCwgOTI2MzAsIDg5ODQsIDQxMTksIAotICAgIDc0NzY4LCA4OTcxLCA3ODU5MywgNDMxMTMsIDk3MDIsIDc4NTk0LCAxMTAyNSwgOTI0NSwgMTMwNDgsIDQ5MjcsIDQxMzgsIAotICAgIDc0MTg1LCA5MjQ4MSwgOTI3MTAsIDEyMzk3LCA3NzgyNywgMCwgMTMwNTQsIDEyMzk0LCAwLCAwLCAwLCAxMzA1MywgMCwgCi0gICAgMzk0OCwgMTA3ODEsIDE1NDYsIDAsIDUwMTAsIDE2ODAsIDEwNTA3LCA3ODU5MCwgNzg1ODMsIDAsIDAsIDAsIDE5NDkxNSwgCi0gICAgNzI2NywgMCwgNzQ4MzMsIDEyODE4MSwgNTk5MywgMjgxOSwgMCwgMTI3MDYsIDc3ODQwLCAxODkzLCA3MjY2LCA2MzkxNSwgCi0gICAgNzI2NCwgNzI2NSwgMCwgMTM2MywgMCwgNjM5OTcsIDYzOTEwLCA2Mzk5NiwgMzA3NywgMCwgMCwgMTUxMiwgNjk5MjksIAotICAgIDEyNTg5LCA0MTQ3OSwgMTI4MzEzLCAwLCA0MzMzOSwgNzM3NzYsIDk4MzYsIDEyMDcyNywgMCwgNDE0ODEsIDQzMzM1LCAKLSAgICA3ODMyLCA0MjM0MywgMzA5MCwgNDMzMzcsIDgxNywgMTY2NCwgMTg1MCwgMTI4ODQxLCAzMDc5LCAxMTM0MCwgNDI0MDgsIAotICAgIDQyNDQ3LCAxMjcxNDAsIDEyMDAyMCwgNDIzMDcsIDEyMzg2LCA0MjMwNCwgOTE3NTU1LCAwLCAxMjM4OSwgMCwgOTIzNjYsIAotICAgIDQxOTk2LCAxMTUyNiwgNjM5ODUsIDU4NjQsIDExNDcsIDYzOTkyLCA0Mjg4NywgMTk4NywgOTI3MTgsIDU0ODAsIDc4NTgsIAotICAgIDExNjUzLCA0MTE2LCAxMjM5MSwgNjYxOTMsIDAsIDQ5MzksIDEyMzg0LCAwLCAwLCA0MTY4NiwgNjM5MDUsIDExOTYwMSwgCi0gICAgMTk0Njg4LCA5ODMxOTAsIDAsIDEyNjQ5LCAwLCAwLCA4MjQ3LCA1MDcsIDkxLCAyMDQyLCAxMjA3NzUsIDQzNjQzLCAKLSAgICAxOTQ2ODksIDY2MDI4LCAxMDAzNiwgNDE4NDQsIDExOTgxMywgNzc0LCAxMTk4MjksIDAsIDExOTgxNSwgNTk5NCwgMTI1MzksIAotICAgIDAsIDc4Mzc1LCAxMjA1OTcsIDExOTgzMywgOTgzMTA1LCAxMTk2MDAsIDAsIDAsIDc3MTksIDYwMjYsIDI0ODYsIDEyODMxMiwgCi0gICAgMTE5ODA4LCAxNjIsIDAsIDY1MjE5LCA0MTA3MywgOTY4NywgNDE2ODEsIDYzMDQsIDExOTgxMiwgNjYxOTYsIDE5NDg4MSwgCi0gICAgNTI2MiwgMCwgNTUyMzMsIDEyNjgxLCA0MjM3OSwgMCwgNzUzNCwgMTIyMTksIDAsIDEyNzUyOCwgNDI4MTAsIDEwNDkyLCAwLCAKLSAgICA5ODM2NjEsIDAsIDQzMTE5LCAwLCAxMjA3NTMsIDEyNDAzLCAyNTAwLCAxOTUwMTMsIDAsIDQ4OTksIDEyNzI5LCAwLCAwLCAKLSAgICA3NDExMywgMjM0MywgNDEwMywgMTk5NDYsIDc0MTEyLCA3Nzg1MSwgMTMxMTIsIDAsIDE5NTAxMiwgMTI4NTksIDcwMDg3LCAKLSAgICAxMjAxNDgsIDY2MzY5LCA1ODYxLCAxMjc3NTgsIDExOTk5LCAxMjQwMCwgMCwgOTgzODM5LCAxMjY0NSwgNTE0NiwgMTEzMjAsIAotICAgIDY4NDEwLCA2NzQ4LCA2NTA0MCwgMCwgNjQxODQsIDEyOTc0LCA2NDE4MywgNjc2MTMsIDEyMDY0NSwgNTE0NywgMCwgMCwgCi0gICAgNzQ1MjQsIDAsIDE5MjgsIDAsIDY3NjQ5LCA1OTkxLCAzNDQ1LCA2NzYwOSwgNDk3NiwgNjQxNzYsIDAsIDY3NjEwLCA4MjQxLCAKLSAgICAwLCA3Nzg2OCwgNDIwNiwgMCwgMCwgMCwgMTI4Mjk4LCAwLCAxMDEzOCwgMCwgMCwgODg5NywgMTIwMjM0LCAwLCA4MzU3LCAKLSAgICA0MTI0LCA3Nzg2MiwgNjU4MzYsIDEyMDY0MSwgMTI3OTI2LCA3Nzg1OSwgMCwgMCwgMTEyMywgOTYzLCA0MTU1MywgMTAxMjAsIAotICAgIDEyNDA1LCAxMjAxNTAsIDkyNjY0LCAzOTgsIDEzMjc4LCA5NzIzLCA2MzY2LCAxMjAzMTEsIDc5NDUsIDAsIDQ0MDIsIAotICAgIDk5NzAsIDEyNDAyLCA5ODMxMzYsIDQyMzkyLCAxMzA1LCAxMjQwOCwgMCwgNDQwMDcsIDAsIDAsIDQxNDY0LCAxMjQxMSwgCi0gICAgMTI5NjksIDEyMDgyNCwgNDE0NjUsIDk4MzU2NSwgODUyOCwgMTU3NSwgMCwgNjM5NTUsIDE2NSwgMzAyNCwgNDE0NjcsIAotICAgIDExOTE2MywgMCwgOTA5MywgMCwgOTE0NywgMTI4Nzg3LCA2Mzk1OCwgMCwgOTE0OCwgOTY5MiwgNDA5NiwgNTMsIDgyOTYsIAotICAgIDY3NTAsIDE5NTAxOCwgMCwgOTU5NCwgMCwgMCwgNDM1MjcsIDAsIDcyNywgMTk0NzAzLCAxOTUwMjMsIDU4MDUsIDAsIAotICAgIDY3MjYsIDAsIDQyMTc2LCAxMjM3MCwgMTE2NTUsIDExOTA5NSwgMTA1OTEsIDIyODAsIDAsIDEyMzcyLCAxMjA2NDIsIAotICAgIDEyMDMwNywgMCwgOTIzNDMsIDAsIDEyMzY2LCAxMDk2MywgNjA2NiwgMTMyOSwgMCwgMzA1MiwgOTIyMCwgMCwgNjQ0NzgsIAotICAgIDE5NDcwMSwgMTA4MDMsIDQxMzIsIDEyMDMwNiwgNjg0NzQsIDkyNDczLCAwLCA5ODMzMTMsIDc0ODM3LCAxMjAxNTUsIAotICAgIDE0OTksIDAsIDgwNTUsIDQyNzQwLCA2Mzk2NSwgMCwgNjM5NjIsIDc0MDQyLCA4OTI0LCA0MzEyMywgNTk4OCwgMzY2MCwgCi0gICAgNjM5NjksIDExNzgxLCA0MjcxOCwgODc4OCwgMTM1NywgNjQ4NTEsIDY1NzQzLCAwLCA4Nzc0LCAwLCAxMjcwODYsIDk5NDEsIAotICAgIDEyMDE3MiwgMCwgMTkzMywgNjk2NTUsIDk1NjQsIDAsIDkyNDM1LCA3Mzg2NiwgMCwgMCwgMjQ4NywgNjc2MTQsIDMxMjEsIAotICAgIDE4MDQsIDMzMTEsIDY3NjE1LCA3MDA4MSwgNzgzMDIsIDEyMjIwLCA2NzYxNiwgMTIwNTk4LCAxMjc0NzUsIDAsIDY4MjAwLCAKLSAgICA2Njc1LCAxMjgxNDQsIDAsIDY3NTkyLCAxMjA2ODUsIDAsIDY0NzcxLCAxMTk4LCA5MTMyLCAwLCA2NDYxOSwgNTEwLCAKLSAgICA2NDY2MywgMCwgMCwgNDU2MSwgMjEwMSwgMTM5OCwgMCwgOTI1NTQsIDc0MDM0LCA0MTU2OSwgOTI2ODQsIDExNDA2LCAKLSAgICA4MTY3LCAxMjEyNywgMCwgODQwLCAwLCAxMjY1MTgsIDcxMDEsIDY5NjcsIDAsIDE5NDg5OCwgOTc5NiwgMCwgMzMzLCAKLSAgICA2OTg5MSwgMCwgODE0NCwgMjExNywgMCwgOTgzNTk1LCAxMjQwNiwgMCwgMTk5MzEsIDExOTA4OSwgNjY3OCwgNzc2OSwgMCwgCi0gICAgMTI2MjEsIDAsIDEyNzM2NiwgMTAyMjcsIDQ3NjQsIDQzMTAxLCA5OTgxLCAwLCA0MDk4NiwgNDEyNywgNjY0ODcsIDAsIAotICAgIDQyMjAyLCAxMjc1NCwgMTk1MDIyLCAwLCAwLCA5NDA5NywgNjc1OTQsIDIwNDgsIDEyOTQ0LCA0MDUwLCA2NzU5NSwgCi0gICAgOTE3OTY3LCA0MzEwMiwgMTA1ODEsIDEyOTg1LCA0NTMzLCAxOTUwMjEsIDc0MDAzLCA2NDkwLCAwLCAxMjAzOCwgMCwgMCwgCi0gICAgMTIwNzA0LCA2NTQ2MSwgOTc5OCwgNjk3MDQsIDAsIDE5NDgsIDY5ODQxLCAwLCA5NTIsIDEyODIzNSwgMCwgMCwgMTIwODAyLCAKLSAgICA2NDQ5LCA5NDk0LCAxMjAzMTMsIDAsIDQzMDk4LCA0ODQzLCA4MTQyLCA2NDE2MCwgNDA5OCwgNjQxNzAsIDAsIDAsIDM0MzYsIAotICAgIDExOTk3MywgMCwgMTI4MTcsIDY3NTk3LCA2Njc2LCAzOTMwLCA0MjYxNSwgMCwgMCwgNjc1OTgsIDAsIDAsIDAsIDY1NTkxLCAKLSAgICA0MTU4MSwgNjU5MTYsIDE0NTMsIDAsIDAsIDAsIDg1MDAsIDQyMjIyLCAxMjAxNDIsIDczNzQzLCAxMjA0MDAsIDQzMTcsIAotICAgIDExNTQzLCA2NzY3NiwgNjQ2NzYsIDAsIDAsIDY3NjA2LCAxMTkwODMsIDAsIDQyMjE3LCAxMzEwMiwgMCwgNjYwMDMsIAotICAgIDY2NzIsIDAsIDAsIDAsIDk4Mzc0NywgNjM4NDEsIDk2MTMsIDkwMDEsIDQ1MjYsIDExMjc0LCA2NzYwMSwgNjQ1MjAsIAotICAgIDY0MjEwLCA2NjY0LCA3ODcwNCwgNDIwNTYsIDEwMjI4LCA2NDk1NywgMTEyODEsIDAsIDM4MDcsIDE0NjksIDY2NjQwLCAKLSAgICA2NTM4MSwgNDIxOTcsIDQ5ODgsIDQyMzcyLCAwLCA5NTk4LCA5MDQsIDM1MiwgNDIyMjUsIDE0NTEsIDgwNjEsIDg0NTMsIAotICAgIDQxMzQsIDAsIDc0ODQ3LCA2NjU3NiwgMTI3OTE2LCAwLCAxMDUyMCwgODU3NSwgOTk2MCwgMTIwMSwgMTI3Mjg5LCAxMjg0NiwgCi0gICAgMTI3MjkxLCAxMjcyOTIsIDExOTE5LCA2NDk2MiwgMTI3Mjg3LCA0MzczOSwgMTI3MjgxLCA4NTExLCA5NDYwLCA4MjMsIAotICAgIDExNTg3LCAxMjMwNSwgMCwgNjQ2OTUsIDEyNzMwNSwgMTIzODcsIDEyNTMsIDEzMTgzLCA2NTc2NiwgNTAwLCA0Mjc4MywgCi0gICAgNjU3NjUsIDY0MjA4LCA2NDM2OSwgNjU3NjAsIDY1NzYxLCAxMTk1ODUsIDExNjA2LCA2NDc4NCwgMTE3MDIsIDY2NDk4LCAKLSAgICA5ODIxLCA2NDMwNCwgMCwgNTE1MiwgMTEwNDgsIDc1MzMsIDY4MzY2LCA2NDQxMCwgOTIzMDUsIDAsIDQzMjMsIDEyMDA2MiwgCi0gICAgOTI2NjksIDcxMzMyLCAxMjcwNTIsIDQyNTg3LCA0MjIxNCwgNDEzOTQsIDAsIDQ3NjMsIDQxMTIsIDExODkzNSwgMCwgCi0gICAgNTI2MCwgNDMxNDMsIDk0MDM4LCAzMjYsIDEyMDEzMSwgNjg0MjMsIDAsIDEwNzcxLCAyODc2LCA3NDA3NCwgOTI1MzAsIAotICAgIDE5NDkyNCwgNDEzOTgsIDczODIsIDk4MDIsIDEyNzA3NywgMTI3MDc2LCA0NTMsIDQxMzk2LCAxMjA1MjQsIDQyNzIwLCAKLSAgICAxMjE0MCwgOTU3MiwgMCwgNzAwMywgMTk0ODgzLCA0MjMzNCwgNzcwNCwgMTI2NDkwLCAxOTQ4ODUsIDQzMTQ0LCA0MTIzLCAKLSAgICA4NDk0LCA0MzE0NiwgOTk3NywgMCwgMCwgNjU3NTksIDEwNzY1LCA2NDA2MSwgNDQ2NSwgOTgwOCwgNjQwNTYsIDY1NTgyLCAKLSAgICA0MTI2LCAwLCA5NTIxLCA5NTg5LCA2NDc1NSwgMCwgNjQwMjAsIDEyNjYwNCwgMTA0NjQsIDAsIDAsIDE5NDg2OSwgNjQ1MTQsIAotICAgIDExNTI4LCA2NDAyNCwgMTI4MDcyLCA2NzksIDY0MDEzLCAwLCA1ODUwLCA3NTgsIDc1MzYsIDAsIDkyMjM0LCA0MTQ0MSwgCi0gICAgMTA2OTMsIDY0MDA2LCA5ODM1NjcsIDY0MDA1LCA0MDU4LCAxMTkwMTksIDEyNjQ4NywgNjQ2NjAsIDAsIDExOTA1MCwgMCwgCi0gICAgOTgzMDY5LCAxMTM5LCA0MzI5OCwgNjQwMjcsIDY0MDI5LCA4OTcwLCAwLCA5OTM0LCA5ODMwOTQsIDEwNzc0LCAxMjgwMjAsIAotICAgIDQyMjAxLCAxMjQyMSwgMTI4MjE2LCAwLCAxODUyLCAzMDU3LCA2NDA0NiwgNzM3NDQsIDY0MDM0LCA2NDAzOSwgMCwgMCwgMCwgCi0gICAgMTk0ODk5LCA5MjMyMiwgNzY0NSwgMTI4NTQsIDc0MzM4LCAzNDk2LCAwLCAwLCAwLCA5MTAyLCA2MjcsIDEyNzc5NSwgCi0gICAgNjE1OCwgODMyNywgNzQ1NTMsIDY2NjMyLCAxMjQxOSwgMTMzMDksIDExNTcwLCAxMjc4MTEsIDE5OTYwLCAxMTY5NiwgMCwgCi0gICAgMTAxOCwgMTE4OTcwLCAxOTQ5MDksIDE5NDg5NywgMTY4MiwgMTk0ODk2LCAxOTQ5MTEsIDQyNzU2LCA2NzY1LCAxOTQ5MDYsIAotICAgIDAsIDAsIDczODE0LCAxMTQxMiwgNjc2OCwgMTA3MjgsIDE5NDgzMCwgNzEzMTYsIDExODg2MywgNDMzMTEsIDY0OTY2LCAKLSAgICAxMTU3NywgMCwgNDMwNDAsIDE4MzMsIDExNTc2LCAwLCA3NDc3OSwgMCwgMTg1LCA2NTA4NSwgNzQ1MzMsIDY0NzU0LCAKLSAgICAxOTQ4NDgsIDc1MzUsIDgwODUsIDQyNTI1LCAxMjAzODcsIDk3NDksIDQxNzAxLCA2MTMxLCAxOTQ5LCA0MTE3LCA3ODQ3LCAKLSAgICAxMjA0ODksIDE5NDcxMSwgNjQ0ODMsIDY1NjkzLCAwLCAwLCAwLCA2OTY5NSwgNDIyNDAsIDAsIDEyNjY1MSwgNDI4NjQsIAotICAgIDEyNjQ5OCwgNjQ2NjcsIDQxODY4LCAxMTg0LCAwLCA4MTUsIDExNDg0LCAxMjc1MzUsIDY3ODQwLCA5ODM2NTEsIDAsIAotICAgIDY2MTk3LCAwLCAxMDk4NiwgNjQ2ODMsIDk4Mzc4NSwgMCwgMzQ1NSwgMCwgMCwgOTg3OSwgMCwgMCwgNDE1OCwgMTI4MDUwLCAKLSAgICA2ODE2NiwgMCwgMCwgMCwgMCwgNjk2NDUsIDMzMiwgMTE4ODA4LCAwLCA1MTQyLCAyNDA3LCA2OTY0MywgNDIxOTksIDAsIAotICAgIDkyNDA0LCA3NDM3MywgMCwgNTUyMTcsIDAsIDYzODcwLCA0MzE2MywgMCwgMCwgOTIzOTAsIDQyODY3LCAxODM0LCAwLCAKLSAgICA5MjQ2MSwgNjk4MTcsIDEwOTQwLCA2NTI0OSwgMTE5MDQwLCA4NjYyLCAwLCAwLCAyNjUyLCAxMjA1MjcsIDcxNjQsIAotICAgIDEwNzg0LCAxOTUwOTMsIDY3Njc0LCAwLCA5MjIzMywgOTI0ODIsIDE5NDc0OSwgNzQ1NjIsIDkxNzUwNSwgMTgyOCwgCi0gICAgNzQ0NzQsIDEyMDMyNywgNzg2MjAsIDg1MzEsIDEyNDk5LCA2MjgwLCAxMjMyNCwgMTE4ODU0LCA2NTIzOCwgNjgzNzQsIAotICAgIDQ4MzIsIDY1NTczLCAwLCA2Mjc5LCAxMjUwOCwgMTI5MDQsIDEyNTAyLCA5MTYxLCAwLCAxNjIwLCA2NDQzNiwgMzYwMSwgCi0gICAgMTk1MDk0LCAxMjgwNzMsIDk4MzU2MiwgNjA5LCAxMTU1NSwgOTgzMDk5LCAxMjQ5NiwgMTI3ODM5LCA3NDE4MSwgNDM0MywgCi0gICAgMTI1MDUsIDAsIDEyNzg2MywgMCwgMTEzNzcsIDIzOSwgMCwgNjM3LCAwLCAwLCA0MjY3MSwgMCwgMCwgMCwgNDM1NjUsIAotICAgIDcxMzA2LCAxMjY0OTMsIDEyNjk2LCAxMjgyNTYsIDAsIDk0MDYyLCAxMjkyOSwgMCwgNzEyLCAwLCA0MTk3LCA5ODMyMDYsIAotICAgIDQyODE4LCAxMjY2MzIsIDAsIDEyMDQ5MCwgMCwgMTE5MTM3LCAxNTA2LCA0MzU2MiwgMCwgOTI0OTEsIDAsIDEyNjUxLCAwLCAKLSAgICA2NDYyOCwgNzQ1MTcsIDEyMDU4LCA3NDA4NCwgOTE3ODM4LCA3NDk0LCAwLCA0OTI0LCA2NTU5MiwgMTE4ODQ0LCAwLCAKLSAgICAxMjcwODgsIDM1NSwgOTcxOSwgMTI3MDg3LCAxMzA2NiwgNjQ3OTYsIDAsIDAsIDEyMDMzLCA0MjE3OCwgMCwgNjk3NjAsIAotICAgIDQyNTcxLCA5MjYzNSwgMCwgMCwgMCwgMCwgMCwgMTI3MTc2LCAzMTc4LCAwLCAwLCA5MjcwNCwgMCwgOTA4MCwgMTI3MDAwLCAKLSAgICAxMjAzNTIsIDAsIDY4MjA5LCAwLCAxMTA4MiwgMCwgNTY5OSwgMTk1MTAwLCA2NjAwMCwgOTQ4OCwgNjUxNjYsIDExOTExMiwgCi0gICAgMCwgMCwgMCwgMCwgNzEzMTMsIDAsIDUyNjUsIDY5MjM1LCAwLCAxMTQ4NywgNjc4NTgsIDEyNDY0LCAwLCA0MzA0NSwgMCwgCi0gICAgMCwgNDMzNDUsIDAsIDEwNzcwLCAxMTg5OTQsIDY4MDcsIDQ2NSwgOTgyOSwgMCwgNzQzNDgsIDAsIDQzMzQ2LCA4MTE2LCAKLSAgICA3OTUsIDAsIDAsIDEyNDYyLCAxMDkzMCwgMTA4MzEsIDAsIDExODk1MiwgNjQzNjIsIDc0MzM0LCA5ODM2MDIsIDEyMDgxMSwgCi0gICAgMCwgMTI0NjgsIDg2MDcsIDEwMDgsIDAsIDEwMDkyLCAxOTUwNzgsIDkxNzg0MiwgNjc4NTUsIDU1MjU3LCA3Mzc3MSwgCi0gICAgMTc2NiwgMTEyODIsIDExOTk2LCAxODIwLCA0NTQ3LCAwLCAwLCAwLCAwLCAxMzIyMywgMTI4NjY1LCA2NDU5NSwgMTI3Mjk0LCAKLSAgICAwLCA5MjMxMSwgNDM0NSwgMTI2MTYsIDAsIDAsIDAsIDc0NDY3LCAwLCAwLCAwLCA1MzgyLCAwLCAwLCAwLCAxMTkwNjAsIAotICAgIDY0OTUzLCA1NDA2LCAxOTkyMCwgNjk4OTcsIDY2NTEwLCAzNTkwLCAxOTQ4NjQsIDExMzAsIDAsIDAsIDQyMDE2LCAxMTgyMywgCi0gICAgNDMwMjMsIDAsIDExODg5NiwgNzc0MiwgMCwgMTMyODAsIDcxMzIzLCA5MzI2LCA3MzgyNiwgNTMxMCwgNzQ4MTIsIDc4NTg0LCAKLSAgICA5MjIyOSwgODk1OSwgNDM1ODksIDY3NDcsIDY2NzIzLCAwLCA4NTY4LCAwLCAxMjA0OTYsIDczODE2LCAxMjA4MDMsIAotICAgIDk4Mzg0OCwgNDI2NzAsIDAsIDExNjIxLCAxMjQ2MCwgMCwgMTIwNjMxLCAwLCA0MzA2MywgNzQ1MTksIDEyNzE4MiwgMCwgCi0gICAgNzM5MTcsIDc4NDMsIDY5NzgzLCAxMTY4OSwgNTQxMCwgNTc4MywgMTA0NjgsIDg0MDMsIDU0MDAsIDExNTk0LCAxMjgyNDcsIAotICAgIDAsIDExODk5MCwgMTA0OTEsIDY5ODQyLCA2NDQxMiwgMCwgMCwgNTU4NywgNDI4NjUsIDY0NDA0LCA4MjY4LCA0OTIzLCAKLSAgICA2NTA4NiwgODk4MSwgMTIzODIsIDQyMTMzLCAxMjA3NTUsIDk3MDYsIDY5NzM4LCAwLCA2NjYxMCwgMTA0NjEsIDEyMTAzLCAKLSAgICAwLCA4NjQyLCAwLCA0Mjc2NiwgOTgzODY2LCAyMjEwLCA5OTgzLCAwLCA5NDAwOSwgMCwgMCwgMCwgNzM5OCwgNDE1MTUsIDAsIAotICAgIDExODAyLCA4MDQxLCAxNDYxLCA5MTAsIDExOTEzMywgMCwgNjc0OSwgMzY1OCwgOTM5NjQsIDEyMDUyNSwgMCwgNzYxNywgCi0gICAgMTk0ODQxLCAxMjg4OCwgMTI3OTgzLCA2NzY2OCwgMTMxNDMsIDAsIDkxOTMsIDExMDk3LCA1NzAzLCAwLCA0MTUxNywgCi0gICAgNDE1MDQsIDQxNTE5LCAxMDAxNiwgNjQzMDUsIDAsIDY1ODY0LCA2MjMsIDc4MSwgNjcwLCAxMDY2MCwgNTc2OSwgNjEzLCAKLSAgICA3NTQzLCAxMjAyNzksIDQ3NywgNDEwODMsIDkyNTIxLCAwLCA1OTIsIDE1NzgsIDEyNDU5LCA0MzQ0OSwgMCwgMCwgODIyNSwgCi0gICAgMCwgNjU0LCAxMTM0NSwgNjUzLCA2NTIsIDAsIDY0NywgMCwgNjMzLCAxMjA3NDQsIDAsIDEyNjQ3MiwgMTI0ODAsIDQzMjQzLCAKLSAgICAwLCAzOSwgMTI0ODcsIDAsIDEyMDUyOSwgNzQxOTksIDEyNDgyLCAwLCAxMjQ4OSwgMCwgMzE5NSwgNTU1MCwgOTgzNTU0LCAKLSAgICA3ODk3LCAwLCAxMjAzLCA3NDM5NiwgMTgxMywgNjQ1NDQsIDQxMzExLCAxMjA5MCwgMCwgMjg3NywgMCwgMCwgMTY3NSwgCi0gICAgNjk4NDAsIDAsIDAsIDAsIDEwMDcwLCAxMDU5NSwgMCwgMTE5MDc3LCAxOTQ3NzcsIDk4MzYxMSwgMCwgMCwgMCwgNDMyNDQsIAotICAgIDAsIDAsIDk4MzkxNiwgMTE5NTYxLCA5ODMwNzgsIDAsIDE5NDkyMSwgMTI4MTYwLCA5OTM5LCAwLCA5ODMxNTEsIDc3ODYwLCAKLSAgICAwLCAwLCAyNzAsIDAsIDEwNzE0LCAwLCAwLCAwLCAwLCAwLCA2NTM3MiwgMCwgNzQwMzgsIDExOTU1OCwgNjI3MywgNjY2NzksIAotICAgIDM2NCwgOTU5NSwgMTk0OTA4LCAwLCAwLCA3MDcsIDAsIDAsIDkyODIsIDY2NDg5LCAyMjQsIDAsIDY4NjcwLCA5MzMyLCAKLSAgICA0OTY2LCA2ODY3NywgMCwgNjg2NDQsIDAsIDM4NDEsIDY4NjM0LCAwLCAxMDczMiwgNjg2NDAsIDg1MCwgNDk3MiwgMCwgCi0gICAgMTI4OTAsIDI5MDksIDY4NjE5LCA0NDAwOCwgNjg2MjcsIDk4MzcxOCwgMTE1NDQsIDEwMjAzLCA5NjA4LCAwLCAwLCAKLSAgICAxMTk2MiwgMTk0Njk0LCAxMjUwNywgMTE5NiwgMTI4Njg3LCAxMjgzMTEsIDc3NywgMTIwMTg3LCA0Mzc1LCA2NTI3MSwgCi0gICAgNjc2NzgsIDAsIDEyMTk4LCAwLCA2NDgyNCwgMTE5MzQzLCA5ODMyMzYsIDk0NTQsIDYzNzc4LCA4NjU4LCA0MjUyOCwgCi0gICAgNzgwMDAsIDI3MDUsIDkxNzk3NSwgNDE1MjAsIDAsIDAsIDExOTg2LCA3NzY1LCA0MjUwMiwgODI4MCwgNzQ1MjAsIDI3MDEsIAotICAgIDAsIDEyNzAwMiwgNTc2NywgMCwgMCwgOTgwOSwgODM1MywgNjM3NDcsIDY2NzAxLCA2Mzc3MiwgOTgzODE0LCA2Mzc0NSwgCi0gICAgMTc0OCwgNjM3NzAsIDAsIDAsIDAsIDY1NTQyLCA2Mzc2NiwgNTUyNDQsIDMwNjEsIDAsIDYzNzY0LCA2Mzc4NywgOTA2NywgCi0gICAgNjA5NiwgMCwgNzY5NCwgMCwgNzI1NywgNjM3NjgsIDM0ODUsIDEyOTg3LCAwLCAxMjc1MjIsIDEyMDYyOCwgNjM4MDcsIAotICAgIDE1OTEsIDAsIDYzODYsIDYzNzgzLCAwLCAwLCA5MjUzNSwgMCwgMCwgMCwgNzQ1NzUsIDAsIDY1NzE5LCAxMzA4MywgCi0gICAgNjQ1NzQsIDY1MDEyLCAwLCAxNjQwLCAxMjQ5NSwgNjY2OTEsIDc2MjQsIDMxMzgsIDEwOTk2LCA5MjI0NywgMTkyMiwgMCwgCi0gICAgMTI0OTgsIDEwOTg3LCA2OTkzNiwgNjk5MzksIDM4OTQsIDY1NTQzLCAwLCAxOTQ4NDIsIDk4MzU4OCwgNDkzLCAwLCAKLSAgICA0MzE5NywgMTcxNywgNDIyOCwgNDc5LCAxMDMwMywgNzQwMjAsIDAsIDkxNzkzNSwgMTAzMzUsIDM1MjAsIDkxNzkzMiwgCi0gICAgMTI0OTAsIDY0MzE1LCAwLCAxMjcwMzksIDEyNDkzLCA2MjMzLCA0MjY4MSwgMTAwMiwgMTI0OTEsIDAsIDY0OTExLCAKLSAgICA5MjYxNSwgMjA5NiwgNjUxMjAsIDAsIDc4MjE5LCA5ODMwODEsIDgzNzgsIDExNjMyLCAxMjcwNDEsIDY2MjEzLCA2Mzg2NCwgCisgICAgNDM1NjcsIDc0MDU2LCAxMjAyNjYsIDExODMzLCAxMTk5MTksIDcyMTYsIDY1MjMyLCA3MjE3LCAyNTEsIDcyMTgsIDc4OTUsIAorICAgIDQzOTUsIDQzNTM4LCAxMTk5MjYsIDExOTgzNCwgMTE5OTI4LCA3MjEzLCA2ODQ3NiwgNzIxNCwgNzIxNSwgNTg3OSwgCisgICAgNzQxNDEsIDg4ODAsIDc2ODUsIDY2NDU5LCAxMjAxNzMsIDY1NTQwLCA2NzM1OSwgNjI1LCA4MTg3LCA0Mjg2MSwgMTExMywgCisgICAgNzIzNiwgNzkxNSwgMzYzMCwgMTIwMTc2LCA4MTc5LCA3MDE2MywgNjc4ODYsIDkzMTYsIDEwOTgwLCAyNDg5LCA2NTYyNCwgCisgICAgODE1MCwgMTM1OSwgNjc2NTIsIDcwNDY0LCAxMjczMzAsIDczNzU2LCA1MDQyLCA1MDQxLCA0Mjc2OSwgMTIwODQsIAorICAgIDEyNzMyNCwgMTI3MzIxLCA3NDQxMCwgMTI3MzE5LCAxMjczMjAsIDEyNzMxNywgMTIxMjg0LCAxMjczMTUsIDEyMjgzLCAKKyAgICAxNjE2LCAzNzk1LCA2NzczMiwgODc5NSwgNjYyNDUsIDAsIDAsIDAsIDExMzgsIDczOTA1LCAxMjY3NywgMTI4MjgwLCAKKyAgICA2NzcyNCwgMzIzOSwgNjY4OTMsIDEyODgxOCwgMCwgODQzMSwgMCwgNDIxNjQsIDcxMjI5LCAxMTc3OCwgMTI2MjAsIDY4MjYsIAorICAgIDczNzczLCA3MDE2OSwgNTA0MCwgMTI3OTY5LCAwLCA2NzA5NCwgNzg0MjAsIDAsIDUwMzksIDk4MzI0MSwgNzg0MTgsIDAsIAorICAgIDUwMzgsIDAsIDk4Mzg2MiwgMTMxODQsIDQzOTYwLCAxMjA5MzEsIDY0NjQ4LCAwLCA5MzU5LCA3ODQxNiwgOTE3NjIzLCAKKyAgICAxMjg3NzAsIDY1MTU3LCA2NjYyLCAwLCA3MDE4MiwgMzg2MywgNzM5MDksIDQ4MzUsIDU1MjY2LCA0MzQzMiwgMTI3ODIyLCAKKyAgICA0MzA5LCA3MTI3LCAxOTQ1NjksIDAsIDE5NDU2OCwgMTMwMSwgMCwgNDI1ODksIDU2OSwgMTI4ODA0LCA3MzgxMywgNzExLCAKKyAgICA0Mzg5LCA3MTMzLCAxMjA2NDMsIDczODgwLCAxMTYxMCwgMTEzNjgsIDAsIDE5NDU3MCwgNDEzMzEsIDEwMDYsIDc0MjQwLCAKKyAgICA2NzIyNCwgMTU1MCwgODIwMSwgNzA0NTMsIDc2MjcsIDU0OTksIDUwMzEsIDc3OTA4LCA0MjczOCwgNjU3ODQsIDQzOTU3LCAKKyAgICA2NTI2NywgMzc1OCwgMCwgNjU3ODEsIDY0NzM0LCA2NzIyMiwgMjQ0MCwgNDM5NTUsIDcwNzg3LCA4NDQ5LCAwLCA1MDA4LCAKKyAgICA5ODM1NzIsIDIxMTgsIDEyNjUwOCwgMTIxMjEsIDgyNTUsIDU1MTIsIDczODc1LCAyMTI4LCAyMTMwLCAyMTMxLCAyMTI2LCAKKyAgICAyMTMzLCAxMTE5LCAxMjEyNTAsIDIxMTQsIDIxMTYsIDI0NTUsIDExMzc5OCwgMjEyMiwgMjEyMywgMjEyNCwgMjEyNSwgCisgICAgMTI3NDg2LCA4NzE0LCA5ODM4MjAsIDIxMTMsIDE5NTA0OSwgMjExNSwgMTI4MTc3LCAxMjc5MDcsIDQzNzEzLCA1MDUyLCAKKyAgICA2NjIyMCwgNTgyMSwgNjE4NiwgNjU3NzgsIDY1Nzc1LCA1MDUxLCA2NTc3MywgMTQyOSwgNDI2NDcsIDUwNTAsIDMwMiwgCisgICAgMzg4LCA0MTExNSwgNzM1LCA2NjM3LCA1OTA3LCA2NTA4OCwgMCwgMTI3MjYsIDc0NTk0LCA5MTE3LCA5ODMxODEsIDEyMDAzLCAKKyAgICA1NTEzLCA1MTA5LCA1MDUzLCA3NDIzMCwgNTUxMCwgNzg0NTEsIDAsIDc4NDQ3LCAyNDcwLCA3ODQzNywgMCwgMTkyNSwgCisgICAgNzEyNTEsIDkyMjM3LCA3NDgwNywgOTgzMDYyLCA1MDQ4LCA1MDQ3LCAxOTQ4MzcsIDk4MzM4MCwgNzQyMDEsIDkyMzEzLCAKKyAgICAxOTQ4MDIsIDc0NDk3LCA4Mjk4MiwgODA4OSwgNjkyOSwgNjM5LCA4Mjk4MSwgNjgxNzksIDY0NDQyLCA3MDE4MCwgODI5ODQsIAorICAgIDQ1OTksIDQxNDAyLCA2Njc0LCA0MzM5NywgNDMyOTQsIDE0NzYsIDY0OCwgMCwgNjU4MTksIDMyMzMsIDAsIDQxNzgyLCAKKyAgICA2OTUxLCA5NDAxNywgMTI5MTk3LCAzNTMwLCA5NzUwLCAxMjgzMTcsIDEyMDk5MSwgNjY1NiwgNDI2MTgsIDcwMTc1LCAKKyAgICA1MDQ2LCA4NTEyLCA2NTg1NiwgNzQyNjEsIDg5NjcsIDAsIDUwNDUsIDQyMDI2LCAxOTE2LCA3OTg2LCA1MDQ0LCAxMjA1NTYsIAorICAgIDkwMDYsIDEzMTI4LCA1MDQzLCAxMjEzMzUsIDc4NTMsIDY3ODA4LCA3NDAwNCwgOTY2OSwgMTIzNDEsIDEyNzAzLCA4NDAyLCAKKyAgICAxMjg4ODMsIDExOTA3MCwgNzAxNzQsIDQxNzUwLCAzNTg2LCA2NDUwOCwgNDMxNDgsIDAsIDEyNzk3MSwgMTE5NjA2LCAKKyAgICA2Nzk4MywgMTMyOTYsIDUxNywgMCwgMTI4NDY3LCAxOTQ5NDYsIDQxNTI4LCAxMjMsIDY1NDU0LCAwLCAxMjEzMjYsIAorICAgIDc0NDc4LCAxMDUzMSwgNzc4NCwgNDE1MjYsIDEwODI5LCA3Mzk5MSwgODA1NywgMTEyNiwgNzM4OTUsIDE5NDg1NywgCisgICAgMTk0NTkxLCAwLCAzOTI1LCA0MjUxLCA4MDY5LCAxMDUxNywgNzExMTIsIDQ4OSwgNzExMTAsIDQyNTAsIDkyMjY2LCAKKyAgICAxMjA0NTIsIDQzMTUxLCA5ODMxNzgsIDkyNzM4LCA2NjIwMCwgMCwgMCwgMTI1MDI2LCA3NDI5OCwgMTI4ODc5LCA5ODM0NzYsIAorICAgIDg3MTEsIDYxODMsIDgzNDQ4LCA5ODM5NTIsIDcyNDAyLCAxMjA0NDgsIDc2MjMsIDExODkyNSwgNjYzNzYsIDkyMzUsIAorICAgIDEyNzYwLCA3NDE3NiwgNjk2NjIsIDY2NDQ1LCA0MzU0MCwgMTAwNjIsIDM3NDMsIDExNTE0LCAxMTA3OCwgMCwgMTIxMzYsIAorICAgIDAsIDEyNjU5NywgMTIwNDM0LCAxOTQ4NTAsIDc3MjYsIDE5NTA5NSwgMTk5MjIsIDI2NywgMzM5MywgNDIxOTgsIDEzNzEsIAorICAgIDE5NDg0OSwgNjkyMzMsIDI0NTgsIDAsIDYyMDEsIDAsIDQxMDc0LCA0MjY2LCAxMDY1MiwgNDE2MTIsIDQxMDc3LCAzNDAyLCAKKyAgICA5MDUwLCAzMzk4LCAxMjg0MjQsIDk4MzM1MCwgMCwgMzM5MSwgNDEwNzUsIDI0NzYsIDAsIDEyODAxNywgMCwgMTA2MjUsIAorICAgIDEyOTEwNiwgMTI3NjcsIDEzMDE3LCA3ODc0MywgNjQyNjEsIDY0OTM0LCA3MDE1MiwgMTMwMTQsIDEzMDEzLCAxMjExOTgsIAorICAgIDY2NzMsIDAsIDAsIDEyMTMyNCwgMTI0MzgsIDAsIDk4MzM0NCwgODMxMDYsIDcxMTI4LCAxMjAwNjIsIDkwNTMsIDEzMDE1LCAKKyAgICA3NDUyMywgMCwgNzA0LCA2NjIxNSwgNjE5NSwgNzQ5NDksIDY2NjAsIDc4NzU4LCA5MTc3NjAsIDc0ODYxLCA0MjIxMiwgCisgICAgMTI2MjksIDExNDM1LCAwLCA1NTI1NiwgNjU1MzgsIDY3MzQzLCAxMjE0MzcsIDEyOTA4NiwgNDM4NzYsIDkyOTQxLCAKKyAgICA2NTQ0OCwgNzgxMDAsIDEyOTQ4LCAxMTkwMDEsIDEyODU5NSwgNDM5NDksIDEyMDA0OCwgNzgwOTksIDEyNzA4NSwgMCwgCisgICAgMTI4MzIwLCA0Mjg3LCA4Mjc2LCA0OTAyLCAxMTMxLCA5ODM2MDYsIDc4NDU4LCA2NjcyOCwgMTgxNiwgNDM5NTIsIDQyNTMzLCAKKyAgICAxNjgsIDQyODQ1LCA0ODk4LCA2NDI5OCwgNDM5NTAsIDc4MTA1LCA0OTAxLCAxODIxLCA0Mzk1MSwgNTc4LCAzNjUzLCAKKyAgICAxMjg5NDYsIDc5MSwgOTE2MiwgNjk3NywgNzQxOTYsIDc4ODg5LCA3MDE2MCwgMCwgNzM3MzEsIDgzNTQsIDQzNTkwLCAKKyAgICAxMTkzMDMsIDk4MzQ1MSwgNzU1NywgMTE5MTA4LCA2NzM3OCwgODIzNCwgNzI0MSwgMTI4NjA4LCAxMTM3MzUsIDExOTE2NywgCisgICAgMTk0OTk2LCAxMjgxMSwgNjU5MjUsIDM5NDYsIDc4MDc4LCAxMDk5OCwgNzgwODAsIDY3MywgMTk0ODY3LCA2NDM5NywgCisgICAgMTI4Mjc2LCA3NDU5OSwgNzg0NDksIDg4OTAsIDE5NDk3NywgMTk0OTc2LCAyNDQ4LCA3ODA4NSwgMTAyNjcsIDg0MjQsIAorICAgIDI0NTIsIDc4MDgzLCA2NzIxNywgODcyOSwgNzg0NTYsIDAsIDc4NDUsIDEyNjU2NCwgNzEzMDIsIDQ0MDgsIDQxMjIsIAorICAgIDY3NzIsIDExMDM5LCA4NzIzLCA2NTg5NiwgNzEzMTAsIDExOTMwMiwgNzMxLCAxMTkzMDQsIDcxOTA0LCAyNDM4LCA2NDg1NSwgCisgICAgMTE5MzAwLCAxMTkyOTksIDExNzUsIDAsIDQyMTM1LCAzNzMsIDExOTE3MiwgMjExOSwgMTE0NTcsIDExNTIxLCA3NzIzLCAKKyAgICAxMjg2MzksIDAsIDAsIDQxOTUyLCA5MzAyMywgNTI3MywgMjEyNywgNTI2OSwgNjMzNywgNTIwMiwgMjQwNCwgNTI2NywgCisgICAgNDI4MjMsIDExMjkxLCAxOTkxNSwgNTI3NywgMTI5NjMsIDcwMzIwLCA2MTg5LCA0MTI1LCAxMzE0LCAxMjEzMywgMTIwMzQwLCAKKyAgICAxMTg4NzMsIDEyNzEsIDk4MzY0MCwgMTI5MTEyLCA2NjAyNCwgNDE0ODIsIDM4NjQsIDkyMDQsIDAsIDM4NzksIDAsIAorICAgIDEyOTc4LCA0MTY2LCA0NTc0LCAxMjgxMTEsIDc1NjcsIDc0NTksIDc4MTI4LCA0MTM5MCwgNTM4NCwgNDE4ODIsIDY3NjQ3LCAKKyAgICA3MDE1NCwgNTc1OSwgMTk0ODY5LCAxMjE0MTMsIDQxMzg4LCA2NDQ0NiwgNDEzOTIsIDY0Mjg4LCA0MTM4NywgNjcyMDEsIAorICAgIDg3MDYsIDU1NTIsIDY4ODM3LCA3MDAsIDAsIDU1NTMsIDAsIDcwODgsIDUzNTYsIDc0OTksIDY4MDA3LCA2NjU5NiwgCisgICAgNzQwNjYsIDY3MjUxLCAxMDI2MywgNTU1NCwgMCwgMTIzNDQsIDEwMzExLCA3ODExMywgNjY2NSwgMTExMTUsIDEyMTAzNSwgCisgICAgNzYxOCwgODUxNywgMTE0NTUsIDc4NDQwLCA2NDYzMiwgNjQ0NDcsIDU1NTUsIDc4MDg4LCA3ODA5MywgNzgwOTEsIDAsIAorICAgIDQyODAzLCA2NTAzMywgOTE0MywgNjY2OCwgNjcyODgsIDY3OTk1LCAxOTUwNjksIDY1NiwgMTk1MDcxLCA2NTAzNywgNDU3NywgCisgICAgNjQ2MjQsIDAsIDAsIDcxOTEyLCAxOTQ5MDgsIDQyNjksIDczODg1LCA5MTc3NzUsIDQyODQ2LCA2OTY0NCwgOTUwLCAwLCAKKyAgICA5MjI3MywgNjY1ODAsIDc3OTkyLCA2NjY4MywgMTA1NTQsIDExOTAwOCwgMTE5MTIxLCA2ODMyLCA1MDk4LCA5MTc3NjgsIAorICAgIDE5NDY2OCwgNzA0MDMsIDUwOTcsIDQ5MzUsIDk4NDgsIDEwMzgxLCAwLCA2NzI5NiwgOTI4OTYsIDM2NTEsIDAsIDY3Mjk0LCAKKyAgICA3MDg0OCwgNTEwMiwgNTEwMSwgMTAyNjksIDEyOTgzLCA4MTM4LCA0NTE3LCAxOTMyLCA1MTAwLCAxNDM5LCAxMjA5MywgCisgICAgMTI0NywgMTAwMzQsIDEyMTM0MCwgNTA5OSwgNzgzNzMsIDE0NDEsIDQyMDg3LCAzMDYzLCA2NTAsIDExOTk1MywgNzgzOCwgCisgICAgMCwgMTI4NjU1LCAxOTUwNDAsIDExOTE0MiwgOTAzMSwgNzA4MjksIDc4NDI3LCA5MDc4LCA4NTQ1LCA2NjM1NiwgMTI4Nzk5LCAKKyAgICAxOTQ5MjMsIDkxNTQsIDkxMTgsIDEyNjU0MywgMTE5NTg2LCAyNjc2LCAyMjc3LCAxMjg0MjIsIDY4MjM3LCA2MTkwLCAKKyAgICA4NTk5LCAxMjUxMTgsIDY5OTE4LCAxMDc5NSwgOTg1NywgNzAxNCwgOTg1NiwgMTk1MDMzLCA3MTkwMywgMTIxMjksIAorICAgIDEyNjY1MSwgODQ4MSwgODMwNjgsIDYyMDIsIDY3NzExLCAxMDkyMCwgMTEzNzI2LCA1MjAzLCAxOTUwMzksIDE5NTAzOCwgCisgICAgNTEwOCwgNTEwNywgNjU4MTgsIDY2MDE5LCA5NzYyLCAxMTIwNSwgNTU0MSwgNzQ3NzIsIDAsIDEyNjEzLCA1Mjg0LCA2NjU3LCAKKyAgICAyMDcsIDEyMTIwNiwgNDI3NSwgNzQ4MTksIDg1NCwgNjgxNDcsIDc0MzgxLCA2NjgxNiwgNzg3ODYsIDUxMDMsIDEyNzg2MSwgCisgICAgNjQzNDgsIDQxMzY4LCA0Mzk3NCwgNDg4LCA2OTgxMSwgMCwgNzEzMzksIDEwMTU3LCAxOTQ2MTIsIDQzMDM0LCAxMTQzOCwgCisgICAgNjQ2NzQsIDAsIDcwMTU4LCA2ODQzMSwgNDE3NzEsIDUxMDYsIDY2NjksIDg1MDQsIDY1MTU0LCA2OTgxMywgNDEzNjcsIAorICAgIDUxMDUsIDY1MjY2LCA2OTcyMCwgNjQ3NiwgNTEwNCwgOTgzNzQ5LCAzMDQsIDMxNzYsIDc4ODcxLCA3MDE0OSwgOTMyLCAKKyAgICAxMTM2ODMsIDY1NjcsIDIzOCwgNjk2NTYsIDc4NDMyLCAxOTQ1OTUsIDE5OTA1LCA0Mzg1MCwgMTk1MDE1LCA3ODg3MCwgCisgICAgNDEwNDQsIDY3NjQwLCA2NzMwMiwgNDIwNTUsIDk5MTIsIDY1OTM5LCAxMDY3MCwgNzQwOTMsIDEzMjczLCAwLCAxMjU1MiwgCisgICAgOTMwMzksIDg4MDMsIDMwOSwgNjYyMiwgODE1MSwgMTA4NTgsIDc4NzA2LCA2NzYzNiwgNzAxNzEsIDEyNTY4LCAxMjc5MTcsIAorICAgIDEyNTUzLCAxMDgxNCwgNDMyNzUsIDY5NTAsIDk3MTIsIDY4NjgwLCA0Mzk3MCwgMTI2NTM1LCA2NTE2NSwgOTI3MjUsIDAsIAorICAgIDY2NDY2LCAxMjQ5ODYsIDEyNzc4NCwgMCwgNjY3MjUsIDYxOTEsIDExMzUxLCAxMDQzNywgMTEzMTYsIDY3NjM0LCA0Mzc2MywgCisgICAgMCwgNDE3NTQsIDY3NjM1LCA5MzcwLCAyNzIwLCAxOTQ2MDAsIDY4NDYyLCA4MjMyLCAxMTg4MTcsIDEyMTA1NiwgMzIyMiwgCisgICAgMTIxNDM5LCAxMjExMzcsIDAsIDY2NjYzLCA5ODMwNDcsIDkzMDY3LCAxMDgzNCwgOTgzMTI3LCAwLCA2NTczMiwgOTQwOTUsIAorICAgIDkxNzU0NywgOTI2ODIsIDY3Njc5LCAxMjA3MzQsIDY3MzA5LCA3NzgxLCA0MTM4MywgNjQ1NjgsIDY3MzExLCAxMjA3MzgsIAorICAgIDEyMDc3LCA3NDQzMywgNjQ1ODYsIDkxNzYyMCwgNDIzOTYsIDU1MjU1LCAzNDc1LCA2NzI2MCwgMjQ3OSwgNjczMDYsIAorICAgIDM2MzIsIDEyMDcyOCwgMTA2OTgsIDgzNzYsIDM2NDgsIDY3MjYzLCA3NDg0NCwgNjc2MzksIDM2MzYsIDY3ODk0LCAzNjUwLCAKKyAgICA4ODM3LCA2NTIyOSwgMTg0MywgNDIyODMsIDQzMjUwLCA0MTU2MiwgOTEwMCwgNzQ1NDgsIDY4ODI2LCAzNjQwLCAxMjcxOTAsIAorICAgIDQyMzIxLCA3Mjg0LCA5Mjg4MCwgMTE4OTg3LCAxOTQ5NTAsIDE5NDk0OSwgNzQxMTUsIDE5NDk1MSwgMTI2NjQ5LCAKKyAgICAxOTQ5NTMsIDQyMDgwLCAyNTI5LCAwLCA5ODM3ODQsIDY2MDEwLCA0MjA4MywgNzQ5NTIsIDY4Mzk4LCAxOTQ5NTcsIAorICAgIDY3NjE5LCA2NjM2NywgMTk0OTU4LCA5NjM0LCA5MjM4MCwgOTk4OCwgMCwgNDEwNjgsIDAsIDQyOTUsIDY1MjY0LCA2ODAwNiwgCisgICAgMCwgNjc4MzUsIDAsIDc4NSwgODIzNiwgMTI4NjQ3LCA5MDI3LCA2ODE2MCwgNjc2MjMsIDY0MzgzLCAxMjAyNjUsIDkyNSwgCisgICAgMTI3MTU2LCAwLCA0MTk4NSwgNDEwNzEsIDk1ODYsIDEyMDk4OCwgNDE5ODQsIDkyMTcsIDEyODM3MiwgOTI1MTAsIDkyMjE4LCAKKyAgICA5MTg2LCAyMDY3LCA0MDE2LCA5ODM4MDMsIDAsIDM4MSwgMTI5MzYsIDAsIDQyMDc3LCA5Mjk4NSwgNjk4ODAsIDUxODQsIAorICAgIDQyMDc4LCAxOTQ2MDcsIDEwODEwLCAxMjg1MzEsIDQ1ODUsIDE5OTQzLCA1ODYwLCA2NzYzMywgMTIxMzM0LCAxMjcxMDQsIAorICAgIDgxMiwgMzYxNSwgNzI0MDEsIDUxNzgsIDQ0MDAwLCA5MjQzNiwgNzg4MDcsIDUxODgsIDc0Mjg3LCA2NzYyOSwgMzYwNSwgCisgICAgMTA2OTIsIDExNjYsIDY0NDI5LCA0MjYzOSwgOTI0LCAxMjc3OTMsIDY3NjMxLCA0MjYxNiwgMTIwNjcwLCAyNDQyLCAKKyAgICAxMDcwMywgNjczMTcsIDY3NjMyLCA2NzMxNiwgMTI3NzEsIDEyNzM2LCAxMjc1MywgNjY3MDgsIDczOTMzLCA2NzYyNiwgCisgICAgNDI0MDEsIDE5NDg2NSwgNjk4NzIsIDEyNzM3MywgNDIyODgsIDEyNzUxLCA3NDkwNiwgODU0MiwgMTMxNDUsIDE5NDk2MywgCisgICAgMjQ2OCwgNjY3MDYsIDQxMjk0LCAzNjI2LCAzODgzLCA2NDM4OCwgNDI0NzksIDcxMjIwLCA0MTExNywgMCwgOTI1ODAsIAorICAgIDEyODYyNCwgNzQ5MzksIDY3NjI0LCAxMjc5NzYsIDEyOTAsIDAsIDY1NTg1LCAyNzE1LCA4MDYsIDY1MjA4LCA0MTg4NCwgCisgICAgOTE3ODgzLCAxMzE4LCA2NDczMSwgNzgwMDQsIDAsIDAsIDY2MzI1LCAzNDY1LCAyNDA1LCA5MjQwLCA5ODM4NTgsIDEyNzU2LCAKKyAgICA2NTI1OSwgMCwgOTgzNzgxLCAxMjc1MiwgNTgzMywgMTQzMiwgMTEyNDYsIDQxODgzLCA3MzkxMiwgOTc5OSwgOTE3ODkzLCAKKyAgICA0MTg4NiwgMjQ4MCwgMTI3OTA2LCAyMDYyLCA2NzMyNiwgNjQ5NCwgNTUzNywgNzg2NTYsIDAsIDE5NDU4NywgMTI0OTY5LCAKKyAgICAxMjExLCAwLCAxMjA5NzEsIDY3MjY5LCAxMTg4MzIsIDEyMzE4LCAxMjkwMjQsIDExMzc5NiwgNjgwMDUsIDEwNjIyLCAKKyAgICA5ODM3NzksIDAsIDY4ODIxLCA2NTY2LCA3MTE5NSwgMCwgNzM3ODAsIDExOTE5NiwgNjQ4NjQsIDAsIDc4NjYwLCAwLCAKKyAgICA4Mjg0LCAxMzA4MSwgMTE5MjA2LCAzNTg5LCA0MjA1MSwgNDAzNSwgNjQ5MiwgODMwMDMsIDQyNjUsIDY2NDIsIDM5NzcsIAorICAgIDc0MTg2LCA0MTc3OCwgODM2LCA5Mjk0NywgMjQ4OCwgMTI1MDk2LCA0NTgyLCAwLCA3MTQyNiwgNDE3NzcsIDEyOTI2LCAKKyAgICA5ODMzNzksIDc1MjgsIDEwNTUwLCAxMTM3NjEsIDkyNzA2LCA5ODM5NTUsIDEwOTYxLCA5Mzk3NywgMTM3NCwgNjQ4NzgsIAorICAgIDExOTAxNCwgNjc3MjAsIDQyMzg5LCA0MTM3NCwgMjI4NiwgOTE3NjA0LCA3ODQ5MiwgNDEzNzcsIDEyNzkwOSwgMTk1MDQ3LCAKKyAgICA0MDAsIDEyNTk3LCAxMjA1ODYsIDEyODA5NywgMTI5MDcxLCA2NjYxLCA5MTc5NjEsIDY0ODI3LCAwLCA3MzgxNywgMzkwLCAKKyAgICAwLCA3MTMwMSwgMTI3MjkyLCAzNDczLCA3NzE4LCAxMTM3NTUsIDY4ODE0LCAwLCA1NTI4NSwgNzM3ODQsIDY2Mzk0LCAwLCAKKyAgICAxMTk2OSwgMTIwNDYxLCAxMjc4NDEsIDYzNjUsIDE4ODcsIDY3NjMsIDkyNTUxLCA4MDgwLCA3MDA2LCAwLCAxMTg5MDIsIAorICAgIDY3NTcsIDY0MzUxLCAxNTQ0LCA2NzE1NiwgNjc2NiwgNjQ2NzcsIDEyMDcxNiwgNjcwODgsIDYxNDYsIDc0MDMxLCA3NzEsIAorICAgIDEyMDY4MiwgMCwgMTI4MTIsIDEzMTY4LCA0MjI3MiwgMTIyMDAsIDY2NDIzLCA3OTA0LCAwLCA5NTMsIDEyOTE3LCAKKyAgICAxMTk1NjAsIDEyMzAwLCA2NzA4OSwgMTE0OTEsIDk3MjQsIDEwMzQxLCA5ODM3NzMsIDk1MjQsIDc0OTAsIDExMzg5LCAKKyAgICA3NDg5LCAzMzc5LCAwLCA3NDg3LCAxOTQ2MjQsIDQ3MSwgNzQ4NCwgNzQ4MiwgNjc1MywgNzQ4MCwgNTc2NCwgNzQ3OCwgCisgICAgNzQ3NywgNjUwMSwgNzQ3NSwgNjkxOCwgNzQ3MywgNzQ3MiwgMjQ3NCwgNzQ3MCwgNzQ2OCwgMTAyMzIsIDEwNjE1LCAKKyAgICAxMDIxMywgMTI3Mjg4LCA5MjM1NywgMTAwNDksIDExODM0LCAzNTQ0LCA5ODM3ODUsIDYwMTcsIDY1MzExLCA3NDkzNSwgCisgICAgMTIwMjE2LCAxMzMwNiwgMTA1MzMsIDc4NzAsIDczOTQ5LCA3NjI1LCAxOTQ4ODIsIDEyMDU0NCwgMCwgMTI3OTUwLCAKKyAgICA5MjY2MCwgOTgzMzU2LCA3Nzg4OSwgMCwgMTk5NjEsIDI0NzIsIDQyNjY1LCA5MjM0MSwgMTIxMTMzLCAyMTM5LCA0MjU2LCAKKyAgICAxMjA3NzYsIDc0MzgwLCA0MzgzNiwgNDI2NzUsIDQyNjU4LCAxMjg0NSwgNjY2NiwgNzA1MDgsIDY1MTM4LCAxMTkzNTUsIAorICAgIDY3ODYyLCAwLCA2NTY3MSwgNzA4MywgMTIwMDA4LCA4MDY2LCA3Njc4LCA3NDg2NSwgMTI1MTM0LCAxMjAzMjEsIDEyNzI4MywgCisgICAgOTgzMzk2LCA3MTg2LCAwLCAxMjA1NTUsIDAsIDQ0NSwgMTIwNTY2LCA2Njg0OSwgMTI1MTQxLCAwLCA4MzMwLCAwLCAwLCAKKyAgICA0Mjc5NywgMTEzNzM2LCAxMjAyMTUsIDgzMDAxLCAzOTAyLCAwLCAxNzcwLCA0Mzk1OSwgMTI1MDY3LCAxNTYwLCA0Mzk1OCwgCisgICAgOTIxNjcsIDQ1ODQsIDczODQzLCAwLCAxMTcxMiwgMTA4NjYsIDY3MDkyLCAxMTE4LCA3MTMzNCwgNzQ4ODgsIDAsIDEwODEsIAorICAgIDc0MzYsIDExMTQ3LCA3MjUyLCA3MDA5MywgNTk5NiwgNjk5MjEsIDQ5MDMsIDY4MTQyLCA0MTM4NiwgNTE2MiwgMTE5MTg5LCAKKyAgICAxMzMwLCAxMjg2MTMsIDcxMzksIDAsIDEyMDQ3LCA0MTM4NCwgMCwgMCwgMTg0OCwgNDMzNCwgNjMyNCwgNDE5NzUsIAorICAgIDY0Nzc3LCAxMDY3NCwgMTIzMDgsIDEyMTg2LCAwLCAwLCA5ODM3NDEsIDEyNzE1LCA2ODAwMiwgMTk0NTc2LCA4MzI1NiwgCisgICAgMjAxOCwgNjY2NzIsIDQxOTc5LCA2NjY4NSwgMTE5MTU3LCA2ODAwMCwgNzg0OTAsIDAsIDEyNjk4NCwgNjgwMDEsIDkzMzQsIAorICAgIDkyNzA1LCA3MDgwMCwgNzAxMDEsIDc5NzUsIDAsIDc3OTU3LCAwLCA0MzQ5NCwgNDg4NCwgNjY1OTcsIDY5NzMyLCAwLCAKKyAgICAxMjEwMTAsIDYzMTMsIDY1NTEzLCA2OTg1NywgMCwgMCwgMCwgMjM0NSwgNDM2OTcsIDQ2MywgMCwgMTI3ODkwLCA2ODE3OCwgCisgICAgMzExNywgNTQ2MCwgMTIxNDIzLCAxMjg3MTcsIDk4MzM4OSwgMCwgNDIyNzksIDEyNzE0MiwgMTI2NTAzLCA3ODQxNSwgCisgICAgOTgzMjI4LCA2ODUyNCwgOTgzMzg2LCAxMzI0OCwgMTI1MDI3LCA5ODM4NDMsIDQzOTU2LCAxMjg0MTUsIDk4MzE1MywgCisgICAgMTIxMDA5LCA1NjYzLCA3MTEyMCwgMTI4NDcyLCAxMjg5NTgsIDAsIDI0ODIsIDE0NzEsIDE5NDU4MywgMTEzNzQ3LCAKKyAgICA0MjI0NywgMTIzNzgsIDczOTI1LCA2OTY2NCwgNzE0MjcsIDEyMzc0LCAxMjEzNTcsIDEyNzA2NywgMCwgMTE4ODI4LCAKKyAgICAyNDYwLCA3MTg4MiwgMTE5NDQsIDEyMzc2LCA5MjM0MiwgNjQ2NzksIDkyODkzLCAxMjM4MCwgMTA1NTcsIDY0NDczLCAKKyAgICA1ODcwLCAxMTEyMiwgMjAyNCwgMTI3MTgwLCA5ODMzOTEsIDcxODc5LCA1MzksIDAsIDEyMDMwMiwgNzAxMjAsIDM4NTMsIAorICAgIDY1MTgwLCAxMjc5MjMsIDEyMDc5NiwgMTIwMjQ1LCA5MjMyNCwgMCwgODY1OSwgMCwgMTI0NzQsIDY3MjQxLCA5NTAzLCAKKyAgICAxOTQ5NjksIDI0NzgsIDEyMDI0OCwgNDE2MiwgMCwgNDI2MCwgMTI5NTMsIDY5NjMzLCA4Mjk2NiwgMTI0NzAsIDkyNjQwLCAKKyAgICA3NDE4OSwgMjc0MiwgMTI0NzYsIDExNzk4LCAxMDk0NiwgMTI3MzEwLCA1MDAwLCAxMTM2ODcsIDk4MzU3OSwgMTI4MTkwLCAKKyAgICA2OTY3MiwgODIxMywgNDM4MjQsIDc3NzEsIDYxNjEsIDY4MDE4LCA2NzA5LCAxOTQ5NjcsIDc4ODg1LCAxMTkyNDMsIAorICAgIDY4MjM1LCAxMjA1ODIsIDc4NTQ3LCAxMTM3MDksIDEwMzAxLCAxMDMzMywgMTAzOTcsIDExOTA0NCwgMCwgNzM3OTEsIDAsIAorICAgIDgzMDMwLCAwLCAxMjE0ODIsIDExOTEyMywgNDAxNCwgMTI4NDIsIDczOTUyLCAxMjAxNSwgMTI3MjkwLCA4Mjc1LCAzODkzLCAKKyAgICA3NDkwMywgMTIwOTI3LCAxMjIxMCwgNzIyMSwgNDIxNDcsIDc0ODY4LCA3NDU1MCwgNzEyMTUsIDY0NzQ3LCAxMTg4NDEsIAorICAgIDEyODA4NiwgMTI1MTYsIDQ0NDQsIDAsIDkyMjcxLCA3NDUzNywgMTA4OTIsIDgyMzEsIDAsIDY0NzMsIDQxOTY4LCA3ODM4OCwgCisgICAgNDE5NzMsIDM1OTEsIDQxOTY5LCA4MzAwOCwgMjQ1MywgMTE4ODk5LCA5MjY2NiwgNjQ3MDUsIDcxMDY4LCAwLCAxMDM0OSwgCisgICAgMTA0MTMsIDQzNTkxLCA0MTk2MiwgMzIwMiwgNzQzNTMsIDEyOTE3NSwgODMxNiwgMTI5MTc0LCAwLCA5NDA2MCwgNjg3LCAKKyAgICA5MzA1NSwgMTI5MDc0LCAwLCAxODQwLCAxMjc4MDksIDY4NjcxLCAxMTEyMSwgNDg4MywgMjg1LCA0NzIzLCAxMTE3NSwgCisgICAgOTI2OTIsIDQ0NTksIDc0NTc3LCA0MjkyMSwgNDE3MjAsIDExMDg5LCAyNDAsIDE5OTA2LCAwLCA0MjMyMywgNzQ2NDAsIAorICAgIDk3NDMsIDEyMDIzMiwgMTMxMzQsIDkzMDY1LCAxMjg5NTYsIDY1OTMxLCA5MjU3OSwgMTI4MzI5LCA0MjYzNCwgOTgzMzQ1LCAKKyAgICA0MzQzNywgMzA4MSwgMTE0NjMsIDEyMDE1NCwgMCwgMTk1MDEzLCAxMDQ0NSwgMTIxMzIyLCA5Mjk2OSwgNjY3MTcsIDI2MTQsIAorICAgIDkxMjUsIDcxMTI1LCAxNzI5LCAxMjkwMzQsIDcyNDIwLCA2NTIyMSwgNjM4ODMsIDQzMzM0LCA2NDg1MiwgMTI0OTI5LCAKKyAgICA2NTE5NCwgNjYyMDEsIDAsIDY2NTc4LCA1MDAxLCA0MTg3OSwgNzQ0MjcsIDQxMjEsIDUwMDMsIDg4NCwgNjY3MDAsIAorICAgIDYzODc5LCA0OTQzLCA1MTUwLCA3Mzg4OSwgNzM3NjQsIDQwMzksIDY0MywgMzA4NiwgOTI1MzMsIDQyNDQ4LCA0MjI5OSwgCisgICAgNTgsIDEyMDA4NCwgOTE3OTUyLCAxMjAwODMsIDYzODczLCA4NDkxLCAwLCAwLCA5ODM2MjMsIDQ1MzAsIDQyNDA5LCA3MTI2LCAKKyAgICAxOTQ1NzUsIDI3MjEsIDEyMDA3MywgMTE5MDk2LCAxOTkyOSwgMTE4OTQxLCAxMjg3OTcsIDkyOTc1LCA0MjQyLCA0MjY0LCAKKyAgICAxMjAwNzcsIDEyMDUzMCwgNjYxNzksIDQyNDEyLCA2NTk0MSwgMTMxMTQsIDY0NTIyLCAxMDc0MCwgMzA5NCwgOTgzMTk5LCAKKyAgICA5NzU0LCAxMTkxMDIsIDQ0MzcsIDczOTQ4LCAxMjcwNzQsIDk4MzI0MCwgNTUyODAsIDQyMTc0LCAxMjc5NTQsIDQyNDMwLCAKKyAgICAwLCA5ODM0NTIsIDQyMzU1LCA2NjAyNiwgNDMwNiwgNDEzODAsIDY4NDMyLCA5MjU4NiwgNjgzMTQsIDY2NjY3LCAxMTkzNTEsIAorICAgIDE5NDk4MiwgMTIxMTcyLCA0MjIwMCwgNDI1NjYsIDcwMDAwLCAxMjg5MjgsIDUwODgsIDY5NDgsIDAsIDg1MjQsIDEyNTA0MCwgCisgICAgMCwgMTIzODUsIDAsIDc0OTI2LCA2OTY0NiwgMTM4NiwgNjQ1ODAsIDExNDgwLCA2MTE2LCA2NTAzOSwgNjUwMzgsIDEyMzkyLCAKKyAgICA2NTAzNiwgODA2NCwgMTI3NTU4LCAxMjEwMSwgNTgyMiwgMTE5MDA0LCAyMDgwLCA3MTAsIDc3OTk5LCAxMTY2MywgMTY2NiwgCisgICAgNDIwOTEsIDExOTY1NywgMTIzODMsIDQzNjcxLCA0MjA5MiwgNjg0MTgsIDQyODksIDEyNzg5NywgNjM4OTYsIDEyMDYxLCAKKyAgICA0MjA5NiwgNDM2MjEsIDMzNjIsIDEyMzc3LCAxMTk5MzQsIDk4MzgzNCwgNjg0NDksIDc0NjEsIDczOTAxLCAxMjQ0LCAzMzEsIAorICAgIDczNzg2LCAxMjY4MywgMTA2NjIsIDAsIDgxMTIsIDAsIDY1ODUyLCA3NDYyOSwgMTIzNzksIDEyNzEwNywgOTI5MzAsIAorICAgIDQxOTY0LCA0MjIwOCwgNjM4NDMsIDIwODQsIDQxOTY1LCA3MDA4OSwgNjU4NjYsIDQzMjcsIDAsIDYzODQwLCA2NjQxMywgCisgICAgNDEyMjAsIDEzMDMyLCA5Mjk4MCwgNTg0LCAxMjkzMywgNDMxNzcsIDEyMzczLCA2OTg1NSwgMTMwMDAsIDEzNTEsIDI5MzUsIAorICAgIDg2OTgsIDEyNjY1LCAwLCAxOTMwLCAwLCA3ODIyOSwgMTI0MjcsIDY2NTE0LCA2OTg1OSwgMTMwMzEsIDAsIDYzOTAxLCAwLCAKKyAgICAzNjU3LCAxMTk2MTEsIDY1MjAyLCA2MDAwLCAxMTM3ODYsIDEyNDI2LCAxMjEwNTgsIDExOTkzNSwgNDE3NDAsIDEyNDI4LCAKKyAgICA0MTI4MywgNDE5MTYsIDExOTIxMCwgMTI4MzE4LCAwLCAxMjQyOSwgNjcyNywgOTgzOTQ4LCA3NTYyLCAxMjUxMjksIDUxNzAsIAorICAgIDk4MzkxNSwgNDE3NTUsIDY3NiwgMCwgNjY3MDQsIDY2NjY0LCA5OTc4LCA2NjQ5MSwgMzUzNiwgMCwgOTc1MiwgOTIzOTcsIAorICAgIDYxNjIsIDc4MzIwLCA2OTIyOCwgMTAxMTMsIDQxODI5LCA2NTg4NiwgNTE1OSwgMTI0MjIsIDQxODMyLCA0MzksIDMwNzIsIAorICAgIDkxNzgyOCwgNDIyMDcsIDc0NTQ5LCAxMTc5NiwgNDA5NzAsIDQxODMwLCAxMjUwMjEsIDcwMTUxLCA4MzA4LCA5MTc3OTcsIAorICAgIDcwODA3LCAxMTkyNTgsIDY3ODY0LCAxMTM2OTYsIDkxNzgwMCwgMTIzMzYsIDQxMzUsIDY3MjMxLCAzNDEsIDI3MjcsIAorICAgIDQxMjksIDM1MzksIDAsIDYzODYxLCAwLCA3OTEzLCAwLCA2Mzg1OSwgNDEzMSwgNjM4NjgsIDEyOTA4NSwgNjM4NjcsIAorICAgIDQxMzMsIDExMzcxLCAyMTAsIDQ2MDAsIDk4Mzg5NywgNzQ1NjAsIDQxMzcsIDgwODIsIDc4NTA2LCAxMTkwNjIsIDc4NTA0LCAKKyAgICA2NzA0LCA0NTkxLCAxMjgwMjksIDQzODczLCAxMjA3NTMsIDk2ODAsIDEyOTM3LCAxMjA2MjMsIDU2MSwgMTIxNTksIDE5NSwgCisgICAgNjgzMjEsIDQxNTAxLCAxOTQ1ODEsIDQyMDMxLCA1NzE5LCA3MTcyLCA0MjY4NywgODM2OCwgMTI4MzA2LCA0MTQ5OSwgCisgICAgOTMwNjgsIDcxMDQ3LCA0MjI0MiwgNDE0OTgsIDkxNzc5NCwgNDIwMjUsIDc4NTY1LCA2NTgwNSwgNDI0NjMsIDY3MTgyLCAKKyAgICAyOTI0LCA2NzE4MywgMTIwNTEwLCAwLCA5ODM5NzIsIDkyNzY2LCA3Mzk0MSwgNjcxODYsIDQyMzMwLCA2NzE4NywgMzk2OSwgCisgICAgMTIxNDA1LCAwLCA3MTY5LCAxOTkyLCA5NjUyLCA3Mzk3NywgNzI0NiwgNDIwODYsIDEyNjYxNSwgMjIxOSwgMTIxMzQ5LCAwLCAKKyAgICAxMjg4MDEsIDY3MTgwLCAxMjc1NjksIDMyNywgMTIxMjc3LCA5MDQyLCA5MTc3NzcsIDkxNzc3NiwgNjUxNDgsIDEyNDMzLCAKKyAgICA5MTc3ODEsIDEyMDIyMiwgODMxMjksIDEyNDMxLCA4NjY4LCAxMjQzNCwgNjcxOTQsIDExMzgxMiwgNTk5OSwgNzUwMTMsIAorICAgIDc3MTIsIDEyNDMyLCAxMjgyNDMsIDQzNjUzLCAxNzI2LCAxMDE1LCA3NDA3OSwgODIxMiwgMTI4MDY1LCAxMTM3NTQsIAorICAgIDQyNDIzLCAxMTkwNjYsIDE5NDYxMywgNzIzOTgsIDY2NzA5LCAxMjEwNjEsIDg4MTEsIDkyNywgOTI1MzIsIDAsIDEyNDM2LCAKKyAgICAxMjAwODcsIDQyMDIxLCAwLCA2NzY0NCwgMTI5OSwgMTIyNDAsIDQyMzUwLCA2NTE0MywgMCwgMTk1MDE2LCAxMjc5NzIsIAorICAgIDc4MTk3LCAxMTM0OCwgMCwgNzgwMzcsIDkxOTQsIDk4MzE4NCwgMCwgMTk5MTQsIDEyMTc5LCAxMjg3NDAsIDIyOTYsIAorICAgIDEyODkzMiwgNjM4MzYsIDYzODMyLCA5MTc3NzMsIDEwOTY3LCA2MzgxNiwgMjU5NCwgMzQ0NCwgNjM4MTcsIDExMTc4LCAKKyAgICA5MTc1ODQsIDQxNTAzLCAxMjc0NzgsIDExMjY1LCA2ODI5NSwgMTIwNzU2LCAxOTQ5MjIsIDY3Mjg1LCA1NjY0LCAzOTcyLCAKKyAgICAxMjA4OTEsIDEyODU4MywgMTI5NDA4LCA2NzI4NCwgMTI0MTYsIDkxNzc2NCwgMTE5NjA4LCAxMDgxNiwgOTE3NzY5LCAKKyAgICAxMTIxMCwgMTI0MTgsIDg1ODYsIDM4ODIsIDg1MzIsIDkxNzc3MSwgMTU3MywgNjgwODEsIDExOTg0NywgNDU5NiwgNjYzMzksIAorICAgIDEyNDE3LCA2NjAwMSwgNjUzNDMsIDEyNjQ5MSwgMTI0MTQsIDgyODcsIDY4MjE5LCAxOTUwMTcsIDY4MTA4LCAxMTQzLCAKKyAgICAxMTkxNjksIDExOTg0NiwgMTI0MTUsIDY2MjYsIDQyNzYzLCA5MTc1OTQsIDExODg4NCwgOTAyMSwgMTIwNzgzLCAxMTk5MzEsIAorICAgIDExNzI0LCAxMjc3ODcsIDAsIDcxMTIyLCAxMjY2MTksIDAsIDk4MzY2MSwgODAyNywgMTA5OTcsIDkxNzEsIDEyNzQxLCAKKyAgICAxMTQwMCwgNDM5NDMsIDE5NDc5OSwgNjY4MzMsIDEyODIzOSwgOTgzNzA3LCA5MjU1NywgOTM5NzYsIDEyNzUyMywgCisgICAgMTIwMTkwLCAxMzI0LCA2NzYwOCwgMTI4MjE0LCA0MjM2OCwgOTgzODczLCA3NzE1LCAzODgxLCA0MTQ4NywgMTIxMTgsIAorICAgIDQyNTE0LCA2ODY1MSwgMTI4MjEwLCAxMjg1OTQsIDMwMDksIDQxNDc2LCA0MTQ4OSwgNjk4MjUsIDMwMDcsIDE0NDgsIAorICAgIDMwMTgsIDE5NDgwOSwgMzg4OSwgODUyMSwgNTA4MywgNTA4MiwgMTE5ODU5LCA3ODI1NSwgODUxOSwgMTIxMjI2LCAzMDE0LCAKKyAgICA1MDgxLCA2NTg1MywgMTIwNzE1LCAxOTQ5OTIsIDY4MDE0LCA2OTk1MSwgNTA3OSwgNjQ4MDIsIDQyMjEwLCA0NTk3LCAKKyAgICA2NTUzMiwgMTE4MjgsIDEyMDE4NSwgMTIzNzEsIDExMTA1LCA4NDA3LCA2NzE2MywgMTA4MDUsIDg1MTgsIDEwNzc5LCAKKyAgICAxMjAxODgsIDcxMzAzLCAxMjEyNDAsIDEyMzY3LCA0MjE3MCwgMCwgNjcyOTAsIDYyOSwgMTkyNCwgMTI3MDk4LCAxMjAzNywgCisgICAgNjcxNTgsIDU5ODcsIDg0NjIsIDgwMDUsIDEyMzY1LCA2MzkzMywgNjk3MzUsIDEyMDgxNSwgMTIzNjksIDEwNjQ5LCAKKyAgICA2Nzk4MSwgNTA3NywgMTIwMTc0LCAxMDg4MCwgNjM5MjcsIDUwNzUsIDEyMTEwOSwgMTI3MzAwLCA2NTA3NSwgMCwgMTEwMDcsIAorICAgIDcwODUxLCA2NjY1OSwgOTI2MDcsIDkxNzkzMywgNjY2ODQsIDEyODA2MywgMzQzNCwgNDk1NCwgMTkwNCwgOTI2NzksIAorICAgIDUyNjYsIDEyNjk4MCwgNTI3MiwgMTA0OTksIDQ1MDcsIDk1NzgsIDYzOTIzLCAxMjAxNzcsIDc5NzksIDAsIDk4MzEsIDAsIAorICAgIDE5NDkyNiwgNDYxLCA5ODAzLCA0MjI4MiwgNDUwNCwgMTUwNSwgMTI3ODkzLCA2MzI1LCA1Mjc2LCA0MzAyMSwgMTIwNDg4LCAKKyAgICAwLCA1NTIzNiwgOTI2NTksIDY2NDYxLCA1MTc3LCA0MTMyNCwgMTIwNTUsIDg3MjIsIDEyMDgwNSwgNDEzMjcsIDk4MzczMiwgCisgICAgNjY2OTUsIDQxMTQsIDQwOSwgNDM4MywgODkwMCwgODk0OCwgNDEzMjUsIDc0OTMwLCA3MjEsIDEwMTgyLCA5MTA4LCAKKyAgICA3MTMxMSwgMCwgMTE5MTg1LCA0MjIyOSwgNzQ5NjMsIDEyMTAxNCwgNTk5OCwgMCwgNDIzNTMsIDc0ODI1LCAwLCAxMjU4NywgCisgICAgOTQxMDQsIDc4NTcxLCA3NDg4OSwgNzEzMjgsIDEyODk1NSwgNDE1NzYsIDQyMjE1LCA3ODU3MCwgNzQwMzcsIDAsIDg1NzgsIAorICAgIDU5OTUsIDc1NzMsIDQxNTc1LCA3NDc4OSwgNzQ3NTIsIDYzOTQ0LCA2Mzk0OSwgNjQ3NjcsIDI2NzAsIDQxNjcsIDE5NDc5NiwgCisgICAgMTE3MjMsIDAsIDc0MTIwLCAxMjY2NDIsIDY1MDc2LCA5MzgsIDQzNDE0LCA3Mzg1NCwgMTE3MzcsIDk3MjEsIDAsIDY3MTc5LCAKKyAgICA2NzE2OCwgMTE3NDIsIDI0MTksIDY3MTc3LCAxMTQ5MywgMTIzMzQsIDkyNDk0LCA0MTUzLCAxMjMwMiwgMTA3OTMsIDUyNTAsIAorICAgIDEyNDA3LCAxMTk3OCwgNDQwNCwgOTE4OSwgMTI0MDEsIDQyMDA3LCA1Nzc1LCA2NzU5LCA2NTgwNiwgNDM5OTcsIDAsIAorICAgIDQyMDAyLCAxMjQwNCwgNjgwOTIsIDc0OTI4LCA0OTQwLCAxMjQxMCwgNzY4MywgMTE2NywgNzM3MjksIDQ5ODMsIDEyMDUwNywgCisgICAgODYxLCA2NzY5OSwgNzQ4ODAsIDY4Mjk3LCA5ODM4MDcsIDQzNzU3LCA0MzM3MCwgMTI5Mjk4LCAwLCAxMTk1NiwgMTI0OTY3LCAKKyAgICAxMjEyNjMsIDcwODE1LCA5NjE2LCA2NjMxLCA5MjMzOCwgMTI4MTYsIDQzNzU5LCA0MjIxOCwgMTI3MTAsIDY4Njc0LCAKKyAgICAxMjcyMSwgNDEwMSwgNjYxODUsIDAsIDU5OTIsIDc2MTYsIDE5NTA0NCwgMCwgMTI1NzcsIDkzMDE3LCAxMjgyODksIDg1MywgCisgICAgNDI2OTMsIDE5NDY0NywgMTE5MDI3LCA5ODMyODQsIDUwMTYsIDQzNTM1LCA2Mzg5MywgNDI4MzUsIDk0OTEsIDkxNzkxMywgCisgICAgMCwgOTE3OTE0LCAwLCAxMjcxMiwgNzEwNSwgMTI3ODA3LCA2NTA2MCwgNjY4NzUsIDk5MDAsIDc3NTAsIDkxNzk0NiwgCisgICAgMTI3ODk2LCA3NDYxOSwgMTE5MjY1LCA5ODM1ODcsIDY0Nzc4LCAxMjU4NSwgMTA1NjUsIDEyODE1MSwgMTIxNzcsIAorICAgIDExOTg0MywgOTgzMjYwLCAwLCA3NzgyNCwgMCwgNDkwMCwgMTI3ODc0LCAxMjg3OCwgOTI2MzAsIDg5ODQsIDQxMTksIAorICAgIDc0NzY4LCA4OTcxLCA3ODU5MywgNDMxMTMsIDk3MDIsIDY2ODUyLCAxMTAyNSwgOTI0NSwgMTMwNDgsIDQ5MjcsIDQxMzgsIAorICAgIDc0MTg1LCA5MjQ4MSwgOTI3MTAsIDEyMzk3LCA3NzgyNywgMTE5MDQwLCAxMzA1NCwgMTIzOTQsIDAsIDAsIDE5NDk1NCwgCisgICAgMTMwNTMsIDExODk3NCwgMzk0OCwgMTA3ODEsIDE1NDYsIDAsIDUwMTAsIDE2ODAsIDEwNTA3LCA3ODU5MCwgNzg1ODMsIAorICAgIDkyNDMxLCAxMjEwMzcsIDEyNjY0NCwgMTk0OTE1LCA3MjY3LCAxMjc0NzksIDc0ODMzLCAxMjgxODEsIDU5OTMsIDI4MTksIAorICAgIDEyODc4OCwgMTI3MDYsIDcxMDYzLCAxODkzLCA3MjY2LCA2MzkxNSwgNzI2NCwgNzI2NSwgMCwgMTM2MywgOTgzNTgwLCAKKyAgICA0MjkyMywgNjM5MTAsIDYzOTk2LCAzMDc3LCAxMjAwMTgsIDAsIDE1MTIsIDY5OTI5LCAxMjU4OSwgNDE0NzksIDEyODMxMywgCisgICAgNzEwNDgsIDQzMzM5LCA3Mzc3NiwgOTgzNiwgMTIwNzI3LCA5ODM5MDksIDQxNDgxLCA0MzMzNSwgNzgzMiwgNDIzNDMsIAorICAgIDMwOTAsIDQzMzM3LCA4MTcsIDE2NjQsIDE4NTAsIDgzMTc3LCAzMDc5LCAxMTM0MCwgNDI0MDgsIDQyNDQ3LCA3NDkzMiwgCisgICAgNzQwNDQsIDQyMzA3LCAxMjM4NiwgNDIzMDQsIDkxNzU1NSwgODM0MjgsIDEyMzg5LCAxMjEwNzksIDkyMzY2LCA0MTk5NiwgCisgICAgMTE1MjYsIDYzOTg1LCA1ODY0LCAxMTQ3LCA0Mzg0OSwgNDI4ODcsIDE5ODcsIDkyNzE4LCA1NDgwLCA3ODU4LCAxMTY1MywgCisgICAgNDExNiwgMTIzOTEsIDY2MTkzLCAxMjEzODMsIDQ5MzksIDEyMzg0LCAwLCAxMjc3NzgsIDQxNjg2LCA2MzkwNSwgMTE5NjAxLCAKKyAgICA3MDI4NSwgNjczOTgsIDEyODgyMCwgMTI2NDksIDEyMDAyMiwgMCwgODI0NywgNTA3LCA5MSwgMjA0MiwgMTIwNzc1LCAKKyAgICA0MzY0MywgMTIxNDQ1LCA2NjAyOCwgMTAwMzYsIDQxODQ0LCAxMTk4MTMsIDc3NCwgMTE5ODI5LCA3Nzg0MCwgMTE5ODE1LCAKKyAgICA1OTk0LCAxMjUzOSwgMCwgNzgzNzUsIDEyMDU5NywgMTE5ODMzLCA5ODMxMDUsIDc4Mzc3LCA5ODMyMzcsIDkxNzYyOCwgCisgICAgNzcxOSwgNjAyNiwgMjQ4NiwgMTI4MzEyLCAxMTk4MDgsIDE2MiwgMCwgNjUyMTksIDQxMDczLCA5Njg3LCA0MTY4MSwgCisgICAgNjMwNCwgMTE5ODEyLCA2NjE5NiwgMTk0ODgxLCA1MjYyLCAwLCA1NTIzMywgMTI2ODEsIDQyMzc5LCAwLCA3NTM0LCAKKyAgICAxMjIxOSwgMjIyNiwgNzA0OTksIDQyODEwLCAxMDQ5MiwgMTIxNTEwLCAxMjExNDgsIDEyMTUwOSwgNDMxMTksIDAsIAorICAgIDc4NTM3LCAxMjQwMywgMjUwMCwgNzAxNDUsIDgzMjQ2LCA0ODk5LCAxMjcyOSwgOTgzMzk5LCAxOTQ2MTksIDc0MTEzLCAKKyAgICAyMzQzLCA0MTAzLCAxOTk0NiwgNzQxMTIsIDc3ODUxLCAxMzExMiwgMTI5MDQ2LCA3NDgzNCwgMTI4NTksIDcwMDg3LCAKKyAgICAxMjAxNDgsIDY2MzY5LCA1ODYxLCAxMjc3NTgsIDExOTk5LCAxMjQwMCwgNDM2NDEsIDEyODE4MywgMTI2NDUsIDUxNDYsIAorICAgIDExMzIwLCA2ODQxMCwgNjc0OCwgNjUwNDAsIDE5NDc4NiwgNjQxODQsIDEyOTc0LCA2NDE4MywgNjc2MTMsIDEyMDY0NSwgCisgICAgNTE0NywgMTI1MDE5LCAwLCA3NDUyNCwgMTI4MzU2LCAxOTI4LCAwLCA2NzY0OSwgNTk5MSwgMzQ0NSwgNjc2MDksIDQ5NzYsIAorICAgIDY0MTc2LCAwLCA2NzYxMCwgODI0MSwgMCwgNzc4NjgsIDQyMDYsIDAsIDc4NjYyLCAxMjkwMjksIDEyODI5OCwgNjcyNzcsIAorICAgIDEwMTM4LCA2NzIzOCwgMTI4Nzg1LCA4ODk3LCAxMjAyMzQsIDE0MjIsIDgzNTcsIDQxMjQsIDc3ODYyLCA2NTgzNiwgCisgICAgMTIwNjQxLCAxMjc5MjYsIDc3ODU5LCAwLCAxMjA5MzAsIDExMjMsIDk2MywgNDE1NTMsIDEwMTIwLCAxMjQwNSwgMTIwMTUwLCAKKyAgICA5MjY2NCwgMzk4LCAxMzI3OCwgOTcyMywgNjM2NiwgMTIwMzExLCA3OTQ1LCAxMjkxMjYsIDQ0MDIsIDk5NzAsIDEyNDAyLCAKKyAgICA5MzA2MiwgNDIzOTIsIDEzMDUsIDEyNDA4LCA5MjM4NCwgNDQwMDcsIDEyODU2MywgMTI3MjE2LCA0MTQ2NCwgMTI0MTEsIAorICAgIDEyOTY5LCA2NzI2OCwgNDE0NjUsIDEyMTA5MiwgODUyOCwgMTU3NSwgMCwgNjM5NTUsIDE2NSwgMzAyNCwgNDE0NjcsIAorICAgIDExOTE2MywgNzAxMTksIDkwOTMsIDEyODUzNSwgNjgzMywgOTI1NzQsIDYzOTU4LCAwLCA5MTQ4LCA5NjkyLCA0MDk2LCA1MywgCisgICAgODI5NiwgNjc1MCwgNjY4NTUsIDEyODQxMCwgOTU5NCwgMTIwMzA4LCAxMjA5MzgsIDQzNTI3LCAxMjExOTIsIDcyNywgCisgICAgNzQxOTIsIDkzMDYwLCA1ODA1LCAwLCA2NzI2LCAwLCA0MjE3NiwgMTIzNzAsIDExNjU1LCAxMTkwOTUsIDEwNTkxLCAyMjgwLCAKKyAgICA5ODMyMzQsIDEyMzcyLCAxMjA2NDIsIDEyMDMwNywgNzEyMDksIDkyMzQzLCA5ODM4NzIsIDEyMzY2LCAxMDk2MywgNjA2NiwgCisgICAgMTMyOSwgMCwgMzA1MiwgOTIyMCwgMTIxMDQ1LCA2NDQ3OCwgMTk0NzAxLCAxMDgwMywgNDEzMiwgMTIwMzA2LCA2ODQ3NCwgCisgICAgOTI0NzMsIDk4MzI0NywgMTIwNzEyLCA3NDgzNywgMTIwMTU1LCAxNDk5LCAwLCA4MDU1LCA0Mjc0MCwgNjM5NjUsIAorICAgIDEyMDMwNSwgNjM5NjIsIDc0MDQyLCA4OTI0LCA0MzEyMywgNTk4OCwgMzY2MCwgNjM5NjksIDExNzgxLCA0MjcxOCwgODc4OCwgCisgICAgMTM1NywgNjQ4NTEsIDY1NzQzLCA5Mjg5NCwgODc3NCwgNzAzMzcsIDEyNzA4NiwgOTk0MSwgMTIwMTcyLCA5Mjc0OCwgCisgICAgMTkzMywgNjk2NTUsIDk1NjQsIDEyMDAxNiwgOTI0MzUsIDczODY2LCAwLCAxMjEyNDEsIDI0ODcsIDY3NjE0LCAzMTIxLCAKKyAgICAxODA0LCAzMzExLCA2NzYxNSwgNzAwODEsIDc4MzAyLCAxMjIyMCwgNjc2MTYsIDkyNzY5LCAxMjAwMjAsIDE5NDU5NCwgCisgICAgNjgyMDAsIDY2NzUsIDEyODE0NCwgMCwgNjc1OTIsIDEyMDY4NSwgMCwgNjQ3NzEsIDExOTgsIDkxMzIsIDAsIDY0NjE5LCAKKyAgICA1MTAsIDY0NjYzLCAwLCAxMjE1MDAsIDQ1NjEsIDIxMDEsIDEzOTgsIDkxNzk3MiwgOTI1NTQsIDc0MDM0LCA0MTU2OSwgCisgICAgOTI2ODQsIDExNDA2LCA4MTY3LCAxMjEyNywgMTIwNTA1LCA4NDAsIDk4MzI4MywgNjk5OTIsIDcxMDEsIDY5NjcsIDAsIAorICAgIDE5NDg5OCwgOTc5NiwgMTI3MDAwLCAzMzMsIDY5ODkxLCAwLCA4MTQ0LCAyMTE3LCAwLCAxMjExNTUsIDEyNDA2LCAKKyAgICA5MTc5NzAsIDE5OTMxLCA2NjM4OCwgNjY3OCwgNzc2OSwgOTgzMTI0LCAxMjYyMSwgMCwgMTI3MzY2LCAxMDIyNywgNDc2NCwgCisgICAgNDMxMDEsIDk5ODEsIDAsIDQwOTg2LCA0MTI3LCA2NjQ4NywgOTgzNTc2LCA0MjIwMiwgMTI3NTQsIDE5NTAyMSwgOTgzMTkxLCAKKyAgICAwLCA5NDA5NywgNjc1OTQsIDIwNDgsIDEyOTQ0LCA0MDUwLCA2NzU5NSwgOTE3OTY3LCA0MzEwMiwgMTA1ODEsIDExMTg0LCAKKyAgICA0NTMzLCAxMjcyMTIsIDc0MDAzLCA2NDkwLCAwLCAxMjAzOCwgMCwgMCwgNjgyMjUsIDY1NDYxLCA5Nzk4LCA2OTcwNCwgCisgICAgMTI4OTEyLCAxOTQ4LCA2OTg0MSwgMCwgOTUyLCAxMjgyMzUsIDEyNTEwNywgOTgzMzU0LCA3MDI5NiwgNjQ0OSwgOTQ5NCwgCisgICAgMTIwMzEzLCAwLCA0MzA5OCwgNDg0MywgODE0MiwgNjQxNjAsIDQwOTgsIDY0MTcwLCA5ODMzNDEsIDAsIDM0MzYsIAorICAgIDExOTk3MywgMCwgMTI4MTcsIDY3NTk3LCA2Njc2LCAzOTMwLCA0MjYxNSwgNjY0MDcsIDY5OTkxLCA2NzU5OCwgMCwgMCwgMCwgCisgICAgNjU1OTEsIDQxNTgxLCA2NTkxNiwgMTQ1MywgMTk0OTkzLCAxMjE0NTgsIDEyNzg1OSwgODUwMCwgNDIyMjIsIDEyMDE0MiwgCisgICAgNzM3NDMsIDEyMDQwMCwgNDMxNywgMTE1NDMsIDY3Njc2LCA2NDY3NiwgMCwgMTI3ODMzLCA2NzYwNiwgMTE5MDgzLCAKKyAgICAxMjEwODMsIDQyMjE3LCAxMzEwMiwgMCwgNjYwMDMsIDY2NzIsIDAsIDAsIDY2ODgwLCA3NzkxMiwgNjM4NDEsIDk2MTMsIAorICAgIDkwMDEsIDQ1MjYsIDExMjc0LCA2NzYwMSwgNjQ1MjAsIDY0MjEwLCA2NjY0LCA3ODcwNCwgNDIwNTYsIDEwMjI4LCA2NDk1NywgCisgICAgMTEyODEsIDAsIDM4MDcsIDE0NjksIDY2NjQwLCA2NTM4MSwgNDIxOTcsIDQ5ODgsIDQyMzcyLCAwLCA5NTk4LCA5MDQsIAorICAgIDM1MiwgNDIyMjUsIDE0NTEsIDgwNjEsIDg0NTMsIDQxMzQsIDgzNDg1LCA2NzIyMywgNjY1NzYsIDEyNzkxNiwgMTI3ODMxLCAKKyAgICAxMDUyMCwgODU3NSwgOTk2MCwgMTIwMSwgMTI3Mjg5LCAxMjg0NiwgMTI3MjkxLCA2ODA0MCwgMTE5MTksIDY0OTYyLCAKKyAgICAxMjcwODEsIDQzNzM5LCAxMjcyODEsIDg1MTEsIDk0NjAsIDgyMywgMTE1ODcsIDEyMzA1LCAwLCA2NDY5NSwgMTI3MzA1LCAKKyAgICAxMjM4NywgMTI1MywgMTMxODMsIDY1NzY2LCA1MDAsIDQyNzgzLCA2NTc2NSwgNjQyMDgsIDY0MzY5LCA2NTc2MCwgNjU3NjEsIAorICAgIDcwMzM0LCAxMTYwNiwgNjQ3ODQsIDExNzAyLCA2NjQ5OCwgOTgyMSwgNjQzMDQsIDEyNzM2OSwgNTE1MiwgMTEwNDgsIAorICAgIDc1MzMsIDY4MzY2LCA2NDQxMCwgOTIzMDUsIDAsIDQzMjMsIDcwMjc2LCA5MjY2OSwgNzEzMzIsIDEyMDE1OCwgNDI1ODcsIAorICAgIDQyMjE0LCA0MTM5NCwgMTExODgsIDQ3NjMsIDQxMTIsIDExODkzNSwgMCwgNTI2MCwgNDMxNDMsIDk0MDM4LCAzMjYsIAorICAgIDEyMDEzMSwgNjg0MjMsIDExOTIxOCwgMTA3NzEsIDI4NzYsIDc0MDc0LCA5MjUzMCwgMTI4NDYwLCA0MTM5OCwgNzM4MiwgCisgICAgOTgwMiwgMTI3MDc3LCAxMjcwNzYsIDQ1MywgNDEzOTYsIDEyMDUyNCwgMTMxNTksIDEyMTQwLCA5NTcyLCA5ODMxMzIsIAorICAgIDcwMDMsIDE5NDg4MywgNDIzMzQsIDc3MDQsIDEyNTA2OSwgMTI1MDIwLCA0MzE0NCwgNDEyMywgODQ5NCwgNDMxNDYsIAorICAgIDk5NzcsIDAsIDEyMTI4MywgNjU3NTksIDEwNzY1LCA2NDA2MSwgNDQ2NSwgOTgwOCwgNjQwNTYsIDY1NTgyLCA0MTI2LCAwLCAKKyAgICA5NTIxLCA5NTg5LCA2NDc1NSwgMCwgNjQwMjAsIDEyNjYwNCwgMTA0NjQsIDAsIDkyOTY4LCAxOTQ2MTAsIDY0NTE0LCAKKyAgICAxMTUyOCwgNjQwMjQsIDEyODA3MiwgNjc5LCA2NDAxMywgOTgzNTU1LCA1ODUwLCA3NTgsIDc1MzYsIDEyMDUzOCwgOTIyMzQsIAorICAgIDQxNDQxLCAxMDY5MywgNjQwMDYsIDc1MDQ0LCA2NDAwNSwgNDA1OCwgMTE5MDE5LCAxMjY0ODcsIDY0NjYwLCAxMjgxNzYsIAorICAgIDExOTA1MCwgMCwgOTgzMDY5LCAxMTM5LCA0MzI5OCwgNjQwMjcsIDY0MDI5LCA4OTcwLCAwLCA5OTM0LCAxMjg2ODUsIAorICAgIDEwNzc0LCA2NzEwNCwgNDIyMDEsIDEyNDIxLCAxMjgyMTYsIDEyNzAwNiwgMTg1MiwgMzA1NywgNjQwNDYsIDczNzQ0LCAKKyAgICA2NDAzNCwgNjQwMzksIDY4MDY1LCAwLCA5ODM2OTAsIDkyOTEzLCA5MjMyMiwgNzY0NSwgMTI4NTQsIDc0MzM4LCAzNDk2LCAKKyAgICAwLCAxMjEzMjMsIDExMzcxMCwgOTEwMiwgNjI3LCAxMjc3OTUsIDYxNTgsIDgzMjcsIDc0NTUzLCA2NjYzMiwgMTI0MTksIAorICAgIDEzMzA5LCAxMTU3MCwgMTI3ODExLCAxOTk2MCwgMTE2OTYsIDAsIDEwMTgsIDExODk3MCwgMTI5MDc1LCAxOTQ4OTcsIAorICAgIDE2ODIsIDQzODYzLCAxOTQ4OTYsIDQyNzU2LCA2NzY1LCAxOTQ5MDYsIDY3NzE3LCA3NDM1OCwgNzM4MTQsIDExNDEyLCAKKyAgICA2NzY4LCAxMDcyOCwgMTE5OTgyLCA3MTMxNiwgNzEwOTksIDQzMzExLCA2NDk2NiwgMTE1NzcsIDEyNzgzMiwgNDMwNDAsIAorICAgIDE4MzMsIDExNTc2LCA3MDA1NCwgNzQ3NzksIDAsIDE4NSwgNjUwODUsIDc0NTMzLCA2NDc1NCwgMTE5MzM0LCA3NTM1LCAKKyAgICA4MDg1LCA0MjUyNSwgMTE5OTQ0LCA5NzQ5LCA0MTcwMSwgNjEzMSwgMTk0OSwgNDExNywgNzg0NywgMTIwNDg5LCAxMjA5OTcsIAorICAgIDY0NDgzLCA2NTY5MywgOTgzNzExLCA5ODM0OTUsIDEyODYxNSwgNjk2OTUsIDQyMjQwLCAxMjg1ODcsIDEyMTM1MiwgCisgICAgNDI4NjQsIDEyNjQ5OCwgNDMxNjgsIDQxODY4LCAxMTg0LCAwLCA4MTUsIDExNDg0LCAxMjc1MzUsIDY3ODQwLCA5ODM2NTEsIAorICAgIDAsIDY2MTk3LCA5ODM0NzQsIDEwOTg2LCA2NDY4MywgMTI4NTQ5LCAxMjg0NTQsIDM0NTUsIDEyNjUzMCwgMCwgOTg3OSwgMCwgCisgICAgMCwgNDE1OCwgNzAzMDcsIDY4MTY2LCAwLCAxMjgwOTEsIDAsIDAsIDY5NjQ1LCAzMzIsIDExODgwOCwgODMzNjgsIDUxNDIsIAorICAgIDI0MDcsIDY5NjQzLCA0MjE5OSwgMCwgOTI0MDQsIDc0MzczLCA4MzM3MiwgNTUyMTcsIDcxNDU3LCA2Mzg3MCwgNDMxNjMsIAorICAgIDAsIDAsIDEyOTg1LCA0Mjg2NywgMTgzNCwgMTIwMzg3LCA5MjQ2MSwgNjk4MTcsIDEwOTQwLCA2NTI0OSwgNzAzODUsIAorICAgIDg2NjIsIDEyMDMyNCwgMCwgMjY1MiwgMTIwNTI3LCA3MTY0LCAxMDc4NCwgMTk1MDkzLCA2NzY3NCwgMCwgODMzNTksIAorICAgIDkyNDgyLCAxOTQ3NDksIDc0NTYyLCA5MTc1MDUsIDE4MjgsIDc0NDc0LCAxMjAwMTksIDY4MDc4LCA4NTMxLCAxMjQ5OSwgCisgICAgNjI4MCwgMTIzMjQsIDcyNDM0LCA2NTIzOCwgNjgzNzQsIDQ4MzIsIDY1NTczLCA0Mzg1MSwgNjI3OSwgMTI1MDgsIDEyOTA0LCAKKyAgICAxMjUwMiwgOTE2MSwgMTI4NTU1LCAxNjIwLCAxMTI0NywgMzYwMSwgMTIxMzAxLCA4MzM1MywgNjcyNDYsIDYwOSwgMTE1NTUsIAorICAgIDgzNDU2LCAxMjQ5NiwgMTE5ODAsIDc0MTgxLCA0MzQzLCAxMjUwNSwgODI5NjAsIDEyNzg2MywgMCwgMTEzNzcsIDIzOSwgCisgICAgMTI4MTE0LCA2MzcsIDAsIDEyODY3OCwgNDI2NzEsIDAsIDkzMDMyLCA4MzA5NSwgNDM1NjUsIDcxMzA2LCAxMjY0OTMsIAorICAgIDEyNjk2LCAxMjgyNTYsIDkxNzYwMCwgOTQwNjIsIDEyOTI5LCAwLCA3MTIsIDAsIDQxOTcsIDk4MzIwNiwgNDI4MTgsIAorICAgIDEyNjYzMiwgNzAzMDYsIDEyMDQ5MCwgNzAzMzMsIDExOTEzNywgMTUwNiwgNDM1NjIsIDExOTkxMywgOTI0OTEsIDY4MDc2LCAKKyAgICAxMjY1MSwgMTIwOTE3LCA2NDYyOCwgNzQ1MTcsIDEyMDU4LCA3NDA4NCwgMTk0NjMzLCA3NDk0LCAwLCA0OTI0LCA2NTU5MiwgCisgICAgMTE4ODQ0LCAxOTQ4MjMsIDEyNzA4OCwgMzU1LCA5NzE5LCAxMjcwODcsIDEzMDY2LCA2NDc5NiwgMTIxMDc3LCA5ODMyOTcsIAorICAgIDEyMDMzLCA0MjE3OCwgMTk0NzU0LCA2OTc2MCwgNDI1NzEsIDkyNjM1LCAxMTQzMCwgMCwgNzAyOTksIDEyMTUwOCwgCisgICAgMTI0OTUxLCA2ODMyNCwgMzE3OCwgMTI2NDg4LCAxMjg2MzMsIDkyNzA0LCA5MTc1NjYsIDkwODAsIDEyMDk0MywgNjc2OTcsIAorICAgIDE5NTEwMSwgNjgyMDksIDcyNDE4LCAxMTA4MiwgNzE0ODUsIDU2OTksIDgzMzczLCA2NjAwMCwgOTQ4OCwgNjUxNjYsIAorICAgIDExOTExMiwgNzA0NzcsIDExMTcwLCA2ODY2MiwgMTI4MTIwLCA3MTMxMywgMCwgNTI2NSwgNjkyMzUsIDgzMzg0LCAxMTQ4NywgCisgICAgNjc4NTgsIDEyNDY0LCA5ODMzNjUsIDQzMDQ1LCA5ODM4MzEsIDcwMzQ1LCA0MzM0NSwgOTgzMjc2LCAxMDc3MCwgMTE4OTk0LCAKKyAgICA2ODA3LCA0NjUsIDk4MjksIDY5OTk3LCA3NDM0OCwgMCwgNDMzNDYsIDgxMTYsIDc5NSwgMTIwMzUyLCA3MjQxMiwgMTI0NjIsIAorICAgIDEwOTMwLCAxMDgzMSwgMTIxMzIwLCAxMTg5NTIsIDY0MzYyLCA3NDMzNCwgOTMwNTYsIDgzMDQ3LCA5ODM5MzMsIDEyNDY4LCAKKyAgICA4NjA3LCAxMDA4LCAxMTg5NDgsIDEwMDkyLCAxMjUxMjIsIDEyODg1MSwgNjc4NTUsIDU1MjU3LCA3Mzc3MSwgMTc2NiwgCisgICAgMTEyODIsIDExOTk2LCAxODIwLCA0NTQ3LCAwLCAxMTIwMiwgMTIwMjQzLCAxMjgzNDUsIDEzMjIzLCA3NDkzNCwgNjQ1OTUsIAorICAgIDEyNzI5NCwgODMzNzQsIDY4NDg5LCA0MzQ1LCAxMjYxNiwgOTE3Nzg0LCAxMjg5NDcsIDk4MzE1NSwgNzQ0NjcsIDAsIAorICAgIDk4MzgxOSwgMTI4MjkxLCA1MzgyLCAxMjc3NzksIDAsIDY3MjMzLCAxMTkwNjAsIDY0OTUzLCA1NDA2LCAxOTkyMCwgCisgICAgNjk4OTcsIDY2NTEwLCAzNTkwLCAxOTQ4MzUsIDExMzAsIDkxNzc2NiwgMTIwOTc3LCA0MjAxNiwgMTE4MjMsIDQzMDIzLCAKKyAgICAxMjEwMDIsIDExODg5NiwgNzc0MiwgMTI3Mzc0LCAxMzI4MCwgNzEzMjMsIDkzMjYsIDczODI2LCA1MzEwLCA0MzUwOSwgCisgICAgNzg1ODQsIDkyMjI5LCA4OTU5LCA0MzU4OSwgNjc0NywgNjY3MjMsIDY0NzU3LCA4NTY4LCAxOTQ2ODQsIDEyMDQ5NiwgCisgICAgNzM4MTYsIDgzMDYwLCAxMjg0MTgsIDQyNjcwLCAwLCAxMTYyMSwgMTI0NjAsIDEzMjYsIDEyMDYzMSwgODMzOTMsIDQzMDYzLCAKKyAgICA0MzIzOSwgNjU2NzgsIDE5NDg0MCwgNzM5MTcsIDc4NDMsIDY5NzgzLCAxMTY4OSwgNTQxMCwgNTc4MywgMTA0NjgsIDg0MDMsIAorICAgIDU0MDAsIDExNTk0LCAxMjA0MDUsIDY4MzMzLCA4MzM5MCwgMTA0OTEsIDY5ODQyLCA2NDQxMiwgMCwgMTI4MDEyLCA1NTg3LCAKKyAgICA0Mjg2NSwgNjQ0MDQsIDgyNjgsIDQ5MjMsIDY1MDg2LCA4OTgxLCAxMjM4MiwgNDIxMzMsIDEyMDc1NSwgOTcwNiwgNjk3MzgsIAorICAgIDcwMjk0LCA2NjYxMCwgMTA0NjEsIDEyMTAzLCAwLCA4NjQyLCA4MzM4OCwgNDI3NjYsIDgzMzg3LCAyMjEwLCA5OTgzLCAKKyAgICAxMjg2ODksIDk0MDA5LCAwLCAwLCAwLCA3Mzk4LCA0MTUxNSwgMCwgMTE4MDIsIDgwNDEsIDE0NjEsIDkxMCwgMTE5MTMzLCAKKyAgICAwLCA2NzQ5LCAzNjU4LCA5Mzk2NCwgMTIwNTI1LCAwLCA3NjE3LCAxOTQ4NDEsIDEyODg4LCAxMjc5ODMsIDY3NjY4LCAKKyAgICAxMzE0MywgMCwgOTE5MywgMTEwOTcsIDU3MDMsIDEyODI0NywgNDE1MTcsIDQxNTA0LCA0MTUxOSwgMTAwMTYsIDY0MzA1LCAKKyAgICAwLCA2NTg2NCwgNjIzLCA3ODEsIDY3MCwgMTA2NjAsIDU3NjksIDYxMywgNzU0MywgMTIwMjc5LCA0NzcsIDQxMDgzLCAKKyAgICA5MjUyMSwgMCwgNTkyLCAxNTc4LCAxMjQ1OSwgNDM0NDksIDAsIDAsIDgyMjUsIDEyMTE5MSwgNjU0LCAxMTM0NSwgNjUzLCAKKyAgICA2NTIsIDAsIDY0NywgODMyNjYsIDYzMywgMTIwNzQ0LCA5ODM4MDksIDEyNjQ3MiwgMTI0ODAsIDQzMjQzLCAxOTQ5MDksIAorICAgIDM5LCAxMjQ4NywgMTIxMjQ3LCAxMjA1MjksIDc0MTk5LCAxMjQ4MiwgMCwgMTI0ODksIDExOTYwNywgMzE5NSwgNTU1MCwgCisgICAgMTI5MTIxLCA3ODk3LCAxMjcwODksIDEyMDMsIDc0Mzk2LCAxODEzLCA2NDU0NCwgNDEzMTEsIDEyMDkwLCA5ODM2MzQsIAorICAgIDI4NzcsIDEyMTUxOCwgNzA0OTYsIDE2NzUsIDY5ODQwLCAwLCAwLCAxMTkwNzgsIDEwMDcwLCAxMDU5NSwgMCwgMTE5MDc3LCAKKyAgICAxOTQ3NzcsIDEyMTE2MiwgNjcxNzAsIDEyMDc5MCwgMTE4Nzg3LCA0MzI0NCwgOTIyMzMsIDkxNzgzNSwgOTgzOTE2LCAKKyAgICAxMTk1NjEsIDk4MzA3OCwgMTk0OTE0LCAxOTQ5MjEsIDEyODE2MCwgOTkzOSwgMCwgOTgzMTUxLCA3Nzg2MCwgMTI4OTQ4LCAKKyAgICA4MzQ0MCwgMjcwLCAwLCAxMDcxNCwgMTE4OTgzLCA3MjQzNywgMCwgMTE5OTQyLCAxMTkzMzgsIDY1MzcyLCA3MzgwMywgCisgICAgNzQwMzgsIDY4MjUxLCA2MjczLCA2NjY3OSwgMzY0LCA5NTk1LCA3MTQ0MCwgMCwgMCwgNzA3LCAxOTQ4MzksIDEyODQwOSwgCisgICAgOTI4MiwgMTExNjMsIDIyNCwgMTI4NTg4LCA2ODY3MCwgOTMzMiwgNDk2NiwgNjg2NzcsIDE5NDU4NiwgNjg2NDQsIAorICAgIDk4MzEzMSwgMzg0MSwgNjczNTcsIDY3MzQxLCAxMDczMiwgNjg2NDAsIDg1MCwgNDk3MiwgMTI3MTgxLCAxMjg5MCwgMjkwOSwgCisgICAgNjg2MTksIDQ0MDA4LCA2ODYyNywgMTIwNjk5LCAxMTU0NCwgMTAyMDMsIDk2MDgsIDAsIDkxNzk0MywgMTE5NjIsIAorICAgIDEyMTM5NywgMTI1MDcsIDExOTYsIDY3Njg0LCA2NzEwMCwgNzc3LCAxMjAxODcsIDQzNzUsIDY1MjcxLCA2NzY3OCwgMCwgCisgICAgMTIxOTgsIDkxNzg4NywgNjQ4MjQsIDExOTM0MywgMTI3MjQzLCA5NDU0LCA2Mzc3OCwgODY1OCwgNDI1MjgsIDcwMDczLCAKKyAgICAyNzA1LCAxMjg2ODAsIDQxNTIwLCAxOTUwOTgsIDEyMDM3OSwgMTE5ODYsIDc3NjUsIDQyNTAyLCA4MjgwLCA3NDUyMCwgCisgICAgMjcwMSwgMCwgMTIwMjQwLCA1NzY3LCAwLCAxOTUwMTgsIDk4MDksIDgzNTMsIDYzNzQ3LCA2NjcwMSwgNjM3NzIsIAorICAgIDEyMTIzMywgNjM3NDUsIDE3NDgsIDYzNzcwLCAxMjE0MTksIDEyMTA3OCwgMCwgNjU1NDIsIDYzNzY2LCA1NTI0NCwgMzA2MSwgCisgICAgNzg2MDksIDYzNzY0LCA2Mzc4NywgOTA2NywgNjA5NiwgMCwgNzY5NCwgMCwgNzI1NywgNjM3NjgsIDM0ODUsIDEyOTg3LCAKKyAgICAxMjc3ODEsIDEyNzUyMiwgMTIwNjI4LCA2MzgwNywgMTU5MSwgMCwgNjM4NiwgNjM3ODMsIDEyMDk5MCwgMTI1MDQxLCAKKyAgICA5MjUzNSwgMCwgMCwgNjgyNDksIDc0NTc1LCAxMjcwMTAsIDY1NzE5LCAxMzA4MywgNjQ1NzQsIDY1MDEyLCAxMjE0NTIsIAorICAgIDE2NDAsIDEyNDk1LCA2NjY5MSwgNzYyNCwgMzEzOCwgMTA5OTYsIDExMTcxLCAxOTIyLCAxMjcyNzUsIDEyNDk4LCAxMDk4NywgCisgICAgNjk5MzYsIDY5OTM5LCAzODk0LCA2NTU0MywgMTI5MTgzLCAxOTQ4NDIsIDEyODExMiwgNDkzLCAwLCA0MzE5NywgMTcxNywgCisgICAgNDIyOCwgNDc5LCAxMDMwMywgNzQwMjAsIDAsIDkxNzkzNSwgMTAzMzUsIDM1MjAsIDkxNzkzMiwgMTI0OTAsIDY0MzE1LCAKKyAgICA5MjE3MCwgMTI3MDM5LCAxMjQ5MywgNjIzMywgNDI2ODEsIDEwMDIsIDEyNDkxLCA4MzUxOSwgNjQ5MTEsIDgzNTIxLCAKKyAgICAyMDk2LCA2NTEyMCwgODM1MTYsIDc4MjE5LCA4MzI3MCwgODM3OCwgMTE2MzIsIDY4ODM4LCA2NjIxMywgNjM4NjQsIAogICAgIDY2MjIxLCA2NjIyNiwgNjYyMjksIDEzMjE4LCA2NjIzMSwgNjYyMTYsIDg1MDcsIDY2MjM2LCA2NjIxMSwgNjYyMTgsIAogICAgIDkyNjcyLCA2NjI0MCwgNzgwNDEsIDY2MjMzLCA4OTI4LCA5ODM1NTIsIDc5MDksIDY2MjM0LCAxMTYwNSwgNjM3NTksIAotICAgIDk4MzY1NCwgNjYyMDgsIDczOTk5LCA2Mzc5OSwgNjM4MDMsIDI0NCwgMTE1NDIsIDEyODk4LCAxMjQ5NCwgNzM3NjEsIAotICAgIDEyNDkyLCAxMjY2OSwgMCwgMCwgNzQxNTMsIDAsIDEyODI3OCwgMTIwNjgwLCA0ODgyLCAxMzA0MCwgMCwgODYxMiwgNDg4NSwgCi0gICAgNzQwNTMsIDAsIDEzMDQyLCA0ODgwLCA2NDY2MiwgMjQyOSwgMTM2MCwgMjQ4LCAwLCA2Mzc5NywgOTIzOTQsIDQyMzU4LCAwLCAKLSAgICA3MjkyLCAwLCA2Mzc1NiwgNDI3ODYsIDY2NjkzLCAwLCAxODcwLCA3ODA0MCwgNDcwLCA3ODAzOCwgNzgwMzUsIDc4MDM2LCAKLSAgICA3MDAyOCwgNzgwMzQsIDQ1NzksIDEyODA5MCwgMCwgMTI1MTEsIDc0NDUzLCAxMjUxNCwgMCwgNzQ1NzksIDcyMzksIDcwMDEsIAotICAgIDg2MjMsIDk0MDExLCAxMjgwNTIsIDEyODA0OCwgNzM3OCwgMTI1MTIsIDExNjE1LCA2MTA0LCAwLCAwLCA2NTksIDYwOTgsIAotICAgIDAsIDEyMjM0LCAxMjczMDcsIDEyNzA2NywgODMxMSwgMTI1MTAsIDQxODAzLCAxMzAzOSwgMTI3MDcyLCAxMjUxMywgCi0gICAgMTAyMDIsIDEyNDcxLCAwLCA4NzQ3LCA5ODM5MjAsIDAsIDAsIDIzMjMsIDAsIDIzMTksIDc3OTE3LCAxMjQ3NywgNzc5MTYsIAotICAgIDIzMTEsIDAsIDQ0MTUsIDIzNywgNjI4MSwgMTI3MjgwLCAwLCAwLCAyMzA5LCAxMzEyLCA4MTczLCAxMjg4NzEsIDEyNDY5LCAKLSAgICAwLCA3ODUwNSwgNjQzMzUsIDEwNjA5LCAwLCAxMjgxMTEsIDkzOTcsIDExNTI0LCA5Mzk1LCA5Mzk2LCA5MzkzLCA5Mzk0LCAKLSAgICA5MzkxLCA5MzkyLCA5Mzg5LCA2MjA5LCA5Mzg3LCA5Mzg4LCA0OTMyLCA5Mzg2LCA5MzgzLCA5Mzg0LCA2NzQwLCAwLCAKLSAgICA2NTQ1MSwgODE4NSwgMCwgOTE3ODMyLCA0MzAyNCwgNDMzMzYsIDY3NjU5LCAyMzEzLCAxMjgxNjcsIDc5NDgsIDkyMzYsIAotICAgIDkyNTcxLCAwLCAwLCAxMDU3MCwgNDM0NzMsIDYyODksIDEwNDg0LCAwLCAwLCAxMTk5OCwgMTIwODIsIDEwOTI0LCAzMTQ3LCAKLSAgICAwLCAxMjA2ODQsIDEyNTI0LCAxMTkwODEsIDIzMTAsIDExODE4LCA5MzgxLCA5MzgyLCA5Mzc5LCA5MzgwLCA5Mzc3LCAKLSAgICA5Mzc4LCA5Mzc1LCA5Mzc2LCAxNjgzLCA5Mzc0LCA5ODM3NzgsIDkzNzIsIDEyNDQ0LCAwLCAwLCAxMzAxNiwgODIxMCwgCi0gICAgOTgzOTU4LCA0MjAyOSwgMTEwNzksIDEyMzMxLCA0MzQ1MSwgNDIwMzIsIDg3NDQsIDcyNiwgMCwgOTgzODM3LCA0MTU1LCAwLCAKLSAgICAwLCA0MjAzMCwgNTAwNywgMTI1MjIsIDQzMDg4LCAwLCA0OTUxLCAxMjc4MDUsIDEyNzI0MCwgMCwgOTkyMiwgNDMzMDksIAotICAgIDk4Mzg0MSwgMTI1MjUsIDk4MzQ3MSwgMTIwMTYsIDY1NzcwLCA5NTQ4LCA2NzY2NSwgNDAzLCA3ODIzMCwgMTI1MDMsIDAsIAotICAgIDAsIDExMDMwLCAwLCA5MjU2NywgNjU2OTEsIDYzOTk4LCAxODE5LCAxMDQ5NiwgMCwgMCwgMTE5OTIwLCAwLCAxOTQ2NjgsIAotICAgIDAsIDEyNTA2LCAwLCAxMjIzMSwgMCwgMTI1MDAsIDQ0MDIzLCAxMjUwOSwgNjQzOTMsIDc4ODMwLCAzMzg5LCAxMDU4OSwgCi0gICAgNjYwOCwgNDEwNDcsIDEyMDMyMSwgNzgzOTUsIDc4Mzk0LCA3NDA2OSwgNzc5OTUsIDc4MzkxLCAzNjA4LCA4MjgxLCAKLSAgICAxMjAzMjAsIDExMDcsIDAsIDkwNzYsIDg4NjIsIDY5NzQzLCA0MTA1MiwgMTMwODQsIDY0NzY2LCA0MzIxNywgNzgwMywgCi0gICAgMTMyMjIsIDc0MTY1LCA3NDc4MiwgMTI2NTE0LCA4NTQ2LCAxMTU1MywgNjM5OTUsIDEzMTc3LCA5MDQzLCA2MzAzLCAKLSAgICA5ODM5NDcsIDQ5OCwgNjQ0NzEsIDEyMDMyNCwgMTI4NTY3LCAxMjUyOSwgODA0MiwgMCwgMjM0NCwgMTI1MjgsIDgwMzEsIAotICAgIDI0MTQsIDAsIDY5NzE5LCAzMjMxLCAwLCA2NDIyLCA2NjUxMiwgNjk2NTMsIDEyNTMwLCAyNTM3LCA3ODQwNSwgNDE0MjksIAotICAgIDEyNjU4LCAxMzAzNiwgNjU3NzIsIDAsIDc4NzM4LCA0MTQzMywgNDcxOSwgNDY5LCAwLCA0MzYzLCAzMzEzLCA0MTQyOCwgCi0gICAgNzg0MDcsIDIwMjMsIDE3NzIsIDc4MjI0LCA3ODIyNSwgNjU3MDYsIDEwMDUxLCA2NDgxMiwgNzgyMjAsIDAsIDk5MjAsIAotICAgIDEyMjE1LCAwLCA0OTMxLCAxOTUxLCAxMjQ5NywgMTE5MzYzLCA5NjA3LCAwLCA5NjYzLCA5ODMyMjgsIDExOTYzNCwgNjUwMywgCi0gICAgNDExMTAsIDAsIDE0OTEsIDAsIDAsIDEyNzMwNCwgNDEwNjEsIDAsIDE5NDgzOCwgMTI3MTg3LCA2NTAyNiwgNDE5OTMsIAotICAgIDQxNTA5LCAxMTA0NSwgNjUwMjgsIDc4NjAyLCA2NjQ3NiwgNDExMDgsIDk3MzgsIDQxOTk1LCAxMDc1LCAxOTU4LCAxMjUzNSwgCi0gICAgNDE5OTIsIDQxNTA2LCAwLCA0MTY4NywgMCwgMTIwNzE3LCAxMjc3NzYsIDk5NDAsIDEyNzI5OSwgNzY5MiwgOTgzODMzLCAKLSAgICA4MDA4LCA0MTEzMSwgMzMwLCA4NTY2LCA2NTA4MywgNDExMzMsIDk4MTYsIDEyNjUxNywgMTI1MzIsIDc4NTUwLCA3ODU0NiwgCi0gICAgMzUwOCwgMTI3MDU4LCA0MzIzNSwgMCwgMTI3Mjk4LCA2NDEzOSwgNzgyMzEsIDY0MTEsIDEyOTEwLCA3ODU1NCwgNjY2NDQsIAotICAgIDEzMDI4LCA2NzM3LCAxMjUzNywgMCwgMCwgNjQxMzYsIDEyNTM2LCAyMzUwLCAxMzAyOSwgNzgyMzMsIDAsIDk4MzEwMywgCi0gICAgMTMwMzAsIDY3MDIsIDQ1MjcsIDAsIDEyNTM4LCAxMjg4MTAsIDk4MzY0NSwgNjU1OTksIDY1NzE3LCA5OTY2LCAwLCA0OTQ4LCAKLSAgICAxMjQ4NCwgNDAzMiwgMTI4MTQ5LCAxMjYyMywgMCwgNjIwNywgMCwgNjExNywgNjU5MzAsIDg0MTIsIDAsIDc0MzgsIDEyOTYsIAotICAgIDIzMjUsIDQxNTExLCAxMjY2MjUsIDEwMTQ5LCA3NDExOCwgMCwgMTI3Mjg2LCAxMjQ4MSwgMCwgMTI0ODgsIDY2NzEzLCAwLCAKLSAgICA0MTU1NiwgNjQ0MTQsIDExODgwMiwgMjM1NCwgNDI2MTksIDczNzY2LCAwLCA2Mjk1LCA5MDEsIDQxNTEwLCA3OTUzLCAwLCAKLSAgICA2NTAzMiwgNDE1MTMsIDk4MzE2NiwgMTE5MjcsIDY2NTg0LCA3ODU1OSwgNzg1NjAsIDc4NTU3LCA3ODU1OCwgMCwgNzg1NTYsIAotICAgIDg0OCwgOTg2OCwgMCwgNjQyNCwgNzg1NjgsIDExOTMzOCwgNjk5MjIsIDc0MDMxLCA3ODU2MywgNzg1NjQsIDIzNTIsIAotICAgIDc4NTcyLCA4OTMsIDY0NTc2LCAxMTI4OSwgMTQwNywgNjc5NzMsIDAsIDEzMDI2LCA2NzYyLCA3ODU3OSwgNzg1ODAsIAotICAgIDEzMDIzLCA4OTAzLCA5Nzc3LCA2NjcxNSwgMTg3MSwgODA5OSwgMCwgMCwgMTM0MywgOTgzODIzLCAwLCA5MzI1LCA2ODE4LCAKLSAgICA2MjgzLCAxMTczOCwgMCwgOTgzOTM0LCAwLCAxMTc0MSwgMCwgMCwgOTIxNiwgODI2MywgMTEyNzksIDE5NDc1MiwgCi0gICAgOTgzODI1LCAxOTQ3NTQsIDEzMDIxLCA2NDQ5NCwgMzEzNiwgMTk0NzU4LCAxOTQ3NTcsIDE5NDc2MCwgMTMwMjIsIDQyNzM3LCAKLSAgICA5OTU2LCAwLCAwLCA3NDU1MiwgMTAwMTQsIDAsIDQxMjYwLCAxMTkzNDAsIDEzMDIwLCAxMDAyNCwgMTk0NzY0LCA3NDU4MywgCi0gICAgNzQzNDAsIDY5NjgxLCAwLCA0MzAwMSwgODAyOSwgMCwgMCwgOTgzNzgwLCAzMzM1LCAwLCAwLCA5Nzc2LCAxMjA1MjYsIAorICAgIDEyNzMwOCwgNjYyMDgsIDY3MzM5LCAxMzAwMiwgNjM4MDMsIDI0NCwgMTE1NDIsIDEyODk4LCAxMjQ5NCwgNzM3NjEsIAorICAgIDEyNDkyLCAxMjY2OSwgOTQwNzAsIDAsIDc0MTUzLCAxMjAzMTAsIDEyODI3OCwgMTIwNjgwLCA0ODgyLCAxMzA0MCwgCisgICAgOTgzMzYyLCA4NjEyLCA0ODg1LCA3NDA1MywgMTI3ODMwLCAxMzA0MiwgNDg4MCwgNjQ2NjIsIDI0MjksIDEzNjAsIDI0OCwgCisgICAgMTI5MDY2LCA2Mzc5NywgOTIzOTQsIDQyMzU4LCAwLCA3MjkyLCAwLCA2Mzc1NiwgNDI3ODYsIDY2NjkzLCAwLCAxODcwLCAKKyAgICA3ODA0MCwgNDcwLCA3ODAzOCwgNzgwMzUsIDc4MDM2LCA3MDAyOCwgNzgwMzQsIDQ1NzksIDY5MjMyLCAwLCAxMjUxMSwgCisgICAgNzQ0NTMsIDEyNTE0LCAwLCA3MTEzMCwgNzIzOSwgNzAwMSwgODYyMywgOTQwMTEsIDEyNTEzNywgMTI4MDQ4LCA3Mzc4LCAKKyAgICAxMjUxMiwgMTE2MTUsIDYxMDQsIDAsIDEyMDkwMCwgNjU5LCA2MDk4LCAwLCAxMjIzNCwgODM1MTEsIDY3MzU4LCA4MzExLCAKKyAgICAxMjUxMCwgNzY2OSwgMTMwMzksIDgzNTA5LCAxMjUxMywgMTAyMDIsIDEyNDcxLCAwLCA4NzQ3LCAxMjEzODUsIDcwMTkzLCAKKyAgICAxMjgzNTQsIDIzMjMsIDAsIDIzMTksIDc3OTE3LCAxMjQ3NywgNzc5MTYsIDIzMTEsIDc2NjYsIDQ0MTUsIDIzNywgNjI4MSwgCisgICAgMTI3MjgwLCA5ODMzMTEsIDgzMDIwLCAyMzA5LCAxMzEyLCA4MTczLCA4MzAxMywgMTI0NjksIDgzMDE1LCA3ODUwNSwgCisgICAgNjQzMzUsIDEwNjA5LCA4MzAxMSwgNzgwMDYsIDkzOTcsIDExNTI0LCA5Mzk1LCA5Mzk2LCA5MzkzLCA5Mzk0LCA5MzkxLCAKKyAgICA5MzkyLCA5Mzg5LCA2MjA5LCA5Mzg3LCA5Mzg4LCA0OTMyLCA5Mzg2LCA5MzgzLCA5Mzg0LCA2NzQwLCAxMjc5OTAsIAorICAgIDY1NDUxLCA4MTg1LCAxMjg5MzEsIDE5NDg0MywgNDMwMjQsIDQzMzM2LCA2NzY1OSwgMjMxMywgMTI4MTY3LCA3OTQ4LCAKKyAgICA5MjM2LCA3Nzk0MiwgMCwgMCwgMTA1NzAsIDQzNDczLCA2Mjg5LCAxMDQ4NCwgODMwMDYsIDgzMDA3LCAxMTk5OCwgMTIwODIsIAorICAgIDEwOTI0LCAzMTQ3LCA4MzAwNCwgNjY0MDYsIDEyNTI0LCAxMTkwODEsIDIzMTAsIDExODE4LCA5MzgxLCA5MzgyLCA5Mzc5LCAKKyAgICA5MzgwLCA5Mzc3LCA5Mzc4LCA5Mzc1LCA5Mzc2LCAxNjgzLCA5Mzc0LCA5ODM3NzgsIDkzNzIsIDEyNDQ0LCA3NDI1NiwgMCwgCisgICAgMTMwMTYsIDgyMTAsIDEyMTA2MiwgNDIwMjksIDExMDc5LCAxMjMzMSwgNDM0NTEsIDQyMDMyLCA4NzQ0LCA3MjYsIDAsIAorICAgIDEyMDYzMCwgNDE1NSwgMTIxMDkwLCAxMjA3MDQsIDQyMDMwLCA1MDA3LCAxMjUyMiwgNDMwODgsIDAsIDQ5NTEsIDExMzgyNiwgCisgICAgMTI3MjE3LCA5ODMyMDIsIDk5MjIsIDQzMzA5LCAxMTIxMSwgMTI1MjUsIDk4MzQ3MywgMTIwMTYsIDY1NzcwLCA5NTQ4LCAKKyAgICA2NzY2NSwgNDAzLCA3ODIzMCwgMTI1MDMsIDE5NDY4OSwgMTI3MTkxLCAxMTAzMCwgNDM5MTYsIDkyNTY3LCA2NTY5MSwgCisgICAgNjM5OTgsIDE4MTksIDEwNDk2LCAwLCAwLCAxMTk5MjAsIDAsIDEyOTE0MywgMTIxMDcyLCAxMjUwNiwgOTgzODM4LCAKKyAgICAxMTE0NiwgNzE0NzcsIDEyNTAwLCA0NDAyMywgMTI1MDksIDY0MzkzLCA3ODgzMCwgMzM4OSwgMTA1ODksIDY2MDgsIAorICAgIDExMjA4LCAxMjAyMzYsIDc4Mzk1LCA3ODM5NCwgNzQwNjksIDcxNDQ2LCA3ODM5MSwgMzYwOCwgODI4MSwgMTEzNzMyLCAKKyAgICAxMTA3LCAxMTM3NDUsIDkwNzYsIDg4NjIsIDY5NzQzLCA0MTA1MiwgMTMwODQsIDY0NzY2LCA0MzIxNywgNzgwMywgMTMyMjIsIAorICAgIDc0MTY1LCA3NDc4MiwgNDM0OTksIDg1NDYsIDExNTUzLCA2Mzk5NSwgMTMxNzcsIDkwNDMsIDYzMDMsIDExMzY2NCwgNDk4LCAKKyAgICA2NDQ3MSwgNzc5ODcsIDkyOTc0LCAxMjUyOSwgODA0MiwgNDM4OTksIDIzNDQsIDEyNTI4LCA4MDMxLCAyNDE0LCA3NDUwNiwgCisgICAgNjk3MTksIDMyMzEsIDkxNzgzNiwgNjQyMiwgNjY1MTIsIDY5NjUzLCAxMjUzMCwgMjUzNywgNzg0MDUsIDQxNDI5LCAKKyAgICAxMjY1OCwgMTMwMzYsIDY1NzcyLCAwLCA3ODczOCwgNDE0MzMsIDQ3MTksIDQ2OSwgOTE3ODEwLCA0MzYzLCAzMzEzLCAKKyAgICA0MTQyOCwgNzg0MDcsIDIwMjMsIDE3NzIsIDc4MjI0LCA3ODIyNSwgNjU3MDYsIDEwMDUxLCA2NDgxMiwgNzgyMjAsIAorICAgIDc0MjM3LCA5OTIwLCAxMjIxNSwgODI5NzgsIDQ5MzEsIDE5NTEsIDEyNDk3LCAxMTkzNjMsIDk2MDcsIDcwMzY4LCA5NjYzLCAKKyAgICA2NjgzOCwgMTE5NjM0LCA2NTAzLCA0MTExMCwgOTgzNDY3LCAxNDkxLCA2Njg0NywgMTI5MTY5LCAxMjczMDQsIDQxMDYxLCAKKyAgICA3MDQ1NCwgMTk0ODM4LCAxMjcxODcsIDY1MDI2LCA0MTk5MywgNDE1MDksIDExMDQ1LCA2NTAyOCwgNzExODEsIDY2NDc2LCAKKyAgICA0MTEwOCwgOTczOCwgNDE5OTUsIDEwNzUsIDE5NTgsIDEyNTM1LCA0MTk5MiwgNDE1MDYsIDEyNzAwMiwgNDE2ODcsIDAsIAorICAgIDEyMDcxNywgMTI3Nzc2LCA5OTQwLCAxMjcyOTksIDc2OTIsIDk4MzgzMywgODAwOCwgNDExMzEsIDMzMCwgODU2NiwgCisgICAgNjUwODMsIDY4MzksIDk4MTYsIDEyNjUxNywgMTI1MzIsIDc4NTUwLCA3ODU0NiwgMzUwOCwgMTI3MDU4LCA0MzIzNSwgCisgICAgMTIwMzUxLCAxMjcyOTgsIDY0MTM5LCA3ODIzMSwgNjQxMSwgMTI5MTAsIDY3NzEwLCA2NjY0NCwgMTMwMjgsIDY3MzcsIAorICAgIDEyNTM3LCAwLCA0MzUwNiwgNjQxMzYsIDEyNTM2LCAyMzUwLCAxMzAyOSwgNzgyMzMsIDEyMDkxNCwgNDM4OTcsIDEzMDMwLCAKKyAgICA2NzAyLCA0NTI3LCA3MTI1MCwgMTI1MzgsIDEyODgxMCwgOTgzNjQ1LCA2NTU5OSwgNjU3MTcsIDk5NjYsIDkzMDQ2LCAKKyAgICA0OTQ4LCAxMjQ4NCwgNDAzMiwgMTIxMTc3LCAxMjYyMywgMCwgNjIwNywgOTgzMjI1LCA2MTE3LCA2NTkzMCwgODQxMiwgCisgICAgMTI3MTgzLCA3NDM4LCAxMjk2LCAyMzI1LCA0MTUxMSwgMTIxMDIwLCAxMDE0OSwgNzQxMTgsIDAsIDEyMDIzMywgMTI0ODEsIAorICAgIDEyMTI4MCwgMTI0ODgsIDY2NzEzLCAwLCA0MTU1NiwgNjQ0MTQsIDExODgwMiwgMjM1NCwgNDI2MTksIDczNzY2LCAKKyAgICAxMTkyNDQsIDYyOTUsIDkwMSwgNDE1MTAsIDc5NTMsIDAsIDY1MDMyLCA0MTUxMywgMTIwMjA5LCAxMTkyNywgNjY1ODQsIAorICAgIDc4NTU5LCA3ODU2MCwgNzg1NTcsIDcxNDU5LCA4MzAzNCwgNjc2MDMsIDg0OCwgOTg2OCwgNjcyMjAsIDY0MjQsIDc4NTY4LCAKKyAgICA2NzIyNiwgNjk5MjIsIDcwMTkwLCA3ODU2MywgNzg1NjQsIDIzNTIsIDY3MjE5LCA4OTMsIDY0NTc2LCAxMTI4OSwgMTQwNywgCisgICAgNjc5NzMsIDk4MzE5MywgMTMwMjYsIDY3NjIsIDc4NTc5LCA3MDE5MiwgMTMwMjMsIDg5MDMsIDk3NzcsIDY2NzE1LCAxODcxLCAKKyAgICA4MDk5LCAxMjc5ODQsIDAsIDEzNDMsIDkxNzk5OSwgMTIwNzg0LCA5MzI1LCA2ODE4LCA2MjgzLCAxMTczOCwgMCwgNzI0MzYsIAorICAgIDExMzcxMywgMTE3NDEsIDkxNzk4NiwgNzUwNDMsIDkyMTYsIDgyNjMsIDExMjc5LCA4MzAyMywgODMwMjQsIDgzMDI1LCAKKyAgICAxMzAyMSwgNjQ0OTQsIDMxMzYsIDE5NDc1OCwgMTk0NzU3LCAxOTQ3NjAsIDEzMDIyLCA0MjczNywgOTk1NiwgMCwgNDM5NTQsIAorICAgIDc0NTUyLCAxMDAxNCwgMCwgNDEyNjAsIDExOTM0MCwgMTMwMjAsIDEwMDI0LCAxOTQ3NjQsIDc0NTgzLCA3NDM0MCwgCisgICAgNjk2ODEsIDAsIDQzMDAxLCA4MDI5LCAwLCAwLCA5ODM3ODAsIDMzMzUsIDExOTM0MSwgOTIwOSwgOTc3NiwgMTIwNTI2LCAKICAgICAxOTQ3NDgsIDUyMTUsIDQyNjQ0LCAzMzMzLCAxNjMyLCAxOTQ3NTEsIDY0ODQ5LCAzMzQyLCA3ODU4MiwgNTM2MywgMTI5NTcsIAotICAgIDc4NTgxLCA0MTU2LCAwLCAwLCA2NDIxLCA3ODU5MSwgMTYxMSwgNzg1ODksIDEzMDE4LCA3NDI1NywgNzg1ODgsIDc0NTQyLCAKLSAgICAzMzM3LCA0NTM3LCA2Nzg5NSwgMTE3MzYsIDAsIDY4NjA4LCA2NDgyLCA0MjE0LCA3Mzc5MCwgMTE5NDUsIDAsIDEzMDQ2LCAKLSAgICA4ODM4LCA0MjUsIDQwMjUsIDEwNzA5LCA3ODU5NSwgMjEwOCwgMjM5MiwgMTMwNDcsIDAsIDAsIDY4MTksIDEzMDQ5LCAKLSAgICA2NDk5LCA5MjI0MywgMTI0MjQsIDY4NjE0LCA3Mzk0NCwgMTMwNTAsIDk5MjQsIDE5NDc0NSwgNjUwNywgMTI3OTE5LCAKLSAgICA5NDA3MywgMTI4MDY5LCAzMjc3LCA4OTI5LCA0OTQ3LCA0MTA1NSwgMCwgMTk0NzIyLCAxOTQ3MjEsIDE5NDcyNCwgMTMwNDUsIAotICAgIDY0NjI2LCA2NjAzNCwgNzc1MSwgMTk0NzI3LCA4MzcxLCAxOTQ3MjksIDM5OTcsIDEyODA2LCA4NzY4LCAxMzA0NCwgMCwgCi0gICAgMTI0MjAsIDQwMjQsIDE5NDczMCwgNDEwNTQsIDEwNzgsIDk3NTcsIDY5NzM2LCA0MTA1NywgMCwgMCwgMCwgMCwgOTgzNzkxLCAKLSAgICA5MjIxMCwgOTI0MTEsIDAsIDQxNDk2LCAwLCA5MTY1LCAxNTcyLCAxMTkxMSwgMCwgMTE4ODQyLCAyMzQ2LCAxMzI3MCwgCi0gICAgODk1OCwgMCwgOTY0NiwgMzc3MywgNDMxODMsIDY0MDEsIDU4MzEsIDAsIDAsIDEzMDQzLCA4MDU2LCA5MjQ5NCwgNjU2ODEsIAotICAgIDIwOCwgMTI3MzgyLCA0MTUxNCwgMCwgMCwgMCwgMTA2OTksIDY0MDgsIDkyMjI3LCA3ODI1LCA1NjYxLCAwLCAxMjA2MzAsIAotICAgIDM2MDMsIDQxMTA5LCAyMzk4LCAzNTQ4LCAxMjY1OTYsIDAsIDExOTkzMywgMCwgMzExNSwgOTkxOCwgMCwgODI5NCwgCi0gICAgNDI5MTIsIDAsIDAsIDE5NDcyNiwgNDg3NiwgNjU4MDQsIDAsIDAsIDQzNDY4LCA5ODMyNzQsIDQxNTU4LCA0MTQ3MSwgCisgICAgNzg1ODEsIDQxNTYsIDAsIDEyNzMyOSwgNjQyMSwgNzgwMzksIDE2MTEsIDc4NTg5LCAxMzAxOCwgNzQyNTcsIDc4NTg4LCAKKyAgICA3NDU0MiwgMzMzNywgNDUzNywgNjc4OTUsIDExNzM2LCAwLCA2ODYwOCwgNjQ4MiwgNDIxNCwgNzM3OTAsIDExOTQ1LCAKKyAgICA0MzkyNSwgMTMwNDYsIDg4MzgsIDQyNSwgNDAyNSwgMTA3MDksIDc4NTk1LCAyMTA4LCAyMzkyLCAxMzA0NywgOTI3NDUsIDAsIAorICAgIDY4MTksIDEzMDQ5LCA2NDk5LCA5MjI0MywgMTI0MjQsIDY4NjE0LCA2NTgyNywgMTMwNTAsIDk5MjQsIDE5NDc0NSwgNjUwNywgCisgICAgMTI3OTE5LCA5NDA3MywgMTI4MDY5LCAzMjc3LCA4OTI5LCA0OTQ3LCA0MTA1NSwgMCwgMTk0NzIyLCAxOTQ3MjEsIAorICAgIDE5NDcyNCwgMTMwNDUsIDY0NjI2LCA2NjAzNCwgNzc1MSwgMTk0NzI3LCA4MzcxLCAxMjEwMzYsIDM5OTcsIDEyODA2LCAKKyAgICA4NzY4LCAxMzA0NCwgMCwgMTI0MjAsIDQwMjQsIDEyODAwMCwgNDEwNTQsIDEwNzgsIDk3NTcsIDY5NzM2LCA0MTA1NywgCisgICAgNjgzMDcsIDkxNzg0MiwgMCwgMCwgOTgzNzkxLCA5MjIxMCwgOTI0MTEsIDEyOTMwMywgNDE0OTYsIDAsIDkxNjUsIDE1NzIsIAorICAgIDExOTExLCAxMjQ5OTAsIDExODg0MiwgMjM0NiwgMTMyNzAsIDg5NTgsIDAsIDk2NDYsIDM3NzMsIDQzMTgzLCA2NDAxLCAKKyAgICA1ODMxLCAwLCAxMjA4NjUsIDEzMDQzLCA4MDU2LCA3MDEwOCwgNjU2ODEsIDIwOCwgMTI3MzgyLCA0MTUxNCwgMCwgCisgICAgMTIxMDQ4LCA5ODM4ODQsIDEwNjk5LCA2NDA4LCA5MjIyNywgNzgyNSwgNTY2MSwgODI5NzIsIDgyOTczLCAzNjAzLCAKKyAgICA0MTEwOSwgMjM5OCwgMzU0OCwgODI5NjksIDgyOTcwLCAxMTk5MzMsIDgyOTY0LCAzMTE1LCA5OTE4LCAxMjc4MjMsIDgyOTQsIAorICAgIDQyOTEyLCAwLCAxMjcyODcsIDE5NDcyNiwgNDg3NiwgNjU4MDQsIDAsIDAsIDQzNDY4LCAxMjEyMjEsIDQxNTU4LCA0MTQ3MSwgCiAgICAgNzM5NTAsIDgxNTgsIDk5NDQsIDQxNDcyLCAxMjAyOTgsIDEzMDUxLCA3ODY4OSwgMzE0MywgMTk0Njc0LCA2NzAxLCAKLSAgICA0MTU1OSwgMTg5NiwgNjYyNTYsIDEzMDUyLCAxOTQ2ODAsIDU2NjUsIDAsIDExOTA3MSwgNzAyNSwgNjM5NzQsIDAsIAorICAgIDQxNTU5LCAxODk2LCA2NTIxNSwgMTMwNTIsIDE5NDY4MCwgNTY2NSwgNzg1OTQsIDExOTA3MSwgNzAyNSwgNjM5NzQsIDAsIAogICAgIDc0MzUyLCA3NDE2MSwgNDE1NCwgOTg2MywgNDM1NTAsIDEyMzEwLCA1NjYyLCA0MjM4MiwgMTU2NCwgNzM5MjQsIDExMjEsIAotICAgIDc4MzE5LCA2Mzk1OSwgMCwgOTk0MiwgMTMyMzEsIDAsIDY0NzUyLCA0NzMyLCAxOTQ2NjYsIDExNTk2LCAxMTk5MzEsIAotICAgIDY1MTg3LCAxNjI2LCA2Mzk4MywgMTAxMTAsIDY0NzcyLCA0MjAyNCwgNjQyMCwgNDIwMjgsIDAsIDEwNTA5LCAyNzk1LCAKLSAgICA0OTEwLCAxOTQ3MjgsIDY5MjMxLCA2NDc1MywgNjI3NSwgOTM5NTcsIDExODgzMCwgNjM5NzgsIDExMDQ0LCAzMjI5LCAKLSAgICA2NDIzLCA0Mjc3NCwgMCwgMCwgMCwgMTI4MjMsIDIzMzEsIDkxNzgxMCwgNzA4NSwgNjEzNywgMCwgNzUyNCwgMCwgCi0gICAgOTE3ODA5LCA4MzQ2LCAwLCA4MzM4LCAxMjgzMTUsIDY1MDQzLCAwLCA4MjIsIDEyNzk4NCwgOTkwMywgNjQ3MjEsIDQyNzIyLCAKLSAgICA2OTg3NywgMTk0NjU5LCA3ODY1NSwgNzg2NjEsIDE5NDY2MCwgNzg2NjIsIDQxMjY1LCA1MzExLCAxNzk1LCA5NjUsIAotICAgIDExODc5MSwgMTA1ODcsIDc4MDU1LCAxMTI3OCwgNzg2MzIsIDE5NDY0MCwgMCwgMTI5NDYsIDE5NDY0MSwgMTE5MzQxLCAKLSAgICAxMjAzNDksIDYyOTQsIDMxNDQsIDE5NDY0OCwgMTk0NjQ3LCA2NTAxOSwgMTk0NjQ5LCA3Mzk5MCwgMCwgOTgzOTYwLCA3NDgsIAotICAgIDQxMDY3LCAyMzMwLCA1MzUsIDMxNDgsIDEyMzc1LCA3ODc5OSwgMTk0NjI5LCAxMDU1NiwgMjQ3NSwgMTIzODgsIDQ4ODksIAotICAgIDg5NjgsIDY3ODYzLCAzNTkzLCAwLCAwLCAyMzQyLCAwLCAxOTQ2MzQsIDY1MjA2LCA0ODk0LCAxOTQ2MzUsIDQ4OTAsIAotICAgIDE5NDYzNywgOTE3ODA0LCA1ODEsIDQ4OTMsIDk4MzYxNiwgNjU3MSwgNjU1NDUsIDQ4ODgsIDQxNTcsIDc4MDQ4LCA3ODA0OSwgCi0gICAgNzgwNDYsIDc4MDQ3LCAwLCAxMDExOSwgNjQxNSwgNDI4OTMsIDAsIDY5NzAyLCAwLCAwLCAxMTM3NSwgNjQ3NDYsIDIzMzIsIAotICAgIDc4MDYzLCA0MTIsIDc4MDYxLCA2NDkzMiwgNDI4ODAsIDQzNTg3LCAwLCAwLCAwLCAwLCA2NTE5NywgNzgwNjYsIDEyMjAzLCAKLSAgICA3ODA2NCwgNzgwNjUsIDg5MTMsIDY1ODU0LCA0ODc1LCA2NTgxMSwgMTIwMzgxLCAxMjAzODksIDExODg4OCwgOTM0NCwgCi0gICAgODgyNiwgMTIwMzg2LCAxMjAzOTUsIDEzMTA0LCA3NDc4MSwgMTE5OTcsIDEyMDM5MywgNzgwNzUsIDAsIDMxMzQsIDAsIAotICAgIDY1Njk2LCA5MjMzMSwgMCwgNjYyMTcsIDAsIDgzMzQsIDExOTM0NCwgMCwgMzQ0OSwgMCwgMCwgNzg0MTQsIDc4NDEzLCAKLSAgICAxMTg5NTAsIDc0MDExLCAwLCAwLCAwLCAwLCAxOTA4LCAxMjAxNjcsIDQzMjgsIDEwNzM0LCAxMjcwMTQsIDAsIDEyNzkxNCwgCi0gICAgNzgwNCwgNzgyNzIsIDEwODExLCA2MjUwLCAxMTMzOSwgNDkxNCwgMTEzNjcsIDAsIDc4MDU0LCA0OTE3LCA3NDUxNiwgCi0gICAgNzQyMDgsIDY0Mjg1LCA0OTEyLCA1NDY0LCAxMjc4MzYsIDExODg5MywgMjM2MSwgNzk3MSwgNzgwNzIsIDc4MDczLCAKLSAgICA1NTI0MywgNzgwNzEsIDAsIDgwODYsIDc0MzE3LCA2NzA3LCA4MzE5LCAyMzEyLCA0MDk3NywgMTA5NjAsIDQwOTYyLCAKLSAgICA4MzA1LCAxMjU3MywgOTgzNjA4LCA0MDk4MCwgOTgzOTY0LCAxMzIwMiwgMCwgMTI1ODIsIDc4MjgyLCA5ODMwNDgsIAotICAgIDY5ODU2LCA0MjQzOCwgNTUyMjEsIDYyODgsIDc4MjgwLCAxMjc5NDYsIDU2NTMsIDQyNDAwLCAxMDg5MSwgNzY5OCwgNTY1OCwgCi0gICAgNzQwNDUsIDcwMDM5LCAwLCAwLCA0OTEzLCAwLCA5ODM5NTksIDcxMzMzLCA0MjMyNiwgMTI4MTk0LCAxMjcyOCwgOTI2ODUsIAotICAgIDQyNDc4LCAyMzI3LCAwLCAxMjU2MywgNDIyODcsIDEyNzA1LCAwLCAwLCAxMjU4OCwgODgyMSwgNjE1MywgMjg2NywgCi0gICAgMTk0NzA4LCA2NjMxMiwgNjk4LCAxMjgwMDcsIDE5NDYwNiwgMTAzNTYsIDcwMDE3LCAxOTQ3MTMsIDY1MSwgMTI2NDEsIDAsIAotICAgIDAsIDAsIDAsIDQxNTUyLCA2NTExNSwgNzg0NjUsIDc4NDY3LCA3ODQ2MywgNzg0NjQsIDEyODg1MSwgNzg0NjEsIDE5NDY5NywgCi0gICAgNzQzNTYsIDY0OTQ1LCA0NzE2LCA0MzI3NywgMCwgNzg0NzQsIDEyMzQwLCAxMjA1NjgsIDAsIDE5NDcwMCwgNTUyNjQsIAotICAgIDQxMjExLCAxMjA2NzYsIDg3MDMsIDU0NjIsIDkxNzYyOSwgOTgzNDk1LCAxMDEwMSwgMCwgNzAwNDksIDg0NzksIDQxNTEsIAotICAgIDQxOTMzLCAwLCAwLCA2NjI1NCwgMTIwODIxLCAwLCAwLCAxMjg2NTQsIDAsIDExOTE5NCwgNzQwNTAsIDkyNzAxLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMjI3OCwgMCwgMCwgMCwgMjcwMCwgMTI1NzYsIDc4NDIsIDEyODk5LCAwLCAwLCAyNjk5LCAwLCA3Mzg0NSwgCi0gICAgMjk4NSwgOTI1NjgsIDEyNjQ3NSwgOTE3ODQ1LCAxMjE5MiwgMTE5MzE0LCAwLCAxMTkzMTIsIDk4MjcsIDExOTMxMCwgCi0gICAgMTE5MzExLCAxMTkzMDgsIDExOTMwOSwgMTE5MzA2LCAxMTQ4MSwgNDEyMTAsIDExOTMwNSwgMCwgMzUsIDc4NDgxLCAKLSAgICA3ODQ4MiwgNjY2OTQsIDY4NDc5LCA3ODQ3NywgNzg0NzgsIDQzNTk2LCA2MDkwLCA2NDI1NywgNzgxMiwgMTA1MzQsIDAsIAotICAgIDc4NDg1LCA3Mzg0OCwgNjc5NzUsIDQyNzIsIDAsIDQwOTY3LCA0MDk2NCwgOTE3ODI1LCAxMjcwNCwgNzg0ODcsIDQzMzA2LCAKLSAgICAwLCA2NDQ5NywgMTIxMzgsIDc5MzAsIDAsIDIyOTIsIDY4MjE2LCAwLCA5MTc4MjYsIDUyNDQsIDQxODksIDk0MTA4LCAKLSAgICA2NzU5NiwgMTI3NTA0LCA0MTg4LCAxODc5LCAwLCA5NjgsIDAsIDQzNzQzLCAwLCA4ODczLCAyMjc5LCAwLCA5MTc4MjcsIAotICAgIDY1NTU1LCAxMjU3NCwgMCwgMCwgMCwgNzQ0OTAsIDEyNzA5OSwgNDM2NTcsIDAsIDAsIDAsIDQyNjgyLCAxMjU3OCwgCi0gICAgMTI3MjAsIDAsIDQxMjI3LCAwLCAxMjM0NiwgMTI3MTAxLCA2NDg0OCwgMCwgMCwgNzI1MSwgMCwgMCwgMTE4ODUwLCAKLSAgICAxMTkxNDEsIDEyODU0NiwgNjYwMTUsIDAsIDk1OSwgODg4NSwgMTI1NjQsIDY2NDU3LCA3ODgwOCwgOTQ2OSwgOTYzMiwgCi0gICAgOTIzMjMsIDc0NzYxLCA2NDMyMywgMTI3MzM1LCAwLCAwLCAwLCAzMTAsIDAsIDQxMjgxLCAxMDk3NiwgMCwgNzEzMjUsIDAsIAotICAgIDc0MjY2LCAxMDA1NCwgNjQ5NywgODU3NCwgMCwgOTAxMiwgMTk5NTgsIDc0NDIwLCA2NTA4OSwgMTMyMTUsIDEyNzMwLCAKLSAgICA2NTE2MywgNzQwNDQsIDM3NCwgNDMxOTUsIDgxNiwgMTIwMTYxLCAwLCAwLCA0MTkzNCwgNzQ2NSwgMCwgMTI4MTY4LCAKLSAgICA5ODMyNjgsIDQ3MTUsIDYxMDEsIDk0MTA2LCA0MTkzNiwgMCwgNDg3OSwgMCwgNjU0NDYsIDAsIDMwNywgMTI3MTQ3LCAKLSAgICA5NTg1LCA1Mzc0LCA5ODMyNjcsIDEyODA1OSwgMCwgMCwgMTI2NjE4LCAxMjAzOTAsIDAsIDY1NTY3LCAxMjA2MTQsIDE5MjksIAotICAgIDAsIDEyMTQyLCAwLCAxMjIzNiwgNDE0MTksIDE5NDYxOCwgMTIwNjEwLCAxMjk4MiwgMTk0NjIzLCA1Mzc4LCA3ODc5MSwgCi0gICAgMTI4Njc5LCA0MTQyMSwgMCwgNDQ2MiwgMCwgMTI2NTk5LCAxMjgwOTIsIDgyMSwgMCwgMjQ5OCwgNTgwMCwgMTIwMTU3LCAKLSAgICA5ODMxMTUsIDE3NjAsIDI0MjEsIDQ0NjksIDIzMjQsIDgyOCwgMzYxMSwgNzg0MDAsIDc1NywgMTE4NSwgMCwgNzg3NzAsIAotICAgIDQzNTk3LCAxMDYyOCwgNzQ4MDgsIDE5NDU3MiwgNzk5OSwgNDM5NzEsIDAsIDAsIDEwNjM0LCAxMDk0MiwgNzcxMywgMjM0OCwgCi0gICAgMCwgNjQzNzQsIDQzODAsIDE5NDYwOCwgMTE5MDQ0LCA5OTgyLCA2NDMyNCwgNDEyNDAsIDg2MiwgNjU2MjYsIDc4NDYyLCAKLSAgICAxODEwLCAzNjczLCA1MTM3LCAxOTQ2MTcsIDAsIDcyNzcsIDY1NjIyLCAwLCA3NTY2LCA2NDY4OCwgMTk0NTkzLCAxOTQ1OTIsIAotICAgIDc4MDkyLCA3NDM1NywgMTk0NTk3LCA0NzQ4LCA5MjIyOCwgMTk0NTk4LCAxOTQ2MDEsIDQyMjYwLCA1ODcxLCAxMTkwNzUsIAotICAgIDAsIDc0NTc2LCA0NDAxOSwgMCwgMTI4MTg5LCAzOTY3LCAxOTQ2MDQsIDEzMTM3LCA4Nzc1LCAxMjc5NDUsIDAsIDI5NjMsIAotICAgIDAsIDg0MTAsIDQ0NTQsIDcyMywgMTI3ODgyLCA5NjYsIDQ0NDksIDkyMzMwLCA5MjIzOCwgMCwgNzgxOSwgMjMyMCwgCi0gICAgMTk0NTg5LCAzMzksIDQ5NjgsIDE5NDU5MCwgMTIwMzk5LCA4MDc1LCA1NTI3NiwgMCwgODA0NywgMCwgNzg4MjcsIDEyNjM0LCAKLSAgICA0MTU0MiwgNzg3ODAsIDc0NjYsIDY3MDUsIDEyMTc0LCA0MjYxMCwgMCwgNzQ0NTIsIDk4Mzc2MywgMTU4NCwgNjY2NDUsIAotICAgIDYwNDUsIDY3MjksIDEyMDY0MCwgNjUyMTgsIDExNTU5LCAwLCA3ODA2MiwgNzUzNywgMCwgMTEzNzAsIDAsIDEwMzMwLCAwLCAKLSAgICAxMDM5NCwgMCwgNzQxOTQsIDAsIDEyNzkyOSwgOTc4MCwgMCwgMTMwOTIsIDE5NDU3NiwgNzc5NTAsIDE5NDU3OCwgNzA3NCwgCi0gICAgOTI2NDgsIDE5NDU3OSwgMTk0NTgyLCAxMTQxNCwgMTI4ODY4LCAyNTMxLCAxMzAzNCwgMCwgMCwgNDIxMSwgMTI1OSwgCi0gICAgNzUxNywgMCwgMCwgMTk0NTYxLCA0MDk5NiwgMTMwMzcsIDcwOTIsIDY0MSwgNTIxOSwgOTQwMzQsIDE5NDU2NiwgMTEwNjQsIAotICAgIDQxMTI5LCAwLCA0Mjg1MCwgMTMwMzUsIDkwNzUsIDkyMzg3LCA1NDY2LCAxMjgxNTMsIDAsIDY0MDk4LCA2NTc5MywgNDUzNSwgCi0gICAgMTk0NTczLCA0MjcxLCA3ODQxNywgMTI4MzU3LCA2NzY5LCA0MTQxMCwgOTgzNDUyLCA2NDI2MiwgNjc2NywgNDE0MDcsIDAsIAotICAgIDAsIDY3NTUsIDExODg2NCwgOTA0NiwgMTI3OTM0LCAxMjY2MDgsIDAsIDAsIDAsIDAsIDY3Njc1LCAwLCAwLCAwLCA2NDMzOCwgCi0gICAgMjU2MywgMTMwMzMsIDI0NywgMTE4OTE1LCAwLCAxMjMzOCwgNDY1MSwgNjk4OTUsIDExMjcwLCAwLCAwLCAxMTkzMywgMCwgCi0gICAgMCwgNDE5MDMsIDQzNDQ3LCAxMTAwMSwgMCwgNDIyNTUsIDAsIDkyNjYxLCA2OTgyMSwgNDE5MDUsIDAsIDAsIDEwNzc1LCAKLSAgICA5NzkzLCA1MDA5LCAwLCA0MjI2OSwgNjQ1ODcsIDk4MzA2MywgNDI1MzUsIDY5ODEyLCA2NDUyOSwgNDE0MDgsIDQyODUzLCAKLSAgICAzODc3LCAxMjA3OTUsIDQyNjc0LCA4MTQ3LCA0MzU2NiwgMTE5MDIxLCA5ODM3NzYsIDEwMjM2LCA2NTkxOCwgNDM3ODIsIDAsIAotICAgIDAsIDY0NTA2LCA2OTY1MiwgMTE4OTIxLCA0NzQ3LCAxMjgwNTgsIDY5ODQ0LCA0MzIwMCwgNTgzMiwgMCwgMCwgNTE0MSwgCi0gICAgNDI2MDAsIDAsIDQzMjAzLCAwLCA5ODM3OTksIDQzMjg2LCAwLCAxMjgyMTEsIDQzNzc4LCAwLCA0MTMwNSwgNzg3NzYsIAotICAgIDQzNzgxLCAxMTMwMywgNjU1NDcsIDAsIDcwMzEsIDg1OSwgMCwgMCwgMCwgNjA1OSwgMTI2OTg1LCA1NTIzNSwgMCwgODUzNSwgCi0gICAgMCwgNjUxOTYsIDE5NDc4NywgNjYwMzIsIDExNDg4LCAxMjA0ODEsIDEyMDc4NiwgNDIyMzMsIDY0MTQwLCA5OTQ2LCAKLSAgICA2Mzg4NSwgMTk0NzkyLCAxMTgyMiwgMCwgNDMxODksIDk4Mzg5OCwgMCwgMTc4OCwgMTU3OSwgMTIwNDgyLCA3MTI5OCwgMCwgCi0gICAgMCwgMCwgOTAyOCwgMTE5NTcxLCA2OTIzNCwgOTQwNTUsIDAsIDEyODUsIDY0ODgyLCA0MTI0MiwgNzAwODYsIDAsIDEyNjQwLCAKLSAgICAwLCA3NDAxLCAwLCAxMjYyNSwgNjgxOTgsIDAsIDcwMDgyLCAzOTQwLCA0MTU5NywgNDM3NTQsIDMzOTYsIDEyNjQyLCAKLSAgICA4NjY1LCAwLCAwLCAxMjYzMCwgMTY1MywgOTE3ODE1LCAxMDE1MywgMCwgNjE2NiwgMTIwNTE2LCAxMTg5ODksIDAsIDg4MTUsIAotICAgIDY2NjczLCA2NTA0NiwgOTI4NSwgOTEzLCA0MjI1OSwgMTE5MzE3LCAxMTkzMTgsIDIxNDIsIDY4NDU0LCA0MjQ4NSwgCi0gICAgOTQwMTIsIDc4NzgsIDgyMTEsIDQyMjkzLCA2NDM3NywgMCwgOTI2NDMsIDAsIDE5NDY3MywgMTIwMzIsIDAsIDk3MjUsIDAsIAotICAgIDc4NDMxLCA1MjYzLCAxMjgxOCwgNzg0MzAsIDQxOTM5LCAxMDAyMiwgNjUzODcsIDc4NDE5LCA0Mjc3NywgMTAxMzksIDk4MCwgCi0gICAgNDM2OTgsIDY1Mzg2LCAyMjA4LCAwLCA0MzcwMSwgNDMxOTgsIDcxODQsIDEyMDY3MywgMTk0Nzk3LCA5MTc4MTksIDEwMDg1LCAKLSAgICAxMTk5OTIsIDAsIDExOTk5MywgNjYzNCwgOTIzNzMsIDAsIDExOTMyMywgODA3MiwgMTE5MzIxLCA0MzcwMCwgMCwgODg3MiwgCi0gICAgNzc4MywgOTE3OTkyLCAxMjM5OCwgODIzNywgMCwgMCwgMTIzOTUsIDAsIDEyNjk3NywgMTIwNTY1LCA5OTE0LCAyMjE3LCAKLSAgICA5MTc4NTQsIDczOTc1LCA2MzY3LCA2MzUxLCA2NjY4OCwgMCwgNzgxMDcsIDAsIDY0NzM1LCA0MTI0MywgOTIxOTksIDc4MDgsIAotICAgIDE4MjksIDAsIDQxOTM3LCA0MzU4LCA0MzI3MiwgNjM1MywgMCwgMCwgMTIwNDIyLCAwLCAxNzEwLCAwLCAwLCA2NTYwNywgMCwgCi0gICAgNDksIDY2MjcsIDAsIDYyNTgsIDEwNjgzLCA3ODY3MiwgOTc0MSwgNzgzMjksIDU2NDksIDc4NDQxLCA0MzQ0MywgNjQ0MTgsIAotICAgIDE2NDMsIDY1MjEzLCA4NDA1LCAzNDcwLCAxMjgyMjUsIDEzMjEzLCA0MjQ1MiwgNzgzMzEsIDEyMDY2NCwgNzg0NDUsIDAsIAotICAgIDEwNzIsIDc4NDU3LCA3ODQ1MiwgNzg0NTQsIDY1NzYsIDQxOTg4LCA0MTEzMiwgNjU2NzUsIDEwODAsIDEyMDAwMiwgOTg4NiwgCi0gICAgNTUyMjUsIDExMDEsIDY4NDA0LCAxMjMwOSwgNTUyMjcsIDAsIDEyNjMyLCAxMDg2LCAxODY5LCA3ODY4NSwgNzY4MCwgMCwgCi0gICAgNjU0NTgsIDEyMDcxNCwgMTI2MzksIDMzODAsIDgxMjMsIDEwOTEsIDEyNjM4LCA3OTc3LCA0NTAxLCA0MTA5OSwgMCwgCi0gICAgNjYzMDksIDAsIDAsIDE0OTQsIDk4MzE0NiwgMTI2NjEzLCAwLCAxMTY5MywgMTI2NTEzLCAxMDQ5NCwgOTI2NTUsIDY1ODcyLCAKLSAgICAxMjM2MywgMTEzODYsIDAsIDAsIDAsIDAsIDY0NTgyLCAwLCA3Mzc5NCwgMCwgODAyMiwgMCwgMTIwNDYyLCA3NDEwNiwgCi0gICAgMTI0MTMsIDk0MDY5LCA5MTc5OTQsIDkxNzk5MywgOTE3OTk1LCA1NTcwLCAxODgxLCA3MjEwLCAwLCAxMDEyLCA0Mzc1MiwgCi0gICAgMCwgMTIwNzA5LCA3MjA4LCA2NjQ0MiwgNTU2OSwgOTgzMjQyLCA0MjMzOSwgMCwgNjA2MywgMCwgNzgzODMsIDExOTU5NCwgCi0gICAgNjA1MywgNjU2MDIsIDAsIDkyMjAxLCA2NDcyNywgOTE2MCwgMTk0ODI3LCAwLCAwLCA5MjE4MCwgMTA1MDMsIDExODgxMCwgCi0gICAgNjA1NSwgMzg3MCwgNDI3OSwgODQ5MCwgMTIwMTE0LCA0MzE5LCA2NDc4NiwgODYwMiwgMTIwMTEwLCAxMTMyNiwgOTIyMDQsIAotICAgIDk4MzExNiwgMCwgMTIwMTE5LCA3ODMzMywgMTIwMTE3LCAxMjAxMTgsIDEyMDA5OSwgMTIwMTAwLCA2NTA4NywgNTU3MSwgCi0gICAgMzY3NCwgOTc0MCwgOTEyMSwgNTU2OCwgMTIwMTA3LCAxMjAxMDgsIDQyMDg1LCAxMDEwNywgNDIxNTksIDQyODcwLCAKLSAgICAxMjAxMDEsIDU4OSwgNzA1MCwgOTgzODAwLCA0MzI4MSwgMTAyMzMsIDQxMjYzLCA2NjI1MSwgNjU3MjksIDY2MjUzLCAKLSAgICAxMjY0OTcsIDc0MDk5LCA0MjY0NSwgMCwgMTk0ODE1LCA4NTgzLCAwLCA1ODQ3LCA2OTI4LCAxMjgwNzQsIDAsIDAsIDAsIDAsIAotICAgIDY2NTkyLCAxMjIwNCwgOTE3OTYyLCAxOTk2NiwgNzc4NTYsIDQyNTYxLCAxMjA2MjYsIDk4MzI1MSwgMCwgODEyMCwgCi0gICAgMTIwNzAxLCAwLCAwLCAxMjgwMTIsIDQxMDYzLCAwLCAxMDY2NCwgMCwgODM2OSwgMCwgNDU1MSwgMTk0OTY0LCAzMzY5LCAwLCAKLSAgICAwLCA5NjczLCA2NjMzNCwgNjU1ODAsIDEwNDc4LCAxMTg5NjAsIDEyNTE3LCA1NTcsIDk0NTcsIDEyMDM0LCA5ODM2NzEsIAotICAgIDYzNTUsIDEyNTE5LCA0MTAwNCwgMCwgMTk1MDI1LCA3NDA5NCwgMCwgMCwgNzc5NzAsIDk4MzU2MCwgMCwgMTI4MTc1LCAKLSAgICAxMjExMSwgMzkyNywgMCwgMTI1MTUsIDE0NzQsIDY3ODkzLCA1NDkyLCA2OTIzLCA5MjI4MSwgMTA0NDEsIDczODM2LCAwLCAKLSAgICA0Mzk5MCwgNTQ5MywgMCwgNzQzMTksIDAsIDY2NjM1LCAxMjAxOSwgMCwgMTYxOCwgMCwgMTIwNDc0LCA5NjQ1LCAxMDQzMCwgCi0gICAgOTE3OTU5LCA1ODUzLCAxMzA2MywgMTAzNjMsIDAsIDEyOTU2LCAxMjgxNjksIDEyMDcyOSwgMTEzMTQsIDkxNzU4MiwgCi0gICAgMTIwNjAsIDAsIDc4MzkyLCAxMjgyNiwgNjMyOSwgMCwgMTA1MTQsIDY1NTE3LCA3NDM5NSwgMjcwNywgODMwOSwgMCwgCi0gICAgMTI3MDU0LCA3ODM5OCwgNDM1NzAsIDI2OTcsIDQzNDIwLCA3ODM5NiwgMTI3MDU3LCAyNjk1LCA0MjE3MSwgMCwgMCwgMCwgCi0gICAgNjc2MTcsIDExODk3MSwgMCwgMjY5MywgMTIxMjUsIDEyNzY2LCAwLCAxMTY0LCAxMjg4MTcsIDAsIDQxOTE4LCA5ODMxNjgsIAotICAgIDEyNzU0MiwgODY4NywgNjYwMDksIDEyMTc4LCA3MDUzLCAxMjgwMDEsIDc0NjksIDAsIDUyNDgsIDEyMjE4LCAxMjA1MzgsIAotICAgIDY0MjcsIDQyODg0LCA0MTEyMywgMCwgMCwgNDI4NzMsIDQxMTI2LCA5OTkxLCA0MTEyOCwgNzQzNzEsIDEyNzAzMSwgMCwgCi0gICAgOTg3MywgMCwgNDI4NzcsIDc5OTQsIDY0NzYyLCAyMDUzLCA0Mjg0MywgNjU5MSwgOTM0MCwgMCwgMTU4OSwgMCwgMjk2LCAKLSAgICA3NDQzOCwgNzg4NTIsIDAsIDY3ODQxLCA3NDM3MCwgMCwgODkyMiwgMTI4MDY4LCA3NDYwMCwgMTI3MDAsIDc0ODM2LCAwLCAKLSAgICAxMjU3OSwgMCwgMTI1NzUsIDY0MTYsIDU2NTYsIDI4OTEsIDEzMjYyLCA2NTU5MCwgNTI5OSwgMCwgMTE0NzMsIDU0NDksIAotICAgIDEyNTIsIDAsIDc4NDA0LCA0MTQzMSwgNzQzNjksIDY1MzczLCA1Mjk1LCA5MTc1NjksIDc0MTE0LCAxMjIzLCAxNjQyLCAKLSAgICAxNzQsIDc4Mzk5LCA4ODMsIDQxNjEsIDEyNjkxLCA0MjYwMywgNDE0MTMsIDMyMTIsIDQxNDU5LCAzMjExLCA3NDgxMCwgCi0gICAgNDE0MjUsIDEyNzAyOSwgNzg0MTIsIDc0NDUwLCA5NzI4LCAzODQ2LCA4MDcwLCA2MTUwLCA2NjM2LCA0MzcwLCAwLCAwLCAKLSAgICA3NDE3OCwgNzQ1ODcsIDc0MTE3LCAwLCAwLCAwLCA0OTg2LCAxMjE4OSwgMCwgNjc2NDgsIDEyMDQ5OSwgOTQwMDEsIDQyNTcsIAotICAgIDEyMTA0LCA3Nzk0MiwgNjIyMCwgOTAwNCwgNjU1NjEsIDAsIDc3OTQ5LCAwLCA2ODEzNSwgOTE3NTc2LCA3Nzk0NiwgMCwgCi0gICAgNjk2NzksIDY5Njg0LCA5ODkwLCA3ODU2MSwgMTI5NzEsIDc4NDUzLCA5MjU1NiwgNzM4OTgsIDExOTc5LCA3MDA1MSwgCi0gICAgMTE4OTAwLCA5MTc4OTQsIDAsIDk2MzUsIDEyNjAwLCA4ODcxLCAwLCAwLCAwLCA2NDY5LCA3NDIyNywgMCwgNjUzMDQsIAotICAgIDQ2NzksIDEwMjMwLCA2NDMwMCwgNjQ4NjcsIDM0MjcsIDQyNDAsIDAsIDAsIDAsIDAsIDQyOTE2LCAwLCAwLCAwLCA3MjgyLCAKLSAgICA3ODcyOCwgNjU3MzMsIDQ0NDUsIDEyNzEzOCwgMTI4MDgyLCAzNDk0LCA3NDYwNiwgNjU1NSwgMCwgNzc5NzYsIDAsIDAsIAotICAgIDc4NTY2LCAwLCA5ODMxODksIDY1ODk4LCA5ODMyNDQsIDY1MzEyLCA1NDQ3LCAwLCAxMjg5NSwgNjU1OTMsIDQwMTAsIDAsIAotICAgIDQxMTA2LCAwLCA2NDQ0OCwgMCwgNDExMDUsIDAsIDY1ODIwLCA2MjMyLCAwLCAxMjgyODAsIDAsIDQzNjA4LCAxMTkwOTEsIAotICAgIDAsIDY1MzgsIDQzMzUsIDc4MzY0LCAzOTQxLCA0MTEyMiwgMTEwNjEsIDc4MzYzLCA2NDg5MiwgOTExMywgMTk1NCwgCi0gICAgMTIxNTUsIDk4MzY3NCwgNDI4NzgsIDExNTAwLCAwLCAwLCA3NDU3OCwgMCwgNjU4MzIsIDAsIDAsIDAsIDc3OTc1LCAKLSAgICAxMTkyMzAsIDQ1ODYsIDAsIDM1MCwgMTA5NTEsIDAsIDUwOSwgMCwgMCwgOTIzMDcsIDAsIDAsIDUxMzMsIDAsIDAsIDk1MDAsIAotICAgIDAsIDQ5NTcsIDY0NzQxLCAyNDIyLCAyMjEyLCA5ODMwODAsIDAsIDAsIDI0OTYsIDExNTE2LCA5NDQsIDExODg1MSwgMzg5MCwgCi0gICAgMTIxNjgsIDE0MzgsIDAsIDk4MzExNywgMCwgNDE5NDcsIDEyMjAsIDEyMDgyOCwgMTI4NTU1LCAwLCAwLCAxNTcxLCAKLSAgICA0MjYzMCwgNDE5NDksIDQyODA1LCA4MjcwLCA5NDMsIDU2NCwgMCwgMzEyLCA0MTk4MCwgOTgzOTQ0LCAwLCA3ODEyMCwgCi0gICAgODg3NywgMjY5LCA0NDI5LCA2MjcyLCA5NjE3LCAxNDYwLCA2OTU0LCA3ODY1NywgNDExMjAsIDY1MTIxLCAxMDg2MiwgCi0gICAgNjA2MCwgNDExMTksIDQxNDE2LCA3NDM1NSwgNDE3MywgMCwgMCwgMCwgMTkwNiwgOTE3OTg2LCAxMTUzMiwgNzQwNzMsIAotICAgIDEyNzMzOCwgMCwgMTk4NSwgNjI5NiwgOTU4MiwgOTE3ODk1LCA2NDI4NywgMCwgNzgxMTUsIDExNDI4LCAxNzMwLCAyNDU3LCAKLSAgICA5MTc4MDgsIDE5OTE4LCAxMDQ2OSwgMCwgMCwgNzcwMywgODg0MCwgODAzNSwgMCwgMCwgOTIyMzAsIDAsIDYxMjksIDAsIAotICAgIDEyODUyOCwgMTI4MjY4LCAwLCA3ODc0LCA4NjgxLCAxMTkwOTIsIDAsIDEzMTM2LCAwLCAwLCA3MDEwMiwgNjM4ODYsIAotICAgIDExODg4MSwgOTYwNSwgNzEzMDgsIDEzMjIwLCAxMjg3NzYsIDEyMDI3NCwgNTUxNCwgMCwgOTIyOCwgMCwgMCwgMCwgNTI0MCwgCi0gICAgOTgxMSwgMTAwMTIsIDMwOTYsIDAsIDAsIDk4MzM1MSwgNjY2NzYsIDY1ODczLCAwLCAwLCAwLCA5NTAxLCAwLCAxMjcyLCAKLSAgICA2NDUzNiwgNjU0NjUsIDY0NjU0LCA3NDY3LCAwLCAxNDY3LCAxMDE1OCwgMTAwNDAsIDAsIDk1MTksIDAsIDkxNzgxMiwgMCwgCi0gICAgMTE4ODk5LCAxMjE5MywgMCwgMCwgMCwgMCwgOTgzMzUzLCAxOTkzNSwgMCwgOTIxNjIsIDY5Njc2LCAwLCAwLCAwLCA1Mjc1LCAKLSAgICAwLCAwLCA4NjM3LCAwLCAwLCAzNzg5LCA2Mzg4MCwgMTE0NzEsIDQzNTU0LCA2NTg2MiwgMTE0NzQsIDY2MzMyLCA2NjYwMywgCi0gICAgMTI4MTM4LCAyNDI2LCAxMjA0MiwgOTIxOTQsIDk4MzkxMSwgOTUzNywgMzk2MSwgMTIxMTUsIDc3OTUzLCAyNjA1LCA0NTAwLCAKLSAgICA2NDU2MSwgNTUyMjQsIDQ5ODEsIDAsIDAsIDYzODc2LCAxMTY2NywgNDI2ODYsIDc3OTczLCA0MjM2MiwgNjQ2ODYsIDQ0OTksIAotICAgIDQxNjQ5LCA3NTg5LCAwLCAwLCAzMjM3LCAwLCA2ODIxNSwgOTE3OTA0LCA4NTQxLCA3ODI5OCwgNzAwMzQsIDQxODY2LCAwLCAKLSAgICAwLCAwLCAwLCA2OTkyNCwgNDM1NTUsIDI4MjMsIDk1NTksIDEwMDYwLCA0MTk0MCwgODI5OSwgNDE5NDUsIDcxMzIsIAotICAgIDQxOTQxLCAzMzA4LCA3MTkwLCA2NDg4MCwgODYxNCwgNjUyMjAsIDQxNDkzLCAwLCA0MTY5OSwgMTA3NjIsIDQzNzgwLCAKLSAgICAxMjk5OSwgMCwgMCwgODEwNiwgNDEyOCwgMCwgNjI3NCwgNDQ5NCwgMCwgNDAxMiwgMTAzOTUsIDk4MzU5MSwgNDM2MzMsIAotICAgIDY1NDQ3LCAxMjY1MTEsIDAsIDExMDA0LCA2OTUsIDczOSwgNjk2LCA3NjExLCAwLCA0Mjc1NSwgNzQ4MDIsIDkyMjcsIAotICAgIDc1MDYsIDc1MTAsIDY5OTM3LCA2OTEsIDczOCwgNzUxMSwgNzUxMiwgNzUxNSwgMzg2OCwgNjg4LCA0MTg0NywgNjkwLCAKLSAgICAyNTQ4LCA3MzcsIDk3NCwgODAwMywgNzQwNiwgOTE3OTExLCAwLCAxMjg2ODgsIDM5ODUsIDkxNzkxMiwgNjU4NjAsIAotICAgIDYzOTIxLCA3MDUxLCA2OTc3NywgNDY4MiwgOTE3ODA1LCAxMjgwOSwgNjQwNiwgNDY4NSwgOTI1MDUsIDEwODc5LCAxMDM0NywgCi0gICAgNDY4MCwgNjM0MSwgMCwgMzg1MSwgODEzMiwgNzQzMjUsIDAsIDkxNzkwNywgMCwgNDE5NTgsIDExOTE3NiwgOTE3OTA4LCAwLCAKLSAgICAwLCA0MjY1NywgOTI0NjgsIDc2NDMsIDQyMzczLCAxMTcxNCwgNjc1ODcsIDQzNTY4LCA5ODMxNzUsIDExNzE3LCA3NjUwLCAKLSAgICAxMDU5NCwgNjQ5NTEsIDc2NDcsIDc2NDksIDEyODE1NSwgNzY0NiwgMCwgNzgwODIsIDk2NTEsIDAsIDM4OTEsIDAsIDAsIAotICAgIDIzMzcsIDE3MzUsIDc0MzI0LCA2Nzg2MCwgMjM2MywgOTgzMTM1LCAwLCA0MzU2MSwgMCwgMCwgNzQxNDYsIDE4NjAsIAotICAgIDc0OTUsIDc1ODAsIDU4MTIsIDc0OTcsIDc1ODQsIDExOTE0MCwgMTI3ODUzLCAwLCAxMjAzNDcsIDc3MjcsIDAsIDg0OTgsIAotICAgIDY5ODE4LCA4OTQ5LCAzMDY1LCA0MjcxOSwgNzEzNSwgMTU2OSwgOTIzNzUsIDEyNTM0LCAxMjEyNCwgNzY5MCwgMCwgCi0gICAgMTI1MzMsIDk4Mzg3OSwgNjQxOCwgNDU0MywgNzgwODYsIDY5NjksIDAsIDc0ODAwLCAwLCA2Nzk3NCwgMTE5ODAsIAotICAgIDEyODY1MCwgOTgzODAxLCA2Mzg5NCwgMTIwNzYwLCAxMjI4MiwgNjYxOTIsIDAsIDc0NTkyLCA4ODUwLCA3NDI3NSwgOTIzOCwgCi0gICAgMTA2MTcsIDkxNzU0NSwgMCwgOTI2MjUsIDAsIDEyNzkxLCAwLCAwLCAxMjc4NDMsIDQ0NDcsIDczNzMyLCAxMjc5MywgCi0gICAgMTI5MDAsIDkyMzc3LCAxMDk1MCwgMCwgNzgwODcsIDEyNzkwLCA0MTQwMCwgMTE5MTI4LCA2NjYwNywgMTI3OTIsIDQyMjMyLCAKLSAgICAxOTQ5MzgsIDE3NDQsIDEyNzg5LCAxMDM2NiwgMTIzMTcsIDQxMzEwLCA5ODM4NjksIDQxMzk5LCAwLCAwLCA1NTI1OCwgMCwgCi0gICAgMTI2OTAsIDAsIDAsIDQzNjcyLCAxMjc4NDAsIDQxNjUyLCAyOTc0LCA5MDEwLCAxMTMxNSwgMCwgMjc4LCAwLCA0MTQwNSwgCi0gICAgMTE5MjU0LCAwLCAxMDA3NywgNjM4NTMsIDc0NTU3LCA0MjU4NiwgMCwgMCwgNjAwMiwgMCwgNDM1NTMsIDAsIDY3OTAzLCAwLCAKLSAgICAxMjc4NywgNDEzMDgsIDc5MzQsIDY1MzA2LCAwLCAwLCAwLCA4NjQ2LCA5ODMxODYsIDc3ODI5LCA3MTM2MCwgMCwgNjQxMywgCi0gICAgNjU1MCwgMCwgMTk0MCwgMCwgNDM2MzcsIDIyMCwgNjUxOTMsIDQzNTUxLCAxMDY3OCwgMTAwNDQsIDEyODMyMiwgMCwgMCwgCi0gICAgNjg2NTksIDY0MDMsIDU3MDcsIDEwMzkzLCAxMjc1MzIsIDAsIDY2NjE0LCAwLCAwLCAwLCAxMDI5NywgMCwgMzc0MiwgMCwgCi0gICAgMzk1OSwgMCwgMCwgMCwgMjQ2NywgMCwgNjAwMywgNjM4NDQsIDY2NjMsIDgwNDAsIDAsIDQzNzU4LCA0MTgyLCA3ODE3MSwgCi0gICAgNDY3NiwgMTIwNTAxLCAwLCAwLCAyNTEwLCAwLCAxMDIwOCwgNzgxNjgsIDkyMzYxLCAxMTU0MCwgNDM1NDYsIDY2OTIsIDAsIAotICAgIDQxMDYwLCAwLCA0NjY4LCA5MDgzLCAwLCAwLCA3ODE0NCwgMTU1OSwgNjM4MzEsIDk2NzcsIDEyMDI2MCwgMCwgNjUyNTYsIAotICAgIDAsIDc0MDcwLCAwLCAwLCAzNjUsIDEyMDU2LCA0MzAyNywgMTIwNDIzLCA0MTcxNiwgMTI4MjM2LCAwLCAxMjA0NzIsIAotICAgIDU1MTYsIDI4NDUsIDc3MTcsIDgwMzYsIDQxNzE3LCA3MzgyNywgNTQ0LCAxMjA0NSwgNjI3OCwgMCwgNTUxNSwgMCwgMCwgCi0gICAgOTgzMDUxLCA2NTMzOSwgNDMyMjEsIDIyMTEsIDAsIDU1MTcsIDAsIDAsIDc0ODQxLCA2Nzg4NCwgMCwgNjc4OTAsIDY3ODg1LCAKLSAgICA2Nzg4MCwgNjc4ODEsIDY3ODgyLCA2Nzg4MywgMCwgMCwgNjc4NzksIDEyNzE4OCwgMTkwMiwgNjc4ODcsIDk2MzgsIAotICAgIDEyOTc2LCAxMjY1NDYsIDEyNDgzLCAxMjM2OCwgNDE3NjksIDQyNzI2LCA0MTc2NSwgNzM2MSwgNjY2NywgNjc4NzQsIAotICAgIDc1NTYsIDY3ODc4LCA3NDM1MSwgMTEyNjQsIDk4OSwgNDI2NzcsIDY3ODg5LCAwLCAxMzExLCA5MTc5NjYsIDQzMjYsIAotICAgIDExMDAwLCA2MzgyNCwgMTMwNjgsIDEwOTMyLCAxMjg4ODAsIDY5MTcsIDc4MTU1LCAwLCA5NDksIDc4MTYyLCAwLCA2MTQ4LCAKLSAgICA4NjA1LCA0MjI1MywgNzgxNzcsIDAsIDAsIDQyNzE1LCAwLCAwLCAwLCA2Mzg3MSwgMCwgNDE3OTYsIDEyNjksIDY1MzAsIDAsIAotICAgIDY1MDU3LCAwLCA1MTQ0LCAxMjIyMSwgNDI3MTYsIDAsIDQ0MzEsIDQzMzEsIDk4MzcyOSwgMTI4Njc1LCA0MTgzNCwgNTI3OSwgCi0gICAgMCwgMTAzMzYsIDgzMTIsIDAsIDQyNzAxLCAxMjg4MjUsIDAsIDc4MTY1LCA2NjAzNiwgMCwgMCwgNjQyOCwgNDIyNzAsIDAsIAotICAgIDk4MzU5NiwgNDMwNTksIDQyNjY2LCA1MjU2LCAxMDY3LCAyNTUsIDEyMTMxLCA5ODM3MjIsIDk0OTMsIDk4Mzk2OCwgCi0gICAgNDEwMTQsIDExNzkzLCAxOTQ5MjAsIDAsIDc0Mzk0LCA0MzQ2MCwgMTA2NTMsIDQyNzIzLCA5ODM4NTQsIDExOTYzMiwgMCwgCi0gICAgNjU2MCwgNzAxNiwgNzQyNzQsIDk4MzYxNSwgNDM1NTYsIDM5MjksIDY3OTc3LCA2NjE0LCAyNzY4LCA5MjUwNCwgOTc0NiwgCi0gICAgNTEzNSwgMTE4MTEsIDEyNzk2LCAxMTk1MywgMCwgNjk3NjEsIDUxMzksIDM0NiwgNzQzMDMsIDYzMDUsIDEyNzk1LCA0Njc1LCAKLSAgICA1MTY4LCA3ODU1MiwgMTI3NzUzLCA3NDMxNSwgNzQzNjEsIDgyNTMsIDg4MTcsIDExMzYsIDAsIDQzNTYzLCA5MjIzMiwgMCwgCi0gICAgMTk0NzUwLCA3MzkyLCA4MjMwLCA5MzY1LCAwLCAwLCA5ODM2MDcsIDAsIDAsIDQwNDEsIDAsIDIzNTcsIDQzMjQwLCAKLSAgICAxMjc4NiwgMjI5LCAxMTk4ODUsIDExOTg4NCwgNDQwMDQsIDcxNDIsIDExOTg4MSwgMTIzNTAsIDY1NTU0LCAxMTk4ODIsIAotICAgIDExOTg3NywgMTE5ODc2LCAxMjc4NSwgNjM4NjMsIDQzNzk1LCA3NzcwLCAxMDcxMiwgNjQ4NTMsIDEyNjg2LCAxMTg5MTYsIAotICAgIDQyMzc1LCAwLCAxMjcyMzgsIDY2MzUyLCAxMDQ3MCwgMCwgMTEwNTksIDEwNzkxLCA5MTc5NDQsIDQ1MCwgMTE5MzI4LCAwLCAKLSAgICAxMDQzMiwgMTIwOTcsIDU0NTAsIDY0NjkxLCAxMjMzLCAwLCA0NDAwOSwgNzgyODQsIDY2MzM4LCAwLCAwLCAxODM5LCAKLSAgICAxMTg3OTksIDk4MzIxOSwgMTA5MjcsIDE3MDEsIDk4MzY2NCwgMjM4OCwgNDE3NDksIDQxNzYxLCA1NDUzLCA4MzYxLCAKLSAgICAxMTk4NjUsIDQxNzU4LCA1NDQ0LCA0MTc2MywgNjQ4ODksIDcxNDMsIDkyNDkzLCA3ODY3NywgMCwgOTI0MjksIDc4MTc0LCAKLSAgICA2NjQzMiwgODgwMSwgMzA1MywgNDM0MCwgOTgzMDQ0LCAwLCA2NTgxMiwgOTE3ODMxLCAwLCA0MTgyNCwgNjc5ODUsIAotICAgIDEyMDIwMywgMTk0ODAwLCAxOTQ4MDMsIDQyNzAwLCAxOTQ4MDUsIDEyNzk4MCwgMTk0ODA3LCA3ODY3NiwgOTIzNTYsIAotICAgIDE5NDgwOCwgMCwgMCwgNDQ5MywgNDMzNiwgMCwgMjMxNCwgNDM2MDIsIDc4ODI2LCAxMTkzMjUsIDE5NDgxMSwgNDI0MzksIAotICAgIDY0NjM4LCA0MjMyNywgNDM1MjgsIDQ0ODksIDcxMzMxLCAwLCAxOTQ3OTMsIDE5MTIsIDQyMzg1LCAxMDMwNiwgMTAzNzAsIAotICAgIDAsIDAsIDg4NjcsIDEwMjUwLCAxMDI1OCwgMjcxMiwgMTYzNSwgNzg4MjEsIDE0MTAsIDkyNjcxLCA5ODMyNTAsIDExODg3OCwgCi0gICAgMCwgMCwgOTkxOSwgMTIwNTI4LCA1NTksIDEyODE1NywgNDE4MjUsIDEyNzk3NSwgNzgxODgsIDQ4OTIsIDc0MDE2LCAKLSAgICAxOTQ3ODEsIDY1NDIsIDQxOTU3LCAxMjg4NjUsIDU3NzcsIDAsIDc1OSwgNjU3NDksIDIwNzksIDY1MjQ4LCAxMjc4OCwgCi0gICAgNjQ0ODcsIDY0NTUyLCAwLCAxMDIyMywgNDIwNjIsIDAsIDAsIDEyNjU3MywgMzY2OCwgNjU3NTQsIDQzNTYwLCAxMjIyNiwgCi0gICAgNjc5OTEsIDY1MTQ5LCAyMzQwLCA0MTk1OSwgMTk0Nzg2LCAxOTQ3ODUsIDE5NDc4OCwgNDM2MTgsIDY1NzQ3LCAxMDkzNywgCi0gICAgMjk2MiwgMCwgMjMyMSwgMzU4NywgNjU3NDUsIDkyNDM2LCA4OTIxLCA5OTUyLCAwLCAwLCA0MjcxNCwgOTk1MSwgNDM0MDksIAotICAgIDE5NDc3MCwgMjk0OSwgNjYwMTIsIDE5NDc3NSwgMTk0Nzc0LCAyOTU4LCA2ODM1OSwgNDE4MjAsIDIzMDAsIDIzOTUsIAotICAgIDEyODU2MywgOTk3NiwgMTIwMDQzLCAxMjAwNTAsIDEyMDA1OCwgNjgyMjAsIDEyODE0MywgNDI4MDksIDQyODA3LCAwLCAKLSAgICAxMjAwNDYsIDEwMTk4LCA0MTUwLCA2NDM3MSwgODMxOCwgNDE3OTAsIDY3OTc2LCA0MTg5OCwgMjM2MCwgNDE3OTQsIAotICAgIDkxNzk0MiwgNzEzMTQsIDEyNzgxOCwgMCwgMCwgMjQxOCwgOTgzMDk4LCAyNDExLCAxMTMzNiwgNzk5LCA2MzgyMywgCi0gICAgMTAyNzYsIDEwMzA4LCAxMDM3MiwgOTE3NTQxLCA0MTc3MiwgNDI4MTMsIDIzMTcsIDEwMjYwLCAxMTg5ODAsIDU1Mjg0LCAKLSAgICA5MjIwMywgMCwgMTAzODQsIDk4MzIyMCwgMCwgMCwgNzc1MywgMjM1MSwgNjY1NSwgNjQ0ODksIDY5OTMxLCAwLCA3Nzg3MiwgCi0gICAgNDQ0MywgNDI3NzksIDIzMCwgMCwgMCwgNDM1NDksIDQ4NTUsIDQyMTUwLCA2NTczOSwgNTQ0MSwgNDE4OTYsIDEwMjg4LCAKLSAgICAxMDMyMCwgMCwgODU1LCA3MDQ2LCA2MTA5LCA2NTA0NSwgNjM4MzksIDc4MTk4LCAyMDQ5LCAxMDA5OCwgMCwgNzQxNDUsIAotICAgIDEyNzk0MywgMTAyNjQsIDEwMjgwLCA5MTg0LCAxMDM3NiwgNzAxMywgNDQ2NywgMCwgMCwgMCwgNDE4ODcsIDAsIDQ4NjIsIAotICAgIDk3MzUsIDY1MzcsIDEyMDU5MSwgNzQyODYsIDM5MTQsIDkyMTc4LCA5Mzk3NiwgOTA2NSwgMTI5NjEsIDAsIDAsIDkyMjUzLCAKLSAgICAwLCAyODksIDAsIDQ2OTQsIDExNDIwLCA0NjkwLCAwLCAxMjA1MTQsIDkxNzk3OCwgNDY5MywgNzM4OTMsIDQyNzI0LCAwLCAKLSAgICA0Njg4LCAxMjA0NTQsIDAsIDAsIDY3OTk0LCA4MjM4LCAzMTEwLCAxMjAxNjIsIDk4MzkwOCwgMTIwMTYzLCA2NTI4LCAKLSAgICAxMjc1NTMsIDQzMDM1LCA2OTg5OCwgMjE4LCAwLCAxNTIwLCAwLCA0Nzg2LCAwLCA0MzIyNSwgNDYwMiwgMCwgNzgxNjcsIAotICAgIDEwMDg4LCA2NTQ4LCAwLCAxMjAxNTYsIDQzOTc4LCA4OTg4LCA4ODg4LCAwLCAwLCAwLCAwLCAxMDY2NiwgMCwgNzM5MDIsIAotICAgIDY5NzQwLCAwLCAwLCA5OTc1LCAxMjgwMzksIDExOTkwMiwgNDY4OSwgODkzMiwgMCwgNjU1NjAsIDExOTIwOSwgNzQ0NDEsIAotICAgIDc4ODEwLCAwLCAwLCA2Nzk4NywgMCwgMCwgMCwgNjc5ODksIDAsIDEwMDY1LCA4MjA3LCAwLCA5MjYxMywgMTI4MDExLCAwLCAKLSAgICA2NjIsIDAsIDkyNDQsIDE5NDg2MywgMCwgMTE5MjYxLCA5ODM0MjgsIDAsIDAsIDAsIDQxOTI5LCAwLCAwLCA2NjY3NCwgCi0gICAgNDE5MjYsIDEyMDQwOCwgMTIwNDQzLCAxMDUxMywgNjQ2MzcsIDE5NDg2MiwgNjgwMTMsIDUyLCAxMzExOCwgNjQ3NSwgMCwgCi0gICAgMTIwMzQxLCAxMjA5NSwgMTAyMjUsIDQ4MTIsIDkyNTc4LCAwLCA2Nzk5MiwgNzQwODUsIDAsIDM5NzgsIDAsIDkxNzk0NSwgCi0gICAgMTI3ODIzLCAxMTU4MiwgMTIwNzYxLCAxMjI4MSwgMCwgNjU0NCwgMTMyNDEsIDkzOTYxLCA2OTc4MiwgMTI4NTU3LCAKLSAgICAxOTQ4NjAsIDExNzY1LCA2NTI1OCwgMTAzNjksIDAsIDE1ODUsIDcxOTIsIDEwMjQ5LCA0MjIsIDE1MDAsIDIwMzYsIDk4NiwgCi0gICAgMTk0ODU5LCA2NDM5NCwgNTc4MSwgNTU5OSwgNjQyOTQsIDI0OTQsIDEyMDQ1MCwgNDg2MSwgNzQwMjEsIDY0MzM0LCAKLSAgICA3ODIwMywgMTI3ODA4LCAwLCA5MjI2NiwgNjUxMDIsIDg5NjEsIDY1ODQyLCAxMDI0MywgMTAyNDUsIDc0MTkxLCAxMjA0MTAsIAotICAgIDAsIDEyMDQ1MywgNjQ4MjEsIDk0NzgsIDI1MDgsIDkyNjgzLCAwLCAyMDIsIDEyODI0NiwgNzQxMzEsIDEyNDIsIDY1NTE0LCAKLSAgICAwLCA2Mzk0MCwgMTI4NzA2LCA2NDUzMywgMTIwMTI5LCAwLCA2Nzg0MiwgMTE5OTAsIDkyNDMwLCA2MzkzOSwgNDMzNzUsIAotICAgIDY1NDQwLCAyNTA0LCAwLCA3ODY3MSwgNjQ4MjksIDk4MzkxMCwgNjk0MywgOTE3OTM0LCA1ODU5LCAwLCAyODU4LCAKLSAgICA5ODMzNjEsIDc0Mjk0LCA5ODM5MTQsIDY5MjM5LCAwLCAxMTkwMjcsIDEyOTkyLCAyNzUzLCAxOTM2LCA3MDA3OCwgOTI1NzQsIAotICAgIDI3NTEsIDEyNjYyLCAyNzYzLCA4OTUzLCA2NDcwMSwgMTA3MzEsIDEyOTIyLCA3MDUyLCA5MTc4MzksIDAsIDAsIDAsIAotICAgIDYzOTIwLCA3NDEyOCwgMjg1NiwgMTE5OTEwLCA0NywgNjk5MDgsIDEyNjk4NiwgNjU4NTgsIDAsIDAsIDAsIDc4OTksIDAsIAotICAgIDg0MTcsIDQzNzk4LCA3MDcyLCAwLCAwLCA0MDMzLCAxMjgxNjQsIDQzOTkyLCAwLCAwLCAyMTIsIDY0NjAwLCAxOTAzLCAKLSAgICAxMjMyMCwgMCwgMCwgMTk0NTYzLCAwLCA4OTE1LCAyNzU5LCA5NDUsIDY2ODksIDAsIDAsIDAsIDAsIDEyOTEsIDc0ODI4LCAKLSAgICAwLCAwLCA5NTMxLCAxMzE1NSwgODUwNSwgNjgzNzksIDEyMDYyLCAwLCAwLCA2NTQ4NywgOTIxODksIDQxODM3LCAxMjA2MTEsIAotICAgIDEyMDQzMiwgMCwgMCwgMCwgMTIwNDMzLCAwLCA2MzkzNSwgNzM5NjIsIDEyMDgwNiwgNjQ3ODcsIDQzNTI0LCAwLCA2NDQyNiwgCi0gICAgMCwgMTk0OTQ4LCAwLCAwLCA2NTY2NCwgNjY5MywgOTg0MywgMCwgODY3NCwgMTE5ODg3LCAxMjg4MTIsIDkyNzE1LCAwLCAKLSAgICAxMjYyNCwgMCwgMTY3MywgNDgxMSwgOTIzODMsIDU5ODYsIDkzMzgsIDMwNDYsIDc0NDgwLCA1OTg1LCA5MTc5MjgsIAotICAgIDExOTU5OCwgOTgyMCwgMCwgMTIxODcsIDAsIDAsIDU5ODQsIDAsIDQzMzA4LCA0MzkzLCA2NzY1MCwgMCwgMCwgMCwgMCwgCi0gICAgNzQ4MjYsIDY0NzMzLCAwLCAwLCAzNDkxLCAwLCAwLCAxMjgyMTksIDM1MTQsIDY1NDg1LCAwLCA3NDkyLCAwLCA3NDYwNSwgCi0gICAgOTI0ODMsIDc1MTQsIDk4MzM2NywgMCwgMTk0NzMxLCA3NTAyLCA3NTg3LCA2ODM1MywgMCwgMCwgNjM5MjUsIDAsIDc2MTAsIAotICAgIDIxOSwgMCwgMCwgNjkyLCA0MzU4OCwgNzQ0MzMsIDQxNjM1LCA0MzI0MSwgOTY4OCwgNzE0NywgOTUzNSwgMCwgOTM5OTEsIAotICAgIDAsIDY0NTMwLCAwLCA2NDYxMCwgMTE4MDQsIDAsIDcxNDksIDc0NTMsIDAsIDgwMTMsIDAsIDkyMzAxLCAwLCA4ODk1LCAKLSAgICA1MjUzLCA3MDAyNSwgNTQ1OCwgMCwgMjg2NiwgMCwgMTI3ODYwLCA2NTExMSwgNjg0MzMsIDY3MDAsIDEyMDQ4NCwgMCwgCi0gICAgMTIwNTgzLCAwLCA4OTYyLCA3Nzk2MCwgOTY0MSwgNDM2OTQsIDcwNTksIDk4MzY3NywgMCwgOTYwNCwgNzg3MDAsIDc0NDEsIAotICAgIDYzODI2LCA2Nzk3MCwgMTE4OTQxLCA2NDM5MiwgMTk0NzM1LCA5ODM2ODcsIDI4NDQsIDk4Mzk0MSwgNDE5NzQsIDAsIAotICAgIDEyMTM5LCA2Nzk3MSwgMCwgMCwgMzM1OCwgNjUyOTUsIDAsIDMxMDQsIDE5NDczNCwgMCwgMTk0NzY1LCA5ODMyMzMsIAotICAgIDUzMDgsIDAsIDI5MCwgMCwgMCwgMjg2MiwgMjc5MiwgMTk1MDg4LCA5ODMwNzAsIDAsIDMyNjgsIDY2NTkxLCAwLCA2NTUyLCAKLSAgICA0MjM2NywgNzAzNSwgMTIwNTU4LCAwLCAwLCAxODE0LCAwLCAxMDI0MCwgOTIzMzgsIDc0MzA1LCAwLCA3NDUyOCwgNjU5MDMsIAotICAgIDAsIDQyNjQ2LCA3NjA2LCAyNTkxLCAyODM3LCA0MzQxLCA3Nzk1NiwgNjQ0ODIsIDEyNzMzNywgODE2MywgNjUyNzAsIDAsIAotICAgIDc3OTMyLCAwLCA5MTEyLCA3NDQzMSwgODYzLCA5NDkwLCAxMTk4OTgsIDEyODM0OSwgNDMzMjMsIDEyMDUxMywgMTE5ODk3LCAKLSAgICA5MDcxLCAxMjczMzMsIDAsIDM2NTQsIDc3ODksIDk2MzcsIDAsIDI1MzUsIDY1NTA0LCA3NjUzLCA0MDk5MywgMTE5ODk5LCAKLSAgICA2NjU4NywgMTk1MDk4LCAwLCA5MjQwMSwgOTgzODk0LCAxMTAwNiwgMTI5MjcsIDc4MDcsIDgwNzMsIDAsIDEwNjI5LCAwLCAKLSAgICA3NDA4OCwgMzA1NiwgMTA4MjMsIDEyODc5NywgMTI3MzI3LCA4NzYyLCAxMDUwOCwgNjk2ODksIDczNzcwLCA0Mzk2OSwgCi0gICAgNDMxOTMsIDEwNzM3LCAzNDYzLCA5ODMwNjUsIDAsIDY2NjMzLCA4Njk1LCA0ODE1LCAxMTMyMiwgNTgxMSwgMTIzNDUsIAotICAgIDcwNDksIDExOTkxMSwgNTE5NSwgMTk1MDgxLCAwLCA2NjYzOSwgMCwgMCwgMCwgMTI4MDQxLCAwLCA5MjM4NSwgMTI2MiwgMCwgCi0gICAgNjU2MSwgMTk5MzksIDAsIDAsIDEyODUzNSwgMTE5OTA2LCAwLCAwLCA5ODMwOTcsIDAsIDk4MzY2NywgMTE5OTA3LCAKLSAgICA2NDYxMiwgMTE5OTEsIDAsIDAsIDAsIDE1MDIsIDkxNzU2OCwgMCwgOTEwNywgMTI3MzE2LCA1NzAyLCAzNjU1LCA2NzY2MSwgCi0gICAgODQzMCwgMCwgNzQxMzIsIDEyMDc1OCwgMCwgNzQwNTcsIDk2MDMsIDAsIDUyNTQsIDEyMDc0MiwgNzcyNCwgNzQzODgsIAotICAgIDY4Mzc1LCAxMDc5NiwgNTEyOSwgMCwgMCwgNTkwLCA3NTc5LCA1NjE0LCA1ODkzLCA5MjI4MCwgMTE3MjAsIDkyNDk2LCAKLSAgICAxMTcyMSwgMCwgNDc5OCwgMCwgMTE5MzE2LCA2NjAzOCwgNDc5MywgNjc4NTEsIDExNzI2LCAxMjc1NDEsIDc0MjA0LCAKLSAgICA2ODYxMCwgMCwgNjg2MjYsIDg5NCwgMzAwLCA5MTc4MTMsIDEyMzA2LCA2NjIzNSwgODAwNCwgMCwgMCwgMjU2MiwgCi0gICAgMTI2NTU1LCAwLCA0MjUwMywgMCwgMTE2NTIsIDAsIDAsIDExOTI0MSwgNjQ2OTksIDEyNjU2OSwgNTA5NiwgNTA5NSwgCi0gICAgMjg2MywgMzQyNCwgOTIyNDQsIDEwNDU0LCA0MjUzMCwgNTA5NCwgMTE5NjM4LCAwLCAxMzE1NiwgMCwgMTA4MzIsIDUwOTMsIAotICAgIDAsIDY5ODUyLCAwLCA1MDkyLCAxMDcwOCwgMTEzMjcsIDAsIDUwOTEsIDE3NiwgMCwgOTE1MywgNDEwNCwgNzg1OTksIAotICAgIDc4NjAxLCAxMjE1LCA0MjcxMiwgNTc0NCwgMTIyNzIsIDk4MzIsIDExNzc3LCA3MTI5OSwgMTI3MzcxLCA0Mjg4MSwgMCwgCi0gICAgODk4MCwgMTE4OTg4LCA2Nzg2MSwgODg0NCwgNzIwOSwgMCwgMCwgNDI3OCwgMCwgMCwgMTk0Nzg5LCAwLCA5MDc0LCA0MzQ4LCAKLSAgICAwLCA2NTU1OCwgNjU5NDYsIDgxMTMsIDcwODcsIDUyNTUsIDE3ODYsIDY2MSwgMCwgMCwgMCwgNzQ0MjMsIDcxMzQ1LCA1ODYsIAotICAgIDc0NDE0LCA2NDM1OSwgMTI2NywgMTI4MjY5LCA2NTQ2OCwgMCwgNjU3MzEsIDAsIDEyNzE3OSwgMzYyMSwgMTIwNDczLCAKLSAgICA2NjY2NiwgNjQyMTEsIDAsIDY1NjIsIDEyOTI4LCAwLCAxMjI4LCA2NTQ5MCwgMTEzODMsIDAsIDAsIDAsIDE3MTQsIAotICAgIDc0NDA2LCAxMjc4MzEsIDAsIDk4MzkyMSwgMCwgNjYyMjUsIDAsIDAsIDQyNjYwLCAxMTQzNiwgMjA3MCwgNjQsIDEyMDY5NCwgCi0gICAgMCwgMTAyOTEsIDEwMzIzLCAyODI2LCAwLCAwLCAwLCA0MjAwOCwgOTcwOCwgNDI3MTAsIDAsIDQyMDExLCA0MTk5OSwgCi0gICAgOTIxNjQsIDEyMjA2LCA1ODM5LCAxNzAyLCAxMjQwLCA3NDA2NSwgNjI4NiwgMCwgOTgzOTY5LCA2NTgzMywgNzc4NDgsIDAsIAotICAgIDE3NjUsIDAsIDAsIDY1NTg4LCAwLCAwLCAwLCA4NDAxLCAwLCA0MjAxNCwgMCwgNzAzMCwgMTk0NzA0LCAxMDQ3OSwgCi0gICAgNjQ5NTksIDI4NTIsIDAsIDAsIDAsIDAsIDEyODU4NiwgOTE3OTUxLCA2OTYzLCAwLCAxMjY2NywgNjQ1NDAsIDc0Nzg2LCAKLSAgICAxMDE0NywgMTI5MzUsIDEyNzU2OCwgMTI2NDgzLCAwLCAwLCAwLCA3ODc1NywgMCwgMCwgMCwgMCwgOTk5NCwgMTI0NjcsIAotICAgIDI4NjQsIDY0NzE5LCAxMTQ4LCAxMDQzNSwgMTE0NjIsIDQxNjc1LCA3MDg0LCAyNzY1LCAwLCA0MzM4MiwgMCwgMTIwNzE5LCAKLSAgICAxMjgxODgsIDkyNTE2LCA2NjY2MiwgMCwgNzgxMzMsIDkzNjQsIDE5NDY4NSwgNzQ0MTYsIDAsIDAsIDc3OTg4LCAyNjMsIAotICAgIDEwNDQ5LCA0MTI4OCwgMCwgNDE4MzksIDc4Mzg3LCA5ODM3NDIsIDc3OTg2LCAwLCA2OTMxLCA2OTcyMiwgNjQzNTUsIAotICAgIDcxNzcsIDcwMTA1LCAwLCAwLCAwLCA0MjYyLCAxMDI4NSwgMTA3MjIsIDQyMDIwLCAxMjY1NzUsIDY4MDYsIDY5OTIsIAotICAgIDQyMDE5LCAwLCA0MTI5MCwgOTgzNzE2LCA3NTAsIDAsIDcxMzA0LCAxMDE2MywgNjM5MTMsIDcxMzAwLCA3MDMyLCA1OTU0LCAKLSAgICA2NDkzMSwgNDMxNCwgMCwgMTk4LCA2ODQ1MywgNzMwLCAxMjAwOTQsIDYzOTA3LCA3Nzk5MywgNzg4OTEsIDEzMTY1LCAKLSAgICA3MTA3LCA3NDE3MSwgNDI4MDQsIDY3OCwgODI0MCwgNzgwMTUsIDEyODc4NCwgNDEzNzgsIDExMDA4LCA2OTM4LCA3MDAyNiwgCi0gICAgOTI2MzcsIDIwOTcsIDY2MjQ2LCAxMjA1NjAsIDAsIDAsIDAsIDM4OTIsIDY4NjMyLCA2OTY0MiwgNjcxMiwgNjYwNDUsIAotICAgIDQxNDcwLCA2NDgwNSwgMCwgMCwgMTI4MjE1LCA2NDgwMSwgMCwgNDk3LCAxMjEwMCwgNTk1MywgOTI2NjcsIDc3OTYsIAotICAgIDY5NjY5LCA0MzI1NCwgNzM4MzEsIDAsIDEwMjkzLCA1OTUyLCAxMjgxLCA0Mzc0NywgMCwgMCwgMTA2NzcsIDYwNCwgCi0gICAgNDEwOTcsIDkxODIsIDE4NTksIDAsIDkyNjAzLCAzNDI1LCAxMjc0ODgsIDAsIDI4MzYsIDAsIDAsIDk3MDcsIDAsIDQzMjAyLCAKLSAgICAwLCAwLCA2NTE5OSwgMTczOCwgOTE3ODE4LCAxMjgxNTgsIDI4MzIsIDkyNzAyLCA5NjcwLCAxMjkzNywgMCwgNjYzNzQsIAotICAgIDkxNzk1NiwgMCwgMjgyMiwgNjgxMjIsIDQ0MzYsIDkyNTE5LCA5ODM3MjMsIDczNzUyLCAwLCA2NDg3MiwgOTIzNDAsIAotICAgIDEzMzEsIDAsIDAsIDAsIDEyNzA4LCAwLCA1MDkwLCA1MDg5LCAxMjc5NzcsIDAsIDExOTEwOSwgMCwgMTI4NjgxLCAzMTksIAotICAgIDExODg0NywgNDM0NzksIDk0NzcsIDAsIDAsIDUwODcsIDkyMzI1LCA3NjQwLCA5NiwgNTA4NiwgMCwgOTIzNzksIDAsIAotICAgIDUwODUsIDY0Mjg2LCA5MjY2NSwgMCwgNDE0MjIsIDAsIDExOTkwMSwgNDIzNTYsIDM3NzIsIDAsIDAsIDUwMTEsIDAsIDAsIAotICAgIDEyNjU4NywgMCwgMTI3MTY1LCAxMjcyNDEsIDY2NzcsIDc2MDEsIDAsIDU5MSwgNjQ0MTksIDExODk1MywgOTIyNjIsIDAsIAotICAgIDExODkyMywgNzAwODQsIDAsIDEwOTM5LCA2MTA2LCA2OTMzLCA0MTI3MSwgNjc2MCwgNzEzNDMsIDQ1MzQsIDQxMjcwLCAKLSAgICAxMjg4NzYsIDAsIDY1NTc0LCAwLCA5MjI0LCA2OTg1MywgMzY3MSwgODk3NiwgMTI2NDc0LCAwLCA0MTI3NSwgNjM3MiwgCi0gICAgMTI4MDg0LCA1NTI2MSwgNzk2MywgNjM3MSwgMCwgNTY4LCAwLCA0MTI3MywgOTgzNzMwLCAwLCA2NzI4LCAwLCA5NzE1LCAwLCAKLSAgICA4MjU4LCAxMTc1MywgNzQ4MjAsIDAsIDk2MDIsIDExODkxOSwgNDIsIDAsIDQzNjg4LCAwLCAwLCA3NDU4LCAwLCAwLCAKLSAgICA2NTM4NSwgMTE5OTAwLCAwLCAxMTk1OCwgMCwgOTE3ODIyLCAwLCA2MjU0LCA0MjcyMSwgNjYzMzYsIDgwNDUsIDExNTUwLCAKLSAgICAwLCAwLCA5ODM1OTcsIDQyODU4LCAxMTc4OSwgNjU4NjgsIDU1NTcsIDEwMTMzLCA5NzM3LCAxMzEwOSwgMCwgOTQ2NywgCi0gICAgNTU1OCwgODg3OCwgMTI4MTM2LCAxOTUwMzYsIDc0NTEsIDY3MDYsIDEwMTQ2LCAwLCA5MDg2LCA2NDU2NiwgMCwgNjQ1ODQsIAotICAgIDc0MzcsIDc0NTQsIDEyNTk0LCAxMjg2OTAsIDY4MzYyLCA0NTQ2LCA3NzMxLCAwLCA3MDA0OCwgNzQyNDMsIDAsIDM4MDUsIAotICAgIDAsIDE5NDU2NSwgNDQwMDEsIDQxMDA4LCAwLCA2MzA3LCAxOTk0OSwgOTgzNzkwLCA3NTQ0LCA5ODMwNDUsIDQzNDY5LCAwLCAKLSAgICAwLCAxMDE1MiwgNjQ0MjIsIDY1MDkxLCAxMTkxMTMsIDc2MDIsIDY0NzI5LCAwLCA0MzUyMSwgMCwgNDIzMDIsIDQzNzExLCAKLSAgICA0MzUyMywgNDE0NDcsIDU1NTksIDAsIDg3MDQsIDIzOTcsIDU1NTYsIDAsIDAsIDAsIDkwMTEsIDk2MzAsIDkyNjMzLCAwLCAKLSAgICA5Mzk5OCwgNTUwNiwgMCwgMTkxMSwgNjY2NTIsIDAsIDk5NjEsIDg4NDUsIDY2Njk4LCAwLCAxMDc5MiwgODg4OSwgMCwgCi0gICAgMjA5OCwgMCwgNjQ3NTEsIDAsIDY2NjIyLCAwLCAwLCA3NDM2NCwgMCwgMCwgOTgzODA1LCA3NDM2NSwgNzU1MiwgMCwgMCwgCi0gICAgNjUzODQsIDcyMjMsIDQ1NTksIDAsIDE5NTYsIDQzMTM4LCA3MDI0LCA2NTcyOCwgNjQ1MDEsIDEyMTAsIDE5NTA3NywgCi0gICAgNjUxNzUsIDEwMTg0LCA0MzE0MCwgNDM2NTQsIDAsIDAsIDAsIDM4LCA4NTMzLCA2NjY2OSwgMTE5MTI0LCA5ODMyOTMsIAotICAgIDk4Mzc5MiwgMCwgNDM1NywgMCwgMTE5ODM3LCA5MTc4NjMsIDc0MjMzLCA5OTY3LCA3ODg4NCwgNDI4NjAsIDExOTgzOCwgCi0gICAgMTA5NDEsIDY1NzIxLCA2OTYyLCAwLCAwLCAxMTkzMjQsIDAsIDExMDE0LCAxMjc5NzIsIDg5NDIsIDEyMDAwLCA2OTIyNCwgCi0gICAgOTIyNjcsIDEyODUzNiwgMTE5NzQsIDkyMjEzLCA0Mjc3MiwgMTI3NTE4LCAxMTY1MCwgNTAxMywgOTI2NjMsIDEyNjU4MywgCi0gICAgNjYyMTAsIDExODkxNCwgNjYxMywgOTI0NzYsIDAsIDQzODE5LCA5ODM3NzAsIDAsIDY0NzE0LCAwLCAwLCAxMjE2MiwgCi0gICAgMTIxMjAsIDQzNDc2LCA5ODM3NjYsIDExMDI0LCA3NDgxMSwgNjYyMjgsIDEwNTYzLCAwLCAxMjcxOTYsIDQzNTIyLCAyNDYyLCAKLSAgICAwLCAxODM3LCAwLCA2Mzk3MiwgNjk1NywgMCwgMTIwNTU5LCA0OTUyLCA2NTcxOCwgNjU4MjcsIDU1MDQsIDY1NzIwLCAKLSAgICA2NTcxNCwgNjU3MTUsIDY1NzE2LCAwLCAxMjcwMDUsIDEyNzExOSwgMzEwOSwgNjM5NzUsIDc0MDI4LCAwLCA4MTA3LCAKLSAgICAxMTkyMzQsIDExMjcsIDQ1NSwgMCwgNjM5NjgsIDEyNzkyNCwgMzQ4MywgMTE5NTkzLCAxOTg5LCAwLCA2OTY3OCwgOTEwNCwgCi0gICAgMzUwMywgNjUzNzUsIDkyNTA5LCA2Njk0LCA0MjYzMywgMTg2NCwgMCwgNzQzMDYsIDQxNDQ2LCAyNTQwLCA3NzM2LCAwLCAKLSAgICA3NDA2NCwgMCwgMTA1MjEsIDAsIDQyMTczLCA5NzA1LCA3NDEyNCwgODYwNCwgNjk1NSwgMTA5MTYsIDQzNjg0LCA2MTQ5LCAKLSAgICAzODg3LCAxOTk1NiwgMTQxMSwgMjgyNCwgMCwgMTAxMDYsIDEyNzg2MiwgMTQwMywgMTI4ODM5LCAxMzQ3LCA5NjMxLCAKLSAgICA3NDQ0NCwgMCwgMCwgMCwgMCwgODY0MCwgMCwgMjU4LCAxNjU0LCAwLCAwLCAwLCA0MzMxNCwgMCwgMCwgNDA0MiwgMTE0NzgsIAotICAgIDI4NzMsIDYzOTc3LCAxMTUyMiwgNDE2NjgsIDg1NDksIDEwODYxLCAwLCA2Mzk3NiwgMCwgNjg2MjMsIDAsIDc0NTg1LCAKLSAgICA0MTM5MSwgMCwgOTE3OTAzLCAzNzYsIDY5ODcsIDkyMjEsIDAsIDAsIDg4MjMsIDEyODY5NywgMTI5NDMsIDY1MTg1LCAKLSAgICA0MTg2OSwgMTI2MTksIDAsIDEwMTU0LCA5ODMwNDMsIDc0NDM5LCAyMDM5LCAwLCA3NDQ2LCAxNjg0LCA2Mzk3OSwgMTA5NzQsIAotICAgIDQ1OCwgMTIwNjIwLCAwLCA2OTc5MSwgMTI3MTYxLCAxMTkxNiwgNjUwMTYsIDAsIDY5NjcxLCA0MjExNSwgOTgzMTMzLCAKLSAgICAxMjI4OCwgNzgwNTcsIDAsIDE0OTMsIDQyMTExLCA3NTUzLCA0MDk3LCAxMjgxOTksIDEzMDgwLCAwLCA2NTgwOCwgNjYxMCwgCi0gICAgNjAzMCwgODA1OSwgNzUwOCwgMTMxMzEsIDAsIDk4MzQzMSwgMCwgODc5NCwgNDEyNzgsIDQxNjI5LCAxMjE1NCwgMTI4MTkyLCAKLSAgICA0MTI3NywgNjQ2NTgsIDAsIDY0MzgwLCA2NjI1LCA3NDM1NCwgMTk5MDQsIDAsIDAsIDAsIDY1MzcxLCA3MDc4LCAwLCA4MzMsIAotICAgIDAsIDYzNjksIDAsIDEwOTc5LCA0MTk1MywgMCwgNDE0MzQsIDYwNjIsIDAsIDAsIDE5OTE2LCA2OTEzLCA5MzMsIDEzNDEsIAotICAgIDk4NDIsIDY3MjAsIDY1NzQ0LCAwLCA5ODM1OTIsIDEyODI5NSwgMCwgNzQwNSwgMTAxMDUsIDY1ODEwLCAwLCA0MTYzMiwgCi0gICAgNzQ5MywgNTUyOTAsIDAsIDQxNjIyLCAwLCAwLCAxMTk1NTYsIDc0NTg0LCA3NjMyLCA5NzE2LCAxOTk1NCwgOTgwNSwgCi0gICAgNTk5MCwgOTAwLCAwLCA2Mzk1NywgMCwgMCwgMzYxMiwgMCwgNjQzNzYsIDkzOTg3LCA1Mzg5LCA5MjU5NywgMCwgNjU5MzgsIAotICAgIDI4MzksIDk2MjEsIDU4MiwgMCwgNzQzNjgsIDM3NDksIDY5NDksIDc1NjksIDc0MDYxLCAwLCAwLCA2OTU2LCA0NDAzLCAKLSAgICAxOTk2MiwgNjU1NTksIDMyOTksIDAsIDkxNzU2NiwgMTE5MTI3LCA5MDAyLCAwLCA3NDM3MiwgNzQyMzYsIDg0NzgsIDc1OTgsIAotICAgIDU0NiwgNDI0NjksIDY1NTY5LCAxOTE4LCA5NTQyLCA0NzIsIDc3MTYsIDEwMzE5LCAxMDM4MywgNjk5NiwgMCwgNjM5NTIsIAotICAgIDg0MjUsIDM2MDIsIDgzMjgsIDExNzY0LCAxMTg4OTQsIDAsIDY5Nzk2LCA0MTE4MywgMTI5MDcsIDEwMjcxLCAxMDI4NywgCi0gICAgNjg0LCA0MzUyNSwgMCwgMjg1NCwgMTE5NTg2LCA0NTkyLCA2NTc1NSwgMCwgOTIyNTYsIDExOTYzLCA0MzYyMCwgMCwgCi0gICAgNzgyNDksIDAsIDEyODU1MSwgMTI4ODA5LCA5ODgxLCA0MzExNSwgNjU3NTcsIDM0MTUsIDExOTEzMSwgMCwgODY0OCwgMCwgCi0gICAgNjc0MSwgNDMwNDcsIDAsIDEzMTgwLCAxMjg1MTcsIDQxOCwgOTE3OTcyLCA2NDQ5NSwgMTAyOTUsIDEwMzI3LCAxMDM5MSwgCi0gICAgNDE3NTIsIDc0MzM5LCA4NjQxLCA0MTQ0OSwgMCwgNzQxMDAsIDAsIDEwOTExLCA2OTQyLCAwLCAxMDI0LCA0Mjg0OSwgCi0gICAgNDE3NTEsIDY5Nzc2LCA4OTQxLCA5ODM1NTYsIDQ1NTQsIDAsIDkwMjMsIDExNjg1LCAwLCA5OTI4LCA3ODYxNywgMCwgCi0gICAgMTE0MzcsIDQzNzQxLCA5MjE2MywgMTIwNzAwLCA2Mzk2NywgOTgzNDgzLCA0MTIwNiwgMTIwNzI0LCA5MDQ5LCA0MTE4NSwgCi0gICAgNDMxNjYsIDAsIDExNjgwLCA5MjYxOSwgMTE2ODYsIDc4NTQ0LCA2NTIyNCwgNDU2NSwgNDY1NSwgMTE5NTUzLCAwLCAKLSAgICA5MjE4MywgNjQ1MjMsIDEwMzQzLCAxMDQwNywgMCwgNjY2NzEsIDExNDY2LCAwLCAxMjgwMDMsIDQyODkwLCA3NDAxMywgCi0gICAgMTIwNTAsIDY4MjAxLCAyODYwLCAwLCAwLCAwLCA0Mjc5MiwgNTc0MywgMTA0MjQsIDEyMDY1LCA0Mjg3MiwgMCwgOTIzNDIsIAotICAgIDAsIDg4NzUsIDAsIDAsIDkxNzk5MSwgNzUzMSwgMTI4NDcsIDI0MTMsIDAsIDc4NjM1LCA5NjIsIDAsIDEyODU1LCA0MTE5NiwgCi0gICAgNDI1NjQsIDAsIDE1ODIsIDk4MzcxNSwgNTUwOCwgMCwgMCwgMCwgMTA4MDEsIDY5ODc2LCA5MjM1NCwgMCwgNzE3MywgNDk2LCAKLSAgICAxMDQzOSwgNDMxMywgNjQ2MDcsIDY5NjM4LCA3ODYwLCAwLCA5MDYsIDQyNzkzLCAyODQyLCA2NDA1LCA2NDcyMiwgMTMxMzIsIAotICAgIDc5OCwgNjQ2OTQsIDEyODAxLCA4NDA2LCAxMTUzLCA5MjE3MywgNjQ3ODgsIDAsIDgwNTQsIDkxNzQsIDEyODY1MiwgCi0gICAgOTE3OTc2LCA5OTY0LCA3NDQwOSwgNDE2MTEsIDQ2NDIsIDY2NTc0LCAxMTU1NiwgOTE3OTgyLCAwLCA3ODg1NywgNDIwODksIAotICAgIDc4ODU1LCA5MDA4LCAwLCAxMjY1OTIsIDE5NTA5NiwgNDIwNzksIDkxNzk4MSwgNzc5MjQsIDQyNTEzLCA3NzkyNywgCi0gICAgNDI4NDIsIDczOTg1LCA2NTI4NSwgMTE4OTc0LCAxMjcwMDMsIDk4MzcwMiwgMCwgMCwgMCwgMTEzMzUsIDY0MDY5LCAKLSAgICA0MjA5MywgMzkyMCwgMCwgMCwgMCwgMCwgNDU4MCwgNDE5NjcsIDk4MzczMiwgNjQzODQsIDkyMTY3LCA5Mzk4NCwgMzAyMSwgCi0gICAgNDIwMDQsIDAsIDAsIDQyMzE3LCA0MTk5OCwgMCwgNjk0NiwgMCwgMCwgMCwgMTI4MTkzLCA2NTIwNCwgMCwgNjgxMTMsIAotICAgIDQyNjkwLCA5ODgwLCA0MjAxMCwgNzQ4MjQsIDY0NTg5LCAxMDExMSwgNjQ4NzUsIDEyNzg4MCwgNjgzOTksIDQzOTk4LCAKLSAgICAxMTM2MCwgMCwgMCwgMCwgMTE4ODI2LCA0MjE0OSwgMCwgMCwgMCwgNjQ5NDEsIDc3OTE5LCAxMjA0MjEsIDEyODA3NywgMCwgCi0gICAgNTUyNDcsIDQxMTAsIDY2MDA1LCA2OTU5LCAxMDkyOSwgMTE5MTEwLCAwLCA2NjcwMywgNzc5MjEsIDg2MTcsIDQxOTgyLCAKLSAgICA2MDI1LCA2OTI0MiwgOTgzMTc2LCAwLCAwLCAwLCA5NTk3LCA0MjA5OSwgNDMxNzIsIDk4MzM3NiwgMTAxMTcsIDk4MzE2OSwgCi0gICAgOTIyOTcsIDQxNjM2LCAwLCAwLCAxMjA2ODEsIDgzMDEsIDAsIDAsIDE4NywgMCwgNjU2NjksIDEyODMzOSwgNDk2MywgMCwgCi0gICAgMTI3NTE3LCAwLCA4OTY0LCA2NTY3NiwgNzc3NSwgMCwgNDE5NDgsIDAsIDAsIDAsIDQxOTQyLCA2NTQ0OSwgMzE2MCwgCi0gICAgMTAwODEsIDEzMjI2LCA0MjEyMSwgNDI0NzUsIDQyNjYzLCAxMjgyMTAsIDQxNzY2LCAxMTkxMTQsIDY1ODgyLCA3ODg0OSwgCi0gICAgNDE3NjAsIDExODksIDkwNSwgNDgwLCAxMDk4NSwgNDE3MzMsIDY3ODU5LCA5NjI5LCA2NzQyLCAxNzQ1LCA0MzYyNSwgCi0gICAgNzM4MzUsIDc4ODgsIDAsIDM5ODAsIDAsIDQyNjU2LCA0MTUwNywgODgwNiwgNzAyMywgMCwgNzQyNzksIDk0NDcsIDc4NjUxLCAKLSAgICA3ODY3LCA2OTIxOCwgNjIzNiwgOTgzMTM0LCAwLCAxMDUwNSwgMCwgMTI4NTEsIDExODk0OCwgMzQ4LCA1NDc0LCAxMjg4NDMsIAotICAgIDMxMDMsIDAsIDQxNzUzLCAxMjg1NDAsIDAsIDAsIDc4ODQ0LCA3ODg0NSwgNDE3MzksIDc4ODQzLCA0MjUxNSwgMTA5MzEsIAotICAgIDQxNzU2LCA0MzM0NywgNDI1NjAsIDUzOTEsIDQxNzQ2LCAxMTkxNDcsIDkyNTkxLCA0MTI1OSwgNTU2MSwgNjk5MzAsIAotICAgIDI2OTEsIDAsIDY1NTUzLCA3OTMzLCA1NTYyLCA2OTgwMCwgMTI4MjY1LCA0MTI2MiwgMTI4MTQ2LCA2NDQyMSwgNzQ4NDYsIAotICAgIDQxMjUxLCAwLCAwLCAzOTc5LCAwLCAwLCA3NDgxMywgOTgzNzM5LCAwLCAwLCAwLCA5MjUyNCwgNDEyNjYsIDAsIDY2NTY2LCAKLSAgICAxMjg4MzYsIDEwNTg1LCA2NTc0MSwgNDE3MzcsIDk1NzQsIDI2NjYsIDAsIDQxNzM4LCA4MzEsIDQxOSwgMTMxMjYsIAotICAgIDEwNzE2LCAwLCA0MjgyMiwgMCwgNjQzNCwgMCwgNjkzOSwgNzc2NiwgNjQzMiwgMTI4MTA2LCA2OTkzMiwgOTE2LCA3NjksIAotICAgIDQxNzQyLCAxMTk2OCwgNzQ4MDUsIDY0MzMsIDU1NjMsIDU0NywgMTk0MywgNjQzOSwgNTU2MCwgNDk5NCwgNDg3LCAKLSAgICAxMjY1MzcsIDQ0OTcsIDM3NTQsIDEyNzA1NiwgMTIwNDI0LCA5MDM5LCAwLCA0MTc3NiwgMCwgODcxNiwgMTU5NSwgNDE2MTUsIAotICAgIDAsIDAsIDc0MjYwLCAwLCA0Mjg1NCwgNDMyMTksIDEyODcwOSwgOTgzNDYwLCAxMjE4NSwgMTI4ODc5LCA3MDA3MiwgCi0gICAgNjgzNTUsIDY4MzU3LCAwLCA0Mjg1NiwgODYzNCwgMCwgOTgzMzk3LCA0MjA5LCAxMjA3MDIsIDAsIDY1ODc5LCA0MTUzOCwgCi0gICAgNjU2MTIsIDEyNzU0MywgNjY5LCA1Njc5LCAwLCA2OTc4NiwgOTI1NDAsIDAsIDk4MzQ2NCwgNTY3OCwgMTE4MjEsIDAsIAotICAgIDY3MTEsIDQ2MCwgMCwgMCwgOTgzNDYxLCAwLCAxMjA3NDcsIDAsIDAsIDc4MDUwLCAxMTkwMjIsIDAsIDk4MzQ2MiwgMCwgCi0gICAgNzc4MiwgOTA0NCwgNDk3NCwgMTE3NjAsIDc4NDk0LCA3NTc3LCA2NTcxMSwgNDE5MTIsIDEyMTYsIDAsIDEyODA3OSwgCi0gICAgNTc5MiwgMCwgMCwgNzg1MDEsIDAsIDI5MzMsIDEyMjQ0LCAwLCA1NjgzLCA5ODMzOTIsIDAsIDc4MTE5LCAxNTQ5LCAwLCAwLCAKLSAgICAxMjAzOTgsIDU2ODIsIDYyMDYsIDg2NzAsIDEwMjU2LCA1NjgwLCA2OTkzNSwgMTAwMDEsIDEyODUxMiwgNjk3NjgsIDE0NDksIAotICAgIDEwMjQxLCA3ODI5MCwgMTI4MjI4LCAwLCAxMDU1MiwgNjQzNDIsIDQxOTIyLCAxMjg1NDgsIDg1ODQsIDY4MDMwLCA1NTY3LCAKLSAgICAyNzE3LCAwLCAwLCA1NTY0LCA0Mjg4NiwgNDE5MDgsIDQyODgyLCA1NTY1LCA5ODMyNTYsIDEyODAyNiwgMCwgNjU3MDgsIAotICAgIDY1NzA5LCA1NTY2LCA2OTgwMywgNjU3MDQsIDY1NzA1LCAxMTkwNCwgNDI4NzUsIDQzMzczLCA0MjUzOSwgNTk0MiwgODQ2OCwgCi0gICAgMTIwNTYxLCAxMDM2MSwgMTA0MjUsIDY1Njk3LCA2NTY5OCwgNjU2OTksIDAsIDY2NTk4LCAwLCA2NDY2NCwgMTA2NDcsIAotICAgIDc4NzAyLCA3ODcwMywgNzg2OTAsIDQ1NywgNzg1MDIsIDY1NzAxLCAxOTM0LCA0MzAwNiwgMTE5OTAzLCA4ODAyLCA3ODcxMCwgCi0gICAgNjUxMzAsIDExNzQ3LCA3ODcwOSwgNjA4NywgNzg3MDUsIDc4NzE2LCA0MTc1NywgNzg3MTEsIDgwNDMsIDg5NTAsIDY1Njk0LCAKLSAgICA2NDQ4NSwgNDM1MzQsIDEwNDU3LCAwLCAxMTk2MSwgNzg3MjUsIDc4NzIyLCA3ODcyMywgNzg3MjAsIDc4NzIxLCAwLCAKLSAgICA2NTUxNSwgOTQ5OSwgMTAwMzUsIDEzMDY5LCA3MTMwOSwgMCwgOTg4OSwgNjgxODQsIDQyODA2LCAwLCA3MjU2LCAwLCAwLCAKLSAgICAxNjY3LCA0MjE2MSwgMCwgNDI0MjgsIDAsIDY5MzQsIDAsIDEwODAyLCA2NDg2MSwgNjU1NiwgNzgzOTAsIDAsIDgxMDEsIAotICAgIDM2MTAsIDk4MzE5OSwgNDE3NDgsIDQ5OTUsIDk1NSwgNjU5MDcsIDExOTIwOCwgNTM1MCwgNjQzMzksIDc4MzA2LCA2NDU0OSwgCi0gICAgMTA4NzUsIDEyODY2MiwgNTQ3NywgNjU2OTIsIDAsIDEyODUzMiwgMTIwMzk3LCAxMjg5NiwgMTA0NTYsIDkxNzk1NCwgMCwgCi0gICAgMzg3NCwgMCwgMCwgOTgzNjE5LCAxMjAzMzEsIDAsIDAsIDY1NjAzLCAwLCA2NTY4NywgMCwgNDEwMzgsIDc0MDA5LCAKLSAgICAxMTk1NzAsIDQyMjM5LCA4NTM2LCA3ODc0MCwgNzgzMjQsIDc4NzI2LCA3NDQzMiwgNzI0LCAwLCAxNDU1LCA3ODc0OSwgCi0gICAgNzE4MywgNjQ1ODMsIDc4NzQ3LCA2ODQ0MywgNDE3NSwgNzg3NDEsIDQzNjE0LCA2OTgwMSwgOTM5LCAwLCA0MzUyMCwgCi0gICAgNjg2MTMsIDc0NTY5LCA5MTc5NTgsIDAsIDc4NzYzLCA3ODc2NCwgNzg3NjAsIDEwNzg4LCA2MDg4LCA3ODc1OSwgNzg3NTUsIAotICAgIDE5MCwgMCwgMTI1OTMsIDAsIDgxODgsIDY0NDA4LCAwLCA0NDE3LCA5ODMyMTMsIDkyMjYxLCA2MzcwLCAwLCA3ODI3LCAKLSAgICA2ODQ0MSwgNjk2NSwgMCwgMCwgMTMyMDEsIDEyODIwNSwgNjk4OTYsIDAsIDc0MzgyLCA3Mzc4MSwgNzkxOCwgNzM5ODgsIDAsIAotICAgIDAsIDkxNzg4NCwgMTcyOCwgMCwgNDM3NjQsIDE3OCwgMTI5NzIsIDkyNjc5LCAwLCA5MTc4ODcsIDkyNTYzLCA5ODMzODEsIAotICAgIDAsIDc4MzI3LCAxMjA0MDUsIDY1NjkwLCAwLCAwLCAxMTkwNTQsIDAsIDkyNTIsIDkxNzg4OSwgNDY1MiwgNjgzNzEsIDAsIAotICAgIDAsIDAsIDEzMDY1LCA5OTIzLCAxMDgwNiwgMCwgMTE3NjMsIDcwMDE2LCAxMjA2ODgsIDY3MjMsIDc4MTg3LCAwLCA2OTkzLCAKLSAgICAwLCAwLCA4MzMzLCAwLCAwLCAxMTM5MCwgMCwgNzQ0NjQsIDAsIDkyMzIwLCA3NDA4MCwgOTgzMzE1LCA2OTkxMSwgMTE5MTAsIAotICAgIDkyNTU5LCA4Mjc4LCA4OTYzLCA0MDM0LCAxMjg1NjAsIDAsIDY1MzQ0LCAxMjA1MTcsIDQxNzQ3LCAwLCAwLCA4Njc3LCAwLCAKLSAgICAxMjcwNywgOTM1MCwgNjYwMzcsIDEyODE4MCwgODgzNiwgMTIzMTUsIDEyNzQ3LCA4MzAwLCA5ODM3NTAsIDAsIDc0OTEsIAotICAgIDg4NTYsIDcxMzYxLCAwLCA0MzE1MCwgMTI3NzY4LCAxMjA0MDQsIDY1Mzg5LCAxMjA0MDIsIDEyMDQwMywgMTA4MTMsIAotICAgIDI1OTIsIDEyODUzLCA0MzI2OSwgNzI2MywgMTIwMjQ0LCA2NTM2LCAxMjAyMzgsIDEyMDIzOSwgNjU1MTYsIDEyMzIxLCAKLSAgICAxMjAzOTEsIDEyMDM4OCwgNTUyODcsIDEwMDA3LCAxMjAyNDYsIDk1ODgsIDEyMDI0OCwgMTU5NiwgMTIwMzgzLCA0MTk5NCwgCi0gICAgNjU4MDEsIDEyODgwOCwgMCwgNjY1NzIsIDAsIDAsIDEwNjEzLCA2Njk3LCAxMjgwNSwgNDE5MjgsIDQwOTgxLCA3ODQwMywgCi0gICAgNzg0MDksIDUwMDYsIDY0MzI4LCAwLCA5OTMxLCAwLCA4ODI1LCA3NDU1NSwgNjU5NDAsIDQzMjU5LCAwLCA2MTA3LCAwLCAKLSAgICAxMTkxNzcsIDAsIDc4NDAxLCAxMjg2NDEsIDExNzgzLCAzMzUsIDEyMDIyNywgNjQ2ODksIDQzOCwgNDUxMCwgNTc2NSwgCi0gICAgODcyMSwgMTIwMjMzLCAxMTkyMjcsIDYwOTIsIDEyODQwLCA0MzExMiwgODg3NiwgMTIwMjMxLCA4MDk2LCAxMDI4NCwgCi0gICAgMTI4NTE1LCAwLCAwLCAxMDM4MCwgODczMywgOTgzMDcyLCAxMjgyNDAsIDQxNjAyLCAwLCA5MjMwOCwgNzQ4MzEsIAotICAgIDkxNzkwMSwgMCwgNzM3NDcsIDY1Mzk5LCAwLCA2NDU5MSwgNDI0MDUsIDAsIDEyMDgyMCwgODQzLCAxMTU0MSwgMCwgCi0gICAgOTE3ODk4LCAyMDY1LCA0MTkzNSwgNzQ0OTYsIDQxOTAyLCAwLCAwLCAyMTUsIDQxMjU4LCA3Nzg3NSwgNDMxNTksIDE5NTMsIAotICAgIDk1NzksIDQxOTM4LCAxMjU2LCAzOTEwLCA5NDA3LCA2MjQyLCAwLCA5ODMxMDAsIDQxMjU3LCA0MTkwMCwgODY3NSwgCi0gICAgMTA3MDAsIDg4MDUsIDE3NDIsIDAsIDkzMzMsIDgyMDIsIDEyNzc1MCwgMCwgOTgzMTk3LCAwLCAwLCA3Mzg4MiwgNDk5LCAKLSAgICA5ODMwNDksIDQzNDY3LCAwLCA0MzgxOCwgMCwgMTcxMiwgNTkzMiwgNzc4NDUsIDQxNzYyLCA5ODMxMDQsIDAsIDExOTY3LCAKLSAgICAxNzc1LCAwLCAwLCAwLCAwLCAxMjgwMDksIDk0NTgsIDAsIDY0NzAsIDkxODAsIDEyMDM4MCwgNDMxNzYsIDAsIDAsIAotICAgIDQyNzgyLCAwLCAwLCAwLCAxMjgzMDksIDc0Nzc3LCAxMjA2NjksIDk0MTQsIDEyMDM4MiwgNzM3ODIsIDczOTY5LCA1NjUsIAotICAgIDQyNDg0LCA1Nzk0LCAyMDEsIDI2NjIsIDQyMjkyLCAwLCA4MjU0LCAwLCAxMDk3NSwgMCwgMTIwNjI1LCA3NDc2MywgMTAyMiwgCi0gICAgNDEwOCwgMzg4MCwgNzQyNDcsIDAsIDAsIDkyMjYzLCA5MTc5ODAsIDc1MDcsIDAsIDQzMTQ5LCAwLCA2NTAzMSwgNzk2MSwgCi0gICAgMTYzNiwgMCwgNjUwMjksIDY1MDI0LCAwLCAxMjQ3MywgNjUzNCwgMCwgOTksIDk4LCA5NywgMTIwNTcxLCA2NzU4NCwgCi0gICAgNDA0OSwgNzQxNjMsIDEyNzA2NSwgNzA5MCwgMCwgNzg5MiwgOTE3OTY5LCAxMDc3NywgOTE3ODAzLCA2NTMxMCwgNjU1NjIsIAotICAgIDY2NTk5LCA2NjcyMiwgMCwgODAzOSwgMzM2MywgNjY1OTQsIDQzNDM0LCAwLCAwLCAxMjU5NiwgNjY1OTUsIDQyMjU4LCAKLSAgICA0MjU3MCwgNTU5MywgMTE5MTQ4LCAxMjA3MTEsIDkyNDI1LCAxMDEwMCwgNjA2MSwgNjQ4NTQsIDExOSwgMTE4LCAxMTcsIAotICAgIDExNiwgMTI5OTgsIDEyMiwgMTIxLCAxMjAsIDExMSwgMTEwLCAxMDksIDEwOCwgMTE1LCAxMTQsIDExMywgMTEyLCAxMDMsIAotICAgIDEwMiwgMTAxLCAxMDAsIDEwNywgMTA2LCAxMDUsIDEwNCwgNjQzNiwgNzM5NzQsIDUzNCwgNDEyMTIsIDc3OTMxLCAxNTM2LCAKLSAgICA2NDA5MywgNzM5NzAsIDc3OTMwLCAxMjcxNTcsIDAsIDYwMjAsIDEyNzE2LCAxMjcxMTIsIDEyNzQ0LCA0NzUsIDEyMDM5NCwgCi0gICAgMTMyNjYsIDEyNzgxMywgMTI3MTExLCAwLCA3MzkyNiwgMCwgMTA2NDUsIDEyMTIsIDY1NDMsIDk4MzMwNywgODEzNCwgCi0gICAgMTI4MDI4LCAyOTEzLCA3Mzg3MCwgMTI3MTEzLCAxODY2LCA5ODMyMjksIDE5NTA5NSwgMCwgODkyMywgMTY0NSwgMTIwNTksIAotICAgIDY2NTg1LCA3MTI5NywgMzE5NiwgMCwgMCwgNTkzNSwgMTI1MCwgMTI3MDY2LCA4MTc0LCA5Nzg3LCA2NzMzLCA5ODU5LCAKLSAgICA3OTE2LCA5ODYxLCA5ODYwLCA1MjU4LCAxODgyLCAxODkyLCA2NzMxLCAxMDg4MiwgNDA1LCAxMTQ1NCwgNzM5MTEsIDAsIAotICAgIDEyODc4MSwgNDExNjksIDg5MzksIDQxMjQ1LCAwLCA0MTE3MCwgMTQ1NCwgMTEzNjksIDY0NzcsIDEyMTU3LCAwLCAwLCAwLCAKLSAgICA0MTE3MiwgNzg1NSwgMCwgMCwgMTA0ODAsIDAsIDAsIDc3OTM2LCA4MjY0LCAxMjYxMCwgOTgzMzA4LCA2NDUsIDEyNjYxNiwgCisgICAgNzgzMTksIDYzOTU5LCAwLCA5OTQyLCAxMzIzMSwgOTgzNTc4LCA2NDc1MiwgNDczMiwgMTk0NjY2LCAxMTU5NiwgNzgxNDIsIAorICAgIDY1MTg3LCAxNjI2LCA2Mzk4MywgMTAxMTAsIDY0NzcyLCA0MjAyNCwgNjQyMCwgNDIwMjgsIDkyMjk0LCAxMDUwOSwgMjc5NSwgCisgICAgNDkxMCwgMTI5MTkzLCA2OTIzMSwgNjQ3NTMsIDYyNzUsIDkzOTU3LCAxMTg4MzAsIDYzOTc4LCAxMTA0NCwgMzIyOSwgCisgICAgNjQyMywgNDI3NzQsIDAsIDAsIDY4NTI2LCAxMjgyMywgMjMzMSwgMTI3Nzg4LCA3MDg1LCA2MTM3LCAwLCA3NTI0LCAKKyAgICAxMjA3MjEsIDkxNzgwOSwgODM0NiwgMTI4NDM4LCA4MzM4LCAxMjgzMTUsIDY1MDQzLCA3Nzk4MiwgODIyLCA3MDQxMiwgCisgICAgOTkwMywgNjQ3MjEsIDQyNzIyLCA2OTg3NywgODI5NTYsIDc4NjU1LCA2Njg4MiwgODI5NTksIDc4NDg0LCA0MTI2NSwgCisgICAgNTMxMSwgMTc5NSwgOTY1LCAxMTg3OTEsIDEwNTg3LCA0Mzk2MiwgMTEyNzgsIDc4NjMyLCA3NDExMSwgMTI4MDk1LCAKKyAgICAxMjk0NiwgMTIxMDc2LCA3MTkyMSwgMTIwMzQ5LCA2Mjk0LCAzMTQ0LCAxMTM3MDYsIDEyNzk2NywgNjUwMTksIDc0MDc4LCAKKyAgICA3Mzk5MCwgNjUxMTEsIDk4Mzk2MCwgNzQ4LCA0MTA2NywgMjMzMCwgNTM1LCAzMTQ4LCAxMjM3NSwgNzg3OTksIDE5NDYyOSwgCisgICAgMTA1NTYsIDI0NzUsIDEyMzg4LCA0ODg5LCA4OTY4LCA2Nzg2MywgMzU5MywgNzQwNzYsIDgyOTQ5LCAyMzQyLCA4Mjk1MSwgCisgICAgODI5NDQsIDY1MjA2LCA0ODk0LCA4Mjk0NywgNDg5MCwgMTIxMDU5LCA2NDQzMywgNTgxLCA0ODkzLCA0MjkyOSwgNjU3MSwgCisgICAgNjU1NDUsIDQ4ODgsIDQxNTcsIDc4MDQ4LCA3ODA0OSwgNjQ2NTEsIDc4MDQ3LCAwLCAxMDExOSwgNjQxNSwgNDI4OTMsIDAsIAorICAgIDY5NzAyLCA5ODM5MzcsIDAsIDExMzc1LCA2NDc0NiwgMjMzMiwgNzgwNjMsIDQxMiwgNzgwNjEsIDQyOTI4LCA0Mjg4MCwgCisgICAgNDM1ODcsIDEyMTA5OCwgMCwgMCwgNzA0NjEsIDY1MTk3LCA3ODA2NiwgMTIyMDMsIDc4MDY0LCA3ODA2NSwgODkxMywgCisgICAgNjU4NTQsIDQ4NzUsIDY1ODExLCA3NTAyNCwgMTIwMzg5LCA3MTg1NCwgOTM0NCwgODgyNiwgOTI5MTYsIDEyMDM5NSwgCisgICAgMTMxMDQsIDY3ODI4LCAxMTk5NywgMTIwMzkzLCA3ODA3NSwgMCwgMzEzNCwgODMwOTYsIDY1Njk2LCA3MjQzMiwgMTIxNDEyLCAKKyAgICA2NjIxNywgMTIxMTkwLCA4MzM0LCA5Mjc1NSwgODMyMDcsIDM0NDksIDEyMTI2NCwgMTMxMDAsIDc4NDE0LCA3ODQxMywgCisgICAgODMyMTYsIDY2NDA1LCA3MDQzMCwgODMwODksIDgzMjAzLCAxMjcyNTAsIDE5MDgsIDEyMDE2NywgNDMyOCwgMTA3MzQsIAorICAgIDEyNzAxNCwgODMxOTgsIDY3ODI1LCA3ODA0LCA3ODI3MiwgMTA4MTEsIDYyNTAsIDExMzM5LCA0OTE0LCAxMTM2NywgCisgICAgODM1MTAsIDc4MDU0LCA0OTE3LCA3NDUxNiwgNzQyMDgsIDY0Mjg1LCA0OTEyLCA1NDY0LCAxMjc4MzYsIDgzMTAwLCAyMzYxLCAKKyAgICA3OTcxLCA3ODA3MiwgNzgwNzMsIDU1MjQzLCA3ODA3MSwgOTgzNTc1LCA4MDg2LCA3NDMxNywgNjcwNywgODMxOSwgMjMxMiwgCisgICAgNDA5NzcsIDEwOTYwLCA0MDk2MiwgODMwNSwgMTI1NzMsIDcxMTMxLCA0MDk4MCwgOTgzOTY0LCAxMzIwMiwgMTI3ODE2LCAKKyAgICAxMjU4MiwgNzgyODIsIDk4MzA0OCwgNjk4NTYsIDQyNDM4LCA1NTIyMSwgNjI4OCwgNzgyODAsIDEyNzk0NiwgNTY1MywgCisgICAgNDI0MDAsIDEwODkxLCA3Njk4LCA1NjU4LCA3MDQwMSwgNzAwMzksIDAsIDcwNDYwLCA0OTEzLCA3MTA2MCwgMTI4NTYyLCAKKyAgICA3MTMzMywgNDIzMjYsIDEyMTExOSwgMTI3MjgsIDkyNjg1LCA0MjQ3OCwgMjMyNywgMCwgMTI1NjMsIDQyMjg3LCAxMjcwNSwgCisgICAgMTIwODI5LCA4MzA4MSwgMTI1ODgsIDg4MjEsIDYxNTMsIDI4NjcsIDgzMDg1LCA2NjMxMiwgNjk4LCA4MzA3NiwgODMwODcsIAorICAgIDEwMzU2LCA3MDAxNywgMTI4NTcwLCA2NTEsIDEyNjQxLCA4MzEzOCwgMTI1MDk4LCAxMjA3MTAsIDEyOTA2NCwgNDE1NTIsIAorICAgIDY1MTE1LCA3ODQ2NSwgNzg0NjcsIDc4NDYzLCA3NDkwNSwgMTI3NTE2LCA3ODQ2MSwgOTI5NjAsIDY2OTI3LCA2NDk0NSwgCisgICAgNDcxNiwgNDMyNzcsIDEyMDkzMiwgNzg0NzQsIDEyMzQwLCAxMjA1NjgsIDEyMDkyOCwgMTk0NzAwLCA1NTI2NCwgNDEyMTEsIAorICAgIDEyMDY3NiwgODcwMywgNTQ2MiwgODMxOTUsIDgzMTg1LCAxMDEwMSwgMCwgNzAwNDksIDg0NzksIDQxNTEsIDQxOTMzLCAKKyAgICA4MzE4OSwgMCwgNjYyNTQsIDEyMDgyMSwgNjg0OTcsIDAsIDEyODY1NCwgMTEzNzk5LCA4MzE1OSwgNzQwNTAsIDQyNjUxLCAKKyAgICAxMjczNzEsIDAsIDAsIDgzMjI1LCA4MzIxOCwgMTIyNzgsIDc1MDExLCAxMjg0MDUsIDAsIDI3MDAsIDEyNTc2LCA3ODQyLCAKKyAgICAxMjg5OSwgODMxNTUsIDAsIDI2OTksIDEyOTMwNCwgNzM4NDUsIDI5ODUsIDgzMTQ5LCA2ODY0OCwgODMxNDYsIDEyMTkyLCAKKyAgICAxMTkzMTQsIDAsIDY2NDg5LCA5ODI3LCAxMTkzMTAsIDg2MDksIDExOTMwOCwgNjc0MjYsIDExOTMwNiwgMTE0ODEsIAorICAgIDQxMjEwLCAxMTkzMDUsIDAsIDM1LCA3MDgzOCwgNjc0MzEsIDY2Njk0LCA2ODQ3OSwgNzg0NzcsIDY3NDI4LCA0MzU5NiwgCisgICAgNjA5MCwgNjQyNTcsIDc4MTIsIDEwNTM0LCAwLCA3ODQ4NSwgNzM4NDgsIDY3OTc1LCA0MjcyLCA3ODMyMSwgNDA5NjcsIAorICAgIDQwOTY0LCA5MTc4MjUsIDEyNzA0LCA3ODQ4NywgNDMzMDYsIDAsIDY0NDk3LCAxMjEzOCwgNzkzMCwgMCwgMjI5MiwgCisgICAgNjgyMTYsIDE5NDg3MSwgMTIxMzkwLCA1MjQ0LCA0MTg5LCA5MjY5NywgNjc1OTYsIDEyNzUwNCwgNDE4OCwgMTg3OSwgCisgICAgNzA0NjMsIDk2OCwgMCwgNDM3NDMsIDAsIDg4NzMsIDIyNzksIDEyNzEwMCwgOTE3ODI3LCA2NTU1NSwgMTI1NzQsIDAsIAorICAgIDkyNzQ5LCA5Mjc1MywgNzQ0OTAsIDEyNzA5OSwgMTE4MzgsIDc1MDAxLCAwLCAwLCA0MjY4MiwgMTI1NzgsIDEyNzIwLCAwLCAKKyAgICA0MTIyNywgMCwgMTIzNDYsIDEyNzEwMSwgNjQ4NDgsIDY5OTUwLCA5MTc5NTAsIDcyNTEsIDAsIDEyMDM4MiwgMTE4ODUwLCAKKyAgICAxMTkxNDEsIDEyODQ2MSwgNjYwMTUsIDY3MzMyLCA5NTksIDg4ODUsIDEyNTY0LCA2NjQ1NywgNzg4MDgsIDk0NjksIDk2MzIsIAorICAgIDkyMjMxLCA3NDc2MSwgNjQzMjMsIDEyNzMzNSwgMTI4ODQyLCAwLCAxMTEzMiwgMzEwLCAxMjA5MjQsIDQxMjgxLCAxMDk3NiwgCisgICAgMCwgNzEzMjUsIDEyODM2NCwgNzQyNjYsIDEwMDU0LCA2NDk3LCA4NTc0LCA5MTc4MjMsIDkwMTIsIDE5OTU4LCA3NDQyMCwgCisgICAgNjUwODksIDEzMjE1LCAxMjczMCwgNjUxNjMsIDY0MjYwLCAzNzQsIDQzMTk1LCA4MTYsIDkyNzgzLCAwLCA4MzE5MSwgCisgICAgNDE5MzQsIDc0NjUsIDc0NjE1LCA5Mjc1MiwgMTI3ODk1LCA0NzE1LCA2MTAxLCA3MTA4OSwgNDE5MzYsIDgyOTY3LCA0ODc5LCAKKyAgICA0Mzk2NSwgNjU0NDYsIDAsIDMwNywgMTI3MTQ3LCA5NTg1LCA1Mzc0LCAxMjc5NjIsIDEyODA1OSwgMCwgMTI5MTg5LCAKKyAgICAxMjY2MTgsIDEyMDM5MCwgNzQ5NTMsIDY1NTY3LCAxMjA2MTQsIDE5MjksIDEyMDk4NCwgMTIxNDIsIDE5NDY5NiwgMTIyMzYsIAorICAgIDQxNDE5LCAxOTQ2MTgsIDEyMDYxMCwgMTI5ODIsIDc1MDAzLCA1Mzc4LCA3NTAwNCwgMTIwOTU3LCA0MTQyMSwgNzUwMDUsIAorICAgIDQ0NjIsIDAsIDEyNjU5OSwgMTI4MDkyLCA4MjEsIDAsIDI0OTgsIDU4MDAsIDEyMDE1NywgNjc3NTgsIDE3NjAsIDI0MjEsIAorICAgIDQ0NjksIDIzMjQsIDgyOCwgMzYxMSwgNzg0MDAsIDc1NywgMTE4NSwgMCwgNzg3NzAsIDQzNTk3LCAxMDYyOCwgNzQ4MDgsIAorICAgIDY4ODQ5LCA3OTk5LCA0Mzk3MSwgMTEyMTcsIDEyMTIyNCwgMTA2MzQsIDEwOTQyLCA3NzEzLCAyMzQ4LCAwLCA2NDM3NCwgCisgICAgNDM4MCwgMTI4Mjg0LCA4MzA2MSwgOTk4MiwgNjQzMjQsIDQxMjQwLCA4NjIsIDY0NDY4LCA3ODQ2MiwgMTgxMCwgMzY3MywgCisgICAgNTEzNywgMTk0NjE3LCAwLCA3Mjc3LCA2NTYyMiwgNjUwNjksIDc1NjYsIDY0Njg4LCA2NzE0MywgMTk0NTkyLCA3NDk1NywgCisgICAgNDM5MTIsIDEyODM4NSwgNDc0OCwgOTIyMjgsIDEyOTE4NSwgMTk0NjAxLCA0MjI2MCwgNTg3MSwgMTE5MDc1LCAxMjEyNzgsIAorICAgIDc0NTc2LCA0NDAxOSwgMTk0NzIwLCAxMjgxODksIDM5NjcsIDcxMDk4LCAxMzEzNywgODc3NSwgMTI3OTQ1LCAwLCAyOTYzLCAKKyAgICA5MTc3ODUsIDg0MTAsIDQ0NTQsIDcyMywgODMwODQsIDk2NiwgNDQ0OSwgOTIzMzAsIDkyMjM4LCA3NTAyMiwgNzgxOSwgCisgICAgMjMyMCwgMTk0NTg5LCAzMzksIDQ5NjgsIDE5NDU5MCwgMTIwMzk5LCA4MDc1LCA1NTI3NiwgODMwNTcsIDgwNDcsIDAsIAorICAgIDc4ODI3LCAxMjYzNCwgNDE1NDIsIDc4NzgwLCA3NDY2LCA2NzA1LCAxMjE3NCwgNDI2MTAsIDEyNDkzNCwgNzQ0NTIsIAorICAgIDk4Mzc2MywgMTU4NCwgNjY2NDUsIDYwNDUsIDY3MjksIDEyMDY0MCwgNjUyMTgsIDExNTU5LCAxOTQ5ODMsIDc4MDYyLCAKKyAgICA3NTM3LCAxMjQ5OTEsIDExMzcwLCAxMjUwOTMsIDEwMzMwLCA3ODc5OCwgMTAzOTQsIDkyMjM2LCA3NDE5NCwgMCwgCisgICAgMTI3OTI5LCA5NzgwLCAwLCAxMTExNywgNzQ5OTMsIDc3OTUwLCA2NzA5MSwgNzA3NCwgOTI2NDgsIDE5NDU3OSwgMTk0NTgyLCAKKyAgICAxMTQxNCwgNjg3ODEsIDI1MzEsIDEzMDM0LCAxMjkxNTksIDAsIDQyMTEsIDEyNTksIDc1MTcsIDcwODY2LCA3MDE5OCwgCisgICAgODMxMjIsIDQwOTk2LCAxMzAzNywgNzA5MiwgNjQxLCA1MjE5LCA4MzEyNSwgMTk0NTY2LCAxMTA2NCwgNDExMjksIAorICAgIDEyMTI1MywgNDI4NTAsIDEzMDM1LCA5MDc1LCA5MjM4NywgNTQ2NiwgNzQyOTMsIDc0NTMwLCA2NDA5OCwgNjU3OTMsIAorICAgIDQ1MzUsIDEyMTI2NywgNDI3MSwgNzg0MTcsIDEyNzA1OSwgNjc2OSwgNDE0MTAsIDEyNzI1NywgNjQyNjIsIDY3NjcsIAorICAgIDQxNDA3LCA2NjI3MywgOTE3ODE2LCA2NzU1LCAxMTg4NjQsIDkwNDYsIDEyMDg4NiwgMTI2NjA4LCA3MDgzMCwgMCwgCisgICAgODMyMzIsIDAsIDY3Njc1LCA5ODM2OTQsIDgzMjM0LCAxMjEyNTQsIDY0MzM4LCAyNTYzLCAxMzAzMywgMjQ3LCA4MzIyOSwgCisgICAgMCwgMTIzMzgsIDQ2NTEsIDY3MzU1LCAxMTI3MCwgMCwgNzQ2MzAsIDExOTMzLCA3MDEwNywgMCwgNDE5MDMsIDQzNDQ3LCAKKyAgICAxMTAwMSwgNzM4MjcsIDQyMjU1LCA4MzI0MywgODMyMzgsIDY5ODIxLCA0MTkwNSwgNjczNTAsIDAsIDEwNzc1LCA5NzkzLCAKKyAgICA1MDA5LCAxMjg3NzQsIDQyMjY5LCA2NDU4NywgOTgzMDYzLCA0MjUzNSwgNjk4MTIsIDY0NTI5LCA0MTQwOCwgNDI4NTMsIAorICAgIDM4NzcsIDEyMDc5NSwgNDI2NzQsIDgxNDcsIDQzNTY2LCAxMTkwMjEsIDY3MzQyLCAxMDIzNiwgNjU5MTgsIDQzNzgyLCAKKyAgICA3ODc2OSwgNzgwNjAsIDY0NTA2LCA2OTY1MiwgMTE4OTIxLCA0NzQ3LCA4MzI1MSwgNjk4NDQsIDQzMjAwLCA1ODMyLCAKKyAgICA3MTIwOCwgODMyNTAsIDUxNDEsIDQyNjAwLCA3MTg2NiwgNDMyMDMsIDEyNzIwOCwgMTIwMTI5LCA0MzI4NiwgMCwgCisgICAgMTI4MjExLCA0Mzc3OCwgNzY1NywgNDEzMDUsIDcxMTMyLCA0Mzc4MSwgMTEzMDMsIDY1NTQ3LCAxMjg2MDksIDcwMzEsIAorICAgIDg1OSwgMTI4NDg4LCA4MzI2MiwgODMyMzcsIDYwNTksIDEyNjk4NSwgNTUyMzUsIDE5NDgxNywgODUzNSwgMTI4NjM4LCAKKyAgICA2NTE5NiwgMTI1MDg0LCA2NjAzMiwgMTE0ODgsIDEyMDQ4MSwgMTIwNzg2LCA0MjIzMywgNjQxNDAsIDk5NDYsIDc2NjcsIAorICAgIDE5NDc5MiwgMTE4MjIsIDEyODU5MSwgMTExMzUsIDk4MzYwMCwgMCwgMTc4OCwgMTU3OSwgMTIwNDgyLCA3MTI5OCwgMCwgCisgICAgOTgzNDYxLCAwLCA5MDI4LCAxMTk1NzEsIDY5MjM0LCA3MTA2MSwgOTI1NDUsIDEyODUsIDY0ODgyLCA0MTI0MiwgNzAwODYsIAorICAgIDgzMTExLCAxMjY0MCwgODMxMTIsIDc0MDEsIDAsIDEyNjI1LCA2ODE5OCwgMCwgNzAwODIsIDM5NDAsIDQxNTk3LCA0Mzc1NCwgCisgICAgMzM5NiwgMTI2NDIsIDg2NjUsIDk4MzYxMCwgOTgzNjA5LCAxMjYzMCwgMTY1MywgOTE3ODE1LCAxMDE1MywgMCwgNjE2NiwgCisgICAgNzA4MjUsIDExODk4OSwgMTI5NDA5LCA4ODE1LCA2NjY3MywgNjUwNDYsIDkyODUsIDkxMywgNDIyNTksIDExMTgwLCAKKyAgICAxMTkzMTgsIDIxNDIsIDY4NDU0LCA0MjQ4NSwgOTQwMTIsIDc4NzgsIDgyMTEsIDQyMjkzLCA2NDM3NywgMTIwNDc4LCAKKyAgICA5MjY0MywgMTIxMTE4LCAxOTQ2NzMsIDEyMDMyLCAwLCA5NzI1LCA5ODM0OTEsIDc4NDMxLCA1MjYzLCAxMjgxOCwgNzg0MzAsIAorICAgIDQxOTM5LCAxMDAyMiwgNjUzODcsIDc4NDE5LCA0Mjc3NywgMTAxMzksIDk4MCwgNDM2OTgsIDY1Mzg2LCAyMjA4LCA2ODg0OCwgCisgICAgNDM3MDEsIDQzMTk4LCA3MTg0LCA5MjU0MiwgMTI4NDIzLCAxMjg4NzUsIDEwMDg1LCA3NDk3OSwgMCwgNjczOTQsIDY2MzQsIAorICAgIDkyMzczLCAxMjUwODUsIDgzNDEzLCA4MDcyLCAxMTkzMjEsIDQzNzAwLCAwLCA4ODcyLCA3NzgzLCA5MTc5OTEsIDEyMzk4LCAKKyAgICA4MjM3LCAwLCAwLCAxMjM5NSwgMCwgMTI2OTc3LCA3NDg5MSwgOTkxNCwgMjIxNywgOTIzMjMsIDczOTc1LCA2MzY3LCAKKyAgICA2MzUxLCA2NjY4OCwgOTI3NDAsIDY4NzY2LCAwLCA2NDczNSwgNDEyNDMsIDkyMTk5LCA3ODA4LCAxODI5LCAxMjY1NDEsIAorICAgIDQxOTM3LCA0MzU4LCA0MzI3MiwgNjM1MywgMCwgMCwgMTIwNDIyLCA5MzA0NSwgMTcxMCwgMTIwMTQwLCAwLCA2NTYwNywgCisgICAgNjcyMzQsIDQ5LCA2NjI3LCAwLCA2MjU4LCAxMDY4MywgNzg2NzIsIDk3NDEsIDc4MzI5LCA1NjQ5LCA3ODQ0MSwgNDM0NDMsIAorICAgIDY0NDE4LCAxNjQzLCA2NTIxMywgODQwNSwgMzQ3MCwgNjcyNDQsIDEzMjEzLCA0MjQ1MiwgNzgzMzEsIDc4MDEzLCA3ODQ0NSwgCisgICAgMTI1MTI0LCAxMDcyLCA3ODQ1NywgNzg0NTIsIDc4NDU0LCA2NTc2LCA0MTk4OCwgNDExMzIsIDY1Njc1LCAxMDgwLCAKKyAgICA3MDgyNCwgOTg4NiwgNTUyMjUsIDExMDEsIDY4NDA0LCAxMjMwOSwgNTUyMjcsIDcxMDgyLCAxMjYzMiwgMTA4NiwgMTg2OSwgCisgICAgNzg2ODUsIDc2ODAsIDAsIDY1NDU4LCAxMjA3MTQsIDEyNjM5LCAzMzgwLCA4MTIzLCAxMDkxLCAxMjYzOCwgNzk3NywgCisgICAgNDUwMSwgNDEwOTksIDAsIDY2MzA5LCAxMjAxNDEsIDkyNzU4LCAxNDk0LCAxMTM3MTYsIDEyNjYxMywgMCwgMTE2OTMsIAorICAgIDcxMjU1LCAxMDQ5NCwgOTI2NTUsIDY1ODcyLCAxMjM2MywgMTEzODYsIDExMzcyNywgMCwgMCwgNzg3NzEsIDY0NTgyLCAwLCAKKyAgICA3Mzc5NCwgNjczOTUsIDgwMjIsIDEyMDk4OSwgMTIwNDYyLCA3NDEwNiwgMTI0MTMsIDY2ODgzLCA5MTc5OTQsIDkzMDM1LCAKKyAgICA3NTAwNywgNTU3MCwgMTg4MSwgNzIxMCwgMTIwNDI1LCAxMDEyLCA0Mzc1MiwgMCwgMTIwNzA5LCA3MjA4LCA2NjQ0MiwgCisgICAgNTU2OSwgMTk1MDA3LCA0MjMzOSwgOTI5OTcsIDYwNjMsIDY3ODg4LCA2OTk4MSwgMTE5NTk0LCA2MDUzLCA2NTYwMiwgMCwgCisgICAgOTIyMDEsIDY0NzI3LCA5MTYwLCA3MDMwMSwgMCwgOTI5MDUsIDkyMTgwLCAxMDUwMywgNzAzODcsIDM0MjMsIDM4NzAsIAorICAgIDQyNzksIDg0OTAsIDEyMDExNCwgNDMxOSwgNjQ3ODYsIDg2MDIsIDEyMDExMCwgMTEzMjYsIDkyMjA0LCA5ODMxMTYsIDAsIAorICAgIDc0OTYxLCA3ODMzMywgMTIwMTE3LCAxMjAxMTgsIDEyMDA5OSwgOTIzODUsIDY1MDg3LCA1NTcxLCAzNjc0LCA5NzQwLCAKKyAgICA5MTIxLCA1NTY4LCA3MTQ2NCwgMTIwMTA4LCA0MjA4NSwgMTAxMDcsIDQyMTU5LCA0Mjg3MCwgMTEzNzAwLCA1ODksIDcwNTAsIAorICAgIDk4MzgwMCwgNDMyODEsIDEwMjMzLCA0MTI2MywgNjYyNTEsIDY1NzI5LCA2NjI1MywgMTI2NDk3LCA3NDA5OSwgNDI2NDUsIAorICAgIDkyMzMxLCAxMjEzNTgsIDg1ODMsIDEyMTEyMywgNTg0NywgNjkyOCwgMTI4MDc0LCAwLCAwLCAwLCAwLCA2NjU5MiwgCisgICAgMTIyMDQsIDkxNzk2MiwgMTk5NjYsIDc3ODU2LCA0MjU2MSwgMTIwNjI2LCAxMjkxNzAsIDY2ODU0LCA4MTIwLCA3MDMxMSwgCisgICAgMTk0NTg1LCAwLCA3MDMwOCwgNDEwNjMsIDEyMDQxNywgMTA2NjQsIDAsIDgzNjksIDAsIDQ1NTEsIDE5NDk2NCwgMzM2OSwgCisgICAgNzQ5NzEsIDEyMTA5NCwgOTY3MywgNjYzMzQsIDY1NTgwLCAxMDQ3OCwgMTE4OTYwLCAxMjUxNywgNTU3LCA5NDU3LCAKKyAgICAxMjAzNCwgNjg0OTYsIDYzNTUsIDEyNTE5LCA0MTAwNCwgMCwgNzQ5MzcsIDc0MDk0LCA5MTc4ODgsIDEyNTA2MCwgNzc5NzAsIAorICAgIDkyMTcxLCAxMjcyMTksIDEyODE3NSwgMTIxMTEsIDM5MjcsIDAsIDEyNTE1LCAxNDc0LCA2Nzg5MywgNTQ5MiwgNjkyMywgCisgICAgOTIyODEsIDEwNDQxLCA3MzgzNiwgMCwgNDM5OTAsIDU0OTMsIDAsIDc0MzE5LCAwLCA2NjYzNSwgMTIwMTksIDAsIDE2MTgsIAorICAgIDAsIDEyMDQ3NCwgOTY0NSwgMTA0MzAsIDEyNjYzNiwgNTg1MywgMTMwNjMsIDEwMzYzLCA5ODM4OTgsIDEyOTU2LCAKKyAgICAxMTM2NjYsIDEyMDcyOSwgMTEzMTQsIDkxNzU4MiwgMTIwNjAsIDEyODY0OCwgNzgzOTIsIDEyODI2LCA2MzI5LCAwLCAKKyAgICAxMDUxNCwgNjU1MTcsIDc0Mzk1LCAyNzA3LCA4MzA5LCAwLCAxMjcwNTQsIDc4Mzk4LCA0MzU3MCwgMjY5NywgNDM0MjAsIAorICAgIDc4Mzk2LCA2ODI0NywgMjY5NSwgNDIxNzEsIDcwODA5LCA2ODMzNCwgMCwgNjc2MTcsIDExODk3MSwgMCwgMjY5MywgCisgICAgMTIxMjUsIDEyNzY2LCAxMjA0MDksIDExNjQsIDExMzcyOSwgNzAyODMsIDQxOTE4LCA3Nzg0OSwgNjcxNTAsIDg2ODcsIAorICAgIDY2MDA5LCAxMjE3OCwgNzA1MywgOTI1NDAsIDc0NjksIDAsIDUyNDgsIDEyMjE4LCA2OTk4OCwgNjQyNywgNDI4ODQsIAorICAgIDQxMTIzLCAxMTE3NiwgMCwgNDI4NzMsIDQxMTI2LCA5OTkxLCA0MTEyOCwgNzQzNzEsIDEyNzAzMSwgOTgzOTMyLCA5ODczLCAKKyAgICAwLCA0Mjg3NywgNzk5NCwgNjQ3NjIsIDIwNTMsIDQyODQzLCA2NTkxLCA5MzQwLCAxMjg4NDEsIDE1ODksIDEyODY5MSwgCisgICAgMjk2LCA2NzcxMiwgNzg4NTIsIDEyMTQwOSwgNjc4NDEsIDc0MzcwLCAxMjg1MDQsIDg5MjIsIDEyODA2OCwgNDM4MjksIAorICAgIDEyNzAwLCA3NDgzNiwgMCwgMTI1NzksIDAsIDEyNTc1LCA2NDE2LCA1NjU2LCAyODkxLCAxMzI2MiwgNjU1OTAsIDUyOTksIAorICAgIDc4ODM3LCAxMTQ3MywgNTQ0OSwgMTI1MiwgMTI3MzI4LCA3ODQwNCwgNDE0MzEsIDc0MzY5LCA2NTM3MywgNTI5NSwgCisgICAgOTE3NTY5LCA2ODMyMCwgMTIyMywgMTY0MiwgMTc0LCA3ODM5OSwgODgzLCA0MTYxLCAxMjY5MSwgNDI2MDMsIDQxNDEzLCAKKyAgICAzMjEyLCA0MTQ1OSwgMzIxMSwgNzQ4MTAsIDQxNDI1LCA3NDU5OCwgNzg0MTIsIDc0NDUwLCA5NzI4LCAzODQ2LCA4MDcwLCAKKyAgICA2MTUwLCA2NjM2LCA0MzcwLCAxMjg2MTksIDEyOTE1OCwgNzQxNzgsIDc0NTg3LCA3NDExNywgMTk1MDk0LCAwLCAxMTM3NDgsIAorICAgIDQ5ODYsIDEyMTg5LCAxMjc1MTIsIDY3NjQ4LCAxMjA0OTksIDk0MDAxLCA0MjU3LCAxMjEwNCwgNzExNzYsIDYyMjAsIAorICAgIDkwMDQsIDY1NTYxLCA5ODM4ODEsIDc3OTQ5LCAwLCA2ODEzNSwgOTE3NTc2LCA3Nzk0NiwgODM0NTMsIDY5Njc5LCA2OTY4NCwgCisgICAgOTg5MCwgNzg1NjEsIDEyOTcxLCA3ODQ1MywgOTI1NTYsIDczODk4LCAxMTk3OSwgNzAwNTEsIDcxODk3LCA4MzQ1MSwgMCwgCisgICAgOTYzNSwgMTI2MDAsIDg4NzEsIDY3MzY2LCA2ODQ5MSwgMCwgNjQ2OSwgNzQyMjcsIDExODkwMCwgNjUzMDQsIDQ2NzksIAorICAgIDEwMjMwLCA2NDMwMCwgNjQ4NjcsIDM0MjcsIDQyNDAsIDY3Mzc2LCA2NzM3NSwgNjczNzQsIDY3MzczLCA0MjkxNiwgCisgICAgMTI5MTU1LCAxMjgyNzksIDY3Mzc3LCA3MjgyLCA3ODcyOCwgNjU3MzMsIDQ0NDUsIDY3MzcyLCA2NzM3MSwgMzQ5NCwgCisgICAgNjczNjksIDY1NTUsIDEyOTE0OCwgNzc5NzYsIDAsIDAsIDc4NTY2LCAwLCA5ODMxODksIDY1ODk4LCA5ODMyNDYsIDY1MzEyLCAKKyAgICA1NDQ3LCAwLCAxMjg5NSwgNjU1OTMsIDQwMTAsIDgzMTU0LCA0MTEwNiwgNzQzNTcsIDY0NDQ4LCA5Mzk5NCwgNDExMDUsIAorICAgIDc0MTE0LCA2NTgyMCwgNjIzMiwgNjgyMzMsIDEyNjYyNSwgMCwgNDM2MDgsIDExOTA5MSwgNzgxMTgsIDY1MzgsIDQzMzUsIAorICAgIDc4MzY0LCAzOTQxLCA0MTEyMiwgMTEwNjEsIDc4MzYzLCA2NDg5MiwgOTExMywgMTk1NCwgMTIxNTUsIDk4MzY3NCwgCisgICAgNDI4NzgsIDExNTAwLCA2NzQwNSwgMTI4MTUyLCA3NDU3OCwgMCwgNjU4MzIsIDEyODY2NywgMCwgNzA3ODksIDY3MzMzLCAKKyAgICAxMTkyMzAsIDQ1ODYsIDAsIDM1MCwgMTA5NTEsIDAsIDUwOSwgNjczMzYsIDk4Mzg3OSwgOTIzMDcsIDAsIDAsIDUxMzMsIAorICAgIDY3MzgyLCAwLCA5NTAwLCAwLCA0OTU3LCA2NDc0MSwgMjQyMiwgMjIxMiwgOTgzMDgwLCA2NzM4MSwgNjczODAsIDI0OTYsIAorICAgIDExNTE2LCA5NDQsIDY3ODE3LCAzODkwLCAxMjE2OCwgMTQzOCwgNjc4MTMsIDY4MzM1LCA3MDAwMywgNDE5NDcsIDEyMjAsIAorICAgIDEyMDgyOCwgNzQ5NDYsIDcwODU0LCA3NDA1OCwgMTU3MSwgNDI2MzAsIDQxOTQ5LCA0MjgwNSwgODI3MCwgOTQzLCA1NjQsIAorICAgIDAsIDMxMiwgNDE5ODAsIDk4Mzk0NCwgMTI4Mjk1LCA3MDc5NywgODg3NywgMjY5LCA0NDI5LCA2MjcyLCA5NjE3LCAxNDYwLCAKKyAgICA2OTU0LCA3ODY1NywgNDExMjAsIDY1MTIxLCAxMDg2MiwgNjA2MCwgNDExMTksIDQxNDE2LCA3NDM1NSwgNDE3MywgMCwgCisgICAgODI5NDgsIDAsIDE5MDYsIDEyMTE2OSwgMTE1MzIsIDc0MDczLCAxMjczMzgsIDAsIDE5ODUsIDYyOTYsIDk1ODIsIDc1MDcxLCAKKyAgICA2NDI4NywgMTI4NDA2LCA3ODExNSwgMTE0MjgsIDE3MzAsIDI0NTcsIDkxNzgwOCwgMTk5MTgsIDEwNDY5LCAwLCA2ODA4OCwgCisgICAgNzcwMywgODg0MCwgODAzNSwgMTIwNzExLCAwLCA5MjIzMCwgOTgzMzU3LCA2MTI5LCAxMjg0MzcsIDc4NTg2LCAxMjgyNjgsIAorICAgIDAsIDc4NzQsIDg2ODEsIDExOTA5MiwgMTEyMDYsIDEzMTM2LCAwLCAwLCA3MDEwMiwgNjM4ODYsIDcwNDUwLCA5NjA1LCAKKyAgICA3MTMwOCwgMTMyMjAsIDY3MzQ4LCA2NzM1NCwgNTUxNCwgNzQ5NjAsIDkyMjgsIDY3MzQ5LCA2NzM1NiwgNjczNDYsIDUyNDAsIAorICAgIDk4MTEsIDEwMDEyLCAzMDk2LCAwLCAwLCA3NDUyNiwgNjY2NzYsIDY1ODczLCAwLCAxMjgxNzksIDAsIDk1MDEsIDEyMDgzMiwgCisgICAgMTI3MiwgNjQ1MzYsIDY1NDY1LCA2NDY1NCwgNzQ2NywgMCwgMTQ2NywgMTAxNTgsIDEwMDQwLCAwLCA5NTE5LCA2ODc1OSwgCisgICAgNzAzMTIsIDE5NTA4NSwgNjg4MjAsIDEyMTkzLCA3MDQwMCwgMTI3MjQwLCAxMjEzNzMsIDAsIDk4MzM1NSwgMTk5MzUsIAorICAgIDEyMDczMywgOTIxNjIsIDY4ODAxLCAxMjc5NTUsIDgzMTMzLCA5MzA1NywgNTI3NSwgMTIwMTk1LCAxMjg2MzIsIDg2MzcsIAorICAgIDQzNjgyLCAwLCAzNzg5LCA2Mzg4MCwgMTE0NzEsIDQzNTU0LCA2NTg2MiwgMTE0NzQsIDY2MzMyLCA2NjYwMywgNjg3ODQsIAorICAgIDI0MjYsIDEyMDQyLCA5MjE5NCwgOTgzOTExLCA5NTM3LCAzOTYxLCAxMjExNSwgNzc5NTMsIDI2MDUsIDQ1MDAsIDY0NTYxLCAKKyAgICA1NTIyNCwgNDk4MSwgNzQ2NDQsIDAsIDQxNjQ2LCAxMTY2NywgNDI2ODYsIDc0OTkxLCA0MjM2MiwgNjQ2ODYsIDQ0OTksIAorICAgIDQxNjQ5LCA3NTg5LCAxMjg3NzYsIDAsIDMyMzcsIDAsIDY2ODk1LCA2ODI5NiwgODU0MSwgNzgyOTgsIDcwMDM0LCA0MTg2NiwgCisgICAgMCwgOTgzODE0LCA5NDA1NiwgMTExNzQsIDY5OTI0LCA0MzU1NSwgMjgyMywgOTU1OSwgMTAwNjAsIDQxOTQwLCA4Mjk5LCAKKyAgICA0MTk0NSwgNzEzMiwgNDE5NDEsIDMzMDgsIDcxOTAsIDY0ODgwLCA4NjE0LCA2NTIyMCwgNDE0OTMsIDEyODY3OSwgNDE2OTksIAorICAgIDEwNzYyLCA0Mzc4MCwgMTI5OTksIDExOTI0NSwgMTI4NDk0LCA4MTA2LCA0MTI4LCAwLCA2Mjc0LCA0NDk0LCA5ODMwODIsIAorICAgIDQwMTIsIDEwMzk1LCA5ODM1OTEsIDQzNjMzLCA2NTQ0NywgNzgyNjAsIDEyMDk3MywgMTEwMDQsIDY5NSwgNzM5LCA2OTYsIAorICAgIDc2MTEsIDEyMTA3MywgNDI3NTUsIDc0ODAyLCA5MjI3LCA3NTA2LCA3NTEwLCA2OTkzNywgNjkxLCA3MzgsIDc1MTEsIAorICAgIDc1MTIsIDc1MTUsIDM4NjgsIDY4OCwgNDE4NDcsIDY5MCwgMjU0OCwgNzM3LCA5NzQsIDgwMDMsIDc0MDYsIDEyNzM1MywgCisgICAgMTIwMTY2LCAxMjg2ODgsIDM5ODUsIDY2NDI1LCA2NTg2MCwgNDE4NTEsIDcwNTEsIDY5Nzc3LCA0NjgyLCA3MTg3MywgCisgICAgMTI4MDksIDY0MDYsIDQ2ODUsIDkyNTA1LCAxMDg3OSwgMTAzNDcsIDQ2ODAsIDYzNDEsIDAsIDM4NTEsIDgxMzIsIDc0MzI1LCAKKyAgICAxMTkyNjMsIDEyMDg1NSwgMTI3OTQ4LCA0MTk1OCwgMTE5MTc2LCA5MTc5MDgsIDE5NDg1NSwgMCwgNDI2NTcsIDcxMDc1LCAKKyAgICA3NjQzLCA0MjM3MywgMTE3MTQsIDY3NTg3LCA0MzU2OCwgOTgzMTc1LCAxMTcxNywgNzY1MCwgMTA1OTQsIDY0OTUxLCAKKyAgICA3NjQ3LCA3NjQ5LCAxMjgxNTUsIDc2NDYsIDAsIDc4MDgyLCA5NjUxLCAxMjY0NzUsIDM4OTEsIDEyNzIwNSwgMCwgMjMzNywgCisgICAgMTczNSwgNzQzMjQsIDExMTM0LCAyMzYzLCAxMjEwMDgsIDkyNDQzLCA0MzU2MSwgNjc3MDYsIDEyODAzMiwgNzQxNDYsIAorICAgIDE4NjAsIDc0OTUsIDc1ODAsIDU4MTIsIDc0OTcsIDc1ODQsIDExOTE0MCwgMTI3ODUzLCA3ODc1MywgMTIwMzQ3LCA3NzI3LCAKKyAgICAwLCA4NDk4LCA2OTgxOCwgODk0OSwgMzA2NSwgNDI3MTksIDcxMzUsIDE1NjksIDkyMzc1LCAxMjUzNCwgMTIxMjQsIDc2OTAsIAorICAgIDAsIDEyNTMzLCA5ODM3OTYsIDY0MTgsIDQ1NDMsIDc4MDg2LCA2OTY5LCAxMjg0NDQsIDc0ODAwLCA3MTA1MSwgNjc5NzQsIAorICAgIDEwODU5LCAxMjg2NTAsIDk4MzgwMSwgNjM4OTQsIDEyMDc2MCwgMTIyODIsIDY2MTkyLCA5ODM1ODMsIDc0NTkyLCA4ODUwLCAKKyAgICA3NDI3NSwgOTIzOCwgMTA2MTcsIDY4MDYzLCA5MTc5MDksIDkyNjI1LCA5MTc4MDEsIDEyNzkxLCAwLCA5NDA2OSwgCisgICAgMTI3ODQzLCA0NDQ3LCA3MTA2NSwgMTI3OTMsIDEyOTAwLCA5MjM3NywgMTA5NTAsIDk4MzQ0OSwgNzQ2MzksIDEyNzkwLCAKKyAgICA0MTQwMCwgMTE5MTI4LCA2NjYwNywgMTI3OTIsIDQyMjMyLCAxMTkyMzksIDE3NDQsIDEyNzg5LCAxMDM2NiwgMTIzMTcsIAorICAgIDQxMzEwLCAxMjA3MzAsIDQxMzk5LCAwLCAwLCA1NTI1OCwgMCwgMTI2OTAsIDEyNzc2MywgMCwgNDM2NzIsIDEyNzg0MCwgCisgICAgNDE2NTIsIDI5NzQsIDkwMTAsIDExMzE1LCA5ODM4MDgsIDI3OCwgMTIxMjA0LCA0MTQwNSwgNDM4NzEsIDAsIDEwMDc3LCAKKyAgICA2Mzg1MywgNzQ1NTcsIDQyNTg2LCAwLCAwLCA2MDAyLCA2NzMzNSwgNDM1NTMsIDExMTg5LCA2NzMzOCwgNjczMzcsIAorICAgIDEyNzg3LCA0MTMwOCwgNzkzNCwgNjUzMDYsIDEyMDI2MywgMTIwOTQwLCA5NDA0MiwgODY0NiwgMTI4MjU3LCA3NzgyOSwgCisgICAgNzEzNjAsIDAsIDY0MTMsIDY1NTAsIDExMzc1OSwgMTk0MCwgMjgwOSwgNDM2MzcsIDIyMCwgNjUxOTMsIDQzNTUxLCAKKyAgICAxMDY3OCwgMTAwNDQsIDY4ODQxLCAxMjgxMjEsIDk4MzgxNiwgNjgyOTAsIDY0MDMsIDU3MDcsIDEwMzkzLCAxMjc1MzIsIDAsIAorICAgIDY2NjE0LCAwLCAwLCAwLCAxMDI5NywgMCwgMzc0MiwgNjczMzEsIDM5NTksIDAsIDEyMDQ2NiwgMCwgMjQ2NywgNjg4MDYsIAorICAgIDYwMDMsIDYzODQ0LCA2NjYzLCA4MDQwLCA5ODMyMjAsIDQzNzU4LCA0MTgyLCA3ODE3MSwgNDY3NiwgMTIwNTAxLCA5MjEwLCAKKyAgICAwLCAyNTEwLCAwLCAxMDIwOCwgNzgxNjgsIDkyMzYxLCAxMTU0MCwgNDM1NDYsIDY2OTIsIDY4MzcsIDQxMDYwLCAxMjgwMTgsIAorICAgIDQ2NjgsIDkwODMsIDAsIDAsIDc4MTQ0LCAxNTU5LCA2MzgzMSwgOTY3NywgNjczNDAsIDY3MzQ3LCA2NTI1NiwgNjczNDUsIAorICAgIDY3MzQ0LCA5ODMzNTIsIDk4MzI2NiwgMzY1LCAxMjA1NiwgNDMwMjcsIDEyMDQyMywgNDE3MTYsIDEyODIzNiwgNjczNTIsIAorICAgIDY3MzUxLCA1NTE2LCAyODQ1LCA3NzE3LCA4MDM2LCA0MTcxNywgNjczNTMsIDU0NCwgMTIwNDUsIDYyNzgsIDc0NjMyLCAKKyAgICA1NTE1LCAxMjkxODYsIDEyMDg4NCwgOTgzMDUxLCA2NTMzOSwgNDMyMjEsIDIyMTEsIDAsIDU1MTcsIDcwMTE2LCA3NDIyNSwgCisgICAgNzQ4NDEsIDY3ODg0LCAxMjg0MTQsIDY3ODkwLCA2Nzg4NSwgNjc4ODAsIDY3ODgxLCA2Nzg4MiwgNjc4ODMsIDEyMDE5OSwgCisgICAgMTE4ODgzLCA2Nzg3OSwgMTI3MTg4LCAxOTAyLCA2Nzg4NywgOTYzOCwgMTI5NzYsIDEyNjU0NiwgMTI0ODMsIDEyMzY4LCAKKyAgICA0MTc2OSwgNDI3MjYsIDQxNzY1LCA3MzYxLCA2NjY3LCA2Nzg3NCwgNzU1NiwgNjc4NzgsIDc0MzUxLCAxMTI2NCwgOTg5LCAKKyAgICA0MjY3NywgNjc4ODksIDkzMDQwLCAxMzExLCAxMjg5NDksIDQzMjYsIDExMDAwLCA2MzgyNCwgMTMwNjgsIDEwOTMyLCAKKyAgICAxMjg4ODAsIDY5MTcsIDc4MTU1LCAxMjA4MzcsIDk0OSwgNzc4ODIsIDkxNzk2OCwgNjE0OCwgODYwNSwgNDIyNTMsIAorICAgIDc4MTc3LCA2NjkwNiwgMCwgNDI3MTUsIDcxNDMyLCA3MDI4MiwgOTgzMzczLCA2Mzg3MSwgMCwgNDE3OTYsIDEyNjksIAorICAgIDY1MzAsIDEyMTQxNCwgNjUwNTcsIDcwNDkzLCA1MTQ0LCAxMjIyMSwgNDI3MTYsIDY4Mjk5LCA0NDMxLCA0MzMxLCAKKyAgICA5ODM3MjksIDEyODY3NSwgNDE4MzQsIDUyNzksIDEyMTM2MiwgMTAzMzYsIDgzMTIsIDAsIDQyNzAxLCA5Mjk1OSwgMCwgCisgICAgNzgxNjUsIDY2MDM2LCA3MDE2NiwgMTIwOTM3LCA2NDI4LCA0MjI3MCwgOTgzNzI2LCA5ODM1OTYsIDQzMDU5LCA0MjY2NiwgCisgICAgNTI1NiwgMTA2NywgMjU1LCAxMjEzMSwgMTI4NzQyLCA5NDkzLCA3NDk5MCwgNDEwMTQsIDExNzkzLCAxOTQ5MjAsIAorICAgIDEyMTE5NSwgNzQzOTQsIDQzNDYwLCAxMDY1MywgNDI3MjMsIDk4Mzg1NCwgMTE5NjMyLCA3MDQyNywgNjU2MCwgNzAxNiwgCisgICAgNzQyNzQsIDY5OTg2LCA0MzU1NiwgMzkyOSwgNjc5NzcsIDY2MTQsIDI3NjgsIDkyNTA0LCA5NzQ2LCA1MTM1LCAxMTgxMSwgCisgICAgMTI3OTYsIDExOTUzLCAwLCA2OTc2MSwgNTEzOSwgMzQ2LCA3NDMwMywgNjMwNSwgMTI3OTUsIDQ2NzUsIDUxNjgsIDc4NTUyLCAKKyAgICA0Mzg0NSwgNzQzMTUsIDc0MzYxLCA4MjUzLCA4ODE3LCAxMTM2LCA5MTc5MzEsIDQzNTYzLCA5MjIzMiwgMTI4OTE0LCAKKyAgICA2NjQxMCwgNzM5MiwgODIzMCwgOTM2NSwgNzExOTQsIDEyNzEwOSwgOTgzNjA3LCA2NjkxNSwgMTI4NDAyLCA0MDQxLCAwLCAKKyAgICAyMzU3LCA0MzI0MCwgMTI3ODYsIDIyOSwgNDM4MzQsIDExOTg4NCwgNDQwMDQsIDcxNDIsIDExOTg4MSwgMTIzNTAsIAorICAgIDY1NTU0LCAxMTk4ODIsIDcxMzA1LCAxMTk4NzYsIDEyNzg1LCA2Mzg2MywgNDM3OTUsIDc3NzAsIDEwNzEyLCA2NDg1MywgCisgICAgMTI2ODYsIDQzODMxLCA0MjM3NSwgNjU3ODAsIDEyNDk0NCwgNjYzNTIsIDEwNDcwLCA3MTExOSwgMTEwNTksIDEwNzkxLCAKKyAgICA5MTc5NDQsIDQ1MCwgMTE5MzI4LCAxMjcyNTQsIDEwNDMyLCAxMjA5NywgNTQ1MCwgNjQ2OTEsIDEyMzMsIDAsIDQ0MDA5LCAKKyAgICA3ODI4NCwgNjYzMzgsIDY2Mzk1LCA5MTc4MzIsIDE4MzksIDExODc5OSwgOTgzMjE5LCAxMDkyNywgMTcwMSwgOTgzNjY0LCAKKyAgICAyMzg4LCA0MTc0OSwgNDE3NjEsIDU0NTMsIDgzNjEsIDExOTg2NSwgODk1LCA1NDQ0LCA0MTc2MywgNjQ4ODksIDcxNDMsIAorICAgIDkyNDkzLCA3ODY3NywgOTgzMTM3LCA5MjQyOSwgNjk5ODMsIDY2NDMyLCA4ODAxLCAzMDUzLCA0MzQwLCA5ODMwNDQsIAorICAgIDEyODAxMywgNjU4MTIsIDEyMDY3NSwgNzAwMDEsIDQxODI0LCA2Nzk4NSwgMTIwMjAzLCA5MjYwMCwgMTI3MDUzLCA0MjcwMCwgCisgICAgMTk0ODA1LCAxMjc5ODAsIDE5NDgwNywgNzg2NzYsIDkyMzU2LCAxOTQ4MDgsIDEyNzg0NCwgMCwgNDQ5MywgNDMzNiwgCisgICAgMTI5MTcxLCAyMzE0LCA0MzYwMiwgNzg4MjYsIDExOTMyNSwgMTk0ODExLCA0MjQzOSwgNjQ2MzgsIDQyMzI3LCA0MzUyOCwgCisgICAgNDQ4OSwgNjg3NTAsIDEyNTExNiwgMTk0NzkzLCAxOTEyLCA0MjM4NSwgMTAzMDYsIDEwMzcwLCAwLCAxOTQ3NjEsIDg4NjcsIAorICAgIDEwMjUwLCAxMDI1OCwgMjcxMiwgMTYzNSwgNzEwNjQsIDE0MTAsIDc4NzYzLCA5ODMyNTIsIDExODg3OCwgOTgzNTY3LCAKKyAgICAxMjg3MTUsIDk5MTksIDEyMDUyOCwgNTU5LCAxMjgxNTcsIDQxODI1LCAxMjEyNzQsIDc0NjQxLCA0ODkyLCA3NDAxNiwgCisgICAgMTIxNTAyLCA2NTQyLCA0MTk1NywgMTI4ODY1LCA1Nzc3LCAxMjcxNjcsIDc1OSwgNjU3NDksIDIwNzksIDY1MjQ4LCAKKyAgICAxMjc4OCwgNjQ0ODcsIDY0NTUyLCA5MzA2MywgMTAyMjMsIDQyMDYyLCAxMjEyNzksIDAsIDc0MjQ2LCAzNjY4LCA2NTc1NCwgCisgICAgNDM1NjAsIDEyMjI2LCA2Nzk5MSwgNjUxNDksIDIzNDAsIDQxOTU5LCA3MTQ2MywgMTk0Nzg1LCAxOTQ3ODgsIDQzNjE4LCAKKyAgICA2NTc0NywgMTA5MzcsIDI5NjIsIDAsIDIzMjEsIDM1ODcsIDY1NzQ1LCA2NzIzNiwgODkyMSwgOTk1MiwgMTI4OTQxLCAwLCAKKyAgICA0MjcxNCwgOTk1MSwgNDM0MDksIDE5NDc3MCwgMjk0OSwgNjYwMTIsIDE5NDc3NSwgMTk0Nzc0LCAyOTU4LCA2ODM1OSwgCisgICAgNDE4MjAsIDIzMDAsIDIzOTUsIDEyMDA2MSwgOTk3NiwgMTIwMDQzLCAxMjAwNTAsIDcxODk2LCA2ODIyMCwgMTI4MTQzLCAKKyAgICA0MjgwOSwgNDI4MDcsIDcwNzk4LCA2NjI5MCwgMTAxOTgsIDQxNTAsIDY0MzcxLCA4MzE4LCA0MTc5MCwgNjc5NzYsIAorICAgIDQxODk4LCAyMzYwLCA0MTc5NCwgOTE3OTQyLCA3MDc5NiwgOTIxNjMsIDkzMDMzLCAwLCAyNDE4LCA5ODMwOTgsIDI0MTEsIAorICAgIDExMzM2LCA3OTksIDYzODIzLCAxMDI3NiwgMTAzMDgsIDEwMzcyLCA5MTc1NDEsIDQxNzcyLCA0MjgxMywgMjMxNywgCisgICAgMTAyNjAsIDExODk4MCwgNTUyODQsIDc4Njg2LCAxMjcxNzcsIDEwMzg0LCAxOTQ3OTQsIDEyMTE0NywgMTI5MTExLCA3NzUzLCAKKyAgICAyMzUxLCA2NjU1LCA2NDQ4OSwgNjk5MzEsIDcwMTk5LCA3Nzg3MiwgNDQ0MywgNDI3NzksIDIzMCwgMCwgNjgwNjcsIAorICAgIDQzNTQ5LCA0ODU1LCA0MjE1MCwgNjU3MzksIDU0NDEsIDQxODk2LCAxMDI4OCwgMTAzMjAsIDAsIDg1NSwgNzA0NiwgNjEwOSwgCisgICAgNjUwNDUsIDYzODM5LCA3ODE5OCwgMjA0OSwgMTAwOTgsIDkxNzc3OSwgNzQxNDUsIDEyNzk0MywgMTAyNjQsIDEwMjgwLCAKKyAgICA5MTg0LCAxMDM3NiwgNzAxMywgNDQ2NywgNzg2ODQsIDkxNzU1NCwgOTIyNjAsIDQxODg3LCAwLCA0ODYyLCA5NzM1LCAKKyAgICA2NTM3LCAxMjA1OTEsIDc0Mjg2LCAzOTE0LCA5MjE3OCwgNjg4MjMsIDkwNjUsIDEyOTYxLCAwLCAxMjA0NTYsIDkyMjUzLCAKKyAgICAxMjgyMDQsIDI4OSwgMTI4NzE0LCA0Njk0LCAxMTQyMCwgNDY5MCwgMCwgMTIwNTE0LCA5MTc5NzgsIDQ2OTMsIDczODkzLCAKKyAgICA0MjcyNCwgNjk5NzcsIDQ2ODgsIDEyMDQ1NCwgMTI4NTA3LCAwLCA2Nzk5NCwgODIzOCwgMzExMCwgMTIwMTYyLCAzNTY1LCAKKyAgICAxMjAxNjMsIDY1MjgsIDc4Mzg3LCA0MzAzNSwgNjk4OTgsIDIxOCwgOTgzODUwLCAxNTIwLCAwLCA0Nzg2LCA5ODMxNjgsIAorICAgIDQzMjI1LCA0NjAyLCA5MjQwMCwgNzgxNjcsIDEwMDg4LCA2NTQ4LCAxMjExNTcsIDEyMDE1NiwgNDM5NzgsIDg5ODgsIAorICAgIDg4ODgsIDkyNzI0LCA3NDgxMiwgNjk3MDksIDk4Mzk2NywgMTA2NjYsIDAsIDczOTAyLCA2OTc0MCwgMTIxNDM2LCAwLCAKKyAgICA5OTc1LCAxMTM3MDQsIDExOTkwMiwgNDY4OSwgODkzMiwgMCwgNjU1NjAsIDExOTIwOSwgNzQ0NDEsIDc4ODEwLCAwLCAwLCAKKyAgICA2Nzk4NywgMCwgMTI4ODI4LCAwLCA2Nzk4OSwgMTE5MDI5LCAxMDA2NSwgODIwNywgNzE5MDAsIDkyNjEzLCAxMjgwMTEsIAorICAgIDEyMTAyOCwgNjYyLCAxMjg3MjAsIDkyNDQsIDE5NDg2MywgODMxODMsIDExOTI2MSwgOTgzNDMwLCAwLCAxMjA5MDEsIAorICAgIDkxNzgzOCwgNDE5MjksIDAsIDcxMDg0LCA2NjY3NCwgNDE5MjYsIDY5OTk0LCAxMjA0NDMsIDEwNTEzLCA2NDYzNywgCisgICAgMTk0ODYyLCA2ODAxMywgNTIsIDEzMTE4LCA2NDc1LCAxOTUwMDQsIDgzNDc5LCAxMjA5NSwgMTAyMjUsIDQ4MTIsIDkyNTc4LCAKKyAgICAxMjg0ODYsIDY3OTkyLCA3NDA4NSwgMCwgMzk3OCwgMTI4NDI1LCA5MTc5NDUsIDc0MDE1LCAxMTU4MiwgOTI3NjgsIAorICAgIDEyMjgxLCAxMjcwNDMsIDY1NDQsIDEzMjQxLCA5Mzk2MSwgNjk3ODIsIDEyNTAxNCwgMTk0ODYwLCAxMTc2NSwgNjUyNTgsIAorICAgIDEwMzY5LCAwLCAxNTg1LCA3MTkyLCAxMDI0OSwgNDIyLCAxNTAwLCAyMDM2LCA5ODYsIDE5NDg1OSwgNjQzOTQsIDU3ODEsIAorICAgIDU1OTksIDY0Mjk0LCAyNDk0LCAxMjA0NTAsIDQ4NjEsIDc0MDIxLCA2NDMzNCwgNzgyMDMsIDEyNzgwOCwgMCwgODM0NDQsIAorICAgIDY1MTAyLCA4OTYxLCA2NTg0MiwgMTAyNDMsIDEwMjQ1LCA3MTkwNywgMTIwNDEwLCAwLCAxMjA0NTMsIDY0ODIxLCA5NDc4LCAKKyAgICAyNTA4LCA5MjY4MywgMCwgMjAyLCAxMjgyNDYsIDc0MTMxLCAxMjQyLCA2NTUxNCwgMTIxMTcwLCA2Mzk0MCwgMTIxMzYzLCAKKyAgICA2NDUzMywgNzE4ODMsIDEyMDQ0NiwgNjc4NDIsIDExOTkwLCA5MjQwNSwgNjM5MzksIDQzMzc1LCA2NTQ0MCwgMjUwNCwgMCwgCisgICAgNzg2NzEsIDY0ODI5LCA5MzAyMCwgNjk0MywgOTE3OTM0LCA1ODU5LCAwLCAyODU4LCA5ODMzNjMsIDc0Mjk0LCA5ODM5MTQsIAorICAgIDY5MjM5LCAwLCA2Nzg3MSwgMTI5OTIsIDI3NTMsIDE5MzYsIDcwMDc4LCA2NzcwMSwgMjc1MSwgMTI2NjIsIDI3NjMsIAorICAgIDg5NTMsIDY0NzAxLCAxMDczMSwgMTI5MjIsIDcwNTIsIDkxNzgzOSwgNjY0MjQsIDYzOTkyLCAwLCA2MzkyMCwgNzQxMjgsIAorICAgIDI4NTYsIDExOTkxMCwgNDcsIDY5OTA4LCA3MTA1MywgNjU4NTgsIDE5NDgwNiwgMCwgNjc4MjksIDc4OTksIDAsIDg0MTcsIAorICAgIDQzNzk4LCA3MDcyLCA3NDE5NSwgMCwgNDAzMywgMTIxMjg5LCA0Mzk5MiwgMTIxMDgxLCAwLCAyMTIsIDY0NjAwLCAxOTAzLCAKKyAgICAxMjMyMCwgODM0ODQsIDEyMDg5NCwgMTk0NTYzLCAwLCA4OTE1LCAyNzU5LCA5NDUsIDY2ODksIDkzMDY0LCAwLCAwLCAKKyAgICAxMTg3OTgsIDEyOTEsIDc0ODI4LCAwLCAxMjA0MzUsIDk1MzEsIDEzMTU1LCA4NTA1LCA2ODM3OSwgMTIwNjIsIDEyODE5OCwgCisgICAgMTIxMjE2LCA2NTQ4NywgOTIxODksIDQxODM3LCAxMjA2MTEsIDgyNDYsIDEyODg3NCwgOTMwNjYsIDAsIDEyMDQzMywgMCwgCisgICAgNjM5MzUsIDczOTYyLCAxMjA4MDYsIDY0Nzg3LCA0MzUyNCwgMCwgNjQ0MjYsIDk4MzA5MiwgMTk0OTQ4LCA5MTc4NjYsIAorICAgIDkxNzc4OCwgNjU2NjQsIDY2OTMsIDk4NDMsIDAsIDg2NzQsIDExOTg4NywgMTI4ODEyLCA5MjcxNSwgNzA3ODgsIDEzMjAsIAorICAgIDEyMTQ2MSwgMTY3MywgNDgxMSwgOTIzODMsIDU5ODYsIDkzMzgsIDMwNDYsIDc0NDgwLCA1OTg1LCA5MTc5MjgsIDExOTU5OCwgCisgICAgOTgyMCwgMTE5ODkyLCAxMjE4NywgOTgzODQxLCA3MTA0MSwgNTk4NCwgMCwgNDMzMDgsIDQzOTMsIDY3NjUwLCA5ODMyMjcsIAorICAgIDAsIDc0ODIyLCAwLCA3NDgyNiwgNjQ3MzMsIDk4MzIxNCwgMTI3ODk4LCAzNDkxLCA2NzE0NiwgMTIxMTQyLCAxMjgyMTksIAorICAgIDM1MTQsIDY1NDg1LCA3MjQyOCwgNzQ5MiwgMTI4ODYwLCA3NDYwNSwgOTI0ODMsIDc1MTQsIDk4MzM2OSwgMTI2NTg1LCAKKyAgICAxOTQ3MzEsIDc1MDIsIDc1ODcsIDY4MzUzLCA2MzkyMSwgMTIxMTc4LCA2MzkyNSwgMTIwMTYxLCA3NjEwLCAyMTksIAorICAgIDEyODE1OCwgNzg3MjIsIDY5MiwgNDM1ODgsIDY4NDg1LCA0MTYzNSwgNDMyNDEsIDk2ODgsIDcxNDcsIDk1MzUsIDAsIAorICAgIDkzOTkxLCAwLCA2NDUzMCwgMCwgNjQ2MTAsIDExODA0LCAwLCA3MTQ5LCA3NDUzLCAwLCA4MDEzLCA2NjM5NiwgOTIzMDEsIAorICAgIDAsIDg4OTUsIDUyNTMsIDcwMDI1LCA1NDU4LCA5MTc2MjksIDI4NjYsIDEyOTA0NSwgMTI3ODYwLCAxMTA5OCwgNjg0MzMsIAorICAgIDY3MDAsIDEyMDQ4NCwgMCwgMTIwNTgzLCAxOTQ4MjQsIDg5NjIsIDc3OTYwLCA5NjQxLCA0MzY5NCwgNzA1OSwgOTgzNjc3LCAKKyAgICA2Mzk5NywgOTYwNCwgNzg3MDAsIDc0NDEsIDYzODI2LCA2Nzk3MCwgODM0MzUsIDY0MzkyLCA5MjYyNiwgOTgzNjg3LCAKKyAgICAyODQ0LCA3NDYxMCwgNDE5NzQsIDY3Mzk3LCAxMjEzOSwgNjc5NzEsIDAsIDAsIDMzNTgsIDY1Mjk1LCA5ODM4OTksIDMxMDQsIAorICAgIDE5NDczNCwgMCwgMTIxMzA0LCA5ODMyMzUsIDUzMDgsIDgzNDM0LCAyOTAsIDAsIDEyMTMzOCwgMjg2MiwgMjc5MiwgCisgICAgMTk1MDg4LCA5Mjk2MywgNzc5ODQsIDMyNjgsIDY2NTkxLCAwLCA2NTUyLCA0MjM2NywgNzAzNSwgMTIwNTU4LCAwLCAwLCAKKyAgICAxODE0LCA3ODQ2NCwgMTAyNDAsIDY2Mjg1LCA3NDMwNSwgMTI4MzgyLCA3NDUyOCwgNjU5MDMsIDcxNDU0LCA0MjY0NiwgCisgICAgNzYwNiwgMjU5MSwgMjgzNywgNDM0MSwgNDM1MTMsIDY0NDgyLCA5MjUyNCwgODE2MywgNjUyNzAsIDAsIDc3OTMyLCAwLCAKKyAgICA5MTEyLCA3NDQzMSwgODYzLCA5NDkwLCA3NTAzNywgMTI4MzQ5LCA0MzMyMywgMTIwNTEzLCAxMTk4OTcsIDkwNzEsIAorICAgIDY4MDU0LCAwLCAzNjU0LCA3Nzg5LCA5NjM3LCAxMjExMzYsIDI1MzUsIDY1NTA0LCA3NjUzLCA0MDk5MywgOTI0MTUsIAorICAgIDY2NTg3LCAxMjQ5ODcsIDAsIDkyNDAxLCA0MzkyNywgMTEwMDYsIDEyOTI3LCA3ODA3LCA4MDczLCAxMjA5ODAsIDEwNjI5LCAKKyAgICAxMjc4NjksIDc0MDg4LCAzMDU2LCAxMDgyMywgMTI3MjY3LCA5MjM5MSwgODc2MiwgMTA1MDgsIDY5Njg5LCA3Mzc3MCwgCisgICAgNDM5NjksIDQzMTkzLCAxMDczNywgMzQ2MywgMTIwOTc1LCA5ODMzNTEsIDY2NjMzLCA4Njk1LCA0ODE1LCAxMTMyMiwgCisgICAgNTgxMSwgMTIzNDUsIDcwNDksIDExODgxMSwgNTE5NSwgMTk1MDgxLCAwLCA2NjYzOSwgOTI5MzksIDAsIDAsIDEyODA0MSwgCisgICAgNjc5MDMsIDY3NzM5LCAxMjYyLCAxMjAxNjUsIDY1NjEsIDE5OTM5LCAxMjg2NzMsIDAsIDEyNzMxOCwgMTE5OTA2LCAKKyAgICA3MDMwMCwgMCwgOTgzMDk3LCAwLCA5ODM2NjcsIDExOTkwNywgNjQ2MTIsIDExOTkxLCAxMjA2NTQsIDAsIDkyOTQzLCAKKyAgICAxNTAyLCA5MTc1NjgsIDEyNzk4OCwgOTEwNywgMTI3MzE2LCA1NzAyLCAzNjU1LCA2NzY2MSwgODQzMCwgMCwgNzEyMjMsIAorICAgIDEyMDc1OCwgMCwgNzQwNTcsIDk2MDMsIDEyODA3OSwgNTI1NCwgMTIwNzQyLCA3NzI0LCA3NDM4OCwgNjgzNzUsIDEwNzk2LCAKKyAgICA1MTI5LCAwLCA3MDgxNiwgNTkwLCA3NTc5LCA1NjE0LCA1ODkzLCA5MjI4MCwgMTE3MjAsIDkyNDk2LCAxMTcyMSwgNzA4MDQsIAorICAgIDQ3OTgsIDEyMTQ2OCwgMTE5MzE2LCA2NjAzOCwgNDc5MywgNjc4NTEsIDExNzI2LCAxMjc1NDEsIDc0MjA0LCA2ODYxMCwgCisgICAgNjg4MjQsIDY4NjI2LCA4OTQsIDMwMCwgMTIwODc1LCAxMjMwNiwgNjYyMzUsIDgwMDQsIDAsIDExOTU3NCwgMjU2MiwgCisgICAgNzAxNTYsIDEyMDg1NiwgNDI1MDMsIDkyOTAwLCAxMTY1MiwgOTE3ODEzLCA5MTc3OTksIDExOTI0MSwgNjQ2OTksIAorICAgIDEyNjU2OSwgNTA5NiwgNTA5NSwgMjg2MywgMzQyNCwgOTIyNDQsIDEwNDU0LCA0MjUzMCwgNTA5NCwgNzA4NzMsIDAsIAorICAgIDEzMTU2LCAxMjkwNTcsIDEwODMyLCA1MDkzLCAwLCA2OTg1MiwgNzI0MzAsIDUwOTIsIDEwNzA4LCAxMTMyNywgMCwgNTA5MSwgCisgICAgMTc2LCAwLCA5MTUzLCA0MTA0LCA3ODU5OSwgNzg2MDEsIDEyMTUsIDQyNzEyLCA1NzQ0LCAxMjI3MiwgOTgzMiwgMTE3NzcsIAorICAgIDcxMjk5LCA2NjgxNywgNDI4ODEsIDAsIDg5ODAsIDExODk4OCwgNjc4NjEsIDg4NDQsIDcyMDksIDAsIDAsIDQyNzgsIAorICAgIDEyODgwOSwgMCwgMTE5MTYwLCA3MDgyMSwgOTA3NCwgNDM0OCwgMCwgNjU1NTgsIDY1OTQ2LCA4MTEzLCA3MDg3LCA1MjU1LCAKKyAgICAxNzg2LCA2NjEsIDEyODExNiwgMCwgOTE3OTI1LCA3NDQyMywgNzEzNDUsIDU4NiwgNzQ0MTQsIDY0MzU5LCAxMjY3LCAKKyAgICAxMjgyNjksIDY1NDY4LCAxOTQ5NjYsIDY1NzMxLCAwLCA3MjQwNSwgMzYyMSwgOTI5MzIsIDY2NjY2LCA2NDIxMSwgMCwgCisgICAgNjU2MiwgMTI5MjgsIDE5NDkwNCwgMTIyOCwgNjU0OTAsIDExMzgzLCAwLCAxMjc5NTMsIDcwMzQzLCAxNzE0LCA3NDQwNiwgCisgICAgMTIwNzUxLCAwLCAxMjExMTMsIDk4Mzk3NiwgNjYyMjUsIDcwMTEwLCA3MDg2NywgNDI2NjAsIDExNDM2LCAyMDcwLCA2NCwgCisgICAgMTIwNjk0LCAxMjEwMjUsIDEwMjkxLCAxMDMyMywgMjgyNiwgMTEzODA5LCAxMjY1MTAsIDAsIDQyMDA4LCA5NzA4LCAKKyAgICA0MjcxMCwgMCwgNDIwMTEsIDQxOTk5LCA5MjE2NCwgMTIyMDYsIDU4MzksIDE3MDIsIDEyNDAsIDc0MDY1LCA2Mjg2LCAKKyAgICA5Njg5LCA5ODM5NjksIDY1ODMzLCA3Nzg0OCwgMCwgMTc2NSwgMCwgMTI4NjIyLCA2NTU4OCwgOTIzNTAsIDk4MzI4MSwgMCwgCisgICAgODQwMSwgOTgzOTI0LCA0MjAxNCwgMTI3MzA3LCA3MDMwLCAxMjA5NjksIDEwNDc5LCA2NDk1OSwgMjg1MiwgMCwgMTIxMjI1LCAKKyAgICAwLCA3MDgxOSwgMTI4NTg2LCA5MTc5NTEsIDY5NjMsIDEyNjcwNCwgMTI2NjcsIDY0NTQwLCA3NDc4NiwgMTAxNDcsIAorICAgIDEyOTM1LCAxMjc1NjgsIDEyNjQ4MywgMTIxMjgxLCAwLCAwLCA3ODc1NywgMCwgMTEzODE1LCAxMjEzMDIsIDAsIDk5OTQsIAorICAgIDEyNDY3LCAyODY0LCA2NDcxOSwgMTE0OCwgMTA0MzUsIDExNDYyLCA0MTY3NSwgNzA4NCwgMjc2NSwgNzg0NjYsIDQzMzgyLCAKKyAgICAwLCAxMjA3MTksIDEyODE4OCwgOTI1MTYsIDY2NjYyLCAwLCA3ODEzMywgOTM2NCwgMTk0Njg1LCA3NDQxNiwgMTI3Nzk3LCAKKyAgICAwLCA3Nzk4OCwgMjYzLCAxMDQ0OSwgNDEyODgsIDAsIDQxODM5LCA3ODM4NSwgOTgzNzQyLCA3MDMxMywgMTI5MTQwLCAKKyAgICA2OTMxLCA2OTcyMiwgNDMyNjEsIDcxNzcsIDcwMTA1LCA5MjY1MiwgMCwgMCwgNDI2MiwgMTAyODUsIDEwNzIyLCA0MjAyMCwgCisgICAgMTI2NTc1LCA2ODA2LCA2OTkyLCA0MjAxOSwgMCwgNDEyOTAsIDk4MzcxNiwgNzUwLCAwLCA3MTMwNCwgMTAxNjMsIDYzOTEzLCAKKyAgICA3MTMwMCwgNzAzMiwgNTk1NCwgNjQ5MzEsIDQzMTQsIDEyODYwMCwgMTk4LCA2ODQ1MywgNzMwLCAxMjAwOTQsIDYzOTA3LCAKKyAgICA3Nzk5MywgNzA4MTgsIDEzMTY1LCA3MTA3LCA3NDE3MSwgNDI4MDQsIDY3OCwgODI0MCwgNzgwMTUsIDEyNTAwNSwgNDEzNzgsIAorICAgIDExMDA4LCA2OTM4LCA3MDAyNiwgOTI2MzcsIDIwOTcsIDY2MjQ2LCAxMjA1NjAsIDcwODIzLCAxOTQ5OTAsIDk4MzYwNCwgCisgICAgMzg5MiwgNjg2MzIsIDY5NjQyLCA2NzEyLCA2NjA0NSwgNDE0NzAsIDY0ODA1LCAwLCA5ODMyMTMsIDEyNjUxMSwgNjQ4MDEsIAorICAgIDEyNzgxOCwgNDk3LCAxMjEwMCwgNTk1MywgOTI2NjcsIDc3OTYsIDY5NjY5LCA0MzI1NCwgNzM4MzEsIDAsIDEwMjkzLCAKKyAgICA1OTUyLCAxMjgxLCA0Mzc0NywgMCwgMTIxMzk5LCAxMDY3NywgNjA0LCA0MTA5NywgOTE4MiwgMTg1OSwgMCwgOTI2MDMsIAorICAgIDM0MjUsIDEyNzQ4OCwgMTI2NTIzLCAyODM2LCA5ODM3MzgsIDAsIDk3MDcsIDExMzcxOCwgNDMyMDIsIDAsIDAsIDY1MTk5LCAKKyAgICAxNzM4LCAxMjgzMTEsIDY3NzA3LCAyODMyLCA5MjcwMiwgOTY3MCwgMTExMDEsIDAsIDY2Mzc0LCA5MTc5NTYsIDExOTU1MiwgCisgICAgMjgyMiwgNjgxMjIsIDQ0MzYsIDkyNTE5LCA5ODMwODEsIDczNzUyLCA3MDMwNSwgNjQ4NzIsIDkyMzQwLCAxMzMxLCAwLCAwLCAKKyAgICAxMjEzNzcsIDEyNzA4LCA5MTc5NTQsIDUwOTAsIDUwODksIDEyNzk3NywgOTE3OTUzLCAxMTkxMDksIDAsIDcwODI2LCAzMTksIAorICAgIDExODg0NywgNDM0NzksIDk0NzcsIDAsIDAsIDUwODcsIDc0ODg2LCA3NjQwLCA5NiwgNTA4NiwgOTgzNTk3LCA5MjM3OSwgMCwgCisgICAgNTA4NSwgNjQyODYsIDkyNjY1LCAxMTM3MTcsIDQxNDIyLCAxMTk2MTcsIDExOTkwMSwgNDIzNTYsIDM3NzIsIDExOTA0MiwgCisgICAgMCwgNTAxMSwgMCwgOTgzMzI5LCAxMjY1ODcsIDAsIDEyMDY5OCwgMTE4ODc0LCA2Njc3LCA3NjAxLCAwLCA1OTEsIDY0NDE5LCAKKyAgICAxMTg5NTMsIDkyMjYyLCAxMTg4OTUsIDcwNzk5LCA3MDA4NCwgMCwgMTA5MzksIDYxMDYsIDY5MzMsIDQxMjcxLCA2NzYwLCAKKyAgICA3MTM0MywgNDUzNCwgNDEyNzAsIDEyODg3NiwgNjcxMzgsIDY1NTc0LCAxOTQ5NDcsIDkyMjQsIDY3MTQwLCAzNjcxLCAKKyAgICA4OTc2LCA2NzEzOSwgMCwgNDEyNzUsIDYzNzIsIDgyOTk3LCA1NTI2MSwgNzk2MywgNjM3MSwgMCwgNTY4LCA5MjM2OCwgCisgICAgNDEyNzMsIDEyMTQ0OCwgNzQ1MzEsIDY3MjgsIDAsIDk3MTUsIDEyOTI5NywgODI1OCwgMTE3NTMsIDc0ODIwLCAwLCA5NjAyLCAKKyAgICAxMTg5MTksIDQyLCAxMTE5MSwgNDM2ODgsIDY4MjQzLCAwLCA3NDU4LCAwLCAwLCA2NTM4NSwgNjcxMzUsIDY3MTM0LCAKKyAgICAxMTk1OCwgMTExNjUsIDkxNzgyMiwgMTI1MDg3LCA2MjU0LCA0MjcyMSwgNjYzMzYsIDgwNDUsIDExNTUwLCAxOTUwNjQsIAorICAgIDY3MTMyLCA2NzEzMSwgNDI4NTgsIDExNzg5LCA2NTg2OCwgNTU1NywgMTAxMzMsIDk3MzcsIDEzMTA5LCAwLCA5NDY3LCAKKyAgICA1NTU4LCA4ODc4LCA0Mzg0NCwgMTk1MDM2LCA3NDUxLCA2NzA2LCAxMDE0NiwgMCwgOTA4NiwgNjQ1NjYsIDk4MzE4NSwgCisgICAgNjQ1ODQsIDc0MzcsIDc0NTQsIDEyNTk0LCA3Mzc0OSwgNjgzNjIsIDQ1NDYsIDc3MzEsIDAsIDcwMDQ4LCA3NDI0MywgCisgICAgMTI1MDkyLCAzODA1LCAwLCA2NzEyOCwgNDQwMDEsIDQxMDA4LCAxMjgwNTIsIDYzMDcsIDE5OTQ5LCA2NzEyOSwgNzU0NCwgCisgICAgMTI0OTg5LCA0MzQ2OSwgMTIxMDk1LCA5ODM3MzUsIDEwMTUyLCA2NDQyMiwgNjUwOTEsIDY3MTI0LCA3NjAyLCA2NDcyOSwgCisgICAgMCwgNDM1MjEsIDAsIDQyMzAyLCA0MzcxMSwgNDM1MjMsIDQxNDQ3LCA1NTU5LCA2ODQ4MywgODcwNCwgMjM5NywgNTU1NiwgCisgICAgMCwgMCwgMCwgOTAxMSwgOTYzMCwgMTExNjYsIDAsIDkzOTk4LCA1NTA2LCA5MjQ5OCwgMTkxMSwgNjY2NTIsIDY3Njg2LCAKKyAgICA5OTYxLCA4ODQ1LCA2NjY5OCwgNjgzMjUsIDEwNzkyLCA4ODg5LCAxMjE0MDIsIDIwOTgsIDAsIDY0NzUxLCA3MDMwOSwgCisgICAgNjY2MjIsIDEyNjYyNiwgMCwgNzQzNjQsIDY4ODE2LCAxMjkxNTIsIDk4MzgwNSwgNDI5MDksIDc1NTIsIDcwMDkyLCAKKyAgICAxOTQ1NjcsIDY1Mzg0LCA3MjIzLCA0NTU5LCA5MzAxNSwgMTk1NiwgNDMxMzgsIDcwMjQsIDY1NzI4LCA0MzQ5MCwgMTIxMCwgCisgICAgMTk1MDc3LCA2NTE3NSwgMTAxODQsIDQzMTQwLCA0MzY1NCwgMCwgOTgzMjMzLCAxMjUwNDUsIDM4LCA4NTMzLCA2NjY2OSwgCisgICAgMTE5MTI0LCA5ODMyOTUsIDk4Mzc5MiwgMCwgNDM1NywgMCwgNzAyODksIDkxNzg2MywgNzQyMzMsIDk5NjcsIDc4ODg0LCAKKyAgICA0Mjg2MCwgMTE5ODM4LCAxMDk0MSwgNjU3MjEsIDY5NjIsIDAsIDgzMjc5LCAxMTM4MDgsIDAsIDExMDE0LCAxMjAxMjYsIAorICAgIDg5NDIsIDEyMDAwLCA2OTIyNCwgOTIyNjcsIDEyODUzNiwgMTE5NzQsIDY3MzYzLCA0Mjc3MiwgNDI2NTAsIDExNjUwLCAKKyAgICA1MDEzLCA5MjY2MywgNjg4MTAsIDY2MjEwLCAxMTg5MTQsIDY2MTMsIDkyNDc2LCAwLCAxMTE5MywgOTgzNzcwLCAwLCAKKyAgICA2NDcxNCwgNzE0NzksIDcwODAyLCAxMjE2MiwgMTIxMjAsIDQzNDc2LCA5ODM3NjYsIDExMDI0LCA3NDgxMSwgNjYyMjgsIAorICAgIDEwNTYzLCA5Mjk1NCwgMTI3MTk2LCA0MzUyMiwgMjQ2MiwgOTI5NTUsIDE4MzcsIDEyNTA4NiwgNjM5NzIsIDY5NTcsIDAsIAorICAgIDExMzgyMCwgNDk1MiwgNjU3MTgsIDY0NDA1LCA1NTA0LCA2NTcyMCwgNjU3MTQsIDY1NzE1LCA2NTcxNiwgMTI4MDI2LCAKKyAgICA3NTAxNiwgMTI3MTE5LCAzMTA5LCA2Mzk3NSwgNzQwMjgsIDEyNzIxMywgODEwNywgNjcxNTQsIDExMjcsIDQ1NSwgMCwgCisgICAgNjM5NjgsIDEyNzgzNSwgMzQ4MywgMTE5NTkzLCAxOTg5LCA5ODMxNzYsIDY5Njc4LCA5MTA0LCAzNTAzLCA2NTM3NSwgCisgICAgNjgzMDAsIDY2OTQsIDQyNjMzLCAxODY0LCAwLCA3NDMwNiwgNDE0NDYsIDI1NDAsIDc3MzYsIDEyMTQzNCwgNzQwNjQsIAorICAgIDEyODYwMSwgMTA1MjEsIDcwNzg2LCA0MjE3MywgOTcwNSwgNzQxMjQsIDg2MDQsIDY5NTUsIDEwOTE2LCA0MzY4NCwgNjE0OSwgCisgICAgMzg4NywgMTk5NTYsIDE0MTEsIDI4MjQsIDAsIDEwMTA2LCAxMjc4NjIsIDE0MDMsIDEyNTA1MywgMTM0NywgOTYzMSwgCisgICAgNzQ0NDQsIDk4Mzc1MywgMTI3OTk3LCA5Mjk1MSwgNzQ4OTcsIDg2NDAsIDAsIDI1OCwgMTY1NCwgMCwgMCwgOTgzNDc5LCAKKyAgICA0MzMxNCwgMCwgMCwgNDA0MiwgMTE0NzgsIDI4NzMsIDYzOTc3LCAxMTUyMiwgNDE2NjgsIDg1NDksIDEwODYxLCAxMjEwNTMsIAorICAgIDYzOTc2LCA3MDM3NywgNjg2MjMsIDY3MDgyLCA2NzA4MSwgNDEzOTEsIDY3MDg0LCA4MzQ2NSwgMzc2LCA2OTg3LCA5MjIxLCAKKyAgICAwLCAwLCA4ODIzLCAxMjg2OTcsIDEyOTQzLCA2NTE4NSwgNDE4NjksIDEyNjE5LCAxMjgwNjcsIDEwMTU0LCA5ODMwNDMsIAorICAgIDc0NDM5LCAyMDM5LCAwLCA3NDQ2LCAxNjg0LCA2Mzk3OSwgMTA5NzQsIDQ1OCwgMTIwNjIwLCA4Mjk1MCwgNjk3OTEsIAorICAgIDEyNzE2MSwgMTE5MTYsIDY1MDE2LCAwLCA2OTY3MSwgNDIxMTUsIDEyMTA1NywgMTIyODgsIDc4MDU3LCA2NzA4MCwgMTQ5MywgCisgICAgNDIxMTEsIDc1NTMsIDQwOTcsIDEyODE5OSwgMTMwODAsIDAsIDY1ODA4LCA2NjEwLCA2MDMwLCA4MDU5LCA3NTA4LCAKKyAgICAxMzEzMSwgNjcwNzQsIDY3MDczLCAxMjg1MDYsIDg3OTQsIDQxMjc4LCA0MTYyOSwgMTIxNTQsIDc1MDczLCA0MTI3NywgCisgICAgNjQ2NTgsIDk4MzQ1NiwgNjQzODAsIDY2MjUsIDQyOTExLCAxOTkwNCwgMCwgMTIxMzA1LCA3MTE5MywgNjUzNzEsIDcwNzgsIAorICAgIDEyODY5OSwgODMzLCAxMjgyMjgsIDYzNjksIDE5NDgxNSwgMTA5NzksIDQxOTUzLCA5ODMzNzAsIDQxNDM0LCA2MDYyLCAwLCAKKyAgICAwLCAxOTkxNiwgNjkxMywgOTMzLCAxMzQxLCA5ODQyLCA2NzIwLCA2NTc0NCwgNzEyMDAsIDk4MzU5MiwgMTIxMjIzLCAKKyAgICAxMjY1NjcsIDc0MDUsIDEwMTA1LCA2NTgxMCwgMCwgNDE2MzIsIDc0OTMsIDU1MjkwLCA5Mjg5MCwgNDE2MjIsIDAsIDAsIAorICAgIDExOTU1NiwgNzQ1ODQsIDc2MzIsIDk3MTYsIDE5OTU0LCA5ODA1LCA1OTkwLCA5MDAsIDAsIDYzOTU3LCAxMTk2MzgsIDAsIAorICAgIDM2MTIsIDAsIDY0Mzc2LCA5Mzk4NywgNTM4OSwgOTI1OTcsIDAsIDY1OTM4LCAyODM5LCA5NjIxLCA1ODIsIDAsIDc0MzY4LCAKKyAgICAzNzQ5LCA2OTQ5LCA3NTY5LCA3NDA2MSwgODMyMjIsIDgzMjIzLCA2OTU2LCA0NDAzLCAxOTk2MiwgNjU1NTksIDMyOTksIAorICAgIDEyMTAwNSwgMTk0OTM5LCAxMTkxMjcsIDkwMDIsIDAsIDc0MzcyLCA3NDIzNiwgODQ3OCwgNzU5OCwgNTQ2LCA0MjQ2OSwgCisgICAgNjU1NjksIDE5MTgsIDk1NDIsIDQ3MiwgNzcxNiwgMTAzMTksIDEwMzgzLCA2OTk2LCA0MzA3NywgNjM5NTIsIDg0MjUsIAorICAgIDM2MDIsIDgzMjgsIDExNzY0LCA4MzE5OSwgODMyMDAsIDY1MDY1LCA0MTE4MywgMTI5MDcsIDEwMjcxLCAxMDI4NywgNjg0LCAKKyAgICA0MzUyNSwgMTI3OTk2LCAyODU0LCA4MzIxNCwgNDU5MiwgNjU3NTUsIDgzMjE3LCA2NzEyMCwgMTE5NjMsIDQzNjIwLCAKKyAgICA2NzExNywgNzgyNDksIDY3MTIzLCA2NzEyMiwgNjcxMjEsIDk4ODEsIDQzMTE1LCA2NTc1NywgMzQxNSwgNjk2NzcsIAorICAgIDY3MTE2LCA4NjQ4LCAxMjgzNzcsIDY3NDEsIDQzMDQ3LCAxMTk5MDAsIDEzMTgwLCA3ODA3NywgNDE4LCAxMjA2NTMsIAorICAgIDY0NDk1LCAxMDI5NSwgMTAzMjcsIDEwMzkxLCA0MTc1MiwgNjY4NDYsIDg2NDEsIDQxNDQ5LCA4MzE5NCwgNzQxMDAsIAorICAgIDgzMTg2LCAxMDkxMSwgNjk0MiwgMTIwODc5LCAxMDI0LCA0Mjg0OSwgNDE3NTEsIDY5Nzc2LCA4OTQxLCA5ODM1NTYsIAorICAgIDQ1NTQsIDY2ODkyLCA5MDIzLCAxMTY4NSwgMTIxNDc2LCA5OTI4LCA2NzEwOSwgNjY4NjUsIDExNDM3LCA0Mzc0MSwgCisgICAgNjcxMTMsIDY3MTEyLCA2Mzk2NywgMTI5MDU2LCA0MTIwNiwgMTI2MjQsIDkwNDksIDQxMTg1LCA0MzE2NiwgMTIxMjc1LCAKKyAgICA4MTU5LCA5MjYxOSwgMTE2ODYsIDcxNDc4LCA2NTIyNCwgNDU2NSwgNDY1NSwgMTE5NTUzLCAxMjkwOTAsIDkyMTgzLCAKKyAgICA2NDUyMywgMTAzNDMsIDEwNDA3LCA5Mjc2NCwgNjY2NzEsIDExNDY2LCAwLCAxMjgwMDMsIDQyODkwLCA3NDAxMywgMTIwNTAsIAorICAgIDY4MjAxLCAyODYwLCAwLCAxMjc5MzQsIDcwODI4LCA0Mjc5MiwgNTc0MywgMTA0MjQsIDEyMDY1LCA0Mjg3MiwgMTIxNDAxLCAKKyAgICA0Mzg3NSwgNjcxMDMsIDg4NzUsIDAsIDY3MTAyLCA2NzEwNSwgNzUzMSwgMTI4NDcsIDI0MTMsIDExODkxNywgNjc0MDQsIAorICAgIDk2MiwgMCwgMTI4NTUsIDQxMTk2LCA0MjU2NCwgMTI3OTc1LCAxNTgyLCA5ODM3MTUsIDU1MDgsIDAsIDEyMDkwNCwgCisgICAgNzQ1ODgsIDEwODAxLCA2OTg3NiwgOTIzNTQsIDExOTIwNywgNzE3MywgNDk2LCAxMDQzOSwgNDMxMywgNjQ2MDcsIDY5NjM4LCAKKyAgICA3ODYwLCAxMjgwNDksIDkwNiwgNDI3OTMsIDI4NDIsIDY0MDUsIDY0NzIyLCAxMzEzMiwgNzk4LCA2NDY5NCwgMTI4MDEsIAorICAgIDg0MDYsIDExNTMsIDgzMjYzLCA2NDc4OCwgODMyNjUsIDgwNTQsIDkxNzQsIDY3MDg3LCA2NzA4NiwgOTk2NCwgNjcwOTYsIAorICAgIDQxNjExLCA0NjQyLCA2NjU3NCwgMTE1NTYsIDQyNTEyLCAwLCA3ODg1NywgNDIwODksIDc0NjEzLCA5MDA4LCAwLCAKKyAgICAxMjY1OTIsIDE5NTA5NiwgNDIwNzksIDgzMjQ4LCA3NzkyNCwgNDI1MTMsIDc3OTI3LCA0Mjg0MiwgNzM5ODUsIDY1Mjg1LCAKKyAgICA2ODMzOCwgODMyMzksIDgzMjQwLCA4MzI0MSwgODMyNDIsIDk4MzU5MCwgMTEzMzUsIDY0MDY5LCA0MjA5MywgMzkyMCwgCisgICAgOTE3ODY5LCAwLCAxMTExMCwgODMyNTUsIDQ1ODAsIDQxOTY3LCA4MzI1OCwgNjQzODQsIDgzMjUyLCA4MzI1MywgMzAyMSwgCisgICAgNDIwMDQsIDk4MzA5NiwgODMyNDksIDQyMzE3LCA0MTk5OCwgMCwgNjk0NiwgMTk0NzU1LCA5Mjk2NywgMTI4NDU1LCAKKyAgICAxMjgxOTMsIDY1MjA0LCAwLCA2ODExMywgNDI2OTAsIDk4ODAsIDQyMDEwLCA3NDgyNCwgNjQ1ODksIDEwMTExLCA2NDg3NSwgCisgICAgMTI3ODgwLCA2ODAzNSwgNDM5OTgsIDExMzYwLCA4MzIzMywgNzQxODIsIDgzMjM1LCA4MzIyOCwgNDIxNDksIDgzMjMwLCAKKyAgICA2ODUwOCwgOTE3OTkzLCA2NDk0MSwgNzc5MTksIDEyMDQyMSwgMTI4MDc3LCA3NDg4NSwgNTUyNDcsIDQxMTAsIDY2MDA1LCAKKyAgICA2OTU5LCAxMDkyOSwgNDI5MDcsIDEyODA4MCwgNjY3MDMsIDc3OTIxLCA4NjE3LCA0MTk4MiwgNjAyNSwgNjkyNDIsIAorICAgIDEyMTA2OCwgMTk0ODU0LCAxMjUxMzksIDAsIDk1OTcsIDQyMDk5LCA0MzE3MiwgOTgzMzc4LCAxMDExNywgOTgzMTY5LCAKKyAgICA5MjI5NywgNDE2MzYsIDE5NDg4OSwgNzM3MzgsIDEyMDY4MSwgODMwMSwgMCwgMCwgMTg3LCAxMjgyMzcsIDY1NjY5LCAKKyAgICAxMjgzMzksIDQ5NjMsIDAsIDY4NzY1LCAwLCA4OTY0LCA2NTY3NiwgNzc3NSwgOTgzODQ5LCA0MTk0OCwgMTI1MDAzLCAwLCAKKyAgICA4MzIzNiwgNDE5NDIsIDY1NDQ5LCAzMTYwLCAxMDA4MSwgMTMyMjYsIDQyMTIxLCA0MjQ3NSwgNDI2NjMsIDEyMDYxNiwgCisgICAgNDE3NjYsIDc0OTQ4LCA2NTg4MiwgNzg4NDksIDQxNzYwLCAxMTg5LCA5MDUsIDQ4MCwgMTA5ODUsIDQxNzMzLCA2Nzg1OSwgCisgICAgOTYyOSwgNjc0MiwgMTc0NSwgNDM2MjUsIDczODM1LCA3ODg4LCA4MzQwNSwgMzk4MCwgNzAzNzMsIDQyNjU2LCA0MTUwNywgCisgICAgODgwNiwgNzAyMywgMCwgNzQyNzksIDk0NDcsIDc4NjUxLCA3ODY3LCA2OTIxOCwgNjIzNiwgMTI3MTYyLCAwLCAxMDUwNSwgCisgICAgMTI2NjM4LCAxMjg1MSwgODM0ODksIDM0OCwgNTQ3NCwgMTIxMzgyLCAzMTAzLCAwLCA0MTc1MywgNzExMDksIDEyODYwNCwgCisgICAgMCwgNzg4NDQsIDc4ODQ1LCA0MTczOSwgNzg4NDMsIDQyNTE1LCAxMDkzMSwgNDE3NTYsIDQzMzQ3LCA0MjU2MCwgNTM5MSwgCisgICAgNDE3NDYsIDExOTE0NywgOTI1OTEsIDQxMjU5LCA1NTYxLCA2OTkzMCwgMjY5MSwgNjg3NTIsIDY1NTUzLCA3OTMzLCA1NTYyLCAKKyAgICA2OTgwMCwgMTI4MjY1LCA0MTI2MiwgMTI4MTQ2LCA2NDQyMSwgNzQ4NDYsIDQxMjUxLCAxMjcyNDIsIDAsIDM5NzksIAorICAgIDcxMjQ4LCAxOTQ4OTksIDY4MzMxLCA5MTc5MTIsIDY4ODQ3LCA5ODM2OTcsIDgzMzgyLCA3NDYzMywgNDEyNjYsIDY4ODM2LCAKKyAgICA2NjU2NiwgMTI4ODM2LCAxMDU4NSwgNjU3NDEsIDQxNzM3LCAyMjc1LCAyNjY2LCAxMjEyMzIsIDQxNzM4LCA4MzEsIDQxOSwgCisgICAgMTMxMjYsIDEwNzE2LCA4MzQwMCwgNDI4MjIsIDAsIDY0MzQsIDc0ODU3LCA2OTM5LCA3NzY2LCA2NDMyLCAxMjgxMDYsIAorICAgIDY5OTMyLCA5MTYsIDc2OSwgNDE3NDIsIDExOTY4LCA3NDgwNSwgNjQzMywgNTU2MywgNTQ3LCAxOTQzLCA2NDM5LCA1NTYwLCAKKyAgICA0OTk0LCA0ODcsIDEyNjUzNywgNDQ5NywgMzc1NCwgODMwNzIsIDgzMTA1LCA5MDM5LCAwLCA0MTc3NiwgMCwgODcxNiwgCisgICAgMTU5NSwgNDE2MTUsIDEyMTAwMSwgMCwgNzQyNjAsIDc0ODYwLCA0Mjg1NCwgNDMyMTksIDgzMzExLCAxMjExMDcsIDEyMTg1LCAKKyAgICAxMTM4MTAsIDcwMDcyLCA2ODM1NSwgNjgzNTcsIDY4NDIxLCA0Mjg1NiwgODYzNCwgMCwgMTE5OTg4LCA0MjA5LCA3NTA1NywgCisgICAgNjg4MzIsIDY1ODc5LCA0MTUzOCwgNjU2MTIsIDY4ODIyLCA2NjksIDU2NzksIDY4ODEzLCA2ODgxNSwgNjg4MTEsIDY4ODEyLCAKKyAgICA2ODgwNCwgNTY3OCwgMTE4MjEsIDY4ODAyLCA2NzExLCA0NjAsIDEyMTUxMywgMCwgOTgzNDYzLCA3MDExNCwgMTIwNzQ3LCAKKyAgICAxOTQ3MTgsIDEyMTUxOSwgNzgwNTAsIDExOTAyMiwgMCwgMTIxNTE1LCAxMjE1MTQsIDc3ODIsIDkwNDQsIDQ5NzQsIAorICAgIDExNzYwLCA3ODQ5NCwgNzU3NywgNjU3MTEsIDQxOTEyLCAxMjE2LCAwLCAxMjcwMTcsIDU3OTIsIDEyNjY0MywgMTI4MzE5LCAKKyAgICA3ODUwMSwgMCwgMjkzMywgMTIyNDQsIDk4MzcwMiwgNTY4MywgOTE3ODk2LCAxMjA4OTUsIDc4MTE5LCAxNTQ5LCAwLCAKKyAgICA5ODMyMjMsIDEyMDM5OCwgNTY4MiwgNjIwNiwgODY3MCwgMTAyNTYsIDU2ODAsIDY5OTM1LCAxMDAwMSwgNjcyMzcsIAorICAgIDY5NzY4LCAxNDQ5LCAxMDI0MSwgNzgyOTAsIDExOTU4NywgMTk0ODkxLCAxMDU1MiwgNjQzNDIsIDQxOTIyLCA3MDMzMCwgCisgICAgODU4NCwgNjgwMzAsIDU1NjcsIDI3MTcsIDgzMTc5LCA3MTQ0OCwgNTU2NCwgNDI4ODYsIDQxOTA4LCA0Mjg4MiwgNTU2NSwgCisgICAgOTE3NjExLCAxMjA4ODEsIDAsIDY1NzA4LCA2NTcwOSwgNTU2NiwgNjk4MDMsIDY1NzA0LCA2NTcwNSwgMTE5MDQsIDQyODc1LCAKKyAgICA0MzM3MywgNDI1MzksIDU5NDIsIDg0NjgsIDEyMDU2MSwgMTAzNjEsIDEwNDI1LCA2NTY5NywgNjU2OTgsIDY1Njk5LCAKKyAgICA2ODA1MiwgNjY1OTgsIDExMDU5MiwgNjQ2NjQsIDEwNjQ3LCA3ODcwMiwgNzg3MDMsIDc4NjkwLCA0NTcsIDc4NTAyLCAKKyAgICA2NTcwMSwgMTkzNCwgNDMwMDYsIDgzMjgwLCA4ODAyLCA3ODcxMCwgNjUxMzAsIDExNzQ3LCA3ODcwOSwgNjA4NywgNzg3MDUsIAorICAgIDc4NzE2LCA0MTc1NywgNzg3MTEsIDgwNDMsIDg5NTAsIDY1Njk0LCA2NDQ4NSwgNDM1MzQsIDEwNDU3LCAwLCAxMTk2MSwgCisgICAgNzg3MjUsIDY2ODUwLCA3ODcyMywgNzg3MjAsIDc4NzIxLCAxMjc4OTksIDY1NTE1LCA5NDk5LCAxMDAzNSwgMTMwNjksIAorICAgIDcxMzA5LCAwLCA5ODg5LCA2ODE4NCwgNDI4MDYsIDEyNTA2MSwgNzI1NiwgMCwgNjgwOTQsIDE2NjcsIDQyMTYxLCAKKyAgICAxMjA5ODEsIDQyNDI4LCAwLCA2OTM0LCAwLCAxMDgwMiwgNjQ4NjEsIDY1NTYsIDc4MzkwLCAwLCA4MTAxLCAzNjEwLCAKKyAgICA2ODQyMCwgNDE3NDgsIDQ5OTUsIDk1NSwgNjU5MDcsIDExOTIwOCwgNTM1MCwgNjQzMzksIDc4MzA2LCA2NDU0OSwgMTA4NzUsIAorICAgIDEyNTA1MiwgNTQ3NywgNjU2OTIsIDAsIDEyODUzMiwgMTIwMzk3LCAxMjg5NiwgMTA0NTYsIDY4Mjk4LCAwLCAzODc0LCAwLCAKKyAgICAwLCA5ODM2MTksIDEyMDMzMSwgMTI4NzczLCAxMTM2NjUsIDY1NjAzLCA4MzI3MiwgNjU2ODcsIDAsIDQxMDM4LCA3NDAwOSwgCisgICAgOTIwNywgNDIyMzksIDg1MzYsIDc4NzQwLCA3ODMyNCwgNzg3MjYsIDc0NDMyLCA3MjQsIDgzMDU4LCAxNDU1LCA3ODc0OSwgCisgICAgNzE4MywgNjQ1ODMsIDc4NzQ3LCA2ODQ0MywgNDE3NSwgNzg3NDEsIDQzNjE0LCA2OTgwMSwgOTM5LCA3NTAyMSwgNDM1MjAsIAorICAgIDY4NjEzLCA3NDU2OSwgOTE3OTU4LCAwLCA3MDE2OCwgNzg3NjQsIDc4NzYwLCAxMDc4OCwgNjA4OCwgNzg3NTksIDc4NzU1LCAKKyAgICAxOTAsIDExOTg5OSwgMTI1OTMsIDAsIDgxODgsIDY0NDA4LCAwLCA0NDE3LCAxMjEzMDMsIDkyMjYxLCA2MzcwLCAxMjUxMjgsIAorICAgIDc4MjcsIDY4NDQxLCA2OTY1LCAxMjg1ODEsIDEyODg2OCwgMTMyMDEsIDEyODIwNSwgNjk4OTYsIDc4ODY4LCA3NDM4MiwgCisgICAgMTE4NDEsIDc5MTgsIDczOTg4LCAwLCAxMTM2NjgsIDkxNzg4NCwgMTcyOCwgOTgzNzA1LCA0Mzc2NCwgMTc4LCAxMjk3MiwgCisgICAgNzQ2MjAsIDExMzY3MSwgNzExMDMsIDExMTY4LCA5ODMzODMsIDExMzY3MiwgNzgzMjcsIDc1MDQyLCA2NTY5MCwgODM4MiwgCisgICAgNzExMDcsIDExOTA1NCwgMTk0OTY4LCA5MjUyLCA5MTc4ODksIDQ2NTIsIDY4MzcxLCAwLCAxMjEzMjcsIDc0MDcwLCAKKyAgICAxMzA2NSwgOTkyMywgMTA4MDYsIDE5NDU5NiwgMTE3NjMsIDcwMDE2LCAxMjA2ODgsIDY3MjMsIDc4MTg3LCAwLCA2OTkzLCAKKyAgICA3MTA0NCwgMTIxMzEyLCA4MzMzLCAxMjEzMjksIDAsIDExMzkwLCAwLCA3NDQ2NCwgMCwgOTIzMjAsIDc0MDgwLCA5ODMzMTcsIAorICAgIDY5OTExLCAxMTkxMCwgOTI1NTksIDgyNzgsIDg5NjMsIDQwMzQsIDEyODU2MCwgOTgzMTEzLCA2NTM0NCwgMTIwNTE3LCAKKyAgICA0MTc0NywgMCwgMTI4MTEwLCA4Njc3LCAwLCAxMjcwNywgOTM1MCwgNjYwMzcsIDEyODE4MCwgODgzNiwgMTIzMTUsIAorICAgIDEyNzQ3LCA4MzAwLCAxOTQ1NjIsIDEyNDk4NCwgNzQ5MSwgODg1NiwgNzEzNjEsIDAsIDQzMTUwLCAxMjc3NjgsIDEyMDQwNCwgCisgICAgNjUzODksIDEyMDQwMiwgMTIwNDAzLCAxMDgxMywgMjU5MiwgMTI4NTMsIDQzMjY5LCA3MjYzLCA4MzMwOCwgNjUzNiwgCisgICAgMTIwMjM4LCA3MTg5MSwgNjU1MTYsIDEyMzIxLCAxMjAzOTEsIDEyMDM4OCwgNTUyODcsIDEwMDA3LCAxMjAyNDYsIDk1ODgsIAorICAgIDY4NDk0LCAxNTk2LCAxMjAzODMsIDQxOTk0LCA2NTgwMSwgMTI4ODA4LCA2ODM4LCAzNTYxLCAxMTk4NjcsIDAsIDEwNjEzLCAKKyAgICA2Njk3LCAxMjgwNSwgNDE5MjgsIDQwOTgxLCAxMDgwNCwgNzg0MDksIDUwMDYsIDY0MzI4LCAwLCA5OTMxLCAwLCA4ODI1LCAKKyAgICA3NDU1NSwgNjU5NDAsIDQzMjU5LCAxMjY1ODYsIDYxMDcsIDgzNDU1LCAxMTkxNzcsIDc3OTQxLCA3ODQwMSwgMTE5MjcwLCAKKyAgICAxMTc4MywgMzM1LCAxMjAyMjcsIDY0Njg5LCA0MzgsIDQ1MTAsIDU3NjUsIDg3MjEsIDExOTU3MCwgMTE5MjI3LCA2MDkyLCAKKyAgICAxMjg0MCwgNDMxMTIsIDg4NzYsIDEyMDIzMSwgODA5NiwgMTAyODQsIDEyMDkzNSwgMCwgMCwgMTAzODAsIDg3MzMsIAorICAgIDEwMzE2LCA3MDEyMSwgNDE2MDIsIDkxNzU3NSwgOTIzMDgsIDc0ODMxLCA5Mzk4NCwgMCwgNjg0ODIsIDY1Mzk5LCAKKyAgICA5MTc4MjAsIDY0NTkxLCA0MjQwNSwgODM0NjYsIDEyMDgyMCwgODQzLCAxMTU0MSwgMTI4MzI2LCA3MDMyMSwgMjA2NSwgCisgICAgNDE5MzUsIDc0NDk2LCA0MTkwMiwgMCwgOTgzMzA2LCAyMTUsIDQxMjU4LCA3Nzg3NSwgNDMxNTksIDE5NTMsIDk1NzksIAorICAgIDQxOTM4LCAxMjU2LCAzOTEwLCA5NDA3LCA2MjQyLCAwLCA4MzQ2NCwgNDEyNTcsIDQxOTAwLCA4Njc1LCAxMDcwMCwgODgwNSwgCisgICAgMTc0MiwgMTEzNzIyLCA5MzMzLCA4MjAyLCA3MjM5OSwgMCwgOTgzMTk3LCAxMjcyNTIsIDAsIDczODgyLCA0OTksIAorICAgIDk4MzA0OSwgNDM0NjcsIDAsIDQzODE4LCA4MzQ4MiwgMTcxMiwgNTkzMiwgNzc4NDUsIDQxNzYyLCA5ODMxMDMsIDAsIAorICAgIDExOTY3LCAxNzc1LCAxMjUwMDYsIDc1MDA5LCAxMTExOCwgMTIxMzkxLCAxMjgwMDksIDk0NTgsIDkyOTM1LCA2NDcwLCAKKyAgICA5MTgwLCAxMjAzODAsIDQzMTc2LCAxMjgzMDcsIDAsIDQyNzgyLCAwLCAxMjQ5OTksIDk4MzEzNSwgMTI4MzA5LCA3Mzg0OSwgCisgICAgMTIwNjY5LCA5NDE0LCA3NDY0NywgNzM3ODIsIDczOTY5LCA1NjUsIDQyNDg0LCA1Nzk0LCAyMDEsIDI2NjIsIDQyMjkyLCAKKyAgICAxOTQ4NzAsIDgyNTQsIDAsIDEwOTc1LCA0MzUxOCwgMTIwNjI1LCA3NDc2MywgMTAyMiwgNDEwOCwgMzg4MCwgNzQyNDcsIAorICAgIDEyNzE1MywgMCwgOTIyNjMsIDkxNzk4MCwgNzUwNywgOTgzMTE4LCA0MzE0OSwgNzEwNTksIDY1MDMxLCA3OTYxLCAxNjM2LCAKKyAgICAwLCA2NTAyOSwgNjUwMjQsIDExOTA5OSwgMTI0NzMsIDY1MzQsIDEyMDYzMywgOTksIDk4LCA5NywgNjgyMjYsIDY3NTg0LCAKKyAgICA0MDQ5LCA3NDE2MywgMTI3MDY1LCA3MDkwLCA4MzI3NCwgNzg5MiwgMTI3MDY0LCAxMDc3NywgOTE3ODAzLCA2NTMxMCwgCisgICAgNjU1NjIsIDY2NTk5LCA2NjcyMiwgMTk0OTU1LCA4MDM5LCAzMzYzLCA2NjU5NCwgNDM0MzQsIDEyNzA2MiwgNzExOTEsIAorICAgIDEyNTk2LCA2NjU5NSwgNDIyNTgsIDQyNTcwLCA1NTkzLCAxMTkxNDgsIDEyMDUzNCwgOTI0MjUsIDEwMTAwLCA2MDYxLCAKKyAgICA2NDg1NCwgMTE5LCAxMTgsIDExNywgMTE2LCAxMjk5OCwgMTIyLCAxMjEsIDEyMCwgMTExLCAxMTAsIDEwOSwgMTA4LCAxMTUsIAorICAgIDExNCwgMTEzLCAxMTIsIDEwMywgMTAyLCAxMDEsIDEwMCwgMTA3LCAxMDYsIDEwNSwgMTA0LCA2NDM2LCA3Mzk3NCwgNTM0LCAKKyAgICA0MTIxMiwgNjc3MTMsIDE1MzYsIDY0MDkzLCA3Mzk3MCwgNzc5MzAsIDEyMTA5MywgMCwgNjAyMCwgMTI3MTYsIDEyNzExMiwgCisgICAgMTI3NDQsIDQ3NSwgMTIwMzk0LCAxMzI2NiwgMTI3ODEzLCAxMjcxMTEsIDc4ODQyLCA3MzkyNiwgNjYyOTEsIDEwNjQ1LCAKKyAgICAxMjEyLCA2NTQzLCA5ODMzMDksIDgxMzQsIDQyOTM1LCAyOTEzLCA3Mzg3MCwgMTI3MTEzLCAxODY2LCA5ODMyMjksIAorICAgIDcxODkyLCAxMjA5OTYsIDg5MjMsIDE2NDUsIDEyMDU5LCA2NjU4NSwgNzEyOTcsIDMxOTYsIDcyNDA0LCAxOTQ4MjcsIAorICAgIDU5MzUsIDEyNTAsIDEyNzA2NiwgODE3NCwgOTc4NywgNjczMywgOTg1OSwgNzkxNiwgOTg2MSwgOTg2MCwgNTI1OCwgMTg4MiwgCisgICAgMTg5MiwgNjczMSwgMTA4ODIsIDQwNSwgMTE0NTQsIDczOTExLCAxMTM3ODcsIDczODE5LCA0MTE2OSwgODkzOSwgNDEyNDUsIAorICAgIDEyODc3NSwgNDExNzAsIDE0NTQsIDExMzY5LCA2NDc3LCAxMjE1NywgMTIwODYxLCAwLCAwLCA0MTE3MiwgNzg1NSwgMCwgCisgICAgNzE0NzIsIDEwNDgwLCA0MzI1OCwgMTI2NTk2LCA3NzkzNiwgODI2NCwgMTI2MTAsIDk4MzMxMCwgNjQ1LCAxMjY2MTYsIAogICAgIDc2MDksIDQwOTczLCA2OTk0MywgNzM4MzMsIDY5OTQ4LCA1ODI0LCA5ODQsIDc3OTE4LCAxMDY4OCwgNTg1MSwgMCwgNzcyOSwgCi0gICAgNzM5ODIsIDEyMDUxOCwgMCwgMTk1MDg2LCA0MzM2OSwgMCwgMTI4MTQwLCA2ODQxNSwgOTgzMDkzLCA0NTM4LCAxMjA0MDYsIAotICAgIDQzMTQxLCAwLCA5ODMyMTAsIDc0MjE0LCA3Mzg4NiwgMCwgMCwgMTE4OTAyLCA0MzAwNSwgNzg0NDgsIDk1NTIsIDAsIDAsIAotICAgIDk4MzE1OSwgMTI5OTcsIDAsIDAsIDAsIDAsIDIzODEsIDEyODgzLCAxMDk5NCwgMTA1MjksIDQxOTA2LCAwLCAwLCAwLCAKLSAgICAxMjQyNSwgMTA2NjEsIDEwODU2LCA5NjE0LCAyNDI4LCA0MTQ3OCwgODU4MiwgMTAwNjQsIDczOTMwLCAwLCAwLCAwLCAKLSAgICA2NDg5NiwgMTE5MTYyLCAxOTUyLCA5MjE4MSwgODQ1NSwgMTAwODIsIDExNTc1LCA5ODM0OTAsIDExOTU2NiwgMCwgMTI4MDgsIAotICAgIDEyMTgzLCA2MTQ1LCAxMTg5NTUsIDY0OTI5LCA5MjQzMywgMCwgOTgzMTkzLCA0MzE4NiwgNDI1MDksIDAsIDM5MjIsIAotICAgIDkxODcsIDk4MzYxNCwgMCwgMTAxOTEsIDExOTA1NywgMTE3NTIsIDMzNTMsIDkzNTgsIDAsIDcxMzY2LCA2NjY4MCwgCi0gICAgMTIwMDkwLCA4MjQ4LCA3OTMxLCA4NTU4LCA5Nzk1LCA2ODM4MCwgOTgzMjk3LCAwLCAxMjAwODIsIDEyMDA4MSwgMTIwMDg0LCAKLSAgICA0MTAyNywgMTIwMDg2LCAwLCAxMjAwODgsIDczNjYsIDcwMTksIDEyMDA3MywgMCwgMTE3NTEsIDEyMDA3OCwgNzgyOTQsIAotICAgIDY0NjU3LCA4NjU3LCAxMjAwNDgsIDg1OTQsIDEyMDA2OCwgMCwgMCwgMTIwMDY5LCAxMjAwNzIsIDEyMDA3MSwgMCwgMCwgCi0gICAgNDMxNTQsIDQxMDI5LCAwLCAxMTMzMiwgNjUzODAsIDc3MjgsIDk0MDc3LCAxMTI5NCwgMCwgNjY2NjUsIDc4NTEsIDAsIAotICAgIDgzNzUsIDg2OTksIDAsIDQyNTI0LCAwLCA5MDg1LCA5NDA0MSwgNzUwNCwgOTMyNywgNjE2MCwgMTI4MDk1LCA5ODM4NjQsIAotICAgIDAsIDgwODgsIDAsIDc0MDEyLCA5MjUwMCwgMCwgNDQzOSwgNjkyNiwgOTgzMDQ3LCAxMjkyNCwgMTI4MjI3LCA0MjM2OSwgCi0gICAgNDM1MCwgNjU0OTEsIDY1MTQ1LCA5MDQxLCA0MzU1OSwgNjQ1NzcsIDEwODI2LCAwLCAxMTI5NiwgOTgzMjgzLCAwLCAwLCAKLSAgICA2NTgyNSwgOTU3NywgNjgxOTksIDAsIDY0NjcwLCA5ODMxMjEsIDc4MDU2LCA2NzkzLCAxMTI5NSwgMCwgNzgwNTMsIAotICAgIDczODcyLCAwLCAwLCAxMDkwMiwgMCwgMCwgNzgwNzAsIDc4MDY4LCAxMDQ3MiwgMjk5NSwgMCwgMCwgNjQ2ODIsIDIzNzEsIAotICAgIDc4MDY5LCAxMjA4MDgsIDI1OSwgMTAwOSwgOTIxNzEsIDI0MDIsIDIzMzMsIDY0NDAsIDE5NDc0MSwgMCwgNjUxMjUsIAotICAgIDQxMjQ0LCAwLCAxMzI3MSwgOTEwMywgMjI3OCwgMCwgMCwgMCwgMCwgMTAyMTksIDAsIDAsIDAsIDAsIDQzMTc4LCAKLSAgICAxMjcwNzAsIDQxMjYxLCAxMTkzNjIsIDQzNjQwLCA4NjEzLCAwLCA5NDA0OSwgNjczNiwgMTk1MDkyLCA0MTQ5MiwgMTIwMDUsIAotICAgIDY5OTI3LCAwLCAxODkwLCAxMjAwNTYsIDAsIDAsIDAsIDcyOTMsIDc5OTEsIDAsIDEwNTc4LCAwLCA3ODA3NiwgMTk0NzM4LCAKLSAgICA3ODA3NywgNjk5MjgsIDAsIDc4ODAwLCA5MjY1MywgNjQ0NDUsIDQyNjY4LCA2NjM1LCAwLCA2MTY0LCA2NTE3MCwgMCwgMCwgCi0gICAgNzY3NiwgMTE2NjQsIDAsIDk4MzY1OCwgNjk3MDcsIDAsIDExODgxMiwgMCwgMCwgMTI4MDQ1LCA5MTc1LCAxMTkyNSwgCi0gICAgNzgwNDUsIDkwODgsIDAsIDY0NTQ1LCAxMzk2LCAwLCA3NTQ2LCAzODQ3LCAxMjcxNzcsIDEyNzgzNSwgNDk4NSwgMTMyODgsIAotICAgIDY3MiwgODA5OCwgNDMxOTYsIDE5NDc0NiwgOTgzMDk2LCAxMjgxMjYsIDQyNjU1LCA3NDA0MywgNjUwNzIsIDE1NzcsIAotICAgIDExNzcyLCAxMzA0MSwgNTkyOCwgNDUyNSwgMTA2NTgsIDY1OTExLCAxMjY2LCAxMDE4MCwgMCwgMTI4NTg0LCAxMjYyMiwgMCwgCi0gICAgMCwgMCwgMTk0NzE0LCAxMjcxMzksIDEzMzEwLCA3NzMsIDE5OTMzLCAxNTM5LCAwLCAxMjY5ODMsIDQyNzMxLCA2Nzk3MiwgCi0gICAgMCwgMCwgMCwgMzA1MSwgNTg2MiwgNzgyMywgOTI0NzgsIDAsIDEyMDQxMSwgMzI1MCwgNDM5OTEsIDY5Njg3LCA2NjY0OSwgCi0gICAgOTUxMCwgNjYyMzcsIDk4MzMwMiwgMCwgNDEwNjYsIDY0NjczLCA5MTc5NjMsIDkxNzk2NCwgMCwgMzUwNSwgODcwNywgCi0gICAgOTE3OTY4LCA2NzI1LCAxMjgwMTMsIDkxNzk3MSwgOTIzMTQsIDM0NzEsIDkxNzk3MCwgNTQ3OSwgODgyLCA2Njg2LCAKLSAgICAxMTk1ODQsIDExNjEzLCAxMjA3NzIsIDQyNzU0LCAwLCA5ODMzMDYsIDkyNjk2LCAwLCAwLCAwLCAxMjg1MjMsIDMyMjUsIAotICAgIDkxNzk5NiwgNDQzMywgNDExNTYsIDQzOTczLCA0MzE3MywgMTQ0MywgNDM4MSwgMCwgMCwgMTA5MjYsIDExNzU2LCAxMTc1NywgCi0gICAgNjQ4NzksIDkxNzk0OSwgOTE3OTUwLCAxMjc4NDgsIDEzMjI3LCAwLCAxMDAyMSwgNTE2MCwgMTM4NywgMCwgOTE3OTUzLCAKLSAgICA0MTQxOCwgMCwgNjU5MTQsIDY3MjEsIDIxNywgOTE3OTU1LCA5MTc5NjAsIDkxNzk2MSwgMTA0NDMsIDEwNzg5LCA0MTE1OCwgCi0gICAgMTE5MjU3LCA0Mjc0LCA5ODMzMDAsIDQxNDgzLCAwLCA0MTI1MCwgMCwgNDIxNzksIDAsIDU5MzEsIDExNzQ0LCA2OTIzMiwgCi0gICAgMCwgNDEyNTIsIDY2NjgyLCAwLCAxMTk2MzcsIDQxMjQ5LCAxMzY2LCA2NDYzNSwgNjUwNDcsIDEyNDY2LCAwLCAwLCA0Mzk3LCAKLSAgICAxMjgwMzcsIDEyODMzNiwgNDEyOTYsIDk1NDUsIDQxMjkxLCAxMjgwNDksIDAsIDQxNDg1LCAzNTExLCA0MTI4MiwgNTkyMywgCi0gICAgMTA0MDAsIDAsIDEyODgxOCwgNzYwLCAwLCAxMjA4OCwgNTc4NiwgMCwgNDIyNTYsIDExOTg2OSwgMTE5ODYwLCA0MTcsIAotICAgIDQxNDc0LCAxMTk1NjIsIDQxNTY1LCAwLCA1OTM0LCAxMTk4NjcsIDY2NTgzLCAxMTkyMzEsIDY0ODc3LCAyMjg0LCA2NDQ4MSwgCi0gICAgNzg2MTQsIDY2MDEzLCA0MTk1NiwgNDM0NTUsIDEyNjk5NSwgMCwgMCwgMCwgNDIyNzMsIDU4MTksIDAsIDkxNzU1NiwgMCwgCi0gICAgMTI2NjQzLCAwLCA2NTkxMCwgMTI3NzQ3LCAxMDI0NiwgMTIwODE2LCA2NTc4NSwgMTIzNywgMTAyNzQsIDQ1NTIsIAotICAgIDExOTU3NiwgMCwgMCwgMTM3NSwgNjY3MDUsIDQzNTczLCA2NTI2MCwgNDIwNjMsIDAsIDQyODExLCAxMDMxMiwgNjk4NDUsIAotICAgIDEyMDc5NCwgNzg0MCwgMCwgNDM2MzAsIDEwMjUyLCAwLCAxMjgxMDQsIDQzMTg1LCAwLCA0Mzk2LCAwLCAxMTk4ODAsIAotICAgIDEwNzY5LCA5Njc2LCAxMTkwNDEsIDAsIDk3NTMsIDAsIDg5NDQsIDAsIDAsIDEwNDczLCAwLCAwLCA2MDcyLCA0MzAyNSwgCi0gICAgMTAyOTksIDAsIDAsIDEyMDYwOCwgNjYzMjYsIDk4MzQ0NywgMTI3Nzk0LCAwLCA0MzgxMSwgOTMzMCwgMTIwNTk2LCA3MjIyLCAKLSAgICAxMDI4MywgMTAzMTUsIDEwMzc5LCA0OTk2LCA5ODM3ODIsIDEzMjgxLCA2NjUxNywgNzg2NSwgMTAwODcsIDc4MzQzLCAwLCAKLSAgICA3ODM0NywgMCwgMCwgNzU2NSwgNjYzNjMsIDEyOTUyLCA2NDgwNiwgNDMxODAsIDc3OTI4LCA3NDE0LCA3NzkyOSwgNDM5ODIsIAotICAgIDc0Mjg4LCA2MjIsIDc0MDIzLCA4ODUsIDQzNDA1LCAxNjAyLCAwLCAwLCA4NTIsIDAsIDEyMTYwLCAwLCAxMDIxMiwgCi0gICAgNjU0MzUsIDAsIDEyMDcxLCA5NjA5LCAxMjE1NiwgOTE3OTgzLCA5MTc5ODQsIDQzNTg2LCAxMTAzNSwgMTA0MTEsIAotICAgIDkxNzk4OCwgMTAyNTUsIDY3MTAsIDEwMjc5LCA0MTk0LCAxMDM3NSwgNzM5MDAsIDAsIDQzMTUsIDEyNjQ0LCAxMjc1MTYsIAotICAgIDc3OTM3LCA0MzYzOSwgNDMzNDMsIDc4Nzc3LCA5MTc5OTgsIDExNTAxLCA0MTE3NywgMTI4Njg5LCAwLCA5MTc3OTIsIDAsIAotICAgIDkyNDEzLCA4NzE1LCAwLCA0MTE3OSwgMCwgNDMzMTMsIDAsIDQxMTc2LCAwLCA5OTQsIDAsIDg0NTIsIDEyNzEwMywgCi0gICAgNzM5NjYsIDAsIDAsIDU5MjEsIDAsIDI1OTcsIDAsIDU5MjIsIDExODkwMywgNzc5NDMsIDQxODYsIDkyNTMxLCAxMTk5NjcsIAotICAgIDEyNzEwNSwgNjcxOCwgMCwgNDQwNiwgNzQ2MDEsIDg0ODAsIDkxOTIsIDk3NDcsIDEyNjUzMCwgNDQxMywgOTIxOTYsIAotICAgIDQyMjY4LCAzMTk4LCA1OTI0LCA1OTIwLCA5MjQ2OSwgNjkyMSwgNzgwODEsIDc0MDA3LCA0Mjg2OSwgODQxOCwgMTE2ODEsIAotICAgIDQzMTY5LCAxMDE3NiwgMCwgNzQyLCAwLCAyODkzLCAxMDc3MiwgNjUyNzYsIDU5MzcsIDE5MTQsIDI1NTMsIDExNjgyLCAKLSAgICA2NzU2LCAxMjg1OTAsIDEyODY0NiwgODM2MywgMCwgMjk5MywgNzc3MiwgMzkxNiwgNDMwMSwgMTIwNDk0LCAxMTQxLCAKLSAgICA0MjQwNywgODE1OSwgNzE4LCA3NTcyLCA5NzMsIDAsIDEyMDcxOCwgMzIzNSwgMjQxNSwgNDMxNjQsIDAsIDgwMTgsIAotICAgIDQyMzMzLCA3NDc1NiwgMTA2NzUsIDY5MzcsIDQyNDg2LCA0MzM4MSwgNjUzOTAsIDEwMDY3LCAwLCAxMjAyLCAwLCAwLCAKLSAgICA2NTg2MywgMCwgMCwgOTQwMTMsIDc4MTgyLCA2NDU0MiwgMzI2MCwgNzM4MjksIDY1Mzg4LCA5OTQ1LCA4NDE5LCA3ODA0MiwgCi0gICAgNjczOCwgMCwgNDM2ODEsIDY5NzI4LCAyMDU5LCAwLCAwLCA1NTIzNywgMTQzMSwgMCwgNjY1NjUsIDEwODIxLCAwLCAKLSAgICAxMjgwNCwgMTI4MDc2LCA4MjI5LCAxMjM1LCAzMzA3LCAxMTQ3MiwgNzgwODksIDc4MTg0LCA0NTQ0LCAwLCAwLCAwLCAKLSAgICAxNzQwLCA3ODA5NywgODc1OCwgOTg1LCAxMjg3MiwgNjQ1MTEsIDc4MDk0LCAxMjA2OCwgNzgxMDIsIDAsIDEwMTQxLCAwLCAKLSAgICA2Mzc2MSwgODc4NSwgNDQ3NiwgNzgxMDksIDYzNzYzLCAxMjY1NSwgODkwNywgNzgxMDUsIDc4MTA2LCA3ODEwMywgNzgxMDQsIAotICAgIDAsIDExOTU3MiwgMTA2NjUsIDY0NjE2LCA0MTU3MiwgMCwgMTI3MTYwLCAwLCA0MTU3MywgMCwgMzkzMSwgMTIwMjk1LCAKLSAgICA3NDE0MywgMCwgMCwgMCwgNzg0NjAsIDExOTgyLCAwLCAwLCAwLCAxMjgwMTYsIDY0NDg0LCAwLCA0MTE2NywgMCwgNDE3MzUsIAotICAgIDk0MDE5LCA3MTcsIDEwNzU0LCAwLCAwLCAxMjc5NzksIDAsIDYzNzY3LCAwLCAxNzgwLCA2OTM2LCAwLCA5MjI1NCwgODE5LCAKLSAgICAxMDYxMSwgOTY5NCwgMTI2OTc4LCAwLCAwLCAwLCAwLCA4MzQzLCA4MzQyLCA4MzQ1LCA4MzQ0LCA2NTc4LCA3MDA5LCAKLSAgICA3NTIzLCA2OTIyLCA4MzQ4LCA4MzQ3LCA3NTI1LCAzMzQ2LCA4MzM5LCAxMjgxNjUsIDEyODMzOCwgNTc1LCAyNjgsIAotICAgIDc4MTExLCA4NTYzLCA1NzU0LCAxMjAzNDMsIDQxNTQxLCA2NTU2NSwgODMzNiwgNTkzNiwgNzI5MCwgNzgxMTcsIDgzMzcsIAotICAgIDgzNDEsIDMwOCwgMTEzODgsIDc1MjIsIDEyMDcyMSwgNzgxMjMsIDY1NDY2LCAxMTA5MCwgNjk1MywgMCwgMTIwMzQ2LCAwLCAKLSAgICA3ODEzMiwgNTkyNiwgNzgxMjgsIDc4MTMwLCA3ODEyNiwgNzgxMjcsIDc4MTI0LCA3ODEyNSwgOTAzOCwgNzg4NywgNDM0NTYsIAotICAgIDc4MzAsIDExNjUxLCAxMzA5MywgNjQwMDIsIDAsIDY1NzQyLCAxMjg3NCwgMTE5NTk3LCAxMTU5MCwgMCwgNzQwNDgsIAotICAgIDEyODM1MCwgODU5NSwgMCwgOTE3OTQ3LCA0MzcwMywgMTMwOTcsIDAsIDY0NjQzLCAxMzI4MywgMTI2OTcsIDAsIDEyMzgxLCAKLSAgICAzNDg4LCA1OTMzLCAxMDAzMywgNzM3MzgsIDY2MjQxLCA2NTU3MCwgMCwgMTIyOTcsIDExOTE1MywgMTk1NSwgMCwgNTM0OSwgCi0gICAgNDI1MzgsIDAsIDAsIDc0MTEsIDk0NjIsIDkxNzU1NCwgMCwgMCwgMCwgNDI3MzYsIDAsIDU3NTYsIDk4MzIyMSwgNzYzOCwgCi0gICAgNDE2NDIsIDQyNzY0LCAwLCA0MzEwOSwgNzYzNywgNTc1MiwgNzQwMzcsIDAsIDczODMyLCAxMjg4MjcsIDEyMDYzNSwgCi0gICAgMTI4MjMxLCA3ODMzNCwgMCwgNzYzNiwgNjUxNzEsIDkxMjQsIDAsIDc4ODkyLCAxMjA3OTgsIDI5MSwgMCwgMCwgMjAyNywgCi0gICAgNjYyMzAsIDEwMDgwLCA3ODEzNiwgMTA0MDMsIDAsIDQ2NDAsIDY0NzEzLCAxMDIyNCwgMTIwNDI5LCA0MjUxMiwgMTIwNDMxLCAKLSAgICAxMjA0MzAsIDAsIDEyODM1MSwgMTI3NDg5LCAxMjcxNDgsIDAsIDkyNDk5LCAwLCAxMTkwOTQsIDc0MjEzLCA3ODI0LCAwLCAKLSAgICAwLCA0MTI3NCwgNTc3OCwgNjMwMiwgMCwgMCwgMTI2ODAsIDExOTEzMCwgMTQxNywgNzc4ODksIDE5NDkxNCwgOTQ1MiwgMCwgCi0gICAgNzQzOTMsIDExNTUyLCAwLCAxMjc4NTUsIDEyODIxNywgNjUzOTEsIDAsIDEwMTcyLCA2NTQ1MywgNjM3ODksIDQxMjY0LCAKLSAgICA3ODY1OCwgNjQyNiwgNDY0MSwgOTE3OSwgNjQ4MTksIDU1Mjc4LCA0MTI1NSwgNDIwMzYsIDQxNDY5LCA0MTI2OSwgCi0gICAgMTIwNDEyLCA0MTI2NywgNDY0NiwgMTIwNDI1LCA4NjUsIDQyMDM0LCA3ODI3NCwgNzgyNzMsIDQ2NDUsIDQyMDMzLCAKLSAgICA3ODI3MCwgMTI3OTgyLCA5ODMxNzIsIDY0NzI4LCAwLCA3ODY3MywgNzg2NzQsIDE2NTksIDkxOSwgNDI3ODQsIDE2NzEsIAotICAgIDE5NTA4OSwgNjA2OSwgOTIxOSwgMTI4NTU4LCAxNjYxLCAxMzEyMCwgNjM3ODQsIDY5ODE5LCAxMDE0MCwgOTcxMywgCi0gICAgMTE5MTQzLCAwLCAwLCA5NDA1MCwgMjMwNiwgMTA0ODUsIDExODk0MywgNjA2OCwgMTA2MTIsIDE5NTA5OSwgMTE5NTY3LCAKLSAgICAxOTUxMDEsIDkyNTYxLCA0MTQ2MiwgMTIwNDcwLCAxOTUwNzksIDU0MjIsIDEyODIzNCwgOTgzNjI5LCAwLCAwLCAxMDIyOSwgCi0gICAgMTA2MzUsIDgyNiwgMTI4MDgxLCAxOTUwODIsIDE5NTA4NSwgMTk1MDg0LCAxOTUwODcsIDY0ODMsIDkyMjExLCAxODA4LCAKLSAgICA3ODQ4LCAwLCA4MTAwLCA3ODIyNywgNzg2NjksIDc4NjcwLCAxMzMwMSwgNzg2NjcsIDk2NjcsIDc4NjY1LCA3ODg3MiwgMCwgCi0gICAgMTEwMDMsIDk5MDQsIDAsIDAsIDEyMDY5MCwgOTE0NCwgMTA5MjEsIDAsIDc4NjgwLCA5ODQwLCA2NTEzMSwgNzg2NzgsIAotICAgIDc3ODQxLCAxMDMxMywgMCwgMCwgNjQzMjAsIDEwMjY1LCA3ODY4NiwgMTA5NjIsIDc4Njg0LCA0MzAwOCwgODk0NSwgCi0gICAgNzg2ODMsIDAsIDQxLCAxOTUwNzIsIDE3OTIsIDEyMDUxNSwgMTk1MDczLCA4NjU1LCAxOTUwNzUsIDkyNTQ0LCA3Nzk1MSwgCi0gICAgMTIwNjYsIDAsIDM4NSwgNDE1MiwgMjU4NSwgMTI3ODA0LCAxMTkwNjgsIDMxMjYsIDAsIDc0MTM2LCAxMDk1NywgOTgzNzAzLCAKLSAgICA0MzI1OCwgMTE5MTE2LCAxMjc4NzMsIDEzMTU3LCAwLCA5MTc1NDQsIDM1NzAsIDAsIDc0NDMsIDAsIDQ0MDA2LCA2OTk3LCAKLSAgICA2ODAwNCwgMTI2NjMxLCA3ODc5LCA4NzM5LCAxMTA3NSwgMCwgNjUyMTYsIDAsIDY5Nzk1LCAyNTkzLCA4NDYzLCA3ODEwLCAKLSAgICA5MTc4NjIsIDc4MzksIDExOTkxMywgNzg4MDYsIDExOTkxMiwgOTY5MSwgNDQxMSwgNzg4MDIsIDAsIDAsIDQzNDQyLCAKLSAgICA2OTg1MSwgNjUyNTQsIDEwMDY2LCA5ODM4ODksIDAsIDAsIDAsIDEzMDYxLCA4MDE2LCA3ODY4NywgMTk5MzIsIDY0ODMxLCAKLSAgICAwLCAxMTk5MjMsIDEyMzkwLCAxMTkxNzEsIDE2MzQsIDY4MTE1LCAwLCAxMTA1NiwgOTgzNTc0LCAxMTk5MjUsIDAsIAotICAgIDQxMTY1LCAxMTMyOCwgMTI0NTAsIDAsIDQxMTY2LCAwLCAxMjQ1NiwgMTE5OTE0LCAxNzEsIDU5NDEsIDEyNDUyLCAKLSAgICAxOTQ3MDksIDEyNDU4LCAxMjUzMSwgNzg3NzksIDQzMDEzLCA2MzgwMCwgNzQxNjIsIDEyNzU2OSwgMTIwNDgzLCA5OTY5LCAKLSAgICAxMjA3NjcsIDEyNDU0LCA2MzgwNiwgNDIxMzIsIDEyMDYzLCA3ODQyNSwgNzg0MjQsIDMyMzAsIDAsIDAsIDAsIDUyMDksIAotICAgIDI5NywgNTgxMCwgODUyMiwgODQxNSwgMTE5OTM3LCA3ODQyOSwgNzg0MjgsIDcwNzcsIDI0OTcsIDEyODY1MSwgOTYwLCAKLSAgICA3NDE1NiwgNjk4MSwgOTIzNzQsIDEyOTM4LCA0MjkyLCAwLCA3NDgxNSwgMTA1MTIsIDAsIDc0ODE0LCA3ODg3NSwgCi0gICAgMTI3NTA1LCA3ODg3NiwgMjUwMywgNzM3NzgsIDE3NjIsIDY5Nzk0LCAyNDk1LCA3ODg3MywgNTg0NCwgNjgwMzEsIAotICAgIDExODgzOCwgMCwgMTI2NTQsIDQ2NjMsIDE4OTksIDc4ODc3LCAyNTA3LCA2NDEyMSwgODcyNiwgNjU1OTQsIDAsIDAsIDAsIAotICAgIDg4OTIsIDAsIDkyMzM5LCAwLCA5ODMwNzMsIDU3ODIsIDQyMCwgMCwgMCwgNDM3OTYsIDEwNzk3LCA2Mzc5NCwgMCwgMCwgCi0gICAgNjQ4MTQsIDYzNzk2LCA3Nzk2NSwgMCwgNjY1ODEsIDExOTIwNCwgNDE2MDgsIDAsIDAsIDYzNzkyLCA0NjU5LCAxMjA3ODgsIAotICAgIDAsIDQzNjc2LCAwLCA2OTY3MywgMCwgMCwgMCwgMzI5LCA3Nzk2OCwgOTI3MDcsIDkxNzU0OCwgNzM5OSwgMCwgNDExODgsIAotICAgIDEzMjQ0LCAxMjA0NjYsIDQyMTY3LCA3NDM1LCA3ODE5MywgNTM4MCwgMTE5MDg2LCA2OTIyNSwgMTE1NSwgMTEzNjUsIAotICAgIDQzMTI2LCA3Nzk3MiwgMCwgNjU2ODQsIDAsIDU2MDEsIDY1MTkyLCA0Mjc2NSwgNjM3NTIsIDAsIDc5ODcsIDEyODU0MywgCi0gICAgMTE3MiwgNjk3OTksIDY3ODYsIDQzNjAxLCAxMjA0NzYsIDc0MTI2LCA1NjAzLCAwLCA0NDczLCAwLCAxOTQ4MjMsIDAsIAotICAgIDY1MzQ3LCA2NTM0NiwgNjUzNDUsIDAsIDEyNzM4NCwgNTM0NywgNjk4MDIsIDk4MzYzMiwgNzM4NjgsIDExODk0NCwgCi0gICAgMTA1ODgsIDAsIDAsIDYzNzU1LCAwLCA1MzQzLCA3ODQyMiwgMTIwNjYxLCA0NTU1LCA1MzQxLCAwLCA3MDA3MSwgMTI4NjcwLCAKLSAgICA1MzUxLCA3ODY3NSwgNDMxMDQsIDY1MjQ0LCA5MTc4OTIsIDY0NTQxLCA0MjUxOSwgNzQ0NzIsIDAsIDAsIDc0NzY1LCAKLSAgICA5MTc4ODgsIDEyNzUxMCwgNjYzOCwgMCwgNjUxMTMsIDI3MSwgNzQxODAsIDY1MzcwLCA4ODM1LCA2NTM2OCwgMTI2NTMsIAotICAgIDY1MzY2LCA0MjE3MiwgNDEwODYsIDY1MzYzLCA2NTM2MiwgNjUzNjEsIDExOTEyLCA0MzQxMCwgMTEzMjMsIDY1MzU3LCAKLSAgICAxMTgwMCwgNjUzNTUsIDUzNDUsIDY1MzUzLCA2NTM1MiwgNjUzNTEsIDc2MSwgNjUzNDksIDE5OTU5LCA2OTcxOCwgNjM4NTYsIAotICAgIDEyNjYzNSwgMjQyMywgNzc5NTgsIDY0NjQ3LCA3Nzk1OSwgMTE5NTcsIDQ2OTksIDAsIDAsIDAsIDAsIDY0NjA1LCAwLCAwLCAKLSAgICAwLCA0OTE2LCAwLCAzODAsIDEwOTU4LCA2NjU2MywgNzc5NTUsIDY5NzczLCA5NzczLCAxMzE2NywgMTI5MTgsIDQxMDk2LCAKLSAgICA3Mzk4MCwgNjkyNDUsIDc4MjU0LCA5MTc4OTMsIDEwNjg0LCAwLCA5MTc4OTYsIDAsIDc5NDYsIDEyNTQxLCA4MTgyLCAKLSAgICA2NzU4NiwgNjk3ODAsIDAsIDAsIDAsIDAsIDkwMDUsIDEyMjUsIDY2MzAsIDAsIDAsIDAsIDY4MDExLCA4ODQ3LCAwLCAKLSAgICA2NTg3NiwgNTUzNSwgODMyOSwgNzQ1OTAsIDk4MzIwOCwgOTI2MDksIDAsIDAsIDMxMjcsIDI1OTUsIDY1NzEzLCA0MjAxMywgCi0gICAgOTgzODU4LCA1NjA3LCA0MTA4OSwgMCwgMCwgNzQyNTYsIDI2NjUsIDExMzA0LCA0Mzc1MSwgNzQyMDAsIDQ5NzAsIDg3NjQsIAotICAgIDEyMDQ1OSwgODkzNCwgOTI3MjYsIDQxNTY2LCA0NDkyLCAwLCA2NTAxMSwgNDEwOTAsIDAsIDAsIDExODgsIDcyNTQsIAotICAgIDExMDAsIDAsIDEyODMwMSwgNDEwODEsIDI5MTIsIDExNzQ5LCA2OTc5MiwgMCwgNjgwMTksIDM1NzIsIDEwMDIzLCA0OTU5LCAKLSAgICAxMzA3OSwgMCwgOTgzMjc2LCA5NzI5LCAwLCAwLCAwLCA0MzM2MSwgMCwgMCwgMTE4MDMsIDc5OTYsIDk5MDcsIDQxNDUwLCAKLSAgICAxMzMwNCwgMTI4MjkwLCAxMjcyNjAsIDQxNDUxLCAwLCAxMTA5NSwgODI3MywgMTI3NTMzLCAzNDUxLCA5ODMzMDksIDk3MiwgCi0gICAgNDE0NTMsIDk4MzQ0MiwgMCwgNzM4ODMsIDY4MDIyLCA3Mzk0NSwgOTgzNzM1LCAyMjg4LCAxOTk1NSwgOTUzOCwgMCwgCi0gICAgNjk4MDcsIDAsIDAsIDAsIDAsIDExMzk2LCA5ODM0NDAsIDExMDE5LCAwLCAwLCAwLCA2ODAyMCwgNDEwNzgsIDcxMzY1LCAKLSAgICAyNjEsIDU5MjcsIDc3OTEsIDAsIDczNjIsIDAsIDEwNjk2LCAwLCA2MDczLCA5ODM4LCAxMTg5MjAsIDAsIDYwNzUsIAotICAgIDkzOTk1LCAyODIsIDEyNjUxMCwgNjQzNywgNzQwNzgsIDEyODAwMCwgOTgwMSwgMCwgNzQxNzcsIDAsIDAsIDM0NzQsIAotICAgIDExODc4NywgMCwgMTIwNjU1LCA2MDgxLCAwLCA3ODg3NCwgNzQwNzYsIDc4ODc5LCAwLCAwLCAwLCAwLCAwLCA4NzUxLCAKLSAgICAxMTQ5OSwgMTIwMjczLCA3ODE2LCAxMjYzNiwgNDY2NSwgMTI2MjgsIDQ2NzAsIDkyNjA4LCAxMjAyNzIsIDY4MDE3LCAKLSAgICA5NjQyLCAxMDkxMiwgOTU4LCAwLCAxMTM4NywgNzg4NzgsIDQ2NjYsIDAsIDQ5MTUsIDAsIDQ2NjksIDAsIDY4MDk5LCAKLSAgICAxMzI4NywgNDY2NCwgMTA4MzYsIDEyMDU1MCwgMCwgNjk3NzUsIDAsIDQzNTk1LCA3NDUwLCAwLCA5MTc4NzUsIDg2NjQsIAotICAgIDk2OTcsIDM2MDYsIDkxNzg3MywgMCwgMCwgNjQ4MTUsIDEwNjMsIDEyMDI1MCwgMTIwMjUxLCA5NzcyLCA3MjU1LCA4ODg2LCAKLSAgICAxMzg5LCAxMjc5MzIsIDEyMDI1NywgMTIwMjU4LCAxMjAyNTksIDEyOTQxLCA0MjY2MSwgOTIzODEsIDEyMDI1NSwgCi0gICAgMTIwMjU2LCAxMjMwMSwgMTIwMjY2LCA2OTgyMCwgNDExMDIsIDY0NDI4LCAxMjAyNjIsIDEyMDI2MywgMTIwMjY0LCAxMDE3LCAKLSAgICA2NjYwMCwgNTIzLCA1MDUsIDE0NDcsIDc0NDM2LCAwLCAwLCAwLCA4NjA4LCA0Mjc4OSwgMTIwNjEzLCAxMjg3MDQsIDAsIAotICAgIDczODU1LCAxMTMwNywgNjY3MDcsIDkxNzg3MSwgMTI3NzUxLCAxMTc0NSwgNzkxOSwgMCwgMTY0MSwgMCwgMCwgODk2NiwgMCwgCi0gICAgMCwgNTkwOCwgMCwgMCwgNjc0NCwgMTI4MzU1LCAxNjk5LCA2OTg2MSwgNzQ4NDMsIDkxNzkzMywgMCwgNjMwNiwgMTAxNjksIAotICAgIDcxMzI0LCAxMTkyNTEsIDEwMDY4LCAzNzY2LCAyMzg5LCAxMjA0NTYsIDEyMDQ1NSwgNjYxMSwgMjU3LCA0MzE3MCwgCi0gICAgMTMxNTMsIDAsIDQyMzg2LCAwLCA5NDM2LCAyNTk5LCAwLCA2NDk2LCA5NDQ5LCA1OTMwLCAxMTQ3NiwgMTEwMzMsIDExNDQ3LCAKLSAgICAxMDU0MSwgNTYyMiwgMTIwNDM2LCA4NDc3LCAzNzYwLCAxNzE4LCA5NDQyLCA2NjQzMywgMzc3NiwgMCwgNDE0MzUsIDQzNTIsIAotICAgIDk4MzYxMCwgMjQzNSwgMTIwODA5LCA1NjIxLCAxMjAzODUsIDQyMDEsIDM3NzgsIDQyMDMsIDQyMDIsIDQyMDUsIDQyMDQsIAotICAgIDEyMDQ0NywgMzc2OCwgNjgxNDIsIDc2NSwgNDE0NDAsIDM3NjQsIDg0NzMsIDYzNzMsIDg0NjksIDEyMDQzOCwgMTI5NDcsIAotICAgIDQ1NjQsIDAsIDAsIDc0MjcxLCA3Mzc1MywgODM3NCwgOTgzMTU2LCAwLCA2ODI5LCA1MjI1LCAxMjg4MDcsIDEyNzM4NSwgMCwgCi0gICAgMCwgMTE5NjE1LCAwLCA3NDc5MywgNTYyNiwgNzM4MDcsIDExNzcxLCA3NDA3NSwgMTI3MjM2LCAxMjgwMTksIDQyNjE0LCAKLSAgICA1MzUzLCA1NjI1LCA3NDE3OSwgMCwgMCwgMTAxMCwgNjQ1NzIsIDQxNzgwLCA0MjYyMywgNjQyNzcsIDY5OTQyLCA2OTUyLCAKLSAgICA5ODMyNzIsIDEyMDc1MiwgNzg3NjIsIDI1OTAsIDU2MjksIDY1NTUyLCA3NTUxLCAxMDMyNSwgNTYzMiwgMTA0NzEsIAotICAgIDEyMDAzOCwgMTIwMDI3LCAxMjAwMjgsIDEyMDAyNSwgNTYyOCwgMTIwMDMxLCA5NzAsIDEyMDAyOSwgNDc3MiwgMjQwMCwgCi0gICAgNTYyNywgMTIwMDE3LCAxMjAwMTgsIDEyMDAyMywgNjQyNzUsIDEyMDAyMSwgODc4NiwgMCwgMjAzLCAwLCAwLCAwLCAwLCAKLSAgICA3ODM1MCwgMCwgNjQzNzgsIDQyMDU0LCAwLCAwLCA1NTQsIDExOTY0OSwgMTEzNTgsIDAsIDEyMTgyLCA0MjA0OCwgMTEwNjUsIAotICAgIDEyNjQ2NCwgNzM4OTEsIDAsIDAsIDU2OTQsIDc2ODksIDY5Nzk4LCA5MzIzLCA0MzI1LCAzMDQ3LCAxMDMxNywgMTc1LCAwLCAKLSAgICAwLCA2OTc2NCwgMCwgMCwgMTI0MywgNDIxNTQsIDU0MzEsIDY2NTIsIDAsIDY5NzcwLCA0MzY1MSwgMCwgNjgxMTgsIAotICAgIDEyODAyNCwgMTEyOSwgMTI2NTc0LCAwLCA2NTkwMCwgMTk4NiwgNzg0NiwgNzg4MDQsIDg2NjEsIDkxNzc3MiwgNjUyNTUsIAotICAgIDAsIDM4NDUsIDQ0OTAsIDExODk2OSwgNjY0OSwgNzQ0MDAsIDE0NTYsIDc1MzAsIDExOTc3LCA3MjQ5LCA4MzY2LCAwLCAKLSAgICA3NzU2LCAxMjM0MiwgMTI4NTY4LCA1MSwgNDE1MTYsIDAsIDg1NzAsIDk1NjgsIDcxMzE4LCA0NTYsIDcwMjYsIDgxNDUsIAotICAgIDExNjgsIDkyNTEsIDkwODIsIDExOTk2NCwgNjQwNTUsIDQyNzgxLCAzODY2LCAxMjMyMywgNDE1MTIsIDczODA1LCA2ODEyMSwgCi0gICAgMCwgNDE0OTQsIDkyMzE2LCA0NjYwLCAwLCAxMDQwNSwgMCwgNzg4MDMsIDAsIDAsIDQyMDQwLCA3MzkxOCwgMTE5NjI3LCAKLSAgICA3OTQ0LCA0MTQ1NCwgMTI2MDUsIDAsIDQyMjA1LCA0MTQ1NSwgMjM2LCA2NDA1MSwgNzg4NjcsIDgyMTQsIDAsIDAsIDAsIAotICAgIDQxNDU3LCA5ODM5NzAsIDExOTU4OSwgMTk2OSwgMjM4NCwgODA5NywgOTE3ODY0LCA3NDEzLCA2ODAxMiwgNzgwMjksIAotICAgIDg3NjYsIDAsIDc4MDc5LCA1ODU0LCAxMjc5NzQsIDEwNTgzLCAwLCAxMTk5ODksIDAsIDEwNDE2LCA5MTc4NjksIDM4NzIsIAotICAgIDkxNzg2OCwgMCwgODQyOSwgMCwgMTE4ODA2LCAyODM4LCAxMjg4MDIsIDAsIDkxNzg2NiwgMCwgMCwgMCwgOTgzOTY3LCAKLSAgICA5NDAwNSwgMTEwOTYsIDEyMDgxMywgMTA1NTMsIDE2NjIsIDg0ODMsIDEyMDM5NiwgNDM2MDUsIDU4OTIsIDQzNDE4LCAwLCAKLSAgICA3Mzc0MiwgNjYsIDY1LCA2OCwgNjcsIDcwLCA2OSwgNzIsIDcxLCA3NCwgNzMsIDc2LCA3NSwgNzgsIDc3LCA4MCwgNzksIAotICAgIDgyLCA4MSwgODQsIDgzLCA4NiwgODUsIDg4LCA4NywgOTAsIDg5LCAxMTk4NjIsIDEwMzU3LCA3Mzg1LCA4MTcwLCAxNzA0LCAKLSAgICA4NTU2LCAwLCA5NjU5LCAwLCAwLCAwLCA5NTU2LCAwLCA0NTAzLCAxMTM1MywgOTY0NywgMCwgNzgxODUsIDAsIDAsIAotICAgIDkyNzEzLCA3ODg4NiwgMCwgMCwgNzQyMjksIDY2NTkzLCA2NDM4LCA5MTc5NzksIDkxMDksIDc4ODgyLCAxMjg5LCA2NDU5OSwgCi0gICAgMCwgNjgwMDksIDAsIDY1NTA3LCAyNDQ3LCAwLCAwLCAxMjgwNDIsIDEyNjU0NSwgOTgzMTM3LCAwLCA2MzM0LCAwLCAwLCAKLSAgICAxOTkzNywgMCwgOTIzNjgsIDAsIDU2NzUsIDI1NCwgMCwgMCwgNjk2ODYsIDQyNDI1LCA4OTE4LCA2NDAwMywgNTcxNiwgCi0gICAgNDIzMTIsIDAsIDAsIDY5NzIsIDQyODI2LCAwLCA0MjQ2NCwgMTIwNTY3LCAwLCA5MjY0NSwgNzQ3OTYsIDY0NDAwLCAKLSAgICA2NDY5MywgMCwgNzc4NjEsIDY1NDI5LCA5NTE1LCA0NDM1LCAwLCA0MjUyMiwgMCwgNjgwMDgsIDExNzg1LCA3NDEyLCAKLSAgICA2NDY3MSwgNDE5NzgsIDE0MTIsIDQ1OTQsIDEzOTEsIDEwNTM2LCA4MDY3LCA5OTAxLCA3MTAzLCAxMjgyOTMsIDcxMDIsIAotICAgIDc0NTg4LCAxMjA3NDgsIDMxNDAsIDEyODg1NCwgNzk2MCwgNDMyNzEsIDAsIDEyNTE4LCAxMDkwOSwgMTI3NTA4LCAxNDI4LCAKLSAgICAxMjQ3MiwgMCwgNjk4NjQsIDc2OTksIDEyMzkzLCAwLCAwLCAwLCA3NDUxOCwgODIyMywgMCwgNDI2MSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTI4MzAyLCAwLCAxMjgwNDYsIDQzNDE5LCAwLCA2NDU1NCwgMTA1NzQsIDM4NzgsIDAsIDQyMzUyLCAxNzUyLCAKLSAgICA3Mzc4NSwgMCwgNDI1MDYsIDEyODU0MSwgMTAxOTksIDAsIDAsIDY4MDIxLCA2NTkxOSwgMCwgNjY5NSwgNzIwLCAzMjQsIDAsIAotICAgIDAsIDQzNDA2LCA5ODM3MzYsIDE0NjQsIDQwOTg1LCAwLCA3OTc0LCAwLCA0MzQ3NCwgMCwgNjQ0ODgsIDAsIDAsIDY0MDQxLCAKLSAgICA3NDc4NywgMCwgNzg4NjUsIDkyMjU4LCA2NTU5NywgMCwgNzg4NjMsIDAsIDEzMDIsIDAsIDc4ODYxLCAxMTkxMzQsIDAsIDAsIAotICAgIDUyMDQsIDc0Nzc0LCA0MzQwNCwgMTE4MzUsIDAsIDM5OTUsIDY4MzYwLCA2NTYwOCwgMzcxNCwgOTIxOTAsIDAsIDAsIAotICAgIDEwOTk5LCAxMTc1MCwgMCwgNDMyNTEsIDY4NjYwLCA0MzMwMSwgMCwgMTIwNTU3LCA4MTMwLCA4NjcyLCAxMDg0NSwgCi0gICAgMTE5NjQsIDAsIDk4MzE4NSwgMCwgMCwgNjg0NTUsIDQyODYzLCA3MzgzOSwgMCwgMCwgMCwgMCwgMTI2NjI5LCAwLCA0NjgsIAotICAgIDYxMiwgMCwgNjQ0MDEsIDY2NDQ4LCA2ODM3NiwgMCwgMTY3NCwgMCwgNTgyMywgOTgzMTYzLCAxMjI4MCwgMCwgNTQwLCAKLSAgICA3NDU2NCwgMTE5MDE3LCAwLCA4NDMyLCAwLCAxMTA3MywgMCwgNjQzMTYsIDAsIDAsIDgyMCwgNDE3NDEsIDAsIDEyMDY2NywgCi0gICAgMCwgNjQ2ODQsIDEyNjk5MiwgMzM1OSwgNzgwMCwgNjk5MzQsIDY1MTc3LCA2MjI2LCAzNTMsIDEyMzk2LCAwLCAxMTk2MTIsIAotICAgIDY0NzQyLCAxMjg2ODIsIDEyMDI4MiwgMCwgOTgzNDUwLCAxMjQxMiwgMTk5NDEsIDAsIDEyMDI3NywgNzg4NDcsIDE4ODQsIAotICAgIDk0ODEsIDQyNDE4LCA3MDA1OSwgNDExNTcsIDAsIDExOTUsIDY0ODk4LCA3OTI0LCAwLCA0MTE1MSwgMjAxMCwgMCwgCi0gICAgNDEzMjgsIDQyMzQ0LCAwLCAxMjQwOSwgMCwgNDM2MCwgMTI3MDA5LCA5NzM5LCAxMjg1NTAsIDY5OTMzLCA3MzkyMSwgMCwgCi0gICAgNDI1MjEsIDg1MzksIDk4MzcyNSwgMCwgMTE4OTg2LCAwLCA0Nzg4LCAwLCA2ODAyMywgNjU3MzQsIDk4MzQ1NSwgNDM3OTAsIAotICAgIDAsIDEzMDc1LCA3NDQyOSwgOTQwNjMsIDY0NTY5LCA0MzUzMiwgMTA4MzcsIDI0OTIsIDEyNzE5NywgMTE4OTAxLCA2ODYzNywgCi0gICAgNDExMzYsIDQzNzg1LCAxMTgxMywgOTY0OSwgNDExNTQsIDExOTYxNywgNTEyOCwgNDAzOCwgNDExNDMsIDY1NjA0LCAKLSAgICA2NDg1OSwgNDE1OTIsIDY3NzEsIDE2NDgsIDU0MzUsIDkxNzgzNywgNjczNCwgNDEzNDMsIDExOTg0OCwgNjU0MzksIAotICAgIDEyNzA5LCA2OTg2LCA5MjM2NCwgNjgwMTUsIDAsIDQxMzQ5LCA3MDAyMSwgMTI1ODEsIDEwMzc0LCA1MTc1LCAwLCA3MzgwNiwgCi0gICAgMTAyNTQsIDAsIDEwMjc4LCAxMDI2MiwgNjk4NTgsIDQxMzQ2LCAwLCA2MDcsIDAsIDExOTg1MiwgMTI4ODQ2LCAxMjkyMywgCi0gICAgMTAzMTQsIDEwMjgyLCA2NTQ3NywgMTAzNzgsIDEyMDI5NywgNDA5NzYsIDgyNjUsIDAsIDExOTgzNCwgNDA5NzUsIDU4NDAsIAotICAgIDQyODM4LCAwLCA0MDk3OCwgOTgzODk3LCAxMTk4NDAsIDAsIDk4MzA3MSwgMCwgNjY0NDQsIDEwNTM4LCAwLCAyNTUwLCAKLSAgICAxMTk4MzYsIDY3NzksIDAsIDAsIDM1MjUsIDY4MjQsIDExODg4NiwgMCwgMCwgNTYxOSwgNjU4MjIsIDEyNjU2NywgCi0gICAgMTk0ODgyLCA3NDU1LCAwLCA1NjE2LCAxMTQ4NiwgOTY1NiwgMCwgMCwgMTA3MjcsIDU2MTUsIDAsIDEyMDU1MSwgNDIzODAsIAotICAgIDY0ODk1LCA0MzY5MywgNjY0NTEsIDgwOCwgNTQ1NSwgMTEzNDcsIDAsIDEwMjYsIDU2MjAsIDE5NDg4NywgMCwgMTEzNTAsIAotICAgIDU2MTcsIDAsIDkyMjUsIDY0NjM5LCAxMjcwNzMsIDkxNDUsIDEyODA2MCwgMTMzOCwgMTIwNTgxLCA5ODMxNTgsIDEyNzM5LCAKLSAgICA0NjAzLCAzMDg0LCA5ODMxNTUsIDkyNDg0LCA5ODU4LCA2MDM3LCAwLCAzOTc0LCA3ODIxMywgMTAyOTAsIDk4MzcwNCwgCi0gICAgMzA4MywgMTAzMjIsIDAsIDAsIDAsIDQxMDM2LCAwLCAwLCA0MzMyMSwgNjU2MDYsIDAsIDQxMDMyLCA0MjM4OCwgMCwgCi0gICAgNjQ3MDAsIDEwMDExLCAxNDQ1LCA0MDk2MSwgMCwgMTE5MTA1LCAwLCA0MDk2MCwgMCwgMTk0ODkxLCAwLCA0MDk2MywgCi0gICAgNjQ5NTIsIDEwNDAyLCAwLCAwLCA5MjMwNCwgMTA2MDMsIDAsIDAsIDk4MzExMywgMCwgNjcxNCwgMTAwODMsIDEyNzA2OSwgCi0gICAgMTk0ODk1LCA3ODM2NywgMTI3Mzc3LCAwLCA5Mzk2MywgOTA3MywgNDI1ODUsIDY0MzAyLCAxMDcwNCwgNjUwMzAsIDQ3ODcsIAotICAgIDAsIDc0ODI5LCAwLCA2NTQyMywgMCwgMTI4MTE4LCA5NTcwLCA1NTI2MCwgOTUyNSwgMjY4OSwgOTE3NjI2LCA2NTQyNiwgMCwgCi0gICAgOTE3NjI0LCA0Mzc0MCwgMCwgNDA5NjYsIDkxNzYyMiwgMTMyODYsIDM5OTgsIDQyNTk4LCA0MjU5NiwgNTAzLCA3NDIzNywgCi0gICAgODczNSwgMjY5MCwgNjY0ODgsIDQyODM2LCAxMjcxNTAsIDQxOTU0LCA5MTc2MTcsIDE2NTIsIDc3MiwgNjY4OCwgODMxMCwgCi0gICAgNjU0MjgsIDM0ODcsIDQzNDE2LCAzNTg1LCAxMDE5NCwgNDMzMjAsIDExOTE1OSwgMTI4MTgzLCAxOTQ4NzQsIDY0NjgsIAotICAgIDQxOTc2LCA5NzIwLCA5MTc2MDYsIDExNzY3LCA0MTk3MCwgMTk0NTk2LCA1ODM2LCAxMjM1OCwgMCwgNDM1NSwgOTA0OCwgCi0gICAgMTIxODAsIDY1MDI3LCA2NDY4MCwgMTMwMzgsIDQzNjk5LCAwLCA0MTQ4OCwgMTI4MDg3LCA4NTI3LCAxOTQ5MTcsIDEyMzYyLCAKLSAgICAxMjQzNSwgMTIzNjAsIDQxMDUzLCAzMjY2LCAwLCAxMjM1NiwgODYxNiwgNDE0NjYsIDAsIDkyNTg4LCAxMTQ1MCwgMCwgCi0gICAgMzYzOCwgMTIzNTQsIDAsIDMyMTYsIDAsIDIzNTgsIDkyNjA2LCA4NjMzLCAwLCA5ODM3NDUsIDExOTE4MiwgNjkyNDQsIDAsIAotICAgIDAsIDExNzU5LCAxOTQ5MDMsIDYzNjgsIDc0ODIzLCAwLCA0MTQyMywgODA3OCwgMTA1MDQsIDEyNzU1OCwgNDE2OTgsIAotICAgIDQyMjM3LCAwLCA3MDAyLCA5ODM2NzgsIDQxNDMwLCA0MjI2NywgNDEwNTEsIDQxNDg0LCAwLCAwLCA0MTA1MCwgNDE0NzMsIAotICAgIDEwNDY2LCAxMzA5OSwgMCwgMCwgMCwgNjQzNSwgMCwgMTEzNjIsIDAsIDAsIDY1MzgyLCAwLCA0MTQyMCwgMCwgMzYyNSwgCi0gICAgNzgxNTcsIDQxNDA5LCAwLCA2OTYzOSwgMjA0MSwgOTE3OCwgOTY3MiwgNDE0MjcsIDQzNTQxLCA0MzMxNywgMCwgMCwgMCwgCi0gICAgNDE0MjQsIDkxNzU5OCwgMTIwNTQ2LCAwLCAxMjgyMTIsIDAsIDQxNDE3LCAxMjYxLCAwLCAwLCAxMjEwMiwgMTE5NjYyLCAKLSAgICA0MTQwMSwgMCwgMTI3NTM4LCAwLCA3ODI1MSwgMCwgNDIyOTAsIDMyNzUsIDkyNDcyLCA0MjMyOSwgNzQ3NTksIDAsIDAsIDAsIAotICAgIDkyMzg4LCA2OTY0OSwgMTA5ODksIDc0MjM0LCA5ODMxNDAsIDEwNTk4LCA3NDEwLCAyNjY5LCA5MDMsIDAsIDI5MjAsIDAsIAotICAgIDEyNzIzMiwgNzQ2MDMsIDY0NTA0LCAxOTkyOCwgMCwgMCwgMzkxNywgMCwgMTE3MzIsIDAsIDk4MzE4MCwgNDE0NDgsIAotICAgIDQxNDYxLCAxMjg4MjMsIDAsIDEyNzkxMiwgMCwgODgxOSwgMTI2NjMsIDAsIDQxMTg0LCA3NDAxNCwgMjMyLCA3NDgzNSwgCi0gICAgMTIwNjQ2LCA5MTY4LCA2NTc4NiwgMCwgMCwgMCwgOTA5NCwgMCwgMTE3NTgsIDY4NDI1LCAwLCAxMDY0LCA0MjQ2NywgCi0gICAgMTI4MDQ0LCAxMDExNSwgMTk5MjQsIDkyNzExLCAwLCA3ODYyLCA2NDU1MSwgMTMyMjQsIDg1MTYsIDQxODYyLCA2NjY1MCwgCi0gICAgNzU2MSwgNzg2MTgsIDY5NzkzLCAxODc4LCAwLCA5ODMyNjksIDI5MTEsIDAsIDQxMTc4LCA1NDI3LCA2NDgyMywgMCwgMCwgCi0gICAgMzc4NywgNDExNzQsIDAsIDQxNDU4LCAwLCA0MTQ2MywgNDI0MTMsIDExMjkyLCAyNDA2LCA3NzUsIDAsIDY1NTg0LCAKLSAgICA2OTkyMywgNjA3NCwgOTYxOCwgMTI4NjY4LCA5ODM5NTIsIDQzNDQwLCAwLCAxOTQ5MDEsIDQxNDM2LCAzNjU2LCAwLCAKLSAgICAxMjA2MDAsIDQxNDU2LCAwLCAxNTk5LCAxMTMzMywgMCwgNjcwMywgODUxMywgMCwgMTYxMywgMCwgNjg0NTYsIDEyNTk4LCAKLSAgICA5ODMxOTEsIDEyMDczNCwgNzg3NDUsIDc0NTAwLCA0MTQ2MCwgMTAxNDUsIDEwNTQyLCA5OTM3LCA3ODc0NiwgNzAwMjksIAotICAgIDk5MDUsIDAsIDY1NzMwLCAwLCAxMjAzNzQsIDg0MjcsIDEyMDM3NSwgNTUyNDYsIDEyMDM3NiwgMCwgMTE0OTcsIDY0Njg3LCAKLSAgICA3NDAwOCwgNDI1OTIsIDM4NzEsIDAsIDEyODMwNSwgOTExMSwgNTc0MSwgMCwgMTk0ODQ2LCAxMjAzNjYsIDExOTExMSwgCi0gICAgMTIwNzQ1LCAwLCAxMjAzNjgsIDAsIDExNjQ4LCAwLCAxOTQ4NzMsIDEyMDM2NCwgNDE1ODcsIDEyMDM2NSwgMCwgNzQzMjIsIAotICAgIDQyMTEzLCAwLCAxMjcxNTUsIDEyMTcyLCAwLCA3NDUzMCwgNjUyOTgsIDY1NzIzLCAxOTQ4NDAsIDczODcxLCA2NTcyNCwgCi0gICAgNzkyOCwgMTIwMzU0LCA5ODMwOTUsIDQxNTk1LCA3MzczMCwgMCwgNDIxMTgsIDczODMwLCA2NjA0MiwgMTAzNTUsIAotICAgIDk4MzExMCwgNzg3NSwgMCwgNDE1OTgsIDM5OTMsIDAsIDE1NDUsIDQwOTcxLCA1MzYsIDEyODUyMSwgNDMwMjksIDAsIDAsIAotICAgIDY1MTczLCA2NTI4NiwgMCwgMCwgMCwgMCwgMCwgMCwgNDEzNzUsIDU0MDIsIDAsIDAsIDE2ODcsIDEyMDUwMywgOTE3ODE3LCAKLSAgICAwLCA3ODE5NCwgNjQzMjYsIDQwOTY5LCAxMDUyNiwgNzg3NTMsIDgzMjMsIDQwOTY4LCAxMzM5LCAxMTczMSwgNzg3NTYsIDAsIAotICAgIDY1NDYwLCAxMjI0MiwgMTI4NTEzLCA4MDIwLCAxMDg0MywgMTE1NTQsIDAsIDAsIDgyNjYsIDQxMDA2LCA2NTcyMiwgMCwgCi0gICAgMTA3MTAsIDAsIDExODk0MiwgNjc2NjcsIDY0NTY3LCAxMTkxNTUsIDE5NTA5MSwgMCwgMTE5NjM2LCA2Nzg1NywgMTIwNjg3LCAKLSAgICAwLCA5ODMwNjYsIDExNzU1LCA2NjMwNSwgMCwgMCwgMTA5MTcsIDkzOTc5LCAwLCAxMTI3MiwgMjA0MCwgNDEyNDcsIAotICAgIDQxMzI2LCAxOTUwNjAsIDE3NDEsIDQyMzcwLCAxMjI3LCAwLCAwLCAxMTQxMywgMCwgMCwgNTI4MywgMTU4NiwgNDk3OCwgMCwgCi0gICAgMTk4NCwgMTE4MzAsIDAsIDkyMjkzLCA0MDk4NCwgMTI4MzA2LCA5MzczLCAwLCAxMjkxNiwgNjI4NCwgMCwgNDE2NjMsIDAsIAotICAgIDAsIDAsIDkyMzcsIDkzODUsIDQxNjQ4LCAwLCAxOTQ1ODAsIDIyOTksIDQxNjY2LCAxODMwLCA3Mzc4MywgMjA1NiwgCi0gICAgNDEyODcsIDkyNjEwLCAwLCAwLCA0MjIxOSwgMTI4MjU3LCAwLCA0MTk4NywgNDE2NzYsIDk4MzA1OSwgMTIwODIzLCAKLSAgICA5ODMxNDQsIDQxNjcwLCAwLCA5MjU5MCwgMjc5NiwgNTUyOTEsIDExNjgzLCA5OTAyLCA3NDUyMSwgNjc5ODgsIDExNDUxLCAKLSAgICA5ODMxMTEsIDEyODgyMiwgNDI2MzEsIDIzNTksIDAsIDY3ODQ0LCA3NDE2NCwgNDEyMzgsIDU0OCwgMTE0MDUsIDEzMTMzLCAKLSAgICA2NDM2OCwgOTgzMjM5LCAxMjg3OTUsIDAsIDM5NywgNDM2MjIsIDQyMTM5LCA5NTQ3LCA5NTkwLCAxMjgyMzgsIDE2MTQsIAotICAgIDQzNjYxLCA2NDM1NiwgNjYzMDcsIDY2NTEsIDEzNTgsIDAsIDQyOCwgOTYyMCwgMTQ2NiwgNzgxMTIsIDEwOTgyLCAKLSAgICAxMTg4MzEsIDEzMzMsIDcxMDQsIDQwNywgNjQyNSwgMTI4ODM0LCA3NDI1MywgMCwgMCwgMCwgNTgwNCwgMTE5NzYsIDg1NTQsIAotICAgIDkyNzIxLCAwLCAwLCA5MDU3LCA0MjI5NCwgNDEyMTgsIDAsIDAsIDc4MTM3LCAxODgzLCAxMDk1MiwgODA0OCwgNzgxNDIsIAotICAgIDQxMjI1LCA5MjYyMSwgNDI5MTUsIDk4MzY3NiwgMTI4Njg0LCAwLCA0NDA3LCAwLCA2NTgwOSwgMTE5MDc0LCAxOTQ4MjEsIAotICAgIDg0NDgsIDcxNDEsIDc0MTgzLCAwLCAxMjY3NSwgMTI2NTksIDAsIDQyMzYzLCAxMjA2MjQsIDE5NDgyNCwgNTUyNzMsIAotICAgIDEwNzY2LCAxMjAxMiwgMjM4NiwgNjQ3MzIsIDkxNzAsIDkxNzgyMSwgOTEyMywgNjQ1ODUsIDEyMDUwMCwgMTE5MTU4LCAKLSAgICA3MTQwLCAxMDk3NywgMTI3Mzc4LCA0MTY0LCA5MDgxLCAwLCAxMjA1NjksIDQyMDQ5LCA0MjA0MiwgODcwOSwgMTI4MjgzLCAKLSAgICAxMjY0NzcsIDEyMDYzNywgNDI0MTksIDY0Nzk5LCA0MjA0NywgMCwgMCwgODQ3MCwgMTE4MDcsIDY1ODk3LCA1NzcsIDAsIAotICAgIDk4Mzc2MCwgNzQzMDAsIDAsIDEyNzMwOCwgNzQ4NDAsIDAsIDAsIDEyODc5MSwgOTIyMjQsIDg3MzYsIDE0MTQsIDQyNjQzLCAKLSAgICA5NjgzLCA0MzQ4NiwgNzQzNDQsIDAsIDI1MzYsIDAsIDY2MzMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjMxNywgNjk5NDUsIAotICAgIDY2MzE1LCAyMTA2LCAxMjAyMjIsIDExMjczLCAwLCA0MzAwNCwgNzU0MSwgMCwgMCwgOTYxLCA2NDMwNywgNjYzMjQsIAotICAgIDY0OTA2LCAxMjg1OTEsIDMxMDYsIDY1OTE3LCA0MTI4NCwgMTY5NiwgMCwgODkxLCAxMjEwNSwgMCwgNDI2MjQsIDEyODAyLCAKLSAgICAzMjY0LCA4ODI0LCAxMzI2OCwgNDMwMDMsIDEwOTM2LCAwLCAwLCAwLCAxOTQ4MjYsIDkyNjg4LCAwLCAyMzIyLCAxMjAzNzEsIAotICAgIDk4MzU4NCwgMTE0NDksIDEyODE4NywgNDI4NjgsIDQxMjg1LCAzNTQ3LCAwLCAwLCAxMjg3OTMsIDk4MzM5OCwgNDMyMTYsIAotICAgIDYwODksIDc4NjgyLCAwLCAxMjA1NzgsIDQxNzAsIDEwMjksIDEyNzc2MSwgMTI3MDM2LCAxMTkyMjQsIDQyMzc0LCAwLCAKLSAgICA3NDQsIDAsIDAsIDAsIDY1ODIzLCAxMjc4MjYsIDAsIDM1NTEsIDAsIDAsIDQ2MjMsIDU1MjY4LCAwLCA0NTk4LCA5ODMxNjIsIAotICAgIDY1MTM2LCAxMjcxMzYsIDAsIDAsIDEwODUxLCAwLCA2MTc5LCA5MjYwMiwgNjE4MCwgMCwgMTE5NTIsIDEyMDc3OCwgCi0gICAgNzg2NDgsIDExOTcyLCA3ODY0NiwgNzg2NDcsIDc4NjQ0LCA3ODY0NSwgMTc3LCA3ODY0MywgNjE3NiwgMTIwNTgwLCAwLCAwLCAKLSAgICA2MTc3LCA5MDIwLCA3ODY1MiwgNzg2NTMsIDYxNzgsIDEyMDI0OSwgMTIwMjQyLCAxMjgwMjcsIDY3NjczLCAyMjE0LCAKLSAgICA4NzU0LCAwLCAxMjAyMzcsIDIxMzcsIDQzMDgxLCAwLCAwLCA5MTM2LCAxMjAyNDAsIDQ0MDEsIDQxMjgwLCAwLCA4OTc0LCAKLSAgICAyMzA4LCAwLCA3NDE0OSwgMCwgMjMxOCwgOTgzMTgzLCA2NjM2MSwgODE5OCwgMCwgNjQzNjAsIDEyNjAxLCA0MjUzNiwgCi0gICAgNjUyNjYsIDEyMDgyNywgNzQzMDcsIDkyNDYyLCA2OTcwLCA1NDA0LCA0MzMzMiwgMzY2NywgNzkzNiwgMTI5MjUsIAotICAgIDEyNjk4OSwgNjM4NSwgMCwgMCwgMTE4OTQ5LCAxMDg3NCwgNjU1MDUsIDEyODA4MywgMCwgNDIwNTMsIDIwNzUsIDQyMDU3LCAKLSAgICAxMTA4MywgNDIwNTIsIDAsIDAsIDY3NjUxLCAwLCA5NjY1LCA5MjMwMCwgOTgzNjY2LCAxMzE4MSwgMCwgMCwgMCwgNzAwODgsIAotICAgIDc0MTQ4LCAwLCAwLCAxMjAyMjUsIDEyMDIyOSwgMTIwMjI0LCA3NDE3MiwgNDExNDUsIDAsIDk0MDk2LCA5ODM5NDYsIAotICAgIDQxMTQ4LCA4NjgzLCA3NTk0LCAxMjc1MTksIDAsIDExOTA5MCwgMTA4NjksIDQzNDU4LCA0MTE0NiwgOTI0MDcsIDExNDQxLCAKLSAgICAwLCAzNTEyLCAxMTk2MzMsIDk4MzcwOSwgODEwMywgMCwgMCwgNjUxODQsIDExNzgwLCA0MTU2MywgNDI3OTYsIDAsIAotICAgIDY5NzQyLCA0MTU0NCwgNjUxNDYsIDAsIDAsIDAsIDAsIDE5OTQyLCAwLCAxMTg5MDgsIDc5ODgsIDEwNDM2LCA3NDI3MywgCi0gICAgMzI3MSwgNzM4MDQsIDY0NzExLCAwLCA5NDA2NCwgMCwgMCwgMzgwNCwgMTMwNzAsIDExNTU3LCA0MjA0NCwgMCwgMTA5NSwgCi0gICAgMCwgMzU5OSwgMTI3Nzc0LCAwLCAxMjg4NjEsIDg1MTQsIDAsIDAsIDAsIDc0MzQ2LCA2NjY5NywgMCwgMTE2ODQsIDAsIAotICAgIDkyNDg2LCA5MTc2MDMsIDAsIDQyMDQzLCA0MzIzMiwgNjY2NzcsIDAsIDQyMDQ2LCA3ODI0MSwgNDAzNiwgMTI2NDgxLCAwLCAKLSAgICAxMjgyMTMsIDE5NDg2MSwgMCwgMTE5NTQsIDkzOTc4LCAxNDUwLCAxMjk4NiwgMTM0MCwgMCwgNjU0NDEsIDkyNzIyLCAwLCAKLSAgICAwLCAxMjc3NzIsIDAsIDkxNzU0MiwgMCwgMCwgNjUzOSwgMCwgMCwgMCwgMTk0ODU2LCAwLCAxMjA0OTIsIDQxMTkwLCAKLSAgICAzOTczLCAxMTkzNjUsIDQ1NzUsIDQxMTkzLCA3OTgyLCA0MjksIDAsIDEyNzE5NCwgMCwgMTk0ODU0LCA2NTc5MiwgMCwgCi0gICAgMTE4OTY4LCA2NDE3LCAxMTg5MTgsIDc4MTc4LCAwLCAxOTQ4NTAsIDAsIDAsIDQ5MTksIDEwNTkwLCAxMjg1NTYsIDc3NTUsIAotICAgIDAsIDAsIDY0NTQ4LCAxMjA1MDYsIDE2MjEsIDEwMjE0LCA2NTEyNiwgMCwgMTI3MDA0LCAwLCAxMjE4OCwgOTgzNjY4LCAKLSAgICAxNjE3LCA4MDUwLCAwLCA1MDE1LCAwLCAxMTkxNzQsIDQyNTkwLCAxOTQ4NzEsIDE3NTYsIDc4MTgxLCAwLCA2NTc2OCwgCi0gICAgNjM1MiwgNDE4OTIsIDAsIDc1NTUsIDEzMTAzLCA1NDA4LCAyODE3LCAxMjE0LCA2OTkxOSwgOTIzMzUsIDk4MzEyNSwgMCwgCi0gICAgMCwgMCwgMTI3MTk1LCA3OTU3LCA4Njg5LCA2NDcyMywgMTA1NiwgNDI4OTYsIDc0MTQ3LCAxOTQ4MTMsIDAsIDU1Mjg2LCAKLSAgICA3MDczLCA2NTg1MCwgMTIzMjcsIDk4Mzk0OCwgMTE5MDI4LCAwLCAwLCAwLCAyMzQxLCA4NDUwLCA4NDg0LCA4NDc0LCAKLSAgICA5ODMyNjAsIDAsIDcwMDc5LCA4NDYxLCAxMjgxMDIsIDEyMTUzLCAxMjc5OSwgMCwgNDM3MDksIDQzNzA4LCA5NDUxLCAKLSAgICA3NTcxLCAxMzA3MywgMCwgMCwgNjgxLCA5ODMyNTIsIDcwMywgMCwgMzI3MiwgODc4MSwgMTI4OTQsIDcwMDc3LCAxMTcwOSwgCi0gICAgOTIyODgsIDc0NDQ2LCAwLCA5MjUzMiwgMCwgMTEzMzgsIDEyMDc2OCwgMzI3NiwgMCwgMCwgNjU5MjgsIDAsIDAsIDY1MDIxLCAKLSAgICA2NDc5NSwgNzQ1NzQsIDAsIDEwMDQ3LCA3ODgxNCwgMzI2MiwgNzg4MTEsIDQyNzExLCAwLCAwLCA2ODQ3OCwgMTYzLCA1NzYsIAotICAgIDk4OTUsIDE2NTUsIDc4ODE3LCA3NDU5MSwgNzg4MTUsIDc4ODE2LCA5ODMxMjIsIDAsIDAsIDAsIDEwMDM5LCAwLCAKLSAgICA5ODM5NDUsIDU2MjMsIDU3MTcsIDU3NzYsIDAsIDAsIDAsIDQxNTkxLCAxMTAzNiwgNjUyNTIsIDkyMzgyLCAwLCAwLCAwLCAKLSAgICA2Nzg0OCwgMCwgMCwgMCwgODg4NywgMTI3NTIxLCA3Mjk1LCAxMTAzMSwgMCwgNDMxNTcsIDAsIDg5NDYsIDEwMzQ4LCAKLSAgICAxMDQxMiwgODc1NSwgMCwgMCwgNTcxOCwgMTMyMjEsIDAsIDAsIDc4MTM1LCAwLCA5ODM3MTEsIDg4MTAsIDc0NDk5LCA2ODYsIAotICAgIDAsIDcxMzYyLCA0NjE5LCAxMTg5NTQsIDY2NTQsIDczNzY5LCA3NDQyNiwgMCwgMTIwNDAsIDY1Njg5LCAxMDEyOCwgCi0gICAgNjUxMTgsIDAsIDExOTE1MSwgNzQyMDUsIDkyNjUxLCAwLCAyNDAxLCA2ODE0NCwgODc5MiwgOTgzNjQ4LCAwLCA2NTQ1NSwgCi0gICAgMCwgOTIyNDYsIDAsIDExOTEyOSwgMCwgMTI4ODYsIDEyNzkyMCwgNjY2MjQsIDAsIDQzNTU3LCAxMDMwMCwgMTAxNjEsIAotICAgIDEwMzk2LCA3NDEzNSwgOTgzNDUzLCAxMTg5NDUsIDc4MTE4LCA3Mzg1MSwgMzAxMCwgNjQ0MSwgNzgxMjIsIDE0NTgsIAotICAgIDQxNDc1LCAxMjg2NzIsIDkzOTc1LCAwLCAxMTQ3OSwgMCwgMTIwMzU2LCA2MzUwLCAxMjg2NCwgNjk2NzQsIDc4MTE0LCAKLSAgICAxMDYxLCA2NDc4MCwgMjAwMSwgNDMxMTEsIDU1MjMwLCAxMjg2ODYsIDQwNTIsIDAsIDc2MjYsIDAsIDAsIDEwNDUsIDAsIAotICAgIDU2MzEsIDQxMTEzLCAwLCAwLCA0MzcwNywgNzQxMjcsIDAsIDAsIDg0ODYsIDAsIDczNzU4LCAyMzM1LCA0MzYyLCAKLSAgICA5ODMxOTUsIDEyNjU2MSwgNjkyMjEsIDEwMjUsIDAsIDQyNjI1LCA5MTc2MjcsIDc4MDg0LCA0MTQ0MywgMCwgMTI4MjA2LCAKLSAgICAwLCAxNzc0LCAxNTIzLCAwLCAwLCA0MTQ0NSwgNzgyMzYsIDAsIDg1NjcsIDQxNDQyLCAzOTg4LCAwLCA3ODIzNywgCi0gICAgMTE4OTEwLCAwLCA2NTI3NCwgODU2NCwgNzgxOTksIDc4MjM4LCAxMjc1MTUsIDAsIDAsIDQzNDQ2LCAwLCA2NjUxMywgCi0gICAgNjI1NiwgMCwgNTc5LCA1NTIxOCwgMTAyMDYsIDk4MzA3NSwgNjM3NSwgMjY3MywgMCwgMTE4MTQsIDAsIDQ0ODgsIDAsIAotICAgIDEyNzMzNiwgNjg0NTEsIDEwNDQ0LCAxMTg4NDYsIDEyNzMzNCwgMTE3OTksIDc0NDA3LCA2ODQ2NiwgNDQ4NywgMTI3ODQ5LCAKLSAgICA0MjgzMiwgMTAzMiwgMTIwMjY3LCA0MzQ1MCwgNzgyNTcsIDcyMDMsIDAsIDYxNCwgNzgxOTEsIDEyNzMyNSwgMTIwNjE1LCAKLSAgICAwLCA3ODI2MiwgMTI4NjY5LCAxMjczMjMsIDAsIDQzMTIxLCAwLCAwLCA5MjUxMywgMTA1MCwgNzU0OSwgMCwgMCwgOTMxNCwgCi0gICAgMCwgMCwgMTIwNjE2LCAwLCAxMDA1NywgMCwgMTI3MzEzLCAwLCA2NjUwNCwgOTgzMTcxLCAwLCAyMzA3LCAwLCA2NDMzMywgCi0gICAgMTI3MzEyLCAxMjg1NDcsIDczODczLCAwLCA5NDAzNSwgMCwgMTI3OTczLCAxMjg3MDgsIDAsIDEwMzYwLCA2NzQ2LCAwLCAKLSAgICA5MjI0NSwgNDQwLCAwLCAxMzA4NSwgOTIzMywgNzQyMTYsIDAsIDAsIDk5NTcsIDEyODI4NSwgNjY0NDcsIDgwNDYsIAotICAgIDY0OTYzLCA2NTc3NywgMTAxMjUsIDc0MjEyLCA0MjgxOSwgMTA5MTAsIDAsIDE1MjEsIDk4OTYsIDkzOTY1LCAxMDQ4NywgCi0gICAgNjk4NzgsIDEyNTI3LCAwLCA3OTcwLCAwLCAxMjg2NjAsIDAsIDY1NzY5LCA1MjQzLCA5ODQ5LCA1MjM5LCA2NTc3MSwgCi0gICAgOTgzMjM1LCAwLCA1MjM3LCA2OTcxNCwgMCwgMTAxMDMsIDUyNDcsIDQ3NjksIDAsIDExODk3NywgMTI4NzMsIDIyODMsIAotICAgIDk4MzIzNywgMCwgMzAwOCwgNDg5NiwgMCwgMTIwODcsIDAsIDU1MjMxLCA0MTEwMywgMCwgNjQ1NjUsIDQ3NzMsIDAsIAotICAgIDkyNzE3LCA3MDA3NCwgNDc3MCwgMCwgOTE3NTY3LCA4NzMxLCA2NTM3OCwgMTI3MzYyLCAxMjA2MTksIDkxMjIsIDEyODAzMywgCi0gICAgMTI2NjAwLCA0Nzc0LCAzMDE5LCA5OTk3LCAxMjgzNCwgMCwgOTQ1NiwgMTAyMTUsIDEyMDU0NywgMCwgMCwgMCwgMCwgCi0gICAgNzQ3NzYsIDQyODEsIDQ3NjgsIDAsIDQxNTM1LCA0MDk5LCA5MDE3LCAwLCAwLCA3ODA5NSwgMCwgNzgwOTYsIDAsIDAsIDAsIAotICAgIDc4MDk4LCAwLCA0MjgxNCwgODgwLCAwLCAwLCAxMjgwMjEsIDIxMzQsIDAsIDEwMTE2LCA5ODc3LCA5MjMyOSwgMCwgMCwgCi0gICAgNzA5NSwgMCwgNzQxMTYsIDY3NzgsIDAsIDc4MDkwLCA4MjQzLCAyNDI3LCAxMjgxNDEsIDcwOTMsIDAsIDExNTg1LCAKLSAgICAxOTUwMDMsIDk5NjIsIDAsIDEyMjIzLCAwLCAwLCAxNDM0LCAxMjAyNTQsIDU2MzcsIDExNTczLCAwLCAwLCAwLCAxOTk1MSwgCi0gICAgMCwgNzgxMjEsIDAsIDAsIDU1MjgzLCAwLCAwLCA3NDQzNywgMTE1NiwgODc0MCwgOTI0MTUsIDM3ODIsIDY0MzMxLCAwLCAKLSAgICA0MTM3MCwgMTAxNCwgODI2MSwgMCwgMCwgMTA4MzUsIDAsIDY1NTM2LCAwLCAxMjA0NjMsIDAsIDc3MDIsIDExODgyNCwgMCwgCi0gICAgNDMwMTAsIDY1Nzc5LCA2NTc4MywgMTE1MCwgMTA1NDcsIDU3MDAsIDAsIDEyMDYwMywgNjUzODMsIDIzMzksIDQyNTk0LCAKLSAgICA1Njk3LCAxMTg3ODgsIDAsIDEyODU3NiwgMCwgNDIyNTcsIDU2OTYsIDkyNjc3LCAxMjA0NjUsIDM4NjIsIDk2NDMsIDAsIDAsIAotICAgIDc2MzQsIDY1MTY3LCA5ODQ1LCAwLCAwLCA1NzAxLCA5NzIyLCA0MTQ5MCwgOTgzMTUzLCAxNDI2LCA2ODIxNywgMCwgCi0gICAgNjg0NDcsIDQyMjA0LCA1NTI3MCwgODU3MSwgMTk0OTkxLCA3ODA2NywgMCwgNzg4MTgsIDkyNzE5LCA0MzE4MiwgMTIxODQsIAotICAgIDAsIDQyMDIyLCAwLCAxMDI4MSwgMCwgNTY1MCwgNDMxOTQsIDY0NzEyLCAxMDc0NCwgMCwgOTkwLCA1NjQ3LCAwLCA3Mzg3LCAKLSAgICA3ODczNCwgNDExMTQsIDExNDc3LCA1NjQ2LCAxMjg3OSwgMTEwMTgsIDk4MzkzMCwgMzk0NSwgOTI1ODksIDAsIDAsIDAsIDAsIAotICAgIDc4MjEyLCAxMjc3NDYsIDEwMjAsIDczNzYzLCAwLCA3ODczMSwgNTY0OCwgNjQ3NDgsIDE5NDkxMCwgNzg3MzMsIDEwMjA1LCAKLSAgICAzNTQ1LCA5ODM1ODUsIDY5ODQsIDAsIDc0MDUxLCA5ODM2NTUsIDQzMjQyLCAxMjA0NTgsIDI2NjcsIDAsIDAsIDAsIDk5MTEsIAotICAgIDAsIDY1MDIwLCAxMDA5NywgMTE5MTY2LCAxMjcxNDUsIDk4MzY2MiwgMTE4ODM2LCA5ODM3NDgsIDc4NDI3LCAxMTQwLCAKLSAgICA3ODQyNiwgMCwgMTAxNTksIDAsIDAsIDgxMjgsIDAsIDAsIDkxNzk2NSwgMTgxNSwgMTk5MTAsIDg5MCwgMCwgMzI2NywgCi0gICAgOTIyOTEsIDAsIDEwMTIzLCAwLCA0NDEwLCAxMDQxLCAxMDU3NiwgNjM1NCwgOTI1ODEsIDU4MCwgNzQyMzIsIDAsIAotICAgIDEyODM0NywgMCwgMCwgMCwgMTk5MzgsIDY1OTA2LCAxMjc4MTksIDAsIDAsIDMyOTgsIDUzNzUsIDEwMTQyLCAwLCA4MjE1LCAKLSAgICAwLCA2MTM0LCA0MTI0NiwgNjQ0MDIsIDAsIDY5ODk5LCAwLCAwLCAwLCA0MTM4MiwgMCwgMTI4NjUzLCA1MTczLCA2NTM0OCwgCi0gICAgNTI3LCAwLCAwLCA5MjYxMiwgMTI4MjUwLCA3ODc5NywgMTE5MTUsIDAsIDAsIDEwMDcyLCAwLCA0MjY5NSwgMjMyOSwgCi0gICAgNDIyNTAsIDAsIDEyODg2NCwgNjk2NjcsIDEyMjQ1LCAxNTY4LCA5NDAzMywgMCwgMCwgMTI4MTIwLCAwLCA3NDMyOCwgCi0gICAgOTI3MDgsIDc0NzY5LCAwLCAxMTkwODcsIDkwNjksIDYxNDQsIDAsIDAsIDczODIyLCAwLCAxMjgwMTAsIDY0OTE3LCAKLSAgICA0MTUyMSwgMTE4OTM0LCA0OTQsIDEzMjUwLCAwLCA2NTA5OCwgNjM2NCwgOTU2LCAwLCAxMjgzMCwgMTA0NjIsIDczNzQwLCAKLSAgICA3MzczNCwgMCwgMCwgMCwgNjY0NDksIDEzMjYzLCA3NDI4MSwgNjkyMTcsIDEzMTcxLCAxMjc3OTYsIDAsIDAsIDkyMjk0LCAKLSAgICAwLCAxMDQ0LCA0MTI3NiwgMCwgMCwgMCwgNDIwNjgsIDExNzk1LCAwLCAwLCAwLCAwLCA0MjQ1MCwgMzkwNywgMCwgNjQ1MjYsIAotICAgIDExODI5LCA2ODE5NywgMTIyOTUsIDAsIDExNDc1LCAwLCAzMDIwLCAxMTUzNywgMCwgNjY0NDEsIDk4MzQ1NCwgNzA5OCwgMCwgCi0gICAgMCwgMTA1NywgNTY2LCA0MjY5NiwgMCwgMzAxNiwgNDIyNzQsIDQzNDY0LCA2NjQ5MCwgMTI5MjEsIDY2NTcxLCA3ODQ3MiwgCi0gICAgOTI1MTAsIDMwMDYsIDQ2MjAsIDEyNzIzNywgOTgzNTc4LCAwLCAwLCA2NDY1OSwgMCwgMTI3NzQ5LCA1NTI1MywgNjM1NywgCi0gICAgNjM2MiwgODYyNiwgNzEzMzcsIDIyMTYsIDkwOTAsIDY1Mzc3LCA0MTU5NiwgMCwgNDI5MjAsIDE2OTgsIDAsIDY0NDc3LCAwLCAKLSAgICA0MzgxMywgMTA1MywgMCwgNzgyNjksIDAsIDEyNjU4NiwgMTA1MiwgMTA1MSwgNDU5LCAxMDYwLCA3NDM0OSwgNjY0NzksIDAsIAotICAgIDAsIDAsIDAsIDQyNDkwLCA2ODksIDY1MDgsIDQxNjMsIDQyMjk4LCA4NjM5LCA2NjY0MSwgNDI0NiwgMCwgMCwgMTIxMzAsIAotICAgIDAsIDQyMzM3LCA2NDU5NiwgNjQzNzUsIDY2NDgxLCAxMjc4NTAsIDAsIDAsIDYzNTksIDAsIDQzNDcxLCA5ODM3NjgsIDAsIAotICAgIDAsIDEyNzI3NCwgMCwgNjM1OCwgNjM2MSwgMTkyNiwgNjM1NiwgOTI2MjcsIDc4OTgsIDgxMTAsIDEwOTM1LCAwLCAxMDA2OSwgCi0gICAgNTgzMCwgMCwgNDM2ODUsIDAsIDAsIDAsIDAsIDg2OTMsIDc4NjExLCAxMTk1NjUsIDk4MzgwOCwgMTIwNDEzLCAwLCAKLSAgICAxMjcyNTcsIDY1ODk0LCAwLCAwLCAwLCA5ODM5MjMsIDAsIDAsIDExOTE4NywgMjEzNSwgNzg4NjgsIDAsIDAsIDc4ODY5LCAKLSAgICA0MjMxMywgNTU3OSwgOTI0MTIsIDAsIDk4MzA4MiwgOTQwMDIsIDAsIDU1NzgsIDQxNzc0LCAxMjgxMTUsIDQyMDIzLCAKLSAgICA2MjM0LCA1NjY5LCA5MjI3NSwgMCwgMCwgMCwgMTI3NTA2LCA2ODIwMiwgNTU4MywgMCwgMCwgNDI0MjYsIDU1ODAsIAotICAgIDQyMjc2LCAyOTIzLCA4OTIsIDIyMjAsIDQyNDY1LCA0MTMzMCwgMTk0OTg3LCA1Nzk1LCA2NTUxMiwgMTE5MDA2LCA2NTcwMiwgCi0gICAgMCwgMTIwODAxLCA2NTI1MSwgMCwgNjU3MTAsIDAsIDAsIDY3NjcyLCAwLCA1MzcwLCAwLCAyOTMxLCAxNjM4LCAxMDk2NiwgCi0gICAgMTAxODgsIDY1ODc4LCAxMTg4NDgsIDAsIDY5Njk0LCA2OTg3OSwgMTI4ODMwLCA4MTcyLCA0MjAxNywgMCwgMTA4NDQsIDAsIAotICAgIDEyODE5NSwgOTI0MjQsIDYzNzQsIDAsIDAsIDI4NiwgNzgwMjMsIDEwNjIsIDAsIDExOTk5OSwgMCwgNzM5NSwgMCwgMTA3MCwgCi0gICAgNjQ5MDAsIDcxNTMsIDYwOTUsIDQxODY1LCAwLCAzMDE1LCAxMjgwMjMsIDEyNjQ2NSwgNTIxMSwgOTgzMDgzLCA2NDAwLCAwLCAKLSAgICAxOTQ5ODMsIDcwMDU0LCA4MTg5LCAxMTI3NiwgMCwgMCwgMzcyLCAxMjg4MjksIDAsIDExODg3NCwgNDIxMDIsIDQxNTg1LCAKLSAgICAxMjgyMDIsIDAsIDQyMTAxLCAyNzYsIDc4NDAyLCAwLCAzMywgNzQyMjYsIDEyNzMwMywgOTAwNywgMTE4Nzk2LCA0MTU4OCwgCi0gICAgNjYwMzMsIDQyNywgMTA3NjMsIDExODgxOSwgMCwgMTI3ODg0LCAwLCAxMDMxLCA2MjU3LCAwLCA0MjEwNCwgMCwgOTgzOTgwLCAKLSAgICAyMzI4LCA5MjQwOSwgMTA3MSwgNDI4OTksIDAsIDc0ODQ4LCAwLCA5ODM1ODAsIDAsIDEwNDcsIDAsIDAsIDY0NzkwLCAwLCAKLSAgICA2OTcyMywgMTA2NTEsIDAsIDAsIDAsIDAsIDkyMjA2LCAxMTkxODEsIDU3MTEsIDQxNjMzLCAxMjA5OCwgNjU1NzEsIDkxNjYsIAotICAgIDAsIDU3MTAsIDAsIDY3OTAsIDY1MTY4LCAxMzIxNiwgMCwgNjk3MTYsIDY5NzI2LCAwLCA2NDYxMSwgNDE2MjMsIDE5NTAwMSwgCi0gICAgNTcxNSwgNjk2NTQsIDAsIDAsIDU3MTIsIDI3NjEsIDQxNjIwLCA2ODEyNCwgMzA3NCwgNTcyMiwgMCwgODY0MywgNzM3NjgsIAotICAgIDAsIDExODkwNiwgMjc1NywgMTEwNjcsIDk3MTgsIDc0NDk4LCA4OTEwLCAxMDY4OSwgNjQ3OSwgMCwgMCwgMCwgNzg2MDcsIAotICAgIDkxOTYsIDY5NjcwLCAwLCAwLCAwLCAwLCAxMTg5MTEsIDAsIDAsIDAsIDAsIDAsIDEyMDAxMCwgMCwgODcwMSwgNjgxMzAsIAotICAgIDExOTYxNiwgMTIwNTIyLCAwLCA0MjQ3NywgMTk0OTk0LCAxMjEyMywgNDQ5NSwgNDM1NjksIDAsIDAsIDAsIDY0OTQ2LCAKLSAgICAxMDk5MiwgMCwgMTIwMDA5LCAwLCAwLCA5MzE4LCA5Mzk4NiwgMTMyNDksIDY1Njc5LCA3MzgwOCwgMCwgNjU0NTcsIAotICAgIDQyMjQ5LCA3NjM5LCA0Mzk5NSwgNjc4NDUsIDQyNjQxLCA1NDU0LCAwLCAwLCAxOTQ5OTcsIDEyMDAwNSwgMCwgOTgzOTY2LCAKLSAgICA1MDg0LCAwLCAwLCAxMTg4NjEsIDAsIDczMywgOTE3ODc2LCA3ODAxNCwgNzg0MzYsIDc4NDM1LCA0MTY3NywgMCwgOTIxOCwgCi0gICAgMTczMSwgMCwgOTgzNzQ2LCAwLCA2Nzk5MCwgMCwgMCwgMCwgMTIwMDAxLCAxMjcwMTgsIDkyNDkyLCA1MTU1LCAxMjAwMDAsIAotICAgIDUzNTgsIDk4Mzc0NCwgMCwgOTE3NzY3LCA2NDQyNCwgOTgzMjMxLCAzODQwLCA2NDMxNCwgNDE0MzIsIDAsIDc4MzE1LCAKLSAgICA2ODQzMCwgNjc5ODAsIDQzMjUzLCA2NTk0MywgMCwgMzM3MSwgMTA5ODgsIDAsIDg3NzEsIDE0NzksIDAsIDAsIDExMDksIAotICAgIDExNTgwLCAwLCA2NDYwMSwgMTIyMDUsIDAsIDAsIDY0NTA3LCA4ODY4LCAzOTksIDY3OTc4LCA3NDg0MiwgOTgzMjg0LCAKLSAgICA5ODM3MjEsIDEyMTQ5LCAxMzA4OCwgNTUxLCAwLCAxMDE1NiwgMTIxMTksIDkyNTcyLCAwLCAyNTQ0LCA2NTA3NCwgCi0gICAgMTE5MjExLCAwLCAwLCA3ODAxMSwgMzUxLCAxMTkxNDksIDAsIDAsIDU1MjI5LCAwLCA3NDI2OCwgMCwgMCwgMCwgNDIzNzcsIAotICAgIDAsIDAsIDAsIDk4MzkyNCwgMCwgOTAxMywgNDA1NCwgMCwgOTgzNTcwLCA5ODM2MjgsIDAsIDczOTYwLCA1NTg1LCA2NTg4MSwgCi0gICAgMjU0OSwgNzQ0NjksIDAsIDAsIDU1ODQsIDgzNTgsIDAsIDY0MjE1LCA5MjIxOSwgMTA5MTksIDAsIDc5ODAsIDEyNjYwMSwgCi0gICAgOTgzNzg0LCAyMjE4LCA0MTgwMCwgNTU4OSwgMCwgMjY2NCwgNDE2MTMsIDU1ODYsIDExODg5MCwgMCwgMTEzNTYsIDAsIDAsIAotICAgIDQzNDUyLCA3ODYwOSwgMCwgNDI1NzMsIDY3ODU2LCAwLCA3ODEyOSwgMCwgMCwgNzQzOTIsIDgxMzUsIDY0NTAsIDEwMDU1LCAKLSAgICA3Nzk5NiwgMCwgMCwgMTE5MjI1LCA1NjU3LCAwLCA5NjI2LCAwLCA3Nzk5NCwgMTAxNzksIDU2NTQsIDEyOTM5LCA5MjU3MywgCi0gICAgMTIwNzk5LCAwLCAwLCA1NjUyLCAxMDk0NSwgMCwgNjY0ODYsIDAsIDM2NjEsIDc4NjMsIDAsIDAsIDAsIDc0NTA5LCAKLSAgICA5ODM4NTIsIDU2NTksIDAsIDc4NjkyLCA2NjcyOSwgNTY1NSwgOTgzNjI2LCA0MjE2OCwgMCwgMTA1NSwgOTE3NjI4LCAKLSAgICAxMjc3OTIsIDY2MzEwLCA3NDAzMCwgMCwgMTIxNDYsIDczOTU1LCA3Mzk1NiwgMTE2MTgsIDAsIDEyNjk5MCwgMCwgMTAyNzIsIAotICAgIDEwMzA0LCAxMDM2OCwgNDI1MTgsIDU5NCwgMTAyNDQsIDEwMjQ4LCA3NDA3LCA5ODM4ODcsIDY0ODcwLCAwLCAzNDY3LCAKLSAgICA5ODM4OTEsIDAsIDMzMzEsIDk0NiwgMTAyMzEsIDE0OTUsIDgxMzEsIDc0MzMwLCAwLCA5NTYyLCA2OTIyMiwgNjU5MjcsIDAsIAotICAgIDcwMDM2LCA2OTY5NiwgNjk3NjksIDY0NjU2LCA5ODM3MjYsIDAsIDk0MDIwLCA3MDA1NiwgNTY2NiwgNjUyMjcsIDUzMTgsIAotICAgIDYzOTk0LCAwLCA5MDkxLCAxMDc5OCwgMCwgMTI4MTY2LCAxMDE4NiwgMCwgNzczMiwgOTgzNzI0LCA2NDU1NiwgMCwgMCwgCi0gICAgNTY2OCwgNzQ0NDUsIDAsIDEyODY2MywgNTY3MCwgMTI2NjEwLCAxMjcyOTcsIDExODIwLCAyOTkyLCA3ODI2LCA1NjY3LCAKLSAgICAxOTk1MiwgMTIwODA3LCAwLCAxMjc0OSwgNzQ1NTEsIDAsIDAsIDY2NDk2LCA0MzYxLCAxMTkyNjAsIDEzMDYsIDkyODYsIAotICAgIDE0OTcsIDEyODI4NiwgOTQwMDQsIDAsIDAsIDM1NzEsIDEzMjQ3LCAwLCA3OTczLCA2NjM1MywgNjg0MzUsIDc4Mjc4LCAKLSAgICA2Nzg5NiwgNDMxOTIsIDAsIDc4MjY1LCA1NTMsIDEyMDY1MywgMCwgMTI4NTU0LCA1ODI5LCAwLCA0NTg3LCA3ODI4NSwgCi0gICAgNjU5MTIsIDAsIDEyNzQ2LCAwLCAwLCAxMTk5MjQsIDU2MzMsIDExOTkyNywgOTQxMDEsIDk0MTAyLCA5NDA5OSwgNjQ5MDUsIAotICAgIDk0MTA1LCA5NTEyLCA5NDEwMywgMTI3NDIsIDY0NDMsIDk4MzgwNiwgMCwgOTEzNSwgMCwgNDE1NjQsIDAsIDU1MjE5LCAKLSAgICAxMjg4MzIsIDk4Mzg1MSwgMCwgMTIxNDgsIDAsIDc4Mjk3LCAwLCA2NDI1NiwgMCwgMTE2NjksIDAsIDU2MzQsIDQ1MjQsIDAsIAotICAgIDEyNzI3MCwgMCwgMTE4ODgwLCAyNDI1LCA2NTE4MiwgMTI4NzY5LCA0MzYzNiwgNTIyMSwgNzg0MTAsIDMyOCwgMCwgCi0gICAgOTgzODA5LCA2OTgxNSwgNTYzNiwgMCwgNTMyOSwgMCwgNTYzOCwgMTE5OTE4LCA3OTQwLCA2NDkzOCwgNDMyMjMsIDQzNzYwLCAKLSAgICA1NjM1LCAzMzczLCAyOTg2LCA3ODI5MiwgNzQyMjMsIDM0MzcsIDc4MjkxLCA2MjAzLCA0MjQ3LCAwLCAxMTkyMCwgODI3NCwgCi0gICAgMCwgMCwgMTY1NywgNDE1NjEsIDc4Mjk5LCA3ODI5NSwgNTYzOSwgMjk1NCwgNTY2MCwgNTY0MCwgNzgzMDMsIDk4MzY4NSwgCi0gICAgNzgzMDAsIDQyMjI3LCAwLCAwLCA0MTYzNywgNjc4NzIsIDAsIDc4MzEwLCA0MTYyNSwgNDMzNjIsIDc4MzA5LCAxMjA3MTMsIAotICAgIDExNzA1LCA1NjQyLCAwLCA1NDg2LCAwLCA0MzU2LCAxMTcxMCwgMCwgMTIwNTEsIDY5OTM4LCAwLCA1NjQxLCA4MjU5LCAwLCAKLSAgICAxMDU4LCAwLCA2NzYzMCwgMCwgMCwgMTE0NCwgNzg3NTAsIDAsIDQyMjI4LCAwLCA3Mzg5MCwgMTE4OTcyLCAwLCAyODAwLCAKLSAgICAwLCA1NjQ1LCA2NDk2NCwgODY1MiwgMjU0NywgNjY0ODQsIDQzNjM0LCAwLCA1NjA4LCA2NTg5MCwgNDM4MDgsIDAsIAotICAgIDY3NjIxLCAxMTk5MzQsIDkwMDAsIDAsIDAsIDkyNjczLCAxODY1LCAwLCA1NjEzLCA2OTk1MCwgMCwgMCwgNTYxMCwgMCwgMCwgCi0gICAgNjU4MjYsIDIwNjksIDAsIDEwNzg3LCA0Mzk5OSwgMjk5NywgMCwgNTYwOSwgNzgzMTYsIDY1MzE5LCA3ODMxMywgMTIzMTYsIAotICAgIDY1Mzc2LCAyNDEyLCAwLCA4MTg2LCA5ODA3LCA3NDI2OSwgOTI1NDcsIDEzMTMwLCA2NTg3NCwgMCwgNTgwNywgMCwgCi0gICAgMTAwMzAsIDUzMDYsIDEyMzY0LCAxMjgwNjQsIDAsIDExNzA0LCAwLCA5MjU4MywgMTAyMTEsIDAsIDAsIDAsIDAsIDExNzA2LCAKLSAgICA5NzEwLCAwLCAwLCAwLCA0MTMsIDY1NjIzLCA3MTE4LCAwLCA5MTMzLCA3NDI2MiwgMCwgMTA0MiwgMCwgNjQ3NzksIAotICAgIDEyMTcxLCAxMTkyNDAsIDYxODUsIDY0Nzc2LCA0OTg0LCAwLCA3MDgsIDExMzkxLCAwLCAxMjI0MSwgOTI3MjAsIDk4Mzg5OSwgCi0gICAgMTMwOCwgMCwgMjUzNCwgODEwLCAwLCAwLCAwLCAwLCAwLCAxOTE3LCAzMDAwLCAwLCAwLCAxMjA3MzksIDIzNjQsIDkyNDQzLCAKLSAgICA3NDQ3MCwgNjY2MTgsIDY1NjgwLCAxMjA3NzksIDEwMDI3LCAwLCAxMjgxNTQsIDEyMzM3LCAxMjA3MjIsIDEyNzM2OCwgCi0gICAgOTgzMTY3LCAyOTgwLCA3NTUsIDY5Nzc0LCA5MzEsIDEzMTI0LCA2ODE4MiwgNjM2MywgMjc0OCwgMCwgMCwgNjUwNDEsIAotICAgIDkyMjc2LCA0NDAxMSwgODczMCwgOTgzMDY3LCAxMjc4NTQsIDc4MzEyLCA3Mjc0LCAxMTkyNTAsIDAsIDcyNzUsIDc4MzA0LCAKLSAgICA5MzUsIDAsIDY1ODQwLCAzNzcsIDQyMzI1LCAxMTY0OSwgMTI3MzYzLCA2NTI1MywgNjQzMDEsIDEyODgzNSwgNzgzMDgsIAotICAgIDQyMzQxLCA2NTI4NCwgMjQxNywgMCwgMTI4ODQsIDE5OTEyLCA3OTA3LCAxMDc2OCwgMCwgMTk0OTk4LCAwLCAxMDY3MywgCi0gICAgMTE5MjE3LCA3MjQ4LCAwLCAxMjgzNDYsIDE3ODEsIDU0OTYsIDM2MjcsIDYyLCAxNjQ5LCAwLCA5NjQsIDAsIDEyNzg3NiwgCi0gICAgNzgyMjYsIDEyODc3NSwgMTI3NTEyLCAwLCAwLCAwLCAwLCA0MzY4OSwgMTI3OTExLCAxMzE0MiwgNzg4MTIsIDQyNDE1LCAKLSAgICA2NjU3NSwgNDU0MiwgNjk5MDksIDQzNTQ3LCAwLCAwLCA3Njc3LCAyOTkxLCA0OTQ2LCA0MjQ1NCwgMTE1NjUsIDc5NDksIDAsIAotICAgIDk4MzkxOCwgMTEzNDEsIDQyNDk0LCAzMDczLCA2NTYyNSwgOTcxNCwgMTE2OTIsIDQ2NTcsIDAsIDkyNzI0LCA2NDc4LCAKLSAgICA5ODk4LCA0MzY3MywgNjUyMzcsIDYyNDEsIDcxMDYsIDQ4NzcsIDk4Mzc5NSwgNjIzOCwgMCwgMTA1NDgsIDEyNzA0OSwgCi0gICAgNDQwOSwgMCwgMCwgNjQ3OTgsIDAsIDUzNDYsIDAsIDk0MDQ3LCA2MjM3LCA0ODc0LCAwLCA5MTc2LCAwLCAxMjY1NTMsIAotICAgIDY1MjMxLCA2NTg4NCwgMTI2NzgsIDc4NzQ4LCAxMTg5MTIsIDExMzc4LCA0NDAxOCwgNDI3ODUsIDI0MDgsIDMyNTEsIDAsIAotICAgIDAsIDU2ODUsIDAsIDI0NjEsIDExMDUyLCA3MDkxLCA1MzQyLCA4MzE3LCAwLCA2ODE2MywgNTM0MCwgMCwgMTI3ODIwLCAKLSAgICA0MzYzNSwgNzM5MjgsIDEyNzUyOSwgMCwgMCwgMCwgMTI4NTEwLCA2NTQ4MiwgMCwgOTE0MiwgMCwgMTI2NDcwLCAwLCAKLSAgICAxMDkzOCwgMCwgMTE4NzkwLCAxMTgyLCAyNTQyLCA0ODI2LCAwLCAwLCAxMjgxNzYsIDUyOSwgODU4MCwgMCwgMCwgMTA1ODYsIAotICAgIDEwNzkwLCAxMDgzOSwgNjYwMjMsIDQxNTkzLCA0MTIwNywgMCwgMCwgNDE1OTQsIDIyNSwgNDI4MjgsIDAsIDAsIDk4MzkzOCwgCi0gICAgMTEzNzYsIDc0Mzc5LCAxMDcyMSwgNjc2NjQsIDM0MzgsIDQyMDk3LCAxMjcyNjcsIDExMDg0LCAzMTk0LCA0MTg3MCwgMjY2LCAKLSAgICA3ODMwNSwgMTIwMTgzLCA0MTg3MywgMTIwNTc1LCAxMTMyNCwgMTIwNTMxLCAwLCA4NDIwLCA2NDkxOCwgMTI4ODQ0LCAKLSAgICA0MTg3MSwgNDEzMzgsIDM3MzQsIDc3MzQsIDQzNjgzLCA4NzUwLCA2NjYwNSwgNjYwMTEsIDkyNTE0LCA0MDk2NSwgCi0gICAgMTI3OTM3LCAwLCA1MTYxLCAxMDU3MiwgMCwgMCwgMCwgNjQzNDksIDcyODcsIDQyMTYyLCAxMjc1NTIsIDAsIDEyNjYwNSwgCi0gICAgMTE5NDgsIDY5MjIwLCAxMjM1OSwgNDM0MjksIDQxMzY5LCAxNjk3LCAxMjE5MSwgMCwgNjg2MzMsIDcyODYsIDAsIDY4NjM1LCAKLSAgICAxMDAzMSwgMCwgOTg3MCwgNjg2NDUsIDg2MjAsIDY1ODI0LCAwLCAxMTkzOCwgMCwgNzI4NSwgMCwgMTE5NTc3LCA0MjY3OCwgCi0gICAgMCwgNDM2NzcsIDQxNTgzLCAwLCA2NTc5OSwgOTI2MjMsIDAsIDAsIDk4MzkzNiwgNzgxNjksIDY2MTk5LCAwLCAzNjA5LCAKLSAgICA2ODYyNCwgMCwgODMyLCAxMjA2OTMsIDEyMDc3MCwgNzg0NzMsIDY2MDA3LCA3ODQ3MSwgNjU3MDMsIDAsIDAsIDQyNzMyLCAKLSAgICA1MTgwLCA5MjY5OSwgNDEzOTUsIDQxNTMwLCAxMTY5MSwgNjQ3NzMsIDkyMjE0LCA3NDAwMiwgMCwgMCwgMTI4NjQ1LCAKLSAgICA2MzQ4LCAyNDMsIDEzMjAwLCA5ODM4MTMsIDYwMjQsIDkyMzA5LCA5OTc5LCAxMDAzNywgNDE1MjksIDEwNjQ4LCA4NTM4LCAKLSAgICA0MzY4NywgMCwgMCwgNDI4NSwgNjYxOTUsIDAsIDQyMzAsIDAsIDczNjcsIDQzMjU2LCA5MjM1MywgNzU2MywgNDIzNzYsIDAsIAotICAgIDY4NDQyLCAxMjA1MTIsIDAsIDAsIDIxNCwgMCwgMCwgNzg0NjYsIDY1ODkzLCAxMjIwOCwgOTk3MywgMCwgNjYzMTEsIAotICAgIDY1NTg5LCAxMjgyNzcsIDI2MDMsIDAsIDAsIDAsIDcwMDQ3LCAwLCA2MDIyLCAwLCAyODg0LCAwLCAxMTYyMCwgMCwgNDMsIAotICAgIDAsIDY2NDUzLCAxMDE2LCA0MTEwNywgMCwgNDExMjEsIDM4ODUsIDkyLCA2NTQ1NiwgNjQ2MDgsIDAsIDc0ODAxLCAwLCAKLSAgICAyMDc0LCAwLCA3ODI4MywgMCwgMTI0NTMsIDEyODEyOCwgOTgzODI2LCA3NDI0MSwgMTI2NTY4LCA2NzkxLCAxMjQ1NywgCi0gICAgNzgyNjgsIDAsIDAsIDAsIDc4Mjc5LCAwLCAwLCA5MjM1OCwgNjY2MzcsIDc5OTUsIDg3NTksIDQzNDIxLCA3ODI3NywgCi0gICAgMTI0NDksIDEyODU1MiwgMCwgMCwgODc1MiwgMzE5NywgNDcyMCwgMTAxNjUsIDAsIDExOTI0OSwgMCwgMTE1OTUsIDY0ODkzLCAKLSAgICAwLCA0MzQzNSwgMCwgMCwgNDk5MywgMCwgNjE2OCwgMTA5MzQsIDE5NDYsIDc0MSwgMCwgNTQ5NCwgNDYzOSwgOTgzMTQ3LCAKLSAgICAxOTkwLCA2NjU4OSwgNDQ5OCwgNzg2NjQsIDExOTE4MywgMCwgMCwgNjk3MzQsIDI5NjAsIDczNzc5LCAwLCA4OTY5LCAKLSAgICAxMjgxMTcsIDQzNDI0LCAxMjcwNTksIDAsIDI5NTAsIDExOTU3OSwgNjIxMCwgNjU3NTMsIDM3MCwgMCwgMCwgMCwgNDk1MywgCi0gICAgOTgzNjgyLCAwLCAwLCAwLCA2OTIzMCwgMCwgMCwgNjU2ODgsIDk4MzI0NiwgNTA2MywgMzUxNywgMjk2NCwgNDM2NjMsIAotICAgIDkxNzc2MiwgNjM0NCwgNzQ3OTEsIDEwNTY2LCAxMDE0NCwgNjYzMzMsIDgyNTIsIDcyOSwgNjYwMTYsIDc4MjUzLCAwLCAKLSAgICA3MTMxNywgNjQ5MjMsIDEyODA0MCwgNDM2NjksIDkwMzIsIDc4MjYzLCA3ODI2NCwgMCwgNDEyMTUsIDAsIDY1ODgzLCAwLCAKLSAgICA5MTc3NzQsIDEyMDYwMiwgMzc2MSwgMCwgMCwgNzAwNjgsIDAsIDEyOTEyLCAxMTkwMTIsIDM4NTAsIDEyODE5MSwgMCwgMCwgCi0gICAgMCwgMCwgOTA4LCAwLCA4NjExLCAwLCAwLCAxMjc1NTUsIDQzNjkxLCA0MTE5NywgMCwgODk3OCwgMTIwNTQwLCAxMTkxMzUsIAotICAgIDQxNTg2LCAxMDUyNywgMCwgOTE3ODQ4LCAzODQ4LCA3ODczOSwgMTk0OTM3LCAxMjc1MzYsIDY1MjQxLCA1MzM2LCAKLSAgICA5ODMyNTksIDEyODc4NiwgNjYzLCAwLCAxMDc4MCwgMCwgMCwgNzg3NjcsIDk4MzI1NywgMTI3MTYzLCA2ODE5MywgMzQ3LCAKLSAgICAwLCAwLCA3ODc3NSwgNjQ2NzUsIDQxNTgyLCA3ODc3NCwgNzg3NDQsIDY1NTc5LCAxMjk4MCwgNzg3NjksIDEyMTQzLCAKLSAgICA2OTY1NywgNzg1MTIsIDAsIDQzNDQxLCA0MTgwNCwgNzg1MjMsIDAsIDc4NTI1LCAwLCAxMjg4NTksIDQxNTg0LCAxMDY4MSwgCi0gICAgMCwgOTgzNjk1LCA3MzkzOCwgMCwgMTI4MDIyLCA0ODAwLCA2NjY2MSwgMCwgNjYzMDYsIDY0NzE1LCA3ODUzNCwgOTUxOCwgCi0gICAgNjYwOSwgMTA0MzQsIDAsIDExMzE5LCAxMDk3LCAwLCA5MTc4NTAsIDQxNzMwLCA5ODMyMTQsIDAsIDczODQ3LCA3ODc2MSwgCi0gICAgNjUxNzIsIDQxNzI4LCA0MTcyMSwgMCwgMCwgMCwgNDEyMDMsIDkxNzYxMiwgMTMxMTAsIDQxNzI2LCA5ODM4NTUsIDAsIAotICAgIDEwMDAsIDY5NjUxLCAwLCA0MTE0MCwgMTIwOSwgNzM5NzgsIDAsIDczNzUwLCAxMDczLCA2MzIxLCA3Nzg3OCwgNDExMzgsIAotICAgIDAsIDY4MjEzLCAwLCAxMjE2NywgMTExNSwgNDE2MDUsIDk3OTQsIDEyNzA2MiwgNjc2NzEsIDU1MjQ4LCAxMjIzNywgCi0gICAgNzg3ODcsIDY2MzE0LCA2NTg3LCA5MjkwLCA3ODc4MiwgNzg3ODMsIDkyMzEsIDc4NzgxLCAyOTU5LCA3OTI2LCAwLCAwLCAwLCAKLSAgICA2NDM5OCwgMCwgMTE5OTcwLCAxMjMxMSwgOTgzNzI3LCA3ODc5NiwgNzg3OTgsIDc4Nzk0LCA3ODc5NSwgNjg0MzQsIAotICAgIDc4NzkzLCA2NjY3MCwgMCwgMCwgMTIyOTAsIDEyMDE2OSwgMCwgMTE5ODczLCA0MjE0MiwgOTk2OCwgODIwNSwgMCwgNTEzMSwgCi0gICAgMCwgOTYyNywgNzg1MzYsIDc4NTQyLCA3ODUzNSwgOTgzMjEyLCAxOTQ0LCAxMjQ4LCAxMDE0OCwgMTI3NzU1LCAxMTk5OTAsIAotICAgIDExOTk5MSwgMTI3MDEsIDc4Mzc2LCAxMTMwOCwgMTE5OTk1LCAwLCAxMTk5OTcsIDExOTk5OCwgNjUzMDUsIDY1MTAwLCAKLSAgICA0MDMxLCA0Mjc5NCwgMTIwMDAzLCA3MDc1LCA4MTU0LCAxMTk5ODUsIDEyMDAwNywgNDE4MTcsIDczOTM0LCA0MjI3NSwgCi0gICAgMTIwMDExLCAxMjAwMTIsIDc4NTI2LCAxMjAwMTQsIDEyMDAxNSwgNjA0MSwgMCwgNDE4OTksIDAsIDgwMDIsIDAsIDQzNjQsIAotICAgIDAsIDAsIDY0MzMyLCAwLCA3ODEzLCA5MDY0LCAxMTk5ODYsIDEwMTI0LCA3NTI2LCA4NjAxLCA3MjgxLCA3ODQ1NSwgNzI3OSwgCi0gICAgMTIwNDEsIDE0MTgsIDEwODg1LCAxMjY3MywgMCwgMCwgOTY2MCwgOTgzMjgwLCAxMzAxMiwgNDU3MSwgMCwgMCwgMTIwMTY0LCAKLSAgICAxMjA3OCwgMjk3MCwgMCwgMTA5MzMsIDAsIDc3ODcwLCAwLCAxMjcwMTUsIDAsIDQxNTk5LCAwLCAxMjg4MzEsIDAsIAotICAgIDEyOTUwLCA5MjE2MCwgMzQ4NiwgMCwgNzgzMTEsIDQyMzksIDAsIDEyNzc5OSwgNjY1MTEsIDAsIDI2MzcsIDY0NjI5LCAKLSAgICA4NDYwLCAxMjcwNTMsIDg0NzYsIDk4Mzk3NSwgMCwgMCwgMCwgNjU2NzMsIDEwMTksIDc4NDk1LCA0MTQ4LCAwLCAxMjI4OSwgCi0gICAgMCwgNDMxNiwgMCwgMTMxMTksIDg0ODgsIDU0MTIsIDY2MjQzLCA5OTM1LCAwLCA3Mzg2NCwgOTgzMjAzLCA0MTczNCwgCi0gICAgODIwNiwgNzQwODEsIDkxNjMsIDMyODYsIDkwNzIsIDU4NjcsIDEzMzAyLCA3NjIyLCA3MTIwLCA0MTczNiwgOTI1NDYsIAotICAgIDQxNzMxLCAwLCA3NDAwLCA1NDE2LCA2ODY2MywgMTE4OTI0LCAxMDgxNywgMCwgNDE1MzksIDEyNzI4NCwgMCwgNzM5NjMsIAotICAgIDQxODU1LCA0MTg2NywgNjU1NjQsIDExMjc3LCA2NTg5MiwgMTE1MzYsIDEwNjIwLCA5MjI3MiwgNzExNSwgNjYwMzAsIAotICAgIDczOTMyLCA1NDk4LCA3Mzk0MiwgNDE1MzYsIDAsIDY4MjA0LCA5MjU4NywgMzQ1OSwgODk5NywgMCwgMCwgMCwgMCwgCi0gICAgOTI1MTIsIDAsIDY2Mzc3LCA2OTc4MSwgMCwgOTgzNjk5LCA3ODUxMSwgMzE2MSwgMjk1LCAxMjAyMDcsIDAsIDkyMjIzLCAKLSAgICAxMjc4NTYsIDc4NzQyLCA5MDE2LCA0MzQ1NCwgNjM5MDMsIDYzOTAyLCA0MzY0MSwgMCwgMzk3MSwgMCwgNzAwNjMsIDI5NTIsIAotICAgIDc4NzY1LCAxMTAzOCwgMTA5MDEsIDYzOTAwLCA2Mzg5OSwgNjM4OTgsIDk0MDQzLCA2NjcsIDEyMzMyLCA2Mzg4NywgNjA4NiwgCi0gICAgNDE3MjIsIDAsIDUxNzIsIDAsIDk4MzI3OCwgNDE1OSwgMCwgMCwgOTgxNSwgNjM4ODQsIDE5OTM0LCA2Mzg4MiwgNDExOTgsIAotICAgIDg1NTUsIDYzODc4LCA2Mzg3NywgNDI0NjAsIDYwNTAsIDQyNzA4LCA2Mzg4MSwgNjM4NzIsIDAsIDQyNDIxLCAwLCA0MTcyMywgCi0gICAgNjM4NzUsIDYzODc0LCAxMTQ2MCwgNzQzMiwgMTkxMywgNDE5MTMsIDYzODUyLCAxMjY2MzYsIDAsIDQyMzQ4LCA3Mzg5MiwgCi0gICAgNjc1MiwgNDQ2LCA0MTkxMSwgMTI3OTA2LCA2Mzg1MSwgNjM4NTAsIDQxOTEwLCAwLCA2Mzg0NiwgMjk3MiwgMTI5MzIsIAotICAgIDcyNjIsIDAsIDYzODQ5LCA2Mzg0OCwgNjM4NDcsIDEyODA3MCwgNjU3MCwgODMwMiwgNzI1OSwgNjM4NDIsIDQxNzgsIAotICAgIDEwNzQ2LCA3MjUwLCAxMzIxNCwgMTAwNDEsIDgxMDUsIDYzODkyLCAwLCAxMTg5ODMsIDExMDUsIDQxODAsIDAsIDEyMDk0LCAKLSAgICA5NDk3LCAwLCA2Mzg5MSwgNjM4OTAsIDYzODg5LCA2Mzg4OCwgNTUzOCwgOTk4NywgMCwgMTE4OTMyLCAxNjc4LCAxMzI3NCwgCi0gICAgNTUyLCAxMjA2NTQsIDQ0MDEwLCAxMDc4NSwgMCwgMTE5MTcwLCA0NTU3LCA3NDQ1OSwgOTE1OSwgMTAxNzEsIDEzMTI1LCAKLSAgICA2Mzg2MCwgNTU0MCwgNjM4NTgsIDYzODY1LCAyODEsIDEzMjQyLCA2Mzg2MiwgNzQxNTQsIDAsIDU1MzYsIDY1NTY4LCAKLSAgICA2Mzg1NywgMTM4OCwgNzQxNjksIDAsIDEwNzcsIDk4MzU3NywgNjUwOTksIDExNTMxLCA1ODM0LCAwLCAwLCAwLCAwLCAKLSAgICA0Mjc3MywgMCwgMCwgMCwgMTE5MjIwLCAwLCAzNjYzLCAwLCAxMTEyLCAxMTkxMjIsIDg2ODYsIDAsIDUzMzQsIDY1MDgxLCAKLSAgICA0MzI0OSwgNzQ3NzgsIDEyNzk2OCwgMTEwNzcsIDAsIDY1MDksIDAsIDUzMjcsIDAsIDE5OTA3LCA2Mzg2OSwgMzQ3OCwgCi0gICAgNzU4MywgNzY3OSwgMjkwMywgMCwgMzAwMSwgMTE1OCwgODc0NSwgNDM3NDYsIDczNzQ4LCA2Mzg2NiwgNzg2MjYsIDE5MTUsIAotICAgIDQ4NDYsIDAsIDY2MzcxLCAxMTg5ODQsIDQyMTA1LCAyOTkwLCAxMjAxMjgsIDgwNSwgNjkyMzgsIDY0NDM4LCAxMjA3MCwgCi0gICAgODc2MCwgMTExNywgMTE4OTg3LCAxMjIxMiwgMTIwMTIzLCA2NTE3NCwgNDIzNTcsIDYzODM1LCA2MzgzNCwgMCwgNzgyNDAsIAotICAgIDEyMjI1LCA2MzgzOCwgNjM4MzcsIDk4Mzg1MywgOTgzODA0LCA2MzgzMywgNjA0MiwgNjYzNjAsIDgwODMsIDAsIDAsIAotICAgIDYzODIxLCA2MzgyMCwgNjM4MTksIDYzODE4LCA5ODM5MDQsIDUyMjcsIDkwNDcsIDYzODIyLCAxMjcxNjIsIDYwOTEsIDAsIAotICAgIDEwNjkxLCA1NjAsIDU2NDMsIDgyMjYsIDExOTU3OCwgNjM4MTIsIDYzODExLCA2MzgxMCwgNjM4MDksIDIyODksIDYzODE1LCAKLSAgICA2MzgxNCwgNjM4MTMsIDYwNDcsIDE1OTcsIDEyMDE0MywgNzgwLCAyMDYsIDc3OTI1LCA0OTM2LCA2NTE0NywgODE2OCwgCi0gICAgNjM5MzAsIDIwNzYsIDEwOTMsIDk4ODIsIDYzOTM0LCAyMDgyLCA2MzkzMiwgMTI4MTUwLCA2MzkyOSwgMzU0NiwgMTYwNSwgCi0gICAgNzc5MzQsIDk4MDYsIDQzNDcyLCA3NzkzMywgODQwMCwgMTEzNDMsIDIwODYsIDAsIDYzOTI2LCAyOTg0LCA1OTY4LCA5Mjg3LCAKLSAgICAwLCA0NjE4LCA0MjIwOSwgNDM0MzEsIDEzMTY5LCA1MjkwLCAyMDg5LCAxNjk1LCAxMDc0MywgMTA4OCwgNjM4MjUsIDcyNjgsIAotICAgIDEwODQsIDEwODUsIDYzODI5LCAxMDgzLCAxMDEzMSwgNzI4MywgMCwgNjM5NzAsIDEyODM1OCwgMTA5MiwgNDc1NCwgNzI3MywgCi0gICAgNTI1MiwgNDQwMTYsIDQzNjI3LCAxMjc5MjEsIDAsIDc0MDgsIDExODA5LCA5MTc2MTgsIDAsIDAsIDI5NjUsIDcyNTgsIAotICAgIDg4MDgsIDAsIDEwODksIDQxODcsIDYzOTM3LCA0MjExOSwgNDIxMjAsIDAsIDk0MCwgNTc4NywgMTAwOTksIDYzOTM4LCAwLCAKLSAgICA3NDQ5NCwgMTI0NjMsIDI5OTQsIDAsIDExODgyNywgMCwgOTY2NCwgNzc5MzksIDc3OTQwLCA2Nzg5MiwgNzc5MzgsIAotICAgIDc0MzQzLCAwLCAwLCA2NjAsIDEwMTI3LCA2NjYsIDkwMjIsIDU1MzIsIDQzNjY3LCA1NTMzLCA3Nzk0MSwgNzg1MDcsIAotICAgIDYxMTgsIDIyMiwgOTc5LCAzODg0LCAwLCA3NDE1MSwgOTI2NTIsIDY1MDIsIDAsIDEyNzExOCwgMTI4Njk1LCA2Mzk1MSwgCi0gICAgMTI0NjUsIDAsIDAsIDEyODc4MiwgNjM5NDYsIDE3MDcsIDYzOTI0LCAxMjQ2MSwgNjM5NTAsIDYzODk3LCA2Mzk0OCwgCi0gICAgNjM5NDcsIDYzOTQ1LCA2MDM4LCA2Mzk0MywgNjM5NDIsIDY0Njg1LCA2Mzg5NSwgNjU4MzgsIDIyNzYsIDc3NzYsIDk0MDc2LCAKLSAgICAwLCAxMjc3NzMsIDEyMDQ0NCwgNjk3MzAsIDgwMSwgNDMxNjUsIDE2OTAsIDYzOTE5LCA2MzkxOCwgNjM5MTcsIDEzMjc3LCAKLSAgICA0MzY1OSwgMTI5NTEsIDEyMDYzOCwgOTkwNiwgMjA1NCwgMjMzNCwgNzg1MTUsIDYzOTE2LCA1NDgzLCA2MzkxNCwgNjk3MzcsIAotICAgIDYzOTExLCA1NDg0LCA2MzkwOSwgNjM5MDgsIDI1MzksIDAsIDQzOTgwLCA1NDg1LCAwLCA0MjY5NywgOTA2MSwgNTUzNCwgCi0gICAgMTA2NzIsIDQ1MDIsIDAsIDI1MywgMCwgNjgyMDgsIDAsIDkyMDMsIDc0MjMxLCAwLCAxMTUzMCwgOTI1NDIsIDY4NjY4LCAwLCAKLSAgICAxMTg5MDcsIDAsIDEwNDc0LCA0MzQyNiwgMTMyNTcsIDQyMzU0LCAxMjgwOTksIDk4MzY5OCwgNzAwNDQsIDE5NTA2NSwgMCwgCi0gICAgODQxMywgOTgzODE2LCAwLCA1NjkzLCA3MjcyLCAwLCAxMzIwOSwgNjQ0NzAsIDY1ODMxLCA3NDM1MCwgMTk1MDYzLCAwLCAwLCAKLSAgICAwLCAxMjY2MzksIDEyMDA5NywgMCwgOTQwNzgsIDEyODEzMywgMTI3NzY3LCA2NjYwOCwgMzExMSwgNDE4NjMsIDg4MDQsIAotICAgIDQyOTEzLCA5MjE4NywgNzI3MCwgMCwgNjY2MDYsIDY2MjgsIDEwNzYsIDc0MzMsIDE0MzYsIDczODQ0LCA1NTIyNiwgCi0gICAgMTI4MzUzLCA2Mzk4MiwgNzM5MywgMTI4MDcsIDQzNDEzLCA2MzkwNiwgMTU5OCwgNjM5MDQsIDAsIDAsIDQxNzI5LCA0NDIzLCAKLSAgICAxMzA3LCAwLCAxMDUxNSwgNDE1ODksIDEyODY5OCwgMCwgNjIxOCwgMCwgMTQzMCwgMCwgMCwgMTIwNjA2LCA3ODc1NCwgCi0gICAgNTQxMywgNzYxOSwgMzI1NSwgMzQ5MywgNzQwMzIsIDExNTQ5LCAxMDczNSwgNDE3NDMsIDczOTM3LCA2ODAxLCA5ODM2MzMsIAotICAgIDQ1MTgsIDEwOTkwLCA2NTA3MywgNTE2NywgNDQ4MSwgMzc3MSwgMTIwMTU4LCAyNzEwLCAwLCA2OTI0MywgNDE3MjQsIDAsIAotICAgIDQzMDczLCA0MTY5MCwgMTI0NzksIDk4MzYzNSwgMCwgMCwgOTgzODE4LCA3MDA0NiwgMTYyOCwgMTI3MTQ5LCA5ODM0ODcsIAotICAgIDk4MzczMSwgNjUyNjIsIDYzMzMsIDEwNzgzLCA0MjMxNSwgMCwgNjM4NTUsIDk0MDU2LCAwLCAwLCA1MzM5LCA3NDMyMywgMCwgCi0gICAgMTMwMDQsIDAsIDQ0NTcsIDAsIDAsIDE5NDgxOCwgMCwgNTY4NCwgODY3OCwgMTA5MTQsIDAsIDU2ODksIDY1ODA3LCAwLCAKLSAgICA2ODQ2NCwgMTI2MzMsIDEyODcwLCA2OTcwNSwgNjUxODMsIDU2ODgsIDExOTI2LCA2MDMzLCA2MzEwLCA1Njg2LCAwLCAKLSAgICA3NDI1MSwgMCwgMTIwNjQ3LCAwLCA1MCwgMTA1NTgsIDk4NzEsIDQyNjEyLCA0MzY1NSwgMCwgMCwgMCwgNjY0NjgsIDAsIAotICAgIDEzMjU5LCA0NDQ4LCAwLCA5ODM4NDUsIDAsIDcwMDQzLCA2Nzg1MywgMCwgMTA2NDAsIDExNTM5LCAxMTUxLCAwLCAKLSAgICA5MTc2MDcsIDEyNzU0NCwgMTI3MDc5LCAxOTUwNTAsIDEyNzg1MiwgMCwgMCwgMCwgMTI1MDEsIDY0NjA0LCAwLCAxMTUyNywgCi0gICAgMTE4ODcwLCA4ODEyLCAwLCAxMTUzOCwgODY3MywgMTI2NTAsIDExMDIwLCAwLCA2NjQ2NywgMjEwNSwgODA4NywgNzgxNjMsIAotICAgIDY5NjMyLCA5ODk0LCAwLCAwLCAwLCA0NjM2LCA1NTI2MiwgNzg1MTMsIDQ1MTUsIDIzODIsIDAsIDEyNzA1NSwgMCwgCi0gICAgMTIwNDk1LCAwLCAxMjgyODQsIDEyMjc3LCAxOTQ2MjcsIDExOTk1LCA5MjU1MywgMCwgMTIxNTgsIDAsIDg3NDEsIDEwMTk3LCAKLSAgICAwLCA5MjQyNiwgMCwgNjUzMSwgMCwgMTI3ODQ2LCA0NzMsIDQzNDE1LCAwLCA5ODM2NTAsIDE4NzMsIDEwODcsIDAsIDAsIDAsIAotICAgIDc4NTI3LCA2NjQzOSwgNDMyMTgsIDk4MzEyMywgMTk0NzE2LCA3MjM3LCAxMjUwNCwgNzQyODIsIDAsIDk4MzU3MSwgMCwgCi0gICAgOTQ4OSwgMCwgMCwgNDM4NCwgNzQyMjAsIDYzODQ1LCAyMDU4LCAxMjg4NjMsIDEzMjk1LCA0MzE5MSwgMTI4MDMwLCAwLCAKLSAgICAxMTU0LCAzODU3LCAxMjA1LCAwLCAwLCAxMzEwMCwgMTI5NTgsIDEyMDcwNiwgNzQxNjgsIDAsIDAsIDQ0MjEsIDEwNTkyLCAKLSAgICAwLCA0OTUsIDExOTAwNywgNDE3MTIsIDc5ODMsIDAsIDkzOTk3LCAwLCA2MzQ3LCAxMjAxNjUsIDc2NTQsIDQxNzEwLCAKLSAgICA0MTk2LCAwLCA0MzcsIDQxNzA5LCA3Mzc3MiwgMCwgMCwgOTQ2NSwgMTMyOTAsIDExOTE4MCwgNDk5NywgNjQzMDYsIDAsIDAsIAotICAgIDQ5OTksIDE5NDY0MiwgMCwgMTI2NTgyLCA0NzExLCAxMjA3NjksIDAsIDI3MzksIDAsIDgwNDQsIDc0ODM0LCAxOTQ2NDMsIAotICAgIDQxNzg5LCAxMjgxNDIsIDEwODA5LCAwLCAwLCAwLCAxNzc5LCA2NjAwLCA2NjAxLCA0MTU0MywgNTMyNSwgNjQyLCA2NDE4NywgCi0gICAgMTMwNTgsIDEyMDQ0OSwgMTI4NzUsIDAsIDkyMTg2LCAxMzIyOSwgMCwgMTA1NzUsIDQzMzk5LCAwLCAwLCA0MTc5MSwgCi0gICAgMTEwNCwgMCwgMCwgMTA2NTUsIDAsIDAsIDAsIDAsIDEwODIsIDE5NTA0OSwgODQyOCwgNjU2OSwgMCwgMCwgMCwgNjk4NDksIAotICAgIDY3ODMsIDAsIDEyOTkzLCA4MDQ5LCA0MTU0OCwgNDQwMjEsIDY0NTgsIDk4MzgwNywgMTI4ODgyLCA0NzYxLCA2MzgyOCwgCi0gICAgNDc2NiwgNjQ2MjMsIDEyNzMsIDQzNDA3LCAwLCAxMTg4NzYsIDE5NTA0NSwgNjkxMiwgMTMxMywgNjMyMiwgMTA0ODMsIAotICAgIDk4MzYwMywgNDE1NDUsIDAsIDkyNDQ5LCAwLCAwLCAwLCAwLCA3ODYyNCwgMzQ4NCwgNzQzMzcsIDAsIDAsIDg1MDMsIAotICAgIDUxMjIsIDQxNTI3LCAwLCA2NjMyMCwgOTgzODExLCAwLCAwLCAwLCA0MTUzNywgNjk2ODMsIDgzMDMsIDgyODIsIDExODE3LCAKLSAgICA3Mzg1NywgMTAwMDMsIDczODU5LCA2NTkwNCwgNzM2MywgMTY4NiwgMCwgNzg0MDYsIDExNDY3LCAzNjY0LCA2NTkyMSwgCi0gICAgNjQyOTksIDE5NDY2NCwgMCwgMCwgNDMyNCwgMTI2LCA0MjI0NiwgMTE5MTUyLCAwLCA3NDM3OCwgNjU5MjYsIDc3NDQsIAotICAgIDE5NDYzNiwgNzQyNzcsIDc0MzAyLCA3ODA1MiwgNDM4MTcsIDY5NjYsIDQzODIyLCA4MTM2LCAwLCA2NTYwMCwgMTYzMywgMCwgCi0gICAgMCwgNDc2MiwgMTEwMywgMCwgMCwgNDc2NSwgOTgzNDkyLCAxMzA3OCwgMCwgNDc2MCwgNjM4MjcsIDIwNTAsIDEwODcxLCAKLSAgICA0MzE5OSwgMTEwMiwgMCwgNDIyMzYsIDEyODg2NywgMTk0NjY3LCAxMTU0NiwgNzQ3OTQsIDMzNywgMCwgNDI1OTEsIDg2MjcsIAotICAgIDEyMjc5LCAxMTExLCAwLCA5MjE2MSwgNDcwNywgNjgyMDYsIDEwMTQzLCA3ODgzLCAxMjcwODEsIDc4ODAsIDQ1MjIsIAotICAgIDg2NDUsIDU3MDQsIDEzMDEwLCAwLCA4MzA0LCA5MTc1NjEsIDAsIDExOTU3NSwgMjI5MywgMCwgNjY2NTQsIDAsIDkyNjc2LCAKLSAgICAwLCAxMzAwOCwgMCwgNDM4NSwgMCwgMTMwMTEsIDAsIDkyNTY5LCAxMTkxNjEsIDEzMDA5LCAxNjAsIDI2NzcsIDAsIDAsIAotICAgIDQxNzkzLCA2NTc2MywgNzQyMjEsIDEyMDE0MSwgNDE3OTIsIDQyNzcwLCA5NDA1NCwgNjU3NjIsIDExODgyOSwgNDM4MjEsIAotICAgIDU3MDksIDAsIDk0MDUzLCA0MzgxNiwgMCwgMCwgMTA3OSwgMzg2NywgNTcwOCwgMCwgMCwgNDM3OTcsIDU3MDYsIDY0NzY4LCAKLSAgICA1NzA1LCA4NzkxLCA0MDA1LCAwLCAxMDIzNywgMTA5OTEsIDEyODgxNiwgNDM0NTksIDkxNzMsIDkxNzU4MSwgOTE3NTgwLCAKLSAgICAxMzE3MCwgMTI1NDAsIDkxNzU3NywgNDI2MDUsIDEyMDc2NSwgMTI2NjE3LCA2ODY0NywgOTE3NTcyLCAxMDA1OCwgMCwgCi0gICAgNzQ4NjcsIDE5NDY1NCwgMTI3MDc4LCAzMzM5LCAxMTQ0OCwgMTEwNiwgOTE3NTkxLCA5MTc1OTAsIDkxNzU5MywgMzM0MCwgCi0gICAgOTE3NTg3LCA5MTc1ODYsIDkxNzU4OSwgOTE3NTg4LCAxMjA1NDEsIDEwNjA1LCAxMzA5LCA2Mzk2NiwgMTIwNzQzLCAxNzU0LCAKLSAgICA5MjIyNiwgMTMyNDYsIDg2NCwgMCwgMTE4OTI2LCA4OTcyLCAwLCA3ODQ5LCAxMjAwOTIsIDkyNTMzLCAxMzI0MCwgCi0gICAgMTk1MDY4LCA1MTkyLCA0MzM4LCA2Nzk4MiwgMTA5NDgsIDkxNzYwMSwgMTMxOTksIDkyNTc1LCAxMjM2LCAxMzIwOCwgCi0gICAgMTMyNjEsIDEzMTg5LCAxMzE4OCwgOTM5OTMsIDAsIDc0NDAsIDAsIDEyMDE1MywgOTU1MywgMTU5MCwgNjM3NzcsIDYzNzc2LCAKLSAgICAxMzE3OCwgNjM3ODIsIDYzNzgxLCA2Mzc4MCwgNjM3NzksIDE1ODMsIDAsIDEzMjYwLCA0NTUwLCAwLCA2NDIwNSwgMCwgMCwgCi0gICAgNDE1MjIsIDk4MzkxNSwgOTIxNjgsIDk4Mzc3MiwgOTE3ODU4LCAxMTM1NCwgOTQwNzEsIDAsIDQyNzk1LCAwLCAxMTkxOTUsIAorICAgIDczOTgyLCAxMjA1MTgsIDgzNDczLCAxOTUwODYsIDQzMzY5LCA5ODMxNzcsIDEyODE0MCwgNjg0MTUsIDc3ODYxLCA0NTM4LCAKKyAgICA5Mzk3OCwgNDMxNDEsIDk4Mzc2OSwgODI5NzYsIDc0MjE0LCA3Mzg4NiwgNjc3MDksIDkxNzU5OSwgNzE5MTgsIDQzMDA1LCAKKyAgICA3MTExNCwgOTU1MiwgMCwgNzAxMjksIDEyOTE3MywgMTI5OTcsIDgzNDc3LCAwLCAxMjg4OTcsIDE5NTAzMCwgMjM4MSwgCisgICAgMTI4ODMsIDEwOTk0LCAxMDUyOSwgNDE5MDYsIDAsIDc0NjE4LCAwLCAxMjQyNSwgMTA2NjEsIDEwODU2LCA5NjE0LCAyNDI4LCAKKyAgICA0MTQ3OCwgODU4MiwgMTAwNjQsIDczOTMwLCA4Mjk3NywgNzA0MzcsIDEyMTI1MSwgNjQ4OTYsIDExOTE2MiwgMTk1MiwgCisgICAgOTIxODEsIDg0NTUsIDEwMDgyLCAxMTU3NSwgMTI4NDUwLCAxMTk1NjYsIDEyODA5MywgMTI4MDgsIDEyMTgzLCA2MTQ1LCAKKyAgICA3NTAyMCwgNjQ5MjksIDc0OTg1LCA3MTkxNiwgNzQ5ODQsIDQzMTg2LCA0MjUwOSwgMCwgMzkyMiwgOTE4NywgODMyNzcsIAorICAgIDgzMjc4LCAxMDE5MSwgODMyNzEsIDExNzUyLCAzMzUzLCA5MzU4LCA5ODM0NjIsIDcxMzY2LCA2NjY4MCwgMTIwMDkwLCAKKyAgICA4MjQ4LCA3OTMxLCA4NTU4LCA5Nzk1LCA2ODM4MCwgMTIwMDQ3LCA5ODMwNTYsIDgzNDcwLCAxMjAwODEsIDExOTA1MiwgCisgICAgNDEwMjcsIDEyMDA4NiwgNzE0NDksIDEyMDA4OCwgNzM2NiwgNzAxOSwgNzAzNzgsIDAsIDExNzUxLCAxMjAwNzgsIDc4Mjk0LCAKKyAgICA2NDY1NywgODY1NywgODM0NzIsIDg1OTQsIDEyMDA2OCwgMCwgOTgzNzg5LCAxMjAwNjksIDEyMDA3MiwgMTIwMDcxLCAwLCAKKyAgICAxMTM3MTEsIDQzMTU0LCA0MTAyOSwgMTE5OTU2LCAxMTMzMiwgNjUzODAsIDc3MjgsIDk0MDc3LCAxMTI5NCwgMCwgNjY2NjUsIAorICAgIDc4NTEsIDAsIDgzNzUsIDg2OTksIDEyNzk0OSwgNDI1MjQsIDY4NDE5LCA5MDg1LCA5NDA0MSwgNzUwNCwgOTMyNywgNjE2MCwgCisgICAgNzM4NDIsIDk4Mzg2NCwgMTk0OTI5LCA4MDg4LCAxMjg5MzcsIDc0MDEyLCA2NjU2MiwgMCwgNDQzOSwgNjkyNiwgNzI0MjMsIAorICAgIDEyOTI0LCAxMjgyMjcsIDQyMzY5LCA0MzUwLCA2NTQ5MSwgNjUxNDUsIDkwNDEsIDQzNTU5LCA2NDU3NywgMTA4MjYsIAorICAgIDEyNzQ3NiwgMTEyOTYsIDk4MzI4NSwgOTgzNDA5LCAwLCA2NTgyNSwgOTU3NywgNjgxOTksIDk4MzM5MywgNjQ2NzAsIAorICAgIDk4MzEyMSwgNzgwNTYsIDY3OTMsIDExMjk1LCA3MDQwOSwgNzgwNTMsIDczODcyLCA3ODA1NSwgMTE5OTkzLCAxMDkwMiwgMCwgCisgICAgMCwgNzgwNzAsIDExMjAwLCAxMDQ3MiwgMjk5NSwgMTIxNDM4LCAxMjAxMzgsIDY0NjgyLCAyMzcxLCA3ODA2OSwgMTE4ODkzLCAKKyAgICAyNTksIDEwMDksIDcwNDA1LCAyNDAyLCAyMzMzLCA2NDQwLCAxOTQ3NDEsIDExMzc1NywgNjUxMjUsIDQxMjQ0LCA3MDQwNywgCisgICAgMTMyNzEsIDkxMDMsIDIyNzgsIDk4MzE0NiwgMTk0NzI4LCAxMjkxMjAsIDAsIDEwMjE5LCA3NDk2OCwgMTk0NzQwLCAwLCAKKyAgICA2NzcxOCwgNDMxNzgsIDEyNzA3MCwgNDEyNjEsIDExOTM2MiwgNDM2NDAsIDg2MTMsIDAsIDk0MDQ5LCA2NzM2LCA4MzQzOSwgCisgICAgNDE0OTIsIDEyMDA1LCA2OTkyNywgMTI3MDY4LCAxODkwLCAxMjAwNTYsIDAsIDgzNDQzLCAwLCA3MjkzLCA3OTkxLCAKKyAgICA3NDA1MiwgMTA1NzgsIDEyMTE0MSwgNzgwNzYsIDEyODYyMCwgNjczNjgsIDY5OTI4LCA3MTg1MCwgNzg4MDAsIDkyNjUzLCAKKyAgICA2NDQ0NSwgNDI2NjgsIDY2MzUsIDEyODMwOCwgNjE2NCwgNjUxNzAsIDc0OTM2LCAxMjExODIsIDc2NzYsIDExNjY0LCAwLCAKKyAgICA5MzAyNSwgNjk3MDcsIDkzMDIyLCAxMTg4MTIsIDAsIDcxMDk2LCAxMjgwNDUsIDkxNzUsIDExOTI1LCA3ODA0NSwgOTA4OCwgCisgICAgMTE5MTQ1LCA2NDU0NSwgMTM5NiwgMTIwNjY0LCA3NTQ2LCAzODQ3LCA3MTA4OCwgOTMwMzcsIDQ5ODUsIDEzMjg4LCA2NzIsIAorICAgIDgwOTgsIDQzMTk2LCAxOTQ3NDYsIDEyMDcyMywgMTI4MTI2LCA0MjY1NSwgNzQwNDMsIDY1MDcyLCAxNTc3LCAxMTc3MiwgCisgICAgMTMwNDEsIDU5MjgsIDQ1MjUsIDEwNjU4LCA2NTkxMSwgMTI2NiwgMTAxODAsIDE5NDcxMSwgMTI4MzcxLCAxMjYyMiwgCisgICAgMTI3MjM0LCAxMjQ5NDgsIDAsIDEyMTIxNCwgMTI3MTM5LCAxMzMxMCwgNzczLCAxOTkzMywgMTUzOSwgMCwgNzQ5NjksIAorICAgIDQyNzMxLCA2Nzk3MiwgNzQ5NzAsIDcxMDY2LCA5ODMyMDAsIDMwNTEsIDU4NjIsIDc4MjMsIDkyNDc4LCA5Mjc0NiwgCisgICAgMTIwNDExLCAzMjUwLCA0Mzk5MSwgNjk2ODcsIDY2NjQ5LCA5NTEwLCA2NjIzNywgOTgzMzA0LCAwLCA0MTA2NiwgNjQ2NzMsIAorICAgIDkxNzk2MywgOTIzODEsIDEyODYzNiwgMzUwNSwgODcwNywgNzQ5MjUsIDY3MjUsIDEyMDgwMiwgMTIxMjk2LCA3NTA0MSwgCisgICAgMzQ3MSwgNjYzOTEsIDU0NzksIDg4MiwgNjY4NiwgMTE5NTg0LCAxMTYxMywgMTIwNzcyLCA0Mjc1NCwgNzQ2MDgsIAorICAgIDEyNTAyOSwgODM0MzMsIDEyMTIzNywgMTIwODQ1LCAwLCA4MzQzMSwgMzIyNSwgOTE3OTk2LCA0NDMzLCA0MTE1NiwgCisgICAgNDM5NzMsIDQzMTczLCAxNDQzLCA0MzgxLCAwLCA5ODM2NDIsIDEwOTI2LCAxMTc1NiwgMTE3NTcsIDY0ODc5LCAxMjExMDYsIAorICAgIDQyNjU0LCAxMjc4NDgsIDEzMjI3LCAxMjAzMjAsIDEwMDIxLCA1MTYwLCAxMzg3LCAwLCA5MjY0NCwgNDE0MTgsIDEyODkzMywgCisgICAgNjU5MTQsIDY3MjEsIDIxNywgOTE3OTU1LCA5MTc5NjAsIDEyMTA4MiwgMTA0NDMsIDEwNzg5LCA0MTE1OCwgMTE5MjU3LCAKKyAgICA0Mjc0LCAxMTE0MywgNDE0ODMsIDAsIDQxMjUwLCAxMjg5MDQsIDQyMTc5LCAxMjgzNzUsIDU5MzEsIDExNzQ0LCAxMTIxNSwgCisgICAgNzQ0NDYsIDQxMjUyLCA2NjY4MiwgMCwgMTE5NjM3LCA0MTI0OSwgMTM2NiwgNjQ2MzUsIDY1MDQ3LCAxMjQ2NiwgOTgzNDU4LCAKKyAgICAxMjA4MTMsIDQzOTcsIDEyODAzNywgMTI4MzM2LCA0MTI5NiwgOTU0NSwgNDEyOTEsIDEyMDg5MywgMCwgNDE0ODUsIDM1MTEsIAorICAgIDQxMjgyLCA1OTIzLCAxMDQwMCwgMCwgMTIwNDkzLCA3NjAsIDAsIDEyMDg4LCA1Nzg2LCA2ODI1MiwgNDIyNTYsIDExOTg2OSwgCisgICAgNjcxNDUsIDQxNywgNDE0NzQsIDExOTU2MiwgNDE1NjUsIDc0OTY1LCA1OTM0LCA3NDU3MiwgNjY1ODMsIDc0OTA0LCAKKyAgICA2NDg3NywgMjI4NCwgNjQ0ODEsIDc4NjE0LCA2NjAxMywgNDE5NTYsIDQzNDU1LCA2NzI0MCwgMTk0NjU2LCAwLCAwLCAKKyAgICA0MjI3MywgNTgxOSwgMCwgMTI4MDU2LCAwLCAxMTkxMjksIDk4MzEwMCwgNjU5MTAsIDEyNzc0NywgMTAyNDYsIDEyMDgxNiwgCisgICAgNjU3ODUsIDEyMzcsIDEwMjc0LCA0NTUyLCAxMTk1NzYsIDEyODI4NywgMCwgMTM3NSwgNjY3MDUsIDQzNTczLCA2NTI2MCwgCisgICAgMzMyOSwgMCwgNDI4MTEsIDEwMzEyLCA2OTg0NSwgMTIwNzk0LCA3ODQwLCAwLCA0MzYzMCwgMTAyNTIsIDExOTI0MiwgCisgICAgMTI4MTA0LCA0MzE4NSwgMCwgNDM5NiwgMTk1MDUxLCAxMTk4ODAsIDEwNzY5LCA5Njc2LCAxMTkwNDEsIDAsIDk3NTMsIAorICAgIDkyNzYyLCA4OTQ0LCA5ODMxNjQsIDAsIDEwNDczLCA5ODM4MjMsIDEyMDQ3MiwgNjA3MiwgNDMwMjUsIDEwMjk5LCAKKyAgICAxMjg0MzYsIDY4ODQ1LCAxMjA2MDgsIDY2MzI2LCA2NzQxMiwgOTI5NTIsIDAsIDQzODExLCA5MzMwLCAxMjA1OTYsIDcyMjIsIAorICAgIDEwMjgzLCAxMDMxNSwgMTAzNzksIDQ5OTYsIDEyNzkwMiwgMTMyODEsIDY2NTE3LCA3ODY1LCAxMDA4NywgNzgzNDMsIAorICAgIDc0OTM4LCA0MzMyNCwgMCwgMCwgNzU2NSwgNjYzNjMsIDEyOTUyLCA2NDgwNiwgNDMxODAsIDc0OTY3LCA3NDE0LCA3NzkyOSwgCisgICAgNDM5ODIsIDc0Mjg4LCA2MjIsIDc0MDIzLCA4ODUsIDQzNDA1LCAxNjAyLCAwLCA5ODM3MzEsIDg1MiwgMCwgMTIxNjAsIAorICAgIDgzNDkxLCAxMDIxMiwgNjU0MzUsIDEyOTA5MiwgMTIwNzEsIDk2MDksIDEyMTU2LCA5MTc5ODMsIDkxNzk4NCwgNDM1ODYsIAorICAgIDExMDM1LCAxMDQxMSwgOTE3OTg4LCAxMDI1NSwgNjcxMCwgMTAyNzksIDQxOTQsIDEwMzc1LCA0Mzg1MywgMTI4NTk5LCAKKyAgICA0MzE1LCAxMjY0NCwgODM0OTAsIDc3OTM3LCA0MzYzOSwgNDMzNDMsIDY3NDA4LCAxMjg5NDUsIDExNTAxLCA0MTE3NywgCisgICAgMTIxMTgwLCAxMjg4NjYsIDQzNDMxLCAxMjcwOTcsIDkyNDEzLCA4NzE1LCAwLCA0MTE3OSwgOTgzMzU4LCA0MzMxMywgCisgICAgMTIwMjMwLCA0MTE3NiwgMTI4NzgwLCA5OTQsIDk4MzA0NSwgODQ1MiwgNzc5NzMsIDczOTY2LCA2Njg5MCwgNzA4MTIsIAorICAgIDU5MjEsIDAsIDI1OTcsIDkyNDIzLCA1OTIyLCAxMTg5MDMsIDY2ODczLCA0MTg2LCA5MjUzMSwgMTE5OTY3LCAxMjcxMDUsIAorICAgIDY3MTgsIDEyNzAyOSwgNDQwNiwgNzQ2MDEsIDg0ODAsIDkxOTIsIDk3NDcsIDEyMTA0MCwgNDQxMywgOTIxOTYsIDQyMjY4LCAKKyAgICAzMTk4LCA1OTI0LCA1OTIwLCA5MjQ2OSwgNjkyMSwgNzgwODEsIDc0MDA3LCA0Mjg2OSwgODQxOCwgMTE2ODEsIDQzMTY5LCAKKyAgICAxMDE3NiwgMCwgNzQyLCA3NDg4MSwgMjg5MywgMTA3NzIsIDY1Mjc2LCA1OTM3LCAxOTE0LCAyNTUzLCAxMTY4MiwgNjc1NiwgCisgICAgMTI1MTA0LCAxMjExMjYsIDgzNjMsIDAsIDI5OTMsIDc3NzIsIDM5MTYsIDQzMDEsIDEyMDQ5NCwgMTE0MSwgNDI0MDcsIAorICAgIDc0MTcsIDcxOCwgNzU3MiwgOTczLCAxMTk1OTksIDEyMDcxOCwgMzIzNSwgMjQxNSwgNDMxNjQsIDAsIDgwMTgsIDQyMzMzLCAKKyAgICA3NDc1NiwgMTA2NzUsIDY5MzcsIDQyNDg2LCA0MzM4MSwgNjUzOTAsIDEwMDY3LCAxMjA4NDksIDEyMDIsIDAsIDk4MzkxMCwgCisgICAgNjU4NjMsIDAsIDY4NDg0LCA5NDAxMywgNzgxODIsIDY0NTQyLCAzMjYwLCA3MzgyOSwgNjUzODgsIDk5NDUsIDg0MTksIAorICAgIDc4MDQyLCA2NzM4LCAwLCA0MzY4MSwgNjk3MjgsIDIwNTksIDkyNDIyLCAwLCA1NTIzNywgMTQzMSwgMTE5MTk0LCA2NjU2NSwgCisgICAgMTA4MjEsIDAsIDEyODA0LCAxMjgwNzYsIDgyMjksIDEyMzUsIDMzMDcsIDExNDcyLCA3ODA4OSwgNzgxODQsIDQ1NDQsIAorICAgIDcxMjI4LCA5MTc5ODIsIDEyOTE4OCwgMTc0MCwgNzgwOTcsIDg3NTgsIDk4NSwgMTI4NzIsIDY0NTExLCA3ODA5NCwgCisgICAgMTIwNjgsIDc4MTAyLCA3MTIyNiwgMTAxNDEsIDc0OTIyLCA2Mzc2MSwgODc4NSwgNDQ3NiwgNjUwNzEsIDYzNzYzLCAKKyAgICAxMjY1NSwgODkwNywgOTE0NywgNzgxMDYsIDc4MTAzLCA3ODEwNCwgMTIwODk4LCAxMTk1NzIsIDEwNjY1LCA2NDYxNiwgCisgICAgNDE1NzIsIDEyNzk3OSwgMTI3MTYwLCA5ODM1NTQsIDQxNTczLCA4MzE2MCwgMzkzMSwgMTIwMjk1LCA3NDE0MywgODMxNTYsIAorICAgIDgzMTU3LCA4MzE1OCwgNzg0NjAsIDExOTgyLCAwLCA4MzA2NywgMTI4MzgxLCA5MjcxMiwgNjQ0ODQsIDExOTI2NiwgCisgICAgNDExNjcsIDAsIDQxNzM1LCA5NDAxOSwgNzE3LCAxMDc1NCwgODMxNjgsIDgzMTY5LCA3MjQxMywgODMxNjMsIDYzNzY3LCAKKyAgICA4MzE2NSwgMTc4MCwgNjkzNiwgMCwgODMxNjEsIDgxOSwgMTA2MTEsIDk2OTQsIDEyNjk3OCwgNzE0NzQsIDAsIDEyNzg3MSwgCisgICAgMTI5MDY5LCA4MzQzLCA4MzQyLCA4MzQ1LCA4MzQ0LCA2NTc4LCA3MDA5LCA3NTIzLCA2OTIyLCA4MzQ4LCA4MzQ3LCA3NTI1LCAKKyAgICAzMzQ2LCA4MzM5LCAxMjgxNjUsIDEyODIwOCwgNTc1LCAyNjgsIDc4MTExLCA4NTYzLCA1NzU0LCAxMjAzNDMsIDQxNTQxLCAKKyAgICA2NTU2NSwgODMzNiwgNTkzNiwgNzI5MCwgNzgxMTcsIDgzMzcsIDgzNDEsIDMwOCwgMTEzODgsIDc1MjIsIDgzMTUxLCAKKyAgICA3ODEyMywgNjU0NjYsIDExMDkwLCA2OTUzLCAwLCA4MzM3NSwgNzQ5NzMsIDc4MTMyLCA1OTI2LCA2ODI1MCwgNzgxMzAsIAorICAgIDc4MTI2LCA3ODEyNywgNzgxMjQsIDc4MTI1LCA5MDM4LCA3ODg3LCA0MzQ1NiwgNzgzMCwgMTE2NTEsIDEzMDkzLCA2NDAwMiwgCisgICAgOTgzNTU5LCA2NTc0MiwgMTI4NzQsIDExOTU5NywgMTE1OTAsIDAsIDc0MDQ4LCA2NzM3OSwgODU5NSwgOTgzNSwgOTE3OTQ3LCAKKyAgICA0MzcwMywgMTMwOTcsIDAsIDY0NjQzLCAxMzI4MywgMTI2OTcsIDc0OTc1LCAxMjM4MSwgMzQ4OCwgNTkzMywgMTAwMzMsIAorICAgIDcxMTAxLCA2NjI0MSwgNjU1NzAsIDExOTE1NCwgMTIyOTcsIDcxMjEyLCAxOTU1LCAxMjc5NzAsIDUzNDksIDQyNTM4LCAwLCAKKyAgICAxMjQ5MzIsIDc0MTEsIDk0NjIsIDEyODE1MCwgMCwgMTI4NDY1LCA0MzkyMCwgNDI3MzYsIDEyMTAxNywgNTc1NiwgCisgICAgMTI4MzI0LCA3NjM4LCA0MTY0MiwgNDI3NjQsIDk4MzcxNywgNDMxMDksIDc2MzcsIDU3NTIsIDExMjEzLCA4MzQ4MSwgCisgICAgNzM4MzIsIDEyODgyNywgODM0ODYsIDEyODIzMSwgNzgzMzQsIDkxNzk1NywgNzYzNiwgNjUxNzEsIDkxMjQsIDk4MzIxMCwgCisgICAgNzg4OTIsIDEyMDc5OCwgMjkxLCAwLCA5ODMyMjEsIDIwMjcsIDY2MjMwLCAxMDA4MCwgNzgxMzYsIDEwNDAzLCA3MDg2OSwgCisgICAgNDY0MCwgNjQ3MTMsIDEwMjI0LCAxMjA0MjksIDExMTgzLCAxMjA0MzEsIDEyMDQzMCwgMCwgMTI4MzUxLCAxMjc0ODksIAorICAgIDEyNzEzOCwgMCwgOTI0OTksIDAsIDExOTA5NCwgNzQyMTMsIDc4MjQsIDAsIDE5NDY0OCwgNDEyNzQsIDU3NzgsIDYzMDIsIAorICAgIDEyMTQzMiwgMCwgMTI2ODAsIDExOTEzMCwgMTQxNywgNjcyNDIsIDkzMDQxLCA5NDUyLCAxMjgxNTMsIDc0MzkzLCAxMTU1MiwgCisgICAgMCwgMTI3ODU1LCAxMjgyMTcsIDY1MzkxLCAxMjg2MTQsIDEwMTcyLCA2NTQ1MywgNjM3ODksIDQxMjY0LCA3ODY1OCwgCisgICAgNjQyNiwgNDY0MSwgOTE3OSwgNjQ4MTksIDU1Mjc4LCA0MTI1NSwgNDIwMzYsIDQxNDY5LCA0MTI2OSwgMTIwNDEyLCAKKyAgICA0MTI2NywgNDY0NiwgNjc3NTksIDg2NSwgNDIwMzQsIDc4Mjc0LCA3ODI3MywgNDY0NSwgNDIwMzMsIDc4MjcwLCAxMjc5ODIsIAorICAgIDk4MzE3MiwgNDM5NDgsIDE5NTEwMCwgNjg4NDAsIDc4Njc0LCAxNjU5LCA5MTksIDQyNzg0LCAxNjcxLCAxMjc4OTIsIAorICAgIDYwNjksIDkyMTksIDEyODU1OCwgMTY2MSwgMTMxMjAsIDYzNzg0LCA2OTgxOSwgMTAxNDAsIDk3MTMsIDExOTE0MywgMCwgCisgICAgNzE0NjIsIDk0MDUwLCAyMzA2LCAxMDQ4NSwgMTE4OTQzLCA2MDY4LCAxMDYxMiwgMTk1MDk5LCAxMTk1NjcsIDY3NzA1LCAKKyAgICA5MjU2MSwgNDE0NjIsIDEyMDQ3MCwgMTk1MDc5LCA1NDIyLCAxMjgyMzQsIDk4MzYyOSwgMTI4NjExLCA4MzQ3NCwgMTAyMjksIAorICAgIDEwNjM1LCA4MjYsIDgzNDc1LCAxOTUwODIsIDEyNzAwMywgMTk1MDg0LCA3MTQ1NSwgNjQ4MywgOTIyMTEsIDE4MDgsIAorICAgIDc4NDgsIDExMzc4OCwgODEwMCwgNzgyMjcsIDcxMTk4LCA3ODY3MCwgMTMzMDEsIDc4NjY3LCA5NjY3LCA3ODY2NSwgCisgICAgNjc3MDQsIDk4MzkyMSwgMTEwMDMsIDk5MDQsIDgzNDEwLCA5ODM5MTksIDEyMDY5MCwgOTE0NCwgMTA5MjEsIDkyOTkyLCAKKyAgICA3ODY4MCwgOTg0MCwgNjUxMzEsIDc4Njc4LCA3MTA5MiwgMTAzMTMsIDgzNDA4LCA4MzUwMCwgNjQzMjAsIDEwMjY1LCAKKyAgICA2NzI1MiwgMTA5NjIsIDY2OTA0LCA0MzAwOCwgODk0NSwgNzg2ODMsIDEyMDk5NSwgNDEsIDE5NTA3MiwgMTc5MiwgCisgICAgMTIwNTE1LCAxOTUwNzMsIDg2NTUsIDY4MjU0LCA5MjU0NCwgNzc5NTEsIDEyMDY2LCA2NzI1OCwgMzg1LCA0MTUyLCAyNTg1LCAKKyAgICAxMjc4MDQsIDExOTA2OCwgMzEyNiwgOTE3ODUyLCA3Mzk4MywgMTA5NTcsIDEyNzAzNywgMTExNjAsIDExOTExNiwgCisgICAgMTI3ODczLCAxMzE1NywgMCwgMTI4MDI0LCAzNTcwLCAxMjkxODcsIDc0NDMsIDExODgwNCwgNDQwMDYsIDY5OTcsIDY4MDA0LCAKKyAgICAxMjY2MzEsIDc4NzksIDg3MzksIDExMDc1LCA5MTc5NzEsIDY1MjE2LCA3MDE5NiwgNjk3OTUsIDI1OTMsIDg0NjMsIDc4MTAsIAorICAgIDEyODU0MywgNzgzOSwgOTI2MTIsIDc4ODA2LCA3NTA2NCwgOTY5MSwgNDQxMSwgNzg4MDIsIDEyMTIxOSwgMTIwODU0LCAKKyAgICA0MzQ0MiwgNjk4NTEsIDY1MjU0LCAxMDA2NiwgOTgzODg5LCA3MjQxOSwgMCwgMCwgMTMwNjEsIDgwMTYsIDc4Njg3LCAKKyAgICAxOTkzMiwgNjQ4MzEsIDAsIDExMzY4NCwgMTIzOTAsIDExOTE3MSwgMTYzNCwgNjgxMTUsIDY1MDcwLCAxMTA1NiwgCisgICAgOTgzNTc0LCAxMTk5MjUsIDk4MzA5OSwgNDExNjUsIDExMzI4LCAxMjQ1MCwgOTgzODExLCA0MTE2NiwgMCwgMTI0NTYsIAorICAgIDExOTkxNCwgMTcxLCA1OTQxLCAxMjQ1MiwgMTk0NzA5LCAxMjQ1OCwgMTI1MzEsIDc4Nzc5LCA0MzAxMywgNjM4MDAsIAorICAgIDc0MTYyLCAxMTkzMjAsIDEyMDQ4MywgOTk2OSwgMTIwNzY3LCAxMjQ1NCwgNjM4MDYsIDQyMTMyLCAxMjA2MywgNzg0MjUsIAorICAgIDc4NDI0LCAzMjMwLCA2ODc3MywgOTgzNDk3LCA3NTAyNSwgNTIwOSwgMjk3LCA1ODEwLCA4NTIyLCA4NDE1LCAxMTk5MzcsIAorICAgIDc4NDI5LCA3ODQyOCwgNzA3NywgMjQ5NywgMTI4NjUxLCA5NjAsIDc0MTU2LCA2OTgxLCA5MjM3NCwgMTI5MzgsIDQyOTIsIAorICAgIDc4ODkzLCA3NDgxNSwgMTA1MTIsIDAsIDc0ODE0LCA3ODg3NSwgMTI3NTA1LCA3ODg3NiwgMjUwMywgNzM3NzgsIDE3NjIsIAorICAgIDY5Nzk0LCAyNDk1LCA3NDkxMSwgNTg0NCwgNjgwMzEsIDExODgzOCwgMTI3OTQ3LCAxMjY1NCwgNDY2MywgMTg5OSwgCisgICAgNzg4NzcsIDI1MDcsIDY0MTIxLCA4NzI2LCA2NTU5NCwgOTI5NzIsIDAsIDExOTAwMCwgODg5MiwgNzg4NzIsIDkyMzM5LCAKKyAgICA3MTIzMiwgOTgzMDczLCA1NzgyLCA0MjAsIDEyNzM0OCwgOTE3ODcxLCA0Mzc5NiwgMTA3OTcsIDYzNzk0LCAwLCAxMjg1MzMsIAorICAgIDY0ODE0LCA2Mzc5NiwgNDM4NjEsIDAsIDY2NTgxLCAxMTkyMDQsIDQxNjA4LCAxMjg0NzksIDEyMTE0NCwgNjM3OTIsIAorICAgIDQ2NTksIDEyMDc4OCwgNzc5NzEsIDQzNjc2LCA3NDk0NCwgNjk2NzMsIDEyMTAyOSwgMTExMjksIDkyOTI5LCAzMjksIAorICAgIDc3OTY4LCA5MjcwNywgODM0OTYsIDczOTksIDAsIDQxMTg4LCAxMzI0NCwgNjc2OTIsIDQyMTY3LCA3NDM1LCA3ODE5MywgCisgICAgNTM4MCwgMTE5MDg2LCA2OTIyNSwgMTE1NSwgMTEzNjUsIDQzMTI2LCA3Nzk3MiwgMCwgNjU2ODQsIDAsIDU2MDEsIDY1MTkyLCAKKyAgICA0Mjc2NSwgNjM3NTIsIDAsIDc5ODcsIDY5Njc2LCAxMTcyLCA2OTc5OSwgNjc4NiwgNDM2MDEsIDEyMDQ3NiwgNzQxMjYsIAorICAgIDU2MDMsIDAsIDQ0NzMsIDEyMTA4NSwgNzI0MjYsIDEyNDk0NywgNjUzNDcsIDY1MzQ2LCA2NTM0NSwgMTI4NTQ4LCAKKyAgICAxMTkyMTMsIDUzNDcsIDY5ODAyLCA5MTc5NzMsIDczODY4LCA3MDg1MiwgMTA1ODgsIDAsIDAsIDYzNzU1LCAxMjgyNzEsIAorICAgIDUzNDMsIDc4NDIyLCAxMjA2NjEsIDQ1NTUsIDUzNDEsIDgzNDU5LCA3MDA3MSwgNzQ5MTYsIDUzNTEsIDc4Njc1LCA0MzEwNCwgCisgICAgNjUyNDQsIDEyMTM2NSwgNjQ1NDEsIDQyNTE5LCA2ODEzNCwgMTI4OTE2LCAxMjY5ODYsIDc0NzY1LCAxMjg5NzksIAorICAgIDEyNzUxMCwgNjYzOCwgMCwgNjUxMTMsIDI3MSwgNzQxODAsIDY1MzcwLCA4ODM1LCA2NTM2OCwgMTI2NTMsIDY1MzY2LCAKKyAgICA0MjE3MiwgNDEwODYsIDY1MzYzLCA2NTM2MiwgNjUzNjEsIDExOTEyLCA0MzQxMCwgMTEzMjMsIDY1MzU3LCAxMTgwMCwgCisgICAgNjUzNTUsIDUzNDUsIDExMTAzLCA2NTM1MiwgNjUzNTEsIDc2MSwgNjUzNDksIDE5OTU5LCA2OTcxOCwgNjM4NTYsIAorICAgIDEyNjYzNSwgMjQyMywgNzQ1MTgsIDY0NjQ3LCA3Nzk1OSwgMTE5NTcsIDQ2OTksIDEyNjU3MywgMTI4NjcwLCA5ODM3ODcsIAorICAgIDAsIDY0NjA1LCAwLCA2ODA3NCwgOTgzOTc3LCA0OTE2LCAxMjg1NjgsIDM4MCwgMTA5NTgsIDY2NTYzLCA3Nzk1NSwgCisgICAgNjk3NzMsIDk3NzMsIDEzMTY3LCAxMjkxOCwgNDEwOTYsIDczOTgwLCA2OTI0NSwgNzgyNTQsIDgzNDUwLCAxMDY4NCwgMCwgCisgICAgMTI1MDYzLCA5MjkwNiwgNzk0NiwgMTI1NDEsIDgxODIsIDY3NTg2LCA2OTc4MCwgMCwgMTI4MjA3LCAwLCA5ODM2NTQsIAorICAgIDkwMDUsIDEyMjUsIDY2MzAsIDAsIDAsIDExODg1NCwgNjgwMTEsIDg4NDcsIDkyMzcxLCA2NTg3NiwgNTUzNSwgODMyOSwgCisgICAgNzQ1OTAsIDEyNTAzNiwgOTI2MDksIDAsIDY2ODc0LCAzMTI3LCAyNTk1LCA2NTcxMywgNDIwMTMsIDEyMTIxMSwgNTYwNywgCisgICAgNDEwODksIDEyODYyNiwgMCwgNzAyOTIsIDI2NjUsIDExMzA0LCA0Mzc1MSwgNzQyMDAsIDQ5NzAsIDg3NjQsIDEyMDQ1OSwgCisgICAgODkzNCwgOTI3MjYsIDQxNTY2LCA0NDkyLCA2NzI3MSwgNjUwMTEsIDQxMDkwLCAwLCA4MzQxNywgMTE4OCwgNzI1NCwgCisgICAgMTEwMCwgMCwgNjcyNzAsIDQxMDgxLCAyOTEyLCAxMTc0OSwgNjcyODIsIDY3MjgxLCA2NzI4MCwgMzU3MiwgMTAwMjMsIAorICAgIDQ5NTksIDEzMDc5LCAwLCA2NzI3NSwgOTcyOSwgMTI1MTEwLCAxMjEwNDIsIDY3Mjc4LCA0MzM2MSwgMTI3MzU1LCA2NzI3NiwgCisgICAgMTE4MDMsIDc5OTYsIDk5MDcsIDQxNDUwLCAxMzMwNCwgODMzOTIsIDgzMzY5LCA0MTQ1MSwgODMzNzAsIDExMDk1LCA4MjczLCAKKyAgICA3NDMyMiwgMzQ1MSwgNzAyOTEsIDk3MiwgNDE0NTMsIDY4MTY0LCAxMTkzMjcsIDczODgzLCA2ODAyMiwgNzM5NDUsIAorICAgIDgzMzYzLCAyMjg4LCAxOTk1NSwgOTUzOCwgODMzNjYsIDY5ODA3LCAwLCAxMjkwOTUsIDAsIDgzMzgxLCAxMTM5NiwgCisgICAgODMzODUsIDExMDE5LCAwLCAxMjg0MTYsIDEyMTIwNSwgNjgwMjAsIDQxMDc4LCA3MTM2NSwgMjYxLCA1OTI3LCA3NzkxLCAKKyAgICAxMjg2ODEsIDczNjIsIDAsIDEwNjk2LCA3MDEyNCwgNjA3MywgOTgzOCwgMTE4OTIwLCAwLCA2MDc1LCA5Mzk5NSwgMjgyLCAKKyAgICAxMTkxNzgsIDY0MzcsIDY4ODMwLCAxMjE0NTksIDk4MDEsIDY2Mzk5LCA3NDE3NywgMCwgOTE3OTU5LCAzNDc0LCA2NzI4NywgCisgICAgMCwgNjcyODYsIDYwODEsIDgzNDY5LCA3ODg3NCwgNjcyODksIDY3MjgzLCA4MzQ3MSwgNzAwMDIsIDQyOTMwLCAwLCAKKyAgICA5MzAxMywgODc1MSwgMTE0OTksIDY3Mjk3LCA3ODE2LCAxMjYzNiwgNDY2NSwgMTI2MjgsIDQ2NzAsIDY3Mjk4LCAxMjAyNzIsIAorICAgIDY4MDE3LCA5NjQyLCAxMDkxMiwgOTU4LCA2NzI5MywgMTEzODcsIDY3MjkxLCA0NjY2LCA3MDc5MiwgNDkxNSwgNjc3MTUsIAorICAgIDQ2NjksIDAsIDY4MDk5LCAxMzI4NywgNDY2NCwgMTA4MzYsIDEyMDU1MCwgNzUwNTMsIDY5Nzc1LCAwLCA0MzU5NSwgNzQ1MCwgCisgICAgMCwgOTE3ODc1LCA4NjY0LCA5Njk3LCAzNjA2LCA4MzQ0NiwgOTgzOTc4LCA5MTc4NzQsIDY0ODE1LCAxMDYzLCAxMjAyNTAsIAorICAgIDY3MzEyLCA5NzcyLCA3MjU1LCA4ODg2LCAxMzg5LCAxMjc5MzIsIDEyMDI1NywgMTIwMjU4LCAxMjAyNTksIDEyOTQxLCAKKyAgICA0MjY2MSwgODM0MzgsIDEyMDI1NSwgMTIwMjU2LCAxMjMwMSwgNjc4MzYsIDY5ODIwLCA0MTEwMiwgNjQ0MjgsIDEyMDI2MiwgCisgICAgNjY2MDIsIDEyMDI2NCwgMTAxNywgNjY2MDAsIDUyMywgNTA1LCAxNDQ3LCA3NDQzNiwgMCwgNzAzNDAsIDgzNDM3LCA4NjA4LCAKKyAgICA0Mjc4OSwgMTIwNjEzLCA4MzQzNiwgMCwgNzE5MDYsIDExMzA3LCA2NjcwNywgNjczMDEsIDY3MzAwLCAxMTc0NSwgNzkxOSwgCisgICAgNjczMDQsIDE2NDEsIDAsIDAsIDg5NjYsIDEyODkwMCwgNzQ5MTksIDU5MDgsIDcxODcwLCA2Nzg1MywgNjc0NCwgNjczMTAsIAorICAgIDE2OTksIDY3MzA4LCA2NzMwNywgNjczMTQsIDY3MzEzLCA2MzA2LCAxMDE2OSwgNzEzMjQsIDExOTI1MSwgMTAwNjgsIAorICAgIDM3NjYsIDIzODksIDY3MzA1LCAxMjA0NTUsIDY2MTEsIDI1NywgNDMxNzAsIDEzMTUzLCAwLCA0MjM4NiwgOTgzODE1LCAKKyAgICA5NDM2LCAyNTk5LCAwLCA2NDk2LCA5NDQ5LCA1OTMwLCAxMTQ3NiwgMTEwMzMsIDExNDQ3LCAxMDU0MSwgNTYyMiwgCisgICAgMTIwNDM2LCA4NDc3LCAzNzYwLCAxNzE4LCA5NDQyLCA2NjQzMywgMzc3NiwgOTE3ODM3LCA0MTQzNSwgNDM1MiwgNjczMjQsIAorICAgIDI0MzUsIDcxMjExLCA1NjIxLCAxMjAzODUsIDQyMDEsIDM3NzgsIDQyMDMsIDQyMDIsIDQyMDUsIDQyMDQsIDEyMDQ0NywgCisgICAgMzc2OCwgNDE3NzQsIDc2NSwgNDE0NDAsIDM3NjQsIDg0NzMsIDYzNzMsIDg0NjksIDEyMDQzOCwgMTI5NDcsIDQ1NjQsIAorICAgIDExOTA0OSwgNzQ2MjMsIDc0MjcxLCA3Mzc1MywgODM3NCwgMTI3MjAxLCAwLCA2ODI5LCA1MjI1LCA2NjkwMSwgMTI3Mzg1LCAKKyAgICAwLCAwLCAxMTk2MTUsIDY3MzE5LCA2NzMxOCwgMzE2MiwgNDM1MDcsIDExNzcxLCA2NzMyMiwgNjczMjEsIDY3MzIwLCAKKyAgICA0MjYxNCwgNTM1MywgNTYyNSwgNzQxNzksIDY3MzE1LCAwLCAxMDEwLCA2NDU3MiwgNDE3ODAsIDQyNjIzLCA2NDI3NywgCisgICAgNjk5NDIsIDY5NTIsIDY3MzI5LCA2NzMyOCwgNjczMjcsIDI1OTAsIDU2MjksIDY1NTUyLCA3NTUxLCAxMDMyNSwgNTYzMiwgCisgICAgMTA0NzEsIDEyMDAzOCwgMTIwMDI3LCAxMjAwMjgsIDEyMDAyNSwgNTYyOCwgMTIwMDMxLCA5NzAsIDEyMDAyOSwgNDc3MiwgCisgICAgMjQwMCwgNTYyNywgMTIwMDE3LCA2NzMzMCwgMTIwMDIzLCA2NDI3NSwgMTIwMDIxLCA4Nzg2LCAxMTM2OTMsIDIwMywgCisgICAgNzQzNjUsIDAsIDAsIDY5OTg1LCA3ODM1MCwgMTEzNzAzLCA2NDM3OCwgNDIwNTQsIDEyODU3NSwgMCwgNTU0LCAxMTk2NDksIAorICAgIDExMzU4LCA3MTE3MiwgMTIxODIsIDQyMDQ4LCAxMTA2NSwgMTI1MTE0LCA3Mzg5MSwgODM0MjMsIDgzMDE5LCA1Njk0LCAKKyAgICA3Njg5LCA2OTc5OCwgOTMyMywgNDMyNSwgMzA0NywgMTAzMTcsIDE3NSwgMTIwOTYyLCA5MzAyOSwgNjk3NjQsIDAsIDAsIAorICAgIDEyNDMsIDQyMTU0LCA1NDMxLCA2NjUyLCA5MTc1NjEsIDY3NzUzLCA0MzY1MSwgMTI5MTI5LCA2ODExOCwgNjgwOTMsIAorICAgIDExMjksIDEyNjU3NCwgMCwgNjU5MDAsIDE5ODYsIDc4NDYsIDc4ODA0LCA4NjYxLCA3NTA1OCwgNjUyNTUsIDkzOTkyLCAKKyAgICAzODQ1LCA0NDkwLCAxMTg5NjksIDY2NDksIDc0MTM2LCAxNDU2LCA3NTMwLCAxMTk3NywgNzI0OSwgODM2NiwgMCwgNzc1NiwgCisgICAgMTIzNDIsIDEyMDY5NywgNTEsIDQxNTE2LCAwLCA4NTcwLCA5NTY4LCA3MTMxOCwgNDU2LCA3MDI2LCA4MTQ1LCAxMTY4LCAKKyAgICA5MjUxLCA5MDgyLCAxMTk5NjQsIDY0MDU1LCA0Mjc4MSwgMzg2NiwgMTIzMjMsIDQxNTEyLCA3MzgwNSwgNjgxMjEsIAorICAgIDkxNzg1MCwgNDE0OTQsIDkyMzE2LCA0NjYwLCA2NzExNCwgMTA0MDUsIDEyNzE5NSwgNzg4MDMsIDAsIDEyOTE3NiwgCisgICAgNDIwNDAsIDczOTE4LCAxMTk2MjcsIDc5NDQsIDQxNDU0LCAxMjYwNSwgMCwgNDIyMDUsIDQxNDU1LCAyMzYsIDY0MDUxLCAKKyAgICA3ODg2NywgODIxNCwgODM0MjEsIDExMzc4NCwgMTIwMDM3LCA0MTQ1NywgOTgzOTcwLCAxMTk1ODksIDE5NjksIDIzODQsIAorICAgIDgwOTcsIDEyODAxOSwgNzQxMywgNjgwMTIsIDc4MDI5LCA4NzY2LCA0Mzg2NCwgNzgwNzksIDU4NTQsIDEyNTAwMCwgCisgICAgMTA1ODMsIDAsIDExOTk4OSwgMTI3NTU2LCAxMDQxNiwgNjgwNzAsIDM4NzIsIDgzNDI0LCA5ODM4MzksIDg0MjksIAorICAgIDEyMTIzMCwgMTE4ODA2LCAyODM4LCA2NDI5LCAwLCA4MzQyNiwgMCwgMTI4NDc4LCAwLCAxOTQ2MjAsIDk0MDA1LCAxMTA5NiwgCisgICAgODM0MjIsIDEwNTUzLCAxNjYyLCA4NDgzLCAxMjAzOTYsIDQzNjA1LCA1ODkyLCA0MzQxOCwgNjc4MTksIDczNzQyLCA2NiwgCisgICAgNjUsIDY4LCA2NywgNzAsIDY5LCA3MiwgNzEsIDc0LCA3MywgNzYsIDc1LCA3OCwgNzcsIDgwLCA3OSwgODIsIDgxLCA4NCwgCisgICAgODMsIDg2LCA4NSwgODgsIDg3LCA5MCwgODksIDExOTg2MiwgMTAzNTcsIDczODUsIDgxNzAsIDE3MDQsIDg1NTYsIAorICAgIDkxNzk3NSwgOTY1OSwgMCwgMCwgMCwgOTU1NiwgMCwgNDUwMywgMTEzNTMsIDk2NDcsIDEyNTAxNSwgNzgxODUsIDEyODk1OSwgCisgICAgMCwgNzE0MzcsIDc4ODg2LCAwLCAwLCA3NDIyOSwgNjY1OTMsIDY0MzgsIDgzMzY0LCA5MTA5LCA3ODg4MiwgMTI4OSwgCisgICAgNjQ1OTksIDExODkxNSwgNjgwMDksIDEyODMwMiwgNjU1MDcsIDI0NDcsIDExOTkxMSwgMTI4Njk0LCAxMjgwNDIsIAorICAgIDEyNjU0NSwgNjY1ODksIDAsIDYzMzQsIDEyODM2OSwgMCwgMTk5MzcsIDkxNzc5MywgMTMyMiwgOTIzNTksIDU2NzUsIDI1NCwgCisgICAgMCwgMCwgNjk2ODYsIDQyNDI1LCA4OTE4LCA2NDAwMywgNTcxNiwgNDIzMTIsIDAsIDE5NDY5MiwgNjk3MiwgNDI4MjYsIAorICAgIDc0NDA5LCA0MjQ2NCwgMTIwNTY3LCA2Njg5OSwgNjcxNTUsIDc0Nzk2LCA2NDQwMCwgNjQ2OTMsIDEyODgwNSwgNjc2ODcsIAorICAgIDY1NDI5LCA5NTE1LCA0NDM1LCAwLCA0MjUyMiwgMCwgNjgwMDgsIDExNzg1LCA3NDEyLCA0Mzg2NywgNDE5NzgsIDE0MTIsIAorICAgIDQ1OTQsIDEzOTEsIDEwNTM2LCA4MDY3LCA5OTAxLCA3MTAzLCAxMjgyOTMsIDcxMDIsIDcxNDI4LCAxMjA3NDgsIDMxNDAsIAorICAgIDEyNzI3NiwgNzk2MCwgNDMyNzEsIDEyMTA5OSwgMTI1MTgsIDEwOTA5LCAxMjc1MDgsIDE0MjgsIDEyNDcyLCA2NzI1NCwgCisgICAgNjcyNTMsIDc2OTksIDEyMzkzLCA2NzI1NywgMCwgNjcyNTYsIDY3MjU1LCA4MjIzLCAwLCA0MjYxLCAxMjE0NjAsIAorICAgIDEyMDkxMCwgNzQzMDgsIDk4MzgyNywgMTEzNzEyLCA2NzE1MywgOTgzNTcxLCAxMjgwNDYsIDQzNDE5LCA5ODM0NzEsIAorICAgIDY0NTU0LCAxMDU3NCwgMzg3OCwgNjc2OTEsIDQyMzUyLCAxNzUyLCA3Mzc4NSwgMTI4MTcxLCA0MjUwNiwgMTI4NTQxLCAKKyAgICAxMDE5OSwgOTE3ODY1LCAxMjUxNDIsIDY4MDIxLCA2NTkxOSwgMCwgNjY5NSwgNzIwLCAzMjQsIDAsIDEyOTAzNSwgNDM0MDYsIAorICAgIDk4MzczNiwgMTQ2NCwgNDA5ODUsIDAsIDc5NzQsIDAsIDQzNDc0LCA2ODA4MiwgNjQ0ODgsIDEyODk3NywgMTIwOTUxLCAKKyAgICA2NDA0MSwgNzQ3ODcsIDAsIDc4ODY1LCA5MjI1OCwgNjU1OTcsIDEyMTQxNiwgNzg4NjMsIDAsIDEzMDIsIDY2Mjg4LCAKKyAgICA3ODg2MSwgMTE5MTM0LCAwLCA2NzE1MiwgNTIwNCwgNzQ3NzQsIDQzNDA0LCAxMTgzNSwgMTIwOTIzLCAzOTk1LCA2ODM2MCwgCisgICAgNjU2MDgsIDM3MTQsIDkyMTkwLCAxMjAwMjYsIDY3MjYyLCAxMDk5OSwgMTE3NTAsIDY3MjU5LCA0MzI1MSwgNjcyNjQsIAorICAgIDQzMzAxLCAwLCAxMjA1NTcsIDgxMzAsIDg2NzIsIDEwODQ1LCAxMTk2NCwgMTIxMjY4LCAxMjgwMTQsIDkyMTczLCAwLCAKKyAgICA2ODQ1NSwgNDI4NjMsIDczODM5LCAxMjc1MjksIDAsIDY3NzAwLCA5MTc4MTIsIDExMzcwMSwgNDM2NDUsIDQ2OCwgNjEyLCAKKyAgICAwLCA2NDQwMSwgNjY0NDgsIDY4Mzc2LCAwLCAxNjc0LCAwLCA1ODIzLCAxMjg2MjUsIDEyMjgwLCA3MDM2NywgNTQwLCAKKyAgICA3NDU2NCwgMTE5MDE3LCA2NjQyMiwgODQzMiwgNzg4NzMsIDExMDczLCAwLCA2NDMxNiwgMCwgMTIxMDcwLCA4MjAsIAorICAgIDQxNzQxLCA5ODM0NzcsIDEyMDY2NywgMTI0OTgxLCA2NDY4NCwgMTI2OTkyLCAzMzU5LCA3ODAwLCA2OTkzNCwgNjUxNzcsIAorICAgIDYyMjYsIDM1MywgMTIzOTYsIDEyMTE3NiwgMTE5NjEyLCA2NDc0MiwgMTI4NjgyLCA3ODg3OSwgOTgzNDc4LCAxMjc5MzgsIAorICAgIDEyNDEyLCAxOTk0MSwgMCwgMTIwMjc3LCA3MDM1MiwgMTg4NCwgOTQ4MSwgNDI0MTgsIDcwMDU5LCA0MTE1NywgOTgzMTQyLCAKKyAgICAxMTk1LCA2NDg5OCwgNzkyNCwgMTE5ODcwLCA0MTE1MSwgMjAxMCwgNzE0MzAsIDQxMzI4LCA0MjM0NCwgMCwgMTI0MDksIDAsIAorICAgIDQzNjAsIDEyMTAyMywgOTczOSwgMTI4NTUwLCA2OTkzMywgNzM5MjEsIDkxNzYzMSwgNDI1MjEsIDg1MzksIDEyODYwNiwgMCwgCisgICAgMTE4OTg2LCAxMjcxNDgsIDQ3ODgsIDEyMTM0NSwgNjgwMjMsIDY1NzM0LCA5ODM0NTcsIDQzNzkwLCAxMjAyNzQsIDEzMDc1LCAKKyAgICA3NDQyOSwgOTQwNjMsIDY0NTY5LCA0MzUzMiwgMTA4MzcsIDI0OTIsIDEyNzE5NywgMTE4OTAxLCA2ODYzNywgNDExMzYsIAorICAgIDQzNzg1LCAxMTgxMywgOTY0OSwgNDExNTQsIDExMzczMSwgNTEyOCwgNDAzOCwgNDExNDMsIDY1NjA0LCA2NDg1OSwgCisgICAgNDE1OTIsIDY3NzEsIDE2NDgsIDU0MzUsIDY3Mjk1LCA2NzM0LCA0MTM0MywgMTE5ODQ4LCA2NTQzOSwgMTI3MDksIDY5ODYsIAorICAgIDkyMzY0LCA2ODAxNSwgMTIwNTMzLCA0MTM0OSwgNzAwMjEsIDEyNTgxLCAxMDM3NCwgNTE3NSwgMCwgNzM4MDYsIDEwMjU0LCAKKyAgICAxMTM2ODEsIDEwMjc4LCAxMDI2MiwgNjk4NTgsIDQxMzQ2LCAxMjA4NzAsIDYwNywgMCwgNjgxODIsIDEyODg0NiwgMTI5MjMsIAorICAgIDEwMzE0LCAxMDI4MiwgNjU0NzcsIDEwMzc4LCAxMjAyOTcsIDQwOTc2LCA4MjY1LCAxMjkxNDksIDc4NjM5LCA0MDk3NSwgCisgICAgNTg0MCwgNDI4MzgsIDc0OTg3LCA0MDk3OCwgMTIxMzg2LCA5Mjk0NSwgMTI4MDIwLCAxMTk4MDksIDAsIDY2NDQ0LCAKKyAgICAxMDUzOCwgMTIwODEwLCAyNTUwLCAxMTk4MzYsIDY3NzksIDEyOTEzMCwgMCwgMzUyNSwgNjgyNCwgMTE4ODg2LCA5ODM1ODIsIAorICAgIDAsIDU2MTksIDY1ODIyLCAxMTM3NTEsIDExMzczOCwgNzQ1NSwgNzE0MjQsIDU2MTYsIDExNDg2LCA5NjU2LCAwLCAwLCAKKyAgICAxMDcyNywgNTYxNSwgMTIwODczLCAxMjA1NTEsIDQyMzgwLCA2NDg5NSwgNDM2OTMsIDY2NDUxLCA4MDgsIDU0NTUsIAorICAgIDExMzQ3LCAwLCAxMDI2LCA1NjIwLCAxOTQ4ODcsIDAsIDExMzUwLCA1NjE3LCAwLCA5MjI1LCA2NDYzOSwgMTI3MDczLCAKKyAgICA5MTQ1LCAxMjgwNjAsIDEzMzgsIDEyMDU4MSwgOTgzMTU4LCAxMjczOSwgNDYwMywgMzA4NCwgNzA0MDgsIDkyNDg0LCAKKyAgICA5ODU4LCA2MDM3LCA5ODM0NjUsIDM5NzQsIDc4MjEzLCAxMDI5MCwgOTgzNzA0LCAzMDgzLCAxMDMyMiwgMTI5MDQ4LCAKKyAgICAxMjkwMzAsIDc1MDM4LCA0MTAzNiwgNjY4OTcsIDAsIDQzMzIxLCA2NTYwNiwgMTI3MDcxLCA0MTAzMiwgNDIzODgsIDAsIAorICAgIDY0NzAwLCAxMDAxMSwgMTQ0NSwgNDA5NjEsIDAsIDExOTEwNSwgMCwgNDA5NjAsIDE5NDkwNywgNjc3MjcsIDEyNTEwNiwgCisgICAgMjIyMywgNjQ5NTIsIDEwNDAyLCAxMjgzNTgsIDEyNTA0OSwgOTIzMDQsIDEwNjAzLCAwLCA5ODM0MDMsIDcxNDM4LCAwLCAKKyAgICA2NzE0LCAxMDA4MywgMTI3MDY5LCAxMjEwMTksIDc4MzY3LCA2OTk3NiwgMCwgNDM4NzIsIDkwNzMsIDQyNTg1LCA2NDMwMiwgCisgICAgMTA3MDQsIDY1MDMwLCA0Nzg3LCAxMjkwMzEsIDc0ODI5LCAwLCA2NTQyMywgMTIxMzA2LCAxMjgxMTgsIDk1NzAsIDU1MjYwLCAKKyAgICA5NTI1LCAyNjg5LCA5MTc2MjYsIDY1NDI2LCAxOTQ4NzIsIDkxNzYyNCwgNDM3NDAsIDEyMTE2MywgNDA5NjYsIDEyMDAwOSwgCisgICAgMTMyODYsIDM5OTgsIDQyNTk4LCA0MjU5NiwgNTAzLCA3MTQzMywgODczNSwgMjY5MCwgNjY0ODgsIDQyODM2LCAxMjcxNTAsIAorICAgIDQxOTU0LCA5MTc2MTUsIDE2NTIsIDc3MiwgNjY4OCwgODMxMCwgNjU0MjgsIDM0ODcsIDQzNDE2LCAzNTg1LCAxMDE5NCwgCisgICAgNDMzMjAsIDExOTE1OSwgNzM5NTUsIDkyMzE1LCA2NDY4LCA0MTk3NiwgOTcyMCwgNzQ5NjQsIDExMTc5LCA0MTk3MCwgCisgICAgNjYyNTUsIDU4MzYsIDEyMzU4LCAwLCA0MzU1LCA5MDQ4LCAxMjE4MCwgNjUwMjcsIDY0NjgwLCAxMzAzOCwgNDM2OTksIDAsIAorICAgIDQxNDg4LCAxMjgwODcsIDg1MjcsIDE5NDkxNywgMTIzNjIsIDEyNDM1LCAxMjM2MCwgNDEwNTMsIDMyNjYsIDAsIDEyMzU2LCAKKyAgICA4NjE2LCA0MTQ2NiwgNDI5MjQsIDIyMjcsIDExNDUwLCA5ODM2OTEsIDM2MzgsIDEyMzU0LCA2NzI5OSwgMzIxNiwgODMwOTksIAorICAgIDIzNTgsIDgzMDkyLCA4NjMzLCA3MTIwMSwgOTgzNzQ1LCAxMTkxODIsIDY5MjQ0LCA4MzA5MCwgNzAzNzUsIDExNzU5LCAKKyAgICAxOTQ5MDMsIDYzNjgsIDc0ODIzLCA2NzMwMywgNDE0MjMsIDgwNzgsIDEwNTA0LCA4MzEwNCwgNDE2OTgsIDQyMjM3LCAKKyAgICA5ODM0NTQsIDcwMDIsIDgzMTAxLCA0MTQzMCwgNDIyNjcsIDQxMDUxLCA0MTQ4NCwgMCwgNzE0NjcsIDQxMDUwLCA0MTQ3MywgCisgICAgMTA0NjYsIDEzMDk5LCA3MTQ0NSwgNzAzNzEsIDEyMDg5NywgNjQzNSwgNzQzMzEsIDExMzYyLCAxMjg5NzMsIDgzMDg4LCAKKyAgICA2NTM4MiwgOTI3NzAsIDQxNDIwLCA4MzA4MywgMzYyNSwgNzQ5MTUsIDQxNDA5LCA3MTQ0MSwgNjk2MzksIDIwNDEsIDkxNzgsIAorICAgIDk2NzIsIDQxNDI3LCA0MzU0MSwgNDMzMTcsIDc0OTI0LCAwLCAxMjg1NTcsIDQxNDI0LCA5MTc1OTgsIDEyMDU0NiwgMCwgCisgICAgMTI4MjEyLCAwLCA0MTQxNywgMTI2MSwgMCwgMCwgMTIxMDIsIDExOTY2MiwgNDE0MDEsIDAsIDEyNzUzOCwgMCwgNzgyNTEsIAorICAgIDEyNDk0MywgNDIyOTAsIDMyNzUsIDkyNDcyLCA0MjMyOSwgNjg4NTAsIDc0OTAxLCAwLCAxMjc5NTEsIDkyMzg4LCA2OTY0OSwgCisgICAgMTA5ODksIDc0MjM0LCAxMTM3ODEsIDEwNTk4LCA3NDEwLCAyNjY5LCA5MDMsIDAsIDI5MjAsIDAsIDEyNzIzMiwgNzQ2MDMsIAorICAgIDY0NTA0LCAxOTkyOCwgMCwgMTI4NDExLCAzOTE3LCA5ODMxMTksIDExNzMyLCAwLCA5ODMxODAsIDQxNDQ4LCA0MTQ2MSwgCisgICAgMTI4ODIzLCAwLCAxMTM3MjEsIDExMzc1OCwgODgxOSwgMTI2NjMsIDAsIDQxMTg0LCA3NDAxNCwgMjMyLCA3NDgzNSwgCisgICAgMTIwNjQ2LCA5MTY4LCA2NTc4NiwgMCwgODMyOTMsIDEyMTAwNywgOTA5NCwgOTgzOTI2LCAxMTc1OCwgNjg0MjUsIDcxODg2LCAKKyAgICAxMDY0LCA0MjQ2NywgMTI4MDQ0LCAxMDExNSwgMTk5MjQsIDkyNzExLCAxMTM2ODIsIDc4NjIsIDY0NTUxLCAxMzIyNCwgCisgICAgODUxNiwgNDE4NjIsIDY2NjUwLCA3NTYxLCA3ODYxOCwgNjk3OTMsIDE4NzgsIDAsIDcxNDM0LCAyOTExLCA4MzA3NCwgCisgICAgNDExNzgsIDU0MjcsIDY0ODIzLCA4MzA2MiwgODMwNjYsIDM3ODcsIDQxMTc0LCA4MzA1NSwgNDE0NTgsIDY3MTQ3LCAKKyAgICA0MTQ2MywgNDI0MTMsIDExMjkyLCAyNDA2LCA3NzUsIDAsIDY1NTg0LCA2OTkyMywgNjA3NCwgOTYxOCwgNjgwNTYsIAorICAgIDEyMTQ4MCwgNDM0NDAsIDc0NTM5LCAxOTQ5MDEsIDQxNDM2LCAzNjU2LCA5MTc4MDUsIDEyMDYwMCwgNDE0NTYsIDY3Njk0LCAKKyAgICAxNTk5LCAxMTMzMywgODMxMzksIDY3MDMsIDg1MTMsIDgzMTM0LCAxNjEzLCA4MzEzNiwgNjg0NTYsIDEyNTk4LCA4MzEzMSwgCisgICAgODMxMzIsIDc4NzQ1LCA3NDUwMCwgNDE0NjAsIDEwMTQ1LCAxMDU0MiwgOTkzNywgNzg3NDYsIDY3MTQ0LCA5OTA1LCAKKyAgICA4MzE0NSwgNjU3MzAsIDgzMTQ3LCAxMjAzNzQsIDg0MjcsIDgzMTQyLCA1NTI0NiwgMTIwMzc2LCA0Mjg5NSwgMTE0OTcsIAorICAgIDY0Njg3LCA3NDAwOCwgNDI1OTIsIDM4NzEsIDk4MzU4NCwgMTI4MzA1LCA5MTExLCA1NzQxLCA4MzMyNSwgMTIwOTg3LCAKKyAgICAxMjAzNjYsIDExOTExMSwgMTExNTAsIDAsIDEyMDM2OCwgMTI4ODU1LCAxMTY0OCwgODMxMjYsIDgzMTI3LCA4MzEyOCwgCisgICAgNDE1ODcsIDcwMzkxLCA4MzEyMywgNzExMDgsIDQyMTEzLCA5ODM1ODgsIDEyNzE1NSwgMTIxNzIsIDgzMTIxLCA3MTQ0MywgCisgICAgNjUyOTgsIDY1NzIzLCA2ODI4OSwgNzM4NzEsIDY1NzI0LCA3OTI4LCAxMjAzNTQsIDk4MzA5NSwgNDE1OTUsIDczNzMwLCAKKyAgICA2NDY3MSwgNDIxMTgsIDczODMwLCA2NjA0MiwgMTAzNTUsIDk4MzExMCwgNzg3NSwgOTgzNjY5LCA0MTU5OCwgMzk5MywgCisgICAgMTIxMjY5LCAxNTQ1LCA0MDk3MSwgNTM2LCAxMjcwNzUsIDQzMDI5LCAwLCAxMjEwMDAsIDY1MTczLCA2NTI4NiwgMCwgCisgICAgNzAzMzEsIDE5NTAxMiwgMCwgOTQwNjUsIDAsIDQxMzc1LCA1NDAyLCA4MzAzNSwgMTI4MTkyLCAxNjg3LCAxMjA1MDMsIAorICAgIDkxNzgxNywgMCwgNzgxOTQsIDY0MzI2LCA0MDk2OSwgMTA1MjYsIDczNzQ3LCA4MzIzLCA0MDk2OCwgMTMzOSwgMTE3MzEsIAorICAgIDc4NzU2LCAxMjcxMDgsIDY1NDYwLCAxMjI0MiwgMTI4NTEzLCA4MDIwLCAxMDg0MywgMTE1NTQsIDkxNzg2NywgMCwgODI2NiwgCisgICAgNDEwMDYsIDY1NzIyLCA4MzA0MSwgMTA3MTAsIDc0MDQ1LCAxMTg5NDIsIDY3NjY3LCA2NDU2NywgMTE5MTU1LCA4MzMxMywgCisgICAgMTI4Nzc4LCA3MTg4OSwgNjc4NTcsIDEyMDY4NywgMCwgOTI5NTgsIDExNzU1LCA2NjMwNSwgNjgzMzIsIDAsIDEwOTE3LCAKKyAgICA5Mzk3OSwgMCwgMTEyNzIsIDIwNDAsIDQxMjQ3LCA0MTMyNiwgMTk1MDYwLCAxNzQxLCA0MjM3MCwgMTIyNywgODMxMTksIAorICAgIDgzMTIwLCAxMTQxMywgMTI2NTgzLCA4MzExNSwgNTI4MywgMTU4NiwgNDk3OCwgNjgwNTAsIDE5ODQsIDExODMwLCA0MzgxOSwgCisgICAgOTIyOTMsIDQwOTg0LCA0MjkwNCwgOTM3MywgMCwgMTI5MTYsIDYyODQsIDE5NDg4OCwgNDE2NjMsIDk4MzA5MywgMCwgCisgICAgNjgzMTMsIDkyMzcsIDkzODUsIDQxNjQ4LCAwLCAxMjg5NTMsIDIyOTksIDQxNjY2LCAxODMwLCA3Mzc4MywgMjA1NiwgCisgICAgNDEyODcsIDkyNjEwLCAwLCA3MTkxNywgNDIyMTksIDY4MDg2LCAxMjAzMjcsIDQxOTg3LCA0MTY3NiwgOTgzMDU5LCAKKyAgICAxMjA4MjMsIDEyNjU1MywgNDE2NzAsIDAsIDkyNTkwLCAyNzk2LCA1NTI5MSwgMTE2ODMsIDk5MDIsIDc0NTIxLCA2Nzk4OCwgCisgICAgMTE0NTEsIDgyOTk1LCA3ODg1NSwgNDI2MzEsIDIzNTksIDcxODkwLCA2Nzg0NCwgNzQxNjQsIDQxMjM4LCA1NDgsIDExNDA1LCAKKyAgICAxMzEzMywgNjQzNjgsIDEyNzI3MCwgMTIwOTI1LCA2NjI3MiwgMzk3LCA0MzYyMiwgNDIxMzksIDk1NDcsIDk1OTAsIAorICAgIDEyODIzOCwgMTYxNCwgNDM2NjEsIDY0MzU2LCA2NjMwNywgNjY1MSwgMTM1OCwgMTIwODcxLCA0MjgsIDk2MjAsIDE0NjYsIAorICAgIDc4MTEyLCAxMDk4MiwgMTEzNzg1LCAxMzMzLCA3MTA0LCA0MDcsIDY0MjUsIDEyODgzNCwgNzQyNTMsIDEyNzk5MywgMCwgMCwgCisgICAgNTgwNCwgMTE5NzYsIDg1NTQsIDkyNzIxLCAwLCA3MDE2NywgOTA1NywgNDIyOTQsIDQxMjE4LCAxMjUwOTcsIDEyMTI5MCwgCisgICAgNzgxMzcsIDE4ODMsIDEwOTUyLCA4MDQ4LCA3MDQ0MywgNDEyMjUsIDkyNjIxLCA0MjkxNSwgMTI4NjE2LCAxMjg1MTIsIAorICAgIDEyODYyOSwgNDQwNywgNzQ2NDgsIDY1ODA5LCAxMTgzNywgMTk0ODIxLCA4NDQ4LCA3MTQxLCA3NDE4MywgMTIwMzM0LCAKKyAgICAxMjY3NSwgMTI2NTksIDc0NjM0LCA0MjM2MywgMTIwNjI0LCA2ODA3NywgNTUyNzMsIDEwNzY2LCAxMjAxMiwgMjM4NiwgCisgICAgNjQ3MzIsIDkxNzAsIDkxNzgyMSwgOTEyMywgNjQ1ODUsIDEwMjk2LCAxMTkxNTgsIDcxNDAsIDEwOTc3LCAxMjczNzgsIAorICAgIDQxNjQsIDkwODEsIDAsIDEyMDU2OSwgNDIwNDksIDQyMDQyLCA4NzA5LCAxMjgyODMsIDEyNjQ3NywgMTIwNjM3LCA0MjQxOSwgCisgICAgNjQ3OTksIDQyMDQ3LCAwLCAxOTQ4MjAsIDg0NzAsIDExODA3LCA2NTg5NywgNTc3LCAwLCA5ODM3NjAsIDc0MzAwLCAwLCAKKyAgICA2ODA4NywgNzQ4NDAsIDEyNjQ3NCwgMCwgMTI4NzkxLCA5MjIyNCwgODczNiwgMTQxNCwgNDI2NDMsIDk2ODMsIDQzNDg2LCAKKyAgICA3NDM0NCwgMCwgMjUzNiwgOTgzOTQxLCA2NjMzMCwgMTIxMjM4LCAwLCAwLCAwLCAwLCAwLCAxOTQ4MzAsIDY2MzE3LCAKKyAgICA2OTk0NSwgNjYzMTUsIDIxMDYsIDY3ODA5LCAxMTI3MywgMTIwOTg2LCA0MzAwNCwgNzU0MSwgODI5ODgsIDAsIDk2MSwgCisgICAgNjQzMDcsIDY2MzI0LCA2NDkwNiwgMTI1MDgwLCAzMTA2LCA2NTkxNywgNDEyODQsIDE2OTYsIDk4MzEzMCwgODkxLCAKKyAgICAxMjEwNSwgMCwgNDI2MjQsIDEyODAyLCAzMjY0LCA4ODI0LCAxMzI2OCwgNDMwMDMsIDEwOTM2LCAxMjA4NzgsIDAsIDAsIAorICAgIDE5NDgyNiwgOTI2ODgsIDM1NjYsIDIzMjIsIDEyMDM3MSwgNzA4MzEsIDExNDQ5LCAxMjgxODcsIDQyODY4LCA0MTI4NSwgCisgICAgMzU0NywgMCwgMCwgMTEzNzQ2LCA5ODM0MDAsIDQzMjE2LCA2MDg5LCA3ODY4MiwgNjg0OTAsIDEyMDU3OCwgNDE3MCwgCisgICAgMTAyOSwgMTI3NzYxLCAxMjcwMzYsIDExOTIyNCwgNDIzNzQsIDAsIDc0NCwgOTI4ODMsIDExMzczOSwgMCwgNjU4MjMsIAorICAgIDEyNzgyNiwgMTExODIsIDM1NTEsIDkyOTM4LCA5ODM4OTEsIDQ2MjMsIDU1MjY4LCAxMjg3MzgsIDQ1OTgsIDk4MzE2MiwgCisgICAgNjUxMzYsIDEyNzEzNiwgMCwgMTI4MTY5LCAxMDg1MSwgMTIwODc2LCA2MTc5LCA5MjYwMiwgNjE4MCwgMCwgMTE5NTIsIAorICAgIDc0NTc5LCA3ODY0OCwgMTE5NzIsIDc4NjQ2LCA3ODY0NywgNzg2NDQsIDc4NjQ1LCAxNzcsIDc4NjQzLCA2MTc2LCAKKyAgICAxMjA1ODAsIDk4MzY5NiwgMTI1MTM1LCA2MTc3LCA5MDIwLCA3ODY1MiwgNzg2NTMsIDYxNzgsIDEyMDI0OSwgMTIwMjQyLCAKKyAgICAxMjgwMjcsIDY3NjczLCAyMjE0LCA4NzU0LCAxMjcwNTEsIDEyMDIzNywgMjEzNywgNDMwODEsIDE5NDY2MywgMTE5MTE0LCAKKyAgICA5MTM2LCA2Njg4OSwgNDQwMSwgNDEyODAsIDcwODAxLCA4OTc0LCAyMzA4LCAxOTQ3NTAsIDc0MTQ5LCAxMjgzMjcsIDIzMTgsIAorICAgIDk4MzE4MywgNjYzNjEsIDgxOTgsIDY1NjI2LCA2NDM2MCwgMTI2MDEsIDQyNTM2LCA0MzkzMSwgMTIwODI3LCA0MzkzMCwgCisgICAgOTI0NjIsIDY5NzAsIDU0MDQsIDQzMzMyLCAzNjY3LCA3OTM2LCAxMjkyNSwgMTI2OTg5LCA2Mzg1LCAxMjg0ODIsIAorICAgIDEyODQwMywgMTE4OTQ5LCAxMDg3NCwgNjU1MDUsIDEyMDAwMiwgMTI5MTUxLCA0MjA1MywgMjA3NSwgNDIwNTcsIDExMDgzLCAKKyAgICA0MjA1MiwgMCwgNjcyNjYsIDY3NjUxLCAxMjExMDQsIDk2NjUsIDkyMzAwLCA5ODM2NjYsIDEzMTgxLCA5MTc2MTcsIDAsIDAsIAorICAgIDcwMDg4LCA3NDE0OCwgMCwgNzA0MTksIDEyMDIyNSwgMTIwMjI5LCAxMjAyMjQsIDc0MTcyLCA0MTE0NSwgNjY0MDQsIAorICAgIDk0MDk2LCA3NDQyMiwgNDExNDgsIDg2ODMsIDc1OTQsIDExMzY4NiwgNzUwMzMsIDExOTA5MCwgMTA4NjksIDQzNDU4LCAKKyAgICA0MTE0NiwgOTI0MDcsIDExNDQxLCAxMjE0NTYsIDM1MTIsIDExOTYzMywgOTI5NjUsIDgxMDMsIDc4MTQwLCAxMjA4NDcsIAorICAgIDY1MTg0LCAxMTc4MCwgNDE1NjMsIDQyNzk2LCAxMjkwNTUsIDY5NzQyLCA0MTU0NCwgNjUxNDYsIDcxMzE0LCAwLCA3ODEwOSwgCisgICAgMTI5MTc3LCAxOTk0MiwgOTgzMjQ0LCAxMTg5MDgsIDc5ODgsIDEwNDM2LCA3NDI3MywgMzI3MSwgNzM4MDQsIDY0NzExLCAwLCAKKyAgICA5NDA2NCwgOTgzMDcxLCAxMjg2NTIsIDM4MDQsIDEzMDcwLCAxMTU1NywgNDIwNDQsIDAsIDEwOTUsIDAsIDM1OTksIAorICAgIDEyNzc3NCwgMCwgMTI4ODYxLCA4NTE0LCAwLCAwLCAwLCA3NDM0NiwgNjY2OTcsIDAsIDExNjg0LCAwLCA5MjQ4NiwgCisgICAgOTE3NjAzLCAwLCA0MjA0MywgNDMyMzIsIDY2Njc3LCA3NDkyNywgNDIwNDYsIDc0MTU3LCA0MDM2LCAxMjY0ODEsIDAsIAorICAgIDEyODIxMywgMTk0ODYxLCA4MzM1NSwgMTE5NTQsIDcwMzQ4LCAxNDUwLCAxMjk4NiwgMTM0MCwgMCwgNjU0NDEsIDkyNzIyLCAKKyAgICAwLCAwLCAxMjUxMTcsIDAsIDkxNzU0MiwgNzM4MTIsIDgzMDUzLCA2NTM5LCA5Mjk0OCwgMTI2NjA3LCAxMjA3MDIsIAorICAgIDkyMzkwLCAwLCAxMjA0OTIsIDQxMTkwLCAzOTczLCAxMTkzNjUsIDQ1NzUsIDQxMTkzLCA3OTgyLCA0MjksIDkxNzk3OSwgCisgICAgNzg4OTEsIDAsIDE5NDg0OCwgNjU3OTIsIDEyODQwOCwgODMyODIsIDY0MTcsIDExODkxOCwgNzgxNzgsIDAsIDEyODk3MCwgCisgICAgMCwgMCwgNDkxOSwgMTA1OTAsIDEyODU1NiwgNzc1NSwgMCwgOTI5NDIsIDY0NTQ4LCAxMjA1MDYsIDE2MjEsIDEwMjE0LCAKKyAgICA2NTEyNiwgNjgyNTMsIDEyNzAwNCwgOTgzNjE2LCAxMjE4OCwgOTgzNjY4LCAxNjE3LCA4MDUwLCAwLCA1MDE1LCAwLCAKKyAgICAxMTkxNzQsIDQyNTkwLCA3MDM1NCwgMTc1NiwgNzgxODEsIDAsIDY1NzY4LCA2MzUyLCA0MTg5MiwgMCwgNzU1NSwgMTMxMDMsIAorICAgIDU0MDgsIDI4MTcsIDEyMTQsIDY5OTE5LCA5MjMzNSwgMTIxMjA4LCAwLCA2ODIyNCwgMTIwODcyLCA0MTc2NCwgNzk1NywgCisgICAgODY4OSwgNjQ3MjMsIDEwNTYsIDQyODk2LCA3NDE0NywgMzU1OSwgOTgzOTE4LCA1NTI4NiwgNzA3MywgNjU4NTAsIDEyMzI3LCAKKyAgICA3MDg1MywgMTE5MDI4LCAwLCAxMjgxMjIsIDEyODQ0MiwgMjM0MSwgODQ1MCwgODQ4NCwgODQ3NCwgMTk0ODg0LCA2ODMyMiwgCisgICAgNzAwNzksIDg0NjEsIDY3NzIxLCAxMjE1MywgMTI3OTksIDAsIDQzNzA5LCA0MzcwOCwgOTQ1MSwgNzU3MSwgMTMwNzMsIAorICAgIDQzODQ3LCAwLCA2ODEsIDk4MzI1NCwgNzAzLCAxMjc1MTgsIDMyNzIsIDg3ODEsIDEyODk0LCA3MDA3NywgMTE3MDksIAorICAgIDkyMjg4LCA3MDUxNCwgOTgzOTAwLCA4MzE3NSwgNzE0MzYsIDExMzM4LCAxMjA3NjgsIDMyNzYsIDEyODk2OCwgOTE3OTg5LCAKKyAgICA2NTkyOCwgMCwgMTIxMzY3LCA2NTAyMSwgNjQ3OTUsIDc0NTc0LCAwLCAxMDA0NywgNzg4MTQsIDMyNjIsIDc4ODExLCAKKyAgICA0MjcxMSwgMCwgMCwgNjg0NzgsIDE2MywgNTc2LCA5ODk1LCAxNjU1LCA3MDEzMSwgNzQ1OTEsIDc4ODE1LCA3ODgxNiwgCisgICAgNjY4ODgsIDAsIDAsIDcwNTEzLCAxMDAzOSwgMTIwNDI2LCA1NjI2LCA1NjIzLCA1NzE3LCA1Nzc2LCA0MzQ4OCwgODM0OTcsIAorICAgIDY2ODg1LCA0MTU5MSwgMTEwMzYsIDY1MjUyLCA5MjM4MiwgMCwgMCwgMTIwMTExLCA2Nzg0OCwgMTI4MTI4LCA5ODM1OTUsIAorICAgIDk4MzQ3MiwgODg4NywgMTI3NTIxLCA3Mjk1LCAxMTAzMSwgOTgzMzM2LCA0MzE1NywgMCwgODk0NiwgMTAzNDgsIDEwNDEyLCAKKyAgICA4NzU1LCAxMTkxNTIsIDAsIDU3MTgsIDEzMjIxLCAwLCAwLCA3ODEzNSwgNzA1MTUsIDkxNzYxNiwgODgxMCwgNzQ0OTksIAorICAgIDY4NiwgMCwgNzEzNjIsIDQ2MTksIDExODk1NCwgNjY1NCwgNzM3NjksIDc0NDI2LCAwLCAxMjA0MCwgNjU2ODksIDEwMTI4LCAKKyAgICA2NTExOCwgNjgwMjksIDExOTE1MSwgNzQyMDUsIDkyNjUxLCAxMjg5MDIsIDI0MDEsIDY4MTQ0LCA4NzkyLCA5ODM2NDgsIAorICAgIDY4MDQ0LCA2NTQ1NSwgMCwgNzQzMjgsIDAsIDc0NTYxLCAxMjA3NjMsIDEyODg2LCAxMjA5NTIsIDY2NjI0LCAxMjY1NzgsIAorICAgIDQzNTU3LCAxMDMwMCwgMTAxNjEsIDEwMzk2LCA3MTIxMCwgNzg2MDIsIDExODk0NSwgOTk4NCwgNzM4NTEsIDMwMTAsIAorICAgIDY0NDEsIDcwMzQ5LCAxNDU4LCA0MTQ3NSwgNzI0MjksIDkzOTc1LCAxMjc5MTAsIDExNDc5LCAxMjEzNTUsIDEyMDM1NiwgCisgICAgNjM1MCwgMTI4NjQsIDY5Njc0LCA3MTQ3MywgMTA2MSwgNjQ3ODAsIDIwMDEsIDQzMTExLCA1NTIzMCwgMTI0OTQ2LCA0MDUyLCAKKyAgICAxMTM2NzMsIDc2MjYsIDAsIDEyMDkwNywgMTA0NSwgMCwgNTYzMSwgNDExMTMsIDEyNzU0NCwgMCwgNDM3MDcsIDc0MTI3LCAKKyAgICAwLCA5ODM3MTgsIDg0ODYsIDAsIDczNzU4LCAyMzM1LCA0MzYyLCA5ODMxOTUsIDEyNjU2MSwgNjkyMjEsIDEwMjUsIAorICAgIDEyNzI3NywgNDI2MjUsIDcwMzI1LCA3ODA4NCwgNDE0NDMsIDAsIDEyODIwNiwgMCwgMTc3NCwgMTUyMywgMTIxMzMwLCAKKyAgICA2ODA1OSwgNDE0NDUsIDc4MjM2LCAxMTIwNywgODU2NywgNDE0NDIsIDM5ODgsIDc0ODQzLCA3ODIzNywgMTE4OTEwLCAwLCAKKyAgICA2NTI3NCwgODU2NCwgNzgxOTksIDc4MjM4LCAxMjc1MTUsIDEyMTI3MiwgMCwgNDM0NDYsIDAsIDY2NTEzLCA2MjU2LCAKKyAgICA5MTc4MDcsIDU3OSwgNTUyMTgsIDEwMjA2LCA3ODE5NSwgNjM3NSwgMjY3MywgOTgzODg2LCAxMTgxNCwgMCwgNDQ4OCwgCisgICAgMTI4NzE2LCAxMjA1NTQsIDY4NDUxLCAxMDQ0NCwgMTE4ODQ2LCAxMjczMzQsIDExNzk5LCA3NDQwNywgNjg0NjYsIDQ0ODcsIAorICAgIDEyNzg0OSwgNDI4MzIsIDEwMzIsIDEyMDI2NywgNDM0NTAsIDc4MjU3LCA3MjAzLCAxMjQ5OTgsIDYxNCwgNzAzNjEsIAorICAgIDEyNzIxNSwgMTIwNjE1LCAxMTk2MjIsIDc4MjYyLCAxMjcyNzEsIDEyNzMyMywgMCwgNDMxMjEsIDEyNzIxMSwgMTI4MzY2LCAKKyAgICA5MjUxMywgMTA1MCwgNzU0OSwgMTIxMjYwLCA4Mjk5NCwgOTMxNCwgNzAzNjUsIDkyODk4LCA2ODAzOSwgMTI3MDYxLCAKKyAgICAxMDA1NywgNzA0MzQsIDEyNzMxMywgMTI4NTc3LCA2NjUwNCwgMTIwOTYzLCA4Mjk5MiwgMjMwNywgMTI4NDU2LCA2NDMzMywgCisgICAgMTI3MzEyLCAxMjgyMzAsIDczODczLCA5ODM3MTAsIDk0MDM1LCAwLCAxMjc5NzMsIDEyODcwOCwgNzA0NDYsIDEwMzYwLCAKKyAgICA2NzQ2LCAxMjA0NzMsIDkyMjQ1LCA0NDAsIDAsIDEzMDg1LCA5MjMzLCA3NDIxNiwgMCwgMTI3Nzg1LCA5OTU3LCAxMjgyODUsIAorICAgIDY2NDQ3LCA4MDQ2LCA2NDk2MywgNjU3NzcsIDEwMTI1LCA3NDIxMiwgNDI4MTksIDEwOTEwLCAxMjA0MjQsIDE1MjEsIAorICAgIDk4OTYsIDkzOTY1LCAxMDQ4NywgNjk4NzgsIDEyNTI3LCA2ODczNywgNzk3MCwgMTI1MDczLCAxMjg2NjAsIDAsIDY1NzY5LCAKKyAgICA1MjQzLCA5ODQ5LCA1MjM5LCA2NTc3MSwgMTIxNDI5LCAwLCA1MjM3LCA2OTcxNCwgNjg3NTYsIDEwMTAzLCA1MjQ3LCAKKyAgICA0NzY5LCAxMjkzMDIsIDExODk3NywgMTI4NzMsIDIyODMsIDkyOTMxLCAwLCAzMDA4LCA0ODk2LCAxMjgxMDIsIDEyMDg3LCAKKyAgICAwLCA1NTIzMSwgNDExMDMsIDkyMjU2LCA2NDU2NSwgNDc3MywgMTIwODQ2LCA3ODU0OSwgNzAwNzQsIDQ3NzAsIDY2ODkxLCAKKyAgICA5MTc1NjcsIDg3MzEsIDY1Mzc4LCA2NjkxMSwgMTIwNjE5LCA5MTIyLCAxMjgwMzMsIDEyNjYwMCwgNDc3NCwgMzAxOSwgCisgICAgOTk5NywgMTI4MzQsIDAsIDk0NTYsIDEwMjE1LCAxMjA1NDcsIDAsIDc4NTU2LCAwLCAxMjEzMzIsIDc0Nzc2LCA0MjgxLCAKKyAgICA0NzY4LCAxMjA1NzIsIDQxNTM1LCA0MDk5LCA5MDE3LCA2OTk5MywgOTgzNjkyLCA3ODA5NSwgMjIyNSwgNzgwOTYsIAorICAgIDExODk0NiwgMTIxMDk3LCAwLCA3ODA5OCwgMCwgNDI4MTQsIDg4MCwgMCwgMTEzNzY0LCA2Njg3MCwgMjEzNCwgMCwgCisgICAgMTAxMTYsIDk4NzcsIDkyMzI5LCAxMjg5NjAsIDAsIDcwOTUsIDgzNzksIDc0MTE2LCA2Nzc4LCAwLCA3ODA5MCwgODI0MywgCisgICAgMjQyNywgMTI4MTQxLCA3MDkzLCAwLCAxMTU4NSwgMTk1MDAzLCA5OTYyLCA4Mjk5MCwgMTIyMjMsIDEyODQ4NSwgOTI0MzAsIAorICAgIDE0MzQsIDEyMDI1NCwgNTYzNywgMTE1NzMsIDAsIDAsIDAsIDE5OTUxLCA4MzM4OSwgNzQ0MTksIDAsIDE5NDY4NiwgCisgICAgNTUyODMsIDAsIDcwMzYzLCA3NDQzNywgMTE1NiwgODc0MCwgODMyOTUsIDM3ODIsIDY0MzMxLCAwLCA0MTM3MCwgMTAxNCwgCisgICAgODI2MSwgMTIwOTU2LCA5MTc1OTYsIDEwODM1LCA5MTc5NjYsIDY1NTM2LCA4MzI5NCwgMTIwNDYzLCAxMjUwNTEsIDc3MDIsIAorICAgIDExODgyNCwgMTI4OTc2LCA0MzAxMCwgNjU3NzksIDY1NzgzLCAxMTUwLCAxMDU0NywgNTcwMCwgMCwgMTIwNjAzLCA2NTM4MywgCisgICAgMjMzOSwgNDI1OTQsIDU2OTcsIDExODc4OCwgNzUwMTgsIDEyODU3NiwgNzQ5MjMsIDQyMjU3LCA1Njk2LCA5MjY3NywgCisgICAgMTIwNDY1LCAzODYyLCA5NjQzLCAwLCA3MDE4MywgNzYzNCwgNjUxNjcsIDk4NDUsIDAsIDAsIDU3MDEsIDk3MjIsIDQxNDkwLCAKKyAgICAxMjg3MTksIDE0MjYsIDY4MjE3LCA5ODM2MTQsIDY4NDQ3LCA0MjIwNCwgNTUyNzAsIDg1NzEsIDY3NDAzLCA3ODA2NywgCisgICAgNDM4NTksIDc4ODE4LCA5MjcxOSwgNDMxODIsIDEyMTg0LCAwLCA0MjAyMiwgMCwgMTAyODEsIDAsIDU2NTAsIDQzMTk0LCAKKyAgICA2NDcxMiwgMTA3NDQsIDc4ODg3LCA5OTAsIDU2NDcsIDAsIDczODcsIDc4NzM0LCA0MTExNCwgMTE0NzcsIDU2NDYsIAorICAgIDEyODc5LCAxMTAxOCwgMTI4MzYyLCAzOTQ1LCA5MjU4OSwgOTgzNDY2LCAxOTQ5ODksIDc4ODgzLCAwLCA3ODIxMiwgCisgICAgMTI3NzQ2LCAxMDIwLCA3Mzc2MywgOTgzODM1LCA3ODczMSwgNTY0OCwgNjQ3NDgsIDEyMDkyMCwgNzg3MzMsIDEwMjA1LCAKKyAgICAzNTQ1LCA5ODM1ODUsIDY5ODQsIDEyODAwOCwgNzQwNTEsIDEyODkwMSwgNDMyNDIsIDEyMDQ1OCwgMjY2NywgMTI4MTczLCAKKyAgICAxMjUwMzcsIDAsIDk5MTEsIDAsIDY1MDIwLCAxMDA5NywgMTE5MTY2LCAxMjcxNDUsIDk4MzY2MiwgMTE4ODM2LCA5ODM3NDgsIAorICAgIDc4MjA4LCAxMTQwLCA3ODQyNiwgMCwgMTAxNTksIDAsIDAsIDgxMjgsIDEyODY0NCwgNjgzMjYsIDE5NDkxMSwgMTgxNSwgCisgICAgMTk5MTAsIDg5MCwgMTI0OTM1LCAzMjY3LCA5MjI5MSwgMCwgMTAxMjMsIDEyMTM5OCwgNDQxMCwgMTA0MSwgMTA1NzYsIAorICAgIDYzNTQsIDkyNTgxLCA1ODAsIDc0MjMyLCA5ODM3NDYsIDEyODM0NywgMCwgMCwgMTI4MDk4LCAxOTkzOCwgNjU5MDYsIAorICAgIDEyNzgxOSwgOTE3ODExLCAwLCAzMjk4LCA1Mzc1LCAxMDE0MiwgMCwgODIxNSwgOTI2MzMsIDYxMzQsIDQxMjQ2LCA2NDQwMiwgCisgICAgOTgzMTQ3LCA2OTg5OSwgMTk0OTM4LCAwLCAxMjE0MjYsIDQxMzgyLCA5MTc5MjcsIDEyODY1MywgNTE3MywgNjUzNDgsIAorICAgIDUyNywgMTIxMTc0LCAxMTM3ODIsIDc4NDY5LCAxMjgyNTAsIDc4Nzk3LCAxMTkxNSwgMCwgMCwgMTAwNzIsIDAsIDQyNjk1LCAKKyAgICAyMzI5LCA0MjI1MCwgMCwgMTExODcsIDY5NjY3LCAxMjI0NSwgMTU2OCwgOTQwMzMsIDgzNDYwLCAwLCAxMTM3MDUsIAorICAgIDkxNzkxMCwgMTEyMDEsIDkyNzA4LCA3NDc2OSwgMTI2NDcwLCA2NzY4MCwgOTA2OSwgNjE0NCwgMCwgMTE5ODQwLCA3MzgyMiwgCisgICAgMCwgMTI4MDEwLCA2NDkxNywgNDE1MjEsIDExODkzNCwgNDk0LCAxMzI1MCwgOTIyNTAsIDY1MDk4LCA2MzY0LCA5NTYsIAorICAgIDExMzc5MiwgMTI4MzAsIDEwNDYyLCA3Mzc0MCwgNzM3MzQsIDAsIDAsIDk4MzczOSwgNjY0NDksIDEzMjYzLCA3NDI4MSwgCisgICAgNjkyMTcsIDEzMTcxLCAxMjc3OTYsIDEyMDU2NCwgMCwgNjM4ODUsIDEyNzI1MSwgMTA0NCwgNDEyNzYsIDEyODM2MywgMCwgCisgICAgMCwgNDIwNjgsIDExNzk1LCAxMjQ5ODUsIDAsIDEyNzIwMiwgMCwgNDI0NTAsIDM5MDcsIDAsIDY0NTI2LCAxMTgyOSwgCisgICAgNjgxOTcsIDEyMjk1LCAwLCAxMTQ3NSwgNzAzMjksIDMwMjAsIDExNTM3LCAwLCA2NjQ0MSwgMTIwNzYxLCA3MDk4LCAKKyAgICAxMjUwNzEsIDAsIDEwNTcsIDU2NiwgNDI2OTYsIDEyNzIzOSwgMzAxNiwgNDIyNzQsIDQzNDY0LCA2NjQ5MCwgMTI5MjEsIAorICAgIDY2NTcxLCA3ODQ3MiwgNzEyMDcsIDMwMDYsIDQ2MjAsIDEyNzIzNywgOTgzMzMwLCAwLCAwLCA2NDY1OSwgMCwgMTI3NzQ5LCAKKyAgICA1NTI1MywgNjM1NywgNjM2MiwgODYyNiwgNzEzMzcsIDIyMTYsIDkwOTAsIDY1Mzc3LCA0MTU5NiwgMCwgNDI5MjAsIDE2OTgsIAorICAgIDAsIDY0NDc3LCA5MTc4NTMsIDQzODEzLCAxMDUzLCAwLCA3ODI2OSwgMCwgOTI5NzcsIDEwNTIsIDEwNTEsIDQ1OSwgMTA2MCwgCisgICAgNzQzNDksIDY2NDc5LCA2NzY4OSwgNjY4NzEsIDkxNzg0NSwgNzAzMjcsIDQyNDkwLCA2ODksIDY1MDgsIDQxNjMsIDQyMjk4LCAKKyAgICA4NjM5LCA2NjY0MSwgNDI0NiwgMCwgNDM1MTQsIDEyMTMwLCA5ODMzMDgsIDQyMzM3LCA2NDU5NiwgNjQzNzUsIDY2NDgxLCAKKyAgICAxMjc4NTAsIDk4MzE0NCwgMTI3ODI4LCA2MzU5LCAwLCA0MzQ3MSwgOTgzNzY4LCAwLCA4MzM0NSwgNzUwNjUsIDAsIDYzNTgsIAorICAgIDYzNjEsIDE5MjYsIDYzNTYsIDkyNjI3LCA3ODk4LCA4MTEwLCAxMDkzNSwgMCwgMTAwNjksIDU4MzAsIDEyNzc3MywgCisgICAgNDM2ODUsIDc0MzA3LCAwLCA0MjkxMCwgODMzMDEsIDg2OTMsIDc4NjExLCAxMTk1NjUsIDEyODYyMSwgMTIwNDEzLCAKKyAgICA5MjE5MiwgMTIxNDU0LCA2NTg5NCwgMTk0Njk0LCAwLCA2NDI5NiwgOTgzNjgxLCA5ODM2NDQsIDE5NDk1OSwgMTE5MTg3LCAKKyAgICAyMTM1LCAxMTgzNiwgMCwgMCwgNzg4NjksIDQyMzEzLCA1NTc5LCA5MjQxMiwgNzAzODQsIDEyOTExMywgNDM4NTQsIAorICAgIDcxOTEzLCA1NTc4LCAxMTg0MCwgMTI4MTE1LCA0MjAyMywgNjIzNCwgNTY2OSwgOTIyNzUsIDc4NjIwLCAxMjExNzEsIAorICAgIDY4ODMzLCA5MjI1NCwgNjgyMDIsIDU1ODMsIDAsIDAsIDQyNDI2LCA1NTgwLCA0MjI3NiwgMjkyMywgODkyLCAyMjIwLCAKKyAgICA0MjQ2NSwgNDEzMzAsIDE5NDk4NywgNTc5NSwgNjU1MTIsIDY4Nzc0LCA2NTcwMiwgNjg3NzAsIDEyMDgwMSwgNjUyNTEsIAorICAgIDY4MjI4LCA2NTcxMCwgMTI4Mzk5LCAxMjg0MjksIDY3NjcyLCA2ODc4MywgNTM3MCwgNzA0NjUsIDI5MzEsIDE2MzgsIAorICAgIDEwOTY2LCAxMDE4OCwgNjU4NzgsIDExODg0OCwgMCwgNjk2OTQsIDY5ODc5LCA3NDU4NSwgODE3MiwgNDIwMTcsIDkyNzU2LCAKKyAgICAxMDg0NCwgMTIxMDE2LCAxMjgxOTUsIDkyNDI0LCA2Mzc0LCAxMTk5OTgsIDEyMTA3NSwgMjg2LCA3ODAyMywgMTA2MiwgMCwgCisgICAgMTE5OTk5LCAwLCA3Mzk1LCAxMjc3ODMsIDEwNzAsIDY0OTAwLCA3MTUzLCA2MDk1LCA0MTg2NSwgMTk0NjQwLCAzMDE1LCAKKyAgICA2ODc0MywgNjg3NDAsIDUyMTEsIDY4ODA1LCA2NDAwLCA2ODc0OSwgNjg3NDgsIDY4NzYwLCA4MTg5LCAxMTI3NiwgNjg3NTQsIAorICAgIDcwMjg0LCAzNzIsIDEyODgyOSwgNjg3NjEsIDExMzc4MywgNDIxMDIsIDQxNTg1LCAxMjc3NTEsIDAsIDQyMTAxLCAyNzYsIAorICAgIDc4NDAyLCA2NzQyNywgMzMsIDY3NDI1LCA2NzQyNCwgOTAwNywgNjc0MzAsIDQxNTg4LCA2NjAzMywgNDI3LCAxMDc2MywgCisgICAgMTE4ODE5LCA3MDg3MiwgMTI3ODg0LCA5ODM5NDMsIDEwMzEsIDYyNTcsIDkyNDg5LCA0MjEwNCwgMCwgOTgzOTgwLCAyMzI4LCAKKyAgICA2NjgzNywgMTA3MSwgNDI4OTksIDEyNTA4OCwgNzQ4NDgsIDEyMDg1NywgMTEzNzkzLCAxOTQ5ODEsIDEwNDcsIDAsIAorICAgIDE5NDk0MywgNDI5MDgsIDEyODQ4MCwgNjk3MjMsIDEwNjUxLCA3MDM1NiwgMCwgMTI1MTEzLCA3MjQzMywgNjY4MjksIAorICAgIDcwODE3LCA1NzExLCA0MTYzMywgMTIwOTgsIDY1NTcxLCA5MTY2LCAwLCA1NzEwLCAxMjg1NTEsIDY3OTAsIDY1MTY4LCAKKyAgICAxMzIxNiwgOTgzMTUwLCA2OTcxNiwgNjk3MjYsIDAsIDY0NjExLCA0MTYyMywgMTk1MDAxLCA1NzE1LCA2OTY1NCwgNzE5MTUsIAorICAgIDAsIDU3MTIsIDI3NjEsIDQxNjIwLCA2ODEyNCwgMzA3NCwgNTcyMiwgMCwgODY0MywgNjg1MjUsIDAsIDExODkwNiwgMjc1NywgCisgICAgMTEwNjcsIDk3MTgsIDY2NDE5LCA4OTEwLCAxMDY4OSwgNjQ3OSwgMCwgMCwgNzExNzMsIDc4NjA3LCA5MTk2LCA2OTY3MCwgCisgICAgMTI1MDcwLCAwLCAxMjgzMzgsIDEyMDMzNSwgMTE4OTExLCAwLCA5NDA0MywgMTI5MTk0LCAwLCAwLCAxMjAwMTAsIDczNzk1LCAKKyAgICA4NzAxLCA2ODEzMCwgMTE5NjE2LCAxMjA1MjIsIDAsIDQyNDc3LCAxOTQ5OTQsIDEyMTIzLCA0NDk1LCA0MzU2OSwgMCwgCisgICAgMTI5Mjk2LCAwLCA2NDk0NiwgMTA5OTIsIDAsIDc0NTY2LCA3MDMzNiwgMTEzNjg4LCA5MzE4LCA5Mzk4NiwgMTMyNDksIAorICAgIDQyOTAyLCA3MzgwOCwgMCwgNjU0NTcsIDQyMjQ5LCA3NjM5LCA0Mzk5NSwgNjc4NDUsIDQyNjQxLCA1NDU0LCAwLCAwLCAKKyAgICA3MDM2NiwgMTIwMDA1LCAxMTk1ODUsIDEyMTIxMiwgNTA4NCwgMTIxMTg5LCAxMjExMzQsIDc1MDYyLCAwLCA3MzMsIAorICAgIDc0NjQ2LCA3ODAxNCwgNjg3NjcsIDc4NDM1LCAxMTIwNCwgMCwgOTIxOCwgMTczMSwgMCwgOTI5MzcsIDcxMDcwLCA2Nzk5MCwgCisgICAgOTgzMTI1LCAwLCAwLCA3MDMyMywgMTIxMzcxLCA5MjQ5MiwgNTE1NSwgMTIwMDAwLCA1MzU4LCA5ODM3NDQsIDAsIAorICAgIDkxNzc2NywgNjQ0MjQsIDcxMjM2LCAzODQwLCA2NDMxNCwgNDE0MzIsIDEyMTMxNiwgNzgzMTUsIDY4NDMwLCA2Nzk4MCwgCisgICAgNDMyNTMsIDY1OTQzLCAwLCAzMzcxLCAxMDk4OCwgMTI3OTYwLCA4NzcxLCAxNDc5LCAwLCAwLCAxMTA5LCAxMTU4MCwgCisgICAgNDM2NTcsIDY0NjAxLCAxMjIwNSwgOTI3ODIsIDAsIDY0NTA3LCA4ODY4LCAzOTksIDY3OTc4LCA3NDg0MiwgOTgzMjg2LCAKKyAgICAxMjEzMzYsIDEyMTQ5LCAxMzA4OCwgNTUxLCAwLCAxMDE1NiwgMTIxMTksIDkyNTcyLCAxMTg5MTYsIDI1NDQsIDY1MDc0LCAKKyAgICAxMTkyMTEsIDk4MzI5OCwgMCwgNzgwMTEsIDM1MSwgNjg3NjQsIDAsIDEyODcxMywgNTUyMjksIDAsIDc0MjY4LCA3ODAwOCwgCisgICAgMTI4MDk0LCAwLCA0MjM3NywgMCwgMCwgMCwgMTEzNzY3LCA3NDMyMCwgOTAxMywgNDA1NCwgMCwgMTk0NTgwLCAxMTM3NDAsIAorICAgIDAsIDczOTYwLCA1NTg1LCA2NTg4MSwgMjU0OSwgNzQ0NjksIDc0NDU3LCAxMTEwNCwgNTU4NCwgODM1OCwgMTI2NDczLCAKKyAgICA2NDIxNSwgNjY4NjQsIDEwOTE5LCA3MDQ4MCwgNzk4MCwgMTI2NjAxLCAxMTM2OTgsIDIyMTgsIDQxODAwLCA1NTg5LCAKKyAgICA4Mjk4MywgMjY2NCwgNDE2MTMsIDU1ODYsIDExODg5MCwgMCwgMTEzNTYsIDEyMTEyMCwgMTk0ODMzLCA0MzQ1MiwgNjcyNDUsIAorICAgIDkyOTkzLCA0MjU3MywgNjY4NzksIDgzMzI5LCA2NzgxMCwgNjk3NjcsIDc4NzUyLCA3NDM5MiwgODEzNSwgNjQ1MCwgCisgICAgMTAwNTUsIDc3OTk2LCAxMTk5NDgsIDk4MzE3MywgMTE5MjI1LCA1NjU3LCAwLCA5NjI2LCAxMjE0NTMsIDc3OTk0LCAKKyAgICAxMDE3OSwgNTY1NCwgMTI5MzksIDkyNTczLCAxMjA3OTksIDcxODYwLCAwLCA1NjUyLCAxMDk0NSwgMTk0NTk5LCA2NjQ4NiwgCisgICAgMCwgMzY2MSwgNzg2MywgMCwgNjgwNjksIDk4MzY3NSwgNzAzMzIsIDEyNzE5NCwgNTY1OSwgMTk0NjA2LCA3ODY5MiwgCisgICAgNjY3MjksIDU2NTUsIDk4MzYyNiwgNDIxNjgsIDEyMTEzMSwgMTA1NSwgNzExNzEsIDcxODg4LCA2NjMxMCwgNzQwMzAsIAorICAgIDcwNTE2LCAxMjE0NiwgNzAzNjIsIDczOTU2LCAxMTYxOCwgMCwgNDI3MjAsIDkyOTQ5LCAxMDI3MiwgMTAzMDQsIDEwMzY4LCAKKyAgICA0MjUxOCwgNTk0LCAxMDI0NCwgMTAyNDgsIDc0MDcsIDc0OTc4LCA2NDg3MCwgNzQxOTEsIDM0NjcsIDcxMDczLCA3ODgxLCAKKyAgICAzMzMxLCA5NDYsIDEwMjMxLCAxNDk1LCA4MTMxLCA3NDMzMCwgMCwgOTU2MiwgNjkyMjIsIDY1OTI3LCAwLCA3MDAzNiwgCisgICAgNjk2OTYsIDY5NzY5LCA2NDY1NiwgOTE3OTk1LCAwLCA5MjQwOSwgNzAwNTYsIDU2NjYsIDY1MjI3LCA1MzE4LCA2Mzk5NCwgCisgICAgMTE5NTk2LCA5MDkxLCAxMDc5OCwgNzg2NjQsIDc4NTA4LCAxMDE4NiwgOTgzMjY1LCA3NzMyLCA5ODM3MjQsIDY0NTU2LCAwLCAKKyAgICA5ODM5NzksIDU2NjgsIDc0NDQ1LCA3NDk4MiwgNzQ2NDUsIDU2NzAsIDExMzc5NSwgMTI3Mjk3LCAxMTgyMCwgMjk5MiwgCisgICAgNzgyNiwgNTY2NywgMTk5NTIsIDEyMDgwNywgNzQ5ODEsIDEyNzQ5LCA3NDU1MSwgNjc3NTcsIDAsIDY2NDk2LCA0MzYxLCAKKyAgICAxMTkyNjAsIDEzMDYsIDkyODYsIDE0OTcsIDEyODI4NiwgOTQwMDQsIDcwMzU5LCAwLCAzNTcxLCAxMzI0NywgNTg3NCwgCisgICAgNzk3MywgNjYzNTMsIDY4NDM1LCA3ODI3OCwgNjc4OTYsIDQzMTkyLCA3NDYyMSwgNzgyNjUsIDU1MywgMTEzNzY4LCAKKyAgICAxMjcwMTIsIDkzMDUzLCA1ODI5LCAwLCA0NTg3LCA3ODI4NSwgNjU5MTIsIDE5NDkxOSwgMTI3NDYsIDEyODY3MSwgNzAzMzgsIAorICAgIDExOTkyNCwgNTYzMywgMTE5OTI3LCA3NDI1OSwgOTQxMDIsIDk0MDk5LCA2NDkwNSwgOTQxMDUsIDk1MTIsIDk0MTAzLCAKKyAgICAxMjc0MiwgNjQ0MywgOTgzODA2LCAwLCA5MTM1LCAxMjg4NjMsIDQxNTY0LCAxMjE1MTcsIDU1MjE5LCAxMjg4MzIsIAorICAgIDk4Mzg1MSwgMTk0ODc3LCAxMjE0OCwgMCwgNzgyOTcsIDAsIDY0MjU2LCAwLCAxMTY2OSwgMCwgNTYzNCwgNDUyNCwgCisgICAgMTI4OTAzLCAxMjQ5MzYsIDEyODM5MCwgODMyMTUsIDI0MjUsIDY1MTgyLCAxMjg3NjksIDQzNjM2LCA1MjIxLCA3ODQxMCwgCisgICAgMzI4LCAxMjEwMzEsIDY4NzM2LCA2OTgxNSwgNTYzNiwgMTE5OTE3LCA1MzI5LCAxMjEyOTMsIDU2MzgsIDgzMTY2LCA3OTQwLCAKKyAgICA2NDkzOCwgNDMyMjMsIDQzNzYwLCA1NjM1LCAzMzczLCAyOTg2LCA3ODI5MiwgNzQyMjMsIDM0MzcsIDY4NzYzLCA2MjAzLCAKKyAgICA0MjQ3LCA3MTE2OSwgMTE5MjAsIDgyNzQsIDY4MjQwLCA5ODM2NTgsIDE2NTcsIDQxNTYxLCA2ODc3OCwgNzgyOTUsIDU2MzksIAorICAgIDI5NTQsIDU2NjAsIDU2NDAsIDc4MzAzLCA5ODM2ODUsIDcxMTc5LCA0MjIyNywgNjgzMDEsIDgzMzIyLCA0MTYzNywgCisgICAgNjc4NzIsIDEyMTEwNSwgNzgzMTAsIDQxNjI1LCA0MzM2MiwgNzgzMDksIDEyMDcxMywgMTE3MDUsIDU2NDIsIDAsIDU0ODYsIAorICAgIDAsIDQzNTYsIDExNzEwLCAwLCAxMjA1MSwgNjk5MzgsIDAsIDU2NDEsIDgyNTksIDEyNjk5NCwgMTA1OCwgMCwgNjc2MzAsIAorICAgIDAsIDEyODkyNywgMTE0NCwgNzg3NTAsIDEyNzI5MywgNDIyMjgsIDk4MzcxNCwgNzM4OTAsIDExODk3MiwgMTI3MzUyLCAKKyAgICAyODAwLCA4MzIwOSwgNTY0NSwgNjQ5NjQsIDg2NTIsIDI1NDcsIDY2NDg0LCA0MzYzNCwgMTIxMzU2LCA1NjA4LCA2NTg5MCwgCisgICAgNDM4MDgsIDE5NDk3MiwgNjc2MjEsIDY0OTMyLCA5MDAwLCA3MTIwNCwgNjcyMzUsIDkyNjczLCAxODY1LCAxMjg3MDYsIAorICAgIDU2MTMsIDY2NDAxLCAxMjExNDUsIDAsIDU2MTAsIDk4MzIyNiwgNzExOTksIDY1ODI2LCAyMDY5LCAwLCAxMDc4NywgCisgICAgNDM5OTksIDI5OTcsIDExOTkzMiwgNTYwOSwgNzgzMTYsIDY1MzE5LCA3ODMxMywgMTIzMTYsIDU4NzUsIDI0MTIsIDgzMjA2LCAKKyAgICA4MTg2LCA5ODA3LCA3NDI2OSwgNjYyOTQsIDEzMTMwLCA2NTg3NCwgNzE4NTUsIDU4MDcsIDExMzY3OCwgMTAwMzAsIDUzMDYsIAorICAgIDEyMzY0LCAxMTg4NjMsIDkyOTcwLCAxMTcwNCwgODMyMDIsIDkyNTgzLCAxMDIxMSwgMCwgMTIwNTc5LCAwLCAxMjEwNjMsIAorICAgIDExNzA2LCA5NzEwLCAxMjUwMjIsIDgyOTg1LCAxMjA2NTUsIDQxMywgNjU2MjMsIDcxMTgsIDgzMTY3LCA5MTMzLCA3NDI2MiwgCisgICAgOTE3OTY0LCAxMDQyLCAxMjUwNjgsIDY0Nzc5LCAxMjE3MSwgMTE5MjQwLCA2MTg1LCA2NDc3NiwgNDk4NCwgMTIxMjY2LCAKKyAgICA3MDgsIDExMzkxLCAwLCAxMjI0MSwgOTI3MjAsIDgzMzk5LCAxMzA4LCAxMjEyNTgsIDI1MzQsIDgxMCwgMTI1MDg5LCAKKyAgICAxMjA5MzMsIDEyODAxNiwgNzE4NDksIDcxODY5LCAxOTE3LCAzMDAwLCAxMjUxNDAsIDEyMDE4NCwgMTIwNzM5LCAyMzY0LCAKKyAgICA2NjM4NywgNzQ0NzAsIDY2NjE4LCA2NTY4MCwgNjY0MTEsIDEwMDI3LCA3MTg0MSwgMTI4MTU0LCAxMjMzNywgNzQyODMsIAorICAgIDEyNzM2OCwgOTgzMTY3LCAyOTgwLCA3NTUsIDY5Nzc0LCA5MzEsIDEzMTI0LCA2ODA2OCwgNjM2MywgMjc0OCwgMTIxMDIyLCAKKyAgICAwLCA2NTA0MSwgOTIyNzYsIDQ0MDExLCA4NzMwLCAxOTQ5OTcsIDEyNzg1NCwgNzgzMTIsIDcyNzQsIDExOTI1MCwgOTI5ODgsIAorICAgIDcyNzUsIDc4MzA0LCA5MzUsIDEyNzA1MiwgNjU4NDAsIDM3NywgNDIzMjUsIDExNjQ5LCAxMjczNjMsIDY1MjUzLCA2NDMwMSwgCisgICAgMTI4ODM1LCA3ODMwOCwgNDIzNDEsIDY1Mjg0LCAyNDE3LCAwLCAxMjg4NCwgMTk5MTIsIDc5MDcsIDEwNzY4LCA3ODMwMCwgCisgICAgMTk0OTk4LCAxOTQ5MTIsIDEwNjczLCA2ODc3OSwgNzI0OCwgNjg3ODYsIDQzNTE1LCAxNzgxLCA1NDk2LCAzNjI3LCA2MiwgCisgICAgMTY0OSwgNjc4NzYsIDk2NCwgMTIxMDM0LCA2NjQwMywgNzgyMjYsIDY2MzkzLCA5Mjg5NywgNzAzNTUsIDY2NDA5LCAwLCAKKyAgICA4MzM5OCwgNDM2ODksIDEyNzkxMSwgMTMxNDIsIDc4ODEyLCA0MjQxNSwgNjY1NzUsIDQ1NDIsIDY5OTA5LCA0MzU0NywgCisgICAgODMwMjgsIDAsIDc2NzcsIDI5OTEsIDQ5NDYsIDQyNDU0LCAxMTU2NSwgNzk0OSwgMCwgNjk3NTksIDExMzQxLCA0MjQ5NCwgCisgICAgMzA3MywgNjU2MjUsIDk3MTQsIDExNjkyLCA0NjU3LCAwLCA3MDgxMCwgNjQ3OCwgOTg5OCwgNDM2NzMsIDY1MjM3LCA2MjQxLCAKKyAgICA3MTA2LCA0ODc3LCAxMjkxMDgsIDYyMzgsIDAsIDEwNTQ4LCAxMjcwNDksIDQ0MDksIDAsIDAsIDY0Nzk4LCA3MDgwNSwgCisgICAgNTM0NiwgMTI4MjQwLCA5NDA0NywgNjIzNywgNDg3NCwgNjY4NTEsIDkxNzYsIDkyODgyLCAxMjExNTMsIDY1MjMxLCAKKyAgICA2NTg4NCwgMTI2NzgsIDc4NzQ4LCAxMTg5MTIsIDExMzc4LCA0NDAxOCwgNDI3ODUsIDI0MDgsIDMyNTEsIDExMjAzLCAKKyAgICA5ODMxNTksIDU2ODUsIDAsIDI0NjEsIDExMDUyLCA3MDkxLCA1MzQyLCA4MzE3LCAxMjE0NDYsIDY4MTYzLCA1MzQwLCAKKyAgICAxMjA1NTksIDEyNzgyMCwgNDM2MzUsIDczOTI4LCAxMjUwMDEsIDcxMDY5LCA4MzMxOCwgMCwgODMzMTcsIDY1NDgyLCAKKyAgICAxMjEzOTQsIDkxNDIsIDAsIDY4NTA2LCAwLCAxMDkzOCwgMCwgMTE4NzkwLCAxMTgyLCAyNTQyLCA0ODI2LCAwLCAxMjY2NDgsIAorICAgIDcyNDM4LCA1MjksIDg1ODAsIDEyNzQ5MCwgMCwgMTA1ODYsIDEwNzkwLCAxMDgzOSwgNjYwMjMsIDQxNTkzLCA0MTIwNywgCisgICAgNjg3NDQsIDk4MzgyNSwgNDE1OTQsIDIyNSwgNDI4MjgsIDAsIDY3ODIxLCAxMjEyMDAsIDExMzc2LCA3NDM3OSwgMTA3MjEsIAorICAgIDY3NjY0LCAzNDM4LCA0MjA5NywgNjg4NjIsIDExMDg0LCAzMTk0LCA0MTg3MCwgMjY2LCA3ODMwNSwgMTIwMTgzLCA0MTg3MywgCisgICAgMTIwNTc1LCAxMTMyNCwgMTIwNTMxLCAwLCA4NDIwLCA2NDkxOCwgMTI4ODM5LCA0MTg3MSwgNDEzMzgsIDM3MzQsIDc3MzQsIAorICAgIDQzNjgzLCA4NzUwLCA2NjYwNSwgNjYwMTEsIDkyNTE0LCA0MDk2NSwgMTI3OTM3LCA5ODMyMTYsIDUxNjEsIDEwNTcyLCAKKyAgICA5MTc1NTgsIDQyOTA2LCAwLCA2NDM0OSwgNzI4NywgNDIxNjIsIDEyMDQwNiwgOTgzNjQzLCAxMjY2MDUsIDExMTY3LCAKKyAgICA2OTIyMCwgMTIzNTksIDQzNDI5LCA0MTM2OSwgMTY5NywgMTIxOTEsIDAsIDY4NjMzLCA3Mjg2LCAwLCA2ODYzNSwgMTAwMzEsIAorICAgIDExMzc2NiwgOTg3MCwgNjc3MjYsIDg2MjAsIDY1ODI0LCA5MTc4NTUsIDExOTM4LCAxMjEzMDgsIDcyODUsIDk4MzU1NywgCisgICAgMTE5NTc3LCA0MjY3OCwgNjY4NDIsIDQzNjc3LCA0MTU4MywgMCwgNjU3OTksIDkyNjIzLCAwLCAxMjkxNjgsIDEyODI2NywgCisgICAgNzgxNjksIDY2MTk5LCAwLCAzNjA5LCA2ODYyNCwgNzAyODAsIDgzMiwgMTIwNjkzLCAxMjA3NzAsIDc4NDczLCA2NjAwNywgCisgICAgNzg0NzEsIDY1NzAzLCA3MTI1NiwgMTI4NTE3LCA0MjczMiwgNTE4MCwgOTI2OTksIDQxMzk1LCA0MTUzMCwgMTE2OTEsIAorICAgIDY0NzczLCA5MjIxNCwgNzQwMDIsIDEyNzc5MCwgMTIwNTQ4LCAxMjg2NDUsIDYzNDgsIDI0MywgMTMyMDAsIDEyMDE2MCwgCisgICAgNjAyNCwgOTIzMDksIDk5NzksIDEwMDM3LCA0MTUyOSwgMTA2NDgsIDg1MzgsIDQzNjg3LCAwLCA5MTc4NDQsIDQyODUsIAorICAgIDY2MTk1LCAxMjEzNzAsIDQyMzAsIDkyODg2LCA3MzY3LCA0MzI1NiwgOTIzNTMsIDc1NjMsIDQyMzc2LCA5ODMyNzEsIAorICAgIDY4NDQyLCAxMjA1MTIsIDAsIDAsIDIxNCwgMTI4NTc4LCAwLCA3NDg1NiwgNjU4OTMsIDEyMjA4LCA5OTczLCAxMjgzODYsIAorICAgIDY2MzExLCA2NTU4OSwgMTI4Mjc3LCAyNjAzLCAwLCA3MDE1NSwgNzg2MjIsIDcwMDQ3LCAxMjcyNzMsIDYwMjIsIDE5NTAyMywgCisgICAgMjg4NCwgMCwgMTE2MjAsIDAsIDQzLCAxOTUwMjAsIDEyNjgyLCAxMDE2LCA0MTEwNywgMCwgNDExMjEsIDM4ODUsIDkyLCAKKyAgICA2NTQ1NiwgNjQ2MDgsIDAsIDc0ODAxLCA3MDg1NSwgMjA3NCwgMTEzNzQyLCA3ODI4MywgMCwgMTI0NTMsIDcwODQ3LCAKKyAgICA5ODM4MjYsIDc0MjQxLCAxMjY1NjgsIDY3OTEsIDEyNDU3LCA3ODI2OCwgMCwgNjYyNzgsIDAsIDc4Mjc5LCAwLCAwLCAKKyAgICA5MjM1OCwgNjY2MzcsIDc5OTUsIDg3NTksIDQzNDIxLCA3ODI3NywgMTI0NDksIDEyODU1MiwgNzEyMjQsIDQzODY4LCAKKyAgICA4NzUyLCAzMTk3LCA0NzIwLCAxMDE2NSwgMTEzNzY1LCAxMTkyNDksIDExMzcxNSwgMTE1OTUsIDY0ODkzLCAxMTg5MDUsIAorICAgIDQzNDM1LCAxMjQ5NjQsIDEyNTAzMCwgNDk5MywgMCwgNjE2OCwgMTA5MzQsIDE5NDYsIDc0MSwgMTIwNjUwLCA1NDk0LCAKKyAgICA0NjM5LCAxMjc1NTksIDE5OTAsIDExMTA3LCA0NDk4LCA3NDE2OSwgNjc3MzYsIDgzMjczLCAxMjcyNzIsIDY5NzM0LCAKKyAgICAyOTYwLCA3Mzc3OSwgMCwgODk2OSwgMTI4MTE3LCA0MzQyNCwgNzM5NTksIDEyNjQ2NCwgMjk1MCwgMTE5NTc5LCA2MjEwLCAKKyAgICA2NTc1MywgMzcwLCAxMjEzNjAsIDAsIDAsIDQ5NTMsIDE5NTAwOSwgMTIxMDU0LCAxMTM3MDgsIDAsIDY5MjMwLCAwLCAKKyAgICAxOTUwMTAsIDY1Njg4LCA3NDk1MSwgNTA2MywgMzUxNywgMjk2NCwgNDM2NjMsIDkxNzc2MiwgNjM0NCwgNzQ3OTEsIAorICAgIDEwNTY2LCAxMDE0NCwgNjYzMzMsIDgyNTIsIDcyOSwgNjYwMTYsIDc4MjUzLCAwLCA3MTMxNywgNjQ5MjMsIDEyMDU3MSwgCisgICAgNDM2NjksIDkwMzIsIDc4MjYzLCA3ODI2NCwgMCwgNDEyMTUsIDAsIDY1ODgzLCAwLCA5MTc3NzQsIDc0OTE0LCAzNzYxLCAwLCAKKyAgICAwLCA3MDA2OCwgMTIwNDA4LCAxMjkxMiwgMTE5MDEyLCAzODUwLCAxMjgxOTEsIDk4MzI1NiwgMTI4Mzg5LCAwLCAwLCA5MDgsIAorICAgIDAsIDg2MTEsIDEyMTM4NCwgMCwgNzQ2NDIsIDQzNjkxLCA0MTE5NywgMCwgODk3OCwgMTIwNTQwLCAxMTkxMzUsIDQxNTg2LCAKKyAgICAxMDUyNywgNzA0MjYsIDkxNzg0OCwgMzg0OCwgNzg3MzksIDc0OTE3LCAxMjc1MzYsIDY1MjQxLCA1MzM2LCA3NDg4MywgCisgICAgMTI4Nzg2LCA2NjMsIDAsIDEwNzgwLCAwLCAwLCA3ODc2NywgOTgzMjU5LCAxMjcxNjMsIDY4MTkzLCAzNDcsIDAsIAorICAgIDkxNzU0NCwgNzg3NzUsIDY0Njc1LCA0MTU4MiwgNzg3NzQsIDc4NzQ0LCA2NTU3OSwgMTI5ODAsIDY4MDQ2LCAxMjE0MywgCisgICAgNjk2NTcsIDc4NTEyLCAxMjg0OTMsIDExMTUzLCA0MTgwNCwgNzg1MjMsIDAsIDc4NTI1LCAwLCAxMjg4NTksIDQxNTg0LCAKKyAgICAxMDY4MSwgMCwgMTIwOTc5LCA3MzkzOCwgNzM3ODEsIDEyODAyMiwgNDgwMCwgNjY2NjEsIDAsIDY2MzA2LCA2NDcxNSwgCisgICAgNjYzODQsIDk1MTgsIDY2MDksIDEwNDM0LCA3MDg0NSwgMTEzMTksIDEwOTcsIDEyODk2NCwgOTE3NTY0LCA0MTczMCwgCisgICAgMTI5MTgxLCAxMjE1MDEsIDczODQ3LCA3NDg0NSwgNjUxNzIsIDQxNzI4LCA0MTcyMSwgMTk0NzgwLCAxOTQ3NjksIAorICAgIDEyMTQ5OSwgNDEyMDMsIDEyNzA1NiwgMTMxMTAsIDQxNzI2LCAxOTQ4NTYsIDY3MDc3LCAxMDAwLCA2OTY1MSwgMTI3NTA5LCAKKyAgICA0MTE0MCwgMTIwOSwgNzM5NzgsIDEyNTA1OSwgNzM3NTAsIDEwNzMsIDYzMjEsIDc3ODc4LCA0MTEzOCwgOTgzOTY4LCAKKyAgICA2ODIxMywgNzgwMDAsIDEyMTY3LCAxMTE1LCA0MTYwNSwgOTc5NCwgMTE5OTA0LCA2NzY3MSwgNTUyNDgsIDEyMjM3LCAKKyAgICA3ODc4NywgNjYzMTQsIDY1ODcsIDkyOTAsIDc4NzgyLCA3ODc4MywgOTIzMSwgNzg3ODEsIDI5NTksIDc5MjYsIDAsIAorICAgIDkxNzYwMSwgMTI4ODMzLCA2NDM5OCwgNzExMjQsIDExOTk3MCwgMTIzMTEsIDExOTE4MSwgNzg3OTYsIDY4NzY4LCA3ODc5NCwgCisgICAgNzg3OTUsIDY4NDM0LCA3ODc5MywgNjY2NzAsIDExMzc5NywgMTI4NTc5LCAxMjI5MCwgMTIwMTY5LCAxMjkwOTMsIAorICAgIDExOTg3MywgNDIxNDIsIDk5NjgsIDgyMDUsIDAsIDUxMzEsIDExMzY5NCwgOTYyNywgNDM2NDYsIDc4NTQyLCA3ODUzNSwgCisgICAgOTgzMjEyLCAxOTQ0LCAxMjQ4LCAxMDE0OCwgMTI3NzU1LCAxMTk5OTAsIDExOTk5MSwgMTI3MDEsIDc4Mzc2LCAxMTMwOCwgCisgICAgMTE5OTk1LCA5ODM0OTMsIDExMzcwMiwgNjY4MzYsIDY1MzA1LCA2NTEwMCwgNDAzMSwgNDI3OTQsIDEyMDAwMywgNzA3NSwgCisgICAgODE1NCwgMTE5OTg1LCAxMjAwMDcsIDQxODE3LCA3MzkzNCwgNDIyNzUsIDEyMDAxMSwgMTIwMDEyLCA3ODUyNiwgMTIwMDE0LCAKKyAgICAxMjAwMTUsIDYwNDEsIDEyMDUyMCwgNDE4OTksIDk4MzI4OCwgODAwMiwgMTI4MzY3LCA0MzY0LCA3MzczMiwgOTgzNTcwLCAKKyAgICA2NDMzMiwgMTIwOTc2LCA3ODEzLCA5MDY0LCAxMTk5ODYsIDEwMTI0LCA3NTI2LCA4NjAxLCA3MjgxLCA2ODI0NiwgNzI3OSwgCisgICAgMTIwNDEsIDE0MTgsIDEwODg1LCAxMjY3MywgMTIxMTUyLCAxMjEzODEsIDk2NjAsIDkxNzkyOSwgMTMwMTIsIDQ1NzEsIAorICAgIDkxNzU4OCwgMCwgMTE4OTQwLCAxMjA3OCwgMjk3MCwgMTI5MTIyLCAxMDkzMywgMCwgNzc4NzAsIDEyMTI0MywgNzc4NDEsIAorICAgIDAsIDQxNTk5LCA3MDE1OSwgMTIxMzQyLCAxMjA4ODUsIDEyOTUwLCA5MjE2MCwgMzQ4NiwgOTgzOTczLCA3ODMxMSwgNDIzOSwgCisgICAgMTI4MDczLCAxMjc3OTksIDY2NTExLCA2ODA2NiwgMjYzNywgNjQ2MjksIDg0NjAsIDY2ODM0LCA4NDc2LCA5ODM5NzUsIDAsIAorICAgIDY4MzEyLCA3ODQ4OSwgNjU2NzMsIDEwMTksIDc4NDk1LCA0MTQ4LCAwLCAxMjI4OSwgMCwgNDMxNiwgMCwgMTMxMTksIAorICAgIDg0ODgsIDU0MTIsIDY2MjQzLCA5OTM1LCA5Mjc3NywgNzM4NjQsIDk4MzIwMywgNDE3MzQsIDgyMDYsIDc0MDgxLCA5MTYzLCAKKyAgICAzMjg2LCA5MDcyLCA1ODY3LCAxMzMwMiwgNzYyMiwgNzEyMCwgNDE3MzYsIDkyNTQ2LCA0MTczMSwgMCwgNzQwMCwgNTQxNiwgCisgICAgNjg2NjMsIDExODkyNCwgMTA4MTcsIDAsIDQxNTM5LCAxMjcyODQsIDY2ODUzLCA3Mzk2MywgNDE4NTUsIDQxODY3LCAKKyAgICA2NTU2NCwgMTEyNzcsIDY1ODkyLCAxMTUzNiwgMTA2MjAsIDkyMjcyLCA3MTE1LCA2NjAzMCwgNzM5MzIsIDU0OTgsIAorICAgIDYzODc2LCA0MTUzNiwgMCwgNjgyMDQsIDkyNTg3LCAzNDU5LCA4OTk3LCAxOTQ3MTksIDkyNzE0LCAwLCAxMjc3ODIsIAorICAgIDkyNTEyLCAwLCA2NjM3NywgNjk3ODEsIDAsIDEyNDk3MiwgNzg1MTEsIDMxNjEsIDI5NSwgNzEyNTcsIDAsIDkyMjIzLCAKKyAgICAxMjEzMjgsIDc4NzQyLCA5MDE2LCA0MzQ1NCwgNjM5MDMsIDYzOTAyLCA0MzUwMSwgNjgyMTAsIDM5NzEsIDk4Mzk1OSwgCisgICAgNzAwNjMsIDI5NTIsIDc4NzY1LCAxMTAzOCwgMTA5MDEsIDYzOTAwLCA2Mzg5OSwgNjM4OTgsIDY4MDk1LCA2NjcsIDEyMzMyLCAKKyAgICA2Mzg4NywgNjA4NiwgNDE3MjIsIDAsIDUxNzIsIDAsIDk4MzI4MCwgNDE1OSwgOTgzNTYyLCAwLCA5ODE1LCA2Mzg4NCwgCisgICAgMTk5MzQsIDYzODgyLCA0MTE5OCwgODU1NSwgNjM4NzgsIDYzODc3LCA0MjQ2MCwgNjA1MCwgNDI3MDgsIDYzODgxLCAKKyAgICA2Mzg3MiwgMTIwOTQxLCA0MjQyMSwgMTk1MDM1LCA0MTcyMywgNjM4NzUsIDYzODc0LCAxMTQ2MCwgNzQzMiwgMTkxMywgCisgICAgNDE5MTMsIDYzODUyLCA2Njg2OSwgMTI4OTcxLCA0MjM0OCwgNzM4OTIsIDY3NTIsIDQ0NiwgNDE5MTEsIDEyNzkwMSwgCisgICAgNjM4NTEsIDYzODUwLCA0MTkxMCwgMTI4NjM3LCA2Mzg0NiwgMjk3MiwgMTI5MzIsIDcyNjIsIDY5OTY4LCA2Mzg0OSwgCisgICAgNjM4NDgsIDYzODQ3LCAxMTM3NDksIDY1NzAsIDgzMDIsIDcyNTksIDYzODQyLCA0MTc4LCAxMDc0NiwgNzI1MCwgMTMyMTQsIAorICAgIDEwMDQxLCA4MTA1LCA2Mzg5MiwgMTI3NzgwLCA2OTk2OSwgMTEwNSwgNDE4MCwgMTI3Nzg2LCAxMjA5NCwgOTQ5NywgMCwgCisgICAgNjM4OTEsIDYzODkwLCA2Mzg4OSwgNjM4ODgsIDU1MzgsIDk5ODcsIDAsIDkyNzM5LCAxNjc4LCAxMzI3NCwgNTUyLCAKKyAgICAxMTg4MzQsIDQ0MDEwLCAxMDc4NSwgMCwgMTExOTIsIDQ1NTcsIDc0NDU5LCA5MTU5LCAxMDE3MSwgMTMxMjUsIDYzODYwLCAKKyAgICA1NTQwLCA2Mzg1OCwgNjM4NjUsIDI4MSwgMTMyNDIsIDYzODYyLCA3NDE1NCwgMCwgNTUzNiwgNjU1NjgsIDk1NzQsIDEzODgsIAorICAgIDcxOTAyLCAwLCAxMDc3LCAxOTUwMDAsIDY1MDk5LCAxMTUzMSwgNTgzNCwgMCwgMCwgOTE3Nzg5LCAwLCA0Mjc3MywgCisgICAgMTIxMzMxLCAwLCAwLCAxMTkyMjAsIDEyMDkxMiwgMzY2MywgMTI3MDI3LCAxMTEyLCA3MDMzNSwgODY4NiwgMTI2NjExLCAKKyAgICA1MzM0LCA2NTA4MSwgNDMyNDksIDc0Nzc4LCAxMjc5NjgsIDExMDc3LCAxMjUwMTcsIDY1MDksIDAsIDUzMjcsIDc4Nzc2LCAKKyAgICAxOTkwNywgNjM4NjksIDM0NzgsIDc1ODMsIDc2NzksIDI5MDMsIDAsIDMwMDEsIDExNTgsIDg3NDUsIDQzNzQ2LCA3Mzc0OCwgCisgICAgNjM4NjYsIDc4NjI2LCAxOTE1LCA0ODQ2LCA2Nzc1NSwgNjYzNzEsIDExODk4NCwgNDIxMDUsIDI5OTAsIDEyMDEyOCwgODA1LCAKKyAgICA2OTIzOCwgNjQ0MzgsIDEyMDcwLCA4NzYwLCAxMTE3LCAxMTM3NTAsIDEyMjEyLCAxMjAxMjMsIDY1MTc0LCA0MjM1NywgCisgICAgNjM4MzUsIDYzODM0LCA5ODM5NDcsIDc4MjQwLCAxMjIyNSwgNjM4MzgsIDYzODM3LCA5ODM4NTMsIDcwMTczLCA2MzgzMywgCisgICAgNjA0MiwgNjYzNjAsIDgwODMsIDEyODE2NiwgOTgzNzMzLCA2MzgyMSwgNjM4MjAsIDYzODE5LCA2MzgxOCwgOTgzOTA0LCAKKyAgICA1MjI3LCA5MDQ3LCA2MzgyMiwgNzQ3OTcsIDYwOTEsIDAsIDEwNjkxLCA1NjAsIDU2NDMsIDgyMjYsIDExOTU3OCwgNjM4MTIsIAorICAgIDYzODExLCA2MzgxMCwgNjM4MDksIDIyODksIDYzODE1LCA2MzgxNCwgNjM4MTMsIDYwNDcsIDE1OTcsIDEyMDE0MywgNzgwLCAKKyAgICAyMDYsIDcwMTI2LCA0OTM2LCA2NTE0NywgODE2OCwgNjM5MzAsIDIwNzYsIDEwOTMsIDk4ODIsIDYzOTM0LCAyMDgyLCAKKyAgICA2MzkzMiwgNzUwNTAsIDYzOTI5LCAzNTQ2LCAxNjA1LCA3NzkzNCwgOTgwNiwgNDM0NzIsIDc3OTMzLCA4NDAwLCAxMTM0MywgCisgICAgMjA4NiwgMCwgNjM5MjYsIDI5ODQsIDU5NjgsIDkyODcsIDAsIDQ2MTgsIDQyMjA5LCAxMTEzNywgMTMxNjksIDUyOTAsIAorICAgIDIwODksIDE2OTUsIDEwNzQzLCAxMDg4LCA2MzgyNSwgNzI2OCwgMTA4NCwgMTA4NSwgNjM4MjksIDEwODMsIDEwMTMxLCAKKyAgICA3MjgzLCAwLCA2Mzk3MCwgMTIxMTY1LCAxMDkyLCA0NzU0LCA3MjczLCA1MjUyLCA0NDAxNiwgNDM2MjcsIDEyNzkyMSwgCisgICAgMTI4OTIwLCA3NDA4LCAxMTgwOSwgODMyMjAsIDEyMTE4MSwgMCwgMjk2NSwgNzI1OCwgODgwOCwgNjY1NzIsIDEwODksIAorICAgIDQxODcsIDYzOTM3LCA0MjExOSwgNDIxMjAsIDExMTA2LCA5NDAsIDU3ODcsIDEwMDk5LCA2MzkzOCwgMCwgNzQ0OTQsIAorICAgIDEyNDYzLCAyOTk0LCAxMjUxMzYsIDExODgyNywgNjg1MjIsIDk2NjQsIDcwODM0LCA3Nzk0MCwgNjc4OTIsIDc3OTM4LCAKKyAgICA3NDM0MywgNjczNzAsIDAsIDY2MCwgMTAxMjcsIDY2NiwgOTAyMiwgNTUzMiwgNDM2NjcsIDU1MzMsIDEyNTgwLCA3ODUwNywgCisgICAgNjExOCwgMjIyLCA5NzksIDM4ODQsIDk4MzM5NCwgNzQxNTEsIDgzMjI3LCA2NTAyLCA5ODM4NTUsIDExMDg1LCAxMjEyNjEsIAorICAgIDYzOTUxLCAxMjQ2NSwgOTE3ODYyLCAwLCAxMjg3ODIsIDYzOTQ2LCAxNzA3LCA2MzkyNCwgMTI0NjEsIDYzOTUwLCA2Mzg5NywgCisgICAgNjM5NDgsIDYzOTQ3LCA2Mzk0NSwgNjAzOCwgNjM5NDMsIDYzOTQyLCA2NDY4NSwgNjM4OTUsIDY1ODM4LCAyMjc2LCA3Nzc2LCAKKyAgICA5NDA3NiwgMTIxMDg2LCA5MjQ2NCwgMTIwNDQ0LCA2OTczMCwgODAxLCA0MzE2NSwgMTY5MCwgNjM5MTksIDYzOTE4LCAKKyAgICA2MzkxNywgMTMyNzcsIDQzNjU5LCAxMjk1MSwgMTIwNjM4LCA5OTA2LCAyMDU0LCAyMzM0LCA3ODUxNSwgNjM5MTYsIDU0ODMsIAorICAgIDYzOTE0LCA2OTczNywgNjM5MTEsIDU0ODQsIDYzOTA5LCA2MzkwOCwgMjUzOSwgMTIwMTAyLCA0Mzk4MCwgNTQ4NSwgMCwgCisgICAgNDI2OTcsIDkwNjEsIDU1MzQsIDEwNjcyLCA0NTAyLCA2ODA1NywgMjUzLCAwLCA2ODIwOCwgMTIwNDM5LCA5MjAzLCAKKyAgICA3NDIzMSwgMCwgMTE1MzAsIDY4NjM0LCA2ODY2OCwgMTIxMjQyLCAxMTEyNywgMCwgMTA0NzQsIDQzNDI2LCAxMzI1NywgCisgICAgNDIzNTQsIDEyODA5OSwgOTgzNjk4LCA3MDA0NCwgMTk1MDY1LCAwLCA4NDEzLCA2Njg0MSwgMCwgNTY5MywgNzI3MiwgMCwgCisgICAgMTMyMDksIDY0NDcwLCA2NTgzMSwgNzQzNTAsIDE5NTA2MywgMCwgMCwgMCwgMTI2NjM5LCAxMjAwOTcsIDAsIDk0MDc4LCAKKyAgICA2Njg0MCwgMTI3MTY1LCA2NjYwOCwgMzExMSwgNDE4NjMsIDg4MDQsIDQyOTEzLCA3ODM0NywgNzI3MCwgMCwgNjY2MDYsIAorICAgIDY2MjgsIDEwNzYsIDc0MzMsIDE0MzYsIDczODQ0LCA1NTIyNiwgMTI4MzUzLCA2Mzk4MiwgNzM5MywgMTI4MDcsIDQzNDEzLCAKKyAgICA2MzkwNiwgMTU5OCwgNjM5MDQsIDcxMTg3LCA3MDM5MywgNDE3MjksIDQ0MjMsIDEzMDcsIDExMzY5MiwgMTA1MTUsIAorICAgIDQxNTg5LCAxMjg2OTgsIDEyODkxOCwgNjIxOCwgOTI5MTcsIDE0MzAsIDAsIDEyNjUxMywgMTIwNjA2LCA3ODc1NCwgNTQxMywgCisgICAgNzYxOSwgMzI1NSwgMzQ5MywgNzQwMzIsIDExNTQ5LCAxMDczNSwgNDE3NDMsIDczOTM3LCA2ODAxLCA5ODM2MzMsIDQ1MTgsIAorICAgIDEwOTkwLCA2NTA3MywgNTE2NywgNDQ4MSwgMzc3MSwgNjcwOTMsIDI3MTAsIDk4MzU5MywgNjYyNzcsIDQxNzI0LCA2NzcxNiwgCisgICAgNDMwNzMsIDQxNjkwLCAxMjQ3OSwgOTgzNjM1LCA4MzgwLCAxMjEwNzEsIDcxODUyLCA3MDA0NiwgMTYyOCwgMTIxMjI5LCAKKyAgICAxMjg4MTcsIDEyOTA2NywgNjUyNjIsIDYzMzMsIDEwNzgzLCAxMTE3MiwgMTIxNDczLCA2Mzg1NSwgNzA4NDAsIDExMzY3OSwgCisgICAgMCwgNTMzOSwgNzQzMjMsIDEyMDk0NiwgMTMwMDQsIDY2ODQzLCA0NDU3LCAwLCAxMjc3NTYsIDE5NDgxOCwgMTI3MTE2LCAKKyAgICA1Njg0LCA4Njc4LCAxMDkxNCwgNDM2MzIsIDU2ODksIDY1ODA3LCA3MDgxNCwgNjg0NjQsIDEyNjMzLCAxMjg3MCwgNjk3MDUsIAorICAgIDY1MTgzLCA1Njg4LCAxMTkyNiwgNjAzMywgNjMxMCwgNTY4NiwgMTE5MDc2LCA3NDI1MSwgMCwgMTIwNjQ3LCAxMjg5MzAsIAorICAgIDUwLCAxMDU1OCwgOTg3MSwgNDI2MTIsIDQzNjU1LCA3NDQwMywgOTgzODE4LCA3NDI4NCwgNjY0NjgsIDY2OTA1LCAxMzI1OSwgCisgICAgNDQ0OCwgMTE5MTUwLCAxMjE0MDYsIDgzMzQ5LCA3MDA0MywgMTMyMSwgMCwgMTA2NDAsIDExNTM5LCAxMTUxLCAxMjExODYsIAorICAgIDkxNzYwNywgMTI0OTU4LCAxMjcwNzksIDcxMTA2LCAxMjc4NTIsIDAsIDAsIDk4MzA3NSwgMTI1MDEsIDY0NjA0LCAKKyAgICAxMjg2NTcsIDExNTI3LCAxMTg4NzAsIDg4MTIsIDk4MzcwNiwgMTE1MzgsIDg2NzMsIDEyNjUwLCAxMTAyMCwgMCwgNjY0NjcsIAorICAgIDIxMDUsIDgwODcsIDc4MTYzLCA2OTYzMiwgOTg5NCwgMTI3MTM3LCAxMjc4NTYsIDY5OTk1LCA0NjM2LCA1NTI2MiwgCisgICAgNzg1MTMsIDQ1MTUsIDIzODIsIDAsIDEyNzA1NSwgOTgzNjk1LCAxMTM3ODAsIDAsIDExODk2OCwgMTIyNzcsIDEyMTIzOSwgCisgICAgMTE5OTUsIDkyNTUzLCAxMjEwMDYsIDEyMTU4LCA3MDE3MCwgODc0MSwgMTAxOTcsIDY4NzgwLCA5MjQyNiwgMTIxMjg1LCAKKyAgICA2NTMxLCA4MzA1MSwgMTI3ODQ2LCA0NzMsIDQzNDE1LCA5MjkzNiwgOTgzNjUwLCAxODczLCAxMDg3LCAxMjQ5NjYsIDAsIAorICAgIDc0MjgwLCA3ODUyNywgNjY0MzksIDQzMjE4LCA5ODMxMjMsIDE5NDcxNiwgNzIzNywgMTI1MDQsIDcxMTEzLCAxMjY1NTksIAorICAgIDEyODc0OCwgMTIwODg3LCA5NDg5LCAwLCA3MDg0MywgNDM4NCwgNzQyMjAsIDYzODQ1LCAyMDU4LCA2OTc0MSwgMTMyOTUsIAorICAgIDQzMTkxLCAxMjgwMzAsIDEyODU3MSwgMTE1NCwgMzg1NywgMTIwNSwgMCwgMCwgNjA1NSwgMTI5NTgsIDEyMDcwNiwgCisgICAgNzQxNjgsIDEyODM4OCwgNzA4NDYsIDQ0MjEsIDEwNTkyLCAwLCA0OTUsIDY2NDAwLCA0MTcxMiwgNzk4MywgNzA4MzMsIAorICAgIDkzOTk3LCA5ODMzMzIsIDYzNDcsIDc4NzE1LCA3NjU0LCA0MTcxMCwgNDE5NiwgMCwgNDM3LCA0MTcwOSwgNzM3NzIsIAorICAgIDcwODMyLCAwLCA5NDY1LCAxMzI5MCwgMTE5MTgwLCA0OTk3LCA2NDMwNiwgMTIxMzA5LCAwLCA0OTk5LCAxOTQ2NDIsIAorICAgIDY3NDAxLCAxMjY1ODIsIDQ3MTEsIDEyMDc2OSwgMTIwNjAyLCAyNzM5LCAwLCA4MDQ0LCA3NDMxMywgMTk0NjQzLCA0MTc4OSwgCisgICAgMTI4MTQyLCAxMDgwOSwgNjYyNzksIDAsIDAsIDE3NzksIDY2MDAsIDY2MDEsIDQxNTQzLCA1MzI1LCA2NDIsIDY0MTg3LCAKKyAgICAxMzA1OCwgMTIwNDQ5LCAxMjg3NSwgOTgzODA0LCA5MjE4NiwgMTMyMjksIDcxODQ1LCAxMDU3NSwgNDMzOTksIDE5NDU3NywgCisgICAgMCwgNDE3OTEsIDExMDQsIDAsIDk4MzcyNSwgMTA2NTUsIDk4MzMzNCwgOTgzNTYxLCAxMjAxNjQsIDAsIDEwODIsIAorICAgIDEyMTAyNCwgODQyOCwgNjU2OSwgMCwgMCwgNzg1MzQsIDY5ODQ5LCA2NzgzLCAxOTQ2NzEsIDEyOTkzLCA4MDQ5LCA0MTU0OCwgCisgICAgNDQwMjEsIDY0NTgsIDY0NzI4LCAxMjg4ODIsIDQ3NjEsIDYzODI4LCA0NzY2LCA2NDYyMywgMTI3MywgNDM0MDcsIAorICAgIDEyMDY3NywgMTE4ODc2LCAxOTUwNDUsIDY5MTIsIDEzMTMsIDYzMjIsIDEwNDgzLCAxMjg2MjcsIDQxNTQ1LCAxMjY0NjUsIAorICAgIDkyNDQ5LCAwLCAxMTIxNiwgMTIxMzA3LCAwLCA3ODYyNCwgMzQ4NCwgNzQzMzcsIDAsIDAsIDg1MDMsIDUxMjIsIDQxNTI3LCAKKyAgICA3MTkxMCwgNjYzMjAsIDcwMTYxLCA3NDkwNywgMCwgMCwgNDE1MzcsIDY2NDUzLCA4MzAzLCA4MjgyLCAxMTgxNywgNzM4NTcsIAorICAgIDEwMDAzLCA3Mzg1OSwgNjU5MDQsIDczNjMsIDE2ODYsIDAsIDcwMTE1LCAxMTQ2NywgMzY2NCwgNjU5MjEsIDY0Mjk5LCAKKyAgICAxMjQ5MzksIDEyODQ2MiwgMTI4MDAxLCA0MzI0LCAxMjYsIDQyMjQ2LCA3NTAzMCwgNjk5ODQsIDY3NzI1LCA2NTkyNiwgCisgICAgNzc0NCwgNjg4NTksIDc0Mjc3LCA2NjI4MywgNzgwNTIsIDQzODE3LCA2OTY2LCA0MzgyMiwgODEzNiwgMCwgNjU2MDAsIAorICAgIDE2MzMsIDAsIDEyNjYxNCwgNDc2MiwgMTEwMywgNzA4MjcsIDcwMTU3LCA0NzY1LCA5ODM0OTQsIDEzMDc4LCAwLCA0NzYwLCAKKyAgICA2MzgyNywgMjA1MCwgMTA4NzEsIDQzMTk5LCAxMTAyLCAxOTQ2NTIsIDQyMjM2LCAxMjg4NjcsIDEyNzA3MiwgMTE1NDYsIAorICAgIDc0Nzk0LCAzMzcsIDEyMTE5NiwgNDI1OTEsIDg2MjcsIDEyMjc5LCAxMTExLCAwLCA3NTA0NywgNDcwNywgNjgyMDYsIAorICAgIDEwMTQzLCA3ODgzLCAxMjE0NDQsIDc4ODAsIDQ1MjIsIDg2NDUsIDU3MDQsIDEzMDEwLCA2OTc5NiwgODMwNCwgOTI5ODIsIAorICAgIDE5NDY4OCwgMTE5NTc1LCAyMjkzLCA3MDE5NSwgNjY2NTQsIDEyOTA3NywgOTI2NzYsIDAsIDEzMDA4LCAxMjExOTQsIAorICAgIDQzODUsIDEyODczNiwgMTMwMTEsIDEyNTAwNCwgOTI1NjksIDExOTE2MSwgMTMwMDksIDE2MCwgMjY3NywgNzAzODgsIAorICAgIDk4MzI4MiwgNDE3OTMsIDY1NzYzLCA3NDIyMSwgNzA3OTAsIDQxNzkyLCA0Mjc3MCwgOTQwNTQsIDY1NzYyLCAxMTg4MjksIAorICAgIDQzODIxLCA1NzA5LCAxMjgyOTYsIDcxMDc2LCA0MzgxNiwgOTgzMDg3LCA5ODM4OTYsIDEwNzksIDM4NjcsIDU3MDgsIDAsIAorICAgIDAsIDQzNzk3LCA1NzA2LCA2NDc2OCwgNTcwNSwgODc5MSwgNDAwNSwgMTIxMDkxLCAxMDIzNywgMTA5OTEsIDEyODgxNiwgCisgICAgNDM0NTksIDkxNzMsIDkxNzU4MSwgOTE3NTgwLCAxMzE3MCwgMTI1NDAsIDEyOTE3OCwgNDI2MDUsIDEyMDc2NSwgMTI2NjE3LCAKKyAgICA2ODY0NywgOTE3NTcyLCAxMDA1OCwgNjgwNTgsIDc0ODY3LCA2NzczMCwgMTI3MDc4LCAzMzM5LCAxMTQ0OCwgMTEwNiwgCisgICAgOTE3NTkxLCA5MTc1NDAsIDkxNzU5MywgMzM0MCwgNzQwMTcsIDkxNzU4NiwgMTIwOTk0LCAxMjkxNDEsIDEyMDU0MSwgCisgICAgMTA2MDUsIDEzMDksIDYzOTY2LCAxMjA3NDMsIDE3NTQsIDkyMjI2LCAxMzI0NiwgODY0LCA5ODMxNzEsIDExODkyNiwgCisgICAgODk3MiwgMTE5OTE4LCA3ODQ5LCAxMjAwOTIsIDgzMTMwLCAxMzI0MCwgMTk1MDY4LCA1MTkyLCA0MzM4LCA2Nzk4MiwgCisgICAgMTA5NDgsIDY2ODI1LCAxMzE5OSwgOTI1NzUsIDEyMzYsIDEzMjA4LCAxMzI2MSwgMTMxODksIDEzMTg4LCA5Mzk5MywgCisgICAgNzE4NDcsIDc0NDAsIDAsIDEyMDE1MywgOTU1MywgMTU5MCwgNjM3NzcsIDYzNzc2LCAxMzE3OCwgNjM3ODIsIDYzNzgxLCAKKyAgICA2Mzc4MCwgNjM3NzksIDE1ODMsIDExOTkyMywgMTMyNjAsIDQ1NTAsIDEyMDU5OCwgNjQyMDUsIDEyOTEwNywgNzEwNzEsIAorICAgIDQxNTIyLCA0MTUyMywgNjg1MjMsIDk4Mzc3MiwgMTE4OTIzLCAxMTM1NCwgOTQwNzEsIDAsIDQyNzk1LCAwLCAxMTkxOTUsIAogICAgIDExMzk0LCAxOTQ2NDYsIDEzMjM2LCAxMzI3MiwgMTMxOTQsIDEzMzQsIDY5OTI2LCA0NDc5LCAxMTc4LCA2NTU4NiwgCi0gICAgMTIwNjYzLCA2NjY4MSwgMTE5MTkzLCA0NjAxLCAwLCAwLCA5ODM3NjUsIDAsIDAsIDE5NDY1OCwgMCwgNjgwOSwgNjM3ODYsIAotICAgIDYwMzEsIDAsIDYzNzkxLCA2Mzc5MCwgMTE0NSwgNjM3ODgsIDc5MTAsIDYzNzg1LCA0MzE1MywgNzU0LCAxMDE5MiwgCi0gICAgMTMxMDUsIDgxODMsIDEyMDc0MSwgMjAzNywgMCwgMCwgMTA3NDcsIDEyNSwgMCwgNjQ4OTAsIDAsIDk4MzEzMSwgMCwgCi0gICAgNDE3MTksIDYzNzU4LCAzNTIzLCAxMDc0LCAxMzI1OCwgOTUzNiwgNzQwNzcsIDAsIDQ0MjcsIDc0MjQyLCA2Mzc1NywgCi0gICAgNDMxNDUsIDEyMjE3LCA2Mzc1NCwgNDE1MzIsIDEzNDksIDYzNzUwLCA2Mzc0OSwgMCwgMCwgMCwgNjM3NTMsIDYzODAyLCAKLSAgICA0MTA4NCwgMTIwNjIyLCA2ODEzMywgNDE5MzAsIDYzODA1LCA2MzgwNCwgNDM2MzIsIDYzODAxLCA0MTA4MiwgODE0MCwgCi0gICAgNjM3OTgsIDYyNjAsIDAsIDAsIDk0MDc0LCA2Mzc5MywgMTE5ODgsIDM4OTgsIDEyODI0MSwgMTAyMDEsIDEyMjM4LCAKLSAgICA2Mzc5NSwgNDIxOTQsIDEwMzY3LCAxMjUyMSwgMTA0MzEsIDQyMTE0LCA0MTkzMiwgMTA2OCwgMCwgMTI1MjMsIDEyOTQ1LCAKLSAgICA5ODMzMjksIDQyMjAzLCA3OTUwLCAxMDgwNCwgNjM3NzEsIDQyNzg3LCA0Mzg2LCAxMjIyNCwgNjk3MywgMjc5MywgMTI0NzUsIAotICAgIDAsIDAsIDYzNzY5LCA5NTMwLCA5ODMxMTksIDEyMjMyLCAxMzEzNSwgODU5NiwgNTY4MSwgNjM3NjIsIDQ1OTUsIDYzNzYwLCAKLSAgICA3OTIsIDAsIDY0ODAzLCAwLCA4NzQyLCAwLCAxMTA1MywgMTI4Nzk2LCA2Mzc0NCwgMTI4MTA3LCAwLCA3NTg4LCA2Mzc0OCwgCi0gICAgMTY5MywgNjM3NDYsIDQzMjA0LCA1MDU1LCA2ODQyNiwgOTE3ODUzLCAxMDkwLCAxMjA2NzksIDEyODM1NiwgMTE2NjUsIAotICAgIDc0MTMzLCA0NTU4LCA2NTY4NSwgOTUyMywgMCwgMCwgNzg2ODEsIDExNTEzLCAwLCA2MTU3LCA2Mzc3NSwgNjM3NzQsIAotICAgIDYzNzczLCAxMzE5MSwgMTIxNzAsIDM1MDAsIDMxMzksIDAsIDMxNzAsIDEyNDg1LCAwLCAxMDg3MiwgNzgyNzEsIDEzMDA2LCAKLSAgICA2NDQzMywgMCwgMCwgOTQxLCAwLCAwLCAwLCA2NTU0MSwgMTEwNjMsIDAsIDgyMjgsIDAsIDQyMDY1LCAwLCAwLCA5NDAzOSwgCi0gICAgMCwgOTI0NTUsIDczODYsIDAsIDY0NDQ0LCAwLCAxMTk4NjMsIDQzNjAzLCA5NDA3NSwgNjUzOTcsIDI4OCwgMCwgMCwgMCwgCi0gICAgMTAwMjUsIDY5OTE1LCAyOTE4LCAwLCA2NTMwMCwgMTE5ODcxLCA5ODgzLCA2NDcyNiwgMjc5MCwgNjUzOTUsIDM3OTMsIDAsIAotICAgIDEyNzgyOSwgNjUzOTMsIDAsIDc0MTM4LCAwLCAwLCAwLCA3NDEzOSwgOTI3MTIsIDY1Mzk0LCAxMTU0OCwgNTI3MCwgMCwgCi0gICAgNjUzOTYsIDAsIDY1ODEzLCAxMzI1NiwgMTI4MiwgMTIwNzcxLCAwLCAwLCAxMDg4OCwgOTgzNjA0LCA2NTI0MiwgMCwgCi0gICAgMzMzMCwgMCwgMCwgOTgzOTc0LCAwLCAwLCA3NDI1OSwgMzMwNCwgNDI3NTMsIDAsIDAsIDAsIDE2MjcsIDAsIDAsIDAsIAotICAgIDUzNzEsIDEzMTE2LCAwLCAxODI2LCAxMTg3OTQsIDAsIDQzMDk0LCA3MDAyMywgNDM2NTAsIDk0MDM3LCAwLCA5MDM1LCAwLCAKLSAgICAwLCAxMjgwMDUsIDAsIDkyMjA3LCA2ODEyNSwgMCwgMTY0LCAwLCA5NDA2NywgOTQwMDAsIDY5NTgsIDAsIDQzMTE2LCAwLCAKLSAgICA3MDAxOSwgMTMyNDUsIDAsIDAsIDEyNzM3NiwgMCwgNzAwMzEsIDEyNzc1NiwgMTI2NjYsIDEzMTc1LCAxMzIwNywgCi0gICAgMTIwNDE0LCA2NjAxNCwgMTIwNDI4LCA3NDQ3LCA1OTI5LCAwLCA2NTUwOSwgMCwgNzQ0OSwgMTEzMDYsIDAsIDczOTIwLCAKLSAgICAzMTgwLCAwLCA2MzgwOCwgOTA1NCwgOTcxLCAxMzA2MiwgMCwgMCwgNjUxOTUsIDEwMTY0LCA5MjI1MiwgNzQ0MjgsIDAsIAotICAgIDc4MTQ2LCA5MjYxMSwgMCwgMCwgMCwgMTAwNDUsIDEyODgyLCAxMzI3NSwgMTI4MTYxLCAxMTA1NywgMCwgMTMyNzYsIDAsIAotICAgIDQxNTI1LCA3ODE1MCwgNzI3MSwgMTE0NDQsIDAsIDAsIDAsIDEyMjI5LCA0MTUyMywgMCwgNDM0MTEsIDczNzUxLCAwLCAKLSAgICA2NDgxMywgMCwgMCwgMTA0NzYsIDM4NTgsIDAsIDM5MzIsIDY0OTU4LCAwLCAwLCA3Mzk4OSwgNjgxOTIsIDAsIDY5ODQ3LCAKLSAgICAzNjksIDAsIDQxNzg0LCAwLCA2NDE2MywgMCwgMCwgMCwgNjU0NzQsIDQ3OTYsIDEyMjkyLCAxMjY1OTUsIDY1NDc5LCAwLCAKLSAgICA0MTc4MSwgMTA0ODYsIDQxNDgwLCA0MzAwMiwgOTg5OSwgMCwgMCwgNDA0LCAxMjgyMSwgMzc0MSwgMCwgNTc4OCwgODA5MiwgCi0gICAgNjgyMTIsIDQxMjIyLCAxODMxLCA2NjAyMCwgMzk4MiwgMCwgNDM4OCwgMCwgNzQ2LCAxMjA3ODQsIDAsIDAsIDEyMDE4LCAKLSAgICA2NTI5NCwgMCwgMCwgMCwgMCwgNDQyMiwgNDcwOCwgMzc5OSwgNzQyOTIsIDExOTM1NywgMCwgNzQ0MzAsIDAsIDExNzAwLCAKLSAgICA0Mzc0LCAwLCAxMjgxNzksIDEzNjQsIDAsIDgwMzgsIDAsIDkxNzU5NywgMTI4NjgsIDY5ODE0LCAwLCA2NzM1LCA3Mzk3OSwgCi0gICAgMTMxNzQsIDczOTY4LCAxMzIyNSwgMCwgNjk4MDgsIDY1ODM1LCAwLCAyMzY1LCA3ODQxLCAwLCA0Mjg1NSwgMTE4ODU2LCAKLSAgICA0Mjg2NiwgMCwgMCwgMCwgNjY0MzgsIDQxNzg1LCAxMjYxNywgNjQxNzIsIDEzMTczLCA0MzcyLCAxMTkzNTQsIDAsIAotICAgIDk4MzU2OCwgMCwgMCwgOTI0MDIsIDEyODA2MiwgMTI5NjUsIDM4NCwgNjQ1MTIsIDEwNDA0LCAxMDM0MCwgMTE5MzUyLCAKLSAgICAxNTU2LCA1Mjc0LCAxMzIxMCwgMTIwMTI1LCAxMDAxNywgOTczMywgNDE3ODcsIDk4MzI0MywgMTI2OTk0LCA0MTM3MywgCi0gICAgNzgwMzksIDEyMzAzLCAwLCAxMzIzMiwgMTMyMzMsIDM0OSwgNDg2MywgNDEzNzEsIDExNjU2LCAwLCAxMjA3MDMsIAotICAgIDExOTg4MywgMTI4NjEsIDQzOTgsIDg1NDMsIDY1NjE4LCAxMjgwMTgsIDEwOTYsIDAsIDAsIDQyNjg4LCAxMjQ0MSwgCi0gICAgMTIzNTUsIDExOTM0OCwgMTE5MzQ3LCA0MzE4LCAxMDQ1MiwgMCwgODAzMiwgMTMyNDMsIDEzMjM3LCAxMjcxOSwgMTI2NjQ2LCAKLSAgICAxMTkxMDEsIDAsIDY0ODg0LCAxMTk4NzIsIDExOTM0NSwgODU5NywgMCwgMCwgOTg2NCwgMCwgMTIwNzg1LCAxMTk4NzQsIAotICAgIDk0MTA3LCAxMzE5NSwgNDE0NTIsIDY0OTYxLCA3NzIyLCAwLCAxMDQ1OSwgMTE5ODc4LCAwLCAxMTk4NzksIDY2NTkwLCAKLSAgICAxMjgxMjMsIDQxNTMzLCA2NjMzNywgMCwgOTIxODQsIDAsIDQ5NjUsIDQzNDQ1LCA5MTc1MzYsIDczODQ5LCAwLCA0MzYzOCwgCi0gICAgNzg1MzcsIDEyODI4NywgNjI2MSwgMTE5MzQyLCA0MzE0NywgNjY1NzAsIDE5NTcsIDEwNDIwLCA5ODIsIDI3NTYsIDEzMjkyLCAKLSAgICAxMzIwNiwgMTI4ODI4LCAwLCAyOTI1LCA3MzgwOSwgMTMwNTYsIDEyNzU1OSwgMTMyMTIsIDQzMjM4LCAwLCAxMzE5MCwgCi0gICAgMTMxODcsIDkyNTQxLCAxMzE5OCwgMTE4NzkzLCAwLCA1MjQyLCAxMTkxNzksIDY0NDc2LCAxNjk0LCA4MjE2LCA3MTM2OSwgCisgICAgNjgzMTEsIDY2NjgxLCAxMTkxOTMsIDQ2MDEsIDAsIDEyNzg4NSwgOTgzNzY1LCA2NjgyOCwgMTI4OTcyLCAxMjc4MzksIAorICAgIDc0NTgwLCA2ODA5LCA2Mzc4NiwgNjAzMSwgNjc0MDIsIDYzNzkxLCA2Mzc5MCwgMTE0NSwgNjM3ODgsIDc5MTAsIDYzNzg1LCAKKyAgICA0MzE1MywgNzU0LCAxMDE5MiwgMTMxMDUsIDgxODMsIDEyMDc0MSwgMjAzNywgMCwgNjQ3MTAsIDEwNzQ3LCAxMjUsIAorICAgIDEyMDgwMywgNjQ4OTAsIDk4MzA2NCwgMTI3Mzc2LCAwLCA0MTcxOSwgNjM3NTgsIDM1MjMsIDEwNzQsIDEzMjU4LCA5NTM2LCAKKyAgICA3MTA1NiwgMCwgNDQyNywgNzQyNDIsIDYzNzU3LCA0MzE0NSwgMTIyMTcsIDYzNzU0LCA0MTUzMiwgMTM0OSwgNjM3NTAsIAorICAgIDYzNzQ5LCAxMjkwMjUsIDAsIDEyNzkyOCwgNjM3NTMsIDYzODAyLCA0MTA4NCwgMTIwNjIyLCA2ODEzMywgNDE5MzAsIAorICAgIDYzODA1LCA2MzgwNCwgMTExNDAsIDYzODAxLCA0MTA4MiwgODE0MCwgNjM3OTgsIDYyNjAsIDAsIDEyODM5MSwgOTQwNzQsIAorICAgIDYzNzkzLCAxMTk4OCwgMzg5OCwgOTIyNDYsIDEwMjAxLCAxMjIzOCwgNjM3OTUsIDQyMTk0LCAxMDM2NywgMTI1MjEsIAorICAgIDEwNDMxLCA0MjExNCwgNDE5MzIsIDEwNjgsIDAsIDEyNTIzLCAxMjk0NSwgOTgzMzMxLCA0MjIwMywgNzk1MCwgMzEyNCwgCisgICAgNjM3NzEsIDQyNzg3LCA0Mzg2LCAxMTE0OCwgNjk3MywgMjc5MywgMTI0NzUsIDEyOTE4MCwgNzUwNTYsIDYzNzY5LCA5NTMwLCAKKyAgICAxMjEyNDgsIDEyMjMyLCAxMzEzNSwgODU5NiwgNTY4MSwgNjM3NjIsIDQ1OTUsIDYzNzYwLCA3OTIsIDExMzY3NCwgNjQ4MDMsIAorICAgIDAsIDg3NDIsIDE5NTAyOSwgMTEwNTMsIDEyODc5NiwgNjM3NDQsIDEyODEwNywgMTI4OTQyLCA3NTg4LCA2Mzc0OCwgMTY5MywgCisgICAgNjM3NDYsIDQzMjA0LCA1MDU1LCA2ODQyNiwgNDIwNjMsIDEwOTAsIDY4ODAzLCAxMjA3NzgsIDExNjY1LCA3NDEzMywgCisgICAgNDU1OCwgNjU2ODUsIDk1MjMsIDk4MzQ1MywgNjM4NTcsIDcxMjE2LCAxMTUxMywgMCwgNjE1NywgNjM3NzUsIDYzNzc0LCAKKyAgICA2Mzc3MywgMTMxOTEsIDEyMTcwLCAzNTAwLCAzMTM5LCA2ODA3MSwgMzE3MCwgMTI0ODUsIDQzODkxLCAxMDg3MiwgNDM4OTIsIAorICAgIDEzMDA2LCA0MzkzMywgMTIwMDc0LCAwLCA5NDEsIDAsIDEyOTA3OSwgMTIwOTY3LCA2NTU0MSwgMTEwNjMsIDAsIDgyMjgsIAorICAgIDAsIDQyMDY1LCAxMjgzNjgsIDQzODg5LCA5NDAzOSwgMTI5Mjk5LCA5MjQ1NSwgNzM4NiwgMCwgNjQ0NDQsIDcwMjk1LCAKKyAgICAxMTk4NjMsIDQzNjAzLCA5NDA3NSwgNjUzOTcsIDI4OCwgODM0MDksIDAsIDAsIDEwMDI1LCA2OTkxNSwgMjkxOCwgNjY4MjAsIAorICAgIDY1MzAwLCAxMTk4NzEsIDk4ODMsIDY0NzI2LCAyNzkwLCA2NTM5NSwgMzc5MywgOTgzNjIwLCAxMjc4MjksIDY1MzkzLCAKKyAgICAxMjA1OTIsIDc0MTM4LCA4MzUwNSwgOTI3NTEsIDc1MDE5LCA3NDEzOSwgNzg3NzcsIDY1Mzk0LCAxMTU0OCwgNTI3MCwgCisgICAgOTgzMjM4LCA2NTM5NiwgNzQ5OTgsIDY1ODEzLCAxMzI1NiwgMTI4MiwgMTIwNzcxLCA3NTAxMiwgMCwgMTA4ODgsIAorICAgIDEyMDkzNCwgNjUyNDIsIDAsIDMzMzAsIDAsIDAsIDY4MzQwLCAwLCAwLCA3MTIwMiwgMzMwNCwgNDI3NTMsIDkyNTg4LCAKKyAgICA3MDI5OCwgNzQ2NDMsIDE2MjcsIDAsIDEyNzc2NSwgMTk0NzM1LCA1MzcxLCAxMzExNiwgMCwgMTgyNiwgMTE4Nzk0LCAwLCAKKyAgICA0MzA5NCwgNzAwMjMsIDQzNjUwLCA5NDAzNywgNjgzMTcsIDkwMzUsIDExMTQxLCA5MTc5NzcsIDEyODAwNSwgMCwgOTIyMDcsIAorICAgIDY4MTI1LCA3NDg5OCwgMTY0LCA2ODMwOSwgOTQwNjcsIDk0MDAwLCA2OTU4LCAwLCA0MzExNiwgNjc3MTksIDcwMDE5LCAKKyAgICAxMzI0NSwgMCwgNjg4MDgsIDY2ODE4LCAwLCA3MDAzMSwgMTEwOTksIDEyNjY2LCAxMzE3NSwgMTMyMDcsIDEyMDQxNCwgCisgICAgNjYwMTQsIDEyMDQyOCwgNzQ0NywgNTkyOSwgMCwgNjU1MDksIDEyOTE5MiwgNzQ0OSwgMTEzMDYsIDAsIDczOTIwLCAzMTgwLCAKKyAgICAxMjUxMDIsIDYzODA4LCA5MDU0LCA5NzEsIDEzMDYyLCA3MTA5MCwgMCwgNjUxOTUsIDEwMTY0LCA5MjI1MiwgNzQ0MjgsIAorICAgIDk4MzMyMSwgNzgxNDYsIDkyNjExLCAwLCA3MDIwNCwgMCwgMTAwNDUsIDEyODgyLCAxMzI3NSwgMjMwMywgMTEwNTcsIAorICAgIDkxNzk3NiwgMTMyNzYsIDEyNTEzMywgNDE1MjUsIDc4MTUwLCA3MjcxLCAxMTQ0NCwgMTI2NDc5LCAxMjc5MDQsIDEyMTIwMywgCisgICAgMTIyMjksIDExNjgwLCA5Mjk1NiwgNDM0MTEsIDczNzUxLCAwLCA2NDgxMywgMTk1MDg5LCAwLCAxMDQ3NiwgMzg1OCwgCisgICAgNjQxNzUsIDM5MzIsIDY0OTU4LCAxMjA0MzIsIDk4MzY3OCwgNzM5ODksIDY4MTkyLCAwLCA2OTg0NywgMzY5LCA3NDkwOCwgCisgICAgNDE3ODQsIDExOTE3NSwgNjQxNjMsIDc3OTk3LCAwLCA5MjY0NSwgNjU0NzQsIDQ3OTYsIDEyMjkyLCAxMjY1OTUsIDY1NDc5LCAKKyAgICAxMjg2MzEsIDQxNzgxLCAxMDQ4NiwgNDE0ODAsIDQzMDAyLCA5ODk5LCA5MjYwOCwgMCwgNDA0LCAxMjgyMSwgMzc0MSwgMCwgCisgICAgNTc4OCwgODA5MiwgNjgyMTIsIDQxMjIyLCAxODMxLCA2NjAyMCwgMzk4MiwgMCwgNDM4OCwgMTk0OTEzLCA3NDYsIAorICAgIDExODgyNiwgNzQ3ODMsIDAsIDEyMDE4LCA2NTI5NCwgMTI3NTQ1LCAxOTQ5MjUsIDY4ODM1LCA5ODM0ODgsIDQ0MjIsIAorICAgIDQ3MDgsIDM3OTksIDc0MjkyLCAxMTkzNTcsIDEyMTE0NiwgNzQ0MzAsIDAsIDExNzAwLCA0Mzc0LCAxMjAzNzcsIDEyMTE1MSwgCisgICAgMTM2NCwgMCwgODAzOCwgMTIwODgzLCA5MTc1OTcsIDEyODY4LCA2OTgxNCwgNzA0MjUsIDY3MzUsIDczOTc5LCAxMzE3NCwgCisgICAgNzM5NjgsIDEzMjI1LCAxOTQ5MDIsIDY5ODA4LCA2NTgzNSwgMCwgMjM2NSwgNzg0MSwgNzE0NzYsIDQyODU1LCAxMTg4NTYsIAorICAgIDQyODY2LCAwLCAwLCAxMjc5ODYsIDY2NDM4LCA0MTc4NSwgMTI2MTcsIDY0MTcyLCAxMzE3MywgNDM3MiwgMTE5MzU0LCAKKyAgICA5ODM5MjAsIDk4MzU2OCwgMTI4ODcxLCAxMjc4MjEsIDY3Njg1LCAxMjgwNjIsIDEyOTY1LCAzODQsIDY0NTEyLCAxMDQwNCwgCisgICAgMTAzNDAsIDExOTM1MiwgMTU1NiwgNTI3NCwgMTMyMTAsIDEyMDEyNSwgMTAwMTcsIDk3MzMsIDQxNzg3LCA5ODMyNDUsIAorICAgIDEyMTE0OSwgNDEzNzMsIDY4NDg2LCAxMjMwMywgMTI4NDc2LCAxMzIzMiwgMTMyMzMsIDM0OSwgNDg2MywgNDEzNzEsIAorICAgIDExNjU2LCAwLCAxMjA3MDMsIDExOTg4MywgMTI4NjEsIDQzOTgsIDg1NDMsIDY1NjE4LCA5MjczNywgMTA5NiwgNDM4NTIsIAorICAgIDEyMTQzMywgNDI2ODgsIDEyNDQxLCAxMjM1NSwgMTE5MzQ4LCAxMTkzNDcsIDQzMTgsIDEwNDUyLCA5MjkwMiwgODAzMiwgCisgICAgMTMyNDMsIDEzMjM3LCAxMjcxOSwgMTI2NjQ2LCAxMTkxMDEsIDEyMTE1NiwgNjQ4ODQsIDkyOTA5LCAxMTkzNDUsIDg1OTcsIAorICAgIDcxMTAwLCAxMjkwNjIsIDk4NjQsIDAsIDEyMDc4NSwgMTE5ODc0LCA5NDEwNywgMTMxOTUsIDQxNDUyLCA2NDk2MSwgNzcyMiwgCisgICAgMCwgMTA0NTksIDExOTg3OCwgMTI0OTQ5LCAxMTk4NzksIDY2NTkwLCAxMjgxMjMsIDQxNTMzLCA2NjMzNywgMTI4NjYzLCAKKyAgICA5MjE4NCwgMCwgNDk2NSwgNDM0NDUsIDkxNzUzNiwgNjc4NTYsIDAsIDQzNjM4LCA3ODUzNiwgMTIxMTg3LCA2MjYxLCAKKyAgICAxMTkzNDIsIDQzMTQ3LCA2NjU3MCwgMTk1NywgMTA0MjAsIDk4MiwgMjc1NiwgMTMyOTIsIDEzMjA2LCAxMjUwNjQsIAorICAgIDkxNzc5NSwgMjkyNSwgNzM4MDksIDEzMDU2LCA5MjkxNCwgMTMyMTIsIDQzMjM4LCAxMjEzOTYsIDEzMTkwLCAxMzE4NywgCisgICAgOTI1NDEsIDEzMTk4LCAxMTg3OTMsIDEyMTA4OSwgNTI0MiwgMTE5MTc5LCA2NDQ3NiwgMTY5NCwgODIxNiwgNzEzNjksIAogICAgIDY3NzAsIDQzMzMxLCAwLCA2NTYyMCwgOTgzNzI4LCA0MzU0NCwgMTI2NDY2LCAwLCA0MTQ0NCwgNjU2MjEsIDY5OTU1LCAKICAgICA5MTk3LCA1MjQ2LCAxMTkxMDYsIDEzMTg1LCA5NzA5LCAxMjAzMjMsIDEyMDMyMiwgMTIzMTQsIDY1NjE2LCA1MjM4LCAKLSAgICAxMTkzMzMsIDAsIDExOTMzNywgNTIzNiwgNDA5NzksIDAsIDc0MjAxLCA4Mjg2LCAxMjg1MzcsIDM5MzYsIDExOTMzMSwgCi0gICAgMTE2OTksIDQxMzQ3LCAxMjcyNDksIDEzMjM1LCA4ODQyLCA0MTI0OCwgMCwgNDM3OSwgMTMyMzksIDEyNjkyLCA3OTY5LCAKLSAgICAxMjcyNjYsIDcyMTksIDEyNzI1MCwgMTI4MjUxLCAxMjA1MDksIDAsIDY2MjI0LCA3MzQsIDI5NzksIDEyMDMwMywgNjU2MTksIAotICAgIDk4NzIsIDk1NywgNjQ5MjEsIDE4NDYsIDY2NjMxLCA0MTQ3NywgMTE5MjU2LCAxMjAzMTAsIDc0NTExLCA0MTc3MCwgMTY3MCwgCi0gICAgNjQ0MiwgMTIwMzE3LCA0MjQ0NiwgNTM3OSwgMTIwMzE4LCA0MTE2MywgNzQ4MzIsIDEyMDMxNSwgMTIwMzE0LCAxMTUwNiwgCi0gICAgMCwgNDI4NDEsIDEzMjY3LCAwLCAwLCA0MTc3NSwgMCwgNzEzMCwgNDE3NzMsIDAsIDEwNjYzLCAwLCAwLCAwLCA2MTUxLCAKLSAgICAxMjExMCwgNDI2NzMsIDY1NTcyLCA2NTI5MywgNjUyNTAsIDEzMjY1LCAxMzI2NCwgNjQ1MTgsIDAsIDYxMDAsIDAsIAotICAgIDkyNjQ3LCA1ODA4LCA2NTkyMiwgMCwgMTI5NjcsIDY2MDQxLCA1NjEyLCA0NTgzLCAwLCAwLCA2ODA5NywgNjQ1NzUsIAotICAgIDEyNjYzNywgMTE5NjUsIDAsIDY4MzU4LCAwLCA2OTc4OSwgMCwgOTIyNjAsIDY4MTAyLCA5Njk4LCA3ODE0LCA3NDQ3NiwgCi0gICAgMTE5NjUxLCAxMjg1MTQsIDAsIDQxOTIxLCAxMTg4NTgsIDk3NTYsIDY5ODUsIDExOTI1OCwgNzg0OTAsIDc0MjE5LCAwLCAwLCAKLSAgICAxMTg5OTcsIDgwMTIsIDU2NzQsIDEyMzUzLCAwLCAxMjM2MSwgNTY3NywgNTU4OCwgMCwgNDE5MjUsIDEyODEyNCwgNDE5MjAsIAotICAgIDU2NzMsIDEyMDUzNCwgNTY3NiwgNDE5MjMsIDEyNjk0LCAxMTg5NzgsIDU2NzIsIDEyOTQsIDAsIDc4MDU5LCAwLCA0MjUxMSwgCi0gICAgMTcyNywgMTIwNzI1LCA0MjQzNiwgMCwgMCwgMCwgNzQyMjIsIDg3MTgsIDM1NTAsIDczNiwgMTAyNjgsIDQ1MDUsIDEwMzE2LCAKLSAgICA3NDA5MCwgNTgyNiwgNTUyMzIsIDU4MTMsIDAsIDEyMDcxMiwgNTg0MSwgNTgzNywgNTUyMzQsIDAsIDMxMDUsIDEyODI5LCAKLSAgICA1ODM4LCA1Nzk2LCAwLCAxMTk1OTIsIDU3OTMsIDAsIDU4NjYsIDU3OTcsIDQxMDExLCA1ODY1LCAxMjAwOTEsIDc5NTYsIAotICAgIDU5OCwgMCwgNjQ2NDksIDU4MDYsIDQyMzk4LCAwLCA5MDM3LCA1NjcxLCAxMjAwNDEsIDk4MzI1NSwgMCwgMCwgMTI4ODU1LCAKLSAgICAwLCA4NDcsIDEyODI0MiwgOTUyOSwgMCwgNjY2NTcsIDY5ODAsIDc4NDgzLCAxMjAwMzUsIDc4NDg0LCA5ODM0OTEsIDAsIAotICAgIDEyMDAzMywgNzg0ODYsIDAsIDAsIDEyMDAzOSwgNDI2ODMsIDAsIDk4MzA1NSwgNzExNCwgMCwgMCwgNDMxOTAsIDY1NDYzLCAKLSAgICAxNTU0LCAwLCA0MjYxMSwgNDI1NjMsIDAsIDU2NTEsIDI5MjksIDY3OTIsIDQzMjAxLCAwLCAxOTk2MywgNTY5OCwgMCwgMCwgCi0gICAgMCwgMCwgNTY0NCwgMTAyOTIsIDY1NTQ2LCA2OTcyNywgNjgxNDEsIDgzNzIsIDAsIDY1MTE2LCAwLCAxMjAwMjIsIDEwMTc1LCAKLSAgICAxMDM4OCwgNDI3OTksIDk0MTAwLCA0MTAxMywgMTA1NjgsIDAsIDk4MzYxOCwgMjg2OSwgMCwgNDEwMTUsIDE5NDY5MiwgCi0gICAgMjc4NSwgNDM2NiwgMCwgMTA5NTQsIDQxODAyLCAwLCA0MjYwOCwgNzg0NjksIDk4ODQsIDQ3NTksIDAsIDAsIDEwMjY2LCAKLSAgICA0MTM1OSwgMTE3MCwgNDMzNjUsIDY5ODEwLCA3MzkwOCwgMTYwOSwgOTAyLCAwLCA2MzkzNiwgMTI4ODc1LCAxMTY2MSwgCi0gICAgODEyMiwgNTgxOCwgMCwgMCwgMzg2MSwgOTU0MCwgMTEwMjgsIDI1NTQsIDUxNTgsIDU3MTQsIDIyMTMsIDAsIDAsIDgwNywgCi0gICAgNDMwNzksIDAsIDc4NDc1LCA5NzYsIDU1MTEsIDY0NTUzLCAwLCA0MjE1NSwgMCwgNDEzNTYsIDc0MTEwLCAxMTg4MDEsIAotICAgIDEyNjYxNCwgMCwgODY3NiwgOTgzMjkxLCAwLCA1NTgyLCA0NTEsIDYzOTQxLCA1Nzk4LCA5MzQ5LCA0MjAxOCwgMTI3ODU4LCAKLSAgICAwLCAwLCA0MzYwOSwgNTkwNiwgMTIwNTUzLCAxNDQwLCAwLCAxMjg4NTMsIDEyMDAxNiwgNzQyODMsIDExMDA1LCAwLCAKLSAgICA2NjY1NiwgNjYwNDQsIDAsIDE5NDY5OCwgMCwgMCwgNDMzOTMsIDEwMDk0LCAwLCAxMTUyOSwgMTA4NTcsIDEyMDY0MywgCi0gICAgNjY0MzYsIDY1NDYsIDkzLCA4MTAyLCAwLCA2ODQwNSwgMCwgMCwgODE3MSwgMCwgMTE5MDk3LCAxMjcwNjQsIDkxNzU0MywgCi0gICAgMzgzLCA3MTU0LCA0MTY1NiwgOTI2MzQsIDk0MDQwLCAwLCA1MTg3LCA3MTI5NiwgMTI3Mjc3LCAxMTI4NiwgNjg2MjAsIAotICAgIDY0MjE3LCAwLCA1MjMyLCAwLCA0MTAwOSwgMCwgNDEwMDUsIDAsIDAsIDk4MzgyNywgODI5MiwgMTk1MDc0LCA0OTgwLCAKLSAgICA4ODYwLCA3Mzk0NywgMTAwMjgsIDY1MjkxLCA3MDc2LCAxMzE4MiwgMTk0NzA1LCAwLCAwLCAxMDYzMSwgNjYwMzEsIDc5NzIsIAotICAgIDAsIDc4Nzg1LCAwLCA3OTAwLCAwLCAxMTMwOSwgMzgwNiwgNDE5OCwgNDI3MjUsIDAsIDY3NjU2LCA5OTk1LCAwLCA5MjU1MiwgCi0gICAgMCwgMTI5MzEsIDAsIDQyNjg0LCA3NDI4NSwgMjA4OCwgNjQyMTMsIDY0MzY2LCA2NTE1NiwgODgxNCwgNDIyMzgsIDc0NzcxLCAKLSAgICAwLCAwLCAxMjgzNiwgMCwgMCwgNzQzNDIsIDg1OTMsIDAsIDAsIDY4NDQ1LCAxMzI1NSwgMCwgMCwgNzQ2NCwgMCwgNjU4NjUsIAotICAgIDAsIDE5NDY1MCwgMTI3MTQ0LCAwLCA5MzQyLCAxMjA0NjQsIDAsIDY0NTE2LCAwLCA3ODc5MiwgMTAxMjksIDQxMDA3LCAKLSAgICA3NDM3NSwgMCwgNDA5OTUsIDEyMjA5LCA0MTAxMiwgMTE5MTM2LCAwLCAwLCA2OTcyNCwgNDA5OTIsIDkyMjY0LCAxMjcxNTMsIAotICAgIDY4NjUzLCA0MzU1OCwgNTUyMiwgMCwgNjEsIDAsIDc0MTA1LCAzNjMzLCA5ODM5MDAsIDY1MTYyLCA0MTIzNCwgMTIwODksIAotICAgIDc4MjgxLCA5NzcxLCA5ODM5MDUsIDEzMjUxLCAxMjg3MDEsIDAsIDYyNjIsIDI3ODQsIDQyNzQzLCAwLCA4MTI2LCA2NjQ4MywgCi0gICAgMCwgMCwgNDQxLCA0MjYyMSwgMCwgMCwgNDEwMDIsIDQwOTk5LCAxMTk2MjMsIDQzMjY2LCA3MTA4LCAxOTQ3NzksIDEwODkwLCAKLSAgICA3NDQ4MSwgNjU4MzQsIDgzMjQsIDExOTEwMywgNjQ0MTcsIDc0ODE3LCAxMjc0NjUsIDY0NzM3LCAwLCA5ODM2NTksIDg5MzAsIAotICAgIDY2Njc4LCA3NDI0OSwgMTE5MywgMTAwNTYsIDE4MDAsIDEzMjUzLCAxMzI1MiwgNzgyOSwgMCwgMCwgNzc0MywgMCwgMCwgCi0gICAgNzc5MDQsIDkyNjQwLCA3NzkwNSwgOTAzNCwgNjAzOSwgMCwgMTAwNzUsIDAsIDQxMDE4LCA2NTY4MywgMTAzMzgsIDY2NDY5LCAKLSAgICAwLCAwLCAwLCA0MjgxNSwgMCwgNDE5NjYsIDAsIDEyNzQ3MSwgMCwgMTE3OTIsIDQzMDY0LCA0MTAyNSwgOTExLCA3NTM5LCAKLSAgICAwLCAwLCAxMjAzMzksIDY1MTU5LCA2NDM5MCwgMCwgMCwgNTUyMCwgMTE2NjIsIDAsIDY1MzMwLCA0MjgxMiwgMCwgMCwgCi0gICAgMTIzMjYsIDk4Mzg1NiwgMCwgNDI4MDgsIDEyODMzNywgOTM0OCwgNjQ5MDEsIDk4Mzg2MSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOTE3NTg0LCA0MzcwMiwgOTgzNTc2LCA1ODU3LCA2NTM0MiwgOTI3MjcsIDExOTEyMCwgMTIwMDc5LCA4NjQ0LCAwLCAwLCAwLCAKLSAgICA3NDI5NiwgNDE5MDksIDAsIDEyMDMzMiwgMjc5MSwgNjk2NjMsIDE4OTEsIDY5ODI0LCAwLCA0MTkwNywgNjY2NDcsIAotICAgIDExODkzOSwgODc2MSwgMTI5NDIsIDU3NDgsIDAsIDEwNzczLCAwLCAwLCA4Nzk2LCA3ODE0OSwgNjQxMiwgMjA2MSwgODUyMCwgCi0gICAgMTMxNDYsIDEyNzE4NSwgNjM5MzEsIDAsIDY1OTAyLCAyODgyLCAwLCAwLCAxMjg0MywgNDUyMCwgMTIwMzQ1LCA5MjQ1OSwgCi0gICAgMCwgOTgzNjYwLCAwLCA3Mzg2MCwgMCwgMCwgNjQzNDUsIDAsIDkyMDEsIDEyODMxNCwgMTk0OTQwLCAwLCAwLCA0MzY3OSwgCi0gICAgOTE3NTg1LCA2NTExNywgOTIyNzAsIDAsIDEwNDI3LCAwLCAzODQ0LCAxMjA2NzUsIDk3NTUsIDExMTAsIDY2MTIsIDEyMjIyLCAKLSAgICAwLCAxMjg3ODksIDAsIDAsIDc4MywgMTk0OTM1LCAwLCAwLCA5ODMwNjQsIDE5NDcyMCwgNjUwNTYsIDM2MjAsIDQxMTgwLCAKLSAgICA2ODM3OCwgNDU1NiwgMCwgMCwgMTk0OTMzLCA3NDI1MCwgMCwgNjc2NTcsIDEwNTEwLCA0MzgyLCA2NjQ4MiwgMCwgMCwgCi0gICAgMTI3NTI3LCA5MTc3LCA4OTAyLCA5Mzk1OCwgOTgzOSwgMCwgMTI4OTEsIDk4Mzc1NSwgOTgzNjM2LCA2Mzk5OSwgMjAxNiwgCi0gICAgNDE5MTcsIDk3ODgsIDYzOTI4LCAwLCAxODYyLCA2NTgwMCwgOTE1NSwgNjY2MjMsIDk3ODYsIDY1MDgyLCA0MTkxOSwgCi0gICAgODU3OSwgNDE5MTQsIDc5ODEsIDAsIDY2MDE3LCA0NTA4LCA2NDg4MywgOTI0NTYsIDkyNTIyLCAxMjc4MTQsIDAsIDY0NTkyLCAKLSAgICA3NDI3NiwgMTIwMDgwLCA2Nzg0LCA3ODc4OCwgNjgxODEsIDAsIDAsIDAsIDEyNzUzNCwgMTIxNDcsIDkwMjQsIDY2Mzc4LCAKLSAgICA2NjQ3MiwgOTgzOTI5LCA2NDI4OSwgNjUyODksIDc4MTUxLCA2NjY1OCwgMTk0OTI5LCA2NDUwOSwgNzgxNTIsIDAsIAotICAgIDEyNjUwNSwgMTEwNTEsIDk4MzI5NiwgMCwgMTEzNTUsIDY1ODg1LCAwLCAxMjgzMTAsIDQxMjE0LCAwLCAxMjI5OSwgMCwgCi0gICAgNzUwMCwgNDUwNiwgNzc3MywgMCwgMCwgOTk2MywgNjg2NDksIDEyNjYwOSwgNDA0MCwgMTIwNTcwLCA2MTY3LCAwLCAKLSAgICA2MzkyMiwgNjU5NCwgOTgzNzQwLCAwLCAwLCAzNjI0LCA0MzAzNiwgMCwgNjM4NywgNjM5OTAsIDE5OTQ3LCA2Mzk4OCwgCi0gICAgNDE5NTUsIDAsIDYzOTkzLCAxMDQ0MCwgOTYxMSwgNjU2MDUsIDY4MDMsIDAsIDc3MzgsIDYzOTg2LCAxMTQ0NiwgNjM5ODQsIAotICAgIDkyNjQxLCAzNDM1LCA3ODE2NCwgNDM4MTQsIDQzODEwLCA3MDI5LCA2NDI1OCwgNDEyOTIsIDExODg5OCwgMTI3NDgsIAotICAgIDQyNzQyLCA5NTE3LCAxMTUxOCwgMCwgNzg3OTAsIDAsIDY3OTkzLCA2Mzk1NiwgNDI0NTgsIDYzOTU0LCA2Mzk1MywgCi0gICAgNjM5NjAsIDk1OTEsIDQ1MTYsIDEwMjE3LCA2ODM3MCwgMTE0NjksIDY5Njk3LCA0MjMwNiwgMjcyMywgMTE4OTQ3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMTM5NywgMjg4MCwgMCwgMCwgMjg3MiwgMCwgMCwgMzQ5OCwgNDM3OCwgOTE3NTM5LCA0MjcwLCAwLCAKLSAgICA2NTU1MSwgNjgyMDUsIDY2MzMsIDQzMzg3LCAwLCA1MjMwLCAwLCAwLCAwLCAwLCAwLCA4MTYxLCAzOTMsIDEyMDEzLCAwLCAKLSAgICAwLCAxMjY0NzksIDQxNSwgNjM5NjQsIDYzOTYzLCA0MjM0NSwgOTIzMTAsIDUxODMsIDE4NzcsIDQyNDk4LCAwLCAyOTI3LCAKLSAgICAwLCA2Mzk2MSwgNDQ3MiwgMCwgMCwgNzgxNTksIDY5Njk5LCA5MTc5MzYsIDQyMzQwLCA0NzU2LCAxMjgwNzgsIDcwODEsIAotICAgIDEwNzMwLCA3NjkxLCAxMDMzMSwgNjM4MzAsIDExOTYyNSwgNDI5MjIsIDQyMTAzLCA4NjI4LCA5ODEzLCAwLCA0MjQ1MywgCi0gICAgMTYwNCwgOTU2NSwgMTA1MzksIDY5NzAxLCA2NTc2NCwgNDE0MTUsIDY1NzY3LCAwLCA4NDU3LCA0MjMwMSwgMTEzNzIsIAotICAgIDY0ODczLCAxMTk5MiwgMCwgMCwgNjM5ODAsIDExODAxLCAzNjIyLCA5ODMxMjQsIDY0MzM2LCAxMjAxNywgMTA0NjMsIAotICAgIDYzOTgxLCA0OTY3LCA2NDE4OSwgMTk2NiwgNDM2MjgsIDAsIDk4MzI5MiwgMCwgMCwgNjM5NzEsIDQzNDcsIDQ0MTYsIAotICAgIDQyMDk4LCAxMTAwOSwgMTA2OTQsIDYzOTczLCA0MDIsIDAsIDEzMTQ3LCAxMjg2OTIsIDQyMTAwLCA2NDY0NiwgMTMyMjgsIAotICAgIDAsIDQxODc1LCAzNTE1LCA3NDI1MiwgMTE4MDUsIDAsIDExMzAyLCA2MjU5LCA0MzM5NSwgMCwgMCwgMTk0NjcwLCAwLCAKLSAgICA5MjM1MSwgMCwgNzQ0MjUsIDExMjk5LCAxNTYxLCAwLCA5MjM1OSwgNjQ5NDIsIDk4MzU1OSwgMTk0NzMzLCA5ODM2ODYsIAotICAgIDE5NDczMiwgMCwgNzQzMDEsIDAsIDExMjgwLCAwLCA2OTc4NCwgNzQwNjAsIDAsIDAsIDExOTY2NCwgNTE0NSwgMTI0ODYsIAotICAgIDY1MDE4LCA2NjUxNiwgNTQwOSwgMTI3Mzc5LCAxOTQ2NjksIDc0MDIsIDUzOTksIDk2ODUsIDc0MDg5LCA3OTUyLCA1NDAxLCAKLSAgICAwLCA2NjYxNiwgNjg0MjEsIDk4MzkxOSwgMCwgNTQwNSwgMTI3ODc1LCA2NDg2NiwgMCwgMTE5NTgzLCAxMjgzNDUsIAotICAgIDc4Nzg0LCA3NDI0OCwgMTEzMzAsIDE5NDcyMywgNjQ2OTAsIDMyNTQsIDAsIDAsIDEyODIwNywgNDIzOTAsIDQzNjc4LCAKLSAgICAxOTQ3MjUsIDk4MzkwOSwgNjUwNzcsIDAsIDYzODgsIDMzNTUsIDk1MDgsIDk4NjcsIDU3MjMsIDExNTIwLCA1NjExLCAwLCAKLSAgICAzMzc3LCAwLCAwLCAwLCAwLCA3ODIyOCwgMCwgOTgzNzYyLCA0MjY5MSwgOTE3ODg2LCAxMjcxOTgsIDc0NzY3LCAwLCAKLSAgICAxMjcwNzUsIDEzNzksIDI0NiwgMCwgOTgzNzYxLCAzNzg4LCA5ODMxMDYsIDExMDQxLCA5MjU0OSwgNjYzMDQsIDAsIDAsIAotICAgIDg5MTcsIDQyNDAzLCAzMDEsIDAsIDAsIDAsIDAsIDAsIDk4MzY5NywgMTA2NTYsIDAsIDY1MjE0LCAxMTkyNDIsIDQyNTY3LCAKLSAgICA5MjIxNywgMTMxNjMsIDk4MzIwNCwgMTIwODMxLCA3NDU5NywgMzE4MiwgMCwgMCwgMCwgNjUwMzQsIDY1ODg5LCA0MjE2OSwgCi0gICAgNDc1NSwgNzQyNDQsIDE5NDYyMSwgMTE0NDMsIDAsIDY2MzE5LCA3NDU5OCwgNjA4LCA2MDAsIDAsIDEyMTksIDM5MzQsIAotICAgIDY0MjA2LCAxMTQ4MywgNzQ1MTAsIDAsIDc0NDg1LCA0MjQ0MiwgNjU0NzAsIDk4MzkwNywgNjQyMDIsIDEzMTYwLCA3NzU5LCAKLSAgICA0MjQ4MiwgNDg1LCAxMjgwMDYsIDAsIDk4MjgsIDAsIDAsIDQyMjgwLCAwLCA5MzUxLCA3Nzc4LCA2NDM3OSwgNzQ5NiwgCi0gICAgNDI0MzEsIDY5MTYsIDEyMDgsIDAsIDExOTYzMSwgMTEwMDIsIDQyNDcwLCAwLCAxMTg5NDYsIDAsIDAsIDc0MDQxLCAwLCAKLSAgICA3MDA0NSwgNDM1MzksIDU0MTEsIDQyMTk2LCAwLCAwLCAwLCA5MTUwLCAwLCA0MjM5MywgMTMwODYsIDEzMTAsIDE5NDY4NywgCi0gICAgOTMzNywgMTIwNTIsIDEwNjQzLCA1NTI3MSwgOTgzMTc5LCAxMjE2NiwgMjU0NiwgMTk0NjgzLCAyMTMsIDExODg1MiwgCi0gICAgNjU2MTEsIDAsIDAsIDE5NDc1NiwgNzQzMTAsIDY1NTQsIDAsIDExOTE0LCA1NDUyLCAwLCAwLCAwLCAwLCAwLCAxOTQ2ODEsIAotICAgIDkyNTYwLCAyNzEzLCAwLCA5NjUwLCA0MzMzMCwgMCwgMTk0Njc1LCAxNDA2LCAwLCAwLCA5MjY1OSwgMCwgNjgyMjMsIAotICAgIDQxNDMsIDE5NDY3NywgMCwgNjU3NDgsIDQxNDEsIDk2ODIsIDY1Mjg3LCAxNTA4LCAxMjcwMTMsIDg3NzksIDEwNTY5LCAKLSAgICA4NzI1LCAxMzI5OSwgNjY2MzgsIDY1NzUwLCA0MjI2MywgNDE0NSwgNjM4MCwgNjU3NTEsIDY2NjEzLCA0Mzk5NCwgNjU3MzgsIAotICAgIDU1MjUwLCA5MTg1LCA5NTUwLCAwLCA0MzQwMywgMCwgMCwgMCwgNjU3MzYsIDQxOTUxLCA2NDgxNiwgNjU3NTYsIDk4MzIwNSwgCi0gICAgMTI5NTUsIDEwNTk2LCAyODg4LCAxOTQ2NDUsIDAsIDAsIDk2NTcsIDkwMTksIDE5NDc2NiwgMCwgMjg3OCwgNTM5MCwgMCwgCi0gICAgMTk0OTYxLCAwLCA2ODY3OSwgNDM1NTIsIDc1MDEsIDYzMjgsIDAsIDEwNDI5LCAxMDM2NSwgMCwgMCwgNDE5NDYsIDc1MDMsIAotICAgIDUyMzUsIDgwMywgNjgzODEsIDAsIDAsIDg5ODYsIDEyNjU0MiwgMTA2MzIsIDExOTM0LCAxMTQ1MiwgMTMzMiwgMCwgMCwgCi0gICAgMTI2NjQ3LCAwLCAxMTg4ODcsIDE3OTEsIDUxOTEsIDkyODgsIDY0ODIyLCAyODkyLCAwLCA0MzM5NCwgNTU1LCAwLCAwLCAKLSAgICA2NjY0NiwgMCwgMTE5MDAyLCAxMzE1MSwgNzQ1MTIsIDcyODksIDc0MDU1LCA2NDE2MSwgODg1NCwgNjQxNjIsIDU4NTgsIAotICAgIDQxOTI3LCAxMDU4MiwgMCwgMTc4NCwgMTM2MSwgMTk1MDQ3LCAwLCA3OTA1LCAwLCA2NDg2OCwgMTI4ODEzLCAxMzE1OCwgCi0gICAgOTIxNjYsIDcyMTEsIDAsIDkzNzEsIDczOTczLCA5MTc1NTMsIDY4MjgsIDE2MjUsIDkyMzAyLCAwLCAxMzQyLCA2ODQ0MCwgCi0gICAgNjQxNzEsIDEyNjcwNCwgMTA5MDMsIDk4MzQ5NCwgMCwgMCwgMCwgMCwgNDQ4MiwgNDE2MDYsIDAsIDEyODU2OSwgOTgzMTEyLCAKLSAgICAwLCA2NDM4MSwgMCwgMCwgMTk1MDkwLCA0MjI0NSwgMTI2NDY3LCA0MTk3MiwgMCwgNDQ0LCAwLCA5MTI3LCA2NjY4NywgCi0gICAgNjY2MTksIDEyNjQ4OSwgNzgwMjUsIDAsIDExMzQ5LCA0MDk5MSwgOTE3NTcwLCAwLCAxMTk1OTksIDEyMDgzMCwgMCwgCi0gICAgMTE5NywgMTI4MjgyLCAxMTQ5LCAxOTQ5NzAsIDAsIDAsIDQwOTkwLCA0Mzc2NSwgMCwgMzQ5MiwgMCwgMTI3OTQyLCAwLCAwLCAKLSAgICAwLCAxMjgzOCwgOTgzOTc4LCAxOTk0OCwgMCwgMzA5OSwgMCwgMCwgNDEwODcsIDAsIDAsIDAsIDExOTA1OSwgMTIwMzYsIAotICAgIDQxMzA5LCAwLCAwLCA4MTUyLCAwLCA0MTU1MCwgMTIyMjcsIDk4MzYxMywgMCwgMTI4MjgsIDEyNzUxMSwgMCwgMCwgCi0gICAgMTIwNzA4LCAwLCAwLCAxMDM4NiwgMTE5NTc0LCAwLCAwLCA5MjY4MCwgOTgzNzg5LCA2ODE1NCwgMCwgMTc0MywgMCwgMCwgCi0gICAgOTIyMzksIDY1MTg2LCA5MTc1NzEsIDAsIDk2MDYsIDAsIDAsIDY0NDM5LCAwLCAwLCA5MjY4NiwgMCwgMCwgMTk0OTY3LCAwLCAKLSAgICAwLCAzMzk1LCA5MzYyLCAxMDg3OCwgMCwgMCwgNzgzNjIsIDY0ODMwLCAwLCAxMjY1NTcsIDQxMDkxLCAzNDI2LCAxMzQ0LCAKLSAgICA4ODcwLCAwLCAwLCA0NzM1LCAxMjcwMTcsIDYxMTksIDEyODIyLCA0MjY5OSwgMCwgOTgzODI0LCA3NDgxOCwgMTQyMywgMCwgCi0gICAgNDI2MzcsIDQxMDgwLCAwLCAxMjAzOSwgMTA1NTksIDAsIDExODg5MiwgMCwgOTQ3MiwgMCwgMTE5MjksIDAsIDcxNzAsIAotICAgIDk1OTYsIDYxMzAsIDEyODgyNiwgNDM2MjksIDExNTc5LCA3ODcxMywgMCwgMTk0NzQwLCAxMjg2OTEsIDkyMTg1LCA2NjY5OSwgCi0gICAgNjQ0NDAsIDEwMDQsIDkyNTg0LCAxOTQ3MzcsIDQzMjM0LCA2NjAwOCwgMTI2MjcsIDAsIDY4NDE0LCAwLCA0MzYxOSwgCi0gICAgNDMzMDMsIDExMzAwLCA0MzMwNCwgOTY4NiwgNTg5MCwgMTE3NzYsIDc1NTgsIDEyNzE1OCwgNjU2MjcsIDAsIDEwNzE4LCAKLSAgICAxMzE1NCwgMzQ2MSwgOTEzOSwgMCwgMCwgMCwgMCwgNjUzNjUsIDczODc3LCA2NTYyOCwgNzgwMTksIDEyMDMxOSwgMCwgCi0gICAgNDE3MDgsIDEyODYwLCAyNjQxLCAxMjA2OSwgMTA4MzgsIDU0MDMsIDEwMzUyLCA3MDA4NSwgMTAwNjEsIDQzMjM3LCAwLCAKLSAgICA1MTQwLCAyMDksIDEyODg0NywgNDE3MDQsIDQxMDU2LCA0MzA3OCwgMTI4MTI1LCAxMTg4MDksIDAsIDEwODk5LCA2NTQ2OSwgCi0gICAgOTIzNjIsIDAsIDAsIDI0MTAsIDk5MywgMCwgMTIwNTg5LCAxMjA2ODksIDc4NjkzLCAwLCAwLCA3MjMyLCAwLCAxMTkyNTMsIAotICAgIDAsIDcxMTAsIDc0NDYyLCAyMDY2LCAxMDQ4OSwgNDIxNjYsIDQzNDYzLCAxMDY1OSwgMzYwMCwgMCwgNDIyNCwgMTMzNiwgCi0gICAgNDE1MTgsIDAsIDAsIDAsIDAsIDQxMTM5LCA2NDgyMCwgOTI1MzgsIDEyOTY2LCA0MTEzNCwgMCwgMCwgMCwgMCwgMjcyLCAKLSAgICA0MjYzLCA4NzkzLCAwLCAwLCA0MTUwMiwgMCwgOTgzLCAxMjU0OSwgMCwgMCwgMTE5MCwgNDEwOSwgMTMzNSwgODQxLCAKLSAgICA1ODg4LCA0MTM1OCwgNjQ4NjMsIDk1NDQsIDQzNDgxLCAwLCAxOTQ4MDYsIDcwMDI3LCAyMDk5LCA1MTIwLCAyNDA5LCAKLSAgICA3Nzk5LCAwLCA3NDQyNCwgMCwgMCwgNDczMSwgMCwgNjY2MjksIDAsIDAsIDEyNTUsIDQxNDksIDkyNDcsIDAsIDk5MTMsIDAsIAotICAgIDAsIDY0OTE0LCA5MTc3ODcsIDY1MTAxLCAwLCAxMTY5NCwgOTI0NzUsIDExNjkwLCA1ODM1LCAxMjcxNjQsIDY2NjI1LCAKLSAgICAxMDg0MiwgNDEzNTQsIDQyMTIzLCA0MzA5NywgMTE2ODgsIDY2NjM0LCAxMDk0LCAxOTQsIDY0NjkyLCAwLCA4MTgwLCAwLCAKLSAgICAwLCA5OTcyLCA3Mzg2NSwgNDUxOSwgNjExNCwgMTA4OTgsIDQzMDcyLCAwLCAwLCA5Mzk2MCwgOTgzMzIyLCAxMjY1ODEsIAotICAgIDEwNjk1LCAwLCA3NTQwLCAwLCA4ODEsIDc4NTcsIDYwNjcsIDY1MTY0LCAwLCAwLCAwLCAxMzMxMSwgNjg0MDMsIDQxODU3LCAKLSAgICA2NDMyMSwgODM1OSwgMCwgMTI2ODksIDAsIDE5NDU5NCwgMCwgOTgzMzEyLCA5ODM4ODEsIDY4MTgzLCAwLCA5ODMzMTQsIAotICAgIDEyODcsIDU0MzYsIDAsIDk4MzMxNywgNzQxNDIsIDkyMzI4LCA3NDE1MiwgMTE5MDc4LCA2MDUxLCAxMDQ5NywgNjk2NjgsIAotICAgIDg5ODUsIDEyMTA5LCA5ODMzMjMsIDAsIDEyNzI0MiwgMCwgMCwgMzY1MiwgMTA1MzcsIDAsIDEyNzYsIDEyMDQ0MCwgNjU0OSwgCi0gICAgMjc5LCA3Mzc0NSwgMCwgMCwgMCwgMTQ4OSwgMCwgMCwgMCwgMzg5OSwgMTAwNywgNDIxMjQsIDk4MzU1NywgNDIxMjIsIAotICAgIDkyMzM3LCA5MjM2NywgMCwgMTE5ODUsIDEzNDUsIDc4NjAwLCAwLCAwLCA4OTU2LCA0MzA4MywgOTQwNTcsIDQyMTM4LCAKLSAgICA3ODYxMCwgMCwgMTIxNTEsIDc4NjA4LCA3ODYwNCwgNzg2MDUsIDYyODUsIDc4NjAzLCA3ODYxMiwgNzg2MTMsIDY1OTQyLCAKLSAgICA0OTIsIDg2ODUsIDAsIDk4Mzc1OSwgMCwgNzg2MjIsIDQzNzEyLCAyNTgyLCAxMTQ3MCwgNjQ1MzgsIDc0NDQsIDc4NjE1LCAKLSAgICA3ODYxNiwgMjI5NywgMCwgNzM4MzcsIDExOTgyMywgMjUyNywgMTE5ODI0LCAxOTcsIDI3OTksIDkyNTk0LCA0MTk0NCwgCi0gICAgMTIwMjc2LCA5OTMzLCAwLCA2NjUxNSwgNzY3LCA1NTI0LCA3MDI4LCAwLCAwLCAxMTk4MjcsIDExOTgxNywgMTE5ODI4LCAKLSAgICA3ODYzMywgMTA4OTYsIDAsIDE3OTksIDEyMDQ5NywgNjk3MSwgNzQzMzYsIDEyODM0MiwgMCwgNjUzNDAsIDExODk3OSwgCi0gICAgNDE1NTEsIDI0MzQsIDk0MDE4LCAwLCAxMjA1NzksIDAsIDQ2MzEsIDAsIDAsIDY0MDcsIDAsIDYzMzgsIDQzMjE0LCAwLCAKLSAgICA3NTcwLCAwLCAzMTkyLCAwLCA4NDE0LCAwLCA5Mzk4MywgMCwgMCwgMCwgOTE2NCwgNjY2MTIsIDkzOTU5LCAzMTcxLCAKLSAgICA2NjIzLCA0OTYxLCA2ODM5NiwgODg2LCA1NTIxNiwgODY1NCwgNzg4MzIsIDk5OTMsIDc0MzkwLCA2NDYwMywgNzAwNjYsIAotICAgIDY5MjQxLCA5NTk5LCA3ODYyOSwgNDMwODQsIDc4NjI3LCA3ODYyOCwgNzg2MjUsIDIzOTksIDY5NjkzLCA4OTk0LCAxMDk0NCwgCi0gICAgNDEyMDgsIDk4MzcxMywgNDExNjgsIDgxNzgsIDAsIDMzNjcsIDkyMzM0LCA0MjUxMCwgNzg2NDEsIDc4NjM2LCA2ODA0LCAKLSAgICA3ODYzNCwgMTk0NywgMCwgMCwgOTI2ODEsIDQyNzU5LCAxMTA2OCwgMTcwNSwgOTMzMSwgMCwgNzQ3OTgsIDkxODEsIAotICAgIDY1MzU5LCAwLCA4MDE3LCAxMTk4MzEsIDY1MDk2LCA2NjcyMCwgMCwgNDM0NzUsIDAsIDQ5MDksIDEyMTI2LCAxMjg2NzMsIAotICAgIDEyMDY5NiwgNDkwNCwgOTgzMzMzLCA2OTY1MCwgMTM2NSwgOTI1MywgNDI3NTcsIDQzNDM2LCA3NDYyLCAwLCAwLCAwLCAwLCAKLSAgICAxMTk1ODcsIDY0NDE1LCAwLCAwLCA1Mzk4LCAwLCAxMjczODYsIDkzOTUzLCAwLCAwLCAxMTkwMTUsIDAsIDAsIDk0NzYsIDAsIAotICAgIDk4Mzc3NywgMTI3NjMsIDEyNjYwMywgMzYyOSwgMCwgMTMwMDUsIDAsIDM2MjgsIDAsIDAsIDkyNTAyLCAzNDY5LCA0MjEwNywgCi0gICAgNDIxMTYsIDkxNzU3OCwgNjQ4MDksIDI5MjgsIDQ5MDUsIDk4NTMsIDg1MSwgOTA0MCwgMCwgNjQ2NjUsIDQzMDg2LCA5MTE0LCAKLSAgICAwLCA0MjU4MywgOTMxNSwgNDgyMiwgNDkwNiwgMzg1MiwgMjg0NywgMTE5ODIxLCAzMjM2LCAxMTMxNywgMTI1MSwgNzc3NywgCi0gICAgNDE4NTIsIDExNDEwLCAxMDk2NCwgMCwgNDMyMjIsIDEyNjQ2LCAxMjAyNjksIDEwMjU5LCA5ODY1LCA2NTgyMSwgMCwgCi0gICAgNjAxOCwgOTIyOTAsIDAsIDEyMjc2LCAwLCA2ODM3MiwgMCwgOTIyNTksIDExOTI0NCwgMCwgOTgzMjMwLCAxMDQ2NywgMCwgCi0gICAgMjQ0MywgMTA5MTgsIDc4MjE3LCAxMTk4MjUsIDEwMDEsIDkyNDEsIDE5MjcsIDAsIDAsIDczOTg3LCAxMjc4ODUsIDAsIDAsIAotICAgIDExODgyOCwgMTIwMjcxLCA2NTY3OCwgMTI4NjcsIDAsIDgyNjAsIDc3OTQ1LCA3NTE5LCAxMTUwNSwgMTIyNzQsIDg5MDQsIAotICAgIDUxOCwgNjU4NTcsIDAsIDEyODY3NCwgMTMyMDQsIDQzODcsIDg1NywgMCwgNjUzNjksIDAsIDkyMzM2LCA0MzEyNSwgCi0gICAgMTIwNTkyLCAwLCAwLCAwLCAwLCA1MTM2LCAxOTY4LCA5ODMwNDEsIDEyNjYyNywgMTMzNywgNjQ5NjcsIDE2MjksIDAsIAotICAgIDc5NiwgNjY1MDYsIDAsIDc0MTIzLCAxMjg3NywgMTIwNjQ5LCA0MjMxNCwgNDMzODgsIDAsIDc0NDAzLCA2MTIwLCA0NzgsIAotICAgIDY1MTUxLCA2ODEyOCwgMTI4MTQ3LCA0MzA4MiwgNjAxNiwgMCwgNDIyODQsIDEyODUwNywgNDI3NiwgMTIwNiwgMzYxOSwgCi0gICAgNDE2MzgsIDY5NjkxLCAzODQzLCAxMjAxMSwgODg1MywgMzM2MSwgMCwgNDkwLCAxMDcxNSwgNzU3OCwgNjgzODQsIDAsIAotICAgIDY1MzUwLCAxMDUzMCwgMTIzNDgsIDg2NTMsIDc0MzE0LCA0MjQzNSwgNjE1NCwgOTU1MSwgNjUzNTQsIDc4NTIyLCA3ODQsIAotICAgIDQyMzk3LCAzMzQsIDAsIDQyNDE2LCA2NTM1NiwgNjUyNzMsIDc3OTg3LCA2OTY2NiwgNDQ0MiwgMTAzNjQsIDAsIDc3OCwgCi0gICAgNDE2MjYsIDQyNDU1LCA3OTg5LCA3NDA2MywgMzIyNywgNjk5MDcsIDEyNzI3NSwgNzM5ODMsIDI5MTUsIDExNTAyLCAKLSAgICA0MTAyMiwgNDE3MDIsIDEwMzA5LCAxMjcwMzUsIDc4MzIwLCAwLCA2OTc1LCAwLCA1NDE1LCAxMjE3NiwgMCwgNzQxOTMsIAotICAgIDM0NjIsIDY1MjE1LCA0MjYyOSwgNzg2OTEsIDczNzg0LCAwLCAwLCA5NzU5LCAwLCA3MDA1NywgMTI3MjU0LCA4MTE0LCAKLSAgICA3ODY5OCwgNzg2OTcsIDc4Njk2LCA3ODY5NSwgODcxMCwgNDI0OTUsIDExODk1NiwgMCwgNDA1MSwgMTA0NjAsIDQzMzY0LCAKLSAgICAxMTg5MTcsIDEzNTYsIDEyMTYxLCA0MjcxMywgMTI4ODU3LCAxMjcyNjgsIDE2MTksIDk3MDMsIDQzMTUyLCA0MjQ4OSwgCi0gICAgNDIxMTIsIDEyNzk3OCwgMTg3NSwgMTA4MDgsIDQyMTA5LCAxMjAyODQsIDQxODYwLCA2NDg2MiwgMTMzMDUsIDY0OTA3LCAKLSAgICA1Mjg5LCAxMzE0NCwgMTI4NjU4LCAwLCA1NTc1LCA5Njc1LCAwLCA1OTQwLCAyMjYsIDI2NDksIDYzMzYsIDk4MzI3NywgCi0gICAgMTE5ODMwLCA0MzIzNiwgMzM4MiwgNDI0NDksIDY0OTgsIDE2NTgsIDExOTM2LCA3ODIzMiwgMCwgMTEyNjksIDEwMTUxLCAKLSAgICA3Mzc1OSwgNDMxMDAsIDY5ODg4LCA2NTUwOCwgMCwgMCwgMCwgODkzNSwgOTE3OTg1LCAwLCAwLCAwLCA2MTYsIDc0NzUzLCAKLSAgICA2NTE3OCwgNDY4NCwgNzg3MDEsIDExOTY1MywgMCwgMTI2NTUxLCAwLCA2MDQ4LCA3NDQ2MCwgNDIxMTAsIDczOTY1LCAKLSAgICAxMDg3MCwgODU1NywgMTEwNTQsIDY4NjY0LCAxMTkwNDksIDk2ODEsIDQ0NzUsIDAsIDQxMTQyLCAyMTAwLCAwLCAxMjA3MzEsIAotICAgIDYwMzUsIDAsIDc2NTEsIDEwMjk2LCA2NDQ0MywgMCwgOTgzMjk1LCA5MTc5ODcsIDAsIDExODk2NiwgNzQxNDQsIDQwOTk3LCAKLSAgICAwLCAxMDM5MiwgMTAzMjgsIDQwOTk4LCA0MzQ2MiwgNzQ0ODgsIDAsIDk4MDAsIDg5NzksIDAsIDEzMzA3LCA0MTAwMCwgMCwgCi0gICAgMTE5MjM5LCA2NDg3LCAzMzg2LCAwLCAxMDM0NCwgMCwgNjUyOTksIDUzOTQsIDQzMjQ2LCA3ODI0MywgMTAyMjAsIDY2NTA1LCAKLSAgICA0MTIwMCwgMTI4NTgzLCA0NDI1LCAwLCAwLCAwLCA0MzA3NCwgNzM3OTksIDk4MzIwMCwgNzgxNDcsIDAsIDEyMTczLCAKLSAgICA3ODU0NSwgMCwgMTI3MDExLCA2NTMzOCwgMCwgMCwgMTE5NTgyLCA0NDc0LCAwLCA0MzA5MywgMTI4NjQ0LCAxNTg3LCAwLCAKLSAgICAxMjczNzIsIDY0NDc1LCAxMjgwOTgsIDEzNjksIDk4MzY3MiwgOTk1OSwgNzkyNywgMCwgNDU2MCwgMCwgMCwgOTIyNzcsIAotICAgIDk4MzYyMSwgNjQ5NDgsIDQ0MzAsIDc0MzQ3LCA0MjYwMSwgNDUxNCwgNjY0MzQsIDkzOTU1LCA4MTk0LCA2NTQ2MiwgCi0gICAgMTA2MjYsIDEwOTY1LCAwLCA4ODkzLCA5ODMzMDEsIDEyNTQyLCAwLCA2NTM0MSwgMCwgNjU4MjksIDc5MjUsIDExOTgyMiwgCi0gICAgMTA0NzUsIDAsIDAsIDEzNTIsIDExMDY5LCA3NzA3LCAxMjc1NjAsIDEyNjQ4NiwgNjUyNzksIDEyNzEwMiwgNjgyMDcsIAotICAgIDEyNzEwMCwgNzA5OSwgNjA0MCwgMTI3MDk3LCAxMDA3MSwgMCwgOTMzNiwgNDM3NTAsIDAsIDg4OTksIDc3OTgsIDY0NDc0LCAKLSAgICA2NDI1OSwgNjk4NzMsIDY1MTg4LCA3ODIwLCA0MzAxOCwgMTI3MDgyLCAwLCA3NzQ2LCAxNDkyLCA3ODU1MSwgMTA4ODQsIAotICAgIDc3OTgyLCAwLCA1MTI3LCAxMTI4NSwgNDI1MDEsIDU0OTUsIDQyNzMsIDQzMDk1LCA0MTQyNiwgMTA4NDksIDU3MzAsIAotICAgIDI5OTksIDYzNDIsIDY4NjM2LCA3NDMwNCwgMzcxLCA2NDM3MywgNjAyMywgMTY5LCA1NDk3LCAxMTcwOCwgMCwgMCwgNjMyMywgCi0gICAgMTk0Njg0LCA4MjI0LCAwLCA4OTM4LCA2MDQzLCAxMjczOCwgMCwgOTgzMDc2LCA1MzIxLCAwLCAxOTQ3OTgsIDAsIDI1ODksIAotICAgIDc0MzMyLCAxNjg5LCA3ODAyLCA0NjgzLCA3NDMxOCwgNDI3MDQsIDEyMDI5NiwgMTE5MDUsIDAsIDAsIDEyODUxNiwgCi0gICAgMTI4MTYzLCA3NDUxMywgNjA0OSwgMCwgNDAyNywgODM0LCAxMTg5NjIsIDE4MDMsIDAsIDE1MDMsIDAsIDAsIDcxMzEyLCAKLSAgICA1NzMxLCAxMzgxLCAyMzg3LCAwLCAwLCA4Mjg5LCA2NDUyNSwgNjU4MTcsIDI4ODEsIDQzMTQyLCAwLCA5NjAxLCAyODc5LCAKLSAgICA5NjY4LCA5NzY2LCAwLCA1NzI5LCA5MTc4MzMsIDc0NDEwLCA2MDM2LCA2NDg4MSwgNDAyNiwgOTM2MSwgMTI3MDkxLCAKLSAgICAyODg3LCAwLCAzNTI2LCA2Mjk4LCAwLCA3Nzg5NywgMTIwMDk1LCA3ODUxOSwgMCwgODU3MiwgNjAyMSwgNzc4OTYsIAotICAgIDEyODI4OCwgNzc4OTUsIDQzMTU1LCAwLCAxMTk4NDksIDMxNDYsIDEwOTU5LCA5NDgzLCAwLCA3Nzg5MywgMTA5ODEsIDE2NiwgCi0gICAgOTE3ODQxLCA4NjM1LCA5ODM2MDYsIDEwNjIzLCA0MDgsIDExOTA1OCwgMTI3NTA3LCAxMzI5OCwgMCwgNzQyNiwgNDE2NDEsIAotICAgIDEyNzE3LCAwLCA3NjA3LCAxMDYzOSwgNDMzOTYsIDAsIDAsIDQxNjQzLCA3NDEzNCwgOTgzMDU0LCA4NzEzLCA0MTY0MCwgCi0gICAgMTAyMjEsIDQxNjQ1LCA2NjcxMiwgNjY0NSwgNjQ2LCA2NjcyNiwgNjY3MTEsIDQyMTI5LCA5Mzk5NCwgNzc5MDEsIDM0NzIsIAotICAgIDg2OTcsIDAsIDAsIDk4MzgxNSwgMCwgMCwgMCwgNTgwOSwgMTk1MCwgMTE5MzU2LCA5MjQzMiwgNzQ1NzIsIDAsIDQyMTM2LCAKLSAgICAwLCAwLCAwLCAwLCAzMjQ3LCAxMTk4NTQsIDY1MDE3LCA5ODM5NTMsIDY4NDI4LCA2NjY2OCwgMCwgMCwgMTA5ODMsIDAsIDAsIAotICAgIDAsIDQxNTY3LCAwLCAwLCAwLCAxOTQ2MjQsIDExOTg1MywgMCwgMCwgODI4NSwgMCwgNDUwOSwgMCwgNjY0NzEsIDEyMjE2LCAKLSAgICAwLCA0MDk4OCwgOTI1OTIsIDc0ODA5LCA0MTcyNywgMCwgNDI4NDgsIDIzOTYsIDkxNzc2NiwgMCwgNzQwMTgsIDkxNzUzOCwgCi0gICAgNjQ5NDAsIDcwMjcsIDM4ODYsIDAsIDQyNDU3LCAxMTkwMDgsIDAsIDk5NiwgNjgxMjMsIDk0MDU4LCA0MjQ5LCAwLCAKLSAgICA5MTc1OTQsIDExNzA3LCA4MjIyLCAwLCA3OTM5LCA5MjQ1NCwgOTI0NjAsIDEyNzgwMSwgOTE3NTkyLCAxMjgzNTksIDg1MzQsIAotICAgIDEyNzE1NCwgNDA5ODMsIDAsIDk4MzI0MCwgMCwgNzIwMSwgMTI1NjEsIDAsIDQyMzcxLCAxMjU1OCwgMTU0MCwgOTE3NTQ5LCAKLSAgICAxMDA1MiwgNDA5ODIsIDAsIDAsIDE0ODgsIDAsIDAsIDAsIDkxNzU1OSwgMCwgMCwgMTU2MywgMTI4MDM0LCA5NjE5LCAKLSAgICA5ODM5NDAsIDAsIDAsIDEyNzg3MiwgNzEzNjMsIDU4MDMsIDc3OTcsIDYwNzAsIDEwMDA2LCAwLCAyOTIyLCA2MDgyLCAwLCAKLSAgICA2NTAwOSwgOTgzOTQyLCAxMjU2NywgMTI4NzAzLCAwLCA0MTQxMiwgMCwgMCwgMzYwNywgOTIwMCwgMTAwNDYsIDk2MTIsIAotICAgIDQyMTUzLCA4MjE4LCA5NDg1LCAwLCAyMDMyLCA3ODM1NCwgMCwgMCwgMCwgMCwgMCwgNDMwODUsIDYwNTcsIDUwOCwgCi0gICAgOTM5NjgsIDEyODAxNSwgNjc5NjgsIDAsIDkyNDA1LCAwLCAwLCA2MzgsIDYwODMsIDExOTA3MiwgMCwgMCwgMjMwNSwgCi0gICAgNzgzNDgsIDY4MDk2LCAwLCA2MDU2LCA2NjU5LCA2Nzk2OSwgMCwgNjA4NSwgMCwgMCwgMzkxNSwgNDE2MzQsIDAsIDQxNjM5LCAKLSAgICA2MzkxMiwgMTE5NDEsIDAsIDQwMjgsIDE3ODcsIDQyMTgwLCA0MzA5NiwgNDM3NTMsIDMyNDksIDE3NjgsIDkzOTgyLCAKLSAgICAxMjMyOCwgNTAxLCA5Mzk4NSwgMTA2MDEsIDAsIDU4MywgMCwgNDE5NzcsIDAsIDY2MDA0LCAxMTkzNTAsIDY1MDUsIAotICAgIDc0MDEwLCAwLCAxMzA2NCwgNTUyNjcsIDEyMDgxMCwgNjUwMCwgNTUyNiwgNjUwNDksIDAsIDczNzY0LCAwLCA5MjM3NiwgCi0gICAgMTI3NDUsIDk2NzgsIDAsIDEyMDU4NywgOTg2OSwgMTI4ODE1LCAxNzcxLCAwLCA4OTM2LCAwLCAwLCA0MjA4LCA3ODM0MSwgCi0gICAgNzg1NjcsIDc4MzQyLCAwLCA5ODM0NTYsIDc0MTAxLCAwLCAxMTc2MiwgMCwgOTI0MjIsIDc3OTk3LCA2ODAxMCwgNjY0NzUsIAotICAgIDAsIDUwMjcsIDc4MTcyLCAxMjg4NzgsIDAsIDUwNjksIDczODYyLCA1MDI4LCA5ODk3LCAwLCA3MzczOSwgNTAyNiwgCi0gICAgOTgzMjUzLCA2ODYzOSwgNjMzMSwgMTAwNzksIDg5MzEsIDAsIDE0MTUsIDg4NjYsIDQxOTAxLCA3NDc5MCwgNzgxMzgsIAotICAgIDExOTM2MSwgOTgzNTY0LCA0MzEwNiwgNTAyOSwgNjUzMDksIDE1ODAsIDM1OTgsIDY4NDI0LCA0MTA3MCwgNzc5MDMsIDAsIAotICAgIDM0NDAsIDc4MjE1LCAxNTYyLCAxMjg2NTYsIDEyNzE3NSwgMTE5MzU4LCAxNzE2LCA5ODM2NzksIDEwNjAwLCA5MTc4NjcsIAotICAgIDYyMCwgNDEwMDEsIDYwMjgsIDAsIDQyODkyLCAwLCA3NDgyMiwgNTAyNCwgMTIwODI5LCA0MTAwMywgMCwgNTAyNSwgCi0gICAgNjk4OTIsIDk4MzIwOSwgMCwgMTE4ODg1LCAwLCA2NTU1NywgMCwgNzQ1NDEsIDk4MzU4NywgMTE1OTksIDEyODIwOSwgCi0gICAgMTE2MDIsIDYyNDMsIDExNTc0LCAxMTU4MSwgMTE1OTcsIDExNTk4LCA2MjUzLCA2MTA1LCAxMTU4NCwgNzQxOTUsIDExNTY5LCAKLSAgICA2NTI3NSwgODkwNiwgMTI3MDk2LCA1NzU1LCAyNjM2LCA5ODMyMjcsIDEwODE1LCAxMTYxOSwgMjMwMSwgNDE1NDAsIDc4MTUsIAotICAgIDExNjE2LCA2OTc5LCAxMjA4MCwgNzcyMSwgMTE2MDQsIDc4NjksIDE1OTIsIDAsIDQyMTUyLCA3ODQ5OCwgNDEwNDgsIAotICAgIDkxNzc2MywgODI5LCAwLCA5MjQwNiwgMTk5NTAsIDAsIDEyNjQ4MiwgNjYxNiwgMCwgMTE4ODc1LCAxMDk1MywgMzkxLCAwLCAKLSAgICA2OTc4NSwgNDgyLCA0MjI5NiwgMTE1ODgsIDAsIDQzNjA2LCAwLCA2ODM5NywgNjYzNzAsIDc0NTA2LCA0MjMzNSwgCi0gICAgOTgzMTg4LCAwLCAwLCA3NTM4LCA1MzE1LCAxMjA2NDQsIDQyNDkxLCAwLCA0MjA2MSwgMTI4MDg4LCA0NTc2LCAwLCAKLSAgICA2ODQxNywgNDM4MDksIDQyNzcsIDAsIDQwMzksIDY0NDcyLCA0MjMzOCwgMzY4LCA0MjA1OCwgMzk2MCwgMTEwNDMsIAotICAgIDExMzM3LCA3ODIwOSwgOTE3ODIwLCA2Mzk4OSwgMzk1OCwgMTIxMzIsIDE4NDksIDAsIDk5MjEsIDQyNDUxLCA0MjUzLCAKLSAgICA0MTE0NywgNDIwNjQsIDExOTU5LCA0MjQwNCwgNDExNjAsIDAsIDM2MTgsIDc4MzM4LCAwLCA0MzMwMCwgNTE1NiwgOTI2MjksIAotICAgIDAsIDkyOSwgNjgyNywgNDIwMzUsIDQyNDM3LCAxNTU1LCAwLCA4NjkxLCA2NjQzNSwgMjIxNSwgNDE2NjIsIDk0MDEwLCAwLCAKLSAgICAwLCAwLCA5Mzk1MiwgNDU3OCwgNjQ1MTMsIDQxNjY0LCA5ODM3MzQsIDQyNTc4LCAxMjg3OTQsIDQxNjYxLCA3ODcxNSwgCi0gICAgNDMyNjcsIDkzNTYsIDAsIDAsIDAsIDEyODYsIDEwMTY2LCAwLCAwLCA2NDcwNywgOTgzMTI3LCA0MjQ3NiwgNzczMCwgCi0gICAgOTgzODU5LCAxMjg1MjIsIDQyNDgzLCAwLCAwLCA0MjMyNCwgNDIyOTEsIDEwMDIwLCA0MzM1OSwgMCwgNjY0MSwgNTI1LCAKLSAgICA0MTYyNywgOTE3OTIzLCA4NzYzLCAxMjgzMDQsIDQxNjI4LCA1MzMsIDExOTMxLCA2NTIyNSwgODMyMSwgNDI1MDQsIAotICAgIDQyNTgxLCAwLCA2OTE1LCA0MjMxMCwgNDM3NywgODU1OSwgMCwgNzQzNjAsIDAsIDEzMTkzLCA2NDM1MCwgMTE2NjYsIAotICAgIDg2NzksIDQxOTI0LCAxNTc2LCA3NzM1LCA5MjM5OCwgMCwgNzM4NDAsIDk4MzA5MiwgMTEzNzQsIDc4MDQzLCAxMDg4OSwgCi0gICAgNDM0NjEsIDc3NTcsIDQyNDYyLCAxMjAyMjYsIDEwMDI5LCA2NjQ5MywgMjcxOCwgNDE2OCwgNzM4NDIsIDEzMzA4LCAKLSAgICAxMjAxMTIsIDAsIDExNzksIDQ0NDAsIDAsIDc3OTQ4LCAzNjMsIDExMDE1LCA3Nzk0NywgNzc5NDQsIDY0Mjk2LCAxMjcwOTAsIAotICAgIDY2NjkyLCAxMjA4MjYsIDAsIDY2NDkyLCA2NTkzLCA2NDYyNSwgNDE5NjMsIDkyMTc3LCAxMTkzMjksIDAsIDEwMDEzLCAKLSAgICA2NDQzNCwgOTI1MjAsIDEyNzA5NSwgOTQ5MiwgMTE3ODIsIDY0MzgyLCAxMjgzMywgNzc4MzAsIDAsIDEyOTcsIDQxNjMwLCAKLSAgICA2MzAsIDEyNzA5NCwgMCwgMTIwNzc0LCA5MjQ2NSwgMTA0MywgNDM2NTIsIDY2MjIzLCAxMDA5MCwgMCwgMTI4NjY0LCAzMTMsIAotICAgIDkxNzU2MywgNDE4ODEsIDAsIDQyMzExLCA3NDQ1LCAwLCA1NzUwLCAxMDc1OSwgOTQxOSwgNTUyMjIsIDk0MDUsIDExMjY4LCAKLSAgICA0MjkxOSwgOTM5OCwgODUyNiwgOTM5OSwgOTQyMiwgMCwgNjY0OTUsIDAsIDAsIDEyNzIzOSwgNDE3MTgsIDEwNzA3LCAKLSAgICAxNjAzLCAwLCAxMTkwMDMsIDAsIDYzMSwgNzc5NTIsIDY5NzAzLCAxMzE2MSwgNjUyNzIsIDAsIDEwNTQ2LCA3NDIxMCwgCi0gICAgNzgxMDEsIDExNjAwLCA3Nzk2MSwgMjc5NywgNzM4MjEsIDQyNDI3LCAzMDYsIDcxNCwgMzA1OCwgNDIzODEsIDc3OTYyLCAKLSAgICAxMjcwODAsIDEyMzUxLCA0MjM5NSwgMCwgMTE2MDcsIDAsIDQyMjgyLCA3Nzk3MSwgNzc5NjcsIDkxNTcsIDczNzY1LCAKLSAgICA2NjM2NCwgNDI0MzMsIDc3OTY0LCA3NjAzLCAxMjgwMywgMTgwLCA0MjE0MSwgMCwgMTIwNjEyLCA2NjQ5NCwgMTI2NzQsIAotICAgIDgyNDQsIDM2MiwgOTI0MzksIDAsIDgwMzcsIDQzNzc3LCAxMTUzNSwgMCwgNzQ4NDUsIDUxODUsIDcxNjUsIDU1MjEsIAotICAgIDEwMzM0LCAyMDkzLCA3MTMyOSwgMTAzMDIsIDEyODExMiwgMTAxMDQsIDEwMjcsIDUxODEsIDAsIDAsIDEwNTIzLCAxNDQ2LCAKLSAgICA0MjMyMCwgNDE2NDYsIDk5MSwgNTE4OSwgNDI0NzIsIDQxNjQ3LCAxMjAxMDUsIDE3MjIsIDU1ODEsIDQyODk4LCAzNDA1LCAKLSAgICAwLCAxOTQ2NDQsIDU1MjMsIDAsIDQyNjIwLCA5MjQ0NywgOTgzODE5LCA5NTQ5LCAwLCAxMDU0OSwgNTUyODIsIDk2NjEsIAotICAgIDQzNjgyLCAwLCA3NzkxMCwgMTIwMDI2LCA3ODcwOCwgMCwgNzc5MTEsIDAsIDQxOTkxLCA5ODM4OTMsIDAsIDc2MzAsIAotICAgIDk4NDYsIDc2ODQsIDEwMzUwLCAwLCAxMTc0LCA3Nzk4MSwgNDI3MzMsIDc3OTc4LCA3Nzk4MCwgNjY0ODUsIDc3OTc3LCAKLSAgICA0MjI3NywgNzc5NzQsIDQyNDU2LCA2NTY2NywgMTI3MDM3LCAxMjMzMCwgMTI4MjcyLCAwLCA0MjQxNywgNDIzODMsIAotICAgIDY2NjMwLCA0MTM0NCwgNjI5MywgMCwgNjYyNTIsIDc3OTg0LCA3NDQ0MywgMCwgMTAyMDksIDgzMTMsIDQxOTUsIDc0NDM1LCAKLSAgICAxMzE2LCA2NjY5MCwgMTIwMDMyLCA2MzMyLCA2NDg5NCwgMCwgNjU4NzEsIDc4MDYwLCAxNzM2LCA5ODM2ODQsIDM5MDEsIAotICAgIDEyMjI4LCAxMjAxNTEsIDY1MjAwLCAzMzgzLCAxMDQ0NiwgNzg4NDEsIDY5MywgOTEzMCwgMzE0LCA2NDE0OSwgNDI0MjAsIAotICAgIDExOTQ5LCA5ODM2NjksIDEyMDE1MiwgMTEwMjYsIDEyODc4OCwgNTMzMiwgNjk0MCwgNjQxNTQsIDEyNjM1LCAxMjcwMDcsIAotICAgIDQyNzA2LCAxNzUxLCAyNzMsIDgxNjUsIDEzMTY2LCAxMjA3NjMsIDc4ODQwLCA3MTM2OCwgMTI4MjQsIDAsIDQ1MjgsIAotICAgIDUzMjAsIDYzMDEsIDQzNjYyLCA2MTMzLCA5MzM5LCA5NDYzLCA0MjM0NiwgMTA5MjIsIDY0NTYwLCAzNzU3LCAwLCAwLCAwLCAKLSAgICA2NTg2OSwgNzM3NjAsIDI1NjksIDAsIDIzMjYsIDY1NzQwLCAyNTY1LCA0MjQ1OSwgNzU5NiwgNzkyMSwgOTgzODY4LCAKLSAgICA3NDA5NSwgMTI3OTgxLCA0MTg0OCwgMjU2NywgNjYwMDYsIDAsIDQwNDQsIDkyNjQ2LCAwLCAxMjIzMywgOTgzODcxLCAKLSAgICAxMDIzLCA0NzQsIDAsIDExOTgxOCwgMCwgMCwgNDI0ODcsIDY1NTU2LCAwLCAxMjc4NjYsIDQyMjk1LCAwLCAwLCA3MTMyMiwgCi0gICAgOTI1MTgsIDk4MzUsIDY2NDk5LCAwLCA1NDE3LCAxMjI3NSwgMTA4OTUsIDAsIDI3NCwgMCwgMTg1OCwgMCwgMCwgNTUyNTEsIAotICAgIDEwMTE4LCAzMTMzLCAxMjgwMDgsIDczNzk1LCAwLCA5NjEwLCA4MDY4LCA4MTk3LCAwLCA2OTksIDAsIDQxNjY1LCA1ODY4LCAKLSAgICAwLCA5MjY5NSwgNDIxODIsIDc1ODEsIDE5OTQwLCA0MzY2OCwgNDE2NjcsIDEyODA1NywgMCwgMTkyMywgNjU1ODMsIAotICAgIDY1ODAyLCA5Mzk3MCwgNjQ1OTcsIDQzNDQ0LCAxMTkxODQsIDkyMTk3LCAwLCA2NDY0LCA3MDM2LCAyOTk2LCAxOTM3LCAKLSAgICA5ODM3NTEsIDAsIDQxODM1LCA0MDQ3LCA0MTg0MiwgMCwgNjQxMDcsIDAsIDAsIDExMDE3LCAxMjA2MDEsIDAsIDI5MywgCi0gICAgNzc5NjYsIDkyMTY5LCA2NDc5MSwgNDE4MjcsIDQyNDY2LCA0MzQyMiwgMTA1NzksIDg1NjAsIDcxMzUwLCA2NTQxMywgCi0gICAgNzc5NjMsIDQ4MDMsIDEyOTY0LCAxNzM5LCAxOTQxLCAzOTAwLCAwLCAxNzEzLCA3Nzk2OSwgMCwgNzM5NTcsIDExNDA3LCAKLSAgICA0MjQ0MSwgNDE5NzEsIDYyOTcsIDEyMDA5OCwgNjQxMDUsIDEyODA4MCwgNDI0ODEsIDExNzE2LCA2NjQ3MywgNzE3OSwgCi0gICAgNDIyODksIDAsIDY0MTAzLCA5NjksIDAsIDkzNTIsIDAsIDYxNjUsIDY0MTAwLCAwLCA2NjMyLCA3Mzg2MSwgNDI0MDIsIAotICAgIDc0MzI3LCA3ODA2LCAwLCA4OTE0LCAwLCAwLCAzMTgzLCAxNDM1LCA2NDg3NiwgMjk2OSwgNjA0NiwgNjQ0NDEsIDYyMDgsIAotICAgIDY3ODQ5LCA1NzQ2LCA3Mzc0OSwgMCwgNjQ0MTYsIDQyNDIyLCAwLCA5ODMwNDYsIDcwODIsIDczNzc1LCAzMzgsIDUwNTksIAotICAgIDE5NDcxOSwgMCwgNDIzMjgsIDEwNzY3LCAwLCA4MTE1LCAwLCA3NDc1OCwgMCwgODIyNywgMjA3MywgMTIxOCwgOTE3NzkwLCAKLSAgICAwLCA2NTg0OCwgMCwgMCwgNjk4NjMsIDAsIDEyNjk4NywgNDQ4NiwgMCwgMCwgMCwgMTA5MjUsIDAsIDAsIDAsIDk4MzU4NiwgCi0gICAgNDIzMDksIDEwMjU3LCA2NTE5MSwgMTAyNzMsIDAsIDEwMzA1LCA0MjQ2MSwgMCwgNDIzNDksIDg4MzIsIDc4MDUxLCAKLSAgICA2NDEyNywgMTA2NDQsIDQyNjYyLCA3ODgyOCwgNDIyNzgsIDc0NDUxLCAxMjY5ODgsIDY5ODc0LCA3Nzk0LCAwLCA0MjQyOSwgCi0gICAgNjM3NywgNDIzMTYsIDExOTAyNiwgMzY2OSwgMzk2OCwgNDI0NjgsIDcxMzE5LCA2OTY1OCwgMCwgNjU0MDIsIDExOTU4MSwgCi0gICAgMCwgMCwgNjQ5MzMsIDAsIDQxOTYwLCA2Njk5LCAwLCAwLCAxMjgzNTQsIDY4MjMsIDQyMzkxLCAxNTg4LCA2NTQwMCwgCi0gICAgODQwOSwgNzgyMjMsIDE5OTY3LCA2NTM5OCwgNzg3LCA3MTMxNSwgOTE3OTM5LCAxMjc3NDQsIDYxMTUsIDIwNzgsIDQxNjU0LCAKLSAgICA0MjQ4MCwgMCwgOTI2NTAsIDQxNjU1LCA2NTQwMSwgNDM5NzUsIDAsIDAsIDAsIDY0NCwgNjU1MDAsIDQxNjU3LCAxMDc3OCwgCi0gICAgMzY1OSwgOTUzMywgMTg0LCAxNTUzLCAxMzEwNywgNjU0ODQsIDY5NjQ4LCAxMDUwMiwgNzQ0NTcsIDAsIDAsIDQxNTU0LCAwLCAKLSAgICA4MjIwLCA5MTc5NDMsIDQxNTU3LCAwLCAwLCAxMTA3MCwgMTE5MjIxLCA1MTU3LCA0MDIwLCA3Mzg1OCwgNDE1NTUsIDk1MTQsIAotICAgIDY0ODE4LCA2NTEwMywgNjQ2NDEsIDY0MzAzLCA3ODEzMSwgNzUyMCwgMCwgNzQzNzcsIDExMDI5LCA2NjY1MSwgOTgzMDY4LCAKLSAgICAwLCAxMTg5MzAsIDY0NTI3LCAwLCA3ODc3LCA3MzgwMywgOTgzNzk4LCAxMjczNDgsIDEyMDA5NiwgNzQ2MDIsIDk5NTUsIAotICAgIDExOTU1NywgNDA1NSwgNDI4MTcsIDAsIDY1MjEyLCAxMTcxNSwgMTIxOTAsIDEyMzE5LCA3ODYzMCwgMCwgNzg2MzEsIAotICAgIDk1MDIsIDY1NDI3LCAwLCA2NTQyNCwgMTI2MDcsIDAsIDk3MzQsIDY1NDI1LCAwLCAwLCAxMjczNTcsIDc4ODM1LCA5MjQxMCwgCi0gICAgMTAxMTIsIDEwODI3LCAwLCA5ODY2LCA3NDUyNywgNjY2NzUsIDAsIDg2MjUsIDY0MzQ2LCAxMTI5MCwgMTA0NzcsIDAsIAotICAgIDg2MzYsIDk4MzkyNywgODMxNSwgNjU0NDQsIDk4Mzc5MywgMCwgNzQ1OTUsIDYxNTIsIDAsIDAsIDY2MjksIDEyNzEwOCwgCi0gICAgMTIwMTcxLCAwLCA3NDU4OSwgNDM5OTMsIDAsIDY5NzkwLCA2NDQzNSwgMCwgNDM2OTAsIDExMDQ2LCAxMTQ5MCwgNDI3MzAsIAotICAgIDQ0ODUsIDEyNzEwNywgMCwgNjQ5MjYsIDAsIDAsIDAsIDU4NjksIDEyNDM3LCA0MjcyOCwgMCwgNzA0MCwgMzU4OCwgMCwgCi0gICAgMTI4MjUsIDAsIDAsIDEyNzI1LCAwLCAxMjcxMDYsIDc4NjQyLCAyMjMsIDAsIDY5Njc1LCAxMjAxNjYsIDQyNDQ0LCAwLCAKLSAgICA2NDQ5OSwgNjUyNDUsIDAsIDExNzEsIDAsIDY5NzE3LCAwLCAxODA1LCA4NzcyLCA0MzgyMCwgMCwgOTkzMCwgNjUyNDcsIAotICAgIDc4NjE5LCAxMjAxMTEsIDIzMzgsIDAsIDExODg1MywgMCwgNDI2NzYsIDAsIDY0ODAwLCA2NTIzNiwgNjc2NDQsIDY4MTI2LCAKLSAgICAxMjEzLCAwLCA2NDA3NSwgNzk3LCA2NDA3NCwgODczNCwgNDIxMiwgMTI3MzY5LCA2NDM4NywgNDExNSwgMCwgNTAwNSwgCi0gICAgNjQwNzAsIDY0MDczLCAxMDY3OSwgMCwgNzc5NTQsIDk0MDIsIDY0Mjc2LCA0MjYsIDAsIDAsIDgyNTEsIDEwMTM2LCAKLSAgICA2NTQzNiwgMCwgMjEyMCwgNDMzMDIsIDEyMjQsIDAsIDY1NTc2LCA3NDE5MiwgMTA3MDEsIDE3NjQsIDMxMDEsIDEyNzgxNSwgCi0gICAgMTI4NTgsIDEyMDE1OSwgMCwgMTEzNzMsIDYzNzgsIDEyNzg1OSwgMTIwMTAzLCA4NjYzLCA5MzEyLCA0MTY0NCwgNDUzOSwgCi0gICAgMjEyOSwgMCwgOTIyMiwgOTgzNzM4LCAwLCA0MjU5LCA5MDkyLCA3NDU2NywgNDE5NjEsIDAsIDEyNzI0LCA2NjM1NywgCi0gICAgNDIzMzEsIDY0OTM1LCAwLCAwLCAxMjkzLCA3OTQ3LCAyMTMyLCA5ODM3NjcsIDc0NTkzLCAxMjAzMDgsIDI0NTQsIDQyNzE3LCAKLSAgICAzNjEzLCAxMjg4MzcsIDAsIDAsIDY1ODg4LCA4ODE2LCAxMDk3OCwgMTA4NDAsIDAsIDEwNjY4LCAwLCA0MzA4NywgMTI1OTUsIAotICAgIDEyMDMwNCwgOTgzMTE0LCA4ODIyLCAwLCAxMTU3LCA2NDkwMywgODYzOCwgMCwgMCwgMCwgMCwgNjk4NDgsIDgyMzUsIAotICAgIDEyMDMxNiwgNDQwNSwgMTAwODYsIDEyMDI0NywgMCwgNjkyMTYsIDAsIDY1NDMwLCA3MTMyMSwgNjA3OSwgNjgxNywgCi0gICAgMTA3NjQsIDEyNzkxMCwgNjQyOTEsIDEyODA1MSwgOTk4LCAxMjAzMTIsIDExMDYyLCAxMzE3LCA2NDMyNywgMTU1OCwgMCwgCi0gICAgMTk5MSwgNzg4MiwgNDIyNTQsIDAsIDQxNzAwLCA1MzAsIDAsIDEwNDI4LCAxMTkzMzUsIDEyMDAyLCAxMTkzMzYsIDU3NDIsIAotICAgIDQzMDc2LCA0NjkyLCA2NDYzMCwgNDE4MjMsIDQwMDcsIDUwMDQsIDExOTMzNCwgNzg5NiwgNzUxLCA2NTk1LCA2NTk2LCAKLSAgICAxMjAzMjUsIDY2MzczLCAwLCAwLCA2NDkwOCwgOTI2OTEsIDYzMTEsIDAsIDEyMDA0LCAxMTkxOTIsIDEyMDQ5LCA0MzEwOCwgCi0gICAgMTIwMzI2LCAwLCA0MTcwNSwgOTIxODgsIDY1OTgsIDAsIDY1OTksIDEyMDMzNCwgMCwgNDIxNDgsIDExODgyNSwgNjYwMjcsIAotICAgIDAsIDY1OTcsIDk0MTIsIDgzNDAsIDExODI0LCA2NDc0NSwgMjI4MSwgNjk5MDQsIDAsIDE5ODgsIDU0MDcsIDY3ODY1LCAKLSAgICAyNDMwLCA0MTY3OCwgMCwgMTIwMjQzLCAyMzM2LCA5ODM5MDMsIDAsIDc4ODcxLCAxMjA0NDIsIDk4Mzc2OSwgMTkyMSwgCi0gICAgMTA5NDcsIDE5OTI3LCAwLCA2NTQwNiwgMCwgMTk5MTMsIDQyODQsIDEzMjE3LCAwLCA0Mzc4OSwgMTI4NDEsIDkyMjksIAotICAgIDEwOTU2LCA0MjI4NSwgNDE2NzQsIDE5OTY0LCA0MTY3OSwgNjUwODQsIDM1MjEsIDAsIDU3NzQsIDgzMjUsIDAsIDY1NDAzLCAKLSAgICA5ODMwODksIDE4NTQsIDEwNzk0LCAwLCA2NzY2MCwgNjk4NDYsIDAsIDc4MzU5LCA1MjgwLCAwLCA0MzQ0LCAxMjkwNSwgCisgICAgNDM4MjUsIDcxMDg1LCAxMTkzMzcsIDUyMzYsIDQwOTc5LCA5ODMxNDAsIDcxODc0LCA4Mjg2LCAxMjg1MzcsIDM5MzYsIAorICAgIDExOTMzMSwgMTE2OTksIDQxMzQ3LCA2OTczOSwgMTMyMzUsIDg4NDIsIDQxMjQ4LCAwLCA0Mzc5LCAxMzIzOSwgMTI2OTIsIAorICAgIDc5NjksIDEyNzI2NiwgNzIxOSwgNzE4NzUsIDEyODI1MSwgMTIwNTA5LCA5MjkwNywgNjYyMjQsIDczNCwgMjk3OSwgCisgICAgMTIwMzAzLCA2NTYxOSwgOTg3MiwgOTU3LCA2NDkyMSwgMTg0NiwgNjY2MzEsIDQxNDc3LCAxMTkyNTYsIDcxMTkyLCAKKyAgICA3NDUxMSwgNDE3NzAsIDE2NzAsIDY0NDIsIDEyMDMxNywgNDI0NDYsIDUzNzksIDEyMDMxOCwgNDExNjMsIDc0ODMyLCAKKyAgICAxMTEzNiwgNzE4NzYsIDExNTA2LCAxMjgzOTUsIDQyODQxLCAxMzI2NywgMTI4NDIxLCAwLCA0MTc3NSwgMCwgNzEzMCwgCisgICAgNDE3NzMsIDAsIDEwNjYzLCA3MDEzMCwgMCwgOTgzOTc0LCA2MTUxLCAxMjExMCwgNDI2NzMsIDY1NTcyLCA2NTI5MywgCisgICAgNjUyNTAsIDEzMjY1LCAxMzI2NCwgNjQ1MTgsIDAsIDYxMDAsIDEyNzk2NCwgOTI2NDcsIDU4MDgsIDY1OTIyLCA2NzgxNCwgCisgICAgMTI5NjcsIDY2MDQxLCA1NjEyLCA0NTgzLCA3MDAwNCwgNDMzODYsIDY4MDk3LCA2NDU3NSwgMTI2NjM3LCAxMTk2NSwgCisgICAgMTk0OTMwLCA2ODM1OCwgNzE0ODMsIDY5Nzg5LCA0MjY1MywgODMxODEsIDY4MTAyLCA5Njk4LCA3ODE0LCA3MTA0NSwgCisgICAgMTE5NjUxLCAxMjg1MTQsIDAsIDQxOTIxLCAxMTg4NTgsIDk3NTYsIDY5ODUsIDY2NDE4LCA2NjYyMSwgNzQyMTksIDY2NDEyLCAKKyAgICAxMjg4MjIsIDExODk5NywgODAxMiwgNTY3NCwgMTIzNTMsIDY2NDIxLCAxMjM2MSwgNTY3NywgNTU4OCwgOTIzNDgsIAorICAgIDQxOTI1LCAxMjgxMjQsIDQxOTIwLCA1NjczLCA4MzExMywgNTY3NiwgNDE5MjMsIDEyNjk0LCAxMTg5NzgsIDU2NzIsIAorICAgIDEyOTQsIDAsIDc4MDU5LCA5ODM5NjIsIDQyNTExLCAxNzI3LCAxMjA3MjUsIDQyNDM2LCAxMjE0MDAsIDEyMTE4MywgMCwgCisgICAgNzQyMjIsIDg3MTgsIDM1NTAsIDczNiwgMTAyNjgsIDQ1MDUsIDU4NzMsIDc0MDkwLCA1ODI2LCA1NTIzMiwgNTgxMywgCisgICAgMTI5MDMyLCA5Mjg4OSwgNTg0MSwgNTgzNywgNTUyMzQsIDE5NDg2NCwgMzEwNSwgMTI4MjksIDU4MzgsIDU3OTYsIDAsIAorICAgIDExOTU5MiwgNTc5MywgMCwgNTg2NiwgNTc5NywgNDEwMTEsIDU4NjUsIDkzMDA5LCA3OTU2LCA1OTgsIDAsIDY0NjQ5LCAKKyAgICA1ODA2LCA0MjM5OCwgMCwgOTAzNywgNTY3MSwgMTIwMDQxLCA5ODMyNTcsIDgzNDc4LCA5ODM5MjksIDgzMTg0LCAwLCA4NDcsIAorICAgIDEyODI0MiwgOTUyOSwgODMwMTgsIDY2NjU3LCA2OTgwLCA3ODQ4MywgNDM1MTAsIDc4MTIyLCA5MjIxOSwgMCwgNjc0MTEsIAorICAgIDc4NDg2LCA4MzAxNywgMTI3MjYwLCAxMjAwMzksIDQyNjgzLCA3MTg0OCwgOTgzMDU1LCA3MTE0LCAxMjY1MjEsIDAsIAorICAgIDQzMTkwLCA2NTQ2MywgMTU1NCwgMCwgNDI2MTEsIDQyNTYzLCAwLCA1NjUxLCAyOTI5LCA2NzkyLCA0MzIwMSwgNzUwNTksIAorICAgIDE5OTYzLCA1Njk4LCAxOTQ3NjgsIDk4MzI3MiwgOTI5MzMsIDcxODg3LCA1NjQ0LCAxMDI5MiwgNjU1NDYsIDY5NzI3LCAKKyAgICA2ODE0MSwgODM3MiwgMCwgNjUxMTYsIDAsIDcwMzA0LCAxMDE3NSwgMTAzODgsIDQyNzk5LCA5NDEwMCwgNDEwMTMsIAorICAgIDEwNTY4LCAwLCA5ODM2MTgsIDI4NjksIDkxNzg0MywgNDEwMTUsIDc0NDczLCAyNzg1LCA0MzY2LCAwLCAxMDk1NCwgCisgICAgNDE4MDIsIDk4MzY1MiwgNDI2MDgsIDc4NDY4LCA5ODg0LCA0NzU5LCA3Mzc2OCwgMTIwMjk2LCAxMDI2NiwgNDEzNTksIAorICAgIDExNzAsIDQzMzY1LCA2OTgxMCwgNzM5MDgsIDE2MDksIDkwMiwgOTI3NzMsIDYzOTM2LCA4MzI0NywgMTE2NjEsIDgxMjIsIAorICAgIDU4MTgsIDgzMjQ1LCAwLCAzODYxLCA5NTQwLCAxMTAyOCwgMjU1NCwgNTE1OCwgNTcxNCwgMjIxMywgOTgzOTY2LCAwLCAKKyAgICA4MDcsIDQzMDc5LCA3ODA5MiwgNzg0NzUsIDk3NiwgNTUxMSwgNjQ1NTMsIDEyMDg2MywgNDIxNTUsIDk4MzMxOSwgNDEzNTYsIAorICAgIDc0MTEwLCAxMTg4MDEsIDcxMDQzLCAxMjAwODAsIDg2NzYsIDk4MzI5MywgOTQwMDIsIDU1ODIsIDQ1MSwgNjM5NDEsIAorICAgIDU3OTgsIDkzNDksIDQyMDE4LCAxMjc4NTgsIDEyODUyMSwgNzg2ODEsIDQzNjA5LCA1OTA2LCAxMjA1NTMsIDE0NDAsIDAsIAorICAgIDEyODg1MywgNzQ5MzMsIDcwMzQyLCAxMTAwNSwgMTk0Njk5LCA2NjY1NiwgNjYwNDQsIDE5NDYzNiwgMTIwMDc5LCAKKyAgICAxMjg3OTMsIDAsIDQzMzkzLCAxMDA5NCwgNzAxNjQsIDExNTI5LCAxMDg1NywgOTI5NDQsIDY2NDM2LCA2NTQ2LCA5MywgCisgICAgODEwMiwgNjczMjMsIDY4NDA1LCAwLCAxOTQ3MTQsIDgxNzEsIDExODg4OCwgMTE5MDk3LCA4Mjk5NiwgOTE3NTQzLCAzODMsIAorICAgIDcxNTQsIDQxNjU2LCA0MzQ5NSwgOTQwNDAsIDY3MTYyLCA1MTg3LCA3MTI5NiwgNzEwODYsIDExMjg2LCA2ODYyMCwgCisgICAgNjQyMTcsIDAsIDUyMzIsIDAsIDQxMDA5LCAxMjczNzcsIDQxMDA1LCA5ODM4MTAsIDAsIDEyODQ3MSwgODI5MiwgMTI1MTA4LCAKKyAgICA0OTgwLCA4ODYwLCA3MTA1NCwgMTAwMjgsIDY1MjkxLCA3MDc2LCAxMzE4MiwgMTk0NzA1LCA3NDkxMiwgMTI3OTc0LCAKKyAgICAxMDYzMSwgMTEyNDQsIDc5NzIsIDY4MDQyLCA3ODc4NSwgMCwgNzkwMCwgMTI4NTkwLCAxMTMwOSwgMzgwNiwgNDE5OCwgCisgICAgNDI3MjUsIDAsIDY3NjU2LCA5OTk1LCAwLCA5MjU1MiwgMCwgMTI5MzEsIDEyMTExMCwgNDI2ODQsIDc0Mjg1LCAyMDg4LCAKKyAgICA2NDIxMywgNjQzNjYsIDY1MTU2LCA4ODE0LCA0MjIzOCwgNzQ3NzEsIDEyNzkyMCwgMTk0NzEzLCAxMjgzNiwgMCwgCisgICAgMTEzODAwLCA3NDM0MiwgODU5MywgMCwgMCwgNjg0NDUsIDEzMjU1LCAxMjEzMzMsIDEyODg0MywgNzQ2NCwgMCwgNjU4NjUsIAorICAgIDAsIDE5NDY1MCwgMTI3MTQ0LCA5MjM5NSwgOTM0MiwgMTIwNDY0LCA3MDM3NiwgNjQ1MTYsIDAsIDc4NzkyLCAxMDEyOSwgCisgICAgNDEwMDcsIDc0Mzc1LCA5ODM3MDEsIDQwOTk1LCAxMjIwOSwgNDEwMTIsIDgzNTAxLCAwLCA4MzI1NywgNjk3MjQsIDQwOTkyLCAKKyAgICA5MjI2NCwgMTE5MTM2LCA2ODY1MywgNDM1NTgsIDU1MjIsIDc1MDI2LCA2MSwgMTIwOTU5LCA3NDEwNSwgMzYzMywgCisgICAgMTIwMDgyLCA2NTE2MiwgNDEyMzQsIDEyMDg5LCA3ODI4MSwgOTc3MSwgODMyODEsIDEzMjUxLCAxMjg3MDEsIDAsIDYyNjIsIAorICAgIDI3ODQsIDQyNzQzLCA3MTA3OCwgODEyNiwgNjY0ODMsIDAsIDAsIDQ0MSwgNDI2MjEsIDAsIDAsIDQxMDAyLCA0MDk5OSwgCisgICAgMTE5NjIzLCA0MzI2NiwgNzEwOCwgMTk0Nzc5LCAxMDg5MCwgNzQ0ODEsIDY1ODM0LCA4MzI0LCAxMTg5NDQsIDY0NDE3LCAKKyAgICA3NDgxNywgMTI3NDY1LCA2NDczNywgNzQ4NTMsIDk4MzY1OSwgODkzMCwgNjY2NzgsIDY3MjE2LCAxMTkzLCAxMDA1NiwgCisgICAgMTgwMCwgMTMyNTMsIDEzMjUyLCA3ODI5LCAxMjA5OTIsIDEyMTE3NSwgNzc0MywgODM1MDIsIDEyNDk5NiwgNzc5MDQsIAorICAgIDc3OTEzLCA3NzkwNSwgOTAzNCwgNjAzOSwgMTI5MTM5LCAxMDA3NSwgMCwgNDEwMTgsIDY1NjgzLCAxMDMzOCwgNjY0NjksIAorICAgIDAsIDAsIDE5NDYzNywgNDI4MTUsIDkyOTg0LCA0MTk2NiwgMCwgMTI3NDcxLCAwLCAxMTc5MiwgNDMwNjQsIDQxMDI1LCAKKyAgICA5MTEsIDc1MzksIDAsIDQwOTYzLCAxMjAzMzksIDY1MTU5LCA2NDM5MCwgMCwgOTgzMTYwLCA1NTIwLCAxMTY2MiwgCisgICAgMTI3NDczLCA2NTMzMCwgNDI4MTIsIDk4MzIxNSwgMCwgMTIzMjYsIDcxMDgxLCAxOTQ2MzgsIDQyODA4LCAxMjgzMzcsIAorICAgIDkzNDgsIDY0OTAxLCA5ODM4NjEsIDk4Mzg5MiwgMTIxMDUwLCA2NjgzOSwgMCwgMCwgMTIxMDA0LCA0MzcwMiwgOTgzMTQ4LCAKKyAgICA1ODU3LCA2NTM0MiwgOTI3MjcsIDExOTEyMCwgODM1MDMsIDg2NDQsIDEyMTIyNywgODMzMzIsIDExMTg2LCA3NDI5NiwgCisgICAgNDE5MDksIDAsIDY2OTAwLCAyNzkxLCA2OTY2MywgMTg5MSwgNjk4MjQsIDY2Mzk3LCA0MTkwNywgNjY2NDcsIDExODkzOSwgCisgICAgODc2MSwgMTI5NDIsIDU3NDgsIDkyNzEzLCAxMDc3MywgNzA4NjgsIDgzMTc0LCA4Nzk2LCA3ODE0OSwgNjQxMiwgMjA2MSwgCisgICAgODUyMCwgMTMxNDYsIDEyNzA5NiwgNjM5MzEsIDgzMjc1LCA2NTkwMiwgMjg4MiwgODMzMzQsIDAsIDEyODQzLCA0NTIwLCAKKyAgICAxMjAzNDUsIDkyNDU5LCAwLCA5ODM2NjAsIDAsIDczODYwLCA4MzMzNSwgMCwgNjQzNDUsIDAsIDkyMDEsIDEyODMxNCwgCisgICAgNzA4NzEsIDAsIDkxNzg2NCwgNDM2NzksIDEyMTAyNiwgNjUxMTcsIDkyMjcwLCAwLCAxMDQyNywgMTIxNTA2LCAzODQ0LCAKKyAgICA2ODQyLCA5NzU1LCAxMTEwLCA2NjEyLCAxMjIyMiwgOTMwMzAsIDEyODc4OSwgOTgzNjM4LCA5MjkyOCwgNzgzLCAxOTQ5MzUsIAorICAgIDkyMTg1LCAxMjcyMjEsIDczODU1LCA2ODAzMiwgNjUwNTYsIDM2MjAsIDQxMTgwLCA2ODM3OCwgNDU1NiwgNjc4MzksIAorICAgIDY4NDgwLCAxOTQ5MzMsIDc0MjUwLCAwLCA2NzY1NywgMTA1MTAsIDQzODIsIDY2NDgyLCA2NzgyMywgMCwgMTI3NTI3LCAKKyAgICA5MTc3LCA4OTAyLCA5Mzk1OCwgOTgzOSwgMTIwNzAwLCAxMjg5MSwgOTgzNzU1LCA5ODM2MzYsIDYzOTk5LCAyMDE2LCAKKyAgICA0MTkxNywgOTc4OCwgNjM5MjgsIDY3Njk2LCAxODYyLCA2NTgwMCwgOTE1NSwgNjY2MjMsIDk3ODYsIDY1MDgyLCA0MTkxOSwgCisgICAgODU3OSwgNDE5MTQsIDc5ODEsIDAsIDY2MDE3LCA0NTA4LCA2NDg4MywgOTI0NTYsIDkyNTIyLCAxMjc4MTQsIDEyMDgzNCwgCisgICAgNjQ1OTIsIDc0Mjc2LCA2NzY4OCwgNjc4NCwgNzg3ODgsIDY4MTgxLCAwLCA3MTIxOCwgMTEzODIxLCA2NjM2NiwgMTIxNDcsIAorICAgIDkwMjQsIDY2Mzc4LCA2NjQ3MiwgMTI0OTc2LCA2NDI4OSwgNjUyODksIDc4MTUxLCA2NjY1OCwgNzE5MzUsIDY0NTA5LCAKKyAgICA3ODE1MiwgMTEzNjk3LCAxMjY1MDUsIDExMDUxLCAxOTQ5MjgsIDAsIDExMzU1LCA2NTg4NSwgMTIxMzE5LCAxMjc5NDEsIAorICAgIDQxMjE0LCAwLCAxMjI5OSwgMCwgNzUwMCwgNDUwNiwgNzc3MywgMCwgMCwgOTk2MywgNjg2NDksIDEyNjYwOSwgNDA0MCwgCisgICAgMTIwNTcwLCA2MTY3LCA3NDUxOSwgNjM5MjIsIDY1OTQsIDk4Mzc0MCwgMCwgMCwgMzYyNCwgNDMwMzYsIDEyOTQ3MiwgCisgICAgNjM4NywgNjM5OTAsIDE5OTQ3LCA2Mzk4OCwgNDE5NTUsIDEyNjk5MCwgNjM5OTMsIDEwNDQwLCA5NjExLCA2NTYwNSwgCisgICAgNjgwMywgMTIwOTY4LCA3NzM4LCA2Mzk4NiwgMTE0NDYsIDYzOTg0LCA5MjY0MSwgMzQzNSwgNzgxNjQsIDQzODE0LCAKKyAgICA0MzgxMCwgNzAyOSwgNjQyNTgsIDQxMjkyLCAxMTg4OTgsIDEyNzQ4LCA0Mjc0MiwgOTUxNywgMTE1MTgsIDgzMjkyLCAKKyAgICA3ODc5MCwgOTgzMzgxLCA2Nzk5MywgNjM5NTYsIDQyNDU4LCA2Mzk1NCwgNjM5NTMsIDYzOTYwLCA5NTkxLCA0NTE2LCAKKyAgICAxMDIxNywgNjgzNzAsIDExNDY5LCA2OTY5NywgNDIzMDYsIDI3MjMsIDExODk0NywgMCwgOTIzMjUsIDAsIDY4MDc5LCAKKyAgICAxMjEzNDQsIDExMzk3LCAyODgwLCA3MDgwNiwgOTE3ODI5LCAyODcyLCAwLCA4MzMyMSwgMzQ5OCwgNDM3OCwgOTE3NTM5LCAKKyAgICA0MjcwLCAwLCA2NTU1MSwgNjgyMDUsIDY2MzMsIDQzMzg3LCAwLCA1MjMwLCAxOTQ5OTEsIDAsIDk4MzA0MCwgMTk0OTEwLCAKKyAgICAxMjEzOTIsIDgxNjEsIDM5MywgMTIwMTMsIDAsIDk4MzE5OCwgMTE5MTAzLCA0MTUsIDYzOTY0LCA2Mzk2MywgNDIzNDUsIAorICAgIDkyMzEwLCA1MTgzLCAxODc3LCA0MjQ5OCwgMCwgMjkyNywgNzEwNTgsIDYzOTYxLCA0NDcyLCA5ODMyOTksIDAsIDc4MTU5LCAKKyAgICA2OTY5OSwgMTI3MzAxLCA0MjM0MCwgNDc1NiwgMTI4MDc4LCA3MDgxLCAxMDczMCwgNzY5MSwgMTAzMzEsIDYzODMwLCAKKyAgICAxMTk2MjUsIDQyOTIyLCA0MjEwMywgODYyOCwgOTgxMywgNzg2NTQsIDQyNDUzLCAxNjA0LCA5NTY1LCAxMDUzOSwgNjk3MDEsIAorICAgIDY1NzY0LCA0MTQxNSwgNjU3NjcsIDEyOTE5NiwgODQ1NywgNDIzMDEsIDExMzcyLCA2NDg3MywgMTE5OTIsIDAsIDAsIAorICAgIDYzOTgwLCAxMTgwMSwgMzYyMiwgMTk1MDkyLCA2NDMzNiwgMTIwMTcsIDEwNDYzLCA2Mzk4MSwgNDk2NywgNjQxODksIAorICAgIDE5NjYsIDQzNjI4LCA5ODM5MDgsIDk4MzI5NCwgODMyNjcsIDEyMTA1MiwgNjM5NzEsIDQzNDcsIDQ0MTYsIDQyMDk4LCAKKyAgICAxMTAwOSwgMTA2OTQsIDYzOTczLCA0MDIsIDkyMjEzLCAxMzE0NywgMTI4NjkyLCA0MjEwMCwgNjQ2NDYsIDEzMjI4LCAwLCAKKyAgICA0MTg3NSwgMzUxNSwgNzQyNTIsIDExODA1LCA5ODMxNTcsIDExMzAyLCA2MjU5LCA0MzM5NSwgMCwgODMzMjMsIDE5NDY3MCwgCisgICAgMTIwODM2LCA5MjM1MSwgNzQ4MTMsIDc0NDI1LCAxMTI5OSwgMTU2MSwgMTE4ODgxLCA5MjMxOCwgNjQ5NDIsIDkzMDIxLCAKKyAgICAxOTQ3MzMsIDcwNDExLCA3ODcxOCwgMTIxMTQwLCA3NDMwMSwgNjg4MjUsIDExMjgwLCAxMjg0ODksIDY5Nzg0LCA3NDA2MCwgCisgICAgMTI4MzkyLCAwLCAxMTk2NjQsIDUxNDUsIDEyNDg2LCA2NTAxOCwgNjY1MTYsIDU0MDksIDEyNzM3OSwgMTI0OTg4LCA3NDAyLCAKKyAgICA1Mzk5LCA5Njg1LCA3NDA4OSwgNzk1MiwgNTQwMSwgMCwgNjY2MTYsIDY2ODMyLCA5Mjk2NiwgMTIwODUyLCA1NDA1LCAKKyAgICAxMjc4NzUsIDY0ODY2LCAxMjA5NjUsIDExOTU4MywgMTE5MTIyLCA3ODc4NCwgNzQyNDgsIDExMzMwLCAxOTQ3MjMsIAorICAgIDY0NjkwLCAzMjU0LCA5ODMxNjYsIDEyODk0NCwgOTI2OTYsIDQyMzkwLCA0MzY3OCwgMTk0NzI1LCAxMjkxMjcsIDY1MDc3LCAKKyAgICAxMjkwNTksIDYzODgsIDMzNTUsIDk1MDgsIDk4NjcsIDU3MjMsIDExNTIwLCA1NjExLCA4MzAyMSwgMzM3NywgMCwgMCwgCisgICAgNzQzNTQsIDE5NDU3OCwgNzgyMjgsIDk4MzcyMiwgOTgzNzYyLCA0MjY5MSwgMTI3ODg2LCAxMjA5NDgsIDY4MDkxLCAKKyAgICAxMjg0MDQsIDc1MDIzLCAxMzc5LCAyNDYsIDc0NjQ5LCA5ODM3NjEsIDM3ODgsIDkyNTIwLCAxMTA0MSwgNjcyMDIsIAorICAgIDY2MzA0LCAwLCAxMjEyMTMsIDg5MTcsIDQyNDAzLCAzMDEsIDAsIDEyODUwMCwgMTI3MDQ2LCAwLCAwLCAxMTM4MjIsIAorICAgIDEwNjU2LCAxMjUwNDIsIDY1MjE0LCA5Mjk4NywgNDI1NjcsIDkyMjE3LCAxMzE2MywgOTgzMjA0LCAxMjA4MzEsIDc0NTk3LCAKKyAgICAzMTgyLCAwLCAwLCAwLCA2NTAzNCwgNjU4ODksIDQyMTY5LCA0NzU1LCA3NDI0NCwgMTk0NTc0LCAxMTQ0MywgOTgzNjAzLCAKKyAgICA2NjMxOSwgNjg0MSwgNjA4LCA2MDAsIDAsIDEyMTksIDM5MzQsIDY0MjA2LCAxMTQ4MywgNzQ1MTAsIDExOTExNywgNzQ0ODUsIAorICAgIDQyNDQyLCA2NTQ3MCwgOTgzOTA3LCA2NDIwMiwgMTMxNjAsIDc3NTksIDQyNDgyLCA0ODUsIDY5OTgyLCA3MDUwNSwgOTgyOCwgCisgICAgMCwgNDM1MDUsIDQyMjgwLCAwLCA5MzUxLCA3Nzc4LCA2NDM3OSwgNzQ5NiwgNDI0MzEsIDY5MTYsIDEyMDgsIDAsIAorICAgIDExOTYzMSwgMTEwMDIsIDQyNDcwLCAwLCA2ODMxNSwgMCwgMCwgNzQwNDEsIDgzMTQ0LCA3MDA0NSwgNDM1MzksIDU0MTEsIAorICAgIDQyMTk2LCAwLCAwLCAwLCA5MTUwLCA2NjgzMSwgNDIzOTMsIDEzMDg2LCAxMzEwLCA2Njg0OCwgOTMzNywgMTIwNTIsIAorICAgIDEwNjQzLCA1NTI3MSwgMTI4OTUxLCAxMjE2NiwgMjU0NiwgMTk0NjgzLCAyMTMsIDExODg1MiwgNjU2MTEsIDgzMzE2LCAKKyAgICAxOTQ4MjIsIDE5NDc1NiwgNzQzMTAsIDY1NTQsIDk0MDU5LCAxMTkxNCwgNTQ1MiwgMCwgMCwgOTI3NzIsIDAsIDkxNzg4MCwgCisgICAgMTk0NjgxLCA5MjU2MCwgMjcxMywgMTE5NTY0LCA5NjUwLCA0MzMzMCwgMTIxMDMzLCAxMjg1MDUsIDE0MDYsIDEyNTAwNywgCisgICAgNDI5MjUsIDc0NjM4LCAxOTQ1OTMsIDY2MjU2LCA0MTQzLCAxMjgxMzYsIDE5NDc2MiwgNjU3NDgsIDQxNDEsIDk2ODIsIAorICAgIDY1Mjg3LCAxNTA4LCAxMjcwMTMsIDg3NzksIDEwNTY5LCA4NzI1LCAxMzI5OSwgNjY2MzgsIDY1NzUwLCA0MjI2MywgNDE0NSwgCisgICAgNjM4MCwgNjU3NTEsIDY2NjEzLCA0Mzk5NCwgNjU3MzgsIDU1MjUwLCA5MTg1LCA5NTUwLCA0MjkzMiwgNDM0MDMsIDAsIDAsIAorICAgIDE5NDc4MywgNjU3MzYsIDQxOTUxLCA2NDgxNiwgNjU3NTYsIDk4MzIwNSwgMTI5NTUsIDEwNTk2LCAyODg4LCA4MzE5MCwgMCwgCisgICAgMTIxMzU0LCA5NjU3LCA5MDE5LCAxMjExNTQsIDAsIDI4NzgsIDUzOTAsIDAsIDE5NDk2MSwgNjczMjUsIDY4Njc5LCAKKyAgICA0MzU1MiwgNzUwMSwgNjMyOCwgMTk0OTYwLCAxMDQyOSwgMTAzNjUsIDAsIDAsIDQxOTQ2LCA3NTAzLCA1MjM1LCA4MDMsIAorICAgIDY4MzgxLCAwLCAwLCA4OTg2LCA0MzgzOCwgMTA2MzIsIDExOTM0LCAxMTQ1MiwgMTMzMiwgMCwgMTk0OTcwLCAxMjY2NDcsIAorICAgIDAsIDExODg4NywgMTc5MSwgNTE5MSwgOTI4OCwgNjQ4MjIsIDI4OTIsIDgzMTkyLCA0MzM5NCwgNTU1LCAwLCAwLCA2NjY0NiwgCisgICAgMTI4OTgwLCAxMTkwMDIsIDEzMTUxLCA3NDUxMiwgNzI4OSwgNzQwNTUsIDY0MTYxLCA4ODU0LCA2NDE2MiwgNTg1OCwgCisgICAgNDE5MjcsIDEwNTgyLCAxMjA0NTcsIDE3ODQsIDEzNjEsIDEyMDkyMSwgMTIxNTE2LCA3OTA1LCAwLCA2NDg2OCwgMTI4ODEzLCAKKyAgICAxMzE1OCwgOTIxNjYsIDcyMTEsIDcxODg0LCA5MzcxLCA3Mzk3MywgMTI4NDQxLCA2ODI4LCAxNjI1LCA3NjY0LCAxMjg3NjgsIAorICAgIDEzNDIsIDY4NDQwLCA2NDE3MSwgOTI2NDIsIDEwOTAzLCA5ODM0OTYsIDAsIDkyNTI3LCAwLCA3MDQzOCwgNDQ4MiwgCisgICAgNDE2MDYsIDEyODkzNCwgMTI1MDMzLCAxMjE0NzUsIDAsIDY0MzgxLCA5ODM5NDAsIDE5NDk3NCwgMTk1MDkwLCA0MjI0NSwgCisgICAgMTI2NDY3LCA0MTk3MiwgMCwgNDQ0LCA5ODM0MzksIDkxMjcsIDY2Njg3LCA2NjYxOSwgMTI2NDg5LCA3ODAyNSwgMCwgCisgICAgMTEzNDksIDQwOTkxLCA5MTc1NzAsIDAsIDcwMTc3LCAxMjA4MzAsIDAsIDExOTcsIDEyODI4MiwgMTE0OSwgNjgzMTYsIDAsIAorICAgIDk4MzI1OCwgNDA5OTAsIDQzNzY1LCAxMjEyNjIsIDM0OTIsIDkxNzkwNiwgMTE4Nzg0LCAxMjkwMjYsIDAsIDk4MzU2NiwgCisgICAgMTI4MzgsIDY3MjA4LCAxOTk0OCwgNDE2NzcsIDMwOTksIDAsIDAsIDQxMDg3LCAwLCAwLCA5ODMyNjEsIDExOTA1OSwgCisgICAgMTIwMzYsIDQxMzA5LCAxMjgxNjEsIDAsIDgxNTIsIDAsIDQxNTUwLCAxMjIyNywgOTgzNjEzLCAwLCAxMjgyOCwgMTI3NTExLCAKKyAgICA3NTAxNSwgMTIwOTY0LCAxMjA3MDgsIDAsIDAsIDEwMzg2LCA3NTA2OCwgMTE5OTU1LCAxMjczMDMsIDkyNjgwLCA5ODMxMzQsIAorICAgIDY4MTU0LCAxMjc4NzYsIDE3NDMsIDAsIDAsIDkyMjM5LCA2NTE4NiwgOTE3NTcxLCAwLCA5NjA2LCAwLCA3MDA1MiwgCisgICAgNjQ0MzksIDEyODg2NCwgNjgwNjIsIDkyNjg2LCA5ODM4NzUsIDAsIDQzODY2LCAxMjg4ODEsIDAsIDMzOTUsIDkzNjIsIAorICAgIDEwODc4LCA0MzI2MCwgMCwgNzgzNjIsIDY0ODMwLCAwLCAxMjUwNDYsIDQxMDkxLCAzNDI2LCAxMzQ0LCA4ODcwLCAKKyAgICAxMjExMDAsIDcxMzQ0LCA0NzM1LCAxMTExMSwgNjExOSwgMTI4MjIsIDQyNjk5LCAwLCA5ODM4MjQsIDc0ODE4LCAxNDIzLCAKKyAgICAxMjg5MjMsIDQyNjM3LCA0MTA4MCwgMCwgMTIwMzksIDEwNTU5LCAxMjg2MzQsIDExODg5MiwgMCwgOTQ3MiwgNjc3MzQsIAorICAgIDExOTI5LCAxMjY1NTcsIDcxNzAsIDk1OTYsIDYxMzAsIDEyODgyNiwgNDM2MjksIDExNTc5LCA3MTQ3NSwgMCwgOTI1MDEsIAorICAgIDEyNTA4MSwgNzgwNDYsIDY2Njk5LCA2NDQ0MCwgMTAwNCwgOTI1ODQsIDE5NDczNiwgNDMyMzQsIDY2MDA4LCAxMjYyNywgMCwgCisgICAgNjg0MTQsIDc0NjE0LCA0MzYxOSwgNDMzMDMsIDExMzAwLCA0MzMwNCwgOTY4NiwgNTg5MCwgMTE3NzYsIDc1NTgsIDcwMTA5LCAKKyAgICA2NTYyNywgMCwgMTA3MTgsIDEzMTU0LCAzNDYxLCA5MTM5LCAwLCA5ODMwOTQsIDAsIDExOTAyMywgNjUzNjUsIDczODc3LCAKKyAgICA2NTYyOCwgNzgwMTksIDExOTI3MiwgODMxMTgsIDQxNzA4LCAxMjg2MCwgMjY0MSwgMTIwNjksIDEwODM4LCA1NDAzLCAKKyAgICAxMDM1MiwgNzAwODUsIDEwMDYxLCA0MzIzNywgMTI1MDU3LCA1MTQwLCAyMDksIDEyODg0NywgNDE3MDQsIDQxMDU2LCAKKyAgICA0MzA3OCwgMTI3Nzg5LCAxMTg4MDksIDY3MjMyLCAxMDg5OSwgNjU0NjksIDcwMTI1LCAwLCAwLCAyNDEwLCA5OTMsIAorICAgIDgzMTE3LCAxMjA1ODksIDEyMDY4OSwgNzg2OTMsIDAsIDAsIDcyMzIsIDAsIDExOTI1MywgMTI0OTYzLCA3MTEwLCA3NDQ2MiwgCisgICAgMjA2NiwgMTA0ODksIDQyMTY2LCA0MzQ2MywgMTA2NTksIDM2MDAsIDY4ODYzLCA0MjI0LCAxMzM2LCA0MTUxOCwgMTIxMzExLCAKKyAgICAwLCAwLCAwLCA0MTEzOSwgNjQ4MjAsIDkyNTM4LCAxMjk2NiwgNDExMzQsIDAsIDAsIDExOTE1MywgMTIwNDQxLCAyNzIsIAorICAgIDQyNjMsIDg3OTMsIDk4Mzg1NiwgMCwgNDE1MDIsIDEyODEzMywgOTgzLCAxMjU0OSwgMTI0OTQwLCAwLCAxMTkwLCA0MTA5LCAKKyAgICAxMzM1LCA4NDEsIDU4ODgsIDQxMzU4LCA2NDg2MywgOTU0NCwgNDM0ODEsIDAsIDEyMDkyNiwgNzAwMjcsIDIwOTksIDUxMjAsIAorICAgIDI0MDksIDc3OTksIDAsIDc0NDI0LCAwLCAxMjEwNDEsIDQ3MzEsIDkyMjc5LCA2NjYyOSwgMTI4MTI3LCA5MjUyNSwgMTI1NSwgCisgICAgNDE0OSwgOTI0NywgNzQ5NzcsIDk5MTMsIDk4MzgyOCwgMTIxMTAxLCA2NDkxNCwgOTE3Nzg3LCA2NTEwMSwgMTEzNzE0LCAKKyAgICAxMTY5NCwgOTI0NzUsIDExNjkwLCA1ODM1LCAxMjcxNjQsIDY2NjI1LCAxMDg0MiwgNDEzNTQsIDQyMTIzLCA0MzA5NywgCisgICAgMTE2ODgsIDY2NjM0LCAxMDk0LCAxOTQsIDY0NjkyLCA5MTc5MDAsIDgxODAsIDEyNTA1NSwgMCwgOTk3MiwgNzM4NjUsIAorICAgIDQ1MTksIDYxMTQsIDEwODk4LCA0MzA3MiwgOTI0NjUsIDAsIDkzOTYwLCA5ODMzMjQsIDEyNjU4MSwgMTA2OTUsIDAsIAorICAgIDc1NDAsIDAsIDg4MSwgNzg1NywgNjA2NywgNjUxNjQsIDAsIDkxNzg5NywgMTI5MTM0LCAxMzMxMSwgNjg0MDMsIDQxODU3LCAKKyAgICA2NDMyMSwgODM1OSwgODMyODYsIDEyNjg5LCA5ODMzMTIsIDExMjQ1LCAxMjgxMDUsIDk4MzMxNCwgNzE4NTksIDY4MTgzLCAKKyAgICA5ODM0MTUsIDE5NDgyOSwgMTI4NywgNTQzNiwgMCwgNzEwOTcsIDc0MTQyLCA5MjMyOCwgNzQxNTIsIDcwMjA1LCA2MDUxLCAKKyAgICAxMDQ5NywgNjk2NjgsIDg5ODUsIDEyMTA5LCA4Mjk2MiwgMTI4OTA4LCA5MzA0MywgMTIxMDEzLCAwLCAzNjUyLCAxMDUzNywgCisgICAgMTIwMjgyLCAxMjc2LCAxMjA0NDAsIDY1NDksIDI3OSwgNzM3NDUsIDAsIDEyODY2NCwgODMyNDQsIDE0ODksIDAsIDAsIDAsIAorICAgIDM4OTksIDEwMDcsIDQyMTI0LCA0MzgyOCwgNDIxMjIsIDkyMzM3LCA5MjM2NywgMCwgMTE5ODUsIDEzNDUsIDc4NjAwLCAKKyAgICAxMTk4MzIsIDkxNzU2MywgODk1NiwgNDMwODMsIDk0MDU3LCA0MjEzOCwgNzg2MTAsIDEyOTEzMSwgNjQzMCwgNzg2MDgsIAorICAgIDc4NjA0LCA3ODYwNSwgNjI4NSwgNzg2MDMsIDc4NjEyLCA3ODYxMywgNjU5NDIsIDQ5MiwgODY4NSwgMTI4NDgxLCAKKyAgICAxMjEyNzAsIDAsIDc1MDI3LCA0MzcxMiwgMjU4MiwgMTE0NzAsIDY0NTM4LCA3NDQ0LCA3ODYxNSwgNzg2MTYsIDIyOTcsIDAsIAorICAgIDczODM3LCAxMTk4MjMsIDI1MjcsIDExOTgyNCwgMTk3LCAyNzk5LCA5MjU5NCwgNDE5NDQsIDgzMTUyLCA5OTMzLCA3NDAxMSwgCisgICAgNjY1MTUsIDc2NywgNTUyNCwgNzAyOCwgMCwgOTIxNjgsIDExOTgyNywgMTE5ODE3LCA5Mjk1MCwgNzg2MzMsIDEwODk2LCAwLCAKKyAgICAxNzk5LCAxMjA0OTcsIDY5NzEsIDc0MzM2LCAxMjgzNDIsIDAsIDY1MzQwLCAxMTg5NzksIDQxNTUxLCAyNDM0LCA5NDAxOCwgCisgICAgMTE4ODIzLCA2NTM1MywgMCwgNDYzMSwgMTE4OTk2LCAwLCA2NDA3LCAxMTM3MzcsIDYzMzgsIDQzMjE0LCAwLCA3NTcwLCAwLCAKKyAgICAzMTkyLCAxMjAzMzAsIDg0MTQsIDk4MzM5MiwgOTM5ODMsIDE5NTA0MywgMCwgMCwgOTE2NCwgNjY2MTIsIDkzOTU5LCAKKyAgICAzMTcxLCA2NjIzLCA0OTYxLCA2ODM5NiwgODg2LCA1NTIxNiwgODY1NCwgNzg4MzIsIDk5OTMsIDc0MzkwLCA2NDYwMywgCisgICAgNzAwNjYsIDY5MjQxLCA5NTk5LCA3ODYyOSwgNDMwODQsIDc4NjI3LCA3ODYyOCwgNzg2MjUsIDIzOTksIDY5NjkzLCA4OTk0LCAKKyAgICAxMDk0NCwgNDEyMDgsIDk4MzcxMywgNDExNjgsIDgxNzgsIDc0ODU5LCAzMzY3LCA5MjMzNCwgNDI1MTAsIDc4NjQxLCAKKyAgICA3ODYzNiwgNjgwNCwgNzA0NzUsIDE5NDcsIDkxNzU3OSwgMCwgOTI2ODEsIDQyNzU5LCAxMTA2OCwgMTcwNSwgOTMzMSwgMCwgCisgICAgNzQ3OTgsIDkxODEsIDY1MzU5LCAxMjUwNjUsIDgwMTcsIDExOTgzMSwgNjUwOTYsIDY2NzIwLCA2ODIyMywgNDM0NzUsIAorICAgIDkxNzU0OCwgNDkwOSwgMTIxMjYsIDEyNzU0MCwgMTIwNjk2LCA0OTA0LCA5Mjk2MSwgNDM1MDMsIDEzNjUsIDkyNTMsIAorICAgIDQyNzU3LCA0MzQzNiwgNzQ2MiwgMTI3NzcyLCAwLCAwLCA4MzE3MywgNjY4NDUsIDY0NDE1LCAxMjA1MDAsIDgzMTcyLCAKKyAgICA1Mzk4LCAxMjUwMzUsIDEyNzM4NiwgOTM5NTMsIDEyNzM2MiwgOTgzNzgyLCAxMTkwMTUsIDgzMTcxLCAxMjcwMDcsIDk0NzYsIAorICAgIDk4Mzg4NywgMTIwNjk1LCAxMjc2MywgMTI2NjAzLCAzNjI5LCAxMjA4NDQsIDEzMDA1LCAxMTE4MSwgMzYyOCwgMCwgMCwgCisgICAgOTI1MDIsIDM0NjksIDQyMTA3LCA0MjExNiwgOTE3NTc4LCA2NDgwOSwgMjkyOCwgNDkwNSwgOTg1MywgODUxLCA5MDQwLCAKKyAgICAxMjAzNzIsIDY0NjY1LCA0MzA4NiwgOTExNCwgNDM4NzAsIDQyNTgzLCA5MzE1LCA0ODIyLCA0OTA2LCAzODUyLCAyODQ3LCAKKyAgICAxMTk4MjEsIDMyMzYsIDExMzE3LCAxMjUxLCA3Nzc3LCA0MTg1MiwgMTE0MTAsIDEwOTY0LCAwLCA0MzIyMiwgMTI2NDYsIAorICAgIDEyMDI2OSwgMTAyNTksIDk4NjUsIDY1ODIxLCA3NTA0NiwgNjAxOCwgNjgyOTMsIDEyNTAxMCwgMTIyNzYsIDExOTExMCwgCisgICAgNjgzNzIsIDEyODI1NSwgOTIyNTksIDcxODkzLCAwLCAxMTk4MjgsIDEwNDY3LCAwLCAyNDQzLCAxMDkxOCwgNzgyMTcsIAorICAgIDc3OTQ3LCAxMDAxLCA5MjQxLCAxOTI3LCAwLCAxMjQ5NDIsIDczOTg3LCAxMjc4ODIsIDcxODk1LCA5MzAxMiwgNzk5MiwgCisgICAgNzc5NDMsIDQzOTM5LCAxMjg2NywgMTI4NjQ5LCA4MjYwLCA3Nzk0NSwgNzUxOSwgMTE1MDUsIDEyMjc0LCA4OTA0LCA1MTgsIAorICAgIDY1ODU3LCAxMjgzNjEsIDEyODY3NCwgMTMyMDQsIDQzODcsIDg1NywgMTIxMjUyLCA2NTM2OSwgMCwgOTIzMzYsIDQzMTI1LCAKKyAgICAxMTg0MiwgMCwgNzEwNzIsIDEyMTQ2MiwgMCwgNTEzNiwgMTk2OCwgMTI4OTA2LCAxMjY2MjcsIDEzMzcsIDY0OTY3LCAKKyAgICAxNjI5LCAwLCA3OTYsIDY2NTA2LCAwLCA3NDEyMywgMTI4NzcsIDEyMDY0OSwgNDIzMTQsIDQzMzg4LCA0MzgyNiwgNDM5NDQsIAorICAgIDYxMjAsIDQ3OCwgNjUxNTEsIDY4MTI4LCAxMjgxNDcsIDQzMDgyLCA2MDE2LCAwLCA0MjI4NCwgNzE4OTQsIDQyNzYsIAorICAgIDEyMDYsIDM2MTksIDQxNjM4LCA2OTY5MSwgMzg0MywgMTIwMTEsIDg4NTMsIDMzNjEsIDAsIDQ5MCwgMTA3MTUsIDc1NzgsIAorICAgIDY4Mzg0LCA5Mjc1NCwgNjUzNTAsIDEwNTMwLCAxMjM0OCwgODY1MywgNjgyNDUsIDQyNDM1LCA2MTU0LCA5NTUxLCA2NTM1NCwgCisgICAgNzg1MjIsIDc4NCwgNDIzOTcsIDMzNCwgMTIxMDg0LCA0MjQxNiwgNjUzNTYsIDY1MjczLCA0MzkzNywgNjk2NjYsIDQ0NDIsIAorICAgIDEwMzY0LCA0MzkzNSwgNzc4LCA0MTYyNiwgNDI0NTUsIDc5ODksIDc0MDYzLCAzMjI3LCA2OTkwNywgNDM5MzIsIDExMTAyLCAKKyAgICAyOTE1LCAxMTUwMiwgNDEwMjIsIDQxNzAyLCAxMDMwOSwgMTI3MDM1LCA3NTAzMiwgMTIwMjczLCA2OTc1LCAwLCA1NDE1LCAKKyAgICAxMjE3NiwgOTgzNzA5LCA3NDE5MywgMzQ2MiwgNDM5NDAsIDQyNjI5LCA3ODY5MSwgNzExNzUsIDQzOTQyLCAxMjcyNTYsIAorICAgIDk3NTksIDEyNzI1NSwgNzAwNTcsIDEyMTQ0MiwgODExNCwgNzg2OTgsIDc4Njk3LCA3ODY5NiwgNzg2OTUsIDg3MTAsIAorICAgIDQyNDk1LCAxMTg5NTYsIDcwMTg5LCA0MDUxLCAxMDQ2MCwgNDMzNjQsIDcxMjA2LCAxMzU2LCAxMjE2MSwgNDI3MTMsIAorICAgIDEyODg1NywgMTI3MjY4LCAxNjE5LCA5NzAzLCA0MzE1MiwgNDI0ODksIDQyMTEyLCA2NDQzNiwgMTg3NSwgMTA4MDgsIAorICAgIDQyMTA5LCAxMjAyODQsIDQxODYwLCA2NDg2MiwgMTMzMDUsIDY0OTA3LCA1Mjg5LCAxMzE0NCwgMTI4NjU4LCA5ODMyMjQsIAorICAgIDU1NzUsIDk2NzUsIDcxMTI5LCA1OTQwLCAyMjYsIDI2NDksIDYzMzYsIDk4MzI3OSwgOTI5NzksIDQzMjM2LCAzMzgyLCAKKyAgICA0MjQ0OSwgNjQ5OCwgMTY1OCwgMTE5MzYsIDc4MjMyLCAxMTM4MTQsIDExMjY5LCAxMDE1MSwgNzM3NTksIDQzMTAwLCAKKyAgICA2OTg4OCwgNjU1MDgsIDk4MzE0MywgMCwgMTIxNDUxLCA4OTM1LCA3ODIzNCwgMCwgOTgzNzU3LCAwLCA2MTYsIDc0NzUzLCAKKyAgICA2NTE3OCwgNDY4NCwgNzg3MDEsIDExOTY1MywgNzQ2MzEsIDEyNjU1MSwgMTI0OTkyLCA2MDQ4LCA3NDQ2MCwgNDIxMTAsIAorICAgIDczOTY1LCAxMDg3MCwgODU1NywgMTEwNTQsIDY4NjY0LCA3NTA1MSwgOTY4MSwgNDQ3NSwgNjc0MjksIDQxMTQyLCAyMTAwLCAKKyAgICAxMjUwMjQsIDEyMDczMSwgNjAzNSwgNzM3OTYsIDc2NTEsIDY4NDYsIDY0NDQzLCA5ODM5NTcsIDk4MzI5NiwgOTE3OTg3LCAKKyAgICAwLCAxMTg5NjYsIDc0MTQ0LCA0MDk5NywgNjg0ODgsIDEwMzkyLCAxMDMyOCwgNDA5OTgsIDQzNDYyLCA3NDQ4OCwgNzExODIsIAorICAgIDk4MDAsIDg5NzksIDAsIDEzMzA3LCA0MTAwMCwgMCwgNTExNCwgNjQ4NywgMzM4NiwgMTI5MDk0LCAxMDM0NCwgMCwgNTExNSwgCisgICAgNTM5NCwgNDMyNDYsIDc4MjQzLCA1MTEzLCA2NjUwNSwgNDEyMDAsIDEyODU4MiwgNDQyNSwgMTk0NjY5LCAwLCAwLCAKKyAgICA0MzA3NCwgNzM3OTksIDEyOTA3NiwgNzgxNDcsIDUxMTIsIDEyMTczLCA3ODU0NSwgMTI4NzcxLCA2NjgyNCwgNjUzMzgsIAorICAgIDk4MzY3NiwgMCwgMTE5NTgyLCA0NDc0LCAxMjg5MzYsIDQzMDkzLCA0Mzk2NCwgMTU4NywgMCwgMTI3MzcyLCA2NDQ3NSwgCisgICAgMTE5MjE3LCAxMzY5LCA5ODM2NzIsIDk5NTksIDc5MjcsIDQzOTYzLCA0NTYwLCAxMjA3OTMsIDY3ODExLCA5MjI3NywgCisgICAgOTgzNjIxLCA2NDk0OCwgNDQzMCwgNDM5NjEsIDQyNjAxLCA0NTE0LCA2NjQzNCwgOTM5NTUsIDgxOTQsIDY1NDYyLCAKKyAgICAxMDYyNiwgMTA5NjUsIDEyMDkwNSwgODg5MywgOTgzMzAzLCAxMjU0MiwgMCwgNjUzNDEsIDY3NzAzLCA2NTgyOSwgNzkyNSwgCisgICAgMTE5ODIyLCAxMDQ3NSwgMTEzODI1LCAxMjcwMTEsIDEzNTIsIDExMDY5LCA3NzA3LCAxMjc1NjAsIDEyNjQ4NiwgNjUyNzksIAorICAgIDEyNzEwMiwgNjgyMDcsIDc0OTU2LCA3MDk5LCA2MDQwLCA2NzY4MSwgMTAwNzEsIDc4NTU0LCA5MzM2LCA0Mzc1MCwgCisgICAgMTIxMDc0LCA4ODk5LCA3Nzk4LCA2NDQ3NCwgNjQyNTksIDY5ODczLCA2NTE4OCwgNzgyMCwgNDMwMTgsIDEyNzA4MiwgCisgICAgMTI4ODk4LCA3NzQ2LCAxNDkyLCA3ODU1MSwgMTA4ODQsIDc1MDc1LCA2Njg2NiwgNTEyNywgMTEyODUsIDQyNTAxLCA1NDk1LCAKKyAgICA0MjczLCA0MzA5NSwgNDE0MjYsIDEwODQ5LCA1NzMwLCAyOTk5LCA2MzQyLCA2ODYzNiwgNzQzMDQsIDM3MSwgNjQzNzMsIAorICAgIDYwMjMsIDE2OSwgNTQ5NywgMTE3MDgsIDc1MDI4LCAxMjg2MDMsIDYzMjMsIDEyOTA2NSwgODIyNCwgMTI4NDE3LCA4OTM4LCAKKyAgICA2MDQzLCAxMjczOCwgMTIwNjcxLCA5ODMwNzYsIDUzMjEsIDY4NjQ1LCAxOTQ3OTgsIDEyMDI1MSwgMjU4OSwgNzQzMzIsIAorICAgIDE2ODksIDc4MDIsIDQ2ODMsIDc0MzE4LCA0MjcwNCwgOTI5NDAsIDExOTA1LCA5ODM2MTUsIDAsIDEyODUxNiwgMTI4MTYzLCAKKyAgICA3NDUxMywgNjA0OSwgMCwgNDAyNywgODM0LCAxMTg5NjIsIDE4MDMsIDk4MzgyMiwgMTUwMywgNzgzMzYsIDEyNzE3MywgCisgICAgNzEzMTIsIDU3MzEsIDEzODEsIDIzODcsIDEyNjYxMCwgNzA4MDgsIDgyODksIDY0NTI1LCA2NTgxNywgMjg4MSwgNDMxNDIsIAorICAgIDAsIDk2MDEsIDI4NzksIDk2NjgsIDk3NjYsIDAsIDU3MjksIDEyOTExMCwgNzEyMzAsIDYwMzYsIDY0ODgxLCA0MDI2LCAKKyAgICA5MzYxLCAxMjcwOTEsIDI4ODcsIDcwMzg5LCAzNTI2LCA2Mjk4LCAxMTk4NTEsIDc3ODk3LCAxMjAwOTUsIDc4NTE5LCAKKyAgICAxMTg5NjQsIDg1NzIsIDYwMjEsIDc3ODk2LCAxMjgyODgsIDcxMTc0LCA0MzE1NSwgMCwgNzExOTcsIDMxNDYsIDEwOTU5LCAKKyAgICA5NDgzLCA4MzIxOSwgNzc4OTMsIDEwOTgxLCAxNjYsIDkxNzg0MSwgODYzNSwgOTE3ODQwLCAxMDYyMywgNDA4LCAxMTkwNTgsIAorICAgIDEyNzUwNywgMTMyOTgsIDEyNzI1MywgNzQyNiwgNDE2NDEsIDEyNzE3LCA5ODM3OTUsIDc2MDcsIDEwNjM5LCA0MzM5NiwgCisgICAgMTI5MzAwLCAxMTkwODksIDQxNjQzLCA3NDEzNCwgOTgzMDU0LCA4NzEzLCA0MTY0MCwgMTAyMjEsIDQxNjQ1LCA2NjI5MywgCisgICAgNjY0NSwgNjQ2LCA2NjcyNiwgNjY3MTEsIDQyMTI5LCA2ODI1NSwgNzc5MDEsIDM0NzIsIDg2OTcsIDAsIDEyMDkzNiwgCisgICAgMTIxMDY5LCAwLCAxMTg4NTksIDAsIDU4MDksIDE5NTAsIDExOTM1NiwgOTI0MzIsIDY4MzM5LCAxMjg5NDMsIDQyMTM2LCAKKyAgICAxMjE0NDAsIDAsIDAsIDAsIDMyNDcsIDkyNDAyLCA2NTAxNywgMTI4Nzk0LCA2ODQyOCwgNjY2NjgsIDAsIDEyMTExMiwgCisgICAgMTA5ODMsIDAsIDEyODc4NywgMCwgNDE1NjcsIDExOTg1MiwgMCwgMCwgNzg0NDYsIDExOTg1MywgMTI3OTIyLCAwLCA4Mjg1LCAKKyAgICAxMjY1MTYsIDQ1MDksIDEyMTA0MywgNjY0NzEsIDEyMjE2LCAxMjg4MDYsIDQwOTg4LCA4MzIyMSwgNzQ4MDksIDQxNzI3LCAKKyAgICAwLCA0Mjg0OCwgMjM5NiwgMTI4MDgzLCAxOTQ4OTIsIDc0MDE4LCA5MTc1MzgsIDY0OTQwLCA3MDI3LCAzODg2LCAwLCAKKyAgICA0MjQ1NywgOTI4ODgsIDgzMjk5LCA5OTYsIDY4MTIzLCA5NDA1OCwgNDI0OSwgOTI0MTAsIDY5NjUwLCAxMTcwNywgODIyMiwgCisgICAgNzM4MjUsIDc5MzksIDcxMjEzLCA5MjQ2MCwgMTI3ODAxLCAxMjE0MDgsIDEyODM1OSwgODUzNCwgNjk4NTMsIDQwOTgzLCAwLCAKKyAgICAxMjE0MjEsIDAsIDcyMDEsIDEyNTYxLCAxMjA4NjYsIDQyMzcxLCAxMjU1OCwgMTU0MCwgOTE3NTQ5LCAxMDA1MiwgNDA5ODIsIAorICAgIDExOTg0MSwgMCwgMTQ4OCwgNzExNzcsIDAsIDE5NDgzMSwgOTE3NTU5LCAxMjg0MDEsIDAsIDE1NjMsIDEyODAzNCwgOTYxOSwgCisgICAgMTIwODQwLCA5MTc5MDUsIDEyMDk1NCwgMTI3ODcyLCA3MTM2MywgMzU2MCwgNzc5NywgNjA3MCwgMTAwMDYsIDEyODkyMiwgCisgICAgMjkyMiwgNjA4MiwgNzAxNDcsIDY1MDA5LCA5ODM5NDIsIDEyNTY3LCA2NjcxMiwgMCwgNDE0MTIsIDEyODEzMSwgMTE5NTkxLCAKKyAgICAzNjA3LCA5MjAwLCAxMDA0NiwgOTYxMiwgNDIxNTMsIDgyMTgsIDk0ODUsIDAsIDIwMzIsIDc4MzU0LCA4MzQ2MiwgCisgICAgMTE5MTMxLCAwLCAwLCA2NzgyNiwgNDMwODUsIDYwNTcsIDUwOCwgOTM5NjgsIDkyOTg5LCA2Nzk2OCwgMCwgOTIxOTgsIDAsIAorICAgIDEyODgzMSwgNjM4LCA2MDgzLCAxMTkwNzIsIDEyNDk1MCwgMCwgMjMwNSwgNzgzNDgsIDY4MDk2LCA5MTc3NzIsIDYwNTYsIAorICAgIDY2NTksIDY3OTY5LCA5ODMyOTAsIDYwODUsIDAsIDAsIDM5MTUsIDQxNjM0LCAwLCA0MTYzOSwgNjM5MTIsIDExOTQxLCAKKyAgICA5ODM3ODMsIDQwMjgsIDE3ODcsIDQyMTgwLCA0MzA5NiwgNDM3NTMsIDMyNDksIDE3NjgsIDkzOTgyLCAxMjMyOCwgNTAxLCAKKyAgICA5Mzk4NSwgMTA2MDEsIDAsIDU4MywgMCwgNDE5NzcsIDAsIDY2MDA0LCA2NjQxNiwgNjUwNSwgNzQwMTAsIDk4MzI1MCwgCisgICAgMTMwNjQsIDU1MjY3LCAxMTkxMTMsIDY1MDAsIDU1MjYsIDY1MDQ5LCAwLCAxMjk5MCwgMCwgOTIzNzYsIDEyNzQ1LCA5Njc4LCAKKyAgICAxMjExMDgsIDEyMDU4NywgOTg2OSwgODMxNTAsIDE3NzEsIDEyODk2NSwgODkzNiwgOTI5NjQsIDAsIDQyMDgsIDc4MzQxLCAKKyAgICA3ODU2NywgNzgzNDIsIDY3NzQyLCA5ODMyMDgsIDc0MTAxLCAxMjg2MDUsIDExNzYyLCAwLCA3MDA5NiwgNjgzNSwgNjgwMTAsIAorICAgIDY2NDc1LCAxMjAyNjAsIDUwMjcsIDc4MTcyLCAxMjg4NzgsIDExOTgzMCwgNTA2OSwgNzM3MzYsIDUwMjgsIDk4OTcsIAorICAgIDkyNzc0LCA3MzczOSwgNTAyNiwgOTgzMjU1LCA2ODYzOSwgNjMzMSwgMTAwNzksIDg5MzEsIDAsIDE0MTUsIDg4NjYsIAorICAgIDQxOTAxLCA3NDc5MCwgNzgxMzgsIDExOTM2MSwgOTgzNTY0LCA0MzEwNiwgNTAyOSwgNjUzMDksIDE1ODAsIDM1OTgsIAorICAgIDY4NDI0LCA0MTA3MCwgNzc5MDMsIDc2NTgsIDM0NDAsIDc4MjE1LCAxNTYyLCAxMjg2NTYsIDEyNzE3NSwgMTE5MzU4LCAKKyAgICAxNzE2LCA5ODM2NzksIDEwNjAwLCA3ODU1OCwgNjIwLCA0MTAwMSwgNjAyOCwgNzA0NDUsIDQyODkyLCAwLCA3MTExNiwgCisgICAgNTAyNCwgNzQ5NDUsIDQxMDAzLCA2ODEzNywgNTAyNSwgNjk4OTIsIDk4MzIwOSwgNzUwMzksIDExODg4NSwgMTI3OTU2LCAKKyAgICA2NTU1NywgMCwgNzQ1NDEsIDEyODkyNCwgMTE1OTksIDEyODIwOSwgMTE2MDIsIDYyNDMsIDExNTc0LCAxMTU4MSwgMTE1OTcsIAorICAgIDExNTk4LCA2MjUzLCA2MTA1LCAxMTU4NCwgNzAyNzMsIDExNTY5LCA2NTI3NSwgODkwNiwgNDM5NDUsIDU3NTUsIDI2MzYsIAorICAgIDcxMjAzLCAxMDgxNSwgMTE2MTksIDIzMDEsIDQxNTQwLCA3ODE1LCAxMTYxNiwgNjk3OSwgMTIwODAsIDc3MjEsIDExNjA0LCAKKyAgICA3ODY5LCAxNTkyLCAwLCA0MjE1MiwgNzg0OTgsIDQxMDQ4LCA5MTc3NjMsIDgyOSwgMCwgOTI0MDYsIDE5OTUwLCA2Njg4NiwgCisgICAgNjQxMzEsIDY2MTYsIDAsIDExODg3NSwgMTA5NTMsIDM5MSwgMCwgNjk3ODUsIDQ4MiwgNDIyOTYsIDExNTg4LCAwLCAKKyAgICA0MzYwNiwgNzExODUsIDY4Mzk3LCA2NjM3MCwgNzQyODIsIDQyMzM1LCA2OTc4NiwgNzI0MjEsIDgyOTk4LCA3NTM4LCAKKyAgICA1MzE1LCA4MzM2NywgNDI0OTEsIDkyOTAxLCA0MjA2MSwgMTI4MDAyLCA0NTc2LCAwLCA2ODQxNywgNDM4MDksIDQyNzcsIDAsIAorICAgIDM1NjMsIDY0NDcyLCA0MjMzOCwgMzY4LCA0MjA1OCwgMzk2MCwgMTEwNDMsIDExMzM3LCA3ODIwOSwgMTIwMjQ0LCA2Mzk4OSwgCisgICAgMzk1OCwgMTIxMzIsIDE4NDksIDAsIDk5MjEsIDQyNDUxLCA0MjUzLCA0MTE0NywgNDIwNjQsIDExOTU5LCA0MjQwNCwgCisgICAgNDExNjAsIDEyMTQ4MSwgMzYxOCwgNzgzMzgsIDE5NDkyNCwgNDMzMDAsIDUxNTYsIDkyNjI5LCA3MDM1MCwgOTI5LCA2ODI3LCAKKyAgICA0MjAzNSwgNDI0MzcsIDE1NTUsIDAsIDg2OTEsIDY2NDM1LCAyMjE1LCA0MTY2MiwgOTQwMTAsIDExOTI2MiwgMCwgCisgICAgMTI4ODI0LCA5Mzk1MiwgNDU3OCwgNjQ1MTMsIDQxNjY0LCA5ODM3MzQsIDQyNTc4LCA3MTA0OSwgNDE2NjEsIDc4MzUxLCAKKyAgICA0MzI2NywgOTM1NiwgMCwgMTk0ODgwLCA5ODM0MDEsIDEyODYsIDEwMTY2LCA5ODMxMTcsIDAsIDY0NzA3LCAxMjg5MjUsIAorICAgIDQyNDc2LCA3NzMwLCAxMTE1NiwgMTI4NTIyLCA0MjQ4MywgMTI5MDgzLCA3NDk0MCwgNDIzMjQsIDQyMjkxLCAxMDAyMCwgCisgICAgNDMzNTksIDAsIDY2NDEsIDUyNSwgNDE2MjcsIDkxNzkyMywgODc2MywgMTI4MzA0LCA0MTYyOCwgNTMzLCAxMTkzMSwgCisgICAgNjUyMjUsIDgzMjEsIDQyNTA0LCA0MjU4MSwgMCwgNjkxNSwgNDIzMTAsIDQzNzcsIDg1NTksIDEyODMyMSwgODU4NywgCisgICAgMTIxMzE4LCAxMzE5MywgNjQzNTAsIDExNjY2LCA4Njc5LCA0MTkyNCwgMTU3NiwgNzczNSwgOTIzOTgsIDAsIDczODQwLCAKKyAgICA4MzE1MywgMTEzNzQsIDc4MDQzLCAxMDg4OSwgNDM0NjEsIDc3NTcsIDQyNDYyLCAxMjAyMjYsIDEwMDI5LCA2NjQ5MywgCisgICAgMjcxOCwgNDE2OCwgNDM5MDQsIDEzMzA4LCAxMjAxMTIsIDAsIDExNzksIDQ0NDAsIDQzOTAyLCA3Nzk0OCwgMzYzLCAKKyAgICAxMTAxNSwgNDM5MDMsIDc3OTQ0LCA0Mzg1NywgODMwNDksIDY2NjkyLCAxMjA4MjYsIDAsIDY2NDkyLCA2NTkzLCA2NDYyNSwgCisgICAgNDE5NjMsIDkyMTc3LCAxMTkzMjksIDAsIDEwMDEzLCA2NDQzNCwgNzUwMTAsIDEyNzA5NSwgOTQ5MiwgMTE3ODIsIDY0MzgyLCAKKyAgICAxMjgzMywgNzc4MzAsIDAsIDEyOTcsIDQxNjMwLCA2MzAsIDEyMDk2MCwgOTgzOTIzLCAxMjA3NzQsIDcwMTY1LCAxMDQzLCAKKyAgICA0MzY1MiwgNjYyMjMsIDEwMDkwLCAwLCAxMjQ5NDUsIDMxMywgMTIxNDgzLCA0MTg4MSwgMTk0NjU4LCA0MjMxMSwgNzQ0NSwgCisgICAgNDM5MDYsIDU3NTAsIDEwNzU5LCA5NDE5LCA1NTIyMiwgOTQwNSwgMTEyNjgsIDQyOTE5LCA5Mzk4LCA4NTI2LCA5Mzk5LCAKKyAgICA5NDIyLCA0Mzg5NCwgNjY0OTUsIDY5OTkwLCA5ODM4ODUsIDkyOTkwLCA0MTcxOCwgMTA3MDcsIDE2MDMsIDk4MzcwMywgCisgICAgMTE5MDAzLCAwLCA2MzEsIDc3OTUyLCA2OTcwMywgMTMxNjEsIDY1MjcyLCA3MTA2NywgMTA1NDYsIDc0MjEwLCA3ODEwMSwgCisgICAgMTE2MDAsIDc3OTYxLCAyNzk3LCA0MzkyNCwgNDI0MjcsIDMwNiwgNzE0LCAzMDU4LCA0MjM4MSwgNzc5NjIsIDEyNzA4MCwgCisgICAgMTIzNTEsIDQyMzk1LCAwLCAxMTYwNywgMTI3NTI4LCAxMTE5OCwgNjY4MjEsIDc3OTY3LCA5MTU3LCA3Mzc2NSwgNjYzNjQsIAorICAgIDQyNDMzLCA3Nzk2NCwgNzYwMywgMTI4MDMsIDE4MCwgNDIxNDEsIDAsIDEyMDYxMiwgNjY0OTQsIDEyNjc0LCA4MjQ0LCAKKyAgICAzNjIsIDkyNDM5LCA0Mzg5MCwgODAzNywgNDM3NzcsIDExNTM1LCAxMjY1MzksIDQzODkzLCA1MTg1LCA3MTY1LCA1NTIxLCAKKyAgICAxMDMzNCwgMjA5MywgNzEzMjksIDEwMzAyLCAxMjUxMzEsIDEwMTA0LCAxMDI3LCA1MTgxLCAxMjg0MzUsIDUxMTcsIAorICAgIDEwNTIzLCAxNDQ2LCA0MjMyMCwgNjg0NSwgOTkxLCA1MTg5LCA0MjQ3MiwgNDE2NDcsIDEyMDEwNSwgMTcyMiwgNTU4MSwgCisgICAgNDI4OTgsIDM0MDUsIDAsIDE5NDY0NCwgNTUyMywgNDM5MTUsIDQyNjIwLCA5MjQ0NywgNzQ5NDMsIDk1NDksIDAsIDEwNTQ5LCAKKyAgICA0MzkyMywgOTY2MSwgNDI5MzMsIDc0ODg0LCA3NzkxMCwgNzgwNjgsIDQzOTIxLCAwLCA3MTE4NCwgOTgzMDcwLCA0MTk5MSwgCisgICAgOTgzODkzLCAwLCA3NjMwLCA5ODQ2LCA3Njg0LCAxMDM1MCwgMTI4NDUzLCAxMTc0LCA3Nzk4MSwgNDI3MzMsIDc3OTc4LCAKKyAgICA3Nzk4MCwgNjY0ODUsIDc3OTc3LCA0MjI3NywgNzc5NzQsIDQyNDU2LCA0MzkwOSwgNzQ0MzgsIDEyMzMwLCAxMjgyNzIsIDAsIAorICAgIDQyNDE3LCA0MjM4MywgNjY2MzAsIDQxMzQ0LCA2MjkzLCAwLCA2NjI1MiwgNDM5MDgsIDc0NDQzLCAxMjc4OTQsIDEwMjA5LCAKKyAgICA4MzEzLCA0MTk1LCA3NDQzNSwgMTMxNiwgNjY2OTAsIDc1MDcyLCA2MzMyLCA2NDg5NCwgOTgzMTU2LCA2NTg3MSwgNjcyNTAsIAorICAgIDE3MzYsIDk4MzY4NCwgMzkwMSwgMTIyMjgsIDEyMDE1MSwgNjUyMDAsIDMzODMsIDEwNDQ2LCA3ODI0MSwgNjkzLCA5MTMwLCAKKyAgICAzMTQsIDY0MTQ5LCA0MjQyMCwgMTE5NDksIDEyNzIwMCwgMTIwMTUyLCAxMTAyNiwgMTIwNTE2LCA1MzMyLCA2OTQwLCAKKyAgICA2NDE1NCwgMTI2MzUsIDEyNDk4MCwgNDI3MDYsIDE3NTEsIDI3MywgODE2NSwgMTMxNjYsIDgzMzA3LCA3ODg0MCwgNzEzNjgsIAorICAgIDEyODI0LCA0MzkxMSwgNDUyOCwgNTMyMCwgNjMwMSwgNDM2NjIsIDYxMzMsIDkzMzksIDk0NjMsIDQyMzQ2LCAxMDkyMiwgCisgICAgNjQ1NjAsIDM3NTcsIDAsIDAsIDc0MzAyLCA2NTg2OSwgNzM3NjAsIDI1NjksIDc0OTc2LCAyMzI2LCA2NTc0MCwgMjU2NSwgCisgICAgNDI0NTksIDc1OTYsIDc5MjEsIDk4Mzg2OCwgNzM4NjIsIDEyNzk4MSwgNDE4NDgsIDI1NjcsIDY2MDA2LCA5MjYyMiwgCisgICAgNDA0NCwgOTI2NDYsIDQzOTUzLCAxMjIzMywgOTgzODcxLCAxMDIzLCA0NzQsIDE5NDk0MCwgMTE5ODE4LCAwLCAwLCAKKyAgICA0MjQ4NywgNjU1NTYsIDEyMTE2OCwgMTI3ODY2LCA0MjI5NSwgMTI4MjAzLCAxMjE0NzQsIDcxMzIyLCA5MjUxOCwgMjIyMiwgCisgICAgNjY0OTksIDAsIDU0MTcsIDEyMjc1LCAxMDg5NSwgMCwgMjc0LCAwLCAxODU4LCA5ODM0NTUsIDAsIDU1MjUxLCAxMDExOCwgCisgICAgMzEzMywgMTI3NzcxLCA3MTg1NywgMTIxMjAxLCA5NjEwLCA4MDY4LCA4MTk3LCA5MTc1NDUsIDY5OSwgMCwgNDE2NjUsIAorICAgIDU4NjgsIDEyODcxMCwgOTI2OTUsIDQyMTgyLCA3NTgxLCAxOTk0MCwgNDM2NjgsIDQxNjY3LCAxMjgwNTcsIDAsIDE5MjMsIAorICAgIDY1NTgzLCA2NTgwMiwgOTM5NzAsIDY0NTk3LCA0MzQ0NCwgNzgxMjksIDY4NzUxLCAwLCA2NDY0LCA3MDM2LCAyOTk2LCAKKyAgICAxOTM3LCA5ODM3NTEsIDY4NDgxLCA0MTgzNSwgNDA0NywgNDE4NDIsIDAsIDY0MTA3LCA3Nzk2NSwgMTE5ODM3LCAxMTAxNywgCisgICAgMTIwNjAxLCAwLCAyOTMsIDc3OTY2LCA5MjE2OSwgNjQ3OTEsIDQxODI3LCA0MjQ2NiwgNDM0MjIsIDEwNTc5LCA4NTYwLCAKKyAgICA3MTM1MCwgNjU0MTMsIDc3OTYzLCA0ODAzLCAxMjk2NCwgMTczOSwgMTk0MSwgMzkwMCwgMTI4OTY3LCAxNzEzLCA3Nzk2OSwgCisgICAgMTIxMjkyLCA3Mzk1NywgMTE0MDcsIDQyNDQxLCA0MTk3MSwgNjI5NywgMTIwMDk4LCA2NDEwNSwgMTIwNTY1LCA0MjQ4MSwgCisgICAgMTE3MTYsIDY2NDczLCA3MTc5LCA0MjI4OSwgMTI1MDk1LCA2NDEwMywgOTY5LCAwLCA5MzUyLCA3MTQ4MSwgNjE2NSwgCisgICAgNjQxMDAsIDkxNzgxOSwgNjYzMiwgNzM4NjEsIDQyNDAyLCA3NDMyNywgNzgwNiwgMTEzNzYyLCA4OTE0LCA2NjkwOCwgCisgICAgMTI0OTU0LCAzMTgzLCAxNDM1LCA2NDg3NiwgMjk2OSwgNjA0NiwgNjQ0NDEsIDYyMDgsIDY3ODQ5LCA1NzQ2LCA2NjQwOCwgCisgICAgMCwgNjQ0MTYsIDQyNDIyLCA4MzUwNiwgOTgzMDQ2LCA3MDgyLCA3Mzc3NSwgMzM4LCA1MDU5LCAxMjEzNjksIDgzNTI0LCAKKyAgICA0MjMyOCwgMTA3NjcsIDEyODg2MiwgODExNSwgODM0NTQsIDc0NzU4LCAwLCA4MjI3LCAyMDczLCAxMjE4LCA5MTc3OTAsIAorICAgIDk4MzIzMCwgNjU4NDgsIDkyODg0LCA4MzUxNywgNjk4NjMsIDEyODMyOCwgMTI2OTg3LCA0NDg2LCAxMjgwODIsIDkxNzc5NiwgCisgICAgMCwgMTA5MjUsIDAsIDgzNTE1LCA4MzUwNywgMTI0OTUyLCA0MjMwOSwgMTAyNTcsIDY1MTkxLCAxMDI3MywgNzY2OCwgCisgICAgMTAzMDUsIDQyNDYxLCA3NDg4MiwgNDIzNDksIDg4MzIsIDc4MDUxLCA2NDEyNywgMTA2NDQsIDQyNjYyLCA3ODgyOCwgCisgICAgNDIyNzgsIDc0NDUxLCAxMjY5ODgsIDY5ODc0LCA3Nzk0LCAxMTkyMTQsIDQyNDI5LCA2Mzc3LCA0MjMxNiwgMTE5MDI2LCAKKyAgICAzNjY5LCAzOTY4LCA0MjQ2OCwgNzEzMTksIDY5NjU4LCAwLCA2NTQwMiwgMTE5NTgxLCAxOTQ5NzMsIDEyODc0NywgNjQ5MzMsIAorICAgIDE5NDYyNywgNDE5NjAsIDY2OTksIDQyOTAzLCAxMjg3NTUsIDEyNTAxMywgNjgyMywgNDIzOTEsIDE1ODgsIDQzNTAyLCAKKyAgICA4NDA5LCA3ODIyMywgMTk5NjcsIDY1Mzk4LCA3ODcsIDcxMzE1LCAxMjgzMzUsIDEyNzc0NCwgNjExNSwgMjA3OCwgNDE2NTQsIAorICAgIDQyNDgwLCA5MTc5NDksIDkyNjUwLCA0MTY1NSwgNjU0MDEsIDQzOTc1LCA3MjQyNywgMCwgMTEzODE2LCA2NDQsIDY1NTAwLCAKKyAgICA0MTY1NywgMTA3NzgsIDM2NTksIDk1MzMsIDE4NCwgMTU1MywgMTMxMDcsIDY1NDg0LCA2OTY0OCwgMTA1MDIsIDY2Mjk2LCAKKyAgICAwLCAwLCA0MTU1NCwgMCwgODIyMCwgMTI4NDMyLCA0MTU1NywgMCwgMTI4OTM4LCAxMTA3MCwgMTE5MjIxLCA1MTU3LCAKKyAgICA0MDIwLCA3Mzg1OCwgNDE1NTUsIDk1MTQsIDY0ODE4LCA2NTEwMywgNjQ2NDEsIDY0MzAzLCA3ODEzMSwgNzUyMCwgNzM4ODgsIAorICAgIDc0Mzc3LCAxMTAyOSwgNjY2NTEsIDk4MzA2OCwgMTI4NDkyLCAxMTg5MzAsIDY0NTI3LCAxMjEzOTUsIDc4NzcsIDEyNzIzLCAKKyAgICA5ODM3OTgsIDY4Nzc2LCAxMjAwOTYsIDc0NjAyLCA5OTU1LCAxMTk1NTcsIDQwNTUsIDQyODE3LCAwLCA2NTIxMiwgMTE3MTUsIAorICAgIDEyMTkwLCAxMjMxOSwgNzg2MzAsIDAsIDc4NjMxLCA5NTAyLCA2NTQyNywgMTI1MDQ4LCA2NTQyNCwgMTI2MDcsIDEyMDk2NiwgCisgICAgOTczNCwgNjU0MjUsIDAsIDEyMTQzMSwgMTI3MzU3LCA3NDg5MCwgNzg4MzYsIDEwMTEyLCAxMDgyNywgMTk0NjM1LCA5ODY2LCAKKyAgICA3NDUyNywgNjY2NzUsIDExODg2NywgODYyNSwgNjQzNDYsIDExMjkwLCAxMDQ3NywgNjc3MzgsIDg2MzYsIDk4MzkyNywgCisgICAgODMxNSwgNjU0NDQsIDk4Mzc5MywgMTk1MDExLCA3NDU5NSwgNjE1MiwgNzg4MjAsIDczOTQ3LCA2NjI5LCAxMjUwNTYsIAorICAgIDEyMDE3MSwgMCwgNzQ1ODksIDQzOTkzLCAxMjgzNDYsIDY5NzkwLCA2NDQzNSwgNjQ5NTUsIDQzNjkwLCAxMTA0NiwgCisgICAgMTE0OTAsIDQyNzMwLCA0NDg1LCA3MTEyNiwgMTI4MTk0LCA2NDkyNiwgMCwgOTgzMTMzLCA0MzgzMCwgNTg2OSwgMTI0MzcsIAorICAgIDQyNzI4LCAwLCA3MDQwLCAzNTg4LCAwLCAxMjgyNSwgMTIxMTU4LCAwLCAxMjcyNSwgNzQwOTIsIDEyNzEwNiwgNzg2MzQsIAorICAgIDIyMywgNzg2MzUsIDY5Njc1LCAxMjAxMTksIDQyNDQ0LCAxMjg0NDksIDY0NDk5LCA2NTI0NSwgMTI5MTA0LCAxMTcxLCAKKyAgICAxMjg4MDIsIDY5NzE3LCAxMjAxMTMsIDE4MDUsIDg3NzIsIDQzODIwLCAwLCA5OTMwLCA2NTI0NywgNzg2MTksIDc0OTU0LCAKKyAgICAyMzM4LCAxMjAwMzIsIDExODg1MywgMCwgNDI2NzYsIDAsIDY0ODAwLCAxMzA5MiwgMTExODUsIDY4MTI2LCAxMjEzLCAKKyAgICAxMjg0MTksIDY0MDc1LCA3OTcsIDY0MDc0LCA4NzM0LCA0MjEyLCA4MzAwNSwgNjQzODcsIDQxMTUsIDcxMzMxLCA1MDA1LCAKKyAgICA2NDA3MCwgNjQwNzMsIDEwNjc5LCA4MzAwMCwgNzc5NTQsIDk0MDIsIDY0Mjc2LCA0MjYsIDgzMzU4LCA4MzAxMCwgODI1MSwgCisgICAgMTAxMzYsIDY1NDM2LCAwLCAyMTIwLCA0MzMwMiwgMTIyNCwgMCwgNjU1NzYsIDcwNzk1LCAxMDcwMSwgMTc2NCwgMzEwMSwgCisgICAgMTI3ODE1LCAxMjg1OCwgMTIwMTU5LCAxMjAxMDEsIDExMzczLCA2Mzc4LCA3MTA5MywgMTIwMTAzLCA4NjYzLCA5MzEyLCAKKyAgICA0MTY0NCwgNDUzOSwgMjEyOSwgNzA3ODUsIDkyMjIsIDEyMTQ3OSwgMTE4OTA3LCA0MjU5LCA5MDkyLCA3NDU2NywgNDE5NjEsIAorICAgIDEyODUxNSwgMTI3MjQsIDY2MzU3LCA0MjMzMSwgNjQ5MzUsIDAsIDAsIDEyOTMsIDc5NDcsIDIxMzIsIDk4Mzc2NywgCisgICAgNzE4NTgsIDcyNDQwLCAyNDU0LCA0MjcxNywgMzYxMywgMTI4ODM3LCA3MTExNywgMCwgNjU4ODgsIDg4MTYsIDEwOTc4LCAKKyAgICAxMDg0MCwgMCwgMTA2NjgsIDExMzcyMywgNDMwODcsIDEyNTk1LCAxMjAzMDQsIDk4MzExNCwgODgyMiwgMCwgMTE1NywgCisgICAgNjQ5MDMsIDg2MzgsIDEyNzI2NSwgOTE3ODg2LCAxMjc5MDUsIDAsIDY5ODQ4LCA4MjM1LCAxMjAzMTYsIDQ0MDUsIDEwMDg2LCAKKyAgICAxMjAyNDcsIDExMTI4LCA2OTIxNiwgMTIxMDY1LCA2NTQzMCwgNzEzMjEsIDYwNzksIDY4MTcsIDEwNzY0LCAxMjAzMTQsIAorICAgIDY0MjkxLCAxMjAzMTUsIDk5OCwgMTIwMzEyLCAxMTA2MiwgMTMxNywgNjQzMjcsIDE1NTgsIDE5NDU3MiwgMTk5MSwgNzg4MiwgCisgICAgNDIyNTQsIDEyODk1NCwgNDE3MDAsIDUzMCwgMCwgMTA0MjgsIDExOTMzNSwgMTIwMDIsIDExOTMzNiwgNTc0MiwgNDMwNzYsIAorICAgIDQ2OTIsIDY0NjMwLCA0MTgyMywgNDAwNywgNTAwNCwgNzQwMzMsIDc4OTYsIDc1MSwgNjU5NSwgNjU5NiwgMTIwMzI1LCAKKyAgICA2NjM3MywgOTgzMjQ5LCAxMjg3NDYsIDY0OTA4LCA5MjY5MSwgNjMxMSwgOTMwMTksIDEyMDA0LCAxMTkxOTIsIDEyMDQ5LCAKKyAgICA0MzEwOCwgMTIwMzI2LCA3MTA4MywgNDE3MDUsIDkyMTg4LCA2NTk4LCAxMjEyOTgsIDY1OTksIDY2ODIyLCA5MzAzMSwgCisgICAgNDIxNDgsIDExODgyNSwgNjYwMjcsIDEyMTA1NSwgNjU5NywgOTQxMiwgODM0MCwgMTE4MjQsIDY0NzQ1LCAyMjgxLCAKKyAgICA2OTkwNCwgMTI4NDk1LCAxOTg4LCA1NDA3LCA2Nzg2NSwgMjQzMCwgNDE2NzgsIDkzMDU5LCA4MzExNCwgMjMzNiwgCisgICAgOTgzOTAzLCAwLCA2NzE2OSwgMTIwNDQyLCAxMjcwOTIsIDE5MjEsIDEwOTQ3LCAxOTkyNywgNzAzOTAsIDY1NDA2LCAKKyAgICA5ODM0NjQsIDE5OTEzLCA0Mjg0LCAxMzIxNywgMCwgNDM3ODksIDEyODQxLCA5MjI5LCAxMDk1NiwgNDIyODUsIDQxNjc0LCAKKyAgICAxOTk2NCwgNDE2NzksIDY1MDg0LCAzNTIxLCAxMjQ5NTcsIDU3NzQsIDgzMjUsIDY5ODY0LCA2NTQwMywgOTgzMDg5LCAKKyAgICAxODU0LCAxMDc5NCwgOTMwNTQsIDY3NjYwLCA2OTg0NiwgMTk0NzY1LCA3ODM1OSwgNTI4MCwgMCwgNDM0NCwgMTI5MDUsIAogICAgIDY1NDMzLCA2MDc2LCA2NDc5MywgNDE2MTAsIDc2OCwgMTIwNzQsIDQ0MiwgMCwgNjgxNjIsIDY0MDgxLCAxMjkzNCwgCiAgICAgNDE2ODIsIDY1NDMyLCA0MTY5MywgMCwgNjA3MSwgNjU0MzQsIDEyNzQ2NywgNDgwNCwgNDA1MywgMCwgMTI3NDY5LCAKLSAgICAxOTQ2NTMsIDQxNjk2LCA0NjcsIDY5ODIzLCAxMjc0NjMsIDY5Nzk3LCAxOTQ2NTIsIDEyNzQ3MywgODQyMSwgMTI3NDcyLCAKLSAgICA2OTY4MiwgNDM3MDUsIDUwMiwgMCwgNjU0MzEsIDExOTA1NiwgNjk5NTQsIDEyMDQzLCAxMzAzLCAzMTYsIDczNjQsIDIwMjksIAotICAgIDIxMzYsIDExOTI0NiwgMTE1MzMsIDY0MzY1LCA0MzQ4MCwgOTI2MzksIDQ4NjAsIDEyNjY0OCwgMTI3ODc3LCA0MjQ4OCwgMCwgCi0gICAgOTU4MywgMTI4ODQ5LCA1NTQ2LCA4MDE5LCA3Mzg1NiwgMCwgMCwgMCwgNTU0NCwgMjM1NSwgMTIxNTAsIDY1NzI1LCA1NTQzLCAKLSAgICA3Nzk4OSwgNjM3NTEsIDEyMTM3LCA1NTQ4LCA3Nzk4NSwgMCwgNjU3MjcsIDY4Mzg4LCA2NTcyNiwgNjA3NywgMTI4MzUyLCAKLSAgICA2NTQ1MiwgMCwgMTEzMDEsIDc4MDEzLCA3ODAwOCwgNzgwMTAsIDk4NzQsIDc4MDA3LCAwLCAxMzE5LCAzMDUwLCA2NTQxMCwgCi0gICAgMCwgMCwgNzgwMTYsIDc4MDE3LCA0MjgzMCwgNDM5OTYsIDY2NzE2LCAxMjgxMzcsIDQ2OTEsIDkyMjQyLCA5MzQ1LCA2MjEsIAotICAgIDkyNzA5LCAxMjgyMjIsIDAsIDY1NDExLCAwLCA0MTE4MiwgNzM4ODEsIDY1NDA4LCA3Mzg5OSwgNzgwMjQsIDk0NzQsIAotICAgIDEwNTQ1LCAxMTkxMTgsIDEwODg3LCAzNzg2LCA2NTQwOSwgODg5NCwgNDMxNzksIDExOTYxMSwgNzkyMywgMzcxNiwgCi0gICAgOTIzNjMsIDk5OTYsIDg1MDgsIDAsIDcwMTIsIDgxOTUsIDEyNzgzNCwgOTU2NiwgMCwgMzcyMiwgMCwgNDE3MDcsIDg0OTMsIAotICAgIDU0NSwgOTU3NSwgNDEzNzksIDEwMDUwLCAxMjcxOCwgNjk4NTQsIDg4NTksIDY4MjAsIDc0MzQ1LCA2NTExMCwgMTIwNzQwLCAKLSAgICAwLCAwLCA5MTE5LCAyNzg3LCA3OTIwLCAxMTg4MjMsIDQwMjEsIDIwMTIsIDc5ODUsIDAsIDExOTY2MywgMCwgMCwgNzgwMjEsIAotICAgIDc4MDIyLCA0MTAsIDc4MDIwLCAxODAyLCA3ODAxOCwgNzQxMDcsIDAsIDQxNjU5LCA0MTY3MSwgMTgyNywgMCwgNjQzOTYsIAotICAgIDEwMTI2LCAxMjExNiwgNDE2NzMsIDEyMDM3MCwgMTE0MjIsIDc4MTQxLCAxMjAzNzMsIDM4NjAsIDEyMDM2NywgNjg0MTIsIAotICAgIDQxMzQ1LCAxMjAzNjIsIDEyMDM2MywgMTE3NDgsIDQyMTU4LCA3OTQxLCAxMTA3NiwgODc0OSwgMTIwMzYxLCAyMTA0LCAKLSAgICA2NDg1OCwgMzYxLCAxMjAzNTcsIDg0NSwgMCwgNDE1NjAsIDExOTcwLCA0NTYyLCA5MTc5MjAsIDI5MjYsIDkxNzkxOSwgCi0gICAgNDU2OSwgNzQxMzAsIDAsIDQzNDg3LCAxOTQ2MzAsIDYxMSwgNzQxMjksIDY0ODcxLCAxMTg4OTEsIDY1NjI5LCAwLCAKLSAgICAxOTQ4NTgsIDAsIDAsIDEyNzU0NSwgMTIwNTQzLCAwLCAwLCA2MjkxLCAwLCA3ODYzOSwgNDE2NjksIDcwOTQsIDkxNzkyMSwgCi0gICAgMCwgOTgzNTgxLCA3NDA1NCwgMTI3NzU0LCAxOTUwMjksIDAsIDgzOSwgOTgzMzE5LCA3Njk1LCA4NzY5LCA2NTI0NiwgCi0gICAgNDgyOSwgMTk0NjYzLCA0ODU5LCA2NDQ2NywgMCwgOTgzOTYzLCAxMTg5OTgsIDcyMDYsIDAsIDY2NDcsIDQzOTg2LCAwLCAKLSAgICA2OTc2NiwgMCwgNjQ3NjQsIDQyMTAsIDk4Mzg2MywgMTI3OTM2LCA4MDQsIDAsIDAsIDEyMjk4LCAwLCA2NjY1MywgMCwgCi0gICAgNjQ5MjQsIDEwMDkxLCA3MzkzMSwgOTQ2OCwgNzQyNDUsIDAsIDAsIDc0MjQ2LCA5MjUwMywgMTI4MzksIDY0NjY5LCAKLSAgICA5MjIwMiwgMCwgMTI3OSwgMTQyNSwgNjIyNCwgMTE5MjI5LCAxMTA0OSwgMCwgOTI2OTcsIDQzMjM5LCA4NDgyLCA5MjQ0MCwgCi0gICAgMCwgNTAzMiwgNjk2NzcsIDExOTQwLCA2Nzg4OCwgNjY0LCAxMjA0MzcsIDUwMzQsIDAsIDAsIDEyNzUyNSwgNDI3MDIsIAotICAgIDczODg4LCA5ODMxNDksIDEzMjk0LCA2Nzg3MywgNjQ4NjksIDYwMzIsIDAsIDkxMTUsIDc0MzAsIDEyMDM3NywgMCwgCisgICAgMTk0NjUzLCA0MTY5NiwgNDY3LCA2OTgyMywgMTI3NDYzLCA2OTc5NywgMTIxNDAzLCAxMjEyOTQsIDg0MjEsIDEyNzQ3MiwgCisgICAgNjk2ODIsIDQzNzA1LCA1MDIsIDc1MDI5LCA2NTQzMSwgMTE5MDU2LCA2OTk1NCwgMTIwNDMsIDEzMDMsIDMxNiwgNzM2NCwgCisgICAgMjAyOSwgMjEzNiwgMTE5MjQ2LCAxMTUzMywgNjQzNjUsIDQzNDgwLCA5MjYzOSwgNDg2MCwgNzAzNzIsIDEyNzg3NywgCisgICAgNDI0ODgsIDcwMzM5LCA5NTgzLCAxMjg4NDksIDU1NDYsIDgwMTksIDczODU2LCA5ODM4NDAsIDEyNDk2MCwgMTIwODM5LCAKKyAgICA1NTQ0LCAyMzU1LCAxMjE1MCwgNjU3MjUsIDU1NDMsIDc1MDM0LCA2Mzc1MSwgMTIxMzcsIDU1NDgsIDc3OTg1LCAwLCAKKyAgICA2NTcyNywgNjgzODgsIDY1NzI2LCA2MDc3LCAxMjgzNTIsIDY1NDUyLCAwLCAxMTMwMSwgMTEyMTQsIDY1OTUyLCA3ODAxMCwgCisgICAgOTg3NCwgNzgwMDcsIDk4MzExNSwgMTMxOSwgMzA1MCwgNjU0MTAsIDY3Mzk5LCA5MjYwNiwgNzgwMTYsIDc4MDE3LCAKKyAgICA0MjgzMCwgNDM5OTYsIDY2NzE2LCA4MzA1MCwgNDY5MSwgOTIyNDIsIDkzNDUsIDYyMSwgODM1MTIsIDEyODIyMiwgMCwgCisgICAgNjU0MTEsIDAsIDQxMTgyLCA3Mzg4MSwgNjU0MDgsIDczODk5LCA3ODAyNCwgOTQ3NCwgMTA1NDUsIDExOTExOCwgMTA4ODcsIAorICAgIDM3ODYsIDY1NDA5LCA4ODk0LCA0MzE3OSwgNzEwNDIsIDc5MjMsIDM3MTYsIDkyMzYzLCA5OTk2LCA4NTA4LCAxMjc3OTQsIAorICAgIDcwMTIsIDgxOTUsIDEyNzgzNCwgOTU2NiwgMCwgMzcyMiwgOTgzMzc0LCA0MTcwNywgODQ5MywgNTQ1LCA5NTc1LCA0MTM3OSwgCisgICAgMTAwNTAsIDEyNzE4LCA2OTg1NCwgODg1OSwgNjgyMCwgNzQzNDUsIDY1MTEwLCAxMjA3NDAsIDEyODk3OCwgNTUyODIsIAorICAgIDkxMTksIDI3ODcsIDc5MjAsIDcwMDkxLCA0MDIxLCAyMDEyLCA3OTg1LCAwLCAxMTk2NjMsIDkxNzc5MiwgMCwgNzgwMjEsIAorICAgIDc4MDIyLCA0MTAsIDc4MDIwLCAxODAyLCA3ODAxOCwgNzQxMDcsIDc0ODk1LCA0MTY1OSwgNDE2NzEsIDE4MjcsIDAsIAorICAgIDY0Mzk2LCAxMDEyNiwgMTIxMTYsIDQxNjczLCAxMjAzNzAsIDExNDIyLCA3MTg0NiwgMTIwMzczLCAzODYwLCAxMjAzNjcsIAorICAgIDY4NDEyLCA0MTM0NSwgMTIwMzYyLCAxMjAzNjMsIDExNzQ4LCA0MjE1OCwgNzk0MSwgMTEwNzYsIDg3NDksIDEyMDM2MSwgCisgICAgMjEwNCwgNjQ4NTgsIDM2MSwgMTIwMzU3LCA4NDUsIDkyMTc0LCA0MTU2MCwgMTE5NzAsIDQ1NjIsIDEyODQ3MywgMjkyNiwgCisgICAgNjg0OTUsIDQ1NjksIDc0MTMwLCAxMjg2NTksIDQzNDg3LCAxOTQ2MzAsIDYxMSwgNzQxMjksIDY0ODcxLCAxMTg4OTEsIAorICAgIDY1NjI5LCAwLCAxOTQ4NTgsIDc0ODU0LCAwLCA3MDQ2NiwgNjczOTIsIDY2Mzg1LCA3MTQzOSwgNjI5MSwgMCwgNjg0ODcsIAorICAgIDQxNjY5LCA3MDk0LCAxMjEwNTEsIDAsIDEyMDk5OSwgNzQwNTQsIDEyNzc1NCwgMTI4OTE3LCAwLCA4MzksIDEyMTMxNSwgCisgICAgNzY5NSwgODc2OSwgNjUyNDYsIDQ4MjksIDY3NzU2LCA0ODU5LCA2NDQ2NywgMCwgODM1MjUsIDExODk5OCwgNzIwNiwgCisgICAgMTE5NjM2LCA2NjQ3LCA0Mzk4NiwgODM1MTgsIDY5NzY2LCAxOTQ2NjQsIDY0NzY0LCA0MjEwLCAxMjgzMDAsIDEyNzkzNiwgCisgICAgODA0LCA4MzUyMCwgMCwgMTIyOTgsIDcwMzQ0LCA2NjY1MywgMTI2OTgzLCA2NDkyNCwgMTAwOTEsIDY3MjAwLCA5NDY4LCAKKyAgICA2NzIwNiwgNjcyMDUsIDY3MjA0LCA2NzIwMywgOTI1MDMsIDEyODM5LCA2NDY2OSwgOTIyMDIsIDcxODUxLCAxMjc5LCAKKyAgICAxNDI1LCA2MjI0LCAxMTkyMjksIDExMDQ5LCAxMjcxMjMsIDcxNDgwLCA0MjY0OSwgODQ4MiwgOTI0NDAsIDAsIDUwMzIsIAorICAgIDY3MjA5LCAxMTk0MCwgNjcyMDcsIDY2NCwgMTIwNDM3LCA1MDM0LCA5MjQ5NSwgNzAyMDAsIDEyNzUyNSwgNDI3MDIsIAorICAgIDcwMTk0LCA5MzA2MSwgMTMyOTQsIDY3ODczLCA2NDg2OSwgNjAzMiwgNjcyMTgsIDkxMTUsIDc0MzAsIDc3ODM3LCA3MDE5MSwgCiAgICAgMTIwODE5LCA2ODM4NywgMTIwMTY4LCA3MzkxMywgMTIwMTcwLCA0MTE2MSwgNTUxOCwgNDE3NCwgMTA5OTMsIDQxMTYyLCAKLSAgICAxMjAxNjAsIDY0NTI4LCAxMTY5LCA0MzQsIDQxNDM3LCAxOTA1LCA2MDM0LCA0MTE2NCwgNjQ3NDQsIDk1MjgsIDExODg2NywgCi0gICAgMTI4ODAwLCA1MjQsIDAsIDc0MDI5LCA3ODgsIDc0MDI3LCAwLCAxOTQ2MzgsIDAsIDE2NjMsIDEwNDE5LCA3NDAyNSwgCi0gICAgNDI2MzYsIDAsIDY5NzI1LCAwLCAxMjA2NTYsIDAsIDY3ODc2LCAwLCAwLCAwLCA2Nzg5NywgNzQwMzksIDAsIDAsIDExMzk1LCAKLSAgICAwLCAxMTkxMDcsIDQzNjEyLCA2NDM0NCwgMCwgMCwgMTA4NTUsIDU0NDUsIDkzNTUsIDAsIDY1MTk4LCA3MzkxLCA4OTg5LCAKLSAgICAyMjEsIDY1Njg2LCAwLCAwLCA4MDEwLCA3MTkxLCA0OTYyLCA2OTc3MiwgODg1NSwgMCwgMCwgNjQ0NjksIDEyMDQyNiwgCi0gICAgMTA1NTUsIDAsIDQzMzMzLCA5MjI5OSwgMCwgMTIwNDI3LCAxMDQ1MSwgMCwgNjc2NTMsIDcyNDUsIDEyNDQzLCA3NDQwNSwgCi0gICAgOTk0NywgMTIwMTQ5LCA3ODMxNywgMzg3MywgODM2NywgMCwgMTIwMTQ2LCA0MzQzMywgNDM2NDksIDExOTg3LCAwLCAwLCAKLSAgICAxMTAxMCwgMTI3MjMsIDc0MDU5LCA3NDA2MiwgNjIxNywgNTg5NiwgMCwgNzY4MiwgNzQwNDksIDE0NjIsIDEwMjM1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA0MjU5NSwgMCwgNzQ0MDIsIDExODg2MCwgMCwgMTIwNDE5LCA5MjQ5NywgNzQwNTIsIDAsIAotICAgIDkyMzc4LCAxMjA1NDksIDExOTA4MiwgNjQyOTUsIDEyMDQxOCwgMCwgNjQ3NjUsIDczOTIzLCAxMjA0MTcsIDEyMDY2MiwgCi0gICAgNjk5MjAsIDE5NDcwMiwgNjIxNiwgMCwgMTA3NTUsIDk0NTUsIDAsIDgxMjQsIDEyNzA0MiwgOTQ3MCwgNjk0NCwgMTI3NTQwLCAKLSAgICAwLCA2OTY4MCwgMjgyOCwgMCwgNTMxLCA0MjYzOCwgMCwgMCwgMCwgNDM0MjgsIDgyMDQsIDM2MTQsIDI4MjcsIDk2OTYsIDAsIAotICAgIDAsIDg3MjgsIDQzNTQsIDEwOTA0LCA3ODU2MiwgMTk5MzYsIDc4MzMsIDEyMDY5MSwgMCwgNDI1OTksIDQyNTk3LCA0MjcwOSwgCi0gICAgMTIwNDA5LCAxMjcwNDQsIDAsIDg1MzcsIDAsIDAsIDkzNTQsIDk4MzE2NCwgMTI4ODMzLCA0MTE5OSwgMTAxMjEsIDIwMjgsIAotICAgIDAsIDk4MzE5NCwgNjk3MTUsIDAsIDMwNjIsIDAsIDc0NDQ3LCAxMjYwOCwgMCwgNjY0NDAsIDc1NDUsIDk3MDAsIDEyNTgwLCAKLSAgICA5MjIwNSwgMTIwNzc3LCAxMjA1MDIsIDQxMTU1LCAwLCA3NDA3MSwgMCwgOTgzNDU3LCAxMjcxMywgMCwgMCwgMCwgNzg3NzIsIAotICAgIDAsIDE3MzQsIDAsIDAsIDEyNzA0MCwgNjQ1OTQsIDI0NTYsIDIzMSwgMCwgNzQxNjcsIDU0MiwgMCwgMTE4Nzg2LCAwLCAKLSAgICA5ODM5NzksIDEyMzAsIDAsIDAsIDM1OTcsIDQ0NDYsIDEwNTg0LCA3NDIzNSwgOTIyMTUsIDQwMzcsIDEyNzkzOCwgODM1MiwgCi0gICAgMCwgNTY4NywgMCwgNjQ1MTUsIDAsIDE5NDgwMSwgNTUyNjUsIDY3ODQ2LCA3ODQzNCwgOTcwNCwgMCwgMCwgNzAwODAsIAotICAgIDcxMzM4LCAwLCA4NjYwLCAxMjY0OTUsIDAsIDAsIDc4NzczLCA3NDQ4MiwgNDQ4MywgMTcwOSwgNjk3MjEsIDk5MDksIAotICAgIDYwODAsIDAsIDEyMDM1OCwgMTc0NiwgMTMxNSwgODY2NywgMCwgMCwgMTMxNDAsIDY1ODk5LCAxMDYwNCwgMCwgNDQ4MCwgCi0gICAgMTEyNjYsIDEyODE1MiwgMTIyNiwgNjkzMCwgNjc5NzksIDk4MzY5MCwgNjM2MCwgMTA4OTcsIDQxMjMwLCA2MDUsIDAsIAotICAgIDc0Nzg1LCA2OTg3NSwgMCwgMCwgNDE1MDAsIDAsIDMxMSwgMTE0NTMsIDYyMjEsIDEwNjA4LCA2NDk0MywgNzQyODAsIAotICAgIDEwODc3LCAxMTg4NjgsIDY0ODg1LCA3NDI3MiwgMCwgMCwgMTI4NTU5LCAxMjA3MzYsIDc0MzEyLCAzNDUsIDAsIDc0NDU2LCAKLSAgICA2NDYwNiwgOTkxNywgMCwgOTIyMzEsIDUwMzcsIDAsIDE3NzYsIDg0MjIsIDAsIDExODgxNCwgNDE1MDgsIDQxMjAxLCAzMjMsIAotICAgIDQzMzI4LCAwLCA0MjY5OCwgMTI5NSwgMTk0ODUzLCA0NjI1LCAwLCA0NjMwLCAxMzExNywgMCwgMTI4NzcyLCA2NTEyMywgCi0gICAgMTEyOTMsIDI2NjgsIDExMjg4LCAwLCA0MjY0MCwgNjU2NjYsIDI1MTksIDkyMzY5LCA2NTQyMCwgOTI0NzksIDAsIDQyNTIsIAotICAgIDUwNDksIDQyNjU5LCAxMTkwMTEsIDcwNiwgNzc1NCwgMTA4NTQsIDg3MzgsIDAsIDY1NDE5LCAwLCAwLCA2NDksIDY1NDIxLCAKLSAgICAwLCA2NjcwMiwgMCwgMTI2NzAsIDEwMTMsIDAsIDY0OTE5LCA3MDUsIDAsIDY1NDIyLCAxMjc4MDMsIDExODMsIDEyNjUxOSwgCi0gICAgNzAxNywgNDI4NTIsIDAsIDgxNTcsIDk3MzYsIDY0NTAzLCA2NTQxOCwgMCwgOTgzODc4LCA3NDAzNSwgMCwgMTE5MTMsIAotICAgIDczODc0LCA2Njk2LCAwLCA4OTIwLCAxMTkyOTgsIDAsIDc5NjIsIDEyMjExLCA5ODM3LCAyMDUxLCA2NjIyNywgMCwgNDE4NCwgCi0gICAgMCwgMCwgMTAxNzcsIDczNzc3LCAxODU3LCAxOTQ2NTcsIDQ2MjYsIDg0NjQsIDg0NzIsIDAsIDQ2MjksIDg0OTksIDc4MzIxLCAKLSAgICA3ODMyMiwgNDYyNCwgNzgxOCwgMTE5MTczLCAwLCAwLCA3ODA1LCAwLCA5NDAwNywgNjkzNSwgOTIyOTIsIDc4MzI1LCAKLSAgICA3ODMyNiwgNzgzMjMsIDQzMzI3LCA0Mzk4OSwgMTE5MDQ2LCA4NDkyLCA4MjUwLCA4NDU5LCAwLCA4NDk3LCA4NDk2LCAwLCAKLSAgICAwLCA3ODMzNiwgNzgzMzksIDk1NDMsIDc4MzM1LCA3ODMzMiwgNzc4MzIsIDY1ODQ5LCA3NzgzMSwgOTgzOTYxLCAwLCAKLSAgICAxMjQ1MSwgMCwgODY4NCwgMCwgNjEwMiwgMCwgNTI5OCwgMCwgNTI5NCwgMCwgMCwgOTgzNDU5LCAxOTUwNjIsIDk5NDksIAotICAgIDExOTgyNiwgNDM2MTcsIDExOTIxNSwgMCwgMTIwNzMsIDAsIDAsIDc3ODYzLCAxMzEwOCwgMTIwNjE3LCAxMTQzOSwgCi0gICAgNDE0NjgsIDk4Mzc1NywgMCwgNTI5MiwgNTUyNzIsIDk4Mzg4MywgMTkzOSwgNTMwMiwgMzk3MCwgOTE3ODc5LCAxMjQ1NSwgCi0gICAgMTc5MywgMCwgMCwgMCwgNjY0MywgOTI0NzcsIDY1MjYzLCAwLCA3ODMzMCwgNDEyOTMsIDc4MzI4LCA2NTkyMywgMCwgCi0gICAgMTMyMTksIDk1NjksIDAsIDc0MzgzLCAwLCA3NDE5NywgMCwgNTUwMCwgODgxMywgMCwgMCwgNzQ1NjYsIDUzMjIsIDAsIAotICAgIDc4MzQwLCA0MzYzMSwgNTMyNCwgNjY0NDMsIDM3ODQsIDQxNjE0LCA2NTI2OSwgNjIzMCwgNzgzNDksIDc4MzQ1LCA0MzMyNCwgCi0gICAgMzM2MCwgNzgzNDQsIDExNTIzLCAwLCA5MjQ4OCwgOTkyNiwgNzE5NywgMCwgNjg0MjksIDQyODk0LCA0MTgyMSwgMTI0OSwgCi0gICAgNzgzNjAsIDc4MzYxLCA3ODM1NiwgNzgzNTgsIDc4MzUzLCA2NDg5OSwgNjQ3NjMsIDQxMTQ5LCA0MTgwNywgNDMxNjIsIAotICAgIDQxODE1LCA0MTE1MCwgMCwgMTA1NzEsIDEwMDk2LCAwLCAwLCA3ODA3NCwgNjk0NywgNDExNTIsIDg4NywgOTI0OSwgNjU2NSwgCi0gICAgNzg1MTAsIDQxOTkwLCA3ODUwOSwgNDE4MTEsIDc0NDY2LCA5Mzk2NiwgNjY3MCwgNzc4ODIsIDAsIDAsIDQzMDkyLCAKLSAgICA0MzMyNSwgMCwgMTAxNjgsIDAsIDk3ODEsIDEyODY1NSwgOTE5MCwgMCwgOTY2NiwgODI2OSwgNjU5NDQsIDc0MDA1LCAKLSAgICAxMzAxOSwgMTE2NzAsIDY5ODYwLCAzMTUsIDEyODEzLCA5ODM0NTgsIDc4NDMyLCA3ODI1NiwgNzgzNTEsIDc4MzUyLCAwLCAKLSAgICA5ODM2NTcsIDAsIDAsIDEzNzgsIDk1MDksIDAsIDAsIDc0NDc1LCAzMDY2LCA5MjIyMCwgNjc4NDcsIDAsIDkyMzU1LCAwLCAKLSAgICA3ODM2NSwgODc4NywgMTIwMzc5LCAxOTQ2MTYsIDQxNjE4LCAxOTQ2MTUsIDc4MjYxLCAxOTQ2MTQsIDAsIDY0NjUyLCAwLCAKLSAgICAxOTQ2MTIsIDAsIDc4MzY2LCA0MjA4OCwgMCwgMTk1MDYxLCA3MTc2LCA0Mzc1NiwgMTAxMzcsIDYxMjEsIDEwOTk1LCAKLSAgICA3ODI1OSwgNzQ1MzQsIDgxMTksIDY0ODc0LCA5MTc4MTYsIDEyNzE5OSwgMTk0OTM5LCAwLCA3NDUyNSwgMCwgMCwgMTI5MzAsIAotICAgIDEzOTQsIDc0NTE0LCAwLCA3NDUxNSwgMCwgMTE4ODA0LCAyOTk4LCA5NTI3LCAxMjA2NTksIDY1MTkwLCAxMjk3NywgCi0gICAgNDIwOTAsIDExOTE2NSwgMCwgMTE5MTAwLCA0MTIzNiwgOTIyMzUsIDQyMDA1LCA0MjAwMywgNDEyMzcsIDU4NDgsIDAsIDAsIAotICAgIDM2NzAsIDEyODY1NywgMTk0NjAwLCAwLCAwLCA3ODkwLCAwLCAxMTI5OCwgNDMzMTUsIDAsIDYyMjksIDE1OTMsIDAsIDAsIAotICAgIDYxOSwgNDYzNSwgNjUwODAsIDAsIDEyODAwMiwgNDEyMCwgNjUzMzcsIDY1MzM2LCAwLCAxMTgwOCwgMTE5MjE0LCA3NDExNSwgCi0gICAgOTM2NiwgNDI3OTAsIDQyMDA2LCAxMTkxMTUsIDY1MzI3LCA2NTMyNiwgNjUzMjUsIDEwNzU3LCAxNTA3LCA0MjIxNiwgCi0gICAgNjUzMjEsIDY1MzIwLCA2NTMzNSwgNjUzMzQsIDY1MzMzLCA2NTMzMiwgNjUzMzEsIDQyMDU5LCA2NTMyOSwgNDI2ODksIAotICAgIDkyNDI3LCA5MTI4LCA5NDA0NSwgNDIwNzMsIDY3ODUsIDY0NTkwLCA5ODM4MzAsIDQzNzEsIDcxOTYsIDY1MzE4LCAyMDM1LCAKLSAgICA2NTMxNiwgNDEwNiwgNjUzMTQsIDY1MzEzLCA0MjA3NCwgMTI3ODQ3LCA0MTIyOCwgMCwgNjU2MDksIDQxMjQxLCA3OTAzLCAKLSAgICA0MTIzOSwgNDM1MzMsIDc4NDU5LCA3MTg5LCAwLCAwLCAwLCAxMjM1NywgNDI4MDIsIDc4NDUwLCA4NDg3LCA5MTMxLCAwLCAKLSAgICA0NjE1LCAxMjY5NSwgMTI3NzUyLCAwLCAxMjE3NSwgMCwgNjQ1MzUsIDAsIDc4MDksIDAsIDAsIDU2MiwgMTIxNjksIDY1OTAsIAotICAgIDY5NzYyLCA2NjQ1NSwgNjQ3MzgsIDMyMTksIDY4NjU0LCA5ODM3ODcsIDAsIDEwMzcsIDAsIDIwMjUsIDEyODI2MywgCi0gICAgMTMwOTgsIDc4NDQyLCAxMDYzNywgNDU2OCwgNTQ5LCAxNTcwLCAwLCAyODM1LCAwLCAxMDYyNCwgNDM2MjMsIDExMDcyLCAKLSAgICAxMjcxOTEsIDAsIDAsIDEyNjA2LCA3ODQzMywgMjgyNSwgMCwgMTA4MjUsIDgwNzksIDI4MjEsIDQxMDQ2LCA5MjMyNywgCi0gICAgNzM2NSwgOTgzNzUzLCAxMjA1OTMsIDEzMDcxLCAwLCA0NTIsIDQxMDQ5LCA0Mjg0MCwgNjM0NiwgMjgzMSwgNTQ2MSwgCi0gICAgNzQ1OTYsIDExNDY1LCA1MjEyLCAwLCA2NDcwMywgMTE5MTkxLCA0MjMwOCwgNzE4MSwgMCwgNDEzMzIsIDAsIDEyMzMzLCAwLCAKLSAgICAxNjY4LCAwLCAwLCAwLCAxMTg3LCA5ODMzODUsIDQyNjI4LCA3ODU3NSwgMCwgMTI4Nzc3LCAwLCAzMjQwLCAxMjg1MTgsIAotICAgIDEyMTk0LCAwLCAxMTU5MSwgNDEwNjUsIDUzMjMsIDgxNjYsIDAsIDAsIDAsIDc0NTM1LCAxNjIzLCA2NTI5NywgMTI4ODU2LCAKLSAgICA1NzEsIDAsIDQ5MTgsIDAsIDUyODgsIDEyNzI5NSwgODkxNiwgNjUwNDgsIDE5MDksIDg4NjQsIDAsIDAsIDEwNzM2LCAKLSAgICA5MjUwOCwgMTE1NzEsIDc2MTUsIDEyNzMwMCwgOTIyOTYsIDQyMzcsIDkyNTc2LCAxMDM1LCA2NTgxNSwgMCwgNzg4MSwgCi0gICAgNzAxLCA2NTkzNiwgMzQ4OSwgMCwgMCwgMTIwNzUxLCAxMTQwMywgMCwgMCwgMTI3MTQ2LCAzNzk2LCA2ODAwLCAwLCAzOTk0LCAKLSAgICAxMTQyMSwgMCwgMTk1MDc2LCAwLCA5ODM5MjIsIDAsIDAsIDY0ODU3LCAxMjgxMDUsIDI4NTUsIDEyNzgyOCwgNjYzMDgsIAotICAgIDQxNjIxLCA2ODIxNCwgMTI3MjgzLCAxMjc4MTcsIDEwNjU0LCAwLCAxMTkyMjYsIDEyMTY0LCAzMjQ2LCA3OTA2LCA0Mzk3MiwgCi0gICAgNjU4NDcsIDcxODIsIDAsIDEzMDI0LCAxOTQ4MjIsIDc0MjcwLCAxMjgyODksIDAsIDAsIDAsIDE0OTYsIDc0NywgMCwgOTQyLCAKLSAgICAyMzc4LCA0MzEzNiwgMTI3OTA1LCA4NDY2LCA5ODM1NzUsIDkzMjAsIDgwMDEsIDEyMzIsIDgxMzksIDExNjE3LCAwLCAwLCAKLSAgICAxMTQwOSwgNjgzNzMsIDYzODIsIDAsIDY0NjM0LCAxMjgyNzksIDAsIDExNjEyLCAwLCA2NzYwMCwgMjM3NCwgOTQwNjYsIAotICAgIDg0NzUsIDExNjA5LCA2NjMxMywgMCwgMCwgNTI4NiwgMTE5Mjk3LCAwLCAwLCA2NDkyNSwgMTIwMjgzLCAxOTQ1ODQsIAotICAgIDExODk4MiwgMTk0NTgzLCA3NzA1LCAxMTk0MiwgMTEzMDUsIDE5NDU4MSwgMzMwOSwgMCwgMCwgMCwgMCwgNjgwMiwgMCwgCi0gICAgNDE2NTMsIDEyODAsIDEyNDEsIDcxNjgsIDEyMDk2LCAwLCA2NjYxNSwgNDI1NjUsIDQxNjUxLCAwLCAwLCAwLCA0MTY1MCwgCi0gICAgNjY1MDcsIDY2NDcwLCAwLCAxMjkxNCwgNDE0OTEsIDY2MDEwLCAxMTk1NTIsIDYwNzgsIDk5NTQsIDAsIDE0NzUsIAotICAgIDExOTI0NywgOTkzOCwgNjA4NCwgOTE3NTQ2LCA0MTA2NCwgNDEwNjIsIDAsIDAsIDMyNTYsIDEwMTg5LCA0MjA3NiwgCi0gICAgNDMyNTIsIDc4ODIzLCA5MTc5MDYsIDg3MjcsIDAsIDY1ODc1LCAwLCAwLCAxMjc3NjIsIDEwNTYyLCA3NDIxNSwgNDMwNjUsIAotICAgIDAsIDAsIDMyNDgsIDc0Mjk3LCAzMjYxLCA5MDE1LCA3MTM1MSwgMCwgMzYzNSwgNjQzMzcsIDk4MzI4MSwgMCwgMCwgNzE5NSwgCi0gICAgMCwgMjAwNywgNjQ0MzEsIDAsIDAsIDAsIDAsIDYzNSwgMCwgMCwgNjU2MTMsIDc3OTA5LCA5MjQyMCwgNzM5OTcsIDAsIDAsIAotICAgIDExOTIxOCwgNzk4NCwgODYwMCwgNzQ0MzQsIDEyNzc3MCwgNDE3NiwgNzAwNTAsIDIwMzQsIDkyNTUxLCAxMjA4MDUsIAotICAgIDY1ODkxLCAxMjcwMzgsIDAsIDMxOCwgMjAzOCwgMTI4ODYwLCA3ODU5NiwgMCwgMzY0OSwgMTMxNDksIDQyMTQ1LCA0Mjc5OCwgCi0gICAgMzYzNCwgMTIwMjkxLCAxMTg5MjcsIDY3Njc3LCAxMjAxMjQsIDc4NjYsIDAsIDExNDAyLCA0MjE0NiwgOTQwMzIsIDc0MjM4LCAKLSAgICA0MjY2NCwgMjg0OSwgMTI3MDM0LCAwLCA3OTM4LCAxMjk2MCwgMTc2MSwgMTE4MTIsIDY1Mzc5LCA2ODM4NiwgMTI4MTg1LCAKLSAgICAxMTU5LCAwLCA2OTcyOSwgMCwgMCwgNzE3OCwgMTk0NjMyLCAwLCA0MTY4MCwgMCwgMTI4MjAzLCAxMTUzNCwgMTUxNCwgCi0gICAgMTE2NjgsIDY3ODkxLCA5MzEzLCA3MDE1LCAwLCA2Nzg3NywgMTk0NTY3LCAxMjk4OSwgNjY0NzQsIDkzNjgsIDEyODQ4LCAKLSAgICAxNjI0LCA0MzI3MCwgMCwgNzQyNzgsIDEwODE4LCAxMjY2NDQsIDk5NTMsIDAsIDc4NDIxLCAxMTk0LCAzMjQyLCA5NzYxLCAKLSAgICA5NTU1LCA4NTk4LCAxMjAyOTksIDYxNjksIDEyODcxLCAxNTUxLCAyNzk4LCA2NTE3NiwgNDk1OCwgNDI3NTIsIDExOTAyNSwgCi0gICAgMCwgNjc4NzUsIDEyMDMwMSwgMzQ5NSwgNjY2NDgsIDE5NDc2OCwgMCwgNjgzNjQsIDk4MzIyNCwgNDg5MSwgMCwgMTA2NDEsIAotICAgIDAsIDczNzQ2LCAwLCA2ODM1MiwgMCwgNzM3ODcsIDE5NDgyOSwgMTk0NjMzLCA3MTk5LCA2NDk1NSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDI2ODUsIDQyNjc5LCAxOTMsIDAsIDAsIDAsIDQyNjY3LCAwLCA1MjcxLCA5MjMxOCwgOTI1MTcsIDExODg4MiwgMTM2MiwgCi0gICAgMTMyOTcsIDAsIDEyODA5NCwgMCwgOTgzMzMxLCA3Mzc4OSwgMCwgNjY1OCwgNDQyNiwgMCwgOTI2MjgsIDk4Mzg0MiwgCi0gICAgOTIzMTksIDcyNzYsIDQyMTYzLCA1MjIwLCAwLCAwLCA5ODMzMzAsIDI0MTYsIDMzMTAsIDQyNzAzLCAwLCAzNzksIDAsIAotICAgIDQzNzU1LCAwLCAwLCAzMjIzLCA2NTQ5MiwgMTI4NCwgMTk0NzcxLCA0NTQ5LCAwLCAwLCA5ODMxNTQsIDEyNzc2MywgCi0gICAgMTA4MDcsIDk1NTgsIDE5NDYxMywgMCwgODUxNSwgODY4OCwgMTI4NjYsIDY1MzA4LCAzMjk0LCA5ODMzMzIsIDg1MjksIAotICAgIDEyODEwMSwgNDMzODUsIDc1NjQsIDAsIDQzMzI5LCAwLCA5MjQ1OCwgNzM3NTcsIDY2NDU2LCA0MjM1OSwgMCwgMjAzMSwgMCwgCi0gICAgNzIwMiwgMCwgMTI2NzYsIDQyNzI5LCA5MjE5OCwgMzIxNSwgMCwgNzcxMCwgMTYxMCwgNzM4MDEsIDAsIDAsIDY1NjgyLCAwLCAKLSAgICAxMjA1MzcsIDY1OTI0LCA5OTc0LCAyMjgsIDY2MzU0LCAxNTAxLCAwLCA2NDM5NSwgNTE3OSwgNzIwMCwgNjIyNSwgMCwgCi0gICAgNjU3OTQsIDE3MjUsIDY1NTMzLCA4MTk2LCA3NDc2LCA3NDM5OSwgMCwgMCwgNzE1MiwgODUwMiwgNTc2MiwgMTk2NywgCi0gICAgNzQ4MywgMCwgMCwgODEwNCwgMCwgNzQ3NCwgNzc5NzksIDAsIDEyNjUwNywgMTA0MTQsIDEzMDAxLCA4MTQxLCAwLCAKLSAgICA0MjUzNywgMTU1NywgNDM1OTQsIDEyODY0MiwgNjMzMCwgNjgwNSwgODYzMSwgMjU0NSwgNzAwNTIsIDEyNzE2NiwgMCwgCi0gICAgNzQxOTAsIDAsIDAsIDk4Mzc4NiwgNDI3NjIsIDAsIDQyOTE0LCAxNjUwLCAyNjIsIDE2MzcsIDAsIDc5MDEsIDMyMzgsIAotICAgIDEyODE3MywgNDE4NjEsIDAsIDEyODU4NSwgNjUxNTgsIDEwODYwLCA5NDA1OSwgNDM2NTgsIDc1MjcsIDAsIDQzMzE5LCAKLSAgICA2NDE5LCAwLCA0NSwgMCwgNjQ1ODgsIDkzOTg5LCAwLCAxMTk4MTAsIDcxOTQsIDUyOTEsIDAsIDQzNjY2LCAxMzEyOSwgMCwgCi0gICAgOTA4NCwgMCwgODczNywgMCwgMTI4ODEsIDAsIDEyOTA2LCA5NjM5LCA3OTEyLCAyNjIwLCAwLCAwLCAwLCA5ODM4NzUsIAotICAgIDE3OSwgNjU4OTYsIDAsIDY0NzU2LCAyODUzLCA3ODQ0MywgMTE4ODEzLCA5ODM4OTAsIDExODk5NiwgMTE5MDA5LCAyODUwLCAKLSAgICA4MDg0LCA5ODMwODUsIDczODUwLCAyODAxLCA5MjI4NCwgNDIwNjksIDExOTgzOSwgNzQ3NTQsIDExOTg0MSwgNDIwNzIsIAotICAgIDExOTg0MywgMTE5ODQyLCAxMDM5OCwgOTgzMDU2LCAwLCA4Mzc3LCAxMjcxMTYsIDgyNDUsIDY4NDAxLCAzMTU4LCA5MjM5NiwgCi0gICAgMzk4MywgNDM2NTYsIDkyMywgMTE5ODU3LCAxMTk4NTYsIDI5MiwgMTMwMDIsIDExOTg0NSwgMTE5ODQ0LCAzMjIxLCAxNzYzLCAKLSAgICA5MjQ2MywgNDYxMiwgMTE5ODUxLCAxMTk4NTAsIDcyNTMsIDEyNzExMCwgNjgzOTEsIDAsIDEwNzgyLCAzNjM3LCAxMjk5NiwgCi0gICAgNDM1NDIsIDAsIDY0NTc4LCA5ODM2NzUsIDMyMjgsIDY5NjM2LCA4NzgzLCAwLCAxMTk2MTQsIDI3MzEsIDAsIDAsIDc4NTg1LCAKLSAgICA0MTAyLCA3Njk2LCA3Mzg3OCwgMCwgMCwgNzg1ODYsIDQzMzE2LCA0MTc3LCAxMTI4MywgOTA4OSwgMCwgNzM5OTYsIAotICAgIDk4MzE3MywgNjQ1MDAsIDQzNjc0LCAwLCA2NDk0NywgMTg1NiwgMCwgMCwgNjM3OSwgMCwgMCwgMCwgMzIwOCwgMTI5NzUsIAotICAgIDc0Nzc1LCAxMjczODAsIDk4MzkzMSwgOTIzODksIDc0MDcyLCA1NTI2OSwgMCwgMCwgOTgzNjgzLCAyMDMzLCA3ODU3NywgCi0gICAgNzg1NzYsIDE5NTAyNiwgNTUyNTQsIDc3NDAsIDAsIDAsIDAsIDczOTY0LCAwLCA5Mzk4OCwgNjc2MTIsIDY1Njc0LCAKLSAgICAxMjgyNDQsIDk0MTEwLCA0MTY4OSwgMCwgNzQwMDYsIDY0OTA5LCA2NjQ2LCAxMTc5MCwgNzQwMTksIDAsIDEyODA2NiwgCi0gICAgMTI4MDMxLCA4NTYxLCA0NTczLCAwLCA1MzI2LCAwLCAxMjA2MDUsIDcyMzAsIDgyNTcsIDAsIDg3NzgsIDQxNjg4LCAwLCAKLSAgICA2NTc3NiwgMjA3MSwgODMxNCwgNjQ1OSwgMCwgNzYyOCwgNjUwOTIsIDczOTAzLCA2NjcyMSwgMTEzNDIsIDEyODU2MSwgMCwgCi0gICAgMCwgMTI4MjI2LCAxMjcwMDEsIDAsIDExODEwLCAxMzE2NCwgMTA3MjMsIDk2NywgOTgzOTUxLCAxMjY0NjksIDExOTQ2LCAwLCAKLSAgICAzMjU3LCAwLCAxMjMwNywgMTg0NSwgOTgzMTU3LCA0MzUyNiwgMCwgMCwgMTg4NiwgNDIzNDIsIDEwMDg5LCA4NzAsIDc2NDgsIAotICAgIDM0OTksIDg2MDksIDc2NTIsIDg3NiwgODcxLCA4NzcsIDAsIDg3OCwgNDIwMTUsIDg3OSwgNDM2OTIsIDQ1NjMsIDAsIDAsIAotICAgIDc1OTEsIDY1ODg3LCA4NjcsIDk1MjAsIDg3MiwgMTI2NjA3LCA4NjgsIDg3MywgNzY0MiwgMCwgODY5LCA4NzQsIDc2NDQsIAotICAgIDEyMDY3NCwgODc1LCA3OTAsIDEyODMwMywgMCwgMCwgMCwgNjYxODIsIDk4MzI1OCwgNTQyOSwgMTk1MDU1LCA2NjE4MCwgCi0gICAgMTI2NDgwLCA2NjE4MSwgNjg0NTIsIDk4MzI4OSwgOTgzMjQ4LCA0MjA2NywgMCwgNTQzMywgMTA2NTcsIDc5MTEsIAotICAgIDE5NDYyMiwgMTU0NywgNjYxNzYsIDQyMDEyLCAxMjA1NzYsIDU0MjUsIDQ5NzcsIDk5OTksIDUzMTcsIDU0MjMsIDQ2MTEsIAotICAgIDAsIDY3NjM3LCAwLCA5Njc5LCA3NDEyMiwgMCwgMCwgMCwgNjYxOTQsIDQ0MTgsIDY2MTg0LCA0NjI4LCA0MjQ1LCAKLSAgICAxMTk2NDgsIDAsIDAsIDE4NTEsIDAsIDEyNzE4OSwgMTE5MDgsIDAsIDkzNjAsIDExODg5NywgOTgzMjAyLCA0Mjc3NiwgCi0gICAgNjYxODcsIDEyODM3LCA4ODI5LCA3NzExLCA5MjcxNCwgMCwgOTIzMjEsIDQzMzE4LCAwLCA4ODA5LCA2OTg4MSwgMCwgCi0gICAgOTgzMTQyLCAxMjA2MDQsIDk4MzA1MiwgOTgzODgyLCAwLCA5ODMyNzAsIDAsIDAsIDc0MjcsIDk5NTgsIDQ1ODgsIDQzNjgwLCAKLSAgICAwLCA3NDQ4NCwgMTk0OTY4LCAyNDMzLCAwLCAxMTk2MjIsIDMzNTIsIDc0MzYzLCA5ODM4ODUsIDAsIDc5MywgNzQ0MDQsIDAsIAotICAgIDMwNSwgNTY3LCA2NzY2MiwgODQyLCAxMjg1MTksIDgyMDgsIDAsIDQxNjk1LCAxNjQ3LCAxMTg4NzcsIDAsIDc4MzcsIAotICAgIDkxNzYyNSwgODE4LCA1MzM3LCAxOTQ2MjgsIDkxNzYyMSwgNDEzNzYsIDExOTk3OCwgMTI2NTc2LCAxMjA1OTQsIDc0MDg2LCAKLSAgICA5MTc2MTUsIDkxNzYxNCwgOTE3NjEzLCAxMDk3MywgNjYzNTksIDEzNzIsIDEyNzE3MiwgOTE3NjA4LCA0OTY5LCAxMjU0LCAKLSAgICA5MTc2MDUsIDkxNzYwNCwgOTM5NjcsIDkxNzYwMiwgNjUyMjgsIDc4MjIxLCAxMjY2MTIsIDAsIDI4NDAsIDAsIDExOTk4MiwgCi0gICAgOTgzOTM5LCAwLCAzMjQ1LCA5MDY4LCA2ODE5NCwgNjQ3MjUsIDAsIDAsIDEyOTkxLCAwLCAyNjUxLCA2ODAxNiwgOTgzMjY1LCAKLSAgICA5MTc2MTEsIDEyNzAyNiwgMTI4ODgzLCAwLCAwLCA0MzY0OCwgMTIwODEyLCAwLCA0MzMyMiwgOTI2NjIsIDAsIDAsIAotICAgIDY0MzcyLCA5MjY5OCwgMzIyNiwgNjU1LCA3NTIsIDc0NTcsIDc0NTYsIDc0NTIsIDMyODUsIDEyODc3OSwgMTI3ODIxLCAKLSAgICAxMTk5ODgsIDY1NjEwLCAyMzkxLCAwLCA5MjI0OCwgNjcxLCAyNTAsIDc0MzQsIDYxOCwgNjY4LCA2MTAsIDQyODAwLCAKLSAgICA3NDMxLCAxMTUyLCA0MjgwMSwgNjQwLCAxMjA2NjYsIDc0NDgsIDc0MzksIDYyOCwgMzkwNSwgNzM4MTAsIDAsIDEyODI2NiwgCi0gICAgNjQ3NDksIDY3ODUwLCAyMTA3LCAwLCAwLCA0NjA1LCAxMjgxNzQsIDk4MzE5MiwgNDMzNzIsIDY1OTQ1LCAxMjg4MzgsIDAsIAotICAgIDExOTU5MCwgMCwgMCwgMCwgOTg3LCA2OTI3LCAxMTU3MiwgNDIyNjEsIDExNDY0LCAzMzY1LCA5OTcxLCAwLCAwLCAKLSAgICAxMjgyOTcsIDAsIDAsIDAsIDAsIDExMzM0LCA0MzMyNiwgMTI2MDksIDExNTE5LCAxMTUwMywgNTUzMCwgNTIxMCwgMCwgCi0gICAgNDYyNywgOTgzODkyLCA1MjA4LCAwLCAxMjg4NDIsIDEwMzMyLCA1MjE4LCA3OTc2LCA5MTU2LCAwLCAzMjQ0LCA1NTI5LCAKLSAgICA2OTY0NywgNzM4OTQsIDEyODg1MiwgNTQzMiwgNjQ5NjUsIDU1MjcsIDc0MDMzLCAxMDUxNiwgNzc5MCwgNTUyOCwgMCwgCi0gICAgNDIxNDAsIDEyMDI4MSwgMCwgMCwgNDM1NDUsIDk4ODcsIDAsIDQwMDAsIDc0MjksIDc0MjgsIDY2NSwgNzQyNCwgMzIwNiwgCi0gICAgMTIwMjc4LCA3ODg0LCAwLCAxMjg1NjYsIDkxNzk4OSwgMTI4NjY2LCAyMTEsIDI1MDksIDEyODg1OCwgMTIwNTczLCAKLSAgICA2ODY3MiwgMzIyMCwgNDIyMzUsIDAsIDEwNjkwLCA4OTUxLCA1MjE0LCA0MjQ3NCwgODExOCwgMCwgNzA0OCwgNDU5MCwgCi0gICAgMTI3MjU4LCA1ODUyLCAwLCAwLCAxMjcyNTksIDE3MDgsIDAsIDk4MzE2NSwgMjYyMywgMTE5NDMsIDAsIDY5MjI2LCAwLCAKLSAgICA0Njk4LCA2NjUwOSwgMTA2NiwgMTE5OTIxLCA0NzAxLCA5ODM4NzYsIDEyMDI4NSwgNzQyMjUsIDk0MTExLCA4MjY3LCAwLCAKLSAgICAxMjcyNjUsIDAsIDc1MTYsIDAsIDI2MjUsIDk4Mzk3NywgODAzNCwgNzQzMDksIDAsIDM2MzEsIDEwOTU1LCA3ODUwLCAKLSAgICAxMjAyOTMsIDg0MTYsIDAsIDAsIDAsIDQzMzg0LCAxMjY2MCwgMCwgMCwgMCwgNzQ4NTAsIDQxMDY5LCAwLCAxMjgxNTYsIAotICAgIDEyMDk5LCA0MzEwLCAxMDAzMiwgNjI1MiwgNzEzLCA3OTkwLCAwLCAzOTkwLCAwLCA5ODMyNjIsIDY2MzY4LCA1MDE3LCAKLSAgICA2NDk1NiwgNzA3MSwgMCwgMTE5MTQ0LCAxMDMwLCAxMTg4MDAsIDk4MzEyMCwgOTUxMywgNDEwNTksIDkzNTcsIDAsIDE3NzMsIAotICAgIDAsIDEyMDM1MCwgMCwgNjMzOSwgNzc0NSwgOTg0NCwgMCwgNjQ2NTAsIDk0LCAxODgwLCA3NDc2NiwgOTgzODM4LCA4OTA4LCAKLSAgICAwLCAxMjg3MDcsIDY1OTEzLCA3ODQ3MCwgMTA3NTIsIDEzMDAzLCAwLCAxMjY1NzIsIDQxMzA3LCA4NzMyLCAxMjAzMzgsIDAsIAotICAgIDE3NTcsIDY5NjQsIDQ2OTYsIDAsIDEyMDMzNSwgNjQ3ODUsIDczOTQsIDM2NDEsIDU0MTksIDEyODA1NSwgMCwgMTI3ODgzLCAKLSAgICAwLCAxMjAzNDQsIDQzOTg4LCAwLCA4NjEwLCA0MzA2MiwgNzU5MiwgODU2LCA3NDI5OSwgOTM2LCAxMzI4OSwgNjk4OTQsIAotICAgIDQzMTcxLCAxNDU5LCAwLCA2NTI0MywgNzg2MzgsIDE5OTUzLCAwLCAxNTA0LCA3MDA2NCwgMCwgMTI5MTMsIDc0MjA2LCAKLSAgICA3NTI5LCAwLCAxMjg2OTksIDk4Mzk1NywgMTIwNzgyLCA0MTEzLCAwLCAyMzcyLCAzMzYsIDAsIDc1MDksIDEyMTUyLCAwLCAKLSAgICA2ODIsIDY2NDU4LCA0MTUwNSwgMCwgNjQ3NDMsIDEwNTkzLCAxNzAzLCAwLCA5ODM5NTUsIDgwMzMsIDY5OTUzLCAwLCAKLSAgICA5ODEwLCAxMjcyNjksIDAsIDEyOTcwLCAwLCA0MjM1MSwgMTAxMDksIDkxNzYyMywgMCwgMTk0NjkzLCAwLCA5MjY5MCwgMCwgCi0gICAgMCwgNzQyOTEsIDE5NjUsIDcwNjksIDQzMzEyLCAwLCA3Mzg4NywgMCwgMjA4NywgNjQzNzAsIDYzMTQsIDQxNzE0LCA4NTAxLCAKLSAgICAwLCAwLCA3NDIzOSwgNDEzMTcsIDkyNjE0LCAyMDkxLCA3NDU0NSwgMjA5MCwgMCwgOTM1MywgNzExNywgMjA3NywgNzc4ODYsIAotICAgIDAsIDEwNDk4LCAyMDgzLCA3Nzg4OCwgMCwgMCwgMTE5MjM2LCA2MzQsIDAsIDAsIDAsIDY5Nzc5LCA0MTY1LCA4NzQ2LCAwLCAKLSAgICA5NjU0LCAxMjg1NiwgNjkyNCwgMCwgNzA2NiwgOTgzNzE5LCAwLCAxMjgxMzUsIDQxMDM3LCA0MjY5MiwgNzc4NiwgMTI5NTksIAotICAgIDQxMDM5LCAxMjc0ODMsIDAsIDY4MCwgMjMwMiwgMTI4MjAwLCAxMTgxLCA3MDU2LCAzMTc0LCAxMjY1MTYsIDAsIDkyNjY4LCAKLSAgICA2NTY2NSwgMTI3Mzc1LCAxMjY1MDYsIDY5MjAsIDAsIDkyMjk1LCAwLCAxMTg5NjUsIDAsIDY0NjQ0LCAxMjY5ODEsIAotICAgIDc0MTE5LCAwLCA0MTAyOCwgMCwgNjIzMSwgMjYxMywgNjUzMDIsIDQwOTg5LCAwLCAxOTQ2OTYsIDAsIDQyNzYwLCAwLCAKLSAgICA5ODM1NjYsIDAsIDQwOTg3LCA0NjY3LCAwLCA5ODM5MzIsIDg4MjgsIDAsIDAsIDEyNDYsIDQ3NDYsIDAsIDAsIDExMDIxLCAKLSAgICA0NzQ5LCA5MjY3NSwgMCwgOTIxLCA0NzQ0LCAwLCAxMjcwMiwgMjQyLCAwLCAxNTY2LCA4MjE3LCAwLCA2NDY1MywgNzgzODYsIAotICAgIDEyODEyMSwgNzQwMzYsIDc0NTA1LCA0MzI3NCwgNTMxMywgOTUxLCAwLCAwLCA5ODM4NjcsIDc2MDQsIDk4MzI5MCwgNDAwOSwgCi0gICAgMTI3ODE2LCA5ODM3MTAsIDEyMDU2MiwgMCwgOTgzNzIwLCA2NDg2MCwgMTE5MTM4LCAxMTkwNjksIDAsIDEyNzM3MCwgCi0gICAgNDA0OCwgOTgzNTk4LCAwLCA3MDAyNCwgMTY0NiwgNzc4OTAsIDY0NTM0LCA3Mzk5NSwgMTIwNzA1LCAwLCAxMTk4OTAsIAotICAgIDI1NzksIDExOTkwNSwgMzE3NywgMTEzNTcsIDkwOTksIDQxMDcsIDM0NDEsIDExOTg5NCwgMjk3NSwgNzQ0NDIsIDk4MjIsIAotICAgIDk4MzkzNSwgNTUyMjAsIDEwMDg0LCA3Mzk0MywgMTE4ODQwLCAwLCA5MTc1NjIsIDE5NDYxMCwgMzM5OSwgOTg1MSwgCi0gICAgOTgzNzE3LCAxMTkwOSwgOTA1OSwgMCwgNzY4NywgMCwgNjc4OSwgMCwgMCwgMCwgNzEzNjcsIDAsIDAsIDE3NzcsIDkxNTEsIAotICAgIDExMzcsIDY5NzY3LCA3NDksIDQyMzY2LCAwLCA1Mzg1LCAxMjg1NzQsIDEyODIxOCwgMCwgMCwgNTk4OSwgMCwgMCwgCi0gICAgMTI4MDkxLCAwLCA0MTY4NSwgNjkyMjMsIDAsIDk3NjksIDQxNjg0LCA5ODMyMTYsIDUxOSwgMCwgMTE3NDAsIDU3NjYsIDAsIAotICAgIDAsIDI2MDAsIDg4NDgsIDEyMDEzOCwgNDEyOTcsIDAsIDM2NjYsIDc0NDczLCA0MTMwMCwgNzQ0NjgsIDY1MTYwLCAwLCAKLSAgICA2OTY4OCwgNjk3NzEsIDc0NDc5LCAwLCA2NTU4LCAwLCAwLCA2OTc2NSwgMTIwNzUwLCAyNTIsIDAsIDQxMzAyLCAwLCAwLCAKLSAgICAwLCA2OTc2MywgMCwgMTE3MjksIDg3MTksIDkwNjAsIDAsIDEyMDEzOSwgMTA3NjEsIDAsIDAsIDAsIDExODc5MiwgMTE3MzQsIAotICAgIDk4MzIyMywgMTE3MzAsIDAsIDk1OTMsIDU3NTcsIDI0MDMsIDY0ODA4LCA1NTI3NSwgMCwgMTE3MjgsIDQzNTcyLCAwLCAwLCAKLSAgICA3NzY0LCA5ODM3MTQsIDExMDk0LCAxMjA4MjUsIDAsIDk4MzIyNiwgNDI4MiwgODI5OCwgMCwgMCwgMCwgMCwgMCwgNjQ0NDksIAotICAgIDAsIDEyNjY1MCwgNjM4NTQsIDg0NTYsIDAsIDc0NzgzLCA2NTY3MCwgMCwgNzgyNTAsIDAsIDc3NzQsIDEwNjA3LCA5NzkyLCAKLSAgICAwLCAwLCAwLCAwLCAxMjA3NjQsIDAsIDEwMDE5LCA3NDc2MiwgMCwgMzQ1OCwgNDM2NSwgNzAwNTMsIDk4MzcxMiwgMzY0NywgCi0gICAgMCwgMjYwMiwgMTI4MzQxLCAwLCAxOTQ3MDcsIDQxMTM1LCAwLCAwLCAwLCA2NDYzMSwgMTcyLCA0OTcxLCA0MTIxOSwgCi0gICAgNDExMzcsIDE4ODksIDcyMzgsIDY1NDUsIDEyNjQ3NiwgOTIxOTMsIDc1OTcsIDEwNTI4LCAwLCAwLCAzNzMyLCA3MzkxMCwgCi0gICAgMTk0NTg4LCA1MzQ0LCAwLCA0MzM2NiwgNDMzNjMsIDkwNjIsIDExOTI1MiwgMCwgMCwgMCwgNjQ0NzksIDkyMzIsIDkyNTk2LCAKLSAgICAwLCAwLCAxOTQ3MTIsIDEwOTAwLCA0MTUzMSwgMTI2MywgMzcyMCwgMTIwNDgsIDAsIDY0MjkyLCA0MTUyNCwgNzIyNywgCi0gICAgMTE5NjM1LCA2MDk5LCA0MTUzNCwgMCwgMTI3MzU0LCAxMjczNDUsIDI5OSwgOTE3OTU3LCA4NTI1LCAxMjczNDcsIDM1MjQsIAotICAgIDkxNzU2NSwgODgzMSwgMTI3MzQ5LCA5MjU2NCwgMzA3NSwgNjc4NjcsIDEyNzM1MiwgMCwgNjYzNjIsIDAsIDY0MzUzLCAwLCAKLSAgICAwLCA1ODQ1LCAwLCAwLCAwLCAyNTgxLCA4MjAwLCA2NTExNCwgNjg0NjAsIDAsIDQzMjgzLCA1NTUxLCAwLCAxMjA3MzUsIAotICAgIDk4MzIwMSwgNjM0MCwgMTE4ODU1LCAwLCA3ODEzNCwgODY4MCwgNzIwNCwgNzAwNjUsIDI1ODgsIDI5MTQsIDcwMTEsIAotICAgIDU1MjgxLCAwLCAyNDcxLCAxOTQ2MzEsIDI4ODMsIDI3NDksIDExOTU2MywgNzM3NzQsIDEwOTEzLCAwLCAwLCA4NjY2LCAKLSAgICA2NzUsIDQyNDkzLCAwLCA0MzU3MSwgMCwgNjIxOSwgMCwgOTk4MCwgNDEyMzIsIDEwOTI4LCAwLCA0MTE1MywgNDEyMjksIAotICAgIDExODk2NywgMCwgMzczOCwgOTQwMTYsIDAsIDEyNzExLCAzMTgxLCA2NjIxMiwgNzQyODksIDY4NDcyLCA0Mjg1NywgODI2MiwgCi0gICAgOTgzMzc5LCAwLCA5ODMyMjIsIDAsIDQyMzQ3LCAxMjA5MiwgOTYxNSwgNzIzNCwgNzQwNDcsIDk4MzA4OCwgMCwgNDM3NDQsIAotICAgIDAsIDAsIDczODQ2LCAyOTM0LCAxMjcyMiwgMTIwNzYyLCA5MjIsIDQzOTgzLCA3NDUwNywgOTgzMTI2LCA3NDQ2MSwgMzIxOCwgCi0gICAgMTIwNDcxLCA3NDI5MCwgMTIwNDY5LCA2NDU2MiwgMTIwNDc1LCA4NTY5LCAxMTQwNCwgMTE5MzIsIDczNzI4LCAzMjE0LCAKLSAgICAxMjA0NjEsIDEyMDQ2OCwgMTIxMjgsIDMyMDcsIDY1NDg2LCA3ODcyOSwgMTkwMSwgNzg3MjcsIDEyNzMyNiwgMTIwNDYwLCAKLSAgICA3NDI1LCAzMjA1LCA2ODAwMywgNzg3MzcsIDc4NzM2LCA3ODczNSwgNDMzODMsIDY5OTQwLCA2NTQ1OSwgMjYwNiwgNzg3MzAsIAotICAgIDczODk3LCAwLCAxMTQ5NiwgMTE3MywgMCwgNDEyNzIsIDExOTY2MSwgMCwgMCwgOTgzMzIxLCAxMjA3MzcsIDAsIDk4Mzk3MSwgCi0gICAgOTgzMzIwLCAzNzgsIDI2MTAsIDAsIDY1MDc5LCA5ODMzMjUsIDY1Njk1LCAxMjY1NTksIDM3LCA3MDY4LCAwLCAxMjA0ODAsIAotICAgIDEyMDQ3OSwgMzIwOSwgMTIwNDc3LCAwLCAxMDYzOCwgOTc2OCwgNjk5NTIsIDExOTkwOSwgOTgzMzk5LCAwLCAwLCAwLCAwLCAKLSAgICA2NTUxMCwgMCwgMCwgNTIzMywgOTgzMzM1LCA2NDc5MiwgOTgzMzM0LCAwLCAxMjY2MzMsIDAsIDcwNjAsIDk4NDcsIAotICAgIDEyMDE0NCwgMTY4NSwgNTk1LCAwLCA3Mzk3MSwgMTI5MiwgODk0MCwgNzM4MCwgMTEwODgsIDAsIDEwMDA0LCAxMjY5OTcsIAotICAgIDAsIDY1NDEsIDAsIDAsIDAsIDMyNDMsIDkwMTQsIDU2MDYsIDAsIDUzOCwgNjQ2MjAsIDU2MDIsIDg0NjcsIDc0MzkxLCAKLSAgICA2NTQ3LCAxMjgxMzIsIDgyMDMsIDc4NDg4LCA5ODMwOTAsIDg0NTgsIDY1MjExLCA4NDk1LCAxMTk5MDQsIDAsIDkxNzU1MiwgCi0gICAgNzc5LCA3ODMxNCwgNjQzNjcsIDI0NjUsIDY5OTAxLCA4MTkzLCA1NTI3OSwgOTczMCwgOTI4MCwgMCwgNzA2NSwgNzQxNTUsIAotICAgIDQzNDYsIDAsIDczNzk4LCA1MDQsIDAsIDkyNDE0LCA4OTgyLCAwLCAwLCAwLCA3ODIsIDAsIDEwODgzLCAwLCAxOTQ4NTIsIAotICAgIDczMiwgMzczNywgMTI3MjUzLCAxNTQ4LCA2ODY1MCwgOTI1MDcsIDE4MzIsIDU2MDQsIDU3MzUsIDQxMTQxLCAxMTkwMjAsIAotICAgIDQzNzYsIDAsIDExNzg3LCAzNzQ1LCAwLCAwLCA0Mjg4OCwgNjU3MTIsIDk4MzMwNCwgMzg2OSwgMTE5MzcsIDU3MjUsIAotICAgIDEyNzUzOSwgMTc4MywgNjg2NDgsIDU3MjgsIDAsIDAsIDAsIDExOTE4LCA2NjU2NywgNTcyNCwgMCwgNTcyNywgNzg1MjEsIAotICAgIDAsIDAsIDc2NCwgMCwgMTI4MTE2LCA0MzUzMSwgMCwgOTAzMywgMCwgNDI1MzIsIDYyMjMsIDExMDQyLCAxMjA3NDksIAotICAgIDExNDIzLCAwLCAxMTk4NjEsIDcxMzQ0LCA0MzQ2NSwgMCwgMTI4MjY3LCA2NTU5LCA2NDU1NywgNzEzNDgsIDkyNjQ5LCAKLSAgICAxMjA2NDgsIDQzMDE5LCA0MzQ3NywgMTAyMzgsIDc0NDkxLCAwLCA0MzM3NywgOTIyODIsIDcxMzQ2LCAxNDc4LCA5NzgzLCAKLSAgICAxMTgyNSwgMjYwNywgNjQ3NDAsIDAsIDc3MzksIDc0NTQzLCAwLCAwLCAwLCA2MTMyLCAwLCA2Mzc2NSwgMCwgNzAwNTgsIAotICAgIDQxMTQ0LCAwLCA5MjQzOCwgNDM1MzcsIDY3NjEsIDEwMDkzLCA0MzY5LCA5MTc3OTEsIDAsIDk4MzE0OCwgODgyMCwgMzk0NywgCi0gICAgMCwgMCwgMTE1MTUsIDUyNiwgMTI4MTAzLCA0MTI5NSwgMTk0NjAzLCA5MTc3ODUsIDE5NDkzMiwgMCwgNzY4OCwgOTE3Nzg2LCAKLSAgICA3Njg2LCA4Mjg4LCAxMTgxNSwgMCwgMCwgOTgzMzgyLCAxNTQzLCAzNzEzLCA0MTIyMSwgMTI0MjMsIDQyMjgxLCA5MTc3ODgsIAotICAgIDc0MDI0LCAxMjI5MywgMCwgNjQzNTcsIDExNzk0LCA0MjA4MiwgMCwgMTczNywgODk4NywgNDIwODEsIDAsIDcyMDUsIDAsIAotICAgIDkzMzUsIDEyODUwLCAxMTk4NzAsIDY1NTMsIDcwNTUsIDAsIDgyNzcsIDAsIDAsIDU0NzUsIDc0Nzk1LCA2NzgwLCAwLCAwLCAKLSAgICAxMjk5MCwgMTE2MCwgNDIwODQsIDExOTY1MCwgNDEyMTcsIDExOTY2MCwgMTAwMTgsIDM2MCwgMCwgMCwgNjgxNzYsIDU4NjMsIAotICAgIDMxMzcsIDAsIDQxNDcsIDk4MzE3MCwgNDEyMTYsIDc4NDQsIDI2MTYsIDExOTE5MCwgNjg0NjEsIDY1MjM0LCA5ODMyOTQsIAotICAgIDEzMDc2LCAzMTM1LCA5ODMyODcsIDc4MTQzLCAxMTkxMzksIDMxNDIsIDkyNDUxLCA5NDA2OCwgMTA4MTksIDExOTU4MCwgCi0gICAgMTAxODMsIDAsIDI2MDgsIDE0NzAsIDczOTY3LCA5NDAwOCwgNjIyNywgMCwgMTI3MTczLCA2OTc0MSwgOTgzNTgyLCA2MTYzLCAKLSAgICA5ODM1NTgsIDAsIDEyNzMxNCwgMCwgMCwgODYwMywgMCwgMTE5ODY2LCAzMzA2LCAxMDg3NiwgNDMzOTIsIDExOTU3MywgCi0gICAgMTI3OTMxLCA1NzUxLCAwLCA2MjIyLCAwLCAwLCAxMjA4NiwgNzQwMywgMTYwMCwgNjQzMDksIDY0OTM5LCAwLCA2NDc4MywgCi0gICAgOTI2NTgsIDExMzEwLCAwLCA4ODgyLCAwLCAwLCAyNTcwLCA3MDIxLCAwLCAwLCA0MzExMCwgMCwgMTIzNCwgNjU0MCwgCi0gICAgNjk3NCwgMCwgMCwgOTgzMjExLCA1MDAyLCAwLCA0MTI4NiwgNjk5NDYsIDEyNzAxOSwgMCwgNDM1ODUsIDAsIDY1NTEsIAotICAgIDk4Mzk2MiwgMTI4MjI5LCAwLCA0MTI4OSwgMCwgMTk0NjAyLCAwLCA4OTc3LCA2MDIsIDEyMDgxNCwgMCwgMTI4Nzc4LCAKLSAgICAxMjg2NjEsIDAsIDk4MzM3NSwgNDEyNzksIDAsIDAsIDAsIDExMDgxLCA0MzYxNSwgMCwgMCwgMCwgOTgzNjEyLCAxMjcyNywgCi0gICAgMCwgMCwgNzgzOTcsIDk0NzUsIDcxMTIsIDY1MTA1LCAwLCA5NjMzLCAxMDg4NiwgNDM1OTIsIDc4MzEsIDk4MzgyOSwgCi0gICAgMTk0NTcxLCAwLCA3MzkxNSwgODA3NiwgNDMwNDgsIDgyOTAsIDgyOTEsIDQzMDUxLCA5MjU3MCwgMCwgMjU5NiwgNDM1ODQsIAotICAgIDAsIDEzMTEzLCAwLCAxMjc3NTcsIDIzOTMsIDcwNTgsIDkwODcsIDc0MDY3LCA2ODY3MywgNDE1NzQsIDc4MzM3LCAwLCAKLSAgICA3NDA1OCwgNjM3NiwgMCwgMCwgMCwgMCwgOTg1NCwgMTI3NzQ4LCA2NDY5NiwgMCwgMTI4MjIwLCAwLCA2OTk0LCAwLCAKLSAgICAxNzIwLCAwLCAwLCAwLCA2NTI5LCA3MDYzLCA5ODMxODIsIDM3NTEsIDkxMjAsIDk4MzQ4NSwgMCwgMTc5OCwgNzA5LCAwLCAKLSAgICAxMzU0LCAxODc2LCAxMzE1MiwgNjU1NywgMTI0MzAsIDgxMzcsIDk0MDk4LCA5MjY0MiwgMCwgMCwgMjQ1LCAxMjgwOTcsIAotICAgIDExNDU2LCA0MTIzMywgNzA3MCwgMCwgOTQwNDYsIDYxMzYsIDkxNzYwOSwgNjU2NzcsIDg2ODIsIDQxMjM1LCA5MjU5NSwgCi0gICAgNDIwNDUsIDk4MDQsIDExODk2MywgNDMyLCAzNTk1LCAxOTQ5NDUsIDY1NDM3LCAwLCA3NDQ1NSwgNDIzOTksIDAsIDAsIAotICAgIDEyODI3NCwgMCwgMTE5NjU4LCAwLCAwLCAwLCA3Nzg5NCwgODc5NywgMCwgOTA1MiwgNjQ4ODgsIDcxNjcsIDIzNTYsIDk1LCAKLSAgICA3NDc4NCwgMTA1ODAsIDAsIDQyMjg2LCAwLCA2NDY0MCwgMCwgOTQxMDksIDAsIDc0MTM3LCA3MDAzNSwgMTAwNjMsIAotICAgIDEyNjUyLCAxMjE5OSwgOTI0ODAsIDAsIDI1NjYsIDExOTcxLCA5ODM3MzcsIDAsIDEwNjUsIDAsIDAsIDQzNDAwLCAyNTc2LCAKLSAgICA2NjY5NiwgOTM5OTksIDAsIDQzNjA0LCAwLCAwLCA3NDA4MiwgNTE0LCA3NDUwMiwgNzAwMzIsIDI5MjEsIDQzMjE1LCAKLSAgICA2NDQ5MywgNTc3MiwgMTI5NjgsIDcwMDU1LCAxOTQ5NDQsIDc0NTgwLCA0MzM5OCwgMjU4MCwgOTgzODEwLCA0MTM0MSwgCi0gICAgNDEyMjMsIDY1NjQsIDE0NjMsIDQxMzQyLCAwLCA1MjkzLCA3MDAyMCwgMCwgMzczMywgMTEzNDYsIDAsIDEyMDU0LCAwLCAKLSAgICA3NDA5OCwgNDI4MjcsIDAsIDEzMDkxLCAwLCAwLCAwLCA5MTc5MTUsIDAsIDEyNzAyNSwgMCwgNzQ4MjEsIDAsIDk4MzczMywgCi0gICAgMTE5MDQyLCAwLCAxMjc4NjUsIDEzMDkwLCA2NjY0MywgMCwgMTI3MCwgMTEzMiwgNDIzNjAsIDAsIDc0MDk2LCA2NjY1NSwgCi0gICAgNDI1NjksIDEyNzgyNCwgMCwgNjQ3NjEsIDAsIDQxMDIxLCA4NTEwLCA0MjQzMiwgMCwgMCwgMTk0NzgyLCAwLCA2NDQ5NiwgCi0gICAgNzQxMDksIDcwMDMwLCA5OTE1LCAwLCA5ODMyMTgsIDcwNjEsIDQxMzM2LCAzODU0LCA2OTcwMCwgMTMxNDEsIDY4NDEzLCAKLSAgICA0MzQwMSwgNDIzMTksIDEzMDgyLCAwLCA3MDY3LCA2ODIyMSwgMCwgMTI3MzgzLCAxMjcxNzEsIDAsIDAsIDEyNzc5NywgCi0gICAgOTAyOSwgNDM1NDMsIDExOTMxNSwgMjM1MywgNjMwOCwgMCwgNzQ3OTIsIDI2MTEsIDExOTE4NiwgMCwgMCwgMCwgNDM2NjQsIAotICAgIDkyMzk5LCA2NjYyNywgMCwgNDQ4NCwgODUwOSwgMTE4OTc2LCAxMTA2NiwgNjUyMzMsIDAsIDQxMjI0LCA0MTAxNywgMCwgCi0gICAgMzc0NywgMTA1MjIsIDAsIDAsIDE2OTEsIDQxMjI2LCAwLCAxMjEwNywgNzEwMCwgMTA5MDUsIDY1MDEwLCAxOTQ5ODYsIAotICAgIDY5NywgNjYwMTgsIDkyODQsIDQyNDQsIDAsIDAsIDkyNjQ0LCAxMzEyMSwgMTIwMDM2LCAwLCAxMjAxMCwgMTI4NTczLCAKLSAgICAxMjgyMjEsIDAsIDAsIDAsIDEyNzE5MywgNjU4MTYsIDY4MTExLCAwLCAxMjc5MzMsIDY1NjY4LCA5MjI1NywgNjYxOCwgCi0gICAgMTE4Nzg0LCA2NjM2NSwgMCwgNDIyMzQsIDEyNjQ4LCA3ODExMCwgNzEyMywgNzAwMzgsIDU3ODUsIDkxOTgsIDk3NjQsIAotICAgIDQxMzE2LCA2NTg3NywgNzM4MywgMTMyMzAsIDQxMjk5LCAwLCAwLCA2ODM2NSwgMTI4MjU4LCAwLCAwLCAwLCAxMzEyMiwgMCwgCi0gICAgMTkxLCA3MDA2MCwgODU4NSwgODAwMCwgNjQ0MTEsIDEyMDY1MiwgNDI4ODksIDY0ODUwLCA0MTA3MiwgNDE1NzgsIDAsIAotICAgIDQxNTc3LCAwLCAxMDAwMiwgMCwgNjUzMywgNzM4MDIsIDQxNTcwLCAwLCA2ODMsIDM5NiwgNDE1ODAsIDY4MTQ2LCAwLCAKLSAgICAxMjkwMSwgNDMwNTgsIDAsIDM0MywgNzEyOSwgNDI2ODAsIDQxMzYwLCA3ODE1NCwgMCwgNDc0MywgMCwgMCwgNzQwNDAsIAotICAgIDc0MTA4LCA4NzQzLCAxNzI0LCAxNDMzLCAxMTkzMjIsIDAsIDM3MzksIDYyNjMsIDcxMzQ5LCAwLCAzOTY0LCA2NTkyLCAwLCAKLSAgICAxMjg2OTMsIDY2MDQwLCAwLCA0MjU2OCwgNjk4MDYsIDEyODExMywgMTc3OCwgMzk1NiwgMCwgNDIwNzAsIDY1NjMsIAotICAgIDQzMDc1LCA5MDE4LCA5NDAwNiwgOTgzMzk2LCAxMjA2NywgNDEzMTIsIDAsIDU1NDcsIDc0NTMxLCAxMjc5NjksIDAsIAotICAgIDgxNzUsIDAsIDI4NCwgODEwOCwgOTM0LCAwLCA3NDAwMSwgMTczLCA2NjQ2MCwgNzE3NCwgOTI3MDMsIDExODgyMiwgMTc1MCwgCi0gICAgMCwgNDM5NCwgNjgzNjgsIDE4MDcsIDk4Mzg4OCwgOTIyOTgsIDAsIDU4ODksIDAsIDcxODAsIDAsIDExOTE0NSwgMCwgCi0gICAgOTE3NTU4LCA0MjQ3MSwgNjk4MiwgMTcyMSwgNDQwMjIsIDc4OTEsIDQyMjQzLCA0MjE2MCwgMjU4MywgNDUxMiwgMTE5MzYwLCAKLSAgICA2NTIzMCwgMTI4MTA5LCAwLCAwLCAzODU1LCAwLCAwLCAwLCAwLCA3NDI5NSwgMCwgMCwgOTI0MTYsIDM5NzUsIDAsIAotICAgIDc0MDg3LCAwLCAxMjY3MiwgMzc5OCwgMjcwMywgOTgzNTk5LCAwLCAyMTA5LCA5Nzc0LCAxMjc1LCAwLCAwLCA0MTA5NSwgCi0gICAgMzk2MiwgMCwgMjkzMiwgNDExMDEsIDM5NTQsIDY0NTcsIDQ1MTMsIDAsIDAsIDczOTk0LCA3Mzk5MiwgMTQ2OCwgMCwgMCwgCi0gICAgNDE4NTEsIDEyODIzMCwgNDE4NDYsIDAsIDU1MjM4LCA3NjMzLCA0MTg0OSwgNjgzODUsIDQzMjAsIDMyMjQsIDAsIAotICAgIDEyODAzMiwgMCwgNDI1MzEsIDExOTEwOCwgMTUxMCwgMCwgODI1NiwgMCwgMTEzOTMsIDAsIDg4NzksIDEyODA3NSwgCi0gICAgOTI0NzQsIDg3NzAsIDAsIDAsIDc4Mzc3LCAxOTEwLCA4NjcxLCA3ODM3NCwgNDI4MywgMCwgMTI3MTE3LCA2ODM2MSwgCi0gICAgNzgzMTgsIDI2NTQsIDc4OTMsIDE5NTAwNywgMCwgMCwgMCwgNjUxMDYsIDQyNzYxLCAxMjg1NywgNDU4MSwgODQxMSwgCi0gICAgNzgzNzIsIDc4MzcxLCA3ODM3MCwgNzgzNjksIDc4MzY4LCAwLCAwLCAwLCAxNzMzLCA0MzkyLCAyNTY4LCAxMDc4NiwgCi0gICAgNjk2NjEsIDAsIDgxODQsIDQxNDg2LCAwLCA3Mzk2LCA3MTE2LCAwLCA2OTc4OCwgMCwgNzE4NSwgNzk2NSwgMCwgMCwgCi0gICAgOTIzNDcsIDk4MzA4NywgNDEzNTAsIDkxMjksIDAsIDAsIDIyOTQsIDAsIDkyNDg5LCAwLCAxMDQ4MSwgMCwgNzAwMjIsIAotICAgIDcxNzEsIDAsIDM0MCwgOTI0OTgsIDkzOTcyLCAwLCAwLCA5MjIwMCwgMCwgMCwgNjc2NCwgMTI3NDg3LCAwLCAwLCAwLCAwLCAKLSAgICA2NTIwMywgMTEzOTIsIDExOTA5OCwgMTE5MzU5LCAwLCAzMjEwLCAwLCAwLCAxMTg3OTUsIDAsIDAsIDEyNzk3MCwgCi0gICAgOTE3NjE5LCAwLCAwLCAxMDA0MywgMCwgMTE4NiwgNDE1NzEsIDY5OTksIDYxNywgOTQ2NCwgMTI2NjQyLCAzNjc1LCA1MjA3LCAKLSAgICA2NTA2MiwgNTIxMywgMTk0NzY5LCAyNjE3LCA0MTM0OCwgNDE1NjgsIDEyODgwMywgMzI1MywgMTIwNTM1LCAwLCA4NjMwLCAKLSAgICAxMjg1NDQsIDAsIDU1OTYsIDU1NDUsIDcyODgsIDI1ODYsIDY0ODg3LCAwLCA1MjE3LCA3MTMzNiwgMCwgMCwgMCwgNjQyOTMsIAotICAgIDY4MDk4LCAyNjM1LCAwLCAwLCA5ODM4NDYsIDAsIDk4MzY0MSwgNzgzNSwgNzAwNDAsIDAsIDE5NDk4OCwgOTIyODUsIAotICAgIDY0NTU4LCAxMjcxMjIsIDAsIDEyNzEyMSwgMCwgMTI3OTEzLCAwLCA1Nzg0LCA5ODMxMDIsIDAsIDAsIDcwMDMzLCA0MDExLCAKLSAgICA5MTc2MTYsIDY4MTAxLCAwLCA3ODY0LCA0MjU0LCA2NTA5NSwgOTgzNDk2LCA1NjAwLCAzOTAzLCAxMjcwODMsIDEwNDQ3LCAKLSAgICA1NTk4LCAxMjA3LCAxMjA1MjEsIDY2Njg5LCAzNTAxLCA0MjU4MiwgNDM2MDAsIDE5NDc4MCwgMCwgMTEyNCwgNTU5NywgCi0gICAgMTk0Nzc4LCAxOTQ3NzIsIDkzMjEsIDk4MzQ4NCwgOTgzNDgxLCA5ODM0ODIsIDAsIDE3MTksIDY4MzU2LCA2ODM1NCwgCi0gICAgOTY3MSwgMTEyNSwgNDM5OSwgMTI3NDc5LCA5MTc2MTAsIDk4MzQ4OCwgNzYzMSwgNTQ4OCwgNzEyOCwgMTIwNTMyLCAwLCAKLSAgICA1NDkxLCAwLCA4OTM3LCA0MzA0NCwgMjYwNCwgNzQxODcsIDU0OTAsIDQzMDQ2LCA1NDg5LCA3MjEyLCAxMTc2OCwgNDMwNDMsIAotICAgIDYzMDAsIDAsIDcxMjIsIDAsIDQzOTAsIDQ1NCwgNDEzOTcsIDAsIDk4NzUsIDc1OTMsIDE5NDc5MSwgOTIyNzQsIDExODkxMywgCi0gICAgNzIwNywgMCwgNjU5MDEsIDIzOTQsIDI1NzUsIDAsIDM3NDYsIDExMDE2LCA2NTc1MiwgMTIwMDM3LCAwLCA0MzQyMywgCi0gICAgMTI4NjgzLCAxMTk4OSwgMCwgMCwgMCwgMCwgMCwgODI0OSwgMTI4MTcyLCAwLCA3ODUzMSwgNjY0MCwgNzQ4MDYsIDI1OTgsIAotICAgIDUxMywgMCwgNjU4NiwgODY1NiwgMCwgMTIwNzEwLCA2NTAwOCwgMCwgMTk0Nzg0LCAxOTQ5ODksIDE5NDc5NSwgOTgzNDczLCAKLSAgICA5MjUxNSwgNjg0NzUsIDkzOTczLCAwLCAwLCA3ODYzNywgMTI2NDcsIDAsIDEyODA0MywgNjk4OTMsIDEwMzYsIDk4MzQ3NywgCi0gICAgOTI0MTksIDE3MjMsIDEyODA1NiwgNzQyMTcsIDAsIDQxNTc5LCAyNDQ0LCAwLCAxMDcwNSwgNzM4NzYsIDk4MzQ2OSwgCi0gICAgNzQ0ODYsIDk4MzQ2NywgNzQwLCAxMTkyMjIsIDE5NDk3OCwgMTk0OTg0LCAwLCA0MjM4LCAxMTA3MSwgOTQ1OSwgNjg0MzcsIAotICAgIDc4MTQwLCA3ODEzOSwgMTk0OTg1LCA4MTIxLCAxMDQzOCwgNzQ0ODcsIDQyNTc0LCAxMzI4NSwgNTUyNjMsIDExOTA3LCAKLSAgICAxOTUwMDAsIDU2OTAsIDkyMjU1LCA5Mzk5MiwgMCwgNDMxODEsIDEzMDk1LCAwLCAxMjc4NTcsIDY0NDk4LCAwLCA5NTA2LCAKLSAgICA2OTc4LCAxOTQ5OTMsIDc3OTkyLCAwLCAwLCAxOTQ5OTIsIDAsIDEyNzg0NSwgMTEyMiwgMzE3LCAwLCAwLCAwLCAwLCAKLSAgICAxOTIwLCAwLCAxMDE3MywgODI3LCAwLCAwLCA3ODM3OCwgMTIwMTI2LCA1MjIzLCAxMzA0LCAwLCAxMTk1NjQsIDUyMjYsIAotICAgIDEyNjAyLCA5NDA0NCwgMCwgOTMyOSwgNzc1OCwgOTIzOSwgNDExNzMsIDUyMjQsIDU0ODcsIDEyMjIsIDU2OTIsIDQxNzI1LCAKLSAgICA2OTIyOSwgOTY3NCwgNTY5NSwgNDE3MTEsIDY0NjI3LCAxOTkwOSwgMCwgNzQ2MDQsIDU2OTEsIDI4NywgODY2LCAyMzMsIAotICAgIDEyNzQ5MCwgOTgzNDQxLCA0MjgxNiwgOTQwMzYsIDY1MTQwLCA3NDc5NywgMCwgODgzMCwgNjU2OCwgNDIzMDAsIDEwNTI0LCAKLSAgICA0MTE3NSwgOTgzNDQ4LCA5ODM0NDUsIDk4MzQ0NiwgNTI5NiwgOTgzNDQ0LCA0MjQ5MiwgNDM0MDIsIDkyNDY2LCAzMzAyLCAKLSAgICAwLCAwLCA2NTE2LCA2NTE1LCA2NTE0LCA2NTEzLCA2NTEyLCAwLCA3ODU2LCA4NjkwLCAwLCAwLCAxMjEyMiwgMTE5NjAyLCAKLSAgICA0Mzk3NiwgMCwgMTc4NSwgNjk5MjUsIDY4NjIyLCA2NTE1MywgMTk0ODEwLCA1MTM4LCAwLCAwLCAxMTg4NjksIDAsIDQ1NDAsIAotICAgIDQxMTgxLCAwLCA2MjAwLCAwLCA1MTM0LCAwLCAzMjIsIDQ2NDMsIDUxMzIsIDAsIDYzODksIDEyODUzMywgNTE0MywgMCwgCi0gICAgODc5MCwgMTI4Njk0LCAwLCAxOTQ4MDIsIDAsIDg4NjksIDY5OTE2LCAwLCA0MjA2MCwgNzEzMjYsIDk2NDgsIDE5NDgwNCwgCi0gICAgMTI3MDEyLCAxMDI3MCwgMTAyODYsIDEwMzE4LCAxMDM4MiwgNDM1MjksIDY2NDc3LCAwLCAwLCA3NDE3MCwgMCwgMzIzNCwgCi0gICAgMCwgMCwgNzQzNzYsIDQzMTM5LCAxMTg4MTUsIDEyNzA4NCwgMTIwNjI3LCA4NzY3LCAwLCA3NDQ4OSwgOTY5NSwgMTIwNzQ2LCAKLSAgICA1MjAxLCAwLCA2MjE1LCAxMjcxNCwgNjIxNCwgMTMxMDEsIDAsIDE5NDk5OSwgNjUyNjgsIDAsIDAsIDAsIDExMDI3LCAwLCAKLSAgICAxMDA1OSwgMTA1MTEsIDQyMDc1LCA5NzY3LCA3ODksIDE3NDksIDc4ODkwLCAxMjcwNzEsIDk4MzY3MCwgMzIwLCAwLCAKLSAgICA4NjQ3LCAwLCAzMDQ5LCAwLCA2NDcxLCA0MjA3MSwgNDMxNTYsIDk5MjUsIDEyNzM1NiwgMTI3MzU1LCA2NjQ3OCwgNDk2MCwgCi0gICAgNTU0OSwgMTI3MzU5LCAxMjczNDYsIDg0ODUsIDQ2NzEsIDU0MTgsIDEyNzM1MCwgMzM1MSwgMTI3MDA2LCAxMjczNTEsIAotICAgIDEwNjEwLCA1NDE0LCAzMDY0LCA2MjEyLCA0Mjg2LCA1NDIxLCAxMjczNDQsIDk1NTQsIDAsIDk0MDQ4LCAxMjcxMDksIAotICAgIDY2NTMsIDEyODgxMSwgMCwgNjQ1MTAsIDYyMTMsIDEyODg1LCAwLCAxMTkwNDUsIDY0NzIwLCAwLCAxMjA3NTksIDczNzQxLCAKLSAgICAxMjYwMywgNzEzMSwgMTE0MzAsIDQ1NjYsIDc1MTgsIDkzMTcsIDM4MDEsIDEwMzQyLCAxMDQwNiwgMCwgMTE5MjU5LCAKLSAgICA0MjU3NiwgMCwgNTIwMCwgMTI2NjExLCA5MTc5NDgsIDAsIDkxODMsIDEyNzM2MSwgNzQ0NTgsIDczODI1LCAzOTUsIDU0ODIsIAotICAgIDUxOTgsIDQzNDksIDEwMzkwLCA3NDIwMiwgNTE5NiwgNDMyMjQsIDYxMTMsIDQyMDA5LCA1MjA1LCAwLCA0MzMwNywgMCwgCi0gICAgMTE4OTczLCAwLCAxMjEzNCwgMCwgMCwgMTE4ODQzLCA5MTI2LCA0MzUsIDk4MzYyNCwgMTIwMTQsIDEwMzc3LCA4MDkzLCAKLSAgICA5MDc5LCAzMjAzLCAxOTIsIDY1MTA5LCAzMzg1LCAwLCA2NDQzMCwgNTM4MywgMTAyOTQsIDEwMzI2LCAxMjgxNzgsIDU3MzgsIAotICAgIDk4MzIxNSwgMzMzNiwgNzgzNTUsIDUzNjEsIDM2MjMsIDQxMTU5LCAwLCA2ODExMiwgNzg3MiwgODU4MSwgMCwgMTI2MCwgCi0gICAgMzE0OSwgNTM1OSwgMTIwMTM0LCAwLCA3OTE0LCA1MzU3LCA5MjE3MCwgMTI4NjU5LCAyNjI0LCA1MzY0LCAwLCAxMTQzMSwgCi0gICAgMTIwMDMwLCA5MTAxLCAxMTA1OCwgNzgyODgsIDAsIDc4MjkzLCA0MjI3MSwgNzgyODksIDQyOTE3LCAxMjA3OTMsIDAsIAotICAgIDY1NTY2LCA2NzE3LCAxMDYxOSwgNDMzNjAsIDc4Mzg1LCA3ODM4NCwgMTE4MzIsIDc4MzgyLCA3ODM4MSwgNzgzODAsIAotICAgIDc4Mzc5LCA5MzE5LCA3MDk3LCAxMTkwNTUsIDc3OTA2LCAzMjMyLCA3MzgyNCwgNzQ1ODEsIDEyMDYzMiwgMCwgMCwgCi0gICAgNDE4ODksIDkyNDUzLCAwLCAxMTYxLCA0MTg5NSwgNzQxMDMsIDk3MDEsIDg2MjIsIDAsIDAsIDczODE5LCAxMjA1ODgsIAotICAgIDUwMTIsIDc3OTEyLCA0MTM2MiwgNjk4NjIsIDc4Mjk2LCAxMTkyMSwgMCwgMTE3NjksIDAsIDY4NjA5LCA0MTM2NCwgMCwgCi0gICAgNzQyMjgsIDQxMzUyLCA0MTM2MSwgMCwgNDEzNjYsIDAsIDMzNTYsIDExNjExLCA5MTcsIDY4NDIyLCAxMTk5MTUsIDcxMzQsIAotICAgIDgxOTksIDc4Mzg5LCAxMTk5MTcsIDY3NywgMTE5OTE2LCAwLCAxMTk5MzIsIDEyNzE2OSwgMCwgMCwgMCwgMzM0OSwgCi0gICAgNzQxMjUsIDcwMjIsIDg5MjcsIDQ3MzksIDAsIDU4MDIsIDAsIDg2MTUsIDAsIDAsIDQ5MSwgMTI4ODE5LCAxMDE5MCwgCi0gICAgMTIwNjk4LCA2NTgzNywgMTI4ODIwLCA4NDI2LCAxMTA5MiwgOTg5MSwgMCwgNDI0OTcsIDcxMTMsIDc1ODYsIDQyMzA1LCAKLSAgICAxMDg1MiwgMCwgMCwgNDYwNiwgNjg0NDgsIDkwOTUsIDc3NDEsIDEyNjg0LCA0MTg4NSwgMTA0NiwgNzEyNCwgMCwgMCwgCi0gICAgNTgxNSwgNTE3MSwgNjU1MzksIDY4NjEyLCA2OTMyLCA3NDI2NywgNDIzOTQsIDQxODc4LCA3NDg0OSwgMTIwNjIxLCAwLCAKLSAgICA1MTY5LCAxMTkzNSwgMCwgMCwgMzE3NSwgMTIwODIyLCAxNTM3LCAxMjA4MDQsIDUxNzYsIDg5MDUsIDQxMzYsIDQ4NzEsIAotICAgIDc4Mjg3LCAwLCA5ODMzLCAwLCAwLCAxMTI4LCA2NTkyMCwgMCwgOTcxMSwgNzA1NywgOTQwOCwgOTQwOSwgOTQxMCwgOTQxMSwgCi0gICAgMzY2MiwgOTQxMywgMzM3OCwgOTQxNSwgOTQxNiwgOTQxNywgOTQxOCwgNjMyMCwgOTQyMCwgOTQyMSwgNTg5NywgOTQyMywgCi0gICAgNTE2NSwgNTEyNiwgNDEzODUsIDAsIDQxMzg5LCA5MTc5MzgsIDg5NTUsIDMzNzQsIDk0MDAsIDk0MDEsIDcxMTksIDk0MDMsIAotICAgIDk0MDQsIDM1MDcsIDk0MDYsIDc2MjksIDk4MzYxNywgMTk5MjUsIDQyNjY5LCA2ODQ2MywgMTgzLCA0Mzk4NSwgMjYzMSwgMCwgCi0gICAgMTA2MjcsIDQxMTMwLCA3ODI2MCwgMzk5NiwgMCwgNzg3NzEsIDAsIDExOTMxMywgMTE5MzA3LCA3ODc2OCwgNjU4MCwgCi0gICAgNDMzMiwgNjQ4MjUsIDY2MzI5LCAxMDcyNiwgNjY2ODYsIDQxMTI1LCA1ODk5LCA0MTM2NSwgOTE3OTE4LCAxMjA4NSwgMCwgCi0gICAgNTc0LCA5MTc5MjIsIDc3ODI1LCA3MzgyOCwgNTQ0OCwgNDEwNTgsIDU0NDYsIDY5NzA5LCA0MTMyMiwgNDIyMTEsIDU0NDIsIAotICAgIDQxOTAsIDc3ODM0LCA3NzgzNSwgNTQ1MSwgNzc4MzMsIDM2MTYsIDc3ODI4LCA3NzgzNywgNzc4MzgsIDc3MDgsIDc3ODM2LCAKLSAgICAxMDg1OSwgNjU4NjcsIDEwMzQ1LCAxMDQwOSwgNDE5MSwgMCwgNzc4NDQsIDczODAwLCA0MjE4MSwgNzc4NDMsIDc3ODM5LCAKLSAgICAyMDYwLCAwLCA3MTExLCAxMTc4OCwgNjU1ODcsIDY4MTI5LCAxMDQxNSwgNzQxMDIsIDAsIDIwNSwgMCwgMTAzNTEsIAotICAgIDExOTA3NiwgMCwgOTg2MiwgNjU4OCwgNDMyNTcsIDY0Njk3LCA3Mzk5OCwgNDEzNTUsIDU1MDUsIDExOTE1NCwgNTUwMywgCi0gICAgODAyMSwgMCwgNzEyNSwgOTgxOSwgNDEzNTcsIDgwMTEsIDQyODg1LCA1NTA3LCAxMjA0NCwgOTI2MzYsIDAsIDEwMDI2LCAKLSAgICA1NDcyLCA3MTA5LCAxMTkxLCAxMzEwNiwgNTQ3MCwgMTAzMjksIDU0NzYsIDg5OTEsIDY2MzIyLCA2OTc3OCwgNzgyNjcsIAotICAgIDQyODc0LCA4NTUwLCA0Mjg3NiwgNTU5MiwgMjkxOSwgMCwgMjY3NSwgNTU5NSwgNzg0MTEsIDQzNzYyLCA0MzY3LCAwLCAwLCAKLSAgICA1NDc4LCA1OTA0LCA1NTk0LCAwLCA3NDE1MCwgNzI5MSwgNTU5MCwgNDM3NjEsIDEzMDY3LCAxMTg5MDksIDEyMDM3MiwgCi0gICAgOTgzMTA4LCA5NzMxLCA2OTczMSwgNjQ2MzMsIDc3ODU3LCA3Nzg1NCwgNzc4NTUsIDc3ODUyLCA3Nzg1MywgNzc4NTAsIAotICAgIDEwNzUwLCA0MzcxNCwgNzc4NTgsIDcxMzcsIDAsIDEyODI5NiwgMTI4ODcsIDEwNTUxLCAxOTQ1NjQsIDc3ODY2LCA3Nzg2NywgCi0gICAgNzc4NjQsIDc3ODY1LCA5OTI5LCA1MTk5LCA5OTM2LCAxMTIwLCA0MjM4NywgMCwgMTQ0NCwgOTQ4NiwgNzU1NCwgNjU4MzksIAotICAgIDU1MjUyLCA3Mzk3MiwgMTQ0MiwgMCwgNTg5NCwgNzAwNjksIDAsIDQxMTcxLCA5MjUxMSwgNzQzMTMsIDAsIDEzMTYyLCAwLCAKLSAgICAzMzM0LCAxOTUwMTAsIDExODgwMywgNzc4ODEsIDY2MDIyLCAwLCAwLCAxNjUxLCAxMjg3NzEsIDg4NjEsIDAsIDAsIDExNDIsIAotICAgIDAsIDgyNzEsIDAsIDk4MzA1OCwgMTI2NjQ1LCAxMjkwMywgMCwgNDAwMiwgNDM2MjYsIDEwNDQyLCAxMDY3NiwgMzM0NCwgMCwgCi0gICAgMCwgMTI5MjAsIDE5NDU2MCwgMCwgMCwgNjY2NDIsIDEyNzcsIDAsIDc4NzEsIDAsIDE5NDY4NiwgNzg4NTMsIDAsIDc4ODU0LCAKLSAgICAxMjAzNjAsIDAsIDExNzg0LCAwLCA3ODAxMiwgNDcwMCwgNjYzNjYsIDc4ODU4LCAxMjAzNTksIDExMDEyLCAwLCA3ODg1NiwgCi0gICAgOTI0MDAsIDc3ODc5LCA0OTczLCA4Nzg0LCA3Nzg3NywgNzQ4MDQsIDc3ODc0LCA3Nzg2OSwgNzc4NzEsIDQyNDQwLCAwLCAKLSAgICA0MzExOCwgMCwgNDIzNjQsIDY3NzQsIDY3NzMsIDkxNzU2MCwgMTIwMzY5LCAxMDM0NiwgMTA0MTAsIDc4ODU5LCA5MjQzLCAKLSAgICAyNDY0LCA3NDI2MywgNjEwOCwgMzM3MiwgMCwgNjI0NywgNDMxMTcsIDc0NTI2LCA3MTIxLCA3NDE2NiwgMCwgMTIwMzU1LCAKLSAgICA5MjUzNywgMCwgMCwgMTk1MDM0LCAwLCAwLCAwLCA3MDA4MywgMzM1NCwgMTk1MDM3LCA0MTkyLCA5Mjg5LCAxMTg5OTksIAotICAgIDQxMTkxLCAzODc2LCAwLCA3MDA2NywgMTIwNjYwLCA0MzY5NiwgNDMzODAsIDAsIDk4MzA5MSwgMCwgMCwgMTE2MDMsIAotICAgIDk4Mzk1NCwgMCwgNjU4OSwgMTI4NTg4LCAxOTQ2NzksIDAsIDAsIDk4MzcwMCwgMCwgMCwgNDI1NzIsIDEyODI2NCwgCi0gICAgMTA2MzAsIDc0ODI3LCAxOTYzLCAxMTYyMiwgMTI3MDk4LCAxMTY1NCwgMCwgNzU1MCwgMTA2ODYsIDU5MDMsIDAsIDc4MDA5LCAKLSAgICA0MTMyOSwgOTY2MiwgOTE3OTM3LCA2NDY5OCwgMzM2NiwgMTAzOTksIDAsIDU1NDIsIDExMDEzLCAxMjc5MjcsIDEyODMwMCwgCi0gICAgMCwgNzg2MjEsIDE5NDY3MiwgNjkyNSwgMCwgMCwgOTE3OTI5LCAwLCAxMTU2OCwgOTgzNjczLCA0MzM2NywgNjQ1NzksIAotICAgIDkxNzkzMCwgNzg1MiwgMCwgMCwgNjc1NCwgNjMxMiwgMCwgNjQ2NzIsIDY1Mjk2LCAwLCAxMTg5NTcsIDAsIDQxNiwgCi0gICAgMTIyOTYsIDY4NDU3LCA3MzgzNCwgNjgxNzcsIDExMDUwLCAxMDk4NCwgOTIyMDgsIDAsIDAsIDkyMTgyLCAwLCA5ODM2MDUsIAotICAgIDk1MzIsIDY2MzU1LCAwLCA5ODMyMzQsIDkxNzkyNSwgNjQzNDMsIDE5NTAzMiwgMTI4MjgxLCAxOTUwMzEsIDAsIDE5NTAzMCwgCi0gICAgMTk1MDU3LCAxMTQ0NSwgMCwgMjExMiwgMTk1MDU2LCAxMjg4MTQsIDEwMTg1LCAxMDIxLCAxMjgxMzAsIDk1MDcsIDEwMjEwLCAKLSAgICA3NDU0NCwgODAyMywgMTIwMCwgMTIyNDMsIDc4MDAxLCA1MjgyLCA3ODAwMywgOTYyNCwgMTE1NDUsIDAsIDEyMDQ5MywgCi0gICAgMzM0MywgNDQyNCwgMTEwNDcsIDE4ODUsIDQzMjY4LCAzODk2LCA3ODQ0NCwgNjY0OTcsIDI5NDcsIDM5MiwgNzg5NCwgCi0gICAgNDM5MSwgNjgxMzksIDk4MzA2MiwgMTMwNTksIDc0ODE2LCA3Nzk5OCwgMzM4MSwgNzk0MiwgMCwgNjkyMTksIDAsIDY0NzU3LCAKLSAgICAwLCAzOTEzLCAwLCAwLCA3ODIzNSwgNzA0NCwgMTI2NSwgMCwgNjMwOSwgNzA0NSwgNzE3NSwgNzA0NywgNzgyMzksIAotICAgIDExNzkxLCAwLCAwLCA4MjIxLCA3ODMwNywgNDE4NjQsIDAsIDAsIDAsIDAsIDE2NywgOTgzOTA2LCA3ODMwMSwgOTgzNjUzLCAKLSAgICA3NDIxMSwgNDE4OTcsIDY4NDc3LCAwLCA5MTc1ODMsIDk4MzYzNCwgOTQwNjUsIDI0OTMsIDAsIDExODgxMSwgMCwgMCwgCi0gICAgNjQzNTQsIDAsIDg3NzcsIDAsIDQwNiwgODg4NCwgMjM4NSwgMCwgOTI0NTAsIDAsIDkxNzU3MywgNDMwMzAsIDQyMDI3LCAKLSAgICAxMjExNCwgMCwgOTE3NTc5LCA2NDkzNiwgMTk0Njk1LCAwLCAxMjA2MjksIDEwNTYxLCAwLCA4MzY1LCAxMjA1MzksIAotICAgIDk4Mzc3NCwgNjU4NDEsIDEyMDc4NywgMTE2MDEsIDAsIDc0MTIxLCAwLCA5MTc1NzUsIDc4MzQsIDc0MTU5LCAwLCAKLSAgICA5MTc1NzQsIDEwMjk4LCA2NjI0LCA0OTA4LCA5MTc1OTYsIDE2MzksIDAsIDAsIDc0MTU3LCA2MzI3LCA2NzI0LCAwLCAKLSAgICAxMjgwODYsIDkyNTY2LCA2OTkxMCwgNDgxNywgNzg0NDYsIDE5NDc1OSwgOTI1MzYsIDcwNDMsIDk2MDAsIDExMDIyLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3NTQ4LCA2NDc5NCwgNDIwNTAsIDEyMjkxLCA1NTI4OSwgMTk0NzYxLCAxMjM0MywgNjU3LCAKLSAgICAxOTUwNTQsIDQyNzA1LCA0NDYxLCAxMTM0LCAxODM4LCA3ODQzOCwgMjA1NywgMCwgNDQ2OCwgMCwgMCwgMCwgNDQ1NiwgCi0gICAgNTIwNiwgMTA3MjAsIDAsIDQyNTIzLCAxMjc1MjAsIDAsIDAsIDkxNzU5NSwgNjU1NTAsIDI2MCwgNDgxNiwgNjc2NTgsIAotICAgIDEwNjg3LCAwLCA0ODIxLCA0NDY2LCAwLCAxOTUwNDMsIDQ4MTgsIDE5NTA0OCwgNDE0MDMsIDExOTk3NywgMCwgMCwgCi0gICAgNDE0MDYsIDQzMjczLCA3NDE2MCwgMTE5OTgzLCA3MzkzOSwgOTI2MzgsIDExOTk4NCwgMTE5OTc5LCA0MTQwNCwgMTE2NSwgCi0gICAgMTE5OTgwLCA0NDUxLCAxMzA4NywgMCwgMTEyODQsIDExOTk4NywgNzAwOTcsIDY1MTU1LCA0MzAxNCwgNTQzOSwgOTM2MywgCi0gICAgNzAwNzAsIDMzNzUsIDEyODg2OSwgNTkwMCwgOTM5OTAsIDc4ODksIDI3MjIsIDQyMjYyLCAwLCAwLCAxMjg3NzQsIDAsIAotICAgIDIyODIsIDAsIDEyNzgxMCwgMTE0MDEsIDk4MzgyMiwgMCwgNjg0NTksIDAsIDAsIDAsIDAsIDY1NDM4LCAwLCA3MjgwLCAKLSAgICAxMjc4ODcsIDAsIDEyNzM4MSwgNDg2OCwgODI5NywgMTE5OTY2LCAxMTg3OTgsIDAsIDAsIDQzMTYxLCAwLCA5MjM2MCwgMCwgCi0gICAgNTE4MiwgMCwgMTIwNTQyLCAwLCAwLCA0MjI2LCAxMTkyNDMsIDEyMTM1LCA1NzMyLCA0NDY0LCAwLCA3MTMzMCwgOTc3LCAKLSAgICA0NDU4LCAwLCAwLCA2NDc3MCwgNzQ4MzgsIDAsIDM0NCwgMCwgMTk0NzkwLCAxMzk1LCA2NDI3OSwgMCwgOTIyNDAsIDAsIAotICAgIDc4NiwgMCwgNDMxNzQsIDY0MzQwLCAwLCAxOTQ3NjcsIDEyMDcyMywgNDMwMjYsIDc2MTIsIDEwMTMyLCA2NDQxMywgCi0gICAgNjUwMjUsIDAsIDAsIDAsIDkzOTU2LCAwLCA2ODQ0NCwgMCwgOTI0MzcsIDAsIDExOTE2MCwgMTAyMDQsIDkyNjU2LCAwLCAKLSAgICAxMjc4MDksIDk4MzY0NCwgMTM5OSwgOTgzNjUyLCA2NTIxNywgMCwgODg1MiwgMTI4NTcxLCAyNDEsIDEyODc4MCwgNDkwNywgCi0gICAgMCwgOTgzNjM5LCA3OTMyLCA5NzI3LCAxMjg4NzMsIDc0MjU1LCA4NzQ4LCAwLCAwLCA5ODM2NDMsIDAsIDQyNzgwLCAwLCAwLCAKLSAgICAwLCA0MjE3LCAwLCA4NjUwLCAwLCAwLCAwLCA2OTkwMCwgMTE4ODcyLCA0MzA5OSwgMzk2NSwgMTE5MTE5LCA2NzE5LCAwLCAKLSAgICAxMzMwMCwgNzg0MzksIDkzOTcxLCA0MzA1NywgNjY1ODgsIDExODk5MSwgMCwgMCwgNzM4MTUsIDQ0MjAsIDAsIDY0MTAsIAotICAgIDc3NjAsIDAsIDAsIDAsIDAsIDAsIDcyOTQsIDAsIDAsIDAsIDkwNjYsIDAsIDExOTkzLCA0MzE4OCwgMjYyNiwgNzc2MiwgMCwgCi0gICAgMCwgMCwgOTI2MDEsIDQyODI1LCA0MTg1NCwgNTMwNCwgMCwgNzg1MTYsIDY5MTksIDg2MTksIDExOTY1NSwgMTAwMzgsIAotICAgIDY2NDU0LCA5NTkyLCA0Mjg1MSwgMTI2OTkzLCAxNTQyLCA5MjMwMywgMCwgMCwgMCwgMCwgNzQzMTEsIDc4NDk3LCAwLCAKLSAgICAxMDE4MSwgMCwgNDM2MjQsIDAsIDc3NzksIDAsIDEwMTk1LCA5NDc5LCA2MDI5LCAwLCA5MjI2OCwgOTY4OSwgMCwgNjU1NzcsIAotICAgIDg5OTMsIDY2MzU4LCAwLCA0MjM3OCwgMzM2OCwgNjA2LCAxMjcwMzAsIDc2OTcsIDY5MjM3LCA2OTc4NywgMjAzMCwgMCwgCi0gICAgNjAyNywgODM3MCwgNDMyMiwgMCwgNjUyMDcsIDAsIDk4MzMzOSwgOTgzMzM4LCA5ODMzMzcsIDk4MzMzNiwgMjczNSwgCi0gICAgNDI4MzEsIDc3OTM1LCAxMjcxMjAsIDc0ODY2LCA4ODgxLCAxMTkwNDcsIDAsIDAsIDczOTQ2LCAwLCAwLCAwLCA2ODE0MCwgCi0gICAgOTgzOTI4LCA5NTc2LCAxMjg4NzIsIDMzNDcsIDQxNjAsIDUxNTQsIDU1Mjg4LCAzNzk0LCA2NjU2NCwgODUzMCwgMTI3MDYzLCAKLSAgICA3NzA5LCA0MTExMiwgOTgzMTMyLCA2NjU2MCwgNDIwNDEsIDQ1NzIsIDEyODc2LCA2NjU2MSwgOTgzNzU4LCA2NzU4LCAKLSAgICA5ODM5MjYsIDE2MTUsIDU4NTUsIDgwOSwgMCwgOTIyODMsIDEyODMxNiwgMTI4MDA0LCA1Nzk5LCA5ODMzMjgsIDcwMTAwLCAKLSAgICA5ODMzMjYsIDcyNjAsIDk4MzMyNCwgNDMwMzEsIDY0NDI1LCA2NTEyOCwgNzg4MTksIDY0Mzg2LCA2NTI1NywgMCwgNjg2MTYsIAotICAgIDEyMDYwNywgOTM0NywgMTI4MDY3LCA2NTMyLCAwLCAwLCAwLCAxMjcwNjAsIDY1ODI4LCAwLCAyODMsIDY4NjY1LCA3ODgxMywgCi0gICAgNTMyLCA3ODY2MywgMCwgOTgzNzk2LCAxMjA2MDksIDAsIDMzNzAsIDAsIDExMzYxLCA1NDQzLCA3ODc3OCwgODE1MywgCi0gICAgNzM3NjcsIDAsIDEwNzQxLCAwLCAyMjk4LCAwLCA5ODM5MTcsIDY1NDk1LCA2NDcwNiwgOTgzMzE4LCA0MzM0NCwgOTgzMzE2LCAKLSAgICA3MTQ0LCA5NDY2LCA3ODg2NiwgOTgyNCwgOTgzMzExLCA5ODMzMTAsIDAsIDAsIDkxNSwgNDM0MjUsIDAsIDAsIDAsIDAsIAotICAgIDEyNzE3OCwgNDMyNjQsIDcwMDk2LCAwLCAwLCA0MzAzOCwgNzg4NjQsIDY3MzAsIDc4ODYyLCA2ODE2MSwgNjQ1NTAsIAotICAgIDUxODYsIDczNjAsIDEyNzgzNywgMCwgMTIxMDgsIDAsIDY1MTI0LCA0MzEyNywgNjYwNDMsIDAsIDYzMjYsIDQzMTA3LCAKLSAgICA3NzgyNiwgMCwgNDI1NjIsIDAsIDEyODgyMSwgMCwgMTI4NTIwLCAxMTQ4NSwgNjEwMywgMTI3MTIzLCA5ODMzMDUsIAotICAgIDExNzE4LCA5ODMzMDMsIDEyODg5LCA5MjY1NywgMTI3MTM3LCAwLCAwLCAwLCA1NTI0NSwgMCwgMTYzMCwgMTI4MjMyLCAKLSAgICA2NTQ4MywgMCwgMTI1NjUsIDAsIDY1NDc2LCAxMjAwMTMsIDAsIDExOTU1NCwgOTI4MywgNzcwMCwgOTE3NTM3LCA5NjkwLCAKLSAgICA2NTQ5OSwgMCwgNjQ1OTMsIDUxMiwgMzM3NiwgNjgyMTAsIDAsIDEyODY3NywgNzc4OTIsIDYzMiwgMTI5NDAsIDc3ODkxLCAKLSAgICA0MjUyOSwgNzg1ODcsIDAsIDU5NTcsIDExMDU5MywgODkyNiwgOTgzMjk5LCA5ODMyOTgsIDEyODI3MywgMTA3NDUsIAotICAgIDEwMTc0LCA3Mzc5LCA2NDU4MSwgNTM4NiwgMTIwNjg2LCAxMTcxMywgMTA2MzMsIDY5NzA4LCA1MDU2LCAwLCAwLCAwLCAKLSAgICAxMjA3NzMsIDAsIDk4MTIsIDAsIDQ0NjAsIDAsIDAsIDcxMzA3LCAxMjgwMzgsIDAsIDAsIDEyNzE3NCwgNjQyNzgsIAotICAgIDkyMzcwLCA0MzQ2NiwgMCwgMCwgNjQzODksIDI5NTMsIDczODc5LCAxODAxLCAxMjgzNSwgMTE5MDI5LCAwLCA3MzgyMywgMCwgCi0gICAgNjYzNzUsIDIwODUsIDcwMiwgNDI1NzksIDc3ODg0LCA3Nzg4NSwgMTMwNzQsIDc3ODgzLCA5ODMyODYsIDk4MzI4NSwgCi0gICAgMTI4NTcwLCAxMjEwNiwgOTgzMjgyLCA3NDIwNywgMTc1NSwgMTA0ODIsIDEyODYzLCA3Nzg5OCwgMTE2MywgMjk1MSwgCi0gICAgOTUyMiwgNzQwNzksIDc4MjY2LCA2NjYwNCwgMCwgMzM4NCwgNjkyMjcsIDEwNzAyLCA4MzAsIDc3OTAyLCA3Nzg5OSwgCi0gICAgNzc5MDAsIDg0NTEsIDAsIDAsIDAsIDY5NzM5LCAwLCAwLCAwLCAwLCAyOTA4LCAwLCA0MzM4NiwgNjQ5MDIsIDQyNDMsIDAsIAotICAgIDEyMjM5LCAwLCAwLCA0NDQxLCAwLCA5ODMyNzksIDczOTQwLCA2NDM1MiwgMTI3NTEzLCA5ODMyNzUsIDQxMSwgOTgzMjczLCAKLSAgICA5MTk5LCA5ODMyNzEsIDQwNTYsIDExODk5MiwgNDE4OTAsIDAsIDI3MzAsIDQxNjA0LCA5ODM5MzcsIDU0MjgsIDE5NDc0MywgCi0gICAgMzM2NCwgNDIyNjUsIDY0NDM3LCAxMjc5MzUsIDExODgxNiwgMTk0NzQyLCA5Njg0LCAyMTYsIDAsIDE0MDEsIDEyODA1MywgCi0gICAgNDQwMTIsIDAsIDAsIDkyNTg1LCA5MTU4LCA3Nzg0MiwgNjk5MDUsIDU3NjgsIDAsIDAsIDAsIDQ4NCwgMTk0NzM5LCAwLCAwLCAKLSAgICA2NTg5NSwgMCwgMCwgMzMzOCwgNzM5MzUsIDU3MiwgNzA0MSwgMjczNiwgNjc2MDUsIDk4MzI2MywgOTM5NjIsIDI3OTQsIAotICAgIDg4MDcsIDY0NDkxLCA3Nzg0NywgNTQzOCwgNTIyMiwgNTM4MSwgNDMxMTQsIDAsIDUxOTMsIDUxMjUsIDU0NTYsIDU1MDksIAotICAgIDc3ODQ2LCAxOTQ3NDcsIDk1MzQsIDAsIDAsIDAsIDM0MzAsIDAsIDAsIDc4NzE3LCAwLCA5ODEsIDAsIDQzMzAsIDczOTI5LCAKLSAgICAxMjA1MzYsIDE4MjQsIDEwOTA4LCAwLCA3MDM0LCA0MTY4MywgNjQ2MTcsIDAsIDczNzU0LCAzOTU3LCA2NDM1OCwgNjQ1NDcsIAotICAgIDEyODI1OSwgNjc0LCA2Mzk5MSwgOTgzMjQ5LCAyOTQ2LCA1MzU0LCA1MjUxLCA1MzI4LCA1MzA3LCAzNzU5LCAxMTQxMSwgCi0gICAgODM2NCwgNTEyMywgMTE5NjI4LCA1MjgxLCA1NDY5LCA1MTIxLCAxMTkyNDUsIDExODk5MywgMCwgNTEzMCwgMCwgMCwgCi0gICAgNzc5OTAsIDAsIDEyMDcyNiwgMTIyMSwgMjczMywgMTE3NDYsIDc3OTkxLCA1MjE2LCAwLCAwLCAwLCAwLCAzNDY4LCA3MDMzLCAKLSAgICA5MjMwLCA1OTM5LCAxOTUwNTIsIDAsIDAsIDEyMDY3NywgNjg0MDAsIDcyNzgsIDEwMzIxLCAxMDI4OSwgNjQ2MTMsIAotICAgIDEwMzg1LCA0MTcwNiwgMCwgMCwgOTgzNDEzLCAwLCAxMTczOSwgOTgzNDI2LCA0MTk4MSwgMCwgNTkzOCwgMCwgNDM3NjYsIAotICAgIDEyNDQ4LCA3NTc2LCAxMDQwMSwgMTAzMzcsIDczODUyLCAwLCAxMzA1NywgMCwgMTI2OTc2LCAwLCAxMDAwOSwgMCwgCi0gICAgNDE3MDMsIDk4MzYzOCwgMTIxNjUsIDAsIDAsIDk4ODUsIDAsIDgwNzcsIDAsIDEyNzkwOCwgMCwgMCwgMCwgOTI0NTcsIDAsIAotICAgIDQyMjAsIDEwNzI1LCAxMDQzMywgMCwgNjgzOTUsIDQ5ODcsIDY0NTE5LCAwLCAxMjgzNDAsIDAsIDAsIDAsIDEwOTcwLCAKLSAgICAxMTczMywgMCwgMTIwNzkyLCAwLCAxOTk0NCwgMCwgOTAwOSwgODU1MSwgOTIzNDUsIDExNDY4LCA2NDYzNiwgNzU3NSwgMCwgCi0gICAgMjcyNCwgMCwgMCwgMTIzMTMsIDExMDU5MiwgNTE1LCAxMTk5NDcsIDQyNzkxLCA2Mzk4NywgNzgyODYsIDExOTk0MywgCi0gICAgMTE5OTQwLCAxMTk5NDEsIDExOTkzOCwgOTc3NSwgNDA0NiwgNDU4OSwgNDUyMSwgNjg2MjksIDkxNDEsIDAsIDc4ODUwLCAKLSAgICAyNzQxLCA2NDM5OSwgNjE5NywgMTM3MCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE4NCwgODYwNiwgMzMwMywgNDEzNzIsIAotICAgIDExNzg2LCA5NDczLCA2NjIwMywgNjYxNzcsIDkyNDQ2LCAxMTU5MywgNDMwMDcsIDQ0NzgsIDY2MTc4LCAwLCAwLCAyNzQ0LCAKLSAgICAwLCA0NDc3LCAxMTg5NjQsIDgxNCwgNDIwNjYsIDY2MTgzLCA2NjIwNCwgNDM3ODYsIDExOTk2MSwgNjYxOTgsIDQxODgwLCAKLSAgICA2NjE4OCwgMTE2MjMsIDc4MTQ4LCAxMTk1NSwgNjYxOTAsIDY2MTkxLCA0MTExMSwgNjYxODksIDczNzg4LCA3Nzg4LCAKLSAgICA0ODQ3LCAwLCAxMjc3NTksIDAsIDAsIDAsIDE1ODEsIDY1MzUsIDc4MTYxLCAxMjk1NCwgNDMwLCA3ODE2MCwgNTUyNTksIAotICAgIDc4MTU4LCAxMjgwMzYsIDUyNzgsIDQ5NDUsIDQyODgzLCA0OTUwLCA5ODM0MzgsIDY4NjI1LCA5ODM0MzYsIDcyNjksIDAsIAotICAgIDU5NjQsIDEyOTA4LCA5ODM1NTUsIDAsIDc0NzY0LCA3NDQ3NywgMTE5MTQ2LCAxOTQ5MzYsIDQ5NDksIDk4MzQyOSwgNDQzLCAKLSAgICA5ODM0MjcsIDQ5NDQsIDU0NjcsIDExOTYwMywgOTgzMjU0LCA2NTEzNywgNjA0NCwgNjUzOTIsIDAsIDQyMTMsIDAsIAotICAgIDQxMzAzLCAwLCAxOTQ5MzEsIDExOTk2MiwgNDEzMDYsIDczOTg0LCAyNjk4LCAxMjcxNTksIDAsIDEyMDcyLCAzMTkzLCAwLCAKLSAgICA0MTMwNCwgODI0LCAxMjg2NzYsIDEyMDkxLCA3ODg5MywgNzg4OTQsIDExOTgxNiwgNDY3MywgNjQ4MDQsIDQ2NzgsIAotICAgIDExOTgyMCwgMTE5ODE5LCA2NTA1OSwgMCwgNjczOSwgMCwgNTQ4MSwgMzQ5MCwgMTE5OSwgMTE5ODExLCA4MzU2LCA2OTk0NywgCi0gICAgMTE5ODMyLCA0Njc3LCAxMjY4OCwgMzEwMiwgMCwgNDY3MiwgNzgxNzMsIDc4MTc1LCA1NTMxLCA2ODM2NywgNDI1NzUsIAotICAgIDc4MTcwLCA3ODE2NiwgNDY3NCwgNDU0OCwgNDQwMDUsIDExOTk0OSwgNjg2NTgsIDExOTk0NiwgODAyNSwgNjg2MzAsIAotICAgIDEyNzAyNCwgMTg1NSwgOTgzNDEyLCA2ODY2OSwgOTgzNDEwLCA5MjQ0NSwgMTI3NTU0LCAwLCAxMjczMzksIDExOTY1MiwgCi0gICAgMjc0NSwgMTE3OTcsIDk4MzQxOCwgMTI4MTU5LCA5MjAyLCA0NjU0LCA5ODM0MTQsIDk4MzQxNiwgNjg2MzgsIDczOTkzLCAKLSAgICAxMDUyNSwgNDY0OSwgNjUyMDksIDk4MzQxNywgMCwgNDY0OCwgNDMwODAsIDk4MzQwNiwgOTgzNDA3LCA5ODM0MDQsIDYyNDYsIAotICAgIDY0OTUwLCA3ODI4LCA0NjUwLCA2Nzc3LCA2Nzc2LCA2Nzc1LCA0NjUzLCA3ODIyLCA3ODAwNSwgOTIzODQsIDQzMTg3LCAKLSAgICA4NjY5LCA5ODM0MTUsIDY4MjEsIDY1MDkzLCAwLCA3ODg4MSwgMjcxNiwgMCwgOTgzMDYwLCA5ODM0MTksIDAsIDY4MzY5LCAKLSAgICAxMjAwNTQsIDExMDYwLCA4NTQ3LCAyNzExLCA0MjE2NSwgNzgwMjcsIDc4MDI2LCA3OTkyLCAwLCAwLCA0NjYyLCA3ODAzMywgCi0gICAgNzgwMzIsIDkxNDksIDkxNDYsIDU5OSwgMjA4MSwgNzgwMzEsIDc4MDMwLCAxOTQ5NjIsIDQ2NTYsIDEwMTMwLCA2ODQ1MCwgCi0gICAgNzgxMSwgNDA5OTQsIDE5NDk2NSwgNjQxNCwgNTk2NywgNDY1OCwgMzcyNSwgNTcxMywgNTgxNCwgNDY2MSwgNDI0MzQsIAotICAgIDk4MzQxMSwgMCwgMCwgNjQ5MDQsIDkwMjYsIDEwODMzLCA3NDg2NCwgNzU0NywgNDg2NywgMCwgMTAwMDgsIDEwMjIyLCAKLSAgICAzMDU0LCAxOTQ5NTYsIDk3NDQsIDc4ODYwLCA3NjA1LCA0NjIyLCAxMTk2NTYsIDk4MzM5NSwgOTQwNzAsIDk4MzM5MywgCi0gICAgOTgzMzk0LCA5ODMzOTEsIDkwNDUsIDc4ODg4LCA0MjI1LCAxOTkyNiwgNzg4ODcsIDEyODgwLCA2NTMwNywgNDYxNywgCi0gICAgNzg4ODMsIDk4MzM4NiwgNDE3MzIsIDQ2MTYsIDEwNTE4LCAxMDQyMywgMTAzNTksIDk4MzM4MCwgNTk1OCwgMCwgOTgzNDMzLCAKLSAgICA0MjE1LCA5Nzg5LCA5MTc5NDEsIDQzMjEsIDQ2MjEsIDk4MzM4OSwgNDEzMTMsIDUyMiwgNTM2OCwgMCwgNjU4MDMsIDAsIAotICAgIDUzNjYsIDEyMjAxLCA1MzcyLCAwLCA5ODM0MDksIDAsIDc3MjAsIDczOTAsIDI2OTYsIDk4MzQwMCwgMCwgNDYzOCwgCi0gICAgOTgzNDA1LCAxNzkwLCA3ODI0MiwgNTk2NSwgNjQzNjMsIDY2NTY5LCA2ODY0NiwgMTI3ODMzLCA1Mzc2LCAxODM1LCA1MzM1LCAKLSAgICAxOTQ5NjYsIDEyODA4OSwgNDYzMywgMCwgNjgxMTksIDExODAsIDQ2MzIsIDEyODA5MywgNTM4NywgNTMzMywgMCwgMCwgCi0gICAgNDIwOTQsIDUzMzEsIDQ2MzQsIDExOTI4LCA5ODM1OTQsIDUzMzgsIDQ2MzcsIDEyODE3MCwgNTk3MSwgNDI0MTQsIDAsIAotICAgIDEyNjgsIDY1MDk3LCA0MjM2MSwgMCwgMCwgNzM4NTMsIDE0MjcsIDAsIDAsIDU5NzAsIDM0MzEsIDAsIDEwMzU4LCAxMDQyMiwgCi0gICAgNDc1OCwgOTgzMzc0LCAxNjA4LCAyNzM4LCAwLCAxMDQ1NSwgNDc1MywgNzQwMjYsIDExMzQ0LCA0MjIyLCA2MjQwLCA1MjMxLCAKLSAgICA3NDM4NCwgOTgzMzc4LCA2ODM3NywgNjI0OCwgOTgzMzYyLCA5ODMzNjMsIDk4MzM2MCwgNDIzMTgsIDkyNTgyLCA1MjI5LCAKLSAgICA0NzU3LCAwLCAwLCAyNzI4LCA0NzUyLCA2NDU2MywgNjUyMzUsIDUyMzQsIDAsIDEyODE0NSwgMCwgMTA3MTMsIDcxNjYsIDAsIAotICAgIDI2MjIsIDc0NjAsIDEyNzMwMiwgMCwgMCwgODk1NCwgNzQ3NjAsIDY1MTg5LCAyNjMyLCA0MjYxNywgMTAxMDgsIDEwMTEsIAotICAgIDU1NzQsIDE4NTMsIDI3MDksIDY1MTM5LCA1NTc3LCAwLCAwLCAxMTg4NzEsIDY4NjQxLCA4OTY1LCA3NjM1LCA0MjE3NywgCi0gICAgNTMxNiwgMCwgNTMxNCwgNjQ1MSwgNTU3MiwgNjY0NjQsIDUzMTIsIDAsIDU1MjUsIDUzMzAsIDUzMTksIDk4MzQyMCwgCi0gICAgOTgzODcyLCAxOTQ5MDcsIDQ0MDAzLCAwLCA5ODM0ODAsIDk4MzQyMywgMTIwNDk4LCAxMjc4NTEsIDE5NTAwOSwgOTgzODY1LCAKLSAgICA3NDAyMiwgOTgzNDIyLCA2NDYwOSwgNjg2NDMsIDEyMDYzNCwgOTgzNDg5LCA1NzIxLCA5ODM0MDEsIDU1MTksIDg2MzIsIAotICAgIDY2NDY1LCAxMTI2NywgNzM5NjEsIDkyMjc4LCA1NzIwLCA5ODMzNTIsIDE2OTIsIDQyMTksIDQ2MTAsIDg2OTYsIDQzMDUsIAotICAgIDAsIDQ2MDksIDQzNDc4LCA0NjE0LCA1NDEsIDk4MzM1NSwgNTI4NywgNTMwOSwgNTI4NSwgNjgzODksIDU5NjEsIDQ2NDcsIAotICAgIDU2LCA0MjE2LCAxMDU3NywgNDEzODEsIDYwMSwgNDYxMywgOTgzMzQ5LCA5ODMzNDYsIDc3ODQ5LCA0NjA4LCA2NDI2MCwgCi0gICAgNDExMjQsIDUxOTAsIDY3NjI4LCAwLCA2ODE0NSwgNzA4NiwgMCwgNjc5OTgsIDY3NjIwLCAwLCAyNzM0LCAxMTA3NCwgMCwgCi0gICAgNjc2MjcsIDQzNTkzLCAwLCA2NzYyNSwgNTk2MCwgMCwgODk5MiwgNDI1OTMsIDEyODI2MCwgMTc4MiwgNjc2MjIsIDY4MTE0LCAKLSAgICAxMTk5MzksIDAsIDY4MTgwLCA1NTAxLCAxMTk5NTIsIDQyNTA4LCA3NDQyLCA0MzY2NSwgMzU5LCA0MTI1MywgNjgzOTIsIAotICAgIDYyMzksIDExOTk1NiwgNDEyNTYsIDAsIDY4MTM0LCAwLCA3NDIwOSwgOTE3NTUwLCA5MzQ2LCA2OTY2MCwgNDEyNTQsIAotICAgIDEyODA0NywgNDMyOTEsIDM3NjcsIDU3MzcsIDAsIDQ4NjUsIDAsIDU3NDAsIDkxNzk5NywgNTczNiwgNDM2OCwgNjQ3MjQsIAotICAgIDcxOTMsIDY4MTM3LCAwLCA1NzM5LCA0MTAyNCwgNDg2NiwgMCwgNzM5MDQsIDk4Mzg0MCwgNDg2OSwgMTIwNTYzLCAwLCAKLSAgICA0MjIzLCAxMjgyMDEsIDY2NTAsIDEyNjUwOSwgMCwgOTgzNDYzLCAxMjc4OTAsIDQ4NzAsIDEyMDQ0NSwgNjg2NjEsIDY3MTYsIAotICAgIDc4MTc2LCA2ODY2NywgNjgzODIsIDY4Njc2LCAxMjc5MjUsIDEwMTIyLCA0ODY0LCA2NjU2OCwgNDE0NCwgNzkzNywgMCwgCi0gICAgNjI0NSwgNjg2NTIsIDI3MzIsIDQyNzM0LCA3NDUsIDAsIDE5NTA5NywgOTIxOTUsIDQ3NzcsIDc4MjEsIDAsIDY4NjMxLCAKLSAgICA0Mjc3NSwgMCwgMTk0OTU0LCAwLCAzMDk3LCAwLCA1OTY2LCA5ODM0ODYsIDQ3NzgsIDAsIDEwODYzLCAwLCA0NzgxLCAwLCAKLSAgICA2NDQwNywgMCwgMTI4MzIzLCA4NTc3LCAxMjg1NjIsIDY4MTk2LCA0MzI4NSwgMTAyMTYsIDQ3ODIsIDAsIDAsIDEyMDc1NywgCi0gICAgNjg2MTgsIDEyMzI1LCA0MzA1NiwgODcxNywgMCwgMCwgNDc3NiwgNzM4MTgsIDExNDkyLCA4NzAwLCAwLCAxMzE3NiwgCi0gICAgNjgzNjMsIDEwNDI2LCAwLCA5MTc1OTksIDEwMzYyLCAxOTQ3MDYsIDE3MTUsIDQ4NDksIDgyNDIsIDk1NjEsIDczOTIyLCAKLSAgICA0MzI3OCwgNDI2MzUsIDAsIDAsIDU5NjMsIDkxNzkyNiwgMCwgMCwgNDg1MCwgMCwgMTYwNywgNDY2LCA0ODUzLCAxMTg5OTUsIAotICAgIDQ4NTQsIDEyNzkxOCwgNTE2NCwgOTgzODcwLCAxMzUwLCA1MTI0LCA2NDQyMCwgMTk5MywgNTM2MiwgODQ3MSwgMjcwOCwgCi0gICAgOTI0NzEsIDEyNDQ1LCAzNzg1LCAyMzQsIDMxOTksIDAsIDQxMjY4LCA0ODQ4LCAyNTMwLCA5MTc5MDksIDIwNjgsIDE5NjQsIAotICAgIDAsIDczNzYyLCAxMDQ1OCwgMCwgODU3NiwgNzg1NDMsIDAsIDI3MDQsIDQ3OTQsIDAsIDY4MjExLCA4MzIyLCA0Nzk3LCAKLSAgICA1NzUzLCAwLCAyNjk0LCA0NzkyLCAwLCAyNDM5LCA2NTEwNCwgNjk4MDQsIDk4MzQyNCwgMzAzLCA5ODMxMDEsIDkyNjIyLCAKLSAgICA5ODM0MjUsIDI0MzcsIDAsIDQyMjEsIDQ4NDQsIDkyMjE2LCAwLCAwLCAwLCA3MDA0MiwgMCwgNDMyOTIsIDAsIDI0NDEsIAotICAgIDEwNzM5LCA2NTA5MCwgMCwgMTE5MzI3LCAxMjY1NDEsIDI0NTEsIDI3MTQsIDExOTMyNiwgMCwgNDMzNzksIDQ5MzcsIAotICAgIDQzMzc2LCA3NTMsIDU4NDksIDEwNTk3LCA0MzA4OSwgMTE3MjIsIDkyNDgsIDkyNTU1LCA0Mjg3OSwgMTE3MjUsIDAsIDAsIAotICAgIDI3MjYsIDMxMDcsIDczOTU4LCA0OTQxLCA2NDkzNywgMTE5MjMzLCA5MTQwLCAxNDA4LCA1MjYxLCA0NjA3LCAwLCAxODEsIAotICAgIDk4MzQzMCwgNDk0MiwgOTUzOSwgNDkzOCwgMCwgNjUyMDEsIDUyNTksIDkzNjksIDY0MTg1LCA0MTQyLCA1MjU3LCAKLSAgICA5ODM2MDEsIDAsIDQ5NjQsIDUyNjQsIDY0MTc4LCA2NDE3NywgMTI5NzksIDQxNDExLCA2NDE4MiwgNjQxODEsIDY0MTgwLCAKLSAgICA2NDE3OSwgOTQ4MiwgNDg3MywgNDEyMzEsIDE4MjIsIDQyNTI2LCAxMjg1ODEsIDEyNzU4LCAzODY1LCAwLCAwLCAxMDUwMCwgCi0gICAgMCwgMTE5MDI0LCA3ODAyOCwgOTI0MDgsIDk4MzAsIDQzNjQyLCAzODksIDEwODkzLCA3NTIxLCAxMjc4NzksIDQ4NzIsIAotICAgIDU0NjMsIDAsIDMxMjUsIDk1NjcsIDAsIDQ4NzgsIDU0NTksIDQ2MDQsIDkxNzkzMSwgOTU1NywgNTQ2NSwgNjg2MTcsIDAsIAotICAgIDExNDk0LCAxMjY0OTIsIDk1NjMsIDEwODY1LCA3NDU3MCwgNDMyNzksIDY0MTg2LCA5ODM0MzksIDc4NzE0LCA2NDE5MSwgCi0gICAgNjQxOTAsIDg4OTgsIDY0MTg4LCAwLCA0MTAzMCwgNzg4MzYsIDAsIDkxNzgzNSwgNzg4MjAsIDkxNzgzNCwgMCwgNzg4MDUsIAotICAgIDQxMDMxLCA3ODgwMSwgMTE5NjAsIDY3NDUsIDMwODIsIDk4MzQzNywgNzg1MzksIDczOTE5LCAxMDU3MywgNDE3NDQsIAotICAgIDcwNzksIDU4NTYsIDEyNzA0MywgNTE2MywgNzg4MDksIDEyODE2MiwgMTgxNywgNjY3MjQsIDc4NTM4LCAwLCAxMDU2NCwgCi0gICAgNzc2MywgMTMwNzcsIDQxODEzLCA0NDAwLCA0MTc0NSwgNjQyMDcsIDEwMjc1LCA4OTI1LCAxMDM3MSwgMTAzMDcsIDQxODE0LCAKLSAgICA0MjQ4LCAwLCAwLCA0NTQxLCA2Mjk5LCA2NDIwNCwgNjQyMDMsIDY0MjAxLCA2NDIwMCwgNjQxOTksIDY0MTk4LCAxMjY0NzEsIAorICAgIDc3ODM2LCA2NDUyOCwgMTE2OSwgNDM0LCA0MTQzNywgMTkwNSwgNjAzNCwgNDExNjQsIDY0NzQ0LCA5NTI4LCA2Nzc0MSwgCisgICAgMTI4ODAwLCA1MjQsIDAsIDc0MDI5LCA3ODgsIDc0MDI3LCAxOTQ2NjcsIDcxODgxLCAwLCAxNjYzLCAxMDQxOSwgNDI5MDEsIAorICAgIDQyNjM2LCA2NzIxMSwgNjcyMTAsIDEyOTE0NywgMTIwNjU2LCA2NzIxNSwgNjcyMTQsIDY3MjEzLCA2NzIxMiwgMCwgCisgICAgNjc4OTcsIDc0MDM5LCAwLCAwLCAxMTM5NSwgMCwgMTE5MTA3LCA0MzYxMiwgNjQzNDQsIDE5NDczMiwgMCwgMTA4NTUsIAorICAgIDU0NDUsIDkzNTUsIDY3MjIxLCA2NTE5OCwgNzM5MSwgODk4OSwgMjIxLCA2NTY4NiwgOTgzODc0LCAxMTkyMzgsIDgwMTAsIAorICAgIDcxOTEsIDQ5NjIsIDY5NzcyLCA4ODU1LCA3NDYxMiwgNzA4MjAsIDY0NDY5LCA5MjU5MiwgMTA1NTUsIDY3MjI3LCA0MzMzMywgCisgICAgNjcyMjUsIDEyODQ4MywgMTIwNDI3LCAxMDQ1MSwgNjcyMjksIDY3NjUzLCA3MjQ1LCAxMjQ0MywgNzQ0MDUsIDk5NDcsIAorICAgIDEyMDE0OSwgNzgzMTcsIDM4NzMsIDgzNjcsIDc3ODQyLCAxMjAxNDYsIDQzNDMzLCA0MzY0OSwgMTE5ODcsIDgzMzQzLCAKKyAgICA5ODM1ODEsIDExMDEwLCAxMTE2NCwgNzQwNTksIDc0MDYyLCA2MjE3LCA1ODk2LCA0Mzg0NiwgNzY4MiwgNzQwNDksIDE0NjIsIAorICAgIDEwMjM1LCAwLCAwLCA5ODMzMjUsIDQzNDQxLCAxMjc5MjQsIDEyNzc3NywgNDI1OTUsIDEyNjY0MSwgNzQ0MDIsIDExODg2MCwgCisgICAgNzg2NjEsIDEyMDQxOSwgOTI0OTcsIDY2Mjg3LCAxMjA0MjAsIDkyMzc4LCAxMjA1NDksIDExOTA4MiwgNjQyOTUsIAorICAgIDEyMDQxOCwgMCwgNjQ3NjUsIDczOTIzLCA4MzIxMCwgMTIwNjYyLCA2OTkyMCwgMTk0NzAyLCA2MjE2LCA2NzIzMCwgCisgICAgMTA3NTUsIDk0NTUsIDExMTU1LCA4MTI0LCAxMjcwNDIsIDk0NzAsIDY5NDQsIDEyMTEyNSwgMCwgNjk2ODAsIDI4MjgsIDAsIAorICAgIDUzMSwgNDI2MzgsIDE5NDgwNCwgOTE3ODU2LCAxMjA5NjEsIDQzNDI4LCA4MjA0LCAzNjE0LCAyODI3LCA5Njk2LCAKKyAgICAxMjAzNjUsIDAsIDg3MjgsIDQzNTQsIDEwOTA0LCA3ODU2MiwgMTk5MzYsIDc4MzMsIDEyMDY5MSwgMTIwODUwLCA0MjU5OSwgCisgICAgNDI1OTcsIDQyNzA5LCA2ODgyOSwgMTI1MDEyLCAwLCA4NTM3LCAxMjczMDYsIDAsIDkzNTQsIDEyMTI0NCwgMTIxMzQ4LCAKKyAgICA0MTE5OSwgMTAxMjEsIDIwMjgsIDc0OTUwLCAxMjAyNTMsIDY5NzE1LCAxMjg1MjUsIDMwNjIsIDAsIDc0NDQ3LCAxMjYwOCwgCisgICAgOTgzNjU3LCA2NjQ0MCwgNzU0NSwgOTcwMCwgMTE5NDgsIDkyMjA1LCAxMjA3NzcsIDEyMDUwMiwgNDExNTUsIDY4MzA2LCAKKyAgICA3NDA3MSwgMCwgOTgzNDU5LCAxMjcxMywgMTI3NTE5LCA3MDQwMiwgMCwgNzg3NzIsIDExMzc3MCwgMTczNCwgMCwgNzgxNDEsIAorICAgIDEyNzA0MCwgNjQ1OTQsIDI0NTYsIDIzMSwgNjgyMjcsIDc0MTY3LCA1NDIsIDkxNzk4MSwgMTE4Nzg2LCA5ODM4NTksIAorICAgIDE5NDc5NywgMTIzMCwgMTI1MDE4LCAxMjEzNDMsIDM1OTcsIDQ0NDYsIDEwNTg0LCA3NDIzNSwgOTIyMTUsIDQwMzcsIAorICAgIDY3NzM3LCA4MzUyLCA3ODQzNiwgNTY4NywgMTI3MDE4LCA2NDUxNSwgMTIxMzc4LCAxOTQ4MDEsIDU1MjY1LCA2Nzg0NiwgCisgICAgNzg0MzQsIDk3MDQsIDAsIDE5NDU3MywgNzAwODAsIDcxMzM4LCAwLCA4NjYwLCAxMjY0NzgsIDAsIDEyODU2OSwgNzg3NzMsIAorICAgIDc0NDgyLCA0NDgzLCAxNzA5LCA2OTcyMSwgOTkwOSwgNjA4MCwgMTk0ODUxLCAxMjAzNTgsIDE3NDYsIDEzMTUsIDg2NjcsIAorICAgIDk4MzEwMSwgMCwgMTMxNDAsIDY1ODk5LCAxMDYwNCwgMCwgNDQ4MCwgMTEyNjYsIDEyMTExNCwgMTIyNiwgNjkzMCwgCisgICAgNjc5NzksIDE5NTAxOSwgNjM2MCwgMTA4OTcsIDQxMjMwLCA2MDUsIDY4MzAyLCA3NDc4NSwgNjk4NzUsIDAsIDEyMTQ3OCwgCisgICAgNDE1MDAsIDAsIDMxMSwgMTE0NTMsIDYyMjEsIDEwNjA4LCA2NDk0MywgNjc2ODIsIDEwODc3LCAxMTg4NjgsIDY0ODg1LCAKKyAgICA3NDI3MiwgMCwgMTk0NjcyLCAxMjg1NTksIDEyMDczNiwgNzQzMTIsIDM0NSwgMTI0OTMzLCA3NDQ1NiwgNjQ2MDYsIDk5MTcsIAorICAgIDAsIDc0ODU1LCA1MDM3LCAxMTk5MTIsIDE3NzYsIDg0MjIsIDEyODkzNSwgMTE4ODE0LCA0MTUwOCwgNDEyMDEsIDMyMywgCisgICAgNDMzMjgsIDAsIDQyNjk4LCAxMjk1LCAxOTQ4NTMsIDQ2MjUsIDc3ODU1LCA0NjMwLCAxMzExNywgODMwMDIsIDEyODc3MiwgCisgICAgNjUxMjMsIDExMjkzLCAyNjY4LCAxMTI4OCwgMCwgNDI2NDAsIDY1NjY2LCAyNTE5LCA5MjM2OSwgNjU0MjAsIDkyNDc5LCAwLCAKKyAgICA0MjUyLCA1MDQ5LCA0MjY1OSwgMTE5MDExLCA3MDYsIDc3NTQsIDEwODU0LCA4NzM4LCA5ODM5NDksIDY1NDE5LCAwLCAKKyAgICAxMjg0OTYsIDY0OSwgNjU0MjEsIDAsIDY2NzAyLCA5ODM3MjEsIDEyNjcwLCAxMDEzLCAwLCA2NDkxOSwgNzA1LCAwLCAKKyAgICA2NTQyMiwgMTI3ODAzLCAxMTgzLCAxMjY1MTksIDcwMTcsIDQyODUyLCA5MTc4MjYsIDgxNTcsIDk3MzYsIDY0NTAzLCAKKyAgICA2NTQxOCwgMTI5MDUwLCA5ODM4NzgsIDc0MDM1LCAxOTQ5MTgsIDExOTEzLCA3Mzg3NCwgNjY5NiwgMTIwOTE2LCA4OTIwLCAKKyAgICAxMTkyOTgsIDEyODQyNiwgNzk2MiwgMTIyMTEsIDk4MzcsIDIwNTEsIDY2MjI3LCAwLCA0MTg0LCAxMTk4MjUsIDEyODU5OCwgCisgICAgMTAxNzcsIDczNzc3LCAxODU3LCAxOTQ2NTcsIDQ2MjYsIDg0NjQsIDg0NzIsIDY4ODQ0LCA0NjI5LCA4NDk5LCA3NDYyNywgCisgICAgNzgzMjIsIDQ2MjQsIDc4MTgsIDExODg2MSwgMTI4MTA4LCAwLCA3ODA1LCAxMjg3NTQsIDk0MDA3LCA2OTM1LCA5MjI5MiwgCisgICAgNzgzMjUsIDc4MzI2LCA3ODMyMywgNDMzMjcsIDQzOTg5LCAxMTkwNDYsIDg0OTIsIDgyNTAsIDg0NTksIDAsIDg0OTcsIAorICAgIDg0OTYsIDgzNDk5LCA3NDU4MiwgNzUwNTIsIDc4MzM5LCA5NTQzLCA2Nzg2MCwgNzgzMzIsIDc3ODMyLCA2NTg0OSwgCisgICAgNzc4MzEsIDk4Mzk2MSwgMTk0NjQ5LCAxMjQ1MSwgNzQzNzYsIDg2ODQsIDEyODMwMSwgNjEwMiwgMCwgNTI5OCwgOTE3ODQ3LCAKKyAgICA1Mjk0LCAwLCA4MzAxNiwgNjgwNDMsIDE5NTA2MiwgOTk0OSwgODMwMTQsIDQzNjE3LCAxMTkyMTUsIDAsIDEyMDczLCAwLCAKKyAgICAxMjg2NDYsIDc3ODYzLCAxMzEwOCwgMTIwNjE3LCAxMTQzOSwgNDE0NjgsIDgzMDEyLCAwLCA1MjkyLCA1NTI3MiwgCisgICAgOTgzODgzLCAxOTM5LCA1MzAyLCAzOTcwLCA5MTc4NzcsIDEyNDU1LCAxNzkzLCAxMjQ5ODIsIDAsIDc1MDM2LCA2NjQzLCAKKyAgICA5MjQ3NywgNjUyNjMsIDAsIDc4MzMwLCA0MTI5MywgNzgzMjgsIDY1OTIzLCA3ODgzNSwgMTMyMTksIDk1NjksIDEyOTA0MSwgCisgICAgNzQzODMsIDAsIDc0MTk3LCAxMjkwODksIDU1MDAsIDg4MTMsIDAsIDEyODYxMiwgNjg4NjAsIDUzMjIsIDEyMDk0NCwgCisgICAgNzgzNDAsIDQzNjMxLCA1MzI0LCA2NjQ0MywgMzc4NCwgNDE2MTQsIDY1MjY5LCA2MjMwLCA3ODM0OSwgNzgzNDUsIDEzMjgyLCAKKyAgICAzMzYwLCA3ODM0NCwgMTE1MjMsIDAsIDkyNDg4LCA5OTI2LCA3MTk3LCAxMjgyNDgsIDY4NDI5LCA0Mjg5NCwgNDE4MjEsIAorICAgIDEyNDksIDc4MzYwLCA3ODM2MSwgNzgzNTYsIDc4MzU4LCA3ODM1MywgNjQ4OTksIDY0NzYzLCA0MTE0OSwgNDE4MDcsIAorICAgIDQzMTYyLCA0MTgxNSwgNDExNTAsIDEyODkxMSwgMTA1NzEsIDEwMDk2LCA2NzE2MSwgNjcxNjAsIDY3MTU5LCA2OTQ3LCAKKyAgICA0MTE1MiwgODg3LCA5MjQ5LCA2NTY1LCA3ODUxMCwgNDE5OTAsIDc4NTA5LCA0MTgxMSwgNjcxNTcsIDkzOTY2LCA2NjcwLCAKKyAgICA2NzE3NSwgNjcxNzQsIDAsIDQzMDkyLCA0MzMyNSwgNjcxNzgsIDEwMTY4LCA2NzE3NiwgOTc4MSwgNjgyNDgsIDkxOTAsIAorICAgIDEyODQ5NywgOTY2NiwgODI2OSwgNjU5NDQsIDc0MDA1LCAxMzAxOSwgMTE2NzAsIDY5ODYwLCAzMTUsIDEyODEzLCAKKyAgICAxMjkxMzIsIDcyNDA5LCA3ODI1NiwgNzI0MDgsIDc4MzUyLCAwLCA3NTA2MywgMCwgMCwgMTM3OCwgOTUwOSwgMTk0NjM0LCAKKyAgICA5Mjk5NiwgNzI0MDcsIDMwNjYsIDkyMjIwLCA2Nzg0NywgNzI0MDYsIDkyMzU1LCA5MTc4OTAsIDc4MzY1LCA4Nzg3LCAKKyAgICA2NzE4OSwgMTk0NjE2LCA0MTYxOCwgMTk0NjE1LCA3ODI2MSwgMTI3Mzg0LCAwLCA2NDY1MiwgMTIxMjIyLCAxMjEwMTIsIDAsIAorICAgIDc4MzY2LCA0MjA4OCwgNzEwNDAsIDE5NTA2MSwgNzE3NiwgNDM3NTYsIDEwMTM3LCA2MTIxLCAxMDk5NSwgNzgyNTksIAorICAgIDcxMDUwLCA4MTE5LCA2NDg3NCwgNzEwNTIsIDc4MTc0LCAxMjg2OTAsIDEyODYzMCwgNzQ1MjUsIDAsIDAsIDEyOTMwLCAKKyAgICAxMzk0LCA3NDUxNCwgMTI4NDEzLCA3NDUxNSwgOTgzNzI3LCA2NzE4NCwgMjk5OCwgOTUyNywgNjcxODEsIDY1MTkwLCAKKyAgICAxMjk3NywgNDIwOTAsIDY3MTg1LCA5ODM2NDcsIDExOTEwMCwgNDEyMzYsIDkyMjM1LCA0MjAwNSwgNDIwMDMsIDQxMjM3LCAKKyAgICA1ODQ4LCA2NzE5MywgNjcxOTIsIDM2NzAsIDY3MTkwLCA2NzE5NywgNjcxOTYsIDY3MTk1LCA3ODkwLCAxMjgwNzAsIAorICAgIDExMjk4LCA0MzMxNSwgOTgzMzE1LCA2MjI5LCAxNTkzLCAwLCAxMjUxMjAsIDYxOSwgNDYzNSwgNjUwODAsIDEyNzE1OCwgCisgICAgMTIxOTQsIDQxMjAsIDY1MzM3LCA2NTMzNiwgMTI4NDA3LCAxMTgwOCwgNjcxOTksIDY3MTk4LCA5MzY2LCA0Mjc5MCwgCisgICAgNDIwMDYsIDExOTExNSwgNjUzMjcsIDY1MzI2LCA2NTMyNSwgMTA3NTcsIDE1MDcsIDQyMjE2LCA2NTMyMSwgNjUzMjAsIAorICAgIDQzOTQ3LCA2NTMzNCwgNDM5NDYsIDY1MzMyLCA2NTMzMSwgNDIwNTksIDY1MzI5LCA0MjY4OSwgOTI0MjcsIDkxMjgsIAorICAgIDk0MDQ1LCA0MjA3MywgNjc4NSwgNjQ1OTAsIDk4MzgzMCwgNDM3MSwgNzE5NiwgNjUzMTgsIDIwMzUsIDY1MzE2LCA0MTA2LCAKKyAgICA2NTMxNCwgNjUzMTMsIDQyMDc0LCAxMjc4NDcsIDQxMjI4LCAxMjA4NjIsIDY1NjA5LCA0MTI0MSwgNzkwMywgNDEyMzksIAorICAgIDQzNTMzLCA3ODQ1OSwgNzE4OSwgMCwgMCwgNDM5NDEsIDEyMzU3LCA0MjgwMiwgNzg0NTAsIDg0ODcsIDkxMzEsIDY2MjkyLCAKKyAgICA0NjE1LCAxMjY5NSwgMTI3NzUyLCAwLCAxMjE3NSwgMCwgNjQ1MzUsIDAsIDc4MDksIDAsIDEyMTM1MSwgNTYyLCAxMjE2OSwgCisgICAgNjU5MCwgNjk3NjIsIDY2NDU1LCA2NDczOCwgMzIxOSwgNjg2NTQsIDEyMTA5NiwgMTI4MjgxLCAxMDM3LCAxMjg2NzcsIAorICAgIDIwMjUsIDEyODI2MywgMTMwOTgsIDc4NDQyLCAxMDYzNywgNDU2OCwgNTQ5LCAxNTcwLCA0MzgzOSwgMjgzNSwgODMwNTIsIAorICAgIDEwNjI0LCA0MzYyMywgMTEwNzIsIDgzMDQ1LCAxMjg1MjMsIDgzMDQ2LCAxMjYwNiwgNzg0MzMsIDI4MjUsIDgzMDQ4LCAKKyAgICAxMDgyNSwgODA3OSwgMjgyMSwgNDEwNDYsIDkyMzI3LCA3MzY1LCA4MzA0MywgMTIwNTkzLCAxMzA3MSwgMTIxMjg4LCA0NTIsIAorICAgIDQxMDQ5LCA0Mjg0MCwgNjM0NiwgMjgzMSwgNTQ2MSwgNzQ1OTYsIDExNDY1LCA1MjEyLCA5MTc5MTcsIDY0NzAzLCAKKyAgICAxMTkxOTEsIDQyMzA4LCA3MTgxLCAwLCA0MTMzMiwgMCwgMTIzMzMsIDQxMDQ3LCAxNjY4LCAxMTk4NDksIDEyMTE1MCwgCisgICAgMTI4Mjc1LCAxMTg3LCA5ODMzODcsIDQyNjI4LCA3ODU3NSwgODI5NTMsIDcxODYzLCA4Mjk1NSwgMzI0MCwgMTI4NTE4LCAKKyAgICAxMjE1MSwgMCwgMTE1OTEsIDQxMDY1LCA1MzIzLCA4MTY2LCAwLCAxMTg5MzIsIDAsIDY2ODI3LCAxNjIzLCA2NTI5NywgCisgICAgMTI4ODU2LCA1NzEsIDAsIDQ5MTgsIDAsIDUyODgsIDEyNzI5NSwgMTU0MSwgNjUwNDgsIDE5MDksIDg4NjQsIDAsIDY2NDAyLCAKKyAgICAxMDczNiwgOTI1MDgsIDExNTcxLCA3NjE1LCA3MDQ3NiwgOTIyOTYsIDQyMzcsIDkyNTc2LCAxMDM1LCA2NTgxNSwgNjgwODMsIAorICAgIDM1NjcsIDcwMSwgNjU5MzYsIDM0ODksIDEyMDg5OSwgNzA0NjIsIDcwMTcyLCAxMTQwMywgMCwgMCwgODI5ODYsIDM3OTYsIAorICAgIDY4MDAsIDcwNDcyLCAzOTk0LCAxMTQyMSwgNzQ2MTEsIDE5NTA3NiwgMTk1MDc4LCA2ODAzNiwgMCwgMCwgNjQ4NTcsIAorICAgIDgzNTA4LCAyODU1LCA3NDQxOCwgNjYzMDgsIDQxNjIxLCA2ODIxNCwgODM1MTMsIDEyNzgxNywgMTA2NTQsIDgyOTQ1LCAKKyAgICAxMTkyMjYsIDEyMTY0LCAzMjQ2LCA3OTA2LCA0Mzk3MiwgNjU4NDcsIDcxODIsIDAsIDEzMDI0LCA2NjI3NiwgNzQyNzAsIAorICAgIDgzMDY5LCAxMjUwOTAsIDEyMTExNSwgMCwgMTQ5NiwgNzQ3LCAwLCA5NDIsIDIzNzgsIDQzMTM2LCA4MzAzMSwgODQ2NiwgCisgICAgODMwNzUsIDkzMjAsIDgwMDEsIDEyMzIsIDgxMzksIDExNjE3LCA3NDYzNywgMCwgMTE0MDksIDY4MzczLCA2MzgyLCAKKyAgICAxMjY1MDAsIDY0NjM0LCA5MjM2MiwgNzAyMDIsIDExNjEyLCA5MzAwOCwgNjc2MDAsIDIzNzQsIDk0MDY2LCA4NDc1LCAKKyAgICAxMTYwOSwgNjYzMTMsIDkyNTY4LCAwLCA1Mjg2LCAxMTkyOTcsIDgzMDU5LCA5ODMyNTMsIDY0OTI1LCAxMjAyODMsIAorICAgIDEyNzIwNCwgMTE4OTgyLCA3MTkwNSwgNzcwNSwgMTE5NDIsIDExMzA1LCAxMjcyMDMsIDMzMDksIDgyOTc5LCA5MjA2LCAKKyAgICA4Mjk4MCwgMTEzODI0LCA2ODAyLCA3MDM1MywgNDE2NTMsIDEyODAsIDEyNDEsIDcxNjgsIDEyMDk2LCAwLCA2NjYxNSwgCisgICAgNDI1NjUsIDQxNjUxLCAwLCA5MTc2MjcsIDgzMDQyLCA0MTY1MCwgNjY1MDcsIDY2NDcwLCA3NDQ3MiwgMTI5MTQsIDQxNDkxLCAKKyAgICA0MzkwMSwgOTQxMDYsIDYwNzgsIDk5NTQsIDc4ODIyLCAxNDc1LCAxMTkyNDcsIDk5MzgsIDYwODQsIDkxNzU0NiwgNDEwNjQsIAorICAgIDQxMDYyLCAwLCAxMTM2ODAsIDMyNTYsIDEwMTg5LCA0MjA3NiwgNDMyNTIsIDc4ODIzLCA2ODA4OSwgODcyNywgMTIwOTIyLCAKKyAgICA2NTg3NSwgMCwgMCwgMTI3NzYyLCAxMDU2MiwgNzQyMTUsIDQzMDY1LCAxMjA5MDYsIDAsIDMyNDgsIDc0Mjk3LCAzMjYxLCAKKyAgICA5MDE1LCA3MTM1MSwgMCwgMzYzNSwgNjQzMzcsIDkyNzU5LCAxMjUwNTQsIDAsIDcxOTUsIDgzMzQ2LCAyMDA3LCA2NDQzMSwgCisgICAgMTk1MDc1LCAwLCA5MjE5NywgMTI3MDkwLCA2MzUsIDAsIDEyOTA4MiwgNjU2MTMsIDc3OTA5LCA5MjQyMCwgNzM5OTcsIAorICAgIDEyODUxMCwgMTIxNDU3LCA0MzkwNSwgNzk4NCwgODYwMCwgNzQ0MzQsIDEyNzc3MCwgNDE3NiwgNzAwNTAsIDIwMzQsIAorICAgIDc4NDIzLCAxMTE1NCwgNjU4OTEsIDEyNzAzOCwgMCwgMzE4LCAyMDM4LCAxMjg1NDQsIDc4NTk2LCAxOTQ2MDIsIDM2NDksIAorICAgIDEzMTQ5LCA0MjE0NSwgNDI3OTgsIDM2MzQsIDEyMDI5MSwgNzE4ODUsIDY3Njc3LCAxMjAxMjQsIDc4NjYsIDc1MDQ1LCAKKyAgICAxMTQwMiwgNDIxNDYsIDk0MDMyLCA3NDIzOCwgNDI2NjQsIDI4NDksIDEyNzAzNCwgMCwgNzkzOCwgMTI5NjAsIDE3NjEsIAorICAgIDExODEyLCA2NTM3OSwgNjgzODYsIDEyODE4NSwgMTE1OSwgNzExODMsIDY5NzI5LCAwLCAxMjA3OTcsIDcxNzgsIDEyMDg1MSwgCisgICAgOTgzODM2LCA0MTY4MCwgMTI4NDY5LCA4MzA5OCwgMTE1MzQsIDE1MTQsIDExNjY4LCA2Nzg5MSwgOTMxMywgNzAxNSwgCisgICAgMTI4NDkwLCA2Nzg3NywgMTk0NTYxLCAxMjk4OSwgNjY0NzQsIDkzNjgsIDEyODQ4LCAxNjI0LCA0MzI3MCwgMCwgNzQyNzgsIAorICAgIDEwODE4LCA4MzA5MSwgOTk1MywgMTk0ODk1LCA3ODQyMSwgMTE5NCwgMzI0MiwgOTc2MSwgOTU1NSwgODU5OCwgMTIwMjk5LCAKKyAgICA2MTY5LCAxMjg3MSwgMTU1MSwgMjc5OCwgNjUxNzYsIDQ5NTgsIDQyNzUyLCAxMTkwMjUsIDkxNzkyNCwgNjc4NzUsIAorICAgIDEyMDMwMSwgMzQ5NSwgNjY2NDgsIDEyNTA3OSwgODMzNTQsIDY4MzY0LCAxMjA3NzksIDQ4OTEsIDAsIDEwNjQxLCAwLCAKKyAgICA3Mzc0NiwgMTIwOTQ1LCA2ODM1MiwgMCwgNzM3ODcsIDEyODg1OCwgMTI3MDk0LCA3MTk5LCAxMTEzMSwgMCwgMCwgMCwgCisgICAgOTgzODUyLCAxMjY5NzksIDQyNjg1LCA0MjY3OSwgMTkzLCA3ODc4OSwgMCwgMCwgNDI2NjcsIDAsIDUyNzEsIDY4MzIzLCAKKyAgICA5MjUxNywgODMzNTYsIDEzNjIsIDEzMjk3LCAwLCA3MTg4MCwgMCwgOTgzMzMzLCA3Mzc4OSwgMCwgNjY1OCwgNDQyNiwgMCwgCisgICAgNjY4MzAsIDk4Mzg0MiwgODMxMDMsIDcyNzYsIDQyMTYzLCA1MjIwLCAwLCA3ODYyMSwgNjc4MjIsIDI0MTYsIDMzMTAsIAorICAgIDQyNzAzLCA4MzEwNywgMzc5LCAwLCA0Mzc1NSwgNzA1MDQsIDQzNjQ3LCAzMjIzLCA2NTQ5MiwgMTI4NCwgMTk0NzcxLCAKKyAgICA0NTQ5LCAxOTQ3MzgsIDAsIDcxMjUzLCA3MDc4NCwgMTA4MDcsIDk1NTgsIDkzMDI3LCAwLCA4NTE1LCA4Njg4LCAxMjg2NiwgCisgICAgNjUzMDgsIDMyOTQsIDgzMTQzLCA4NTI5LCAxMjgxMDEsIDQzMzg1LCA3NTY0LCAwLCA0MzMyOSwgODMxNDgsIDkyNDU4LCAKKyAgICA3Mzc1NywgNjY0NTYsIDQyMzU5LCAxMjg0MzksIDIwMzEsIDk4Mzg5MCwgNzIwMiwgMTI4MjMyLCAxMjY3NiwgNDI3MjksIAorICAgIDc0Nzc3LCAzMjE1LCAxMjA5ODIsIDc3MTAsIDE2MTAsIDczODAxLCAxMjg4MDcsIDAsIDY1NjgyLCAwLCA0MzkxNywgCisgICAgNjU5MjQsIDk5NzQsIDIyOCwgNDM5MjIsIDE1MDEsIDEyNzk5NCwgNjQzOTUsIDUxNzksIDcyMDAsIDYyMjUsIDExODkyNywgCisgICAgNDI5OTksIDE3MjUsIDY1NTMzLCA4MTk2LCA3NDc2LCA3NDM5OSwgMCwgNjY4NjgsIDcxNTIsIDg1MDIsIDU3NjIsIDE5NjcsIAorICAgIDc0ODMsIDQzODk4LCAwLCA4MTA0LCA3MDEyOCwgNzQ3NCwgNDM5MTQsIDgzMDgwLCAxMjY1MDcsIDEwNDE0LCAxMzAwMSwgCisgICAgODE0MSwgOTgzMjM5LCA0MjUzNywgMTU1NywgNDM1OTQsIDEyODY0MiwgNjMzMCwgNjgwNSwgODYzMSwgMjU0NSwgNDI5MzQsIAorICAgIDEyNzE2NiwgMCwgNzQxOTAsIDEyODQ3NywgNzA0MTAsIDk4Mzc4NiwgNDI3NjIsIDE5NDcwOCwgNDI5MTQsIDE2NTAsIDI2MiwgCisgICAgMTYzNywgMTI4NTAyLCA3OTAxLCAzMjM4LCA4MzAyNiwgNDE4NjEsIDAsIDEyMDIxMSwgNjUxNTgsIDEwODYwLCA3NDk1OSwgCisgICAgNDM2NTgsIDc1MjcsIDgzMDg2LCA0MzMxOSwgNjQxOSwgMCwgNDUsIDAsIDY0NTg4LCA5Mzk4OSwgMTI3NzUzLCAxMTk4MTAsIAorICAgIDcxOTQsIDUyOTEsIDAsIDQzNjY2LCAxMzEyOSwgMTI4Njg0LCA5MDg0LCAxMjEwMzksIDg3MzcsIDk4MzE2NSwgMTI4ODEsIAorICAgIDc1MDY2LCAxMjkwNiwgOTYzOSwgNzkxMiwgMjYyMCwgOTgzODgyLCAzNTY0LCAwLCA2OTk3OCwgMTc5LCA0MzY0NCwgCisgICAgNzUwNDksIDY0NzU2LCAyODUzLCA3ODQ0MywgMTE4ODEzLCAxMjkwNDIsIDcwMzQ3LCAxMTkwMDksIDI4NTAsIDgwODQsIAorICAgIDk4MzA4NSwgNzM4NTAsIDI4MDEsIDkyMjg0LCA0MjA2OSwgMTE5ODM5LCA3NDc1NCwgODM1MjIsIDQyMDcyLCA5MjczNiwgCisgICAgMTE5ODQyLCAxMDM5OCwgODMzODYsIDgzNTIzLCA4Mzc3LCAxMTkzMTIsIDgyNDUsIDY4NDAxLCAzMTU4LCA5MjM5NiwgCisgICAgMzk4MywgNDM2NTYsIDkyMywgMTE5ODU3LCA5MjQ3MCwgMjkyLCAxMTExOSwgMTE5ODQ1LCAxMTk4NDQsIDMyMjEsIDE3NjMsIAorICAgIDkyNDYzLCA0NjEyLCA2NzcyOSwgMTE5ODUwLCA3MjUzLCA3MDQ1NiwgNjgzOTEsIDc1MDAyLCAxMDc4MiwgMzYzNywgCisgICAgMTI5OTYsIDQzNTQyLCAxMTM2NzYsIDY0NTc4LCA4MzQ0OSwgMzIyOCwgNjk2MzYsIDg3ODMsIDk4MzYzMiwgMTE5NjE0LCAKKyAgICAyNzMxLCAwLCAxMjA4MzMsIDc4NTg1LCA0MTAyLCA3Njk2LCA3Mzg3OCwgMTIxNDE3LCAxMjgxMzIsIDcwODEzLCA0MzMxNiwgCisgICAgNDE3NywgMTEyODMsIDkwODksIDEyMDkxOCwgNzM5OTYsIDEyMTExMSwgNjQ1MDAsIDQzNjc0LCAwLCA2NDk0NywgMTg1NiwgCisgICAgMCwgMCwgNjM3OSwgOTE3ODA0LCAxMTE0MiwgMTI3MTc2LCAzMjA4LCAxMjk3NSwgNzQ3NzUsIDEyNzM4MCwgOTgzOTMxLCAKKyAgICA5MjM4OSwgNzQwNzIsIDU1MjY5LCAwLCAxMjQ5NjIsIDk4MzY4MywgMjAzMywgNzg1NzcsIDc4NTc2LCA4Mjk2NSwgNTUyNTQsIAorICAgIDc3NDAsIDgyOTc0LCA3MDQ0OCwgMTI2NTU1LCA3Mzk2NCwgNjg1MDUsIDkzOTg4LCA2NzYxMiwgNjU2NzQsIDEyODI0NCwgCisgICAgOTQxMTAsIDQxNjg5LCAwLCA3NDAwNiwgNjQ5MDksIDY2NDYsIDExNzkwLCA3NDAxOSwgMTI4NTIwLCAxMjgwNjYsIAorICAgIDEyODAzMSwgODU2MSwgNDU3MywgMTIxMzc1LCA1MzI2LCA5MjU3MSwgMTIwNjA1LCA3MjMwLCA4MjU3LCAxMjE0MTUsIAorICAgIDg3NzgsIDQxNjg4LCAwLCA2NTc3NiwgMjA3MSwgODMxNCwgNjQ1OSwgNDM1MTEsIDc2MjgsIDY1MDkyLCA3MzkwMywgCisgICAgNjQzNTUsIDExMzQyLCAxMjg1NjEsIDAsIDk4MzQzNCwgMTI4MjI2LCAxMjcwMDEsIDAsIDExODEwLCAxMzE2NCwgMTA3MjMsIAorICAgIDk2NywgOTgzMzM1LCAxMjA5ODUsIDExOTQ2LCA5ODM2MDIsIDMyNTcsIDEyNzIwOSwgMTIzMDcsIDE4NDUsIDEyOTA3MiwgCisgICAgNDM1MjYsIDAsIDExOTU3MywgMTg4NiwgNDIzNDIsIDEwMDg5LCA4NzAsIDc2NDgsIDM0OTksIDc2NjIsIDc2NTIsIDg3NiwgCisgICAgODcxLCA4NzcsIDc2NjUsIDg3OCwgNDIwMTUsIDg3OSwgNDM2OTIsIDQ1NjMsIDAsIDkxNzg5MiwgNzU5MSwgNjU4ODcsIAorICAgIDg2NywgOTUyMCwgODcyLCA3NjU2LCA4NjgsIDg3MywgNzY0MiwgNzY1OSwgODY5LCA4NzQsIDc2NDQsIDEyMDY3NCwgODc1LCAKKyAgICA3OTAsIDEyODMwMywgMTE4OTM4LCAxOTUwNTMsIDkzMDM4LCA2NjE4MiwgMTk0NjIzLCA1NDI5LCAxOTUwNTUsIDY2MTgwLCAKKyAgICAxMjY0ODAsIDY2MTgxLCA2ODQ1MiwgOTgzMjkxLCAxMjcyMTQsIDQyMDY3LCAwLCA1NDMzLCAxMDY1NywgNzkxMSwgCisgICAgMTI1MTE5LCAxNTQ3LCA2NjE3NiwgNDIwMTIsIDEyMDU3NiwgNTQyNSwgNDk3NywgOTk5OSwgNTMxNywgNTQyMywgNDYxMSwgCisgICAgMTI1MDk0LCA2NzYzNywgMTI3Mjg2LCA5Njc5LCA3NDEyMiwgOTI5NzgsIDkxNzU4NSwgMCwgNjYxOTQsIDQ0MTgsIDY2MTg0LCAKKyAgICA0NjI4LCA0MjQ1LCAxMTk2NDgsIDAsIDEyNzI2MywgMTg1MSwgMTI0OTk1LCA4MzMyMCwgMTE5MDgsIDAsIDkzNjAsIAorICAgIDExODg5NywgMTIwODc0LCA0Mjc3NiwgNjYxODcsIDEyODM3LCA4ODI5LCA3NzExLCAxMTExMiwgMCwgOTIzMjEsIDQzMzE4LCAKKyAgICA5MjMwMiwgODgwOSwgNjk4ODEsIDAsIDEyNjUxOCwgMTIwNjA0LCA5ODMwNTIsIDk4MzI3NywgOTgzNDMzLCAxMjg0MTIsIDAsIAorICAgIDEyMDU3NywgNzQyNywgOTk1OCwgNDU4OCwgNDM2ODAsIDAsIDc0NDg0LCAxMjcxODUsIDI0MzMsIDEyODYwMiwgNjk5NzMsIAorICAgIDMzNTIsIDc0MzYzLCAxMjg2NjgsIDEyMTM0MSwgNzkzLCA3NDQwNCwgMTExOTcsIDMwNSwgNTY3LCA2NzY2MiwgODQyLCAKKyAgICA2OTk3OSwgODIwOCwgNjgzMDgsIDQxNjk1LCAxNjQ3LCAxMTg4NzcsIDcwODQxLCA3ODM3LCA5MTc2MjUsIDgxOCwgNTMzNywgCisgICAgMTk0NjI4LCA5MTc2MjEsIDQxMzc2LCAxMTk5NzgsIDY4NzQyLCAxMjA1OTQsIDc0MDg2LCA2ODc3NywgNzAxNzksIAorICAgIDkxNzYxMywgMTA5NzMsIDY2MzU5LCAxMzcyLCAxMjcxNzIsIDkxNzYwOCwgNDk2OSwgMTI1NCwgOTE3NjA1LCAxOTQ2NTQsIAorICAgIDkzOTY3LCA5MTc2MDIsIDY1MjI4LCA3ODIyMSwgMTI2NjEyLCA2NzcyMywgMjg0MCwgOTgzOTA1LCA3ODgyOSwgOTgzOTM5LCAKKyAgICA2Njg4NywgMzI0NSwgOTA2OCwgNjgxOTQsIDY0NzI1LCAxMjExNjEsIDEyODA1MSwgMTI5OTEsIDEyNDk3MSwgMjY1MSwgCisgICAgNjgwMTYsIDk4MzI2NywgMTI3MzI2LCAxMjUwMzgsIDcwODM1LCAwLCA3MDg0NCwgNDM2NDgsIDEyMDgxMiwgOTE3ODMzLCAKKyAgICA0MzMyMiwgOTI2NjIsIDAsIDAsIDY0MzcyLCA5MjY5OCwgMzIyNiwgNjU1LCA3NTIsIDc0NTcsIDc0NTYsIDc0NTIsIDMyODUsIAorICAgIDc0ODk0LCAxMTE1MiwgOTI5MDMsIDY1NjEwLCAyMzkxLCA5MjkwOCwgOTIyNDgsIDY3MSwgMjUwLCA3NDM0LCA2MTgsIDY2OCwgCisgICAgNjEwLCA0MjgwMCwgNzQzMSwgMTE1MiwgNDI4MDEsIDY0MCwgMTIwNjY2LCA3NDQ4LCA3NDM5LCA2MjgsIDM5MDUsIDczODEwLCAKKyAgICAxMjgzNDAsIDEyODI2NiwgNjQ3NDksIDY3ODUwLCAyMTA3LCAxMjgyOTAsIDc0MjQ5LCA0NjA1LCAxMjgxNzQsIDk4MzE5MiwgCisgICAgNDMzNzIsIDY1OTQ1LCAxMjcyNDksIDExMTEzLCAxMTk1OTAsIDAsIDAsIDcwNDk1LCA5ODcsIDY5MjcsIDExNTcyLCAKKyAgICA0MjI2MSwgMTE0NjQsIDMzNjUsIDk5NzEsIDAsIDk4Mzk1MSwgMTI4Mjk3LCAwLCA3ODc2MiwgMTI3ODY3LCAxMjEzNjgsIAorICAgIDExMzM0LCA0MzMyNiwgMTI2MDksIDExNTE5LCAxMTUwMywgNTUzMCwgNTIxMCwgMCwgNDYyNywgMTE5MjY5LCA1MjA4LCAwLCAKKyAgICA3MDA5MCwgMTAzMzIsIDI0MjQsIDc5NzYsIDkxNTYsIDAsIDMyNDQsIDU1MjksIDY5NjQ3LCA3Mzg5NCwgMTI4ODUyLCAKKyAgICA1NDMyLCA2NDk2NSwgNTUyNywgNDIzMTUsIDEwNTE2LCA3NzkwLCA1NTI4LCAxMjg4MzgsIDQyMTQwLCAxMjAyODEsIDAsIAorICAgIDk4Mzc3NywgNDM1NDUsIDk4ODcsIDEyMTQ3NywgNDAwMCwgNzQyOSwgNzQyOCwgNjY1LCA3NDI0LCAzMjA2LCAxMjAyNzgsIAorICAgIDc4ODQsIDAsIDEyODU2NiwgNzQ5MTAsIDEyODY2NiwgMjExLCAyNTA5LCA5MjkwNCwgNzA4MjIsIDY4NjcyLCAzMjIwLCAKKyAgICA0MjIzNSwgNzg0ODAsIDEwNjkwLCA4OTUxLCA1MjE0LCA0MjQ3NCwgODExOCwgMCwgNzA0OCwgNDU5MCwgMTI3MjU4LCAKKyAgICA1ODUyLCAwLCA3ODQ4MiwgMTI3MjU5LCAxNzA4LCAwLCA3ODQ4MSwgMjYyMywgMTE5NDMsIDEyODcwMCwgNjkyMjYsIAorICAgIDY5OTc0LCA0Njk4LCA2NjUwOSwgMTA2NiwgMTE5OTIxLCA0NzAxLCA5ODM4NzYsIDEyMDI4NSwgNzA0NDcsIDk0MTExLCAKKyAgICA4MjY3LCAwLCAxNDIxLCA2NjQyNiwgNzUxNiwgMTI3NTUyLCAyNjI1LCA5ODM2NDEsIDgwMzQsIDc0MzA5LCAwLCAzNjMxLCAKKyAgICAxMDk1NSwgNzg1MCwgMTIwMjkzLCA4NDE2LCAwLCA5ODMwNjUsIDAsIDQzMzg0LCAxMjY2MCwgMTI4NjkzLCAxMjgyNzAsIDAsIAorICAgIDc0ODUwLCA0MTA2OSwgNzAxODUsIDEyODE1NiwgMTIwOTksIDQzMTAsIDEwMDMyLCA2MjUyLCA3MTMsIDc5OTAsIDk4MzQ4OSwgCisgICAgMzk5MCwgMTI1MDUwLCA5ODMyNjQsIDY2MzY4LCA1MDE3LCA2NDk1NiwgNzA3MSwgMCwgNzA0NTcsIDEwMzAsIDExODgwMCwgCisgICAgOTI1NjMsIDk1MTMsIDQxMDU5LCA5MzU3LCA3NDk4OCwgMTc3MywgNzc5MzksIDEyMDM1MCwgMTI0OTYxLCA2MzM5LCA3NzQ1LCAKKyAgICA5ODQ0LCAxMjcyMjAsIDY0NjUwLCA5NCwgMTg4MCwgNzQ3NjYsIDExMzcxOSwgODkwOCwgOTgzMjIyLCAxMjg3MDcsIAorICAgIDY1OTEzLCA3ODQ3MCwgMTA3NTIsIDEzMDAzLCA2ODc2OSwgMTI2NTcyLCA0MTMwNywgODczMiwgMTIwMzM2LCAwLCAxNzU3LCAKKyAgICA2OTY0LCA0Njk2LCAwLCAxMjAzMzMsIDY0Nzg1LCA3Mzk0LCAzNjQxLCA1NDE5LCAxMjgwNTUsIDAsIDEyNzg4MywgCisgICAgMTk0NzA3LCAxMjAzNDQsIDQzOTg4LCA3MDQyMywgODYxMCwgNDMwNjIsIDc1OTIsIDg1NiwgNzQyOTksIDkzNiwgMTMyODksIAorICAgIDY5ODk0LCA0MzE3MSwgMTQ1OSwgMTI4MjI0LCA2NTI0MywgNzg2MzgsIDE5OTUzLCAxMjkwNzgsIDE1MDQsIDcwMDY0LCAwLCAKKyAgICAxMjkxMywgNzQyMDYsIDc1MjksIDEyODc0NSwgMTI3ODY4LCA3MDIwMywgMTIwNzgyLCA0MTEzLCAxMjA5MjksIDIzNzIsIAorICAgIDMzNiwgMCwgNzUwOSwgMTIxNTIsIDE5NDg4NSwgNjgyLCA3NjU1LCA0MTUwNSwgMCwgNjQ3NDMsIDEwNTkzLCAxNzAzLCAKKyAgICA5MjQ2NywgNzc5MTEsIDgwMzMsIDY5OTUzLCAwLCA5ODEwLCAxMjcyNjksIDEyMDAxMywgMTI5NzAsIDAsIDQyMzUxLCAKKyAgICAxMDEwOSwgNzQ1MzUsIDc0MDY4LCA3NDkyMSwgMCwgOTI2OTAsIDAsIDY1MDY4LCA3NDI5MSwgMTk2NSwgNzA2OSwgNDMzMTIsIAorICAgIDAsIDczODg3LCAxMTEzMCwgMjA4NywgNjQzNzAsIDYzMTQsIDQxNzE0LCA4NTAxLCAxMTE0NSwgMTIxMTE3LCA3NDIzOSwgCisgICAgNDEzMTcsIDkyNjE0LCAyMDkxLCA3NDU0NSwgMjA5MCwgNjk5MTIsIDkzNTMsIDcxMTcsIDIwNzcsIDc3ODg2LCAxMTE2MSwgCisgICAgMTA0OTgsIDIwODMsIDc3ODg4LCA3MTE5NiwgMCwgMTE5MjM2LCA2MzQsIDEyNDk3MCwgOTIyOTAsIDE5NDg4NiwgNjk3NzksIAorICAgIDQxNjUsIDg3NDYsIDE5NTA0OCwgOTY1NCwgMTI4NTYsIDY5MjQsIDc2NjAsIDcwNjYsIDE5NDY5MywgNzA0MTUsIDEyODEzNSwgCisgICAgNDEwMzcsIDQyNjkyLCA3Nzg2LCAxMjk1OSwgNDEwMzksIDEyNzQ4MywgMTI0OTY1LCA2ODAsIDIzMDIsIDEyODIwMCwgCisgICAgMTE4MSwgNzA1NiwgMzE3NCwgNjcyNDgsIDAsIDkyNjY4LCA2NTY2NSwgMTI3Mzc1LCAxMTM3NzYsIDY5MjAsIDAsIDkyMjk1LCAKKyAgICAxMjY2MDYsIDExODk2NSwgNjgzMTgsIDY0NjQ0LCAxMjY5ODEsIDc0MTE5LCA2ODIzOCwgNDEwMjgsIDc0MDI1LCA2MjMxLCAKKyAgICAyNjEzLCA2NTMwMiwgNDA5ODksIDY4MjM5LCA2ODIzMCwgNjgyMzQsIDQyNzYwLCAwLCA0Mzg5NiwgMCwgNDA5ODcsIDQ2NjcsIAorICAgIDAsIDcxODQzLCA4ODI4LCA3Nzk5NSwgNzA1MDYsIDEyNDYsIDQ3NDYsIDEyODUwMSwgMTI4NTA4LCAxMTAyMSwgNDc0OSwgCisgICAgOTI2NzUsIDkxNzg4MiwgOTIxLCA0NzQ0LCAwLCAxMjcwMiwgMjQyLCAwLCAxNTY2LCA4MjE3LCAxMjcyMTAsIDY0NjUzLCAKKyAgICA3ODM4NiwgNzQ2MTcsIDc0MDM2LCA3NDUwNSwgNDMyNzQsIDUzMTMsIDk1MSwgNzQ1NjgsIDkyOTgzLCA5ODM4NjcsIDc2MDQsIAorICAgIDk4MzI5MiwgNDAwOSwgNzAyNzcsIDcxODQ0LCAxMjA1NjIsIDAsIDk4MzcyMCwgNjQ4NjAsIDExOTEzOCwgMTE5MDY5LCAwLCAKKyAgICAxMjczNzAsIDQwNDgsIDk4MzU5OCwgODMwMDksIDcwMDI0LCAxNjQ2LCA3Nzg5MCwgNjQ1MzQsIDczOTk1LCAxMjA3MDUsIAorICAgIDEyOTA0NywgMTE5ODkwLCAyNTc5LCAxMTk5MDUsIDMxNzcsIDExMzU3LCA5MDk5LCA0MTA3LCAzNDQxLCAxMTk4OTQsIAorICAgIDI5NzUsIDc0NDQyLCA5ODIyLCA5ODM5MzUsIDU1MjIwLCAxMDA4NCwgNzM5NDMsIDExODg0MCwgMCwgOTE3NTYyLCA3ODI5OSwgCisgICAgMzM5OSwgOTg1MSwgOTE3NjA5LCAxMTkwOSwgOTA1OSwgMCwgNzY4NywgMCwgNjc4OSwgMTI3NzY3LCAwLCA3MTg0MiwgCisgICAgNzAxNzgsIDkyMzE0LCAwLCAxNzc3LCA5MTUxLCAxMTM3LCA2Njg2NywgNzQ5LCA0MjM2NiwgNzA0NDQsIDUzODUsIDcwNzkxLCAKKyAgICA3MjQzNSwgNzAxMjcsIDgzMzc3LCA1OTg5LCAxMjg5MDUsIDc0NjM2LCAxMjA4NDgsIDAsIDQxNjg1LCA2OTIyMywgMCwgCisgICAgOTc2OSwgNDE2ODQsIDE5NDczNywgNTE5LCAxMTkyMzEsIDExNzQwLCA1NzY2LCAwLCAwLCAyNjAwLCA4ODQ4LCA3MDQxNiwgCisgICAgNDEyOTcsIDAsIDM2NjYsIDcwNDIwLCA0MTMwMCwgNzQ0NjgsIDY1MTYwLCAwLCA2OTY4OCwgNjk3NzEsIDc0NDc5LCAwLCAKKyAgICA2NTU4LCAxMjcxNDksIDEyODA2NCwgNjk3NjUsIDkyNzc1LCAyNTIsIDAsIDQxMzAyLCAxMTkzNTAsIDgzNTA0LCAxMTg4MzksIAorICAgIDY5NzYzLCA2ODc2MiwgMTE3MjksIDg3MTksIDkwNjAsIDEyOTA5MSwgMTIwMTM5LCAxMDc2MSwgMCwgMCwgMTI5NDEwLCAKKyAgICAxMTg3OTIsIDExNzM0LCA5MzAxMSwgMTE3MzAsIDExMzc0MSwgOTU5MywgNTc1NywgMjQwMywgNjQ4MDgsIDU1Mjc1LCAwLCAKKyAgICAxMTcyOCwgNDM1NzIsIDk4MzEzOSwgMCwgNzc2NCwgNjg3NDEsIDExMDk0LCAxMjA4MjUsIDAsIDQzNDg5LCA0MjgyLCAKKyAgICA4Mjk4LCAwLCAwLCA3MDMyOCwgMTk0OTg2LCA3MDMyNCwgNjQ0NDksIDAsIDEyNjY1MCwgNjM4NTQsIDg0NTYsIDY1NTg3LCAKKyAgICA3MDQ0MiwgNjU2NzAsIDk4Mzk2MywgNzgyNTAsIDAsIDc3NzQsIDEwNjA3LCA5NzkyLCA5ODM4NjksIDcwMzI2LCAwLCAKKyAgICA3MTQ2MCwgMTIwNzY0LCA3MDMyMiwgMTAwMTksIDc0NzYyLCAwLCAzNDU4LCA0MzY1LCA3MDA1MywgOTgzNzEyLCAzNjQ3LCAKKyAgICAxMjAyMDcsIDI2MDIsIDEyODM0MSwgMTIxMTAzLCAxMjUwNDMsIDQxMTM1LCA4MzQ5OCwgMCwgMTIxMzI1LCA2NDYzMSwgCisgICAgMTcyLCA0OTcxLCA0MTIxOSwgNDExMzcsIDE4ODksIDcyMzgsIDY1NDUsIDEyNjQ3NiwgNzc5MjYsIDc1OTcsIDEwNTI4LCAKKyAgICA3NTA1NCwgMCwgMzczMiwgNzM5MTAsIDE5NDU4OCwgNTM0NCwgOTgzOTcxLCA0MzM2NiwgNDMzNjMsIDkwNjIsIDExOTI1MiwgCisgICAgMTIxNDQxLCA5MjUyOCwgMCwgNjQ0NzksIDkyMzIsIDkyNTk2LCA4MzMzMCwgMTEzNzA3LCAxOTQ3MTIsIDEwOTAwLCAKKyAgICA0MTUzMSwgMTI2MywgMzcyMCwgMTIwNDgsIDc0MDc1LCA2NDI5MiwgNDE1MjQsIDcyMjcsIDExOTYzNSwgNjA5OSwgNDE1MzQsIAorICAgIDAsIDEyNzM1NCwgMTI3MzQ1LCAyOTksIDgzMDIyLCA4NTI1LCAxMjczNDcsIDM1MjQsIDkxNzU2NSwgODgzMSwgMTI3MzQ5LCAKKyAgICA5MjU2NCwgMzA3NSwgNjc4NjcsIDk0MDUzLCAwLCA2NjM2MiwgMCwgNjQzNTMsIDcwNDQwLCAwLCA1ODQ1LCAxMjEzMTAsIDAsIAorICAgIDEyMTE4NSwgMjU4MSwgODIwMCwgNjUxMTQsIDY4NDYwLCA5ODM2OTMsIDQzMjgzLCA1NTUxLCAwLCAxMjA3MzUsIDk4MzIwMSwgCisgICAgNjM0MCwgMTE4ODU1LCAxMjEwMjcsIDc4MTM0LCA4NjgwLCA3MjA0LCA3MDA2NSwgMjU4OCwgMjkxNCwgNzAxMSwgNTUyODEsIAorICAgIDAsIDI0NzEsIDE5NDYzMSwgMjg4MywgMjc0OSwgMTE5NTYzLCA3Mzc3NCwgMTA5MTMsIDgzMTE2LCA5ODMwODYsIDg2NjYsIAorICAgIDY3NSwgNDI0OTMsIDEyMTI5NywgNDM1NzEsIDAsIDYyMTksIDEyODU4NCwgOTk4MCwgNDEyMzIsIDEwOTI4LCAwLCA0MTE1MywgCisgICAgNDEyMjksIDExODk2NywgMCwgMzczOCwgOTQwMTYsIDk4MzI0MywgMTI3MTEsIDMxODEsIDY2MjEyLCA3NDI4OSwgNjg0NzIsIAorICAgIDQyODU3LCA4MjYyLCA5MzAzNiwgMCwgNzQ0NzYsIDAsIDQyMzQ3LCAxMjA5MiwgOTYxNSwgNzIzNCwgNzQwNDcsIDk4MzA4OCwgCisgICAgMTI4MTM3LCA0Mzc0NCwgMCwgMCwgNzM4NDYsIDI5MzQsIDEyNzIyLCAxMjA3NjIsIDkyMiwgNDM5ODMsIDc0NTA3LCAKKyAgICA5ODMxMjYsIDc0NDYxLCAzMjE4LCAxMjA0NzEsIDc0MjkwLCAxMjA0NjksIDY0NTYyLCAxMjA0NzUsIDg1NjksIDExNDA0LCAKKyAgICAxMTkzMiwgNzM3MjgsIDMyMTQsIDExMjEyLCAxMjA0NjgsIDEyMTI4LCAzMjA3LCA2NTQ4NiwgNzg3MjksIDE5MDEsIAorICAgIDc4NzI3LCA2NTY2NywgMTIwNDYwLCA3NDI1LCAzMjA1LCA2ODAwMywgNzg3MzcsIDc4NzM2LCA3ODczNSwgNDMzODMsIAorICAgIDY5OTQwLCA2NTQ1OSwgMjYwNiwgNzg3MzAsIDczODk3LCAxMjkwNDMsIDExNDk2LCAxMTczLCAwLCA0MTI3MiwgMTE5NjYxLCAKKyAgICAwLCAwLCA4MzE3OCwgMTIwNzM3LCAxMjA5NTMsIDE5NDc3MywgOTgzMzIyLCAzNzgsIDI2MTAsIDk4MzMyOCwgNjUwNzksIAorICAgIDk4MzMyNywgNjU2OTUsIDEyMTIyMCwgMzcsIDcwNjgsIDAsIDEyMDQ4MCwgNjgyMzYsIDMyMDksIDEyMDQ3NywgMTIwODM1LCAKKyAgICAxMDYzOCwgOTc2OCwgNjk5NTIsIDExOTkwOSwgNzE0ODYsIDkyMjI1LCA5ODM5NTMsIDk4MzM0MCwgMCwgNDM4NDAsIDAsIDAsIAorICAgIDUyMzMsIDk4MzMzNywgNjQ3OTIsIDcxMjMzLCAxMjgyMjMsIDEyNjYzMywgMTI4OTE5LCA3MDYwLCA5ODQ3LCAxMjAxNDQsIAorICAgIDE2ODUsIDU5NSwgODMxOTcsIDcwNDI4LCAxMjkyLCA4OTQwLCA3MzgwLCAxMTA4OCwgMCwgMTAwMDQsIDEyNjk5NywgMCwgCisgICAgNjU0MSwgNDM4MzcsIDcxNDY1LCAxMjEwMzAsIDMyNDMsIDkwMTQsIDU2MDYsIDEyNTAzMiwgNTM4LCA2NDYyMCwgNTYwMiwgCisgICAgODQ2NywgNzQzOTEsIDY1NDcsIDcxNDY2LCA4MjAzLCA2NjQyMCwgNjgyNDEsIDg0NTgsIDY1MjExLCA4NDk1LCA5MjMxMSwgCisgICAgMTI3NDgxLCA5MTc1NTIsIDc3OSwgNzgzMTQsIDY0MzY3LCAyNDY1LCA2OTkwMSwgODE5MywgNTUyNzksIDk3MzAsIDkyODAsIAorICAgIDEyMDkxMywgNzA2NSwgNzQxNTUsIDQzNDYsIDExMzY5MCwgNzM3OTgsIDUwNCwgMTI1MTE1LCA5MjQxNCwgODk4MiwgMCwgCisgICAgMTIxNDcxLCAxMTkxNzAsIDc4MiwgMTI5MDI4LCAxMDg4MywgMTI4NDQ2LCAxOTQ4NTIsIDczMiwgMzczNywgMTIxMTg4LCAKKyAgICAxNTQ4LCA2ODY1MCwgOTI1MDcsIDE4MzIsIDU2MDQsIDU3MzUsIDQxMTQxLCAxMTkwMjAsIDQzNzYsIDk4MzM3MiwgMTE3ODcsIAorICAgIDM3NDUsIDkxNzg2OCwgMTE5ODg1LCA0Mjg4OCwgNjU3MTIsIDEyNzkxMywgMzg2OSwgMTE5MzcsIDU3MjUsIDEyNzUzOSwgCisgICAgMTc4MywgNzQxNiwgNTcyOCwgMCwgMTI4NDU3LCAxMTk1NTQsIDExOTE4LCA2NjU2NywgNTcyNCwgMTI3OTY1LCA1NzI3LCAKKyAgICA3ODUyMSwgMTIxMTIxLCAwLCA3NjQsIDAsIDEyMTAxMSwgNDM1MzEsIDExMzY3MCwgOTAzMywgMTI3MTgyLCA0MjUzMiwgCisgICAgNjIyMywgMTEwNDIsIDEyMDc0OSwgMTE0MjMsIDc0ODUyLCAxMTk4NjEsIDY4MzAzLCA0MzQ2NSwgMCwgNzQ3NjcsIDY1NTksIAorICAgIDY0NTU3LCA3MTM0OCwgOTI2NDksIDEyMDY0OCwgNDMwMTksIDQzNDc3LCAxMDIzOCwgNzQ0OTEsIDEyODcxMSwgNDMzNzcsIAorICAgIDkyMjgyLCA3MTM0NiwgMTQ3OCwgOTc4MywgMTE4MjUsIDI2MDcsIDY0NzQwLCAxMTM2ODksIDc3MzksIDc0NTQzLCAKKyAgICA5MTc3NjUsIDY3MzkzLCAwLCA2MTMyLCAwLCA2Mzc2NSwgMTI4Mzk2LCA3MDA1OCwgNDExNDQsIDcxODk5LCA5MjQzOCwgCisgICAgNDM1MzcsIDY3NjEsIDEwMDkzLCA0MzY5LCA5MTc3OTEsIDEyODM5NCwgMTk0Nzc2LCA4ODIwLCAzOTQ3LCAwLCA2NTI5OSwgCisgICAgMTE1MTUsIDUyNiwgMTI4MTAzLCA0MTI5NSwgMTk0NjAzLCAxMjUwMDIsIDE5NDkzMiwgMTEzNjkxLCA3Njg4LCA5MTc3ODYsIAorICAgIDc2ODYsIDgyODgsIDExODE1LCA5ODMxODgsIDEyMTQxMSwgOTgzMzg0LCAxNTQzLCAzNzEzLCA0MTIyMSwgMTI0MjMsIAorICAgIDQyMjgxLCA3ODU0NCwgNzQwMjQsIDEyMjkzLCA5ODM2ODAsIDY0MzU3LCAxMTc5NCwgNDIwODIsIDEyODEyNSwgMTczNywgCisgICAgODk4NywgNDIwODEsIDAsIDcyMDUsIDgzMjY0LCA5MzM1LCAxMjg1MCwgMTE5MTczLCA2NTUzLCA3MDU1LCA2ODA0MSwgCisgICAgODI3NywgMCwgNjc3NTEsIDU0NzUsIDc0Nzk1LCA2NzgwLCA2NTA2NywgMCwgMTMyNywgMTE2MCwgNDIwODQsIDkzOTYzLCAKKyAgICA0MTIxNywgMTE5NjYwLCAxMDAxOCwgMzYwLCAxMjkwNzAsIDk4Mzg2NSwgNjgxNzYsIDU4NjMsIDMxMzcsIDAsIDQxNDcsIAorICAgIDk4MzE3MCwgNDEyMTYsIDc4NDQsIDI2MTYsIDcwMTk3LCA2ODQ2MSwgNjUyMzQsIDY4MzQxLCAxMzA3NiwgMzEzNSwgCisgICAgOTgzMjg5LCA3ODE0MywgMTE5MTM5LCAzMTQyLCA5MjQ1MSwgOTQwNjgsIDEwODE5LCAxMTk1ODAsIDEwMTgzLCA3NDYzNSwgCisgICAgMjYwOCwgMTQ3MCwgNzM5NjcsIDk0MDA4LCA2MjI3LCAxMjEyNTcsIDgzMjY4LCA2NTIzNiwgOTE3ODc4LCA2MTYzLCAKKyAgICA5ODM1NTgsIDExMzcyOCwgMTI3MzE0LCAxMjgxMzgsIDk4MzIzNiwgODYwMywgMTI3OTU5LCAxMTk4NjYsIDMzMDYsIAorICAgIDEwODc2LCA0MzM5MiwgODMxODcsIDEyNzkzMSwgNTc1MSwgMTI3NTE3LCA2MjIyLCAwLCAxMjc0NjYsIDEyMDg2LCA3NDAzLCAKKyAgICAxNjAwLCA2NDMwOSwgNjQ5MzksIDAsIDY0NzgzLCA5MjY1OCwgMTEzMTAsIDAsIDg4ODIsIDExOTkwMywgMCwgMjU3MCwgCisgICAgNzAyMSwgNzQ5MDIsIDE5NDc0MiwgNDMxMTAsIDAsIDEyMzQsIDY1NDAsIDY5NzQsIDkyNzUwLCAwLCA5ODMyMTEsIDUwMDIsIAorICAgIDk4MzU2MywgNDEyODYsIDY5OTQ2LCA3NDQ2NSwgNzEwNzQsIDQzNTg1LCAxMTM3MjAsIDY1NTEsIDk4MzM3NSwgMTI4MjI5LCAKKyAgICA5ODMyNzQsIDQxMjg5LCAxMjUxMzAsIDcxMDgwLCAxMjc5NTgsIDg5NzcsIDYwMiwgMTIwODE0LCAwLCAxMjgzNTAsIAorICAgIDEyODY2MSwgMTk0ODkwLCA5ODMzNzcsIDQxMjc5LCAwLCAwLCA5NDEwOCwgMTEwODEsIDQzNjE1LCAwLCAwLCAxMjc4ODgsIAorICAgIDk4MzYxMiwgMTI3MjcsIDQzODk1LCAwLCA3ODM5NywgOTQ3NSwgNzExMiwgNjUxMDUsIDAsIDk2MzMsIDEwODg2LCA0MzU5MiwgCisgICAgNzgzMSwgOTgzODI5LCAxOTQ1NzEsIDAsIDczOTE1LCA4MDc2LCA0MzA0OCwgODI5MCwgODI5MSwgNDMwNTEsIDkyNTcwLCAwLCAKKyAgICAyNTk2LCA0MzU4NCwgMTIwOTgzLCAxMzExMywgMCwgMTI3NzU3LCAyMzkzLCA3MDU4LCA5MDg3LCA3NDA2NywgNjg2NzMsIAorICAgIDQxNTc0LCA3ODMzNywgNzA0OTgsIDQyOTAwLCA2Mzc2LCAwLCAwLCAwLCAwLCA5ODU0LCAxMjc3NDgsIDY0Njk2LCA3Mzg3OSwgCisgICAgMTI4MjIwLCAxMjA3NTIsIDY5OTQsIDAsIDE3MjAsIDAsIDAsIDAsIDY1MjksIDcwNjMsIDk4MzE3OSwgMzc1MSwgOTEyMCwgCisgICAgOTgzNDg3LCA2ODAzOCwgMTc5OCwgNzA5LCAwLCAxMzU0LCAxODc2LCAxMzE1MiwgNjU1NywgMTI0MzAsIDgxMzcsIDk0MDk4LCAKKyAgICA2Nzc1MiwgNzA4NTAsIDExOTA1NywgMjQ1LCAxMjEwNjYsIDExNDU2LCA0MTIzMywgNzA3MCwgMCwgOTQwNDYsIDYxMzYsIAorICAgIDY4MzA0LCA2NTY3NywgODY4MiwgNDEyMzUsIDkyNTk1LCA0MjA0NSwgOTgwNCwgMTE4OTYzLCA0MzIsIDM1OTUsIDEyNzAxNSwgCisgICAgNjU0MzcsIDAsIDc0NDU1LCA0MjM5OSwgOTgzMTM2LCAwLCAxMjgyNzQsIDAsIDExOTY1OCwgMTI4MTg0LCAwLCAwLCAKKyAgICA3Nzg5NCwgODc5NywgMCwgOTA1MiwgNjQ4ODgsIDcxNjcsIDIzNTYsIDk1LCA3NDc4NCwgMTA1ODAsIDAsIDQyMjg2LCAKKyAgICA3MTEyMywgNjQ2NDAsIDY5OTk5LCA5NDEwOSwgMTIwODc3LCA3NDEzNywgNzAwMzUsIDEwMDYzLCAxMjY1MiwgMTIxOTksIAorICAgIDc0NjIyLCA0MzQ5MiwgMjU2NiwgMTE5NzEsIDk4MzczNywgMTIwODgyLCAxMDY1LCAwLCAxMjcwMDUsIDQzNDAwLCAyNTc2LCAKKyAgICA2NjY5NiwgNjY4MTksIDgzMzMzLCA0MzYwNCwgMTI3ODkxLCAwLCAzMjAxLCA1MTQsIDc0NTAyLCA3MDAzMiwgMjkyMSwgCisgICAgNDMyMTUsIDY0NDkzLCA1NzcyLCAxMjk2OCwgNzAwNTUsIDE5NDk0NCwgNzAzMTAsIDQzMzk4LCAyNTgwLCAxOTUwMjUsIAorICAgIDQxMzQxLCA0MTIyMywgNjU2NCwgMTQ2MywgNDEzNDIsIDAsIDUyOTMsIDcwMDIwLCAxMjc4NzAsIDM3MzMsIDExMzQ2LCAwLCAKKyAgICAxMjA1NCwgMCwgNzQwOTgsIDQyODI3LCAxOTUwNzQsIDEzMDkxLCAwLCAxMjg1ODAsIDAsIDkxNzkxNSwgMTI3OTYxLCAKKyAgICAxMjcwMjUsIDEyODMzNCwgNzQ4MjEsIDcxMTA0LCA2NjI5NSwgNjgwMzcsIDAsIDEyMTExNiwgMTMwOTAsIDY2NjQzLCAwLCAKKyAgICAxMjcwLCAxMTMyLCA0MjM2MCwgMCwgNzQwOTYsIDY2NjU1LCA0MjU2OSwgMTI3ODI0LCA2Njg5OCwgNjQ3NjEsIDAsIAorICAgIDQxMDIxLCA4NTEwLCA0MjQzMiwgMTE5ODk4LCAxMTkzMTcsIDE5NDc4MiwgMTk0NjQxLCA2NDQ5NiwgNzQxMDksIDcwMDMwLCAKKyAgICA5OTE1LCA5ODMwODMsIDk4MzIxOCwgNzA2MSwgNDEzMzYsIDM4NTQsIDY5NzAwLCAxMzE0MSwgNjg0MTMsIDQzNDAxLCAKKyAgICA0MjMxOSwgMTMwODIsIDc4MTE0LCA3MDY3LCA2ODIyMSwgMTI3ODgxLCAxMjczODMsIDEyNzE3MSwgMCwgMTIwNzQ1LCAKKyAgICA3NDIwOSwgOTAyOSwgNDM1NDMsIDcwODM2LCAyMzUzLCA2MzA4LCAxMjkxNTQsIDc0NzkyLCAyNjExLCAxMTkxODYsIAorICAgIDY2ODgxLCAxMjcyNDEsIDY1MDYzLCA0MzY2NCwgOTIzMTksIDY2NjI3LCA5MjkxMiwgNDQ4NCwgODUwOSwgMTE4OTc2LCAKKyAgICAxMTA2NiwgNjUyMzMsIDEyNzE0NiwgNDEyMjQsIDQxMDE3LCAxMjgxNDksIDM3NDcsIDEwNTIyLCAwLCAxOTQ4NzYsIDE2OTEsIAorICAgIDQxMjI2LCA3NDk2MiwgMTIxMDcsIDcxMDAsIDEwOTA1LCA2NTAxMCwgMTIxMjk5LCA2OTcsIDY2MDE4LCA5Mjg0LCA0MjQ0LCAKKyAgICA5ODMzNDMsIDkzMDU4LCA3NDc4MSwgMTMxMjEsIDEyMDAzNiwgMCwgMTIwMTAsIDEyODU3MywgMTI4MjIxLCAxMjA5NDksIAorICAgIDEyMTAzMiwgMCwgMTI3MTkzLCA2NTgxNiwgNjgxMTEsIDExODk1MCwgMTI3OTMzLCA2NTY2OCwgOTIyNTcsIDY2MTgsIAorICAgIDM1NjIsIDY2MzY1LCAwLCA0MjIzNCwgMTI2NDgsIDc4MTEwLCA3MTIzLCA3MDAzOCwgNTc4NSwgOTE5OCwgOTc2NCwgCisgICAgNDEzMTYsIDY1ODc3LCA3MzgzLCAxMzIzMCwgNDEyOTksIDAsIDAsIDY4MzY1LCAxMjgyNTgsIDE5NTAyNywgMCwgMCwgCisgICAgMTMxMjIsIDAsIDE5MSwgNzAwNjAsIDg1ODUsIDgwMDAsIDY0NDExLCAxMjA2NTIsIDQyODg5LCA2NDg1MCwgNDEwNzIsIAorICAgIDQxNTc4LCA5ODMxMDQsIDQxNTc3LCAwLCAxMDAwMiwgMTIxMzY0LCA2NTMzLCA3MzgwMiwgNDE1NzAsIDkxNzkxOSwgNjgzLCAKKyAgICAzOTYsIDQxNTgwLCA2ODE0NiwgOTgzMDY3LCAxMjkwMSwgNDMwNTgsIDAsIDM0MywgNzEyOSwgNDI2ODAsIDQxMzYwLCAKKyAgICA3ODE1NCwgOTgzMzk3LCA0NzQzLCA2OTk4NywgMCwgNzQwNDAsIDc0MTA4LCA4NzQzLCAxNzI0LCAxNDMzLCAxMTkzMjIsIAorICAgIDEyODY2NSwgMzczOSwgNjI2MywgNzEzNDksIDEyODgxMSwgMzk2NCwgNjU5MiwgMTIxNDI0LCA2ODI4OCwgNjYwNDAsIAorICAgIDgyOTQ2LCA0MjU2OCwgNjk4MDYsIDEyODExMywgMTc3OCwgMzk1NiwgMTI4NDQzLCA0MjA3MCwgNjU2MywgNDMwNzUsIAorICAgIDkwMTgsIDk0MDA2LCA5ODMzOTgsIDEyMDY3LCA0MTMxMiwgOTI3NjMsIDU1NDcsIDg5MTYsIDEyMDg2OSwgMTI4OTUwLCAKKyAgICA4MTc1LCA5NDAzNCwgMjg0LCA4MTA4LCA5MzQsIDEyODAzOSwgNzQwMDEsIDE3MywgNjY0NjAsIDcxNzQsIDkyNzAzLCAKKyAgICAxMTg4MjIsIDE3NTAsIDEyODY4NiwgNDM5NCwgNjgzNjgsIDE4MDcsIDk4Mzg4OCwgOTIyOTgsIDAsIDU4ODksIDEyODc5NSwgCisgICAgNzE4MCwgMCwgNjcxMjcsIDAsIDY3MTI2LCA0MjQ3MSwgNjk4MiwgMTcyMSwgNDQwMjIsIDc4OTEsIDQyMjQzLCA0MjE2MCwgCisgICAgMjU4MywgNDUxMiwgMTE5MzYwLCA2NTIzMCwgMTI4MTA5LCAwLCA5MTc2MzAsIDM4NTUsIDE5NDgxMCwgMTE3NjcsIAorICAgIDEyNzk5OCwgMCwgNzQyOTUsIDE5NDY1MSwgMCwgOTI0MTYsIDM5NzUsIDY3MTI1LCA3NDA4NywgNzQ5ODksIDEyNjcyLCAKKyAgICAzNzk4LCAyNzAzLCAxOTQ2MDgsIDAsIDIxMDksIDk3NzQsIDEyNzUsIDAsIDk4Mzc1MCwgNDEwOTUsIDM5NjIsIDY4MjQyLCAKKyAgICAyOTMyLCA0MTEwMSwgMzk1NCwgNjQ1NywgNDUxMywgNzQ1MzYsIDEyNzE4OSwgNzM5OTQsIDczOTkyLCAxNDY4LCAxMjAwMzMsIAorICAgIDk4MzA1NywgNDE4MDMsIDEyNzk5OSwgNDE4NDYsIDEyNzI0NCwgNTUyMzgsIDc2MzMsIDQxODQ5LCA2ODM4NSwgNDMyMCwgCisgICAgMzIyNCwgMTEzNzM0LCA5Mjc0MSwgNjYyODEsIDQyNTMxLCA3NDU5MywgMTUxMCwgMTI4Mzg0LCA4MjU2LCAwLCAxMTM5MywgCisgICAgMCwgODg3OSwgMTI4MDc1LCA5MjQ3NCwgODc3MCwgNzI0MTYsIDEyMDgxMSwgNzI0MTUsIDE5MTAsIDg2NzEsIDc4Mzc0LCAKKyAgICA0MjgzLCA2ODg0MiwgMTIwODI0LCA2ODM2MSwgNzgzMTgsIDI2NTQsIDc4OTMsIDE5NTAwNiwgMTI4MjQxLCAwLCA3MjM5NCwgCisgICAgNjUxMDYsIDQyNzYxLCAxMjg1NywgNDU4MSwgODQxMSwgNzgzNzIsIDc4MzcxLCA3ODM3MCwgNzgzNjksIDc4MzY4LCAKKyAgICA3NDQ3NSwgOTgzNDQ0LCAwLCAxNzMzLCA0MzkyLCAyNTY4LCAxMDc4NiwgNjk2NjEsIDAsIDgxODQsIDQxNDg2LCAwLCAKKyAgICA3Mzk2LCA3MTE2LCAwLCA2OTc4OCwgMCwgNzE4NSwgNzk2NSwgMTE5MTQ0LCAxMjg0NDcsIDkyMzQ3LCAxOTUwNjYsIAorICAgIDQxMzUwLCA5MTI5LCA5ODM0NDgsIDAsIDIyOTQsIDY0NTAxLCA2ODAzNCwgODMzMjYsIDEwNDgxLCAwLCA3MDAyMiwgNzE3MSwgCisgICAgMCwgMzQwLCA3MTEwNSwgOTM5NzIsIDY3MzYwLCAwLCA5MjIwMCwgMTI4MjQ5LCAxMjQ5NzksIDY3NjQsIDEyNzQ4NywgCisgICAgMTI4MzkzLCAwLCA5MjUwOSwgMTI4OTYyLCA2NTIwMywgMTEzOTIsIDExOTA5OCwgMTE5MzU5LCAxMTkwNzMsIDMyMTAsIDAsIAorICAgIDAsIDExODc5NSwgODI5NTgsIDk0MTAxLCAxMjc0ODQsIDkxNzYxOSwgMTE5MTQ5LCAwLCAxMDA0MywgMTIxMjE1LCAxMTg2LCAKKyAgICA0MTU3MSwgNjk5OSwgNjE3LCA5NDY0LCAxMjUxMjMsIDM2NzUsIDUyMDcsIDY1MDYyLCA1MjEzLCA3NDYxNiwgMjYxNywgCisgICAgNDEzNDgsIDQxNTY4LCAxMjg4MDMsIDMyNTMsIDEyMDUzNSwgMCwgODYzMCwgMTIxMjA5LCAwLCA1NTk2LCA1NTQ1LCA3Mjg4LCAKKyAgICAyNTg2LCA2NDg4NywgMTE5ODI2LCA1MjE3LCA3MTMzNiwgMTI4Njg3LCA5MTc2MTQsIDEyMTAzOCwgNjQyOTMsIDY4MDk4LCAKKyAgICAyNjM1LCA5Mjc2MCwgODMxMzcsIDk4Mzg0NiwgMCwgOTI3NDIsIDc4MzUsIDcwMDQwLCAxMjA3MDcsIDE5NDk4OCwgOTIyODUsIAorICAgIDY0NTU4LCAxMjcxMjIsIDEyMTQyNSwgNjcwODMsIDY3MDg1LCA3MDA5OSwgNzExMTgsIDU3ODQsIDk4MzEwMiwgMTk1MDUwLCAKKyAgICA5ODM4MTIsIDcwMDMzLCA0MDExLCAxOTQ1NjUsIDY4MTAxLCAxMjQ5NzgsIDc4NjQsIDQyNTQsIDY1MDk1LCA5ODM0OTgsIAorICAgIDU2MDAsIDM5MDMsIDEyNzA4MywgMTA0NDcsIDU1OTgsIDEyMDcsIDEyMDUyMSwgNjY2ODksIDM1MDEsIDQyNTgyLCA0MzYwMCwgCisgICAgMTI5MDU0LCAxMjcxMDMsIDExMjQsIDU1OTcsIDE5NDc3OCwgMTk0NzcyLCA5MzIxLCA5ODM0ODYsIDc1MDQwLCA5ODM0ODQsIAorICAgIDY3NDAwLCAxNzE5LCA2ODM1NiwgNjgzNTQsIDk2NzEsIDExMjUsIDQzOTksIDY4Nzc1LCA2NjI3NCwgOTgzNDkwLCA3NjMxLCAKKyAgICA1NDg4LCA3MTI4LCAxMjA1MzIsIDAsIDU0OTEsIDExODc5NywgODkzNywgNDMwNDQsIDI2MDQsIDc0MTg3LCA1NDkwLCAKKyAgICA0MzA0NiwgNTQ4OSwgNzIxMiwgMTE3NjgsIDQzMDQzLCA2MzAwLCAxMjcxMjEsIDcxMjIsIDk4MzA5MCwgNDM5MCwgNDU0LCAKKyAgICA0MTM5NywgMCwgOTg3NSwgNzU5MywgMTk0NzkxLCA5MjI3NCwgMTE4OTEzLCA3MjA3LCAwLCA2NTkwMSwgMjM5NCwgMjU3NSwgCisgICAgMTE5MTg0LCAzNzQ2LCAxMTAxNiwgNjU3NTIsIDkyNzU3LCAwLCA0MzQyMywgMTI4NjgzLCAxMTk4OSwgMTE4ODg5LCAKKyAgICAxMjc3OTEsIDEyNzk5NSwgNzgyOTYsIDAsIDgyNDksIDEyODE3MiwgMTExMDksIDc4NTMxLCA2NjQwLCA3NDgwNiwgMjU5OCwgCisgICAgNTEzLCAxMjcxMTgsIDY1ODYsIDg2NTYsIDEyOTMwMSwgNjk3OTIsIDY1MDA4LCAxOTQ1OTcsIDcxMTExLCA3ODM4MywgCisgICAgMTk0Nzk1LCAxMjc0NzQsIDkyNTE1LCA2ODQ3NSwgOTM5NzMsIDE5NDU4NCwgNjM3OTksIDc4NjM3LCAxMjY0NywgOTE3NjA2LCAKKyAgICAxMjgwNDMsIDY5ODkzLCAxMDM2LCA2ODA5MCwgOTI0MTksIDE3MjMsIDY4MjE1LCA3NDIxNywgMCwgNDE1NzksIDI0NDQsIAorICAgIDEyMDcyMiwgMTA3MDUsIDczODc2LCAxOTUwNTQsIDc0NDg2LCA5ODM0NjksIDc0MCwgMTE5MjIyLCAxOTQ5NzgsIDE5NDk4NCwgCisgICAgMCwgNDIzOCwgMTEwNzEsIDk0NTksIDQzOTM2LCA0MzkzOCwgNzgxMzksIDE5NDk4NSwgODEyMSwgMTA0MzgsIDc0NDg3LCAKKyAgICA0MjU3NCwgMTMyODUsIDQzOTY3LCAxMTkwNywgNDM5MjgsIDU2OTAsIDkyMjU1LCA1MTE2LCAwLCA0MzE4MSwgMTMwOTUsIAorICAgIDc3OTI1LCA0MzkyNiwgNjQ0OTgsIDAsIDk1MDYsIDY5NzgsIDcwMTc2LCA3NDkzMSwgMCwgMTEzNzQzLCA3ODM3OSwgCisgICAgNDM5MzQsIDEyNzg0NSwgMTEyMiwgMzE3LCAwLCA3MTA1NSwgMTIwNjIxLCAwLCAxOTIwLCAwLCAxMDE3MywgODI3LCAwLCAwLCAKKyAgICA3ODM3OCwgMTE5NjAwLCA1MjIzLCAxMzA0LCAwLCA4MzUyNiwgNTIyNiwgMTI2MDIsIDk0MDQ0LCA1ODgwLCA5MzI5LCAKKyAgICA3NzU4LCA5MjM5LCA0MTE3MywgNTIyNCwgNTQ4NywgMTIyMiwgNTY5MiwgNDE3MjUsIDY5MjI5LCA5Njc0LCA1Njk1LCAKKyAgICA0MTcxMSwgNjQ2MjcsIDE5OTA5LCA3MTA3NywgNzQ2MDQsIDU2OTEsIDI4NywgODY2LCAyMzMsIDY4MTM4LCA5ODM0NDMsIAorICAgIDQyODE2LCA5NDAzNiwgNjUxNDAsIDY4MDI4LCA4MzA5MywgODgzMCwgNjU2OCwgNDIzMDAsIDEwNTI0LCA0MTE3NSwgCisgICAgODMwOTQsIDk4MzQ0NywgNjg4MjcsIDUyOTYsIDk4MzQ0NiwgNDI0OTIsIDQzNDAyLCA5MjQ2NiwgMzMwMiwgMCwgNzQ4NTgsIAorICAgIDY1MTYsIDY1MTUsIDY1MTQsIDY1MTMsIDY1MTIsIDAsIDc4NTYsIDg2OTAsIDk4MzY4NiwgNzA4NzAsIDEyMTIyLCAKKyAgICAxMTk2MDIsIDQzOTc2LCAxOTQ5MzcsIDE3ODUsIDY5OTI1LCA2ODYyMiwgNjUxNTMsIDY4ODA5LCA1MTM4LCA5ODM2MzcsIAorICAgIDcxOTIyLCAxMTg4NjksIDAsIDQ1NDAsIDQxMTgxLCA5MTc5MjAsIDYyMDAsIDAsIDUxMzQsIDY5OTgwLCAzMjIsIDQ2NDMsIAorICAgIDUxMzIsIDEyMTE4NCwgNjM4OSwgMTIwOTk4LCA1MTQzLCA4MzIwNSwgODc5MCwgMTIwOTExLCAxMjAxMjEsIDEyODY5NSwgCisgICAgNzExNjgsIDg4NjksIDY5OTE2LCA5MzA2OSwgNDIwNjAsIDcxMzI2LCA5NjQ4LCA4MzEwOSwgNzExNzAsIDEwMjcwLCAKKyAgICAxMDI4NiwgMTAzMTgsIDEwMzgyLCA0MzUyOSwgNjY0NzcsIDE5NDgwMCwgMTI4NTM0LCA3NDE3MCwgMCwgMzIzNCwgNDM4MzUsIAorICAgIDkxNzgxOCwgNzAxMTEsIDQzMTM5LCAxMTg4MTUsIDEyNzA4NCwgMTIwNjI3LCA4NzY3LCA2ODIzMSwgNzQ0ODksIDk2OTUsIAorICAgIDcyNDM5LCA1MjAxLCA3NTA2MSwgNjIxNSwgMTI3MTQsIDYyMTQsIDEzMTAxLCAwLCAxOTQ5OTksIDY1MjY4LCA3NjYxLCAwLCAKKyAgICAxMjA5MDksIDExMDI3LCAxMjg1OTYsIDEwMDU5LCAxMDUxMSwgNDIwNzUsIDk3NjcsIDc4OSwgMTc0OSwgNzg4OTAsIAorICAgIDY3MTE1LCA5ODM2NzAsIDMyMCwgMCwgODY0NywgODMwNTQsIDMwNDksIDAsIDY0NzEsIDQyMDcxLCA0MzE1NiwgOTkyNSwgCisgICAgMTI3MzU2LCAxMTg4OTQsIDY2NDc4LCA0OTYwLCA1NTQ5LCAxMjczNTksIDEyNzM0NiwgODQ4NSwgNDY3MSwgNTQxOCwgCisgICAgMTI3MzUwLCAzMzUxLCAxMjA4OTIsIDEyNzM1MSwgMTA2MTAsIDU0MTQsIDMwNjQsIDYyMTIsIDQyODYsIDU0MjEsIAorICAgIDEyNzM0NCwgOTU1NCwgNjgwNTEsIDk0MDQ4LCA2Njg5NiwgNjY1MywgODMwNDQsIDgzMTAyLCA2NDUxMCwgNjIxMywgCisgICAgMTI4ODUsIDAsIDExOTA0NSwgNjQ3MjAsIDkxNzg3MywgMTIwNzU5LCA3Mzc0MSwgMTI2MDMsIDcxMzEsIDExMTA4LCA0NTY2LCAKKyAgICA3NTE4LCA5MzE3LCAzODAxLCAxMDM0MiwgMTA0MDYsIDEyNDkzOCwgMTE5MjU5LCA0MjU3NiwgMCwgNTIwMCwgOTI5NDYsIAorICAgIDEyMTQzNSwgOTgzODk1LCA5MTgzLCAxMjczNjEsIDc0NDU4LCA2NjI4MiwgMzk1LCA1NDgyLCA1MTk4LCA0MzQ5LCAxMDM5MCwgCisgICAgNzQyMDIsIDUxOTYsIDQzMjI0LCA2MTEzLCA0MjAwOSwgNTIwNSwgMTI4MzgzLCA0MzMwNywgNzAyOTcsIDExODk3MywgCisgICAgNzA0NjcsIDEyMTM0LCAxMjExNjcsIDAsIDExODg0MywgOTEyNiwgNDM1LCA5ODM2MjQsIDEyMDE0LCAxMDM3NywgODA5MywgCisgICAgOTA3OSwgMzIwMywgMTkyLCA2NTEwOSwgMzM4NSwgMTI1MDc1LCA2NDQzMCwgNTM4MywgMTAyOTQsIDEwMzI2LCAxMjczMDksIAorICAgIDU3MzgsIDEyMDA4OSwgMzMzNiwgNzgzNTUsIDUzNjEsIDM2MjMsIDQxMTU5LCA4MzM3OCwgNjgxMTIsIDc4NzIsIDg1ODEsIAorICAgIDAsIDEyNjAsIDMxNDksIDUzNTksIDEyMDEzNCwgNzQ5NTUsIDc5MTQsIDUzNTcsIDcxMTkwLCA3NDMzOSwgMjYyNCwgNTM2NCwgCisgICAgOTgzNjA4LCAxMTQzMSwgMTIwMDMwLCA5MTAxLCAxMTA1OCwgNzgyODgsIDY3MTA3LCA3ODI5MywgNDIyNzEsIDc4Mjg5LCAKKyAgICA0MjkxNywgNjcxMTEsIDEyOTE3OSwgNjU1NjYsIDY3MTcsIDEwNjE5LCA0MzM2MCwgNzgyOTEsIDc4Mzg0LCAxMTgzMiwgCisgICAgNzgzODIsIDc4MzgxLCA3ODM4MCwgNjk4NjEsIDkzMTksIDcwOTcsIDExOTA1NSwgNzc5MDYsIDMyMzIsIDczODI0LCAKKyAgICA3NDU4MSwgNzgwODcsIDAsIDcxMjA1LCA0MTg4OSwgOTI0NTMsIDEyOTE0NCwgMTE2MSwgNDE4OTUsIDc0MTAzLCA5NzAxLCAKKyAgICA4NjIyLCAxMjUwMjUsIDAsIDY4NzcyLCAxMjA1ODgsIDUwMTIsIDcxNDUzLCA0MTM2MiwgNjk4NjIsIDY4NTA3LCAxMTkyMSwgCisgICAgMCwgMTE3NjksIDY4NzgyLCA2ODYwOSwgNDEzNjQsIDEyMDk0NywgNzQyMjgsIDQxMzUyLCA0MTM2MSwgOTE3OTAzLCAKKyAgICA0MTM2NiwgMCwgMzM1NiwgMTE2MTEsIDkxNywgNjg0MjIsIDExOTkxNSwgNzEzNCwgODE5OSwgNzgzODksIDExOTYxOCwgCisgICAgNjc3LCAxMTk5MTYsIDkxNzg3NiwgNzE0ODIsIDEyNzE2OSwgNjg3NDcsIDAsIDY4NzM4LCAzMzQ5LCA3NDEyNSwgNzAyMiwgCisgICAgODkyNywgNDczOSwgOTI1OTksIDU4MDIsIDE5NDg3NCwgODYxNSwgMCwgMTI4MDU4LCA0OTEsIDc0NDAxLCAxMDE5MCwgCisgICAgNjg3NTUsIDY1ODM3LCA2ODgwMCwgODQyNiwgMTEwOTIsIDk4OTEsIDAsIDQyNDk3LCA3MTEzLCA3NTg2LCA0MjMwNSwgCisgICAgMTA4NTIsIDAsIDQyNjQ4LCA0NjA2LCA2ODQ0OCwgOTA5NSwgNzc0MSwgMTI2ODQsIDQxODg1LCAxMDQ2LCA3MTI0LCAKKyAgICAxMjg2MTAsIDY4NzUzLCA1ODE1LCA1MTcxLCA2NTUzOSwgNjg2MTIsIDY5MzIsIDc0MjY3LCA0MjM5NCwgNDE4NzgsIAorICAgIDc0ODQ5LCA3NDk0NywgNzI0MjQsIDUxNjksIDExOTM1LCAwLCAwLCAzMTc1LCAxMjA4MjIsIDE1MzcsIDEyMDgwNCwgNTE3NiwgCisgICAgODkwNSwgNDEzNiwgNDg3MSwgNzgyODcsIDEyMDY2MywgOTgzMywgMCwgMTEzNzMwLCAxMTI4LCA2NTkyMCwgOTE3ODc5LCAKKyAgICA5NzExLCA3MDU3LCA5NDA4LCA5NDA5LCA5NDEwLCA5NDExLCAzNjYyLCA5NDEzLCAzMzc4LCA5NDE1LCA5NDE2LCA5NDE3LCAKKyAgICA5NDE4LCA2MzIwLCA5NDIwLCA5NDIxLCA1ODk3LCA5NDIzLCA1MTY1LCA1MTI2LCA0MTM4NSwgOTgzOTM4LCA0MTM4OSwgCisgICAgMTI3OTYzLCA4OTU1LCAzMzc0LCA5NDAwLCA5NDAxLCA3MTE5LCA5NDAzLCA5NDA0LCAzNTA3LCA5NDA2LCA3NjI5LCAKKyAgICA5ODM2MTcsIDE5OTI1LCA0MjY2OSwgNjg0NjMsIDE4MywgNDM5ODUsIDI2MzEsIDcwODExLCAxMDYyNywgNDExMzAsIAorICAgIDcxMDc5LCAzOTk2LCAwLCA3MTQ0MiwgMTI4OTEzLCAxMTkzMTMsIDExOTMwNywgNzg3NjgsIDY1ODAsIDQzMzIsIDY0ODI1LCAKKyAgICA2NjMyOSwgMTA3MjYsIDY2Njg2LCA0MTEyNSwgNTg5OSwgNDEzNjUsIDEyNzIwNiwgMTIwODUsIDY2OTAyLCA1NzQsIAorICAgIDEyNjcwNSwgNzc4MjUsIDczODI4LCA1NDQ4LCA0MTA1OCwgNTQ0NiwgNjU5MzIsIDQxMzIyLCA0MjIxMSwgNTQ0MiwgNDE5MCwgCisgICAgNzc4MzQsIDc3ODM1LCA1NDUxLCA3NzgzMywgMzYxNiwgNzc4MjgsIDY4ODE3LCA3NzgzOCwgNzcwOCwgNzQ3NTksIDIyMjgsIAorICAgIDY1ODY3LCAxMDM0NSwgMTA0MDksIDQxOTEsIDEyMDM3OCwgNzc4NDQsIDczODAwLCA0MjE4MSwgNzc4NDMsIDc3ODM5LCAKKyAgICAyMDYwLCAxMjExOTMsIDcxMTEsIDExNzg4LCA2NTM3NiwgNjgxMjksIDEwNDE1LCA3NDEwMiwgOTgzNjI1LCAyMDUsIAorICAgIDgzMDQwLCAxMDM1MSwgNjcxNTEsIDAsIDk4NjIsIDY1ODgsIDQzMjU3LCA2NDY5NywgNzM5OTgsIDQxMzU1LCA1NTA1LCAKKyAgICA3NDk2NiwgNTUwMywgODAyMSwgMTI4MDM1LCA3MTI1LCA5ODE5LCA0MTM1NywgODAxMSwgNDI4ODUsIDU1MDcsIDEyMDQ0LCAKKyAgICA5MjYzNiwgMCwgMTAwMjYsIDU0NzIsIDcxMDksIDExOTEsIDEzMTA2LCA1NDcwLCAxMDMyOSwgNTQ3NiwgODk5MSwgNjYzMjIsIAorICAgIDY5Nzc4LCAxMTEzMywgNDI4NzQsIDg1NTAsIDQyODc2LCA1NTkyLCAyOTE5LCAxMjkwNTIsIDI2NzUsIDU1OTUsIDc4NDExLCAKKyAgICA0Mzc2MiwgNDM2NywgMTI3OTEyLCA5MTc3ODIsIDU0NzgsIDU5MDQsIDU1OTQsIDAsIDc0MTUwLCA3MjkxLCA1NTkwLCAKKyAgICA0Mzc2MSwgMTMwNjcsIDExODkwOSwgNzUwNjksIDk4MzEwOCwgOTczMSwgNjk3MzEsIDY0NjMzLCA3Nzg1NywgNzc4NTQsIAorICAgIDcxMjE3LCA3Nzg1MiwgNzEyMjcsIDc3ODUwLCAxMDc1MCwgNDM3MTQsIDc3ODU4LCA3MTM3LCAwLCA2NjkwOSwgMTI4ODcsIAorICAgIDEwNTUxLCAxOTQ1NjQsIDc3ODY2LCA3Nzg2NywgNzc4NjQsIDc3ODY1LCA5OTI5LCA1MTk5LCA5OTM2LCAxMTIwLCA0MjM4NywgCisgICAgMCwgMTQ0NCwgOTQ4NiwgNzU1NCwgNjU4MzksIDU1MjUyLCA3Mzk3MiwgMTQ0MiwgMTI5MDgwLCA1ODk0LCA3MDA2OSwgCisgICAgMTI4NjcyLCA0MTE3MSwgOTI1MTEsIDcwMzU4LCAxMzIzLCAxMzE2MiwgMTIwNTk5LCAzMzM0LCAxMjg3MDQsIDkyNzA5LCAKKyAgICA3Nzg4MSwgNjYwMjIsIDAsIDY5NzcwLCAxNjUxLCAxMjAzNjQsIDg4NjEsIDAsIDAsIDExNDIsIDk4MzExMiwgODI3MSwgMCwgCisgICAgOTgzMDU4LCAxMjY2NDUsIDEyOTAzLCA3ODQwNiwgNDAwMiwgNDM2MjYsIDEwNDQyLCAxMDY3NiwgMzM0NCwgMTI4OTEwLCAKKyAgICAxOTQ3ODcsIDEyOTIwLCAxOTQ1NjAsIDcwNDk3LCAxOTQ2ODcsIDY2NjQyLCAxMjc3LCA2Njg3NiwgNzg3MSwgNjcxMDYsIAorICAgIDcxNDg3LCA3ODg1MywgMTI5MDY4LCA3ODg1NCwgMTIwMzYwLCA5ODM0OTIsIDExNzg0LCAwLCA3ODAxMiwgNDcwMCwgCisgICAgNDM4NTYsIDc4ODU4LCAxMjAzNTksIDExMDEyLCA5ODM2MjcsIDc4ODU2LCA3ODQ0OCwgNzc4NzksIDQ5NzMsIDg3ODQsIAorICAgIDc3ODc3LCA3NDgwNCwgNzc4NzQsIDc3ODY5LCA3Nzg3MSwgNDI0NDAsIDcxMjI1LCA0MzExOCwgMTE5ODc1LCA0MjM2NCwgCisgICAgNjc3NCwgNjc3MywgOTE3NTYwLCAxMjAzNjksIDEwMzQ2LCAxMDQxMCwgNzg4NTksIDkyNDMsIDI0NjQsIDc0MjYzLCA2MTA4LCAKKyAgICAzMzcyLCAwLCA2MjQ3LCA0MzExNywgNzAzNjQsIDcxMjEsIDc0MTY2LCAxMjQ5NzMsIDEyMDM1NSwgOTI1MzcsIDE5NDg0NiwgCisgICAgMTE5ODc3LCAxOTUwMzQsIDcwMzU3LCAxMTk5MjIsIDAsIDY3MTE5LCAzMzU0LCAxOTUwMzcsIDQxOTIsIDkyODksIAorICAgIDExODk5OSwgNDExOTEsIDM4NzYsIDAsIDcwMDY3LCAxMjA2NjAsIDQzNjk2LCA0MzM4MCwgMCwgOTgzMDkxLCA5ODM5NjUsIAorICAgIDk4Mzc1OCwgMTE2MDMsIDk4Mzk1NCwgNzUwNzQsIDY1ODksIDEyODU2NCwgODI5NzUsIDEyMDk5MywgNjc4MTIsIDk4MzcwMCwgCisgICAgMCwgMTI5MDg3LCA0MjU3MiwgMTI4MjY0LCAxMDYzMCwgNzQ4MjcsIDE5NjMsIDExNjIyLCAxMTg4ODIsIDExNjU0LCAKKyAgICAxMjEyODcsIDc1NTAsIDEwNjg2LCA1OTAzLCA2NzA5OCwgNzgwMDksIDQxMzI5LCA5NjYyLCA5MTc5MzcsIDY0Njk4LCAKKyAgICAzMzY2LCAxMDM5OSwgOTE3OTM4LCA1NTQyLCAxMTAxMywgMTI3OTI3LCA3MTA2MiwgMTk0Njc3LCA3MTQ2MSwgNjcwOTAsIAorICAgIDY5MjUsIDAsIDAsIDkyODkyLCA3MTg1NiwgMTE1NjgsIDk4MzY3MywgNDMzNjcsIDY0NTc5LCA5MTc5MzAsIDc4NTIsIAorICAgIDExMTM4LCAwLCA2NzU0LCA2MzEyLCA3Nzk1NiwgNjQ2NzIsIDY1Mjk2LCAwLCAxMTg5NTcsIDAsIDQxNiwgMTIyOTYsIAorICAgIDY4NDU3LCA3MzgzNCwgNjgxNzcsIDExMDUwLCAxMDk4NCwgOTIyMDgsIDAsIDAsIDkyMTgyLCAxMjkxNDYsIDk4MzYwNSwgCisgICAgOTUzMiwgNjYzNTUsIDExOTI2NCwgNjgwNzMsIDExMzY5NSwgNjQzNDMsIDE5NTAzMiwgOTI3NDQsIDE5NTAzMSwgMCwgCisgICAgMTk0ODQ3LCAxOTUwNTcsIDExNDQ1LCA2ODI5NCwgMjExMiwgMTI4NzQxLCAxMjg4MTQsIDEwMTg1LCAxMDIxLCAxMjgxMzAsIAorICAgIDk1MDcsIDEwMjEwLCA3NDU0NCwgODAyMywgMTIwMCwgMTIyNDMsIDc4MDAxLCA1MjgyLCA3ODAwMywgOTYyNCwgMTE1NDUsIAorICAgIDAsIDEyMDI3NiwgMzM0MywgNDQyNCwgMTEwNDcsIDE4ODUsIDQzMjY4LCAzODk2LCA3ODQ0NCwgNjY0OTcsIDI5NDcsIDM5MiwgCisgICAgNzg5NCwgNDM5MSwgNjgxMzksIDEyMTA2NCwgMTMwNTksIDc0ODE2LCA3Nzk5OCwgMzM4MSwgNzk0MiwgMCwgNjkyMTksIAorICAgIDkyNDMzLCAzNTU4LCAxMjkxOTAsIDM5MTMsIDcwNDI5LCAxMjEzNzYsIDc4MjM1LCA3MDQ0LCAxMjY1LCAwLCA2MzA5LCAKKyAgICA3MDQ1LCA3MTc1LCA3MDQ3LCA3ODIzOSwgMTE3OTEsIDk4MzEyMiwgOTE3NTg3LCA4MjIxLCA3ODMwNywgNDE4NjQsIDAsIDAsIAorICAgIDY3MDc1LCA3MTIxOSwgMTY3LCA5ODM5MDYsIDc4MzAxLCA5ODM2NTMsIDc0MjExLCA0MTg5NywgNjcwNzIsIDAsIDkxNzU4MywgCisgICAgMTI3MTQwLCA2NzA3NiwgMjQ5MywgMCwgMTEzNzc4LCAxMjEyNDUsIDc4MTA3LCA2NDM1NCwgMCwgODc3NywgMTI3OTQwLCAKKyAgICA0MDYsIDg4ODQsIDIzODUsIDc4MjEwLCA5MjQ1MCwgOTE3NTkwLCA5MTc1NzMsIDQzMDMwLCA0MjAyNywgMTIxMTQsIDAsIAorICAgIDEyODU5NywgNjQ5MzYsIDE5NDY5NSwgMTE5MjY3LCAxMjA2MjksIDEwNTYxLCAxMjg5NDAsIDgzNjUsIDEyMDUzOSwgCisgICAgOTgzNzc0LCA2NTg0MSwgMTIwNzg3LCAxMTYwMSwgMCwgNzQxMjEsIDEyODg5NiwgODMxNzYsIDc4MzQsIDc0MTU5LCAwLCAKKyAgICA5MTc1NzQsIDEwMjk4LCA2NjI0LCA0OTA4LCA5MTc1NzcsIDE2MzksIDEyMDg0MiwgMCwgNzA4MDMsIDYzMjcsIDY3MjQsIAorICAgIDEyNDk1MywgNjYzNTQsIDkyNTY2LCA2OTkxMCwgNDgxNywgMTEwODcsIDE5NDc1OSwgOTI1MzYsIDcwNDMsIDk2MDAsIAorICAgIDExMDIyLCAwLCAwLCAwLCA5ODM1OTksIDAsIDczOTU0LCA3NTQ4LCA2NDc5NCwgNDIwNTAsIDEyMjkxLCA1NTI4OSwgCisgICAgMTI4NzgxLCAxMjM0MywgNjU3LCA2NzExMCwgNDI3MDUsIDQ0NjEsIDExMzQsIDE4MzgsIDc4NDM4LCAyMDU3LCAwLCA0NDY4LCAKKyAgICA5Mjg5MSwgMTk0OTQ1LCA4MzA1NiwgNDQ1NiwgNTIwNiwgMTA3MjAsIDAsIDQyNTIzLCAxMjc1MjAsIDAsIDkzMDQ0LCAKKyAgICAxMjk0MTEsIDY1NTUwLCAyNjAsIDQ4MTYsIDY3NjU4LCAxMDY4NywgMCwgNDgyMSwgNDQ2NiwgMCwgODMxODIsIDQ4MTgsIAorICAgIDEyOTA1OCwgNDE0MDMsIDExOTk3NywgNzI0MjIsIDEyODQ1OCwgNDE0MDYsIDQzMjczLCA3NDE2MCwgNjk4MDUsIDczOTM5LCAKKyAgICA5MjYzOCwgMTE5OTg0LCAxMTk5NzksIDQxNDA0LCAxMTY1LCAxMTk5ODAsIDQ0NTEsIDEzMDg3LCAwLCAxMTI4NCwgCisgICAgMTE5OTg3LCA3MDA5NywgNjUxNTUsIDQzMDE0LCA1NDM5LCA5MzYzLCA3MDA3MCwgMzM3NSwgMTI4NDQ4LCA1OTAwLCAKKyAgICA5Mzk5MCwgNzg4OSwgMjcyMiwgNDIyNjIsIDk4MzQ4MSwgMCwgNjcwNzgsIDEyODQ1MSwgMjI4MiwgMTIxNDIyLCAxMjc4MTAsIAorICAgIDExNDAxLCA2NzA3OSwgMCwgNjg0NTksIDEyNTAyOCwgOTgzMTQxLCAwLCA3MDE1MCwgNjU0MzgsIDAsIDcyODAsIDEyNzg4NywgCisgICAgNjgwNTUsIDcwMTQ2LCA0ODY4LCA4Mjk3LCAxMTk5NjYsIDcwMTQ4LCAxMjUwMDgsIDEyODc0NCwgNDMxNjEsIDcwMTQ0LCAKKyAgICA5MjM2MCwgMCwgNTE4MiwgMCwgMTIwNTQyLCAwLCAwLCA0MjI2LCA3MDE4NiwgMTIxMzUsIDU3MzIsIDQ0NjQsIDE5NTA4MywgCisgICAgNzEzMzAsIDk3NywgNDQ1OCwgNDM4MjcsIDkyOTcxLCA2NDc3MCwgNzQ4MzgsIDAsIDM0NCwgMCwgMTIxMjI4LCAxMzk1LCAKKyAgICA2NDI3OSwgMCwgOTIyNDAsIDEyMTE3OSwgNzg2LCAxMjY5OTUsIDQzMTc0LCA2NDM0MCwgODMwNzcsIDE5NDc2NywgNzM5NzEsIAorICAgIDQzMDI2LCA3NjEyLCAxMDEzMiwgNjQ0MTMsIDY1MDI1LCAwLCAwLCAwLCA5Mzk1NiwgOTgzOTE3LCA2ODQ0NCwgMCwgCisgICAgOTI0MzcsIDEyNDkyOCwgOTI1NDksIDEwMjA0LCA5MjY1NiwgODMwNzgsIDExOTI3MSwgMTI4NDMxLCAxMzk5LCAxMjE0NjMsIAorICAgIDY1MjE3LCAxMjE0NjUsIDg4NTIsIDEyMDgwOCwgMjQxLCAxMjE0NjksIDQ5MDcsIDEyODQyNywgOTgzNjM5LCA3OTMyLCAKKyAgICA5NzI3LCAxMjg0NjMsIDc0MjU1LCA4NzQ4LCAwLCAxMjg0MjgsIDk4MzYzMSwgMCwgNDI3ODAsIDU1MjYzLCAxMTM2NzcsIAorICAgIDk4MzU2MCwgNDIxNywgOTMwMzQsIDg2NTAsIDEyNzk5MSwgMTIwNjczLCAxMjgyMTUsIDY5OTAwLCAxMTg4NzIsIDQzMDk5LCAKKyAgICAzOTY1LCAxMTkxMTksIDY3MTksIDEyODAwNywgMTMzMDAsIDc4NDM5LCA5Mzk3MSwgNDMwNTcsIDY2NTg4LCAxMTg5OTEsIAorICAgIDY2Mjg5LCAxMjA5MDIsIDczODE1LCA0NDIwLCA5ODMxMjAsIDY0MTAsIDc3NjAsIDAsIDcwNDY4LCAxMjg3NTIsIDEyMDY4NCwgCisgICAgMTIxMjQ2LCA3Mjk0LCAxMjgyMTgsIDQzODY5LCAxMjA4NTksIDkwNjYsIDEyMTMyMSwgMTE5OTMsIDQzMTg4LCAyNjI2LCAKKyAgICA3NzYyLCA5ODM4NjYsIDExODgzMSwgOTI4OTksIDkyNjAxLCA0MjgyNSwgNDE4NTQsIDUzMDQsIDcwMjkwLCA3ODUxNiwgCisgICAgNjkxOSwgODYxOSwgMTE5NjU1LCAxMDAzOCwgNjY0NTQsIDk1OTIsIDQyODUxLCAxMjA1MzcsIDE1NDIsIDkyMzAzLCAKKyAgICAxMjg4MTksIDAsIDEyNzMyNywgMTIxMTk5LCA3NDMxMSwgNzg0OTcsIDAsIDEwMTgxLCAxMjQ5MzcsIDQzNjI0LCAxMjkwNjAsIAorICAgIDc3NzksIDkxNzU1MSwgMTAxOTUsIDk0NzksIDYwMjksIDEyODM3NCwgOTIyNjgsIDIyMjQsIDAsIDY1NTc3LCA4OTkzLCAKKyAgICA2NjM1OCwgMCwgNDIzNzgsIDMzNjgsIDYwNiwgMTI3MDMwLCA3Njk3LCA2OTIzNywgNjk3ODcsIDIwMzAsIDcwMTA2LCAKKyAgICA2MDI3LCA4MzcwLCA0MzIyLCAwLCA2NTIwNywgMCwgNzAzODYsIDEyNzkwMywgOTgzMzM5LCA5ODMzMzgsIDI3MzUsIAorICAgIDQyODMxLCA3NzkzNSwgNzA0MzksIDc0ODY2LCA4ODgxLCAxMTkwNDcsIDAsIDcwNDMzLCA3Mzk0NiwgMCwgMTk0NzAzLCAwLCAKKyAgICA2ODE0MCwgOTgzOTI4LCA5NTc2LCA3MDI4OCwgMzM0NywgNDE2MCwgNTE1NCwgNTUyODgsIDM3OTQsIDY2NTY0LCA4NTMwLCAKKyAgICAxMjcwNjMsIDc3MDksIDQxMTEyLCAxMTk4NjgsIDY2NTYwLCA4MzgxLCA0NTcyLCAxMjg3NiwgNjY1NjEsIDEyODkyMSwgCisgICAgNjc1OCwgNjYwMzEsIDE2MTUsIDU4NTUsIDgwOSwgMTI3MTE3LCA5MjI4MywgMTI4MzE2LCAxMjgwMDQsIDU3OTksIAorICAgIDEyODkyOSwgNzAxMDAsIDEyODYwNywgNzI2MCwgOTgzMzI2LCA0MzAzMSwgNjQ0MjUsIDY1MTI4LCA3ODgxOSwgNjQzODYsIAorICAgIDY1MjU3LCA3NDkwOSwgNjg2MTYsIDEyMDYwNywgOTM0NywgODMzNjAsIDY1MzIsIDAsIDkxNzkxOCwgMTIwODYwLCAKKyAgICAxMjcwNjAsIDY1ODI4LCAxMjAwMDYsIDI4MywgNjg2NjUsIDc4ODEzLCA1MzIsIDc4NjYzLCA3ODgxNywgMTI4MDIxLCAKKyAgICAxMjA2MDksIDAsIDMzNzAsIDkxNzg4MSwgMTEzNjEsIDU0NDMsIDcxNDMxLCA4MTUzLCA3Mzc2NywgMCwgMTA3NDEsIAorICAgIDEyMTUwMywgMjI5OCwgMCwgMTI1MDM5LCA2NTQ5NSwgNjQ3MDYsIDk4MzMyMCwgNDMzNDQsIDk4MzMxOCwgNzE0NCwgOTQ2NiwgCisgICAgNzg4NjYsIDk4MjQsIDY3MTQyLCAxMjg5NjMsIDY3MTMzLCA2NzEzMCwgOTE1LCA0MzQyNSwgNjcyOTIsIDQzODY1LCAKKyAgICA2ODIzMiwgOTgzMTExLCAxMjA4ODgsIDQzMjY0LCA2NzEzNiwgNjcxMzcsIDAsIDQzMDM4LCA3ODg2NCwgNjczMCwgNzg4NjIsIAorICAgIDY4MTYxLCA2NDU1MCwgNTE4NiwgNzM2MCwgMTI3ODM3LCA3MDQ1MSwgMTIxMDgsIDEyMDY0NCwgNjUxMjQsIDQzMTI3LCAKKyAgICA2NjA0MywgMCwgNjMyNiwgNDMxMDcsIDc3ODI2LCAwLCA0MjU2MiwgMCwgMTI4ODIxLCAxMjgxNzgsIDEyMDkxOSwgMTE0ODUsIAorICAgIDYxMDMsIDkyNDY4LCA5ODMzMDcsIDExNzE4LCA5ODMzMDUsIDEyODg5LCA5MjY1NywgMTI1MDM0LCAxMjA2MzUsIDEyNzE1NywgCisgICAgMTIxMTI4LCA1NTI0NSwgMTI4NzA5LCAxNjMwLCA4MzAyNywgNjU0ODMsIDEyMDYzNCwgMTI1NjUsIDAsIDY1NDc2LCAKKyAgICA3MDM2OSwgOTgzMDcyLCA4MzAyOSwgOTI4MywgNzcwMCwgOTE3NTM3LCA5NjkwLCA2NTQ5OSwgMCwgNjQ1OTMsIDUxMiwgCisgICAgMzM3NiwgNjgwODAsIDAsIDEyODI1MywgNzc4OTIsIDYzMiwgMTI5NDAsIDc3ODkxLCA0MjUyOSwgNzg1ODcsIDE5NDYwNCwgCisgICAgNTk1NywgMTEwNTkzLCA4OTI2LCA5ODMzMDEsIDk4MzMwMCwgMTI4MjczLCAxMDc0NSwgMTAxNzQsIDczNzksIDY0NTgxLCAKKyAgICA1Mzg2LCAxMjA2ODYsIDExNzEzLCAxMDYzMywgNjk3MDgsIDUwNTYsIDAsIDAsIDAsIDEyMDc3MywgOTQwNTUsIDk4MTIsIDAsIAorICAgIDQ0NjAsIDc4NzkxLCAxMjQ5NTYsIDcxMzA3LCAxMjgwMzgsIDAsIDEyMTEzNSwgMTI3MTc0LCA2NDI3OCwgOTIzNzAsIAorICAgIDQzNDY2LCAwLCAwLCA2NDM4OSwgMjk1MywgNzAxMjIsIDE4MDEsIDEyODM1LCA3NDg0NywgMTIwODY3LCA3MzgyMywgCisgICAgODMxMTAsIDY2Mzc1LCAyMDg1LCA3MDIsIDQyNTc5LCA3Nzg4NCwgNzc4ODUsIDEzMDc0LCA3Nzg4MywgNjYyOTksIAorICAgIDk4MzI4NywgNzE0NDcsIDEyMTA2LCAxMjA5NzIsIDc0MjA3LCAxNzU1LCAxMDQ4MiwgMTI4NjMsIDc3ODk4LCAxMTYzLCAKKyAgICAyOTUxLCA5NTIyLCA2NzgxNiwgNzgyNjYsIDY2NjA0LCA5ODM4NjAsIDMzODQsIDY5MjI3LCAxMDcwMiwgODMwLCA3NzkwMiwgCisgICAgNzc4OTksIDc3OTAwLCA4NDUxLCA4MzMyNCwgMCwgMCwgNjY0NTgsIDEyODk1NywgMTI4ODcwLCA3NDg5NiwgMCwgMjkwOCwgCisgICAgMCwgMTExNzcsIDY0OTAyLCA0MjQzLCA5MjQ1NCwgMTIyMzksIDEyMTAwMywgMTI0OTU5LCA0NDQxLCAwLCA4Mjk2OCwgCisgICAgNzM5NDAsIDY0MzUyLCAxMjc1MTMsIDEyNTAzMSwgNDExLCA5ODMyNzUsIDkxOTksIDk4MzI3MywgNDA1NiwgMTE4OTkyLCAKKyAgICA0MTg5MCwgMTI4NTkyLCAyNzMwLCA0MTYwNCwgMTI4MzU1LCA1NDI4LCAxOTQ3NDMsIDMzNjQsIDQyMjY1LCA2NDQzNywgCisgICAgMTI3OTM1LCAxMTg4MTYsIDcxNDU4LCA5Njg0LCAyMTYsIDcxMzY3LCAxNDAxLCAxMjgwNTMsIDQ0MDEyLCA5MjYyOCwgCisgICAgNzE0NTYsIDkyNTg1LCA5MTU4LCA2Njg3OCwgMTExMjYsIDU3NjgsIDAsIDk4Mzc1OSwgMCwgNDg0LCAxOTQ3MzksIDAsIDAsIAorICAgIDY1ODk1LCAxMjUwNzYsIDEyMTM4MCwgMzMzOCwgNzM5MzUsIDU3MiwgNzA0MSwgMjczNiwgNjc2MDUsIDEyNzU0MywgCisgICAgOTM5NjIsIDI3OTQsIDg4MDcsIDY0NDkxLCA3Nzg0NywgNTQzOCwgNTIyMiwgNTM4MSwgNDMxMTQsIDAsIDUxOTMsIDUxMjUsIAorICAgIDU0NTYsIDU1MDksIDc3ODQ2LCAxOTQ3NDcsIDk1MzQsIDEyOTEwOSwgMTI5MDQwLCAwLCAzNDMwLCAwLCA0MjkwNSwgCisgICAgNzg3MTcsIDc0OTI5LCA5ODEsIDEyOTE4NCwgNDMzMCwgNzM5MjksIDEyMDUzNiwgMTgyNCwgMTA5MDgsIDEyNjUwNiwgCisgICAgNzAzNCwgNDE2ODMsIDY0NjE3LCAwLCA3Mzc1NCwgMzk1NywgNjQzNTgsIDY0NTQ3LCAxMjgyNTksIDY3NCwgNjM5OTEsIAorICAgIDk4MzI1MSwgMjk0NiwgNTM1NCwgNTI1MSwgNTMyOCwgNTMwNywgMzc1OSwgMTE0MTEsIDgzNjQsIDUxMjMsIDExOTYyOCwgCisgICAgNTI4MSwgNTQ2OSwgNTEyMSwgNzc5ODksIDExODk5MywgMCwgNTEzMCwgODMxODAsIDEyODM1NywgNzc5OTAsIDAsIAorICAgIDEyMDcyNiwgMTIyMSwgMjczMywgMTE3NDYsIDc3OTkxLCA1MjE2LCAxMTkyNjgsIDAsIDEyODQ3NSwgOTIxODcsIDM0NjgsIAorICAgIDcwMzMsIDkyMzAsIDU5MzksIDEyODM5NywgMCwgNTgwMywgNzE4NjcsIDY4NDAwLCA3Mjc4LCAxMDMyMSwgMTAyODksIAorICAgIDY0NjEzLCAxMDM4NSwgNDE3MDYsIDAsIDAsIDkxNzkzOSwgMCwgMTE3MzksIDc3OTg2LCA0MTk4MSwgOTI3NDMsIDU5MzgsIAorICAgIDAsIDQzNzY2LCAxMjQ0OCwgNzU3NiwgMTA0MDEsIDEwMzM3LCA3Mzg1MiwgMTI0OTk0LCAxMzA1NywgMCwgMTI2OTc2LCAKKyAgICAxMjkwODEsIDEwMDA5LCAwLCA0MTcwMywgMTIwOTUwLCAxMjE2NSwgMTI5MTkxLCAwLCA5ODg1LCAwLCA4MDc3LCA5MjYyMCwgCisgICAgMTI3OTA4LCAxMjEwNDQsIDE5NDk5NSwgMCwgOTI0NTcsIDEyOTEzOCwgNDIyMCwgMTA3MjUsIDEwNDMzLCAwLCA2ODM5NSwgCisgICAgNDk4NywgNjQ1MTksIDEyMTI2NSwgMTI1MDc4LCAwLCAxOTQ4MTMsIDEyODU3NCwgMTA5NzAsIDExNzMzLCAwLCAxMjA3OTIsIAorICAgIDEyNjQ5MCwgMTk5NDQsIDc0MzU2LCA5MDA5LCA4NTUxLCA5MjM0NSwgMTE0NjgsIDY0NjM2LCA3NTc1LCAwLCAyNzI0LCAKKyAgICAxMjg4OTksIDAsIDEyMzEzLCAxMTE1MSwgNTE1LCAxMTk5NDcsIDQyNzkxLCA2Mzk4NywgNzgyODYsIDExOTk0MywgCisgICAgMTE5OTQwLCAxMTk5NDEsIDExOTkzOCwgOTc3NSwgNDA0NiwgNDU4OSwgNDUyMSwgNjg2MjksIDkxNDEsIDkxNzkwNCwgCisgICAgNzg4NTAsIDI3NDEsIDY0Mzk5LCA2MTk3LCAxMzcwLCAwLCAxMjA4NDEsIDAsIDEyNTA2MiwgOTgzNDQxLCAxMjA4NDMsIAorICAgIDYxODQsIDg2MDYsIDMzMDMsIDQxMzcyLCAxMTc4NiwgOTQ3MywgNjYyMDMsIDY2MTc3LCA5MjQ0NiwgMTE1OTMsIDQzMDA3LCAKKyAgICA0NDc4LCA2NjE3OCwgMCwgMCwgMjc0NCwgMCwgNDQ3NywgNzgyNjcsIDgxNCwgNDIwNjYsIDY2MTgzLCA2NjIwNCwgNDM3ODYsIAorICAgIDExOTk2MSwgNjYxOTgsIDQxODgwLCA2NjE4OCwgMTE2MjMsIDc4MTQ4LCAxMTk1NSwgNjYxOTAsIDY2MTkxLCA0MTExMSwgCisgICAgNjYxODksIDczNzg4LCA3Nzg4LCA0ODQ3LCA5ODM0MjgsIDEyNzc1OSwgMCwgMTI4NDMzLCAyMjIxLCAxNTgxLCA2NTM1LCAKKyAgICA3ODE2MSwgMTI5NTQsIDQzMCwgNzgxNjAsIDU1MjU5LCA3Mzk0NCwgMTI4MDM2LCA1Mjc4LCA0OTQ1LCA0Mjg4MywgNDk1MCwgCisgICAgOTgzNDQwLCA2ODYyNSwgOTgzNDM4LCA3MjY5LCAxMjg0OTksIDU5NjQsIDEyOTA4LCAxMjQ5OTcsIDAsIDc0NzY0LCAKKyAgICA0MzUxMiwgMTE5MTQ2LCAxOTQ5MzYsIDQ5NDksIDk4MzQzMSwgNDQzLCA5ODM0MjksIDQ5NDQsIDU0NjcsIDExOTYwMywgCisgICAgNzA4NjUsIDY1MTM3LCA2MDQ0LCA2NTM5MiwgMCwgNDIxMywgMCwgNDEzMDMsIDkxNzU1NiwgMTk0OTMxLCAxMTk5NjIsIAorICAgIDQxMzA2LCA3Mzk4NCwgMjY5OCwgMTI3MTU5LCAwLCAxMjA3MiwgMzE5MywgMCwgNDEzMDQsIDgyNCwgMTI4Njc2LCAxMjA5MSwgCisgICAgNjcxMTgsIDc4ODk0LCAxMTk4MTYsIDQ2NzMsIDY0ODA0LCA0Njc4LCAxMTk4MjAsIDExOTgxOSwgNjUwNTksIDQzODYwLCAKKyAgICA2NzM5LCA2Njg0NCwgNTQ4MSwgMzQ5MCwgMTE5OSwgMTE5ODExLCA4MzU2LCA2OTk0NywgNjc3MDIsIDQ2NzcsIDEyNjg4LCAKKyAgICAzMTAyLCAwLCA0NjcyLCA3ODE3MywgNzgxNzUsIDU1MzEsIDY4MzY3LCA0MjU3NSwgNzgxNzAsIDc4MTY2LCA0Njc0LCAKKyAgICA0NTQ4LCA0NDAwNSwgNzEwODcsIDY4NjU4LCAxMTk5NDYsIDgwMjUsIDY4NjMwLCAxMjcwMjQsIDE4NTUsIDEyNzQ3NSwgCisgICAgNjg2NjksIDExODk5MCwgOTI0NDUsIDEyNzU1NCwgMTI2NjMwLCAxMjczMzksIDExOTY1MiwgMjc0NSwgMTE3OTcsIAorICAgIDk4MzQxOSwgMTI4MTU5LCA5MjAyLCA0NjU0LCA2ODQwLCA5ODM0MTYsIDY4NjM4LCA3Mzk5MywgMTA1MjUsIDQ2NDksIAorICAgIDY1MjA5LCAxMjE1MTIsIDEyMTUxMSwgNDY0OCwgNDMwODAsIDc1MDcwLCAxMjE1MDcsIDk4MzQwNiwgNjI0NiwgNjQ5NTAsIAorICAgIDc4MjgsIDQ2NTAsIDY3NzcsIDY3NzYsIDY3NzUsIDQ2NTMsIDc4MjIsIDcwMjg3LCA3NDYyNCwgNDMxODcsIDg2NjksIAorICAgIDEyMDY1OSwgNjgyMSwgNjUwOTMsIDk4MzU2NSwgNzg4ODEsIDI3MTYsIDk4MzQxMiwgOTgzMDYwLCA3MDUwMywgMTk0OTUyLCAKKyAgICA2ODM2OSwgMTIwMDU0LCAxMTA2MCwgODU0NywgMjcxMSwgNDIxNjUsIDc4MDI3LCA3ODAyNiwgNjgzNiwgOTgzNDIzLCAwLCAKKyAgICA0NjYyLCA3ODAzMywgNzgwMzIsIDkxNDksIDkxNDYsIDU5OSwgMjA4MSwgNzgwMzEsIDc4MDMwLCAxOTQ5NjIsIDQ2NTYsIAorICAgIDEwMTMwLCA2ODQ1MCwgNzgxMSwgNDA5OTQsIDE5NDk2NSwgNjQxNCwgNTk2NywgNDY1OCwgMzcyNSwgNTcxMywgNTgxNCwgCisgICAgNDY2MSwgNDI0MzQsIDk4MzQxMywgMTI4NzM3LCAxMTE5MCwgNjQ5MDQsIDkwMjYsIDEwODMzLCA3NDg2NCwgNzU0NywgCisgICAgNDg2NywgMTExMDAsIDEwMDA4LCAxMDIyMiwgMzA1NCwgMTk0OTU2LCA5NzQ0LCA3ODg2MCwgNzYwNSwgNDYyMiwgMTE5NjU2LCAKKyAgICA0Mzg4OCwgNzAzMDMsIDk4MzM5NSwgNjk5MDUsIDY3MTg4LCA5MDQ1LCA3ODg4OCwgNDIyNSwgMTk5MjYsIDY4ODMxLCAKKyAgICAxMjg4MCwgNjUzMDcsIDQ2MTcsIDY4NzU3LCA5ODMzODgsIDQxNzMyLCA0NjE2LCAxMDUxOCwgMTA0MjMsIDEwMzU5LCAKKyAgICA5ODMzODIsIDU5NTgsIDAsIDk4MzQzNSwgNDIxNSwgOTc4OSwgMTE5NjE5LCA0MzIxLCA0NjIxLCAxOTUwMjgsIDQxMzEzLCAKKyAgICA1MjIsIDUzNjgsIDExMTM5LCA2NTgwMywgMTI4NTQ2LCA1MzY2LCAxMjIwMSwgNTM3MiwgMTIxMDYwLCAxMTk5NDksIAorICAgIDE5NDk3NSwgNzcyMCwgNzM5MCwgMjY5NiwgOTgzNDAyLCAwLCA0NjM4LCA5ODM0MDcsIDE3OTAsIDc4MjQyLCA1OTY1LCAKKyAgICA2NDM2MywgNjY1NjksIDY4NjQ2LCA2ODQ3NywgNTM3NiwgMTgzNSwgNTMzNSwgMTIxNTA1LCAxMjgwODksIDQ2MzMsIDAsIAorICAgIDY4MTE5LCAxMTgwLCA0NjMyLCA2NzE5MSwgNTM4NywgNTMzMywgMCwgMTI1MTMyLCA0MjA5NCwgNTMzMSwgNDYzNCwgCisgICAgMTE5MjgsIDk4MzU5NCwgNTMzOCwgNDYzNywgMTI4MTcwLCA1OTcxLCA0MjQxNCwgNDM1MDAsIDEyNjgsIDY1MDk3LCAKKyAgICA0MjM2MSwgMCwgMCwgNzM4NTMsIDE0MjcsIDEyODQ0MCwgMCwgNTk3MCwgMzQzMSwgMCwgMTAzNTgsIDEwNDIyLCA0NzU4LCAKKyAgICA5ODMzNzYsIDE2MDgsIDI3MzgsIDEyNTA2NiwgMTA0NTUsIDQ3NTMsIDc0MDI2LCAxMTM0NCwgNDIyMiwgNjI0MCwgNTIzMSwgCisgICAgNzQzODQsIDY2NjExLCA2ODM3NywgNjI0OCwgOTgzMzY0LCA2NzgxNSwgNzg4NzgsIDQyMzE4LCA5MjU4MiwgNTIyOSwgCisgICAgNDc1NywgMCwgMTI2NTc2LCAyNzI4LCA0NzUyLCA2NDU2MywgNjUyMzUsIDUyMzQsIDAsIDEyODE0NSwgMTI4OTI2LCAKKyAgICAxMDcxMywgNzE2NiwgMCwgMjYyMiwgNzQ2MCwgODMxMjQsIDY3MTAxLCAxMjY0OTUsIDg5NTQsIDc0NzYwLCA2NTE4OSwgCisgICAgMjYzMiwgNDI2MTcsIDEwMTA4LCAxMDExLCA1NTc0LCAxODUzLCAyNzA5LCA2NTEzOSwgNTU3NywgMTI4OTY2LCAwLCAKKyAgICAxMTg4NzEsIDY4NjQxLCA4OTY1LCA3NjM1LCA0MjE3NywgNTMxNiwgMCwgNTMxNCwgNjQ1MSwgNTU3MiwgNjY0NjQsIDUzMTIsIAorICAgIDAsIDU1MjUsIDUzMzAsIDUzMTksIDY4MjkyLCAxMjczMTEsIDY1MDY2LCA0NDAwMywgNjg0MzcsIDk4MzQ4MiwgNDM4NDMsIAorICAgIDEyMDQ5OCwgMTI3ODUxLCA0MzkxOCwgNzQ4NTEsIDc0MDIyLCA5ODM0MjQsIDY0NjA5LCA2ODY0MywgNjc0MTAsIDEyODU5MywgCisgICAgNTcyMSwgNzQ4OTIsIDU1MTksIDg2MzIsIDY2NDY1LCAxMTI2NywgNzM5NjEsIDkyMjc4LCA1NzIwLCA3ODc3OCwgMTY5MiwgCisgICAgNDIxOSwgNDYxMCwgODY5NiwgNDMwNSwgMCwgNDYwOSwgNDM0NzgsIDQ2MTQsIDU0MSwgOTgzMjQyLCA1Mjg3LCA1MzA5LCAKKyAgICA1Mjg1LCA2ODM4OSwgNTk2MSwgNDY0NywgNTYsIDQyMTYsIDEwNTc3LCA0MTM4MSwgNjAxLCA0NjEzLCAxMjA0NzksIAorICAgIDk4MzM0OCwgOTIwOCwgNDYwOCwgNDM5NjYsIDQxMTI0LCA1MTkwLCA2NzYyOCwgNjY4MjYsIDY4MTQ1LCA3MDg2LCAwLCAKKyAgICA2Nzk5OCwgNjc2MjAsIDkzMDQ3LCAyNzM0LCAxMTA3NCwgMCwgNjc2MjcsIDQzNTkzLCAwLCA2NzYyNSwgNTk2MCwgNjc3MjIsIAorICAgIDg5OTIsIDQyNTkzLCAxMjgyNjAsIDE3ODIsIDY3NjIyLCA2ODExNCwgMTE5OTM5LCAwLCA2ODE4MCwgNTUwMSwgMTE5OTUyLCAKKyAgICA0MjUwOCwgNzQ0MiwgNDM2NjUsIDM1OSwgNDEyNTMsIDY4MzkyLCA2MjM5LCA0MzkwMCwgNDEyNTYsIDc0MTMyLCA2Nzc0MCwgCisgICAgMCwgNzExNzgsIDkxNzU1MCwgOTM0NiwgNjk2NjAsIDQxMjU0LCAxMjgwNDcsIDQzMjkxLCAzNzY3LCA1NzM3LCAwLCA0ODY1LCAKKyAgICAwLCA1NzQwLCA5MTc5OTcsIDU3MzYsIDQzNjgsIDY0NzI0LCA3MTkzLCA2NzA5NywgMTI4ODQ0LCA1NzM5LCA0MTAyNCwgCisgICAgNDg2NiwgOTgzODgwLCA3MzkwNCwgMTIxNDIwLCA0ODY5LCAxMjA1NjMsIDEyOTE3MiwgNDIyMywgMTI4MjAxLCA2NjUwLCAKKyAgICAxMjY1MDksIDAsIDEyMDIxMiwgMTE5ODcyLCA0ODcwLCAxMjA0NDUsIDY4NjYxLCA2NzE2LCA3ODE3NiwgNjg2NjcsIAorICAgIDY4MzgyLCA2ODY3NiwgMTI3OTI1LCAxMDEyMiwgNDg2NCwgNjY1NjgsIDQxNDQsIDc5MzcsIDgzMTkzLCA2MjQ1LCA2ODY1MiwgCisgICAgMjczMiwgNDI3MzQsIDc0NSwgNjgwNDUsIDE5NTA5NywgOTIxOTUsIDQ3NzcsIDc4MjEsIDEyOTEzNiwgNjg2MzEsIDQyNzc1LCAKKyAgICAxOTQ2NjEsIDEyODQ0NSwgMTIwNjc5LCAzMDk3LCAxMjA5MDgsIDU5NjYsIDEyMTE5NywgNDc3OCwgMTI2NDY5LCAxMDg2MywgCisgICAgMTI3NTA2LCA0NzgxLCA5Mjk4NiwgNjQ0MDcsIDEyODUwMywgMTI4MzIzLCA4NTc3LCA3MTIyMSwgNjgxOTYsIDQzMjg1LCAKKyAgICAxMDIxNiwgNDc4MiwgOTgzNDg1LCA5ODM0MTEsIDEyMDc1NywgNjg2MTgsIDEyMzI1LCA0MzA1NiwgODcxNywgMCwgMCwgCisgICAgNDc3NiwgNzM4MTgsIDExNDkyLCA4NzAwLCAxMjkxMjgsIDEzMTc2LCA2ODM2MywgMTA0MjYsIDY3MjQ3LCA3MTA5MSwgCisgICAgMTAzNjIsIDE5NDcwNiwgMTcxNSwgNDg0OSwgODI0MiwgOTU2MSwgNzM5MjIsIDQzMjc4LCA0MjYzNSwgMCwgMTI3MjA3LCAKKyAgICA1OTYzLCA5MTc5MjYsIDk4MzQ4MywgMCwgNDg1MCwgNzM5MDAsIDE2MDcsIDQ2NiwgNDg1MywgMTE4OTk1LCA0ODU0LCAKKyAgICAxMjc5MTgsIDUxNjQsIDczODA3LCAxMzUwLCA1MTI0LCA2NDQyMCwgMTk5MywgNTM2MiwgODQ3MSwgMjcwOCwgOTI0NzEsIAorICAgIDEyNDQ1LCAzNzg1LCAyMzQsIDMxOTksIDEyMTI3MywgNDEyNjgsIDQ4NDgsIDI1MzAsIDc0OTQxLCAyMDY4LCAxOTY0LCAwLCAKKyAgICA3Mzc2MiwgMTA0NTgsIDk4MzQxNywgODU3NiwgNzg1NDMsIDAsIDI3MDQsIDQ3OTQsIDEyMTEwMiwgNjgyMTEsIDgzMjIsIAorICAgIDQ3OTcsIDU3NTMsIDAsIDI2OTQsIDQ3OTIsIDAsIDI0MzksIDY1MTA0LCA2OTgwNCwgOTgzNDI2LCAzMDMsIDc0NjI1LCAKKyAgICA2ODIyOSwgOTgzNDI3LCAyNDM3LCA3ODY1OSwgNDIyMSwgNDg0NCwgOTIyMTYsIDAsIDAsIDAsIDcwMDQyLCA3NDA5NSwgCisgICAgNDMyOTIsIDAsIDI0NDEsIDEwNzM5LCA2NTA5MCwgMTk0NjIyLCA3MDQzNiwgMTE4OTI5LCAyNDUxLCAyNzE0LCAxMTkzMjYsIAorICAgIDAsIDQzMzc5LCA0OTM3LCA0MzM3NiwgNzUzLCA1ODQ5LCAxMDU5NywgNDMwODksIDExNzIyLCA5MjQ4LCA5MjU1NSwgCisgICAgNDI4NzksIDExNzI1LCA5MTc5NjksIDAsIDI3MjYsIDMxMDcsIDczOTU4LCA0OTQxLCA2NDkzNywgMTE5MjMzLCA5MTQwLCAKKyAgICAxNDA4LCA1MjYxLCA0NjA3LCAxOTQ3MTUsIDE4MSwgOTgzNDMyLCA0OTQyLCA5NTM5LCA0OTM4LCAwLCA2NTIwMSwgNTI1OSwgCisgICAgOTM2OSwgNjQxODUsIDQxNDIsIDUyNTcsIDk4MzYwMSwgNjg0NCwgNDk2NCwgNTI2NCwgNjQxNzgsIDY0MTc3LCAxMjk3OSwgCisgICAgNDE0MTEsIDY0MTgyLCA2NDE4MSwgNjQxODAsIDY0MTc5LCA5NDgyLCA0ODczLCA0MTIzMSwgMTgyMiwgNDI1MjYsIAorICAgIDEyNzk4OSwgMTI3NTgsIDM4NjUsIDE5NDY2MCwgMTIxMTI5LCAxMDUwMCwgMCwgMTE5MDI0LCA3ODAyOCwgOTI0MDgsIAorICAgIDk4MzAsIDQzNjQyLCAzODksIDEwODkzLCA3NTIxLCAxMjc4NzksIDQ4NzIsIDU0NjMsIDEyODExOSwgMzEyNSwgOTU2NywgMCwgCisgICAgNDg3OCwgNTQ1OSwgNDYwNCwgMTE5NjUwLCA5NTU3LCA1NDY1LCA2ODYxNywgMCwgMTE0OTQsIDEyNjQ5MiwgOTU2MywgCisgICAgMTA4NjUsIDc0NTcwLCA0MzI3OSwgNjQxODYsIDY4NTIxLCA3ODcxNCwgNjQxOTEsIDY0MTkwLCA4ODk4LCA2NDE4OCwgCisgICAgMTI5MTUzLCA0MTAzMCwgNzQyMjYsIDc4NzEzLCA3NDYwMCwgNzQ5OTQsIDkxNzgzNCwgMCwgNzg4MDUsIDQxMDMxLCAKKyAgICA3ODgwMSwgMTE5NjAsIDY3NDUsIDMwODIsIDk4MzI2OSwgNzg1MzksIDczOTE5LCAxMDU3MywgNDE3NDQsIDcwNzksIDU4NTYsIAorICAgIDY3ODM4LCA1MTYzLCA3ODgwOSwgMTI4MTYyLCAxODE3LCA2NjcyNCwgNzg1MzgsIDExOTAxMCwgMTA1NjQsIDc3NjMsIAorICAgIDEzMDc3LCA0MTgxMywgNDQwMCwgNDE3NDUsIDY0MjA3LCAxMDI3NSwgODkyNSwgMTAzNzEsIDEwMzA3LCA0MTgxNCwgNDI0OCwgCisgICAgNzc5NzksIDAsIDQ1NDEsIDYyOTksIDY0MjA0LCA2NDIwMywgNjQyMDEsIDY0MjAwLCA2NDE5OSwgNjQxOTgsIDEyNjQ3MSwgCiAgICAgNDIxNTYsIDc4Njg4LCAwLCA2NDE5MywgNjQxOTIsIDY1MjIzLCA5OTQzLCA2NDE5NywgNjQxOTYsIDY0MTk1LCA2NDE5NCwgCi0gICAgMTMyODIsIDY0MTc1LCA2NDE3NCwgNjQxNzMsIDc4MTg5LCA4NDYsIDc4MTg2LCA5OTY1LCAwLCAwLCAwLCAwLCAyNTQzLCAKLSAgICAxMjE2MywgMzEwOCwgOTc0NSwgNjQxNjcsIDY0MTY2LCA2NDE2NSwgNjQxNjQsIDIxMTAsIDkyMTc2LCA2NDE2OSwgNjQxNjgsIAotICAgIDY0OTQ5LCAxMDk3MiwgMTAyNTEsIDEwMjQ3LCA0Mjc2OCwgNzE1LCAyMjk1LCA0MzI5OSwgOTQ1MywgNTM0OCwgMTA5NDMsIAotICAgIDEyMDM3OCwgMCwgMTEzNTIsIDU1MCwgOTkxMCwgMTI2NzA1LCAwLCA2NjU3OSwgMTE1NTEsIDAsIDE5NTA4MCwgOTUwNCwgCi0gICAgNzE4NywgMCwgMTAzNzMsIDAsIDEyMDc5MSwgMTAyNjEsIDEwMjUzLCA2NDA0LCAxMDI3NywgNzgxODMsIDExOTg0LCAxNTUyLCAKLSAgICA2NTIyMiwgNjk5OCwgNzgxODAsIDAsIDMxMjgsIDQ3ODksIDUwNjcsIDUwNjYsIDExODg0OSwgNDc4NCwgMCwgODgyNywgCi0gICAgMTE0NiwgNTA2NSwgNjk4OTAsIDc4MTkyLCA2ODEzNiwgNzgxOTAsIDQzNDEyLCA1MDY0LCAyNDMxLCAwLCA5NDUwLCAxODA5LCAKLSAgICAwLCA3ODIwMCwgNzgyMDEsIDUwNjIsIDEyNjQsIDY0ODE3LCAxMzI1NCwgMTE2OTcsIDEyNjU5OCwgOTc4NSwgNjQ3MTYsIDAsIAotICAgIDM5MzMsIDc0NTU5LCA0NzQwLCA3OTU0LCAwLCAwLCA0MjYwOSwgMCwgNzQxNzUsIDAsIDEyNzAxNiwgMCwgOTgzODczLCAKLSAgICA0MjEzMCwgMCwgNTE1MSwgOTE3ODI5LCA5MTc4MjMsIDAsIDkzOTgwLCAwLCA3NjIwLCAzODAwLCA2NTEyMiwgMCwgMCwgCi0gICAgODM1NSwgNzg1NCwgMCwgOTU0LCA2NDkyNywgNDE4NSwgNDEwNDUsIDEyNzE0MSwgNDE0MzgsIDQxNDM5LCA2ODY2NiwgCi0gICAgMTA3MTEsIDQ1OTMsIDEyNzc0NSwgMTIwNTg0LCA5ODM0MDgsIDY0Nzc0LCA4MDUzLCAxMDUzMiwgNjY3MjcsIDAsIDAsIDAsIAotICAgIDY0NzU5LCA2MzgxLCA1MTY2LCA5ODg4LCAxMjc4MDAsIDUxNDgsIDQyODM0LCAwLCA3ODIwNSwgNzgyMDYsIDQzNzg3LCAKLSAgICA3ODIwNCwgNjQxMzEsIDMxMTksIDkxNzgxNCwgMCwgMzA2MCwgNjQxMzUsIDk5ODYsIDAsIDc3ODc2LCA2MzYsIDExNjk4LCAKLSAgICAwLCA5ODM0NTEsIDk5MTYsIDExNzAxLCA3ODM2LCA0Mjc0MSwgNjQxMzcsIDgzMjAsIDc4NjQwLCA4ODYzLCA5MjQzMSwgCi0gICAgMTE5OTYwLCAxNDc3LCA0MzI4OSwgMCwgNzQzNTgsIDg2MTgsIDk4MzQwMiwgOTkwOCwgOTgzOTgxLCAwLCAwLCAzOTM3LCAKLSAgICAxMjMxMiwgMCwgOTgzNDAzLCAwLCA2NDc4MSwgOTEyLCA2MzQ5LCA0NTM2LCA5Mzk1NCwgNzQ1MzIsIDEyNjU5NCwgNjI0NCwgCi0gICAgOTIyMDksIDcxMzQxLCAzOTM1LCAxMjA2NjUsIDk4MzQ3NiwgMCwgMTE5NTAsIDUzOTIsIDQyMjQ4LCA2NTEyOSwgNjg2NTYsIAotICAgIDUzOTcsIDAsIDEyMDQ2LCAxMjU5OSwgMCwgMTI4MjYxLCA1Mzk1LCAwLCA1MzkzLCAzNTQsIDY4NjE1LCAxMTk5NDgsIAotICAgIDc4NTAzLCAwLCAwLCA0MjAzOSwgMCwgMCwgNjQxNDIsIDYyNiwgMCwgNTg5NSwgMCwgMCwgNTc4MCwgMCwgMCwgMTI4ODc0LCAKLSAgICAwLCAwLCA0MzI5NywgOTgzMDc5LCA0MzExLCA0NjQ0LCA4ODE4LCAwLCAxMjgxODYsIDAsIDcxNDUsIDM5MTgsIDY2NDUyLCAKLSAgICAzNzk3LCAxNjQ0LCA5MjM0NiwgOTY1OCwgNDE0MCwgMTEzODUsIDY1OTQ3LCA2NDU1LCA5MDMwLCA4MTMsIDExOTk0NSwgCi0gICAgNjgxMzEsIDQxNDYsIDExOTk1NywgNTM2MCwgMjQ2NiwgMCwgNjc2NjksIDExOTk0MiwgNjI0OSwgNDIxMTcsIDkyMjg3LCAKLSAgICAxMjgyMjQsIDAsIDAsIDc0MDQ2LCA0Mzc0NSwgNDkxMSwgOTg4LCA5MTc4MDcsIDAsIDk4MzQ2OCwgNDMwNjEsIDcwNTQsIAotICAgIDY0MTQ3LCAwLCA2NDkyMCwgNjgxOTUsIDY2OTgsIDExODkzMywgOTI1MDYsIDAsIDEyMDAwNiwgMTE5ODEsIDEyMjAyLCAwLCAKLSAgICAxMTAzMiwgNjc2NTQsIDYwOTMsIDExNjA4LCA5NzUsIDY4NjYyLCA2NTg0MywgMTcwLCAwLCAwLCA0MTY5LCAwLCA0MTg1OSwgCi0gICAgNjA1OCwgMTIwNDAxLCAxMzIwMywgMTIwNjU3LCAwLCAwLCA2ODY1NywgOTgxOCwgMTAxNzgsIDEwMzI0LCA0MjEwNiwgCi0gICAgNTg5OCwgNzQ1NDAsIDQ3MzgsIDQxODU2LCA3MDYyLCA5MTc4NjUsIDQ3MzcsIDExNzc5LCA0NzQyLCAxMjA1NjQsIDkyMzkxLCAKLSAgICA3MzczNiwgOTgzMzY0LCA5ODI1LCA2NDQ4LCA2NzE1LCAxMjcwMDgsIDQ4MzEsIDAsIDkyNTI1LCAwLCA1MzAwLCA0NzQxLCAKLSAgICA0MjEwOCwgOTgzMzU0LCA2NDE1OSwgNDczNiwgNjQxNDgsIDAsIDg0OSwgOTIxOTEsIDc4NDkxLCA0MzI4OCwgMCwgNjY2MjAsIAotICAgIDkxNzkxNiwgMTI3MzMxLCA2NTU0OSwgOTQ5NiwgNjQ1OTgsIDExODg2NiwgOTgzMzY2LCA3ODc2LCA2ODEzMiwgOTE3ODcyLCAKLSAgICAzOTI4LCA5MTc4NzAsIDQzMzc4LCAxMDcwNiwgNzE5OCwgMCwgNDg0MiwgMTIwNTMsIDEyODEyOSwgMCwgNDg0MSwgMCwgCi0gICAgNDE3MSwgMTIwMDgsIDYyNTEsIDM5MjMsIDE0OTAsIDAsIDExOTU5MSwgMTI2NTEyLCA0MDk3MiwgNTI0NSwgMCwgMTAxMTQsIAotICAgIDQyMDAxLCA0MTg4OCwgNDg0NSwgODMzMiwgNDA5NzQsIDY0MzQ3LCA0ODQwLCA5MDc3LCA3ODM0NiwgMTc0NywgOTE3ODQ5LCAKLSAgICA0ODI1LCA2OTI0MCwgOTE3ODUyLCA2ODY1NSwgMCwgOTgzMzg4LCAwLCAwLCA2ODYyOCwgOTgzMzQ3LCA5ODUwLCAxMTg5MzcsIAotICAgIDM2NywgMTQ3MiwgOTE3ODU5LCA2Njg3LCAxMjc0LCAwLCA1OTA1LCAxMjMzOSwgODkxOSwgNzM5NTMsIDEwOTA3LCA2NTI2MSwgCi0gICAgMTEwMjMsIDExOTU1OSwgNDgzMCwgOTEzNCwgNzg2NjYsIDY0MTI2LCA0MzAxMSwgMCwgMTI2NjI2LCA2NDEwMSwgMCwgMCwgCi0gICAgNDgyNCwgMTA2MTQsIDExOTY1OSwgMCwgMTg4OCwgMTk2MCwgNzg2MSwgOTE3ODU2LCA3ODUyNCwgNDE4MzYsIDQzMDEyLCAKLSAgICA2MDUyLCA2MDY0LCA1NCwgNDMwMDksIDEyMjE0LCAwLCA2MjExLCAwLCAzNTgsIDQxOTk3LCA0MTgzMywgMTE0NDIsIAotICAgIDEwNzU4LCA2NTc3NCwgMCwgMTIwMzg0LCA2NDExNSwgOTIyMjEsIDcwMDE4LCAwLCAwLCAxMTkwNTMsIDAsIDEyNzY1LCAKLSAgICA2NDExOCwgMTI2OTk4LCAxMjk2MiwgMCwgMTI2NTgwLCA0MDE3LCAxMjgyNywgNTI0MSwgMTIwMzkyLCAwLCA0MTExOCwgCi0gICAgMzkyNCwgMCwgMTEzNjYsIDkxNzg0MywgMCwgMCwgOTE3ODQ2LCA0MTExNiwgOTE3ODQ0LCA5MTc1NjQsIDAsIDExMzYzLCAKLSAgICAxMjA1NywgMTE5MTcsIDE1NjcsIDc0MDAwLCA0NzIxLCAxMjY2NDEsIDY2MjAyLCA4OTU3LCA0MTM5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMjc0MCwgMTI4NzAyLCA0NzIyLCA2ODE2LCAxMjc3OTMsIDEyNzU5LCA0NzI1LCA5ODMzODMsIDQ3MjYsIDAsIAotICAgIDE5NDg5MiwgOTgzNjIyLCAxMjgzMjEsIDkxNzkwNSwgMCwgMTI3NTUsIDEyNzYyLCA0MDE1LCAwLCA4MDUyLCA0NzYsIDAsIAotICAgIDAsIDEyODI5NCwgNjQyMTIsIDQxMDIwLCAxMzgyLCA2NDIwOSwgNjQyMTYsIDQ0MDAyLCA2NDIxNCwgMTY1NiwgNDE4MzEsIAotICAgIDAsIDAsIDQxODQzLCA4NzIwLCAzOTA4LCAxNDUyLCAxMzExMSwgMCwgNjQwNjcsIDEyNzMyOCwgODU1MiwgNjQxMTMsIAotICAgIDQxODQ1LCAzODQ5LCA3ODczMiwgNjYyMzIsIDk3NzgsIDEyMDA2NiwgNTg5MSwgNzA2NCwgNTUsIDk5NDgsIDExOTA4NSwgMCwgCi0gICAgMCwgNzkzNSwgMjQyMCwgMCwgMTExNCwgOTI1OTksIDY3NTg1LCA3MDEwNCwgMTIwMDUzLCA5MjM1MCwgMTIwMDUxLCAzOTM4LCAKLSAgICAxMjAwNTcsIDY1NDE3LCA2NDcxNywgMTIwMDYwLCAxMjAwNjEsIDY1NDE1LCAxMjAwNTksIDYyOTIsIDY1MzAzLCA3OTU1LCAKLSAgICA2NDUyLCA0NzEzLCAxMjgxOTYsIDY2MjQ5LCA5MTc4ODUsIDkxNzg5MCwgOTE3ODkxLCA2NTE1MiwgNzE5LCAxMjAwNDQsIAotICAgIDc4NjIzLCAxMjAwNDIsIDY3MTMsIDQ1MzIsIDY1NDEyLCA2OTgyMiwgMTA4NjgsIDQ3MTcsIDIzNDksIDU5MDIsIDY2NDUwLCAKLSAgICA0NzEyLCA5MTc5MDIsIDkxNzg5OSwgOTE3OTAwLCA2NTQxNiwgODE1NSwgNDcxOCwgMzk0MiwgNDcxNCwgOTYyNSwgMCwgCi0gICAgNjM4MywgMTk0NzQ0LCAxMjAwNiwgMTI4NTY1LCAwLCAwLCAwLCAwLCA2NTQxNCwgNjQ1NCwgMTIyOSwgMTI2NjA2LCAKLSAgICA2NjQzNywgNjYwMjUsIDc4Njk5LCAwLCA0MjUwMCwgMTIwNTA4LCA0ODA5LCA5NjIzLCA5MTc4NzQsIDc4Njk0LCA5MTc4ODAsIAotICAgIDkxNzg3NywgOTE3ODc4LCA2NTQwNSwgNjgxNTksIDEyODkzLCA5MTc4ODIsIDUzNjUsIDQ1NDUsIDg5MDEsIDkyNDIxLCAKLSAgICAxMTk1NTUsIDQ4MTMsIDEyODI2MiwgMCwgNTkyNSwgNDgwOCwgNjQzMzAsIDAsIDY1NDc1LCAxMTg5NDAsIDE5NTAyOCwgCi0gICAgNDgxNCwgMCwgNDgxMCwgMCwgMCwgNjQ5MjgsIDEwNTQzLCAwLCAzNTIyLCA3MTMzNSwgNDE0LCA2NTQwNCwgMCwgMTk1MDI3LCAKLSAgICA2NDU2LCA3MzgyMCwgMCwgNjY5MSwgNDIxOTMsIDkyMjI1LCAxMjgxNzEsIDAsIDc0NDk1LCAwLCAwLCAwLCAxMTg4MjAsIAotICAgIDk3NTEsIDY1NDA3LCAxMjgwODUsIDExNzcwLCAzOTE5LCAwLCAwLCA2NTA2MSwgMCwgMCwgMCwgMTIyMzUsIDAsIDAsIAotICAgIDEyNzIzMywgNjQwOTIsIDk4MzQ3MCwgNjQwODAsIDAsIDY0MDkwLCAwLCA2OTkxMywgMTAxNjIsIDEwMzEwLCAwLCA4NDU0LCAKLSAgICAxMjc4ODgsIDQyMDM4LCAzODcsIDQxMzYzLCAxMjczNywgMCwgNDc4MCwgNDMzNjgsIDAsIDY0MzEwLCA2NDYyMSwgNjczMiwgCi0gICAgNzgxMTYsIDAsIDk4MzEzOSwgMCwgOTgzMDc0LCA4ODk2LCAwLCAzNzUsIDY5NzYsIDY2NTgyLCAxMTkwMDUsIDk4Mzg3NCwgCi0gICAgMCwgOTgzNDM0LCAxMTkyMDIsIDExOTIwMywgMTI1MjYsIDQzMTIwLCAyMzE1LCAwLCAxOTM4LCAxMTkxOTcsIDAsIDQ1MjksIAotICAgIDExOTIwMCwgMTE5MjAxLCAxMTkxOTgsIDExOTE5OSwgNjk2OTIsIDk4MzQzMiwgNjk2OTgsIDEzMTUwLCA2NDQ5MiwgMCwgMCwgCi0gICAgMjI5MSwgMTI5MDIsIDAsIDQyODkxLCA2NjMyNywgNzQyOTgsIDkxNzg1NywgMTA3OTksIDY5NjkwLCAyNTg3LCA2NjM3MiwgCi0gICAgMCwgNDE5MywgOTIyNTAsIDQyNDEsIDk4MzA1NywgNzk5OCwgMCwgMCwgMCwgMTI2NjQwLCAyMzE2LCAxMTg4MjEsIDAsIDAsIAotICAgIDAsIDY0Mjk3LCA3NDc5OSwgOTI0NDIsIDc0MTQwLCAwLCA1MzczLCAwLCA5ODM4ODYsIDM3NjIsIDEwMDE1LCAxMjA2NzIsIAotICAgIDExOTIzMiwgMCwgNDE1OTAsIDAsIDcwMDk4LCAzNzgwLCA3NDg1LCA1Nzc5LCAwLCA0MjAzNywgMCwgMzkwNiwgMTIzNDksIAotICAgIDAsIDgzMjYsIDAsIDY1NDk4LCAzNzYzLCA2OTgzLCA1NjE4LCAwLCAzNzc5LCAwLCA0MzYxMywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjgwLCA3NDU1OCwgMTI3MzMyLCA2ODEzOCwgMTMwNzIsIDE4OTQsIDAsIDAsIDY1NDc4LCA0MzMxMCwgNzIzMSwgMCwgCi0gICAgMTE3NzMsIDAsIDAsIDAsIDAsIDI1NTEsIDAsIDY0NTMsIDEwMjAwLCA2MjM1LCA5ODM3NTIsIDExOTIzNywgMCwgMTI4ODA1LCAKLSAgICA0NDcwLCAxMTgyNiwgOTE3NTU3LCA3NzgwLCA1MzY5LCAxMTg5NTgsIDUyNDksIDAsIDUzNjcsIDg3NTYsIDEyNzE0MywgMCwgCi0gICAgNTM3NywgMTIwNTg1LCA2ODE0MywgMTY4OCwgNzgyNDUsIDk4MzM1NiwgNjk2ODUsIDk4Mzc1NiwgMCwgMCwgNDQwMjAsIAotICAgIDY4MDgsIDQxMzE5LCAxMzAwLCAxMDY1MCwgNDE2OTIsIDY0NTA1LCAyMjkwLCAwLCAxMTk2MjQsIDE0NjUsIDEwODUwLCAKLSAgICAzOTQzLCAwLCA0MTIwNSwgNDEzMTUsIDExODk2MSwgMCwgMCwgNTM1MiwgMCwgMCwgODgzOSwgNDEzMTQsIDczODQsIDc3ODUsIAotICAgIDQxMjA0LCAxMjczMjIsIDQxMjA5LCA2OTYzNywgOTIyNDEsIDQzNjA3LCAwLCAwLCA1NDIwLCAzODk3LCAxMDEzNCwgMCwgCi0gICAgNzQ0MTcsIDQwMTgsIDcxNTAsIDY4MTI3LCAwLCAwLCAwLCAwLCAxMjc1MjYsIDI1NjEsIDY4NjIxLCAzNTQyLCA3MTQ4LCAKLSAgICAxMjA3NiwgNzk1MSwgNjgxNTIsIDExODg1NywgNTMwMywgNjI3NiwgMTcwNiwgMCwgNzg3NTEsIDcxNDYsIDAsIDY1MTUwLCAKLSAgICA0MTgxOSwgMCwgNzM5NTEsIDEwODQ3LCA0MTgyMiwgOTk4NSwgODYwLCAwLCAxMDUwNiwgOTgzNDM1LCA2OTY0MSwgMTA3NTMsIAotICAgIDEwODMwLCAwLCA2MTUsIDY0NDkwLCA3NTc0LCA5MjYxNywgNzc5MjIsIDAsIDEyOTA5LCA0MzAxNiwgNjQ1NTksIDEyNzAyOCwgCi0gICAgMCwgMCwgNjc5OTYsIDIwMjAsIDAsIDQwMjIsIDEyODc4MywgMCwgNzc5MjMsIDEyNjU5MywgNDE2OTEsIDAsIDAsIDc0MzI5LCAKLSAgICAwLCA2NDYyMiwgOTA3MCwgMCwgNjg0MTEsIDM5MTEsIDQyODI5LCA0MzEyMiwgMTAzMywgNzQ0NDAsIDAsIDcwMDAsIDM5MDQsIAotICAgIDAsIDEyODE5OCwgMCwgMTE4OTMxLCAxMTk2MzAsIDEzMTIzLCAxMDg0NiwgMzQ1MCwgMTI3MzYwLCA3Mzk3LCAxMTg4MDcsIAotICAgIDAsIDQyNzc4LCAxMDAwMCwgNDEwODgsIDQ0OSwgMCwgMzc3NywgNjg0NTgsIDAsIDk2MzYsIDAsIDEwNzM4LCA2OTYzNCwgCi0gICAgOTM2NywgNTkzLCA0MTA4NSwgMzk5OSwgNjUyMjYsIDQxNzEzLCAxMjc2NCwgMCwgNjQ0MDksIDM1OTYsIDAsIDAsIDk3NjMsIAotICAgIDEyMDI4MCwgOTIxOTIsIDEyMzQ3LCAxMjQsIDEyOTgxLCA0MTEyNywgMjA5MiwgOTI2ODcsIDAsIDAsIDAsIDEwODIwLCAKLSAgICA0Mzk4NywgMCwgMCwgMTc2OSwgNDE3MTUsIDI0NjMsIDc4NDg5LCAwLCAxMjc3MCwgMTI2NTAwLCAxNTM4LCAwLCA0MzEyNCwgCi0gICAgMCwgMTk1MDU4LCA3Nzk1LCAxMjAzMDAsIDAsIDQ4MjgsIDEyNTgsIDEyNzgwMiwgMjAwNiwgMCwgMCwgOTQ5OCwgMTI3MDMyLCAKKyAgICAxMjIzMSwgNDI2NTIsIDY0MTc0LCA2NDE3MywgNzgxODksIDg0NiwgNzgxODYsIDk5NjUsIDc0NDk1LCA4MzQ5MiwgODM0OTMsIAorICAgIDgzNDk0LCAyNTQzLCAxMjE2MywgMzEwOCwgOTc0NSwgNjQxNjcsIDY0MTY2LCA2NDE2NSwgNjQxNjQsIDIxMTAsIDkyMTc2LCAKKyAgICA2NDE2OSwgNjQxNjgsIDY0OTQ5LCAxMDk3MiwgMTAyNTEsIDEwMjQ3LCA0Mjc2OCwgNzE1LCAyMjk1LCA0MzI5OSwgOTQ1MywgCisgICAgNTM0OCwgMTA5NDMsIDY2MzkwLCAwLCAxMTM1MiwgNTUwLCA5OTEwLCAxMjUxMjcsIDAsIDY2NTc5LCAxMTU1MSwgMTI4NDY0LCAKKyAgICAxOTUwODAsIDk1MDQsIDcxODcsIDgyOTU3LCAxMDM3MywgOTgzNDE4LCAxMjAzNzUsIDEwMjYxLCAxMDI1MywgNjQwNCwgCisgICAgMTAyNzcsIDc4MTgzLCAxMTk4NCwgMTU1MiwgNjUyMjIsIDY5OTgsIDc4MTgwLCA3MTQyOSwgMzEyOCwgNDc4OSwgNTA2NywgCisgICAgNTA2NiwgMTE4ODQ5LCA0Nzg0LCAwLCA4ODI3LCAxMTQ2LCA1MDY1LCA2OTg5MCwgNzgxOTIsIDY4MTM2LCA3ODE5MCwgCisgICAgNDM0MTIsIDUwNjQsIDI0MzEsIDAsIDk0NTAsIDE4MDksIDAsIDc4MjAwLCA3ODIwMSwgNTA2MiwgMTI2NCwgNjQ4MTcsIAorICAgIDEzMjU0LCAxMTY5NywgMTI2NTk4LCA5Nzg1LCA2NDcxNiwgMCwgMzkzMywgNzQ1NTksIDQ3NDAsIDc5NTQsIDAsIDEyNTAyMywgCisgICAgNDI2MDksIDExOTg1NSwgNzQxNzUsIDY2OTEyLCAxMjcwMTYsIDAsIDEyMTMwMCwgNDIxMzAsIDEyMTA0NiwgNTE1MSwgCisgICAgMTIxMzQ2LCA4MzQ4OCwgMCwgOTM5ODAsIDkxNzgwMiwgNzYyMCwgMzgwMCwgNjUxMjIsIDgzNDg3LCA4MzQ4MCwgODM1NSwgCisgICAgNzg1NCwgODM0ODMsIDk1NCwgNjQ5MjcsIDQxODUsIDQxMDQ1LCAxMjcxNDEsIDQxNDM4LCA0MTQzOSwgNjg2NjYsIDEwNzExLCAKKyAgICA0NTkzLCA4Mjk5MywgMTIwNTg0LCA5ODM0MTAsIDY0Nzc0LCA4MDUzLCAxMDUzMiwgNjY3MjcsIDk4MzQxNCwgMCwgNzg2NDIsIAorICAgIDY0NzU5LCAxMzI1LCA1MTY2LCA5ODg4LCAxMjc4MDAsIDUxNDgsIDQyODM0LCAwLCA3ODIwNSwgNzgyMDYsIDQzNzg3LCAKKyAgICA3ODIwNCwgNDM5MTMsIDMxMTksIDkxNzgxNCwgMCwgMzA2MCwgNjQxMzUsIDk5ODYsIDc0OTk2LCA3Nzg3NiwgNjM2LCAKKyAgICAxMTY5OCwgODM0NzYsIDgyOTYxLCA5OTE2LCAxMTcwMSwgNzgzNiwgNDI3NDEsIDY0MTM3LCA4MzIwLCA3ODY0MCwgODg2MywgCisgICAgNzAyMDEsIDExOTk2MCwgMTQ3NywgNDMyODksIDY4NDkyLCA2NzE2NCwgODYxOCwgOTgzNDA0LCA5OTA4LCA3NDk3MiwgMCwgCisgICAgMCwgMzkzNywgMTIzMTIsIDAsIDk4MzQwNSwgMCwgNjQ3ODEsIDkxMiwgNjM0OSwgNDUzNiwgOTM5NTQsIDc0NTMyLCAKKyAgICAxMjY1OTQsIDYyNDQsIDkyMjA5LCA3MTM0MSwgMzkzNSwgMTIwNjY1LCAxMjg5NjksIDAsIDExOTUwLCA1MzkyLCA0MjI0OCwgCisgICAgNjUxMjksIDY4NjU2LCA1Mzk3LCAxMjgzMTAsIDEyMDQ2LCAxMjU5OSwgNjc0MDcsIDEyODI2MSwgNTM5NSwgMCwgNTM5MywgCisgICAgMzU0LCA2ODYxNSwgNzc4NTMsIDc0MzY2LCAxMjE0MDQsIDAsIDQyMDM5LCAxMTM4MTcsIDAsIDY0MTQyLCA2MjYsIDAsIAorICAgIDU4OTUsIDAsIDQzOTEwLCA1NzgwLCAwLCAxMDIyMCwgMTIxMzM3LCA0MzkwNywgNzExMjEsIDQzMjk3LCA3MDE4OCwgNDMxMSwgCisgICAgNDY0NCwgODgxOCwgNzgxNTgsIDEyODE4NiwgMTI4ODY5LCA3MTQ1LCAzOTE4LCA2NjQ1MiwgMzc5NywgMTY0NCwgOTIzNDYsIAorICAgIDk2NTgsIDQxNDAsIDExMzg1LCA2NTk0NywgNjQ1NSwgOTAzMCwgODEzLCAxMTk5NDUsIDY4MTMxLCA0MTQ2LCAxMTk5NTcsIAorICAgIDUzNjAsIDI0NjYsIDAsIDY3NjY5LCA5NDAyMCwgNjI0OSwgNDIxMTcsIDY4ODI4LCA5MjIwNiwgMTI4MDIzLCAxMTkyNTUsIAorICAgIDc0MDQ2LCA0Mzc0NSwgNDkxMSwgOTg4LCA3MTE4MCwgMCwgOTgzNDcwLCA0MzA2MSwgNzA1NCwgNjQxNDcsIDk4Mzg0NywgCisgICAgNjQ5MjAsIDY4MTk1LCA2Njk4LCAxMTg5MzMsIDkyNTA2LCAwLCA3MDg0OSwgMTE5ODEsIDEyMjAyLCAxOTUwODcsIDExMDMyLCAKKyAgICA2NzY1NCwgNjA5MywgMTE2MDgsIDk3NSwgNjY0MTUsIDY1ODQzLCAxNzAsIDAsIDY3MjM5LCA0MTY5LCAwLCA0MTg1OSwgCisgICAgNjA1OCwgMTIwNDAxLCAxMzIwMywgMTIwNjU3LCA3MDUwNywgMTI1MDkxLCA2ODY1NywgOTgxOCwgMTAxNzgsIDEwMzI0LCAKKyAgICA0MjEwNiwgNTg5OCwgNzQ1NDAsIDQ3MzgsIDQxODU2LCA3MDYyLCAxMjcxMjAsIDQ3MzcsIDExNzc5LCA0NzQyLCA4MzQyNSwgCisgICAgNjg3NTgsIDY4MzQyLCA4MzQyMCwgOTgyNSwgNjQ0OCwgNjcxNSwgMTI3MDA4LCA0ODMxLCA4MzQxOCwgODM0MTksIDY3NzMxLCAKKyAgICA1MzAwLCA0NzQxLCA0MjEwOCwgMTI3MDU3LCA2NDE1OSwgNDczNiwgNjQxNDgsIDkyNjM0LCA4NDksIDkyMTkxLCA3ODQ5MSwgCisgICAgNDMyODgsIDAsIDY2NjIwLCAxMjc1MzMsIDEyNzMzMSwgNjU1NDksIDk0OTYsIDY0NTk4LCAxMTg4NjYsIDk4MzM2OCwgCisgICAgNzg3NiwgNjgxMzIsIDY2MjgwLCAzOTI4LCA5MTc4NzAsIDQzMzc4LCAxMDcwNiwgNzE5OCwgMTIwODkwLCA0ODQyLCAKKyAgICAxMjA1MywgMTI4MTI5LCA2ODc0NiwgNDg0MSwgMCwgNDE3MSwgMTIwMDgsIDYyNTEsIDM5MjMsIDE0OTAsIDgzNDExLCAKKyAgICA4MzQxMiwgMTI2NTEyLCA0MDk3MiwgNTI0NSwgNzA3OTQsIDEwMTE0LCA0MjAwMSwgNDE4ODgsIDQ4NDUsIDgzMzIsIAorICAgIDQwOTc0LCA2NDM0NywgNDg0MCwgOTA3NywgNzgzNDYsIDE3NDcsIDkxNzg0OSwgNDgyNSwgNjkyNDAsIDEyMTQ0MywgCisgICAgNjg2NTUsIDAsIDk4MzM5MCwgMCwgMCwgNjg2MjgsIDk4MzM0OSwgOTg1MCwgMTE4OTM3LCAzNjcsIDE0NzIsIDkxNzg1OSwgCisgICAgNjY4NywgMTI3NCwgMTk1MDIyLCA1OTA1LCAxMjMzOSwgODkxOSwgNzM5NTMsIDEwOTA3LCA2NTI2MSwgMTEwMjMsIAorICAgIDExOTU1OSwgNDgzMCwgOTEzNCwgNzg2NjYsIDY0MTI2LCA0MzAxMSwgODMyOTcsIDc4NjY5LCA2NDEwMSwgMCwgMTI4NDM0LCAKKyAgICA0ODI0LCAxMDYxNCwgMTE5NjU5LCAxMjY5OTMsIDE4ODgsIDE5NjAsIDc4NjEsIDgzNDE2LCA3ODUyNCwgNDE4MzYsIAorICAgIDQzMDEyLCA2MDUyLCA2MDY0LCA1NCwgNDMwMDksIDEyMjE0LCA4MzI2MCwgNjIxMSwgMTIwMzg2LCAzNTgsIDQxOTk3LCAKKyAgICA0MTgzMywgMTE0NDIsIDEwNzU4LCA2NTc3NCwgMTEzODIzLCAxMjAzODQsIDY0MTE1LCA5MjIyMSwgNzAwMTgsIDk4MzYxMSwgCisgICAgOTgzNzA4LCAxMTkwNTMsIDAsIDEyNzY1LCA2NDExOCwgMTI2OTk4LCAxMjk2MiwgMCwgMTI2NTgwLCA0MDE3LCAxMjgyNywgCisgICAgNTI0MSwgMTIwMzkyLCAwLCA0MTExOCwgMzkyNCwgOTgzODk0LCAxMTM2NiwgMTI5MDg0LCAwLCAwLCA4MzQwMSwgNDExMTYsIAorICAgIDgzNDAzLCA4MzQwNCwgODMzOTcsIDExMzYzLCAxMjA1NywgMTE5MTcsIDE1NjcsIDc0MDAwLCA0NzIxLCA4MzM5NiwgCisgICAgNjYyMDIsIDg5NTcsIDQxMzksIDcwNTEyLCAwLCA5ODMwNzQsIDAsIDAsIDEyNzQwLCAxMjE0NzAsIDQ3MjIsIDY4MTYsIAorICAgIDEyNDk3NCwgMTI3NTksIDQ3MjUsIDY3MDk5LCA0NzI2LCA4MzQ2NywgODM0NjgsIDk4MzYyMiwgNzAwMjksIDgzNDYzLCAKKyAgICA3NDkxMywgMTI3NTUsIDEyNzYyLCA0MDE1LCA2NzY5MCwgODA1MiwgNDc2LCAwLCA3NDg5MywgMTI4Mjk0LCA2NDIxMiwgCisgICAgNDEwMjAsIDEzODIsIDY0MjA5LCA2NDIxNiwgNDQwMDIsIDY0MjE0LCAxNjU2LCA0MTgzMSwgMTI3NTUzLCAxMjUxMjEsIAorICAgIDQxODQzLCA4NzIwLCAzOTA4LCAxNDUyLCAxMzExMSwgOTgzNDIxLCA2NDA2NywgOTIyODcsIDg1NTIsIDY0MTEzLCA0MTg0NSwgCisgICAgMzg0OSwgNzg3MzIsIDY2MjMyLCA5Nzc4LCAxMjAwNjYsIDU4OTEsIDcwNjQsIDU1LCA5OTQ4LCAxMTkwODUsIDgzMzAyLCAKKyAgICA5MTc2MTAsIDc5MzUsIDI0MjAsIDAsIDExMTQsIDc4MTIwLCA2NzU4NSwgNzAxMDQsIDcwNDMyLCA4MzQ0NywgNzQ5MjAsIAorICAgIDM5MzgsIDEyMDA1NywgNjU0MTcsIDY0NzE3LCAxMjAwNjAsIDcxOTIwLCA2NTQxNSwgNjY4ODQsIDYyOTIsIDY1MzAzLCAKKyAgICA3OTU1LCA2NDUyLCA0NzEzLCAxMjgxOTYsIDY2MjQ5LCA5MTc4ODUsIDE5NDc2NiwgMTI5MDczLCA2NTE1MiwgNzE5LCAKKyAgICAxMjAwNDQsIDc4NjIzLCAxMjAwNDIsIDY3MTMsIDQ1MzIsIDY1NDEyLCA2OTgyMiwgMTA4NjgsIDQ3MTcsIDIzNDksIDU5MDIsIAorICAgIDY2NDUwLCA0NzEyLCA3NTA1NSwgOTE3ODk5LCA2NTQwMCwgNjU0MTYsIDgxNTUsIDQ3MTgsIDM5NDIsIDQ3MTQsIDk2MjUsIAorICAgIDAsIDYzODMsIDE5NDc0NCwgMTIwMDYsIDEyODU2NSwgMTk0Nzg5LCAwLCAxMTM3NTYsIDAsIDY1NDE0LCA2NDU0LCAxMjI5LCAKKyAgICA4MzQ1NywgNjY0MzcsIDY2MDI1LCA3ODY5OSwgODM0NTIsIDQyNTAwLCAxMjA1MDgsIDQ4MDksIDk2MjMsIDEyOTEzNywgCisgICAgNzg2OTQsIDEyMTE3MywgMTI4Nzc3LCA5MTc4NTgsIDY1NDA1LCA2ODE1OSwgMTI4OTMsIDc4NjE3LCA1MzY1LCA0NTQ1LCAKKyAgICA4OTAxLCA5MjQyMSwgMTE5NTU1LCA0ODEzLCAxMjgyNjIsIDE5NDcyOSwgNTkyNSwgNDgwOCwgNjQzMzAsIDEyODQwMCwgCisgICAgNjU0NzUsIDgzNDMyLCA2ODI0NCwgNDgxNCwgODM0MjcsIDQ4MTAsIDgzNDI5LCA4MzQzMCwgNjQ5MjgsIDEwNTQzLCAKKyAgICA3MTI0OSwgMzUyMiwgNzEzMzUsIDQxNCwgNjU0MDQsIDAsIDgzNDQyLCA2NDU2LCA3MzgyMCwgODM0NDUsIDY2OTEsIAorICAgIDQyMTkzLCA2NjI4NCwgODM0NDEsIDAsIDY4MzM3LCAwLCA0Mzg1OCwgNDM4MzIsIDExODgyMCwgOTc1MSwgNjU0MDcsIAorICAgIDEyODA4NSwgMTE3NzAsIDM5MTksIDEyMDcyNCwgMCwgNjUwNjEsIDk4Mzk0NSwgOTE3ODk0LCAxMjkxNDIsIDEyMjM1LCAKKyAgICAxMjg1NzIsIDkyNzAxLCAxMjEwODcsIDY0MDkyLCA2ODczOSwgNjQwODAsIDEyOTA2MywgNjQwOTAsIDk4MzU4NiwgNjk5MTMsIAorICAgIDEwMTYyLCAxMDMxMCwgMTIxMjEwLCA4NDU0LCAxMjEzODcsIDQyMDM4LCAzODcsIDQxMzYzLCAxMjczNywgMCwgNDc4MCwgCisgICAgNDMzNjgsIDAsIDY0MzEwLCA2NDYyMSwgNjczMiwgNzgxMTYsIDAsIDEyMTI5NSwgMTk1MDI0LCA5MjE5MywgODg5NiwgMCwgCisgICAgMzc1LCA2OTc2LCA2NjU4MiwgMTE5MDA1LCA3NDk5NywgMTI3MzI1LCA5ODM0MzYsIDExOTIwMiwgMTE5MjAzLCAxMjUyNiwgCisgICAgNDMxMjAsIDIzMTUsIDAsIDE5MzgsIDExOTE5NywgMTI4NDUyLCA0NTI5LCAxMTkyMDAsIDExOTIwMSwgMTE5MTk4LCAKKyAgICAxMTkxOTksIDY5NjkyLCAxMjkxMjQsIDY5Njk4LCAxMzE1MCwgNjQ0OTIsIDEyODk3NCwgNzg3NjEsIDIyOTEsIDEyOTAyLCAKKyAgICAwLCA0Mjg5MSwgNjYzMjcsIDcwNTAyLCA5MTc4NTcsIDEwNzk5LCA2OTY5MCwgMjU4NywgNjYzNzIsIDEyODYyOCwgNDE5MywgCisgICAgNjY4MjMsIDQyNDEsIDEyOTE5NSwgNzk5OCwgODMyNzYsIDAsIDEyNzAwOSwgMTI2NjQwLCAyMzE2LCAxMTg4MjEsIDAsIAorICAgIDk4MzkzNCwgMCwgNjQyOTcsIDc0Nzk5LCA5MjQ0MiwgNzQxNDAsIDEyODE0OCwgNTM3MywgMTI4Nzk4LCA3MDM3MCwgMzc2MiwgCisgICAgMTAwMTUsIDEyMDY3MiwgMTE5MjMyLCAxMjUxMDksIDQxNTkwLCAwLCA3MDA5OCwgMzc4MCwgNzQ4NSwgNTc3OSwgOTE3ODk4LCAKKyAgICA0MjAzNywgMCwgMzkwNiwgMTIzNDksIDc0NzkzLCA4MzI2LCAxMjczMzMsIDY1NDk4LCAzNzYzLCA2OTgzLCA1NjE4LCAwLCAKKyAgICAzNzc5LCA5ODMxOTQsIDQzNjEzLCA3MDEzMiwgMCwgODMyODgsIDc4MzM1LCA4MzI4OSwgMCwgMjgwLCA3NDU1OCwgCisgICAgMTIxMzUzLCA2NzM5NiwgMTMwNzIsIDE4OTQsIDgzMjkxLCA2NzczNSwgNjU0NzgsIDQzMzEwLCA3MjMxLCAwLCAxMTc3MywgCisgICAgMCwgMTE5MTY1LCAxMTE0NCwgOTE3Nzc4LCAyNTUxLCAwLCA2NDUzLCAxMDIwMCwgNjIzNSwgOTgzNzUyLCAxMTkyMzcsIAorICAgIDcxODc3LCAxMjg2NjksIDQ0NzAsIDExODI2LCA5MTc1NTcsIDc3ODAsIDUzNjksIDExODk1OCwgNTI0OSwgOTgzMDY2LCAKKyAgICA1MzY3LCA4NzU2LCAxMjcxNDMsIDExOTE4MywgNTM3NywgMTIwNTg1LCA2ODE0MywgMTY4OCwgNzgyNDUsIDUyMTgsIAorICAgIDY5Njg1LCA5ODM3NTYsIDAsIDExMzc5NCwgNDQwMjAsIDY4MDgsIDQxMzE5LCAxMzAwLCAxMDY1MCwgNDE2OTIsIDY0NTA1LCAKKyAgICAyMjkwLCA3MTA1NywgMTE5NjI0LCAxNDY1LCAxMDg1MCwgMzk0MywgMCwgNDEyMDUsIDQxMzE1LCAxMTg5NjEsIDExOTMzMywgCisgICAgNjcxNDgsIDUzNTIsIDExMzc1MywgMCwgODgzOSwgNDEzMTQsIDczODQsIDc3ODUsIDQxMjA0LCAxMjczMjIsIDQxMjA5LCAKKyAgICA2OTYzNywgOTIyNDEsIDQzNjA3LCA3MTI1NCwgMCwgNTQyMCwgMzg5NywgMTAxMzQsIDEyMDM4MSwgNzQ0MTcsIDQwMTgsIAorICAgIDcxNTAsIDY4MTI3LCA3MTQyNSwgMCwgMTIxNDI3LCAxMjc4NjQsIDEyNzUyNiwgMjU2MSwgNjg2MjEsIDM1NDIsIDcxNDgsIAorICAgIDEyMDc2LCA3OTUxLCA2ODE1MiwgMTE4ODU3LCA1MzAzLCA2Mjc2LCAxNzA2LCAxMjA3NTAsIDc4NzUxLCA3MTQ2LCAKKyAgICA5ODM2ODIsIDY1MTUwLCA0MTgxOSwgMCwgNzM5NTEsIDEwODQ3LCA0MTgyMiwgOTk4NSwgODYwLCAwLCAxMDUwNiwgCisgICAgOTgzNDM3LCA2OTY0MSwgMTA3NTMsIDEwODMwLCAxMTkzMzksIDYxNSwgNjQ0OTAsIDc1NzQsIDc0MDgyLCA3NzkyMiwgMCwgCisgICAgMTI5MDksIDQzMDE2LCA2NDU1OSwgMTI3MDI4LCAwLCAxMjEyMzEsIDY3OTk2LCAyMDIwLCAxMjg3OTAsIDQwMjIsIAorICAgIDEyODc4MywgMTIwNzAxLCA3NzkyMywgMTI2NTkzLCA0MTY5MSwgMCwgNzUwNjAsIDc0MzI5LCAwLCA2NDYyMiwgOTA3MCwgMCwgCisgICAgNjg0MTEsIDM5MTEsIDQyODI5LCA0MzEyMiwgMTAzMywgNzQ0NDAsIDk4MzgxMywgNzAwMCwgMzkwNCwgOTgzNjI4LCAKKyAgICA3MzczNywgMTI1MTA1LCAxMTg5MzEsIDExOTYzMCwgMTMxMjMsIDEwODQ2LCAzNDUwLCAxMjczNjAsIDczOTcsIDExODgwNywgCisgICAgOTE3ODkxLCA0Mjc3OCwgMTAwMDAsIDQxMDg4LCA0NDksIDAsIDM3NzcsIDY4NDU4LCAxMTM3MjUsIDk2MzYsIDAsIDEwNzM4LCAKKyAgICA2OTYzNCwgOTM2NywgNTkzLCA0MTA4NSwgMzk5OSwgNjUyMjYsIDQxNzEzLCAxMjc2NCwgOTgzNzIzLCA2NDQwOSwgMzU5NiwgCisgICAgMTI5MDQ0LCAxMjgwOTAsIDk3NjMsIDEyMDI4MCwgNzQ2MDksIDEyMzQ3LCAxMjQsIDEyOTgxLCA0MTEyNywgMjA5MiwgCisgICAgOTI2ODcsIDAsIDEyNzU1NSwgMTk0NjMyLCAxMDgyMCwgNDM5ODcsIDAsIDEyODkwNywgMTc2OSwgNDE3MTUsIDI0NjMsIAorICAgIDcxMjE0LCA4MzA3MCwgMTI3NzAsIDcxMjIyLCAxNTM4LCA5MjYxNywgNDMxMjQsIDE5NDYxNCwgMTk1MDU4LCA3Nzk1LCAKKyAgICAxMjAzMDAsIDEyOTA1MywgNDgyOCwgMTI1OCwgMTI3ODAyLCAyMDA2LCAwLCAxMjExMzAsIDk0OTgsIDEyNzAzMiwgCiAgICAgMTI3MDMzLCAxMjAyODksIDEyMDI4OCwgMzkzOSwgMTIwMjkwLCA4ODQ2LCA4OTQzLCAxMjAyODcsIDEyMDI4NiwgMjY1MCwgCi0gICAgNDQ5MSwgMTk2MSwgNDI2MDIsIDExNTI1LCAxMjAyOTIsIDE5NTksIDEyMDI5NCwgNTUyMjgsIDExNzc0LCA0MTAxNiwgMCwgCi0gICAgNjg2NzUsIDEyODA1NCwgMTUxMSwgOTMyNCwgNzgyMTEsIDEwNTE5LCA2NjMzMSwgMzQ1NCwgMTk5MzAsIDAsIDQxMDE5LCAwLCAKLSAgICAwLCA2NTI5MiwgNjgyMiwgMTI4NjIsIDAsIDAsIDQyMTQzLCA0MTgyOCwgNzgyMDcsIDY1NTMxLCA3ODIwOCwgMTE4ODc5LCAKLSAgICA1NTIyMywgMCwgMTI4MDcxLCA0MTgyNiwgODg2NSwgNjQwMiwgMCwgMTMyNzksIDc5MTcsIDc0NzU1LCAwLCA3NzMzLCAwLCAKLSAgICA0OTk4LCA5ODM4OTYsIDkyMzMyLCA0MTk1MCwgMCwgNDI2OCwgMCwgMCwgNzAwNjEsIDQwMTMsIDAsIDEwODgxLCAwLCAwLCAKLSAgICAwLCA3NDc4OCwgMjAxNCwgMCwgMCwgOTc2NSwgMCwgMCwgMCwgMTk1MDU5LCA3ODM1NywgNjUyODEsIDEyNzgyNSwgMTA5NDksIAotICAgIDAsIDAsIDAsIDIwMTUsIDAsIDAsIDAsIDY2MzE4LCA0MzIzMywgMCwgNDI1MTcsIDAsIDAsIDAsIDEyNjk4LCA4MDk0LCAKLSAgICAxMDEzNSwgNjU5MDksIDY0NzQsIDc5NCwgMCwgMTI2NTYsIDEyODEyMiwgMTE5MzUzLCAxMjgyNzAsIDE2NjUsIDAsIDQ4MzMsIAotICAgIDk4MzA1MywgMTE5MzUxLCAxMjczNjcsIDAsIDE4OSwgMTI2MTEsIDAsIDAsIDI4NTksIDQ4MzgsIDAsIDQ4MzQsIDY1MDc4LCAKLSAgICAwLCAwLCA0ODM3LCAxMjcwNjEsIDc3MCwgMCwgODExLCAwLCA0MTA0MiwgOTE3NTUxLCA0MTMxOCwgNjQ0MjcsIDAsIAotICAgIDEyODIwOCwgNzg4NDgsIDM4OTUsIDAsIDc0MzQxLCAzOTc2LCAwLCA0Mjg1OSwgMTAxOTMsIDMxMTYsIDc3NDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQzNjg2LCA3ODg0NiwgNDE4NzcsIDAsIDI4NzEsIDY0NjE0LCAxMjg3ODUsIDk5OSwgMCwgNjM0NSwgCi0gICAgNDE4NzYsIDI2NjMsIDIwMTcsIDAsIDAsIDExMDQwLCAxMDE1MCwgMCwgNjQzMDgsIDE1MjIsIDU5NywgNDc3NSwgMTI1NTUsIAotICAgIDEyNTcxLCAxMjU1MCwgMTI1ODMsIDEyNTYwLCAyMDE5LCAxMjU1NiwgMTI1ODQsIDMwOTIsIDAsIDEyNTYyLCA0NzgzLCAKLSAgICAxMjU2NiwgMTI1NjksIDEyNTU0LCAwLCAxMDgxMiwgNzg4NTEsIDAsIDAsIDMwNzgsIDE0MDIsIDAsIDEyODI3NSwgMCwgMCwgCi0gICAgMTE5MjQ4LCAzOTQsIDMwODgsIDAsIDkyMTcyLCAwLCAzOTkxLCA2NDM5MSwgMCwgMTI4NTI0LCA0MjQsIDY2MzI4LCAxOTk5LCAKLSAgICA2OTY1OSwgNzM5MTQsIDAsIDAsIDAsIDAsIDQyMjMxLCA4MjQ2LCAwLCAwLCAwLCA0MTg0MCwgOTgzNjA5LCAyMzc3LCAKKyAgICA0NDkxLCAxOTYxLCA0MjYwMiwgMTE1MjUsIDEyMDI5MiwgMTk1OSwgMTIwMjk0LCA1NTIyOCwgMTE3NzQsIDQxMDE2LCAKKyAgICA5ODMyNjIsIDY4Njc1LCAxMjgwNTQsIDE1MTEsIDkzMjQsIDc4MjExLCAxMDUxOSwgNjYzMzEsIDM0NTQsIDE5OTMwLCAwLCAKKyAgICA0MTAxOSwgMTI3OTQ0LCAwLCA2NTI5MiwgNjgyMiwgMTI4NjIsIDAsIDAsIDQyMTQzLCA0MTgyOCwgNzgyMDcsIDY1NTMxLCAKKyAgICA3MDg2NCwgMTE4ODc5LCA1NTIyMywgMCwgMTI4MDcxLCA0MTgyNiwgODg2NSwgNjQwMiwgMTEzODI3LCAxMzI3OSwgNzkxNywgCisgICAgNzQ3NTUsIDkxNzk0OCwgNzczMywgOTgzNDA4LCA0OTk4LCA2ODQ5MywgOTIzMzIsIDQxOTUwLCAwLCA0MjY4LCAxOTQ3OTAsIAorICAgIDE5NTA1NiwgNzAwNjEsIDQwMTMsIDEyODcxOCwgMTA4ODEsIDAsIDk4MzE2MywgMCwgNzQ3ODgsIDIwMTQsIDI0MzIsIAorICAgIDcxOTAxLCA5NzY1LCAxOTUwNTIsIDAsIDkxNzg1NCwgMTk1MDU5LCA3ODM1NywgNjUyODEsIDEyNzgyNSwgMTA5NDksIDAsIAorICAgIDAsIDExOTMxNSwgMjAxNSwgMTIxMDg4LCA5Mjc2NSwgNzE4NDAsIDY2MzE4LCA0MzIzMywgOTE3OTkyLCA0MjUxNywgCisgICAgNjgwNjAsIDAsIDAsIDEyNjk4LCA4MDk0LCAxMDEzNSwgNjU5MDksIDY0NzQsIDc5NCwgNDM0OTcsIDEyNjU2LCA2NjMzNSwgCisgICAgMTE5MzUzLCA2NzI3OSwgMTY2NSwgNzE4NTMsIDQ4MzMsIDkxNzk4NSwgNzExODgsIDEyNzM2NywgMTIxNDY0LCAxODksIAorICAgIDEyNjExLCAwLCA5ODM0MjAsIDI4NTksIDQ4MzgsIDk4MzkzMCwgNDgzNCwgNjUwNzgsIDAsIDkyOTkxLCA0ODM3LCA2NzQxMywgCisgICAgNzcwLCA5MjY3MSwgODExLCA3MDA2MiwgNDEwNDIsIDgzMDczLCA0MTMxOCwgNjQ0MjcsIDczOTk5LCA2NzY5MywgNzg4NDgsIAorICAgIDM4OTUsIDkyNjE1LCA3NDM0MSwgMzk3NiwgMTI4NDY2LCA0Mjg1OSwgMTAxOTMsIDMxMTYsIDc3NDcsIDc4NDg4LCAwLCAKKyAgICA0MzQ5NiwgMCwgMTIxMDE1LCA0MzY4NiwgNzg4NDYsIDQxODc3LCA5ODM3NDMsIDI4NzEsIDY0NjE0LCA2ODg0MywgOTk5LCAKKyAgICA5ODM4NDQsIDYzNDUsIDQxODc2LCAyNjYzLCAyMDE3LCAxMjEyMzQsIDY3ODI0LCAxMTA0MCwgMTAxNTAsIDEyMDY3OCwgCisgICAgNjQzMDgsIDE1MjIsIDU5NywgNDc3NSwgMTI1NTUsIDEyNTcxLCAxMjU1MCwgMTI1ODMsIDEyNTYwLCAyMDE5LCAxMjU1NiwgCisgICAgMTI1ODQsIDMwOTIsIDAsIDEyNTYyLCA0NzgzLCAxMjU2NiwgMTI1NjksIDEyNTU0LCA4MzM0NCwgMTA4MTIsIDc4ODUxLCAwLCAKKyAgICA4MzM0MiwgMzA3OCwgMTQwMiwgMCwgODMzNDgsIDAsIDEyNTA3MiwgMTE5MjQ4LCAzOTQsIDMwODgsIDgzMzQ3LCA5MjE3MiwgCisgICAgOTE3OTY1LCAzOTkxLCA2NDM5MSwgODMzNDEsIDEyODUyNCwgNDI0LCA2NjMyOCwgMTk5OSwgNjk2NTksIDczOTE0LCAwLCAKKyAgICAxMjc1MzQsIDY2OTAzLCAxMjg0NjgsIDQyMjMxLCAyMjA5LCAxMjUxMDMsIDAsIDAsIDQxODQwLCA2NjkxMywgMjM3NywgCiAgICAgMTI5OCwgNjQwMTEsIDEyNTcyLCAxMTMxOCwgMTI1NTcsIDEyNTU5LCAxMjU3MCwgNzQ3OSwgMTAwMywgMjM3MywgOTQ0NiwgCi0gICAgNzQ4MSwgOTQ0OCwgNDgsIDAsIDk0ODAsIDQ4MSwgMCwgOTQzOCwgOTQzOSwgOTQ0MCwgOTQ0MSwgODQ2NSwgOTQ0MywgCi0gICAgOTQ0NCwgOTQ0NSwgOTQzMCwgOTQzMSwgOTQzMiwgOTQzMywgOTQzNCwgOTQzNSwgMzk4NCwgOTQzNywgMCwgMCwgOTQyNCwgCi0gICAgOTQyNSwgOTQyNiwgOTQyNywgOTQyOCwgOTQyOSwgNjQ3NTgsIDIzNjIsIDk2NTUsIDAsIDIwMDQsIDkwOTYsIDk3ODIsIAotICAgIDEyODg0OCwgOTE3MiwgMTI4NTQ1LCAxOTk2NSwgMCwgNTk1NSwgNjc2NjYsIDExMDgsIDAsIDc0NzczLCAwLCAwLCA2NDc4MiwgCi0gICAgMzkyNiwgOTI0NDgsIDY1MjEwLCA4Nzk4LCAwLCA5MjE2NSwgMTM5MiwgMCwgMCwgMTI3MzY0LCAxMDYwNiwgODA2NSwgCi0gICAgMTE4ODA1LCAxMDM1MywgMTA0MTcsIDAsIDAsIDY0NTI0LCA5MjQxOCwgNDAxOSwgMCwgOTgzMjg4LCA0MzI4MCwgODIxOSwgCi0gICAgNjg0MDIsIDE4MTIsIDExOTk2MywgOTgzNjkyLCAwLCAxMjY0ODgsIDQyNDEwLCA3NDQ0OCwgMTE5MTMyLCA2MDU0LCAKLSAgICAxMDY5NywgMzE2OSwgNDIyOTcsIDQyMzIyLCAxMDY0MiwgMzkwOSwgOTk1MCwgMCwgMTI4MTM5LCA5ODMyNjEsIDY4Njc4LCAKLSAgICAwLCAwLCAxMDQ5LCAwLCA2NTcwNywgMjMwNCwgNDE4MDYsIDkyMzI2LCA0MjMzNiwgMzkyMSwgMCwgMTE3NzUsIDY0NzYwLCAKKyAgICA3NDgxLCA5NDQ4LCA0OCwgOTgzMDg0LCA5NDgwLCA0ODEsIDAsIDk0MzgsIDk0MzksIDk0NDAsIDk0NDEsIDg0NjUsIDk0NDMsIAorICAgIDk0NDQsIDk0NDUsIDk0MzAsIDk0MzEsIDk0MzIsIDk0MzMsIDk0MzQsIDk0MzUsIDM5ODQsIDk0MzcsIDEyOTEzNSwgCisgICAgOTI5MzQsIDk0MjQsIDk0MjUsIDk0MjYsIDk0MjcsIDk0MjgsIDk0MjksIDY0NzU4LCAyMzYyLCA5NjU1LCAxMjgwNTAsIAorICAgIDIwMDQsIDkwOTYsIDk3ODIsIDcwODQyLCA5MTcyLCA4MzA3MSwgMTk5NjUsIDAsIDU5NTUsIDY3NjY2LCAxMTA4LCAwLCAKKyAgICA3NDc3MywgNzgyNzEsIDEyODkwOSwgNjQ3ODIsIDM5MjYsIDkyNDQ4LCA2NTIxMCwgODc5OCwgMCwgOTIxNjUsIDEzOTIsIAorICAgIDk4MzgxNywgMTIwODM4LCAxMjczNjQsIDEwNjA2LCA4MDY1LCAxMTg4MDUsIDEwMzUzLCAxMDQxNywgMTI3MjM4LCAKKyAgICAxMjg3MzksIDY0NTI0LCA5MjQxOCwgNDAxOSwgMCwgMTI1MDgyLCA0MzI4MCwgODIxOSwgNjg0MDIsIDE4MTIsIDExOTk2MywgCisgICAgMTIxMDY3LCAxMjg0MzAsIDEyMDkzOSwgNDI0MTAsIDc0NDQ4LCAxMTkxMzIsIDYwNTQsIDEwNjk3LCAzMTY5LCA0MjI5NywgCisgICAgNDIzMjIsIDEwNjQyLCAzOTA5LCA5OTUwLCAxMjg4NDgsIDEyODEzOSwgOTgzMjYzLCA2ODY3OCwgNzQ5ODYsIDk4Mzc5MCwgCisgICAgMTA0OSwgNDM1MTcsIDY1NzA3LCAyMzA0LCA0MTgwNiwgOTIzMjYsIDQyMzM2LCAzOTIxLCAwLCAxMTc3NSwgNjQ3NjAsIAogICAgIDExNzY2LCAxMDM4LCA0MjMwMywgOTgyMywgMTI3Mjc4LCA2OTIzNiwgNDAwOCwgNjQwMDQsIDg3NzMsIDEwNzMzLCAzNiwgMCwgCi0gICAgNTE1MywgNDE4MDUsIDAsIDczNzM1LCA3NjMsIDQxODA4LCA2NDkxMCwgOTgzMTMwLCAyMDA5LCAwLCAwLCAxMjcxNDIsIAotICAgIDk2NDAsIDExOTk1MSwgMCwgMTIwNjk1LCA4NjIxLCAxMjA1MjMsIDEyODUyLCAzMDMxLCA5ODMwNTAsIDY0MzYxLCAwLCAKLSAgICAxODIsIDE5NDcxOCwgOTI3MTYsIDkyNTk4LCAxMTk5NTAsIDQyNjEzLCA5MDU4LCAzNjYsIDAsIDk4OTIsIDU5NjksIAotICAgIDExNzU0LCAxMDg0OCwgNDU3MCwgNjUzMDEsIDQ0MDEzLCA0MjU1LCAxMjc4ODksIDEwMTAyLCA0MTE4OSwgNDAwMywgCi0gICAgNDEwMjYsIDY4MTA5LCAxMzI5MywgNDExOTIsIDY5NjM1LCAwLCA0MjI1MSwgMCwgNDI1MzQsIDY1MTc5LCAxMTI4NywgCi0gICAgNjEyOCwgMCwgMTEwMzQsIDEwOTIzLCA2NDQyMywgMCwgNjU1MDYsIDAsIDY1ODYxLCA3NDA4MywgOTI2MDAsIDk5MzIsIDAsIAotICAgIDkyNDIzLCAxMTk5NTUsIDAsIDk4MTcsIDAsIDEyMDE0MCwgMCwgMTIxMTcsIDY2NTg2LCA0MTgzLCAxMDU0MCwgNjYyNTAsIAotICAgIDkwNjMsIDEyNzA0NSwgMCwgMTE5OTU0LCAwLCAxMjg5NywgMzc5MiwgMjAxMSwgMCwgNjA2NSwgNDMxNjAsIDAsIDE5NDcxNSwgCi0gICAgODY5MiwgNDExODYsIDQxODE2LCA0MTAyMywgNDE4MTgsIDQxMTg3LCAxMTY1OSwgNzkyMiwgMTI2MTQsIDIwMDUsIDg1MjMsIAotICAgIDc4MDAyLCAwLCA3NTEzLCAxODYzLCA0NzEwLCAwLCA1OTU2LCA3NjIxLCA3ODAwNiwgOTI2MjQsIDQ3MDUsIDcxNiwgCi0gICAgNzgwMDQsIDAsIDQ3MDQsIDEyMDA0MCwgMTIwMjcwLCA0MjI0MSwgMTYxLCA0Mzk3NywgNzQ1NDYsIDY2MjE0LCA0NzA2LCAwLCAKLSAgICA2OTkxNCwgNDI2NzIsIDQ3MDksIDEwNjgwLCAxMTkwNjUsIDQzMjkzLCAxMTk5NDQsIDAsIDExOTE2NCwgMTIwMzI4LCAKLSAgICA5MjQ2NywgMTAxODcsIDE3MDAsIDExOTIyMywgMCwgMCwgMTI4MTE5LCA0MDA0LCAwLCAxMDk2OCwgNDMyOTYsIDk4MzY0MiwgCi0gICAgODUwNiwgMCwgMCwgMTI2OTk2LCAxMDA1LCA5MzcsIDc4MjE2LCA0NzM0LCAyODcwLCAwLCA3ODIxOCwgOTgzMTA5LCA3NDYzLCAKLSAgICA0NzI5LCAwLCAyMzUsIDEzODQsIDQ3MjgsIDAsIDEyMDQyMCwgOTI0OTAsIDc0NDQ5LCA4MTA5LCA0MzEwNSwgOTgzMTc0LCAKLSAgICA0NzMwLCA0NDcsIDEzMTg2LCAxNTEzLCA0NzMzLCAxMjA0MTUsIDAsIDAsIDQyNTI3LCAxMjkxMSwgNDM0MjcsIDEzODMsIAotICAgIDg1NjUsIDI0NjksIDEyMDAyNCwgNjY5MCwgNjE1NiwgNjgxMTcsIDQzNDM5LCA3OTkzLCA0Mjg4LCAxMjA0MTYsIDI2NzQsIAotICAgIDEzMjM4LCAxMTkyMiwgMCwgMTIwMzMwLCAzNTEwLCAxMzIzNCwgMCwgMTIwNDA3LCA1NjA1LCA0MjA5NSwgMTEzNjQsIDAsIAotICAgIDEzODAsIDY1NjE3LCAxMjAyNTMsIDEyMDI2MSwgMTMxOTYsIDEzMTk3LCAxMjAzMDksIDEyMDY4MiwgOTQ5NSwgMTE5MzQ2LCAKLSAgICAwLCA1OTU5LCA2Nzk4NCwgNzM5NzYsIDEyMDMwNSwgNDMzNzEsIDY5NDEsIDExOTM0OSwgMTMyMDUsIDEzMjExLCA1ODAxLCAKLSAgICAxMjc2OSwgNjU5MDUsIDQxNjk3LCAxMjgzLCAxMjAzMDIsIDQ3NzksIDAsIDM3MTksIDQwMDYsIDk4MzU2OSwgMTk5NTcsIAotICAgIDEyODc3MywgMjAyMSwgMTE5MzMyLCAxMjA2OTksIDExOTE1MCwgNDMwMjgsIDY1NDkzLCA0MTgzOCwgMzg3NSwgNTk2MiwgCi0gICAgNjQzNDEsIDkyNjE2LCA5ODE0LCA0MzQ1NywgNTgyNywgMzMxNCwgNzc4NywgNzgyMzQsIDY1NDk0LCA2ODE1MywgMCwgMCwgCi0gICAgMTIwNjM2LCA2NDUzMSwgMTIwNjkyLCAxOTQ2MjYsIDAsIDAsIDY2MzE2LCA2NTQ2NywgNTc3MSwgNDEyOTgsIDk4Mzc5NCwgCi0gICAgOTc0MiwgNTIxLCAwLCAxMDgwMCwgOTIyMjIsIDg0MDQsIDE5NDYyNSwgNDgzLCA3MDk2LCA3MDg5LCA2NjMyMywgOTI4LCAwLCAKLSAgICAwLCAxMTkwMTgsIDEwNTk5LCAxMTU4NiwgMzk4OSwgMTA5NzEsIDQzNzQ4LCA2NTc4MiwgOTg0MSwgODg0MywgMTIxNDUsIAotICAgIDkyNDcwLCAxMDA3NCwgNzg1NDgsIDAsIDM3NjksIDAsIDAsIDAsIDk4MzEwNywgOTU3MywgMCwgNjUyOTAsIDg4NDksIDAsIAotICAgIDY1ODU1LCA2NTExMiwgMTc5NiwgMTIwNTA1LCAwLCA2OTY2NSwgODE2NCwgNDEzMDEsIDM1MDIsIDAsIDczODgsIDEwNjIxLCAKLSAgICA3MzgzOCwgNzg1NTMsIDU4MjUsIDEzMDA3LCA2ODE2NSwgMCwgMTIwNDU3LCAxMjY2MSwgNzYwOCwgMTAzNTQsIDEwNDE4LCAKLSAgICA0MjQxMSwgMjAyMiwgMCwgMTQwOSwgMTIxOTUsIDQwMDEsIDMxMTIsIDEwODI0LCAxMjA2MzksIDEzOTAsIDAsIDAsIDQyMSwgCi0gICAgNDM1MzYsIDU4NDYsIDEyMDEyMCwgNDEzMCwgMTI3Nzc1LCA3NTk1LCA0MjU4OCwgNzYwMCwgMTIwMTIxLCA2NjAzNSwgCi0gICAgOTgzOTEzLCAwLCA2NTg1MSwgNDI2MDcsIDEyODE5MCwgOTI0MDMsIDMxNjgsIDAsIDQyMTM0LCAxMTgzMSwgMjM3MCwgCi0gICAgMjg0NiwgOTI2MDUsIDAsIDAsIDEyMDEzMiwgMCwgMTgzNiwgMCwgMCwgOTI1NTgsIDM3NDAsIDY5ODQzLCA2MjkwLCAKLSAgICA2NTM3NCwgMTIwNDUxLCAyMzkwLCAzOTQ0LCA2NjYyOCwgMTIwNDM0LCAwLCA2MTM1LCAzMTE4LCA3NDI2NSwgMTE5MDkzLCAKLSAgICAxMjA0NDYsIDAsIDAsIDgxMjcsIDg5NzUsIDY0NzM5LCA3OTQzLCA5ODM3NDMsIDAsIDEwNjE4LCAyNTg0LCAwLCAwLCAwLCAKLSAgICA5OTk4LCAxMjg1NjQsIDAsIDAsIDAsIDAsIDYyMDQsIDAsIDAsIDgyNzksIDg3NzYsIDY0OTU0LCA0OTc1LCA3MDA3NSwgCi0gICAgMTIwMTMwLCA0MjY3LCAxNjMxLCA0MjIwNiwgNzc5ODMsIDAsIDE5NTA0NiwgNjU3MDAsIDY2NTYyLCAwLCA2NDY0NSwgMCwgCi0gICAgMCwgMTI2NTg4LCAxMjU4NiwgMCwgOTI0MiwgMTI3OTIyLCAwLCA0NTIzLCA1ODQyLCAxMDQ5NSwgMzEyMiwgOTgzNzk3LCAKLSAgICA3NzkzLCA3ODI3NSwgOTMyOCwgMTE5MTA0LCA3ODM5MywgMTI2MDQsIDAsIDY2MTUsIDIyODUsIDkyMzQ0LCAzOTg2LCAKLSAgICA0NDAyNSwgMCwgODkxMiwgNjQ1NTUsIDc0MDksIDAsIDk4MzM1OCwgOTU0MSwgNzgyNzYsIDAsIDExMjc1LCA4NTQwLCAKLSAgICAxMTQ5OCwgMCwgOTgzMzU3LCA0MTA0MCwgMjQ1OSwgMCwgMTMwNjAsIDQxMDQxLCA3NDQxMywgOTgzMTM4LCAwLCAwLCAKLSAgICA2ODQyNywgMTA0NTAsIDEyNTUxLCA0MTA0MywgNzAyMCwgMTIwMzUzLCAzNzY1LCA5ODMzNTAsIDAsIDE2MDYsIDEyMDM0OCwgCi0gICAgMTIwMzUxLCAzMDkzLCA2ODQzNiwgMCwgOTgzMDYxLCAxMTk2MTMsIDAsIDAsIDQzMTIsIDc0MDkxLCAxMjAzMzcsIAotICAgIDEyMDMzNiwgMTE5MjMsIDQwMjMsIDEyMDMzMywgNTc2MywgOTQwMTUsIDQ4MjcsIDEwODk0LCAxMjgxMCwgNjQ0MDYsIAotICAgIDExODc4NSwgNDQ1NSwgNzQzMjEsIDQzMywgMTE5NjIwLCA2NjY2MCwgMjQ5OSwgMCwgMCwgMTE4ODM3LCAxMTk3MywgCi0gICAgMTMwODksIDQyOTMsIDEyMDMyOSwgNDIyMjQsIDQyNzU4LCAxMjE5NiwgNDI4MzcsIDQyMjI2LCAxMTkzMTksIDAsIAotICAgIDExOTEyNiwgNTgxNywgMTI3ODA2LCA1NTI3NywgMzEyMCwgOTc5NywgMCwgMCwgMCwgMTAzODksIDEyNjQ4NSwgMCwgNDg5NSwgCi0gICAgNjUzNTgsIDAsIDQzNTksIDU4NSwgMjM4MywgMzUwOSwgNzAwMzcsIDQ4NiwgNDI5MCwgNTc1OCwgMTI3NTQ2LCAwLCAwLCAKLSAgICA3MDA0LCAwLCA2NTg4MCwgMTI3ODg2LCAxMTkwNDgsIDIzODAsIDExMzgwLCAwLCA5Mzk5NiwgMjM3NiwgMCwgMTE5MzIwLCAKLSAgICAwLCA1MTk3LCAxMjcwNDYsIDEyNzA0NywgMTI3MDQ4LCAyMzY2LCAxMjcwNTAsIDEyNzA1MSwgMTIwNTU0LCAxMjAwNDUsIDAsIAotICAgIDAsIDAsIDk4MzA4NCwgMCwgMCwgMCwgNzQxODgsIDcxMzQyLCA5ODMwODYsIDk4MzU3MywgMTIwMDQ3LCAxMjg1NzUsIDAsIAotICAgIDAsIDEyMDA0OSwgMCwgMTg0NywgMCwgMTAzMzksIDk4MzM2NSwgNDIzODQsIDAsIDQyMjcsIDc0MTU4LCAwLCA5MjUwMSwgCi0gICAgNDMwMzIsIDAsIDQyMzY1LCAwLCAxMjY3MSwgMTEzODQsIDAsIDk4MzQ2NSwgMCwgNjQ3OTcsIDk4MzM0NSwgNTgyMCwgCi0gICAgOTgzMzQ0LCAxMjAwNTIsIDEyMDA2NSwgMCwgMTIwMDY0LCAxMjA2NTAsIDQyMTM3LCA5ODkzLCAyNzU0LCAxMjY2NCwgCi0gICAgMTIwMDYzLCAwLCA3Mzc3LCAxMjc4NjcsIDQxNzk5LCA2NTUzMCwgMTcxMSwgMTI5ODQsIDQzMDM5LCAzMTE0LCA2MjU1LCAKLSAgICA5ODMzNDAsIDExODkzOCwgMCwgMTA4NTMsIDkyNiwgOTgzMzY5LCA3NDE4NCwgOTgzMzY4LCAxMjAwNTUsIDAsIDQzMTc1LCAKLSAgICAwLCA0MzAzNywgNDE3OTgsIDQxMDM1LCAxMTU4MywgMTI3NzY5LCA0MTgwMSwgMTE5MDg4LCAxMTk2MDUsIDUyMCwgNDIwMCwgCi0gICAgMTI2OTksIDgzMzEsIDAsIDMwOTEsIDQxMDM0LCAxMjczNTMsIDk4MzY4MSwgODM2MCwgMCwgNzgwNDQsIDMyMSwgNDIyOSwgCi0gICAgNjQ1NDMsIDkxNzk0NiwgNjU1NjMsIDAsIDkxNzk3NCwgMjg2MSwgNDM3OTMsIDEwMDk1LCAwLCA5MTk1LCA5MjM4NiwgCi0gICAgMTg2MSwgMCwgNzM3MzMsIDAsIDAsIDQzMDQxLCAwLCA0Mzc5NCwgMTI4NTMwLCAzODU5LCAxMjE4MSwgNDE2NjAsIDgyMDksIAotICAgIDAsIDczODY3LCAxMjk3MywgMCwgNzQ3NTcsIDEyNzUxNCwgNDE2NTgsIDAsIDAsIDU3NjAsIDAsIDc0MywgNDQxNCwgCi0gICAgMTIwNzY2LCAwLCA0MjYzMiwgOTE3OTczLCA2NTE2MSwgNzM4OTYsIDEyODU4OSwgMCwgMTQwNSwgMTE5MDYzLCA0MzIyMCwgCi0gICAgNDMzNDEsIDAsIDE5OTE5LCAwLCA2NDUzMiwgNjUzNjcsIDQzNzEwLCAwLCAwLCAzNTEzLCAwLCAxMTg4ODMsIDQzMzQyLCAKLSAgICAxMTkwNjQsIDY1NTI5LCA2NTM2NCwgMTI4MTk3LCAwLCA2NDg1LCAxMzk3LCAwLCA0MTk4NiwgOTI2NzgsIDAsIDAsIAotICAgIDc0MDk3LCAwLCA3NDcxLCAxMjA3OSwgNjc5OTcsIDEyNjgyLCA0MzI4NywgOTIzMTcsIDAsIDk4MzE0MywgOTgzNzA3LCAwLCAKLSAgICAwLCAxMDk5LCAxMDQ5MCwgMCwgMTA1MDEsIDY1MTgxLCA3NDQ2MywgMCwgNDY0LCA0MTYyNCwgNjUyODMsIDY3NjYzLCAKLSAgICA3ODIyMiwgMTM0NiwgMCwgOTE3NjMxLCA2NDU3MywgNjQ4OTcsIDQyMywgMTgxOCwgNjUxNDQsIDAsIDgyNzIsIDEyNzgxMiwgCi0gICAgMTk5MTEsIDQyMTgsIDMwODcsIDY0OTYwLCAxMjcyMzQsIDQzNTY0LCAwLCAwLCA5NTg0LCAxMDQ2NSwgOTgzOTAyLCAKLSAgICA3NDM1OSwgMTI2MjYsIDkxMDYsIDAsIDQyNjQyLCAxMjAyMzAsIDY0NzUwLCA5MzkwLCAwLCA0MTc5NywgMCwgMCwgMjY1LCAKLSAgICA0MTc5NSwgNjQ2NjYsIDEyNjUwOCwgNDM1MzAsIDI3NTIsIDAsIDAsIDk4MzQ5MywgNTksIDAsIDk4MzU5MywgMCwgOTIzNzEsIAotICAgIDc3ODczLCA0MTgxMCwgMCwgNzAxMCwgMCwgNDE4MDksIDQxNDk1LCAxMTkzNjQsIDAsIDQyMjUyLCA0MjIxMywgODAwOSwgCi0gICAgMzMwNSwgNDMwMzMsIDUxMSwgOTI3MDAsIDY2MjU1LCAxMzEyNywgMTIwMDY3LCAwLCA3NDM5NywgMTIwMjM1LCA5MTc5NzcsIAotICAgIDY1OTE1LCAxNDAwLCA0MTgxMiwgMTA2ODUsIDE5NDg3MCwgMjEwMywgMTAzODcsIDQ0NTMsIDQzMjc2LCA5MTc3ODMsIAotICAgIDEzMTU5LCAwLCA2NDgxLCA0MTIxMywgMCwgMCwgMCwgMCwgNDE5ODMsIDc0MTk4LCA2NjE3LCA5MTE2LCAxMTk2NTQsIDAsIAotICAgIDQ2MiwgNjgxMTAsIDEwNDkzLCAwLCA4MTI5LCAwLCAwLCA3NDQ3MSwgNjY0NCwgMTE2NTgsIDAsIDEyODI0NSwgMzQ1MiwgCi0gICAgMTE5MDYsIDk1ODEsIDEzODUsIDMwOTgsIDAsIDExOTAxMywgNDMzNDAsIDAsIDQxMDMzLCA2NDkzLCA0MjYyNiwgMCwgMCwgCi0gICAgMTE0MjYsIDc3ODg3LCAxNjgxLCAxMTg3ODksIDEyMDQsIDM3NTUsIDY0NjYxLCA3MjM1LCAxMDE3MCwgMzk2NiwgODkxMSwgCi0gICAgMCwgNDE4NDEsIDQzMzM4LCAwLCAwLCA1NzI2LCA2NDkxNSwgNDIxNzUsIDAsIDAsIDQxNDk3LCA2NTA0NCwgMTIwMTA5LCAKLSAgICAyODUxLCA0MzAxNywgOTgzNTg5LCAwLCA0MzczLCA3ODA1OCwgMCwgOTU4NywgMTc4OSwgNjY3MSwgMTI4ODQwLCAzMTAwLCAKLSAgICAwLCA2NTM2MCwgMCwgOTIzNjUsIDkxNzc4OSwgNjQ5MjIsIDAsIDgxOTAsIDEyMDgzLCAwLCAwLCA2NTA2LCA2NDMxMiwgCi0gICAgNzQzNzQsIDIzNjgsIDAsIDQ0MTksIDk4Mzg0NywgMTE5MTI1LCAzNDM5LCAxODI1LCAxMTkyLCAxMjAxMDYsIDg4OTEsIAotICAgIDMwODAsIDEyMDIyOCwgMjM0NywgNTQzMCwgMCwgODk5MCwgMjg0OCwgMCwgMTI4MjIzLCA5MjUyOCwgMjQ5LCAwLCAwLCAwLCAKLSAgICAxMjA2NTgsIDAsIDAsIDg4ODMsIDkxNzgwMiwgNzI4LCA2ODE3OCwgOTk1LCAwLCAwLCA2NDgyNiwgMCwgOTE3Nzk4LCAKLSAgICAxMjgzNDgsIDAsIDE5OTQ1LCA4MDkxLCA1NTgsIDAsIDEyMjczLCAxOTQ4MTQsIDk4Mzg1MCwgMTIxMTIsIDY5OTEyLCAwLCAKLSAgICAwLCA3NDQxOSwgMTIzMzUsIDEyMDEwNCwgOTE3Nzk1LCAzNDQzLCAzMTI5LCAwLCAyMTAyLCA2NTQ0NSwgNzgyNTgsIAotICAgIDY0ODkxLCAwLCA3NzI1LCA2NTEwOCwgNzgyNTUsIDAsIDg2MjQsIDY5MjQ2LCAxMjQ0NiwgNDMyOTUsIDAsIDQxODk0LCAwLCAKLSAgICA2Mjc3LCA0MTY3MiwgNDE4OTMsIDEwMDEwLCAxMjg2NzgsIDM1NDAsIDEyODY0OSwgODM1LCA3MTM0MCwgNjk4MTYsIAotICAgIDExOTg2OCwgNzQ0MDgsIDAsIDczOTU5LCA1NDI2LCA0MjU4LCAwLCAwLCA1NDI0LCAxMjgxMjcsIDgyODMsIDAsIDU0MzQsIAotICAgIDk4MzU5MCwgMCwgMTk5MTcsIDExNDA4LCAwLCAxMTk0NywgMCwgMTQwNCwgMzA5NSwgMTE0MzIsIDEyODMwNywgMzQ2NCwgCi0gICAgNjQ4NiwgNDgxOSwgMTI4MjMzLCAwLCA1NzAsIDgwOTUsIDM2NzIsIDExOTg2NCwgMTQ5OCwgNjc4NjYsIDAsIDEyODUzOSwgCi0gICAgNDMxLCAwLCAwLCAxMjgxODIsIDEyODA5NiwgNjgxNjcsIDk4MzY2MywgMTMwOTYsIDEyODY0MywgMCwgNDM0MDgsIDk1MTYsIAotICAgIDEyODUzOCwgNTI2OCwgNDIyMzAsIDQyMjIwLCAwLCA0NDUwLCAxMjA1MTEsIDExNTQ3LCA0MzQxNywgMTI4NTQyLCAzNTYsIAotICAgIDM0NzcsIDIyNywgMTA0ODgsIDY4MjAzLCAzODIsIDExNDE4LCAwLCAxOTUwNjYsIDAsIDAsIDAsIDAsIDY0ODQsIDI1NDEsIAotICAgIDY2MDM5LCAwLCA3ODcxOCwgOTI3MjMsIDM1NDksIDAsIDkxMTAsIDExOTY2NSwgMjc0MywgMCwgNDMyOTAsIDE5NDgxMiwgCi0gICAgOTA5NywgMCwgNDMwMTUsIDg3ODIsIDAsIDc3NiwgMjUyNCwgNDI3MDcsIDg1NzMsIDAsIDEyNjQ5NCwgMCwgMCwgNDI2OTQsIAotICAgIDY0OTQ0LCA4OTUyLCAzODU2LCAxMTg4MTgsIDAsIDU4NzIsIDY0OTUsIDAsIDAsIDAsIDkyNTQzLCAwLCAxMjA3MzMsIAotICAgIDEyODQ5LCAzOTUzLCAxODk3LCAwLCA2NTA5NCwgMTE5OTQsIDQzMzksIDc0NTU2LCA5MjY1NCwgNjc4NDMsIDAsIDAsIDAsIAotICAgIDY4NDczLCA3NDEwNCwgNTIyOCwgMTI4ODA0LCA3ODY4LCA0MzE4NCwgMCwgMCwgNzM5ODYsIDQzNDM4LCAwLCA0MzAyMiwgMCwgCi0gICAgMTE2MiwgOTE3ODQ3LCAyNjcxLCAwLCAwLCA5MjYzMiwgOTI2MzEsIDExODg2NSwgNDU1MywgNzM4MTEsIDAsIDE5NTAwNSwgCi0gICAgMCwgMCwgMTk5MjEsIDc0MzMxLCAxMTQyNCwgMTk1MDA2LCA0NTY3LCA0MTg5MSwgMCwgOTgzNzg4LCA1NTI0OSwgNDgyMCwgCi0gICAgNjUyMzksIDE5NDY2MiwgMCwgMTk0NjY1LCA0MzA0MiwgMTE5MjEyLCAxMzc3LCAxMjg2OSwgNDg5NywgNDI4MjEsIDkyNTAsIAotICAgIDAsIDQ0MzgsIDY0Mzg1LCAwLCAxNzUzLCAxMTMzMSwgNjE0NywgMTk0OTQxLCA0MzI4MiwgODgzMywgMCwgMCwgNjUwNCwgCi0gICAgNzg0MDgsIDEyNjk3OSwgMTA3MTksIDAsIDE4OTgsIDE0MTMsIDQyNDQzLCAwLCA4MDIsIDEyMTQxLCAwLCAxOTQ2NzEsIAotICAgIDY2NDgsIDEwNjcxLCAyNTI4LCAwLCA2NDc4OSwgOTE2OSwgODM4LCAxMjAwODcsIDEyMDY5NywgODQ0LCA1MDE0LCAwLCAKLSAgICAyNTYsIDAsIDk5OTAsIDAsIDQyNzM5LCA5MTc4NTEsIDc1NDIsIDY1NDY0LCA5NzI2LCAwLCA2NDg5LCAxMDA0OCwgNzQzMjYsIAotICAgIDc4NzE5LCA2NjU3MywgMCwgNzg3MjQsIDc4NzEyLCAxMTc2MSwgMTk0NjU1LCAwLCA0MTA5NCwgMCwgMCwgMTk0ODkzLCAwLCAKLSAgICA5MjY4OSwgNjE5NiwgNjk0NSwgOTM5NjksIDE5NDg5MCwgMTI4MTg0LCAxMjA0OTEsIDExODE2LCAxOTQ5NDMsIDU3MzMsIAotICAgIDI5MzAsIDAsIDAsIDQxMDk4LCAwLCA0MTA5MywgMCwgNjY2MjYsIDU4OCwgOTc2MCwgMCwgMTk0NzE3LCAxMjM4LCAyMDAsIAotICAgIDk4MzIwNywgMTY2MCwgNzM5MTYsIDAsIDExODkwNSwgNzQzNjIsIDAsIDkyNDg1LCAxOTQ2NTEsIDAsIDk4MzcwNiwgMzM5NCwgCi0gICAgMTk0ODk0LCAxMjA2NjgsIDAsIDAsIDEyNzM1OCwgNjYyMTksIDEyNzE4MywgNDMyODQsIDE5NDY1NiwgNzgxNywgMTg0MSwgCi0gICAgMTEwNTUsIDEyMDUzMywgMTk0OTc5LCAxOTQ5ODIsIDE2NjksIDEwNzc2LCAxOTQ5ODEsIDc3MDEsIDE5NDk4MCwgMCwgCi0gICAgMTk0OTk1LCAxNzMyLCA0MDMwLCAwLCAzOTYzLCA2NjYxMSwgMTI3NTMwLCA0MTc2OCwgNjQ5MSwgMCwgNjUzMjQsIDkxNCwgCi0gICAgNjUzMjMsIDgwNzEsIDM1MzgsIDAsIDIyODcsIDY1MzI4LCA5MjQ0MSwgNzQzNjcsIDc2MTQsIDAsIDExODE5LCAwLCAKLSAgICAxMjAwOSwgMTIzOTksIDAsIDY3ODUyLCA2NTUzNywgMCwgMTA4NDEsIDQzNDMwLCA1MzAxLCAwLCA5MjYxOCwgNTczNCwgCi0gICAgODk2MCwgMCwgOTI1MjcsIDY1MzE3LCA3Nzg4MCwgMCwgMCwgMCwgMTIzMDQsIDAsIDAsIDY1MzE1LCA5MjY3MCwgMTI4NTExLCAKLSAgICAwLCAwLCAwLCAxMTk2MjEsIDkyNTI5LCA3NDUzNiwgMTI0NDcsIDY0NDg2LCAxMjczNzQsIDEyNjU2MiwgOTgzMTI5LCAwLCAKLSAgICAwLCA5ODM4MDIsIDQyNzY3LCAxMDkxNSwgMCwgMTIwMDcsIDQzNjk1LCAxMjA1MjAsIDExOTc1LCAxOTQ4NzgsIDAsIAotICAgIDkyNjA0LCAyNTU1LCA4NjI5LCAxMjg2NDAsIDQzMTY4LCA0MTg3MiwgNDM3MDYsIDQ0OTYsIDE5NDg3OSwgMTI4MTQ4LCAKLSAgICAxMjAyNDEsIDAsIDAsIDAsIDAsIDY0NzMwLCA3MDA0MSwgNjY3MTQsIDY4MjIyLCAwLCA3MDA3NiwgNjU1OTYsIDkyMzA2LCAKLSAgICAxMTQxNiwgNDI4MCwgNjc2NTUsIDg3NjUsIDEyNzg0LCA3NzkyLCAxMzkzLCAxMjY0NzMsIDY3ODcxLCA3NDM4NiwgMCwgCi0gICAgODIzMywgMTI4MjAsIDAsIDY2ODMsIDE5NDg3NiwgMzQ0MiwgMTIxNDQsIDI4NDEsIDEyNTQzLCAwLCAxNDczLCA0MjgyMCwgCi0gICAgNjQzMjksIDEyNzgzMiwgMCwgNjg2NDIsIDY0ODgsIDM1NywgMTA0OCwgNDExMDAsIDAsIDQxMTA0LCA5NDAwMywgMzQwNiwgCi0gICAgMTA1NCwgNzEzMjAsIDEwNDAsIDY1NDUwLCAwLCA0NDM0LCAxMDY5LCAwLCAxMTg4NjIsIDY1NzM3LCA5MTc3NjUsIAotICAgIDEyODcwNSwgMCwgOTgzNjkzLCA5NjkzLCA0MTk0MywgMTI2NTY0LCA0MTkzMSwgNDE3NTksIDEyNzU3LCA0MzUzLCAwLCAKLSAgICAxMDU5LCA5NzkwLCA4OTk1LCAxMTk5NzQsIDk4MzY5NiwgNjU5MzcsIDAsIDQxNzY0LCAxMDY0NiwgMCwgMTE4ODMzLCAKLSAgICA5MjM3MiwgMCwgNzQ4MzAsIDc4NTY5LCAxMjc0MywgOTgzNjg5LCA2NDgwLCA5MTc3NjEsIDQxNzc5LCA0MjU4MCwgNjY2MDEsIAotICAgIDEyMjA3LCAxMTk2MTksIDYzMzUsIDY2NjAyLCAxMTMxMiwgNjQ4MDcsIDAsIDAsIDQxNzY3LCAxMTk2MjksIDk4Mzc2NCwgCi0gICAgNDMwMjAsIDEyODI3MSwgMzk1NSwgNzQyNTQsIDAsIDk4Mzc1NCwgOTE3ODYxLCAwLCA3NzkyNiwgOTc3MCwgOTI0NiwgCi0gICAgMTIyMzAsIDAsIDAsIDAsIDEwNDQ4LCA0MTc4MywgNDE3ODYsIDEyNzA5MywgMTI3OTcsIDI3NTUsIDY0NTcxLCA3ODU3OCwgCi0gICAgMTk0OTI3LCA0ODU3LCAwLCA0NDI4LCAxMjc5NCwgNzM3NTUsIDEyODA2MSwgNzg1NzQsIDAsIDc0Mjg0LCAwLCA1NzQ3LCAKLSAgICA3ODgyNSwgMCwgNzk3OCwgNDEwOTIsIDc0NTcxLCAwLCAxMTkyNCwgNDM4MTIsIDQyMTQ0LCA2NTAxNSwgMCwgNTYzLCAwLCAKLSAgICA5ODM2OTEsIDEyNzk4LCAxMTI3MSwgNTcsIDAsIDAsIDkxNzg2MCwgMTE5MDQzLCAwLCA5NDA1MSwgNDMxMzcsIDY5NCwgMCwgCi0gICAgOTg3NiwgMCwgMTE5MTY4LCAwLCA3ODgyMiwgNjQ1MzcsIDAsIDI3NywgNzQzODUsIDcyMjksIDEyNzYxLCAwLCAwLCAKLSAgICAxMzAyNSwgNjQ4MTEsIDg3NTcsIDc4ODI0LCAxMjY0NzgsIDE1NzQsIDczODEsIDAsIDI1MjUsIDQ4NTIsIDU3NDksIAotICAgIDY4NDY1LCAxMzAyNywgNDI4MjQsIDEyMDU3NCwgMTAzOSwgNzE1MSwgMTAxNTUsIDU3NDUsIDE4OCwgNDE4NTgsIDExNTkyLCAKLSAgICAwLCA3NDAxNSwgOTA1NSwgNDE4NTMsIDQ4NTgsIDkxNzc4MCwgMCwgNDM2LCA0NzcxLCAwLCAyNzg2LCAwLCA0ODU2LCAKLSAgICA4MDUxLCAwLCAxMTk2MDksIDcxMzI3LCA5NjQ0LCAwLCAwLCAwLCAxOTQ5MTYsIDEyMDczMiwgNjY3MTAsIDExODgzNCwgCi0gICAgOTgzMzU5LCA3MzkwNiwgMTI4NjgwLCAxMjcxMTQsIDAsIDEwMjM0LCA1ODQzLCAxMTkzOSwgMCwgNDIxNTcsIDAsIDMxNTcsIAotICAgIDE5NDkxOCwgNjgzOTMsIDAsIDM1MDQsIDExOTE3OCwgMCwgMTA4MjIsIDUxNDksIDY2MDI5LCAxMDIyNiwgNjUxNDIsIAotICAgIDEyODAyNSwgMzU5NCwgNDI0MjQsIDE5NDk1OSwgNDAsIDEyNjU3LCA5ODM2NjUsIDAsIDM4NiwgMCwgODgzNCwgMCwgCi0gICAgMTI4MTUsIDQzNTc0LCAwLCA3MzkwNywgMCwgNzQxOTYsIDcyMjAsIDc0NTA0LCAwLCA3NDMxNiwgMCwgNjUzMjIsIDQzMDQsIAotICAgIDc0NTAzLCA4MTYwLCA3ODcwNywgMTk0NzUzLCAwLCAwLCAxMjg1MjYsIDEzNDgsIDkyMzQ5LCA3ODU5NywgMTI2NTM5LCAKLSAgICAxMzMwMywgMCwgOTIzOTIsIDE5NDc1NSwgNzU5OSwgMTI3OCwgNDM2MTYsIDEzMjY5LCAwLCAwLCA3NDM4NywgNzgxNzksIAotICAgIDc4NTk4LCA3NDQ5MiwgNjA5NywgNzU2OCwgODc4MCwgNDk4MiwgMTI3NDY0LCA3NDUwMSwgMTk0NzYzLCA3ODU5MiwgCi0gICAgMTk0NzYyLCAyNjcyLCAzNzM1LCAxMjc0NzAsIDEzMTM4LCA0MjI2NiwgOTQ4NCwgMTA3MjQsIDQxMjAyLCA3MTM2NCwgMCwgCi0gICAgNDM3NDIsIDAsIDk0ODcsIDExOTk1OSwgMTE5MTE3LCAzODQyLCAxMjg3NjgsIDc4NjY4LCAxMjQ0MiwgNjE5MywgOTc5MSwgCi0gICAgMTI3OTc2LCAwLCA0MjUxNiwgNzIyOCwgNzU1OSwgNzQ4MDMsIDc4NDY4LCA3ODczLCAxMTM5OSwgMTE5MjE5LCAxOTQ2OTEsIAotICAgIDE5NDg1NSwgMTk0NjkwLCAxOTQ4NTcsIDM2MDQsIDEyMDY4MywgMTE5MTg4LCAxMjg4NzcsIDc4NTQwLCA3ODU0MSwgCi0gICAgNDI1MDcsIDE5NjIsIDQzMzA1LCA3ODQ3NiwgNDI1MDUsIDExNjYwLCAwLCAyMDcyLCA5MjMxMiwgNjk5NSwgNzQxNzMsIAotICAgIDU0MzcsIDc0MTc0LCAxMDY2OSwgODcwMiwgNzk2NCwgOTIzNTIsIDAsIDE5OSwgMTk0ODQzLCA0MTA1LCAxOTQ4NDUsIAotICAgIDE5NDY5OSwgMTk0ODQ3LCAxOTQ3MTAsIDExOTg3NSwgMTMxNDgsIDc1NjAsIDc4NDc5LCA5MjI2LCA3ODQ4MCwgMTk1MDcwLCAKLSAgICA2NDcyLCA2NTgxNCwgNzM5NTQsIDAsIDQ3MjQsIDAsIDAsIDkxOTEsIDAsIDY0NDMyLCA5ODM4MTcsIDk4MzI0NywgCi0gICAgMTk1MDI0LCAxMDE5NiwgNzg4NiwgMCwgNjU4NSwgMCwgNjY4MCwgMTk1MDQyLCAwLCAxOTUwNTEsIDY2NzksIDc0NDEyLCAKLSAgICA5MjI1MSwgMTk0ODY2LCA3NDQyMSwgMTEzODIsIDk4MzYzMSwgOTgzNjM3LCAxMjc4OTEsIDEyNzQ4NCwgMTk0ODMzLCAKLSAgICAxOTQ4MzIsIDY2ODEsIDEyNzQ4MiwgMTI2OTMsIDE5NDgzNiwgNDI3MjcsIDc4MTk2LCAxMjgyNTIsIDc4MTk1LCA2NTQ0MiwgCi0gICAgMTE5NjEwLCA2OTczMywgOTk4OSwgNDMyNDgsIDY2MjQ4LCAxOTQ4MTYsIDAsIDExMzIxLCAxMjg4NDUsIDE5NDgyMCwgCi0gICAgMTk0ODE5LCA1Mjk3LCA3MDQyLCAxMzI4NCwgNjExMiwgNzk2OCwgMTk0ODI1LCA3MzkyNywgOTI0NDQsIDE5NDczNiwgCi0gICAgNjU3NDYsIDEyNzQ3NiwgNjk4ODksIDc0Mzg5LCAxMjg2OTYsIDQzNDIsIDQyODM5LCAxOTQ4MzEsIDE2NzcsIDAsIDAsIAotICAgIDEyNjU5MCwgOTE3ODU1LCAxMTA5MSwgMTEwMTEsIDI3MTksIDAsIDAsIDExOTU5NSwgMTAxNjAsIDAsIDAsIDc1ODUsIAotICAgIDY1MTY5LCAyMDUyLCA0MzA4LCA5MjE3NCwgNDMwMDAsIDc1MDUsIDU0MywgNjQ5MTYsIDY0NzM2LCAwLCAwLCA2NDY1NSwgMCwgCi0gICAgMTE4OTIyLCAyMDY0LCAwLCA0MzE1OCwgNzkwMiwgMCwgNjUyNjUsIDE5NDYzOSwgMCwgMTI3MTcwLCAwLCA5ODM2MjUsIDAsIAotICAgIDAsIDEyOTk0LCA5MjcyOCwgMTA4MjgsIDk4Mzk0MywgNjIyOCwgNDMwNywgMzQ4MiwgMTI4NTI3LCAwLCAwLCAwLCA1MDYsIAotICAgIDc0NTczLCA0MTE5NCwgNjU3MzUsIDIwNTUsIDQzMjU1LCA0MTE5NSwgMCwgODE2OSwgOTgzNjgwLCA4ODQxLCAwLCA1MTYsIAotICAgIDkzOTc0LCAyMDYzLCAxMTkwNTEsIDM0LCAxMjg4NTAsIDEyMDE4NiwgMTE1MDQsIDE2MTIsIDc0MzMzLCAxMjAxODIsIAotICAgIDExODI3LCA3NDMwOCwgMTIwMDEsIDEyMDE3OCwgMTAyNDIsIDY0NTY0LCAxMjAxNzksIDY3OTg2LCA2NTg0LCA3NzQ5LCAKLSAgICAxMTAzNywgMCwgMTc1OCwgMTI3MDkyLCAxMDY2NywgMTA1NjAsIDEyMDE5NywgOTI1OTMsIDE5MzUsIDExNTE3LCAxMjAxOTMsIAotICAgIDEyMDE5NiwgMTIwMTk1LCAxOTMxLCAxMjAxODksIDc0ODM5LCAxMjAxOTEsIDEyMTcsIDY0NzAyLCAxMjY0MywgODI1LCAKLSAgICAxMjc4MzgsIDE5NDkwNSwgMTIyOTQsIDkyNDI4LCA3ODgzNCwgOTEzOCwgNzg4MzEsIDc4ODMzLCAxMjYzMSwgNzg4MjksIAotICAgIDExMDgwLCA3NDU1NCwgNjQwMDAsIDU1OTEsIDEyMzksIDAsIDExMzEzLCAwLCAzNDAzLCAwLCAwLCA2NDM2NCwgOTIyNjksIAotICAgIDAsIDc0NTgyLCA4OTk4LCAxMjk4OCwgMCwgOTE1MiwgOTgzODQ5LCAwLCAxMjY0ODQsIDY3NTg5LCA0MTg1MCwgNjQyOTAsIAotICAgIDM0MzMsIDkyMzkzLCAxMjYxNSwgMTU5NCwgNDIxOTIsIDY5MTQsIDY3NjAzLCAwLCAxMTk1NjksIDc0NTY1LCA0MTM1MywgCi0gICAgNjc2MDIsIDY3NjExLCA0MzM3LCAwLCAxMjcyOTYsIDkxOCwgNjUwMzUsIDQxMzUxLCA3NjgxLCAxOTQ5MDAsIDQyNTc3LCAKLSAgICA0MTM5MywgMTI2NjgsIDE5NDkwNCwgMjQ3NywgMTI3Mjg1LCAwLCAxMjczMDEsIDAsIDY3NjA0LCAxOTQ4ODAsIDEyNzIzNSwgCi0gICAgNTczLCAxMjcyODIsIDE5NDg4NCwgMTE0MTcsIDE5NDg4NiwgMTE5ODE0LCAxOTQ4ODgsIDY3NTk5LCAwLCAxOTQ4ODksIAotICAgIDY3NjA3LCAxMTQ4MiwgMCwgMzk4MSwgMzM1NywgMCwgNDIyMjMsIDQyMDcsIDEyODgsIDc4ODQyLCA3ODgzOSwgNjg0MTksIAotICAgIDc4ODM3LCAxMTU4OSwgNDIxOTUsIDE5NDg3MiwgMTk0NTk5LCAxMjcyNjMsIDY0NjAyLCA2NzYxOCwgOTI1MzksIDAsIAotICAgIDQyNzg4LCA2ODQxNiwgNjQ0ODAsIDE5NDg3NSwgODQyMywgMzM0OCwgNDQ4LCA2ODQ3NiwgOTcxNywgMCwgMCwgOTk3LCAwLCAKLSAgICAwLCA5MjU3NywgMCwgMTE0NDAsIDExMzc5LCA0MjAwMCwgMTMxMzksIDQyMjIxLCA2NTAxMywgMTI2OTk5LCAxMjc3NjAsIAotICAgIDczNzk2LCAwLCAxMTkyMjgsIDEyMDM1LCAwLCAyODE4LCAwLCA3NDQxMSwgNzM3OTMsIDAsIDQxNzIsIDAsIDAsIDgzNzMsIAotICAgIDEwODczLCAxMjE5NywgMCwgMCwgOTIyNjUsIDY5NzA2LCAwLCA3ODIxMCwgMCwgMTI4MTEwLCAxOTQ4NjUsIDEyNjk4MiwgCi0gICAgNzQ1NjMsIDY0ODI4LCAxMTQxOSwgMTk0ODY4LCA3NjYsIDEyNTcsIDAsIDExODg0NSwgMTEzODEsIDMyNjUsIDY2NjE3LCAKLSAgICAzMjc0LCAxMjczNjUsIDEyNjUyMywgOTQwNDIsIDk4Mzk1MCwgNzQ1MjIsIDQxOTg5LCAwLCAwLCAxMjg3OTgsIDMyNjMsIDAsIAotICAgIDY1NjcyLCAwLCAzMjcwLCA2NDUzOSwgMTE0ODksIDAsIDAsIDAsIDAsIDk1MDUsIDY1NTE4LCAxOTQ3NzYsIDc1NiwgCi0gICAgMTk0NjA1LCAwLCAwLCAwLCA3MjYxLCAwLCAxODYsIDAsIDExOTE1NiwgNTc3MCwgMTMxNzksIDY1ODMwLCAxMjYxMiwgCi0gICAgMTI5NDksIDY0ODU2LCAxMjgwMCwgOTgzOTAxLCA3NDIwMywgNjQ3MTgsIDExNTA3LCAwLCA5MjQzNCwgMTE4OTI5LCAwLCAKLSAgICAxMTU3OCwgMCwgMTE5Mjk2LCAwLCAwLCAwLCAwLCA3NDU2OCwgOTI1NCwgMCwgMTc5NCwgMTIwMjE3LCA2NDUyMSwgNTYyNCwgCi0gICAgMTIwMjIwLCAxMjAyMjEsIDExOTk1OCwgMTIwMjIzLCAzNjE3LCA2NjYzNiwgNjQ4ODYsIDk0MDYxLCAxMjAyMTIsIAotICAgIDEyMDIxMywgMTIwMjE0LCAxODcyLCA2NjUwOCwgMTIwNDY3LCA0MTA3OSwgMTA3NDgsIDU1MDIsIDExOTMzMCwgNDQ1MiwgMCwgCi0gICAgOTgzNzcxLCA5MjUyNiwgNDUxMSwgMCwgOTgzODc3LCA2NDY3OCwgMTE0MjUsIDAsIDQzMjQ1LCAxMjMxLCAxOTQ3ODMsIAotICAgIDY5OTAzLCAwLCA5MDAzLCA4MTkyLCAwLCA1MzA1LCA5NjUzLCAxMDYxNiwgODY5NCwgOTU0NiwgMCwgMCwgMTIwNDc4LCAKLSAgICAxMjAyMDAsIDY1MjA1LCAxMjAyMDIsIDY0MDYzLCA5ODc4LCA3NDc4MCwgMTE5NjI2LCA3ODIwMiwgNjQwNTgsIDg3OTksIAotICAgIDQyMTMxLCAwLCA2NDA2MiwgMTAyOCwgNjQwNjAsIDY0MDU5LCA4MzcsIDEwNTY3LCAwLCA0MzEwMywgMCwgMTIwNzU0LCAKLSAgICAxMTQyNywgMjkwMiwgNjQwNDMsIDY0MDQyLCA0Mzc0OSwgMTA3NTYsIDY0MDQ3LCA0MjYwNiwgNjQwNDUsIDY0MDQ0LCAKLSAgICA0Mzk3OSwgMTAwNzYsIDY0MDQwLCA0MzA2MCwgMTk0OTQyLCAxMDM0LCAzMzkyLCAxMjc3NzEsIDQzMDkxLCA2NDAzMywgCi0gICAgNjQwMzIsIDQyNzM1LCA2NDAzOCwgNjQwMzcsIDY0MDM2LCA2NDAzNSwgNDI5MSwgMTk0OTI4LCA2NDAxNSwgNjQwMTQsIAotICAgIDY0NjgxLCAxOTQ5MzAsIDAsIDc4MTQ1LCAwLCA0MzA5MCwgMCwgMzQ3NiwgODk3MywgNjQwMTIsIDQyNDczLCA2NDAxMCwgCi0gICAgNjQwMDgsIDY0MDA3LCAyMDAzLCA3NzA2LCA2NDUxNywgNzgxNTMsIDI1MzgsIDY0MDA5LCAyMDQsIDAsIDQ4MDIsIDQxMTEsIAotICAgIDgyMzksIDkwOTgsIDQ4MDUsIDY0MDAxLCA2NDA1NywgNzg4NSwgNzI0NywgNjQwNTQsIDk4MzI2NiwgMCwgNDc2NywgOTM0MywgCi0gICAgNjQwNDksIDY0MDQ4LCAxMjAwMzQsIDExMzMsIDY0MDUzLCA2NDA1MiwgNDM0NTMsIDY0MDUwLCA0MTM0MCwgMTE4OTc1LCAKLSAgICAxOTQ4MzUsIDEwMDA1LCAxMjMyOSwgNDEzMzMsIDAsIDg0ODksIDE5NDIsIDAsIDE5NDgzNCwgNDI1MjAsIDEyODI0OSwgMCwgCi0gICAgMCwgMTA3NjAsIDY0MDIzLCA2NDAyMiwgNjQwMjEsIDY1ODIsIDQzNjcwLCAwLCA2NDAyNSwgOTE2NywgNDIxNTEsIDc4MjQ0LCAKLSAgICA5ODMyMzIsIDIwMjYsIDY0MDE5LCA2NDAxOCwgNjQwMTcsIDY0MDE2LCAxMjc2OCwgMCwgNzU4MiwgNzgyNTIsIDc4MjQ4LCAKLSAgICA3NzkxNCwgNzgyNDYsIDc4MjQ3LCAwLCA3NzkxNSwgNzg3NjYsIDY3ODgsIDEzMDk0LCA3NzkyMCwgNzUzMiwgNDE0MTQsIAotICAgIDc4NTIwLCAzMTc5LCA3ODUxOCwgNjQ3NjksIDc4NTE0LCA3ODUxNywgMTE0NjEsIDc0NDU0LCAxMDc1MSwgOTA1MSwgCi0gICAgMTIwNzIwLCA2NzA4LCAxMDUzNSwgOTgzNjI3LCA2ODIxOCwgNTUyNzQsIDIwMDgsIDY0MDMxLCA2NDAzMCwgMjk0LCAKLSAgICA0MTg3NCwgMCwgMTI2OTkxLCA2NTkyOSwgMCwgMCwgMCwgMCwgNjQwMjgsIDgxNDYsIDY0MDI2LCA0MTc4OCwgMTk0ODQ0LCAKLSAgICAwLCA0MzUxLCA2MzQzLCA0MzI0NywgMTE5ODg4LCAwLCAxMTk4ODYsIDExOTg5MSwgMTE5ODkyLCAxMTk4ODksIDExNDMzLCAKLSAgICAxMTk4OTUsIDExOTg5NiwgMCwgNzgwMSwgNjU1NzgsIDE5NDgzOSwgMTI5MTUsIDQzOTY4LCAzMjk3LCA5Njk5LCAxOTQ5NTUsIAotICAgIDExMzUsIDAsIDAsIDEyODUyNSwgMTk5NSwgNjcyMiwgOTgzOTI1LCAwLCAyNTUyLCA0MTU0NiwgNjAsIDY4Mzk0LCA4NjQ5LCAKLSAgICA0MTU0OSwgNzg0OTYsIDk4MzMyNywgMCwgNjY4MiwgMCwgNzg2NzksIDY0NzEwLCA0MTU0NywgOTgzNjMwLCAyMDEzLCAKLSAgICAxMjgyOTEsIDc4NTMwLCA3ODUzMiwgNzg1MjgsIDc4NTI5LCAxMjgzMiwgNzg0OTMsIDgwODEsIDgzNjIsIDM1MzcsIAotICAgIDExOTkwOCwgOTEzNywgNzE1NSwgODk5OSwgMCwgNzg1MzMsIDM0NjYsIDAsIDAsIDE5OTYsIDAsIDM0NTMsIDYyODIsIDAsIAotICAgIDIwMDIsIDIwMDAsIDEyMDE3NSwgNTM3LCAwLCA0MTc5LCA2NTExOSwgMTk5OCwgMCwgMTg0MiwgMCwgOTI2NzQsIDk2MjgsIAotICAgIDY4NDQ2LCAxMjA4MSwgOTgyNiwgNjQ1MDIsIDE3NjcsIDAsIDAsIDAsIDEyMDIwMSwgOTgzNjQ2LCAwLCAwLCAzMDU5LCAKLSAgICA0NDAyNCwgMTIwMjA0LCAxMTk5NTMsIDkyNjkzLCAwLCAwLCA5MjQ1MiwgNDEwMCwgOTIwLCAxODExLCAxMzU1LCAwLCAwLCAKLSAgICAzNTkyLCAxMDA3OCwgMCwgMCwgMCwgODU5MiwgNjU4NzAsIDY4MTY0LCAxMjg3OTIsIDEwNzQyLCAwLCA0MjkxOCwgMTk5NCwgCi0gICAgOTI4MSwgMzI5NiwgMTI4NjUsIDE5OTcsIDE4OTUsIAorICAgIDUxNTMsIDQxODA1LCAwLCA3MzczNSwgNzYzLCA0MTgwOCwgNjQ5MTAsIDEyMTM4OSwgMjAwOSwgMCwgMTI3OTg1LCA3NDI0NSwgCisgICAgOTY0MCwgMTE5OTUxLCAwLCA2OTg5NSwgODYyMSwgMTIwNTIzLCAxMjg1MiwgMzAzMSwgOTgzMDUwLCA2NDM2MSwgMTI5MDg4LCAKKyAgICAxODIsIDY2NDE0LCA5MjcxNiwgOTI1OTgsIDExOTk1MCwgNDI2MTMsIDkwNTgsIDM2NiwgMCwgOTg5MiwgNTk2OSwgMTE3NTQsIAorICAgIDEwODQ4LCA0NTcwLCA2NTMwMSwgNDQwMTMsIDQyNTUsIDEyNzg4OSwgMTAxMDIsIDQxMTg5LCA0MDAzLCA0MTAyNiwgCisgICAgNjgxMDksIDEzMjkzLCA0MTE5MiwgNjk2MzUsIDEyNDk3NywgNDIyNTEsIDAsIDQyNTM0LCA2NTE3OSwgMTEyODcsIDYxMjgsIAorICAgIDExMzgxMSwgMTEwMzQsIDEwOTIzLCA2NDQyMywgMTI1MDU4LCA2NTUwNiwgOTgzOTEyLCA2NTg2MSwgNzQwODMsIDY2ODcyLCAKKyAgICA5OTMyLCA0MzUxNiwgODMwNjMsIDgzMDY1LCA4MzA2NCwgOTgxNywgMCwgNzEyMzQsIDAsIDEyMTE3LCA2NjU4NiwgNDE4MywgCisgICAgMTA1NDAsIDY2MjUwLCA5MDYzLCAxMjcwNDUsIDEyODU0NywgMTE5OTU0LCAxMTM2ODUsIDEyODk3LCAzNzkyLCAyMDExLCAKKyAgICAxMjE0MTgsIDYwNjUsIDQzMTYwLCAxMjgzNzksIDEyMDU5NSwgODY5MiwgNDExODYsIDQxODE2LCA0MTAyMywgNDE4MTgsIAorICAgIDQxMTg3LCAxMTY1OSwgNzkyMiwgMTI2MTQsIDIwMDUsIDg1MjMsIDc4MDAyLCAxMjAwMzUsIDc1MTMsIDE4NjMsIDQ3MTAsIAorICAgIDAsIDU5NTYsIDc2MjEsIDc4MDA1LCA5MjYyNCwgNDcwNSwgNzE2LCA3NDkxOCwgMCwgNDcwNCwgMTIwMDQwLCA5MzAyNCwgCisgICAgNDIyNDEsIDE2MSwgNDM5NzcsIDc0NTQ2LCA2NjIxNCwgNDcwNiwgNzQwNzcsIDY5OTE0LCA0MjY3MiwgNDcwOSwgMTA2ODAsIAorICAgIDExOTA2NSwgNDMyOTMsIDY4NzcxLCA5ODMxOTAsIDExOTE2NCwgMTIwMzI4LCA4MzMxOSwgMTAxODcsIDE3MDAsIDExOTIyMywgCisgICAgODMzMTUsIDAsIDc0OTgwLCA0MDA0LCA5MTc1OTUsIDEwOTY4LCA0MzI5NiwgMTI4MzMxLCA4NTA2LCAxMTM3NDQsIAorICAgIDE5NDgxMiwgMTI2OTk2LCAxMDA1LCA5MzcsIDc4MjE2LCA0NzM0LCAyODcwLCAxMjEzNTAsIDc4MjE4LCA5ODMxMDksIAorICAgIDc0NjMsIDQ3MjksIDAsIDIzNSwgMTM4NCwgNDcyOCwgNzQ4ODcsIDcwNDk0LCA5MjQ5MCwgNzQ0NDksIDgxMDksIDQzMTA1LCAKKyAgICAxMjg2MjMsIDQ3MzAsIDQ0NywgMTMxODYsIDE1MTMsIDQ3MzMsIDEyMDQxNSwgOTI1NDgsIDAsIDQyNTI3LCAxMjkxMSwgCisgICAgNDM0MjcsIDEzODMsIDg1NjUsIDI0NjksIDEyMDAyNCwgNjY5MCwgNjE1NiwgNjgxMTcsIDQzNDM5LCA3OTkzLCA0Mjg4LCAKKyAgICAxMjA0MTYsIDI2NzQsIDEzMjM4LCAxMTkyMiwgMCwgOTI1MjksIDM1MTAsIDEzMjM0LCA5ODM4MzIsIDEyMDQwNywgNTYwNSwgCisgICAgNDIwOTUsIDExMzY0LCA5MjI4NiwgMTM4MCwgNjU2MTcsIDExMTYyLCAxMjAyNjEsIDEzMTk2LCAxMzE5NywgMTIwMzA5LCAKKyAgICA2NzcwOCwgOTQ5NSwgMTE5MzQ2LCAxMjcxNTQsIDU5NTksIDY3OTg0LCA3Mzk3NiwgNjYyNzUsIDQzMzcxLCA2OTQxLCAKKyAgICAxMTkzNDksIDEzMjA1LCAxMzIxMSwgNTgwMSwgMTI3NjksIDY1OTA1LCA0MTY5NywgMTI4MywgODI5NTIsIDQ3NzksIAorICAgIDk4MzkyMiwgMzcxOSwgNDAwNiwgOTgzNTY5LCAxOTk1NywgNzExODYsIDIwMjEsIDExOTMzMiwgNDM4NzcsIDgzMTQwLCAKKyAgICA0MzAyOCwgNjU0OTMsIDQxODM4LCAzODc1LCA1OTYyLCA2NDM0MSwgOTI2MTYsIDk4MTQsIDQzNDU3LCA1ODI3LCAzMzE0LCAKKyAgICA3Nzg3LCA3MTE4OSwgNjU0OTQsIDY4MTUzLCAxMjY5OTEsIDE5NDY5NywgMTIwNjM2LCA2NDUzMSwgMTIwNjkyLCAxOTQ2MjYsIAorICAgIDEyODc1MywgOTgzOTU4LCA2NjMxNiwgNjU0NjcsIDU3NzEsIDQxMjk4LCA5ODM3OTQsIDk3NDIsIDUyMSwgMCwgMTA4MDAsIAorICAgIDkyMjIyLCA4NDA0LCAxOTQ2MjUsIDQ4MywgNzA5NiwgNzA4OSwgNjYzMjMsIDkyOCwgMCwgMCwgMTE5MDE4LCAxMDU5OSwgCisgICAgMTE1ODYsIDM5ODksIDEwOTcxLCA0Mzc0OCwgNjU3ODIsIDk4NDEsIDg4NDMsIDEyMTQ1LCA2NzI2MSwgMTAwNzQsIDc4NTQ4LCAKKyAgICA5Mzk5OSwgMzc2OSwgMCwgMCwgMTI4NzAzLCA5ODMxMDcsIDk1NzMsIDkxNzk5OCwgNjUyOTAsIDg4NDksIDExOTI1NCwgCisgICAgNjU4NTUsIDY1MTEyLCAxNzk2LCA3MTA0NiwgMCwgNjk2NjUsIDgxNjQsIDQxMzAxLCAzNTAyLCA4MzEzNSwgNzM4OCwgCisgICAgMTA2MjEsIDczODM4LCA3ODU1MywgNTgyNSwgMTMwMDcsIDY4MTY1LCA5MjIwMywgOTI5MTUsIDEyNjYxLCA3NjA4LCAKKyAgICAxMDM1NCwgMTA0MTgsIDQyNDExLCAyMDIyLCAwLCAxNDA5LCAxMjE5NSwgNDAwMSwgMzExMiwgMTA4MjQsIDEyMDYzOSwgCisgICAgMTM5MCwgNzAxODQsIDE5NDcwNCwgNDIxLCA0MzUzNiwgNTg0NiwgMTIwMTIwLCA0MTMwLCAxMjc3NzUsIDc1OTUsIDQyNTg4LCAKKyAgICA3NjAwLCA3NDQwMCwgNjYwMzUsIDE5NTA5MSwgMCwgNjU4NTEsIDQyNjA3LCAxMjQ5NTUsIDkyNDAzLCAzMTY4LCA2NzczMywgCisgICAgNDIxMzQsIDExODMxLCAyMzcwLCAyODQ2LCA5MjYwNSwgMTI4MDg0LCAwLCAxMjAxMzIsIDEyNzc0NSwgMTgzNiwgMCwgCisgICAgMTIxMjA3LCA5MjU1OCwgMzc0MCwgNjk4NDMsIDYyOTAsIDY1Mzc0LCAxMjA0NTEsIDIzOTAsIDM5NDQsIDY2NjI4LCAKKyAgICAxMTkwMDYsIDAsIDYxMzUsIDMxMTgsIDc0MjY1LCAxMTkwOTMsIDgzMzEwLCA3Nzk3NSwgMCwgODEyNywgODk3NSwgNjQ3MzksIAorICAgIDc5NDMsIDEyNDk2OCwgMTE5MjM0LCAxMDYxOCwgMjU4NCwgMCwgMCwgMTI4MjI1LCA5OTk4LCAxMjA1NzMsIDgzMzA2LCAwLCAKKyAgICAxMjc3NTAsIDQzNTA4LCA2MjA0LCAxMjcwNDQsIDEyMTM3NCwgODI3OSwgODc3NiwgNjQ5NTQsIDQ5NzUsIDcwMDc1LCAKKyAgICAxMjAxMzAsIDQyNjcsIDE2MzEsIDQyMjA2LCA3Nzk4MywgMTI4MDE1LCAxOTUwNDYsIDY1NzAwLCA2NjM4NiwgMCwgNjQ2NDUsIAorICAgIDAsIDkyODg3LCAxMjY1ODgsIDEyNTg2LCAwLCA5MjQyLCAxMjAxMDAsIDAsIDQ1MjMsIDU4NDIsIDEwNDk1LCAzMTIyLCAKKyAgICA5ODM3OTcsIDc3OTMsIDc4Mjc1LCA5MzI4LCAxMTkxMDQsIDc4MzkzLCAxMjYwNCwgOTI4ODUsIDY2MTUsIDIyODUsIAorICAgIDkyMzQ0LCAzOTg2LCA0NDAyNSwgMCwgODkxMiwgNjQ1NTUsIDc0MDksIDkyMjQ3LCA5ODMzNjAsIDk1NDEsIDc4Mjc2LCAKKyAgICAxMTM2NjksIDExMjc1LCA4NTQwLCAxMTQ5OCwgMTIwODY4LCA5ODMzNTksIDQxMDQwLCAyNDU5LCAxMjczMDIsIDEzMDYwLCAKKyAgICA0MTA0MSwgNzQ0MTMsIDk4MzEzOCwgMCwgNzc5MzEsIDY4NDI3LCAxMDQ1MCwgMTI1NTEsIDQxMDQzLCA3MDIwLCAxMjAzNTMsIAorICAgIDM3NjUsIDkyODgxLCA5MTc2MTIsIDE2MDYsIDEyMDM0OCwgOTIyOTksIDMwOTMsIDY4NDM2LCAxMjgwNDAsIDk4MzA2MSwgCisgICAgMTE5NjEzLCAwLCAwLCA0MzEyLCA3NDA5MSwgMTIwMzM3LCA3NDk4MywgMTE5MjMsIDQwMjMsIDY4Mzk5LCA1NzYzLCAKKyAgICA5NDAxNSwgNDgyNywgMTA4OTQsIDEyODEwLCA2NDQwNiwgMTE4Nzg1LCA0NDU1LCA3NDMyMSwgNDMzLCAxMTk2MjAsIAorICAgIDY2NjYwLCAyNDk5LCA2NzE2NywgNjcxNjYsIDExODgzNywgMTE5NzMsIDEzMDg5LCA0MjkzLCAxMjAzMjksIDQyMjI0LCAKKyAgICA0Mjc1OCwgMTIxOTYsIDQyODM3LCA0MjIyNiwgMTE5MzE5LCAxMjc5OTIsIDExOTEyNiwgNTgxNywgMTI3ODA2LCA1NTI3NywgCisgICAgMzEyMCwgOTc5NywgMCwgMCwgMTEwODYsIDEwMzg5LCAxMjY0ODUsIDEyODc4NCwgNDg5NSwgNjUzNTgsIDEyNDk0MSwgCisgICAgNDM1OSwgNTg1LCAyMzgzLCAzNTA5LCA3MDAzNywgNDg2LCA0MjkwLCA1NzU4LCAxMjc1NDYsIDEyMTE2MCwgOTgzMTA2LCAKKyAgICA3MDA0LCAxMTM2NjcsIDY1ODgwLCAxMjY1MTQsIDExOTA0OCwgMjM4MCwgMTEzODAsIDk4Mzg2MywgOTM5OTYsIDIzNzYsIAorICAgIDc4ODQxLCA4MzQwMiwgMCwgNTE5NywgNzA4MzksIDEyNzA0NywgMTI3MDQ4LCAyMzY2LCAxMjcwNTAsIDExOTYwNCwgCisgICAgNzA4MzcsIDEyMDA0NSwgMCwgMTI4NTU0LCAwLCA5MTc4NDYsIDAsIDAsIDAsIDc0MTg4LCA3MTM0MiwgNzg0NTUsIDc1MDQ4LCAKKyAgICAxMTM2NzUsIDc0OTAwLCAxMjAwNDYsIDEyNzU0MiwgMTIwMDQ5LCA5ODMzNjYsIDE4NDcsIDEyMDk3OCwgMTAzMzksIAorICAgIDk4MzM2NywgNDIzODQsIDEyMTM3OSwgNDIyNywgNzQxNTgsIDAsIDc0NDk4LCA0MzAzMiwgMTIxMTI0LCA0MjM2NSwgMCwgCisgICAgMTI2NzEsIDExMzg0LCAxMjAwNTksIDc0MjY0LCAxMjAwNTgsIDY0Nzk3LCA5ODMzNDcsIDU4MjAsIDk4MzM0NiwgMTIwMDUyLCAKKyAgICAxMjAwNjUsIDEyODgyNSwgMTIwMDY0LCAxMjAwNTMsIDQyMTM3LCA5ODkzLCAyNzU0LCAxMjY2NCwgMTIwMDYzLCAxMjEyODYsIAorICAgIDczNzcsIDEyMDA1MSwgNDE3OTksIDY1NTMwLCAxNzExLCAxMjk4NCwgNDMwMzksIDMxMTQsIDYyNTUsIDEyMTEzMiwgCisgICAgNjg2NjAsIDAsIDEwODUzLCA5MjYsIDk4MzM3MSwgNzQxODQsIDEyMDkxNSwgMTIwMDU1LCAxMTkzMDEsIDQzMTc1LCAwLCAKKyAgICA0MzAzNywgNDE3OTgsIDQxMDM1LCAxMTU4MywgMTI3NzY5LCA0MTgwMSwgMTE5MDg4LCAxMTk2MDUsIDUyMCwgNDIwMCwgCisgICAgMTI2OTksIDgzMzEsIDcwMTE4LCAzMDkxLCA0MTAzNCwgNjYyOTgsIDcwMjkzLCA4MzYwLCA5ODM0NDUsIDc4MDQ0LCAzMjEsIAorICAgIDQyMjksIDY0NTQzLCAxMjg0NzAsIDY1NTYzLCAxOTQ4NzMsIDkxNzk3NCwgMjg2MSwgNDM3OTMsIDEwMDk1LCAxMjE0MjgsIAorICAgIDkxOTUsIDkyMzg2LCAxODYxLCAwLCA3MzczMywgOTE3NzgwLCA2ODgzOSwgNDMwNDEsIDAsIDQzNzk0LCAxMjg1MzAsIAorICAgIDM4NTksIDEyMTgxLCA0MTY2MCwgODIwOSwgNzA3OTMsIDczODY3LCAxMjk3MywgNzUwMTQsIDc0NzU3LCAxMjc1MTQsIAorICAgIDQxNjU4LCAxMjgzNzYsIDEyMTIzNSwgNTc2MCwgMTEzNjk5LCA3NDMsIDQ0MTQsIDEyMDc2NiwgMCwgNDI2MzIsIDEyNzIzNiwgCisgICAgNjUxNjEsIDczODk2LCAxMjg1ODksIDAsIDE0MDUsIDExOTA2MywgNDMyMjAsIDQzMzQxLCAwLCAxOTkxOSwgNzAyNzgsIAorICAgIDY0NTMyLCA2NTM2NywgNDM3MTAsIDExMTk5LCAxMjUwNzcsIDM1MTMsIDcxMTE1LCA3MDM0MSwgNDMzNDIsIDExOTA2NCwgCisgICAgNjU1MjksIDY1MzY0LCA4MzIwOCwgODMxNzAsIDY0ODUsIDEzOTcsIDE5NDc4MSwgNDE5ODYsIDkyNjc4LCA4MzIwNCwgCisgICAgODMyMTIsIDc0MDk3LCA4MzIxMywgNzQ3MSwgMTIwNzksIDY3OTk3LCA2ODQzLCA0MzI4NywgOTIzMTcsIDAsIDY3NDA2LCAKKyAgICAxMjAyMzksIDE5NDY3OCwgNzE5MTQsIDEwOTksIDEwNDkwLCA4MzIwMSwgMTA1MDEsIDY1MTgxLCA3NDQ2MywgMTI4OTUyLCAKKyAgICA0NjQsIDQxNjI0LCA2NTI4MywgNjc2NjMsIDc4MjIyLCAxMzQ2LCAxOTQ2MDksIDY1Njc5LCA2NDU3MywgNjQ4OTcsIDQyMywgCisgICAgMTgxOCwgNjUxNDQsIDgyOTYzLCA4MjcyLCAxMjc4MTIsIDE5OTExLCA0MjE4LCAzMDg3LCA2NDk2MCwgMTIxNDQ3LCAKKyAgICA0MzU2NCwgMCwgOTgzMTgyLCA5NTg0LCAxMDQ2NSwgOTgzOTAyLCA3NDM1OSwgMTI2MjYsIDkxMDYsIDAsIDQyNjQyLCAKKyAgICA3MTIzNSwgNjQ3NTAsIDkzOTAsIDAsIDQxNzk3LCAxOTQ3MzAsIDEyODMzMywgMjY1LCA0MTc5NSwgNjQ2NjYsIDc0NjI4LCAKKyAgICA0MzUzMCwgMjc1MiwgMTI3MzY1LCAxMjg0NTksIDEyNjQ4MiwgNTksIDk4MzY3MSwgMTIxNDEwLCAxMTE0OSwgNzgwNzQsIAorICAgIDc3ODczLCA0MTgxMCwgODMxNjIsIDcwMTAsIDAsIDQxODA5LCA0MTQ5NSwgMTE5MzY0LCA1ODc3LCA0MjI1MiwgNDIyMTMsIAorICAgIDgwMDksIDMzMDUsIDQzMDMzLCA1MTEsIDkyNzAwLCA0Mzg0OCwgMTMxMjcsIDEyMDA2NywgOTgzOTQ2LCA3NDM5NywgCisgICAgMTIwMjM1LCAxMjg2NDEsIDY1OTE1LCAxNDAwLCA0MTgxMiwgMTA2ODUsIDc1MDE3LCAyMTAzLCAxMDM4NywgNDQ1MywgCisgICAgNDMyNzYsIDkxNzc4MywgMTExNjksIDEyODkzOSwgNjQ4MSwgNDEyMTMsIDAsIDAsIDEyOTEzMywgMTE5OTI5LCA0MTk4MywgCisgICAgNzQxOTgsIDY2MTcsIDkxMTYsIDExOTY1NCwgOTI5OTUsIDQ2MiwgNjgxMTAsIDEwNDkzLCAxMjE0NDksIDgxMjksIDkyOTk0LCAKKyAgICAxMjgzNjUsIDc0NDcxLCA2NjQ0LCAxMTY1OCwgMCwgMTI4MjQ1LCAzNDUyLCAxMTkwNiwgOTU4MSwgMTM4NSwgMzA5OCwgMCwgCisgICAgMTE5MDEzLCA0MzM0MCwgMTExMjMsIDQxMDMzLCA2NDkzLCA0MjYyNiwgMCwgMTI5MDUxLCAxMTQyNiwgNzc4ODcsIDE2ODEsIAorICAgIDExODc4OSwgMTIwNCwgMzc1NSwgNjQ2NjEsIDcyMzUsIDEwMTcwLCAzOTY2LCA4OTExLCAwLCA0MTg0MSwgNDMzMzgsIDAsIAorICAgIDExOTMyMywgNTcyNiwgNjQ5MTUsIDQyMTc1LCA5ODM5MTMsIDAsIDQxNDk3LCA2NTA0NCwgMTIwMTA5LCAyODUxLCA0MzAxNywgCisgICAgOTgzNTg5LCAxMjA4OTYsIDQzNzMsIDc4MDU4LCAwLCA5NTg3LCAxNzg5LCA2NjcxLCAxMjg4NDAsIDMxMDAsIDAsIDY1MzYwLCAKKyAgICA5MTc1ODksIDkyMzY1LCAxMjgyMDIsIDY0OTIyLCAwLCA4MTkwLCAxMjA4MywgMCwgODMxNDEsIDY1MDYsIDY0MzEyLCAKKyAgICA3NDM3NCwgMjM2OCwgOTgzMTg3LCA0NDE5LCAxMjEyNTksIDExOTEyNSwgMzQzOSwgMTgyNSwgMTE5MiwgMTIwMTA2LCAKKyAgICA4ODkxLCAzMDgwLCAxMjAyMjgsIDIzNDcsIDU0MzAsIDEyMDEwNywgODk5MCwgMjg0OCwgOTI5ODEsIDEyMTM3MiwgNzM5NDIsIAorICAgIDI0OSwgMCwgMCwgMCwgMTIwNjU4LCAxMTkzMjQsIDEyODcxMiwgODg4MywgMTE5ODYwLCA3MjgsIDExMTczLCA5OTUsIDAsIAorICAgIDEyMTA0NywgNjQ4MjYsIDEyNDkzMSwgOTE3Nzk4LCAxMjgzNDgsIDAsIDE5OTQ1LCA4MDkxLCA1NTgsIDAsIDEyMjczLCAKKyAgICAxOTQ4MTQsIDY3NzE0LCAxMjExMiwgNjcyNzIsIDY3MjY1LCA2NzI3MywgNjcyNzQsIDEyMzM1LCAxMjAxMDQsIDY4MDE5LCAKKyAgICAzNDQzLCAzMTI5LCA2NzI2NywgMjEwMiwgNjU0NDUsIDc4MjU4LCA2NDg5MSwgMCwgNzcyNSwgNjUxMDgsIDExMTIwLCAKKyAgICA5MjA1LCA4NjI0LCA2OTI0NiwgMTI0NDYsIDQzMjk1LCAxMjg1MTksIDQxODk0LCAwLCA2Mjc3LCA0MTY3MiwgNDE4OTMsIAorICAgIDEwMDEwLCAxMjczODEsIDM1NDAsIDEyMTQ1MCwgODM1LCA3MTM0MCwgNjk4MTYsIDExOTg1NCwgNzQ0MDgsIDAsIDY3MTA4LCAKKyAgICA1NDI2LCA0MjU4LCA4MzE4OCwgMTIwODU4LCA1NDI0LCA5MjMwNiwgODI4MywgMTI3OTc4LCA1NDM0LCA4MzE5NiwgCisgICAgMTI5MDI3LCAxOTkxNywgMTE0MDgsIDAsIDExOTQ3LCAxMjgzMzAsIDE0MDQsIDMwOTUsIDExNDMyLCAxMjExMjIsIDM0NjQsIAorICAgIDY0ODYsIDQ4MTksIDEyODIzMywgMTI5MTIzLCA1NzAsIDgwOTUsIDM2NzIsIDExOTg2NCwgMTQ5OCwgNjc4NjYsIDAsIAorICAgIDEyODUzOSwgNDMxLCA2NzgyMCwgMCwgMTI4MTgyLCAxMjgwOTYsIDY4MTY3LCA5ODM2NjMsIDEzMDk2LCAxMjg2NDMsIAorICAgIDEyMTAxOCwgNDM0MDgsIDk1MTYsIDEyODUzOCwgNTI2OCwgNDIyMzAsIDQyMjIwLCAwLCA0NDUwLCAxMjA1MTEsIDExNTQ3LCAKKyAgICA0MzQxNywgMTI4NTQyLCAzNTYsIDM0NzcsIDIyNywgMTA0ODgsIDY4MjAzLCAzODIsIDExNDE4LCAwLCA1ODc4LCA5ODM3OTksIAorICAgIDAsIDAsIDAsIDY0ODQsIDI1NDEsIDY2MDM5LCAxMTM3NzcsIDc4MTU3LCA5MjcyMywgMzU0OSwgMTk1MDY3LCA5MTEwLCAKKyAgICAxMTk2NjUsIDI3NDMsIDAsIDQzMjkwLCAxMjg1ODUsIDkwOTcsIDE5NTAyNiwgNDMwMTUsIDg3ODIsIDAsIDc3NiwgMjUyNCwgCisgICAgNDI3MDcsIDg1NzMsIDEyMDkwMywgMTI2NDk0LCAwLCA3MTEwMiwgNDI2OTQsIDY0OTQ0LCA4OTUyLCAzODU2LCAxMTg4MTgsIAorICAgIDEyNTExMSwgNTg3MiwgNjQ5NSwgMTI5MTI1LCAwLCAwLCA5MjU0MywgNjcxNzMsIDY3MTcyLCAxMjg0OSwgMzk1MywgMTg5NywgCisgICAgOTMwNzEsIDY1MDk0LCAxMTk5NCwgNDMzOSwgNzQ1NTYsIDkyNjU0LCA2Nzg0MywgMCwgMCwgMTE5MDg3LCA2ODQ3MywgCisgICAgNzQxMDQsIDUyMjgsIDExOTgzNSwgNzg2OCwgNDMxODQsIDAsIDEyMDk1NSwgNzM5ODYsIDQzNDM4LCAwLCA0MzAyMiwgCisgICAgOTE3NTUzLCAxMTYyLCA3NDk5NSwgMjY3MSwgMTI4NTY3LCAxMjcxOTgsIDkyNjMyLCA5MjYzMSwgMTE4ODY1LCA0NTUzLCAKKyAgICA3MzgxMSwgOTgzNTczLCAxOTUwMDUsIDExODkyOCwgNjgwODUsIDE5OTIxLCA3MzgyMSwgMTE0MjQsIDE5NTAwMiwgNDU2NywgCisgICAgNDE4OTEsIDAsIDk4Mzc4OCwgNTUyNDksIDQ4MjAsIDY1MjM5LCAxOTQ2NjIsIDAsIDE5NDY2NSwgNDMwNDIsIDExOTIxMiwgCisgICAgMTM3NywgMTI4NjksIDQ4OTcsIDQyODIxLCA5MjUwLCA3MDI3MiwgNDQzOCwgNjQzODUsIDAsIDE3NTMsIDExMzMxLCA2MTQ3LCAKKyAgICAxOTQ5NDEsIDQzMjgyLCA4ODMzLCA2OTk5OCwgMCwgNjUwNCwgNzg0MDgsIDEyMTE2NiwgMTA3MTksIDcwMjc1LCAxODk4LCAKKyAgICAxNDEzLCA0MjQ0MywgMCwgODAyLCAxMjE0MSwgMTIxMTM4LCA4MzA5NywgNjY0OCwgMTA2NzEsIDI1MjgsIDAsIDY0Nzg5LCAKKyAgICA5MTY5LCA4MzgsIDY4ODE5LCA2ODgwNywgODQ0LCA1MDE0LCA2NjI5NywgMjU2LCA2ODgxOCwgOTk5MCwgMTI4Mzk4LCAKKyAgICA0MjczOSwgOTE3ODUxLCA3NTQyLCA2NTQ2NCwgOTcyNiwgODMyMjQsIDY0ODksIDEwMDQ4LCA3NDMyNiwgNzg3MTksIAorICAgIDY2NTczLCAwLCA3ODcyNCwgNzg3MTIsIDExNzYxLCAxMjEzMTQsIDgzMjI2LCA0MTA5NCwgMCwgNzc5NTgsIDE5NDg5MywgCisgICAgNzg0MDMsIDkyNjg5LCA2MTk2LCA2OTQ1LCA5Mzk2OSwgMTIwOTQyLCA2NzA5NSwgMTIwNDkxLCAxMTgxNiwgNjg4NDYsIAorICAgIDU3MzMsIDI5MzAsIDcwMjc0LCAxMjcxNzksIDQxMDk4LCA5Mjc3MSwgNDEwOTMsIDY4ODM0LCA2NjYyNiwgNTg4LCA5NzYwLCAKKyAgICAxMjUwOTksIDE5NDcxNywgMTIzOCwgMjAwLCA5ODMyMDcsIDE2NjAsIDczOTE2LCAwLCA2NzE0MSwgNzQzNjIsIDAsIAorICAgIDkyNDg1LCAxMjQ5MzAsIDAsIDc0OTk5LCAzMzk0LCAxOTQ4OTQsIDEyMDY2OCwgMCwgNjk5OTYsIDEyNzM1OCwgNjYyMTksIAorICAgIDcyNDI1LCA0MzI4NCwgNjgwNzIsIDc4MTcsIDE4NDEsIDExMDU1LCA2NjgzNSwgMTk0OTc5LCA3NDYwNywgMTY2OSwgCisgICAgMTA3NzYsIDc0NTM0LCA3NzAxLCAxOTQ5ODAsIDk4MzQ1MCwgNzQ5OTIsIDE3MzIsIDQwMzAsIDk4MzQ0MiwgMzk2MywgCisgICAgNjUzMzUsIDEyNzUzMCwgNDE3NjgsIDY0OTEsIDY1MzMzLCA2NTMyNCwgOTE0LCA2NTMyMywgODA3MSwgMzUzOCwgOTgzODQ1LCAKKyAgICAyMjg3LCA2NTMyOCwgOTI0NDEsIDc0MzY3LCA3NjE0LCAwLCAxMTgxOSwgNzE5MDgsIDEyMDA5LCAxMjM5OSwgMTIxMjE3LCAKKyAgICA2Nzg1MiwgNjU1MzcsIDAsIDEwODQxLCA0MzQzMCwgNTMwMSwgMCwgOTI2MTgsIDU3MzQsIDg5NjAsIDAsIDcwMTIzLCAKKyAgICA2NTMxNywgNzc4ODAsIDAsIDU4NzYsIDcwMzc0LCAxMjMwNCwgMCwgMCwgNjUzMTUsIDkyNjcwLCAxMjg1MTEsIDcxODYyLCAKKyAgICAwLCAxMjc5NTcsIDExOTYyMSwgMTExMTQsIDcxOTA5LCAxMjQ0NywgNjQ0ODYsIDEyMTIzNiwgMTI2NTYyLCA5ODMxMjksIDAsIAorICAgIDEyMTM5MywgOTgzODAyLCA0Mjc2NywgMTA5MTUsIDk4MzE3NCwgMTIwMDcsIDQzNjk1LCA2ODAzMywgMTE5NzUsIDE5NDg3OCwgCisgICAgMCwgOTI2MDQsIDI1NTUsIDg2MjksIDEyODY0MCwgNDExMzMsIDQxODcyLCA0MzcwNiwgNDQ5NiwgMTk0ODc5LCA4MzEwOCwgCisgICAgMTIwMjQxLCAxMjgxNjQsIDAsIDAsIDk4MzU1MywgNjQ3MzAsIDcwMDQxLCA2NjcxNCwgNjgyMjIsIDAsIDcwMDc2LCAKKyAgICA2NTU5NiwgNjc4MzcsIDExNDE2LCA0MjgwLCA2NzY1NSwgODc2NSwgMTI3ODQsIDc3OTIsIDEzOTMsIDc4MTkxLCAxMTE1NywgCisgICAgNzQzODYsIDEyNzI3NCwgODIzMywgMTI4MjAsIDk4MzczMCwgNjY4MywgMTI1MTEyLCAzNDQyLCAxMjE0NCwgMjg0MSwgCisgICAgMTI1NDMsIDAsIDE0NzMsIDQyODIwLCA2NDMyOSwgMTIwODgwLCA2NzI0MywgNjg2NDIsIDY0ODgsIDM1NywgMTA0OCwgCisgICAgNDExMDAsIDcyNDE3LCA0MTEwNCwgOTQwMDMsIDM0MDYsIDEwNTQsIDcxMzIwLCAxMDQwLCA2NTQ1MCwgOTgzMzg1LCA0NDM0LCAKKyAgICAxMDY5LCAxOTQ3ODQsIDExODg2MiwgNjU3MzcsIDEyMTIwMiwgMTI4NzA1LCAwLCA4MzIxMSwgOTY5MywgNDE5NDMsIAorICAgIDY4MzA1LCA0MTkzMSwgNDE3NTksIDEyNzU3LCA0MzUzLCA5ODMzNTMsIDEwNTksIDk3OTAsIDg5OTUsIDExOTk3NCwgCisgICAgOTE3NzcwLCA2NTkzNywgNzg1NzIsIDQxNzU4LCAxMDY0NiwgMTIxMTU5LCAxMTg4MzMsIDkyMzcyLCA3MDQyNCwgNzQ4MzAsIAorICAgIDc4NTY5LCAxMjc0MywgOTgzNjg5LCA2NDgwLCA5MTc3NjEsIDQxNzc5LCA0MjU4MCwgNjY2MDEsIDEyMjA3LCA3Nzg5NSwgCisgICAgNjMzNSwgNDM5MTksIDExMzEyLCA2NDgwNywgOTI5NjIsIDY5OTg5LCA0MTc2NywgMTE5NjI5LCA5ODM3NjQsIDQzMDIwLCAKKyAgICA3NDk3NCwgMzk1NSwgNzQyNTQsIDEyMDYzMiwgOTgzNzU0LCA5MTc4NjEsIDcwMTg3LCA2OTk3NSwgOTc3MCwgOTI0NiwgCisgICAgMTIyMzAsIDEyNTA0NywgMTI5MTA1LCA3ODU4MCwgMTA0NDgsIDQxNzgzLCA0MTc4NiwgMTI3MDkzLCAxMjc5NywgMjc1NSwgCisgICAgNjQ1NzEsIDc4NTc4LCAxOTQ5MjcsIDQ4NTcsIDk4MzU3NywgNDQyOCwgMTI3OTQsIDczNzU1LCAxMjgwNjEsIDc4NTc0LCAwLCAKKyAgICAxMTExNiwgNDM4NDIsIDU3NDcsIDc4ODI1LCA3MDQ3MSwgNzk3OCwgNDEwOTIsIDc0NTcxLCAwLCAxMTkyNCwgNDM4MTIsIAorICAgIDQyMTQ0LCA2NTAxNSwgMCwgNTYzLCAwLCAxMjk0MTIsIDEyNzk4LCAxMTI3MSwgNTcsIDkyNzE3LCA4MzQ5NSwgOTE3ODYwLCAKKyAgICAxMTkwNDMsIDkxNzYxOCwgOTQwNTEsIDQzMTM3LCA2OTQsIDk4MzcxOSwgOTg3NiwgMCwgMTE5MTY4LCAwLCA3MDM5MiwgCisgICAgNjQ1MzcsIDEyNzkxNCwgMjc3LCA3NDM4NSwgNzIyOSwgMTI3NjEsIDk4MzE0NSwgNzQ0NjYsIDEzMDI1LCA2NDgxMSwgCisgICAgODc1NywgNzg4MjQsIDc4MTg4LCAxNTc0LCA3MzgxLCAwLCAyNTI1LCA0ODUyLCA1NzQ5LCA2ODQ2NSwgMTMwMjcsIDQyODI0LCAKKyAgICAxMjA1NzQsIDEwMzksIDcxNTEsIDEwMTU1LCA1NzQ1LCAxODgsIDQxODU4LCAxMTU5MiwgMTI5MTU2LCA2OTcyNSwgOTA1NSwgCisgICAgNDE4NTMsIDQ4NTgsIDc1MDAwLCA5MTc5OTAsIDQzNiwgNDc3MSwgOTE3OTM2LCAyNzg2LCA5MzAyOCwgNDg1NiwgODA1MSwgCisgICAgOTI1MDAsIDExOTYwOSwgNzEzMjcsIDk2NDQsIDcxMTMzLCAxMjUwMDksIDEyODg3MywgMTk0OTE2LCAxMjA3MzIsIDY2NzEwLCAKKyAgICA2ODA4NCwgOTgzMzYxLCA3MzkwNiwgNjc0MDksIDEyNzExNCwgOTE3OTE2LCAxMDIzNCwgNTg0MywgMTE5MzksIDcwMzQ2LCAKKyAgICA0MjE1NywgMCwgMzE1NywgMTk0NjU5LCA2ODM5MywgNzUwMzUsIDM1MDQsIDcwNDIyLCAwLCAxMDgyMiwgNTE0OSwgNjYwMjksIAorICAgIDEwMjI2LCA2NTE0MiwgMTI4MDI1LCAzNTk0LCA0MjQyNCwgMTI0OTkzLCA0MCwgMTI2NTcsIDk4MzY2NSwgMCwgMzg2LCAKKyAgICAxMjE0NjcsIDg4MzQsIDEyMDk3NCwgMTI4MTUsIDQzNTc0LCAxMjE0MzAsIDczOTA3LCAxMjc3OTIsIDcwMTEzLCA3MjIwLCAKKyAgICAxMTgzOSwgMTIxMTQzLCA3NDMxNiwgMTk0NzUyLCA2NTMyMiwgNDMwNCwgNzQ1MDMsIDgxNjAsIDc0MzE0LCAxOTQ3NTMsIAorICAgIDEyMTI3NiwgMCwgMTI4NTI2LCAxMzQ4LCA5MjM0OSwgNzg1OTcsIDEyMTEzOSwgMTMzMDMsIDcwNDA2LCA5MjM5MiwgCisgICAgMTI4NDc0LCA3NTk5LCAxMjc4LCA0MzYxNiwgMTMyNjksIDEyNzgwNSwgMTI3MTEwLCA3NDM4NywgNzgxNzksIDc4NTk4LCAKKyAgICA3NDQ5MiwgNjA5NywgNzU2OCwgODc4MCwgNDk4MiwgMTI3NDY0LCA3NDUwMSwgMTk0NzYzLCA3ODU5MiwgNjg3NDUsIDI2NzIsIAorICAgIDM3MzUsIDEyNzQ3MCwgMTMxMzgsIDQyMjY2LCA5NDg0LCAxMDcyNCwgNDEyMDIsIDcxMzY0LCAxMjgzNzAsIDQzNzQyLCAKKyAgICAxMjgzNzMsIDk0ODcsIDExOTk1OSwgNjg3ODUsIDM4NDIsIDcxOTExLCA3ODY2OCwgMTI0NDIsIDYxOTMsIDk3OTEsIAorICAgIDExOTM0NCwgMCwgNDI1MTYsIDcyMjgsIDc1NTksIDc0ODAzLCA2NjcyMSwgNzg3MywgMTEzOTksIDExOTIxOSwgMTk0NjkxLCAKKyAgICA3MDAwNiwgMTk0NjkwLCAxMjc1MzcsIDM2MDQsIDEyMDY4MywgMTE5MTg4LCAxMjg4NzcsIDc4NTQwLCA3ODU0MSwgNDI1MDcsIAorICAgIDE5NjIsIDQzMzA1LCA3ODQ3NiwgNDI1MDUsIDExNjYwLCAxMjEwMjEsIDIwNzIsIDkyMzEyLCA2OTk1LCA3NDE3MywgNTQzNywgCisgICAgNzQxNzQsIDEwNjY5LCA4NzAyLCA3OTY0LCA5MjM1MiwgOTgzNzc2LCAxOTksIDY4MDc1LCA0MTA1LCAxOTQ4NDUsIAorICAgIDEyNzk0MiwgNzUwMDYsIDE5NDcxMCwgNjc4MTgsIDEzMTQ4LCA3NTYwLCA3ODQ3OSwgOTIyNiwgNzg0NzgsIDE5NTA3MCwgCisgICAgNjQ3MiwgNjU4MTQsIDcxOTE5LCAxMjEyMTgsIDQ3MjQsIDEyODQ5MSwgMTk1MDQxLCA5MTkxLCAxOTQ2NDUsIDY0NDMyLCAKKyAgICAxMjAyNzAsIDgyOTg3LCAxMTkxOTAsIDEwMTk2LCA3ODg2LCAwLCA2NTg1LCAwLCA2NjgwLCAxOTUwNDIsIDk4MzQyNSwgCisgICAgNzE4NzIsIDY2NzksIDc0NDEyLCA5MjI1MSwgMTk0ODY2LCA3NDQyMSwgMTEzODIsIDEyODI1NCwgNDM4NjIsIDc4NTkxLCAKKyAgICAxMTM3MzMsIDE5NDY3OSwgMTk0ODMyLCA2NjgxLCAxMjc0ODIsIDEyNjkzLCAxOTQ4MzYsIDQyNzI3LCA3ODE5NiwgCisgICAgMTI4MjUyLCA0Mzg3NCwgNjU0NDIsIDY4MDQ3LCA2OTczMywgOTk4OSwgNDMyNDgsIDY2MjQ4LCAxOTQ4MTYsIDAsIDExMzIxLCAKKyAgICAxMjg4NDUsIDEyMDgwOSwgMTk0ODE5LCA1Mjk3LCA3MDQyLCAxMzI4NCwgNjExMiwgNzk2OCwgOTMwMTAsIDczOTI3LCAKKyAgICA5MjQ0NCwgMTI3MzM2LCA2NTc0NiwgMTE4Nzk2LCA2OTg4OSwgNzQzODksIDEyODY5NiwgNDM0MiwgNDI4MzksIDEyMTMzOSwgCisgICAgMTY3NywgOTE3NTkyLCA4Mjk4OSwgMTI2NTkwLCA4MzQxNSwgMTEwOTEsIDExMDExLCAyNzE5LCAwLCAwLCAxMTk1OTUsIAorICAgIDEwMTYwLCAwLCAxMjkxNTAsIDc1ODUsIDY1MTY5LCAyMDUyLCA0MzA4LCA4MzQxNCwgNDMwMDAsIDc1MDUsIDU0MywgCisgICAgNjQ5MTYsIDY0NzM2LCAxMTg4MzUsIDAsIDY0NjU1LCA5ODMwNTMsIDExODkyMiwgMjA2NCwgMCwgNDMxNTgsIDc5MDIsIAorICAgIDk4MzIzMSwgNjUyNjUsIDE5NDYzOSwgMTIxMDgwLCAxMjcxNzAsIDEyNzA0MSwgMTI4MDA2LCA5MjU1MCwgOTgzMTg2LCAKKyAgICAxMjk5NCwgOTI3MjgsIDEwODI4LCA3NDM3OCwgNjIyOCwgNDMwNywgMzQ4MiwgMTI4NTI3LCA4MzIzMSwgNzIzODksIAorICAgIDgzMDc5LCA1MDYsIDc0NTczLCA0MTE5NCwgNjU3MzUsIDIwNTUsIDQzMjU1LCA0MTE5NSwgMCwgODE2OSwgMTIxNDA3LCAKKyAgICA4ODQxLCA5ODM3NDcsIDUxNiwgOTM5NzQsIDIwNjMsIDExOTA1MSwgMzQsIDEyODg1MCwgMTIwMTg2LCAxMTUwNCwgMTYxMiwgCisgICAgNzQzMzMsIDEyMDE4MiwgMTE4MjcsIDY3MTY1LCAxMjAwMSwgMTIwMTc4LCAxMDI0MiwgNjQ1NjQsIDEyMDE3OSwgNjc5ODYsIAorICAgIDY1ODQsIDc3NDksIDExMDM3LCAxMjg3NDMsIDE3NTgsIDExOTA3NCwgMTA2NjcsIDEwNTYwLCAxMjAxOTcsIDkyNTkzLCAKKyAgICAxOTM1LCAxMTUxNywgMTIwMTkzLCAxMjAxOTYsIDgzMDgyLCAxOTMxLCAxMjAxODksIDc0ODM5LCAxMjAxOTEsIDEyMTcsIAorICAgIDY0NzAyLCAxMjY0MywgODI1LCAxMjc4MzgsIDE5NDkwNSwgMTIyOTQsIDkyNDI4LCA3ODgzNCwgOTEzOCwgNzg4MzEsIAorICAgIDc4ODMzLCAxMjYzMSwgNzE4NzEsIDExMDgwLCA3NDU1NCwgNjQwMDAsIDU1OTEsIDEyMzksIDEyNzE5OSwgMTEzMTMsIAorICAgIDE5NDgwMywgMzQwMywgOTgzNjU1LCAxMjAyNzEsIDY0MzY0LCA5MjI2OSwgMTIxMjgyLCA3MjQzMSwgODk5OCwgMTI5ODgsIAorICAgIDExOTk4MywgOTE1MiwgOTIxNjEsIDAsIDEyNjQ4NCwgNjc1ODksIDQxODUwLCA2NDI5MCwgMzQzMywgOTIzOTMsIDEyNjE1LCAKKyAgICAxNTk0LCA0MjE5MiwgNjkxNCwgNjYzOTIsIDAsIDExOTU2OSwgNzQ1NjUsIDQxMzUzLCA2NzYwMiwgNjc2MTEsIDQzMzcsIDAsIAorICAgIDEyNzI5NiwgOTE4LCA2NTAzNSwgNDEzNTEsIDc2ODEsIDE5NDkwMCwgNDI1NzcsIDQxMzkzLCAxMjY2OCwgNzIzOTUsIAorICAgIDI0NzcsIDEyNzI4NSwgMTIxMjQ5LCAxMTg4ODAsIDAsIDY3NjA0LCA2NzY4MywgMTI3MjM1LCA1NzMsIDEyNzI4MiwgCisgICAgMTIwNTQzLCAxMTQxNywgOTI2NjEsIDExOTgxNCwgMTE5MzA5LCA2NzU5OSwgMCwgNzI0MTAsIDY3NjA3LCAxMTQ4MiwgMCwgCisgICAgMzk4MSwgMzM1NywgMCwgNDIyMjMsIDQyMDcsIDEyODgsIDc4NTAzLCA3ODgzOSwgNjc3MjgsIDc3OTA3LCAxMTU4OSwgCisgICAgNDIxOTUsIDc0NDc3LCAxMTk5OTcsIDEyNzE3OCwgNjQ2MDIsIDY3NjE4LCA5MjUzOSwgMTIxMzY2LCA0Mjc4OCwgNjg0MTYsIAorICAgIDY0NDgwLCAxOTQ4NzUsIDg0MjMsIDMzNDgsIDQ0OCwgNjY5MDcsIDk3MTcsIDExOTMxMSwgMCwgOTk3LCAwLCAwLCA5MjU3NywgCisgICAgMCwgMTE0NDAsIDExMzc5LCA0MjAwMCwgMTMxMzksIDQyMjIxLCA2NTAxMywgMTI2OTk5LCAxMjc3NjAsIDcyMzkwLCAwLCAKKyAgICAxMTkyMjgsIDEyMDM1LCAwLCAyODE4LCAwLCA3NDQxMSwgNzM3OTMsIDk4MzI3OCwgNDE3MiwgNzEyNTIsIDExOTk5MiwgCisgICAgODM3MywgMTA4NzMsIDEyMTk3LCAxMjUwNzQsIDE5NTAxNCwgOTIyNjUsIDY5NzA2LCAxMjg1NDAsIDY4MzQsIDc0MzQ3LCAKKyAgICA3NDk1OCwgMTI5MDMzLCAxMjY5ODIsIDc0NTYzLCA2NDgyOCwgMTE0MTksIDE5NDg2OCwgNzY2LCAxMjU3LCAxOTQ1OTgsIAorICAgIDExODg0NSwgMTEzODEsIDMyNjUsIDY2NjE3LCAzMjc0LCAxMjY2MjksIDgzMjU0LCA3MTg2MSwgOTgzOTUwLCA3NDUyMiwgCisgICAgNDE5ODksIDEyMTMxNywgMCwgMTEzNzY5LCAzMjYzLCA5MTc5MjIsIDY1NjcyLCA2OTI0MywgMzI3MCwgNjQ1MzksIDExNDg5LCAKKyAgICA5MTc5MTEsIDAsIDAsIDcxMTI3LCA5NTA1LCA2NTUxOCwgMTI4NDk4LCA3NTYsIDE5NDYwNSwgMCwgMCwgMTk0NjIxLCAKKyAgICA3MjYxLCA5MjU0NywgMTg2LCAwLCAxMTkxNTYsIDU3NzAsIDEzMTc5LCA2NTgzMCwgMTI2MTIsIDEyOTQ5LCA2NDg1NiwgCisgICAgMTI4MDAsIDk4MzkwMSwgNzQyMDMsIDY0NzE4LCAxMTUwNywgNzg2NzMsIDkyNDM0LCA3NDYyNiwgMTEzNzYwLCAxMTU3OCwgCisgICAgOTgzODM3LCAxMTkyOTYsIDEyMDk3MCwgMTIxMTI3LCAxMjUxMDEsIDAsIDcwMDgzLCA5MjU0LCA2Njg3NywgMTc5NCwgCisgICAgNjgzMTAsIDY0NTIxLCA1NjI0LCAxMjAyMjAsIDEyMDIyMSwgMTE5OTU4LCAxMjAyMjMsIDM2MTcsIDY2NjM2LCA2NDg4NiwgCisgICAgOTQwNjEsIDY4NjU5LCAxMjAyMTMsIDEyMDIxNCwgMTg3MiwgNjY1MDgsIDEyMDQ2NywgNDEwNzksIDEwNzQ4LCA1NTAyLCAKKyAgICAxMTkzMzAsIDQ0NTIsIDEyODA4OCwgOTgzNzcxLCA5MjUyNiwgNDUxMSwgMTIwOTU4LCA5ODM4NzcsIDY0Njc4LCAxMTQyNSwgCisgICAgMCwgNDMyNDUsIDEyMzEsIDY4ODYxLCA2OTkwMywgMCwgOTAwMywgODE5MiwgMCwgNTMwNSwgOTY1MywgMTA2MTYsIDg2OTQsIAorICAgIDk1NDYsIDAsIDEyODMzMiwgNzA0MjEsIDEyMDIwMCwgNjUyMDUsIDEyMDIwMiwgNjQwNjMsIDk4NzgsIDc0NzgwLCAKKyAgICAxMTk2MjYsIDc4MjAyLCA2NDA1OCwgODc5OSwgNDIxMzEsIDEyODY2MiwgNjQwNjIsIDEwMjgsIDY0MDYwLCA2NDA1OSwgCisgICAgODM3LCAxMDU2NywgNzIzODQsIDQzMTAzLCAwLCAxMjA3NTQsIDExNDI3LCAyOTAyLCA2NDA0MywgNjQwNDIsIDQzNzQ5LCAKKyAgICAxMDc1NiwgNjQwNDcsIDQyNjA2LCA2NDA0NSwgNjQwNDQsIDQzOTc5LCAxMDA3NiwgNjQwNDAsIDQzMDYwLCAxOTQ5NDIsIAorICAgIDEwMzQsIDMzOTIsIDgzMzM2LCA0MzA5MSwgNjQwMzMsIDY0MDMyLCA0MjczNSwgNDM0OTgsIDY0MDM3LCA2NDAzNiwgCisgICAgNjQwMzUsIDQyOTEsIDEyOTE1NywgNjQwMTUsIDY0MDE0LCA2NDY4MSwgODMzOTQsIDgzMzk1LCA3ODE0NSwgNzE4OTgsIAorICAgIDQzMDkwLCA4MzM5MSwgMzQ3NiwgODk3MywgNjQwMTIsIDQyNDczLCA2NDAxMCwgNjQwMDgsIDY0MDA3LCAyMDAzLCA3NzA2LCAKKyAgICA2NDUxNywgNzgxNTMsIDI1MzgsIDY0MDA5LCAyMDQsIDAsIDQ4MDIsIDQxMTEsIDgyMzksIDkwOTgsIDQ4MDUsIDY0MDAxLCAKKyAgICA2NDA1NywgNzg4NSwgNzI0NywgNjQwNTQsIDk4MzI2OCwgMCwgNDc2NywgOTM0MywgNjQwNDksIDY0MDQ4LCAxMjAwMzQsIAorICAgIDExMzMsIDY0MDUzLCA2NDA1MiwgNDM0NTMsIDY0MDUwLCA0MTM0MCwgMTE4OTc1LCA4MzI2MSwgMTAwMDUsIDEyMzI5LCAKKyAgICA0MTMzMywgODMyNTksIDg0ODksIDE5NDIsIDkxNzkyMSwgMTk0ODM0LCA0MjUyMCwgNjU1MTAsIDEyNTA0NCwgNjgyOTEsIAorICAgIDEwNzYwLCA2NDAyMywgNjQwMjIsIDY0MDIxLCA2NTgyLCA0MzY3MCwgMTI3Nzk4LCA2NDAyNSwgOTE2NywgNDIxNTEsIAorICAgIDc4MjQ0LCA5ODMyMzIsIDIwMjYsIDY0MDE5LCA2NDAxOCwgNjQwMTcsIDY0MDE2LCAxMjc2OCwgMTIxMzYxLCA3NTgyLCAKKyAgICA3ODI1MiwgNzgyNDgsIDc3OTE0LCA3ODI0NiwgNzgyNDcsIDEyMDc5MSwgNzc5MTUsIDc4NzY2LCA2Nzg4LCAxMzA5NCwgCisgICAgNzc5MjAsIDc1MzIsIDQxNDE0LCA3ODUyMCwgMzE3OSwgNzg1MTgsIDY0NzY5LCA3ODUxNCwgNzg1MTcsIDExNDYxLCAKKyAgICA3NDQ1NCwgMTA3NTEsIDkwNTEsIDEyMDcyMCwgNjcwOCwgMTA1MzUsIDExODk1NSwgNjgyMTgsIDU1Mjc0LCAyMDA4LCAKKyAgICA2NDAzMSwgNjQwMzAsIDI5NCwgNDE4NzQsIDgzMzgzLCA2NDc5MCwgNjU5MjksIDgzMzc2LCA4MzMzNywgODMzNzksIAorICAgIDgzMzgwLCA2NDAyOCwgODE0NiwgNjQwMjYsIDQxNzg4LCAxOTQ4NDQsIDAsIDQzNTEsIDYzNDMsIDQzMjQ3LCAxMTk4ODgsIAorICAgIDcwMTUzLCAxMTk4ODYsIDExOTg5MSwgNzIzODcsIDExOTg4OSwgMTE0MzMsIDExOTg5NSwgMTE5ODk2LCAxOTQ2NTUsIAorICAgIDc4MDEsIDY1NTc4LCA4MzM2MSwgMTI5MTUsIDQzOTY4LCAzMjk3LCA5Njk5LCA4MzM1NywgMTEzNSwgODMzNTAsIDgzMzUxLCAKKyAgICA4MzM1MiwgMTk5NSwgNjcyMiwgOTgzOTI1LCAxMjg4MTUsIDI1NTIsIDQxNTQ2LCA2MCwgNjgzOTQsIDg2NDksIDQxNTQ5LCAKKyAgICA3ODQ5NiwgNzIzODYsIDgzMzcxLCA2NjgyLCA4MzM2NSwgNzg2NzksIDQzODMzLCA0MTU0NywgOTgzNjMwLCAyMDEzLCAKKyAgICA4MzM2MiwgNzg1MzAsIDc4NTMyLCA3ODUyOCwgNzg1MjksIDEyODMyLCA3ODQ5MywgODA4MSwgODM2MiwgMzUzNywgCisgICAgMTE5OTA4LCA5MTM3LCA3MTU1LCA4OTk5LCA5MTc5MDEsIDc4NTMzLCAzNDY2LCAwLCAxMjE0NjYsIDE5OTYsIDAsIDM0NTMsIAorICAgIDYyODIsIDAsIDIwMDIsIDIwMDAsIDEyMDE3NSwgNTM3LCA5Mjk3NiwgNDE3OSwgNjUxMTksIDE5OTgsIDEyMDc0NiwgMTg0MiwgCisgICAgMCwgOTI2NzQsIDk2MjgsIDY4NDQ2LCAxMjA4MSwgOTgyNiwgNjQ1MDIsIDE3NjcsIDAsIDk4MzI0OCwgMTIwMDAxLCAKKyAgICAxMjAyMDEsIDk4MzY0NiwgMTI0OTc1LCAxMjc5NTIsIDMwNTksIDQ0MDI0LCAxMjAyMDQsIDQzNDkxLCA5MjY5MywgMCwgCisgICAgMTIxNDcyLCA5MjQ1MiwgNDEwMCwgOTIwLCAxODExLCAxMzU1LCA0MzE4OSwgMCwgMzU5MiwgMTAwNzgsIDAsIDc4MTYyLCAKKyAgICAxMTk1NTgsIDg1OTIsIDY1ODcwLCA2NjQxNywgNzQ1MDQsIDEwNzQyLCA3MjQwMCwgNDI5MTgsIDE5OTQsIDkyODEsIDMyOTYsIAorICAgIDEyODY1LCAxOTk3LCAxODk1LCAKIH07CiAKICNkZWZpbmUgY29kZV9tYWdpYyA0NwpAQCAtMTk4MzksNyArMjMyNjUsNyBAQAogI2RlZmluZSBjb2RlX3BvbHkgMzI3NzEKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBhbGlhc2VzX3N0YXJ0ID0gMHhmMDAwMDsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgYWxpYXNlc19lbmQgPSAweGYwMWM5Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBhbGlhc2VzX2VuZCA9IDB4ZjAxY2I7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG5hbWVfYWxpYXNlc1tdID0gewogICAgIDB4MDAwMCwKICAgICAweDAwMDAsCkBAIC0yMDAzNCw2ICsyMzQ2MCw4IEBACiAgICAgMHgyMTE4LAogICAgIDB4MjQ0OCwKICAgICAweDI0NDksCisgICAgMHgyQjdBLAorICAgIDB4MkI3QywKICAgICAweEEwMTUsCiAgICAgMHhGRTE4LAogICAgIDB4RkUwMCwKZGlmZiAtLWdpdCBhL01vZHVsZXMvd2lucmVwYXJzZS5oIGIvTW9kdWxlcy93aW5yZXBhcnNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZmNzc3NQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvd2lucmVwYXJzZS5oCkBAIC0wLDAgKzEsNTMgQEAKKyNpZm5kZWYgUHlfV0lOUkVQQVJTRV9ICisjZGVmaW5lIFB5X1dJTlJFUEFSU0VfSAorCisjaWZkZWYgTVNfV0lORE9XUworI2luY2x1ZGUgPFdpbmRvd3MuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiBUaGUgZm9sbG93aW5nIHN0cnVjdHVyZSB3YXMgY29waWVkIGZyb20KKyAgIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9mZjU1MjAxMi5hc3B4IGFzIHRoZSByZXF1aXJlZAorICAgaW5jbHVkZSBkb2Vzbid0IHNlZW0gdG8gYmUgcHJlc2VudCBpbiB0aGUgV2luZG93cyBTREsgKGF0IGxlYXN0IGFzIGluY2x1ZGVkCisgICB3aXRoIFZpc3VhbCBTdHVkaW8gRXhwcmVzcykuICovCit0eXBlZGVmIHN0cnVjdCBfUkVQQVJTRV9EQVRBX0JVRkZFUiB7CisgICAgVUxPTkcgUmVwYXJzZVRhZzsKKyAgICBVU0hPUlQgUmVwYXJzZURhdGFMZW5ndGg7CisgICAgVVNIT1JUIFJlc2VydmVkOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIFVTSE9SVCBTdWJzdGl0dXRlTmFtZU9mZnNldDsKKyAgICAgICAgICAgIFVTSE9SVCBTdWJzdGl0dXRlTmFtZUxlbmd0aDsKKyAgICAgICAgICAgIFVTSE9SVCBQcmludE5hbWVPZmZzZXQ7CisgICAgICAgICAgICBVU0hPUlQgUHJpbnROYW1lTGVuZ3RoOworICAgICAgICAgICAgVUxPTkcgRmxhZ3M7CisgICAgICAgICAgICBXQ0hBUiBQYXRoQnVmZmVyWzFdOworICAgICAgICB9IFN5bWJvbGljTGlua1JlcGFyc2VCdWZmZXI7CisKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIFVTSE9SVCBTdWJzdGl0dXRlTmFtZU9mZnNldDsKKyAgICAgICAgICAgIFVTSE9SVCAgU3Vic3RpdHV0ZU5hbWVMZW5ndGg7CisgICAgICAgICAgICBVU0hPUlQgIFByaW50TmFtZU9mZnNldDsKKyAgICAgICAgICAgIFVTSE9SVCAgUHJpbnROYW1lTGVuZ3RoOworICAgICAgICAgICAgV0NIQVIgIFBhdGhCdWZmZXJbMV07CisgICAgICAgIH0gTW91bnRQb2ludFJlcGFyc2VCdWZmZXI7CisKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIFVDSEFSICBEYXRhQnVmZmVyWzFdOworICAgICAgICB9IEdlbmVyaWNSZXBhcnNlQnVmZmVyOworICAgIH07Cit9IFJFUEFSU0VfREFUQV9CVUZGRVIsICpQUkVQQVJTRV9EQVRBX0JVRkZFUjsKKworI2RlZmluZSBSRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFICBGSUVMRF9PRkZTRVQoUkVQQVJTRV9EQVRBX0JVRkZFUixcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmljUmVwYXJzZUJ1ZmZlcikKKyNkZWZpbmUgTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkUgICggMTYgKiAxMDI0ICkKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKworI2VuZGlmIC8qICFQeV9XSU5SRVBBUlNFX0ggKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMveHhsaW1pdGVkLmMgYi9Nb2R1bGVzL3h4bGltaXRlZC5jCmluZGV4IGVlY2RhYjkuLjQwYzE3NjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMveHhsaW1pdGVkLmMKKysrIGIvTW9kdWxlcy94eGxpbWl0ZWQuYwpAQCAtNDAsMTEgKzQwLDE4IEBACiAKIC8qIFh4byBtZXRob2RzICovCiAKLXN0YXRpYyB2b2lkCi1YeG9fZGVhbGxvYyhYeG9PYmplY3QgKnNlbGYpCitzdGF0aWMgaW50CitYeG9fdHJhdmVyc2UoWHhvT2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQeV9YREVDUkVGKHNlbGYtPnhfYXR0cik7Ci0gICAgKChmcmVlZnVuYylQeVR5cGVfR2V0U2xvdChQeV9UWVBFKHNlbGYpLCBQeV90cF9mcmVlKSkoc2VsZik7CisgICAgUHlfVklTSVQoc2VsZi0+eF9hdHRyKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorWHhvX2ZpbmFsaXplKFh4b09iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT54X2F0dHIpOworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTAyLDcgKzEwOSw4IEBACiAKIHN0YXRpYyBQeVR5cGVfU2xvdCBYeG9fVHlwZV9zbG90c1tdID0gewogICAgIHtQeV90cF9kb2MsICJUaGUgWHhvIHR5cGUifSwKLSAgICB7UHlfdHBfZGVhbGxvYywgWHhvX2RlYWxsb2N9LAorICAgIHtQeV90cF90cmF2ZXJzZSwgWHhvX3RyYXZlcnNlfSwKKyAgICB7UHlfdHBfZmluYWxpemUsIFh4b19maW5hbGl6ZX0sCiAgICAge1B5X3RwX2dldGF0dHJvLCBYeG9fZ2V0YXR0cm99LAogICAgIHtQeV90cF9zZXRhdHRyLCBYeG9fc2V0YXR0cn0sCiAgICAge1B5X3RwX21ldGhvZHMsIFh4b19tZXRob2RzfSwKQEAgLTExMyw3ICsxMjEsNyBAQAogICAgICJ4eGxpbWl0ZWQuWHhvIiwKICAgICBzaXplb2YoWHhvT2JqZWN0KSwKICAgICAwLAotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwKKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsCiAgICAgWHhvX1R5cGVfc2xvdHMKIH07CiAKQEAgLTE2OSw3ICsxNzcsNyBAQAogCiAvKiAtLS0tLS0tLS0tICovCiAKLXN0YXRpYyBQeVR5cGVfU2xvdCBTdHJfVHlwZV9zbG90c1tdID0geyAgICAKK3N0YXRpYyBQeVR5cGVfU2xvdCBTdHJfVHlwZV9zbG90c1tdID0gewogICAgIHtQeV90cF9iYXNlLCBOVUxMfSwgLyogZmlsbGVkIG91dCBpbiBtb2R1bGUgaW5pdCBmdW5jdGlvbiAqLwogICAgIHswLCAwfSwKIH07CkBAIC0yMjIsMjUgKzIzMCw5IEBACiBQeURvY19TVFJWQVIobW9kdWxlX2RvYywKICJUaGlzIGlzIGEgdGVtcGxhdGUgbW9kdWxlIGp1c3QgZm9yIGluc3RydWN0aW9uLiIpOwogCi0vKiBJbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgdGhlIG1vZHVsZSAoKm11c3QqIGJlIGNhbGxlZCBQeUluaXRfeHgpICovCi0KLQotc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiB4eG1vZHVsZSA9IHsKLSAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgInh4bGltaXRlZCIsCi0gICAgbW9kdWxlX2RvYywKLSAgICAtMSwKLSAgICB4eF9tZXRob2RzLAotICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwKLX07Ci0KLVB5TU9ESU5JVF9GVU5DCi1QeUluaXRfeHhsaW1pdGVkKHZvaWQpCitzdGF0aWMgaW50Cit4eF9tb2RleGVjKFB5T2JqZWN0ICptKQogewotICAgIFB5T2JqZWN0ICptID0gTlVMTDsKICAgICBQeU9iamVjdCAqbzsKIAogICAgIC8qIER1ZSB0byBjcm9zcyBwbGF0Zm9ybSBjb21waWxlciBpc3N1ZXMgdGhlIHNsb3RzIG11c3QgYmUgZmlsbGVkCkBAIC0yNTQsMTEgKzI0Niw2IEBACiAgICAgaWYgKFh4b19UeXBlID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbDsKIAotICAgIC8qIENyZWF0ZSB0aGUgbW9kdWxlIGFuZCBhZGQgdGhlIGZ1bmN0aW9ucyAqLwotICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJnh4bW9kdWxlKTsKLSAgICBpZiAobSA9PSBOVUxMKQotICAgICAgICBnb3RvIGZhaWw7Ci0KICAgICAvKiBBZGQgc29tZSBzeW1ib2xpYyBjb25zdGFudHMgdG8gdGhlIG1vZHVsZSAqLwogICAgIGlmIChFcnJvck9iamVjdCA9PSBOVUxMKSB7CiAgICAgICAgIEVycm9yT2JqZWN0ID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJ4eGxpbWl0ZWQuZXJyb3IiLCBOVUxMLCBOVUxMKTsKQEAgLTI2OCw2ICsyNTUsMTIgQEAKICAgICBQeV9JTkNSRUYoRXJyb3JPYmplY3QpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyb3IiLCBFcnJvck9iamVjdCk7CiAKKyAgICAvKiBBZGQgWHhvICovCisgICAgbyA9IFB5VHlwZV9Gcm9tU3BlYygmWHhvX1R5cGVfc3BlYyk7CisgICAgaWYgKG8gPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiWHhvIiwgbyk7CisKICAgICAvKiBBZGQgU3RyICovCiAgICAgbyA9IFB5VHlwZV9Gcm9tU3BlYygmU3RyX1R5cGVfc3BlYyk7CiAgICAgaWYgKG8gPT0gTlVMTCkKQEAgLTI3OSw4ICsyNzIsMzQgQEAKICAgICBpZiAobyA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWw7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJOdWxsIiwgbyk7Ci0gICAgcmV0dXJuIG07CisgICAgcmV0dXJuIDA7CiAgZmFpbDoKICAgICBQeV9YREVDUkVGKG0pOwotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiAtMTsKK30KKworCitzdGF0aWMgUHlNb2R1bGVEZWZfU2xvdCB4eF9zbG90c1tdID0geworICAgIHtQeV9tb2RfZXhlYywgeHhfbW9kZXhlY30sCisgICAgezAsIE5VTEx9Cit9OworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIHh4bW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAieHhsaW1pdGVkIiwKKyAgICBtb2R1bGVfZG9jLAorICAgIDAsCisgICAgeHhfbWV0aG9kcywKKyAgICB4eF9zbG90cywKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTAorfTsKKworLyogRXhwb3J0IGZ1bmN0aW9uIGZvciB0aGUgbW9kdWxlICgqbXVzdCogYmUgY2FsbGVkIFB5SW5pdF94eCkgKi8KKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF94eGxpbWl0ZWQodm9pZCkKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmeHhtb2R1bGUpOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy94eG1vZHVsZS5jIGIvTW9kdWxlcy94eG1vZHVsZS5jCmluZGV4IDBmZWZmNjYuLjg1MjMwZDkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMveHhtb2R1bGUuYworKysgYi9Nb2R1bGVzL3h4bW9kdWxlLmMKQEAgLTMzNCwyNiArMzM0LDEwIEBACiBQeURvY19TVFJWQVIobW9kdWxlX2RvYywKICJUaGlzIGlzIGEgdGVtcGxhdGUgbW9kdWxlIGp1c3QgZm9yIGluc3RydWN0aW9uLiIpOwogCi0vKiBJbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgdGhlIG1vZHVsZSAoKm11c3QqIGJlIGNhbGxlZCBQeUluaXRfeHgpICovCiAKLQotc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiB4eG1vZHVsZSA9IHsKLSAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgInh4IiwKLSAgICBtb2R1bGVfZG9jLAotICAgIC0xLAotICAgIHh4X21ldGhvZHMsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTAotfTsKLQotUHlNT0RJTklUX0ZVTkMKLVB5SW5pdF94eCh2b2lkKQorc3RhdGljIGludAoreHhfZXhlYyhQeU9iamVjdCAqbSkKIHsKLSAgICBQeU9iamVjdCAqbSA9IE5VTEw7Ci0KICAgICAvKiBEdWUgdG8gY3Jvc3MgcGxhdGZvcm0gY29tcGlsZXIgaXNzdWVzIHRoZSBzbG90cyBtdXN0IGJlIGZpbGxlZAogICAgICAqIGhlcmUuIEl0J3MgcmVxdWlyZWQgZm9yIHBvcnRhYmlsaXR5IHRvIFdpbmRvd3Mgd2l0aG91dCByZXF1aXJpbmcKICAgICAgKiBDKysuICovCkBAIC0zNjYsMTEgKzM1MCw2IEBACiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmWHhvX1R5cGUpIDwgMCkKICAgICAgICAgZ290byBmYWlsOwogCi0gICAgLyogQ3JlYXRlIHRoZSBtb2R1bGUgYW5kIGFkZCB0aGUgZnVuY3Rpb25zICovCi0gICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmeHhtb2R1bGUpOwotICAgIGlmIChtID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbDsKLQogICAgIC8qIEFkZCBzb21lIHN5bWJvbGljIGNvbnN0YW50cyB0byB0aGUgbW9kdWxlICovCiAgICAgaWYgKEVycm9yT2JqZWN0ID09IE5VTEwpIHsKICAgICAgICAgRXJyb3JPYmplY3QgPSBQeUVycl9OZXdFeGNlcHRpb24oInh4LmVycm9yIiwgTlVMTCwgTlVMTCk7CkBAIC0zODksOCArMzY4LDMzIEBACiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmTnVsbF9UeXBlKSA8IDApCiAgICAgICAgIGdvdG8gZmFpbDsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIk51bGwiLCAoUHlPYmplY3QgKikmTnVsbF9UeXBlKTsKLSAgICByZXR1cm4gbTsKKyAgICByZXR1cm4gMDsKICBmYWlsOgogICAgIFB5X1hERUNSRUYobSk7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmX1Nsb3QgeHhfc2xvdHNbXSA9IHsKKyAgICB7UHlfbW9kX2V4ZWMsIHh4X2V4ZWN9LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgeHhtb2R1bGUgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICJ4eCIsCisgICAgbW9kdWxlX2RvYywKKyAgICAwLAorICAgIHh4X21ldGhvZHMsCisgICAgeHhfc2xvdHMsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwKK307CisKKy8qIEV4cG9ydCBmdW5jdGlvbiBmb3IgdGhlIG1vZHVsZSAoKm11c3QqIGJlIGNhbGxlZCBQeUluaXRfeHgpICovCisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfeHgodm9pZCkKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmeHhtb2R1bGUpOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy94eHN1YnR5cGUuYyBiL01vZHVsZXMveHhzdWJ0eXBlLmMKaW5kZXggNjk0NGUzNy4uOGQwZDZhZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy94eHN1YnR5cGUuYworKysgYi9Nb2R1bGVzL3h4c3VidHlwZS5jCkBAIC0yNTcsMTMgKzI1Nyw1MCBAQAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCitzdGF0aWMgaW50Cit4eHN1YnR5cGVfZXhlYyhQeU9iamVjdCogbSkKK3sKKyAgICAvKiBGaWxsIGluIGRlZmVycmVkIGRhdGEgYWRkcmVzc2VzLiAgVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlCisgICAgICAgUHlUeXBlX1JlYWR5KCkgaXMgY2FsbGVkLiAgTm90ZSB0aGF0IFB5VHlwZV9SZWFkeSgpIGF1dG9tYXRpY2FsbHkKKyAgICAgICBpbml0aWFsaXplcyB0aGUgb2Iub2JfdHlwZSBmaWVsZCB0byAmUHlUeXBlX1R5cGUgaWYgaXQncyBOVUxMLAorICAgICAgIHNvIGl0J3Mgbm90IG5lY2Vzc2FyeSB0byBmaWxsIGluIG9iX3R5cGUgZmlyc3QuICovCisgICAgc3BhbWRpY3RfdHlwZS50cF9iYXNlID0gJlB5RGljdF9UeXBlOworICAgIGlmIChQeVR5cGVfUmVhZHkoJnNwYW1kaWN0X3R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgc3BhbWxpc3RfdHlwZS50cF9iYXNlID0gJlB5TGlzdF9UeXBlOworICAgIGlmIChQeVR5cGVfUmVhZHkoJnNwYW1saXN0X3R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmc3BhbWxpc3RfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmc3BhbWRpY3RfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBQeV9JTkNSRUYoJnNwYW1saXN0X3R5cGUpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgInNwYW1saXN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSAmc3BhbWxpc3RfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBQeV9JTkNSRUYoJnNwYW1kaWN0X3R5cGUpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgInNwYW1kaWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSAmc3BhbWRpY3RfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWZfU2xvdCB4eHN1YnR5cGVfc2xvdHNbXSA9IHsKKyAgICB7UHlfbW9kX2V4ZWMsIHh4c3VidHlwZV9leGVjfSwKKyAgICB7MCwgTlVMTH0sCit9OworCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIHh4c3VidHlwZW1vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCiAgICAgInh4c3VidHlwZSIsCiAgICAgeHhzdWJ0eXBlX19kb2NfXywKLSAgICAtMSwKKyAgICAwLAogICAgIHh4c3VidHlwZV9mdW5jdGlvbnMsCi0gICAgTlVMTCwKKyAgICB4eHN1YnR5cGVfc2xvdHMsCiAgICAgTlVMTCwKICAgICBOVUxMLAogICAgIE5VTEwKQEAgLTI3MywzNyArMzEwLDUgQEAKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfeHhzdWJ0eXBlKHZvaWQpCiB7Ci0gICAgUHlPYmplY3QgKm07Ci0KLSAgICAvKiBGaWxsIGluIGRlZmVycmVkIGRhdGEgYWRkcmVzc2VzLiAgVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlCi0gICAgICAgUHlUeXBlX1JlYWR5KCkgaXMgY2FsbGVkLiAgTm90ZSB0aGF0IFB5VHlwZV9SZWFkeSgpIGF1dG9tYXRpY2FsbHkKLSAgICAgICBpbml0aWFsaXplcyB0aGUgb2Iub2JfdHlwZSBmaWVsZCB0byAmUHlUeXBlX1R5cGUgaWYgaXQncyBOVUxMLAotICAgICAgIHNvIGl0J3Mgbm90IG5lY2Vzc2FyeSB0byBmaWxsIGluIG9iX3R5cGUgZmlyc3QuICovCi0gICAgc3BhbWRpY3RfdHlwZS50cF9iYXNlID0gJlB5RGljdF9UeXBlOwotICAgIGlmIChQeVR5cGVfUmVhZHkoJnNwYW1kaWN0X3R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzcGFtbGlzdF90eXBlLnRwX2Jhc2UgPSAmUHlMaXN0X1R5cGU7Ci0gICAgaWYgKFB5VHlwZV9SZWFkeSgmc3BhbWxpc3RfdHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJnh4c3VidHlwZW1vZHVsZSk7Ci0gICAgaWYgKG0gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZzcGFtbGlzdF90eXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVR5cGVfUmVhZHkoJnNwYW1kaWN0X3R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9JTkNSRUYoJnNwYW1saXN0X3R5cGUpOwotICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgInNwYW1saXN0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSAmc3BhbWxpc3RfdHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0lOQ1JFRigmc3BhbWRpY3RfdHlwZSk7Ci0gICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3BhbWRpY3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopICZzcGFtZGljdF90eXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBtOworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZ4eHN1YnR5cGVtb2R1bGUpOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96aXBpbXBvcnQuYyBiL01vZHVsZXMvemlwaW1wb3J0LmMKaW5kZXggZjJjYzI0NS4uNzIyMGZhZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy96aXBpbXBvcnQuYworKysgYi9Nb2R1bGVzL3ppcGltcG9ydC5jCkBAIC0yMCwxNSArMjAsMTMgQEAKIAogLyogemlwX3NlYXJjaG9yZGVyIGRlZmluZXMgaG93IHdlIHNlYXJjaCBmb3IgYSBtb2R1bGUgaW4gdGhlIFppcAogICAgYXJjaGl2ZTogd2UgZmlyc3Qgc2VhcmNoIGZvciBhIHBhY2thZ2UgX19pbml0X18sIHRoZW4gZm9yCi0gICBub24tcGFja2FnZSAucHljLCAucHlvIGFuZCAucHkgZW50cmllcy4gVGhlIC5weWMgYW5kIC5weW8gZW50cmllcworICAgbm9uLXBhY2thZ2UgLnB5YywgYW5kIC5weSBlbnRyaWVzLiBUaGUgLnB5YyBlbnRyaWVzCiAgICBhcmUgc3dhcHBlZCBieSBpbml0emlwaW1wb3J0KCkgaWYgd2UgcnVuIGluIG9wdGltaXplZCBtb2RlLiBBbHNvLAogICAgJy8nIGlzIHJlcGxhY2VkIGJ5IFNFUCB0aGVyZS4gKi8KIHN0YXRpYyBzdHJ1Y3Qgc3RfemlwX3NlYXJjaG9yZGVyIHppcF9zZWFyY2hvcmRlcltdID0gewogICAgIHsiL19faW5pdF9fLnB5YyIsIElTX1BBQ0tBR0UgfCBJU19CWVRFQ09ERX0sCi0gICAgeyIvX19pbml0X18ucHlvIiwgSVNfUEFDS0FHRSB8IElTX0JZVEVDT0RFfSwKICAgICB7Ii9fX2luaXRfXy5weSIsIElTX1BBQ0tBR0UgfCBJU19TT1VSQ0V9LAogICAgIHsiLnB5YyIsIElTX0JZVEVDT0RFfSwKLSAgICB7Ii5weW8iLCBJU19CWVRFQ09ERX0sCiAgICAgeyIucHkiLCBJU19TT1VSQ0V9LAogICAgIHsiIiwgMH0KIH07CkBAIC0xNTcsOCArMTU1LDcgQEAKICAgICAgICAgICAgIHRtcCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVSVjIiwgc2VsZi0+cHJlZml4LCBTRVApOwogICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc2VsZi0+cHJlZml4KTsKLSAgICAgICAgICAgIHNlbGYtPnByZWZpeCA9IHRtcDsKKyAgICAgICAgICAgIFB5X1NFVFJFRihzZWxmLT5wcmVmaXgsIHRtcCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZQpAQCAtODc1LDggKzg3MiwxMiBAQAogCiAgICAgZnAgPSBfUHlfZm9wZW5fb2JqKGFyY2hpdmUsICJyYiIpOwogICAgIGlmIChmcCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT1NFcnJvcikpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKKyAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCBvcGVuIFppcCBmaWxlOiAlUiIsIGFyY2hpdmUpOworICAgICAgICAgICAgX1B5RXJyX0NoYWluRXhjZXB0aW9ucyhleGMsIHZhbCwgdGIpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtOTM5LDYgKzk0MCw5IEBACiAgICAgICAgIGhlYWRlcl9zaXplID0gbmFtZV9zaXplICsKICAgICAgICAgICAgUHlNYXJzaGFsX1JlYWRTaG9ydEZyb21GaWxlKGZwKSArCiAgICAgICAgICAgIFB5TWFyc2hhbF9SZWFkU2hvcnRGcm9tRmlsZShmcCk7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKwogICAgICAgICBpZiAoZnJlYWQoZHVtbXksIDEsIDgsIGZwKSAhPSA4KSAvKiBTa2lwIHVudXNlZCBmaWVsZHMsIGF2b2lkIGZzZWVrICovCiAgICAgICAgICAgICBnb3RvIGZpbGVfZXJyb3I7CiAgICAgICAgIGZpbGVfb2Zmc2V0ID0gUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApICsgYXJjX29mZnNldDsKQEAgLTEwNzMsMTIgKzEwNzcsOCBAQAogICAgIH0KIAogICAgIGZwID0gX1B5X2ZvcGVuX29iaihhcmNoaXZlLCAicmIiKTsKLSAgICBpZiAoIWZwKSB7Ci0gICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgInppcGltcG9ydDogY2FuIG5vdCBvcGVuIGZpbGUgJVUiLCBhcmNoaXZlKTsKKyAgICBpZiAoIWZwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICAvKiBDaGVjayB0byBtYWtlIHN1cmUgdGhlIGxvY2FsIGZpbGUgaGVhZGVyIGlzIGNvcnJlY3QgKi8KICAgICBpZiAoZnNlZWsoZnAsIGZpbGVfb2Zmc2V0LCAwKSA9PSAtMSkgewpAQCAtMTMxNSw3ICsxMzE1LDcgQEAKICAgICByZXR1cm4gbWt0aW1lKCZzdG0pOwogfQogCi0vKiBHaXZlbiBhIHBhdGggdG8gYSAucHljIG9yIC5weW8gZmlsZSBpbiB0aGUgYXJjaGl2ZSwgcmV0dXJuIHRoZQorLyogR2l2ZW4gYSBwYXRoIHRvIGEgLnB5YyBmaWxlIGluIHRoZSBhcmNoaXZlLCByZXR1cm4gdGhlCiAgICBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgbWF0Y2hpbmcgLnB5IGZpbGUsIG9yIDAgaWYgbm8gc291cmNlCiAgICBpcyBhdmFpbGFibGUuICovCiBzdGF0aWMgdGltZV90CkBAIC0xNDc4LDE3ICsxNDc4LDYgQEAKICAgICAvKiBDb3JyZWN0IGRpcmVjdG9yeSBzZXBhcmF0b3IgKi8KICAgICB6aXBfc2VhcmNob3JkZXJbMF0uc3VmZml4WzBdID0gU0VQOwogICAgIHppcF9zZWFyY2hvcmRlclsxXS5zdWZmaXhbMF0gPSBTRVA7Ci0gICAgemlwX3NlYXJjaG9yZGVyWzJdLnN1ZmZpeFswXSA9IFNFUDsKLSAgICBpZiAoUHlfT3B0aW1pemVGbGFnKSB7Ci0gICAgICAgIC8qIFJldmVyc2UgKi5weWMgYW5kICoucHlvICovCi0gICAgICAgIHN0cnVjdCBzdF96aXBfc2VhcmNob3JkZXIgdG1wOwotICAgICAgICB0bXAgPSB6aXBfc2VhcmNob3JkZXJbMF07Ci0gICAgICAgIHppcF9zZWFyY2hvcmRlclswXSA9IHppcF9zZWFyY2hvcmRlclsxXTsKLSAgICAgICAgemlwX3NlYXJjaG9yZGVyWzFdID0gdG1wOwotICAgICAgICB0bXAgPSB6aXBfc2VhcmNob3JkZXJbM107Ci0gICAgICAgIHppcF9zZWFyY2hvcmRlclszXSA9IHppcF9zZWFyY2hvcmRlcls0XTsKLSAgICAgICAgemlwX3NlYXJjaG9yZGVyWzRdID0gdG1wOwotICAgIH0KIAogICAgIG1vZCA9IFB5TW9kdWxlX0NyZWF0ZSgmemlwaW1wb3J0bW9kdWxlKTsKICAgICBpZiAobW9kID09IE5VTEwpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3psaWJtb2R1bGUuYyBiL01vZHVsZXMvemxpYm1vZHVsZS5jCmluZGV4IDBkMmUxODguLmQ1YTZlNTMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvemxpYm1vZHVsZS5jCisrKyBiL01vZHVsZXMvemxpYm1vZHVsZS5jCkBAIC04MiwxMiArODIsMTEgQEAKIH0KIAogLypbY2xpbmljIGlucHV0XQotb3V0cHV0IHByZXNldCBmaWxlCiBtb2R1bGUgemxpYgogY2xhc3MgemxpYi5Db21wcmVzcyAiY29tcG9iamVjdCAqIiAiJkNvbXB0eXBlIgogY2xhc3MgemxpYi5EZWNvbXByZXNzICJjb21wb2JqZWN0ICoiICImRGVjb21wdHlwZSIKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWJmZDRjMzQwNTczYmE5MWRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTA5MzkzNTExNWMzZTMxNThdKi8KIAogc3RhdGljIGNvbXBvYmplY3QgKgogbmV3Y29tcG9iamVjdChQeVR5cGVPYmplY3QgKnR5cGUpCkBAIC0yMjcsNDIgKzIyNiw0MiBAQAogCiAvKltweXRob24gaW5wdXRdCiAKLWNsYXNzIHVpbnRfY29udmVydGVyKENDb252ZXJ0ZXIpOgorY2xhc3MgY2FwcGVkX3VpbnRfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAndW5zaWduZWQgaW50JwotICAgIGNvbnZlcnRlciA9ICd1aW50X2NvbnZlcnRlcicKKyAgICBjb252ZXJ0ZXIgPSAnY2FwcGVkX3VpbnRfY29udmVydGVyJwogICAgIGNfaWdub3JlZF9kZWZhdWx0ID0gIjAiCiAKIFtweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTIyMjYzODU1ZjdhM2ViZmRdKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTM1NTIxZTRlNzMzODIzYzddKi8KIAogc3RhdGljIGludAotdWludF9jb252ZXJ0ZXIoUHlPYmplY3QgKm9iaiwgdm9pZCAqcHRyKQorY2FwcGVkX3VpbnRfY29udmVydGVyKFB5T2JqZWN0ICpvYmosIHZvaWQgKnB0cikKIHsKLSAgICBsb25nIHZhbDsKLSAgICB1bnNpZ25lZCBsb25nIHV2YWw7CisgICAgUHlPYmplY3QgKmxvbmdfb2JqOworICAgIFB5X3NzaXplX3QgdmFsOwogCi0gICAgdmFsID0gUHlMb25nX0FzTG9uZyhvYmopOworICAgIGxvbmdfb2JqID0gKFB5T2JqZWN0ICopX1B5TG9uZ19Gcm9tTmJJbnQob2JqKTsKKyAgICBpZiAobG9uZ19vYmogPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgdmFsID0gUHlMb25nX0FzU3NpemVfdChsb25nX29iaik7CisgICAgUHlfREVDUkVGKGxvbmdfb2JqKTsKICAgICBpZiAodmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgdXZhbCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhvYmopOwotICAgICAgICBpZiAodXZhbCA9PSAodW5zaWduZWQgbG9uZyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKHZhbCA8IDApIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSBtdXN0IGJlIHBvc2l0aXZlIik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICB1dmFsID0gKHVuc2lnbmVkIGxvbmcpdmFsOwotICAgIH0KLQotICAgIGlmICh1dmFsID4gVUlOVF9NQVgpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIGludCB0b28gbGFyZ2UgZm9yIEMgdW5zaWduZWQgaW50Iik7CisgICAgaWYgKHZhbCA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUgbXVzdCBiZSBwb3NpdGl2ZSIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICAqKHVuc2lnbmVkIGludCAqKXB0ciA9IFB5X1NBRkVfRE9XTkNBU1QodXZhbCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgaW50KTsKKyAgICBpZiAoKHNpemVfdCl2YWwgPiBVSU5UX01BWCkgeworICAgICAgICAqKHVuc2lnbmVkIGludCAqKXB0ciA9IFVJTlRfTUFYOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgKih1bnNpZ25lZCBpbnQgKilwdHIgPSBQeV9TQUZFX0RPV05DQVNUKHZhbCwgUHlfc3NpemVfdCwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCk7CisgICAgfQogICAgIHJldHVybiAxOwogfQogCkBAIC0yNzMsNyArMjcyLDcgQEAKICAgICAgICAgQ29tcHJlc3NlZCBkYXRhLgogICAgIHdiaXRzOiBpbnQoY19kZWZhdWx0PSJNQVhfV0JJVFMiKSA9IE1BWF9XQklUUwogICAgICAgICBUaGUgd2luZG93IGJ1ZmZlciBzaXplLgotICAgIGJ1ZnNpemU6IHVpbnQoY19kZWZhdWx0PSJERUZfQlVGX1NJWkUiKSA9IERFRl9CVUZfU0laRQorICAgIGJ1ZnNpemU6IGNhcHBlZF91aW50KGNfZGVmYXVsdD0iREVGX0JVRl9TSVpFIikgPSBERUZfQlVGX1NJWkUKICAgICAgICAgVGhlIGluaXRpYWwgb3V0cHV0IGJ1ZmZlciBzaXplLgogICAgIC8KIApAQCAtMjgxLDggKzI4MCw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2RlY29tcHJlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCB3Yml0cywgdW5zaWduZWQgaW50IGJ1ZnNpemUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWU1NDY0ZTcyZGY5Y2I1ZiBpbnB1dD0wZjRiOWFiYjcxMDNmNTBlXSovCit6bGliX2RlY29tcHJlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCB3Yml0cywKKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBidWZzaXplKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ0NGQwOTg3ZjM0Mjk1NzQgaW5wdXQ9ZGEwOTUxMThiMzI0M2IyN10qLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHRfc3RyID0gTlVMTDsKICAgICBCeXRlICppbnB1dDsKQEAgLTQxMSw4ICs0MTEsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9jb21wcmVzc29ial9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBsZXZlbCwgaW50IG1ldGhvZCwgaW50IHdiaXRzLCBpbnQgbWVtTGV2ZWwsIGludCBzdHJhdGVneSwgUHlfYnVmZmVyICp6ZGljdCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04OWU1YTZjMTQ0OWNhYTllIGlucHV0PWIwMzQ4NDdmODgyMWY2YWZdKi8KK3psaWJfY29tcHJlc3NvYmpfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbGV2ZWwsIGludCBtZXRob2QsIGludCB3Yml0cywKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgbWVtTGV2ZWwsIGludCBzdHJhdGVneSwgUHlfYnVmZmVyICp6ZGljdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yOTQ5YmJiOWE1NzIzY2NkIGlucHV0PWIwMzQ4NDdmODgyMWY2YWZdKi8KIHsKICAgICBjb21wb2JqZWN0ICpzZWxmID0gTlVMTDsKICAgICBpbnQgZXJyOwpAQCAtNjY2LDggKzY2Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+dW51c2VkX2RhdGEpLCBvbGRfc2l6ZSk7CiAgICAgICAgICAgICBQeV9NRU1DUFkoUHlCeXRlc19BU19TVFJJTkcobmV3X2RhdGEpICsgb2xkX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+enN0Lm5leHRfaW4sIHNlbGYtPnpzdC5hdmFpbF9pbik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc2VsZi0+dW51c2VkX2RhdGEpOwotICAgICAgICAgICAgc2VsZi0+dW51c2VkX2RhdGEgPSBuZXdfZGF0YTsKKyAgICAgICAgICAgIFB5X1NFVFJFRihzZWxmLT51bnVzZWRfZGF0YSwgbmV3X2RhdGEpOwogICAgICAgICAgICAgc2VsZi0+enN0LmF2YWlsX2luID0gMDsKICAgICAgICAgfQogICAgIH0KQEAgLTY3OSw4ICs2NzksNyBAQAogICAgICAgICAgICAgICAgIChjaGFyICopc2VsZi0+enN0Lm5leHRfaW4sIHNlbGYtPnpzdC5hdmFpbF9pbik7CiAgICAgICAgIGlmIChuZXdfZGF0YSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBQeV9ERUNSRUYoc2VsZi0+dW5jb25zdW1lZF90YWlsKTsKLSAgICAgICAgc2VsZi0+dW5jb25zdW1lZF90YWlsID0gbmV3X2RhdGE7CisgICAgICAgIFB5X1NFVFJFRihzZWxmLT51bmNvbnN1bWVkX3RhaWwsIG5ld19kYXRhKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkBAIC02OTAsNyArNjg5LDcgQEAKIAogICAgIGRhdGE6IFB5X2J1ZmZlcgogICAgICAgICBUaGUgYmluYXJ5IGRhdGEgdG8gZGVjb21wcmVzcy4KLSAgICBtYXhfbGVuZ3RoOiB1aW50ID0gMAorICAgIG1heF9sZW5ndGg6IGNhcHBlZF91aW50ID0gMAogICAgICAgICBUaGUgbWF4aW11bSBhbGxvd2FibGUgbGVuZ3RoIG9mIHRoZSBkZWNvbXByZXNzZWQgZGF0YS4KICAgICAgICAgVW5jb25zdW1lZCBpbnB1dCBkYXRhIHdpbGwgYmUgc3RvcmVkIGluCiAgICAgICAgIHRoZSB1bmNvbnN1bWVkX3RhaWwgYXR0cmlidXRlLgpAQCAtNzA0LDggKzcwMyw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19pbXBsKGNvbXBvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwgdW5zaWduZWQgaW50IG1heF9sZW5ndGgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzU1Y2NjYzkwODdiZmU1NSBpbnB1dD0wMmNmYzA0NzM3N2NlYzg2XSovCit6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19pbXBsKGNvbXBvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1heF9sZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjgyZTJhMmMxOWY1ZmU3YiBpbnB1dD02OGI2NTA4YWIwN2MyY2YwXSovCiB7CiAgICAgaW50IGVycjsKICAgICB1bnNpZ25lZCBpbnQgb2xkX2xlbmd0aCwgbGVuZ3RoID0gREVGX0JVRl9TSVpFOwpAQCAtOTYxLDE0ICs5NjEsMTEgQEAKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgUHlfSU5DUkVGKHNlbGYtPnVudXNlZF9kYXRhKTsKKyAgICBQeV9TRVRSRUYocmV0dmFsLT51bnVzZWRfZGF0YSwgc2VsZi0+dW51c2VkX2RhdGEpOwogICAgIFB5X0lOQ1JFRihzZWxmLT51bmNvbnN1bWVkX3RhaWwpOworICAgIFB5X1NFVFJFRihyZXR2YWwtPnVuY29uc3VtZWRfdGFpbCwgc2VsZi0+dW5jb25zdW1lZF90YWlsKTsKICAgICBQeV9YSU5DUkVGKHNlbGYtPnpkaWN0KTsKLSAgICBQeV9YREVDUkVGKHJldHZhbC0+dW51c2VkX2RhdGEpOwotICAgIFB5X1hERUNSRUYocmV0dmFsLT51bmNvbnN1bWVkX3RhaWwpOwotICAgIFB5X1hERUNSRUYocmV0dmFsLT56ZGljdCk7Ci0gICAgcmV0dmFsLT51bnVzZWRfZGF0YSA9IHNlbGYtPnVudXNlZF9kYXRhOwotICAgIHJldHZhbC0+dW5jb25zdW1lZF90YWlsID0gc2VsZi0+dW5jb25zdW1lZF90YWlsOwotICAgIHJldHZhbC0+emRpY3QgPSBzZWxmLT56ZGljdDsKKyAgICBQeV9TRVRSRUYocmV0dmFsLT56ZGljdCwgc2VsZi0+emRpY3QpOwogICAgIHJldHZhbC0+ZW9mID0gc2VsZi0+ZW9mOwogCiAgICAgLyogTWFyayBpdCBhcyBiZWluZyBpbml0aWFsaXplZCAqLwpAQCAtMTAyMCwxNCArMTAxNywxMSBAQAogICAgIH0KIAogICAgIFB5X0lOQ1JFRihzZWxmLT51bnVzZWRfZGF0YSk7CisgICAgUHlfU0VUUkVGKHJldHZhbC0+dW51c2VkX2RhdGEsIHNlbGYtPnVudXNlZF9kYXRhKTsKICAgICBQeV9JTkNSRUYoc2VsZi0+dW5jb25zdW1lZF90YWlsKTsKKyAgICBQeV9TRVRSRUYocmV0dmFsLT51bmNvbnN1bWVkX3RhaWwsIHNlbGYtPnVuY29uc3VtZWRfdGFpbCk7CiAgICAgUHlfWElOQ1JFRihzZWxmLT56ZGljdCk7Ci0gICAgUHlfWERFQ1JFRihyZXR2YWwtPnVudXNlZF9kYXRhKTsKLSAgICBQeV9YREVDUkVGKHJldHZhbC0+dW5jb25zdW1lZF90YWlsKTsKLSAgICBQeV9YREVDUkVGKHJldHZhbC0+emRpY3QpOwotICAgIHJldHZhbC0+dW51c2VkX2RhdGEgPSBzZWxmLT51bnVzZWRfZGF0YTsKLSAgICByZXR2YWwtPnVuY29uc3VtZWRfdGFpbCA9IHNlbGYtPnVuY29uc3VtZWRfdGFpbDsKLSAgICByZXR2YWwtPnpkaWN0ID0gc2VsZi0+emRpY3Q7CisgICAgUHlfU0VUUkVGKHJldHZhbC0+emRpY3QsIHNlbGYtPnpkaWN0KTsKICAgICByZXR2YWwtPmVvZiA9IHNlbGYtPmVvZjsKIAogICAgIC8qIE1hcmsgaXQgYXMgYmVpbmcgaW5pdGlhbGl6ZWQgKi8KQEAgLTEwNDYsNyArMTA0MCw3IEBACiAvKltjbGluaWMgaW5wdXRdCiB6bGliLkRlY29tcHJlc3MuZmx1c2gKIAotICAgIGxlbmd0aDogdWludChjX2RlZmF1bHQ9IkRFRl9CVUZfU0laRSIpID0gemxpYi5ERUZfQlVGX1NJWkUKKyAgICBsZW5ndGg6IGNhcHBlZF91aW50KGNfZGVmYXVsdD0iREVGX0JVRl9TSVpFIikgPSB6bGliLkRFRl9CVUZfU0laRQogICAgICAgICB0aGUgaW5pdGlhbCBzaXplIG9mIHRoZSBvdXRwdXQgYnVmZmVyLgogICAgIC8KIApAQCAtMTA1NSw3ICsxMDQ5LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfRGVjb21wcmVzc19mbHVzaF9pbXBsKGNvbXBvYmplY3QgKnNlbGYsIHVuc2lnbmVkIGludCBsZW5ndGgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGI2ZmI3NTNhYjY5OGUyMiBpbnB1dD0xNTgwOTU2NTA1OTc4OTkzXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGI2ZmI3NTNhYjY5OGUyMiBpbnB1dD0xYmI5NjFlYjIxYjYyYWEwXSovCiB7CiAgICAgaW50IGVycjsKICAgICB1bnNpZ25lZCBpbnQgbmV3X2xlbmd0aDsKZGlmZiAtLWdpdCBhL09iamVjdHMvUkVBRE1FIGIvT2JqZWN0cy9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU0YjEwMwotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvUkVBRE1FCkBAIC0wLDAgKzEgQEAKK1NvdXJjZSBmaWxlcyBmb3IgdmFyaW91cyBidWlsdGluIG9iamVjdHMKZGlmZiAtLWdpdCBhL09iamVjdHMvYWJzdHJhY3QuYyBiL09iamVjdHMvYWJzdHJhY3QuYwppbmRleCA1ZTk2MTM4Li5hMDM2MmU3IDEwMDY0NAotLS0gYS9PYmplY3RzL2Fic3RyYWN0LmMKKysrIGIvT2JqZWN0cy9hYnN0cmFjdC5jCkBAIC0zMDUsNyArMzA1LDcgQEAKICAgICAgICAgcGItPmJmX2dldGJ1ZmZlciA9PSBOVUxMIHx8CiAgICAgICAgICgoKnBiLT5iZl9nZXRidWZmZXIpKG9iaiwgJnZpZXcsIFB5QlVGX1dSSVRBQkxFKSAhPSAwKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGFuIG9iamVjdCB3aXRoIGEgd3JpdGFibGUgYnVmZmVyIGludGVyZmFjZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGEgd3JpdGFibGUgYnl0ZXMtbGlrZSBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIApAQCAtMzI0LDcgKzMyNCw3IEBACiAKICAgICBpZiAocGIgPT0gTlVMTCB8fCBwYi0+YmZfZ2V0YnVmZmVyID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICInJS4xMDBzJyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBidWZmZXIgaW50ZXJmYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgICJhIGJ5dGVzLWxpa2Ugb2JqZWN0IGlzIHJlcXVpcmVkLCBub3QgJyUuMTAwcyciLAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMzNywxNiArMzM3LDM1IEBACiAgICAgUHlfc3NpemVfdCBzZCwgZGltOwogICAgIGludCBpOwogCi0gICAgaWYgKHZpZXctPm5kaW0gPT0gMCkgcmV0dXJuIDE7Ci0gICAgaWYgKHZpZXctPnN0cmlkZXMgPT0gTlVMTCkgcmV0dXJuICh2aWV3LT5uZGltID09IDEpOworICAgIC8qIDEpIGxlbiA9IHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUKKyAgICAgICAyKSBpdGVtc2l6ZSA+IDAKKyAgICAgICAzKSBsZW4gPSAwIDw9PT4gZXhpc3RzIGk6IHNoYXBlW2ldID0gMCAqLworICAgIGlmICh2aWV3LT5sZW4gPT0gMCkgcmV0dXJuIDE7CisgICAgaWYgKHZpZXctPnN0cmlkZXMgPT0gTlVMTCkgeyAgLyogQy1jb250aWd1b3VzIGJ5IGRlZmluaXRpb24gKi8KKyAgICAgICAgLyogVHJpdmlhbGx5IEYtY29udGlndW91cyAqLworICAgICAgICBpZiAodmlldy0+bmRpbSA8PSAxKSByZXR1cm4gMTsKKworICAgICAgICAvKiBuZGltID4gMSBpbXBsaWVzIHNoYXBlICE9IE5VTEwgKi8KKyAgICAgICAgYXNzZXJ0KHZpZXctPnNoYXBlICE9IE5VTEwpOworCisgICAgICAgIC8qIEVmZmVjdGl2ZWx5IDEtZCAqLworICAgICAgICBzZCA9IDA7CisgICAgICAgIGZvciAoaT0wOyBpPHZpZXctPm5kaW07IGkrKykgeworICAgICAgICAgICAgaWYgKHZpZXctPnNoYXBlW2ldID4gMSkgc2QgKz0gMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2QgPD0gMTsKKyAgICB9CisKKyAgICAvKiBzdHJpZGVzICE9IE5VTEwgaW1wbGllcyBib3RoIG9mIHRoZXNlICovCisgICAgYXNzZXJ0KHZpZXctPm5kaW0gPiAwKTsKKyAgICBhc3NlcnQodmlldy0+c2hhcGUgIT0gTlVMTCk7CiAKICAgICBzZCA9IHZpZXctPml0ZW1zaXplOwotICAgIGlmICh2aWV3LT5uZGltID09IDEpIHJldHVybiAodmlldy0+c2hhcGVbMF0gPT0gMSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNkID09IHZpZXctPnN0cmlkZXNbMF0pOwogICAgIGZvciAoaT0wOyBpPHZpZXctPm5kaW07IGkrKykgewogICAgICAgICBkaW0gPSB2aWV3LT5zaGFwZVtpXTsKLSAgICAgICAgaWYgKGRpbSA9PSAwKSByZXR1cm4gMTsKLSAgICAgICAgaWYgKHZpZXctPnN0cmlkZXNbaV0gIT0gc2QpIHJldHVybiAwOworICAgICAgICBpZiAoZGltID4gMSAmJiB2aWV3LT5zdHJpZGVzW2ldICE9IHNkKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQogICAgICAgICBzZCAqPSBkaW07CiAgICAgfQogICAgIHJldHVybiAxOwpAQCAtMzU4LDE2ICszNzcsMjIgQEAKICAgICBQeV9zc2l6ZV90IHNkLCBkaW07CiAgICAgaW50IGk7CiAKLSAgICBpZiAodmlldy0+bmRpbSA9PSAwKSByZXR1cm4gMTsKLSAgICBpZiAodmlldy0+c3RyaWRlcyA9PSBOVUxMKSByZXR1cm4gMTsKKyAgICAvKiAxKSBsZW4gPSBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplCisgICAgICAgMikgaXRlbXNpemUgPiAwCisgICAgICAgMykgbGVuID0gMCA8PT0+IGV4aXN0cyBpOiBzaGFwZVtpXSA9IDAgKi8KKyAgICBpZiAodmlldy0+bGVuID09IDApIHJldHVybiAxOworICAgIGlmICh2aWV3LT5zdHJpZGVzID09IE5VTEwpIHJldHVybiAxOyAvKiBDLWNvbnRpZ3VvdXMgYnkgZGVmaW5pdGlvbiAqLworCisgICAgLyogc3RyaWRlcyAhPSBOVUxMIGltcGxpZXMgYm90aCBvZiB0aGVzZSAqLworICAgIGFzc2VydCh2aWV3LT5uZGltID4gMCk7CisgICAgYXNzZXJ0KHZpZXctPnNoYXBlICE9IE5VTEwpOwogCiAgICAgc2QgPSB2aWV3LT5pdGVtc2l6ZTsKLSAgICBpZiAodmlldy0+bmRpbSA9PSAxKSByZXR1cm4gKHZpZXctPnNoYXBlWzBdID09IDEgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZCA9PSB2aWV3LT5zdHJpZGVzWzBdKTsKICAgICBmb3IgKGk9dmlldy0+bmRpbS0xOyBpPj0wOyBpLS0pIHsKICAgICAgICAgZGltID0gdmlldy0+c2hhcGVbaV07Ci0gICAgICAgIGlmIChkaW0gPT0gMCkgcmV0dXJuIDE7Ci0gICAgICAgIGlmICh2aWV3LT5zdHJpZGVzW2ldICE9IHNkKSByZXR1cm4gMDsKKyAgICAgICAgaWYgKGRpbSA+IDEgJiYgdmlldy0+c3RyaWRlc1tpXSAhPSBzZCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KICAgICAgICAgc2QgKj0gZGltOwogICAgIH0KICAgICByZXR1cm4gMTsKQEAgLTQ5OSw4ICs1MjQsOCBAQAogICAgIGlmICghUHlPYmplY3RfQ2hlY2tCdWZmZXIoZGVzdCkgfHwKICAgICAgICAgIVB5T2JqZWN0X0NoZWNrQnVmZmVyKHNyYykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJib3RoIGRlc3RpbmF0aW9uIGFuZCBzb3VyY2UgbXVzdCBoYXZlIHRoZSAiXAotICAgICAgICAgICAgICAgICAgICAgICAgImJ1ZmZlciBpbnRlcmZhY2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJib3RoIGRlc3RpbmF0aW9uIGFuZCBzb3VyY2UgbXVzdCBiZSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVzLWxpa2Ugb2JqZWN0cyIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCkBAIC01ODcsNyArNjEyLDEyIEBACiBQeUJ1ZmZlcl9GaWxsSW5mbyhQeV9idWZmZXIgKnZpZXcsIFB5T2JqZWN0ICpvYmosIHZvaWQgKmJ1ZiwgUHlfc3NpemVfdCBsZW4sCiAgICAgICAgICAgICAgICAgICBpbnQgcmVhZG9ubHksIGludCBmbGFncykKIHsKLSAgICBpZiAodmlldyA9PSBOVUxMKSByZXR1cm4gMDsgLyogWFhYIHdoeSBub3QgLTE/ICovCisgICAgaWYgKHZpZXcgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAiUHlCdWZmZXJfRmlsbEluZm86IHZpZXc9PU5VTEwgYXJndW1lbnQgaXMgb2Jzb2xldGUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKwogICAgIGlmICgoKGZsYWdzICYgUHlCVUZfV1JJVEFCTEUpID09IFB5QlVGX1dSSVRBQkxFKSAmJgogICAgICAgICAocmVhZG9ubHkgPT0gMSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLApAQCAtNjYwLDggKzY5MCw5IEBACiAgICAgUHlfREVDUkVGKG1ldGgpOwogCiAgICAgaWYgKHJlc3VsdCAmJiAhUHlVbmljb2RlX0NoZWNrKHJlc3VsdCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJfX2Zvcm1hdF9fIG1ldGhvZCBkaWQgbm90IHJldHVybiBzdHJpbmciKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAiX19mb3JtYXRfXyBtdXN0IHJldHVybiBhIHN0ciwgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgUHlfVFlQRShyZXN1bHQpLT50cF9uYW1lKTsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIHJlc3VsdCA9IE5VTEw7CiAgICAgICAgIGdvdG8gZG9uZTsKQEAgLTkwNSw2ICs5MzYsMTIgQEAKIH0KIAogUHlPYmplY3QgKgorUHlOdW1iZXJfTWF0cml4TXVsdGlwbHkoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3KQoreworICAgIHJldHVybiBiaW5hcnlfb3AodiwgdywgTkJfU0xPVChuYl9tYXRyaXhfbXVsdGlwbHkpLCAiQCIpOworfQorCitQeU9iamVjdCAqCiBQeU51bWJlcl9GbG9vckRpdmlkZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpCiB7CiAgICAgcmV0dXJuIGJpbmFyeV9vcCh2LCB3LCBOQl9TTE9UKG5iX2Zsb29yX2RpdmlkZSksICIvLyIpOwpAQCAtOTg1LDYgKzEwMjIsNyBAQAogSU5QTEFDRV9CSU5PUChQeU51bWJlcl9JblBsYWNlTHNoaWZ0LCBuYl9pbnBsYWNlX2xzaGlmdCwgbmJfbHNoaWZ0LCAiPDw9IikKIElOUExBQ0VfQklOT1AoUHlOdW1iZXJfSW5QbGFjZVJzaGlmdCwgbmJfaW5wbGFjZV9yc2hpZnQsIG5iX3JzaGlmdCwgIj4+PSIpCiBJTlBMQUNFX0JJTk9QKFB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdCwgbmJfaW5wbGFjZV9zdWJ0cmFjdCwgbmJfc3VidHJhY3QsICItPSIpCitJTlBMQUNFX0JJTk9QKFB5TnVtYmVyX0luTWF0cml4TXVsdGlwbHksIG5iX2lucGxhY2VfbWF0cml4X211bHRpcGx5LCBuYl9tYXRyaXhfbXVsdGlwbHksICJAPSIpCiAKIFB5T2JqZWN0ICoKIFB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpCkBAIC0xMDUxLDYgKzEwODksMTMgQEAKIH0KIAogUHlPYmplY3QgKgorUHlOdW1iZXJfSW5QbGFjZU1hdHJpeE11bHRpcGx5KFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdykKK3sKKyAgICByZXR1cm4gYmluYXJ5X2lvcCh2LCB3LCBOQl9TTE9UKG5iX2lucGxhY2VfbWF0cml4X211bHRpcGx5KSwKKyAgICAgICAgICAgICAgICAgICAgICBOQl9TTE9UKG5iX21hdHJpeF9tdWx0aXBseSksICJAPSIpOworfQorCitQeU9iamVjdCAqCiBQeU51bWJlcl9JblBsYWNlUmVtYWluZGVyKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdykKIHsKICAgICByZXR1cm4gYmluYXJ5X2lvcCh2LCB3LCBOQl9TTE9UKG5iX2lucGxhY2VfcmVtYWluZGVyKSwKQEAgLTIwNDYsMzIgKzIwOTEsODIgQEAKICAgICByZXR1cm4gUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMobywgYSwgTlVMTCk7CiB9CiAKK1B5T2JqZWN0KgorX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICpyZXN1bHQsIGNvbnN0IGNoYXIgKndoZXJlKQoreworICAgIGludCBlcnJfb2NjdXJyZWQgPSAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKTsKKworICAgIGFzc2VydCgoZnVuYyAhPSBOVUxMKSBeICh3aGVyZSAhPSBOVUxMKSk7CisKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgaWYgKCFlcnJfb2NjdXJyZWQpIHsKKyAgICAgICAgICAgIGlmIChmdW5jKQorICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVSIHJldHVybmVkIE5VTEwgd2l0aG91dCBzZXR0aW5nIGFuIGVycm9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgcmV0dXJuZWQgTlVMTCB3aXRob3V0IHNldHRpbmcgYW4gZXJyb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSk7CisjaWZkZWYgUHlfREVCVUcKKyAgICAgICAgICAgIC8qIEVuc3VyZSB0aGF0IHRoZSBidWcgaXMgY2F0Y2hlZCBpbiBkZWJ1ZyBtb2RlICovCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJhIGZ1bmN0aW9uIHJldHVybmVkIE5VTEwgd2l0aG91dCBzZXR0aW5nIGFuIGVycm9yIik7CisjZW5kaWYKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoZXJyX29jY3VycmVkKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7CisgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOworCisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKworICAgICAgICAgICAgaWYgKGZ1bmMpCisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJVIgcmV0dXJuZWQgYSByZXN1bHQgd2l0aCBhbiBlcnJvciBzZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyByZXR1cm5lZCBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlKTsKKyAgICAgICAgICAgIF9QeUVycl9DaGFpbkV4Y2VwdGlvbnMoZXhjLCB2YWwsIHRiKTsKKyNpZmRlZiBQeV9ERUJVRworICAgICAgICAgICAgLyogRW5zdXJlIHRoYXQgdGhlIGJ1ZyBpcyBjYXRjaGVkIGluIGRlYnVnIG1vZGUgKi8KKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImEgZnVuY3Rpb24gcmV0dXJuZWQgYSByZXN1bHQgd2l0aCBhbiBlcnJvciBzZXQiKTsKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogUHlPYmplY3QgKgogUHlPYmplY3RfQ2FsbChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZywgUHlPYmplY3QgKmt3KQogewogICAgIHRlcm5hcnlmdW5jIGNhbGw7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmICgoY2FsbCA9IGZ1bmMtPm9iX3R5cGUtPnRwX2NhbGwpICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICAgICAgaWYgKFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgiIHdoaWxlIGNhbGxpbmcgYSBQeXRob24gb2JqZWN0IikpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzdWx0ID0gKCpjYWxsKShmdW5jLCBhcmcsIGt3KTsKLSAgICAgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7Ci0jaWZkZWYgTkRFQlVHCi0gICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgICAgIFB5RXhjX1N5c3RlbUVycm9yLAotICAgICAgICAgICAgICAgICJOVUxMIHJlc3VsdCB3aXRob3V0IGVycm9yIGluIFB5T2JqZWN0X0NhbGwiKTsKLSAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgYXNzZXJ0KChyZXN1bHQgIT0gTlVMTCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICB8fCAocmVzdWx0ID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgLyogUHlPYmplY3RfQ2FsbCgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQsCisgICAgICAgYmVjYXVzZSBpdCBtYXkgY2xlYXIgaXQgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIGFuZCBzbyB0aGUKKyAgICAgICBjYWxsZXIgbG9zZXMgaXRzIGV4Y2VwdGlvbiAqLworICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CisKKyAgICBjYWxsID0gZnVuYy0+b2JfdHlwZS0+dHBfY2FsbDsKKyAgICBpZiAoY2FsbCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICInJS4yMDBzJyBvYmplY3QgaXMgbm90IGNhbGxhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgIGZ1bmMtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgY2FsbGFibGUiLAotICAgICAgICAgICAgICAgICBmdW5jLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoIiB3aGlsZSBjYWxsaW5nIGEgUHl0aG9uIG9iamVjdCIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlc3VsdCA9ICgqY2FsbCkoZnVuYywgYXJnLCBrdyk7CisKKyAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKKworICAgIHJldHVybiBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jLCByZXN1bHQsIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QqCkBAIC0yNTEwLDYgKzI2MDUsMTEgQEAKICAgICBpZiAoUHlfVFlQRShpbnN0KSA9PSAoUHlUeXBlT2JqZWN0ICopY2xzKQogICAgICAgICByZXR1cm4gMTsKIAorICAgIC8qIFdlIGtub3cgd2hhdCB0eXBlJ3MgX19pbnN0YW5jZWNoZWNrX18gZG9lcy4gKi8KKyAgICBpZiAoUHlUeXBlX0NoZWNrRXhhY3QoY2xzKSkgeworICAgICAgICByZXR1cm4gcmVjdXJzaXZlX2lzaW5zdGFuY2UoaW5zdCwgY2xzKTsKKyAgICB9CisKICAgICBpZiAoUHlUdXBsZV9DaGVjayhjbHMpKSB7CiAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgUHlfc3NpemVfdCBuOwpAQCAtMjU0OCw2ICsyNjQ4LDcgQEAKICAgICB9CiAgICAgZWxzZSBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIC0xOworICAgIC8qIFByb2JhYmx5IG5ldmVyIHJlYWNoZWQgYW55bW9yZS4gKi8KICAgICByZXR1cm4gcmVjdXJzaXZlX2lzaW5zdGFuY2UoaW5zdCwgY2xzKTsKIH0KIApAQCAtMjU3NSw2ICsyNjc2LDE0IEBACiAgICAgX1B5X0lERU5USUZJRVIoX19zdWJjbGFzc2NoZWNrX18pOwogICAgIFB5T2JqZWN0ICpjaGVja2VyOwogCisgICAgLyogV2Uga25vdyB3aGF0IHR5cGUncyBfX3N1YmNsYXNzY2hlY2tfXyBkb2VzLiAqLworICAgIGlmIChQeVR5cGVfQ2hlY2tFeGFjdChjbHMpKSB7CisgICAgICAgIC8qIFF1aWNrIHRlc3QgZm9yIGFuIGV4YWN0IG1hdGNoICovCisgICAgICAgIGlmIChkZXJpdmVkID09IGNscykKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICByZXR1cm4gcmVjdXJzaXZlX2lzc3ViY2xhc3MoZGVyaXZlZCwgY2xzKTsKKyAgICB9CisKICAgICBpZiAoUHlUdXBsZV9DaGVjayhjbHMpKSB7CiAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgUHlfc3NpemVfdCBuOwpAQCAtMjYxMyw2ICsyNzIyLDcgQEAKICAgICB9CiAgICAgZWxzZSBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIC0xOworICAgIC8qIFByb2JhYmx5IG5ldmVyIHJlYWNoZWQgYW55bW9yZS4gKi8KICAgICByZXR1cm4gcmVjdXJzaXZlX2lzc3ViY2xhc3MoZGVyaXZlZCwgY2xzKTsKIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYyBiL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMKaW5kZXggMTVjNTI1Yy4uYzU5YWQyNCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYworKysgYi9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jCkBAIC00LDYgKzQsMTMgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJieXRlc19tZXRob2RzLmgiCisjaW5jbHVkZSAiYnl0ZXNvYmplY3QuaCIKKyNpbmNsdWRlICJweXN0cmhleC5oIgorCisvKltjbGluaWMgaW5wdXRdCitjbGFzcyBieXRlYXJyYXkgIlB5Qnl0ZUFycmF5T2JqZWN0ICoiICImUHlCeXRlQXJyYXlfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTU1MzViNzdjMzdhMTE5ZTBdKi8KIAogY2hhciBfUHlCeXRlQXJyYXlfZW1wdHlfc3RyaW5nW10gPSAiIjsKIApAQCAtNTQsMTggKzYxLDE3IEBACiBzdGF0aWMgaW50CiBieXRlYXJyYXlfZ2V0YnVmZmVyKFB5Qnl0ZUFycmF5T2JqZWN0ICpvYmosIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQogewotICAgIGludCByZXQ7CiAgICAgdm9pZCAqcHRyOwogICAgIGlmICh2aWV3ID09IE5VTEwpIHsKLSAgICAgICAgb2JqLT5vYl9leHBvcnRzKys7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAiYnl0ZWFycmF5X2dldGJ1ZmZlcjogdmlldz09TlVMTCBhcmd1bWVudCBpcyBvYnNvbGV0ZSIpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHB0ciA9ICh2b2lkICopIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhvYmopOwotICAgIHJldCA9IFB5QnVmZmVyX0ZpbGxJbmZvKHZpZXcsIChQeU9iamVjdCopb2JqLCBwdHIsIFB5X1NJWkUob2JqKSwgMCwgZmxhZ3MpOwotICAgIGlmIChyZXQgPj0gMCkgewotICAgICAgICBvYmotPm9iX2V4cG9ydHMrKzsKLSAgICB9Ci0gICAgcmV0dXJuIHJldDsKKyAgICAvKiBjYW5ub3QgZmFpbCBpZiB2aWV3ICE9IE5VTEwgYW5kIHJlYWRvbmx5ID09IDAgKi8KKyAgICAodm9pZClQeUJ1ZmZlcl9GaWxsSW5mbyh2aWV3LCAoUHlPYmplY3QqKW9iaiwgcHRyLCBQeV9TSVpFKG9iaiksIDAsIGZsYWdzKTsKKyAgICBvYmotPm9iX2V4cG9ydHMrKzsKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTg1LDYgKzkxLDggQEAKICAgICByZXR1cm4gMTsKIH0KIAorI2luY2x1ZGUgImNsaW5pYy9ieXRlYXJyYXlvYmplY3QuYy5oIgorCiAvKiBEaXJlY3QgQVBJIGZ1bmN0aW9ucyAqLwogCiBQeU9iamVjdCAqCkBAIC0yNzEsNiArMjc5LDMxIEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9mb3JtYXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpieXRlc19pbiwgKmJ5dGVzX291dCwgKnJlczsKKyAgICBjaGFyICpieXRlc3RyaW5nOworCisgICAgaWYgKHNlbGYgPT0gTlVMTCB8fCAhUHlCeXRlQXJyYXlfQ2hlY2soc2VsZikgfHwgYXJncyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgYnl0ZXN0cmluZyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKKyAgICBieXRlc19pbiA9IFB5Qnl0ZXNfRnJvbVN0cmluZyhieXRlc3RyaW5nKTsKKyAgICBpZiAoYnl0ZXNfaW4gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYnl0ZXNfb3V0ID0gX1B5Qnl0ZXNfRm9ybWF0KGJ5dGVzX2luLCBhcmdzKTsKKyAgICBQeV9ERUNSRUYoYnl0ZXNfaW4pOworICAgIGlmIChieXRlc19vdXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzID0gUHlCeXRlQXJyYXlfRnJvbU9iamVjdChieXRlc19vdXQpOworICAgIFB5X0RFQ1JFRihieXRlc19vdXQpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHJlczsKK30KKwogLyogRnVuY3Rpb25zIHN0dWZmZWQgaW50byB0aGUgdHlwZSBvYmplY3QgKi8KIAogc3RhdGljIFB5X3NzaXplX3QKQEAgLTQyNSw3ICs0NTgsOSBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYnl0ZWFycmF5IGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyIpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImJ5dGVhcnJheSBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMgb3Igc2xpY2VzLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoaW5kZXgpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogfQpAQCAtNjMwLDcgKzY2NSw5IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJieXRlYXJyYXkgaW5kaWNlcyBtdXN0IGJlIGludGVnZXIiKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJieXRlYXJyYXkgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShpbmRleCktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCkBAIC0xMTEwLDcgKzExNDcsNyBAQAogICAgIGNoYXIgYnl0ZTsKICAgICBQeV9idWZmZXIgc3ViYnVmOwogICAgIGNvbnN0IGNoYXIgKnN1YjsKLSAgICBQeV9zc2l6ZV90IHN1Yl9sZW47CisgICAgUHlfc3NpemVfdCBsZW4sIHN1Yl9sZW47CiAgICAgUHlfc3NpemVfdCBzdGFydD0wLCBlbmQ9UFlfU1NJWkVfVF9NQVg7CiAgICAgUHlfc3NpemVfdCByZXM7CiAKQEAgLTExMjksMTUgKzExNjYsMzQgQEAKICAgICAgICAgc3ViID0gJmJ5dGU7CiAgICAgICAgIHN1Yl9sZW4gPSAxOwogICAgIH0KKyAgICBsZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKIAotICAgIGlmIChkaXIgPiAwKQotICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKLSAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksCi0gICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwotICAgIGVsc2UKLSAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAotICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwKLSAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7CisgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKKyAgICBpZiAoZW5kIC0gc3RhcnQgPCBzdWJfbGVuKQorICAgICAgICByZXMgPSAtMTsKKyAgICBlbHNlIGlmIChzdWJfbGVuID09IDEKKyNpZm5kZWYgSEFWRV9NRU1SQ0hSCisgICAgICAgICAgICAmJiBkaXIgPiAwCisjZW5kaWYKKyAgICApIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGUgPSAqc3ViOworICAgICAgICBpbnQgbW9kZSA9IChkaXIgPiAwKSA/IEZBU1RfU0VBUkNIIDogRkFTVF9SU0VBUkNIOworICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmFzdHNlYXJjaF9tZW1jaHJfMWNoYXIoCisgICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZikgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICBuZWVkbGUsIG5lZWRsZSwgbW9kZSk7CisgICAgICAgIGlmIChyZXMgPj0gMCkKKyAgICAgICAgICAgIHJlcyArPSBzdGFydDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChkaXIgPiAwKQorICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCisgICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBsZW4sCisgICAgICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAorICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgbGVuLAorICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7CisgICAgfQogCiAgICAgaWYgKHN1Ym9iaikKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViYnVmKTsKQEAgLTEyMTAsMjYgKzEyNjYsMzQgQEAKICAgICByZXR1cm4gY291bnRfb2JqOwogfQogCi1QeURvY19TVFJWQVIoY2xlYXJfX2RvY19fLAotIkIuY2xlYXIoKSAtPiBOb25lXG5cCi1cblwKLVJlbW92ZSBhbGwgaXRlbXMgZnJvbSBCLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LmNsZWFyCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQorCitSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGJ5dGVhcnJheS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9jbGVhcihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKK2J5dGVhcnJheV9jbGVhcl9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg1YzJmZTZhZWRlMDk1NmMgaW5wdXQ9ZTUyNGZkMzMwYWJjZGMxOF0qLwogewogICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUoKFB5T2JqZWN0ICopc2VsZiwgMCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGNvcHlfX2RvY19fLAotIkIuY29weSgpIC0+IGJ5dGVhcnJheVxuXAotXG5cCi1SZXR1cm4gYSBjb3B5IG9mIEIuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkuY29weQorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKworUmV0dXJuIGEgY29weSBvZiBCLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2NvcHkoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCitieXRlYXJyYXlfY29weV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY4Y2ZiY2ZlZDQ4NGMxMzIgaW5wdXQ9NmQ1ZDI5NzVhYTBmMzNmM10qLwogewogICAgIHJldHVybiBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShQeUJ5dGVBcnJheV9BU19TVFJJTkcoKFB5T2JqZWN0ICopc2VsZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpKTsKQEAgLTE0NDgsMzYgKzE1MTIsNDIgQEAKIH0KIAogCi1QeURvY19TVFJWQVIodHJhbnNsYXRlX19kb2NfXywKLSJCLnRyYW5zbGF0ZSh0YWJsZVssIGRlbGV0ZWNoYXJzXSkgLT4gYnl0ZWFycmF5XG5cCi1cblwKLVJldHVybiBhIGNvcHkgb2YgQiwgd2hlcmUgYWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZVxuXAotb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlY2hhcnMgYXJlIHJlbW92ZWQsIGFuZCB0aGUgcmVtYWluaW5nXG5cCi1jaGFyYWN0ZXJzIGhhdmUgYmVlbiBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb25cblwKLXRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkudHJhbnNsYXRlCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQorICAgIHRhYmxlOiBvYmplY3QKKyAgICAgICAgVHJhbnNsYXRpb24gdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni4KKyAgICBbCisgICAgZGVsZXRlY2hhcnM6IG9iamVjdAorICAgIF0KKyAgICAvCisKK1JldHVybiBhIGNvcHkgd2l0aCBlYWNoIGNoYXJhY3RlciBtYXBwZWQgYnkgdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLgorCitBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZWNoYXJzIGFyZSByZW1vdmVkLgorVGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfdHJhbnNsYXRlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVhcnJheV90cmFuc2xhdGVfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBncm91cF9yaWdodF8xLCBQeU9iamVjdCAqZGVsZXRlY2hhcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmJlYmM4NmE5YTFmZjA4MyBpbnB1dD1iNzQ5YWQ4NWY0ODYwODI0XSovCiB7CiAgICAgY2hhciAqaW5wdXQsICpvdXRwdXQ7Ci0gICAgY29uc3QgY2hhciAqdGFibGU7CisgICAgY29uc3QgY2hhciAqdGFibGVfY2hhcnM7CiAgICAgUHlfc3NpemVfdCBpLCBjOwogICAgIFB5T2JqZWN0ICppbnB1dF9vYmogPSAoUHlPYmplY3QqKXNlbGY7CiAgICAgY29uc3QgY2hhciAqb3V0cHV0X3N0YXJ0OwogICAgIFB5X3NzaXplX3QgaW5sZW47CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgaW50IHRyYW5zX3RhYmxlWzI1Nl07Ci0gICAgUHlPYmplY3QgKnRhYmxlb2JqID0gTlVMTCwgKmRlbG9iaiA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIHZ0YWJsZSwgdmRlbDsKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRyYW5zbGF0ZSIsIDEsIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFibGVvYmosICZkZWxvYmopKQotICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHRhYmxlb2JqID09IFB5X05vbmUpIHsKKyAgICBpZiAodGFibGUgPT0gUHlfTm9uZSkgeworICAgICAgICB0YWJsZV9jaGFycyA9IE5VTEw7CiAgICAgICAgIHRhYmxlID0gTlVMTDsKLSAgICAgICAgdGFibGVvYmogPSBOVUxMOwotICAgIH0gZWxzZSBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHRhYmxlb2JqLCAmdnRhYmxlLCBQeUJVRl9TSU1QTEUpICE9IDApIHsKKyAgICB9IGVsc2UgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih0YWJsZSwgJnZ0YWJsZSwgUHlCVUZfU0lNUExFKSAhPSAwKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICh2dGFibGUubGVuICE9IDI1NikgewpAQCAtMTQ4NiwxMiArMTU1NiwxMiBAQAogICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdnRhYmxlKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHRhYmxlID0gKGNvbnN0IGNoYXIqKXZ0YWJsZS5idWY7CisgICAgICAgIHRhYmxlX2NoYXJzID0gKGNvbnN0IGNoYXIqKXZ0YWJsZS5idWY7CiAgICAgfQogCi0gICAgaWYgKGRlbG9iaiAhPSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoZGVsb2JqLCAmdmRlbCwgUHlCVUZfU0lNUExFKSAhPSAwKSB7Ci0gICAgICAgICAgICBpZiAodGFibGVvYmogIT0gTlVMTCkKKyAgICBpZiAoZGVsZXRlY2hhcnMgIT0gTlVMTCkgeworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGRlbGV0ZWNoYXJzLCAmdmRlbCwgUHlCVUZfU0lNUExFKSAhPSAwKSB7CisgICAgICAgICAgICBpZiAodGFibGUgIT0gTlVMTCkKICAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2dGFibGUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTE1MDgsMjEgKzE1NzgsMjEgQEAKICAgICBvdXRwdXRfc3RhcnQgPSBvdXRwdXQgPSBQeUJ5dGVBcnJheV9Bc1N0cmluZyhyZXN1bHQpOwogICAgIGlucHV0ID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKGlucHV0X29iaik7CiAKLSAgICBpZiAodmRlbC5sZW4gPT0gMCAmJiB0YWJsZSAhPSBOVUxMKSB7CisgICAgaWYgKHZkZWwubGVuID09IDAgJiYgdGFibGVfY2hhcnMgIT0gTlVMTCkgewogICAgICAgICAvKiBJZiBubyBkZWxldGlvbnMgYXJlIHJlcXVpcmVkLCB1c2UgZmFzdGVyIGNvZGUgKi8KICAgICAgICAgZm9yIChpID0gaW5sZW47IC0taSA+PSAwOyApIHsKICAgICAgICAgICAgIGMgPSBQeV9DSEFSTUFTSygqaW5wdXQrKyk7Ci0gICAgICAgICAgICAqb3V0cHV0KysgPSB0YWJsZVtjXTsKKyAgICAgICAgICAgICpvdXRwdXQrKyA9IHRhYmxlX2NoYXJzW2NdOwogICAgICAgICB9CiAgICAgICAgIGdvdG8gZG9uZTsKICAgICB9CiAKLSAgICBpZiAodGFibGUgPT0gTlVMTCkgeworICAgIGlmICh0YWJsZV9jaGFycyA9PSBOVUxMKSB7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKICAgICAgICAgICAgIHRyYW5zX3RhYmxlW2ldID0gUHlfQ0hBUk1BU0soaSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQotICAgICAgICAgICAgdHJhbnNfdGFibGVbaV0gPSBQeV9DSEFSTUFTSyh0YWJsZVtpXSk7CisgICAgICAgICAgICB0cmFuc190YWJsZVtpXSA9IFB5X0NIQVJNQVNLKHRhYmxlX2NoYXJzW2ldKTsKICAgICB9CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgdmRlbC5sZW47IGkrKykKQEAgLTE1NDIsMTggKzE2MTIsMzYgQEAKICAgICAgICAgfQogCiBkb25lOgotICAgIGlmICh0YWJsZW9iaiAhPSBOVUxMKQorICAgIGlmICh0YWJsZSAhPSBOVUxMKQogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2dGFibGUpOwotICAgIGlmIChkZWxvYmogIT0gTlVMTCkKKyAgICBpZiAoZGVsZXRlY2hhcnMgIT0gTlVMTCkKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmRlbCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogCisvKltjbGluaWMgaW5wdXRdCisKK0BzdGF0aWNtZXRob2QKK2J5dGVhcnJheS5tYWtldHJhbnMKKworICAgIGZybTogUHlfYnVmZmVyCisgICAgdG86IFB5X2J1ZmZlcgorICAgIC8KKworUmV0dXJuIGEgdHJhbnNsYXRpb24gdGFibGUgdXNlYWJsZSBmb3IgdGhlIGJ5dGVzIG9yIGJ5dGVhcnJheSB0cmFuc2xhdGUgbWV0aG9kLgorCitUaGUgcmV0dXJuZWQgdGFibGUgd2lsbCBiZSBvbmUgd2hlcmUgZWFjaCBieXRlIGluIGZybSBpcyBtYXBwZWQgdG8gdGhlIGJ5dGUgYXQKK3RoZSBzYW1lIHBvc2l0aW9uIGluIHRvLgorCitUaGUgYnl0ZXMgb2JqZWN0cyBmcm0gYW5kIHRvIG11c3QgYmUgb2YgdGhlIHNhbWUgbGVuZ3RoLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X21ha2V0cmFucyhQeU9iamVjdCAqbnVsbCwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfbWFrZXRyYW5zX2ltcGwoUHlfYnVmZmVyICpmcm0sIFB5X2J1ZmZlciAqdG8pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWRmMjY3ZDk5ZjU2YjE1ZSBpbnB1dD01OTI1YTgxZDJmYmJmMTUxXSovCiB7Ci0gICAgICAgIHJldHVybiBfUHlfYnl0ZXNfbWFrZXRyYW5zKGFyZ3MpOworICAgIHJldHVybiBfUHlfYnl0ZXNfbWFrZXRyYW5zKGZybSwgdG8pOwogfQogCiAKQEAgLTIwNDQsNjEgKzIxMzIsNjMgQEAKIH0KIAogCi1QeURvY19TVFJWQVIocmVwbGFjZV9fZG9jX18sCi0iQi5yZXBsYWNlKG9sZCwgbmV3WywgY291bnRdKSAtPiBieXRlYXJyYXlcblwKLVxuXAotUmV0dXJuIGEgY29weSBvZiBCIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnNlY3Rpb25cblwKLW9sZCByZXBsYWNlZCBieSBuZXcuICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgY291bnQgaXNcblwKLWdpdmVuLCBvbmx5IHRoZSBmaXJzdCBjb3VudCBvY2N1cnJlbmNlcyBhcmUgcmVwbGFjZWQuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkucmVwbGFjZQorCisgICAgb2xkOiBQeV9idWZmZXIKKyAgICBuZXc6IFB5X2J1ZmZlcgorICAgIGNvdW50OiBQeV9zc2l6ZV90ID0gLTEKKyAgICAgICAgTWF4aW11bSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgdG8gcmVwbGFjZS4KKyAgICAgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyByZXBsYWNlIGFsbCBvY2N1cnJlbmNlcy4KKyAgICAvCisKK1JldHVybiBhIGNvcHkgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nIG9sZCByZXBsYWNlZCBieSBuZXcuCisKK0lmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBjb3VudCBpcyBnaXZlbiwgb25seSB0aGUgZmlyc3QgY291bnQgb2NjdXJyZW5jZXMgYXJlCityZXBsYWNlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9yZXBsYWNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVhcnJheV9yZXBsYWNlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqb2xkLAorICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKm5ldywgUHlfc3NpemVfdCBjb3VudCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMzk4ODRjNGRjNTk0MTJhIGlucHV0PWFhMzc5ZDk4ODYzN2M3ZmJdKi8KIHsKLSAgICBQeU9iamVjdCAqcmVzOwotICAgIFB5X2J1ZmZlciBvbGQgPSB7TlVMTCwgTlVMTH07Ci0gICAgUHlfYnVmZmVyIG5ldyA9IHtOVUxMLCBOVUxMfTsKLSAgICBQeV9zc2l6ZV90IGNvdW50ID0gLTE7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSp8bjpyZXBsYWNlIiwgJm9sZCwgJm5ldywgJmNvdW50KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXMgPSAoUHlPYmplY3QgKilyZXBsYWNlKChQeUJ5dGVBcnJheU9iamVjdCAqKSBzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKilvbGQuYnVmLCBvbGQubGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKiluZXcuYnVmLCBuZXcubGVuLCBjb3VudCk7Ci0KLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZvbGQpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJm5ldyk7Ci0gICAgcmV0dXJuIHJlczsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVwbGFjZSgoUHlCeXRlQXJyYXlPYmplY3QgKikgc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQtPmJ1Ziwgb2xkLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3LT5idWYsIG5ldy0+bGVuLCBjb3VudCk7CiB9CiAKLVB5RG9jX1NUUlZBUihzcGxpdF9fZG9jX18sCi0iQi5zcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpIC0+IGxpc3Qgb2YgYnl0ZWFycmF5c1xuXAotXG5cCi1SZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiBCLCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlci5cblwKLUlmIHNlcCBpcyBub3QgZ2l2ZW4sIEIgaXMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzXG5cCi0oc3BhY2UsIHRhYiwgcmV0dXJuLCBuZXdsaW5lLCBmb3JtZmVlZCwgdmVydGljYWwgdGFiKS5cblwKLUlmIG1heHNwbGl0IGlzIGdpdmVuLCBhdCBtb3N0IG1heHNwbGl0IHNwbGl0cyBhcmUgZG9uZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5zcGxpdAorCisgICAgc2VwOiBvYmplY3QgPSBOb25lCisgICAgICAgIFRoZSBkZWxpbWl0ZXIgYWNjb3JkaW5nIHdoaWNoIHRvIHNwbGl0IHRoZSBieXRlYXJyYXkuCisgICAgICAgIE5vbmUgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBzcGxpdCBvbiBBU0NJSSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMKKyAgICAgICAgKHNwYWNlLCB0YWIsIHJldHVybiwgbmV3bGluZSwgZm9ybWZlZWQsIHZlcnRpY2FsIHRhYikuCisgICAgbWF4c3BsaXQ6IFB5X3NzaXplX3QgPSAtMQorICAgICAgICBNYXhpbXVtIG51bWJlciBvZiBzcGxpdHMgdG8gZG8uCisgICAgICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgbm8gbGltaXQuCisKK1JldHVybiBhIGxpc3Qgb2YgdGhlIHNlY3Rpb25zIGluIHRoZSBieXRlYXJyYXksIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3NwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitieXRlYXJyYXlfc3BsaXRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwKKyAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4c3BsaXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODMzZTJjZjM4NWQ5YTA0ZCBpbnB1dD0yNGY4MjY2OWY0MWJmNTIzXSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzZXAiLCAibWF4c3BsaXQiLCAwfTsKICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBuOwotICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKICAgICBjb25zdCBjaGFyICpzID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwotICAgIFB5T2JqZWN0ICpsaXN0LCAqc3Vib2JqID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqbGlzdDsKICAgICBQeV9idWZmZXIgdnN1YjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T246c3BsaXQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN1Ym9iaiwgJm1heHNwbGl0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG1heHNwbGl0IDwgMCkKICAgICAgICAgbWF4c3BsaXQgPSBQWV9TU0laRV9UX01BWDsKIAotICAgIGlmIChzdWJvYmogPT0gUHlfTm9uZSkKKyAgICBpZiAoc2VwID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRfd2hpdGVzcGFjZSgoUHlPYmplY3QqKSBzZWxmLCBzLCBsZW4sIG1heHNwbGl0KTsKIAotICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vib2JqLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc2VwLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzdWIgPSB2c3ViLmJ1ZjsKICAgICBuID0gdnN1Yi5sZW47CkBAIC0yMTEwLDE5ICsyMjAwLDMwIEBACiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLVB5RG9jX1NUUlZBUihwYXJ0aXRpb25fX2RvY19fLAotIkIucGFydGl0aW9uKHNlcCkgLT4gKGhlYWQsIHNlcCwgdGFpbClcblwKLVxuXAotU2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiBCLCBhbmQgcmV0dXJuIHRoZSBwYXJ0IGJlZm9yZSBpdCxcblwKLXRoZSBzZXBhcmF0b3IgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgaXQuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuXAotZm91bmQsIHJldHVybnMgQiBhbmQgdHdvIGVtcHR5IGJ5dGVhcnJheSBvYmplY3RzLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LnBhcnRpdGlvbgorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKyAgICBzZXA6IG9iamVjdAorICAgIC8KKworUGFydGl0aW9uIHRoZSBieXRlYXJyYXkgaW50byB0aHJlZSBwYXJ0cyB1c2luZyB0aGUgZ2l2ZW4gc2VwYXJhdG9yLgorCitUaGlzIHdpbGwgc2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiB0aGUgYnl0ZWFycmF5LiBJZiB0aGUgc2VwYXJhdG9yIGlzCitmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlCitzZXBhcmF0b3IgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgaXQuCisKK0lmIHRoZSBzZXBhcmF0b3IgaXMgbm90IGZvdW5kLCByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBvcmlnaW5hbAorYnl0ZWFycmF5IG9iamVjdCBhbmQgdHdvIGVtcHR5IGJ5dGVhcnJheSBvYmplY3RzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3BhcnRpdGlvbihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcF9vYmopCitieXRlYXJyYXlfcGFydGl0aW9uKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1ZDI1MjVkZGQzNWY5NTcgaW5wdXQ9N2Q3ZmUzN2IxNjk2ZDUwNl0qLwogewogICAgIFB5T2JqZWN0ICpieXRlc2VwLCAqcmVzdWx0OwogCi0gICAgYnl0ZXNlcCA9IFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Qoc2VwX29iaik7CisgICAgYnl0ZXNlcCA9IFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Qoc2VwKTsKICAgICBpZiAoISBieXRlc2VwKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMjEzNywyMCArMjIzOCwzMCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihycGFydGl0aW9uX19kb2NfXywKLSJCLnJwYXJ0aXRpb24oc2VwKSAtPiAoaGVhZCwgc2VwLCB0YWlsKVxuXAotXG5cCi1TZWFyY2ggZm9yIHRoZSBzZXBhcmF0b3Igc2VwIGluIEIsIHN0YXJ0aW5nIGF0IHRoZSBlbmQgb2YgQixcblwKLWFuZCByZXR1cm4gdGhlIHBhcnQgYmVmb3JlIGl0LCB0aGUgc2VwYXJhdG9yIGl0c2VsZiwgYW5kIHRoZVxuXAotcGFydCBhZnRlciBpdC4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90IGZvdW5kLCByZXR1cm5zIHR3byBlbXB0eVxuXAotYnl0ZWFycmF5IG9iamVjdHMgYW5kIEIuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkucnBhcnRpdGlvbgorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKyAgICBzZXA6IG9iamVjdAorICAgIC8KKworUGFydGl0aW9uIHRoZSBieXRlcyBpbnRvIHRocmVlIHBhcnRzIHVzaW5nIHRoZSBnaXZlbiBzZXBhcmF0b3IuCisKK1RoaXMgd2lsbCBzZWFyY2ggZm9yIHRoZSBzZXBhcmF0b3Igc2VwIGluIHRoZSBieXRlYXJyYXksIHN0YXJ0aW5nIGFuZCB0aGUgZW5kLgorSWYgdGhlIHNlcGFyYXRvciBpcyBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlCitzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3IgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgaXQuCisKK0lmIHRoZSBzZXBhcmF0b3IgaXMgbm90IGZvdW5kLCByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBieXRlYXJyYXkKK29iamVjdHMgYW5kIHRoZSBvcmlnaW5hbCBieXRlYXJyYXkgb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3JwYXJ0aXRpb24oUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXBfb2JqKQorYnl0ZWFycmF5X3JwYXJ0aXRpb24oUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXApCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDQwZGUzYzk0MjYxMTVlOCBpbnB1dD05YjhjZDU0MGMxYjc1ODUzXSovCiB7CiAgICAgUHlPYmplY3QgKmJ5dGVzZXAsICpyZXN1bHQ7CiAKLSAgICBieXRlc2VwID0gUHlCeXRlQXJyYXlfRnJvbU9iamVjdChzZXBfb2JqKTsKKyAgICBieXRlc2VwID0gUHlCeXRlQXJyYXlfRnJvbU9iamVjdChzZXApOwogICAgIGlmICghIGJ5dGVzZXApCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0yMTY1LDM1ICsyMjc2LDMxIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlEb2NfU1RSVkFSKHJzcGxpdF9fZG9jX18sCi0iQi5yc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIGJ5dGVhcnJheXNcblwKLVxuXAotUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gQiwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIsXG5cCi1zdGFydGluZyBhdCB0aGUgZW5kIG9mIEIgYW5kIHdvcmtpbmcgdG8gdGhlIGZyb250LlxuXAotSWYgc2VwIGlzIG5vdCBnaXZlbiwgQiBpcyBzcGxpdCBvbiBBU0NJSSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnNcblwKLShzcGFjZSwgdGFiLCByZXR1cm4sIG5ld2xpbmUsIGZvcm1mZWVkLCB2ZXJ0aWNhbCB0YWIpLlxuXAotSWYgbWF4c3BsaXQgaXMgZ2l2ZW4sIGF0IG1vc3QgbWF4c3BsaXQgc3BsaXRzIGFyZSBkb25lLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LnJzcGxpdCA9IGJ5dGVhcnJheS5zcGxpdAorCitSZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiB0aGUgYnl0ZWFycmF5LCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlci4KKworU3BsaXR0aW5nIGlzIGRvbmUgc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgYnl0ZWFycmF5IGFuZCB3b3JraW5nIHRvIHRoZSBmcm9udC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9yc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK2J5dGVhcnJheV9yc3BsaXRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwKKyAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heHNwbGl0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE1NWUwYjVhMDNjYjYxOTAgaW5wdXQ9YTY4Mjg2ZTRkZDY5MmZmZV0qLwogewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgMH07CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgbjsKLSAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAgICAgY29uc3QgY2hhciAqcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgKnN1YjsKLSAgICBQeU9iamVjdCAqbGlzdCwgKnN1Ym9iaiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmxpc3Q7CiAgICAgUHlfYnVmZmVyIHZzdWI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9uOnJzcGxpdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vib2JqLCAmbWF4c3BsaXQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWF4c3BsaXQgPCAwKQogICAgICAgICBtYXhzcGxpdCA9IFBZX1NTSVpFX1RfTUFYOwogCi0gICAgaWYgKHN1Ym9iaiA9PSBQeV9Ob25lKQorICAgIGlmIChzZXAgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yc3BsaXRfd2hpdGVzcGFjZSgoUHlPYmplY3QqKSBzZWxmLCBzLCBsZW4sIG1heHNwbGl0KTsKIAotICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vib2JqLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc2VwLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzdWIgPSB2c3ViLmJ1ZjsKICAgICBuID0gdnN1Yi5sZW47CkBAIC0yMjA1LDEyICsyMzEyLDE3IEBACiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLVB5RG9jX1NUUlZBUihyZXZlcnNlX19kb2NfXywKLSJCLnJldmVyc2UoKSAtPiBOb25lXG5cCi1cblwKLVJldmVyc2UgdGhlIG9yZGVyIG9mIHRoZSB2YWx1ZXMgaW4gQiBpbiBwbGFjZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5yZXZlcnNlCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQorCitSZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgdmFsdWVzIGluIEIgaW4gcGxhY2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcmV2ZXJzZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK2J5dGVhcnJheV9yZXZlcnNlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWY3NjE2ZjI5YWIzMDlkMyBpbnB1dD03OTMzYTQ5OWI4NTk3YmQxXSovCiB7CiAgICAgY2hhciBzd2FwLCAqaGVhZCwgKnRhaWw7CiAgICAgUHlfc3NpemVfdCBpLCBqLCBuID0gUHlfU0laRShzZWxmKTsKQEAgLTIyMjcsNTcgKzIzMzksNzQgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGluc2VydF9fZG9jX18sCi0iQi5pbnNlcnQoaW5kZXgsIGludCkgLT4gTm9uZVxuXAotXG5cCi1JbnNlcnQgYSBzaW5nbGUgaXRlbSBpbnRvIHRoZSBieXRlYXJyYXkgYmVmb3JlIHRoZSBnaXZlbiBpbmRleC4iKTsKLXN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfaW5zZXJ0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqdmFsdWU7Ci0gICAgaW50IGl2YWw7Ci0gICAgUHlfc3NpemVfdCB3aGVyZSwgbiA9IFB5X1NJWkUoc2VsZik7Ci0gICAgY2hhciAqYnVmOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuTzppbnNlcnQiLCAmd2hlcmUsICZ2YWx1ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOworLypbcHl0aG9uIGlucHV0XQorY2xhc3MgYnl0ZXN2YWx1ZV9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdpbnQnCisgICAgY29udmVydGVyID0gJ19nZXRieXRldmFsdWUnCitbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0yOWMyZTdjMjZjMjEyODEyXSovCisKKworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5Lmluc2VydAorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKyAgICBpbmRleDogUHlfc3NpemVfdAorICAgICAgICBUaGUgaW5kZXggd2hlcmUgdGhlIHZhbHVlIGlzIHRvIGJlIGluc2VydGVkLgorICAgIGl0ZW06IGJ5dGVzdmFsdWUKKyAgICAgICAgVGhlIGl0ZW0gdG8gYmUgaW5zZXJ0ZWQuCisgICAgLworCitJbnNlcnQgYSBzaW5nbGUgaXRlbSBpbnRvIHRoZSBieXRlYXJyYXkgYmVmb3JlIHRoZSBnaXZlbiBpbmRleC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9pbnNlcnRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCwgaW50IGl0ZW0pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzZjNzc1YTcwZTdiMDdiNyBpbnB1dD04MzM3NjY4MzZiYTMwZTFlXSovCit7CisgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShzZWxmKTsKKyAgICBjaGFyICpidWY7CiAKICAgICBpZiAobiA9PSBQWV9TU0laRV9UX01BWCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgYWRkIG1vcmUgb2JqZWN0cyB0byBieXRlYXJyYXkiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmICghX2dldGJ5dGV2YWx1ZSh2YWx1ZSwgJml2YWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKChQeU9iamVjdCAqKXNlbGYsIG4gKyAxKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGJ1ZiA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKIAotICAgIGlmICh3aGVyZSA8IDApIHsKLSAgICAgICAgd2hlcmUgKz0gbjsKLSAgICAgICAgaWYgKHdoZXJlIDwgMCkKLSAgICAgICAgICAgIHdoZXJlID0gMDsKKyAgICBpZiAoaW5kZXggPCAwKSB7CisgICAgICAgIGluZGV4ICs9IG47CisgICAgICAgIGlmIChpbmRleCA8IDApCisgICAgICAgICAgICBpbmRleCA9IDA7CiAgICAgfQotICAgIGlmICh3aGVyZSA+IG4pCi0gICAgICAgIHdoZXJlID0gbjsKLSAgICBtZW1tb3ZlKGJ1ZiArIHdoZXJlICsgMSwgYnVmICsgd2hlcmUsIG4gLSB3aGVyZSk7Ci0gICAgYnVmW3doZXJlXSA9IGl2YWw7CisgICAgaWYgKGluZGV4ID4gbikKKyAgICAgICAgaW5kZXggPSBuOworICAgIG1lbW1vdmUoYnVmICsgaW5kZXggKyAxLCBidWYgKyBpbmRleCwgbiAtIGluZGV4KTsKKyAgICBidWZbaW5kZXhdID0gaXRlbTsKIAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoYXBwZW5kX19kb2NfXywKLSJCLmFwcGVuZChpbnQpIC0+IE5vbmVcblwKLVxuXAotQXBwZW5kIGEgc2luZ2xlIGl0ZW0gdG8gdGhlIGVuZCBvZiBCLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LmFwcGVuZAorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKyAgICBpdGVtOiBieXRlc3ZhbHVlCisgICAgICAgIFRoZSBpdGVtIHRvIGJlIGFwcGVuZGVkLgorICAgIC8KKworQXBwZW5kIGEgc2luZ2xlIGl0ZW0gdG8gdGhlIGVuZCBvZiB0aGUgYnl0ZWFycmF5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2FwcGVuZChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK2J5dGVhcnJheV9hcHBlbmRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IGl0ZW0pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTE1NGUxOWVkMTg4NmNiNiBpbnB1dD1hZTU2ZWE4NzM4MDQwN2NjXSovCiB7Ci0gICAgaW50IHZhbHVlOwogICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoc2VsZik7CiAKLSAgICBpZiAoISBfZ2V0Ynl0ZXZhbHVlKGFyZywgJnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG4gPT0gUFlfU1NJWkVfVF9NQVgpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGFkZCBtb3JlIG9iamVjdHMgdG8gYnl0ZWFycmF5Iik7CkBAIC0yMjg2LDE4ICsyNDE1LDI1IEBACiAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSgoUHlPYmplY3QgKilzZWxmLCBuICsgMSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKVtuXSA9IHZhbHVlOworICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKVtuXSA9IGl0ZW07CiAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGV4dGVuZF9fZG9jX18sCi0iQi5leHRlbmQoaXRlcmFibGVfb2ZfaW50cykgLT4gTm9uZVxuXAotXG5cCi1BcHBlbmQgYWxsIHRoZSBlbGVtZW50cyBmcm9tIHRoZSBpdGVyYXRvciBvciBzZXF1ZW5jZSB0byB0aGVcblwKLWVuZCBvZiBCLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LmV4dGVuZAorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKyAgICBpdGVyYWJsZV9vZl9pbnRzOiBvYmplY3QKKyAgICAgICAgVGhlIGl0ZXJhYmxlIG9mIGl0ZW1zIHRvIGFwcGVuZC4KKyAgICAvCisKK0FwcGVuZCBhbGwgdGhlIGl0ZW1zIGZyb20gdGhlIGl0ZXJhdG9yIG9yIHNlcXVlbmNlIHRvIHRoZSBlbmQgb2YgdGhlIGJ5dGVhcnJheS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9leHRlbmQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCitieXRlYXJyYXlfZXh0ZW5kKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaXRlcmFibGVfb2ZfaW50cykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ODE1NWRiZTI0OTE3MGIxIGlucHV0PWNlODNhNWQ3NWI3MGQ4NTBdKi8KIHsKICAgICBQeU9iamVjdCAqaXQsICppdGVtLCAqYnl0ZWFycmF5X29iajsKICAgICBQeV9zc2l6ZV90IGJ1Zl9zaXplID0gMCwgbGVuID0gMDsKQEAgLTIzMDUsMTkgKzI0NDEsMTkgQEAKICAgICBjaGFyICpidWY7CiAKICAgICAvKiBieXRlYXJyYXlfc2V0c2xpY2UgY29kZSBvbmx5IGFjY2VwdHMgc29tZXRoaW5nIHN1cHBvcnRpbmcgUEVQIDMxMTguICovCi0gICAgaWYgKFB5T2JqZWN0X0NoZWNrQnVmZmVyKGFyZykpIHsKLSAgICAgICAgaWYgKGJ5dGVhcnJheV9zZXRzbGljZShzZWxmLCBQeV9TSVpFKHNlbGYpLCBQeV9TSVpFKHNlbGYpLCBhcmcpID09IC0xKQorICAgIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcihpdGVyYWJsZV9vZl9pbnRzKSkgeworICAgICAgICBpZiAoYnl0ZWFycmF5X3NldHNsaWNlKHNlbGYsIFB5X1NJWkUoc2VsZiksIFB5X1NJWkUoc2VsZiksIGl0ZXJhYmxlX29mX2ludHMpID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogCi0gICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGFyZyk7CisgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlX29mX2ludHMpOwogICAgIGlmIChpdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIFRyeSB0byBkZXRlcm1pbmUgdGhlIGxlbmd0aCBvZiB0aGUgYXJndW1lbnQuIDMyIGlzIGFyYml0cmFyeS4gKi8KLSAgICBidWZfc2l6ZSA9IFB5T2JqZWN0X0xlbmd0aEhpbnQoYXJnLCAzMik7CisgICAgYnVmX3NpemUgPSBQeU9iamVjdF9MZW5ndGhIaW50KGl0ZXJhYmxlX29mX2ludHMsIDMyKTsKICAgICBpZiAoYnVmX3NpemUgPT0gLTEpIHsKICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMzY5LDI5ICsyNTA1LDM2IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3BfX2RvY19fLAotIkIucG9wKFtpbmRleF0pIC0+IGludFxuXAotXG5cCi1SZW1vdmUgYW5kIHJldHVybiBhIHNpbmdsZSBpdGVtIGZyb20gQi4gSWYgbm8gaW5kZXhcblwKLWFyZ3VtZW50IGlzIGdpdmVuLCB3aWxsIHBvcCB0aGUgbGFzdCB2YWx1ZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5wb3AKKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisgICAgaW5kZXg6IFB5X3NzaXplX3QgPSAtMQorICAgICAgICBUaGUgaW5kZXggZnJvbSB3aGVyZSB0byByZW1vdmUgdGhlIGl0ZW0uCisgICAgICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgcmVtb3ZlIHRoZSBsYXN0IGl0ZW0uCisgICAgLworCitSZW1vdmUgYW5kIHJldHVybiBhIHNpbmdsZSBpdGVtIGZyb20gQi4KKworSWYgbm8gaW5kZXggYXJndW1lbnQgaXMgZ2l2ZW4sIHdpbGwgcG9wIHRoZSBsYXN0IGl0ZW0uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcG9wKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVhcnJheV9wb3BfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMGNjZDQwMWY4MDIxZGE4IGlucHV0PTA3OTdlNmMwY2E5ZDVhODVdKi8KIHsKICAgICBpbnQgdmFsdWU7Ci0gICAgUHlfc3NpemVfdCB3aGVyZSA9IC0xLCBuID0gUHlfU0laRShzZWxmKTsKKyAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKHNlbGYpOwogICAgIGNoYXIgKmJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cG9wIiwgJndoZXJlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAobiA9PSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInBvcCBmcm9tIGVtcHR5IGJ5dGVhcnJheSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHdoZXJlIDwgMCkKLSAgICAgICAgd2hlcmUgKz0gUHlfU0laRShzZWxmKTsKLSAgICBpZiAod2hlcmUgPCAwIHx8IHdoZXJlID49IFB5X1NJWkUoc2VsZikpIHsKKyAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICBpbmRleCArPSBQeV9TSVpFKHNlbGYpOworICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gUHlfU0laRShzZWxmKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInBvcCBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjM5OSwyOCArMjU0MiwzMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGJ1ZiA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLSAgICB2YWx1ZSA9IGJ1Zlt3aGVyZV07Ci0gICAgbWVtbW92ZShidWYgKyB3aGVyZSwgYnVmICsgd2hlcmUgKyAxLCBuIC0gd2hlcmUpOworICAgIHZhbHVlID0gYnVmW2luZGV4XTsKKyAgICBtZW1tb3ZlKGJ1ZiArIGluZGV4LCBidWYgKyBpbmRleCArIDEsIG4gLSBpbmRleCk7CiAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSgoUHlPYmplY3QgKilzZWxmLCBuIC0gMSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKHVuc2lnbmVkIGNoYXIpdmFsdWUpOwogfQogCi1QeURvY19TVFJWQVIocmVtb3ZlX19kb2NfXywKLSJCLnJlbW92ZShpbnQpIC0+IE5vbmVcblwKLVxuXAotUmVtb3ZlIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGEgdmFsdWUgaW4gQi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5yZW1vdmUKKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisgICAgdmFsdWU6IGJ5dGVzdmFsdWUKKyAgICAgICAgVGhlIHZhbHVlIHRvIHJlbW92ZS4KKyAgICAvCisKK1JlbW92ZSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIHZhbHVlIGluIHRoZSBieXRlYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcmVtb3ZlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQorYnl0ZWFycmF5X3JlbW92ZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQgdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDY1OWUzNzg2NjcwOWMxMyBpbnB1dD00NzU2MGIxMWZkODU2YzI0XSovCiB7Ci0gICAgaW50IHZhbHVlOwogICAgIFB5X3NzaXplX3Qgd2hlcmUsIG4gPSBQeV9TSVpFKHNlbGYpOwogICAgIGNoYXIgKmJ1ZiA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKIAotICAgIGlmICghIF9nZXRieXRldmFsdWUoYXJnLCAmdmFsdWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGZvciAod2hlcmUgPSAwOyB3aGVyZSA8IG47IHdoZXJlKyspIHsKICAgICAgICAgaWYgKGJ1Zlt3aGVyZV0gPT0gdmFsdWUpCiAgICAgICAgICAgICBicmVhazsKQEAgLTI0NjEsMTMyICsyNjA4LDE0NSBAQAogICAgIHJldHVybiBpICsgMTsKIH0KIAotUHlEb2NfU1RSVkFSKHN0cmlwX19kb2NfXywKLSJCLnN0cmlwKFtieXRlc10pIC0+IGJ5dGVhcnJheVxuXAotXG5cCi1TdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50XG5cCi1hbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBuZXcgYnl0ZWFycmF5LlxuXAotSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQsIHN0cmlwIEFTQ0lJIHdoaXRlc3BhY2UuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkuc3RyaXAKKworICAgIGJ5dGVzOiBvYmplY3QgPSBOb25lCisgICAgLworCitTdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LgorCitJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3N0cmlwKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVhcnJheV9zdHJpcF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzYwNDEyNjYxYTM0YWQ1YSBpbnB1dD1lZjdiYjU5YjA5YzIxZDYyXSovCiB7Ci0gICAgUHlfc3NpemVfdCBsZWZ0LCByaWdodCwgbXlzaXplLCBhcmdzaXplOwotICAgIGNoYXIgKm15cHRyLCAqYXJncHRyOwotICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwotICAgIFB5X2J1ZmZlciB2YXJnOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86c3RyaXAiLCAmYXJnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGFyZyA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIGFyZ3B0ciA9ICJcdFxuXHJcZlx2ICI7Ci0gICAgICAgIGFyZ3NpemUgPSA2OworICAgIFB5X3NzaXplX3QgbGVmdCwgcmlnaHQsIG15c2l6ZSwgYnl0ZXNsZW47CisgICAgY2hhciAqbXlwdHIsICpieXRlc3B0cjsKKyAgICBQeV9idWZmZXIgdmJ5dGVzOworCisgICAgaWYgKGJ5dGVzID09IFB5X05vbmUpIHsKKyAgICAgICAgYnl0ZXNwdHIgPSAiXHRcblxyXGZcdiAiOworICAgICAgICBieXRlc2xlbiA9IDY7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgJnZhcmcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihieXRlcywgJnZieXRlcywgUHlCVUZfU0lNUExFKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGFyZ3B0ciA9IChjaGFyICopIHZhcmcuYnVmOwotICAgICAgICBhcmdzaXplID0gdmFyZy5sZW47CisgICAgICAgIGJ5dGVzcHRyID0gKGNoYXIgKikgdmJ5dGVzLmJ1ZjsKKyAgICAgICAgYnl0ZXNsZW4gPSB2Ynl0ZXMubGVuOwogICAgIH0KICAgICBteXB0ciA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKICAgICBteXNpemUgPSBQeV9TSVpFKHNlbGYpOwotICAgIGxlZnQgPSBsc3RyaXBfaGVscGVyKG15cHRyLCBteXNpemUsIGFyZ3B0ciwgYXJnc2l6ZSk7CisgICAgbGVmdCA9IGxzdHJpcF9oZWxwZXIobXlwdHIsIG15c2l6ZSwgYnl0ZXNwdHIsIGJ5dGVzbGVuKTsKICAgICBpZiAobGVmdCA9PSBteXNpemUpCiAgICAgICAgIHJpZ2h0ID0gbGVmdDsKICAgICBlbHNlCi0gICAgICAgIHJpZ2h0ID0gcnN0cmlwX2hlbHBlcihteXB0ciwgbXlzaXplLCBhcmdwdHIsIGFyZ3NpemUpOwotICAgIGlmIChhcmcgIT0gUHlfTm9uZSkKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmFyZyk7CisgICAgICAgIHJpZ2h0ID0gcnN0cmlwX2hlbHBlcihteXB0ciwgbXlzaXplLCBieXRlc3B0ciwgYnl0ZXNsZW4pOworICAgIGlmIChieXRlcyAhPSBQeV9Ob25lKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2Ynl0ZXMpOwogICAgIHJldHVybiBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShteXB0ciArIGxlZnQsIHJpZ2h0IC0gbGVmdCk7CiB9CiAKLVB5RG9jX1NUUlZBUihsc3RyaXBfX2RvY19fLAotIkIubHN0cmlwKFtieXRlc10pIC0+IGJ5dGVhcnJheVxuXAotXG5cCi1TdHJpcCBsZWFkaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnRcblwKLWFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBhIG5ldyBieXRlYXJyYXkuXG5cCi1JZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCwgc3RyaXAgbGVhZGluZyBBU0NJSSB3aGl0ZXNwYWNlLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LmxzdHJpcAorCisgICAgYnl0ZXM6IG9iamVjdCA9IE5vbmUKKyAgICAvCisKK1N0cmlwIGxlYWRpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC4KKworSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgbGVhZGluZyBBU0NJSSB3aGl0ZXNwYWNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2xzdHJpcChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfbHN0cmlwX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMDA1YzlkMGFiOTA5ZTY2IGlucHV0PTgwODQzZjk3NWRkN2M0ODBdKi8KIHsKLSAgICBQeV9zc2l6ZV90IGxlZnQsIHJpZ2h0LCBteXNpemUsIGFyZ3NpemU7Ci0gICAgY2hhciAqbXlwdHIsICphcmdwdHI7Ci0gICAgUHlPYmplY3QgKmFyZyA9IFB5X05vbmU7Ci0gICAgUHlfYnVmZmVyIHZhcmc7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8Tzpsc3RyaXAiLCAmYXJnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGFyZyA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIGFyZ3B0ciA9ICJcdFxuXHJcZlx2ICI7Ci0gICAgICAgIGFyZ3NpemUgPSA2OworICAgIFB5X3NzaXplX3QgbGVmdCwgcmlnaHQsIG15c2l6ZSwgYnl0ZXNsZW47CisgICAgY2hhciAqbXlwdHIsICpieXRlc3B0cjsKKyAgICBQeV9idWZmZXIgdmJ5dGVzOworCisgICAgaWYgKGJ5dGVzID09IFB5X05vbmUpIHsKKyAgICAgICAgYnl0ZXNwdHIgPSAiXHRcblxyXGZcdiAiOworICAgICAgICBieXRlc2xlbiA9IDY7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgJnZhcmcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihieXRlcywgJnZieXRlcywgUHlCVUZfU0lNUExFKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGFyZ3B0ciA9IChjaGFyICopIHZhcmcuYnVmOwotICAgICAgICBhcmdzaXplID0gdmFyZy5sZW47CisgICAgICAgIGJ5dGVzcHRyID0gKGNoYXIgKikgdmJ5dGVzLmJ1ZjsKKyAgICAgICAgYnl0ZXNsZW4gPSB2Ynl0ZXMubGVuOwogICAgIH0KICAgICBteXB0ciA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKICAgICBteXNpemUgPSBQeV9TSVpFKHNlbGYpOwotICAgIGxlZnQgPSBsc3RyaXBfaGVscGVyKG15cHRyLCBteXNpemUsIGFyZ3B0ciwgYXJnc2l6ZSk7CisgICAgbGVmdCA9IGxzdHJpcF9oZWxwZXIobXlwdHIsIG15c2l6ZSwgYnl0ZXNwdHIsIGJ5dGVzbGVuKTsKICAgICByaWdodCA9IG15c2l6ZTsKLSAgICBpZiAoYXJnICE9IFB5X05vbmUpCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhcmcpOworICAgIGlmIChieXRlcyAhPSBQeV9Ob25lKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2Ynl0ZXMpOwogICAgIHJldHVybiBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShteXB0ciArIGxlZnQsIHJpZ2h0IC0gbGVmdCk7CiB9CiAKLVB5RG9jX1NUUlZBUihyc3RyaXBfX2RvY19fLAotIkIucnN0cmlwKFtieXRlc10pIC0+IGJ5dGVhcnJheVxuXAotXG5cCi1TdHJpcCB0cmFpbGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50XG5cCi1hbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBuZXcgYnl0ZWFycmF5LlxuXAotSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQsIHN0cmlwIHRyYWlsaW5nIEFTQ0lJIHdoaXRlc3BhY2UuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkucnN0cmlwCisKKyAgICBieXRlczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworU3RyaXAgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC4KKworSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9yc3RyaXAoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZWFycmF5X3JzdHJpcF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDMwZTJmYmQyZjcyNzZiZCBpbnB1dD1lNzI4Yjk5NDk1NGNmZDkxXSovCiB7Ci0gICAgUHlfc3NpemVfdCByaWdodCwgbXlzaXplLCBhcmdzaXplOwotICAgIGNoYXIgKm15cHRyLCAqYXJncHRyOwotICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwotICAgIFB5X2J1ZmZlciB2YXJnOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86cnN0cmlwIiwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChhcmcgPT0gUHlfTm9uZSkgewotICAgICAgICBhcmdwdHIgPSAiXHRcblxyXGZcdiAiOwotICAgICAgICBhcmdzaXplID0gNjsKKyAgICBQeV9zc2l6ZV90IHJpZ2h0LCBteXNpemUsIGJ5dGVzbGVuOworICAgIGNoYXIgKm15cHRyLCAqYnl0ZXNwdHI7CisgICAgUHlfYnVmZmVyIHZieXRlczsKKworICAgIGlmIChieXRlcyA9PSBQeV9Ob25lKSB7CisgICAgICAgIGJ5dGVzcHRyID0gIlx0XG5cclxmXHYgIjsKKyAgICAgICAgYnl0ZXNsZW4gPSA2OwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihhcmcsICZ2YXJnLCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYnl0ZXMsICZ2Ynl0ZXMsIFB5QlVGX1NJTVBMRSkgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBhcmdwdHIgPSAoY2hhciAqKSB2YXJnLmJ1ZjsKLSAgICAgICAgYXJnc2l6ZSA9IHZhcmcubGVuOworICAgICAgICBieXRlc3B0ciA9IChjaGFyICopIHZieXRlcy5idWY7CisgICAgICAgIGJ5dGVzbGVuID0gdmJ5dGVzLmxlbjsKICAgICB9CiAgICAgbXlwdHIgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7CiAgICAgbXlzaXplID0gUHlfU0laRShzZWxmKTsKLSAgICByaWdodCA9IHJzdHJpcF9oZWxwZXIobXlwdHIsIG15c2l6ZSwgYXJncHRyLCBhcmdzaXplKTsKLSAgICBpZiAoYXJnICE9IFB5X05vbmUpCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhcmcpOworICAgIHJpZ2h0ID0gcnN0cmlwX2hlbHBlcihteXB0ciwgbXlzaXplLCBieXRlc3B0ciwgYnl0ZXNsZW4pOworICAgIGlmIChieXRlcyAhPSBQeV9Ob25lKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2Ynl0ZXMpOwogICAgIHJldHVybiBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShteXB0ciwgcmlnaHQpOwogfQogCi1QeURvY19TVFJWQVIoZGVjb2RlX2RvYywKLSJCLmRlY29kZShlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpIC0+IHN0clxuXAotXG5cCi1EZWNvZGUgQiB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuIERlZmF1bHQgZW5jb2RpbmdcblwKLWlzICd1dGYtOCcuIGVycm9ycyBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50IGVycm9yXG5cCi1oYW5kbGluZyBzY2hlbWUuICBEZWZhdWx0IGlzICdzdHJpY3QnIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2VcblwKLWEgVW5pY29kZURlY29kZUVycm9yLiAgT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSAnaWdub3JlJyBhbmQgJ3JlcGxhY2UnXG5cCi1hcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgd2l0aCBjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBpc1xuXAotYWJsZSB0byBoYW5kbGUgVW5pY29kZURlY29kZUVycm9ycy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5kZWNvZGUKKworICAgIGVuY29kaW5nOiBzdHIoY19kZWZhdWx0PSJOVUxMIikgPSAndXRmLTgnCisgICAgICAgIFRoZSBlbmNvZGluZyB3aXRoIHdoaWNoIHRvIGRlY29kZSB0aGUgYnl0ZWFycmF5LgorICAgIGVycm9yczogc3RyKGNfZGVmYXVsdD0iTlVMTCIpID0gJ3N0cmljdCcKKyAgICAgICAgVGhlIGVycm9yIGhhbmRsaW5nIHNjaGVtZSB0byB1c2UgZm9yIHRoZSBoYW5kbGluZyBvZiBkZWNvZGluZyBlcnJvcnMuCisgICAgICAgIFRoZSBkZWZhdWx0IGlzICdzdHJpY3QnIG1lYW5pbmcgdGhhdCBkZWNvZGluZyBlcnJvcnMgcmFpc2UgYQorICAgICAgICBVbmljb2RlRGVjb2RlRXJyb3IuIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgJ2lnbm9yZScgYW5kICdyZXBsYWNlJworICAgICAgICBhcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgd2l0aCBjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdAorICAgICAgICBjYW4gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuCisKK0RlY29kZSB0aGUgYnl0ZWFycmF5IHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciBlbmNvZGluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9kZWNvZGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZWFycmF5X2RlY29kZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjU3ZDQzZjRhMDBiNDJjNSBpbnB1dD1mMjhkOGY5MDMwMjAyNTdiXSovCiB7Ci0gICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJlbmNvZGluZyIsICJlcnJvcnMiLCAwfTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxzczpkZWNvZGUiLCBrd2xpc3QsICZlbmNvZGluZywgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQogICAgICAgICBlbmNvZGluZyA9IFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcoKTsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KHNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QoKFB5T2JqZWN0KilzZWxmLCBlbmNvZGluZywgZXJyb3JzKTsKIH0KIAogUHlEb2NfU1RSVkFSKGFsbG9jX2RvYywKQEAgLTI2MDAsNDggKzI3NjAsNDcgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPm9iX2FsbG9jKTsKIH0KIAotUHlEb2NfU1RSVkFSKGpvaW5fZG9jLAotIkIuam9pbihpdGVyYWJsZV9vZl9ieXRlcykgLT4gYnl0ZWFycmF5XG5cCi1cblwKLUNvbmNhdGVuYXRlIGFueSBudW1iZXIgb2YgYnl0ZXMvYnl0ZWFycmF5IG9iamVjdHMsIHdpdGggQlxuXAotaW4gYmV0d2VlbiBlYWNoIHBhaXIsIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBhIG5ldyBieXRlYXJyYXkuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkuam9pbgorCisgICAgaXRlcmFibGVfb2ZfYnl0ZXM6IG9iamVjdAorICAgIC8KKworQ29uY2F0ZW5hdGUgYW55IG51bWJlciBvZiBieXRlcy9ieXRlYXJyYXkgb2JqZWN0cy4KKworVGhlIGJ5dGVhcnJheSB3aG9zZSBtZXRob2QgaXMgY2FsbGVkIGlzIGluc2VydGVkIGluIGJldHdlZW4gZWFjaCBwYWlyLgorCitUaGUgcmVzdWx0IGlzIHJldHVybmVkIGFzIGEgbmV3IGJ5dGVhcnJheSBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfam9pbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKml0ZXJhYmxlKQorYnl0ZWFycmF5X2pvaW4oUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppdGVyYWJsZV9vZl9ieXRlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hODUxNjM3MGJmNjhhZTA4IGlucHV0PWFiYTZiMWY5YjMwZmNiOGVdKi8KIHsKLSAgICByZXR1cm4gc3RyaW5nbGliX2J5dGVzX2pvaW4oc2VsZiwgaXRlcmFibGUpOworICAgIHJldHVybiBzdHJpbmdsaWJfYnl0ZXNfam9pbigoUHlPYmplY3QqKXNlbGYsIGl0ZXJhYmxlX29mX2J5dGVzKTsKIH0KIAotUHlEb2NfU1RSVkFSKHNwbGl0bGluZXNfX2RvY19fLAotIkIuc3BsaXRsaW5lcyhba2VlcGVuZHNdKSAtPiBsaXN0IG9mIGxpbmVzXG5cCi1cblwKLVJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIEIsIGJyZWFraW5nIGF0IGxpbmUgYm91bmRhcmllcy5cblwKLUxpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0IHVubGVzcyBrZWVwZW5kc1xuXAotaXMgZ2l2ZW4gYW5kIHRydWUuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkuc3BsaXRsaW5lcwogCi1zdGF0aWMgUHlPYmplY3QqCi1ieXRlYXJyYXlfc3BsaXRsaW5lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorICAgIGtlZXBlbmRzOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorCitSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgYnl0ZWFycmF5LCBicmVha2luZyBhdCBsaW5lIGJvdW5kYXJpZXMuCisKK0xpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0IHVubGVzcyBrZWVwZW5kcyBpcyBnaXZlbiBhbmQKK3RydWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQga2VlcGVuZHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDIyM2M5NGI4OTVmNmFkOSBpbnB1dD04Y2NhZGU5NDFlNWVhMGJkXSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJrZWVwZW5kcyIsIDB9OwotICAgIGludCBrZWVwZW5kcyA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGk6c3BsaXRsaW5lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAma2VlcGVuZHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRsaW5lcygKICAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLAogICAgICAgICBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwga2VlcGVuZHMKICAgICAgICAgKTsKIH0KIAotUHlEb2NfU1RSVkFSKGZyb21oZXhfZG9jLAotImJ5dGVhcnJheS5mcm9taGV4KHN0cmluZykgLT4gYnl0ZWFycmF5IChzdGF0aWMgbWV0aG9kKVxuXAotXG5cCi1DcmVhdGUgYSBieXRlYXJyYXkgb2JqZWN0IGZyb20gYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgbnVtYmVycy5cblwKLVNwYWNlcyBiZXR3ZWVuIHR3byBudW1iZXJzIGFyZSBhY2NlcHRlZC5cblwKLUV4YW1wbGU6IGJ5dGVhcnJheS5mcm9taGV4KCdCOSAwMUVGJykgLT4gYnl0ZWFycmF5KGInXFx4YjlcXHgwMVxceGVmJykuIik7Ci0KIHN0YXRpYyBpbnQKIGhleF9kaWdpdF90b19pbnQoUHlfVUNTNCBjKQogewpAQCAtMjY1OCwyNCArMjgxNywzNyBAQAogICAgIHJldHVybiAtMTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorQGNsYXNzbWV0aG9kCitieXRlYXJyYXkuZnJvbWhleAorCisgICAgY2xzOiBzZWxmKHR5cGU9IlB5T2JqZWN0KiIpCisgICAgc3RyaW5nOiB1bmljb2RlCisgICAgLworCitDcmVhdGUgYSBieXRlYXJyYXkgb2JqZWN0IGZyb20gYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgbnVtYmVycy4KKworU3BhY2VzIGJldHdlZW4gdHdvIG51bWJlcnMgYXJlIGFjY2VwdGVkLgorRXhhbXBsZTogYnl0ZWFycmF5LmZyb21oZXgoJ0I5IDAxRUYnKSAtPiBieXRlYXJyYXkoYidcXHhiOVxceDAxXFx4ZWYnKQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2Zyb21oZXgoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfZnJvbWhleF9pbXBsKFB5T2JqZWN0KmNscywgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kZjNkYTYwMTI5YjM3MDBjIGlucHV0PTkwN2JiZDJkMzRkOTM2N2FdKi8KIHsKLSAgICBQeU9iamVjdCAqbmV3Ynl0ZXMsICpoZXhvYmo7CisgICAgUHlPYmplY3QgKm5ld2J5dGVzOwogICAgIGNoYXIgKmJ1ZjsKICAgICBQeV9zc2l6ZV90IGhleGxlbiwgYnl0ZXNsZW4sIGksIGo7CiAgICAgaW50IHRvcCwgYm90OwogICAgIHZvaWQgKmRhdGE7CiAgICAgdW5zaWduZWQgaW50IGtpbmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6ZnJvbWhleCIsICZoZXhvYmopKQorICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soc3RyaW5nKSk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJpbmcpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKGhleG9iaikpOwotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoaGV4b2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGhleG9iaik7Ci0gICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKGhleG9iaik7Ci0gICAgaGV4bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaGV4b2JqKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyaW5nKTsKKyAgICBoZXhsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpOwogCiAgICAgYnl0ZXNsZW4gPSBoZXhsZW4vMjsgLyogVGhpcyBvdmVyZXN0aW1hdGVzIGlmIHRoZXJlIGFyZSBzcGFjZXMgKi8KICAgICBuZXdieXRlcyA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ5dGVzbGVuKTsKQEAgLTI3MDcsNiArMjg3OSwxOSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitQeURvY19TVFJWQVIoaGV4X19kb2NfXywKKyJCLmhleCgpIC0+IHN0cmluZ1xuXAorXG5cCitDcmVhdGUgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgbnVtYmVycyBmcm9tIGEgYnl0ZWFycmF5IG9iamVjdC5cblwKK0V4YW1wbGU6IGJ5dGVhcnJheShbMHhiOSwgMHgwMSwgMHhlZl0pLmhleCgpIC0+ICdiOTAxZWYnLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2hleChQeUJ5dGVzT2JqZWN0ICpzZWxmKQoreworICAgIGNoYXIqIGFyZ2J1ZiA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKKyAgICBQeV9zc2l6ZV90IGFyZ2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOworICAgIHJldHVybiBfUHlfc3RyaGV4KGFyZ2J1ZiwgYXJnbGVuKTsKK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb21tb25fcmVkdWNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQgcHJvdG8pCkBAIC0yNzQzLDM3ICsyOTI4LDUzIEBACiAgICAgfQogfQogCi1QeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkuX19yZWR1Y2VfXyBhcyBieXRlYXJyYXlfcmVkdWNlCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQorCitSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3JlZHVjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKK2J5dGVhcnJheV9yZWR1Y2VfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MmJmMzA0MDg2NDY0Y2FiIGlucHV0PWZiYjA3ZGU0ZDEwMmEwM2FdKi8KIHsKICAgICByZXR1cm4gX2NvbW1vbl9yZWR1Y2Uoc2VsZiwgMik7CiB9CiAKLVB5RG9jX1NUUlZBUihyZWR1Y2VfZXhfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5fX3JlZHVjZV9leF9fIGFzIGJ5dGVhcnJheV9yZWR1Y2VfZXgKKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisgICAgcHJvdG86IGludCA9IDAKKyAgICAvCisKK1JldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcmVkdWNlX2V4KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVhcnJheV9yZWR1Y2VfZXhfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IHByb3RvKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUyZWFjMzMzNzcxOTc1MjAgaW5wdXQ9MGUwOTFhNDJjYTZkYmQ5MV0qLwogewotICAgIGludCBwcm90byA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9fcmVkdWNlX2V4X18iLCAmcHJvdG8pKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHJldHVybiBfY29tbW9uX3JlZHVjZShzZWxmLCBwcm90byk7CiB9CiAKLVB5RG9jX1NUUlZBUihzaXplb2ZfZG9jLAotIkIuX19zaXplb2ZfXygpIC0+IGludFxuXAotIFxuXAotUmV0dXJucyB0aGUgc2l6ZSBvZiBCIGluIG1lbW9yeSwgaW4gYnl0ZXMiKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5fX3NpemVvZl9fIGFzIGJ5dGVhcnJheV9zaXplb2YKKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisKK1JldHVybnMgdGhlIHNpemUgb2YgdGhlIGJ5dGVhcnJheSBvYmplY3QgaW4gbWVtb3J5LCBpbiBieXRlcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9zaXplb2YoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCitieXRlYXJyYXlfc2l6ZW9mX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzM4YWJkZDE3OTUxYzQyNyBpbnB1dD02YjIzZDMwNTM2MmI0NjJiXSovCiB7CiAgICAgUHlfc3NpemVfdCByZXM7CiAKLSAgICByZXMgPSBzaXplb2YoUHlCeXRlQXJyYXlPYmplY3QpICsgc2VsZi0+b2JfYWxsb2MgKiBzaXplb2YoY2hhcik7CisgICAgcmVzID0gX1B5T2JqZWN0X1NJWkUoUHlfVFlQRShzZWxmKSkgKyBzZWxmLT5vYl9hbGxvYyAqIHNpemVvZihjaGFyKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7CiB9CiAKQEAgLTI4MDQsMjYgKzMwMDUsMjYgQEAKIHN0YXRpYyBQeU1ldGhvZERlZgogYnl0ZWFycmF5X21ldGhvZHNbXSA9IHsKICAgICB7Il9fYWxsb2NfXyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfYWxsb2MsIE1FVEhfTk9BUkdTLCBhbGxvY19kb2N9LAotICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCi0gICAgeyJfX3JlZHVjZV9leF9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZWR1Y2VfZXgsIE1FVEhfVkFSQVJHUywgcmVkdWNlX2V4X2RvY30sCi0gICAgeyJfX3NpemVvZl9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zaXplb2YsIE1FVEhfTk9BUkdTLCBzaXplb2ZfZG9jfSwKLSAgICB7ImFwcGVuZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfYXBwZW5kLCBNRVRIX08sIGFwcGVuZF9fZG9jX199LAorICAgIEJZVEVBUlJBWV9SRURVQ0VfTUVUSE9EREVGCisgICAgQllURUFSUkFZX1JFRFVDRV9FWF9NRVRIT0RERUYKKyAgICBCWVRFQVJSQVlfU0laRU9GX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9BUFBFTkRfTUVUSE9EREVGCiAgICAgeyJjYXBpdGFsaXplIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jYXBpdGFsaXplLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2NhcGl0YWxpemVfX2RvY19ffSwKICAgICB7ImNlbnRlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2VudGVyLCBNRVRIX1ZBUkFSR1MsIGNlbnRlcl9fZG9jX199LAotICAgIHsiY2xlYXIiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2NsZWFyLCBNRVRIX05PQVJHUywgY2xlYXJfX2RvY19ffSwKLSAgICB7ImNvcHkiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2NvcHksIE1FVEhfTk9BUkdTLCBjb3B5X19kb2NfX30sCisgICAgQllURUFSUkFZX0NMRUFSX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9DT1BZX01FVEhPRERFRgogICAgIHsiY291bnQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2NvdW50LCBNRVRIX1ZBUkFSR1MsIGNvdW50X19kb2NfX30sCi0gICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2RlY29kZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgZGVjb2RlX2RvY30sCisgICAgQllURUFSUkFZX0RFQ09ERV9NRVRIT0RERUYKICAgICB7ImVuZHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9lbmRzd2l0aCwgTUVUSF9WQVJBUkdTLCBlbmRzd2l0aF9fZG9jX199LAogICAgIHsiZXhwYW5kdGFicyIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfZXhwYW5kdGFicywgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgZXhwYW5kdGFic19fZG9jX199LAotICAgIHsiZXh0ZW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9leHRlbmQsIE1FVEhfTywgZXh0ZW5kX19kb2NfX30sCisgICAgQllURUFSUkFZX0VYVEVORF9NRVRIT0RERUYKICAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2ZpbmQsIE1FVEhfVkFSQVJHUywgZmluZF9fZG9jX199LAotICAgIHsiZnJvbWhleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZnJvbWhleCwgTUVUSF9WQVJBUkdTfE1FVEhfQ0xBU1MsCi0gICAgIGZyb21oZXhfZG9jfSwKKyAgICBCWVRFQVJSQVlfRlJPTUhFWF9NRVRIT0RERUYKKyAgICB7ImhleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfaGV4LCBNRVRIX05PQVJHUywgaGV4X19kb2NfX30sCiAgICAgeyJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfaW5kZXgsIE1FVEhfVkFSQVJHUywgaW5kZXhfX2RvY19ffSwKLSAgICB7Imluc2VydCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfaW5zZXJ0LCBNRVRIX1ZBUkFSR1MsIGluc2VydF9fZG9jX199LAorICAgIEJZVEVBUlJBWV9JTlNFUlRfTUVUSE9EREVGCiAgICAgeyJpc2FsbnVtIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc2FsbnVtLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2lzYWxudW1fX2RvY19ffSwKICAgICB7ImlzYWxwaGEiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzYWxwaGEsIE1FVEhfTk9BUkdTLApAQCAtMjgzOCwzOSArMzAzOSw1MSBAQAogICAgICBfUHlfaXN0aXRsZV9fZG9jX199LAogICAgIHsiaXN1cHBlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXN1cHBlciwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9pc3VwcGVyX19kb2NfX30sCi0gICAgeyJqb2luIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9qb2luLCBNRVRIX08sIGpvaW5fZG9jfSwKKyAgICBCWVRFQVJSQVlfSk9JTl9NRVRIT0RERUYKICAgICB7ImxqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sanVzdCwgTUVUSF9WQVJBUkdTLCBsanVzdF9fZG9jX199LAogICAgIHsibG93ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2xvd2VyLCBNRVRIX05PQVJHUywgX1B5X2xvd2VyX19kb2NfX30sCi0gICAgeyJsc3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2xzdHJpcCwgTUVUSF9WQVJBUkdTLCBsc3RyaXBfX2RvY19ffSwKLSAgICB7Im1ha2V0cmFucyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfbWFrZXRyYW5zLCBNRVRIX1ZBUkFSR1N8TUVUSF9TVEFUSUMsCi0gICAgIF9QeV9tYWtldHJhbnNfX2RvY19ffSwKLSAgICB7InBhcnRpdGlvbiIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcGFydGl0aW9uLCBNRVRIX08sIHBhcnRpdGlvbl9fZG9jX199LAotICAgIHsicG9wIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9wb3AsIE1FVEhfVkFSQVJHUywgcG9wX19kb2NfX30sCi0gICAgeyJyZW1vdmUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JlbW92ZSwgTUVUSF9PLCByZW1vdmVfX2RvY19ffSwKLSAgICB7InJlcGxhY2UiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JlcGxhY2UsIE1FVEhfVkFSQVJHUywgcmVwbGFjZV9fZG9jX199LAotICAgIHsicmV2ZXJzZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmV2ZXJzZSwgTUVUSF9OT0FSR1MsIHJldmVyc2VfX2RvY19ffSwKKyAgICBCWVRFQVJSQVlfTFNUUklQX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9NQUtFVFJBTlNfTUVUSE9EREVGCisgICAgQllURUFSUkFZX1BBUlRJVElPTl9NRVRIT0RERUYKKyAgICBCWVRFQVJSQVlfUE9QX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9SRU1PVkVfTUVUSE9EREVGCisgICAgQllURUFSUkFZX1JFUExBQ0VfTUVUSE9EREVGCisgICAgQllURUFSUkFZX1JFVkVSU0VfTUVUSE9EREVGCiAgICAgeyJyZmluZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmZpbmQsIE1FVEhfVkFSQVJHUywgcmZpbmRfX2RvY19ffSwKICAgICB7InJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmluZGV4LCBNRVRIX1ZBUkFSR1MsIHJpbmRleF9fZG9jX199LAogICAgIHsicmp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3JqdXN0LCBNRVRIX1ZBUkFSR1MsIHJqdXN0X19kb2NfX30sCi0gICAgeyJycGFydGl0aW9uIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9ycGFydGl0aW9uLCBNRVRIX08sIHJwYXJ0aXRpb25fX2RvY19ffSwKLSAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcnNwbGl0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCByc3BsaXRfX2RvY19ffSwKLSAgICB7InJzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcnN0cmlwLCBNRVRIX1ZBUkFSR1MsIHJzdHJpcF9fZG9jX199LAotICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzcGxpdF9fZG9jX199LAotICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXRsaW5lcywKLSAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgc3BsaXRsaW5lc19fZG9jX199LAorICAgIEJZVEVBUlJBWV9SUEFSVElUSU9OX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9SU1BMSVRfTUVUSE9EREVGCisgICAgQllURUFSUkFZX1JTVFJJUF9NRVRIT0RERUYKKyAgICBCWVRFQVJSQVlfU1BMSVRfTUVUSE9EREVGCisgICAgQllURUFSUkFZX1NQTElUTElORVNfTUVUSE9EREVGCiAgICAgeyJzdGFydHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zdGFydHN3aXRoLCBNRVRIX1ZBUkFSR1MgLAogICAgICBzdGFydHN3aXRoX19kb2NfX30sCi0gICAgeyJzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3RyaXAsIE1FVEhfVkFSQVJHUywgc3RyaXBfX2RvY19ffSwKKyAgICBCWVRFQVJSQVlfU1RSSVBfTUVUSE9EREVGCiAgICAgeyJzd2FwY2FzZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfc3dhcGNhc2UsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfc3dhcGNhc2VfX2RvY19ffSwKICAgICB7InRpdGxlIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl90aXRsZSwgTUVUSF9OT0FSR1MsIF9QeV90aXRsZV9fZG9jX199LAotICAgIHsidHJhbnNsYXRlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV90cmFuc2xhdGUsIE1FVEhfVkFSQVJHUywKLSAgICAgdHJhbnNsYXRlX19kb2NfX30sCisgICAgQllURUFSUkFZX1RSQU5TTEFURV9NRVRIT0RERUYKICAgICB7InVwcGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl91cHBlciwgTUVUSF9OT0FSR1MsIF9QeV91cHBlcl9fZG9jX199LAogICAgIHsiemZpbGwiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3pmaWxsLCBNRVRIX1ZBUkFSR1MsIHpmaWxsX19kb2NfX30sCiAgICAge05VTEx9CiB9OwogCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X21vZChQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpCit7CisgICAgaWYgKCFQeUJ5dGVBcnJheV9DaGVjayh2KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworICAgIHJldHVybiBieXRlYXJyYXlfZm9ybWF0KChQeUJ5dGVBcnJheU9iamVjdCAqKXYsIHcpOworfQorCitzdGF0aWMgUHlOdW1iZXJNZXRob2RzIGJ5dGVhcnJheV9hc19udW1iZXIgPSB7CisgICAgMCwgICAgICAgICAgICAgIC8qbmJfYWRkKi8KKyAgICAwLCAgICAgICAgICAgICAgLypuYl9zdWJ0cmFjdCovCisgICAgMCwgICAgICAgICAgICAgIC8qbmJfbXVsdGlwbHkqLworICAgIGJ5dGVhcnJheV9tb2QsICAvKm5iX3JlbWFpbmRlciovCit9OworCiBQeURvY19TVFJWQVIoYnl0ZWFycmF5X2RvYywKICJieXRlYXJyYXkoaXRlcmFibGVfb2ZfaW50cykgLT4gYnl0ZWFycmF5XG5cCiBieXRlYXJyYXkoc3RyaW5nLCBlbmNvZGluZ1ssIGVycm9yc10pIC0+IGJ5dGVhcnJheVxuXApAQCAtMjg5OSw3ICszMTEyLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KICAgICAocmVwcmZ1bmMpYnl0ZWFycmF5X3JlcHIsICAgICAgICAgICAvKiB0cF9yZXByICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgJmJ5dGVhcnJheV9hc19udW1iZXIsICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgJmJ5dGVhcnJheV9hc19zZXF1ZW5jZSwgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KICAgICAmYnl0ZWFycmF5X2FzX21hcHBpbmcsICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwpAQCAtMzAyNiw3ICszMjM5LDcgQEAKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlpdGVyX2xlbmd0aF9oaW50LCBNRVRIX05PQVJHUywKICAgICAgbGVuZ3RoX2hpbnRfZG9jfSwKICAgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5aXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAotICAgICByZWR1Y2VfZG9jfSwKKyAgICAgYnl0ZWFycmF5X3JlZHVjZV9fZG9jX199LAogICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywKICAgICAgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgTlVMTH0gLyogc2VudGluZWwgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jIGIvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKaW5kZXggOWZmN2FjZS4uYTI5OTkxNSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKKysrIGIvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKQEAgLTM2NCwzOSArMzY0LDI2IEBACiBUaGUgYnl0ZXMgb2JqZWN0cyBmcm0gYW5kIHRvIG11c3QgYmUgb2YgdGhlIHNhbWUgbGVuZ3RoLiIpOwogCiBQeU9iamVjdCAqCi1fUHlfYnl0ZXNfbWFrZXRyYW5zKFB5T2JqZWN0ICphcmdzKQorX1B5X2J5dGVzX21ha2V0cmFucyhQeV9idWZmZXIgKmZybSwgUHlfYnVmZmVyICp0bykKIHsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKLSAgICBQeV9idWZmZXIgYmZybSA9IHtOVUxMLCBOVUxMfTsKLSAgICBQeV9idWZmZXIgYnRvID0ge05VTEwsIE5VTEx9OwogICAgIFB5X3NzaXplX3QgaTsKICAgICBjaGFyICpwOwogCi0gICAgYmZybS5sZW4gPSAtMTsKLSAgICBidG8ubGVuID0gLTE7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSo6bWFrZXRyYW5zIiwgJmJmcm0sICZidG8pKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoYmZybS5sZW4gIT0gYnRvLmxlbikgeworICAgIGlmIChmcm0tPmxlbiAhPSB0by0+bGVuKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIm1ha2V0cmFucyBhcmd1bWVudHMgbXVzdCBoYXZlIHNhbWUgbGVuZ3RoIik7Ci0gICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMjU2KTsKLSAgICBpZiAoIXJlcykgewotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQorICAgIGlmICghcmVzKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspCiAgICAgICAgIHBbaV0gPSAoY2hhcikgaTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgYmZybS5sZW47IGkrKykgewotICAgICAgICBwWygodW5zaWduZWQgY2hhciAqKWJmcm0uYnVmKVtpXV0gPSAoKGNoYXIgKilidG8uYnVmKVtpXTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgZnJtLT5sZW47IGkrKykgeworICAgICAgICBwWygodW5zaWduZWQgY2hhciAqKWZybS0+YnVmKVtpXV0gPSAoKGNoYXIgKil0by0+YnVmKVtpXTsKICAgICB9CiAKLWRvbmU6Ci0gICAgaWYgKGJmcm0ub2JqICE9IE5VTEwpCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJmcm0pOwotICAgIGlmIChiZnJtLm9iaiAhPSBOVUxMKQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidG8pOwogICAgIHJldHVybiByZXM7CiB9CmRpZmYgLS1naXQgYS9PYmplY3RzL2J5dGVzb2JqZWN0LmMgYi9PYmplY3RzL2J5dGVzb2JqZWN0LmMKaW5kZXggMjdmNDA2OS4uNTFkMDg3MSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9ieXRlc29iamVjdC5jCisrKyBiL09iamVjdHMvYnl0ZXNvYmplY3QuYwpAQCAtNSw4ICs1LDE2IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKICNpbmNsdWRlICJieXRlc19tZXRob2RzLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKICNpbmNsdWRlIDxzdGRkZWYuaD4KIAorLypbY2xpbmljIGlucHV0XQorY2xhc3MgYnl0ZXMgIlB5Qnl0ZXNPYmplY3QqIiAiJlB5Qnl0ZXNfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTFhMWQ5MTAyYWZjMWIwMGNdKi8KKworI2luY2x1ZGUgImNsaW5pYy9ieXRlc29iamVjdC5jLmgiCisKICNpZmRlZiBDT1VOVF9BTExPQ1MKIFB5X3NzaXplX3QgbnVsbF9zdHJpbmdzLCBvbmVfc3RyaW5nczsKICNlbmRpZgpAQCAtNDQsNiArNTIsNDUgQEAKICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKSkgb3IgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIHRoZSBgc3RyJwogICAgcGFyYW1ldGVyIChmb3IgUHlCeXRlc19Gcm9tU3RyaW5nKCkpLgogKi8KK3N0YXRpYyBQeU9iamVjdCAqCitfUHlCeXRlc19Gcm9tU2l6ZShQeV9zc2l6ZV90IHNpemUsIGludCB1c2VfY2FsbG9jKQoreworICAgIFB5Qnl0ZXNPYmplY3QgKm9wOworICAgIGFzc2VydChzaXplID49IDApOworCisgICAgaWYgKHNpemUgPT0gMCAmJiAob3AgPSBudWxsc3RyaW5nKSAhPSBOVUxMKSB7CisjaWZkZWYgQ09VTlRfQUxMT0NTCisgICAgICAgIG51bGxfc3RyaW5ncysrOworI2VuZGlmCisgICAgICAgIFB5X0lOQ1JFRihvcCk7CisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilvcDsKKyAgICB9CisKKyAgICBpZiAoKHNpemVfdClzaXplID4gKHNpemVfdClQWV9TU0laRV9UX01BWCAtIFB5Qnl0ZXNPYmplY3RfU0laRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJieXRlIHN0cmluZyBpcyB0b28gbGFyZ2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogSW5saW5lIFB5T2JqZWN0X05ld1ZhciAqLworICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICBvcCA9IChQeUJ5dGVzT2JqZWN0ICopUHlPYmplY3RfQ2FsbG9jKDEsIFB5Qnl0ZXNPYmplY3RfU0laRSArIHNpemUpOworICAgIGVsc2UKKyAgICAgICAgb3AgPSAoUHlCeXRlc09iamVjdCAqKVB5T2JqZWN0X01hbGxvYyhQeUJ5dGVzT2JqZWN0X1NJWkUgKyBzaXplKTsKKyAgICBpZiAob3AgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgKHZvaWQpUHlPYmplY3RfSU5JVF9WQVIob3AsICZQeUJ5dGVzX1R5cGUsIHNpemUpOworICAgIG9wLT5vYl9zaGFzaCA9IC0xOworICAgIGlmICghdXNlX2NhbGxvYykKKyAgICAgICAgb3AtPm9iX3N2YWxbc2l6ZV0gPSAnXDAnOworICAgIC8qIGVtcHR5IGJ5dGUgc3RyaW5nIHNpbmdsZXRvbiAqLworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgbnVsbHN0cmluZyA9IG9wOworICAgICAgICBQeV9JTkNSRUYob3ApOworICAgIH0KKyAgICByZXR1cm4gKFB5T2JqZWN0ICopIG9wOworfQorCiBQeU9iamVjdCAqCiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBzaXplKQogewpAQCAtNTMsMTMgKzEwMCw2IEBACiAgICAgICAgICAgICAiTmVnYXRpdmUgc2l6ZSBwYXNzZWQgdG8gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHNpemUgPT0gMCAmJiAob3AgPSBudWxsc3RyaW5nKSAhPSBOVUxMKSB7Ci0jaWZkZWYgQ09VTlRfQUxMT0NTCi0gICAgICAgIG51bGxfc3RyaW5ncysrOwotI2VuZGlmCi0gICAgICAgIFB5X0lOQ1JFRihvcCk7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKilvcDsKLSAgICB9CiAgICAgaWYgKHNpemUgPT0gMSAmJiBzdHIgIT0gTlVMTCAmJgogICAgICAgICAob3AgPSBjaGFyYWN0ZXJzWypzdHIgJiBVQ0hBUl9NQVhdKSAhPSBOVUxMKQogICAgIHsKQEAgLTcwLDI2ICsxMTAsMTUgQEAKICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKW9wOwogICAgIH0KIAotICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLSBQeUJ5dGVzT2JqZWN0X1NJWkUpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZSBzdHJpbmcgaXMgdG9vIGxhcmdlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIC8qIElubGluZSBQeU9iamVjdF9OZXdWYXIgKi8KLSAgICBvcCA9IChQeUJ5dGVzT2JqZWN0ICopUHlPYmplY3RfTUFMTE9DKFB5Qnl0ZXNPYmplY3RfU0laRSArIHNpemUpOworICAgIG9wID0gKFB5Qnl0ZXNPYmplY3QgKilfUHlCeXRlc19Gcm9tU2l6ZShzaXplLCAwKTsKICAgICBpZiAob3AgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgKHZvaWQpUHlPYmplY3RfSU5JVF9WQVIob3AsICZQeUJ5dGVzX1R5cGUsIHNpemUpOwotICAgIG9wLT5vYl9zaGFzaCA9IC0xOwotICAgIGlmIChzdHIgIT0gTlVMTCkKLSAgICAgICAgUHlfTUVNQ1BZKG9wLT5vYl9zdmFsLCBzdHIsIHNpemUpOwotICAgIG9wLT5vYl9zdmFsW3NpemVdID0gJ1wwJzsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopIG9wOworCisgICAgUHlfTUVNQ1BZKG9wLT5vYl9zdmFsLCBzdHIsIHNpemUpOwogICAgIC8qIHNoYXJlIHNob3J0IHN0cmluZ3MgKi8KLSAgICBpZiAoc2l6ZSA9PSAwKSB7Ci0gICAgICAgIG51bGxzdHJpbmcgPSBvcDsKLSAgICAgICAgUHlfSU5DUkVGKG9wKTsKLSAgICB9IGVsc2UgaWYgKHNpemUgPT0gMSAmJiBzdHIgIT0gTlVMTCkgeworICAgIGlmIChzaXplID09IDEpIHsKICAgICAgICAgY2hhcmFjdGVyc1sqc3RyICYgVUNIQVJfTUFYXSA9IG9wOwogICAgICAgICBQeV9JTkNSRUYob3ApOwogICAgIH0KQEAgLTM0Nyw2ICszNzYsNTgwIEBACiAgICAgcmV0dXJuIHJldDsKIH0KIAorLyogSGVscGVycyBmb3IgZm9ybWF0c3RyaW5nICovCisKK1B5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQorZ2V0bmV4dGFyZyhQeU9iamVjdCAqYXJncywgUHlfc3NpemVfdCBhcmdsZW4sIFB5X3NzaXplX3QgKnBfYXJnaWR4KQoreworICAgIFB5X3NzaXplX3QgYXJnaWR4ID0gKnBfYXJnaWR4OworICAgIGlmIChhcmdpZHggPCBhcmdsZW4pIHsKKyAgICAgICAgKCpwX2FyZ2lkeCkrKzsKKyAgICAgICAgaWYgKGFyZ2xlbiA8IDApCisgICAgICAgICAgICByZXR1cm4gYXJnczsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIFB5VHVwbGVfR2V0SXRlbShhcmdzLCBhcmdpZHgpOworICAgIH0KKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAibm90IGVub3VnaCBhcmd1bWVudHMgZm9yIGZvcm1hdCBzdHJpbmciKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyogRm9ybWF0IGNvZGVzCisgKiBGX0xKVVNUICAgICAgJy0nCisgKiBGX1NJR04gICAgICAgJysnCisgKiBGX0JMQU5LICAgICAgJyAnCisgKiBGX0FMVCAgICAgICAgJyMnCisgKiBGX1pFUk8gICAgICAgJzAnCisgKi8KKyNkZWZpbmUgRl9MSlVTVCAoMTw8MCkKKyNkZWZpbmUgRl9TSUdOICAoMTw8MSkKKyNkZWZpbmUgRl9CTEFOSyAoMTw8MikKKyNkZWZpbmUgRl9BTFQgICAoMTw8MykKKyNkZWZpbmUgRl9aRVJPICAoMTw8NCkKKworLyogUmV0dXJucyBhIG5ldyByZWZlcmVuY2UgdG8gYSBQeUJ5dGVzIG9iamVjdCwgb3IgTlVMTCBvbiBmYWlsdXJlLiAqLworCitzdGF0aWMgUHlPYmplY3QgKgorZm9ybWF0ZmxvYXQoUHlPYmplY3QgKnYsIGludCBmbGFncywgaW50IHByZWMsIGludCB0eXBlKQoreworICAgIGNoYXIgKnA7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBkb3VibGUgeDsKKworICAgIHggPSBQeUZsb2F0X0FzRG91YmxlKHYpOworICAgIGlmICh4ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiZmxvYXQgYXJndW1lbnQgcmVxdWlyZWQsICIKKyAgICAgICAgICAgICAgICAgICAgICJub3QgJS4yMDBzIiwgUHlfVFlQRSh2KS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChwcmVjIDwgMCkKKyAgICAgICAgcHJlYyA9IDY7CisKKyAgICBwID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKHgsIHR5cGUsIHByZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxhZ3MgJiBGX0FMVCkgPyBQeV9EVFNGX0FMVCA6IDAsIE5VTEwpOworCisgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShwLCBzdHJsZW4ocCkpOworICAgIFB5TWVtX0ZyZWUocCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Zvcm1hdGxvbmcoUHlPYmplY3QgKnYsIGludCBmbGFncywgaW50IHByZWMsIGludCB0eXBlKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQsICppb2JqOworICAgIGlmICh0eXBlID09ICdpJykKKyAgICAgICAgdHlwZSA9ICdkJzsKKyAgICBpZiAoUHlMb25nX0NoZWNrKHYpKQorICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Gb3JtYXRMb25nKHYsIGZsYWdzICYgRl9BTFQsIHByZWMsIHR5cGUpOworICAgIGlmIChQeU51bWJlcl9DaGVjayh2KSkgeworICAgICAgICAvKiBtYWtlIHN1cmUgbnVtYmVyIGlzIGEgdHlwZSBvZiBpbnRlZ2VyIGZvciBvLCB4LCBhbmQgWCAqLworICAgICAgICBpZiAodHlwZSA9PSAnbycgfHwgdHlwZSA9PSAneCcgfHwgdHlwZSA9PSAnWCcpCisgICAgICAgICAgICBpb2JqID0gUHlOdW1iZXJfSW5kZXgodik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlvYmogPSBQeU51bWJlcl9Mb25nKHYpOworICAgICAgICBpZiAoaW9iaiA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICghUHlMb25nX0NoZWNrKGlvYmopKQorICAgICAgICAgICAgUHlfQ0xFQVIoaW9iaik7CisgICAgICAgIGlmIChpb2JqICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfRm9ybWF0TG9uZyhpb2JqLCBmbGFncyAmIEZfQUxULCBwcmVjLCB0eXBlKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpb2JqKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgIiUlJWMgZm9ybWF0OiAlcyBpcyByZXF1aXJlZCwgbm90ICUuMjAwcyIsIHR5cGUsCisgICAgICAgICh0eXBlID09ICdvJyB8fCB0eXBlID09ICd4JyB8fCB0eXBlID09ICdYJykgPyAiYW4gaW50ZWdlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJhIG51bWJlciIsCisgICAgICAgIFB5X1RZUEUodiktPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW50CitieXRlX2NvbnZlcnRlcihQeU9iamVjdCAqYXJnLCBjaGFyICpwKQoreworICAgIGlmIChQeUJ5dGVzX0NoZWNrKGFyZykgJiYgUHlCeXRlc19TaXplKGFyZykgPT0gMSkgeworICAgICAgICAqcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGFyZylbMF07CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhhcmcpICYmIFB5Qnl0ZUFycmF5X1NpemUoYXJnKSA9PSAxKSB7CisgICAgICAgICpwID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKGFyZylbMF07CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKmlvYmo7CisgICAgICAgIGxvbmcgaXZhbDsKKyAgICAgICAgaW50IG92ZXJmbG93OworICAgICAgICAvKiBtYWtlIHN1cmUgbnVtYmVyIGlzIGEgdHlwZSBvZiBpbnRlZ2VyICovCisgICAgICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkgeworICAgICAgICAgICAgaXZhbCA9IFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhhcmcsICZvdmVyZmxvdyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpb2JqID0gUHlOdW1iZXJfSW5kZXgoYXJnKTsKKyAgICAgICAgICAgIGlmIChpb2JqID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaXZhbCA9IFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhpb2JqLCAmb3ZlcmZsb3cpOworICAgICAgICAgICAgUHlfREVDUkVGKGlvYmopOworICAgICAgICB9CisgICAgICAgIGlmICghb3ZlcmZsb3cgJiYgaXZhbCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBpZiAob3ZlcmZsb3cgfHwgISgwIDw9IGl2YWwgJiYgaXZhbCA8PSAyNTUpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWMgYXJnIG5vdCBpbiByYW5nZSgyNTYpIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICAqcCA9IChjaGFyKWl2YWw7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgb25FcnJvcjoKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAiJWMgcmVxdWlyZXMgYW4gaW50ZWdlciBpbiByYW5nZSgyNTYpIG9yIGEgc2luZ2xlIGJ5dGUiKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Zvcm1hdF9vYmooUHlPYmplY3QgKnYsIGNvbnN0IGNoYXIgKipwYnVmLCBQeV9zc2l6ZV90ICpwbGVuKQoreworICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKF9fYnl0ZXNfXyk7CisgICAgLyogaXMgaXQgYSBieXRlcyBvYmplY3Q/ICovCisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2sodikpIHsKKyAgICAgICAgKnBidWYgPSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKKyAgICAgICAgKnBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHYpOworICAgICAgICBQeV9JTkNSRUYodik7CisgICAgICAgIHJldHVybiB2OworICAgIH0KKyAgICBpZiAoUHlCeXRlQXJyYXlfQ2hlY2sodikpIHsKKyAgICAgICAgKnBidWYgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcodik7CisgICAgICAgICpwbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUodik7CisgICAgICAgIFB5X0lOQ1JFRih2KTsKKyAgICAgICAgcmV0dXJuIHY7CisgICAgfQorICAgIC8qIGRvZXMgaXQgc3VwcG9ydCBfX2J5dGVzX18/ICovCisgICAgZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKHYsICZQeUlkX19fYnl0ZXNfXyk7CisgICAgaWYgKGZ1bmMgIT0gTlVMTCkgeworICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGZ1bmMsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2socmVzdWx0KSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiX19ieXRlc19fIHJldHVybmVkIG5vbi1ieXRlcyAodHlwZSAlLjIwMHMpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHJlc3VsdCktPnRwX25hbWUpOworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICAqcGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgICAgICpwbGVuID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAiJSViIHJlcXVpcmVzIGJ5dGVzLCBvciBhbiBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIF9fYnl0ZXNfXywgbm90ICclLjEwMHMnIiwKKyAgICAgICAgICAgICAgICAgUHlfVFlQRSh2KS0+dHBfbmFtZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIGZtdCUodjEsdjIsLi4uKSBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gc3ByaW50ZihmbXQsIHYxLCB2MiwgLi4uKQorCisgICBGT1JNQVRCVUZMRU4gaXMgdGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyIGluIHdoaWNoIHRoZSBpbnRzICYKKyAgIGNoYXJzIGFyZSBmb3JtYXR0ZWQuIFhYWCBUaGlzIGlzIGEgbWFnaWMgbnVtYmVyLiBFYWNoIGZvcm1hdHRpbmcKKyAgIHJvdXRpbmUgZG9lcyBib3VuZHMgY2hlY2tpbmcgdG8gZW5zdXJlIG5vIG92ZXJmbG93LCBidXQgYSBiZXR0ZXIKKyAgIHNvbHV0aW9uIG1heSBiZSB0byBtYWxsb2MgYSBidWZmZXIgb2YgYXBwcm9wcmlhdGUgc2l6ZSBmb3IgZWFjaAorICAgZm9ybWF0LiBGb3Igbm93LCB0aGUgY3VycmVudCBzb2x1dGlvbiBpcyBzdWZmaWNpZW50LgorKi8KKyNkZWZpbmUgRk9STUFUQlVGTEVOIChzaXplX3QpMTIwCisKK1B5T2JqZWN0ICoKK19QeUJ5dGVzX0Zvcm1hdChQeU9iamVjdCAqZm9ybWF0LCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjaGFyICpmbXQsICpyZXM7CisgICAgUHlfc3NpemVfdCBhcmdsZW4sIGFyZ2lkeDsKKyAgICBQeV9zc2l6ZV90IHJlc2xlbiwgcmVzY250LCBmbXRjbnQ7CisgICAgaW50IGFyZ3Nfb3duZWQgPSAwOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKmRpY3QgPSBOVUxMOworICAgIGlmIChmb3JtYXQgPT0gTlVMTCB8fCAhUHlCeXRlc19DaGVjayhmb3JtYXQpIHx8IGFyZ3MgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGZtdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGZvcm1hdCk7CisgICAgZm10Y250ID0gUHlCeXRlc19HRVRfU0laRShmb3JtYXQpOworICAgIHJlc2xlbiA9IHJlc2NudCA9IGZtdGNudCArIDEwMDsKKyAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgcmVzbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlcyA9IFB5Qnl0ZXNfQXNTdHJpbmcocmVzdWx0KTsKKyAgICBpZiAoUHlUdXBsZV9DaGVjayhhcmdzKSkgeworICAgICAgICBhcmdsZW4gPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgICAgICBhcmdpZHggPSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXJnbGVuID0gLTE7CisgICAgICAgIGFyZ2lkeCA9IC0yOworICAgIH0KKyAgICBpZiAoUHlfVFlQRShhcmdzKS0+dHBfYXNfbWFwcGluZyAmJiBQeV9UWVBFKGFyZ3MpLT50cF9hc19tYXBwaW5nLT5tcF9zdWJzY3JpcHQgJiYKKyAgICAgICAgIVB5VHVwbGVfQ2hlY2soYXJncykgJiYgIVB5Qnl0ZXNfQ2hlY2soYXJncykgJiYgIVB5VW5pY29kZV9DaGVjayhhcmdzKSAmJgorICAgICAgICAhUHlCeXRlQXJyYXlfQ2hlY2soYXJncykpIHsKKyAgICAgICAgICAgIGRpY3QgPSBhcmdzOworICAgIH0KKyAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgeworICAgICAgICBpZiAoKmZtdCAhPSAnJScpIHsKKyAgICAgICAgICAgIGlmICgtLXJlc2NudCA8IDApIHsKKyAgICAgICAgICAgICAgICByZXNjbnQgPSBmbXRjbnQgKyAxMDA7CisgICAgICAgICAgICAgICAgcmVzbGVuICs9IHJlc2NudDsKKyAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIHJlc2xlbikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIHJlcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkKKyAgICAgICAgICAgICAgICAgICAgKyByZXNsZW4gLSByZXNjbnQ7CisgICAgICAgICAgICAgICAgLS1yZXNjbnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqcmVzKysgPSAqZm10Kys7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBHb3QgYSBmb3JtYXQgc3BlY2lmaWVyICovCisgICAgICAgICAgICBpbnQgZmxhZ3MgPSAwOworICAgICAgICAgICAgUHlfc3NpemVfdCB3aWR0aCA9IC0xOworICAgICAgICAgICAgaW50IHByZWMgPSAtMTsKKyAgICAgICAgICAgIGludCBjID0gJ1wwJzsKKyAgICAgICAgICAgIGludCBmaWxsOworICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBOVUxMOworICAgICAgICAgICAgY29uc3QgY2hhciAqcGJ1ZiA9IE5VTEw7CisgICAgICAgICAgICBpbnQgc2lnbjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuID0gMDsKKyAgICAgICAgICAgIGNoYXIgb25lY2hhcjsgLyogRm9yIGJ5dGVfY29udmVydGVyKCkgKi8KKworICAgICAgICAgICAgZm10Kys7CisgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKCcpIHsKKyAgICAgICAgICAgICAgICBjaGFyICprZXlzdGFydDsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGtleWxlbjsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5OworICAgICAgICAgICAgICAgIGludCBwY291bnQgPSAxOworCisgICAgICAgICAgICAgICAgaWYgKGRpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0IHJlcXVpcmVzIGEgbWFwcGluZyIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICArK2ZtdDsKKyAgICAgICAgICAgICAgICAtLWZtdGNudDsKKyAgICAgICAgICAgICAgICBrZXlzdGFydCA9IGZtdDsKKyAgICAgICAgICAgICAgICAvKiBTa2lwIG92ZXIgYmFsYW5jZWQgcGFyZW50aGVzZXMgKi8KKyAgICAgICAgICAgICAgICB3aGlsZSAocGNvdW50ID4gMCAmJiAtLWZtdGNudCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICcpJykKKyAgICAgICAgICAgICAgICAgICAgICAgIC0tcGNvdW50OworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgqZm10ID09ICcoJykKKyAgICAgICAgICAgICAgICAgICAgICAgICsrcGNvdW50OworICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAga2V5bGVuID0gZm10IC0ga2V5c3RhcnQgLSAxOworICAgICAgICAgICAgICAgIGlmIChmbXRjbnQgPCAwIHx8IHBjb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluY29tcGxldGUgZm9ybWF0IGtleSIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBrZXkgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGtleXN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWxlbik7CisgICAgICAgICAgICAgICAgaWYgKGtleSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIGlmIChhcmdzX293bmVkKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgYXJnc19vd25lZCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFyZ3MgPSBQeU9iamVjdF9HZXRJdGVtKGRpY3QsIGtleSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhcmdzX293bmVkID0gMTsKKyAgICAgICAgICAgICAgICBhcmdsZW4gPSAtMTsKKyAgICAgICAgICAgICAgICBhcmdpZHggPSAtMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdoaWxlICgtLWZtdGNudCA+PSAwKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChjID0gKmZtdCsrKSB7CisgICAgICAgICAgICAgICAgY2FzZSAnLSc6IGZsYWdzIHw9IEZfTEpVU1Q7IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGNhc2UgJysnOiBmbGFncyB8PSBGX1NJR047IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGNhc2UgJyAnOiBmbGFncyB8PSBGX0JMQU5LOyBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBjYXNlICcjJzogZmxhZ3MgfD0gRl9BTFQ7IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGNhc2UgJzAnOiBmbGFncyB8PSBGX1pFUk87IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjID09ICcqJykgeworICAgICAgICAgICAgICAgIHYgPSBnZXRuZXh0YXJnKGFyZ3MsIGFyZ2xlbiwgJmFyZ2lkeCk7CisgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh2KSkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiogd2FudHMgaW50Iik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdpZHRoID0gUHlMb25nX0FzU3NpemVfdCh2KTsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IEZfTEpVU1Q7CisgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gLXdpZHRoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoLS1mbXRjbnQgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgYyA9ICpmbXQrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gMCAmJiBpc2RpZ2l0KGMpKSB7CisgICAgICAgICAgICAgICAgd2lkdGggPSBjIC0gJzAnOworICAgICAgICAgICAgICAgIHdoaWxlICgtLWZtdGNudCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGMgPSBQeV9DSEFSTUFTSygqZm10KyspOworICAgICAgICAgICAgICAgICAgICBpZiAoIWlzZGlnaXQoYykpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gKFBZX1NTSVpFX1RfTUFYIC0gKChpbnQpYyAtICcwJykpIC8gMTApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCB0b28gYmlnIik7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gd2lkdGgqMTAgKyAoYyAtICcwJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGMgPT0gJy4nKSB7CisgICAgICAgICAgICAgICAgcHJlYyA9IDA7CisgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCisgICAgICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJyonKSB7CisgICAgICAgICAgICAgICAgICAgIHYgPSBnZXRuZXh0YXJnKGFyZ3MsIGFyZ2xlbiwgJmFyZ2lkeCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh2KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKiB3YW50cyBpbnQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcHJlYyA9IF9QeUxvbmdfQXNJbnQodik7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcmVjID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBpZiAocHJlYyA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBwcmVjID0gMDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjID49IDAgJiYgaXNkaWdpdChjKSkgeworICAgICAgICAgICAgICAgICAgICBwcmVjID0gYyAtICcwJzsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBQeV9DSEFSTUFTSygqZm10KyspOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc2RpZ2l0KGMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWMgPiAoSU5UX01BWCAtICgoaW50KWMgLSAnMCcpKSAvIDEwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJlYyB0b28gYmlnIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWMgPSBwcmVjKjEwICsgKGMgLSAnMCcpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSAvKiBwcmVjICovCisgICAgICAgICAgICBpZiAoZm10Y250ID49IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnaCcgfHwgYyA9PSAnbCcgfHwgYyA9PSAnTCcpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChmbXRjbnQgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmNvbXBsZXRlIGZvcm1hdCIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYyAhPSAnJScpIHsKKyAgICAgICAgICAgICAgICB2ID0gZ2V0bmV4dGFyZyhhcmdzLCBhcmdsZW4sICZhcmdpZHgpOworICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzaWduID0gMDsKKyAgICAgICAgICAgIGZpbGwgPSAnICc7CisgICAgICAgICAgICBzd2l0Y2ggKGMpIHsKKyAgICAgICAgICAgIGNhc2UgJyUnOgorICAgICAgICAgICAgICAgIHBidWYgPSAiJSI7CisgICAgICAgICAgICAgICAgbGVuID0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ3InOgorICAgICAgICAgICAgICAgIC8vICVyIGlzIG9ubHkgZm9yIDIvMyBjb2RlOyAzIG9ubHkgY29kZSBzaG91bGQgdXNlICVhCisgICAgICAgICAgICBjYXNlICdhJzoKKyAgICAgICAgICAgICAgICB0ZW1wID0gUHlPYmplY3RfQVNDSUkodik7CisgICAgICAgICAgICAgICAgaWYgKHRlbXAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0lTX0FTQ0lJKHRlbXApKTsKKyAgICAgICAgICAgICAgICBwYnVmID0gKGNvbnN0IGNoYXIgKilQeVVuaWNvZGVfMUJZVEVfREFUQSh0ZW1wKTsKKyAgICAgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0ZW1wKTsKKyAgICAgICAgICAgICAgICBpZiAocHJlYyA+PSAwICYmIGxlbiA+IHByZWMpCisgICAgICAgICAgICAgICAgICAgIGxlbiA9IHByZWM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdzJzoKKyAgICAgICAgICAgICAgICAvLyAlcyBpcyBvbmx5IGZvciAyLzMgY29kZTsgMyBvbmx5IGNvZGUgc2hvdWxkIHVzZSAlYgorICAgICAgICAgICAgY2FzZSAnYic6CisgICAgICAgICAgICAgICAgdGVtcCA9IGZvcm1hdF9vYmoodiwgJnBidWYsICZsZW4pOworICAgICAgICAgICAgICAgIGlmICh0ZW1wID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgaWYgKHByZWMgPj0gMCAmJiBsZW4gPiBwcmVjKQorICAgICAgICAgICAgICAgICAgICBsZW4gPSBwcmVjOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgIGNhc2UgJ3UnOgorICAgICAgICAgICAgY2FzZSAnbyc6CisgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgICAgIHRlbXAgPSBmb3JtYXRsb25nKHYsIGZsYWdzLCBwcmVjLCBjKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRlbXApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19BU0NJSSh0ZW1wKSk7CisgICAgICAgICAgICAgICAgcGJ1ZiA9IChjb25zdCBjaGFyICopUHlVbmljb2RlXzFCWVRFX0RBVEEodGVtcCk7CisgICAgICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodGVtcCk7CisgICAgICAgICAgICAgICAgc2lnbiA9IDE7CisgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRl9aRVJPKQorICAgICAgICAgICAgICAgICAgICBmaWxsID0gJzAnOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnZSc6CisgICAgICAgICAgICBjYXNlICdFJzoKKyAgICAgICAgICAgIGNhc2UgJ2YnOgorICAgICAgICAgICAgY2FzZSAnRic6CisgICAgICAgICAgICBjYXNlICdnJzoKKyAgICAgICAgICAgIGNhc2UgJ0cnOgorICAgICAgICAgICAgICAgIHRlbXAgPSBmb3JtYXRmbG9hdCh2LCBmbGFncywgcHJlYywgYyk7CisgICAgICAgICAgICAgICAgaWYgKHRlbXAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBwYnVmID0gUHlCeXRlc19BU19TVFJJTkcodGVtcCk7CisgICAgICAgICAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRSh0ZW1wKTsKKyAgICAgICAgICAgICAgICBzaWduID0gMTsKKyAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBGX1pFUk8pCisgICAgICAgICAgICAgICAgICAgIGZpbGwgPSAnMCc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdjJzoKKyAgICAgICAgICAgICAgICBwYnVmID0gJm9uZWNoYXI7CisgICAgICAgICAgICAgICAgbGVuID0gYnl0ZV9jb252ZXJ0ZXIodiwgJm9uZWNoYXIpOworICAgICAgICAgICAgICAgIGlmICghbGVuKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBmb3JtYXQgY2hhcmFjdGVyICclYycgKDB4JXgpICIKKyAgICAgICAgICAgICAgICAgICJhdCBpbmRleCAlemQiLAorICAgICAgICAgICAgICAgICAgYywgYywKKyAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KShmbXQgLSAxIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FzU3RyaW5nKGZvcm1hdCkpKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNpZ24pIHsKKyAgICAgICAgICAgICAgICBpZiAoKnBidWYgPT0gJy0nIHx8ICpwYnVmID09ICcrJykgeworICAgICAgICAgICAgICAgICAgICBzaWduID0gKnBidWYrKzsKKyAgICAgICAgICAgICAgICAgICAgbGVuLS07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgRl9TSUdOKQorICAgICAgICAgICAgICAgICAgICBzaWduID0gJysnOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgRl9CTEFOSykKKyAgICAgICAgICAgICAgICAgICAgc2lnbiA9ICcgJzsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHdpZHRoIDwgbGVuKQorICAgICAgICAgICAgICAgIHdpZHRoID0gbGVuOworICAgICAgICAgICAgaWYgKHJlc2NudCAtIChzaWduICE9IDApIDwgd2lkdGgpIHsKKyAgICAgICAgICAgICAgICByZXNsZW4gLT0gcmVzY250OworICAgICAgICAgICAgICAgIHJlc2NudCA9IHdpZHRoICsgZm10Y250ICsgMTAwOworICAgICAgICAgICAgICAgIHJlc2xlbiArPSByZXNjbnQ7CisgICAgICAgICAgICAgICAgaWYgKHJlc2xlbiA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIHJlc2xlbikpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkKKyAgICAgICAgICAgICAgICAgICAgKyByZXNsZW4gLSByZXNjbnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2lnbikgeworICAgICAgICAgICAgICAgIGlmIChmaWxsICE9ICcgJykKKyAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gc2lnbjsKKyAgICAgICAgICAgICAgICByZXNjbnQtLTsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4pCisgICAgICAgICAgICAgICAgICAgIHdpZHRoLS07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKGZsYWdzICYgRl9BTFQpICYmIChjID09ICd4JyB8fCBjID09ICdYJykpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQocGJ1ZlswXSA9PSAnMCcpOworICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzFdID09IGMpOworICAgICAgICAgICAgICAgIGlmIChmaWxsICE9ICcgJykgeworICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOworICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXNjbnQgLT0gMjsKKyAgICAgICAgICAgICAgICB3aWR0aCAtPSAyOworICAgICAgICAgICAgICAgIGlmICh3aWR0aCA8IDApCisgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gMDsKKyAgICAgICAgICAgICAgICBsZW4gLT0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh3aWR0aCA+IGxlbiAmJiAhKGZsYWdzICYgRl9MSlVTVCkpIHsKKyAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgIC0tcmVzY250OworICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBmaWxsOworICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0td2lkdGggPiBsZW4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGZpbGwgPT0gJyAnKSB7CisgICAgICAgICAgICAgICAgaWYgKHNpZ24pCisgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IHNpZ247CisgICAgICAgICAgICAgICAgaWYgKChmbGFncyAmIEZfQUxUKSAmJgorICAgICAgICAgICAgICAgICAgICAoYyA9PSAneCcgfHwgYyA9PSAnWCcpKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzBdID09ICcwJyk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzFdID09IGMpOworICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOworICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X01FTUNQWShyZXMsIHBidWYsIGxlbik7CisgICAgICAgICAgICByZXMgKz0gbGVuOworICAgICAgICAgICAgcmVzY250IC09IGxlbjsKKyAgICAgICAgICAgIHdoaWxlICgtLXdpZHRoID49IGxlbikgeworICAgICAgICAgICAgICAgIC0tcmVzY250OworICAgICAgICAgICAgICAgICpyZXMrKyA9ICcgJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkaWN0ICYmIChhcmdpZHggPCBhcmdsZW4pICYmIGMgIT0gJyUnKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIGJ5dGVzIGZvcm1hdHRpbmciKTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOworICAgICAgICB9IC8qICclJyAqLworICAgIH0gLyogdW50aWwgZW5kICovCisgICAgaWYgKGFyZ2lkeCA8IGFyZ2xlbiAmJiAhZGljdCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgYnl0ZXMgZm9ybWF0dGluZyIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAoYXJnc19vd25lZCkgeworICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgfQorICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgcmVzbGVuIC0gcmVzY250KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHJlc3VsdDsKKworIGVycm9yOgorICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIGlmIChhcmdzX293bmVkKSB7CisgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qID0tPSAqLworCiBzdGF0aWMgdm9pZAogYnl0ZXNfZGVhbGxvYyhQeU9iamVjdCAqb3ApCiB7CkBAIC01NDAsOCArMTE0Myw4IEBACiAgICAgaWYgKGxlbiAhPSBOVUxMKQogICAgICAgICAqbGVuID0gUHlCeXRlc19HRVRfU0laRShvYmopOwogICAgIGVsc2UgaWYgKHN0cmxlbigqcykgIT0gKHNpemVfdClQeUJ5dGVzX0dFVF9TSVpFKG9iaikpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBieXRlcyB3aXRoIG5vIG51bGwiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZW1iZWRkZWQgbnVsbCBieXRlIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC04MzMsNiArMTQzNiwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbXBhcmlzb24gYmV0d2VlbiBieXRlcyBhbmQgc3RyaW5nIiwgMSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmMgPSBQeU9iamVjdF9Jc0luc3RhbmNlKChQeU9iamVjdCopYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0KikmUHlMb25nX1R5cGUpOworICAgICAgICAgICAgICAgIGlmICghcmMpCisgICAgICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfSXNJbnN0YW5jZSgoUHlPYmplY3QqKWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QqKSZQeUxvbmdfVHlwZSk7CisgICAgICAgICAgICAgICAgaWYgKHJjIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgaWYgKHJjKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfQnl0ZXNXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21wYXJpc29uIGJldHdlZW4gYnl0ZXMgYW5kIGludCIsIDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IFB5X05vdEltcGxlbWVudGVkOwogICAgIH0KQEAgLTk1Nyw3ICsxNTc0LDcgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiYnl0ZSBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgImJ5dGUgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcywgbm90ICUuMjAwcyIsCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGl0ZW0pLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtOTk3LDM3ICsxNjE0LDM0IEBACiAjZGVmaW5lIFJJR0hUU1RSSVAgMQogI2RlZmluZSBCT1RIU1RSSVAgMgogCi0vKiBBcnJheXMgaW5kZXhlZCBieSBhYm92ZSAqLwotc3RhdGljIGNvbnN0IGNoYXIgKnN0cmlwZm9ybWF0W10gPSB7InxPOmxzdHJpcCIsICJ8Tzpyc3RyaXAiLCAifE86c3RyaXAifTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLnNwbGl0CiAKLSNkZWZpbmUgU1RSSVBOQU1FKGkpIChzdHJpcGZvcm1hdFtpXSszKQorICAgIHNlcDogb2JqZWN0ID0gTm9uZQorICAgICAgICBUaGUgZGVsaW1pdGVyIGFjY29yZGluZyB3aGljaCB0byBzcGxpdCB0aGUgYnl0ZXMuCisgICAgICAgIE5vbmUgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBzcGxpdCBvbiBBU0NJSSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMKKyAgICAgICAgKHNwYWNlLCB0YWIsIHJldHVybiwgbmV3bGluZSwgZm9ybWZlZWQsIHZlcnRpY2FsIHRhYikuCisgICAgbWF4c3BsaXQ6IFB5X3NzaXplX3QgPSAtMQorICAgICAgICBNYXhpbXVtIG51bWJlciBvZiBzcGxpdHMgdG8gZG8uCisgICAgICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgbm8gbGltaXQuCiAKLVB5RG9jX1NUUlZBUihzcGxpdF9fZG9jX18sCi0iQi5zcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpIC0+IGxpc3Qgb2YgYnl0ZXNcblwKLVxuXAotUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gQiwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuXG5cCi1JZiBzZXAgaXMgbm90IHNwZWNpZmllZCBvciBpcyBOb25lLCBCIGlzIHNwbGl0IG9uIEFTQ0lJIHdoaXRlc3BhY2VcblwKLWNoYXJhY3RlcnMgKHNwYWNlLCB0YWIsIHJldHVybiwgbmV3bGluZSwgZm9ybWZlZWQsIHZlcnRpY2FsIHRhYikuXG5cCi1JZiBtYXhzcGxpdCBpcyBnaXZlbiwgYXQgbW9zdCBtYXhzcGxpdCBzcGxpdHMgYXJlIGRvbmUuIik7CitSZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiB0aGUgYnl0ZXMsIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfc3BsaXQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorYnl0ZXNfc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGJkZTQ0ZGFjYjM2ZWYyZSBpbnB1dD04YjgwOWIzOTA3NGFiYmZhXSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzZXAiLCAibWF4c3BsaXQiLCAwfTsKICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIG47Ci0gICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogICAgIGNvbnN0IGNoYXIgKnMgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgKnN1YjsKICAgICBQeV9idWZmZXIgdnN1YjsKLSAgICBQeU9iamVjdCAqbGlzdCwgKnN1Ym9iaiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmxpc3Q7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9uOnNwbGl0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZzdWJvYmosICZtYXhzcGxpdCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChtYXhzcGxpdCA8IDApCiAgICAgICAgIG1heHNwbGl0ID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgaWYgKHN1Ym9iaiA9PSBQeV9Ob25lKQorICAgIGlmIChzZXAgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9zcGxpdF93aGl0ZXNwYWNlKChQeU9iamVjdCopIHNlbGYsIHMsIGxlbiwgbWF4c3BsaXQpOwotICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vib2JqLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc2VwLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzdWIgPSB2c3ViLmJ1ZjsKICAgICBuID0gdnN1Yi5sZW47CkBAIC0xMDM3LDg1ICsxNjUxLDg0IEBACiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLVB5RG9jX1NUUlZBUihwYXJ0aXRpb25fX2RvY19fLAotIkIucGFydGl0aW9uKHNlcCkgLT4gKGhlYWQsIHNlcCwgdGFpbClcblwKLVxuXAotU2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiBCLCBhbmQgcmV0dXJuIHRoZSBwYXJ0IGJlZm9yZSBpdCxcblwKLXRoZSBzZXBhcmF0b3IgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgaXQuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuXAotZm91bmQsIHJldHVybnMgQiBhbmQgdHdvIGVtcHR5IGJ5dGVzIG9iamVjdHMuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlcy5wYXJ0aXRpb24KKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKKyAgICBzZXA6IFB5X2J1ZmZlcgorICAgIC8KKworUGFydGl0aW9uIHRoZSBieXRlcyBpbnRvIHRocmVlIHBhcnRzIHVzaW5nIHRoZSBnaXZlbiBzZXBhcmF0b3IuCisKK1RoaXMgd2lsbCBzZWFyY2ggZm9yIHRoZSBzZXBhcmF0b3Igc2VwIGluIHRoZSBieXRlcy4gSWYgdGhlIHNlcGFyYXRvciBpcyBmb3VuZCwKK3JldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3IKK2l0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIGl0LgorCitJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgb3JpZ2luYWwgYnl0ZXMKK29iamVjdCBhbmQgdHdvIGVtcHR5IGJ5dGVzIG9iamVjdHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19wYXJ0aXRpb24oUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcF9vYmopCitieXRlc19wYXJ0aXRpb25faW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnNlcCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNTMyYjM5MmExN2ZmNjk1IGlucHV0PWJjODU1ZGM2M2NhOTQ5ZGVdKi8KIHsKLSAgICBQeV9idWZmZXIgc2VwID0ge05VTEwsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpyZXM7Ci0KLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHNlcF9vYmosICZzZXAsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXMgPSBzdHJpbmdsaWJfcGFydGl0aW9uKAorICAgIHJldHVybiBzdHJpbmdsaWJfcGFydGl0aW9uKAogICAgICAgICAoUHlPYmplY3QqKSBzZWxmLAogICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwKLSAgICAgICAgc2VwX29iaiwgc2VwLmJ1Ziwgc2VwLmxlbgorICAgICAgICBzZXAtPm9iaiwgKGNvbnN0IGNoYXIgKilzZXAtPmJ1Ziwgc2VwLT5sZW4KICAgICAgICAgKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzZXApOwotICAgIHJldHVybiByZXM7CiB9CiAKLVB5RG9jX1NUUlZBUihycGFydGl0aW9uX19kb2NfXywKLSJCLnJwYXJ0aXRpb24oc2VwKSAtPiAoaGVhZCwgc2VwLCB0YWlsKVxuXAotXG5cCi1TZWFyY2ggZm9yIHRoZSBzZXBhcmF0b3Igc2VwIGluIEIsIHN0YXJ0aW5nIGF0IHRoZSBlbmQgb2YgQixcblwKLWFuZCByZXR1cm4gdGhlIHBhcnQgYmVmb3JlIGl0LCB0aGUgc2VwYXJhdG9yIGl0c2VsZiwgYW5kIHRoZVxuXAotcGFydCBhZnRlciBpdC4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90IGZvdW5kLCByZXR1cm5zIHR3byBlbXB0eVxuXAotYnl0ZXMgb2JqZWN0cyBhbmQgQi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLnJwYXJ0aXRpb24KKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKKyAgICBzZXA6IFB5X2J1ZmZlcgorICAgIC8KKworUGFydGl0aW9uIHRoZSBieXRlcyBpbnRvIHRocmVlIHBhcnRzIHVzaW5nIHRoZSBnaXZlbiBzZXBhcmF0b3IuCisKK1RoaXMgd2lsbCBzZWFyY2ggZm9yIHRoZSBzZXBhcmF0b3Igc2VwIGluIHRoZSBieXRlcywgc3RhcnRpbmcgYW5kIHRoZSBlbmQuIElmCit0aGUgc2VwYXJhdG9yIGlzIGZvdW5kLCByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUKK3NlcGFyYXRvciwgdGhlIHNlcGFyYXRvciBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciBpdC4KKworSWYgdGhlIHNlcGFyYXRvciBpcyBub3QgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IGJ5dGVzCitvYmplY3RzIGFuZCB0aGUgb3JpZ2luYWwgYnl0ZXMgb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcnBhcnRpdGlvbihQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwX29iaikKK2J5dGVzX3JwYXJ0aXRpb25faW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnNlcCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOTFiMTE0Y2JiMDI4ZTUwIGlucHV0PTY1ODhmZmYyNjJhOTE3MGVdKi8KIHsKLSAgICBQeV9idWZmZXIgc2VwID0ge05VTEwsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpyZXM7Ci0KLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHNlcF9vYmosICZzZXAsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXMgPSBzdHJpbmdsaWJfcnBhcnRpdGlvbigKKyAgICByZXR1cm4gc3RyaW5nbGliX3JwYXJ0aXRpb24oCiAgICAgICAgIChQeU9iamVjdCopIHNlbGYsCiAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLAotICAgICAgICBzZXBfb2JqLCBzZXAuYnVmLCBzZXAubGVuCisgICAgICAgIHNlcC0+b2JqLCAoY29uc3QgY2hhciAqKXNlcC0+YnVmLCBzZXAtPmxlbgogICAgICAgICApOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlcCk7Ci0gICAgcmV0dXJuIHJlczsKIH0KIAotUHlEb2NfU1RSVkFSKHJzcGxpdF9fZG9jX18sCi0iQi5yc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIGJ5dGVzXG5cCi1cblwKLVJldHVybiBhIGxpc3Qgb2YgdGhlIHNlY3Rpb25zIGluIEIsIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLFxuXAotc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiBCIGFuZCB3b3JraW5nIHRvIHRoZSBmcm9udC5cblwKLUlmIHNlcCBpcyBub3QgZ2l2ZW4sIEIgaXMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzXG5cCi0oc3BhY2UsIHRhYiwgcmV0dXJuLCBuZXdsaW5lLCBmb3JtZmVlZCwgdmVydGljYWwgdGFiKS5cblwKLUlmIG1heHNwbGl0IGlzIGdpdmVuLCBhdCBtb3N0IG1heHNwbGl0IHNwbGl0cyBhcmUgZG9uZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLnJzcGxpdCA9IGJ5dGVzLnNwbGl0CiAKK1JldHVybiBhIGxpc3Qgb2YgdGhlIHNlY3Rpb25zIGluIHRoZSBieXRlcywgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuCisKK1NwbGl0dGluZyBpcyBkb25lIHN0YXJ0aW5nIGF0IHRoZSBlbmQgb2YgdGhlIGJ5dGVzIGFuZCB3b3JraW5nIHRvIHRoZSBmcm9udC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JzcGxpdChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitieXRlc19yc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGI2NTcwYjk3NzkxMWQ4OCBpbnB1dD0wZjg2YzlmMjhmN2Q3YjdiXSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzZXAiLCAibWF4c3BsaXQiLCAwfTsKICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIG47Ci0gICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogICAgIGNvbnN0IGNoYXIgKnMgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgKnN1YjsKICAgICBQeV9idWZmZXIgdnN1YjsKLSAgICBQeU9iamVjdCAqbGlzdCwgKnN1Ym9iaiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmxpc3Q7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9uOnJzcGxpdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vib2JqLCAmbWF4c3BsaXQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWF4c3BsaXQgPCAwKQogICAgICAgICBtYXhzcGxpdCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIGlmIChzdWJvYmogPT0gUHlfTm9uZSkKKyAgICBpZiAoc2VwID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiBzdHJpbmdsaWJfcnNwbGl0X3doaXRlc3BhY2UoKFB5T2JqZWN0Kikgc2VsZiwgcywgbGVuLCBtYXhzcGxpdCk7Ci0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJvYmosICZ2c3ViLCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzZXAsICZ2c3ViLCBQeUJVRl9TSU1QTEUpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHN1YiA9IHZzdWIuYnVmOwogICAgIG4gPSB2c3ViLmxlbjsKQEAgLTExMjYsMTYgKzE3MzksMjYgQEAKIH0KIAogCi1QeURvY19TVFJWQVIoam9pbl9fZG9jX18sCi0iQi5qb2luKGl0ZXJhYmxlX29mX2J5dGVzKSAtPiBieXRlc1xuXAotXG5cCi1Db25jYXRlbmF0ZSBhbnkgbnVtYmVyIG9mIGJ5dGVzIG9iamVjdHMsIHdpdGggQiBpbiBiZXR3ZWVuIGVhY2ggcGFpci5cblwKLUV4YW1wbGU6IGInLicuam9pbihbYidhYicsIGIncHEnLCBiJ3JzJ10pIC0+IGInYWIucHEucnMnLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZXMuam9pbgorCisgICAgaXRlcmFibGVfb2ZfYnl0ZXM6IG9iamVjdAorICAgIC8KKworQ29uY2F0ZW5hdGUgYW55IG51bWJlciBvZiBieXRlcyBvYmplY3RzLgorCitUaGUgYnl0ZXMgd2hvc2UgbWV0aG9kIGlzIGNhbGxlZCBpcyBpbnNlcnRlZCBpbiBiZXR3ZWVuIGVhY2ggcGFpci4KKworVGhlIHJlc3VsdCBpcyByZXR1cm5lZCBhcyBhIG5ldyBieXRlcyBvYmplY3QuCisKK0V4YW1wbGU6IGInLicuam9pbihbYidhYicsIGIncHEnLCBiJ3JzJ10pIC0+IGInYWIucHEucnMnLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfam9pbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKml0ZXJhYmxlKQorYnl0ZXNfam9pbihQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICppdGVyYWJsZV9vZl9ieXRlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MzRhZmYxNDc2NGZmOTk3IGlucHV0PTdmZTM3N2I5NWJkNTQ5ZDJdKi8KIHsKLSAgICByZXR1cm4gc3RyaW5nbGliX2J5dGVzX2pvaW4oc2VsZiwgaXRlcmFibGUpOworICAgIHJldHVybiBzdHJpbmdsaWJfYnl0ZXNfam9pbigoUHlPYmplY3QqKXNlbGYsIGl0ZXJhYmxlX29mX2J5dGVzKTsKIH0KIAogUHlPYmplY3QgKgpAQCAtMTE0Myw3ICsxNzY2LDcgQEAKIHsKICAgICBhc3NlcnQoc2VwICE9IE5VTEwgJiYgUHlCeXRlc19DaGVjayhzZXApKTsKICAgICBhc3NlcnQoeCAhPSBOVUxMKTsKLSAgICByZXR1cm4gYnl0ZXNfam9pbihzZXAsIHgpOworICAgIHJldHVybiBieXRlc19qb2luKChQeUJ5dGVzT2JqZWN0KilzZXAsIHgpOwogfQogCiAvKiBoZWxwZXIgbWFjcm8gdG8gZml4dXAgc3RhcnQvZW5kIHNsaWNlIHZhbHVlcyAqLwpAQCAtMTE2OCw3ICsxNzkxLDcgQEAKICAgICBjaGFyIGJ5dGU7CiAgICAgUHlfYnVmZmVyIHN1YmJ1ZjsKICAgICBjb25zdCBjaGFyICpzdWI7Ci0gICAgUHlfc3NpemVfdCBzdWJfbGVuOworICAgIFB5X3NzaXplX3QgbGVuLCBzdWJfbGVuOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ9MCwgZW5kPVBZX1NTSVpFX1RfTUFYOwogICAgIFB5X3NzaXplX3QgcmVzOwogCkBAIC0xMTg3LDE1ICsxODEwLDM0IEBACiAgICAgICAgIHN1YiA9ICZieXRlOwogICAgICAgICBzdWJfbGVuID0gMTsKICAgICB9CisgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKIAotICAgIGlmIChkaXIgPiAwKQotICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKLSAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLAotICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKLSAgICBlbHNlCi0gICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKLSAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLAotICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKKyAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pOworICAgIGlmIChlbmQgLSBzdGFydCA8IHN1Yl9sZW4pCisgICAgICAgIHJlcyA9IC0xOworICAgIGVsc2UgaWYgKHN1Yl9sZW4gPT0gMQorI2lmbmRlZiBIQVZFX01FTVJDSFIKKyAgICAgICAgICAgICYmIGRpciA+IDAKKyNlbmRpZgorICAgICkgeworICAgICAgICB1bnNpZ25lZCBjaGFyIG5lZWRsZSA9ICpzdWI7CisgICAgICAgIGludCBtb2RlID0gKGRpciA+IDApID8gRkFTVF9TRUFSQ0ggOiBGQVNUX1JTRUFSQ0g7CisgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9mYXN0c2VhcmNoX21lbWNocl8xY2hhcigKKyAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgbmVlZGxlLCBuZWVkbGUsIG1vZGUpOworICAgICAgICBpZiAocmVzID49IDApCisgICAgICAgICAgICByZXMgKz0gc3RhcnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoZGlyID4gMCkKKyAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9maW5kX3NsaWNlKAorICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBsZW4sCisgICAgICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAorICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBsZW4sCisgICAgICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKKyAgICB9CiAKICAgICBpZiAoc3Vib2JqKQogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJidWYpOwpAQCAtMTM1NCw2MiArMTk5Niw2OSBAQAogCiAKIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQotZG9fYXJnc3RyaXAoUHlCeXRlc09iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSwgUHlPYmplY3QgKmFyZ3MpCitkb19hcmdzdHJpcChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBpbnQgc3RyaXB0eXBlLCBQeU9iamVjdCAqYnl0ZXMpCiB7Ci0gICAgUHlPYmplY3QgKnNlcCA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgc3RyaXBmb3JtYXRbc3RyaXB0eXBlXSwgJnNlcCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHNlcCAhPSBOVUxMICYmIHNlcCAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIHJldHVybiBkb194c3RyaXAoc2VsZiwgc3RyaXB0eXBlLCBzZXApOworICAgIGlmIChieXRlcyAhPSBOVUxMICYmIGJ5dGVzICE9IFB5X05vbmUpIHsKKyAgICAgICAgcmV0dXJuIGRvX3hzdHJpcChzZWxmLCBzdHJpcHR5cGUsIGJ5dGVzKTsKICAgICB9CiAgICAgcmV0dXJuIGRvX3N0cmlwKHNlbGYsIHN0cmlwdHlwZSk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLnN0cmlwCiAKLVB5RG9jX1NUUlZBUihzdHJpcF9fZG9jX18sCi0iQi5zdHJpcChbYnl0ZXNdKSAtPiBieXRlc1xuXAotXG5cCi1TdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LlxuXAotSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQsIHN0cmlwIGxlYWRpbmcgYW5kIHRyYWlsaW5nIEFTQ0lJIHdoaXRlc3BhY2UuIik7CisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQorICAgIGJ5dGVzOiBvYmplY3QgPSBOb25lCisgICAgLworCitTdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LgorCitJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfc3RyaXAoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlc19zdHJpcF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jN2MyMjhkM2JkMTA0YTFiIGlucHV0PTM3ZGFhNWZhZDEzOTVkOTVdKi8KIHsKLSAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAwKQotICAgICAgICByZXR1cm4gZG9fc3RyaXAoc2VsZiwgQk9USFNUUklQKTsgLyogQ29tbW9uIGNhc2UgKi8KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBkb19hcmdzdHJpcChzZWxmLCBCT1RIU1RSSVAsIGFyZ3MpOworICAgIHJldHVybiBkb19hcmdzdHJpcChzZWxmLCBCT1RIU1RSSVAsIGJ5dGVzKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorYnl0ZXMubHN0cmlwCiAKLVB5RG9jX1NUUlZBUihsc3RyaXBfX2RvY19fLAotIkIubHN0cmlwKFtieXRlc10pIC0+IGJ5dGVzXG5cCi1cblwKLVN0cmlwIGxlYWRpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC5cblwKLUlmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkLCBzdHJpcCBsZWFkaW5nIEFTQ0lJIHdoaXRlc3BhY2UuIik7CisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQorICAgIGJ5dGVzOiBvYmplY3QgPSBOb25lCisgICAgLworCitTdHJpcCBsZWFkaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuCisKK0lmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkIG9yIE5vbmUsIHN0cmlwIGxlYWRpbmcgIEFTQ0lJIHdoaXRlc3BhY2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19sc3RyaXAoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlc19sc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjg2MDJlNTg2ZjUyNGU4MiBpbnB1dD04ODgxMWIwOWRmYmMyOTg4XSovCiB7Ci0gICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMCkKLSAgICAgICAgcmV0dXJuIGRvX3N0cmlwKHNlbGYsIExFRlRTVFJJUCk7IC8qIENvbW1vbiBjYXNlICovCi0gICAgZWxzZQotICAgICAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgTEVGVFNUUklQLCBhcmdzKTsKKyAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgTEVGVFNUUklQLCBieXRlcyk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLnJzdHJpcAogCi1QeURvY19TVFJWQVIocnN0cmlwX19kb2NfXywKLSJCLnJzdHJpcChbYnl0ZXNdKSAtPiBieXRlc1xuXAotXG5cCi1TdHJpcCB0cmFpbGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LlxuXAotSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQsIHN0cmlwIHRyYWlsaW5nIEFTQ0lJIHdoaXRlc3BhY2UuIik7CisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQorICAgIGJ5dGVzOiBvYmplY3QgPSBOb25lCisgICAgLworCitTdHJpcCB0cmFpbGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LgorCitJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcnN0cmlwKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfcnN0cmlwX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJ5dGVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU0N2UzODE1Yzk1NDQ3ZGEgaW5wdXQ9OGY5M2M5Y2QzNjFmMDE0MF0qLwogewotICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDApCi0gICAgICAgIHJldHVybiBkb19zdHJpcChzZWxmLCBSSUdIVFNUUklQKTsgLyogQ29tbW9uIGNhc2UgKi8KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBkb19hcmdzdHJpcChzZWxmLCBSSUdIVFNUUklQLCBhcmdzKTsKKyAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgUklHSFRTVFJJUCwgYnl0ZXMpOwogfQogCiAKQEAgLTE0NjEsNDUgKzIxMTAsNTEgQEAKIH0KIAogCi1QeURvY19TVFJWQVIodHJhbnNsYXRlX19kb2NfXywKLSJCLnRyYW5zbGF0ZSh0YWJsZVssIGRlbGV0ZWNoYXJzXSkgLT4gYnl0ZXNcblwKLVxuXAotUmV0dXJuIGEgY29weSBvZiBCLCB3aGVyZSBhbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlXG5cCi1vcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZCwgYW5kIHRoZSByZW1haW5pbmdcblwKLWNoYXJhY3RlcnMgaGF2ZSBiZWVuIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvblxuXAotdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLnRyYW5zbGF0ZQorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQorICAgIHRhYmxlOiBvYmplY3QKKyAgICAgICAgVHJhbnNsYXRpb24gdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni4KKyAgICBbCisgICAgZGVsZXRlY2hhcnM6IG9iamVjdAorICAgIF0KKyAgICAvCisKK1JldHVybiBhIGNvcHkgd2l0aCBlYWNoIGNoYXJhY3RlciBtYXBwZWQgYnkgdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLgorCitBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZWNoYXJzIGFyZSByZW1vdmVkLgorVGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc190cmFuc2xhdGUoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlc190cmFuc2xhdGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsIGludCBncm91cF9yaWdodF8xLAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzM2RmODUwZWI1MGJmOGQgaW5wdXQ9ZDhmYTU1MTlkN2NjNGJlN10qLwogewogICAgIGNoYXIgKmlucHV0LCAqb3V0cHV0OwogICAgIFB5X2J1ZmZlciB0YWJsZV92aWV3ID0ge05VTEwsIE5VTEx9OwogICAgIFB5X2J1ZmZlciBkZWxfdGFibGVfdmlldyA9IHtOVUxMLCBOVUxMfTsKLSAgICBjb25zdCBjaGFyICp0YWJsZTsKKyAgICBjb25zdCBjaGFyICp0YWJsZV9jaGFyczsKICAgICBQeV9zc2l6ZV90IGksIGMsIGNoYW5nZWQgPSAwOwogICAgIFB5T2JqZWN0ICppbnB1dF9vYmogPSAoUHlPYmplY3QqKXNlbGY7Ci0gICAgY29uc3QgY2hhciAqb3V0cHV0X3N0YXJ0LCAqZGVsX3RhYmxlPU5VTEw7CisgICAgY29uc3QgY2hhciAqb3V0cHV0X3N0YXJ0LCAqZGVsX3RhYmxlX2NoYXJzPU5VTEw7CiAgICAgUHlfc3NpemVfdCBpbmxlbiwgdGFibGVuLCBkZWxsZW4gPSAwOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgaW50IHRyYW5zX3RhYmxlWzI1Nl07Ci0gICAgUHlPYmplY3QgKnRhYmxlb2JqLCAqZGVsb2JqID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRyYW5zbGF0ZSIsIDEsIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWJsZW9iaiwgJmRlbG9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKFB5Qnl0ZXNfQ2hlY2sodGFibGVvYmopKSB7Ci0gICAgICAgIHRhYmxlID0gUHlCeXRlc19BU19TVFJJTkcodGFibGVvYmopOwotICAgICAgICB0YWJsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHRhYmxlb2JqKTsKKyAgICBpZiAoUHlCeXRlc19DaGVjayh0YWJsZSkpIHsKKyAgICAgICAgdGFibGVfY2hhcnMgPSBQeUJ5dGVzX0FTX1NUUklORyh0YWJsZSk7CisgICAgICAgIHRhYmxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUodGFibGUpOwogICAgIH0KLSAgICBlbHNlIGlmICh0YWJsZW9iaiA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIHRhYmxlID0gTlVMTDsKKyAgICBlbHNlIGlmICh0YWJsZSA9PSBQeV9Ob25lKSB7CisgICAgICAgIHRhYmxlX2NoYXJzID0gTlVMTDsKICAgICAgICAgdGFibGVuID0gMjU2OwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih0YWJsZW9iaiwgJnRhYmxlX3ZpZXcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih0YWJsZSwgJnRhYmxlX3ZpZXcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB0YWJsZSA9IHRhYmxlX3ZpZXcuYnVmOworICAgICAgICB0YWJsZV9jaGFycyA9IHRhYmxlX3ZpZXcuYnVmOwogICAgICAgICB0YWJsZW4gPSB0YWJsZV92aWV3LmxlbjsKICAgICB9CiAKQEAgLTE1MTAsMjIgKzIxNjUsMjIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGRlbG9iaiAhPSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKGRlbG9iaikpIHsKLSAgICAgICAgICAgIGRlbF90YWJsZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGRlbG9iaik7Ci0gICAgICAgICAgICBkZWxsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGRlbG9iaik7CisgICAgaWYgKGRlbGV0ZWNoYXJzICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soZGVsZXRlY2hhcnMpKSB7CisgICAgICAgICAgICBkZWxfdGFibGVfY2hhcnMgPSBQeUJ5dGVzX0FTX1NUUklORyhkZWxldGVjaGFycyk7CisgICAgICAgICAgICBkZWxsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGRlbGV0ZWNoYXJzKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoZGVsb2JqLCAmZGVsX3RhYmxlX3ZpZXcsIFB5QlVGX1NJTVBMRSkgIT0gMCkgeworICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihkZWxldGVjaGFycywgJmRlbF90YWJsZV92aWV3LCBQeUJVRl9TSU1QTEUpICE9IDApIHsKICAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0YWJsZV92aWV3KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRlbF90YWJsZSA9IGRlbF90YWJsZV92aWV3LmJ1ZjsKKyAgICAgICAgICAgIGRlbF90YWJsZV9jaGFycyA9IGRlbF90YWJsZV92aWV3LmJ1ZjsKICAgICAgICAgICAgIGRlbGxlbiA9IGRlbF90YWJsZV92aWV3LmxlbjsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgZGVsX3RhYmxlID0gTlVMTDsKKyAgICAgICAgZGVsX3RhYmxlX2NoYXJzID0gTlVMTDsKICAgICAgICAgZGVsbGVuID0gMDsKICAgICB9CiAKQEAgLTE1MzksMTEgKzIxOTQsMTEgQEAKICAgICBvdXRwdXRfc3RhcnQgPSBvdXRwdXQgPSBQeUJ5dGVzX0FzU3RyaW5nKHJlc3VsdCk7CiAgICAgaW5wdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhpbnB1dF9vYmopOwogCi0gICAgaWYgKGRlbGxlbiA9PSAwICYmIHRhYmxlICE9IE5VTEwpIHsKKyAgICBpZiAoZGVsbGVuID09IDAgJiYgdGFibGVfY2hhcnMgIT0gTlVMTCkgewogICAgICAgICAvKiBJZiBubyBkZWxldGlvbnMgYXJlIHJlcXVpcmVkLCB1c2UgZmFzdGVyIGNvZGUgKi8KICAgICAgICAgZm9yIChpID0gaW5sZW47IC0taSA+PSAwOyApIHsKICAgICAgICAgICAgIGMgPSBQeV9DSEFSTUFTSygqaW5wdXQrKyk7Ci0gICAgICAgICAgICBpZiAoUHlfQ0hBUk1BU0soKCpvdXRwdXQrKyA9IHRhYmxlW2NdKSkgIT0gYykKKyAgICAgICAgICAgIGlmIChQeV9DSEFSTUFTSygoKm91dHB1dCsrID0gdGFibGVfY2hhcnNbY10pKSAhPSBjKQogICAgICAgICAgICAgICAgIGNoYW5nZWQgPSAxOwogICAgICAgICB9CiAgICAgICAgIGlmICghY2hhbmdlZCAmJiBQeUJ5dGVzX0NoZWNrRXhhY3QoaW5wdXRfb2JqKSkgewpAQCAtMTU1NiwxNyArMjIxMSwxNyBAQAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIGlmICh0YWJsZSA9PSBOVUxMKSB7CisgICAgaWYgKHRhYmxlX2NoYXJzID09IE5VTEwpIHsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQogICAgICAgICAgICAgdHJhbnNfdGFibGVbaV0gPSBQeV9DSEFSTUFTSyhpKTsKICAgICB9IGVsc2UgewogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspCi0gICAgICAgICAgICB0cmFuc190YWJsZVtpXSA9IFB5X0NIQVJNQVNLKHRhYmxlW2ldKTsKKyAgICAgICAgICAgIHRyYW5zX3RhYmxlW2ldID0gUHlfQ0hBUk1BU0sodGFibGVfY2hhcnNbaV0pOwogICAgIH0KICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0YWJsZV92aWV3KTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBkZWxsZW47IGkrKykKLSAgICAgICAgdHJhbnNfdGFibGVbKGludCkgUHlfQ0hBUk1BU0soZGVsX3RhYmxlW2ldKV0gPSAtMTsKKyAgICAgICAgdHJhbnNfdGFibGVbKGludCkgUHlfQ0hBUk1BU0soZGVsX3RhYmxlX2NoYXJzW2ldKV0gPSAtMTsKICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkZWxfdGFibGVfdmlldyk7CiAKICAgICBmb3IgKGkgPSBpbmxlbjsgLS1pID49IDA7ICkgewpAQCAtMTU4OCwxMCArMjI0MywyOCBAQAogfQogCiAKKy8qW2NsaW5pYyBpbnB1dF0KKworQHN0YXRpY21ldGhvZAorYnl0ZXMubWFrZXRyYW5zCisKKyAgICBmcm06IFB5X2J1ZmZlcgorICAgIHRvOiBQeV9idWZmZXIKKyAgICAvCisKK1JldHVybiBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzZWFibGUgZm9yIHRoZSBieXRlcyBvciBieXRlYXJyYXkgdHJhbnNsYXRlIG1ldGhvZC4KKworVGhlIHJldHVybmVkIHRhYmxlIHdpbGwgYmUgb25lIHdoZXJlIGVhY2ggYnl0ZSBpbiBmcm0gaXMgbWFwcGVkIHRvIHRoZSBieXRlIGF0Cit0aGUgc2FtZSBwb3NpdGlvbiBpbiB0by4KKworVGhlIGJ5dGVzIG9iamVjdHMgZnJtIGFuZCB0byBtdXN0IGJlIG9mIHRoZSBzYW1lIGxlbmd0aC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX21ha2V0cmFucyhQeU9iamVjdCAqbnVsbCwgUHlPYmplY3QgKmFyZ3MpCitieXRlc19tYWtldHJhbnNfaW1wbChQeV9idWZmZXIgKmZybSwgUHlfYnVmZmVyICp0bykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMzZmNjM5OWQ0Yjc3ZjZmIGlucHV0PWRlN2E4ZmM1NjMyYmI4ZjFdKi8KIHsKLSAgICByZXR1cm4gX1B5X2J5dGVzX21ha2V0cmFucyhhcmdzKTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX21ha2V0cmFucyhmcm0sIHRvKTsKIH0KIAogLyogZmluZCBhbmQgY291bnQgY2hhcmFjdGVycyBhbmQgc3Vic3RyaW5ncyAqLwpAQCAtMjA4NiwzMSArMjc1OSwzMSBAQAogICAgIH0KIH0KIAotUHlEb2NfU1RSVkFSKHJlcGxhY2VfX2RvY19fLAotIkIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSkgLT4gYnl0ZXNcblwKLVxuXAotUmV0dXJuIGEgY29weSBvZiBCIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnNlY3Rpb25cblwKLW9sZCByZXBsYWNlZCBieSBuZXcuICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgY291bnQgaXNcblwKLWdpdmVuLCBvbmx5IGZpcnN0IGNvdW50IG9jY3VyYW5jZXMgYXJlIHJlcGxhY2VkLiIpOworCisvKltjbGluaWMgaW5wdXRdCitieXRlcy5yZXBsYWNlCisKKyAgICBvbGQ6IFB5X2J1ZmZlcgorICAgIG5ldzogUHlfYnVmZmVyCisgICAgY291bnQ6IFB5X3NzaXplX3QgPSAtMQorICAgICAgICBNYXhpbXVtIG51bWJlciBvZiBvY2N1cnJlbmNlcyB0byByZXBsYWNlLgorICAgICAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIHJlcGxhY2UgYWxsIG9jY3VycmVuY2VzLgorICAgIC8KKworUmV0dXJuIGEgY29weSB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgb2xkIHJlcGxhY2VkIGJ5IG5ldy4KKworSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGNvdW50IGlzIGdpdmVuLCBvbmx5IHRoZSBmaXJzdCBjb3VudCBvY2N1cnJlbmNlcyBhcmUKK3JlcGxhY2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcmVwbGFjZShQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVzX3JlcGxhY2VfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5X2J1ZmZlciAqb2xkLCBQeV9idWZmZXIgKm5ldywKKyAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGNvdW50KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQwM2RjOWQ3YTgzYzVhMWQgaW5wdXQ9YjJmYmJmMGJmMDRkZThlNV0qLwogewotICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgUHlfYnVmZmVyIG9sZCA9IHtOVUxMLCBOVUxMfTsKLSAgICBQeV9idWZmZXIgbmV3ID0ge05VTEwsIE5VTEx9OwotICAgIFB5X3NzaXplX3QgY291bnQgPSAtMTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KnxuOnJlcGxhY2UiLCAmb2xkLCAmbmV3LCAmY291bnQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlcyA9IChQeU9iamVjdCAqKXJlcGxhY2UoKFB5Qnl0ZXNPYmplY3QgKikgc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopb2xkLmJ1Ziwgb2xkLmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopbmV3LmJ1ZiwgbmV3LmxlbiwgY291bnQpOwotCi0gICAgUHlCdWZmZXJfUmVsZWFzZSgmb2xkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZuZXcpOwotICAgIHJldHVybiByZXM7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKXJlcGxhY2UoKFB5Qnl0ZXNPYmplY3QgKikgc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW9sZC0+YnVmLCBvbGQtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW5ldy0+YnVmLCBuZXctPmxlbiwgY291bnQpOwogfQogCiAvKiogRW5kIERBTEtFICoqLwpAQCAtMjI1Nyw2MCArMjkzMCw1MSBAQAogfQogCiAKLVB5RG9jX1NUUlZBUihkZWNvZGVfX2RvY19fLAotIkIuZGVjb2RlKGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0JykgLT4gc3RyXG5cCi1cblwKLURlY29kZSBCIHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciBlbmNvZGluZy4gRGVmYXVsdCBlbmNvZGluZ1xuXAotaXMgJ3V0Zi04Jy4gZXJyb3JzIG1heSBiZSBnaXZlbiB0byBzZXQgYSBkaWZmZXJlbnQgZXJyb3JcblwKLWhhbmRsaW5nIHNjaGVtZS4gIERlZmF1bHQgaXMgJ3N0cmljdCcgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZVxuXAotYSBVbmljb2RlRGVjb2RlRXJyb3IuICBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlICdpZ25vcmUnIGFuZCAncmVwbGFjZSdcblwKLWFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgaXNcblwKLWFibGUgdG8gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlcy5kZWNvZGUKKworICAgIGVuY29kaW5nOiBzdHIoY19kZWZhdWx0PSJOVUxMIikgPSAndXRmLTgnCisgICAgICAgIFRoZSBlbmNvZGluZyB3aXRoIHdoaWNoIHRvIGRlY29kZSB0aGUgYnl0ZXMuCisgICAgZXJyb3JzOiBzdHIoY19kZWZhdWx0PSJOVUxMIikgPSAnc3RyaWN0JworICAgICAgICBUaGUgZXJyb3IgaGFuZGxpbmcgc2NoZW1lIHRvIHVzZSBmb3IgdGhlIGhhbmRsaW5nIG9mIGRlY29kaW5nIGVycm9ycy4KKyAgICAgICAgVGhlIGRlZmF1bHQgaXMgJ3N0cmljdCcgbWVhbmluZyB0aGF0IGRlY29kaW5nIGVycm9ycyByYWlzZSBhCisgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvci4gT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSAnaWdub3JlJyBhbmQgJ3JlcGxhY2UnCisgICAgICAgIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoIGNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0CisgICAgICAgIGNhbiBoYW5kbGUgVW5pY29kZURlY29kZUVycm9ycy4KKworRGVjb2RlIHRoZSBieXRlcyB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19kZWNvZGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZXNfZGVjb2RlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZDIwMTZmZjhlMGJiMTc2IGlucHV0PTk1ODE3NDc2OWQyYTQwY2FdKi8KIHsKLSAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImVuY29kaW5nIiwgImVycm9ycyIsIDB9OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifHNzOmRlY29kZSIsIGt3bGlzdCwgJmVuY29kaW5nLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdChzZWxmLCBlbmNvZGluZywgZXJyb3JzKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KChQeU9iamVjdCopc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CiB9CiAKIAotUHlEb2NfU1RSVkFSKHNwbGl0bGluZXNfX2RvY19fLAotIkIuc3BsaXRsaW5lcyhba2VlcGVuZHNdKSAtPiBsaXN0IG9mIGxpbmVzXG5cCi1cblwKLVJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIEIsIGJyZWFraW5nIGF0IGxpbmUgYm91bmRhcmllcy5cblwKLUxpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0IHVubGVzcyBrZWVwZW5kc1xuXAotaXMgZ2l2ZW4gYW5kIHRydWUuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlcy5zcGxpdGxpbmVzCiAKLXN0YXRpYyBQeU9iamVjdCoKLWJ5dGVzX3NwbGl0bGluZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKKyAgICBrZWVwZW5kczogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKworUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIGJ5dGVzLCBicmVha2luZyBhdCBsaW5lIGJvdW5kYXJpZXMuCisKK0xpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0IHVubGVzcyBrZWVwZW5kcyBpcyBnaXZlbiBhbmQKK3RydWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19zcGxpdGxpbmVzX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBpbnQga2VlcGVuZHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTk1YzM1OThmNzgzM2NhZCBpbnB1dD03ZjRhYWM2NzE0NGY5OTQ0XSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJrZWVwZW5kcyIsIDB9OwotICAgIGludCBrZWVwZW5kcyA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGk6c3BsaXRsaW5lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAma2VlcGVuZHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRsaW5lcygKICAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksCiAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIGtlZXBlbmRzCiAgICAgICAgICk7CiB9CiAKLQotUHlEb2NfU1RSVkFSKGZyb21oZXhfZG9jLAotImJ5dGVzLmZyb21oZXgoc3RyaW5nKSAtPiBieXRlc1xuXAotXG5cCi1DcmVhdGUgYSBieXRlcyBvYmplY3QgZnJvbSBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBudW1iZXJzLlxuXAotU3BhY2VzIGJldHdlZW4gdHdvIG51bWJlcnMgYXJlIGFjY2VwdGVkLlxuXAotRXhhbXBsZTogYnl0ZXMuZnJvbWhleCgnQjkgMDFFRicpIC0+IGInXFx4YjlcXHgwMVxceGVmJy4iKTsKLQogc3RhdGljIGludAogaGV4X2RpZ2l0X3RvX2ludChQeV9VQ1M0IGMpCiB7CkBAIC0yMzI3LDI0ICsyOTkxLDM2IEBACiAgICAgcmV0dXJuIC0xOwogfQogCisvKltjbGluaWMgaW5wdXRdCitAY2xhc3NtZXRob2QKK2J5dGVzLmZyb21oZXgKKworICAgIHN0cmluZzogdW5pY29kZQorICAgIC8KKworQ3JlYXRlIGEgYnl0ZXMgb2JqZWN0IGZyb20gYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgbnVtYmVycy4KKworU3BhY2VzIGJldHdlZW4gdHdvIG51bWJlcnMgYXJlIGFjY2VwdGVkLgorRXhhbXBsZTogYnl0ZXMuZnJvbWhleCgnQjkgMDFFRicpIC0+IGInXFx4YjlcXHgwMVxceGVmJy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX2Zyb21oZXgoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MpCitieXRlc19mcm9taGV4X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqc3RyaW5nKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA5NzNhY2M2MzY2MWJiMmUgaW5wdXQ9YmY0ZDFjMzYxNjcwYWNkM10qLwogewotICAgIFB5T2JqZWN0ICpuZXdzdHJpbmcsICpoZXhvYmo7CisgICAgUHlPYmplY3QgKm5ld3N0cmluZzsKICAgICBjaGFyICpidWY7CiAgICAgUHlfc3NpemVfdCBoZXhsZW4sIGJ5dGVzbGVuLCBpLCBqOwogICAgIGludCB0b3AsIGJvdDsKICAgICB2b2lkICpkYXRhOwogICAgIHVuc2lnbmVkIGludCBraW5kOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmZyb21oZXgiLCAmaGV4b2JqKSkKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHN0cmluZykpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhoZXhvYmopKTsKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKGhleG9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChoZXhvYmopOwotICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShoZXhvYmopOwotICAgIGhleGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGhleG9iaik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cmluZyk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cmluZyk7CisgICAgaGV4bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKTsKIAogICAgIGJ5dGVzbGVuID0gaGV4bGVuLzI7IC8qIFRoaXMgb3ZlcmVzdGltYXRlcyBpZiB0aGVyZSBhcmUgc3BhY2VzICovCiAgICAgbmV3c3RyaW5nID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBieXRlc2xlbik7CkBAIC0yMzc2LDYgKzMwNTIsMjAgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorUHlEb2NfU1RSVkFSKGhleF9fZG9jX18sCisiQi5oZXgoKSAtPiBzdHJpbmdcblwKK1xuXAorQ3JlYXRlIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIG51bWJlcnMgZnJvbSBhIGJ5dGVzIG9iamVjdC5cblwKK0V4YW1wbGU6IGInXFx4YjlcXHgwMVxceGVmJy5oZXgoKSAtPiAnYjkwMWVmJy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX2hleChQeUJ5dGVzT2JqZWN0ICpzZWxmKQoreworICAgIGNoYXIqIGFyZ2J1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOworICAgIFB5X3NzaXplX3QgYXJnbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKKyAgICByZXR1cm4gX1B5X3N0cmhleChhcmdidWYsIGFyZ2xlbik7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19nZXRuZXdhcmdzKFB5Qnl0ZXNPYmplY3QgKnYpCiB7CkBAIC0yMzkwLDE0ICszMDgwLDE0IEBACiAgICAgIF9QeV9jYXBpdGFsaXplX19kb2NfX30sCiAgICAgeyJjZW50ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NlbnRlciwgTUVUSF9WQVJBUkdTLCBjZW50ZXJfX2RvY19ffSwKICAgICB7ImNvdW50IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2NvdW50LCBNRVRIX1ZBUkFSR1MsIGNvdW50X19kb2NfX30sCi0gICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZGVjb2RlLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBkZWNvZGVfX2RvY19ffSwKKyAgICBCWVRFU19ERUNPREVfTUVUSE9EREVGCiAgICAgeyJlbmRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlc19lbmRzd2l0aCwgTUVUSF9WQVJBUkdTLAogICAgICBlbmRzd2l0aF9fZG9jX199LAogICAgIHsiZXhwYW5kdGFicyIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfZXhwYW5kdGFicywgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgZXhwYW5kdGFic19fZG9jX199LAogICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilieXRlc19maW5kLCBNRVRIX1ZBUkFSR1MsIGZpbmRfX2RvY19ffSwKLSAgICB7ImZyb21oZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZnJvbWhleCwgTUVUSF9WQVJBUkdTfE1FVEhfQ0xBU1MsCi0gICAgIGZyb21oZXhfZG9jfSwKKyAgICBCWVRFU19GUk9NSEVYX01FVEhPRERFRgorICAgIHsiaGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2hleCwgTUVUSF9OT0FSR1MsIGhleF9fZG9jX199LAogICAgIHsiaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfaW5kZXgsIE1FVEhfVkFSQVJHUywgaW5kZXhfX2RvY19ffSwKICAgICB7ImlzYWxudW0iLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzYWxudW0sIE1FVEhfTk9BUkdTLAogICAgICBfUHlfaXNhbG51bV9fZG9jX199LApAQCAtMjQxMywzOCArMzEwMyw0OSBAQAogICAgICBfUHlfaXN0aXRsZV9fZG9jX199LAogICAgIHsiaXN1cHBlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXN1cHBlciwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9pc3VwcGVyX19kb2NfX30sCi0gICAgeyJqb2luIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2pvaW4sIE1FVEhfTywgam9pbl9fZG9jX199LAorICAgIEJZVEVTX0pPSU5fTUVUSE9EREVGCiAgICAgeyJsanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbGp1c3QsIE1FVEhfVkFSQVJHUywgbGp1c3RfX2RvY19ffSwKICAgICB7Imxvd2VyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sb3dlciwgTUVUSF9OT0FSR1MsIF9QeV9sb3dlcl9fZG9jX199LAotICAgIHsibHN0cmlwIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2xzdHJpcCwgTUVUSF9WQVJBUkdTLCBsc3RyaXBfX2RvY19ffSwKLSAgICB7Im1ha2V0cmFucyIsIChQeUNGdW5jdGlvbilieXRlc19tYWtldHJhbnMsIE1FVEhfVkFSQVJHU3xNRVRIX1NUQVRJQywKLSAgICAgX1B5X21ha2V0cmFuc19fZG9jX199LAotICAgIHsicGFydGl0aW9uIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3BhcnRpdGlvbiwgTUVUSF9PLCBwYXJ0aXRpb25fX2RvY19ffSwKLSAgICB7InJlcGxhY2UiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcmVwbGFjZSwgTUVUSF9WQVJBUkdTLCByZXBsYWNlX19kb2NfX30sCisgICAgQllURVNfTFNUUklQX01FVEhPRERFRgorICAgIEJZVEVTX01BS0VUUkFOU19NRVRIT0RERUYKKyAgICBCWVRFU19QQVJUSVRJT05fTUVUSE9EREVGCisgICAgQllURVNfUkVQTEFDRV9NRVRIT0RERUYKICAgICB7InJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JmaW5kLCBNRVRIX1ZBUkFSR1MsIHJmaW5kX19kb2NfX30sCiAgICAgeyJyaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcmluZGV4LCBNRVRIX1ZBUkFSR1MsIHJpbmRleF9fZG9jX199LAogICAgIHsicmp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3JqdXN0LCBNRVRIX1ZBUkFSR1MsIHJqdXN0X19kb2NfX30sCi0gICAgeyJycGFydGl0aW9uIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JwYXJ0aXRpb24sIE1FVEhfTywKLSAgICAgcnBhcnRpdGlvbl9fZG9jX199LAotICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzcGxpdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcnNwbGl0X19kb2NfX30sCi0gICAgeyJyc3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcnN0cmlwLCBNRVRIX1ZBUkFSR1MsIHJzdHJpcF9fZG9jX199LAotICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHNwbGl0X19kb2NfX30sCi0gICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3NwbGl0bGluZXMsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgIHNwbGl0bGluZXNfX2RvY19ffSwKKyAgICBCWVRFU19SUEFSVElUSU9OX01FVEhPRERFRgorICAgIEJZVEVTX1JTUExJVF9NRVRIT0RERUYKKyAgICBCWVRFU19SU1RSSVBfTUVUSE9EREVGCisgICAgQllURVNfU1BMSVRfTUVUSE9EREVGCisgICAgQllURVNfU1BMSVRMSU5FU19NRVRIT0RERUYKICAgICB7InN0YXJ0c3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3RhcnRzd2l0aCwgTUVUSF9WQVJBUkdTLAogICAgICBzdGFydHN3aXRoX19kb2NfX30sCi0gICAgeyJzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlc19zdHJpcCwgTUVUSF9WQVJBUkdTLCBzdHJpcF9fZG9jX199LAorICAgIEJZVEVTX1NUUklQX01FVEhPRERFRgogICAgIHsic3dhcGNhc2UiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3N3YXBjYXNlLCBNRVRIX05PQVJHUywKICAgICAgX1B5X3N3YXBjYXNlX19kb2NfX30sCiAgICAgeyJ0aXRsZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdGl0bGUsIE1FVEhfTk9BUkdTLCBfUHlfdGl0bGVfX2RvY19ffSwKLSAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlc190cmFuc2xhdGUsIE1FVEhfVkFSQVJHUywKLSAgICAgdHJhbnNsYXRlX19kb2NfX30sCisgICAgQllURVNfVFJBTlNMQVRFX01FVEhPRERFRgogICAgIHsidXBwZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3VwcGVyLCBNRVRIX05PQVJHUywgX1B5X3VwcGVyX19kb2NfX30sCiAgICAgeyJ6ZmlsbCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfemZpbGwsIE1FVEhfVkFSQVJHUywgemZpbGxfX2RvY19ffSwKICAgICB7TlVMTCwgICAgIE5VTEx9ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfbW9kKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdykKK3sKKyAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2sodikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKyAgICByZXR1cm4gX1B5Qnl0ZXNfRm9ybWF0KHYsIHcpOworfQorCitzdGF0aWMgUHlOdW1iZXJNZXRob2RzIGJ5dGVzX2FzX251bWJlciA9IHsKKyAgICAwLCAgICAgICAgICAgICAgLypuYl9hZGQqLworICAgIDAsICAgICAgICAgICAgICAvKm5iX3N1YnRyYWN0Ki8KKyAgICAwLCAgICAgICAgICAgICAgLypuYl9tdWx0aXBseSovCisgICAgYnl0ZXNfbW9kLCAgICAgIC8qbmJfcmVtYWluZGVyKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCiBieXRlc19zdWJ0eXBlX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNDcxLDE0ICszMTcyLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50Iik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nKCIiKTsKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAgICAgfQogCi0gICAgaWYgKFB5VW5pY29kZV9DaGVjayh4KSkgeworICAgIGlmIChlbmNvZGluZyAhPSBOVUxMKSB7CiAgICAgICAgIC8qIEVuY29kZSB2aWEgdGhlIGNvZGVjIHJlZ2lzdHJ5ICovCi0gICAgICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHgpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgYXJndW1lbnQgd2l0aG91dCBhbiBlbmNvZGluZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmNvZGluZyB3aXRob3V0IGEgc3RyaW5nIGFyZ3VtZW50Iik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBuZXcgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHgsIGVuY29kaW5nLCBlcnJvcnMpOwpAQCAtMjQ4OCwxMCArMzE4OSwxMSBAQAogICAgICAgICByZXR1cm4gbmV3OwogICAgIH0KIAotICAgIC8qIElmIGl0J3Mgbm90IHVuaWNvZGUsIHRoZXJlIGNhbid0IGJlIGVuY29kaW5nIG9yIGVycm9ycyAqLwotICAgIGlmIChlbmNvZGluZyAhPSBOVUxMIHx8IGVycm9ycyAhPSBOVUxMKSB7CisgICAgaWYgKGVycm9ycyAhPSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiZW5jb2Rpbmcgb3IgZXJyb3JzIHdpdGhvdXQgYSBzdHJpbmcgYXJndW1lbnQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9DaGVjayh4KSA/CisgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIGFyZ3VtZW50IHdpdGhvdXQgYW4gZW5jb2RpbmciIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICJlcnJvcnMgd2l0aG91dCBhIHN0cmluZyBhcmd1bWVudCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTI1MTYsNiArMzIxOCwxMSBAQAogICAgIGVsc2UgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayh4KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyBhcmd1bWVudCB3aXRob3V0IGFuIGVuY29kaW5nIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICAvKiBJcyBpdCBhbiBpbnRlZ2VyPyAqLwogICAgIHNpemUgPSBQeU51bWJlcl9Bc1NzaXplX3QoeCwgUHlFeGNfT3ZlcmZsb3dFcnJvcik7CiAgICAgaWYgKHNpemUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewpAQCAtMjUyOCwxMSArMzIzNSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKKyAgICAgICAgbmV3ID0gX1B5Qnl0ZXNfRnJvbVNpemUoc2l6ZSwgMSk7CiAgICAgICAgIGlmIChuZXcgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoc2l6ZSA+IDApCi0gICAgICAgICAgICBtZW1zZXQoKChQeUJ5dGVzT2JqZWN0KiluZXcpLT5vYl9zdmFsLCAwLCBzaXplKTsKICAgICAgICAgcmV0dXJuIG5ldzsKICAgICB9CiAKQEAgLTI2MzAsMTAgKzMzMzUsMTIgQEAKICAgICAgICByZXR1cm5pbmcgYSBzaGFyZWQgZW1wdHkgYnl0ZXMgc3RyaW5nLiBUaGlzIHJlcXVpcmVkIGJlY2F1c2Ugd2UKICAgICAgICB3YW50IHRvIGNhbGwgX1B5Qnl0ZXNfUmVzaXplKCkgdGhlIHJldHVybmVkIG9iamVjdCwgd2hpY2ggd2UgY2FuCiAgICAgICAgb25seSBkbyBvbiBieXRlcyBvYmplY3RzIHdpdGggcmVmY291bnQgPT0gMS4gKi8KLSAgICBzaXplICs9IDE7CisgICAgaWYgKHNpemUgPT0gMCkKKyAgICAgICAgc2l6ZSA9IDE7CiAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKICAgICBpZiAobmV3ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChQeV9SRUZDTlQobmV3KSA9PSAxKTsKIAogICAgIC8qIEdldCB0aGUgaXRlcmF0b3IgKi8KICAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoeCk7CkBAIC0yNzM1LDcgKzM0NDIsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KICAgICAocmVwcmZ1bmMpYnl0ZXNfcmVwciwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgICZieXRlc19hc19udW1iZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgJmJ5dGVzX2FzX3NlcXVlbmNlLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwogICAgICZieXRlc19hc19tYXBwaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwogICAgIChoYXNoZnVuYylieXRlc19oYXNoLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwpAQCAtMjc3MCw3ICszNDc3LDYgQEAKIHZvaWQKIFB5Qnl0ZXNfQ29uY2F0KFB5T2JqZWN0ICoqcHYsIFB5T2JqZWN0ICp3KQogewotICAgIFB5T2JqZWN0ICp2OwogICAgIGFzc2VydChwdiAhPSBOVUxMKTsKICAgICBpZiAoKnB2ID09IE5VTEwpCiAgICAgICAgIHJldHVybjsKQEAgLTI3NzgsOSArMzQ4NCw0NCBAQAogICAgICAgICBQeV9DTEVBUigqcHYpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHYgPSBieXRlc19jb25jYXQoKnB2LCB3KTsKLSAgICBQeV9ERUNSRUYoKnB2KTsKLSAgICAqcHYgPSB2OworCisgICAgaWYgKFB5X1JFRkNOVCgqcHYpID09IDEgJiYgUHlCeXRlc19DaGVja0V4YWN0KCpwdikpIHsKKyAgICAgICAgLyogT25seSBvbmUgcmVmZXJlbmNlLCBzbyB3ZSBjYW4gcmVzaXplIGluIHBsYWNlICovCisgICAgICAgIFB5X3NzaXplX3Qgb2xkc2l6ZTsKKyAgICAgICAgUHlfYnVmZmVyIHdiOworCisgICAgICAgIHdiLmxlbiA9IC0xOworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHcsICZ3YiwgUHlCVUZfU0lNUExFKSAhPSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiY2FuJ3QgY29uY2F0ICUuMTAwcyB0byAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUodyktPnRwX25hbWUsIFB5X1RZUEUoKnB2KS0+dHBfbmFtZSk7CisgICAgICAgICAgICBQeV9DTEVBUigqcHYpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgb2xkc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoKnB2KTsKKyAgICAgICAgaWYgKG9sZHNpemUgPiBQWV9TU0laRV9UX01BWCAtIHdiLmxlbikgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZShwdiwgb2xkc2l6ZSArIHdiLmxlbikgPCAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcoKnB2KSArIG9sZHNpemUsIHdiLmJ1Ziwgd2IubGVuKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmd2IpOworICAgICAgICByZXR1cm47CisKKyAgICAgIGVycm9yOgorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ3Yik7CisgICAgICAgIFB5X0NMRUFSKCpwdik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBlbHNlIHsKKyAgICAgICAgLyogTXVsdGlwbGUgcmVmZXJlbmNlcywgbmVlZCB0byBjcmVhdGUgbmV3IG9iamVjdCAqLworICAgICAgICBQeU9iamVjdCAqdjsKKyAgICAgICAgdiA9IGJ5dGVzX2NvbmNhdCgqcHYsIHcpOworICAgICAgICBQeV9TRVRSRUYoKnB2LCB2KTsKKyAgICB9CiB9CiAKIHZvaWQKQEAgLTI3OTEsMTQgKzM1MzIsMTQgQEAKIH0KIAogCi0vKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGJyZWFrcyB0aGUgbm90aW9uIHRoYXQgc3RyaW5ncyBhcmUgaW1tdXRhYmxlOgotICAgaXQgY2hhbmdlcyB0aGUgc2l6ZSBvZiBhIHN0cmluZy4gIFdlIGdldCBhd2F5IHdpdGggdGhpcyBvbmx5IGlmIHRoZXJlCisvKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGJyZWFrcyB0aGUgbm90aW9uIHRoYXQgYnl0ZXMgYXJlIGltbXV0YWJsZToKKyAgIGl0IGNoYW5nZXMgdGhlIHNpemUgb2YgYSBieXRlcyBvYmplY3QuICBXZSBnZXQgYXdheSB3aXRoIHRoaXMgb25seSBpZiB0aGVyZQogICAgaXMgb25seSBvbmUgbW9kdWxlIHJlZmVyZW5jaW5nIHRoZSBvYmplY3QuICBZb3UgY2FuIGFsc28gdGhpbmsgb2YgaXQKLSAgIGFzIGNyZWF0aW5nIGEgbmV3IHN0cmluZyBvYmplY3QgYW5kIGRlc3Ryb3lpbmcgdGhlIG9sZCBvbmUsIG9ubHkKLSAgIG1vcmUgZWZmaWNpZW50bHkuICBJbiBhbnkgY2FzZSwgZG9uJ3QgdXNlIHRoaXMgaWYgdGhlIHN0cmluZyBtYXkKKyAgIGFzIGNyZWF0aW5nIGEgbmV3IGJ5dGVzIG9iamVjdCBhbmQgZGVzdHJveWluZyB0aGUgb2xkIG9uZSwgb25seQorICAgbW9yZSBlZmZpY2llbnRseS4gIEluIGFueSBjYXNlLCBkb24ndCB1c2UgdGhpcyBpZiB0aGUgYnl0ZXMgb2JqZWN0IG1heQogICAgYWxyZWFkeSBiZSBrbm93biB0byBzb21lIG90aGVyIHBhcnQgb2YgdGhlIGNvZGUuLi4KLSAgIE5vdGUgdGhhdCBpZiB0aGVyZSdzIG5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlc2l6ZSB0aGUgc3RyaW5nLCB0aGUgb3JpZ2luYWwKLSAgIHN0cmluZyBvYmplY3QgYXQgKnB2IGlzIGRlYWxsb2NhdGVkLCAqcHYgaXMgc2V0IHRvIE5VTEwsIGFuICJvdXQgb2YKKyAgIE5vdGUgdGhhdCBpZiB0aGVyZSdzIG5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlc2l6ZSB0aGUgYnl0ZXMgb2JqZWN0LCB0aGUKKyAgIG9yaWdpbmFsIGJ5dGVzIG9iamVjdCBhdCAqcHYgaXMgZGVhbGxvY2F0ZWQsICpwdiBpcyBzZXQgdG8gTlVMTCwgYW4gIm91dCBvZgogICAgbWVtb3J5IiBleGNlcHRpb24gaXMgc2V0LCBhbmQgLTEgaXMgcmV0dXJuZWQuICBFbHNlIChvbiBzdWNjZXNzKSAwIGlzCiAgICByZXR1cm5lZCwgYW5kIHRoZSB2YWx1ZSBpbiAqcHYgbWF5IG9yIG1heSBub3QgYmUgdGhlIHNhbWUgYXMgb24gaW5wdXQuCiAgICBBcyBhbHdheXMsIGFuIGV4dHJhIGJ5dGUgaXMgYWxsb2NhdGVkIGZvciBhIHRyYWlsaW5nIFwwIGJ5dGUgKG5ld3NpemUKQEAgLTI4MjEsNyArMzU2Miw3IEBACiAgICAgX1B5X0RFQ19SRUZUT1RBTDsKICAgICBfUHlfRm9yZ2V0UmVmZXJlbmNlKHYpOwogICAgICpwdiA9IChQeU9iamVjdCAqKQotICAgICAgICBQeU9iamVjdF9SRUFMTE9DKChjaGFyICopdiwgUHlCeXRlc09iamVjdF9TSVpFICsgbmV3c2l6ZSk7CisgICAgICAgIFB5T2JqZWN0X1JFQUxMT0ModiwgUHlCeXRlc09iamVjdF9TSVpFICsgbmV3c2l6ZSk7CiAgICAgaWYgKCpwdiA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0X0RlbCh2KTsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKZGlmZiAtLWdpdCBhL09iamVjdHMvY2xhc3NvYmplY3QuYyBiL09iamVjdHMvY2xhc3NvYmplY3QuYwppbmRleCAwYzBiZDQ3Li41ZThhYzU5IDEwMDY0NAotLS0gYS9PYmplY3RzL2NsYXNzb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9jbGFzc29iamVjdC5jCkBAIC0xNSw2ICsxNSw3IEBACiAjZW5kaWYKIAogX1B5X0lERU5USUZJRVIoX19uYW1lX18pOworX1B5X0lERU5USUZJRVIoX19xdWFsbmFtZV9fKTsKIAogUHlPYmplY3QgKgogUHlNZXRob2RfRnVuY3Rpb24oUHlPYmplY3QgKmltKQpAQCAtMjQzLDUxICsyNDQsMzMgQEAKIHsKICAgICBQeU9iamVjdCAqc2VsZiA9IGEtPmltX3NlbGY7CiAgICAgUHlPYmplY3QgKmZ1bmMgPSBhLT5pbV9mdW5jOwotICAgIFB5T2JqZWN0ICprbGFzczsKLSAgICBQeU9iamVjdCAqZnVuY25hbWUgPSBOVUxMICwqa2xhc3NuYW1lID0gTlVMTCwgKnJlc3VsdCA9IE5VTEw7Ci0gICAgY2hhciAqZGVmbmFtZSA9ICI/IjsKKyAgICBQeU9iamVjdCAqZnVuY25hbWUgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpkZWZuYW1lID0gIj8iOwogCi0gICAgaWYgKHNlbGYgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGtsYXNzID0gKFB5T2JqZWN0KilQeV9UWVBFKHNlbGYpOwotCi0gICAgZnVuY25hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZ1bmMsICZQeUlkX19fbmFtZV9fKTsKKyAgICBmdW5jbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoZnVuYywgJlB5SWRfX19xdWFsbmFtZV9fKTsKICAgICBpZiAoZnVuY25hbWUgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisKKyAgICAgICAgZnVuY25hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZ1bmMsICZQeUlkX19fbmFtZV9fKTsKKyAgICAgICAgaWYgKGZ1bmNuYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9CiAgICAgfQotICAgIGVsc2UgaWYgKCFQeVVuaWNvZGVfQ2hlY2soZnVuY25hbWUpKSB7CisKKyAgICBpZiAoZnVuY25hbWUgIT0gTlVMTCAmJiAhUHlVbmljb2RlX0NoZWNrKGZ1bmNuYW1lKSkgewogICAgICAgICBQeV9ERUNSRUYoZnVuY25hbWUpOwogICAgICAgICBmdW5jbmFtZSA9IE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGtsYXNzID09IE5VTEwpCi0gICAgICAgIGtsYXNzbmFtZSA9IE5VTEw7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGtsYXNzbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoa2xhc3MsICZQeUlkX19fbmFtZV9fKTsKLSAgICAgICAgaWYgKGtsYXNzbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7Ci0gICAgICAgICAgICAgICAgUHlfWERFQ1JFRihmdW5jbmFtZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKCFQeVVuaWNvZGVfQ2hlY2soa2xhc3NuYW1lKSkgewotICAgICAgICAgICAgUHlfREVDUkVGKGtsYXNzbmFtZSk7Ci0gICAgICAgICAgICBrbGFzc25hbWUgPSBOVUxMOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgLyogWFhYIFNob3VsZG4ndCB1c2UgcmVwcigpLyVSIGhlcmUhICovCi0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxib3VuZCBtZXRob2QgJVYuJVYgb2YgJVI+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrbGFzc25hbWUsIGRlZm5hbWUsCisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxib3VuZCBtZXRob2QgJVYgb2YgJVI+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jbmFtZSwgZGVmbmFtZSwgc2VsZik7CiAKICAgICBQeV9YREVDUkVGKGZ1bmNuYW1lKTsKLSAgICBQeV9YREVDUkVGKGtsYXNzbmFtZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL2J5dGVhcnJheW9iamVjdC5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg3YTIyMQotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvY2xpbmljL2J5dGVhcnJheW9iamVjdC5jLmgKQEAgLTAsMCArMSw2OTggQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfY2xlYXJfX2RvY19fLAorImNsZWFyKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVtb3ZlIGFsbCBpdGVtcyBmcm9tIHRoZSBieXRlYXJyYXkuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX0NMRUFSX01FVEhPRERFRiAgICBcCisgICAgeyJjbGVhciIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfY2xlYXIsIE1FVEhfTk9BUkdTLCBieXRlYXJyYXlfY2xlYXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9jbGVhcl9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9jbGVhcihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYnl0ZWFycmF5X2NsZWFyX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfY29weV9fZG9jX18sCisiY29weSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvcHkgb2YgQi4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfQ09QWV9NRVRIT0RERUYgICAgXAorICAgIHsiY29weSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfY29weSwgTUVUSF9OT0FSR1MsIGJ5dGVhcnJheV9jb3B5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfY29weV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9jb3B5KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBieXRlYXJyYXlfY29weV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X3RyYW5zbGF0ZV9fZG9jX18sCisidHJhbnNsYXRlKHRhYmxlLCBbZGVsZXRlY2hhcnNdKVxuIgorIlJldHVybiBhIGNvcHkgd2l0aCBlYWNoIGNoYXJhY3RlciBtYXBwZWQgYnkgdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLlxuIgorIlxuIgorIiAgdGFibGVcbiIKKyIgICAgVHJhbnNsYXRpb24gdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni5cbiIKKyJcbiIKKyJBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZWNoYXJzIGFyZSByZW1vdmVkLlxuIgorIlRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9UUkFOU0xBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfdHJhbnNsYXRlLCBNRVRIX1ZBUkFSR1MsIGJ5dGVhcnJheV90cmFuc2xhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV90cmFuc2xhdGVfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBncm91cF9yaWdodF8xLCBQeU9iamVjdCAqZGVsZXRlY2hhcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3RyYW5zbGF0ZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnRhYmxlOworICAgIGludCBncm91cF9yaWdodF8xID0gMDsKKyAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMgPSBOVUxMOworCisgICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp0cmFuc2xhdGUiLCAmdGFibGUpKQorICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POnRyYW5zbGF0ZSIsICZ0YWJsZSwgJmRlbGV0ZWNoYXJzKSkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImJ5dGVhcnJheS50cmFuc2xhdGUgcmVxdWlyZXMgMSB0byAyIGFyZ3VtZW50cyIpOworICAgICAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoc2VsZiwgdGFibGUsIGdyb3VwX3JpZ2h0XzEsIGRlbGV0ZWNoYXJzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X21ha2V0cmFuc19fZG9jX18sCisibWFrZXRyYW5zKGZybSwgdG8sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2VhYmxlIGZvciB0aGUgYnl0ZXMgb3IgYnl0ZWFycmF5IHRyYW5zbGF0ZSBtZXRob2QuXG4iCisiXG4iCisiVGhlIHJldHVybmVkIHRhYmxlIHdpbGwgYmUgb25lIHdoZXJlIGVhY2ggYnl0ZSBpbiBmcm0gaXMgbWFwcGVkIHRvIHRoZSBieXRlIGF0XG4iCisidGhlIHNhbWUgcG9zaXRpb24gaW4gdG8uXG4iCisiXG4iCisiVGhlIGJ5dGVzIG9iamVjdHMgZnJtIGFuZCB0byBtdXN0IGJlIG9mIHRoZSBzYW1lIGxlbmd0aC4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfTUFLRVRSQU5TX01FVEhPRERFRiAgICBcCisgICAgeyJtYWtldHJhbnMiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X21ha2V0cmFucywgTUVUSF9WQVJBUkdTfE1FVEhfU1RBVElDLCBieXRlYXJyYXlfbWFrZXRyYW5zX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfbWFrZXRyYW5zX2ltcGwoUHlfYnVmZmVyICpmcm0sIFB5X2J1ZmZlciAqdG8pOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X21ha2V0cmFucyh2b2lkICpudWxsLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZnJtID0ge05VTEwsIE5VTEx9OworICAgIFB5X2J1ZmZlciB0byA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KjptYWtldHJhbnMiLAorICAgICAgICAmZnJtLCAmdG8pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X21ha2V0cmFuc19pbXBsKCZmcm0sICZ0byk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZnJtICovCisgICAgaWYgKGZybS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJtKTsKKyAgICAvKiBDbGVhbnVwIGZvciB0byAqLworICAgIGlmICh0by5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdG8pOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9yZXBsYWNlX19kb2NfXywKKyJyZXBsYWNlKCRzZWxmLCBvbGQsIG5ldywgY291bnQ9LTEsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBjb3B5IHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyBvbGQgcmVwbGFjZWQgYnkgbmV3LlxuIgorIlxuIgorIiAgY291bnRcbiIKKyIgICAgTWF4aW11bSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgdG8gcmVwbGFjZS5cbiIKKyIgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyByZXBsYWNlIGFsbCBvY2N1cnJlbmNlcy5cbiIKKyJcbiIKKyJJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgY291bnQgaXMgZ2l2ZW4sIG9ubHkgdGhlIGZpcnN0IGNvdW50IG9jY3VycmVuY2VzIGFyZVxuIgorInJlcGxhY2VkLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9SRVBMQUNFX01FVEhPRERFRiAgICBcCisgICAgeyJyZXBsYWNlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZXBsYWNlLCBNRVRIX1ZBUkFSR1MsIGJ5dGVhcnJheV9yZXBsYWNlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcmVwbGFjZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKm9sZCwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpuZXcsIFB5X3NzaXplX3QgY291bnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JlcGxhY2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBvbGQgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfYnVmZmVyIG5ldyA9IHtOVUxMLCBOVUxMfTsKKyAgICBQeV9zc2l6ZV90IGNvdW50ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSp8bjpyZXBsYWNlIiwKKyAgICAgICAgJm9sZCwgJm5ldywgJmNvdW50KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9yZXBsYWNlX2ltcGwoc2VsZiwgJm9sZCwgJm5ldywgY291bnQpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIG9sZCAqLworICAgIGlmIChvbGQub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJm9sZCk7CisgICAgLyogQ2xlYW51cCBmb3IgbmV3ICovCisgICAgaWYgKG5ldy5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmbmV3KTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfc3BsaXRfX2RvY19fLAorInNwbGl0KCRzZWxmLCAvLCBzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiB0aGUgYnl0ZWFycmF5LCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlci5cbiIKKyJcbiIKKyIgIHNlcFxuIgorIiAgICBUaGUgZGVsaW1pdGVyIGFjY29yZGluZyB3aGljaCB0byBzcGxpdCB0aGUgYnl0ZWFycmF5LlxuIgorIiAgICBOb25lICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzXG4iCisiICAgIChzcGFjZSwgdGFiLCByZXR1cm4sIG5ld2xpbmUsIGZvcm1mZWVkLCB2ZXJ0aWNhbCB0YWIpLlxuIgorIiAgbWF4c3BsaXRcbiIKKyIgICAgTWF4aW11bSBudW1iZXIgb2Ygc3BsaXRzIHRvIGRvLlxuIgorIiAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIG5vIGxpbWl0LiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9TUExJVF9NRVRIT0RERUYgICAgXAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZWFycmF5X3NwbGl0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfc3BsaXRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwKKyAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4c3BsaXQpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3NwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNlcCIsICJtYXhzcGxpdCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzZXAgPSBQeV9Ob25lOworICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbjpzcGxpdCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9zcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfcGFydGl0aW9uX19kb2NfXywKKyJwYXJ0aXRpb24oJHNlbGYsIHNlcCwgLylcbiIKKyItLVxuIgorIlxuIgorIlBhcnRpdGlvbiB0aGUgYnl0ZWFycmF5IGludG8gdGhyZWUgcGFydHMgdXNpbmcgdGhlIGdpdmVuIHNlcGFyYXRvci5cbiIKKyJcbiIKKyJUaGlzIHdpbGwgc2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiB0aGUgYnl0ZWFycmF5LiBJZiB0aGUgc2VwYXJhdG9yIGlzXG4iCisiZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZVxuIgorInNlcGFyYXRvciBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciBpdC5cbiIKKyJcbiIKKyJJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgb3JpZ2luYWxcbiIKKyJieXRlYXJyYXkgb2JqZWN0IGFuZCB0d28gZW1wdHkgYnl0ZWFycmF5IG9iamVjdHMuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1BBUlRJVElPTl9NRVRIT0RERUYgICAgXAorICAgIHsicGFydGl0aW9uIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9wYXJ0aXRpb24sIE1FVEhfTywgYnl0ZWFycmF5X3BhcnRpdGlvbl9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X3JwYXJ0aXRpb25fX2RvY19fLAorInJwYXJ0aXRpb24oJHNlbGYsIHNlcCwgLylcbiIKKyItLVxuIgorIlxuIgorIlBhcnRpdGlvbiB0aGUgYnl0ZXMgaW50byB0aHJlZSBwYXJ0cyB1c2luZyB0aGUgZ2l2ZW4gc2VwYXJhdG9yLlxuIgorIlxuIgorIlRoaXMgd2lsbCBzZWFyY2ggZm9yIHRoZSBzZXBhcmF0b3Igc2VwIGluIHRoZSBieXRlYXJyYXksIHN0YXJ0aW5nIGFuZCB0aGUgZW5kLlxuIgorIklmIHRoZSBzZXBhcmF0b3IgaXMgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZVxuIgorInNlcGFyYXRvciwgdGhlIHNlcGFyYXRvciBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciBpdC5cbiIKKyJcbiIKKyJJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0d28gZW1wdHkgYnl0ZWFycmF5XG4iCisib2JqZWN0cyBhbmQgdGhlIG9yaWdpbmFsIGJ5dGVhcnJheSBvYmplY3QuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1JQQVJUSVRJT05fTUVUSE9EREVGICAgIFwKKyAgICB7InJwYXJ0aXRpb24iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JwYXJ0aXRpb24sIE1FVEhfTywgYnl0ZWFycmF5X3JwYXJ0aXRpb25fX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9yc3BsaXRfX2RvY19fLAorInJzcGxpdCgkc2VsZiwgLywgc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gdGhlIGJ5dGVhcnJheSwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuXG4iCisiXG4iCisiICBzZXBcbiIKKyIgICAgVGhlIGRlbGltaXRlciBhY2NvcmRpbmcgd2hpY2ggdG8gc3BsaXQgdGhlIGJ5dGVhcnJheS5cbiIKKyIgICAgTm9uZSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIHNwbGl0IG9uIEFTQ0lJIHdoaXRlc3BhY2UgY2hhcmFjdGVyc1xuIgorIiAgICAoc3BhY2UsIHRhYiwgcmV0dXJuLCBuZXdsaW5lLCBmb3JtZmVlZCwgdmVydGljYWwgdGFiKS5cbiIKKyIgIG1heHNwbGl0XG4iCisiICAgIE1heGltdW0gbnVtYmVyIG9mIHNwbGl0cyB0byBkby5cbiIKKyIgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBubyBsaW1pdC5cbiIKKyJcbiIKKyJTcGxpdHRpbmcgaXMgZG9uZSBzdGFydGluZyBhdCB0aGUgZW5kIG9mIHRoZSBieXRlYXJyYXkgYW5kIHdvcmtpbmcgdG8gdGhlIGZyb250LiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9SU1BMSVRfTUVUSE9EREVGICAgIFwKKyAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcnNwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZWFycmF5X3JzcGxpdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JzcGxpdF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwLAorICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4c3BsaXQpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JzcGxpdChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc2VwID0gUHlfTm9uZTsKKyAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T246cnNwbGl0IiwgX2tleXdvcmRzLAorICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JzcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfcmV2ZXJzZV9fZG9jX18sCisicmV2ZXJzZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldmVyc2UgdGhlIG9yZGVyIG9mIHRoZSB2YWx1ZXMgaW4gQiBpbiBwbGFjZS4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfUkVWRVJTRV9NRVRIT0RERUYgICAgXAorICAgIHsicmV2ZXJzZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmV2ZXJzZSwgTUVUSF9OT0FSR1MsIGJ5dGVhcnJheV9yZXZlcnNlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcmV2ZXJzZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9yZXZlcnNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBieXRlYXJyYXlfcmV2ZXJzZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X2luc2VydF9fZG9jX18sCisiaW5zZXJ0KCRzZWxmLCBpbmRleCwgaXRlbSwgLylcbiIKKyItLVxuIgorIlxuIgorIkluc2VydCBhIHNpbmdsZSBpdGVtIGludG8gdGhlIGJ5dGVhcnJheSBiZWZvcmUgdGhlIGdpdmVuIGluZGV4LlxuIgorIlxuIgorIiAgaW5kZXhcbiIKKyIgICAgVGhlIGluZGV4IHdoZXJlIHRoZSB2YWx1ZSBpcyB0byBiZSBpbnNlcnRlZC5cbiIKKyIgIGl0ZW1cbiIKKyIgICAgVGhlIGl0ZW0gdG8gYmUgaW5zZXJ0ZWQuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX0lOU0VSVF9NRVRIT0RERUYgICAgXAorICAgIHsiaW5zZXJ0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9pbnNlcnQsIE1FVEhfVkFSQVJHUywgYnl0ZWFycmF5X2luc2VydF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2luc2VydF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4LCBpbnQgaXRlbSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfaW5zZXJ0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGluZGV4OworICAgIGludCBpdGVtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuTyY6aW5zZXJ0IiwKKyAgICAgICAgJmluZGV4LCBfZ2V0Ynl0ZXZhbHVlLCAmaXRlbSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfaW5zZXJ0X2ltcGwoc2VsZiwgaW5kZXgsIGl0ZW0pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfYXBwZW5kX19kb2NfXywKKyJhcHBlbmQoJHNlbGYsIGl0ZW0sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBcHBlbmQgYSBzaW5nbGUgaXRlbSB0byB0aGUgZW5kIG9mIHRoZSBieXRlYXJyYXkuXG4iCisiXG4iCisiICBpdGVtXG4iCisiICAgIFRoZSBpdGVtIHRvIGJlIGFwcGVuZGVkLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9BUFBFTkRfTUVUSE9EREVGICAgIFwKKyAgICB7ImFwcGVuZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfYXBwZW5kLCBNRVRIX08sIGJ5dGVhcnJheV9hcHBlbmRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9hcHBlbmRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IGl0ZW0pOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2FwcGVuZChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgaXRlbTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YXBwZW5kIiwgX2dldGJ5dGV2YWx1ZSwgJml0ZW0pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2FwcGVuZF9pbXBsKHNlbGYsIGl0ZW0pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfZXh0ZW5kX19kb2NfXywKKyJleHRlbmQoJHNlbGYsIGl0ZXJhYmxlX29mX2ludHMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBcHBlbmQgYWxsIHRoZSBpdGVtcyBmcm9tIHRoZSBpdGVyYXRvciBvciBzZXF1ZW5jZSB0byB0aGUgZW5kIG9mIHRoZSBieXRlYXJyYXkuXG4iCisiXG4iCisiICBpdGVyYWJsZV9vZl9pbnRzXG4iCisiICAgIFRoZSBpdGVyYWJsZSBvZiBpdGVtcyB0byBhcHBlbmQuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX0VYVEVORF9NRVRIT0RERUYgICAgXAorICAgIHsiZXh0ZW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9leHRlbmQsIE1FVEhfTywgYnl0ZWFycmF5X2V4dGVuZF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X3BvcF9fZG9jX18sCisicG9wKCRzZWxmLCBpbmRleD0tMSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlbW92ZSBhbmQgcmV0dXJuIGEgc2luZ2xlIGl0ZW0gZnJvbSBCLlxuIgorIlxuIgorIiAgaW5kZXhcbiIKKyIgICAgVGhlIGluZGV4IGZyb20gd2hlcmUgdG8gcmVtb3ZlIHRoZSBpdGVtLlxuIgorIiAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIHJlbW92ZSB0aGUgbGFzdCBpdGVtLlxuIgorIlxuIgorIklmIG5vIGluZGV4IGFyZ3VtZW50IGlzIGdpdmVuLCB3aWxsIHBvcCB0aGUgbGFzdCBpdGVtLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9QT1BfTUVUSE9EREVGICAgIFwKKyAgICB7InBvcCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcG9wLCBNRVRIX1ZBUkFSR1MsIGJ5dGVhcnJheV9wb3BfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9wb3BfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcG9wKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnBvcCIsCisgICAgICAgICZpbmRleCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcG9wX2ltcGwoc2VsZiwgaW5kZXgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfcmVtb3ZlX19kb2NfXywKKyJyZW1vdmUoJHNlbGYsIHZhbHVlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVtb3ZlIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGEgdmFsdWUgaW4gdGhlIGJ5dGVhcnJheS5cbiIKKyJcbiIKKyIgIHZhbHVlXG4iCisiICAgIFRoZSB2YWx1ZSB0byByZW1vdmUuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1JFTU9WRV9NRVRIT0RERUYgICAgXAorICAgIHsicmVtb3ZlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZW1vdmUsIE1FVEhfTywgYnl0ZWFycmF5X3JlbW92ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JlbW92ZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQgdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JlbW92ZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnJlbW92ZSIsIF9nZXRieXRldmFsdWUsICZ2YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcmVtb3ZlX2ltcGwoc2VsZiwgdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfc3RyaXBfX2RvY19fLAorInN0cmlwKCRzZWxmLCBieXRlcz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC5cbiIKKyJcbiIKKyJJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9TVFJJUF9NRVRIT0RERUYgICAgXAorICAgIHsic3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3N0cmlwLCBNRVRIX1ZBUkFSR1MsIGJ5dGVhcnJheV9zdHJpcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3N0cmlwX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfc3RyaXAoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpieXRlcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdHJpcCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZieXRlcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfc3RyaXBfaW1wbChzZWxmLCBieXRlcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9sc3RyaXBfX2RvY19fLAorImxzdHJpcCgkc2VsZiwgYnl0ZXM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlN0cmlwIGxlYWRpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC5cbiIKKyJcbiIKKyJJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCBsZWFkaW5nIEFTQ0lJIHdoaXRlc3BhY2UuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX0xTVFJJUF9NRVRIT0RERUYgICAgXAorICAgIHsibHN0cmlwIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9sc3RyaXAsIE1FVEhfVkFSQVJHUywgYnl0ZWFycmF5X2xzdHJpcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2xzdHJpcF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2xzdHJpcChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmJ5dGVzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImxzdHJpcCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZieXRlcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfbHN0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfcnN0cmlwX19kb2NfXywKKyJyc3RyaXAoJHNlbGYsIGJ5dGVzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTdHJpcCB0cmFpbGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LlxuIgorIlxuIgorIklmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkIG9yIE5vbmUsIHN0cmlwIHRyYWlsaW5nIEFTQ0lJIHdoaXRlc3BhY2UuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1JTVFJJUF9NRVRIT0RERUYgICAgXAorICAgIHsicnN0cmlwIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yc3RyaXAsIE1FVEhfVkFSQVJHUywgYnl0ZWFycmF5X3JzdHJpcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JzdHJpcF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JzdHJpcChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmJ5dGVzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJzdHJpcCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZieXRlcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcnN0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfZGVjb2RlX19kb2NfXywKKyJkZWNvZGUoJHNlbGYsIC8sIGVuY29kaW5nPVwndXRmLThcJywgZXJyb3JzPVwnc3RyaWN0XCcpXG4iCisiLS1cbiIKKyJcbiIKKyJEZWNvZGUgdGhlIGJ5dGVhcnJheSB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuXG4iCisiXG4iCisiICBlbmNvZGluZ1xuIgorIiAgICBUaGUgZW5jb2Rpbmcgd2l0aCB3aGljaCB0byBkZWNvZGUgdGhlIGJ5dGVhcnJheS5cbiIKKyIgIGVycm9yc1xuIgorIiAgICBUaGUgZXJyb3IgaGFuZGxpbmcgc2NoZW1lIHRvIHVzZSBmb3IgdGhlIGhhbmRsaW5nIG9mIGRlY29kaW5nIGVycm9ycy5cbiIKKyIgICAgVGhlIGRlZmF1bHQgaXMgXCdzdHJpY3RcJyBtZWFuaW5nIHRoYXQgZGVjb2RpbmcgZXJyb3JzIHJhaXNlIGFcbiIKKyIgICAgVW5pY29kZURlY29kZUVycm9yLiBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlIFwnaWdub3JlXCcgYW5kIFwncmVwbGFjZVwnXG4iCisiICAgIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoIGNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0XG4iCisiICAgIGNhbiBoYW5kbGUgVW5pY29kZURlY29kZUVycm9ycy4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVhcnJheV9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9kZWNvZGVfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9kZWNvZGUoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8c3M6ZGVjb2RlIiwgX2tleXdvcmRzLAorICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2RlY29kZV9pbXBsKHNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfam9pbl9fZG9jX18sCisiam9pbigkc2VsZiwgaXRlcmFibGVfb2ZfYnl0ZXMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb25jYXRlbmF0ZSBhbnkgbnVtYmVyIG9mIGJ5dGVzL2J5dGVhcnJheSBvYmplY3RzLlxuIgorIlxuIgorIlRoZSBieXRlYXJyYXkgd2hvc2UgbWV0aG9kIGlzIGNhbGxlZCBpcyBpbnNlcnRlZCBpbiBiZXR3ZWVuIGVhY2ggcGFpci5cbiIKKyJcbiIKKyJUaGUgcmVzdWx0IGlzIHJldHVybmVkIGFzIGEgbmV3IGJ5dGVhcnJheSBvYmplY3QuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX0pPSU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImpvaW4iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2pvaW4sIE1FVEhfTywgYnl0ZWFycmF5X2pvaW5fX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9zcGxpdGxpbmVzX19kb2NfXywKKyJzcGxpdGxpbmVzKCRzZWxmLCAvLCBrZWVwZW5kcz1GYWxzZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBieXRlYXJyYXksIGJyZWFraW5nIGF0IGxpbmUgYm91bmRhcmllcy5cbiIKKyJcbiIKKyJMaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbGlzdCB1bmxlc3Mga2VlcGVuZHMgaXMgZ2l2ZW4gYW5kXG4iCisidHJ1ZS4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfU1BMSVRMSU5FU19NRVRIT0RERUYgICAgXAorICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXRsaW5lcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVhcnJheV9zcGxpdGxpbmVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQga2VlcGVuZHMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3NwbGl0bGluZXMoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2VlcGVuZHMiLCBOVUxMfTsKKyAgICBpbnQga2VlcGVuZHMgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGk6c3BsaXRsaW5lcyIsIF9rZXl3b3JkcywKKyAgICAgICAgJmtlZXBlbmRzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9zcGxpdGxpbmVzX2ltcGwoc2VsZiwga2VlcGVuZHMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfZnJvbWhleF9fZG9jX18sCisiZnJvbWhleCgkdHlwZSwgc3RyaW5nLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgYnl0ZWFycmF5IG9iamVjdCBmcm9tIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIG51bWJlcnMuXG4iCisiXG4iCisiU3BhY2VzIGJldHdlZW4gdHdvIG51bWJlcnMgYXJlIGFjY2VwdGVkLlxuIgorIkV4YW1wbGU6IGJ5dGVhcnJheS5mcm9taGV4KFwnQjkgMDFFRlwnKSAtPiBieXRlYXJyYXkoYlwnXFxcXHhiOVxcXFx4MDFcXFxceGVmXCcpIik7CisKKyNkZWZpbmUgQllURUFSUkFZX0ZST01IRVhfTUVUSE9EREVGICAgIFwKKyAgICB7ImZyb21oZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2Zyb21oZXgsIE1FVEhfT3xNRVRIX0NMQVNTLCBieXRlYXJyYXlfZnJvbWhleF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2Zyb21oZXhfaW1wbChQeU9iamVjdCpjbHMsIFB5T2JqZWN0ICpzdHJpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2Zyb21oZXgoUHlUeXBlT2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cmluZzsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpmcm9taGV4IiwgJnN0cmluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfZnJvbWhleF9pbXBsKChQeU9iamVjdCopY2xzLCBzdHJpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfcmVkdWNlX19kb2NfXywKKyJfX3JlZHVjZV9fKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfUkVEVUNFX01FVEhPRERFRiAgICBcCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZWR1Y2UsIE1FVEhfTk9BUkdTLCBieXRlYXJyYXlfcmVkdWNlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcmVkdWNlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JlZHVjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYnl0ZWFycmF5X3JlZHVjZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X3JlZHVjZV9leF9fZG9jX18sCisiX19yZWR1Y2VfZXhfXygkc2VsZiwgcHJvdG89MCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1JFRFVDRV9FWF9NRVRIT0RERUYgICAgXAorICAgIHsiX19yZWR1Y2VfZXhfXyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmVkdWNlX2V4LCBNRVRIX1ZBUkFSR1MsIGJ5dGVhcnJheV9yZWR1Y2VfZXhfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9yZWR1Y2VfZXhfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IHByb3RvKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9yZWR1Y2VfZXgoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBwcm90byA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9fcmVkdWNlX2V4X18iLAorICAgICAgICAmcHJvdG8pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JlZHVjZV9leF9pbXBsKHNlbGYsIHByb3RvKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X3NpemVvZl9fZG9jX18sCisiX19zaXplb2ZfXygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIHNpemUgb2YgdGhlIGJ5dGVhcnJheSBvYmplY3QgaW4gbWVtb3J5LCBpbiBieXRlcy4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfU0laRU9GX01FVEhPRERFRiAgICBcCisgICAgeyJfX3NpemVvZl9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zaXplb2YsIE1FVEhfTk9BUkdTLCBieXRlYXJyYXlfc2l6ZW9mX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfc2l6ZW9mX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3NpemVvZihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYnl0ZWFycmF5X3NpemVvZl9pbXBsKHNlbGYpOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk2NmMxNWZmMjJjNWUyNDMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvYnl0ZXNvYmplY3QuYy5oIGIvT2JqZWN0cy9jbGluaWMvYnl0ZXNvYmplY3QuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMWE1ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL2NsaW5pYy9ieXRlc29iamVjdC5jLmgKQEAgLTAsMCArMSw0ODcgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihieXRlc19zcGxpdF9fZG9jX18sCisic3BsaXQoJHNlbGYsIC8sIHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgdGhlIHNlY3Rpb25zIGluIHRoZSBieXRlcywgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuXG4iCisiXG4iCisiICBzZXBcbiIKKyIgICAgVGhlIGRlbGltaXRlciBhY2NvcmRpbmcgd2hpY2ggdG8gc3BsaXQgdGhlIGJ5dGVzLlxuIgorIiAgICBOb25lICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzXG4iCisiICAgIChzcGFjZSwgdGFiLCByZXR1cm4sIG5ld2xpbmUsIGZvcm1mZWVkLCB2ZXJ0aWNhbCB0YWIpLlxuIgorIiAgbWF4c3BsaXRcbiIKKyIgICAgTWF4aW11bSBudW1iZXIgb2Ygc3BsaXRzIHRvIGRvLlxuIgorIiAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIG5vIGxpbWl0LiIpOworCisjZGVmaW5lIEJZVEVTX1NQTElUX01FVEhPRERFRiAgICBcCisgICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX3NwbGl0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19zcGxpdChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnNlcCA9IFB5X05vbmU7CisgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9uOnNwbGl0IiwgX2tleXdvcmRzLAorICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfc3BsaXRfaW1wbChzZWxmLCBzZXAsIG1heHNwbGl0KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfcGFydGl0aW9uX19kb2NfXywKKyJwYXJ0aXRpb24oJHNlbGYsIHNlcCwgLylcbiIKKyItLVxuIgorIlxuIgorIlBhcnRpdGlvbiB0aGUgYnl0ZXMgaW50byB0aHJlZSBwYXJ0cyB1c2luZyB0aGUgZ2l2ZW4gc2VwYXJhdG9yLlxuIgorIlxuIgorIlRoaXMgd2lsbCBzZWFyY2ggZm9yIHRoZSBzZXBhcmF0b3Igc2VwIGluIHRoZSBieXRlcy4gSWYgdGhlIHNlcGFyYXRvciBpcyBmb3VuZCxcbiIKKyJyZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4iCisiaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgaXQuXG4iCisiXG4iCisiSWYgdGhlIHNlcGFyYXRvciBpcyBub3QgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIGJ5dGVzXG4iCisib2JqZWN0IGFuZCB0d28gZW1wdHkgYnl0ZXMgb2JqZWN0cy4iKTsKKworI2RlZmluZSBCWVRFU19QQVJUSVRJT05fTUVUSE9EREVGICAgIFwKKyAgICB7InBhcnRpdGlvbiIsIChQeUNGdW5jdGlvbilieXRlc19wYXJ0aXRpb24sIE1FVEhfTywgYnl0ZXNfcGFydGl0aW9uX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19wYXJ0aXRpb25faW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnNlcCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19wYXJ0aXRpb24oUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgc2VwID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpwYXJ0aXRpb24iLCAmc2VwKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3BhcnRpdGlvbl9pbXBsKHNlbGYsICZzZXApOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHNlcCAqLworICAgIGlmIChzZXAub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlcCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfcnBhcnRpdGlvbl9fZG9jX18sCisicnBhcnRpdGlvbigkc2VsZiwgc2VwLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUGFydGl0aW9uIHRoZSBieXRlcyBpbnRvIHRocmVlIHBhcnRzIHVzaW5nIHRoZSBnaXZlbiBzZXBhcmF0b3IuXG4iCisiXG4iCisiVGhpcyB3aWxsIHNlYXJjaCBmb3IgdGhlIHNlcGFyYXRvciBzZXAgaW4gdGhlIGJ5dGVzLCBzdGFydGluZyBhbmQgdGhlIGVuZC4gSWZcbiIKKyJ0aGUgc2VwYXJhdG9yIGlzIGZvdW5kLCByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGVcbiIKKyJzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3IgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgaXQuXG4iCisiXG4iCisiSWYgdGhlIHNlcGFyYXRvciBpcyBub3QgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IGJ5dGVzXG4iCisib2JqZWN0cyBhbmQgdGhlIG9yaWdpbmFsIGJ5dGVzIG9iamVjdC4iKTsKKworI2RlZmluZSBCWVRFU19SUEFSVElUSU9OX01FVEhPRERFRiAgICBcCisgICAgeyJycGFydGl0aW9uIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JwYXJ0aXRpb24sIE1FVEhfTywgYnl0ZXNfcnBhcnRpdGlvbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcnBhcnRpdGlvbl9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqc2VwKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3JwYXJ0aXRpb24oUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgc2VwID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpycGFydGl0aW9uIiwgJnNlcCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlc19ycGFydGl0aW9uX2ltcGwoc2VsZiwgJnNlcCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Igc2VwICovCisgICAgaWYgKHNlcC5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2VwKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc19yc3BsaXRfX2RvY19fLAorInJzcGxpdCgkc2VsZiwgLywgc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gdGhlIGJ5dGVzLCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlci5cbiIKKyJcbiIKKyIgIHNlcFxuIgorIiAgICBUaGUgZGVsaW1pdGVyIGFjY29yZGluZyB3aGljaCB0byBzcGxpdCB0aGUgYnl0ZXMuXG4iCisiICAgIE5vbmUgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBzcGxpdCBvbiBBU0NJSSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnNcbiIKKyIgICAgKHNwYWNlLCB0YWIsIHJldHVybiwgbmV3bGluZSwgZm9ybWZlZWQsIHZlcnRpY2FsIHRhYikuXG4iCisiICBtYXhzcGxpdFxuIgorIiAgICBNYXhpbXVtIG51bWJlciBvZiBzcGxpdHMgdG8gZG8uXG4iCisiICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgbm8gbGltaXQuXG4iCisiXG4iCisiU3BsaXR0aW5nIGlzIGRvbmUgc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgYnl0ZXMgYW5kIHdvcmtpbmcgdG8gdGhlIGZyb250LiIpOworCisjZGVmaW5lIEJZVEVTX1JTUExJVF9NRVRIT0RERUYgICAgXAorICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX3JzcGxpdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcnNwbGl0X2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3JzcGxpdChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnNlcCA9IFB5X05vbmU7CisgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9uOnJzcGxpdCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JzcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc19qb2luX19kb2NfXywKKyJqb2luKCRzZWxmLCBpdGVyYWJsZV9vZl9ieXRlcywgLylcbiIKKyItLVxuIgorIlxuIgorIkNvbmNhdGVuYXRlIGFueSBudW1iZXIgb2YgYnl0ZXMgb2JqZWN0cy5cbiIKKyJcbiIKKyJUaGUgYnl0ZXMgd2hvc2UgbWV0aG9kIGlzIGNhbGxlZCBpcyBpbnNlcnRlZCBpbiBiZXR3ZWVuIGVhY2ggcGFpci5cbiIKKyJcbiIKKyJUaGUgcmVzdWx0IGlzIHJldHVybmVkIGFzIGEgbmV3IGJ5dGVzIG9iamVjdC5cbiIKKyJcbiIKKyJFeGFtcGxlOiBiXCcuXCcuam9pbihbYlwnYWJcJywgYlwncHFcJywgYlwncnNcJ10pIC0+IGJcJ2FiLnBxLnJzXCcuIik7CisKKyNkZWZpbmUgQllURVNfSk9JTl9NRVRIT0RERUYgICAgXAorICAgIHsiam9pbiIsIChQeUNGdW5jdGlvbilieXRlc19qb2luLCBNRVRIX08sIGJ5dGVzX2pvaW5fX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ5dGVzX3N0cmlwX19kb2NfXywKKyJzdHJpcCgkc2VsZiwgYnl0ZXM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlN0cmlwIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuXG4iCisiXG4iCisiSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZS4iKTsKKworI2RlZmluZSBCWVRFU19TVFJJUF9NRVRIT0RERUYgICAgXAorICAgIHsic3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3RyaXAsIE1FVEhfVkFSQVJHUywgYnl0ZXNfc3RyaXBfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3N0cmlwX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJ5dGVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3N0cmlwKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpieXRlcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdHJpcCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZieXRlcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlc19zdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfbHN0cmlwX19kb2NfXywKKyJsc3RyaXAoJHNlbGYsIGJ5dGVzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTdHJpcCBsZWFkaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuXG4iCisiXG4iCisiSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgbGVhZGluZyAgQVNDSUkgd2hpdGVzcGFjZS4iKTsKKworI2RlZmluZSBCWVRFU19MU1RSSVBfTUVUSE9EREVGICAgIFwKKyAgICB7ImxzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlc19sc3RyaXAsIE1FVEhfVkFSQVJHUywgYnl0ZXNfbHN0cmlwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19sc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfbHN0cmlwKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpieXRlcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJsc3RyaXAiLAorICAgICAgICAwLCAxLAorICAgICAgICAmYnl0ZXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfbHN0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc19yc3RyaXBfX2RvY19fLAorInJzdHJpcCgkc2VsZiwgYnl0ZXM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlN0cmlwIHRyYWlsaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuXG4iCisiXG4iCisiSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZS4iKTsKKworI2RlZmluZSBCWVRFU19SU1RSSVBfTUVUSE9EREVGICAgIFwKKyAgICB7InJzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlc19yc3RyaXAsIE1FVEhfVkFSQVJHUywgYnl0ZXNfcnN0cmlwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19yc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcnN0cmlwKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpieXRlcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyc3RyaXAiLAorICAgICAgICAwLCAxLAorICAgICAgICAmYnl0ZXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfcnN0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc190cmFuc2xhdGVfX2RvY19fLAorInRyYW5zbGF0ZSh0YWJsZSwgW2RlbGV0ZWNoYXJzXSlcbiIKKyJSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS5cbiIKKyJcbiIKKyIgIHRhYmxlXG4iCisiICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuXG4iCisiXG4iCisiQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC5cbiIKKyJUaGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4iKTsKKworI2RlZmluZSBCWVRFU19UUkFOU0xBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlc190cmFuc2xhdGUsIE1FVEhfVkFSQVJHUywgYnl0ZXNfdHJhbnNsYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc190cmFuc2xhdGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsIGludCBncm91cF9yaWdodF8xLAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3RyYW5zbGF0ZShQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdGFibGU7CisgICAgaW50IGdyb3VwX3JpZ2h0XzEgPSAwOworICAgIFB5T2JqZWN0ICpkZWxldGVjaGFycyA9IE5VTEw7CisKKyAgICBzd2l0Y2ggKFB5VHVwbGVfR0VUX1NJWkUoYXJncykpIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnRyYW5zbGF0ZSIsICZ0YWJsZSkpCisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086dHJhbnNsYXRlIiwgJnRhYmxlLCAmZGVsZXRlY2hhcnMpKQorICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYnl0ZXMudHJhbnNsYXRlIHJlcXVpcmVzIDEgdG8gMiBhcmd1bWVudHMiKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfdHJhbnNsYXRlX2ltcGwoc2VsZiwgdGFibGUsIGdyb3VwX3JpZ2h0XzEsIGRlbGV0ZWNoYXJzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfbWFrZXRyYW5zX19kb2NfXywKKyJtYWtldHJhbnMoZnJtLCB0bywgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzZWFibGUgZm9yIHRoZSBieXRlcyBvciBieXRlYXJyYXkgdHJhbnNsYXRlIG1ldGhvZC5cbiIKKyJcbiIKKyJUaGUgcmV0dXJuZWQgdGFibGUgd2lsbCBiZSBvbmUgd2hlcmUgZWFjaCBieXRlIGluIGZybSBpcyBtYXBwZWQgdG8gdGhlIGJ5dGUgYXRcbiIKKyJ0aGUgc2FtZSBwb3NpdGlvbiBpbiB0by5cbiIKKyJcbiIKKyJUaGUgYnl0ZXMgb2JqZWN0cyBmcm0gYW5kIHRvIG11c3QgYmUgb2YgdGhlIHNhbWUgbGVuZ3RoLiIpOworCisjZGVmaW5lIEJZVEVTX01BS0VUUkFOU19NRVRIT0RERUYgICAgXAorICAgIHsibWFrZXRyYW5zIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX21ha2V0cmFucywgTUVUSF9WQVJBUkdTfE1FVEhfU1RBVElDLCBieXRlc19tYWtldHJhbnNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX21ha2V0cmFuc19pbXBsKFB5X2J1ZmZlciAqZnJtLCBQeV9idWZmZXIgKnRvKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX21ha2V0cmFucyh2b2lkICpudWxsLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZnJtID0ge05VTEwsIE5VTEx9OworICAgIFB5X2J1ZmZlciB0byA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KjptYWtldHJhbnMiLAorICAgICAgICAmZnJtLCAmdG8pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfbWFrZXRyYW5zX2ltcGwoJmZybSwgJnRvKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBmcm0gKi8KKyAgICBpZiAoZnJtLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcm0pOworICAgIC8qIENsZWFudXAgZm9yIHRvICovCisgICAgaWYgKHRvLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0byk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfcmVwbGFjZV9fZG9jX18sCisicmVwbGFjZSgkc2VsZiwgb2xkLCBuZXcsIGNvdW50PS0xLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgY29weSB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgb2xkIHJlcGxhY2VkIGJ5IG5ldy5cbiIKKyJcbiIKKyIgIGNvdW50XG4iCisiICAgIE1heGltdW0gbnVtYmVyIG9mIG9jY3VycmVuY2VzIHRvIHJlcGxhY2UuXG4iCisiICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgcmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMuXG4iCisiXG4iCisiSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGNvdW50IGlzIGdpdmVuLCBvbmx5IHRoZSBmaXJzdCBjb3VudCBvY2N1cnJlbmNlcyBhcmVcbiIKKyJyZXBsYWNlZC4iKTsKKworI2RlZmluZSBCWVRFU19SRVBMQUNFX01FVEhPRERFRiAgICBcCisgICAgeyJyZXBsYWNlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JlcGxhY2UsIE1FVEhfVkFSQVJHUywgYnl0ZXNfcmVwbGFjZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcmVwbGFjZV9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlfYnVmZmVyICpvbGQsIFB5X2J1ZmZlciAqbmV3LAorICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY291bnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcmVwbGFjZShQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBvbGQgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfYnVmZmVyIG5ldyA9IHtOVUxMLCBOVUxMfTsKKyAgICBQeV9zc2l6ZV90IGNvdW50ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSp8bjpyZXBsYWNlIiwKKyAgICAgICAgJm9sZCwgJm5ldywgJmNvdW50KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JlcGxhY2VfaW1wbChzZWxmLCAmb2xkLCAmbmV3LCBjb3VudCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Igb2xkICovCisgICAgaWYgKG9sZC5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmb2xkKTsKKyAgICAvKiBDbGVhbnVwIGZvciBuZXcgKi8KKyAgICBpZiAobmV3Lm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZuZXcpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVzX2RlY29kZV9fZG9jX18sCisiZGVjb2RlKCRzZWxmLCAvLCBlbmNvZGluZz1cJ3V0Zi04XCcsIGVycm9ycz1cJ3N0cmljdFwnKVxuIgorIi0tXG4iCisiXG4iCisiRGVjb2RlIHRoZSBieXRlcyB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuXG4iCisiXG4iCisiICBlbmNvZGluZ1xuIgorIiAgICBUaGUgZW5jb2Rpbmcgd2l0aCB3aGljaCB0byBkZWNvZGUgdGhlIGJ5dGVzLlxuIgorIiAgZXJyb3JzXG4iCisiICAgIFRoZSBlcnJvciBoYW5kbGluZyBzY2hlbWUgdG8gdXNlIGZvciB0aGUgaGFuZGxpbmcgb2YgZGVjb2RpbmcgZXJyb3JzLlxuIgorIiAgICBUaGUgZGVmYXVsdCBpcyBcJ3N0cmljdFwnIG1lYW5pbmcgdGhhdCBkZWNvZGluZyBlcnJvcnMgcmFpc2UgYVxuIgorIiAgICBVbmljb2RlRGVjb2RlRXJyb3IuIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgXCdpZ25vcmVcJyBhbmQgXCdyZXBsYWNlXCdcbiIKKyIgICAgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXRcbiIKKyIgICAgY2FuIGhhbmRsZSBVbmljb2RlRGVjb2RlRXJyb3JzLiIpOworCisjZGVmaW5lIEJZVEVTX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfZGVjb2RlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19kZWNvZGUoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifHNzOmRlY29kZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmVuY29kaW5nLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX2RlY29kZV9pbXBsKHNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc19zcGxpdGxpbmVzX19kb2NfXywKKyJzcGxpdGxpbmVzKCRzZWxmLCAvLCBrZWVwZW5kcz1GYWxzZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBieXRlcywgYnJlYWtpbmcgYXQgbGluZSBib3VuZGFyaWVzLlxuIgorIlxuIgorIkxpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0IHVubGVzcyBrZWVwZW5kcyBpcyBnaXZlbiBhbmRcbiIKKyJ0cnVlLiIpOworCisjZGVmaW5lIEJZVEVTX1NQTElUTElORVNfTUVUSE9EREVGICAgIFwKKyAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXRsaW5lcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX3NwbGl0bGluZXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3NwbGl0bGluZXNfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIGludCBrZWVwZW5kcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19zcGxpdGxpbmVzKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZWVwZW5kcyIsIE5VTEx9OworICAgIGludCBrZWVwZW5kcyA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aTpzcGxpdGxpbmVzIiwgX2tleXdvcmRzLAorICAgICAgICAma2VlcGVuZHMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfc3BsaXRsaW5lc19pbXBsKHNlbGYsIGtlZXBlbmRzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfZnJvbWhleF9fZG9jX18sCisiZnJvbWhleCgkdHlwZSwgc3RyaW5nLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgYnl0ZXMgb2JqZWN0IGZyb20gYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgbnVtYmVycy5cbiIKKyJcbiIKKyJTcGFjZXMgYmV0d2VlbiB0d28gbnVtYmVycyBhcmUgYWNjZXB0ZWQuXG4iCisiRXhhbXBsZTogYnl0ZXMuZnJvbWhleChcJ0I5IDAxRUZcJykgLT4gYlwnXFxcXHhiOVxcXFx4MDFcXFxceGVmXCcuIik7CisKKyNkZWZpbmUgQllURVNfRlJPTUhFWF9NRVRIT0RERUYgICAgXAorICAgIHsiZnJvbWhleCIsIChQeUNGdW5jdGlvbilieXRlc19mcm9taGV4LCBNRVRIX098TUVUSF9DTEFTUywgYnl0ZXNfZnJvbWhleF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfZnJvbWhleF9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnN0cmluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19mcm9taGV4KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyaW5nOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmZyb21oZXgiLCAmc3RyaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX2Zyb21oZXhfaW1wbCh0eXBlLCBzdHJpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmQwY2U4ZjI1ZDdlMThmNCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9PYmplY3RzL2NsaW5pYy9kaWN0b2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL2RpY3RvYmplY3QuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyODhiOWEKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL2NsaW5pYy9kaWN0b2JqZWN0LmMuaApAQCAtMCwwICsxLDQyIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoZGljdF9mcm9ta2V5c19fZG9jX18sCisiZnJvbWtleXMoJHR5cGUsIGl0ZXJhYmxlLCB2YWx1ZT1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBhIG5ldyBkaWN0IHdpdGgga2V5cyBmcm9tIGl0ZXJhYmxlIGFuZCB2YWx1ZXMgZXF1YWwgdG8gdmFsdWUuIik7CisKKyNkZWZpbmUgRElDVF9GUk9NS0VZU19NRVRIT0RERUYgICAgXAorICAgIHsiZnJvbWtleXMiLCAoUHlDRnVuY3Rpb24pZGljdF9mcm9ta2V5cywgTUVUSF9WQVJBUkdTfE1FVEhfQ0xBU1MsIGRpY3RfZnJvbWtleXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RfZnJvbWtleXNfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICppdGVyYWJsZSwgUHlPYmplY3QgKnZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RfZnJvbWtleXMoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqaXRlcmFibGU7CisgICAgUHlPYmplY3QgKnZhbHVlID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImZyb21rZXlzIiwKKyAgICAgICAgMSwgMiwKKyAgICAgICAgJml0ZXJhYmxlLCAmdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gZGljdF9mcm9ta2V5c19pbXBsKHR5cGUsIGl0ZXJhYmxlLCB2YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGRpY3RfX19jb250YWluc19fX19kb2NfXywKKyJfX2NvbnRhaW5zX18oJHNlbGYsIGtleSwgLylcbiIKKyItLVxuIgorIlxuIgorIlRydWUgaWYgRCBoYXMgYSBrZXkgaywgZWxzZSBGYWxzZS4iKTsKKworI2RlZmluZSBESUNUX19fQ09OVEFJTlNfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19jb250YWluc19fIiwgKFB5Q0Z1bmN0aW9uKWRpY3RfX19jb250YWluc19fLCBNRVRIX098TUVUSF9DT0VYSVNULCBkaWN0X19fY29udGFpbnNfX19fZG9jX199LAorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlNzRkNjc2MzMyZmRiYTYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvdW5pY29kZW9iamVjdC5jLmggYi9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDJhNzAwCi0tLSAvZGV2L251bGwKKysrIGIvT2JqZWN0cy9jbGluaWMvdW5pY29kZW9iamVjdC5jLmgKQEAgLTAsMCArMSw0MSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHVuaWNvZGVfbWFrZXRyYW5zX19kb2NfXywKKyJtYWtldHJhbnMoeCwgeT1Ob25lLCB6PU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgZm9yIHN0ci50cmFuc2xhdGUoKS5cbiIKKyJcbiIKKyJJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgbWFwcGluZyBVbmljb2RlXG4iCisib3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIHRvIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3Mgb3IgTm9uZS5cbiIKKyJDaGFyYWN0ZXIga2V5cyB3aWxsIGJlIHRoZW4gY29udmVydGVkIHRvIG9yZGluYWxzLlxuIgorIklmIHRoZXJlIGFyZSB0d28gYXJndW1lbnRzLCB0aGV5IG11c3QgYmUgc3RyaW5ncyBvZiBlcXVhbCBsZW5ndGgsIGFuZFxuIgorImluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCB3aWxsIGJlIG1hcHBlZCB0byB0aGVcbiIKKyJjaGFyYWN0ZXIgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4geS4gSWYgdGhlcmUgaXMgYSB0aGlyZCBhcmd1bWVudCwgaXRcbiIKKyJtdXN0IGJlIGEgc3RyaW5nLCB3aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgbWFwcGVkIHRvIE5vbmUgaW4gdGhlIHJlc3VsdC4iKTsKKworI2RlZmluZSBVTklDT0RFX01BS0VUUkFOU19NRVRIT0RERUYgICAgXAorICAgIHsibWFrZXRyYW5zIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVfbWFrZXRyYW5zLCBNRVRIX1ZBUkFSR1N8TUVUSF9TVEFUSUMsIHVuaWNvZGVfbWFrZXRyYW5zX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlX21ha2V0cmFuc19pbXBsKFB5T2JqZWN0ICp4LCBQeU9iamVjdCAqeSwgUHlPYmplY3QgKnopOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV9tYWtldHJhbnModm9pZCAqbnVsbCwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKng7CisgICAgUHlPYmplY3QgKnkgPSBOVUxMOworICAgIFB5T2JqZWN0ICp6ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xVVTptYWtldHJhbnMiLAorICAgICAgICAmeCwgJnksICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVfbWFrZXRyYW5zX2ltcGwoeCwgeSwgeik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NGFmZmRmZjViMmRhZmY1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY29kZW9iamVjdC5jIGIvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKaW5kZXggMzUzZjQxNC4uYjBlMzQ0NiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKQEAgLTM4NCw3ICszODQsNyBAQAogewogICAgIFB5X3NzaXplX3QgcmVzOwogCi0gICAgcmVzID0gc2l6ZW9mKFB5Q29kZU9iamVjdCk7CisgICAgcmVzID0gX1B5T2JqZWN0X1NJWkUoUHlfVFlQRShjbykpOwogICAgIGlmIChjby0+Y29fY2VsbDJhcmcgIT0gTlVMTCAmJiBjby0+Y29fY2VsbHZhcnMgIT0gTlVMTCkKICAgICAgICAgcmVzICs9IFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2NlbGx2YXJzKSAqIHNpemVvZih1bnNpZ25lZCBjaGFyKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7CmRpZmYgLS1naXQgYS9PYmplY3RzL2NvbXBsZXhvYmplY3QuYyBiL09iamVjdHMvY29tcGxleG9iamVjdC5jCmluZGV4IDdhYWFlYWIuLmE1YmZiNjYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY29tcGxleG9iamVjdC5jCisrKyBiL09iamVjdHMvY29tcGxleG9iamVjdC5jCkBAIC0xMyw3ICsxMyw3IEBACiBzdGF0aWMgUHlfY29tcGxleCBjXzEgPSB7MS4sIDAufTsKIAogUHlfY29tcGxleAotY19zdW0oUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIpCitfUHlfY19zdW0oUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIpCiB7CiAgICAgUHlfY29tcGxleCByOwogICAgIHIucmVhbCA9IGEucmVhbCArIGIucmVhbDsKQEAgLTIyLDcgKzIyLDcgQEAKIH0KIAogUHlfY29tcGxleAotY19kaWZmKFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiKQorX1B5X2NfZGlmZihQeV9jb21wbGV4IGEsIFB5X2NvbXBsZXggYikKIHsKICAgICBQeV9jb21wbGV4IHI7CiAgICAgci5yZWFsID0gYS5yZWFsIC0gYi5yZWFsOwpAQCAtMzEsNyArMzEsNyBAQAogfQogCiBQeV9jb21wbGV4Ci1jX25lZyhQeV9jb21wbGV4IGEpCitfUHlfY19uZWcoUHlfY29tcGxleCBhKQogewogICAgIFB5X2NvbXBsZXggcjsKICAgICByLnJlYWwgPSAtYS5yZWFsOwpAQCAtNDAsNyArNDAsNyBAQAogfQogCiBQeV9jb21wbGV4Ci1jX3Byb2QoUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIpCitfUHlfY19wcm9kKFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiKQogewogICAgIFB5X2NvbXBsZXggcjsKICAgICByLnJlYWwgPSBhLnJlYWwqYi5yZWFsIC0gYS5pbWFnKmIuaW1hZzsKQEAgLTQ5LDcgKzQ5LDcgQEAKIH0KIAogUHlfY29tcGxleAotY19xdW90KFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiKQorX1B5X2NfcXVvdChQeV9jb21wbGV4IGEsIFB5X2NvbXBsZXggYikKIHsKICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAgVGhpcyB3YXMgdGhlIG9yaWdpbmFsIGFsZ29yaXRobS4gIEl0J3MgZ3Jvc3NseSBwcm9uZSB0byBzcHVyaW91cwpAQCAtMTA3LDcgKzEwNyw3IEBACiB9CiAKIFB5X2NvbXBsZXgKLWNfcG93KFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiKQorX1B5X2NfcG93KFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiKQogewogICAgIFB5X2NvbXBsZXggcjsKICAgICBkb3VibGUgdmFicyxsZW4sYXQscGhhc2U7CkBAIC0xNDUsOSArMTQ1LDkgQEAKICAgICBwID0geDsKICAgICB3aGlsZSAobWFzayA+IDAgJiYgbiA+PSBtYXNrKSB7CiAgICAgICAgIGlmIChuICYgbWFzaykKLSAgICAgICAgICAgIHIgPSBjX3Byb2QocixwKTsKKyAgICAgICAgICAgIHIgPSBfUHlfY19wcm9kKHIscCk7CiAgICAgICAgIG1hc2sgPDw9IDE7Ci0gICAgICAgIHAgPSBjX3Byb2QocCxwKTsKKyAgICAgICAgcCA9IF9QeV9jX3Byb2QocCxwKTsKICAgICB9CiAgICAgcmV0dXJuIHI7CiB9CkBAIC0xNjAsMTcgKzE2MCwxNyBAQAogICAgIGlmIChuID4gMTAwIHx8IG4gPCAtMTAwKSB7CiAgICAgICAgIGNuLnJlYWwgPSAoZG91YmxlKSBuOwogICAgICAgICBjbi5pbWFnID0gMC47Ci0gICAgICAgIHJldHVybiBjX3Bvdyh4LGNuKTsKKyAgICAgICAgcmV0dXJuIF9QeV9jX3Bvdyh4LGNuKTsKICAgICB9CiAgICAgZWxzZSBpZiAobiA+IDApCiAgICAgICAgIHJldHVybiBjX3Bvd3UoeCxuKTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBjX3F1b3QoY18xLGNfcG93dSh4LC1uKSk7CisgICAgICAgIHJldHVybiBfUHlfY19xdW90KGNfMSwgY19wb3d1KHgsLW4pKTsKIAogfQogCiBkb3VibGUKLWNfYWJzKFB5X2NvbXBsZXggeikKK19QeV9jX2FicyhQeV9jb21wbGV4IHopCiB7CiAgICAgLyogc2V0cyBlcnJubyA9IEVSQU5HRSBvbiBvdmVyZmxvdzsgIG90aGVyd2lzZSBlcnJubyA9IDAgKi8KICAgICBkb3VibGUgcmVzdWx0OwpAQCAtNDQ1LDcgKzQ0NSw3IEBACiAgICAgVE9fQ09NUExFWCh2LCBhKTsKICAgICBUT19DT01QTEVYKHcsIGIpOwogICAgIFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXhfYWRkIiwgcmV0dXJuIDApCi0gICAgcmVzdWx0ID0gY19zdW0oYSwgYik7CisgICAgcmVzdWx0ID0gX1B5X2Nfc3VtKGEsIGIpOwogICAgIFB5RlBFX0VORF9QUk9URUNUKHJlc3VsdCkKICAgICByZXR1cm4gUHlDb21wbGV4X0Zyb21DQ29tcGxleChyZXN1bHQpOwogfQpAQCAtNDU4LDcgKzQ1OCw3IEBACiAgICAgVE9fQ09NUExFWCh2LCBhKTsKICAgICBUT19DT01QTEVYKHcsIGIpOwogICAgIFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXhfc3ViIiwgcmV0dXJuIDApCi0gICAgcmVzdWx0ID0gY19kaWZmKGEsIGIpOworICAgIHJlc3VsdCA9IF9QeV9jX2RpZmYoYSwgYik7CiAgICAgUHlGUEVfRU5EX1BST1RFQ1QocmVzdWx0KQogICAgIHJldHVybiBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KHJlc3VsdCk7CiB9CkBAIC00NzEsNyArNDcxLDcgQEAKICAgICBUT19DT01QTEVYKHYsIGEpOwogICAgIFRPX0NPTVBMRVgodywgYik7CiAgICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleF9tdWwiLCByZXR1cm4gMCkKLSAgICByZXN1bHQgPSBjX3Byb2QoYSwgYik7CisgICAgcmVzdWx0ID0gX1B5X2NfcHJvZChhLCBiKTsKICAgICBQeUZQRV9FTkRfUFJPVEVDVChyZXN1bHQpCiAgICAgcmV0dXJuIFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgocmVzdWx0KTsKIH0KQEAgLTQ4NSw3ICs0ODUsNyBAQAogICAgIFRPX0NPTVBMRVgodywgYik7CiAgICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleF9kaXYiLCByZXR1cm4gMCkKICAgICBlcnJubyA9IDA7Ci0gICAgcXVvdCA9IGNfcXVvdChhLCBiKTsKKyAgICBxdW90ID0gX1B5X2NfcXVvdChhLCBiKTsKICAgICBQeUZQRV9FTkRfUFJPVEVDVChxdW90KQogICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19aZXJvRGl2aXNpb25FcnJvciwgImNvbXBsZXggZGl2aXNpb24gYnkgemVybyIpOwpAQCAtNTMyLDcgKzUzMiw3IEBACiAgICAgaWYgKGV4cG9uZW50LmltYWcgPT0gMC4gJiYgZXhwb25lbnQucmVhbCA9PSBpbnRfZXhwb25lbnQpCiAgICAgICAgIHAgPSBjX3Bvd2koYSwgaW50X2V4cG9uZW50KTsKICAgICBlbHNlCi0gICAgICAgIHAgPSBjX3BvdyhhLCBleHBvbmVudCk7CisgICAgICAgIHAgPSBfUHlfY19wb3coYSwgZXhwb25lbnQpOwogCiAgICAgUHlGUEVfRU5EX1BST1RFQ1QocCkKICAgICBQeV9BREpVU1RfRVJBTkdFMihwLnJlYWwsIHAuaW1hZyk7CkBAIC01ODMsNyArNTgzLDcgQEAKICAgICBkb3VibGUgcmVzdWx0OwogCiAgICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleF9hYnMiLCByZXR1cm4gMCkKLSAgICByZXN1bHQgPSBjX2Ficyh2LT5jdmFsKTsKKyAgICByZXN1bHQgPSBfUHlfY19hYnModi0+Y3ZhbCk7CiAgICAgUHlGUEVfRU5EX1BST1RFQ1QocmVzdWx0KQogCiAgICAgaWYgKGVycm5vID09IEVSQU5HRSkgewpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kZXNjcm9iamVjdC5jIGIvT2JqZWN0cy9kZXNjcm9iamVjdC5jCmluZGV4IDYxNWY0OTkuLmRhMTFmNmIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZGVzY3JvYmplY3QuYworKysgYi9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMKQEAgLTEzMTMsNyArMTMxMyw3IEBACiAgICAgeyJmZ2V0IiwgVF9PQkpFQ1QsIG9mZnNldG9mKHByb3BlcnR5b2JqZWN0LCBwcm9wX2dldCksIFJFQURPTkxZfSwKICAgICB7ImZzZXQiLCBUX09CSkVDVCwgb2Zmc2V0b2YocHJvcGVydHlvYmplY3QsIHByb3Bfc2V0KSwgUkVBRE9OTFl9LAogICAgIHsiZmRlbCIsIFRfT0JKRUNULCBvZmZzZXRvZihwcm9wZXJ0eW9iamVjdCwgcHJvcF9kZWwpLCBSRUFET05MWX0sCi0gICAgeyJfX2RvY19fIiwgIFRfT0JKRUNULCBvZmZzZXRvZihwcm9wZXJ0eW9iamVjdCwgcHJvcF9kb2MpLCBSRUFET05MWX0sCisgICAgeyJfX2RvY19fIiwgIFRfT0JKRUNULCBvZmZzZXRvZihwcm9wZXJ0eW9iamVjdCwgcHJvcF9kb2MpLCAwfSwKICAgICB7MH0KIH07CiAKQEAgLTEzNzIsNiArMTM3Miw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcHJvcGVydHlfZGVzY3JfZ2V0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqdHlwZSkKIHsKKyAgICBzdGF0aWMgUHlPYmplY3QgKiB2b2xhdGlsZSBjYWNoZWRfYXJncyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmFyZ3M7CisgICAgUHlPYmplY3QgKnJldDsKICAgICBwcm9wZXJ0eW9iamVjdCAqZ3MgPSAocHJvcGVydHlvYmplY3QgKilzZWxmOwogCiAgICAgaWYgKG9iaiA9PSBOVUxMIHx8IG9iaiA9PSBQeV9Ob25lKSB7CkBAIC0xMzgyLDcgKzEzODUsMjkgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLCAidW5yZWFkYWJsZSBhdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGdzLT5wcm9wX2dldCwgb2JqLCBOVUxMKTsKKyAgICBhcmdzID0gY2FjaGVkX2FyZ3M7CisgICAgaWYgKCFhcmdzIHx8IFB5X1JFRkNOVChhcmdzKSAhPSAxKSB7CisgICAgICAgIFB5X0NMRUFSKGNhY2hlZF9hcmdzKTsKKyAgICAgICAgaWYgKCEoY2FjaGVkX2FyZ3MgPSBhcmdzID0gUHlUdXBsZV9OZXcoMSkpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X0lOQ1JFRihhcmdzKTsKKyAgICBhc3NlcnQgKFB5X1JFRkNOVChhcmdzKSA9PSAyKTsKKyAgICBQeV9JTkNSRUYob2JqKTsKKyAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIG9iaik7CisgICAgcmV0ID0gUHlPYmplY3RfQ2FsbChncy0+cHJvcF9nZXQsIGFyZ3MsIE5VTEwpOworICAgIGlmIChhcmdzID09IGNhY2hlZF9hcmdzKSB7CisgICAgICAgIGlmIChQeV9SRUZDTlQoYXJncykgPT0gMikgeworICAgICAgICAgICAgb2JqID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgTlVMTCk7CisgICAgICAgICAgICBQeV9YREVDUkVGKG9iaik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9DTEVBUihjYWNoZWRfYXJncyk7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIHJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTE0ODQsOCArMTUwOSw3IEBACiAgICAgICAgIFB5T2JqZWN0ICpnZXRfZG9jID0gX1B5T2JqZWN0X0dldEF0dHJJZChnZXQsICZQeUlkX19fZG9jX18pOwogICAgICAgICBpZiAoZ2V0X2RvYykgewogICAgICAgICAgICAgaWYgKFB5X1RZUEUoc2VsZikgPT0gJlB5UHJvcGVydHlfVHlwZSkgewotICAgICAgICAgICAgICAgIFB5X1hERUNSRUYocHJvcC0+cHJvcF9kb2MpOwotICAgICAgICAgICAgICAgIHByb3AtPnByb3BfZG9jID0gZ2V0X2RvYzsKKyAgICAgICAgICAgICAgICBQeV9TRVRSRUYocHJvcC0+cHJvcF9kb2MsIGdldF9kb2MpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgLyogSWYgdGhpcyBpcyBhIHByb3BlcnR5IHN1YmNsYXNzLCBwdXQgX19kb2NfXwpAQCAtMTU4NCw2ICsxNjA4LDE0IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQKK3Byb3BlcnR5X2NsZWFyKFB5T2JqZWN0ICpzZWxmKQoreworICAgIHByb3BlcnR5b2JqZWN0ICpwcCA9IChwcm9wZXJ0eW9iamVjdCAqKXNlbGY7CisgICAgUHlfQ0xFQVIocHAtPnByb3BfZG9jKTsKKyAgICByZXR1cm4gMDsKK30KKwogUHlUeXBlT2JqZWN0IFB5UHJvcGVydHlfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJwcm9wZXJ0eSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwpAQCAtMTYwOSw3ICsxNjQxLDcgQEAKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCiAgICAgcHJvcGVydHlfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICBwcm9wZXJ0eV90cmF2ZXJzZSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIChpbnF1aXJ5KXByb3BlcnR5X2NsZWFyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kaWN0LWNvbW1vbi5oIGIvT2JqZWN0cy9kaWN0LWNvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5MTJlYjkKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL2RpY3QtY29tbW9uLmgKQEAgLTAsMCArMSwyMiBAQAorI2lmbmRlZiBQeV9ESUNUX0NPTU1PTl9ICisjZGVmaW5lIFB5X0RJQ1RfQ09NTU9OX0gKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIC8qIENhY2hlZCBoYXNoIGNvZGUgb2YgbWVfa2V5LiAqLworICAgIFB5X2hhc2hfdCBtZV9oYXNoOworICAgIFB5T2JqZWN0ICptZV9rZXk7CisgICAgUHlPYmplY3QgKm1lX3ZhbHVlOyAvKiBUaGlzIGZpZWxkIGlzIG9ubHkgbWVhbmluZ2Z1bCBmb3IgY29tYmluZWQgdGFibGVzICovCit9IFB5RGljdEtleUVudHJ5OworCit0eXBlZGVmIFB5RGljdEtleUVudHJ5ICooKmRpY3RfbG9va3VwX2Z1bmMpCisoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOworCitzdHJ1Y3QgX2RpY3RrZXlzb2JqZWN0IHsKKyAgICBQeV9zc2l6ZV90IGRrX3JlZmNudDsKKyAgICBQeV9zc2l6ZV90IGRrX3NpemU7CisgICAgZGljdF9sb29rdXBfZnVuYyBka19sb29rdXA7CisgICAgUHlfc3NpemVfdCBka191c2FibGU7CisgICAgUHlEaWN0S2V5RW50cnkgZGtfZW50cmllc1sxXTsKK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kaWN0b2JqZWN0LmMgYi9PYmplY3RzL2RpY3RvYmplY3QuYwppbmRleCBhNDk0ZDZiLi45YTMwZmE4IDEwMDY0NAotLS0gYS9PYmplY3RzL2RpY3RvYmplY3QuYworKysgYi9PYmplY3RzL2RpY3RvYmplY3QuYwpAQCAtNjcsNiArNjcsNyBAQAogI2RlZmluZSBQeURpY3RfTUlOU0laRV9DT01CSU5FRCA4CiAKICNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJkaWN0LWNvbW1vbi5oIgogI2luY2x1ZGUgInN0cmluZ2xpYi9lcS5oIgogCiAvKltjbGluaWMgaW5wdXRdCkBAIC03NCwyNCArNzUsNiBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZjE1N2E1YTBjZTk1ODlkNl0qLwogCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgLyogQ2FjaGVkIGhhc2ggY29kZSBvZiBtZV9rZXkuICovCi0gICAgUHlfaGFzaF90IG1lX2hhc2g7Ci0gICAgUHlPYmplY3QgKm1lX2tleTsKLSAgICBQeU9iamVjdCAqbWVfdmFsdWU7IC8qIFRoaXMgZmllbGQgaXMgb25seSBtZWFuaW5nZnVsIGZvciBjb21iaW5lZCB0YWJsZXMgKi8KLX0gUHlEaWN0S2V5RW50cnk7Ci0KLXR5cGVkZWYgUHlEaWN0S2V5RW50cnkgKigqZGljdF9sb29rdXBfZnVuYykKLShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7Ci0KLXN0cnVjdCBfZGljdGtleXNvYmplY3QgewotICAgIFB5X3NzaXplX3QgZGtfcmVmY250OwotICAgIFB5X3NzaXplX3QgZGtfc2l6ZTsKLSAgICBkaWN0X2xvb2t1cF9mdW5jIGRrX2xvb2t1cDsKLSAgICBQeV9zc2l6ZV90IGRrX3VzYWJsZTsKLSAgICBQeURpY3RLZXlFbnRyeSBka19lbnRyaWVzWzFdOwotfTsKLQogCiAvKgogVG8gZW5zdXJlIHRoZSBsb29rdXAgYWxnb3JpdGhtIHRlcm1pbmF0ZXMsIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIFVudXNlZApAQCAtMjMzLDYgKzIxNiw4IEBACiBzdGF0aWMgUHlEaWN0T2JqZWN0ICpmcmVlX2xpc3RbUHlEaWN0X01BWEZSRUVMSVNUXTsKIHN0YXRpYyBpbnQgbnVtZnJlZSA9IDA7CiAKKyNpbmNsdWRlICJjbGluaWMvZGljdG9iamVjdC5jLmgiCisKIGludAogUHlEaWN0X0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKQEAgLTExMDEsNiArMTA4Niw0NCBAQAogICAgIHJldHVybiAqdmFsdWVfYWRkcjsKIH0KIAorUHlPYmplY3QgKgorX1B5RGljdF9HZXRJdGVtX0tub3duSGFzaChQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQoreworICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisKKyAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogV2UgY2FuIGFycml2ZSBoZXJlIHdpdGggYSBOVUxMIHRzdGF0ZSBkdXJpbmcgaW5pdGlhbGl6YXRpb246IHRyeQorICAgICAgIHJ1bm5pbmcgInB5dGhvbiAtV2kiIGZvciBhbiBleGFtcGxlIHJlbGF0ZWQgdG8gc3RyaW5nIGludGVybmluZy4KKyAgICAgICBMZXQncyBqdXN0IGhvcGUgdGhhdCBubyBleGNlcHRpb24gb2NjdXJzIHRoZW4uLi4gIFRoaXMgbXVzdCBiZQorICAgICAgIF9QeVRocmVhZFN0YXRlX0N1cnJlbnQgYW5kIG5vdCBQeVRocmVhZFN0YXRlX0dFVCgpIGJlY2F1c2UgaW4gZGVidWcKKyAgICAgICBtb2RlLCB0aGUgbGF0dGVyIGNvbXBsYWlucyBpZiB0c3RhdGUgaXMgTlVMTC4gKi8KKyAgICB0c3RhdGUgPSAoUHlUaHJlYWRTdGF0ZSopX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoCisgICAgICAgICZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KTsKKyAgICBpZiAodHN0YXRlICE9IE5VTEwgJiYgdHN0YXRlLT5jdXJleGNfdHlwZSAhPSBOVUxMKSB7CisgICAgICAgIC8qIHByZXNlcnZlIHRoZSBleGlzdGluZyBleGNlcHRpb24gKi8KKyAgICAgICAgUHlPYmplY3QgKmVycl90eXBlLCAqZXJyX3ZhbHVlLCAqZXJyX3RiOworICAgICAgICBQeUVycl9GZXRjaCgmZXJyX3R5cGUsICZlcnJfdmFsdWUsICZlcnJfdGIpOworICAgICAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisgICAgICAgIC8qIGlnbm9yZSBlcnJvcnMgKi8KKyAgICAgICAgUHlFcnJfUmVzdG9yZShlcnJfdHlwZSwgZXJyX3ZhbHVlLCBlcnJfdGIpOworICAgICAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgICAgICBpZiAoZXAgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAqdmFsdWVfYWRkcjsKK30KKwogLyogVmFyaWFudCBvZiBQeURpY3RfR2V0SXRlbSgpIHRoYXQgZG9lc24ndCBzdXBwcmVzcyBleGNlcHRpb25zLgogICAgVGhpcyByZXR1cm5zIE5VTEwgKndpdGgqIGFuIGV4Y2VwdGlvbiBzZXQgaWYgYW4gZXhjZXB0aW9uIG9jY3VycmVkLgogICAgSXQgcmV0dXJucyBOVUxMICp3aXRob3V0KiBhbiBleGNlcHRpb24gc2V0IGlmIHRoZSBrZXkgd2Fzbid0IHByZXNlbnQuCkBAIC0xMjA4LDYgKzEyMzEsMjUgQEAKIH0KIAogaW50CitfUHlEaWN0X1NldEl0ZW1fS25vd25IYXNoKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoKQoreworICAgIFB5RGljdE9iamVjdCAqbXA7CisKKyAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgYXNzZXJ0KGtleSk7CisgICAgYXNzZXJ0KHZhbHVlKTsKKyAgICBhc3NlcnQoaGFzaCAhPSAtMSk7CisgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7CisKKyAgICAvKiBpbnNlcnRkaWN0KCkgaGFuZGxlcyBhbnkgcmVzaXppbmcgdGhhdCBtaWdodCBiZSBuZWNlc3NhcnkgKi8KKyAgICByZXR1cm4gaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSk7Cit9CisKK2ludAogUHlEaWN0X0RlbEl0ZW0oUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5KQogewogICAgIFB5RGljdE9iamVjdCAqbXA7CkBAIC0xMjQ5LDYgKzEyOTEsNDIgQEAKICAgICByZXR1cm4gMDsKIH0KIAoraW50CitfUHlEaWN0X0RlbEl0ZW1fS25vd25IYXNoKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCit7CisgICAgUHlEaWN0T2JqZWN0ICptcDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlPYmplY3QgKm9sZF9rZXksICpvbGRfdmFsdWU7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOworCisgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGFzc2VydChrZXkpOworICAgIGFzc2VydChoYXNoICE9IC0xKTsKKyAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKKyAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisgICAgaWYgKGVwID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoKnZhbHVlX2FkZHIgPT0gTlVMTCkgeworICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKKyAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgbXAtPm1hX3VzZWQtLTsKKyAgICBpZiAoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKKyAgICAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOworICAgICAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKKyAgICAgICAgUHlfSU5DUkVGKGR1bW15KTsKKyAgICAgICAgZXAtPm1lX2tleSA9IGR1bW15OworICAgICAgICBQeV9ERUNSRUYob2xkX2tleSk7CisgICAgfQorICAgIFB5X0RFQ1JFRihvbGRfdmFsdWUpOworICAgIHJldHVybiAwOworfQorCiB2b2lkCiBQeURpY3RfQ2xlYXIoUHlPYmplY3QgKm9wKQogewpAQCAtMTM2Nyw2ICsxNDQ1LDE0MSBAQAogICAgIHJldHVybiAxOwogfQogCisvKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIGRpY3QucG9wKCkuICovCitQeU9iamVjdCAqCitfUHlEaWN0X1BvcChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqZGVmbHQpCit7CisgICAgUHlfaGFzaF90IGhhc2g7CisgICAgUHlPYmplY3QgKm9sZF92YWx1ZSwgKm9sZF9rZXk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKKworICAgIGlmIChtcC0+bWFfdXNlZCA9PSAwKSB7CisgICAgICAgIGlmIChkZWZsdCkgeworICAgICAgICAgICAgUHlfSU5DUkVGKGRlZmx0KTsKKyAgICAgICAgICAgIHJldHVybiBkZWZsdDsKKyAgICAgICAgfQorICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAorICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOworICAgICAgICBpZiAoaGFzaCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisgICAgaWYgKGVwID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOworICAgIGlmIChvbGRfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICBpZiAoZGVmbHQpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihkZWZsdCk7CisgICAgICAgICAgICByZXR1cm4gZGVmbHQ7CisgICAgICAgIH0KKyAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgbXAtPm1hX3VzZWQtLTsKKyAgICBpZiAoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKKyAgICAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOworICAgICAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKKyAgICAgICAgUHlfSU5DUkVGKGR1bW15KTsKKyAgICAgICAgZXAtPm1lX2tleSA9IGR1bW15OworICAgICAgICBQeV9ERUNSRUYob2xkX2tleSk7CisgICAgfQorICAgIHJldHVybiBvbGRfdmFsdWU7Cit9CisKKy8qIEludGVybmFsIHZlcnNpb24gb2YgZGljdC5mcm9tX2tleXMoKS4gIEl0IGlzIHN1YmNsYXNzLWZyaWVuZGx5LiAqLworUHlPYmplY3QgKgorX1B5RGljdF9Gcm9tS2V5cyhQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqaXRlcmFibGUsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBQeU9iamVjdCAqaXQ7ICAgICAgIC8qIGl0ZXIoaXRlcmFibGUpICovCisgICAgUHlPYmplY3QgKmtleTsKKyAgICBQeU9iamVjdCAqZDsKKyAgICBpbnQgc3RhdHVzOworCisgICAgZCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoY2xzLCBOVUxMKTsKKyAgICBpZiAoZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChkKSAmJiAoKFB5RGljdE9iamVjdCAqKWQpLT5tYV91c2VkID09IDApIHsKKyAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGl0ZXJhYmxlKSkgeworICAgICAgICAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilkOworICAgICAgICAgICAgUHlPYmplY3QgKm9sZHZhbHVlOworICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgICAgICAgICAgUHlPYmplY3QgKmtleTsKKyAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoOworCisgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgUHlfU0laRShpdGVyYWJsZSkpKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3aGlsZSAoX1B5RGljdF9OZXh0KGl0ZXJhYmxlLCAmcG9zLCAma2V5LCAmb2xkdmFsdWUsICZoYXNoKSkgeworICAgICAgICAgICAgICAgIGlmIChpbnNlcnRkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBkOworICAgICAgICB9CisgICAgICAgIGlmIChQeUFueVNldF9DaGVja0V4YWN0KGl0ZXJhYmxlKSkgeworICAgICAgICAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilkOworICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgICAgICAgICAgUHlPYmplY3QgKmtleTsKKyAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoOworCisgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgUHlTZXRfR0VUX1NJWkUoaXRlcmFibGUpKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKF9QeVNldF9OZXh0RW50cnkoaXRlcmFibGUsICZwb3MsICZrZXksICZoYXNoKSkgeworICAgICAgICAgICAgICAgIGlmIChpbnNlcnRkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBkOworICAgICAgICB9CisgICAgfQorCisgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKKyAgICBpZiAoaXQgPT0gTlVMTCl7CisgICAgICAgIFB5X0RFQ1JFRihkKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGQpKSB7CisgICAgICAgIHdoaWxlICgoa2V5ID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7CisgICAgICAgICAgICBzdGF0dXMgPSBQeURpY3RfU2V0SXRlbShkLCBrZXksIHZhbHVlKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgaWYgKHN0YXR1cyA8IDApCisgICAgICAgICAgICAgICAgZ290byBGYWlsOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgd2hpbGUgKChrZXkgPSBQeUl0ZXJfTmV4dChpdCkpICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHN0YXR1cyA9IFB5T2JqZWN0X1NldEl0ZW0oZCwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgIGlmIChzdGF0dXMgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gRmFpbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIEZhaWw7CisgICAgUHlfREVDUkVGKGl0KTsKKyAgICByZXR1cm4gZDsKKworRmFpbDoKKyAgICBQeV9ERUNSRUYoaXQpOworICAgIFB5X0RFQ1JFRihkKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwogLyogTWV0aG9kcyAqLwogCiBzdGF0aWMgdm9pZApAQCAtMTcwMSwxMjEgKzE5MTQsMTEgQEAKIFJldHVybnMgYSBuZXcgZGljdCB3aXRoIGtleXMgZnJvbSBpdGVyYWJsZSBhbmQgdmFsdWVzIGVxdWFsIHRvIHZhbHVlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoZGljdF9mcm9ta2V5c19fZG9jX18sCi0iZnJvbWtleXMoJHR5cGUsIGl0ZXJhYmxlLCB2YWx1ZT1Ob25lLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iUmV0dXJucyBhIG5ldyBkaWN0IHdpdGgga2V5cyBmcm9tIGl0ZXJhYmxlIGFuZCB2YWx1ZXMgZXF1YWwgdG8gdmFsdWUuIik7Ci0KLSNkZWZpbmUgRElDVF9GUk9NS0VZU19NRVRIT0RERUYgICAgXAotICAgIHsiZnJvbWtleXMiLCAoUHlDRnVuY3Rpb24pZGljdF9mcm9ta2V5cywgTUVUSF9WQVJBUkdTfE1FVEhfQ0xBU1MsIGRpY3RfZnJvbWtleXNfX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLWRpY3RfZnJvbWtleXNfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICppdGVyYWJsZSwgUHlPYmplY3QgKnZhbHVlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLWRpY3RfZnJvbWtleXMoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqaXRlcmFibGU7Ci0gICAgUHlPYmplY3QgKnZhbHVlID0gUHlfTm9uZTsKLQotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImZyb21rZXlzIiwKLSAgICAgICAgMSwgMiwKLSAgICAgICAgJml0ZXJhYmxlLCAmdmFsdWUpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gZGljdF9mcm9ta2V5c19pbXBsKHR5cGUsIGl0ZXJhYmxlLCB2YWx1ZSk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3RfZnJvbWtleXNfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICppdGVyYWJsZSwgUHlPYmplY3QgKnZhbHVlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU1ZjhkYzBmZmE4NzQwNmYgaW5wdXQ9Yjg1YTY2N2Y5YmY0NjY5ZF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThmYjk4ZTRiMTAzODQ5OTkgaW5wdXQ9Yjg1YTY2N2Y5YmY0NjY5ZF0qLwogewotICAgIFB5T2JqZWN0ICppdDsgICAgICAgLyogaXRlcihzZXEpICovCi0gICAgUHlPYmplY3QgKmtleTsKLSAgICBQeU9iamVjdCAqZDsKLSAgICBpbnQgc3RhdHVzOwotCi0gICAgZCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoKFB5T2JqZWN0ICopdHlwZSwgTlVMTCk7Ci0gICAgaWYgKGQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZCkgJiYgKChQeURpY3RPYmplY3QgKilkKS0+bWFfdXNlZCA9PSAwKSB7Ci0gICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChpdGVyYWJsZSkpIHsKLSAgICAgICAgICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopZDsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpvbGR2YWx1ZTsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zID0gMDsKLSAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7Ci0gICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKLQotICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIFB5X1NJWkUoaXRlcmFibGUpKSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgd2hpbGUgKF9QeURpY3RfTmV4dChpdGVyYWJsZSwgJnBvcywgJmtleSwgJm9sZHZhbHVlLCAmaGFzaCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZDsKLSAgICAgICAgfQotICAgICAgICBpZiAoUHlBbnlTZXRfQ2hlY2tFeGFjdChpdGVyYWJsZSkpIHsKLSAgICAgICAgICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopZDsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zID0gMDsKLSAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7Ci0gICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKLQotICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIFB5U2V0X0dFVF9TSVpFKGl0ZXJhYmxlKSkpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHdoaWxlIChfUHlTZXRfTmV4dEVudHJ5KGl0ZXJhYmxlLCAmcG9zLCAma2V5LCAmaGFzaCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7Ci0gICAgaWYgKGl0ID09IE5VTEwpewotICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChkKSkgewotICAgICAgICB3aGlsZSAoKGtleSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewotICAgICAgICAgICAgc3RhdHVzID0gUHlEaWN0X1NldEl0ZW0oZCwga2V5LCB2YWx1ZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgIGlmIChzdGF0dXMgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gRmFpbDsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIHdoaWxlICgoa2V5ID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBzdGF0dXMgPSBQeU9iamVjdF9TZXRJdGVtKGQsIGtleSwgdmFsdWUpOwotICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgICAgICBpZiAoc3RhdHVzIDwgMCkKLSAgICAgICAgICAgICAgICBnb3RvIEZhaWw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZ290byBGYWlsOwotICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgcmV0dXJuIGQ7Ci0KLUZhaWw6Ci0gICAgUHlfREVDUkVGKGl0KTsKLSAgICBQeV9ERUNSRUYoZCk7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIF9QeURpY3RfRnJvbUtleXMoKFB5T2JqZWN0ICopdHlwZSwgaXRlcmFibGUsIHZhbHVlKTsKIH0KIAogc3RhdGljIGludApAQCAtMjIyMiwxOCArMjMyNSw5IEBACiBUcnVlIGlmIEQgaGFzIGEga2V5IGssIGVsc2UgRmFsc2UuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihkaWN0X19fY29udGFpbnNfX19fZG9jX18sCi0iX19jb250YWluc19fKCRzZWxmLCBrZXksIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJUcnVlIGlmIEQgaGFzIGEga2V5IGssIGVsc2UgRmFsc2UuIik7Ci0KLSNkZWZpbmUgRElDVF9fX0NPTlRBSU5TX19fTUVUSE9EREVGICAgIFwKLSAgICB7Il9fY29udGFpbnNfXyIsIChQeUNGdW5jdGlvbilkaWN0X19fY29udGFpbnNfXywgTUVUSF9PfE1FVEhfQ09FWElTVCwgZGljdF9fX2NvbnRhaW5zX19fX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3RfX19jb250YWluc19fKFB5RGljdE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zY2YzZjhhYWYyY2M1Y2MzIGlucHV0PWI4NTJiMmExOWI1MWFiMjRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hM2QwM2RiNzA5ZWQ2ZTZiIGlucHV0PWI4NTJiMmExOWI1MWFiMjRdKi8KIHsKICAgICByZWdpc3RlciBQeURpY3RPYmplY3QgKm1wID0gc2VsZjsKICAgICBQeV9oYXNoX3QgaGFzaDsKQEAgLTIzNDgsNTAgKzI0NDIsMTIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X3BvcChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeU9iamVjdCAqb2xkX3ZhbHVlLCAqb2xkX2tleTsKICAgICBQeU9iamVjdCAqa2V5LCAqZGVmbHQgPSBOVUxMOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKLSAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZighUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInBvcCIsIDEsIDIsICZrZXksICZkZWZsdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChtcC0+bWFfdXNlZCA9PSAwKSB7Ci0gICAgICAgIGlmIChkZWZsdCkgewotICAgICAgICAgICAgUHlfSU5DUkVGKGRlZmx0KTsKLSAgICAgICAgICAgIHJldHVybiBkZWZsdDsKLSAgICAgICAgfQotICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewotICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwotICAgICAgICBpZiAoaGFzaCA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOwotICAgIGlmIChvbGRfdmFsdWUgPT0gTlVMTCkgewotICAgICAgICBpZiAoZGVmbHQpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihkZWZsdCk7Ci0gICAgICAgICAgICByZXR1cm4gZGVmbHQ7Ci0gICAgICAgIH0KLSAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICAqdmFsdWVfYWRkciA9IE5VTEw7Ci0gICAgbXAtPm1hX3VzZWQtLTsKLSAgICBpZiAoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKLSAgICAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOwotICAgICAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKLSAgICAgICAgUHlfSU5DUkVGKGR1bW15KTsKLSAgICAgICAgZXAtPm1lX2tleSA9IGR1bW15OwotICAgICAgICBQeV9ERUNSRUYob2xkX2tleSk7Ci0gICAgfQotICAgIHJldHVybiBvbGRfdmFsdWU7CisKKyAgICByZXR1cm4gX1B5RGljdF9Qb3AobXAsIGtleSwgZGVmbHQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjQ5OCwyMCArMjU1NCwyMCBAQAogCiBzdGF0aWMgUHlPYmplY3QgKmRpY3RpdGVyX25ldyhQeURpY3RPYmplY3QgKiwgUHlUeXBlT2JqZWN0ICopOwogCi1zdGF0aWMgUHlPYmplY3QgKgotZGljdF9zaXplb2YoUHlEaWN0T2JqZWN0ICptcCkKK1B5X3NzaXplX3QKK19QeURpY3RfU2l6ZU9mKFB5RGljdE9iamVjdCAqbXApCiB7CiAgICAgUHlfc3NpemVfdCBzaXplLCByZXM7CiAKICAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7Ci0gICAgcmVzID0gc2l6ZW9mKFB5RGljdE9iamVjdCk7CisgICAgcmVzID0gX1B5T2JqZWN0X1NJWkUoUHlfVFlQRShtcCkpOwogICAgIGlmIChtcC0+bWFfdmFsdWVzKQogICAgICAgICByZXMgKz0gc2l6ZSAqIHNpemVvZihQeU9iamVjdCopOwogICAgIC8qIElmIHRoZSBkaWN0aW9uYXJ5IGlzIHNwbGl0LCB0aGUga2V5cyBwb3J0aW9uIGlzIGFjY291bnRlZC1mb3IKICAgICAgICBpbiB0aGUgdHlwZSBvYmplY3QuICovCiAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19yZWZjbnQgPT0gMSkKICAgICAgICAgcmVzICs9IHNpemVvZihQeURpY3RLZXlzT2JqZWN0KSArIChzaXplLTEpICogc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7CisgICAgcmV0dXJuIHJlczsKIH0KIAogUHlfc3NpemVfdApAQCAtMjUyMCw2ICsyNTc2LDEyIEBACiAgICAgcmV0dXJuIHNpemVvZihQeURpY3RLZXlzT2JqZWN0KSArIChES19TSVpFKGtleXMpLTEpICogc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2RpY3Rfc2l6ZW9mKFB5RGljdE9iamVjdCAqbXApCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChfUHlEaWN0X1NpemVPZihtcCkpOworfQorCiBQeURvY19TVFJWQVIoZ2V0aXRlbV9fZG9jX18sICJ4Ll9fZ2V0aXRlbV9fKHkpIDw9PT4geFt5XSIpOwogCiBQeURvY19TVFJWQVIoc2l6ZW9mX19kb2NfXywKQEAgLTMwOTYsOCArMzE1OCw4IEBACiAgICAgdmFsdWUgPSAqdmFsdWVfcHRyOwogICAgIFB5X0lOQ1JFRihrZXkpOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIDAsIGtleSk7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIDEsIHZhbHVlKTsKKyAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMCwga2V5KTsgIC8qIHN0ZWFscyByZWZlcmVuY2UgKi8KKyAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMSwgdmFsdWUpOyAgLyogc3RlYWxzIHJlZmVyZW5jZSAqLwogICAgIHJldHVybiByZXN1bHQ7CiAKIGZhaWw6CkBAIC0zMTkyLDI4ICszMjU0LDIyIEBACiAKIC8qIFRoZSBpbnN0YW5jZSBsYXktb3V0IGlzIHRoZSBzYW1lIGZvciBhbGwgdGhyZWU7IGJ1dCB0aGUgdHlwZSBkaWZmZXJzLiAqLwogCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgUHlPYmplY3RfSEVBRAotICAgIFB5RGljdE9iamVjdCAqZHZfZGljdDsKLX0gZGljdHZpZXdvYmplY3Q7Ci0KLQogc3RhdGljIHZvaWQKLWRpY3R2aWV3X2RlYWxsb2MoZGljdHZpZXdvYmplY3QgKmR2KQorZGljdHZpZXdfZGVhbGxvYyhfUHlEaWN0Vmlld09iamVjdCAqZHYpCiB7CiAgICAgUHlfWERFQ1JFRihkdi0+ZHZfZGljdCk7CiAgICAgUHlPYmplY3RfR0NfRGVsKGR2KTsKIH0KIAogc3RhdGljIGludAotZGljdHZpZXdfdHJhdmVyc2UoZGljdHZpZXdvYmplY3QgKmR2LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK2RpY3R2aWV3X3RyYXZlcnNlKF9QeURpY3RWaWV3T2JqZWN0ICpkdiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7CiAgICAgUHlfVklTSVQoZHYtPmR2X2RpY3QpOwogICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgUHlfc3NpemVfdAotZGljdHZpZXdfbGVuKGRpY3R2aWV3b2JqZWN0ICpkdikKK2RpY3R2aWV3X2xlbihfUHlEaWN0Vmlld09iamVjdCAqZHYpCiB7CiAgICAgUHlfc3NpemVfdCBsZW4gPSAwOwogICAgIGlmIChkdi0+ZHZfZGljdCAhPSBOVUxMKQpAQCAtMzIyMSwxMCArMzI3NywxMCBAQAogICAgIHJldHVybiBsZW47CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1kaWN0dmlld19uZXcoUHlPYmplY3QgKmRpY3QsIFB5VHlwZU9iamVjdCAqdHlwZSkKK1B5T2JqZWN0ICoKK19QeURpY3RWaWV3X05ldyhQeU9iamVjdCAqZGljdCwgUHlUeXBlT2JqZWN0ICp0eXBlKQogewotICAgIGRpY3R2aWV3b2JqZWN0ICpkdjsKKyAgICBfUHlEaWN0Vmlld09iamVjdCAqZHY7CiAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMjM2LDcgKzMyOTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSwgZGljdC0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBkdiA9IFB5T2JqZWN0X0dDX05ldyhkaWN0dmlld29iamVjdCwgdHlwZSk7CisgICAgZHYgPSBQeU9iamVjdF9HQ19OZXcoX1B5RGljdFZpZXdPYmplY3QsIHR5cGUpOwogICAgIGlmIChkdiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9JTkNSRUYoZGljdCk7CkBAIC0zMzQwLDcgKzMzOTYsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZGljdHZpZXdfcmVwcihkaWN0dmlld29iamVjdCAqZHYpCitkaWN0dmlld19yZXByKF9QeURpY3RWaWV3T2JqZWN0ICpkdikKIHsKICAgICBQeU9iamVjdCAqc2VxOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CkBAIC0zMzU3LDcgKzM0MTMsNyBAQAogLyoqKiBkaWN0X2tleXMgKioqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZGljdGtleXNfaXRlcihkaWN0dmlld29iamVjdCAqZHYpCitkaWN0a2V5c19pdGVyKF9QeURpY3RWaWV3T2JqZWN0ICpkdikKIHsKICAgICBpZiAoZHYtPmR2X2RpY3QgPT0gTlVMTCkgewogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTMzNjYsNyArMzQyMiw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWRpY3RrZXlzX2NvbnRhaW5zKGRpY3R2aWV3b2JqZWN0ICpkdiwgUHlPYmplY3QgKm9iaikKK2RpY3RrZXlzX2NvbnRhaW5zKF9QeURpY3RWaWV3T2JqZWN0ICpkdiwgUHlPYmplY3QgKm9iaikKIHsKICAgICBpZiAoZHYtPmR2X2RpY3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zNDA0LDggKzM0NjAsOCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWRpY3R2aWV3c19hbmQoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICpvdGhlcikKK1B5T2JqZWN0KgorX1B5RGljdFZpZXdfSW50ZXJzZWN0KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqb3RoZXIpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5U2V0X05ldyhzZWxmKTsKICAgICBQeU9iamVjdCAqdG1wOwpAQCAtMzQ3OSw3ICszNTM1LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm5iX2ludmVydCovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypuYl9sc2hpZnQqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbmJfcnNoaWZ0Ki8KLSAgICAoYmluYXJ5ZnVuYylkaWN0dmlld3NfYW5kLCAgICAgICAgICAvKm5iX2FuZCovCisgICAgKGJpbmFyeWZ1bmMpX1B5RGljdFZpZXdfSW50ZXJzZWN0LCAgLypuYl9hbmQqLwogICAgIChiaW5hcnlmdW5jKWRpY3R2aWV3c194b3IsICAgICAgICAgIC8qbmJfeG9yKi8KICAgICAoYmluYXJ5ZnVuYylkaWN0dmlld3Nfb3IsICAgICAgICAgICAvKm5iX29yKi8KIH07CkBAIC0zNDkxLDcgKzM1NDcsNyBAQAogICAgIFB5T2JqZWN0ICppdGVtID0gTlVMTDsKIAogICAgIGlmIChzZWxmID09IG90aGVyKSB7Ci0gICAgICAgIGlmIChkaWN0dmlld19sZW4oKGRpY3R2aWV3b2JqZWN0ICopc2VsZikgPT0gMCkKKyAgICAgICAgaWYgKGRpY3R2aWV3X2xlbigoX1B5RGljdFZpZXdPYmplY3QgKilzZWxmKSA9PSAwKQogICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKQEAgLTM1MDAsNyArMzU1Niw3IEBACiAgICAgLyogSXRlcmF0ZSBvdmVyIHRoZSBzaG9ydGVyIG9iamVjdCAob25seSBpZiBvdGhlciBpcyBhIHNldCwKICAgICAgKiBiZWNhdXNlIFB5U2VxdWVuY2VfQ29udGFpbnMgbWF5IGJlIGV4cGVuc2l2ZSBvdGhlcndpc2UpOiAqLwogICAgIGlmIChQeUFueVNldF9DaGVjayhvdGhlcikgfHwgUHlEaWN0Vmlld1NldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfc3NpemVfdCBsZW5fc2VsZiA9IGRpY3R2aWV3X2xlbigoZGljdHZpZXdvYmplY3QgKilzZWxmKTsKKyAgICAgICAgUHlfc3NpemVfdCBsZW5fc2VsZiA9IGRpY3R2aWV3X2xlbigoX1B5RGljdFZpZXdPYmplY3QgKilzZWxmKTsKICAgICAgICAgUHlfc3NpemVfdCBsZW5fb3RoZXIgPSBQeU9iamVjdF9TaXplKG90aGVyKTsKICAgICAgICAgaWYgKGxlbl9vdGhlciA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzU0Nyw3ICszNjAzLDcgQEAKIFB5VHlwZU9iamVjdCBQeURpY3RLZXlzX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAiZGljdF9rZXlzIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KLSAgICBzaXplb2YoZGljdHZpZXdvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIHNpemVvZihfUHlEaWN0Vmlld09iamVjdCksICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KICAgICAoZGVzdHJ1Y3RvcilkaWN0dmlld19kZWFsbG9jLCAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KQEAgLTM1ODAsMTMgKzM2MzYsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0a2V5c19uZXcoUHlPYmplY3QgKmRpY3QpCiB7Ci0gICAgcmV0dXJuIGRpY3R2aWV3X25ldyhkaWN0LCAmUHlEaWN0S2V5c19UeXBlKTsKKyAgICByZXR1cm4gX1B5RGljdFZpZXdfTmV3KGRpY3QsICZQeURpY3RLZXlzX1R5cGUpOwogfQogCiAvKioqIGRpY3RfaXRlbXMgKioqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZGljdGl0ZW1zX2l0ZXIoZGljdHZpZXdvYmplY3QgKmR2KQorZGljdGl0ZW1zX2l0ZXIoX1B5RGljdFZpZXdPYmplY3QgKmR2KQogewogICAgIGlmIChkdi0+ZHZfZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMzU5NSw3ICszNjUxLDcgQEAKIH0KIAogc3RhdGljIGludAotZGljdGl0ZW1zX2NvbnRhaW5zKGRpY3R2aWV3b2JqZWN0ICpkdiwgUHlPYmplY3QgKm9iaikKK2RpY3RpdGVtc19jb250YWlucyhfUHlEaWN0Vmlld09iamVjdCAqZHYsIFB5T2JqZWN0ICpvYmopCiB7CiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqZm91bmQ7CiAgICAgaWYgKGR2LT5kdl9kaWN0ID09IE5VTEwpCkBAIC0zNjMzLDcgKzM2ODksNyBAQAogUHlUeXBlT2JqZWN0IFB5RGljdEl0ZW1zX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAiZGljdF9pdGVtcyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KLSAgICBzaXplb2YoZGljdHZpZXdvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIHNpemVvZihfUHlEaWN0Vmlld09iamVjdCksICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KICAgICAoZGVzdHJ1Y3RvcilkaWN0dmlld19kZWFsbG9jLCAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KQEAgLTM2NjYsMTMgKzM3MjIsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0aXRlbXNfbmV3KFB5T2JqZWN0ICpkaWN0KQogewotICAgIHJldHVybiBkaWN0dmlld19uZXcoZGljdCwgJlB5RGljdEl0ZW1zX1R5cGUpOworICAgIHJldHVybiBfUHlEaWN0Vmlld19OZXcoZGljdCwgJlB5RGljdEl0ZW1zX1R5cGUpOwogfQogCiAvKioqIGRpY3RfdmFsdWVzICoqKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRpY3R2YWx1ZXNfaXRlcihkaWN0dmlld29iamVjdCAqZHYpCitkaWN0dmFsdWVzX2l0ZXIoX1B5RGljdFZpZXdPYmplY3QgKmR2KQogewogICAgIGlmIChkdi0+ZHZfZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMzY5OCw3ICszNzU0LDcgQEAKIFB5VHlwZU9iamVjdCBQeURpY3RWYWx1ZXNfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJkaWN0X3ZhbHVlcyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwotICAgIHNpemVvZihkaWN0dmlld29iamVjdCksICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgc2l6ZW9mKF9QeURpY3RWaWV3T2JqZWN0KSwgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwogICAgIChkZXN0cnVjdG9yKWRpY3R2aWV3X2RlYWxsb2MsICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLwpAQCAtMzczMSw3ICszNzg3LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0dmFsdWVzX25ldyhQeU9iamVjdCAqZGljdCkKIHsKLSAgICByZXR1cm4gZGljdHZpZXdfbmV3KGRpY3QsICZQeURpY3RWYWx1ZXNfVHlwZSk7CisgICAgcmV0dXJuIF9QeURpY3RWaWV3X05ldyhkaWN0LCAmUHlEaWN0VmFsdWVzX1R5cGUpOwogfQogCiAvKiBSZXR1cm5zIE5VTEwgaWYgY2Fubm90IGFsbG9jYXRlIGEgbmV3IFB5RGljdEtleXNPYmplY3QsCmRpZmYgLS1naXQgYS9PYmplY3RzL2V4Y2VwdGlvbnMuYyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCmluZGV4IDFhMjE4YzEuLjg1Zjk0NzIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZXhjZXB0aW9ucy5jCisrKyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCkBAIC0yMDYsOCArMjA2LDcgQEAKICAgICBzZXEgPSBQeVNlcXVlbmNlX1R1cGxlKHZhbCk7CiAgICAgaWYgKCFzZXEpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBQeV9DTEVBUihzZWxmLT5hcmdzKTsKLSAgICBzZWxmLT5hcmdzID0gc2VxOworICAgIFB5X1NFVFJFRihzZWxmLT5hcmdzLCBzZXEpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0yMzYsOCArMjM1LDcgQEAKICAgICB9CiAKICAgICBQeV9YSU5DUkVGKHRiKTsKLSAgICBQeV9YREVDUkVGKHNlbGYtPnRyYWNlYmFjayk7Ci0gICAgc2VsZi0+dHJhY2ViYWNrID0gdGI7CisgICAgUHlfU0VUUkVGKHNlbGYtPnRyYWNlYmFjaywgdGIpOwogICAgIHJldHVybiAwOwogfQogCkBAIC00NzMsNiArNDcxLDEzIEBACiAKIAogLyoKKyAqICAgIFN0b3BBc3luY0l0ZXJhdGlvbiBleHRlbmRzIEV4Y2VwdGlvbgorICovCitTaW1wbGVFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0V4Y2VwdGlvbiwgU3RvcEFzeW5jSXRlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAiU2lnbmFsIHRoZSBlbmQgZnJvbSBpdGVyYXRvci5fX2FuZXh0X18oKS4iKTsKKworCisvKgogICogICAgU3RvcEl0ZXJhdGlvbiBleHRlbmRzIEV4Y2VwdGlvbgogICovCiAKQEAgLTU1NiwxMiArNTYxLDE0IEBACiAKICAgICBpZiAoc2l6ZSA9PSAwKQogICAgICAgICByZXR1cm4gMDsKLSAgICBQeV9DTEVBUihzZWxmLT5jb2RlKTsKLSAgICBpZiAoc2l6ZSA9PSAxKQotICAgICAgICBzZWxmLT5jb2RlID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKLSAgICBlbHNlIC8qIHNpemUgPiAxICovCi0gICAgICAgIHNlbGYtPmNvZGUgPSBhcmdzOwotICAgIFB5X0lOQ1JFRihzZWxmLT5jb2RlKTsKKyAgICBpZiAoc2l6ZSA9PSAxKSB7CisgICAgICAgIFB5X0lOQ1JFRihQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApKTsKKyAgICAgICAgUHlfU0VUUkVGKHNlbGYtPmNvZGUsIFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCkpOworICAgIH0KKyAgICBlbHNlIHsgLyogc2l6ZSA+IDEgKi8KKyAgICAgICAgUHlfSU5DUkVGKGFyZ3MpOworICAgICAgICBQeV9TRVRSRUYoc2VsZi0+Y29kZSwgYXJncyk7CisgICAgfQogICAgIHJldHVybiAwOwogfQogCkBAIC02MjAsOSArNjI3LDggQEAKICNkZWZpbmUgR0VUX0tXRChrd2QpIHsgXAogICAgIGt3ZCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGt3ZHMsICNrd2QpOyBcCiAgICAgaWYgKGt3ZCkgeyBcCi0gICAgICAgIFB5X0NMRUFSKHNlbGYtPmt3ZCk7IFwKLSAgICAgICAgc2VsZi0+a3dkID0ga3dkOyAgIFwKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYtPmt3ZCk7XAorICAgICAgICBQeV9JTkNSRUYoa3dkKTsgXAorICAgICAgICBQeV9TRVRSRUYoc2VsZi0+a3dkLCBrd2QpOyBcCiAgICAgICAgIGlmIChQeURpY3RfRGVsSXRlbVN0cmluZyhrd2RzLCAja3dkKSkgXAogICAgICAgICAgICAgcmV0dXJuIC0xOyBcCiAgICAgfSBcCkBAIC02NDAsOSArNjQ2LDggQEAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJJbXBvcnRFcnJvciIsIDEsIDEsICZtc2cpKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBQeV9DTEVBUihzZWxmLT5tc2cpOyAgICAgICAgICAvKiByZXBsYWNpbmcgKi8KLSAgICBzZWxmLT5tc2cgPSBtc2c7Ci0gICAgUHlfSU5DUkVGKHNlbGYtPm1zZyk7CisgICAgUHlfSU5DUkVGKG1zZyk7CisgICAgUHlfU0VUUkVGKHNlbGYtPm1zZywgbXNnKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtODUyLDggKzg1Nyw3IEBACiAjZW5kaWYKIAogICAgIC8qIFN0ZWFscyB0aGUgcmVmZXJlbmNlIHRvIGFyZ3MgKi8KLSAgICBQeV9DTEVBUihzZWxmLT5hcmdzKTsKLSAgICBzZWxmLT5hcmdzID0gYXJnczsKKyAgICBQeV9TRVRSRUYoc2VsZi0+YXJncywgYXJncyk7CiAgICAgKnBfYXJncyA9IGFyZ3MgPSBOVUxMOwogCiAgICAgcmV0dXJuIDA7CkBAIC0xMjI0LDYgKzEyMjgsMTEgQEAKIFNpbXBsZUV4dGVuZHNFeGNlcHRpb24oUHlFeGNfRXhjZXB0aW9uLCBSdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICJVbnNwZWNpZmllZCBydW4tdGltZSBlcnJvci4iKTsKIAorLyoKKyAqICAgIFJlY3Vyc2lvbkVycm9yIGV4dGVuZHMgUnVudGltZUVycm9yCisgKi8KK1NpbXBsZUV4dGVuZHNFeGNlcHRpb24oUHlFeGNfUnVudGltZUVycm9yLCBSZWN1cnNpb25FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIlJlY3Vyc2lvbiBsaW1pdCBleGNlZWRlZC4iKTsKIAogLyoKICAqICAgIE5vdEltcGxlbWVudGVkRXJyb3IgZXh0ZW5kcyBSdW50aW1lRXJyb3IKQEAgLTEyNjcsOSArMTI3Niw4IEBACiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmIChsZW5hcmdzID49IDEpIHsKLSAgICAgICAgUHlfQ0xFQVIoc2VsZi0+bXNnKTsKLSAgICAgICAgc2VsZi0+bXNnID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYtPm1zZyk7CisgICAgICAgIFB5X0lOQ1JFRihQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApKTsKKyAgICAgICAgUHlfU0VUUkVGKHNlbGYtPm1zZywgUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKSk7CiAgICAgfQogICAgIGlmIChsZW5hcmdzID09IDIpIHsKICAgICAgICAgaW5mbyA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMSk7CkBAIC0xMjg0LDIxICsxMjkyLDE3IEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KIAotICAgICAgICBQeV9DTEVBUihzZWxmLT5maWxlbmFtZSk7Ci0gICAgICAgIHNlbGYtPmZpbGVuYW1lID0gUHlUdXBsZV9HRVRfSVRFTShpbmZvLCAwKTsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYtPmZpbGVuYW1lKTsKKyAgICAgICAgUHlfSU5DUkVGKFB5VHVwbGVfR0VUX0lURU0oaW5mbywgMCkpOworICAgICAgICBQeV9TRVRSRUYoc2VsZi0+ZmlsZW5hbWUsIFB5VHVwbGVfR0VUX0lURU0oaW5mbywgMCkpOwogCi0gICAgICAgIFB5X0NMRUFSKHNlbGYtPmxpbmVubyk7Ci0gICAgICAgIHNlbGYtPmxpbmVubyA9IFB5VHVwbGVfR0VUX0lURU0oaW5mbywgMSk7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmLT5saW5lbm8pOworICAgICAgICBQeV9JTkNSRUYoUHlUdXBsZV9HRVRfSVRFTShpbmZvLCAxKSk7CisgICAgICAgIFB5X1NFVFJFRihzZWxmLT5saW5lbm8sIFB5VHVwbGVfR0VUX0lURU0oaW5mbywgMSkpOwogCi0gICAgICAgIFB5X0NMRUFSKHNlbGYtPm9mZnNldCk7Ci0gICAgICAgIHNlbGYtPm9mZnNldCA9IFB5VHVwbGVfR0VUX0lURU0oaW5mbywgMik7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmLT5vZmZzZXQpOworICAgICAgICBQeV9JTkNSRUYoUHlUdXBsZV9HRVRfSVRFTShpbmZvLCAyKSk7CisgICAgICAgIFB5X1NFVFJFRihzZWxmLT5vZmZzZXQsIFB5VHVwbGVfR0VUX0lURU0oaW5mbywgMikpOwogCi0gICAgICAgIFB5X0NMRUFSKHNlbGYtPnRleHQpOwotICAgICAgICBzZWxmLT50ZXh0ID0gUHlUdXBsZV9HRVRfSVRFTShpbmZvLCAzKTsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYtPnRleHQpOworICAgICAgICBQeV9JTkNSRUYoUHlUdXBsZV9HRVRfSVRFTShpbmZvLCAzKSk7CisgICAgICAgIFB5X1NFVFJFRihzZWxmLT50ZXh0LCBQeVR1cGxlX0dFVF9JVEVNKGluZm8sIDMpKTsKIAogICAgICAgICBQeV9ERUNSRUYoaW5mbyk7CiAKQEAgLTE1NDMsOCArMTU0Nyw3IEBACiAgICAgUHlPYmplY3QgKm9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHZhbHVlKTsKICAgICBpZiAoIW9iaikKICAgICAgICAgcmV0dXJuIC0xOwotICAgIFB5X0NMRUFSKCphdHRyKTsKLSAgICAqYXR0ciA9IG9iajsKKyAgICBQeV9TRVRSRUYoKmF0dHIsIG9iaik7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTE5NTAsOCArMTk1Myw3IEBACiAgICAgICAgIFB5X2J1ZmZlciB2aWV3OwogICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHVkZS0+b2JqZWN0LCAmdmlldywgUHlCVUZfU0lNUExFKSAhPSAwKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgUHlfQ0xFQVIodWRlLT5vYmplY3QpOwotICAgICAgICB1ZGUtPm9iamVjdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUodmlldy5idWYsIHZpZXcubGVuKTsKKyAgICAgICAgUHlfU0VUUkVGKHVkZS0+b2JqZWN0LCBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHZpZXcuYnVmLCB2aWV3LmxlbikpOwogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKICAgICAgICAgaWYgKCF1ZGUtPm9iamVjdCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yMzczLDcgKzIzNzUsNyBAQAogCiAKIAotLyogUHJlLWNvbXB1dGVkIFJ1bnRpbWVFcnJvciBpbnN0YW5jZSBmb3Igd2hlbiByZWN1cnNpb24gZGVwdGggaXMgcmVhY2hlZC4KKy8qIFByZS1jb21wdXRlZCBSZWN1cnNpb25FcnJvciBpbnN0YW5jZSBmb3Igd2hlbiByZWN1cnNpb24gZGVwdGggaXMgcmVhY2hlZC4KICAgIE1lYW50IHRvIGJlIHVzZWQgd2hlbiBub3JtYWxpemluZyB0aGUgZXhjZXB0aW9uIGZvciBleGNlZWRpbmcgdGhlIHJlY3Vyc2lvbgogICAgZGVwdGggd2lsbCBjYXVzZSBpdHMgb3duIGluZmluaXRlIHJlY3Vyc2lvbi4KICovCkBAIC0yNDY4LDYgKzI0NzAsNyBAQAogICAgIFBSRV9JTklUKEJhc2VFeGNlcHRpb24pCiAgICAgUFJFX0lOSVQoRXhjZXB0aW9uKQogICAgIFBSRV9JTklUKFR5cGVFcnJvcikKKyAgICBQUkVfSU5JVChTdG9wQXN5bmNJdGVyYXRpb24pCiAgICAgUFJFX0lOSVQoU3RvcEl0ZXJhdGlvbikKICAgICBQUkVfSU5JVChHZW5lcmF0b3JFeGl0KQogICAgIFBSRV9JTklUKFN5c3RlbUV4aXQpCkBAIC0yNDc2LDYgKzI0NzksNyBAQAogICAgIFBSRV9JTklUKE9TRXJyb3IpCiAgICAgUFJFX0lOSVQoRU9GRXJyb3IpCiAgICAgUFJFX0lOSVQoUnVudGltZUVycm9yKQorICAgIFBSRV9JTklUKFJlY3Vyc2lvbkVycm9yKQogICAgIFBSRV9JTklUKE5vdEltcGxlbWVudGVkRXJyb3IpCiAgICAgUFJFX0lOSVQoTmFtZUVycm9yKQogICAgIFBSRV9JTklUKFVuYm91bmRMb2NhbEVycm9yKQpAQCAtMjUzOCw2ICsyNTQyLDcgQEAKICAgICBQT1NUX0lOSVQoQmFzZUV4Y2VwdGlvbikKICAgICBQT1NUX0lOSVQoRXhjZXB0aW9uKQogICAgIFBPU1RfSU5JVChUeXBlRXJyb3IpCisgICAgUE9TVF9JTklUKFN0b3BBc3luY0l0ZXJhdGlvbikKICAgICBQT1NUX0lOSVQoU3RvcEl0ZXJhdGlvbikKICAgICBQT1NUX0lOSVQoR2VuZXJhdG9yRXhpdCkKICAgICBQT1NUX0lOSVQoU3lzdGVtRXhpdCkKQEAgLTI1NTEsNiArMjU1Niw3IEBACiAjZW5kaWYKICAgICBQT1NUX0lOSVQoRU9GRXJyb3IpCiAgICAgUE9TVF9JTklUKFJ1bnRpbWVFcnJvcikKKyAgICBQT1NUX0lOSVQoUmVjdXJzaW9uRXJyb3IpCiAgICAgUE9TVF9JTklUKE5vdEltcGxlbWVudGVkRXJyb3IpCiAgICAgUE9TVF9JTklUKE5hbWVFcnJvcikKICAgICBQT1NUX0lOSVQoVW5ib3VuZExvY2FsRXJyb3IpCkBAIC0yNjM0LDkgKzI2NDAsOSBAQAogICAgIHByZWFsbG9jYXRlX21lbWVycm9ycygpOwogCiAgICAgaWYgKCFQeUV4Y19SZWN1cnNpb25FcnJvckluc3QpIHsKLSAgICAgICAgUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0ID0gQmFzZUV4Y2VwdGlvbl9uZXcoJl9QeUV4Y19SdW50aW1lRXJyb3IsIE5VTEwsIE5VTEwpOworICAgICAgICBQeUV4Y19SZWN1cnNpb25FcnJvckluc3QgPSBCYXNlRXhjZXB0aW9uX25ldygmX1B5RXhjX1JlY3Vyc2lvbkVycm9yLCBOVUxMLCBOVUxMKTsKICAgICAgICAgaWYgKCFQeUV4Y19SZWN1cnNpb25FcnJvckluc3QpCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW5ub3QgcHJlLWFsbG9jYXRlIFJ1bnRpbWVFcnJvciBpbnN0YW5jZSBmb3IgIgorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2Fubm90IHByZS1hbGxvY2F0ZSBSZWN1cnNpb25FcnJvciBpbnN0YW5jZSBmb3IgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWN1cnNpb24gZXJyb3JzIik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICplcnJfaW5zdCA9CkBAIC0yNjQ1LDE1ICsyNjUxLDE1IEBACiAgICAgICAgICAgICBQeU9iamVjdCAqZXhjX21lc3NhZ2U7CiAgICAgICAgICAgICBleGNfbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZCIpOwogICAgICAgICAgICAgaWYgKCFleGNfbWVzc2FnZSkKLSAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJjYW5ub3QgYWxsb2NhdGUgYXJndW1lbnQgZm9yIFJ1bnRpbWVFcnJvciAiCisgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiY2Fubm90IGFsbG9jYXRlIGFyZ3VtZW50IGZvciBSZWN1cnNpb25FcnJvciAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmUtYWxsb2NhdGlvbiIpOwogICAgICAgICAgICAgYXJnc190dXBsZSA9IFB5VHVwbGVfUGFjaygxLCBleGNfbWVzc2FnZSk7CiAgICAgICAgICAgICBpZiAoIWFyZ3NfdHVwbGUpCi0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiY2Fubm90IGFsbG9jYXRlIHR1cGxlIGZvciBSdW50aW1lRXJyb3IgIgorICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImNhbm5vdCBhbGxvY2F0ZSB0dXBsZSBmb3IgUmVjdXJzaW9uRXJyb3IgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJlLWFsbG9jYXRpb24iKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihleGNfbWVzc2FnZSk7CiAgICAgICAgICAgICBpZiAoQmFzZUV4Y2VwdGlvbl9pbml0KGVycl9pbnN0LCBhcmdzX3R1cGxlLCBOVUxMKSkKLSAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJpbml0IG9mIHByZS1hbGxvY2F0ZWQgUnVudGltZUVycm9yIGZhaWxlZCIpOworICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImluaXQgb2YgcHJlLWFsbG9jYXRlZCBSZWN1cnNpb25FcnJvciBmYWlsZWQiKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzX3R1cGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI3MTgsNyArMjcyNCw3IEBACiAgICAgc2FtZV9iYXNpY19zaXplID0gKAogICAgICAgICBjYXVnaHRfdHlwZV9zaXplID09IGJhc2VfZXhjX3NpemUgfHwKICAgICAgICAgKFB5VHlwZV9TVVBQT1JUU19XRUFLUkVGUyhjYXVnaHRfdHlwZSkgJiYKLSAgICAgICAgICAgIChjYXVnaHRfdHlwZV9zaXplID09IGJhc2VfZXhjX3NpemUgKyBzaXplb2YoUHlPYmplY3QgKikpCisgICAgICAgICAgICAoY2F1Z2h0X3R5cGVfc2l6ZSA9PSBiYXNlX2V4Y19zaXplICsgKFB5X3NzaXplX3Qpc2l6ZW9mKFB5T2JqZWN0ICopKQogICAgICAgICApCiAgICAgKTsKICAgICBpZiAoY2F1Z2h0X3R5cGUtPnRwX2luaXQgIT0gKGluaXRwcm9jKUJhc2VFeGNlcHRpb25faW5pdCB8fApAQCAtMjg1Niw5ICsyODYyLDggQEAKICAgICB9CiAgICAgaWYgKFB5VW5pY29kZV9UYWlsbWF0Y2goc2VsZi0+dGV4dCwgcHJpbnRfcHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCB0ZXh0X2xlbiwgLTEpKSB7Ci0gICAgICAgIFB5X0NMRUFSKHNlbGYtPm1zZyk7Ci0gICAgICAgIHNlbGYtPm1zZyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKAotICAgICAgICAgICAgICAgICAgICJNaXNzaW5nIHBhcmVudGhlc2VzIGluIGNhbGwgdG8gJ3ByaW50JyIpOworICAgICAgICBQeV9TRVRSRUYoc2VsZi0+bXNnLAorICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmcoIk1pc3NpbmcgcGFyZW50aGVzZXMgaW4gY2FsbCB0byAncHJpbnQnIikpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKQEAgLTI4NzEsOSArMjg3Niw4IEBACiAgICAgfQogICAgIGlmIChQeVVuaWNvZGVfVGFpbG1hdGNoKHNlbGYtPnRleHQsIGV4ZWNfcHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCB0ZXh0X2xlbiwgLTEpKSB7Ci0gICAgICAgIFB5X0NMRUFSKHNlbGYtPm1zZyk7Ci0gICAgICAgIHNlbGYtPm1zZyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKAotICAgICAgICAgICAgICAgICAgICAiTWlzc2luZyBwYXJlbnRoZXNlcyBpbiBjYWxsIHRvICdleGVjJyIpOworICAgICAgICBQeV9TRVRSRUYoc2VsZi0+bXNnLAorICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmcoIk1pc3NpbmcgcGFyZW50aGVzZXMgaW4gY2FsbCB0byAnZXhlYyciKSk7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KICAgICAvKiBGYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgZXJyb3IgbWVzc2FnZSAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9maWxlb2JqZWN0LmMgYi9PYmplY3RzL2ZpbGVvYmplY3QuYwppbmRleCAxYTkzYTZkLi4yMzRkMDdlIDEwMDY0NAotLS0gYS9PYmplY3RzL2ZpbGVvYmplY3QuYworKysgYi9PYmplY3RzL2ZpbGVvYmplY3QuYwpAQCAtNDAyLDI2ICs0MDIsMTcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBlcnJubyA9IDA7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChuID4gSU5UX01BWCkKLSAgICAgICAgbiA9IElOVF9NQVg7Ci0gICAgbiA9IHdyaXRlKHNlbGYtPmZkLCBzdHIsIChpbnQpbik7Ci0jZWxzZQotICAgIG4gPSB3cml0ZShzZWxmLT5mZCwgc3RyLCBuKTsKLSNlbmRpZgorICAgIG4gPSBfUHlfd3JpdGUoc2VsZi0+ZmQsIHN0ciwgbik7CiAgICAgLyogc2F2ZSBlcnJubywgaXQgY2FuIGJlIG1vZGlmaWVkIGluZGlyZWN0bHkgYnkgUHlfWERFQ1JFRigpICovCiAgICAgZXJyID0gZXJybm87Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIFB5X1hERUNSRUYoYnl0ZXMpOwogCi0gICAgaWYgKG4gPCAwKSB7Ci0gICAgICAgIGlmIChlcnIgPT0gRUFHQUlOKQorICAgIGlmIChuID09IC0xKSB7CisgICAgICAgIGlmIChlcnIgPT0gRUFHQUlOKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7Ci0gICAgICAgIGVycm5vID0gZXJyOwotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCmRpZmYgLS1naXQgYS9PYmplY3RzL2Zsb2F0b2JqZWN0LmMgYi9PYmplY3RzL2Zsb2F0b2JqZWN0LmMKaW5kZXggYWNkODhkNi4uZDkyYmVjMyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9mbG9hdG9iamVjdC5jCisrKyBiL09iamVjdHMvZmxvYXRvYmplY3QuYwpAQCAtMTAwMSw4ICsxMDAxLDkgQEAKICAgICB4ID0gUHlGbG9hdF9Bc0RvdWJsZSh2KTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPIiwgJm9fbmRpZ2l0cykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChvX25kaWdpdHMgPT0gTlVMTCkgewotICAgICAgICAvKiBzaW5nbGUtYXJndW1lbnQgcm91bmQ6IHJvdW5kIHRvIG5lYXJlc3QgaW50ZWdlciAqLworICAgIGlmIChvX25kaWdpdHMgPT0gTlVMTCB8fCBvX25kaWdpdHMgPT0gUHlfTm9uZSkgeworICAgICAgICAvKiBzaW5nbGUtYXJndW1lbnQgcm91bmQgb3Igd2l0aCBOb25lIG5kaWdpdHM6CisgICAgICAgICAqIHJvdW5kIHRvIG5lYXJlc3QgaW50ZWdlciAqLwogICAgICAgICByb3VuZGVkID0gcm91bmQoeCk7CiAgICAgICAgIGlmIChmYWJzKHgtcm91bmRlZCkgPT0gMC41KQogICAgICAgICAgICAgLyogaGFsZndheSBjYXNlOiByb3VuZCB0byBldmVuICovCkBAIC0yMDQ4LDcgKzIwNDksNyBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgZmxvYXQgeSA9IChmbG9hdCl4OwotICAgICAgICBjb25zdCBjaGFyICpzID0gKGNoYXIqKSZ5OworICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzID0gKHVuc2lnbmVkIGNoYXIqKSZ5OwogICAgICAgICBpbnQgaSwgaW5jciA9IDE7CiAKICAgICAgICAgaWYgKFB5X0lTX0lORklOSVRZKHkpICYmICFQeV9JU19JTkZJTklUWSh4KSkKQEAgLTIxODQsNyArMjE4NSw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnMgPSAoY2hhciopJng7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMgPSAodW5zaWduZWQgY2hhciopJng7CiAgICAgICAgIGludCBpLCBpbmNyID0gMTsKIAogICAgICAgICBpZiAoKGRvdWJsZV9mb3JtYXQgPT0gaWVlZV9saXR0bGVfZW5kaWFuX2Zvcm1hdCAmJiAhbGUpCmRpZmYgLS1naXQgYS9PYmplY3RzL2ZyYW1lb2JqZWN0LmMgYi9PYmplY3RzL2ZyYW1lb2JqZWN0LmMKaW5kZXggNTVlZTU2My4uMzdlNjI2ZCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9mcmFtZW9iamVjdC5jCisrKyBiL09iamVjdHMvZnJhbWVvYmplY3QuYwpAQCAtMTk2LDYgKzE5Niw3IEBACiAgICAgICAgIGNhc2UgU0VUVVBfRVhDRVBUOgogICAgICAgICBjYXNlIFNFVFVQX0ZJTkFMTFk6CiAgICAgICAgIGNhc2UgU0VUVVBfV0lUSDoKKyAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgogICAgICAgICAgICAgYmxvY2tzdGFja1tibG9ja3N0YWNrX3RvcCsrXSA9IGFkZHI7CiAgICAgICAgICAgICBpbl9maW5hbGx5W2Jsb2Nrc3RhY2tfdG9wLTFdID0gMDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjAzLDcgKzIwNCw4IEBACiAgICAgICAgIGNhc2UgUE9QX0JMT0NLOgogICAgICAgICAgICAgYXNzZXJ0KGJsb2Nrc3RhY2tfdG9wID4gMCk7CiAgICAgICAgICAgICBzZXR1cF9vcCA9IGNvZGVbYmxvY2tzdGFja1tibG9ja3N0YWNrX3RvcC0xXV07Ci0gICAgICAgICAgICBpZiAoc2V0dXBfb3AgPT0gU0VUVVBfRklOQUxMWSB8fCBzZXR1cF9vcCA9PSBTRVRVUF9XSVRIKSB7CisgICAgICAgICAgICBpZiAoc2V0dXBfb3AgPT0gU0VUVVBfRklOQUxMWSB8fCBzZXR1cF9vcCA9PSBTRVRVUF9XSVRICisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBzZXR1cF9vcCA9PSBTRVRVUF9BU1lOQ19XSVRIKSB7CiAgICAgICAgICAgICAgICAgaW5fZmluYWxseVtibG9ja3N0YWNrX3RvcC0xXSA9IDE7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTIxOCw3ICsyMjAsOCBAQAogICAgICAgICAgICAgICogYmUgc2VlaW5nIHN1Y2ggYW4gRU5EX0ZJTkFMTFkuKSAqLwogICAgICAgICAgICAgaWYgKGJsb2Nrc3RhY2tfdG9wID4gMCkgewogICAgICAgICAgICAgICAgIHNldHVwX29wID0gY29kZVtibG9ja3N0YWNrW2Jsb2Nrc3RhY2tfdG9wLTFdXTsKLSAgICAgICAgICAgICAgICBpZiAoc2V0dXBfb3AgPT0gU0VUVVBfRklOQUxMWSB8fCBzZXR1cF9vcCA9PSBTRVRVUF9XSVRIKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldHVwX29wID09IFNFVFVQX0ZJTkFMTFkgfHwgc2V0dXBfb3AgPT0gU0VUVVBfV0lUSAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgc2V0dXBfb3AgPT0gU0VUVVBfQVNZTkNfV0lUSCkgewogICAgICAgICAgICAgICAgICAgICBibG9ja3N0YWNrX3RvcC0tOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTI4MSw2ICsyODQsNyBAQAogICAgICAgICBjYXNlIFNFVFVQX0VYQ0VQVDoKICAgICAgICAgY2FzZSBTRVRVUF9GSU5BTExZOgogICAgICAgICBjYXNlIFNFVFVQX1dJVEg6CisgICAgICAgIGNhc2UgU0VUVVBfQVNZTkNfV0lUSDoKICAgICAgICAgICAgIGRlbHRhX2libG9jaysrOwogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTg1Myw4ICs4NTcsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHZhbHVlc1tqXSAhPSB2YWx1ZSkgewogICAgICAgICAgICAgUHlfWElOQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHZhbHVlc1tqXSk7Ci0gICAgICAgICAgICB2YWx1ZXNbal0gPSB2YWx1ZTsKKyAgICAgICAgICAgIFB5X1NFVFJFRih2YWx1ZXNbal0sIHZhbHVlKTsKICAgICAgICAgfQogICAgICAgICBQeV9YREVDUkVGKHZhbHVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9PYmplY3RzL2Z1bmNvYmplY3QuYyBiL09iamVjdHMvZnVuY29iamVjdC5jCmluZGV4IGIwNDM5MzQuLjEzZGFhYmEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZnVuY29iamVjdC5jCisrKyBiL09iamVjdHMvZnVuY29iamVjdC5jCkBAIC0xMjcsOCArMTI3LDcgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAibm9uLXR1cGxlIGRlZmF1bHQgYXJncyIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIFB5X1hERUNSRUYoKChQeUZ1bmN0aW9uT2JqZWN0ICopIG9wKSAtPiBmdW5jX2RlZmF1bHRzKTsKLSAgICAoKFB5RnVuY3Rpb25PYmplY3QgKikgb3ApIC0+IGZ1bmNfZGVmYXVsdHMgPSBkZWZhdWx0czsKKyAgICBQeV9TRVRSRUYoKChQeUZ1bmN0aW9uT2JqZWN0ICopb3ApLT5mdW5jX2RlZmF1bHRzLCBkZWZhdWx0cyk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTE1OSw4ICsxNTgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1kaWN0IGtleXdvcmQgb25seSBkZWZhdWx0IGFyZ3MiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBQeV9YREVDUkVGKCgoUHlGdW5jdGlvbk9iamVjdCAqKW9wKSAtPiBmdW5jX2t3ZGVmYXVsdHMpOwotICAgICgoUHlGdW5jdGlvbk9iamVjdCAqKSBvcCkgLT4gZnVuY19rd2RlZmF1bHRzID0gZGVmYXVsdHM7CisgICAgUHlfU0VUUkVGKCgoUHlGdW5jdGlvbk9iamVjdCAqKW9wKS0+ZnVuY19rd2RlZmF1bHRzLCBkZWZhdWx0cyk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTE5Miw4ICsxOTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgY2xvc3VyZS0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgUHlfWERFQ1JFRigoKFB5RnVuY3Rpb25PYmplY3QgKikgb3ApIC0+IGZ1bmNfY2xvc3VyZSk7Ci0gICAgKChQeUZ1bmN0aW9uT2JqZWN0ICopIG9wKSAtPiBmdW5jX2Nsb3N1cmUgPSBjbG9zdXJlOworICAgIFB5X1NFVFJFRigoKFB5RnVuY3Rpb25PYmplY3QgKilvcCktPmZ1bmNfY2xvc3VyZSwgY2xvc3VyZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTIyNCw4ICsyMjEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1kaWN0IGFubm90YXRpb25zIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgUHlfWERFQ1JFRigoKFB5RnVuY3Rpb25PYmplY3QgKilvcCkgLT4gZnVuY19hbm5vdGF0aW9ucyk7Ci0gICAgKChQeUZ1bmN0aW9uT2JqZWN0ICopIG9wKSAtPiBmdW5jX2Fubm90YXRpb25zID0gYW5ub3RhdGlvbnM7CisgICAgUHlfU0VUUkVGKCgoUHlGdW5jdGlvbk9iamVjdCAqKW9wKS0+ZnVuY19hbm5vdGF0aW9ucywgYW5ub3RhdGlvbnMpOwogICAgIHJldHVybiAwOwogfQogCkBAIC01MzEsOCArNTI3LDcgQEAKIAogICAgIGlmIChuYW1lICE9IFB5X05vbmUpIHsKICAgICAgICAgUHlfSU5DUkVGKG5hbWUpOwotICAgICAgICBQeV9ERUNSRUYobmV3ZnVuYy0+ZnVuY19uYW1lKTsKLSAgICAgICAgbmV3ZnVuYy0+ZnVuY19uYW1lID0gbmFtZTsKKyAgICAgICAgUHlfU0VUUkVGKG5ld2Z1bmMtPmZ1bmNfbmFtZSwgbmFtZSk7CiAgICAgfQogICAgIGlmIChkZWZhdWx0cyAhPSBQeV9Ob25lKSB7CiAgICAgICAgIFB5X0lOQ1JFRihkZWZhdWx0cyk7CmRpZmYgLS1naXQgYS9PYmplY3RzL2dlbm9iamVjdC5jIGIvT2JqZWN0cy9nZW5vYmplY3QuYwppbmRleCA2N2U2ZWY5Li4wMGViYmYxIDEwMDY0NAotLS0gYS9PYmplY3RzL2dlbm9iamVjdC5jCisrKyBiL09iamVjdHMvZ2Vub2JqZWN0LmMKQEAgLTEyLDYgKzEyLDggQEAKIHsKICAgICBQeV9WSVNJVCgoUHlPYmplY3QgKilnZW4tPmdpX2ZyYW1lKTsKICAgICBQeV9WSVNJVChnZW4tPmdpX2NvZGUpOworICAgIFB5X1ZJU0lUKGdlbi0+Z2lfbmFtZSk7CisgICAgUHlfVklTSVQoZ2VuLT5naV9xdWFsbmFtZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTIyLDYgKzI0LDE4IEBACiAgICAgUHlPYmplY3QgKnJlczsKICAgICBQeU9iamVjdCAqZXJyb3JfdHlwZSwgKmVycm9yX3ZhbHVlLCAqZXJyb3JfdHJhY2ViYWNrOwogCisgICAgLyogSWYgYGdlbmAgaXMgYSBjb3JvdXRpbmUsIGFuZCBpZiBpdCB3YXMgbmV2ZXIgYXdhaXRlZCBvbiwKKyAgICAgICBpc3N1ZSBhIFJ1bnRpbWVXYXJuaW5nLiAqLworICAgIGlmIChnZW4tPmdpX2NvZGUgIT0gTlVMTAorICAgICAgICAgICAgJiYgKChQeUNvZGVPYmplY3QgKilnZW4tPmdpX2NvZGUpLT5jb19mbGFncyAmIENPX0NPUk9VVElORQorICAgICAgICAgICAgJiYgZ2VuLT5naV9mcmFtZSAhPSBOVUxMCisgICAgICAgICAgICAmJiBnZW4tPmdpX2ZyYW1lLT5mX2xhc3RpID09IC0xCisgICAgICAgICAgICAmJiAhUHlFcnJfT2NjdXJyZWQoKQorICAgICAgICAgICAgJiYgUHlFcnJfV2FybkZvcm1hdChQeUV4Y19SdW50aW1lV2FybmluZywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvcm91dGluZSAnJS41MFMnIHdhcyBuZXZlciBhd2FpdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuLT5naV9xdWFsbmFtZSkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChnZW4tPmdpX2ZyYW1lID09IE5VTEwgfHwgZ2VuLT5naV9mcmFtZS0+Zl9zdGFja3RvcCA9PSBOVUxMKQogICAgICAgICAvKiBHZW5lcmF0b3IgaXNuJ3QgcGF1c2VkLCBzbyBubyBuZWVkIHRvIGNsb3NlICovCiAgICAgICAgIHJldHVybjsKQEAgLTU4LDYgKzcyLDggQEAKICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhzZWxmKTsKICAgICBQeV9DTEVBUihnZW4tPmdpX2ZyYW1lKTsKICAgICBQeV9DTEVBUihnZW4tPmdpX2NvZGUpOworICAgIFB5X0NMRUFSKGdlbi0+Z2lfbmFtZSk7CisgICAgUHlfQ0xFQVIoZ2VuLT5naV9xdWFsbmFtZSk7CiAgICAgUHlPYmplY3RfR0NfRGVsKGdlbik7CiB9CiAKQEAgLTY5LDggKzg1LDEwIEBACiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAogICAgIGlmIChnZW4tPmdpX3J1bm5pbmcpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZ2VuZXJhdG9yIGFscmVhZHkgZXhlY3V0aW5nIik7CisgICAgICAgIGNoYXIgKm1zZyA9ICJnZW5lcmF0b3IgYWxyZWFkeSBleGVjdXRpbmciOworICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkKKyAgICAgICAgICAgIG1zZyA9ICJjb3JvdXRpbmUgYWxyZWFkeSBleGVjdXRpbmciOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgbXNnKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChmID09IE5VTEwgfHwgZi0+Zl9zdGFja3RvcCA9PSBOVUxMKSB7CkBAIC04Miw5ICsxMDAsMTIgQEAKIAogICAgIGlmIChmLT5mX2xhc3RpID09IC0xKSB7CiAgICAgICAgIGlmIChhcmcgJiYgYXJnICE9IFB5X05vbmUpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHNlbmQgbm9uLU5vbmUgdmFsdWUgdG8gYSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImp1c3Qtc3RhcnRlZCBnZW5lcmF0b3IiKTsKKyAgICAgICAgICAgIGNoYXIgKm1zZyA9ICJjYW4ndCBzZW5kIG5vbi1Ob25lIHZhbHVlIHRvIGEgIgorICAgICAgICAgICAgICAgICAgICAgICAgImp1c3Qtc3RhcnRlZCBnZW5lcmF0b3IiOworICAgICAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpCisgICAgICAgICAgICAgICAgbXNnID0gImNhbid0IHNlbmQgbm9uLU5vbmUgdmFsdWUgdG8gYSAiCisgICAgICAgICAgICAgICAgICAgICAgImp1c3Qtc3RhcnRlZCBjb3JvdXRpbmUiOworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbXNnKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKQEAgLTEyNiw2ICsxNDcsNTAgQEAKICAgICAgICAgfQogICAgICAgICBQeV9DTEVBUihyZXN1bHQpOwogICAgIH0KKyAgICBlbHNlIGlmICghcmVzdWx0ICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpIHsKKyAgICAgICAgLyogQ2hlY2sgZm9yIF9fZnV0dXJlX18gZ2VuZXJhdG9yX3N0b3AgYW5kIGNvbmRpdGlvbmFsbHkgdHVybgorICAgICAgICAgKiBhIGxlYWtpbmcgU3RvcEl0ZXJhdGlvbiBpbnRvIFJ1bnRpbWVFcnJvciAod2l0aCBpdHMgY2F1c2UKKyAgICAgICAgICogc2V0IGFwcHJvcHJpYXRlbHkpLiAqLworICAgICAgICBpZiAoKChQeUNvZGVPYmplY3QgKilnZW4tPmdpX2NvZGUpLT5jb19mbGFncyAmCisgICAgICAgICAgICAgIChDT19GVVRVUkVfR0VORVJBVE9SX1NUT1AgfCBDT19DT1JPVVRJTkUgfCBDT19JVEVSQUJMRV9DT1JPVVRJTkUpKQorICAgICAgICB7CisgICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdmFsMiwgKnRiOworICAgICAgICAgICAgY2hhciAqbXNnID0gImdlbmVyYXRvciByYWlzZWQgU3RvcEl0ZXJhdGlvbiI7CisgICAgICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkKKyAgICAgICAgICAgICAgICBtc2cgPSAiY29yb3V0aW5lIHJhaXNlZCBTdG9wSXRlcmF0aW9uIjsKKyAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7CisgICAgICAgICAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV4YywgJnZhbCwgJnRiKTsKKyAgICAgICAgICAgIGlmICh0YiAhPSBOVUxMKQorICAgICAgICAgICAgICAgIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjayh2YWwsIHRiKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihleGMpOworICAgICAgICAgICAgUHlfWERFQ1JFRih0Yik7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBtc2cpOworICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbDIsICZ0Yik7CisgICAgICAgICAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV4YywgJnZhbDIsICZ0Yik7CisgICAgICAgICAgICBQeV9JTkNSRUYodmFsKTsKKyAgICAgICAgICAgIFB5RXhjZXB0aW9uX1NldENhdXNlKHZhbDIsIHZhbCk7CisgICAgICAgICAgICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0KHZhbDIsIHZhbCk7CisgICAgICAgICAgICBQeUVycl9SZXN0b3JlKGV4YywgdmFsMiwgdGIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnRiOworCisgICAgICAgICAgICAvKiBQb3AgdGhlIGV4Y2VwdGlvbiBiZWZvcmUgaXNzdWluZyBhIHdhcm5pbmcuICovCisgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOworCisgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdlbmVyYXRvciAnJS41MFMnIHJhaXNlZCBTdG9wSXRlcmF0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbi0+Z2lfcXVhbG5hbWUpKSB7CisgICAgICAgICAgICAgICAgLyogV2FybmluZyB3YXMgY29udmVydGVkIHRvIGFuIGVycm9yLiAqLworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZXhjKTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHZhbCk7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0Yik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeUVycl9SZXN0b3JlKGV4YywgdmFsLCB0Yik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAKICAgICBpZiAoIXJlc3VsdCB8fCBmLT5mX3N0YWNrdG9wID09IE5VTEwpIHsKICAgICAgICAgLyogZ2VuZXJhdG9yIGNhbid0IGJlIHJlcnVuLCBzbyByZWxlYXNlIHRoZSBmcmFtZSAqLwpAQCAtMjI5LDkgKzI5NCwxMSBAQAogICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX0dlbmVyYXRvckV4aXQpOwogICAgIHJldHZhbCA9IGdlbl9zZW5kX2V4KGdlbiwgUHlfTm9uZSwgMSk7CiAgICAgaWYgKHJldHZhbCkgeworICAgICAgICBjaGFyICptc2cgPSAiZ2VuZXJhdG9yIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCI7CisgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKQorICAgICAgICAgICAgbXNnID0gImNvcm91dGluZSBpZ25vcmVkIEdlbmVyYXRvckV4aXQiOwogICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJnZW5lcmF0b3IgaWdub3JlZCBHZW5lcmF0b3JFeGl0Iik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIG1zZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKQpAQCAtMzczLDExICs0NDAsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGdlbl9pdGVybmV4dChQeUdlbk9iamVjdCAqZ2VuKQogewotICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpyZXQ7Ci0gICAgcmV0ID0gZ2VuX3NlbmRfZXgoZ2VuLCB2YWwsIDApOwotICAgIFB5X1hERUNSRUYodmFsKTsKLSAgICByZXR1cm4gcmV0OworICAgIHJldHVybiBnZW5fc2VuZF9leChnZW4sIE5VTEwsIDApOwogfQogCiAvKgpAQCAtNDM0LDMzICs0OTcsODQgQEAKIGdlbl9yZXByKFB5R2VuT2JqZWN0ICpnZW4pCiB7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8Z2VuZXJhdG9yIG9iamVjdCAlUyBhdCAlcD4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFB5Q29kZU9iamVjdCAqKWdlbi0+Z2lfY29kZSktPmNvX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbi0+Z2lfcXVhbG5hbWUsIGdlbik7CiB9CiAKLQogc3RhdGljIFB5T2JqZWN0ICoKLWdlbl9nZXRfbmFtZShQeUdlbk9iamVjdCAqZ2VuKQorZ2VuX2dldF9uYW1lKFB5R2VuT2JqZWN0ICpvcCkKIHsKLSAgICBQeU9iamVjdCAqbmFtZSA9ICgoUHlDb2RlT2JqZWN0ICopZ2VuLT5naV9jb2RlKS0+Y29fbmFtZTsKLSAgICBQeV9JTkNSRUYobmFtZSk7Ci0gICAgcmV0dXJuIG5hbWU7CisgICAgUHlfSU5DUkVGKG9wLT5naV9uYW1lKTsKKyAgICByZXR1cm4gb3AtPmdpX25hbWU7CiB9CiAKK3N0YXRpYyBpbnQKK2dlbl9zZXRfbmFtZShQeUdlbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBQeU9iamVjdCAqdG1wOwogCi1QeURvY19TVFJWQVIoZ2VuX19uYW1lX19kb2NfXywKLSJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGdlbmVyYXRvcidzIGFzc29jaWF0ZWQgY29kZSBvYmplY3QuIik7CisgICAgLyogTm90IGxlZ2FsIHRvIGRlbCBnZW4uZ2lfbmFtZSBvciB0byBzZXQgaXQgdG8gYW55dGhpbmcKKyAgICAgKiBvdGhlciB0aGFuIGEgc3RyaW5nIG9iamVjdC4gKi8KKyAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIl9fbmFtZV9fIG11c3QgYmUgc2V0IHRvIGEgc3RyaW5nIG9iamVjdCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHRtcCA9IG9wLT5naV9uYW1lOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgb3AtPmdpX25hbWUgPSB2YWx1ZTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2dlbl9nZXRfcXVhbG5hbWUoUHlHZW5PYmplY3QgKm9wKQoreworICAgIFB5X0lOQ1JFRihvcC0+Z2lfcXVhbG5hbWUpOworICAgIHJldHVybiBvcC0+Z2lfcXVhbG5hbWU7Cit9CisKK3N0YXRpYyBpbnQKK2dlbl9zZXRfcXVhbG5hbWUoUHlHZW5PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgUHlPYmplY3QgKnRtcDsKKworICAgIC8qIE5vdCBsZWdhbCB0byBkZWwgZ2VuLl9fcXVhbG5hbWVfXyBvciB0byBzZXQgaXQgdG8gYW55dGhpbmcKKyAgICAgKiBvdGhlciB0aGFuIGEgc3RyaW5nIG9iamVjdC4gKi8KKyAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIl9fcXVhbG5hbWVfXyBtdXN0IGJlIHNldCB0byBhIHN0cmluZyBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICB0bXAgPSBvcC0+Z2lfcXVhbG5hbWU7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBvcC0+Z2lfcXVhbG5hbWUgPSB2YWx1ZTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2dlbl9nZXR5aWVsZGZyb20oUHlHZW5PYmplY3QgKmdlbikKK3sKKyAgICBQeU9iamVjdCAqeWYgPSBnZW5feWYoZ2VuKTsKKyAgICBpZiAoeWYgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuIHlmOworfQogCiBzdGF0aWMgUHlHZXRTZXREZWYgZ2VuX2dldHNldGxpc3RbXSA9IHsKLSAgICB7Il9fbmFtZV9fIiwgKGdldHRlcilnZW5fZ2V0X25hbWUsIE5VTEwsIGdlbl9fbmFtZV9fZG9jX199LAotICAgIHtOVUxMfQorICAgIHsiX19uYW1lX18iLCAoZ2V0dGVyKWdlbl9nZXRfbmFtZSwgKHNldHRlcilnZW5fc2V0X25hbWUsCisgICAgIFB5RG9jX1NUUigibmFtZSBvZiB0aGUgZ2VuZXJhdG9yIil9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlcilnZW5fZ2V0X3F1YWxuYW1lLCAoc2V0dGVyKWdlbl9zZXRfcXVhbG5hbWUsCisgICAgIFB5RG9jX1NUUigicXVhbGlmaWVkIG5hbWUgb2YgdGhlIGdlbmVyYXRvciIpfSwKKyAgICB7ImdpX3lpZWxkZnJvbSIsIChnZXR0ZXIpZ2VuX2dldHlpZWxkZnJvbSwgTlVMTCwKKyAgICAgUHlEb2NfU1RSKCJvYmplY3QgYmVpbmcgaXRlcmF0ZWQgYnkgeWllbGQgZnJvbSwgb3IgTm9uZSIpfSwKKyAgICB7TlVMTH0gLyogU2VudGluZWwgKi8KIH07CiAKLQogc3RhdGljIFB5TWVtYmVyRGVmIGdlbl9tZW1iZXJsaXN0W10gPSB7Ci0gICAgeyJnaV9mcmFtZSIsICAgICAgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX2ZyYW1lKSwgICAgICBSRUFET05MWX0sCi0gICAgeyJnaV9ydW5uaW5nIiwgICAgICBUX0JPT0wsICAgIG9mZnNldG9mKFB5R2VuT2JqZWN0LCBnaV9ydW5uaW5nKSwgICAgUkVBRE9OTFl9LAotICAgIHsiZ2lfY29kZSIsICAgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX2NvZGUpLCAgUkVBRE9OTFl9LAorICAgIHsiZ2lfZnJhbWUiLCAgICAgVF9PQkpFQ1QsIG9mZnNldG9mKFB5R2VuT2JqZWN0LCBnaV9mcmFtZSksICAgIFJFQURPTkxZfSwKKyAgICB7ImdpX3J1bm5pbmciLCAgIFRfQk9PTCwgICBvZmZzZXRvZihQeUdlbk9iamVjdCwgZ2lfcnVubmluZyksICBSRUFET05MWX0sCisgICAgeyJnaV9jb2RlIiwgICAgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX2NvZGUpLCAgICAgUkVBRE9OTFl9LAogICAgIHtOVUxMfSAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCkBAIC00ODEsNyArNTk1LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYXN5bmMgKi8KICAgICAocmVwcmZ1bmMpZ2VuX3JlcHIsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KQEAgLTUyNSwxMCArNjM5LDExIEBACiAgICAgX1B5R2VuX0ZpbmFsaXplLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLwogfTsKIAotUHlPYmplY3QgKgotUHlHZW5fTmV3KFB5RnJhbWVPYmplY3QgKmYpCitzdGF0aWMgUHlPYmplY3QgKgorZ2VuX25ld193aXRoX3F1YWxuYW1lKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlGcmFtZU9iamVjdCAqZiwKKyAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKQogewotICAgIFB5R2VuT2JqZWN0ICpnZW4gPSBQeU9iamVjdF9HQ19OZXcoUHlHZW5PYmplY3QsICZQeUdlbl9UeXBlKTsKKyAgICBQeUdlbk9iamVjdCAqZ2VuID0gUHlPYmplY3RfR0NfTmV3KFB5R2VuT2JqZWN0LCB0eXBlKTsKICAgICBpZiAoZ2VuID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGYpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTUzOSwxMCArNjU0LDMyIEBACiAgICAgZ2VuLT5naV9jb2RlID0gKFB5T2JqZWN0ICopKGYtPmZfY29kZSk7CiAgICAgZ2VuLT5naV9ydW5uaW5nID0gMDsKICAgICBnZW4tPmdpX3dlYWtyZWZsaXN0ID0gTlVMTDsKKyAgICBpZiAobmFtZSAhPSBOVUxMKQorICAgICAgICBnZW4tPmdpX25hbWUgPSBuYW1lOworICAgIGVsc2UKKyAgICAgICAgZ2VuLT5naV9uYW1lID0gKChQeUNvZGVPYmplY3QgKilnZW4tPmdpX2NvZGUpLT5jb19uYW1lOworICAgIFB5X0lOQ1JFRihnZW4tPmdpX25hbWUpOworICAgIGlmIChxdWFsbmFtZSAhPSBOVUxMKQorICAgICAgICBnZW4tPmdpX3F1YWxuYW1lID0gcXVhbG5hbWU7CisgICAgZWxzZQorICAgICAgICBnZW4tPmdpX3F1YWxuYW1lID0gZ2VuLT5naV9uYW1lOworICAgIFB5X0lOQ1JFRihnZW4tPmdpX3F1YWxuYW1lKTsKICAgICBfUHlPYmplY3RfR0NfVFJBQ0soZ2VuKTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopZ2VuOwogfQogCitQeU9iamVjdCAqCitQeUdlbl9OZXdXaXRoUXVhbE5hbWUoUHlGcmFtZU9iamVjdCAqZiwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpxdWFsbmFtZSkKK3sKKyAgICByZXR1cm4gZ2VuX25ld193aXRoX3F1YWxuYW1lKCZQeUdlbl9UeXBlLCBmLCBuYW1lLCBxdWFsbmFtZSk7Cit9CisKK1B5T2JqZWN0ICoKK1B5R2VuX05ldyhQeUZyYW1lT2JqZWN0ICpmKQoreworICAgIHJldHVybiBnZW5fbmV3X3dpdGhfcXVhbG5hbWUoJlB5R2VuX1R5cGUsIGYsIE5VTEwsIE5VTEwpOworfQorCiBpbnQKIFB5R2VuX05lZWRzRmluYWxpemluZyhQeUdlbk9iamVjdCAqZ2VuKQogewpAQCAtNTYwLDMgKzY5NywyODkgQEAKICAgICAvKiBObyBibG9ja3MgZXhjZXB0IGxvb3BzLCBpdCdzIHNhZmUgdG8gc2tpcCBmaW5hbGl6YXRpb24uICovCiAgICAgcmV0dXJuIDA7CiB9CisKKy8qIENvcm91dGluZSBPYmplY3QgKi8KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeUNvcm9PYmplY3QgKmN3X2Nvcm91dGluZTsKK30gUHlDb3JvV3JhcHBlcjsKKworc3RhdGljIGludAorZ2VuX2lzX2Nvcm91dGluZShQeU9iamVjdCAqbykKK3sKKyAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdChvKSkgeworICAgICAgICBQeUNvZGVPYmplY3QgKmNvZGUgPSAoUHlDb2RlT2JqZWN0ICopKChQeUdlbk9iamVjdCopbyktPmdpX2NvZGU7CisgICAgICAgIGlmIChjb2RlLT5jb19mbGFncyAmIENPX0lURVJBQkxFX0NPUk9VVElORSkgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiAgIFRoaXMgaGVscGVyIGZ1bmN0aW9uIHJldHVybnMgYW4gYXdhaXRhYmxlIGZvciBgb2A6CisgKiAgICAgLSBgb2AgaWYgYG9gIGlzIGEgY29yb3V0aW5lLW9iamVjdDsKKyAqICAgICAtIGB0eXBlKG8pLT50cF9hc19hc3luYy0+YW1fYXdhaXQobylgCisgKgorICogICBSYWlzZXMgYSBUeXBlRXJyb3IgaWYgaXQncyBub3QgcG9zc2libGUgdG8gcmV0dXJuCisgKiAgIGFuIGF3YWl0YWJsZSBhbmQgcmV0dXJucyBOVUxMLgorICovCitQeU9iamVjdCAqCitfUHlDb3JvX0dldEF3YWl0YWJsZUl0ZXIoUHlPYmplY3QgKm8pCit7CisgICAgdW5hcnlmdW5jIGdldHRlciA9IE5VTEw7CisgICAgUHlUeXBlT2JqZWN0ICpvdDsKKworICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChvKSB8fCBnZW5faXNfY29yb3V0aW5lKG8pKSB7CisgICAgICAgIC8qICdvJyBpcyBhIGNvcm91dGluZS4gKi8KKyAgICAgICAgUHlfSU5DUkVGKG8pOworICAgICAgICByZXR1cm4gbzsKKyAgICB9CisKKyAgICBvdCA9IFB5X1RZUEUobyk7CisgICAgaWYgKG90LT50cF9hc19hc3luYyAhPSBOVUxMKSB7CisgICAgICAgIGdldHRlciA9IG90LT50cF9hc19hc3luYy0+YW1fYXdhaXQ7CisgICAgfQorICAgIGlmIChnZXR0ZXIgIT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqcmVzID0gKCpnZXR0ZXIpKG8pOworICAgICAgICBpZiAocmVzICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChyZXMpIHx8IGdlbl9pc19jb3JvdXRpbmUocmVzKSkgeworICAgICAgICAgICAgICAgIC8qIF9fYXdhaXRfXyBtdXN0IHJldHVybiBhbiAqaXRlcmF0b3IqLCBub3QKKyAgICAgICAgICAgICAgICAgICBhIGNvcm91dGluZSBvciBhbm90aGVyIGF3YWl0YWJsZSAoc2VlIFBFUCA0OTIpICovCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fYXdhaXRfXygpIHJldHVybmVkIGEgY29yb3V0aW5lIik7CisgICAgICAgICAgICAgICAgUHlfQ0xFQVIocmVzKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIVB5SXRlcl9DaGVjayhyZXMpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fYXdhaXRfXygpIHJldHVybmVkIG5vbi1pdGVyYXRvciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvZiB0eXBlICclLjEwMHMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShyZXMpLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBQeV9DTEVBUihyZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorCisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIm9iamVjdCAlLjEwMHMgY2FuJ3QgYmUgdXNlZCBpbiAnYXdhaXQnIGV4cHJlc3Npb24iLAorICAgICAgICAgICAgICAgICBvdC0+dHBfbmFtZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb3JvX3JlcHIoUHlDb3JvT2JqZWN0ICpjb3JvKQoreworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPGNvcm91dGluZSBvYmplY3QgJVMgYXQgJXA+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yby0+Y3JfcXVhbG5hbWUsIGNvcm8pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29yb19hd2FpdChQeUNvcm9PYmplY3QgKmNvcm8pCit7CisgICAgUHlDb3JvV3JhcHBlciAqY3cgPSBQeU9iamVjdF9HQ19OZXcoUHlDb3JvV3JhcHBlciwgJl9QeUNvcm9XcmFwcGVyX1R5cGUpOworICAgIGlmIChjdyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9JTkNSRUYoY29ybyk7CisgICAgY3ctPmN3X2Nvcm91dGluZSA9IGNvcm87CisgICAgX1B5T2JqZWN0X0dDX1RSQUNLKGN3KTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopY3c7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb3JvX2dldF9jcl9hd2FpdChQeUNvcm9PYmplY3QgKmNvcm8pCit7CisgICAgUHlPYmplY3QgKnlmID0gZ2VuX3lmKChQeUdlbk9iamVjdCAqKSBjb3JvKTsKKyAgICBpZiAoeWYgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuIHlmOworfQorCitzdGF0aWMgUHlHZXRTZXREZWYgY29yb19nZXRzZXRsaXN0W10gPSB7CisgICAgeyJfX25hbWVfXyIsIChnZXR0ZXIpZ2VuX2dldF9uYW1lLCAoc2V0dGVyKWdlbl9zZXRfbmFtZSwKKyAgICAgUHlEb2NfU1RSKCJuYW1lIG9mIHRoZSBjb3JvdXRpbmUiKX0sCisgICAgeyJfX3F1YWxuYW1lX18iLCAoZ2V0dGVyKWdlbl9nZXRfcXVhbG5hbWUsIChzZXR0ZXIpZ2VuX3NldF9xdWFsbmFtZSwKKyAgICAgUHlEb2NfU1RSKCJxdWFsaWZpZWQgbmFtZSBvZiB0aGUgY29yb3V0aW5lIil9LAorICAgIHsiY3JfYXdhaXQiLCAoZ2V0dGVyKWNvcm9fZ2V0X2NyX2F3YWl0LCBOVUxMLAorICAgICBQeURvY19TVFIoIm9iamVjdCBiZWluZyBhd2FpdGVkIG9uLCBvciBOb25lIil9LAorICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5TWVtYmVyRGVmIGNvcm9fbWVtYmVybGlzdFtdID0geworICAgIHsiY3JfZnJhbWUiLCAgICAgVF9PQkpFQ1QsIG9mZnNldG9mKFB5Q29yb09iamVjdCwgY3JfZnJhbWUpLCAgICBSRUFET05MWX0sCisgICAgeyJjcl9ydW5uaW5nIiwgICBUX0JPT0wsICAgb2Zmc2V0b2YoUHlDb3JvT2JqZWN0LCBjcl9ydW5uaW5nKSwgIFJFQURPTkxZfSwKKyAgICB7ImNyX2NvZGUiLCAgICAgIFRfT0JKRUNULCBvZmZzZXRvZihQeUNvcm9PYmplY3QsIGNyX2NvZGUpLCAgICAgUkVBRE9OTFl9LAorICAgIHtOVUxMfSAgICAgIC8qIFNlbnRpbmVsICovCit9OworCitQeURvY19TVFJWQVIoY29yb19zZW5kX2RvYywKKyJzZW5kKGFyZykgLT4gc2VuZCAnYXJnJyBpbnRvIGNvcm91dGluZSxcblwKK3JldHVybiBuZXh0IGl0ZXJhdGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BJdGVyYXRpb24uIik7CisKK1B5RG9jX1NUUlZBUihjb3JvX3Rocm93X2RvYywKKyJ0aHJvdyh0eXBbLHZhbFssdGJdXSkgLT4gcmFpc2UgZXhjZXB0aW9uIGluIGNvcm91dGluZSxcblwKK3JldHVybiBuZXh0IGl0ZXJhdGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BJdGVyYXRpb24uIik7CisKK1B5RG9jX1NUUlZBUihjb3JvX2Nsb3NlX2RvYywKKyJjbG9zZSgpIC0+IHJhaXNlIEdlbmVyYXRvckV4aXQgaW5zaWRlIGNvcm91dGluZS4iKTsKKworc3RhdGljIFB5TWV0aG9kRGVmIGNvcm9fbWV0aG9kc1tdID0geworICAgIHsic2VuZCIsKFB5Q0Z1bmN0aW9uKV9QeUdlbl9TZW5kLCBNRVRIX08sIGNvcm9fc2VuZF9kb2N9LAorICAgIHsidGhyb3ciLChQeUNGdW5jdGlvbilnZW5fdGhyb3csIE1FVEhfVkFSQVJHUywgY29yb190aHJvd19kb2N9LAorICAgIHsiY2xvc2UiLChQeUNGdW5jdGlvbilnZW5fY2xvc2UsIE1FVEhfTk9BUkdTLCBjb3JvX2Nsb3NlX2RvY30sCisgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBTZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5QXN5bmNNZXRob2RzIGNvcm9fYXNfYXN5bmMgPSB7CisgICAgKHVuYXJ5ZnVuYyljb3JvX2F3YWl0LCAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9hd2FpdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYWl0ZXIgKi8KKyAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2FuZXh0ICovCit9OworCitQeVR5cGVPYmplY3QgUHlDb3JvX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAiY29yb3V0aW5lIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoUHlDb3JvT2JqZWN0KSwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3IpZ2VuX2RlYWxsb2MsICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgICZjb3JvX2FzX2FzeW5jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYXN5bmMgKi8KKyAgICAocmVwcmZ1bmMpY29yb19yZXByLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAorICAgICAgICBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpZ2VuX3RyYXZlcnNlLCAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIG9mZnNldG9mKFB5Q29yb09iamVjdCwgY3Jfd2Vha3JlZmxpc3QpLCAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgY29yb19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgY29yb19tZW1iZXJsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgY29yb19nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgX1B5R2VuX0ZpbmFsaXplLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLworfTsKKworc3RhdGljIHZvaWQKK2Nvcm9fd3JhcHBlcl9kZWFsbG9jKFB5Q29yb1dyYXBwZXIgKmN3KQoreworICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKChQeU9iamVjdCAqKWN3KTsKKyAgICBQeV9DTEVBUihjdy0+Y3dfY29yb3V0aW5lKTsKKyAgICBQeU9iamVjdF9HQ19EZWwoY3cpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29yb193cmFwcGVyX2l0ZXJuZXh0KFB5Q29yb1dyYXBwZXIgKmN3KQoreworICAgIHJldHVybiBnZW5fc2VuZF9leCgoUHlHZW5PYmplY3QgKiljdy0+Y3dfY29yb3V0aW5lLCBOVUxMLCAwKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Nvcm9fd3JhcHBlcl9zZW5kKFB5Q29yb1dyYXBwZXIgKmN3LCBQeU9iamVjdCAqYXJnKQoreworICAgIHJldHVybiBnZW5fc2VuZF9leCgoUHlHZW5PYmplY3QgKiljdy0+Y3dfY29yb3V0aW5lLCBhcmcsIDApOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29yb193cmFwcGVyX3Rocm93KFB5Q29yb1dyYXBwZXIgKmN3LCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gZ2VuX3Rocm93KChQeUdlbk9iamVjdCAqKWN3LT5jd19jb3JvdXRpbmUsIGFyZ3MpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29yb193cmFwcGVyX2Nsb3NlKFB5Q29yb1dyYXBwZXIgKmN3LCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gZ2VuX2Nsb3NlKChQeUdlbk9iamVjdCAqKWN3LT5jd19jb3JvdXRpbmUsIGFyZ3MpOworfQorCitzdGF0aWMgaW50Citjb3JvX3dyYXBwZXJfdHJhdmVyc2UoUHlDb3JvV3JhcHBlciAqY3csIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKChQeU9iamVjdCAqKWN3LT5jd19jb3JvdXRpbmUpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgY29yb193cmFwcGVyX21ldGhvZHNbXSA9IHsKKyAgICB7InNlbmQiLChQeUNGdW5jdGlvbiljb3JvX3dyYXBwZXJfc2VuZCwgTUVUSF9PLCBjb3JvX3NlbmRfZG9jfSwKKyAgICB7InRocm93IiwoUHlDRnVuY3Rpb24pY29yb193cmFwcGVyX3Rocm93LCBNRVRIX1ZBUkFSR1MsIGNvcm9fdGhyb3dfZG9jfSwKKyAgICB7ImNsb3NlIiwoUHlDRnVuY3Rpb24pY29yb193cmFwcGVyX2Nsb3NlLCBNRVRIX05PQVJHUywgY29yb19jbG9zZV9kb2N9LAorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KK307CisKK1B5VHlwZU9iamVjdCBfUHlDb3JvV3JhcHBlcl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImNvcm91dGluZV93cmFwcGVyIiwKKyAgICBzaXplb2YoUHlDb3JvV3JhcHBlciksICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3Rvciljb3JvX3dyYXBwZXJfZGVhbGxvYywgICAgICAgICAgIC8qIGRlc3RydWN0b3IgdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2FzeW5jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAvKiB0cF9mbGFncyAqLworICAgICJBIHdyYXBwZXIgb2JqZWN0IGltcGxlbWVudGluZyBfX2F3YWl0X18gZm9yIGNvcm91dGluZXMuIiwKKyAgICAodHJhdmVyc2Vwcm9jKWNvcm9fd3JhcHBlcl90cmF2ZXJzZSwgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgKGl0ZXJuZXh0ZnVuYyljb3JvX3dyYXBwZXJfaXRlcm5leHQsICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGNvcm9fd3JhcHBlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIFB5T2JqZWN0X0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworfTsKKworUHlPYmplY3QgKgorUHlDb3JvX05ldyhQeUZyYW1lT2JqZWN0ICpmLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKQoreworICAgIHJldHVybiBnZW5fbmV3X3dpdGhfcXVhbG5hbWUoJlB5Q29yb19UeXBlLCBmLCBuYW1lLCBxdWFsbmFtZSk7Cit9CmRpZmYgLS1naXQgYS9PYmplY3RzL2l0ZXJvYmplY3QuYyBiL09iamVjdHMvaXRlcm9iamVjdC5jCmluZGV4IDMwNDdkNmIuLjJmYjBjODggMTAwNjQ0Ci0tLSBhL09iamVjdHMvaXRlcm9iamVjdC5jCisrKyBiL09iamVjdHMvaXRlcm9iamVjdC5jCkBAIC0yMTcsNyArMjE3LDcgQEAKICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwogICAgICAgICBpZiAocmVzdWx0ICE9IE5VTEwpIHsKICAgICAgICAgICAgIGludCBvazsKLSAgICAgICAgICAgIG9rID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGl0LT5pdF9zZW50aW5lbCwgcmVzdWx0LCBQeV9FUSk7ICAgICAgICAgICAgICAgCisgICAgICAgICAgICBvayA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdC0+aXRfc2VudGluZWwsIHJlc3VsdCwgUHlfRVEpOwogICAgICAgICAgICAgaWYgKG9rID09IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsgLyogQ29tbW9uIGNhc2UsIGZhc3QgcGF0aCAqLwogICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9PYmplY3RzL2xpc3RvYmplY3QuYyBiL09iamVjdHMvbGlzdG9iamVjdC5jCmluZGV4IDE5OTY3Y2EuLmVlZTdjNjggMTAwNjQ0Ci0tLSBhL09iamVjdHMvbGlzdG9iamVjdC5jCisrKyBiL09iamVjdHMvbGlzdG9iamVjdC5jCkBAIC0yMzI0LDcgKzIzMjQsNyBAQAogewogICAgIFB5X3NzaXplX3QgcmVzOwogCi0gICAgcmVzID0gc2l6ZW9mKFB5TGlzdE9iamVjdCkgKyBzZWxmLT5hbGxvY2F0ZWQgKiBzaXplb2Yodm9pZCopOworICAgIHJlcyA9IF9QeU9iamVjdF9TSVpFKFB5X1RZUEUoc2VsZikpICsgc2VsZi0+YWxsb2NhdGVkICogc2l6ZW9mKHZvaWQqKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7CiB9CiAKQEAgLTI0NDcsNyArMjQ0Nyw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImxpc3QgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICJsaXN0IGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyBvciBzbGljZXMsIG5vdCAlLjIwMHMiLAogICAgICAgICAgICAgICAgICAgICAgaXRlbS0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTI2MTEsNyArMjYxMSw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImxpc3QgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICJsaXN0IGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyBvciBzbGljZXMsIG5vdCAlLjIwMHMiLAogICAgICAgICAgICAgICAgICAgICAgaXRlbS0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CmRpZmYgLS1naXQgYS9PYmplY3RzL2xvbmdvYmplY3QuYyBiL09iamVjdHMvbG9uZ29iamVjdC5jCmluZGV4IDNhNjRiNTMuLmQ4MjFlNGIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbG9uZ29iamVjdC5jCisrKyBiL09iamVjdHMvbG9uZ29iamVjdC5jCkBAIC0yMSw3ICsyMSw2IEBACiAgICAgICAgICBQeV9TSVpFKHgpIDwgMCA/IC0oc2RpZ2l0KSh4KS0+b2JfZGlnaXRbMF0gOiAgIFwKICAgICAgICAgICAgICAoUHlfU0laRSh4KSA9PSAwID8gKHNkaWdpdCkwIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgKHNkaWdpdCkoeCktPm9iX2RpZ2l0WzBdKSkKLSNkZWZpbmUgQUJTKHgpICgoeCkgPCAwID8gLSh4KSA6ICh4KSkKIAogI2lmIE5TTUFMTE5FR0lOVFMgKyBOU01BTExQT1NJTlRTID4gMAogLyogU21hbGwgaW50ZWdlcnMgYXJlIHByZWFsbG9jYXRlZCBpbiB0aGlzIGFycmF5IHNvIHRoYXQgdGhleQpAQCAtNTcsNyArNTYsNyBAQAogc3RhdGljIFB5TG9uZ09iamVjdCAqCiBtYXliZV9zbWFsbF9sb25nKFB5TG9uZ09iamVjdCAqdikKIHsKLSAgICBpZiAodiAmJiBBQlMoUHlfU0laRSh2KSkgPD0gMSkgeworICAgIGlmICh2ICYmIFB5X0FCUyhQeV9TSVpFKHYpKSA8PSAxKSB7CiAgICAgICAgIHNkaWdpdCBpdmFsID0gTUVESVVNX1ZBTFVFKHYpOwogICAgICAgICBpZiAoLU5TTUFMTE5FR0lOVFMgPD0gaXZhbCAmJiBpdmFsIDwgTlNNQUxMUE9TSU5UUykgewogICAgICAgICAgICAgUHlfREVDUkVGKHYpOwpAQCAtMTE0LDcgKzExMyw3IEBACiBzdGF0aWMgUHlMb25nT2JqZWN0ICoKIGxvbmdfbm9ybWFsaXplKFB5TG9uZ09iamVjdCAqdikKIHsKLSAgICBQeV9zc2l6ZV90IGogPSBBQlMoUHlfU0laRSh2KSk7CisgICAgUHlfc3NpemVfdCBqID0gUHlfQUJTKFB5X1NJWkUodikpOwogICAgIFB5X3NzaXplX3QgaSA9IGo7CiAKICAgICB3aGlsZSAoaSA+IDAgJiYgdi0+b2JfZGlnaXRbaS0xXSA9PSAwKQpAQCAtNzE4LDcgKzcxNyw3IEBACiAKICAgICBhc3NlcnQodiAhPSBOVUxMKTsKICAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHYpKTsKLSAgICBuZGlnaXRzID0gQUJTKFB5X1NJWkUodikpOworICAgIG5kaWdpdHMgPSBQeV9BQlMoUHlfU0laRSh2KSk7CiAgICAgYXNzZXJ0KG5kaWdpdHMgPT0gMCB8fCB2LT5vYl9kaWdpdFtuZGlnaXRzIC0gMV0gIT0gMCk7CiAgICAgaWYgKG5kaWdpdHMgPiAwKSB7CiAgICAgICAgIGRpZ2l0IG1zZCA9IHYtPm9iX2RpZ2l0W25kaWdpdHMgLSAxXTsKQEAgLTE1NjUsNyArMTU2NCw3IEBACiBzdGF0aWMgUHlMb25nT2JqZWN0ICoKIGRpdnJlbTEoUHlMb25nT2JqZWN0ICphLCBkaWdpdCBuLCBkaWdpdCAqcHJlbSkKIHsKLSAgICBjb25zdCBQeV9zc2l6ZV90IHNpemUgPSBBQlMoUHlfU0laRShhKSk7CisgICAgY29uc3QgUHlfc3NpemVfdCBzaXplID0gUHlfQUJTKFB5X1NJWkUoYSkpOwogICAgIFB5TG9uZ09iamVjdCAqejsKIAogICAgIGFzc2VydChuID4gMCAmJiBuIDw9IFB5TG9uZ19NQVNLKTsKQEAgLTE1OTcsNyArMTU5Niw3IEBACiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHNpemVfYSA9IEFCUyhQeV9TSVpFKGEpKTsKKyAgICBzaXplX2EgPSBQeV9BQlMoUHlfU0laRShhKSk7CiAgICAgbmVnYXRpdmUgPSBQeV9TSVpFKGEpIDwgMDsKIAogICAgIC8qIHF1aWNrIGFuZCBkaXJ0eSB1cHBlciBib3VuZCBmb3IgdGhlIG51bWJlciBvZiBkaWdpdHMKQEAgLTE3NjYsNyArMTc2NSw3IEBACiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHNpemVfYSA9IEFCUyhQeV9TSVpFKGEpKTsKKyAgICBzaXplX2EgPSBQeV9BQlMoUHlfU0laRShhKSk7CiAgICAgbmVnYXRpdmUgPSBQeV9TSVpFKGEpIDwgMDsKIAogICAgIC8qIENvbXB1dGUgYSByb3VnaCB1cHBlciBib3VuZCBmb3IgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nICovCkBAIC0yMzEzLDcgKzIzMTIsNyBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQsICpzdHJvYmo7CiAgICAgY2hhciAqZW5kID0gTlVMTDsKIAotICAgIHJlc3VsdCA9IFB5TG9uZ19Gcm9tU3RyaW5nKChjaGFyKilzLCAmZW5kLCBiYXNlKTsKKyAgICByZXN1bHQgPSBQeUxvbmdfRnJvbVN0cmluZyhzLCAmZW5kLCBiYXNlKTsKICAgICBpZiAoZW5kID09IE5VTEwgfHwgKHJlc3VsdCAhPSBOVUxMICYmIGVuZCA9PSBzICsgbGVuKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBQeV9YREVDUkVGKHJlc3VsdCk7CkBAIC0yMzgwLDcgKzIzNzksNyBAQAogbG9uZ19kaXZyZW0oUHlMb25nT2JqZWN0ICphLCBQeUxvbmdPYmplY3QgKmIsCiAgICAgICAgICAgICBQeUxvbmdPYmplY3QgKipwZGl2LCBQeUxvbmdPYmplY3QgKipwcmVtKQogewotICAgIFB5X3NzaXplX3Qgc2l6ZV9hID0gQUJTKFB5X1NJWkUoYSkpLCBzaXplX2IgPSBBQlMoUHlfU0laRShiKSk7CisgICAgUHlfc3NpemVfdCBzaXplX2EgPSBQeV9BQlMoUHlfU0laRShhKSksIHNpemVfYiA9IFB5X0FCUyhQeV9TSVpFKGIpKTsKICAgICBQeUxvbmdPYmplY3QgKno7CiAKICAgICBpZiAoc2l6ZV9iID09IDApIHsKQEAgLTI0MzksNyArMjQzOCw3IEBACiB9CiAKIC8qIFVuc2lnbmVkIGludCBkaXZpc2lvbiB3aXRoIHJlbWFpbmRlciAtLSB0aGUgYWxnb3JpdGhtLiAgVGhlIGFyZ3VtZW50cyB2MQotICAgYW5kIHcxIHNob3VsZCBzYXRpc2Z5IDIgPD0gQUJTKFB5X1NJWkUodzEpKSA8PSBBQlMoUHlfU0laRSh2MSkpLiAqLworICAgYW5kIHcxIHNob3VsZCBzYXRpc2Z5IDIgPD0gUHlfQUJTKFB5X1NJWkUodzEpKSA8PSBQeV9BQlMoUHlfU0laRSh2MSkpLiAqLwogCiBzdGF0aWMgUHlMb25nT2JqZWN0ICoKIHhfZGl2cmVtKFB5TG9uZ09iamVjdCAqdjEsIFB5TG9uZ09iamVjdCAqdzEsIFB5TG9uZ09iamVjdCAqKnByZW0pCkBAIC0yNDU5LDggKzI0NTgsOCBAQAogICAgICAgIHRoYXQgd29uJ3Qgb3ZlcmZsb3cgYSBkaWdpdC4gKi8KIAogICAgIC8qIGFsbG9jYXRlIHNwYWNlOyB3IHdpbGwgYWxzbyBiZSB1c2VkIHRvIGhvbGQgdGhlIGZpbmFsIHJlbWFpbmRlciAqLwotICAgIHNpemVfdiA9IEFCUyhQeV9TSVpFKHYxKSk7Ci0gICAgc2l6ZV93ID0gQUJTKFB5X1NJWkUodzEpKTsKKyAgICBzaXplX3YgPSBQeV9BQlMoUHlfU0laRSh2MSkpOworICAgIHNpemVfdyA9IFB5X0FCUyhQeV9TSVpFKHcxKSk7CiAgICAgYXNzZXJ0KHNpemVfdiA+PSBzaXplX3cgJiYgc2l6ZV93ID49IDIpOyAvKiBBc3NlcnQgY2hlY2tzIGJ5IGRpdigpICovCiAgICAgdiA9IF9QeUxvbmdfTmV3KHNpemVfdisxKTsKICAgICBpZiAodiA9PSBOVUxMKSB7CkBAIC0yNTkxLDcgKzI1OTAsNyBAQAogICAgICAgIG11bHRpcGxlIG9mIDQsIHJvdW5kaW5nIHRpZXMgdG8gYSBtdWx0aXBsZSBvZiA4LiAqLwogICAgIHN0YXRpYyBjb25zdCBpbnQgaGFsZl9ldmVuX2NvcnJlY3Rpb25bOF0gPSB7MCwgLTEsIC0yLCAxLCAwLCAtMSwgMiwgMX07CiAKLSAgICBhX3NpemUgPSBBQlMoUHlfU0laRShhKSk7CisgICAgYV9zaXplID0gUHlfQUJTKFB5X1NJWkUoYSkpOwogICAgIGlmIChhX3NpemUgPT0gMCkgewogICAgICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIDA6IHNpZ25pZmljYW5kIDAuMCwgZXhwb25lbnQgMC4gKi8KICAgICAgICAgKmUgPSAwOwpAQCAtMjczMiw3ICsyNzMxLDcgQEAKICAgICAgICAgc2lnbiA9IFB5X1NJWkUoYSkgLSBQeV9TSVpFKGIpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlfc3NpemVfdCBpID0gQUJTKFB5X1NJWkUoYSkpOworICAgICAgICBQeV9zc2l6ZV90IGkgPSBQeV9BQlMoUHlfU0laRShhKSk7CiAgICAgICAgIHdoaWxlICgtLWkgPj0gMCAmJiBhLT5vYl9kaWdpdFtpXSA9PSBiLT5vYl9kaWdpdFtpXSkKICAgICAgICAgICAgIDsKICAgICAgICAgaWYgKGkgPCAwKQpAQCAtMjg1MCw3ICsyODQ5LDcgQEAKIHN0YXRpYyBQeUxvbmdPYmplY3QgKgogeF9hZGQoUHlMb25nT2JqZWN0ICphLCBQeUxvbmdPYmplY3QgKmIpCiB7Ci0gICAgUHlfc3NpemVfdCBzaXplX2EgPSBBQlMoUHlfU0laRShhKSksIHNpemVfYiA9IEFCUyhQeV9TSVpFKGIpKTsKKyAgICBQeV9zc2l6ZV90IHNpemVfYSA9IFB5X0FCUyhQeV9TSVpFKGEpKSwgc2l6ZV9iID0gUHlfQUJTKFB5X1NJWkUoYikpOwogICAgIFB5TG9uZ09iamVjdCAqejsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgZGlnaXQgY2FycnkgPSAwOwpAQCAtMjg4NCw3ICsyODgzLDcgQEAKIHN0YXRpYyBQeUxvbmdPYmplY3QgKgogeF9zdWIoUHlMb25nT2JqZWN0ICphLCBQeUxvbmdPYmplY3QgKmIpCiB7Ci0gICAgUHlfc3NpemVfdCBzaXplX2EgPSBBQlMoUHlfU0laRShhKSksIHNpemVfYiA9IEFCUyhQeV9TSVpFKGIpKTsKKyAgICBQeV9zc2l6ZV90IHNpemVfYSA9IFB5X0FCUyhQeV9TSVpFKGEpKSwgc2l6ZV9iID0gUHlfQUJTKFB5X1NJWkUoYikpOwogICAgIFB5TG9uZ09iamVjdCAqejsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgaW50IHNpZ24gPSAxOwpAQCAtMjk0NCw3ICsyOTQzLDcgQEAKIAogICAgIENIRUNLX0JJTk9QKGEsIGIpOwogCi0gICAgaWYgKEFCUyhQeV9TSVpFKGEpKSA8PSAxICYmIEFCUyhQeV9TSVpFKGIpKSA8PSAxKSB7CisgICAgaWYgKFB5X0FCUyhQeV9TSVpFKGEpKSA8PSAxICYmIFB5X0FCUyhQeV9TSVpFKGIpKSA8PSAxKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeUxvbmdfRnJvbUxvbmcoTUVESVVNX1ZBTFVFKGEpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElVTV9WQUxVRShiKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0yOTc0LDcgKzI5NzMsNyBAQAogCiAgICAgQ0hFQ0tfQklOT1AoYSwgYik7CiAKLSAgICBpZiAoQUJTKFB5X1NJWkUoYSkpIDw9IDEgJiYgQUJTKFB5X1NJWkUoYikpIDw9IDEpIHsKKyAgICBpZiAoUHlfQUJTKFB5X1NJWkUoYSkpIDw9IDEgJiYgUHlfQUJTKFB5X1NJWkUoYikpIDw9IDEpIHsKICAgICAgICAgUHlPYmplY3QqIHI7CiAgICAgICAgIHIgPSBQeUxvbmdfRnJvbUxvbmcoTUVESVVNX1ZBTFVFKGEpLU1FRElVTV9WQUxVRShiKSk7CiAgICAgICAgIHJldHVybiByOwpAQCAtMzAwMyw4ICszMDAyLDggQEAKIHhfbXVsKFB5TG9uZ09iamVjdCAqYSwgUHlMb25nT2JqZWN0ICpiKQogewogICAgIFB5TG9uZ09iamVjdCAqejsKLSAgICBQeV9zc2l6ZV90IHNpemVfYSA9IEFCUyhQeV9TSVpFKGEpKTsKLSAgICBQeV9zc2l6ZV90IHNpemVfYiA9IEFCUyhQeV9TSVpFKGIpKTsKKyAgICBQeV9zc2l6ZV90IHNpemVfYSA9IFB5X0FCUyhQeV9TSVpFKGEpKTsKKyAgICBQeV9zc2l6ZV90IHNpemVfYiA9IFB5X0FCUyhQeV9TSVpFKGIpKTsKICAgICBQeV9zc2l6ZV90IGk7CiAKICAgICB6ID0gX1B5TG9uZ19OZXcoc2l6ZV9hICsgc2l6ZV9iKTsKQEAgLTMwOTgsNyArMzA5Nyw3IEBACiB7CiAgICAgUHlMb25nT2JqZWN0ICpoaSwgKmxvOwogICAgIFB5X3NzaXplX3Qgc2l6ZV9sbywgc2l6ZV9oaTsKLSAgICBjb25zdCBQeV9zc2l6ZV90IHNpemVfbiA9IEFCUyhQeV9TSVpFKG4pKTsKKyAgICBjb25zdCBQeV9zc2l6ZV90IHNpemVfbiA9IFB5X0FCUyhQeV9TSVpFKG4pKTsKIAogICAgIHNpemVfbG8gPSBQeV9NSU4oc2l6ZV9uLCBzaXplKTsKICAgICBzaXplX2hpID0gc2l6ZV9uIC0gc2l6ZV9sbzsKQEAgLTMxMjcsOCArMzEyNiw4IEBACiBzdGF0aWMgUHlMb25nT2JqZWN0ICoKIGtfbXVsKFB5TG9uZ09iamVjdCAqYSwgUHlMb25nT2JqZWN0ICpiKQogewotICAgIFB5X3NzaXplX3QgYXNpemUgPSBBQlMoUHlfU0laRShhKSk7Ci0gICAgUHlfc3NpemVfdCBic2l6ZSA9IEFCUyhQeV9TSVpFKGIpKTsKKyAgICBQeV9zc2l6ZV90IGFzaXplID0gUHlfQUJTKFB5X1NJWkUoYSkpOworICAgIFB5X3NzaXplX3QgYnNpemUgPSBQeV9BQlMoUHlfU0laRShiKSk7CiAgICAgUHlMb25nT2JqZWN0ICphaCA9IE5VTEw7CiAgICAgUHlMb25nT2JqZWN0ICphbCA9IE5VTEw7CiAgICAgUHlMb25nT2JqZWN0ICpiaCA9IE5VTEw7CkBAIC0zMzQ4LDggKzMzNDcsOCBAQAogc3RhdGljIFB5TG9uZ09iamVjdCAqCiBrX2xvcHNpZGVkX211bChQeUxvbmdPYmplY3QgKmEsIFB5TG9uZ09iamVjdCAqYikKIHsKLSAgICBjb25zdCBQeV9zc2l6ZV90IGFzaXplID0gQUJTKFB5X1NJWkUoYSkpOwotICAgIFB5X3NzaXplX3QgYnNpemUgPSBBQlMoUHlfU0laRShiKSk7CisgICAgY29uc3QgUHlfc3NpemVfdCBhc2l6ZSA9IFB5X0FCUyhQeV9TSVpFKGEpKTsKKyAgICBQeV9zc2l6ZV90IGJzaXplID0gUHlfQUJTKFB5X1NJWkUoYikpOwogICAgIFB5X3NzaXplX3QgbmJkb25lOyAgICAgICAgICAvKiAjIG9mIGIgZGlnaXRzIGFscmVhZHkgbXVsdGlwbGllZCAqLwogICAgIFB5TG9uZ09iamVjdCAqcmV0OwogICAgIFB5TG9uZ09iamVjdCAqYnNsaWNlID0gTlVMTDsKQEAgLTM0MDcsNyArMzQwNiw3IEBACiAgICAgQ0hFQ0tfQklOT1AoYSwgYik7CiAKICAgICAvKiBmYXN0IHBhdGggZm9yIHNpbmdsZS1kaWdpdCBtdWx0aXBsaWNhdGlvbiAqLwotICAgIGlmIChBQlMoUHlfU0laRShhKSkgPD0gMSAmJiBBQlMoUHlfU0laRShiKSkgPD0gMSkgeworICAgIGlmIChQeV9BQlMoUHlfU0laRShhKSkgPD0gMSAmJiBQeV9BQlMoUHlfU0laRShiKSkgPD0gMSkgewogICAgICAgICBzdHdvZGlnaXRzIHYgPSAoc3R3b2RpZ2l0cykoTUVESVVNX1ZBTFVFKGEpKSAqIE1FRElVTV9WQUxVRShiKTsKICNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXYpOwpAQCAtMzYxNCw4ICszNjEzLDggQEAKICAgICAqLwogCiAgICAgLyogUmVkdWNlIHRvIGNhc2Ugd2hlcmUgYSBhbmQgYiBhcmUgYm90aCBwb3NpdGl2ZS4gKi8KLSAgICBhX3NpemUgPSBBQlMoUHlfU0laRShhKSk7Ci0gICAgYl9zaXplID0gQUJTKFB5X1NJWkUoYikpOworICAgIGFfc2l6ZSA9IFB5X0FCUyhQeV9TSVpFKGEpKTsKKyAgICBiX3NpemUgPSBQeV9BQlMoUHlfU0laRShiKSk7CiAgICAgbmVnYXRlID0gKFB5X1NJWkUoYSkgPCAwKSBeIChQeV9TSVpFKGIpIDwgMCk7CiAgICAgaWYgKGJfc2l6ZSA9PSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19aZXJvRGl2aXNpb25FcnJvciwKQEAgLTM3MzEsNyArMzczMCw3IEBACiAgICAgICAgICAgICBpbmV4YWN0ID0gMTsKICAgICAgICAgUHlfREVDUkVGKHJlbSk7CiAgICAgfQotICAgIHhfc2l6ZSA9IEFCUyhQeV9TSVpFKHgpKTsKKyAgICB4X3NpemUgPSBQeV9BQlMoUHlfU0laRSh4KSk7CiAgICAgYXNzZXJ0KHhfc2l6ZSA+IDApOyAvKiByZXN1bHQgb2YgZGl2aXNpb24gaXMgbmV2ZXIgemVybyAqLwogICAgIHhfYml0cyA9ICh4X3NpemUtMSkqUHlMb25nX1NISUZUK2JpdHNfaW5fZGlnaXQoeC0+b2JfZGlnaXRbeF9zaXplLTFdKTsKIApAQCAtMzg0MSw3ICszODQwLDcgQEAKIAogICAgIGlmIChQeV9TSVpFKGIpIDwgMCkgeyAgLyogaWYgZXhwb25lbnQgaXMgbmVnYXRpdmUgKi8KICAgICAgICAgaWYgKGMpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJwb3coKSAybmQgYXJndW1lbnQgIgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJwb3coKSAybmQgYXJndW1lbnQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgYmUgbmVnYXRpdmUgd2hlbiAzcmQgYXJndW1lbnQgc3BlY2lmaWVkIik7CiAgICAgICAgICAgICBnb3RvIEVycm9yOwogICAgICAgICB9CkBAIC00MDAzLDcgKzQwMDIsNyBAQAogICAgIC8qIEltcGxlbWVudCB+eCBhcyAtKHgrMSkgKi8KICAgICBQeUxvbmdPYmplY3QgKng7CiAgICAgUHlMb25nT2JqZWN0ICp3OwotICAgIGlmIChBQlMoUHlfU0laRSh2KSkgPD0xKQorICAgIGlmIChQeV9BQlMoUHlfU0laRSh2KSkgPD0xKQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKC0oTUVESVVNX1ZBTFVFKHYpKzEpKTsKICAgICB3ID0gKFB5TG9uZ09iamVjdCAqKVB5TG9uZ19Gcm9tTG9uZygxTCk7CiAgICAgaWYgKHcgPT0gTlVMTCkKQEAgLTQwMjAsNyArNDAxOSw3IEBACiBsb25nX25lZyhQeUxvbmdPYmplY3QgKnYpCiB7CiAgICAgUHlMb25nT2JqZWN0ICp6OwotICAgIGlmIChBQlMoUHlfU0laRSh2KSkgPD0gMSkKKyAgICBpZiAoUHlfQUJTKFB5X1NJWkUodikpIDw9IDEpCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoLU1FRElVTV9WQUxVRSh2KSk7CiAgICAgeiA9IChQeUxvbmdPYmplY3QgKilfUHlMb25nX0NvcHkodik7CiAgICAgaWYgKHogIT0gTlVMTCkKQEAgLTQwNzUsNyArNDA3NCw3IEBACiAgICAgICAgICAgICBnb3RvIHJzaGlmdF9lcnJvcjsKICAgICAgICAgfQogICAgICAgICB3b3Jkc2hpZnQgPSBzaGlmdGJ5IC8gUHlMb25nX1NISUZUOwotICAgICAgICBuZXdzaXplID0gQUJTKFB5X1NJWkUoYSkpIC0gd29yZHNoaWZ0OworICAgICAgICBuZXdzaXplID0gUHlfQUJTKFB5X1NJWkUoYSkpIC0gd29yZHNoaWZ0OwogICAgICAgICBpZiAobmV3c2l6ZSA8PSAwKQogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKICAgICAgICAgbG9zaGlmdCA9IHNoaWZ0YnkgJSBQeUxvbmdfU0hJRlQ7CkBAIC00MTIyLDcgKzQxMjEsNyBAQAogICAgIHdvcmRzaGlmdCA9IHNoaWZ0YnkgLyBQeUxvbmdfU0hJRlQ7CiAgICAgcmVtc2hpZnQgID0gc2hpZnRieSAtIHdvcmRzaGlmdCAqIFB5TG9uZ19TSElGVDsKIAotICAgIG9sZHNpemUgPSBBQlMoUHlfU0laRShhKSk7CisgICAgb2xkc2l6ZSA9IFB5X0FCUyhQeV9TSVpFKGEpKTsKICAgICBuZXdzaXplID0gb2xkc2l6ZSArIHdvcmRzaGlmdDsKICAgICBpZiAocmVtc2hpZnQpCiAgICAgICAgICsrbmV3c2l6ZTsKQEAgLTQxODMsNyArNDE4Miw3IEBACiAgICAgICAgcmVzdWx0IGJhY2sgdG8gc2lnbi1tYWduaXR1ZGUgYXQgdGhlIGVuZC4gKi8KIAogICAgIC8qIElmIGEgaXMgbmVnYXRpdmUsIHJlcGxhY2UgaXQgYnkgaXRzIHR3bydzIGNvbXBsZW1lbnQuICovCi0gICAgc2l6ZV9hID0gQUJTKFB5X1NJWkUoYSkpOworICAgIHNpemVfYSA9IFB5X0FCUyhQeV9TSVpFKGEpKTsKICAgICBuZWdhID0gUHlfU0laRShhKSA8IDA7CiAgICAgaWYgKG5lZ2EpIHsKICAgICAgICAgeiA9IF9QeUxvbmdfTmV3KHNpemVfYSk7CkBAIC00MTk3LDcgKzQxOTYsNyBAQAogICAgICAgICBQeV9JTkNSRUYoYSk7CiAKICAgICAvKiBTYW1lIGZvciBiLiAqLwotICAgIHNpemVfYiA9IEFCUyhQeV9TSVpFKGIpKTsKKyAgICBzaXplX2IgPSBQeV9BQlMoUHlfU0laRShiKSk7CiAgICAgbmVnYiA9IFB5X1NJWkUoYikgPCAwOwogICAgIGlmIChuZWdiKSB7CiAgICAgICAgIHogPSBfUHlMb25nX05ldyhzaXplX2IpOwpAQCAtNDMyOCw2ICs0MzI3LDIxMyBAQAogICAgIHJldHVybiB2OwogfQogCitQeU9iamVjdCAqCitfUHlMb25nX0dDRChQeU9iamVjdCAqYWFyZywgUHlPYmplY3QgKmJhcmcpCit7CisgICAgUHlMb25nT2JqZWN0ICphLCAqYiwgKmMgPSBOVUxMLCAqZCA9IE5VTEwsICpyOworICAgIHN0d29kaWdpdHMgeCwgeSwgcSwgcywgdCwgY19jYXJyeSwgZF9jYXJyeTsKKyAgICBzdHdvZGlnaXRzIEEsIEIsIEMsIEQsIFQ7CisgICAgaW50IG5iaXRzLCBrOworICAgIFB5X3NzaXplX3Qgc2l6ZV9hLCBzaXplX2IsIGFsbG9jX2EsIGFsbG9jX2I7CisgICAgZGlnaXQgKmFfZGlnaXQsICpiX2RpZ2l0LCAqY19kaWdpdCwgKmRfZGlnaXQsICphX2VuZCwgKmJfZW5kOworCisgICAgYSA9IChQeUxvbmdPYmplY3QgKilhYXJnOworICAgIGIgPSAoUHlMb25nT2JqZWN0ICopYmFyZzsKKyAgICBzaXplX2EgPSBQeV9TSVpFKGEpOworICAgIHNpemVfYiA9IFB5X1NJWkUoYik7CisgICAgaWYgKC0yIDw9IHNpemVfYSAmJiBzaXplX2EgPD0gMiAmJiAtMiA8PSBzaXplX2IgJiYgc2l6ZV9iIDw9IDIpIHsKKyAgICAgICAgUHlfSU5DUkVGKGEpOworICAgICAgICBQeV9JTkNSRUYoYik7CisgICAgICAgIGdvdG8gc2ltcGxlOworICAgIH0KKworICAgIC8qIEluaXRpYWwgcmVkdWN0aW9uOiBtYWtlIHN1cmUgdGhhdCAwIDw9IGIgPD0gYS4gKi8KKyAgICBhID0gKFB5TG9uZ09iamVjdCAqKWxvbmdfYWJzKGEpOworICAgIGlmIChhID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGIgPSAoUHlMb25nT2JqZWN0ICopbG9uZ19hYnMoYik7CisgICAgaWYgKGIgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAobG9uZ19jb21wYXJlKGEsIGIpIDwgMCkgeworICAgICAgICByID0gYTsKKyAgICAgICAgYSA9IGI7CisgICAgICAgIGIgPSByOworICAgIH0KKyAgICAvKiBXZSBub3cgb3duIHJlZmVyZW5jZXMgdG8gYSBhbmQgYiAqLworCisgICAgYWxsb2NfYSA9IFB5X1NJWkUoYSk7CisgICAgYWxsb2NfYiA9IFB5X1NJWkUoYik7CisgICAgLyogcmVkdWNlIHVudGlsIGEgZml0cyBpbnRvIDIgZGlnaXRzICovCisgICAgd2hpbGUgKChzaXplX2EgPSBQeV9TSVpFKGEpKSA+IDIpIHsKKyAgICAgICAgbmJpdHMgPSBiaXRzX2luX2RpZ2l0KGEtPm9iX2RpZ2l0W3NpemVfYS0xXSk7CisgICAgICAgIC8qIGV4dHJhY3QgdG9wIDIqUHlMb25nX1NISUZUIGJpdHMgb2YgYSBpbnRvIHgsIGFsb25nIHdpdGgKKyAgICAgICAgICAgY29ycmVzcG9uZGluZyBiaXRzIG9mIGIgaW50byB5ICovCisgICAgICAgIHNpemVfYiA9IFB5X1NJWkUoYik7CisgICAgICAgIGFzc2VydChzaXplX2IgPD0gc2l6ZV9hKTsKKyAgICAgICAgaWYgKHNpemVfYiA9PSAwKSB7CisgICAgICAgICAgICBpZiAoc2l6ZV9hIDwgYWxsb2NfYSkgeworICAgICAgICAgICAgICAgIHIgPSAoUHlMb25nT2JqZWN0ICopX1B5TG9uZ19Db3B5KGEpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByID0gYTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihiKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoYyk7CisgICAgICAgICAgICBQeV9YREVDUkVGKGQpOworICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXI7CisgICAgICAgIH0KKyAgICAgICAgeCA9ICgoKHR3b2RpZ2l0cylhLT5vYl9kaWdpdFtzaXplX2EtMV0gPDwgKDIqUHlMb25nX1NISUZULW5iaXRzKSkgfAorICAgICAgICAgICAgICgodHdvZGlnaXRzKWEtPm9iX2RpZ2l0W3NpemVfYS0yXSA8PCAoUHlMb25nX1NISUZULW5iaXRzKSkgfAorICAgICAgICAgICAgIChhLT5vYl9kaWdpdFtzaXplX2EtM10gPj4gbmJpdHMpKTsKKworICAgICAgICB5ID0gKChzaXplX2IgPj0gc2l6ZV9hIC0gMiA/IGItPm9iX2RpZ2l0W3NpemVfYS0zXSA+PiBuYml0cyA6IDApIHwKKyAgICAgICAgICAgICAoc2l6ZV9iID49IHNpemVfYSAtIDEgPyAodHdvZGlnaXRzKWItPm9iX2RpZ2l0W3NpemVfYS0yXSA8PCAoUHlMb25nX1NISUZULW5iaXRzKSA6IDApIHwKKyAgICAgICAgICAgICAoc2l6ZV9iID49IHNpemVfYSA/ICh0d29kaWdpdHMpYi0+b2JfZGlnaXRbc2l6ZV9hLTFdIDw8ICgyKlB5TG9uZ19TSElGVC1uYml0cykgOiAwKSk7CisKKyAgICAgICAgLyogaW5uZXIgbG9vcCBvZiBMZWhtZXIncyBhbGdvcml0aG07IEEsIEIsIEMsIEQgbmV2ZXIgZ3JvdworICAgICAgICAgICBsYXJnZXIgdGhhbiBQeUxvbmdfTUFTSyBkdXJpbmcgdGhlIGFsZ29yaXRobS4gKi8KKyAgICAgICAgQSA9IDE7IEIgPSAwOyBDID0gMDsgRCA9IDE7CisgICAgICAgIGZvciAoaz0wOzsgaysrKSB7CisgICAgICAgICAgICBpZiAoeS1DID09IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBxID0gKHgrKEEtMSkpLyh5LUMpOworICAgICAgICAgICAgcyA9IEIrcSpEOworICAgICAgICAgICAgdCA9IHgtcSp5OworICAgICAgICAgICAgaWYgKHMgPiB0KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgeCA9IHk7IHkgPSB0OworICAgICAgICAgICAgdCA9IEErcSpDOyBBID0gRDsgQiA9IEM7IEMgPSBzOyBEID0gdDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChrID09IDApIHsKKyAgICAgICAgICAgIC8qIG5vIHByb2dyZXNzOyBkbyBhIEV1Y2xpZGVhbiBzdGVwICovCisgICAgICAgICAgICBpZiAobF9kaXZtb2QoYSwgYiwgTlVMTCwgJnIpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICAgICAgYSA9IGI7CisgICAgICAgICAgICBiID0gcjsKKyAgICAgICAgICAgIGFsbG9jX2EgPSBhbGxvY19iOworICAgICAgICAgICAgYWxsb2NfYiA9IFB5X1NJWkUoYik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAgYSwgYiA9IEEqYi1CKmEsIEQqYS1DKmIgaWYgayBpcyBvZGQKKyAgICAgICAgICBhLCBiID0gQSphLUIqYiwgRCpiLUMqYSBpZiBrIGlzIGV2ZW4KKyAgICAgICAgKi8KKyAgICAgICAgaWYgKGsmMSkgeworICAgICAgICAgICAgVCA9IC1BOyBBID0gLUI7IEIgPSBUOworICAgICAgICAgICAgVCA9IC1DOyBDID0gLUQ7IEQgPSBUOworICAgICAgICB9CisgICAgICAgIGlmIChjICE9IE5VTEwpCisgICAgICAgICAgICBQeV9TSVpFKGMpID0gc2l6ZV9hOworICAgICAgICBlbHNlIGlmIChQeV9SRUZDTlQoYSkgPT0gMSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKGEpOworICAgICAgICAgICAgYyA9IGE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhbGxvY19hID0gc2l6ZV9hOworICAgICAgICAgICAgYyA9IF9QeUxvbmdfTmV3KHNpemVfYSk7CisgICAgICAgICAgICBpZiAoYyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZCAhPSBOVUxMKQorICAgICAgICAgICAgUHlfU0laRShkKSA9IHNpemVfYTsKKyAgICAgICAgZWxzZSBpZiAoUHlfUkVGQ05UKGIpID09IDEgJiYgc2l6ZV9hIDw9IGFsbG9jX2IpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihiKTsKKyAgICAgICAgICAgIGQgPSBiOworICAgICAgICAgICAgUHlfU0laRShkKSA9IHNpemVfYTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFsbG9jX2IgPSBzaXplX2E7CisgICAgICAgICAgICBkID0gX1B5TG9uZ19OZXcoc2l6ZV9hKTsKKyAgICAgICAgICAgIGlmIChkID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBhX2VuZCA9IGEtPm9iX2RpZ2l0ICsgc2l6ZV9hOworICAgICAgICBiX2VuZCA9IGItPm9iX2RpZ2l0ICsgc2l6ZV9iOworCisgICAgICAgIC8qIGNvbXB1dGUgbmV3IGEgYW5kIG5ldyBiIGluIHBhcmFsbGVsICovCisgICAgICAgIGFfZGlnaXQgPSBhLT5vYl9kaWdpdDsKKyAgICAgICAgYl9kaWdpdCA9IGItPm9iX2RpZ2l0OworICAgICAgICBjX2RpZ2l0ID0gYy0+b2JfZGlnaXQ7CisgICAgICAgIGRfZGlnaXQgPSBkLT5vYl9kaWdpdDsKKyAgICAgICAgY19jYXJyeSA9IDA7CisgICAgICAgIGRfY2FycnkgPSAwOworICAgICAgICB3aGlsZSAoYl9kaWdpdCA8IGJfZW5kKSB7CisgICAgICAgICAgICBjX2NhcnJ5ICs9IChBICogKmFfZGlnaXQpIC0gKEIgKiAqYl9kaWdpdCk7CisgICAgICAgICAgICBkX2NhcnJ5ICs9IChEICogKmJfZGlnaXQrKykgLSAoQyAqICphX2RpZ2l0KyspOworICAgICAgICAgICAgKmNfZGlnaXQrKyA9IChkaWdpdCkoY19jYXJyeSAmIFB5TG9uZ19NQVNLKTsKKyAgICAgICAgICAgICpkX2RpZ2l0KysgPSAoZGlnaXQpKGRfY2FycnkgJiBQeUxvbmdfTUFTSyk7CisgICAgICAgICAgICBjX2NhcnJ5ID4+PSBQeUxvbmdfU0hJRlQ7CisgICAgICAgICAgICBkX2NhcnJ5ID4+PSBQeUxvbmdfU0hJRlQ7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGFfZGlnaXQgPCBhX2VuZCkgeworICAgICAgICAgICAgY19jYXJyeSArPSBBICogKmFfZGlnaXQ7CisgICAgICAgICAgICBkX2NhcnJ5IC09IEMgKiAqYV9kaWdpdCsrOworICAgICAgICAgICAgKmNfZGlnaXQrKyA9IChkaWdpdCkoY19jYXJyeSAmIFB5TG9uZ19NQVNLKTsKKyAgICAgICAgICAgICpkX2RpZ2l0KysgPSAoZGlnaXQpKGRfY2FycnkgJiBQeUxvbmdfTUFTSyk7CisgICAgICAgICAgICBjX2NhcnJ5ID4+PSBQeUxvbmdfU0hJRlQ7CisgICAgICAgICAgICBkX2NhcnJ5ID4+PSBQeUxvbmdfU0hJRlQ7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KGNfY2FycnkgPT0gMCk7CisgICAgICAgIGFzc2VydChkX2NhcnJ5ID09IDApOworCisgICAgICAgIFB5X0lOQ1JFRihjKTsKKyAgICAgICAgUHlfSU5DUkVGKGQpOworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIFB5X0RFQ1JFRihiKTsKKyAgICAgICAgYSA9IGxvbmdfbm9ybWFsaXplKGMpOworICAgICAgICBiID0gbG9uZ19ub3JtYWxpemUoZCk7CisgICAgfQorICAgIFB5X1hERUNSRUYoYyk7CisgICAgUHlfWERFQ1JFRihkKTsKKworc2ltcGxlOgorICAgIGFzc2VydChQeV9SRUZDTlQoYSkgPiAwKTsKKyAgICBhc3NlcnQoUHlfUkVGQ05UKGIpID4gMCk7CisvKiBJc3N1ZSAjMjQ5OTk6IHVzZSB0d28gc2hpZnRzIGluc3RlYWQgb2YgIj4+IDIqUHlMb25nX1NISUZUIiB0byBhdm9pZAorICAgdW5kZWZpbmVkIGJlaGF2aW91ciB3aGVuIExPTkdfTUFYIHR5cGUgaXMgc21hbGxlciB0aGFuIDYwIGJpdHMgKi8KKyNpZiBMT05HX01BWCA+PiBQeUxvbmdfU0hJRlQgPj4gUHlMb25nX1NISUZUCisgICAgLyogYSBmaXRzIGludG8gYSBsb25nLCBzbyBiIG11c3QgdG9vICovCisgICAgeCA9IFB5TG9uZ19Bc0xvbmcoKFB5T2JqZWN0ICopYSk7CisgICAgeSA9IFB5TG9uZ19Bc0xvbmcoKFB5T2JqZWN0ICopYik7CisjZWxpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgJiYgUFlfTExPTkdfTUFYID4+IFB5TG9uZ19TSElGVCA+PiBQeUxvbmdfU0hJRlQKKyAgICB4ID0gUHlMb25nX0FzTG9uZ0xvbmcoKFB5T2JqZWN0ICopYSk7CisgICAgeSA9IFB5TG9uZ19Bc0xvbmdMb25nKChQeU9iamVjdCAqKWIpOworI2Vsc2UKKyMgZXJyb3IgIl9QeUxvbmdfR0NEIgorI2VuZGlmCisgICAgeCA9IFB5X0FCUyh4KTsKKyAgICB5ID0gUHlfQUJTKHkpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICBQeV9ERUNSRUYoYik7CisKKyAgICAvKiB1c3VhbCBFdWNsaWRlYW4gYWxnb3JpdGhtIGZvciBsb25ncyAqLworICAgIHdoaWxlICh5ICE9IDApIHsKKyAgICAgICAgdCA9IHk7CisgICAgICAgIHkgPSB4ICUgeTsKKyAgICAgICAgeCA9IHQ7CisgICAgfQorI2lmIExPTkdfTUFYID4+IFB5TG9uZ19TSElGVCA+PiBQeUxvbmdfU0hJRlQKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHgpOworI2VsaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpICYmIFBZX0xMT05HX01BWCA+PiBQeUxvbmdfU0hJRlQgPj4gUHlMb25nX1NISUZUCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoeCk7CisjZWxzZQorIyBlcnJvciAiX1B5TG9uZ19HQ0QiCisjZW5kaWYKKworZXJyb3I6CisgICAgUHlfREVDUkVGKGEpOworICAgIFB5X0RFQ1JFRihiKTsKKyAgICBQeV9YREVDUkVGKGMpOworICAgIFB5X1hERUNSRUYoZCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBsb25nX2Zsb2F0KFB5T2JqZWN0ICp2KQogewpAQCAtNDYzMCw3ICs0ODM2LDcgQEAKIHsKICAgICBQeV9zc2l6ZV90IHJlczsKIAotICAgIHJlcyA9IG9mZnNldG9mKFB5TG9uZ09iamVjdCwgb2JfZGlnaXQpICsgQUJTKFB5X1NJWkUodikpKnNpemVvZihkaWdpdCk7CisgICAgcmVzID0gb2Zmc2V0b2YoUHlMb25nT2JqZWN0LCBvYl9kaWdpdCkgKyBQeV9BQlMoUHlfU0laRSh2KSkqc2l6ZW9mKGRpZ2l0KTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7CiB9CiAKQEAgLTQ2NDQsNyArNDg1MCw3IEBACiAgICAgYXNzZXJ0KHYgIT0gTlVMTCk7CiAgICAgYXNzZXJ0KFB5TG9uZ19DaGVjayh2KSk7CiAKLSAgICBuZGlnaXRzID0gQUJTKFB5X1NJWkUodikpOworICAgIG5kaWdpdHMgPSBQeV9BQlMoUHlfU0laRSh2KSk7CiAgICAgaWYgKG5kaWdpdHMgPT0gMCkKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKIApAQCAtNDg0OSw3ICs1MDU1LDcgQEAKICAgICBpZiAodHlwZSAhPSAmUHlMb25nX1R5cGUgJiYgUHlUeXBlX0lzU3VidHlwZSh0eXBlLCAmUHlMb25nX1R5cGUpKSB7CiAgICAgICAgIFB5TG9uZ09iamVjdCAqbmV3b2JqOwogICAgICAgICBpbnQgaTsKLSAgICAgICAgUHlfc3NpemVfdCBuID0gQUJTKFB5X1NJWkUobG9uZ19vYmopKTsKKyAgICAgICAgUHlfc3NpemVfdCBuID0gUHlfQUJTKFB5X1NJWkUobG9uZ19vYmopKTsKIAogICAgICAgICBuZXdvYmogPSAoUHlMb25nT2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgbik7CiAgICAgICAgIGlmIChuZXdvYmogPT0gTlVMTCkgewpAQCAtNDg3NCw5ICs1MDgwLDcgQEAKIFxuXAogUmV0dXJuIHRoZSBpbnRlZ2VyIHJlcHJlc2VudGVkIGJ5IHRoZSBnaXZlbiBhcnJheSBvZiBieXRlcy5cblwKIFxuXAotVGhlIGJ5dGVzIGFyZ3VtZW50IG11c3QgZWl0aGVyIHN1cHBvcnQgdGhlIGJ1ZmZlciBwcm90b2NvbCBvciBiZSBhblxuXAotaXRlcmFibGUgb2JqZWN0IHByb2R1Y2luZyBieXRlcy4gIEJ5dGVzIGFuZCBieXRlYXJyYXkgYXJlIGV4YW1wbGVzIG9mXG5cCi1idWlsdC1pbiBvYmplY3RzIHRoYXQgc3VwcG9ydCB0aGUgYnVmZmVyIHByb3RvY29sLlxuXAorVGhlIGJ5dGVzIGFyZ3VtZW50IG11c3QgYmUgYSBieXRlcy1saWtlIG9iamVjdCAoZS5nLiBieXRlcyBvciBieXRlYXJyYXkpLlxuXAogXG5cCiBUaGUgYnl0ZW9yZGVyIGFyZ3VtZW50IGRldGVybWluZXMgdGhlIGJ5dGUgb3JkZXIgdXNlZCB0byByZXByZXNlbnQgdGhlXG5cCiBpbnRlZ2VyLiAgSWYgYnl0ZW9yZGVyIGlzICdiaWcnLCB0aGUgbW9zdCBzaWduaWZpY2FudCBieXRlIGlzIGF0IHRoZVxuXApAQCAtNTA5NSwxMyArNTI5OSwxMyBAQAogICAgICAgICAgICAgICogdG8gdGhlIG9yaWdpbmFsIHJlZmNudCArIDEgKi8KICAgICAgICAgICAgIFB5X1JFRkNOVChvcCkgPSByZWZjbnQgKyAxOwogICAgICAgICAgICAgYXNzZXJ0KFB5X1NJWkUob3ApID09IHNpemUpOwotICAgICAgICAgICAgYXNzZXJ0KHYtPm9iX2RpZ2l0WzBdID09IGFicyhpdmFsKSk7CisgICAgICAgICAgICBhc3NlcnQodi0+b2JfZGlnaXRbMF0gPT0gKGRpZ2l0KWFicyhpdmFsKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAodm9pZClQeU9iamVjdF9JTklUKHYsICZQeUxvbmdfVHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgUHlfU0laRSh2KSA9IHNpemU7Ci0gICAgICAgIHYtPm9iX2RpZ2l0WzBdID0gYWJzKGl2YWwpOworICAgICAgICB2LT5vYl9kaWdpdFswXSA9IChkaWdpdClhYnMoaXZhbCk7CiAgICAgfQogI2VuZGlmCiAgICAgLyogaW5pdGlhbGl6ZSBpbnRfaW5mbyAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tZW1vcnlvYmplY3QuYyBiL09iamVjdHMvbWVtb3J5b2JqZWN0LmMKaW5kZXggMGJlODQ5My4uMTAxNjJjYiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tZW1vcnlvYmplY3QuYworKysgYi9PYmplY3RzL21lbW9yeW9iamVjdC5jCkBAIC0xLDYgKzEsNyBAQAogLyogTWVtb3J5dmlldyBvYmplY3QgaW1wbGVtZW50YXRpb24gKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInB5c3RyaGV4LmgiCiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAKIApAQCAtNDgsOSArNDksNiBAQAogKi8KIAogCi0jZGVmaW5lIFhTVFJJTkdJWkUodikgI3YKLSNkZWZpbmUgU1RSSU5HSVpFKHYpIFhTVFJJTkdJWkUodikKLQogI2RlZmluZSBDSEVDS19NQlVGX1JFTEVBU0VEKG1idWYpIFwKICAgICBpZiAoKChfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICopbWJ1ZiktPmZsYWdzJl9QeV9NQU5BR0VEX0JVRkZFUl9SRUxFQVNFRCkgeyBcCiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTk1LDEwICsxOTMsMTAgQEAKICNkZWZpbmUgVklFV19BRERSKG12KSAoJigoUHlNZW1vcnlWaWV3T2JqZWN0ICopbXYpLT52aWV3KQogCiAvKiBDaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIHN1Ym9mZnNldHMgaW4gdGhlIGZpcnN0IGRpbWVuc2lvbi4gKi8KLSNkZWZpbmUgSEFWRV9QVFIoc3Vib2Zmc2V0cykgKHN1Ym9mZnNldHMgJiYgc3Vib2Zmc2V0c1swXSA+PSAwKQorI2RlZmluZSBIQVZFX1BUUihzdWJvZmZzZXRzLCBkaW0pIChzdWJvZmZzZXRzICYmIHN1Ym9mZnNldHNbZGltXSA+PSAwKQogLyogQWRqdXN0IHB0ciBpZiBzdWJvZmZzZXRzIGFyZSBwcmVzZW50LiAqLwotI2RlZmluZSBBREpVU1RfUFRSKHB0ciwgc3Vib2Zmc2V0cykgXAotICAgIChIQVZFX1BUUihzdWJvZmZzZXRzKSA/ICooKGNoYXIqKilwdHIpICsgc3Vib2Zmc2V0c1swXSA6IHB0cikKKyNkZWZpbmUgQURKVVNUX1BUUihwdHIsIHN1Ym9mZnNldHMsIGRpbSkgXAorICAgIChIQVZFX1BUUihzdWJvZmZzZXRzLCBkaW0pID8gKigoY2hhcioqKXB0cikgKyBzdWJvZmZzZXRzW2RpbV0gOiBwdHIpCiAKIC8qIE1lbW9yeXZpZXcgYnVmZmVyIHByb3BlcnRpZXMgKi8KICNkZWZpbmUgTVZfQ19DT05USUdVT1VTKGZsYWdzKSAoZmxhZ3MmKF9QeV9NRU1PUllWSUVXX1NDQUxBUnxfUHlfTUVNT1JZVklFV19DKSkKQEAgLTIyMyw3ICsyMjEsNyBAQAogCiAKIFB5RG9jX1NUUlZBUihtZW1vcnlfZG9jLAotIm1lbW9yeXZpZXcob2JqZWN0KVxuXAorIm1lbW9yeXZpZXcoJG1vZHVsZSwgb2JqZWN0KVxuLS1cblwKIFxuXAogQ3JlYXRlIGEgbmV3IG1lbW9yeXZpZXcgb2JqZWN0IHdoaWNoIHJlZmVyZW5jZXMgdGhlIGdpdmVuIG9iamVjdC4iKTsKIApAQCAtMzM1LDExICszMzMsMTEgQEAKICAgICAgICAgY2hhciAqcDsKICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICBmb3IgKGk9MCwgcD1tZW07IGkgPCBzaGFwZVswXTsgcCs9aXRlbXNpemUsIHNwdHIrPXNzdHJpZGVzWzBdLCBpKyspIHsKLSAgICAgICAgICAgIGNoYXIgKnhzcHRyID0gQURKVVNUX1BUUihzcHRyLCBzc3Vib2Zmc2V0cyk7CisgICAgICAgICAgICBjaGFyICp4c3B0ciA9IEFESlVTVF9QVFIoc3B0ciwgc3N1Ym9mZnNldHMsIDApOwogICAgICAgICAgICAgbWVtY3B5KHAsIHhzcHRyLCBpdGVtc2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgZm9yIChpPTAsIHA9bWVtOyBpIDwgc2hhcGVbMF07IHArPWl0ZW1zaXplLCBkcHRyKz1kc3RyaWRlc1swXSwgaSsrKSB7Ci0gICAgICAgICAgICBjaGFyICp4ZHB0ciA9IEFESlVTVF9QVFIoZHB0ciwgZHN1Ym9mZnNldHMpOworICAgICAgICAgICAgY2hhciAqeGRwdHIgPSBBREpVU1RfUFRSKGRwdHIsIGRzdWJvZmZzZXRzLCAwKTsKICAgICAgICAgICAgIG1lbWNweSh4ZHB0ciwgcCwgaXRlbXNpemUpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzY3LDggKzM2NSw4IEBACiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBkcHRyKz1kc3RyaWRlc1swXSwgc3B0cis9c3N0cmlkZXNbMF0sIGkrKykgewotICAgICAgICBjaGFyICp4ZHB0ciA9IEFESlVTVF9QVFIoZHB0ciwgZHN1Ym9mZnNldHMpOwotICAgICAgICBjaGFyICp4c3B0ciA9IEFESlVTVF9QVFIoc3B0ciwgc3N1Ym9mZnNldHMpOworICAgICAgICBjaGFyICp4ZHB0ciA9IEFESlVTVF9QVFIoZHB0ciwgZHN1Ym9mZnNldHMsIDApOworICAgICAgICBjaGFyICp4c3B0ciA9IEFESlVTVF9QVFIoc3B0ciwgc3N1Ym9mZnNldHMsIDApOwogCiAgICAgICAgIGNvcHlfcmVjKHNoYXBlKzEsIG5kaW0tMSwgaXRlbXNpemUsCiAgICAgICAgICAgICAgICAgIHhkcHRyLCBkc3RyaWRlcysxLCBkc3Vib2Zmc2V0cyA/IGRzdWJvZmZzZXRzKzEgOiBOVUxMLApAQCAtNjYwLDcgKzY1OCw3IEBACiAgICAgaWYgKHNyYy0+bmRpbSA+IFB5QlVGX01BWF9ORElNKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgIm1lbW9yeXZpZXc6IG51bWJlciBvZiBkaW1lbnNpb25zIG11c3Qgbm90IGV4Y2VlZCAiCi0gICAgICAgICAgICBTVFJJTkdJWkUoUHlCVUZfTUFYX05ESU0pKTsKKyAgICAgICAgICAgIFB5X1NUUklOR0lGWShQeUJVRl9NQVhfTkRJTSkpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTc5NSw3ICs3OTMsNyBAQAogICAgIH0KIAogICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICJtZW1vcnl2aWV3OiAlLjIwMHMgb2JqZWN0IGRvZXMgbm90IGhhdmUgdGhlIGJ1ZmZlciBpbnRlcmZhY2UiLAorICAgICAgICAibWVtb3J5dmlldzogYSBieXRlcy1saWtlIG9iamVjdCBpcyByZXF1aXJlZCwgbm90ICclLjIwMHMnIiwKICAgICAgICAgUHlfVFlQRSh2KS0+dHBfbmFtZSk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC04OTUsNyArODkzLDcgQEAKICAgIFRoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiB0aGUgaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzIGlzIHRoZSBzYW1lCiAgICAoaS5lLiB0b2xpc3QoaW5wdXQpID09IHRvbGlzdChvdXRwdXQpKSwgYnV0IHRoZSBwaHlzaWNhbCBsYXlvdXQgaW4KICAgIG1lbW9yeSBjYW4gYmUgZXhwbGljaXRseSBjaG9zZW4uCi0gCisKICAgIEFzIHVzdWFsLCBpZiBidWZmZXJ0eXBlPVB5QlVGX1dSSVRFLCB0aGUgZXhwb3J0ZXIncyBidWZmZXIgbXVzdCBiZSB3cml0YWJsZSwKICAgIG90aGVyd2lzZSBpdCBtYXkgYmUgd3JpdGFibGUgb3IgcmVhZC1vbmx5LgogCkBAIC0xMTk5LDEzICsxMTk3LDYgQEAKICAgICBhc3NlcnQodmlldy0+c3RyaWRlcyA9PSBtdi0+b2JfYXJyYXkgKyB2aWV3LT5uZGltKTsKICAgICBhc3NlcnQodmlldy0+c3Vib2Zmc2V0cyA9PSBtdi0+b2JfYXJyYXkgKyAyKnZpZXctPm5kaW0pOwogCi0gICAgaWYgKGdldF9uYXRpdmVfZm10Y2hhcigmc3JjY2hhciwgdmlldy0+Zm9ybWF0KSA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAibWVtb3J5dmlldzogc291cmNlIGZvcm1hdCBtdXN0IGJlIGEgbmF0aXZlIHNpbmdsZSBjaGFyYWN0ZXIgIgotICAgICAgICAgICAgImZvcm1hdCBwcmVmaXhlZCB3aXRoIGFuIG9wdGlvbmFsICdAJyIpOwotICAgICAgICByZXR1cm4gcmV0OwotICAgIH0KLQogICAgIGFzY2lpZm10ID0gUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcoZm9ybWF0KTsKICAgICBpZiAoYXNjaWlmbXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIHJldDsKQEAgLTEyMTgsNyArMTIwOSw4IEBACiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAotICAgIGlmICghSVNfQllURV9GT1JNQVQoc3JjY2hhcikgJiYgIUlTX0JZVEVfRk9STUFUKGRlc3RjaGFyKSkgeworICAgIGlmICgoZ2V0X25hdGl2ZV9mbXRjaGFyKCZzcmNjaGFyLCB2aWV3LT5mb3JtYXQpIDwgMCB8fAorICAgICAgICAgIUlTX0JZVEVfRk9STUFUKHNyY2NoYXIpKSAmJiAhSVNfQllURV9GT1JNQVQoZGVzdGNoYXIpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAibWVtb3J5dmlldzogY2Fubm90IGNhc3QgYmV0d2VlbiB0d28gbm9uLWJ5dGUgZm9ybWF0cyIpOwogICAgICAgICBnb3RvIG91dDsKQEAgLTEyNDQsNyArMTIzNiw3IEBACiAgICAgdmlldy0+c3Vib2Zmc2V0cyA9IE5VTEw7CiAKICAgICBpbml0X2ZsYWdzKG12KTsKLSAKKwogICAgIHJldCA9IDA7CiAKIG91dDoKQEAgLTEzODksNyArMTM4MSw3IEBACiAgICAgICAgIGlmIChuZGltID4gUHlCVUZfTUFYX05ESU0pIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICJtZW1vcnl2aWV3OiBudW1iZXIgb2YgZGltZW5zaW9ucyBtdXN0IG5vdCBleGNlZWQgIgotICAgICAgICAgICAgICAgIFNUUklOR0laRShQeUJVRl9NQVhfTkRJTSkpOworICAgICAgICAgICAgICAgIFB5X1NUUklOR0lGWShQeUJVRl9NQVhfTkRJTSkpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHNlbGYtPnZpZXcubmRpbSAhPSAxICYmIG5kaW0gIT0gMSkgewpAQCAtMjA2MCw3ICsyMDUyLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgc2hhcGVbMF07IHB0cis9c3RyaWRlc1swXSwgaSsrKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnhwdHIgPSBBREpVU1RfUFRSKHB0ciwgc3Vib2Zmc2V0cyk7CisgICAgICAgIGNvbnN0IGNoYXIgKnhwdHIgPSBBREpVU1RfUFRSKHB0ciwgc3Vib2Zmc2V0cywgMCk7CiAgICAgICAgIGl0ZW0gPSB1bnBhY2tfc2luZ2xlKHhwdHIsIGZtdCk7CiAgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihsc3QpOwpAQCAtMjA5NCw3ICsyMDg2LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgc2hhcGVbMF07IHB0cis9c3RyaWRlc1swXSwgaSsrKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnhwdHIgPSBBREpVU1RfUFRSKHB0ciwgc3Vib2Zmc2V0cyk7CisgICAgICAgIGNvbnN0IGNoYXIgKnhwdHIgPSBBREpVU1RfUFRSKHB0ciwgc3Vib2Zmc2V0cywgMCk7CiAgICAgICAgIGl0ZW0gPSB0b2xpc3RfcmVjKHhwdHIsIG5kaW0tMSwgc2hhcGUrMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlcysxLCBzdWJvZmZzZXRzID8gc3Vib2Zmc2V0cysxIDogTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10KTsKQEAgLTIxNjEsNiArMjE1MywyOSBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2hleChQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBQeV9idWZmZXIgKnNyYyA9IFZJRVdfQUREUihzZWxmKTsKKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgUHlPYmplY3QgKnJldDsKKworICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOworCisgICAgaWYgKE1WX0NfQ09OVElHVU9VUyhzZWxmLT5mbGFncykpIHsKKyAgICAgICAgcmV0dXJuIF9QeV9zdHJoZXgoc3JjLT5idWYsIHNyYy0+bGVuKTsKKyAgICB9CisKKyAgICBieXRlcyA9IG1lbW9yeV90b2J5dGVzKHNlbGYsIGR1bW15KTsKKyAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXQgPSBfUHlfc3RyaGV4KFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgUHlfU0laRShieXRlcykpOworICAgIFB5X0RFQ1JFRihieXRlcyk7CisKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgogbWVtb3J5X3JlcHIoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmKQogewogICAgIGlmIChzZWxmLT5mbGFncyAmIF9QeV9NRU1PUllWSUVXX1JFTEVBU0VEKQpAQCAtMjE3NCwzMyArMjE4OSw2NiBAQAogLyogICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4aW5nIGFuZCBzbGljaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0vKiBHZXQgdGhlIHBvaW50ZXIgdG8gdGhlIGl0ZW0gYXQgaW5kZXguICovCiBzdGF0aWMgY2hhciAqCi1wdHJfZnJvbV9pbmRleChQeV9idWZmZXIgKnZpZXcsIFB5X3NzaXplX3QgaW5kZXgpCitsb29rdXBfZGltZW5zaW9uKFB5X2J1ZmZlciAqdmlldywgY2hhciAqcHRyLCBpbnQgZGltLCBQeV9zc2l6ZV90IGluZGV4KQogewotICAgIGNoYXIgKnB0cjsKLSAgICBQeV9zc2l6ZV90IG5pdGVtczsgLyogaXRlbXMgaW4gdGhlIGZpcnN0IGRpbWVuc2lvbiAqLworICAgIFB5X3NzaXplX3Qgbml0ZW1zOyAvKiBpdGVtcyBpbiB0aGUgZ2l2ZW4gZGltZW5zaW9uICovCiAKICAgICBhc3NlcnQodmlldy0+c2hhcGUpOwogICAgIGFzc2VydCh2aWV3LT5zdHJpZGVzKTsKIAotICAgIG5pdGVtcyA9IHZpZXctPnNoYXBlWzBdOworICAgIG5pdGVtcyA9IHZpZXctPnNoYXBlW2RpbV07CiAgICAgaWYgKGluZGV4IDwgMCkgewogICAgICAgICBpbmRleCArPSBuaXRlbXM7CiAgICAgfQogICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gbml0ZW1zKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAiaW5kZXggb3V0IG9mIGJvdW5kcyIpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW5kZXhFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJpbmRleCBvdXQgb2YgYm91bmRzIG9uIGRpbWVuc2lvbiAlZCIsIGRpbSArIDEpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBwdHIgPSAoY2hhciAqKXZpZXctPmJ1ZjsKLSAgICBwdHIgKz0gdmlldy0+c3RyaWRlc1swXSAqIGluZGV4OworICAgIHB0ciArPSB2aWV3LT5zdHJpZGVzW2RpbV0gKiBpbmRleDsKIAotICAgIHB0ciA9IEFESlVTVF9QVFIocHRyLCB2aWV3LT5zdWJvZmZzZXRzKTsKKyAgICBwdHIgPSBBREpVU1RfUFRSKHB0ciwgdmlldy0+c3Vib2Zmc2V0cywgZGltKTsKIAogICAgIHJldHVybiBwdHI7CiB9CiAKKy8qIEdldCB0aGUgcG9pbnRlciB0byB0aGUgaXRlbSBhdCBpbmRleC4gKi8KK3N0YXRpYyBjaGFyICoKK3B0cl9mcm9tX2luZGV4KFB5X2J1ZmZlciAqdmlldywgUHlfc3NpemVfdCBpbmRleCkKK3sKKyAgICBjaGFyICpwdHIgPSAoY2hhciAqKXZpZXctPmJ1ZjsKKyAgICByZXR1cm4gbG9va3VwX2RpbWVuc2lvbih2aWV3LCBwdHIsIDAsIGluZGV4KTsKK30KKworLyogR2V0IHRoZSBwb2ludGVyIHRvIHRoZSBpdGVtIGF0IHR1cGxlLiAqLworc3RhdGljIGNoYXIgKgorcHRyX2Zyb21fdHVwbGUoUHlfYnVmZmVyICp2aWV3LCBQeU9iamVjdCAqdHVwKQoreworICAgIGNoYXIgKnB0ciA9IChjaGFyICopdmlldy0+YnVmOworICAgIFB5X3NzaXplX3QgZGltLCBuaW5kaWNlcyA9IFB5VHVwbGVfR0VUX1NJWkUodHVwKTsKKworICAgIGlmIChuaW5kaWNlcyA+IHZpZXctPm5kaW0pIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgaW5kZXggJXpkLWRpbWVuc2lvbiB2aWV3IHdpdGggJXpkLWVsZW1lbnQgdHVwbGUiLAorICAgICAgICAgICAgICAgICAgICAgdmlldy0+bmRpbSwgbmluZGljZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGRpbSA9IDA7IGRpbSA8IG5pbmRpY2VzOyBkaW0rKykgeworICAgICAgICBQeV9zc2l6ZV90IGluZGV4OworICAgICAgICBpbmRleCA9IFB5TnVtYmVyX0FzU3NpemVfdChQeVR1cGxlX0dFVF9JVEVNKHR1cCwgZGltKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfSW5kZXhFcnJvcik7CisgICAgICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHB0ciA9IGxvb2t1cF9kaW1lbnNpb24odmlldywgcHRyLCAoaW50KWRpbSwgaW5kZXgpOworICAgICAgICBpZiAocHRyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIHB0cjsKK30KKwogLyogUmV0dXJuIHRoZSBpdGVtIGF0IGluZGV4LiBJbiBhIG9uZS1kaW1lbnNpb25hbCB2aWV3LCB0aGlzIGlzIGFuIG9iamVjdAogICAgd2l0aCB0aGUgdHlwZSBzcGVjaWZpZWQgYnkgdmlldy0+Zm9ybWF0LiBPdGhlcndpc2UsIHRoZSBpdGVtIGlzIGEgc3ViLXZpZXcuCiAgICBUaGUgZnVuY3Rpb24gaXMgdXNlZCBpbiBtZW1vcnlfc3Vic2NyaXB0KCkgYW5kIG1lbW9yeV9hc19zZXF1ZW5jZS4gKi8KQEAgLTIyMzIsNiArMjI4MCwzMiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKiBSZXR1cm4gdGhlIGl0ZW0gYXQgcG9zaXRpb24gKmtleSogKGEgdHVwbGUgb2YgaW5kaWNlcykuICovCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2l0ZW1fbXVsdGkoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdHVwKQoreworICAgIFB5X2J1ZmZlciAqdmlldyA9ICYoc2VsZi0+dmlldyk7CisgICAgY29uc3QgY2hhciAqZm10OworICAgIFB5X3NzaXplX3QgbmluZGljZXMgPSBQeVR1cGxlX0dFVF9TSVpFKHR1cCk7CisgICAgY2hhciAqcHRyOworCisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisKKyAgICBmbXQgPSBhZGp1c3RfZm10KHZpZXcpOworICAgIGlmIChmbXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAobmluZGljZXMgPCB2aWV3LT5uZGltKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInN1Yi12aWV3cyBhcmUgbm90IGltcGxlbWVudGVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwdHIgPSBwdHJfZnJvbV90dXBsZSh2aWV3LCB0dXApOworICAgIGlmIChwdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHVucGFja19zaW5nbGUocHRyLCBmbXQpOworfQorCiBQeV9MT0NBTF9JTkxJTkUoaW50KQogaW5pdF9zbGljZShQeV9idWZmZXIgKmJhc2UsIFB5T2JqZWN0ICprZXksIGludCBkaW0pCiB7CkBAIC0yMjgwLDYgKzIzNTQsMjIgQEAKICAgICByZXR1cm4gMTsKIH0KIAorc3RhdGljIFB5X3NzaXplX3QKK2lzX211bHRpaW5kZXgoUHlPYmplY3QgKmtleSkKK3sKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisKKyAgICBpZiAoIVB5VHVwbGVfQ2hlY2soa2V5KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgc2l6ZSA9IFB5VHVwbGVfR0VUX1NJWkUoa2V5KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICp4ID0gUHlUdXBsZV9HRVRfSVRFTShrZXksIGkpOworICAgICAgICBpZiAoIVB5SW5kZXhfQ2hlY2soeCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKIC8qIG12W29ial0gcmV0dXJucyBhbiBvYmplY3QgaG9sZGluZyB0aGUgZGF0YSBmb3Igb25lIGVsZW1lbnQgaWYgb2JqCiAgICBmdWxseSBpbmRleGVzIHRoZSBtZW1vcnl2aWV3IG9yIGFub3RoZXIgbWVtb3J5dmlldyBvYmplY3QgaWYgaXQKICAgIGRvZXMgbm90LgpAQCAtMjI5MSw3ICsyMzgxLDcgQEAKIHsKICAgICBQeV9idWZmZXIgKnZpZXc7CiAgICAgdmlldyA9ICYoc2VsZi0+dmlldyk7Ci0gICAgCisKICAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKIAogICAgIGlmICh2aWV3LT5uZGltID09IDApIHsKQEAgLTIzMzUsNiArMjQyNSw5IEBACiAKICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNsaWNlZDsKICAgICB9CisgICAgZWxzZSBpZiAoaXNfbXVsdGlpbmRleChrZXkpKSB7CisgICAgICAgIHJldHVybiBtZW1vcnlfaXRlbV9tdWx0aShzZWxmLCBrZXkpOworICAgIH0KICAgICBlbHNlIGlmIChpc19tdWx0aXNsaWNlKGtleSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCiAgICAgICAgICAgICAibXVsdGktZGltZW5zaW9uYWwgc2xpY2luZyBpcyBub3QgaW1wbGVtZW50ZWQiKTsKQEAgLTIzNzksMTQgKzI0NzIsMTUgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAodmlldy0+bmRpbSAhPSAxKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAotICAgICAgICAgICAgIm1lbW9yeXZpZXcgYXNzaWdubWVudHMgYXJlIGN1cnJlbnRseSByZXN0cmljdGVkIHRvIG5kaW0gPSAxIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAKICAgICBpZiAoUHlJbmRleF9DaGVjayhrZXkpKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeU51bWJlcl9Bc1NzaXplX3Qoa2V5LCBQeUV4Y19JbmRleEVycm9yKTsKKyAgICAgICAgUHlfc3NpemVfdCBpbmRleDsKKyAgICAgICAgaWYgKDEgPCB2aWV3LT5uZGltKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3ViLXZpZXdzIGFyZSBub3QgaW1wbGVtZW50ZWQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpbmRleCA9IFB5TnVtYmVyX0FzU3NpemVfdChrZXksIFB5RXhjX0luZGV4RXJyb3IpOwogICAgICAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgcHRyID0gcHRyX2Zyb21faW5kZXgodmlldywgaW5kZXgpOwpAQCAtMjQyMSw3ICsyNTE1LDE5IEBACiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNyYyk7CiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soa2V5KSB8fCBpc19tdWx0aXNsaWNlKGtleSkpIHsKKyAgICBpZiAoaXNfbXVsdGlpbmRleChrZXkpKSB7CisgICAgICAgIGNoYXIgKnB0cjsKKyAgICAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoa2V5KSA8IHZpZXctPm5kaW0pIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdWItdmlld3MgYXJlIG5vdCBpbXBsZW1lbnRlZCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHB0ciA9IHB0cl9mcm9tX3R1cGxlKHZpZXcsIGtleSk7CisgICAgICAgIGlmIChwdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIHBhY2tfc2luZ2xlKHB0ciwgdmFsdWUsIGZtdCk7CisgICAgfQorICAgIGlmIChQeVNsaWNlX0NoZWNrKGtleSkgfHwgaXNfbXVsdGlzbGljZShrZXkpKSB7CiAgICAgICAgIC8qIENhbGwgbWVtb3J5X3N1YnNjcmlwdCgpIHRvIHByb2R1Y2UgYSBzbGljZWQgbHZhbHVlLCB0aGVuIGNvcHkKICAgICAgICAgICAgcnZhbHVlIGludG8gbHZhbHVlLiBUaGlzIGlzIGFscmVhZHkgaW1wbGVtZW50ZWQgaW4gX3Rlc3RidWZmZXIuYy4gKi8KICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCkBAIC0yNTk0LDggKzI3MDAsOCBAQAogICAgIGludCBlcXVhbDsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBzaGFwZVswXTsgcCs9cHN0cmlkZXNbMF0sIHErPXFzdHJpZGVzWzBdLCBpKyspIHsKLSAgICAgICAgY29uc3QgY2hhciAqeHAgPSBBREpVU1RfUFRSKHAsIHBzdWJvZmZzZXRzKTsKLSAgICAgICAgY29uc3QgY2hhciAqeHEgPSBBREpVU1RfUFRSKHEsIHFzdWJvZmZzZXRzKTsKKyAgICAgICAgY29uc3QgY2hhciAqeHAgPSBBREpVU1RfUFRSKHAsIHBzdWJvZmZzZXRzLCAwKTsKKyAgICAgICAgY29uc3QgY2hhciAqeHEgPSBBREpVU1RfUFRSKHEsIHFzdWJvZmZzZXRzLCAwKTsKICAgICAgICAgZXF1YWwgPSB1bnBhY2tfY21wKHhwLCB4cSwgZm10LCB1bnBhY2tfcCwgdW5wYWNrX3EpOwogICAgICAgICBpZiAoZXF1YWwgPD0gMCkKICAgICAgICAgICAgIHJldHVybiBlcXVhbDsKQEAgLTI2MjksOCArMjczNSw4IEBACiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBwKz1wc3RyaWRlc1swXSwgcSs9cXN0cmlkZXNbMF0sIGkrKykgewotICAgICAgICBjb25zdCBjaGFyICp4cCA9IEFESlVTVF9QVFIocCwgcHN1Ym9mZnNldHMpOwotICAgICAgICBjb25zdCBjaGFyICp4cSA9IEFESlVTVF9QVFIocSwgcXN1Ym9mZnNldHMpOworICAgICAgICBjb25zdCBjaGFyICp4cCA9IEFESlVTVF9QVFIocCwgcHN1Ym9mZnNldHMsIDApOworICAgICAgICBjb25zdCBjaGFyICp4cSA9IEFESlVTVF9QVFIocSwgcXN1Ym9mZnNldHMsIDApOwogICAgICAgICBlcXVhbCA9IGNtcF9yZWMoeHAsIHhxLCBuZGltLTEsIHNoYXBlKzEsCiAgICAgICAgICAgICAgICAgICAgICAgICBwc3RyaWRlcysxLCBwc3Vib2Zmc2V0cyA/IHBzdWJvZmZzZXRzKzEgOiBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgcXN0cmlkZXMrMSwgcXN1Ym9mZnNldHMgPyBxc3Vib2Zmc2V0cysxIDogTlVMTCwKQEAgLTI5NDgsNiArMzA1NCw3IEBACiBQeURvY19TVFJWQVIobWVtb3J5X2NvbnRpZ3VvdXNfZG9jLAogICAgICAgICAgICAgICJBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgY29udGlndW91cy4iKTsKIAorCiBzdGF0aWMgUHlHZXRTZXREZWYgbWVtb3J5X2dldHNldGxpc3RbXSA9IHsKICAgICB7Im9iaiIsICAgICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X29ial9nZXQsICAgICAgICBOVUxMLCBtZW1vcnlfb2JqX2RvY30sCiAgICAgeyJuYnl0ZXMiLCAgICAgICAgICAoZ2V0dGVyKW1lbW9yeV9uYnl0ZXNfZ2V0LCAgICAgTlVMTCwgbWVtb3J5X25ieXRlc19kb2N9LApAQCAtMjk2NSwyNSArMzA3MiwzMCBAQAogfTsKIAogUHlEb2NfU1RSVkFSKG1lbW9yeV9yZWxlYXNlX2RvYywKLSJNLnJlbGVhc2UoKSAtPiBOb25lXG5cCisicmVsZWFzZSgkc2VsZiwgLylcbi0tXG5cCiBcblwKIFJlbGVhc2UgdGhlIHVuZGVybHlpbmcgYnVmZmVyIGV4cG9zZWQgYnkgdGhlIG1lbW9yeXZpZXcgb2JqZWN0LiIpOwogUHlEb2NfU1RSVkFSKG1lbW9yeV90b2J5dGVzX2RvYywKLSJNLnRvYnl0ZXMoKSAtPiBieXRlc1xuXAorInRvYnl0ZXMoJHNlbGYsIC8pXG4tLVxuXAogXG5cCiBSZXR1cm4gdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBhcyBhIGJ5dGUgc3RyaW5nLiIpOworUHlEb2NfU1RSVkFSKG1lbW9yeV9oZXhfZG9jLAorImhleCgkc2VsZiwgLylcbi0tXG5cCitcblwKK1JldHVybiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIG51bWJlcnMuIik7CiBQeURvY19TVFJWQVIobWVtb3J5X3RvbGlzdF9kb2MsCi0iTS50b2xpc3QoKSAtPiBsaXN0XG5cCisidG9saXN0KCRzZWxmLCAvKVxuLS1cblwKIFxuXAogUmV0dXJuIHRoZSBkYXRhIGluIHRoZSBidWZmZXIgYXMgYSBsaXN0IG9mIGVsZW1lbnRzLiIpOwogUHlEb2NfU1RSVkFSKG1lbW9yeV9jYXN0X2RvYywKLSJNLmNhc3QoZm9ybWF0Wywgc2hhcGVdKSAtPiBtZW1vcnl2aWV3XG5cCisiY2FzdCgkc2VsZiwgLywgZm9ybWF0LCAqLCBzaGFwZSlcbi0tXG5cCiBcblwKIENhc3QgYSBtZW1vcnl2aWV3IHRvIGEgbmV3IGZvcm1hdCBvciBzaGFwZS4iKTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIG1lbW9yeV9tZXRob2RzW10gPSB7CiAgICAgeyJyZWxlYXNlIiwgICAgIChQeUNGdW5jdGlvbiltZW1vcnlfcmVsZWFzZSwgTUVUSF9OT0FSR1MsIG1lbW9yeV9yZWxlYXNlX2RvY30sCiAgICAgeyJ0b2J5dGVzIiwgICAgIChQeUNGdW5jdGlvbiltZW1vcnlfdG9ieXRlcywgTUVUSF9OT0FSR1MsIG1lbW9yeV90b2J5dGVzX2RvY30sCisgICAgeyJoZXgiLCAgICAgICAgIChQeUNGdW5jdGlvbiltZW1vcnlfaGV4LCBNRVRIX05PQVJHUywgbWVtb3J5X2hleF9kb2N9LAogICAgIHsidG9saXN0IiwgICAgICAoUHlDRnVuY3Rpb24pbWVtb3J5X3RvbGlzdCwgTUVUSF9OT0FSR1MsIG1lbW9yeV90b2xpc3RfZG9jfSwKICAgICB7ImNhc3QiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKW1lbW9yeV9jYXN0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgbWVtb3J5X2Nhc3RfZG9jfSwKICAgICB7Il9fZW50ZXJfXyIsICAgbWVtb3J5X2VudGVyLCBNRVRIX05PQVJHUywgTlVMTH0sCmRpZmYgLS1naXQgYS9PYmplY3RzL21ldGhvZG9iamVjdC5jIGIvT2JqZWN0cy9tZXRob2RvYmplY3QuYwppbmRleCA5YjZlNWU0Li45NDYzNTdmIDEwMDY0NAotLS0gYS9PYmplY3RzL21ldGhvZG9iamVjdC5jCisrKyBiL09iamVjdHMvbWV0aG9kb2JqZWN0LmMKQEAgLTM3LDYgKzM3LDcgQEAKICAgICAgICAgaWYgKG9wID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgb3AtPm1fd2Vha3JlZmxpc3QgPSBOVUxMOwogICAgIG9wLT5tX21sID0gbWw7CiAgICAgUHlfWElOQ1JFRihzZWxmKTsKICAgICBvcC0+bV9zZWxmID0gc2VsZjsKQEAgLTc3LDY4ICs3OCw3MSBAQAogfQogCiBQeU9iamVjdCAqCi1QeUNGdW5jdGlvbl9DYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJnLCBQeU9iamVjdCAqa3cpCitQeUNGdW5jdGlvbl9DYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0jZGVmaW5lIENIRUNLX1JFU1VMVChyZXMpIGFzc2VydChyZXMgIT0gTlVMTCB8fCBQeUVycl9PY2N1cnJlZCgpKQotCiAgICAgUHlDRnVuY3Rpb25PYmplY3QqIGYgPSAoUHlDRnVuY3Rpb25PYmplY3QqKWZ1bmM7CiAgICAgUHlDRnVuY3Rpb24gbWV0aCA9IFB5Q0Z1bmN0aW9uX0dFVF9GVU5DVElPTihmdW5jKTsKICAgICBQeU9iamVjdCAqc2VsZiA9IFB5Q0Z1bmN0aW9uX0dFVF9TRUxGKGZ1bmMpOwotICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlPYmplY3QgKmFyZywgKnJlczsKICAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgaW50IGZsYWdzOwogCi0gICAgc3dpdGNoIChQeUNGdW5jdGlvbl9HRVRfRkxBR1MoZnVuYykgJiB+KE1FVEhfQ0xBU1MgfCBNRVRIX1NUQVRJQyB8IE1FVEhfQ09FWElTVCkpIHsKLSAgICBjYXNlIE1FVEhfVkFSQVJHUzoKLSAgICAgICAgaWYgKGt3ID09IE5VTEwgfHwgUHlEaWN0X1NpemUoa3cpID09IDApIHsKLSAgICAgICAgICAgIHJlcyA9ICgqbWV0aCkoc2VsZiwgYXJnKTsKLSAgICAgICAgICAgIENIRUNLX1JFU1VMVChyZXMpOwotICAgICAgICAgICAgcmV0dXJuIHJlczsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFM6Ci0gICAgICAgIHJlcyA9ICgqKFB5Q0Z1bmN0aW9uV2l0aEtleXdvcmRzKW1ldGgpKHNlbGYsIGFyZywga3cpOwotICAgICAgICBDSEVDS19SRVNVTFQocmVzKTsKLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICBjYXNlIE1FVEhfTk9BUkdTOgotICAgICAgICBpZiAoa3cgPT0gTlVMTCB8fCBQeURpY3RfU2l6ZShrdykgPT0gMCkgewotICAgICAgICAgICAgc2l6ZSA9IFB5VHVwbGVfR0VUX1NJWkUoYXJnKTsKLSAgICAgICAgICAgIGlmIChzaXplID09IDApIHsKLSAgICAgICAgICAgICAgICByZXMgPSAoKm1ldGgpKHNlbGYsIE5VTEwpOwotICAgICAgICAgICAgICAgIENIRUNLX1JFU1VMVChyZXMpOwotICAgICAgICAgICAgICAgIHJldHVybiByZXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBubyBhcmd1bWVudHMgKCV6ZCBnaXZlbikiLAotICAgICAgICAgICAgICAgIGYtPm1fbWwtPm1sX25hbWUsIHNpemUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNRVRIX086Ci0gICAgICAgIGlmIChrdyA9PSBOVUxMIHx8IFB5RGljdF9TaXplKGt3KSA9PSAwKSB7Ci0gICAgICAgICAgICBzaXplID0gUHlUdXBsZV9HRVRfU0laRShhcmcpOwotICAgICAgICAgICAgaWYgKHNpemUgPT0gMSkgewotICAgICAgICAgICAgICAgIHJlcyA9ICgqbWV0aCkoc2VsZiwgUHlUdXBsZV9HRVRfSVRFTShhcmcsIDApKTsKLSAgICAgICAgICAgICAgICBDSEVDS19SRVNVTFQocmVzKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAiJS4yMDBzKCkgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQgKCV6ZCBnaXZlbikiLAotICAgICAgICAgICAgICAgIGYtPm1fbWwtPm1sX25hbWUsIHNpemUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiQmFkIGNhbGwgZmxhZ3MgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgIlB5Q0Z1bmN0aW9uX0NhbGwuIE1FVEhfT0xEQVJHUyBpcyBubyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAibG9uZ2VyIHN1cHBvcnRlZCEiKTsKKyAgICAvKiBQeUNGdW5jdGlvbl9DYWxsKCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uIHNldCwKKyAgICAgICBiZWNhdXNlIGl0IG1heSBjbGVhciBpdCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgYW5kIHNvIHRoZQorICAgICAgIGNhbGxlciBsb3NlcyBpdHMgZXhjZXB0aW9uICovCisgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKIAotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmbGFncyA9IFB5Q0Z1bmN0aW9uX0dFVF9GTEFHUyhmdW5jKSAmIH4oTUVUSF9DTEFTUyB8IE1FVEhfU1RBVElDIHwgTUVUSF9DT0VYSVNUKTsKKworICAgIGlmIChmbGFncyA9PSAoTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUykpIHsKKyAgICAgICAgcmVzID0gKCooUHlDRnVuY3Rpb25XaXRoS2V5d29yZHMpbWV0aCkoc2VsZiwgYXJncywga3dkcyk7CiAgICAgfQotICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICIlLjIwMHMoKSB0YWtlcyBubyBrZXl3b3JkIGFyZ3VtZW50cyIsCi0gICAgICAgICAgICAgICAgIGYtPm1fbWwtPm1sX25hbWUpOwotICAgIHJldHVybiBOVUxMOworICAgIGVsc2UgeworICAgICAgICBpZiAoa3dkcyAhPSBOVUxMICYmIFB5RGljdF9TaXplKGt3ZHMpICE9IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICIlLjIwMHMoKSB0YWtlcyBubyBrZXl3b3JkIGFyZ3VtZW50cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZi0+bV9tbC0+bWxfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogCi0jdW5kZWYgQ0hFQ0tfUkVTVUxUCisgICAgICAgIHN3aXRjaCAoZmxhZ3MpIHsKKyAgICAgICAgY2FzZSBNRVRIX1ZBUkFSR1M6CisgICAgICAgICAgICByZXMgPSAoKm1ldGgpKHNlbGYsIGFyZ3MpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNRVRIX05PQVJHUzoKKyAgICAgICAgICAgIHNpemUgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgICAgICAgICAgaWYgKHNpemUgIT0gMCkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBubyBhcmd1bWVudHMgKCV6ZCBnaXZlbikiLAorICAgICAgICAgICAgICAgICAgICBmLT5tX21sLT5tbF9uYW1lLCBzaXplKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmVzID0gKCptZXRoKShzZWxmLCBOVUxMKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTUVUSF9POgorICAgICAgICAgICAgc2l6ZSA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CisgICAgICAgICAgICBpZiAoc2l6ZSAhPSAxKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIiUuMjAwcygpIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50ICglemQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICAgICAgZi0+bV9tbC0+bWxfbmFtZSwgc2l6ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFyZyA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7CisgICAgICAgICAgICByZXMgPSAoKm1ldGgpKHNlbGYsIGFyZyk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCYWQgY2FsbCBmbGFncyBpbiBQeUNGdW5jdGlvbl9DYWxsLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1FVEhfT0xEQVJHUyBpcyBubyBsb25nZXIgc3VwcG9ydGVkISIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuYywgcmVzLCBOVUxMKTsKIH0KIAogLyogTWV0aG9kcyAodGhlIHN0YW5kYXJkIGJ1aWx0LWluIG1ldGhvZHMsIHRoYXQgaXMpICovCkBAIC0xNDcsNiArMTUxLDkgQEAKIG1ldGhfZGVhbGxvYyhQeUNGdW5jdGlvbk9iamVjdCAqbSkKIHsKICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhtKTsKKyAgICBpZiAobS0+bV93ZWFrcmVmbGlzdCAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnMoKFB5T2JqZWN0KikgbSk7CisgICAgfQogICAgIFB5X1hERUNSRUYobS0+bV9zZWxmKTsKICAgICBQeV9YREVDUkVGKG0tPm1fbW9kdWxlKTsKICAgICBpZiAobnVtZnJlZSA8IFB5Q0Z1bmN0aW9uX01BWEZSRUVMSVNUKSB7CkBAIC0zNTIsNyArMzU5LDcgQEAKICAgICAodHJhdmVyc2Vwcm9jKW1ldGhfdHJhdmVyc2UsICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIG1ldGhfcmljaGNvbXBhcmUsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgb2Zmc2V0b2YoUHlDRnVuY3Rpb25PYmplY3QsIG1fd2Vha3JlZmxpc3QpLCAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBtZXRoX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvbW9kdWxlb2JqZWN0LmMgYi9PYmplY3RzL21vZHVsZW9iamVjdC5jCmluZGV4IGY1MDk5MzIuLjI0YzVmNGMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbW9kdWxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9tb2R1bGVvYmplY3QuYwpAQCAtMjAsNyArMjAsNyBAQAogICAgIHswfQogfTsKIAotc3RhdGljIFB5VHlwZU9iamVjdCBtb2R1bGVkZWZfdHlwZSA9IHsKK1B5VHlwZU9iamVjdCBQeU1vZHVsZURlZl9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAgICAgIm1vZHVsZWRlZiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKHN0cnVjdCBQeU1vZHVsZURlZiksICAgICAgICAgICAgICAgICAvKiB0cF9zaXplICovCkBAIC0yOCwyOSArMjgsNDggQEAKIH07CiAKIAorUHlPYmplY3QqCitQeU1vZHVsZURlZl9Jbml0KHN0cnVjdCBQeU1vZHVsZURlZiogZGVmKQoreworICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5TW9kdWxlRGVmX1R5cGUpIDwgMCkKKyAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChkZWYtPm1fYmFzZS5tX2luZGV4ID09IDApIHsKKyAgICAgICAgbWF4X21vZHVsZV9udW1iZXIrKzsKKyAgICAgICAgUHlfUkVGQ05UKGRlZikgPSAxOworICAgICAgICBQeV9UWVBFKGRlZikgPSAmUHlNb2R1bGVEZWZfVHlwZTsKKyAgICAgICAgZGVmLT5tX2Jhc2UubV9pbmRleCA9IG1heF9tb2R1bGVfbnVtYmVyOworICAgIH0KKyAgICByZXR1cm4gKFB5T2JqZWN0KilkZWY7Cit9CisKIHN0YXRpYyBpbnQKIG1vZHVsZV9pbml0X2RpY3QoUHlNb2R1bGVPYmplY3QgKm1vZCwgUHlPYmplY3QgKm1kX2RpY3QsCiAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqZG9jKQogeworICAgIF9QeV9JREVOVElGSUVSKF9fbmFtZV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2RvY19fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX3BhY2thZ2VfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19sb2FkZXJfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19zcGVjX18pOworCiAgICAgaWYgKG1kX2RpY3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChkb2MgPT0gTlVMTCkKICAgICAgICAgZG9jID0gUHlfTm9uZTsKIAotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtZF9kaWN0LCAiX19uYW1lX18iLCBuYW1lKSAhPSAwKQorICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZChtZF9kaWN0LCAmUHlJZF9fX25hbWVfXywgbmFtZSkgIT0gMCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtZF9kaWN0LCAiX19kb2NfXyIsIGRvYykgIT0gMCkKKyAgICBpZiAoX1B5RGljdF9TZXRJdGVtSWQobWRfZGljdCwgJlB5SWRfX19kb2NfXywgZG9jKSAhPSAwKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKG1kX2RpY3QsICJfX3BhY2thZ2VfXyIsIFB5X05vbmUpICE9IDApCisgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKG1kX2RpY3QsICZQeUlkX19fcGFja2FnZV9fLCBQeV9Ob25lKSAhPSAwKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKG1kX2RpY3QsICJfX2xvYWRlcl9fIiwgUHlfTm9uZSkgIT0gMCkKKyAgICBpZiAoX1B5RGljdF9TZXRJdGVtSWQobWRfZGljdCwgJlB5SWRfX19sb2FkZXJfXywgUHlfTm9uZSkgIT0gMCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtZF9kaWN0LCAiX19zcGVjX18iLCBQeV9Ob25lKSAhPSAwKQorICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZChtZF9kaWN0LCAmUHlJZF9fX3NwZWNfXywgUHlfTm9uZSkgIT0gMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChuYW1lKSkgewogICAgICAgICBQeV9JTkNSRUYobmFtZSk7Ci0gICAgICAgIFB5X1hERUNSRUYobW9kLT5tZF9uYW1lKTsKLSAgICAgICAgbW9kLT5tZF9uYW1lID0gbmFtZTsKKyAgICAgICAgUHlfU0VUUkVGKG1vZC0+bWRfbmFtZSwgbmFtZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC05MSwyNiArMTEwLDEzIEBACiAgICAgcmV0dXJuIG1vZHVsZTsKIH0KIAotCi1QeU9iamVjdCAqCi1QeU1vZHVsZV9DcmVhdGUyKHN0cnVjdCBQeU1vZHVsZURlZiogbW9kdWxlLCBpbnQgbW9kdWxlX2FwaV92ZXJzaW9uKQorLyogQ2hlY2sgQVBJL0FCSSB2ZXJzaW9uCisgKiBJc3N1ZXMgYSB3YXJuaW5nIG9uIG1pc21hdGNoLCB3aGljaCBpcyB1c3VhbGx5IG5vdCBmYXRhbC4KKyAqIFJldHVybnMgMCBpZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkLgorICovCitzdGF0aWMgaW50CitjaGVja19hcGlfdmVyc2lvbihjb25zdCBjaGFyICpuYW1lLCBpbnQgbW9kdWxlX2FwaV92ZXJzaW9uKQogewotICAgIFB5T2JqZWN0ICpkLCAqdiwgKm47Ci0gICAgUHlNZXRob2REZWYgKm1sOwotICAgIGNvbnN0IGNoYXIqIG5hbWU7Ci0gICAgUHlNb2R1bGVPYmplY3QgKm07Ci0gICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dldCgpLT5pbnRlcnA7Ci0gICAgaWYgKGludGVycC0+bW9kdWxlcyA9PSBOVUxMKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeXRob24gaW1wb3J0IG1hY2hpbmVyeSBub3QgaW5pdGlhbGl6ZWQiKTsKLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZtb2R1bGVkZWZfdHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAobW9kdWxlLT5tX2Jhc2UubV9pbmRleCA9PSAwKSB7Ci0gICAgICAgIG1heF9tb2R1bGVfbnVtYmVyKys7Ci0gICAgICAgIFB5X1JFRkNOVChtb2R1bGUpID0gMTsKLSAgICAgICAgUHlfVFlQRShtb2R1bGUpID0gJm1vZHVsZWRlZl90eXBlOwotICAgICAgICBtb2R1bGUtPm1fYmFzZS5tX2luZGV4ID0gbWF4X21vZHVsZV9udW1iZXI7Ci0gICAgfQotICAgIG5hbWUgPSBtb2R1bGUtPm1fbmFtZTsKICAgICBpZiAobW9kdWxlX2FwaV92ZXJzaW9uICE9IFBZVEhPTl9BUElfVkVSU0lPTiAmJiBtb2R1bGVfYXBpX3ZlcnNpb24gIT0gUFlUSE9OX0FCSV9WRVJTSU9OKSB7CiAgICAgICAgIGludCBlcnI7CiAgICAgICAgIGVyciA9IFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfUnVudGltZVdhcm5pbmcsIDEsCkBAIC0xMTksNyArMTI1LDMwIEBACiAgICAgICAgICAgICAgbmFtZSwKICAgICAgICAgICAgICBQWVRIT05fQVBJX1ZFUlNJT04sIG5hbWUsIG1vZHVsZV9hcGlfdmVyc2lvbik7CiAgICAgICAgIGlmIChlcnIpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworUHlPYmplY3QgKgorUHlNb2R1bGVfQ3JlYXRlMihzdHJ1Y3QgUHlNb2R1bGVEZWYqIG1vZHVsZSwgaW50IG1vZHVsZV9hcGlfdmVyc2lvbikKK3sKKyAgICBjb25zdCBjaGFyKiBuYW1lOworICAgIFB5TW9kdWxlT2JqZWN0ICptOworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HZXQoKS0+aW50ZXJwOworICAgIGlmIChpbnRlcnAtPm1vZHVsZXMgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHl0aG9uIGltcG9ydCBtYWNoaW5lcnkgbm90IGluaXRpYWxpemVkIik7CisgICAgaWYgKCFQeU1vZHVsZURlZl9Jbml0KG1vZHVsZSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG5hbWUgPSBtb2R1bGUtPm1fbmFtZTsKKyAgICBpZiAoIWNoZWNrX2FwaV92ZXJzaW9uKG5hbWUsIG1vZHVsZV9hcGlfdmVyc2lvbikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChtb2R1bGUtPm1fc2xvdHMpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAibW9kdWxlICVzOiBQeU1vZHVsZV9DcmVhdGUgaXMgaW5jb21wYXRpYmxlIHdpdGggbV9zbG90cyIsIG5hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgLyogTWFrZSBzdXJlIG5hbWUgaXMgZnVsbHkgcXVhbGlmaWVkLgogCkBAIC0xNTAsNTIgKzE3OSwyNjEgQEAKICAgICAgICAgbWVtc2V0KG0tPm1kX3N0YXRlLCAwLCBtb2R1bGUtPm1fc2l6ZSk7CiAgICAgfQogCi0gICAgZCA9IFB5TW9kdWxlX0dldERpY3QoKFB5T2JqZWN0KiltKTsKICAgICBpZiAobW9kdWxlLT5tX21ldGhvZHMgIT0gTlVMTCkgewotICAgICAgICBuID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7Ci0gICAgICAgIGlmIChuID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5TW9kdWxlX0FkZEZ1bmN0aW9ucygoUHlPYmplY3QgKikgbSwgbW9kdWxlLT5tX21ldGhvZHMpICE9IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGZvciAobWwgPSBtb2R1bGUtPm1fbWV0aG9kczsgbWwtPm1sX25hbWUgIT0gTlVMTDsgbWwrKykgewotICAgICAgICAgICAgaWYgKChtbC0+bWxfZmxhZ3MgJiBNRVRIX0NMQVNTKSB8fAotICAgICAgICAgICAgICAgIChtbC0+bWxfZmxhZ3MgJiBNRVRIX1NUQVRJQykpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZHVsZSBmdW5jdGlvbnMgY2Fubm90IHNldCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBNRVRIX0NMQVNTIG9yIE1FVEhfU1RBVElDIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG4pOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHYgPSBQeUNGdW5jdGlvbl9OZXdFeChtbCwgKFB5T2JqZWN0KiltLCBuKTsKLSAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG0pOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsIG1sLT5tbF9uYW1lLCB2KSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKG4pOwogICAgIH0KICAgICBpZiAobW9kdWxlLT5tX2RvYyAhPSBOVUxMKSB7Ci0gICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhtb2R1bGUtPm1fZG9jKTsKLSAgICAgICAgaWYgKHYgPT0gTlVMTCB8fCBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19kb2NfXyIsIHYpICE9IDApIHsKLSAgICAgICAgICAgIFB5X1hERUNSRUYodik7CisgICAgICAgIGlmIChQeU1vZHVsZV9TZXREb2NTdHJpbmcoKFB5T2JqZWN0ICopIG0sIG1vZHVsZS0+bV9kb2MpICE9IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICB9CiAgICAgbS0+bWRfZGVmID0gbW9kdWxlOwogICAgIHJldHVybiAoUHlPYmplY3QqKW07CiB9CiAKK1B5T2JqZWN0ICoKK1B5TW9kdWxlX0Zyb21EZWZBbmRTcGVjMihzdHJ1Y3QgUHlNb2R1bGVEZWYqIGRlZiwgUHlPYmplY3QgKnNwZWMsIGludCBtb2R1bGVfYXBpX3ZlcnNpb24pCit7CisgICAgUHlNb2R1bGVEZWZfU2xvdCogY3VyX3Nsb3Q7CisgICAgUHlPYmplY3QgKigqY3JlYXRlKShQeU9iamVjdCAqLCBQeU1vZHVsZURlZiopID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZW9iajsKKyAgICBQeU9iamVjdCAqbSA9IE5VTEw7CisgICAgaW50IGhhc19leGVjdXRpb25fc2xvdHMgPSAwOworICAgIGNoYXIgKm5hbWU7CisgICAgaW50IHJldDsKKworICAgIFB5TW9kdWxlRGVmX0luaXQoZGVmKTsKKworICAgIG5hbWVvYmogPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNwZWMsICJuYW1lIik7CisgICAgaWYgKG5hbWVvYmogPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbmFtZSA9IFB5VW5pY29kZV9Bc1VURjgobmFtZW9iaik7CisgICAgaWYgKG5hbWUgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmICghY2hlY2tfYXBpX3ZlcnNpb24obmFtZSwgbW9kdWxlX2FwaV92ZXJzaW9uKSkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmIChkZWYtPm1fc2l6ZSA8IDApIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAibW9kdWxlICVzOiBtX3NpemUgbWF5IG5vdCBiZSBuZWdhdGl2ZSBmb3IgbXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24iLAorICAgICAgICAgICAgbmFtZSk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgZm9yIChjdXJfc2xvdCA9IGRlZi0+bV9zbG90czsgY3VyX3Nsb3QgJiYgY3VyX3Nsb3QtPnNsb3Q7IGN1cl9zbG90KyspIHsKKyAgICAgICAgaWYgKGN1cl9zbG90LT5zbG90ID09IFB5X21vZF9jcmVhdGUpIHsKKyAgICAgICAgICAgIGlmIChjcmVhdGUpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAibW9kdWxlICVzIGhhcyBtdWx0aXBsZSBjcmVhdGUgc2xvdHMiLAorICAgICAgICAgICAgICAgICAgICBuYW1lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY3JlYXRlID0gY3VyX3Nsb3QtPnZhbHVlOworICAgICAgICB9IGVsc2UgaWYgKGN1cl9zbG90LT5zbG90IDwgMCB8fCBjdXJfc2xvdC0+c2xvdCA+IF9QeV9tb2RfTEFTVF9TTE9UKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgIm1vZHVsZSAlcyB1c2VzIHVua25vd24gc2xvdCBJRCAlaSIsCisgICAgICAgICAgICAgICAgbmFtZSwgY3VyX3Nsb3QtPnNsb3QpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGhhc19leGVjdXRpb25fc2xvdHMgPSAxOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGNyZWF0ZSkgeworICAgICAgICBtID0gY3JlYXRlKHNwZWMsIGRlZik7CisgICAgICAgIGlmIChtID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJjcmVhdGlvbiBvZiBtb2R1bGUgJXMgZmFpbGVkIHdpdGhvdXQgc2V0dGluZyBhbiBleGNlcHRpb24iLAorICAgICAgICAgICAgICAgICAgICBuYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3JlYXRpb24gb2YgbW9kdWxlICVzIHJhaXNlZCB1bnJlcG9ydGVkIGV4Y2VwdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIG0gPSBQeU1vZHVsZV9OZXcobmFtZSk7CisgICAgICAgIGlmIChtID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoUHlNb2R1bGVfQ2hlY2sobSkpIHsKKyAgICAgICAgKChQeU1vZHVsZU9iamVjdCopbSktPm1kX3N0YXRlID0gTlVMTDsKKyAgICAgICAgKChQeU1vZHVsZU9iamVjdCopbSktPm1kX2RlZiA9IGRlZjsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZGVmLT5tX3NpemUgPiAwIHx8IGRlZi0+bV90cmF2ZXJzZSB8fCBkZWYtPm1fY2xlYXIgfHwgZGVmLT5tX2ZyZWUpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICBQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAibW9kdWxlICVzIGlzIG5vdCBhIG1vZHVsZSBvYmplY3QsIGJ1dCByZXF1ZXN0cyBtb2R1bGUgc3RhdGUiLAorICAgICAgICAgICAgICAgIG5hbWUpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoaGFzX2V4ZWN1dGlvbl9zbG90cykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgIFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICJtb2R1bGUgJXMgc3BlY2lmaWVzIGV4ZWN1dGlvbiBzbG90cywgYnV0IGRpZCBub3QgY3JlYXRlICIKKyAgICAgICAgICAgICAgICAgICAgImEgTW9kdWxlVHlwZSBpbnN0YW5jZSIsCisgICAgICAgICAgICAgICAgbmFtZSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGRlZi0+bV9tZXRob2RzICE9IE5VTEwpIHsKKyAgICAgICAgcmV0ID0gUHlNb2R1bGVfQWRkRnVuY3Rpb25zKG0sIGRlZi0+bV9tZXRob2RzKTsKKyAgICAgICAgaWYgKHJldCAhPSAwKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGRlZi0+bV9kb2MgIT0gTlVMTCkgeworICAgICAgICByZXQgPSBQeU1vZHVsZV9TZXREb2NTdHJpbmcobSwgZGVmLT5tX2RvYyk7CisgICAgICAgIGlmIChyZXQgIT0gMCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIFB5X0RFQ1JFRihuYW1lb2JqKTsKKyAgICByZXR1cm4gbTsKKworZXJyb3I6CisgICAgUHlfREVDUkVGKG5hbWVvYmopOworICAgIFB5X1hERUNSRUYobSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK2ludAorUHlNb2R1bGVfRXhlY0RlZihQeU9iamVjdCAqbW9kdWxlLCBQeU1vZHVsZURlZiAqZGVmKQoreworICAgIFB5TW9kdWxlRGVmX1Nsb3QgKmN1cl9zbG90OworICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgaW50IHJldDsKKworICAgIG5hbWUgPSBQeU1vZHVsZV9HZXROYW1lKG1vZHVsZSk7CisgICAgaWYgKG5hbWUgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKFB5TW9kdWxlX0NoZWNrKG1vZHVsZSkgJiYgZGVmLT5tX3NpemUgPj0gMCkgeworICAgICAgICBQeU1vZHVsZU9iamVjdCAqbWQgPSAoUHlNb2R1bGVPYmplY3QqKW1vZHVsZTsKKyAgICAgICAgaWYgKG1kLT5tZF9zdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAvKiBBbHdheXMgc2V0IGEgc3RhdGUgcG9pbnRlcjsgdGhpcyBzZXJ2ZXMgYXMgYSBtYXJrZXIgdG8gc2tpcAorICAgICAgICAgICAgICogbXVsdGlwbGUgaW5pdGlhbGl6YXRpb24gKGltcG9ydGxpYi5yZWxvYWQoKSBpcyBuby1vcCkgKi8KKyAgICAgICAgICAgIG1kLT5tZF9zdGF0ZSA9IFB5TWVtX01BTExPQyhkZWYtPm1fc2l6ZSk7CisgICAgICAgICAgICBpZiAoIW1kLT5tZF9zdGF0ZSkgeworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVtc2V0KG1kLT5tZF9zdGF0ZSwgMCwgZGVmLT5tX3NpemUpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGRlZi0+bV9zbG90cyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGZvciAoY3VyX3Nsb3QgPSBkZWYtPm1fc2xvdHM7IGN1cl9zbG90ICYmIGN1cl9zbG90LT5zbG90OyBjdXJfc2xvdCsrKSB7CisgICAgICAgIHN3aXRjaCAoY3VyX3Nsb3QtPnNsb3QpIHsKKyAgICAgICAgICAgIGNhc2UgUHlfbW9kX2NyZWF0ZToKKyAgICAgICAgICAgICAgICAvKiBoYW5kbGVkIGluIFB5TW9kdWxlX0NyZWF0ZUZyb21TbG90cyAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBQeV9tb2RfZXhlYzoKKyAgICAgICAgICAgICAgICByZXQgPSAoKGludCAoKikoUHlPYmplY3QgKikpY3VyX3Nsb3QtPnZhbHVlKShtb2R1bGUpOworICAgICAgICAgICAgICAgIGlmIChyZXQgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3V0aW9uIG9mIG1vZHVsZSAlcyBmYWlsZWQgd2l0aG91dCBzZXR0aW5nIGFuIGV4Y2VwdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdXRpb24gb2YgbW9kdWxlICVzIHJhaXNlZCB1bnJlcG9ydGVkIGV4Y2VwdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIm1vZHVsZSAlcyBpbml0aWFsaXplZCB3aXRoIHVua25vd24gc2xvdCAlaSIsCisgICAgICAgICAgICAgICAgICAgIG5hbWUsIGN1cl9zbG90LT5zbG90KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorUHlNb2R1bGVfQWRkRnVuY3Rpb25zKFB5T2JqZWN0ICptLCBQeU1ldGhvZERlZiAqZnVuY3Rpb25zKQoreworICAgIFB5T2JqZWN0ICpuYW1lLCAqZnVuYzsKKyAgICBQeU1ldGhvZERlZiAqZmRlZjsKKworICAgIG5hbWUgPSBQeU1vZHVsZV9HZXROYW1lT2JqZWN0KG0pOworICAgIGlmIChuYW1lID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGZvciAoZmRlZiA9IGZ1bmN0aW9uczsgZmRlZi0+bWxfbmFtZSAhPSBOVUxMOyBmZGVmKyspIHsKKyAgICAgICAgaWYgKChmZGVmLT5tbF9mbGFncyAmIE1FVEhfQ0xBU1MpIHx8CisgICAgICAgICAgICAoZmRlZi0+bWxfZmxhZ3MgJiBNRVRIX1NUQVRJQykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUgZnVuY3Rpb25zIGNhbm5vdCBzZXQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBNRVRIX0NMQVNTIG9yIE1FVEhfU1RBVElDIik7CisgICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZnVuYyA9IFB5Q0Z1bmN0aW9uX05ld0V4KGZkZWYsIChQeU9iamVjdCopbSwgbmFtZSk7CisgICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhtLCBmZGVmLT5tbF9uYW1lLCBmdW5jKSAhPSAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgIH0KKyAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorUHlNb2R1bGVfU2V0RG9jU3RyaW5nKFB5T2JqZWN0ICptLCBjb25zdCBjaGFyICpkb2MpCit7CisgICAgUHlPYmplY3QgKnY7CisgICAgX1B5X0lERU5USUZJRVIoX19kb2NfXyk7CisKKyAgICB2ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoZG9jKTsKKyAgICBpZiAodiA9PSBOVUxMIHx8IF9QeU9iamVjdF9TZXRBdHRySWQobSwgJlB5SWRfX19kb2NfXywgdikgIT0gMCkgeworICAgICAgICBQeV9YREVDUkVGKHYpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIFB5X0RFQ1JFRih2KTsKKyAgICByZXR1cm4gMDsKK30KIAogUHlPYmplY3QgKgogUHlNb2R1bGVfR2V0RGljdChQeU9iamVjdCAqbSkKQEAgLTIxNCw2ICs0NTIsNyBAQAogUHlPYmplY3QqCiBQeU1vZHVsZV9HZXROYW1lT2JqZWN0KFB5T2JqZWN0ICptKQogeworICAgIF9QeV9JREVOVElGSUVSKF9fbmFtZV9fKTsKICAgICBQeU9iamVjdCAqZDsKICAgICBQeU9iamVjdCAqbmFtZTsKICAgICBpZiAoIVB5TW9kdWxlX0NoZWNrKG0pKSB7CkBAIC0yMjIsNyArNDYxLDcgQEAKICAgICB9CiAgICAgZCA9ICgoUHlNb2R1bGVPYmplY3QgKiltKS0+bWRfZGljdDsKICAgICBpZiAoZCA9PSBOVUxMIHx8Ci0gICAgICAgIChuYW1lID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fbmFtZV9fIikpID09IE5VTEwgfHwKKyAgICAgICAgKG5hbWUgPSBfUHlEaWN0X0dldEl0ZW1JZChkLCAmUHlJZF9fX25hbWVfXykpID09IE5VTEwgfHwKICAgICAgICAgIVB5VW5pY29kZV9DaGVjayhuYW1lKSkKICAgICB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgIm5hbWVsZXNzIG1vZHVsZSIpOwpAQCAtMjQ1LDYgKzQ4NCw3IEBACiBQeU9iamVjdCoKIFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0KFB5T2JqZWN0ICptKQogeworICAgIF9QeV9JREVOVElGSUVSKF9fZmlsZV9fKTsKICAgICBQeU9iamVjdCAqZDsKICAgICBQeU9iamVjdCAqZmlsZW9iajsKICAgICBpZiAoIVB5TW9kdWxlX0NoZWNrKG0pKSB7CkBAIC0yNTMsNyArNDkzLDcgQEAKICAgICB9CiAgICAgZCA9ICgoUHlNb2R1bGVPYmplY3QgKiltKS0+bWRfZGljdDsKICAgICBpZiAoZCA9PSBOVUxMIHx8Ci0gICAgICAgIChmaWxlb2JqID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fZmlsZV9fIikpID09IE5VTEwgfHwKKyAgICAgICAgKGZpbGVvYmogPSBfUHlEaWN0X0dldEl0ZW1JZChkLCAmUHlJZF9fX2ZpbGVfXykpID09IE5VTEwgfHwKICAgICAgICAgIVB5VW5pY29kZV9DaGVjayhmaWxlb2JqKSkKICAgICB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgIm1vZHVsZSBmaWxlbmFtZSBtaXNzaW5nIik7CkBAIC00MTEsNiArNjUxLDMxIEBACiAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QoaW50ZXJwLT5pbXBvcnRsaWIsICJfbW9kdWxlX3JlcHIiLCAiTyIsIG0pOwogfQogCitzdGF0aWMgUHlPYmplY3QqCittb2R1bGVfZ2V0YXR0cm8oUHlNb2R1bGVPYmplY3QgKm0sIFB5T2JqZWN0ICpuYW1lKQoreworICAgIFB5T2JqZWN0ICphdHRyLCAqbW9kX25hbWU7CisgICAgYXR0ciA9IFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyKChQeU9iamVjdCAqKW0sIG5hbWUpOworICAgIGlmIChhdHRyIHx8ICFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKKyAgICAgICAgcmV0dXJuIGF0dHI7CisgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBpZiAobS0+bWRfZGljdCkgeworICAgICAgICBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CisgICAgICAgIG1vZF9uYW1lID0gX1B5RGljdF9HZXRJdGVtSWQobS0+bWRfZGljdCwgJlB5SWRfX19uYW1lX18pOworICAgICAgICBpZiAobW9kX25hbWUpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUgJyVVJyBoYXMgbm8gYXR0cmlidXRlICclVSciLCBtb2RfbmFtZSwgbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9CisgICAgfQorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAibW9kdWxlIGhhcyBubyBhdHRyaWJ1dGUgJyVVJyIsIG5hbWUpOworICAgIHJldHVybiBOVUxMOworfQorCiBzdGF0aWMgaW50CiBtb2R1bGVfdHJhdmVyc2UoUHlNb2R1bGVPYmplY3QgKm0sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQogewpAQCAtNDY0LDcgKzcyOSw2IEBACiAgICAgezB9CiB9OwogCi0KIFB5RG9jX1NUUlZBUihtb2R1bGVfZG9jLAogIm1vZHVsZShuYW1lWywgZG9jXSlcblwKIFxuXApAQCAtNDg4LDcgKzc1Miw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KLSAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgKGdldGF0dHJvZnVuYyltb2R1bGVfZ2V0YXR0cm8sICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8CmRpZmYgLS1naXQgYS9PYmplY3RzL29iamVjdC5jIGIvT2JqZWN0cy9vYmplY3QuYwppbmRleCAzMDdlM2FjLi42ZmM0ZGYxIDEwMDY0NAotLS0gYS9PYmplY3RzL29iamVjdC5jCisrKyBiL09iamVjdHMvb2JqZWN0LmMKQEAgLTMzLDYgKzMzLDIyIEBACiAgICAgICAgIHRvdGFsIC09IG8tPm9iX3JlZmNudDsKICAgICByZXR1cm4gdG90YWw7CiB9CisKK3ZvaWQKK19QeURlYnVnX1ByaW50VG90YWxSZWZzKHZvaWQpIHsKKyAgICBQeU9iamVjdCAqeG9wdGlvbnMsICp2YWx1ZTsKKyAgICBfUHlfSURFTlRJRklFUihzaG93cmVmY291bnQpOworCisgICAgeG9wdGlvbnMgPSBQeVN5c19HZXRYT3B0aW9ucygpOworICAgIGlmICh4b3B0aW9ucyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgdmFsdWUgPSBfUHlEaWN0X0dldEl0ZW1JZCh4b3B0aW9ucywgJlB5SWRfc2hvd3JlZmNvdW50KTsKKyAgICBpZiAodmFsdWUgPT0gUHlfVHJ1ZSkKKyAgICAgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICAgICAgIlslIiBQWV9GT1JNQVRfU0laRV9UICJkIHJlZnMsICIKKyAgICAgICAgICAgICAgICAiJSIgUFlfRk9STUFUX1NJWkVfVCAiZCBibG9ja3NdXG4iLAorICAgICAgICAgICAgICAgIF9QeV9HZXRSZWZUb3RhbCgpLCBfUHlfR2V0QWxsb2NhdGVkQmxvY2tzKCkpOworfQogI2VuZGlmIC8qIFB5X1JFRl9ERUJVRyAqLwogCiAvKiBPYmplY3QgYWxsb2NhdGlvbiByb3V0aW5lcyB1c2VkIGJ5IE5FV09CSiBhbmQgTkVXVkFST0JKIG1hY3Jvcy4KQEAgLTE1NDMsNiArMTU1OSw5IEBACiB2b2lkCiBfUHlfUmVhZHlUeXBlcyh2b2lkKQogeworICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5QmFzZU9iamVjdF9UeXBlKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgb2JqZWN0IHR5cGUiKTsKKwogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5VHlwZV9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgdHlwZSB0eXBlIik7CiAKQEAgLTE1NTUsNiArMTU3NCw5IEBACiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmX1B5V2Vha3JlZl9Qcm94eVR5cGUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSB3ZWFrcmVmIHByb3h5IHR5cGUiKTsKIAorICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5TG9uZ19UeXBlKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgaW50IHR5cGUiKTsKKwogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5Qm9vbF9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgYm9vbCB0eXBlIik7CiAKQEAgLTE1NzksMTUgKzE2MDEsMjcgQEAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVN1cGVyX1R5cGUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBzdXBlciB0eXBlIik7CiAKLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUJhc2VPYmplY3RfVHlwZSkgPCAwKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIG9iamVjdCB0eXBlIik7Ci0KICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVJhbmdlX1R5cGUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSByYW5nZSB0eXBlIik7CiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeURpY3RfVHlwZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIGRpY3QgdHlwZSIpOwogCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlPRGljdF9UeXBlKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgT3JkZXJlZERpY3QgdHlwZSIpOworCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlPRGljdEtleXNfVHlwZSkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIG9kaWN0X2tleXMgdHlwZSIpOworCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlPRGljdEl0ZW1zX1R5cGUpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBvZGljdF9pdGVtcyB0eXBlIik7CisKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeU9EaWN0VmFsdWVzX1R5cGUpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBvZGljdF92YWx1ZXMgdHlwZSIpOworCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlPRGljdEl0ZXJfVHlwZSkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIG9kaWN0X2tleWl0ZXJhdG9yIHR5cGUiKTsKKwogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5U2V0X1R5cGUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBzZXQgdHlwZSIpOwogCkBAIC0xNjA2LDkgKzE2NDAsNiBAQAogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5RmxvYXRfVHlwZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIGZsb2F0IHR5cGUiKTsKIAotICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5TG9uZ19UeXBlKSA8IDApCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgaW50IHR5cGUiKTsKLQogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5RnJvemVuU2V0X1R5cGUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBmcm96ZW5zZXQgdHlwZSIpOwogCkBAIC0xNjk1LDYgKzE3MjYsMTIgQEAKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5U2VxSXRlcl9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgc2VxdWVuY2UgaXRlcmF0b3IgdHlwZSIpOworCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlDb3JvX1R5cGUpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBjb3JvdXRpbmUgdHlwZSIpOworCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmX1B5Q29yb1dyYXBwZXJfVHlwZSkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIGNvcm91dGluZSB3cmFwcGVyIHR5cGUiKTsKIH0KIAogCkBAIC0xODA5LDkgKzE4NDYsNiBAQAogCiAjZW5kaWYKIAotLyogSGFjayB0byBmb3JjZSBsb2FkaW5nIG9mIHB5Y2Fwc3VsZS5vICovCi1QeVR5cGVPYmplY3QgKl9QeUNhcHN1bGVfaGFjayA9ICZQeUNhcHN1bGVfVHlwZTsKLQogCiAvKiBIYWNrIHRvIGZvcmNlIGxvYWRpbmcgb2YgYWJzdHJhY3QubyAqLwogUHlfc3NpemVfdCAoKl9QeV9hYnN0cmFjdF9oYWNrKShQeU9iamVjdCAqKSA9IFB5T2JqZWN0X1NpemU7CmRpZmYgLS1naXQgYS9PYmplY3RzL29ibWFsbG9jLmMgYi9PYmplY3RzL29ibWFsbG9jLmMKaW5kZXggM2MzMzI1NS4uN2NjODg5ZiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9vYm1hbGxvYy5jCisrKyBiL09iamVjdHMvb2JtYWxsb2MuYwpAQCAtNSw2ICs1LDcgQEAKICNpZmRlZiBQWU1BTExPQ19ERUJVRyAgIC8qIFdJVEhfUFlNQUxMT0MgJiYgUFlNQUxMT0NfREVCVUcgKi8KIC8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KIHN0YXRpYyB2b2lkKiBfUHlNZW1fRGVidWdNYWxsb2Modm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSk7CitzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnQ2FsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKTsKIHN0YXRpYyB2b2lkIF9QeU1lbV9EZWJ1Z0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwKTsKIHN0YXRpYyB2b2lkKiBfUHlNZW1fRGVidWdSZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7CiAKQEAgLTQzLDYgKzQ0LDcgQEAKIAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLwogc3RhdGljIHZvaWQqIF9QeU9iamVjdF9NYWxsb2Modm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSk7CitzdGF0aWMgdm9pZCogX1B5T2JqZWN0X0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSk7CiBzdGF0aWMgdm9pZCBfUHlPYmplY3RfRnJlZSh2b2lkICpjdHgsIHZvaWQgKnApOwogc3RhdGljIHZvaWQqIF9QeU9iamVjdF9SZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7CiAjZW5kaWYKQEAgLTUxLDcgKzUzLDcgQEAKIHN0YXRpYyB2b2lkICoKIF9QeU1lbV9SYXdNYWxsb2Modm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICAvKiBQeU1lbV9NYWxsb2MoMCkgbWVhbnMgbWFsbG9jKDEpLiBTb21lIHN5c3RlbXMgd291bGQgcmV0dXJuIE5VTEwKKyAgICAvKiBQeU1lbV9SYXdNYWxsb2MoMCkgbWVhbnMgbWFsbG9jKDEpLiBTb21lIHN5c3RlbXMgd291bGQgcmV0dXJuIE5VTEwKICAgICAgICBmb3IgbWFsbG9jKDApLCB3aGljaCB3b3VsZCBiZSB0cmVhdGVkIGFzIGFuIGVycm9yLiBTb21lIHBsYXRmb3JtcyB3b3VsZAogICAgICAgIHJldHVybiBhIHBvaW50ZXIgd2l0aCBubyBtZW1vcnkgYmVoaW5kIGl0LCB3aGljaCB3b3VsZCBicmVhayBweW1hbGxvYy4KICAgICAgICBUbyBzb2x2ZSB0aGVzZSBwcm9ibGVtcywgYWxsb2NhdGUgYW4gZXh0cmEgYnl0ZS4gKi8KQEAgLTYxLDYgKzYzLDIwIEBACiB9CiAKIHN0YXRpYyB2b2lkICoKK19QeU1lbV9SYXdDYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCit7CisgICAgLyogUHlNZW1fUmF3Q2FsbG9jKDAsIDApIG1lYW5zIGNhbGxvYygxLCAxKS4gU29tZSBzeXN0ZW1zIHdvdWxkIHJldHVybiBOVUxMCisgICAgICAgZm9yIGNhbGxvYygwLCAwKSwgd2hpY2ggd291bGQgYmUgdHJlYXRlZCBhcyBhbiBlcnJvci4gU29tZSBwbGF0Zm9ybXMKKyAgICAgICB3b3VsZCByZXR1cm4gYSBwb2ludGVyIHdpdGggbm8gbWVtb3J5IGJlaGluZCBpdCwgd2hpY2ggd291bGQgYnJlYWsKKyAgICAgICBweW1hbGxvYy4gIFRvIHNvbHZlIHRoZXNlIHByb2JsZW1zLCBhbGxvY2F0ZSBhbiBleHRyYSBieXRlLiAqLworICAgIGlmIChuZWxlbSA9PSAwIHx8IGVsc2l6ZSA9PSAwKSB7CisgICAgICAgIG5lbGVtID0gMTsKKyAgICAgICAgZWxzaXplID0gMTsKKyAgICB9CisgICAgcmV0dXJuIGNhbGxvYyhuZWxlbSwgZWxzaXplKTsKK30KKworc3RhdGljIHZvaWQgKgogX1B5TWVtX1Jhd1JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBzaXplKQogewogICAgIGlmIChzaXplID09IDApCkBAIC0xMjMsOSArMTM5LDkgQEAKICNlbmRpZgogCiAKLSNkZWZpbmUgUFlSQVdfRlVOQ1MgX1B5TWVtX1Jhd01hbGxvYywgX1B5TWVtX1Jhd1JlYWxsb2MsIF9QeU1lbV9SYXdGcmVlCisjZGVmaW5lIFBZUkFXX0ZVTkNTIF9QeU1lbV9SYXdNYWxsb2MsIF9QeU1lbV9SYXdDYWxsb2MsIF9QeU1lbV9SYXdSZWFsbG9jLCBfUHlNZW1fUmF3RnJlZQogI2lmZGVmIFdJVEhfUFlNQUxMT0MKLSMgIGRlZmluZSBQWU9CSl9GVU5DUyBfUHlPYmplY3RfTWFsbG9jLCBfUHlPYmplY3RfUmVhbGxvYywgX1B5T2JqZWN0X0ZyZWUKKyMgIGRlZmluZSBQWU9CSl9GVU5DUyBfUHlPYmplY3RfTWFsbG9jLCBfUHlPYmplY3RfQ2FsbG9jLCBfUHlPYmplY3RfUmVhbGxvYywgX1B5T2JqZWN0X0ZyZWUKICNlbHNlCiAjICBkZWZpbmUgUFlPQkpfRlVOQ1MgUFlSQVdfRlVOQ1MKICNlbmRpZgpAQCAtMTM1LDcgKzE1MSw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgLyogV2UgdGFnIGVhY2ggYmxvY2sgd2l0aCBhbiBBUEkgSUQgaW4gb3JkZXIgdG8gdGFnIEFQSSB2aW9sYXRpb25zICovCiAgICAgY2hhciBhcGlfaWQ7Ci0gICAgUHlNZW1BbGxvY2F0b3IgYWxsb2M7CisgICAgUHlNZW1BbGxvY2F0b3JFeCBhbGxvYzsKIH0gZGVidWdfYWxsb2NfYXBpX3Q7CiBzdGF0aWMgc3RydWN0IHsKICAgICBkZWJ1Z19hbGxvY19hcGlfdCByYXc7CkBAIC0xNDcsMTAgKzE2MywxMCBAQAogICAgIHsnbycsIHtOVUxMLCBQWU9CSl9GVU5DU319CiAgICAgfTsKIAotI2RlZmluZSBQWURCR19GVU5DUyBfUHlNZW1fRGVidWdNYWxsb2MsIF9QeU1lbV9EZWJ1Z1JlYWxsb2MsIF9QeU1lbV9EZWJ1Z0ZyZWUKKyNkZWZpbmUgUFlEQkdfRlVOQ1MgX1B5TWVtX0RlYnVnTWFsbG9jLCBfUHlNZW1fRGVidWdDYWxsb2MsIF9QeU1lbV9EZWJ1Z1JlYWxsb2MsIF9QeU1lbV9EZWJ1Z0ZyZWUKICNlbmRpZgogCi1zdGF0aWMgUHlNZW1BbGxvY2F0b3IgX1B5TWVtX1JhdyA9IHsKK3N0YXRpYyBQeU1lbUFsbG9jYXRvckV4IF9QeU1lbV9SYXcgPSB7CiAjaWZkZWYgUFlNQUxMT0NfREVCVUcKICAgICAmX1B5TWVtX0RlYnVnLnJhdywgUFlEQkdfRlVOQ1MKICNlbHNlCkBAIC0xNTgsNyArMTc0LDcgQEAKICNlbmRpZgogICAgIH07CiAKLXN0YXRpYyBQeU1lbUFsbG9jYXRvciBfUHlNZW0gPSB7CitzdGF0aWMgUHlNZW1BbGxvY2F0b3JFeCBfUHlNZW0gPSB7CiAjaWZkZWYgUFlNQUxMT0NfREVCVUcKICAgICAmX1B5TWVtX0RlYnVnLm1lbSwgUFlEQkdfRlVOQ1MKICNlbHNlCkBAIC0xNjYsNyArMTgyLDcgQEAKICNlbmRpZgogICAgIH07CiAKLXN0YXRpYyBQeU1lbUFsbG9jYXRvciBfUHlPYmplY3QgPSB7CitzdGF0aWMgUHlNZW1BbGxvY2F0b3JFeCBfUHlPYmplY3QgPSB7CiAjaWZkZWYgUFlNQUxMT0NfREVCVUcKICAgICAmX1B5TWVtX0RlYnVnLm9iaiwgUFlEQkdfRlVOQ1MKICNlbHNlCkBAIC0xOTMsOSArMjA5LDEwIEBACiBQeU1lbV9TZXR1cERlYnVnSG9va3Modm9pZCkKIHsKICNpZmRlZiBQWU1BTExPQ19ERUJVRwotICAgIFB5TWVtQWxsb2NhdG9yIGFsbG9jOworICAgIFB5TWVtQWxsb2NhdG9yRXggYWxsb2M7CiAKICAgICBhbGxvYy5tYWxsb2MgPSBfUHlNZW1fRGVidWdNYWxsb2M7CisgICAgYWxsb2MuY2FsbG9jID0gX1B5TWVtX0RlYnVnQ2FsbG9jOwogICAgIGFsbG9jLnJlYWxsb2MgPSBfUHlNZW1fRGVidWdSZWFsbG9jOwogICAgIGFsbG9jLmZyZWUgPSBfUHlNZW1fRGVidWdGcmVlOwogCkBAIC0yMjAsNyArMjM3LDcgQEAKIH0KIAogdm9pZAotUHlNZW1fR2V0QWxsb2NhdG9yKFB5TWVtQWxsb2NhdG9yRG9tYWluIGRvbWFpbiwgUHlNZW1BbGxvY2F0b3IgKmFsbG9jYXRvcikKK1B5TWVtX0dldEFsbG9jYXRvcihQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4sIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jYXRvcikKIHsKICAgICBzd2l0Y2goZG9tYWluKQogICAgIHsKQEAgLTIyOCwxNiArMjQ1LDE3IEBACiAgICAgY2FzZSBQWU1FTV9ET01BSU5fTUVNOiAqYWxsb2NhdG9yID0gX1B5TWVtOyBicmVhazsKICAgICBjYXNlIFBZTUVNX0RPTUFJTl9PQko6ICphbGxvY2F0b3IgPSBfUHlPYmplY3Q7IGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8qIHVua25vd24gZG9tYWluICovCisgICAgICAgIC8qIHVua25vd24gZG9tYWluOiBzZXQgYWxsIGF0dHJpYnV0ZXMgdG8gTlVMTCAqLwogICAgICAgICBhbGxvY2F0b3ItPmN0eCA9IE5VTEw7CiAgICAgICAgIGFsbG9jYXRvci0+bWFsbG9jID0gTlVMTDsKKyAgICAgICAgYWxsb2NhdG9yLT5jYWxsb2MgPSBOVUxMOwogICAgICAgICBhbGxvY2F0b3ItPnJlYWxsb2MgPSBOVUxMOwogICAgICAgICBhbGxvY2F0b3ItPmZyZWUgPSBOVUxMOwogICAgIH0KIH0KIAogdm9pZAotUHlNZW1fU2V0QWxsb2NhdG9yKFB5TWVtQWxsb2NhdG9yRG9tYWluIGRvbWFpbiwgUHlNZW1BbGxvY2F0b3IgKmFsbG9jYXRvcikKK1B5TWVtX1NldEFsbG9jYXRvcihQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4sIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jYXRvcikKIHsKICAgICBzd2l0Y2goZG9tYWluKQogICAgIHsKQEAgLTI3MiwxMCArMjkwLDE4IEBACiAgICAgICovCiAgICAgaWYgKHNpemUgPiAoc2l6ZV90KVBZX1NTSVpFX1RfTUFYKQogICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHJldHVybiBfUHlNZW1fUmF3Lm1hbGxvYyhfUHlNZW1fUmF3LmN0eCwgc2l6ZSk7CiB9CiAKK3ZvaWQgKgorUHlNZW1fUmF3Q2FsbG9jKHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKK3sKKyAgICAvKiBzZWUgUHlNZW1fUmF3TWFsbG9jKCkgKi8KKyAgICBpZiAoZWxzaXplICE9IDAgJiYgbmVsZW0gPiAoc2l6ZV90KVBZX1NTSVpFX1RfTUFYIC8gZWxzaXplKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gX1B5TWVtX1Jhdy5jYWxsb2MoX1B5TWVtX1Jhdy5jdHgsIG5lbGVtLCBlbHNpemUpOworfQorCiB2b2lkKgogUHlNZW1fUmF3UmVhbGxvYyh2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSkKIHsKQEAgLTMwMCw2ICszMjYsMTUgQEAKIH0KIAogdm9pZCAqCitQeU1lbV9DYWxsb2Moc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQoreworICAgIC8qIHNlZSBQeU1lbV9SYXdNYWxsb2MoKSAqLworICAgIGlmIChlbHNpemUgIT0gMCAmJiBuZWxlbSA+IChzaXplX3QpUFlfU1NJWkVfVF9NQVggLyBlbHNpemUpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBfUHlNZW0uY2FsbG9jKF9QeU1lbS5jdHgsIG5lbGVtLCBlbHNpemUpOworfQorCit2b2lkICoKIFB5TWVtX1JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpCiB7CiAgICAgLyogc2VlIFB5TWVtX1Jhd01hbGxvYygpICovCkBAIC0zNTIsNiArMzg3LDE1IEBACiB9CiAKIHZvaWQgKgorUHlPYmplY3RfQ2FsbG9jKHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKK3sKKyAgICAvKiBzZWUgUHlNZW1fUmF3TWFsbG9jKCkgKi8KKyAgICBpZiAoZWxzaXplICE9IDAgJiYgbmVsZW0gPiAoc2l6ZV90KVBZX1NTSVpFX1RfTUFYIC8gZWxzaXplKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gX1B5T2JqZWN0LmNhbGxvYyhfUHlPYmplY3QuY3R4LCBuZWxlbSwgZWxzaXplKTsKK30KKwordm9pZCAqCiBQeU9iamVjdF9SZWFsbG9jKHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKQogewogICAgIC8qIHNlZSBQeU1lbV9SYXdNYWxsb2MoKSAqLwpAQCAtMTEyMiw4ICsxMTY2LDkgQEAKICAqLwogCiBzdGF0aWMgdm9pZCAqCi1fUHlPYmplY3RfTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKK19QeU9iamVjdF9BbGxvYyhpbnQgdXNlX2NhbGxvYywgdm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCiB7CisgICAgc2l6ZV90IG5ieXRlczsKICAgICBibG9jayAqYnA7CiAgICAgcG9vbHAgcG9vbDsKICAgICBwb29scCBuZXh0OwpAQCAtMTEzMSw2ICsxMTc2LDkgQEAKIAogICAgIF9QeV9BbGxvY2F0ZWRCbG9ja3MrKzsKIAorICAgIGFzc2VydChuZWxlbSA8PSBQWV9TU0laRV9UX01BWCAvIGVsc2l6ZSk7CisgICAgbmJ5dGVzID0gbmVsZW0gKiBlbHNpemU7CisKICNpZmRlZiBXSVRIX1ZBTEdSSU5ECiAgICAgaWYgKFVOTElLRUxZKHJ1bm5pbmdfb25fdmFsZ3JpbmQgPT0gLTEpKQogICAgICAgICBydW5uaW5nX29uX3ZhbGdyaW5kID0gUlVOTklOR19PTl9WQUxHUklORDsKQEAgLTExMzgsOSArMTE4Niw5IEBACiAgICAgICAgIGdvdG8gcmVkaXJlY3Q7CiAjZW5kaWYKIAotICAgIC8qCi0gICAgICogVGhpcyBpbXBsaWNpdGx5IHJlZGlyZWN0cyBtYWxsb2MoMCkuCi0gICAgICovCisgICAgaWYgKG5lbGVtID09IDAgfHwgZWxzaXplID09IDApCisgICAgICAgIGdvdG8gcmVkaXJlY3Q7CisKICAgICBpZiAoKG5ieXRlcyAtIDEpIDwgU01BTExfUkVRVUVTVF9USFJFU0hPTEQpIHsKICAgICAgICAgTE9DSygpOwogICAgICAgICAvKgpAQCAtMTE1OCw2ICsxMjA2LDggQEAKICAgICAgICAgICAgIGFzc2VydChicCAhPSBOVUxMKTsKICAgICAgICAgICAgIGlmICgocG9vbC0+ZnJlZWJsb2NrID0gKihibG9jayAqKilicCkgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFVOTE9DSygpOworICAgICAgICAgICAgICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICAgICAgICAgICAgICBtZW1zZXQoYnAsIDAsIG5ieXRlcyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuICh2b2lkICopYnA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKgpAQCAtMTE3MCw2ICsxMjIwLDggQEAKICAgICAgICAgICAgICAgICBwb29sLT5uZXh0b2Zmc2V0ICs9IElOREVYMlNJWkUoc2l6ZSk7CiAgICAgICAgICAgICAgICAgKihibG9jayAqKikocG9vbC0+ZnJlZWJsb2NrKSA9IE5VTEw7CiAgICAgICAgICAgICAgICAgVU5MT0NLKCk7CisgICAgICAgICAgICAgICAgaWYgKHVzZV9jYWxsb2MpCisgICAgICAgICAgICAgICAgICAgIG1lbXNldChicCwgMCwgbmJ5dGVzKTsKICAgICAgICAgICAgICAgICByZXR1cm4gKHZvaWQgKilicDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIFBvb2wgaXMgZnVsbCwgdW5saW5rIGZyb20gdXNlZCBwb29scy4gKi8KQEAgLTExNzgsNiArMTIzMCw4IEBACiAgICAgICAgICAgICBuZXh0LT5wcmV2cG9vbCA9IHBvb2w7CiAgICAgICAgICAgICBwb29sLT5uZXh0cG9vbCA9IG5leHQ7CiAgICAgICAgICAgICBVTkxPQ0soKTsKKyAgICAgICAgICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICAgICAgICAgIG1lbXNldChicCwgMCwgbmJ5dGVzKTsKICAgICAgICAgICAgIHJldHVybiAodm9pZCAqKWJwOwogICAgICAgICB9CiAKQEAgLTEyNTcsNiArMTMxMSw4IEBACiAgICAgICAgICAgICAgICAgYXNzZXJ0KGJwICE9IE5VTEwpOwogICAgICAgICAgICAgICAgIHBvb2wtPmZyZWVibG9jayA9ICooYmxvY2sgKiopYnA7CiAgICAgICAgICAgICAgICAgVU5MT0NLKCk7CisgICAgICAgICAgICAgICAgaWYgKHVzZV9jYWxsb2MpCisgICAgICAgICAgICAgICAgICAgIG1lbXNldChicCwgMCwgbmJ5dGVzKTsKICAgICAgICAgICAgICAgICByZXR1cm4gKHZvaWQgKilicDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qCkBAIC0xMjcyLDYgKzEzMjgsOCBAQAogICAgICAgICAgICAgcG9vbC0+ZnJlZWJsb2NrID0gYnAgKyBzaXplOwogICAgICAgICAgICAgKihibG9jayAqKikocG9vbC0+ZnJlZWJsb2NrKSA9IE5VTEw7CiAgICAgICAgICAgICBVTkxPQ0soKTsKKyAgICAgICAgICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICAgICAgICAgIG1lbXNldChicCwgMCwgbmJ5dGVzKTsKICAgICAgICAgICAgIHJldHVybiAodm9pZCAqKWJwOwogICAgICAgICB9CiAKQEAgLTEyODEsNyArMTMzOSw3IEBACiAgICAgICAgIHBvb2wgPSAocG9vbHApdXNhYmxlX2FyZW5hcy0+cG9vbF9hZGRyZXNzOwogICAgICAgICBhc3NlcnQoKGJsb2NrKilwb29sIDw9IChibG9jayopdXNhYmxlX2FyZW5hcy0+YWRkcmVzcyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJFTkFfU0laRSAtIFBPT0xfU0laRSk7Ci0gICAgICAgIHBvb2wtPmFyZW5haW5kZXggPSB1c2FibGVfYXJlbmFzIC0gYXJlbmFzOworICAgICAgICBwb29sLT5hcmVuYWluZGV4ID0gKHVpbnQpKHVzYWJsZV9hcmVuYXMgLSBhcmVuYXMpOwogICAgICAgICBhc3NlcnQoJmFyZW5hc1twb29sLT5hcmVuYWluZGV4XSA9PSB1c2FibGVfYXJlbmFzKTsKICAgICAgICAgcG9vbC0+c3ppZHggPSBEVU1NWV9TSVpFX0lEWDsKICAgICAgICAgdXNhYmxlX2FyZW5hcy0+cG9vbF9hZGRyZXNzICs9IFBPT0xfU0laRTsKQEAgLTEzMTEsMTMgKzEzNjksMjkgQEAKICAgICAgKiBoYXMgYmVlbiByZWFjaGVkLgogICAgICAqLwogICAgIHsKLSAgICAgICAgdm9pZCAqcmVzdWx0ID0gUHlNZW1fUmF3TWFsbG9jKG5ieXRlcyk7CisgICAgICAgIHZvaWQgKnJlc3VsdDsKKyAgICAgICAgaWYgKHVzZV9jYWxsb2MpCisgICAgICAgICAgICByZXN1bHQgPSBQeU1lbV9SYXdDYWxsb2MobmVsZW0sIGVsc2l6ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IFB5TWVtX1Jhd01hbGxvYyhuYnl0ZXMpOwogICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIF9QeV9BbGxvY2F0ZWRCbG9ja3MtLTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkICoKK19QeU9iamVjdF9NYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmJ5dGVzKQoreworICAgIHJldHVybiBfUHlPYmplY3RfQWxsb2MoMCwgY3R4LCAxLCBuYnl0ZXMpOworfQorCitzdGF0aWMgdm9pZCAqCitfUHlPYmplY3RfQ2FsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQoreworICAgIHJldHVybiBfUHlPYmplY3RfQWxsb2MoMSwgY3R4LCBuZWxlbSwgZWxzaXplKTsKK30KKwogLyogZnJlZSAqLwogCiBBVFRSSUJVVEVfTk9fQUREUkVTU19TQUZFVFlfQU5BTFlTSVMKQEAgLTE1NjEsNyArMTYzNSw3IEBACiAjZW5kaWYKIAogICAgIGlmIChwID09IE5VTEwpCi0gICAgICAgIHJldHVybiBfUHlPYmplY3RfTWFsbG9jKGN0eCwgbmJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9BbGxvYygwLCBjdHgsIDEsIG5ieXRlcyk7CiAKICNpZmRlZiBXSVRIX1ZBTEdSSU5ECiAgICAgLyogVHJlYXQgcnVubmluZ19vbl92YWxncmluZCA9PSAtMSB0aGUgc2FtZSBhcyAwICovCkBAIC0xNTg5LDcgKzE2NjMsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2l6ZSA9IG5ieXRlczsKICAgICAgICAgfQotICAgICAgICBicCA9IF9QeU9iamVjdF9NYWxsb2MoY3R4LCBuYnl0ZXMpOworICAgICAgICBicCA9IF9QeU9iamVjdF9BbGxvYygwLCBjdHgsIDEsIG5ieXRlcyk7CiAgICAgICAgIGlmIChicCAhPSBOVUxMKSB7CiAgICAgICAgICAgICBtZW1jcHkoYnAsIHAsIHNpemUpOwogICAgICAgICAgICAgX1B5T2JqZWN0X0ZyZWUoY3R4LCBwKTsKQEAgLTE3NDUsNyArMTgxOSw3IEBACiAqLwogCiBzdGF0aWMgdm9pZCAqCi1fUHlNZW1fRGVidWdNYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmJ5dGVzKQorX1B5TWVtX0RlYnVnQWxsb2MoaW50IHVzZV9jYWxsb2MsIHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKIHsKICAgICBkZWJ1Z19hbGxvY19hcGlfdCAqYXBpID0gKGRlYnVnX2FsbG9jX2FwaV90ICopY3R4OwogICAgIHVjaGFyICpwOyAgICAgICAgICAgLyogYmFzZSBhZGRyZXNzIG9mIG1hbGxvYydlZCBibG9jayAqLwpAQCAtMTc1OCw3ICsxODMyLDEwIEBACiAgICAgICAgIC8qIG92ZXJmbG93OiAgY2FuJ3QgcmVwcmVzZW50IHRvdGFsIGFzIGEgUHlfc3NpemVfdCAqLwogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHAgPSAodWNoYXIgKilhcGktPmFsbG9jLm1hbGxvYyhhcGktPmFsbG9jLmN0eCwgdG90YWwpOworICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICBwID0gKHVjaGFyICopYXBpLT5hbGxvYy5jYWxsb2MoYXBpLT5hbGxvYy5jdHgsIDEsIHRvdGFsKTsKKyAgICBlbHNlCisgICAgICAgIHAgPSAodWNoYXIgKilhcGktPmFsbG9jLm1hbGxvYyhhcGktPmFsbG9jLmN0eCwgdG90YWwpOwogICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xNzY3LDcgKzE4NDQsNyBAQAogICAgIHBbU1NUXSA9ICh1Y2hhcilhcGktPmFwaV9pZDsKICAgICBtZW1zZXQocCArIFNTVCArIDEsIEZPUkJJRERFTkJZVEUsIFNTVC0xKTsKIAotICAgIGlmIChuYnl0ZXMgPiAwKQorICAgIGlmIChuYnl0ZXMgPiAwICYmICF1c2VfY2FsbG9jKQogICAgICAgICBtZW1zZXQocCArIDIqU1NULCBDTEVBTkJZVEUsIG5ieXRlcyk7CiAKICAgICAvKiBhdCB0YWlsLCB3cml0ZSBwYWQgKFNTVCBieXRlcykgYW5kIHNlcmlhbG5vIChTU1QgYnl0ZXMpICovCkBAIC0xNzc4LDYgKzE4NTUsMjEgQEAKICAgICByZXR1cm4gcCArIDIqU1NUOwogfQogCitzdGF0aWMgdm9pZCAqCitfUHlNZW1fRGVidWdNYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmJ5dGVzKQoreworICAgIHJldHVybiBfUHlNZW1fRGVidWdBbGxvYygwLCBjdHgsIG5ieXRlcyk7Cit9CisKK3N0YXRpYyB2b2lkICoKK19QeU1lbV9EZWJ1Z0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKK3sKKyAgICBzaXplX3QgbmJ5dGVzOworICAgIGFzc2VydChlbHNpemUgPT0gMCB8fCBuZWxlbSA8PSBQWV9TU0laRV9UX01BWCAvIGVsc2l6ZSk7CisgICAgbmJ5dGVzID0gbmVsZW0gKiBlbHNpemU7CisgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z0FsbG9jKDEsIGN0eCwgbmJ5dGVzKTsKK30KKwogLyogVGhlIGRlYnVnIGZyZWUgZmlyc3QgY2hlY2tzIHRoZSAyKlNTVCBieXRlcyBvbiBlYWNoIGVuZCBmb3Igc2FuaXR5IChpbgogICAgcGFydGljdWxhciwgdGhhdCB0aGUgRk9SQklEREVOQllURXMgd2l0aCB0aGUgYXBpIElEIGFyZSBzdGlsbCBpbnRhY3QpLgogICAgVGhlbiBmaWxscyB0aGUgb3JpZ2luYWwgYnl0ZXMgd2l0aCBERUFEQllURS4KQEAgLTE4MTEsNyArMTkwMyw3IEBACiAgICAgaW50IGk7CiAKICAgICBpZiAocCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gX1B5TWVtX0RlYnVnTWFsbG9jKGN0eCwgbmJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z0FsbG9jKDAsIGN0eCwgbmJ5dGVzKTsKIAogICAgIF9QeU1lbV9EZWJ1Z0NoZWNrQWRkcmVzcyhhcGktPmFwaV9pZCwgcCk7CiAgICAgYnVtcHNlcmlhbG5vKCk7CmRpZmYgLS1naXQgYS9PYmplY3RzL29kaWN0b2JqZWN0LmMgYi9PYmplY3RzL29kaWN0b2JqZWN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE1YjQwOAotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvb2RpY3RvYmplY3QuYwpAQCAtMCwwICsxLDI0MzAgQEAKKy8qIE9yZGVyZWQgRGljdGlvbmFyeSBvYmplY3QgaW1wbGVtZW50YXRpb24uCisKK1RoaXMgaW1wbGVtZW50YXRpb24gaXMgbmVjZXNzYXJpbHkgZXhwbGljaXRseSBlcXVpdmFsZW50IHRvIHRoZSBwdXJlIFB5dGhvbgorT3JkZXJlZERpY3QgY2xhc3MgaW4gTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5LiAgVGhlIHN0cmF0ZWd5IHRoZXJlCitpbnZvbHZlcyB1c2luZyBhIGRvdWJseS1saW5rZWQtbGlzdCB0byBjYXB0dXJlIHRoZSBvcmRlci4gIFdlIGtlZXAgdG8gdGhhdAorc3RyYXRlZ3ksIHVzaW5nIGEgbG93ZXItbGV2ZWwgbGlua2VkLWxpc3QuCisKK0Fib3V0IHRoZSBMaW5rZWQtTGlzdAorPT09PT09PT09PT09PT09PT09PT09CisKK0ZvciB0aGUgbGlua2VkIGxpc3Qgd2UgdXNlIGEgYmFzaWMgZG91Ymx5LWxpbmtlZC1saXN0LiAgVXNpbmcgYSBjaXJjdWxhcmx5LQorbGlua2VkLWxpc3QgZG9lcyBoYXZlIHNvbWUgYmVuZWZpdHMsIGJ1dCB0aGV5IGRvbid0IGFwcGx5IHNvIG11Y2ggaGVyZQorc2luY2UgT3JkZXJlZERpY3QgaXMgZm9jdXNlZCBvbiB0aGUgZW5kcyBvZiB0aGUgbGlzdCAoZm9yIHRoZSBtb3N0IHBhcnQpLgorRnVydGhlcm1vcmUsIHRoZXJlIGFyZSBzb21lIGZlYXR1cmVzIG9mIGdlbmVyaWMgbGlua2VkLWxpc3RzIHRoYXQgd2Ugc2ltcGx5Citkb24ndCBuZWVkIGZvciBPcmRlcmVkRGljdC4gIFRodXMgYSBzaW1wbGUgY3VzdG9tIGltcGxlbWVudGF0aW9uIG1lZXRzIG91cgorbmVlZHMuICBBbHRlcm5hdGl2ZXMgdG8gb3VyIHNpbXBsZSBhcHByb2FjaCBpbmNsdWRlIHRoZSBRQ0lSQ0xFXyoKK21hY3JvcyBmcm9tIEJTRCdzIHF1ZXVlLmgsIGFuZCB0aGUgbGludXgncyBsaXN0LmguCisKK0dldHRpbmcgTygxKSBOb2RlIExvb2t1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK09uZSBpbnZhcmlhbnQgb2YgUHl0aG9uJ3MgT3JkZXJlZERpY3QgaXMgdGhhdCBpdCBwcmVzZXJ2ZXMgdGltZSBjb21wbGV4aXR5CitvZiBkaWN0J3MgbWV0aG9kcywgcGFydGljdWxhcmx5IHRoZSBPKDEpIG9wZXJhdGlvbnMuICBTaW1wbHkgYWRkaW5nIGEKK2xpbmtlZC1saXN0IG9uIHRvcCBvZiBkaWN0IGlzIG5vdCBzdWZmaWNpZW50IGhlcmU7IG9wZXJhdGlvbnMgZm9yIG5vZGVzIGluCit0aGUgbWlkZGxlIG9mIHRoZSBsaW5rZWQtbGlzdCBpbXBsaWNpdGx5IHJlcXVpcmUgZmluZGluZyB0aGUgbm9kZSBmaXJzdC4KK1dpdGggYSBzaW1wbGUgbGlua2VkLWxpc3QgbGlrZSB3ZSdyZSB1c2luZywgdGhhdCBpcyBhbiBPKG4pIG9wZXJhdGlvbi4KK0NvbnNlcXVlbnRseSwgbWV0aG9kcyBsaWtlIF9fZGVsaXRlbV9fKCkgd291bGQgY2hhbmdlIGZyb20gTygxKSB0byBPKG4pLAord2hpY2ggaXMgdW5hY2NlcHRhYmxlLgorCitJbiBvcmRlciB0byBwcmVzZXJ2ZSBPKDEpIHBlcmZvcm1hbmNlIGZvciBub2RlIHJlbW92YWwgKGZpbmRpbmcgbm9kZXMpLCB3ZQorbXVzdCBkbyBiZXR0ZXIgdGhhbiBqdXN0IGxvb3BpbmcgdGhyb3VnaCB0aGUgbGlua2VkLWxpc3QuICBIZXJlIGFyZSBvcHRpb25zCit3ZSd2ZSBjb25zaWRlcmVkOgorCisxLiB1c2UgYSBzZWNvbmQgZGljdCB0byBtYXAga2V5cyB0byBub2RlcyAoYSBsYSB0aGUgcHVyZSBQeXRob24gdmVyc2lvbikuCisyLiBrZWVwIGEgc2ltcGxlIGhhc2ggdGFibGUgbWlycm9yaW5nIHRoZSBvcmRlciBvZiBkaWN0J3MsIG1hcHBpbmcgZWFjaCBrZXkKKyAgIHRvIHRoZSBjb3JyZXNwb25kaW5nIG5vZGUgaW4gdGhlIGxpbmtlZC1saXN0LgorMy4gdXNlIGEgdmVyc2lvbiBvZiBzaGFyZWQga2V5cyAoc3BsaXQgZGljdCkgdGhhdCBhbGxvd3Mgbm9uLXVuaWNvZGUga2V5cy4KKzQuIGhhdmUgdGhlIHZhbHVlIHN0b3JlZCBmb3IgZWFjaCBrZXkgYmUgYSAodmFsdWUsIG5vZGUpIHBhaXIsIGFuZCBhZGp1c3QKKyAgIF9fZ2V0aXRlbV9fKCksIGdldCgpLCBldGMuIGFjY29yZGluZ2x5LgorCitUaGUgYXBwcm9hY2ggd2l0aCB0aGUgbGVhc3QgcGVyZm9ybWFuY2UgaW1wYWN0ICh0aW1lIGFuZCBzcGFjZSkgaXMgIzIsCittaXJyb3JpbmcgdGhlIGtleSBvcmRlciBvZiBkaWN0J3MgZGtfZW50aWVzIHdpdGggYW4gYXJyYXkgb2Ygbm9kZSBwb2ludGVycy4KK1doaWxlIGxvb2tkaWN0KCkgYW5kIGZyaWVuZHMgKGRrX2xvb2t1cCkgZG9uJ3QgZ2l2ZSB1cyB0aGUgaW5kZXggaW50byB0aGUKK2FycmF5LCB3ZSBtYWtlIHVzZSBvZiBwb2ludGVyIGFyaXRobWV0aWMgdG8gZ2V0IHRoYXQgaW5kZXguICBBbiBhbHRlcm5hdGl2ZQord291bGQgYmUgdG8gcmVmYWN0b3IgbG9va2RpY3QoKSB0byBwcm92aWRlIHRoZSBpbmRleCwgZXhwbGljaXRseSBleHBvc2luZwordGhlIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFdlIGNvdWxkIGV2ZW4ganVzdCB1c2UgYSBjdXN0b20gbG9va3VwIGZ1bmN0aW9uCitmb3IgT3JkZXJlZERpY3QgdGhhdCBmYWNpbGl0YXRlcyBvdXIgbmVlZC4gIEhvd2V2ZXIsIGJvdGggYXBwcm9hY2hlcyBhcmUKK3NpZ25pZmljYW50bHkgbW9yZSBjb21wbGljYXRlZCB0aGFuIGp1c3QgdXNpbmcgcG9pbnRlciBhcml0aG1ldGljLgorCitUaGUgY2F0Y2ggd2l0aCBtaXJyb3JpbmcgdGhlIGhhc2ggdGFibGUgb3JkZXJpbmcgaXMgdGhhdCB3ZSBoYXZlIHRvIGtlZXAKK3RoZSBvcmRlcmluZyBpbiBzeW5jIHRocm91Z2ggYW55IGRpY3QgcmVzaXplcy4gIEhvd2V2ZXIsIHRoYXQgb3JkZXIgb25seQorbWF0dGVycyBkdXJpbmcgbm9kZSBsb29rdXAuICBXZSBjYW4gc2ltcGx5IGRlZmVyIGFueSBwb3RlbnRpYWwgcmVzaXppbmcKK3VudGlsIHdlIG5lZWQgdG8gZG8gYSBsb29rdXAuCisKK0xpbmtlZC1MaXN0IE5vZGVzCistLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBzdG9yZXMgYSBwb2ludGVyIHRvIHRoZSBhc3NvY2lhdGVkIGtleSBvbmx5LgorT25lIGFsdGVybmF0aXZlIHdvdWxkIGJlIHRvIHN0b3JlIGEgcG9pbnRlciB0byB0aGUgUHlEaWN0S2V5RW50cnkgaW5zdGVhZC4KK1RoaXMgd291bGQgc2F2ZSBvbmUgcG9pbnRlciBkZS1yZWZlcmVuY2UgcGVyIGl0ZW0sIHdoaWNoIGlzIG5pY2UgZHVyaW5nCitjYWxscyB0byB2YWx1ZXMoKSBhbmQgaXRlbXMoKS4gIEhvd2V2ZXIsIGl0IGFkZHMgdW5uZWNlc3Nhcnkgb3ZlcmhlYWQKK290aGVyd2lzZSwgc28gd2Ugc3RpY2sgd2l0aCBqdXN0IHRoZSBrZXkuCisKK0xpbmtlZC1MaXN0IEFQSQorLS0tLS0tLS0tLS0tLS0tCisKK0FzIG5vdGVkLCB0aGUgbGlua2VkLWxpc3QgaW1wbGVtZW50ZWQgaGVyZSBkb2VzIG5vdCBoYXZlIGFsbCB0aGUgYmVsbHMgYW5kCit3aGlzdGxlcy4gIEhvd2V2ZXIsIHdlIHJlY29nbml6ZSB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBtYXkgbmVlZCB0bworY2hhbmdlIHRvIGFjY29tbW9kYXRlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cyBvciBleHRyYSBmdW5jdGlvbmFsaXR5LiAgVG8KK3RoYXQgZW5kLCBXZSB1c2UgYSBzaW1wbGUgQVBJIHRvIGludGVyYWN0IHdpdGggdGhlIGxpbmtlZC1saXN0LiAgSGVyZSdzIGEKK3N1bW1hcnkgb2YgdGhlIG1ldGhvZHMvbWFjcm9zOgorCitOb2RlIGluZm86CisKKyogX29kaWN0bm9kZV9LRVkobm9kZSkKKyogX29kaWN0bm9kZV9WQUxVRShvZCwgbm9kZSkKKyogX29kaWN0bm9kZV9QUkVWKG5vZGUpCisqIF9vZGljdG5vZGVfTkVYVChub2RlKQorCitMaW5rZWQtTGlzdCBpbmZvOgorCisqIF9vZGljdF9GSVJTVChvZCkKKyogX29kaWN0X0xBU1Qob2QpCisqIF9vZGljdF9FTVBUWShvZCkKKyogX29kaWN0X0ZPUkVBQ0gob2QsIG5vZGUpIC0gdXNlZCBpbiBwbGFjZSBvZiBgZm9yIChub2RlPS4uLilgCisKK0ZvciBhZGRpbmcgbm9kZXM6CisKKyogX29kaWN0X2FkZF9oZWFkKG9kLCBub2RlKQorKiBfb2RpY3RfYWRkX3RhaWwob2QsIG5vZGUpCisqIF9vZGljdF9hZGRfbmV3X25vZGUob2QsIGtleSwgaGFzaCkKKworRm9yIHJlbW92aW5nIG5vZGVzOgorCisqIF9vZGljdF9jbGVhcl9ub2RlKG9kLCBub2RlLCBrZXksIGhhc2gpCisqIF9vZGljdF9jbGVhcl9ub2RlcyhvZCwgY2xlYXJfZWFjaCkKKworT3RoZXJzOgorCisqIF9vZGljdF9maW5kX25vZGVfaGFzaChvZCwga2V5LCBoYXNoKQorKiBfb2RpY3RfZmluZF9ub2RlKG9kLCBrZXkpCisqIF9vZGljdF9rZXlzX2VxdWFsKG9kMSwgb2QyKQorCitVc2VkLCBidXQgc3BlY2lmaWMgdG8gdGhlIGxpbmtlZC1saXN0IGltcGxlbWVudGF0aW9uOgorCisqIF9vZGljdF9mcmVlX2Zhc3Rfbm9kZXMob2QpCisKK0FuZCBoZXJlJ3MgYSBsb29rIGF0IGhvdyB0aGUgbGlua2VkLWxpc3QgcmVsYXRlcyB0byB0aGUgT3JkZXJlZERpY3QgQVBJOgorCis9PT09PT09PT09PT0gPT09ID09PSA9PT09ID09PT0gPT09PSA9PT0gPT09PSA9PT09PSA9PT09ID09PT0gPT09ID09PT0gPT09ID09PQorbWV0aG9kICAgICAgIGtleSB2YWwgcHJldiBuZXh0IG1lbSAgMXN0IGxhc3QgZW1wdHkgaXRlciBmaW5kIGFkZCBybXYgIGNsciBrZXEKKz09PT09PT09PT09PSA9PT0gPT09ID09PT0gPT09PSA9PT09ID09PSA9PT09ID09PT09ID09PT0gPT09PSA9PT0gPT09PSA9PT0gPT09CitfX2RlbF9fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ICAgICAgICAgICAgICAgICAgICAgICAgWAorX19kZWxpdGVtX18gICAgICAgICAgICAgICAgICAgIGZyZWUgICAgICAgICAgICAgICAgICAgICB+ICAgICAgICBub2RlCitfX2VxX18gICAgICAgfiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFgKK19faXRlcl9fICAgICBYICAgICAgICAgICAgWAorX19uZXdfXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWCAgIFgKK19fcmVkdWNlX18gICBYICAgfiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFgKK19fcmVwcl9fICAgICBYICAgWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFgKK19fcmV2ZXJzZWRfXyBYICAgICAgIFgKK19fc2V0aXRlbV9fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkKK19fc2l6ZW9mX18gICAgICAgICAgICAgICAgICAgICBzaXplICAgICAgICAgIFgKK2NsZWFyICAgICAgICAgICAgICAgICAgICAgICAgICB+ICAgICAgICAgICAgIH4gICAgICAgICAgICAgICAgICAgICAgICBYCitjb3B5ICAgICAgICAgWCAgIFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYCitpdGVtcyAgICAgICAgWCAgIFggICAgICAgIFgKK2tleXMgICAgICAgICBYICAgICAgICAgICAgWAorbW92ZV90b19lbmQgIFggICAgICAgICAgICAgICAgICAgICAgWCAgIFggICAgICAgICAgICAgICB+ICAgIGgvdCBrZXkKK3BvcCAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5Citwb3BpdGVtICAgICAgWCAgIFggICAgICAgICAgICAgZnJlZSBYICAgWCAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUKK3NldGRlZmF1bHQgICAgICAgfiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAgICB+Cit2YWx1ZXMgICAgICAgICAgIFggICAgICAgIFgKKz09PT09PT09PT09PSA9PT0gPT09ID09PT0gPT09PSA9PT09ID09PSA9PT09ID09PT09ID09PT0gPT09PSA9PT0gPT09PSA9PT0gPT09CisKK19fZGVsaXRlbV9fIGlzIHRoZSBvbmx5IG1ldGhvZCB0aGF0IGRpcmVjdGx5IHJlbGllcyBvbiBmaW5kaW5nIGFuIGFyYml0cmFyeQorbm9kZSBpbiB0aGUgbGlua2VkLWxpc3QuICBFdmVyeXRoaW5nIGVsc2UgaXMgaXRlcmF0aW9uIG9yIHJlbGF0ZXMgdG8gdGhlCitlbmRzIG9mIHRoZSBsaW5rZWQtbGlzdC4KKworU2l0dWF0aW9uIHRoYXQgRW5kYW5nZXJzIENvbnNpc3RlbmN5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1VzaW5nIGEgcmF3IGxpbmtlZC1saXN0IGZvciBPcmRlcmVkRGljdCBleHBvc2VzIGEga2V5IHNpdHVhdGlvbiB0aGF0IGNhbgorY2F1c2UgcHJvYmxlbXMuICBJZiBhIG5vZGUgaXMgc3RvcmVkIGluIGEgdmFyaWFibGUsIHRoZXJlIGlzIGEgY2hhbmNlIHRoYXQKK3RoZSBub2RlIG1heSBoYXZlIGJlZW4gZGVhbGxvY2F0ZWQgYmVmb3JlIHRoZSB2YXJpYWJsZSBnZXRzIHVzZWQsIHRodXMKK3BvdGVudGlhbGx5IGxlYWRpbmcgdG8gYSBzZWdtZW50YXRpb24gZmF1bHQuICBBIGtleSBwbGFjZSB3aGVyZSB0aGlzIHNob3dzCit1cCBpcyBkdXJpbmcgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGxpbmtlZCBsaXN0ICh2aWEgX29kaWN0X0ZPUkVBQ0ggb3IKK290aGVyd2lzZSkuCisKK0EgbnVtYmVyIG9mIHNvbHV0aW9ucyBhcmUgYXZhaWxhYmxlIHRvIHJlc29sdmUgdGhpcyBzaXR1YXRpb246CisKKyogZGVmZXIgbG9va2luZyB1cCB0aGUgbm9kZSB1bnRpbCBhcyBsYXRlIGFzIHBvc3NpYmxlIGFuZCBjZXJ0YWlubHkgYWZ0ZXIKKyAgYW55IGNvZGUgdGhhdCBjb3VsZCBwb3NzaWJseSByZXN1bHQgaW4gYSBkZWxldGlvbjsKKyogaWYgdGhlIG5vZGUgaXMgbmVlZGVkIGJvdGggYmVmb3JlIGFuZCBhZnRlciBhIHBvaW50IHdoZXJlIHRoZSBub2RlIG1pZ2h0CisgIGJlIHJlbW92ZWQsIGRvIGEgY2hlY2sgYmVmb3JlIHVzaW5nIHRoZSBub2RlIGF0IHRoZSAiYWZ0ZXIiIGxvY2F0aW9uIHRvCisgIHNlZSBpZiB0aGUgbm9kZSBpcyBzdGlsbCB2YWxpZDsKKyogbGlrZSB0aGUgbGFzdCBvbmUsIGJ1dCBzaW1wbHkgcHVsbCB0aGUgbm9kZSBhZ2FpbiB0byBlbnN1cmUgaXQncyByaWdodDsKKyoga2VlcCB0aGUga2V5IGluIHRoZSB2YXJpYWJsZSBpbnN0ZWFkIG9mIHRoZSBub2RlIGFuZCB0aGVuIGxvb2sgdXAgdGhlCisgIG5vZGUgdXNpbmcgdGhlIGtleSBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlIG5vZGUgaXMgbmVlZGVkICh0aGlzIGlzIHdoYXQKKyAgd2UgZG8gZm9yIHRoZSBpdGVyYXRvcnMpLgorCitBbm90aGVyIHJlbGF0ZWQgcHJvYmxlbSwgcHJlc2VydmluZyBjb25zaXN0ZW50IG9yZGVyaW5nIGR1cmluZyBpdGVyYXRpb24sCitpcyBkZXNjcmliZWQgYmVsb3cuICBUaGF0IG9uZSBpcyBub3QgZXhjbHVzaXZlIHRvIHVzaW5nIGxpbmtlZC1saXN0cy4KKworCitDaGFsbGVuZ2VzIGZyb20gU3ViY2xhc3NpbmcgZGljdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworT3JkZXJlZERpY3Qgc3ViY2xhc3NlcyBkaWN0LCB3aGljaCBpcyBhbiB1bnVzdWFsIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHR3bworYnVpbHRpbiB0eXBlcyAob3RoZXIgdGhhbiB0aGUgYmFzZSBvYmplY3QgdHlwZSkuICBEb2luZyBzbyByZXN1bHRzIGluCitzb21lIGNvbXBsaWNhdGlvbiBhbmQgZGVzZXJ2ZXMgZnVydGhlciBleHBsYW5hdGlvbi4gIFRoZXJlIGFyZSB0d28gdGhpbmdzCit0byBjb25zaWRlciBoZXJlLiAgRmlyc3QsIGluIHdoYXQgY2lyY3Vtc3RhbmNlcyBvciB3aXRoIHdoYXQgYWRqdXN0bWVudHMKK2NhbiBPcmRlcmVkRGljdCBiZSB1c2VkIGFzIGEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgZGljdCAoYXQgdGhlIEMgbGV2ZWwpPworU2Vjb25kLCBob3cgY2FuIHRoZSBPcmRlcmVkRGljdCBpbXBsZW1lbnRhdGlvbiBsZXZlcmFnZSB0aGUgZGljdAoraW1wbGVtZW50YXRpb24gZWZmZWN0aXZlbHkgd2l0aG91dCBpbnRyb2R1Y2luZyB1bm5lY2Vzc2FyeSBjb3VwbGluZyBvcgoraW5lZmZpY2llbmNpZXM/CisKK1RoaXMgc2Vjb25kIHBvaW50IGlzIHJlZmxlY3RlZCBoZXJlIGFuZCBpbiB0aGUgaW1wbGVtZW50YXRpb24sIHNvIHRoZQorZnVydGhlciBmb2N1cyBpcyBvbiB0aGUgZmlyc3QgcG9pbnQuICBJdCBpcyB3b3J0aCBub3RpbmcgdGhhdCBmb3IKK292ZXJyaWRkZW4gbWV0aG9kcywgdGhlIGRpY3QgaW1wbGVtZW50YXRpb24gaXMgZGVmZXJyZWQgdG8gYXMgbXVjaCBhcworcG9zc2libGUuICBGdXJ0aGVybW9yZSwgY291cGxpbmcgaXMgbGltaXRlZCB0byBhcyBsaXR0bGUgYXMgaXMgcmVhc29uYWJsZS4KKworQ29uY3JldGUgQVBJIENvbXBhdGliaWxpdHkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VzZSBvZiB0aGUgY29uY3JldGUgQy1BUEkgZm9yIGRpY3QgKFB5RGljdF8qKSB3aXRoIE9yZGVyZWREaWN0IGlzCitwcm9ibGVtYXRpYy4gIChTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEwOTc3LikgIFRoZSBjb25jcmV0ZSBBUEkKK2hhcyBhIG51bWJlciBvZiBoYXJkLWNvZGVkIGFzc3VtcHRpb25zIHRpZWQgdG8gdGhlIGRpY3QgaW1wbGVtZW50YXRpb24uCitUaGlzIGlzLCBpbiBwYXJ0LCBkdWUgdG8gcGVyZm9ybWFuY2UgcmVhc29ucywgd2hpY2ggaXMgdW5kZXJzdGFuZGFibGUKK2dpdmVuIHRoZSBwYXJ0IGRpY3QgcGxheXMgaW4gUHl0aG9uLgorCitBbnkgYXR0ZW1wdCB0byByZXBsYWNlIGRpY3Qgd2l0aCBPcmRlcmVkRGljdCBmb3IgYW55IHJvbGUgaW4gdGhlCitpbnRlcnByZXRlciAoZS5nLiAqKmt3ZHMpIGZhY2VzIGEgY2hhbGxlbmdlLiAgU3VjaCBhbnkgZWZmb3J0IG11c3QKK3JlY29nbml6ZSB0aGF0IHRoZSBpbnN0YW5jZXMgaW4gYWZmZWN0ZWQgbG9jYXRpb25zIGN1cnJlbnRseSBpbnRlcmFjdCB3aXRoCit0aGUgY29uY3JldGUgQVBJLgorCitIZXJlIGFyZSBzb21lIHdheXMgdG8gYWRkcmVzcyB0aGlzIGNoYWxsZW5nZToKKworMS4gQ2hhbmdlIHRoZSByZWxldmFudCB1c2FnZSBvZiB0aGUgY29uY3JldGUgQVBJIGluIENQeXRob24gYW5kIGFkZAorICAgUHlEaWN0X0NoZWNrRXhhY3QoKSBjYWxscyB0byBlYWNoIG9mIHRoZSBjb25jcmV0ZSBBUEkgZnVuY2lvbnMuCisyLiBBZGp1c3QgdGhlIHJlbGV2YW50IGNvbmNyZXRlIEFQSSBmdW5jdGlvbnMgdG8gZXhwbGljaXRseSBhY2NvbW1vZGF0ZQorICAgT3JkZXJlZERpY3QuCiszLiBBcyB3aXRoICMxLCBhZGQgdGhlIGNoZWNrcywgYnV0IGltcHJvdmUgdGhlIGFic3RyYWN0IEFQSSB3aXRoIHNtYXJ0IGZhc3QKKyAgIHBhdGhzIGZvciBkaWN0IGFuZCBPcmRlcmVkRGljdCwgYW5kIHJlZmFjdG9yIENQeXRob24gdG8gdXNlIHRoZSBhYnN0cmFjdAorICAgQVBJLiAgSW1wcm92ZW1lbnRzIHRvIHRoZSBhYnN0cmFjdCBBUEkgd291bGQgYmUgdmFsdWFibGUgcmVnYXJkbGVzcy4KKworQWRkaW5nIHRoZSBjaGVja3MgdG8gdGhlIGNvbmNyZXRlIEFQSSB3b3VsZCBoZWxwIG1ha2UgYW55IGludGVycHJldGVyCitzd2l0Y2ggdG8gT3JkZXJlZERpY3QgbGVzcyBwYWluZnVsIGZvciBleHRlbnNpb24gbW9kdWxlcy4gIEhvd2V2ZXIsIHRoaXMKK3dvbid0IHdvcmsuICBUaGUgZXF1aXZhbGVudCBDIEFQSSBjYWxsIHRvIGBkaWN0Ll9fc2V0aXRlbV9fKG9iaiwgaywgdilgCitpcyAnUHlEaWN0X1NldEl0ZW0ob2JqLCBrLCB2KWAuICBUaGlzIGlsbHVzdHJhdGVzIGhvdyBzdWJjbGFzc2VzIGluIEMgY2FsbAordGhlIGJhc2UgY2xhc3MncyBtZXRob2RzLCBzaW5jZSB0aGVyZSBpcyBubyBlcXVpdmFsZW50IG9mIHN1cGVyKCkgaW4gdGhlCitDIEFQSS4gIENhbGxpbmcgaW50byBQeXRob24gZm9yIHBhcmVudCBjbGFzcyBBUEkgd291bGQgd29yaywgYnV0IHNvbWUKK2V4dGVuc2lvbiBtb2R1bGVzIGFscmVhZHkgcmVseSBvbiB0aGlzIGZlYXR1cmUgb2YgdGhlIGNvbmNyZXRlIEFQSS4KKworRm9yIHJlZmVyZW5jZSwgaGVyZSBpcyBhIGJyZWFrZG93biBvZiBzb21lIG9mIHRoZSBkaWN0IGNvbmNyZXRlIEFQSToKKworPT09PT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PQorY29uY3JldGUgQVBJICAgICAgICAgICAgICAgdXNlcyAgICAgICAgICBhYnN0cmFjdCBBUEkKKz09PT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT0KK1B5RGljdF9DaGVjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX0NoZWNrCisoUHlEaWN0X0NoZWNrRXhhY3QpICAgICAgICAgICAgICAgICAgICAgIC0KKyhQeURpY3RfTmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLQorKFB5RGljdFByb3h5X05ldykgICAgICAgICAgICAgICAgICAgICAgICAtCitQeURpY3RfQ2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0KK1B5RGljdF9Db250YWlucyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlTZXF1ZW5jZV9Db250YWlucworUHlEaWN0X0NvcHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtCitQeURpY3RfU2V0SXRlbSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0X1NldEl0ZW0KK1B5RGljdF9TZXRJdGVtU3RyaW5nICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmcKK1B5RGljdF9EZWxJdGVtICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX0RlbEl0ZW0KK1B5RGljdF9EZWxJdGVtU3RyaW5nICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX0RlbEl0ZW1TdHJpbmcKK1B5RGljdF9HZXRJdGVtICAgICAgICAgICAgICAgICAgICAgICAgICAgLQorUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IgICAgICAgICAgICAgICAgICBQeU9iamVjdF9HZXRJdGVtCitfUHlEaWN0X0dldEl0ZW1JZFdpdGhFcnJvciAgICAgICAgICAgICAgIC0KK1B5RGljdF9HZXRJdGVtU3RyaW5nICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcKK1B5RGljdF9JdGVtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX0l0ZW1zCitQeURpY3RfS2V5cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TWFwcGluZ19LZXlzCitQeURpY3RfVmFsdWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TWFwcGluZ19WYWx1ZXMKK1B5RGljdF9TaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX1NpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX0xlbmd0aAorUHlEaWN0X05leHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUl0ZXJfTmV4dAorX1B5RGljdF9OZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtCitQeURpY3RfTWVyZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0KK1B5RGljdF9VcGRhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgLQorUHlEaWN0X01lcmdlRnJvbVNlcTIgICAgICAgICAgICAgICAgICAgICAtCitQeURpY3RfQ2xlYXJGcmVlTGlzdCAgICAgICAgICAgICAgICAgICAgIC0KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX0hhc0tleVN0cmluZworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfSGFzS2V5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09CisKKworVGhlIGRpY3QgSW50ZXJmYWNlIFJlbGF0aXZlIHRvIE9yZGVyZWREaWN0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU2luY2UgT3JkZXJlZERpY3Qgc3ViY2xhc3NlcyBkaWN0LCB1bmRlcnN0YW5kaW5nIHRoZSB2YXJpb3VzIG1ldGhvZHMgYW5kCithdHRyaWJ1dGVzIG9mIGRpY3QgaXMgaW1wb3J0YW50IGZvciBpbXBsZW1lbnRpbmcgT3JkZXJlZERpY3QuCisKK1JlbGV2YW50IFR5cGUgU2xvdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworPT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT0KK3Nsb3QgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgICAgICAgb2JqZWN0ICAgICAgICAgICAgICBkaWN0Cis9PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PQordHBfZGVhbGxvYyAgICAgICAgLSAgICAgICAgICAgICAgICBvYmplY3RfZGVhbGxvYyAgICAgIGRpY3RfZGVhbGxvYwordHBfcmVwciAgICAgICAgICAgX19yZXByX18gICAgICAgICBvYmplY3RfcmVwciAgICAgICAgIGRpY3RfcmVwcgorc3FfY29udGFpbnMgICAgICAgX19jb250YWluc19fICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3RfY29udGFpbnMKK21wX2xlbmd0aCAgICAgICAgIF9fbGVuX18gICAgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0X2xlbmd0aAorbXBfc3Vic2NyaXB0ICAgICAgX19nZXRpdGVtX18gICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3Rfc3Vic2NyaXB0CittcF9hc3Nfc3Vic2NyaXB0ICBfX3NldGl0ZW1fXyAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9hc3Nfc3ViCisgICAgICAgICAgICAgICAgICBfX2RlbGl0ZW1fXwordHBfaGFzaCAgICAgICAgICAgX19oYXNoX18gICAgICAgICBfUHlfSGFzaFBvaW50ZXIgICAgIC4uLl9IYXNoTm90SW1wbAordHBfc3RyICAgICAgICAgICAgX19zdHJfXyAgICAgICAgICBvYmplY3Rfc3RyICAgICAgICAgIC0KK3RwX2dldGF0dHJvICAgICAgIF9fZ2V0YXR0cmlidXRlX18gLi4uX0dlbmVyaWNHZXRBdHRyICAocmVwZWF0ZWQpCisgICAgICAgICAgICAgICAgICBfX2dldGF0dHJfXwordHBfc2V0YXR0cm8gICAgICAgX19zZXRhdHRyX18gICAgICAuLi5fR2VuZXJpY1NldEF0dHIgIChkaXNhYmxlZCkKK3RwX2RvYyAgICAgICAgICAgIF9fZG9jX18gICAgICAgICAgKGxpdGVyYWwpICAgICAgICAgICBkaWN0aW9uYXJ5X2RvYwordHBfdHJhdmVyc2UgICAgICAgLSAgICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3RfdHJhdmVyc2UKK3RwX2NsZWFyICAgICAgICAgIC0gICAgICAgICAgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0X3RwX2NsZWFyCit0cF9yaWNoY29tcGFyZSAgICBfX2VxX18gICAgICAgICAgIG9iamVjdF9yaWNoY29tcGFyZSAgZGljdF9yaWNoY29tcGFyZQorICAgICAgICAgICAgICAgICAgX19uZV9fCit0cF93ZWFrbGlzdG9mZnNldCAoX193ZWFrcmVmX18pICAgIC0gICAgICAgICAgICAgICAgICAgLQordHBfaXRlciAgICAgICAgICAgX19pdGVyX18gICAgICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3RfaXRlcgordHBfZGljdG9mZnNldCAgICAgKF9fZGljdF9fKSAgICAgICAtICAgICAgICAgICAgICAgICAgIC0KK3RwX2luaXQgICAgICAgICAgIF9faW5pdF9fICAgICAgICAgb2JqZWN0X2luaXQgICAgICAgICBkaWN0X2luaXQKK3RwX2FsbG9jICAgICAgICAgIC0gICAgICAgICAgICAgICAgUHlUeXBlX0dlbmVyaWNBbGxvYyAocmVwZWF0ZWQpCit0cF9uZXcgICAgICAgICAgICBfX25ld19fICAgICAgICAgIG9iamVjdF9uZXcgICAgICAgICAgZGljdF9uZXcKK3RwX2ZyZWUgICAgICAgICAgIC0gICAgICAgICAgICAgICAgUHlPYmplY3RfRGVsICAgICAgICBQeU9iamVjdF9HQ19EZWwKKz09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09CisKK1JlbGV2YW50IE1ldGhvZHMKKy0tLS0tLS0tLS0tLS0tLS0KKworPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PQorbWV0aG9kICAgICAgICAgICBvYmplY3QgICAgICAgICAgICAgIGRpY3QKKz09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT0KK19fcmVkdWNlX18gICAgICAgb2JqZWN0X3JlZHVjZSAgICAgICAtCitfX3NpemVvZl9fICAgICAgIG9iamVjdF9zaXplb2YgICAgICAgZGljdF9zaXplb2YKK2NsZWFyICAgICAgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0X2NsZWFyCitjb3B5ICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9jb3B5Citmcm9ta2V5cyAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9mcm9ta2V5cworZ2V0ICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3RfZ2V0CitpdGVtcyAgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdGl0ZW1zX25ldwora2V5cyAgICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3RrZXlzX25ldworcG9wICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3RfcG9wCitwb3BpdGVtICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9wb3BpdGVtCitzZXRkZWZhdWx0ICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9zZXRkZWZhdWx0Cit1cGRhdGUgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF91cGRhdGUKK3ZhbHVlcyAgICAgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0dmFsdWVzX25ldworPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PQorCisKK1B1cmUgUHl0aG9uIE9yZGVyZWREaWN0Cis9PT09PT09PT09PT09PT09PT09PT09PQorCitBcyBhbHJlYWR5IG5vdGVkLCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHB1cmUgUHl0aG9uIE9yZGVyZWREaWN0CitpbXBsZW1lbnRhdGlvbiBpcyBhIGtleSBnb2FsIG9mIHRoaXMgQyBpbXBsZW1lbnRhdGlvbi4gIFRvIGZ1cnRoZXIgdGhhdAorZ29hbCwgaGVyZSdzIGEgc3VtbWFyeSBvZiBob3cgT3JkZXJlZERpY3Qtc3BlY2lmaWMgbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQKK2luIGNvbGxlY3Rpb25zL19faW5pdF9fLnB5LiAgQWxzbyBwcm92aWRlZCBpcyBhbiBpbmRpY2F0aW9uIG9mIHdoaWNoCittZXRob2RzIGRpcmVjdGx5IG11dGF0ZSBvciBpdGVyYXRlIHRoZSBvYmplY3QsIGFzIHdlbGwgYXMgYW55IHJlbGF0aW9uc2hpcAord2l0aCB0aGUgdW5kZXJseWluZyBsaW5rZWQtbGlzdC4KKworPT09PT09PT09PT09PSA9PT09PT09PT09PT09PSA9PSA9PT09PT09PT09PT09PT09ID09PSA9PT0gPT09PQorbWV0aG9kICAgICAgICBpbXBsIHVzZWQgICAgICBsbCB1c2VzICAgICAgICAgICAgIGlucSBtdXQgaXRlcgorPT09PT09PT09PT09PSA9PT09PT09PT09PT09PSA9PSA9PT09PT09PT09PT09PT09ID09PSA9PT0gPT09PQorX19jb250YWluc19fICBkaWN0ICAgICAgICAgICAtICAtICAgICAgICAgICAgICAgIFgKK19fZGVsaXRlbV9fICAgT3JkZXJlZERpY3QgICAgWSAgZGljdC5fX2RlbGl0ZW1fXyAgICAgWAorX19lcV9fICAgICAgICBPcmRlcmVkRGljdCAgICBOICBPcmRlcmVkRGljdCAgICAgIH4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdC5fX2VxX18KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pdGVyX18KK19fZ2V0aXRlbV9fICAgZGljdCAgICAgICAgICAgLSAgLSAgICAgICAgICAgICAgICBYCitfX2l0ZXJfXyAgICAgIE9yZGVyZWREaWN0ICAgIFkgIC0gICAgICAgICAgICAgICAgICAgICAgICBYCitfX2luaXRfXyAgICAgIE9yZGVyZWREaWN0ICAgIE4gIHVwZGF0ZQorX19sZW5fXyAgICAgICBkaWN0ICAgICAgICAgICAtICAtICAgICAgICAgICAgICAgIFgKK19fbmVfXyAgICAgICAgTXV0YWJsZU1hcHBpbmcgLSAgX19lcV9fICAgICAgICAgICB+CitfX3JlZHVjZV9fICAgIE9yZGVyZWREaWN0ICAgIE4gIE9yZGVyZWREaWN0ICAgICAgfgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2l0ZXJfXworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2dldGl0ZW1fXworX19yZXByX18gICAgICBPcmRlcmVkRGljdCAgICBOICBfX2NsYXNzX18gICAgICAgIH4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMKK19fcmV2ZXJzZWRfXyAgT3JkZXJlZERpY3QgICAgWSAgLSAgICAgICAgICAgICAgICAgICAgICAgIFgKK19fc2V0aXRlbV9fICAgT3JkZXJlZERpY3QgICAgWSAgX19jb250YWluc19fICAgICAgICAgWAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fCitfX3NpemVvZl9fICAgIE9yZGVyZWREaWN0ICAgIFkgIF9fbGVuX18gICAgICAgICAgfgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RpY3RfXworY2xlYXIgICAgICAgICBPcmRlcmVkRGljdCAgICBZICBkaWN0LmNsZWFyICAgICAgICAgICBYCitjb3B5ICAgICAgICAgIE9yZGVyZWREaWN0ICAgIE4gIF9fY2xhc3NfXworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2luaXRfXworZnJvbWtleXMgICAgICBPcmRlcmVkRGljdCAgICBOICBfX3NldGl0ZW1fXworZ2V0ICAgICAgICAgICBkaWN0ICAgICAgICAgICAtICAtICAgICAgICAgICAgICAgIH4KK2l0ZW1zICAgICAgICAgTXV0YWJsZU1hcHBpbmcgLSAgSXRlbXNWaWV3ICAgICAgICAgICAgICAgIFgKK2tleXMgICAgICAgICAgTXV0YWJsZU1hcHBpbmcgLSAgS2V5c1ZpZXcgICAgICAgICAgICAgICAgIFgKK21vdmVfdG9fZW5kICAgT3JkZXJlZERpY3QgICAgWSAgLSAgICAgICAgICAgICAgICAgICAgWAorcG9wICAgICAgICAgICBPcmRlcmVkRGljdCAgICBOICBfX2NvbnRhaW5zX18gICAgICAgICBYCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ2V0aXRlbV9fCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVsaXRlbV9fCitwb3BpdGVtICAgICAgIE9yZGVyZWREaWN0ICAgIFkgIGRpY3QucG9wICAgICAgICAgICAgIFgKK3NldGRlZmF1bHQgICAgT3JkZXJlZERpY3QgICAgTiAgX19jb250YWluc19fICAgICAgICAgfgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2dldGl0ZW1fXworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3NldGl0ZW1fXwordXBkYXRlICAgICAgICBNdXRhYmxlTWFwcGluZyAtICBfX3NldGl0ZW1fXyAgICAgICAgICB+Cit2YWx1ZXMgICAgICAgIE11dGFibGVNYXBwaW5nIC0gIFZhbHVlc1ZpZXcgICAgICAgICAgICAgICBYCis9PT09PT09PT09PT09ID09PT09PT09PT09PT09ID09ID09PT09PT09PT09PT09PT0gPT09ID09PSA9PT09CisKK19fcmV2ZXJzZWRfXyBhbmQgbW92ZV90b19lbmQgYXJlIGJvdGggZXhjbHVzaXZlIHRvIE9yZGVyZWREaWN0LgorCisKK0MgT3JkZXJlZERpY3QgSW1wbGVtZW50YXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworPT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PQorc2xvdCAgICAgICAgICAgICAgaW1wbAorPT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PQordHBfZGVhbGxvYyAgICAgICAgb2RpY3RfZGVhbGxvYwordHBfcmVwciAgICAgICAgICAgb2RpY3RfcmVwcgorbXBfYXNzX3N1YnNjcmlwdCAgb2RpY3RfYXNzX3N1YgordHBfZG9jICAgICAgICAgICAgb2RpY3RfZG9jCit0cF90cmF2ZXJzZSAgICAgICBvZGljdF90cmF2ZXJzZQordHBfY2xlYXIgICAgICAgICAgb2RpY3RfdHBfY2xlYXIKK3RwX3JpY2hjb21wYXJlICAgIG9kaWN0X3JpY2hjb21wYXJlCit0cF93ZWFrbGlzdG9mZnNldCAob2Zmc2V0KQordHBfaXRlciAgICAgICAgICAgb2RpY3RfaXRlcgordHBfZGljdG9mZnNldCAgICAgKG9mZnNldCkKK3RwX2luaXQgICAgICAgICAgIG9kaWN0X2luaXQKK3RwX2FsbG9jICAgICAgICAgIChyZXBlYXRlZCkKK3RwX25ldyAgICAgICAgICAgIG9kaWN0X25ldworPT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PQorCis9PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09CittZXRob2QgICAgICAgICAgICBpbXBsCis9PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09CitfX3JlZHVjZV9fICAgICAgICBvZGljdF9yZWR1Y2UKK19fc2l6ZW9mX18gICAgICAgIG9kaWN0X3NpemVvZgorY2xlYXIgICAgICAgICAgICAgb2RpY3RfY2xlYXIKK2NvcHkgICAgICAgICAgICAgIG9kaWN0X2NvcHkKK2Zyb21rZXlzICAgICAgICAgIG9kaWN0X2Zyb21rZXlzCitpdGVtcyAgICAgICAgICAgICBvZGljdGl0ZW1zX25ldwora2V5cyAgICAgICAgICAgICAgb2RpY3RrZXlzX25ldworcG9wICAgICAgICAgICAgICAgb2RpY3RfcG9wCitwb3BpdGVtICAgICAgICAgICBvZGljdF9wb3BpdGVtCitzZXRkZWZhdWx0ICAgICAgICBvZGljdF9zZXRkZWZhdWx0Cit1cGRhdGUgICAgICAgICAgICBvZGljdF91cGRhdGUKK3ZhbHVlcyAgICAgICAgICAgIG9kaWN0dmFsdWVzX25ldworPT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PQorCitJbmhlcml0ZWQgdW5jaGFuZ2VkIGZyb20gb2JqZWN0L2RpY3Q6CisKKz09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT0KK21ldGhvZCAgICAgICAgICAgdHlwZSBmaWVsZAorPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PQorLSAgICAgICAgICAgICAgICB0cF9mcmVlCitfX2NvbnRhaW5zX18gICAgIHRwX2FzX3NlcXVlbmNlLnNxX2NvbnRhaW5zCitfX2dldGF0dHJfXyAgICAgIHRwX2dldGF0dHJvCitfX2dldGF0dHJpYnV0ZV9fIHRwX2dldGF0dHJvCitfX2dldGl0ZW1fXyAgICAgIHRwX2FzX21hcHBpbmcubXBfc3Vic2NyaXB0CitfX2hhc2hfXyAgICAgICAgIHRwX2hhc2gKK19fbGVuX18gICAgICAgICAgdHBfYXNfbWFwcGluZy5tcF9sZW5ndGgKK19fc2V0YXR0cl9fICAgICAgdHBfc2V0YXR0cm8KK19fc3RyX18gICAgICAgICAgdHBfc3RyCitnZXQgICAgICAgICAgICAgIC0KKz09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCitPdGhlciBDaGFsbGVuZ2VzCis9PT09PT09PT09PT09PT09CisKK1ByZXNlcnZpbmcgT3JkZXJpbmcgRHVyaW5nIEl0ZXJhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEdXJpbmcgaXRlcmF0aW9uIHRocm91Z2ggYW4gT3JkZXJlZERpY3QsIGl0IGlzIHBvc3NpYmxlIHRoYXQgaXRlbXMgY291bGQKK2dldCBhZGRlZCwgcmVtb3ZlZCwgb3IgcmVvcmRlcmVkLiAgRm9yIGEgbGlua2VkLWxpc3QgaW1wbGVtZW50YXRpb24sIGFzCit3aXRoIHNvbWUgb3RoZXIgaW1wbGVtZW50YXRpb25zLCB0aGF0IHNpdHVhdGlvbiBtYXkgbGVhZCB0byB1bmRlZmluZWQKK2JlaGF2aW9yLiAgVGhlIGRvY3VtZW50YXRpb24gZm9yIGRpY3QgbWVudGlvbnMgdGhpcyBpbiB0aGUgYGl0ZXIoKWAgc2VjdGlvbgorb2YgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjQvbGlicmFyeS9zdGR0eXBlcy5odG1sI2RpY3Rpb25hcnktdmlldy1vYmplY3RzLgorSW4gdGhpcyBpbXBsZW1lbnRhdGlvbiB3ZSBmb2xsb3cgZGljdCdzIGxlYWQgKGFzIGRvZXMgdGhlIHB1cmUgUHl0aG9uCitpbXBsZW1lbnRhdGlvbikgZm9yIF9faXRlcl9fKCksIGtleXMoKSwgdmFsdWVzKCksIGFuZCBpdGVtcygpLgorCitGb3IgaW50ZXJuYWwgaXRlcmF0aW9uICh1c2luZyBfb2RpY3RfRk9SRUFDSCBvciBub3QpLCB0aGVyZSBpcyBzdGlsbCB0aGUKK3Jpc2sgdGhhdCBub3QgYWxsIG5vZGVzIHRoYXQgd2UgZXhwZWN0IHRvIGJlIHNlZW4gaW4gdGhlIGxvb3AgYWN0dWFsbHkgZ2V0CitzZWVuLiAgVGh1cywgd2UgYXJlIGNhcmVmdWwgaW4gZWFjaCBvZiB0aG9zZSBwbGFjZXMgdG8gZW5zdXJlIHRoYXQgdGhleQorYXJlLiAgVGhpcyBjb21lcywgb2YgY291cnNlLCBhdCBhIHNtYWxsIHByaWNlIGF0IGVhY2ggbG9jYXRpb24uICBUaGUKK3NvbHV0aW9ucyBhcmUgbXVjaCB0aGUgc2FtZSBhcyB0aG9zZSBkZXRhaWxlZCBpbiB0aGUgYFNpdHVhdGlvbiB0aGF0CitFbmRhbmdlcnMgQ29uc2lzdGVuY3lgIHNlY3Rpb24gYWJvdmUuCisKKworUG90ZW50aWFsIE9wdGltaXphdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09CisKKyogQWxsb2NhdGUgdGhlIG5vZGVzIGFzIGEgYmxvY2sgdmlhIG9kX2Zhc3Rfbm9kZXMgaW5zdGVhZCBvZiBpbmRpdmlkdWFsbHkuCisgIC0gU2V0IG5vZGUtPmtleSB0byBOVUxMIHRvIGluZGljYXRlIHRoZSBub2RlIGlzIG5vdC1pbi11c2UuCisgIC0gQWRkIF9vZGljdF9FWElTVFMoKT8KKyAgLSBIb3cgdG8gbWFpbnRhaW4gY29uc2lzdGVuY3kgYWNyb3NzIHJlc2l6ZXM/ICBFeGlzdGluZyBub2RlIHBvaW50ZXJzCisgICAgd291bGQgYmUgaW52YWxpZGF0ZSBhZnRlciBhIHJlc2l6ZSwgd2hpY2ggaXMgcGFydGljdWxhcmx5IHByb2JsZW1hdGljCisgICAgZm9yIHRoZSBpdGVyYXRvcnMuCisqIFVzZSBhIG1vcmUgc3RyZWFtLWxpbmVkIGltcGxlbWVudGF0aW9uIG9mIHVwZGF0ZSgpIGFuZCwgbGlrZWx5IGluZGlyZWN0bHksCisgIF9faW5pdF9fKCkuCisKKyovCisKKy8qIFRPRE8KKworc29vbmVyOgorLSByZWVudHJhbmN5IChtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBhdCBhIHRocmVhZC1zYWZlIHN0YXRlIHdoZW4gY2FsbGluZworICBpbnRvIFB5dGhvbikuICBJJ3ZlIGFscmVhZHkgY2hlY2tlZCB0aGlzIG11bHRpcGxlIHRpbWVzLCBidXQgd2FudCB0bworICBtYWtlIG9uZSBtb3JlIHBhc3MuCistIGFkZCB1bml0IHRlc3RzIGZvciByZWVudHJhbmN5PworCitsYXRlcjoKKy0gbWFrZSB0aGUgZGljdCB2aWV3cyBzdXBwb3J0IHRoZSBmdWxsIHNldCBBUEkgKHRoZSBwdXJlIFB5dGhvbiBpbXBsIGRvZXMpCistIGltcGxlbWVudCBhIGZ1bGxlciBNdXRhYmxlTWFwcGluZyBBUEkgaW4gQz8KKy0gbW92ZSB0aGUgTXV0YWJsZU1hcHBpbmcgaW1wbGVtZW50YXRpb24gdG8gYWJzdHJhY3QuYz8KKy0gb3B0aW1pemUgbXV0YWJsZW1hcHBpbmdfdXBkYXRlCistIHVzZSBQeU9iamVjdF9NQUxMT0MgKHNtYWxsIG9iamVjdCBhbGxvY2F0b3IpIGZvciBvZGljdCBub2Rlcz8KKy0gc3VwcG9ydCBzdWJjbGFzc2VzIGJldHRlciAoZS5nLiBpbiBvZGljdF9yaWNoY29tcGFyZSkKKworKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorI2luY2x1ZGUgImRpY3QtY29tbW9uLmgiCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKwordHlwZWRlZiBzdHJ1Y3QgX29kaWN0bm9kZSBfT0RpY3ROb2RlOworCisvKiBQeU9EaWN0T2JqZWN0ICovCitzdHJ1Y3QgX29kaWN0b2JqZWN0IHsKKyAgICBQeURpY3RPYmplY3Qgb2RfZGljdDsgICAgICAgIC8qIHRoZSB1bmRlcmx5aW5nIGRpY3QgKi8KKyAgICBfT0RpY3ROb2RlICpvZF9maXJzdDsgICAgICAgIC8qIGZpcnN0IG5vZGUgaW4gdGhlIGxpbmtlZCBsaXN0LCBpZiBhbnkgKi8KKyAgICBfT0RpY3ROb2RlICpvZF9sYXN0OyAgICAgICAgIC8qIGxhc3Qgbm9kZSBpbiB0aGUgbGlua2VkIGxpc3QsIGlmIGFueSAqLworICAgIC8qIG9kX2Zhc3Rfbm9kZXMsIG9kX2Zhc3Rfbm9kZXNfc2l6ZSBhbmQgb2RfcmVzaXplX3NlbnRpbmVsIGFyZSBtYW5hZ2VkCisgICAgICogYnkgX29kaWN0X3Jlc2l6ZSgpLgorICAgICAqIE5vdGUgdGhhdCB3ZSByZWx5IG9uIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgZGljdCBmb3IgYm90aC4gKi8KKyAgICBfT0RpY3ROb2RlICoqb2RfZmFzdF9ub2RlczsgIC8qIGhhc2ggdGFibGUgdGhhdCBtaXJyb3JzIHRoZSBkaWN0IHRhYmxlICovCisgICAgUHlfc3NpemVfdCBvZF9mYXN0X25vZGVzX3NpemU7CisgICAgdm9pZCAqb2RfcmVzaXplX3NlbnRpbmVsOyAgICAvKiBjaGFuZ2VzIGlmIG9kaWN0IHNob3VsZCBiZSByZXNpemVkICovCisKKyAgICBzaXplX3Qgb2Rfc3RhdGU7ICAgICAgICAgICAgIC8qIGluY3JlbWVudGVkIHdoZW5ldmVyIHRoZSBMTCBjaGFuZ2VzICovCisgICAgUHlPYmplY3QgKm9kX2luc3RfZGljdDsgICAgICAvKiBPcmRlcmVkRGljdCgpLl9fZGljdF9fICovCisgICAgUHlPYmplY3QgKm9kX3dlYWtyZWZsaXN0OyAgICAvKiBob2xkcyB3ZWFrcmVmcyB0byB0aGUgb2RpY3QgKi8KK307CisKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogb2RpY3Qga2V5cyAoYSBzaW1wbGUgZG91Ymx5LWxpbmtlZCBsaXN0KQorICovCisKK3N0cnVjdCBfb2RpY3Rub2RlIHsKKyAgICBQeU9iamVjdCAqa2V5OworICAgIFB5X2hhc2hfdCBoYXNoOworICAgIF9PRGljdE5vZGUgKm5leHQ7CisgICAgX09EaWN0Tm9kZSAqcHJldjsKK307CisKKyNkZWZpbmUgX29kaWN0bm9kZV9LRVkobm9kZSkgXAorICAgIChub2RlLT5rZXkpCisjZGVmaW5lIF9vZGljdG5vZGVfSEFTSChub2RlKSBcCisgICAgKG5vZGUtPmhhc2gpCisvKiBib3Jyb3dlZCByZWZlcmVuY2UgKi8KKyNkZWZpbmUgX29kaWN0bm9kZV9WQUxVRShub2RlLCBvZCkgXAorICAgIFB5T0RpY3RfR2V0SXRlbVdpdGhFcnJvcigoUHlPYmplY3QgKilvZCwgX29kaWN0bm9kZV9LRVkobm9kZSkpCisjZGVmaW5lIF9vZGljdG5vZGVfUFJFVihub2RlKSAobm9kZS0+cHJldikKKyNkZWZpbmUgX29kaWN0bm9kZV9ORVhUKG5vZGUpIChub2RlLT5uZXh0KQorCisjZGVmaW5lIF9vZGljdF9GSVJTVChvZCkgKCgoUHlPRGljdE9iamVjdCAqKW9kKS0+b2RfZmlyc3QpCisjZGVmaW5lIF9vZGljdF9MQVNUKG9kKSAoKChQeU9EaWN0T2JqZWN0ICopb2QpLT5vZF9sYXN0KQorI2RlZmluZSBfb2RpY3RfRU1QVFkob2QpIChfb2RpY3RfRklSU1Qob2QpID09IE5VTEwpCisjZGVmaW5lIF9vZGljdF9GT1JFQUNIKG9kLCBub2RlKSBcCisgICAgZm9yIChub2RlID0gX29kaWN0X0ZJUlNUKG9kKTsgbm9kZSAhPSBOVUxMOyBub2RlID0gX29kaWN0bm9kZV9ORVhUKG5vZGUpKQorCisjZGVmaW5lIF9vZGljdF9GQVNUX1NJWkUob2QpICgoUHlEaWN0T2JqZWN0ICopb2QpLT5tYV9rZXlzLT5ka19zaXplCisKK3N0YXRpYyB2b2lkCitfb2RpY3RfZnJlZV9mYXN0X25vZGVzKFB5T0RpY3RPYmplY3QgKm9kKSB7CisgICAgaWYgKG9kLT5vZF9mYXN0X25vZGVzKSB7CisgICAgICAgIFB5TWVtX0ZSRUUob2QtPm9kX2Zhc3Rfbm9kZXMpOworICAgIH0KK30KKworLyogUmV0dXJuIHRoZSBpbmRleCBpbnRvIHRoZSBoYXNoIHRhYmxlLCByZWdhcmRsZXNzIG9mIGEgdmFsaWQgbm9kZS4gKi8KK3N0YXRpYyBQeV9zc2l6ZV90Citfb2RpY3RfZ2V0X2luZGV4X3JhdyhQeU9EaWN0T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCit7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9ICgoUHlEaWN0T2JqZWN0ICopb2QpLT5tYV9rZXlzOworCisgICAgZXAgPSAoa2V5cy0+ZGtfbG9va3VwKSgoUHlEaWN0T2JqZWN0ICopb2QsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgIGlmIChlcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgLyogV2UgdXNlIHBvaW50ZXIgYXJpdGhtZXRpYyB0byBnZXQgdGhlIGVudHJ5J3MgaW5kZXggaW50byB0aGUgdGFibGUuICovCisgICAgcmV0dXJuIGVwIC0ga2V5cy0+ZGtfZW50cmllczsKK30KKworLyogUmVwbGFjZSBvZC0+b2RfZmFzdF9ub2RlcyB3aXRoIGEgbmV3IHRhYmxlIG1hdGNoaW5nIHRoZSBzaXplIG9mIGRpY3Qncy4gKi8KK3N0YXRpYyBpbnQKK19vZGljdF9yZXNpemUoUHlPRGljdE9iamVjdCAqb2QpIHsKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisgICAgX09EaWN0Tm9kZSAqKmZhc3Rfbm9kZXMsICpub2RlOworCisgICAgLyogSW5pdGlhbGl6ZSBhIG5ldyAiZmFzdCBub2RlcyIgdGFibGUuICovCisgICAgc2l6ZSA9ICgoUHlEaWN0T2JqZWN0ICopb2QpLT5tYV9rZXlzLT5ka19zaXplOworICAgIGZhc3Rfbm9kZXMgPSBQeU1lbV9ORVcoX09EaWN0Tm9kZSAqLCBzaXplKTsKKyAgICBpZiAoZmFzdF9ub2RlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykKKyAgICAgICAgZmFzdF9ub2Rlc1tpXSA9IE5VTEw7CisKKyAgICAvKiBDb3B5IHRoZSBjdXJyZW50IG5vZGVzIGludG8gdGhlIHRhYmxlLiAqLworICAgIF9vZGljdF9GT1JFQUNIKG9kLCBub2RlKSB7CisgICAgICAgIGkgPSBfb2RpY3RfZ2V0X2luZGV4X3JhdyhvZCwgX29kaWN0bm9kZV9LRVkobm9kZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29kaWN0bm9kZV9IQVNIKG5vZGUpKTsKKyAgICAgICAgaWYgKGkgPCAwKSB7CisgICAgICAgICAgICBQeU1lbV9GUkVFKGZhc3Rfbm9kZXMpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGZhc3Rfbm9kZXNbaV0gPSBub2RlOworICAgIH0KKworICAgIC8qIFJlcGxhY2UgdGhlIG9sZCBmYXN0IG5vZGVzIHRhYmxlLiAqLworICAgIF9vZGljdF9mcmVlX2Zhc3Rfbm9kZXMob2QpOworICAgIG9kLT5vZF9mYXN0X25vZGVzID0gZmFzdF9ub2RlczsKKyAgICBvZC0+b2RfZmFzdF9ub2Rlc19zaXplID0gc2l6ZTsKKyAgICBvZC0+b2RfcmVzaXplX3NlbnRpbmVsID0gKChQeURpY3RPYmplY3QgKilvZCktPm1hX2tleXM7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIFJldHVybiB0aGUgaW5kZXggaW50byB0aGUgaGFzaCB0YWJsZSwgcmVnYXJkbGVzcyBvZiBhIHZhbGlkIG5vZGUuICovCitzdGF0aWMgUHlfc3NpemVfdAorX29kaWN0X2dldF9pbmRleChQeU9EaWN0T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCit7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5czsKKworICAgIGFzc2VydChrZXkgIT0gTlVMTCk7CisgICAga2V5cyA9ICgoUHlEaWN0T2JqZWN0ICopb2QpLT5tYV9rZXlzOworCisgICAgLyogRW5zdXJlIG9kX2Zhc3Rfbm9kZXMgYW5kIGRrX2VudHJpZXMgYXJlIGluIHN5bmMuICovCisgICAgaWYgKG9kLT5vZF9yZXNpemVfc2VudGluZWwgIT0ga2V5cyB8fAorICAgICAgICBvZC0+b2RfZmFzdF9ub2Rlc19zaXplICE9IGtleXMtPmRrX3NpemUpIHsKKyAgICAgICAgaW50IHJlc2l6ZV9yZXMgPSBfb2RpY3RfcmVzaXplKG9kKTsKKyAgICAgICAgaWYgKHJlc2l6ZV9yZXMgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiBfb2RpY3RfZ2V0X2luZGV4X3JhdyhvZCwga2V5LCBoYXNoKTsKK30KKworLyogUmV0dXJucyBOVUxMIGlmIHRoZXJlIHdhcyBzb21lIGVycm9yIG9yIHRoZSBrZXkgd2FzIG5vdCBmb3VuZC4gKi8KK3N0YXRpYyBfT0RpY3ROb2RlICoKK19vZGljdF9maW5kX25vZGVfaGFzaChQeU9EaWN0T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCit7CisgICAgUHlfc3NpemVfdCBpbmRleDsKKworICAgIGlmIChfb2RpY3RfRU1QVFkob2QpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpbmRleCA9IF9vZGljdF9nZXRfaW5kZXgob2QsIGtleSwgaGFzaCk7CisgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIG9kLT5vZF9mYXN0X25vZGVzW2luZGV4XTsKK30KKworc3RhdGljIF9PRGljdE5vZGUgKgorX29kaWN0X2ZpbmRfbm9kZShQeU9EaWN0T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSkKK3sKKyAgICBQeV9zc2l6ZV90IGluZGV4OworICAgIFB5X2hhc2hfdCBoYXNoOworCisgICAgaWYgKF9vZGljdF9FTVBUWShvZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CisgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGluZGV4ID0gX29kaWN0X2dldF9pbmRleChvZCwga2V5LCBoYXNoKTsKKyAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gb2QtPm9kX2Zhc3Rfbm9kZXNbaW5kZXhdOworfQorCitzdGF0aWMgdm9pZAorX29kaWN0X2FkZF9oZWFkKFB5T0RpY3RPYmplY3QgKm9kLCBfT0RpY3ROb2RlICpub2RlKQoreworICAgIF9vZGljdG5vZGVfUFJFVihub2RlKSA9IE5VTEw7CisgICAgX29kaWN0bm9kZV9ORVhUKG5vZGUpID0gX29kaWN0X0ZJUlNUKG9kKTsKKyAgICBpZiAoX29kaWN0X0ZJUlNUKG9kKSA9PSBOVUxMKQorICAgICAgICBfb2RpY3RfTEFTVChvZCkgPSBub2RlOworICAgIGVsc2UKKyAgICAgICAgX29kaWN0bm9kZV9QUkVWKF9vZGljdF9GSVJTVChvZCkpID0gbm9kZTsKKyAgICBfb2RpY3RfRklSU1Qob2QpID0gbm9kZTsKKyAgICBvZC0+b2Rfc3RhdGUrKzsKK30KKworc3RhdGljIHZvaWQKK19vZGljdF9hZGRfdGFpbChQeU9EaWN0T2JqZWN0ICpvZCwgX09EaWN0Tm9kZSAqbm9kZSkKK3sKKyAgICBfb2RpY3Rub2RlX1BSRVYobm9kZSkgPSBfb2RpY3RfTEFTVChvZCk7CisgICAgX29kaWN0bm9kZV9ORVhUKG5vZGUpID0gTlVMTDsKKyAgICBpZiAoX29kaWN0X0xBU1Qob2QpID09IE5VTEwpCisgICAgICAgIF9vZGljdF9GSVJTVChvZCkgPSBub2RlOworICAgIGVsc2UKKyAgICAgICAgX29kaWN0bm9kZV9ORVhUKF9vZGljdF9MQVNUKG9kKSkgPSBub2RlOworICAgIF9vZGljdF9MQVNUKG9kKSA9IG5vZGU7CisgICAgb2QtPm9kX3N0YXRlKys7Cit9CisKKy8qIGFkZHMgdGhlIG5vZGUgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdCAqLworc3RhdGljIGludAorX29kaWN0X2FkZF9uZXdfbm9kZShQeU9EaWN0T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCit7CisgICAgUHlfc3NpemVfdCBpOworICAgIF9PRGljdE5vZGUgKm5vZGU7CisKKyAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICBpID0gX29kaWN0X2dldF9pbmRleChvZCwga2V5LCBoYXNoKTsKKyAgICBpZiAoaSA8IDApIHsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0tleUVycm9yLCBrZXkpOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBlbHNlIGlmIChvZC0+b2RfZmFzdF9ub2Rlc1tpXSAhPSBOVUxMKSB7CisgICAgICAgIC8qIFdlIGFscmVhZHkgaGF2ZSBhIG5vZGUgZm9yIHRoZSBrZXkgc28gdGhlcmUncyBubyBuZWVkIHRvIGFkZCBvbmUuICovCisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBtdXN0IG5vdCBiZSBhZGRlZCB5ZXQgKi8KKyAgICBub2RlID0gKF9PRGljdE5vZGUgKilQeU1lbV9NQUxMT0Moc2l6ZW9mKF9PRGljdE5vZGUpKTsKKyAgICBpZiAobm9kZSA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgX29kaWN0bm9kZV9LRVkobm9kZSkgPSBrZXk7CisgICAgX29kaWN0bm9kZV9IQVNIKG5vZGUpID0gaGFzaDsKKyAgICBfb2RpY3RfYWRkX3RhaWwob2QsIG5vZGUpOworICAgIG9kLT5vZF9mYXN0X25vZGVzW2ldID0gbm9kZTsKKyAgICByZXR1cm4gMDsKK30KKworLyogUHV0dGluZyB0aGUgZGVjcmVmIGFmdGVyIHRoZSBmcmVlIGNhdXNlcyBwcm9ibGVtcy4gKi8KKyNkZWZpbmUgX29kaWN0bm9kZV9ERUFMTE9DKG5vZGUpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgUHlfREVDUkVGKF9vZGljdG5vZGVfS0VZKG5vZGUpKTsgXAorICAgICAgICBQeU1lbV9GUkVFKCh2b2lkICopbm9kZSk7IFwKKyAgICB9IHdoaWxlICgwKQorCisvKiBSZXBlYXRlZCBjYWxscyBvbiB0aGUgc2FtZSBub2RlIGFyZSBuby1vcHMuICovCitzdGF0aWMgdm9pZAorX29kaWN0X3JlbW92ZV9ub2RlKFB5T0RpY3RPYmplY3QgKm9kLCBfT0RpY3ROb2RlICpub2RlKQoreworICAgIGlmIChfb2RpY3RfRklSU1Qob2QpID09IG5vZGUpCisgICAgICAgIF9vZGljdF9GSVJTVChvZCkgPSBfb2RpY3Rub2RlX05FWFQobm9kZSk7CisgICAgZWxzZSBpZiAoX29kaWN0bm9kZV9QUkVWKG5vZGUpICE9IE5VTEwpCisgICAgICAgIF9vZGljdG5vZGVfTkVYVChfb2RpY3Rub2RlX1BSRVYobm9kZSkpID0gX29kaWN0bm9kZV9ORVhUKG5vZGUpOworCisgICAgaWYgKF9vZGljdF9MQVNUKG9kKSA9PSBub2RlKQorICAgICAgICBfb2RpY3RfTEFTVChvZCkgPSBfb2RpY3Rub2RlX1BSRVYobm9kZSk7CisgICAgZWxzZSBpZiAoX29kaWN0bm9kZV9ORVhUKG5vZGUpICE9IE5VTEwpCisgICAgICAgIF9vZGljdG5vZGVfUFJFVihfb2RpY3Rub2RlX05FWFQobm9kZSkpID0gX29kaWN0bm9kZV9QUkVWKG5vZGUpOworCisgICAgX29kaWN0bm9kZV9QUkVWKG5vZGUpID0gTlVMTDsKKyAgICBfb2RpY3Rub2RlX05FWFQobm9kZSkgPSBOVUxMOworICAgIG9kLT5vZF9zdGF0ZSsrOworfQorCisvKiBJZiBzb21lb25lIGNhbGxzIFB5RGljdF9EZWxJdGVtKCkgZGlyZWN0bHkgb24gYW4gT3JkZXJlZERpY3QsIHdlJ2xsCisgICBnZXQgYWxsIHNvcnRzIG9mIHByb2JsZW1zIGhlcmUuICBJbiBQeU9EaWN0X0RlbEl0ZW0gd2UgbWFrZSBzdXJlIHRvCisgICBjYWxsIF9vZGljdF9jbGVhcl9ub2RlIGZpcnN0LgorCisgICBUaGlzIG1hdHRlcnMgaW4gdGhlIGNhc2Ugb2YgY29sbGlkaW5nIGtleXMuICBTdXBwb3NlIHdlIGFkZCAzIGtleXM6CisgICBbQSwgQiwgQ10sIHdoZXJlIHRoZSBoYXNoIG9mIEMgY29sbGlkZXMgd2l0aCBBIGFuZCB0aGUgbmV4dCBwb3NzaWJsZQorICAgaW5kZXggaW4gdGhlIGhhc2ggdGFibGUgaXMgb2NjdXBpZWQgYnkgQi4gIElmIHdlIHJlbW92ZSBCIHRoZW4gZm9yIEMKKyAgIHRoZSBkaWN0J3MgbG9va25vZGUgZnVuYyB3aWxsIGdpdmUgdXMgdGhlIG9sZCBpbmRleCBvZiBCIGluc3RlYWQgb2YKKyAgIHRoZSBpbmRleCB3ZSBnb3QgYmVmb3JlIGRlbGV0aW5nIEIuICBIb3dldmVyLCB0aGUgbm9kZSBmb3IgQyBpbgorICAgb2RfZmFzdF9ub2RlcyBpcyBzdGlsbCBhdCB0aGUgb2xkIGRpY3QgaW5kZXggb2YgQy4gIFRodXMgdG8gYmUgc3VyZQorICAgdGhpbmdzIGRvbid0IGdldCBvdXQgb2Ygc3luYywgd2UgY2xlYXIgdGhlIG5vZGUgaW4gb2RfZmFzdF9ub2RlcworICAgKmJlZm9yZSogY2FsbGluZyBQeURpY3RfRGVsSXRlbS4KKworICAgVGhlIHNhbWUgbXVzdCBiZSBkb25lIGZvciBhbnkgb3RoZXIgT3JkZXJlZERpY3Qgb3BlcmF0aW9ucyB3aGVyZQorICAgd2UgbW9kaWZ5IG9kX2Zhc3Rfbm9kZXMuCisqLworc3RhdGljIGludAorX29kaWN0X2NsZWFyX25vZGUoUHlPRGljdE9iamVjdCAqb2QsIF9PRGljdE5vZGUgKm5vZGUsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCkKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBhc3NlcnQoa2V5ICE9IE5VTEwpOworICAgIGlmIChfb2RpY3RfRU1QVFkob2QpKSB7CisgICAgICAgIC8qIExldCBsYXRlciBjb2RlIGRlY2lkZSBpZiB0aGlzIGlzIGEgS2V5RXJyb3IuICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGkgPSBfb2RpY3RfZ2V0X2luZGV4KG9kLCBrZXksIGhhc2gpOworICAgIGlmIChpIDwgMCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX09jY3VycmVkKCkgPyAtMSA6IDA7CisKKyAgICBpZiAobm9kZSA9PSBOVUxMKQorICAgICAgICBub2RlID0gb2QtPm9kX2Zhc3Rfbm9kZXNbaV07CisgICAgYXNzZXJ0KG5vZGUgPT0gb2QtPm9kX2Zhc3Rfbm9kZXNbaV0pOworICAgIGlmIChub2RlID09IE5VTEwpIHsKKyAgICAgICAgLyogTGV0IGxhdGVyIGNvZGUgZGVjaWRlIGlmIHRoaXMgaXMgYSBLZXlFcnJvci4gKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gTm93IGNsZWFyIHRoZSBub2RlLgorICAgIG9kLT5vZF9mYXN0X25vZGVzW2ldID0gTlVMTDsKKyAgICBfb2RpY3RfcmVtb3ZlX25vZGUob2QsIG5vZGUpOworICAgIF9vZGljdG5vZGVfREVBTExPQyhub2RlKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK19vZGljdF9jbGVhcl9ub2RlcyhQeU9EaWN0T2JqZWN0ICpvZCkKK3sKKyAgICBfT0RpY3ROb2RlICpub2RlLCAqbmV4dDsKKworICAgIGlmICghX29kaWN0X0VNUFRZKG9kKSkgeworICAgICAgICBub2RlID0gX29kaWN0X0ZJUlNUKG9kKTsKKyAgICAgICAgd2hpbGUgKG5vZGUgIT0gTlVMTCkgeworICAgICAgICAgICAgbmV4dCA9IF9vZGljdG5vZGVfTkVYVChub2RlKTsKKyAgICAgICAgICAgIF9vZGljdG5vZGVfREVBTExPQyhub2RlKTsKKyAgICAgICAgICAgIG5vZGUgPSBuZXh0OworICAgICAgICB9CisgICAgICAgIF9vZGljdF9GSVJTVChvZCkgPSBOVUxMOworICAgICAgICBfb2RpY3RfTEFTVChvZCkgPSBOVUxMOworICAgIH0KKworICAgIF9vZGljdF9mcmVlX2Zhc3Rfbm9kZXMob2QpOworICAgIG9kLT5vZF9mYXN0X25vZGVzID0gTlVMTDsKK30KKworLyogVGhlcmUgaXNuJ3QgYW55IG1lbW9yeSBtYW5hZ2VtZW50IG9mIG5vZGVzIHBhc3QgdGhpcyBwb2ludC4gKi8KKyN1bmRlZiBfb2RpY3Rub2RlX0RFQUxMT0MKKworc3RhdGljIGludAorX29kaWN0X2tleXNfZXF1YWwoUHlPRGljdE9iamVjdCAqYSwgUHlPRGljdE9iamVjdCAqYikKK3sKKyAgICBfT0RpY3ROb2RlICpub2RlX2EsICpub2RlX2I7CisKKyAgICBub2RlX2EgPSBfb2RpY3RfRklSU1QoYSk7CisgICAgbm9kZV9iID0gX29kaWN0X0ZJUlNUKGIpOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIGlmIChub2RlX2EgPT0gTlVMTCAmJiBub2RlX2IgPT0gTlVMTCkKKyAgICAgICAgICAgIC8qIHN1Y2Nlc3M6IGhpdCB0aGUgZW5kIG9mIGVhY2ggYXQgdGhlIHNhbWUgdGltZSAqLworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGVsc2UgaWYgKG5vZGVfYSA9PSBOVUxMIHx8IG5vZGVfYiA9PSBOVUxMKQorICAgICAgICAgICAgLyogdW5lcXVhbCBsZW5ndGggKi8KKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGludCByZXMgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKV9vZGljdG5vZGVfS0VZKG5vZGVfYSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKV9vZGljdG5vZGVfS0VZKG5vZGVfYiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0VRKTsKKyAgICAgICAgICAgIGlmIChyZXMgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgICAgICBlbHNlIGlmIChyZXMgPT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgICAgLyogb3RoZXJ3aXNlIGl0IG11c3QgbWF0Y2gsIHNvIG1vdmUgb24gdG8gdGhlIG5leHQgb25lICovCisgICAgICAgICAgICBub2RlX2EgPSBfb2RpY3Rub2RlX05FWFQobm9kZV9hKTsKKyAgICAgICAgICAgIG5vZGVfYiA9IF9vZGljdG5vZGVfTkVYVChub2RlX2IpOworICAgICAgICB9CisgICAgfQorfQorCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIE9yZGVyZWREaWN0IG1hcHBpbmcgbWV0aG9kcworICovCisKKy8qIG1wX2Fzc19zdWJzY3JpcHQ6IF9fc2V0aXRlbV9fKCkgYW5kIF9fZGVsaXRlbV9fKCkgKi8KKworc3RhdGljIGludAorb2RpY3RfbXBfYXNzX3N1YihQeU9EaWN0T2JqZWN0ICpvZCwgUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3KQoreworICAgIGlmICh3ID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeU9EaWN0X0RlbEl0ZW0oKFB5T2JqZWN0ICopb2QsIHYpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5T0RpY3RfU2V0SXRlbSgoUHlPYmplY3QgKilvZCwgdiwgdyk7Cit9CisKKy8qIHRwX2FzX21hcHBpbmcgKi8KKworc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgb2RpY3RfYXNfbWFwcGluZyA9IHsKKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm1wX2xlbmd0aCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyptcF9zdWJzY3JpcHQqLworICAgIChvYmpvYmphcmdwcm9jKW9kaWN0X21wX2Fzc19zdWIsICAgIC8qbXBfYXNzX3N1YnNjcmlwdCovCit9OworCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIE9yZGVyZWREaWN0IG1ldGhvZHMKKyAqLworCisvKiBfX2RlbGl0ZW1fXygpICovCisKK1B5RG9jX1NUUlZBUihvZGljdF9kZWxpdGVtX19kb2NfXywgIm9kLl9fZGVsaXRlbV9fKHkpIDw9PT4gZGVsIG9kW3ldIik7CisKKy8qIF9fZXFfXygpICovCisKK1B5RG9jX1NUUlZBUihvZGljdF9lcV9fZG9jX18sCisib2QuX19lcV9fKHkpIDw9PT4gb2Q9PXkuICBDb21wYXJpc29uIHRvIGFub3RoZXIgT0QgaXMgb3JkZXItc2Vuc2l0aXZlIFxuXAorICAgICAgICB3aGlsZSBjb21wYXJpc29uIHRvIGEgcmVndWxhciBtYXBwaW5nIGlzIG9yZGVyLWluc2Vuc2l0aXZlLlxuXAorICAgICAgICAiKTsKKworLyogZm9yd2FyZCAqLworc3RhdGljIFB5T2JqZWN0ICogb2RpY3RfcmljaGNvbXBhcmUoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3LCBpbnQgb3ApOworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RfZXEoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiKQoreworICAgIHJldHVybiBvZGljdF9yaWNoY29tcGFyZShhLCBiLCBQeV9FUSk7Cit9CisKKy8qIF9faW5pdF9fKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X2luaXRfX2RvY19fLAorIkluaXRpYWxpemUgYW4gb3JkZXJlZCBkaWN0aW9uYXJ5LiAgVGhlIHNpZ25hdHVyZSBpcyB0aGUgc2FtZSBhc1xuXAorICAgICAgICByZWd1bGFyIGRpY3Rpb25hcmllcywgYnV0IGtleXdvcmQgYXJndW1lbnRzIGFyZSBub3QgcmVjb21tZW5kZWQgYmVjYXVzZVxuXAorICAgICAgICB0aGVpciBpbnNlcnRpb24gb3JkZXIgaXMgYXJiaXRyYXJ5LlxuXAorXG5cCisgICAgICAgICIpOworCisvKiBmb3J3YXJkICovCitzdGF0aWMgaW50IG9kaWN0X2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcyk7CisKKy8qIF9faXRlcl9fKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X2l0ZXJfX2RvY19fLCAib2QuX19pdGVyX18oKSA8PT0+IGl0ZXIob2QpIik7CisKK3N0YXRpYyBQeU9iamVjdCAqIG9kaWN0X2l0ZXIoUHlPRGljdE9iamVjdCAqc2VsZik7ICAvKiBmb3J3YXJkICovCisKKy8qIF9fbmVfXygpICovCisKKy8qIE1hcHBpbmcuX19uZV9fKCkgZG9lcyBub3QgaGF2ZSBhIGRvY3N0cmluZy4gKi8KK1B5RG9jX1NUUlZBUihvZGljdF9uZV9fZG9jX18sICIiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0X25lKFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYikKK3sKKyAgICByZXR1cm4gb2RpY3RfcmljaGNvbXBhcmUoYSwgYiwgUHlfTkUpOworfQorCisvKiBfX3JlcHJfXygpICovCisKK1B5RG9jX1NUUlZBUihvZGljdF9yZXByX19kb2NfXywgIm9kLl9fcmVwcl9fKCkgPD09PiByZXByKG9kKSIpOworCitzdGF0aWMgUHlPYmplY3QgKiBvZGljdF9yZXByKFB5T0RpY3RPYmplY3QgKnNlbGYpOyAgLyogZm9yd2FyZCAqLworCisvKiBfX3NldGl0ZW1fXygpICovCisKK1B5RG9jX1NUUlZBUihvZGljdF9zZXRpdGVtX19kb2NfXywgIm9kLl9fc2V0aXRlbV9fKGksIHkpIDw9PT4gb2RbaV09eSIpOworCisvKiBmcm9ta2V5cygpICovCisKK1B5RG9jX1NUUlZBUihvZGljdF9mcm9ta2V5c19fZG9jX18sCisiT0QuZnJvbWtleXMoU1ssIHZdKSAtPiBOZXcgb3JkZXJlZCBkaWN0aW9uYXJ5IHdpdGgga2V5cyBmcm9tIFMuXG5cCisgICAgICAgIElmIG5vdCBzcGVjaWZpZWQsIHRoZSB2YWx1ZSBkZWZhdWx0cyB0byBOb25lLlxuXAorXG5cCisgICAgICAgICIpOworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RfZnJvbWtleXMoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJpdGVyYWJsZSIsICJ2YWx1ZSIsIDB9OworICAgIFB5T2JqZWN0ICpzZXE7CisgICAgUHlPYmplY3QgKnZhbHVlID0gUHlfTm9uZTsKKworICAgIC8qIGJvdGggYm9ycm93ZWQgKi8KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE86ZnJvbWtleXMiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlcSwgJnZhbHVlKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIF9QeURpY3RfRnJvbUtleXMoY2xzLCBzZXEsIHZhbHVlKTsKK30KKworLyogX19zaXplb2ZfXygpICovCisKKy8qIE9yZGVyZWREaWN0Ll9fc2l6ZW9mX18oKSBkb2VzIG5vdCBoYXZlIGEgZG9jc3RyaW5nLiAqLworUHlEb2NfU1RSVkFSKG9kaWN0X3NpemVvZl9fZG9jX18sICIiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0X3NpemVvZihQeU9EaWN0T2JqZWN0ICpvZCkKK3sKKyAgICBQeV9zc2l6ZV90IHJlcyA9IF9QeURpY3RfU2l6ZU9mKChQeURpY3RPYmplY3QgKilvZCk7CisgICAgcmVzICs9IHNpemVvZihfT0RpY3ROb2RlICopICogX29kaWN0X0ZBU1RfU0laRShvZCk7ICAvKiBvZF9mYXN0X25vZGVzICovCisgICAgaWYgKCFfb2RpY3RfRU1QVFkob2QpKSB7CisgICAgICAgIHJlcyArPSBzaXplb2YoX09EaWN0Tm9kZSkgKiBQeU9EaWN0X1NJWkUob2QpOyAgLyogbGlua2VkLWxpc3QgKi8KKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOworfQorCisvKiBfX3JlZHVjZV9fKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X3JlZHVjZV9fZG9jX18sICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9yZWR1Y2UocmVnaXN0ZXIgUHlPRGljdE9iamVjdCAqb2QpCit7CisgICAgX1B5X0lERU5USUZJRVIoX19kaWN0X18pOworICAgIF9QeV9JREVOVElGSUVSKGl0ZW1zKTsKKyAgICBQeU9iamVjdCAqZGljdCA9IE5VTEwsICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICppdGVtc19pdGVyLCAqaXRlbXMsICphcmdzID0gTlVMTDsKKworICAgIC8qIGNhcHR1cmUgYW55IGluc3RhbmNlIHN0YXRlICovCisgICAgZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopb2QsICZQeUlkX19fZGljdF9fKTsKKyAgICBpZiAoZGljdCA9PSBOVUxMKQorICAgICAgICBnb3RvIERvbmU7CisgICAgZWxzZSB7CisgICAgICAgIC8qIG9kLl9fZGljdF9fIGlzbid0IG5lY2Vzc2FyaWx5IGEgZGljdC4uLiAqLworICAgICAgICBQeV9zc2l6ZV90IGRpY3RfbGVuID0gUHlPYmplY3RfTGVuZ3RoKGRpY3QpOworICAgICAgICBpZiAoZGljdF9sZW4gPT0gLTEpCisgICAgICAgICAgICBnb3RvIERvbmU7CisgICAgICAgIGlmICghZGljdF9sZW4pIHsKKyAgICAgICAgICAgIC8qIG5vdGhpbmcgdG8gcGlja2xlIGluIG9kLl9fZGljdF9fICovCisgICAgICAgICAgICBQeV9DTEVBUihkaWN0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIGJ1aWxkIHRoZSByZXN1bHQgKi8KKyAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICAgICAgZ290byBEb25lOworCisgICAgaXRlbXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncygoUHlPYmplY3QgKilvZCwgJlB5SWRfaXRlbXMsIE5VTEwpOworICAgIGlmIChpdGVtcyA9PSBOVUxMKQorICAgICAgICBnb3RvIERvbmU7CisKKyAgICBpdGVtc19pdGVyID0gUHlPYmplY3RfR2V0SXRlcihpdGVtcyk7CisgICAgUHlfREVDUkVGKGl0ZW1zKTsKKyAgICBpZiAoaXRlbXNfaXRlciA9PSBOVUxMKQorICAgICAgICBnb3RvIERvbmU7CisKKyAgICByZXN1bHQgPSBQeVR1cGxlX1BhY2soNSwgUHlfVFlQRShvZCksIGFyZ3MsIGRpY3QgPyBkaWN0IDogUHlfTm9uZSwgUHlfTm9uZSwgaXRlbXNfaXRlcik7CisgICAgUHlfREVDUkVGKGl0ZW1zX2l0ZXIpOworCitEb25lOgorICAgIFB5X1hERUNSRUYoZGljdCk7CisgICAgUHlfWERFQ1JFRihhcmdzKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIHNldGRlZmF1bHQoKSAqLworCitQeURvY19TVFJWQVIob2RpY3Rfc2V0ZGVmYXVsdF9fZG9jX18sCisgICAgICAgICJvZC5zZXRkZWZhdWx0KGtbLGRdKSAtPiBvZC5nZXQoayxkKSwgYWxzbyBzZXQgb2Rba109ZCBpZiBrIG5vdCBpbiBvZCIpOworCisvKiBTa2lwcyBfX21pc3NpbmdfXygpIGNhbGxzLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0X3NldGRlZmF1bHQocmVnaXN0ZXIgUHlPRGljdE9iamVjdCAqb2QsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsia2V5IiwgImRlZmF1bHQiLCAwfTsKKyAgICBQeU9iamVjdCAqa2V5LCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZmFpbG9iaiA9IFB5X05vbmU7CisKKyAgICAvKiBib3RoIGJvcnJvd2VkICovCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOnNldGRlZmF1bHQiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtleSwgJmZhaWxvYmopKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChQeU9EaWN0X0NoZWNrRXhhY3Qob2QpKSB7CisgICAgICAgIHJlc3VsdCA9IFB5T0RpY3RfR2V0SXRlbVdpdGhFcnJvcihvZCwga2V5KTsgIC8qIGJvcnJvd2VkICovCisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBhc3NlcnQoX29kaWN0X2ZpbmRfbm9kZShvZCwga2V5KSA9PSBOVUxMKTsKKyAgICAgICAgICAgIGlmIChQeU9EaWN0X1NldEl0ZW0oKFB5T2JqZWN0ICopb2QsIGtleSwgZmFpbG9iaikgPj0gMCkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhaWxvYmo7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGZhaWxvYmopOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGludCBleGlzdHMgPSBQeVNlcXVlbmNlX0NvbnRhaW5zKChQeU9iamVjdCAqKW9kLCBrZXkpOworICAgICAgICBpZiAoZXhpc3RzIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXhpc3RzKSB7CisgICAgICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9HZXRJdGVtKChQeU9iamVjdCAqKW9kLCBrZXkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5T2JqZWN0X1NldEl0ZW0oKFB5T2JqZWN0ICopb2QsIGtleSwgZmFpbG9iaikgPj0gMCkgeworICAgICAgICAgICAgcmVzdWx0ID0gZmFpbG9iajsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihmYWlsb2JqKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIHBvcCgpICovCisKK1B5RG9jX1NUUlZBUihvZGljdF9wb3BfX2RvY19fLAorIm9kLnBvcChrWyxkXSkgLT4gdiwgcmVtb3ZlIHNwZWNpZmllZCBrZXkgYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZ1xuXAorICAgICAgICB2YWx1ZS4gIElmIGtleSBpcyBub3QgZm91bmQsIGQgaXMgcmV0dXJuZWQgaWYgZ2l2ZW4sIG90aGVyd2lzZSBLZXlFcnJvclxuXAorICAgICAgICBpcyByYWlzZWQuXG5cCitcblwKKyAgICAgICAgIik7CisKKy8qIGZvcndhcmQgKi8KK3N0YXRpYyBQeU9iamVjdCAqIF9vZGljdF9wb3BrZXkoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisKKy8qIFNraXBzIF9fbWlzc2luZ19fKCkgY2FsbHMuICovCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RfcG9wKFB5T2JqZWN0ICpvZCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJrZXkiLCAiZGVmYXVsdCIsIDB9OworICAgIFB5T2JqZWN0ICprZXksICpmYWlsb2JqID0gTlVMTDsKKworICAgIC8qIGJvcnJvd2VkICovCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOnBvcCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2V5LCAmZmFpbG9iaikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIF9vZGljdF9wb3BrZXkob2QsIGtleSwgZmFpbG9iaik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitfb2RpY3RfcG9wa2V5X2hhc2goUHlPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqZmFpbG9iaiwKKyAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCkKK3sKKyAgICBfT0RpY3ROb2RlICpub2RlOworICAgIFB5T2JqZWN0ICp2YWx1ZSA9IE5VTEw7CisKKyAgICAvKiBQb3AgdGhlIG5vZGUgZmlyc3QgdG8gYXZvaWQgYSBwb3NzaWJsZSBkaWN0IHJlc2l6ZSAoZHVlIHRvCisgICAgICAgZXZhbCBsb29wIHJlZW50cmFuY3kpIGFuZCBjb21wbGljYXRpb25zIGR1ZSB0byBoYXNoIGNvbGxpc2lvbgorICAgICAgIHJlc29sdXRpb24uICovCisgICAgbm9kZSA9IF9vZGljdF9maW5kX25vZGVfaGFzaCgoUHlPRGljdE9iamVjdCAqKW9kLCBrZXksIGhhc2gpOworICAgIGlmIChub2RlID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGludCByZXMgPSBfb2RpY3RfY2xlYXJfbm9kZSgoUHlPRGljdE9iamVjdCAqKW9kLCBub2RlLCBrZXksIGhhc2gpOworICAgICAgICBpZiAocmVzIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBOb3cgZGVsZXRlIHRoZSB2YWx1ZSBmcm9tIHRoZSBkaWN0LiAqLworICAgIGlmIChQeU9EaWN0X0NoZWNrRXhhY3Qob2QpKSB7CisgICAgICAgIGlmIChub2RlICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHZhbHVlID0gX1B5RGljdF9HZXRJdGVtX0tub3duSGFzaChvZCwga2V5LCBoYXNoKTsgIC8qIGJvcnJvd2VkICovCisgICAgICAgICAgICBpZiAodmFsdWUgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKF9QeURpY3RfRGVsSXRlbV9Lbm93bkhhc2gob2QsIGtleSwgaGFzaCkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaW50IGV4aXN0cyA9IFB5U2VxdWVuY2VfQ29udGFpbnMob2QsIGtleSk7CisgICAgICAgIGlmIChleGlzdHMgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChleGlzdHMpIHsKKyAgICAgICAgICAgIHZhbHVlID0gUHlPYmplY3RfR2V0SXRlbShvZCwga2V5KTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0RlbEl0ZW0ob2QsIGtleSkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfQ0xFQVIodmFsdWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIEFwcGx5IHRoZSBmYWxsYmFjayB2YWx1ZSwgaWYgbmVjZXNzYXJ5LiAqLworICAgIGlmICh2YWx1ZSA9PSBOVUxMICYmICFQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIGlmIChmYWlsb2JqKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGZhaWxvYmo7CisgICAgICAgICAgICBQeV9JTkNSRUYoZmFpbG9iaik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfS2V5RXJyb3IsIGtleSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitfb2RpY3RfcG9wa2V5KFB5T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKmZhaWxvYmopCit7CisgICAgUHlfaGFzaF90IGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CisgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIF9vZGljdF9wb3BrZXlfaGFzaChvZCwga2V5LCBmYWlsb2JqLCBoYXNoKTsKK30KKworLyogcG9waXRlbSgpICovCisKK1B5RG9jX1NUUlZBUihvZGljdF9wb3BpdGVtX19kb2NfXywKKyJvZC5wb3BpdGVtKCkgLT4gKGssIHYpLCByZXR1cm4gYW5kIHJlbW92ZSBhIChrZXksIHZhbHVlKSBwYWlyLlxuXAorICAgICAgICBQYWlycyBhcmUgcmV0dXJuZWQgaW4gTElGTyBvcmRlciBpZiBsYXN0IGlzIHRydWUgb3IgRklGTyBvcmRlciBpZiBmYWxzZS5cblwKK1xuXAorICAgICAgICAiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0X3BvcGl0ZW0oUHlPYmplY3QgKm9kLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Imxhc3QiLCAwfTsKKyAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWUsICppdGVtID0gTlVMTDsKKyAgICBfT0RpY3ROb2RlICpub2RlOworICAgIGludCBsYXN0ID0gMTsKKworICAgIC8qIHB1bGwgdGhlIGl0ZW0gKi8KKworICAgIC8qIGJvcnJvd2VkICovCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifHA6cG9waXRlbSIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGFzdCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKF9vZGljdF9FTVBUWShvZCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0tleUVycm9yLCAiZGljdGlvbmFyeSBpcyBlbXB0eSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBub2RlID0gbGFzdCA/IF9vZGljdF9MQVNUKG9kKSA6IF9vZGljdF9GSVJTVChvZCk7CisgICAga2V5ID0gX29kaWN0bm9kZV9LRVkobm9kZSk7CisgICAgUHlfSU5DUkVGKGtleSk7CisgICAgdmFsdWUgPSBfb2RpY3RfcG9wa2V5X2hhc2gob2QsIGtleSwgTlVMTCwgX29kaWN0bm9kZV9IQVNIKG5vZGUpKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaXRlbSA9IFB5VHVwbGVfUGFjaygyLCBrZXksIHZhbHVlKTsKKyAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIHJldHVybiBpdGVtOworfQorCisvKiBrZXlzKCkgKi8KKworLyogTXV0YWJsZU1hcHBpbmcua2V5cygpIGRvZXMgbm90IGhhdmUgYSBkb2NzdHJpbmcuICovCitQeURvY19TVFJWQVIob2RpY3Rfa2V5c19fZG9jX18sICIiKTsKKworc3RhdGljIFB5T2JqZWN0ICogb2RpY3RrZXlzX25ldyhQeU9iamVjdCAqb2QpOyAgLyogZm9yd2FyZCAqLworCisvKiB2YWx1ZXMoKSAqLworCisvKiBNdXRhYmxlTWFwcGluZy52YWx1ZXMoKSBkb2VzIG5vdCBoYXZlIGEgZG9jc3RyaW5nLiAqLworUHlEb2NfU1RSVkFSKG9kaWN0X3ZhbHVlc19fZG9jX18sICIiKTsKKworc3RhdGljIFB5T2JqZWN0ICogb2RpY3R2YWx1ZXNfbmV3KFB5T2JqZWN0ICpvZCk7ICAvKiBmb3J3YXJkICovCisKKy8qIGl0ZW1zKCkgKi8KKworLyogTXV0YWJsZU1hcHBpbmcuaXRlbXMoKSBkb2VzIG5vdCBoYXZlIGEgZG9jc3RyaW5nLiAqLworUHlEb2NfU1RSVkFSKG9kaWN0X2l0ZW1zX19kb2NfXywgIiIpOworCitzdGF0aWMgUHlPYmplY3QgKiBvZGljdGl0ZW1zX25ldyhQeU9iamVjdCAqb2QpOyAgLyogZm9yd2FyZCAqLworCisvKiB1cGRhdGUoKSAqLworCisvKiBNdXRhYmxlTWFwcGluZy51cGRhdGUoKSBkb2VzIG5vdCBoYXZlIGEgZG9jc3RyaW5nLiAqLworUHlEb2NfU1RSVkFSKG9kaWN0X3VwZGF0ZV9fZG9jX18sICIiKTsKKworLyogZm9yd2FyZCAqLworc3RhdGljIFB5T2JqZWN0ICogbXV0YWJsZW1hcHBpbmdfdXBkYXRlKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworCisjZGVmaW5lIG9kaWN0X3VwZGF0ZSBtdXRhYmxlbWFwcGluZ191cGRhdGUKKworLyogY2xlYXIoKSAqLworCitQeURvY19TVFJWQVIob2RpY3RfY2xlYXJfX2RvY19fLAorICAgICAgICAgICAgICJvZC5jbGVhcigpIC0+IE5vbmUuICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gb2QuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9jbGVhcihyZWdpc3RlciBQeU9EaWN0T2JqZWN0ICpvZCkKK3sKKyAgICBQeURpY3RfQ2xlYXIoKFB5T2JqZWN0ICopb2QpOworICAgIF9vZGljdF9jbGVhcl9ub2RlcyhvZCk7CisgICAgX29kaWN0X0ZJUlNUKG9kKSA9IE5VTEw7CisgICAgX29kaWN0X0xBU1Qob2QpID0gTlVMTDsKKyAgICBpZiAoX29kaWN0X3Jlc2l6ZShvZCkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworLyogY29weSgpICovCisKKy8qIGZvcndhcmQgKi8KK3N0YXRpYyBpbnQgX1B5T0RpY3RfU2V0SXRlbV9Lbm93bkhhc2goUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90KTsKKworUHlEb2NfU1RSVkFSKG9kaWN0X2NvcHlfX2RvY19fLCAib2QuY29weSgpIC0+IGEgc2hhbGxvdyBjb3B5IG9mIG9kIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9jb3B5KHJlZ2lzdGVyIFB5T0RpY3RPYmplY3QgKm9kKQoreworICAgIF9PRGljdE5vZGUgKm5vZGU7CisgICAgUHlPYmplY3QgKm9kX2NvcHk7CisKKyAgICBpZiAoUHlPRGljdF9DaGVja0V4YWN0KG9kKSkKKyAgICAgICAgb2RfY29weSA9IFB5T0RpY3RfTmV3KCk7CisgICAgZWxzZQorICAgICAgICBvZF9jb3B5ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygoUHlPYmplY3QgKilQeV9UWVBFKG9kKSwgTlVMTCk7CisgICAgaWYgKG9kX2NvcHkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlPRGljdF9DaGVja0V4YWN0KG9kKSkgeworICAgICAgICBfb2RpY3RfRk9SRUFDSChvZCwgbm9kZSkgeworICAgICAgICAgICAgUHlPYmplY3QgKmtleSA9IF9vZGljdG5vZGVfS0VZKG5vZGUpOworICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gX29kaWN0bm9kZV9WQUxVRShub2RlLCBvZCk7CisgICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0tleUVycm9yLCBrZXkpOworICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChfUHlPRGljdF9TZXRJdGVtX0tub3duSGFzaCgoUHlPYmplY3QgKilvZF9jb3B5LCBrZXksIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vZGljdG5vZGVfSEFTSChub2RlKSkgIT0gMCkKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9vZGljdF9GT1JFQUNIKG9kLCBub2RlKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gUHlPYmplY3RfR2V0SXRlbSgoUHlPYmplY3QgKilvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29kaWN0bm9kZV9LRVkobm9kZSkpOworICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfU2V0SXRlbSgoUHlPYmplY3QgKilvZF9jb3B5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb2RpY3Rub2RlX0tFWShub2RlKSwgdmFsdWUpOworICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG9kX2NvcHk7CisKK2ZhaWw6CisgICAgUHlfREVDUkVGKG9kX2NvcHkpOworICAgIHJldHVybiBOVUxMOworfQorCisvKiBfX3JldmVyc2VkX18oKSAqLworCitQeURvY19TVFJWQVIob2RpY3RfcmV2ZXJzZWRfX2RvY19fLCAib2QuX19yZXZlcnNlZF9fKCkgPD09PiByZXZlcnNlZChvZCkiKTsKKworI2RlZmluZSBfb2RpY3RfSVRFUl9SRVZFUlNFRCAxCisjZGVmaW5lIF9vZGljdF9JVEVSX0tFWVMgMgorI2RlZmluZSBfb2RpY3RfSVRFUl9WQUxVRVMgNAorCisvKiBmb3J3YXJkICovCitzdGF0aWMgUHlPYmplY3QgKiBvZGljdGl0ZXJfbmV3KFB5T0RpY3RPYmplY3QgKiwgaW50KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0X3JldmVyc2VkKFB5T0RpY3RPYmplY3QgKm9kKQoreworICAgIHJldHVybiBvZGljdGl0ZXJfbmV3KG9kLCBfb2RpY3RfSVRFUl9LRVlTfF9vZGljdF9JVEVSX1JFVkVSU0VEKTsKK30KKworLyogbW92ZV90b19lbmQoKSAqLworCitQeURvY19TVFJWQVIob2RpY3RfbW92ZV90b19lbmRfX2RvY19fLAorIk1vdmUgYW4gZXhpc3RpbmcgZWxlbWVudCB0byB0aGUgZW5kIChvciBiZWdpbm5pbmcgaWYgbGFzdD09RmFsc2UpLlxuXAorXG5cCisgICAgICAgIFJhaXNlcyBLZXlFcnJvciBpZiB0aGUgZWxlbWVudCBkb2VzIG5vdCBleGlzdC5cblwKKyAgICAgICAgV2hlbiBsYXN0PVRydWUsIGFjdHMgbGlrZSBhIGZhc3QgdmVyc2lvbiBvZiBzZWxmW2tleV09c2VsZi5wb3Aoa2V5KS5cblwKK1xuXAorICAgICAgICAiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0X21vdmVfdG9fZW5kKFB5T0RpY3RPYmplY3QgKm9kLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImtleSIsICJsYXN0IiwgMH07CisgICAgUHlPYmplY3QgKmtleTsKKyAgICBpbnQgbGFzdCA9IDE7CisgICAgX09EaWN0Tm9kZSAqbm9kZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98cDptb3ZlX3RvX2VuZCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2V5LCAmbGFzdCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKF9vZGljdF9FTVBUWShvZCkpIHsKKyAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0tleUVycm9yLCBrZXkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbm9kZSA9IGxhc3QgPyBfb2RpY3RfTEFTVChvZCkgOiBfb2RpY3RfRklSU1Qob2QpOworICAgIGlmIChrZXkgIT0gX29kaWN0bm9kZV9LRVkobm9kZSkpIHsKKyAgICAgICAgbm9kZSA9IF9vZGljdF9maW5kX25vZGUob2QsIGtleSk7CisgICAgICAgIGlmIChub2RlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfS2V5RXJyb3IsIGtleSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAobGFzdCkgeworICAgICAgICAgICAgLyogT25seSBtb3ZlIGlmIG5vdCBhbHJlYWR5IHRoZSBsYXN0IG9uZS4gKi8KKyAgICAgICAgICAgIGlmIChub2RlICE9IF9vZGljdF9MQVNUKG9kKSkgeworICAgICAgICAgICAgICAgIF9vZGljdF9yZW1vdmVfbm9kZShvZCwgbm9kZSk7CisgICAgICAgICAgICAgICAgX29kaWN0X2FkZF90YWlsKG9kLCBub2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIE9ubHkgbW92ZSBpZiBub3QgYWxyZWFkeSB0aGUgZmlyc3Qgb25lLiAqLworICAgICAgICAgICAgaWYgKG5vZGUgIT0gX29kaWN0X0ZJUlNUKG9kKSkgeworICAgICAgICAgICAgICAgIF9vZGljdF9yZW1vdmVfbm9kZShvZCwgbm9kZSk7CisgICAgICAgICAgICAgICAgX29kaWN0X2FkZF9oZWFkKG9kLCBub2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworCisvKiB0cF9tZXRob2RzICovCisKK3N0YXRpYyBQeU1ldGhvZERlZiBvZGljdF9tZXRob2RzW10gPSB7CisKKyAgICAvKiBleHBsaWNpdGx5IGRlZmluZWQgc28gd2UgY2FuIGFsaWduIGRvY3N0cmluZ3Mgd2l0aAorICAgICAqIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0ICovCisgICAgeyJfX2RlbGl0ZW1fXyIsICAgICAoUHlDRnVuY3Rpb24pb2RpY3RfbXBfYXNzX3N1YiwgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9kZWxpdGVtX19kb2NfX30sCisgICAgeyJfX2VxX18iLCAgICAgICAgICAoUHlDRnVuY3Rpb24pb2RpY3RfZXEsICAgICAgICAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9lcV9fZG9jX199LAorICAgIHsiX19pbml0X18iLCAgICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X2luaXQsICAgICAgICBNRVRIX05PQVJHUywKKyAgICAgb2RpY3RfaW5pdF9fZG9jX199LAorICAgIHsiX19pdGVyX18iLCAgICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X2l0ZXIsICAgICAgICBNRVRIX05PQVJHUywKKyAgICAgb2RpY3RfaXRlcl9fZG9jX199LAorICAgIHsiX19uZV9fIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X25lLCAgICAgICAgICBNRVRIX05PQVJHUywKKyAgICAgb2RpY3RfbmVfX2RvY19ffSwKKyAgICB7Il9fcmVwcl9fIiwgICAgICAgIChQeUNGdW5jdGlvbilvZGljdF9yZXByLCAgICAgICAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X3JlcHJfX2RvY19ffSwKKyAgICB7Il9fc2V0aXRlbV9fIiwgICAgIChQeUNGdW5jdGlvbilvZGljdF9tcF9hc3Nfc3ViLCAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X3NldGl0ZW1fX2RvY19ffSwKKyAgICB7ImZyb21rZXlzIiwgICAgICAgIChQeUNGdW5jdGlvbilvZGljdF9mcm9ta2V5cywKKyAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUyB8IE1FVEhfQ0xBU1MsIG9kaWN0X2Zyb21rZXlzX19kb2NfX30sCisKKyAgICAvKiBvdmVycmlkZGVuIGRpY3QgbWV0aG9kcyAqLworICAgIHsiX19zaXplb2ZfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X3NpemVvZiwgICAgICBNRVRIX05PQVJHUywKKyAgICAgb2RpY3Rfc2l6ZW9mX19kb2NfX30sCisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pb2RpY3RfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9yZWR1Y2VfX2RvY19ffSwKKyAgICB7InNldGRlZmF1bHQiLCAgICAgIChQeUNGdW5jdGlvbilvZGljdF9zZXRkZWZhdWx0LAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBvZGljdF9zZXRkZWZhdWx0X19kb2NfX30sCisgICAgeyJwb3AiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pb2RpY3RfcG9wLAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBvZGljdF9wb3BfX2RvY19ffSwKKyAgICB7InBvcGl0ZW0iLCAgICAgICAgIChQeUNGdW5jdGlvbilvZGljdF9wb3BpdGVtLAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBvZGljdF9wb3BpdGVtX19kb2NfX30sCisgICAgeyJrZXlzIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pb2RpY3RrZXlzX25ldywgICAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9rZXlzX19kb2NfX30sCisgICAgeyJ2YWx1ZXMiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pb2RpY3R2YWx1ZXNfbmV3LCAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF92YWx1ZXNfX2RvY19ffSwKKyAgICB7Iml0ZW1zIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilvZGljdGl0ZW1zX25ldywgICAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X2l0ZW1zX19kb2NfX30sCisgICAgeyJ1cGRhdGUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pb2RpY3RfdXBkYXRlLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICBvZGljdF91cGRhdGVfX2RvY19ffSwKKyAgICB7ImNsZWFyIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilvZGljdF9jbGVhciwgICAgICAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X2NsZWFyX19kb2NfX30sCisgICAgeyJjb3B5IiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pb2RpY3RfY29weSwgICAgICAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9jb3B5X19kb2NfX30sCisKKyAgICAvKiBuZXcgbWV0aG9kcyAqLworICAgIHsiX19yZXZlcnNlZF9fIiwgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X3JldmVyc2VkLCAgICBNRVRIX05PQVJHUywKKyAgICAgb2RpY3RfcmV2ZXJzZWRfX2RvY19ffSwKKyAgICB7Im1vdmVfdG9fZW5kIiwgICAgIChQeUNGdW5jdGlvbilvZGljdF9tb3ZlX3RvX2VuZCwKKyAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgb2RpY3RfbW92ZV90b19lbmRfX2RvY19ffSwKKworICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBPcmRlcmVkRGljdCBtZW1iZXJzCisgKi8KKworLyogdHBfbWVtYmVycyAqLworCitzdGF0aWMgUHlNZW1iZXJEZWYgb2RpY3RfbWVtYmVyc1tdID0geworICAgIHsiX19kaWN0X18iLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlPRGljdE9iamVjdCwgb2RfaW5zdF9kaWN0KSwgUkVBRE9OTFl9LAorICAgIHswfQorfTsKKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBPcmRlcmVkRGljdCB0eXBlIHNsb3QgbWV0aG9kcworICovCisKKy8qIHRwX2RlYWxsb2MgKi8KKworc3RhdGljIHZvaWQKK29kaWN0X2RlYWxsb2MoUHlPRGljdE9iamVjdCAqc2VsZikKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworCisgICAgUHlPYmplY3RfR0NfVW5UcmFjayhzZWxmKTsKKyAgICBQeV9UUkFTSENBTl9TQUZFX0JFR0lOKHNlbGYpCisKKyAgICBQeV9YREVDUkVGKHNlbGYtPm9kX2luc3RfZGljdCk7CisgICAgaWYgKHNlbGYtPm9kX3dlYWtyZWZsaXN0ICE9IE5VTEwpCisgICAgICAgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnMoKFB5T2JqZWN0ICopc2VsZik7CisKKyAgICBfb2RpY3RfY2xlYXJfbm9kZXMoc2VsZik7CisKKyAgICAvKiBDYWxsIHRoZSBiYXNlIHRwX2RlYWxsb2MoKS4gIFNpbmNlIGl0IHRvbyB1c2VzIHRoZSB0cmFzaGNhbiBtZWNoYW5pc20sCisgICAgICogdGVtcG9yYXJpbHkgZGVjcmVtZW50IHRyYXNoX2RlbGV0ZV9uZXN0aW5nIHRvIHByZXZlbnQgdHJpZ2dlcmluZyBpdAorICAgICAqIGFuZCBwdXR0aW5nIHRoZSBwYXJ0aWFsbHkgZGVhbGxvY2F0ZWQgb2JqZWN0IG9uIHRoZSB0cmFzaGNhbidzCisgICAgICogdG8tYmUtZGVsZXRlZC1sYXRlciBsaXN0LgorICAgICAqLworICAgIC0tdHN0YXRlLT50cmFzaF9kZWxldGVfbmVzdGluZzsKKyAgICBhc3NlcnQoX3RzdGF0ZS0+dHJhc2hfZGVsZXRlX25lc3RpbmcgPCBQeVRyYXNoX1VOV0lORF9MRVZFTCk7CisgICAgUHlEaWN0X1R5cGUudHBfZGVhbGxvYygoUHlPYmplY3QgKilzZWxmKTsKKyAgICArK3RzdGF0ZS0+dHJhc2hfZGVsZXRlX25lc3Rpbmc7CisKKyAgICBQeV9UUkFTSENBTl9TQUZFX0VORChzZWxmKQorfTsKKworLyogdHBfcmVwciAqLworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RfcmVwcihQeU9EaWN0T2JqZWN0ICpzZWxmKQoreworICAgIGludCBpOworICAgIF9QeV9JREVOVElGSUVSKGl0ZW1zKTsKKyAgICBQeU9iamVjdCAqcGllY2VzID0gTlVMTCwgKnJlc3VsdCA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqY2xhc3NuYW1lOworCisgICAgY2xhc3NuYW1lID0gc3RycmNocihQeV9UWVBFKHNlbGYpLT50cF9uYW1lLCAnLicpOworICAgIGlmIChjbGFzc25hbWUgPT0gTlVMTCkKKyAgICAgICAgY2xhc3NuYW1lID0gUHlfVFlQRShzZWxmKS0+dHBfbmFtZTsKKyAgICBlbHNlCisgICAgICAgIGNsYXNzbmFtZSsrOworCisgICAgaWYgKFB5T0RpY3RfU0laRShzZWxmKSA9PSAwKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKCkiLCBjbGFzc25hbWUpOworCisgICAgaSA9IFB5X1JlcHJFbnRlcigoUHlPYmplY3QgKilzZWxmKTsKKyAgICBpZiAoaSAhPSAwKSB7CisgICAgICAgIHJldHVybiBpID4gMCA/IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIuLi4iKSA6IE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5T0RpY3RfQ2hlY2tFeGFjdChzZWxmKSkgeworICAgICAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKKyAgICAgICAgX09EaWN0Tm9kZSAqbm9kZTsKKyAgICAgICAgcGllY2VzID0gUHlMaXN0X05ldyhQeU9EaWN0X1NJWkUoc2VsZikpOworICAgICAgICBpZiAocGllY2VzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIERvbmU7CisKKyAgICAgICAgX29kaWN0X0ZPUkVBQ0goc2VsZiwgbm9kZSkgeworICAgICAgICAgICAgUHlPYmplY3QgKnBhaXI7CisgICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gX29kaWN0bm9kZV9LRVkobm9kZSk7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBfb2RpY3Rub2RlX1ZBTFVFKG5vZGUsIHNlbGYpOworICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19LZXlFcnJvciwga2V5KTsKKyAgICAgICAgICAgICAgICBnb3RvIERvbmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwYWlyID0gUHlUdXBsZV9QYWNrKDIsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKHBhaXIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIERvbmU7CisKKyAgICAgICAgICAgIGlmIChjb3VudCA8IFB5TGlzdF9HRVRfU0laRShwaWVjZXMpKQorICAgICAgICAgICAgICAgIFB5TGlzdF9TRVRfSVRFTShwaWVjZXMsIGNvdW50LCBwYWlyKTsgIC8qIHN0ZWFscyByZWZlcmVuY2UgKi8KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKHBpZWNlcywgcGFpcikgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihwYWlyKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBEb25lOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocGFpcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3VudCsrOworICAgICAgICB9CisgICAgICAgIGlmIChjb3VudCA8IFB5TGlzdF9HRVRfU0laRShwaWVjZXMpKQorICAgICAgICAgICAgUHlMaXN0X0dFVF9TSVpFKHBpZWNlcykgPSBjb3VudDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKChQeU9iamVjdCAqKXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX2l0ZW1zLCBOVUxMKTsKKyAgICAgICAgaWYgKGl0ZW1zID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIERvbmU7CisgICAgICAgIHBpZWNlcyA9IFB5U2VxdWVuY2VfTGlzdChpdGVtcyk7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtcyk7CisgICAgICAgIGlmIChwaWVjZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICB9CisKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoJVIpIiwgY2xhc3NuYW1lLCBwaWVjZXMpOworCitEb25lOgorICAgIFB5X1hERUNSRUYocGllY2VzKTsKKyAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0ICopc2VsZik7CisgICAgcmV0dXJuIHJlc3VsdDsKK307CisKKy8qIHRwX2RvYyAqLworCitQeURvY19TVFJWQVIob2RpY3RfZG9jLAorICAgICAgICAiRGljdGlvbmFyeSB0aGF0IHJlbWVtYmVycyBpbnNlcnRpb24gb3JkZXIiKTsKKworLyogdHBfdHJhdmVyc2UgKi8KKworc3RhdGljIGludAorb2RpY3RfdHJhdmVyc2UoUHlPRGljdE9iamVjdCAqb2QsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKG9kLT5vZF9pbnN0X2RpY3QpOworICAgIFB5X1ZJU0lUKG9kLT5vZF93ZWFrcmVmbGlzdCk7CisgICAgcmV0dXJuIFB5RGljdF9UeXBlLnRwX3RyYXZlcnNlKChQeU9iamVjdCAqKW9kLCB2aXNpdCwgYXJnKTsKK30KKworLyogdHBfY2xlYXIgKi8KKworc3RhdGljIGludAorb2RpY3RfdHBfY2xlYXIoUHlPRGljdE9iamVjdCAqb2QpCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeV9DTEVBUihvZC0+b2RfaW5zdF9kaWN0KTsKKyAgICBQeV9DTEVBUihvZC0+b2Rfd2Vha3JlZmxpc3QpOworICAgIHJlcyA9IG9kaWN0X2NsZWFyKG9kKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBQeV9ERUNSRUYocmVzKTsKKyAgICByZXR1cm4gMDsKK30KKworLyogdHBfcmljaGNvbXBhcmUgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0X3JpY2hjb21wYXJlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdywgaW50IG9wKQoreworICAgIGlmICghUHlPRGljdF9DaGVjayh2KSB8fCAhUHlEaWN0X0NoZWNrKHcpKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKyAgICB9CisKKyAgICBpZiAob3AgPT0gUHlfRVEgfHwgb3AgPT0gUHlfTkUpIHsKKyAgICAgICAgUHlPYmplY3QgKnJlcywgKmNtcDsKKyAgICAgICAgaW50IGVxOworCisgICAgICAgIGNtcCA9IFB5RGljdF9UeXBlLnRwX3JpY2hjb21wYXJlKHYsIHcsIG9wKTsKKyAgICAgICAgaWYgKGNtcCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICghUHlPRGljdF9DaGVjayh3KSkKKyAgICAgICAgICAgIHJldHVybiBjbXA7CisgICAgICAgIGlmIChvcCA9PSBQeV9FUSAmJiBjbXAgPT0gUHlfRmFsc2UpCisgICAgICAgICAgICByZXR1cm4gY21wOworICAgICAgICBpZiAob3AgPT0gUHlfTkUgJiYgY21wID09IFB5X1RydWUpCisgICAgICAgICAgICByZXR1cm4gY21wOworICAgICAgICBQeV9ERUNSRUYoY21wKTsKKworICAgICAgICAvKiBUcnkgY29tcGFyaW5nIG9kaWN0IGtleXMuICovCisgICAgICAgIGVxID0gX29kaWN0X2tleXNfZXF1YWwoKFB5T0RpY3RPYmplY3QgKil2LCAoUHlPRGljdE9iamVjdCAqKXcpOworICAgICAgICBpZiAoZXEgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgcmVzID0gKGVxID09IChvcCA9PSBQeV9FUSkpID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOworICAgICAgICBQeV9JTkNSRUYocmVzKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9IGVsc2UgeworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisgICAgfQorfTsKKworLyogdHBfaXRlciAqLworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RfaXRlcihQeU9EaWN0T2JqZWN0ICpvZCkKK3sKKyAgICByZXR1cm4gb2RpY3RpdGVyX25ldyhvZCwgX29kaWN0X0lURVJfS0VZUyk7Cit9OworCisvKiB0cF9pbml0ICovCisKK3N0YXRpYyBpbnQKK29kaWN0X2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIFB5X3NzaXplX3QgbGVuID0gUHlPYmplY3RfTGVuZ3RoKGFyZ3MpOworCisgICAgaWYgKGxlbiA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChsZW4gPiAxKSB7CisgICAgICAgIGNoYXIgKm1zZyA9ICJleHBlY3RlZCBhdCBtb3N0IDEgYXJndW1lbnRzLCBnb3QgJWQiOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCBtc2csIGxlbik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBfX2luaXRfXygpIHRyaWdnZXJpbmcgdXBkYXRlKCkgaXMganVzdCB0aGUgd2F5IHRoaW5ncyBhcmUhICovCisgICAgcmVzID0gb2RpY3RfdXBkYXRlKHNlbGYsIGFyZ3MsIGt3ZHMpOworICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK307CisKKy8qIHRwX25ldyAqLworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpkaWN0OworICAgIFB5T0RpY3RPYmplY3QgKm9kOworCisgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoZGljdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG9kID0gKFB5T0RpY3RPYmplY3QgKilQeURpY3RfVHlwZS50cF9uZXcodHlwZSwgYXJncywga3dkcyk7CisgICAgaWYgKG9kID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGRpY3QpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBvZC0+b2RfaW5zdF9kaWN0ID0gZGljdDsKKyAgICAvKiB0eXBlIGNvbnN0cnVjdG9yIGZpbGxzIHRoZSBtZW1vcnkgd2l0aCB6ZXJvcyAoc2VlCisgICAgICAgUHlUeXBlX0dlbmVyaWNBbGxvYygpKSwgdGhlcmUgaXMgbm8gbmVlZCB0byBzZXQgdGhlbSB0byB6ZXJvIGFnYWluICovCisgICAgaWYgKF9vZGljdF9yZXNpemUob2QpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYob2QpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gKFB5T2JqZWN0KilvZDsKK30KKworLyogUHlPRGljdF9UeXBlICovCisKK1B5VHlwZU9iamVjdCBQeU9EaWN0X1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAiY29sbGVjdGlvbnMuT3JkZXJlZERpY3QiLCAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoUHlPRGljdE9iamVjdCksICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3RvcilvZGljdF9kZWFsbG9jLCAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIChyZXByZnVuYylvZGljdF9yZXByLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgICZvZGljdF9hc19tYXBwaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsLyogdHBfZmxhZ3MgKi8KKyAgICBvZGljdF9kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2Mpb2RpY3RfdHJhdmVyc2UsICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSlvZGljdF90cF9jbGVhciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgKHJpY2hjbXBmdW5jKW9kaWN0X3JpY2hjb21wYXJlLCAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIG9mZnNldG9mKFB5T0RpY3RPYmplY3QsIG9kX3dlYWtyZWZsaXN0KSwgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAoZ2V0aXRlcmZ1bmMpb2RpY3RfaXRlciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgb2RpY3RfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgb2RpY3RfbWVtYmVycywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAmUHlEaWN0X1R5cGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgb2Zmc2V0b2YoUHlPRGljdE9iamVjdCwgb2RfaW5zdF9kaWN0KSwgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKW9kaWN0X2luaXQsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIChuZXdmdW5jKW9kaWN0X25ldywgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCit9OworCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIHRoZSBwdWJsaWMgT3JkZXJlZERpY3QgQVBJCisgKi8KKworUHlPYmplY3QgKgorUHlPRGljdF9OZXcodm9pZCkgeworICAgIHJldHVybiBvZGljdF9uZXcoJlB5T0RpY3RfVHlwZSwgTlVMTCwgTlVMTCk7Cit9OworCitzdGF0aWMgaW50CitfUHlPRGljdF9TZXRJdGVtX0tub3duSGFzaChQeU9iamVjdCAqb2QsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoKQoreworICAgIGludCByZXMgPSBfUHlEaWN0X1NldEl0ZW1fS25vd25IYXNoKG9kLCBrZXksIHZhbHVlLCBoYXNoKTsKKyAgICBpZiAocmVzID09IDApIHsKKyAgICAgICAgcmVzID0gX29kaWN0X2FkZF9uZXdfbm9kZSgoUHlPRGljdE9iamVjdCAqKW9kLCBrZXksIGhhc2gpOworICAgICAgICBpZiAocmVzIDwgMCkgeworICAgICAgICAgICAgLyogUmV2ZXJ0IHNldHRpbmcgdGhlIHZhbHVlIG9uIHRoZSBkaWN0ICovCisgICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7CisgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOworICAgICAgICAgICAgKHZvaWQpIF9QeURpY3RfRGVsSXRlbV9Lbm93bkhhc2gob2QsIGtleSwgaGFzaCk7CisgICAgICAgICAgICBfUHlFcnJfQ2hhaW5FeGNlcHRpb25zKGV4YywgdmFsLCB0Yik7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlczsKK307CisKK2ludAorUHlPRGljdF9TZXRJdGVtKFB5T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIFB5X2hhc2hfdCBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOworICAgIGlmIChoYXNoID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIF9QeU9EaWN0X1NldEl0ZW1fS25vd25IYXNoKG9kLCBrZXksIHZhbHVlLCBoYXNoKTsKK307CisKK2ludAorUHlPRGljdF9EZWxJdGVtKFB5T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSkKK3sKKyAgICBpbnQgcmVzOworICAgIFB5X2hhc2hfdCBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOworICAgIGlmIChoYXNoID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmVzID0gX29kaWN0X2NsZWFyX25vZGUoKFB5T0RpY3RPYmplY3QgKilvZCwgTlVMTCwga2V5LCBoYXNoKTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiBfUHlEaWN0X0RlbEl0ZW1fS25vd25IYXNoKG9kLCBrZXksIGhhc2gpOworfTsKKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBUaGUgT3JkZXJlZERpY3Qgdmlld3MgKGtleXMvdmFsdWVzL2l0ZW1zKQorICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgaW50IGtpbmQ7CisgICAgUHlPRGljdE9iamVjdCAqZGlfb2RpY3Q7CisgICAgUHlfc3NpemVfdCBkaV9zaXplOworICAgIHNpemVfdCBkaV9zdGF0ZTsKKyAgICBQeU9iamVjdCAqZGlfY3VycmVudDsKKyAgICBQeU9iamVjdCAqZGlfcmVzdWx0OyAvKiByZXVzYWJsZSByZXN1bHQgdHVwbGUgZm9yIGl0ZXJpdGVtcyAqLworfSBvZGljdGl0ZXJvYmplY3Q7CisKK3N0YXRpYyB2b2lkCitvZGljdGl0ZXJfZGVhbGxvYyhvZGljdGl0ZXJvYmplY3QgKmRpKQoreworICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKGRpKTsKKyAgICBQeV9YREVDUkVGKGRpLT5kaV9vZGljdCk7CisgICAgUHlfWERFQ1JFRihkaS0+ZGlfY3VycmVudCk7CisgICAgaWYgKGRpLT5raW5kICYgKF9vZGljdF9JVEVSX0tFWVMgfCBfb2RpY3RfSVRFUl9WQUxVRVMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihkaS0+ZGlfcmVzdWx0KTsKKyAgICB9CisgICAgUHlPYmplY3RfR0NfRGVsKGRpKTsKK30KKworc3RhdGljIGludAorb2RpY3RpdGVyX3RyYXZlcnNlKG9kaWN0aXRlcm9iamVjdCAqZGksIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKGRpLT5kaV9vZGljdCk7CisgICAgUHlfVklTSVQoZGktPmRpX2N1cnJlbnQpOyAgLyogQSBrZXkgY291bGQgYmUgYW55IHR5cGUsIG5vdCBqdXN0IHN0ci4gKi8KKyAgICBQeV9WSVNJVChkaS0+ZGlfcmVzdWx0KTsKKyAgICByZXR1cm4gMDsKK30KKworLyogSW4gb3JkZXIgdG8gcHJvdGVjdCBhZ2FpbnN0IG1vZGlmaWNhdGlvbnMgZHVyaW5nIGl0ZXJhdGlvbiwgd2UgdHJhY2sKKyAqIHRoZSBjdXJyZW50IGtleSBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50IG5vZGUuICovCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RpdGVyX25leHRrZXkob2RpY3RpdGVyb2JqZWN0ICpkaSkKK3sKKyAgICBQeU9iamVjdCAqa2V5ID0gTlVMTDsKKyAgICBfT0RpY3ROb2RlICpub2RlOworICAgIGludCByZXZlcnNlZCA9IGRpLT5raW5kICYgX29kaWN0X0lURVJfUkVWRVJTRUQ7CisKKyAgICBpZiAoZGktPmRpX29kaWN0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChkaS0+ZGlfY3VycmVudCA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7ICAvKiBXZSdyZSBhbHJlYWR5IGRvbmUuICovCisKKyAgICAvKiBDaGVjayBmb3IgdW5zdXBwb3J0ZWQgY2hhbmdlcy4gKi8KKyAgICBpZiAoZGktPmRpX29kaWN0LT5vZF9zdGF0ZSAhPSBkaS0+ZGlfc3RhdGUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJPcmRlcmVkRGljdCBtdXRhdGVkIGR1cmluZyBpdGVyYXRpb24iKTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKyAgICBpZiAoZGktPmRpX3NpemUgIT0gUHlPRGljdF9TSVpFKGRpLT5kaV9vZGljdCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJPcmRlcmVkRGljdCBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOworICAgICAgICBkaS0+ZGlfc2l6ZSA9IC0xOyAvKiBNYWtlIHRoaXMgc3RhdGUgc3RpY2t5ICovCisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIEdldCB0aGUga2V5LiAqLworICAgIG5vZGUgPSBfb2RpY3RfZmluZF9ub2RlKGRpLT5kaV9vZGljdCwgZGktPmRpX2N1cnJlbnQpOworICAgIGlmIChub2RlID09IE5VTEwpIHsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0tleUVycm9yLCBkaS0+ZGlfY3VycmVudCk7CisgICAgICAgIC8qIE11c3QgaGF2ZSBiZWVuIGRlbGV0ZWQuICovCisgICAgICAgIFB5X0NMRUFSKGRpLT5kaV9jdXJyZW50KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGtleSA9IGRpLT5kaV9jdXJyZW50OworCisgICAgLyogQWR2YW5jZSB0byB0aGUgbmV4dCBrZXkuICovCisgICAgbm9kZSA9IHJldmVyc2VkID8gX29kaWN0bm9kZV9QUkVWKG5vZGUpIDogX29kaWN0bm9kZV9ORVhUKG5vZGUpOworICAgIGlmIChub2RlID09IE5VTEwpIHsKKyAgICAgICAgLyogUmVhY2hlZCB0aGUgZW5kLiAqLworICAgICAgICBkaS0+ZGlfY3VycmVudCA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkaS0+ZGlfY3VycmVudCA9IF9vZGljdG5vZGVfS0VZKG5vZGUpOworICAgICAgICBQeV9JTkNSRUYoZGktPmRpX2N1cnJlbnQpOworICAgIH0KKworICAgIHJldHVybiBrZXk7CisKK2RvbmU6CisgICAgUHlfQ0xFQVIoZGktPmRpX29kaWN0KTsKKyAgICByZXR1cm4ga2V5OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RpdGVyX2l0ZXJuZXh0KG9kaWN0aXRlcm9iamVjdCAqZGkpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCwgKnZhbHVlOworICAgIFB5T2JqZWN0ICprZXkgPSBvZGljdGl0ZXJfbmV4dGtleShkaSk7ICAvKiBuZXcgcmVmZXJlbmNlICovCisKKyAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogSGFuZGxlIHRoZSBrZXlzIGNhc2UuICovCisgICAgaWYgKCEgKGRpLT5raW5kICYgX29kaWN0X0lURVJfVkFMVUVTKSkgeworICAgICAgICByZXR1cm4ga2V5OworICAgIH0KKworICAgIHZhbHVlID0gUHlPRGljdF9HZXRJdGVtKChQeU9iamVjdCAqKWRpLT5kaV9vZGljdCwga2V5KTsgIC8qIGJvcnJvd2VkICovCisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0tleUVycm9yLCBrZXkpOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKyAgICBQeV9JTkNSRUYodmFsdWUpOworCisgICAgLyogSGFuZGxlIHRoZSB2YWx1ZXMgY2FzZS4gKi8KKyAgICBpZiAoIShkaS0+a2luZCAmIF9vZGljdF9JVEVSX0tFWVMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgLyogSGFuZGxlIHRoZSBpdGVtcyBjYXNlLiAqLworICAgIHJlc3VsdCA9IGRpLT5kaV9yZXN1bHQ7CisKKyAgICBpZiAoUHlfUkVGQ05UKHJlc3VsdCkgPT0gMSkgeworICAgICAgICAvKiBub3QgaW4gdXNlIHNvIHdlIGNhbiByZXVzZSBpdAorICAgICAgICAgKiAodGhlIGNvbW1vbiBjYXNlIGR1cmluZyBpdGVyYXRpb24pICovCisgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOworICAgICAgICBQeV9ERUNSRUYoUHlUdXBsZV9HRVRfSVRFTShyZXN1bHQsIDApKTsgIC8qIGJvcnJvd2VkICovCisgICAgICAgIFB5X0RFQ1JFRihQeVR1cGxlX0dFVF9JVEVNKHJlc3VsdCwgMSkpOyAgLyogYm9ycm93ZWQgKi8KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IFB5VHVwbGVfTmV3KDIpOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCAwLCBrZXkpOyAgLyogc3RlYWxzIHJlZmVyZW5jZSAqLworICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCAxLCB2YWx1ZSk7ICAvKiBzdGVhbHMgcmVmZXJlbmNlICovCisgICAgcmV0dXJuIHJlc3VsdDsKKworZG9uZToKKyAgICBQeV9DTEVBUihkaS0+ZGlfY3VycmVudCk7CisgICAgUHlfQ0xFQVIoZGktPmRpX29kaWN0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyogTm8gbmVlZCBmb3IgdHBfY2xlYXIgYmVjYXVzZSBvZGljdGl0ZXJvYmplY3QgaXMgbm90IG11dGFibGUuICovCisKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZyIpOworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RpdGVyX3JlZHVjZShvZGljdGl0ZXJvYmplY3QgKmRpKQoreworICAgIFB5T2JqZWN0ICpsaXN0LCAqaXRlcjsKKworICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOworICAgIGlmICghbGlzdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBpdGVyYXRlIHRoZSB0ZW1wb3JhcnkgaW50byBhIGxpc3QgKi8KKyAgICBmb3IoOzspIHsKKyAgICAgICAgUHlPYmplY3QgKmVsZW1lbnQgPSBvZGljdGl0ZXJfaXRlcm5leHQoZGkpOworICAgICAgICBpZiAoZWxlbWVudCkgeworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbWVudCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKGVsZW1lbnQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogZG9uZSBpdGVyYXRpbmc/ICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpdGVyID0gX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKTsKKyAgICBpZiAoaXRlciA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE4pIiwgaXRlciwgbGlzdCk7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBvZGljdGl0ZXJfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilvZGljdGl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKK1B5VHlwZU9iamVjdCBQeU9EaWN0SXRlcl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgIm9kaWN0X2l0ZXJhdG9yIiwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihvZGljdGl0ZXJvYmplY3QpLCAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKW9kaWN0aXRlcl9kZWFsbG9jLCAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKW9kaWN0aXRlcl90cmF2ZXJzZSwgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAoaXRlcm5leHRmdW5jKW9kaWN0aXRlcl9pdGVybmV4dCwgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIG9kaWN0aXRlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLAorfTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0aXRlcl9uZXcoUHlPRGljdE9iamVjdCAqb2QsIGludCBraW5kKQoreworICAgIG9kaWN0aXRlcm9iamVjdCAqZGk7CisgICAgX09EaWN0Tm9kZSAqbm9kZTsKKyAgICBpbnQgcmV2ZXJzZWQgPSBraW5kICYgX29kaWN0X0lURVJfUkVWRVJTRUQ7CisKKyAgICBkaSA9IFB5T2JqZWN0X0dDX05ldyhvZGljdGl0ZXJvYmplY3QsICZQeU9EaWN0SXRlcl9UeXBlKTsKKyAgICBpZiAoZGkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoa2luZCAmIChfb2RpY3RfSVRFUl9LRVlTIHwgX29kaWN0X0lURVJfVkFMVUVTKSl7CisgICAgICAgIGRpLT5kaV9yZXN1bHQgPSBQeVR1cGxlX1BhY2soMiwgUHlfTm9uZSwgUHlfTm9uZSk7CisgICAgICAgIGlmIChkaS0+ZGlfcmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihkaSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgICAgIGRpLT5kaV9yZXN1bHQgPSBOVUxMOworCisgICAgZGktPmtpbmQgPSBraW5kOworICAgIG5vZGUgPSByZXZlcnNlZCA/IF9vZGljdF9MQVNUKG9kKSA6IF9vZGljdF9GSVJTVChvZCk7CisgICAgZGktPmRpX2N1cnJlbnQgPSBub2RlID8gX29kaWN0bm9kZV9LRVkobm9kZSkgOiBOVUxMOworICAgIFB5X1hJTkNSRUYoZGktPmRpX2N1cnJlbnQpOworICAgIGRpLT5kaV9zaXplID0gUHlPRGljdF9TSVpFKG9kKTsKKyAgICBkaS0+ZGlfc3RhdGUgPSBvZC0+b2Rfc3RhdGU7CisgICAgZGktPmRpX29kaWN0ID0gb2Q7CisgICAgUHlfSU5DUkVGKG9kKTsKKworICAgIF9QeU9iamVjdF9HQ19UUkFDSyhkaSk7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKWRpOworfQorCisvKiBrZXlzKCkgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0a2V5c19pdGVyKF9QeURpY3RWaWV3T2JqZWN0ICpkdikKK3sKKyAgICBpZiAoZHYtPmR2X2RpY3QgPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgcmV0dXJuIG9kaWN0aXRlcl9uZXcoKFB5T0RpY3RPYmplY3QgKilkdi0+ZHZfZGljdCwKKyAgICAgICAgICAgIF9vZGljdF9JVEVSX0tFWVMpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RrZXlzX3JldmVyc2VkKF9QeURpY3RWaWV3T2JqZWN0ICpkdikKK3sKKyAgICBpZiAoZHYtPmR2X2RpY3QgPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgcmV0dXJuIG9kaWN0aXRlcl9uZXcoKFB5T0RpY3RPYmplY3QgKilkdi0+ZHZfZGljdCwKKyAgICAgICAgICAgIF9vZGljdF9JVEVSX0tFWVN8X29kaWN0X0lURVJfUkVWRVJTRUQpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgb2RpY3RrZXlzX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmV2ZXJzZWRfXyIsIChQeUNGdW5jdGlvbilvZGljdGtleXNfcmV2ZXJzZWQsIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgICB7TlVMTCwgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitQeVR5cGVPYmplY3QgUHlPRGljdEtleXNfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJvZGljdF9rZXlzIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIChnZXRpdGVyZnVuYylvZGljdGtleXNfaXRlciwgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIG9kaWN0a2V5c19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgJlB5RGljdEtleXNfVHlwZSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworfTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0a2V5c19uZXcoUHlPYmplY3QgKm9kKQoreworICAgIHJldHVybiBfUHlEaWN0Vmlld19OZXcob2QsICZQeU9EaWN0S2V5c19UeXBlKTsKK30KKworLyogaXRlbXMoKSAqLworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RpdGVtc19pdGVyKF9QeURpY3RWaWV3T2JqZWN0ICpkdikKK3sKKyAgICBpZiAoZHYtPmR2X2RpY3QgPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgcmV0dXJuIG9kaWN0aXRlcl9uZXcoKFB5T0RpY3RPYmplY3QgKilkdi0+ZHZfZGljdCwKKyAgICAgICAgICAgIF9vZGljdF9JVEVSX0tFWVN8X29kaWN0X0lURVJfVkFMVUVTKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0aXRlbXNfcmV2ZXJzZWQoX1B5RGljdFZpZXdPYmplY3QgKmR2KQoreworICAgIGlmIChkdi0+ZHZfZGljdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICByZXR1cm4gb2RpY3RpdGVyX25ldygoUHlPRGljdE9iamVjdCAqKWR2LT5kdl9kaWN0LAorICAgICAgICAgICAgX29kaWN0X0lURVJfS0VZU3xfb2RpY3RfSVRFUl9WQUxVRVN8X29kaWN0X0lURVJfUkVWRVJTRUQpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgb2RpY3RpdGVtc19tZXRob2RzW10gPSB7CisgICAgeyJfX3JldmVyc2VkX18iLCAoUHlDRnVuY3Rpb24pb2RpY3RpdGVtc19yZXZlcnNlZCwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHtOVUxMLCAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKK1B5VHlwZU9iamVjdCBQeU9EaWN0SXRlbXNfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJvZGljdF9pdGVtcyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIChnZXRpdGVyZnVuYylvZGljdGl0ZW1zX2l0ZXIsICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIG9kaWN0aXRlbXNfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgJlB5RGljdEl0ZW1zX1R5cGUsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworfTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0aXRlbXNfbmV3KFB5T2JqZWN0ICpvZCkKK3sKKyAgICByZXR1cm4gX1B5RGljdFZpZXdfTmV3KG9kLCAmUHlPRGljdEl0ZW1zX1R5cGUpOworfQorCisvKiB2YWx1ZXMoKSAqLworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3R2YWx1ZXNfaXRlcihfUHlEaWN0Vmlld09iamVjdCAqZHYpCit7CisgICAgaWYgKGR2LT5kdl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIHJldHVybiBvZGljdGl0ZXJfbmV3KChQeU9EaWN0T2JqZWN0ICopZHYtPmR2X2RpY3QsCisgICAgICAgICAgICBfb2RpY3RfSVRFUl9WQUxVRVMpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3R2YWx1ZXNfcmV2ZXJzZWQoX1B5RGljdFZpZXdPYmplY3QgKmR2KQoreworICAgIGlmIChkdi0+ZHZfZGljdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICByZXR1cm4gb2RpY3RpdGVyX25ldygoUHlPRGljdE9iamVjdCAqKWR2LT5kdl9kaWN0LAorICAgICAgICAgICAgX29kaWN0X0lURVJfVkFMVUVTfF9vZGljdF9JVEVSX1JFVkVSU0VEKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIG9kaWN0dmFsdWVzX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmV2ZXJzZWRfXyIsIChQeUNGdW5jdGlvbilvZGljdHZhbHVlc19yZXZlcnNlZCwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHtOVUxMLCAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKK1B5VHlwZU9iamVjdCBQeU9EaWN0VmFsdWVzX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAib2RpY3RfdmFsdWVzIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAoZ2V0aXRlcmZ1bmMpb2RpY3R2YWx1ZXNfaXRlciwgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBvZGljdHZhbHVlc19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgICZQeURpY3RWYWx1ZXNfVHlwZSwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdHZhbHVlc19uZXcoUHlPYmplY3QgKm9kKQoreworICAgIHJldHVybiBfUHlEaWN0Vmlld19OZXcob2QsICZQeU9EaWN0VmFsdWVzX1R5cGUpOworfQorCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIE11dGFibGVNYXBwcGluZyBpbXBsZW1lbnRhdGlvbnMKKworTWFwcGluZzoKKworPT09PT09PT09PT09ID09PT09PT09PT09CittZXRob2QgICAgICAgdXNlcworPT09PT09PT09PT09ID09PT09PT09PT09CitfX2NvbnRhaW5zX18gX19nZXRpdGVtX18KK19fZXFfXyAgICAgICBpdGVtcworX19nZXRpdGVtX18gICsKK19faXRlcl9fICAgICArCitfX2xlbl9fICAgICAgKworX19uZV9fICAgICAgIF9fZXFfXworZ2V0ICAgICAgICAgIF9fZ2V0aXRlbV9fCitpdGVtcyAgICAgICAgSXRlbXNWaWV3CitrZXlzICAgICAgICAgS2V5c1ZpZXcKK3ZhbHVlcyAgICAgICBWYWx1ZXNWaWV3Cis9PT09PT09PT09PT0gPT09PT09PT09PT0KKworSXRlbXNWaWV3IHVzZXMgX19sZW5fXywgX19pdGVyX18sIGFuZCBfX2dldGl0ZW1fXy4KK0tleXNWaWV3IHVzZXMgX19sZW5fXywgX19pdGVyX18sIGFuZCBfX2NvbnRhaW5zX18uCitWYWx1ZXNWaWV3IHVzZXMgX19sZW5fXywgX19pdGVyX18sIGFuZCBfX2dldGl0ZW1fXy4KKworTXV0YWJsZU1hcHBpbmc6CisKKz09PT09PT09PT09PSA9PT09PT09PT09PQorbWV0aG9kICAgICAgIHVzZXMKKz09PT09PT09PT09PSA9PT09PT09PT09PQorX19kZWxpdGVtX18gICsKK19fc2V0aXRlbV9fICArCitjbGVhciAgICAgICAgcG9waXRlbQorcG9wICAgICAgICAgIF9fZ2V0aXRlbV9fCisgICAgICAgICAgICAgX19kZWxpdGVtX18KK3BvcGl0ZW0gICAgICBfX2l0ZXJfXworICAgICAgICAgICAgIF9nZXRpdGVtX18KKyAgICAgICAgICAgICBfX2RlbGl0ZW1fXworc2V0ZGVmYXVsdCAgIF9fZ2V0aXRlbV9fCisgICAgICAgICAgICAgX19zZXRpdGVtX18KK3VwZGF0ZSAgICAgICBfX3NldGl0ZW1fXworPT09PT09PT09PT09ID09PT09PT09PT09CisqLworCitzdGF0aWMgaW50CittdXRhYmxlbWFwcGluZ19hZGRfcGFpcnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpwYWlycykKK3sKKyAgICBQeU9iamVjdCAqcGFpciwgKml0ZXJhdG9yLCAqdW5leHBlY3RlZDsKKyAgICBpbnQgcmVzID0gMDsKKworICAgIGl0ZXJhdG9yID0gUHlPYmplY3RfR2V0SXRlcihwYWlycyk7CisgICAgaWYgKGl0ZXJhdG9yID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBQeUVycl9DbGVhcigpOworCisgICAgd2hpbGUgKChwYWlyID0gUHlJdGVyX05leHQoaXRlcmF0b3IpKSAhPSBOVUxMKSB7CisgICAgICAgIC8qIGNvdWxkIGJlIG1vcmUgZWZmaWNpZW50IChzZWUgVU5QQUNLX1NFUVVFTkNFIGluIGNldmFsLmMpICovCisgICAgICAgIFB5T2JqZWN0ICprZXkgPSBOVUxMLCAqdmFsdWUgPSBOVUxMOworICAgICAgICBQeU9iamVjdCAqcGFpcl9pdGVyYXRvciA9IFB5T2JqZWN0X0dldEl0ZXIocGFpcik7CisgICAgICAgIGlmIChwYWlyX2l0ZXJhdG9yID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIERvbmU7CisKKyAgICAgICAga2V5ID0gUHlJdGVyX05leHQocGFpcl9pdGVyYXRvcik7CisgICAgICAgIGlmIChrZXkgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmVlZCBtb3JlIHRoYW4gMCB2YWx1ZXMgdG8gdW5wYWNrIik7CisgICAgICAgICAgICBnb3RvIERvbmU7CisgICAgICAgIH0KKworICAgICAgICB2YWx1ZSA9IFB5SXRlcl9OZXh0KHBhaXJfaXRlcmF0b3IpOworICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmVlZCBtb3JlIHRoYW4gMSB2YWx1ZSB0byB1bnBhY2siKTsKKyAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICAgICAgfQorCisgICAgICAgIHVuZXhwZWN0ZWQgPSBQeUl0ZXJfTmV4dChwYWlyX2l0ZXJhdG9yKTsKKyAgICAgICAgaWYgKHVuZXhwZWN0ZWQgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHVuZXhwZWN0ZWQpOworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvbyBtYW55IHZhbHVlcyB0byB1bnBhY2sgKGV4cGVjdGVkIDIpIik7CisgICAgICAgICAgICBnb3RvIERvbmU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gRG9uZTsKKworICAgICAgICByZXMgPSBQeU9iamVjdF9TZXRJdGVtKHNlbGYsIGtleSwgdmFsdWUpOworCitEb25lOgorICAgICAgICBQeV9ERUNSRUYocGFpcik7CisgICAgICAgIFB5X1hERUNSRUYocGFpcl9pdGVyYXRvcik7CisgICAgICAgIFB5X1hERUNSRUYoa2V5KTsKKyAgICAgICAgUHlfWERFQ1JFRih2YWx1ZSk7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIFB5X0RFQ1JFRihpdGVyYXRvcik7CisKKyAgICBpZiAocmVzIDwgMCB8fCBQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbXV0YWJsZW1hcHBpbmdfdXBkYXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgcmVzID0gMDsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBfUHlfSURFTlRJRklFUihpdGVtcyk7CisgICAgX1B5X0lERU5USUZJRVIoa2V5cyk7CisKKyAgICAvKiBmaXJzdCBoYW5kbGUgYXJncywgaWYgYW55ICovCisgICAgYXNzZXJ0KGFyZ3MgPT0gTlVMTCB8fCBQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKKyAgICBsZW4gPSAoYXJncyAhPSBOVUxMKSA/IFB5VHVwbGVfR0VUX1NJWkUoYXJncykgOiAwOworICAgIGlmIChsZW4gPiAxKSB7CisgICAgICAgIGNoYXIgKm1zZyA9ICJ1cGRhdGUoKSB0YWtlcyBhdCBtb3N0IDEgcG9zaXRpb25hbCBhcmd1bWVudCAoJWQgZ2l2ZW4pIjsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgbXNnLCBsZW4pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobGVuKSB7CisgICAgICAgIFB5T2JqZWN0ICpvdGhlciA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7ICAvKiBib3Jyb3dlZCByZWZlcmVuY2UgKi8KKyAgICAgICAgYXNzZXJ0KG90aGVyICE9IE5VTEwpOworICAgICAgICBQeV9JTkNSRUYob3RoZXIpOworICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3Qob3RoZXIpIHx8CisgICAgICAgICAgICBfUHlPYmplY3RfSGFzQXR0cklkKG90aGVyLCAmUHlJZF9pdGVtcykpIHsgIC8qIG5ldmVyIGZhaWxzICovCisgICAgICAgICAgICBQeU9iamVjdCAqaXRlbXM7CisgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3Qob3RoZXIpKQorICAgICAgICAgICAgICAgIGl0ZW1zID0gUHlEaWN0X0l0ZW1zKG90aGVyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob3RoZXIsICZQeUlkX2l0ZW1zLCBOVUxMKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvdGhlcik7CisgICAgICAgICAgICBpZiAoaXRlbXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJlcyA9IG11dGFibGVtYXBwaW5nX2FkZF9wYWlycyhzZWxmLCBpdGVtcyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbXMpOworICAgICAgICAgICAgaWYgKHJlcyA9PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG90aGVyLCAmUHlJZF9rZXlzKSkgeyAgLyogbmV2ZXIgZmFpbHMgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXlzLCAqaXRlcmF0b3IsICprZXk7CisgICAgICAgICAgICBrZXlzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3Mob3RoZXIsICZQeUlkX2tleXMsIE5VTEwpOworICAgICAgICAgICAgaWYgKGtleXMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvdGhlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpdGVyYXRvciA9IFB5T2JqZWN0X0dldEl0ZXIoa2V5cyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoa2V5cyk7CisgICAgICAgICAgICBpZiAoaXRlcmF0b3IgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvdGhlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3aGlsZSAocmVzID09IDAgJiYgKGtleSA9IFB5SXRlcl9OZXh0KGl0ZXJhdG9yKSkpIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBQeU9iamVjdF9HZXRJdGVtKG90aGVyLCBrZXkpOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X1NldEl0ZW0oc2VsZiwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXMgPSAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXIpOworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCB8fCBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzID0gbXV0YWJsZW1hcHBpbmdfYWRkX3BhaXJzKHNlbGYsIG90aGVyKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvdGhlcik7CisgICAgICAgICAgICBpZiAocmVzICE9IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBub3cgaGFuZGxlIGt3YXJncyAqLworICAgIGFzc2VydChrd2FyZ3MgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa3dhcmdzKSk7CisgICAgbGVuID0gKGt3YXJncyAhPSBOVUxMKSA/IFB5RGljdF9TaXplKGt3YXJncykgOiAwOworICAgIGlmIChsZW4gPiAwKSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtcyA9IFB5RGljdF9JdGVtcyhrd2FyZ3MpOworICAgICAgICBpZiAoaXRlbXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXMgPSBtdXRhYmxlbWFwcGluZ19hZGRfcGFpcnMoc2VsZiwgaXRlbXMpOworICAgICAgICBQeV9ERUNSRUYoaXRlbXMpOworICAgICAgICBpZiAocmVzID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CmRpZmYgLS1naXQgYS9PYmplY3RzL3Jhbmdlb2JqZWN0LmMgYi9PYmplY3RzL3Jhbmdlb2JqZWN0LmMKaW5kZXggYzRiYTcxNS4uNDU2NTZkMiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9yYW5nZW9iamVjdC5jCisrKyBiL09iamVjdHMvcmFuZ2VvYmplY3QuYwpAQCAtOTk0LDE1ICs5OTQsMTQgQEAKIGxvbmdyYW5nZWl0ZXJfc2V0c3RhdGUobG9uZ3JhbmdlaXRlcm9iamVjdCAqciwgUHlPYmplY3QgKnN0YXRlKQogewogICAgIGludCBjbXA7Ci0gICAKKwogICAgIC8qIGNsaXAgdGhlIHZhbHVlICovCiAgICAgUHlPYmplY3QgKnplcm8gPSBQeUxvbmdfRnJvbUxvbmcoMCk7CiAgICAgaWYgKHplcm8gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXRlLCB6ZXJvLCBQeV9MVCk7CiAgICAgaWYgKGNtcCA+IDApIHsKLSAgICAgICAgUHlfQ0xFQVIoci0+aW5kZXgpOwotICAgICAgICByLT5pbmRleCA9IHplcm87CisgICAgICAgIFB5X1NFVFJFRihyLT5pbmRleCwgemVybyk7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KICAgICBQeV9ERUNSRUYoemVybyk7CkBAIC0xMDE0LDEwICsxMDEzLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKGNtcCA+IDApCiAgICAgICAgIHN0YXRlID0gci0+bGVuOwotICAgIAotICAgIFB5X0NMRUFSKHItPmluZGV4KTsKLSAgICByLT5pbmRleCA9IHN0YXRlOwotICAgIFB5X0lOQ1JFRihyLT5pbmRleCk7CisKKyAgICBQeV9JTkNSRUYoc3RhdGUpOworICAgIFB5X1NFVFJFRihyLT5pbmRleCwgc3RhdGUpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC0xMDY2LDggKzEwNjQsNyBAQAogICAgIHJlc3VsdCA9IFB5TnVtYmVyX0FkZChyLT5zdGFydCwgcHJvZHVjdCk7CiAgICAgUHlfREVDUkVGKHByb2R1Y3QpOwogICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgUHlfREVDUkVGKHItPmluZGV4KTsKLSAgICAgICAgci0+aW5kZXggPSBuZXdfaW5kZXg7CisgICAgICAgIFB5X1NFVFJFRihyLT5pbmRleCwgbmV3X2luZGV4KTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXdfaW5kZXgpOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zZXRvYmplY3QuYyBiL09iamVjdHMvc2V0b2JqZWN0LmMKaW5kZXggNjFmMWQ5NC4uNTgyZjI4MCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zZXRvYmplY3QuYworKysgYi9PYmplY3RzL3NldG9iamVjdC5jCkBAIC0yMCw3ICsyMCw3IEBACiAKICAgIEFsbCBhcml0aG1ldGljIG9uIGhhc2ggc2hvdWxkIGlnbm9yZSBvdmVyZmxvdy4KIAotICAgVW5saWtlIHRoZSBkaWN0aW9uYXJ5IGltcGxlbWVudGF0aW9uLCB0aGUgbG9va2tleSBmdW5jdGlvbnMgY2FuIHJldHVybgorICAgVW5saWtlIHRoZSBkaWN0aW9uYXJ5IGltcGxlbWVudGF0aW9uLCB0aGUgbG9va2tleSBmdW5jdGlvbiBjYW4gcmV0dXJuCiAgICBOVUxMIGlmIHRoZSByaWNoIGNvbXBhcmlzb24gcmV0dXJucyBhbiBlcnJvci4KICovCiAKQEAgLTUzLDEyMCArNTMsNzMgQEAKICAgICBzZXRlbnRyeSAqZW50cnk7CiAgICAgc2l6ZV90IHBlcnR1cmIgPSBoYXNoOwogICAgIHNpemVfdCBtYXNrID0gc28tPm1hc2s7Ci0gICAgc2l6ZV90IGkgPSAoc2l6ZV90KWhhc2g7IC8qIFVuc2lnbmVkIGZvciBkZWZpbmVkIG92ZXJmbG93IGJlaGF2aW9yLiAqLworICAgIHNpemVfdCBpID0gKHNpemVfdCloYXNoICYgbWFzazsgLyogVW5zaWduZWQgZm9yIGRlZmluZWQgb3ZlcmZsb3cgYmVoYXZpb3IgKi8KICAgICBzaXplX3QgajsKICAgICBpbnQgY21wOwogCi0gICAgZW50cnkgPSAmdGFibGVbaSAmIG1hc2tdOworICAgIGVudHJ5ID0gJnRhYmxlW2ldOwogICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBlbnRyeTsKIAogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIGlmIChlbnRyeS0+a2V5ID09IGtleSkKLSAgICAgICAgICAgIHJldHVybiBlbnRyeTsKLSAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IGhhc2ggJiYgZW50cnktPmtleSAhPSBkdW1teSkgeworICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gaGFzaCkgewogICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0a2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgICAgIC8qIHN0YXJ0a2V5IGNhbm5vdCBiZSBhIGR1bW15IGJlY2F1c2UgdGhlIGR1bW15IGhhc2ggZmllbGQgaXMgLTEgKi8KKyAgICAgICAgICAgIGFzc2VydChzdGFydGtleSAhPSBkdW1teSk7CisgICAgICAgICAgICBpZiAoc3RhcnRrZXkgPT0ga2V5KQorICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzdGFydGtleSkKKyAgICAgICAgICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpCisgICAgICAgICAgICAgICAgJiYgdW5pY29kZV9lcShzdGFydGtleSwga2V5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOwogICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7Ci0gICAgICAgICAgICBpZiAoY21wIDwgMCkKKyAgICAgICAgICAgIGlmIChjbXAgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHVubGlrZWx5ICovCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBpZiAodGFibGUgIT0gc28tPnRhYmxlIHx8IGVudHJ5LT5rZXkgIT0gc3RhcnRrZXkpCisgICAgICAgICAgICBpZiAodGFibGUgIT0gc28tPnRhYmxlIHx8IGVudHJ5LT5rZXkgIT0gc3RhcnRrZXkpICAgICAvKiB1bmxpa2VseSAqLwogICAgICAgICAgICAgICAgIHJldHVybiBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKLSAgICAgICAgICAgIGlmIChjbXAgPiAwKQorICAgICAgICAgICAgaWYgKGNtcCA+IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGlrZWx5ICovCiAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICAgICAgbWFzayA9IHNvLT5tYXNrOyAgICAgICAgICAgICAgICAgLyogaGVscCBhdm9pZCBhIHJlZ2lzdGVyIHNwaWxsICovCiAgICAgICAgIH0KLSAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0gZHVtbXkgJiYgZnJlZXNsb3QgPT0gTlVMTCkKKyAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IC0xICYmIGZyZWVzbG90ID09IE5VTEwpCiAgICAgICAgICAgICBmcmVlc2xvdCA9IGVudHJ5OwogCi0gICAgICAgIGZvciAoaiA9IDEgOyBqIDw9IExJTkVBUl9QUk9CRVMgOyBqKyspIHsKLSAgICAgICAgICAgIGVudHJ5ID0gJnRhYmxlWyhpICsgaikgJiBtYXNrXTsKLSAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBmb3VuZF9udWxsOwotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0ga2V5KQotICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKLSAgICAgICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSBoYXNoICYmIGVudHJ5LT5rZXkgIT0gZHVtbXkpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhcnRrZXkgPSBlbnRyeS0+a2V5OwotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7Ci0gICAgICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOwotICAgICAgICAgICAgICAgIGlmIChjbXAgPCAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICBpZiAodGFibGUgIT0gc28tPnRhYmxlIHx8IGVudHJ5LT5rZXkgIT0gc3RhcnRrZXkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKLSAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICBpZiAoaSArIExJTkVBUl9QUk9CRVMgPD0gbWFzaykgeworICAgICAgICAgICAgZm9yIChqID0gMCA7IGogPCBMSU5FQVJfUFJPQkVTIDsgaisrKSB7CisgICAgICAgICAgICAgICAgZW50cnkrKzsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX251bGw7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IGhhc2gpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0a2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHN0YXJ0a2V5ICE9IGR1bW15KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0a2V5ID09IGtleSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHN0YXJ0a2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgdW5pY29kZV9lcShzdGFydGtleSwga2V5KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKKyAgICAgICAgICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNtcCA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRhYmxlICE9IHNvLT50YWJsZSB8fCBlbnRyeS0+a2V5ICE9IHN0YXJ0a2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldF9sb29ra2V5KHNvLCBrZXksIGhhc2gpOworICAgICAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgICAgICAgICAgbWFzayA9IHNvLT5tYXNrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gLTEgJiYgZnJlZXNsb3QgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZnJlZXNsb3QgPSBlbnRyeTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5ID09IGR1bW15ICYmIGZyZWVzbG90ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZnJlZXNsb3QgPSBlbnRyeTsKICAgICAgICAgfQogCiAgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7Ci0gICAgICAgIGkgPSBpICogNSArIDEgKyBwZXJ0dXJiOworICAgICAgICBpID0gKGkgKiA1ICsgMSArIHBlcnR1cmIpICYgbWFzazsKIAotICAgICAgICBlbnRyeSA9ICZ0YWJsZVtpICYgbWFza107Ci0gICAgICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGZvdW5kX251bGw7Ci0gICAgfQotICBmb3VuZF9udWxsOgotICAgIHJldHVybiBmcmVlc2xvdCA9PSBOVUxMID8gZW50cnkgOiBmcmVlc2xvdDsKLX0KLQotLyoKLSAqIEhhY2tlZCB1cCB2ZXJzaW9uIG9mIHNldF9sb29ra2V5IHdoaWNoIGNhbiBhc3N1bWUga2V5cyBhcmUgYWx3YXlzIHVuaWNvZGU7Ci0gKiBUaGlzIG1lYW5zIHdlIGNhbiBhbHdheXMgdXNlIHVuaWNvZGVfZXEgZGlyZWN0bHkgYW5kIG5vdCBoYXZlIHRvIGNoZWNrIHRvCi0gKiBzZWUgaWYgdGhlIGNvbXBhcmlzb24gYWx0ZXJlZCB0aGUgdGFibGUuCi0gKi8KLXN0YXRpYyBzZXRlbnRyeSAqCi1zZXRfbG9va2tleV91bmljb2RlKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCi17Ci0gICAgc2V0ZW50cnkgKnRhYmxlID0gc28tPnRhYmxlOwotICAgIHNldGVudHJ5ICpmcmVlc2xvdCA9IE5VTEw7Ci0gICAgc2V0ZW50cnkgKmVudHJ5OwotICAgIHNpemVfdCBwZXJ0dXJiID0gaGFzaDsKLSAgICBzaXplX3QgbWFzayA9IHNvLT5tYXNrOwotICAgIHNpemVfdCBpID0gKHNpemVfdCloYXNoOwotICAgIHNpemVfdCBqOwotCi0gICAgLyogTWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBoYXZlIHRvIGhhbmRsZSBub24tdW5pY29kZSBrZXlzLAotICAgICAgIGluY2x1ZGluZyBzdWJjbGFzc2VzIG9mIHN0cjsgZS5nLiwgb25lIHJlYXNvbiB0byBzdWJjbGFzcwotICAgICAgIHN0cmluZ3MgaXMgdG8gb3ZlcnJpZGUgX19lcV9fLCBhbmQgZm9yIHNwZWVkIHdlIGRvbid0IGNhdGVyIHRvCi0gICAgICAgdGhhdCBoZXJlLiAqLwotICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgewotICAgICAgICBzby0+bG9va3VwID0gc2V0X2xvb2trZXk7Ci0gICAgICAgIHJldHVybiBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKLSAgICB9Ci0KLSAgICBlbnRyeSA9ICZ0YWJsZVtpICYgbWFza107Ci0gICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIGVudHJ5OwotCi0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0ga2V5Ci0gICAgICAgICAgICB8fCAoZW50cnktPmhhc2ggPT0gaGFzaAotICAgICAgICAgICAgICAgICYmIGVudHJ5LT5rZXkgIT0gZHVtbXkKLSAgICAgICAgICAgICAgICAmJiB1bmljb2RlX2VxKGVudHJ5LT5rZXksIGtleSkpKQotICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwotICAgICAgICBpZiAoZW50cnktPmtleSA9PSBkdW1teSAmJiBmcmVlc2xvdCA9PSBOVUxMKQotICAgICAgICAgICAgZnJlZXNsb3QgPSBlbnRyeTsKLQotICAgICAgICBmb3IgKGogPSAxIDsgaiA8PSBMSU5FQVJfUFJPQkVTIDsgaisrKSB7Ci0gICAgICAgICAgICBlbnRyeSA9ICZ0YWJsZVsoaSArIGopICYgbWFza107Ci0gICAgICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfbnVsbDsKLSAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5ID09IGtleQotICAgICAgICAgICAgICAgIHx8IChlbnRyeS0+aGFzaCA9PSBoYXNoCi0gICAgICAgICAgICAgICAgICAgICYmIGVudHJ5LT5rZXkgIT0gZHVtbXkKLSAgICAgICAgICAgICAgICAgICAgJiYgdW5pY29kZV9lcShlbnRyeS0+a2V5LCBrZXkpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7Ci0gICAgICAgICAgICBpZiAoZW50cnktPmtleSA9PSBkdW1teSAmJiBmcmVlc2xvdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGZyZWVzbG90ID0gZW50cnk7Ci0gICAgICAgIH0KLQotICAgICAgICBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUOwotICAgICAgICBpID0gaSAqIDUgKyAxICsgcGVydHVyYjsKLQotICAgICAgICBlbnRyeSA9ICZ0YWJsZVtpICYgbWFza107CisgICAgICAgIGVudHJ5ID0gJnRhYmxlW2ldOwogICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmb3VuZF9udWxsOwogICAgIH0KQEAgLTE4OSwyMCArMTQyLDIyIEBACiAgICAgc2V0ZW50cnkgKmVudHJ5OwogICAgIHNpemVfdCBwZXJ0dXJiID0gaGFzaDsKICAgICBzaXplX3QgbWFzayA9IChzaXplX3Qpc28tPm1hc2s7Ci0gICAgc2l6ZV90IGkgPSAoc2l6ZV90KWhhc2g7CisgICAgc2l6ZV90IGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwogICAgIHNpemVfdCBqOwogCiAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgZW50cnkgPSAmdGFibGVbaSAmIG1hc2tdOworICAgICAgICBlbnRyeSA9ICZ0YWJsZVtpXTsKICAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZm91bmRfbnVsbDsKLSAgICAgICAgZm9yIChqID0gMSA7IGogPD0gTElORUFSX1BST0JFUyA7IGorKykgewotICAgICAgICAgICAgZW50cnkgPSAmdGFibGVbKGkgKyBqKSAmIG1hc2tdOwotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX251bGw7CisgICAgICAgIGlmIChpICsgTElORUFSX1BST0JFUyA8PSBtYXNrKSB7CisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgTElORUFSX1BST0JFUzsgaisrKSB7CisgICAgICAgICAgICAgICAgZW50cnkrKzsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX251bGw7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKLSAgICAgICAgaSA9IGkgKiA1ICsgMSArIHBlcnR1cmI7CisgICAgICAgIGkgPSAoaSAqIDUgKyAxICsgcGVydHVyYikgJiBtYXNrOwogICAgIH0KICAgZm91bmRfbnVsbDoKICAgICBlbnRyeS0+a2V5ID0ga2V5OwpAQCAtMjI1LDE1ICsxODAsMTQgQEAKIHsKICAgICBzZXRlbnRyeSAqZW50cnk7CiAKLSAgICBhc3NlcnQoc28tPmxvb2t1cCAhPSBOVUxMKTsKLSAgICBlbnRyeSA9IHNvLT5sb29rdXAoc28sIGtleSwgaGFzaCk7CisgICAgZW50cnkgPSBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKICAgICBpZiAoZW50cnkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpIHsKICAgICAgICAgLyogVU5VU0VEICovCi0gICAgICAgIHNvLT5maWxsKys7CiAgICAgICAgIGVudHJ5LT5rZXkgPSBrZXk7CiAgICAgICAgIGVudHJ5LT5oYXNoID0gaGFzaDsKKyAgICAgICAgc28tPmZpbGwrKzsKICAgICAgICAgc28tPnVzZWQrKzsKICAgICB9IGVsc2UgaWYgKGVudHJ5LT5rZXkgPT0gZHVtbXkpIHsKICAgICAgICAgLyogRFVNTVkgKi8KQEAgLTI1NywxMyArMjExLDE1IEBACiB7CiAgICAgUHlfc3NpemVfdCBuZXdzaXplOwogICAgIHNldGVudHJ5ICpvbGR0YWJsZSwgKm5ld3RhYmxlLCAqZW50cnk7Ci0gICAgUHlfc3NpemVfdCBpOworICAgIFB5X3NzaXplX3Qgb2xkZmlsbCA9IHNvLT5maWxsOworICAgIFB5X3NzaXplX3Qgb2xkdXNlZCA9IHNvLT51c2VkOwogICAgIGludCBpc19vbGR0YWJsZV9tYWxsb2NlZDsKICAgICBzZXRlbnRyeSBzbWFsbF9jb3B5W1B5U2V0X01JTlNJWkVdOwogCiAgICAgYXNzZXJ0KG1pbnVzZWQgPj0gMCk7CiAKICAgICAvKiBGaW5kIHRoZSBzbWFsbGVzdCB0YWJsZSBzaXplID4gbWludXNlZC4gKi8KKyAgICAvKiBYWFggc3BlZWQtdXAgd2l0aCBpbnRyaW5zaWNzICovCiAgICAgZm9yIChuZXdzaXplID0gUHlTZXRfTUlOU0laRTsKICAgICAgICAgIG5ld3NpemUgPD0gbWludXNlZCAmJiBuZXdzaXplID4gMDsKICAgICAgICAgIG5ld3NpemUgPDw9IDEpCkBAIC0zMDcsMTkgKzI2MywyNyBAQAogCiAgICAgLyogTWFrZSB0aGUgc2V0IGVtcHR5LCB1c2luZyB0aGUgbmV3IHRhYmxlLiAqLwogICAgIGFzc2VydChuZXd0YWJsZSAhPSBvbGR0YWJsZSk7Ci0gICAgc28tPnRhYmxlID0gbmV3dGFibGU7Ci0gICAgc28tPm1hc2sgPSBuZXdzaXplIC0gMTsKICAgICBtZW1zZXQobmV3dGFibGUsIDAsIHNpemVvZihzZXRlbnRyeSkgKiBuZXdzaXplKTsKLSAgICBpID0gc28tPnVzZWQ7Ci0gICAgc28tPnVzZWQgPSAwOwogICAgIHNvLT5maWxsID0gMDsKKyAgICBzby0+dXNlZCA9IDA7CisgICAgc28tPm1hc2sgPSBuZXdzaXplIC0gMTsKKyAgICBzby0+dGFibGUgPSBuZXd0YWJsZTsKIAogICAgIC8qIENvcHkgdGhlIGRhdGEgb3ZlcjsgdGhpcyBpcyByZWZjb3VudC1uZXV0cmFsIGZvciBhY3RpdmUgZW50cmllczsKICAgICAgICBkdW1teSBlbnRyaWVzIGFyZW4ndCBjb3BpZWQgb3Zlciwgb2YgY291cnNlICovCi0gICAgZm9yIChlbnRyeSA9IG9sZHRhYmxlOyBpID4gMDsgZW50cnkrKykgewotICAgICAgICBpZiAoZW50cnktPmtleSAhPSBOVUxMICYmIGVudHJ5LT5rZXkgIT0gZHVtbXkpIHsKLSAgICAgICAgICAgIC0taTsKLSAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4oc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICBpZiAob2xkZmlsbCA9PSBvbGR1c2VkKSB7CisgICAgICAgIGZvciAoZW50cnkgPSBvbGR0YWJsZTsgb2xkdXNlZCA+IDA7IGVudHJ5KyspIHsKKyAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5ICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBvbGR1c2VkLS07CisgICAgICAgICAgICAgICAgc2V0X2luc2VydF9jbGVhbihzbywgZW50cnktPmtleSwgZW50cnktPmhhc2gpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChlbnRyeSA9IG9sZHRhYmxlOyBvbGR1c2VkID4gMDsgZW50cnkrKykgeworICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgIT0gTlVMTCAmJiBlbnRyeS0+a2V5ICE9IGR1bW15KSB7CisgICAgICAgICAgICAgICAgb2xkdXNlZC0tOworICAgICAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4oc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtMzQwLDcgKzMwNCw3IEBACiAgICAgYXNzZXJ0KHNvLT5maWxsIDw9IHNvLT5tYXNrKTsgIC8qIGF0IGxlYXN0IG9uZSBlbXB0eSBzbG90ICovCiAgICAgbl91c2VkID0gc28tPnVzZWQ7CiAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgaWYgKHNldF9pbnNlcnRfa2V5KHNvLCBrZXksIGhhc2gpID09IC0xKSB7CisgICAgaWYgKHNldF9pbnNlcnRfa2V5KHNvLCBrZXksIGhhc2gpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMzUyLDggKzMxNiw4IEBACiBzdGF0aWMgaW50CiBzZXRfYWRkX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCiB7CisgICAgc2V0ZW50cnkgZW50cnk7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlfc3NpemVfdCBuX3VzZWQ7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKICAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKQEAgLTM2MSwxNiArMzI1LDkgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGFzc2VydChzby0+ZmlsbCA8PSBzby0+bWFzayk7ICAvKiBhdCBsZWFzdCBvbmUgZW1wdHkgc2xvdCAqLwotICAgIG5fdXNlZCA9IHNvLT51c2VkOwotICAgIFB5X0lOQ1JFRihrZXkpOwotICAgIGlmIChzZXRfaW5zZXJ0X2tleShzbywga2V5LCBoYXNoKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoIShzby0+dXNlZCA+IG5fdXNlZCAmJiBzby0+ZmlsbCozID49IChzby0+bWFzaysxKSoyKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHNldF90YWJsZV9yZXNpemUoc28sIHNvLT51c2VkPjUwMDAwID8gc28tPnVzZWQqMiA6IHNvLT51c2VkKjQpOworICAgIGVudHJ5LmtleSA9IGtleTsKKyAgICBlbnRyeS5oYXNoID0gaGFzaDsKKyAgICByZXR1cm4gc2V0X2FkZF9lbnRyeShzbywgJmVudHJ5KTsKIH0KIAogI2RlZmluZSBESVNDQVJEX05PVEZPVU5EIDAKQEAgLTM3OCwxNiArMzM1LDE4IEBACiAKIHN0YXRpYyBpbnQKIHNldF9kaXNjYXJkX2VudHJ5KFB5U2V0T2JqZWN0ICpzbywgc2V0ZW50cnkgKm9sZGVudHJ5KQoteyAgICAgICBzZXRlbnRyeSAqZW50cnk7Cit7CisgICAgc2V0ZW50cnkgKmVudHJ5OwogICAgIFB5T2JqZWN0ICpvbGRfa2V5OwogCi0gICAgZW50cnkgPSAoc28tPmxvb2t1cCkoc28sIG9sZGVudHJ5LT5rZXksIG9sZGVudHJ5LT5oYXNoKTsKKyAgICBlbnRyeSA9IHNldF9sb29ra2V5KHNvLCBvbGRlbnRyeS0+a2V5LCBvbGRlbnRyeS0+aGFzaCk7CiAgICAgaWYgKGVudHJ5ID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMICB8fCAgZW50cnktPmtleSA9PSBkdW1teSkKICAgICAgICAgcmV0dXJuIERJU0NBUkRfTk9URk9VTkQ7CiAgICAgb2xkX2tleSA9IGVudHJ5LT5rZXk7CiAgICAgZW50cnktPmtleSA9IGR1bW15OworICAgIGVudHJ5LT5oYXNoID0gLTE7CiAgICAgc28tPnVzZWQtLTsKICAgICBQeV9ERUNSRUYob2xkX2tleSk7CiAgICAgcmV0dXJuIERJU0NBUkRfRk9VTkQ7CkBAIC0zOTYsOSArMzU1LDggQEAKIHN0YXRpYyBpbnQKIHNldF9kaXNjYXJkX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCiB7CisgICAgc2V0ZW50cnkgZW50cnk7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgc2V0ZW50cnkgKmVudHJ5OwotICAgIFB5T2JqZWN0ICpvbGRfa2V5OwogCiAgICAgYXNzZXJ0IChQeUFueVNldF9DaGVjayhzbykpOwogCkBAIC00MDgsMTYgKzM2Niw5IEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBlbnRyeSA9IChzby0+bG9va3VwKShzbywga2V5LCBoYXNoKTsKLSAgICBpZiAoZW50cnkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwgIHx8ICBlbnRyeS0+a2V5ID09IGR1bW15KQotICAgICAgICByZXR1cm4gRElTQ0FSRF9OT1RGT1VORDsKLSAgICBvbGRfa2V5ID0gZW50cnktPmtleTsKLSAgICBlbnRyeS0+a2V5ID0gZHVtbXk7Ci0gICAgc28tPnVzZWQtLTsKLSAgICBQeV9ERUNSRUYob2xkX2tleSk7Ci0gICAgcmV0dXJuIERJU0NBUkRfRk9VTkQ7CisgICAgZW50cnkua2V5ID0ga2V5OworICAgIGVudHJ5Lmhhc2ggPSBoYXNoOworICAgIHJldHVybiBzZXRfZGlzY2FyZF9lbnRyeShzbywgJmVudHJ5KTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTQzNCwyMCArMzg1LDE1IEBACiBzdGF0aWMgaW50CiBzZXRfY2xlYXJfaW50ZXJuYWwoUHlTZXRPYmplY3QgKnNvKQogewotICAgIHNldGVudHJ5ICplbnRyeSwgKnRhYmxlOwotICAgIGludCB0YWJsZV9pc19tYWxsb2NlZDsKLSAgICBQeV9zc2l6ZV90IGZpbGw7CisgICAgc2V0ZW50cnkgKmVudHJ5OworICAgIHNldGVudHJ5ICp0YWJsZSA9IHNvLT50YWJsZTsKKyAgICBQeV9zc2l6ZV90IGZpbGwgPSBzby0+ZmlsbDsKKyAgICBQeV9zc2l6ZV90IHVzZWQgPSBzby0+dXNlZDsKKyAgICBpbnQgdGFibGVfaXNfbWFsbG9jZWQgPSB0YWJsZSAhPSBzby0+c21hbGx0YWJsZTsKICAgICBzZXRlbnRyeSBzbWFsbF9jb3B5W1B5U2V0X01JTlNJWkVdOwogCi0jaWZkZWYgUHlfREVCVUcKLSAgICBQeV9zc2l6ZV90IGkgPSAwOwotICAgIFB5X3NzaXplX3QgbiA9IHNvLT5tYXNrICsgMTsKLSNlbmRpZgotCiAgICAgYXNzZXJ0IChQeUFueVNldF9DaGVjayhzbykpOwotICAgIHRhYmxlID0gc28tPnRhYmxlOwogICAgIGFzc2VydCh0YWJsZSAhPSBOVUxMKTsKLSAgICB0YWJsZV9pc19tYWxsb2NlZCA9IHRhYmxlICE9IHNvLT5zbWFsbHRhYmxlOwogCiAgICAgLyogVGhpcyBpcyBkZWxpY2F0ZS4gIER1cmluZyB0aGUgcHJvY2VzcyBvZiBjbGVhcmluZyB0aGUgc2V0LAogICAgICAqIGRlY3JlZnMgY2FuIGNhdXNlIHRoZSBzZXQgdG8gbXV0YXRlLiAgVG8gYXZvaWQgZmF0YWwgY29uZnVzaW9uCkBAIC00NTUsNyArNDAxLDYgQEAKICAgICAgKiBjbGVhcmluZyB0aGUgc2xvdHMsIGFuZCBuZXZlciByZWZlciB0byBhbnl0aGluZyB2aWEgc28tPnJlZiB3aGlsZQogICAgICAqIGNsZWFyaW5nLgogICAgICAqLwotICAgIGZpbGwgPSBzby0+ZmlsbDsKICAgICBpZiAodGFibGVfaXNfbWFsbG9jZWQpCiAgICAgICAgIHNldF9lbXB0eV90b19taW5zaXplKHNvKTsKIApAQCAtNDc0LDIwICs0MTksMTEgQEAKICAgICAgKiBhc3NlcnQgdGhhdCB0aGUgcmVmY291bnQgb24gdGFibGUgaXMgMSBub3csIGkuZS4gdGhhdCB0aGlzIGZ1bmN0aW9uCiAgICAgICogaGFzIHVuaXF1ZSBhY2Nlc3MgdG8gaXQsIHNvIGRlY3JlZiBzaWRlLWVmZmVjdHMgY2FuJ3QgYWx0ZXIgaXQuCiAgICAgICovCi0gICAgZm9yIChlbnRyeSA9IHRhYmxlOyBmaWxsID4gMDsgKytlbnRyeSkgewotI2lmZGVmIFB5X0RFQlVHCi0gICAgICAgIGFzc2VydChpIDwgbik7Ci0gICAgICAgICsraTsKLSNlbmRpZgotICAgICAgICBpZiAoZW50cnktPmtleSkgewotICAgICAgICAgICAgLS1maWxsOwotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgIT0gZHVtbXkpCi0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGVudHJ5LT5rZXkpOworICAgIGZvciAoZW50cnkgPSB0YWJsZTsgdXNlZCA+IDA7IGVudHJ5KyspIHsKKyAgICAgICAgaWYgKGVudHJ5LT5rZXkgJiYgZW50cnktPmtleSAhPSBkdW1teSkgeworICAgICAgICAgICAgdXNlZC0tOworICAgICAgICAgICAgUHlfREVDUkVGKGVudHJ5LT5rZXkpOwogICAgICAgICB9Ci0jaWZkZWYgUHlfREVCVUcKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXNzZXJ0KGVudHJ5LT5rZXkgPT0gTlVMTCk7Ci0jZW5kaWYKICAgICB9CiAKICAgICBpZiAodGFibGVfaXNfbWFsbG9jZWQpCkBAIC01MzQsMTYgKzQ3MCwxNiBAQAogc2V0X2RlYWxsb2MoUHlTZXRPYmplY3QgKnNvKQogewogICAgIHNldGVudHJ5ICplbnRyeTsKLSAgICBQeV9zc2l6ZV90IGZpbGwgPSBzby0+ZmlsbDsKKyAgICBQeV9zc2l6ZV90IHVzZWQgPSBzby0+dXNlZDsKKwogICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soc28pOwogICAgIFB5X1RSQVNIQ0FOX1NBRkVfQkVHSU4oc28pCiAgICAgaWYgKHNvLT53ZWFrcmVmbGlzdCAhPSBOVUxMKQogICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKChQeU9iamVjdCAqKSBzbyk7CiAKLSAgICBmb3IgKGVudHJ5ID0gc28tPnRhYmxlOyBmaWxsID4gMDsgZW50cnkrKykgewotICAgICAgICBpZiAoZW50cnktPmtleSkgewotICAgICAgICAgICAgLS1maWxsOwotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgIT0gZHVtbXkpCisgICAgZm9yIChlbnRyeSA9IHNvLT50YWJsZTsgdXNlZCA+IDA7IGVudHJ5KyspIHsKKyAgICAgICAgaWYgKGVudHJ5LT5rZXkgJiYgZW50cnktPmtleSAhPSBkdW1teSkgeworICAgICAgICAgICAgICAgIHVzZWQtLTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZW50cnktPmtleSk7CiAgICAgICAgIH0KICAgICB9CkBAIC02MDksMTYgKzU0NSwxNiBAQAogewogICAgIFB5U2V0T2JqZWN0ICpvdGhlcjsKICAgICBQeU9iamVjdCAqa2V5OwotICAgIFB5X2hhc2hfdCBoYXNoOwogICAgIFB5X3NzaXplX3QgaTsKLSAgICBzZXRlbnRyeSAqZW50cnk7CisgICAgc2V0ZW50cnkgKnNvX2VudHJ5OworICAgIHNldGVudHJ5ICpvdGhlcl9lbnRyeTsKIAogICAgIGFzc2VydCAoUHlBbnlTZXRfQ2hlY2soc28pKTsKICAgICBhc3NlcnQgKFB5QW55U2V0X0NoZWNrKG90aGVyc2V0KSk7CiAKICAgICBvdGhlciA9IChQeVNldE9iamVjdCopb3RoZXJzZXQ7CiAgICAgaWYgKG90aGVyID09IHNvIHx8IG90aGVyLT51c2VkID09IDApCi0gICAgICAgIC8qIGEudXBkYXRlKGEpIG9yIGEudXBkYXRlKHt9KTsgbm90aGluZyB0byBkbyAqLworICAgICAgICAvKiBhLnVwZGF0ZShhKSBvciBhLnVwZGF0ZShzZXQoKSk7IG5vdGhpbmcgdG8gZG8gKi8KICAgICAgICAgcmV0dXJuIDA7CiAgICAgLyogRG8gb25lIGJpZyByZXNpemUgYXQgdGhlIHN0YXJ0LCByYXRoZXIgdGhhbgogICAgICAqIGluY3JlbWVudGFsbHkgcmVzaXppbmcgYXMgd2UgaW5zZXJ0IG5ldyBrZXlzLiAgRXhwZWN0CkBAIC02MjgsMTQgKzU2NCw0NSBAQAogICAgICAgIGlmIChzZXRfdGFibGVfcmVzaXplKHNvLCAoc28tPnVzZWQgKyBvdGhlci0+dXNlZCkqMikgIT0gMCkKICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBzb19lbnRyeSA9IHNvLT50YWJsZTsKKyAgICBvdGhlcl9lbnRyeSA9IG90aGVyLT50YWJsZTsKKworICAgIC8qIElmIG91ciB0YWJsZSBpcyBlbXB0eSwgYW5kIGJvdGggdGFibGVzIGhhdmUgdGhlIHNhbWUgc2l6ZSwgYW5kCisgICAgICAgdGhlcmUgYXJlIG5vIGR1bW1pZXMgdG8gZWxpbWluYXRlLCB0aGVuIGp1c3QgY29weSB0aGUgcG9pbnRlcnMuICovCisgICAgaWYgKHNvLT5maWxsID09IDAgJiYgc28tPm1hc2sgPT0gb3RoZXItPm1hc2sgJiYgb3RoZXItPmZpbGwgPT0gb3RoZXItPnVzZWQpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8PSBvdGhlci0+bWFzazsgaSsrLCBzb19lbnRyeSsrLCBvdGhlcl9lbnRyeSsrKSB7CisgICAgICAgICAgICBrZXkgPSBvdGhlcl9lbnRyeS0+a2V5OworICAgICAgICAgICAgaWYgKGtleSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KHNvX2VudHJ5LT5rZXkgPT0gTlVMTCk7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgICAgICAgICAgc29fZW50cnktPmtleSA9IGtleTsKKyAgICAgICAgICAgICAgICBzb19lbnRyeS0+aGFzaCA9IG90aGVyX2VudHJ5LT5oYXNoOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNvLT5maWxsID0gb3RoZXItPmZpbGw7CisgICAgICAgIHNvLT51c2VkID0gb3RoZXItPnVzZWQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIElmIG91ciB0YWJsZSBpcyBlbXB0eSwgd2UgY2FuIHVzZSBzZXRfaW5zZXJ0X2NsZWFuKCkgKi8KKyAgICBpZiAoc28tPmZpbGwgPT0gMCkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IG90aGVyLT5tYXNrOyBpKyssIG90aGVyX2VudHJ5KyspIHsKKyAgICAgICAgICAgIGtleSA9IG90aGVyX2VudHJ5LT5rZXk7CisgICAgICAgICAgICBpZiAoa2V5ICE9IE5VTEwgJiYga2V5ICE9IGR1bW15KSB7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgICAgICAgICAgc2V0X2luc2VydF9jbGVhbihzbywga2V5LCBvdGhlcl9lbnRyeS0+aGFzaCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogV2UgY2FuJ3QgYXNzdXJlIHRoZXJlIGFyZSBubyBkdXBsaWNhdGVzLCBzbyBkbyBub3JtYWwgaW5zZXJ0aW9ucyAqLwogICAgIGZvciAoaSA9IDA7IGkgPD0gb3RoZXItPm1hc2s7IGkrKykgewotICAgICAgICBlbnRyeSA9ICZvdGhlci0+dGFibGVbaV07Ci0gICAgICAgIGtleSA9IGVudHJ5LT5rZXk7Ci0gICAgICAgIGhhc2ggPSBlbnRyeS0+aGFzaDsKLSAgICAgICAgaWYgKGtleSAhPSBOVUxMICYmCi0gICAgICAgICAgICBrZXkgIT0gZHVtbXkpIHsKKyAgICAgICAgb3RoZXJfZW50cnkgPSAmb3RoZXItPnRhYmxlW2ldOworICAgICAgICBrZXkgPSBvdGhlcl9lbnRyeS0+a2V5OworICAgICAgICBpZiAoa2V5ICE9IE5VTEwgJiYga2V5ICE9IGR1bW15KSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgIGlmIChzZXRfaW5zZXJ0X2tleShzbywga2V5LCBoYXNoKSA9PSAtMSkgeworICAgICAgICAgICAgaWYgKHNldF9pbnNlcnRfa2V5KHNvLCBrZXksIG90aGVyX2VudHJ5LT5oYXNoKSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KQEAgLTY0NSwxMCArNjEyLDIzIEBACiB9CiAKIHN0YXRpYyBpbnQKK3NldF9jb250YWluc19lbnRyeShQeVNldE9iamVjdCAqc28sIHNldGVudHJ5ICplbnRyeSkKK3sKKyAgICBQeU9iamVjdCAqa2V5OworICAgIHNldGVudHJ5ICpsdV9lbnRyeTsKKworICAgIGx1X2VudHJ5ID0gc2V0X2xvb2trZXkoc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICBpZiAobHVfZW50cnkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGtleSA9IGx1X2VudHJ5LT5rZXk7CisgICAgcmV0dXJuIGtleSAhPSBOVUxMICYmIGtleSAhPSBkdW1teTsKK30KKworc3RhdGljIGludAogc2V0X2NvbnRhaW5zX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCiB7CisgICAgc2V0ZW50cnkgZW50cnk7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgc2V0ZW50cnkgKmVudHJ5OwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CiAgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CkBAIC02NTYsMzAgKzYzNiwxNiBAQAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZW50cnkgPSAoc28tPmxvb2t1cCkoc28sIGtleSwgaGFzaCk7Ci0gICAgaWYgKGVudHJ5ID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBrZXkgPSBlbnRyeS0+a2V5OwotICAgIHJldHVybiBrZXkgIT0gTlVMTCAmJiBrZXkgIT0gZHVtbXk7Ci19Ci0KLXN0YXRpYyBpbnQKLXNldF9jb250YWluc19lbnRyeShQeVNldE9iamVjdCAqc28sIHNldGVudHJ5ICplbnRyeSkKLXsKLSAgICBQeU9iamVjdCAqa2V5OwotICAgIHNldGVudHJ5ICpsdV9lbnRyeTsKLQotICAgIGx1X2VudHJ5ID0gKHNvLT5sb29rdXApKHNvLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7Ci0gICAgaWYgKGx1X2VudHJ5ID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBrZXkgPSBsdV9lbnRyeS0+a2V5OwotICAgIHJldHVybiBrZXkgIT0gTlVMTCAmJiBrZXkgIT0gZHVtbXk7CisgICAgZW50cnkua2V5ID0ga2V5OworICAgIGVudHJ5Lmhhc2ggPSBoYXNoOworICAgIHJldHVybiBzZXRfY29udGFpbnNfZW50cnkoc28sICZlbnRyeSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfcG9wKFB5U2V0T2JqZWN0ICpzbykKIHsKLSAgICBQeV9zc2l6ZV90IGkgPSAwOworICAgIC8qIE1ha2Ugc3VyZSB0aGUgc2VhcmNoIGZpbmdlciBpcyBpbiBib3VuZHMgKi8KKyAgICBQeV9zc2l6ZV90IGkgPSBzby0+ZmluZ2VyICYgc28tPm1hc2s7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwogICAgIFB5T2JqZWN0ICprZXk7CiAKQEAgLTY4OSwzMiArNjU1LDE2IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIC8qIFNldCBlbnRyeSB0byAidGhlIGZpcnN0IiB1bnVzZWQgb3IgZHVtbXkgc2V0IGVudHJ5LiAgV2UgYWJ1c2UKLSAgICAgKiB0aGUgaGFzaCBmaWVsZCBvZiBzbG90IDAgdG8gaG9sZCBhIHNlYXJjaCBmaW5nZXI6Ci0gICAgICogSWYgc2xvdCAwIGhhcyBhIHZhbHVlLCB1c2Ugc2xvdCAwLgotICAgICAqIEVsc2Ugc2xvdCAwIGlzIGJlaW5nIHVzZWQgdG8gaG9sZCBhIHNlYXJjaCBmaW5nZXIsCi0gICAgICogYW5kIHdlIHVzZSBpdHMgaGFzaCB2YWx1ZSBhcyB0aGUgZmlyc3QgaW5kZXggdG8gbG9vay4KLSAgICAgKi8KLSAgICBlbnRyeSA9ICZzby0+dGFibGVbMF07Ci0gICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCB8fCBlbnRyeS0+a2V5ID09IGR1bW15KSB7Ci0gICAgICAgIGkgPSBlbnRyeS0+aGFzaDsKLSAgICAgICAgLyogVGhlIGhhc2ggZmllbGQgbWF5IGJlIGEgcmVhbCBoYXNoIHZhbHVlLCBvciBpdCBtYXkgYmUgYQotICAgICAgICAgKiBsZWdpdCBzZWFyY2ggZmluZ2VyLCBvciBpdCBtYXkgYmUgYSBvbmNlLWxlZ2l0IHNlYXJjaAotICAgICAgICAgKiBmaW5nZXIgdGhhdCdzIG91dCBvZiBib3VuZHMgbm93IGJlY2F1c2UgaXQgd3JhcHBlZCBhcm91bmQKLSAgICAgICAgICogb3IgdGhlIHRhYmxlIHNocnVuayAtLSBzaW1wbHkgbWFrZSBzdXJlIGl0J3MgaW4gYm91bmRzIG5vdy4KLSAgICAgICAgICovCi0gICAgICAgIGlmIChpID4gc28tPm1hc2sgfHwgaSA8IDEpCi0gICAgICAgICAgICBpID0gMTsgICAgICAgICAgICAgIC8qIHNraXAgc2xvdCAwICovCi0gICAgICAgIHdoaWxlICgoZW50cnkgPSAmc28tPnRhYmxlW2ldKS0+a2V5ID09IE5VTEwgfHwgZW50cnktPmtleT09ZHVtbXkpIHsKLSAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgIGlmIChpID4gc28tPm1hc2spCi0gICAgICAgICAgICAgICAgaSA9IDE7Ci0gICAgICAgIH0KKyAgICB3aGlsZSAoKGVudHJ5ID0gJnNvLT50YWJsZVtpXSktPmtleSA9PSBOVUxMIHx8IGVudHJ5LT5rZXk9PWR1bW15KSB7CisgICAgICAgIGkrKzsKKyAgICAgICAgaWYgKGkgPiBzby0+bWFzaykKKyAgICAgICAgICAgIGkgPSAwOwogICAgIH0KICAgICBrZXkgPSBlbnRyeS0+a2V5OwogICAgIGVudHJ5LT5rZXkgPSBkdW1teTsKKyAgICBlbnRyeS0+aGFzaCA9IC0xOwogICAgIHNvLT51c2VkLS07Ci0gICAgc28tPnRhYmxlWzBdLmhhc2ggPSBpICsgMTsgIC8qIG5leHQgcGxhY2UgdG8gc3RhcnQgKi8KKyAgICBzby0+ZmluZ2VyID0gaSArIDE7ICAgICAgICAgLyogbmV4dCBwbGFjZSB0byBzdGFydCAqLwogICAgIHJldHVybiBrZXk7CiB9CiAKQEAgLTc1Nyw3ICs3MDcsNyBAQAogICAgIGhhc2ggKj0gKFB5X3VoYXNoX3QpUHlTZXRfR0VUX1NJWkUoc2VsZikgKyAxOwogICAgIHdoaWxlIChzZXRfbmV4dChzbywgJnBvcywgJmVudHJ5KSkgewogICAgICAgICAvKiBXb3JrIHRvIGluY3JlYXNlIHRoZSBiaXQgZGlzcGVyc2lvbiBmb3IgY2xvc2VseSBzcGFjZWQgaGFzaAotICAgICAgICAgICB2YWx1ZXMuICBUaGUgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSB1c2UgY2FzZXMgaGF2ZSBtYW55CisgICAgICAgICAgIHZhbHVlcy4gIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSB1c2UgY2FzZXMgaGF2ZSBtYW55CiAgICAgICAgICAgIGNvbWJpbmF0aW9ucyBvZiBhIHNtYWxsIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIG5lYXJieQogICAgICAgICAgICBoYXNoZXMgc28gdGhhdCBtYW55IGRpc3RpbmN0IGNvbWJpbmF0aW9ucyBjb2xsYXBzZSB0byBvbmx5CiAgICAgICAgICAgIGEgaGFuZGZ1bCBvZiBkaXN0aW5jdCBoYXNoIHZhbHVlcy4gKi8KQEAgLTc2Nyw3ICs3MTcsNyBAQAogICAgIC8qIE1ha2UgdGhlIGZpbmFsIHJlc3VsdCBzcHJlYWQtb3V0IGluIGEgZGlmZmVyZW50IHBhdHRlcm4KICAgICAgICB0aGFuIHRoZSBhbGdvcml0aG0gZm9yIHR1cGxlcyBvciBvdGhlciBweXRob24gb2JqZWN0cy4gKi8KICAgICBoYXNoID0gaGFzaCAqIDY5MDY5VSArIDkwNzEzMzkyM1VMOwotICAgIGlmIChoYXNoID09IC0xKQorICAgIGlmIChoYXNoID09IChQeV91aGFzaF90KS0xKQogICAgICAgICBoYXNoID0gNTkwOTIzNzEzVUw7CiAgICAgc28tPmhhc2ggPSBoYXNoOwogICAgIHJldHVybiBoYXNoOwpAQCAtOTcxLDcgKzkyMSw3IEBACiAKICAgICAgICAgICAgIGFuX2VudHJ5Lmhhc2ggPSBoYXNoOwogICAgICAgICAgICAgYW5fZW50cnkua2V5ID0ga2V5OwotICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sICZhbl9lbnRyeSkgPT0gLTEpCisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywgJmFuX2VudHJ5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CkBAIC05ODIsNyArOTMyLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgd2hpbGUgKChrZXkgPSBQeUl0ZXJfTmV4dChpdCkpICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKHNldF9hZGRfa2V5KHNvLCBrZXkpID09IC0xKSB7CisgICAgICAgIGlmIChzZXRfYWRkX2tleShzbywga2V5KSkgewogICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTAwMiw3ICs5NTIsNyBAQAogCiAgICAgZm9yIChpPTAgOyBpPFB5VHVwbGVfR0VUX1NJWkUoYXJncykgOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QgKm90aGVyID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKLSAgICAgICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSA9PSAtMSkKKyAgICAgICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTEwMTEsNiArOTYxLDEyIEBACiBQeURvY19TVFJWQVIodXBkYXRlX2RvYywKICJVcGRhdGUgYSBzZXQgd2l0aCB0aGUgdW5pb24gb2YgaXRzZWxmIGFuZCBvdGhlcnMuIik7CiAKKy8qIFhYWCBUb2RvOgorICAgSWYgYWxpZ25lZCBtZW1vcnkgYWxsb2NhdGlvbnMgYmVjb21lIGF2YWlsYWJsZSwgbWFrZSB0aGUKKyAgIHNldCBvYmplY3QgNjQgYnl0ZSBhbGlnbmVkIHNvIHRoYXQgbW9zdCBvZiB0aGUgZmllbGRzCisgICBjYW4gYmUgcmV0cmlldmVkIG9yIHVwZGF0ZWQgaW4gYSBzaW5nbGUgY2FjaGUgbGluZS4KKyovCisKIHN0YXRpYyBQeU9iamVjdCAqCiBtYWtlX25ld19zZXQoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqaXRlcmFibGUpCiB7CkBAIC0xMDI1LDEyICs5ODEsMTIgQEAKICAgICBzby0+dXNlZCA9IDA7CiAgICAgc28tPm1hc2sgPSBQeVNldF9NSU5TSVpFIC0gMTsKICAgICBzby0+dGFibGUgPSBzby0+c21hbGx0YWJsZTsKLSAgICBzby0+bG9va3VwID0gc2V0X2xvb2trZXlfdW5pY29kZTsKICAgICBzby0+aGFzaCA9IC0xOworICAgIHNvLT5maW5nZXIgPSAwOwogICAgIHNvLT53ZWFrcmVmbGlzdCA9IE5VTEw7CiAKICAgICBpZiAoaXRlcmFibGUgIT0gTlVMTCkgewotICAgICAgICBpZiAoc2V0X3VwZGF0ZV9pbnRlcm5hbChzbywgaXRlcmFibGUpID09IC0xKSB7CisgICAgICAgIGlmIChzZXRfdXBkYXRlX2ludGVybmFsKHNvLCBpdGVyYWJsZSkpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzbyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMTExNCwxMCArMTA3MCw4IEBACiAgICAgIHQ9c2V0KGEpOyBhLmNsZWFyKCk7IGEudXBkYXRlKGIpOyBiLmNsZWFyKCk7IGIudXBkYXRlKHQpOyBkZWwgdAogCiAgICBUaGUgZnVuY3Rpb24gYWx3YXlzIHN1Y2NlZWRzIGFuZCBpdCBsZWF2ZXMgYm90aCBvYmplY3RzIGluIGEgc3RhYmxlIHN0YXRlLgotICAgVXNlZnVsIGZvciBjcmVhdGluZyB0ZW1wb3JhcnkgZnJvemVuc2V0cyBmcm9tIHNldHMgZm9yIG1lbWJlcnNoaXAgdGVzdGluZwotICAgaW4gX19jb250YWluc19fKCksIGRpc2NhcmQoKSwgYW5kIHJlbW92ZSgpLiAgQWxzbyB1c2VmdWwgZm9yIG9wZXJhdGlvbnMKLSAgIHRoYXQgdXBkYXRlIGluLXBsYWNlIChieSBhbGxvd2luZyBhbiBpbnRlcm1lZGlhdGUgcmVzdWx0IHRvIGJlIHN3YXBwZWQKLSAgIGludG8gb25lIG9mIHRoZSBvcmlnaW5hbCBpbnB1dHMpLgorICAgVXNlZnVsIGZvciBvcGVyYXRpb25zIHRoYXQgdXBkYXRlIGluLXBsYWNlIChieSBhbGxvd2luZyBhbiBpbnRlcm1lZGlhdGUKKyAgIHJlc3VsdCB0byBiZSBzd2FwcGVkIGludG8gb25lIG9mIHRoZSBvcmlnaW5hbCBpbnB1dHMpLgogKi8KIAogc3RhdGljIHZvaWQKQEAgLTExMjUsNyArMTA3OSw2IEBACiB7CiAgICAgUHlfc3NpemVfdCB0OwogICAgIHNldGVudHJ5ICp1OwotICAgIHNldGVudHJ5ICooKmYpKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgUHlfc3NpemVfdCBoYXNoKTsKICAgICBzZXRlbnRyeSB0YWJbUHlTZXRfTUlOU0laRV07CiAgICAgUHlfaGFzaF90IGg7CiAKQEAgLTExNDEsOCArMTA5NCw2IEBACiAgICAgICAgIGEtPnRhYmxlID0gYS0+c21hbGx0YWJsZTsKICAgICBiLT50YWJsZSA9IHU7CiAKLSAgICBmID0gYS0+bG9va3VwOyAgIGEtPmxvb2t1cCA9IGItPmxvb2t1cDsgICAgICBiLT5sb29rdXAgPSBmOwotCiAgICAgaWYgKGEtPnRhYmxlID09IGEtPnNtYWxsdGFibGUgfHwgYi0+dGFibGUgPT0gYi0+c21hbGx0YWJsZSkgewogICAgICAgICBtZW1jcHkodGFiLCBhLT5zbWFsbHRhYmxlLCBzaXplb2YodGFiKSk7CiAgICAgICAgIG1lbWNweShhLT5zbWFsbHRhYmxlLCBiLT5zbWFsbHRhYmxlLCBzaXplb2YodGFiKSk7CkBAIC0xMjAwLDcgKzExNTEsNyBAQAogICAgICAgICBvdGhlciA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CiAgICAgICAgIGlmICgoUHlPYmplY3QgKilzbyA9PSBvdGhlcikKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoc2V0X3VwZGF0ZV9pbnRlcm5hbChyZXN1bHQsIG90aGVyKSA9PSAtMSkgeworICAgICAgICBpZiAoc2V0X3VwZGF0ZV9pbnRlcm5hbChyZXN1bHQsIG90aGVyKSkgewogICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMTIyNiw3ICsxMTc3LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKChQeU9iamVjdCAqKXNvID09IG90aGVyKQogICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVzdWx0OwotICAgIGlmIChzZXRfdXBkYXRlX2ludGVybmFsKHJlc3VsdCwgb3RoZXIpID09IC0xKSB7CisgICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwocmVzdWx0LCBvdGhlcikpIHsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEyMzksNyArMTE5MCw3IEBACiAgICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpCiAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAotICAgIGlmIChzZXRfdXBkYXRlX2ludGVybmFsKHNvLCBvdGhlcikgPT0gLTEpCisgICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKHNvKTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopc287CkBAIC0xMjc1LDcgKzEyMjYsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHJ2KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkocmVzdWx0LCBlbnRyeSkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShyZXN1bHQsIGVudHJ5KSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTMxMSw3ICsxMjYyLDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmIChydikgewotICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkocmVzdWx0LCAmZW50cnkpID09IC0xKSB7CisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShyZXN1bHQsICZlbnRyeSkpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwpAQCAtMTUxOSw3ICsxNDcwLDcgQEAKIAogICAgIGZvciAoaT0wIDsgaTxQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIDsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICpvdGhlciA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7Ci0gICAgICAgIGlmIChzZXRfZGlmZmVyZW5jZV91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSA9PSAtMSkKKyAgICAgICAgaWYgKHNldF9kaWZmZXJlbmNlX3VwZGF0ZV9pbnRlcm5hbChzbywgb3RoZXIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMTU3NSw3ICsxNTI2LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghcnYpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeSgoUHlTZXRPYmplY3QgKilyZXN1bHQsICZlbnRyeWNvcHkpID09IC0xKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoKFB5U2V0T2JqZWN0ICopcmVzdWx0LCAmZW50cnljb3B5KSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTU5Miw3ICsxNTQzLDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmICghcnYpIHsKLSAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KChQeVNldE9iamVjdCAqKXJlc3VsdCwgZW50cnkpID09IC0xKSB7CisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeSgoUHlTZXRPYmplY3QgKilyZXN1bHQsIGVudHJ5KSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtMTYxNyw3ICsxNTY4LDcgQEAKIAogICAgIGZvciAoaT0xIDsgaTxQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIDsgaSsrKSB7CiAgICAgICAgIG90aGVyID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKLSAgICAgICAgaWYgKHNldF9kaWZmZXJlbmNlX3VwZGF0ZV9pbnRlcm5hbCgoUHlTZXRPYmplY3QgKilyZXN1bHQsIG90aGVyKSA9PSAtMSkgeworICAgICAgICBpZiAoc2V0X2RpZmZlcmVuY2VfdXBkYXRlX2ludGVybmFsKChQeVNldE9iamVjdCAqKXJlc3VsdCwgb3RoZXIpKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0xNjQyLDcgKzE1OTMsNyBAQAogewogICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQogICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7Ci0gICAgaWYgKHNldF9kaWZmZXJlbmNlX3VwZGF0ZV9pbnRlcm5hbChzbywgb3RoZXIpID09IC0xKQorICAgIGlmIChzZXRfZGlmZmVyZW5jZV91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKHNvKTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopc287CkBAIC0xNjc2LDcgKzE2MjcsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHJ2ID09IERJU0NBUkRfTk9URk9VTkQpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywgJmFuX2VudHJ5KSA9PSAtMSkgeworICAgICAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCAmYW5fZW50cnkpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CkBAIC0xNzAyLDcgKzE2NTMsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJ2ID09IERJU0NBUkRfTk9URk9VTkQpIHsKLSAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBlbnRyeSkgPT0gLTEpIHsKKyAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBlbnRyeSkpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXJzZXQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtMTg1Myw3ICsxODA0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfYWRkKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSkKIHsKLSAgICBpZiAoc2V0X2FkZF9rZXkoc28sIGtleSkgPT0gLTEpCisgICAgaWYgKHNldF9hZGRfa2V5KHNvLCBrZXkpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KQEAgLTE5ODYsNyArMTkzNyw3IEBACiB7CiAgICAgUHlfc3NpemVfdCByZXM7CiAKLSAgICByZXMgPSBzaXplb2YoUHlTZXRPYmplY3QpOworICAgIHJlcyA9IF9QeU9iamVjdF9TSVpFKFB5X1RZUEUoc28pKTsKICAgICBpZiAoc28tPnRhYmxlICE9IHNvLT5zbWFsbHRhYmxlKQogICAgICAgICByZXMgPSByZXMgKyAoc28tPm1hc2sgKyAxKSAqIHNpemVvZihzZXRlbnRyeSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOwpAQCAtMjM5Nyw3ICsyMzQ4LDcgQEAKICAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHNldF9jbGVhcl9pbnRlcm5hbChzbyk7Ci0gICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwoc28sIHN0cikgPT0gLTEpIHsKKyAgICBpZiAoc2V0X3VwZGF0ZV9pbnRlcm5hbChzbywgc3RyKSkgewogICAgICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmggYi9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaAppbmRleCBlZTFiZjJiLi4wZmM2YjU4IDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaApAQCAtNzE4LDYgKzcxOCw5MyBAQAogICAgIHJldHVybiBsZW4gLSAoZW5kIC0gaW4gKyAxKTsKICNlbmRpZgogfQorCisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEKKyMgZGVmaW5lIFNXQUI0KENILCB0bXApICAoKENIKSA8PCAyNCkgLyogaGlnaCBieXRlcyBhcmUgemVybyAqLworI2VsaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDIKKyMgZGVmaW5lIFNXQUI0KENILCB0bXApICAodG1wID0gKENIKSwgXAorICAgICAgICAgICAgKCh0bXAgJiAweDAwRkZ1KSA8PCAyNCkgKyAoKHRtcCAmIDB4RkYwMHUpIDw8IDgpKQorICAgICAgICAgICAgLyogaGlnaCBieXRlcyBhcmUgemVybyAqLworI2Vsc2UKKyMgZGVmaW5lIFNXQUI0KENILCB0bXApICAodG1wID0gKENIKSwgXAorICAgICAgICAgICAgdG1wID0gKCh0bXAgJiAweDAwRkYwMEZGdSkgPDwgOCkgKyAoKHRtcCA+PiA4KSAmIDB4MDBGRjAwRkZ1KSwgXAorICAgICAgICAgICAgKCh0bXAgJiAweDAwMDBGRkZGdSkgPDwgMTYpICsgKCh0bXAgPj4gMTYpICYgMHgwMDAwRkZGRnUpKQorI2VuZGlmCitQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKK1NUUklOR0xJQih1dGYzMl9lbmNvZGUpKGNvbnN0IFNUUklOR0xJQl9DSEFSICppbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgUFlfVUlOVDMyX1QgKipvdXRwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmF0aXZlX29yZGVyaW5nKQoreworICAgIFBZX1VJTlQzMl9UICpvdXQgPSAqb3V0cHRyOworICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICplbmQgPSBpbiArIGxlbjsKKyAgICBpZiAobmF0aXZlX29yZGVyaW5nKSB7CisgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICp1bnJvbGxlZF9lbmQgPSBpbiArIF9QeV9TSVpFX1JPVU5EX0RPV04obGVuLCA0KTsKKyAgICAgICAgd2hpbGUgKGluIDwgdW5yb2xsZWRfZW5kKSB7CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQorICAgICAgICAgICAgLyogY2hlY2sgaWYgYW55IGNoYXJhY3RlciBpcyBhIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIgKi8KKyAgICAgICAgICAgIGlmICgoKGluWzBdIF4gMHhkODAwKSAmCisgICAgICAgICAgICAgICAgIChpblsxXSBeIDB4ZDgwMCkgJgorICAgICAgICAgICAgICAgICAoaW5bMl0gXiAweGQ4MDApICYKKyAgICAgICAgICAgICAgICAgKGluWzNdIF4gMHhkODAwKSAmIDB4ZjgwMCkgPT0gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyNlbmRpZgorICAgICAgICAgICAgb3V0WzBdID0gaW5bMF07CisgICAgICAgICAgICBvdXRbMV0gPSBpblsxXTsKKyAgICAgICAgICAgIG91dFsyXSA9IGluWzJdOworICAgICAgICAgICAgb3V0WzNdID0gaW5bM107CisgICAgICAgICAgICBpbiArPSA0OyBvdXQgKz0gNDsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoaW4gPCBlbmQpIHsKKyAgICAgICAgICAgIFB5X1VDUzQgY2g7CisgICAgICAgICAgICBjaCA9ICppbisrOworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKKyAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkpIHsKKyAgICAgICAgICAgICAgICAvKiByZWplY3Qgc3Vycm9nYXRlIGNoYXJhY3RlcnMgKFUrRDgwMC1VK0RGRkYpICovCisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICAqb3V0KysgPSBjaDsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICp1bnJvbGxlZF9lbmQgPSBpbiArIF9QeV9TSVpFX1JPVU5EX0RPV04obGVuLCA0KTsKKyAgICAgICAgd2hpbGUgKGluIDwgdW5yb2xsZWRfZW5kKSB7CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQorICAgICAgICAgICAgUHlfVUNTNCBjaDEsIGNoMiwgY2gzLCBjaDQ7CisgICAgICAgICAgICAvKiBjaGVjayBpZiBhbnkgY2hhcmFjdGVyIGlzIGEgc3Vycm9nYXRlIGNoYXJhY3RlciAqLworICAgICAgICAgICAgaWYgKCgoaW5bMF0gXiAweGQ4MDApICYKKyAgICAgICAgICAgICAgICAgKGluWzFdIF4gMHhkODAwKSAmCisgICAgICAgICAgICAgICAgIChpblsyXSBeIDB4ZDgwMCkgJgorICAgICAgICAgICAgICAgICAoaW5bM10gXiAweGQ4MDApICYgMHhmODAwKSA9PSAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgICAgICAgICBvdXRbMF0gPSBTV0FCNChpblswXSwgY2gxKTsKKyAgICAgICAgICAgIG91dFsxXSA9IFNXQUI0KGluWzFdLCBjaDIpOworICAgICAgICAgICAgb3V0WzJdID0gU1dBQjQoaW5bMl0sIGNoMyk7CisgICAgICAgICAgICBvdXRbM10gPSBTV0FCNChpblszXSwgY2g0KTsKKyAgICAgICAgICAgIGluICs9IDQ7IG91dCArPSA0OworICAgICAgICB9CisgICAgICAgIHdoaWxlIChpbiA8IGVuZCkgeworICAgICAgICAgICAgUHlfVUNTNCBjaCA9ICppbisrOworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKKyAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkpIHsKKyAgICAgICAgICAgICAgICAvKiByZWplY3Qgc3Vycm9nYXRlIGNoYXJhY3RlcnMgKFUrRDgwMC1VK0RGRkYpICovCisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICAqb3V0KysgPSBTV0FCNChjaCwgY2gpOworICAgICAgICB9CisgICAgfQorICAgICpvdXRwdHIgPSBvdXQ7CisgICAgcmV0dXJuIGxlbjsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCisgIGZhaWw6CisgICAgKm91dHB0ciA9IG91dDsKKyAgICByZXR1cm4gbGVuIC0gKGVuZCAtIGluICsgMSk7CisjZW5kaWYKK30KKyN1bmRlZiBTV0FCNAorCiAjZW5kaWYKIAogI2VuZGlmIC8qIFNUUklOR0xJQl9JU19VTklDT0RFICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmggYi9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmgKaW5kZXggY2Q3Y2FjNC4uY2RhNjhlNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaApAQCAtMzYsNyArMzYsNyBAQAogUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCiBTVFJJTkdMSUIoZmFzdHNlYXJjaF9tZW1jaHJfMWNoYXIpKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzLCBQeV9zc2l6ZV90IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSIGNoLCB1bnNpZ25lZCBjaGFyIG5lZWRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCwgaW50IG1vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb2RlKQogewogICAgIGlmIChtb2RlID09IEZBU1RfU0VBUkNIKSB7CiAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICpwdHIgPSBzOwpAQCAtMTE1LDcgKzExNSw3IEBACiAgICAgICAgICAgICBpZiAobmVlZGxlICE9IDApCiAjZW5kaWYKICAgICAgICAgICAgICAgICByZXR1cm4gU1RSSU5HTElCKGZhc3RzZWFyY2hfbWVtY2hyXzFjaGFyKQotICAgICAgICAgICAgICAgICAgICAgICAocywgbiwgcFswXSwgbmVlZGxlLCBtYXhjb3VudCwgbW9kZSk7CisgICAgICAgICAgICAgICAgICAgICAgIChzLCBuLCBwWzBdLCBuZWVkbGUsIG1vZGUpOwogICAgICAgICB9CiAgICAgICAgIGlmIChtb2RlID09IEZBU1RfQ09VTlQpIHsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmggYi9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmgKaW5kZXggNTE4ZTAxMi4uMTQ4MTVmNiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaApAQCAtMTEsOCArMTEsNyBAQAogewogICAgIFB5X3NzaXplX3QgcG9zOwogCi0gICAgaWYgKHN0cl9sZW4gPCAwKQotICAgICAgICByZXR1cm4gLTE7CisgICAgYXNzZXJ0KHN0cl9sZW4gPj0gMCk7CiAgICAgaWYgKHN1Yl9sZW4gPT0gMCkKICAgICAgICAgcmV0dXJuIG9mZnNldDsKIApAQCAtMzEsOCArMzAsNyBAQAogewogICAgIFB5X3NzaXplX3QgcG9zOwogCi0gICAgaWYgKHN0cl9sZW4gPCAwKQotICAgICAgICByZXR1cm4gLTE7CisgICAgYXNzZXJ0KHN0cl9sZW4gPj0gMCk7CiAgICAgaWYgKHN1Yl9sZW4gPT0gMCkKICAgICAgICAgcmV0dXJuIHN0cl9sZW4gKyBvZmZzZXQ7CiAKQEAgLTQ0LDI3ICs0MiwxMSBAQAogICAgIHJldHVybiBwb3M7CiB9CiAKLS8qIGhlbHBlciBtYWNybyB0byBmaXh1cCBzdGFydC9lbmQgc2xpY2UgdmFsdWVzICovCi0jZGVmaW5lIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbikgICAgICAgICBcCi0gICAgaWYgKGVuZCA+IGxlbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVuZCA9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZWxzZSBpZiAoZW5kIDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVuZCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChlbmQgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBlbmQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKHN0YXJ0IDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXJ0ICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChzdGFydCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBzdGFydCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCiBQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKIFNUUklOR0xJQihmaW5kX3NsaWNlKShjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3ViLCBQeV9zc2l6ZV90IHN1Yl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKIHsKLSAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBzdHJfbGVuKTsKICAgICByZXR1cm4gU1RSSU5HTElCKGZpbmQpKHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBzdGFydCk7CiB9CiAKQEAgLTczLDcgKzU1LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3ViLCBQeV9zc2l6ZV90IHN1Yl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCiB7Ci0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgc3RyX2xlbik7CiAgICAgcmV0dXJuIFNUUklOR0xJQihyZmluZCkoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCBzdWIsIHN1Yl9sZW4sIHN0YXJ0KTsKIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmggYi9PYmplY3RzL3N0cmluZ2xpYi90cmFuc21vZ3JpZnkuaAppbmRleCBjYWU2ZWExLi5iNTU5YjUzIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi90cmFuc21vZ3JpZnkuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi90cmFuc21vZ3JpZnkuaApAQCAtNTksNyArNTksNyBAQAogCiAgICAgaiA9IDA7CiAgICAgcSA9IFNUUklOR0xJQl9TVFIodSk7Ci0gICAgCisKICAgICBmb3IgKHAgPSBTVFJJTkdMSUJfU1RSKHNlbGYpOyBwIDwgZTsgcCsrKSB7CiAgICAgICAgIGlmICgqcCA9PSAnXHQnKSB7CiAgICAgICAgICAgICBpZiAodGFic2l6ZSA+IDApIHsKZGlmZiAtLWdpdCBhL09iamVjdHMvdHVwbGVvYmplY3QuYyBiL09iamVjdHMvdHVwbGVvYmplY3QuYwppbmRleCA4YzAwMjEwLi43ZWZhMWE2IDEwMDY0NAotLS0gYS9PYmplY3RzL3R1cGxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy90dXBsZW9iamVjdC5jCkBAIC05Nyw3ICs5Nyw3IEBACiAjZW5kaWYKICAgICB7CiAgICAgICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgICAgICBpZiAoc2l6ZSA+IChQWV9TU0laRV9UX01BWCAtIHNpemVvZihQeVR1cGxlT2JqZWN0KSAtCisgICAgICAgIGlmICgoc2l6ZV90KXNpemUgPiAoKHNpemVfdClQWV9TU0laRV9UX01BWCAtIHNpemVvZihQeVR1cGxlT2JqZWN0KSAtCiAgICAgICAgICAgICAgICAgICAgIHNpemVvZihQeU9iamVjdCAqKSkgLyBzaXplb2YoUHlPYmplY3QgKikpIHsKICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICB9CkBAIC03NDYsNyArNzQ2LDcgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAidHVwbGUgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICJ0dXBsZSBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMgb3Igc2xpY2VzLCBub3QgJS4yMDBzIiwKICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoaXRlbSktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CmRpZmYgLS1naXQgYS9PYmplY3RzL3R5cGVvYmplY3QuYyBiL09iamVjdHMvdHlwZW9iamVjdC5jCmluZGV4IGNhNTM1NWEuLjQxNWY5MTYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdHlwZW9iamVjdC5jCisrKyBiL09iamVjdHMvdHlwZW9iamVjdC5jCkBAIC0xNCwxMCArMTQsMTEgQEAKICAgIE1DQUNIRV9NQVhfQVRUUl9TSVpFLCBzaW5jZSBpdCBtaWdodCBiZSBhIHByb2JsZW0gaWYgdmVyeSBsYXJnZQogICAgc3RyaW5ncyBhcmUgdXNlZCBhcyBhdHRyaWJ1dGUgbmFtZXMuICovCiAjZGVmaW5lIE1DQUNIRV9NQVhfQVRUUl9TSVpFICAgIDEwMAotI2RlZmluZSBNQ0FDSEVfU0laRV9FWFAgICAgICAgICA5CisjZGVmaW5lIE1DQUNIRV9TSVpFX0VYUCAgICAgICAgIDEyCiAjZGVmaW5lIE1DQUNIRV9IQVNIKHZlcnNpb24sIG5hbWVfaGFzaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICgoKHVuc2lnbmVkIGludCkodmVyc2lvbikgKiAodW5zaWduZWQgaW50KShuYW1lX2hhc2gpKSAgICAgICAgICBcCi0gICAgICAgICA+PiAoOCpzaXplb2YodW5zaWduZWQgaW50KSAtIE1DQUNIRV9TSVpFX0VYUCkpCisgICAgICAgICgoKHVuc2lnbmVkIGludCkodmVyc2lvbikgXiAodW5zaWduZWQgaW50KShuYW1lX2hhc2gpKSAgICAgICAgICBcCisgICAgICAgICAmICgoMSA8PCBNQ0FDSEVfU0laRV9FWFApIC0gMSkpCisKICNkZWZpbmUgTUNBQ0hFX0hBU0hfTUVUSE9EKHR5cGUsIG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgTUNBQ0hFX0hBU0goKHR5cGUpLT50cF92ZXJzaW9uX3RhZywgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICgoUHlBU0NJSU9iamVjdCAqKShuYW1lKSktPmhhc2gpCkBAIC0zNSw2ICszNiwxNCBAQAogc3RhdGljIHN0cnVjdCBtZXRob2RfY2FjaGVfZW50cnkgbWV0aG9kX2NhY2hlWzEgPDwgTUNBQ0hFX1NJWkVfRVhQXTsKIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmV4dF92ZXJzaW9uX3RhZyA9IDA7CiAKKyNkZWZpbmUgTUNBQ0hFX1NUQVRTIDAKKworI2lmIE1DQUNIRV9TVEFUUworc3RhdGljIHNpemVfdCBtZXRob2RfY2FjaGVfaGl0cyA9IDA7CitzdGF0aWMgc2l6ZV90IG1ldGhvZF9jYWNoZV9taXNzZXMgPSAwOworc3RhdGljIHNpemVfdCBtZXRob2RfY2FjaGVfY29sbGlzaW9ucyA9IDA7CisjZW5kaWYKKwogLyogYWxwaGFiZXRpY2FsIG9yZGVyICovCiBfUHlfSURFTlRJRklFUihfX2Fic3RyYWN0bWV0aG9kc19fKTsKIF9QeV9JREVOVElGSUVSKF9fY2xhc3NfXyk7CkBAIC01NCw2ICs2Myw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2xvdF90cF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpOwogCitzdGF0aWMgdm9pZAorY2xlYXJfc2xvdGRlZnModm9pZCk7CisKIC8qCiAgKiBmaW5kcyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkb2NzdHJpbmcncyBpbnRyb3NwZWN0aW9uIHNpZ25hdHVyZS4KICAqIGlmIHByZXNlbnQsIHJldHVybnMgYSBwb2ludGVyIHBvaW50aW5nIHRvIHRoZSBmaXJzdCAnKCcuCkBAIC0xMjUsNyArMTM3LDcgQEAKIHsKICAgICBjb25zdCBjaGFyICpkb2MgPSBfUHlUeXBlX0RvY1dpdGhvdXRTaWduYXR1cmUobmFtZSwgaW50ZXJuYWxfZG9jKTsKIAotICAgIGlmICghZG9jKSB7CisgICAgaWYgKCFkb2MgfHwgKmRvYyA9PSAnXDAnKSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQpAQCAtMTYyLDYgKzE3NCwxOCBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICB1bnNpZ25lZCBpbnQgY3VyX3ZlcnNpb25fdGFnID0gbmV4dF92ZXJzaW9uX3RhZyAtIDE7CiAKKyNpZiBNQ0FDSEVfU1RBVFMKKyAgICBzaXplX3QgdG90YWwgPSBtZXRob2RfY2FjaGVfaGl0cyArIG1ldGhvZF9jYWNoZV9jb2xsaXNpb25zICsgbWV0aG9kX2NhY2hlX21pc3NlczsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIi0tIE1ldGhvZCBjYWNoZSBoaXRzICAgICAgICA9ICV6ZCAoJWQlJSlcbiIsCisgICAgICAgICAgICBtZXRob2RfY2FjaGVfaGl0cywgKGludCkgKDEwMC4wICogbWV0aG9kX2NhY2hlX2hpdHMgLyB0b3RhbCkpOworICAgIGZwcmludGYoc3RkZXJyLCAiLS0gTWV0aG9kIGNhY2hlIHRydWUgbWlzc2VzID0gJXpkICglZCUlKVxuIiwKKyAgICAgICAgICAgIG1ldGhvZF9jYWNoZV9taXNzZXMsIChpbnQpICgxMDAuMCAqIG1ldGhvZF9jYWNoZV9taXNzZXMgLyB0b3RhbCkpOworICAgIGZwcmludGYoc3RkZXJyLCAiLS0gTWV0aG9kIGNhY2hlIGNvbGxpc2lvbnMgID0gJXpkICglZCUlKVxuIiwKKyAgICAgICAgICAgIG1ldGhvZF9jYWNoZV9jb2xsaXNpb25zLCAoaW50KSAoMTAwLjAgKiBtZXRob2RfY2FjaGVfY29sbGlzaW9ucyAvIHRvdGFsKSk7CisgICAgZnByaW50ZihzdGRlcnIsICItLSBNZXRob2QgY2FjaGUgc2l6ZSAgICAgICAgPSAlemQgS0JcbiIsCisgICAgICAgICAgICBzaXplb2YobWV0aG9kX2NhY2hlKSAvIDEwMjQpOworI2VuZGlmCisKICAgICBmb3IgKGkgPSAwOyBpIDwgKDEgPDwgTUNBQ0hFX1NJWkVfRVhQKTsgaSsrKSB7CiAgICAgICAgIG1ldGhvZF9jYWNoZVtpXS52ZXJzaW9uID0gMDsKICAgICAgICAgUHlfQ0xFQVIobWV0aG9kX2NhY2hlW2ldLm5hbWUpOwpAQCAtMTc3LDYgKzIwMSw3IEBACiBfUHlUeXBlX0Zpbmkodm9pZCkKIHsKICAgICBQeVR5cGVfQ2xlYXJDYWNoZSgpOworICAgIGNsZWFyX3Nsb3RkZWZzKCk7CiB9CiAKIHZvaWQKQEAgLTI5MCw5ICszMTUsOCBAQAogICAgICAgICAgICBhcmUgYm9ycm93ZWQgcmVmZXJlbmNlICovCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAoMSA8PCBNQ0FDSEVfU0laRV9FWFApOyBpKyspIHsKICAgICAgICAgICAgIG1ldGhvZF9jYWNoZVtpXS52YWx1ZSA9IE5VTEw7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKG1ldGhvZF9jYWNoZVtpXS5uYW1lKTsKLSAgICAgICAgICAgIG1ldGhvZF9jYWNoZVtpXS5uYW1lID0gUHlfTm9uZTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgICAgIFB5X1NFVFJFRihtZXRob2RfY2FjaGVbaV0ubmFtZSwgUHlfTm9uZSk7CiAgICAgICAgIH0KICAgICAgICAgLyogbWFyayBhbGwgdmVyc2lvbiB0YWdzIGFzIGludmFsaWQgKi8KICAgICAgICAgUHlUeXBlX01vZGlmaWVkKCZQeUJhc2VPYmplY3RfVHlwZSk7CkBAIC0zNzcsOSArNDAxLDggQEAKIHN0YXRpYyBpbnQKIHR5cGVfc2V0X25hbWUoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpCiB7Ci0gICAgUHlIZWFwVHlwZU9iamVjdCogZXQ7Ci0gICAgY2hhciAqdHBfbmFtZTsKLSAgICBQeU9iamVjdCAqdG1wOworICAgIGNvbnN0IGNoYXIgKnRwX25hbWU7CisgICAgUHlfc3NpemVfdCBuYW1lX3NpemU7CiAKICAgICBpZiAoIWNoZWNrX3NldF9zcGVjaWFsX3R5cGVfYXR0cih0eXBlLCB2YWx1ZSwgIl9fbmFtZV9fIikpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTM5MCwzMyArNDEzLDE4IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICAvKiBDaGVjayBhYnNlbmNlIG9mIG51bGwgY2hhcmFjdGVycyAqLwotICAgIHRtcCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgiXDAiLCAxKTsKLSAgICBpZiAodG1wID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoUHlVbmljb2RlX0NvbnRhaW5zKHZhbHVlLCB0bXApICE9IDApIHsKLSAgICAgICAgUHlfREVDUkVGKHRtcCk7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIl9fbmFtZV9fIG11c3Qgbm90IGNvbnRhaW4gbnVsbCBieXRlcyIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIFB5X0RFQ1JFRih0bXApOwotCi0gICAgdHBfbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcodmFsdWUpOworICAgIHRwX25hbWUgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZSh2YWx1ZSwgJm5hbWVfc2l6ZSk7CiAgICAgaWYgKHRwX25hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgZXQgPSAoUHlIZWFwVHlwZU9iamVjdCopdHlwZTsKLQotICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0KLSAgICAvKiBXYWl0IHVudGlsIGV0IGlzIGEgc2FuZSBzdGF0ZSBiZWZvcmUgUHlfREVDUkVGJ2luZyB0aGUgb2xkIGV0LT5odF9uYW1lCi0gICAgICAgdmFsdWUuICAoQnVnICMxNjQ0Ny4pICAqLwotICAgIHRtcCA9IGV0LT5odF9uYW1lOwotICAgIGV0LT5odF9uYW1lID0gdmFsdWU7CisgICAgaWYgKHN0cmxlbih0cF9uYW1lKSAhPSAoc2l6ZV90KW5hbWVfc2l6ZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIG5hbWUgbXVzdCBub3QgY29udGFpbiBudWxsIGNoYXJhY3RlcnMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAogICAgIHR5cGUtPnRwX25hbWUgPSB0cF9uYW1lOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgUHlfU0VUUkVGKCgoUHlIZWFwVHlwZU9iamVjdCopdHlwZSktPmh0X25hbWUsIHZhbHVlKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtNDM3LDggKzQ0NSw3IEBACiAKICAgICBldCA9IChQeUhlYXBUeXBlT2JqZWN0Kil0eXBlOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgUHlfREVDUkVGKGV0LT5odF9xdWFsbmFtZSk7Ci0gICAgZXQtPmh0X3F1YWxuYW1lID0gdmFsdWU7CisgICAgUHlfU0VUUkVGKGV0LT5odF9xdWFsbmFtZSwgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMjAwLDggKzEyMDcsMTEgQEAKICAgICBhc3NlcnQoYmFzZWRlYWxsb2MpOwogICAgIGJhc2VkZWFsbG9jKHNlbGYpOwogCi0gICAgLyogQ2FuJ3QgcmVmZXJlbmNlIHNlbGYgYmV5b25kIHRoaXMgcG9pbnQgKi8KLSAgICBQeV9ERUNSRUYodHlwZSk7CisgICAgLyogQ2FuJ3QgcmVmZXJlbmNlIHNlbGYgYmV5b25kIHRoaXMgcG9pbnQuIEl0J3MgcG9zc2libGUgdHBfZGVsIHN3aXRjaGVkCisgICAgICAgb3VyIHR5cGUgZnJvbSBhIEhFQVBUWVBFIHRvIGEgbm9uLUhFQVBUWVBFLCBzbyBiZSBjYXJlZnVsIGFib3V0CisgICAgICAgcmVmZXJlbmNlIGNvdW50aW5nLiAqLworICAgIGlmICh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpCisgICAgICBQeV9ERUNSRUYodHlwZSk7CiAKICAgZW5kbGFiZWw6CiAgICAgKytfUHlUcmFzaF9kZWxldGVfbmVzdGluZzsKQEAgLTIyNTksOCArMjI2OSw4IEBACiAgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gTlVMTCwgKmJhc2UsICp0bXB0eXBlLCAqd2lubmVyOwogICAgIFB5SGVhcFR5cGVPYmplY3QgKmV0OwogICAgIFB5TWVtYmVyRGVmICptcDsKLSAgICBQeV9zc2l6ZV90IGksIG5iYXNlcywgbnNsb3RzLCBzbG90b2Zmc2V0LCBhZGRfZGljdCwgYWRkX3dlYWs7Ci0gICAgaW50IGosIG1heV9hZGRfZGljdCwgbWF5X2FkZF93ZWFrOworICAgIFB5X3NzaXplX3QgaSwgbmJhc2VzLCBuc2xvdHMsIHNsb3RvZmZzZXQsIG5hbWVfc2l6ZTsKKyAgICBpbnQgaiwgbWF5X2FkZF9kaWN0LCBtYXlfYWRkX3dlYWssIGFkZF9kaWN0LCBhZGRfd2VhazsKICAgICBfUHlfSURFTlRJRklFUihfX3F1YWxuYW1lX18pOwogICAgIF9QeV9JREVOVElGSUVSKF9fc2xvdHNfXyk7CiAKQEAgLTI0NzgsMTMgKzI0ODgsMTkgQEAKICAgICAgICAgdHlwZS0+dHBfZmxhZ3MgfD0gUHlfVFBGTEFHU19IQVZFX0dDOwogCiAgICAgLyogSW5pdGlhbGl6ZSBlc3NlbnRpYWwgZmllbGRzICovCisgICAgdHlwZS0+dHBfYXNfYXN5bmMgPSAmZXQtPmFzX2FzeW5jOwogICAgIHR5cGUtPnRwX2FzX251bWJlciA9ICZldC0+YXNfbnVtYmVyOwogICAgIHR5cGUtPnRwX2FzX3NlcXVlbmNlID0gJmV0LT5hc19zZXF1ZW5jZTsKICAgICB0eXBlLT50cF9hc19tYXBwaW5nID0gJmV0LT5hc19tYXBwaW5nOwogICAgIHR5cGUtPnRwX2FzX2J1ZmZlciA9ICZldC0+YXNfYnVmZmVyOwotICAgIHR5cGUtPnRwX25hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOworICAgIHR5cGUtPnRwX25hbWUgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShuYW1lLCAmbmFtZV9zaXplKTsKICAgICBpZiAoIXR5cGUtPnRwX25hbWUpCiAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKHN0cmxlbih0eXBlLT50cF9uYW1lKSAhPSAoc2l6ZV90KW5hbWVfc2l6ZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIG5hbWUgbXVzdCBub3QgY29udGFpbiBudWxsIGNoYXJhY3RlcnMiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CiAKICAgICAvKiBTZXQgdHBfYmFzZSBhbmQgdHBfYmFzZXMgKi8KICAgICB0eXBlLT50cF9iYXNlcyA9IGJhc2VzOwpAQCAtMjYxNyw5ICsyNjMzLDEwIEBACiAgICAgfQogICAgIHR5cGUtPnRwX2RlYWxsb2MgPSBzdWJ0eXBlX2RlYWxsb2M7CiAKLSAgICAvKiBFbmFibGUgR0MgdW5sZXNzIHRoZXJlIGFyZSByZWFsbHkgbm8gaW5zdGFuY2UgdmFyaWFibGVzIHBvc3NpYmxlICovCi0gICAgaWYgKCEodHlwZS0+dHBfYmFzaWNzaXplID09IHNpemVvZihQeU9iamVjdCkgJiYKLSAgICAgICAgICB0eXBlLT50cF9pdGVtc2l6ZSA9PSAwKSkKKyAgICAvKiBFbmFibGUgR0MgdW5sZXNzIHRoaXMgY2xhc3MgaXMgbm90IGFkZGluZyBuZXcgaW5zdGFuY2UgdmFyaWFibGVzIGFuZAorICAgICAgIHRoZSBiYXNlIGNsYXNzIGRpZCBub3QgdXNlIEdDLiAqLworICAgIGlmICgoYmFzZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hBVkVfR0MpIHx8CisgICAgICAgIHR5cGUtPnRwX2Jhc2ljc2l6ZSA+IGJhc2UtPnRwX2Jhc2ljc2l6ZSkKICAgICAgICAgdHlwZS0+dHBfZmxhZ3MgfD0gUHlfVFBGTEFHU19IQVZFX0dDOwogCiAgICAgLyogQWx3YXlzIG92ZXJyaWRlIGFsbG9jYXRpb24gc3RyYXRlZ3kgdG8gdXNlIHJlZ3VsYXIgaGVhcCAqLwpAQCAtMjY2NCw2ICsyNjgxLDcgQEAKIHsKICAgICBQeUhlYXBUeXBlT2JqZWN0ICpyZXMgPSAoUHlIZWFwVHlwZU9iamVjdCopUHlUeXBlX0dlbmVyaWNBbGxvYygmUHlUeXBlX1R5cGUsIDApOwogICAgIFB5VHlwZU9iamVjdCAqdHlwZSwgKmJhc2U7CisgICAgUHlPYmplY3QgKm1vZG5hbWU7CiAgICAgY2hhciAqczsKICAgICBjaGFyICpyZXNfc3RhcnQgPSAoY2hhciopcmVzOwogICAgIFB5VHlwZV9TbG90ICpzbG90OwpAQCAtMjcyMiw2ICsyNzQwLDcgQEAKICAgICB9CiAKICAgICAvKiBJbml0aWFsaXplIGVzc2VudGlhbCBmaWVsZHMgKi8KKyAgICB0eXBlLT50cF9hc19hc3luYyA9ICZyZXMtPmFzX2FzeW5jOwogICAgIHR5cGUtPnRwX2FzX251bWJlciA9ICZyZXMtPmFzX251bWJlcjsKICAgICB0eXBlLT50cF9hc19zZXF1ZW5jZSA9ICZyZXMtPmFzX3NlcXVlbmNlOwogICAgIHR5cGUtPnRwX2FzX21hcHBpbmcgPSAmcmVzLT5hc19tYXBwaW5nOwpAQCAtMjczNiw3ICsyNzU1LDggQEAKICAgICB0eXBlLT50cF9pdGVtc2l6ZSA9IHNwZWMtPml0ZW1zaXplOwogCiAgICAgZm9yIChzbG90ID0gc3BlYy0+c2xvdHM7IHNsb3QtPnNsb3Q7IHNsb3QrKykgewotICAgICAgICBpZiAoc2xvdC0+c2xvdCA+PSBQeV9BUlJBWV9MRU5HVEgoc2xvdG9mZnNldHMpKSB7CisgICAgICAgIGlmIChzbG90LT5zbG90IDwgMAorICAgICAgICAgICAgfHwgKHNpemVfdClzbG90LT5zbG90ID49IFB5X0FSUkFZX0xFTkdUSChzbG90b2Zmc2V0cykpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJpbnZhbGlkIHNsb3Qgb2Zmc2V0Iik7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KQEAgLTI3NzUsMTAgKzI3OTUsMjAgQEAKIAogICAgIC8qIFNldCB0eXBlLl9fbW9kdWxlX18gKi8KICAgICBzID0gc3RycmNocihzcGVjLT5uYW1lLCAnLicpOwotICAgIGlmIChzICE9IE5VTEwpCi0gICAgICAgIF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbW9kdWxlX18sCi0gICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoCi0gICAgICAgICAgICAgICAgc3BlYy0+bmFtZSwgKFB5X3NzaXplX3QpKHMgLSBzcGVjLT5uYW1lKSkpOworICAgIGlmIChzICE9IE5VTEwpIHsKKyAgICAgICAgbW9kbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgKKyAgICAgICAgICAgICAgICBzcGVjLT5uYW1lLCAoUHlfc3NpemVfdCkocyAtIHNwZWMtPm5hbWUpKTsKKyAgICAgICAgaWYgKG1vZG5hbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgICAgIF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbW9kdWxlX18sIG1vZG5hbWUpOworICAgICAgICBQeV9ERUNSRUYobW9kbmFtZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgICAgICJidWlsdGluIHR5cGUgJS4yMDBzIGhhcyBubyBfX21vZHVsZV9fIGF0dHJpYnV0ZSIsCisgICAgICAgICAgICAgICAgc3BlYy0+bmFtZSkpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgfQogCiAgICAgcmV0dXJuIChQeU9iamVjdCopcmVzOwogCkBAIC0yNzk2LDExICsyODI2LDExIEBACiB2b2lkICoKIFB5VHlwZV9HZXRTbG90KFB5VHlwZU9iamVjdCAqdHlwZSwgaW50IHNsb3QpCiB7Ci0gICAgaWYgKCFQeVR5cGVfSGFzRmVhdHVyZSh0eXBlLCBQeV9UUEZMQUdTX0hFQVBUWVBFKSkgeworICAgIGlmICghUHlUeXBlX0hhc0ZlYXR1cmUodHlwZSwgUHlfVFBGTEFHU19IRUFQVFlQRSkgfHwgc2xvdCA8IDApIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoc2xvdCA+PSBQeV9BUlJBWV9MRU5HVEgoc2xvdG9mZnNldHMpKSB7CisgICAgaWYgKChzaXplX3Qpc2xvdCA+PSBQeV9BUlJBWV9MRU5HVEgoc2xvdG9mZnNldHMpKSB7CiAgICAgICAgIC8qIEV4dGVuc2lvbiBtb2R1bGUgcmVxdWVzdGluZyBzbG90IGZyb20gYSBmdXR1cmUgdmVyc2lvbiAqLwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yODIxLDggKzI4NTEsMTIgQEAKICAgICAgICAgLyogZmFzdCBwYXRoICovCiAgICAgICAgIGggPSBNQ0FDSEVfSEFTSF9NRVRIT0QodHlwZSwgbmFtZSk7CiAgICAgICAgIGlmIChtZXRob2RfY2FjaGVbaF0udmVyc2lvbiA9PSB0eXBlLT50cF92ZXJzaW9uX3RhZyAmJgotICAgICAgICAgICAgbWV0aG9kX2NhY2hlW2hdLm5hbWUgPT0gbmFtZSkKKyAgICAgICAgICAgIG1ldGhvZF9jYWNoZVtoXS5uYW1lID09IG5hbWUpIHsKKyNpZiBNQ0FDSEVfU1RBVFMKKyAgICAgICAgICAgIG1ldGhvZF9jYWNoZV9oaXRzKys7CisjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBtZXRob2RfY2FjaGVbaF0udmFsdWU7CisgICAgICAgIH0KICAgICB9CiAKICAgICAvKiBMb29rIGluIHRwX2RpY3Qgb2YgdHlwZXMgaW4gTVJPICovCkBAIC0yODU2LDggKzI4OTAsMTQgQEAKICAgICAgICAgbWV0aG9kX2NhY2hlW2hdLnZlcnNpb24gPSB0eXBlLT50cF92ZXJzaW9uX3RhZzsKICAgICAgICAgbWV0aG9kX2NhY2hlW2hdLnZhbHVlID0gcmVzOyAgLyogYm9ycm93ZWQgKi8KICAgICAgICAgUHlfSU5DUkVGKG5hbWUpOwotICAgICAgICBQeV9ERUNSRUYobWV0aG9kX2NhY2hlW2hdLm5hbWUpOwotICAgICAgICBtZXRob2RfY2FjaGVbaF0ubmFtZSA9IG5hbWU7CisgICAgICAgIGFzc2VydCgoKFB5QVNDSUlPYmplY3QgKikobmFtZSkpLT5oYXNoICE9IC0xKTsKKyNpZiBNQ0FDSEVfU1RBVFMKKyAgICAgICAgaWYgKG1ldGhvZF9jYWNoZVtoXS5uYW1lICE9IFB5X05vbmUgJiYgbWV0aG9kX2NhY2hlW2hdLm5hbWUgIT0gbmFtZSkKKyAgICAgICAgICAgIG1ldGhvZF9jYWNoZV9jb2xsaXNpb25zKys7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1ldGhvZF9jYWNoZV9taXNzZXMrKzsKKyNlbmRpZgorICAgICAgICBQeV9TRVRSRUYobWV0aG9kX2NhY2hlW2hdLm5hbWUsIG5hbWUpOwogICAgIH0KICAgICByZXR1cm4gcmVzOwogfQpAQCAtMzUwNiwxNyArMzU0NiwxOCBAQAogfQogCiBzdGF0aWMgaW50Ci1lcXVpdl9zdHJ1Y3RzKFB5VHlwZU9iamVjdCAqYSwgUHlUeXBlT2JqZWN0ICpiKQorY29tcGF0aWJsZV93aXRoX3RwX2Jhc2UoUHlUeXBlT2JqZWN0ICpjaGlsZCkKIHsKLSAgICByZXR1cm4gYSA9PSBiIHx8Ci0gICAgICAgICAgIChhICE9IE5VTEwgJiYKLSAgICAgICAgYiAhPSBOVUxMICYmCi0gICAgICAgIGEtPnRwX2Jhc2ljc2l6ZSA9PSBiLT50cF9iYXNpY3NpemUgJiYKLSAgICAgICAgYS0+dHBfaXRlbXNpemUgPT0gYi0+dHBfaXRlbXNpemUgJiYKLSAgICAgICAgYS0+dHBfZGljdG9mZnNldCA9PSBiLT50cF9kaWN0b2Zmc2V0ICYmCi0gICAgICAgIGEtPnRwX3dlYWtsaXN0b2Zmc2V0ID09IGItPnRwX3dlYWtsaXN0b2Zmc2V0ICYmCi0gICAgICAgICgoYS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hBVkVfR0MpID09Ci0gICAgICAgICAoYi0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hBVkVfR0MpKSk7CisgICAgUHlUeXBlT2JqZWN0ICpwYXJlbnQgPSBjaGlsZC0+dHBfYmFzZTsKKyAgICByZXR1cm4gKHBhcmVudCAhPSBOVUxMICYmCisgICAgICAgICAgICBjaGlsZC0+dHBfYmFzaWNzaXplID09IHBhcmVudC0+dHBfYmFzaWNzaXplICYmCisgICAgICAgICAgICBjaGlsZC0+dHBfaXRlbXNpemUgPT0gcGFyZW50LT50cF9pdGVtc2l6ZSAmJgorICAgICAgICAgICAgY2hpbGQtPnRwX2RpY3RvZmZzZXQgPT0gcGFyZW50LT50cF9kaWN0b2Zmc2V0ICYmCisgICAgICAgICAgICBjaGlsZC0+dHBfd2Vha2xpc3RvZmZzZXQgPT0gcGFyZW50LT50cF93ZWFrbGlzdG9mZnNldCAmJgorICAgICAgICAgICAgKChjaGlsZC0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hBVkVfR0MpID09CisgICAgICAgICAgICAgKHBhcmVudC0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hBVkVfR0MpKSAmJgorICAgICAgICAgICAgKGNoaWxkLT50cF9kZWFsbG9jID09IHN1YnR5cGVfZGVhbGxvYyB8fAorICAgICAgICAgICAgIGNoaWxkLT50cF9kZWFsbG9jID09IHBhcmVudC0+dHBfZGVhbGxvYykpOwogfQogCiBzdGF0aWMgaW50CkBAIC0zNTM0LDYgKzM1NzUsMTAgQEAKICAgICAgICAgc2l6ZSArPSBzaXplb2YoUHlPYmplY3QgKik7CiAKICAgICAvKiBDaGVjayBzbG90cyBjb21wbGlhbmNlICovCisgICAgaWYgKCEoYS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSB8fAorICAgICAgICAhKGItPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIHNsb3RzX2EgPSAoKFB5SGVhcFR5cGVPYmplY3QgKilhKS0+aHRfc2xvdHM7CiAgICAgc2xvdHNfYiA9ICgoUHlIZWFwVHlwZU9iamVjdCAqKWIpLT5odF9zbG90czsKICAgICBpZiAoc2xvdHNfYSAmJiBzbG90c19iKSB7CkBAIC0zNTQ5LDkgKzM1OTQsNyBAQAogewogICAgIFB5VHlwZU9iamVjdCAqbmV3YmFzZSwgKm9sZGJhc2U7CiAKLSAgICBpZiAobmV3dG8tPnRwX2RlYWxsb2MgIT0gb2xkdG8tPnRwX2RlYWxsb2MgfHwKLSAgICAgICAgbmV3dG8tPnRwX2ZyZWUgIT0gb2xkdG8tPnRwX2ZyZWUpCi0gICAgeworICAgIGlmIChuZXd0by0+dHBfZnJlZSAhPSBvbGR0by0+dHBfZnJlZSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIiVzIGFzc2lnbm1lbnQ6ICIKICAgICAgICAgICAgICAgICAgICAgICInJXMnIGRlYWxsb2NhdG9yIGRpZmZlcnMgZnJvbSAnJXMnIiwKQEAgLTM1NjAsMTEgKzM2MDMsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgIG9sZHRvLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIC8qCisgICAgIEl0J3MgdHJpY2t5IHRvIHRlbGwgaWYgdHdvIGFyYml0cmFyeSB0eXBlcyBhcmUgc3VmZmljaWVudGx5IGNvbXBhdGlibGUgYXMKKyAgICAgdG8gYmUgaW50ZXJjaGFuZ2VhYmxlOyBlLmcuLCBldmVuIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSB0cF9iYXNpY3NpemUsIHRoZXkKKyAgICAgbWlnaHQgaGF2ZSB0b3RhbGx5IGRpZmZlcmVudCBzdHJ1Y3QgZmllbGRzLiBJdCdzIG11Y2ggZWFzaWVyIHRvIHRlbGwgaWYgYQorICAgICB0eXBlIGFuZCBpdHMgc3VwZXJ0eXBlIGFyZSBjb21wYXRpYmxlOyBlLmcuLCBpZiB0aGV5IGhhdmUgdGhlIHNhbWUKKyAgICAgdHBfYmFzaWNzaXplLCB0aGVuIHRoYXQgbWVhbnMgdGhleSBoYXZlIGlkZW50aWNhbCBmaWVsZHMuIFNvIHRvIGNoZWNrCisgICAgIHdoZXRoZXIgdHdvIGFyYml0cmFyeSB0eXBlcyBhcmUgY29tcGF0aWJsZSwgd2UgZmlyc3QgZmluZCB0aGUgaGlnaGVzdAorICAgICBzdXBlcnR5cGUgdGhhdCBlYWNoIGlzIGNvbXBhdGlibGUgd2l0aCwgYW5kIHRoZW4gaWYgdGhvc2Ugc3VwZXJ0eXBlcyBhcmUKKyAgICAgY29tcGF0aWJsZSB0aGVuIHRoZSBvcmlnaW5hbCB0eXBlcyBtdXN0IGFsc28gYmUgY29tcGF0aWJsZS4KKyAgICAqLwogICAgIG5ld2Jhc2UgPSBuZXd0bzsKICAgICBvbGRiYXNlID0gb2xkdG87Ci0gICAgd2hpbGUgKGVxdWl2X3N0cnVjdHMobmV3YmFzZSwgbmV3YmFzZS0+dHBfYmFzZSkpCisgICAgd2hpbGUgKGNvbXBhdGlibGVfd2l0aF90cF9iYXNlKG5ld2Jhc2UpKQogICAgICAgICBuZXdiYXNlID0gbmV3YmFzZS0+dHBfYmFzZTsKLSAgICB3aGlsZSAoZXF1aXZfc3RydWN0cyhvbGRiYXNlLCBvbGRiYXNlLT50cF9iYXNlKSkKKyAgICB3aGlsZSAoY29tcGF0aWJsZV93aXRoX3RwX2Jhc2Uob2xkYmFzZSkpCiAgICAgICAgIG9sZGJhc2UgPSBvbGRiYXNlLT50cF9iYXNlOwogICAgIGlmIChuZXdiYXNlICE9IG9sZGJhc2UgJiYKICAgICAgICAgKG5ld2Jhc2UtPnRwX2Jhc2UgIT0gb2xkYmFzZS0+dHBfYmFzZSB8fApAQCAtMzU5OSwxNyArMzY1Miw3MSBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIG5ld3RvID0gKFB5VHlwZU9iamVjdCAqKXZhbHVlOwotICAgIGlmICghKG5ld3RvLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpIHx8Ci0gICAgICAgICEob2xkdG8tPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpCi0gICAgeworICAgIC8qIEluIHZlcnNpb25zIG9mIENQeXRob24gcHJpb3IgdG8gMy41LCB0aGUgY29kZSBpbgorICAgICAgIGNvbXBhdGlibGVfZm9yX2Fzc2lnbm1lbnQgd2FzIG5vdCBzZXQgdXAgdG8gY29ycmVjdGx5IGNoZWNrIGZvciBtZW1vcnkKKyAgICAgICBsYXlvdXQgLyBzbG90IC8gZXRjLiBjb21wYXRpYmlsaXR5IGZvciBub24tSEVBUFRZUEUgY2xhc3Nlcywgc28gd2UganVzdAorICAgICAgIGRpc2FsbG93ZWQgX19jbGFzc19fIGFzc2lnbm1lbnQgaW4gYW55IGNhc2UgdGhhdCB3YXNuJ3QgSEVBUFRZUEUgLT4KKyAgICAgICBIRUFQVFlQRS4KKworICAgICAgIER1cmluZyB0aGUgMy41IGRldmVsb3BtZW50IGN5Y2xlLCB3ZSBmaXhlZCB0aGUgY29kZSBpbgorICAgICAgIGNvbXBhdGlibGVfZm9yX2Fzc2lnbm1lbnQgdG8gY29ycmVjdGx5IGNoZWNrIGNvbXBhdGliaWxpdHkgYmV0d2VlbgorICAgICAgIGFyYml0cmFyeSB0eXBlcywgYW5kIHN0YXJ0ZWQgYWxsb3dpbmcgX19jbGFzc19fIGFzc2lnbm1lbnQgaW4gYWxsIGNhc2VzCisgICAgICAgd2hlcmUgdGhlIG9sZCBhbmQgbmV3IHR5cGVzIGRpZCBpbiBmYWN0IGhhdmUgY29tcGF0aWJsZSBzbG90cyBhbmQKKyAgICAgICBtZW1vcnkgbGF5b3V0IChyZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhleSB3ZXJlIGltcGxlbWVudGVkIGFzIEhFQVBUWVBFcworICAgICAgIG9yIG5vdCkuCisKKyAgICAgICBKdXN0IGJlZm9yZSAzLjUgd2FzIHJlbGVhc2VkLCB0aG91Z2gsIHdlIGRpc2NvdmVyZWQgdGhhdCB0aGlzIGxlZCB0bworICAgICAgIHByb2JsZW1zIHdpdGggaW1tdXRhYmxlIHR5cGVzIGxpa2UgaW50LCB3aGVyZSB0aGUgaW50ZXJwcmV0ZXIgYXNzdW1lcworICAgICAgIHRoZXkgYXJlIGltbXV0YWJsZSBhbmQgaW50ZXJucyBzb21lIHZhbHVlcy4gRm9ybWVybHkgdGhpcyB3YXNuJ3QgYQorICAgICAgIHByb2JsZW0sIGJlY2F1c2UgdGhleSByZWFsbHkgd2VyZSBpbW11dGFibGUgLS0gaW4gcGFydGljdWxhciwgYWxsIHRoZQorICAgICAgIHR5cGVzIHdoZXJlIHRoZSBpbnRlcnByZXRlciBhcHBsaWVkIHRoaXMgaW50ZXJuaW5nIHRyaWNrIGhhcHBlbmVkIHRvCisgICAgICAgYWxzbyBiZSBzdGF0aWNhbGx5IGFsbG9jYXRlZCwgc28gdGhlIG9sZCBIRUFQVFlQRSBydWxlcyB3ZXJlCisgICAgICAgImFjY2lkZW50YWxseSIgc3RvcHBpbmcgdGhlbSBmcm9tIGFsbG93aW5nIF9fY2xhc3NfXyBhc3NpZ25tZW50LiBCdXQKKyAgICAgICB3aXRoIHRoZSBjaGFuZ2VzIHRvIF9fY2xhc3NfXyBhc3NpZ25tZW50LCB3ZSBzdGFydGVkIGFsbG93aW5nIGNvZGUgbGlrZQorCisgICAgICAgICBjbGFzcyBNeUludChpbnQpOgorICAgICAgICAgICAgIC4uLgorICAgICAgICAgIyBNb2RpZmllcyB0aGUgdHlwZSBvZiAqYWxsKiBpbnN0YW5jZXMgb2YgMSBpbiB0aGUgd2hvbGUgcHJvZ3JhbSwKKyAgICAgICAgICMgaW5jbHVkaW5nIGZ1dHVyZSBpbnN0YW5jZXMgKCEpLCBiZWNhdXNlIHRoZSAxIG9iamVjdCBpcyBpbnRlcm5lZC4KKyAgICAgICAgICgxKS5fX2NsYXNzX18gPSBNeUludAorCisgICAgICAgKHNlZSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI0OTEyKS4KKworICAgICAgIEluIHRoZW9yeSB0aGUgcHJvcGVyIGZpeCB3b3VsZCBiZSB0byBpZGVudGlmeSB3aGljaCBjbGFzc2VzIHJlbHkgb24KKyAgICAgICB0aGlzIGludmFyaWFudCBhbmQgc29tZWhvdyBkaXNhbGxvdyBfX2NsYXNzX18gYXNzaWdubWVudCBvbmx5IGZvciB0aGVtLAorICAgICAgIHBlcmhhcHMgdmlhIHNvbWUgbWVjaGFuaXNtIGxpa2UgYSBuZXcgUHlfVFBGTEFHU19JTU1VVEFCTEUgZmxhZyAoYQorICAgICAgICJibGFja2xpc3RpbmciIGFwcHJvYWNoKS4gQnV0IGluIHByYWN0aWNlLCBzaW5jZSB0aGlzIHByb2JsZW0gd2Fzbid0CisgICAgICAgbm90aWNlZCBsYXRlIGluIHRoZSAzLjUgUkMgY3ljbGUsIHdlJ3JlIHRha2luZyB0aGUgY29uc2VydmF0aXZlCisgICAgICAgYXBwcm9hY2ggYW5kIHJlaW5zdGF0aW5nIHRoZSBzYW1lIEhFQVBUWVBFLT5IRUFQVFlQRSBjaGVjayB0aGF0IHdlIHVzZWQKKyAgICAgICB0byBoYXZlLCBwbHVzIGEgIndoaXRlbGlzdCIuIEZvciBub3csIHRoZSB3aGl0ZWxpc3QgY29uc2lzdHMgb25seSBvZgorICAgICAgIE1vZHVsZVR5cGUgc3VidHlwZXMsIHNpbmNlIHRob3NlIGFyZSB0aGUgY2FzZXMgdGhhdCBtb3RpdmF0ZWQgdGhlIHBhdGNoCisgICAgICAgaW4gdGhlIGZpcnN0IHBsYWNlIC0tIHNlZSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIyOTg2IC0tIGFuZAorICAgICAgIHNpbmNlIG1vZHVsZSBvYmplY3RzIGFyZSBtdXRhYmxlIHdlIGNhbiBiZSBzdXJlIHRoYXQgdGhleSBhcmUKKyAgICAgICBkZWZpbml0ZWx5IG5vdCBiZWluZyBpbnRlcm5lZC4gU28gbm93IHdlIGFsbG93IEhFQVBUWVBFLT5IRUFQVFlQRSAqb3IqCisgICAgICAgTW9kdWxlVHlwZSBzdWJ0eXBlIC0+IE1vZHVsZVR5cGUgc3VidHlwZS4KKworICAgICAgIFNvIGZhciBhcyB3ZSBrbm93LCBhbGwgdGhlIGNvZGUgYmV5b25kIHRoZSBmb2xsb3dpbmcgJ2lmJyBzdGF0ZW1lbnQKKyAgICAgICB3aWxsIGNvcnJlY3RseSBoYW5kbGUgbm9uLUhFQVBUWVBFIGNsYXNzZXMsIGFuZCB0aGUgSEVBUFRZUEUgY2hlY2sgaXMKKyAgICAgICBuZWVkZWQgb25seSB0byBwcm90ZWN0IHRoYXQgc3Vic2V0IG9mIG5vbi1IRUFQVFlQRSBjbGFzc2VzIGZvciB3aGljaAorICAgICAgIHRoZSBpbnRlcnByZXRlciBoYXMgYmFrZWQgaW4gdGhlIGFzc3VtcHRpb24gdGhhdCBhbGwgaW5zdGFuY2VzIGFyZQorICAgICAgIHRydWx5IGltbXV0YWJsZS4KKyAgICAqLworICAgIGlmICghKFB5VHlwZV9Jc1N1YnR5cGUobmV3dG8sICZQeU1vZHVsZV9UeXBlKSAmJgorICAgICAgICAgIFB5VHlwZV9Jc1N1YnR5cGUob2xkdG8sICZQeU1vZHVsZV9UeXBlKSkgJiYKKyAgICAgICAgKCEobmV3dG8tPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkgfHwKKyAgICAgICAgICEob2xkdG8tPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiX19jbGFzc19fIGFzc2lnbm1lbnQ6IG9ubHkgZm9yIGhlYXAgdHlwZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICJfX2NsYXNzX18gYXNzaWdubWVudCBvbmx5IHN1cHBvcnRlZCBmb3IgaGVhcCB0eXBlcyAiCisgICAgICAgICAgICAgICAgICAgICAib3IgTW9kdWxlVHlwZSBzdWJjbGFzc2VzIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisKICAgICBpZiAoY29tcGF0aWJsZV9mb3JfYXNzaWdubWVudChvbGR0bywgbmV3dG8sICJfX2NsYXNzX18iKSkgewotICAgICAgICBQeV9JTkNSRUYobmV3dG8pOworICAgICAgICBpZiAobmV3dG8tPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkKKyAgICAgICAgICAgIFB5X0lOQ1JFRihuZXd0byk7CiAgICAgICAgIFB5X1RZUEUoc2VsZikgPSBuZXd0bzsKLSAgICAgICAgUHlfREVDUkVGKG9sZHRvKTsKKyAgICAgICAgaWYgKG9sZHRvLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpCisgICAgICAgICAgICBQeV9ERUNSRUYob2xkdG8pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgZWxzZSB7CkBAIC0zNzEzLDcgKzM4MjAsNyBAQAogfQogCiBQeV9MT0NBTChQeU9iamVjdCAqKQotX1B5T2JqZWN0X0dldFN0YXRlKFB5T2JqZWN0ICpvYmopCitfUHlPYmplY3RfR2V0U3RhdGUoUHlPYmplY3QgKm9iaiwgaW50IHJlcXVpcmVkKQogewogICAgIFB5T2JqZWN0ICpzdGF0ZTsKICAgICBQeU9iamVjdCAqZ2V0c3RhdGU7CkBAIC0zNzI4LDYgKzM4MzUsMTMgQEAKICAgICAgICAgfQogICAgICAgICBQeUVycl9DbGVhcigpOwogCisgICAgICAgIGlmIChyZXF1aXJlZCAmJiBvYmotPm9iX3R5cGUtPnRwX2l0ZW1zaXplKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBwaWNrbGUgJS4yMDBzIG9iamVjdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCiAgICAgICAgIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICoqZGljdDsKICAgICAgICAgICAgIGRpY3QgPSBfUHlPYmplY3RfR2V0RGljdFB0cihvYmopOwpAQCAtMzk3NSw1NSArNDA4OSw5MCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcmVkdWNlXzQoUHlPYmplY3QgKm9iaikKK3JlZHVjZV9uZXdvYmooUHlPYmplY3QgKm9iaiwgaW50IHByb3RvKQogewogICAgIFB5T2JqZWN0ICphcmdzID0gTlVMTCwgKmt3YXJncyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNvcHlyZWc7CiAgICAgUHlPYmplY3QgKm5ld29iaiwgKm5ld2FyZ3MsICpzdGF0ZSwgKmxpc3RpdGVtcywgKmRpY3RpdGVtczsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX2V4X18pOworICAgIGludCBoYXNhcmdzOwogCiAgICAgaWYgKFB5X1RZUEUob2JqKS0+dHBfbmV3ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBwaWNrbGUgJXMgb2JqZWN0cyIsCisgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgcGlja2xlICUuMjAwcyBvYmplY3RzIiwKICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoX1B5T2JqZWN0X0dldE5ld0FyZ3VtZW50cyhvYmosICZhcmdzLCAma3dhcmdzKSA8IDApIHsKKyAgICBpZiAoX1B5T2JqZWN0X0dldE5ld0FyZ3VtZW50cyhvYmosICZhcmdzLCAma3dhcmdzKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoa3dhcmdzID09IE5VTEwpIHsKLSAgICAgICAga3dhcmdzID0gUHlEaWN0X05ldygpOwotICAgICAgICBpZiAoa3dhcmdzID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICBjb3B5cmVnID0gaW1wb3J0X2NvcHlyZWcoKTsKICAgICBpZiAoY29weXJlZyA9PSBOVUxMKSB7CisgICAgICAgIFB5X1hERUNSRUYoYXJncyk7CisgICAgICAgIFB5X1hERUNSRUYoa3dhcmdzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGhhc2FyZ3MgPSAoYXJncyAhPSBOVUxMKTsKKyAgICBpZiAoa3dhcmdzID09IE5VTEwgfHwgUHlEaWN0X1NpemUoa3dhcmdzKSA9PSAwKSB7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX18pOworICAgICAgICBQeU9iamVjdCAqY2xzOworICAgICAgICBQeV9zc2l6ZV90IGksIG47CisKKyAgICAgICAgUHlfWERFQ1JFRihrd2FyZ3MpOworICAgICAgICBuZXdvYmogPSBfUHlPYmplY3RfR2V0QXR0cklkKGNvcHlyZWcsICZQeUlkX19fbmV3b2JqX18pOworICAgICAgICBQeV9ERUNSRUYoY29weXJlZyk7CisgICAgICAgIGlmIChuZXdvYmogPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfWERFQ1JFRihhcmdzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIG4gPSBhcmdzID8gUHlUdXBsZV9HRVRfU0laRShhcmdzKSA6IDA7CisgICAgICAgIG5ld2FyZ3MgPSBQeVR1cGxlX05ldyhuKzEpOworICAgICAgICBpZiAobmV3YXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9YREVDUkVGKGFyZ3MpOworICAgICAgICAgICAgUHlfREVDUkVGKG5ld29iaik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBjbHMgPSAoUHlPYmplY3QgKikgUHlfVFlQRShvYmopOworICAgICAgICBQeV9JTkNSRUYoY2xzKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCAwLCBjbHMpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdiA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CisgICAgICAgICAgICBQeV9JTkNSRUYodik7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIGkrMSwgdik7CisgICAgICAgIH0KKyAgICAgICAgUHlfWERFQ1JFRihhcmdzKTsKKyAgICB9CisgICAgZWxzZSBpZiAocHJvdG8gPj0gNCkgeworICAgICAgICBfUHlfSURFTlRJRklFUihfX25ld29ial9leF9fKTsKKworICAgICAgICBuZXdvYmogPSBfUHlPYmplY3RfR2V0QXR0cklkKGNvcHlyZWcsICZQeUlkX19fbmV3b2JqX2V4X18pOworICAgICAgICBQeV9ERUNSRUYoY29weXJlZyk7CisgICAgICAgIGlmIChuZXdvYmogPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICAgICAgUHlfREVDUkVGKGt3YXJncyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBuZXdhcmdzID0gUHlUdXBsZV9QYWNrKDMsIFB5X1RZUEUob2JqKSwgYXJncywga3dhcmdzKTsKICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwogICAgICAgICBQeV9ERUNSRUYoa3dhcmdzKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChuZXdhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdvYmopOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICB9Ci0gICAgbmV3b2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZChjb3B5cmVnLCAmUHlJZF9fX25ld29ial9leF9fKTsKLSAgICBQeV9ERUNSRUYoY29weXJlZyk7Ci0gICAgaWYgKG5ld29iaiA9PSBOVUxMKSB7CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgdXNlIHByb3RvY29sIDQgb3IgZ3JlYXRlciB0byBjb3B5IHRoaXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdDsgc2luY2UgX19nZXRuZXdhcmdzX2V4X18gcmV0dXJuZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnRzLiIpOwogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgICAgIFB5X0RFQ1JFRihrd2FyZ3MpOworICAgICAgICBQeV9ERUNSRUYoY29weXJlZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBuZXdhcmdzID0gUHlUdXBsZV9QYWNrKDMsIFB5X1RZUEUob2JqKSwgYXJncywga3dhcmdzKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgUHlfREVDUkVGKGt3YXJncyk7Ci0gICAgaWYgKG5ld2FyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYobmV3b2JqKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHN0YXRlID0gX1B5T2JqZWN0X0dldFN0YXRlKG9iaik7CisKKyAgICBzdGF0ZSA9IF9QeU9iamVjdF9HZXRTdGF0ZShvYmosCisgICAgICAgICAgICAgICAgIWhhc2FyZ3MgJiYgIVB5TGlzdF9DaGVjayhvYmopICYmICFQeURpY3RfQ2hlY2sob2JqKSk7CiAgICAgaWYgKHN0YXRlID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld29iaik7CiAgICAgICAgIFB5X0RFQ1JFRihuZXdhcmdzKTsKQEAgLTQwNDUsOTEgKzQxOTQsMTIgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotcmVkdWNlXzIoUHlPYmplY3QgKm9iaikKLXsKLSAgICBQeU9iamVjdCAqY2xzOwotICAgIFB5T2JqZWN0ICphcmdzID0gTlVMTCwgKmFyZ3MyID0gTlVMTCwgKmt3YXJncyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnN0YXRlID0gTlVMTCwgKmxpc3RpdGVtcyA9IE5VTEwsICpkaWN0aXRlbXMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpjb3B5cmVnID0gTlVMTCwgKm5ld29iaiA9IE5VTEwsICpyZXMgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgaSwgbjsKLSAgICBfUHlfSURFTlRJRklFUihfX25ld29ial9fKTsKLQotICAgIGlmIChQeV9UWVBFKG9iaiktPnRwX25ldyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgcGlja2xlICVzIG9iamVjdHMiLAotICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChfUHlPYmplY3RfR2V0TmV3QXJndW1lbnRzKG9iaiwgJmFyZ3MsICZrd2FyZ3MpIDwgMCkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICBhc3NlcnQoa3dhcmdzID09IE5VTEwpOwotICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKGt3YXJncyAhPSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeURpY3RfU2l6ZShrd2FyZ3MpID4gMCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgdXNlIHByb3RvY29sIDQgb3IgZ3JlYXRlciB0byBjb3B5IHRoaXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3Q7IHNpbmNlIF9fZ2V0bmV3YXJnc19leF9fIHJldHVybmVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudHMuIik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa3dhcmdzKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5X0NMRUFSKGt3YXJncyk7Ci0gICAgfQotCi0gICAgc3RhdGUgPSBfUHlPYmplY3RfR2V0U3RhdGUob2JqKTsKLSAgICBpZiAoc3RhdGUgPT0gTlVMTCkKLSAgICAgICAgZ290byBlbmQ7Ci0KLSAgICBpZiAoX1B5T2JqZWN0X0dldEl0ZW1zSXRlcihvYmosICZsaXN0aXRlbXMsICZkaWN0aXRlbXMpIDwgMCkKLSAgICAgICAgZ290byBlbmQ7Ci0KLSAgICBjb3B5cmVnID0gaW1wb3J0X2NvcHlyZWcoKTsKLSAgICBpZiAoY29weXJlZyA9PSBOVUxMKQotICAgICAgICBnb3RvIGVuZDsKLSAgICBuZXdvYmogPSBfUHlPYmplY3RfR2V0QXR0cklkKGNvcHlyZWcsICZQeUlkX19fbmV3b2JqX18pOwotICAgIGlmIChuZXdvYmogPT0gTlVMTCkKLSAgICAgICAgZ290byBlbmQ7Ci0KLSAgICBuID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKLSAgICBhcmdzMiA9IFB5VHVwbGVfTmV3KG4rMSk7Ci0gICAgaWYgKGFyZ3MyID09IE5VTEwpCi0gICAgICAgIGdvdG8gZW5kOwotICAgIGNscyA9IChQeU9iamVjdCAqKSBQeV9UWVBFKG9iaik7Ci0gICAgUHlfSU5DUkVGKGNscyk7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzMiwgMCwgY2xzKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp2ID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKLSAgICAgICAgUHlfSU5DUkVGKHYpOwotICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MyLCBpKzEsIHYpOwotICAgIH0KLQotICAgIHJlcyA9IFB5VHVwbGVfUGFjayg1LCBuZXdvYmosIGFyZ3MyLCBzdGF0ZSwgbGlzdGl0ZW1zLCBkaWN0aXRlbXMpOwotCi0gIGVuZDoKLSAgICBQeV9YREVDUkVGKGFyZ3MpOwotICAgIFB5X1hERUNSRUYoYXJnczIpOwotICAgIFB5X1hERUNSRUYoc3RhdGUpOwotICAgIFB5X1hERUNSRUYobGlzdGl0ZW1zKTsKLSAgICBQeV9YREVDUkVGKGRpY3RpdGVtcyk7Ci0gICAgUHlfWERFQ1JFRihjb3B5cmVnKTsKLSAgICBQeV9YREVDUkVGKG5ld29iaik7Ci0gICAgcmV0dXJuIHJlczsKLX0KLQogLyoKICAqIFRoZXJlIHdlcmUgdHdvIHByb2JsZW1zIHdoZW4gb2JqZWN0Ll9fcmVkdWNlX18gYW5kIG9iamVjdC5fX3JlZHVjZV9leF9fCiAgKiB3ZXJlIGltcGxlbWVudGVkIGluIHRoZSBzYW1lIGZ1bmN0aW9uOgogICogIC0gdHJ5aW5nIHRvIHBpY2tsZSBhbiBvYmplY3Qgd2l0aCBhIGN1c3RvbSBfX3JlZHVjZV9fIG1ldGhvZCB0aGF0CiAgKiAgICBmZWxsIGJhY2sgdG8gb2JqZWN0Ll9fcmVkdWNlX18gaW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzIGxlZCB0bwotICogICAgaW5maW5pdGUgcmVjdXJzaW9uIGF0IFB5dGhvbiBsZXZlbCBhbmQgZXZlbnR1YWwgUnVudGltZUVycm9yLgorICogICAgaW5maW5pdGUgcmVjdXJzaW9uIGF0IFB5dGhvbiBsZXZlbCBhbmQgZXZlbnR1YWwgUmVjdXJzaW9uRXJyb3IuCiAgKiAgLSBQaWNrbGluZyBvYmplY3RzIHRoYXQgbGllZCBhYm91dCB0aGVpciB0eXBlIGJ5IG92ZXJ3cml0aW5nIHRoZQogICogICAgX19jbGFzc19fIGRlc2NyaXB0b3IgY291bGQgbGVhZCB0byBpbmZpbml0ZSByZWN1cnNpb24gYXQgQyBsZXZlbAogICogICAgYW5kIGV2ZW50dWFsIHNlZ2ZhdWx0LgpAQCAtNDE0NCwxMCArNDIxNCw4IEBACiB7CiAgICAgUHlPYmplY3QgKmNvcHlyZWcsICpyZXM7CiAKLSAgICBpZiAocHJvdG8gPj0gNCkKLSAgICAgICAgcmV0dXJuIHJlZHVjZV80KHNlbGYpOwotICAgIGVsc2UgaWYgKHByb3RvID49IDIpCi0gICAgICAgIHJldHVybiByZWR1Y2VfMihzZWxmKTsKKyAgICBpZiAocHJvdG8gPj0gMikKKyAgICAgICAgcmV0dXJuIHJlZHVjZV9uZXdvYmooc2VsZiwgcHJvdG8pOwogCiAgICAgY29weXJlZyA9IGltcG9ydF9jb3B5cmVnKCk7CiAgICAgaWYgKCFjb3B5cmVnKQpAQCAtNDU2Miw2ICs0NjMwLDcgQEAKICNkZWZpbmUgQ09QWVNMT1QoU0xPVCkgXAogICAgIGlmICghdHlwZS0+U0xPVCAmJiBTTE9UREVGSU5FRChTTE9UKSkgdHlwZS0+U0xPVCA9IGJhc2UtPlNMT1QKIAorI2RlZmluZSBDT1BZQVNZTkMoU0xPVCkgQ09QWVNMT1QodHBfYXNfYXN5bmMtPlNMT1QpCiAjZGVmaW5lIENPUFlOVU0oU0xPVCkgQ09QWVNMT1QodHBfYXNfbnVtYmVyLT5TTE9UKQogI2RlZmluZSBDT1BZU0VRKFNMT1QpIENPUFlTTE9UKHRwX2FzX3NlcXVlbmNlLT5TTE9UKQogI2RlZmluZSBDT1BZTUFQKFNMT1QpIENPUFlTTE9UKHRwX2FzX21hcHBpbmctPlNMT1QpCkBAIC00NjA3LDYgKzQ2NzYsMTcgQEAKICAgICAgICAgQ09QWU5VTShuYl9pbnBsYWNlX3RydWVfZGl2aWRlKTsKICAgICAgICAgQ09QWU5VTShuYl9pbnBsYWNlX2Zsb29yX2RpdmlkZSk7CiAgICAgICAgIENPUFlOVU0obmJfaW5kZXgpOworICAgICAgICBDT1BZTlVNKG5iX21hdHJpeF9tdWx0aXBseSk7CisgICAgICAgIENPUFlOVU0obmJfaW5wbGFjZV9tYXRyaXhfbXVsdGlwbHkpOworICAgIH0KKworICAgIGlmICh0eXBlLT50cF9hc19hc3luYyAhPSBOVUxMICYmIGJhc2UtPnRwX2FzX2FzeW5jICE9IE5VTEwpIHsKKyAgICAgICAgYmFzZWJhc2UgPSBiYXNlLT50cF9iYXNlOworICAgICAgICBpZiAoYmFzZWJhc2UtPnRwX2FzX2FzeW5jID09IE5VTEwpCisgICAgICAgICAgICBiYXNlYmFzZSA9IE5VTEw7CisgICAgICAgIENPUFlBU1lOQyhhbV9hd2FpdCk7CisgICAgICAgIENPUFlBU1lOQyhhbV9haXRlcik7CisgICAgICAgIENPUFlBU1lOQyhhbV9hbmV4dCk7CiAgICAgfQogCiAgICAgaWYgKHR5cGUtPnRwX2FzX3NlcXVlbmNlICE9IE5VTEwgJiYgYmFzZS0+dHBfYXNfc2VxdWVuY2UgIT0gTlVMTCkgewpAQCAtNDgxOCwxNCArNDg5OCwxMSBAQAogICAgICAgICAgICAgUHlPYmplY3QgKmIgPSBQeVR1cGxlX0dFVF9JVEVNKGJhc2VzLCBpKTsKICAgICAgICAgICAgIGlmIChQeVR5cGVfQ2hlY2soYikgJiYKICAgICAgICAgICAgICAgICAoKChQeVR5cGVPYmplY3QgKiliKS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSkgewotICAgICAgICAgICAgICAgIGNoYXIgYnVmWzMwMF07Ci0gICAgICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUgJyUuMTAwcycgaXMgbm90IGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBidXQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0cyBiYXNlIHR5cGUgJyUuMTAwcycgaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUsICgoUHlUeXBlT2JqZWN0ICopYiktPnRwX25hbWUpOwotICAgICAgICAgICAgICAgIGlmIChQeUVycl9XYXJuKFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgYnVmKSA8IDApCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUgJyUuMTAwcycgaXMgbm90IGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBidXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRzIGJhc2UgdHlwZSAnJS4xMDBzJyBpcyBkeW5hbWljYWxseSBhbGxvY2F0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lLCAoKFB5VHlwZU9iamVjdCAqKWIpLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTQ4ODEsNiArNDk1OCw4IEBACiAgICAgLyogU29tZSBtb3JlIHNwZWNpYWwgc3R1ZmYgKi8KICAgICBiYXNlID0gdHlwZS0+dHBfYmFzZTsKICAgICBpZiAoYmFzZSAhPSBOVUxMKSB7CisgICAgICAgIGlmICh0eXBlLT50cF9hc19hc3luYyA9PSBOVUxMKQorICAgICAgICAgICAgdHlwZS0+dHBfYXNfYXN5bmMgPSBiYXNlLT50cF9hc19hc3luYzsKICAgICAgICAgaWYgKHR5cGUtPnRwX2FzX251bWJlciA9PSBOVUxMKQogICAgICAgICAgICAgdHlwZS0+dHBfYXNfbnVtYmVyID0gYmFzZS0+dHBfYXNfbnVtYmVyOwogICAgICAgICBpZiAodHlwZS0+dHBfYXNfc2VxdWVuY2UgPT0gTlVMTCkKQEAgLTQ5MDEsMTYgKzQ5ODAsNiBAQAogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICAvKiBXYXJuIGZvciBhIHR5cGUgdGhhdCBpbXBsZW1lbnRzIHRwX2NvbXBhcmUgKG5vdyBrbm93biBhcwotICAgICAgIHRwX3Jlc2VydmVkKSBidXQgbm90IHRwX3JpY2hjb21wYXJlLiAqLwotICAgIGlmICh0eXBlLT50cF9yZXNlcnZlZCAmJiAhdHlwZS0+dHBfcmljaGNvbXBhcmUpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJUeXBlICUuMTAwcyBkZWZpbmVzIHRwX3Jlc2VydmVkIChmb3JtZXJseSB0cF9jb21wYXJlKSAiCi0gICAgICAgICAgICAiYnV0IG5vdCB0cF9yaWNoY29tcGFyZS4gQ29tcGFyaXNvbnMgbWF5IG5vdCBiZWhhdmUgYXMgaW50ZW5kZWQuIiwKLSAgICAgICAgICAgIHR5cGUtPnRwX25hbWUpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQogICAgIC8qIEFsbCBkb25lIC0tIHNldCB0aGUgcmVhZHkgZmxhZyAqLwogICAgIGFzc2VydCh0eXBlLT50cF9kaWN0ICE9IE5VTEwpOwogICAgIHR5cGUtPnRwX2ZsYWdzID0KQEAgLTU3NzcsNiArNTg0Niw3IEBACiBTTE9UMUJJTihzbG90X25iX2FkZCwgbmJfYWRkLCAiX19hZGRfXyIsICJfX3JhZGRfXyIpCiBTTE9UMUJJTihzbG90X25iX3N1YnRyYWN0LCBuYl9zdWJ0cmFjdCwgIl9fc3ViX18iLCAiX19yc3ViX18iKQogU0xPVDFCSU4oc2xvdF9uYl9tdWx0aXBseSwgbmJfbXVsdGlwbHksICJfX211bF9fIiwgIl9fcm11bF9fIikKK1NMT1QxQklOKHNsb3RfbmJfbWF0cml4X211bHRpcGx5LCBuYl9tYXRyaXhfbXVsdGlwbHksICJfX21hdG11bF9fIiwgIl9fcm1hdG11bF9fIikKIFNMT1QxQklOKHNsb3RfbmJfcmVtYWluZGVyLCBuYl9yZW1haW5kZXIsICJfX21vZF9fIiwgIl9fcm1vZF9fIikKIFNMT1QxQklOKHNsb3RfbmJfZGl2bW9kLCBuYl9kaXZtb2QsICJfX2Rpdm1vZF9fIiwgIl9fcmRpdm1vZF9fIikKIApAQCAtNTg3MCw2ICs1OTQwLDcgQEAKIFNMT1QxKHNsb3RfbmJfaW5wbGFjZV9hZGQsICJfX2lhZGRfXyIsIFB5T2JqZWN0ICosICJPIikKIFNMT1QxKHNsb3RfbmJfaW5wbGFjZV9zdWJ0cmFjdCwgIl9faXN1Yl9fIiwgUHlPYmplY3QgKiwgIk8iKQogU0xPVDEoc2xvdF9uYl9pbnBsYWNlX211bHRpcGx5LCAiX19pbXVsX18iLCBQeU9iamVjdCAqLCAiTyIpCitTTE9UMShzbG90X25iX2lucGxhY2VfbWF0cml4X211bHRpcGx5LCAiX19pbWF0bXVsX18iLCBQeU9iamVjdCAqLCAiTyIpCiBTTE9UMShzbG90X25iX2lucGxhY2VfcmVtYWluZGVyLCAiX19pbW9kX18iLCBQeU9iamVjdCAqLCAiTyIpCiAvKiBDYW4ndCB1c2UgU0xPVDEgaGVyZSwgYmVjYXVzZSBuYl9pbnBsYWNlX3Bvd2VyIGlzIHRlcm5hcnkgKi8KIHN0YXRpYyBQeU9iamVjdCAqCkBAIC02MjYwLDYgKzYzMzEsNTkgQEAKICAgICBQeUVycl9SZXN0b3JlKGVycm9yX3R5cGUsIGVycm9yX3ZhbHVlLCBlcnJvcl90cmFjZWJhY2spOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorc2xvdF9hbV9hd2FpdChQeU9iamVjdCAqc2VsZikKK3sKKyAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKKyAgICBfUHlfSURFTlRJRklFUihfX2F3YWl0X18pOworCisgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19hd2FpdF9fKTsKKyAgICBpZiAoZnVuYyAhPSBOVUxMKSB7CisgICAgICAgIHJlcyA9IFB5RXZhbF9DYWxsT2JqZWN0KGZ1bmMsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIm9iamVjdCAlLjUwcyBkb2VzIG5vdCBoYXZlIF9fYXdhaXRfXyBtZXRob2QiLAorICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Nsb3RfYW1fYWl0ZXIoUHlPYmplY3QgKnNlbGYpCit7CisgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7CisgICAgX1B5X0lERU5USUZJRVIoX19haXRlcl9fKTsKKworICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19fYWl0ZXJfXyk7CisgICAgaWYgKGZ1bmMgIT0gTlVMTCkgeworICAgICAgICByZXMgPSBQeUV2YWxfQ2FsbE9iamVjdChmdW5jLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICJvYmplY3QgJS41MHMgZG9lcyBub3QgaGF2ZSBfX2FpdGVyX18gbWV0aG9kIiwKKyAgICAgICAgICAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitzbG90X2FtX2FuZXh0KFB5T2JqZWN0ICpzZWxmKQoreworICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzOworICAgIF9QeV9JREVOVElGSUVSKF9fYW5leHRfXyk7CisKKyAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2FuZXh0X18pOworICAgIGlmIChmdW5jICE9IE5VTEwpIHsKKyAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZnVuYywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAib2JqZWN0ICUuNTBzIGRvZXMgbm90IGhhdmUgX19hbmV4dF9fIG1ldGhvZCIsCisgICAgICAgICAgICAgICAgIFB5X1RZUEUoc2VsZiktPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOworfQogCiAvKgogVGFibGUgbWFwcGluZyBfX2Zvb19fIG5hbWVzIHRvIHRwX2ZvbyBvZmZzZXRzIGFuZCBzbG90X3RwX2ZvbyB3cmFwcGVyIGZ1bmN0aW9ucy4KQEAgLTYyNzYsNiArNjQwMCw3IEBACiAKICN1bmRlZiBUUFNMT1QKICN1bmRlZiBGTFNMT1QKKyN1bmRlZiBBTVNMT1QKICN1bmRlZiBFVFNMT1QKICN1bmRlZiBTUVNMT1QKICN1bmRlZiBNUFNMT1QKQEAgLTYyOTQsNiArNjQxOSw4IEBACiAjZGVmaW5lIEVUU0xPVChOQU1FLCBTTE9ULCBGVU5DVElPTiwgV1JBUFBFUiwgRE9DKSBcCiAgICAge05BTUUsIG9mZnNldG9mKFB5SGVhcFR5cGVPYmplY3QsIFNMT1QpLCAodm9pZCAqKShGVU5DVElPTiksIFdSQVBQRVIsIFwKICAgICAgUHlEb2NfU1RSKERPQyl9CisjZGVmaW5lIEFNU0xPVChOQU1FLCBTTE9ULCBGVU5DVElPTiwgV1JBUFBFUiwgRE9DKSBcCisgICAgRVRTTE9UKE5BTUUsIGFzX2FzeW5jLlNMT1QsIEZVTkNUSU9OLCBXUkFQUEVSLCBET0MpCiAjZGVmaW5lIFNRU0xPVChOQU1FLCBTTE9ULCBGVU5DVElPTiwgV1JBUFBFUiwgRE9DKSBcCiAgICAgRVRTTE9UKE5BTUUsIGFzX3NlcXVlbmNlLlNMT1QsIEZVTkNUSU9OLCBXUkFQUEVSLCBET0MpCiAjZGVmaW5lIE1QU0xPVChOQU1FLCBTTE9ULCBGVU5DVElPTiwgV1JBUFBFUiwgRE9DKSBcCkBAIC02MzczLDYgKzY1MDAsMTMgQEAKICAgICAgICAgICAgIkNyZWF0ZSBhbmQgcmV0dXJuIG5ldyBvYmplY3QuICBTZWUgaGVscCh0eXBlKSBmb3IgYWNjdXJhdGUgc2lnbmF0dXJlLiIpLAogICAgIFRQU0xPVCgiX19kZWxfXyIsIHRwX2ZpbmFsaXplLCBzbG90X3RwX2ZpbmFsaXplLCAod3JhcHBlcmZ1bmMpd3JhcF9kZWwsICIiKSwKIAorICAgIEFNU0xPVCgiX19hd2FpdF9fIiwgYW1fYXdhaXQsIHNsb3RfYW1fYXdhaXQsIHdyYXBfdW5hcnlmdW5jLAorICAgICAgICAgICAiX19hd2FpdF9fKCRzZWxmLCAvKVxuLS1cblxuUmV0dXJuIGFuIGl0ZXJhdG9yIHRvIGJlIHVzZWQgaW4gYXdhaXQgZXhwcmVzc2lvbi4iKSwKKyAgICBBTVNMT1QoIl9fYWl0ZXJfXyIsIGFtX2FpdGVyLCBzbG90X2FtX2FpdGVyLCB3cmFwX3VuYXJ5ZnVuYywKKyAgICAgICAgICAgIl9fYWl0ZXJfXygkc2VsZiwgLylcbi0tXG5cblJldHVybiBhbiBhd2FpdGFibGUsIHRoYXQgcmVzb2x2ZXMgaW4gYXN5bmNocm9ub3VzIGl0ZXJhdG9yLiIpLAorICAgIEFNU0xPVCgiX19hbmV4dF9fIiwgYW1fYW5leHQsIHNsb3RfYW1fYW5leHQsIHdyYXBfdW5hcnlmdW5jLAorICAgICAgICAgICAiX19hbmV4dF9fKCRzZWxmLCAvKVxuLS1cblxuUmV0dXJuIGEgdmFsdWUgb3IgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uLiIpLAorCiAgICAgQklOU0xPVCgiX19hZGRfXyIsIG5iX2FkZCwgc2xvdF9uYl9hZGQsCiAgICAgICAgICAgICIrIiksCiAgICAgUkJJTlNMT1QoIl9fcmFkZF9fIiwgbmJfYWRkLCBzbG90X25iX2FkZCwKQEAgLTY0NTAsNiArNjU4NCwxMiBAQAogICAgICAgICAgICAiX19pbmRleF9fKCRzZWxmLCAvKVxuLS1cblxuIgogICAgICAgICAgICAiUmV0dXJuIHNlbGYgY29udmVydGVkIHRvIGFuIGludGVnZXIsIGlmIHNlbGYgaXMgc3VpdGFibGUgIgogICAgICAgICAgICAiZm9yIHVzZSBhcyBhbiBpbmRleCBpbnRvIGEgbGlzdC4iKSwKKyAgICBCSU5TTE9UKCJfX21hdG11bF9fIiwgbmJfbWF0cml4X211bHRpcGx5LCBzbG90X25iX21hdHJpeF9tdWx0aXBseSwKKyAgICAgICAgICAgICJAIiksCisgICAgUkJJTlNMT1QoIl9fcm1hdG11bF9fIiwgbmJfbWF0cml4X211bHRpcGx5LCBzbG90X25iX21hdHJpeF9tdWx0aXBseSwKKyAgICAgICAgICAgICAiQCIpLAorICAgIElCU0xPVCgiX19pbWF0bXVsX18iLCBuYl9pbnBsYWNlX21hdHJpeF9tdWx0aXBseSwgc2xvdF9uYl9pbnBsYWNlX21hdHJpeF9tdWx0aXBseSwKKyAgICAgICAgICAgd3JhcF9iaW5hcnlmdW5jLCAiQD0iKSwKICAgICBNUFNMT1QoIl9fbGVuX18iLCBtcF9sZW5ndGgsIHNsb3RfbXBfbGVuZ3RoLCB3cmFwX2xlbmZ1bmMsCiAgICAgICAgICAgICJfX2xlbl9fKCRzZWxmLCAvKVxuLS1cblxuUmV0dXJuIGxlbihzZWxmKS4iKSwKICAgICBNUFNMT1QoIl9fZ2V0aXRlbV9fIiwgbXBfc3Vic2NyaXB0LCBzbG90X21wX3N1YnNjcmlwdCwKQEAgLTY1MTksNiArNjY1OSwxMCBAQAogICAgICAgICBwdHIgPSAoY2hhciAqKXR5cGUtPnRwX2FzX251bWJlcjsKICAgICAgICAgb2Zmc2V0IC09IG9mZnNldG9mKFB5SGVhcFR5cGVPYmplY3QsIGFzX251bWJlcik7CiAgICAgfQorICAgIGVsc2UgaWYgKChzaXplX3Qpb2Zmc2V0ID49IG9mZnNldG9mKFB5SGVhcFR5cGVPYmplY3QsIGFzX2FzeW5jKSkgeworICAgICAgICBwdHIgPSAoY2hhciAqKXR5cGUtPnRwX2FzX2FzeW5jOworICAgICAgICBvZmZzZXQgLT0gb2Zmc2V0b2YoUHlIZWFwVHlwZU9iamVjdCwgYXNfYXN5bmMpOworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgcHRyID0gKGNoYXIgKil0eXBlOwogICAgIH0KQEAgLTY2NzAsMTUgKzY4MTQsMTUgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBzbG90ZGVmc19pbml0aWFsaXplZCA9IDA7CiAvKiBJbml0aWFsaXplIHRoZSBzbG90ZGVmcyB0YWJsZSBieSBhZGRpbmcgaW50ZXJuZWQgc3RyaW5nIG9iamVjdHMgZm9yIHRoZQotICAgbmFtZXMgYW5kIHNvcnRpbmcgdGhlIGVudHJpZXMuICovCisgICBuYW1lcy4gKi8KIHN0YXRpYyB2b2lkCiBpbml0X3Nsb3RkZWZzKHZvaWQpCiB7CiAgICAgc2xvdGRlZiAqcDsKLSAgICBzdGF0aWMgaW50IGluaXRpYWxpemVkID0gMDsKIAotICAgIGlmIChpbml0aWFsaXplZCkKKyAgICBpZiAoc2xvdGRlZnNfaW5pdGlhbGl6ZWQpCiAgICAgICAgIHJldHVybjsKICAgICBmb3IgKHAgPSBzbG90ZGVmczsgcC0+bmFtZTsgcCsrKSB7CiAgICAgICAgIC8qIFNsb3RzIG11c3QgYmUgb3JkZXJlZCBieSB0aGVpciBvZmZzZXQgaW4gdGhlIFB5SGVhcFR5cGVPYmplY3QuICovCkBAIC02Njg3LDcgKzY4MzEsMTcgQEAKICAgICAgICAgaWYgKCFwLT5uYW1lX3N0cm9iaikKICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIk91dCBvZiBtZW1vcnkgaW50ZXJuaW5nIHNsb3RkZWYgbmFtZXMiKTsKICAgICB9Ci0gICAgaW5pdGlhbGl6ZWQgPSAxOworICAgIHNsb3RkZWZzX2luaXRpYWxpemVkID0gMTsKK30KKworLyogVW5kbyBpbml0X3Nsb3RkZWZzLCByZWxlYXNpbmcgdGhlIGludGVybmVkIHN0cmluZ3MuICovCitzdGF0aWMgdm9pZCBjbGVhcl9zbG90ZGVmcyh2b2lkKQoreworICAgIHNsb3RkZWYgKnA7CisgICAgZm9yIChwID0gc2xvdGRlZnM7IHAtPm5hbWU7IHArKykgeworICAgICAgICBQeV9DTEVBUihwLT5uYW1lX3N0cm9iaik7CisgICAgfQorICAgIHNsb3RkZWZzX2luaXRpYWxpemVkID0gMDsKIH0KIAogLyogVXBkYXRlIHRoZSBzbG90cyBhZnRlciBhc3NpZ25tZW50IHRvIGEgY2xhc3MgKHR5cGUpIGF0dHJpYnV0ZS4gKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvdHlwZXNsb3RzLmluYyBiL09iamVjdHMvdHlwZXNsb3RzLmluYwppbmRleCBjYWExZTAzLi5kYzc1MGNjIDEwMDY0NAotLS0gYS9PYmplY3RzL3R5cGVzbG90cy5pbmMKKysrIGIvT2JqZWN0cy90eXBlc2xvdHMuaW5jCkBAIC03MywzICs3Myw5IEBACiBvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBodF90eXBlLnRwX21lbWJlcnMpLAogb2Zmc2V0b2YoUHlIZWFwVHlwZU9iamVjdCwgaHRfdHlwZS50cF9nZXRzZXQpLAogb2Zmc2V0b2YoUHlIZWFwVHlwZU9iamVjdCwgaHRfdHlwZS50cF9mcmVlKSwKK29mZnNldG9mKFB5SGVhcFR5cGVPYmplY3QsIGFzX251bWJlci5uYl9tYXRyaXhfbXVsdGlwbHkpLAorb2Zmc2V0b2YoUHlIZWFwVHlwZU9iamVjdCwgYXNfbnVtYmVyLm5iX2lucGxhY2VfbWF0cml4X211bHRpcGx5KSwKK29mZnNldG9mKFB5SGVhcFR5cGVPYmplY3QsIGFzX2FzeW5jLmFtX2F3YWl0KSwKK29mZnNldG9mKFB5SGVhcFR5cGVPYmplY3QsIGFzX2FzeW5jLmFtX2FpdGVyKSwKK29mZnNldG9mKFB5SGVhcFR5cGVPYmplY3QsIGFzX2FzeW5jLmFtX2FuZXh0KSwKK29mZnNldG9mKFB5SGVhcFR5cGVPYmplY3QsIGh0X3R5cGUudHBfZmluYWxpemUpLApkaWZmIC0tZ2l0IGEvT2JqZWN0cy90eXBlc2xvdHMucHkgYi9PYmplY3RzL3R5cGVzbG90cy5weQppbmRleCBiMjRjN2Y0Li5iYTM3YzQwIDEwMDc1NQotLS0gYS9PYmplY3RzL3R5cGVzbG90cy5weQorKysgYi9PYmplY3RzL3R5cGVzbG90cy5weQpAQCAtMTIsNiArMTIsOCBAQAogICAgIG1lbWJlciA9IG0uZ3JvdXAoMSkKICAgICBpZiBtZW1iZXIuc3RhcnRzd2l0aCgidHBfIik6CiAgICAgICAgIG1lbWJlciA9ICJodF90eXBlLiIrbWVtYmVyCisgICAgZWxpZiBtZW1iZXIuc3RhcnRzd2l0aCgiYW1fIik6CisgICAgICAgIG1lbWJlciA9ICJhc19hc3luYy4iK21lbWJlcgogICAgIGVsaWYgbWVtYmVyLnN0YXJ0c3dpdGgoIm5iXyIpOgogICAgICAgICBtZW1iZXIgPSAiYXNfbnVtYmVyLiIrbWVtYmVyCiAgICAgZWxpZiBtZW1iZXIuc3RhcnRzd2l0aCgibXBfIik6CmRpZmYgLS1naXQgYS9PYmplY3RzL3VuaWNvZGVjdHlwZS5jIGIvT2JqZWN0cy91bmljb2RlY3R5cGUuYwppbmRleCBlYTU0MGQ2Li5kOGM5NWM4IDEwMDY0NAotLS0gYS9PYmplY3RzL3VuaWNvZGVjdHlwZS5jCisrKyBiL09iamVjdHMvdW5pY29kZWN0eXBlLmMKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgRVhURU5ERURfQ0FTRV9NQVNLIDB4NDAwMAogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgLyogCisgICAgLyoKICAgICAgICBUaGVzZSBhcmUgZWl0aGVyIGRlbHRhcyB0byB0aGUgY2hhcmFjdGVyIG9yIG9mZnNldHMgaW4KICAgICAgICBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZS4KICAgICAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMgYi9PYmplY3RzL3VuaWNvZGVvYmplY3QuYwppbmRleCAxOTNkODk4Li5jOTU3OTI5IDEwMDY0NAotLS0gYS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYworKysgYi9PYmplY3RzL3VuaWNvZGVvYmplY3QuYwpAQCAtMjkwLDYgKzI5MCw4IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMAogfTsKIAorI2luY2x1ZGUgImNsaW5pYy91bmljb2Rlb2JqZWN0LmMuaCIKKwogLyogVGhlIG1heCB1bmljb2RlIHZhbHVlIGlzIGFsd2F5cyAweDEwRkZGRiB3aGlsZSB1c2luZyB0aGUgUEVQLTM5MyBBUEkuCiAgICBUaGlzIGZ1bmN0aW9uIGlzIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgb2xkIEFQSS4gKi8KIFB5X1VOSUNPREUKQEAgLTUxOSwxMCArNTIxLDYgQEAKICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQ29weSh1bmljb2RlKTsKIH0KIAotI2lmZGVmIEhBVkVfTUJDUwotc3RhdGljIE9TVkVSU0lPTklORk9FWCB3aW52ZXI7Ci0jZW5kaWYKLQogLyogLS0tIEJsb29tIEZpbHRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogLyogc3R1ZmYgdG8gaW1wbGVtZW50IHNpbXBsZSAiYmxvb20gZmlsdGVycyIgZm9yIFVuaWNvZGUgY2hhcmFjdGVycy4KQEAgLTY0NSw3ICs2NDMsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGZpeHVwKFB5T2JqZWN0ICpzZWxmLCBQeV9VQ1M0ICgqZml4ZmN0KShQeU9iamVjdCAqcykpOwogCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkgZmluZGNoYXIodm9pZCAqcywgaW50IGtpbmQsCitQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkgZmluZGNoYXIoY29uc3Qgdm9pZCAqcywgaW50IGtpbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBQeV9VQ1M0IGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7CkBAIC03MzIsNyArNzMwLDcgQEAKICAgICBfUHlfREVDX1JFRlRPVEFMOwogICAgIF9QeV9Gb3JnZXRSZWZlcmVuY2UodW5pY29kZSk7CiAKLSAgICBuZXdfdW5pY29kZSA9IChQeU9iamVjdCAqKVB5T2JqZWN0X1JFQUxMT0MoKGNoYXIgKil1bmljb2RlLCBuZXdfc2l6ZSk7CisgICAgbmV3X3VuaWNvZGUgPSAoUHlPYmplY3QgKilQeU9iamVjdF9SRUFMTE9DKHVuaWNvZGUsIG5ld19zaXplKTsKICAgICBpZiAobmV3X3VuaWNvZGUgPT0gTlVMTCkgewogICAgICAgICBfUHlfTmV3UmVmZXJlbmNlKHVuaWNvZGUpOwogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwpAQCAtODIxLDcgKzgxOSw3IEBACiAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSAhPSBOVUxMKTsKIAogICAgIC8qIGNoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93ICovCi0gICAgaWYgKGxlbmd0aCA+IFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKHdjaGFyX3QpIC0gMSkgeworICAgIGlmIChsZW5ndGggPiBQWV9TU0laRV9UX01BWCAvIChQeV9zc2l6ZV90KXNpemVvZih3Y2hhcl90KSAtIDEpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTg5Myw3ICs4OTEsNyBAQAogICAgIH0KIAogICAgIC8qIEVuc3VyZSB3ZSB3b24ndCBvdmVyZmxvdyB0aGUgc2l6ZS4gKi8KLSAgICBpZiAobGVuZ3RoID4gKChQWV9TU0laRV9UX01BWCAvIHNpemVvZihQeV9VTklDT0RFKSkgLSAxKSkgeworICAgIGlmIChsZW5ndGggPiAoKFBZX1NTSVpFX1RfTUFYIC8gKFB5X3NzaXplX3Qpc2l6ZW9mKFB5X1VOSUNPREUpKSAtIDEpKSB7CiAgICAgICAgIHJldHVybiAoUHlVbmljb2RlT2JqZWN0ICopUHlFcnJfTm9NZW1vcnkoKTsKICAgICB9CiAgICAgaWYgKGxlbmd0aCA8IDApIHsKQEAgLTE2NjcsOCArMTY2NSw3IEBACiAgICAgICAgIF9QeV9JTkNSRUZfVU5JQ09ERV9FTVBUWSgpOwogICAgICAgICBpZiAoIXVuaWNvZGVfZW1wdHkpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIFB5X0RFQ1JFRigqcF91bmljb2RlKTsKLSAgICAgICAgKnBfdW5pY29kZSA9IHVuaWNvZGVfZW1wdHk7CisgICAgICAgIFB5X1NFVFJFRigqcF91bmljb2RlLCB1bmljb2RlX2VtcHR5KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xNjc2LDggKzE2NzMsNyBAQAogICAgICAgICBQeU9iamVjdCAqY29weSA9IHJlc2l6ZV9jb3B5KHVuaWNvZGUsIGxlbmd0aCk7CiAgICAgICAgIGlmIChjb3B5ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIFB5X0RFQ1JFRigqcF91bmljb2RlKTsKLSAgICAgICAgKnBfdW5pY29kZSA9IGNvcHk7CisgICAgICAgIFB5X1NFVFJFRigqcF91bmljb2RlLCBjb3B5KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0yMzE4LDM1ICsyMzE0LDYgQEAKIAogI2VuZGlmIC8qIEhBVkVfV0NIQVJfSCAqLwogCi1zdGF0aWMgdm9pZAotbWFrZWZtdChjaGFyICpmbXQsIGludCBsb25nZmxhZywgaW50IGxvbmdsb25nZmxhZywgaW50IHNpemVfdGZsYWcsCi0gICAgICAgIGNoYXIgYykKLXsKLSAgICAqZm10KysgPSAnJSc7Ci0gICAgaWYgKGxvbmdmbGFnKQotICAgICAgICAqZm10KysgPSAnbCc7Ci0gICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKSB7Ci0gICAgICAgIC8qIGxvbmdsb25nZmxhZyBzaG91bGQgb25seSBldmVyIGJlIG5vbnplcm8gb24gbWFjaGluZXMgd2l0aAotICAgICAgICAgICBIQVZFX0xPTkdfTE9ORyBkZWZpbmVkICovCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgY2hhciAqZiA9IFBZX0ZPUk1BVF9MT05HX0xPTkc7Ci0gICAgICAgIHdoaWxlICgqZikKLSAgICAgICAgICAgICpmbXQrKyA9ICpmKys7Ci0jZWxzZQotICAgICAgICAvKiB3ZSBzaG91bGRuJ3QgZXZlciBnZXQgaGVyZSAqLwotICAgICAgICBhc3NlcnQoMCk7Ci0gICAgICAgICpmbXQrKyA9ICdsJzsKLSNlbmRpZgotICAgIH0KLSAgICBlbHNlIGlmIChzaXplX3RmbGFnKSB7Ci0gICAgICAgIGNoYXIgKmYgPSBQWV9GT1JNQVRfU0laRV9UOwotICAgICAgICB3aGlsZSAoKmYpCi0gICAgICAgICAgICAqZm10KysgPSAqZisrOwotICAgIH0KLSAgICAqZm10KysgPSBjOwotICAgICpmbXQgPSAnXDAnOwotfQotCiAvKiBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHJlcXVpcmVkIGZvciBvdXRwdXQgb2YgJWxsZCBvciAlcC4KICAgIFdlIG5lZWQgYXQgbW9zdCBjZWlsKGxvZzEwKDI1NikqU0laRU9GX0xPTkdfTE9ORykgZGlnaXRzLAogICAgcGx1cyAxIGZvciB0aGUgc2lnbi4gIDUzLzIyIGlzIGFuIHVwcGVyIGJvdW5kIGZvciBsb2cxMCgyNTYpLiAqLwpAQCAtMjUyMiw0OCArMjQ4OSw0MiBAQAogICAgIGNhc2UgJ3gnOgogICAgIHsKICAgICAgICAgLyogdXNlZCBieSBzcHJpbnRmICovCi0gICAgICAgIGNoYXIgZm10WzEwXTsgLyogc2hvdWxkIGJlIGVub3VnaCBmb3IgIiUwbGxkXDAiICovCiAgICAgICAgIGNoYXIgYnVmZmVyW01BWF9MT05HX0xPTkdfQ0hBUlNdOwogICAgICAgICBQeV9zc2l6ZV90IGFyZ2xlbjsKIAogICAgICAgICBpZiAoKmYgPT0gJ3UnKSB7Ci0gICAgICAgICAgICBtYWtlZm10KGZtdCwgbG9uZ2ZsYWcsIGxvbmdsb25nZmxhZywgc2l6ZV90ZmxhZywgKmYpOwotCiAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsIGZtdCwKKyAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiVsdSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCB1bnNpZ25lZCBsb25nKSk7CiAjaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgICAgIGVsc2UgaWYgKGxvbmdsb25nZmxhZykKLSAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgZm10LAorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX0xPTkdfTE9ORyAidSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpKTsKICNlbmRpZgogICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKLSAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgZm10LAorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX1NJWkVfVCAidSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCBzaXplX3QpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgZm10LAorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJXUiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgdW5zaWduZWQgaW50KSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoKmYgPT0gJ3gnKSB7Ci0gICAgICAgICAgICBtYWtlZm10KGZtdCwgMCwgMCwgMCwgJ3gnKTsKLSAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCBmbXQsIHZhX2FyZygqdmFyZ3MsIGludCkpOworICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIleCIsIHZhX2FyZygqdmFyZ3MsIGludCkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgbWFrZWZtdChmbXQsIGxvbmdmbGFnLCBsb25nbG9uZ2ZsYWcsIHNpemVfdGZsYWcsICpmKTsKLQogICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQotICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCBmbXQsCisgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlbGkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgbG9uZykpOwogI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsIGZtdCwKKyAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9MT05HX0xPTkcgImkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgUFlfTE9OR19MT05HKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCi0gICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsIGZtdCwKKyAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgUHlfc3NpemVfdCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCBmbXQsCisgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCBpbnQpKTsKICAgICAgICAgfQogICAgICAgICBhc3NlcnQobGVuID49IDApOwpAQCAtMzI0Niw3ICszMjA3LDcgQEAKICAgICB3bGVuMiA9IHdjc2xlbih3c3RyKTsKICAgICBpZiAod2xlbjIgIT0gd2xlbikgewogICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTMyNTQsNyArMzIxNSw3IEBACiAgICAgICAgIC8qICJzdXJyb2dhdGVlc2NhcGUiIGVycm9yIGhhbmRsZXIgKi8KICAgICAgICAgY2hhciAqc3RyOwogCi0gICAgICAgIHN0ciA9IF9QeV93Y2hhcjJjaGFyKHdzdHIsICZlcnJvcl9wb3MpOworICAgICAgICBzdHIgPSBQeV9FbmNvZGVMb2NhbGUod3N0ciwgJmVycm9yX3Bvcyk7CiAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKGVycm9yX3BvcyA9PSAoc2l6ZV90KS0xKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTMzMDcsNyArMzI2OCw3IEBACiAKICAgICBpZiAoZXJybXNnICE9IE5VTEwpIHsKICAgICAgICAgc2l6ZV90IGVycmxlbjsKLSAgICAgICAgd3N0ciA9IF9QeV9jaGFyMndjaGFyKGVycm1zZywgJmVycmxlbik7CisgICAgICAgIHdzdHIgPSBQeV9EZWNvZGVMb2NhbGUoZXJybXNnLCAmZXJybGVuKTsKICAgICAgICAgaWYgKHdzdHIgIT0gTlVMTCkgewogICAgICAgICAgICAgcmVhc29uID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3c3RyLCBlcnJsZW4pOwogICAgICAgICAgICAgUHlNZW1fUmF3RnJlZSh3c3RyKTsKQEAgLTM0ODIsNyArMzQ0Myw3IEBACiAgICAgbWVtc2V0KCZtYnMsIDAsIHNpemVvZiBtYnMpOwogICAgIHdoaWxlIChsZW4pCiAgICAgewotICAgICAgICBjb252ZXJ0ZWQgPSBtYnJ0b3djKCZjaCwgKGNoYXIqKXN0ciwgbGVuLCAmbWJzKTsKKyAgICAgICAgY29udmVydGVkID0gbWJydG93YygmY2gsIHN0ciwgbGVuLCAmbWJzKTsKICAgICAgICAgaWYgKGNvbnZlcnRlZCA9PSAwKQogICAgICAgICAgICAgLyogUmVhY2hlZCBlbmQgb2Ygc3RyaW5nICovCiAgICAgICAgICAgICBicmVhazsKQEAgLTM1MTMsMTkgKzM0NzQsMjAgQEAKICAgICBpbnQgc3Vycm9nYXRlZXNjYXBlOwogICAgIHNpemVfdCBlcnJvcl9wb3M7CiAgICAgY2hhciAqZXJybXNnOwotICAgIFB5T2JqZWN0ICpyZWFzb24sICpleGM7CisgICAgUHlPYmplY3QgKnJlYXNvbiA9IE5VTEw7ICAgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCisgICAgUHlPYmplY3QgKmV4YzsKIAogICAgIGlmIChsb2NhbGVfZXJyb3JfaGFuZGxlcihlcnJvcnMsICZzdXJyb2dhdGVlc2NhcGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoc3RyW2xlbl0gIT0gJ1wwJyB8fCBsZW4gIT0gc3RybGVuKHN0cikpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CisgICAgaWYgKHN0cltsZW5dICE9ICdcMCcgfHwgKHNpemVfdClsZW4gIT0gc3RybGVuKHN0cikpICB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBieXRlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIGlmIChzdXJyb2dhdGVlc2NhcGUpIHsKICAgICAgICAgLyogInN1cnJvZ2F0ZWVzY2FwZSIgZXJyb3IgaGFuZGxlciAqLwotICAgICAgICB3c3RyID0gX1B5X2NoYXIyd2NoYXIoc3RyLCAmd2xlbik7CisgICAgICAgIHdzdHIgPSBQeV9EZWNvZGVMb2NhbGUoc3RyLCAmd2xlbik7CiAgICAgICAgIGlmICh3c3RyID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmICh3bGVuID09IChzaXplX3QpLTEpCiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTM1NzgsNyArMzU0MCw3IEBACiAgICAgZXJyb3JfcG9zID0gbWJzdG93Y3NfZXJyb3Jwb3Moc3RyLCBsZW4pOwogICAgIGlmIChlcnJtc2cgIT0gTlVMTCkgewogICAgICAgICBzaXplX3QgZXJybGVuOwotICAgICAgICB3c3RyID0gX1B5X2NoYXIyd2NoYXIoZXJybXNnLCAmZXJybGVuKTsKKyAgICAgICAgd3N0ciA9IFB5X0RlY29kZUxvY2FsZShlcnJtc2csICZlcnJsZW4pOwogICAgICAgICBpZiAod3N0ciAhPSBOVUxMKSB7CiAgICAgICAgICAgICByZWFzb24gPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdzdHIsIGVycmxlbik7CiAgICAgICAgICAgICBQeU1lbV9SYXdGcmVlKHdzdHIpOwpAQCAtMzY0OCwyMSArMzYxMCw2IEBACiAKIAogaW50Ci1fUHlVbmljb2RlX0hhc05VTENoYXJzKFB5T2JqZWN0KiBzdHIpCi17Ci0gICAgUHlfc3NpemVfdCBwb3M7Ci0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBwb3MgPSBmaW5kY2hhcihQeVVuaWNvZGVfREFUQShzdHIpLCBQeVVuaWNvZGVfS0lORChzdHIpLAotICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0ciksICdcMCcsIDEpOwotICAgIGlmIChwb3MgPT0gLTEpCi0gICAgICAgIHJldHVybiAwOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIDE7Ci19Ci0KLWludAogUHlVbmljb2RlX0ZTQ29udmVydGVyKFB5T2JqZWN0KiBhcmcsIHZvaWQqIGFkZHIpCiB7CiAgICAgUHlPYmplY3QgKm91dHB1dCA9IE5VTEw7CkBAIC0zNjcwLDYgKzM2MTcsNyBAQAogICAgIHZvaWQgKmRhdGE7CiAgICAgaWYgKGFyZyA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRigqKFB5T2JqZWN0KiopYWRkcik7CisgICAgICAgICooUHlPYmplY3QqKilhZGRyID0gTlVMTDsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogICAgIGlmIChQeUJ5dGVzX0NoZWNrKGFyZykpIHsKQEAgLTM2OTIsOCArMzY0MCw4IEBACiAgICAgfQogICAgIHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKG91dHB1dCk7CiAgICAgZGF0YSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG91dHB1dCk7Ci0gICAgaWYgKHNpemUgIT0gc3RybGVuKGRhdGEpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbWJlZGRlZCBOVUwgY2hhcmFjdGVyIik7CisgICAgaWYgKChzaXplX3Qpc2l6ZSAhPSBzdHJsZW4oZGF0YSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGJ5dGUiKTsKICAgICAgICAgUHlfREVDUkVGKG91dHB1dCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTM3MzcsNyArMzY4NSw3IEBACiAgICAgfQogICAgIGlmIChmaW5kY2hhcihQeVVuaWNvZGVfREFUQShvdXRwdXQpLCBQeVVuaWNvZGVfS0lORChvdXRwdXQpLAogICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChvdXRwdXQpLCAwLCAxKSA+PSAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbWJlZGRlZCBOVUwgY2hhcmFjdGVyIik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIiKTsKICAgICAgICAgUHlfREVDUkVGKG91dHB1dCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTQ4NDQsNyArNDc5Miw3IEBACiAKICAgICAvKiBOb3RlOiBzaXplIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcgVW5pY29kZQogICAgICAgIGNoYXJhY3RlciBjb3VudCAqLwotICAgIGlmIChQWV9TU0laRV9UX01BWCAvIHNpemVvZih3Y2hhcl90KSA8IChzaXplICsgMSkpCisgICAgaWYgKFBZX1NTSVpFX1RfTUFYIC8gKFB5X3NzaXplX3Qpc2l6ZW9mKHdjaGFyX3QpIDwgKHNpemUgKyAxKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgdW5pY29kZSA9IFB5TWVtX1Jhd01hbGxvYygoc2l6ZSArIDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICBpZiAoIXVuaWNvZGUpCkBAIC01MTA5LDMyICs1MDU3LDIyIEBACiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ5dGVvcmRlcikKIHsKLSAgICBpbnQga2luZDsKLSAgICB2b2lkICpkYXRhOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICBjb25zdCB2b2lkICpkYXRhOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIFB5T2JqZWN0ICp2OwotICAgIHVuc2lnbmVkIGNoYXIgKnA7Ci0gICAgUHlfc3NpemVfdCBuc2l6ZSwgaTsKLSAgICAvKiBPZmZzZXRzIGZyb20gcCBmb3Igc3RvcmluZyBieXRlIHBhaXJzIGluIHRoZSByaWdodCBvcmRlci4gKi8KKyAgICBQWV9VSU5UMzJfVCAqb3V0OwogI2lmIFBZX0xJVFRMRV9FTkRJQU4KLSAgICBpbnQgaW9yZGVyW10gPSB7MCwgMSwgMiwgM307CisgICAgaW50IG5hdGl2ZV9vcmRlcmluZyA9IGJ5dGVvcmRlciA8PSAwOwogI2Vsc2UKLSAgICBpbnQgaW9yZGVyW10gPSB7MywgMiwgMSwgMH07CisgICAgaW50IG5hdGl2ZV9vcmRlcmluZyA9IGJ5dGVvcmRlciA+PSAwOwogI2VuZGlmCiAgICAgY29uc3QgY2hhciAqZW5jb2Rpbmc7CisgICAgUHlfc3NpemVfdCBuc2l6ZSwgcG9zOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXAgPSBOVUxMOwogCi0jZGVmaW5lIFNUT1JFQ0hBUihDSCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHBbaW9yZGVyWzNdXSA9ICgoQ0gpID4+IDI0KSAmIDB4ZmY7ICAgICBcCi0gICAgICAgIHBbaW9yZGVyWzJdXSA9ICgoQ0gpID4+IDE2KSAmIDB4ZmY7ICAgICBcCi0gICAgICAgIHBbaW9yZGVyWzFdXSA9ICgoQ0gpID4+IDgpICYgMHhmZjsgICAgICBcCi0gICAgICAgIHBbaW9yZGVyWzBdXSA9IChDSCkgJiAweGZmOyAgICAgICAgICAgICBcCi0gICAgICAgIHAgKz0gNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSgwKQotCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc3RyKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTUxNDUsNTkgKzUwODMsNTMgQEAKICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyKTsKICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOwogCi0gICAgbnNpemUgPSBsZW4gKyAoYnl0ZW9yZGVyID09IDApOwotICAgIGlmIChuc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gNCkKKyAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyA0IC0gKGJ5dGVvcmRlciA9PSAwKSkKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgbnNpemUgPSBsZW4gKyAoYnl0ZW9yZGVyID09IDApOwogICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG5zaXplICogNCk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBwID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyh2KTsKKyAgICAvKiBvdXRwdXQgYnVmZmVyIGlzIDQtYnl0ZXMgYWxpZ25lZCAqLworICAgIGFzc2VydChfUHlfSVNfQUxJR05FRChQeUJ5dGVzX0FTX1NUUklORyh2KSwgNCkpOworICAgIG91dCA9IChQWV9VSU5UMzJfVCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwogICAgIGlmIChieXRlb3JkZXIgPT0gMCkKLSAgICAgICAgU1RPUkVDSEFSKDB4RkVGRik7CisgICAgICAgICpvdXQrKyA9IDB4RkVGRjsKICAgICBpZiAobGVuID09IDApCi0gICAgICAgIHJldHVybiB2OworICAgICAgICBnb3RvIGRvbmU7CiAKLSAgICBpZiAoYnl0ZW9yZGVyID09IC0xKSB7Ci0gICAgICAgIC8qIGZvcmNlIExFICovCi0gICAgICAgIGlvcmRlclswXSA9IDA7Ci0gICAgICAgIGlvcmRlclsxXSA9IDE7Ci0gICAgICAgIGlvcmRlclsyXSA9IDI7Ci0gICAgICAgIGlvcmRlclszXSA9IDM7CisgICAgaWYgKGJ5dGVvcmRlciA9PSAtMSkKICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTMyLWxlIjsKLSAgICB9Ci0gICAgZWxzZSBpZiAoYnl0ZW9yZGVyID09IDEpIHsKLSAgICAgICAgLyogZm9yY2UgQkUgKi8KLSAgICAgICAgaW9yZGVyWzBdID0gMzsKLSAgICAgICAgaW9yZGVyWzFdID0gMjsKLSAgICAgICAgaW9yZGVyWzJdID0gMTsKLSAgICAgICAgaW9yZGVyWzNdID0gMDsKKyAgICBlbHNlIGlmIChieXRlb3JkZXIgPT0gMSkKICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTMyLWJlIjsKLSAgICB9CiAgICAgZWxzZQogICAgICAgICBlbmNvZGluZyA9ICJ1dGYtMzIiOwogCiAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICAgICAgICAgU1RPUkVDSEFSKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKTsKLSAgICAgICAgcmV0dXJuIHY7CisgICAgICAgIHVjczFsaWJfdXRmMzJfZW5jb2RlKChjb25zdCBQeV9VQ1MxICopZGF0YSwgbGVuLCAmb3V0LCBuYXRpdmVfb3JkZXJpbmcpOworICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQogCi0gICAgZm9yIChpID0gMDsgaSA8IGxlbjspIHsKKyAgICBwb3MgPSAwOworICAgIHdoaWxlIChwb3MgPCBsZW4pIHsKICAgICAgICAgUHlfc3NpemVfdCByZXBzaXplLCBtb3JldW5pdHM7Ci0gICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKLSAgICAgICAgaSsrOwotICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOwotICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNfU1VSUk9HQVRFKGNoKSkgewotICAgICAgICAgICAgU1RPUkVDSEFSKGNoKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgICAgICBwb3MgKz0gdWNzMmxpYl91dGYzMl9lbmNvZGUoKGNvbnN0IFB5X1VDUzIgKilkYXRhICsgcG9zLCBsZW4gLSBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dCwgbmF0aXZlX29yZGVyaW5nKTsKICAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgICAgIHBvcyArPSB1Y3M0bGliX3V0ZjMyX2VuY29kZSgoY29uc3QgUHlfVUNTNCAqKWRhdGEgKyBwb3MsIGxlbiAtIHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0LCBuYXRpdmVfb3JkZXJpbmcpOworICAgICAgICB9CisgICAgICAgIGlmIChwb3MgPT0gbGVuKQorICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgcmVwID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgIGVuY29kaW5nLCAic3Vycm9nYXRlcyBub3QgYWxsb3dlZCIsCi0gICAgICAgICAgICAgICAgc3RyLCAmZXhjLCBpLTEsIGksICZpKTsKLQorICAgICAgICAgICAgICAgIHN0ciwgJmV4YywgcG9zLCBwb3MgKyAxLCAmcG9zKTsKICAgICAgICAgaWYgKCFyZXApCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCkBAIC01MjA1LDcgKzUxMzcsNyBAQAogICAgICAgICAgICAgcmVwc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVwKTsKICAgICAgICAgICAgIGlmIChyZXBzaXplICYgMykgewogICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIsIGkgLSAxLCBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyLCBwb3MgLSAxLCBwb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlcyBub3QgYWxsb3dlZCIpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CkBAIC01MjE4LDcgKzUxNTAsNyBAQAogICAgICAgICAgICAgbW9yZXVuaXRzID0gcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcCk7CiAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9JU19BU0NJSShyZXApKSB7CiAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciwgaSAtIDEsIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIsIHBvcyAtIDEsIHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVzIG5vdCBhbGxvd2VkIik7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KQEAgLTUyMjYsNyArNTE1OCw3IEBACiAKICAgICAgICAgLyogZm91ciBieXRlcyBhcmUgcmVzZXJ2ZWQgZm9yIGVhY2ggc3Vycm9nYXRlICovCiAgICAgICAgIGlmIChtb3JldW5pdHMgPiAxKSB7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IG91dHBvcyA9IHAgLSAodW5zaWduZWQgY2hhciopIFB5Qnl0ZXNfQVNfU1RSSU5HKHYpOworICAgICAgICAgICAgUHlfc3NpemVfdCBvdXRwb3MgPSBvdXQgLSAoUFlfVUlOVDMyX1QqKSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbW9yZWJ5dGVzID0gNCAqIChtb3JldW5pdHMgLSAxKTsKICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKHYpID4gUFlfU1NJWkVfVF9NQVggLSBtb3JlYnl0ZXMpIHsKICAgICAgICAgICAgICAgICAvKiBpbnRlZ2VyIG92ZXJmbG93ICovCkBAIC01MjM1LDIwICs1MTY3LDE2IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZ2LCBQeUJ5dGVzX0dFVF9TSVpFKHYpICsgbW9yZWJ5dGVzKSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIHAgPSAodW5zaWduZWQgY2hhciopIFB5Qnl0ZXNfQVNfU1RSSU5HKHYpICsgb3V0cG9zOworICAgICAgICAgICAgb3V0ID0gKFBZX1VJTlQzMl9UKikgUHlCeXRlc19BU19TVFJJTkcodikgKyBvdXRwb3M7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKSB7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocCwgUHlCeXRlc19BU19TVFJJTkcocmVwKSwgcmVwc2l6ZSk7Ci0gICAgICAgICAgICBwICs9IHJlcHNpemU7CisgICAgICAgICAgICBQeV9NRU1DUFkob3V0LCBQeUJ5dGVzX0FTX1NUUklORyhyZXApLCByZXBzaXplKTsKKyAgICAgICAgICAgIG91dCArPSBtb3JldW5pdHM7CiAgICAgICAgIH0gZWxzZSAvKiByZXAgaXMgdW5pY29kZSAqLyB7Ci0gICAgICAgICAgICBjb25zdCBQeV9VQ1MxICpyZXBkYXRhOwogICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHJlcCkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOwotICAgICAgICAgICAgcmVwZGF0YSA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJlcCk7Ci0gICAgICAgICAgICB3aGlsZSAocmVwc2l6ZS0tKSB7Ci0gICAgICAgICAgICAgICAgUHlfVUNTNCBjaCA9ICpyZXBkYXRhKys7Ci0gICAgICAgICAgICAgICAgU1RPUkVDSEFSKGNoKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHVjczFsaWJfdXRmMzJfZW5jb2RlKFB5VW5pY29kZV8xQllURV9EQVRBKHJlcCksIHJlcHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0LCBuYXRpdmVfb3JkZXJpbmcpOwogICAgICAgICB9CiAKICAgICAgICAgUHlfQ0xFQVIocmVwKTsKQEAgLTUyNTcsMTEgKzUxODUsMTIgQEAKICAgICAvKiBDdXQgYmFjayB0byBzaXplIGFjdHVhbGx5IG5lZWRlZC4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yLCBmb3IgZXhhbXBsZSwKICAgICAgICBlbmNvZGluZyBvZiBhIHN0cmluZyBjb250YWluaW5nIGlzb2xhdGVkIHN1cnJvZ2F0ZXMgYW5kIHRoZSAnaWdub3JlJwogICAgICAgIGhhbmRsZXIgaXMgdXNlZC4gKi8KLSAgICBuc2l6ZSA9IHAgLSAodW5zaWduZWQgY2hhciopIFB5Qnl0ZXNfQVNfU1RSSU5HKHYpOworICAgIG5zaXplID0gKHVuc2lnbmVkIGNoYXIqKSBvdXQgLSAodW5zaWduZWQgY2hhciopIFB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwogICAgIGlmIChuc2l6ZSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHYpKQogICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZ2LCBuc2l6ZSk7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKKyAgZG9uZToKICAgICByZXR1cm4gdjsKICAgZXJyb3I6CiAgICAgUHlfWERFQ1JFRihyZXApOwpAQCAtNTI2OSw3ICs1MTk4LDYgQEAKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgUHlfWERFQ1JFRih2KTsKICAgICByZXR1cm4gTlVMTDsKLSN1bmRlZiBTVE9SRUNIQVIKIH0KIAogUHlPYmplY3QgKgpAQCAtNjg1NiwyOCArNjc4NCw2IEBACiAgICAgcmV0dXJuIFB5Qnl0ZXNfQVNfU1RSSU5HKCpvYmopOwogfQogCi1zdGF0aWMgaW50Ci1pc19kYmNzX2xlYWRfYnl0ZShVSU5UIGNvZGVfcGFnZSwgY29uc3QgY2hhciAqcywgaW50IG9mZnNldCkKLXsKLSAgICBjb25zdCBjaGFyICpjdXJyID0gcyArIG9mZnNldDsKLSAgICBjb25zdCBjaGFyICpwcmV2OwotCi0gICAgaWYgKCFJc0RCQ1NMZWFkQnl0ZUV4KGNvZGVfcGFnZSwgKmN1cnIpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHByZXYgPSBDaGFyUHJldkV4QShjb2RlX3BhZ2UsIHMsIGN1cnIsIDApOwotICAgIGlmIChwcmV2ID09IGN1cnIpCi0gICAgICAgIHJldHVybiAxOwotICAgIC8qIEZJWE1FOiBUaGlzIGNvZGUgaXMgbGltaXRlZCB0byAidHJ1ZSIgZG91YmxlLWJ5dGUgZW5jb2RpbmdzLAotICAgICAgIGFzIGl0IGFzc3VtZXMgYW4gaW5jb21wbGV0ZSBjaGFyYWN0ZXIgY29uc2lzdHMgb2YgYSBzaW5nbGUKLSAgICAgICBieXRlLiAqLwotICAgIGlmIChjdXJyIC0gcHJldiA9PSAyKQotICAgICAgICByZXR1cm4gMTsKLSAgICBpZiAoIUlzREJDU0xlYWRCeXRlRXgoY29kZV9wYWdlLCAqcHJldikpCi0gICAgICAgIHJldHVybiAxOwotICAgIHJldHVybiAwOwotfQotCiBzdGF0aWMgRFdPUkQKIGRlY29kZV9jb2RlX3BhZ2VfZmxhZ3MoVUlOVCBjb2RlX3BhZ2UpCiB7CkBAIC02OTUyLDcgKzY4NTgsNyBAQAogZGVjb2RlX2NvZGVfcGFnZV9lcnJvcnMoVUlOVCBjb2RlX3BhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnYsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICppbiwgY29uc3QgaW50IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCkKIHsKICAgICBjb25zdCBjaGFyICpzdGFydGluID0gaW47CiAgICAgY29uc3QgY2hhciAqZW5kaW4gPSBpbiArIHNpemU7CkBAIC02OTc5LDcgKzY4ODUsNyBAQAogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAoZXJyb3JzID09IE5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKKyAgICBpZiAoKGVycm9ycyA9PSBOVUxMIHx8IHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSA9PSAwKSAmJiBmaW5hbCkgewogICAgICAgICAvKiBUaGUgbGFzdCBlcnJvciB3YXMgRVJST1JfTk9fVU5JQ09ERV9UUkFOU0xBVElPTiwgdGhlbiB3ZSByYWlzZSBhCiAgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvci4gKi8KICAgICAgICAgbWFrZV9kZWNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCBpbiwgc2l6ZSwgMCwgMCwgcmVhc29uKTsKQEAgLTcwNDIsNiArNjk0OCwxMCBAQAogICAgICAgICBpZiAob3V0c2l6ZSA8PSAwKSB7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3MsIGVuZGlucG9zLCBvdXRwb3M7CiAKKyAgICAgICAgICAgIC8qIGxhc3QgY2hhcmFjdGVyIGluIHBhcnRpYWwgZGVjb2RlPyAqLworICAgICAgICAgICAgaWYgKGluICsgaW5zaXplID49IGVuZGluICYmICFmaW5hbCkKKyAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgc3RhcnRpbnBvcyA9IGluIC0gc3RhcnRpbjsKICAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIDE7CiAgICAgICAgICAgICBvdXRwb3MgPSBvdXQgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqdik7CkBAIC03MDcwLDcgKzY5ODAsOCBAQAogICAgIGFzc2VydChvdXRzaXplIDw9IFB5VW5pY29kZV9XU1RSX0xFTkdUSCgqdikpOwogICAgIGlmICh1bmljb2RlX3Jlc2l6ZSh2LCBvdXRzaXplKSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgcmV0ID0gc2l6ZTsKKyAgICAvKiAoaW4gLSBzdGFydGluKSA8PSBzaXplIGFuZCBzaXplIGlzIGFuIGludCAqLworICAgIHJldCA9IFB5X1NBRkVfRE9XTkNBU1QoaW4gLSBzdGFydGluLCBQeV9zc2l6ZV90LCBpbnQpOwogCiBlcnJvcjoKICAgICBQeV9YREVDUkVGKGVuY29kaW5nX29iaik7CkBAIC03MTExLDI0ICs3MDIyLDE5IEBACiAgICAgICAgICAgICBkb25lID0gMTsKICAgICAgICAgfQogCi0gICAgICAgIC8qIFNraXAgdHJhaWxpbmcgbGVhZC1ieXRlIHVubGVzcyAnZmluYWwnIGlzIHNldCAqLwotICAgICAgICBpZiAoIWZpbmFsICYmIGlzX2RiY3NfbGVhZF9ieXRlKGNvZGVfcGFnZSwgcywgY2h1bmtfc2l6ZSAtIDEpKQotICAgICAgICAgICAgLS1jaHVua19zaXplOwotCiAgICAgICAgIGlmIChjaHVua19zaXplID09IDAgJiYgZG9uZSkgewogICAgICAgICAgICAgaWYgKHYgIT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOwogICAgICAgICB9CiAKLQogICAgICAgICBjb252ZXJ0ZWQgPSBkZWNvZGVfY29kZV9wYWdlX3N0cmljdChjb2RlX3BhZ2UsICZ2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjaHVua19zaXplKTsKICAgICAgICAgaWYgKGNvbnZlcnRlZCA9PSAtMikKICAgICAgICAgICAgIGNvbnZlcnRlZCA9IGRlY29kZV9jb2RlX3BhZ2VfZXJyb3JzKGNvZGVfcGFnZSwgJnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjaHVua19zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKLSAgICAgICAgYXNzZXJ0KGNvbnZlcnRlZCAhPSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgZmluYWwpOworICAgICAgICBhc3NlcnQoY29udmVydGVkICE9IDAgfHwgZG9uZSk7CiAKICAgICAgICAgaWYgKGNvbnZlcnRlZCA8IDApIHsKICAgICAgICAgICAgIFB5X1hERUNSRUYodik7CkBAIC03MTc2LDEzICs3MDgyLDcgQEAKIGVuY29kZV9jb2RlX3BhZ2VfZmxhZ3MoVUlOVCBjb2RlX3BhZ2UsIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBpZiAoY29kZV9wYWdlID09IENQX1VURjgpIHsKLSAgICAgICAgaWYgKHdpbnZlci5kd01ham9yVmVyc2lvbiA+PSA2KQotICAgICAgICAgICAgLyogQ1BfVVRGOCBzdXBwb3J0cyBXQ19FUlJfSU5WQUxJRF9DSEFSUyBvbiBXaW5kb3dzIFZpc3RhCi0gICAgICAgICAgICAgICBhbmQgbGF0ZXIgKi8KLSAgICAgICAgICAgIHJldHVybiBXQ19FUlJfSU5WQUxJRF9DSEFSUzsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgLyogQ1BfVVRGOCBvbmx5IHN1cHBvcnRzIGZsYWdzPTAgb24gV2luZG93cyBvbGRlciB0aGFuIFZpc3RhICovCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFdDX0VSUl9JTlZBTElEX0NIQVJTOwogICAgIH0KICAgICBlbHNlIGlmIChjb2RlX3BhZ2UgPT0gQ1BfVVRGNykgewogICAgICAgICAvKiBDUF9VVEY3IG9ubHkgc3VwcG9ydHMgZmxhZ3M9MCAqLwpAQCAtNzQ5Miw2ICs3MzkyLDExIEBACiAgICAgUHlfc3NpemVfdCBvZmZzZXQ7CiAgICAgaW50IGNodW5rX2xlbiwgcmV0LCBkb25lOwogCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CkBAIC03NTY1LDEwICs3NDcwLDYgQEAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9Bc01CQ1NTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCiB7Ci0gICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKLSAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCB1bmljb2RlLCBOVUxMKTsKIH0KIApAQCAtODUzNSwxMCArODQzNiwxMCBAQAogICAgIH0KICAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2soeCkpIHsKICAgICAgICAgbG9uZyB2YWx1ZSA9IFB5TG9uZ19BU19MT05HKHgpOwotICAgICAgICBsb25nIG1heCA9IFB5VW5pY29kZV9HZXRNYXgoKTsKLSAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IG1heCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhcmFjdGVyIG1hcHBpbmcgbXVzdCBiZSBpbiByYW5nZSgweCV4KSIsIG1heCsxKTsKKyAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IE1BWF9VTklDT0RFKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhcmFjdGVyIG1hcHBpbmcgbXVzdCBiZSBpbiByYW5nZSgweCV4KSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgTUFYX1VOSUNPREUrMSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoeCk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KQEAgLTg1NTcsNzYgKzg0NTgsMTY4IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiB9Ci0vKiBlbnN1cmUgdGhhdCAqb3V0b2JqIGlzIGF0IGxlYXN0IHJlcXVpcmVkc2l6ZSBjaGFyYWN0ZXJzIGxvbmcsCi0gICBpZiBub3QgcmVhbGxvY2F0ZSBhbmQgYWRqdXN0IHZhcmlvdXMgc3RhdGUgdmFyaWFibGVzLgotICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IgKi8KKworLyogbG9va3VwIHRoZSBjaGFyYWN0ZXIsIHdyaXRlIHRoZSByZXN1bHQgaW50byB0aGUgd3JpdGVyLgorICAgUmV0dXJuIDEgaWYgdGhlIHJlc3VsdCB3YXMgd3JpdHRlbiBpbnRvIHRoZSB3cml0ZXIsIHJldHVybiAwIGlmIHRoZSBtYXBwaW5nCisgICB3YXMgdW5kZWZpbmVkLCByYWlzZSBhbiBleGNlcHRpb24gcmV0dXJuIC0xIG9uIGVycm9yLiAqLwogc3RhdGljIGludAotY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2UoUHlfVUNTNCAqKm91dG9iaiwgUHlfc3NpemVfdCAqcHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCByZXF1aXJlZHNpemUpCitjaGFybWFwdHJhbnNsYXRlX291dHB1dChQeV9VQ1M0IGNoLCBQeU9iamVjdCAqbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKIHsKLSAgICBQeV9zc2l6ZV90IG9sZHNpemUgPSAqcHNpemU7Ci0gICAgUHlfVUNTNCAqbmV3X291dG9iajsKLSAgICBpZiAocmVxdWlyZWRzaXplID4gb2xkc2l6ZSkgewotICAgICAgICAvKiBleHBvbmVudGlhbGx5IG92ZXJhbGxvY2F0ZSB0byBtaW5pbWl6ZSByZWFsbG9jYXRpb25zICovCi0gICAgICAgIGlmIChyZXF1aXJlZHNpemUgPCAyICogb2xkc2l6ZSkKLSAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIgKiBvbGRzaXplOwotICAgICAgICBuZXdfb3V0b2JqID0gUHlNZW1fUmVhbGxvYygqb3V0b2JqLCByZXF1aXJlZHNpemUgKiBzaXplb2YoUHlfVUNTNCkpOwotICAgICAgICBpZiAobmV3X291dG9iaiA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAqb3V0b2JqID0gbmV3X291dG9iajsKLSAgICAgICAgKnBzaXplID0gcmVxdWlyZWRzaXplOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLS8qIGxvb2t1cCB0aGUgY2hhcmFjdGVyLCBwdXQgdGhlIHJlc3VsdCBpbiB0aGUgb3V0cHV0IHN0cmluZyBhbmQgYWRqdXN0Ci0gICB2YXJpb3VzIHN0YXRlIHZhcmlhYmxlcy4gUmV0dXJuIGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IHRoYXQKLSAgIHdhcyBwdXQgaW4gdGhlIG91dHB1dCBidWZmZXIgaW4gKnJlc3VsdCwgb3IgUHlfTm9uZSwgaWYgdGhlIG1hcHBpbmcgd2FzCi0gICB1bmRlZmluZWQgKGluIHdoaWNoIGNhc2Ugbm8gY2hhcmFjdGVyIHdhcyB3cml0dGVuKS4KLSAgIFRoZSBjYWxsZWQgbXVzdCBkZWNyZWYgcmVzdWx0LgotICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IuICovCi1zdGF0aWMgaW50Ci1jaGFybWFwdHJhbnNsYXRlX291dHB1dChQeU9iamVjdCAqaW5wdXQsIFB5X3NzaXplX3QgaXBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLCBQeV9VQ1M0ICoqb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqb3NpemUsIFB5X3NzaXplX3QgKm9wb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnJlcykKLXsKLSAgICBQeV9VQ1M0IGN1cmlucCA9IFB5VW5pY29kZV9SRUFEX0NIQVIoaW5wdXQsIGlwb3MpOwotICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX2xvb2t1cChjdXJpbnAsIG1hcHBpbmcsIHJlcykpCisgICAgUHlPYmplY3QgKml0ZW07CisKKyAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoY2gsIG1hcHBpbmcsICZpdGVtKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmICgqcmVzPT1OVUxMKSB7CisKKyAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CiAgICAgICAgIC8qIG5vdCBmb3VuZCA9PiBkZWZhdWx0IHRvIDE6MSBtYXBwaW5nICovCi0gICAgICAgICgqb3V0cHV0KVsoKm9wb3MpKytdID0gY3VyaW5wOwotICAgIH0KLSAgICBlbHNlIGlmICgqcmVzPT1QeV9Ob25lKQotICAgICAgICA7Ci0gICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKCpyZXMpKSB7Ci0gICAgICAgIC8qIG5vIG92ZXJmbG93IGNoZWNrLCBiZWNhdXNlIHdlIGtub3cgdGhhdCB0aGUgc3BhY2UgaXMgZW5vdWdoICovCi0gICAgICAgICgqb3V0cHV0KVsoKm9wb3MpKytdID0gKFB5X1VDUzQpUHlMb25nX0FTX0xPTkcoKnJlcyk7Ci0gICAgfQotICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjaygqcmVzKSkgewotICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemU7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoKnJlcykgPT0gLTEpCisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSh3cml0ZXIsIGNoKSA8IDApIHsKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKCpyZXMpOwotICAgICAgICBpZiAocmVwc2l6ZT09MSkgewotICAgICAgICAgICAgLyogbm8gb3ZlcmZsb3cgY2hlY2ssIGJlY2F1c2Ugd2Uga25vdyB0aGF0IHRoZSBzcGFjZSBpcyBlbm91Z2ggKi8KLSAgICAgICAgICAgICgqb3V0cHV0KVsoKm9wb3MpKytdID0gUHlVbmljb2RlX1JFQURfQ0hBUigqcmVzLCAwKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChyZXBzaXplIT0wKSB7Ci0gICAgICAgICAgICAvKiBtb3JlIHRoYW4gb25lIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgUHlfc3NpemVfdCByZXF1aXJlZHNpemUgPSAqb3BvcyArCi0gICAgICAgICAgICAgICAgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KSAtIGlwb3MpICsKLSAgICAgICAgICAgICAgICByZXBzaXplIC0gMTsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZShvdXRwdXQsIG9zaXplLCByZXF1aXJlZHNpemUpKQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IHJlcHNpemU7IGkrKykKLSAgICAgICAgICAgICAgICAoKm91dHB1dClbKCpvcG9zKSsrXSA9IFB5VW5pY29kZV9SRUFEX0NIQVIoKnJlcywgaSk7Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIGVsc2UKKworICAgIGlmIChpdGVtID09IFB5X05vbmUpIHsKKyAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoUHlMb25nX0NoZWNrKGl0ZW0pKSB7CisgICAgICAgIGxvbmcgY2ggPSAoUHlfVUNTNClQeUxvbmdfQVNfTE9ORyhpdGVtKTsKKyAgICAgICAgLyogUHlMb25nX0FTX0xPTkcoKSBjYW5ub3QgZmFpbCwgY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoKSBhbHJlYWR5CisgICAgICAgICAgIHVzZWQgaXQgKi8KKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKHdyaXRlciwgY2gpIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soaXRlbSkpIHsKKyAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIod3JpdGVyLCBpdGVtKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgUHlfREVDUkVGKGl0ZW0pOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Cit1bmljb2RlX2Zhc3RfdHJhbnNsYXRlX2xvb2t1cChQeU9iamVjdCAqbWFwcGluZywgUHlfVUNTMSBjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VDUzEgKnRyYW5zbGF0ZSkKK3sKKyAgICBQeU9iamVjdCAqaXRlbSA9IE5VTEw7CisgICAgaW50IHJldCA9IDA7CisKKyAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoY2gsIG1hcHBpbmcsICZpdGVtKSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKGl0ZW0gPT0gUHlfTm9uZSkgeworICAgICAgICAvKiBkZWxldGlvbiAqLworICAgICAgICB0cmFuc2xhdGVbY2hdID0gMHhmZTsKKyAgICB9CisgICAgZWxzZSBpZiAoaXRlbSA9PSBOVUxMKSB7CisgICAgICAgIC8qIG5vdCBmb3VuZCA9PiBkZWZhdWx0IHRvIDE6MSBtYXBwaW5nICovCisgICAgICAgIHRyYW5zbGF0ZVtjaF0gPSBjaDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayhpdGVtKSkgeworICAgICAgICBsb25nIHJlcGxhY2UgPSBQeUxvbmdfQVNfTE9ORyhpdGVtKTsKKyAgICAgICAgLyogUHlMb25nX0FTX0xPTkcoKSBjYW5ub3QgZmFpbCwgY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoKSBhbHJlYWR5CisgICAgICAgICAgIHVzZWQgaXQgKi8KKyAgICAgICAgaWYgKDEyNyA8IHJlcGxhY2UpIHsKKyAgICAgICAgICAgIC8qIGludmFsaWQgY2hhcmFjdGVyIG9yIGNoYXJhY3RlciBvdXRzaWRlIEFTQ0lJOgorICAgICAgICAgICAgICAgc2tpcCB0aGUgZmFzdCB0cmFuc2xhdGUgKi8KKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgICAgICB0cmFuc2xhdGVbY2hdID0gKFB5X1VDUzEpcmVwbGFjZTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGl0ZW0pKSB7CisgICAgICAgIFB5X1VDUzQgcmVwbGFjZTsKKworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGl0ZW0pID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGl0ZW0pICE9IDEpCisgICAgICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICAgICAgcmVwbGFjZSA9IFB5VW5pY29kZV9SRUFEX0NIQVIoaXRlbSwgMCk7CisgICAgICAgIGlmIChyZXBsYWNlID4gMTI3KQorICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB0cmFuc2xhdGVbY2hdID0gKFB5X1VDUzEpcmVwbGFjZTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIG5vdCBOb25lLCBOVUxMLCBsb25nIG9yIHVuaWNvZGUgKi8KKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXQgPSAxOworCisgIGV4aXQ6CisgICAgUHlfREVDUkVGKGl0ZW0pOworICAgIHJldHVybiByZXQ7Cit9CisKKy8qIEZhc3QgcGF0aCBmb3IgYXNjaWkgPT4gYXNjaWkgdHJhbnNsYXRpb24uIFJldHVybiAxIGlmIHRoZSB3aG9sZSBzdHJpbmcKKyAgIHdhcyB0cmFuc2xhdGVkIGludG8gd3JpdGVyLCByZXR1cm4gMCBpZiB0aGUgaW5wdXQgc3RyaW5nIHdhcyBwYXJ0aWFsbHkKKyAgIHRyYW5zbGF0ZWQgaW50byB3cml0ZXIsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworc3RhdGljIGludAordW5pY29kZV9mYXN0X3RyYW5zbGF0ZShQeU9iamVjdCAqaW5wdXQsIFB5T2JqZWN0ICptYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIGludCBpZ25vcmUpCit7CisgICAgUHlfVUNTMSBhc2NpaV90YWJsZVsxMjhdLCBjaCwgY2gyOworICAgIFB5X3NzaXplX3QgbGVuOworICAgIFB5X1VDUzEgKmluLCAqZW5kLCAqb3V0OworICAgIGludCByZXMgPSAwOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShpbnB1dCkgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoIVB5VW5pY29kZV9JU19BU0NJSShpbnB1dCkpCisgICAgICAgIHJldHVybiAwOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KTsKKworICAgIG1lbXNldChhc2NpaV90YWJsZSwgMHhmZiwgMTI4KTsKKworICAgIGluID0gUHlVbmljb2RlXzFCWVRFX0RBVEEoaW5wdXQpOworICAgIGVuZCA9IGluICsgbGVuOworCisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19BU0NJSSh3cml0ZXItPmJ1ZmZlcikpOworICAgIGFzc2VydChQeVVuaWNvZGVfR0VUX0xFTkdUSCh3cml0ZXItPmJ1ZmZlcikgPT0gbGVuKTsKKyAgICBvdXQgPSBQeVVuaWNvZGVfMUJZVEVfREFUQSh3cml0ZXItPmJ1ZmZlcik7CisKKyAgICBmb3IgKDsgaW4gPCBlbmQ7IGluKyspIHsKKyAgICAgICAgY2ggPSAqaW47CisgICAgICAgIGNoMiA9IGFzY2lpX3RhYmxlW2NoXTsKKyAgICAgICAgaWYgKGNoMiA9PSAweGZmKSB7CisgICAgICAgICAgICBpbnQgdHJhbnNsYXRlID0gdW5pY29kZV9mYXN0X3RyYW5zbGF0ZV9sb29rdXAobWFwcGluZywgY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNjaWlfdGFibGUpOworICAgICAgICAgICAgaWYgKHRyYW5zbGF0ZSA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgaWYgKHRyYW5zbGF0ZSA9PSAwKQorICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIGNoMiA9IGFzY2lpX3RhYmxlW2NoXTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2gyID09IDB4ZmUpIHsKKyAgICAgICAgICAgIGlmIChpZ25vcmUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KGNoMiA8IDEyOCk7CisgICAgICAgICpvdXQgPSBjaDI7CisgICAgICAgIG91dCsrOworICAgIH0KKyAgICByZXMgPSAxOworCitleGl0OgorICAgIHdyaXRlci0+cG9zID0gb3V0IC0gUHlVbmljb2RlXzFCWVRFX0RBVEEod3JpdGVyLT5idWZmZXIpOworICAgIHJldHVybiByZXM7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTg2MzUsMjIgKzg2MjgsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgLyogaW5wdXQgb2JqZWN0ICovCi0gICAgY2hhciAqaWRhdGE7CisgICAgY2hhciAqZGF0YTsKICAgICBQeV9zc2l6ZV90IHNpemUsIGk7CiAgICAgaW50IGtpbmQ7CiAgICAgLyogb3V0cHV0IGJ1ZmZlciAqLwotICAgIFB5X1VDUzQgKm91dHB1dCA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBvc2l6ZTsKLSAgICBQeU9iamVjdCAqcmVzOwotICAgIC8qIGN1cnJlbnQgb3V0cHV0IHBvc2l0aW9uICovCi0gICAgUHlfc3NpemVfdCBvcG9zOworICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOworICAgIC8qIGVycm9yIGhhbmRsZXIgKi8KICAgICBjaGFyICpyZWFzb24gPSAiY2hhcmFjdGVyIG1hcHMgdG8gPHVuZGVmaW5lZD4iOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgIC8qIHRoZSBmb2xsb3dpbmcgdmFyaWFibGUgaXMgdXNlZCBmb3IgY2FjaGluZyBzdHJpbmcgY29tcGFyaXNvbnMKLSAgICAgKiAtMT1ub3QgaW5pdGlhbGl6ZWQsIDA9dW5rbm93biwgMT1zdHJpY3QsIDI9cmVwbGFjZSwKLSAgICAgKiAzPWlnbm9yZSwgND14bWxjaGFycmVmcmVwbGFjZSAqLwotICAgIGludCBrbm93bl9lcnJvckhhbmRsZXIgPSAtMTsKKyAgICBpbnQgaWdub3JlOworICAgIGludCByZXM7CiAKICAgICBpZiAobWFwcGluZyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CkBAIC04NjU5LDEwICs4NjQ3LDkgQEAKIAogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoaW5wdXQpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZGF0YSA9IChjaGFyKilQeVVuaWNvZGVfREFUQShpbnB1dCk7CisgICAgZGF0YSA9IChjaGFyKilQeVVuaWNvZGVfREFUQShpbnB1dCk7CiAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGlucHV0KTsKICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaW5wdXQpOwotICAgIGkgPSAwOwogCiAgICAgaWYgKHNpemUgPT0gMCkgewogICAgICAgICBQeV9JTkNSRUYoaW5wdXQpOwpAQCAtODY3MSwxMjEgKzg2NTgsODEgQEAKIAogICAgIC8qIGFsbG9jYXRlIGVub3VnaCBmb3IgYSBzaW1wbGUgMToxIHRyYW5zbGF0aW9uIHdpdGhvdXQKICAgICAgICByZXBsYWNlbWVudHMsIGlmIHdlIG5lZWQgbW9yZSwgd2UnbGwgcmVzaXplICovCi0gICAgb3NpemUgPSBzaXplOwotICAgIG91dHB1dCA9IFB5TWVtX05FVyhQeV9VQ1M0LCBvc2l6ZSk7Ci0gICAgb3BvcyA9IDA7Ci0gICAgaWYgKG91dHB1dCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZ3cml0ZXIpOworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgc2l6ZSwgMTI3KSA9PSAtMSkKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIH0KIAorICAgIGlnbm9yZSA9IChlcnJvcnMgIT0gTlVMTCAmJiBzdHJjbXAoZXJyb3JzLCAiaWdub3JlIikgPT0gMCk7CisKKyAgICByZXMgPSB1bmljb2RlX2Zhc3RfdHJhbnNsYXRlKGlucHV0LCBtYXBwaW5nLCAmd3JpdGVyLCBpZ25vcmUpOworICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChyZXMgPT0gMSkKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOworCisgICAgaSA9IHdyaXRlci5wb3M7CiAgICAgd2hpbGUgKGk8c2l6ZSkgewogICAgICAgICAvKiB0cnkgdG8gZW5jb2RlIGl0ICovCi0gICAgICAgIFB5T2JqZWN0ICp4ID0gTlVMTDsKLSAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfb3V0cHV0KGlucHV0LCBpLCBtYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dHB1dCwgJm9zaXplLCAmb3BvcywgJngpKSB7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHgpOwotICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICB9Ci0gICAgICAgIFB5X1hERUNSRUYoeCk7Ci0gICAgICAgIGlmICh4IT1QeV9Ob25lKSAvKiBpdCB3b3JrZWQgPT4gYWRqdXN0IGlucHV0IHBvaW50ZXIgKi8KLSAgICAgICAgICAgICsraTsKLSAgICAgICAgZWxzZSB7IC8qIHVudHJhbnNsYXRhYmxlIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGUgPSBOVUxMOyAvKiBpbml0aWFsaXplIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KLSAgICAgICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZTsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgbmV3cG9zOwotICAgICAgICAgICAgUHlfc3NpemVfdCB1bmkyOwotICAgICAgICAgICAgLyogc3RhcnRwb3MgZm9yIGNvbGxlY3RpbmcgdW50cmFuc2xhdGFibGUgY2hhcnMgKi8KLSAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbHN0YXJ0ID0gaTsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbGVuZCA9IGkrMTsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbDsKKyAgICAgICAgaW50IHRyYW5zbGF0ZTsKKyAgICAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGUgPSBOVUxMOyAvKiBpbml0aWFsaXplIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KKyAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7CisgICAgICAgIC8qIHN0YXJ0cG9zIGZvciBjb2xsZWN0aW5nIHVudHJhbnNsYXRhYmxlIGNoYXJzICovCisgICAgICAgIFB5X3NzaXplX3QgY29sbHN0YXJ0OworICAgICAgICBQeV9zc2l6ZV90IGNvbGxlbmQ7CisgICAgICAgIFB5X1VDUzQgY2g7CiAKLSAgICAgICAgICAgIC8qIGZpbmQgYWxsIHVudHJhbnNsYXRhYmxlIGNoYXJhY3RlcnMgKi8KLSAgICAgICAgICAgIHdoaWxlIChjb2xsZW5kIDwgc2l6ZSkgewotICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX2xvb2t1cChQeVVuaWNvZGVfUkVBRChraW5kLGlkYXRhLCBjb2xsZW5kKSwgbWFwcGluZywgJngpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgUHlfWERFQ1JFRih4KTsKLSAgICAgICAgICAgICAgICBpZiAoeCE9UHlfTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgKytjb2xsZW5kOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogY2FjaGUgY2FsbGJhY2sgbmFtZSBsb29rdXAKLSAgICAgICAgICAgICAqIChpZiBub3QgZG9uZSB5ZXQsIGkuZS4gaXQncyB0aGUgZmlyc3QgZXJyb3IpICovCi0gICAgICAgICAgICBpZiAoa25vd25fZXJyb3JIYW5kbGVyPT0tMSkgewotICAgICAgICAgICAgICAgIGlmICgoZXJyb3JzPT1OVUxMKSB8fCAoIXN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSkpCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDE7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJyZXBsYWNlIikpCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDI7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJpZ25vcmUiKSkKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgInhtbGNoYXJyZWZyZXBsYWNlIikpCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDQ7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3dpdGNoIChrbm93bl9lcnJvckhhbmRsZXIpIHsKLSAgICAgICAgICAgIGNhc2UgMTogLyogc3RyaWN0ICovCi0gICAgICAgICAgICAgICAgbWFrZV90cmFuc2xhdGVfZXhjZXB0aW9uKCZleGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LCBjb2xsc3RhcnQsIGNvbGxlbmQsIHJlYXNvbik7Ci0gICAgICAgICAgICAgICAgaWYgKGV4YyAhPSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBQeUNvZGVjX1N0cmljdEVycm9ycyhleGMpOworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICB0cmFuc2xhdGUgPSBjaGFybWFwdHJhbnNsYXRlX291dHB1dChjaCwgbWFwcGluZywgJndyaXRlcik7CisgICAgICAgIGlmICh0cmFuc2xhdGUgPCAwKQorICAgICAgICAgICAgZ290byBvbkVycm9yOworCisgICAgICAgIGlmICh0cmFuc2xhdGUgIT0gMCkgeworICAgICAgICAgICAgLyogaXQgd29ya2VkID0+IGFkanVzdCBpbnB1dCBwb2ludGVyICovCisgICAgICAgICAgICArK2k7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHVudHJhbnNsYXRhYmxlIGNoYXJhY3RlciAqLworICAgICAgICBjb2xsc3RhcnQgPSBpOworICAgICAgICBjb2xsZW5kID0gaSsxOworCisgICAgICAgIC8qIGZpbmQgYWxsIHVudHJhbnNsYXRhYmxlIGNoYXJhY3RlcnMgKi8KKyAgICAgICAgd2hpbGUgKGNvbGxlbmQgPCBzaXplKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqeDsKKyAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgY29sbGVuZCk7CisgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoY2gsIG1hcHBpbmcsICZ4KSkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICBjYXNlIDI6IC8qIHJlcGxhY2UgKi8KLSAgICAgICAgICAgICAgICAvKiBObyBuZWVkIHRvIGNoZWNrIGZvciBzcGFjZSwgdGhpcyBpcyBhIDE6MSByZXBsYWNlbWVudCAqLwotICAgICAgICAgICAgICAgIGZvciAoY29sbCA9IGNvbGxzdGFydDsgY29sbDxjb2xsZW5kOyBjb2xsKyspCi0gICAgICAgICAgICAgICAgICAgIG91dHB1dFtvcG9zKytdID0gJz8nOwotICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotICAgICAgICAgICAgY2FzZSAzOiAvKiBpZ25vcmUgKi8KLSAgICAgICAgICAgICAgICBpID0gY29sbGVuZDsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoeCk7CisgICAgICAgICAgICBpZiAoeCAhPSBQeV9Ob25lKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSA0OiAvKiB4bWxjaGFycmVmcmVwbGFjZSAqLwotICAgICAgICAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICh0ZW1wb3JhcmlseSAobWlzKXVzZXMgaSkgKi8KLSAgICAgICAgICAgICAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhciBidWZmZXJbMisyOSsxKzFdOwotICAgICAgICAgICAgICAgICAgICBjaGFyICpjcDsKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICImIyVkOyIsIFB5VW5pY29kZV9SRUFEKGtpbmQsIGlkYXRhLCBpKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZSgmb3V0cHV0LCAmb3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcG9zK3N0cmxlbihidWZmZXIpKyhzaXplLWNvbGxlbmQpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChjcCA9IGJ1ZmZlcjsgKmNwOyArK2NwKQotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0W29wb3MrK10gPSAqY3A7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGkgPSBjb2xsZW5kOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV90cmFuc2xhdGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24sIGlucHV0LCAmZXhjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsc3RhcnQsIGNvbGxlbmQsICZuZXdwb3MpOwotICAgICAgICAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHJlcHVuaWNvZGUpID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAgKi8KLSAgICAgICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbWFrZXNwYWNlKCZvdXRwdXQsICZvc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BvcytyZXBzaXplKyhzaXplLWNvbGxlbmQpKSkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZm9yICh1bmkyID0gMDsgcmVwc2l6ZS0tPjA7ICsrdW5pMikKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0W29wb3MrK10gPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHJlcHVuaWNvZGUsIHVuaTIpOwotICAgICAgICAgICAgICAgIGkgPSBuZXdwb3M7CisgICAgICAgICAgICArK2NvbGxlbmQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaWdub3JlKSB7CisgICAgICAgICAgICBpID0gY29sbGVuZDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX3RyYW5zbGF0ZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsICZlcnJvckhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uLCBpbnB1dCwgJmV4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsc3RhcnQsIGNvbGxlbmQsICZuZXdwb3MpOworICAgICAgICAgICAgaWYgKHJlcHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZVN0cigmd3JpdGVyLCByZXB1bmljb2RlKSA8IDApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgaSA9IG5ld3BvczsKICAgICAgICAgfQogICAgIH0KLSAgICByZXMgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELCBvdXRwdXQsIG9wb3MpOwotICAgIGlmICghcmVzKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgUHlNZW1fRnJlZShvdXRwdXQpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7Ci0gICAgcmV0dXJuIHJlczsKKyAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAKICAgb25FcnJvcjoKLSAgICBQeU1lbV9GcmVlKG91dHB1dCk7CisgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC04ODg3LDcgKzg4MzQsNyBAQAogCiAgICAgbWF4Y2hhciA9IDEyNzsKICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9IHNbaV07CisgICAgICAgIFB5X1VDUzQgY2ggPSBzW2ldOwogICAgICAgICBpZiAoY2ggPiAxMjcpIHsKICAgICAgICAgICAgIGludCBkZWNpbWFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoY2gpOwogICAgICAgICAgICAgaWYgKGRlY2ltYWwgPj0gMCkKQEAgLTg5MDQsNyArODg1MSw3IEBACiAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKGRlY2ltYWwpOwogICAgIC8qIEl0ZXJhdGUgb3ZlciBjb2RlIHBvaW50cyAqLwogICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBQeV9VTklDT0RFIGNoID0gc1tpXTsKKyAgICAgICAgUHlfVUNTNCBjaCA9IHNbaV07CiAgICAgICAgIGlmIChjaCA+IDEyNykgewogICAgICAgICAgICAgaW50IGRlY2ltYWwgPSBQeV9VTklDT0RFX1RPREVDSU1BTChjaCk7CiAgICAgICAgICAgICBpZiAoZGVjaW1hbCA+PSAwKQpAQCAtODk4NSwzNSArODkzMiw2MSBAQAogCiAvKiAtLS0gSGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAorLyogaGVscGVyIG1hY3JvIHRvIGZpeHVwIHN0YXJ0L2VuZCBzbGljZSB2YWx1ZXMgKi8KKyNkZWZpbmUgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKSAgICAgICAgIFwKKyAgICBpZiAoZW5kID4gbGVuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZW5kID0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBlbHNlIGlmIChlbmQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZW5kICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKGVuZCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGVuZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoc3RhcnQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhcnQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHN0YXJ0IDwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHN0YXJ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKIHN0YXRpYyBQeV9zc2l6ZV90CiBhbnlfZmluZF9zbGljZShpbnQgZGlyZWN0aW9uLCBQeU9iamVjdCogczEsIFB5T2JqZWN0KiBzMiwKICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCiAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCkKIHsKLSAgICBpbnQga2luZDEsIGtpbmQyLCBraW5kOworICAgIGludCBraW5kMSwga2luZDI7CiAgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yLCByZXN1bHQ7CiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHMxKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHMyKTsKLSAgICBraW5kID0ga2luZDEgPiBraW5kMiA/IGtpbmQxIDoga2luZDI7Ci0gICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHMxKTsKLSAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoczIpOwotICAgIGlmIChraW5kMSAhPSBraW5kKQotICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoczEsIGtpbmQpOwotICAgIGlmICghYnVmMSkKLSAgICAgICAgcmV0dXJuIC0yOwotICAgIGlmIChraW5kMiAhPSBraW5kKQotICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoczIsIGtpbmQpOwotICAgIGlmICghYnVmMikgewotICAgICAgICBpZiAoa2luZDEgIT0ga2luZCkgUHlNZW1fRnJlZShidWYxKTsKLSAgICAgICAgcmV0dXJuIC0yOwotICAgIH0KKyAgICBpZiAoa2luZDEgPCBraW5kMikKKyAgICAgICAgcmV0dXJuIC0xOworCiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHMxKTsKICAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoczIpOworICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbjEpOworICAgIGlmIChlbmQgLSBzdGFydCA8IGxlbjIpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzMSk7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHMyKTsKKyAgICBpZiAobGVuMiA9PSAxKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kMiwgYnVmMiwgMCk7CisgICAgICAgIHJlc3VsdCA9IGZpbmRjaGFyKChjb25zdCBjaGFyICopYnVmMSArIGtpbmQxKnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kMSwgZW5kIC0gc3RhcnQsIGNoLCBkaXJlY3Rpb24pOworICAgICAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gc3RhcnQgKyByZXN1bHQ7CisgICAgfQorCisgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzMiwga2luZDEpOworICAgICAgICBpZiAoIWJ1ZjIpCisgICAgICAgICAgICByZXR1cm4gLTI7CisgICAgfQogCiAgICAgaWYgKGRpcmVjdGlvbiA+IDApIHsKLSAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIHN3aXRjaCAoa2luZDEpIHsKICAgICAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoczEpICYmIFB5VW5pY29kZV9JU19BU0NJSShzMikpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gYXNjaWlsaWJfZmluZF9zbGljZShidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBzdGFydCwgZW5kKTsKQEAgLTkwMzEsNyArOTAwNCw3IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQxKSB7CiAgICAgICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CiAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHMxKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoczIpKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFzY2lpbGliX3JmaW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOwpAQCAtOTA0OSw5ICs5MDIyLDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChraW5kMSAhPSBraW5kKQotICAgICAgICBQeU1lbV9GcmVlKGJ1ZjEpOwotICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgIGlmIChraW5kMiAhPSBraW5kMSkKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC05MTQxLDIxICs5MTEyLDYgQEAKIH0KIAogCi0vKiBoZWxwZXIgbWFjcm8gdG8gZml4dXAgc3RhcnQvZW5kIHNsaWNlIHZhbHVlcyAqLwotI2RlZmluZSBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pICAgICAgICAgXAotICAgIGlmIChlbmQgPiBsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGVsc2UgaWYgKGVuZCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoZW5kIDwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZW5kID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChzdGFydCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGFydCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoc3RhcnQgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgc3RhcnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQogUHlfc3NpemVfdAogUHlVbmljb2RlX0NvdW50KFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YnN0ciwKQEAgLTkxNjUsNyArOTEyMSw3IEBACiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CiAgICAgUHlPYmplY3QqIHN0cl9vYmo7CiAgICAgUHlPYmplY3QqIHN1Yl9vYmo7Ci0gICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEgPSBOVUxMLCAqYnVmMiA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCkBAIC05MTg1LDI0ICs5MTQxLDMwIEBACiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cl9vYmopOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3ViX29iaik7Ci0gICAga2luZCA9IGtpbmQxOwotICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKLSAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3ViX29iaik7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQpIHsKLSAgICAgICAgaWYgKGtpbmQyID4ga2luZCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHN1Yl9vYmopOwotICAgICAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1Yl9vYmosIGtpbmQpOworICAgIGlmIChraW5kMSA8IGtpbmQyKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKCFidWYyKQotICAgICAgICBnb3RvIG9uRXJyb3I7CisKICAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyX29iaik7CiAgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1Yl9vYmopOwotCiAgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuMSk7Ci0gICAgc3dpdGNoIChraW5kKSB7CisgICAgaWYgKGVuZCAtIHN0YXJ0IDwgbGVuMikgeworICAgICAgICBQeV9ERUNSRUYoc3ViX29iaik7CisgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9vYmopOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJfb2JqKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1Yl9vYmosIGtpbmQxKTsKKyAgICAgICAgaWYgKCFidWYyKQorICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgIH0KKworICAgIHN3aXRjaCAoa2luZDEpIHsKICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgogICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHN0cl9vYmopICYmIFB5VW5pY29kZV9JU19BU0NJSShzdWJfb2JqKSkKICAgICAgICAgICAgIHJlc3VsdCA9IGFzY2lpbGliX2NvdW50KApAQCAtOTIzNCwxNCArOTE5NiwxNCBAQAogICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKICAgICBQeV9ERUNSRUYoc3RyX29iaik7CiAKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICByZXR1cm4gcmVzdWx0OwogICBvbkVycm9yOgogICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQgJiYgYnVmMikKKyAgICBpZiAoa2luZDIgIT0ga2luZDEgJiYgYnVmMikKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKICAgICByZXR1cm4gLTE7CiB9CkBAIC05Mjk0LDYgKzkyNTYsOCBAQAogICAgIH0KICAgICBpZiAoZW5kID4gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSkKICAgICAgICAgZW5kID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKyAgICBpZiAoc3RhcnQgPj0gZW5kKQorICAgICAgICByZXR1cm4gLTE7CiAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cik7CiAgICAgcmVzdWx0ID0gZmluZGNoYXIoUHlVbmljb2RlXzFCWVRFX0RBVEEoc3RyKSArIGtpbmQqc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAga2luZCwgZW5kLXN0YXJ0LCBjaCwgZGlyZWN0aW9uKTsKQEAgLTkzMjIsMTQgKzkyODYsMTQgQEAKICAgICAgICAgUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpID09IDApCi0gICAgICAgIHJldHVybiAxOwotCiAgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikpOwogICAgIGVuZCAtPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpOwogICAgIGlmIChlbmQgPCBzdGFydCkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKSA9PSAwKQorICAgICAgICByZXR1cm4gMTsKKwogICAgIGtpbmRfc2VsZiA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOwogICAgIGRhdGFfc2VsZiA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwogICAgIGtpbmRfc3ViID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKTsKQEAgLTk0ODEsNyArOTQ0NSw3IEBACiB7CiAgICAgUHlfc3NpemVfdCBqOwogICAgIGludCBmaW5hbF9zaWdtYTsKLSAgICBQeV9VQ1M0IGMgPSAwOworICAgIFB5X1VDUzQgYyA9IDA7ICAgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCiAgICAgLyogVSswM0EzIGlzIGluIHRoZSBGaW5hbF9TaWdtYSBjb250ZXh0IHdoZW4sIGl0IGlzIGZvdW5kIGxpa2UgdGhpczoKIAogICAgICBccHtjYXNlZH1ccHtjYXNlLWlnbm9yYWJsZX0qVSswM0EzIShccHtjYXNlLWlnbm9yYWJsZX0qXHB7Y2FzZWR9KQpAQCAtMTAwNDAsNyArMTAwMDQsNyBAQAogICAgICAgUHlPYmplY3QgKnN1YnN0cmluZywKICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7Ci0gICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKICAgICBQeU9iamVjdCogb3V0OwpAQCAtMTAwODQsMjMgKzEwMDQ4LDI1IEBACiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKTsKLSAgICBraW5kID0ga2luZDEgPiBraW5kMiA/IGtpbmQxIDoga2luZDI7Ci0gICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwotICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHJpbmcpOwotICAgIGlmIChraW5kMSAhPSBraW5kKQotICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VsZiwga2luZCk7Ci0gICAgaWYgKCFidWYxKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0cmluZywga2luZCk7Ci0gICAgaWYgKCFidWYyKSB7Ci0gICAgICAgIGlmIChraW5kMSAhPSBraW5kKSBQeU1lbV9GcmVlKGJ1ZjEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpOworICAgIGlmIChraW5kMSA8IGtpbmQyIHx8IGxlbjEgPCBsZW4yKSB7CisgICAgICAgIG91dCA9IFB5TGlzdF9OZXcoMSk7CisgICAgICAgIGlmIChvdXQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgICAgIFB5TGlzdF9TRVRfSVRFTShvdXQsIDAsIHNlbGYpOworICAgICAgICByZXR1cm4gb3V0OworICAgIH0KKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHJpbmcsIGtpbmQxKTsKKyAgICAgICAgaWYgKCFidWYyKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgc3dpdGNoIChraW5kKSB7CisgICAgc3dpdGNoIChraW5kMSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CiAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1YnN0cmluZykpCiAgICAgICAgICAgICBvdXQgPSBhc2NpaWxpYl9zcGxpdCgKQEAgLTEwMTIwLDkgKzEwMDg2LDcgQEAKICAgICBkZWZhdWx0OgogICAgICAgICBvdXQgPSBOVUxMOwogICAgIH0KLSAgICBpZiAoa2luZDEgIT0ga2luZCkKLSAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAgICAgcmV0dXJuIG91dDsKIH0KQEAgLTEwMTMyLDcgKzEwMDk2LDcgQEAKICAgICAgICBQeU9iamVjdCAqc3Vic3RyaW5nLAogICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7Ci0gICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKICAgICBQeU9iamVjdCogb3V0OwpAQCAtMTAxNzYsMjMgKzEwMTQwLDI1IEBACiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKTsKLSAgICBraW5kID0ga2luZDEgPiBraW5kMiA/IGtpbmQxIDoga2luZDI7Ci0gICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwotICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHJpbmcpOwotICAgIGlmIChraW5kMSAhPSBraW5kKQotICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VsZiwga2luZCk7Ci0gICAgaWYgKCFidWYxKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0cmluZywga2luZCk7Ci0gICAgaWYgKCFidWYyKSB7Ci0gICAgICAgIGlmIChraW5kMSAhPSBraW5kKSBQeU1lbV9GcmVlKGJ1ZjEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpOworICAgIGlmIChraW5kMSA8IGtpbmQyIHx8IGxlbjEgPCBsZW4yKSB7CisgICAgICAgIG91dCA9IFB5TGlzdF9OZXcoMSk7CisgICAgICAgIGlmIChvdXQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgICAgIFB5TGlzdF9TRVRfSVRFTShvdXQsIDAsIHNlbGYpOworICAgICAgICByZXR1cm4gb3V0OworICAgIH0KKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHJpbmcsIGtpbmQxKTsKKyAgICAgICAgaWYgKCFidWYyKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgc3dpdGNoIChraW5kKSB7CisgICAgc3dpdGNoIChraW5kMSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CiAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1YnN0cmluZykpCiAgICAgICAgICAgICBvdXQgPSBhc2NpaWxpYl9yc3BsaXQoCkBAIC0xMDIxMiw5ICsxMDE3OCw3IEBACiAgICAgZGVmYXVsdDoKICAgICAgICAgb3V0ID0gTlVMTDsKICAgICB9Ci0gICAgaWYgKGtpbmQxICE9IGtpbmQpCi0gICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogICAgIHJldHVybiBvdXQ7CiB9CkBAIC0xMDQzMyw3ICsxMDM5Nyw3IEBACiAgICAgICAgIH0KICAgICAgICAgLyogbmV3X3NpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSArIG4gKiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyMikgLQogICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIxKSkpOyAqLwotICAgICAgICBpZiAobGVuMiA+IGxlbjEgJiYgbGVuMiAtIGxlbjEgPiAoUFlfU1NJWkVfVF9NQVggLSBzbGVuKSAvIG4pIHsKKyAgICAgICAgaWYgKGxlbjEgPCBsZW4yICYmIGxlbjIgLSBsZW4xID4gKFBZX1NTSVpFX1RfTUFYIC0gc2xlbikgLyBuKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlIHN0cmluZyBpcyB0b28gbG9uZyIpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0xMDg0Miw3ICsxMDgwNiw3IEBACiAgICAgICAgIH0KICAgICAgICAgaWYgKGxlbjEgPiBsZW4yKQogICAgICAgICAgICAgcmV0dXJuIDE7IC8qIHVuaSBpcyBsb25nZXIgKi8KLSAgICAgICAgaWYgKGxlbjIgPiBsZW4xKQorICAgICAgICBpZiAobGVuMSA8IGxlbjIpCiAgICAgICAgICAgICByZXR1cm4gLTE7IC8qIHN0ciBpcyBsb25nZXIgKi8KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTA4NTAsNyArMTA4MTQsNyBAQAogICAgICAgICB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pKTsKICAgICAgICAgLyogQ29tcGFyZSBVbmljb2RlIHN0cmluZyBhbmQgc291cmNlIGNoYXJhY3RlciBzZXQgc3RyaW5nICovCiAgICAgICAgIGZvciAoaSA9IDA7IChjaHIgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkgJiYgc3RyW2ldOyBpKyspCi0gICAgICAgICAgICBpZiAoY2hyICE9IHN0cltpXSkKKyAgICAgICAgICAgIGlmIChjaHIgIT0gKHVuc2lnbmVkIGNoYXIpc3RyW2ldKQogICAgICAgICAgICAgICAgIHJldHVybiAoY2hyIDwgKHVuc2lnbmVkIGNoYXIpKHN0cltpXSkpID8gLTEgOiAxOwogICAgICAgICAvKiBUaGlzIGNoZWNrIGtlZXBzIFB5dGhvbiBzdHJpbmdzIHRoYXQgZW5kIGluICdcMCcgZnJvbSBjb21wYXJpbmcgZXF1YWwKICAgICAgICAgIHRvIEMgc3RyaW5ncyBpZGVudGljYWwgdXAgdG8gdGhhdCBwb2ludC4gKi8KQEAgLTEwOTU0LDIzICsxMDkxOCwzNSBAQAogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHIpOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3ViKTsKLSAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyKTsKLSAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3ViKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKLSAgICAgICAgaWYgKGtpbmQyID4ga2luZDEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdWIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3ViLCBraW5kMSk7Ci0gICAgfQotICAgIGlmICghYnVmMikgeworICAgIGlmIChraW5kMSA8IGtpbmQyKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzdWIpOwogICAgICAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CiAgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1Yik7CisgICAgaWYgKGxlbjEgPCBsZW4yKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWIpOworICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHIpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWIpOworICAgIGlmIChsZW4yID09IDEpIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQyLCBidWYyLCAwKTsKKyAgICAgICAgcmVzdWx0ID0gZmluZGNoYXIoKGNvbnN0IGNoYXIgKilidWYxLCBraW5kMSwgbGVuMSwgY2gsIDEpICE9IC0xOworICAgICAgICBQeV9ERUNSRUYoc3ViKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGlmIChraW5kMiAhPSBraW5kMSkgeworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3ViLCBraW5kMSk7CisgICAgICAgIGlmICghYnVmMikgeworICAgICAgICAgICAgUHlfREVDUkVGKHN1Yik7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIHN3aXRjaCAoa2luZDEpIHsKICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgpAQCAtMTExNTEsMTEgKzExMTI3LDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9jb3VudChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnN1YnN0cmluZyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN1YnN0cmluZyA9IE5VTEw7ICAgLyogaW5pdGlhbGl6ZSB0byBmaXggYSBjb21waWxlciB3YXJuaW5nICovCiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxLCAqYnVmMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjIsIGlyZXN1bHQ7CiAKQEAgLTExMTY1LDI0ICsxMTE0MSwyNyBAQAogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZyk7Ci0gICAgaWYgKGtpbmQyID4ga2luZDEpIHsKKyAgICBpZiAoa2luZDEgPCBraW5kMikgewogICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKICAgICB9Ci0gICAga2luZCA9IGtpbmQxOwotICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKLSAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyaW5nKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0cmluZywga2luZCk7Ci0gICAgaWYgKCFidWYyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpOwotCiAgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuMSk7Ci0gICAgc3dpdGNoIChraW5kKSB7CisgICAgaWYgKGVuZCAtIHN0YXJ0IDwgbGVuMikgeworICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKKyAgICB9CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHJpbmcpOworICAgIGlmIChraW5kMiAhPSBraW5kMSkgeworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyaW5nLCBraW5kMSk7CisgICAgICAgIGlmICghYnVmMikgeworICAgICAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBzd2l0Y2ggKGtpbmQxKSB7CiAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKICAgICAgICAgaXJlc3VsdCA9IHVjczFsaWJfY291bnQoCiAgICAgICAgICAgICAoKFB5X1VDUzEqKWJ1ZjEpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LApAQCAtMTEyMDcsNyArMTExODYsNyBAQAogCiAgICAgcmVzdWx0ID0gUHlMb25nX0Zyb21Tc2l6ZV90KGlyZXN1bHQpOwogCi0gICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CkBAIC0xMTMzOSw2ICsxMTMxOCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9maW5kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICAvKiBpbml0aWFsaXplIHZhcmlhYmxlcyB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCiAgICAgUHlPYmplY3QgKnN1YnN0cmluZyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwpAQCAtMTE0MjYsNiArMTE0MDYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfaW5kZXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIC8qIGluaXRpYWxpemUgdmFyaWFibGVzIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKICAgICBQeU9iamVjdCAqc3Vic3RyaW5nID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKQEAgLTEyNTA0LDYgKzEyNDg1LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB1bmljb2RlX3JmaW5kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICAvKiBpbml0aWFsaXplIHZhcmlhYmxlcyB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCiAgICAgUHlPYmplY3QgKnN1YnN0cmluZyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwpAQCAtMTI1NDAsNiArMTI1MjIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfcmluZGV4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICAvKiBpbml0aWFsaXplIHZhcmlhYmxlcyB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCiAgICAgUHlPYmplY3QgKnN1YnN0cmluZyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwpAQCAtMTI2NTQsOCArMTI2MzcsOCBAQAogICAgIFB5T2JqZWN0KiBzdHJfb2JqOwogICAgIFB5T2JqZWN0KiBzZXBfb2JqOwogICAgIFB5T2JqZWN0KiBvdXQ7Ci0gICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKLSAgICB2b2lkICpidWYxID0gTlVMTCwgKmJ1ZjIgPSBOVUxMOworICAgIGludCBraW5kMSwga2luZDI7CisgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCiAgICAgc3RyX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cl9pbik7CkBAIC0xMjY3NCwyMSArMTI2NTcsMjkgQEAKIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX29iaik7CiAgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzZXBfb2JqKTsKLSAgICBraW5kID0gUHlfTUFYKGtpbmQxLCBraW5kMik7Ci0gICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9vYmopOwotICAgIGlmIChraW5kMSAhPSBraW5kKQotICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc3RyX29iaiwga2luZCk7Ci0gICAgaWYgKCFidWYxKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHNlcF9vYmopOwotICAgIGlmIChraW5kMiAhPSBraW5kKQotICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VwX29iaiwga2luZCk7Ci0gICAgaWYgKCFidWYyKQotICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cl9vYmopOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZXBfb2JqKTsKKyAgICBpZiAoa2luZDEgPCBraW5kMiB8fCBsZW4xIDwgbGVuMikgeworICAgICAgICBfUHlfSU5DUkVGX1VOSUNPREVfRU1QVFkoKTsKKyAgICAgICAgaWYgKCF1bmljb2RlX2VtcHR5KQorICAgICAgICAgICAgb3V0ID0gTlVMTDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBvdXQgPSBQeVR1cGxlX1BhY2soMywgc3RyX29iaiwgdW5pY29kZV9lbXB0eSwgdW5pY29kZV9lbXB0eSk7CisgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHNlcF9vYmopOworICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgICAgIHJldHVybiBvdXQ7CisgICAgfQorICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc2VwX29iaik7CisgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzZXBfb2JqLCBraW5kMSk7CisgICAgICAgIGlmICghYnVmMikKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICB9CiAKLSAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBzd2l0Y2ggKGtpbmQxKSB7CiAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzdHJfb2JqKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc2VwX29iaikpCiAgICAgICAgICAgICBvdXQgPSBhc2NpaWxpYl9wYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CkBAIC0xMjcwOCwxOCArMTI2OTksMTQgQEAKIAogICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgaWYgKGtpbmQxICE9IGtpbmQpCi0gICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgcmV0dXJuIG91dDsKICAgb25FcnJvcjoKICAgICBQeV9ERUNSRUYoc2VwX29iaik7CiAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgIGlmIChraW5kMSAhPSBraW5kICYmIGJ1ZjEpCi0gICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQgJiYgYnVmMikKKyAgICBpZiAoa2luZDIgIT0ga2luZDEgJiYgYnVmMikKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KQEAgLTEyNzMxLDggKzEyNzE4LDggQEAKICAgICBQeU9iamVjdCogc3RyX29iajsKICAgICBQeU9iamVjdCogc2VwX29iajsKICAgICBQeU9iamVjdCogb3V0OwotICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7Ci0gICAgdm9pZCAqYnVmMSA9IE5VTEwsICpidWYyID0gTlVMTDsKKyAgICBpbnQga2luZDEsIGtpbmQyOworICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAogICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHJfaW4pOwpAQCAtMTI3NDYsMjEgKzEyNzMzLDI5IEBACiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cl9vYmopOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc2VwX29iaik7Ci0gICAga2luZCA9IFB5X01BWChraW5kMSwga2luZDIpOwotICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKLSAgICBpZiAoa2luZDEgIT0ga2luZCkKLSAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cl9vYmosIGtpbmQpOwotICAgIGlmICghYnVmMSkKLSAgICAgICAgZ290byBvbkVycm9yOwotICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzZXBfb2JqKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlcF9vYmosIGtpbmQpOwotICAgIGlmICghYnVmMikKLSAgICAgICAgZ290byBvbkVycm9yOwogICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJfb2JqKTsKICAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VwX29iaik7CisgICAgaWYgKGtpbmQxIDwga2luZDIgfHwgbGVuMSA8IGxlbjIpIHsKKyAgICAgICAgX1B5X0lOQ1JFRl9VTklDT0RFX0VNUFRZKCk7CisgICAgICAgIGlmICghdW5pY29kZV9lbXB0eSkKKyAgICAgICAgICAgIG91dCA9IE5VTEw7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgb3V0ID0gUHlUdXBsZV9QYWNrKDMsIHVuaWNvZGVfZW1wdHksIHVuaWNvZGVfZW1wdHksIHN0cl9vYmopOworICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgICAgICByZXR1cm4gb3V0OworICAgIH0KKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHNlcF9vYmopOworICAgIGlmIChraW5kMiAhPSBraW5kMSkgeworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VwX29iaiwga2luZDEpOworICAgICAgICBpZiAoIWJ1ZjIpCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgfQogCi0gICAgc3dpdGNoIChraW5kKSB7CisgICAgc3dpdGNoIChraW5kMSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CiAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyX29iaikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHNlcF9vYmopKQogICAgICAgICAgICAgb3V0ID0gYXNjaWlsaWJfcnBhcnRpdGlvbihzdHJfb2JqLCBidWYxLCBsZW4xLCBzZXBfb2JqLCBidWYyLCBsZW4yKTsKQEAgLTEyNzgwLDE4ICsxMjc3NSwxNCBAQAogCiAgICAgUHlfREVDUkVGKHNlcF9vYmopOwogICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICBpZiAoa2luZDEgIT0ga2luZCkKLSAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICByZXR1cm4gb3V0OwogICBvbkVycm9yOgogICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgaWYgKGtpbmQxICE9IGtpbmQgJiYgYnVmMSkKLSAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCAmJiBidWYyKQorICAgIGlmIChraW5kMiAhPSBraW5kMSAmJiBidWYyKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogICAgIHJldHVybiBOVUxMOwogfQpAQCAtMTI5MzcsNDcgKzEyOTI4LDkgQEAKIG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG8gTm9uZSBpbiB0aGUgcmVzdWx0LgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIodW5pY29kZV9tYWtldHJhbnNfX2RvY19fLAotIm1ha2V0cmFucyh4LCB5PU5vbmUsIHo9Tm9uZSwgLylcbiIKLSItLVxuIgotIlxuIgotIlJldHVybiBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSBmb3Igc3RyLnRyYW5zbGF0ZSgpLlxuIgotIlxuIgotIklmIHRoZXJlIGlzIG9ubHkgb25lIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgZGljdGlvbmFyeSBtYXBwaW5nIFVuaWNvZGVcbiIKLSJvcmRpbmFscyAoaW50ZWdlcnMpIG9yIGNoYXJhY3RlcnMgdG8gVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyBvciBOb25lLlxuIgotIkNoYXJhY3RlciBrZXlzIHdpbGwgYmUgdGhlbiBjb252ZXJ0ZWQgdG8gb3JkaW5hbHMuXG4iCi0iSWYgdGhlcmUgYXJlIHR3byBhcmd1bWVudHMsIHRoZXkgbXVzdCBiZSBzdHJpbmdzIG9mIGVxdWFsIGxlbmd0aCwgYW5kXG4iCi0iaW4gdGhlIHJlc3VsdGluZyBkaWN0aW9uYXJ5LCBlYWNoIGNoYXJhY3RlciBpbiB4IHdpbGwgYmUgbWFwcGVkIHRvIHRoZVxuIgotImNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiBJZiB0aGVyZSBpcyBhIHRoaXJkIGFyZ3VtZW50LCBpdFxuIgotIm11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG8gTm9uZSBpbiB0aGUgcmVzdWx0LiIpOwotCi0jZGVmaW5lIFVOSUNPREVfTUFLRVRSQU5TX01FVEhPRERFRiAgICBcCi0gICAgeyJtYWtldHJhbnMiLCAoUHlDRnVuY3Rpb24pdW5pY29kZV9tYWtldHJhbnMsIE1FVEhfVkFSQVJHU3xNRVRIX1NUQVRJQywgdW5pY29kZV9tYWtldHJhbnNfX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfbWFrZXRyYW5zX2ltcGwoUHlPYmplY3QgKngsIFB5T2JqZWN0ICp5LCBQeU9iamVjdCAqeik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX21ha2V0cmFucyh2b2lkICpudWxsLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqeDsKLSAgICBQeU9iamVjdCAqeSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnogPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJPfFVVOm1ha2V0cmFucyIsCi0gICAgICAgICZ4LCAmeSwgJnopKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZV9tYWtldHJhbnNfaW1wbCh4LCB5LCB6KTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9tYWtldHJhbnNfaW1wbChQeU9iamVjdCAqeCwgUHlPYmplY3QgKnksIFB5T2JqZWN0ICp6KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU2NmVkZjYzMGY3NzQzNmEgaW5wdXQ9N2JmYmY1MjlhMjkzYzZjNV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE5MjVjODk0NTJiZDU4ODEgaW5wdXQ9N2JmYmY1MjlhMjkzYzZjNV0qLwogewogICAgIFB5T2JqZWN0ICpuZXcgPSBOVUxMLCAqa2V5LCAqdmFsdWU7CiAgICAgUHlfc3NpemVfdCBpID0gMDsKQEAgLTEzMzY3LDggKzEzMzIwLDcgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMobmV3YnVmZmVyLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciwgMCwgd3JpdGVyLT5wb3MpOwotICAgICAgICBQeV9ERUNSRUYod3JpdGVyLT5idWZmZXIpOwotICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IG5ld2J1ZmZlcjsKKyAgICAgICAgUHlfU0VUUkVGKHdyaXRlci0+YnVmZmVyLCBuZXdidWZmZXIpOwogICAgIH0KICAgICBfUHlVbmljb2RlV3JpdGVyX1VwZGF0ZSh3cml0ZXIpOwogICAgIHJldHVybiAwOwpAQCAtMTM0MDYsNiArMTMzNTgsNyBAQAogICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc3RyKTsKICAgICBpZiAobWF4Y2hhciA+IHdyaXRlci0+bWF4Y2hhciB8fCBsZW4gPiB3cml0ZXItPnNpemUgLSB3cml0ZXItPnBvcykgewogICAgICAgICBpZiAod3JpdGVyLT5idWZmZXIgPT0gTlVMTCAmJiAhd3JpdGVyLT5vdmVyYWxsb2NhdGUpIHsKKyAgICAgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koc3RyLCAxKSk7CiAgICAgICAgICAgICB3cml0ZXItPnJlYWRvbmx5ID0gMTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihzdHIpOwogICAgICAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBzdHI7CkBAIC0xMzkxNCw4ICsxMzg2Nyw4IEBACiAgKiBDQVVUSU9OOiAgbywgeCBhbmQgWCBjb252ZXJzaW9ucyBvbiByZWd1bGFyIGludHMgY2FuIG5ldmVyCiAgKiBwcm9kdWNlIGEgJy0nIHNpZ24sIGJ1dCBjYW4gZm9yIFB5dGhvbidzIHVuYm91bmRlZCBpbnRzLgogICovCi1zdGF0aWMgUHlPYmplY3QqCi1mb3JtYXRsb25nKFB5T2JqZWN0ICp2YWwsIHN0cnVjdCB1bmljb2RlX2Zvcm1hdF9hcmdfdCAqYXJnKQorUHlPYmplY3QgKgorX1B5VW5pY29kZV9Gb3JtYXRMb25nKFB5T2JqZWN0ICp2YWwsIGludCBhbHQsIGludCBwcmVjLCBpbnQgdHlwZSkKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBjaGFyICpidWY7CkBAIC0xMzkyNSw4ICsxMzg3OCw2IEBACiAgICAgUHlfc3NpemVfdCBsbGVuOwogICAgIGludCBudW1kaWdpdHM7ICAgICAgLyogbGVuID09IG51bW5vbmRpZ2l0cyArIG51bWRpZ2l0cyAqLwogICAgIGludCBudW1ub25kaWdpdHMgPSAwOwotICAgIGludCBwcmVjID0gYXJnLT5wcmVjOwotICAgIGludCB0eXBlID0gYXJnLT5jaDsKIAogICAgIC8qIEF2b2lkIGV4Y2VlZGluZyBTU0laRV9UX01BWCAqLwogICAgIGlmIChwcmVjID4gSU5UX01BWC0zKSB7CkBAIC0xMzk3NSw3ICsxMzkyNiw3IEBACiAgICAgaWYgKGxsZW4gPiBJTlRfTUFYKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgdG9vIGxhcmdlIGluIF9QeUJ5dGVzX0Zvcm1hdExvbmciKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgdG9vIGxhcmdlIGluIF9QeVVuaWNvZGVfRm9ybWF0TG9uZyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbGVuID0gKGludClsbGVuOwpAQCAtMTM5ODUsNyArMTM5MzYsNyBAQAogICAgIGFzc2VydChudW1kaWdpdHMgPiAwKTsKIAogICAgIC8qIEdldCByaWQgb2YgYmFzZSBtYXJrZXIgdW5sZXNzIEZfQUxUICovCi0gICAgaWYgKCgoYXJnLT5mbGFncyAmIEZfQUxUKSA9PSAwICYmCisgICAgaWYgKCgoYWx0KSA9PSAwICYmCiAgICAgICAgICh0eXBlID09ICdvJyB8fCB0eXBlID09ICd4JyB8fCB0eXBlID09ICdYJykpKSB7CiAgICAgICAgIGFzc2VydChidWZbc2lnbl0gPT0gJzAnKTsKICAgICAgICAgYXNzZXJ0KGJ1ZltzaWduKzFdID09ICd4JyB8fCBidWZbc2lnbisxXSA9PSAnWCcgfHwKQEAgLTE0MDYwLDI0ICsxNDAxMSwxNCBAQAogICAgIGlmICghUHlOdW1iZXJfQ2hlY2sodikpCiAgICAgICAgIGdvdG8gd3Jvbmd0eXBlOwogCi0gICAgLyogbWFrZSBzdXJlIG51bWJlciBpcyBhIHR5cGUgb2YgaW50ZWdlciAqLwotICAgIC8qIGlmIG5vdCwgaXNzdWUgZGVwcmVjYXRpb24gd2FybmluZyBmb3Igbm93ICovCisgICAgLyogbWFrZSBzdXJlIG51bWJlciBpcyBhIHR5cGUgb2YgaW50ZWdlciBmb3IgbywgeCwgYW5kIFggKi8KICAgICBpZiAoIVB5TG9uZ19DaGVjayh2KSkgewogICAgICAgICBpZiAodHlwZSA9PSAnbycgfHwgdHlwZSA9PSAneCcgfHwgdHlwZSA9PSAnWCcpIHsKICAgICAgICAgICAgIGlvYmogPSBQeU51bWJlcl9JbmRleCh2KTsKICAgICAgICAgICAgIGlmIChpb2JqID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF1dG9tYXRpYyBpbnQgY29udmVyc2lvbnMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpb2JqID0gUHlOdW1iZXJfTG9uZyh2KTsKLSAgICAgICAgICAgICAgICBpZiAoaW9iaiA9PSBOVUxMICkgewotICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byB3cm9uZ3R5cGU7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgICAgICAgICAgICAgZ290byB3cm9uZ3R5cGU7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpAQCAtMTQxMzAsNyArMTQwNzEsNyBAQAogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKLSAgICByZXMgPSBmb3JtYXRsb25nKGlvYmosIGFyZyk7CisgICAgcmVzID0gX1B5VW5pY29kZV9Gb3JtYXRMb25nKGlvYmosIGFyZy0+ZmxhZ3MgJiBGX0FMVCwgYXJnLT5wcmVjLCB0eXBlKTsKICAgICBQeV9ERUNSRUYoaW9iaik7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CkBAIC0xNDEzOCwxMCArMTQwNzksMjMgQEAKICAgICByZXR1cm4gMDsKIAogd3Jvbmd0eXBlOgotICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiJSUlYyBmb3JtYXQ6IGEgbnVtYmVyIGlzIHJlcXVpcmVkLCAiCi0gICAgICAgICAgICAibm90ICUuMjAwcyIsCi0gICAgICAgICAgICB0eXBlLCBQeV9UWVBFKHYpLT50cF9uYW1lKTsKKyAgICBzd2l0Y2godHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgJ28nOgorICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgY2FzZSAnWCc6CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiJSUlYyBmb3JtYXQ6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQsICIKKyAgICAgICAgICAgICAgICAgICAgIm5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICB0eXBlLCBQeV9UWVBFKHYpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIiUlJWMgZm9ybWF0OiBhIG51bWJlciBpcyByZXF1aXJlZCwgIgorICAgICAgICAgICAgICAgICAgICAibm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgIHR5cGUsIFB5X1RZUEUodiktPnRwX25hbWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIHJldHVybiAtMTsKIH0KIApAQCAtMTQxNTksMjIgKzE0MTEzLDEwIEBACiAgICAgICAgIFB5T2JqZWN0ICppb2JqOwogICAgICAgICBsb25nIHg7CiAgICAgICAgIC8qIG1ha2Ugc3VyZSBudW1iZXIgaXMgYSB0eXBlIG9mIGludGVnZXIgKi8KLSAgICAgICAgLyogaWYgbm90LCBpc3N1ZSBkZXByZWNhdGlvbiB3YXJuaW5nIGZvciBub3cgKi8KICAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodikpIHsKICAgICAgICAgICAgIGlvYmogPSBQeU51bWJlcl9JbmRleCh2KTsKICAgICAgICAgICAgIGlmIChpb2JqID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF1dG9tYXRpYyBpbnQgY29udmVyc2lvbnMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpb2JqID0gUHlOdW1iZXJfTG9uZyh2KTsKLSAgICAgICAgICAgICAgICBpZiAoaW9iaiA9PSBOVUxMICkgewotICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHYgPSBpb2JqOwogICAgICAgICAgICAgUHlfREVDUkVGKGlvYmopOwpAQCAtMTQyNDksOCArMTQxOTEsOCBAQAogICAgICAgICBpZiAoa2V5ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGlmIChjdHgtPmFyZ3Nfb3duZWQpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihjdHgtPmFyZ3MpOwogICAgICAgICAgICAgY3R4LT5hcmdzX293bmVkID0gMDsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihjdHgtPmFyZ3MpOwogICAgICAgICB9CiAgICAgICAgIGN0eC0+YXJncyA9IFB5T2JqZWN0X0dldEl0ZW0oY3R4LT5kaWN0LCBrZXkpOwogICAgICAgICBQeV9ERUNSRUYoa2V5KTsKQEAgLTE1MDA2LDEzICsxNDk0OCw2IEBACiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlGb3JtYXR0ZXJJdGVyX1R5cGUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBmb3JtYXR0ZXIgaXRlciB0eXBlIik7CiAKLSNpZmRlZiBIQVZFX01CQ1MKLSAgICB3aW52ZXIuZHdPU1ZlcnNpb25JbmZvU2l6ZSA9IHNpemVvZih3aW52ZXIpOwotICAgIGlmICghR2V0VmVyc2lvbkV4KChPU1ZFUlNJT05JTkZPKikmd2ludmVyKSkgewotICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSNlbmRpZgogICAgIHJldHVybiAwOwogfQogCkBAIC0xNTA3MSw4ICsxNTAwNiw3IEBACiAKICAgICBpZiAodCkgewogICAgICAgICBQeV9JTkNSRUYodCk7Ci0gICAgICAgIFB5X0RFQ1JFRigqcCk7Ci0gICAgICAgICpwID0gdDsKKyAgICAgICAgUHlfU0VUUkVGKCpwLCB0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTU0MjgsNyArMTUzNjIsNyBAQAogICAgIGlmICh1ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIC8qIEVuc3VyZSB3ZSB3b24ndCBvdmVyZmxvdyB0aGUgc2l6ZS4gKi8KLSAgICBpZiAobGVuID4gKChQWV9TU0laRV9UX01BWCAvIHNpemVvZihQeV9VTklDT0RFKSkgLSAxKSkgeworICAgIGlmIChsZW4gPiAoKFBZX1NTSVpFX1RfTUFYIC8gKFB5X3NzaXplX3Qpc2l6ZW9mKFB5X1VOSUNPREUpKSAtIDEpKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaCBiL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaAppbmRleCAxZmRjMDkyLi43Yzc4MGI2IDEwMDY0NAotLS0gYS9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmgKKysrIGIvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oCkBAIC04MiwyNSArODIsMzIgQEAKICAgICB7LTIwNSwgMCwgLTIwNSwgMCwgMCwgOTk5M30sCiAgICAgey0yMDIsIDAsIC0yMDIsIDAsIDAsIDk5OTN9LAogICAgIHstMjAzLCAwLCAtMjAzLCAwLCAwLCA5OTkzfSwKKyAgICB7NDIzMTksIDAsIDQyMzE5LCAwLCAwLCA5OTkzfSwKKyAgICB7NDIzMTUsIDAsIDQyMzE1LCAwLCAwLCA5OTkzfSwKICAgICB7LTIwNywgMCwgLTIwNywgMCwgMCwgOTk5M30sCiAgICAgezQyMjgwLCAwLCA0MjI4MCwgMCwgMCwgOTk5M30sCiAgICAgezQyMzA4LCAwLCA0MjMwOCwgMCwgMCwgOTk5M30sCiAgICAgey0yMDksIDAsIC0yMDksIDAsIDAsIDk5OTN9LAogICAgIHstMjExLCAwLCAtMjExLCAwLCAwLCA5OTkzfSwKICAgICB7MTA3NDMsIDAsIDEwNzQzLCAwLCAwLCA5OTkzfSwKKyAgICB7NDIzMDUsIDAsIDQyMzA1LCAwLCAwLCA5OTkzfSwKICAgICB7MTA3NDksIDAsIDEwNzQ5LCAwLCAwLCA5OTkzfSwKICAgICB7LTIxMywgMCwgLTIxMywgMCwgMCwgOTk5M30sCiAgICAgey0yMTQsIDAsIC0yMTQsIDAsIDAsIDk5OTN9LAogICAgIHsxMDcyNywgMCwgMTA3MjcsIDAsIDAsIDk5OTN9LAogICAgIHstMjE4LCAwLCAtMjE4LCAwLCAwLCA5OTkzfSwKKyAgICB7NDIyODIsIDAsIDQyMjgyLCAwLCAwLCA5OTkzfSwKICAgICB7LTY5LCAwLCAtNjksIDAsIDAsIDk5OTN9LAogICAgIHstMjE3LCAwLCAtMjE3LCAwLCAwLCA5OTkzfSwKICAgICB7LTcxLCAwLCAtNzEsIDAsIDAsIDk5OTN9LAogICAgIHstMjE5LCAwLCAtMjE5LCAwLCAwLCA5OTkzfSwKKyAgICB7NDIyNjEsIDAsIDQyMjYxLCAwLCAwLCA5OTkzfSwKKyAgICB7NDIyNTgsIDAsIDQyMjU4LCAwLCAwLCA5OTkzfSwKICAgICB7MCwgMCwgMCwgMCwgMCwgMTQwODl9LAogICAgIHswLCAwLCAwLCAwLCAwLCA1ODg5fSwKICAgICB7MTY3NzcyNDQsIDE3ODI1ODE4LCAxNjc3NzI0NCwgMCwgMCwgMzAyMTZ9LAogICAgIHswLCAwLCAwLCAwLCAwLCAxMzMyMX0sCisgICAgezAsIDExNiwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHswLCAzOCwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHswLCAzNywgMCwgMCwgMCwgMTAxMTN9LAogICAgIHswLCA2NCwgMCwgMCwgMCwgMTAxMTN9LApAQCAtMTIyLDYgKzEyOSw3IEBACiAgICAgezE2Nzc3Mjc2LCAxNzgyNTg1MCwgMTY3NzcyNzYsIDAsIDAsIDI2Mzc3fSwKICAgICB7MTY3NzcyNzksIDE3ODI1ODUzLCAxNjc3NzI3OSwgMCwgMCwgMjYzNzd9LAogICAgIHs3LCAwLCA3LCAwLCAwLCA5OTkzfSwKKyAgICB7LTExNiwgMCwgLTExNiwgMCwgMCwgOTk5M30sCiAgICAgezAsIC02MCwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHsxNjc3NzI4MiwgMTc4MjU4NTYsIDE2Nzc3MjgyLCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC03LCAwLCAwLCAwLCAxMDExM30sCkBAIC0xNDMsMTEwICsxNTEsMjAyIEBACiAgICAgezAsIDAsIDAsIDAsIDcsIDM1ODh9LAogICAgIHswLCAwLCAwLCAwLCA4LCAzNTg4fSwKICAgICB7MCwgMCwgMCwgMCwgOSwgMzU4OH0sCisgICAgezE2Nzc3MjkyLCAxNzgyNTg2NiwgMTY3NzcyOTIsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzcyOTUsIDE3ODI1ODY5LCAxNjc3NzI5NSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzI5OCwgMTc4MjU4NzIsIDE2Nzc3Mjk4LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzAxLCAxNzgyNTg3NSwgMTY3NzczMDEsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczMDQsIDE3ODI1ODc4LCAxNjc3NzMwNCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzMwNywgMTc4MjU4ODEsIDE2Nzc3MzA3LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzEwLCAxNzgyNTg4NCwgMTY3NzczMTAsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczMTMsIDE3ODI1ODg3LCAxNjc3NzMxMywgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzMxNiwgMTc4MjU4OTAsIDE2Nzc3MzE2LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzE5LCAxNzgyNTg5MywgMTY3NzczMTksIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczMjIsIDE3ODI1ODk2LCAxNjc3NzMyMiwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzMyNSwgMTc4MjU4OTksIDE2Nzc3MzI1LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzI4LCAxNzgyNTkwMiwgMTY3NzczMjgsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczMzEsIDE3ODI1OTA1LCAxNjc3NzMzMSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzMzNCwgMTc4MjU5MDgsIDE2Nzc3MzM0LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzM3LCAxNzgyNTkxMSwgMTY3NzczMzcsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczNDAsIDE3ODI1OTE0LCAxNjc3NzM0MCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM0MywgMTc4MjU5MTcsIDE2Nzc3MzQzLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzQ2LCAxNzgyNTkyMCwgMTY3NzczNDYsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczNDksIDE3ODI1OTIzLCAxNjc3NzM0OSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM1MiwgMTc4MjU5MjYsIDE2Nzc3MzUyLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzU1LCAxNzgyNTkyOSwgMTY3NzczNTUsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczNTgsIDE3ODI1OTMyLCAxNjc3NzM1OCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM2MSwgMTc4MjU5MzUsIDE2Nzc3MzYxLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzY0LCAxNzgyNTkzOCwgMTY3NzczNjQsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczNjcsIDE3ODI1OTQxLCAxNjc3NzM2NywgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM3MCwgMTc4MjU5NDQsIDE2Nzc3MzcwLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzczLCAxNzgyNTk0NywgMTY3NzczNzMsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczNzYsIDE3ODI1OTUwLCAxNjc3NzM3NiwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM3OSwgMTc4MjU5NTMsIDE2Nzc3Mzc5LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzgyLCAxNzgyNTk1NiwgMTY3NzczODIsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczODUsIDE3ODI1OTU5LCAxNjc3NzM4NSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM4OCwgMTc4MjU5NjIsIDE2Nzc3Mzg4LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzkxLCAxNzgyNTk2NSwgMTY3NzczOTEsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczOTQsIDE3ODI1OTY4LCAxNjc3NzM5NCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM5NywgMTc4MjU5NzEsIDE2Nzc3Mzk3LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDAwLCAxNzgyNTk3NCwgMTY3Nzc0MDAsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0MDMsIDE3ODI1OTc3LCAxNjc3NzQwMywgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQwNiwgMTc4MjU5ODAsIDE2Nzc3NDA2LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDA5LCAxNzgyNTk4MywgMTY3Nzc0MDksIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0MTIsIDE3ODI1OTg2LCAxNjc3NzQxMiwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQxNSwgMTc4MjU5ODksIDE2Nzc3NDE1LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDE4LCAxNzgyNTk5MiwgMTY3Nzc0MTgsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0MjEsIDE3ODI1OTk1LCAxNjc3NzQyMSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQyNCwgMTc4MjU5OTgsIDE2Nzc3NDI0LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDI3LCAxNzgyNjAwMSwgMTY3Nzc0MjcsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0MzAsIDE3ODI2MDA0LCAxNjc3NzQzMCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQzMywgMTc4MjYwMDcsIDE2Nzc3NDMzLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDM2LCAxNzgyNjAxMCwgMTY3Nzc0MzYsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0MzksIDE3ODI2MDEzLCAxNjc3NzQzOSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQ0MiwgMTc4MjYwMTYsIDE2Nzc3NDQyLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDQ1LCAxNzgyNjAxOSwgMTY3Nzc0NDUsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0NDgsIDE3ODI2MDIyLCAxNjc3NzQ0OCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQ1MSwgMTc4MjYwMjUsIDE2Nzc3NDUxLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDU0LCAxNzgyNjAyOCwgMTY3Nzc0NTQsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0NTcsIDE3ODI2MDMxLCAxNjc3NzQ1NywgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQ2MCwgMTc4MjYwMzQsIDE2Nzc3NDYwLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDYzLCAxNzgyNjAzNywgMTY3Nzc0NjMsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0NjYsIDE3ODI2MDQwLCAxNjc3NzQ2NiwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQ2OSwgMTc4MjYwNDMsIDE2Nzc3NDY5LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDcyLCAxNzgyNjA0NiwgMTY3Nzc0NzIsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0NzUsIDE3ODI2MDQ5LCAxNjc3NzQ3NSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQ3OCwgMTc4MjYwNTIsIDE2Nzc3NDc4LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDgxLCAxNzgyNjA1NSwgMTY3Nzc0ODEsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0ODQsIDE3ODI2MDU4LCAxNjc3NzQ4NCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQ4NywgMTc4MjYwNjEsIDE2Nzc3NDg3LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDkwLCAxNzgyNjA2NCwgMTY3Nzc0OTAsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0OTMsIDE3ODI2MDY3LCAxNjc3NzQ5MywgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQ5NiwgMTc4MjYwNzAsIDE2Nzc3NDk2LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDk5LCAxNzgyNjA3MywgMTY3Nzc0OTksIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc1MDIsIDE3ODI2MDc2LCAxNjc3NzUwMiwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzUwNSwgMTc4MjYwNzksIDE2Nzc3NTA1LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NTA4LCAxNzgyNjA4MiwgMTY3Nzc1MDgsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc1MTEsIDE3ODI2MDg1LCAxNjc3NzUxMSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzUxNCwgMTc4MjYwODgsIDE2Nzc3NTE0LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NTE3LCAxNzgyNjA5MSwgMTY3Nzc1MTcsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc1MjAsIDE3ODI2MDk0LCAxNjc3NzUyMCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzUyMywgMTc4MjYwOTcsIDE2Nzc3NTIzLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NTI2LCAxNzgyNjEwMCwgMTY3Nzc1MjYsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc1MjksIDE3ODI2MTAzLCAxNjc3NzUyOSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzUzMiwgMTc4MjYxMDYsIDE2Nzc3NTMyLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NTM1LCAxNzgyNjEwOSwgMTY3Nzc1MzUsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc1MzgsIDE3ODI2MTEyLCAxNjc3NzUzOCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzU0MSwgMTc4MjYxMTUsIDE2Nzc3NTQxLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NTQ0LCAxNzgyNjExOCwgMTY3Nzc1NDQsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc1NDcsIDE3ODI2MTIxLCAxNjc3NzU0NywgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzU1MCwgMTc4MjYxMjQsIDE2Nzc3NTUwLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTUzLCAxNzgyNjEyNywgMTY3Nzc1NTMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1NTYsIDE3ODI2MTMwLCAxNjc3NzU1NiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU1OSwgMTc4MjYxMzMsIDE2Nzc3NTU5LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTYyLCAxNzgyNjEzNiwgMTY3Nzc1NjIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1NjUsIDE3ODI2MTM5LCAxNjc3NzU2NSwgMCwgMCwgMjYzNzd9LAogICAgIHswLCAwLCAwLCAwLCAwLCAzODQwfSwKICAgICB7MzUzMzIsIDAsIDM1MzMyLCAwLCAwLCA5OTkzfSwKICAgICB7MzgxNCwgMCwgMzgxNCwgMCwgMCwgOTk5M30sCi0gICAgezMzNTU0NTA5LCAxODg3NDQ0MiwgMzM1NTQ1MDksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ1MTQsIDE4ODc0NDQ3LCAzMzU1NDUxNCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDUxOSwgMTg4NzQ0NTIsIDMzNTU0NTE5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NTI0LCAxODg3NDQ1NywgMzM1NTQ1MjQsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ1MjksIDE4ODc0NDYyLCAzMzU1NDUyOSwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3NzMxNywgMTc4MjU4OTEsIDE2Nzc3MzE3LCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc3MzIxLCAxODg3NDQ3MCwgMTY3NzczMjEsIDAsIDAsIDI2NDk3fSwKKyAgICB7MzM1NTQ3ODUsIDE4ODc0NzE4LCAzMzU1NDc4NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDc5MCwgMTg4NzQ3MjMsIDMzNTU0NzkwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0Nzk1LCAxODg3NDcyOCwgMzM1NTQ3OTUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4MDAsIDE4ODc0NzMzLCAzMzU1NDgwMCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDgwNSwgMTg4NzQ3MzgsIDMzNTU0ODA1LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTkzLCAxNzgyNjE2NywgMTY3Nzc1OTMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1OTcsIDE4ODc0NzQ2LCAxNjc3NzU5NywgMCwgMCwgMjY0OTd9LAogICAgIHs4LCAwLCA4LCAwLCAwLCA5OTkzfSwKICAgICB7MCwgLTgsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTQ1NDEsIDE4ODc0NDc0LCAzMzU1NDU0MSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMTc2MywgMTk5MjMwNTUsIDUwMzMxNzYzLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMxNzcwLCAxOTkyMzA2MiwgNTAzMzE3NzAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzE3NzcsIDE5OTIzMDY5LCA1MDMzMTc3NywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDgxNywgMTg4NzQ3NTAsIDMzNTU0ODE3LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMDM5LCAxOTkyMzMzMSwgNTAzMzIwMzksIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIwNDYsIDE5OTIzMzM4LCA1MDMzMjA0NiwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjA1MywgMTk5MjMzNDUsIDUwMzMyMDUzLCAwLCAwLCAyNjM3N30sCiAgICAgezc0LCAwLCA3NCwgMCwgMCwgOTk5M30sCiAgICAgezg2LCAwLCA4NiwgMCwgMCwgOTk5M30sCiAgICAgezEwMCwgMCwgMTAwLCAwLCAwLCA5OTkzfSwKICAgICB7MTI4LCAwLCAxMjgsIDAsIDAsIDk5OTN9LAogICAgIHsxMTIsIDAsIDExMiwgMCwgMCwgOTk5M30sCiAgICAgezEyNiwgMCwgMTI2LCAwLCAwLCA5OTkzfSwKLSAgICB7MzM1NTQ1NjcsIDE4ODc0NTAwLCAxNjc3NzM1MywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDU3MywgMTg4NzQ1MDYsIDE2Nzc3MzU5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NTc5LCAxODg3NDUxMiwgMTY3NzczNjUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ1ODUsIDE4ODc0NTE4LCAxNjc3NzM3MSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDU5MSwgMTg4NzQ1MjQsIDE2Nzc3Mzc3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NTk3LCAxODg3NDUzMCwgMTY3NzczODMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ2MDMsIDE4ODc0NTM2LCAxNjc3NzM4OSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDYwOSwgMTg4NzQ1NDIsIDE2Nzc3Mzk1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NjE1LCAxODg3NDU0OCwgMTY3Nzc0MDEsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ2MjEsIDE4ODc0NTU0LCAxNjc3NzQwNywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDYyNywgMTg4NzQ1NjAsIDE2Nzc3NDEzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0NjMzLCAxODg3NDU2NiwgMTY3Nzc0MTksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ2MzksIDE4ODc0NTcyLCAxNjc3NzQyNSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDY0NSwgMTg4NzQ1NzgsIDE2Nzc3NDMxLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0NjUxLCAxODg3NDU4NCwgMTY3Nzc0MzcsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ2NTcsIDE4ODc0NTkwLCAxNjc3NzQ0MywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDY2MywgMTg4NzQ1OTYsIDE2Nzc3NDQ5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NjY5LCAxODg3NDYwMiwgMTY3Nzc0NTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ2NzUsIDE4ODc0NjA4LCAxNjc3NzQ2MSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDY4MSwgMTg4NzQ2MTQsIDE2Nzc3NDY3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0Njg3LCAxODg3NDYyMCwgMTY3Nzc0NzMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ2OTMsIDE4ODc0NjI2LCAxNjc3NzQ3OSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDY5OSwgMTg4NzQ2MzIsIDE2Nzc3NDg1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NzA1LCAxODg3NDYzOCwgMTY3Nzc0OTEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ3MTEsIDE4ODc0NjQ0LCAxNjc3NzQ5NywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDcxNywgMTg4NzQ2NTAsIDE2Nzc3NTAzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0NzIzLCAxODg3NDY1NiwgMTY3Nzc1MDksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ3MjksIDE4ODc0NjYyLCAxNjc3NzUxNSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDczNSwgMTg4NzQ2NjgsIDE2Nzc3NTIxLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0NzQxLCAxODg3NDY3NCwgMTY3Nzc1MjcsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ3NDcsIDE4ODc0NjgwLCAxNjc3NzUzMywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDc1MywgMTg4NzQ2ODYsIDE2Nzc3NTM5LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0NzU5LCAxODg3NDY5MiwgMTY3Nzc1NDUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ3NjUsIDE4ODc0Njk4LCAxNjc3NzU1MSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDc3MSwgMTg4NzQ3MDQsIDE2Nzc3NTU3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0Nzc3LCAxODg3NDcxMCwgMTY3Nzc1NjMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ3ODMsIDE4ODc0NzE2LCAxNjc3NzU2OSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDc4OSwgMTg4NzQ3MjIsIDE2Nzc3NTc1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0Nzk1LCAxODg3NDcyOCwgMTY3Nzc1ODEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4MDEsIDE4ODc0NzM0LCAxNjc3NzU4NywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDgwNywgMTg4NzQ3NDAsIDE2Nzc3NTkzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0ODEzLCAxODg3NDc0NiwgMTY3Nzc1OTksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ4MTksIDE4ODc0NzUyLCAxNjc3NzYwNSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDgyNSwgMTg4NzQ3NTgsIDE2Nzc3NjExLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0ODMxLCAxODg3NDc2NCwgMTY3Nzc2MTcsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ4MzcsIDE4ODc0NzcwLCAxNjc3NzYyMywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDg0MywgMTg4NzQ3NzYsIDE2Nzc3NjI5LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0ODQ5LCAxODg3NDc4MiwgMTY3Nzc2MzUsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ4NTUsIDE4ODc0Nzg4LCAzMzU1NDg1NywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg2MiwgMTg4NzQ3OTUsIDE2Nzc3NjQ4LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODY4LCAxODg3NDgwMSwgMzM1NTQ4NzAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4NzUsIDE4ODc0ODA4LCAzMzU1NDg3NSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjA5NywgMTk5MjMzODksIDUwMzMyMTAwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODQzLCAxODg3NDc3NiwgMTY3Nzc2MjksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NDksIDE4ODc0NzgyLCAxNjc3NzYzNSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg1NSwgMTg4NzQ3ODgsIDE2Nzc3NjQxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODYxLCAxODg3NDc5NCwgMTY3Nzc2NDcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NjcsIDE4ODc0ODAwLCAxNjc3NzY1MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg3MywgMTg4NzQ4MDYsIDE2Nzc3NjU5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODc5LCAxODg3NDgxMiwgMTY3Nzc2NjUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4ODUsIDE4ODc0ODE4LCAxNjc3NzY3MSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg5MSwgMTg4NzQ4MjQsIDE2Nzc3Njc3LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0ODk3LCAxODg3NDgzMCwgMTY3Nzc2ODMsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5MDMsIDE4ODc0ODM2LCAxNjc3NzY4OSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDkwOSwgMTg4NzQ4NDIsIDE2Nzc3Njk1LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTE1LCAxODg3NDg0OCwgMTY3Nzc3MDEsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5MjEsIDE4ODc0ODU0LCAxNjc3NzcwNywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDkyNywgMTg4NzQ4NjAsIDE2Nzc3NzEzLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTMzLCAxODg3NDg2NiwgMTY3Nzc3MTksIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5MzksIDE4ODc0ODcyLCAxNjc3NzcyNSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk0NSwgMTg4NzQ4NzgsIDE2Nzc3NzMxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTUxLCAxODg3NDg4NCwgMTY3Nzc3MzcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5NTcsIDE4ODc0ODkwLCAxNjc3Nzc0MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk2MywgMTg4NzQ4OTYsIDE2Nzc3NzQ5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTY5LCAxODg3NDkwMiwgMTY3Nzc3NTUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5NzUsIDE4ODc0OTA4LCAxNjc3Nzc2MSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk4MSwgMTg4NzQ5MTQsIDE2Nzc3NzY3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTg3LCAxODg3NDkyMCwgMTY3Nzc3NzMsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5OTMsIDE4ODc0OTI2LCAxNjc3Nzc3OSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDk5OSwgMTg4NzQ5MzIsIDE2Nzc3Nzg1LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDA1LCAxODg3NDkzOCwgMTY3Nzc3OTEsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwMTEsIDE4ODc0OTQ0LCAxNjc3Nzc5NywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTAxNywgMTg4NzQ5NTAsIDE2Nzc3ODAzLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDIzLCAxODg3NDk1NiwgMTY3Nzc4MDksIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwMjksIDE4ODc0OTYyLCAxNjc3NzgxNSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTAzNSwgMTg4NzQ5NjgsIDE2Nzc3ODIxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDQxLCAxODg3NDk3NCwgMTY3Nzc4MjcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwNDcsIDE4ODc0OTgwLCAxNjc3NzgzMywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA1MywgMTg4NzQ5ODYsIDE2Nzc3ODM5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDU5LCAxODg3NDk5MiwgMTY3Nzc4NDUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwNjUsIDE4ODc0OTk4LCAxNjc3Nzg1MSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA3MSwgMTg4NzUwMDQsIDE2Nzc3ODU3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDc3LCAxODg3NTAxMCwgMTY3Nzc4NjMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwODMsIDE4ODc1MDE2LCAxNjc3Nzg2OSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTA4OSwgMTg4NzUwMjIsIDE2Nzc3ODc1LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDk1LCAxODg3NTAyOCwgMTY3Nzc4ODEsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxMDEsIDE4ODc1MDM0LCAxNjc3Nzg4NywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTEwNywgMTg4NzUwNDAsIDE2Nzc3ODkzLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTEzLCAxODg3NTA0NiwgMTY3Nzc4OTksIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxMTksIDE4ODc1MDUyLCAxNjc3NzkwNSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTEyNSwgMTg4NzUwNTgsIDE2Nzc3OTExLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTMxLCAxODg3NTA2NCwgMzM1NTUxMzMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxMzgsIDE4ODc1MDcxLCAxNjc3NzkyNCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTE0NCwgMTg4NzUwNzcsIDMzNTU1MTQ2LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTUxLCAxODg3NTA4NCwgMzM1NTUxNTEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIzNzMsIDE5OTIzNjY1LCA1MDMzMjM3NiwgMCwgMCwgMjYzNzd9LAogICAgIHswLCAtNzQsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTQ4OTAsIDE4ODc0ODIzLCAxNjc3NzY3NiwgMCwgMCwgMjY0MzN9LAotICAgIHsxNjc3NzY3OSwgMTc4MjYyNTMsIDE2Nzc3Njc5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODk5LCAxODg3NDgzMiwgMzM1NTQ5MDEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5MDYsIDE4ODc0ODM5LCAxNjc3NzY5MiwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDkxMiwgMTg4NzQ4NDUsIDMzNTU0OTE0LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTE5LCAxODg3NDg1MiwgMzM1NTQ5MTksIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzIxNDEsIDE5OTIzNDMzLCA1MDMzMjE0NCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTE2NiwgMTg4NzUwOTksIDE2Nzc3OTUyLCAwLCAwLCAyNjQzM30sCisgICAgezE2Nzc3OTU1LCAxNzgyNjUyOSwgMTY3Nzc5NTUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxNzUsIDE4ODc1MTA4LCAzMzU1NTE3NywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTE4MiwgMTg4NzUxMTUsIDE2Nzc3OTY4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTg4LCAxODg3NTEyMSwgMzM1NTUxOTAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxOTUsIDE4ODc1MTI4LCAzMzU1NTE5NSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQxNywgMTk5MjM3MDksIDUwMzMyNDIwLCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC04NiwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHszMzU1NDkzNCwgMTg4NzQ4NjcsIDE2Nzc3NzIwLCAwLCAwLCAyNjQzM30sCi0gICAgezUwMzMyMTU3LCAxOTkyMzQ0OSwgNTAzMzIxNTcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzIxNjQsIDE5OTIzNDU2LCA1MDMzMjE2NCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk1NCwgMTg4NzQ4ODcsIDMzNTU0OTU0LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyMTc2LCAxOTkyMzQ2OCwgNTAzMzIxNzYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyMTAsIDE4ODc1MTQzLCAxNjc3Nzk5NiwgMCwgMCwgMjY0MzN9LAorICAgIHs1MDMzMjQzMywgMTk5MjM3MjUsIDUwMzMyNDMzLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDQwLCAxOTkyMzczMiwgNTAzMzI0NDAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyMzAsIDE4ODc1MTYzLCAzMzU1NTIzMCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQ1MiwgMTk5MjM3NDQsIDUwMzMyNDUyLCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC0xMDAsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7NTAzMzIxODMsIDE5OTIzNDc1LCA1MDMzMjE4MywgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjE5MCwgMTk5MjM0ODIsIDUwMzMyMTkwLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTgwLCAxODg3NDkxMywgMzM1NTQ5ODAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5ODUsIDE4ODc0OTE4LCAzMzU1NDk4NSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjIwNywgMTk5MjM0OTksIDUwMzMyMjA3LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDU5LCAxOTkyMzc1MSwgNTAzMzI0NTksIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0NjYsIDE5OTIzNzU4LCA1MDMzMjQ2NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTI1NiwgMTg4NzUxODksIDMzNTU1MjU2LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjYxLCAxODg3NTE5NCwgMzM1NTUyNjEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0ODMsIDE5OTIzNzc1LCA1MDMzMjQ4MywgMCwgMCwgMjYzNzd9LAogICAgIHswLCAtMTEyLCAwLCAwLCAwLCAxMDExM30sCi0gICAgezMzNTU0OTk3LCAxODg3NDkzMCwgMzM1NTQ5OTksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwMDQsIDE4ODc0OTM3LCAxNjc3Nzc5MCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTAxMCwgMTg4NzQ5NDMsIDMzNTU1MDEyLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDE3LCAxODg3NDk1MCwgMzM1NTUwMTcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzIyMzksIDE5OTIzNTMxLCA1MDMzMjI0MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTI3MywgMTg4NzUyMDYsIDMzNTU1Mjc1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjgwLCAxODg3NTIxMywgMTY3NzgwNjYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyODYsIDE4ODc1MjE5LCAzMzU1NTI4OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTI5MywgMTg4NzUyMjYsIDMzNTU1MjkzLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNTE1LCAxOTkyMzgwNywgNTAzMzI1MTgsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTEyOCwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHswLCAtMTI2LCAwLCAwLCAwLCAxMDExM30sCi0gICAgezMzNTU1MDMyLCAxODg3NDk2NSwgMTY3Nzc4MTgsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUzMDgsIDE4ODc1MjQxLCAxNjc3ODA5NCwgMCwgMCwgMjY0MzN9LAogICAgIHswLCAwLCAwLCAwLCAwLCAzMDc2fSwKICAgICB7MCwgMCwgMCwgMCwgNCwgMzA3Nn0sCiAgICAgezAsIDAsIDAsIDAsIDUsIDMwNzZ9LApAQCAtMjgwLDIyICszODAsMTExIEBACiAgICAgezAsIC0zNTMzMiwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHswLCAtNDIyODAsIDAsIDAsIDAsIDEwMTEzfSwKICAgICB7MCwgLTQyMzA4LCAwLCAwLCAwLCAxMDExM30sCi0gICAgezMzNTU1MDM4LCAxODg3NDk3MSwgMzM1NTUwNDAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwNDUsIDE4ODc0OTc4LCAzMzU1NTA0NywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA1MiwgMTg4NzQ5ODUsIDMzNTU1MDU0LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyMjc2LCAxOTkyMzU2OCwgNTAzMzIyNzksIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzIyODYsIDE5OTIzNTc4LCA1MDMzMjI4OSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA3OSwgMTg4NzUwMTIsIDMzNTU1MDgxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDg2LCAxODg3NTAxOSwgMzM1NTUwODgsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwOTMsIDE4ODc1MDI2LCAzMzU1NTA5NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTEwMCwgMTg4NzUwMzMsIDMzNTU1MTAyLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTA3LCAxODg3NTA0MCwgMzM1NTUxMDksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxMTQsIDE4ODc1MDQ3LCAzMzU1NTExNiwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTEyMSwgMTg4NzUwNTQsIDMzNTU1MTIzLCAwLCAwLCAyNjM3N30sCisgICAgezAsIC00MjMxOSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtNDIzMTUsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTQyMzA1LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC00MjI1OCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtNDIyODIsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTQyMjYxLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDkyOCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHstOTI4LCAwLCAtOTI4LCAwLCAwLCA5OTkzfSwKKyAgICB7MTY3NzgwOTcsIDE3ODI2NjcxLCAxNjc3ODA5NywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODEwMCwgMTc4MjY2NzQsIDE2Nzc4MTAwLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTAzLCAxNzgyNjY3NywgMTY3NzgxMDMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxMDYsIDE3ODI2NjgwLCAxNjc3ODEwNiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODEwOSwgMTc4MjY2ODMsIDE2Nzc4MTA5LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTEyLCAxNzgyNjY4NiwgMTY3NzgxMTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxMTUsIDE3ODI2Njg5LCAxNjc3ODExNSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODExOCwgMTc4MjY2OTIsIDE2Nzc4MTE4LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTIxLCAxNzgyNjY5NSwgMTY3NzgxMjEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxMjQsIDE3ODI2Njk4LCAxNjc3ODEyNCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODEyNywgMTc4MjY3MDEsIDE2Nzc4MTI3LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTMwLCAxNzgyNjcwNCwgMTY3NzgxMzAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxMzMsIDE3ODI2NzA3LCAxNjc3ODEzMywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODEzNiwgMTc4MjY3MTAsIDE2Nzc4MTM2LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTM5LCAxNzgyNjcxMywgMTY3NzgxMzksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxNDIsIDE3ODI2NzE2LCAxNjc3ODE0MiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE0NSwgMTc4MjY3MTksIDE2Nzc4MTQ1LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTQ4LCAxNzgyNjcyMiwgMTY3NzgxNDgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxNTEsIDE3ODI2NzI1LCAxNjc3ODE1MSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE1NCwgMTc4MjY3MjgsIDE2Nzc4MTU0LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTU3LCAxNzgyNjczMSwgMTY3NzgxNTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxNjAsIDE3ODI2NzM0LCAxNjc3ODE2MCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE2MywgMTc4MjY3MzcsIDE2Nzc4MTYzLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTY2LCAxNzgyNjc0MCwgMTY3NzgxNjYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxNjksIDE3ODI2NzQzLCAxNjc3ODE2OSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE3MiwgMTc4MjY3NDYsIDE2Nzc4MTcyLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTc1LCAxNzgyNjc0OSwgMTY3NzgxNzUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxNzgsIDE3ODI2NzUyLCAxNjc3ODE3OCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE4MSwgMTc4MjY3NTUsIDE2Nzc4MTgxLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTg0LCAxNzgyNjc1OCwgMTY3NzgxODQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxODcsIDE3ODI2NzYxLCAxNjc3ODE4NywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE5MCwgMTc4MjY3NjQsIDE2Nzc4MTkwLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTkzLCAxNzgyNjc2NywgMTY3NzgxOTMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxOTYsIDE3ODI2NzcwLCAxNjc3ODE5NiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE5OSwgMTc4MjY3NzMsIDE2Nzc4MTk5LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjAyLCAxNzgyNjc3NiwgMTY3NzgyMDIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyMDUsIDE3ODI2Nzc5LCAxNjc3ODIwNSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODIwOCwgMTc4MjY3ODIsIDE2Nzc4MjA4LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjExLCAxNzgyNjc4NSwgMTY3NzgyMTEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyMTQsIDE3ODI2Nzg4LCAxNjc3ODIxNCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODIxNywgMTc4MjY3OTEsIDE2Nzc4MjE3LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjIwLCAxNzgyNjc5NCwgMTY3NzgyMjAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyMjMsIDE3ODI2Nzk3LCAxNjc3ODIyMywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODIyNiwgMTc4MjY4MDAsIDE2Nzc4MjI2LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjI5LCAxNzgyNjgwMywgMTY3NzgyMjksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyMzIsIDE3ODI2ODA2LCAxNjc3ODIzMiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODIzNSwgMTc4MjY4MDksIDE2Nzc4MjM1LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjM4LCAxNzgyNjgxMiwgMTY3NzgyMzgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyNDEsIDE3ODI2ODE1LCAxNjc3ODI0MSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI0NCwgMTc4MjY4MTgsIDE2Nzc4MjQ0LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjQ3LCAxNzgyNjgyMSwgMTY3NzgyNDcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyNTAsIDE3ODI2ODI0LCAxNjc3ODI1MCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI1MywgMTc4MjY4MjcsIDE2Nzc4MjUzLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjU2LCAxNzgyNjgzMCwgMTY3NzgyNTYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyNTksIDE3ODI2ODMzLCAxNjc3ODI1OSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI2MiwgMTc4MjY4MzYsIDE2Nzc4MjYyLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjY1LCAxNzgyNjgzOSwgMTY3NzgyNjUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyNjgsIDE3ODI2ODQyLCAxNjc3ODI2OCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI3MSwgMTc4MjY4NDUsIDE2Nzc4MjcxLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4Mjc0LCAxNzgyNjg0OCwgMTY3NzgyNzQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyNzcsIDE3ODI2ODUxLCAxNjc3ODI3NywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI4MCwgMTc4MjY4NTQsIDE2Nzc4MjgwLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjgzLCAxNzgyNjg1NywgMTY3NzgyODMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyODYsIDE3ODI2ODYwLCAxNjc3ODI4NiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI4OSwgMTc4MjY4NjMsIDE2Nzc4Mjg5LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjkyLCAxNzgyNjg2NiwgMTY3NzgyOTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyOTUsIDE3ODI2ODY5LCAxNjc3ODI5NSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI5OCwgMTc4MjY4NzIsIDE2Nzc4Mjk4LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzAxLCAxNzgyNjg3NSwgMTY3NzgzMDEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzMDQsIDE3ODI2ODc4LCAxNjc3ODMwNCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODMwNywgMTc4MjY4ODEsIDE2Nzc4MzA3LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzEwLCAxNzgyNjg4NCwgMTY3NzgzMTAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzMTMsIDE3ODI2ODg3LCAxNjc3ODMxMywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODMxNiwgMTc4MjY4OTAsIDE2Nzc4MzE2LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzE5LCAxNzgyNjg5MywgMTY3NzgzMTksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzMjIsIDE3ODI2ODk2LCAxNjc3ODMyMiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODMyNSwgMTc4MjY4OTksIDE2Nzc4MzI1LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzI4LCAxNzgyNjkwMiwgMTY3NzgzMjgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzMzEsIDE3ODI2OTA1LCAxNjc3ODMzMSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODMzNCwgMTc4MjY5MDgsIDE2Nzc4MzM0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NTU0LCAxODg3NTQ4NywgMzM1NTU1NTYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU1NjEsIDE4ODc1NDk0LCAzMzU1NTU2MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTU2OCwgMTg4NzU1MDEsIDMzNTU1NTcwLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNzkyLCAxOTkyNDA4NCwgNTAzMzI3OTUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI4MDIsIDE5OTI0MDk0LCA1MDMzMjgwNSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTU5NSwgMTg4NzU1MjgsIDMzNTU1NTk3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjAyLCAxODg3NTUzNSwgMzM1NTU2MDQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2MDksIDE4ODc1NTQyLCAzMzU1NTYxMSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTYxNiwgMTg4NzU1NDksIDMzNTU1NjE4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjIzLCAxODg3NTU1NiwgMzM1NTU2MjUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2MzAsIDE4ODc1NTYzLCAzMzU1NTYzMiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTYzNywgMTg4NzU1NzAsIDMzNTU1NjM5LCAwLCAwLCAyNjM3N30sCiAgICAgezAsIDAsIDAsIDAsIDAsIDEwMjV9LAogICAgIHswLCAwLCAwLCAwLCAwLCA1NjMzfSwKICAgICB7MCwgNDAsIDAsIDAsIDAsIDEwMTEzfSwKICAgICB7LTQwLCAwLCAtNDAsIDAsIDAsIDk5OTN9LAorICAgIHswLCAwLCAwLCAwLCAwLCA5MzQ0fSwKIH07CiAKIC8qIGV4dGVuZGVkIGNhc2UgbWFwcGluZ3MgKi8KQEAgLTM3NSw2ICs1NjQsMjgyIEBACiAgICAgMTM2MiwKICAgICAxMzMzLAogICAgIDE0MTAsCisgICAgNDM4ODgsCisgICAgNTAyNCwKKyAgICA1MDI0LAorICAgIDQzODg5LAorICAgIDUwMjUsCisgICAgNTAyNSwKKyAgICA0Mzg5MCwKKyAgICA1MDI2LAorICAgIDUwMjYsCisgICAgNDM4OTEsCisgICAgNTAyNywKKyAgICA1MDI3LAorICAgIDQzODkyLAorICAgIDUwMjgsCisgICAgNTAyOCwKKyAgICA0Mzg5MywKKyAgICA1MDI5LAorICAgIDUwMjksCisgICAgNDM4OTQsCisgICAgNTAzMCwKKyAgICA1MDMwLAorICAgIDQzODk1LAorICAgIDUwMzEsCisgICAgNTAzMSwKKyAgICA0Mzg5NiwKKyAgICA1MDMyLAorICAgIDUwMzIsCisgICAgNDM4OTcsCisgICAgNTAzMywKKyAgICA1MDMzLAorICAgIDQzODk4LAorICAgIDUwMzQsCisgICAgNTAzNCwKKyAgICA0Mzg5OSwKKyAgICA1MDM1LAorICAgIDUwMzUsCisgICAgNDM5MDAsCisgICAgNTAzNiwKKyAgICA1MDM2LAorICAgIDQzOTAxLAorICAgIDUwMzcsCisgICAgNTAzNywKKyAgICA0MzkwMiwKKyAgICA1MDM4LAorICAgIDUwMzgsCisgICAgNDM5MDMsCisgICAgNTAzOSwKKyAgICA1MDM5LAorICAgIDQzOTA0LAorICAgIDUwNDAsCisgICAgNTA0MCwKKyAgICA0MzkwNSwKKyAgICA1MDQxLAorICAgIDUwNDEsCisgICAgNDM5MDYsCisgICAgNTA0MiwKKyAgICA1MDQyLAorICAgIDQzOTA3LAorICAgIDUwNDMsCisgICAgNTA0MywKKyAgICA0MzkwOCwKKyAgICA1MDQ0LAorICAgIDUwNDQsCisgICAgNDM5MDksCisgICAgNTA0NSwKKyAgICA1MDQ1LAorICAgIDQzOTEwLAorICAgIDUwNDYsCisgICAgNTA0NiwKKyAgICA0MzkxMSwKKyAgICA1MDQ3LAorICAgIDUwNDcsCisgICAgNDM5MTIsCisgICAgNTA0OCwKKyAgICA1MDQ4LAorICAgIDQzOTEzLAorICAgIDUwNDksCisgICAgNTA0OSwKKyAgICA0MzkxNCwKKyAgICA1MDUwLAorICAgIDUwNTAsCisgICAgNDM5MTUsCisgICAgNTA1MSwKKyAgICA1MDUxLAorICAgIDQzOTE2LAorICAgIDUwNTIsCisgICAgNTA1MiwKKyAgICA0MzkxNywKKyAgICA1MDUzLAorICAgIDUwNTMsCisgICAgNDM5MTgsCisgICAgNTA1NCwKKyAgICA1MDU0LAorICAgIDQzOTE5LAorICAgIDUwNTUsCisgICAgNTA1NSwKKyAgICA0MzkyMCwKKyAgICA1MDU2LAorICAgIDUwNTYsCisgICAgNDM5MjEsCisgICAgNTA1NywKKyAgICA1MDU3LAorICAgIDQzOTIyLAorICAgIDUwNTgsCisgICAgNTA1OCwKKyAgICA0MzkyMywKKyAgICA1MDU5LAorICAgIDUwNTksCisgICAgNDM5MjQsCisgICAgNTA2MCwKKyAgICA1MDYwLAorICAgIDQzOTI1LAorICAgIDUwNjEsCisgICAgNTA2MSwKKyAgICA0MzkyNiwKKyAgICA1MDYyLAorICAgIDUwNjIsCisgICAgNDM5MjcsCisgICAgNTA2MywKKyAgICA1MDYzLAorICAgIDQzOTI4LAorICAgIDUwNjQsCisgICAgNTA2NCwKKyAgICA0MzkyOSwKKyAgICA1MDY1LAorICAgIDUwNjUsCisgICAgNDM5MzAsCisgICAgNTA2NiwKKyAgICA1MDY2LAorICAgIDQzOTMxLAorICAgIDUwNjcsCisgICAgNTA2NywKKyAgICA0MzkzMiwKKyAgICA1MDY4LAorICAgIDUwNjgsCisgICAgNDM5MzMsCisgICAgNTA2OSwKKyAgICA1MDY5LAorICAgIDQzOTM0LAorICAgIDUwNzAsCisgICAgNTA3MCwKKyAgICA0MzkzNSwKKyAgICA1MDcxLAorICAgIDUwNzEsCisgICAgNDM5MzYsCisgICAgNTA3MiwKKyAgICA1MDcyLAorICAgIDQzOTM3LAorICAgIDUwNzMsCisgICAgNTA3MywKKyAgICA0MzkzOCwKKyAgICA1MDc0LAorICAgIDUwNzQsCisgICAgNDM5MzksCisgICAgNTA3NSwKKyAgICA1MDc1LAorICAgIDQzOTQwLAorICAgIDUwNzYsCisgICAgNTA3NiwKKyAgICA0Mzk0MSwKKyAgICA1MDc3LAorICAgIDUwNzcsCisgICAgNDM5NDIsCisgICAgNTA3OCwKKyAgICA1MDc4LAorICAgIDQzOTQzLAorICAgIDUwNzksCisgICAgNTA3OSwKKyAgICA0Mzk0NCwKKyAgICA1MDgwLAorICAgIDUwODAsCisgICAgNDM5NDUsCisgICAgNTA4MSwKKyAgICA1MDgxLAorICAgIDQzOTQ2LAorICAgIDUwODIsCisgICAgNTA4MiwKKyAgICA0Mzk0NywKKyAgICA1MDgzLAorICAgIDUwODMsCisgICAgNDM5NDgsCisgICAgNTA4NCwKKyAgICA1MDg0LAorICAgIDQzOTQ5LAorICAgIDUwODUsCisgICAgNTA4NSwKKyAgICA0Mzk1MCwKKyAgICA1MDg2LAorICAgIDUwODYsCisgICAgNDM5NTEsCisgICAgNTA4NywKKyAgICA1MDg3LAorICAgIDQzOTUyLAorICAgIDUwODgsCisgICAgNTA4OCwKKyAgICA0Mzk1MywKKyAgICA1MDg5LAorICAgIDUwODksCisgICAgNDM5NTQsCisgICAgNTA5MCwKKyAgICA1MDkwLAorICAgIDQzOTU1LAorICAgIDUwOTEsCisgICAgNTA5MSwKKyAgICA0Mzk1NiwKKyAgICA1MDkyLAorICAgIDUwOTIsCisgICAgNDM5NTcsCisgICAgNTA5MywKKyAgICA1MDkzLAorICAgIDQzOTU4LAorICAgIDUwOTQsCisgICAgNTA5NCwKKyAgICA0Mzk1OSwKKyAgICA1MDk1LAorICAgIDUwOTUsCisgICAgNDM5NjAsCisgICAgNTA5NiwKKyAgICA1MDk2LAorICAgIDQzOTYxLAorICAgIDUwOTcsCisgICAgNTA5NywKKyAgICA0Mzk2MiwKKyAgICA1MDk4LAorICAgIDUwOTgsCisgICAgNDM5NjMsCisgICAgNTA5OSwKKyAgICA1MDk5LAorICAgIDQzOTY0LAorICAgIDUxMDAsCisgICAgNTEwMCwKKyAgICA0Mzk2NSwKKyAgICA1MTAxLAorICAgIDUxMDEsCisgICAgNDM5NjYsCisgICAgNTEwMiwKKyAgICA1MTAyLAorICAgIDQzOTY3LAorICAgIDUxMDMsCisgICAgNTEwMywKKyAgICA1MTEyLAorICAgIDUxMDQsCisgICAgNTEwNCwKKyAgICA1MTEzLAorICAgIDUxMDUsCisgICAgNTEwNSwKKyAgICA1MTE0LAorICAgIDUxMDYsCisgICAgNTEwNiwKKyAgICA1MTE1LAorICAgIDUxMDcsCisgICAgNTEwNywKKyAgICA1MTE2LAorICAgIDUxMDgsCisgICAgNTEwOCwKKyAgICA1MTE3LAorICAgIDUxMDksCisgICAgNTEwOSwKKyAgICA1MTEyLAorICAgIDUxMDQsCisgICAgNTEwNCwKKyAgICA1MTEzLAorICAgIDUxMDUsCisgICAgNTEwNSwKKyAgICA1MTE0LAorICAgIDUxMDYsCisgICAgNTEwNiwKKyAgICA1MTE1LAorICAgIDUxMDcsCisgICAgNTEwNywKKyAgICA1MTE2LAorICAgIDUxMDgsCisgICAgNTEwOCwKKyAgICA1MTE3LAorICAgIDUxMDksCisgICAgNTEwOSwKICAgICA3ODMwLAogICAgIDEwNCwKICAgICA4MTcsCkBAIC05MDQsNiArMTM2OSwyNDYgQEAKICAgICA5MzcsCiAgICAgOTIxLAogICAgIDgxODgsCisgICAgNDM4ODgsCisgICAgNTAyNCwKKyAgICA1MDI0LAorICAgIDQzODg5LAorICAgIDUwMjUsCisgICAgNTAyNSwKKyAgICA0Mzg5MCwKKyAgICA1MDI2LAorICAgIDUwMjYsCisgICAgNDM4OTEsCisgICAgNTAyNywKKyAgICA1MDI3LAorICAgIDQzODkyLAorICAgIDUwMjgsCisgICAgNTAyOCwKKyAgICA0Mzg5MywKKyAgICA1MDI5LAorICAgIDUwMjksCisgICAgNDM4OTQsCisgICAgNTAzMCwKKyAgICA1MDMwLAorICAgIDQzODk1LAorICAgIDUwMzEsCisgICAgNTAzMSwKKyAgICA0Mzg5NiwKKyAgICA1MDMyLAorICAgIDUwMzIsCisgICAgNDM4OTcsCisgICAgNTAzMywKKyAgICA1MDMzLAorICAgIDQzODk4LAorICAgIDUwMzQsCisgICAgNTAzNCwKKyAgICA0Mzg5OSwKKyAgICA1MDM1LAorICAgIDUwMzUsCisgICAgNDM5MDAsCisgICAgNTAzNiwKKyAgICA1MDM2LAorICAgIDQzOTAxLAorICAgIDUwMzcsCisgICAgNTAzNywKKyAgICA0MzkwMiwKKyAgICA1MDM4LAorICAgIDUwMzgsCisgICAgNDM5MDMsCisgICAgNTAzOSwKKyAgICA1MDM5LAorICAgIDQzOTA0LAorICAgIDUwNDAsCisgICAgNTA0MCwKKyAgICA0MzkwNSwKKyAgICA1MDQxLAorICAgIDUwNDEsCisgICAgNDM5MDYsCisgICAgNTA0MiwKKyAgICA1MDQyLAorICAgIDQzOTA3LAorICAgIDUwNDMsCisgICAgNTA0MywKKyAgICA0MzkwOCwKKyAgICA1MDQ0LAorICAgIDUwNDQsCisgICAgNDM5MDksCisgICAgNTA0NSwKKyAgICA1MDQ1LAorICAgIDQzOTEwLAorICAgIDUwNDYsCisgICAgNTA0NiwKKyAgICA0MzkxMSwKKyAgICA1MDQ3LAorICAgIDUwNDcsCisgICAgNDM5MTIsCisgICAgNTA0OCwKKyAgICA1MDQ4LAorICAgIDQzOTEzLAorICAgIDUwNDksCisgICAgNTA0OSwKKyAgICA0MzkxNCwKKyAgICA1MDUwLAorICAgIDUwNTAsCisgICAgNDM5MTUsCisgICAgNTA1MSwKKyAgICA1MDUxLAorICAgIDQzOTE2LAorICAgIDUwNTIsCisgICAgNTA1MiwKKyAgICA0MzkxNywKKyAgICA1MDUzLAorICAgIDUwNTMsCisgICAgNDM5MTgsCisgICAgNTA1NCwKKyAgICA1MDU0LAorICAgIDQzOTE5LAorICAgIDUwNTUsCisgICAgNTA1NSwKKyAgICA0MzkyMCwKKyAgICA1MDU2LAorICAgIDUwNTYsCisgICAgNDM5MjEsCisgICAgNTA1NywKKyAgICA1MDU3LAorICAgIDQzOTIyLAorICAgIDUwNTgsCisgICAgNTA1OCwKKyAgICA0MzkyMywKKyAgICA1MDU5LAorICAgIDUwNTksCisgICAgNDM5MjQsCisgICAgNTA2MCwKKyAgICA1MDYwLAorICAgIDQzOTI1LAorICAgIDUwNjEsCisgICAgNTA2MSwKKyAgICA0MzkyNiwKKyAgICA1MDYyLAorICAgIDUwNjIsCisgICAgNDM5MjcsCisgICAgNTA2MywKKyAgICA1MDYzLAorICAgIDQzOTI4LAorICAgIDUwNjQsCisgICAgNTA2NCwKKyAgICA0MzkyOSwKKyAgICA1MDY1LAorICAgIDUwNjUsCisgICAgNDM5MzAsCisgICAgNTA2NiwKKyAgICA1MDY2LAorICAgIDQzOTMxLAorICAgIDUwNjcsCisgICAgNTA2NywKKyAgICA0MzkzMiwKKyAgICA1MDY4LAorICAgIDUwNjgsCisgICAgNDM5MzMsCisgICAgNTA2OSwKKyAgICA1MDY5LAorICAgIDQzOTM0LAorICAgIDUwNzAsCisgICAgNTA3MCwKKyAgICA0MzkzNSwKKyAgICA1MDcxLAorICAgIDUwNzEsCisgICAgNDM5MzYsCisgICAgNTA3MiwKKyAgICA1MDcyLAorICAgIDQzOTM3LAorICAgIDUwNzMsCisgICAgNTA3MywKKyAgICA0MzkzOCwKKyAgICA1MDc0LAorICAgIDUwNzQsCisgICAgNDM5MzksCisgICAgNTA3NSwKKyAgICA1MDc1LAorICAgIDQzOTQwLAorICAgIDUwNzYsCisgICAgNTA3NiwKKyAgICA0Mzk0MSwKKyAgICA1MDc3LAorICAgIDUwNzcsCisgICAgNDM5NDIsCisgICAgNTA3OCwKKyAgICA1MDc4LAorICAgIDQzOTQzLAorICAgIDUwNzksCisgICAgNTA3OSwKKyAgICA0Mzk0NCwKKyAgICA1MDgwLAorICAgIDUwODAsCisgICAgNDM5NDUsCisgICAgNTA4MSwKKyAgICA1MDgxLAorICAgIDQzOTQ2LAorICAgIDUwODIsCisgICAgNTA4MiwKKyAgICA0Mzk0NywKKyAgICA1MDgzLAorICAgIDUwODMsCisgICAgNDM5NDgsCisgICAgNTA4NCwKKyAgICA1MDg0LAorICAgIDQzOTQ5LAorICAgIDUwODUsCisgICAgNTA4NSwKKyAgICA0Mzk1MCwKKyAgICA1MDg2LAorICAgIDUwODYsCisgICAgNDM5NTEsCisgICAgNTA4NywKKyAgICA1MDg3LAorICAgIDQzOTUyLAorICAgIDUwODgsCisgICAgNTA4OCwKKyAgICA0Mzk1MywKKyAgICA1MDg5LAorICAgIDUwODksCisgICAgNDM5NTQsCisgICAgNTA5MCwKKyAgICA1MDkwLAorICAgIDQzOTU1LAorICAgIDUwOTEsCisgICAgNTA5MSwKKyAgICA0Mzk1NiwKKyAgICA1MDkyLAorICAgIDUwOTIsCisgICAgNDM5NTcsCisgICAgNTA5MywKKyAgICA1MDkzLAorICAgIDQzOTU4LAorICAgIDUwOTQsCisgICAgNTA5NCwKKyAgICA0Mzk1OSwKKyAgICA1MDk1LAorICAgIDUwOTUsCisgICAgNDM5NjAsCisgICAgNTA5NiwKKyAgICA1MDk2LAorICAgIDQzOTYxLAorICAgIDUwOTcsCisgICAgNTA5NywKKyAgICA0Mzk2MiwKKyAgICA1MDk4LAorICAgIDUwOTgsCisgICAgNDM5NjMsCisgICAgNTA5OSwKKyAgICA1MDk5LAorICAgIDQzOTY0LAorICAgIDUxMDAsCisgICAgNTEwMCwKKyAgICA0Mzk2NSwKKyAgICA1MTAxLAorICAgIDUxMDEsCisgICAgNDM5NjYsCisgICAgNTEwMiwKKyAgICA1MTAyLAorICAgIDQzOTY3LAorICAgIDUxMDMsCisgICAgNTEwMywKICAgICA2NDI1NiwKICAgICAxMDIsCiAgICAgMTAyLApAQCAtMTAyOSw0MDUgKzE3MzQsNTExIEBACiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjgsIDEyOSwgMTMwLCAKICAgICAxMzEsIDEzMiwgMTMzLCAxMzQsIDM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIAotICAgIDcxLCAxNDUsIDE0NiwgMTQ3LCAxNDgsIDE0OSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMTUwLCA3MSwgMTUxLCAxNTIsIAotICAgIDE1MywgNzEsIDE1NCwgNzEsIDE1NSwgNzEsIDcxLCA3MSwgMTU2LCA3MSwgNzEsIDcxLCAxNTcsIDE1OCwgMTU5LCAxNjAsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDE2MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTYyLCA3MSwgCi0gICAgMTYzLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTY0LCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMzQsIDM0LCAzNCwgMzQsIDE2NSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMTY2LCAxNjcsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMTY4LCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA2NCwgMTY5LCAxNzAsIDE3MSwgMTcyLCA3MSwgMTczLCA3MSwgMTc0LCAxNzUsIDE3NiwgMTc3LCAxNzgsIAotICAgIDE3OSwgMTgwLCAxODEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMTgyLCAxODMsIDcxLCA3MSwgMTg0LCAKLSAgICAxODUsIDE4NiwgMTg3LCAxODgsIDcxLCAxODksIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgNjUsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMTk3LCAxOTgsIAotICAgIDE5OSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODcsIDIwMCwgCi0gICAgMzQsIDIwMSwgMjAyLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAxNDUsIDE0NiwgMTQ3LCAxNDgsIDE0OSwgMTUwLCAxNTEsIDE0NSwgMzQsIDM0LCAxNTIsIDE0NSwgMTUzLCAxNTQsIDE1NSwgCisgICAgMTU2LCAxNTcsIDE1OCwgMTU5LCAxNjAsIDE2MSwgMTYyLCAxNDUsIDE0NSwgMTYzLCAxNDUsIDE0NSwgMTQ1LCAxNjQsIAorICAgIDE2NSwgMTY2LCAxNjcsIDE2OCwgMTY5LCAxNzAsIDE0NSwgMTQ1LCAxNzEsIDE0NSwgMTcyLCAxNzMsIDE3NCwgMTc1LCAKKyAgICAxNDUsIDE0NSwgMTc2LCAxNDUsIDE0NSwgMTQ1LCAxNzcsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE3OCwgMTc5LCAzNCwgMTgwLCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE4MSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMTgyLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAxODMsIDE4NCwgMTg1LCAxODYsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE4NywgMTg4LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTg5LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTkwLCAxOTEsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCA2NCwgMTkyLCAKKyAgICAxOTMsIDE5NCwgMTk1LCAxNDUsIDE5NiwgMTQ1LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgNjQsIAorICAgIDY0LCA2NCwgNjQsIDIwNSwgMjA2LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMzQsIDIwNywgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAyMDgsIAorICAgIDIwOSwgMTQ1LCAxNDUsIDIxMCwgMjExLCAyMTIsIDIxMywgMjE0LCAxNDUsIDY0LCAyMTUsIDY0LCA2NCwgMjE2LCAyMTcsIAorICAgIDY0LCAyMTgsIDIxOSwgMjIwLCAyMjEsIDIyMiwgMjIzLCAyMjQsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDIyNSwgMjI2LCAyMjcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDg3LCAyMjgsIDM0LCAyMjksIDIzMCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMDMsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjA0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjA1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjMxLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDIzMiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDIzMywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIwNiwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM1LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjA3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzYsIDM0LCAyMzcsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMjA4LCAzNCwgMjA5LCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMzQsIDIwMywgMzQsIDM0LCAyMDksIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDIxMCwgNzEsIDIxMSwgMjEyLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM4LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDM0LCAyMzEsIDM0LCAzNCwgMjM5LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAyNDAsIDE0NSwgMjQxLCAyNDIsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIApAQCAtMTQ2Myw4ICsyMjc0LDggQEAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDI0MywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAotICAgIDEyNywgMTI3LCAxMjcsIDIxMywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKQEAgLTE1MDAsNyArMjMxMSw3IEBACiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCi0gICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDIxMywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAyNDMsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIHNob3J0IGluZGV4MltdID0gewpAQCAtMTUzNSwyMDMgKzIzNDYsMjA0IEBACiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgNjQsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA2NSwgCiAgICAgMzAsIDMxLCA2NiwgNjcsIDY4LCA2OCwgMzAsIDMxLCA2OSwgNzAsIDcxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgNzIsIDczLCA3NCwgNzUsIDc2LCAyMCwgNzcsIDc3LCAyMCwgNzgsIDIwLCA3OSwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDc3LCAyMCwgMjAsIDgwLCAyMCwgODEsIDgyLCAyMCwgODMsIDg0LCAyMCwgODUsIDIwLCAyMCwgMjAsIDg0LCAyMCwgCi0gICAgODYsIDg3LCAyMCwgMjAsIDg4LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgODksIDIwLCAyMCwgOTAsIDIwLCAyMCwgCi0gICAgOTAsIDIwLCAyMCwgMjAsIDIwLCA5MCwgOTEsIDkyLCA5MiwgOTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTQsIDIwLCA1NSwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCi0gICAgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk1LCA5NSwgNiwgNiwgNiwgNiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgCi0gICAgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgOTUsIDk1LCAKLSAgICA5NSwgOTUsIDk1LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA5NiwgNiwgOTYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIAotICAgIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAzMSwgMzAsIDMxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDIwLCA3NywgNzcsIDIwLCA3OCwgMjAsIDc5LCA4MCwgMjAsIDIwLCAKKyAgICAyMCwgNzcsIDgxLCAyMCwgODIsIDIwLCA4MywgODQsIDIwLCA4NSwgODYsIDIwLCA4NywgODgsIDIwLCAyMCwgODYsIDIwLCAKKyAgICA4OSwgOTAsIDIwLCAyMCwgOTEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5MiwgMjAsIDIwLCA5MywgMjAsIDIwLCAKKyAgICA5MywgMjAsIDIwLCAyMCwgOTQsIDkzLCA5NSwgOTYsIDk2LCA5NywgMjAsIDIwLCAyMCwgMjAsIDIwLCA5OCwgMjAsIDU1LCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk5LCAxMDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDEsIDEwMSwgNiwgNiwgNiwgNiwgMTAyLCAKKyAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgNiwgNiwgNiwgNiwgNiwgNiwgCisgICAgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIAorICAgIDEwMiwgNiwgMTAyLCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgOTcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxMDMsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAzMCwgMzEsIDMwLCAzMSwgOTYsIDYsIDMwLCAzMSwgMCwgMCwgCi0gICAgOTgsIDUwLCA1MCwgNTAsIDUsIDAsIDAsIDAsIDAsIDAsIDYsIDYsIDk5LCAyNSwgMTAwLCAxMDAsIDEwMCwgMCwgMTAxLCAwLCAKLSAgICAxMDIsIDEwMiwgMTAzLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDEwNCwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA2LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDEwNywgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTA4LCAxMDksIDEwOSwgMTEwLCAxMTEsIDExMiwgCi0gICAgMTEzLCAxMTMsIDExMywgMTE0LCAxMTUsIDExNiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTE3LCAxMTgsIDExOSwgMjAsIAotICAgIDEyMCwgMTIxLCA1LCAzMCwgMzEsIDEyMiwgMzAsIDMxLCAyMCwgNjQsIDY0LCA2NCwgMTIzLCAxMjMsIDEyMywgMTIzLCAKLSAgICAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxNywgMTcsIDE3LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDMwLCAzMSwgMzAsIDMxLCAxMDIsIDYsIDMwLCAzMSwgMCwgMCwgMTA0LCA1MCwgNTAsIDUwLCA1LCAxMDUsIDAsIAorICAgIDAsIDAsIDAsIDYsIDYsIDEwNiwgMjUsIDEwNywgMTA3LCAxMDcsIDAsIDEwOCwgMCwgMTA5LCAxMDksIDExMCwgMTcsIDE3LCAKKyAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxMTEsIDExMiwgMTEyLCAxMTIsIDExMywgMTksIDE5LCAxOSwgMTksIDE5LCAKKyAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMTQsIDE5LCAxOSwgMTksIDE5LCAxOSwgCisgICAgMTksIDE5LCAxOSwgMTksIDExNSwgMTE2LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgMTIwLCAxMjAsIDEyMSwgMTIyLCAKKyAgICAxMjMsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDEyNCwgMTI1LCAxMjYsIDEyNywgMTI4LCAxMjksIDUsIDMwLCAzMSwgMTMwLCAKKyAgICAzMCwgMzEsIDIwLCA2NCwgNjQsIDY0LCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCiAgICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIAotICAgIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNiwgNiwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDE3LCAxNywgMTcsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTMyLCAKKyAgICAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgCisgICAgMTMyLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCA2LCA2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKICAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKICAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDEyNSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMjYsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDEzMywgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAxMzQsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCiAgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCiAgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCiAgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCiAgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNywgCi0gICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAotICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKLSAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAwLCAwLCA5NiwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOSwgMCwgNSwgNSwgMCwgMCwgMCwgCi0gICAgMCwgNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMTAyLCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAxMzYsIDEzNiwgMTM2LCAxMzYsIAorICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKKyAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCisgICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM3LCAwLCA1LCA1LCAwLCAwLCA1LCA1LCA1LCAwLCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDI1LCA1LCAyNSwgMjUsIDUsIDI1LCAyNSwgCi0gICAgNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDUsIDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIAotICAgIDIxLCAyMSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCA1LCAyMSwgMCwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA5NiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDcsIDgsIAotICAgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDIxLCA1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCA5NiwgOTYsIDI1LCAyNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAKLSAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDUsIDUsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCAwLCAyMSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgMjUsIDUsIDI1LCAyNSwgNSwgMjUsIDI1LCA1LCAyNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNSwgNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAKKyAgICAyMSwgMCwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAorICAgIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDk2LCA5NiwgNSwgNSwgNSwgNSwgOTYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgOTYsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDk2LCAyNSwgMjUsIDI1LCA5NiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyMSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMTAyLCAxMDIsIDI1LCAyNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKKyAgICAxNSwgMTYsIDU1LCA1NSwgNTUsIDUsIDUsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAyMSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIAotICAgIDI1LCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKKyAgICAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxMDIsIDEwMiwgNSwgNSwgNSwgNSwgMTAyLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDEwMiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMTAyLCAyNSwgMjUsIDI1LCAxMDIsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDAsIDAsIAorICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCA1NSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDUsIDUsIAotICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA5NiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMCwgCi0gICAgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCi0gICAgNTUsIDU1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMjUsIDAsIDE4LCAKLSAgICAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAwLCAwLCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAyNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjUsIDI1LCA1NSwgNTUsIDU1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMjUsIDI1LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKLSAgICA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgCi0gICAgMTgsIDAsIDE4LCAxOCwgMjUsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAyNSwgMTgsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAKLSAgICAxOCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAotICAgIDEzLCAxNCwgMTUsIDE2LCA1LCA1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAotICAgIDE4LCAxOCwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMTgsIDE4LCAxOCwgMCwgMTgsIDE4LCAxOCwgMjUsIDAsIDAsIDU1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIAotICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE4LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgCisgICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgCisgICAgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCisgICAgMTUsIDE2LCA1NSwgNTUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDI1LCAKKyAgICAyNSwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDAsIDI1LCAyNSwgMjUsIDAsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgMCwgMCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMjUsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMCwgMjUsIDE4LCAxOCwgMCwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgCisgICAgMjUsIDAsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAwLCAwLCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAKKyAgICAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAKKyAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjUsIDI1LCA1NSwgNTUsIDU1LCAyNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIAorICAgIDI1LCAyNSwgMTgsIDAsIDE4LCAxOCwgMjUsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMjUsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNSwgMTgsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNTUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDI1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCAwLCAwLCAKKyAgICAwLCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAxOCwgMTgsIDI1LCAxOCwgMTgsIDAsIDAsIDAsIDE4LCAxOCwgMTgsIDAsIDE4LCAxOCwgMTgsIDI1LCAKKyAgICAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDAsIAorICAgIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKKyAgICAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDAsIDI1LCAxOCwgMTgsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICAyNSwgNTUsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAyNSwgMTgsIDE4LCAwLCAxOCwgMTgsIDI1LCAyNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIAorICAgIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDAsIDE4LCAxOCwgMTgsIDAsIDE4LCAxOCwgMTgsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCisgICAgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDE4LCAKKyAgICAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgMCwgMCwgMCwgMCwgCisgICAgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMCwgMjUsIDAsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDE4LCAxOCwgNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAxOCwgMTgsIDE4LCAwLCAKLSAgICAxOCwgMTgsIDE4LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDE4LCAxOCwgMCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCisgICAgNTUsIDI1LCA1NSwgMTM4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMTAyLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAorICAgIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIAorICAgIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMTM4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDU1LCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDEwMiwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIAorICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDI1LCA1LCAyNSwgNSwgMjUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgMCwgMCwgMCwgMCwgMTgsIDE4LCAxOCwgMjUsIAotICAgIDI1LCAyNSwgMCwgMjUsIDAsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDE4LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDEzMCwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDk2LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAKLSAgICAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgCi0gICAgMTMwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDk2LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCi0gICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDcsIAotICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgNSwgMjUsIDUsIDI1LCA1LCAyNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAKLSAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIAotICAgIDI1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgNTUsIDE4LCAxOCwgMTgsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgNTUsIAotICAgIDE4LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTgsIDE4LCAxOCwgMjUsIDUsIDUsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMCwgMCwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgOTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIAorICAgIDI1LCAyNSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDU1LCAxOCwgCisgICAgMTgsIDE4LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDU1LCAxOCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAorICAgIDE4LCAxOCwgMTgsIDI1LCA1LCA1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgCisgICAgMTM5LCAwLCAwLCAwLCAwLCAwLCAxMzksIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAxMDIsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTE3NDIsMzEgKzI1NTQsMzMgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNDAsIDE0MSwgMTQyLCAKKyAgICAxNDMsIDE0NCwgMTQ1LCAxNDYsIDE0NywgMTQ4LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDksIDE1MCwgMTUxLCAxNTIsIDE1MywgCisgICAgMTU0LCAxNTUsIDE1NiwgMTU3LCAxNTgsIDE1OSwgMTYwLCAxNjEsIDE2MiwgMTYzLCAxNjQsIDE2NSwgMTY2LCAxNjcsIAorICAgIDE2OCwgMTY5LCAxNzAsIDE3MSwgMTcyLCAxNzMsIDE3NCwgMTc1LCAxNzYsIDE3NywgMTc4LCAxNzksIDE4MCwgMTgxLCAKKyAgICAxODIsIDE4MywgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgCisgICAgMTk2LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAyMDksIAorICAgIDIxMCwgMjExLCAyMTIsIDIxMywgMjE0LCAyMTUsIDIxNiwgMjE3LCAyMTgsIDIxOSwgMjIwLCAyMjEsIDIyMiwgMjIzLCAKKyAgICAyMjQsIDIyNSwgMjI2LCAyMjcsIDIyOCwgMjI5LCAyMzAsIDIzMSwgMjMyLCAyMzMsIDIzNCwgMCwgMCwgMjM1LCAyMzYsIAorICAgIDIzNywgMjM4LCAyMzksIDI0MCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTE3ODYsMjggKzI2MDAsMjggQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgCi0gICAgMjUsIDI1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDU1LCAwLCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgMjQxLCAyNDEsIDI0MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDI1LCAyNSwgMjUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA5NiwgNSwgNSwgNSwgNSwgNTUsIDI1LCAwLCAwLCA3LCAKLSAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDI1LCAyNSwgMjUsIDIxLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgMTAyLCA1LCA1LCA1LCA1LCA1NSwgMjUsIDAsIAorICAgIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMjUsIDI1LCAyNSwgMjEsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgOTYsIAorICAgIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTE4MTUsNTkwICsyNjI5LDI2NyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgCi0gICAgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMjUsIDI1LCAKKyAgICAyNSwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTMyLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE0MCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDAsIDAsIDUsIDUsIDU1LCA1NSwgNTUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAwLCAwLCA1LCA1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMjUsIDE4LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAwLCAwLCAyNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIAotICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA5NiwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAyNSwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDAsIDAsIDI1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDEwMiwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMTgsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCi0gICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDcsIDgsIDksIAotICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAKLSAgICAyNSwgMTgsIDE4LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIAotICAgIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgCi0gICAgMTgsIDI1LCAyNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAotICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgCisgICAgMjUsIDI1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAorICAgIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTAyLCAxMDIsIDEwMiwgCisgICAgMTAyLCAxMDIsIDEwMiwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMTgsIDE4LCAyNSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDU1LCA1NSwgMCwgMjUsIDI1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKICAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKLSAgICA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKLSAgICA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKLSAgICA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTUsIDE0MiwgMjAsIDIwLCAyMCwgMTQzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAotICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAotICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMjQyLCAyMCwgCisgICAgMjAsIDIwLCAyNDMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTQ0LCAKLSAgICAxNDUsIDE0NiwgMTQ3LCAxNDgsIDE0OSwgMjAsIDIwLCAxNTAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxNTEsIDE1MSwgCi0gICAgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIAotICAgIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDAsIDAsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDAsIDAsIAotICAgIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAKLSAgICAxNTIsIDE1MiwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MiwgMTUyLCAxNTIsIDE1MiwgCi0gICAgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAwLCAwLCAxNTIsIDE1MiwgMTUyLCAKLSAgICAxNTIsIDE1MiwgMTUyLCAwLCAwLCAxNTMsIDE1MSwgMTU0LCAxNTEsIDE1NSwgMTUxLCAxNTYsIDE1MSwgMCwgMTUyLCAwLCAKLSAgICAxNTIsIDAsIDE1MiwgMCwgMTUyLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUyLCAxNTIsIAotICAgIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1NywgMTU3LCAxNTgsIDE1OCwgMTU4LCAxNTgsIDE1OSwgMTU5LCAKLSAgICAxNjAsIDE2MCwgMTYxLCAxNjEsIDE2MiwgMTYyLCAwLCAwLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjksIAotICAgIDE3MCwgMTcxLCAxNzIsIDE3MywgMTc0LCAxNzUsIDE3NiwgMTc3LCAxNzgsIDE3OSwgMTgwLCAxODEsIDE4MiwgMTgzLCAKLSAgICAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgMTg5LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5NywgCi0gICAgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDIwOSwgMjEwLCAxNTEsIAotICAgIDE1MSwgMjExLCAyMTIsIDIxMywgMCwgMjE0LCAyMTUsIDE1MiwgMTUyLCAyMTYsIDIxNiwgMjE3LCA2LCAyMTgsIDYsIDYsIAotICAgIDYsIDIxOSwgMjIwLCAyMjEsIDAsIDIyMiwgMjIzLCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNSwgNiwgNiwgNiwgMTUxLCAKLSAgICAxNTEsIDIyNiwgMjI3LCAwLCAwLCAyMjgsIDIyOSwgMTUyLCAxNTIsIDIzMCwgMjMwLCAwLCA2LCA2LCA2LCAxNTEsIDE1MSwgCi0gICAgMjMxLCAyMzIsIDIzMywgMTE5LCAyMzQsIDIzNSwgMTUyLCAxNTIsIDIzNiwgMjM2LCAxMjIsIDYsIDYsIDYsIDAsIDAsIAotICAgIDIzNywgMjM4LCAyMzksIDAsIDI0MCwgMjQxLCAyNDIsIDI0MiwgMjQzLCAyNDMsIDI0NCwgNiwgNiwgMCwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjEsIDIxLCAyMSwgMjEsIDIxLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA2LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA1LCA1LCA2LCAzLCAzLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDIsIDIxLCAKLSAgICAyMSwgMjEsIDIxLCAyMSwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDI0NSwgOTUsIDAsIDAsIAotICAgIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDUsIDUsIDUsIDUsIDUsIDk1LCAyNDUsIDI2LCAyMiwgMjMsIDI0NiwgCi0gICAgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDUsIDUsIDUsIDUsIDUsIDAsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKLSAgICA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgNiwgNiwgNiwgNiwgMjUsIDYsIDYsIDYsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDExMywgNSwgNSwgCi0gICAgNSwgNSwgMTEzLCA1LCA1LCAyMCwgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAyMCwgNSwgMTEzLCA1LCAKLSAgICA1LCAyNTIsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCA1LCA1LCA1LCA1LCA1LCA1LCAxMTMsIDUsIDI1MywgNSwgMTEzLCAKLSAgICA1LCAyNTQsIDI1NSwgMTEzLCAxMTMsIDI1MiwgMjAsIDExMywgMTEzLCAyNTYsIDExMywgMjAsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAyMCwgNSwgNSwgMjAsIDIwLCAxMTMsIDExMywgNSwgNSwgNSwgNSwgNSwgMTEzLCAyMCwgMjAsIDIwLCAyMCwgNSwgNSwgNSwgCi0gICAgNSwgMjU3LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIAotICAgIDI1OCwgMjU4LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAKLSAgICAyNTksIDI1OSwgMjU5LCAyNTksIDE0MSwgMTQxLCAxNDEsIDMwLCAzMSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAyNywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIAotICAgIDI1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgCi0gICAgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAyMiwgCi0gICAgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAKLSAgICAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNDUsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNywgCi0gICAgMjQ1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNiwgCi0gICAgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNywgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAKLSAgICAyNTAsIDI1MSwgMjcsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDI3LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCi0gICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAotICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKLSAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDAsIDMwLCAzMSwgMjYyLCAyNjMsIAotICAgIDI2NCwgMjY1LCAyNjYsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDI2NywgMjY4LCAyNjksIDI3MCwgMjAsIDMwLCAzMSwgCi0gICAgMjAsIDMwLCAzMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5NSwgOTUsIDI3MSwgMjcxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMjAsIDUsIDUsIDUsIDUsIDUsIDUsIDMwLCAzMSwgMzAsIDMxLCAyNSwgMjUsIDI1LCAzMCwgMzEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDI3LCA1LCA1LCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMCwgMjcyLCAwLCAwLCAwLCAwLCAwLCAyNzIsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgOTYsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNzMsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMjQ0LCAyNDUsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjAsIDIwLCAyNTAsIDIwLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUyLCAyNTIsIDI1MiwgMjUyLCAKKyAgICAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDAsIDAsIDI1MiwgMjUyLCAyNTIsIAorICAgIDI1MiwgMjUyLCAyNTIsIDAsIDAsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTIsIDI1MiwgCisgICAgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIAorICAgIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAwLCAKKyAgICAwLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAwLCAwLCAyNTMsIDI1MSwgMjU0LCAyNTEsIDI1NSwgMjUxLCAyNTYsIAorICAgIDI1MSwgMCwgMjUyLCAwLCAyNTIsIDAsIDI1MiwgMCwgMjUyLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIAorICAgIDI1MSwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1NywgMjU3LCAyNTgsIDI1OCwgMjU4LCAKKyAgICAyNTgsIDI1OSwgMjU5LCAyNjAsIDI2MCwgMjYxLCAyNjEsIDI2MiwgMjYyLCAwLCAwLCAyNjMsIDI2NCwgMjY1LCAyNjYsIAorICAgIDI2NywgMjY4LCAyNjksIDI3MCwgMjcxLCAyNzIsIDI3MywgMjc0LCAyNzUsIDI3NiwgMjc3LCAyNzgsIDI3OSwgMjgwLCAKKyAgICAyODEsIDI4MiwgMjgzLCAyODQsIDI4NSwgMjg2LCAyODcsIDI4OCwgMjg5LCAyOTAsIDI5MSwgMjkyLCAyOTMsIDI5NCwgCisgICAgMjk1LCAyOTYsIDI5NywgMjk4LCAyOTksIDMwMCwgMzAxLCAzMDIsIDMwMywgMzA0LCAzMDUsIDMwNiwgMzA3LCAzMDgsIAorICAgIDMwOSwgMzEwLCAyNTEsIDI1MSwgMzExLCAzMTIsIDMxMywgMCwgMzE0LCAzMTUsIDI1MiwgMjUyLCAzMTYsIDMxNiwgMzE3LCAKKyAgICA2LCAzMTgsIDYsIDYsIDYsIDMxOSwgMzIwLCAzMjEsIDAsIDMyMiwgMzIzLCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNSwgNiwgCisgICAgNiwgNiwgMjUxLCAyNTEsIDMyNiwgMzI3LCAwLCAwLCAzMjgsIDMyOSwgMjUyLCAyNTIsIDMzMCwgMzMwLCAwLCA2LCA2LCA2LCAKKyAgICAyNTEsIDI1MSwgMzMxLCAzMzIsIDMzMywgMTI2LCAzMzQsIDMzNSwgMjUyLCAyNTIsIDMzNiwgMzM2LCAxMzAsIDYsIDYsIDYsIAorICAgIDAsIDAsIDMzNywgMzM4LCAzMzksIDAsIDM0MCwgMzQxLCAzNDIsIDM0MiwgMzQzLCAzNDMsIDM0NCwgNiwgNiwgMCwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjEsIDIxLCAyMSwgMjEsIDIxLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCAKKyAgICA2LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA1LCA1LCA2LCAzLCAzLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDIsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDM0NSwgMTAxLCAKKyAgICAwLCAwLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCA1LCA1LCA1LCA1LCA1LCAxMDEsIDM0NSwgMjYsIDIyLCAyMywgCisgICAgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgNSwgNSwgNSwgNSwgNSwgMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNiwgNiwgNiwgNiwgMjUsIDYsIDYsIDYsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDEyMCwgNSwgNSwgNSwgNSwgMTIwLCA1LCA1LCAyMCwgMTIwLCAxMjAsIDEyMCwgMjAsIDIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAyMCwgNSwgMTIwLCA1LCA1LCAzNTIsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAxMjAsIDUsIDM1MywgNSwgMTIwLCA1LCAzNTQsIDM1NSwgMTIwLCAxMjAsIDM1MiwgMjAsIDEyMCwgMTIwLCAzNTYsIDEyMCwgCisgICAgMjAsIDU1LCA1NSwgNTUsIDU1LCAyMCwgNSwgNSwgMjAsIDIwLCAxMjAsIDEyMCwgNSwgNSwgNSwgNSwgNSwgMTIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgNSwgNSwgNSwgNSwgMzU3LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAKKyAgICAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgCisgICAgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDI0MSwgMjQxLCAyNDEsIDMwLCAzMSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNywgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMiwgNSwgNSwgNSwgNSwgOTYsIDU1LCAxNDEsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDUsIDk2LCAKLSAgICA5NiwgOTYsIDk2LCA5NiwgNSwgNSwgMTQxLCAxNDEsIDE0MSwgOTYsIDU1LCA1LCA1LCA1LCAwLCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgNiwgNiwgOTYsIDk2LCA1NSwgCi0gICAgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNSwgOTYsIDk2LCA5NiwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNDYsIAorICAgIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAKKyAgICAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCiAgICAgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIAorICAgIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAKKyAgICAzNjAsIDM2MCwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgCisgICAgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIAorICAgIDM0NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIAorICAgIDM0OSwgMzUwLCAzNTEsIDI3LCAzNDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3NCwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDI3NCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAyNzQsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAyNzQsIDU1LCAyNzQsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgMjc0LCAyNzQsIDI3NCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgMjc0LCAyNzQsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDk2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA5NiwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA1NSwgMjUsIDYsIDYsIDYsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCA1LCA5NiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDU1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjYsIDIyLCAKKyAgICAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgCisgICAgMzUwLCAzNTEsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIAorICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKKyAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCisgICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDAsIAorICAgIDMwLCAzMSwgMzYyLCAzNjMsIDM2NCwgMzY1LCAzNjYsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDM2NywgMzY4LCAzNjksIAorICAgIDM3MCwgMjAsIDMwLCAzMSwgMjAsIDMwLCAzMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMzcxLCAzNzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAyMCwgNSwgNSwgNSwgNSwgNSwgNSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDI1LCAyNSwgMjUsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMjcsIDUsIDUsIDM3MiwgMzcyLCAzNzIsIAorICAgIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAKKyAgICAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgCisgICAgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAwLCAzNzIsIDAsIDAsIDAsIDAsIDAsIDM3MiwgMCwgMCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCAKLSAgICA2LCA2LCA2LCA2LCA2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA2LCA2LCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDIwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCA5NSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMjc1LCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgOTYsIDYsIDYsIDMwLCAzMSwgMjc2LCAyMCwgMCwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAyNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDIsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAzNzMsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1LCA5NSwgMjAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgCi0gICAgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgCi0gICAgMTgsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyLCA1LCAKKyAgICA1LCA1LCA1LCAxMDIsIDU1LCAyNDEsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAxOCwgMTgsIDUsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCA1LCA1LCAyNDEsIDI0MSwgMjQxLCAxMDIsIAorICAgIDU1LCA1LCA1LCA1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgCi0gICAgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1NSwgCi0gICAgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMjUsIAotICAgIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCAwLCA5NiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgCi0gICAgMjUsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAotICAgIDE2LCAwLCAwLCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgOTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDU1LCAxOCwgMCwgMCwgMCwgMCwgNTUsIAorICAgIDAsIDAsIDI1LCAyNSwgNiwgNiwgMTAyLCAxMDIsIDU1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMjUsIDI1LCAyNSwgNTUsIDU1LCAKLSAgICAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCA1NSwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDk2LCA1LCA1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAyNSwgMjUsIDE4LCAxOCwgNSwgNSwgNTUsIDk2LCA5NiwgCi0gICAgMTgsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgCi0gICAgMTgsIDE4LCAyNSwgMTgsIDE4LCA1LCAxOCwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDEwMiwgMTAyLCAxMDIsIDU1LCAwLCAwLCAwLCAwLCAwLCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1LCA1LCAyNywgMjcsIDI3LCAyNywgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCi0gICAgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMjc0LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNzgsIDI3OSwgMjgwLCAyODEsIDI4MiwgMjgzLCAyODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI4NSwgMjg2LCAyODcsIDI4OCwgMjg5LCAwLCAwLCAwLCAwLCAwLCA1NSwgMjUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIAorICAgIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yNDA2LDE5OCArMjg5Nyw2MzkgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDI5MCwgMjkwLCAyOTAsIDI5MCwgMjkwLCAyOTAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAyOTAsIDI5MCwgNSwgNSwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAxOCwgMTgsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgCi0gICAgMTgsIDUsIDUsIDYsIDAsIDUsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI5MCwgNTUsIDI5MCwgNTUsIDI5MCwgMCwgMjkwLCA1NSwgMjkwLCA1NSwgCi0gICAgMjkwLCA1NSwgMjkwLCA1NSwgMjkwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyMSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNiwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgNSwgNiwgMTgsIDYsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDk2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyOTEsIDI5MSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDAsIDAsIDUsIDUsIDUsIDYsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDUsIDUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDI3LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMCwgMCwgNTUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM3NCwgCisgICAgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDM3NCwgNTUsIDM3NCwgMzc0LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDM3NCwgMzc0LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDM3NCwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAzNzQsIDM3NCwgMzc0LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxNDEsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIAorICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAxMDIsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgNTUsIDI1LCA2LCA2LCA2LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgNSwgMTAyLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTAxLCAxMDEsIDI1LCAyNSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCAKKyAgICA2LCA2LCA2LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCA2LCA2LCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDIwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAxMDEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDM3NSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDEwMiwgNiwgNiwgMzAsIDMxLCAzNzYsIDIwLCA1NSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDIwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzNzcsIDM3OCwgMzc5LCAzODAsIDAsIDAsIDM4MSwgMzgyLCAzODMsIDM4NCwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDEwMSwgMTAxLCAKKyAgICAyMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIDE4LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNTUsIDUsIDU1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDEwMiwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDEwMiwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgCisgICAgMTgsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDI1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAorICAgIDE0LCAxNSwgMTYsIDAsIDAsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDU1LCAxOCwgMjUsIDE4LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMjUsIDI1LCAKKyAgICAyNSwgNTUsIDU1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCA1NSwgMjUsIDU1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDEwMiwgCisgICAgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDUsIAorICAgIDUsIDU1LCAxMDIsIDEwMiwgMTgsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMzg1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNiwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODYsIDM4NywgMzg4LCAzODksIDM5MCwgCisgICAgMzkxLCAzOTIsIDM5MywgMzk0LCAzOTUsIDM5NiwgMzk3LCAzOTgsIDM5OSwgNDAwLCA0MDEsIDQwMiwgNDAzLCA0MDQsIAorICAgIDQwNSwgNDA2LCA0MDcsIDQwOCwgNDA5LCA0MTAsIDQxMSwgNDEyLCA0MTMsIDQxNCwgNDE1LCA0MTYsIDQxNywgNDE4LCAKKyAgICA0MTksIDQyMCwgNDIxLCA0MjIsIDQyMywgNDI0LCA0MjUsIDQyNiwgNDI3LCA0MjgsIDQyOSwgNDMwLCA0MzEsIDQzMiwgCisgICAgNDMzLCA0MzQsIDQzNSwgNDM2LCA0MzcsIDQzOCwgNDM5LCA0NDAsIDQ0MSwgNDQyLCA0NDMsIDQ0NCwgNDQ1LCA0NDYsIAorICAgIDQ0NywgNDQ4LCA0NDksIDQ1MCwgNDUxLCA0NTIsIDQ1MywgNDU0LCA0NTUsIDQ1NiwgNDU3LCA0NTgsIDQ1OSwgNDYwLCAKKyAgICA0NjEsIDQ2MiwgNDYzLCA0NjQsIDQ2NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDUsIDE4LCAyNSwgMCwgMCwgNywgCisgICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY2LCA0NjcsIDQ2OCwgNDY5LCAKKyAgICA0NzAsIDQ3MSwgNDcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzMsIDQ3NCwgNDc1LCA0NzYsIAorICAgIDQ3NywgMCwgMCwgMCwgMCwgMCwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCAKKyAgICA2LCA2LCA2LCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNDc4LCA0NzgsIDQ3OCwgNDc4LCA0NzgsIDQ3OCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAKLSAgICAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgCi0gICAgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkzLCAyOTMsIAotICAgIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAKLSAgICAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgCi0gICAgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNDc4LCA0NzgsIDUsIDUsIDAsIDAsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA2LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgMTgsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDE4LCA1LCA1LCA2LCAwLCA1LCA2LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICA0NzgsIDU1LCA0NzgsIDU1LCA0NzgsIDAsIDQ3OCwgNTUsIDQ3OCwgNTUsIDQ3OCwgNTUsIDQ3OCwgNTUsIDQ3OCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDUsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgMjEsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAorICAgIDEzLCAxNCwgMTUsIDE2LCA2LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDUsIAorICAgIDUsIDYsIDE4LCA2LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKKyAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCi0gICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAyNSwgMjUsIDI1LCAwLCAyNSwgCi0gICAgMjUsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDQ3OSwgNDc5LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgCi0gICAgMjYsIDIyLCAyMywgMjQ2LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDUsIDUsIDUsIDYsIDUsIDUsIDUsIDAsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDUsIDUsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDI3LCAyNywgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDI3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAKICAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAwLCAxOCwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIAotICAgIDI0OSwgMjUwLCAyNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNywgOCwgOSwgMTAsIAotICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAxOCwgMTgsIDI1LCAyNSwgNSwgNSwgMjEsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKLSAgICAxNiwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNywgMjcsIDUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjQxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI0MSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MCwgNDgwLCAKKyAgICA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgCisgICAgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIAorICAgIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgxLCA0ODEsIDQ4MSwgNDgxLCAKKyAgICA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgCisgICAgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIAorICAgIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA3LCAKKyAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCA1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMjcsIDI3LCA1NSwgNTUsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgNTUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICAwLCAwLCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgMjYsIDIyLCAyMywgMzQ2LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCAwLCAKKyAgICAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4LCAxMDgsIAorICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAKKyAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgCisgICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIAorICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAorICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKKyAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCisgICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDAsIDE4LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIAorICAgIDM1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCisgICAgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMTgsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIAorICAgIDI1LCAyNSwgNSwgNSwgMjEsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCisgICAgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgCisgICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNSwgNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDI1LCAyNSwgMjUsIDUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNSwgCisgICAgNTUsIDUsIDUsIDUsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDI1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIAorICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIAorICAgIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAxOCwgMCwgMCwgNTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMCwgMCwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIDI1LCA1NSwgNTUsIAorICAgIDUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAKKyAgICAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAxOCwgMTgsIDI1LCAxOCwgMjUsIDI1LCA1LCA1LCA1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCisgICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDE4LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMTgsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAKKyAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKKyAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKKyAgICAxOSwgMTksIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAwLCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIApAQCAtMjYwNywyOTcgKzM1MzksMzc5IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCiAgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCiAgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCi0gICAgNSwgNSwgNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDAsIDExMywgMTEzLCAwLCAwLCAxMTMsIDAsIDAsIAotICAgIDExMywgMTEzLCAwLCAwLCAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMCwgMjAsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAwLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDAsIDAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDAsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDExMywgMCwgMCwgMCwgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMCwgMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCA1LCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNSwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCA1LCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAyMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKLSAgICAxNSwgMTYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAotICAgIDE1LCAxNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCi0gICAgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgNTUsIDAsIDU1LCAwLCAKLSAgICA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIAotICAgIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDUsIDI0NSwgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAKLSAgICAyNTAsIDI1MSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgCi0gICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCi0gICAgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDUsIDI1LCAyNSwgNSwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDEyMCwgMCwgMTIwLCAxMjAsIDAsIDAsIDEyMCwgMCwgMCwgMTIwLCAxMjAsIDAsIDAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAwLCAyMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTIwLCAxMjAsIDAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMCwgMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMjAsIDEyMCwgMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMCwgMTIwLCAwLCAwLCAwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAwLCAwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA1LCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDUsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA1LCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAxMjAsIDIwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNywgOCwgCisgICAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA3LCA4LCAKKyAgICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzQ1LCAzNDUsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNywgMCwgMCwgMCwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKKyAgICA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCisgICAgNDgyLCA0ODIsIDUsIDUsIDUsIDUsIDUsIDUsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAorICAgIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKKyAgICA0ODIsIDQ4MiwgNDgyLCA1LCA1LCAwLCAwLCAwLCAwLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCisgICAgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAorICAgIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNiwgNiwgNiwgNiwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDM3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAotICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAotICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIApAQCAtMjkxMCwxMyArMzkyNCwxMyBAQAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAwLCAwLCAKKyAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAwLCAwLCAKIH07CiAKIC8qIFJldHVybnMgdGhlIG51bWVyaWMgdmFsdWUgYXMgZG91YmxlIGZvciBVbmljb2RlIGNoYXJhY3RlcnMKQEAgLTI5NDEsNiArMzk1NSw3IEBACiAgICAgY2FzZSAweDBDNzg6CiAgICAgY2FzZSAweDBDRTY6CiAgICAgY2FzZSAweDBENjY6CisgICAgY2FzZSAweDBERTY6CiAgICAgY2FzZSAweDBFNTA6CiAgICAgY2FzZSAweDBFRDA6CiAgICAgY2FzZSAweDBGMjA6CkBAIC0yOTY5LDYgKzM5ODQsNyBAQAogICAgIGNhc2UgMHhBOEQwOgogICAgIGNhc2UgMHhBOTAwOgogICAgIGNhc2UgMHhBOUQwOgorICAgIGNhc2UgMHhBOUYwOgogICAgIGNhc2UgMHhBQTUwOgogICAgIGNhc2UgMHhBQkYwOgogICAgIGNhc2UgMHhGOUIyOgpAQCAtMjk3OSw3ICszOTk1LDE0IEBACiAgICAgY2FzZSAweDExMEYwOgogICAgIGNhc2UgMHgxMTEzNjoKICAgICBjYXNlIDB4MTExRDA6CisgICAgY2FzZSAweDExMkYwOgorICAgIGNhc2UgMHgxMTREMDoKKyAgICBjYXNlIDB4MTE2NTA6CiAgICAgY2FzZSAweDExNkMwOgorICAgIGNhc2UgMHgxMTczMDoKKyAgICBjYXNlIDB4MTE4RTA6CisgICAgY2FzZSAweDE2QTYwOgorICAgIGNhc2UgMHgxNkI1MDoKICAgICBjYXNlIDB4MUQ3Q0U6CiAgICAgY2FzZSAweDFEN0Q4OgogICAgIGNhc2UgMHgxRDdFMjoKQEAgLTI5ODcsNiArNDAxMCw4IEBACiAgICAgY2FzZSAweDFEN0Y2OgogICAgIGNhc2UgMHgxRjEwMDoKICAgICBjYXNlIDB4MUYxMDE6CisgICAgY2FzZSAweDFGMTBCOgorICAgIGNhc2UgMHgxRjEwQzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDAuMDsKICAgICBjYXNlIDB4MDAzMToKICAgICBjYXNlIDB4MDBCOToKQEAgLTMwMDQsNiArNDAyOSw3IEBACiAgICAgY2FzZSAweDBDN0M6CiAgICAgY2FzZSAweDBDRTc6CiAgICAgY2FzZSAweDBENjc6CisgICAgY2FzZSAweDBERTc6CiAgICAgY2FzZSAweDBFNTE6CiAgICAgY2FzZSAweDBFRDE6CiAgICAgY2FzZSAweDBGMjE6CkBAIC0zMDQ3LDYgKzQwNzMsNyBAQAogICAgIGNhc2UgMHhBOEQxOgogICAgIGNhc2UgMHhBOTAxOgogICAgIGNhc2UgMHhBOUQxOgorICAgIGNhc2UgMHhBOUYxOgogICAgIGNhc2UgMHhBQTUxOgogICAgIGNhc2UgMHhBQkYxOgogICAgIGNhc2UgMHhGRjExOgpAQCAtMzA1NSwzOSArNDA4Miw1OSBAQAogICAgIGNhc2UgMHgxMDE1ODoKICAgICBjYXNlIDB4MTAxNTk6CiAgICAgY2FzZSAweDEwMTVBOgorICAgIGNhc2UgMHgxMDJFMToKICAgICBjYXNlIDB4MTAzMjA6CiAgICAgY2FzZSAweDEwM0QxOgogICAgIGNhc2UgMHgxMDRBMToKICAgICBjYXNlIDB4MTA4NTg6CisgICAgY2FzZSAweDEwODc5OgorICAgIGNhc2UgMHgxMDhBNzoKKyAgICBjYXNlIDB4MTA4RkI6CiAgICAgY2FzZSAweDEwOTE2OgorICAgIGNhc2UgMHgxMDlDMDoKICAgICBjYXNlIDB4MTBBNDA6CiAgICAgY2FzZSAweDEwQTdEOgorICAgIGNhc2UgMHgxMEE5RDoKKyAgICBjYXNlIDB4MTBBRUI6CiAgICAgY2FzZSAweDEwQjU4OgogICAgIGNhc2UgMHgxMEI3ODoKKyAgICBjYXNlIDB4MTBCQTk6CisgICAgY2FzZSAweDEwQ0ZBOgogICAgIGNhc2UgMHgxMEU2MDoKICAgICBjYXNlIDB4MTEwNTI6CiAgICAgY2FzZSAweDExMDY3OgogICAgIGNhc2UgMHgxMTBGMToKICAgICBjYXNlIDB4MTExMzc6CiAgICAgY2FzZSAweDExMUQxOgorICAgIGNhc2UgMHgxMTFFMToKKyAgICBjYXNlIDB4MTEyRjE6CisgICAgY2FzZSAweDExNEQxOgorICAgIGNhc2UgMHgxMTY1MToKICAgICBjYXNlIDB4MTE2QzE6CisgICAgY2FzZSAweDExNzMxOgorICAgIGNhc2UgMHgxMThFMToKICAgICBjYXNlIDB4MTI0MTU6CiAgICAgY2FzZSAweDEyNDFFOgogICAgIGNhc2UgMHgxMjQyQzoKICAgICBjYXNlIDB4MTI0MzQ6CiAgICAgY2FzZSAweDEyNDRGOgogICAgIGNhc2UgMHgxMjQ1ODoKKyAgICBjYXNlIDB4MTZBNjE6CisgICAgY2FzZSAweDE2QjUxOgogICAgIGNhc2UgMHgxRDM2MDoKICAgICBjYXNlIDB4MUQ3Q0Y6CiAgICAgY2FzZSAweDFEN0Q5OgogICAgIGNhc2UgMHgxRDdFMzoKICAgICBjYXNlIDB4MUQ3RUQ6CiAgICAgY2FzZSAweDFEN0Y3OgorICAgIGNhc2UgMHgxRThDNzoKICAgICBjYXNlIDB4MUYxMDI6CiAgICAgY2FzZSAweDIwOTJBOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wOwogICAgIGNhc2UgMHgyMTUyOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzEwLjA7CisgICAgY2FzZSAweDEwOUY2OgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzEyLjA7CiAgICAgY2FzZSAweDA5RjQ6CiAgICAgY2FzZSAweDBCNzU6CiAgICAgY2FzZSAweEE4MzM6CkBAIC0zMTAxLDEyICs0MTQ4LDE1IEBACiAgICAgY2FzZSAweDEwMTQxOgogICAgIGNhc2UgMHgxMDE3NToKICAgICBjYXNlIDB4MTAxNzY6CisgICAgY2FzZSAweDEwOUJEOgogICAgIGNhc2UgMHgxMEU3QjoKKyAgICBjYXNlIDB4MTI0NjQ6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMi4wOwogICAgIGNhc2UgMHgyMTUzOgogICAgIGNhc2UgMHgxMEU3RDoKICAgICBjYXNlIDB4MTI0NUE6CiAgICAgY2FzZSAweDEyNDVEOgorICAgIGNhc2UgMHgxMjQ2NToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8zLjA7CiAgICAgY2FzZSAweDAwQkM6CiAgICAgY2FzZSAweDA5Rjc6CkBAIC0zMTE0LDkgKzQxNjQsMTEgQEAKICAgICBjYXNlIDB4MEQ3MzoKICAgICBjYXNlIDB4QTgzMDoKICAgICBjYXNlIDB4MTAxNDA6CisgICAgY2FzZSAweDEwMThCOgogICAgIGNhc2UgMHgxMEU3QzoKICAgICBjYXNlIDB4MTI0NjA6CiAgICAgY2FzZSAweDEyNDYyOgorICAgIGNhc2UgMHgxMjQ2MzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC80LjA7CiAgICAgY2FzZSAweDIxNTU6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvNS4wOwpAQCAtMzE2MywxNyArNDIxNSwzMiBAQAogICAgIGNhc2UgMHgxMDE2MjoKICAgICBjYXNlIDB4MTAxNjM6CiAgICAgY2FzZSAweDEwMTY0OgorICAgIGNhc2UgMHgxMDJFQToKICAgICBjYXNlIDB4MTAzMjI6CiAgICAgY2FzZSAweDEwM0QzOgogICAgIGNhc2UgMHgxMDg1QjoKKyAgICBjYXNlIDB4MTA4N0U6CisgICAgY2FzZSAweDEwOEFEOgorICAgIGNhc2UgMHgxMDhGRDoKICAgICBjYXNlIDB4MTA5MTc6CisgICAgY2FzZSAweDEwOUM5OgogICAgIGNhc2UgMHgxMEE0NDoKKyAgICBjYXNlIDB4MTBBOUU6CisgICAgY2FzZSAweDEwQUVEOgogICAgIGNhc2UgMHgxMEI1QzoKICAgICBjYXNlIDB4MTBCN0M6CisgICAgY2FzZSAweDEwQkFEOgorICAgIGNhc2UgMHgxMENGQzoKICAgICBjYXNlIDB4MTBFNjk6CiAgICAgY2FzZSAweDExMDVCOgorICAgIGNhc2UgMHgxMTFFQToKKyAgICBjYXNlIDB4MTE3M0E6CisgICAgY2FzZSAweDExOEVBOgorICAgIGNhc2UgMHgxNkI1QjoKICAgICBjYXNlIDB4MUQzNjk6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxMC4wOworICAgIGNhc2UgMHgxMDlGRjoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwLjAvMTIuMDsKICAgICBjYXNlIDB4MEJGMToKICAgICBjYXNlIDB4MEQ3MToKICAgICBjYXNlIDB4MTM3QjoKQEAgLTMxODYsMTQgKzQyNTMsMjMgQEAKICAgICBjYXNlIDB4MTAxNEI6CiAgICAgY2FzZSAweDEwMTUyOgogICAgIGNhc2UgMHgxMDE2QToKKyAgICBjYXNlIDB4MTAyRjM6CiAgICAgY2FzZSAweDEwM0Q1OgogICAgIGNhc2UgMHgxMDg1RDoKKyAgICBjYXNlIDB4MTA4QUY6CisgICAgY2FzZSAweDEwOEZGOgogICAgIGNhc2UgMHgxMDkxOToKKyAgICBjYXNlIDB4MTA5RDI6CiAgICAgY2FzZSAweDEwQTQ2OgorICAgIGNhc2UgMHgxMEFFRjoKICAgICBjYXNlIDB4MTBCNUU6CiAgICAgY2FzZSAweDEwQjdFOgorICAgIGNhc2UgMHgxMEJBRjoKKyAgICBjYXNlIDB4MTBDRkU6CiAgICAgY2FzZSAweDEwRTcyOgogICAgIGNhc2UgMHgxMTA2NDoKKyAgICBjYXNlIDB4MTExRjM6CisgICAgY2FzZSAweDE2QjVDOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAwLjA7CiAgICAgY2FzZSAweDBCRjI6CiAgICAgY2FzZSAweDBENzI6CkBAIC0zMjA4LDEwICs0Mjg0LDEzIEBACiAgICAgY2FzZSAweDEwMTU0OgogICAgIGNhc2UgMHgxMDE3MToKICAgICBjYXNlIDB4MTA4NUU6CisgICAgY2FzZSAweDEwOURCOgogICAgIGNhc2UgMHgxMEE0NzoKICAgICBjYXNlIDB4MTBCNUY6CiAgICAgY2FzZSAweDEwQjdGOgorICAgIGNhc2UgMHgxMENGRjoKICAgICBjYXNlIDB4MTEwNjU6CisgICAgY2FzZSAweDExMUY0OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAwMC4wOwogICAgIGNhc2UgMHgxMzdDOgogICAgIGNhc2UgMHgyMTgyOgpAQCAtMzIyMCwxMyArNDI5OSwyMiBAQAogICAgIGNhc2UgMHgxMDEyQjoKICAgICBjYXNlIDB4MTAxNTU6CiAgICAgY2FzZSAweDEwODVGOgorICAgIGNhc2UgMHgxMDlFNDoKKyAgICBjYXNlIDB4MTZCNUQ6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxMDAwMC4wOwogICAgIGNhc2UgMHgyMTg4OgorICAgIGNhc2UgMHgxMDlFRDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwMDAwMC4wOworICAgIGNhc2UgMHgxNkI1RToKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwMDAwMDAuMDsKICAgICBjYXNlIDB4NEVCRjoKICAgICBjYXNlIDB4NTEwNDoKKyAgICBjYXNlIDB4MTZCNUY6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxMDAwMDAwMDAuMDsKKyAgICBjYXNlIDB4MTZCNjA6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAxMDAwMDAwMDAwMC4wOwogICAgIGNhc2UgMHg1MTQ2OgorICAgIGNhc2UgMHgxNkI2MToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwMDAwMDAwMDAwMDAuMDsKICAgICBjYXNlIDB4MjE2QToKICAgICBjYXNlIDB4MjE3QToKQEAgLTMyMzUsNiArNDMyMyw4IEBACiAgICAgY2FzZSAweDI0OTI6CiAgICAgY2FzZSAweDI0RUI6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxMS4wOworICAgIGNhc2UgMHgxMDlCQzoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDExLjAvMTIuMDsKICAgICBjYXNlIDB4MEYyRjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDExLjAvMi4wOwogICAgIGNhc2UgMHgyMTZCOgpAQCAtMzMwNSw2ICs0Mzk1LDcgQEAKICAgICBjYXNlIDB4MEM3RDoKICAgICBjYXNlIDB4MENFODoKICAgICBjYXNlIDB4MEQ2ODoKKyAgICBjYXNlIDB4MERFODoKICAgICBjYXNlIDB4MEU1MjoKICAgICBjYXNlIDB4MEVEMjoKICAgICBjYXNlIDB4MEYyMjoKQEAgLTMzNDksNiArNDQ0MCw3IEBACiAgICAgY2FzZSAweEE4RDI6CiAgICAgY2FzZSAweEE5MDI6CiAgICAgY2FzZSAweEE5RDI6CisgICAgY2FzZSAweEE5RjI6CiAgICAgY2FzZSAweEFBNTI6CiAgICAgY2FzZSAweEFCRjI6CiAgICAgY2FzZSAweEY5Nzg6CkBAIC0zMzU4LDIwICs0NDUwLDMxIEBACiAgICAgY2FzZSAweDEwMTVDOgogICAgIGNhc2UgMHgxMDE1RDoKICAgICBjYXNlIDB4MTAxNUU6CisgICAgY2FzZSAweDEwMkUyOgogICAgIGNhc2UgMHgxMDNEMjoKICAgICBjYXNlIDB4MTA0QTI6CiAgICAgY2FzZSAweDEwODU5OgorICAgIGNhc2UgMHgxMDg3QToKKyAgICBjYXNlIDB4MTA4QTg6CiAgICAgY2FzZSAweDEwOTFBOgorICAgIGNhc2UgMHgxMDlDMToKICAgICBjYXNlIDB4MTBBNDE6CiAgICAgY2FzZSAweDEwQjU5OgogICAgIGNhc2UgMHgxMEI3OToKKyAgICBjYXNlIDB4MTBCQUE6CiAgICAgY2FzZSAweDEwRTYxOgogICAgIGNhc2UgMHgxMTA1MzoKICAgICBjYXNlIDB4MTEwNjg6CiAgICAgY2FzZSAweDExMEYyOgogICAgIGNhc2UgMHgxMTEzODoKICAgICBjYXNlIDB4MTExRDI6CisgICAgY2FzZSAweDExMUUyOgorICAgIGNhc2UgMHgxMTJGMjoKKyAgICBjYXNlIDB4MTE0RDI6CisgICAgY2FzZSAweDExNjUyOgogICAgIGNhc2UgMHgxMTZDMjoKKyAgICBjYXNlIDB4MTE3MzI6CisgICAgY2FzZSAweDExOEUyOgogICAgIGNhc2UgMHgxMjQwMDoKICAgICBjYXNlIDB4MTI0MTY6CiAgICAgY2FzZSAweDEyNDFGOgpAQCAtMzM4MiwyMCArNDQ4NSwyNiBAQAogICAgIGNhc2UgMHgxMjQ1MDoKICAgICBjYXNlIDB4MTI0NTY6CiAgICAgY2FzZSAweDEyNDU5OgorICAgIGNhc2UgMHgxNkE2MjoKKyAgICBjYXNlIDB4MTZCNTI6CiAgICAgY2FzZSAweDFEMzYxOgogICAgIGNhc2UgMHgxRDdEMDoKICAgICBjYXNlIDB4MUQ3REE6CiAgICAgY2FzZSAweDFEN0U0OgogICAgIGNhc2UgMHgxRDdFRToKICAgICBjYXNlIDB4MUQ3Rjg6CisgICAgY2FzZSAweDFFOEM4OgogICAgIGNhc2UgMHgxRjEwMzoKICAgICBjYXNlIDB4MjIzOTA6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAyLjA7CisgICAgY2FzZSAweDEwOUY3OgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMi4wLzEyLjA7CiAgICAgY2FzZSAweDIxNTQ6CiAgICAgY2FzZSAweDEwMTc3OgogICAgIGNhc2UgMHgxMEU3RToKICAgICBjYXNlIDB4MTI0NUI6CiAgICAgY2FzZSAweDEyNDVFOgorICAgIGNhc2UgMHgxMjQ2NjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDIuMC8zLjA7CiAgICAgY2FzZSAweDIxNTY6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAyLjAvNS4wOwpAQCAtMzQwOSwyMyArNDUxOCw0MCBAQAogICAgIGNhc2UgMHg1MzQ0OgogICAgIGNhc2UgMHg1RUZGOgogICAgIGNhc2UgMHgxMDExMToKKyAgICBjYXNlIDB4MTAyRUI6CiAgICAgY2FzZSAweDEwM0Q0OgogICAgIGNhc2UgMHgxMDg1QzoKKyAgICBjYXNlIDB4MTA4N0Y6CisgICAgY2FzZSAweDEwOEFFOgorICAgIGNhc2UgMHgxMDhGRToKICAgICBjYXNlIDB4MTA5MTg6CisgICAgY2FzZSAweDEwOUNBOgogICAgIGNhc2UgMHgxMEE0NToKKyAgICBjYXNlIDB4MTBBOUY6CisgICAgY2FzZSAweDEwQUVFOgogICAgIGNhc2UgMHgxMEI1RDoKICAgICBjYXNlIDB4MTBCN0Q6CisgICAgY2FzZSAweDEwQkFFOgogICAgIGNhc2UgMHgxMEU2QToKICAgICBjYXNlIDB4MTEwNUM6CisgICAgY2FzZSAweDExMUVCOgorICAgIGNhc2UgMHgxMTczQjoKKyAgICBjYXNlIDB4MTE4RUI6CiAgICAgY2FzZSAweDFEMzZBOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMjAuMDsKICAgICBjYXNlIDB4MTAxMUE6CisgICAgY2FzZSAweDEwMkY0OgorICAgIGNhc2UgMHgxMDlEMzoKICAgICBjYXNlIDB4MTBFNzM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAyMDAuMDsKICAgICBjYXNlIDB4MTAxMjM6CisgICAgY2FzZSAweDEwOURDOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMjAwMC4wOwogICAgIGNhc2UgMHgxMDEyQzoKKyAgICBjYXNlIDB4MTA5RTU6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAyMDAwMC4wOworICAgIGNhc2UgMHgxMDlFRToKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDIwMDAwMC4wOwogICAgIGNhc2UgMHgzMjUxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMjEuMDsKICAgICBjYXNlIDB4MTI0MzI6CkBAIC0zNDYyLDYgKzQ1ODgsNyBAQAogICAgIGNhc2UgMHgwQzdFOgogICAgIGNhc2UgMHgwQ0U5OgogICAgIGNhc2UgMHgwRDY5OgorICAgIGNhc2UgMHgwREU5OgogICAgIGNhc2UgMHgwRTUzOgogICAgIGNhc2UgMHgwRUQzOgogICAgIGNhc2UgMHgwRjIzOgpAQCAtMzUwNSwyNCArNDYzMiwzNiBAQAogICAgIGNhc2UgMHhBOEQzOgogICAgIGNhc2UgMHhBOTAzOgogICAgIGNhc2UgMHhBOUQzOgorICAgIGNhc2UgMHhBOUYzOgogICAgIGNhc2UgMHhBQTUzOgogICAgIGNhc2UgMHhBQkYzOgogICAgIGNhc2UgMHhGOTZCOgogICAgIGNhc2UgMHhGRjEzOgogICAgIGNhc2UgMHgxMDEwOToKKyAgICBjYXNlIDB4MTAyRTM6CiAgICAgY2FzZSAweDEwNEEzOgogICAgIGNhc2UgMHgxMDg1QToKKyAgICBjYXNlIDB4MTA4N0I6CisgICAgY2FzZSAweDEwOEE5OgogICAgIGNhc2UgMHgxMDkxQjoKKyAgICBjYXNlIDB4MTA5QzI6CiAgICAgY2FzZSAweDEwQTQyOgogICAgIGNhc2UgMHgxMEI1QToKICAgICBjYXNlIDB4MTBCN0E6CisgICAgY2FzZSAweDEwQkFCOgogICAgIGNhc2UgMHgxMEU2MjoKICAgICBjYXNlIDB4MTEwNTQ6CiAgICAgY2FzZSAweDExMDY5OgogICAgIGNhc2UgMHgxMTBGMzoKICAgICBjYXNlIDB4MTExMzk6CiAgICAgY2FzZSAweDExMUQzOgorICAgIGNhc2UgMHgxMTFFMzoKKyAgICBjYXNlIDB4MTEyRjM6CisgICAgY2FzZSAweDExNEQzOgorICAgIGNhc2UgMHgxMTY1MzoKICAgICBjYXNlIDB4MTE2QzM6CisgICAgY2FzZSAweDExNzMzOgorICAgIGNhc2UgMHgxMThFMzoKICAgICBjYXNlIDB4MTI0MDE6CiAgICAgY2FzZSAweDEyNDA4OgogICAgIGNhc2UgMHgxMjQxNzoKQEAgLTM1MzgsMTggKzQ2NzcsMjMgQEAKICAgICBjYXNlIDB4MTI0NEI6CiAgICAgY2FzZSAweDEyNDUxOgogICAgIGNhc2UgMHgxMjQ1NzoKKyAgICBjYXNlIDB4MTZBNjM6CisgICAgY2FzZSAweDE2QjUzOgogICAgIGNhc2UgMHgxRDM2MjoKICAgICBjYXNlIDB4MUQ3RDE6CiAgICAgY2FzZSAweDFEN0RCOgogICAgIGNhc2UgMHgxRDdFNToKICAgICBjYXNlIDB4MUQ3RUY6CiAgICAgY2FzZSAweDFEN0Y5OgorICAgIGNhc2UgMHgxRThDOToKICAgICBjYXNlIDB4MUYxMDQ6CiAgICAgY2FzZSAweDIwQUZEOgogICAgIGNhc2UgMHgyMEIxOToKICAgICBjYXNlIDB4MjI5OTg6CiAgICAgY2FzZSAweDIzQjFCOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wOworICAgIGNhc2UgMHgxMDlGODoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC8xMi4wOwogICAgIGNhc2UgMHgwOUY2OgogICAgIGNhc2UgMHgwQjc3OgogICAgIGNhc2UgMHhBODM1OgpAQCAtMzU3NCwxOSArNDcxOCwyOSBAQAogICAgIGNhc2UgMHg1MzQ1OgogICAgIGNhc2UgMHgxMDExMjoKICAgICBjYXNlIDB4MTAxNjU6CisgICAgY2FzZSAweDEwMkVDOgorICAgIGNhc2UgMHgxMDlDQjoKICAgICBjYXNlIDB4MTBFNkI6CiAgICAgY2FzZSAweDExMDVEOgorICAgIGNhc2UgMHgxMTFFQzoKKyAgICBjYXNlIDB4MTE4RUM6CiAgICAgY2FzZSAweDFEMzZCOgogICAgIGNhc2UgMHgyMDk4MzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMwLjA7CiAgICAgY2FzZSAweDEwMTFCOgogICAgIGNhc2UgMHgxMDE2QjoKKyAgICBjYXNlIDB4MTAyRjU6CisgICAgY2FzZSAweDEwOUQ0OgogICAgIGNhc2UgMHgxMEU3NDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMwMC4wOwogICAgIGNhc2UgMHgxMDEyNDoKKyAgICBjYXNlIDB4MTA5REQ6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzMDAwLjA7CiAgICAgY2FzZSAweDEwMTJEOgorICAgIGNhc2UgMHgxMDlFNjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMwMDAwLjA7CisgICAgY2FzZSAweDEwOUVGOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMzAwMDAwLjA7CiAgICAgY2FzZSAweDMyNUI6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzMS4wOwogICAgIGNhc2UgMHgzMjVDOgpAQCAtMzYxOCw2ICs0NzcyLDcgQEAKICAgICBjYXNlIDB4MEM2QToKICAgICBjYXNlIDB4MENFQToKICAgICBjYXNlIDB4MEQ2QToKKyAgICBjYXNlIDB4MERFQToKICAgICBjYXNlIDB4MEU1NDoKICAgICBjYXNlIDB4MEVENDoKICAgICBjYXNlIDB4MEYyNDoKQEAgLTM2NTgsMjEgKzQ4MTMsMzQgQEAKICAgICBjYXNlIDB4QThENDoKICAgICBjYXNlIDB4QTkwNDoKICAgICBjYXNlIDB4QTlENDoKKyAgICBjYXNlIDB4QTlGNDoKICAgICBjYXNlIDB4QUE1NDoKICAgICBjYXNlIDB4QUJGNDoKICAgICBjYXNlIDB4RkYxNDoKICAgICBjYXNlIDB4MTAxMEE6CisgICAgY2FzZSAweDEwMkU0OgogICAgIGNhc2UgMHgxMDRBNDoKKyAgICBjYXNlIDB4MTA4N0M6CisgICAgY2FzZSAweDEwOEFBOgorICAgIGNhc2UgMHgxMDhBQjoKKyAgICBjYXNlIDB4MTA5QzM6CiAgICAgY2FzZSAweDEwQTQzOgogICAgIGNhc2UgMHgxMEI1QjoKICAgICBjYXNlIDB4MTBCN0I6CisgICAgY2FzZSAweDEwQkFDOgogICAgIGNhc2UgMHgxMEU2MzoKICAgICBjYXNlIDB4MTEwNTU6CiAgICAgY2FzZSAweDExMDZBOgogICAgIGNhc2UgMHgxMTBGNDoKICAgICBjYXNlIDB4MTExM0E6CiAgICAgY2FzZSAweDExMUQ0OgorICAgIGNhc2UgMHgxMTFFNDoKKyAgICBjYXNlIDB4MTEyRjQ6CisgICAgY2FzZSAweDExNEQ0OgorICAgIGNhc2UgMHgxMTY1NDoKICAgICBjYXNlIDB4MTE2QzQ6CisgICAgY2FzZSAweDExNzM0OgorICAgIGNhc2UgMHgxMThFNDoKICAgICBjYXNlIDB4MTI0MDI6CiAgICAgY2FzZSAweDEyNDA5OgogICAgIGNhc2UgMHgxMjQwRjoKQEAgLTM2ODgsMTcgKzQ4NTYsMjMgQEAKICAgICBjYXNlIDB4MTI0NEM6CiAgICAgY2FzZSAweDEyNDUyOgogICAgIGNhc2UgMHgxMjQ1MzoKKyAgICBjYXNlIDB4MTI0Njk6CisgICAgY2FzZSAweDE2QTY0OgorICAgIGNhc2UgMHgxNkI1NDoKICAgICBjYXNlIDB4MUQzNjM6CiAgICAgY2FzZSAweDFEN0QyOgogICAgIGNhc2UgMHgxRDdEQzoKICAgICBjYXNlIDB4MUQ3RTY6CiAgICAgY2FzZSAweDFEN0YwOgogICAgIGNhc2UgMHgxRDdGQToKKyAgICBjYXNlIDB4MUU4Q0E6CiAgICAgY2FzZSAweDFGMTA1OgogICAgIGNhc2UgMHgyMDA2NDoKICAgICBjYXNlIDB4MjAwRTI6CiAgICAgY2FzZSAweDI2MjZEOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNC4wOworICAgIGNhc2UgMHgxMDlGOToKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDQuMC8xMi4wOwogICAgIGNhc2UgMHgyMTU4OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNC4wLzUuMDsKICAgICBjYXNlIDB4MTM3NToKQEAgLTM3MDYsMTkgKzQ4ODAsMzAgQEAKICAgICBjYXNlIDB4MzJCNToKICAgICBjYXNlIDB4NTM0QzoKICAgICBjYXNlIDB4MTAxMTM6CisgICAgY2FzZSAweDEwMkVEOgorICAgIGNhc2UgMHgxMDlDQzoKICAgICBjYXNlIDB4MTBFNkM6CiAgICAgY2FzZSAweDExMDVFOgorICAgIGNhc2UgMHgxMTFFRDoKKyAgICBjYXNlIDB4MTE4RUQ6CisgICAgY2FzZSAweDEyNDY3OgogICAgIGNhc2UgMHgxRDM2QzoKICAgICBjYXNlIDB4MjA5OEM6CiAgICAgY2FzZSAweDIwOTlDOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNDAuMDsKICAgICBjYXNlIDB4MTAxMUM6CisgICAgY2FzZSAweDEwMkY2OgorICAgIGNhc2UgMHgxMDlENToKICAgICBjYXNlIDB4MTBFNzU6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA0MDAuMDsKICAgICBjYXNlIDB4MTAxMjU6CisgICAgY2FzZSAweDEwOURFOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNDAwMC4wOwogICAgIGNhc2UgMHgxMDEyRToKKyAgICBjYXNlIDB4MTA5RTc6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA0MDAwMC4wOworICAgIGNhc2UgMHgxMDlGMDoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDQwMDAwMC4wOwogICAgIGNhc2UgMHgzMkI2OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNDEuMDsKICAgICBjYXNlIDB4MzJCNzoKQEAgLTM3NTIsNiArNDkzNyw3IEBACiAgICAgY2FzZSAweDBDNkI6CiAgICAgY2FzZSAweDBDRUI6CiAgICAgY2FzZSAweDBENkI6CisgICAgY2FzZSAweDBERUI6CiAgICAgY2FzZSAweDBFNTU6CiAgICAgY2FzZSAweDBFRDU6CiAgICAgY2FzZSAweDBGMjU6CkBAIC0zNzkyLDYgKzQ5NzgsNyBAQAogICAgIGNhc2UgMHhBOEQ1OgogICAgIGNhc2UgMHhBOTA1OgogICAgIGNhc2UgMHhBOUQ1OgorICAgIGNhc2UgMHhBOUY1OgogICAgIGNhc2UgMHhBQTU1OgogICAgIGNhc2UgMHhBQkY1OgogICAgIGNhc2UgMHhGRjE1OgpAQCAtMzgwMSwxNSArNDk4OCwyOCBAQAogICAgIGNhc2UgMHgxMDE0RjoKICAgICBjYXNlIDB4MTAxNUY6CiAgICAgY2FzZSAweDEwMTczOgorICAgIGNhc2UgMHgxMDJFNToKICAgICBjYXNlIDB4MTAzMjE6CiAgICAgY2FzZSAweDEwNEE1OgorICAgIGNhc2UgMHgxMDg3RDoKKyAgICBjYXNlIDB4MTA4QUM6CisgICAgY2FzZSAweDEwOEZDOgorICAgIGNhc2UgMHgxMDlDNDoKKyAgICBjYXNlIDB4MTBBRUM6CisgICAgY2FzZSAweDEwQ0ZCOgogICAgIGNhc2UgMHgxMEU2NDoKICAgICBjYXNlIDB4MTEwNTY6CiAgICAgY2FzZSAweDExMDZCOgogICAgIGNhc2UgMHgxMTBGNToKICAgICBjYXNlIDB4MTExM0I6CiAgICAgY2FzZSAweDExMUQ1OgorICAgIGNhc2UgMHgxMTFFNToKKyAgICBjYXNlIDB4MTEyRjU6CisgICAgY2FzZSAweDExNEQ1OgorICAgIGNhc2UgMHgxMTY1NToKICAgICBjYXNlIDB4MTE2QzU6CisgICAgY2FzZSAweDExNzM1OgorICAgIGNhc2UgMHgxMThFNToKICAgICBjYXNlIDB4MTI0MDM6CiAgICAgY2FzZSAweDEyNDBBOgogICAgIGNhc2UgMHgxMjQxMDoKQEAgLTM4MjEsMTUgKzUwMjEsMjEgQEAKICAgICBjYXNlIDB4MTI0NEQ6CiAgICAgY2FzZSAweDEyNDU0OgogICAgIGNhc2UgMHgxMjQ1NToKKyAgICBjYXNlIDB4MTI0NkE6CisgICAgY2FzZSAweDE2QTY1OgorICAgIGNhc2UgMHgxNkI1NToKICAgICBjYXNlIDB4MUQzNjQ6CiAgICAgY2FzZSAweDFEN0QzOgogICAgIGNhc2UgMHgxRDdERDoKICAgICBjYXNlIDB4MUQ3RTc6CiAgICAgY2FzZSAweDFEN0YxOgogICAgIGNhc2UgMHgxRDdGQjoKKyAgICBjYXNlIDB4MUU4Q0I6CiAgICAgY2FzZSAweDFGMTA2OgogICAgIGNhc2UgMHgyMDEyMToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDUuMDsKKyAgICBjYXNlIDB4MTA5RkE6CisgICAgICAgIHJldHVybiAoZG91YmxlKSA1LjAvMTIuMDsKICAgICBjYXNlIDB4MEYyQzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDUuMC8yLjA7CiAgICAgY2FzZSAweDIxNUE6CkBAIC0zODUyLDEwICs1MDU4LDE2IEBACiAgICAgY2FzZSAweDEwMTY4OgogICAgIGNhc2UgMHgxMDE2OToKICAgICBjYXNlIDB4MTAxNzQ6CisgICAgY2FzZSAweDEwMkVFOgogICAgIGNhc2UgMHgxMDMyMzoKKyAgICBjYXNlIDB4MTA5Q0Q6CiAgICAgY2FzZSAweDEwQTdFOgorICAgIGNhc2UgMHgxMENGRDoKICAgICBjYXNlIDB4MTBFNkQ6CiAgICAgY2FzZSAweDExMDVGOgorICAgIGNhc2UgMHgxMTFFRToKKyAgICBjYXNlIDB4MTE4RUU6CisgICAgY2FzZSAweDEyNDY4OgogICAgIGNhc2UgMHgxRDM2RDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDUwLjA7CiAgICAgY2FzZSAweDIxNkU6CkBAIC0zODY5LDYgKzUwODEsOCBAQAogICAgIGNhc2UgMHgxMDE2RToKICAgICBjYXNlIDB4MTAxNkY6CiAgICAgY2FzZSAweDEwMTcwOgorICAgIGNhc2UgMHgxMDJGNzoKKyAgICBjYXNlIDB4MTA5RDY6CiAgICAgY2FzZSAweDEwRTc2OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNTAwLjA7CiAgICAgY2FzZSAweDIxODE6CkBAIC0zODc2LDEyICs1MDkwLDE2IEBACiAgICAgY2FzZSAweDEwMTQ2OgogICAgIGNhc2UgMHgxMDE0RToKICAgICBjYXNlIDB4MTAxNzI6CisgICAgY2FzZSAweDEwOURGOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNTAwMC4wOwogICAgIGNhc2UgMHgyMTg3OgogICAgIGNhc2UgMHgxMDEyRjoKICAgICBjYXNlIDB4MTAxNDc6CiAgICAgY2FzZSAweDEwMTU2OgorICAgIGNhc2UgMHgxMDlFODoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDUwMDAwLjA7CisgICAgY2FzZSAweDEwOUYxOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgNTAwMDAwLjA7CiAgICAgY2FzZSAweDAwMzY6CiAgICAgY2FzZSAweDA2NjY6CiAgICAgY2FzZSAweDA2RjY6CkBAIC0zODk1LDYgKzUxMTMsNyBAQAogICAgIGNhc2UgMHgwQzZDOgogICAgIGNhc2UgMHgwQ0VDOgogICAgIGNhc2UgMHgwRDZDOgorICAgIGNhc2UgMHgwREVDOgogICAgIGNhc2UgMHgwRTU2OgogICAgIGNhc2UgMHgwRUQ2OgogICAgIGNhc2UgMHgwRjI2OgpAQCAtMzkzNSwyMCArNTE1NCwyOSBAQAogICAgIGNhc2UgMHhBOEQ2OgogICAgIGNhc2UgMHhBOTA2OgogICAgIGNhc2UgMHhBOUQ2OgorICAgIGNhc2UgMHhBOUY2OgogICAgIGNhc2UgMHhBQTU2OgogICAgIGNhc2UgMHhBQkY2OgogICAgIGNhc2UgMHhGOUQxOgogICAgIGNhc2UgMHhGOUQzOgogICAgIGNhc2UgMHhGRjE2OgogICAgIGNhc2UgMHgxMDEwQzoKKyAgICBjYXNlIDB4MTAyRTY6CiAgICAgY2FzZSAweDEwNEE2OgorICAgIGNhc2UgMHgxMDlDNToKICAgICBjYXNlIDB4MTBFNjU6CiAgICAgY2FzZSAweDExMDU3OgogICAgIGNhc2UgMHgxMTA2QzoKICAgICBjYXNlIDB4MTEwRjY6CiAgICAgY2FzZSAweDExMTNDOgogICAgIGNhc2UgMHgxMTFENjoKKyAgICBjYXNlIDB4MTExRTY6CisgICAgY2FzZSAweDExMkY2OgorICAgIGNhc2UgMHgxMTRENjoKKyAgICBjYXNlIDB4MTE2NTY6CiAgICAgY2FzZSAweDExNkM2OgorICAgIGNhc2UgMHgxMTczNjoKKyAgICBjYXNlIDB4MTE4RTY6CiAgICAgY2FzZSAweDEyNDA0OgogICAgIGNhc2UgMHgxMjQwQjoKICAgICBjYXNlIDB4MTI0MTE6CkBAIC0zOTU2LDI5ICs1MTg0LDQ1IEBACiAgICAgY2FzZSAweDEyNDI4OgogICAgIGNhc2UgMHgxMjQ0MDoKICAgICBjYXNlIDB4MTI0NEU6CisgICAgY2FzZSAweDEyNDZCOgorICAgIGNhc2UgMHgxNkE2NjoKKyAgICBjYXNlIDB4MTZCNTY6CiAgICAgY2FzZSAweDFEMzY1OgogICAgIGNhc2UgMHgxRDdENDoKICAgICBjYXNlIDB4MUQ3REU6CiAgICAgY2FzZSAweDFEN0U4OgogICAgIGNhc2UgMHgxRDdGMjoKICAgICBjYXNlIDB4MUQ3RkM6CisgICAgY2FzZSAweDFFOENDOgogICAgIGNhc2UgMHgxRjEwNzoKICAgICBjYXNlIDB4MjBBRUE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA2LjA7CisgICAgY2FzZSAweDEwOUZCOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgNi4wLzEyLjA7CiAgICAgY2FzZSAweDEzNzc6CiAgICAgY2FzZSAweDMyNEQ6CiAgICAgY2FzZSAweDEwMTE1OgorICAgIGNhc2UgMHgxMDJFRjoKKyAgICBjYXNlIDB4MTA5Q0U6CiAgICAgY2FzZSAweDEwRTZFOgogICAgIGNhc2UgMHgxMTA2MDoKKyAgICBjYXNlIDB4MTExRUY6CisgICAgY2FzZSAweDExOEVGOgogICAgIGNhc2UgMHgxRDM2RToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDYwLjA7CiAgICAgY2FzZSAweDEwMTFFOgorICAgIGNhc2UgMHgxMDJGODoKKyAgICBjYXNlIDB4MTA5RDc6CiAgICAgY2FzZSAweDEwRTc3OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNjAwLjA7CiAgICAgY2FzZSAweDEwMTI3OgorICAgIGNhc2UgMHgxMDlFMDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDYwMDAuMDsKICAgICBjYXNlIDB4MTAxMzA6CisgICAgY2FzZSAweDEwOUU5OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNjAwMDAuMDsKKyAgICBjYXNlIDB4MTA5RjI6CisgICAgICAgIHJldHVybiAoZG91YmxlKSA2MDAwMDAuMDsKICAgICBjYXNlIDB4MDAzNzoKICAgICBjYXNlIDB4MDY2NzoKICAgICBjYXNlIDB4MDZGNzoKQEAgLTM5OTIsNiArNTIzNiw3IEBACiAgICAgY2FzZSAweDBDNkQ6CiAgICAgY2FzZSAweDBDRUQ6CiAgICAgY2FzZSAweDBENkQ6CisgICAgY2FzZSAweDBERUQ6CiAgICAgY2FzZSAweDBFNTc6CiAgICAgY2FzZSAweDBFRDc6CiAgICAgY2FzZSAweDBGMjc6CkBAIC00MDMyLDE4ICs1Mjc3LDI3IEBACiAgICAgY2FzZSAweEE4RDc6CiAgICAgY2FzZSAweEE5MDc6CiAgICAgY2FzZSAweEE5RDc6CisgICAgY2FzZSAweEE5Rjc6CiAgICAgY2FzZSAweEFBNTc6CiAgICAgY2FzZSAweEFCRjc6CiAgICAgY2FzZSAweEZGMTc6CiAgICAgY2FzZSAweDEwMTBEOgorICAgIGNhc2UgMHgxMDJFNzoKICAgICBjYXNlIDB4MTA0QTc6CisgICAgY2FzZSAweDEwOUM2OgogICAgIGNhc2UgMHgxMEU2NjoKICAgICBjYXNlIDB4MTEwNTg6CiAgICAgY2FzZSAweDExMDZEOgogICAgIGNhc2UgMHgxMTBGNzoKICAgICBjYXNlIDB4MTExM0Q6CiAgICAgY2FzZSAweDExMUQ3OgorICAgIGNhc2UgMHgxMTFFNzoKKyAgICBjYXNlIDB4MTEyRjc6CisgICAgY2FzZSAweDExNEQ3OgorICAgIGNhc2UgMHgxMTY1NzoKICAgICBjYXNlIDB4MTE2Qzc6CisgICAgY2FzZSAweDExNzM3OgorICAgIGNhc2UgMHgxMThFNzoKICAgICBjYXNlIDB4MTI0MDU6CiAgICAgY2FzZSAweDEyNDBDOgogICAgIGNhc2UgMHgxMjQxMjoKQEAgLTQwNTIsMTUgKzUzMDYsMjEgQEAKICAgICBjYXNlIDB4MTI0NDE6CiAgICAgY2FzZSAweDEyNDQyOgogICAgIGNhc2UgMHgxMjQ0MzoKKyAgICBjYXNlIDB4MTI0NkM6CisgICAgY2FzZSAweDE2QTY3OgorICAgIGNhc2UgMHgxNkI1NzoKICAgICBjYXNlIDB4MUQzNjY6CiAgICAgY2FzZSAweDFEN0Q1OgogICAgIGNhc2UgMHgxRDdERjoKICAgICBjYXNlIDB4MUQ3RTk6CiAgICAgY2FzZSAweDFEN0YzOgogICAgIGNhc2UgMHgxRDdGRDoKKyAgICBjYXNlIDB4MUU4Q0Q6CiAgICAgY2FzZSAweDFGMTA4OgogICAgIGNhc2UgMHgyMDAwMToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDcuMDsKKyAgICBjYXNlIDB4MTA5RkM6CisgICAgICAgIHJldHVybiAoZG91YmxlKSA3LjAvMTIuMDsKICAgICBjYXNlIDB4MEYyRDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDcuMC8yLjA7CiAgICAgY2FzZSAweDIxNUU6CkBAIC00MDY4LDE3ICs1MzI4LDI3IEBACiAgICAgY2FzZSAweDEzNzg6CiAgICAgY2FzZSAweDMyNEU6CiAgICAgY2FzZSAweDEwMTE2OgorICAgIGNhc2UgMHgxMDJGMDoKKyAgICBjYXNlIDB4MTA5Q0Y6CiAgICAgY2FzZSAweDEwRTZGOgogICAgIGNhc2UgMHgxMTA2MToKKyAgICBjYXNlIDB4MTExRjA6CisgICAgY2FzZSAweDExOEYwOgogICAgIGNhc2UgMHgxRDM2RjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDcwLjA7CiAgICAgY2FzZSAweDEwMTFGOgorICAgIGNhc2UgMHgxMDJGOToKKyAgICBjYXNlIDB4MTA5RDg6CiAgICAgY2FzZSAweDEwRTc4OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNzAwLjA7CiAgICAgY2FzZSAweDEwMTI4OgorICAgIGNhc2UgMHgxMDlFMToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDcwMDAuMDsKICAgICBjYXNlIDB4MTAxMzE6CisgICAgY2FzZSAweDEwOUVBOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNzAwMDAuMDsKKyAgICBjYXNlIDB4MTA5RjM6CisgICAgICAgIHJldHVybiAoZG91YmxlKSA3MDAwMDAuMDsKICAgICBjYXNlIDB4MDAzODoKICAgICBjYXNlIDB4MDY2ODoKICAgICBjYXNlIDB4MDZGODoKQEAgLTQwOTIsNiArNTM2Miw3IEBACiAgICAgY2FzZSAweDBDNkU6CiAgICAgY2FzZSAweDBDRUU6CiAgICAgY2FzZSAweDBENkU6CisgICAgY2FzZSAweDBERUU6CiAgICAgY2FzZSAweDBFNTg6CiAgICAgY2FzZSAweDBFRDg6CiAgICAgY2FzZSAweDBGMjg6CkBAIC00MTMwLDE4ICs1NDAxLDI3IEBACiAgICAgY2FzZSAweEE4RDg6CiAgICAgY2FzZSAweEE5MDg6CiAgICAgY2FzZSAweEE5RDg6CisgICAgY2FzZSAweEE5Rjg6CiAgICAgY2FzZSAweEFBNTg6CiAgICAgY2FzZSAweEFCRjg6CiAgICAgY2FzZSAweEZGMTg6CiAgICAgY2FzZSAweDEwMTBFOgorICAgIGNhc2UgMHgxMDJFODoKICAgICBjYXNlIDB4MTA0QTg6CisgICAgY2FzZSAweDEwOUM3OgogICAgIGNhc2UgMHgxMEU2NzoKICAgICBjYXNlIDB4MTEwNTk6CiAgICAgY2FzZSAweDExMDZFOgogICAgIGNhc2UgMHgxMTBGODoKICAgICBjYXNlIDB4MTExM0U6CiAgICAgY2FzZSAweDExMUQ4OgorICAgIGNhc2UgMHgxMTFFODoKKyAgICBjYXNlIDB4MTEyRjg6CisgICAgY2FzZSAweDExNEQ4OgorICAgIGNhc2UgMHgxMTY1ODoKICAgICBjYXNlIDB4MTE2Qzg6CisgICAgY2FzZSAweDExNzM4OgorICAgIGNhc2UgMHgxMThFODoKICAgICBjYXNlIDB4MTI0MDY6CiAgICAgY2FzZSAweDEyNDBEOgogICAgIGNhc2UgMHgxMjQxMzoKQEAgLTQxNDksMjggKzU0MjksNDMgQEAKICAgICBjYXNlIDB4MTI0MkE6CiAgICAgY2FzZSAweDEyNDQ0OgogICAgIGNhc2UgMHgxMjQ0NToKKyAgICBjYXNlIDB4MTI0NkQ6CisgICAgY2FzZSAweDE2QTY4OgorICAgIGNhc2UgMHgxNkI1ODoKICAgICBjYXNlIDB4MUQzNjc6CiAgICAgY2FzZSAweDFEN0Q2OgogICAgIGNhc2UgMHgxRDdFMDoKICAgICBjYXNlIDB4MUQ3RUE6CiAgICAgY2FzZSAweDFEN0Y0OgogICAgIGNhc2UgMHgxRDdGRToKKyAgICBjYXNlIDB4MUU4Q0U6CiAgICAgY2FzZSAweDFGMTA5OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOC4wOworICAgIGNhc2UgMHgxMDlGRDoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDguMC8xMi4wOwogICAgIGNhc2UgMHgxMzc5OgogICAgIGNhc2UgMHgzMjRGOgogICAgIGNhc2UgMHgxMDExNzoKKyAgICBjYXNlIDB4MTAyRjE6CiAgICAgY2FzZSAweDEwRTcwOgogICAgIGNhc2UgMHgxMTA2MjoKKyAgICBjYXNlIDB4MTExRjE6CisgICAgY2FzZSAweDExOEYxOgogICAgIGNhc2UgMHgxRDM3MDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDgwLjA7CiAgICAgY2FzZSAweDEwMTIwOgorICAgIGNhc2UgMHgxMDJGQToKKyAgICBjYXNlIDB4MTA5RDk6CiAgICAgY2FzZSAweDEwRTc5OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgODAwLjA7CiAgICAgY2FzZSAweDEwMTI5OgorICAgIGNhc2UgMHgxMDlFMjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDgwMDAuMDsKICAgICBjYXNlIDB4MTAxMzI6CisgICAgY2FzZSAweDEwOUVCOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgODAwMDAuMDsKKyAgICBjYXNlIDB4MTA5RjQ6CisgICAgICAgIHJldHVybiAoZG91YmxlKSA4MDAwMDAuMDsKICAgICBjYXNlIDB4MDAzOToKICAgICBjYXNlIDB4MDY2OToKICAgICBjYXNlIDB4MDZGOToKQEAgLTQxODQsNiArNTQ3OSw3IEBACiAgICAgY2FzZSAweDBDNkY6CiAgICAgY2FzZSAweDBDRUY6CiAgICAgY2FzZSAweDBENkY6CisgICAgY2FzZSAweDBERUY6CiAgICAgY2FzZSAweDBFNTk6CiAgICAgY2FzZSAweDBFRDk6CiAgICAgY2FzZSAweDBGMjk6CkBAIC00MjIzLDE4ICs1NTE5LDI3IEBACiAgICAgY2FzZSAweEE4RDk6CiAgICAgY2FzZSAweEE5MDk6CiAgICAgY2FzZSAweEE5RDk6CisgICAgY2FzZSAweEE5Rjk6CiAgICAgY2FzZSAweEFBNTk6CiAgICAgY2FzZSAweEFCRjk6CiAgICAgY2FzZSAweEZGMTk6CiAgICAgY2FzZSAweDEwMTBGOgorICAgIGNhc2UgMHgxMDJFOToKICAgICBjYXNlIDB4MTA0QTk6CisgICAgY2FzZSAweDEwOUM4OgogICAgIGNhc2UgMHgxMEU2ODoKICAgICBjYXNlIDB4MTEwNUE6CiAgICAgY2FzZSAweDExMDZGOgogICAgIGNhc2UgMHgxMTBGOToKICAgICBjYXNlIDB4MTExM0Y6CiAgICAgY2FzZSAweDExMUQ5OgorICAgIGNhc2UgMHgxMTFFOToKKyAgICBjYXNlIDB4MTEyRjk6CisgICAgY2FzZSAweDExNEQ5OgorICAgIGNhc2UgMHgxMTY1OToKICAgICBjYXNlIDB4MTE2Qzk6CisgICAgY2FzZSAweDExNzM5OgorICAgIGNhc2UgMHgxMThFOToKICAgICBjYXNlIDB4MTI0MDc6CiAgICAgY2FzZSAweDEyNDBFOgogICAgIGNhc2UgMHgxMjQxNDoKQEAgLTQyNDQsMzIgKzU1NDksNDcgQEAKICAgICBjYXNlIDB4MTI0NDc6CiAgICAgY2FzZSAweDEyNDQ4OgogICAgIGNhc2UgMHgxMjQ0OToKKyAgICBjYXNlIDB4MTI0NkU6CisgICAgY2FzZSAweDE2QTY5OgorICAgIGNhc2UgMHgxNkI1OToKICAgICBjYXNlIDB4MUQzNjg6CiAgICAgY2FzZSAweDFEN0Q3OgogICAgIGNhc2UgMHgxRDdFMToKICAgICBjYXNlIDB4MUQ3RUI6CiAgICAgY2FzZSAweDFEN0Y1OgogICAgIGNhc2UgMHgxRDdGRjoKKyAgICBjYXNlIDB4MUU4Q0Y6CiAgICAgY2FzZSAweDFGMTBBOgogICAgIGNhc2UgMHgyRjg5MDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDkuMDsKKyAgICBjYXNlIDB4MTA5RkU6CisgICAgICAgIHJldHVybiAoZG91YmxlKSA5LjAvMTIuMDsKICAgICBjYXNlIDB4MEYyRToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDkuMC8yLjA7CiAgICAgY2FzZSAweDEzN0E6CiAgICAgY2FzZSAweDEwMTE4OgorICAgIGNhc2UgMHgxMDJGMjoKICAgICBjYXNlIDB4MTAzNDE6CiAgICAgY2FzZSAweDEwRTcxOgogICAgIGNhc2UgMHgxMTA2MzoKKyAgICBjYXNlIDB4MTExRjI6CisgICAgY2FzZSAweDExOEYyOgogICAgIGNhc2UgMHgxRDM3MToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDkwLjA7CiAgICAgY2FzZSAweDEwMTIxOgorICAgIGNhc2UgMHgxMDJGQjoKICAgICBjYXNlIDB4MTAzNEE6CisgICAgY2FzZSAweDEwOURBOgogICAgIGNhc2UgMHgxMEU3QToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDkwMC4wOwogICAgIGNhc2UgMHgxMDEyQToKKyAgICBjYXNlIDB4MTA5RTM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA5MDAwLjA7CiAgICAgY2FzZSAweDEwMTMzOgorICAgIGNhc2UgMHgxMDlFQzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDkwMDAwLjA7CisgICAgY2FzZSAweDEwOUY1OgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgOTAwMDAwLjA7CiAgICAgfQogICAgIHJldHVybiAtMS4wOwogfQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX2J6Mi52Y3Byb2ogYi9QQy9WUzkuMC9fYnoyLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NlYjhjNy4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9fYnoyLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDU4MSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iX2J6MiINCi0JUHJvamVjdEdVSUQ9Ins3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9Ig0KLQlSb290TmFtZXNwYWNlPSJiejIiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2J6Mm1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iYnppcDIgMS4wLjYgSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxiemxpYi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJ6bGliX3ByaXZhdGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9ImJ6aXAyIDEuMC42IFNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcYmxvY2tzb3J0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcYnpsaWIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxjb21wcmVzcy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGNyY3RhYmxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcZGVjb21wcmVzcy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGh1ZmZtYW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxyYW5kdGFibGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fY3R5cGVzLnZjcHJvaiBiL1BDL1ZTOS4wL19jdHlwZXMudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTVjYmExLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL19jdHlwZXMudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNzA1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfY3R5cGVzIg0KLQlQcm9qZWN0R1VJRD0iezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0iDQotCVJvb3ROYW1lc3BhY2U9Il9jdHlwZXMiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGN0eXBlcy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGN0eXBlc19kbGZjbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaV9jb21tb24uaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmljb25maWcuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZml0YXJnZXQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlcy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxiYWNrcy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxwcm9jLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY2ZpZWxkLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbWFsbG9jX2Nsb3N1cmUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xwcmVwX2NpZi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXHN0Z2RpY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW4zMi5jIg0KLQkJCQk+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW42NC5hc20iDQotCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9aaSAvRm8gJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHdpbjY0Lm9iaiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL0ZvICZxdW90OyQoSW50RGlyKVx3aW42NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KLQkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx3aW42NC5vYmoiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHdpbjY0Lm9iaiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHdpbjY0Lm9iaiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19jdHlwZXNfdGVzdC52Y3Byb2ogYi9QQy9WUzkuMC9fY3R5cGVzX3Rlc3QudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDMzNTQ2Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL19jdHlwZXNfdGVzdC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MjEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9jdHlwZXNfdGVzdCINCi0JUHJvamVjdEdVSUQ9Ins5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9Ig0KLQlSb290TmFtZXNwYWNlPSJfY3R5cGVzX3Rlc3QiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzX3Rlc3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fZGVjaW1hbC52Y3Byb2ogYi9QQy9WUzkuMC9fZGVjaW1hbC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZmFiYjAuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX2RlY2ltYWwudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNzQzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfZGVjaW1hbCINCi0JUHJvamVjdEdVSUQ9InswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9Ig0KLQlSb290TmFtZXNwYWNlPSJfZGVjaW1hbCINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR18zMiAvRFBQUk8gL0RNQVNNIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR182NCAvRE1BU00iDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzMyIC9EUFBSTyAvRE1BU00iDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzY0IC9ETUFTTSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzY0IC9ETUFTTSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR18zMiAvRFBQUk8gL0RNQVNNIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzY0IC9ETUFTTSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcYmFzZWFyaXRoLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGJpdHMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29uc3RhbnRzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnZvbHV0ZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjcnQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZGlmcmFkaXgyLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGRvY3N0cmluZ3MuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm50LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZvdXJzdGVwLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG1wZGVjaW1hbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xudW1iZXJ0aGVvcnkuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcc2l4c3RlcC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x0cmFuc3Bvc2UuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdHlwZWFyaXRoLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHVtb2Rhcml0aC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x2Y2NvbXBhdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x2Y3N0ZGludC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcX2RlY2ltYWwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcYmFzZWFyaXRoLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnN0YW50cy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb250ZXh0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnZvbHV0ZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjcnQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZGlmcmFkaXgyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZudC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xmb3Vyc3RlcC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xpby5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xtZW1vcnkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbXBkZWNpbWFsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG51bWJlcnRoZW9yeS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xzaXhzdGVwLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHRyYW5zcG9zZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x2Y2RpdjY0LmFzbSINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL1ppIC9GbyAmcXVvdDskKEludERpcilcdmNkaXY2NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KLQkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx2Y2RpdjY0Lm9iaiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL1ppIC9GbyAmcXVvdDskKEludERpcilcdmNkaXY2NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KLQkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx2Y2RpdjY0Lm9iaiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9GbyAmcXVvdDskKEludERpcilcdmNkaXY2NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KLQkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx2Y2RpdjY0Lm9iaiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHZjZGl2NjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcdmNkaXY2NC5vYmoiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fZWxlbWVudHRyZWUudmNwcm9qIGIvUEMvVlM5LjAvX2VsZW1lbnR0cmVlLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjlkNzM3NS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9fZWxlbWVudHRyZWUudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNjEzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfZWxlbWVudHRyZWUiDQotCVByb2plY3RHVUlEPSJ7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfSINCi0JUm9vdE5hbWVzcGFjZT0iX2VsZW1lbnR0cmVlIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxhc2NpaS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxhc2NpaXRhYi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxleHBhdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxleHBhdF9jb25maWcuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcZXhwYXRfZXh0ZXJuYWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcaWFzY2lpdGFiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGludGVybmFsLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGxhdGluMXRhYi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxtYWNjb25maWcuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcbmFtZXRhYi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxweWV4cGF0bnMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcdXRmOHRhYi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx3aW5jb25maWcuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9lbGVtZW50dHJlZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWxwYXJzZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19oYXNobGliLnZjcHJvaiBiL1BDL1ZTOS4wL19oYXNobGliLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc0MTdlYy4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9faGFzaGxpYi52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9oYXNobGliIg0KLQlQcm9qZWN0R1VJRD0iezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0iDQotCVJvb3ROYW1lc3BhY2U9Il9oYXNobGliIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jNjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2hhc2hvcGVuc3NsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX2x6bWEudmNwcm9qIGIvUEMvVlM5LjAvX2x6bWEudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzYwMDNmLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL19sem1hLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDUzNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iX2x6bWEiDQotCVByb2plY3RHVUlEPSJ7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fSINCi0JUm9vdE5hbWVzcGFjZT0ibHptYSINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGx6bWFEaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGx6bWFEaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGx6bWFEaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGx6bWFEaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYSINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2x6bWFtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fbXNpLnZjcHJvaiBiL1BDL1ZTOS4wL19tc2kudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjIzMGUxLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL19tc2kudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTI5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfbXNpIg0KLQlQcm9qZWN0R1VJRD0iezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30iDQotCVJvb3ROYW1lc3BhY2U9Il9tc2kiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXF9tc2kuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvaiBiL1BDL1ZTOS4wL19tdWx0aXByb2Nlc3NpbmcudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjNkMWU3Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL19tdWx0aXByb2Nlc3NpbmcudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTQxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfbXVsdGlwcm9jZXNzaW5nIg0KLQlQcm9qZWN0R1VJRD0iezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0iDQotCVJvb3ROYW1lc3BhY2U9Il9tdWx0aXByb2Nlc3NpbmciDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXG11bHRpcHJvY2Vzc2luZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHNlbWFwaG9yZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19zb2NrZXQudmNwcm9qIGIvUEMvVlM5LjAvX3NvY2tldC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmMWY2ZDQuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX3NvY2tldC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9zb2NrZXQiDQotCVByb2plY3RHVUlEPSJ7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfSINCi0JUm9vdE5hbWVzcGFjZT0iX3NvY2tldCINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc29ja2V0bW9kdWxlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fc3FsaXRlMy52Y3Byb2ogYi9QQy9WUzkuMC9fc3FsaXRlMy52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyYzU3YWUuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX3NxbGl0ZTMudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNjA5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfc3FsaXRlMyINCi0JUHJvamVjdEdVSUQ9InsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9Ig0KLQlSb290TmFtZXNwYWNlPSJfc3FsaXRlMyINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHNxbGl0ZTNEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChzcWxpdGUzRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChzcWxpdGUzRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHNxbGl0ZTNEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHNxbGl0ZTNEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChzcWxpdGUzRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjYWNoZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNvbm5lY3Rpb24uaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjdXJzb3IuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtaWNyb3Byb3RvY29scy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1vZHVsZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHByZXBhcmVfcHJvdG9jb2wuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxyb3cuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxzdGF0ZW1lbnQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVx1dGlsLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY29ubmVjdGlvbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGN1cnNvci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVccHJlcGFyZV9wcm90b2NvbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHN0YXRlbWVudC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fc3NsLnZjcHJvaiBiL1BDL1ZTOS4wL19zc2wudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDdkYzI3Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL19zc2wudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTM3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KLQlOYW1lPSJfc3NsIg0KLQlQcm9qZWN0R1VJRD0ie0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0iDQotCVJvb3ROYW1lc3BhY2U9Il9zc2wiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jNjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgY3J5cHQzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIGNyeXB0MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jNjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgY3J5cHQzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgY3J5cHQzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jNjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgY3J5cHQzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3NsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX3Rlc3RidWZmZXIudmNwcm9qIGIvUEMvVlM5LjAvX3Rlc3RidWZmZXIudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzM3N2UxLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL190ZXN0YnVmZmVyLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDUyMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iX3Rlc3RidWZmZXIiDQotCVByb2plY3RHVUlEPSJ7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fSINCi0JUm9vdE5hbWVzcGFjZT0iX3Rlc3RidWZmZXIiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90ZXN0YnVmZmVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX3Rlc3RjYXBpLnZjcHJvaiBiL1BDL1ZTOS4wL190ZXN0Y2FwaS52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1MzMwMGEuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX3Rlc3RjYXBpLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDUyMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iX3Rlc3RjYXBpIg0KLQlQcm9qZWN0R1VJRD0iezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0iDQotCVJvb3ROYW1lc3BhY2U9Il90ZXN0Y2FwaSINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3Rlc3RjYXBpbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX3Rlc3RpbXBvcnRtdWx0aXBsZS52Y3Byb2ogYi9QQy9WUzkuMC9fdGVzdGltcG9ydG11bHRpcGxlLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRkOTEwZC4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9fdGVzdGltcG9ydG11bHRpcGxlLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDUyMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iX3Rlc3RpbXBvcnRtdWx0aXBsZSINCi0JUHJvamVjdEdVSUQ9InszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9Ig0KLQlSb290TmFtZXNwYWNlPSJfdGVzdGltcG9ydG11bHRpcGxlIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfdGVzdGltcG9ydG11bHRpcGxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX3RraW50ZXIudmNwcm9qIGIvUEMvVlM5LjAvX3RraW50ZXIudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTYzMzE3Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL190a2ludGVyLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDU0MSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iX3RraW50ZXIiDQotCVByb2plY3RHVUlEPSJ7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfSINCi0JUm9vdE5hbWVzcGFjZT0iX3RraW50ZXIiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0a0RpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0a0xpYkRlYnVnKSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0azY0RGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrNjRMaWJEZWJ1ZykiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGtEaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGtMaWIpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0azY0RGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrNjRMaWIpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0a0RpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0a0xpYikiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0azY0RGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrNjRMaWIpIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrTGliKSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0azY0RGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrNjRMaWIpIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3RraW50ZXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdGthcHBpbml0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvYmRpc3Rfd2luaW5zdC52Y3Byb2ogYi9QQy9WUzkuMC9iZGlzdF93aW5pbnN0LnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjhjYzdhZC4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9iZGlzdF93aW5pbnN0LnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDI3MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iYmRpc3Rfd2luaW5zdCINCi0JUHJvamVjdEdVSUQ9IntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9Ig0KLQlSb290TmFtZXNwYWNlPSJ3aW5pbnN0Ig0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlNa1R5cExpYkNvbXBhdGlibGU9InRydWUiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjEiDQotCQkJCVR5cGVMaWJyYXJ5TmFtZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC50bGIiDQotCQkJCUhlYWRlckZpbGVOYW1lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjEiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXC4uXEluY2x1ZGU7Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFBDOy4uXC4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY29tY3RsMzIubGliIGltYWdlaGxwLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOS4wLmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IkxJQkMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KLQkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlPdXRwdXREaXJlY3Rvcnk9IiQoUGxhdGZvcm1OYW1lKVwkKENvbmZpZ3VyYXRpb25OYW1lKSINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoUGxhdGZvcm1OYW1lKVwkKENvbmZpZ3VyYXRpb25OYW1lKSINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJ0cnVlIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QudGxiIg0KLQkJCQlIZWFkZXJGaWxlTmFtZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIxIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdDsuLlwuLlxJbmNsdWRlOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMCINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIwIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQzsuLlwuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNvbWN0bDMyLmxpYiBpbWFnZWhscC5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC1hbWQ2NC5leGUiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAtYW1kNjQucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCi0JCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJRmlsdGVyPSJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0Ig0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcZXh0cmFjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxpbnN0YWxsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbHRlcg0KLQkJCQlOYW1lPSJ6bGliIg0KLQkJCQk+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGNyYzMyLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJPC9GaWx0ZXI+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcYXJjaGl2ZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQotCQkJRmlsdGVyPSJpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxpbnN0YWxsLnJjIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxQeXRob25Qb3dlcmVkLmJtcCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9kZWJ1Zy52c3Byb3BzIGIvUEMvVlM5LjAvZGVidWcudnNwcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM2NDNjYi4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9kZWJ1Zy52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9ImRlYnVnIg0KLQk+DQotCTxUb29sDQotCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iS2lsbFB5dGhvbkV4ZSINCi0JCVZhbHVlPSIkKE91dERpcilca2lsbF9weXRob25fZC5leGUiDQotCS8+DQotPC9WaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL2tpbGxfcHl0aG9uLmMgYi9QQy9WUzkuMC9raWxsX3B5dGhvbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjZlMWIwLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL2tpbGxfcHl0aG9uLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzggKzAsMCBAQAotLyoKLSAqIEhlbHBlciBwcm9ncmFtIGZvciBraWxsaW5nIGxpbmdlcmluZyBweXRob25bX2RdLmV4ZSBwcm9jZXNzZXMgYmVmb3JlCi0gKiBidWlsZGluZywgdGh1cyBhdHRlbXB0aW5nIHRvIGF2b2lkIGJ1aWxkIGZhaWx1cmVzIGR1ZSB0byBmaWxlcyBiZWluZwotICogbG9ja2VkLgotICovCi0KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8d2NoYXIuaD4KLSNpbmNsdWRlIDx0bGhlbHAzMi5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLSNwcmFnbWEgY29tbWVudChsaWIsICJwc2FwaSIpCi0KLSNpZmRlZiBfREVCVUcKLSNkZWZpbmUgUFlUSE9OX0VYRSAgICAgICAgICAoTCJweXRob25fZC5leGUiKQotI2RlZmluZSBQWVRIT05fRVhFX0xFTiAgICAgICgxMikKLSNkZWZpbmUgS0lMTF9QWVRIT05fRVhFICAgICAoTCJraWxsX3B5dGhvbl9kLmV4ZSIpCi0jZGVmaW5lIEtJTExfUFlUSE9OX0VYRV9MRU4gKDE3KQotI2Vsc2UKLSNkZWZpbmUgUFlUSE9OX0VYRSAgICAgICAgICAoTCJweXRob24uZXhlIikKLSNkZWZpbmUgUFlUSE9OX0VYRV9MRU4gICAgICAoMTApCi0jZGVmaW5lIEtJTExfUFlUSE9OX0VYRSAgICAgKEwia2lsbF9weXRob24uZXhlIikKLSNkZWZpbmUgS0lMTF9QWVRIT05fRVhFX0xFTiAoMTUpCi0jZW5kaWYKLQotaW50Ci1tYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLXsKLSAgICBIQU5ETEUgICBocCwgaHNwLCBoc207IC8qIHByb2Nlc3MsIHNuYXBzaG90IHByb2Nlc3Nlcywgc25hcHNob3QgbW9kdWxlcyAqLwotICAgIERXT1JEICAgIGRhYywgb3VyX3BpZDsKLSAgICBzaXplX3QgICBsZW47Ci0gICAgd2NoYXJfdCAgcGF0aFtNQVhfUEFUSCsxXTsKLQotICAgIE1PRFVMRUVOVFJZMzJXICBtZTsKLSAgICBQUk9DRVNTRU5UUlkzMlcgcGU7Ci0KLSAgICBtZS5kd1NpemUgPSBzaXplb2YoTU9EVUxFRU5UUlkzMlcpOwotICAgIHBlLmR3U2l6ZSA9IHNpemVvZihQUk9DRVNTRU5UUlkzMlcpOwotCi0gICAgbWVtc2V0KHBhdGgsIDAsIE1BWF9QQVRIKzEpOwotCi0gICAgb3VyX3BpZCA9IEdldEN1cnJlbnRQcm9jZXNzSWQoKTsKLQotICAgIGhzbSA9IENyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdChUSDMyQ1NfU05BUE1PRFVMRSwgb3VyX3BpZCk7Ci0gICAgaWYgKGhzbSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICBwcmludGYoIkNyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdFsxXSBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIGlmICghTW9kdWxlMzJGaXJzdFcoaHNtLCAmbWUpKSB7Ci0gICAgICAgIHByaW50ZigiTW9kdWxlMzJGaXJzdFdbMV0gZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICBDbG9zZUhhbmRsZShoc20pOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICAvKgotICAgICAqIEVudW1lcmF0ZSBvdmVyIHRoZSBtb2R1bGVzIGZvciB0aGUgY3VycmVudCBwcm9jZXNzIGluIG9yZGVyIHRvIGZpbmQKLSAgICAgKiBraWxsX3Byb2Nlc3NbX2RdLmV4ZSwgdGhlbiB0YWtlIGEgbm90ZSBvZiB0aGUgZGlyZWN0b3J5IGl0IGxpdmVzIGluLgotICAgICAqLwotICAgIGRvIHsKLSAgICAgICAgaWYgKF93Y3NuaWNtcChtZS5zek1vZHVsZSwgS0lMTF9QWVRIT05fRVhFLCBLSUxMX1BZVEhPTl9FWEVfTEVOKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGxlbiA9IHdjc25sZW5fcyhtZS5zekV4ZVBhdGgsIE1BWF9QQVRIKSAtIEtJTExfUFlUSE9OX0VYRV9MRU47Ci0gICAgICAgIHdjc25jcHlfcyhwYXRoLCBNQVhfUEFUSCsxLCBtZS5zekV4ZVBhdGgsIGxlbik7IAotCi0gICAgICAgIGJyZWFrOwotCi0gICAgfSB3aGlsZSAoTW9kdWxlMzJOZXh0Vyhoc20sICZtZSkpOwotCi0gICAgQ2xvc2VIYW5kbGUoaHNtKTsKLQotICAgIGlmIChwYXRoID09IE5VTEwpIHsKLSAgICAgICAgcHJpbnRmKCJmYWlsZWQgdG8gZGlzY2VybiBkaXJlY3Rvcnkgb2YgcnVubmluZyBwcm9jZXNzXG4iKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAgLyoKLSAgICAgKiBUYWtlIGEgc25hcHNob3Qgb2Ygc3lzdGVtIHByb2Nlc3Nlcy4gIEVudW1lcmF0ZSBvdmVyIHRoZSBzbmFwc2hvdCwKLSAgICAgKiBsb29raW5nIGZvciBweXRob24gcHJvY2Vzc2VzLiAgV2hlbiB3ZSBmaW5kIG9uZSwgdmVyaWZ5IGl0IGxpdmVzCi0gICAgICogaW4gdGhlIHNhbWUgZGlyZWN0b3J5IHdlIGxpdmUgaW4uICBJZiBpdCBkb2VzLCBraWxsIGl0LiAgSWYgd2UncmUKLSAgICAgKiB1bmFibGUgdG8ga2lsbCBpdCwgdHJlYXQgdGhpcyBhcyBhIGZhdGFsIGVycm9yIGFuZCByZXR1cm4gMS4KLSAgICAgKiAKLSAgICAgKiBUaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGlzIHRoYXQgd2UncmUgY2FsbGVkIGF0IHRoZSBzdGFydCBvZiB0aGUgCi0gICAgICogYnVpbGQgcHJvY2VzcyBvbiB0aGUgYmFzaXMgdGhhdCB3ZSdsbCB0YWtlIGNhcmUgb2Yga2lsbGluZyBhbnkKLSAgICAgKiBydW5uaW5nIGluc3RhbmNlcywgc3VjaCB0aGF0IHRoZSBidWlsZCB3b24ndCBlbmNvdW50ZXIgcGVybWlzc2lvbgotICAgICAqIGRlbmllZCBlcnJvcnMgZHVyaW5nIGxpbmtpbmcuIElmIHdlIGNhbid0IGtpbGwgb25lIG9mIHRoZSBwcm9jZXNzZXMsCi0gICAgICogd2UgY2FuJ3QgcHJvdmlkZSB0aGlzIGFzc3VyYW5jZSwgYW5kIHRoZSBidWlsZCBzaG91bGRuJ3Qgc3RhcnQuCi0gICAgICovCi0KLSAgICBoc3AgPSBDcmVhdGVUb29saGVscDMyU25hcHNob3QoVEgzMkNTX1NOQVBQUk9DRVNTLCAwKTsKLSAgICBpZiAoaHNwID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIHByaW50ZigiQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90WzJdIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAgaWYgKCFQcm9jZXNzMzJGaXJzdFcoaHNwLCAmcGUpKSB7Ci0gICAgICAgIHByaW50ZigiUHJvY2VzczMyRmlyc3RXIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKLSAgICAgICAgQ2xvc2VIYW5kbGUoaHNwKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAgZGFjID0gUFJPQ0VTU19RVUVSWV9JTkZPUk1BVElPTiB8IFBST0NFU1NfVk1fUkVBRCB8IFBST0NFU1NfVEVSTUlOQVRFOwotICAgIGRvIHsKLQotICAgICAgICAvKgotICAgICAgICAgKiBYWFggVE9ETzogaWYgd2UgcmVhbGx5IHdhbnRlZCB0byBiZSBmYW5jeSwgd2UgY291bGQgY2hlY2sgdGhlIAotICAgICAgICAgKiBtb2R1bGVzIGZvciBhbGwgcHJvY2Vzc2VzIChub3QganVzdCB0aGUgcHl0aG9uW19kXS5leGUgb25lcykKLSAgICAgICAgICogYW5kIHNlZSBpZiBhbnkgb2Ygb3VyIERMTHMgYXJlIGxvYWRlZCAoaS5lLiBweXRob24zNFtfZF0uZGxsKSwKLSAgICAgICAgICogYXMgdGhhdCB3b3VsZCBhbHNvIGluaGliaXQgb3VyIGFiaWxpdHkgdG8gcmVidWlsZCB0aGUgc29sdXRpb24uCi0gICAgICAgICAqIE5vdCB3b3J0aCBsb3Npbmcgc2xlZXAgb3ZlciB0aG91Z2g7IGZvciBub3csIGEgc2ltcGxlIGNoZWNrCi0gICAgICAgICAqIGZvciBqdXN0IHRoZSBweXRob24gZXhlY3V0YWJsZSBzaG91bGQgYmUgc3VmZmljaWVudC4KLSAgICAgICAgICovCi0KLSAgICAgICAgaWYgKF93Y3NuaWNtcChwZS5zekV4ZUZpbGUsIFBZVEhPTl9FWEUsIFBZVEhPTl9FWEVfTEVOKSkKLSAgICAgICAgICAgIC8qIFRoaXMgaXNuJ3QgYSBweXRob24gcHJvY2Vzcy4gKi8KLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8qIEl0J3MgYSBweXRob24gcHJvY2Vzcywgc28gZmlndXJlIG91dCB3aGljaCBkaXJlY3RvcnkgaXQncyBpbi4uLiAqLwotICAgICAgICBoc20gPSBDcmVhdGVUb29saGVscDMyU25hcHNob3QoVEgzMkNTX1NOQVBNT0RVTEUsIHBlLnRoMzJQcm9jZXNzSUQpOwotICAgICAgICBpZiAoaHNtID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICAgICAgLyogCi0gICAgICAgICAgICAgKiBJZiBvdXIgbW9kdWxlIHNuYXBzaG90IGZhaWxzICh3aGljaCB3aWxsIGhhcHBlbiBpZiB3ZSBkb24ndCBvd24KLSAgICAgICAgICAgICAqIHRoZSBwcm9jZXNzKSwganVzdCBpZ25vcmUgaXQgYW5kIGNvbnRpbnVlLiAgKEl0IHNlZW1zIGRpZmZlcmVudAotICAgICAgICAgICAgICogdmVyc2lvbnMgb2YgV2luZG93cyByZXR1cm4gZGlmZmVyZW50IHZhbHVlcyBmb3IgR2V0TGFzdEVycm9yKCkKLSAgICAgICAgICAgICAqIGluIHRoaXMgc2l0dWF0aW9uOyBpdCdzIGVhc2llciB0byBqdXN0IGlnbm9yZSBpdCBhbmQgbW92ZSBvbiB2cy4KLSAgICAgICAgICAgICAqIHN0b3BwaW5nIHRoZSBidWlsZCBmb3Igd2hhdCBjb3VsZCBiZSBhIGZhbHNlIHBvc2l0aXZlLikKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmICghTW9kdWxlMzJGaXJzdFcoaHNtLCAmbWUpKSB7Ci0gICAgICAgICAgICBwcmludGYoIk1vZHVsZTMyRmlyc3RXWzJdIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKLSAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzcCk7Ci0gICAgICAgICAgICBDbG9zZUhhbmRsZShoc20pOwotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KLQotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBpZiAoX3djc25pY21wKG1lLnN6TW9kdWxlLCBQWVRIT05fRVhFLCBQWVRIT05fRVhFX0xFTikpCi0gICAgICAgICAgICAgICAgLyogV3JvbmcgbW9kdWxlLCB3ZSdyZSBsb29raW5nIGZvciBweXRob25bX2RdLmV4ZS4uLiAqLwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBpZiAoX3djc25pY21wKHBhdGgsIG1lLnN6RXhlUGF0aCwgbGVuKSkKLSAgICAgICAgICAgICAgICAvKiBQcm9jZXNzIGRvZXNuJ3QgbGl2ZSBpbiBvdXIgZGlyZWN0b3J5LiAqLwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAvKiBQeXRob24gcHJvY2VzcyByZXNpZGluZyBpbiB0aGUgcmlnaHQgZGlyZWN0b3J5LCBraWxsIGl0ISAgKi8KLSAgICAgICAgICAgIGhwID0gT3BlblByb2Nlc3MoZGFjLCBGQUxTRSwgcGUudGgzMlByb2Nlc3NJRCk7Ci0gICAgICAgICAgICBpZiAoIWhwKSB7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCJPcGVuUHJvY2VzcyBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNwKTsKLSAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShoc20pOwotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIVRlcm1pbmF0ZVByb2Nlc3MoaHAsIDEpKSB7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCJUZXJtaW5hdGVQcm9jZXNzIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKLSAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShoc3ApOwotICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzbSk7Ci0gICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHApOwotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBDbG9zZUhhbmRsZShocCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICB9IHdoaWxlIChNb2R1bGUzMk5leHRXKGhzbSwgJm1lKSk7Ci0KLSAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKLQotICAgIH0gd2hpbGUgKFByb2Nlc3MzMk5leHRXKGhzcCwgJnBlKSk7Ci0KLSAgICBDbG9zZUhhbmRsZShoc3ApOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLS8qIHZpOiBzZXQgdHM9OCBzdz00IHN0cz00IGV4cGFuZHRhYiAqLwpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAva2lsbF9weXRob24udmNwcm9qIGIvUEMvVlM5LjAva2lsbF9weXRob24udmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzQxMDdhLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL2tpbGxfcHl0aG9uLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDI3OSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0ia2lsbF9weXRob24iDQotCVByb2plY3RHVUlEPSJ7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSINCi0JUm9vdE5hbWVzcGFjZT0ia2lsbF9weXRob24iDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLlxraWxsX3B5dGhvbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL21ha2VfYnVpbGRpbmZvLmMgYi9QQy9WUzkuMC9tYWtlX2J1aWxkaW5mby5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjRhNjRhLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL21ha2VfYnVpbGRpbmZvLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxOTUgKzAsMCBAQAotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8aW8uaD4KLQotI2RlZmluZSBDTURfU0laRSA1MDAKLQotLyogVGhpcyBmaWxlIGNyZWF0ZXMgdGhlIGdldGJ1aWxkaW5mby5vIG9iamVjdCwgYnkgZmlyc3QKLSAgIGludm9raW5nIHN1YndjcmV2LmV4ZSAoaWYgZm91bmQpLCBhbmQgdGhlbiBpbnZva2luZyBjbC5leGUuCi0gICBBcyBhIHNpZGUgZWZmZWN0LCBpdCBtaWdodCBnZW5lcmF0ZSBQQ0J1aWxkXGdldGJ1aWxkaW5mbzIuYwotICAgYWxzby4gSWYgdGhpcyBpc24ndCBhIHN1YnZlcnNpb24gY2hlY2tvdXQsIG9yIHN1YndjcmV2IGlzbid0Ci0gICBmb3VuZCwgaXQgY29tcGlsZXMgLi5cXC4uXFxNb2R1bGVzXFxnZXRidWlsZGluZm8uYyBpbnN0ZWFkLgotCi0gICBDdXJyZW50bHksIHN1YndjcmV2LmV4ZSBpcyBmb3VuZCBmcm9tIHRoZSByZWdpc3RyeSBlbnRyaWVzCi0gICBvZiBUb3J0b2lzZVNWTi4KLQotICAgTm8gYXR0ZW1wdCBpcyBtYWRlIHRvIHBsYWNlIGdldGJ1aWxkaW5mby5vIGludG8gdGhlIHByb3BlcgotICAgYmluYXJ5IGRpcmVjdG9yeS4gVGhpcyBpc24ndCBuZWNlc3NhcnksIGFzIHRoaXMgdG9vbCBpcwotICAgaW52b2tlZCBhcyBhIHByZS1saW5rIHN0ZXAgZm9yIHB5dGhvbmNvcmUsIHNvIHRoYXQgb3ZlcndyaXRlcwotICAgYW55IHByZXZpb3VzIGdldGJ1aWxkaW5mby5vLgotCi0gICBIb3dldmVyLCBpZiBhIHNlY29uZCBhcmd1bWVudCBpcyBwcm92aWRlZCwgdGhpcyB3aWxsIGJlIHVzZWQKLSAgIGFzIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB3aGVyZSBhbnkgZ2V0YnVpbGRpbmZvMi5jIGFuZAotICAgZ2V0YnVpbGRpbmZvLm8gZmlsZXMgYXJlIHB1dC4gIFRoaXMgaXMgdXNlZnVsIGlmIG11bHRpcGxlCi0gICBjb25maWd1cmF0aW9ucyBhcmUgYmVpbmcgYnVpbHQgaW4gcGFyYWxsZWwsIHRvIGF2b2lkIHRoZW0KLSAgIHRyYW1wbGluZyBlYWNoIG90aGVyJ3MgZmlsZXMuCi0KLSovCi0KLWludCBtYWtlX2J1aWxkaW5mbzIoY29uc3QgY2hhciAqdG1wcGF0aCkKLXsKLSAgICBzdHJ1Y3QgX3N0YXQgc3Q7Ci0gICAgSEtFWSBoVG9ydG9pc2U7Ci0gICAgY2hhciBjb21tYW5kW0NNRF9TSVpFKzFdOwotICAgIERXT1JEIHR5cGUsIHNpemU7Ci0gICAgaWYgKF9zdGF0KCIuc3ZuIiwgJnN0KSA8IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIC8qIEFsbG93IHN1cHByZXNzaW9uIG9mIHN1YndjcmV2LmV4ZSBpbnZvY2F0aW9uIGlmIGEgbm9fc3Vid2NyZXYgZmlsZSBpcyBwcmVzZW50LiAqLwotICAgIGlmIChfc3RhdCgibm9fc3Vid2NyZXYiLCAmc3QpID09IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmIChSZWdPcGVuS2V5KEhLRVlfTE9DQUxfTUFDSElORSwgIlNvZnR3YXJlXFxUb3J0b2lzZVNWTiIsICZoVG9ydG9pc2UpICE9IEVSUk9SX1NVQ0NFU1MgJiYKLSAgICAgICAgUmVnT3BlbktleShIS0VZX0NVUlJFTlRfVVNFUiwgIlNvZnR3YXJlXFxUb3J0b2lzZVNWTiIsICZoVG9ydG9pc2UpICE9IEVSUk9SX1NVQ0NFU1MpCi0gICAgICAgIC8qIFRvcnRvaXNlIG5vdCBpbnN0YWxsZWQgKi8KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgY29tbWFuZFswXSA9ICciJzsgIC8qIHF1b3RlIHRoZSBwYXRoIHRvIHRoZSBleGVjdXRhYmxlICovCi0gICAgc2l6ZSA9IHNpemVvZihjb21tYW5kKSAtIDE7Ci0gICAgaWYgKFJlZ1F1ZXJ5VmFsdWVFeChoVG9ydG9pc2UsICJEaXJlY3RvcnkiLCAwLCAmdHlwZSwgY29tbWFuZCsxLCAmc2l6ZSkgIT0gRVJST1JfU1VDQ0VTUyB8fAotICAgICAgICB0eXBlICE9IFJFR19TWikKLSAgICAgICAgLyogUmVnaXN0cnkgY29ycnVwdGVkICovCi0gICAgICAgIHJldHVybiAwOwotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiYmluXFxzdWJ3Y3Jldi5leGUiKTsKLSAgICBpZiAoX3N0YXQoY29tbWFuZCsxLCAmc3QpIDwgMCkKLSAgICAgICAgLyogc3Vid2NyZXYuZXhlIG5vdCBwYXJ0IG9mIHRoZSByZWxlYXNlICovCi0gICAgICAgIHJldHVybiAwOwotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXCIgLi5cXC4uIC4uXFwuLlxcTW9kdWxlc1xcZ2V0YnVpbGRpbmZvLmMgXCIiKTsKLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgdG1wcGF0aCk7IC8qIHF1b3RlZCB0bXBwYXRoICovCi0gICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJnZXRidWlsZGluZm8yLmNcIiIpOwotCi0gICAgcHV0cyhjb21tYW5kKTsgZmZsdXNoKHN0ZG91dCk7Ci0gICAgaWYgKHN5c3RlbShjb21tYW5kKSA8IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiAxOwotfQotCi1jb25zdCBjaGFyIERFTElNU1tdID0geyAiIFxuIiB9OwotCi1pbnQgZ2V0X21lcmN1cmlhbF9pbmZvKGNoYXIgKiBoZ2JyYW5jaCwgY2hhciAqIGhndGFnLCBjaGFyICogaGdyZXYsIGludCBzaXplKQotewotICAgIGludCByZXN1bHQgPSAwOwotICAgIGNoYXIgZmlsZW5hbWVbQ01EX1NJWkVdOwotICAgIGNoYXIgY21kbGluZVtDTURfU0laRV07Ci0KLSAgICBzdHJjcHlfcyhmaWxlbmFtZSwgQ01EX1NJWkUsICJ0bXBYWFhYWFgiKTsKLSAgICBpZiAoX21rdGVtcF9zKGZpbGVuYW1lLCBDTURfU0laRSkgPT0gMCkgewotICAgICAgICBpbnQgcmM7Ci0KLSAgICAgICAgc3RyY3B5X3MoY21kbGluZSwgQ01EX1NJWkUsICJoZyBpZCAtYml0ID4gIik7Ci0gICAgICAgIHN0cmNhdF9zKGNtZGxpbmUsIENNRF9TSVpFLCBmaWxlbmFtZSk7Ci0gICAgICAgIHJjID0gc3lzdGVtKGNtZGxpbmUpOwotICAgICAgICBpZiAocmMgPT0gMCkgewotICAgICAgICAgICAgRklMRSAqIGZwOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoZm9wZW5fcygmZnAsIGZpbGVuYW1lLCAiciIpID09IDApIHsKLSAgICAgICAgICAgICAgICBjaGFyICogY3AgPSBmZ2V0cyhjbWRsaW5lLCBDTURfU0laRSwgZnApOwotCi0gICAgICAgICAgICAgICAgaWYgKGNwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYXIgKiBjb250ZXh0ID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgY2hhciAqIHRwID0gc3RydG9rX3MoY3AsIERFTElNUywgJmNvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAodHApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweV9zKGhncmV2LCBzaXplLCB0cCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cCA9IHN0cnRva19zKE5VTEwsIERFTElNUywgJmNvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyY3B5X3MoaGdicmFuY2gsIHNpemUsIHRwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cCA9IHN0cnRva19zKE5VTEwsIERFTElNUywgJmNvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHlfcyhoZ3RhZywgc2l6ZSwgdHApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIF91bmxpbmsoZmlsZW5hbWUpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciphcmd2W10pCi17Ci0gICAgY2hhciBjb21tYW5kW0NNRF9TSVpFXSA9ICJjbC5leGUgLWMgLURfV0lOMzIgLURVU0VfRExfRVhQT1JUIC1EX1dJTkRPV1MgLURXSU4zMiAtRF9XSU5ETEwgIjsKLSAgICBjaGFyIHRtcHBhdGhbQ01EX1NJWkVdID0gIiI7Ci0gICAgaW50IGRvX3VubGluaywgcmVzdWx0OwotICAgIGNoYXIgKnRtcGRpciA9IE5VTEw7Ci0gICAgaWYgKGFyZ2MgPD0gMiB8fCBhcmdjID4gMykgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm1ha2VfYnVpbGRpbmZvICQoQ29uZmlndXJhdGlvbk5hbWUpIFt0bXBkaXJdXG4iKTsKLSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLSAgICB9Ci0gICAgaWYgKHN0cmNtcChhcmd2WzFdLCAiUmVsZWFzZSIpID09IDApIHsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgIik7Ci0gICAgfQotICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiRGVidWciKSA9PSAwKSB7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLURfREVCVUcgLU1EZCAiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJSZWxlYXNlSXRhbml1bSIpID09IDApIHsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgL1VTRUNMOk1TX0lUQU5JVU0gIik7Ci0gICAgfQotICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiUmVsZWFzZUFNRDY0IikgPT0gMCkgewotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1NRCAiKTsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgL1VTRUNMOk1TX09QVEVST04gIik7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInVuc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24gJXNcbiIsIGFyZ3ZbMV0pOwotICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwotICAgIH0KLSAgICBpZiAoYXJnYyA+IDIpIHsKLSAgICAgICAgdG1wZGlyID0gYXJndlsyXTsKLSAgICAgICAgc3RyY2F0X3ModG1wcGF0aCwgX2NvdW50b2YodG1wcGF0aCksIHRtcGRpcik7Ci0gICAgICAgIC8qIEhhY2sgZml4IGZvciBiYWQgY29tbWFuZCBsaW5lOiAgSWYgdGhlIGNvbW1hbmQgaXMgaXNzdWVkIGxpa2UgdGhpczoKLSAgICAgICAgICogJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIERlYnVnICIkKEludERpcikiCi0gICAgICAgICAqIHdlIHdpbGwgZ2V0IGEgdHJhaWxpbmcgcXVvdGUgYmVjYXVzZSBJbnREaXIgZW5kcyB3aXRoIGEgYmFja3NsYXNoIHRoYXQgdGhlbgotICAgICAgICAgKiBlc2NhcGVzIHRoZSBmaW5hbCAiLiAgVG8gc2ltcGxpZnkgdGhlIGxpZmUgZm9yIGRldmVsb3BlcnMsIGNhdGNoIHRoYXQgcHJvYmxlbQotICAgICAgICAgKiBoZXJlIGJ5IGN1dHRpbmcgaXQgb2ZmLgotICAgICAgICAgKiBUaGUgcHJvcGVyIGNvbW1hbmQgbGluZSwgYnR3IGlzOgotICAgICAgICAgKiAkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgRGVidWcgIiQoSW50RGlyKVwiCi0gICAgICAgICAqIEhvb3JheSBmb3IgY29tbWFuZCBsaW5lIHBhcnNpbmcgb24gd2luZG93cy4KLSAgICAgICAgICovCi0gICAgICAgIGlmIChzdHJsZW4odG1wcGF0aCkgPiAwICYmIHRtcHBhdGhbc3RybGVuKHRtcHBhdGgpLTFdID09ICciJykKLSAgICAgICAgICAgIHRtcHBhdGhbc3RybGVuKHRtcHBhdGgpLTFdID0gJ1wwJzsKLSAgICAgICAgc3RyY2F0X3ModG1wcGF0aCwgX2NvdW50b2YodG1wcGF0aCksICJcXCIpOwotICAgIH0KLQotICAgIGlmICgoZG9fdW5saW5rID0gbWFrZV9idWlsZGluZm8yKHRtcHBhdGgpKSkgewotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlwiIik7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJnZXRidWlsZGluZm8yLmNcIiAtRFNVQldDUkVWICIpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgY2hhciBoZ3RhZ1tDTURfU0laRV07Ci0gICAgICAgIGNoYXIgaGdicmFuY2hbQ01EX1NJWkVdOwotICAgICAgICBjaGFyIGhncmV2W0NNRF9TSVpFXTsKLQotICAgICAgICBpZiAoZ2V0X21lcmN1cmlhbF9pbmZvKGhnYnJhbmNoLCBoZ3RhZywgaGdyZXYsIENNRF9TSVpFKSkgewotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItREhHQlJBTkNIPVxcXCIiKTsKLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCBoZ2JyYW5jaCk7Ci0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlxcXCIiKTsKLQotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIgLURIR1RBRz1cXFwiIik7Ci0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgaGd0YWcpOwotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcXFwiIik7Ci0KLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiIC1ESEdWRVJTSU9OPVxcXCIiKTsKLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCBoZ3Jldik7Ci0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlxcXCIgIik7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIuLlxcLi5cXE1vZHVsZXNcXGdldGJ1aWxkaW5mby5jIik7Ci0gICAgfQotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiIC1Gb1wiIik7Ci0gICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIHRtcHBhdGgpOwotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvLm9cIiAtSS4uXFwuLlxcSW5jbHVkZSAtSS4uXFwuLlxcUEMiKTsKLSAgICBwdXRzKGNvbW1hbmQpOyBmZmx1c2goc3Rkb3V0KTsKLSAgICByZXN1bHQgPSBzeXN0ZW0oY29tbWFuZCk7Ci0gICAgaWYgKGRvX3VubGluaykgewotICAgICAgICBjb21tYW5kWzBdID0gJ1wwJzsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcIiIpOwotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgdG1wcGF0aCk7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvMi5jXCIiKTsKLSAgICAgICAgX3VubGluayhjb21tYW5kKTsKLSAgICB9Ci0gICAgaWYgKHJlc3VsdCA8IDApCi0gICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Ci0gICAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9QQy9WUzkuMC9tYWtlX2J1aWxkaW5mby52Y3Byb2ogYi9QQy9WUzkuMC9tYWtlX2J1aWxkaW5mby52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNDA2NWQuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvbWFrZV9idWlsZGluZm8udmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IndpbmRvd3MtMTI1MCI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJtYWtlX2J1aWxkaW5mbyINCi0JUHJvamVjdEdVSUQ9IntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9Ig0KLQlSb290TmFtZXNwYWNlPSJtYWtlX2J1aWxkaW5mbyINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9tYWtlX2J1aWxkaW5mby5leGUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214Ig0KLQkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ig0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii5cbWFrZV9idWlsZGluZm8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvaiBiL1BDL1ZTOS4wL21ha2VfdmVyc2lvbmluZm8udmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTFmZDI4Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL21ha2VfdmVyc2lvbmluZm8udmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMzI0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJtYWtlX3ZlcnNpb25pbmZvIg0KLQlQcm9qZWN0R1VJRD0ie0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0iDQotCVJvb3ROYW1lc3BhY2U9Im1ha2VfdmVyc2lvbmluZm8iDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmMuaCYjeDBEOyYjeDBBOyINCi0JCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlwuLlxQQ1xweXRob25udF9yYy5oIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9InRydWUiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvLmV4ZSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250LmgmI3gwRDsmI3gwQTsiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmMuaCYjeDBEOyYjeDBBOyINCi0JCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlwuLlxQQ1xweXRob25udF9yYy5oIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9InRydWUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvLmV4ZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25fbnQuaCYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25udF9yY19kLmgmI3gwRDsmI3gwQTsiDQotCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mb19kLmV4ZSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25fbnRfZC5oJiN4MEQ7JiN4MEE7Ig0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25udF9yY19kLmgmI3gwRDsmI3gwQTsiDQotCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm9fZC5leGUiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250X2QuaCYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXG1ha2VfdmVyc2lvbmluZm8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9wY2J1aWxkLnNsbiBiL1BDL1ZTOS4wL3BjYnVpbGQuc2xuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTdmNjljLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3BjYnVpbGQuc2xuCisrKyAvZGV2L251bGwKQEAgLTEsNjkwICswLDAgQEAKLU1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDEwLjAwDQotIyBWaXN1YWwgU3R1ZGlvIDIwMDgNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbiIsICJweXRob24udmNwcm9qIiwgIntCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fSA9IHtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV92ZXJzaW9uaW5mbyIsICJtYWtlX3ZlcnNpb25pbmZvLnZjcHJvaiIsICJ7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob25jb3JlIiwgInB5dGhvbmNvcmUudmNwcm9qIiwgIntDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfSA9IHtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSA9IHs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9DQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSA9IHtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9udyIsICJweXRob253LnZjcHJvaiIsICJ7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIm1ha2VfYnVpbGRpbmZvIiwgIm1ha2VfYnVpbGRpbmZvLnZjcHJvaiIsICJ7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezIxNTBFMzMzLThGREMtNDJBMy05NDc0LTFBMzk1NkQ0NkRFOH0iKSA9ICJTb2x1dGlvbiBJdGVtcyIsICJTb2x1dGlvbiBJdGVtcyIsICJ7NTUzRUMzM0UtOTgxNi00OTk2LUE2NjAtNUQ2MTg2QTBCMEIzfSINCi0JUHJvamVjdFNlY3Rpb24oU29sdXRpb25JdGVtcykgPSBwcmVQcm9qZWN0DQotCQkuLlwuLlxNb2R1bGVzXGdldGJ1aWxkaW5mby5jID0gLi5cLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYw0KLQkJcmVhZG1lLnR4dCA9IHJlYWRtZS50eHQNCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3aW5zb3VuZCIsICJ3aW5zb3VuZC52Y3Byb2oiLCAiezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfZGVjaW1hbCIsICJfZGVjaW1hbC52Y3Byb2oiLCAiezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzIiwgIl9jdHlwZXMudmNwcm9qIiwgInswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2N0eXBlc190ZXN0IiwgIl9jdHlwZXNfdGVzdC52Y3Byb2oiLCAiezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfZWxlbWVudHRyZWUiLCAiX2VsZW1lbnR0cmVlLnZjcHJvaiIsICJ7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9tc2kiLCAiX21zaS52Y3Byb2oiLCAiezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc29ja2V0IiwgIl9zb2NrZXQudmNwcm9qIiwgIns4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NxbGl0ZTMiLCAiX3NxbGl0ZTMudmNwcm9qIiwgInsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfSA9IHtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NzbCIsICJfc3NsLnZjcHJvaiIsICJ7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQ0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0gPSB7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfQ0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0gPSB7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfQ0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0Y2FwaSIsICJfdGVzdGNhcGkudmNwcm9qIiwgIns2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3RpbXBvcnRtdWx0aXBsZSIsICJfdGVzdGltcG9ydG11bHRpcGxlLnZjcHJvaiIsICJ7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90a2ludGVyIiwgIl90a2ludGVyLnZjcHJvaiIsICJ7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9iejIiLCAiX2J6Mi52Y3Byb2oiLCAiezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbHptYSIsICJfbHptYS52Y3Byb2oiLCAie0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzZWxlY3QiLCAic2VsZWN0LnZjcHJvaiIsICJ7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInVuaWNvZGVkYXRhIiwgInVuaWNvZGVkYXRhLnZjcHJvaiIsICJ7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5ZXhwYXQiLCAicHlleHBhdC52Y3Byb2oiLCAie0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJiZGlzdF93aW5pbnN0IiwgImJkaXN0X3dpbmluc3QudmNwcm9qIiwgIntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9oYXNobGliIiwgIl9oYXNobGliLnZjcHJvaiIsICJ7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQ0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0gPSB7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfQ0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNxbGl0ZTMiLCAic3FsaXRlMy52Y3Byb2oiLCAie0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9ID0gezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbXVsdGlwcm9jZXNzaW5nIiwgIl9tdWx0aXByb2Nlc3NpbmcudmNwcm9qIiwgIns5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic3NsIiwgInNzbC52Y3Byb2oiLCAie0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9ID0ge0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJraWxsX3B5dGhvbiIsICJraWxsX3B5dGhvbi52Y3Byb2oiLCAiezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uM2RsbCIsICJweXRob24zZGxsLnZjcHJvaiIsICJ7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ4eGxpbWl0ZWQiLCAieHhsaW1pdGVkLnZjcHJvaiIsICJ7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGVzdGJ1ZmZlciIsICJfdGVzdGJ1ZmZlci52Y3Byb2oiLCAie0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotR2xvYmFsDQotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uDQotCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyDQotCQlEZWJ1Z3x4NjQgPSBEZWJ1Z3x4NjQNCi0JCVBHSW5zdHJ1bWVudHxXaW4zMiA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJUEdJbnN0cnVtZW50fHg2NCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCVBHVXBkYXRlfFdpbjMyID0gUEdVcGRhdGV8V2luMzINCi0JCVBHVXBkYXRlfHg2NCA9IFBHVXBkYXRlfHg2NA0KLQkJUmVsZWFzZXxXaW4zMiA9IFJlbGVhc2V8V2luMzINCi0JCVJlbGVhc2V8eDY0ID0gUmVsZWFzZXx4NjQNCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHBvc3RTb2x1dGlvbg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezA0RjM3NDAwLTg4M0MtNDJENy1BRTI4LTZDRjk5NTNCRjk3NX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezA0RjM3NDAwLTg4M0MtNDJENy1BRTI4LTZDRjk5NTNCRjk3NX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezA0RjM3NDAwLTg4M0MtNDJENy1BRTI4LTZDRjk5NTNCRjk3NX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KLQkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQotCUVuZEdsb2JhbFNlY3Rpb24NCi1FbmRHbG9iYWwNCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9wZ2luc3RydW1lbnQudnNwcm9wcyBiL1BDL1ZTOS4wL3BnaW5zdHJ1bWVudC52c3Byb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWMxMTdiLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3BnaW5zdHJ1bWVudC52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InBnaW5zdHJ1bWVudCINCi0JT3V0cHV0RGlyZWN0b3J5PSIkKE91dERpclBHSSkiDQotCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC1wZ2lcJChQcm9qZWN0TmFtZSlcIg0KLQk+DQotCTxUb29sDQotCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJRmF2b3JTaXplT3JTcGVlZD0iMiINCi0JCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KLQkJRW5hYmxlRmliZXJTYWZlT3B0aW1pemF0aW9ucz0iZmFsc2UiDQotCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249InRydWUiDQotCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJRXhjZXB0aW9uSGFuZGxpbmc9IjAiDQotCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJmYWxzZSINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCi0JCUVuYWJsZUNPTURBVEZvbGRpbmc9IjEiDQotCQlMaW5rVGltZUNvZGVHZW5lcmF0aW9uPSIyIg0KLQkJUHJvZmlsZUd1aWRlZERhdGFiYXNlPSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS1wZ2lcJChUYXJnZXROYW1lKS5wZ2QiDQotCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpclBHSSlcJChUYXJnZXROYW1lKS5saWIiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9Ik91dERpclBHSSINCi0JCVZhbHVlPSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS1wZ2lcIg0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9wZ3VwZGF0ZS52c3Byb3BzIGIvUEMvVlM5LjAvcGd1cGRhdGUudnNwcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZjZmMyZC4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9wZ3VwZGF0ZS52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InBndXBkYXRlIg0KLQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXBnb1wiDQotCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFNvbHV0aW9uRGlyKVxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJQWRkaXRpb25hbE1hbmlmZXN0RGVwZW5kZW5jaWVzPSIiDQotCQlMaW5rVGltZUNvZGVHZW5lcmF0aW9uPSI0Ig0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9weWQudnNwcm9wcyBiL1BDL1ZTOS4wL3B5ZC52c3Byb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGMyMWUxLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3B5ZC52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InB5ZCINCi0JSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEUiDQotCQlSdW50aW1lTGlicmFyeT0iMiINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5weWQiDQotCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkucGRiIg0KLQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpXCQoVGFyZ2V0TmFtZSkubGliIg0KLQkJR2VuZXJhdGVNYW5pZmVzdD0iZmFsc2UiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCUVtYmVkTWFuaWZlc3Q9ImZhbHNlIg0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQlDb21tYW5kTGluZT0iIg0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9weWRfZC52c3Byb3BzIGIvUEMvVlM5LjAvcHlkX2QudnNwcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEzYTMwYi4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9weWRfZC52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InB5ZF9kIg0KLQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlPcHRpbWl6YXRpb249IjAiDQotCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMCINCi0JCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEUiDQotCQlSdW50aW1lTGlicmFyeT0iMyINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKV9kLnB5ZCINCi0JCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKV9kLnBkYiINCi0JCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKVwkKFRhcmdldE5hbWUpLmxpYiINCi0JCUdlbmVyYXRlTWFuaWZlc3Q9ImZhbHNlIg0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQlFbWJlZE1hbmlmZXN0PSJmYWxzZSINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJQ29tbWFuZExpbmU9IiINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iUHl0aG9uRXhlIg0KLQkJVmFsdWU9IiQoU29sdXRpb25EaXIpcHl0aG9uX2QuZXhlIg0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9weWV4cGF0LnZjcHJvaiBiL1BDL1ZTOS4wL3B5ZXhwYXQudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGQyY2Q3Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3B5ZXhwYXQudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTUzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJweWV4cGF0Ig0KLQlQcm9qZWN0R1VJRD0ie0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0iDQotCVJvb3ROYW1lc3BhY2U9InB5ZXhwYXQiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHB5ZXhwYXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9weXByb2plY3QudnNwcm9wcyBiL1BDL1ZTOS4wL3B5cHJvamVjdC52c3Byb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTA5ODc1Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3B5cHJvamVjdC52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InB5cHJvamVjdCINCi0JT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSINCi0JSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS10ZW1wLSQoQ29uZmlndXJhdGlvbk5hbWUpXCQoUHJvamVjdE5hbWUpXCINCi0JPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCU9wdGltaXphdGlvbj0iMiINCi0JCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJ0cnVlIg0KLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZTsgLi5cLi5cUEMiDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTjMyIg0KLQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCUV4Y2VwdGlvbkhhbmRsaW5nPSIwIg0KLQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCVdhcm5pbmdMZXZlbD0iMyINCi0JCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQlDb21waWxlQXM9IjAiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIkKE91dERpcikiDQotCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQotCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikkKFRhcmdldE5hbWUpLnBkYiINCi0JCVN1YlN5c3RlbT0iMiINCi0JCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCi0JCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KLQkJVGFyZ2V0TWFjaGluZT0iMSINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQzsuLlwuLlxJbmNsdWRlIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJQeURsbE5hbWUiDQotCQlWYWx1ZT0icHl0aG9uMzQiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9IlB5dGhvbkV4ZSINCi0JCVZhbHVlPSIkKFNvbHV0aW9uRGlyKVxweXRob24uZXhlIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJleHRlcm5hbHNEaXIiDQotCQlWYWx1ZT0iLi5cLi5cLi4iDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InNxbGl0ZTNEaXIiDQotCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXHNxbGl0ZS0zLjguMy4xIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJiejJEaXIiDQotCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXGJ6aXAyLTEuMC42Ig0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJsem1hRGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVx4ei01LjAuNSINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0ib3BlbnNzbERpciINCi0JCVZhbHVlPSIkKGV4dGVybmFsc0Rpcilcb3BlbnNzbC0xLjAuMWciDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InRjbHRrRGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVx0Y2x0ayINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0idGNsdGs2NERpciINCi0JCVZhbHVlPSIkKGV4dGVybmFsc0RpcilcdGNsdGs2NCINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0idGNsdGtMaWIiDQotCQlWYWx1ZT0iJCh0Y2x0a0RpcilcbGliXHRjbDg1LmxpYiAkKHRjbHRrRGlyKVxsaWJcdGs4NS5saWIiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InRjbHRrTGliRGVidWciDQotCQlWYWx1ZT0iJCh0Y2x0a0RpcilcbGliXHRjbDg1Zy5saWIgJCh0Y2x0a0RpcilcbGliXHRrODVnLmxpYiINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0idGNsdGs2NExpYiINCi0JCVZhbHVlPSIkKHRjbHRrNjREaXIpXGxpYlx0Y2w4NS5saWIgJCh0Y2x0azY0RGlyKVxsaWJcdGs4NS5saWIiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InRjbHRrNjRMaWJEZWJ1ZyINCi0JCVZhbHVlPSIkKHRjbHRrNjREaXIpXGxpYlx0Y2w4NWcubGliICQodGNsdGs2NERpcilcbGliXHRrODVnLmxpYiINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcHl0aG9uLnZjcHJvaiBiL1BDL1ZTOS4wL3B5dGhvbi52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwN2RlMjEuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvcHl0aG9uLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDYzNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0icHl0aG9uIg0KLQlQcm9qZWN0R1VJRD0ie0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0iDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob24uZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJQnJvd3NlSW5mb3JtYXRpb249IjEiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbl9kLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob25fZC5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjEwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob24uZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob24uZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbi5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5Y29uLmljbyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbl9leGUucmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xweXRob24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9weXRob24zZGxsLnZjcHJvaiBiL1BDL1ZTOS4wL3B5dGhvbjNkbGwudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDczMzNiLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3B5dGhvbjNkbGwudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMjQ2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJweXRob24zZGxsIg0KLQlQcm9qZWN0R1VJRD0iezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0iDQotCVJvb3ROYW1lc3BhY2U9InB5dGhvbjNkbGwiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCi0JCQkJT3V0cHV0PSIkKE91dERpcilccHl0aG9uMy5kbGwiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCi0JCQkJT3V0cHV0PSIkKE91dERpcilccHl0aG9uMy5kbGwiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW4iDQotCQkJCU91dHB1dD0iJChPdXREaXIpXHB5dGhvbjMuZGxsIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KLQkJCQlPdXRwdXQ9IiQoT3V0RGlyKVxweXRob24zLmRsbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW4iDQotCQkJCU91dHB1dD0iJChPdXREaXIpXHB5dGhvbjMuZGxsIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCi0JCQkJT3V0cHV0PSIkKE91dERpcilccHl0aG9uMy5kbGwiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJRmlsdGVyPSJjcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCINCi0JCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob24zLmRlZiINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbjNkbGwuYyINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jO3hzZCINCi0JCQlVbmlxdWVJZGVudGlmaWVyPSJ7OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfSINCi0JCQk+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9InJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZTtyZXN4O3RpZmY7dGlmO3BuZzt3YXYiDQotCQkJVW5pcXVlSWRlbnRpZmllcj0iezY3REE2QUI2LUY4MDAtNGMwOC04QjdBLTgzQkIxMjFBQUQwMX0iDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uX250LnJjIg0KLQkJCQk+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQkJCT4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQkJCT4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3B5dGhvbmNvcmUudmNwcm9qIGIvUEMvVlM5LjAvcHl0aG9uY29yZS52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmNjA0NzAuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvcHl0aG9uY29yZS52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSwxODc3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJweXRob25jb3JlIg0KLQlQcm9qZWN0R1VJRD0ie0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0iDQotCVJvb3ROYW1lc3BhY2U9InB5dGhvbmNvcmUiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iDQotCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBSZWxlYXNlICZxdW90OyQoSW50RGlyKVwmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiZxdW90OyQoSW50RGlyKWdldGJ1aWxkaW5mby5vJnF1b3Q7Ig0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQeURsbE5hbWUpLmRsbCINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iDQotCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBSZWxlYXNlICZxdW90OyQoSW50RGlyKVwmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiZxdW90OyQoSW50RGlyKWdldGJ1aWxkaW5mby5vJnF1b3Q7Ig0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQeURsbE5hbWUpLmRsbCINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjAiDQotCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCURlc2NyaXB0aW9uPSJHZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLiINCi0JCQkJQ29tbWFuZExpbmU9IiZxdW90OyQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlJnF1b3Q7IERlYnVnICZxdW90OyQoSW50RGlyKVwmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiZxdW90OyQoSW50RGlyKWdldGJ1aWxkaW5mby5vJnF1b3Q7Ig0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQeURsbE5hbWUpX2QuZGxsIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikkKFB5RGxsTmFtZSlfZC5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikkKFB5RGxsTmFtZSlfZC5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjAiDQotCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCURlc2NyaXB0aW9uPSJHZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLiINCi0JCQkJQ29tbWFuZExpbmU9IiZxdW90OyQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlJnF1b3Q7IERlYnVnICZxdW90OyQoSW50RGlyKVwmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiZxdW90OyQoSW50RGlyKWdldGJ1aWxkaW5mby5vJnF1b3Q7Ig0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQeURsbE5hbWUpX2QuZGxsIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikkKFB5RGxsTmFtZSlfZC5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikkKFB5RGxsTmFtZSlfZC5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iDQotCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBSZWxlYXNlICZxdW90OyQoSW50RGlyKVwmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiZxdW90OyQoSW50RGlyKWdldGJ1aWxkaW5mby5vJnF1b3Q7Ig0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQeURsbE5hbWUpLmRsbCINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyUEdJKSQoUHlEbGxOYW1lKS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIg0KLQkJCQlDb21tYW5kTGluZT0iJnF1b3Q7JChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUmcXVvdDsgUmVsZWFzZSAmcXVvdDskKEludERpcilcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSImcXVvdDskKEludERpcilnZXRidWlsZGluZm8ubyZxdW90OyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKS5kbGwiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpclBHSSkkKFB5RGxsTmFtZSkubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iDQotCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBSZWxlYXNlICZxdW90OyQoSW50RGlyKVwmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiZxdW90OyQoSW50RGlyKWdldGJ1aWxkaW5mby5vJnF1b3Q7Ig0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQeURsbE5hbWUpLmRsbCINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyUEdJKSQoUHlEbGxOYW1lKS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCURlc2NyaXB0aW9uPSJHZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLiINCi0JCQkJQ29tbWFuZExpbmU9IiZxdW90OyQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlJnF1b3Q7IFJlbGVhc2UgJnF1b3Q7JChJbnREaXIpXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJnF1b3Q7JChJbnREaXIpZ2V0YnVpbGRpbmZvLm8mcXVvdDsiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFB5RGxsTmFtZSkuZGxsIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikkKFB5RGxsTmFtZSkucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXJQR0kpJChQeURsbE5hbWUpLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkluY2x1ZGUiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxhYnN0cmFjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxhY2N1LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGFzZGwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYXN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGJpdHNldC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxib29sb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGJ5dGVzX21ldGhvZHMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYnl0ZWFycmF5b2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGJ5dGVzb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNlbGxvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY2V2YWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY2xhc3NvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY29kZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjb2RlY3MuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY29tcGlsZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjb21wbGV4b2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGRhdGV0aW1lLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGRlc2Nyb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGRpY3RvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZHluYW1pY19hbm5vdGF0aW9ucy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxlbnVtb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGVycmNvZGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZXZhbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmaWxlb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGZpbGV1dGlscy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmbG9hdG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmcmFtZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmdW5jb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGdlbm9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxncmFtaW5pdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxncmFtbWFyLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGltcG9ydC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxpbnRyY2hlY2suaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcaXRlcm9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxsaXN0b2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGxvbmdpbnRyZXByLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGxvbmdvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbWFyc2hhbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtZW1vcnlvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbWV0YWdyYW1tYXIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbWV0aG9kb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1vZHN1cHBvcnQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbW9kdWxlb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG5hbWVzcGFjZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxub2RlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxvYmppbXBsLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG9wY29kZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxvc2RlZnMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccGFyc2V0b2suaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccGF0Y2hsZXZlbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxwZ2VuLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHBnZW5oZWFkZXJzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5X2N1cnNlcy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWFyZW5hLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5Y2Fwc3VsZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWN0eXBlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5ZGVidWcuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHllcnJvcnMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlleHBhdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWZwZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWdldG9wdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweW1hY3Rvb2xib3guaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHltYXRoLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5dGltZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweW1hY3JvLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5bWVtLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5cG9ydC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXN0YXRlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5c3RyY21wLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5c3RydG9kLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGR0b2EuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcUHl0aG9uLWFzdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxQeXRob24uaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHl0aG9ucnVuLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5dGhyZWFkLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHJhbmdlb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHNldG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzbGljZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzdHJ1Y3RtZW1iZXIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc3RydWN0c2VxLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHN5bXRhYmxlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHN5c21vZHVsZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx0aW1lZnVuY3MuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdG9rZW4uaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdHJhY2ViYWNrLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHR1cGxlb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHVjbmhhc2guaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdW5pY29kZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx3ZWFrcmVmb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJNb2R1bGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2Jpc2VjdG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY29kZWNzbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jb2xsZWN0aW9uc21vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3N2LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9mdW5jdG9vbHNtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2hlYXBxbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9qc29uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9sb2NhbGVtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2xzcHJvZi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbWF0aC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbWF0aC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfcGlja2xlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9yYW5kb21tb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NyZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3RydWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF93ZWFrcmVmLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF93aW5hcGkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYXJyYXltb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYXRleGl0bW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGF1ZGlvb3AuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYmluYXNjaWkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY21hdGhtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RhdGV0aW1lbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGVycm5vbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGZhdWx0aGFuZGxlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xnY21vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xpdGVydG9vbHNtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbWFpbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtYXRobW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1kNW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtbWFwbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9vcGVyYXRvci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xwYXJzZXJtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccG9zaXhtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccm90YXRpbmd0cmVlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzaGExbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNoYTI1Nm1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzaGE1MTJtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2lnbmFsbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNyZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzcmVfY29uc3RhbnRzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNyZV9saWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3N0YXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc3ltdGFibGVtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3RocmVhZG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x0aW1lbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHh4c3VidHlwZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6aXBpbXBvcnQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYm1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWx0ZXINCi0JCQkJTmFtZT0iX2lvIg0KLQkJCQk+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXGZpbGVpby5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXGJ5dGVzaW8uYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xzdHJpbmdpby5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXGJ1ZmZlcmVkaW8uYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xpb2Jhc2UuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1x0ZXh0aW8uYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCTwvRmlsdGVyPg0KLQkJCTxGaWx0ZXINCi0JCQkJTmFtZT0iemxpYiINCi0JCQkJPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxjb21wcmVzcy5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxjcmMzMi5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxkZWZsYXRlLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGRlZmxhdGUuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mYmFjay5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mZml4ZWQuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHRyZWVzLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHRyZWVzLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHVuY29tcHIuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcemNvbmYuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcemNvbmYuaW4uaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcemxpYi5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6dXRpbC5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJPC9GaWx0ZXI+DQotCQkJPEZpbHRlcg0KLQkJCQlOYW1lPSJjamtjb2RlY3MiDQotCQkJCT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19jbi5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfaGsuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2lzbzIwMjIuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2pwLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19rci5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfdHcuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xhbGdfamlzeDAyMDEuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xjamtjb2RlY3MuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xlbXVfamlzeDAyMTNfMjAwMC5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2NuLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfaGsuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19qaXN4MDIxM19wYWlyLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfanAuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19rci5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX3R3LmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbXVsdGlieXRlY29kZWMuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtdWx0aWJ5dGVjb2RlYy5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJPC9GaWx0ZXI+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJPYmplY3RzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYWJzdHJhY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYWNjdS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xib29sb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJ5dGVzX21ldGhvZHMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYnl0ZWFycmF5b2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJ5dGVzb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNhcHN1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY2VsbG9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjbGFzc29iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjb2Rlb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNvbXBsZXhvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXGNvdW50LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGRlc2Nyb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGRpY3RvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZW51bW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xleGNlcHRpb25zLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ2xpYlxmYXN0c2VhcmNoLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZpbGVvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXGZpbmQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZmxvYXRvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZnJhbWVvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZnVuY29iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xnZW5vYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcaXRlcm9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xsaXN0b2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGxvbmdvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbWVtb3J5b2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG1ldGhvZG9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xtb2R1bGVvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbmFtZXNwYWNlb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xvYm1hbGxvYy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJpbmdsaWJccGFydGl0aW9uLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHJhbmdlb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ2xpYlxyZXBsYWNlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHNldG9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzbGljZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJpbmdsaWJcc3BsaXQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RydWN0c2VxLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHR1cGxlb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHR5cGVvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcdW5pY29kZWN0eXBlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHVuaWNvZGVvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcdW5pY29kZXR5cGVfZGIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcd2Vha3JlZm9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iUGFyc2VyIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxhY2NlbGVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcYml0c2V0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcZmlyc3RzZXRzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcZ3JhbW1hci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGdyYW1tYXIxLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcbGlzdG5vZGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxtZXRhZ3JhbW1hci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXG15cmVhZGxpbmUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxub2RlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJccGFyc2VyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJccGFyc2VyLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJccGFyc2V0b2suYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclx0b2tlbml6ZXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclx0b2tlbml6ZXIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlBDIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHdpbnJlZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcY29uZmlnLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xkbF9udC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcZXJybWFwLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xnZXRwYXRocC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcbXN2Y3J0bW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweWNvbmZpZy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iUHl0aG9uIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxfd2FybmluZ3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxhc2RsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cYXN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cYmx0aW5tb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjZXZhbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGNvZGVjcy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGNvbXBpbGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxkeW5hbWljX2Fubm90YXRpb25zLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZHlubG9hZF93aW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxlcnJvcnMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxmaWxldXRpbHMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxmb3JtYXR0ZXJfdW5pY29kZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZyb3plbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZ1dHVyZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldGFyZ3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRjb21waWxlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldGNvcHlyaWdodC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldG9wdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldHBsYXRmb3JtLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0dmVyc2lvbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdyYW1pbml0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25caW1wb3J0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25caW1wb3J0ZGwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxpbXBvcnRkbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG1hcnNoYWwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxtb2RzdXBwb3J0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cbXlzbnByaW50Zi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG15c3RydG91bC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHBlZXBob2xlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlhcmVuYS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5Y3R5cGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweWZwZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5bWF0aC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5dGltZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5c3RhdGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXN0cmNtcC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5c3RydG9kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZHRvYS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXFB5dGhvbi1hc3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXRob25ydW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0gCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccmFuZG9tLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cc3RydWN0bWVtYmVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cc3ltdGFibGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxzeXNtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblx0aHJlYWQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblx0aHJlYWRfbnQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblx0cmFjZWJhY2suYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbl9udC5yYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9weXRob253LnZjcHJvaiBiL1BDL1ZTOS4wL3B5dGhvbncudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjVjMDRiLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3B5dGhvbncudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNjE4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJweXRob253Ig0KLQlQcm9qZWN0R1VJRD0ie0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0iDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob253X2QuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9ud19kLmV4ZSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob253LmV4ZSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob25fZXhlLnJjIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXFdpbk1haW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9yZWxlYXNlLnZzcHJvcHMgYi9QQy9WUzkuMC9yZWxlYXNlLnZzcHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4ZGVmOTAuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvcmVsZWFzZS52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InJlbGVhc2UiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJLaWxsUHl0aG9uRXhlIg0KLQkJVmFsdWU9IiQoT3V0RGlyKVxraWxsX3B5dGhvbi5leGUiDQotCS8+CQ0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9zZWxlY3QudmNwcm9qIGIvUEMvVlM5LjAvc2VsZWN0LnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM3ZmQ5Ny4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9zZWxlY3QudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTM3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJzZWxlY3QiDQotCVByb2plY3RHVUlEPSJ7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfSINCi0JUm9vdE5hbWVzcGFjZT0ic2VsZWN0Ig0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzZWxlY3Rtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9zcWxpdGUzLnZjcHJvaiBiL1BDL1ZTOS4wL3NxbGl0ZTMudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjhjMzI4Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3NxbGl0ZTMudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTM3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJzcWxpdGUzIg0KLQlQcm9qZWN0R1VJRD0ie0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0iDQotCVJvb3ROYW1lc3BhY2U9InNxbGl0ZTMiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5kbGwiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXGRlYnVnLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpX2QuZGxsIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZGxsIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmRsbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKHNxbGl0ZTNEaXIpJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZGxsIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmRsbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoc3FsaXRlM0Rpcilcc3FsaXRlMy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChzcWxpdGUzRGlyKVxzcWxpdGUzZXh0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChzcWxpdGUzRGlyKVxzcWxpdGUzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvc3FsaXRlMy52c3Byb3BzIGIvUEMvVlM5LjAvc3FsaXRlMy52c3Byb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTAyZGY1Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3NxbGl0ZTMudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJzcWxpdGUzIg0KLQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wcyINCi0JPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iU1FMSVRFX0FQST1fX2RlY2xzcGVjKGRsbGV4cG9ydCkiDQotCQlXYXJuaW5nTGV2ZWw9IjEiDQotCS8+DQotPC9WaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3NzbC52Y3Byb2ogYi9QQy9WUzkuMC9zc2wudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzBlODc3Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3NzbC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSwxODkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9InNzbCINCi0JUHJvamVjdEdVSUQ9IntFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9Ig0KLQlSb290TmFtZXNwYWNlPSJzc2wiDQotCUtleXdvcmQ9Ik1ha2VGaWxlUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSIiDQotCQkJCU91dHB1dD0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSIiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9IiINCi0JCQkJT3V0cHV0PSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9IiINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iIg0KLQkJCQlPdXRwdXQ9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSIiDQotCQkJCU91dHB1dD0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSIiDQotCQkJCU91dHB1dD0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSIiDQotCQkJCU91dHB1dD0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9IiINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iIg0KLQkJCQlPdXRwdXQ9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSIiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9IiINCi0JCQkJT3V0cHV0PSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvdW5pY29kZWRhdGEudmNwcm9qIGIvUEMvVlM5LjAvdW5pY29kZWRhdGEudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjZmZjcyLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3VuaWNvZGVkYXRhLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDUzMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0idW5pY29kZWRhdGEiDQotCVByb2plY3RHVUlEPSJ7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfSINCi0JUm9vdE5hbWVzcGFjZT0idW5pY29kZWRhdGEiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHVuaWNvZGVkYXRhX2RiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHVuaWNvZGVuYW1lX2RiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x1bmljb2RlZGF0YS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3dpbnNvdW5kLnZjcHJvaiBiL1BDL1ZTOS4wL3dpbnNvdW5kLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdkYmYyOS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC93aW5zb3VuZC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MjMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9IndpbnNvdW5kIg0KLQlQcm9qZWN0R1VJRD0iezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0iDQotCVJvb3ROYW1lc3BhY2U9IndpbnNvdW5kIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214Ig0KLQkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ig0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHdpbnNvdW5kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAveDY0LnZzcHJvcHMgYi9QQy9WUzkuMC94NjQudnNwcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA2ZjQ3MC4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC94NjQudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJhbWQ2NCINCi0JT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKVxhbWQ2NFwiDQotCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC0kKENvbmZpZ3VyYXRpb25OYW1lKVwkKFByb2plY3ROYW1lKVwiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0dTLSINCi0JCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lONjQ7X01fWDY0Ig0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9IlB5dGhvbkV4ZSINCi0JCVZhbHVlPSIkKEhPU1RfUFlUSE9OKSINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAveHhsaW1pdGVkLnZjcHJvaiBiL1BDL1ZTOS4wL3h4bGltaXRlZC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYWFhZDYuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAveHhsaW1pdGVkLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDQxNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0ieHhsaW1pdGVkIg0KLQlQcm9qZWN0R1VJRD0ie0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0iDQotCVJvb3ROYW1lc3BhY2U9Inh4bGltaXRlZCINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRztfV0lOMzI7X1dJTkRMTDtQeV9MSU1JVEVEX0FQSTskKE5PSU5IRVJJVCkiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfTElNSVRFRF9BUEkiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfTElNSVRFRF9BUEkiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHh4bGltaXRlZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL2JkaXN0X3dpbmluc3QvYXJjaGl2ZS5oIGIvUEMvYmRpc3Rfd2luaW5zdC9hcmNoaXZlLmgKaW5kZXggMzFhNzgwNS4uNTBmZjE1YyAxMDA2NDQKLS0tIGEvUEMvYmRpc3Rfd2luaW5zdC9hcmNoaXZlLmgKKysrIGIvUEMvYmRpc3Rfd2luaW5zdC9hcmNoaXZlLmgKQEAgLTEsMTAgKzEsOSBAQAogLyoKLSAgSU1QT1JUQU5UIE5PVEU6IElGIFRISVMgRklMRSBJUyBDSEFOR0VELCBXSU5JTlNULTYuRVhFIE1VU1QgQkUgUkVDT01QSUxFRAotICBXSVRIIFRIRSBNU1ZDNiBXSU5JTlNULkRTVyBXT1JLU1BBQ0UgRklMRSBNQU5VQUxMWSwgQU5EIFdJTklOU1QtNy4xLkVYRSBNVVNUCi0gIEJFIFJFQ09NUElMRUQgV0lUSCBUSEUgTVNWQyAyMDAzLk5FVCBXSU5JTlNULTcuMS5WQ1BST0ogRklMRSBNQU5VQUxMWS4KKyAgSU1QT1JUQU5UIE5PVEU6IElGIFRISVMgRklMRSBJUyBDSEFOR0VELCBQQ0JVSUxEXEJESVNUX1dJTklOU1QuVkNYUFJPSiBNVVNUCisgIEJFIFJFQlVJTFQgQVMgV0VMTC4KIAotICBJRiBDSEFOR0VTIFRPIFRISVMgRklMRSBBUkUgQ0hFQ0tFRCBJTlRPIFBZVEhPTiBDVlMsIFRIRSBSRUNPTVBJTEVEIEJJTkFSSUVTCi0gIE1VU1QgQkUgQ0hFQ0tFRCBJTiBBUyBXRUxMIQorICBJRiBDSEFOR0VTIFRPIFRISVMgRklMRSBBUkUgQ0hFQ0tFRCBJTiwgVEhFIFJFQ09NUElMRUQgQklOQVJJRVMgTVVTVCBCRQorICBDSEVDS0VEIElOIEFTIFdFTEwhCiAqLwogCiAjcHJhZ21hIHBhY2soMSkKZGlmZiAtLWdpdCBhL1BDL2JkaXN0X3dpbmluc3QvYmRpc3Rfd2luaW5zdC52Y3hwcm9qIGIvUEMvYmRpc3Rfd2luaW5zdC9iZGlzdF93aW5pbnN0LnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFiNDc0ZQotLS0gL2Rldi9udWxsCisrKyBiL1BDL2JkaXN0X3dpbmluc3QvYmRpc3Rfd2luaW5zdC52Y3hwcm9qCkBAIC0wLDAgKzEsMTAzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+d2luaW5zdDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8TWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PkNsQ29tcGlsZTwvTWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iLi5cLi5cUENCdWlsZFxweXRob24ucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXC4uXFBDQnVpbGRccHlwcm9qZWN0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPE91dERpcj4kKFB5U291cmNlUGF0aClsaWJcZGlzdHV0aWxzXGNvbW1hbmRcPC9PdXREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbD5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxUYXJnZXROYW1lPndpbmluc3QtJChWaXN1YWxTdHVkaW9WZXJzaW9uKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICd4NjQnIj4kKFRhcmdldE5hbWUpLWFtZDY0PC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXRFeHQ+LmV4ZTwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxNaWRsPgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcil3aW5pbnN0LnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NaW5TcGFjZTwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQeVNvdXJjZVBhdGgpTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFB5U291cmNlUGF0aClQQ1xiZGlzdF93aW5pbnN0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5jb21jdGwzMi5saWI7aW1hZ2VobHAubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJleHRyYWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJpbnN0YWxsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cTW9kdWxlc1x6bGliXGNyYzMyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cTW9kdWxlc1x6bGliXHp1dGlsLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iYXJjaGl2ZS5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Imluc3RhbGwucmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9IlB5dGhvblBvd2VyZWQuYm1wIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2JkaXN0X3dpbmluc3QudmN4cHJvai5maWx0ZXJzIGIvUEMvYmRpc3Rfd2luaW5zdC9iZGlzdF93aW5pbnN0LnZjeHByb2ouZmlsdGVycwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gUENidWlsZC9iZGlzdF93aW5pbnN0LnZjeHByb2ouZmlsdGVycwpyZW5hbWUgdG8gUEMvYmRpc3Rfd2luaW5zdC9iZGlzdF93aW5pbnN0LnZjeHByb2ouZmlsdGVycwpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC9idWlsZC5iYXQgYi9QQy9iZGlzdF93aW5pbnN0L2J1aWxkLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWY1NjVjCi0tLSAvZGV2L251bGwKKysrIGIvUEMvYmRpc3Rfd2luaW5zdC9idWlsZC5iYXQKQEAgLTAsMCArMSwyMiBAQAorQGVjaG8gb2ZmDQorc2V0bG9jYWwNCisNCitzZXQgRD0lfmRwMA0KK3NldCBQQ0JVSUxEPSV+ZHAwLi5cLi5cUENCdWlsZFwNCisNCisNCitlY2hvIEJ1aWxkaW5nIExpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LXh4LjAuZXhlDQorDQorY2FsbCAiJVBDQlVJTEQlZW52LmJhdCIgeDg2DQoraWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KKw0KK21zYnVpbGQgIiVEJWJkaXN0X3dpbmluc3QudmN4cHJvaiIgIi9wOlNvbHV0aW9uRGlyPSVQQ0JVSUxEJVwiIC9wOkNvbmZpZ3VyYXRpb249UmVsZWFzZSAvcDpQbGF0Zm9ybT1XaW4zMg0KK2lmIGVycm9ybGV2ZWwgMSBnb3RvIDplb2YNCisNCisNCitlY2hvIEJ1aWxkaW5nIExpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LXh4LjAtYW1kNjQuZXhlDQorDQorY2FsbCAiJVBDQlVJTEQlZW52LmJhdCIgeDg2X2FtZDY0DQoraWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KKw0KK21zYnVpbGQgIiVEJWJkaXN0X3dpbmluc3QudmN4cHJvaiIgIi9wOlNvbHV0aW9uRGlyPSVQQ0JVSUxEJVwiIC9wOkNvbmZpZ3VyYXRpb249UmVsZWFzZSAvcDpQbGF0Zm9ybT14NjQNCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L2V4dHJhY3QuYyBiL1BDL2JkaXN0X3dpbmluc3QvZXh0cmFjdC5jCmluZGV4IGFlYzhlZGEuLjAyNDlkOWYgMTAwNjQ0Ci0tLSBhL1BDL2JkaXN0X3dpbmluc3QvZXh0cmFjdC5jCisrKyBiL1BDL2JkaXN0X3dpbmluc3QvZXh0cmFjdC5jCkBAIC0xLDEwICsxLDkgQEAKIC8qCi0gIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgV0lOSU5TVC02LkVYRSBNVVNUIEJFIFJFQ09NUElMRUQKLSAgV0lUSCBUSEUgTVNWQzYgV0lOSU5TVC5EU1cgV09SS1NQQUNFIEZJTEUgTUFOVUFMTFksIEFORCBXSU5JTlNULTcuMS5FWEUgTVVTVAotICBCRSBSRUNPTVBJTEVEIFdJVEggVEhFIE1TVkMgMjAwMy5ORVQgV0lOSU5TVC03LjEuVkNQUk9KIEZJTEUgTUFOVUFMTFkuCisgIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgUENCVUlMRFxCRElTVF9XSU5JTlNULlZDWFBST0ogTVVTVAorICBCRSBSRUJVSUxUIEFTIFdFTEwuCiAKLSAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU5UTyBQWVRIT04gQ1ZTLCBUSEUgUkVDT01QSUxFRCBCSU5BUklFUwotICBNVVNUIEJFIENIRUNLRUQgSU4gQVMgV0VMTCEKKyAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU4sIFRIRSBSRUNPTVBJTEVEIEJJTkFSSUVTIE1VU1QgQkUKKyAgQ0hFQ0tFRCBJTiBBUyBXRUxMIQogKi8KIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KZGlmZiAtLWdpdCBhL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jIGIvUEMvYmRpc3Rfd2luaW5zdC9pbnN0YWxsLmMKaW5kZXggZjRjZjM0OC4uZjM5YjM4MSAxMDA2NDQKLS0tIGEvUEMvYmRpc3Rfd2luaW5zdC9pbnN0YWxsLmMKKysrIGIvUEMvYmRpc3Rfd2luaW5zdC9pbnN0YWxsLmMKQEAgLTEsMTAgKzEsOSBAQAogLyoKLSAgSU1QT1JUQU5UIE5PVEU6IElGIFRISVMgRklMRSBJUyBDSEFOR0VELCBXSU5JTlNULTYuRVhFIE1VU1QgQkUgUkVDT01QSUxFRAotICBXSVRIIFRIRSBNU1ZDNiBXSU5JTlNULkRTVyBXT1JLU1BBQ0UgRklMRSBNQU5VQUxMWSwgQU5EIFdJTklOU1QtNy4xLkVYRSBNVVNUCi0gIEJFIFJFQ09NUElMRUQgV0lUSCBUSEUgTVNWQyAyMDAzLk5FVCBXSU5JTlNULTcuMS5WQ1BST0ogRklMRSBNQU5VQUxMWS4KKyAgSU1QT1JUQU5UIE5PVEU6IElGIFRISVMgRklMRSBJUyBDSEFOR0VELCBQQ0JVSUxEXEJESVNUX1dJTklOU1QuVkNYUFJPSiBNVVNUCisgIEJFIFJFQlVJTFQgQVMgV0VMTC4KIAotICBJRiBDSEFOR0VTIFRPIFRISVMgRklMRSBBUkUgQ0hFQ0tFRCBJTlRPIFBZVEhPTiBDVlMsIFRIRSBSRUNPTVBJTEVEIEJJTkFSSUVTCi0gIE1VU1QgQkUgQ0hFQ0tFRCBJTiBBUyBXRUxMIQorICBJRiBDSEFOR0VTIFRPIFRISVMgRklMRSBBUkUgQ0hFQ0tFRCBJTiwgVEhFIFJFQ09NUElMRUQgQklOQVJJRVMgTVVTVCBCRQorICBDSEVDS0VEIElOIEFTIFdFTEwhCiAqLwogCiAvKgpAQCAtMTIxNiw3ICsxMjE1LDcgQEAKIAogI2luY2x1ZGUgPHByc2h0Lmg+CiAKLUJPT0wgQ0FMTEJBQ0sKK0lOVF9QVFIgQ0FMTEJBQ0sKIEludHJvRGxnUHJvYyhIV05EIGh3bmQsIFVJTlQgbXNnLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogewogICAgIExQTk1IRFIgbHBubTsKQEAgLTE1NjUsNyArMTU2NCw3IEBACiAgICAgcmV0dXJuIG9sZF9zY2hlbWU7CiB9CiAKLUJPT0wgQ0FMTEJBQ0sKK0lOVF9QVFIgQ0FMTEJBQ0sKIFNlbGVjdFB5dGhvbkRsZ1Byb2MoSFdORCBod25kLCBVSU5UIG1zZywgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKIHsKICAgICBMUE5NSERSIGxwbm07CkBAIC0xODY3LDcgKzE4NjYsNyBAQAogICAgICAgICBmY2xvc2UobG9nZmlsZSk7CiB9CiAKLUJPT0wgQ0FMTEJBQ0sKK0lOVF9QVFIgQ0FMTEJBQ0sKIEluc3RhbGxGaWxlc0RsZ1Byb2MoSFdORCBod25kLCBVSU5UIG1zZywgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKIHsKICAgICBMUE5NSERSIGxwbm07CkBAIC0yMDIyLDcgKzIwMjEsNyBAQAogfQogCiAKLUJPT0wgQ0FMTEJBQ0sKK0lOVF9QVFIgQ0FMTEJBQ0sKIEZpbmlzaGVkRGxnUHJvYyhIV05EIGh3bmQsIFVJTlQgbXNnLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogewogICAgIExQTk1IRFIgbHBubTsKQEAgLTIxOTgsMjMgKzIxOTcsNiBAQAogICAgIHJldHVybiBUUlVFOwogfQogCi0vLyBSZXR1cm5zIFRSVUUgaWYgdGhlIHBsYXRmb3JtIHN1cHBvcnRzIFVBQy4KLUJPT0wgUGxhdGZvcm1TdXBwb3J0c1VBQygpCi17Ci0gICAgLy8gTm90ZSB0aGF0IHdpbjJrIGRvZXMgc2VlbSB0byBzdXBwb3J0IFNoZWxsRXhlY3V0ZSB3aXRoICdydW5hcycsCi0gICAgLy8gYnV0IGRvZXMgKm5vdCogc3VwcG9ydCBJc1VzZXJBbkFkbWluIC0gc28gd2UganVzdCBwcmV0ZW5kIHRoaW5ncwotICAgIC8vIG9ubHkgd29yayBvbiBYUCBhbmQgbGF0ZXIuCi0gICAgQk9PTCBiSXNXaW5kb3dzWFBvckxhdGVyOwotICAgIE9TVkVSU0lPTklORk8gd2ludmVyaW5mbzsKLSAgICB3aW52ZXJpbmZvLmR3T1NWZXJzaW9uSW5mb1NpemUgPSBzaXplb2Yod2ludmVyaW5mbyk7Ci0gICAgaWYgKCFHZXRWZXJzaW9uRXgoJndpbnZlcmluZm8pKQotICAgICAgICByZXR1cm4gRkFMU0U7IC8vIHNvbWV0aGluZyBiYWQgaGFzIGdvbmUgd3JvbmcKLSAgICBiSXNXaW5kb3dzWFBvckxhdGVyID0KLSAgICAgICAoICh3aW52ZXJpbmZvLmR3TWFqb3JWZXJzaW9uID4gNSkgfHwKLSAgICAgICAoICh3aW52ZXJpbmZvLmR3TWFqb3JWZXJzaW9uID09IDUpICYmICh3aW52ZXJpbmZvLmR3TWlub3JWZXJzaW9uID49IDEpICkpOwotICAgIHJldHVybiBiSXNXaW5kb3dzWFBvckxhdGVyOwotfQotCiAvLyBTcGF3biBvdXJzZWxmIGFzIGFuIGVsZXZhdGVkIGFwcGxpY2F0aW9uLiAgT24gZmFpbHVyZSwgYSBtZXNzYWdlIGlzCiAvLyBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgLSBidXQgdGhpcyBhcHAgd2lsbCBhbHdheXMgdGVybWluYXRlLCBldmVuCiAvLyBvbiBlcnJvci4KQEAgLTIyNzAsNyArMjI1Miw3IEBACiAKICAgICAvLyBTZWUgaWYgd2UgbmVlZCB0byBkbyB0aGUgVmlzdGEgVUFDIG1hZ2ljLgogICAgIGlmIChzdHJjbXAodXNlcl9hY2Nlc3NfY29udHJvbCwgImZvcmNlIik9PTApIHsKLSAgICAgICAgaWYgKFBsYXRmb3JtU3VwcG9ydHNVQUMoKSAmJiAhTXlJc1VzZXJBbkFkbWluKCkpIHsKKyAgICAgICAgaWYgKCFNeUlzVXNlckFuQWRtaW4oKSkgewogICAgICAgICAgICAgU3Bhd25VQUMoKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0yMjc4LDcgKzIyNjAsNyBAQAogICAgIH0gZWxzZSBpZiAoc3RyY21wKHVzZXJfYWNjZXNzX2NvbnRyb2wsICJhdXRvIik9PTApIHsKICAgICAgICAgLy8gQ2hlY2sgaWYgaXQgbG9va3MgbGlrZSB3ZSBuZWVkIFVBQyBjb250cm9sLCBiYXNlZAogICAgICAgICAvLyBvbiBob3cgUHl0aG9uIGl0c2VsZiB3YXMgaW5zdGFsbGVkLgotICAgICAgICBpZiAoUGxhdGZvcm1TdXBwb3J0c1VBQygpICYmICFNeUlzVXNlckFuQWRtaW4oKSAmJiBOZWVkQXV0b1VBQygpKSB7CisgICAgICAgIGlmICghTXlJc1VzZXJBbkFkbWluKCkgJiYgTmVlZEF1dG9VQUMoKSkgewogICAgICAgICAgICAgU3Bhd25VQUMoKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwucmMgYi9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwucmMKaW5kZXggZDAxOGI0OC4uZGZhMmZmYyAxMDA2NDQKLS0tIGEvUEMvYmRpc3Rfd2luaW5zdC9pbnN0YWxsLnJjCisrKyBiL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5yYwpAQCAtMSw5NyArMSwyMCBAQAogLyoKLSAgSU1QT1JUQU5UIE5PVEU6IElGIFRISVMgRklMRSBJUyBDSEFOR0VELCBXSU5JTlNULTYuRVhFIE1VU1QgQkUgUkVDT01QSUxFRAotICBXSVRIIFRIRSBNU1ZDNiBXSU5JTlNULkRTVyBXT1JLU1BBQ0UgRklMRSBNQU5VQUxMWSwgQU5EIFdJTklOU1QtNy4xLkVYRSBNVVNUCi0gIEJFIFJFQ09NUElMRUQgV0lUSCBUSEUgTVNWQyAyMDAzLk5FVCBXSU5JTlNULTcuMS5WQ1BST0ogRklMRSBNQU5VQUxMWS4KKyAgSU1QT1JUQU5UIE5PVEU6IElGIFRISVMgRklMRSBJUyBDSEFOR0VELCBQQ0JVSUxEXEJESVNUX1dJTklOU1QuVkNYUFJPSiBNVVNUCisgIEJFIFJFQlVJTFQgQVMgV0VMTC4KIAotICBJRiBDSEFOR0VTIFRPIFRISVMgRklMRSBBUkUgQ0hFQ0tFRCBJTlRPIFBZVEhPTiBDVlMsIFRIRSBSRUNPTVBJTEVEIEJJTkFSSUVTCi0gIE1VU1QgQkUgQ0hFQ0tFRCBJTiBBUyBXRUxMIQorICBJRiBDSEFOR0VTIFRPIFRISVMgRklMRSBBUkUgQ0hFQ0tFRCBJTiwgVEhFIFJFQ09NUElMRUQgQklOQVJJRVMgTVVTVCBCRQorICBDSEVDS0VEIElOIEFTIFdFTEwhCiAqLwogCi0vL01pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIGdlbmVyYXRlZCByZXNvdXJjZSBzY3JpcHQuCi0vLworI2luY2x1ZGUgPHdpbnJlcy5oPgogI2luY2x1ZGUgInJlc291cmNlLmgiCiAKLSNkZWZpbmUgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBHZW5lcmF0ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUgMiByZXNvdXJjZS4KLS8vCi0jaW5jbHVkZSAiYWZ4cmVzLmgiCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0jdW5kZWYgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gTmV1dHJhbCByZXNvdXJjZXMKLQotI2lmICFkZWZpbmVkKEFGWF9SRVNPVVJDRV9ETEwpIHx8IGRlZmluZWQoQUZYX1RBUkdfTkVVKQotI2lmZGVmIF9XSU4zMgogTEFOR1VBR0UgTEFOR19ORVVUUkFMLCBTVUJMQU5HX05FVVRSQUwKICNwcmFnbWEgY29kZV9wYWdlKDEyNTIpCi0jZW5kaWYgLy9fV0lOMzIKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBCaXRtYXAKLS8vCiAKIElEQl9CSVRNQVAgICAgICAgICAgICAgIEJJVE1BUCAgRElTQ0FSREFCTEUgICAgICJQeXRob25Qb3dlcmVkLmJtcCIKLSNlbmRpZiAgICAvLyBOZXV0cmFsIHJlc291cmNlcwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gR2VybWFuIChHZXJtYW55KSByZXNvdXJjZXMKLQotI2lmICFkZWZpbmVkKEFGWF9SRVNPVVJDRV9ETEwpIHx8IGRlZmluZWQoQUZYX1RBUkdfREVVKQotI2lmZGVmIF9XSU4zMgotTEFOR1VBR0UgTEFOR19HRVJNQU4sIFNVQkxBTkdfR0VSTUFOCi0jcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQotI2VuZGlmIC8vX1dJTjMyCi0KLSNpZmRlZiBBUFNUVURJT19JTlZPS0VECi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIFRFWFRJTkNMVURFCi0vLwotCi0xIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFIAotQkVHSU4KLSAgICAicmVzb3VyY2UuaFwwIgotRU5ECi0KLTIgVEVYVElOQ0xVREUgRElTQ0FSREFCTEUgCi1CRUdJTgotICAgICIjaW5jbHVkZSAiImFmeHJlcy5oIiJcclxuIgotICAgICJcMCIKLUVORAotCi0zIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFIAotQkVHSU4KLSAgICAiXHJcbiIKLSAgICAiXDAiCi1FTkQKLQotI2VuZGlmICAgIC8vIEFQU1RVRElPX0lOVk9LRUQKLQotI2VuZGlmICAgIC8vIEdlcm1hbiAoR2VybWFueSkgcmVzb3VyY2VzCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBFbmdsaXNoIChVLlMuKSByZXNvdXJjZXMKLQotI2lmICFkZWZpbmVkKEFGWF9SRVNPVVJDRV9ETEwpIHx8IGRlZmluZWQoQUZYX1RBUkdfRU5VKQotI2lmZGVmIF9XSU4zMgotTEFOR1VBR0UgTEFOR19FTkdMSVNILCBTVUJMQU5HX0VOR0xJU0hfVVMKLSNwcmFnbWEgY29kZV9wYWdlKDEyNTIpCi0jZW5kaWYgLy9fV0lOMzIKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBEaWFsb2cKLS8vCi0KIElERF9JTlRSTyBESUFMT0dFWCAwLCAwLCAzNzksIDE3OAogU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRCB8IFdTX0NBUFRJT04KIENBUFRJT04gIlNldHVwIgpAQCAtMTUyLDc4ICs3NSwzIEBACiAgICAgRURJVFRFWFQgICAgICAgIElEQ19JTkZPLDEyNSw0MCwyNDcsMTMxLEVTX01VTFRJTElORSB8IEVTX1JFQURPTkxZIHwgCiAgICAgICAgICAgICAgICAgICAgIFdTX1ZTQ1JPTEwgfCBXU19IU0NST0xMIHwgTk9UIFdTX1RBQlNUT1AKIEVORAotCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gREVTSUdOSU5GTwotLy8KLQotI2lmZGVmIEFQU1RVRElPX0lOVk9LRUQKLUdVSURFTElORVMgREVTSUdOSU5GTyBESVNDQVJEQUJMRSAKLUJFR0lOCi0gICAgSUREX0lOVFJPLCBESUFMT0cKLSAgICBCRUdJTgotICAgICAgICBMRUZUTUFSR0lOLCA3Ci0gICAgICAgIFJJR0hUTUFSR0lOLCAzNzIKLSAgICAgICAgVkVSVEdVSURFLCAxMjUKLSAgICAgICAgVkVSVEdVSURFLCAzNzIKLSAgICAgICAgVE9QTUFSR0lOLCA3Ci0gICAgICAgIEJPVFRPTU1BUkdJTiwgMTcxCi0gICAgICAgIEhPUlpHVUlERSwgOAotICAgICAgICBIT1JaR1VJREUsIDMxCi0gICAgRU5ECi0KLSAgICBJRERfU0VMRUNUUFlUSE9OLCBESUFMT0cKLSAgICBCRUdJTgotICAgICAgICBMRUZUTUFSR0lOLCA3Ci0gICAgICAgIFJJR0hUTUFSR0lOLCAzNzIKLSAgICAgICAgVkVSVEdVSURFLCAxMjUKLSAgICAgICAgVkVSVEdVSURFLCAzNzIKLSAgICAgICAgVE9QTUFSR0lOLCA3Ci0gICAgICAgIEJPVFRPTU1BUkdJTiwgMTcxCi0gICAgICAgIEhPUlpHVUlERSwgOAotICAgICAgICBIT1JaR1VJREUsIDQxCi0gICAgRU5ECi0KLSAgICBJRERfSU5TVEFMTEZJTEVTLCBESUFMT0cKLSAgICBCRUdJTgotICAgICAgICBMRUZUTUFSR0lOLCA3Ci0gICAgICAgIFJJR0hUTUFSR0lOLCAzNzIKLSAgICAgICAgVkVSVEdVSURFLCAxMjUKLSAgICAgICAgVkVSVEdVSURFLCAzNzEKLSAgICAgICAgVE9QTUFSR0lOLCA3Ci0gICAgICAgIEJPVFRPTU1BUkdJTiwgMTcxCi0gICAgICAgIEhPUlpHVUlERSwgOAotICAgICAgICBIT1JaR1VJREUsIDQxCi0gICAgRU5ECi0KLSAgICBJRERfRklOSVNIRUQsIERJQUxPRwotICAgIEJFR0lOCi0gICAgICAgIExFRlRNQVJHSU4sIDYKLSAgICAgICAgUklHSFRNQVJHSU4sIDM3MgotICAgICAgICBWRVJUR1VJREUsIDEyNQotICAgICAgICBWRVJUR1VJREUsIDM3MgotICAgICAgICBUT1BNQVJHSU4sIDcKLSAgICAgICAgQk9UVE9NTUFSR0lOLCAxNzEKLSAgICAgICAgSE9SWkdVSURFLCA4Ci0gICAgICAgIEhPUlpHVUlERSwgNDEKLSAgICBFTkQKLUVORAotI2VuZGlmICAgIC8vIEFQU1RVRElPX0lOVk9LRUQKLQotI2VuZGlmICAgIC8vIEVuZ2xpc2ggKFUuUy4pIHJlc291cmNlcwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotCi0KLSNpZm5kZWYgQVBTVFVESU9fSU5WT0tFRAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBHZW5lcmF0ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUgMyByZXNvdXJjZS4KLS8vCi0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSNlbmRpZiAgICAvLyBub3QgQVBTVFVESU9fSU5WT0tFRAotCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L3Jlc291cmNlLmggYi9QQy9iZGlzdF93aW5pbnN0L3Jlc291cmNlLmgKaW5kZXggMzViYTNjMi4uODZhZWFiYiAxMDA2NDQKLS0tIGEvUEMvYmRpc3Rfd2luaW5zdC9yZXNvdXJjZS5oCisrKyBiL1BDL2JkaXN0X3dpbmluc3QvcmVzb3VyY2UuaApAQCAtMSwxNiArMSwxMSBAQAogLyoKLSAgSU1QT1JUQU5UIE5PVEU6IElGIFRISVMgRklMRSBJUyBDSEFOR0VELCBXSU5JTlNULTYuRVhFIE1VU1QgQkUgUkVDT01QSUxFRAotICBXSVRIIFRIRSBNU1ZDNiBXSU5JTlNULkRTVyBXT1JLU1BBQ0UgRklMRSBNQU5VQUxMWSwgQU5EIFdJTklOU1QtNy4xLkVYRSBNVVNUCi0gIEJFIFJFQ09NUElMRUQgV0lUSCBUSEUgTVNWQyAyMDAzLk5FVCBXSU5JTlNULTcuMS5WQ1BST0ogRklMRSBNQU5VQUxMWS4KKyAgSU1QT1JUQU5UIE5PVEU6IElGIFRISVMgRklMRSBJUyBDSEFOR0VELCBQQ0JVSUxEXEJESVNUX1dJTklOU1QuVkNYUFJPSiBNVVNUCisgIEJFIFJFQlVJTFQgQVMgV0VMTC4KIAotICBJRiBDSEFOR0VTIFRPIFRISVMgRklMRSBBUkUgQ0hFQ0tFRCBJTlRPIFBZVEhPTiBDVlMsIFRIRSBSRUNPTVBJTEVEIEJJTkFSSUVTCi0gIE1VU1QgQkUgQ0hFQ0tFRCBJTiBBUyBXRUxMIQorICBJRiBDSEFOR0VTIFRPIFRISVMgRklMRSBBUkUgQ0hFQ0tFRCBJTiwgVEhFIFJFQ09NUElMRUQgQklOQVJJRVMgTVVTVCBCRQorICBDSEVDS0VEIElOIEFTIFdFTEwhCiAqLwogCi0vL3t7Tk9fREVQRU5ERU5DSUVTfX0KLS8vIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIGdlbmVyYXRlZCBpbmNsdWRlIGZpbGUuCi0vLyBVc2VkIGJ5IGluc3RhbGwucmMKLS8vCiAjZGVmaW5lIElERF9ESUFMT0cxICAgICAgICAgICAgICAgICAgICAgMTAxCiAjZGVmaW5lIElEQl9CSVRNQVAxICAgICAgICAgICAgICAgICAgICAgMTAzCiAjZGVmaW5lIElERF9JTlRSTyAgICAgICAgICAgICAgICAgICAgICAgMTA3CkBAIC0zNCwxNCArMjksMyBAQAogI2RlZmluZSBJRENfQlVJTERfSU5GTyAgICAgICAgICAgICAgICAgIDEwMjQKICNkZWZpbmUgSURDX0JJVE1BUCAgICAgICAgICAgICAgICAgICAgICAxMDI1CiAjZGVmaW5lIElEQ19PVEhFUlBZVEhPTiAgICAgICAgICAgICAgICAgMTAyNgotCi0vLyBOZXh0IGRlZmF1bHQgdmFsdWVzIGZvciBuZXcgb2JqZWN0cwotLy8gCi0jaWZkZWYgQVBTVFVESU9fSU5WT0tFRAotI2lmbmRlZiBBUFNUVURJT19SRUFET05MWV9TWU1CT0xTCi0jZGVmaW5lIF9BUFNfTkVYVF9SRVNPVVJDRV9WQUxVRSAgICAgICAgMTEyCi0jZGVmaW5lIF9BUFNfTkVYVF9DT01NQU5EX1ZBTFVFICAgICAgICAgNDAwMDEKLSNkZWZpbmUgX0FQU19ORVhUX0NPTlRST0xfVkFMVUUgICAgICAgICAxMDI4Ci0jZGVmaW5lIF9BUFNfTkVYVF9TWU1FRF9WQUxVRSAgICAgICAgICAgMTAxCi0jZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LTcuMS5zbG4gYi9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtNy4xLnNsbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIwNWQyNS4uMDAwMDAwMAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtNy4xLnNsbgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLU1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDguMDANCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIndpbmluc3QiLCAid2luaW5zdC03LjEudmNwcm9qIiwgIntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLUdsb2JhbA0KLQlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvbikgPSBwcmVTb2x1dGlvbg0KLQkJRGVidWcgPSBEZWJ1Zw0KLQkJUmVsZWFzZSA9IFJlbGVhc2UNCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uKSA9IHBvc3RTb2x1dGlvbg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCUVuZEdsb2JhbFNlY3Rpb24NCi0JR2xvYmFsU2VjdGlvbihFeHRlbnNpYmlsaXR5R2xvYmFscykgPSBwb3N0U29sdXRpb24NCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKEV4dGVuc2liaWxpdHlBZGRJbnMpID0gcG9zdFNvbHV0aW9uDQotCUVuZEdsb2JhbFNlY3Rpb24NCi1FbmRHbG9iYWwNCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtNy4xLnZjcHJvaiBiL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC03LjEudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGRhYWU5Li4wMDAwMDAwCi0tLSBhL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC03LjEudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMjE0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI3LjEwIg0KLQlOYW1lPSJ3aW5pbnN0Ig0KLQlQcm9qZWN0R1VJRD0ie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iDQotCVJvb3ROYW1lc3BhY2U9Indpbmluc3QiDQotCVNjY1Byb2plY3ROYW1lPSIiDQotCVNjY0xvY2FsUGF0aD0iIj4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIi8+DQotCTwvUGxhdGZvcm1zPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZCINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5cdGVtcC1yZWxlYXNlIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMSINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cLi5cemxpYi0xLjIuMyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIuXHRlbXAtcmVsZWFzZS93aW5pbnN0LnBjaCINCi0JCQkJQXNzZW1ibGVyTGlzdGluZ0xvY2F0aW9uPSIuXHRlbXAtcmVsZWFzZS8iDQotCQkJCU9iamVjdEZpbGU9Ii5cdGVtcC1yZWxlYXNlLyINCi0JCQkJUHJvZ3JhbURhdGFCYXNlRmlsZU5hbWU9Ii5cdGVtcC1yZWxlYXNlLyINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlx6bGliLTEuMi4zXHpsaWIubGliIGltYWdlaGxwLmxpYiBjb21jdGwzMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTcuMS5leGUiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTYucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlNa1R5cExpYkNvbXBhdGlibGU9IlRSVUUiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjEiDQotCQkJCVR5cGVMaWJyYXJ5TmFtZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC50bGIiDQotCQkJCUhlYWRlckZpbGVOYW1lPSIiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx0ZW1wLWRlYnVnIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlwuLlx6bGliLTEuMi4xIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19XSU5ET1dTIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iLlx0ZW1wLWRlYnVnL3dpbmluc3QucGNoIg0KLQkJCQlBc3NlbWJsZXJMaXN0aW5nTG9jYXRpb249Ii5cdGVtcC1kZWJ1Zy8iDQotCQkJCU9iamVjdEZpbGU9Ii5cdGVtcC1kZWJ1Zy8iDQotCQkJCVByb2dyYW1EYXRhQmFzZUZpbGVOYW1lPSIuXHRlbXAtZGVidWcvIg0KLQkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjEiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlx6bGliLTEuMi4xXHpsaWIubGliIGltYWdlaGxwLmxpYiBjb21jdGwzMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTcuMV9kLmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIyIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IkxJQkMiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJUUlVFIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIxIg0KLQkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi93aW5pbnN0LnRsYiINCi0JCQkJSGVhZGVyRmlsZU5hbWU9IiIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iZXh0cmFjdC5jIj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQlPcHRpbWl6YXRpb249IjEiDQotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIi8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iaW5zdGFsbC5jIj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQlPcHRpbWl6YXRpb249IjEiDQotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIi8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iaW5zdGFsbC5yYyI+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubCI+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJhcmNoaXZlLmgiPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KLQkJCUZpbHRlcj0iaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIj4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IlB5dGhvblBvd2VyZWQuYm1wIj4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LTguc2xuIGIvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LTguc2xuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWYxNmNmLi4wMDAwMDAwCi0tLSBhL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC04LnNsbgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLU1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDkuMDANCi0jIFZpc3VhbCBTdHVkaW8gMjAwNQ0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAid2luaW5zdCIsICJ3aW5pbnN0LTgudmNwcm9qIiwgIntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9Ig0KLUVuZFByb2plY3QNCi1HbG9iYWwNCi0JR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24NCi0JCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzINCi0JCVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyDQotCUVuZEdsb2JhbFNlY3Rpb24NCi0JR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24NCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQlFbmRHbG9iYWxTZWN0aW9uDQotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uDQotCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UNCi0JRW5kR2xvYmFsU2VjdGlvbg0KLUVuZEdsb2JhbA0KZGlmZiAtLWdpdCBhL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC04LnZjcHJvaiBiL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC04LnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE0N2QxYi4uMDAwMDAwMAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtOC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSwzMjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9Indpbmluc3QiDQotCVByb2plY3RHVUlEPSJ7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfSINCi0JUm9vdE5hbWVzcGFjZT0id2luaW5zdCINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx0ZW1wLXJlbGVhc2UiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlNa1R5cExpYkNvbXBhdGlibGU9InRydWUiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjEiDQotCQkJCVR5cGVMaWJyYXJ5TmFtZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC50bGIiDQotCQkJCUhlYWRlckZpbGVOYW1lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjEiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCi0JCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIuXHRlbXAtcmVsZWFzZS93aW5pbnN0LnBjaCINCi0JCQkJQXNzZW1ibGVyTGlzdGluZ0xvY2F0aW9uPSIuXHRlbXAtcmVsZWFzZS8iDQotCQkJCU9iamVjdEZpbGU9Ii5cdGVtcC1yZWxlYXNlLyINCi0JCQkJUHJvZ3JhbURhdGFCYXNlRmlsZU5hbWU9Ii5cdGVtcC1yZWxlYXNlLyINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iaW1hZ2VobHAubGliIGNvbWN0bDMyLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kL3dpbmluc3QtOC5leGUiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTYucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx0ZW1wLWRlYnVnIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzEudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJ0cnVlIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIxIg0KLQkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi93aW5pbnN0LnRsYiINCi0JCQkJSGVhZGVyRmlsZU5hbWU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X1dJTkRPV1MiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCi0JCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIuXHRlbXAtZGVidWcvd2luaW5zdC5wY2giDQotCQkJCUFzc2VtYmxlckxpc3RpbmdMb2NhdGlvbj0iLlx0ZW1wLWRlYnVnLyINCi0JCQkJT2JqZWN0RmlsZT0iLlx0ZW1wLWRlYnVnLyINCi0JCQkJUHJvZ3JhbURhdGFCYXNlRmlsZU5hbWU9Ii5cdGVtcC1kZWJ1Zy8iDQotCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJpbWFnZWhscC5saWIgY29tY3RsMzIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC04X2QuZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElCQyINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJRmlsdGVyPSJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0Ig0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9ImV4dHJhY3QuYyINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIxIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCQkJQnJvd3NlSW5mb3JtYXRpb249IjEiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Imluc3RhbGwuYyINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIxIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCQkJQnJvd3NlSW5mb3JtYXRpb249IjEiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Imluc3RhbGwucmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbHRlcg0KLQkJCQlOYW1lPSJ6bGliIg0KLQkJCQk+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGNyYzMyLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJPC9GaWx0ZXI+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9ImFyY2hpdmUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KLQkJCUZpbHRlcj0iaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IlB5dGhvblBvd2VyZWQuYm1wIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC5kc3AgYi9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QuZHNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTg1NTY5Li4wMDAwMDAwCi0tLSBhL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC5kc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJ3aW5pbnN0IiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KLSMgKiogRE8gTk9UIEVESVQgKioNCi0NCi0jIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBBcHBsaWNhdGlvbiIgMHgwMTAxDQotDQotQ0ZHPXdpbmluc3QgLSBXaW4zMiBEZWJ1Zw0KLSFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwNCi0hTUVTU0FHRSB1c2UgdGhlIEV4cG9ydCBNYWtlZmlsZSBjb21tYW5kIGFuZCBydW4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAid2luaW5zdC5tYWsiLg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFDQotIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAid2luaW5zdC5tYWsiIENGRz0id2luaW5zdCAtIFdpbjMyIERlYnVnIg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFICJ3aW5pbnN0IC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBBcHBsaWNhdGlvbiIpDQotIU1FU1NBR0UgIndpbmluc3QgLSBXaW4zMiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBBcHBsaWNhdGlvbiIpDQotIU1FU1NBR0UgDQotDQotIyBCZWdpbiBQcm9qZWN0DQotIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDANCi0jIFBST1AgU2NjX1Byb2pOYW1lICIiDQotIyBQUk9QIFNjY19Mb2NhbFBhdGggIiINCi1DUFA9Y2wuZXhlDQotTVRMPW1pZGwuZXhlDQotUlNDPXJjLmV4ZQ0KLQ0KLSFJRiAgIiQoQ0ZHKSIgPT0gIndpbmluc3QgLSBXaW4zMiBSZWxlYXNlIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgT3V0cHV0X0RpciAiLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ0ZW1wLXJlbGVhc2UiDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08xIC9JICIuLlwuLlxJbmNsdWRlIiAvSSAiLi5cLi5cLi5cemxpYi0xLjIuMyIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL1lYIC9GRCAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwNyAvZCAiTkRFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwNyAvZCAiTkRFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgLi5cLi5cLi5cemxpYi0xLjIuM1x6bGliLmxpYiBpbWFnZWhscC5saWIgY29tZGxnMzIubGliIG9sZTMyLmxpYiBjb21jdGwzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvbWFjaGluZTpJMzg2IC9ub2RlZmF1bHRsaWI6IkxJQkMiIC9vdXQ6Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTYuMC5leGUiDQotDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gIndpbmluc3QgLSBXaW4zMiBEZWJ1ZyINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgT3V0cHV0X0RpciAiLiINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAidGVtcC1kZWJ1ZyINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL1lYIC9GRCAvR1ogL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9aNyAvT2QgL0kgIi4uXC4uXEluY2x1ZGUiIC9JICIuLlwuLlwuLlx6bGliLTEuMi4xIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRlIgL1lYIC9GRCAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwNyAvZCAiX0RFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwNyAvZCAiX0RFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgLi5cLi5cLi5cemxpYi0xLjIuM1x6bGliLmxpYiBpbWFnZWhscC5saWIgY29tZGxnMzIubGliIG9sZTMyLmxpYiBjb21jdGwzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvcGRiOm5vbmUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL25vZGVmYXVsdGxpYjoiTElCQyIgL291dDoiLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kL3dpbmluc3QtNi4wX2QuZXhlIg0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAid2luaW5zdCAtIFdpbjMyIFJlbGVhc2UiDQotIyBOYW1lICJ3aW5pbnN0IC0gV2luMzIgRGVidWciDQotIyBCZWdpbiBHcm91cCAiU291cmNlIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS5cZXh0cmFjdC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS5caW5zdGFsbC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS5caW5zdGFsbC5yYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgR3JvdXANCi0jIEJlZ2luIEdyb3VwICJIZWFkZXIgRmlsZXMiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICJoO2hwcDtoeHg7aG07aW5sIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9LlxhcmNoaXZlLmgNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAiUmVzb3VyY2UgRmlsZXMiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICJpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uXFB5dGhvblBvd2VyZWQuYm1wDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBHcm91cA0KLSMgRW5kIFRhcmdldA0KLSMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QuZHN3IGIvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LmRzdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJjNjZhYS4uMDAwMDAwMAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QuZHN3CisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gV29ya3NwYWNlIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCi0jIFdBUk5JTkc6IERPIE5PVCBFRElUIE9SIERFTEVURSBUSElTIFdPUktTUEFDRSBGSUxFIQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCi1Qcm9qZWN0OiAid2luaW5zdCI9Llx3aW5pbnN0LmRzcCAtIFBhY2thZ2UgT3duZXI9PDQ+DQotDQotUGFja2FnZT08NT4NCi17e3sNCi19fX0NCi0NCi1QYWNrYWdlPTw0Pg0KLXt7ew0KLX19fQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCi1HbG9iYWw6DQotDQotUGFja2FnZT08NT4NCi17e3sNCi19fX0NCi0NCi1QYWNrYWdlPTwzPg0KLXt7ew0KLX19fQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCmRpZmYgLS1naXQgYS9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaCBiL1BDL2NsaW5pYy9tc3ZjcnRtb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4ZTZlZDgKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaApAQCAtMCwwICsxLDU1NCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKG1zdmNydF9oZWFwbWluX19kb2NfXywKKyJoZWFwbWluKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJNaW5pbWl6ZSB0aGUgbWFsbG9jKCkgaGVhcC5cbiIKKyJcbiIKKyJGb3JjZSB0aGUgbWFsbG9jKCkgaGVhcCB0byBjbGVhbiBpdHNlbGYgdXAgYW5kIHJldHVybiB1bnVzZWQgYmxvY2tzXG4iCisidG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0uIE9uIGZhaWx1cmUsIHRoaXMgcmFpc2VzIE9TRXJyb3IuIik7CisKKyNkZWZpbmUgTVNWQ1JUX0hFQVBNSU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImhlYXBtaW4iLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X2hlYXBtaW4sIE1FVEhfTk9BUkdTLCBtc3ZjcnRfaGVhcG1pbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X2hlYXBtaW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9oZWFwbWluKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG1zdmNydF9oZWFwbWluX2ltcGwobW9kdWxlKTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9sb2NraW5nX19kb2NfXywKKyJsb2NraW5nKCRtb2R1bGUsIGZkLCBtb2RlLCBuYnl0ZXMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJMb2NrIHBhcnQgb2YgYSBmaWxlIGJhc2VkIG9uIGZpbGUgZGVzY3JpcHRvciBmZCBmcm9tIHRoZSBDIHJ1bnRpbWUuXG4iCisiXG4iCisiUmFpc2VzIElPRXJyb3Igb24gZmFpbHVyZS4gVGhlIGxvY2tlZCByZWdpb24gb2YgdGhlIGZpbGUgZXh0ZW5kcyBmcm9tXG4iCisidGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiBmb3IgbmJ5dGVzIGJ5dGVzLCBhbmQgbWF5IGNvbnRpbnVlIGJleW9uZFxuIgorInRoZSBlbmQgb2YgdGhlIGZpbGUuIG1vZGUgbXVzdCBiZSBvbmUgb2YgdGhlIExLXyogY29uc3RhbnRzIGxpc3RlZFxuIgorImJlbG93LiBNdWx0aXBsZSByZWdpb25zIGluIGEgZmlsZSBtYXkgYmUgbG9ja2VkIGF0IHRoZSBzYW1lIHRpbWUsIGJ1dFxuIgorIm1heSBub3Qgb3ZlcmxhcC4gQWRqYWNlbnQgcmVnaW9ucyBhcmUgbm90IG1lcmdlZDsgdGhleSBtdXN0IGJlIHVubG9ja2VkXG4iCisiaW5kaXZpZHVhbGx5LiIpOworCisjZGVmaW5lIE1TVkNSVF9MT0NLSU5HX01FVEhPRERFRiAgICBcCisgICAgeyJsb2NraW5nIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9sb2NraW5nLCBNRVRIX1ZBUkFSR1MsIG1zdmNydF9sb2NraW5nX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfbG9ja2luZ19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IG1vZGUsIGxvbmcgbmJ5dGVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9sb2NraW5nKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgbW9kZTsKKyAgICBsb25nIG5ieXRlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlsOmxvY2tpbmciLAorICAgICAgICAmZmQsICZtb2RlLCAmbmJ5dGVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9sb2NraW5nX2ltcGwobW9kdWxlLCBmZCwgbW9kZSwgbmJ5dGVzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIobXN2Y3J0X3NldG1vZGVfX2RvY19fLAorInNldG1vZGUoJG1vZHVsZSwgZmQsIG1vZGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGxpbmUtZW5kIHRyYW5zbGF0aW9uIG1vZGUgZm9yIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQuXG4iCisiXG4iCisiVG8gc2V0IGl0IHRvIHRleHQgbW9kZSwgZmxhZ3Mgc2hvdWxkIGJlIG9zLk9fVEVYVDsgZm9yIGJpbmFyeSwgaXRcbiIKKyJzaG91bGQgYmUgb3MuT19CSU5BUlkuXG4iCisiXG4iCisiUmV0dXJuIHZhbHVlIGlzIHRoZSBwcmV2aW91cyBtb2RlLiIpOworCisjZGVmaW5lIE1TVkNSVF9TRVRNT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRtb2RlIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9zZXRtb2RlLCBNRVRIX1ZBUkFSR1MsIG1zdmNydF9zZXRtb2RlX19kb2NfX30sCisKK3N0YXRpYyBsb25nCittc3ZjcnRfc2V0bW9kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGZsYWdzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9zZXRtb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgZmxhZ3M7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzZXRtb2RlIiwKKyAgICAgICAgJmZkLCAmZmxhZ3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9zZXRtb2RlX2ltcGwobW9kdWxlLCBmZCwgZmxhZ3MpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIobXN2Y3J0X29wZW5fb3NmaGFuZGxlX19kb2NfXywKKyJvcGVuX29zZmhhbmRsZSgkbW9kdWxlLCBoYW5kbGUsIGZsYWdzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgQyBydW50aW1lIGZpbGUgZGVzY3JpcHRvciBmcm9tIHRoZSBmaWxlIGhhbmRsZSBoYW5kbGUuXG4iCisiXG4iCisiVGhlIGZsYWdzIHBhcmFtZXRlciBzaG91bGQgYmUgYSBiaXR3aXNlIE9SIG9mIG9zLk9fQVBQRU5ELCBvcy5PX1JET05MWSxcbiIKKyJhbmQgb3MuT19URVhULiBUaGUgcmV0dXJuZWQgZmlsZSBkZXNjcmlwdG9yIG1heSBiZSB1c2VkIGFzIGEgcGFyYW1ldGVyXG4iCisidG8gb3MuZmRvcGVuKCkgdG8gY3JlYXRlIGEgZmlsZSBvYmplY3QuIik7CisKKyNkZWZpbmUgTVNWQ1JUX09QRU5fT1NGSEFORExFX01FVEhPRERFRiAgICBcCisgICAgeyJvcGVuX29zZmhhbmRsZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfb3Blbl9vc2ZoYW5kbGUsIE1FVEhfVkFSQVJHUywgbXN2Y3J0X29wZW5fb3NmaGFuZGxlX19kb2NfX30sCisKK3N0YXRpYyBsb25nCittc3ZjcnRfb3Blbl9vc2ZoYW5kbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X29wZW5fb3NmaGFuZGxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2ludHB0cl90IGhhbmRsZTsKKyAgICBpbnQgZmxhZ3M7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiX1B5X1BBUlNFX0lOVFBUUiJpOm9wZW5fb3NmaGFuZGxlIiwKKyAgICAgICAgJmhhbmRsZSwgJmZsYWdzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfb3Blbl9vc2ZoYW5kbGVfaW1wbChtb2R1bGUsIGhhbmRsZSwgZmxhZ3MpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIobXN2Y3J0X2dldF9vc2ZoYW5kbGVfX2RvY19fLAorImdldF9vc2ZoYW5kbGUoJG1vZHVsZSwgZmQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGZpbGUgaGFuZGxlIGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkLlxuIgorIlxuIgorIlJhaXNlcyBJT0Vycm9yIGlmIGZkIGlzIG5vdCByZWNvZ25pemVkLiIpOworCisjZGVmaW5lIE1TVkNSVF9HRVRfT1NGSEFORExFX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRfb3NmaGFuZGxlIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9nZXRfb3NmaGFuZGxlLCBNRVRIX08sIG1zdmNydF9nZXRfb3NmaGFuZGxlX19kb2NfX30sCisKK3N0YXRpYyBQeV9pbnRwdHJfdAorbXN2Y3J0X2dldF9vc2ZoYW5kbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X2dldF9vc2ZoYW5kbGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgUHlfaW50cHRyX3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpnZXRfb3NmaGFuZGxlIiwgJmZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfZ2V0X29zZmhhbmRsZV9pbXBsKG1vZHVsZSwgZmQpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVm9pZFB0cigodm9pZCAqKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfa2JoaXRfX2RvY19fLAorImtiaGl0KCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdHJ1ZSBpZiBhIGtleXByZXNzIGlzIHdhaXRpbmcgdG8gYmUgcmVhZC4iKTsKKworI2RlZmluZSBNU1ZDUlRfS0JISVRfTUVUSE9EREVGICAgIFwKKyAgICB7ImtiaGl0IiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9rYmhpdCwgTUVUSF9OT0FSR1MsIG1zdmNydF9rYmhpdF9fZG9jX199LAorCitzdGF0aWMgbG9uZworbXN2Y3J0X2tiaGl0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfa2JoaXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X2tiaGl0X2ltcGwobW9kdWxlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9nZXRjaF9fZG9jX18sCisiZ2V0Y2goJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlYWQgYSBrZXlwcmVzcyBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyIGFzIGEgYnl0ZSBzdHJpbmcuXG4iCisiXG4iCisiTm90aGluZyBpcyBlY2hvZWQgdG8gdGhlIGNvbnNvbGUuIFRoaXMgY2FsbCB3aWxsIGJsb2NrIGlmIGEga2V5cHJlc3MgaXNcbiIKKyJub3QgYWxyZWFkeSBhdmFpbGFibGUsIGJ1dCB3aWxsIG5vdCB3YWl0IGZvciBFbnRlciB0byBiZSBwcmVzc2VkLiBJZiB0aGVcbiIKKyJwcmVzc2VkIGtleSB3YXMgYSBzcGVjaWFsIGZ1bmN0aW9uIGtleSwgdGhpcyB3aWxsIHJldHVybiBcJ1xcMDAwXCcgb3JcbiIKKyJcJ1xceGUwXCc7IHRoZSBuZXh0IGNhbGwgd2lsbCByZXR1cm4gdGhlIGtleWNvZGUuIFRoZSBDb250cm9sLUMga2V5cHJlc3NcbiIKKyJjYW5ub3QgYmUgcmVhZCB3aXRoIHRoaXMgZnVuY3Rpb24uIik7CisKKyNkZWZpbmUgTVNWQ1JUX0dFVENIX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRjaCIsIChQeUNGdW5jdGlvbiltc3ZjcnRfZ2V0Y2gsIE1FVEhfTk9BUkdTLCBtc3ZjcnRfZ2V0Y2hfX2RvY19ffSwKKworc3RhdGljIGludAorbXN2Y3J0X2dldGNoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfZ2V0Y2goUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjaGFyIHNbMV07CisKKyAgICBzWzBdID0gbXN2Y3J0X2dldGNoX2ltcGwobW9kdWxlKTsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHMsIDEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9nZXR3Y2hfX2RvY19fLAorImdldHdjaCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV2lkZSBjaGFyIHZhcmlhbnQgb2YgZ2V0Y2goKSwgcmV0dXJuaW5nIGEgVW5pY29kZSB2YWx1ZS4iKTsKKworI2RlZmluZSBNU1ZDUlRfR0VUV0NIX01FVEhPRERFRiAgICBcCisgICAgeyJnZXR3Y2giLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X2dldHdjaCwgTUVUSF9OT0FSR1MsIG1zdmNydF9nZXR3Y2hfX2RvY19ffSwKKworc3RhdGljIHdjaGFyX3QKK21zdmNydF9nZXR3Y2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9nZXR3Y2goUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICB3Y2hhcl90IF9yZXR1cm5fdmFsdWU7CisKKyAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X2dldHdjaF9pbXBsKG1vZHVsZSk7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKF9yZXR1cm5fdmFsdWUpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9nZXRjaGVfX2RvY19fLAorImdldGNoZSgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2ltaWxhciB0byBnZXRjaCgpLCBidXQgdGhlIGtleXByZXNzIHdpbGwgYmUgZWNob2VkIGlmIHBvc3NpYmxlLiIpOworCisjZGVmaW5lIE1TVkNSVF9HRVRDSEVfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGNoZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfZ2V0Y2hlLCBNRVRIX05PQVJHUywgbXN2Y3J0X2dldGNoZV9fZG9jX199LAorCitzdGF0aWMgaW50Cittc3ZjcnRfZ2V0Y2hlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfZ2V0Y2hlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY2hhciBzWzFdOworCisgICAgc1swXSA9IG1zdmNydF9nZXRjaGVfaW1wbChtb2R1bGUpOworICAgIHJldHVybl92YWx1ZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocywgMSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIobXN2Y3J0X2dldHdjaGVfX2RvY19fLAorImdldHdjaGUoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIldpZGUgY2hhciB2YXJpYW50IG9mIGdldGNoZSgpLCByZXR1cm5pbmcgYSBVbmljb2RlIHZhbHVlLiIpOworCisjZGVmaW5lIE1TVkNSVF9HRVRXQ0hFX01FVEhPRERFRiAgICBcCisgICAgeyJnZXR3Y2hlIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9nZXR3Y2hlLCBNRVRIX05PQVJHUywgbXN2Y3J0X2dldHdjaGVfX2RvY19ffSwKKworc3RhdGljIHdjaGFyX3QKK21zdmNydF9nZXR3Y2hlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfZ2V0d2NoZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHdjaGFyX3QgX3JldHVybl92YWx1ZTsKKworICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfZ2V0d2NoZV9pbXBsKG1vZHVsZSk7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKF9yZXR1cm5fdmFsdWUpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9wdXRjaF9fZG9jX18sCisicHV0Y2goJG1vZHVsZSwgY2hhciwgLylcbiIKKyItLVxuIgorIlxuIgorIlByaW50IHRoZSBieXRlIHN0cmluZyBjaGFyIHRvIHRoZSBjb25zb2xlIHdpdGhvdXQgYnVmZmVyaW5nLiIpOworCisjZGVmaW5lIE1TVkNSVF9QVVRDSF9NRVRIT0RERUYgICAgXAorICAgIHsicHV0Y2giLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X3B1dGNoLCBNRVRIX08sIG1zdmNydF9wdXRjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X3B1dGNoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY2hhciBjaGFyX3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9wdXRjaChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNoYXIgY2hhcl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiYzpwdXRjaCIsICZjaGFyX3ZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9wdXRjaF9pbXBsKG1vZHVsZSwgY2hhcl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9wdXR3Y2hfX2RvY19fLAorInB1dHdjaCgkbW9kdWxlLCB1bmljb2RlX2NoYXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXaWRlIGNoYXIgdmFyaWFudCBvZiBwdXRjaCgpLCBhY2NlcHRpbmcgYSBVbmljb2RlIHZhbHVlLiIpOworCisjZGVmaW5lIE1TVkNSVF9QVVRXQ0hfTUVUSE9EREVGICAgIFwKKyAgICB7InB1dHdjaCIsIChQeUNGdW5jdGlvbiltc3ZjcnRfcHV0d2NoLCBNRVRIX08sIG1zdmNydF9wdXR3Y2hfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9wdXR3Y2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgdW5pY29kZV9jaGFyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9wdXR3Y2goUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgdW5pY29kZV9jaGFyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOnB1dHdjaCIsICZ1bmljb2RlX2NoYXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X3B1dHdjaF9pbXBsKG1vZHVsZSwgdW5pY29kZV9jaGFyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIobXN2Y3J0X3VuZ2V0Y2hfX2RvY19fLAorInVuZ2V0Y2goJG1vZHVsZSwgY2hhciwgLylcbiIKKyItLVxuIgorIlxuIgorIk9wcG9zaXRlIG9mIGdldGNoLlxuIgorIlxuIgorIkNhdXNlIHRoZSBieXRlIHN0cmluZyBjaGFyIHRvIGJlIFwicHVzaGVkIGJhY2tcIiBpbnRvIHRoZVxuIgorImNvbnNvbGUgYnVmZmVyOyBpdCB3aWxsIGJlIHRoZSBuZXh0IGNoYXJhY3RlciByZWFkIGJ5XG4iCisiZ2V0Y2goKSBvciBnZXRjaGUoKS4iKTsKKworI2RlZmluZSBNU1ZDUlRfVU5HRVRDSF9NRVRIT0RERUYgICAgXAorICAgIHsidW5nZXRjaCIsIChQeUNGdW5jdGlvbiltc3ZjcnRfdW5nZXRjaCwgTUVUSF9PLCBtc3ZjcnRfdW5nZXRjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X3VuZ2V0Y2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjaGFyIGNoYXJfdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X3VuZ2V0Y2goUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjaGFyIGNoYXJfdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImM6dW5nZXRjaCIsICZjaGFyX3ZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF91bmdldGNoX2ltcGwobW9kdWxlLCBjaGFyX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIobXN2Y3J0X3VuZ2V0d2NoX19kb2NfXywKKyJ1bmdldHdjaCgkbW9kdWxlLCB1bmljb2RlX2NoYXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXaWRlIGNoYXIgdmFyaWFudCBvZiB1bmdldGNoKCksIGFjY2VwdGluZyBhIFVuaWNvZGUgdmFsdWUuIik7CisKKyNkZWZpbmUgTVNWQ1JUX1VOR0VUV0NIX01FVEhPRERFRiAgICBcCisgICAgeyJ1bmdldHdjaCIsIChQeUNGdW5jdGlvbiltc3ZjcnRfdW5nZXR3Y2gsIE1FVEhfTywgbXN2Y3J0X3VuZ2V0d2NoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfdW5nZXR3Y2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgdW5pY29kZV9jaGFyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF91bmdldHdjaChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCB1bmljb2RlX2NoYXI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6dW5nZXR3Y2giLCAmdW5pY29kZV9jaGFyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF91bmdldHdjaF9pbXBsKG1vZHVsZSwgdW5pY29kZV9jaGFyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChfREVCVUcpCisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfQ3J0U2V0UmVwb3J0RmlsZV9fZG9jX18sCisiQ3J0U2V0UmVwb3J0RmlsZSgkbW9kdWxlLCB0eXBlLCBmaWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JhcHBlciBhcm91bmQgX0NydFNldFJlcG9ydEZpbGUuXG4iCisiXG4iCisiT25seSBhdmFpbGFibGUgb24gRGVidWcgYnVpbGRzLiIpOworCisjZGVmaW5lIE1TVkNSVF9DUlRTRVRSRVBPUlRGSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJDcnRTZXRSZXBvcnRGaWxlIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9DcnRTZXRSZXBvcnRGaWxlLCBNRVRIX1ZBUkFSR1MsIG1zdmNydF9DcnRTZXRSZXBvcnRGaWxlX19kb2NfX30sCisKK3N0YXRpYyBsb25nCittc3ZjcnRfQ3J0U2V0UmVwb3J0RmlsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB0eXBlLCBpbnQgZmlsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfQ3J0U2V0UmVwb3J0RmlsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgdHlwZTsKKyAgICBpbnQgZmlsZTsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOkNydFNldFJlcG9ydEZpbGUiLAorICAgICAgICAmdHlwZSwgJmZpbGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9DcnRTZXRSZXBvcnRGaWxlX2ltcGwobW9kdWxlLCB0eXBlLCBmaWxlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoX0RFQlVHKSAqLworCisjaWYgZGVmaW5lZChfREVCVUcpCisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfQ3J0U2V0UmVwb3J0TW9kZV9fZG9jX18sCisiQ3J0U2V0UmVwb3J0TW9kZSgkbW9kdWxlLCB0eXBlLCBtb2RlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JhcHBlciBhcm91bmQgX0NydFNldFJlcG9ydE1vZGUuXG4iCisiXG4iCisiT25seSBhdmFpbGFibGUgb24gRGVidWcgYnVpbGRzLiIpOworCisjZGVmaW5lIE1TVkNSVF9DUlRTRVRSRVBPUlRNT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJDcnRTZXRSZXBvcnRNb2RlIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9DcnRTZXRSZXBvcnRNb2RlLCBNRVRIX1ZBUkFSR1MsIG1zdmNydF9DcnRTZXRSZXBvcnRNb2RlX19kb2NfX30sCisKK3N0YXRpYyBsb25nCittc3ZjcnRfQ3J0U2V0UmVwb3J0TW9kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB0eXBlLCBpbnQgbW9kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfQ3J0U2V0UmVwb3J0TW9kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgdHlwZTsKKyAgICBpbnQgbW9kZTsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOkNydFNldFJlcG9ydE1vZGUiLAorICAgICAgICAmdHlwZSwgJm1vZGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9DcnRTZXRSZXBvcnRNb2RlX2ltcGwobW9kdWxlLCB0eXBlLCBtb2RlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoX0RFQlVHKSAqLworCisjaWYgZGVmaW5lZChfREVCVUcpCisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfc2V0X2Vycm9yX21vZGVfX2RvY19fLAorInNldF9lcnJvcl9tb2RlKCRtb2R1bGUsIG1vZGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcmFwcGVyIGFyb3VuZCBfc2V0X2Vycm9yX21vZGUuXG4iCisiXG4iCisiT25seSBhdmFpbGFibGUgb24gRGVidWcgYnVpbGRzLiIpOworCisjZGVmaW5lIE1TVkNSVF9TRVRfRVJST1JfTU9ERV9NRVRIT0RERUYgICAgXAorICAgIHsic2V0X2Vycm9yX21vZGUiLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X3NldF9lcnJvcl9tb2RlLCBNRVRIX08sIG1zdmNydF9zZXRfZXJyb3JfbW9kZV9fZG9jX199LAorCitzdGF0aWMgbG9uZworbXN2Y3J0X3NldF9lcnJvcl9tb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG1vZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X3NldF9lcnJvcl9tb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IG1vZGU7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnNldF9lcnJvcl9tb2RlIiwgJm1vZGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9zZXRfZXJyb3JfbW9kZV9pbXBsKG1vZHVsZSwgbW9kZSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKF9ERUJVRykgKi8KKworUHlEb2NfU1RSVkFSKG1zdmNydF9TZXRFcnJvck1vZGVfX2RvY19fLAorIlNldEVycm9yTW9kZSgkbW9kdWxlLCBtb2RlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JhcHBlciBhcm91bmQgU2V0RXJyb3JNb2RlLiIpOworCisjZGVmaW5lIE1TVkNSVF9TRVRFUlJPUk1PREVfTUVUSE9EREVGICAgIFwKKyAgICB7IlNldEVycm9yTW9kZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfU2V0RXJyb3JNb2RlLCBNRVRIX08sIG1zdmNydF9TZXRFcnJvck1vZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9TZXRFcnJvck1vZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCB1bnNpZ25lZCBpbnQgbW9kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfU2V0RXJyb3JNb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgdW5zaWduZWQgaW50IG1vZGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkk6U2V0RXJyb3JNb2RlIiwgJm1vZGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X1NldEVycm9yTW9kZV9pbXBsKG1vZHVsZSwgbW9kZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmbmRlZiBNU1ZDUlRfQ1JUU0VUUkVQT1JURklMRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE1TVkNSVF9DUlRTRVRSRVBPUlRGSUxFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE1TVkNSVF9DUlRTRVRSRVBPUlRGSUxFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBNU1ZDUlRfQ1JUU0VUUkVQT1JUTU9ERV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE1TVkNSVF9DUlRTRVRSRVBPUlRNT0RFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE1TVkNSVF9DUlRTRVRSRVBPUlRNT0RFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBNU1ZDUlRfU0VUX0VSUk9SX01PREVfTUVUSE9EREVGCisgICAgI2RlZmluZSBNU1ZDUlRfU0VUX0VSUk9SX01PREVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoTVNWQ1JUX1NFVF9FUlJPUl9NT0RFX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNjYxM2QzMTE5YTFmZDQ0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL1BDL2NsaW5pYy93aW5yZWcuYy5oIGIvUEMvY2xpbmljL3dpbnJlZy5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJiMzMyZgotLS0gL2Rldi9udWxsCisrKyBiL1BDL2NsaW5pYy93aW5yZWcuYy5oCkBAIC0wLDAgKzEsMTA1OSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19IS0VZVHlwZV9DbG9zZV9fZG9jX18sCisiQ2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZXMgdGhlIHVuZGVybHlpbmcgV2luZG93cyBoYW5kbGUuXG4iCisiXG4iCisiSWYgdGhlIGhhbmRsZSBpcyBhbHJlYWR5IGNsb3NlZCwgbm8gZXJyb3IgaXMgcmFpc2VkLiIpOworCisjZGVmaW5lIFdJTlJFR19IS0VZVFlQRV9DTE9TRV9NRVRIT0RERUYgICAgXAorICAgIHsiQ2xvc2UiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0hLRVlUeXBlX0Nsb3NlLCBNRVRIX05PQVJHUywgd2lucmVnX0hLRVlUeXBlX0Nsb3NlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfSEtFWVR5cGVfQ2xvc2VfaW1wbChQeUhLRVlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0hLRVlUeXBlX0Nsb3NlKFB5SEtFWU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gd2lucmVnX0hLRVlUeXBlX0Nsb3NlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfSEtFWVR5cGVfRGV0YWNoX19kb2NfXywKKyJEZXRhY2goJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJEZXRhY2hlcyB0aGUgV2luZG93cyBoYW5kbGUgZnJvbSB0aGUgaGFuZGxlIG9iamVjdC5cbiIKKyJcbiIKKyJUaGUgcmVzdWx0IGlzIHRoZSB2YWx1ZSBvZiB0aGUgaGFuZGxlIGJlZm9yZSBpdCBpcyBkZXRhY2hlZC4gIElmIHRoZVxuIgorImhhbmRsZSBpcyBhbHJlYWR5IGRldGFjaGVkLCB0aGlzIHdpbGwgcmV0dXJuIHplcm8uXG4iCisiXG4iCisiQWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCB0aGUgaGFuZGxlIGlzIGVmZmVjdGl2ZWx5IGludmFsaWRhdGVkLFxuIgorImJ1dCB0aGUgaGFuZGxlIGlzIG5vdCBjbG9zZWQuICBZb3Ugd291bGQgY2FsbCB0aGlzIGZ1bmN0aW9uIHdoZW4geW91XG4iCisibmVlZCB0aGUgdW5kZXJseWluZyB3aW4zMiBoYW5kbGUgdG8gZXhpc3QgYmV5b25kIHRoZSBsaWZldGltZSBvZiB0aGVcbiIKKyJoYW5kbGUgb2JqZWN0LiIpOworCisjZGVmaW5lIFdJTlJFR19IS0VZVFlQRV9ERVRBQ0hfTUVUSE9EREVGICAgIFwKKyAgICB7IkRldGFjaCIsIChQeUNGdW5jdGlvbil3aW5yZWdfSEtFWVR5cGVfRGV0YWNoLCBNRVRIX05PQVJHUywgd2lucmVnX0hLRVlUeXBlX0RldGFjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0hLRVlUeXBlX0RldGFjaF9pbXBsKFB5SEtFWU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfSEtFWVR5cGVfRGV0YWNoKFB5SEtFWU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gd2lucmVnX0hLRVlUeXBlX0RldGFjaF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0hLRVlUeXBlX19fZW50ZXJfX19fZG9jX18sCisiX19lbnRlcl9fKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBXSU5SRUdfSEtFWVRZUEVfX19FTlRFUl9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX2VudGVyX18iLCAoUHlDRnVuY3Rpb24pd2lucmVnX0hLRVlUeXBlX19fZW50ZXJfXywgTUVUSF9OT0FSR1MsIHdpbnJlZ19IS0VZVHlwZV9fX2VudGVyX19fX2RvY19ffSwKKworc3RhdGljIFB5SEtFWU9iamVjdCAqCit3aW5yZWdfSEtFWVR5cGVfX19lbnRlcl9fX2ltcGwoUHlIS0VZT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19IS0VZVHlwZV9fX2VudGVyX18oUHlIS0VZT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5SEtFWU9iamVjdCAqX3JldHVybl92YWx1ZTsKKworICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfSEtFWVR5cGVfX19lbnRlcl9fX2ltcGwoc2VsZik7CisgICAgcmV0dXJuX3ZhbHVlID0gKFB5T2JqZWN0ICopX3JldHVybl92YWx1ZTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfSEtFWVR5cGVfX19leGl0X19fX2RvY19fLAorIl9fZXhpdF9fKCRzZWxmLCAvLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIFdJTlJFR19IS0VZVFlQRV9fX0VYSVRfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19leGl0X18iLCAoUHlDRnVuY3Rpb24pd2lucmVnX0hLRVlUeXBlX19fZXhpdF9fLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgd2lucmVnX0hLRVlUeXBlX19fZXhpdF9fX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfSEtFWVR5cGVfX19leGl0X19faW1wbChQeUhLRVlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpleGNfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpleGNfdmFsdWUsIFB5T2JqZWN0ICp0cmFjZWJhY2spOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0hLRVlUeXBlX19fZXhpdF9fKFB5SEtFWU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJleGNfdHlwZSIsICJleGNfdmFsdWUiLCAidHJhY2ViYWNrIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmV4Y190eXBlOworICAgIFB5T2JqZWN0ICpleGNfdmFsdWU7CisgICAgUHlPYmplY3QgKnRyYWNlYmFjazsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PTzpfX2V4aXRfXyIsIF9rZXl3b3JkcywKKyAgICAgICAgJmV4Y190eXBlLCAmZXhjX3ZhbHVlLCAmdHJhY2ViYWNrKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfX19pbXBsKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjayk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19DbG9zZUtleV9fZG9jX18sCisiQ2xvc2VLZXkoJG1vZHVsZSwgaGtleSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNsb3NlcyBhIHByZXZpb3VzbHkgb3BlbmVkIHJlZ2lzdHJ5IGtleS5cbiIKKyJcbiIKKyIgIGhrZXlcbiIKKyIgICAgQSBwcmV2aW91c2x5IG9wZW5lZCBrZXkuXG4iCisiXG4iCisiTm90ZSB0aGF0IGlmIHRoZSBrZXkgaXMgbm90IGNsb3NlZCB1c2luZyB0aGlzIG1ldGhvZCwgaXQgd2lsbCBiZVxuIgorImNsb3NlZCB3aGVuIHRoZSBoa2V5IG9iamVjdCBpcyBkZXN0cm95ZWQgYnkgUHl0aG9uLiIpOworCisjZGVmaW5lIFdJTlJFR19DTE9TRUtFWV9NRVRIT0RERUYgICAgXAorICAgIHsiQ2xvc2VLZXkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0Nsb3NlS2V5LCBNRVRIX08sIHdpbnJlZ19DbG9zZUtleV9fZG9jX199LAorCitQeURvY19TVFJWQVIod2lucmVnX0Nvbm5lY3RSZWdpc3RyeV9fZG9jX18sCisiQ29ubmVjdFJlZ2lzdHJ5KCRtb2R1bGUsIGNvbXB1dGVyX25hbWUsIGtleSwgLylcbiIKKyItLVxuIgorIlxuIgorIkVzdGFibGlzaGVzIGEgY29ubmVjdGlvbiB0byB0aGUgcmVnaXN0cnkgb24gb24gYW5vdGhlciBjb21wdXRlci5cbiIKKyJcbiIKKyIgIGNvbXB1dGVyX25hbWVcbiIKKyIgICAgVGhlIG5hbWUgb2YgdGhlIHJlbW90ZSBjb21wdXRlciwgb2YgdGhlIGZvcm0gclwiXFxcXGNvbXB1dGVybmFtZVwiLiAgSWZcbiIKKyIgICAgTm9uZSwgdGhlIGxvY2FsIGNvbXB1dGVyIGlzIHVzZWQuXG4iCisiICBrZXlcbiIKKyIgICAgVGhlIHByZWRlZmluZWQga2V5IHRvIGNvbm5lY3QgdG8uXG4iCisiXG4iCisiVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LlxuIgorIklmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOworCisjZGVmaW5lIFdJTlJFR19DT05ORUNUUkVHSVNUUllfTUVUSE9EREVGICAgIFwKKyAgICB7IkNvbm5lY3RSZWdpc3RyeSIsIChQeUNGdW5jdGlvbil3aW5yZWdfQ29ubmVjdFJlZ2lzdHJ5LCBNRVRIX1ZBUkFSR1MsIHdpbnJlZ19Db25uZWN0UmVnaXN0cnlfX2RvY19ffSwKKworc3RhdGljIEhLRVkKK3dpbnJlZ19Db25uZWN0UmVnaXN0cnlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9VTklDT0RFICpjb21wdXRlcl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhLRVkga2V5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19Db25uZWN0UmVnaXN0cnkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfVU5JQ09ERSAqY29tcHV0ZXJfbmFtZTsKKyAgICBIS0VZIGtleTsKKyAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlpPJjpDb25uZWN0UmVnaXN0cnkiLAorICAgICAgICAmY29tcHV0ZXJfbmFtZSwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfQ29ubmVjdFJlZ2lzdHJ5X2ltcGwobW9kdWxlLCBjb21wdXRlcl9uYW1lLCBrZXkpOworICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19DcmVhdGVLZXlfX2RvY19fLAorIkNyZWF0ZUtleSgkbW9kdWxlLCBrZXksIHN1Yl9rZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGVzIG9yIG9wZW5zIHRoZSBzcGVjaWZpZWQga2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgc3ViX2tleVxuIgorIiAgICBUaGUgbmFtZSBvZiB0aGUga2V5IHRoaXMgbWV0aG9kIG9wZW5zIG9yIGNyZWF0ZXMuXG4iCisiXG4iCisiSWYga2V5IGlzIG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBrZXlzLCBzdWJfa2V5IG1heSBiZSBOb25lLiBJbiB0aGF0IGNhc2UsXG4iCisidGhlIGhhbmRsZSByZXR1cm5lZCBpcyB0aGUgc2FtZSBrZXkgaGFuZGxlIHBhc3NlZCBpbiB0byB0aGUgZnVuY3Rpb24uXG4iCisiXG4iCisiSWYgdGhlIGtleSBhbHJlYWR5IGV4aXN0cywgdGhpcyBmdW5jdGlvbiBvcGVucyB0aGUgZXhpc3Rpbmcga2V5LlxuIgorIlxuIgorIlRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS5cbiIKKyJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBXSU5SRUdfQ1JFQVRFS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJDcmVhdGVLZXkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0NyZWF0ZUtleSwgTUVUSF9WQVJBUkdTLCB3aW5yZWdfQ3JlYXRlS2V5X19kb2NfX30sCisKK3N0YXRpYyBIS0VZCit3aW5yZWdfQ3JlYXRlS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXkpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0NyZWF0ZUtleShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKyAgICBQeV9VTklDT0RFICpzdWJfa2V5OworICAgIEhLRVkgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaOkNyZWF0ZUtleSIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19DcmVhdGVLZXlfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSk7CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0NyZWF0ZUtleUV4X19kb2NfXywKKyJDcmVhdGVLZXlFeCgkbW9kdWxlLCAvLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkPTAsXG4iCisiICAgICAgICAgICAgYWNjZXNzPXdpbnJlZy5LRVlfV1JJVEUpXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGVzIG9yIG9wZW5zIHRoZSBzcGVjaWZpZWQga2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgc3ViX2tleVxuIgorIiAgICBUaGUgbmFtZSBvZiB0aGUga2V5IHRoaXMgbWV0aG9kIG9wZW5zIG9yIGNyZWF0ZXMuXG4iCisiICByZXNlcnZlZFxuIgorIiAgICBBIHJlc2VydmVkIGludGVnZXIsIGFuZCBtdXN0IGJlIHplcm8uICBEZWZhdWx0IGlzIHplcm8uXG4iCisiICBhY2Nlc3NcbiIKKyIgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBhbiBhY2Nlc3MgbWFzayB0aGF0IGRlc2NyaWJlcyB0aGVcbiIKKyIgICAgZGVzaXJlZCBzZWN1cml0eSBhY2Nlc3MgZm9yIHRoZSBrZXkuIERlZmF1bHQgaXMgS0VZX1dSSVRFLlxuIgorIlxuIgorIklmIGtleSBpcyBvbmUgb2YgdGhlIHByZWRlZmluZWQga2V5cywgc3ViX2tleSBtYXkgYmUgTm9uZS4gSW4gdGhhdCBjYXNlLFxuIgorInRoZSBoYW5kbGUgcmV0dXJuZWQgaXMgdGhlIHNhbWUga2V5IGhhbmRsZSBwYXNzZWQgaW4gdG8gdGhlIGZ1bmN0aW9uLlxuIgorIlxuIgorIklmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMsIHRoaXMgZnVuY3Rpb24gb3BlbnMgdGhlIGV4aXN0aW5nIGtleVxuIgorIlxuIgorIlRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS5cbiIKKyJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBXSU5SRUdfQ1JFQVRFS0VZRVhfTUVUSE9EREVGICAgIFwKKyAgICB7IkNyZWF0ZUtleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19DcmVhdGVLZXlFeCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19DcmVhdGVLZXlFeF9fZG9jX199LAorCitzdGF0aWMgSEtFWQord2lucmVnX0NyZWF0ZUtleUV4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXksCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzZXJ2ZWQsIFJFR1NBTSBhY2Nlc3MpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0NyZWF0ZUtleUV4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKKyAgICBpbnQgcmVzZXJ2ZWQgPSAwOworICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfV1JJVEU7CisgICAgSEtFWSBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZafGlpOkNyZWF0ZUtleUV4IiwgX2tleXdvcmRzLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19DcmVhdGVLZXlFeF9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCByZXNlcnZlZCwgYWNjZXNzKTsKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlIS0VZX0Zyb21IS0VZKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfRGVsZXRlS2V5X19kb2NfXywKKyJEZWxldGVLZXkoJG1vZHVsZSwga2V5LCBzdWJfa2V5LCAvKVxuIgorIi0tXG4iCisiXG4iCisiRGVsZXRlcyB0aGUgc3BlY2lmaWVkIGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiICBzdWJfa2V5XG4iCisiICAgIEEgc3RyaW5nIHRoYXQgbXVzdCBiZSB0aGUgbmFtZSBvZiBhIHN1YmtleSBvZiB0aGUga2V5IGlkZW50aWZpZWQgYnlcbiIKKyIgICAgdGhlIGtleSBwYXJhbWV0ZXIuIFRoaXMgdmFsdWUgbXVzdCBub3QgYmUgTm9uZSwgYW5kIHRoZSBrZXkgbWF5IG5vdFxuIgorIiAgICBoYXZlIHN1YmtleXMuXG4iCisiXG4iCisiVGhpcyBtZXRob2QgY2FuIG5vdCBkZWxldGUga2V5cyB3aXRoIHN1YmtleXMuXG4iCisiXG4iCisiSWYgdGhlIGZ1bmN0aW9uIHN1Y2NlZWRzLCB0aGUgZW50aXJlIGtleSwgaW5jbHVkaW5nIGFsbCBvZiBpdHMgdmFsdWVzLFxuIgorImlzIHJlbW92ZWQuICBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBXSU5SRUdfREVMRVRFS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJEZWxldGVLZXkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0RlbGV0ZUtleSwgTUVUSF9WQVJBUkdTLCB3aW5yZWdfRGVsZXRlS2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRGVsZXRlS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXkpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0RlbGV0ZUtleShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKyAgICBQeV9VTklDT0RFICpzdWJfa2V5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnU6RGVsZXRlS2V5IiwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGVsZXRlS2V5X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfRGVsZXRlS2V5RXhfX2RvY19fLAorIkRlbGV0ZUtleUV4KCRtb2R1bGUsIC8sIGtleSwgc3ViX2tleSwgYWNjZXNzPXdpbnJlZy5LRVlfV09XNjRfNjRLRVksXG4iCisiICAgICAgICAgICAgcmVzZXJ2ZWQ9MClcbiIKKyItLVxuIgorIlxuIgorIkRlbGV0ZXMgdGhlIHNwZWNpZmllZCBrZXkgKDY0LWJpdCBPUyBvbmx5KS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiICBzdWJfa2V5XG4iCisiICAgIEEgc3RyaW5nIHRoYXQgbXVzdCBiZSB0aGUgbmFtZSBvZiBhIHN1YmtleSBvZiB0aGUga2V5IGlkZW50aWZpZWQgYnlcbiIKKyIgICAgdGhlIGtleSBwYXJhbWV0ZXIuIFRoaXMgdmFsdWUgbXVzdCBub3QgYmUgTm9uZSwgYW5kIHRoZSBrZXkgbWF5IG5vdFxuIgorIiAgICBoYXZlIHN1YmtleXMuXG4iCisiICBhY2Nlc3NcbiIKKyIgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBhbiBhY2Nlc3MgbWFzayB0aGF0IGRlc2NyaWJlcyB0aGVcbiIKKyIgICAgZGVzaXJlZCBzZWN1cml0eSBhY2Nlc3MgZm9yIHRoZSBrZXkuIERlZmF1bHQgaXMgS0VZX1dPVzY0XzY0S0VZLlxuIgorIiAgcmVzZXJ2ZWRcbiIKKyIgICAgQSByZXNlcnZlZCBpbnRlZ2VyLCBhbmQgbXVzdCBiZSB6ZXJvLiAgRGVmYXVsdCBpcyB6ZXJvLlxuIgorIlxuIgorIlRoaXMgbWV0aG9kIGNhbiBub3QgZGVsZXRlIGtleXMgd2l0aCBzdWJrZXlzLlxuIgorIlxuIgorIklmIHRoZSBmdW5jdGlvbiBzdWNjZWVkcywgdGhlIGVudGlyZSBrZXksIGluY2x1ZGluZyBhbGwgb2YgaXRzIHZhbHVlcyxcbiIKKyJpcyByZW1vdmVkLiAgSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4iCisiT24gdW5zdXBwb3J0ZWQgV2luZG93cyB2ZXJzaW9ucywgTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuIik7CisKKyNkZWZpbmUgV0lOUkVHX0RFTEVURUtFWUVYX01FVEhPRERFRiAgICBcCisgICAgeyJEZWxldGVLZXlFeCIsIChQeUNGdW5jdGlvbil3aW5yZWdfRGVsZXRlS2V5RXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfRGVsZXRlS2V5RXhfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19EZWxldGVLZXlFeF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgUkVHU0FNIGFjY2VzcywgaW50IHJlc2VydmVkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19EZWxldGVLZXlFeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgImFjY2VzcyIsICJyZXNlcnZlZCIsIE5VTEx9OworICAgIEhLRVkga2V5OworICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CisgICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9XT1c2NF82NEtFWTsKKyAgICBpbnQgcmVzZXJ2ZWQgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ1fGlpOkRlbGV0ZUtleUV4IiwgX2tleXdvcmRzLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmYWNjZXNzLCAmcmVzZXJ2ZWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0RlbGV0ZUtleUV4X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIGFjY2VzcywgcmVzZXJ2ZWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfRGVsZXRlVmFsdWVfX2RvY19fLAorIkRlbGV0ZVZhbHVlKCRtb2R1bGUsIGtleSwgdmFsdWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZW1vdmVzIGEgbmFtZWQgdmFsdWUgZnJvbSBhIHJlZ2lzdHJ5IGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiICB2YWx1ZVxuIgorIiAgICBBIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHZhbHVlIHRvIHJlbW92ZS4iKTsKKworI2RlZmluZSBXSU5SRUdfREVMRVRFVkFMVUVfTUVUSE9EREVGICAgIFwKKyAgICB7IkRlbGV0ZVZhbHVlIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19EZWxldGVWYWx1ZSwgTUVUSF9WQVJBUkdTLCB3aW5yZWdfRGVsZXRlVmFsdWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19EZWxldGVWYWx1ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICp2YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRGVsZXRlVmFsdWUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mWjpEZWxldGVWYWx1ZSIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19EZWxldGVWYWx1ZV9pbXBsKG1vZHVsZSwga2V5LCB2YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19FbnVtS2V5X19kb2NfXywKKyJFbnVtS2V5KCRtb2R1bGUsIGtleSwgaW5kZXgsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFbnVtZXJhdGVzIHN1YmtleXMgb2YgYW4gb3BlbiByZWdpc3RyeSBrZXkuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgaW5kZXhcbiIKKyIgICAgQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIGluZGV4IG9mIHRoZSBrZXkgdG8gcmV0cmlldmUuXG4iCisiXG4iCisiVGhlIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgbmFtZSBvZiBvbmUgc3Via2V5IGVhY2ggdGltZSBpdCBpcyBjYWxsZWQuXG4iCisiSXQgaXMgdHlwaWNhbGx5IGNhbGxlZCByZXBlYXRlZGx5IHVudGlsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzXG4iCisicmFpc2VkLCBpbmRpY2F0aW5nIG5vIG1vcmUgdmFsdWVzIGFyZSBhdmFpbGFibGUuIik7CisKKyNkZWZpbmUgV0lOUkVHX0VOVU1LRVlfTUVUSE9EREVGICAgIFwKKyAgICB7IkVudW1LZXkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0VudW1LZXksIE1FVEhfVkFSQVJHUywgd2lucmVnX0VudW1LZXlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19FbnVtS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIGludCBpbmRleCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRW51bUtleShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKyAgICBpbnQgaW5kZXg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpFbnVtS2V5IiwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmaW5kZXgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0VudW1LZXlfaW1wbChtb2R1bGUsIGtleSwgaW5kZXgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfRW51bVZhbHVlX19kb2NfXywKKyJFbnVtVmFsdWUoJG1vZHVsZSwga2V5LCBpbmRleCwgLylcbiIKKyItLVxuIgorIlxuIgorIkVudW1lcmF0ZXMgdmFsdWVzIG9mIGFuIG9wZW4gcmVnaXN0cnkga2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyIgIGluZGV4XG4iCisiICAgIEFuIGludGVnZXIgdGhhdCBpZGVudGlmaWVzIHRoZSBpbmRleCBvZiB0aGUgdmFsdWUgdG8gcmV0cmlldmUuXG4iCisiXG4iCisiVGhlIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgbmFtZSBvZiBvbmUgc3Via2V5IGVhY2ggdGltZSBpdCBpcyBjYWxsZWQuXG4iCisiSXQgaXMgdHlwaWNhbGx5IGNhbGxlZCByZXBlYXRlZGx5LCB1bnRpbCBhbiBPU0Vycm9yIGV4Y2VwdGlvblxuIgorImlzIHJhaXNlZCwgaW5kaWNhdGluZyBubyBtb3JlIHZhbHVlcy5cbiIKKyJcbiIKKyJUaGUgcmVzdWx0IGlzIGEgdHVwbGUgb2YgMyBpdGVtczpcbiIKKyIgIHZhbHVlX25hbWVcbiIKKyIgICAgQSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSB2YWx1ZS5cbiIKKyIgIHZhbHVlX2RhdGFcbiIKKyIgICAgQW4gb2JqZWN0IHRoYXQgaG9sZHMgdGhlIHZhbHVlIGRhdGEsIGFuZCB3aG9zZSB0eXBlIGRlcGVuZHNcbiIKKyIgICAgb24gdGhlIHVuZGVybHlpbmcgcmVnaXN0cnkgdHlwZS5cbiIKKyIgIGRhdGFfdHlwZVxuIgorIiAgICBBbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgdHlwZSBvZiB0aGUgdmFsdWUgZGF0YS4iKTsKKworI2RlZmluZSBXSU5SRUdfRU5VTVZBTFVFX01FVEhPRERFRiAgICBcCisgICAgeyJFbnVtVmFsdWUiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0VudW1WYWx1ZSwgTUVUSF9WQVJBUkdTLCB3aW5yZWdfRW51bVZhbHVlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRW51bVZhbHVlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIGludCBpbmRleCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRW51bVZhbHVlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworICAgIGludCBpbmRleDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpOkVudW1WYWx1ZSIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJmluZGV4KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19FbnVtVmFsdWVfaW1wbChtb2R1bGUsIGtleSwgaW5kZXgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzX19kb2NfXywKKyJFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MoJG1vZHVsZSwgc3RyaW5nLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRXhwYW5kIGVudmlyb25tZW50IHZhcnMuIik7CisKKyNkZWZpbmUgV0lOUkVHX0VYUEFOREVOVklST05NRU5UU1RSSU5HU19NRVRIT0RERUYgICAgXAorICAgIHsiRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19FeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MsIE1FVEhfTywgd2lucmVnX0V4cGFuZEVudmlyb25tZW50U3RyaW5nc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0V4cGFuZEVudmlyb25tZW50U3RyaW5nc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X1VOSUNPREUgKnN0cmluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfVU5JQ09ERSAqc3RyaW5nOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ1OkV4cGFuZEVudmlyb25tZW50U3RyaW5ncyIsICZzdHJpbmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0V4cGFuZEVudmlyb25tZW50U3RyaW5nc19pbXBsKG1vZHVsZSwgc3RyaW5nKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0ZsdXNoS2V5X19kb2NfXywKKyJGbHVzaEtleSgkbW9kdWxlLCBrZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZXMgYWxsIHRoZSBhdHRyaWJ1dGVzIG9mIGEga2V5IHRvIHRoZSByZWdpc3RyeS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiXG4iCisiSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjYWxsIEZsdXNoS2V5IHRvIGNoYW5nZSBhIGtleS4gIFJlZ2lzdHJ5IGNoYW5nZXNcbiIKKyJhcmUgZmx1c2hlZCB0byBkaXNrIGJ5IHRoZSByZWdpc3RyeSB1c2luZyBpdHMgbGF6eSBmbHVzaGVyLiAgUmVnaXN0cnlcbiIKKyJjaGFuZ2VzIGFyZSBhbHNvIGZsdXNoZWQgdG8gZGlzayBhdCBzeXN0ZW0gc2h1dGRvd24uICBVbmxpa2VcbiIKKyJDbG9zZUtleSgpLCB0aGUgRmx1c2hLZXkoKSBtZXRob2QgcmV0dXJucyBvbmx5IHdoZW4gYWxsIHRoZSBkYXRhIGhhc1xuIgorImJlZW4gd3JpdHRlbiB0byB0aGUgcmVnaXN0cnkuXG4iCisiXG4iCisiQW4gYXBwbGljYXRpb24gc2hvdWxkIG9ubHkgY2FsbCBGbHVzaEtleSgpIGlmIGl0IHJlcXVpcmVzIGFic29sdXRlXG4iCisiY2VydGFpbnR5IHRoYXQgcmVnaXN0cnkgY2hhbmdlcyBhcmUgb24gZGlzay4gIElmIHlvdSBkb25cJ3Qga25vdyB3aGV0aGVyXG4iCisiYSBGbHVzaEtleSgpIGNhbGwgaXMgcmVxdWlyZWQsIGl0IHByb2JhYmx5IGlzblwndC4iKTsKKworI2RlZmluZSBXSU5SRUdfRkxVU0hLRVlfTUVUSE9EREVGICAgIFwKKyAgICB7IkZsdXNoS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19GbHVzaEtleSwgTUVUSF9PLCB3aW5yZWdfRmx1c2hLZXlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19GbHVzaEtleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19GbHVzaEtleShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpGbHVzaEtleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRmx1c2hLZXlfaW1wbChtb2R1bGUsIGtleSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19Mb2FkS2V5X19kb2NfXywKKyJMb2FkS2V5KCRtb2R1bGUsIGtleSwgc3ViX2tleSwgZmlsZV9uYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiSW5zZXJ0IGRhdGEgaW50byB0aGUgcmVnaXN0cnkgZnJvbSBhIGZpbGUuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgc3ViX2tleVxuIgorIiAgICBBIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHN1Yi1rZXkgdG8gbG9hZC5cbiIKKyIgIGZpbGVfbmFtZVxuIgorIiAgICBUaGUgbmFtZSBvZiB0aGUgZmlsZSB0byBsb2FkIHJlZ2lzdHJ5IGRhdGEgZnJvbS4gIFRoaXMgZmlsZSBtdXN0XG4iCisiICAgIGhhdmUgYmVlbiBjcmVhdGVkIHdpdGggdGhlIFNhdmVLZXkoKSBmdW5jdGlvbi4gIFVuZGVyIHRoZSBmaWxlXG4iCisiICAgIGFsbG9jYXRpb24gdGFibGUgKEZBVCkgZmlsZSBzeXN0ZW0sIHRoZSBmaWxlbmFtZSBtYXkgbm90IGhhdmUgYW5cbiIKKyIgICAgZXh0ZW5zaW9uLlxuIgorIlxuIgorIkNyZWF0ZXMgYSBzdWJrZXkgdW5kZXIgdGhlIHNwZWNpZmllZCBrZXkgYW5kIHN0b3JlcyByZWdpc3RyYXRpb25cbiIKKyJpbmZvcm1hdGlvbiBmcm9tIGEgc3BlY2lmaWVkIGZpbGUgaW50byB0aGF0IHN1YmtleS5cbiIKKyJcbiIKKyJBIGNhbGwgdG8gTG9hZEtleSgpIGZhaWxzIGlmIHRoZSBjYWxsaW5nIHByb2Nlc3MgZG9lcyBub3QgaGF2ZSB0aGVcbiIKKyJTRV9SRVNUT1JFX1BSSVZJTEVHRSBwcml2aWxlZ2UuXG4iCisiXG4iCisiSWYga2V5IGlzIGEgaGFuZGxlIHJldHVybmVkIGJ5IENvbm5lY3RSZWdpc3RyeSgpLCB0aGVuIHRoZSBwYXRoXG4iCisic3BlY2lmaWVkIGluIGZpbGVOYW1lIGlzIHJlbGF0aXZlIHRvIHRoZSByZW1vdGUgY29tcHV0ZXIuXG4iCisiXG4iCisiVGhlIE1TRE4gZG9jcyBpbXBseSBrZXkgbXVzdCBiZSBpbiB0aGUgSEtFWV9VU0VSIG9yIEhLRVlfTE9DQUxfTUFDSElORVxuIgorInRyZWUuIik7CisKKyNkZWZpbmUgV0lOUkVHX0xPQURLRVlfTUVUSE9EREVGICAgIFwKKyAgICB7IkxvYWRLZXkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0xvYWRLZXksIE1FVEhfVkFSQVJHUywgd2lucmVnX0xvYWRLZXlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19Mb2FkS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXksCisgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKmZpbGVfbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfTG9hZEtleShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKyAgICBQeV9VTklDT0RFICpzdWJfa2V5OworICAgIFB5X1VOSUNPREUgKmZpbGVfbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ1dTpMb2FkS2V5IiwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJmZpbGVfbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfTG9hZEtleV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCBmaWxlX25hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfT3BlbktleV9fZG9jX18sCisiT3BlbktleSgkbW9kdWxlLCAvLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkPTAsIGFjY2Vzcz13aW5yZWcuS0VZX1JFQUQpXG4iCisiLS1cbiIKKyJcbiIKKyJPcGVucyB0aGUgc3BlY2lmaWVkIGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiICBzdWJfa2V5XG4iCisiICAgIEEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgc3ViX2tleSB0byBvcGVuLlxuIgorIiAgcmVzZXJ2ZWRcbiIKKyIgICAgQSByZXNlcnZlZCBpbnRlZ2VyIHRoYXQgbXVzdCBiZSB6ZXJvLiAgRGVmYXVsdCBpcyB6ZXJvLlxuIgorIiAgYWNjZXNzXG4iCisiICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgYW4gYWNjZXNzIG1hc2sgdGhhdCBkZXNjcmliZXMgdGhlIGRlc2lyZWRcbiIKKyIgICAgc2VjdXJpdHkgYWNjZXNzIGZvciB0aGUga2V5LiAgRGVmYXVsdCBpcyBLRVlfUkVBRC5cbiIKKyJcbiIKKyJUaGUgcmVzdWx0IGlzIGEgbmV3IGhhbmRsZSB0byB0aGUgc3BlY2lmaWVkIGtleS5cbiIKKyJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBXSU5SRUdfT1BFTktFWV9NRVRIT0RERUYgICAgXAorICAgIHsiT3BlbktleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfT3BlbktleSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19PcGVuS2V5X19kb2NfX30sCisKK3N0YXRpYyBIS0VZCit3aW5yZWdfT3BlbktleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAorICAgICAgICAgICAgICAgICAgICBpbnQgcmVzZXJ2ZWQsIFJFR1NBTSBhY2Nlc3MpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX09wZW5LZXkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJyZXNlcnZlZCIsICJhY2Nlc3MiLCBOVUxMfTsKKyAgICBIS0VZIGtleTsKKyAgICBQeV9VTklDT0RFICpzdWJfa2V5OworICAgIGludCByZXNlcnZlZCA9IDA7CisgICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9SRUFEOworICAgIEhLRVkgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mWnxpaTpPcGVuS2V5IiwgX2tleXdvcmRzLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19PcGVuS2V5X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkLCBhY2Nlc3MpOworICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19PcGVuS2V5RXhfX2RvY19fLAorIk9wZW5LZXlFeCgkbW9kdWxlLCAvLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkPTAsIGFjY2Vzcz13aW5yZWcuS0VZX1JFQUQpXG4iCisiLS1cbiIKKyJcbiIKKyJPcGVucyB0aGUgc3BlY2lmaWVkIGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiICBzdWJfa2V5XG4iCisiICAgIEEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgc3ViX2tleSB0byBvcGVuLlxuIgorIiAgcmVzZXJ2ZWRcbiIKKyIgICAgQSByZXNlcnZlZCBpbnRlZ2VyIHRoYXQgbXVzdCBiZSB6ZXJvLiAgRGVmYXVsdCBpcyB6ZXJvLlxuIgorIiAgYWNjZXNzXG4iCisiICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgYW4gYWNjZXNzIG1hc2sgdGhhdCBkZXNjcmliZXMgdGhlIGRlc2lyZWRcbiIKKyIgICAgc2VjdXJpdHkgYWNjZXNzIGZvciB0aGUga2V5LiAgRGVmYXVsdCBpcyBLRVlfUkVBRC5cbiIKKyJcbiIKKyJUaGUgcmVzdWx0IGlzIGEgbmV3IGhhbmRsZSB0byB0aGUgc3BlY2lmaWVkIGtleS5cbiIKKyJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBXSU5SRUdfT1BFTktFWUVYX01FVEhPRERFRiAgICBcCisgICAgeyJPcGVuS2V5RXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX09wZW5LZXlFeCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19PcGVuS2V5RXhfX2RvY19ffSwKKworc3RhdGljIEhLRVkKK3dpbnJlZ19PcGVuS2V5RXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzZXJ2ZWQsIFJFR1NBTSBhY2Nlc3MpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX09wZW5LZXlFeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIEhLRVkga2V5OworICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CisgICAgaW50IHJlc2VydmVkID0gMDsKKyAgICBSRUdTQU0gYWNjZXNzID0gS0VZX1JFQUQ7CisgICAgSEtFWSBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZafGlpOk9wZW5LZXlFeCIsIF9rZXl3b3JkcywKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfT3BlbktleUV4X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkLCBhY2Nlc3MpOworICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19RdWVyeUluZm9LZXlfX2RvY19fLAorIlF1ZXJ5SW5mb0tleSgkbW9kdWxlLCBrZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEga2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyJcbiIKKyJUaGUgcmVzdWx0IGlzIGEgdHVwbGUgb2YgMyBpdGVtczpcbiIKKyJBbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgbnVtYmVyIG9mIHN1YiBrZXlzIHRoaXMga2V5IGhhcy5cbiIKKyJBbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgbnVtYmVyIG9mIHZhbHVlcyB0aGlzIGtleSBoYXMuXG4iCisiQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgd2hlbiB0aGUga2V5IHdhcyBsYXN0IG1vZGlmaWVkIChpZiBhdmFpbGFibGUpXG4iCisiYXMgMTAwXCdzIG9mIG5hbm9zZWNvbmRzIHNpbmNlIEphbiAxLCAxNjAwLiIpOworCisjZGVmaW5lIFdJTlJFR19RVUVSWUlORk9LRVlfTUVUSE9EREVGICAgIFwKKyAgICB7IlF1ZXJ5SW5mb0tleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfUXVlcnlJbmZvS2V5LCBNRVRIX08sIHdpbnJlZ19RdWVyeUluZm9LZXlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19RdWVyeUluZm9LZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfUXVlcnlJbmZvS2V5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlF1ZXJ5SW5mb0tleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfUXVlcnlJbmZvS2V5X2ltcGwobW9kdWxlLCBrZXkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfUXVlcnlWYWx1ZV9fZG9jX18sCisiUXVlcnlWYWx1ZSgkbW9kdWxlLCBrZXksIHN1Yl9rZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXRyaWV2ZXMgdGhlIHVubmFtZWQgdmFsdWUgZm9yIGEga2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyIgIHN1Yl9rZXlcbiIKKyIgICAgQSBzdHJpbmcgdGhhdCBob2xkcyB0aGUgbmFtZSBvZiB0aGUgc3Via2V5IHdpdGggd2hpY2ggdGhlIHZhbHVlXG4iCisiICAgIGlzIGFzc29jaWF0ZWQuICBJZiB0aGlzIHBhcmFtZXRlciBpcyBOb25lIG9yIGVtcHR5LCB0aGUgZnVuY3Rpb25cbiIKKyIgICAgcmV0cmlldmVzIHRoZSB2YWx1ZSBzZXQgYnkgdGhlIFNldFZhbHVlKCkgbWV0aG9kIGZvciB0aGUga2V5XG4iCisiICAgIGlkZW50aWZpZWQgYnkga2V5LlxuIgorIlxuIgorIlZhbHVlcyBpbiB0aGUgcmVnaXN0cnkgaGF2ZSBuYW1lLCB0eXBlLCBhbmQgZGF0YSBjb21wb25lbnRzLiBUaGlzIG1ldGhvZFxuIgorInJldHJpZXZlcyB0aGUgZGF0YSBmb3IgYSBrZXlcJ3MgZmlyc3QgdmFsdWUgdGhhdCBoYXMgYSBOVUxMIG5hbWUuXG4iCisiQnV0IHNpbmNlIHRoZSB1bmRlcmx5aW5nIEFQSSBjYWxsIGRvZXNuXCd0IHJldHVybiB0aGUgdHlwZSwgeW91XCdsbFxuIgorInByb2JhYmx5IGJlIGhhcHBpZXIgdXNpbmcgUXVlcnlWYWx1ZUV4OyB0aGlzIGZ1bmN0aW9uIGlzIGp1c3QgaGVyZSBmb3JcbiIKKyJjb21wbGV0ZW5lc3MuIik7CisKKyNkZWZpbmUgV0lOUkVHX1FVRVJZVkFMVUVfTUVUSE9EREVGICAgIFwKKyAgICB7IlF1ZXJ5VmFsdWUiLCAoUHlDRnVuY3Rpb24pd2lucmVnX1F1ZXJ5VmFsdWUsIE1FVEhfVkFSQVJHUywgd2lucmVnX1F1ZXJ5VmFsdWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19RdWVyeVZhbHVlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXkpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX1F1ZXJ5VmFsdWUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaOlF1ZXJ5VmFsdWUiLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19RdWVyeVZhbHVlX2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfUXVlcnlWYWx1ZUV4X19kb2NfXywKKyJRdWVyeVZhbHVlRXgoJG1vZHVsZSwga2V5LCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0cmlldmVzIHRoZSB0eXBlIGFuZCB2YWx1ZSBvZiBhIHNwZWNpZmllZCBzdWIta2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyIgIG5hbWVcbiIKKyIgICAgQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgdmFsdWUgdG8gcXVlcnkuXG4iCisiXG4iCisiQmVoYXZlcyBtb3N0bHkgbGlrZSBRdWVyeVZhbHVlKCksIGJ1dCBhbHNvIHJldHVybnMgdGhlIHR5cGUgb2YgdGhlXG4iCisic3BlY2lmaWVkIHZhbHVlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBvcGVuIHJlZ2lzdHJ5IGtleS5cbiIKKyJcbiIKKyJUaGUgcmV0dXJuIHZhbHVlIGlzIGEgdHVwbGUgb2YgdGhlIHZhbHVlIGFuZCB0aGUgdHlwZV9pZC4iKTsKKworI2RlZmluZSBXSU5SRUdfUVVFUllWQUxVRUVYX01FVEhPRERFRiAgICBcCisgICAgeyJRdWVyeVZhbHVlRXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX1F1ZXJ5VmFsdWVFeCwgTUVUSF9WQVJBUkdTLCB3aW5yZWdfUXVlcnlWYWx1ZUV4X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfUXVlcnlWYWx1ZUV4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKm5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX1F1ZXJ5VmFsdWVFeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKyAgICBQeV9VTklDT0RFICpuYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlo6UXVlcnlWYWx1ZUV4IiwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfUXVlcnlWYWx1ZUV4X2ltcGwobW9kdWxlLCBrZXksIG5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfU2F2ZUtleV9fZG9jX18sCisiU2F2ZUtleSgkbW9kdWxlLCBrZXksIGZpbGVfbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlNhdmVzIHRoZSBzcGVjaWZpZWQga2V5LCBhbmQgYWxsIGl0cyBzdWJrZXlzIHRvIHRoZSBzcGVjaWZpZWQgZmlsZS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiICBmaWxlX25hbWVcbiIKKyIgICAgVGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gc2F2ZSByZWdpc3RyeSBkYXRhIHRvLiAgVGhpcyBmaWxlIGNhbm5vdFxuIgorIiAgICBhbHJlYWR5IGV4aXN0LiBJZiB0aGlzIGZpbGVuYW1lIGluY2x1ZGVzIGFuIGV4dGVuc2lvbiwgaXQgY2Fubm90IGJlXG4iCisiICAgIHVzZWQgb24gZmlsZSBhbGxvY2F0aW9uIHRhYmxlIChGQVQpIGZpbGUgc3lzdGVtcyBieSB0aGUgTG9hZEtleSgpLFxuIgorIiAgICBSZXBsYWNlS2V5KCkgb3IgUmVzdG9yZUtleSgpIG1ldGhvZHMuXG4iCisiXG4iCisiSWYga2V5IHJlcHJlc2VudHMgYSBrZXkgb24gYSByZW1vdGUgY29tcHV0ZXIsIHRoZSBwYXRoIGRlc2NyaWJlZCBieVxuIgorImZpbGVfbmFtZSBpcyByZWxhdGl2ZSB0byB0aGUgcmVtb3RlIGNvbXB1dGVyLlxuIgorIlxuIgorIlRoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2QgbXVzdCBwb3NzZXNzIHRoZSBTZUJhY2t1cFByaXZpbGVnZVxuIgorInNlY3VyaXR5IHByaXZpbGVnZS4gIFRoaXMgZnVuY3Rpb24gcGFzc2VzIE5VTEwgZm9yIHNlY3VyaXR5X2F0dHJpYnV0ZXNcbiIKKyJ0byB0aGUgQVBJLiIpOworCisjZGVmaW5lIFdJTlJFR19TQVZFS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJTYXZlS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19TYXZlS2V5LCBNRVRIX1ZBUkFSR1MsIHdpbnJlZ19TYXZlS2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfU2F2ZUtleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpmaWxlX25hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX1NhdmVLZXkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqZmlsZV9uYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnU6U2F2ZUtleSIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJmZpbGVfbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfU2F2ZUtleV9pbXBsKG1vZHVsZSwga2V5LCBmaWxlX25hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfU2V0VmFsdWVfX2RvY19fLAorIlNldFZhbHVlKCRtb2R1bGUsIGtleSwgc3ViX2tleSwgdHlwZSwgdmFsdWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBc3NvY2lhdGVzIGEgdmFsdWUgd2l0aCBhIHNwZWNpZmllZCBrZXkuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgc3ViX2tleVxuIgorIiAgICBBIHN0cmluZyB0aGF0IG5hbWVzIHRoZSBzdWJrZXkgd2l0aCB3aGljaCB0aGUgdmFsdWUgaXMgYXNzb2NpYXRlZC5cbiIKKyIgIHR5cGVcbiIKKyIgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZGF0YS4gIEN1cnJlbnRseSB0aGlzIG11c3RcbiIKKyIgICAgYmUgUkVHX1NaLCBtZWFuaW5nIG9ubHkgc3RyaW5ncyBhcmUgc3VwcG9ydGVkLlxuIgorIiAgdmFsdWVcbiIKKyIgICAgQSBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG5ldyB2YWx1ZS5cbiIKKyJcbiIKKyJJZiB0aGUga2V5IHNwZWNpZmllZCBieSB0aGUgc3ViX2tleSBwYXJhbWV0ZXIgZG9lcyBub3QgZXhpc3QsIHRoZVxuIgorIlNldFZhbHVlIGZ1bmN0aW9uIGNyZWF0ZXMgaXQuXG4iCisiXG4iCisiVmFsdWUgbGVuZ3RocyBhcmUgbGltaXRlZCBieSBhdmFpbGFibGUgbWVtb3J5LiBMb25nIHZhbHVlcyAobW9yZSB0aGFuXG4iCisiMjA0OCBieXRlcykgc2hvdWxkIGJlIHN0b3JlZCBhcyBmaWxlcyB3aXRoIHRoZSBmaWxlbmFtZXMgc3RvcmVkIGluXG4iCisidGhlIGNvbmZpZ3VyYXRpb24gcmVnaXN0cnkgdG8gaGVscCB0aGUgcmVnaXN0cnkgcGVyZm9ybSBlZmZpY2llbnRseS5cbiIKKyJcbiIKKyJUaGUga2V5IGlkZW50aWZpZWQgYnkgdGhlIGtleSBwYXJhbWV0ZXIgbXVzdCBoYXZlIGJlZW4gb3BlbmVkIHdpdGhcbiIKKyJLRVlfU0VUX1ZBTFVFIGFjY2Vzcy4iKTsKKworI2RlZmluZSBXSU5SRUdfU0VUVkFMVUVfTUVUSE9EREVGICAgIFwKKyAgICB7IlNldFZhbHVlIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19TZXRWYWx1ZSwgTUVUSF9WQVJBUkdTLCB3aW5yZWdfU2V0VmFsdWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19TZXRWYWx1ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAorICAgICAgICAgICAgICAgICAgICAgRFdPUkQgdHlwZSwgUHlfVU5JQ09ERSAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV9jbGVhbl90IHZhbHVlX2xlbmd0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfU2V0VmFsdWUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKKyAgICBEV09SRCB0eXBlOworICAgIFB5X1VOSUNPREUgKnZhbHVlOworICAgIFB5X3NzaXplX2NsZWFuX3QgdmFsdWVfbGVuZ3RoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlprdSM6U2V0VmFsdWUiLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmdHlwZSwgJnZhbHVlLCAmdmFsdWVfbGVuZ3RoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19TZXRWYWx1ZV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCB0eXBlLCB2YWx1ZSwgdmFsdWVfbGVuZ3RoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX1NldFZhbHVlRXhfX2RvY19fLAorIlNldFZhbHVlRXgoJG1vZHVsZSwga2V5LCB2YWx1ZV9uYW1lLCByZXNlcnZlZCwgdHlwZSwgdmFsdWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTdG9yZXMgZGF0YSBpbiB0aGUgdmFsdWUgZmllbGQgb2YgYW4gb3BlbiByZWdpc3RyeSBrZXkuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgdmFsdWVfbmFtZVxuIgorIiAgICBBIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSB2YWx1ZSB0byBzZXQsIG9yIE5vbmUuXG4iCisiICByZXNlcnZlZFxuIgorIiAgICBDYW4gYmUgYW55dGhpbmcgLSB6ZXJvIGlzIGFsd2F5cyBwYXNzZWQgdG8gdGhlIEFQSS5cbiIKKyIgIHR5cGVcbiIKKyIgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZGF0YSwgb25lIG9mOlxuIgorIiAgICBSRUdfQklOQVJZIC0tIEJpbmFyeSBkYXRhIGluIGFueSBmb3JtLlxuIgorIiAgICBSRUdfRFdPUkQgLS0gQSAzMi1iaXQgbnVtYmVyLlxuIgorIiAgICBSRUdfRFdPUkRfTElUVExFX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuXG4iCisiICAgIFJFR19EV09SRF9CSUdfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBiaWctZW5kaWFuIGZvcm1hdC5cbiIKKyIgICAgUkVHX0VYUEFORF9TWiAtLSBBIG51bGwtdGVybWluYXRlZCBzdHJpbmcgdGhhdCBjb250YWlucyB1bmV4cGFuZGVkXG4iCisiICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyB0byBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGZvciBleGFtcGxlLFxuIgorIiAgICAgICAgICAgICAgICAgICAgICVQQVRIJSkuXG4iCisiICAgIFJFR19MSU5LIC0tIEEgVW5pY29kZSBzeW1ib2xpYyBsaW5rLlxuIgorIiAgICBSRUdfTVVMVElfU1ogLS0gQW4gc2VxdWVuY2Ugb2YgbnVsbC10ZXJtaW5hdGVkIHN0cmluZ3MsIHRlcm1pbmF0ZWRcbiIKKyIgICAgICAgICAgICAgICAgICAgIGJ5IHR3byBudWxsIGNoYXJhY3RlcnMuICBOb3RlIHRoYXQgUHl0aG9uIGhhbmRsZXNcbiIKKyIgICAgICAgICAgICAgICAgICAgIHRoaXMgdGVybWluYXRpb24gYXV0b21hdGljYWxseS5cbiIKKyIgICAgUkVHX05PTkUgLS0gTm8gZGVmaW5lZCB2YWx1ZSB0eXBlLlxuIgorIiAgICBSRUdfUkVTT1VSQ0VfTElTVCAtLSBBIGRldmljZS1kcml2ZXIgcmVzb3VyY2UgbGlzdC5cbiIKKyIgICAgUkVHX1NaIC0tIEEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZy5cbiIKKyIgIHZhbHVlXG4iCisiICAgIEEgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBuZXcgdmFsdWUuXG4iCisiXG4iCisiVGhpcyBtZXRob2QgY2FuIGFsc28gc2V0IGFkZGl0aW9uYWwgdmFsdWUgYW5kIHR5cGUgaW5mb3JtYXRpb24gZm9yIHRoZVxuIgorInNwZWNpZmllZCBrZXkuICBUaGUga2V5IGlkZW50aWZpZWQgYnkgdGhlIGtleSBwYXJhbWV0ZXIgbXVzdCBoYXZlIGJlZW5cbiIKKyJvcGVuZWQgd2l0aCBLRVlfU0VUX1ZBTFVFIGFjY2Vzcy5cbiIKKyJcbiIKKyJUbyBvcGVuIHRoZSBrZXksIHVzZSB0aGUgQ3JlYXRlS2V5RXgoKSBvciBPcGVuS2V5RXgoKSBtZXRob2RzLlxuIgorIlxuIgorIlZhbHVlIGxlbmd0aHMgYXJlIGxpbWl0ZWQgYnkgYXZhaWxhYmxlIG1lbW9yeS4gTG9uZyB2YWx1ZXMgKG1vcmUgdGhhblxuIgorIjIwNDggYnl0ZXMpIHNob3VsZCBiZSBzdG9yZWQgYXMgZmlsZXMgd2l0aCB0aGUgZmlsZW5hbWVzIHN0b3JlZCBpblxuIgorInRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdHJ5IHRvIGhlbHAgdGhlIHJlZ2lzdHJ5IHBlcmZvcm0gZWZmaWNpZW50bHkuIik7CisKKyNkZWZpbmUgV0lOUkVHX1NFVFZBTFVFRVhfTUVUSE9EREVGICAgIFwKKyAgICB7IlNldFZhbHVlRXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX1NldFZhbHVlRXgsIE1FVEhfVkFSQVJHUywgd2lucmVnX1NldFZhbHVlRXhfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19TZXRWYWx1ZUV4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnZhbHVlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXNlcnZlZCwgRFdPUkQgdHlwZSwgUHlPYmplY3QgKnZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19TZXRWYWx1ZUV4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworICAgIFB5X1VOSUNPREUgKnZhbHVlX25hbWU7CisgICAgUHlPYmplY3QgKnJlc2VydmVkOworICAgIERXT1JEIHR5cGU7CisgICAgUHlPYmplY3QgKnZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlpPa086U2V0VmFsdWVFeCIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnZhbHVlX25hbWUsICZyZXNlcnZlZCwgJnR5cGUsICZ2YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfU2V0VmFsdWVFeF9pbXBsKG1vZHVsZSwga2V5LCB2YWx1ZV9uYW1lLCByZXNlcnZlZCwgdHlwZSwgdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfRGlzYWJsZVJlZmxlY3Rpb25LZXlfX2RvY19fLAorIkRpc2FibGVSZWZsZWN0aW9uS2V5KCRtb2R1bGUsIGtleSwgLylcbiIKKyItLVxuIgorIlxuIgorIkRpc2FibGVzIHJlZ2lzdHJ5IHJlZmxlY3Rpb24gZm9yIDMyYml0IHByb2Nlc3NlcyBydW5uaW5nIG9uIGEgNjRiaXQgT1MuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIlxuIgorIldpbGwgZ2VuZXJhbGx5IHJhaXNlIE5vdEltcGxlbWVudGVkIGlmIGV4ZWN1dGVkIG9uIGEgMzJiaXQgT1MuXG4iCisiXG4iCisiSWYgdGhlIGtleSBpcyBub3Qgb24gdGhlIHJlZmxlY3Rpb24gbGlzdCwgdGhlIGZ1bmN0aW9uIHN1Y2NlZWRzIGJ1dCBoYXNcbiIKKyJubyBlZmZlY3QuICBEaXNhYmxpbmcgcmVmbGVjdGlvbiBmb3IgYSBrZXkgZG9lcyBub3QgYWZmZWN0IHJlZmxlY3Rpb25cbiIKKyJvZiBhbnkgc3Via2V5cy4iKTsKKworI2RlZmluZSBXSU5SRUdfRElTQUJMRVJFRkxFQ1RJT05LRVlfTUVUSE9EREVGICAgIFwKKyAgICB7IkRpc2FibGVSZWZsZWN0aW9uS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19EaXNhYmxlUmVmbGVjdGlvbktleSwgTUVUSF9PLCB3aW5yZWdfRGlzYWJsZVJlZmxlY3Rpb25LZXlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19EaXNhYmxlUmVmbGVjdGlvbktleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19EaXNhYmxlUmVmbGVjdGlvbktleShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpEaXNhYmxlUmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGlzYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChtb2R1bGUsIGtleSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19FbmFibGVSZWZsZWN0aW9uS2V5X19kb2NfXywKKyJFbmFibGVSZWZsZWN0aW9uS2V5KCRtb2R1bGUsIGtleSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlc3RvcmVzIHJlZ2lzdHJ5IHJlZmxlY3Rpb24gZm9yIHRoZSBzcGVjaWZpZWQgZGlzYWJsZWQga2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyJcbiIKKyJXaWxsIGdlbmVyYWxseSByYWlzZSBOb3RJbXBsZW1lbnRlZCBpZiBleGVjdXRlZCBvbiBhIDMyYml0IE9TLlxuIgorIlJlc3RvcmluZyByZWZsZWN0aW9uIGZvciBhIGtleSBkb2VzIG5vdCBhZmZlY3QgcmVmbGVjdGlvbiBvZiBhbnlcbiIKKyJzdWJrZXlzLiIpOworCisjZGVmaW5lIFdJTlJFR19FTkFCTEVSRUZMRUNUSU9OS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJFbmFibGVSZWZsZWN0aW9uS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19FbmFibGVSZWZsZWN0aW9uS2V5LCBNRVRIX08sIHdpbnJlZ19FbmFibGVSZWZsZWN0aW9uS2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRW5hYmxlUmVmbGVjdGlvbktleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19FbmFibGVSZWZsZWN0aW9uS2V5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkVuYWJsZVJlZmxlY3Rpb25LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0VuYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChtb2R1bGUsIGtleSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19RdWVyeVJlZmxlY3Rpb25LZXlfX2RvY19fLAorIlF1ZXJ5UmVmbGVjdGlvbktleSgkbW9kdWxlLCBrZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSByZWZsZWN0aW9uIHN0YXRlIGZvciB0aGUgc3BlY2lmaWVkIGtleSBhcyBhIGJvb2wuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIlxuIgorIldpbGwgZ2VuZXJhbGx5IHJhaXNlIE5vdEltcGxlbWVudGVkIGlmIGV4ZWN1dGVkIG9uIGEgMzJiaXQgT1MuIik7CisKKyNkZWZpbmUgV0lOUkVHX1FVRVJZUkVGTEVDVElPTktFWV9NRVRIT0RERUYgICAgXAorICAgIHsiUXVlcnlSZWZsZWN0aW9uS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19RdWVyeVJlZmxlY3Rpb25LZXksIE1FVEhfTywgd2lucmVnX1F1ZXJ5UmVmbGVjdGlvbktleV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX1F1ZXJ5UmVmbGVjdGlvbktleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19RdWVyeVJlZmxlY3Rpb25LZXkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6UXVlcnlSZWZsZWN0aW9uS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19RdWVyeVJlZmxlY3Rpb25LZXlfaW1wbChtb2R1bGUsIGtleSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MWY1YmMzMGI2NDY4MDdiIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL1BDL2NsaW5pYy93aW5zb3VuZC5jLmggYi9QQy9jbGluaWMvd2luc291bmQuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjYTVhNDIKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9jbGluaWMvd2luc291bmQuYy5oCkBAIC0wLDAgKzEsMTAwIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIod2luc291bmRfUGxheVNvdW5kX19kb2NfXywKKyJQbGF5U291bmQoJG1vZHVsZSwgc291bmQsIGZsYWdzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQSB3cmFwcGVyIGFyb3VuZCB0aGUgV2luZG93cyBQbGF5U291bmQgQVBJLlxuIgorIlxuIgorIiAgc291bmRcbiIKKyIgICAgVGhlIHNvdW5kIHRvIHBsYXk7IGEgZmlsZW5hbWUsIGRhdGEsIG9yIE5vbmUuXG4iCisiICBmbGFnc1xuIgorIiAgICBGbGFnIHZhbHVlcywgb3JlZCB0b2dldGhlci4gIFNlZSBtb2R1bGUgZG9jdW1lbnRhdGlvbi4iKTsKKworI2RlZmluZSBXSU5TT1VORF9QTEFZU09VTkRfTUVUSE9EREVGICAgIFwKKyAgICB7IlBsYXlTb3VuZCIsIChQeUNGdW5jdGlvbil3aW5zb3VuZF9QbGF5U291bmQsIE1FVEhfVkFSQVJHUywgd2luc291bmRfUGxheVNvdW5kX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5zb3VuZF9QbGF5U291bmRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9VTklDT0RFICpzb3VuZCwgaW50IGZsYWdzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnNvdW5kX1BsYXlTb3VuZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9VTklDT0RFICpzb3VuZDsKKyAgICBpbnQgZmxhZ3M7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlppOlBsYXlTb3VuZCIsCisgICAgICAgICZzb3VuZCwgJmZsYWdzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKG1vZHVsZSwgc291bmQsIGZsYWdzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2luc291bmRfQmVlcF9fZG9jX18sCisiQmVlcCgkbW9kdWxlLCBmcmVxdWVuY3ksIGR1cmF0aW9uLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQSB3cmFwcGVyIGFyb3VuZCB0aGUgV2luZG93cyBCZWVwIEFQSS5cbiIKKyJcbiIKKyIgIGZyZXF1ZW5jeVxuIgorIiAgICBGcmVxdWVuY3kgb2YgdGhlIHNvdW5kIGluIGhlcnR6LlxuIgorIiAgICBNdXN0IGJlIGluIHRoZSByYW5nZSAzNyB0aHJvdWdoIDMyLDc2Ny5cbiIKKyIgIGR1cmF0aW9uXG4iCisiICAgIEhvdyBsb25nIHRoZSBzb3VuZCBzaG91bGQgcGxheSwgaW4gbWlsbGlzZWNvbmRzLiIpOworCisjZGVmaW5lIFdJTlNPVU5EX0JFRVBfTUVUSE9EREVGICAgIFwKKyAgICB7IkJlZXAiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfQmVlcCwgTUVUSF9WQVJBUkdTLCB3aW5zb3VuZF9CZWVwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5zb3VuZF9CZWVwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZyZXF1ZW5jeSwgaW50IGR1cmF0aW9uKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnNvdW5kX0JlZXAoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZyZXF1ZW5jeTsKKyAgICBpbnQgZHVyYXRpb247CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOkJlZXAiLAorICAgICAgICAmZnJlcXVlbmN5LCAmZHVyYXRpb24pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2luc291bmRfQmVlcF9pbXBsKG1vZHVsZSwgZnJlcXVlbmN5LCBkdXJhdGlvbik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnNvdW5kX01lc3NhZ2VCZWVwX19kb2NfXywKKyJNZXNzYWdlQmVlcCgkbW9kdWxlLCB4PU1CX09LLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ2FsbCBXaW5kb3dzIE1lc3NhZ2VCZWVwKHgpLlxuIgorIlxuIgorInggZGVmYXVsdHMgdG8gTUJfT0suIik7CisKKyNkZWZpbmUgV0lOU09VTkRfTUVTU0FHRUJFRVBfTUVUSE9EREVGICAgIFwKKyAgICB7Ik1lc3NhZ2VCZWVwIiwgKFB5Q0Z1bmN0aW9uKXdpbnNvdW5kX01lc3NhZ2VCZWVwLCBNRVRIX1ZBUkFSR1MsIHdpbnNvdW5kX01lc3NhZ2VCZWVwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5zb3VuZF9NZXNzYWdlQmVlcF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB4KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnNvdW5kX01lc3NhZ2VCZWVwKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCB4ID0gTUJfT0s7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOk1lc3NhZ2VCZWVwIiwKKyAgICAgICAgJngpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2luc291bmRfTWVzc2FnZUJlZXBfaW1wbChtb2R1bGUsIHgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzViMDE4YWM5ZGMxZjUwMCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QQy9jb25maWcuYyBiL1BDL2NvbmZpZy5jCmluZGV4IDcyYzkzODEuLjY2YmY0NTggMTAwNjQ0Ci0tLSBhL1BDL2NvbmZpZy5jCisrKyBiL1BDL2NvbmZpZy5jCkBAIC0xLDcgKzEsNyBAQAogLyogTW9kdWxlIGNvbmZpZ3VyYXRpb24gKi8KIAogLyogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSB0YWJsZSBvZiBidWlsdC1pbiBtb2R1bGVzLgotICAgU2VlIGluaXRfYnVpbHRpbigpIGluIGltcG9ydC5jLiAqLworICAgU2VlIGNyZWF0ZV9idWlsdGluKCkgaW4gaW1wb3J0LmMuICovCiAKICNpbmNsdWRlICJQeXRob24uaCIKIApAQCAtMTksNyArMTksNyBAQAogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX21kNSh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X250KHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX29wZXJhdG9yKHZvaWQpOwotZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfc2lnbmFsKHZvaWQpOworZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3NpZ25hbCh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19zaGExKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3NoYTI1Nih2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19zaGE1MTIodm9pZCk7CkBAIC05MSw3ICs5MSw3IEBACiAgICAgeyJtYXRoIiwgUHlJbml0X21hdGh9LAogICAgIHsibnQiLCBQeUluaXRfbnR9LCAvKiBVc2UgdGhlIE5UIG9zIGZ1bmN0aW9ucywgbm90IHBvc2l4ICovCiAgICAgeyJfb3BlcmF0b3IiLCBQeUluaXRfX29wZXJhdG9yfSwKLSAgICB7InNpZ25hbCIsIFB5SW5pdF9zaWduYWx9LAorICAgIHsiX3NpZ25hbCIsIFB5SW5pdF9fc2lnbmFsfSwKICAgICB7Il9tZDUiLCBQeUluaXRfX21kNX0sCiAgICAgeyJfc2hhMSIsIFB5SW5pdF9fc2hhMX0sCiAgICAgeyJfc2hhMjU2IiwgUHlJbml0X19zaGEyNTZ9LApkaWZmIC0tZ2l0IGEvUEMvZGxfbnQuYyBiL1BDL2RsX250LmMKaW5kZXggYWUxMGZiNS4uYzg3YzUxZSAxMDA2NDQKLS0tIGEvUEMvZGxfbnQuYworKysgYi9QQy9kbF9udC5jCkBAIC0xMiw3ICsxMiwxMiBAQAogI2luY2x1ZGUgIndpbmRvd3MuaCIKIAogI2lmZGVmIFB5X0VOQUJMRV9TSEFSRUQKKyNpZmRlZiBNU19ETExfSUQKKy8vIFRoZSBzdHJpbmcgaXMgYXZhaWxhYmxlIGF0IGJ1aWxkLCBzbyBmaWxsIHRoZSBidWZmZXIgaW1tZWRpYXRlbHkKK2NoYXIgZGxsVmVyc2lvbkJ1ZmZlclsxNl0gPSBNU19ETExfSUQ7CisjZWxzZQogY2hhciBkbGxWZXJzaW9uQnVmZmVyWzE2XSA9ICIiOyAvLyBhIHByaXZhdGUgYnVmZmVyCisjZW5kaWYKIAogLy8gUHl0aG9uIEdsb2JhbHMKIEhNT0RVTEUgUHlXaW5fRExMaE1vZHVsZSA9IE5VTEw7CkBAIC04OCw4ICs5MywxMSBAQAogICAgIHsKICAgICAgICAgY2FzZSBETExfUFJPQ0VTU19BVFRBQ0g6CiAgICAgICAgICAgICBQeVdpbl9ETExoTW9kdWxlID0gaEluc3Q7CisjaWZuZGVmIE1TX0RMTF9JRAorICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBNU19ETExfSUQsIHdlIGRvbid0IG5lZWQgdG8gbG9hZCB0aGUgc3RyaW5nLgogICAgICAgICAgICAgLy8gMTAwMCBpcyBhIG1hZ2ljIG51bWJlciBJIHBpY2tlZCBvdXQgb2YgdGhlIGFpci4gIENvdWxkIGRvIHdpdGggYSAjZGVmaW5lLCBJIHNwb3NlLi4uCiAgICAgICAgICAgICBMb2FkU3RyaW5nKGhJbnN0LCAxMDAwLCBkbGxWZXJzaW9uQnVmZmVyLCBzaXplb2YoZGxsVmVyc2lvbkJ1ZmZlcikpOworI2VuZGlmCiAKICNpZiBIQVZFX1NYUwogICAgICAgICAgICAgLy8gYW5kIGNhcHR1cmUgb3VyIGFjdGl2YXRpb24gY29udGV4dCBmb3IgdXNlIHdoZW4gbG9hZGluZyBleHRlbnNpb25zLgpkaWZmIC0tZ2l0IGEvUEMvZ2V0cGF0aHAuYyBiL1BDL2dldHBhdGhwLmMKaW5kZXggZGViNDBlNy4uYzdkZGYxZSAxMDA2NDQKLS0tIGEvUEMvZ2V0cGF0aHAuYworKysgYi9QQy9nZXRwYXRocC5jCkBAIC0xMTMsNyArMTEzLDEwIEBACiBzdGF0aWMgdm9pZAogcmVkdWNlKHdjaGFyX3QgKmRpcikKIHsKLSAgICBzaXplX3QgaSA9IHdjc2xlbihkaXIpOworICAgIHNpemVfdCBpID0gd2Nzbmxlbl9zKGRpciwgTUFYUEFUSExFTisxKTsKKyAgICBpZiAoaSA+PSBNQVhQQVRITEVOKzEpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3MgcmVkdWNlKCkiKTsKKwogICAgIHdoaWxlIChpID4gMCAmJiAhaXNfc2VwKGRpcltpXSkpCiAgICAgICAgIC0taTsKICAgICBkaXJbaV0gPSAnXDAnOwpAQCAtMTMwLDE2ICsxMzMsMjMgQEAKICAgIG1heSBleHRlbmQgJ2ZpbGVuYW1lJyBieSBvbmUgY2hhcmFjdGVyLgogKi8KIHN0YXRpYyBpbnQKLWlzbW9kdWxlKHdjaGFyX3QgKmZpbGVuYW1lKSAgICAgLyogSXMgbW9kdWxlIC0tIGNoZWNrIGZvciAucHljLy5weW8gdG9vICovCitpc21vZHVsZSh3Y2hhcl90ICpmaWxlbmFtZSwgaW50IHVwZGF0ZV9maWxlbmFtZSkgLyogSXMgbW9kdWxlIC0tIGNoZWNrIGZvciAucHljLy5weW8gdG9vICovCiB7CisgICAgaW50IG47CisKICAgICBpZiAoZXhpc3RzKGZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAvKiBDaGVjayBmb3IgdGhlIGNvbXBpbGVkIHZlcnNpb24gb2YgcHJlZml4LiAqLwotICAgIGlmICh3Y3NsZW4oZmlsZW5hbWUpIDwgTUFYUEFUSExFTikgewotICAgICAgICB3Y3NjYXQoZmlsZW5hbWUsIFB5X09wdGltaXplRmxhZyA/IEwibyIgOiBMImMiKTsKLSAgICAgICAgaWYgKGV4aXN0cyhmaWxlbmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gMTsKKyAgICBuID0gd2Nzbmxlbl9zKGZpbGVuYW1lLCBNQVhQQVRITEVOKzEpOworICAgIGlmIChuIDwgTUFYUEFUSExFTikgeworICAgICAgICBpbnQgZXhpc3QgPSAwOworICAgICAgICBmaWxlbmFtZVtuXSA9IFB5X09wdGltaXplRmxhZyA/IEwnbycgOiBMJ2MnOworICAgICAgICBmaWxlbmFtZVtuICsgMV0gPSBMJ1wwJzsKKyAgICAgICAgZXhpc3QgPSBleGlzdHMoZmlsZW5hbWUpOworICAgICAgICBpZiAoIXVwZGF0ZV9maWxlbmFtZSkKKyAgICAgICAgICAgIGZpbGVuYW1lW25dID0gTCdcMCc7CisgICAgICAgIHJldHVybiBleGlzdDsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0xNTQsMjMgKzE2NCwyMyBAQAogICAgc3R1ZmYgYXMgZml0cyB3aWxsIGJlIGFwcGVuZGVkLgogKi8KIHN0YXRpYyB2b2lkCi1qb2luKHdjaGFyX3QgKmJ1ZmZlciwgd2NoYXJfdCAqc3R1ZmYpCitqb2luKHdjaGFyX3QgKmJ1ZmZlciwgY29uc3Qgd2NoYXJfdCAqc3R1ZmYpCiB7Ci0gICAgc2l6ZV90IG4sIGs7Ci0gICAgaWYgKGlzX3NlcChzdHVmZlswXSkpCi0gICAgICAgIG4gPSAwOwotICAgIGVsc2UgewotICAgICAgICBuID0gd2NzbGVuKGJ1ZmZlcik7Ci0gICAgICAgIGlmIChuID4gMCAmJiAhaXNfc2VwKGJ1ZmZlcltuLTFdKSAmJiBuIDwgTUFYUEFUSExFTikKLSAgICAgICAgICAgIGJ1ZmZlcltuKytdID0gU0VQOworICAgIHNpemVfdCBuOworICAgIGlmIChpc19zZXAoc3R1ZmZbMF0pIHx8CisgICAgICAgICh3Y3NubGVuX3Moc3R1ZmYsIDQpID49IDMgJiYgc3R1ZmZbMV0gPT0gJzonICYmIGlzX3NlcChzdHVmZlsyXSkpKSB7CisgICAgICAgIGlmICh3Y3NjcHlfcyhidWZmZXIsIE1BWFBBVEhMRU4rMSwgc3R1ZmYpICE9IDApCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW4oKSIpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChuID4gTUFYUEFUSExFTikKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBqb2lucGF0aCgpIik7Ci0gICAgayA9IHdjc2xlbihzdHVmZik7Ci0gICAgaWYgKG4gKyBrID4gTUFYUEFUSExFTikKLSAgICAgICAgayA9IE1BWFBBVEhMRU4gLSBuOwotICAgIHdjc25jcHkoYnVmZmVyK24sIHN0dWZmLCBrKTsKLSAgICBidWZmZXJbbitrXSA9ICdcMCc7CisKKyAgICBuID0gd2Nzbmxlbl9zKGJ1ZmZlciwgTUFYUEFUSExFTisxKTsKKyAgICBpZiAobiA+IDAgJiYgIWlzX3NlcChidWZmZXJbbiAtIDFdKSAmJiBuIDwgTUFYUEFUSExFTikgeworICAgICAgICBidWZmZXJbbl0gPSBTRVA7CisgICAgICAgIGJ1ZmZlcltuICsgMV0gPSAnXDAnOworICAgIH0KKyAgICBpZiAod2NzY2F0X3MoYnVmZmVyLCBNQVhQQVRITEVOKzEsIHN0dWZmKSAhPSAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW4oKSIpOwogfQogCiAvKiBnb3RsYW5kbWFyayBvbmx5IGNhbGxlZCBieSBzZWFyY2hfZm9yX3ByZWZpeCwgd2hpY2ggZW5zdXJlcwpAQCAtMTgxLDExICsxOTEsMTAgQEAKIGdvdGxhbmRtYXJrKHdjaGFyX3QgKmxhbmRtYXJrKQogewogICAgIGludCBvazsKLSAgICBQeV9zc2l6ZV90IG47CisgICAgUHlfc3NpemVfdCBuID0gd2Nzbmxlbl9zKHByZWZpeCwgTUFYUEFUSExFTik7CiAKLSAgICBuID0gd2NzbGVuKHByZWZpeCk7CiAgICAgam9pbihwcmVmaXgsIGxhbmRtYXJrKTsKLSAgICBvayA9IGlzbW9kdWxlKHByZWZpeCk7CisgICAgb2sgPSBpc21vZHVsZShwcmVmaXgsIEZBTFNFKTsKICAgICBwcmVmaXhbbl0gPSAnXDAnOwogICAgIHJldHVybiBvazsKIH0KQEAgLTE5Niw3ICsyMDUsNyBAQAogc2VhcmNoX2Zvcl9wcmVmaXgod2NoYXJfdCAqYXJndjBfcGF0aCwgd2NoYXJfdCAqbGFuZG1hcmspCiB7CiAgICAgLyogU2VhcmNoIGZyb20gYXJndjBfcGF0aCwgdW50aWwgbGFuZG1hcmsgaXMgZm91bmQgKi8KLSAgICB3Y3NjcHkocHJlZml4LCBhcmd2MF9wYXRoKTsKKyAgICB3Y3NjcHlfcyhwcmVmaXgsIE1BWFBBVEhMRU4gKyAxLCBhcmd2MF9wYXRoKTsKICAgICBkbyB7CiAgICAgICAgIGlmIChnb3RsYW5kbWFyayhsYW5kbWFyaykpCiAgICAgICAgICAgICByZXR1cm4gMTsKQEAgLTIzNiw3ICsyNDUsNyBAQAogICAgIFdDSEFSICpkYXRhQnVmID0gTlVMTDsKICAgICBzdGF0aWMgY29uc3QgV0NIQVIga2V5UHJlZml4W10gPSBMIlNvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXCI7CiAgICAgc3RhdGljIGNvbnN0IFdDSEFSIGtleVN1ZmZpeFtdID0gTCJcXFB5dGhvblBhdGgiOwotICAgIHNpemVfdCB2ZXJzaW9uTGVuOworICAgIHNpemVfdCB2ZXJzaW9uTGVuLCBrZXlCdWZMZW47CiAgICAgRFdPUkQgaW5kZXg7CiAgICAgV0NIQVIgKmtleUJ1ZiA9IE5VTEw7CiAgICAgV0NIQVIgKmtleUJ1ZlB0cjsKQEAgLTI0NSwxMiArMjU0LDEzIEBACiAgICAgLyogVHJpZWQgdG8gdXNlIHN5c2dldCgid2ludmVyIikgYnV0IGhlcmUgaXMgdG9vIGVhcmx5IDotKCAqLwogICAgIHZlcnNpb25MZW4gPSBzdHJsZW4oUHlXaW5fRExMVmVyc2lvblN0cmluZyk7CiAgICAgLyogU3BhY2UgZm9yIGFsbCB0aGUgY2hhcnMsIHBsdXMgb25lIFwwICovCi0gICAga2V5QnVmID0ga2V5QnVmUHRyID0gUHlNZW1fUmF3TWFsbG9jKHNpemVvZihrZXlQcmVmaXgpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFdDSEFSKSoodmVyc2lvbkxlbi0xKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrZXlTdWZmaXgpKTsKKyAgICBrZXlCdWZMZW4gPSBzaXplb2Yoa2V5UHJlZml4KSArCisgICAgICAgICAgICAgICAgc2l6ZW9mKFdDSEFSKSoodmVyc2lvbkxlbi0xKSArCisgICAgICAgICAgICAgICAgc2l6ZW9mKGtleVN1ZmZpeCk7CisgICAga2V5QnVmID0ga2V5QnVmUHRyID0gUHlNZW1fUmF3TWFsbG9jKGtleUJ1Zkxlbik7CiAgICAgaWYgKGtleUJ1Zj09TlVMTCkgZ290byBkb25lOwogCi0gICAgbWVtY3B5KGtleUJ1ZlB0ciwga2V5UHJlZml4LCBzaXplb2Yoa2V5UHJlZml4KS1zaXplb2YoV0NIQVIpKTsKKyAgICBtZW1jcHlfcyhrZXlCdWZQdHIsIGtleUJ1Zkxlbiwga2V5UHJlZml4LCBzaXplb2Yoa2V5UHJlZml4KS1zaXplb2YoV0NIQVIpKTsKICAgICBrZXlCdWZQdHIgKz0gUHlfQVJSQVlfTEVOR1RIKGtleVByZWZpeCkgLSAxOwogICAgIG1ic3Rvd2NzKGtleUJ1ZlB0ciwgUHlXaW5fRExMVmVyc2lvblN0cmluZywgdmVyc2lvbkxlbik7CiAgICAga2V5QnVmUHRyICs9IHZlcnNpb25MZW47CkBAIC0zMTEsNyArMzIxLDYgQEAKICAgICBkYXRhQnVmID0gUHlNZW1fUmF3TWFsbG9jKChkYXRhU2l6ZSsxKSAqIHNpemVvZihXQ0hBUikpOwogICAgIGlmIChkYXRhQnVmKSB7CiAgICAgICAgIFdDSEFSICpzekN1ciA9IGRhdGFCdWY7Ci0gICAgICAgIERXT1JEIHJlcWRTaXplID0gZGF0YVNpemU7CiAgICAgICAgIC8qIENvcHkgb3VyIGNvbGxlY3RlZCBzdHJpbmdzICovCiAgICAgICAgIGZvciAoaW5kZXg9MDtpbmRleDxudW1LZXlzO2luZGV4KyspIHsKICAgICAgICAgICAgIGlmIChpbmRleCA+IDApIHsKQEAgLTMzOSw2ICszNDgsMTAgQEAKICAgICAgICAgICAgICovCiAgICAgICAgICAgICByYyA9IFJlZ1F1ZXJ5VmFsdWVFeFcobmV3S2V5LCBOVUxMLCAwLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMUEJZVEUpc3pDdXIsICZkYXRhU2l6ZSk7CisgICAgICAgICAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykgeworICAgICAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUoZGF0YUJ1Zik7CisgICAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIC8qIEFuZCBzZXQgdGhlIHJlc3VsdCAtIGNhbGxlciBtdXN0IGZyZWUgKi8KICAgICAgICAgcmV0dmFsID0gZGF0YUJ1ZjsKQEAgLTQ1MSwxMSArNDY0LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wYnVmZmVyLCBNQVhQQVRITEVOICogMik7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZGVjb2RlZCk7CiAgICAgICAgICAgICBpZiAoayA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgd2NoYXJfdCAqIHRvayA9IHdjc3Rvayh0bXBidWZmZXIsIEwiIFx0XHJcbiIpOworICAgICAgICAgICAgICAgIHdjaGFyX3QgKiBjb250ZXh0ID0gTlVMTDsKKyAgICAgICAgICAgICAgICB3Y2hhcl90ICogdG9rID0gd2NzdG9rX3ModG1wYnVmZmVyLCBMIiBcdFxyXG4iLCAmY29udGV4dCk7CiAgICAgICAgICAgICAgICAgaWYgKCh0b2sgIT0gTlVMTCkgJiYgIXdjc2NtcCh0b2ssIGtleSkpIHsKLSAgICAgICAgICAgICAgICAgICAgdG9rID0gd2NzdG9rKE5VTEwsIEwiIFx0Iik7CisgICAgICAgICAgICAgICAgICAgIHRvayA9IHdjc3Rva19zKE5VTEwsIEwiIFx0IiwgJmNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgICBpZiAoKHRvayAhPSBOVUxMKSAmJiAhd2NzY21wKHRvaywgTCI9IikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvayA9IHdjc3RvayhOVUxMLCBMIlxyXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvayA9IHdjc3Rva19zKE5VTEwsIEwiXHJcbiIsICZjb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b2sgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjc25jcHkodmFsdWUsIHRvaywgTUFYUEFUSExFTik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMTsKQEAgLTQ4Myw3ICs0OTcsNyBAQAogICAgIHdjaGFyX3QgKm1hY2hpbmVwYXRoID0gTlVMTDsKICAgICB3Y2hhcl90ICp1c2VycGF0aCA9IE5VTEw7CiAgICAgd2NoYXJfdCB6aXBfcGF0aFtNQVhQQVRITEVOKzFdOwotICAgIHNpemVfdCBsZW47CisgICAgaW50IGFwcGxvY2FsID0gMDsKIAogICAgIGlmICghUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnKSB7CiAgICAgICAgIGVudnBhdGggPSBfd2dldGVudihMIlBZVEhPTlBBVEgiKTsKQEAgLTUwMSw3ICs1MTUsNyBAQAogCiAgICAgZ2V0X3Byb2dwYXRoKCk7CiAgICAgLyogcHJvZ3BhdGggZ3VhcmFudGVlZCBcMCB0ZXJtaW5hdGVkIGluIE1BWFBBVEgrMSBieXRlcy4gKi8KLSAgICB3Y3NjcHkoYXJndjBfcGF0aCwgcHJvZ3BhdGgpOworICAgIHdjc2NweV9zKGFyZ3YwX3BhdGgsIE1BWFBBVEhMRU4rMSwgcHJvZ3BhdGgpOwogICAgIHJlZHVjZShhcmd2MF9wYXRoKTsKIAogICAgIC8qIFNlYXJjaCBmb3IgYW4gZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbiBmaWxlLCBmaXJzdCBpbiB0aGUKQEAgLTUxMCwyNyArNTI0LDM5IEBACiAgICAgKi8KIAogICAgIHsKKyAgICAgICAgd2NoYXJfdCBlbnZidWZmZXJbTUFYUEFUSExFTisxXTsKICAgICAgICAgd2NoYXJfdCB0bXBidWZmZXJbTUFYUEFUSExFTisxXTsKLSAgICAgICAgd2NoYXJfdCAqZW52X2NmZyA9IEwicHl2ZW52LmNmZyI7CisgICAgICAgIGNvbnN0IHdjaGFyX3QgKmVudl9jZmcgPSBMInB5dmVudi5jZmciOwogICAgICAgICBGSUxFICogZW52X2ZpbGUgPSBOVUxMOwogCi0gICAgICAgIHdjc2NweSh0bXBidWZmZXIsIGFyZ3YwX3BhdGgpOwotICAgICAgICBqb2luKHRtcGJ1ZmZlciwgZW52X2NmZyk7Ci0gICAgICAgIGVudl9maWxlID0gX1B5X3dmb3Blbih0bXBidWZmZXIsIEwiciIpOworICAgICAgICB3Y3NjcHlfcyhlbnZidWZmZXIsIE1BWFBBVEhMRU4rMSwgYXJndjBfcGF0aCk7CisgICAgICAgIGpvaW4oZW52YnVmZmVyLCBlbnZfY2ZnKTsKKyAgICAgICAgZW52X2ZpbGUgPSBfUHlfd2ZvcGVuKGVudmJ1ZmZlciwgTCJyIik7CiAgICAgICAgIGlmIChlbnZfZmlsZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBlcnJubyA9IDA7Ci0gICAgICAgICAgICByZWR1Y2UodG1wYnVmZmVyKTsKLSAgICAgICAgICAgIHJlZHVjZSh0bXBidWZmZXIpOwotICAgICAgICAgICAgam9pbih0bXBidWZmZXIsIGVudl9jZmcpOwotICAgICAgICAgICAgZW52X2ZpbGUgPSBfUHlfd2ZvcGVuKHRtcGJ1ZmZlciwgTCJyIik7CisgICAgICAgICAgICByZWR1Y2UoZW52YnVmZmVyKTsKKyAgICAgICAgICAgIHJlZHVjZShlbnZidWZmZXIpOworICAgICAgICAgICAgam9pbihlbnZidWZmZXIsIGVudl9jZmcpOworICAgICAgICAgICAgZW52X2ZpbGUgPSBfUHlfd2ZvcGVuKGVudmJ1ZmZlciwgTCJyIik7CiAgICAgICAgICAgICBpZiAoZW52X2ZpbGUgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGVycm5vID0gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoZW52X2ZpbGUgIT0gTlVMTCkgeworICAgICAgICAgICAgLyogTG9vayBmb3IgYW4gJ2FwcGxvY2FsJyB2YXJpYWJsZSBhbmQsIGlmIHRydWUsIGlnbm9yZSBhbGwgcmVnaXN0cnkKKyAgICAgICAgICAgICAqIGtleXMgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlcywgYnV0IHJldGFpbiB0aGUgZGVmYXVsdCBwYXRocworICAgICAgICAgICAgICogKERMTHMsIExpYikgYW5kIHRoZSB6aXAgZmlsZS4gU2V0dGluZyBweXRob25ob21lIGhlcmUgc3VwcHJlc3NlcworICAgICAgICAgICAgICogdGhlIHNlYXJjaCBmb3IgTEFORE1BUksgYmVsb3cgYW5kIG92ZXJyaWRlcyAlUFlUSE9OSE9NRSUuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChmaW5kX2Vudl9jb25maWdfdmFsdWUoZW52X2ZpbGUsIEwiYXBwbG9jYWwiLCB0bXBidWZmZXIpICYmCisgICAgICAgICAgICAgICAgKGFwcGxvY2FsID0gKHdjc2ljbXAodG1wYnVmZmVyLCBMInRydWUiKSA9PSAwKSkpIHsKKyAgICAgICAgICAgICAgICBlbnZwYXRoID0gTlVMTDsKKyAgICAgICAgICAgICAgICBweXRob25ob21lID0gYXJndjBfcGF0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgLyogTG9vayBmb3IgYSAnaG9tZScgdmFyaWFibGUgYW5kIHNldCBhcmd2MF9wYXRoIHRvIGl0LCBpZiBmb3VuZCAqLwogICAgICAgICAgICAgaWYgKGZpbmRfZW52X2NvbmZpZ192YWx1ZShlbnZfZmlsZSwgTCJob21lIiwgdG1wYnVmZmVyKSkgewotICAgICAgICAgICAgICAgIHdjc2NweShhcmd2MF9wYXRoLCB0bXBidWZmZXIpOworICAgICAgICAgICAgICAgIHdjc2NweV9zKGFyZ3YwX3BhdGgsIE1BWFBBVEhMRU4rMSwgdG1wYnVmZmVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZjbG9zZShlbnZfZmlsZSk7CiAgICAgICAgICAgICBlbnZfZmlsZSA9IE5VTEw7CkBAIC01NDQsMzMgKzU3MCwzMCBAQAogICAgICAgICAgICAgcHl0aG9uaG9tZSA9IE5VTEw7CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgd2NzbmNweShwcmVmaXgsIHB5dGhvbmhvbWUsIE1BWFBBVEhMRU4pOworICAgICAgICB3Y3NjcHlfcyhwcmVmaXgsIE1BWFBBVEhMRU4rMSwgcHl0aG9uaG9tZSk7CiAKICAgICBpZiAoZW52cGF0aCAmJiAqZW52cGF0aCA9PSAnXDAnKQogICAgICAgICBlbnZwYXRoID0gTlVMTDsKIAogCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIC8qIENhbGN1bGF0ZSB6aXAgYXJjaGl2ZSBwYXRoICovCi0gICAgaWYgKGRsbHBhdGhbMF0pICAgICAgICAgICAgIC8qIHVzZSBuYW1lIG9mIHB5dGhvbiBETEwgKi8KLSAgICAgICAgd2NzbmNweSh6aXBfcGF0aCwgZGxscGF0aCwgTUFYUEFUSExFTik7Ci0gICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgIC8qIHVzZSBuYW1lIG9mIGV4ZWN1dGFibGUgcHJvZ3JhbSAqLwotICAgICAgICB3Y3NuY3B5KHppcF9wYXRoLCBwcm9ncGF0aCwgTUFYUEFUSExFTik7Ci0gICAgemlwX3BhdGhbTUFYUEFUSExFTl0gPSAnXDAnOwotICAgIGxlbiA9IHdjc2xlbih6aXBfcGF0aCk7Ci0gICAgaWYgKGxlbiA+IDQpIHsKLSAgICAgICAgemlwX3BhdGhbbGVuLTNdID0gJ3onOyAgICAgICAgICAvKiBjaGFuZ2UgZW5kaW5nIHRvICJ6aXAiICovCi0gICAgICAgIHppcF9wYXRoW2xlbi0yXSA9ICdpJzsKLSAgICAgICAgemlwX3BhdGhbbGVuLTFdID0gJ3AnOwotICAgIH0KKyAgICAvKiBDYWxjdWxhdGUgemlwIGFyY2hpdmUgcGF0aCBmcm9tIERMTCBvciBleGUgcGF0aCAqLworICAgIGlmICh3Y3NjcHlfcyh6aXBfcGF0aCwgTUFYUEFUSExFTisxLCBkbGxwYXRoWzBdID8gZGxscGF0aCA6IHByb2dwYXRoKSkKKyAgICAgICAgLyogZXhjZWVkZWQgYnVmZmVyIGxlbmd0aCAtIGlnbm9yZSB6aXBfcGF0aCAqLworICAgICAgICB6aXBfcGF0aFswXSA9ICdcMCc7CiAgICAgZWxzZSB7Ci0gICAgICAgIHppcF9wYXRoWzBdID0gMDsKKyAgICAgICAgd2NoYXJfdCAqZG90ID0gd2NzcmNocih6aXBfcGF0aCwgJy4nKTsKKyAgICAgICAgaWYgKCFkb3QgfHwgd2NzY3B5X3MoZG90LCBNQVhQQVRITEVOKzEgLSAoZG90IC0gemlwX3BhdGgpLCBMIi56aXAiKSkKKyAgICAgICAgICAgIC8qIGV4Y2VlZGVkIGJ1ZmZlciBsZW5ndGggLSBpZ25vcmUgemlwX3BhdGggKi8KKyAgICAgICAgICAgIHppcF9wYXRoWzBdID0gTCdcMCc7CiAgICAgfQogCiAgICAgc2tpcGhvbWUgPSBweXRob25ob21lPT1OVUxMID8gMCA6IDE7CiAjaWZkZWYgUHlfRU5BQkxFX1NIQVJFRAotICAgIG1hY2hpbmVwYXRoID0gZ2V0cHl0aG9ucmVncGF0aChIS0VZX0xPQ0FMX01BQ0hJTkUsIHNraXBob21lKTsKLSAgICB1c2VycGF0aCA9IGdldHB5dGhvbnJlZ3BhdGgoSEtFWV9DVVJSRU5UX1VTRVIsIHNraXBob21lKTsKKyAgICBpZiAoIWFwcGxvY2FsKSB7CisgICAgICAgIG1hY2hpbmVwYXRoID0gZ2V0cHl0aG9ucmVncGF0aChIS0VZX0xPQ0FMX01BQ0hJTkUsIHNraXBob21lKTsKKyAgICAgICAgdXNlcnBhdGggPSBnZXRweXRob25yZWdwYXRoKEhLRVlfQ1VSUkVOVF9VU0VSLCBza2lwaG9tZSk7CisgICAgfQogI2VuZGlmCiAgICAgLyogV2Ugb25seSB1c2UgdGhlIGRlZmF1bHQgcmVsYXRpdmUgUFlUSE9OUEFUSCBpZiB3ZSBoYXZlbnQKICAgICAgICBhbnl0aGluZyBiZXR0ZXIgdG8gdXNlISAqLwpAQCAtNTg5LDYgKzYxMiw3IEBACiAgICAgICAgRXh0cmEgcnVsZXM6CiAgICAgICAgLSBJZiBQWVRIT05IT01FIGlzIHNldCAoaW4gYW55IHdheSkgaXRlbSAoMykgaXMgaWdub3JlZC4KICAgICAgICAtIElmIHJlZ2lzdHJ5IHZhbHVlcyBhcmUgdXNlZCwgKDQpIGFuZCAoNSkgYXJlIGlnbm9yZWQuCisgICAgICAgLSBJZiBhcHBsb2NhbCBpcyBzZXQsICgxKSwgKDMpLCBhbmQgcmVnaXN0cnkgdmFsdWVzIGFyZSBpZ25vcmVkCiAgICAgKi8KIAogICAgIC8qIENhbGN1bGF0ZSBzaXplIG9mIHJldHVybiBidWZmZXIgKi8KQEAgLTYwNiw5ICs2MzAsOSBAQAogICAgIGJ1ZnN6ICs9IHdjc2xlbihQWVRIT05QQVRIKSArIDE7CiAgICAgYnVmc3ogKz0gd2NzbGVuKGFyZ3YwX3BhdGgpICsgMTsKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKHVzZXJwYXRoKQorICAgIGlmICghYXBwbG9jYWwgJiYgdXNlcnBhdGgpCiAgICAgICAgIGJ1ZnN6ICs9IHdjc2xlbih1c2VycGF0aCkgKyAxOwotICAgIGlmIChtYWNoaW5lcGF0aCkKKyAgICBpZiAoIWFwcGxvY2FsICYmIG1hY2hpbmVwYXRoKQogICAgICAgICBidWZzeiArPSB3Y3NsZW4obWFjaGluZXBhdGgpICsgMTsKICAgICBidWZzeiArPSB3Y3NsZW4oemlwX3BhdGgpICsgMTsKICNlbmRpZgpAQCAtNjM1LDM4ICs2NTksNDUgQEAKICAgICB9CiAKICAgICBpZiAoZW52cGF0aCkgewotICAgICAgICB3Y3NjcHkoYnVmLCBlbnZwYXRoKTsKKyAgICAgICAgaWYgKHdjc2NweV9zKGJ1ZiwgYnVmc3ogLSAoYnVmIC0gbW9kdWxlX3NlYXJjaF9wYXRoKSwgZW52cGF0aCkpCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGNhbGN1bGF0ZV9wYXRoKCkiKTsKICAgICAgICAgYnVmID0gd2NzY2hyKGJ1ZiwgTCdcMCcpOwogICAgICAgICAqYnVmKysgPSBERUxJTTsKICAgICB9CiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmICh6aXBfcGF0aFswXSkgewotICAgICAgICB3Y3NjcHkoYnVmLCB6aXBfcGF0aCk7CisgICAgICAgIGlmICh3Y3NjcHlfcyhidWYsIGJ1ZnN6IC0gKGJ1ZiAtIG1vZHVsZV9zZWFyY2hfcGF0aCksIHppcF9wYXRoKSkKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3MgY2FsY3VsYXRlX3BhdGgoKSIpOwogICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CiAgICAgICAgICpidWYrKyA9IERFTElNOwogICAgIH0KICAgICBpZiAodXNlcnBhdGgpIHsKLSAgICAgICAgd2NzY3B5KGJ1ZiwgdXNlcnBhdGgpOworICAgICAgICBpZiAod2NzY3B5X3MoYnVmLCBidWZzeiAtIChidWYgLSBtb2R1bGVfc2VhcmNoX3BhdGgpLCB1c2VycGF0aCkpCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGNhbGN1bGF0ZV9wYXRoKCkiKTsKICAgICAgICAgYnVmID0gd2NzY2hyKGJ1ZiwgTCdcMCcpOwogICAgICAgICAqYnVmKysgPSBERUxJTTsKICAgICAgICAgUHlNZW1fUmF3RnJlZSh1c2VycGF0aCk7CiAgICAgfQogICAgIGlmIChtYWNoaW5lcGF0aCkgewotICAgICAgICB3Y3NjcHkoYnVmLCBtYWNoaW5lcGF0aCk7CisgICAgICAgIGlmICh3Y3NjcHlfcyhidWYsIGJ1ZnN6IC0gKGJ1ZiAtIG1vZHVsZV9zZWFyY2hfcGF0aCksIG1hY2hpbmVwYXRoKSkKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3MgY2FsY3VsYXRlX3BhdGgoKSIpOwogICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CiAgICAgICAgICpidWYrKyA9IERFTElNOwogICAgICAgICBQeU1lbV9SYXdGcmVlKG1hY2hpbmVwYXRoKTsKICAgICB9CiAgICAgaWYgKHB5dGhvbmhvbWUgPT0gTlVMTCkgewogICAgICAgICBpZiAoIXNraXBkZWZhdWx0KSB7Ci0gICAgICAgICAgICB3Y3NjcHkoYnVmLCBQWVRIT05QQVRIKTsKKyAgICAgICAgICAgIGlmICh3Y3NjcHlfcyhidWYsIGJ1ZnN6IC0gKGJ1ZiAtIG1vZHVsZV9zZWFyY2hfcGF0aCksIFBZVEhPTlBBVEgpKQorICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3MgY2FsY3VsYXRlX3BhdGgoKSIpOwogICAgICAgICAgICAgYnVmID0gd2NzY2hyKGJ1ZiwgTCdcMCcpOworICAgICAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgICAgIH0KICAgICB9CiAjZWxzZQogICAgIGlmIChweXRob25ob21lID09IE5VTEwpIHsKICAgICAgICAgd2NzY3B5KGJ1ZiwgUFlUSE9OUEFUSCk7CiAgICAgICAgIGJ1ZiA9IHdjc2NocihidWYsIEwnXDAnKTsKKyAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgfQogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICAgICBlbHNlIHsKQEAgLTY4MCwyNSArNzExLDI2IEBACiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbiA9IHEtcDsKICAgICAgICAgICAgIGlmIChwWzBdID09ICcuJyAmJiBpc19zZXAocFsxXSkpIHsKLSAgICAgICAgICAgICAgICB3Y3NjcHkoYnVmLCBweXRob25ob21lKTsKKyAgICAgICAgICAgICAgICBpZiAod2NzY3B5X3MoYnVmLCBidWZzeiAtIChidWYgLSBtb2R1bGVfc2VhcmNoX3BhdGgpLCBweXRob25ob21lKSkKKyAgICAgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBjYWxjdWxhdGVfcGF0aCgpIik7CiAgICAgICAgICAgICAgICAgYnVmID0gd2NzY2hyKGJ1ZiwgTCdcMCcpOwogICAgICAgICAgICAgICAgIHArKzsKICAgICAgICAgICAgICAgICBuLS07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB3Y3NuY3B5KGJ1ZiwgcCwgbik7CiAgICAgICAgICAgICBidWYgKz0gbjsKKyAgICAgICAgICAgICpidWYrKyA9IERFTElNOwogICAgICAgICAgICAgaWYgKHEgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICpidWYrKyA9IERFTElNOwogICAgICAgICAgICAgcCA9IHErMTsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoYXJndjBfcGF0aCkgewotICAgICAgICAqYnVmKysgPSBERUxJTTsKICAgICAgICAgd2NzY3B5KGJ1ZiwgYXJndjBfcGF0aCk7CiAgICAgICAgIGJ1ZiA9IHdjc2NocihidWYsIEwnXDAnKTsKKyAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgfQotICAgICpidWYgPSBMJ1wwJzsKKyAgICAqKGJ1ZiAtIDEpID0gTCdcMCc7CiAgICAgLyogTm93IHRvIHB1bGwgb25lIGxhc3QgaGFjay90cmljay4gIElmIHN5cy5wcmVmaXggaXMKICAgICAgICBlbXB0eSwgdGhlbiB0cnkgYW5kIGZpbmQgaXQgc29tZXdoZXJlIG9uIHRoZSBwYXRocwogICAgICAgIHdlIGNhbGN1bGF0ZWQuICBXZSBzY2FuIGJhY2t3YXJkcywgYXMgb3VyIGdlbmVyYWwgcG9saWN5CmRpZmYgLS1naXQgYS9QQy9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyLmMgYi9QQy9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDYzNDcxMAotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIuYwpAQCAtMCwwICsxLDIyIEBACisjaWZkZWYgX01TQ19WRVIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaWYgX01TQ19WRVIgPj0gMTkwMAorLyogcHljb25maWcuaCB1c2VzIHRoaXMgZnVuY3Rpb24gaW4gdGhlIF9QeV9CRUdJTi9FTkRfU1VQUFJFU1NfSVBICisgKiBtYWNyb3MuIEl0IGRvZXMgbm90IG5lZWQgdG8gYmUgZGVmaW5lZCB3aGVuIGJ1aWxkaW5nIHVzaW5nIE1TVkMKKyAqIGVhcmxpZXIgdGhhbiAxNC4wIChfTVNDX1ZFUiA9PSAxOTAwKS4KKyAqLworCitzdGF0aWMgdm9pZCBfX2NkZWNsIF9zaWxlbnRfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlcigKKyAgICB3Y2hhcl90IGNvbnN0KiBleHByZXNzaW9uLAorICAgIHdjaGFyX3QgY29uc3QqIGZ1bmN0aW9uLAorICAgIHdjaGFyX3QgY29uc3QqIGZpbGUsCisgICAgdW5zaWduZWQgaW50IGxpbmUsCisgICAgdWludHB0cl90IHBSZXNlcnZlZCkgeyB9CisKK19pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyIF9QeV9zaWxlbnRfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlciA9IF9zaWxlbnRfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlcjsKKworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvUEMvbGF1bmNoZXIuYyBiL1BDL2xhdW5jaGVyLmMKaW5kZXggYmJiMjhkYS4uMzZlZGMzMiAxMDA2NDQKLS0tIGEvUEMvbGF1bmNoZXIuYworKysgYi9QQy9sYXVuY2hlci5jCkBAIC04NywxNiArODcsMTYgQEAKICAgICBpZiAocmMgPT0gMCkgeyAgLyogYSBXaW5kb3dzIGVycm9yICovCiAgICAgICAgIHdpbmVycm9yKEdldExhc3RFcnJvcigpLCB3aW5fbWVzc2FnZSwgTVNHU0laRSk7CiAgICAgICAgIGlmIChsZW4gPj0gMCkgewotICAgICAgICAgICAgX3Nud3ByaW50Zl9zKCZtZXNzYWdlW2xlbl0sIE1TR1NJWkUgLSBsZW4sIF9UUlVOQ0FURSwgTCI6ICVzIiwKKyAgICAgICAgICAgIF9zbndwcmludGZfcygmbWVzc2FnZVtsZW5dLCBNU0dTSVpFIC0gbGVuLCBfVFJVTkNBVEUsIEwiOiAlbHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgIHdpbl9tZXNzYWdlKTsKICAgICAgICAgfQogICAgIH0KIAogI2lmICFkZWZpbmVkKF9XSU5ET1dTKQotICAgIGZ3cHJpbnRmKHN0ZGVyciwgTCIlc1xuIiwgbWVzc2FnZSk7CisgICAgZndwcmludGYoc3RkZXJyLCBMIiVsc1xuIiwgbWVzc2FnZSk7CiAjZWxzZQogICAgIE1lc3NhZ2VCb3goTlVMTCwgbWVzc2FnZSwgVEVYVCgiUHl0aG9uIExhdW5jaGVyIGlzIHNvcnJ5IHRvIHNheSAuLi4iKSwKLSAgICAgICAgICAgICAgIE1CX09LKTsgCisgICAgICAgICAgICAgICBNQl9PSyk7CiAjZW5kaWYKICAgICBFeGl0UHJvY2VzcyhyYyk7CiB9CkBAIC0xNTcsMTUgKzE1NywyMyBAQAogCiBzdGF0aWMgc2l6ZV90IG51bV9pbnN0YWxsZWRfcHl0aG9ucyA9IDA7CiAKLS8qIHRvIGhvbGQgU09GVFdBUkVcUHl0aG9uXFB5dGhvbkNvcmVcWC5ZXEluc3RhbGxQYXRoICovCisvKgorICogVG8gaG9sZCBTT0ZUV0FSRVxQeXRob25cUHl0aG9uQ29yZVxYLlkuLi5cSW5zdGFsbFBhdGgKKyAqIFRoZSB2ZXJzaW9uIG5hbWUgY2FuIGJlIGxvbmdlciB0aGFuIE1BWF9WRVJTSU9OX1NJWkUsIGJ1dCB3aWxsIGJlCisgKiB0cnVuY2F0ZWQgdG8ganVzdCBYLlkgZm9yIGNvbXBhcmlzb25zLgorICovCiAjZGVmaW5lIElQX0JBU0VfU0laRSA0MAotI2RlZmluZSBJUF9TSVpFIChJUF9CQVNFX1NJWkUgKyBNQVhfVkVSU0lPTl9TSVpFKQorI2RlZmluZSBJUF9WRVJTSU9OX1NJWkUgOAorI2RlZmluZSBJUF9TSVpFIChJUF9CQVNFX1NJWkUgKyBJUF9WRVJTSU9OX1NJWkUpCiAjZGVmaW5lIENPUkVfUEFUSCBMIlNPRlRXQVJFXFxQeXRob25cXFB5dGhvbkNvcmUiCiAKIHN0YXRpYyB3Y2hhcl90ICogbG9jYXRpb25fY2hlY2tzW10gPSB7CiAgICAgTCJcXCIsCi0gICAgTCJcXFBDQnVpbGRcXCIsCisgICAgTCJcXFBDQnVpbGRcXHdpbjMyXFwiLAogICAgIEwiXFxQQ0J1aWxkXFxhbWQ2NFxcIiwKKyAgICAvLyBUbyBzdXBwb3J0IGVhcmx5IDMyYml0IHZlcnNpb25zIG9mIFB5dGhvbiB0aGF0IHN0dWNrIHRoZSBidWlsZCBiaW5hcmllcworICAgIC8vIGRpcmVjdGx5IGluIFBDQnVpbGQuLi4KKyAgICBMIlxcUENCdWlsZFxcIiwKICAgICBOVUxMCiB9OwogCkBAIC0xOTYsMzUgKzIwNCwzOCBAQAogICAgIEJPT0wgb2s7CiAgICAgRFdPUkQgdHlwZSwgZGF0YV9zaXplLCBhdHRyczsKICAgICBJTlNUQUxMRURfUFlUSE9OICogaXAsICogcGlwOworICAgIHdjaGFyX3QgaXBfdmVyc2lvbltJUF9WRVJTSU9OX1NJWkVdOwogICAgIHdjaGFyX3QgaXBfcGF0aFtJUF9TSVpFXTsKICAgICB3Y2hhcl90ICogY2hlY2s7CiAgICAgd2NoYXJfdCAqKiBjaGVja3A7CiAgICAgd2NoYXJfdCAqa2V5X25hbWUgPSAocm9vdCA9PSBIS0VZX0xPQ0FMX01BQ0hJTkUpID8gTCJIS0xNIiA6IEwiSEtDVSI7CiAKICAgICBpZiAoc3RhdHVzICE9IEVSUk9SX1NVQ0NFU1MpCi0gICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogdW5hYmxlIHRvIG9wZW4gUHl0aG9uQ29yZSBrZXkgaW4gJXNcbiIsCisgICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogdW5hYmxlIHRvIG9wZW4gUHl0aG9uQ29yZSBrZXkgaW4gJWxzXG4iLAogICAgICAgICAgICAgICBrZXlfbmFtZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlwID0gJmluc3RhbGxlZF9weXRob25zW251bV9pbnN0YWxsZWRfcHl0aG9uc107CiAgICAgICAgIGZvciAoaSA9IDA7IG51bV9pbnN0YWxsZWRfcHl0aG9ucyA8IE1BWF9JTlNUQUxMRURfUFlUSE9OUzsgaSsrKSB7Ci0gICAgICAgICAgICBzdGF0dXMgPSBSZWdFbnVtS2V5Vyhjb3JlX3Jvb3QsIGksIGlwLT52ZXJzaW9uLCBNQVhfVkVSU0lPTl9TSVpFKTsKKyAgICAgICAgICAgIHN0YXR1cyA9IFJlZ0VudW1LZXlXKGNvcmVfcm9vdCwgaSwgaXBfdmVyc2lvbiwgSVBfVkVSU0lPTl9TSVpFKTsKICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gRVJST1JfU1VDQ0VTUykgewogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gRVJST1JfTk9fTU9SRV9JVEVNUykgewogICAgICAgICAgICAgICAgICAgICAvKiB1bmV4cGVjdGVkIGVycm9yICovCiAgICAgICAgICAgICAgICAgICAgIHdpbmVycm9yKHN0YXR1cywgbWVzc2FnZSwgTVNHU0laRSk7Ci0gICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiQ2FuJ3QgZW51bWVyYXRlIHJlZ2lzdHJ5IGtleSBmb3IgdmVyc2lvbiAlczogJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT52ZXJzaW9uLCBtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJDYW4ndCBlbnVtZXJhdGUgcmVnaXN0cnkga2V5IGZvciB2ZXJzaW9uICVsczogJWxzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcF92ZXJzaW9uLCBtZXNzYWdlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB3Y3NuY3B5X3MoaXAtPnZlcnNpb24sIE1BWF9WRVJTSU9OX1NJWkUsIGlwX3ZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9WRVJTSU9OX1NJWkUtMSk7CiAgICAgICAgICAgICAgICAgX3Nud3ByaW50Zl9zKGlwX3BhdGgsIElQX1NJWkUsIF9UUlVOQ0FURSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCIlc1xcJXNcXEluc3RhbGxQYXRoIiwgQ09SRV9QQVRILCBpcC0+dmVyc2lvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwiJWxzXFwlbHNcXEluc3RhbGxQYXRoIiwgQ09SRV9QQVRILCBpcF92ZXJzaW9uKTsKICAgICAgICAgICAgICAgICBzdGF0dXMgPSBSZWdPcGVuS2V5RXhXKHJvb3QsIGlwX3BhdGgsIDAsIGZsYWdzLCAmaXBfa2V5KTsKICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9IEVSUk9SX1NVQ0NFU1MpIHsKICAgICAgICAgICAgICAgICAgICAgd2luZXJyb3Ioc3RhdHVzLCBtZXNzYWdlLCBNU0dTSVpFKTsKICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogJ21lc3NhZ2UnIGFscmVhZHkgaGFzIGEgdHJhaWxpbmcgXG4KLSAgICAgICAgICAgICAgICAgICAgZGVidWcoTCIlc1xcJXM6ICVzIiwga2V5X25hbWUsIGlwX3BhdGgsIG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIiVsc1xcJWxzOiAlbHMiLCBrZXlfbmFtZSwgaXBfcGF0aCwgbWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkYXRhX3NpemUgPSBzaXplb2YoaXAtPmV4ZWN1dGFibGUpIC0gMTsKQEAgLTIzMyw3ICsyNDQsNyBAQAogICAgICAgICAgICAgICAgIFJlZ0Nsb3NlS2V5KGlwX2tleSk7CiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBFUlJPUl9TVUNDRVNTKSB7CiAgICAgICAgICAgICAgICAgICAgIHdpbmVycm9yKHN0YXR1cywgbWVzc2FnZSwgTVNHU0laRSk7Ci0gICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiJXNcXCVzOiAlc1xuIiwga2V5X25hbWUsIGlwX3BhdGgsIG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIiVsc1xcJWxzOiAlbHNcbiIsIGtleV9uYW1lLCBpcF9wYXRoLCBtZXNzYWdlKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFJFR19TWikgewpAQCAtMjQ2LDI3ICsyNTcsMjcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIF9zbndwcmludGZfcygmaXAtPmV4ZWN1dGFibGVbZGF0YV9zaXplXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfUEFUSCAtIGRhdGFfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfUEFUSCAtIGRhdGFfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMIiVzJXMiLCBjaGVjaywgUFlUSE9OX0VYRUNVVEFCTEUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwiJWxzJWxzIiwgY2hlY2ssIFBZVEhPTl9FWEVDVVRBQkxFKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKGlwLT5leGVjdXRhYmxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRycyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmVycm9yKEdldExhc3RFcnJvcigpLCBtZXNzYWdlLCBNU0dTSVpFKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICVzOiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAlbHM6ICVscyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmV4ZWN1dGFibGUsIG1lc3NhZ2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXR0cnMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICclcycgaXMgYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAnJWxzJyBpcyBhIFwKIGRpcmVjdG9yeVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZSwgYXR0cnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmluZF9leGlzdGluZ19weXRob24oaXAtPmV4ZWN1dGFibGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAlczogYWxyZWFkeSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAlbHM6IGFscmVhZHkgXAogZm91bmRcbiIsIGlwLT5leGVjdXRhYmxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIHRoZSBleGVjdXRhYmxlIHR5cGUuICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2sgPSBHZXRCaW5hcnlUeXBlVyhpcC0+ZXhlY3V0YWJsZSwgJmF0dHJzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9rKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiRmFpbHVyZSBnZXR0aW5nIGJpbmFyeSB0eXBlOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJGYWlsdXJlIGdldHRpbmcgYmluYXJ5IHR5cGU6ICVsc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmV4ZWN1dGFibGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKQEAgLTI3Nyw3ICsyODgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+Yml0cyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpcC0+Yml0cyA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICVzOiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICVsczogXAogaW52YWxpZCBiaW5hcnkgdHlwZTogJVhcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZSwgYXR0cnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0yOTEsNyArMzAyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZVtuICsgMV0gPSBMJ1wiJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZVtuICsgMl0gPSBMJ1wwJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogJXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAlbHMgXAogaXMgYSAlZGJpdCBleGVjdXRhYmxlXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5leGVjdXRhYmxlLCBpcC0+Yml0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK251bV9pbnN0YWxsZWRfcHl0aG9uczsKQEAgLTM0MSw3ICszNTIsNyBAQAogICAgICAgICBsb2NhdGVfcHl0aG9uc19mb3Jfa2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCBLRVlfUkVBRCB8IEtFWV9XT1c2NF82NEtFWSk7CiAgICAgICAgIGxvY2F0ZV9weXRob25zX2Zvcl9rZXkoSEtFWV9MT0NBTF9NQUNISU5FLCBLRVlfUkVBRCB8IEtFWV9XT1c2NF82NEtFWSk7CiAgICAgfQotI2VuZGlmICAgIAorI2VuZGlmCiAgICAgLy8gbm93IGhpdCB0aGUgIm5hdGl2ZSIga2V5IGZvciB0aGlzIHByb2Nlc3MgYml0dGVkbmVzcy4KICAgICBkZWJ1ZyhMImxvY2F0aW5nIFB5dGhvbnMgaW4gbmF0aXZlIHJlZ2lzdHJ5XG4iKTsKICAgICBsb2NhdGVfcHl0aG9uc19mb3Jfa2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCBLRVlfUkVBRCk7CkBAIC0zNzYsNiArMzg3LDMxIEBACiB9CiAKIAorc3RhdGljIHdjaGFyX3QgKgorZmluZF9weXRob25fYnlfdmVudigpCit7CisgICAgc3RhdGljIHdjaGFyX3QgdmVudl9weXRob25bTUFYX1BBVEhdOworICAgIHdjaGFyX3QgKnZpcnR1YWxfZW52ID0gZ2V0X2VudihMIlZJUlRVQUxfRU5WIik7CisgICAgRFdPUkQgYXR0cnM7CisKKyAgICAvKiBDaGVjayBmb3IgVklSVFVBTF9FTlYgZW52aXJvbm1lbnQgdmFyaWFibGUgKi8KKyAgICBpZiAodmlydHVhbF9lbnYgPT0gTlVMTCB8fCB2aXJ0dWFsX2VudlswXSA9PSBMJ1wwJykgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBDaGVjayBmb3IgYSBweXRob24gZXhlY3V0YWJsZSBpbiB0aGUgdmVudiAqLworICAgIGRlYnVnKEwiQ2hlY2tpbmcgZm9yIFB5dGhvbiBleGVjdXRhYmxlIGluIHZpcnR1YWwgZW52ICclbHMnXG4iLCB2aXJ0dWFsX2Vudik7CisgICAgX3Nud3ByaW50Zl9zKHZlbnZfcHl0aG9uLCBNQVhfUEFUSCwgX1RSVU5DQVRFLAorICAgICAgICAgICAgTCIlbHNcXFNjcmlwdHNcXCVscyIsIHZpcnR1YWxfZW52LCBQWVRIT05fRVhFQ1VUQUJMRSk7CisgICAgYXR0cnMgPSBHZXRGaWxlQXR0cmlidXRlc1codmVudl9weXRob24pOworICAgIGlmIChhdHRycyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgeworICAgICAgICBkZWJ1ZyhMIlB5dGhvbiBleGVjdXRhYmxlICVscyBtaXNzaW5nIGZyb20gdmlydHVhbCBlbnZcbiIsIHZlbnZfcHl0aG9uKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHZlbnZfcHl0aG9uOworfQorCiBzdGF0aWMgd2NoYXJfdCBhcHBkYXRhX2luaV9wYXRoW01BWF9QQVRIXTsKIHN0YXRpYyB3Y2hhcl90IGxhdW5jaGVyX2luaV9wYXRoW01BWF9QQVRIXTsKIApAQCAtMzk3LDcgKzQzMyw3IEBACiAgICAgRFdPUkQgc2l6ZTsKIAogICAgIC8qIEZpcnN0LCBzZWFyY2ggdGhlIGVudmlyb25tZW50LiAqLwotICAgIF9zbndwcmludGZfcyhjb25maWd1cmVkX3ZhbHVlLCBNU0dTSVpFLCBfVFJVTkNBVEUsIEwicHlfJXMiLCBrZXkpOworICAgIF9zbndwcmludGZfcyhjb25maWd1cmVkX3ZhbHVlLCBNU0dTSVpFLCBfVFJVTkNBVEUsIEwicHlfJWxzIiwga2V5KTsKICAgICByZXN1bHQgPSBnZXRfZW52KGNvbmZpZ3VyZWRfdmFsdWUpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCAmJiBhcHBkYXRhX2luaV9wYXRoWzBdKSB7CiAgICAgICAgIC8qIE5vdCBpbiBlbnZpcm9ubWVudDogY2hlY2sgbG9jYWwgY29uZmlndXJhdGlvbi4gKi8KQEAgLTQyMCwxMCArNDU2LDEwIEBACiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICBkZWJ1ZyhMImZvdW5kIGNvbmZpZ3VyZWQgdmFsdWUgJyVzPSVzJyBpbiAlc1xuIiwKKyAgICAgICAgZGVidWcoTCJmb3VuZCBjb25maWd1cmVkIHZhbHVlICclbHM9JWxzJyBpbiAlbHNcbiIsCiAgICAgICAgICAgICAgIGtleSwgcmVzdWx0LCBmb3VuZF9pbiA/IGZvdW5kX2luIDogTCIodW5rbm93bikiKTsKICAgICB9IGVsc2UgewotICAgICAgICBkZWJ1ZyhMImZvdW5kIG5vIGNvbmZpZ3VyZWQgdmFsdWUgZm9yICclcydcbiIsIGtleSk7CisgICAgICAgIGRlYnVnKEwiZm91bmQgbm8gY29uZmlndXJlZCB2YWx1ZSBmb3IgJyVscydcbiIsIGtleSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC00NDksOSArNDg1LDkgQEAKICAgICB9CiAgICAgaWYgKCp3YW50ZWRfdmVyKSB7CiAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24od2FudGVkX3Zlcik7Ci0gICAgICAgIGRlYnVnKEwic2VhcmNoIGZvciBQeXRob24gdmVyc2lvbiAnJXMnIGZvdW5kICIsIHdhbnRlZF92ZXIpOworICAgICAgICBkZWJ1ZyhMInNlYXJjaCBmb3IgUHl0aG9uIHZlcnNpb24gJyVscycgZm91bmQgIiwgd2FudGVkX3Zlcik7CiAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIGRlYnVnKEwiJyVzJ1xuIiwgcmVzdWx0LT5leGVjdXRhYmxlKTsKKyAgICAgICAgICAgIGRlYnVnKEwiJyVscydcbiIsIHJlc3VsdC0+ZXhlY3V0YWJsZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBkZWJ1ZyhMIm5vIGludGVycHJldGVyXG4iKTsKICAgICAgICAgfQpAQCAtNDY3LDcgKzUwMyw3IEBACiAgICAgICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKEwiMyIpOwogICAgICAgICBkZWJ1ZyhMInNlYXJjaCBmb3IgZGVmYXVsdCBQeXRob24gZm91bmQgIik7CiAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIGRlYnVnKEwidmVyc2lvbiAlcyBhdCAnJXMnXG4iLAorICAgICAgICAgICAgZGVidWcoTCJ2ZXJzaW9uICVscyBhdCAnJWxzJ1xuIiwKICAgICAgICAgICAgICAgICAgIHJlc3VsdC0+dmVyc2lvbiwgcmVzdWx0LT5leGVjdXRhYmxlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGRlYnVnKEwibm8gaW50ZXJwcmV0ZXJcbiIpOwpAQCAtNTA1LDE5ICs1NDEsMTkgQEAKICAgICBwbGVuID0gR2V0TW9kdWxlRmlsZU5hbWVXKE5VTEwsIHdyYXBwZWRfc2NyaXB0X3BhdGgsIE1BWF9QQVRIKTsKICAgICBwID0gd2NzcmNocih3cmFwcGVkX3NjcmlwdF9wYXRoLCBMJy4nKTsKICAgICBpZiAocCA9PSBOVUxMKSB7Ci0gICAgICAgIGRlYnVnKEwiR2V0TW9kdWxlRmlsZU5hbWVXIHJldHVybmVkIHZhbHVlIGhhcyBubyBleHRlbnNpb246ICVzXG4iLAorICAgICAgICBkZWJ1ZyhMIkdldE1vZHVsZUZpbGVOYW1lVyByZXR1cm5lZCB2YWx1ZSBoYXMgbm8gZXh0ZW5zaW9uOiAlbHNcbiIsCiAgICAgICAgICAgICAgIHdyYXBwZWRfc2NyaXB0X3BhdGgpOwotICAgICAgICBlcnJvcihSQ19OT19TQ1JJUFQsIEwiV3JhcHBlciBuYW1lICclcycgaXMgbm90IHZhbGlkLiIsIHdyYXBwZWRfc2NyaXB0X3BhdGgpOworICAgICAgICBlcnJvcihSQ19OT19TQ1JJUFQsIEwiV3JhcHBlciBuYW1lICclbHMnIGlzIG5vdCB2YWxpZC4iLCB3cmFwcGVkX3NjcmlwdF9wYXRoKTsKICAgICB9CiAKICAgICB3Y3NuY3B5X3MocCwgTUFYX1BBVEggLSAocCAtIHdyYXBwZWRfc2NyaXB0X3BhdGgpICsgMSwgU0NSSVBUX1NVRkZJWCwgX1RSVU5DQVRFKTsKICAgICBhdHRycyA9IEdldEZpbGVBdHRyaWJ1dGVzVyh3cmFwcGVkX3NjcmlwdF9wYXRoKTsKICAgICBpZiAoYXR0cnMgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpIHsKLSAgICAgICAgZGVidWcoTCJGaWxlICclcycgbm9uLWV4aXN0ZW50XG4iLCB3cmFwcGVkX3NjcmlwdF9wYXRoKTsKLSAgICAgICAgZXJyb3IoUkNfTk9fU0NSSVBULCBMIlNjcmlwdCBmaWxlICclcycgaXMgbm90IHByZXNlbnQuIiwgd3JhcHBlZF9zY3JpcHRfcGF0aCk7CisgICAgICAgIGRlYnVnKEwiRmlsZSAnJWxzJyBub24tZXhpc3RlbnRcbiIsIHdyYXBwZWRfc2NyaXB0X3BhdGgpOworICAgICAgICBlcnJvcihSQ19OT19TQ1JJUFQsIEwiU2NyaXB0IGZpbGUgJyVscycgaXMgbm90IHByZXNlbnQuIiwgd3JhcHBlZF9zY3JpcHRfcGF0aCk7CiAgICAgfQogCi0gICAgZGVidWcoTCJVc2luZyB3cmFwcGVkIHNjcmlwdCBmaWxlICclcydcbiIsIHdyYXBwZWRfc2NyaXB0X3BhdGgpOworICAgIGRlYnVnKEwiVXNpbmcgd3JhcHBlZCBzY3JpcHQgZmlsZSAnJWxzJ1xuIiwgd3JhcHBlZF9zY3JpcHRfcGF0aCk7CiB9CiAjZW5kaWYKIApAQCAtNTcxLDcgKzYwNyw3IEBACiAgICAgLy8gd2luZG93LCBvciBmZXRjaGluZyBhIG1lc3NhZ2UpLiAgQXMgdGhpcyBsYXVuY2hlciBkb2Vzbid0IGRvIHRoaXMKICAgICAvLyBkaXJlY3RseSwgdGhhdCBjdXJzb3IgcmVtYWlucyBldmVuIGFmdGVyIHRoZSBjaGlsZCBwcm9jZXNzIGRvZXMgdGhlc2UKICAgICAvLyB0aGluZ3MuICBXZSBhdm9pZCB0aGF0IGJ5IGRvaW5nIGEgc2ltcGxlIHBvc3QrZ2V0IG1lc3NhZ2UuCi0gICAgLy8gU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNzI5MCBhbmQgCisgICAgLy8gU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNzI5MCBhbmQKICAgICAvLyBodHRwczovL2JpdGJ1Y2tldC5vcmcvdmluYXkuc2FqaXAvcHlsYXVuY2hlci9pc3N1ZS8yMC9idXN5LWN1cnNvci1mb3ItYS1sb25nLXRpbWUtd2hlbi1ydW5uaW5nCiAgICAgTVNHIG1zZzsKIApAQCAtNTc5LDcgKzYxNSw3IEBACiAgICAgR2V0TWVzc2FnZSgmbXNnLCAwLCAwLCAwKTsKICNlbmRpZgogCi0gICAgZGVidWcoTCJydW5fY2hpbGQ6IGFib3V0IHRvIHJ1biAnJXMnXG4iLCBjbWRsaW5lKTsKKyAgICBkZWJ1ZyhMInJ1bl9jaGlsZDogYWJvdXQgdG8gcnVuICclbHMnXG4iLCBjbWRsaW5lKTsKICAgICBqb2IgPSBDcmVhdGVKb2JPYmplY3QoTlVMTCwgTlVMTCk7CiAgICAgb2sgPSBRdWVyeUluZm9ybWF0aW9uSm9iT2JqZWN0KGpvYiwgSm9iT2JqZWN0RXh0ZW5kZWRMaW1pdEluZm9ybWF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmZvLCBzaXplb2YoaW5mbyksICZyYyk7CkBAIC02MTEsNyArNjQ3LDcgQEAKICAgICBvayA9IENyZWF0ZVByb2Nlc3NXKE5VTEwsIGNtZGxpbmUsIE5VTEwsIE5VTEwsIFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAwLCBOVUxMLCBOVUxMLCAmc2ksICZwaSk7CiAgICAgaWYgKCFvaykKLSAgICAgICAgZXJyb3IoUkNfQ1JFQVRFX1BST0NFU1MsIEwiVW5hYmxlIHRvIGNyZWF0ZSBwcm9jZXNzIHVzaW5nICclcyciLCBjbWRsaW5lKTsKKyAgICAgICAgZXJyb3IoUkNfQ1JFQVRFX1BST0NFU1MsIEwiVW5hYmxlIHRvIGNyZWF0ZSBwcm9jZXNzIHVzaW5nICclbHMnIiwgY21kbGluZSk7CiAgICAgQXNzaWduUHJvY2Vzc1RvSm9iT2JqZWN0KGpvYiwgcGkuaFByb2Nlc3MpOwogICAgIENsb3NlSGFuZGxlKHBpLmhUaHJlYWQpOwogICAgIFdhaXRGb3JTaW5nbGVPYmplY3RFeChwaS5oUHJvY2VzcywgSU5GSU5JVEUsIEZBTFNFKTsKQEAgLTY0OCwxMSArNjg0LDExIEBACiAgICAgICAgICAgICAgICAgICBjaGlsZF9jb21tYW5kX3NpemUpOwogICAgICAgICBpZiAobm9fc3VmZml4KQogICAgICAgICAgICAgX3Nud3ByaW50Zl9zKGNoaWxkX2NvbW1hbmQsIGNoaWxkX2NvbW1hbmRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZF9jb21tYW5kX3NpemUgLSAxLCBMIiVzICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZF9jb21tYW5kX3NpemUgLSAxLCBMIiVscyAlbHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUsIGNtZGxpbmUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBfc253cHJpbnRmX3MoY2hpbGRfY29tbWFuZCwgY2hpbGRfY29tbWFuZF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX2NvbW1hbmRfc2l6ZSAtIDEsIEwiJXMgJXMgJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX2NvbW1hbmRfc2l6ZSAtIDEsIEwiJWxzICVscyAlbHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUsIHN1ZmZpeCwgY21kbGluZSk7CiAgICAgICAgIHJ1bl9jaGlsZChjaGlsZF9jb21tYW5kKTsKICAgICAgICAgZnJlZShjaGlsZF9jb21tYW5kKTsKQEAgLTc5MSw3ICs4MjcsNyBAQAogYWRkX2NvbW1hbmQod2NoYXJfdCAqIG5hbWUsIHdjaGFyX3QgKiBjbWRsaW5lKQogewogICAgIGlmIChudW1fY29tbWFuZHMgPj0gTUFYX0NPTU1BTkRTKSB7Ci0gICAgICAgIGRlYnVnKEwiY2FuJ3QgYWRkICVzID0gJyVzJzogbm8gcm9vbVxuIiwgbmFtZSwgY21kbGluZSk7CisgICAgICAgIGRlYnVnKEwiY2FuJ3QgYWRkICVscyA9ICclbHMnOiBubyByb29tXG4iLCBuYW1lLCBjbWRsaW5lKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIENPTU1BTkQgKiBjcCA9ICZjb21tYW5kc1tudW1fY29tbWFuZHMrK107CkBAIC04MTMsMTQgKzg0OSwxNCBAQAogICAgIHJlYWQgPSBHZXRQcml2YXRlUHJvZmlsZVN0cmluZ1coTCJjb21tYW5kcyIsIE5VTEwsIE5VTEwsIGtleW5hbWVzLCBNU0dTSVpFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BhdGgpOwogICAgIGlmIChyZWFkID09IE1TR1NJWkUgLSAxKSB7Ci0gICAgICAgIGRlYnVnKEwicmVhZF9jb21tYW5kczogJXM6IG5vdCBlbm91Z2ggc3BhY2UgZm9yIG5hbWVzXG4iLCBjb25maWdfcGF0aCk7CisgICAgICAgIGRlYnVnKEwicmVhZF9jb21tYW5kczogJWxzOiBub3QgZW5vdWdoIHNwYWNlIGZvciBuYW1lc1xuIiwgY29uZmlnX3BhdGgpOwogICAgIH0KICAgICBrZXkgPSBrZXluYW1lczsKICAgICB3aGlsZSAoKmtleSkgewogICAgICAgICByZWFkID0gR2V0UHJpdmF0ZVByb2ZpbGVTdHJpbmdXKEwiY29tbWFuZHMiLCBrZXksIE5VTEwsIHZhbHVlLCBNU0dTSVpFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BhdGgpOwogICAgICAgICBpZiAocmVhZCA9PSBNU0dTSVpFIC0gMSkgewotICAgICAgICAgICAgZGVidWcoTCJyZWFkX2NvbW1hbmRzOiAlczogbm90IGVub3VnaCBzcGFjZSBmb3IgJXNcbiIsCisgICAgICAgICAgICBkZWJ1ZyhMInJlYWRfY29tbWFuZHM6ICVsczogbm90IGVub3VnaCBzcGFjZSBmb3IgJWxzXG4iLAogICAgICAgICAgICAgICAgICAgY29uZmlnX3BhdGgsIGtleSk7CiAgICAgICAgIH0KICAgICAgICAgY21kcCA9IHNraXBfd2hpdGVzcGFjZSh2YWx1ZSk7CkBAIC05MzIsMTAgKzk2OCwxMiBAQAogICovCiBzdGF0aWMgQk9NIEJPTXNbXSA9IHsKICAgICB7IDMsIHsgMHhFRiwgMHhCQiwgMHhCRiB9LCBDUF9VVEY4IH0sICAgICAgICAgICAvKiBVVEYtOCAtIGtlZXAgZmlyc3QgKi8KLSAgICB7IDIsIHsgMHhGRiwgMHhGRSB9LCBDUF9VVEYxNkxFIH0sICAgICAgICAgICAgICAvKiBVVEYtMTZMRSAqLwotICAgIHsgMiwgeyAweEZFLCAweEZGIH0sIENQX1VURjE2QkUgfSwgICAgICAgICAgICAgIC8qIFVURi0xNkJFICovCisgICAgLyogVGVzdCBVVEYtMzJMRSBiZWZvcmUgVVRGLTE2TEUgc2luY2UgVVRGLTE2TEUgQk9NIGlzIGEgcHJlZml4CisgICAgICogb2YgVVRGLTMyTEUgQk9NLiAqLwogICAgIHsgNCwgeyAweEZGLCAweEZFLCAweDAwLCAweDAwIH0sIENQX1VURjMyTEUgfSwgIC8qIFVURi0zMkxFICovCiAgICAgeyA0LCB7IDB4MDAsIDB4MDAsIDB4RkUsIDB4RkYgfSwgQ1BfVVRGMzJCRSB9LCAgLyogVVRGLTMyQkUgKi8KKyAgICB7IDIsIHsgMHhGRiwgMHhGRSB9LCBDUF9VVEYxNkxFIH0sICAgICAgICAgICAgICAvKiBVVEYtMTZMRSAqLworICAgIHsgMiwgeyAweEZFLCAweEZGIH0sIENQX1VURjE2QkUgfSwgICAgICAgICAgICAgIC8qIFVURi0xNkJFICovCiAgICAgeyAwIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTEwOTcsNyArMTEzNSw3IEBACiAgICAgICAgIGlmICgocmVhZCA+PSA0KSAmJiAoYnVmZmVyWzNdID09ICdcbicpICYmIChidWZmZXJbMl0gPT0gJ1xyJykpIHsKICAgICAgICAgICAgIGlwID0gZmluZF9ieV9tYWdpYygoYnVmZmVyWzFdIDw8IDggfCBidWZmZXJbMF0pICYgMHhGRkZGKTsKICAgICAgICAgICAgIGlmIChpcCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgZGVidWcoTCJzY3JpcHQgZmlsZSBpcyBjb21waWxlZCBhZ2FpbnN0IFB5dGhvbiAlc1xuIiwKKyAgICAgICAgICAgICAgICBkZWJ1ZyhMInNjcmlwdCBmaWxlIGlzIGNvbXBpbGVkIGFnYWluc3QgUHl0aG9uICVsc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICBpcC0+dmVyc2lvbik7CiAgICAgICAgICAgICAgICAgaW52b2tlX2NoaWxkKGlwLT5leGVjdXRhYmxlLCBOVUxMLCBjbWRsaW5lKTsKICAgICAgICAgICAgIH0KQEAgLTEyMDAsNyArMTIzOCw3IEBACiAgICAgICAgICAgICAgICAgaXNfdmlydCA9IHBhcnNlX3NoZWJhbmcoc2hlYmFuZ19saW5lLCBuY2hhcnMsICZjb21tYW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdWZmaXgsICZzZWFyY2gpOwogICAgICAgICAgICAgICAgIGlmIChjb21tYW5kICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJwYXJzZV9zaGViYW5nOiBmb3VuZCBjb21tYW5kOiAlc1xuIiwgY29tbWFuZCk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwicGFyc2Vfc2hlYmFuZzogZm91bmQgY29tbWFuZDogJWxzXG4iLCBjb21tYW5kKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc192aXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnZva2VfY2hpbGQoY29tbWFuZCwgc3VmZml4LCBjbWRsaW5lKTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjUwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3Y3NuY21wKGNvbW1hbmQsIEwicHl0aG9uIiwgNikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoUkNfQkFEX1ZJUlRVQUxfUEFUSCwgTCJVbmtub3duIHZpcnR1YWwgXAotcGF0aCAnJXMnIiwgY29tbWFuZCk7CitwYXRoICclbHMnIiwgY29tbWFuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kICs9IDY7ICAgLyogc2tpcCBwYXN0ICJweXRob24iICovCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VhcmNoICYmICgoKmNvbW1hbmQgPT0gTCdcMCcpIHx8IGlzc3BhY2UoKmNvbW1hbmQpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvbW1hbmQgaXMgZWxpZ2libGUgZm9yIHBhdGggc2VhcmNoLCBhbmQgdGhlcmUKQEAgLTEyMjAsOSArMTI1OCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJzZWFyY2hpbmcgUEFUSCBmb3IgcHl0aG9uIGV4ZWN1dGFibGVcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZCA9IGZpbmRfb25fcGF0aChQWVRIT05fRVhFQ1VUQUJMRSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJQeXRob24gb24gcGF0aDogJXNcbiIsIGNtZCA/IGNtZC0+dmFsdWUgOiBMIjxub3QgZm91bmQ+Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJQeXRob24gb24gcGF0aDogJWxzXG4iLCBjbWQgPyBjbWQtPnZhbHVlIDogTCI8bm90IGZvdW5kPiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVkIHB5dGhvbiBvbiBQQVRIOiAlc1xuIiwgY21kLT52YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwibG9jYXRlZCBweXRob24gb24gUEFUSDogJWxzXG4iLCBjbWQtPnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52b2tlX2NoaWxkKGNtZC0+dmFsdWUsIHN1ZmZpeCwgY21kbGluZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEV4aXQgaGVyZSwgYXMgd2UgaGF2ZSBmb3VuZCB0aGUgY29tbWFuZCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMjMzLDE0ICsxMjcxLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmNvbW1hbmQgJiYgIXZhbGlkYXRlX3ZlcnNpb24oY29tbWFuZCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoUkNfQkFEX1ZJUlRVQUxfUEFUSCwgTCJJbnZhbGlkIHZlcnNpb24gXAotc3BlY2lmaWNhdGlvbjogJyVzJy5cbkluIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBzY3JpcHQsICdweXRob24nIG5lZWRzIHRvIGJlIFwKK3NwZWNpZmljYXRpb246ICclbHMnLlxuSW4gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHNjcmlwdCwgJ3B5dGhvbicgbmVlZHMgdG8gYmUgXAogZm9sbG93ZWQgYnkgYSB2YWxpZCB2ZXJzaW9uIHNwZWNpZmllci5cblBsZWFzZSBjaGVjayB0aGUgZG9jdW1lbnRhdGlvbi4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9ETyBjb3VsZCBjYWxsIHZhbGlkYXRlX3ZlcnNpb24oY29tbWFuZCkgKi8KICAgICAgICAgICAgICAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbihjb21tYW5kKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpcCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoUkNfTk9fUFlUSE9OLCBMIlJlcXVlc3RlZCBQeXRob24gdmVyc2lvbiBcCi0oJXMpIGlzIG5vdCBpbnN0YWxsZWQiLCBjb21tYW5kKTsKKyglbHMpIGlzIG5vdCBpbnN0YWxsZWQiLCBjb21tYW5kKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludm9rZV9jaGlsZChpcC0+ZXhlY3V0YWJsZSwgc3VmZml4LCBjbWRsaW5lKTsKQEAgLTEzMDEsNiArMTMzOSw3IEBACiB7CiAgICAgd2NoYXJfdCAqIHdwOwogICAgIHdjaGFyX3QgKiBjb21tYW5kOworICAgIHdjaGFyX3QgKiBleGVjdXRhYmxlOwogICAgIHdjaGFyX3QgKiBwOwogICAgIGludCByYyA9IDA7CiAgICAgc2l6ZV90IHBsZW47CkBAIC0xMzQ3LDE3ICsxMzg2LDE3IEBACiAgICAgICAgIHdjc25jcHlfcyhwLCBNQVhfUEFUSCAtIHBsZW4sIEwiXFxweS5pbmkiLCBfVFJVTkNBVEUpOwogICAgICAgICBhdHRycyA9IEdldEZpbGVBdHRyaWJ1dGVzVyhhcHBkYXRhX2luaV9wYXRoKTsKICAgICAgICAgaWYgKGF0dHJzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKSB7Ci0gICAgICAgICAgICBkZWJ1ZyhMIkZpbGUgJyVzJyBub24tZXhpc3RlbnRcbiIsIGFwcGRhdGFfaW5pX3BhdGgpOworICAgICAgICAgICAgZGVidWcoTCJGaWxlICclbHMnIG5vbi1leGlzdGVudFxuIiwgYXBwZGF0YV9pbmlfcGF0aCk7CiAgICAgICAgICAgICBhcHBkYXRhX2luaV9wYXRoWzBdID0gTCdcMCc7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBkZWJ1ZyhMIlVzaW5nIGxvY2FsIGNvbmZpZ3VyYXRpb24gZmlsZSAnJXMnXG4iLCBhcHBkYXRhX2luaV9wYXRoKTsKKyAgICAgICAgICAgIGRlYnVnKEwiVXNpbmcgbG9jYWwgY29uZmlndXJhdGlvbiBmaWxlICclbHMnXG4iLCBhcHBkYXRhX2luaV9wYXRoKTsKICAgICAgICAgfQogICAgIH0KICAgICBwbGVuID0gR2V0TW9kdWxlRmlsZU5hbWVXKE5VTEwsIGxhdW5jaGVyX2luaV9wYXRoLCBNQVhfUEFUSCk7CiAgICAgc2l6ZSA9IEdldEZpbGVWZXJzaW9uSW5mb1NpemVXKGxhdW5jaGVyX2luaV9wYXRoLCAmc2l6ZSk7CiAgICAgaWYgKHNpemUgPT0gMCkgewogICAgICAgICB3aW5lcnJvcihHZXRMYXN0RXJyb3IoKSwgbWVzc2FnZSwgTVNHU0laRSk7Ci0gICAgICAgIGRlYnVnKEwiR2V0RmlsZVZlcnNpb25JbmZvU2l6ZSBmYWlsZWQ6ICVzXG4iLCBtZXNzYWdlKTsKKyAgICAgICAgZGVidWcoTCJHZXRGaWxlVmVyc2lvbkluZm9TaXplIGZhaWxlZDogJWxzXG4iLCBtZXNzYWdlKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHZlcnNpb25fZGF0YSA9IG1hbGxvYyhzaXplKTsKQEAgLTEzODEsNyArMTQyMCw3IEBACiAgICAgfQogICAgIHAgPSB3Y3NyY2hyKGxhdW5jaGVyX2luaV9wYXRoLCBMJ1xcJyk7CiAgICAgaWYgKHAgPT0gTlVMTCkgewotICAgICAgICBkZWJ1ZyhMIkdldE1vZHVsZUZpbGVOYW1lVyByZXR1cm5lZCB2YWx1ZSBoYXMgbm8gYmFja3NsYXNoOiAlc1xuIiwKKyAgICAgICAgZGVidWcoTCJHZXRNb2R1bGVGaWxlTmFtZVcgcmV0dXJuZWQgdmFsdWUgaGFzIG5vIGJhY2tzbGFzaDogJWxzXG4iLAogICAgICAgICAgICAgICBsYXVuY2hlcl9pbmlfcGF0aCk7CiAgICAgICAgIGxhdW5jaGVyX2luaV9wYXRoWzBdID0gTCdcMCc7CiAgICAgfQpAQCAtMTM5MCwxNSArMTQyOSwxNSBAQAogICAgICAgICAgICAgICAgICAgX1RSVU5DQVRFKTsKICAgICAgICAgYXR0cnMgPSBHZXRGaWxlQXR0cmlidXRlc1cobGF1bmNoZXJfaW5pX3BhdGgpOwogICAgICAgICBpZiAoYXR0cnMgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpIHsKLSAgICAgICAgICAgIGRlYnVnKEwiRmlsZSAnJXMnIG5vbi1leGlzdGVudFxuIiwgbGF1bmNoZXJfaW5pX3BhdGgpOworICAgICAgICAgICAgZGVidWcoTCJGaWxlICclbHMnIG5vbi1leGlzdGVudFxuIiwgbGF1bmNoZXJfaW5pX3BhdGgpOwogICAgICAgICAgICAgbGF1bmNoZXJfaW5pX3BhdGhbMF0gPSBMJ1wwJzsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGRlYnVnKEwiVXNpbmcgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gZmlsZSAnJXMnXG4iLCBsYXVuY2hlcl9pbmlfcGF0aCk7CisgICAgICAgICAgICBkZWJ1ZyhMIlVzaW5nIGdsb2JhbCBjb25maWd1cmF0aW9uIGZpbGUgJyVscydcbiIsIGxhdW5jaGVyX2luaV9wYXRoKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGNvbW1hbmQgPSBza2lwX21lKEdldENvbW1hbmRMaW5lVygpKTsKLSAgICBkZWJ1ZyhMIkNhbGxlZCB3aXRoIGNvbW1hbmQgbGluZTogJXNcbiIsIGNvbW1hbmQpOworICAgIGRlYnVnKEwiQ2FsbGVkIHdpdGggY29tbWFuZCBsaW5lOiAlbHNcbiIsIGNvbW1hbmQpOwogCiAjaWYgZGVmaW5lZChTQ1JJUFRfV1JBUFBFUikKICAgICAvKiBUaGUgbGF1bmNoZXIgaXMgYmVpbmcgdXNlZCBpbiAic2NyaXB0IHdyYXBwZXIiIG1vZGUuCkBAIC0xNDIyLDcgKzE0NjEsNyBAQAogICAgICAgICB3Y3NjcHlfcyhuZXdjb21tYW5kLCBuZXdsZW4sIHdyYXBwZWRfc2NyaXB0X3BhdGgpOwogICAgICAgICB3Y3NjYXRfcyhuZXdjb21tYW5kLCBuZXdsZW4sIEwiICIpOwogICAgICAgICB3Y3NjYXRfcyhuZXdjb21tYW5kLCBuZXdsZW4sIGNvbW1hbmQpOwotICAgICAgICBkZWJ1ZyhMIlJ1bm5pbmcgd3JhcHBlZCBzY3JpcHQgd2l0aCBjb21tYW5kIGxpbmUgJyVzJ1xuIiwgbmV3Y29tbWFuZCk7CisgICAgICAgIGRlYnVnKEwiUnVubmluZyB3cmFwcGVkIHNjcmlwdCB3aXRoIGNvbW1hbmQgbGluZSAnJWxzJ1xuIiwgbmV3Y29tbWFuZCk7CiAgICAgICAgIHJlYWRfY29tbWFuZHMoKTsKICAgICAgICAgYXZbMF0gPSB3cmFwcGVkX3NjcmlwdF9wYXRoOwogICAgICAgICBhdlsxXSA9IE5VTEw7CkBAIC0xNDQzLDggKzE0ODIsOSBAQAogICAgICAgICBpZiAodmFsaWQpIHsKICAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbigmcFsxXSk7CiAgICAgICAgICAgICBpZiAoaXAgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBlcnJvcihSQ19OT19QWVRIT04sIEwiUmVxdWVzdGVkIFB5dGhvbiB2ZXJzaW9uICglcykgbm90IFwKKyAgICAgICAgICAgICAgICBlcnJvcihSQ19OT19QWVRIT04sIEwiUmVxdWVzdGVkIFB5dGhvbiB2ZXJzaW9uICglbHMpIG5vdCBcCiBpbnN0YWxsZWQiLCAmcFsxXSk7CisgICAgICAgICAgICBleGVjdXRhYmxlID0gaXAtPmV4ZWN1dGFibGU7CiAgICAgICAgICAgICBjb21tYW5kICs9IHdjc2xlbihwKTsKICAgICAgICAgICAgIGNvbW1hbmQgPSBza2lwX3doaXRlc3BhY2UoY29tbWFuZCk7CiAgICAgICAgIH0KQEAgLTE0NjIsOSArMTUwMiwxNiBAQAogI2VuZGlmCiAKICAgICBpZiAoIXZhbGlkKSB7Ci0gICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbihMIiIpOwotICAgICAgICBpZiAoaXAgPT0gTlVMTCkKLSAgICAgICAgICAgIGVycm9yKFJDX05PX1BZVEhPTiwgTCJDYW4ndCBmaW5kIGEgZGVmYXVsdCBQeXRob24uIik7CisgICAgICAgIC8qIExvb2sgZm9yIGFuIGFjdGl2ZSB2aXJ0dWFsZW52ICovCisgICAgICAgIGV4ZWN1dGFibGUgPSBmaW5kX3B5dGhvbl9ieV92ZW52KCk7CisKKyAgICAgICAgLyogSWYgd2UgZGlkbid0IGZpbmQgb25lLCBsb29rIGZvciB0aGUgZGVmYXVsdCBQeXRob24gKi8KKyAgICAgICAgaWYgKGV4ZWN1dGFibGUgPT0gTlVMTCkgeworICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKEwiIik7CisgICAgICAgICAgICBpZiAoaXAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBlcnJvcihSQ19OT19QWVRIT04sIEwiQ2FuJ3QgZmluZCBhIGRlZmF1bHQgUHl0aG9uLiIpOworICAgICAgICAgICAgZXhlY3V0YWJsZSA9IGlwLT5leGVjdXRhYmxlOworICAgICAgICB9CiAgICAgICAgIGlmICgoYXJnYyA9PSAyKSAmJiAoIV93Y3NpY21wKHAsIEwiLWgiKSB8fCAhX3djc2ljbXAocCwgTCItLWhlbHAiKSkpIHsKICNpZiBkZWZpbmVkKF9NX1g2NCkKICAgICAgICAgICAgIEJPT0wgY2FuRG82NGJpdCA9IFRSVUU7CkBAIC0xNDc2LDkgKzE1MjMsOSBAQAogCiAgICAgICAgICAgICBnZXRfdmVyc2lvbl9pbmZvKHZlcnNpb25fdGV4dCwgTUFYX1BBVEgpOwogICAgICAgICAgICAgZndwcmludGYoc3Rkb3V0LCBMIlwKLVB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cyBWZXJzaW9uICVzXG5cbiIsIHZlcnNpb25fdGV4dCk7CitQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MgVmVyc2lvbiAlbHNcblxuIiwgdmVyc2lvbl90ZXh0KTsKICAgICAgICAgICAgIGZ3cHJpbnRmKHN0ZG91dCwgTCJcCi11c2FnZTogJXMgWyBsYXVuY2hlci1hcmd1bWVudHMgXSBbIHB5dGhvbi1hcmd1bWVudHMgXSBzY3JpcHQgWyBzY3JpcHQtYXJndW1lbnRzIF1cblxuIiwgYXJndlswXSk7Cit1c2FnZTogJWxzIFsgbGF1bmNoZXItYXJndW1lbnRzIF0gWyBweXRob24tYXJndW1lbnRzIF0gc2NyaXB0IFsgc2NyaXB0LWFyZ3VtZW50cyBdXG5cbiIsIGFyZ3ZbMF0pOwogICAgICAgICAgICAgZnB1dHdzKEwiXAogTGF1bmNoZXIgYXJndW1lbnRzOlxuXG5cCiAtMiAgICAgOiBMYXVuY2ggdGhlIGxhdGVzdCBQeXRob24gMi54IHZlcnNpb25cblwKQEAgLTE0OTIsNyArMTUzOSw3IEBACiAgICAgICAgICAgICBmZmx1c2goc3Rkb3V0KTsKICAgICAgICAgfQogICAgIH0KLSAgICBpbnZva2VfY2hpbGQoaXAtPmV4ZWN1dGFibGUsIE5VTEwsIGNvbW1hbmQpOworICAgIGludm9rZV9jaGlsZChleGVjdXRhYmxlLCBOVUxMLCBjb21tYW5kKTsKICAgICByZXR1cm4gcmM7CiB9CiAKZGlmZiAtLWdpdCBhL1BDL21zdmNydG1vZHVsZS5jIGIvUEMvbXN2Y3J0bW9kdWxlLmMKaW5kZXggMThkZWM2ZC4uNTJkNDEwMCAxMDA2NDQKLS0tIGEvUEMvbXN2Y3J0bW9kdWxlLmMKKysrIGIvUEMvbXN2Y3J0bW9kdWxlLmMKQEAgLTMyLDQyMSArMzIsNDUxIEBACiAjZW5kaWYKICNlbmRpZgogCi0vLyBGb3JjZSB0aGUgbWFsbG9jIGhlYXAgdG8gY2xlYW4gaXRzZWxmIHVwLCBhbmQgZnJlZSB1bnVzZWQgYmxvY2tzCi0vLyBiYWNrIHRvIHRoZSBPUy4gIChBY2NvcmRpbmcgdG8gdGhlIGRvY3MsIG9ubHkgd29ya3Mgb24gTlQuKQotc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF9oZWFwbWluKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpoZWFwbWluIikpCi0gICAgICAgIHJldHVybiBOVUxMOworLypbcHl0aG9uIGlucHV0XQorY2xhc3MgUHlfaW50cHRyX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnUHlfaW50cHRyX3QnCisgICAgZm9ybWF0X3VuaXQgPSAnIl9QeV9QQVJTRV9JTlRQVFIiJwogCitjbGFzcyBoYW5kbGVfcmV0dXJuX2NvbnZlcnRlcihsb25nX3JldHVybl9jb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnUHlfaW50cHRyX3QnCisgICAgY2FzdCA9ICcodm9pZCAqKScKKyAgICBjb252ZXJzaW9uX2ZuID0gJ1B5TG9uZ19Gcm9tVm9pZFB0cicKKworY2xhc3MgYnl0ZV9jaGFyX3JldHVybl9jb252ZXJ0ZXIoQ1JldHVybkNvbnZlcnRlcik6CisgICAgdHlwZSA9ICdpbnQnCisKKyAgICBkZWYgcmVuZGVyKHNlbGYsIGZ1bmN0aW9uLCBkYXRhKToKKyAgICAgICAgZGF0YS5kZWNsYXJhdGlvbnMuYXBwZW5kKCdjaGFyIHNbMV07JykKKyAgICAgICAgZGF0YS5yZXR1cm5fdmFsdWUgPSAnc1swXScKKyAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoCisgICAgICAgICAgICAncmV0dXJuX3ZhbHVlID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzLCAxKTtcbicpCisKK2NsYXNzIHdjaGFyX3RfcmV0dXJuX2NvbnZlcnRlcihDUmV0dXJuQ29udmVydGVyKToKKyAgICB0eXBlID0gJ3djaGFyX3QnCisKKyAgICBkZWYgcmVuZGVyKHNlbGYsIGZ1bmN0aW9uLCBkYXRhKToKKyAgICAgICAgc2VsZi5kZWNsYXJlKGRhdGEpCisgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKAorICAgICAgICAgICAgJ3JldHVybl92YWx1ZSA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbChfcmV0dXJuX3ZhbHVlKTtcbicpCitbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD02YTU0ZmM0ZTczZDBiMzY3XSovCisKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBtc3ZjcnQKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWYzMWE4N2E3ODNkMDM2Y2RdKi8KKworI2luY2x1ZGUgImNsaW5pYy9tc3ZjcnRtb2R1bGUuYy5oIgorCisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQuaGVhcG1pbgorCitNaW5pbWl6ZSB0aGUgbWFsbG9jKCkgaGVhcC4KKworRm9yY2UgdGhlIG1hbGxvYygpIGhlYXAgdG8gY2xlYW4gaXRzZWxmIHVwIGFuZCByZXR1cm4gdW51c2VkIGJsb2NrcwordG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0uIE9uIGZhaWx1cmUsIHRoaXMgcmFpc2VzIE9TRXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfaGVhcG1pbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDY0Zjg2NmZlYjU3YzQzNiBpbnB1dD04MmUxNzcxZDIxYmRlMmQ4XSovCit7CiAgICAgaWYgKF9oZWFwbWluKCkgIT0gMCkKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5sb2NraW5nCiAKLVB5RG9jX1NUUlZBUihoZWFwbWluX2RvYywKLSJoZWFwbWluKCkgLT4gTm9uZVxuXAotXG5cCi1Gb3JjZSB0aGUgbWFsbG9jKCkgaGVhcCB0byBjbGVhbiBpdHNlbGYgdXAgYW5kIHJldHVybiB1bnVzZWQgYmxvY2tzXG5cCi10byB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gT24gZmFpbHVyZSwgdGhpcyByYWlzZXMgSU9FcnJvci4iKTsKKyAgICBmZDogaW50CisgICAgbW9kZTogaW50CisgICAgbmJ5dGVzOiBsb25nCisgICAgLwogCi0vLyBQZXJmb3JtIGxvY2tpbmcgb3BlcmF0aW9ucyBvbiBhIEMgcnVudGltZSBmaWxlIGRlc2NyaXB0b3IuCitMb2NrIHBhcnQgb2YgYSBmaWxlIGJhc2VkIG9uIGZpbGUgZGVzY3JpcHRvciBmZCBmcm9tIHRoZSBDIHJ1bnRpbWUuCisKK1JhaXNlcyBJT0Vycm9yIG9uIGZhaWx1cmUuIFRoZSBsb2NrZWQgcmVnaW9uIG9mIHRoZSBmaWxlIGV4dGVuZHMgZnJvbQordGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiBmb3IgbmJ5dGVzIGJ5dGVzLCBhbmQgbWF5IGNvbnRpbnVlIGJleW9uZAordGhlIGVuZCBvZiB0aGUgZmlsZS4gbW9kZSBtdXN0IGJlIG9uZSBvZiB0aGUgTEtfKiBjb25zdGFudHMgbGlzdGVkCitiZWxvdy4gTXVsdGlwbGUgcmVnaW9ucyBpbiBhIGZpbGUgbWF5IGJlIGxvY2tlZCBhdCB0aGUgc2FtZSB0aW1lLCBidXQKK21heSBub3Qgb3ZlcmxhcC4gQWRqYWNlbnQgcmVnaW9ucyBhcmUgbm90IG1lcmdlZDsgdGhleSBtdXN0IGJlIHVubG9ja2VkCitpbmRpdmlkdWFsbHkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1tc3ZjcnRfbG9ja2luZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCittc3ZjcnRfbG9ja2luZ19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IG1vZGUsIGxvbmcgbmJ5dGVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRmZjQxZTVlNzZkNTQ0ZGUgaW5wdXQ9ZDlmMTNmMGY2YTcxM2JhN10qLwogewotICAgIGludCBmZDsKLSAgICBpbnQgbW9kZTsKLSAgICBsb25nIG5ieXRlczsKICAgICBpbnQgZXJyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaWw6bG9ja2luZyIsICZmZCwgJm1vZGUsICZuYnl0ZXMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBlcnIgPSBfbG9ja2luZyhmZCwgbW9kZSwgbmJ5dGVzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChlcnIgIT0gMCkKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGxvY2tpbmdfZG9jLAotImxvY2tpbmcoZmQsIG1vZGUsIG5ieXRlcykgLT4gTm9uZVxuXAotXG5cCi1Mb2NrIHBhcnQgb2YgYSBmaWxlIGJhc2VkIG9uIGZpbGUgZGVzY3JpcHRvciBmZCBmcm9tIHRoZSBDIHJ1bnRpbWUuXG5cCi1SYWlzZXMgSU9FcnJvciBvbiBmYWlsdXJlLiBUaGUgbG9ja2VkIHJlZ2lvbiBvZiB0aGUgZmlsZSBleHRlbmRzIGZyb21cblwKLXRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gZm9yIG5ieXRlcyBieXRlcywgYW5kIG1heSBjb250aW51ZSBiZXlvbmRcblwKLXRoZSBlbmQgb2YgdGhlIGZpbGUuIG1vZGUgbXVzdCBiZSBvbmUgb2YgdGhlIExLXyogY29uc3RhbnRzIGxpc3RlZFxuXAotYmVsb3cuIE11bHRpcGxlIHJlZ2lvbnMgaW4gYSBmaWxlIG1heSBiZSBsb2NrZWQgYXQgdGhlIHNhbWUgdGltZSwgYnV0XG5cCi1tYXkgbm90IG92ZXJsYXAuIEFkamFjZW50IHJlZ2lvbnMgYXJlIG5vdCBtZXJnZWQ7IHRoZXkgbXVzdCBiZSB1bmxvY2tlZFxuXAotaW5kaXZpZHVhbGx5LiIpOworLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LnNldG1vZGUgLT4gbG9uZwogCi0vLyBTZXQgdGhlIGZpbGUgdHJhbnNsYXRpb24gbW9kZSBmb3IgYSBDIHJ1bnRpbWUgZmlsZSBkZXNjcmlwdG9yLgotc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF9zZXRtb2RlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAgICBmZDogaW50CisgICAgbW9kZSBhcyBmbGFnczogaW50CisgICAgLworCitTZXQgdGhlIGxpbmUtZW5kIHRyYW5zbGF0aW9uIG1vZGUgZm9yIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQuCisKK1RvIHNldCBpdCB0byB0ZXh0IG1vZGUsIGZsYWdzIHNob3VsZCBiZSBvcy5PX1RFWFQ7IGZvciBiaW5hcnksIGl0CitzaG91bGQgYmUgb3MuT19CSU5BUlkuCisKK1JldHVybiB2YWx1ZSBpcyB0aGUgcHJldmlvdXMgbW9kZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK21zdmNydF9zZXRtb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgZmxhZ3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGM4NGU1YjM3YzU4NmQwZCBpbnB1dD03NmU3YzAxZjZiMTM3Zjc1XSovCiB7Ci0gICAgaW50IGZkOwotICAgIGludCBmbGFnczsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWk6c2V0bW9kZSIsICZmZCwgJmZsYWdzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBmbGFncyA9IF9zZXRtb2RlKGZkLCBmbGFncyk7CiAgICAgaWYgKGZsYWdzID09IC0xKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGZsYWdzKTsKKyAgICByZXR1cm4gZmxhZ3M7CiB9CiAKLVB5RG9jX1NUUlZBUihzZXRtb2RlX2RvYywKLSJzZXRtb2RlKGZkLCBtb2RlKSAtPiBQcmV2aW91cyBtb2RlXG5cCi1cblwKLVNldCB0aGUgbGluZS1lbmQgdHJhbnNsYXRpb24gbW9kZSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciBmZC4gVG8gc2V0XG5cCi1pdCB0byB0ZXh0IG1vZGUsIGZsYWdzIHNob3VsZCBiZSBvcy5PX1RFWFQ7IGZvciBiaW5hcnksIGl0IHNob3VsZCBiZVxuXAotb3MuT19CSU5BUlkuIik7CisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQub3Blbl9vc2ZoYW5kbGUgLT4gbG9uZwogCi0vLyBDb252ZXJ0IGFuIE9TIGZpbGUgaGFuZGxlIHRvIGEgQyBydW50aW1lIGZpbGUgZGVzY3JpcHRvci4KLXN0YXRpYyBQeU9iamVjdCAqCi1tc3ZjcnRfb3Blbl9vc2ZoYW5kbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIGhhbmRsZTogUHlfaW50cHRyX3QKKyAgICBmbGFnczogaW50CisgICAgLworCitDcmVhdGUgYSBDIHJ1bnRpbWUgZmlsZSBkZXNjcmlwdG9yIGZyb20gdGhlIGZpbGUgaGFuZGxlIGhhbmRsZS4KKworVGhlIGZsYWdzIHBhcmFtZXRlciBzaG91bGQgYmUgYSBiaXR3aXNlIE9SIG9mIG9zLk9fQVBQRU5ELCBvcy5PX1JET05MWSwKK2FuZCBvcy5PX1RFWFQuIFRoZSByZXR1cm5lZCBmaWxlIGRlc2NyaXB0b3IgbWF5IGJlIHVzZWQgYXMgYSBwYXJhbWV0ZXIKK3RvIG9zLmZkb3BlbigpIHRvIGNyZWF0ZSBhIGZpbGUgb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgbG9uZworbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg2YmNlMzI1ODJjNDljMDYgaW5wdXQ9NGQ4NTE2ZWQzMmRiOGY2NV0qLwogewotICAgIFB5X2ludHB0cl90IGhhbmRsZTsKLSAgICBpbnQgZmxhZ3M7CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9JTlRQVFIgImk6b3Blbl9vc2ZoYW5kbGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLCAmZmxhZ3MpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGZkID0gX29wZW5fb3NmaGFuZGxlKGhhbmRsZSwgZmxhZ3MpOwogICAgIGlmIChmZCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhmZCk7CisgICAgcmV0dXJuIGZkOwogfQogCi1QeURvY19TVFJWQVIob3Blbl9vc2ZoYW5kbGVfZG9jLAotIm9wZW5fb3NmaGFuZGxlKGhhbmRsZSwgZmxhZ3MpIC0+IGZpbGUgZGVzY3JpcHRvclxuXAotXG5cCi1DcmVhdGUgYSBDIHJ1bnRpbWUgZmlsZSBkZXNjcmlwdG9yIGZyb20gdGhlIGZpbGUgaGFuZGxlIGhhbmRsZS4gVGhlXG5cCi1mbGFncyBwYXJhbWV0ZXIgc2hvdWxkIGJlIGEgYml0d2lzZSBPUiBvZiBvcy5PX0FQUEVORCwgb3MuT19SRE9OTFksXG5cCi1hbmQgb3MuT19URVhULiBUaGUgcmV0dXJuZWQgZmlsZSBkZXNjcmlwdG9yIG1heSBiZSB1c2VkIGFzIGEgcGFyYW1ldGVyXG5cCi10byBvcy5mZG9wZW4oKSB0byBjcmVhdGUgYSBmaWxlIG9iamVjdC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5nZXRfb3NmaGFuZGxlIC0+IGhhbmRsZQogCi0vLyBDb252ZXJ0IGEgQyBydW50aW1lIGZpbGUgZGVzY3JpcHRvciB0byBhbiBPUyBmaWxlIGhhbmRsZS4KLXN0YXRpYyBQeU9iamVjdCAqCi1tc3ZjcnRfZ2V0X29zZmhhbmRsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgZmQ6IGludAorICAgIC8KKworUmV0dXJuIHRoZSBmaWxlIGhhbmRsZSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciBmZC4KKworUmFpc2VzIElPRXJyb3IgaWYgZmQgaXMgbm90IHJlY29nbml6ZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeV9pbnRwdHJfdAorbXN2Y3J0X2dldF9vc2ZoYW5kbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mzc2YmZmNTI1ODZiNTVhNiBpbnB1dD1jN2QxOGQwMmM4MDE3ZWMxXSovCiB7Ci0gICAgaW50IGZkOwotICAgIFB5X2ludHB0cl90IGhhbmRsZTsKKyAgICBQeV9pbnRwdHJfdCBoYW5kbGUgPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpOmdldF9vc2ZoYW5kbGUiLCAmZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgIGhhbmRsZSA9IF9nZXRfb3NmaGFuZGxlKGZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgICAgICBpZiAoaGFuZGxlID09IC0xKQorICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgIH0KIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLQotICAgIGhhbmRsZSA9IF9nZXRfb3NmaGFuZGxlKGZkKTsKLSAgICBpZiAoaGFuZGxlID09IC0xKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotCi0gICAgLyogdGVjaG5pY2FsbHkgJ2hhbmRsZScgaXMgbm90IGEgcG9pbnRlciwgYnV0IGEgaW50ZWdlciBhcwotICAgICAgIGxhcmdlIGFzIGEgcG9pbnRlciwgUHl0aG9uJ3MgKlZvaWRQdHIgaW50ZXJmYWNlIGlzIHRoZQotICAgICAgIG1vc3QgYXBwcm9wcmlhdGUgaGVyZSAqLwotICAgIHJldHVybiBQeUxvbmdfRnJvbVZvaWRQdHIoKHZvaWQqKWhhbmRsZSk7CisgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAotUHlEb2NfU1RSVkFSKGdldF9vc2ZoYW5kbGVfZG9jLAotImdldF9vc2ZoYW5kbGUoZmQpIC0+IGZpbGUgaGFuZGxlXG5cCi1cblwKLVJldHVybiB0aGUgZmlsZSBoYW5kbGUgZm9yIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQuIFJhaXNlcyBJT0Vycm9yXG5cCi1pZiBmZCBpcyBub3QgcmVjb2duaXplZC4iKTsKLQogLyogQ29uc29sZSBJL08gKi8KKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5rYmhpdCAtPiBsb25nCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1tc3ZjcnRfa2JoaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorUmV0dXJuIHRydWUgaWYgYSBrZXlwcmVzcyBpcyB3YWl0aW5nIHRvIGJlIHJlYWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCittc3ZjcnRfa2JoaXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJiNzI5M2ZjYmU1Y2IyNGUgaW5wdXQ9ZTcwZDY3OGE1YzJmNmFjY10qLwogewotICAgIGludCBvazsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmtiaGl0IikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgb2sgPSBfa2JoaXQoKTsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG9rKTsKKyAgICByZXR1cm4gX2tiaGl0KCk7CiB9CiAKLVB5RG9jX1NUUlZBUihrYmhpdF9kb2MsCi0ia2JoaXQoKSAtPiBib29sXG5cCi1cblwKLVJldHVybiB0cnVlIGlmIGEga2V5cHJlc3MgaXMgd2FpdGluZyB0byBiZSByZWFkLiIpOworLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LmdldGNoIC0+IGJ5dGVfY2hhcgogCi1zdGF0aWMgUHlPYmplY3QgKgotbXN2Y3J0X2dldGNoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK1JlYWQgYSBrZXlwcmVzcyBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyIGFzIGEgYnl0ZSBzdHJpbmcuCisKK05vdGhpbmcgaXMgZWNob2VkIHRvIHRoZSBjb25zb2xlLiBUaGlzIGNhbGwgd2lsbCBibG9jayBpZiBhIGtleXByZXNzIGlzCitub3QgYWxyZWFkeSBhdmFpbGFibGUsIGJ1dCB3aWxsIG5vdCB3YWl0IGZvciBFbnRlciB0byBiZSBwcmVzc2VkLiBJZiB0aGUKK3ByZXNzZWQga2V5IHdhcyBhIHNwZWNpYWwgZnVuY3Rpb24ga2V5LCB0aGlzIHdpbGwgcmV0dXJuICdcMDAwJyBvcgorJ1x4ZTAnOyB0aGUgbmV4dCBjYWxsIHdpbGwgcmV0dXJuIHRoZSBrZXljb2RlLiBUaGUgQ29udHJvbC1DIGtleXByZXNzCitjYW5ub3QgYmUgcmVhZCB3aXRoIHRoaXMgZnVuY3Rpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK21zdmNydF9nZXRjaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTk5ZTNkODlmNDljMTY2YSBpbnB1dD0zN2E0MGNmMGVkMGQxMTUzXSovCiB7CiAgICAgaW50IGNoOwotICAgIGNoYXIgc1sxXTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmdldGNoIikpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGNoID0gX2dldGNoKCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBzWzBdID0gY2g7Ci0gICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocywgMSk7CisgICAgcmV0dXJuIGNoOwogfQogCi1QeURvY19TVFJWQVIoZ2V0Y2hfZG9jLAotImdldGNoKCkgLT4ga2V5IGNoYXJhY3RlclxuXAotXG5cCi1SZWFkIGEga2V5cHJlc3MgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlciBhcyBhIGJ5dGUgc3RyaW5nLlxuXAotTm90aGluZyBpcyBlY2hvZWQgdG8gdGhlIGNvbnNvbGUuIFRoaXMgY2FsbCB3aWxsIGJsb2NrIGlmIGEga2V5cHJlc3MgaXNcblwKLW5vdCBhbHJlYWR5IGF2YWlsYWJsZSwgYnV0IHdpbGwgbm90IHdhaXQgZm9yIEVudGVyIHRvIGJlIHByZXNzZWQuIElmIHRoZVxuXAotcHJlc3NlZCBrZXkgd2FzIGEgc3BlY2lhbCBmdW5jdGlvbiBrZXksIHRoaXMgd2lsbCByZXR1cm4gJ1xcMDAwJyBvclxuXAotJ1xceGUwJzsgdGhlIG5leHQgY2FsbCB3aWxsIHJldHVybiB0aGUga2V5Y29kZS4gVGhlIENvbnRyb2wtQyBrZXlwcmVzc1xuXAotY2Fubm90IGJlIHJlYWQgd2l0aCB0aGlzIGZ1bmN0aW9uLiIpOworLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LmdldHdjaCAtPiB3Y2hhcl90CiAKLSNpZmRlZiBfV0NPTklPX0RFRklORUQKLXN0YXRpYyBQeU9iamVjdCAqCi1tc3ZjcnRfZ2V0d2NoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK1dpZGUgY2hhciB2YXJpYW50IG9mIGdldGNoKCksIHJldHVybmluZyBhIFVuaWNvZGUgdmFsdWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyB3Y2hhcl90Cittc3ZjcnRfZ2V0d2NoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZDM3NjI4NjEzMjhiMWZlIGlucHV0PTI3YjNkZWM4YWQ4MjNkN2NdKi8KIHsKICAgICB3Y2hhcl90IGNoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6Z2V0d2NoIikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGNoID0gX2dldHdjaCgpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT3JkaW5hbChjaCk7CisgICAgcmV0dXJuIGNoOwogfQogCi1QeURvY19TVFJWQVIoZ2V0d2NoX2RvYywKLSJnZXR3Y2goKSAtPiBVbmljb2RlIGtleSBjaGFyYWN0ZXJcblwKLVxuXAotV2lkZSBjaGFyIHZhcmlhbnQgb2YgZ2V0Y2goKSwgcmV0dXJuaW5nIGEgVW5pY29kZSB2YWx1ZS4iKTsKLSNlbmRpZgorLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LmdldGNoZSAtPiBieXRlX2NoYXIKIAotc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF9nZXRjaGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorU2ltaWxhciB0byBnZXRjaCgpLCBidXQgdGhlIGtleXByZXNzIHdpbGwgYmUgZWNob2VkIGlmIHBvc3NpYmxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50Cittc3ZjcnRfZ2V0Y2hlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04YWEzNjliZTY1NTAwNjhlIGlucHV0PTQzMzExYWRlOWVkNGE5YzBdKi8KIHsKICAgICBpbnQgY2g7Ci0gICAgY2hhciBzWzFdOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6Z2V0Y2hlIikpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGNoID0gX2dldGNoZSgpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgc1swXSA9IGNoOwotICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHMsIDEpOworICAgIHJldHVybiBjaDsKIH0KIAotUHlEb2NfU1RSVkFSKGdldGNoZV9kb2MsCi0iZ2V0Y2hlKCkgLT4ga2V5IGNoYXJhY3RlclxuXAotXG5cCi1TaW1pbGFyIHRvIGdldGNoKCksIGJ1dCB0aGUga2V5cHJlc3Mgd2lsbCBiZSBlY2hvZWQgaWYgaXQgcmVwcmVzZW50c1xuXAotYSBwcmludGFibGUgY2hhcmFjdGVyLiIpOworLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LmdldHdjaGUgLT4gd2NoYXJfdAogCi0jaWZkZWYgX1dDT05JT19ERUZJTkVECi1zdGF0aWMgUHlPYmplY3QgKgotbXN2Y3J0X2dldHdjaGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorV2lkZSBjaGFyIHZhcmlhbnQgb2YgZ2V0Y2hlKCksIHJldHVybmluZyBhIFVuaWNvZGUgdmFsdWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyB3Y2hhcl90Cittc3ZjcnRfZ2V0d2NoZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzY5M2NmNzhlM2VhMGNmNiBpbnB1dD00OTMzN2Q1OWQxYTU5MWY4XSovCiB7CiAgICAgd2NoYXJfdCBjaDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmdldHdjaGUiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgY2ggPSBfZ2V0d2NoZSgpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT3JkaW5hbChjaCk7CisgICAgcmV0dXJuIGNoOwogfQogCi1QeURvY19TVFJWQVIoZ2V0d2NoZV9kb2MsCi0iZ2V0d2NoZSgpIC0+IFVuaWNvZGUga2V5IGNoYXJhY3RlclxuXAotXG5cCi1XaWRlIGNoYXIgdmFyaWFudCBvZiBnZXRjaGUoKSwgcmV0dXJuaW5nIGEgVW5pY29kZSB2YWx1ZS4iKTsKLSNlbmRpZgorLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LnB1dGNoCisKKyAgICBjaGFyOiBjaGFyCisgICAgLworCitQcmludCB0aGUgYnl0ZSBzdHJpbmcgY2hhciB0byB0aGUgY29uc29sZSB3aXRob3V0IGJ1ZmZlcmluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF9wdXRjaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCittc3ZjcnRfcHV0Y2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjaGFyIGNoYXJfdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzA1NTQ4YjExNTU0ZjM2ZiBpbnB1dD1lYzA3OGRkMTBjYjA1NGQ2XSovCiB7Ci0gICAgY2hhciBjaDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiYzpwdXRjaCIsICZjaCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgX3B1dGNoKGNoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgX3B1dGNoKGNoYXJfdmFsdWUpOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIocHV0Y2hfZG9jLAotInB1dGNoKGNoYXIpIC0+IE5vbmVcblwKLVxuXAotUHJpbnQgdGhlIGJ5dGUgc3RyaW5nIGNoYXIgdG8gdGhlIGNvbnNvbGUgd2l0aG91dCBidWZmZXJpbmcuIik7CisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQucHV0d2NoCiAKLSNpZmRlZiBfV0NPTklPX0RFRklORUQKKyAgICB1bmljb2RlX2NoYXI6IGludChhY2NlcHQ9e3N0cn0pCisgICAgLworCitXaWRlIGNoYXIgdmFyaWFudCBvZiBwdXRjaCgpLCBhY2NlcHRpbmcgYSBVbmljb2RlIHZhbHVlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbXN2Y3J0X3B1dHdjaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCittc3ZjcnRfcHV0d2NoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHVuaWNvZGVfY2hhcikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jMjE2YTczNjk0Y2E3M2RkIGlucHV0PTk5NmNjZDBiYmNiYWM0YzNdKi8KIHsKLSAgICBpbnQgY2g7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkM6cHV0d2NoIiwgJmNoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBfcHV0d2NoKGNoKTsKKyAgICBfcHV0d2NoKHVuaWNvZGVfY2hhcik7CiAgICAgUHlfUkVUVVJOX05PTkU7CiAKIH0KIAotUHlEb2NfU1RSVkFSKHB1dHdjaF9kb2MsCi0icHV0d2NoKHVuaWNvZGVfY2hhcikgLT4gTm9uZVxuXAotXG5cCi1XaWRlIGNoYXIgdmFyaWFudCBvZiBwdXRjaCgpLCBhY2NlcHRpbmcgYSBVbmljb2RlIHZhbHVlLiIpOwotI2VuZGlmCisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQudW5nZXRjaAorCisgICAgY2hhcjogY2hhcgorICAgIC8KKworT3Bwb3NpdGUgb2YgZ2V0Y2guCisKK0NhdXNlIHRoZSBieXRlIHN0cmluZyBjaGFyIHRvIGJlICJwdXNoZWQgYmFjayIgaW50byB0aGUKK2NvbnNvbGUgYnVmZmVyOyBpdCB3aWxsIGJlIHRoZSBuZXh0IGNoYXJhY3RlciByZWFkIGJ5CitnZXRjaCgpIG9yIGdldGNoZSgpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotbXN2Y3J0X3VuZ2V0Y2goUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorbXN2Y3J0X3VuZ2V0Y2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjaGFyIGNoYXJfdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTlhNGNkMzI0OTcwOWVjOSBpbnB1dD0yMmYwN2VlOTAwMWJiZjBmXSovCiB7Ci0gICAgY2hhciBjaDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiYzp1bmdldGNoIiwgJmNoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoX3VuZ2V0Y2goY2gpID09IEVPRikKKyAgICBpZiAoX3VuZ2V0Y2goY2hhcl92YWx1ZSkgPT0gRU9GKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKHVuZ2V0Y2hfZG9jLAotInVuZ2V0Y2goY2hhcikgLT4gTm9uZVxuXAotXG5cCi1DYXVzZSB0aGUgYnl0ZSBzdHJpbmcgY2hhciB0byBiZSBcInB1c2hlZCBiYWNrXCIgaW50byB0aGVcblwKLWNvbnNvbGUgYnVmZmVyOyBpdCB3aWxsIGJlIHRoZSBuZXh0IGNoYXJhY3RlciByZWFkIGJ5XG5cCi1nZXRjaCgpIG9yIGdldGNoZSgpLiIpOworLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LnVuZ2V0d2NoCiAKLSNpZmRlZiBfV0NPTklPX0RFRklORUQKKyAgICB1bmljb2RlX2NoYXI6IGludChhY2NlcHQ9e3N0cn0pCisgICAgLworCitXaWRlIGNoYXIgdmFyaWFudCBvZiB1bmdldGNoKCksIGFjY2VwdGluZyBhIFVuaWNvZGUgdmFsdWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1tc3ZjcnRfdW5nZXR3Y2goUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorbXN2Y3J0X3VuZ2V0d2NoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHVuaWNvZGVfY2hhcikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZWU3Njc0NzEwMzIyYmQxIGlucHV0PTgzZWMwNDkyYmUwNGQ1NjRdKi8KIHsKLSAgICBpbnQgY2g7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkM6dW5nZXR3Y2giLCAmY2gpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChfdW5nZXR3Y2goY2gpID09IFdFT0YpCisgICAgaWYgKF91bmdldHdjaCh1bmljb2RlX2NoYXIpID09IFdFT0YpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotfQotCi1QeURvY19TVFJWQVIodW5nZXR3Y2hfZG9jLAotInVuZ2V0d2NoKHVuaWNvZGVfY2hhcikgLT4gTm9uZVxuXAotXG5cCi1XaWRlIGNoYXIgdmFyaWFudCBvZiB1bmdldGNoKCksIGFjY2VwdGluZyBhIFVuaWNvZGUgdmFsdWUuIik7Ci0jZW5kaWYKLQotc3RhdGljIHZvaWQKLWluc2VydGludChQeU9iamVjdCAqZCwgY2hhciAqbmFtZSwgaW50IHZhbHVlKQotewotICAgIFB5T2JqZWN0ICp2ID0gUHlMb25nX0Zyb21Mb25nKChsb25nKSB2YWx1ZSk7Ci0gICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAvKiBEb24ndCBib3RoZXIgcmVwb3J0aW5nIHRoaXMgZXJyb3IgKi8KLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsIG5hbWUsIHYpOwotICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgfQorICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAjaWZkZWYgX0RFQlVHCisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQuQ3J0U2V0UmVwb3J0RmlsZSAtPiBsb25nCiAKLXN0YXRpYyBQeU9iamVjdCoKLW1zdmNydF9zZXRyZXBvcnRmaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAgICB0eXBlOiBpbnQKKyAgICBmaWxlOiBpbnQKKyAgICAvCisKK1dyYXBwZXIgYXJvdW5kIF9DcnRTZXRSZXBvcnRGaWxlLgorCitPbmx5IGF2YWlsYWJsZSBvbiBEZWJ1ZyBidWlsZHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCittc3ZjcnRfQ3J0U2V0UmVwb3J0RmlsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB0eXBlLCBpbnQgZmlsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04YzM2NDRmYjJlZGZhODA4IGlucHV0PWJiOGY3MjFhNjA0ZmNjNDVdKi8KIHsKLSAgICBpbnQgdHlwZSwgZmlsZTsKLSAgICBfSEZJTEUgcmVzOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaSIsICZ0eXBlLCAmZmlsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyA9IF9DcnRTZXRSZXBvcnRGaWxlKHR5cGUsIChfSEZJTEUpZmlsZSk7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylyZXMpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICByZXR1cm4gKGxvbmcpX0NydFNldFJlcG9ydEZpbGUodHlwZSwgKF9IRklMRSlmaWxlKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotbXN2Y3J0X3NldHJlcG9ydG1vZGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LkNydFNldFJlcG9ydE1vZGUgLT4gbG9uZworCisgICAgdHlwZTogaW50CisgICAgbW9kZTogaW50CisgICAgLworCitXcmFwcGVyIGFyb3VuZCBfQ3J0U2V0UmVwb3J0TW9kZS4KKworT25seSBhdmFpbGFibGUgb24gRGVidWcgYnVpbGRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgbG9uZworbXN2Y3J0X0NydFNldFJlcG9ydE1vZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgdHlwZSwgaW50IG1vZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjQwN2ZiZjg3MTZhNTJiOSBpbnB1dD05MzE5ZDI5YjQzMTk0MjZiXSovCiB7Ci0gICAgaW50IHR5cGUsIG1vZGU7CiAgICAgaW50IHJlczsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWkiLCAmdHlwZSwgJm1vZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXMgPSBfQ3J0U2V0UmVwb3J0TW9kZSh0eXBlLCBtb2RlKTsKICAgICBpZiAocmVzID09IC0xKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocmVzKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgIHJldHVybiByZXM7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLW1zdmNydF9zZXRlcnJvcm1vZGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGludCBtb2RlLCByZXM7CisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQuc2V0X2Vycm9yX21vZGUgLT4gbG9uZwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiwgJm1vZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXMgPSBfc2V0X2Vycm9yX21vZGUobW9kZSk7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyZXMpOworICAgIG1vZGU6IGludAorICAgIC8KKworV3JhcHBlciBhcm91bmQgX3NldF9lcnJvcl9tb2RlLgorCitPbmx5IGF2YWlsYWJsZSBvbiBEZWJ1ZyBidWlsZHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCittc3ZjcnRfc2V0X2Vycm9yX21vZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbW9kZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MjE0OGFkZmZhOTA4NjdkIGlucHV0PTA0NmZjYTU5YzBmMjA4NzJdKi8KK3sKKyAgICByZXR1cm4gX3NldF9lcnJvcl9tb2RlKG1vZGUpOwogfQorI2VuZGlmIC8qIF9ERUJVRyAqLwogCi0jZW5kaWYKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5TZXRFcnJvck1vZGUKIAotc3RhdGljIFB5T2JqZWN0Kgotc2V0ZXJyb3Jtb2RlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAgICBtb2RlOiB1bnNpZ25lZF9pbnQoYml0d2lzZT1UcnVlKQorICAgIC8KKworV3JhcHBlciBhcm91bmQgU2V0RXJyb3JNb2RlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X1NldEVycm9yTW9kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHVuc2lnbmVkIGludCBtb2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU0NGM2MGIwODViZTc5YzYgaW5wdXQ9ZDhiMTY3MjU4ZDMyZDkwN10qLwogewotICAgIHVuc2lnbmVkIGludCBtb2RlLCByZXM7CisgICAgdW5zaWduZWQgaW50IHJlczsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSSIsICZtb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmVzID0gU2V0RXJyb3JNb2RlKG1vZGUpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhyZXMpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1kYTM5YTNlZTVlNmI0YjBkXSovCiAKIC8qIExpc3Qgb2YgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlICovCiBzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIG1zdmNydF9mdW5jdGlvbnNbXSA9IHsKLSAgICB7ImhlYXBtaW4iLCAgICAgICAgICAgICAgICAgbXN2Y3J0X2hlYXBtaW4sIE1FVEhfVkFSQVJHUywgaGVhcG1pbl9kb2N9LAotICAgIHsibG9ja2luZyIsICAgICAgICAgICAgIG1zdmNydF9sb2NraW5nLCBNRVRIX1ZBUkFSR1MsIGxvY2tpbmdfZG9jfSwKLSAgICB7InNldG1vZGUiLCAgICAgICAgICAgICAgICAgbXN2Y3J0X3NldG1vZGUsIE1FVEhfVkFSQVJHUywgc2V0bW9kZV9kb2N9LAotICAgIHsib3Blbl9vc2ZoYW5kbGUiLCAgICAgICAgICBtc3ZjcnRfb3Blbl9vc2ZoYW5kbGUsIE1FVEhfVkFSQVJHUywgb3Blbl9vc2ZoYW5kbGVfZG9jfSwKLSAgICB7ImdldF9vc2ZoYW5kbGUiLCAgICAgICAgICAgbXN2Y3J0X2dldF9vc2ZoYW5kbGUsIE1FVEhfVkFSQVJHUywgZ2V0X29zZmhhbmRsZV9kb2N9LAotICAgIHsia2JoaXQiLCAgICAgICAgICAgICAgICAgICBtc3ZjcnRfa2JoaXQsIE1FVEhfVkFSQVJHUywga2JoaXRfZG9jfSwKLSAgICB7ImdldGNoIiwgICAgICAgICAgICAgICAgICAgbXN2Y3J0X2dldGNoLCBNRVRIX1ZBUkFSR1MsIGdldGNoX2RvY30sCi0gICAgeyJnZXRjaGUiLCAgICAgICAgICAgICAgICAgIG1zdmNydF9nZXRjaGUsIE1FVEhfVkFSQVJHUywgZ2V0Y2hlX2RvY30sCi0gICAgeyJwdXRjaCIsICAgICAgICAgICAgICAgICAgIG1zdmNydF9wdXRjaCwgTUVUSF9WQVJBUkdTLCBwdXRjaF9kb2N9LAotICAgIHsidW5nZXRjaCIsICAgICAgICAgICAgICAgICBtc3ZjcnRfdW5nZXRjaCwgTUVUSF9WQVJBUkdTLCB1bmdldGNoX2RvY30sCi0gICAgeyJTZXRFcnJvck1vZGUiLCAgICAgICAgICAgIHNldGVycm9ybW9kZSwgTUVUSF9WQVJBUkdTfSwKLSNpZmRlZiBfREVCVUcKLSAgICB7IkNydFNldFJlcG9ydEZpbGUiLCAgICAgICAgbXN2Y3J0X3NldHJlcG9ydGZpbGUsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJDcnRTZXRSZXBvcnRNb2RlIiwgICAgICAgIG1zdmNydF9zZXRyZXBvcnRtb2RlLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsic2V0X2Vycm9yX21vZGUiLCAgICAgICAgICBtc3ZjcnRfc2V0ZXJyb3Jtb2RlLCBNRVRIX1ZBUkFSR1N9LAotI2VuZGlmCi0jaWZkZWYgX1dDT05JT19ERUZJTkVECi0gICAgeyJnZXR3Y2giLCAgICAgICAgICAgICAgICAgIG1zdmNydF9nZXR3Y2gsIE1FVEhfVkFSQVJHUywgZ2V0d2NoX2RvY30sCi0gICAgeyJnZXR3Y2hlIiwgICAgICAgICAgICAgICAgIG1zdmNydF9nZXR3Y2hlLCBNRVRIX1ZBUkFSR1MsIGdldHdjaGVfZG9jfSwKLSAgICB7InB1dHdjaCIsICAgICAgICAgICAgICAgICAgbXN2Y3J0X3B1dHdjaCwgTUVUSF9WQVJBUkdTLCBwdXR3Y2hfZG9jfSwKLSAgICB7InVuZ2V0d2NoIiwgICAgICAgICAgICAgICAgbXN2Y3J0X3VuZ2V0d2NoLCBNRVRIX1ZBUkFSR1MsIHVuZ2V0d2NoX2RvY30sCi0jZW5kaWYKKyAgICBNU1ZDUlRfSEVBUE1JTl9NRVRIT0RERUYKKyAgICBNU1ZDUlRfTE9DS0lOR19NRVRIT0RERUYKKyAgICBNU1ZDUlRfU0VUTU9ERV9NRVRIT0RERUYKKyAgICBNU1ZDUlRfT1BFTl9PU0ZIQU5ETEVfTUVUSE9EREVGCisgICAgTVNWQ1JUX0dFVF9PU0ZIQU5ETEVfTUVUSE9EREVGCisgICAgTVNWQ1JUX0tCSElUX01FVEhPRERFRgorICAgIE1TVkNSVF9HRVRDSF9NRVRIT0RERUYKKyAgICBNU1ZDUlRfR0VUQ0hFX01FVEhPRERFRgorICAgIE1TVkNSVF9QVVRDSF9NRVRIT0RERUYKKyAgICBNU1ZDUlRfVU5HRVRDSF9NRVRIT0RERUYKKyAgICBNU1ZDUlRfU0VURVJST1JNT0RFX01FVEhPRERFRgorICAgIE1TVkNSVF9DUlRTRVRSRVBPUlRGSUxFX01FVEhPRERFRgorICAgIE1TVkNSVF9DUlRTRVRSRVBPUlRNT0RFX01FVEhPRERFRgorICAgIE1TVkNSVF9TRVRfRVJST1JfTU9ERV9NRVRIT0RERUYKKyAgICBNU1ZDUlRfR0VUV0NIX01FVEhPRERFRgorICAgIE1TVkNSVF9HRVRXQ0hFX01FVEhPRERFRgorICAgIE1TVkNSVF9QVVRXQ0hfTUVUSE9EREVGCisgICAgTVNWQ1JUX1VOR0VUV0NIX01FVEhPRERFRgogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgICAgICBOVUxMfQogfTsKIApAQCAtNDYzLDYgKzQ5MywyMCBAQAogICAgIE5VTEwKIH07CiAKK3N0YXRpYyB2b2lkCitpbnNlcnRpbnQoUHlPYmplY3QgKmQsIGNoYXIgKm5hbWUsIGludCB2YWx1ZSkKK3sKKyAgICBQeU9iamVjdCAqdiA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZykgdmFsdWUpOworICAgIGlmICh2ID09IE5VTEwpIHsKKyAgICAgICAgLyogRG9uJ3QgYm90aGVyIHJlcG9ydGluZyB0aGlzIGVycm9yICovCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCBuYW1lLCB2KTsKKyAgICAgICAgUHlfREVDUkVGKHYpOworICAgIH0KK30KKwogUHlNT0RJTklUX0ZVTkMKIFB5SW5pdF9tc3ZjcnQodm9pZCkKIHsKZGlmZiAtLWdpdCBhL1BDL3B5Y29uZmlnLmggYi9QQy9weWNvbmZpZy5oCmluZGV4IGUxYzE5ODguLmQ0NDE3M2EgMTAwNjQ0Ci0tLSBhL1BDL3B5Y29uZmlnLmgKKysrIGIvUEMvcHljb25maWcuaApAQCAtMTQ1LDE4ICsxNDUsMjQgQEAKICNpZiBkZWZpbmVkKF9NX0lBNjQpCiAjZGVmaW5lIENPTVBJTEVSIF9QeV9QQVNURV9WRVJTSU9OKCI2NCBiaXQgKEl0YW5pdW0pIikKICNkZWZpbmUgTVNfV0lOSTY0CisjZGVmaW5lIFBZRF9QTEFURk9STV9UQUcgIndpbl9pYTY0IgogI2VsaWYgZGVmaW5lZChfTV9YNjQpIHx8IGRlZmluZWQoX01fQU1ENjQpCisjaWYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKQorI2RlZmluZSBDT01QSUxFUiAoIltJQ0Mgdi4iIF9QeV9TVFJJTkdJWkUoX19JTlRFTF9DT01QSUxFUikgIiA2NCBiaXQgKGFtZDY0KSB3aXRoIE1TQyB2LiIgX1B5X1NUUklOR0laRShfTVNDX1ZFUikgIiBDUlRdIikKKyNlbHNlCiAjZGVmaW5lIENPTVBJTEVSIF9QeV9QQVNURV9WRVJTSU9OKCI2NCBiaXQgKEFNRDY0KSIpCisjZW5kaWYgLyogX19JTlRFTF9DT01QSUxFUiAqLwogI2RlZmluZSBNU19XSU5YNjQKKyNkZWZpbmUgUFlEX1BMQVRGT1JNX1RBRyAid2luX2FtZDY0IgogI2Vsc2UKICNkZWZpbmUgQ09NUElMRVIgX1B5X1BBU1RFX1ZFUlNJT04oIjY0IGJpdCAoVW5rbm93bikiKQogI2VuZGlmCiAjZW5kaWYgLyogTVNfV0lONjQgKi8KIAogLyogc2V0IHRoZSB2ZXJzaW9uIG1hY3JvcyBmb3IgdGhlIHdpbmRvd3MgaGVhZGVycyAqLwotLyogUHl0aG9uIDMuNCsgcmVxdWlyZXMgV2luZG93cyBYUCBvciBncmVhdGVyICovCi0jZGVmaW5lIFB5X1dJTlZFUiAweDA1MDEgLyogX1dJTjMyX1dJTk5UX1dJTlhQICovCi0jZGVmaW5lIFB5X05URERJIE5URERJX1dJTlhQCisvKiBQeXRob24gMy41KyByZXF1aXJlcyBXaW5kb3dzIFZpc3RhIG9yIGdyZWF0ZXIgKi8KKyNkZWZpbmUgUHlfV0lOVkVSIDB4MDYwMCAvKiBfV0lOMzJfV0lOTlRfVklTVEEgKi8KKyNkZWZpbmUgUHlfTlREREkgTlRERElfVklTVEEKIAogLyogV2Ugb25seSBzZXQgdGhlc2UgdmFsdWVzIHdoZW4gYnVpbGRpbmcgUHl0aG9uIC0gd2UgZG9uJ3Qgd2FudCB0byBmb3JjZQogICAgdGhlc2UgdmFsdWVzIG9uIGV4dGVuc2lvbnMsIGFzIHRoYXQgd2lsbCBhZmZlY3QgdGhlIHByb3RvdHlwZXMgYW5kCkBAIC0xOTIsOSArMTk4LDE1IEBACiAKICNpZiBkZWZpbmVkKE1TX1dJTjMyKSAmJiAhZGVmaW5lZChNU19XSU42NCkKICNpZiBkZWZpbmVkKF9NX0lYODYpCisjaWYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKQorI2RlZmluZSBDT01QSUxFUiAoIltJQ0Mgdi4iIF9QeV9TVFJJTkdJWkUoX19JTlRFTF9DT01QSUxFUikgIiAzMiBiaXQgKEludGVsKSB3aXRoIE1TQyB2LiIgX1B5X1NUUklOR0laRShfTVNDX1ZFUikgIiBDUlRdIikKKyNlbHNlCiAjZGVmaW5lIENPTVBJTEVSIF9QeV9QQVNURV9WRVJTSU9OKCIzMiBiaXQgKEludGVsKSIpCisjZW5kaWYgLyogX19JTlRFTF9DT01QSUxFUiAqLworI2RlZmluZSBQWURfUExBVEZPUk1fVEFHICJ3aW4zMiIKICNlbGlmIGRlZmluZWQoX01fQVJNKQogI2RlZmluZSBDT01QSUxFUiBfUHlfUEFTVEVfVkVSU0lPTigiMzIgYml0IChBUk0pIikKKyNkZWZpbmUgUFlEX1BMQVRGT1JNX1RBRyAid2luX2FybSIKICNlbHNlCiAjZGVmaW5lIENPTVBJTEVSIF9QeV9QQVNURV9WRVJTSU9OKCIzMiBiaXQgKFVua25vd24pIikKICNlbmRpZgpAQCAtMjEzLDYgKzIyNSwxMyBAQAogI2RlZmluZSBoeXBvdCBfaHlwb3QKICNlbmRpZgogCisvKiBWUyAyMDE1IGRlZmluZXMgdGhlc2UgbmFtZXMgd2l0aCBhIGxlYWRpbmcgdW5kZXJzY29yZSAqLworI2lmIF9NU0NfVkVSID49IDE5MDAKKyNkZWZpbmUgdGltZXpvbmUgX3RpbWV6b25lCisjZGVmaW5lIGRheWxpZ2h0IF9kYXlsaWdodAorI2RlZmluZSB0em5hbWUgX3R6bmFtZQorI2VuZGlmCisKIC8qIFNpZGUgYnkgU2lkZSBhc3NlbWJsaWVzIHN1cHBvcnRlZCBpbiBWUyAyMDA1IGFuZCBWUyAyMDA4IGJ1dCBub3QgMjAxMCovCiAjaWYgX01TQ19WRVIgPj0gMTQwMCAmJiBfTVNDX1ZFUiA8IDE2MDAKICNkZWZpbmUgSEFWRV9TWFMgMQpAQCAtMjI3LDM1ICsyNDYsNiBAQAogI2VuZGlmIC8qIF9NU0NfVkVSICovCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiBUaGUgQm9ybGFuZCBjb21waWxlciBkZWZpbmVzIF9fQk9STEFORENfXyAqLwotLyogWFhYIFRoZXNlIGRlZmluZXMgYXJlIGxpa2VseSBpbmNvbXBsZXRlLCBidXQgc2hvdWxkIGJlIGVhc3kgdG8gZml4LiAqLwotI2lmZGVmIF9fQk9STEFORENfXwotI2RlZmluZSBDT01QSUxFUiAiW0JvcmxhbmRdIgotCi0jaWZkZWYgX1dJTjMyCi0vKiB0ZXN0ZWQgd2l0aCBCQ0MgNS41IChfX0JPUkxBTkRDX18gPj0gMHgwNTUwKQotICovCi0KLXR5cGVkZWYgaW50IHBpZF90OwotLyogQkNDNTUgc2VlbXMgdG8gdW5kZXJzdGFuZCBfX2RlY2xzcGVjKGRsbGltcG9ydCksIGl0IGlzIHVzZWQgaW4gaXRzCi0gICBvd24gaGVhZGVyIGZpbGVzICh3aW5udC5oLCAuLi4pIC0gc28gd2UgY2FuIGRvIG5vdGhpbmcgYW5kIGdldCB0aGUgZGVmYXVsdCovCi0KLSN1bmRlZiBIQVZFX1NZU19VVElNRV9ICi0jZGVmaW5lIEhBVkVfVVRJTUVfSAotI2RlZmluZSBIQVZFX0RJUkVOVF9ICi0KLS8qIHJlbmFtZSBhIGZldyBmdW5jdGlvbnMgZm9yIHRoZSBCb3JsYW5kIGNvbXBpbGVyICovCi0jaW5jbHVkZSA8aW8uaD4KLSNkZWZpbmUgX2Noc2l6ZSBjaHNpemUKLSNkZWZpbmUgX3NldG1vZGUgc2V0bW9kZQotCi0jZWxzZSAvKiAhX1dJTjMyICovCi0jZXJyb3IgIk9ubHkgV2luMzIgYW5kIGxhdGVyIGFyZSBzdXBwb3J0ZWQiCi0jZW5kaWYgLyogIV9XSU4zMiAqLwotCi0jZW5kaWYgLyogQk9STEFOREMgKi8KLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIGVnY3MvZ251LXdpbjMyIGRlZmluZXMgX19HTlVDX18gYW5kIF9XSU4zMiAqLwogI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX1dJTjMyKQogLyogWFhYIFRoZXNlIGRlZmluZXMgYXJlIGxpa2VseSBpbmNvbXBsZXRlLCBidXQgc2hvdWxkIGJlIGVhc3kgdG8gZml4LgpAQCAtMzIyLDExICszMTIsMTEgQEAKIAkJCXRoZWlyIE1ha2VmaWxlIChvdGhlciBjb21waWxlcnMgYXJlIGdlbmVyYWxseQogCQkJdGFrZW4gY2FyZSBvZiBieSBkaXN0dXRpbHMuKSAqLwogIwkJCWlmIGRlZmluZWQoX0RFQlVHKQotIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjM0X2QubGliIikKKyMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zNV9kLmxpYiIpCiAjCQkJZWxpZiBkZWZpbmVkKFB5X0xJTUlURURfQVBJKQogIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjMubGliIikKICMJCQllbHNlCi0jCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMzQubGliIikKKyMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zNS5saWIiKQogIwkJCWVuZGlmIC8qIF9ERUJVRyAqLwogIwkJZW5kaWYgLyogX01TQ19WRVIgKi8KICMJZW5kaWYgLyogUHlfQlVJTERfQ09SRSAqLwpkaWZmIC0tZ2l0IGEvUEMvcHlsYXVuY2hlci5yYyBiL1BDL3B5bGF1bmNoZXIucmMKaW5kZXggZGY1ODI0YS4uYThkYjBhOCAxMDA2NDQKLS0tIGEvUEMvcHlsYXVuY2hlci5yYworKysgYi9QQy9weWxhdW5jaGVyLnJjCkBAIC0xLDUxICsxLDUwIEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogCi0jZGVmaW5lIE1TX1dJTkRPV1MKLSNpbmNsdWRlICIuLlxJbmNsdWRlXG1vZHN1cHBvcnQuaCIKLSNpbmNsdWRlICIuLlxJbmNsdWRlXHBhdGNobGV2ZWwuaCIKLSNpZmRlZiBfREVCVUcKLSMgICBpbmNsdWRlICJweXRob25udF9yY19kLmgiCi0jZWxzZQotIyAgIGluY2x1ZGUgInB5dGhvbm50X3JjLmgiCi0jZW5kaWYKKyNpbmNsdWRlICJweXRob25fdmVyX3JjLmgiCiAKLSNkZWZpbmUgUFlUSE9OX1ZFUlNJT04gUFlfVkVSU0lPTiAiXDAiCi0jZGVmaW5lIFBZVkVSU0lPTjY0IFBZX01BSk9SX1ZFUlNJT04sIFBZX01JTk9SX1ZFUlNJT04sIEZJRUxEMywgUFlUSE9OX0FQSV9WRVJTSU9OCisvLyBJbmNsdWRlIHRoZSBtYW5pZmVzdCBmaWxlIHRoYXQgaW5kaWNhdGVzIHdlIHN1cHBvcnQgYWxsCisvLyBjdXJyZW50IHZlcnNpb25zIG9mIFdpbmRvd3MuCisjaW5jbHVkZSA8d2ludXNlci5oPgorMSBSVF9NQU5JRkVTVCAicHl0aG9uLm1hbmlmZXN0IgorCisxIElDT04gRElTQ0FSREFCTEUgImxhdW5jaGVyLmljbyIgCisyIElDT04gRElTQ0FSREFCTEUgInB5LmljbyIgCiszIElDT04gRElTQ0FSREFCTEUgInB5Yy5pY28iIAorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIFZlcnNpb24KKy8vCiAKIFZTX1ZFUlNJT05fSU5GTyBWRVJTSU9OSU5GTwogIEZJTEVWRVJTSU9OIFBZVkVSU0lPTjY0CiAgUFJPRFVDVFZFUlNJT04gUFlWRVJTSU9ONjQKLSBGSUxFRkxBR1NNQVNLIDB4MTdMCisgRklMRUZMQUdTTUFTSyAweDNmTAogI2lmZGVmIF9ERUJVRwotIEZJTEVGTEFHUyAweDFMCisgRklMRUZMQUdTIFZTX0ZGX0RFQlVHCiAjZWxzZQogIEZJTEVGTEFHUyAweDBMCiAjZW5kaWYKLSBGSUxFT1MgMHg0TAotIEZJTEVUWVBFIDB4MUwKKyBGSUxFT1MgVk9TX19XSU5ET1dTMzIKKyBGSUxFVFlQRSBWRlRfQVBQCiAgRklMRVNVQlRZUEUgMHgwTAogQkVHSU4KICAgICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iCiAgICAgQkVHSU4KLSAgICAgICAgQkxPQ0sgIjA4MDkwNGIwIgorICAgICAgICBCTE9DSyAiMDAwMDA0YjAiCiAgICAgICAgIEJFR0lOCi0gICAgICAgICAgICBWQUxVRSAiQ29tbWVudHMiLCAiUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzIgotICAgICAgICAgICAgVkFMVUUgIkNvbXBhbnlOYW1lIiwgIlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uIgotICAgICAgICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MgKENvbnNvbGUpIgorICAgICAgICAgICAgVkFMVUUgIkNvbXBhbnlOYW1lIiwgUFlUSE9OX0NPTVBBTlkgIlwwIgorICAgICAgICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJQeXRob25cMCIKICAgICAgICAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsIFBZVEhPTl9WRVJTSU9OCi0gICAgICAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgInB5IgotICAgICAgICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgIkNvcHlyaWdodCAoQykgMjAxMS0yMDEyIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uIgotICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAicHkiCi0gICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAiUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzIgorICAgICAgICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJQeXRob24gTGF1bmNoZXJcMCIKKyAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsIFBZVEhPTl9DT1BZUklHSFQgIlwwIgorICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAicHkiIFBZVEhPTl9ERUJVR19FWFQgIi5leGVcMCIKKyAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICJQeXRob25cMCIKICAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsIFBZVEhPTl9WRVJTSU9OCiAgICAgICAgIEVORAogICAgIEVORAogICAgIEJMT0NLICJWYXJGaWxlSW5mbyIKICAgICBCRUdJTgotICAgICAgICBWQUxVRSAiVHJhbnNsYXRpb24iLCAweDgwOSwgMTIwMAorICAgICAgICBWQUxVRSAiVHJhbnNsYXRpb24iLCAweDAsIDEyMDAKICAgICBFTkQKLUVORAotCi1JRElfSUNPTjEgICAgICAgICAgICAgICBJQ09OICAgICAgICAgICAgICAgICAgICAibGF1bmNoZXIuaWNvIgotCi0KK0VORApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbi5tYW5pZmVzdCBiL1BDL3B5dGhvbi5tYW5pZmVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjdiMmY4Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvcHl0aG9uLm1hbmlmZXN0CkBAIC0wLDAgKzEsMTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KKzxhc3NlbWJseSB4bWxucz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTphc20udjEiIG1hbmlmZXN0VmVyc2lvbj0iMS4wIj4KKyAgPHRydXN0SW5mbz4KKyAgICA8c2VjdXJpdHk+CisgICAgICA8cmVxdWVzdGVkUHJpdmlsZWdlcz4KKyAgICAgICAgPHJlcXVlc3RlZEV4ZWN1dGlvbkxldmVsIGxldmVsPSJhc0ludm9rZXIiIHVpQWNjZXNzPSJmYWxzZSIvPgorICAgICAgPC9yZXF1ZXN0ZWRQcml2aWxlZ2VzPgorICAgIDwvc2VjdXJpdHk+CisgIDwvdHJ1c3RJbmZvPgorICA8Y29tcGF0aWJpbGl0eSB4bWxucz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpjb21wYXRpYmlsaXR5LnYxIj4gCisgICAgPGFwcGxpY2F0aW9uPiAKKyAgICAgIDxzdXBwb3J0ZWRPUyBJZD0ie2UyMDExNDU3LTE1NDYtNDNjNS1hNWZlLTAwOGRlZWUzZDNmMH0iLz4gCisgICAgICA8c3VwcG9ydGVkT1MgSWQ9InszNTEzOGI5YS01ZDk2LTRmYmQtOGUyZC1hMjQ0MDIyNWY5M2F9Ii8+CisgICAgICA8c3VwcG9ydGVkT1MgSWQ9Ins0YTJmMjhlMy01M2I5LTQ0NDEtYmE5Yy1kNjlkNGE0YTZlMzh9Ii8+CisgICAgICA8c3VwcG9ydGVkT1MgSWQ9InsxZjY3NmM3Ni04MGUxLTQyMzktOTViYi04M2QwZjZkMGRhNzh9Ii8+CisgICAgICA8c3VwcG9ydGVkT1MgSWQ9Ins4ZTBmN2ExMi1iZmIzLTRmZTgtYjlhNS00OGZkNTBhMTVhOWF9Ii8+CisgICAgPC9hcHBsaWNhdGlvbj4gCisgIDwvY29tcGF0aWJpbGl0eT4KKzwvYXNzZW1ibHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uMy5kZWYgYi9QQy9weXRob24zLmRlZgppbmRleCAzN2U0NTRiLi44OGMwNzQyIDEwMDY0NAotLS0gYS9QQy9weXRob24zLmRlZgorKysgYi9QQy9weXRob24zLmRlZgpAQCAtMSw3MDEgKzEsNzEzIEBACi07IFdoZW4gY2hhbmdpbmcgdGhpcyBmaWxlLCBydW4gcHl0aG9uMzRnZW4ucHkKKzsgVGhpcyBmaWxlIHNwZWNpZmllcyB0aGUgaW1wb3J0IGZvcndhcmRpbmcgZm9yIHB5dGhvbjMuZGxsCis7IEl0IGlzIHVzZWQgd2hlbiBidWlsZGluZyBweXRob24zZGxsLnZjeHByb2oKIExJQlJBUlkJInB5dGhvbjMiCiBFWFBPUlRTCi0gIFB5QXJnX1BhcnNlPXB5dGhvbjM0LlB5QXJnX1BhcnNlCi0gIFB5QXJnX1BhcnNlVHVwbGU9cHl0aG9uMzQuUHlBcmdfUGFyc2VUdXBsZQotICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHM9cHl0aG9uMzQuUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzCi0gIFB5QXJnX1VucGFja1R1cGxlPXB5dGhvbjM0LlB5QXJnX1VucGFja1R1cGxlCi0gIFB5QXJnX1ZhUGFyc2U9cHl0aG9uMzQuUHlBcmdfVmFQYXJzZQotICBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNC5QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcwotICBQeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHM9cHl0aG9uMzQuUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzCi0gIFB5QmFzZU9iamVjdF9UeXBlPXB5dGhvbjM0LlB5QmFzZU9iamVjdF9UeXBlIERBVEEKLSAgUHlCb29sX0Zyb21Mb25nPXB5dGhvbjM0LlB5Qm9vbF9Gcm9tTG9uZwotICBQeUJvb2xfVHlwZT1weXRob24zNC5QeUJvb2xfVHlwZSBEQVRBCi0gIFB5Qnl0ZUFycmF5SXRlcl9UeXBlPXB5dGhvbjM0LlB5Qnl0ZUFycmF5SXRlcl9UeXBlIERBVEEKLSAgUHlCeXRlQXJyYXlfQXNTdHJpbmc9cHl0aG9uMzQuUHlCeXRlQXJyYXlfQXNTdHJpbmcKLSAgUHlCeXRlQXJyYXlfQ29uY2F0PXB5dGhvbjM0LlB5Qnl0ZUFycmF5X0NvbmNhdAotICBQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0PXB5dGhvbjM0LlB5Qnl0ZUFycmF5X0Zyb21PYmplY3QKLSAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzQuUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUKLSAgUHlCeXRlQXJyYXlfUmVzaXplPXB5dGhvbjM0LlB5Qnl0ZUFycmF5X1Jlc2l6ZQotICBQeUJ5dGVBcnJheV9TaXplPXB5dGhvbjM0LlB5Qnl0ZUFycmF5X1NpemUKLSAgUHlCeXRlQXJyYXlfVHlwZT1weXRob24zNC5QeUJ5dGVBcnJheV9UeXBlIERBVEEKLSAgUHlCeXRlc0l0ZXJfVHlwZT1weXRob24zNC5QeUJ5dGVzSXRlcl9UeXBlIERBVEEKLSAgUHlCeXRlc19Bc1N0cmluZz1weXRob24zNC5QeUJ5dGVzX0FzU3RyaW5nCi0gIFB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplPXB5dGhvbjM0LlB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplCi0gIFB5Qnl0ZXNfQ29uY2F0PXB5dGhvbjM0LlB5Qnl0ZXNfQ29uY2F0Ci0gIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsPXB5dGhvbjM0LlB5Qnl0ZXNfQ29uY2F0QW5kRGVsCi0gIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlPXB5dGhvbjM0LlB5Qnl0ZXNfRGVjb2RlRXNjYXBlCi0gIFB5Qnl0ZXNfRnJvbUZvcm1hdD1weXRob24zNC5QeUJ5dGVzX0Zyb21Gb3JtYXQKLSAgUHlCeXRlc19Gcm9tRm9ybWF0Vj1weXRob24zNC5QeUJ5dGVzX0Zyb21Gb3JtYXRWCi0gIFB5Qnl0ZXNfRnJvbU9iamVjdD1weXRob24zNC5QeUJ5dGVzX0Zyb21PYmplY3QKLSAgUHlCeXRlc19Gcm9tU3RyaW5nPXB5dGhvbjM0LlB5Qnl0ZXNfRnJvbVN0cmluZwotICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM0LlB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUKLSAgUHlCeXRlc19SZXByPXB5dGhvbjM0LlB5Qnl0ZXNfUmVwcgotICBQeUJ5dGVzX1NpemU9cHl0aG9uMzQuUHlCeXRlc19TaXplCi0gIFB5Qnl0ZXNfVHlwZT1weXRob24zNC5QeUJ5dGVzX1R5cGUgREFUQQotICBQeUNGdW5jdGlvbl9DYWxsPXB5dGhvbjM0LlB5Q0Z1bmN0aW9uX0NhbGwKLSAgUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdD1weXRob24zNC5QeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0Ci0gIFB5Q0Z1bmN0aW9uX0dldEZsYWdzPXB5dGhvbjM0LlB5Q0Z1bmN0aW9uX0dldEZsYWdzCi0gIFB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uPXB5dGhvbjM0LlB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uCi0gIFB5Q0Z1bmN0aW9uX0dldFNlbGY9cHl0aG9uMzQuUHlDRnVuY3Rpb25fR2V0U2VsZgotICBQeUNGdW5jdGlvbl9OZXc9cHl0aG9uMzQuUHlDRnVuY3Rpb25fTmV3Ci0gIFB5Q0Z1bmN0aW9uX05ld0V4PXB5dGhvbjM0LlB5Q0Z1bmN0aW9uX05ld0V4Ci0gIFB5Q0Z1bmN0aW9uX1R5cGU9cHl0aG9uMzQuUHlDRnVuY3Rpb25fVHlwZSBEQVRBCi0gIFB5Q2FsbEl0ZXJfTmV3PXB5dGhvbjM0LlB5Q2FsbEl0ZXJfTmV3Ci0gIFB5Q2FsbEl0ZXJfVHlwZT1weXRob24zNC5QeUNhbGxJdGVyX1R5cGUgREFUQQotICBQeUNhbGxhYmxlX0NoZWNrPXB5dGhvbjM0LlB5Q2FsbGFibGVfQ2hlY2sKLSAgUHlDYXBzdWxlX0dldENvbnRleHQ9cHl0aG9uMzQuUHlDYXBzdWxlX0dldENvbnRleHQKLSAgUHlDYXBzdWxlX0dldERlc3RydWN0b3I9cHl0aG9uMzQuUHlDYXBzdWxlX0dldERlc3RydWN0b3IKLSAgUHlDYXBzdWxlX0dldE5hbWU9cHl0aG9uMzQuUHlDYXBzdWxlX0dldE5hbWUKLSAgUHlDYXBzdWxlX0dldFBvaW50ZXI9cHl0aG9uMzQuUHlDYXBzdWxlX0dldFBvaW50ZXIKLSAgUHlDYXBzdWxlX0ltcG9ydD1weXRob24zNC5QeUNhcHN1bGVfSW1wb3J0Ci0gIFB5Q2Fwc3VsZV9Jc1ZhbGlkPXB5dGhvbjM0LlB5Q2Fwc3VsZV9Jc1ZhbGlkCi0gIFB5Q2Fwc3VsZV9OZXc9cHl0aG9uMzQuUHlDYXBzdWxlX05ldwotICBQeUNhcHN1bGVfU2V0Q29udGV4dD1weXRob24zNC5QeUNhcHN1bGVfU2V0Q29udGV4dAotICBQeUNhcHN1bGVfU2V0RGVzdHJ1Y3Rvcj1weXRob24zNC5QeUNhcHN1bGVfU2V0RGVzdHJ1Y3RvcgotICBQeUNhcHN1bGVfU2V0TmFtZT1weXRob24zNC5QeUNhcHN1bGVfU2V0TmFtZQotICBQeUNhcHN1bGVfU2V0UG9pbnRlcj1weXRob24zNC5QeUNhcHN1bGVfU2V0UG9pbnRlcgotICBQeUNhcHN1bGVfVHlwZT1weXRob24zNC5QeUNhcHN1bGVfVHlwZSBEQVRBCi0gIFB5Q2xhc3NNZXRob2REZXNjcl9UeXBlPXB5dGhvbjM0LlB5Q2xhc3NNZXRob2REZXNjcl9UeXBlIERBVEEKLSAgUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzPXB5dGhvbjM0LlB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycwotICBQeUNvZGVjX0RlY29kZT1weXRob24zNC5QeUNvZGVjX0RlY29kZQotICBQeUNvZGVjX0RlY29kZXI9cHl0aG9uMzQuUHlDb2RlY19EZWNvZGVyCi0gIFB5Q29kZWNfRW5jb2RlPXB5dGhvbjM0LlB5Q29kZWNfRW5jb2RlCi0gIFB5Q29kZWNfRW5jb2Rlcj1weXRob24zNC5QeUNvZGVjX0VuY29kZXIKLSAgUHlDb2RlY19JZ25vcmVFcnJvcnM9cHl0aG9uMzQuUHlDb2RlY19JZ25vcmVFcnJvcnMKLSAgUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXI9cHl0aG9uMzQuUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXIKLSAgUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXI9cHl0aG9uMzQuUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXIKLSAgUHlDb2RlY19Lbm93bkVuY29kaW5nPXB5dGhvbjM0LlB5Q29kZWNfS25vd25FbmNvZGluZwotICBQeUNvZGVjX0xvb2t1cEVycm9yPXB5dGhvbjM0LlB5Q29kZWNfTG9va3VwRXJyb3IKLSAgUHlDb2RlY19SZWdpc3Rlcj1weXRob24zNC5QeUNvZGVjX1JlZ2lzdGVyCi0gIFB5Q29kZWNfUmVnaXN0ZXJFcnJvcj1weXRob24zNC5QeUNvZGVjX1JlZ2lzdGVyRXJyb3IKLSAgUHlDb2RlY19SZXBsYWNlRXJyb3JzPXB5dGhvbjM0LlB5Q29kZWNfUmVwbGFjZUVycm9ycwotICBQeUNvZGVjX1N0cmVhbVJlYWRlcj1weXRob24zNC5QeUNvZGVjX1N0cmVhbVJlYWRlcgotICBQeUNvZGVjX1N0cmVhbVdyaXRlcj1weXRob24zNC5QeUNvZGVjX1N0cmVhbVdyaXRlcgotICBQeUNvZGVjX1N0cmljdEVycm9ycz1weXRob24zNC5QeUNvZGVjX1N0cmljdEVycm9ycwotICBQeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzPXB5dGhvbjM0LlB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnMKLSAgUHlDb21wbGV4X0Zyb21Eb3VibGVzPXB5dGhvbjM0LlB5Q29tcGxleF9Gcm9tRG91YmxlcwotICBQeUNvbXBsZXhfSW1hZ0FzRG91YmxlPXB5dGhvbjM0LlB5Q29tcGxleF9JbWFnQXNEb3VibGUKLSAgUHlDb21wbGV4X1JlYWxBc0RvdWJsZT1weXRob24zNC5QeUNvbXBsZXhfUmVhbEFzRG91YmxlCi0gIFB5Q29tcGxleF9UeXBlPXB5dGhvbjM0LlB5Q29tcGxleF9UeXBlIERBVEEKLSAgUHlEZXNjcl9OZXdDbGFzc01ldGhvZD1weXRob24zNC5QeURlc2NyX05ld0NsYXNzTWV0aG9kCi0gIFB5RGVzY3JfTmV3R2V0U2V0PXB5dGhvbjM0LlB5RGVzY3JfTmV3R2V0U2V0Ci0gIFB5RGVzY3JfTmV3TWVtYmVyPXB5dGhvbjM0LlB5RGVzY3JfTmV3TWVtYmVyCi0gIFB5RGVzY3JfTmV3TWV0aG9kPXB5dGhvbjM0LlB5RGVzY3JfTmV3TWV0aG9kCi0gIFB5RGljdEl0ZW1zX1R5cGU9cHl0aG9uMzQuUHlEaWN0SXRlbXNfVHlwZSBEQVRBCi0gIFB5RGljdEl0ZXJJdGVtX1R5cGU9cHl0aG9uMzQuUHlEaWN0SXRlckl0ZW1fVHlwZSBEQVRBCi0gIFB5RGljdEl0ZXJLZXlfVHlwZT1weXRob24zNC5QeURpY3RJdGVyS2V5X1R5cGUgREFUQQotICBQeURpY3RJdGVyVmFsdWVfVHlwZT1weXRob24zNC5QeURpY3RJdGVyVmFsdWVfVHlwZSBEQVRBCi0gIFB5RGljdEtleXNfVHlwZT1weXRob24zNC5QeURpY3RLZXlzX1R5cGUgREFUQQotICBQeURpY3RQcm94eV9OZXc9cHl0aG9uMzQuUHlEaWN0UHJveHlfTmV3Ci0gIFB5RGljdFByb3h5X1R5cGU9cHl0aG9uMzQuUHlEaWN0UHJveHlfVHlwZSBEQVRBCi0gIFB5RGljdFZhbHVlc19UeXBlPXB5dGhvbjM0LlB5RGljdFZhbHVlc19UeXBlIERBVEEKLSAgUHlEaWN0X0NsZWFyPXB5dGhvbjM0LlB5RGljdF9DbGVhcgotICBQeURpY3RfQ29udGFpbnM9cHl0aG9uMzQuUHlEaWN0X0NvbnRhaW5zCi0gIFB5RGljdF9Db3B5PXB5dGhvbjM0LlB5RGljdF9Db3B5Ci0gIFB5RGljdF9EZWxJdGVtPXB5dGhvbjM0LlB5RGljdF9EZWxJdGVtCi0gIFB5RGljdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjM0LlB5RGljdF9EZWxJdGVtU3RyaW5nCi0gIFB5RGljdF9HZXRJdGVtPXB5dGhvbjM0LlB5RGljdF9HZXRJdGVtCi0gIFB5RGljdF9HZXRJdGVtU3RyaW5nPXB5dGhvbjM0LlB5RGljdF9HZXRJdGVtU3RyaW5nCi0gIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yPXB5dGhvbjM0LlB5RGljdF9HZXRJdGVtV2l0aEVycm9yCi0gIFB5RGljdF9JdGVtcz1weXRob24zNC5QeURpY3RfSXRlbXMKLSAgUHlEaWN0X0tleXM9cHl0aG9uMzQuUHlEaWN0X0tleXMKLSAgUHlEaWN0X01lcmdlPXB5dGhvbjM0LlB5RGljdF9NZXJnZQotICBQeURpY3RfTWVyZ2VGcm9tU2VxMj1weXRob24zNC5QeURpY3RfTWVyZ2VGcm9tU2VxMgotICBQeURpY3RfTmV3PXB5dGhvbjM0LlB5RGljdF9OZXcKLSAgUHlEaWN0X05leHQ9cHl0aG9uMzQuUHlEaWN0X05leHQKLSAgUHlEaWN0X1NldEl0ZW09cHl0aG9uMzQuUHlEaWN0X1NldEl0ZW0KLSAgUHlEaWN0X1NldEl0ZW1TdHJpbmc9cHl0aG9uMzQuUHlEaWN0X1NldEl0ZW1TdHJpbmcKLSAgUHlEaWN0X1NpemU9cHl0aG9uMzQuUHlEaWN0X1NpemUKLSAgUHlEaWN0X1R5cGU9cHl0aG9uMzQuUHlEaWN0X1R5cGUgREFUQQotICBQeURpY3RfVXBkYXRlPXB5dGhvbjM0LlB5RGljdF9VcGRhdGUKLSAgUHlEaWN0X1ZhbHVlcz1weXRob24zNC5QeURpY3RfVmFsdWVzCi0gIFB5RWxsaXBzaXNfVHlwZT1weXRob24zNC5QeUVsbGlwc2lzX1R5cGUgREFUQQotICBQeUVudW1fVHlwZT1weXRob24zNC5QeUVudW1fVHlwZSBEQVRBCi0gIFB5RXJyX0JhZEFyZ3VtZW50PXB5dGhvbjM0LlB5RXJyX0JhZEFyZ3VtZW50Ci0gIFB5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zNC5QeUVycl9CYWRJbnRlcm5hbENhbGwKLSAgUHlFcnJfQ2hlY2tTaWduYWxzPXB5dGhvbjM0LlB5RXJyX0NoZWNrU2lnbmFscwotICBQeUVycl9DbGVhcj1weXRob24zNC5QeUVycl9DbGVhcgotICBQeUVycl9EaXNwbGF5PXB5dGhvbjM0LlB5RXJyX0Rpc3BsYXkKLSAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zNC5QeUVycl9FeGNlcHRpb25NYXRjaGVzCi0gIFB5RXJyX0ZldGNoPXB5dGhvbjM0LlB5RXJyX0ZldGNoCi0gIFB5RXJyX0Zvcm1hdD1weXRob24zNC5QeUVycl9Gb3JtYXQKLSAgUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM0LlB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcwotICBQeUVycl9OZXdFeGNlcHRpb249cHl0aG9uMzQuUHlFcnJfTmV3RXhjZXB0aW9uCi0gIFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2M9cHl0aG9uMzQuUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYwotICBQeUVycl9Ob01lbW9yeT1weXRob24zNC5QeUVycl9Ob01lbW9yeQotICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb249cHl0aG9uMzQuUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uCi0gIFB5RXJyX09jY3VycmVkPXB5dGhvbjM0LlB5RXJyX09jY3VycmVkCi0gIFB5RXJyX1ByaW50PXB5dGhvbjM0LlB5RXJyX1ByaW50Ci0gIFB5RXJyX1ByaW50RXg9cHl0aG9uMzQuUHlFcnJfUHJpbnRFeAotICBQeUVycl9Qcm9ncmFtVGV4dD1weXRob24zNC5QeUVycl9Qcm9ncmFtVGV4dAotICBQeUVycl9SZXN0b3JlPXB5dGhvbjM0LlB5RXJyX1Jlc3RvcmUKLSAgUHlFcnJfU2V0RnJvbUVycm5vPXB5dGhvbjM0LlB5RXJyX1NldEZyb21FcnJubwotICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWU9cHl0aG9uMzQuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lCi0gIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdD1weXRob24zNC5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QKLSAgUHlFcnJfU2V0SW50ZXJydXB0PXB5dGhvbjM0LlB5RXJyX1NldEludGVycnVwdAotICBQeUVycl9TZXROb25lPXB5dGhvbjM0LlB5RXJyX1NldE5vbmUKLSAgUHlFcnJfU2V0T2JqZWN0PXB5dGhvbjM0LlB5RXJyX1NldE9iamVjdAotICBQeUVycl9TZXRTdHJpbmc9cHl0aG9uMzQuUHlFcnJfU2V0U3RyaW5nCi0gIFB5RXJyX1N5bnRheExvY2F0aW9uPXB5dGhvbjM0LlB5RXJyX1N5bnRheExvY2F0aW9uCi0gIFB5RXJyX1dhcm5FeD1weXRob24zNC5QeUVycl9XYXJuRXgKLSAgUHlFcnJfV2FybkV4cGxpY2l0PXB5dGhvbjM0LlB5RXJyX1dhcm5FeHBsaWNpdAotICBQeUVycl9XYXJuRm9ybWF0PXB5dGhvbjM0LlB5RXJyX1dhcm5Gb3JtYXQKLSAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlPXB5dGhvbjM0LlB5RXJyX1dyaXRlVW5yYWlzYWJsZQotICBQeUV2YWxfQWNxdWlyZUxvY2s9cHl0aG9uMzQuUHlFdmFsX0FjcXVpcmVMb2NrCi0gIFB5RXZhbF9BY3F1aXJlVGhyZWFkPXB5dGhvbjM0LlB5RXZhbF9BY3F1aXJlVGhyZWFkCi0gIFB5RXZhbF9DYWxsRnVuY3Rpb249cHl0aG9uMzQuUHlFdmFsX0NhbGxGdW5jdGlvbgotICBQeUV2YWxfQ2FsbE1ldGhvZD1weXRob24zNC5QeUV2YWxfQ2FsbE1ldGhvZAotICBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3Jkcz1weXRob24zNC5QeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcwotICBQeUV2YWxfRXZhbENvZGU9cHl0aG9uMzQuUHlFdmFsX0V2YWxDb2RlCi0gIFB5RXZhbF9FdmFsQ29kZUV4PXB5dGhvbjM0LlB5RXZhbF9FdmFsQ29kZUV4Ci0gIFB5RXZhbF9FdmFsRnJhbWU9cHl0aG9uMzQuUHlFdmFsX0V2YWxGcmFtZQotICBQeUV2YWxfRXZhbEZyYW1lRXg9cHl0aG9uMzQuUHlFdmFsX0V2YWxGcmFtZUV4Ci0gIFB5RXZhbF9HZXRCdWlsdGlucz1weXRob24zNC5QeUV2YWxfR2V0QnVpbHRpbnMKLSAgUHlFdmFsX0dldENhbGxTdGF0cz1weXRob24zNC5QeUV2YWxfR2V0Q2FsbFN0YXRzCi0gIFB5RXZhbF9HZXRGcmFtZT1weXRob24zNC5QeUV2YWxfR2V0RnJhbWUKLSAgUHlFdmFsX0dldEZ1bmNEZXNjPXB5dGhvbjM0LlB5RXZhbF9HZXRGdW5jRGVzYwotICBQeUV2YWxfR2V0RnVuY05hbWU9cHl0aG9uMzQuUHlFdmFsX0dldEZ1bmNOYW1lCi0gIFB5RXZhbF9HZXRHbG9iYWxzPXB5dGhvbjM0LlB5RXZhbF9HZXRHbG9iYWxzCi0gIFB5RXZhbF9HZXRMb2NhbHM9cHl0aG9uMzQuUHlFdmFsX0dldExvY2FscwotICBQeUV2YWxfSW5pdFRocmVhZHM9cHl0aG9uMzQuUHlFdmFsX0luaXRUaHJlYWRzCi0gIFB5RXZhbF9SZUluaXRUaHJlYWRzPXB5dGhvbjM0LlB5RXZhbF9SZUluaXRUaHJlYWRzCi0gIFB5RXZhbF9SZWxlYXNlTG9jaz1weXRob24zNC5QeUV2YWxfUmVsZWFzZUxvY2sKLSAgUHlFdmFsX1JlbGVhc2VUaHJlYWQ9cHl0aG9uMzQuUHlFdmFsX1JlbGVhc2VUaHJlYWQKLSAgUHlFdmFsX1Jlc3RvcmVUaHJlYWQ9cHl0aG9uMzQuUHlFdmFsX1Jlc3RvcmVUaHJlYWQKLSAgUHlFdmFsX1NhdmVUaHJlYWQ9cHl0aG9uMzQuUHlFdmFsX1NhdmVUaHJlYWQKLSAgUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZD1weXRob24zNC5QeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkCi0gIFB5RXhjX0FyaXRobWV0aWNFcnJvcj1weXRob24zNC5QeUV4Y19Bcml0aG1ldGljRXJyb3IgREFUQQotICBQeUV4Y19Bc3NlcnRpb25FcnJvcj1weXRob24zNC5QeUV4Y19Bc3NlcnRpb25FcnJvciBEQVRBCi0gIFB5RXhjX0F0dHJpYnV0ZUVycm9yPXB5dGhvbjM0LlB5RXhjX0F0dHJpYnV0ZUVycm9yIERBVEEKLSAgUHlFeGNfQmFzZUV4Y2VwdGlvbj1weXRob24zNC5QeUV4Y19CYXNlRXhjZXB0aW9uIERBVEEKLSAgUHlFeGNfQnVmZmVyRXJyb3I9cHl0aG9uMzQuUHlFeGNfQnVmZmVyRXJyb3IgREFUQQotICBQeUV4Y19CeXRlc1dhcm5pbmc9cHl0aG9uMzQuUHlFeGNfQnl0ZXNXYXJuaW5nIERBVEEKLSAgUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM0LlB5RXhjX0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCi0gIFB5RXhjX0VPRkVycm9yPXB5dGhvbjM0LlB5RXhjX0VPRkVycm9yIERBVEEKLSAgUHlFeGNfRW52aXJvbm1lbnRFcnJvcj1weXRob24zNC5QeUV4Y19FbnZpcm9ubWVudEVycm9yIERBVEEKLSAgUHlFeGNfRXhjZXB0aW9uPXB5dGhvbjM0LlB5RXhjX0V4Y2VwdGlvbiBEQVRBCi0gIFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcj1weXRob24zNC5QeUV4Y19GbG9hdGluZ1BvaW50RXJyb3IgREFUQQotICBQeUV4Y19GdXR1cmVXYXJuaW5nPXB5dGhvbjM0LlB5RXhjX0Z1dHVyZVdhcm5pbmcgREFUQQotICBQeUV4Y19HZW5lcmF0b3JFeGl0PXB5dGhvbjM0LlB5RXhjX0dlbmVyYXRvckV4aXQgREFUQQotICBQeUV4Y19JT0Vycm9yPXB5dGhvbjM0LlB5RXhjX0lPRXJyb3IgREFUQQotICBQeUV4Y19JbXBvcnRFcnJvcj1weXRob24zNC5QeUV4Y19JbXBvcnRFcnJvciBEQVRBCi0gIFB5RXhjX0ltcG9ydFdhcm5pbmc9cHl0aG9uMzQuUHlFeGNfSW1wb3J0V2FybmluZyBEQVRBCi0gIFB5RXhjX0luZGVudGF0aW9uRXJyb3I9cHl0aG9uMzQuUHlFeGNfSW5kZW50YXRpb25FcnJvciBEQVRBCi0gIFB5RXhjX0luZGV4RXJyb3I9cHl0aG9uMzQuUHlFeGNfSW5kZXhFcnJvciBEQVRBCi0gIFB5RXhjX0tleUVycm9yPXB5dGhvbjM0LlB5RXhjX0tleUVycm9yIERBVEEKLSAgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQ9cHl0aG9uMzQuUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQgREFUQQotICBQeUV4Y19Mb29rdXBFcnJvcj1weXRob24zNC5QeUV4Y19Mb29rdXBFcnJvciBEQVRBCi0gIFB5RXhjX01lbW9yeUVycm9yPXB5dGhvbjM0LlB5RXhjX01lbW9yeUVycm9yIERBVEEKLSAgUHlFeGNfTWVtb3J5RXJyb3JJbnN0PXB5dGhvbjM0LlB5RXhjX01lbW9yeUVycm9ySW5zdCBEQVRBCi0gIFB5RXhjX05hbWVFcnJvcj1weXRob24zNC5QeUV4Y19OYW1lRXJyb3IgREFUQQotICBQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yPXB5dGhvbjM0LlB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IgREFUQQotICBQeUV4Y19PU0Vycm9yPXB5dGhvbjM0LlB5RXhjX09TRXJyb3IgREFUQQotICBQeUV4Y19PdmVyZmxvd0Vycm9yPXB5dGhvbjM0LlB5RXhjX092ZXJmbG93RXJyb3IgREFUQQotICBQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM0LlB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgREFUQQotICBQeUV4Y19SZWN1cnNpb25FcnJvckluc3Q9cHl0aG9uMzQuUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0IERBVEEKLSAgUHlFeGNfUmVmZXJlbmNlRXJyb3I9cHl0aG9uMzQuUHlFeGNfUmVmZXJlbmNlRXJyb3IgREFUQQotICBQeUV4Y19SdW50aW1lRXJyb3I9cHl0aG9uMzQuUHlFeGNfUnVudGltZUVycm9yIERBVEEKLSAgUHlFeGNfUnVudGltZVdhcm5pbmc9cHl0aG9uMzQuUHlFeGNfUnVudGltZVdhcm5pbmcgREFUQQotICBQeUV4Y19TdG9wSXRlcmF0aW9uPXB5dGhvbjM0LlB5RXhjX1N0b3BJdGVyYXRpb24gREFUQQotICBQeUV4Y19TeW50YXhFcnJvcj1weXRob24zNC5QeUV4Y19TeW50YXhFcnJvciBEQVRBCi0gIFB5RXhjX1N5bnRheFdhcm5pbmc9cHl0aG9uMzQuUHlFeGNfU3ludGF4V2FybmluZyBEQVRBCi0gIFB5RXhjX1N5c3RlbUVycm9yPXB5dGhvbjM0LlB5RXhjX1N5c3RlbUVycm9yIERBVEEKLSAgUHlFeGNfU3lzdGVtRXhpdD1weXRob24zNC5QeUV4Y19TeXN0ZW1FeGl0IERBVEEKLSAgUHlFeGNfVGFiRXJyb3I9cHl0aG9uMzQuUHlFeGNfVGFiRXJyb3IgREFUQQotICBQeUV4Y19UeXBlRXJyb3I9cHl0aG9uMzQuUHlFeGNfVHlwZUVycm9yIERBVEEKLSAgUHlFeGNfVW5ib3VuZExvY2FsRXJyb3I9cHl0aG9uMzQuUHlFeGNfVW5ib3VuZExvY2FsRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3I9cHl0aG9uMzQuUHlFeGNfVW5pY29kZURlY29kZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yPXB5dGhvbjM0LlB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVFcnJvcj1weXRob24zNC5QeUV4Y19Vbmljb2RlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3I9cHl0aG9uMzQuUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZVdhcm5pbmc9cHl0aG9uMzQuUHlFeGNfVW5pY29kZVdhcm5pbmcgREFUQQotICBQeUV4Y19Vc2VyV2FybmluZz1weXRob24zNC5QeUV4Y19Vc2VyV2FybmluZyBEQVRBCi0gIFB5RXhjX1ZhbHVlRXJyb3I9cHl0aG9uMzQuUHlFeGNfVmFsdWVFcnJvciBEQVRBCi0gIFB5RXhjX1dhcm5pbmc9cHl0aG9uMzQuUHlFeGNfV2FybmluZyBEQVRBCi0gIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yPXB5dGhvbjM0LlB5RXhjX1plcm9EaXZpc2lvbkVycm9yIERBVEEKLSAgUHlFeGNlcHRpb25fR2V0Q2F1c2U9cHl0aG9uMzQuUHlFeGNlcHRpb25fR2V0Q2F1c2UKLSAgUHlFeGNlcHRpb25fR2V0Q29udGV4dD1weXRob24zNC5QeUV4Y2VwdGlvbl9HZXRDb250ZXh0Ci0gIFB5RXhjZXB0aW9uX0dldFRyYWNlYmFjaz1weXRob24zNC5QeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2sKLSAgUHlFeGNlcHRpb25fU2V0Q2F1c2U9cHl0aG9uMzQuUHlFeGNlcHRpb25fU2V0Q2F1c2UKLSAgUHlFeGNlcHRpb25fU2V0Q29udGV4dD1weXRob24zNC5QeUV4Y2VwdGlvbl9TZXRDb250ZXh0Ci0gIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjaz1weXRob24zNC5QeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sKLSAgUHlGaWxlX0Zyb21GZD1weXRob24zNC5QeUZpbGVfRnJvbUZkCi0gIFB5RmlsZV9HZXRMaW5lPXB5dGhvbjM0LlB5RmlsZV9HZXRMaW5lCi0gIFB5RmlsZV9Xcml0ZU9iamVjdD1weXRob24zNC5QeUZpbGVfV3JpdGVPYmplY3QKLSAgUHlGaWxlX1dyaXRlU3RyaW5nPXB5dGhvbjM0LlB5RmlsZV9Xcml0ZVN0cmluZwotICBQeUZpbHRlcl9UeXBlPXB5dGhvbjM0LlB5RmlsdGVyX1R5cGUgREFUQQotICBQeUZsb2F0X0FzRG91YmxlPXB5dGhvbjM0LlB5RmxvYXRfQXNEb3VibGUKLSAgUHlGbG9hdF9Gcm9tRG91YmxlPXB5dGhvbjM0LlB5RmxvYXRfRnJvbURvdWJsZQotICBQeUZsb2F0X0Zyb21TdHJpbmc9cHl0aG9uMzQuUHlGbG9hdF9Gcm9tU3RyaW5nCi0gIFB5RmxvYXRfR2V0SW5mbz1weXRob24zNC5QeUZsb2F0X0dldEluZm8KLSAgUHlGbG9hdF9HZXRNYXg9cHl0aG9uMzQuUHlGbG9hdF9HZXRNYXgKLSAgUHlGbG9hdF9HZXRNaW49cHl0aG9uMzQuUHlGbG9hdF9HZXRNaW4KLSAgUHlGbG9hdF9UeXBlPXB5dGhvbjM0LlB5RmxvYXRfVHlwZSBEQVRBCi0gIFB5RnJvemVuU2V0X05ldz1weXRob24zNC5QeUZyb3plblNldF9OZXcKLSAgUHlGcm96ZW5TZXRfVHlwZT1weXRob24zNC5QeUZyb3plblNldF9UeXBlIERBVEEKLSAgUHlHQ19Db2xsZWN0PXB5dGhvbjM0LlB5R0NfQ29sbGVjdAotICBQeUdJTFN0YXRlX0Vuc3VyZT1weXRob24zNC5QeUdJTFN0YXRlX0Vuc3VyZQotICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZT1weXRob24zNC5QeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZQotICBQeUdJTFN0YXRlX1JlbGVhc2U9cHl0aG9uMzQuUHlHSUxTdGF0ZV9SZWxlYXNlCi0gIFB5R2V0U2V0RGVzY3JfVHlwZT1weXRob24zNC5QeUdldFNldERlc2NyX1R5cGUgREFUQQotICBQeUltcG9ydF9BZGRNb2R1bGU9cHl0aG9uMzQuUHlJbXBvcnRfQWRkTW9kdWxlCi0gIFB5SW1wb3J0X0FwcGVuZEluaXR0YWI9cHl0aG9uMzQuUHlJbXBvcnRfQXBwZW5kSW5pdHRhYgotICBQeUltcG9ydF9DbGVhbnVwPXB5dGhvbjM0LlB5SW1wb3J0X0NsZWFudXAKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGU9cHl0aG9uMzQuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeD1weXRob24zNC5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4Ci0gIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcz1weXRob24zNC5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMKLSAgUHlJbXBvcnRfR2V0SW1wb3J0ZXI9cHl0aG9uMzQuUHlJbXBvcnRfR2V0SW1wb3J0ZXIKLSAgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXI9cHl0aG9uMzQuUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIKLSAgUHlJbXBvcnRfR2V0TWFnaWNUYWc9cHl0aG9uMzQuUHlJbXBvcnRfR2V0TWFnaWNUYWcKLSAgUHlJbXBvcnRfR2V0TW9kdWxlRGljdD1weXRob24zNC5QeUltcG9ydF9HZXRNb2R1bGVEaWN0Ci0gIFB5SW1wb3J0X0ltcG9ydD1weXRob24zNC5QeUltcG9ydF9JbXBvcnQKLSAgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlPXB5dGhvbjM0LlB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZQotICBQeUltcG9ydF9JbXBvcnRNb2R1bGU9cHl0aG9uMzQuUHlJbXBvcnRfSW1wb3J0TW9kdWxlCi0gIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsPXB5dGhvbjM0LlB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsCi0gIFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2s9cHl0aG9uMzQuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jawotICBQeUltcG9ydF9SZWxvYWRNb2R1bGU9cHl0aG9uMzQuUHlJbXBvcnRfUmVsb2FkTW9kdWxlCi0gIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcj1weXRob24zNC5QeUludGVycHJldGVyU3RhdGVfQ2xlYXIKLSAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZT1weXRob24zNC5QeUludGVycHJldGVyU3RhdGVfRGVsZXRlCi0gIFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXc9cHl0aG9uMzQuUHlJbnRlcnByZXRlclN0YXRlX05ldwotICBQeUl0ZXJfTmV4dD1weXRob24zNC5QeUl0ZXJfTmV4dAotICBQeUxpc3RJdGVyX1R5cGU9cHl0aG9uMzQuUHlMaXN0SXRlcl9UeXBlIERBVEEKLSAgUHlMaXN0UmV2SXRlcl9UeXBlPXB5dGhvbjM0LlB5TGlzdFJldkl0ZXJfVHlwZSBEQVRBCi0gIFB5TGlzdF9BcHBlbmQ9cHl0aG9uMzQuUHlMaXN0X0FwcGVuZAotICBQeUxpc3RfQXNUdXBsZT1weXRob24zNC5QeUxpc3RfQXNUdXBsZQotICBQeUxpc3RfR2V0SXRlbT1weXRob24zNC5QeUxpc3RfR2V0SXRlbQotICBQeUxpc3RfR2V0U2xpY2U9cHl0aG9uMzQuUHlMaXN0X0dldFNsaWNlCi0gIFB5TGlzdF9JbnNlcnQ9cHl0aG9uMzQuUHlMaXN0X0luc2VydAotICBQeUxpc3RfTmV3PXB5dGhvbjM0LlB5TGlzdF9OZXcKLSAgUHlMaXN0X1JldmVyc2U9cHl0aG9uMzQuUHlMaXN0X1JldmVyc2UKLSAgUHlMaXN0X1NldEl0ZW09cHl0aG9uMzQuUHlMaXN0X1NldEl0ZW0KLSAgUHlMaXN0X1NldFNsaWNlPXB5dGhvbjM0LlB5TGlzdF9TZXRTbGljZQotICBQeUxpc3RfU2l6ZT1weXRob24zNC5QeUxpc3RfU2l6ZQotICBQeUxpc3RfU29ydD1weXRob24zNC5QeUxpc3RfU29ydAotICBQeUxpc3RfVHlwZT1weXRob24zNC5QeUxpc3RfVHlwZSBEQVRBCi0gIFB5TG9uZ1JhbmdlSXRlcl9UeXBlPXB5dGhvbjM0LlB5TG9uZ1JhbmdlSXRlcl9UeXBlIERBVEEKLSAgUHlMb25nX0FzRG91YmxlPXB5dGhvbjM0LlB5TG9uZ19Bc0RvdWJsZQotICBQeUxvbmdfQXNMb25nPXB5dGhvbjM0LlB5TG9uZ19Bc0xvbmcKLSAgUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM0LlB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdwotICBQeUxvbmdfQXNMb25nTG9uZz1weXRob24zNC5QeUxvbmdfQXNMb25nTG9uZwotICBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM0LlB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cKLSAgUHlMb25nX0FzU2l6ZV90PXB5dGhvbjM0LlB5TG9uZ19Bc1NpemVfdAotICBQeUxvbmdfQXNTc2l6ZV90PXB5dGhvbjM0LlB5TG9uZ19Bc1NzaXplX3QKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nPXB5dGhvbjM0LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZwotICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nPXB5dGhvbjM0LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2s9cHl0aG9uMzQuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaz1weXRob24zNC5QeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrCi0gIFB5TG9uZ19Bc1ZvaWRQdHI9cHl0aG9uMzQuUHlMb25nX0FzVm9pZFB0cgotICBQeUxvbmdfRnJvbURvdWJsZT1weXRob24zNC5QeUxvbmdfRnJvbURvdWJsZQotICBQeUxvbmdfRnJvbUxvbmc9cHl0aG9uMzQuUHlMb25nX0Zyb21Mb25nCi0gIFB5TG9uZ19Gcm9tTG9uZ0xvbmc9cHl0aG9uMzQuUHlMb25nX0Zyb21Mb25nTG9uZwotICBQeUxvbmdfRnJvbVNpemVfdD1weXRob24zNC5QeUxvbmdfRnJvbVNpemVfdAotICBQeUxvbmdfRnJvbVNzaXplX3Q9cHl0aG9uMzQuUHlMb25nX0Zyb21Tc2l6ZV90Ci0gIFB5TG9uZ19Gcm9tU3RyaW5nPXB5dGhvbjM0LlB5TG9uZ19Gcm9tU3RyaW5nCi0gIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nPXB5dGhvbjM0LlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nCi0gIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZz1weXRob24zNC5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcKLSAgUHlMb25nX0Zyb21Wb2lkUHRyPXB5dGhvbjM0LlB5TG9uZ19Gcm9tVm9pZFB0cgotICBQeUxvbmdfR2V0SW5mbz1weXRob24zNC5QeUxvbmdfR2V0SW5mbwotICBQeUxvbmdfVHlwZT1weXRob24zNC5QeUxvbmdfVHlwZSBEQVRBCi0gIFB5TWFwX1R5cGU9cHl0aG9uMzQuUHlNYXBfVHlwZSBEQVRBCi0gIFB5TWFwcGluZ19DaGVjaz1weXRob24zNC5QeU1hcHBpbmdfQ2hlY2sKLSAgUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmc9cHl0aG9uMzQuUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcKLSAgUHlNYXBwaW5nX0hhc0tleT1weXRob24zNC5QeU1hcHBpbmdfSGFzS2V5Ci0gIFB5TWFwcGluZ19IYXNLZXlTdHJpbmc9cHl0aG9uMzQuUHlNYXBwaW5nX0hhc0tleVN0cmluZwotICBQeU1hcHBpbmdfSXRlbXM9cHl0aG9uMzQuUHlNYXBwaW5nX0l0ZW1zCi0gIFB5TWFwcGluZ19LZXlzPXB5dGhvbjM0LlB5TWFwcGluZ19LZXlzCi0gIFB5TWFwcGluZ19MZW5ndGg9cHl0aG9uMzQuUHlNYXBwaW5nX0xlbmd0aAotICBQeU1hcHBpbmdfU2V0SXRlbVN0cmluZz1weXRob24zNC5QeU1hcHBpbmdfU2V0SXRlbVN0cmluZwotICBQeU1hcHBpbmdfU2l6ZT1weXRob24zNC5QeU1hcHBpbmdfU2l6ZQotICBQeU1hcHBpbmdfVmFsdWVzPXB5dGhvbjM0LlB5TWFwcGluZ19WYWx1ZXMKLSAgUHlNZW1fRnJlZT1weXRob24zNC5QeU1lbV9GcmVlCi0gIFB5TWVtX01hbGxvYz1weXRob24zNC5QeU1lbV9NYWxsb2MKLSAgUHlNZW1fUmVhbGxvYz1weXRob24zNC5QeU1lbV9SZWFsbG9jCi0gIFB5TWVtYmVyRGVzY3JfVHlwZT1weXRob24zNC5QeU1lbWJlckRlc2NyX1R5cGUgREFUQQotICBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdD1weXRob24zNC5QeU1lbW9yeVZpZXdfRnJvbU9iamVjdAotICBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cz1weXRob24zNC5QeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cwotICBQeU1lbW9yeVZpZXdfVHlwZT1weXRob24zNC5QeU1lbW9yeVZpZXdfVHlwZSBEQVRBCi0gIFB5TWV0aG9kRGVzY3JfVHlwZT1weXRob24zNC5QeU1ldGhvZERlc2NyX1R5cGUgREFUQQotICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudD1weXRob24zNC5QeU1vZHVsZV9BZGRJbnRDb25zdGFudAotICBQeU1vZHVsZV9BZGRPYmplY3Q9cHl0aG9uMzQuUHlNb2R1bGVfQWRkT2JqZWN0Ci0gIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50PXB5dGhvbjM0LlB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50Ci0gIFB5TW9kdWxlX0NyZWF0ZTI9cHl0aG9uMzQuUHlNb2R1bGVfQ3JlYXRlMgotICBQeU1vZHVsZV9HZXREZWY9cHl0aG9uMzQuUHlNb2R1bGVfR2V0RGVmCi0gIFB5TW9kdWxlX0dldERpY3Q9cHl0aG9uMzQuUHlNb2R1bGVfR2V0RGljdAotICBQeU1vZHVsZV9HZXRGaWxlbmFtZT1weXRob24zNC5QeU1vZHVsZV9HZXRGaWxlbmFtZQotICBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdD1weXRob24zNC5QeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdAotICBQeU1vZHVsZV9HZXROYW1lPXB5dGhvbjM0LlB5TW9kdWxlX0dldE5hbWUKLSAgUHlNb2R1bGVfR2V0U3RhdGU9cHl0aG9uMzQuUHlNb2R1bGVfR2V0U3RhdGUKLSAgUHlNb2R1bGVfTmV3PXB5dGhvbjM0LlB5TW9kdWxlX05ldwotICBQeU1vZHVsZV9UeXBlPXB5dGhvbjM0LlB5TW9kdWxlX1R5cGUgREFUQQotICBQeU51bGxJbXBvcnRlcl9UeXBlPXB5dGhvbjM0LlB5TnVsbEltcG9ydGVyX1R5cGUgREFUQQotICBQeU51bWJlcl9BYnNvbHV0ZT1weXRob24zNC5QeU51bWJlcl9BYnNvbHV0ZQotICBQeU51bWJlcl9BZGQ9cHl0aG9uMzQuUHlOdW1iZXJfQWRkCi0gIFB5TnVtYmVyX0FuZD1weXRob24zNC5QeU51bWJlcl9BbmQKLSAgUHlOdW1iZXJfQXNTc2l6ZV90PXB5dGhvbjM0LlB5TnVtYmVyX0FzU3NpemVfdAotICBQeU51bWJlcl9DaGVjaz1weXRob24zNC5QeU51bWJlcl9DaGVjawotICBQeU51bWJlcl9EaXZtb2Q9cHl0aG9uMzQuUHlOdW1iZXJfRGl2bW9kCi0gIFB5TnVtYmVyX0Zsb2F0PXB5dGhvbjM0LlB5TnVtYmVyX0Zsb2F0Ci0gIFB5TnVtYmVyX0Zsb29yRGl2aWRlPXB5dGhvbjM0LlB5TnVtYmVyX0Zsb29yRGl2aWRlCi0gIFB5TnVtYmVyX0luUGxhY2VBZGQ9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZUFkZAotICBQeU51bWJlcl9JblBsYWNlQW5kPXB5dGhvbjM0LlB5TnVtYmVyX0luUGxhY2VBbmQKLSAgUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlPXB5dGhvbjM0LlB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZQotICBQeU51bWJlcl9JblBsYWNlTHNoaWZ0PXB5dGhvbjM0LlB5TnVtYmVyX0luUGxhY2VMc2hpZnQKLSAgUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5PXB5dGhvbjM0LlB5TnVtYmVyX0luUGxhY2VNdWx0aXBseQotICBQeU51bWJlcl9JblBsYWNlT3I9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZU9yCi0gIFB5TnVtYmVyX0luUGxhY2VQb3dlcj1weXRob24zNC5QeU51bWJlcl9JblBsYWNlUG93ZXIKLSAgUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcj1weXRob24zNC5QeU51bWJlcl9JblBsYWNlUmVtYWluZGVyCi0gIFB5TnVtYmVyX0luUGxhY2VSc2hpZnQ9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZVJzaGlmdAotICBQeU51bWJlcl9JblBsYWNlU3VidHJhY3Q9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0Ci0gIFB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlPXB5dGhvbjM0LlB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlCi0gIFB5TnVtYmVyX0luUGxhY2VYb3I9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZVhvcgotICBQeU51bWJlcl9JbmRleD1weXRob24zNC5QeU51bWJlcl9JbmRleAotICBQeU51bWJlcl9JbnZlcnQ9cHl0aG9uMzQuUHlOdW1iZXJfSW52ZXJ0Ci0gIFB5TnVtYmVyX0xvbmc9cHl0aG9uMzQuUHlOdW1iZXJfTG9uZwotICBQeU51bWJlcl9Mc2hpZnQ9cHl0aG9uMzQuUHlOdW1iZXJfTHNoaWZ0Ci0gIFB5TnVtYmVyX011bHRpcGx5PXB5dGhvbjM0LlB5TnVtYmVyX011bHRpcGx5Ci0gIFB5TnVtYmVyX05lZ2F0aXZlPXB5dGhvbjM0LlB5TnVtYmVyX05lZ2F0aXZlCi0gIFB5TnVtYmVyX09yPXB5dGhvbjM0LlB5TnVtYmVyX09yCi0gIFB5TnVtYmVyX1Bvc2l0aXZlPXB5dGhvbjM0LlB5TnVtYmVyX1Bvc2l0aXZlCi0gIFB5TnVtYmVyX1Bvd2VyPXB5dGhvbjM0LlB5TnVtYmVyX1Bvd2VyCi0gIFB5TnVtYmVyX1JlbWFpbmRlcj1weXRob24zNC5QeU51bWJlcl9SZW1haW5kZXIKLSAgUHlOdW1iZXJfUnNoaWZ0PXB5dGhvbjM0LlB5TnVtYmVyX1JzaGlmdAotICBQeU51bWJlcl9TdWJ0cmFjdD1weXRob24zNC5QeU51bWJlcl9TdWJ0cmFjdAotICBQeU51bWJlcl9Ub0Jhc2U9cHl0aG9uMzQuUHlOdW1iZXJfVG9CYXNlCi0gIFB5TnVtYmVyX1RydWVEaXZpZGU9cHl0aG9uMzQuUHlOdW1iZXJfVHJ1ZURpdmlkZQotICBQeU51bWJlcl9Yb3I9cHl0aG9uMzQuUHlOdW1iZXJfWG9yCi0gIFB5T1NfQWZ0ZXJGb3JrPXB5dGhvbjM0LlB5T1NfQWZ0ZXJGb3JrCi0gIFB5T1NfSW5pdEludGVycnVwdHM9cHl0aG9uMzQuUHlPU19Jbml0SW50ZXJydXB0cwotICBQeU9TX0lucHV0SG9vaz1weXRob24zNC5QeU9TX0lucHV0SG9vayBEQVRBCi0gIFB5T1NfSW50ZXJydXB0T2NjdXJyZWQ9cHl0aG9uMzQuUHlPU19JbnRlcnJ1cHRPY2N1cnJlZAotICBQeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyPXB5dGhvbjM0LlB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXIgREFUQQotICBQeU9TX2RvdWJsZV90b19zdHJpbmc9cHl0aG9uMzQuUHlPU19kb3VibGVfdG9fc3RyaW5nCi0gIFB5T1NfZ2V0c2lnPXB5dGhvbjM0LlB5T1NfZ2V0c2lnCi0gIFB5T1NfbXlzdHJpY21wPXB5dGhvbjM0LlB5T1NfbXlzdHJpY21wCi0gIFB5T1NfbXlzdHJuaWNtcD1weXRob24zNC5QeU9TX215c3RybmljbXAKLSAgUHlPU19zZXRzaWc9cHl0aG9uMzQuUHlPU19zZXRzaWcKLSAgUHlPU19zbnByaW50Zj1weXRob24zNC5QeU9TX3NucHJpbnRmCi0gIFB5T1Nfc3RyaW5nX3RvX2RvdWJsZT1weXRob24zNC5QeU9TX3N0cmluZ190b19kb3VibGUKLSAgUHlPU19zdHJ0b2w9cHl0aG9uMzQuUHlPU19zdHJ0b2wKLSAgUHlPU19zdHJ0b3VsPXB5dGhvbjM0LlB5T1Nfc3RydG91bAotICBQeU9TX3ZzbnByaW50Zj1weXRob24zNC5QeU9TX3ZzbnByaW50ZgotICBQeU9iamVjdF9BU0NJST1weXRob24zNC5QeU9iamVjdF9BU0NJSQotICBQeU9iamVjdF9Bc0NoYXJCdWZmZXI9cHl0aG9uMzQuUHlPYmplY3RfQXNDaGFyQnVmZmVyCi0gIFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3I9cHl0aG9uMzQuUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcgotICBQeU9iamVjdF9Bc1JlYWRCdWZmZXI9cHl0aG9uMzQuUHlPYmplY3RfQXNSZWFkQnVmZmVyCi0gIFB5T2JqZWN0X0FzV3JpdGVCdWZmZXI9cHl0aG9uMzQuUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcgotICBQeU9iamVjdF9CeXRlcz1weXRob24zNC5QeU9iamVjdF9CeXRlcwotICBQeU9iamVjdF9DYWxsPXB5dGhvbjM0LlB5T2JqZWN0X0NhbGwKLSAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uPXB5dGhvbjM0LlB5T2JqZWN0X0NhbGxGdW5jdGlvbgotICBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzPXB5dGhvbjM0LlB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MKLSAgUHlPYmplY3RfQ2FsbE1ldGhvZD1weXRob24zNC5QeU9iamVjdF9DYWxsTWV0aG9kCi0gIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzPXB5dGhvbjM0LlB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzCi0gIFB5T2JqZWN0X0NhbGxPYmplY3Q9cHl0aG9uMzQuUHlPYmplY3RfQ2FsbE9iamVjdAotICBQeU9iamVjdF9DaGVja1JlYWRCdWZmZXI9cHl0aG9uMzQuUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyCi0gIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnM9cHl0aG9uMzQuUHlPYmplY3RfQ2xlYXJXZWFrUmVmcwotICBQeU9iamVjdF9EZWxJdGVtPXB5dGhvbjM0LlB5T2JqZWN0X0RlbEl0ZW0KLSAgUHlPYmplY3RfRGVsSXRlbVN0cmluZz1weXRob24zNC5QeU9iamVjdF9EZWxJdGVtU3RyaW5nCi0gIFB5T2JqZWN0X0Rpcj1weXRob24zNC5QeU9iamVjdF9EaXIKLSAgUHlPYmplY3RfRm9ybWF0PXB5dGhvbjM0LlB5T2JqZWN0X0Zvcm1hdAotICBQeU9iamVjdF9GcmVlPXB5dGhvbjM0LlB5T2JqZWN0X0ZyZWUKLSAgUHlPYmplY3RfR0NfRGVsPXB5dGhvbjM0LlB5T2JqZWN0X0dDX0RlbAotICBQeU9iamVjdF9HQ19UcmFjaz1weXRob24zNC5QeU9iamVjdF9HQ19UcmFjawotICBQeU9iamVjdF9HQ19VblRyYWNrPXB5dGhvbjM0LlB5T2JqZWN0X0dDX1VuVHJhY2sKLSAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHI9cHl0aG9uMzQuUHlPYmplY3RfR2VuZXJpY0dldEF0dHIKLSAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHI9cHl0aG9uMzQuUHlPYmplY3RfR2VuZXJpY1NldEF0dHIKLSAgUHlPYmplY3RfR2V0QXR0cj1weXRob24zNC5QeU9iamVjdF9HZXRBdHRyCi0gIFB5T2JqZWN0X0dldEF0dHJTdHJpbmc9cHl0aG9uMzQuUHlPYmplY3RfR2V0QXR0clN0cmluZwotICBQeU9iamVjdF9HZXRJdGVtPXB5dGhvbjM0LlB5T2JqZWN0X0dldEl0ZW0KLSAgUHlPYmplY3RfR2V0SXRlcj1weXRob24zNC5QeU9iamVjdF9HZXRJdGVyCi0gIFB5T2JqZWN0X0hhc0F0dHI9cHl0aG9uMzQuUHlPYmplY3RfSGFzQXR0cgotICBQeU9iamVjdF9IYXNBdHRyU3RyaW5nPXB5dGhvbjM0LlB5T2JqZWN0X0hhc0F0dHJTdHJpbmcKLSAgUHlPYmplY3RfSGFzaD1weXRob24zNC5QeU9iamVjdF9IYXNoCi0gIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZD1weXRob24zNC5QeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQKLSAgUHlPYmplY3RfSW5pdD1weXRob24zNC5QeU9iamVjdF9Jbml0Ci0gIFB5T2JqZWN0X0luaXRWYXI9cHl0aG9uMzQuUHlPYmplY3RfSW5pdFZhcgotICBQeU9iamVjdF9Jc0luc3RhbmNlPXB5dGhvbjM0LlB5T2JqZWN0X0lzSW5zdGFuY2UKLSAgUHlPYmplY3RfSXNTdWJjbGFzcz1weXRob24zNC5QeU9iamVjdF9Jc1N1YmNsYXNzCi0gIFB5T2JqZWN0X0lzVHJ1ZT1weXRob24zNC5QeU9iamVjdF9Jc1RydWUKLSAgUHlPYmplY3RfTGVuZ3RoPXB5dGhvbjM0LlB5T2JqZWN0X0xlbmd0aAotICBQeU9iamVjdF9NYWxsb2M9cHl0aG9uMzQuUHlPYmplY3RfTWFsbG9jCi0gIFB5T2JqZWN0X05vdD1weXRob24zNC5QeU9iamVjdF9Ob3QKLSAgUHlPYmplY3RfUmVhbGxvYz1weXRob24zNC5QeU9iamVjdF9SZWFsbG9jCi0gIFB5T2JqZWN0X1JlcHI9cHl0aG9uMzQuUHlPYmplY3RfUmVwcgotICBQeU9iamVjdF9SaWNoQ29tcGFyZT1weXRob24zNC5QeU9iamVjdF9SaWNoQ29tcGFyZQotICBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2w9cHl0aG9uMzQuUHlPYmplY3RfUmljaENvbXBhcmVCb29sCi0gIFB5T2JqZWN0X1NlbGZJdGVyPXB5dGhvbjM0LlB5T2JqZWN0X1NlbGZJdGVyCi0gIFB5T2JqZWN0X1NldEF0dHI9cHl0aG9uMzQuUHlPYmplY3RfU2V0QXR0cgotICBQeU9iamVjdF9TZXRBdHRyU3RyaW5nPXB5dGhvbjM0LlB5T2JqZWN0X1NldEF0dHJTdHJpbmcKLSAgUHlPYmplY3RfU2V0SXRlbT1weXRob24zNC5QeU9iamVjdF9TZXRJdGVtCi0gIFB5T2JqZWN0X1NpemU9cHl0aG9uMzQuUHlPYmplY3RfU2l6ZQotICBQeU9iamVjdF9TdHI9cHl0aG9uMzQuUHlPYmplY3RfU3RyCi0gIFB5T2JqZWN0X1R5cGU9cHl0aG9uMzQuUHlPYmplY3RfVHlwZSBEQVRBCi0gIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzPXB5dGhvbjM0LlB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzCi0gIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3M9cHl0aG9uMzQuUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncwotICBQeVByb3BlcnR5X1R5cGU9cHl0aG9uMzQuUHlQcm9wZXJ0eV9UeXBlIERBVEEKLSAgUHlSYW5nZUl0ZXJfVHlwZT1weXRob24zNC5QeVJhbmdlSXRlcl9UeXBlIERBVEEKLSAgUHlSYW5nZV9UeXBlPXB5dGhvbjM0LlB5UmFuZ2VfVHlwZSBEQVRBCi0gIFB5UmV2ZXJzZWRfVHlwZT1weXRob24zNC5QeVJldmVyc2VkX1R5cGUgREFUQQotICBQeVNlcUl0ZXJfTmV3PXB5dGhvbjM0LlB5U2VxSXRlcl9OZXcKLSAgUHlTZXFJdGVyX1R5cGU9cHl0aG9uMzQuUHlTZXFJdGVyX1R5cGUgREFUQQotICBQeVNlcXVlbmNlX0NoZWNrPXB5dGhvbjM0LlB5U2VxdWVuY2VfQ2hlY2sKLSAgUHlTZXF1ZW5jZV9Db25jYXQ9cHl0aG9uMzQuUHlTZXF1ZW5jZV9Db25jYXQKLSAgUHlTZXF1ZW5jZV9Db250YWlucz1weXRob24zNC5QeVNlcXVlbmNlX0NvbnRhaW5zCi0gIFB5U2VxdWVuY2VfQ291bnQ9cHl0aG9uMzQuUHlTZXF1ZW5jZV9Db3VudAotICBQeVNlcXVlbmNlX0RlbEl0ZW09cHl0aG9uMzQuUHlTZXF1ZW5jZV9EZWxJdGVtCi0gIFB5U2VxdWVuY2VfRGVsU2xpY2U9cHl0aG9uMzQuUHlTZXF1ZW5jZV9EZWxTbGljZQotICBQeVNlcXVlbmNlX0Zhc3Q9cHl0aG9uMzQuUHlTZXF1ZW5jZV9GYXN0Ci0gIFB5U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNC5QeVNlcXVlbmNlX0dldEl0ZW0KLSAgUHlTZXF1ZW5jZV9HZXRTbGljZT1weXRob24zNC5QeVNlcXVlbmNlX0dldFNsaWNlCi0gIFB5U2VxdWVuY2VfSW49cHl0aG9uMzQuUHlTZXF1ZW5jZV9JbgotICBQeVNlcXVlbmNlX0luUGxhY2VDb25jYXQ9cHl0aG9uMzQuUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0Ci0gIFB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdD1weXRob24zNC5QeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQKLSAgUHlTZXF1ZW5jZV9JbmRleD1weXRob24zNC5QeVNlcXVlbmNlX0luZGV4Ci0gIFB5U2VxdWVuY2VfTGVuZ3RoPXB5dGhvbjM0LlB5U2VxdWVuY2VfTGVuZ3RoCi0gIFB5U2VxdWVuY2VfTGlzdD1weXRob24zNC5QeVNlcXVlbmNlX0xpc3QKLSAgUHlTZXF1ZW5jZV9SZXBlYXQ9cHl0aG9uMzQuUHlTZXF1ZW5jZV9SZXBlYXQKLSAgUHlTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjM0LlB5U2VxdWVuY2VfU2V0SXRlbQotICBQeVNlcXVlbmNlX1NldFNsaWNlPXB5dGhvbjM0LlB5U2VxdWVuY2VfU2V0U2xpY2UKLSAgUHlTZXF1ZW5jZV9TaXplPXB5dGhvbjM0LlB5U2VxdWVuY2VfU2l6ZQotICBQeVNlcXVlbmNlX1R1cGxlPXB5dGhvbjM0LlB5U2VxdWVuY2VfVHVwbGUKLSAgUHlTZXRJdGVyX1R5cGU9cHl0aG9uMzQuUHlTZXRJdGVyX1R5cGUgREFUQQotICBQeVNldF9BZGQ9cHl0aG9uMzQuUHlTZXRfQWRkCi0gIFB5U2V0X0NsZWFyPXB5dGhvbjM0LlB5U2V0X0NsZWFyCi0gIFB5U2V0X0NvbnRhaW5zPXB5dGhvbjM0LlB5U2V0X0NvbnRhaW5zCi0gIFB5U2V0X0Rpc2NhcmQ9cHl0aG9uMzQuUHlTZXRfRGlzY2FyZAotICBQeVNldF9OZXc9cHl0aG9uMzQuUHlTZXRfTmV3Ci0gIFB5U2V0X1BvcD1weXRob24zNC5QeVNldF9Qb3AKLSAgUHlTZXRfU2l6ZT1weXRob24zNC5QeVNldF9TaXplCi0gIFB5U2V0X1R5cGU9cHl0aG9uMzQuUHlTZXRfVHlwZSBEQVRBCi0gIFB5U2xpY2VfR2V0SW5kaWNlcz1weXRob24zNC5QeVNsaWNlX0dldEluZGljZXMKLSAgUHlTbGljZV9HZXRJbmRpY2VzRXg9cHl0aG9uMzQuUHlTbGljZV9HZXRJbmRpY2VzRXgKLSAgUHlTbGljZV9OZXc9cHl0aG9uMzQuUHlTbGljZV9OZXcKLSAgUHlTbGljZV9UeXBlPXB5dGhvbjM0LlB5U2xpY2VfVHlwZSBEQVRBCi0gIFB5U29ydFdyYXBwZXJfVHlwZT1weXRob24zNC5QeVNvcnRXcmFwcGVyX1R5cGUgREFUQQotICBQeVN0YXRlX0ZpbmRNb2R1bGU9cHl0aG9uMzQuUHlTdGF0ZV9GaW5kTW9kdWxlCi0gIFB5U3RhdGVfQWRkTW9kdWxlPXB5dGhvbjM0LlB5U3RhdGVfQWRkTW9kdWxlCi0gIFB5U3RhdGVfUmVtb3ZlTW9kdWxlPXB5dGhvbjM0LlB5U3RhdGVfUmVtb3ZlTW9kdWxlCi0gIFB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNC5QeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW0KLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXc9cHl0aG9uMzQuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcKLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlPXB5dGhvbjM0LlB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZQotICBQeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzQuUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtCi0gIFB5U3VwZXJfVHlwZT1weXRob24zNC5QeVN1cGVyX1R5cGUgREFUQQotICBQeVN5c19BZGRXYXJuT3B0aW9uPXB5dGhvbjM0LlB5U3lzX0FkZFdhcm5PcHRpb24KLSAgUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGU9cHl0aG9uMzQuUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUKLSAgUHlTeXNfRm9ybWF0U3RkZXJyPXB5dGhvbjM0LlB5U3lzX0Zvcm1hdFN0ZGVycgotICBQeVN5c19Gb3JtYXRTdGRvdXQ9cHl0aG9uMzQuUHlTeXNfRm9ybWF0U3Rkb3V0Ci0gIFB5U3lzX0dldE9iamVjdD1weXRob24zNC5QeVN5c19HZXRPYmplY3QKLSAgUHlTeXNfSGFzV2Fybk9wdGlvbnM9cHl0aG9uMzQuUHlTeXNfSGFzV2Fybk9wdGlvbnMKLSAgUHlTeXNfUmVzZXRXYXJuT3B0aW9ucz1weXRob24zNC5QeVN5c19SZXNldFdhcm5PcHRpb25zCi0gIFB5U3lzX1NldEFyZ3Y9cHl0aG9uMzQuUHlTeXNfU2V0QXJndgotICBQeVN5c19TZXRBcmd2RXg9cHl0aG9uMzQuUHlTeXNfU2V0QXJndkV4Ci0gIFB5U3lzX1NldE9iamVjdD1weXRob24zNC5QeVN5c19TZXRPYmplY3QKLSAgUHlTeXNfU2V0UGF0aD1weXRob24zNC5QeVN5c19TZXRQYXRoCi0gIFB5U3lzX1dyaXRlU3RkZXJyPXB5dGhvbjM0LlB5U3lzX1dyaXRlU3RkZXJyCi0gIFB5U3lzX1dyaXRlU3Rkb3V0PXB5dGhvbjM0LlB5U3lzX1dyaXRlU3Rkb3V0Ci0gIFB5VGhyZWFkU3RhdGVfQ2xlYXI9cHl0aG9uMzQuUHlUaHJlYWRTdGF0ZV9DbGVhcgotICBQeVRocmVhZFN0YXRlX0RlbGV0ZT1weXRob24zNC5QeVRocmVhZFN0YXRlX0RlbGV0ZQotICBQeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQ9cHl0aG9uMzQuUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50Ci0gIFB5VGhyZWFkU3RhdGVfR2V0PXB5dGhvbjM0LlB5VGhyZWFkU3RhdGVfR2V0Ci0gIFB5VGhyZWFkU3RhdGVfR2V0RGljdD1weXRob24zNC5QeVRocmVhZFN0YXRlX0dldERpY3QKLSAgUHlUaHJlYWRTdGF0ZV9OZXc9cHl0aG9uMzQuUHlUaHJlYWRTdGF0ZV9OZXcKLSAgUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4Yz1weXRob24zNC5QeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjCi0gIFB5VGhyZWFkU3RhdGVfU3dhcD1weXRob24zNC5QeVRocmVhZFN0YXRlX1N3YXAKLSAgUHlUcmFjZUJhY2tfSGVyZT1weXRob24zNC5QeVRyYWNlQmFja19IZXJlCi0gIFB5VHJhY2VCYWNrX1ByaW50PXB5dGhvbjM0LlB5VHJhY2VCYWNrX1ByaW50Ci0gIFB5VHJhY2VCYWNrX1R5cGU9cHl0aG9uMzQuUHlUcmFjZUJhY2tfVHlwZSBEQVRBCi0gIFB5VHVwbGVJdGVyX1R5cGU9cHl0aG9uMzQuUHlUdXBsZUl0ZXJfVHlwZSBEQVRBCi0gIFB5VHVwbGVfQ2xlYXJGcmVlTGlzdD1weXRob24zNC5QeVR1cGxlX0NsZWFyRnJlZUxpc3QKLSAgUHlUdXBsZV9HZXRJdGVtPXB5dGhvbjM0LlB5VHVwbGVfR2V0SXRlbQotICBQeVR1cGxlX0dldFNsaWNlPXB5dGhvbjM0LlB5VHVwbGVfR2V0U2xpY2UKLSAgUHlUdXBsZV9OZXc9cHl0aG9uMzQuUHlUdXBsZV9OZXcKLSAgUHlUdXBsZV9QYWNrPXB5dGhvbjM0LlB5VHVwbGVfUGFjawotICBQeVR1cGxlX1NldEl0ZW09cHl0aG9uMzQuUHlUdXBsZV9TZXRJdGVtCi0gIFB5VHVwbGVfU2l6ZT1weXRob24zNC5QeVR1cGxlX1NpemUKLSAgUHlUdXBsZV9UeXBlPXB5dGhvbjM0LlB5VHVwbGVfVHlwZSBEQVRBCi0gIFB5VHlwZV9DbGVhckNhY2hlPXB5dGhvbjM0LlB5VHlwZV9DbGVhckNhY2hlCi0gIFB5VHlwZV9Gcm9tU3BlYz1weXRob24zNC5QeVR5cGVfRnJvbVNwZWMKLSAgUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzPXB5dGhvbjM0LlB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcwotICBQeVR5cGVfR2VuZXJpY0FsbG9jPXB5dGhvbjM0LlB5VHlwZV9HZW5lcmljQWxsb2MKLSAgUHlUeXBlX0dlbmVyaWNOZXc9cHl0aG9uMzQuUHlUeXBlX0dlbmVyaWNOZXcKLSAgUHlUeXBlX0dldEZsYWdzPXB5dGhvbjM0LlB5VHlwZV9HZXRGbGFncwotICBQeVR5cGVfR2V0U2xvdD1weXRob24zNC5QeVR5cGVfR2V0U2xvdAotICBQeVR5cGVfSXNTdWJ0eXBlPXB5dGhvbjM0LlB5VHlwZV9Jc1N1YnR5cGUKLSAgUHlUeXBlX01vZGlmaWVkPXB5dGhvbjM0LlB5VHlwZV9Nb2RpZmllZAotICBQeVR5cGVfUmVhZHk9cHl0aG9uMzQuUHlUeXBlX1JlYWR5Ci0gIFB5VHlwZV9UeXBlPXB5dGhvbjM0LlB5VHlwZV9UeXBlIERBVEEKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlPXB5dGhvbjM0LlB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZQotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zNC5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZwotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzQuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdD1weXRob24zNC5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3QKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM0LlB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbgotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zNC5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzQuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kCi0gIFB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zNC5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb24KLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzQuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzQuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2RpbmcKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjM0LlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzQuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0Ci0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zNC5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb24KLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzQuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjM0LlB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzQuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM0LlB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0Ci0gIFB5VW5pY29kZUl0ZXJfVHlwZT1weXRob24zNC5QeVVuaWNvZGVJdGVyX1R5cGUgREFUQQotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzQuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdD1weXRob24zNC5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3QKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM0LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbgotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydD1weXRob24zNC5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzQuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbj1weXRob24zNC5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb24KLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzQuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQKLSAgUHlVbmljb2RlX0FwcGVuZD1weXRob24zNC5QeVVuaWNvZGVfQXBwZW5kCi0gIFB5VW5pY29kZV9BcHBlbmRBbmREZWw9cHl0aG9uMzQuUHlVbmljb2RlX0FwcGVuZEFuZERlbAotICBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZz1weXRob24zNC5QeVVuaWNvZGVfQXNBU0NJSVN0cmluZwotICBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nPXB5dGhvbjM0LlB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcKLSAgUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdD1weXRob24zNC5QeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlPXB5dGhvbjM0LlB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlCi0gIFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3Q9cHl0aG9uMzQuUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdAotICBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nPXB5dGhvbjM0LlB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcKLSAgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGU9cHl0aG9uMzQuUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUKLSAgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nPXB5dGhvbjM0LlB5VW5pY29kZV9Bc0xhdGluMVN0cmluZwotICBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM0LlB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmc9cHl0aG9uMzQuUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGMzJTdHJpbmc9cHl0aG9uMzQuUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGOFN0cmluZz1weXRob24zNC5QeVVuaWNvZGVfQXNVVEY4U3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzQuUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZwotICBQeVVuaWNvZGVfQXNXaWRlQ2hhcj1weXRob24zNC5QeVVuaWNvZGVfQXNXaWRlQ2hhcgotICBQeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdD1weXRob24zNC5QeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdAotICBQeVVuaWNvZGVfQ29tcGFyZT1weXRob24zNC5QeVVuaWNvZGVfQ29tcGFyZQotICBQeVVuaWNvZGVfQ29uY2F0PXB5dGhvbjM0LlB5VW5pY29kZV9Db25jYXQKLSAgUHlVbmljb2RlX0NvbnRhaW5zPXB5dGhvbjM0LlB5VW5pY29kZV9Db250YWlucwotICBQeVVuaWNvZGVfQ291bnQ9cHl0aG9uMzQuUHlVbmljb2RlX0NvdW50Ci0gIFB5VW5pY29kZV9EZWNvZGU9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZQotICBQeVVuaWNvZGVfRGVjb2RlQVNDSUk9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZUFTQ0lJCi0gIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwPXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVDaGFybWFwCi0gIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQ9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdAotICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZT1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZQotICBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xPXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVMYXRpbjEKLSAgUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGU9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUKLSAgUHlVbmljb2RlX0RlY29kZVVURjE2PXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVVVEYxNgotICBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bD1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRGVjb2RlVVRGMzI9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZVVURjMyCi0gIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsPXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVVEY4PXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVVVEY4Ci0gIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWw9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZT1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZQotICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXI9cHl0aG9uMzQuUHlVbmljb2RlX0ZTQ29udmVydGVyCi0gIFB5VW5pY29kZV9GU0RlY29kZXI9cHl0aG9uMzQuUHlVbmljb2RlX0ZTRGVjb2RlcgotICBQeVVuaWNvZGVfRmluZD1weXRob24zNC5QeVVuaWNvZGVfRmluZAotICBQeVVuaWNvZGVfRm9ybWF0PXB5dGhvbjM0LlB5VW5pY29kZV9Gb3JtYXQKLSAgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0PXB5dGhvbjM0LlB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdAotICBQeVVuaWNvZGVfRnJvbUZvcm1hdD1weXRob24zNC5QeVVuaWNvZGVfRnJvbUZvcm1hdAotICBQeVVuaWNvZGVfRnJvbUZvcm1hdFY9cHl0aG9uMzQuUHlVbmljb2RlX0Zyb21Gb3JtYXRWCi0gIFB5VW5pY29kZV9Gcm9tT2JqZWN0PXB5dGhvbjM0LlB5VW5pY29kZV9Gcm9tT2JqZWN0Ci0gIFB5VW5pY29kZV9Gcm9tT3JkaW5hbD1weXRob24zNC5QeVVuaWNvZGVfRnJvbU9yZGluYWwKLSAgUHlVbmljb2RlX0Zyb21TdHJpbmc9cHl0aG9uMzQuUHlVbmljb2RlX0Zyb21TdHJpbmcKLSAgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM0LlB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyPXB5dGhvbjM0LlB5VW5pY29kZV9Gcm9tV2lkZUNoYXIKLSAgUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZz1weXRob24zNC5QeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nCi0gIFB5VW5pY29kZV9HZXRTaXplPXB5dGhvbjM0LlB5VW5pY29kZV9HZXRTaXplCi0gIFB5VW5pY29kZV9Jc0lkZW50aWZpZXI9cHl0aG9uMzQuUHlVbmljb2RlX0lzSWRlbnRpZmllcgotICBQeVVuaWNvZGVfSm9pbj1weXRob24zNC5QeVVuaWNvZGVfSm9pbgotICBQeVVuaWNvZGVfUGFydGl0aW9uPXB5dGhvbjM0LlB5VW5pY29kZV9QYXJ0aXRpb24KLSAgUHlVbmljb2RlX1JQYXJ0aXRpb249cHl0aG9uMzQuUHlVbmljb2RlX1JQYXJ0aXRpb24KLSAgUHlVbmljb2RlX1JTcGxpdD1weXRob24zNC5QeVVuaWNvZGVfUlNwbGl0Ci0gIFB5VW5pY29kZV9SZXBsYWNlPXB5dGhvbjM0LlB5VW5pY29kZV9SZXBsYWNlCi0gIFB5VW5pY29kZV9SZXNpemU9cHl0aG9uMzQuUHlVbmljb2RlX1Jlc2l6ZQotICBQeVVuaWNvZGVfUmljaENvbXBhcmU9cHl0aG9uMzQuUHlVbmljb2RlX1JpY2hDb21wYXJlCi0gIFB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzQuUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZwotICBQeVVuaWNvZGVfU3BsaXQ9cHl0aG9uMzQuUHlVbmljb2RlX1NwbGl0Ci0gIFB5VW5pY29kZV9TcGxpdGxpbmVzPXB5dGhvbjM0LlB5VW5pY29kZV9TcGxpdGxpbmVzCi0gIFB5VW5pY29kZV9UYWlsbWF0Y2g9cHl0aG9uMzQuUHlVbmljb2RlX1RhaWxtYXRjaAotICBQeVVuaWNvZGVfVHJhbnNsYXRlPXB5dGhvbjM0LlB5VW5pY29kZV9UcmFuc2xhdGUKLSAgUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXA9cHl0aG9uMzQuUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAKLSAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmc9cHl0aG9uMzQuUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcKLSAgUHlVbmljb2RlX0RlY29kZVVURjc9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZVVURjcKLSAgUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bD1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsCi0gIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQ9cHl0aG9uMzQuUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdAotICBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZz1weXRob24zNC5QeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZwotICBQeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWw9cHl0aG9uMzQuUHlVbmljb2RlX0ludGVybkltbW9ydGFsCi0gIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlPXB5dGhvbjM0LlB5VW5pY29kZV9JbnRlcm5JblBsYWNlCi0gIFB5VW5pY29kZV9UeXBlPXB5dGhvbjM0LlB5VW5pY29kZV9UeXBlIERBVEEKLSAgUHlXZWFrcmVmX0dldE9iamVjdD1weXRob24zNC5QeVdlYWtyZWZfR2V0T2JqZWN0IERBVEEKLSAgUHlXZWFrcmVmX05ld1Byb3h5PXB5dGhvbjM0LlB5V2Vha3JlZl9OZXdQcm94eQotICBQeVdlYWtyZWZfTmV3UmVmPXB5dGhvbjM0LlB5V2Vha3JlZl9OZXdSZWYKLSAgUHlXcmFwcGVyRGVzY3JfVHlwZT1weXRob24zNC5QeVdyYXBwZXJEZXNjcl9UeXBlIERBVEEKLSAgUHlXcmFwcGVyX05ldz1weXRob24zNC5QeVdyYXBwZXJfTmV3Ci0gIFB5WmlwX1R5cGU9cHl0aG9uMzQuUHlaaXBfVHlwZSBEQVRBCi0gIFB5X0FkZFBlbmRpbmdDYWxsPXB5dGhvbjM0LlB5X0FkZFBlbmRpbmdDYWxsCi0gIFB5X0F0RXhpdD1weXRob24zNC5QeV9BdEV4aXQKLSAgUHlfQnVpbGRWYWx1ZT1weXRob24zNC5QeV9CdWlsZFZhbHVlCi0gIFB5X0NvbXBpbGVTdHJpbmc9cHl0aG9uMzQuUHlfQ29tcGlsZVN0cmluZwotICBQeV9EZWNSZWY9cHl0aG9uMzQuUHlfRGVjUmVmCi0gIFB5X0VuZEludGVycHJldGVyPXB5dGhvbjM0LlB5X0VuZEludGVycHJldGVyCi0gIFB5X0V4aXQ9cHl0aG9uMzQuUHlfRXhpdAotICBQeV9GYXRhbEVycm9yPXB5dGhvbjM0LlB5X0ZhdGFsRXJyb3IKLSAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zNC5QeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKLSAgUHlfRmluYWxpemU9cHl0aG9uMzQuUHlfRmluYWxpemUKLSAgUHlfR2V0QnVpbGRJbmZvPXB5dGhvbjM0LlB5X0dldEJ1aWxkSW5mbwotICBQeV9HZXRDb21waWxlcj1weXRob24zNC5QeV9HZXRDb21waWxlcgotICBQeV9HZXRDb3B5cmlnaHQ9cHl0aG9uMzQuUHlfR2V0Q29weXJpZ2h0Ci0gIFB5X0dldEV4ZWNQcmVmaXg9cHl0aG9uMzQuUHlfR2V0RXhlY1ByZWZpeAotICBQeV9HZXRQYXRoPXB5dGhvbjM0LlB5X0dldFBhdGgKLSAgUHlfR2V0UGxhdGZvcm09cHl0aG9uMzQuUHlfR2V0UGxhdGZvcm0KLSAgUHlfR2V0UHJlZml4PXB5dGhvbjM0LlB5X0dldFByZWZpeAotICBQeV9HZXRQcm9ncmFtRnVsbFBhdGg9cHl0aG9uMzQuUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoCi0gIFB5X0dldFByb2dyYW1OYW1lPXB5dGhvbjM0LlB5X0dldFByb2dyYW1OYW1lCi0gIFB5X0dldFB5dGhvbkhvbWU9cHl0aG9uMzQuUHlfR2V0UHl0aG9uSG9tZQotICBQeV9HZXRSZWN1cnNpb25MaW1pdD1weXRob24zNC5QeV9HZXRSZWN1cnNpb25MaW1pdAotICBQeV9HZXRWZXJzaW9uPXB5dGhvbjM0LlB5X0dldFZlcnNpb24KLSAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zNC5QeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKLSAgUHlfSW5jUmVmPXB5dGhvbjM0LlB5X0luY1JlZgotICBQeV9Jbml0aWFsaXplPXB5dGhvbjM0LlB5X0luaXRpYWxpemUKLSAgUHlfSW5pdGlhbGl6ZUV4PXB5dGhvbjM0LlB5X0luaXRpYWxpemVFeAotICBQeV9Jc0luaXRpYWxpemVkPXB5dGhvbjM0LlB5X0lzSW5pdGlhbGl6ZWQKLSAgUHlfTWFpbj1weXRob24zNC5QeV9NYWluCi0gIFB5X01ha2VQZW5kaW5nQ2FsbHM9cHl0aG9uMzQuUHlfTWFrZVBlbmRpbmdDYWxscwotICBQeV9OZXdJbnRlcnByZXRlcj1weXRob24zNC5QeV9OZXdJbnRlcnByZXRlcgotICBQeV9SZXByRW50ZXI9cHl0aG9uMzQuUHlfUmVwckVudGVyCi0gIFB5X1JlcHJMZWF2ZT1weXRob24zNC5QeV9SZXByTGVhdmUKLSAgUHlfU2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzQuUHlfU2V0UHJvZ3JhbU5hbWUKLSAgUHlfU2V0UHl0aG9uSG9tZT1weXRob24zNC5QeV9TZXRQeXRob25Ib21lCi0gIFB5X1NldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM0LlB5X1NldFJlY3Vyc2lvbkxpbWl0Ci0gIFB5X1N5bXRhYmxlU3RyaW5nPXB5dGhvbjM0LlB5X1N5bXRhYmxlU3RyaW5nCi0gIFB5X1ZhQnVpbGRWYWx1ZT1weXRob24zNC5QeV9WYUJ1aWxkVmFsdWUKLSAgX1B5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zNC5fUHlFcnJfQmFkSW50ZXJuYWxDYWxsCi0gIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQ9cHl0aG9uMzQuX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVAotICBfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVD1weXRob24zNC5fUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVAotICBfUHlPYmplY3RfR0NfTWFsbG9jPXB5dGhvbjM0Ll9QeU9iamVjdF9HQ19NYWxsb2MKLSAgX1B5T2JqZWN0X0dDX05ldz1weXRob24zNC5fUHlPYmplY3RfR0NfTmV3Ci0gIF9QeU9iamVjdF9HQ19OZXdWYXI9cHl0aG9uMzQuX1B5T2JqZWN0X0dDX05ld1ZhcgotICBfUHlPYmplY3RfR0NfUmVzaXplPXB5dGhvbjM0Ll9QeU9iamVjdF9HQ19SZXNpemUKLSAgX1B5T2JqZWN0X05ldz1weXRob24zNC5fUHlPYmplY3RfTmV3Ci0gIF9QeU9iamVjdF9OZXdWYXI9cHl0aG9uMzQuX1B5T2JqZWN0X05ld1ZhcgotICBfUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzQuX1B5U3RhdGVfQWRkTW9kdWxlCi0gIF9QeVRocmVhZFN0YXRlX0luaXQ9cHl0aG9uMzQuX1B5VGhyZWFkU3RhdGVfSW5pdAotICBfUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYz1weXRob24zNC5fUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYwotICBfUHlUcmFzaF9kZWxldGVfbGF0ZXI9cHl0aG9uMzQuX1B5VHJhc2hfZGVsZXRlX2xhdGVyIERBVEEKLSAgX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc9cHl0aG9uMzQuX1B5VHJhc2hfZGVsZXRlX25lc3RpbmcgREFUQQotICBfUHlUcmFzaF9kZXBvc2l0X29iamVjdD1weXRob24zNC5fUHlUcmFzaF9kZXBvc2l0X29iamVjdAotICBfUHlUcmFzaF9kZXN0cm95X2NoYWluPXB5dGhvbjM0Ll9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4KLSAgX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZT1weXRob24zNC5fUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlIERBVEEKLSAgX1B5V2Vha3JlZl9Qcm94eVR5cGU9cHl0aG9uMzQuX1B5V2Vha3JlZl9Qcm94eVR5cGUgREFUQQotICBfUHlXZWFrcmVmX1JlZlR5cGU9cHl0aG9uMzQuX1B5V2Vha3JlZl9SZWZUeXBlIERBVEEKLSAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzQuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKLSAgX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQ9cHl0aG9uMzQuX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQgREFUQQotICBfUHlfQ2hlY2tSZWN1cnNpdmVDYWxsPXB5dGhvbjM0Ll9QeV9DaGVja1JlY3Vyc2l2ZUNhbGwKLSAgX1B5X0RlYWxsb2M9cHl0aG9uMzQuX1B5X0RlYWxsb2MKLSAgX1B5X0VsbGlwc2lzT2JqZWN0PXB5dGhvbjM0Ll9QeV9FbGxpcHNpc09iamVjdCBEQVRBCi0gIF9QeV9GYWxzZVN0cnVjdD1weXRob24zNC5fUHlfRmFsc2VTdHJ1Y3QgREFUQQotICBfUHlfTm9uZVN0cnVjdD1weXRob24zNC5fUHlfTm9uZVN0cnVjdCBEQVRBCi0gIF9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdD1weXRob24zNC5fUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3QgREFUQQotICBfUHlfU3dhcHBlZE9wPXB5dGhvbjM0Ll9QeV9Td2FwcGVkT3AgREFUQQotICBfUHlfVHJ1ZVN0cnVjdD1weXRob24zNC5fUHlfVHJ1ZVN0cnVjdCBEQVRBCi0gIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzQuX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVAotICBfUHlBcmdfUGFyc2VfU2l6ZVQ9cHl0aG9uMzQuX1B5QXJnX1BhcnNlX1NpemVUCi0gIF9QeUFyZ19QYXJzZVR1cGxlX1NpemVUPXB5dGhvbjM0Ll9QeUFyZ19QYXJzZVR1cGxlX1NpemVUCi0gIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzQuX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAotICBfUHlBcmdfVmFQYXJzZV9TaXplVD1weXRob24zNC5fUHlBcmdfVmFQYXJzZV9TaXplVAotICBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzQuX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCi0gIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM0Ll9QeV9CdWlsZFZhbHVlX1NpemVUCisgIFB5QXJnX1BhcnNlPXB5dGhvbjM1LlB5QXJnX1BhcnNlCisgIFB5QXJnX1BhcnNlVHVwbGU9cHl0aG9uMzUuUHlBcmdfUGFyc2VUdXBsZQorICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHM9cHl0aG9uMzUuUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzCisgIFB5QXJnX1VucGFja1R1cGxlPXB5dGhvbjM1LlB5QXJnX1VucGFja1R1cGxlCisgIFB5QXJnX1ZhUGFyc2U9cHl0aG9uMzUuUHlBcmdfVmFQYXJzZQorICBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNS5QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcworICBQeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHM9cHl0aG9uMzUuUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzCisgIFB5QmFzZU9iamVjdF9UeXBlPXB5dGhvbjM1LlB5QmFzZU9iamVjdF9UeXBlIERBVEEKKyAgUHlCb29sX0Zyb21Mb25nPXB5dGhvbjM1LlB5Qm9vbF9Gcm9tTG9uZworICBQeUJvb2xfVHlwZT1weXRob24zNS5QeUJvb2xfVHlwZSBEQVRBCisgIFB5Qnl0ZUFycmF5SXRlcl9UeXBlPXB5dGhvbjM1LlB5Qnl0ZUFycmF5SXRlcl9UeXBlIERBVEEKKyAgUHlCeXRlQXJyYXlfQXNTdHJpbmc9cHl0aG9uMzUuUHlCeXRlQXJyYXlfQXNTdHJpbmcKKyAgUHlCeXRlQXJyYXlfQ29uY2F0PXB5dGhvbjM1LlB5Qnl0ZUFycmF5X0NvbmNhdAorICBQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0PXB5dGhvbjM1LlB5Qnl0ZUFycmF5X0Zyb21PYmplY3QKKyAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzUuUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlCeXRlQXJyYXlfUmVzaXplPXB5dGhvbjM1LlB5Qnl0ZUFycmF5X1Jlc2l6ZQorICBQeUJ5dGVBcnJheV9TaXplPXB5dGhvbjM1LlB5Qnl0ZUFycmF5X1NpemUKKyAgUHlCeXRlQXJyYXlfVHlwZT1weXRob24zNS5QeUJ5dGVBcnJheV9UeXBlIERBVEEKKyAgUHlCeXRlc0l0ZXJfVHlwZT1weXRob24zNS5QeUJ5dGVzSXRlcl9UeXBlIERBVEEKKyAgUHlCeXRlc19Bc1N0cmluZz1weXRob24zNS5QeUJ5dGVzX0FzU3RyaW5nCisgIFB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplPXB5dGhvbjM1LlB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplCisgIFB5Qnl0ZXNfQ29uY2F0PXB5dGhvbjM1LlB5Qnl0ZXNfQ29uY2F0CisgIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsPXB5dGhvbjM1LlB5Qnl0ZXNfQ29uY2F0QW5kRGVsCisgIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlPXB5dGhvbjM1LlB5Qnl0ZXNfRGVjb2RlRXNjYXBlCisgIFB5Qnl0ZXNfRnJvbUZvcm1hdD1weXRob24zNS5QeUJ5dGVzX0Zyb21Gb3JtYXQKKyAgUHlCeXRlc19Gcm9tRm9ybWF0Vj1weXRob24zNS5QeUJ5dGVzX0Zyb21Gb3JtYXRWCisgIFB5Qnl0ZXNfRnJvbU9iamVjdD1weXRob24zNS5QeUJ5dGVzX0Zyb21PYmplY3QKKyAgUHlCeXRlc19Gcm9tU3RyaW5nPXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbVN0cmluZworICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlCeXRlc19SZXByPXB5dGhvbjM1LlB5Qnl0ZXNfUmVwcgorICBQeUJ5dGVzX1NpemU9cHl0aG9uMzUuUHlCeXRlc19TaXplCisgIFB5Qnl0ZXNfVHlwZT1weXRob24zNS5QeUJ5dGVzX1R5cGUgREFUQQorICBQeUNGdW5jdGlvbl9DYWxsPXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX0NhbGwKKyAgUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdD1weXRob24zNS5QeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0CisgIFB5Q0Z1bmN0aW9uX0dldEZsYWdzPXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX0dldEZsYWdzCisgIFB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uPXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uCisgIFB5Q0Z1bmN0aW9uX0dldFNlbGY9cHl0aG9uMzUuUHlDRnVuY3Rpb25fR2V0U2VsZgorICBQeUNGdW5jdGlvbl9OZXc9cHl0aG9uMzUuUHlDRnVuY3Rpb25fTmV3CisgIFB5Q0Z1bmN0aW9uX05ld0V4PXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX05ld0V4CisgIFB5Q0Z1bmN0aW9uX1R5cGU9cHl0aG9uMzUuUHlDRnVuY3Rpb25fVHlwZSBEQVRBCisgIFB5Q2FsbEl0ZXJfTmV3PXB5dGhvbjM1LlB5Q2FsbEl0ZXJfTmV3CisgIFB5Q2FsbEl0ZXJfVHlwZT1weXRob24zNS5QeUNhbGxJdGVyX1R5cGUgREFUQQorICBQeUNhbGxhYmxlX0NoZWNrPXB5dGhvbjM1LlB5Q2FsbGFibGVfQ2hlY2sKKyAgUHlDYXBzdWxlX0dldENvbnRleHQ9cHl0aG9uMzUuUHlDYXBzdWxlX0dldENvbnRleHQKKyAgUHlDYXBzdWxlX0dldERlc3RydWN0b3I9cHl0aG9uMzUuUHlDYXBzdWxlX0dldERlc3RydWN0b3IKKyAgUHlDYXBzdWxlX0dldE5hbWU9cHl0aG9uMzUuUHlDYXBzdWxlX0dldE5hbWUKKyAgUHlDYXBzdWxlX0dldFBvaW50ZXI9cHl0aG9uMzUuUHlDYXBzdWxlX0dldFBvaW50ZXIKKyAgUHlDYXBzdWxlX0ltcG9ydD1weXRob24zNS5QeUNhcHN1bGVfSW1wb3J0CisgIFB5Q2Fwc3VsZV9Jc1ZhbGlkPXB5dGhvbjM1LlB5Q2Fwc3VsZV9Jc1ZhbGlkCisgIFB5Q2Fwc3VsZV9OZXc9cHl0aG9uMzUuUHlDYXBzdWxlX05ldworICBQeUNhcHN1bGVfU2V0Q29udGV4dD1weXRob24zNS5QeUNhcHN1bGVfU2V0Q29udGV4dAorICBQeUNhcHN1bGVfU2V0RGVzdHJ1Y3Rvcj1weXRob24zNS5QeUNhcHN1bGVfU2V0RGVzdHJ1Y3RvcgorICBQeUNhcHN1bGVfU2V0TmFtZT1weXRob24zNS5QeUNhcHN1bGVfU2V0TmFtZQorICBQeUNhcHN1bGVfU2V0UG9pbnRlcj1weXRob24zNS5QeUNhcHN1bGVfU2V0UG9pbnRlcgorICBQeUNhcHN1bGVfVHlwZT1weXRob24zNS5QeUNhcHN1bGVfVHlwZSBEQVRBCisgIFB5Q2xhc3NNZXRob2REZXNjcl9UeXBlPXB5dGhvbjM1LlB5Q2xhc3NNZXRob2REZXNjcl9UeXBlIERBVEEKKyAgUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzPXB5dGhvbjM1LlB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycworICBQeUNvZGVjX0RlY29kZT1weXRob24zNS5QeUNvZGVjX0RlY29kZQorICBQeUNvZGVjX0RlY29kZXI9cHl0aG9uMzUuUHlDb2RlY19EZWNvZGVyCisgIFB5Q29kZWNfRW5jb2RlPXB5dGhvbjM1LlB5Q29kZWNfRW5jb2RlCisgIFB5Q29kZWNfRW5jb2Rlcj1weXRob24zNS5QeUNvZGVjX0VuY29kZXIKKyAgUHlDb2RlY19JZ25vcmVFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19JZ25vcmVFcnJvcnMKKyAgUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXI9cHl0aG9uMzUuUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXIKKyAgUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXI9cHl0aG9uMzUuUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXIKKyAgUHlDb2RlY19Lbm93bkVuY29kaW5nPXB5dGhvbjM1LlB5Q29kZWNfS25vd25FbmNvZGluZworICBQeUNvZGVjX0xvb2t1cEVycm9yPXB5dGhvbjM1LlB5Q29kZWNfTG9va3VwRXJyb3IKKyAgUHlDb2RlY19SZWdpc3Rlcj1weXRob24zNS5QeUNvZGVjX1JlZ2lzdGVyCisgIFB5Q29kZWNfUmVnaXN0ZXJFcnJvcj1weXRob24zNS5QeUNvZGVjX1JlZ2lzdGVyRXJyb3IKKyAgUHlDb2RlY19SZXBsYWNlRXJyb3JzPXB5dGhvbjM1LlB5Q29kZWNfUmVwbGFjZUVycm9ycworICBQeUNvZGVjX1N0cmVhbVJlYWRlcj1weXRob24zNS5QeUNvZGVjX1N0cmVhbVJlYWRlcgorICBQeUNvZGVjX1N0cmVhbVdyaXRlcj1weXRob24zNS5QeUNvZGVjX1N0cmVhbVdyaXRlcgorICBQeUNvZGVjX1N0cmljdEVycm9ycz1weXRob24zNS5QeUNvZGVjX1N0cmljdEVycm9ycworICBQeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzPXB5dGhvbjM1LlB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnMKKyAgUHlDb21wbGV4X0Zyb21Eb3VibGVzPXB5dGhvbjM1LlB5Q29tcGxleF9Gcm9tRG91YmxlcworICBQeUNvbXBsZXhfSW1hZ0FzRG91YmxlPXB5dGhvbjM1LlB5Q29tcGxleF9JbWFnQXNEb3VibGUKKyAgUHlDb21wbGV4X1JlYWxBc0RvdWJsZT1weXRob24zNS5QeUNvbXBsZXhfUmVhbEFzRG91YmxlCisgIFB5Q29tcGxleF9UeXBlPXB5dGhvbjM1LlB5Q29tcGxleF9UeXBlIERBVEEKKyAgUHlEZXNjcl9OZXdDbGFzc01ldGhvZD1weXRob24zNS5QeURlc2NyX05ld0NsYXNzTWV0aG9kCisgIFB5RGVzY3JfTmV3R2V0U2V0PXB5dGhvbjM1LlB5RGVzY3JfTmV3R2V0U2V0CisgIFB5RGVzY3JfTmV3TWVtYmVyPXB5dGhvbjM1LlB5RGVzY3JfTmV3TWVtYmVyCisgIFB5RGVzY3JfTmV3TWV0aG9kPXB5dGhvbjM1LlB5RGVzY3JfTmV3TWV0aG9kCisgIFB5RGljdEl0ZW1zX1R5cGU9cHl0aG9uMzUuUHlEaWN0SXRlbXNfVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJJdGVtX1R5cGU9cHl0aG9uMzUuUHlEaWN0SXRlckl0ZW1fVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJLZXlfVHlwZT1weXRob24zNS5QeURpY3RJdGVyS2V5X1R5cGUgREFUQQorICBQeURpY3RJdGVyVmFsdWVfVHlwZT1weXRob24zNS5QeURpY3RJdGVyVmFsdWVfVHlwZSBEQVRBCisgIFB5RGljdEtleXNfVHlwZT1weXRob24zNS5QeURpY3RLZXlzX1R5cGUgREFUQQorICBQeURpY3RQcm94eV9OZXc9cHl0aG9uMzUuUHlEaWN0UHJveHlfTmV3CisgIFB5RGljdFByb3h5X1R5cGU9cHl0aG9uMzUuUHlEaWN0UHJveHlfVHlwZSBEQVRBCisgIFB5RGljdFZhbHVlc19UeXBlPXB5dGhvbjM1LlB5RGljdFZhbHVlc19UeXBlIERBVEEKKyAgUHlEaWN0X0NsZWFyPXB5dGhvbjM1LlB5RGljdF9DbGVhcgorICBQeURpY3RfQ29udGFpbnM9cHl0aG9uMzUuUHlEaWN0X0NvbnRhaW5zCisgIFB5RGljdF9Db3B5PXB5dGhvbjM1LlB5RGljdF9Db3B5CisgIFB5RGljdF9EZWxJdGVtPXB5dGhvbjM1LlB5RGljdF9EZWxJdGVtCisgIFB5RGljdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjM1LlB5RGljdF9EZWxJdGVtU3RyaW5nCisgIFB5RGljdF9HZXRJdGVtPXB5dGhvbjM1LlB5RGljdF9HZXRJdGVtCisgIFB5RGljdF9HZXRJdGVtU3RyaW5nPXB5dGhvbjM1LlB5RGljdF9HZXRJdGVtU3RyaW5nCisgIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yPXB5dGhvbjM1LlB5RGljdF9HZXRJdGVtV2l0aEVycm9yCisgIFB5RGljdF9JdGVtcz1weXRob24zNS5QeURpY3RfSXRlbXMKKyAgUHlEaWN0X0tleXM9cHl0aG9uMzUuUHlEaWN0X0tleXMKKyAgUHlEaWN0X01lcmdlPXB5dGhvbjM1LlB5RGljdF9NZXJnZQorICBQeURpY3RfTWVyZ2VGcm9tU2VxMj1weXRob24zNS5QeURpY3RfTWVyZ2VGcm9tU2VxMgorICBQeURpY3RfTmV3PXB5dGhvbjM1LlB5RGljdF9OZXcKKyAgUHlEaWN0X05leHQ9cHl0aG9uMzUuUHlEaWN0X05leHQKKyAgUHlEaWN0X1NldEl0ZW09cHl0aG9uMzUuUHlEaWN0X1NldEl0ZW0KKyAgUHlEaWN0X1NldEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlEaWN0X1NldEl0ZW1TdHJpbmcKKyAgUHlEaWN0X1NpemU9cHl0aG9uMzUuUHlEaWN0X1NpemUKKyAgUHlEaWN0X1R5cGU9cHl0aG9uMzUuUHlEaWN0X1R5cGUgREFUQQorICBQeURpY3RfVXBkYXRlPXB5dGhvbjM1LlB5RGljdF9VcGRhdGUKKyAgUHlEaWN0X1ZhbHVlcz1weXRob24zNS5QeURpY3RfVmFsdWVzCisgIFB5RWxsaXBzaXNfVHlwZT1weXRob24zNS5QeUVsbGlwc2lzX1R5cGUgREFUQQorICBQeUVudW1fVHlwZT1weXRob24zNS5QeUVudW1fVHlwZSBEQVRBCisgIFB5RXJyX0JhZEFyZ3VtZW50PXB5dGhvbjM1LlB5RXJyX0JhZEFyZ3VtZW50CisgIFB5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zNS5QeUVycl9CYWRJbnRlcm5hbENhbGwKKyAgUHlFcnJfQ2hlY2tTaWduYWxzPXB5dGhvbjM1LlB5RXJyX0NoZWNrU2lnbmFscworICBQeUVycl9DbGVhcj1weXRob24zNS5QeUVycl9DbGVhcgorICBQeUVycl9EaXNwbGF5PXB5dGhvbjM1LlB5RXJyX0Rpc3BsYXkKKyAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zNS5QeUVycl9FeGNlcHRpb25NYXRjaGVzCisgIFB5RXJyX0ZldGNoPXB5dGhvbjM1LlB5RXJyX0ZldGNoCisgIFB5RXJyX0Zvcm1hdD1weXRob24zNS5QeUVycl9Gb3JtYXQKKyAgUHlFcnJfRm9ybWF0Vj1weXRob24zNS5QeUVycl9Gb3JtYXRWCisgIFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zNS5QeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMKKyAgUHlFcnJfTmV3RXhjZXB0aW9uPXB5dGhvbjM1LlB5RXJyX05ld0V4Y2VwdGlvbgorICBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jPXB5dGhvbjM1LlB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MKKyAgUHlFcnJfTm9NZW1vcnk9cHl0aG9uMzUuUHlFcnJfTm9NZW1vcnkKKyAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uPXB5dGhvbjM1LlB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbgorICBQeUVycl9PY2N1cnJlZD1weXRob24zNS5QeUVycl9PY2N1cnJlZAorICBQeUVycl9QcmludD1weXRob24zNS5QeUVycl9QcmludAorICBQeUVycl9QcmludEV4PXB5dGhvbjM1LlB5RXJyX1ByaW50RXgKKyAgUHlFcnJfUHJvZ3JhbVRleHQ9cHl0aG9uMzUuUHlFcnJfUHJvZ3JhbVRleHQKKyAgUHlFcnJfUmVzdG9yZT1weXRob24zNS5QeUVycl9SZXN0b3JlCisgIFB5RXJyX1NldEZyb21FcnJubz1weXRob24zNS5QeUVycl9TZXRGcm9tRXJybm8KKyAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lPXB5dGhvbjM1LlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZQorICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3Q9cHl0aG9uMzUuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0CisgIFB5RXJyX1NldEludGVycnVwdD1weXRob24zNS5QeUVycl9TZXRJbnRlcnJ1cHQKKyAgUHlFcnJfU2V0Tm9uZT1weXRob24zNS5QeUVycl9TZXROb25lCisgIFB5RXJyX1NldE9iamVjdD1weXRob24zNS5QeUVycl9TZXRPYmplY3QKKyAgUHlFcnJfU2V0U3RyaW5nPXB5dGhvbjM1LlB5RXJyX1NldFN0cmluZworICBQeUVycl9TeW50YXhMb2NhdGlvbj1weXRob24zNS5QeUVycl9TeW50YXhMb2NhdGlvbgorICBQeUVycl9XYXJuRXg9cHl0aG9uMzUuUHlFcnJfV2FybkV4CisgIFB5RXJyX1dhcm5FeHBsaWNpdD1weXRob24zNS5QeUVycl9XYXJuRXhwbGljaXQKKyAgUHlFcnJfV2FybkZvcm1hdD1weXRob24zNS5QeUVycl9XYXJuRm9ybWF0CisgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZT1weXRob24zNS5QeUVycl9Xcml0ZVVucmFpc2FibGUKKyAgUHlFdmFsX0FjcXVpcmVMb2NrPXB5dGhvbjM1LlB5RXZhbF9BY3F1aXJlTG9jaworICBQeUV2YWxfQWNxdWlyZVRocmVhZD1weXRob24zNS5QeUV2YWxfQWNxdWlyZVRocmVhZAorICBQeUV2YWxfQ2FsbEZ1bmN0aW9uPXB5dGhvbjM1LlB5RXZhbF9DYWxsRnVuY3Rpb24KKyAgUHlFdmFsX0NhbGxNZXRob2Q9cHl0aG9uMzUuUHlFdmFsX0NhbGxNZXRob2QKKyAgUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHM9cHl0aG9uMzUuUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMKKyAgUHlFdmFsX0V2YWxDb2RlPXB5dGhvbjM1LlB5RXZhbF9FdmFsQ29kZQorICBQeUV2YWxfRXZhbENvZGVFeD1weXRob24zNS5QeUV2YWxfRXZhbENvZGVFeAorICBQeUV2YWxfRXZhbEZyYW1lPXB5dGhvbjM1LlB5RXZhbF9FdmFsRnJhbWUKKyAgUHlFdmFsX0V2YWxGcmFtZUV4PXB5dGhvbjM1LlB5RXZhbF9FdmFsRnJhbWVFeAorICBQeUV2YWxfR2V0QnVpbHRpbnM9cHl0aG9uMzUuUHlFdmFsX0dldEJ1aWx0aW5zCisgIFB5RXZhbF9HZXRDYWxsU3RhdHM9cHl0aG9uMzUuUHlFdmFsX0dldENhbGxTdGF0cworICBQeUV2YWxfR2V0RnJhbWU9cHl0aG9uMzUuUHlFdmFsX0dldEZyYW1lCisgIFB5RXZhbF9HZXRGdW5jRGVzYz1weXRob24zNS5QeUV2YWxfR2V0RnVuY0Rlc2MKKyAgUHlFdmFsX0dldEZ1bmNOYW1lPXB5dGhvbjM1LlB5RXZhbF9HZXRGdW5jTmFtZQorICBQeUV2YWxfR2V0R2xvYmFscz1weXRob24zNS5QeUV2YWxfR2V0R2xvYmFscworICBQeUV2YWxfR2V0TG9jYWxzPXB5dGhvbjM1LlB5RXZhbF9HZXRMb2NhbHMKKyAgUHlFdmFsX0luaXRUaHJlYWRzPXB5dGhvbjM1LlB5RXZhbF9Jbml0VGhyZWFkcworICBQeUV2YWxfUmVJbml0VGhyZWFkcz1weXRob24zNS5QeUV2YWxfUmVJbml0VGhyZWFkcworICBQeUV2YWxfUmVsZWFzZUxvY2s9cHl0aG9uMzUuUHlFdmFsX1JlbGVhc2VMb2NrCisgIFB5RXZhbF9SZWxlYXNlVGhyZWFkPXB5dGhvbjM1LlB5RXZhbF9SZWxlYXNlVGhyZWFkCisgIFB5RXZhbF9SZXN0b3JlVGhyZWFkPXB5dGhvbjM1LlB5RXZhbF9SZXN0b3JlVGhyZWFkCisgIFB5RXZhbF9TYXZlVGhyZWFkPXB5dGhvbjM1LlB5RXZhbF9TYXZlVGhyZWFkCisgIFB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQ9cHl0aG9uMzUuUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZAorICBQeUV4Y19Bcml0aG1ldGljRXJyb3I9cHl0aG9uMzUuUHlFeGNfQXJpdGhtZXRpY0Vycm9yIERBVEEKKyAgUHlFeGNfQXNzZXJ0aW9uRXJyb3I9cHl0aG9uMzUuUHlFeGNfQXNzZXJ0aW9uRXJyb3IgREFUQQorICBQeUV4Y19BdHRyaWJ1dGVFcnJvcj1weXRob24zNS5QeUV4Y19BdHRyaWJ1dGVFcnJvciBEQVRBCisgIFB5RXhjX0Jhc2VFeGNlcHRpb249cHl0aG9uMzUuUHlFeGNfQmFzZUV4Y2VwdGlvbiBEQVRBCisgIFB5RXhjX0J1ZmZlckVycm9yPXB5dGhvbjM1LlB5RXhjX0J1ZmZlckVycm9yIERBVEEKKyAgUHlFeGNfQnl0ZXNXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX0J5dGVzV2FybmluZyBEQVRBCisgIFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zNS5QeUV4Y19EZXByZWNhdGlvbldhcm5pbmcgREFUQQorICBQeUV4Y19FT0ZFcnJvcj1weXRob24zNS5QeUV4Y19FT0ZFcnJvciBEQVRBCisgIFB5RXhjX0Vudmlyb25tZW50RXJyb3I9cHl0aG9uMzUuUHlFeGNfRW52aXJvbm1lbnRFcnJvciBEQVRBCisgIFB5RXhjX0V4Y2VwdGlvbj1weXRob24zNS5QeUV4Y19FeGNlcHRpb24gREFUQQorICBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3I9cHl0aG9uMzUuUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yIERBVEEKKyAgUHlFeGNfRnV0dXJlV2FybmluZz1weXRob24zNS5QeUV4Y19GdXR1cmVXYXJuaW5nIERBVEEKKyAgUHlFeGNfR2VuZXJhdG9yRXhpdD1weXRob24zNS5QeUV4Y19HZW5lcmF0b3JFeGl0IERBVEEKKyAgUHlFeGNfSU9FcnJvcj1weXRob24zNS5QeUV4Y19JT0Vycm9yIERBVEEKKyAgUHlFeGNfSW1wb3J0RXJyb3I9cHl0aG9uMzUuUHlFeGNfSW1wb3J0RXJyb3IgREFUQQorICBQeUV4Y19JbXBvcnRXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX0ltcG9ydFdhcm5pbmcgREFUQQorICBQeUV4Y19JbmRlbnRhdGlvbkVycm9yPXB5dGhvbjM1LlB5RXhjX0luZGVudGF0aW9uRXJyb3IgREFUQQorICBQeUV4Y19JbmRleEVycm9yPXB5dGhvbjM1LlB5RXhjX0luZGV4RXJyb3IgREFUQQorICBQeUV4Y19LZXlFcnJvcj1weXRob24zNS5QeUV4Y19LZXlFcnJvciBEQVRBCisgIFB5RXhjX0tleWJvYXJkSW50ZXJydXB0PXB5dGhvbjM1LlB5RXhjX0tleWJvYXJkSW50ZXJydXB0IERBVEEKKyAgUHlFeGNfTG9va3VwRXJyb3I9cHl0aG9uMzUuUHlFeGNfTG9va3VwRXJyb3IgREFUQQorICBQeUV4Y19NZW1vcnlFcnJvcj1weXRob24zNS5QeUV4Y19NZW1vcnlFcnJvciBEQVRBCisgIFB5RXhjX01lbW9yeUVycm9ySW5zdD1weXRob24zNS5QeUV4Y19NZW1vcnlFcnJvckluc3QgREFUQQorICBQeUV4Y19OYW1lRXJyb3I9cHl0aG9uMzUuUHlFeGNfTmFtZUVycm9yIERBVEEKKyAgUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcj1weXRob24zNS5QeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yIERBVEEKKyAgUHlFeGNfT1NFcnJvcj1weXRob24zNS5QeUV4Y19PU0Vycm9yIERBVEEKKyAgUHlFeGNfT3ZlcmZsb3dFcnJvcj1weXRob24zNS5QeUV4Y19PdmVyZmxvd0Vycm9yIERBVEEKKyAgUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zNS5QeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKKyAgUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0PXB5dGhvbjM1LlB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdCBEQVRBCisgIFB5RXhjX1JlZmVyZW5jZUVycm9yPXB5dGhvbjM1LlB5RXhjX1JlZmVyZW5jZUVycm9yIERBVEEKKyAgUHlFeGNfUnVudGltZUVycm9yPXB5dGhvbjM1LlB5RXhjX1J1bnRpbWVFcnJvciBEQVRBCisgIFB5RXhjX1J1bnRpbWVXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX1J1bnRpbWVXYXJuaW5nIERBVEEKKyAgUHlFeGNfU3RvcEl0ZXJhdGlvbj1weXRob24zNS5QeUV4Y19TdG9wSXRlcmF0aW9uIERBVEEKKyAgUHlFeGNfU3ludGF4RXJyb3I9cHl0aG9uMzUuUHlFeGNfU3ludGF4RXJyb3IgREFUQQorICBQeUV4Y19TeW50YXhXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX1N5bnRheFdhcm5pbmcgREFUQQorICBQeUV4Y19TeXN0ZW1FcnJvcj1weXRob24zNS5QeUV4Y19TeXN0ZW1FcnJvciBEQVRBCisgIFB5RXhjX1N5c3RlbUV4aXQ9cHl0aG9uMzUuUHlFeGNfU3lzdGVtRXhpdCBEQVRBCisgIFB5RXhjX1RhYkVycm9yPXB5dGhvbjM1LlB5RXhjX1RhYkVycm9yIERBVEEKKyAgUHlFeGNfVHlwZUVycm9yPXB5dGhvbjM1LlB5RXhjX1R5cGVFcnJvciBEQVRBCisgIFB5RXhjX1VuYm91bmRMb2NhbEVycm9yPXB5dGhvbjM1LlB5RXhjX1VuYm91bmRMb2NhbEVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZURlY29kZUVycm9yPXB5dGhvbjM1LlB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcj1weXRob24zNS5QeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5pY29kZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yPXB5dGhvbjM1LlB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX1VuaWNvZGVXYXJuaW5nIERBVEEKKyAgUHlFeGNfVXNlcldhcm5pbmc9cHl0aG9uMzUuUHlFeGNfVXNlcldhcm5pbmcgREFUQQorICBQeUV4Y19WYWx1ZUVycm9yPXB5dGhvbjM1LlB5RXhjX1ZhbHVlRXJyb3IgREFUQQorICBQeUV4Y19XYXJuaW5nPXB5dGhvbjM1LlB5RXhjX1dhcm5pbmcgREFUQQorICBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcj1weXRob24zNS5QeUV4Y19aZXJvRGl2aXNpb25FcnJvciBEQVRBCisgIFB5RXhjZXB0aW9uX0dldENhdXNlPXB5dGhvbjM1LlB5RXhjZXB0aW9uX0dldENhdXNlCisgIFB5RXhjZXB0aW9uX0dldENvbnRleHQ9cHl0aG9uMzUuUHlFeGNlcHRpb25fR2V0Q29udGV4dAorICBQeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2s9cHl0aG9uMzUuUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrCisgIFB5RXhjZXB0aW9uX1NldENhdXNlPXB5dGhvbjM1LlB5RXhjZXB0aW9uX1NldENhdXNlCisgIFB5RXhjZXB0aW9uX1NldENvbnRleHQ9cHl0aG9uMzUuUHlFeGNlcHRpb25fU2V0Q29udGV4dAorICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2s9cHl0aG9uMzUuUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrCisgIFB5RmlsZV9Gcm9tRmQ9cHl0aG9uMzUuUHlGaWxlX0Zyb21GZAorICBQeUZpbGVfR2V0TGluZT1weXRob24zNS5QeUZpbGVfR2V0TGluZQorICBQeUZpbGVfV3JpdGVPYmplY3Q9cHl0aG9uMzUuUHlGaWxlX1dyaXRlT2JqZWN0CisgIFB5RmlsZV9Xcml0ZVN0cmluZz1weXRob24zNS5QeUZpbGVfV3JpdGVTdHJpbmcKKyAgUHlGaWx0ZXJfVHlwZT1weXRob24zNS5QeUZpbHRlcl9UeXBlIERBVEEKKyAgUHlGbG9hdF9Bc0RvdWJsZT1weXRob24zNS5QeUZsb2F0X0FzRG91YmxlCisgIFB5RmxvYXRfRnJvbURvdWJsZT1weXRob24zNS5QeUZsb2F0X0Zyb21Eb3VibGUKKyAgUHlGbG9hdF9Gcm9tU3RyaW5nPXB5dGhvbjM1LlB5RmxvYXRfRnJvbVN0cmluZworICBQeUZsb2F0X0dldEluZm89cHl0aG9uMzUuUHlGbG9hdF9HZXRJbmZvCisgIFB5RmxvYXRfR2V0TWF4PXB5dGhvbjM1LlB5RmxvYXRfR2V0TWF4CisgIFB5RmxvYXRfR2V0TWluPXB5dGhvbjM1LlB5RmxvYXRfR2V0TWluCisgIFB5RmxvYXRfVHlwZT1weXRob24zNS5QeUZsb2F0X1R5cGUgREFUQQorICBQeUZyb3plblNldF9OZXc9cHl0aG9uMzUuUHlGcm96ZW5TZXRfTmV3CisgIFB5RnJvemVuU2V0X1R5cGU9cHl0aG9uMzUuUHlGcm96ZW5TZXRfVHlwZSBEQVRBCisgIFB5R0NfQ29sbGVjdD1weXRob24zNS5QeUdDX0NvbGxlY3QKKyAgUHlHSUxTdGF0ZV9FbnN1cmU9cHl0aG9uMzUuUHlHSUxTdGF0ZV9FbnN1cmUKKyAgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGU9cHl0aG9uMzUuUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUKKyAgUHlHSUxTdGF0ZV9SZWxlYXNlPXB5dGhvbjM1LlB5R0lMU3RhdGVfUmVsZWFzZQorICBQeUdldFNldERlc2NyX1R5cGU9cHl0aG9uMzUuUHlHZXRTZXREZXNjcl9UeXBlIERBVEEKKyAgUHlJbXBvcnRfQWRkTW9kdWxlPXB5dGhvbjM1LlB5SW1wb3J0X0FkZE1vZHVsZQorICBQeUltcG9ydF9BcHBlbmRJbml0dGFiPXB5dGhvbjM1LlB5SW1wb3J0X0FwcGVuZEluaXR0YWIKKyAgUHlJbXBvcnRfQ2xlYW51cD1weXRob24zNS5QeUltcG9ydF9DbGVhbnVwCisgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlPXB5dGhvbjM1LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlCisgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXg9cHl0aG9uMzUuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeAorICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXM9cHl0aG9uMzUuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzCisgIFB5SW1wb3J0X0dldEltcG9ydGVyPXB5dGhvbjM1LlB5SW1wb3J0X0dldEltcG9ydGVyCisgIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyPXB5dGhvbjM1LlB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyCisgIFB5SW1wb3J0X0dldE1hZ2ljVGFnPXB5dGhvbjM1LlB5SW1wb3J0X0dldE1hZ2ljVGFnCisgIFB5SW1wb3J0X0dldE1vZHVsZURpY3Q9cHl0aG9uMzUuUHlJbXBvcnRfR2V0TW9kdWxlRGljdAorICBQeUltcG9ydF9JbXBvcnQ9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0CisgIFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZT1weXRob24zNS5QeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUKKyAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlPXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydE1vZHVsZQorICBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbD1weXRob24zNS5QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbAorICBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrPXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2sKKyAgUHlJbXBvcnRfUmVsb2FkTW9kdWxlPXB5dGhvbjM1LlB5SW1wb3J0X1JlbG9hZE1vZHVsZQorICBQeUludGVycHJldGVyU3RhdGVfQ2xlYXI9cHl0aG9uMzUuUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyCisgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGU9cHl0aG9uMzUuUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZQorICBQeUludGVycHJldGVyU3RhdGVfTmV3PXB5dGhvbjM1LlB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcKKyAgUHlJdGVyX05leHQ9cHl0aG9uMzUuUHlJdGVyX05leHQKKyAgUHlMaXN0SXRlcl9UeXBlPXB5dGhvbjM1LlB5TGlzdEl0ZXJfVHlwZSBEQVRBCisgIFB5TGlzdFJldkl0ZXJfVHlwZT1weXRob24zNS5QeUxpc3RSZXZJdGVyX1R5cGUgREFUQQorICBQeUxpc3RfQXBwZW5kPXB5dGhvbjM1LlB5TGlzdF9BcHBlbmQKKyAgUHlMaXN0X0FzVHVwbGU9cHl0aG9uMzUuUHlMaXN0X0FzVHVwbGUKKyAgUHlMaXN0X0dldEl0ZW09cHl0aG9uMzUuUHlMaXN0X0dldEl0ZW0KKyAgUHlMaXN0X0dldFNsaWNlPXB5dGhvbjM1LlB5TGlzdF9HZXRTbGljZQorICBQeUxpc3RfSW5zZXJ0PXB5dGhvbjM1LlB5TGlzdF9JbnNlcnQKKyAgUHlMaXN0X05ldz1weXRob24zNS5QeUxpc3RfTmV3CisgIFB5TGlzdF9SZXZlcnNlPXB5dGhvbjM1LlB5TGlzdF9SZXZlcnNlCisgIFB5TGlzdF9TZXRJdGVtPXB5dGhvbjM1LlB5TGlzdF9TZXRJdGVtCisgIFB5TGlzdF9TZXRTbGljZT1weXRob24zNS5QeUxpc3RfU2V0U2xpY2UKKyAgUHlMaXN0X1NpemU9cHl0aG9uMzUuUHlMaXN0X1NpemUKKyAgUHlMaXN0X1NvcnQ9cHl0aG9uMzUuUHlMaXN0X1NvcnQKKyAgUHlMaXN0X1R5cGU9cHl0aG9uMzUuUHlMaXN0X1R5cGUgREFUQQorICBQeUxvbmdSYW5nZUl0ZXJfVHlwZT1weXRob24zNS5QeUxvbmdSYW5nZUl0ZXJfVHlwZSBEQVRBCisgIFB5TG9uZ19Bc0RvdWJsZT1weXRob24zNS5QeUxvbmdfQXNEb3VibGUKKyAgUHlMb25nX0FzTG9uZz1weXRob24zNS5QeUxvbmdfQXNMb25nCisgIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdz1weXRob24zNS5QeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cKKyAgUHlMb25nX0FzTG9uZ0xvbmc9cHl0aG9uMzUuUHlMb25nX0FzTG9uZ0xvbmcKKyAgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdz1weXRob24zNS5QeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93CisgIFB5TG9uZ19Bc1NpemVfdD1weXRob24zNS5QeUxvbmdfQXNTaXplX3QKKyAgUHlMb25nX0FzU3NpemVfdD1weXRob24zNS5QeUxvbmdfQXNTc2l6ZV90CisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZz1weXRob24zNS5QeUxvbmdfQXNVbnNpZ25lZExvbmcKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZz1weXRob24zNS5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nCisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrPXB5dGhvbjM1LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrCisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2s9cHl0aG9uMzUuUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaworICBQeUxvbmdfQXNWb2lkUHRyPXB5dGhvbjM1LlB5TG9uZ19Bc1ZvaWRQdHIKKyAgUHlMb25nX0Zyb21Eb3VibGU9cHl0aG9uMzUuUHlMb25nX0Zyb21Eb3VibGUKKyAgUHlMb25nX0Zyb21Mb25nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tTG9uZworICBQeUxvbmdfRnJvbUxvbmdMb25nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tTG9uZ0xvbmcKKyAgUHlMb25nX0Zyb21TaXplX3Q9cHl0aG9uMzUuUHlMb25nX0Zyb21TaXplX3QKKyAgUHlMb25nX0Zyb21Tc2l6ZV90PXB5dGhvbjM1LlB5TG9uZ19Gcm9tU3NpemVfdAorICBQeUxvbmdfRnJvbVN0cmluZz1weXRob24zNS5QeUxvbmdfRnJvbVN0cmluZworICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZz1weXRob24zNS5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZworICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nCisgIFB5TG9uZ19Gcm9tVm9pZFB0cj1weXRob24zNS5QeUxvbmdfRnJvbVZvaWRQdHIKKyAgUHlMb25nX0dldEluZm89cHl0aG9uMzUuUHlMb25nX0dldEluZm8KKyAgUHlMb25nX1R5cGU9cHl0aG9uMzUuUHlMb25nX1R5cGUgREFUQQorICBQeU1hcF9UeXBlPXB5dGhvbjM1LlB5TWFwX1R5cGUgREFUQQorICBQeU1hcHBpbmdfQ2hlY2s9cHl0aG9uMzUuUHlNYXBwaW5nX0NoZWNrCisgIFB5TWFwcGluZ19HZXRJdGVtU3RyaW5nPXB5dGhvbjM1LlB5TWFwcGluZ19HZXRJdGVtU3RyaW5nCisgIFB5TWFwcGluZ19IYXNLZXk9cHl0aG9uMzUuUHlNYXBwaW5nX0hhc0tleQorICBQeU1hcHBpbmdfSGFzS2V5U3RyaW5nPXB5dGhvbjM1LlB5TWFwcGluZ19IYXNLZXlTdHJpbmcKKyAgUHlNYXBwaW5nX0l0ZW1zPXB5dGhvbjM1LlB5TWFwcGluZ19JdGVtcworICBQeU1hcHBpbmdfS2V5cz1weXRob24zNS5QeU1hcHBpbmdfS2V5cworICBQeU1hcHBpbmdfTGVuZ3RoPXB5dGhvbjM1LlB5TWFwcGluZ19MZW5ndGgKKyAgUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmcKKyAgUHlNYXBwaW5nX1NpemU9cHl0aG9uMzUuUHlNYXBwaW5nX1NpemUKKyAgUHlNYXBwaW5nX1ZhbHVlcz1weXRob24zNS5QeU1hcHBpbmdfVmFsdWVzCisgIFB5TWVtX0ZyZWU9cHl0aG9uMzUuUHlNZW1fRnJlZQorICBQeU1lbV9NYWxsb2M9cHl0aG9uMzUuUHlNZW1fTWFsbG9jCisgIFB5TWVtX1JlYWxsb2M9cHl0aG9uMzUuUHlNZW1fUmVhbGxvYworICBQeU1lbWJlckRlc2NyX1R5cGU9cHl0aG9uMzUuUHlNZW1iZXJEZXNjcl9UeXBlIERBVEEKKyAgUHlNZW1vcnlWaWV3X0Zyb21PYmplY3Q9cHl0aG9uMzUuUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QKKyAgUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXM9cHl0aG9uMzUuUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMKKyAgUHlNZW1vcnlWaWV3X1R5cGU9cHl0aG9uMzUuUHlNZW1vcnlWaWV3X1R5cGUgREFUQQorICBQeU1ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzUuUHlNZXRob2REZXNjcl9UeXBlIERBVEEKKyAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQ9cHl0aG9uMzUuUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQKKyAgUHlNb2R1bGVfQWRkT2JqZWN0PXB5dGhvbjM1LlB5TW9kdWxlX0FkZE9iamVjdAorICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudD1weXRob24zNS5QeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudAorICBQeU1vZHVsZV9DcmVhdGUyPXB5dGhvbjM1LlB5TW9kdWxlX0NyZWF0ZTIKKyAgUHlNb2R1bGVfR2V0RGVmPXB5dGhvbjM1LlB5TW9kdWxlX0dldERlZgorICBQeU1vZHVsZV9HZXREaWN0PXB5dGhvbjM1LlB5TW9kdWxlX0dldERpY3QKKyAgUHlNb2R1bGVfR2V0RmlsZW5hbWU9cHl0aG9uMzUuUHlNb2R1bGVfR2V0RmlsZW5hbWUKKyAgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3Q9cHl0aG9uMzUuUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QKKyAgUHlNb2R1bGVfR2V0TmFtZT1weXRob24zNS5QeU1vZHVsZV9HZXROYW1lCisgIFB5TW9kdWxlX0dldFN0YXRlPXB5dGhvbjM1LlB5TW9kdWxlX0dldFN0YXRlCisgIFB5TW9kdWxlX05ldz1weXRob24zNS5QeU1vZHVsZV9OZXcKKyAgUHlNb2R1bGVfVHlwZT1weXRob24zNS5QeU1vZHVsZV9UeXBlIERBVEEKKyAgUHlNb2R1bGVEZWZfSW5pdD1weXRob24zNS5QeU1vZHVsZURlZl9Jbml0CisgIFB5TW9kdWxlRGVmX1R5cGU9cHl0aG9uMzUuUHlNb2R1bGVEZWZfVHlwZSBEQVRBCisgIFB5TnVsbEltcG9ydGVyX1R5cGU9cHl0aG9uMzUuUHlOdWxsSW1wb3J0ZXJfVHlwZSBEQVRBCisgIFB5TnVtYmVyX0Fic29sdXRlPXB5dGhvbjM1LlB5TnVtYmVyX0Fic29sdXRlCisgIFB5TnVtYmVyX0FkZD1weXRob24zNS5QeU51bWJlcl9BZGQKKyAgUHlOdW1iZXJfQW5kPXB5dGhvbjM1LlB5TnVtYmVyX0FuZAorICBQeU51bWJlcl9Bc1NzaXplX3Q9cHl0aG9uMzUuUHlOdW1iZXJfQXNTc2l6ZV90CisgIFB5TnVtYmVyX0NoZWNrPXB5dGhvbjM1LlB5TnVtYmVyX0NoZWNrCisgIFB5TnVtYmVyX0Rpdm1vZD1weXRob24zNS5QeU51bWJlcl9EaXZtb2QKKyAgUHlOdW1iZXJfRmxvYXQ9cHl0aG9uMzUuUHlOdW1iZXJfRmxvYXQKKyAgUHlOdW1iZXJfRmxvb3JEaXZpZGU9cHl0aG9uMzUuUHlOdW1iZXJfRmxvb3JEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZUFkZD1weXRob24zNS5QeU51bWJlcl9JblBsYWNlQWRkCisgIFB5TnVtYmVyX0luUGxhY2VBbmQ9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZUFuZAorICBQeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGU9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlCisgIFB5TnVtYmVyX0luUGxhY2VMc2hpZnQ9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZUxzaGlmdAorICBQeU51bWJlcl9JblBsYWNlTXVsdGlwbHk9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5CisgIFB5TnVtYmVyX0luUGxhY2VPcj1weXRob24zNS5QeU51bWJlcl9JblBsYWNlT3IKKyAgUHlOdW1iZXJfSW5QbGFjZVBvd2VyPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VQb3dlcgorICBQeU51bWJlcl9JblBsYWNlUmVtYWluZGVyPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXIKKyAgUHlOdW1iZXJfSW5QbGFjZVJzaGlmdD1weXRob24zNS5QeU51bWJlcl9JblBsYWNlUnNoaWZ0CisgIFB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdD1weXRob24zNS5QeU51bWJlcl9JblBsYWNlU3VidHJhY3QKKyAgUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGU9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZVhvcj1weXRob24zNS5QeU51bWJlcl9JblBsYWNlWG9yCisgIFB5TnVtYmVyX0luZGV4PXB5dGhvbjM1LlB5TnVtYmVyX0luZGV4CisgIFB5TnVtYmVyX0ludmVydD1weXRob24zNS5QeU51bWJlcl9JbnZlcnQKKyAgUHlOdW1iZXJfTG9uZz1weXRob24zNS5QeU51bWJlcl9Mb25nCisgIFB5TnVtYmVyX0xzaGlmdD1weXRob24zNS5QeU51bWJlcl9Mc2hpZnQKKyAgUHlOdW1iZXJfTXVsdGlwbHk9cHl0aG9uMzUuUHlOdW1iZXJfTXVsdGlwbHkKKyAgUHlOdW1iZXJfTmVnYXRpdmU9cHl0aG9uMzUuUHlOdW1iZXJfTmVnYXRpdmUKKyAgUHlOdW1iZXJfT3I9cHl0aG9uMzUuUHlOdW1iZXJfT3IKKyAgUHlOdW1iZXJfUG9zaXRpdmU9cHl0aG9uMzUuUHlOdW1iZXJfUG9zaXRpdmUKKyAgUHlOdW1iZXJfUG93ZXI9cHl0aG9uMzUuUHlOdW1iZXJfUG93ZXIKKyAgUHlOdW1iZXJfUmVtYWluZGVyPXB5dGhvbjM1LlB5TnVtYmVyX1JlbWFpbmRlcgorICBQeU51bWJlcl9Sc2hpZnQ9cHl0aG9uMzUuUHlOdW1iZXJfUnNoaWZ0CisgIFB5TnVtYmVyX1N1YnRyYWN0PXB5dGhvbjM1LlB5TnVtYmVyX1N1YnRyYWN0CisgIFB5TnVtYmVyX1RvQmFzZT1weXRob24zNS5QeU51bWJlcl9Ub0Jhc2UKKyAgUHlOdW1iZXJfVHJ1ZURpdmlkZT1weXRob24zNS5QeU51bWJlcl9UcnVlRGl2aWRlCisgIFB5TnVtYmVyX1hvcj1weXRob24zNS5QeU51bWJlcl9Yb3IKKyAgUHlPU19BZnRlckZvcms9cHl0aG9uMzUuUHlPU19BZnRlckZvcmsKKyAgUHlPU19Jbml0SW50ZXJydXB0cz1weXRob24zNS5QeU9TX0luaXRJbnRlcnJ1cHRzCisgIFB5T1NfSW5wdXRIb29rPXB5dGhvbjM1LlB5T1NfSW5wdXRIb29rIERBVEEKKyAgUHlPU19JbnRlcnJ1cHRPY2N1cnJlZD1weXRob24zNS5QeU9TX0ludGVycnVwdE9jY3VycmVkCisgIFB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXI9cHl0aG9uMzUuUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlciBEQVRBCisgIFB5T1NfZG91YmxlX3RvX3N0cmluZz1weXRob24zNS5QeU9TX2RvdWJsZV90b19zdHJpbmcKKyAgUHlPU19nZXRzaWc9cHl0aG9uMzUuUHlPU19nZXRzaWcKKyAgUHlPU19teXN0cmljbXA9cHl0aG9uMzUuUHlPU19teXN0cmljbXAKKyAgUHlPU19teXN0cm5pY21wPXB5dGhvbjM1LlB5T1NfbXlzdHJuaWNtcAorICBQeU9TX3NldHNpZz1weXRob24zNS5QeU9TX3NldHNpZworICBQeU9TX3NucHJpbnRmPXB5dGhvbjM1LlB5T1Nfc25wcmludGYKKyAgUHlPU19zdHJpbmdfdG9fZG91YmxlPXB5dGhvbjM1LlB5T1Nfc3RyaW5nX3RvX2RvdWJsZQorICBQeU9TX3N0cnRvbD1weXRob24zNS5QeU9TX3N0cnRvbAorICBQeU9TX3N0cnRvdWw9cHl0aG9uMzUuUHlPU19zdHJ0b3VsCisgIFB5T1NfdnNucHJpbnRmPXB5dGhvbjM1LlB5T1NfdnNucHJpbnRmCisgIFB5T2JqZWN0X0FTQ0lJPXB5dGhvbjM1LlB5T2JqZWN0X0FTQ0lJCisgIFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcj1weXRob24zNS5QeU9iamVjdF9Bc0NoYXJCdWZmZXIKKyAgUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcj1weXRob24zNS5QeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yCisgIFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcj1weXRob24zNS5QeU9iamVjdF9Bc1JlYWRCdWZmZXIKKyAgUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcj1weXRob24zNS5QeU9iamVjdF9Bc1dyaXRlQnVmZmVyCisgIFB5T2JqZWN0X0J5dGVzPXB5dGhvbjM1LlB5T2JqZWN0X0J5dGVzCisgIFB5T2JqZWN0X0NhbGw9cHl0aG9uMzUuUHlPYmplY3RfQ2FsbAorICBQeU9iamVjdF9DYWxsRnVuY3Rpb249cHl0aG9uMzUuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uCisgIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3M9cHl0aG9uMzUuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncworICBQeU9iamVjdF9DYWxsTWV0aG9kPXB5dGhvbjM1LlB5T2JqZWN0X0NhbGxNZXRob2QKKyAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3M9cHl0aG9uMzUuUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MKKyAgUHlPYmplY3RfQ2FsbE9iamVjdD1weXRob24zNS5QeU9iamVjdF9DYWxsT2JqZWN0CisgIFB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcj1weXRob24zNS5QeU9iamVjdF9DaGVja1JlYWRCdWZmZXIKKyAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcz1weXRob24zNS5QeU9iamVjdF9DbGVhcldlYWtSZWZzCisgIFB5T2JqZWN0X0RlbEl0ZW09cHl0aG9uMzUuUHlPYmplY3RfRGVsSXRlbQorICBQeU9iamVjdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjM1LlB5T2JqZWN0X0RlbEl0ZW1TdHJpbmcKKyAgUHlPYmplY3RfRGlyPXB5dGhvbjM1LlB5T2JqZWN0X0RpcgorICBQeU9iamVjdF9Gb3JtYXQ9cHl0aG9uMzUuUHlPYmplY3RfRm9ybWF0CisgIFB5T2JqZWN0X0ZyZWU9cHl0aG9uMzUuUHlPYmplY3RfRnJlZQorICBQeU9iamVjdF9HQ19EZWw9cHl0aG9uMzUuUHlPYmplY3RfR0NfRGVsCisgIFB5T2JqZWN0X0dDX1RyYWNrPXB5dGhvbjM1LlB5T2JqZWN0X0dDX1RyYWNrCisgIFB5T2JqZWN0X0dDX1VuVHJhY2s9cHl0aG9uMzUuUHlPYmplY3RfR0NfVW5UcmFjaworICBQeU9iamVjdF9HZW5lcmljR2V0QXR0cj1weXRob24zNS5QeU9iamVjdF9HZW5lcmljR2V0QXR0cgorICBQeU9iamVjdF9HZW5lcmljU2V0QXR0cj1weXRob24zNS5QeU9iamVjdF9HZW5lcmljU2V0QXR0cgorICBQeU9iamVjdF9HZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0dldEF0dHIKKyAgUHlPYmplY3RfR2V0QXR0clN0cmluZz1weXRob24zNS5QeU9iamVjdF9HZXRBdHRyU3RyaW5nCisgIFB5T2JqZWN0X0dldEl0ZW09cHl0aG9uMzUuUHlPYmplY3RfR2V0SXRlbQorICBQeU9iamVjdF9HZXRJdGVyPXB5dGhvbjM1LlB5T2JqZWN0X0dldEl0ZXIKKyAgUHlPYmplY3RfSGFzQXR0cj1weXRob24zNS5QeU9iamVjdF9IYXNBdHRyCisgIFB5T2JqZWN0X0hhc0F0dHJTdHJpbmc9cHl0aG9uMzUuUHlPYmplY3RfSGFzQXR0clN0cmluZworICBQeU9iamVjdF9IYXNoPXB5dGhvbjM1LlB5T2JqZWN0X0hhc2gKKyAgUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkPXB5dGhvbjM1LlB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZAorICBQeU9iamVjdF9Jbml0PXB5dGhvbjM1LlB5T2JqZWN0X0luaXQKKyAgUHlPYmplY3RfSW5pdFZhcj1weXRob24zNS5QeU9iamVjdF9Jbml0VmFyCisgIFB5T2JqZWN0X0lzSW5zdGFuY2U9cHl0aG9uMzUuUHlPYmplY3RfSXNJbnN0YW5jZQorICBQeU9iamVjdF9Jc1N1YmNsYXNzPXB5dGhvbjM1LlB5T2JqZWN0X0lzU3ViY2xhc3MKKyAgUHlPYmplY3RfSXNUcnVlPXB5dGhvbjM1LlB5T2JqZWN0X0lzVHJ1ZQorICBQeU9iamVjdF9MZW5ndGg9cHl0aG9uMzUuUHlPYmplY3RfTGVuZ3RoCisgIFB5T2JqZWN0X01hbGxvYz1weXRob24zNS5QeU9iamVjdF9NYWxsb2MKKyAgUHlPYmplY3RfTm90PXB5dGhvbjM1LlB5T2JqZWN0X05vdAorICBQeU9iamVjdF9SZWFsbG9jPXB5dGhvbjM1LlB5T2JqZWN0X1JlYWxsb2MKKyAgUHlPYmplY3RfUmVwcj1weXRob24zNS5QeU9iamVjdF9SZXByCisgIFB5T2JqZWN0X1JpY2hDb21wYXJlPXB5dGhvbjM1LlB5T2JqZWN0X1JpY2hDb21wYXJlCisgIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbD1weXRob24zNS5QeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wKKyAgUHlPYmplY3RfU2VsZkl0ZXI9cHl0aG9uMzUuUHlPYmplY3RfU2VsZkl0ZXIKKyAgUHlPYmplY3RfU2V0QXR0cj1weXRob24zNS5QeU9iamVjdF9TZXRBdHRyCisgIFB5T2JqZWN0X1NldEF0dHJTdHJpbmc9cHl0aG9uMzUuUHlPYmplY3RfU2V0QXR0clN0cmluZworICBQeU9iamVjdF9TZXRJdGVtPXB5dGhvbjM1LlB5T2JqZWN0X1NldEl0ZW0KKyAgUHlPYmplY3RfU2l6ZT1weXRob24zNS5QeU9iamVjdF9TaXplCisgIFB5T2JqZWN0X1N0cj1weXRob24zNS5QeU9iamVjdF9TdHIKKyAgUHlPYmplY3RfVHlwZT1weXRob24zNS5QeU9iamVjdF9UeXBlIERBVEEKKyAgUHlPRGljdF9EZWxJdGVtPXB5dGhvbjM1LlB5T0RpY3RfRGVsSXRlbQorICBQeU9EaWN0X05ldz1weXRob24zNS5QeU9EaWN0X05ldworICBQeU9EaWN0X1NldEl0ZW09cHl0aG9uMzUuUHlPRGljdF9TZXRJdGVtCisgIFB5T0RpY3RfVHlwZT1weXRob24zNS5QeU9EaWN0X1R5cGUgREFUQQorICBQeU9EaWN0SXRlbXNfVHlwZT1weXRob24zNS5QeU9EaWN0SXRlbXNfVHlwZSBEQVRBCisgIFB5T0RpY3RJdGVyX1R5cGU9cHl0aG9uMzUuUHlPRGljdEl0ZXJfVHlwZSBEQVRBCisgIFB5T0RpY3RLZXlzX1R5cGU9cHl0aG9uMzUuUHlPRGljdEtleXNfVHlwZSBEQVRBCisgIFB5T0RpY3RWYWx1ZXNfVHlwZT1weXRob24zNS5QeU9EaWN0VmFsdWVzX1R5cGUgREFUQQorICBQeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncz1weXRob24zNS5QeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncworICBQeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzPXB5dGhvbjM1LlB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3MKKyAgUHlQcm9wZXJ0eV9UeXBlPXB5dGhvbjM1LlB5UHJvcGVydHlfVHlwZSBEQVRBCisgIFB5UmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzUuUHlSYW5nZUl0ZXJfVHlwZSBEQVRBCisgIFB5UmFuZ2VfVHlwZT1weXRob24zNS5QeVJhbmdlX1R5cGUgREFUQQorICBQeVJldmVyc2VkX1R5cGU9cHl0aG9uMzUuUHlSZXZlcnNlZF9UeXBlIERBVEEKKyAgUHlTZXFJdGVyX05ldz1weXRob24zNS5QeVNlcUl0ZXJfTmV3CisgIFB5U2VxSXRlcl9UeXBlPXB5dGhvbjM1LlB5U2VxSXRlcl9UeXBlIERBVEEKKyAgUHlTZXF1ZW5jZV9DaGVjaz1weXRob24zNS5QeVNlcXVlbmNlX0NoZWNrCisgIFB5U2VxdWVuY2VfQ29uY2F0PXB5dGhvbjM1LlB5U2VxdWVuY2VfQ29uY2F0CisgIFB5U2VxdWVuY2VfQ29udGFpbnM9cHl0aG9uMzUuUHlTZXF1ZW5jZV9Db250YWlucworICBQeVNlcXVlbmNlX0NvdW50PXB5dGhvbjM1LlB5U2VxdWVuY2VfQ291bnQKKyAgUHlTZXF1ZW5jZV9EZWxJdGVtPXB5dGhvbjM1LlB5U2VxdWVuY2VfRGVsSXRlbQorICBQeVNlcXVlbmNlX0RlbFNsaWNlPXB5dGhvbjM1LlB5U2VxdWVuY2VfRGVsU2xpY2UKKyAgUHlTZXF1ZW5jZV9GYXN0PXB5dGhvbjM1LlB5U2VxdWVuY2VfRmFzdAorICBQeVNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzUuUHlTZXF1ZW5jZV9HZXRJdGVtCisgIFB5U2VxdWVuY2VfR2V0U2xpY2U9cHl0aG9uMzUuUHlTZXF1ZW5jZV9HZXRTbGljZQorICBQeVNlcXVlbmNlX0luPXB5dGhvbjM1LlB5U2VxdWVuY2VfSW4KKyAgUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0PXB5dGhvbjM1LlB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdAorICBQeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0CisgIFB5U2VxdWVuY2VfSW5kZXg9cHl0aG9uMzUuUHlTZXF1ZW5jZV9JbmRleAorICBQeVNlcXVlbmNlX0xlbmd0aD1weXRob24zNS5QeVNlcXVlbmNlX0xlbmd0aAorICBQeVNlcXVlbmNlX0xpc3Q9cHl0aG9uMzUuUHlTZXF1ZW5jZV9MaXN0CisgIFB5U2VxdWVuY2VfUmVwZWF0PXB5dGhvbjM1LlB5U2VxdWVuY2VfUmVwZWF0CisgIFB5U2VxdWVuY2VfU2V0SXRlbT1weXRob24zNS5QeVNlcXVlbmNlX1NldEl0ZW0KKyAgUHlTZXF1ZW5jZV9TZXRTbGljZT1weXRob24zNS5QeVNlcXVlbmNlX1NldFNsaWNlCisgIFB5U2VxdWVuY2VfU2l6ZT1weXRob24zNS5QeVNlcXVlbmNlX1NpemUKKyAgUHlTZXF1ZW5jZV9UdXBsZT1weXRob24zNS5QeVNlcXVlbmNlX1R1cGxlCisgIFB5U2V0SXRlcl9UeXBlPXB5dGhvbjM1LlB5U2V0SXRlcl9UeXBlIERBVEEKKyAgUHlTZXRfQWRkPXB5dGhvbjM1LlB5U2V0X0FkZAorICBQeVNldF9DbGVhcj1weXRob24zNS5QeVNldF9DbGVhcgorICBQeVNldF9Db250YWlucz1weXRob24zNS5QeVNldF9Db250YWlucworICBQeVNldF9EaXNjYXJkPXB5dGhvbjM1LlB5U2V0X0Rpc2NhcmQKKyAgUHlTZXRfTmV3PXB5dGhvbjM1LlB5U2V0X05ldworICBQeVNldF9Qb3A9cHl0aG9uMzUuUHlTZXRfUG9wCisgIFB5U2V0X1NpemU9cHl0aG9uMzUuUHlTZXRfU2l6ZQorICBQeVNldF9UeXBlPXB5dGhvbjM1LlB5U2V0X1R5cGUgREFUQQorICBQeVNsaWNlX0dldEluZGljZXM9cHl0aG9uMzUuUHlTbGljZV9HZXRJbmRpY2VzCisgIFB5U2xpY2VfR2V0SW5kaWNlc0V4PXB5dGhvbjM1LlB5U2xpY2VfR2V0SW5kaWNlc0V4CisgIFB5U2xpY2VfTmV3PXB5dGhvbjM1LlB5U2xpY2VfTmV3CisgIFB5U2xpY2VfVHlwZT1weXRob24zNS5QeVNsaWNlX1R5cGUgREFUQQorICBQeVNvcnRXcmFwcGVyX1R5cGU9cHl0aG9uMzUuUHlTb3J0V3JhcHBlcl9UeXBlIERBVEEKKyAgUHlTdGF0ZV9GaW5kTW9kdWxlPXB5dGhvbjM1LlB5U3RhdGVfRmluZE1vZHVsZQorICBQeVN0YXRlX0FkZE1vZHVsZT1weXRob24zNS5QeVN0YXRlX0FkZE1vZHVsZQorICBQeVN0YXRlX1JlbW92ZU1vZHVsZT1weXRob24zNS5QeVN0YXRlX1JlbW92ZU1vZHVsZQorICBQeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzUuUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtCisgIFB5U3RydWN0U2VxdWVuY2VfTmV3PXB5dGhvbjM1LlB5U3RydWN0U2VxdWVuY2VfTmV3CisgIFB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZT1weXRob24zNS5QeVN0cnVjdFNlcXVlbmNlX05ld1R5cGUKKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjM1LlB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbQorICBQeVN1cGVyX1R5cGU9cHl0aG9uMzUuUHlTdXBlcl9UeXBlIERBVEEKKyAgUHlTeXNfQWRkV2Fybk9wdGlvbj1weXRob24zNS5QeVN5c19BZGRXYXJuT3B0aW9uCisgIFB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlPXB5dGhvbjM1LlB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlCisgIFB5U3lzX0Zvcm1hdFN0ZGVycj1weXRob24zNS5QeVN5c19Gb3JtYXRTdGRlcnIKKyAgUHlTeXNfRm9ybWF0U3Rkb3V0PXB5dGhvbjM1LlB5U3lzX0Zvcm1hdFN0ZG91dAorICBQeVN5c19HZXRPYmplY3Q9cHl0aG9uMzUuUHlTeXNfR2V0T2JqZWN0CisgIFB5U3lzX0hhc1dhcm5PcHRpb25zPXB5dGhvbjM1LlB5U3lzX0hhc1dhcm5PcHRpb25zCisgIFB5U3lzX1Jlc2V0V2Fybk9wdGlvbnM9cHl0aG9uMzUuUHlTeXNfUmVzZXRXYXJuT3B0aW9ucworICBQeVN5c19TZXRBcmd2PXB5dGhvbjM1LlB5U3lzX1NldEFyZ3YKKyAgUHlTeXNfU2V0QXJndkV4PXB5dGhvbjM1LlB5U3lzX1NldEFyZ3ZFeAorICBQeVN5c19TZXRPYmplY3Q9cHl0aG9uMzUuUHlTeXNfU2V0T2JqZWN0CisgIFB5U3lzX1NldFBhdGg9cHl0aG9uMzUuUHlTeXNfU2V0UGF0aAorICBQeVN5c19Xcml0ZVN0ZGVycj1weXRob24zNS5QeVN5c19Xcml0ZVN0ZGVycgorICBQeVN5c19Xcml0ZVN0ZG91dD1weXRob24zNS5QeVN5c19Xcml0ZVN0ZG91dAorICBQeVRocmVhZFN0YXRlX0NsZWFyPXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfQ2xlYXIKKyAgUHlUaHJlYWRTdGF0ZV9EZWxldGU9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9EZWxldGUKKyAgUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50PXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudAorICBQeVRocmVhZFN0YXRlX0dldD1weXRob24zNS5QeVRocmVhZFN0YXRlX0dldAorICBQeVRocmVhZFN0YXRlX0dldERpY3Q9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9HZXREaWN0CisgIFB5VGhyZWFkU3RhdGVfTmV3PXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfTmV3CisgIFB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGM9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4YworICBQeVRocmVhZFN0YXRlX1N3YXA9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9Td2FwCisgIFB5VHJhY2VCYWNrX0hlcmU9cHl0aG9uMzUuUHlUcmFjZUJhY2tfSGVyZQorICBQeVRyYWNlQmFja19QcmludD1weXRob24zNS5QeVRyYWNlQmFja19QcmludAorICBQeVRyYWNlQmFja19UeXBlPXB5dGhvbjM1LlB5VHJhY2VCYWNrX1R5cGUgREFUQQorICBQeVR1cGxlSXRlcl9UeXBlPXB5dGhvbjM1LlB5VHVwbGVJdGVyX1R5cGUgREFUQQorICBQeVR1cGxlX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzUuUHlUdXBsZV9DbGVhckZyZWVMaXN0CisgIFB5VHVwbGVfR2V0SXRlbT1weXRob24zNS5QeVR1cGxlX0dldEl0ZW0KKyAgUHlUdXBsZV9HZXRTbGljZT1weXRob24zNS5QeVR1cGxlX0dldFNsaWNlCisgIFB5VHVwbGVfTmV3PXB5dGhvbjM1LlB5VHVwbGVfTmV3CisgIFB5VHVwbGVfUGFjaz1weXRob24zNS5QeVR1cGxlX1BhY2sKKyAgUHlUdXBsZV9TZXRJdGVtPXB5dGhvbjM1LlB5VHVwbGVfU2V0SXRlbQorICBQeVR1cGxlX1NpemU9cHl0aG9uMzUuUHlUdXBsZV9TaXplCisgIFB5VHVwbGVfVHlwZT1weXRob24zNS5QeVR1cGxlX1R5cGUgREFUQQorICBQeVR5cGVfQ2xlYXJDYWNoZT1weXRob24zNS5QeVR5cGVfQ2xlYXJDYWNoZQorICBQeVR5cGVfRnJvbVNwZWM9cHl0aG9uMzUuUHlUeXBlX0Zyb21TcGVjCisgIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcz1weXRob24zNS5QeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMKKyAgUHlUeXBlX0dlbmVyaWNBbGxvYz1weXRob24zNS5QeVR5cGVfR2VuZXJpY0FsbG9jCisgIFB5VHlwZV9HZW5lcmljTmV3PXB5dGhvbjM1LlB5VHlwZV9HZW5lcmljTmV3CisgIFB5VHlwZV9HZXRGbGFncz1weXRob24zNS5QeVR5cGVfR2V0RmxhZ3MKKyAgUHlUeXBlX0dldFNsb3Q9cHl0aG9uMzUuUHlUeXBlX0dldFNsb3QKKyAgUHlUeXBlX0lzU3VidHlwZT1weXRob24zNS5QeVR5cGVfSXNTdWJ0eXBlCisgIFB5VHlwZV9Nb2RpZmllZD1weXRob24zNS5QeVR5cGVfTW9kaWZpZWQKKyAgUHlUeXBlX1JlYWR5PXB5dGhvbjM1LlB5VHlwZV9SZWFkeQorICBQeVR5cGVfVHlwZT1weXRob24zNS5QeVR5cGVfVHlwZSBEQVRBCisgIFB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZT1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGUKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2RpbmcKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0CisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb24KKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uCisgIFB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0CisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nCisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZD1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uCisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0CisgIFB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZD1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbgorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydAorICBQeVVuaWNvZGVJdGVyX1R5cGU9cHl0aG9uMzUuUHlVbmljb2RlSXRlcl9UeXBlIERBVEEKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0CisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb24KKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0CisgIFB5VW5pY29kZV9BcHBlbmQ9cHl0aG9uMzUuUHlVbmljb2RlX0FwcGVuZAorICBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsPXB5dGhvbjM1LlB5VW5pY29kZV9BcHBlbmRBbmREZWwKKyAgUHlVbmljb2RlX0FzQVNDSUlTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcKKyAgUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nCisgIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdAorICBQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZT1weXRob24zNS5QeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZQorICBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nCisgIFB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlCisgIFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcKKyAgUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1VURjE2U3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1VURjMyU3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjhTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVVRGOFN0cmluZworICBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcKKyAgUHlVbmljb2RlX0FzV2lkZUNoYXI9cHl0aG9uMzUuUHlVbmljb2RlX0FzV2lkZUNoYXIKKyAgUHlVbmljb2RlX0NsZWFyRnJlZWxpc3Q9cHl0aG9uMzUuUHlVbmljb2RlX0NsZWFyRnJlZWxpc3QKKyAgUHlVbmljb2RlX0NvbXBhcmU9cHl0aG9uMzUuUHlVbmljb2RlX0NvbXBhcmUKKyAgUHlVbmljb2RlX0NvbmNhdD1weXRob24zNS5QeVVuaWNvZGVfQ29uY2F0CisgIFB5VW5pY29kZV9Db250YWlucz1weXRob24zNS5QeVVuaWNvZGVfQ29udGFpbnMKKyAgUHlVbmljb2RlX0NvdW50PXB5dGhvbjM1LlB5VW5pY29kZV9Db3VudAorICBQeVVuaWNvZGVfRGVjb2RlPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGUKKyAgUHlVbmljb2RlX0RlY29kZUFTQ0lJPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVBU0NJSQorICBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcAorICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0PXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQKKyAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUKKyAgUHlVbmljb2RlX0RlY29kZUxhdGluMT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlTGF0aW4xCisgIFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlCisgIFB5VW5pY29kZV9EZWNvZGVVVEYxNj1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGMTYKKyAgUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWw9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwKKyAgUHlVbmljb2RlX0RlY29kZVVURjMyPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEYzMgorICBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVVRGOD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGOAorICBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwKKyAgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUKKyAgUHlVbmljb2RlX0ZTQ29udmVydGVyPXB5dGhvbjM1LlB5VW5pY29kZV9GU0NvbnZlcnRlcgorICBQeVVuaWNvZGVfRlNEZWNvZGVyPXB5dGhvbjM1LlB5VW5pY29kZV9GU0RlY29kZXIKKyAgUHlVbmljb2RlX0ZpbmQ9cHl0aG9uMzUuUHlVbmljb2RlX0ZpbmQKKyAgUHlVbmljb2RlX0Zvcm1hdD1weXRob24zNS5QeVVuaWNvZGVfRm9ybWF0CisgIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0Zyb21Gb3JtYXQ9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21Gb3JtYXQKKyAgUHlVbmljb2RlX0Zyb21Gb3JtYXRWPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tRm9ybWF0VgorICBQeVVuaWNvZGVfRnJvbU9iamVjdD1weXRob24zNS5QeVVuaWNvZGVfRnJvbU9iamVjdAorICBQeVVuaWNvZGVfRnJvbU9yZGluYWw9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21PcmRpbmFsCisgIFB5VW5pY29kZV9Gcm9tU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tU3RyaW5nCisgIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNS5QeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcj1weXRob24zNS5QeVVuaWNvZGVfRnJvbVdpZGVDaGFyCisgIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZworICBQeVVuaWNvZGVfR2V0U2l6ZT1weXRob24zNS5QeVVuaWNvZGVfR2V0U2l6ZQorICBQeVVuaWNvZGVfSXNJZGVudGlmaWVyPXB5dGhvbjM1LlB5VW5pY29kZV9Jc0lkZW50aWZpZXIKKyAgUHlVbmljb2RlX0pvaW49cHl0aG9uMzUuUHlVbmljb2RlX0pvaW4KKyAgUHlVbmljb2RlX1BhcnRpdGlvbj1weXRob24zNS5QeVVuaWNvZGVfUGFydGl0aW9uCisgIFB5VW5pY29kZV9SUGFydGl0aW9uPXB5dGhvbjM1LlB5VW5pY29kZV9SUGFydGl0aW9uCisgIFB5VW5pY29kZV9SU3BsaXQ9cHl0aG9uMzUuUHlVbmljb2RlX1JTcGxpdAorICBQeVVuaWNvZGVfUmVwbGFjZT1weXRob24zNS5QeVVuaWNvZGVfUmVwbGFjZQorICBQeVVuaWNvZGVfUmVzaXplPXB5dGhvbjM1LlB5VW5pY29kZV9SZXNpemUKKyAgUHlVbmljb2RlX1JpY2hDb21wYXJlPXB5dGhvbjM1LlB5VW5pY29kZV9SaWNoQ29tcGFyZQorICBQeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2RpbmcKKyAgUHlVbmljb2RlX1NwbGl0PXB5dGhvbjM1LlB5VW5pY29kZV9TcGxpdAorICBQeVVuaWNvZGVfU3BsaXRsaW5lcz1weXRob24zNS5QeVVuaWNvZGVfU3BsaXRsaW5lcworICBQeVVuaWNvZGVfVGFpbG1hdGNoPXB5dGhvbjM1LlB5VW5pY29kZV9UYWlsbWF0Y2gKKyAgUHlVbmljb2RlX1RyYW5zbGF0ZT1weXRob24zNS5QeVVuaWNvZGVfVHJhbnNsYXRlCisgIFB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwPXB5dGhvbjM1LlB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwCisgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nCisgIFB5VW5pY29kZV9EZWNvZGVVVEY3PXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEY3CisgIFB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWw9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0PXB5dGhvbjM1LlB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQKKyAgUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcKKyAgUHlVbmljb2RlX0ludGVybkltbW9ydGFsPXB5dGhvbjM1LlB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbAorICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZT1weXRob24zNS5QeVVuaWNvZGVfSW50ZXJuSW5QbGFjZQorICBQeVVuaWNvZGVfVHlwZT1weXRob24zNS5QeVVuaWNvZGVfVHlwZSBEQVRBCisgIFB5V2Vha3JlZl9HZXRPYmplY3Q9cHl0aG9uMzUuUHlXZWFrcmVmX0dldE9iamVjdCBEQVRBCisgIFB5V2Vha3JlZl9OZXdQcm94eT1weXRob24zNS5QeVdlYWtyZWZfTmV3UHJveHkKKyAgUHlXZWFrcmVmX05ld1JlZj1weXRob24zNS5QeVdlYWtyZWZfTmV3UmVmCisgIFB5V3JhcHBlckRlc2NyX1R5cGU9cHl0aG9uMzUuUHlXcmFwcGVyRGVzY3JfVHlwZSBEQVRBCisgIFB5V3JhcHBlcl9OZXc9cHl0aG9uMzUuUHlXcmFwcGVyX05ldworICBQeVppcF9UeXBlPXB5dGhvbjM1LlB5WmlwX1R5cGUgREFUQQorICBQeV9BZGRQZW5kaW5nQ2FsbD1weXRob24zNS5QeV9BZGRQZW5kaW5nQ2FsbAorICBQeV9BdEV4aXQ9cHl0aG9uMzUuUHlfQXRFeGl0CisgIFB5X0J1aWxkVmFsdWU9cHl0aG9uMzUuUHlfQnVpbGRWYWx1ZQorICBQeV9Db21waWxlU3RyaW5nPXB5dGhvbjM1LlB5X0NvbXBpbGVTdHJpbmcKKyAgUHlfRGVjUmVmPXB5dGhvbjM1LlB5X0RlY1JlZgorICBQeV9FbmRJbnRlcnByZXRlcj1weXRob24zNS5QeV9FbmRJbnRlcnByZXRlcgorICBQeV9FeGl0PXB5dGhvbjM1LlB5X0V4aXQKKyAgUHlfRmF0YWxFcnJvcj1weXRob24zNS5QeV9GYXRhbEVycm9yCisgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzUuUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBEQVRBCisgIFB5X0ZpbmFsaXplPXB5dGhvbjM1LlB5X0ZpbmFsaXplCisgIFB5X0dldEJ1aWxkSW5mbz1weXRob24zNS5QeV9HZXRCdWlsZEluZm8KKyAgUHlfR2V0Q29tcGlsZXI9cHl0aG9uMzUuUHlfR2V0Q29tcGlsZXIKKyAgUHlfR2V0Q29weXJpZ2h0PXB5dGhvbjM1LlB5X0dldENvcHlyaWdodAorICBQeV9HZXRFeGVjUHJlZml4PXB5dGhvbjM1LlB5X0dldEV4ZWNQcmVmaXgKKyAgUHlfR2V0UGF0aD1weXRob24zNS5QeV9HZXRQYXRoCisgIFB5X0dldFBsYXRmb3JtPXB5dGhvbjM1LlB5X0dldFBsYXRmb3JtCisgIFB5X0dldFByZWZpeD1weXRob24zNS5QeV9HZXRQcmVmaXgKKyAgUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoPXB5dGhvbjM1LlB5X0dldFByb2dyYW1GdWxsUGF0aAorICBQeV9HZXRQcm9ncmFtTmFtZT1weXRob24zNS5QeV9HZXRQcm9ncmFtTmFtZQorICBQeV9HZXRQeXRob25Ib21lPXB5dGhvbjM1LlB5X0dldFB5dGhvbkhvbWUKKyAgUHlfR2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzUuUHlfR2V0UmVjdXJzaW9uTGltaXQKKyAgUHlfR2V0VmVyc2lvbj1weXRob24zNS5QeV9HZXRWZXJzaW9uCisgIFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzUuUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBEQVRBCisgIFB5X0luY1JlZj1weXRob24zNS5QeV9JbmNSZWYKKyAgUHlfSW5pdGlhbGl6ZT1weXRob24zNS5QeV9Jbml0aWFsaXplCisgIFB5X0luaXRpYWxpemVFeD1weXRob24zNS5QeV9Jbml0aWFsaXplRXgKKyAgUHlfSXNJbml0aWFsaXplZD1weXRob24zNS5QeV9Jc0luaXRpYWxpemVkCisgIFB5X01haW49cHl0aG9uMzUuUHlfTWFpbgorICBQeV9NYWtlUGVuZGluZ0NhbGxzPXB5dGhvbjM1LlB5X01ha2VQZW5kaW5nQ2FsbHMKKyAgUHlfTmV3SW50ZXJwcmV0ZXI9cHl0aG9uMzUuUHlfTmV3SW50ZXJwcmV0ZXIKKyAgUHlfUmVwckVudGVyPXB5dGhvbjM1LlB5X1JlcHJFbnRlcgorICBQeV9SZXByTGVhdmU9cHl0aG9uMzUuUHlfUmVwckxlYXZlCisgIFB5X1NldFByb2dyYW1OYW1lPXB5dGhvbjM1LlB5X1NldFByb2dyYW1OYW1lCisgIFB5X1NldFB5dGhvbkhvbWU9cHl0aG9uMzUuUHlfU2V0UHl0aG9uSG9tZQorICBQeV9TZXRSZWN1cnNpb25MaW1pdD1weXRob24zNS5QeV9TZXRSZWN1cnNpb25MaW1pdAorICBQeV9TeW10YWJsZVN0cmluZz1weXRob24zNS5QeV9TeW10YWJsZVN0cmluZworICBQeV9WYUJ1aWxkVmFsdWU9cHl0aG9uMzUuUHlfVmFCdWlsZFZhbHVlCisgIF9QeUVycl9CYWRJbnRlcm5hbENhbGw9cHl0aG9uMzUuX1B5RXJyX0JhZEludGVybmFsQ2FsbAorICBfUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUPXB5dGhvbjM1Ll9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQKKyAgX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQ9cHl0aG9uMzUuX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQKKyAgX1B5T2JqZWN0X0dDX01hbGxvYz1weXRob24zNS5fUHlPYmplY3RfR0NfTWFsbG9jCisgIF9QeU9iamVjdF9HQ19OZXc9cHl0aG9uMzUuX1B5T2JqZWN0X0dDX05ldworICBfUHlPYmplY3RfR0NfTmV3VmFyPXB5dGhvbjM1Ll9QeU9iamVjdF9HQ19OZXdWYXIKKyAgX1B5T2JqZWN0X0dDX1Jlc2l6ZT1weXRob24zNS5fUHlPYmplY3RfR0NfUmVzaXplCisgIF9QeU9iamVjdF9OZXc9cHl0aG9uMzUuX1B5T2JqZWN0X05ldworICBfUHlPYmplY3RfTmV3VmFyPXB5dGhvbjM1Ll9QeU9iamVjdF9OZXdWYXIKKyAgX1B5U3RhdGVfQWRkTW9kdWxlPXB5dGhvbjM1Ll9QeVN0YXRlX0FkZE1vZHVsZQorICBfUHlUaHJlYWRTdGF0ZV9Jbml0PXB5dGhvbjM1Ll9QeVRocmVhZFN0YXRlX0luaXQKKyAgX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2M9cHl0aG9uMzUuX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2MKKyAgX1B5VHJhc2hfZGVsZXRlX2xhdGVyPXB5dGhvbjM1Ll9QeVRyYXNoX2RlbGV0ZV9sYXRlciBEQVRBCisgIF9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nPXB5dGhvbjM1Ll9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nIERBVEEKKyAgX1B5VHJhc2hfZGVwb3NpdF9vYmplY3Q9cHl0aG9uMzUuX1B5VHJhc2hfZGVwb3NpdF9vYmplY3QKKyAgX1B5VHJhc2hfZGVzdHJveV9jaGFpbj1weXRob24zNS5fUHlUcmFzaF9kZXN0cm95X2NoYWluCisgIF9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGU9cHl0aG9uMzUuX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZSBEQVRBCisgIF9QeVdlYWtyZWZfUHJveHlUeXBlPXB5dGhvbjM1Ll9QeVdlYWtyZWZfUHJveHlUeXBlIERBVEEKKyAgX1B5V2Vha3JlZl9SZWZUeXBlPXB5dGhvbjM1Ll9QeVdlYWtyZWZfUmVmVHlwZSBEQVRBCisgIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM1Ll9QeV9CdWlsZFZhbHVlX1NpemVUCisgIF9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0PXB5dGhvbjM1Ll9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0IERBVEEKKyAgX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbD1weXRob24zNS5fUHlfQ2hlY2tSZWN1cnNpdmVDYWxsCisgIF9QeV9EZWFsbG9jPXB5dGhvbjM1Ll9QeV9EZWFsbG9jCisgIF9QeV9FbGxpcHNpc09iamVjdD1weXRob24zNS5fUHlfRWxsaXBzaXNPYmplY3QgREFUQQorICBfUHlfRmFsc2VTdHJ1Y3Q9cHl0aG9uMzUuX1B5X0ZhbHNlU3RydWN0IERBVEEKKyAgX1B5X05vbmVTdHJ1Y3Q9cHl0aG9uMzUuX1B5X05vbmVTdHJ1Y3QgREFUQQorICBfUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3Q9cHl0aG9uMzUuX1B5X05vdEltcGxlbWVudGVkU3RydWN0IERBVEEKKyAgX1B5X1N3YXBwZWRPcD1weXRob24zNS5fUHlfU3dhcHBlZE9wIERBVEEKKyAgX1B5X1RydWVTdHJ1Y3Q9cHl0aG9uMzUuX1B5X1RydWVTdHJ1Y3QgREFUQQorICBfUHlfVmFCdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM1Ll9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQKKyAgX1B5QXJnX1BhcnNlX1NpemVUPXB5dGhvbjM1Ll9QeUFyZ19QYXJzZV9TaXplVAorICBfUHlBcmdfUGFyc2VUdXBsZV9TaXplVD1weXRob24zNS5fUHlBcmdfUGFyc2VUdXBsZV9TaXplVAorICBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUPXB5dGhvbjM1Ll9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyAgX1B5QXJnX1ZhUGFyc2VfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1ZhUGFyc2VfU2l6ZVQKKyAgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUPXB5dGhvbjM1Ll9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAorICBfUHlfQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNS5fUHlfQnVpbGRWYWx1ZV9TaXplVApkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uMy5tYWsgYi9QQy9weXRob24zLm1hawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI4ZTdhYS4uMDAwMDAwMAotLS0gYS9QQy9weXRob24zLm1haworKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLSQoT3V0RGlyKXB5dGhvbjMuZGxsOglweXRob24zLmRlZiAkKE91dERpcilweXRob24zNHN0dWIubGliCi0JY2wgL0xEIC9GZSQoT3V0RGlyKXB5dGhvbjMuZGxsIHB5dGhvbjNkbGwuYyBweXRob24zLmRlZiAkKE91dERpcilweXRob24zNHN0dWIubGliCi0KLSQoT3V0RGlyKXB5dGhvbjM0c3R1Yi5saWI6CXB5dGhvbjM0c3R1Yi5kZWYKLQlsaWIgL2RlZjpweXRob24zNHN0dWIuZGVmIC9vdXQ6JChPdXREaXIpcHl0aG9uMzRzdHViLmxpYiAvTUFDSElORTokKE1BQ0hJTkUpCi0KLWNsZWFuOgotCUlGIEVYSVNUICQoT3V0RGlyKXB5dGhvbjMuZGxsIGRlbCAkKE91dERpcilweXRob24zLmRsbAotCUlGIEVYSVNUICQoT3V0RGlyKXB5dGhvbjMubGliIGRlbCAkKE91dERpcilweXRob24zLmxpYgotCUlGIEVYSVNUICQoT3V0RGlyKXB5dGhvbjM0c3R1Yi5saWIgZGVsICQoT3V0RGlyKXB5dGhvbjM0c3R1Yi5saWIKLQlJRiBFWElTVCAkKE91dERpcilweXRob24zLmV4cCBkZWwgJChPdXREaXIpcHl0aG9uMy5leHAKLQlJRiBFWElTVCAkKE91dERpcilweXRob24zNHN0dWIuZXhwIGRlbCAkKE91dERpcilweXRob24zNHN0dWIuZXhwCi0KLXJlYnVpbGQ6IGNsZWFuICQoT3V0RGlyKXB5dGhvbjMuZGxsCmRpZmYgLS1naXQgYS9QQy9weXRob24zNGdlbi5weSBiL1BDL3B5dGhvbjM0Z2VuLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODBjZTExLi4wMDAwMDAwCi0tLSBhL1BDL3B5dGhvbjM0Z2VuLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotIyBHZW5lcmF0ZSBweXRob24zNHN0dWIuZGVmIG91dCBvZiBweXRob24zLmRlZgotIyBUaGUgcmVndWxhciBpbXBvcnQgbGlicmFyeSBjYW5ub3QgYmUgdXNlZCwKLSMgc2luY2UgaXQgZG9lc24ndCBwcm92aWRlIHRoZSByaWdodCBzeW1ib2xzIGZvcgotIyBkYXRhIGZvcndhcmRpbmcKLW91dCA9IG9wZW4oInB5dGhvbjM0c3R1Yi5kZWYiLCAidyIpCi1vdXQud3JpdGUoJ0xJQlJBUlkgInB5dGhvbjM0IlxuJykKLW91dC53cml0ZSgnRVhQT1JUU1xuJykKLQotaW5wID0gb3BlbigicHl0aG9uMy5kZWYiKQotbGluZSA9IGlucC5yZWFkbGluZSgpCi13aGlsZSBsaW5lLnN0cmlwKCkuc3RhcnRzd2l0aCgnOycpOgotICAgIGxpbmUgPSBpbnAucmVhZGxpbmUoKQotbGluZSA9IGlucC5yZWFkbGluZSgpICMgTElCUkFSWQotYXNzZXJ0IGxpbmUuc3RyaXAoKT09J0VYUE9SVFMnCi0KLWZvciBsaW5lIGluIGlucDoKLSAgICAjIFNZTTE9cHl0aG9uMzQuU1lNMlsgREFUQV0KLSAgICBoZWFkLCB0YWlsID0gbGluZS5zcGxpdCgnLicpCi0gICAgaWYgJ0RBVEEnIGluIHRhaWw6Ci0gICAgICAgIHN5bWJvbCwgdGFpbCA9IHRhaWwuc3BsaXQoJyAnKQotICAgIGVsc2U6Ci0gICAgICAgIHN5bWJvbCA9IHRhaWwuc3RyaXAoKQotICAgIG91dC53cml0ZShzeW1ib2wrJ1xuJykKLQotaW5wLmNsb3NlKCkKLW91dC5jbG9zZSgpCmRpZmYgLS1naXQgYS9QQy9weXRob24zNHN0dWIuZGVmIGIvUEMvcHl0aG9uMzRzdHViLmRlZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA3NGNmMy4uMDAwMDAwMAotLS0gYS9QQy9weXRob24zNHN0dWIuZGVmCisrKyAvZGV2L251bGwKQEAgLTEsNzAwICswLDAgQEAKLUxJQlJBUlkgInB5dGhvbjM0IgotRVhQT1JUUwotUHlBcmdfUGFyc2UKLVB5QXJnX1BhcnNlVHVwbGUKLVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcwotUHlBcmdfVW5wYWNrVHVwbGUKLVB5QXJnX1ZhUGFyc2UKLVB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzCi1QeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMKLVB5QmFzZU9iamVjdF9UeXBlCi1QeUJvb2xfRnJvbUxvbmcKLVB5Qm9vbF9UeXBlCi1QeUJ5dGVBcnJheUl0ZXJfVHlwZQotUHlCeXRlQXJyYXlfQXNTdHJpbmcKLVB5Qnl0ZUFycmF5X0NvbmNhdAotUHlCeXRlQXJyYXlfRnJvbU9iamVjdAotUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUKLVB5Qnl0ZUFycmF5X1Jlc2l6ZQotUHlCeXRlQXJyYXlfU2l6ZQotUHlCeXRlQXJyYXlfVHlwZQotUHlCeXRlc0l0ZXJfVHlwZQotUHlCeXRlc19Bc1N0cmluZwotUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUKLVB5Qnl0ZXNfQ29uY2F0Ci1QeUJ5dGVzX0NvbmNhdEFuZERlbAotUHlCeXRlc19EZWNvZGVFc2NhcGUKLVB5Qnl0ZXNfRnJvbUZvcm1hdAotUHlCeXRlc19Gcm9tRm9ybWF0VgotUHlCeXRlc19Gcm9tT2JqZWN0Ci1QeUJ5dGVzX0Zyb21TdHJpbmcKLVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUKLVB5Qnl0ZXNfUmVwcgotUHlCeXRlc19TaXplCi1QeUJ5dGVzX1R5cGUKLVB5Q0Z1bmN0aW9uX0NhbGwKLVB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3QKLVB5Q0Z1bmN0aW9uX0dldEZsYWdzCi1QeUNGdW5jdGlvbl9HZXRGdW5jdGlvbgotUHlDRnVuY3Rpb25fR2V0U2VsZgotUHlDRnVuY3Rpb25fTmV3Ci1QeUNGdW5jdGlvbl9OZXdFeAotUHlDRnVuY3Rpb25fVHlwZQotUHlDYWxsSXRlcl9OZXcKLVB5Q2FsbEl0ZXJfVHlwZQotUHlDYWxsYWJsZV9DaGVjawotUHlDYXBzdWxlX0dldENvbnRleHQKLVB5Q2Fwc3VsZV9HZXREZXN0cnVjdG9yCi1QeUNhcHN1bGVfR2V0TmFtZQotUHlDYXBzdWxlX0dldFBvaW50ZXIKLVB5Q2Fwc3VsZV9JbXBvcnQKLVB5Q2Fwc3VsZV9Jc1ZhbGlkCi1QeUNhcHN1bGVfTmV3Ci1QeUNhcHN1bGVfU2V0Q29udGV4dAotUHlDYXBzdWxlX1NldERlc3RydWN0b3IKLVB5Q2Fwc3VsZV9TZXROYW1lCi1QeUNhcHN1bGVfU2V0UG9pbnRlcgotUHlDYXBzdWxlX1R5cGUKLVB5Q2xhc3NNZXRob2REZXNjcl9UeXBlCi1QeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnMKLVB5Q29kZWNfRGVjb2RlCi1QeUNvZGVjX0RlY29kZXIKLVB5Q29kZWNfRW5jb2RlCi1QeUNvZGVjX0VuY29kZXIKLVB5Q29kZWNfSWdub3JlRXJyb3JzCi1QeUNvZGVjX0luY3JlbWVudGFsRGVjb2RlcgotUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXIKLVB5Q29kZWNfS25vd25FbmNvZGluZwotUHlDb2RlY19Mb29rdXBFcnJvcgotUHlDb2RlY19SZWdpc3RlcgotUHlDb2RlY19SZWdpc3RlckVycm9yCi1QeUNvZGVjX1JlcGxhY2VFcnJvcnMKLVB5Q29kZWNfU3RyZWFtUmVhZGVyCi1QeUNvZGVjX1N0cmVhbVdyaXRlcgotUHlDb2RlY19TdHJpY3RFcnJvcnMKLVB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnMKLVB5Q29tcGxleF9Gcm9tRG91YmxlcwotUHlDb21wbGV4X0ltYWdBc0RvdWJsZQotUHlDb21wbGV4X1JlYWxBc0RvdWJsZQotUHlDb21wbGV4X1R5cGUKLVB5RGVzY3JfTmV3Q2xhc3NNZXRob2QKLVB5RGVzY3JfTmV3R2V0U2V0Ci1QeURlc2NyX05ld01lbWJlcgotUHlEZXNjcl9OZXdNZXRob2QKLVB5RGljdEl0ZW1zX1R5cGUKLVB5RGljdEl0ZXJJdGVtX1R5cGUKLVB5RGljdEl0ZXJLZXlfVHlwZQotUHlEaWN0SXRlclZhbHVlX1R5cGUKLVB5RGljdEtleXNfVHlwZQotUHlEaWN0UHJveHlfTmV3Ci1QeURpY3RQcm94eV9UeXBlCi1QeURpY3RWYWx1ZXNfVHlwZQotUHlEaWN0X0NsZWFyCi1QeURpY3RfQ29udGFpbnMKLVB5RGljdF9Db3B5Ci1QeURpY3RfRGVsSXRlbQotUHlEaWN0X0RlbEl0ZW1TdHJpbmcKLVB5RGljdF9HZXRJdGVtCi1QeURpY3RfR2V0SXRlbVN0cmluZwotUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IKLVB5RGljdF9JdGVtcwotUHlEaWN0X0tleXMKLVB5RGljdF9NZXJnZQotUHlEaWN0X01lcmdlRnJvbVNlcTIKLVB5RGljdF9OZXcKLVB5RGljdF9OZXh0Ci1QeURpY3RfU2V0SXRlbQotUHlEaWN0X1NldEl0ZW1TdHJpbmcKLVB5RGljdF9TaXplCi1QeURpY3RfVHlwZQotUHlEaWN0X1VwZGF0ZQotUHlEaWN0X1ZhbHVlcwotUHlFbGxpcHNpc19UeXBlCi1QeUVudW1fVHlwZQotUHlFcnJfQmFkQXJndW1lbnQKLVB5RXJyX0JhZEludGVybmFsQ2FsbAotUHlFcnJfQ2hlY2tTaWduYWxzCi1QeUVycl9DbGVhcgotUHlFcnJfRGlzcGxheQotUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcwotUHlFcnJfRmV0Y2gKLVB5RXJyX0Zvcm1hdAotUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzCi1QeUVycl9OZXdFeGNlcHRpb24KLVB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MKLVB5RXJyX05vTWVtb3J5Ci1QeUVycl9Ob3JtYWxpemVFeGNlcHRpb24KLVB5RXJyX09jY3VycmVkCi1QeUVycl9QcmludAotUHlFcnJfUHJpbnRFeAotUHlFcnJfUHJvZ3JhbVRleHQKLVB5RXJyX1Jlc3RvcmUKLVB5RXJyX1NldEZyb21FcnJubwotUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lCi1QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QKLVB5RXJyX1NldEludGVycnVwdAotUHlFcnJfU2V0Tm9uZQotUHlFcnJfU2V0T2JqZWN0Ci1QeUVycl9TZXRTdHJpbmcKLVB5RXJyX1N5bnRheExvY2F0aW9uCi1QeUVycl9XYXJuRXgKLVB5RXJyX1dhcm5FeHBsaWNpdAotUHlFcnJfV2FybkZvcm1hdAotUHlFcnJfV3JpdGVVbnJhaXNhYmxlCi1QeUV2YWxfQWNxdWlyZUxvY2sKLVB5RXZhbF9BY3F1aXJlVGhyZWFkCi1QeUV2YWxfQ2FsbEZ1bmN0aW9uCi1QeUV2YWxfQ2FsbE1ldGhvZAotUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMKLVB5RXZhbF9FdmFsQ29kZQotUHlFdmFsX0V2YWxDb2RlRXgKLVB5RXZhbF9FdmFsRnJhbWUKLVB5RXZhbF9FdmFsRnJhbWVFeAotUHlFdmFsX0dldEJ1aWx0aW5zCi1QeUV2YWxfR2V0Q2FsbFN0YXRzCi1QeUV2YWxfR2V0RnJhbWUKLVB5RXZhbF9HZXRGdW5jRGVzYwotUHlFdmFsX0dldEZ1bmNOYW1lCi1QeUV2YWxfR2V0R2xvYmFscwotUHlFdmFsX0dldExvY2FscwotUHlFdmFsX0luaXRUaHJlYWRzCi1QeUV2YWxfUmVJbml0VGhyZWFkcwotUHlFdmFsX1JlbGVhc2VMb2NrCi1QeUV2YWxfUmVsZWFzZVRocmVhZAotUHlFdmFsX1Jlc3RvcmVUaHJlYWQKLVB5RXZhbF9TYXZlVGhyZWFkCi1QeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkCi1QeUV4Y19Bcml0aG1ldGljRXJyb3IKLVB5RXhjX0Fzc2VydGlvbkVycm9yCi1QeUV4Y19BdHRyaWJ1dGVFcnJvcgotUHlFeGNfQmFzZUV4Y2VwdGlvbgotUHlFeGNfQnVmZmVyRXJyb3IKLVB5RXhjX0J5dGVzV2FybmluZwotUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nCi1QeUV4Y19FT0ZFcnJvcgotUHlFeGNfRW52aXJvbm1lbnRFcnJvcgotUHlFeGNfRXhjZXB0aW9uCi1QeUV4Y19GbG9hdGluZ1BvaW50RXJyb3IKLVB5RXhjX0Z1dHVyZVdhcm5pbmcKLVB5RXhjX0dlbmVyYXRvckV4aXQKLVB5RXhjX0lPRXJyb3IKLVB5RXhjX0ltcG9ydEVycm9yCi1QeUV4Y19JbXBvcnRXYXJuaW5nCi1QeUV4Y19JbmRlbnRhdGlvbkVycm9yCi1QeUV4Y19JbmRleEVycm9yCi1QeUV4Y19LZXlFcnJvcgotUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQKLVB5RXhjX0xvb2t1cEVycm9yCi1QeUV4Y19NZW1vcnlFcnJvcgotUHlFeGNfTWVtb3J5RXJyb3JJbnN0Ci1QeUV4Y19OYW1lRXJyb3IKLVB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IKLVB5RXhjX09TRXJyb3IKLVB5RXhjX092ZXJmbG93RXJyb3IKLVB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcKLVB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdAotUHlFeGNfUmVmZXJlbmNlRXJyb3IKLVB5RXhjX1J1bnRpbWVFcnJvcgotUHlFeGNfUnVudGltZVdhcm5pbmcKLVB5RXhjX1N0b3BJdGVyYXRpb24KLVB5RXhjX1N5bnRheEVycm9yCi1QeUV4Y19TeW50YXhXYXJuaW5nCi1QeUV4Y19TeXN0ZW1FcnJvcgotUHlFeGNfU3lzdGVtRXhpdAotUHlFeGNfVGFiRXJyb3IKLVB5RXhjX1R5cGVFcnJvcgotUHlFeGNfVW5ib3VuZExvY2FsRXJyb3IKLVB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcgotUHlFeGNfVW5pY29kZUVuY29kZUVycm9yCi1QeUV4Y19Vbmljb2RlRXJyb3IKLVB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvcgotUHlFeGNfVW5pY29kZVdhcm5pbmcKLVB5RXhjX1VzZXJXYXJuaW5nCi1QeUV4Y19WYWx1ZUVycm9yCi1QeUV4Y19XYXJuaW5nCi1QeUV4Y19aZXJvRGl2aXNpb25FcnJvcgotUHlFeGNlcHRpb25fR2V0Q2F1c2UKLVB5RXhjZXB0aW9uX0dldENvbnRleHQKLVB5RXhjZXB0aW9uX0dldFRyYWNlYmFjawotUHlFeGNlcHRpb25fU2V0Q2F1c2UKLVB5RXhjZXB0aW9uX1NldENvbnRleHQKLVB5RXhjZXB0aW9uX1NldFRyYWNlYmFjawotUHlGaWxlX0Zyb21GZAotUHlGaWxlX0dldExpbmUKLVB5RmlsZV9Xcml0ZU9iamVjdAotUHlGaWxlX1dyaXRlU3RyaW5nCi1QeUZpbHRlcl9UeXBlCi1QeUZsb2F0X0FzRG91YmxlCi1QeUZsb2F0X0Zyb21Eb3VibGUKLVB5RmxvYXRfRnJvbVN0cmluZwotUHlGbG9hdF9HZXRJbmZvCi1QeUZsb2F0X0dldE1heAotUHlGbG9hdF9HZXRNaW4KLVB5RmxvYXRfVHlwZQotUHlGcm96ZW5TZXRfTmV3Ci1QeUZyb3plblNldF9UeXBlCi1QeUdDX0NvbGxlY3QKLVB5R0lMU3RhdGVfRW5zdXJlCi1QeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZQotUHlHSUxTdGF0ZV9SZWxlYXNlCi1QeUdldFNldERlc2NyX1R5cGUKLVB5SW1wb3J0X0FkZE1vZHVsZQotUHlJbXBvcnRfQXBwZW5kSW5pdHRhYgotUHlJbXBvcnRfQ2xlYW51cAotUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUKLVB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXgKLVB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcwotUHlJbXBvcnRfR2V0SW1wb3J0ZXIKLVB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyCi1QeUltcG9ydF9HZXRNYWdpY1RhZwotUHlJbXBvcnRfR2V0TW9kdWxlRGljdAotUHlJbXBvcnRfSW1wb3J0Ci1QeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUKLVB5SW1wb3J0X0ltcG9ydE1vZHVsZQotUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwKLVB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2sKLVB5SW1wb3J0X1JlbG9hZE1vZHVsZQotUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyCi1QeUludGVycHJldGVyU3RhdGVfRGVsZXRlCi1QeUludGVycHJldGVyU3RhdGVfTmV3Ci1QeUl0ZXJfTmV4dAotUHlMaXN0SXRlcl9UeXBlCi1QeUxpc3RSZXZJdGVyX1R5cGUKLVB5TGlzdF9BcHBlbmQKLVB5TGlzdF9Bc1R1cGxlCi1QeUxpc3RfR2V0SXRlbQotUHlMaXN0X0dldFNsaWNlCi1QeUxpc3RfSW5zZXJ0Ci1QeUxpc3RfTmV3Ci1QeUxpc3RfUmV2ZXJzZQotUHlMaXN0X1NldEl0ZW0KLVB5TGlzdF9TZXRTbGljZQotUHlMaXN0X1NpemUKLVB5TGlzdF9Tb3J0Ci1QeUxpc3RfVHlwZQotUHlMb25nUmFuZ2VJdGVyX1R5cGUKLVB5TG9uZ19Bc0RvdWJsZQotUHlMb25nX0FzTG9uZwotUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93Ci1QeUxvbmdfQXNMb25nTG9uZwotUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdwotUHlMb25nX0FzU2l6ZV90Ci1QeUxvbmdfQXNTc2l6ZV90Ci1QeUxvbmdfQXNVbnNpZ25lZExvbmcKLVB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcKLVB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrCi1QeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrCi1QeUxvbmdfQXNWb2lkUHRyCi1QeUxvbmdfRnJvbURvdWJsZQotUHlMb25nX0Zyb21Mb25nCi1QeUxvbmdfRnJvbUxvbmdMb25nCi1QeUxvbmdfRnJvbVNpemVfdAotUHlMb25nX0Zyb21Tc2l6ZV90Ci1QeUxvbmdfRnJvbVN0cmluZwotUHlMb25nX0Zyb21VbnNpZ25lZExvbmcKLVB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZwotUHlMb25nX0Zyb21Wb2lkUHRyCi1QeUxvbmdfR2V0SW5mbwotUHlMb25nX1R5cGUKLVB5TWFwX1R5cGUKLVB5TWFwcGluZ19DaGVjawotUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcKLVB5TWFwcGluZ19IYXNLZXkKLVB5TWFwcGluZ19IYXNLZXlTdHJpbmcKLVB5TWFwcGluZ19JdGVtcwotUHlNYXBwaW5nX0tleXMKLVB5TWFwcGluZ19MZW5ndGgKLVB5TWFwcGluZ19TZXRJdGVtU3RyaW5nCi1QeU1hcHBpbmdfU2l6ZQotUHlNYXBwaW5nX1ZhbHVlcwotUHlNZW1fRnJlZQotUHlNZW1fTWFsbG9jCi1QeU1lbV9SZWFsbG9jCi1QeU1lbWJlckRlc2NyX1R5cGUKLVB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0Ci1QeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cwotUHlNZW1vcnlWaWV3X1R5cGUKLVB5TWV0aG9kRGVzY3JfVHlwZQotUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQKLVB5TW9kdWxlX0FkZE9iamVjdAotUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQKLVB5TW9kdWxlX0NyZWF0ZTIKLVB5TW9kdWxlX0dldERlZgotUHlNb2R1bGVfR2V0RGljdAotUHlNb2R1bGVfR2V0RmlsZW5hbWUKLVB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0Ci1QeU1vZHVsZV9HZXROYW1lCi1QeU1vZHVsZV9HZXRTdGF0ZQotUHlNb2R1bGVfTmV3Ci1QeU1vZHVsZV9UeXBlCi1QeU51bGxJbXBvcnRlcl9UeXBlCi1QeU51bWJlcl9BYnNvbHV0ZQotUHlOdW1iZXJfQWRkCi1QeU51bWJlcl9BbmQKLVB5TnVtYmVyX0FzU3NpemVfdAotUHlOdW1iZXJfQ2hlY2sKLVB5TnVtYmVyX0Rpdm1vZAotUHlOdW1iZXJfRmxvYXQKLVB5TnVtYmVyX0Zsb29yRGl2aWRlCi1QeU51bWJlcl9JblBsYWNlQWRkCi1QeU51bWJlcl9JblBsYWNlQW5kCi1QeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGUKLVB5TnVtYmVyX0luUGxhY2VMc2hpZnQKLVB5TnVtYmVyX0luUGxhY2VNdWx0aXBseQotUHlOdW1iZXJfSW5QbGFjZU9yCi1QeU51bWJlcl9JblBsYWNlUG93ZXIKLVB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXIKLVB5TnVtYmVyX0luUGxhY2VSc2hpZnQKLVB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdAotUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGUKLVB5TnVtYmVyX0luUGxhY2VYb3IKLVB5TnVtYmVyX0luZGV4Ci1QeU51bWJlcl9JbnZlcnQKLVB5TnVtYmVyX0xvbmcKLVB5TnVtYmVyX0xzaGlmdAotUHlOdW1iZXJfTXVsdGlwbHkKLVB5TnVtYmVyX05lZ2F0aXZlCi1QeU51bWJlcl9PcgotUHlOdW1iZXJfUG9zaXRpdmUKLVB5TnVtYmVyX1Bvd2VyCi1QeU51bWJlcl9SZW1haW5kZXIKLVB5TnVtYmVyX1JzaGlmdAotUHlOdW1iZXJfU3VidHJhY3QKLVB5TnVtYmVyX1RvQmFzZQotUHlOdW1iZXJfVHJ1ZURpdmlkZQotUHlOdW1iZXJfWG9yCi1QeU9TX0FmdGVyRm9yawotUHlPU19Jbml0SW50ZXJydXB0cwotUHlPU19JbnB1dEhvb2sKLVB5T1NfSW50ZXJydXB0T2NjdXJyZWQKLVB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXIKLVB5T1NfZG91YmxlX3RvX3N0cmluZwotUHlPU19nZXRzaWcKLVB5T1NfbXlzdHJpY21wCi1QeU9TX215c3RybmljbXAKLVB5T1Nfc2V0c2lnCi1QeU9TX3NucHJpbnRmCi1QeU9TX3N0cmluZ190b19kb3VibGUKLVB5T1Nfc3RydG9sCi1QeU9TX3N0cnRvdWwKLVB5T1NfdnNucHJpbnRmCi1QeU9iamVjdF9BU0NJSQotUHlPYmplY3RfQXNDaGFyQnVmZmVyCi1QeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yCi1QeU9iamVjdF9Bc1JlYWRCdWZmZXIKLVB5T2JqZWN0X0FzV3JpdGVCdWZmZXIKLVB5T2JqZWN0X0J5dGVzCi1QeU9iamVjdF9DYWxsCi1QeU9iamVjdF9DYWxsRnVuY3Rpb24KLVB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MKLVB5T2JqZWN0X0NhbGxNZXRob2QKLVB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzCi1QeU9iamVjdF9DYWxsT2JqZWN0Ci1QeU9iamVjdF9DaGVja1JlYWRCdWZmZXIKLVB5T2JqZWN0X0NsZWFyV2Vha1JlZnMKLVB5T2JqZWN0X0RlbEl0ZW0KLVB5T2JqZWN0X0RlbEl0ZW1TdHJpbmcKLVB5T2JqZWN0X0RpcgotUHlPYmplY3RfRm9ybWF0Ci1QeU9iamVjdF9GcmVlCi1QeU9iamVjdF9HQ19EZWwKLVB5T2JqZWN0X0dDX1RyYWNrCi1QeU9iamVjdF9HQ19VblRyYWNrCi1QeU9iamVjdF9HZW5lcmljR2V0QXR0cgotUHlPYmplY3RfR2VuZXJpY1NldEF0dHIKLVB5T2JqZWN0X0dldEF0dHIKLVB5T2JqZWN0X0dldEF0dHJTdHJpbmcKLVB5T2JqZWN0X0dldEl0ZW0KLVB5T2JqZWN0X0dldEl0ZXIKLVB5T2JqZWN0X0hhc0F0dHIKLVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcKLVB5T2JqZWN0X0hhc2gKLVB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZAotUHlPYmplY3RfSW5pdAotUHlPYmplY3RfSW5pdFZhcgotUHlPYmplY3RfSXNJbnN0YW5jZQotUHlPYmplY3RfSXNTdWJjbGFzcwotUHlPYmplY3RfSXNUcnVlCi1QeU9iamVjdF9MZW5ndGgKLVB5T2JqZWN0X01hbGxvYwotUHlPYmplY3RfTm90Ci1QeU9iamVjdF9SZWFsbG9jCi1QeU9iamVjdF9SZXByCi1QeU9iamVjdF9SaWNoQ29tcGFyZQotUHlPYmplY3RfUmljaENvbXBhcmVCb29sCi1QeU9iamVjdF9TZWxmSXRlcgotUHlPYmplY3RfU2V0QXR0cgotUHlPYmplY3RfU2V0QXR0clN0cmluZwotUHlPYmplY3RfU2V0SXRlbQotUHlPYmplY3RfU2l6ZQotUHlPYmplY3RfU3RyCi1QeU9iamVjdF9UeXBlCi1QeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncwotUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncwotUHlQcm9wZXJ0eV9UeXBlCi1QeVJhbmdlSXRlcl9UeXBlCi1QeVJhbmdlX1R5cGUKLVB5UmV2ZXJzZWRfVHlwZQotUHlTZXFJdGVyX05ldwotUHlTZXFJdGVyX1R5cGUKLVB5U2VxdWVuY2VfQ2hlY2sKLVB5U2VxdWVuY2VfQ29uY2F0Ci1QeVNlcXVlbmNlX0NvbnRhaW5zCi1QeVNlcXVlbmNlX0NvdW50Ci1QeVNlcXVlbmNlX0RlbEl0ZW0KLVB5U2VxdWVuY2VfRGVsU2xpY2UKLVB5U2VxdWVuY2VfRmFzdAotUHlTZXF1ZW5jZV9HZXRJdGVtCi1QeVNlcXVlbmNlX0dldFNsaWNlCi1QeVNlcXVlbmNlX0luCi1QeVNlcXVlbmNlX0luUGxhY2VDb25jYXQKLVB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdAotUHlTZXF1ZW5jZV9JbmRleAotUHlTZXF1ZW5jZV9MZW5ndGgKLVB5U2VxdWVuY2VfTGlzdAotUHlTZXF1ZW5jZV9SZXBlYXQKLVB5U2VxdWVuY2VfU2V0SXRlbQotUHlTZXF1ZW5jZV9TZXRTbGljZQotUHlTZXF1ZW5jZV9TaXplCi1QeVNlcXVlbmNlX1R1cGxlCi1QeVNldEl0ZXJfVHlwZQotUHlTZXRfQWRkCi1QeVNldF9DbGVhcgotUHlTZXRfQ29udGFpbnMKLVB5U2V0X0Rpc2NhcmQKLVB5U2V0X05ldwotUHlTZXRfUG9wCi1QeVNldF9TaXplCi1QeVNldF9UeXBlCi1QeVNsaWNlX0dldEluZGljZXMKLVB5U2xpY2VfR2V0SW5kaWNlc0V4Ci1QeVNsaWNlX05ldwotUHlTbGljZV9UeXBlCi1QeVNvcnRXcmFwcGVyX1R5cGUKLVB5U3RhdGVfRmluZE1vZHVsZQotUHlTdGF0ZV9BZGRNb2R1bGUKLVB5U3RhdGVfUmVtb3ZlTW9kdWxlCi1QeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW0KLVB5U3RydWN0U2VxdWVuY2VfTmV3Ci1QeVN0cnVjdFNlcXVlbmNlX05ld1R5cGUKLVB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbQotUHlTdXBlcl9UeXBlCi1QeVN5c19BZGRXYXJuT3B0aW9uCi1QeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZQotUHlTeXNfRm9ybWF0U3RkZXJyCi1QeVN5c19Gb3JtYXRTdGRvdXQKLVB5U3lzX0dldE9iamVjdAotUHlTeXNfSGFzV2Fybk9wdGlvbnMKLVB5U3lzX1Jlc2V0V2Fybk9wdGlvbnMKLVB5U3lzX1NldEFyZ3YKLVB5U3lzX1NldEFyZ3ZFeAotUHlTeXNfU2V0T2JqZWN0Ci1QeVN5c19TZXRQYXRoCi1QeVN5c19Xcml0ZVN0ZGVycgotUHlTeXNfV3JpdGVTdGRvdXQKLVB5VGhyZWFkU3RhdGVfQ2xlYXIKLVB5VGhyZWFkU3RhdGVfRGVsZXRlCi1QeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQKLVB5VGhyZWFkU3RhdGVfR2V0Ci1QeVRocmVhZFN0YXRlX0dldERpY3QKLVB5VGhyZWFkU3RhdGVfTmV3Ci1QeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjCi1QeVRocmVhZFN0YXRlX1N3YXAKLVB5VHJhY2VCYWNrX0hlcmUKLVB5VHJhY2VCYWNrX1ByaW50Ci1QeVRyYWNlQmFja19UeXBlCi1QeVR1cGxlSXRlcl9UeXBlCi1QeVR1cGxlX0NsZWFyRnJlZUxpc3QKLVB5VHVwbGVfR2V0SXRlbQotUHlUdXBsZV9HZXRTbGljZQotUHlUdXBsZV9OZXcKLVB5VHVwbGVfUGFjawotUHlUdXBsZV9TZXRJdGVtCi1QeVR1cGxlX1NpemUKLVB5VHVwbGVfVHlwZQotUHlUeXBlX0NsZWFyQ2FjaGUKLVB5VHlwZV9Gcm9tU3BlYwotUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzCi1QeVR5cGVfR2VuZXJpY0FsbG9jCi1QeVR5cGVfR2VuZXJpY05ldwotUHlUeXBlX0dldEZsYWdzCi1QeVR5cGVfR2V0U2xvdAotUHlUeXBlX0lzU3VidHlwZQotUHlUeXBlX01vZGlmaWVkCi1QeVR5cGVfUmVhZHkKLVB5VHlwZV9UeXBlCi1QeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGUKLVB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nCi1QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQKLVB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdAotUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uCi1QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydAotUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kCi1QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb24KLVB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0Ci1QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZwotUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kCi1QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3QKLVB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbgotUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQKLVB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZAotUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uCi1QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydAotUHlVbmljb2RlSXRlcl9UeXBlCi1QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQKLVB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdAotUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uCi1QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydAotUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kCi1QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb24KLVB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0Ci1QeVVuaWNvZGVfQXBwZW5kCi1QeVVuaWNvZGVfQXBwZW5kQW5kRGVsCi1QeVVuaWNvZGVfQXNBU0NJSVN0cmluZwotUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZwotUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdAotUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUKLVB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QKLVB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcKLVB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlCi1QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcKLVB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKLVB5VW5pY29kZV9Bc1VURjE2U3RyaW5nCi1QeVVuaWNvZGVfQXNVVEYzMlN0cmluZwotUHlVbmljb2RlX0FzVVRGOFN0cmluZwotUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZwotUHlVbmljb2RlX0FzV2lkZUNoYXIKLVB5VW5pY29kZV9DbGVhckZyZWVsaXN0Ci1QeVVuaWNvZGVfQ29tcGFyZQotUHlVbmljb2RlX0NvbmNhdAotUHlVbmljb2RlX0NvbnRhaW5zCi1QeVVuaWNvZGVfQ291bnQKLVB5VW5pY29kZV9EZWNvZGUKLVB5VW5pY29kZV9EZWNvZGVBU0NJSQotUHlVbmljb2RlX0RlY29kZUNoYXJtYXAKLVB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQKLVB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplCi1QeVVuaWNvZGVfRGVjb2RlTGF0aW4xCi1QeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZQotUHlVbmljb2RlX0RlY29kZVVURjE2Ci1QeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bAotUHlVbmljb2RlX0RlY29kZVVURjMyCi1QeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bAotUHlVbmljb2RlX0RlY29kZVVURjgKLVB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwKLVB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlCi1QeVVuaWNvZGVfRlNDb252ZXJ0ZXIKLVB5VW5pY29kZV9GU0RlY29kZXIKLVB5VW5pY29kZV9GaW5kCi1QeVVuaWNvZGVfRm9ybWF0Ci1QeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QKLVB5VW5pY29kZV9Gcm9tRm9ybWF0Ci1QeVVuaWNvZGVfRnJvbUZvcm1hdFYKLVB5VW5pY29kZV9Gcm9tT2JqZWN0Ci1QeVVuaWNvZGVfRnJvbU9yZGluYWwKLVB5VW5pY29kZV9Gcm9tU3RyaW5nCi1QeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUKLVB5VW5pY29kZV9Gcm9tV2lkZUNoYXIKLVB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcKLVB5VW5pY29kZV9HZXRTaXplCi1QeVVuaWNvZGVfSXNJZGVudGlmaWVyCi1QeVVuaWNvZGVfSm9pbgotUHlVbmljb2RlX1BhcnRpdGlvbgotUHlVbmljb2RlX1JQYXJ0aXRpb24KLVB5VW5pY29kZV9SU3BsaXQKLVB5VW5pY29kZV9SZXBsYWNlCi1QeVVuaWNvZGVfUmVzaXplCi1QeVVuaWNvZGVfUmljaENvbXBhcmUKLVB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2RpbmcKLVB5VW5pY29kZV9TcGxpdAotUHlVbmljb2RlX1NwbGl0bGluZXMKLVB5VW5pY29kZV9UYWlsbWF0Y2gKLVB5VW5pY29kZV9UcmFuc2xhdGUKLVB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwCi1QeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZwotUHlVbmljb2RlX0RlY29kZVVURjcKLVB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwKLVB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQKLVB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nCi1QeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWwKLVB5VW5pY29kZV9JbnRlcm5JblBsYWNlCi1QeVVuaWNvZGVfVHlwZQotUHlXZWFrcmVmX0dldE9iamVjdAotUHlXZWFrcmVmX05ld1Byb3h5Ci1QeVdlYWtyZWZfTmV3UmVmCi1QeVdyYXBwZXJEZXNjcl9UeXBlCi1QeVdyYXBwZXJfTmV3Ci1QeVppcF9UeXBlCi1QeV9BZGRQZW5kaW5nQ2FsbAotUHlfQXRFeGl0Ci1QeV9CdWlsZFZhbHVlCi1QeV9Db21waWxlU3RyaW5nCi1QeV9EZWNSZWYKLVB5X0VuZEludGVycHJldGVyCi1QeV9FeGl0Ci1QeV9GYXRhbEVycm9yCi1QeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nCi1QeV9GaW5hbGl6ZQotUHlfR2V0QnVpbGRJbmZvCi1QeV9HZXRDb21waWxlcgotUHlfR2V0Q29weXJpZ2h0Ci1QeV9HZXRFeGVjUHJlZml4Ci1QeV9HZXRQYXRoCi1QeV9HZXRQbGF0Zm9ybQotUHlfR2V0UHJlZml4Ci1QeV9HZXRQcm9ncmFtRnVsbFBhdGgKLVB5X0dldFByb2dyYW1OYW1lCi1QeV9HZXRQeXRob25Ib21lCi1QeV9HZXRSZWN1cnNpb25MaW1pdAotUHlfR2V0VmVyc2lvbgotUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZwotUHlfSW5jUmVmCi1QeV9Jbml0aWFsaXplCi1QeV9Jbml0aWFsaXplRXgKLVB5X0lzSW5pdGlhbGl6ZWQKLVB5X01haW4KLVB5X01ha2VQZW5kaW5nQ2FsbHMKLVB5X05ld0ludGVycHJldGVyCi1QeV9SZXByRW50ZXIKLVB5X1JlcHJMZWF2ZQotUHlfU2V0UHJvZ3JhbU5hbWUKLVB5X1NldFB5dGhvbkhvbWUKLVB5X1NldFJlY3Vyc2lvbkxpbWl0Ci1QeV9TeW10YWJsZVN0cmluZwotUHlfVmFCdWlsZFZhbHVlCi1fUHlFcnJfQmFkSW50ZXJuYWxDYWxsCi1fUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUCi1fUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVAotX1B5T2JqZWN0X0dDX01hbGxvYwotX1B5T2JqZWN0X0dDX05ldwotX1B5T2JqZWN0X0dDX05ld1ZhcgotX1B5T2JqZWN0X0dDX1Jlc2l6ZQotX1B5T2JqZWN0X05ldwotX1B5T2JqZWN0X05ld1ZhcgotX1B5U3RhdGVfQWRkTW9kdWxlCi1fUHlUaHJlYWRTdGF0ZV9Jbml0Ci1fUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYwotX1B5VHJhc2hfZGVsZXRlX2xhdGVyCi1fUHlUcmFzaF9kZWxldGVfbmVzdGluZwotX1B5VHJhc2hfZGVwb3NpdF9vYmplY3QKLV9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4KLV9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGUKLV9QeVdlYWtyZWZfUHJveHlUeXBlCi1fUHlXZWFrcmVmX1JlZlR5cGUKLV9QeV9CdWlsZFZhbHVlX1NpemVUCi1fUHlfQ2hlY2tSZWN1cnNpb25MaW1pdAotX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbAotX1B5X0RlYWxsb2MKLV9QeV9FbGxpcHNpc09iamVjdAotX1B5X0ZhbHNlU3RydWN0Ci1fUHlfTm9uZVN0cnVjdAotX1B5X05vdEltcGxlbWVudGVkU3RydWN0Ci1fUHlfU3dhcHBlZE9wCi1fUHlfVHJ1ZVN0cnVjdAotX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVAotX1B5QXJnX1BhcnNlX1NpemVUCi1fUHlBcmdfUGFyc2VUdXBsZV9TaXplVAotX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAotX1B5QXJnX1ZhUGFyc2VfU2l6ZVQKLV9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAotX1B5X0J1aWxkVmFsdWVfU2l6ZVQKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbl9leGUucmMgYi9QQy9weXRob25fZXhlLnJjCmluZGV4IDE0ZTI1NzQuLjkxNzg1YTEgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbl9leGUucmMKKysrIGIvUEMvcHl0aG9uX2V4ZS5yYwpAQCAtMSArMSw0OSBAQAotMSAgICAgICAgICAgSUNPTiAgICBESVNDQVJEQUJMRSAgICAgInB5Y29uLmljbyIgCisvLyBSZXNvdXJjZSBzY3JpcHQgZm9yIFB5dGhvbiBjb25zb2xlIEVYRXMuCisKKyNpbmNsdWRlICJweXRob25fdmVyX3JjLmgiCisKKy8vIEluY2x1ZGUgdGhlIG1hbmlmZXN0IGZpbGUgdGhhdCBpbmRpY2F0ZXMgd2Ugc3VwcG9ydCBhbGwKKy8vIGN1cnJlbnQgdmVyc2lvbnMgb2YgV2luZG93cy4KKyNpbmNsdWRlIDx3aW51c2VyLmg+CisxIFJUX01BTklGRVNUICJweXRob24ubWFuaWZlc3QiCisKKzEgSUNPTiBESVNDQVJEQUJMRSAicHljb24uaWNvIiAKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIFZlcnNpb24KKy8vCisKK1ZTX1ZFUlNJT05fSU5GTyBWRVJTSU9OSU5GTworIEZJTEVWRVJTSU9OIFBZVkVSU0lPTjY0CisgUFJPRFVDVFZFUlNJT04gUFlWRVJTSU9ONjQKKyBGSUxFRkxBR1NNQVNLIDB4M2ZMCisjaWZkZWYgX0RFQlVHCisgRklMRUZMQUdTIFZTX0ZGX0RFQlVHCisjZWxzZQorIEZJTEVGTEFHUyAweDBMCisjZW5kaWYKKyBGSUxFT1MgVk9TX19XSU5ET1dTMzIKKyBGSUxFVFlQRSBWRlRfQVBQCisgRklMRVNVQlRZUEUgMHgwTAorQkVHSU4KKyAgICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iCisgICAgQkVHSU4KKyAgICAgICAgQkxPQ0sgIjAwMDAwNGIwIgorICAgICAgICBCRUdJTgorICAgICAgICAgICAgVkFMVUUgIkNvbXBhbnlOYW1lIiwgUFlUSE9OX0NPTVBBTlkgIlwwIgorICAgICAgICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJQeXRob25cMCIKKyAgICAgICAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsIFBZVEhPTl9WRVJTSU9OCisgICAgICAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgIlB5dGhvbiBDb25zb2xlXDAiCisgICAgICAgICAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCBQWVRIT05fQ09QWVJJR0hUICJcMCIKKyAgICAgICAgICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwgInB5dGhvbiIgUFlUSE9OX0RFQlVHX0VYVCAiLmV4ZVwwIgorICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgIlB5dGhvblwwIgorICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KKyAgICAgICAgRU5ECisgICAgRU5ECisgICAgQkxPQ0sgIlZhckZpbGVJbmZvIgorICAgIEJFR0lOCisgICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4MCwgMTIwMAorICAgIEVORAorRU5ECmRpZmYgLS1naXQgYS9QQy9weXRob25fbnQucmMgYi9QQy9weXRob25fbnQucmMKaW5kZXggMGZiZGJlMC4uZmFjNjEwNSAxMDA2NDQKLS0tIGEvUEMvcHl0aG9uX250LnJjCisrKyBiL1BDL3B5dGhvbl9udC5yYwpAQCAtMSwzMyArMSwxMSBAQAogLy8gUmVzb3VyY2Ugc2NyaXB0IGZvciBQeXRob24gY29yZSBETEwuCi0vLyBDdXJyZW50bHkgb25seSBob2xkcyB2ZXJzaW9uIGluZm9ybWF0aW9uLgotLy8KLSNpbmNsdWRlICJ3aW52ZXIuaCIKIAotI2RlZmluZSBNU19XSU5ET1dTCi0jaW5jbHVkZSAibW9kc3VwcG9ydC5oIgotI2luY2x1ZGUgInBhdGNobGV2ZWwuaCIKLSNpZmRlZiBfREVCVUcKLSMgICBpbmNsdWRlICJweXRob25udF9yY19kLmgiCi0jZWxzZQotIyAgIGluY2x1ZGUgInB5dGhvbm50X3JjLmgiCi0jZW5kaWYKKyNpbmNsdWRlICJweXRob25fdmVyX3JjLmgiCiAKLS8qIGUuZy4sIDMuMy4wYTEKLSAqIFBZX1ZFUlNJT04gY29tZXMgZnJvbSBwYXRjaGV2ZWwuaAotICovCi0jZGVmaW5lIFBZVEhPTl9WRVJTSU9OIFBZX1ZFUlNJT04gIlwwIgotCi0vKiA2NC1iaXQgdmVyc2lvbiBudW1iZXIgYXMgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgNCAxNi1iaXQgaW50cyAqLwotI2lmIFBZX01JQ1JPX1ZFUlNJT04gPiA2NAotIyAgIGVycm9yICJQWV9NSUNST19WRVJTSU9OID4gNjQiCi0jZW5kaWYKLSNpZiBQWV9SRUxFQVNFX0xFVkVMID4gOTkKLSMgICBlcnJvciAiUFlfUkVMRUFTRV9MRVZFTCA+IDk5IgotI2VuZGlmCi0jaWYgUFlfUkVMRUFTRV9TRVJJQUwgPiA5Ci0jICAgZXJyb3IgIlBZX1JFTEVBU0VfU0VSSUFMID4gOSIKLSNlbmRpZgotI2RlZmluZSBQWVZFUlNJT042NCBQWV9NQUpPUl9WRVJTSU9OLCBQWV9NSU5PUl9WRVJTSU9OLCBGSUVMRDMsIFBZVEhPTl9BUElfVkVSU0lPTgorLy8gSW5jbHVkZSB0aGUgbWFuaWZlc3QgZmlsZSB0aGF0IGluZGljYXRlcyB3ZSBzdXBwb3J0IGFsbAorLy8gY3VycmVudCB2ZXJzaW9ucyBvZiBXaW5kb3dzLgorI2luY2x1ZGUgPHdpbnVzZXIuaD4KKzIgUlRfTUFOSUZFU1QgInB5dGhvbi5tYW5pZmVzdCIKIAogLy8gU3RyaW5nIFRhYmxlcwogU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQEAgLTQ1LDIzICsyMywyMyBAQAogIFBST0RVQ1RWRVJTSU9OIFBZVkVSU0lPTjY0CiAgRklMRUZMQUdTTUFTSyAweDNmTAogI2lmZGVmIF9ERUJVRwotIEZJTEVGTEFHUyAweDFMCisgRklMRUZMQUdTIFZTX0ZGX0RFQlVHCiAjZWxzZQogIEZJTEVGTEFHUyAweDBMCiAjZW5kaWYKLSBGSUxFT1MgMHg0MDAwNEwKLSBGSUxFVFlQRSAweDFMCisgRklMRU9TIFZPU19fV0lORE9XUzMyCisgRklMRVRZUEUgVkZUX0RMTAogIEZJTEVTVUJUWVBFIDB4MEwKIEJFR0lOCiAgICAgQkxPQ0sgIlN0cmluZ0ZpbGVJbmZvIgogICAgIEJFR0lOCiAgICAgICAgIEJMT0NLICIwMDAwMDRiMCIKICAgICAgICAgQkVHSU4KLSAgICAgICAgICAgIFZBTFVFICJDb21wYW55TmFtZSIsICJQeXRob24gU29mdHdhcmUgRm91bmRhdGlvblwwIgorICAgICAgICAgICAgVkFMVUUgIkNvbXBhbnlOYW1lIiwgUFlUSE9OX0NPTVBBTlkgIlwwIgogICAgICAgICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJQeXRob24gQ29yZVwwIgogICAgICAgICAgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KICAgICAgICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAiUHl0aG9uIERMTFwwIgotICAgICAgICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgIkNvcHlyaWdodCCpIDIwMDEtMjAxNiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4gQ29weXJpZ2h0IKkgMjAwMCBCZU9wZW4uY29tLiBDb3B5cmlnaHQgqSAxOTk1LTIwMDEgQ05SSS4gQ29weXJpZ2h0IKkgMTk5MS0xOTk1IFNNQy5cMCIKKyAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsIFBZVEhPTl9DT1BZUklHSFQgIlwwIgogICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCBQWVRIT05fRExMX05BTUUgIlwwIgogICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgIlB5dGhvblwwIgogICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KZGlmZiAtLWdpdCBhL1BDL3B5dGhvbl92ZXJfcmMuaCBiL1BDL3B5dGhvbl92ZXJfcmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWQxOGVmCi0tLSAvZGV2L251bGwKKysrIGIvUEMvcHl0aG9uX3Zlcl9yYy5oCkBAIC0wLDAgKzEsMzUgQEAKKy8vIFJlc291cmNlIHNjcmlwdCBmb3IgUHl0aG9uIGNvcmUgRExMLgorLy8gQ3VycmVudGx5IG9ubHkgaG9sZHMgdmVyc2lvbiBpbmZvcm1hdGlvbi4KKy8vCisjaW5jbHVkZSAid2ludmVyLmgiCisKKyNkZWZpbmUgUFlUSE9OX0NPTVBBTlkgICAiUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24iCisjZGVmaW5lIFBZVEhPTl9DT1BZUklHSFQgIkNvcHlyaWdodCBceEE5IDIwMDEtMjAxNiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4gQ29weXJpZ2h0IFx4QTkgMjAwMCBCZU9wZW4uY29tLiBDb3B5cmlnaHQgXHhBOSAxOTk1LTIwMDEgQ05SSS4gQ29weXJpZ2h0IFx4QTkgMTk5MS0xOTk1IFNNQy4iCisKKyNkZWZpbmUgTVNfV0lORE9XUworI2luY2x1ZGUgIm1vZHN1cHBvcnQuaCIKKyNpbmNsdWRlICJwYXRjaGxldmVsLmgiCisjaWZkZWYgX0RFQlVHCisjICAgaW5jbHVkZSAicHl0aG9ubnRfcmNfZC5oIgorIyAgIGRlZmluZSBQWVRIT05fREVCVUdfRVhUICJfZCIKKyNlbHNlCisjICAgaW5jbHVkZSAicHl0aG9ubnRfcmMuaCIKKyMgICBkZWZpbmUgUFlUSE9OX0RFQlVHX0VYVAorI2VuZGlmCisKKy8qIGUuZy4sIDMuMy4wYTEKKyAqIFBZX1ZFUlNJT04gY29tZXMgZnJvbSBwYXRjaGxldmVsLmgKKyAqLworI2RlZmluZSBQWVRIT05fVkVSU0lPTiBQWV9WRVJTSU9OICJcMCIKKworLyogNjQtYml0IHZlcnNpb24gbnVtYmVyIGFzIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIDQgMTYtYml0IGludHMgKi8KKyNpZiBQWV9NSUNST19WRVJTSU9OID4gNjQKKyMgICBlcnJvciAiUFlfTUlDUk9fVkVSU0lPTiA+IDY0IgorI2VuZGlmCisjaWYgUFlfUkVMRUFTRV9MRVZFTCA+IDk5CisjICAgZXJyb3IgIlBZX1JFTEVBU0VfTEVWRUwgPiA5OSIKKyNlbmRpZgorI2lmIFBZX1JFTEVBU0VfU0VSSUFMID4gOQorIyAgIGVycm9yICJQWV9SRUxFQVNFX1NFUklBTCA+IDkiCisjZW5kaWYKKyNkZWZpbmUgUFlWRVJTSU9ONjQgUFlfTUFKT1JfVkVSU0lPTiwgUFlfTUlOT1JfVkVSU0lPTiwgRklFTEQzLCBQWVRIT05fQVBJX1ZFUlNJT04KZGlmZiAtLWdpdCBhL1BDL3JlYWRtZS50eHQgYi9QQy9yZWFkbWUudHh0CmluZGV4IDk5MDA2YmYuLjBhOTZkMjYgMTAwNjQ0Ci0tLSBhL1BDL3JlYWRtZS50eHQKKysrIGIvUEMvcmVhZG1lLnR4dApAQCAtNzIsMTEgKzcyLDYgQEAKICAgICAgICAgICAgICAgIHZhcmlvdXMgRExMcywgdG8gYXZvaWQgcnVuLXRpbWUgcmVsb2NhdGlvbi4KIAogCi1MZWdhY3kgc3VwcG9ydCBmb3Igb2xkZXIgdmVyc2lvbnMgb2YgVmlzdWFsIFN0dWRpbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLVRoZSBzdWJkaXJlY3RvcmllcyBWQzYsIFZTNy4xIGFuZCBWUzguMCBjb250YWluIGxlZ2FjeSBzdXBwb3J0IG9sZGVyCi12ZXJzaW9ucyBvZiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpby4gU2VlIFBDYnVpbGQvcmVhZG1lLnR4dC4KLQogTm90ZSBmb3IgV2luZG93cyAzLnggYW5kIERPUyB1c2VycwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCmRpZmYgLS1naXQgYS9QQy90ZXN0cHkucHkgYi9QQy90ZXN0cHkucHkKaW5kZXggMzZmOTIwMC4uNGVmM2Q0ZiAxMDA2NDQKLS0tIGEvUEMvdGVzdHB5LnB5CisrKyBiL1BDL3Rlc3RweS5weQpAQCAtMTgsOCArMTgsNiBAQAogICBhIFBDLCB5b3Ugc2hvdWxkIGFkZCB0aGUgZG9zXzh4MyBkaXJlY3RvcnkgdG8geW91ciBQWVRIT05QQVRILiIiIikKICAgICBzeXMuZXhpdCgxKQogCi1pbXBvcnQgb3MKLQogZm9yIGRpciBpbiBzeXMucGF0aDoKICAgICBmaWxlID0gb3MucGF0aC5qb2luKGRpciwgIm9zLnB5IikKICAgICBpZiBvcy5wYXRoLmlzZmlsZShmaWxlKToKZGlmZiAtLWdpdCBhL1BDL3dpbnJlZy5jIGIvUEMvd2lucmVnLmMKaW5kZXggMTlkNWE3MC4uMzMxMzIwMiAxMDA2NDQKLS0tIGEvUEMvd2lucmVnLmMKKysrIGIvUEMvd2lucmVnLmMKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJ3aW5kb3dzLmgiCiAKIHN0YXRpYyBCT09MIFB5SEtFWV9Bc0hLRVkoUHlPYmplY3QgKm9iLCBIS0VZICpwUmVzLCBCT09MIGJOb25lT0spOworc3RhdGljIEJPT0wgY2xpbmljX0hLRVlfY29udmVydGVyKFB5T2JqZWN0ICpvYiwgdm9pZCAqcCk7CiBzdGF0aWMgUHlPYmplY3QgKlB5SEtFWV9Gcm9tSEtFWShIS0VZIGgpOwogc3RhdGljIEJPT0wgUHlIS0VZX0Nsb3NlKFB5T2JqZWN0ICpvYkhhbmRsZSk7CiAKQEAgLTQ2LDEwICs0NywxMiBAQAogIkRlbGV0ZVZhbHVlKCkgLSBSZW1vdmVzIGEgbmFtZWQgdmFsdWUgZnJvbSB0aGUgc3BlY2lmaWVkIHJlZ2lzdHJ5IGtleS5cbiIKICJFbnVtS2V5KCkgLSBFbnVtZXJhdGVzIHN1YmtleXMgb2YgdGhlIHNwZWNpZmllZCBvcGVuIHJlZ2lzdHJ5IGtleS5cbiIKICJFbnVtVmFsdWUoKSAtIEVudW1lcmF0ZXMgdmFsdWVzIG9mIHRoZSBzcGVjaWZpZWQgb3BlbiByZWdpc3RyeSBrZXkuXG4iCi0iRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzKCkgLSBFeHBhbmQgdGhlIGVudiBzdHJpbmdzIGluIGEgUkVHX0VYUEFORF9TWiBzdHJpbmcuXG4iCisiRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzKCkgLSBFeHBhbmQgdGhlIGVudiBzdHJpbmdzIGluIGEgUkVHX0VYUEFORF9TWlxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLlxuIgogIkZsdXNoS2V5KCkgLSBXcml0ZXMgYWxsIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBzcGVjaWZpZWQga2V5IHRvIHRoZSByZWdpc3RyeS5cbiIKLSJMb2FkS2V5KCkgLSBDcmVhdGVzIGEgc3Via2V5IHVuZGVyIEhLRVlfVVNFUiBvciBIS0VZX0xPQ0FMX01BQ0hJTkUgYW5kIHN0b3Jlc1xuIgotIiAgICAgICAgICAgIHJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvbiBmcm9tIGEgc3BlY2lmaWVkIGZpbGUgaW50byB0aGF0IHN1YmtleS5cbiIKKyJMb2FkS2V5KCkgLSBDcmVhdGVzIGEgc3Via2V5IHVuZGVyIEhLRVlfVVNFUiBvciBIS0VZX0xPQ0FMX01BQ0hJTkUgYW5kXG4iCisiICAgICAgICAgICAgc3RvcmVzIHJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvbiBmcm9tIGEgc3BlY2lmaWVkIGZpbGUgaW50byB0aGF0XG4iCisiICAgICAgICAgICAgc3Via2V5LlxuIgogIk9wZW5LZXkoKSAtIE9wZW5zIHRoZSBzcGVjaWZpZWQga2V5LlxuIgogIk9wZW5LZXlFeCgpIC0gQWxpYXMgb2YgT3BlbktleSgpLlxuIgogIlF1ZXJ5VmFsdWUoKSAtIFJldHJpZXZlcyB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSB1bm5hbWVkIHZhbHVlIGZvciBhXG4iCkBAIC03MSwyOTkgKzc0LDYgQEAKICJ0byBzZWUgd2hhdCBjb25zdGFudHMgYXJlIHVzZWQsIGFuZCB3aGVyZS4iKTsKIAogCi1QeURvY19TVFJWQVIoQ2xvc2VLZXlfZG9jLAotIkNsb3NlS2V5KGhrZXkpXG4iCi0iQ2xvc2VzIGEgcHJldmlvdXNseSBvcGVuZWQgcmVnaXN0cnkga2V5LlxuIgotIlxuIgotIlRoZSBoa2V5IGFyZ3VtZW50IHNwZWNpZmllcyBhIHByZXZpb3VzbHkgb3BlbmVkIGtleS5cbiIKLSJcbiIKLSJOb3RlIHRoYXQgaWYgdGhlIGtleSBpcyBub3QgY2xvc2VkIHVzaW5nIHRoaXMgbWV0aG9kLCBpdCB3aWxsIGJlXG4iCi0iY2xvc2VkIHdoZW4gdGhlIGhrZXkgb2JqZWN0IGlzIGRlc3Ryb3llZCBieSBQeXRob24uIik7Ci0KLVB5RG9jX1NUUlZBUihDb25uZWN0UmVnaXN0cnlfZG9jLAotIkNvbm5lY3RSZWdpc3RyeShjb21wdXRlcl9uYW1lLCBrZXkpIC0+IGtleVxuIgotIkVzdGFibGlzaGVzIGEgY29ubmVjdGlvbiB0byBhIHByZWRlZmluZWQgcmVnaXN0cnkgaGFuZGxlIG9uIGFub3RoZXIgY29tcHV0ZXIuXG4iCi0iXG4iCi0iY29tcHV0ZXJfbmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIGNvbXB1dGVyLCBvZiB0aGUgZm9ybSBcXFxcY29tcHV0ZXJuYW1lLlxuIgotIiAgICAgICAgICAgICAgSWYgTm9uZSwgdGhlIGxvY2FsIGNvbXB1dGVyIGlzIHVzZWQuXG4iCi0ia2V5IGlzIHRoZSBwcmVkZWZpbmVkIGhhbmRsZSB0byBjb25uZWN0IHRvLlxuIgotIlxuIgotIlRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS5cbiIKLSJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKLQotUHlEb2NfU1RSVkFSKENyZWF0ZUtleV9kb2MsCi0iQ3JlYXRlS2V5KGtleSwgc3ViX2tleSkgLT4ga2V5XG4iCi0iQ3JlYXRlcyBvciBvcGVucyB0aGUgc3BlY2lmaWVkIGtleS5cbiIKLSJcbiIKLSJrZXkgaXMgYW4gYWxyZWFkeSBvcGVuIGtleSwgb3Igb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0ic3ViX2tleSBpcyBhIHN0cmluZyB0aGF0IG5hbWVzIHRoZSBrZXkgdGhpcyBtZXRob2Qgb3BlbnMgb3IgY3JlYXRlcy5cbiIKLSJcbiIKLSJJZiBrZXkgaXMgb25lIG9mIHRoZSBwcmVkZWZpbmVkIGtleXMsIHN1Yl9rZXkgbWF5IGJlIE5vbmUuIEluIHRoYXQgY2FzZSxcbiIKLSJ0aGUgaGFuZGxlIHJldHVybmVkIGlzIHRoZSBzYW1lIGtleSBoYW5kbGUgcGFzc2VkIGluIHRvIHRoZSBmdW5jdGlvbi5cbiIKLSJcbiIKLSJJZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzLCB0aGlzIGZ1bmN0aW9uIG9wZW5zIHRoZSBleGlzdGluZyBrZXkuXG4iCi0iXG4iCi0iVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LlxuIgotIklmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOwotCi1QeURvY19TVFJWQVIoQ3JlYXRlS2V5RXhfZG9jLAotIkNyZWF0ZUtleUV4KGtleSwgc3ViX2tleSwgcmVzZXJ2ZWQ9MCwgYWNjZXNzPUtFWV9XUklURSkgLT4ga2V5XG4iCi0iQ3JlYXRlcyBvciBvcGVucyB0aGUgc3BlY2lmaWVkIGtleS5cbiIKLSJcbiIKLSJrZXkgaXMgYW4gYWxyZWFkeSBvcGVuIGtleSwgb3Igb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHNcbiIKLSJzdWJfa2V5IGlzIGEgc3RyaW5nIHRoYXQgbmFtZXMgdGhlIGtleSB0aGlzIG1ldGhvZCBvcGVucyBvciBjcmVhdGVzLlxuIgotInJlc2VydmVkIGlzIGEgcmVzZXJ2ZWQgaW50ZWdlciwgYW5kIG11c3QgYmUgemVyby4gIERlZmF1bHQgaXMgemVyby5cbiIKLSJhY2Nlc3MgaXMgYW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBhbiBhY2Nlc3MgbWFzayB0aGF0IGRlc2NyaWJlcyB0aGUgXG4iCi0iICAgICAgIGRlc2lyZWQgc2VjdXJpdHkgYWNjZXNzIGZvciB0aGUga2V5LiBEZWZhdWx0IGlzIEtFWV9XUklURS5cbiIKLSJcbiIKLSJJZiBrZXkgaXMgb25lIG9mIHRoZSBwcmVkZWZpbmVkIGtleXMsIHN1Yl9rZXkgbWF5IGJlIE5vbmUuIEluIHRoYXQgY2FzZSxcbiIKLSJ0aGUgaGFuZGxlIHJldHVybmVkIGlzIHRoZSBzYW1lIGtleSBoYW5kbGUgcGFzc2VkIGluIHRvIHRoZSBmdW5jdGlvbi5cbiIKLSJcbiIKLSJJZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzLCB0aGlzIGZ1bmN0aW9uIG9wZW5zIHRoZSBleGlzdGluZyBrZXlcbiIKLSJcbiIKLSJUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuXG4iCi0iSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7Ci0KLVB5RG9jX1NUUlZBUihEZWxldGVLZXlfZG9jLAotIkRlbGV0ZUtleShrZXksIHN1Yl9rZXkpXG4iCi0iRGVsZXRlcyB0aGUgc3BlY2lmaWVkIGtleS5cbiIKLSJcbiIKLSJrZXkgaXMgYW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgotInN1Yl9rZXkgaXMgYSBzdHJpbmcgdGhhdCBtdXN0IGJlIGEgc3Via2V5IG9mIHRoZSBrZXkgaWRlbnRpZmllZCBieSB0aGUga2V5XG4iCi0iICAgICAgICBwYXJhbWV0ZXIuIFRoaXMgdmFsdWUgbXVzdCBub3QgYmUgTm9uZSwgYW5kIHRoZSBrZXkgbWF5IG5vdCBoYXZlXG4iCi0iICAgICAgICBzdWJrZXlzLlxuIgotIlxuIgotIlRoaXMgbWV0aG9kIGNhbiBub3QgZGVsZXRlIGtleXMgd2l0aCBzdWJrZXlzLlxuIgotIlxuIgotIklmIHRoZSBmdW5jdGlvbiBzdWNjZWVkcywgdGhlIGVudGlyZSBrZXksIGluY2x1ZGluZyBhbGwgb2YgaXRzIHZhbHVlcyxcbiIKLSJpcyByZW1vdmVkLiAgSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7Ci0KLVB5RG9jX1NUUlZBUihEZWxldGVLZXlFeF9kb2MsCi0iRGVsZXRlS2V5RXgoa2V5LCBzdWJfa2V5LCBhY2Nlc3M9S0VZX1dPVzY0XzY0S0VZLCByZXNlcnZlZD0wKVxuIgotIkRlbGV0ZXMgdGhlIHNwZWNpZmllZCBrZXkgKDY0LWJpdCBPUyBvbmx5KS5cbiIKLSJcbiIKLSJrZXkgaXMgYW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgotInN1Yl9rZXkgaXMgYSBzdHJpbmcgdGhhdCBtdXN0IGJlIGEgc3Via2V5IG9mIHRoZSBrZXkgaWRlbnRpZmllZCBieSB0aGUga2V5XG4iCi0iICAgICAgICBwYXJhbWV0ZXIuIFRoaXMgdmFsdWUgbXVzdCBub3QgYmUgTm9uZSwgYW5kIHRoZSBrZXkgbWF5IG5vdCBoYXZlXG4iCi0iICAgICAgICBzdWJrZXlzLlxuIgotInJlc2VydmVkIGlzIGEgcmVzZXJ2ZWQgaW50ZWdlciwgYW5kIG11c3QgYmUgemVyby4gIERlZmF1bHQgaXMgemVyby5cbiIKLSJhY2Nlc3MgaXMgYW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBhbiBhY2Nlc3MgbWFzayB0aGF0IGRlc2NyaWJlcyB0aGUgXG4iCi0iICAgICAgIGRlc2lyZWQgc2VjdXJpdHkgYWNjZXNzIGZvciB0aGUga2V5LiBEZWZhdWx0IGlzIEtFWV9XT1c2NF82NEtFWS5cbiIKLSJcbiIKLSJUaGlzIG1ldGhvZCBjYW4gbm90IGRlbGV0ZSBrZXlzIHdpdGggc3Via2V5cy5cbiIKLSJcbiIKLSJJZiB0aGUgZnVuY3Rpb24gc3VjY2VlZHMsIHRoZSBlbnRpcmUga2V5LCBpbmNsdWRpbmcgYWxsIG9mIGl0cyB2YWx1ZXMsXG4iCi0iaXMgcmVtb3ZlZC4gIElmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLlxuIgotIk9uIHVuc3VwcG9ydGVkIFdpbmRvd3MgdmVyc2lvbnMsIE5vdEltcGxlbWVudGVkRXJyb3IgaXMgcmFpc2VkLiIpOwotCi1QeURvY19TVFJWQVIoRGVsZXRlVmFsdWVfZG9jLAotIkRlbGV0ZVZhbHVlKGtleSwgdmFsdWUpXG4iCi0iUmVtb3ZlcyBhIG5hbWVkIHZhbHVlIGZyb20gYSByZWdpc3RyeSBrZXkuXG4iCi0iXG4iCi0ia2V5IGlzIGFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKLSJ2YWx1ZSBpcyBhIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHZhbHVlIHRvIHJlbW92ZS4iKTsKLQotUHlEb2NfU1RSVkFSKEVudW1LZXlfZG9jLAotIkVudW1LZXkoa2V5LCBpbmRleCkgLT4gc3RyaW5nXG4iCi0iRW51bWVyYXRlcyBzdWJrZXlzIG9mIGFuIG9wZW4gcmVnaXN0cnkga2V5LlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0iaW5kZXggaXMgYW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIGluZGV4IG9mIHRoZSBrZXkgdG8gcmV0cmlldmUuXG4iCi0iXG4iCi0iVGhlIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgbmFtZSBvZiBvbmUgc3Via2V5IGVhY2ggdGltZSBpdCBpcyBjYWxsZWQuXG4iCi0iSXQgaXMgdHlwaWNhbGx5IGNhbGxlZCByZXBlYXRlZGx5IHVudGlsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzXG4iCi0icmFpc2VkLCBpbmRpY2F0aW5nIG5vIG1vcmUgdmFsdWVzIGFyZSBhdmFpbGFibGUuIik7Ci0KLVB5RG9jX1NUUlZBUihFbnVtVmFsdWVfZG9jLAotIkVudW1WYWx1ZShrZXksIGluZGV4KSAtPiB0dXBsZVxuIgotIkVudW1lcmF0ZXMgdmFsdWVzIG9mIGFuIG9wZW4gcmVnaXN0cnkga2V5LlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0iaW5kZXggaXMgYW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIGluZGV4IG9mIHRoZSB2YWx1ZSB0byByZXRyaWV2ZS5cbiIKLSJcbiIKLSJUaGUgZnVuY3Rpb24gcmV0cmlldmVzIHRoZSBuYW1lIG9mIG9uZSBzdWJrZXkgZWFjaCB0aW1lIGl0IGlzIGNhbGxlZC5cbiIKLSJJdCBpcyB0eXBpY2FsbHkgY2FsbGVkIHJlcGVhdGVkbHksIHVudGlsIGFuIE9TRXJyb3IgZXhjZXB0aW9uXG4iCi0iaXMgcmFpc2VkLCBpbmRpY2F0aW5nIG5vIG1vcmUgdmFsdWVzLlxuIgotIlxuIgotIlRoZSByZXN1bHQgaXMgYSB0dXBsZSBvZiAzIGl0ZW1zOlxuIgotInZhbHVlX25hbWUgaXMgYSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSB2YWx1ZS5cbiIKLSJ2YWx1ZV9kYXRhIGlzIGFuIG9iamVjdCB0aGF0IGhvbGRzIHRoZSB2YWx1ZSBkYXRhLCBhbmQgd2hvc2UgdHlwZSBkZXBlbmRzXG4iCi0iICAgICAgICAgICBvbiB0aGUgdW5kZXJseWluZyByZWdpc3RyeSB0eXBlLlxuIgotImRhdGFfdHlwZSBpcyBhbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgdHlwZSBvZiB0aGUgdmFsdWUgZGF0YS4iKTsKLQotUHlEb2NfU1RSVkFSKEV4cGFuZEVudmlyb25tZW50U3RyaW5nc19kb2MsCi0iRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzKHN0cmluZykgLT4gc3RyaW5nXG4iCi0iRXhwYW5kIGVudmlyb25tZW50IHZhcnMuXG4iKTsKLQotUHlEb2NfU1RSVkFSKEZsdXNoS2V5X2RvYywKLSJGbHVzaEtleShrZXkpXG4iCi0iV3JpdGVzIGFsbCB0aGUgYXR0cmlidXRlcyBvZiBhIGtleSB0byB0aGUgcmVnaXN0cnkuXG4iCi0iXG4iCi0ia2V5IGlzIGFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKLSJcbiIKLSJJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGNhbGwgRmx1c2hLZXkgdG8gY2hhbmdlIGEga2V5LiAgUmVnaXN0cnkgY2hhbmdlcyBhcmVcbiIKLSJmbHVzaGVkIHRvIGRpc2sgYnkgdGhlIHJlZ2lzdHJ5IHVzaW5nIGl0cyBsYXp5IGZsdXNoZXIuICBSZWdpc3RyeSBjaGFuZ2VzIGFyZVxuIgotImFsc28gZmx1c2hlZCB0byBkaXNrIGF0IHN5c3RlbSBzaHV0ZG93bi4gIFVubGlrZSBDbG9zZUtleSgpLCB0aGUgRmx1c2hLZXkoKVxuIgotIm1ldGhvZCByZXR1cm5zIG9ubHkgd2hlbiBhbGwgdGhlIGRhdGEgaGFzIGJlZW4gd3JpdHRlbiB0byB0aGUgcmVnaXN0cnkuXG4iCi0iXG4iCi0iQW4gYXBwbGljYXRpb24gc2hvdWxkIG9ubHkgY2FsbCBGbHVzaEtleSgpIGlmIGl0IHJlcXVpcmVzIGFic29sdXRlIGNlcnRhaW50eVxuIgotInRoYXQgcmVnaXN0cnkgY2hhbmdlcyBhcmUgb24gZGlzay4gIElmIHlvdSBkb24ndCBrbm93IHdoZXRoZXIgYSBGbHVzaEtleSgpXG4iCi0iY2FsbCBpcyByZXF1aXJlZCwgaXQgcHJvYmFibHkgaXNuJ3QuIik7Ci0KLVB5RG9jX1NUUlZBUihMb2FkS2V5X2RvYywKLSJMb2FkS2V5KGtleSwgc3ViX2tleSwgZmlsZV9uYW1lKVxuIgotIkNyZWF0ZXMgYSBzdWJrZXkgdW5kZXIgdGhlIHNwZWNpZmllZCBrZXkgYW5kIHN0b3JlcyByZWdpc3RyYXRpb24gaW5mb3JtYXRpb25cbiIKLSJmcm9tIGEgc3BlY2lmaWVkIGZpbGUgaW50byB0aGF0IHN1YmtleS5cbiIKLSJcbiIKLSJrZXkgaXMgYW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgotInN1Yl9rZXkgaXMgYSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSBzdWJfa2V5IHRvIGxvYWQuXG4iCi0iZmlsZV9uYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIGxvYWQgcmVnaXN0cnkgZGF0YSBmcm9tLiAgVGhpcyBmaWxlIG11c3RcbiIKLSIgICAgICAgICAgaGF2ZSBiZWVuIGNyZWF0ZWQgd2l0aCB0aGUgU2F2ZUtleSgpIGZ1bmN0aW9uLiAgVW5kZXIgdGhlIGZpbGVcbiIKLSIgICAgICAgICAgYWxsb2NhdGlvbiB0YWJsZSAoRkFUKSBmaWxlIHN5c3RlbSwgdGhlIGZpbGVuYW1lIG1heSBub3QgaGF2ZSBhblxuIgotIiAgICAgICAgICBleHRlbnNpb24uXG4iCi0iXG4iCi0iQSBjYWxsIHRvIExvYWRLZXkoKSBmYWlscyBpZiB0aGUgY2FsbGluZyBwcm9jZXNzIGRvZXMgbm90IGhhdmUgdGhlXG4iCi0iU0VfUkVTVE9SRV9QUklWSUxFR0UgcHJpdmlsZWdlLlxuIgotIlxuIgotIklmIGtleSBpcyBhIGhhbmRsZSByZXR1cm5lZCBieSBDb25uZWN0UmVnaXN0cnkoKSwgdGhlbiB0aGUgcGF0aCBzcGVjaWZpZWRcbiIKLSJpbiBmaWxlTmFtZSBpcyByZWxhdGl2ZSB0byB0aGUgcmVtb3RlIGNvbXB1dGVyLlxuIgotIlxuIgotIlRoZSBkb2NzIGltcGx5IGtleSBtdXN0IGJlIGluIHRoZSBIS0VZX1VTRVIgb3IgSEtFWV9MT0NBTF9NQUNISU5FIHRyZWUiKTsKLQotUHlEb2NfU1RSVkFSKE9wZW5LZXlfZG9jLAotIk9wZW5LZXkoa2V5LCBzdWJfa2V5LCByZXNlcnZlZD0wLCBhY2Nlc3M9S0VZX1JFQUQpIC0+IGtleVxuIgotIk9wZW5zIHRoZSBzcGVjaWZpZWQga2V5LlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0ic3ViX2tleSBpcyBhIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHN1Yl9rZXkgdG8gb3Blbi5cbiIKLSJyZXNlcnZlZCBpcyBhIHJlc2VydmVkIGludGVnZXIsIGFuZCBtdXN0IGJlIHplcm8uICBEZWZhdWx0IGlzIHplcm8uXG4iCi0iYWNjZXNzIGlzIGFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgYW4gYWNjZXNzIG1hc2sgdGhhdCBkZXNjcmliZXMgdGhlIGRlc2lyZWRcbiIKLSIgICAgICAgc2VjdXJpdHkgYWNjZXNzIGZvciB0aGUga2V5LiAgRGVmYXVsdCBpcyBLRVlfUkVBRFxuIgotIlxuIgotIlRoZSByZXN1bHQgaXMgYSBuZXcgaGFuZGxlIHRvIHRoZSBzcGVjaWZpZWQga2V5XG4iCi0iSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7Ci0KLVB5RG9jX1NUUlZBUihPcGVuS2V5RXhfZG9jLCAiU2VlIE9wZW5LZXkoKSIpOwotCi1QeURvY19TVFJWQVIoUXVlcnlJbmZvS2V5X2RvYywKLSJRdWVyeUluZm9LZXkoa2V5KSAtPiB0dXBsZVxuIgotIlJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBrZXkuXG4iCi0iXG4iCi0ia2V5IGlzIGFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKLSJcbiIKLSJUaGUgcmVzdWx0IGlzIGEgdHVwbGUgb2YgMyBpdGVtczoiCi0iQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIG51bWJlciBvZiBzdWIga2V5cyB0aGlzIGtleSBoYXMuXG4iCi0iQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIG51bWJlciBvZiB2YWx1ZXMgdGhpcyBrZXkgaGFzLlxuIgotIkFuIGludGVnZXIgdGhhdCBpZGVudGlmaWVzIHdoZW4gdGhlIGtleSB3YXMgbGFzdCBtb2RpZmllZCAoaWYgYXZhaWxhYmxlKVxuIgotIiBhcyAxMDAncyBvZiBuYW5vc2Vjb25kcyBzaW5jZSBKYW4gMSwgMTYwMC4iKTsKLQotUHlEb2NfU1RSVkFSKFF1ZXJ5VmFsdWVfZG9jLAotIlF1ZXJ5VmFsdWUoa2V5LCBzdWJfa2V5KSAtPiBzdHJpbmdcbiIKLSJSZXRyaWV2ZXMgdGhlIHVubmFtZWQgdmFsdWUgZm9yIGEga2V5LlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0ic3ViX2tleSBpcyBhIHN0cmluZyB0aGF0IGhvbGRzIHRoZSBuYW1lIG9mIHRoZSBzdWJrZXkgd2l0aCB3aGljaCB0aGUgdmFsdWVcbiIKLSIgICAgICAgIGlzIGFzc29jaWF0ZWQuICBJZiB0aGlzIHBhcmFtZXRlciBpcyBOb25lIG9yIGVtcHR5LCB0aGUgZnVuY3Rpb25cbiIKLSIgICAgICAgIHJldHJpZXZlcyB0aGUgdmFsdWUgc2V0IGJ5IHRoZSBTZXRWYWx1ZSgpIG1ldGhvZCBmb3IgdGhlIGtleVxuIgotIiAgICAgICAgaWRlbnRpZmllZCBieSBrZXkuIgotIlxuIgotIlZhbHVlcyBpbiB0aGUgcmVnaXN0cnkgaGF2ZSBuYW1lLCB0eXBlLCBhbmQgZGF0YSBjb21wb25lbnRzLiBUaGlzIG1ldGhvZFxuIgotInJldHJpZXZlcyB0aGUgZGF0YSBmb3IgYSBrZXkncyBmaXJzdCB2YWx1ZSB0aGF0IGhhcyBhIE5VTEwgbmFtZS5cbiIKLSJCdXQgdGhlIHVuZGVybHlpbmcgQVBJIGNhbGwgZG9lc24ndCByZXR1cm4gdGhlIHR5cGUsIExhbWUgTGFtZSBMYW1lLCBET05UIFVTRSBUSElTISEhIik7Ci0KLVB5RG9jX1NUUlZBUihRdWVyeVZhbHVlRXhfZG9jLAotIlF1ZXJ5VmFsdWVFeChrZXksIHZhbHVlX25hbWUpIC0+ICh2YWx1ZSwgdHlwZV9pZClcbiIKLSJSZXRyaWV2ZXMgdGhlIHR5cGUgYW5kIGRhdGEgZm9yIGEgc3BlY2lmaWVkIHZhbHVlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIGFuXG4iCi0ib3BlbiByZWdpc3RyeSBrZXkuXG4iCi0iXG4iCi0ia2V5IGlzIGFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKLSJ2YWx1ZV9uYW1lIGlzIGEgc3RyaW5nIGluZGljYXRpbmcgdGhlIHZhbHVlIHRvIHF1ZXJ5Iik7Ci0KLVB5RG9jX1NUUlZBUihTYXZlS2V5X2RvYywKLSJTYXZlS2V5KGtleSwgZmlsZV9uYW1lKVxuIgotIlNhdmVzIHRoZSBzcGVjaWZpZWQga2V5LCBhbmQgYWxsIGl0cyBzdWJrZXlzIHRvIHRoZSBzcGVjaWZpZWQgZmlsZS5cbiIKLSJcbiIKLSJrZXkgaXMgYW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgotImZpbGVfbmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0byBzYXZlIHJlZ2lzdHJ5IGRhdGEgdG8uICBUaGlzIGZpbGUgY2Fubm90XG4iCi0iICAgICAgICAgIGFscmVhZHkgZXhpc3QuIElmIHRoaXMgZmlsZW5hbWUgaW5jbHVkZXMgYW4gZXh0ZW5zaW9uLCBpdCBjYW5ub3QgYmVcbiIKLSIgICAgICAgICAgdXNlZCBvbiBmaWxlIGFsbG9jYXRpb24gdGFibGUgKEZBVCkgZmlsZSBzeXN0ZW1zIGJ5IHRoZSBMb2FkS2V5KCksXG4iCi0iICAgICAgICAgIFJlcGxhY2VLZXkoKSBvciBSZXN0b3JlS2V5KCkgbWV0aG9kcy5cbiIKLSJcbiIKLSJJZiBrZXkgcmVwcmVzZW50cyBhIGtleSBvbiBhIHJlbW90ZSBjb21wdXRlciwgdGhlIHBhdGggZGVzY3JpYmVkIGJ5IGZpbGVfbmFtZVxuIgotImlzIHJlbGF0aXZlIHRvIHRoZSByZW1vdGUgY29tcHV0ZXIuXG4iCi0iXG4iCi0iVGhlIGNhbGxlciBvZiB0aGlzIG1ldGhvZCBtdXN0IHBvc3Nlc3MgdGhlIFNlQmFja3VwUHJpdmlsZWdlIHNlY3VyaXR5XG4iCi0icHJpdmlsZWdlLiAgVGhpcyBmdW5jdGlvbiBwYXNzZXMgTlVMTCBmb3Igc2VjdXJpdHlfYXR0cmlidXRlcyB0byB0aGUgQVBJLiIpOwotCi1QeURvY19TVFJWQVIoU2V0VmFsdWVfZG9jLAotIlNldFZhbHVlKGtleSwgc3ViX2tleSwgdHlwZSwgdmFsdWUpXG4iCi0iQXNzb2NpYXRlcyBhIHZhbHVlIHdpdGggYSBzcGVjaWZpZWQga2V5LlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0ic3ViX2tleSBpcyBhIHN0cmluZyB0aGF0IG5hbWVzIHRoZSBzdWJrZXkgd2l0aCB3aGljaCB0aGUgdmFsdWUgaXMgYXNzb2NpYXRlZC5cbiIKLSJ0eXBlIGlzIGFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGRhdGEuICBDdXJyZW50bHkgdGhpcyBtdXN0XG4iCi0iICAgICBiZSBSRUdfU1osIG1lYW5pbmcgb25seSBzdHJpbmdzIGFyZSBzdXBwb3J0ZWQuXG4iCi0idmFsdWUgaXMgYSBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG5ldyB2YWx1ZS5cbiIKLSJcbiIKLSJJZiB0aGUga2V5IHNwZWNpZmllZCBieSB0aGUgc3ViX2tleSBwYXJhbWV0ZXIgZG9lcyBub3QgZXhpc3QsIHRoZSBTZXRWYWx1ZVxuIgotImZ1bmN0aW9uIGNyZWF0ZXMgaXQuXG4iCi0iXG4iCi0iVmFsdWUgbGVuZ3RocyBhcmUgbGltaXRlZCBieSBhdmFpbGFibGUgbWVtb3J5LiBMb25nIHZhbHVlcyAobW9yZSB0aGFuXG4iCi0iMjA0OCBieXRlcykgc2hvdWxkIGJlIHN0b3JlZCBhcyBmaWxlcyB3aXRoIHRoZSBmaWxlbmFtZXMgc3RvcmVkIGluIFxuIgotInRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdHJ5LiAgVGhpcyBoZWxwcyB0aGUgcmVnaXN0cnkgcGVyZm9ybSBlZmZpY2llbnRseS5cbiIKLSJcbiIKLSJUaGUga2V5IGlkZW50aWZpZWQgYnkgdGhlIGtleSBwYXJhbWV0ZXIgbXVzdCBoYXZlIGJlZW4gb3BlbmVkIHdpdGhcbiIKLSJLRVlfU0VUX1ZBTFVFIGFjY2Vzcy4iKTsKLQotUHlEb2NfU1RSVkFSKFNldFZhbHVlRXhfZG9jLAotIlNldFZhbHVlRXgoa2V5LCB2YWx1ZV9uYW1lLCByZXNlcnZlZCwgdHlwZSwgdmFsdWUpXG4iCi0iU3RvcmVzIGRhdGEgaW4gdGhlIHZhbHVlIGZpZWxkIG9mIGFuIG9wZW4gcmVnaXN0cnkga2V5LlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0idmFsdWVfbmFtZSBpcyBhIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSB2YWx1ZSB0byBzZXQsIG9yIE5vbmUuXG4iCi0icmVzZXJ2ZWQgY2FuIGJlIGFueXRoaW5nIC0gemVybyBpcyBhbHdheXMgcGFzc2VkIHRvIHRoZSBBUEkuXG4iCi0idHlwZSBpcyBhbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBkYXRhLiAgVGhpcyBzaG91bGQgYmUgb25lIG9mOlxuIgotIiAgUkVHX0JJTkFSWSAtLSBCaW5hcnkgZGF0YSBpbiBhbnkgZm9ybS5cbiIKLSIgIFJFR19EV09SRCAtLSBBIDMyLWJpdCBudW1iZXIuXG4iCi0iICBSRUdfRFdPUkRfTElUVExFX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuXG4iCi0iICBSRUdfRFdPUkRfQklHX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gYmlnLWVuZGlhbiBmb3JtYXQuXG4iCi0iICBSRUdfRVhQQU5EX1NaIC0tIEEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyB0aGF0IGNvbnRhaW5zIHVuZXhwYW5kZWQgcmVmZXJlbmNlc1xuIgotIiAgICAgICAgICAgICAgICAgICB0byBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGZvciBleGFtcGxlLCAlUEFUSCUpLlxuIgotIiAgUkVHX0xJTksgLS0gQSBVbmljb2RlIHN5bWJvbGljIGxpbmsuXG4iCi0iICBSRUdfTVVMVElfU1ogLS0gQW4gc2VxdWVuY2Ugb2YgbnVsbC10ZXJtaW5hdGVkIHN0cmluZ3MsIHRlcm1pbmF0ZWQgYnlcbiIKLSIgICAgICAgICAgICAgICAgICB0d28gbnVsbCBjaGFyYWN0ZXJzLiAgTm90ZSB0aGF0IFB5dGhvbiBoYW5kbGVzIHRoaXNcbiIKLSIgICAgICAgICAgICAgICAgICB0ZXJtaW5hdGlvbiBhdXRvbWF0aWNhbGx5LlxuIgotIiAgUkVHX05PTkUgLS0gTm8gZGVmaW5lZCB2YWx1ZSB0eXBlLlxuIgotIiAgUkVHX1JFU09VUkNFX0xJU1QgLS0gQSBkZXZpY2UtZHJpdmVyIHJlc291cmNlIGxpc3QuXG4iCi0iICBSRUdfU1ogLS0gQSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLlxuIgotInZhbHVlIGlzIGEgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBuZXcgdmFsdWUuXG4iCi0iXG4iCi0iVGhpcyBtZXRob2QgY2FuIGFsc28gc2V0IGFkZGl0aW9uYWwgdmFsdWUgYW5kIHR5cGUgaW5mb3JtYXRpb24gZm9yIHRoZVxuIgotInNwZWNpZmllZCBrZXkuICBUaGUga2V5IGlkZW50aWZpZWQgYnkgdGhlIGtleSBwYXJhbWV0ZXIgbXVzdCBoYXZlIGJlZW5cbiIKLSJvcGVuZWQgd2l0aCBLRVlfU0VUX1ZBTFVFIGFjY2Vzcy5cbiIKLSJcbiIKLSJUbyBvcGVuIHRoZSBrZXksIHVzZSB0aGUgQ3JlYXRlS2V5RXgoKSBvciBPcGVuS2V5RXgoKSBtZXRob2RzLlxuIgotIlxuIgotIlZhbHVlIGxlbmd0aHMgYXJlIGxpbWl0ZWQgYnkgYXZhaWxhYmxlIG1lbW9yeS4gTG9uZyB2YWx1ZXMgKG1vcmUgdGhhblxuIgotIjIwNDggYnl0ZXMpIHNob3VsZCBiZSBzdG9yZWQgYXMgZmlsZXMgd2l0aCB0aGUgZmlsZW5hbWVzIHN0b3JlZCBpbiBcbiIKLSJ0aGUgY29uZmlndXJhdGlvbiByZWdpc3RyeS4gIFRoaXMgaGVscHMgdGhlIHJlZ2lzdHJ5IHBlcmZvcm0gZWZmaWNpZW50bHkuIik7Ci0KLVB5RG9jX1NUUlZBUihEaXNhYmxlUmVmbGVjdGlvbktleV9kb2MsCi0iRGlzYWJsZXMgcmVnaXN0cnkgcmVmbGVjdGlvbiBmb3IgMzItYml0IHByb2Nlc3NlcyBydW5uaW5nIG9uIGEgNjQtYml0XG4iCi0iT3BlcmF0aW5nIFN5c3RlbS4gIFdpbGwgZ2VuZXJhbGx5IHJhaXNlIE5vdEltcGxlbWVudGVkIGlmIGV4ZWN1dGVkIG9uXG4iCi0iYSAzMi1iaXQgT3BlcmF0aW5nIFN5c3RlbS5cbiIKLSJcbiIKLSJJZiB0aGUga2V5IGlzIG5vdCBvbiB0aGUgcmVmbGVjdGlvbiBsaXN0LCB0aGUgZnVuY3Rpb24gc3VjY2VlZHMgYnV0IGhhcyBubyBlZmZlY3QuXG4iCi0iRGlzYWJsaW5nIHJlZmxlY3Rpb24gZm9yIGEga2V5IGRvZXMgbm90IGFmZmVjdCByZWZsZWN0aW9uIG9mIGFueSBzdWJrZXlzLiIpOwotCi1QeURvY19TVFJWQVIoRW5hYmxlUmVmbGVjdGlvbktleV9kb2MsCi0iUmVzdG9yZXMgcmVnaXN0cnkgcmVmbGVjdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBkaXNhYmxlZCBrZXkuXG4iCi0iV2lsbCBnZW5lcmFsbHkgcmFpc2UgTm90SW1wbGVtZW50ZWQgaWYgZXhlY3V0ZWQgb24gYSAzMi1iaXQgT3BlcmF0aW5nIFN5c3RlbS5cbiIKLSJSZXN0b3JpbmcgcmVmbGVjdGlvbiBmb3IgYSBrZXkgZG9lcyBub3QgYWZmZWN0IHJlZmxlY3Rpb24gb2YgYW55IHN1YmtleXMuIik7Ci0KLVB5RG9jX1NUUlZBUihRdWVyeVJlZmxlY3Rpb25LZXlfZG9jLAotIlF1ZXJ5UmVmbGVjdGlvbktleShoa2V5KSAtPiBib29sXG4iCi0iRGV0ZXJtaW5lcyB0aGUgcmVmbGVjdGlvbiBzdGF0ZSBmb3IgdGhlIHNwZWNpZmllZCBrZXkuXG4iCi0iV2lsbCBnZW5lcmFsbHkgcmFpc2UgTm90SW1wbGVtZW50ZWQgaWYgZXhlY3V0ZWQgb24gYSAzMi1iaXQgT3BlcmF0aW5nIFN5c3RlbS5cbiIpOwogCiAvKiBQeUhLRVkgZG9jc3RyaW5ncyAqLwogUHlEb2NfU1RSVkFSKFB5SEtFWV9kb2MsCkBAIC0zODksMjQgKzk5LDYgQEAKICJyaWNoIGNvbXBhcmlzb24gLSBIYW5kbGUgb2JqZWN0cyBhcmUgY29tcGFyZWQgdXNpbmcgdGhlIGhhbmRsZSB2YWx1ZS4iKTsKIAogCi1QeURvY19TVFJWQVIoUHlIS0VZX0Nsb3NlX2RvYywKLSJrZXkuQ2xvc2UoKVxuIgotIkNsb3NlcyB0aGUgdW5kZXJseWluZyBXaW5kb3dzIGhhbmRsZS5cbiIKLSJcbiIKLSJJZiB0aGUgaGFuZGxlIGlzIGFscmVhZHkgY2xvc2VkLCBubyBlcnJvciBpcyByYWlzZWQuIik7Ci0KLVB5RG9jX1NUUlZBUihQeUhLRVlfRGV0YWNoX2RvYywKLSJrZXkuRGV0YWNoKCkgLT4gaW50XG4iCi0iRGV0YWNoZXMgdGhlIFdpbmRvd3MgaGFuZGxlIGZyb20gdGhlIGhhbmRsZSBvYmplY3QuXG4iCi0iXG4iCi0iVGhlIHJlc3VsdCBpcyB0aGUgdmFsdWUgb2YgdGhlIGhhbmRsZSBiZWZvcmUgaXQgaXMgZGV0YWNoZWQuICBJZiB0aGVcbiIKLSJoYW5kbGUgaXMgYWxyZWFkeSBkZXRhY2hlZCwgdGhpcyB3aWxsIHJldHVybiB6ZXJvLlxuIgotIlxuIgotIkFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgdGhlIGhhbmRsZSBpcyBlZmZlY3RpdmVseSBpbnZhbGlkYXRlZCxcbiIKLSJidXQgdGhlIGhhbmRsZSBpcyBub3QgY2xvc2VkLiAgWW91IHdvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIHlvdVxuIgotIm5lZWQgdGhlIHVuZGVybHlpbmcgd2luMzIgaGFuZGxlIHRvIGV4aXN0IGJleW9uZCB0aGUgbGlmZXRpbWUgb2YgdGhlXG4iCi0iaGFuZGxlIG9iamVjdC4iKTsKLQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKQEAgLTUxNiwxNiArMjA4LDEzNSBAQAogICAgIFB5SEtFWV91bmFyeUZhaWx1cmVGdW5jLCAgICAgICAgICAgIC8qIG5iX2Zsb2F0ICovCiB9OwogCi1zdGF0aWMgUHlPYmplY3QgKlB5SEtFWV9DbG9zZU1ldGhvZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpOwotc3RhdGljIFB5T2JqZWN0ICpQeUhLRVlfRGV0YWNoTWV0aG9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7Ci1zdGF0aWMgUHlPYmplY3QgKlB5SEtFWV9FbnRlcihQeU9iamVjdCAqc2VsZik7Ci1zdGF0aWMgUHlPYmplY3QgKlB5SEtFWV9FeGl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7CisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgd2lucmVnCitjbGFzcyB3aW5yZWcuSEtFWVR5cGUgIlB5SEtFWU9iamVjdCAqIiAiJlB5SEtFWV9UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NGM5NjRlYmEzYmY5MTRkNl0qLworCisvKltweXRob24gaW5wdXRdCitjbGFzcyBSRUdTQU1fY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnUkVHU0FNJworICAgIGZvcm1hdF91bml0ID0gJ2knCisKK2NsYXNzIERXT1JEX2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ0RXT1JEJworICAgIGZvcm1hdF91bml0ID0gJ2snCisKK2NsYXNzIEhLRVlfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnSEtFWScKKyAgICBjb252ZXJ0ZXIgPSAnY2xpbmljX0hLRVlfY29udmVydGVyJworCitjbGFzcyBIS0VZX3JldHVybl9jb252ZXJ0ZXIoQ1JldHVybkNvbnZlcnRlcik6CisgICAgdHlwZSA9ICdIS0VZJworCisgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CisgICAgICAgIHNlbGYuZGVjbGFyZShkYXRhKQorICAgICAgICBzZWxmLmVycl9vY2N1cnJlZF9pZl9udWxsX3BvaW50ZXIoIl9yZXR1cm5fdmFsdWUiLCBkYXRhKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKKyAgICAgICAgICAgICdyZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7XG4nKQorCisjIEhBQ0s6IHRoaXMgb25seSB3b3JrcyBmb3IgUHlIS0VZT2JqZWN0cywgbm90aGluZyBlbHNlLgorIyAgICAgICBTaG91bGQgdGhpcyBiZSBnZW5lcmFsaXplZCBhbmQgZW5zaHJpbmVkIGluIGNsaW5pYy5weSwKKyMgICAgICAgZGVzdHJveSB0aGlzIGNvbnZlcnRlciB3aXRoIHByZWp1ZGljZS4KK2NsYXNzIHNlbGZfcmV0dXJuX2NvbnZlcnRlcihDUmV0dXJuQ29udmVydGVyKToKKyAgICB0eXBlID0gJ1B5SEtFWU9iamVjdCAqJworCisgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CisgICAgICAgIHNlbGYuZGVjbGFyZShkYXRhKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKKyAgICAgICAgICAgICdyZXR1cm5fdmFsdWUgPSAoUHlPYmplY3QgKilfcmV0dXJuX3ZhbHVlO1xuJykKK1tweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTIyZjdhZWRjNmQ2OGU4MGVdKi8KKworI2luY2x1ZGUgImNsaW5pYy93aW5yZWcuYy5oIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyAgVGhlIFB5SEtFWSBvYmplY3QgbWV0aG9kcworCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuSEtFWVR5cGUuQ2xvc2UKKworQ2xvc2VzIHRoZSB1bmRlcmx5aW5nIFdpbmRvd3MgaGFuZGxlLgorCitJZiB0aGUgaGFuZGxlIGlzIGFscmVhZHkgY2xvc2VkLCBubyBlcnJvciBpcyByYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfSEtFWVR5cGVfQ2xvc2VfaW1wbChQeUhLRVlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmNlZDNhNjI0ZmIwYzM0NCBpbnB1dD02Nzg2YWM3NWY2Yjg5ZGU2XSovCit7CisgICAgaWYgKCFQeUhLRVlfQ2xvc2UoKFB5T2JqZWN0ICopc2VsZikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuSEtFWVR5cGUuRGV0YWNoCisKK0RldGFjaGVzIHRoZSBXaW5kb3dzIGhhbmRsZSBmcm9tIHRoZSBoYW5kbGUgb2JqZWN0LgorCitUaGUgcmVzdWx0IGlzIHRoZSB2YWx1ZSBvZiB0aGUgaGFuZGxlIGJlZm9yZSBpdCBpcyBkZXRhY2hlZC4gIElmIHRoZQoraGFuZGxlIGlzIGFscmVhZHkgZGV0YWNoZWQsIHRoaXMgd2lsbCByZXR1cm4gemVyby4KKworQWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCB0aGUgaGFuZGxlIGlzIGVmZmVjdGl2ZWx5IGludmFsaWRhdGVkLAorYnV0IHRoZSBoYW5kbGUgaXMgbm90IGNsb3NlZC4gIFlvdSB3b3VsZCBjYWxsIHRoaXMgZnVuY3Rpb24gd2hlbiB5b3UKK25lZWQgdGhlIHVuZGVybHlpbmcgd2luMzIgaGFuZGxlIHRvIGV4aXN0IGJleW9uZCB0aGUgbGlmZXRpbWUgb2YgdGhlCitoYW5kbGUgb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0hLRVlUeXBlX0RldGFjaF9pbXBsKFB5SEtFWU9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kZGE1YTllMWEwMWFlNzhmIGlucHV0PWRkMmNjMDllNmM2YmE4MzNdKi8KK3sKKyAgICB2b2lkKiByZXQ7CisgICAgcmV0ID0gKHZvaWQqKXNlbGYtPmhrZXk7CisgICAgc2VsZi0+aGtleSA9IDA7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVm9pZFB0cihyZXQpOworfQorCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuSEtFWVR5cGUuX19lbnRlcl9fIC0+IHNlbGYKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5SEtFWU9iamVjdCAqCit3aW5yZWdfSEtFWVR5cGVfX19lbnRlcl9fX2ltcGwoUHlIS0VZT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUyYzM0OTg2ZGFiMjg5OTAgaW5wdXQ9YzQwZmFiMWYwNjkwYThlMl0qLworeworICAgIFB5X1hJTkNSRUYoc2VsZik7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKworLypbY2xpbmljIGlucHV0XQord2lucmVnLkhLRVlUeXBlLl9fZXhpdF9fCisKKyAgICBleGNfdHlwZTogb2JqZWN0CisgICAgZXhjX3ZhbHVlOiBvYmplY3QKKyAgICB0cmFjZWJhY2s6IG9iamVjdAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0hLRVlUeXBlX19fZXhpdF9fX2ltcGwoUHlIS0VZT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZXhjX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXhjX3ZhbHVlLCBQeU9iamVjdCAqdHJhY2ViYWNrKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkyM2ViZTczODllNmEyNjMgaW5wdXQ9ZmIzMjQ4OWVlOTI0MDNjN10qLworeworICAgIGlmICghUHlIS0VZX0Nsb3NlKChQeU9iamVjdCAqKXNlbGYpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworLypbY2xpbmljIGlucHV0XQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZGEzOWEzZWU1ZTZiNGIwZF0qLwogCiBzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIFB5SEtFWV9tZXRob2RzW10gPSB7Ci0gICAgeyJDbG9zZSIsICBQeUhLRVlfQ2xvc2VNZXRob2QsIE1FVEhfVkFSQVJHUywgUHlIS0VZX0Nsb3NlX2RvY30sCi0gICAgeyJEZXRhY2giLCBQeUhLRVlfRGV0YWNoTWV0aG9kLCBNRVRIX1ZBUkFSR1MsIFB5SEtFWV9EZXRhY2hfZG9jfSwKLSAgICB7Il9fZW50ZXJfXyIsIChQeUNGdW5jdGlvbilQeUhLRVlfRW50ZXIsIE1FVEhfTk9BUkdTLCBOVUxMfSwKLSAgICB7Il9fZXhpdF9fIiwgUHlIS0VZX0V4aXQsIE1FVEhfVkFSQVJHUywgTlVMTH0sCisgICAgV0lOUkVHX0hLRVlUWVBFX0NMT1NFX01FVEhPRERFRgorICAgIFdJTlJFR19IS0VZVFlQRV9ERVRBQ0hfTUVUSE9EREVGCisgICAgV0lOUkVHX0hLRVlUWVBFX19fRU5URVJfX19NRVRIT0RERUYKKyAgICBXSU5SRUdfSEtFWVRZUEVfX19FWElUX19fTUVUSE9EREVGCiAgICAge05VTEx9CiB9OwogCkBAIC01NzAsNTAgKzM4MSw2IEBACiB9OwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSAgVGhlIFB5SEtFWSBvYmplY3QgbWV0aG9kcwotCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgUHlPYmplY3QgKgotUHlIS0VZX0Nsb3NlTWV0aG9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpDbG9zZSIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5SEtFWV9DbG9zZShzZWxmKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotUHlIS0VZX0RldGFjaE1ldGhvZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgdm9pZCogcmV0OwotICAgIFB5SEtFWU9iamVjdCAqcFRoaXMgPSAoUHlIS0VZT2JqZWN0ICopc2VsZjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpEZXRhY2giKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0ID0gKHZvaWQqKXBUaGlzLT5oa2V5OwotICAgIHBUaGlzLT5oa2V5ID0gMDsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Wb2lkUHRyKHJldCk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1QeUhLRVlfRW50ZXIoUHlPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlfWElOQ1JFRihzZWxmKTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLVB5SEtFWV9FeGl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpZiAoIVB5SEtFWV9DbG9zZShzZWxmKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgVGhlIHB1YmxpYyBQeUhLRVkgQVBJICh3ZWxsLCBub3QgcHVibGljIHlldCA6LSkKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIFB5T2JqZWN0ICoKQEAgLTY3NSw2ICs0NDIsMTQgQEAKICAgICByZXR1cm4gVFJVRTsKIH0KIAorQk9PTAorY2xpbmljX0hLRVlfY29udmVydGVyKFB5T2JqZWN0ICpvYiwgdm9pZCAqcCkKK3sKKyAgICBpZiAoIVB5SEtFWV9Bc0hLRVkob2IsIChIS0VZICopcCwgRkFMU0UpKQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKIFB5T2JqZWN0ICoKIFB5SEtFWV9Gcm9tSEtFWShIS0VZIGgpCiB7CkBAIC05ODUsMTIwICs3NjAsMTk5IEBACiAKIC8qIFRoZSBQeXRob24gbWV0aG9kcyAqLwogCi1zdGF0aWMgUHlPYmplY3QgKgotUHlDbG9zZUtleShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKm9iS2V5OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpDbG9zZUtleSIsICZvYktleSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0Nsb3NlKG9iS2V5KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotfQorLypbY2xpbmljIGlucHV0XQord2lucmVnLkNsb3NlS2V5CisKKyAgICBoa2V5OiBvYmplY3QKKyAgICAgICAgQSBwcmV2aW91c2x5IG9wZW5lZCBrZXkuCisgICAgLworCitDbG9zZXMgYSBwcmV2aW91c2x5IG9wZW5lZCByZWdpc3RyeSBrZXkuCisKK05vdGUgdGhhdCBpZiB0aGUga2V5IGlzIG5vdCBjbG9zZWQgdXNpbmcgdGhpcyBtZXRob2QsIGl0IHdpbGwgYmUKK2Nsb3NlZCB3aGVuIHRoZSBoa2V5IG9iamVjdCBpcyBkZXN0cm95ZWQgYnkgUHl0aG9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlDb25uZWN0UmVnaXN0cnkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQord2lucmVnX0Nsb3NlS2V5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpoa2V5KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ5NmY3MzQzOTQwM2EwNjQgaW5wdXQ9NWIxYWFjNjViYTUxMjdhZF0qLwogewotICAgIEhLRVkgaEtleTsKLSAgICBQeU9iamVjdCAqb2JLZXk7Ci0gICAgd2NoYXJfdCAqc3pDb21wTmFtZSA9IE5VTEw7CisgICAgaWYgKCFQeUhLRVlfQ2xvc2UoaGtleSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuQ29ubmVjdFJlZ2lzdHJ5IC0+IEhLRVkKKworICAgIGNvbXB1dGVyX25hbWU6IFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHJlbW90ZSBjb21wdXRlciwgb2YgdGhlIGZvcm0gciJcXGNvbXB1dGVybmFtZSIuICBJZgorICAgICAgICBOb25lLCB0aGUgbG9jYWwgY29tcHV0ZXIgaXMgdXNlZC4KKyAgICBrZXk6IEhLRVkKKyAgICAgICAgVGhlIHByZWRlZmluZWQga2V5IHRvIGNvbm5lY3QgdG8uCisgICAgLworCitFc3RhYmxpc2hlcyBhIGNvbm5lY3Rpb24gdG8gdGhlIHJlZ2lzdHJ5IG9uIG9uIGFub3RoZXIgY29tcHV0ZXIuCisKK1RoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS4KK0lmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgSEtFWQord2lucmVnX0Nvbm5lY3RSZWdpc3RyeV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X1VOSUNPREUgKmNvbXB1dGVyX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEtFWSBrZXkpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWM1MmY2ZjdiYTZlN2I0NiBpbnB1dD05YTA1NjU1OGNlMzE4NDMzXSovCit7CiAgICAgSEtFWSByZXRLZXk7CiAgICAgbG9uZyByYzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlpPOkNvbm5lY3RSZWdpc3RyeSIsICZzekNvbXBOYW1lLCAmb2JLZXkpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5SEtFWV9Bc0hLRVkob2JLZXksICZoS2V5LCBGQUxTRSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByYyA9IFJlZ0Nvbm5lY3RSZWdpc3RyeVcoc3pDb21wTmFtZSwgaEtleSwgJnJldEtleSk7CisgICAgcmMgPSBSZWdDb25uZWN0UmVnaXN0cnlXKGNvbXB1dGVyX25hbWUsIGtleSwgJnJldEtleSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3RSZWdpc3RyeSIpOwotICAgIHJldHVybiBQeUhLRVlfRnJvbUhLRVkocmV0S2V5KTsKKyAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykgeworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIkNvbm5lY3RSZWdpc3RyeSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIHJldEtleTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLVB5Q3JlYXRlS2V5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5DcmVhdGVLZXkgLT4gSEtFWQorCisgICAga2V5OiBIS0VZCisgICAgICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLgorICAgIHN1Yl9rZXk6IFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGtleSB0aGlzIG1ldGhvZCBvcGVucyBvciBjcmVhdGVzLgorICAgIC8KKworQ3JlYXRlcyBvciBvcGVucyB0aGUgc3BlY2lmaWVkIGtleS4KKworSWYga2V5IGlzIG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBrZXlzLCBzdWJfa2V5IG1heSBiZSBOb25lLiBJbiB0aGF0IGNhc2UsCit0aGUgaGFuZGxlIHJldHVybmVkIGlzIHRoZSBzYW1lIGtleSBoYW5kbGUgcGFzc2VkIGluIHRvIHRoZSBmdW5jdGlvbi4KKworSWYgdGhlIGtleSBhbHJlYWR5IGV4aXN0cywgdGhpcyBmdW5jdGlvbiBvcGVucyB0aGUgZXhpc3Rpbmcga2V5LgorCitUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuCitJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIEhLRVkKK3dpbnJlZ19DcmVhdGVLZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jZDY4NDNmMzBhNzNmYzBlIGlucHV0PTNjZGQxNjIyNDg4YWNlYTJdKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKm9iS2V5OwotICAgIHdjaGFyX3QgKnN1YktleTsKICAgICBIS0VZIHJldEtleTsKICAgICBsb25nIHJjOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT1o6Q3JlYXRlS2V5IiwgJm9iS2V5LCAmc3ViS2V5KSkKKworICAgIHJjID0gUmVnQ3JlYXRlS2V5VyhrZXksIHN1Yl9rZXksICZyZXRLZXkpOworICAgIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLCAiQ3JlYXRlS2V5Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShvYktleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmMgPSBSZWdDcmVhdGVLZXlXKGhLZXksIHN1YktleSwgJnJldEtleSk7Ci0gICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIkNyZWF0ZUtleSIpOwotICAgIHJldHVybiBQeUhLRVlfRnJvbUhLRVkocmV0S2V5KTsKKyAgICB9CisgICAgcmV0dXJuIHJldEtleTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLVB5Q3JlYXRlS2V5RXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorLypbY2xpbmljIGlucHV0XQord2lucmVnLkNyZWF0ZUtleUV4IC0+IEhLRVkKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy4KKyAgICBzdWJfa2V5OiBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCisgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBrZXkgdGhpcyBtZXRob2Qgb3BlbnMgb3IgY3JlYXRlcy4KKyAgICByZXNlcnZlZDogaW50ID0gMAorICAgICAgICBBIHJlc2VydmVkIGludGVnZXIsIGFuZCBtdXN0IGJlIHplcm8uICBEZWZhdWx0IGlzIHplcm8uCisgICAgYWNjZXNzOiBSRUdTQU0oY19kZWZhdWx0PSdLRVlfV1JJVEUnKSA9IHdpbnJlZy5LRVlfV1JJVEUKKyAgICAgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBhbiBhY2Nlc3MgbWFzayB0aGF0IGRlc2NyaWJlcyB0aGUKKyAgICAgICAgZGVzaXJlZCBzZWN1cml0eSBhY2Nlc3MgZm9yIHRoZSBrZXkuIERlZmF1bHQgaXMgS0VZX1dSSVRFLgorCitDcmVhdGVzIG9yIG9wZW5zIHRoZSBzcGVjaWZpZWQga2V5LgorCitJZiBrZXkgaXMgb25lIG9mIHRoZSBwcmVkZWZpbmVkIGtleXMsIHN1Yl9rZXkgbWF5IGJlIE5vbmUuIEluIHRoYXQgY2FzZSwKK3RoZSBoYW5kbGUgcmV0dXJuZWQgaXMgdGhlIHNhbWUga2V5IGhhbmRsZSBwYXNzZWQgaW4gdG8gdGhlIGZ1bmN0aW9uLgorCitJZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzLCB0aGlzIGZ1bmN0aW9uIG9wZW5zIHRoZSBleGlzdGluZyBrZXkKKworVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LgorSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBIS0VZCit3aW5yZWdfQ3JlYXRlS2V5RXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXNlcnZlZCwgUkVHU0FNIGFjY2VzcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYjgzNWQ1YmU4NGU3MmIyIGlucHV0PTQyYzJiMDNmOTg0MDZiNjZdKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKmtleTsKLSAgICB3Y2hhcl90ICpzdWJfa2V5OwogICAgIEhLRVkgcmV0S2V5OwotICAgIGludCByZXNlcnZlZCA9IDA7Ci0gICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9XUklURTsKICAgICBsb25nIHJjOwogCi0gICAgY2hhciAqa3dsaXN0W10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT1p8aWk6Q3JlYXRlS2V5RXgiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtleSwgJnN1Yl9rZXksICZyZXNlcnZlZCwgJmFjY2VzcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShrZXksICZoS2V5LCBGQUxTRSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmMgPSBSZWdDcmVhdGVLZXlFeFcoaEtleSwgc3ViX2tleSwgcmVzZXJ2ZWQsIE5VTEwsIChEV09SRClOVUxMLAorICAgIHJjID0gUmVnQ3JlYXRlS2V5RXhXKGtleSwgc3ViX2tleSwgcmVzZXJ2ZWQsIE5VTEwsIChEV09SRClOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VzcywgTlVMTCwgJnJldEtleSwgTlVMTCk7Ci0gICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIkNyZWF0ZUtleUV4Iik7Ci0gICAgcmV0dXJuIFB5SEtFWV9Gcm9tSEtFWShyZXRLZXkpOworICAgIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLCAiQ3JlYXRlS2V5RXgiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiByZXRLZXk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5EZWxldGVLZXkKKyAgICBrZXk6IEhLRVkKKyAgICAgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLgorICAgIHN1Yl9rZXk6IFB5X1VOSUNPREUKKyAgICAgICAgQSBzdHJpbmcgdGhhdCBtdXN0IGJlIHRoZSBuYW1lIG9mIGEgc3Via2V5IG9mIHRoZSBrZXkgaWRlbnRpZmllZCBieQorICAgICAgICB0aGUga2V5IHBhcmFtZXRlci4gVGhpcyB2YWx1ZSBtdXN0IG5vdCBiZSBOb25lLCBhbmQgdGhlIGtleSBtYXkgbm90CisgICAgICAgIGhhdmUgc3Via2V5cy4KKyAgICAvCisKK0RlbGV0ZXMgdGhlIHNwZWNpZmllZCBrZXkuCisKK1RoaXMgbWV0aG9kIGNhbiBub3QgZGVsZXRlIGtleXMgd2l0aCBzdWJrZXlzLgorCitJZiB0aGUgZnVuY3Rpb24gc3VjY2VlZHMsIHRoZSBlbnRpcmUga2V5LCBpbmNsdWRpbmcgYWxsIG9mIGl0cyB2YWx1ZXMsCitpcyByZW1vdmVkLiAgSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1QeURlbGV0ZUtleShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5yZWdfRGVsZXRlS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXkpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODc1Yzg5MTdkYWNiYzk5ZCBpbnB1dD1iMzFkMjI1YjkzNWU0MjExXSovCiB7Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKLSAgICB3Y2hhcl90ICpzdWJLZXk7CiAgICAgbG9uZyByYzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk91OkRlbGV0ZUtleSIsICZvYktleSwgJnN1YktleSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShvYktleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmMgPSBSZWdEZWxldGVLZXlXKGhLZXksIHN1YktleSApOworICAgIHJjID0gUmVnRGVsZXRlS2V5VyhrZXksIHN1Yl9rZXkgKTsKICAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLCAiUmVnRGVsZXRlS2V5Iik7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuRGVsZXRlS2V5RXgKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgc3ViX2tleTogUHlfVU5JQ09ERQorICAgICAgICBBIHN0cmluZyB0aGF0IG11c3QgYmUgdGhlIG5hbWUgb2YgYSBzdWJrZXkgb2YgdGhlIGtleSBpZGVudGlmaWVkIGJ5CisgICAgICAgIHRoZSBrZXkgcGFyYW1ldGVyLiBUaGlzIHZhbHVlIG11c3Qgbm90IGJlIE5vbmUsIGFuZCB0aGUga2V5IG1heSBub3QKKyAgICAgICAgaGF2ZSBzdWJrZXlzLgorICAgIGFjY2VzczogUkVHU0FNKGNfZGVmYXVsdD0nS0VZX1dPVzY0XzY0S0VZJykgPSB3aW5yZWcuS0VZX1dPVzY0XzY0S0VZCisgICAgICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgYW4gYWNjZXNzIG1hc2sgdGhhdCBkZXNjcmliZXMgdGhlCisgICAgICAgIGRlc2lyZWQgc2VjdXJpdHkgYWNjZXNzIGZvciB0aGUga2V5LiBEZWZhdWx0IGlzIEtFWV9XT1c2NF82NEtFWS4KKyAgICByZXNlcnZlZDogaW50ID0gMAorICAgICAgICBBIHJlc2VydmVkIGludGVnZXIsIGFuZCBtdXN0IGJlIHplcm8uICBEZWZhdWx0IGlzIHplcm8uCisKK0RlbGV0ZXMgdGhlIHNwZWNpZmllZCBrZXkgKDY0LWJpdCBPUyBvbmx5KS4KKworVGhpcyBtZXRob2QgY2FuIG5vdCBkZWxldGUga2V5cyB3aXRoIHN1YmtleXMuCisKK0lmIHRoZSBmdW5jdGlvbiBzdWNjZWVkcywgdGhlIGVudGlyZSBrZXksIGluY2x1ZGluZyBhbGwgb2YgaXRzIHZhbHVlcywKK2lzIHJlbW92ZWQuICBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4KK09uIHVuc3VwcG9ydGVkIFdpbmRvd3MgdmVyc2lvbnMsIE5vdEltcGxlbWVudGVkRXJyb3IgaXMgcmFpc2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlEZWxldGVLZXlFeChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit3aW5yZWdfRGVsZXRlS2V5RXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFR1NBTSBhY2Nlc3MsIGludCByZXNlcnZlZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMzYyYTBhYzY1MDIzNzlmIGlucHV0PTcxMWQ5ZDg5ZTdlY2JlZDddKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKmtleTsKICAgICBITU9EVUxFIGhNb2Q7CiAgICAgdHlwZWRlZiBMT05HIChXSU5BUEkgKlJES0VGdW5jKShIS0VZLCBjb25zdCB3Y2hhcl90KiwgUkVHU0FNLCBpbnQpOwogICAgIFJES0VGdW5jIHBmbiA9IE5VTEw7Ci0gICAgd2NoYXJfdCAqc3ViX2tleTsKICAgICBsb25nIHJjOwotICAgIGludCByZXNlcnZlZCA9IDA7Ci0gICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9XT1c2NF82NEtFWTsKLQotICAgIGNoYXIgKmt3bGlzdFtdID0geyJrZXkiLCAic3ViX2tleSIsICJhY2Nlc3MiLCAicmVzZXJ2ZWQiLCBOVUxMfTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPdXxpaTpEZWxldGVLZXlFeCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2V5LCAmc3ViX2tleSwgJmFjY2VzcywgJnJlc2VydmVkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUhLRVlfQXNIS0VZKGtleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBPbmx5IGF2YWlsYWJsZSBvbiA2NGJpdCBwbGF0Zm9ybXMsIHNvIHdlIG11c3QgbG9hZCBpdAogICAgICAgIGR5bmFtaWNhbGx5LiAqLwpAQCAtMTExMiw0MiArOTY2LDYwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSAoKnBmbikoaEtleSwgc3ViX2tleSwgYWNjZXNzLCByZXNlcnZlZCk7CisgICAgcmMgPSAoKnBmbikoa2V5LCBzdWJfa2V5LCBhY2Nlc3MsIHJlc2VydmVkKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIlJlZ0RlbGV0ZUtleUV4Iik7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuRGVsZXRlVmFsdWUKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgdmFsdWU6IFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICAgICAgQSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSB2YWx1ZSB0byByZW1vdmUuCisgICAgLworCitSZW1vdmVzIGEgbmFtZWQgdmFsdWUgZnJvbSBhIHJlZ2lzdHJ5IGtleS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVB5RGVsZXRlVmFsdWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQord2lucmVnX0RlbGV0ZVZhbHVlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMwODU1MGI4Y2RjZmQ4ZTEgaW5wdXQ9YTc4ZDM0MDdhNDE5N2IyMV0qLwogewotICAgIEhLRVkgaEtleTsKLSAgICBQeU9iamVjdCAqb2JLZXk7Ci0gICAgd2NoYXJfdCAqc3ViS2V5OwogICAgIGxvbmcgcmM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPWjpEZWxldGVWYWx1ZSIsICZvYktleSwgJnN1YktleSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShvYktleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gUmVnRGVsZXRlVmFsdWVXKGhLZXksIHN1YktleSk7CisgICAgcmMgPSBSZWdEZWxldGVWYWx1ZVcoa2V5LCB2YWx1ZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmMgIT1FUlJPUl9TVUNDRVNTKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVnRGVsZXRlVmFsdWUiKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5FbnVtS2V5CisKKyAgICBrZXk6IEhLRVkKKyAgICAgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLgorICAgIGluZGV4OiBpbnQKKyAgICAgICAgQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIGluZGV4IG9mIHRoZSBrZXkgdG8gcmV0cmlldmUuCisgICAgLworCitFbnVtZXJhdGVzIHN1YmtleXMgb2YgYW4gb3BlbiByZWdpc3RyeSBrZXkuCisKK1RoZSBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIG5hbWUgb2Ygb25lIHN1YmtleSBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLgorSXQgaXMgdHlwaWNhbGx5IGNhbGxlZCByZXBlYXRlZGx5IHVudGlsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzCityYWlzZWQsIGluZGljYXRpbmcgbm8gbW9yZSB2YWx1ZXMgYXJlIGF2YWlsYWJsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVB5RW51bUtleShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5yZWdfRW51bUtleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBpbnQgaW5kZXgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTgwNzRmZmFiYmM2Nzg5NiBpbnB1dD1mYWQ5YTdjMDBhYjBlMDRiXSovCiB7Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKLSAgICBpbnQgaW5kZXg7CiAgICAgbG9uZyByYzsKICAgICBQeU9iamVjdCAqcmV0U3RyOwogCkBAIC0xMTYwLDEzICsxMDMyLDggQEAKICAgICB3Y2hhcl90IHRtcGJ1ZlsyNTddOwogICAgIERXT1JEIGxlbiA9IHNpemVvZih0bXBidWYpL3NpemVvZih3Y2hhcl90KTsgLyogaW5jbHVkZXMgTlVMTCB0ZXJtaW5hdG9yICovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9pOkVudW1LZXkiLCAmb2JLZXksICZpbmRleCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShvYktleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBSZWdFbnVtS2V5RXhXKGhLZXksIGluZGV4LCB0bXBidWYsICZsZW4sIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOworICAgIHJjID0gUmVnRW51bUtleUV4VyhrZXksIGluZGV4LCB0bXBidWYsICZsZW4sIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIlJlZ0VudW1LZXlFeCIpOwpAQCAtMTE3NSwxMiArMTA0MiwzNSBAQAogICAgIHJldHVybiByZXRTdHI7ICAvKiBjYW4gYmUgTlVMTCAqLwogfQogCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuRW51bVZhbHVlCisKKyAgICBrZXk6IEhLRVkKKyAgICAgICAgICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy4KKyAgICBpbmRleDogaW50CisgICAgICAgIEFuIGludGVnZXIgdGhhdCBpZGVudGlmaWVzIHRoZSBpbmRleCBvZiB0aGUgdmFsdWUgdG8gcmV0cmlldmUuCisgICAgLworCitFbnVtZXJhdGVzIHZhbHVlcyBvZiBhbiBvcGVuIHJlZ2lzdHJ5IGtleS4KKworVGhlIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgbmFtZSBvZiBvbmUgc3Via2V5IGVhY2ggdGltZSBpdCBpcyBjYWxsZWQuCitJdCBpcyB0eXBpY2FsbHkgY2FsbGVkIHJlcGVhdGVkbHksIHVudGlsIGFuIE9TRXJyb3IgZXhjZXB0aW9uCitpcyByYWlzZWQsIGluZGljYXRpbmcgbm8gbW9yZSB2YWx1ZXMuCisKK1RoZSByZXN1bHQgaXMgYSB0dXBsZSBvZiAzIGl0ZW1zOgorICB2YWx1ZV9uYW1lCisgICAgQSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSB2YWx1ZS4KKyAgdmFsdWVfZGF0YQorICAgIEFuIG9iamVjdCB0aGF0IGhvbGRzIHRoZSB2YWx1ZSBkYXRhLCBhbmQgd2hvc2UgdHlwZSBkZXBlbmRzCisgICAgb24gdGhlIHVuZGVybHlpbmcgcmVnaXN0cnkgdHlwZS4KKyAgZGF0YV90eXBlCisgICAgQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgdGhlIHZhbHVlIGRhdGEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1QeUVudW1WYWx1ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5yZWdfRW51bVZhbHVlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIGludCBpbmRleCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NTcwMzY3ZWJhZjBlOTc5IGlucHV0PTQ0MTRmNDdhNmZiMjM4YjVdKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKm9iS2V5OwotICAgIGludCBpbmRleDsKICAgICBsb25nIHJjOwogICAgIHdjaGFyX3QgKnJldFZhbHVlQnVmOwogICAgIEJZVEUgKnRtcEJ1ZjsKQEAgLTExOTEsMTIgKzEwODEsNyBAQAogICAgIFB5T2JqZWN0ICpvYkRhdGE7CiAgICAgUHlPYmplY3QgKnJldFZhbDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2k6RW51bVZhbHVlIiwgJm9iS2V5LCAmaW5kZXgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5SEtFWV9Bc0hLRVkob2JLZXksICZoS2V5LCBGQUxTRSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKChyYyA9IFJlZ1F1ZXJ5SW5mb0tleVcoaEtleSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwKKyAgICBpZiAoKHJjID0gUmVnUXVlcnlJbmZvS2V5VyhrZXksIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJldFZhbHVlU2l6ZSwgJnJldERhdGFTaXplLCBOVUxMLCBOVUxMKSkKICAgICAgICAgIT0gRVJST1JfU1VDQ0VTUykKQEAgLTEyMTcsNyArMTEwMiw3IEBACiAKICAgICB3aGlsZSAoMSkgewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJjID0gUmVnRW51bVZhbHVlVyhoS2V5LAorICAgICAgICByYyA9IFJlZ0VudW1WYWx1ZVcoa2V5LAogICAgICAgICAgICAgICAgICAgaW5kZXgsCiAgICAgICAgICAgICAgICAgICByZXRWYWx1ZUJ1ZiwKICAgICAgICAgICAgICAgICAgICZyZXRWYWx1ZVNpemUsCkBAIC0xMjYwLDE5ICsxMTQ1LDI1IEBACiAgICAgcmV0dXJuIHJldFZhbDsKIH0KIAorLypbY2xpbmljIGlucHV0XQord2lucmVnLkV4cGFuZEVudmlyb25tZW50U3RyaW5ncworCisgICAgc3RyaW5nOiBQeV9VTklDT0RFCisgICAgLworCitFeHBhbmQgZW52aXJvbm1lbnQgdmFycy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVB5RXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbnJlZ19FeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9VTklDT0RFICpzdHJpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGNiNjkxNDA2NWE4NjYzYyBpbnB1dD1iMmE5NzE0ZDJiNzUxYWE2XSovCiB7CiAgICAgd2NoYXJfdCAqcmV0VmFsdWUgPSBOVUxMOwotICAgIHdjaGFyX3QgKnNyYzsKICAgICBEV09SRCByZXRWYWx1ZVNpemU7CiAgICAgRFdPUkQgcmM7CiAgICAgUHlPYmplY3QgKm87CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInU6RXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzIiwgJnNyYykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0VmFsdWVTaXplID0gRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzVyhzcmMsIHJldFZhbHVlLCAwKTsKKyAgICByZXRWYWx1ZVNpemUgPSBFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NXKHN0cmluZywgcmV0VmFsdWUsIDApOwogICAgIGlmIChyZXRWYWx1ZVNpemUgPT0gMCkgewogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmV0VmFsdWVTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MiKTsKQEAgLTEyODIsNyArMTE3Myw3IEBACiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KIAotICAgIHJjID0gRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzVyhzcmMsIHJldFZhbHVlLCByZXRWYWx1ZVNpemUpOworICAgIHJjID0gRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzVyhzdHJpbmcsIHJldFZhbHVlLCByZXRWYWx1ZVNpemUpOwogICAgIGlmIChyYyA9PSAwKSB7CiAgICAgICAgIFB5TWVtX0ZyZWUocmV0VmFsdWUpOwogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmV0VmFsdWVTaXplLApAQCAtMTI5Myw5MCArMTE4NCwxNjYgQEAKICAgICByZXR1cm4gbzsKIH0KIAorLypbY2xpbmljIGlucHV0XQord2lucmVnLkZsdXNoS2V5CisKKyAgICBrZXk6IEhLRVkKKyAgICAgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLgorICAgIC8KKworV3JpdGVzIGFsbCB0aGUgYXR0cmlidXRlcyBvZiBhIGtleSB0byB0aGUgcmVnaXN0cnkuCisKK0l0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY2FsbCBGbHVzaEtleSB0byBjaGFuZ2UgYSBrZXkuICBSZWdpc3RyeSBjaGFuZ2VzCithcmUgZmx1c2hlZCB0byBkaXNrIGJ5IHRoZSByZWdpc3RyeSB1c2luZyBpdHMgbGF6eSBmbHVzaGVyLiAgUmVnaXN0cnkKK2NoYW5nZXMgYXJlIGFsc28gZmx1c2hlZCB0byBkaXNrIGF0IHN5c3RlbSBzaHV0ZG93bi4gIFVubGlrZQorQ2xvc2VLZXkoKSwgdGhlIEZsdXNoS2V5KCkgbWV0aG9kIHJldHVybnMgb25seSB3aGVuIGFsbCB0aGUgZGF0YSBoYXMKK2JlZW4gd3JpdHRlbiB0byB0aGUgcmVnaXN0cnkuCisKK0FuIGFwcGxpY2F0aW9uIHNob3VsZCBvbmx5IGNhbGwgRmx1c2hLZXkoKSBpZiBpdCByZXF1aXJlcyBhYnNvbHV0ZQorY2VydGFpbnR5IHRoYXQgcmVnaXN0cnkgY2hhbmdlcyBhcmUgb24gZGlzay4gIElmIHlvdSBkb24ndCBrbm93IHdoZXRoZXIKK2EgRmx1c2hLZXkoKSBjYWxsIGlzIHJlcXVpcmVkLCBpdCBwcm9iYWJseSBpc24ndC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVB5Rmx1c2hLZXkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQord2lucmVnX0ZsdXNoS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXkpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjlhN2E2ZTQwNTQ2NjQyMCBpbnB1dD1mNTc0NTdjMTIyOTdkODJmXSovCiB7Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKICAgICBsb25nIHJjOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpGbHVzaEtleSIsICZvYktleSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShvYktleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gUmVnRmx1c2hLZXkoaEtleSk7CisgICAgcmMgPSBSZWdGbHVzaEtleShrZXkpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIlJlZ0ZsdXNoS2V5Iik7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQotc3RhdGljIFB5T2JqZWN0ICoKLVB5TG9hZEtleShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKLSAgICB3Y2hhcl90ICpzdWJLZXk7Ci0gICAgd2NoYXJfdCAqZmlsZU5hbWU7CiAKKworLypbY2xpbmljIGlucHV0XQord2lucmVnLkxvYWRLZXkKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgc3ViX2tleTogUHlfVU5JQ09ERQorICAgICAgICBBIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHN1Yi1rZXkgdG8gbG9hZC4KKyAgICBmaWxlX25hbWU6IFB5X1VOSUNPREUKKyAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gbG9hZCByZWdpc3RyeSBkYXRhIGZyb20uICBUaGlzIGZpbGUgbXVzdAorICAgICAgICBoYXZlIGJlZW4gY3JlYXRlZCB3aXRoIHRoZSBTYXZlS2V5KCkgZnVuY3Rpb24uICBVbmRlciB0aGUgZmlsZQorICAgICAgICBhbGxvY2F0aW9uIHRhYmxlIChGQVQpIGZpbGUgc3lzdGVtLCB0aGUgZmlsZW5hbWUgbWF5IG5vdCBoYXZlIGFuCisgICAgICAgIGV4dGVuc2lvbi4KKyAgICAvCisKK0luc2VydCBkYXRhIGludG8gdGhlIHJlZ2lzdHJ5IGZyb20gYSBmaWxlLgorCitDcmVhdGVzIGEgc3Via2V5IHVuZGVyIHRoZSBzcGVjaWZpZWQga2V5IGFuZCBzdG9yZXMgcmVnaXN0cmF0aW9uCitpbmZvcm1hdGlvbiBmcm9tIGEgc3BlY2lmaWVkIGZpbGUgaW50byB0aGF0IHN1YmtleS4KKworQSBjYWxsIHRvIExvYWRLZXkoKSBmYWlscyBpZiB0aGUgY2FsbGluZyBwcm9jZXNzIGRvZXMgbm90IGhhdmUgdGhlCitTRV9SRVNUT1JFX1BSSVZJTEVHRSBwcml2aWxlZ2UuCisKK0lmIGtleSBpcyBhIGhhbmRsZSByZXR1cm5lZCBieSBDb25uZWN0UmVnaXN0cnkoKSwgdGhlbiB0aGUgcGF0aAorc3BlY2lmaWVkIGluIGZpbGVOYW1lIGlzIHJlbGF0aXZlIHRvIHRoZSByZW1vdGUgY29tcHV0ZXIuCisKK1RoZSBNU0ROIGRvY3MgaW1wbHkga2V5IG11c3QgYmUgaW4gdGhlIEhLRVlfVVNFUiBvciBIS0VZX0xPQ0FMX01BQ0hJTkUKK3RyZWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfTG9hZEtleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAorICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpmaWxlX25hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjhiNzAwZTM5YzY5NWI5MCBpbnB1dD1lM2I1YjQ1YWRlMzExNTgyXSovCit7CiAgICAgbG9uZyByYzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk91dTpMb2FkS2V5IiwgJm9iS2V5LCAmc3ViS2V5LCAmZmlsZU5hbWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5SEtFWV9Bc0hLRVkob2JLZXksICZoS2V5LCBGQUxTRSkpCi0gICAgICAgIHJldHVybiBOVUxMOworCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gUmVnTG9hZEtleVcoaEtleSwgc3ViS2V5LCBmaWxlTmFtZSApOworICAgIHJjID0gUmVnTG9hZEtleVcoa2V5LCBzdWJfa2V5LCBmaWxlX25hbWUgKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmMsICJSZWdMb2FkS2V5Iik7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotUHlPcGVuS2V5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5PcGVuS2V5IC0+IEhLRVkKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgc3ViX2tleTogUHlfVU5JQ09ERShhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KQorICAgICAgICBBIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHN1Yl9rZXkgdG8gb3Blbi4KKyAgICByZXNlcnZlZDogaW50ID0gMAorICAgICAgICBBIHJlc2VydmVkIGludGVnZXIgdGhhdCBtdXN0IGJlIHplcm8uICBEZWZhdWx0IGlzIHplcm8uCisgICAgYWNjZXNzOiBSRUdTQU0oY19kZWZhdWx0PSdLRVlfUkVBRCcpID0gd2lucmVnLktFWV9SRUFECisgICAgICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgYW4gYWNjZXNzIG1hc2sgdGhhdCBkZXNjcmliZXMgdGhlIGRlc2lyZWQKKyAgICAgICAgc2VjdXJpdHkgYWNjZXNzIGZvciB0aGUga2V5LiAgRGVmYXVsdCBpcyBLRVlfUkVBRC4KKworT3BlbnMgdGhlIHNwZWNpZmllZCBrZXkuCisKK1RoZSByZXN1bHQgaXMgYSBuZXcgaGFuZGxlIHRvIHRoZSBzcGVjaWZpZWQga2V5LgorSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBIS0VZCit3aW5yZWdfT3BlbktleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAorICAgICAgICAgICAgICAgICAgICBpbnQgcmVzZXJ2ZWQsIFJFR1NBTSBhY2Nlc3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Nzk4MThlYTM1NjQ5MGE1NSBpbnB1dD0wOTg1MDVhYzM2YTlhZTI4XSovCiB7Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICprZXk7Ci0gICAgd2NoYXJfdCAqc3ViX2tleTsKLSAgICBpbnQgcmVzZXJ2ZWQgPSAwOwogICAgIEhLRVkgcmV0S2V5OwogICAgIGxvbmcgcmM7Ci0gICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9SRUFEOwotCi0gICAgY2hhciAqa3dsaXN0W10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT1p8aWk6T3BlbktleSIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUhLRVlfQXNIS0VZKGtleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBSZWdPcGVuS2V5RXhXKGhLZXksIHN1Yl9rZXksIHJlc2VydmVkLCBhY2Nlc3MsICZyZXRLZXkpOworICAgIHJjID0gUmVnT3BlbktleUV4VyhrZXksIHN1Yl9rZXksIHJlc2VydmVkLCBhY2Nlc3MsICZyZXRLZXkpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIlJlZ09wZW5LZXlFeCIpOwotICAgIHJldHVybiBQeUhLRVlfRnJvbUhLRVkocmV0S2V5KTsKKyAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykgeworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIlJlZ09wZW5LZXlFeCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIHJldEtleTsKIH0KIAorLypbY2xpbmljIGlucHV0XQord2lucmVnLk9wZW5LZXlFeCA9IHdpbnJlZy5PcGVuS2V5CisKK09wZW5zIHRoZSBzcGVjaWZpZWQga2V5LgorCitUaGUgcmVzdWx0IGlzIGEgbmV3IGhhbmRsZSB0byB0aGUgc3BlY2lmaWVkIGtleS4KK0lmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgSEtFWQord2lucmVnX09wZW5LZXlFeF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAorICAgICAgICAgICAgICAgICAgICAgIGludCByZXNlcnZlZCwgUkVHU0FNIGFjY2VzcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZGQ5ZjI5ZTg0ZWEyZGJjIGlucHV0PWM2YzQ5NzJhZjg2MjI5NTldKi8KK3sKKyAgICByZXR1cm4gd2lucmVnX09wZW5LZXlfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgcmVzZXJ2ZWQsIGFjY2Vzcyk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5RdWVyeUluZm9LZXkKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgLworCitSZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEga2V5LgorCitUaGUgcmVzdWx0IGlzIGEgdHVwbGUgb2YgMyBpdGVtczoKK0FuIGludGVnZXIgdGhhdCBpZGVudGlmaWVzIHRoZSBudW1iZXIgb2Ygc3ViIGtleXMgdGhpcyBrZXkgaGFzLgorQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIG51bWJlciBvZiB2YWx1ZXMgdGhpcyBrZXkgaGFzLgorQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgd2hlbiB0aGUga2V5IHdhcyBsYXN0IG1vZGlmaWVkIChpZiBhdmFpbGFibGUpCithcyAxMDAncyBvZiBuYW5vc2Vjb25kcyBzaW5jZSBKYW4gMSwgMTYwMC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5UXVlcnlJbmZvS2V5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbnJlZ19RdWVyeUluZm9LZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hZTg4NTIyMmZlOTY2YTM0IGlucHV0PWMzNTkzODAyMzkwY2RlMWZdKi8KIHsKLSAgSEtFWSBoS2V5OwotICBQeU9iamVjdCAqb2JLZXk7CiAgIGxvbmcgcmM7CiAgIERXT1JEIG5TdWJLZXlzLCBuVmFsdWVzOwogICBGSUxFVElNRSBmdDsKICAgTEFSR0VfSU5URUdFUiBsaTsKICAgUHlPYmplY3QgKmw7CiAgIFB5T2JqZWN0ICpyZXQ7Ci0gIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpRdWVyeUluZm9LZXkiLCAmb2JLZXkpKQotICAgIHJldHVybiBOVUxMOwotICBpZiAoIVB5SEtFWV9Bc0hLRVkob2JLZXksICZoS2V5LCBGQUxTRSkpCi0gICAgcmV0dXJuIE5VTEw7Ci0gIGlmICgocmMgPSBSZWdRdWVyeUluZm9LZXkoaEtleSwgTlVMTCwgTlVMTCwgMCwgJm5TdWJLZXlzLCBOVUxMLCBOVUxMLAorCisgIGlmICgocmMgPSBSZWdRdWVyeUluZm9LZXkoa2V5LCBOVUxMLCBOVUxMLCAwLCAmblN1YktleXMsIE5VTEwsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5WYWx1ZXMsICBOVUxMLCAgTlVMTCwgTlVMTCwgJmZ0KSkKICAgICAgICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLCAiUmVnUXVlcnlJbmZvS2V5Iik7CkBAIC0xMzkwLDEyICsxMzU3LDMxIEBACiAgIHJldHVybiByZXQ7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5RdWVyeVZhbHVlCisKKyAgICBrZXk6IEhLRVkKKyAgICAgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLgorICAgIHN1Yl9rZXk6IFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICAgICAgQSBzdHJpbmcgdGhhdCBob2xkcyB0aGUgbmFtZSBvZiB0aGUgc3Via2V5IHdpdGggd2hpY2ggdGhlIHZhbHVlCisgICAgICAgIGlzIGFzc29jaWF0ZWQuICBJZiB0aGlzIHBhcmFtZXRlciBpcyBOb25lIG9yIGVtcHR5LCB0aGUgZnVuY3Rpb24KKyAgICAgICAgcmV0cmlldmVzIHRoZSB2YWx1ZSBzZXQgYnkgdGhlIFNldFZhbHVlKCkgbWV0aG9kIGZvciB0aGUga2V5CisgICAgICAgIGlkZW50aWZpZWQgYnkga2V5LgorICAgIC8KKworUmV0cmlldmVzIHRoZSB1bm5hbWVkIHZhbHVlIGZvciBhIGtleS4KKworVmFsdWVzIGluIHRoZSByZWdpc3RyeSBoYXZlIG5hbWUsIHR5cGUsIGFuZCBkYXRhIGNvbXBvbmVudHMuIFRoaXMgbWV0aG9kCityZXRyaWV2ZXMgdGhlIGRhdGEgZm9yIGEga2V5J3MgZmlyc3QgdmFsdWUgdGhhdCBoYXMgYSBOVUxMIG5hbWUuCitCdXQgc2luY2UgdGhlIHVuZGVybHlpbmcgQVBJIGNhbGwgZG9lc24ndCByZXR1cm4gdGhlIHR5cGUsIHlvdSdsbAorcHJvYmFibHkgYmUgaGFwcGllciB1c2luZyBRdWVyeVZhbHVlRXg7IHRoaXMgZnVuY3Rpb24gaXMganVzdCBoZXJlIGZvcgorY29tcGxldGVuZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlRdWVyeVZhbHVlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbnJlZ19RdWVyeVZhbHVlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXkpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjkxY2I2ZjYyM2MzYjY1YSBpbnB1dD00MWNhZmJiZjQyM2IyMWQ2XSovCiB7Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKLSAgICB3Y2hhcl90ICpzdWJLZXk7CiAgICAgbG9uZyByYzsKICAgICBQeU9iamVjdCAqcmV0U3RyOwogICAgIHdjaGFyX3QgKnJldEJ1ZjsKQEAgLTE0MDMsMTMgKzEzODksNyBAQAogICAgIERXT1JEIHJldFNpemUgPSAwOwogICAgIHdjaGFyX3QgKnRtcDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT1o6UXVlcnlWYWx1ZSIsICZvYktleSwgJnN1YktleSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKCFQeUhLRVlfQXNIS0VZKG9iS2V5LCAmaEtleSwgRkFMU0UpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJjID0gUmVnUXVlcnlWYWx1ZVcoaEtleSwgc3ViS2V5LCBOVUxMLCAmcmV0U2l6ZSk7CisgICAgcmMgPSBSZWdRdWVyeVZhbHVlVyhrZXksIHN1Yl9rZXksIE5VTEwsICZyZXRTaXplKTsKICAgICBpZiAocmMgPT0gRVJST1JfTU9SRV9EQVRBKQogICAgICAgICByZXRTaXplID0gMjU2OwogICAgIGVsc2UgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCkBAIC0xNDIzLDcgKzE0MDMsNyBAQAogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgcmV0U2l6ZSA9IGJ1ZlNpemU7Ci0gICAgICAgIHJjID0gUmVnUXVlcnlWYWx1ZVcoaEtleSwgc3ViS2V5LCByZXRCdWYsICZyZXRTaXplKTsKKyAgICAgICAgcmMgPSBSZWdRdWVyeVZhbHVlVyhrZXksIHN1Yl9rZXksIHJldEJ1ZiwgJnJldFNpemUpOwogICAgICAgICBpZiAocmMgIT0gRVJST1JfTU9SRV9EQVRBKQogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTE0NDcsMTMgKzE0MjcsMjggQEAKICAgICByZXR1cm4gcmV0U3RyOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotUHlRdWVyeVZhbHVlRXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIEhLRVkgaEtleTsKLSAgICBQeU9iamVjdCAqb2JLZXk7Ci0gICAgd2NoYXJfdCAqdmFsdWVOYW1lOwogCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuUXVlcnlWYWx1ZUV4CisKKyAgICBrZXk6IEhLRVkKKyAgICAgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLgorICAgIG5hbWU6IFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICAgICAgQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgdmFsdWUgdG8gcXVlcnkuCisgICAgLworCitSZXRyaWV2ZXMgdGhlIHR5cGUgYW5kIHZhbHVlIG9mIGEgc3BlY2lmaWVkIHN1Yi1rZXkuCisKK0JlaGF2ZXMgbW9zdGx5IGxpa2UgUXVlcnlWYWx1ZSgpLCBidXQgYWxzbyByZXR1cm5zIHRoZSB0eXBlIG9mIHRoZQorc3BlY2lmaWVkIHZhbHVlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBvcGVuIHJlZ2lzdHJ5IGtleS4KKworVGhlIHJldHVybiB2YWx1ZSBpcyBhIHR1cGxlIG9mIHRoZSB2YWx1ZSBhbmQgdGhlIHR5cGVfaWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfUXVlcnlWYWx1ZUV4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKm5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTRiMDdmNzgwNzE5NGYyMyBpbnB1dD1jZjM2NmNhZGE0ODM2ODkxXSovCit7CiAgICAgbG9uZyByYzsKICAgICBCWVRFICpyZXRCdWYsICp0bXA7CiAgICAgRFdPUkQgYnVmU2l6ZSA9IDAsIHJldFNpemU7CkBAIC0xNDYxLDEzICsxNDU2LDcgQEAKICAgICBQeU9iamVjdCAqb2JEYXRhOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9aOlF1ZXJ5VmFsdWVFeCIsICZvYktleSwgJnZhbHVlTmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKCFQeUhLRVlfQXNIS0VZKG9iS2V5LCAmaEtleSwgRkFMU0UpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJjID0gUmVnUXVlcnlWYWx1ZUV4VyhoS2V5LCB2YWx1ZU5hbWUsIE5VTEwsIE5VTEwsIE5VTEwsICZidWZTaXplKTsKKyAgICByYyA9IFJlZ1F1ZXJ5VmFsdWVFeFcoa2V5LCBuYW1lLCBOVUxMLCBOVUxMLCBOVUxMLCAmYnVmU2l6ZSk7CiAgICAgaWYgKHJjID09IEVSUk9SX01PUkVfREFUQSkKICAgICAgICAgYnVmU2l6ZSA9IDI1NjsKICAgICBlbHNlIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKQpAQCAtMTQ3OSw3ICsxNDY4LDcgQEAKIAogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIHJldFNpemUgPSBidWZTaXplOwotICAgICAgICByYyA9IFJlZ1F1ZXJ5VmFsdWVFeFcoaEtleSwgdmFsdWVOYW1lLCBOVUxMLCAmdHlwLAorICAgICAgICByYyA9IFJlZ1F1ZXJ5VmFsdWVFeFcoa2V5LCBuYW1lLCBOVUxMLCAmdHlwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQllURSAqKXJldEJ1ZiwgJnJldFNpemUpOwogICAgICAgICBpZiAocmMgIT0gRVJST1JfTU9SRV9EQVRBKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTA3LDkxICsxNDk2LDE0OSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5TYXZlS2V5CisKKyAgICBrZXk6IEhLRVkKKyAgICAgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLgorICAgIGZpbGVfbmFtZTogUHlfVU5JQ09ERQorICAgICAgICBUaGUgbmFtZSBvZiB0aGUgZmlsZSB0byBzYXZlIHJlZ2lzdHJ5IGRhdGEgdG8uICBUaGlzIGZpbGUgY2Fubm90CisgICAgICAgIGFscmVhZHkgZXhpc3QuIElmIHRoaXMgZmlsZW5hbWUgaW5jbHVkZXMgYW4gZXh0ZW5zaW9uLCBpdCBjYW5ub3QgYmUKKyAgICAgICAgdXNlZCBvbiBmaWxlIGFsbG9jYXRpb24gdGFibGUgKEZBVCkgZmlsZSBzeXN0ZW1zIGJ5IHRoZSBMb2FkS2V5KCksCisgICAgICAgIFJlcGxhY2VLZXkoKSBvciBSZXN0b3JlS2V5KCkgbWV0aG9kcy4KKyAgICAvCisKK1NhdmVzIHRoZSBzcGVjaWZpZWQga2V5LCBhbmQgYWxsIGl0cyBzdWJrZXlzIHRvIHRoZSBzcGVjaWZpZWQgZmlsZS4KKworSWYga2V5IHJlcHJlc2VudHMgYSBrZXkgb24gYSByZW1vdGUgY29tcHV0ZXIsIHRoZSBwYXRoIGRlc2NyaWJlZCBieQorZmlsZV9uYW1lIGlzIHJlbGF0aXZlIHRvIHRoZSByZW1vdGUgY29tcHV0ZXIuCisKK1RoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2QgbXVzdCBwb3NzZXNzIHRoZSBTZUJhY2t1cFByaXZpbGVnZQorc2VjdXJpdHkgcHJpdmlsZWdlLiAgVGhpcyBmdW5jdGlvbiBwYXNzZXMgTlVMTCBmb3Igc2VjdXJpdHlfYXR0cmlidXRlcwordG8gdGhlIEFQSS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5U2F2ZUtleShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5yZWdfU2F2ZUtleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpmaWxlX25hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzMxMDliOTZiZmFiZWY4ZiBpbnB1dD1kYTczNTI0MWY5MWFjN2EyXSovCiB7Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKLSAgICB3Y2hhcl90ICpmaWxlTmFtZTsKICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgcFNBID0gTlVMTDsKIAogICAgIGxvbmcgcmM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPdTpTYXZlS2V5IiwgJm9iS2V5LCAmZmlsZU5hbWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5SEtFWV9Bc0hLRVkob2JLZXksICZoS2V5LCBGQUxTRSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogLyogIE9uZSBkYXkgd2UgbWF5IGdldCBzZWN1cml0eSBpbnRvIHRoZSBjb3JlPwogICAgIGlmICghUHlXaW5PYmplY3RfQXNTRUNVUklUWV9BVFRSSUJVVEVTKG9iU0EsICZwU0EsIFRSVUUpKQogICAgICAgICByZXR1cm4gTlVMTDsKICovCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gUmVnU2F2ZUtleVcoaEtleSwgZmlsZU5hbWUsIHBTQSApOworICAgIHJjID0gUmVnU2F2ZUtleVcoa2V5LCBmaWxlX25hbWUsIHBTQSApOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIlJlZ1NhdmVLZXkiKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5TZXRWYWx1ZQorCisgICAga2V5OiBIS0VZCisgICAgICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy4KKyAgICBzdWJfa2V5OiBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCisgICAgICAgIEEgc3RyaW5nIHRoYXQgbmFtZXMgdGhlIHN1YmtleSB3aXRoIHdoaWNoIHRoZSB2YWx1ZSBpcyBhc3NvY2lhdGVkLgorICAgIHR5cGU6IERXT1JECisgICAgICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGRhdGEuICBDdXJyZW50bHkgdGhpcyBtdXN0CisgICAgICAgIGJlIFJFR19TWiwgbWVhbmluZyBvbmx5IHN0cmluZ3MgYXJlIHN1cHBvcnRlZC4KKyAgICB2YWx1ZTogUHlfVU5JQ09ERSh6ZXJvZXM9VHJ1ZSkKKyAgICAgICAgQSBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG5ldyB2YWx1ZS4KKyAgICAvCisKK0Fzc29jaWF0ZXMgYSB2YWx1ZSB3aXRoIGEgc3BlY2lmaWVkIGtleS4KKworSWYgdGhlIGtleSBzcGVjaWZpZWQgYnkgdGhlIHN1Yl9rZXkgcGFyYW1ldGVyIGRvZXMgbm90IGV4aXN0LCB0aGUKK1NldFZhbHVlIGZ1bmN0aW9uIGNyZWF0ZXMgaXQuCisKK1ZhbHVlIGxlbmd0aHMgYXJlIGxpbWl0ZWQgYnkgYXZhaWxhYmxlIG1lbW9yeS4gTG9uZyB2YWx1ZXMgKG1vcmUgdGhhbgorMjA0OCBieXRlcykgc2hvdWxkIGJlIHN0b3JlZCBhcyBmaWxlcyB3aXRoIHRoZSBmaWxlbmFtZXMgc3RvcmVkIGluCit0aGUgY29uZmlndXJhdGlvbiByZWdpc3RyeSB0byBoZWxwIHRoZSByZWdpc3RyeSBwZXJmb3JtIGVmZmljaWVudGx5LgorCitUaGUga2V5IGlkZW50aWZpZWQgYnkgdGhlIGtleSBwYXJhbWV0ZXIgbXVzdCBoYXZlIGJlZW4gb3BlbmVkIHdpdGgKK0tFWV9TRVRfVkFMVUUgYWNjZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTZXRWYWx1ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5yZWdfU2V0VmFsdWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKKyAgICAgICAgICAgICAgICAgICAgIERXT1JEIHR5cGUsIFB5X1VOSUNPREUgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCB2YWx1ZV9sZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2M5YzdjMjc2OWU4Zjk1MyBpbnB1dD0yY2QyYWRhYjc5MzM5YzUzXSovCiB7Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKLSAgICB3Y2hhcl90ICpzdWJLZXk7Ci0gICAgd2NoYXJfdCAqc3RyOwotICAgIERXT1JEIHR5cDsKLSAgICBEV09SRCBsZW47CiAgICAgbG9uZyByYzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9aaXUjOlNldFZhbHVlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9iS2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3ViS2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAmdHlwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbGVuKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUhLRVlfQXNIS0VZKG9iS2V5LCAmaEtleSwgRkFMU0UpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAodHlwICE9IFJFR19TWikgeworCisgICAgaWYgKHR5cGUgIT0gUkVHX1NaKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiVHlwZSBtdXN0IGJlIHdpbnJlZy5SRUdfU1oiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gUmVnU2V0VmFsdWVXKGhLZXksIHN1YktleSwgUkVHX1NaLCBzdHIsIGxlbisxKTsKKyAgICByYyA9IFJlZ1NldFZhbHVlVyhrZXksIHN1Yl9rZXksIFJFR19TWiwgdmFsdWUsIHZhbHVlX2xlbmd0aCsxKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmMsICJSZWdTZXRWYWx1ZSIpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorLypbY2xpbmljIGlucHV0XQord2lucmVnLlNldFZhbHVlRXgKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgdmFsdWVfbmFtZTogUHlfVU5JQ09ERShhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KQorICAgICAgICBBIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSB2YWx1ZSB0byBzZXQsIG9yIE5vbmUuCisgICAgcmVzZXJ2ZWQ6IG9iamVjdAorICAgICAgICBDYW4gYmUgYW55dGhpbmcgLSB6ZXJvIGlzIGFsd2F5cyBwYXNzZWQgdG8gdGhlIEFQSS4KKyAgICB0eXBlOiBEV09SRAorICAgICAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBkYXRhLCBvbmUgb2Y6CisgICAgICAgIFJFR19CSU5BUlkgLS0gQmluYXJ5IGRhdGEgaW4gYW55IGZvcm0uCisgICAgICAgIFJFR19EV09SRCAtLSBBIDMyLWJpdCBudW1iZXIuCisgICAgICAgIFJFR19EV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4KKyAgICAgICAgUkVHX0RXT1JEX0JJR19FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGJpZy1lbmRpYW4gZm9ybWF0LgorICAgICAgICBSRUdfRVhQQU5EX1NaIC0tIEEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyB0aGF0IGNvbnRhaW5zIHVuZXhwYW5kZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzIHRvIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZm9yIGV4YW1wbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJVBBVEglKS4KKyAgICAgICAgUkVHX0xJTksgLS0gQSBVbmljb2RlIHN5bWJvbGljIGxpbmsuCisgICAgICAgIFJFR19NVUxUSV9TWiAtLSBBbiBzZXF1ZW5jZSBvZiBudWxsLXRlcm1pbmF0ZWQgc3RyaW5ncywgdGVybWluYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgYnkgdHdvIG51bGwgY2hhcmFjdGVycy4gIE5vdGUgdGhhdCBQeXRob24gaGFuZGxlcworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyB0ZXJtaW5hdGlvbiBhdXRvbWF0aWNhbGx5LgorICAgICAgICBSRUdfTk9ORSAtLSBObyBkZWZpbmVkIHZhbHVlIHR5cGUuCisgICAgICAgIFJFR19SRVNPVVJDRV9MSVNUIC0tIEEgZGV2aWNlLWRyaXZlciByZXNvdXJjZSBsaXN0LgorICAgICAgICBSRUdfU1ogLS0gQSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgorICAgIHZhbHVlOiBvYmplY3QKKyAgICAgICAgQSBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG5ldyB2YWx1ZS4KKyAgICAvCisKK1N0b3JlcyBkYXRhIGluIHRoZSB2YWx1ZSBmaWVsZCBvZiBhbiBvcGVuIHJlZ2lzdHJ5IGtleS4KKworVGhpcyBtZXRob2QgY2FuIGFsc28gc2V0IGFkZGl0aW9uYWwgdmFsdWUgYW5kIHR5cGUgaW5mb3JtYXRpb24gZm9yIHRoZQorc3BlY2lmaWVkIGtleS4gIFRoZSBrZXkgaWRlbnRpZmllZCBieSB0aGUga2V5IHBhcmFtZXRlciBtdXN0IGhhdmUgYmVlbgorb3BlbmVkIHdpdGggS0VZX1NFVF9WQUxVRSBhY2Nlc3MuCisKK1RvIG9wZW4gdGhlIGtleSwgdXNlIHRoZSBDcmVhdGVLZXlFeCgpIG9yIE9wZW5LZXlFeCgpIG1ldGhvZHMuCisKK1ZhbHVlIGxlbmd0aHMgYXJlIGxpbWl0ZWQgYnkgYXZhaWxhYmxlIG1lbW9yeS4gTG9uZyB2YWx1ZXMgKG1vcmUgdGhhbgorMjA0OCBieXRlcykgc2hvdWxkIGJlIHN0b3JlZCBhcyBmaWxlcyB3aXRoIHRoZSBmaWxlbmFtZXMgc3RvcmVkIGluCit0aGUgY29uZmlndXJhdGlvbiByZWdpc3RyeSB0byBoZWxwIHRoZSByZWdpc3RyeSBwZXJmb3JtIGVmZmljaWVudGx5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTZXRWYWx1ZUV4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbnJlZ19TZXRWYWx1ZUV4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnZhbHVlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXNlcnZlZCwgRFdPUkQgdHlwZSwgUHlPYmplY3QgKnZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVhMDkyYTkzNWMzNjE1ODIgaW5wdXQ9ZTczZGVjNTM1ZWJlZWE3ZF0qLwogewotICAgIEhLRVkgaEtleTsKLSAgICBQeU9iamVjdCAqb2JLZXk7Ci0gICAgd2NoYXJfdCAqdmFsdWVOYW1lOwotICAgIFB5T2JqZWN0ICpvYlJlczsKLSAgICBQeU9iamVjdCAqdmFsdWU7CiAgICAgQllURSAqZGF0YTsKICAgICBEV09SRCBsZW47Ci0gICAgRFdPUkQgdHlwOwogCiAgICAgTE9ORyByYzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT1pPaU86U2V0VmFsdWVFeCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvYktleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhbHVlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9iUmVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmdHlwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5SEtFWV9Bc0hLRVkob2JLZXksICZoS2V5LCBGQUxTRSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHkyUmVnKHZhbHVlLCB0eXAsICZkYXRhLCAmbGVuKSkKKyAgICBpZiAoIVB5MlJlZyh2YWx1ZSwgdHlwZSwgJmRhdGEsICZsZW4pKQogICAgIHsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCkBAIC0xNTk5LDMxICsxNjQ2LDQwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBSZWdTZXRWYWx1ZUV4VyhoS2V5LCB2YWx1ZU5hbWUsIDAsIHR5cCwgZGF0YSwgbGVuKTsKKyAgICByYyA9IFJlZ1NldFZhbHVlRXhXKGtleSwgdmFsdWVfbmFtZSwgMCwgdHlwZSwgZGF0YSwgbGVuKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIFB5TWVtX0RFTChkYXRhKTsKICAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlZ1NldFZhbHVlRXgiKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5EaXNhYmxlUmVmbGVjdGlvbktleQorCisgICAga2V5OiBIS0VZCisgICAgICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy4KKyAgICAvCisKK0Rpc2FibGVzIHJlZ2lzdHJ5IHJlZmxlY3Rpb24gZm9yIDMyYml0IHByb2Nlc3NlcyBydW5uaW5nIG9uIGEgNjRiaXQgT1MuCisKK1dpbGwgZ2VuZXJhbGx5IHJhaXNlIE5vdEltcGxlbWVudGVkIGlmIGV4ZWN1dGVkIG9uIGEgMzJiaXQgT1MuCisKK0lmIHRoZSBrZXkgaXMgbm90IG9uIHRoZSByZWZsZWN0aW9uIGxpc3QsIHRoZSBmdW5jdGlvbiBzdWNjZWVkcyBidXQgaGFzCitubyBlZmZlY3QuICBEaXNhYmxpbmcgcmVmbGVjdGlvbiBmb3IgYSBrZXkgZG9lcyBub3QgYWZmZWN0IHJlZmxlY3Rpb24KK29mIGFueSBzdWJrZXlzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlEaXNhYmxlUmVmbGVjdGlvbktleShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5yZWdfRGlzYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MGZlNmUyNjA0MzI0Y2RkIGlucHV0PWE2YzllNWNhNTQxMDE5M2NdKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKm9iS2V5OwogICAgIEhNT0RVTEUgaE1vZDsKICAgICB0eXBlZGVmIExPTkcgKFdJTkFQSSAqUkRSS0Z1bmMpKEhLRVkpOwogICAgIFJEUktGdW5jIHBmbiA9IE5VTEw7CiAgICAgTE9ORyByYzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpEaXNhYmxlUmVmbGVjdGlvbktleSIsICZvYktleSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShvYktleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICAvKiBPbmx5IGF2YWlsYWJsZSBvbiA2NGJpdCBwbGF0Zm9ybXMsIHNvIHdlIG11c3QgbG9hZCBpdAogICAgICAgIGR5bmFtaWNhbGx5LiovCiAgICAgaE1vZCA9IEdldE1vZHVsZUhhbmRsZVcoTCJhZHZhcGkzMi5kbGwiKTsKQEAgLTE2MzYsMzAgKzE2OTIsMzcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByYyA9ICgqcGZuKShoS2V5KTsKKyAgICByYyA9ICgqcGZuKShrZXkpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZWdEaXNhYmxlUmVmbGVjdGlvbktleSIpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorLypbY2xpbmljIGlucHV0XQord2lucmVnLkVuYWJsZVJlZmxlY3Rpb25LZXkKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgLworCitSZXN0b3JlcyByZWdpc3RyeSByZWZsZWN0aW9uIGZvciB0aGUgc3BlY2lmaWVkIGRpc2FibGVkIGtleS4KKworV2lsbCBnZW5lcmFsbHkgcmFpc2UgTm90SW1wbGVtZW50ZWQgaWYgZXhlY3V0ZWQgb24gYSAzMmJpdCBPUy4KK1Jlc3RvcmluZyByZWZsZWN0aW9uIGZvciBhIGtleSBkb2VzIG5vdCBhZmZlY3QgcmVmbGVjdGlvbiBvZiBhbnkKK3N1YmtleXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1QeUVuYWJsZVJlZmxlY3Rpb25LZXkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQord2lucmVnX0VuYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lM2YyM2VkYjQxNGYyNGE0IGlucHV0PTc3NDhhYmJhY2QxZTE2NmFdKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKm9iS2V5OwogICAgIEhNT0RVTEUgaE1vZDsKICAgICB0eXBlZGVmIExPTkcgKFdJTkFQSSAqUkVSS0Z1bmMpKEhLRVkpOwogICAgIFJFUktGdW5jIHBmbiA9IE5VTEw7CiAgICAgTE9ORyByYzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpFbmFibGVSZWZsZWN0aW9uS2V5IiwgJm9iS2V5KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUhLRVlfQXNIS0VZKG9iS2V5LCAmaEtleSwgRkFMU0UpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIC8qIE9ubHkgYXZhaWxhYmxlIG9uIDY0Yml0IHBsYXRmb3Jtcywgc28gd2UgbXVzdCBsb2FkIGl0CiAgICAgICAgZHluYW1pY2FsbHkuKi8KICAgICBoTW9kID0gR2V0TW9kdWxlSGFuZGxlVyhMImFkdmFwaTMyLmRsbCIpOwpAQCAtMTY3MiwzMSArMTczNSwzNiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gKCpwZm4pKGhLZXkpOworICAgIHJjID0gKCpwZm4pKGtleSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlZ0VuYWJsZVJlZmxlY3Rpb25LZXkiKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5RdWVyeVJlZmxlY3Rpb25LZXkKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgLworCitSZXR1cm5zIHRoZSByZWZsZWN0aW9uIHN0YXRlIGZvciB0aGUgc3BlY2lmaWVkIGtleSBhcyBhIGJvb2wuCisKK1dpbGwgZ2VuZXJhbGx5IHJhaXNlIE5vdEltcGxlbWVudGVkIGlmIGV4ZWN1dGVkIG9uIGEgMzJiaXQgT1MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVF1ZXJ5UmVmbGVjdGlvbktleShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5yZWdfUXVlcnlSZWZsZWN0aW9uS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXkpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmE0OWM1NjRjYTE2MmU1MCBpbnB1dD05ZjMyNWVhY2I1YTY1ZDg4XSovCiB7Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKICAgICBITU9EVUxFIGhNb2Q7CiAgICAgdHlwZWRlZiBMT05HIChXSU5BUEkgKlJRUktGdW5jKShIS0VZLCBCT09MICopOwogICAgIFJRUktGdW5jIHBmbiA9IE5VTEw7CiAgICAgQk9PTCByZXN1bHQ7CiAgICAgTE9ORyByYzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpRdWVyeVJlZmxlY3Rpb25LZXkiLCAmb2JLZXkpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5SEtFWV9Bc0hLRVkob2JLZXksICZoS2V5LCBGQUxTRSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgLyogT25seSBhdmFpbGFibGUgb24gNjRiaXQgcGxhdGZvcm1zLCBzbyB3ZSBtdXN0IGxvYWQgaXQKICAgICAgICBkeW5hbWljYWxseS4qLwogICAgIGhNb2QgPSBHZXRNb2R1bGVIYW5kbGVXKEwiYWR2YXBpMzIuZGxsIik7CkBAIC0xNzA5LDcgKzE3NzcsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gKCpwZm4pKGhLZXksICZyZXN1bHQpOworICAgIHJjID0gKCpwZm4pKGtleSwgJnJlc3VsdCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLApAQCAtMTcxOCwzNCArMTc4NiwyOSBAQAogfQogCiBzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIHdpbnJlZ19tZXRob2RzW10gPSB7Ci0gICAgeyJDbG9zZUtleSIsICAgICAgICAgUHlDbG9zZUtleSwgICAgICAgIE1FVEhfVkFSQVJHUywgQ2xvc2VLZXlfZG9jfSwKLSAgICB7IkNvbm5lY3RSZWdpc3RyeSIsICBQeUNvbm5lY3RSZWdpc3RyeSwgTUVUSF9WQVJBUkdTLCBDb25uZWN0UmVnaXN0cnlfZG9jfSwKLSAgICB7IkNyZWF0ZUtleSIsICAgICAgICBQeUNyZWF0ZUtleSwgICAgICAgTUVUSF9WQVJBUkdTLCBDcmVhdGVLZXlfZG9jfSwKLSAgICB7IkNyZWF0ZUtleUV4IiwgICAgICAoUHlDRnVuY3Rpb24pUHlDcmVhdGVLZXlFeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBDcmVhdGVLZXlFeF9kb2N9LAotICAgIHsiRGVsZXRlS2V5IiwgICAgICAgIFB5RGVsZXRlS2V5LCAgICAgICBNRVRIX1ZBUkFSR1MsIERlbGV0ZUtleV9kb2N9LAotICAgIHsiRGVsZXRlS2V5RXgiLCAgICAgIChQeUNGdW5jdGlvbilQeURlbGV0ZUtleUV4LAotICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIERlbGV0ZUtleUV4X2RvY30sCi0gICAgeyJEZWxldGVWYWx1ZSIsICAgICAgUHlEZWxldGVWYWx1ZSwgICAgIE1FVEhfVkFSQVJHUywgRGVsZXRlVmFsdWVfZG9jfSwKLSAgICB7IkRpc2FibGVSZWZsZWN0aW9uS2V5IiwgUHlEaXNhYmxlUmVmbGVjdGlvbktleSwgTUVUSF9WQVJBUkdTLCBEaXNhYmxlUmVmbGVjdGlvbktleV9kb2N9LAotICAgIHsiRW5hYmxlUmVmbGVjdGlvbktleSIsICBQeUVuYWJsZVJlZmxlY3Rpb25LZXksICBNRVRIX1ZBUkFSR1MsIEVuYWJsZVJlZmxlY3Rpb25LZXlfZG9jfSwKLSAgICB7IkVudW1LZXkiLCAgICAgICAgICBQeUVudW1LZXksICAgICAgICAgTUVUSF9WQVJBUkdTLCBFbnVtS2V5X2RvY30sCi0gICAgeyJFbnVtVmFsdWUiLCAgICAgICAgUHlFbnVtVmFsdWUsICAgICAgIE1FVEhfVkFSQVJHUywgRW51bVZhbHVlX2RvY30sCi0gICAgeyJFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MiLCBQeUV4cGFuZEVudmlyb25tZW50U3RyaW5ncywgTUVUSF9WQVJBUkdTLAotICAgICAgICBFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NfZG9jIH0sCi0gICAgeyJGbHVzaEtleSIsICAgICAgICAgUHlGbHVzaEtleSwgICAgICAgIE1FVEhfVkFSQVJHUywgRmx1c2hLZXlfZG9jfSwKLSAgICB7IkxvYWRLZXkiLCAgICAgICAgICBQeUxvYWRLZXksICAgICAgICAgTUVUSF9WQVJBUkdTLCBMb2FkS2V5X2RvY30sCi0gICAgeyJPcGVuS2V5IiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5T3BlbktleSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuS2V5X2RvY30sCi0gICAgeyJPcGVuS2V5RXgiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5T3BlbktleSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuS2V5RXhfZG9jfSwKLSAgICB7IlF1ZXJ5VmFsdWUiLCAgICAgICBQeVF1ZXJ5VmFsdWUsICAgICAgTUVUSF9WQVJBUkdTLCBRdWVyeVZhbHVlX2RvY30sCi0gICAgeyJRdWVyeVZhbHVlRXgiLCAgICAgUHlRdWVyeVZhbHVlRXgsICAgIE1FVEhfVkFSQVJHUywgUXVlcnlWYWx1ZUV4X2RvY30sCi0gICAgeyJRdWVyeUluZm9LZXkiLCAgICAgUHlRdWVyeUluZm9LZXksICAgIE1FVEhfVkFSQVJHUywgUXVlcnlJbmZvS2V5X2RvY30sCi0gICAgeyJRdWVyeVJlZmxlY3Rpb25LZXkiLFB5UXVlcnlSZWZsZWN0aW9uS2V5LE1FVEhfVkFSQVJHUywgUXVlcnlSZWZsZWN0aW9uS2V5X2RvY30sCi0gICAgeyJTYXZlS2V5IiwgICAgICAgICAgUHlTYXZlS2V5LCAgICAgICAgIE1FVEhfVkFSQVJHUywgU2F2ZUtleV9kb2N9LAotICAgIHsiU2V0VmFsdWUiLCAgICAgICAgIFB5U2V0VmFsdWUsICAgICAgICBNRVRIX1ZBUkFSR1MsIFNldFZhbHVlX2RvY30sCi0gICAgeyJTZXRWYWx1ZUV4IiwgICAgICAgUHlTZXRWYWx1ZUV4LCAgICAgIE1FVEhfVkFSQVJHUywgU2V0VmFsdWVFeF9kb2N9LAorICAgIFdJTlJFR19DTE9TRUtFWV9NRVRIT0RERUYKKyAgICBXSU5SRUdfQ09OTkVDVFJFR0lTVFJZX01FVEhPRERFRgorICAgIFdJTlJFR19DUkVBVEVLRVlfTUVUSE9EREVGCisgICAgV0lOUkVHX0NSRUFURUtFWUVYX01FVEhPRERFRgorICAgIFdJTlJFR19ERUxFVEVLRVlfTUVUSE9EREVGCisgICAgV0lOUkVHX0RFTEVURUtFWUVYX01FVEhPRERFRgorICAgIFdJTlJFR19ERUxFVEVWQUxVRV9NRVRIT0RERUYKKyAgICBXSU5SRUdfRElTQUJMRVJFRkxFQ1RJT05LRVlfTUVUSE9EREVGCisgICAgV0lOUkVHX0VOQUJMRVJFRkxFQ1RJT05LRVlfTUVUSE9EREVGCisgICAgV0lOUkVHX0VOVU1LRVlfTUVUSE9EREVGCisgICAgV0lOUkVHX0VOVU1WQUxVRV9NRVRIT0RERUYKKyAgICBXSU5SRUdfRVhQQU5ERU5WSVJPTk1FTlRTVFJJTkdTX01FVEhPRERFRgorICAgIFdJTlJFR19GTFVTSEtFWV9NRVRIT0RERUYKKyAgICBXSU5SRUdfTE9BREtFWV9NRVRIT0RERUYKKyAgICBXSU5SRUdfT1BFTktFWV9NRVRIT0RERUYKKyAgICBXSU5SRUdfT1BFTktFWUVYX01FVEhPRERFRgorICAgIFdJTlJFR19RVUVSWVZBTFVFX01FVEhPRERFRgorICAgIFdJTlJFR19RVUVSWVZBTFVFRVhfTUVUSE9EREVGCisgICAgV0lOUkVHX1FVRVJZSU5GT0tFWV9NRVRIT0RERUYKKyAgICBXSU5SRUdfUVVFUllSRUZMRUNUSU9OS0VZX01FVEhPRERFRgorICAgIFdJTlJFR19TQVZFS0VZX01FVEhPRERFRgorICAgIFdJTlJFR19TRVRWQUxVRV9NRVRIT0RERUYKKyAgICBXSU5SRUdfU0VUVkFMVUVFWF9NRVRIT0RERUYKICAgICBOVUxMLAogfTsKIApkaWZmIC0tZ2l0IGEvUEMvd2luc291bmQuYyBiL1BDL3dpbnNvdW5kLmMKaW5kZXggYjU2NGVhYi4uOGU3N2QxMyAxMDA2NDQKLS0tIGEvUEMvd2luc291bmQuYworKysgYi9QQy93aW5zb3VuZC5jCkBAIC0zOSwyMiArMzksNiBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDxtbXN5c3RlbS5oPgogCi1QeURvY19TVFJWQVIoc291bmRfcGxheXNvdW5kX2RvYywKLSJQbGF5U291bmQoc291bmQsIGZsYWdzKSAtIGEgd3JhcHBlciBhcm91bmQgdGhlIFdpbmRvd3MgUGxheVNvdW5kIEFQSVxuIgotIlxuIgotIlRoZSBzb3VuZCBhcmd1bWVudCBjYW4gYmUgYSBmaWxlbmFtZSwgZGF0YSwgb3IgTm9uZS5cbiIKLSJGb3IgZmxhZyB2YWx1ZXMsIG9yZWQgdG9nZXRoZXIsIHNlZSBtb2R1bGUgZG9jdW1lbnRhdGlvbi4iKTsKLQotUHlEb2NfU1RSVkFSKHNvdW5kX2JlZXBfZG9jLAotIkJlZXAoZnJlcXVlbmN5LCBkdXJhdGlvbikgLSBhIHdyYXBwZXIgYXJvdW5kIHRoZSBXaW5kb3dzIEJlZXAgQVBJXG4iCi0iXG4iCi0iVGhlIGZyZXF1ZW5jeSBhcmd1bWVudCBzcGVjaWZpZXMgZnJlcXVlbmN5LCBpbiBoZXJ0eiwgb2YgdGhlIHNvdW5kLlxuIgotIlRoaXMgcGFyYW1ldGVyIG11c3QgYmUgaW4gdGhlIHJhbmdlIDM3IHRocm91Z2ggMzIsNzY3LlxuIgotIlRoZSBkdXJhdGlvbiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMuXG4iKTsKLQotUHlEb2NfU1RSVkFSKHNvdW5kX21zZ2JlZXBfZG9jLAotIk1lc3NhZ2VCZWVwKHgpIC0gY2FsbCBXaW5kb3dzIE1lc3NhZ2VCZWVwKHgpLiB4IGRlZmF1bHRzIHRvIE1CX09LLiIpOwotCiBQeURvY19TVFJWQVIoc291bmRfbW9kdWxlX2RvYywKICJQbGF5U291bmQoc291bmQsIGZsYWdzKSAtIHBsYXkgYSBzb3VuZFxuIgogIlNORF9GSUxFTkFNRSAtIHNvdW5kIGlzIGEgd2F2IGZpbGUgbmFtZVxuIgpAQCAtNjcsNzkgKzUxLDExMiBAQAogIlNORF9OT1NUT1AgLSBEbyBub3QgaW50ZXJydXB0IGFueSBzb3VuZHMgY3VycmVudGx5IHBsYXlpbmdcbiIgIC8vIFJhaXNpbmcgUnVudGltZUVycm9yIGlmIG5lZWRlZAogIlNORF9OT1dBSVQgLSBSZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhlIHNvdW5kIGRyaXZlciBpcyBidXN5XG4iIC8vIFdpdGhvdXQgYW55IGVycm9ycwogIlxuIgotIkJlZXAoZnJlcXVlbmN5LCBkdXJhdGlvbikgLSBNYWtlIGEgYmVlcCB0aHJvdWdoIHRoZSBQQyBzcGVha2VyLiIpOworIkJlZXAoZnJlcXVlbmN5LCBkdXJhdGlvbikgLSBNYWtlIGEgYmVlcCB0aHJvdWdoIHRoZSBQQyBzcGVha2VyLlxuIgorIk1lc3NhZ2VCZWVwKHgpIC0gQ2FsbCBXaW5kb3dzIE1lc3NhZ2VCZWVwLiIpOworCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgd2luc291bmQKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWExODQwMTE0MmQ5N2I4ZDVdKi8KKworI2luY2x1ZGUgImNsaW5pYy93aW5zb3VuZC5jLmgiCisKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnNvdW5kLlBsYXlTb3VuZAorCisgICAgc291bmQ6IFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICAgICAgVGhlIHNvdW5kIHRvIHBsYXk7IGEgZmlsZW5hbWUsIGRhdGEsIG9yIE5vbmUuCisgICAgZmxhZ3M6IGludAorICAgICAgICBGbGFnIHZhbHVlcywgb3JlZCB0b2dldGhlci4gIFNlZSBtb2R1bGUgZG9jdW1lbnRhdGlvbi4KKyAgICAvCisKK0Egd3JhcHBlciBhcm91bmQgdGhlIFdpbmRvd3MgUGxheVNvdW5kIEFQSS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXNvdW5kX3BsYXlzb3VuZChQeU9iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCit3aW5zb3VuZF9QbGF5U291bmRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9VTklDT0RFICpzb3VuZCwgaW50IGZsYWdzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTYxNDI3Mzc4NGJmNTllNWMgaW5wdXQ9MzQxMWIxYjdjMWYzNmQ5M10qLwogewotICAgIHdjaGFyX3QgKndzb3VuZDsKLSAgICBpbnQgZmxhZ3M7CiAgICAgaW50IG9rOwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlppOlBsYXlTb3VuZCIsICZ3c291bmQsICZmbGFncykpIHsKLSAgICAgICAgaWYgKGZsYWdzICYgU05EX0FTWU5DICYmIGZsYWdzICYgU05EX01FTU9SWSkgewotICAgICAgICAgICAgLyogU2lkZXN0ZXAgcmVmZXJlbmNlIGNvdW50aW5nIGhlYWRhY2hlOyB1bmZvcnR1bmF0ZWx5IHRoaXMgYWxzbwotICAgICAgICAgICAgICAgcHJldmVudCBTTkRfTE9PUCBmcm9tIG1lbW9yeS4gKi8KLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJDYW5ub3QgcGxheSBhc3luY2hyb25vdXNseSBmcm9tIG1lbW9yeSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBvayA9IFBsYXlTb3VuZFcod3NvdW5kLCBOVUxMLCBmbGFncyk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmICghb2spIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJGYWlsZWQgdG8gcGxheSBzb3VuZCIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBpZiAoZmxhZ3MgJiBTTkRfQVNZTkMgJiYgZmxhZ3MgJiBTTkRfTUVNT1JZKSB7CisgICAgICAgIC8qIFNpZGVzdGVwIHJlZmVyZW5jZSBjb3VudGluZyBoZWFkYWNoZTsgdW5mb3J0dW5hdGVseSB0aGlzIGFsc28KKyAgICAgICAgICAgIHByZXZlbnQgU05EX0xPT1AgZnJvbSBtZW1vcnkuICovCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBsYXkgYXN5bmNocm9ub3VzbHkgZnJvbSBtZW1vcnkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIG9rID0gUGxheVNvdW5kVyhzb3VuZCwgTlVMTCwgZmxhZ3MpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKCFvaykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiRmFpbGVkIHRvIHBsYXkgc291bmQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCit3aW5zb3VuZC5CZWVwCisKKyAgICBmcmVxdWVuY3k6IGludAorICAgICAgICBGcmVxdWVuY3kgb2YgdGhlIHNvdW5kIGluIGhlcnR6LgorICAgICAgICBNdXN0IGJlIGluIHRoZSByYW5nZSAzNyB0aHJvdWdoIDMyLDc2Ny4KKyAgICBkdXJhdGlvbjogaW50CisgICAgICAgIEhvdyBsb25nIHRoZSBzb3VuZCBzaG91bGQgcGxheSwgaW4gbWlsbGlzZWNvbmRzLgorICAgIC8KKworQSB3cmFwcGVyIGFyb3VuZCB0aGUgV2luZG93cyBCZWVwIEFQSS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNvdW5kX2JlZXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQord2luc291bmRfQmVlcF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmcmVxdWVuY3ksIGludCBkdXJhdGlvbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNzVmMjgyMDM1YTg3MmJkIGlucHV0PTYyOGE5OWQyZGRmNzM3OThdKi8KIHsKLSAgICBpbnQgZnJlcTsKLSAgICBpbnQgZHVyOwogICAgIEJPT0wgb2s7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOkJlZXAiLCAmZnJlcSwgICZkdXIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChmcmVxIDwgMzcgfHwgZnJlcSA+IDMyNzY3KSB7CisgICAgaWYgKGZyZXF1ZW5jeSA8IDM3IHx8IGZyZXF1ZW5jeSA+IDMyNzY3KSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImZyZXF1ZW5jeSBtdXN0IGJlIGluIDM3IHRocnUgMzI3NjciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIG9rID0gQmVlcChmcmVxLCBkdXIpOworICAgIG9rID0gQmVlcChmcmVxdWVuY3ksIGR1cmF0aW9uKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmICghb2spIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwiRmFpbGVkIHRvIGJlZXAiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCit3aW5zb3VuZC5NZXNzYWdlQmVlcAorCisgICAgeDogaW50KGNfZGVmYXVsdD0iTUJfT0siKSA9IE1CX09LCisgICAgLworCitDYWxsIFdpbmRvd3MgTWVzc2FnZUJlZXAoeCkuCisKK3ggZGVmYXVsdHMgdG8gTUJfT0suCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zb3VuZF9tc2diZWVwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTJhYTZhODIyYmRjNjZhZCBpbnB1dD1hNzc2YzhhODVjOTg1M2Y2XSovCiB7Ci0gICAgaW50IHggPSBNQl9PSzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOk1lc3NhZ2VCZWVwIiwgJngpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBNZXNzYWdlQmVlcCh4KTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgc291bmRfbWV0aG9kc1tdID0KIHsKLSAgICB7IlBsYXlTb3VuZCIsIHNvdW5kX3BsYXlzb3VuZCwgTUVUSF9WQVJBUkdTLCBzb3VuZF9wbGF5c291bmRfZG9jfSwKLSAgICB7IkJlZXAiLCAgICAgIHNvdW5kX2JlZXAsICAgICAgTUVUSF9WQVJBUkdTLCBzb3VuZF9iZWVwX2RvY30sCi0gICAgeyJNZXNzYWdlQmVlcCIsIHNvdW5kX21zZ2JlZXAsIE1FVEhfVkFSQVJHUywgc291bmRfbXNnYmVlcF9kb2N9LAorICAgIFdJTlNPVU5EX1BMQVlTT1VORF9NRVRIT0RERUYKKyAgICBXSU5TT1VORF9CRUVQX01FVEhPRERFRgorICAgIFdJTlNPVU5EX01FU1NBR0VCRUVQX01FVEhPRERFRgogICAgIHtOVUxMLCAgTlVMTH0KIH07CiAKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2J6Mi52Y3hwcm9qIGIvUENidWlsZC9fYnoyLnZjeHByb2oKaW5kZXggOTM4N2U1NC4uNjRjM2RjZCAxMDA2NDQKLS0tIGEvUENidWlsZC9fYnoyLnZjeHByb2oKKysrIGIvUENidWlsZC9fYnoyLnZjeHByb2oKQEAgLTM5LDExNyArMzksMjggQEAKICAgICA8Um9vdE5hbWVzcGFjZT5iejI8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChiejJEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTU4LDgzICs2OSw2IEBACiAgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE3MDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoYnoyRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoYnoyRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGJ6MkRpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDE3MDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoYnoyRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoYnoyRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChiejJEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNzAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGJ6MkRpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDE3MDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYnoybW9kdWxlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilcYmxvY2tzb3J0LmMiIC8+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL19jdHlwZXMudmN4cHJvaiBiL1BDYnVpbGQvX2N0eXBlcy52Y3hwcm9qCmluZGV4IDIwMmNiMWYuLjY4YjhlMjkgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX2N0eXBlcy52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX2N0eXBlcy52Y3hwcm9qCkBAIC0zOSwyMDQgKzM5LDMzIEBACiAgICAgPFJvb3ROYW1lc3BhY2U+X2N0eXBlczwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgpAQCAtMjU3LDMwICs4NiwxNCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHByZXBfY2lmLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcc3RnZGljdC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjMyLmMiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknPT0neDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDdXN0b21CdWlsZCBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luNjQuYXNtIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8Q29tbWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPm1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICIkKEludERpcil3aW42NC5vYmoiICIlKEZ1bGxQYXRoKSIKLTwvQ29tbWFuZD4KLSAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChJbnREaXIpd2luNjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPm1sNjQgL25vbG9nbyAvYyAvRm8gIiQoSW50RGlyKXdpbjY0Lm9iaiIgIiUoRnVsbFBhdGgpIgotPC9Db21tYW5kPgotICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChJbnREaXIpd2luNjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5tbDY0IC9ub2xvZ28gL2MgL0ZvICIkKEludERpcil3aW42NC5vYmoiICIlKEZ1bGxQYXRoKSIKLTwvQ29tbWFuZD4KLSAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChJbnREaXIpd2luNjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8Q29tbWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9GbyAiJChJbnREaXIpd2luNjQub2JqIiAiJShGdWxsUGF0aCkiCi08L0NvbW1hbmQ+Ci0gICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChJbnREaXIpd2luNjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknPT0nV2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxDb21tYW5kPm1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICIkKEludERpcil3aW42NC5vYmoiICIlKEZ1bGxQYXRoKSI8L0NvbW1hbmQ+CisgICAgICA8T3V0cHV0cz4kKEludERpcil3aW42NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KICAgICA8L0N1c3RvbUJ1aWxkPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2N0eXBlc190ZXN0LnZjeHByb2ogYi9QQ2J1aWxkL19jdHlwZXNfdGVzdC52Y3hwcm9qCmluZGV4IDM1ZTI5OWIuLmMxMjYwYjUgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX2N0eXBlc190ZXN0LnZjeHByb2oKKysrIGIvUENidWlsZC9fY3R5cGVzX3Rlc3QudmN4cHJvagpAQCAtMzgsMTQzICszOCwyOCBAQAogICAgIDxQcm9qZWN0R3VpZD57OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfTwvUHJvamVjdEd1aWQ+CiAgICAgPFJvb3ROYW1lc3BhY2U+X2N0eXBlc190ZXN0PC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgICA8U3VwcG9ydFBHTz5mYWxzZTwvU3VwcG9ydFBHTz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzX3Rlc3QuaCIgLz4KICAgPC9JdGVtR3JvdXA+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL19kZWNpbWFsLnZjeHByb2ogYi9QQ2J1aWxkL19kZWNpbWFsLnZjeHByb2oKaW5kZXggOThiYTgxZC4uOTQzYmZiMCAxMDA2NDQKLS0tIGEvUENidWlsZC9fZGVjaW1hbC52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX2RlY2ltYWwudmN4cHJvagpAQCAtMzksMjA4ICszOSwzNyBAQAogICAgIDxSb290TmFtZXNwYWNlPl9kZWNpbWFsPC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fV0FSTklOR1M7TUFTTTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICdXaW4zMiciPkNPTkZJR18zMjtQUFJPOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJ3g2NCciPkNPTkZJR182NDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9kZWNpbWFsOy4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KICAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9kZWNpbWFsOy4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzsuLlxJbmNsdWRlOy4uXFBDOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR18zMiAvRFBQUk8gL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzY0IC9ETUFTTSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9kZWNpbWFsOy4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzMyIC9EUFBSTyAvRE1BU00gJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfZGVjaW1hbDsuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR182NCAvRE1BU00gJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfZGVjaW1hbDsuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcYmFzZWFyaXRoLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGJpdHMuaCIgLz4KQEAgLTI3OSwyMiArMTA4LDkgQEAKICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPEN1c3RvbUJ1aWxkIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdmNkaXY2NC5hc20iPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9aaSAvRm8gIiQoSW50RGlyKXZjZGl2NjQub2JqIiAiJShGdWxsUGF0aCkiCi08L0NvbW1hbmQ+Ci0gICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoSW50RGlyKXZjZGl2NjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPm1sNjQgL25vbG9nbyAvYyAvRm8gIiQoSW50RGlyKXZjZGl2NjQub2JqIiAiJShGdWxsUGF0aCkiCi08L0NvbW1hbmQ+Ci0gICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKEludERpcil2Y2RpdjY0Lm9iajslKE91dHB1dHMpPC9PdXRwdXRzPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9GbyAiJChJbnREaXIpdmNkaXY2NC5vYmoiICIlKEZ1bGxQYXRoKSIKLTwvQ29tbWFuZD4KLSAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChJbnREaXIpdmNkaXY2NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5tbDY0IC9ub2xvZ28gL2MgL1ppIC9GbyAiJChJbnREaXIpdmNkaXY2NC5vYmoiICIlKEZ1bGxQYXRoKSIKLTwvQ29tbWFuZD4KLSAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKEludERpcil2Y2RpdjY0Lm9iajslKE91dHB1dHMpPC9PdXRwdXRzPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J1dpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8Q29tbWFuZD5tbDY0IC9ub2xvZ28gL2MgL1ppIC9GbyAiJChJbnREaXIpdmNkaXY2NC5vYmoiICIlKEZ1bGxQYXRoKSI8L0NvbW1hbmQ+CisgICAgICA8T3V0cHV0cz4kKEludERpcil2Y2RpdjY0Lm9iajslKE91dHB1dHMpPC9PdXRwdXRzPgogICAgIDwvQ3VzdG9tQnVpbGQ+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fZWxlbWVudHRyZWUudmN4cHJvaiBiL1BDYnVpbGQvX2VsZW1lbnR0cmVlLnZjeHByb2oKaW5kZXggNzgwMmFiMy4uNDE0YmQ4YiAxMDA2NDQKLS0tIGEvUENidWlsZC9fZWxlbWVudHRyZWUudmN4cHJvagorKysgYi9QQ2J1aWxkL19lbGVtZW50dHJlZS52Y3hwcm9qCkBAIC0zOSwxMTcgKzM5LDI3IEBACiAgICAgPFJvb3ROYW1lc3BhY2U+X2VsZW1lbnR0cmVlPC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNTgsODMgKzY4LDYgQEAKICAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDEwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDEwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDEwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5YTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcYXNjaWkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcYXNjaWl0YWIuaCIgLz4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvaiBiL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvagppbmRleCA1NTE5N2FmLi5mNzcxNGMwIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19mcmVlemVfaW1wb3J0bGliLnZjeHByb2oKKysrIGIvUENidWlsZC9fZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qCkBAIC05LDYgKzksMjIgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CiAgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTIyLDE1MiArMzgsMzIgQEAKICAgICA8UHJvamVjdEd1aWQ+ezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ308L1Byb2plY3RHdWlkPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgICA8Um9vdE5hbWVzcGFjZT5fZnJlZXplX2ltcG9ydGxpYjwvUm9vdE5hbWVzcGFjZT4KKyAgICA8U3VwcG9ydFBHTz5mYWxzZTwvU3VwcG9ydFBHTz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CiAgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbD50cnVlPC9MaW5rSW5jcmVtZW50YWw+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TGlua0luY3JlbWVudGFsPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgPC9MaW5rPgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPiQoVGFyZ2V0UGF0aCkgLi5cTGliXGltcG9ydGxpYlxfYm9vdHN0cmFwLnB5IC4uXFB5dGhvblxpbXBvcnRsaWIuaDwvQ29tbWFuZD4KLSAgICA8L1Bvc3RCdWlsZEV2ZW50PgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxNZXNzYWdlPmNyZWF0aW5nIGltcG9ydGxpYi5oPC9NZXNzYWdlPgotICAgIDwvUG9zdEJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgPC9MaW5rPgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPiQoVGFyZ2V0UGF0aCkgLi5cTGliXGltcG9ydGxpYlxfYm9vdHN0cmFwLnB5IC4uXFB5dGhvblxpbXBvcnRsaWIuaDwvQ29tbWFuZD4KLSAgICA8L1Bvc3RCdWlsZEV2ZW50PgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxNZXNzYWdlPmNyZWF0aW5nIGltcG9ydGxpYi5oPC9NZXNzYWdlPgotICAgIDwvUG9zdEJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgotICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+Ci0gICAgPC9MaW5rPgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPiQoVGFyZ2V0UGF0aCkgLi5cTGliXGltcG9ydGxpYlxfYm9vdHN0cmFwLnB5IC4uXFB5dGhvblxpbXBvcnRsaWIuaDwvQ29tbWFuZD4KLSAgICA8L1Bvc3RCdWlsZEV2ZW50PgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxNZXNzYWdlPmNyZWF0aW5nIGltcG9ydGxpYi5oPC9NZXNzYWdlPgotICAgIDwvUG9zdEJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KLSAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgotICAgIDwvTGluaz4KLSAgICA8UG9zdEJ1aWxkRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4kKFRhcmdldFBhdGgpIC4uXExpYlxpbXBvcnRsaWJcX2Jvb3RzdHJhcC5weSAuLlxQeXRob25caW1wb3J0bGliLmg8L0NvbW1hbmQ+Ci0gICAgPC9Qb3N0QnVpbGRFdmVudD4KLSAgICA8UG9zdEJ1aWxkRXZlbnQ+Ci0gICAgICA8TWVzc2FnZT5jcmVhdGluZyBpbXBvcnRsaWIuaDwvTWVzc2FnZT4KLSAgICA8L1Bvc3RCdWlsZEV2ZW50PgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9mcmVlemVfaW1wb3J0bGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQcm9ncmFtc1xfZnJlZXplX2ltcG9ydGxpYi5jIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgpAQCAtMTg1LDQgKzgxLDI2IEBACiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICA8VGFyZ2V0IE5hbWU9IlJlYnVpbGRJbXBvcnRMaWIiIEFmdGVyVGFyZ2V0cz0iQWZ0ZXJCdWlsZCIgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdEZWJ1Zycgb3IgJChDb25maWd1cmF0aW9uKSA9PSAnUmVsZWFzZSciPgorICAgIDxFeGVjIENvbW1hbmQ9JyIkKFRhcmdldFBhdGgpIiAiJChQeVNvdXJjZVBhdGgpTGliXGltcG9ydGxpYlxfYm9vdHN0cmFwLnB5IiAiJChJbnREaXIpaW1wb3J0bGliLmcuaCInIC8+CisgICAgCisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICA8X09sZENvbnRlbnQgQ29uZGl0aW9uPSJFeGlzdHMoJyQoUHlTb3VyY2VQYXRoKVB5dGhvblxpbXBvcnRsaWIuaCcpIj4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCckKFB5U291cmNlUGF0aClQeXRob25caW1wb3J0bGliLmgnKS5SZXBsYWNlKGAmI3gwRDsmI3gwQTtgLCBgJiN4MEE7YCkpPC9fT2xkQ29udGVudD4KKyAgICAgIDxfTmV3Q29udGVudCBDb25kaXRpb249IkV4aXN0cygnJChJbnREaXIpaW1wb3J0bGliLmcuaCcpIj4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCckKEludERpcilpbXBvcnRsaWIuZy5oJykuUmVwbGFjZShgJiN4MEQ7JiN4MEE7YCwgYCYjeDBBO2ApKTwvX05ld0NvbnRlbnQ+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIAorICAgIDxDb3B5IFNvdXJjZUZpbGVzPSIkKEludERpcilpbXBvcnRsaWIuZy5oIgorICAgICAgICAgIERlc3RpbmF0aW9uRmlsZXM9IiQoUHlTb3VyY2VQYXRoKVB5dGhvblxpbXBvcnRsaWIuaCIKKyAgICAgICAgICBDb25kaXRpb249IkV4aXN0cygnJChJbnREaXIpaW1wb3J0bGliLmcuaCcpIGFuZCAnJChfT2xkQ29udGVudCknICE9ICckKF9OZXdDb250ZW50KSciIC8+CisgICAgCisgICAgPFdhcm5pbmcgVGV4dD0iaW1wb3J0bGliLmggaGFzIGJlZW4gdXBkYXRlZC4gWW91IHdpbGwgbmVlZCB0byByZWJ1aWxkIHB5dGhvbmNvcmUgdG8gc2VlIHRoZSBjaGFuZ2VzLiIKKyAgICAgICAgICAgICBDb25kaXRpb249IkV4aXN0cygnJChJbnREaXIpaW1wb3J0bGliLmcuaCcpIGFuZCAnJChfT2xkQ29udGVudCknICE9ICckKF9OZXdDb250ZW50KScgYW5kICQoQ29uZmlndXJhdGlvbikgPT0gJ0RlYnVnJyIgLz4KKyAgICA8RXJyb3IgVGV4dD0iaW1wb3J0bGliLmggaGFzIGJlZW4gdXBkYXRlZC4gWW91IHdpbGwgbmVlZCB0byByZWJ1aWxkIHB5dGhvbmNvcmUgdG8gc2VlIHRoZSBjaGFuZ2VzLiIKKyAgICAgICAgICAgQ29uZGl0aW9uPSJFeGlzdHMoJyQoSW50RGlyKWltcG9ydGxpYi5nLmgnKSBhbmQgJyQoX09sZENvbnRlbnQpJyAhPSAnJChfTmV3Q29udGVudCknIGFuZCAkKENvbmZpZ3VyYXRpb24pID09ICdSZWxlYXNlJyIgLz4KKyAgPC9UYXJnZXQ+CisgIDxUYXJnZXQgTmFtZT0iX0NsZWFuSW1wb3J0TGliIiBCZWZvcmVUYXJnZXRzPSJDb3JlQ2xlYW4iPgorICAgIDxJdGVtR3JvdXA+CisgICAgICA8Q2xlYW4gSW5jbHVkZT0iJChJbnREaXIpaW1wb3J0bGliLmcuaCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL19mcmVlemVfaW1wb3J0bGliLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvai5maWx0ZXJzCmluZGV4IDUwZWMxOTMuLmNjYWQwNTMgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvai5maWx0ZXJzCisrKyBiL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvai5maWx0ZXJzCkBAIC0xNSw3ICsxNSw3IEBACiAgICAgPC9GaWx0ZXI+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZnJlZXplX2ltcG9ydGxpYi5jIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFByb2dyYW1zXF9mcmVlemVfaW1wb3J0bGliLmMiPgogICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CkBAIC0yNCw0ICsyNCw0IEBACiAgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgogICAgIDwvTm9uZT4KICAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9faGFzaGxpYi52Y3hwcm9qIGIvUENidWlsZC9faGFzaGxpYi52Y3hwcm9qCmluZGV4IDUyNDMzZWQuLmQ4MmIyNjYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX2hhc2hsaWIudmN4cHJvagorKysgYi9QQ2J1aWxkL19oYXNobGliLnZjeHByb2oKQEAgLTM5LDIzOSArMzksNDcgQEAKICAgICA8Um9vdE5hbWVzcGFjZT5faGFzaGxpYjwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmM2NDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmM2NDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQoT3V0RGlyKWxpYmVheSQoUHlEZWJ1Z0V4dCkubGliOyQoT3V0RGlyKXNzbGVheSQoUHlEZWJ1Z0V4dCkubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9oYXNob3BlbnNzbC5jIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob24udmN4cHJvaiI+Ci0gICAgICA8UHJvamVjdD57YjExZDc1MGYtY2QxZi00YTk2LTg1Y2UtZTY5YTVjNTI1OWY5fTwvUHJvamVjdD4KLSAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+Ci0gICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgogICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CiAgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KICAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CiAgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgotICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InNzbC52Y3hwcm9qIj4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJzc2xlYXkudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57MTA2MTViMjQtNzNiZi00ZWZhLTkzYWEtMjM2OTE2MzIxMzE3fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9ImxpYmVheS52Y3hwcm9qIj4KICAgICAgIDxQcm9qZWN0PntlNWIwNGNjMC1lYjRjLTQyYWItYjRkYy0xOGVmOTVmODY0YjB9PC9Qcm9qZWN0PgogICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KICAgICA8L1Byb2plY3RSZWZlcmVuY2U+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL19sem1hLnZjeHByb2ogYi9QQ2J1aWxkL19sem1hLnZjeHByb2oKaW5kZXggYWMyNWM4MC4uYWY1MDQ5NCAxMDA2NDQKLS0tIGEvUENidWlsZC9fbHptYS52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX2x6bWEudmN4cHJvagpAQCAtMzksMjAwICszOSwzNSBAQAogICAgIDxSb290TmFtZXNwYWNlPmx6bWE8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAnV2luMzInIj4kKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICd4NjQnIj4kKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SW1hZ2VIYXNTYWZlRXhjZXB0aW9uSGFuZGxlcnM+ZmFsc2U8L0ltYWdlSGFzU2FmZUV4Y2VwdGlvbkhhbmRsZXJzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fbXNpLnZjeHByb2ogYi9QQ2J1aWxkL19tc2kudmN4cHJvagppbmRleCAxMzIzZDE2Li5mNWJhN2JmIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19tc2kudmN4cHJvagorKysgYi9QQ2J1aWxkL19tc2kudmN4cHJvagpAQCAtMzksMTc4ICszOSwzMiBAQAogICAgIDxSb290TmFtZXNwYWNlPl9tc2k8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZmNpLmxpYjttc2kubGliO3JwY3J0NC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmNhYmluZXQubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZmNpLmxpYjttc2kubGliO3JwY3J0NC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZmNpLmxpYjttc2kubGliO3JwY3J0NC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZmNpLmxpYjttc2kubGliO3JwY3J0NC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmZjaS5saWI7bXNpLmxpYjtycGNydDQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDE2MDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcX21zaS5jIiAvPgogICA8L0l0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX211bHRpcHJvY2Vzc2luZy52Y3hwcm9qIGIvUENidWlsZC9fbXVsdGlwcm9jZXNzaW5nLnZjeHByb2oKaW5kZXggYjRiYjU2OC4uMWViOTJiNiAxMDA2NDQKLS0tIGEvUENidWlsZC9fbXVsdGlwcm9jZXNzaW5nLnZjeHByb2oKKysrIGIvUENidWlsZC9fbXVsdGlwcm9jZXNzaW5nLnZjeHByb2oKQEAgLTM5LDE3OCArMzksMzIgQEAKICAgICA8Um9vdE5hbWVzcGFjZT5fbXVsdGlwcm9jZXNzaW5nPC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXG11bHRpcHJvY2Vzc2luZy5oIiAvPgogICA8L0l0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX292ZXJsYXBwZWQudmN4cHJvaiBiL1BDYnVpbGQvX292ZXJsYXBwZWQudmN4cHJvagppbmRleCBkMGVlNzJmLi41NTMwMWVhIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19vdmVybGFwcGVkLnZjeHByb2oKKysrIGIvUENidWlsZC9fb3ZlcmxhcHBlZC52Y3hwcm9qCkBAIC0zOSwxODYgKzM5LDMyIEBACiAgICAgPFJvb3ROYW1lc3BhY2U+X292ZXJsYXBwZWQ8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG92ZXJsYXBwZWQuYyIgLz4KICAgPC9JdGVtR3JvdXA+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL19zb2NrZXQudmN4cHJvaiBiL1BDYnVpbGQvX3NvY2tldC52Y3hwcm9qCmluZGV4IDYzODM2ZTkuLjAzYjZmNzUgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX3NvY2tldC52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX3NvY2tldC52Y3hwcm9qCkBAIC0zOSwxNzggKzM5LDMyIEBACiAgICAgPFJvb3ROYW1lc3BhY2U+X3NvY2tldDwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc29ja2V0bW9kdWxlLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fc3FsaXRlMy52Y3hwcm9qIGIvUENidWlsZC9fc3FsaXRlMy52Y3hwcm9qCmluZGV4IGVkMzVkNWIuLjVlODg5ZDAgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX3NxbGl0ZTMudmN4cHJvagorKysgYi9QQ2J1aWxkL19zcWxpdGUzLnZjeHByb2oKQEAgLTM5LDExNyArMzksMjcgQEAKICAgICA8Um9vdE5hbWVzcGFjZT5fc3FsaXRlMzwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTU4LDgzICs2OCw2IEBACiAgICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxODAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk1PRFVMRV9OQU1FPSJzcWxpdGUzIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk1PRFVMRV9OQU1FPSJzcWxpdGUzIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxODAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk1PRFVMRV9OQU1FPSJzcWxpdGUzIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxODAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TU9EVUxFX05BTUU9InNxbGl0ZTMiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMTgwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmgiIC8+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL19zc2wudmN4cHJvaiBiL1BDYnVpbGQvX3NzbC52Y3hwcm9qCmluZGV4IDczNzg3OTQuLjg1OTRhMDYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX3NzbC52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX3NzbC52Y3hwcm9qCkBAIC0zOSwyNDIgKzM5LDUwIEBACiAgICAgPFJvb3ROYW1lc3BhY2U+X3NzbDwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjtjcnlwdDMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjtjcnlwdDMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7Y3J5cHQzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjtjcnlwdDMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjtjcnlwdDMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmM2NDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7Y3J5cHQzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7Y3J5cHQzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmM2NDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7Y3J5cHQzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO2NyeXB0MzIubGliOyQoT3V0RGlyKWxpYmVheSQoUHlEZWJ1Z0V4dCkubGliOyQoT3V0RGlyKXNzbGVheSQoUHlEZWJ1Z0V4dCkubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zc2wuYyIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uLnZjeHByb2oiPgotICAgICAgPFByb2plY3Q+e2IxMWQ3NTBmLWNkMWYtNGE5Ni04NWNlLWU2OWE1YzUyNTlmOX08L1Byb2plY3Q+Ci0gICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgotICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KICAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgogICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CiAgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgogICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJzc2wudmN4cHJvaiI+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ibGliZWF5LnZjeHByb2oiPgogICAgICAgPFByb2plY3Q+e2U1YjA0Y2MwLWViNGMtNDJhYi1iNGRjLTE4ZWY5NWY4NjRiMH08L1Byb2plY3Q+CiAgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgogICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJzc2xlYXkudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57MTA2MTViMjQtNzNiZi00ZWZhLTkzYWEtMjM2OTE2MzIxMzE3fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgogICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Il9zb2NrZXQudmN4cHJvaiI+CiAgICAgICA8UHJvamVjdD57ODY5MzdmNTMtYzE4OS00MGVmLThjZTgtODc1OWQ4ZTdkNDgwfTwvUHJvamVjdD4KICAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0YnVmZmVyLnZjeHByb2ogYi9QQ2J1aWxkL190ZXN0YnVmZmVyLnZjeHByb2oKaW5kZXggZTEyNjVmNi4uOGNiZjEyNSAxMDA2NDQKLS0tIGEvUENidWlsZC9fdGVzdGJ1ZmZlci52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX3Rlc3RidWZmZXIudmN4cHJvagpAQCAtMzgsMTcxICszOCwzMyBAQAogICAgIDxQcm9qZWN0R3VpZD57QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fTwvUHJvamVjdEd1aWQ+CiAgICAgPFJvb3ROYW1lc3BhY2U+X3Rlc3RidWZmZXI8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxMaW5rPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90ZXN0YnVmZmVyLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGVzdGNhcGkudmN4cHJvaiBiL1BDYnVpbGQvX3Rlc3RjYXBpLnZjeHByb2oKaW5kZXggZTk5YTdlNC4uZGJmNDRlNiAxMDA2NDQKLS0tIGEvUENidWlsZC9fdGVzdGNhcGkudmN4cHJvagorKysgYi9QQ2J1aWxkL190ZXN0Y2FwaS52Y3hwcm9qCkBAIC0zOCwxNzEgKzM4LDMzIEBACiAgICAgPFByb2plY3RHdWlkPns2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9PC9Qcm9qZWN0R3VpZD4KICAgICA8Um9vdE5hbWVzcGFjZT5fdGVzdGNhcGk8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxMaW5rPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90ZXN0Y2FwaW1vZHVsZS5jIiAvPgogICA8L0l0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3RlbWJlZC52Y3hwcm9qIGIvUENidWlsZC9fdGVzdGVtYmVkLnZjeHByb2oKaW5kZXggODNjN2FkMi4uZjBlNGQ5ZiAxMDA2NDQKLS0tIGEvUENidWlsZC9fdGVzdGVtYmVkLnZjeHByb2oKKysrIGIvUENidWlsZC9fdGVzdGVtYmVkLnZjeHByb2oKQEAgLTksNiArOSwyMiBAQAogICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMjIsMTM3ICszOCwzNyBAQAogICAgIDxQcm9qZWN0R3VpZD57NkRBQzY2RDktRTcwMy00NjI0LUJFMDMtNDkxMTJBQjVBQTYyfTwvUHJvamVjdEd1aWQ+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICAgIDxSb290TmFtZXNwYWNlPl90ZXN0ZW1iZWQ8L1Jvb3ROYW1lc3BhY2U+CisgICAgPFN1cHBvcnRQR08+ZmFsc2U8L1N1cHBvcnRQR08+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgogICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+Ci0gICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KLSAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGVzdGVtYmVkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQcm9ncmFtc1xfdGVzdGVtYmVkLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CiAgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KLSAgICAgIDxQcml2YXRlPnRydWU8L1ByaXZhdGU+Ci0gICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+dHJ1ZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+Ci0gICAgICA8Q29weUxvY2FsU2F0ZWxsaXRlQXNzZW1ibGllcz5mYWxzZTwvQ29weUxvY2FsU2F0ZWxsaXRlQXNzZW1ibGllcz4KLSAgICAgIDxMaW5rTGlicmFyeURlcGVuZGVuY2llcz50cnVlPC9MaW5rTGlicmFyeURlcGVuZGVuY2llcz4KLSAgICAgIDxVc2VMaWJyYXJ5RGVwZW5kZW5jeUlucHV0cz5mYWxzZTwvVXNlTGlicmFyeURlcGVuZGVuY3lJbnB1dHM+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgogICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0ZW1iZWQudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fdGVzdGVtYmVkLnZjeHByb2ouZmlsdGVycwppbmRleCBkZWE1NGQ0Li5mN2Y5YWJlIDEwMDY0NAotLS0gYS9QQ2J1aWxkL190ZXN0ZW1iZWQudmN4cHJvai5maWx0ZXJzCisrKyBiL1BDYnVpbGQvX3Rlc3RlbWJlZC52Y3hwcm9qLmZpbHRlcnMKQEAgLTE1LDcgKzE1LDcgQEAKICAgICA8L0ZpbHRlcj4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90ZXN0ZW1iZWQuYyI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQcm9ncmFtc1xfdGVzdGVtYmVkLmMiPgogICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0aW1wb3J0bXVsdGlwbGUudmN4cHJvaiBiL1BDYnVpbGQvX3Rlc3RpbXBvcnRtdWx0aXBsZS52Y3hwcm9qCmluZGV4IDg0OTg0ZmYuLmNlYzA0MmMgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX3Rlc3RpbXBvcnRtdWx0aXBsZS52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX3Rlc3RpbXBvcnRtdWx0aXBsZS52Y3hwcm9qCkBAIC0zOCwxNzEgKzM4LDMzIEBACiAgICAgPFByb2plY3RHdWlkPnszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9PC9Qcm9qZWN0R3VpZD4KICAgICA8Um9vdE5hbWVzcGFjZT5fdGVzdGltcG9ydG11bHRpcGxlPC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgICA8U3VwcG9ydFBHTz5mYWxzZTwvU3VwcG9ydFBHTz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8TGluaz4KICAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGVzdGltcG9ydG11bHRpcGxlLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGVzdG11bHRpcGhhc2UudmN4cHJvaiBiL1BDYnVpbGQvX3Rlc3RtdWx0aXBoYXNlLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ3YjM4MAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3Rlc3RtdWx0aXBoYXNlLnZjeHByb2oKQEAgLTAsMCArMSw4MCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezE2QkZFNkYwLTIyRUYtNDBCNS1CODMxLTdFOTM3MTE5RUYxMH08L1Byb2plY3RHdWlkPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fdGVzdG11bHRpcGhhc2U8L1Jvb3ROYW1lc3BhY2U+CisgICAgPFN1cHBvcnRQR08+ZmFsc2U8L1N1cHBvcnRQR08+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGVzdG11bHRpcGhhc2UuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3RtdWx0aXBoYXNlLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX3Rlc3RtdWx0aXBoYXNlLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzI1MTAxCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fdGVzdG11bHRpcGhhc2UudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2N0RBNkFCNi1GODAwLTRjMDgtOEI3QS04M0JCMTIxQUFEMDF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+cmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlO3Jlc3g7dGlmZjt0aWY7cG5nO3dhdjttZmNyaWJib24tbXM8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGVzdG11bHRpcGhhc2UuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL190a2ludGVyLnZjeHByb2ogYi9QQ2J1aWxkL190a2ludGVyLnZjeHByb2oKaW5kZXggNjdmNzJmZS4uZjMxODVlYiAxMDA2NDQKLS0tIGEvUENidWlsZC9fdGtpbnRlci52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX3RraW50ZXIudmN4cHJvagpAQCAtMzksMjAyICszOSwzNiBAQAogICAgIDxSb290TmFtZXNwYWNlPl90a2ludGVyPC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InRjbHRrLnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHRjbHRrRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHRjbHRrRGlyKWluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JCh0Y2x0a0xpYkRlYnVnKTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHRjbHRrNjREaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JCh0Y2x0azY0TGliRGVidWcpOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHRjbHRrRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lUSF9BUFBJTklUOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKEJ1aWxkRm9yUmVsZWFzZSknICE9ICd0cnVlJyI+UHlfVENMVEtfRElSPSIkKHRjbHRrRGlyLlRyaW1FbmQoJ1wnKS5SZXBsYWNlKCdcJywgJ1xcJykpIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrTGliKTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGs2NERpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJVEhfQVBQSU5JVDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrNjRMaWIpOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGtEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JCh0Y2x0a0xpYik7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGs2NERpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJVEhfQVBQSU5JVDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrNjRMaWIpOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGtEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JCh0Y2x0a0xpYik7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JCh0Y2x0azY0RGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lUSF9BUFBJTklUOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQodGNsdGs2NExpYik7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90a2ludGVyLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHRrYXBwaW5pdC5jIiAvPgpAQCAtMjQ0LDYgKzc4LDEyIEBACiAgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KICAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CiAgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InRjbC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntiNWZkNmYxZC0xMjllLTRiZmYtOTM0MC0wMzYwNmZhYzcyODN9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJ0ay52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0Pns3ZTg1ZWNjZi1hNzJjLTRkYTQtOWU1Mi04ODQ1MDhlODBiYTF9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL2JkaXN0X3dpbmluc3QudmN4cHJvaiBiL1BDYnVpbGQvYmRpc3Rfd2luaW5zdC52Y3hwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTI3NmEyLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvYmRpc3Rfd2luaW5zdC52Y3hwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KLSAgICA8UHJvamVjdEd1aWQ+e0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ308L1Byb2plY3RHdWlkPgotICAgIDxSb290TmFtZXNwYWNlPndpbmluc3Q8L1Jvb3ROYW1lc3BhY2U+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFw8L091dERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Li5cbGliXGRpc3R1dGlsc1xjb21tYW5kXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtJChDb25maWd1cmF0aW9uKVwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8VGFyZ2V0RXh0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi5leGU8L1RhcmdldEV4dD4KLSAgICA8VGFyZ2V0RXh0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uZXhlPC9UYXJnZXRFeHQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgotICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+V2luMzI8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWluU3BhY2U8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUENcYmRpc3Rfd2luaW5zdDsuLlxJbmNsdWRlOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwMDAwPC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUEM7Li5cUENcYmRpc3Rfd2luaW5zdDsuLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5jb21jdGwzMi5saWI7aW1hZ2VobHAubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4uLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC0xMC4wLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5MSUJDOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+Li5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtMTAuMC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KLSAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+ZmFsc2U8L1JhbmRvbWl6ZWRCYXNlQWRkcmVzcz4KLSAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4KLSAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgotICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+LlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1pblNwYWNlPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cSW5jbHVkZTsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDAwMDwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFBDOy4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y29tY3RsMzIubGliO2ltYWdlaGxwLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPE91dHB1dEZpbGU+Li5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtMTAuMC1hbWQ2NC5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3VwcHJlc3NTdGFydHVwQmFubmVyPnRydWU8L1N1cHByZXNzU3RhcnR1cEJhbm5lcj4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+TElCQzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPi4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC1hbWQ2NC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KLSAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+ZmFsc2U8L1JhbmRvbWl6ZWRCYXNlQWRkcmVzcz4KLSAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4KLSAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcYmRpc3Rfd2luaW5zdFxleHRyYWN0LmMiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwuYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyIgLz4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGFyY2hpdmUuaCIgLz4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwucmMiIC8+Ci0gIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxOb25lIEluY2x1ZGU9Ii4uXFBDXGJkaXN0X3dpbmluc3RcUHl0aG9uUG93ZXJlZC5ibXAiIC8+Ci0gIDwvSXRlbUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgotICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvYnVpbGQuYmF0IGIvUENidWlsZC9idWlsZC5iYXQKaW5kZXggMGM0ODJmNS4uODhiMWYwNiAxMDA2NDQKLS0tIGEvUENidWlsZC9idWlsZC5iYXQKKysrIGIvUENidWlsZC9idWlsZC5iYXQKQEAgLTEsMTEzICsxLDE1MiBAQAogQGVjaG8gb2ZmDQotcmVtIEEgYmF0Y2ggcHJvZ3JhbSB0byBidWlsZCBvciByZWJ1aWxkIGEgcGFydGljdWxhciBjb25maWd1cmF0aW9uLA0KLXJlbSBqdXN0IGZvciBjb252ZW5pZW5jZS4NCitnb3RvIFJ1bg0KKzpVc2FnZQ0KK2VjaG8uJX5ueDAgW2ZsYWdzIGFuZCBhcmd1bWVudHNdIFtxdW90ZWQgTVNCdWlsZCBvcHRpb25zXQ0KK2VjaG8uDQorZWNoby5CdWlsZCBDUHl0aG9uIGZyb20gdGhlIGNvbW1hbmQgbGluZS4gIFJlcXVpcmVzIHRoZSBhcHByb3ByaWF0ZQ0KK2VjaG8udmVyc2lvbihzKSBvZiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyB0byBiZSBpbnN0YWxsZWQgKHNlZSByZWFkbWUudHh0KS4NCitlY2hvLkFsc28gcmVxdWlyZXMgU3VidmVyc2lvbiAoc3ZuLmV4ZSkgdG8gYmUgb24gUEFUSCBpZiB0aGUgJy1lJyBmbGFnIGlzDQorZWNoby5naXZlbi4NCitlY2hvLg0KK2VjaG8uQWZ0ZXIgdGhlIGZsYWdzIHJlY29nbml6ZWQgYnkgdGhpcyBzY3JpcHQsIHVwIHRvIDkgYXJndW1lbnRzIHRvIGJlIHBhc3NlZA0KK2VjaG8uZGlyZWN0bHkgdG8gTVNCdWlsZCBtYXkgYmUgcGFzc2VkLiAgSWYgdGhlIGFyZ3VtZW50IGNvbnRhaW5zIGFuICc9JywgdGhlDQorZWNoby5lbnRpcmUgYXJndW1lbnQgbXVzdCBiZSBxdW90ZWQgKGUuZy4gYCV+bngwICIvcDpQbGF0Zm9ybVRvb2xzZXQ9djEwMCJgKQ0KK2VjaG8uDQorZWNoby5BdmFpbGFibGUgZmxhZ3M6DQorZWNoby4gIC1oICBEaXNwbGF5IHRoaXMgaGVscCBtZXNzYWdlDQorZWNoby4gIC1WICBEaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBjdXJyZW50IGJ1aWxkDQorZWNoby4gIC1yICBUYXJnZXQgUmVidWlsZCBpbnN0ZWFkIG9mIEJ1aWxkDQorZWNoby4gIC1kICBTZXQgdGhlIGNvbmZpZ3VyYXRpb24gdG8gRGVidWcNCitlY2hvLiAgLWUgIEJ1aWxkIGV4dGVybmFsIGxpYnJhcmllcyBmZXRjaGVkIGJ5IGdldF9leHRlcm5hbHMuYmF0DQorZWNoby4gICAgICBFeHRlbnNpb24gbW9kdWxlcyB0aGF0IGRlcGVuZCBvbiBleHRlcm5hbCBsaWJyYXJpZXMgd2lsbCBub3QgYXR0ZW1wdA0KK2VjaG8uICAgICAgdG8gYnVpbGQgaWYgdGhpcyBmbGFnIGlzIG5vdCBwcmVzZW50DQorZWNoby4gIC1tICBFbmFibGUgcGFyYWxsZWwgYnVpbGQgKGVuYWJsZWQgYnkgZGVmYXVsdCkNCitlY2hvLiAgLU0gIERpc2FibGUgcGFyYWxsZWwgYnVpbGQNCitlY2hvLiAgLXYgIEluY3JlYXNlZCBvdXRwdXQgbWVzc2FnZXMNCitlY2hvLiAgLWsgIEF0dGVtcHQgdG8ga2lsbCBhbnkgcnVubmluZyBQeXRob25zIGJlZm9yZSBidWlsZGluZyAodXN1YWxseSBkb25lDQorZWNoby4gICAgICBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBweXRob25jb3JlIHByb2plY3QpDQorZWNoby4gIC0tcGdvICAgICAgICAgIEJ1aWxkIHdpdGggUHJvZmlsZS1HdWlkZWQgT3B0aW1pemF0aW9uLiAgVGhpcyBmbGFnDQorZWNoby4gICAgICAgICAgICAgICAgIG92ZXJyaWRlcyAtYyBhbmQgLWQNCitlY2hvLiAgLS10ZXN0LW1hcmtlciAgRW5hYmxlIHRoZSB0ZXN0IG1hcmtlciB3aXRoaW4gdGhlIGJ1aWxkLg0KK2VjaG8uDQorZWNoby5BdmFpbGFibGUgZmxhZ3MgdG8gYXZvaWQgYnVpbGRpbmcgY2VydGFpbiBtb2R1bGVzLg0KK2VjaG8uVGhlc2UgZmxhZ3MgaGF2ZSBubyBlZmZlY3QgaWYgJy1lJyBpcyBub3QgZ2l2ZW46DQorZWNoby4gIC0tbm8tc3NsICAgICAgRG8gbm90IGF0dGVtcHQgdG8gYnVpbGQgX3NzbA0KK2VjaG8uICAtLW5vLXRraW50ZXIgIERvIG5vdCBhdHRlbXB0IHRvIGJ1aWxkIFRraW50ZXINCitlY2hvLg0KK2VjaG8uQXZhaWxhYmxlIGFyZ3VtZW50czoNCitlY2hvLiAgLWMgUmVsZWFzZSBefCBEZWJ1ZyBefCBQR0luc3RydW1lbnQgXnwgUEdVcGRhdGUNCitlY2hvLiAgICAgU2V0IHRoZSBjb25maWd1cmF0aW9uIChkZWZhdWx0OiBSZWxlYXNlKQ0KK2VjaG8uICAtcCB4NjQgXnwgV2luMzINCitlY2hvLiAgICAgU2V0IHRoZSBwbGF0Zm9ybSAoZGVmYXVsdDogV2luMzIpDQorZWNoby4gIC10IEJ1aWxkIF58IFJlYnVpbGQgXnwgQ2xlYW4gXnwgQ2xlYW5BbGwNCitlY2hvLiAgICAgU2V0IHRoZSB0YXJnZXQgbWFudWFsbHkNCitlY2hvLiAgLS1wZ28tam9iICBUaGUgam9iIHRvIHVzZSBmb3IgUEdPIHRyYWluaW5nOyBpbXBsaWVzIC0tcGdvDQorZWNoby4gICAgICAgICAgICAgKGRlZmF1bHQ6ICItbSB0ZXN0IC0tcGdvIikNCitleGl0IC9iIDEyNw0KIA0KLXJlbSBBcmd1bWVudHM6DQotcmVtICAtYyAgU2V0IHRoZSBjb25maWd1cmF0aW9uIChkZWZhdWx0OiBSZWxlYXNlKQ0KLXJlbSAgLXAgIFNldCB0aGUgcGxhdGZvcm0gKHg2NCBvciBXaW4zMiwgZGVmYXVsdDogV2luMzIpDQotcmVtICAtciAgVGFyZ2V0IFJlYnVpbGQgaW5zdGVhZCBvZiBCdWlsZA0KLXJlbSAgLXQgIFNldCB0aGUgdGFyZ2V0IG1hbnVhbGx5IChCdWlsZCwgUmVidWlsZCwgb3IgQ2xlYW4pDQotcmVtICAtZCAgU2V0IHRoZSBjb25maWd1cmF0aW9uIHRvIERlYnVnDQotcmVtICAtZSAgUHVsbCBpbiBleHRlcm5hbCBsaWJyYXJpZXMgdXNpbmcgZ2V0X2V4dGVybmFscy5iYXQNCi1yZW0gIC1tICBFbmFibGUgcGFyYWxsZWwgYnVpbGQNCi1yZW0gIC1NICBEaXNhYmxlIHBhcmFsbGVsIGJ1aWxkIChkaXNhYmxlZCBieSBkZWZhdWx0KQ0KLXJlbSAgLXYgIEluY3JlYXNlZCBvdXRwdXQgbWVzc2FnZXMNCi1yZW0gIC1rICBBdHRlbXB0IHRvIGtpbGwgYW55IHJ1bm5pbmcgUHl0aG9ucyBiZWZvcmUgYnVpbGRpbmcNCi0NCis6UnVuDQogc2V0bG9jYWwNCiBzZXQgcGxhdGY9V2luMzINCiBzZXQgdnNfcGxhdGY9eDg2DQogc2V0IGNvbmY9UmVsZWFzZQ0KIHNldCB0YXJnZXQ9QnVpbGQNCiBzZXQgZGlyPSV+ZHAwDQotc2V0IHBhcmFsbGVsPQ0KK3NldCBwYXJhbGxlbD0vbQ0KIHNldCB2ZXJib3NlPS9ub2xvZ28gL3Y6bQ0KIHNldCBraWxsPQ0KLXNldCBidWlsZF90a2ludGVyPQ0KK3NldCBkb19wZ289DQorc2V0IHBnb19qb2I9LW0gdGVzdCAtLXBnbw0KK3NldCBvbl82NF9iaXQ9dHJ1ZQ0KKw0KK3JlbSBUaGlzIG1heSBub3QgYmUgMTAwJSBhY2N1cmF0ZSwgYnV0IGNsb3NlIGVub3VnaC4NCitpZiAiJVByb2dyYW1GaWxlcyh4ODYpJSI9PSIiIChzZXQgb25fNjRfYml0PWZhbHNlKQ0KIA0KIDpDaGVja09wdHMNCi1pZiAnJTEnPT0nLWMnIChzZXQgY29uZj0lMikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAnJTEnPT0nLXAnIChzZXQgcGxhdGY9JTIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotaWYgJyUxJz09Jy1yJyAoc2V0IHRhcmdldD1SZWJ1aWxkKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAnJTEnPT0nLXQnIChzZXQgdGFyZ2V0PSUyKSAmIHNoaWZ0ICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICclMSc9PSctZCcgKHNldCBjb25mPURlYnVnKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAnJTEnPT0nLWUnIGNhbGwgIiVkaXIlZ2V0X2V4dGVybmFscy5iYXQiICYgKHNldCBidWlsZF90a2ludGVyPXRydWUpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICclMSc9PSctbScgKHNldCBwYXJhbGxlbD0vbSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotaWYgJyUxJz09Jy1NJyAoc2V0IHBhcmFsbGVsPSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotaWYgJyUxJz09Jy12JyAoc2V0IHZlcmJvc2U9L3Y6bikgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotaWYgJyUxJz09Jy1rJyAoc2V0IGtpbGw9dHJ1ZSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSI9PSItaCIgZ290byBVc2FnZQ0KK2lmICIlfjEiPT0iLWMiIChzZXQgY29uZj0lMikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJX4xIj09Ii1wIiAoc2V0IHBsYXRmPSUyKSAmIHNoaWZ0ICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlfjEiPT0iLXIiIChzZXQgdGFyZ2V0PVJlYnVpbGQpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlfjEiPT0iLXQiIChzZXQgdGFyZ2V0PSUyKSAmIHNoaWZ0ICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlfjEiPT0iLWQiIChzZXQgY29uZj1EZWJ1ZykgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSI9PSItbSIgKHNldCBwYXJhbGxlbD0vbSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSI9PSItTSIgKHNldCBwYXJhbGxlbD0pICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlfjEiPT0iLXYiIChzZXQgdmVyYm9zZT0vdjpuKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJX4xIj09Ii1rIiAoc2V0IGtpbGw9dHJ1ZSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSI9PSItLXBnbyIgKHNldCBkb19wZ289dHJ1ZSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSI9PSItLXBnby1qb2IiIChzZXQgZG9fcGdvPXRydWUpICYgKHNldCBwZ29fam9iPSV+MikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJX4xIj09Ii0tdGVzdC1tYXJrZXIiIChzZXQgVXNlVGVzdE1hcmtlcj10cnVlKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJX4xIj09Ii1WIiBzaGlmdCAmIGdvdG8gVmVyc2lvbg0KK3JlbSBUaGVzZSB1c2UgdGhlIGFjdHVhbCBwcm9wZXJ0eSBuYW1lcyB1c2VkIGJ5IE1TQnVpbGQuICBXZSBjb3VsZCBqdXN0IGxldA0KK3JlbSB0aGVtIGluIHRocm91Z2ggdGhlIGVudmlyb25tZW50LCBidXQgd2Ugc3BlY2lmeSB0aGVtIG9uIHRoZSBjb21tYW5kIGxpbmUNCityZW0gYW55d2F5IGZvciB2aXNpYmlsaXR5IHNvIHNldCBkZWZhdWx0cyBhZnRlciB0aGlzDQoraWYgIiV+MSI9PSItZSIgKHNldCBJbmNsdWRlRXh0ZXJuYWxzPXRydWUpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlfjEiPT0iLS1uby1zc2wiIChzZXQgSW5jbHVkZVNTTD1mYWxzZSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSI9PSItLW5vLXRraW50ZXIiIChzZXQgSW5jbHVkZVRraW50ZXI9ZmFsc2UpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KIA0KLWlmICclY29uZiUnPT0nRGVidWcnIChzZXQgZGJnX2V4dD1fZCkgZWxzZSAoc2V0IGRiZ19leHQ9KQ0KLWlmICclcGxhdGYlJz09J3g2NCcgKA0KLSAgICBzZXQgdnNfcGxhdGY9eDg2X2FtZDY0DQotICAgIHNldCBidWlsZGRpcj0lZGlyJWFtZDY0XA0KLSkgZWxzZSAoDQotICAgIHNldCBidWlsZGRpcj0lZGlyJQ0KK2lmICIlSW5jbHVkZUV4dGVybmFscyUiPT0iIiBzZXQgSW5jbHVkZUV4dGVybmFscz1mYWxzZQ0KK2lmICIlSW5jbHVkZVNTTCUiPT0iIiBzZXQgSW5jbHVkZVNTTD10cnVlDQoraWYgIiVJbmNsdWRlVGtpbnRlciUiPT0iIiBzZXQgSW5jbHVkZVRraW50ZXI9dHJ1ZQ0KKw0KK2lmICIlSW5jbHVkZUV4dGVybmFscyUiPT0idHJ1ZSIgY2FsbCAiJWRpciVnZXRfZXh0ZXJuYWxzLmJhdCINCisNCitpZiAiJXBsYXRmJSI9PSJ4NjQiICgNCisgICAgaWYgIiVvbl82NF9iaXQlIj09InRydWUiICgNCisgICAgICAgIHJlbSBUaGlzIG91Z2h0IHRvIGFsd2F5cyBiZSBjb3JyZWN0IHRoZXNlIGRheXMuLi4NCisgICAgICAgIHNldCB2c19wbGF0Zj1hbWQ2NA0KKyAgICApIGVsc2UgKA0KKyAgICAgICAgaWYgIiVkb19wZ28lIj09InRydWUiICgNCisgICAgICAgICAgICBlY2hvLkVSUk9SOiBDYW5ub3QgY3Jvc3MtY29tcGlsZSB3aXRoIFBHTw0KKyAgICAgICAgICAgIGVjaG8uICAgIDMyYml0IG9wZXJhdGluZyBzeXN0ZW0gZGV0ZWN0ZWQsIGlmIHRoaXMgaXMgaW5jb3JyZWN0LA0KKyAgICAgICAgICAgIGVjaG8uICAgIG1ha2Ugc3VyZSB0aGUgUHJvZ3JhbUZpbGVzKHg4Nl4pIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldA0KKyAgICAgICAgICAgIGV4aXQgL2IgMQ0KKyAgICAgICAgKQ0KKyAgICAgICAgc2V0IHZzX3BsYXRmPXg4Nl9hbWQ2NA0KKyAgICApDQogKQ0KIA0KIHJlbSBTZXR1cCB0aGUgZW52aXJvbm1lbnQNCi1jYWxsICIlZGlyJWVudi5iYXQiICV2c19wbGF0ZiUNCitjYWxsICIlZGlyJWVudi5iYXQiICV2c19wbGF0ZiUgPm51bA0KIA0KLWlmICcla2lsbCUnPT0ndHJ1ZScgKA0KLSAgICBtc2J1aWxkICIlZGlyJWtpbGxfcHl0aG9uLnZjeHByb2oiICV2ZXJib3NlJSAvcDpDb25maWd1cmF0aW9uPSVjb25mJSAvcDpQbGF0Zm9ybT0lcGxhdGYlICYmICIlYnVpbGRkaXIla2lsbF9weXRob24lZGJnX2V4dCUuZXhlIg0KK2lmICIla2lsbCUiPT0idHJ1ZSIgY2FsbCA6S2lsbA0KKw0KK2lmICIlZG9fcGdvJSI9PSJ0cnVlIiAoDQorICAgIHNldCBjb25mPVBHSW5zdHJ1bWVudA0KKyAgICBjYWxsIDpCdWlsZA0KKyAgICBkZWwgL3MgIiVkaXIlXCoucGdjIg0KKyAgICBkZWwgL3MgIiVkaXIlXC4uXExpYlwqLnB5YyINCisgICAgZWNobyBvbg0KKyAgICBjYWxsICIlZGlyJVwuLlxweXRob24uYmF0IiAlcGdvX2pvYiUNCisgICAgQGVjaG8gb2ZmDQorICAgIGNhbGwgOktpbGwNCisgICAgc2V0IGNvbmY9UEdVcGRhdGUNCiApDQorZ290byBCdWlsZA0KIA0KLXNldCBleHRlcm5hbHNfZGlyPSVkaXIlLi5cZXh0ZXJuYWxzDQotaWYgJyVidWlsZF90a2ludGVyJSc9PSd0cnVlJyAoDQotICAgIGlmICclcGxhdGYlJz09J3g2NCcgKA0KLSAgICAgICAgc2V0IHRjbHRrZGlyPSVleHRlcm5hbHNfZGlyJVx0Y2x0azY0DQotICAgICAgICBzZXQgbWFjaGluZT1BTUQ2NA0KLSAgICApIGVsc2UgKA0KLSAgICAgICAgc2V0IHRjbHRrZGlyPSVleHRlcm5hbHNfZGlyJVx0Y2x0aw0KLSAgICAgICAgc2V0IG1hY2hpbmU9SVg4Ng0KLSAgICApDQotICAgIGlmICclY29uZiUnPT0nRGVidWcnICgNCi0gICAgICAgIHNldCB0Y2xfZGJnX2V4dD1nDQotICAgICAgICBzZXQgZGVidWdfZmxhZz0xDQotICAgICAgICBzZXQgb3B0aW9ucz1zeW1ib2xzDQotICAgICkgZWxzZSAoDQotICAgICAgICBzZXQgdGNsX2RiZ19leHQ9DQotICAgICAgICBzZXQgZGVidWdfZmxhZz0wDQotICAgICAgICBzZXQgb3B0aW9ucz0NCi0gICAgKQ0KLSAgICBzZXQgdGNsZGlyPSVleHRlcm5hbHNfZGlyJVx0Y2wtOC42LjEuMA0KLSAgICBzZXQgdGtkaXI9JWV4dGVybmFsc19kaXIlXHRrLTguNi4xLjANCi0gICAgc2V0IHRpeGRpcj0lZXh0ZXJuYWxzX2RpciVcdGl4LTguNC4zLjQNCi0pDQotaWYgJyVidWlsZF90a2ludGVyJSc9PSd0cnVlJyAoDQotICAgIGlmIG5vdCBleGlzdCAiJXRjbHRrZGlyJVxiaW5cdGNsODZ0JXRjbF9kYmdfZXh0JS5kbGwiICgNCi0gICAgICAgIEByZW0gYWxsIGFuZCBpbnN0YWxsIG5lZWQgdG8gYmUgc2VwYXJhdGUgaW52b2NhdGlvbnMsIG90aGVyd2lzZSBubWFrZWhscCBpcyBub3QgZm91bmQgb24gaW5zdGFsbA0KLSAgICAgICAgcHVzaGQgIiV0Y2xkaXIlXHdpbiINCi0gICAgICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIE1BQ0hJTkU9JW1hY2hpbmUlIE9QVFM9JW9wdGlvbnMlIElOU1RBTExESVI9IiV0Y2x0a2RpciUiIGNsZWFuIGFsbA0KLSAgICAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgTUFDSElORT0lbWFjaGluZSUgT1BUUz0lb3B0aW9ucyUgSU5TVEFMTERJUj0iJXRjbHRrZGlyJSIgaW5zdGFsbC1iaW5hcmllcyBpbnN0YWxsLWxpYnJhcmllcw0KLSAgICAgICAgcG9wZA0KLSAgICApDQotICAgIGlmIG5vdCBleGlzdCAiJWJ1aWxkZGlyJXRjbDg2dCV0Y2xfZGJnX2V4dCUuZGxsIiAoDQotICAgICAgICB4Y29weSAiJXRjbHRrZGlyJVxiaW5cdGNsODZ0JXRjbF9kYmdfZXh0JS5kbGwiICIlYnVpbGRkaXIlIg0KLSAgICApDQorOktpbGwNCitlY2hvIG9uDQorbXNidWlsZCAiJWRpciVccHl0aG9uY29yZS52Y3hwcm9qIiAvdDpLaWxsUHl0aG9uICV2ZXJib3NlJV4NCisgL3A6Q29uZmlndXJhdGlvbj0lY29uZiUgL3A6UGxhdGZvcm09JXBsYXRmJV4NCisgL3A6S2lsbFB5dGhvbj10cnVlDQogDQotICAgIGlmIG5vdCBleGlzdCAiJXRjbHRrZGlyJVxiaW5cdGs4NnQldGNsX2RiZ19leHQlLmRsbCIgKA0KLSAgICAgICAgcHVzaGQgIiV0a2RpciVcd2luIg0KLSAgICAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgTUFDSElORT0lbWFjaGluZSUgT1BUUz0lb3B0aW9ucyUgSU5TVEFMTERJUj0iJXRjbHRrZGlyJSIgVENMRElSPSIldGNsZGlyJSIgY2xlYW4NCi0gICAgICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIE1BQ0hJTkU9JW1hY2hpbmUlIE9QVFM9JW9wdGlvbnMlIElOU1RBTExESVI9IiV0Y2x0a2RpciUiIFRDTERJUj0iJXRjbGRpciUiIGFsbA0KLSAgICAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgTUFDSElORT0lbWFjaGluZSUgT1BUUz0lb3B0aW9ucyUgSU5TVEFMTERJUj0iJXRjbHRrZGlyJSIgVENMRElSPSIldGNsZGlyJSIgaW5zdGFsbC1iaW5hcmllcyBpbnN0YWxsLWxpYnJhcmllcw0KLSAgICAgICAgcG9wZA0KLSAgICApDQotICAgIGlmIG5vdCBleGlzdCAiJWJ1aWxkZGlyJXRrODZ0JXRjbF9kYmdfZXh0JS5kbGwiICgNCi0gICAgICAgIHhjb3B5ICIldGNsdGtkaXIlXGJpblx0azg2dCV0Y2xfZGJnX2V4dCUuZGxsIiAiJWJ1aWxkZGlyJSINCi0gICAgKQ0KK0BlY2hvIG9mZg0KK2dvdG8gOmVvZg0KIA0KLSAgICBpZiBub3QgZXhpc3QgIiV0Y2x0a2RpciVcbGliXHRpeDguNC4zXHRpeDg0JXRjbF9kYmdfZXh0JS5kbGwiICgNCi0gICAgICAgIHB1c2hkICIldGl4ZGlyJVx3aW4iDQotICAgICAgICBubWFrZSAtZiBweXRob24ubWFrIERFQlVHPSVkZWJ1Z19mbGFnJSBNQUNISU5FPSVtYWNoaW5lJSBUQ0xfRElSPSIldGNsZGlyJSIgVEtfRElSPSIldGtkaXIlIiBJTlNUQUxMX0RJUj0iJXRjbHRrZGlyJSIgY2xlYW4NCi0gICAgICAgIG5tYWtlIC1mIHB5dGhvbi5tYWsgREVCVUc9JWRlYnVnX2ZsYWclIE1BQ0hJTkU9JW1hY2hpbmUlIFRDTF9ESVI9IiV0Y2xkaXIlIiBUS19ESVI9IiV0a2RpciUiIElOU1RBTExfRElSPSIldGNsdGtkaXIlIiBhbGwNCi0gICAgICAgIG5tYWtlIC1mIHB5dGhvbi5tYWsgREVCVUc9JWRlYnVnX2ZsYWclIE1BQ0hJTkU9JW1hY2hpbmUlIFRDTF9ESVI9IiV0Y2xkaXIlIiBUS19ESVI9IiV0a2RpciUiIElOU1RBTExfRElSPSIldGNsdGtkaXIlIiBpbnN0YWxsDQotICAgICAgICBwb3BkDQotICAgICkNCi0pDQotDQorOkJ1aWxkDQogcmVtIENhbGwgb24gTVNCdWlsZCB0byBkbyB0aGUgd29yaywgZWNobyB0aGUgY29tbWFuZC4NCiByZW0gUGFzc2luZyAlMS05IGlzIG5vdCB0aGUgcHJlZmVycmVkIG9wdGlvbiwgYnV0IGFyZ3VtZW50IHBhcnNpbmcgaW4NCiByZW0gYmF0Y2ggaXMsIHNoYWxsIHdlIHNheSwgImxhY2tsdXN0ZXIiDQogZWNobyBvbg0KLW1zYnVpbGQgIiVkaXIlcGNidWlsZC5zbG4iIC90OiV0YXJnZXQlICVwYXJhbGxlbCUgJXZlcmJvc2UlIC9wOkNvbmZpZ3VyYXRpb249JWNvbmYlIC9wOlBsYXRmb3JtPSVwbGF0ZiUgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkNCittc2J1aWxkICIlZGlyJXBjYnVpbGQucHJvaiIgL3Q6JXRhcmdldCUgJXBhcmFsbGVsJSAldmVyYm9zZSVeDQorIC9wOkNvbmZpZ3VyYXRpb249JWNvbmYlIC9wOlBsYXRmb3JtPSVwbGF0ZiVeDQorIC9wOkluY2x1ZGVFeHRlcm5hbHM9JUluY2x1ZGVFeHRlcm5hbHMlXg0KKyAvcDpJbmNsdWRlU1NMPSVJbmNsdWRlU1NMJSAvcDpJbmNsdWRlVGtpbnRlcj0lSW5jbHVkZVRraW50ZXIlXg0KKyAvcDpVc2VUZXN0TWFya2VyPSVVc2VUZXN0TWFya2VyJV4NCisgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkNCisNCitAZWNobyBvZmYNCitnb3RvIDplb2YNCisNCis6VmVyc2lvbg0KK3JlbSBEaXNwbGF5IHRoZSBjdXJyZW50IGJ1aWxkIHZlcnNpb24gaW5mb3JtYXRpb24NCittc2J1aWxkICIlZGlyJXB5dGhvbi5wcm9wcyIgL3Q6U2hvd1ZlcnNpb25JbmZvIC92Om0gL25vbG9nbyAlMSAlMiAlMyAlNCAlNSAlNiAlNyAlOCAlOQ0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvYnVpbGRfcGdvLmJhdCBiL1BDYnVpbGQvYnVpbGRfcGdvLmJhdAppbmRleCBkN2U0ZThiLi44NzJjMzgyIDEwMDY0NAotLS0gYS9QQ2J1aWxkL2J1aWxkX3Bnby5iYXQKKysrIGIvUENidWlsZC9idWlsZF9wZ28uYmF0CkBAIC0xLDQxICsxLDYgQEAKIEBlY2hvIG9mZg0KLXJlbSBBIGJhdGNoIHByb2dyYW0gdG8gYnVpbGQgUEdPIChQcm9maWxlIGd1aWRlZCBvcHRpbWl6YXRpb24pIGJ5IGZpcnN0DQotcmVtIGJ1aWxkaW5nIGluc3RydW1lbnRlZCBiaW5hcmllcywgdGhlbiBydW5uaW5nIHRoZSB0ZXN0c3VpdGUsIGFuZA0KLXJlbSBmaW5hbGx5IGJ1aWxkaW5nIHRoZSBvcHRpbWl6ZWQgY29kZS4NCi1yZW0gTm90ZSwgYWZ0ZXIgdGhlIGZpcnN0IGluc3RydW1lbnRlZCBydW4sIG9uZSBjYW4ganVzdCBrZWVwIG9uDQotcmVtIGJ1aWxkaW5nIHRoZSBQR1VwZGF0ZSBjb25maWd1cmF0aW9uIHdoaWxlIGRldmVsb3BpbmcuDQorZWNoby5EZXByZWNhdGlvbldhcm5pbmc6DQorZWNoby4gICAgVGhpcyBzY3JpcHQgaXMgZGVwcmVjYXRlZCwgdXNlIGBidWlsZC5iYXQgLS1wZ29gIGluc3RlYWQuDQorZWNoby4NCiANCi1zZXRsb2NhbA0KLXNldCBwbGF0Zj1XaW4zMg0KLQ0KLXJlbSB1c2UgdGhlIHBlcmZvcm1hbmNlIHRlc3RzdWl0ZS4gIFRoaXMgaXMgcXVpY2sgYW5kIHNpbXBsZQ0KLXNldCBqb2IxPS4uXHRvb2xzXHB5YmVuY2hccHliZW5jaC5weSAtbiAxIC1DIDEgLS13aXRoLWdjDQotc2V0IHBhdGgxPS4uXHRvb2xzXHB5YmVuY2gNCi0NCi1yZW0gb3IgdGhlIHdob2xlIHRlc3RzdWl0ZSBmb3IgbW9yZSB0aG9yb3VnaCB0ZXN0aW5nDQotc2V0IGpvYjI9Li5cbGliXHRlc3RccmVncnRlc3QucHkNCi1zZXQgcGF0aDI9Li5cbGliDQotDQotc2V0IGpvYj0lam9iMSUNCi1zZXQgY2xycGF0aD0lcGF0aDElDQotDQotOkNoZWNrT3B0cw0KLWlmICIlMSI9PSItcCIgKHNldCBwbGF0Zj0lMikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAiJTEiPT0iLTIiIChzZXQgam9iPSVqb2IyJSkgJiAoc2V0IGNscnBhdGg9JXBhdGgyJSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotDQotc2V0IFBHST0lcGxhdGYlLXBnaQ0KLXNldCBQR089JXBsYXRmJS1wZ28NCi0NCi1AZWNobyBvbg0KLXJlbSBidWlsZCB0aGUgaW5zdHJ1bWVudGVkIHZlcnNpb24NCi1jYWxsIGJ1aWxkIC1wICVwbGF0ZiUgLWMgUEdJbnN0cnVtZW50DQotDQotcmVtIHJlbW92ZSAucHljIGZpbGVzLCAucGdjIGZpbGVzIGFuZCBleGVjdXRlIHRoZSBqb2INCi0lUEdJJVxweXRob24uZXhlIHJtcHljLnB5ICVjbHJwYXRoJQ0KLWRlbCAlUEdJJVwqLnBnYw0KLSVQR0klXHB5dGhvbi5leGUgJWpvYiUNCi0NCi1yZW0gZmluYWxseSBidWlsZCB0aGUgb3B0aW1pemVkIHZlcnNpb24NCi1pZiBleGlzdCAlUEdPJSBkZWwgL3MgL3EgJVBHTyUNCi1jYWxsIGJ1aWxkIC1wICVwbGF0ZiUgLWMgUEdVcGRhdGUNCi0NCitjYWxsICIlfmRwMGJ1aWxkLmJhdCIgLS1wZ28gJSoNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2J1aWxkX3NzbC5iYXQgYi9QQ2J1aWxkL2J1aWxkX3NzbC5iYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NzViOGQuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9idWlsZF9zc2wuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotQGVjaG8gb2ZmDQotaWYgbm90IGRlZmluZWQgSE9TVF9QWVRIT04gKA0KLSAgaWYgJTEgRVFVIERlYnVnICgNCi0gICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbl9kLmV4ZQ0KLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzRfZC5kbGwgZXhpdCAxDQotICApIEVMU0UgKA0KLSAgICBzZXQgSE9TVF9QWVRIT049cHl0aG9uLmV4ZQ0KLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzQuZGxsIGV4aXQgMQ0KLSAgKQ0KLSkNCi0lSE9TVF9QWVRIT04lIGJ1aWxkX3NzbC5weSAlMSAlMiAlMw0KLQ0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvYnVpbGRfc3NsLnB5IGIvUENidWlsZC9idWlsZF9zc2wucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZWU3MTUuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9idWlsZF9zc2wucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNjkgKzAsMCBAQAotIyBTY3JpcHQgZm9yIGJ1aWxkaW5nIHRoZSBfc3NsIGFuZCBfaGFzaGxpYiBtb2R1bGVzIGZvciBXaW5kb3dzLgotIyBVc2VzIFBlcmwgdG8gc2V0dXAgdGhlIE9wZW5TU0wgZW52aXJvbm1lbnQgY29ycmVjdGx5Ci0jIGFuZCBidWlsZCBPcGVuU1NMLCB0aGVuIGludm9rZXMgYSBzaW1wbGUgbm1ha2Ugc2Vzc2lvbgotIyBmb3IgdGhlIGFjdHVhbCBfc3NsLnB5ZCBhbmQgX2hhc2hsaWIucHlkIERMTHMuCi0KLSMgVEhFT1JFVElDQUxMWSwgeW91IGNhbjoKLSMgKiBVbnBhY2sgdGhlIGxhdGVzdCBTU0wgcmVsZWFzZSBvbmUgbGV2ZWwgYWJvdmUgeW91ciBtYWluIFB5dGhvbiBzb3VyY2UKLSMgICBkaXJlY3RvcnkuICBJdCBpcyBsaWtlbHkgeW91IHdpbGwgYWxyZWFkeSBmaW5kIHRoZSB6bGliIGxpYnJhcnkgYW5kCi0jICAgYW55IG90aGVyIGV4dGVybmFsIHBhY2thZ2VzIHRoZXJlLgotIyAqIEluc3RhbGwgQWN0aXZlUGVybCBhbmQgZW5zdXJlIGl0IGlzIHNvbWV3aGVyZSBvbiB5b3VyIHBhdGguCi0jICogUnVuIHRoaXMgc2NyaXB0IGZyb20gdGhlIFBDQnVpbGQgZGlyZWN0b3J5LgotIwotIyBpdCBzaG91bGQgY29uZmlndXJlIGFuZCBidWlsZCBTU0wsIHRoZW4gYnVpbGQgdGhlIF9zc2wgYW5kIF9oYXNobGliCi0jIFB5dGhvbiBleHRlbnNpb25zIHdpdGhvdXQgaW50ZXJ2ZW50aW9uLgotCi0jIE1vZGlmaWVkIGJ5IENocmlzdGlhbiBIZWltZXMKLSMgTm93IHRoaXMgc2NyaXB0IHN1cHBvcnRzIHByZS1nZW5lcmF0ZWQgbWFrZWZpbGVzIGFuZCBhc3NlbWJseSBmaWxlcy4KLSMgRGV2ZWxvcGVycyBkb24ndCBuZWVkIGFuIGluc3RhbGxhdGlvbiBvZiBQZXJsIGFueW1vcmUgdG8gYnVpbGQgUHl0aG9uLiBBIHN2bgotIyBjaGVja291dCBmcm9tIG91ciBzdm4gcmVwb3NpdG9yeSBpcyBlbm91Z2guCi0jCi0jIEluIE9yZGVyIHRvIGNyZWF0ZSB0aGUgZmlsZXMgaW4gdGhlIGNhc2Ugb2YgYW4gdXBkYXRlIHlvdSBzdGlsbCBuZWVkIFBlcmwuCi0jIFJ1biBidWlsZF9zc2wgaW4gdGhpcyBvcmRlcjoKLSMgcHl0aG9uLmV4ZSBidWlsZF9zc2wucHkgUmVsZWFzZSB4NjQKLSMgcHl0aG9uLmV4ZSBidWlsZF9zc2wucHkgUmVsZWFzZSBXaW4zMgotCi1pbXBvcnQgb3MsIHN5cywgcmUsIHNodXRpbAotaW1wb3J0IHN1YnByb2Nlc3MKLQotIyBGaW5kIGFsbCAiZm9vLmV4ZSIgZmlsZXMgb24gdGhlIFBBVEguCi1kZWYgZmluZF9hbGxfb25fcGF0aChmaWxlbmFtZSwgZXh0cmFzID0gTm9uZSk6Ci0gICAgZW50cmllcyA9IG9zLmVudmlyb25bIlBBVEgiXS5zcGxpdChvcy5wYXRoc2VwKQotICAgIHJldCA9IFtdCi0gICAgZm9yIHAgaW4gZW50cmllczoKLSAgICAgICAgZm5hbWUgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHAsIGZpbGVuYW1lKSkKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZm5hbWUpIGFuZCBmbmFtZSBub3QgaW4gcmV0OgotICAgICAgICAgICAgcmV0LmFwcGVuZChmbmFtZSkKLSAgICBpZiBleHRyYXM6Ci0gICAgICAgIGZvciBwIGluIGV4dHJhczoKLSAgICAgICAgICAgIGZuYW1lID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihwLCBmaWxlbmFtZSkpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbmFtZSkgYW5kIGZuYW1lIG5vdCBpbiByZXQ6Ci0gICAgICAgICAgICAgICAgcmV0LmFwcGVuZChmbmFtZSkKLSAgICByZXR1cm4gcmV0Ci0KLSMgRmluZCBhIHN1aXRhYmxlIFBlcmwgaW5zdGFsbGF0aW9uIGZvciBPcGVuU1NMLgotIyBjeWd3aW4gcGVybCBkb2VzICpub3QqIHdvcmsuICBBY3RpdmVQZXJsIGRvZXMuCi0jIEJlaW5nIGEgUGVybCBkdW1teSwgdGhlIHNpbXBsZXN0IHdheSBJIGNhbiBjaGVjayBpcyBpZiB0aGUgIldpbjMyIiBwYWNrYWdlCi0jIGlzIGF2YWlsYWJsZS4KLWRlZiBmaW5kX3dvcmtpbmdfcGVybChwZXJscyk6Ci0gICAgZm9yIHBlcmwgaW4gcGVybHM6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtwZXJsLCAiLWUiLCAidXNlIFdpbjMyOyJdKQotICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHBlcmwKLQotICAgIGlmIHBlcmxzOgotICAgICAgICBwcmludCgiVGhlIGZvbGxvd2luZyBwZXJsIGludGVycHJldGVycyB3ZXJlIGZvdW5kOiIpCi0gICAgICAgIGZvciBwIGluIHBlcmxzOgotICAgICAgICAgICAgcHJpbnQoIiAiLCBwKQotICAgICAgICBwcmludCgiIE5vbmUgb2YgdGhlc2UgdmVyc2lvbnMgYXBwZWFyIHN1aXRhYmxlIGZvciBidWlsZGluZyBPcGVuU1NMIikKLSAgICBlbHNlOgotICAgICAgICBwcmludCgiTk8gcGVybCBpbnRlcnByZXRlcnMgd2VyZSBmb3VuZCBvbiB0aGlzIG1hY2hpbmUgYXQgYWxsISIpCi0gICAgcHJpbnQoIiBQbGVhc2UgaW5zdGFsbCBBY3RpdmVQZXJsIGFuZCBlbnN1cmUgaXQgYXBwZWFycyBvbiB5b3VyIHBhdGgiKQotCi0jIEZldGNoIFNTTCBkaXJlY3RvcnkgZnJvbSBWQyBwcm9wZXJ0aWVzCi1kZWYgZ2V0X3NzbF9kaXIoKToKLSAgICBwcm9wZmlsZSA9IChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJ3B5cHJvamVjdC5wcm9wcycpKQotICAgIHdpdGggb3Blbihwcm9wZmlsZSwgZW5jb2Rpbmc9J3V0Zi04LXNpZycpIGFzIGY6Ci0gICAgICAgIG0gPSByZS5zZWFyY2goJ29wZW5zc2wtKFtePF0rKTwnLCBmLnJlYWQoKSkKLSAgICAgICAgcmV0dXJuICIuLlxleHRlcm5hbHNcb3BlbnNzbC0iK20uZ3JvdXAoMSkKLQotCi1kZWYgY3JlYXRlX21ha2VmaWxlNjQobWFrZWZpbGUsIG0zMik6Ci0gICAgIiIiQ3JlYXRlIGFuZCBmaXggbWFrZWZpbGUgZm9yIDY0Yml0Ci0KLSAgICBSZXBsYWNlIDMyIHdpdGggNjRiaXQgZGlyZWN0b3JpZXMKLSAgICAiIiIKLSAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUobTMyKToKLSAgICAgICAgcmV0dXJuCi0gICAgd2l0aCBvcGVuKG0zMikgYXMgZmluOgotICAgICAgICB3aXRoIG9wZW4obWFrZWZpbGUsICd3JykgYXMgZm91dDoKLSAgICAgICAgICAgIGZvciBsaW5lIGluIGZpbjoKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCI9dG1wMzIiLCAiPXRtcDY0IikKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCI9b3V0MzIiLCAiPW91dDY0IikKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCI9aW5jMzIiLCAiPWluYzY0IikKLSAgICAgICAgICAgICAgICAjIGZvcmNlIDY0IGJpdCBtYWNoaW5lCi0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiTUtMSUI9bGliIiwgIk1LTElCPWxpYiAvTUFDSElORTpYNjQiKQotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIkxGTEFHUz0iLCAiTEZMQUdTPS9NQUNISU5FOlg2NCAiKQotICAgICAgICAgICAgICAgICMgZG9uJ3QgbGluayBhZ2FpbnN0IHRoZSBsaWIgb24gNjRiaXQgc3lzdGVtcwotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoImJ1ZmZlcm92ZXJmbG93dS5saWIiLCAiIikKLSAgICAgICAgICAgICAgICBmb3V0LndyaXRlKGxpbmUpCi0gICAgb3MudW5saW5rKG0zMikKLQotZGVmIGZpeF9tYWtlZmlsZShtYWtlZmlsZSk6Ci0gICAgIiIiRml4IHNvbWUgc3R1ZmYgaW4gYWxsIG1ha2VmaWxlcwotICAgICIiIgotICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShtYWtlZmlsZSk6Ci0gICAgICAgIHJldHVybgotICAgIHdpdGggb3BlbihtYWtlZmlsZSkgYXMgZmluOgotICAgICAgICBsaW5lcyA9IGZpbi5yZWFkbGluZXMoKQotICAgIHdpdGggb3BlbihtYWtlZmlsZSwgJ3cnKSBhcyBmb3V0OgotICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiUEVSTD0iKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJDUD0iKToKLSAgICAgICAgICAgICAgICBsaW5lID0gIkNQPWNvcHlcbiIKLSAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiTUtESVI9Iik6Ci0gICAgICAgICAgICAgICAgbGluZSA9ICJNS0RJUj1ta2RpclxuIgotICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJDRkxBRz0iKToKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgZm9yIGFsZ28gaW4gKCJSQzUiLCAiTURDMiIsICJJREVBIik6Ci0gICAgICAgICAgICAgICAgICAgIG5vYWxnbyA9ICIgLURPUEVOU1NMX05PXyVzIiAlIGFsZ28KLSAgICAgICAgICAgICAgICAgICAgaWYgbm9hbGdvIG5vdCBpbiBsaW5lOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUgKyBub2FsZ28KLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZSArICdcbicKLSAgICAgICAgICAgIGZvdXQud3JpdGUobGluZSkKLQotZGVmIHJ1bl9jb25maWd1cmUoY29uZmlndXJlLCBkb19zY3JpcHQpOgotICAgIHByaW50KCJwZXJsIENvbmZpZ3VyZSAiK2NvbmZpZ3VyZSsiIG5vLWlkZWEgbm8tbWRjMiIpCi0gICAgb3Muc3lzdGVtKCJwZXJsIENvbmZpZ3VyZSAiK2NvbmZpZ3VyZSsiIG5vLWlkZWEgbm8tbWRjMiIpCi0gICAgcHJpbnQoZG9fc2NyaXB0KQotICAgIG9zLnN5c3RlbShkb19zY3JpcHQpCi0KLWRlZiBjbXAoZjEsIGYyKToKLSAgICBidWZzaXplID0gMTAyNCAqIDgKLSAgICB3aXRoIG9wZW4oZjEsICdyYicpIGFzIGZwMSwgb3BlbihmMiwgJ3JiJykgYXMgZnAyOgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgYjEgPSBmcDEucmVhZChidWZzaXplKQotICAgICAgICAgICAgYjIgPSBmcDIucmVhZChidWZzaXplKQotICAgICAgICAgICAgaWYgYjEgIT0gYjI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBpZiBub3QgYjE6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLQotZGVmIGNvcHkoc3JjLCBkc3QpOgotICAgIGlmIG9zLnBhdGguaXNmaWxlKGRzdCkgYW5kIGNtcChzcmMsIGRzdCk6Ci0gICAgICAgIHJldHVybgotICAgIHNodXRpbC5jb3B5KHNyYywgZHN0KQotCi1kZWYgbWFpbigpOgotICAgIGJ1aWxkX2FsbCA9ICItYSIgaW4gc3lzLmFyZ3YKLSAgICBpZiBzeXMuYXJndlsxXSA9PSAiUmVsZWFzZSI6Ci0gICAgICAgIGRlYnVnID0gRmFsc2UKLSAgICBlbGlmIHN5cy5hcmd2WzFdID09ICJEZWJ1ZyI6Ci0gICAgICAgIGRlYnVnID0gVHJ1ZQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3Ioc3RyKHN5cy5hcmd2KSkKLQotICAgIGlmIHN5cy5hcmd2WzJdID09ICJXaW4zMiI6Ci0gICAgICAgIGFyY2ggPSAieDg2IgotICAgICAgICBjb25maWd1cmUgPSAiVkMtV0lOMzIiCi0gICAgICAgIGRvX3NjcmlwdCA9ICJtc1xcZG9fbmFzbSIKLSAgICAgICAgbWFrZWZpbGU9Im1zXFxudC5tYWsiCi0gICAgICAgIG0zMiA9IG1ha2VmaWxlCi0gICAgICAgIGRpcnN1ZmZpeCA9ICIzMiIKLSAgICBlbGlmIHN5cy5hcmd2WzJdID09ICJ4NjQiOgotICAgICAgICBhcmNoPSJhbWQ2NCIKLSAgICAgICAgY29uZmlndXJlID0gIlZDLVdJTjY0QSIKLSAgICAgICAgZG9fc2NyaXB0ID0gIm1zXFxkb193aW42NGEiCi0gICAgICAgIG1ha2VmaWxlID0gIm1zXFxudDY0Lm1hayIKLSAgICAgICAgbTMyID0gbWFrZWZpbGUucmVwbGFjZSgnNjQnLCAnJykKLSAgICAgICAgZGlyc3VmZml4ID0gIjY0IgotICAgICAgICAjb3MuZW52aXJvblsiVlNFWFRDT01QX1VTRUNMIl0gPSAiTVNfT1BURVJPTiIKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKHN0cihzeXMuYXJndikpCi0KLSAgICBtYWtlX2ZsYWdzID0gIiIKLSAgICBpZiBidWlsZF9hbGw6Ci0gICAgICAgIG1ha2VfZmxhZ3MgPSAiLWEiCi0gICAgIyBwZXJsIHNob3VsZCBiZSBvbiB0aGUgcGF0aCwgYnV0IHdlIGFsc28gbG9vayBpbiAiXHBlcmwiIGFuZCAiYzpcXHBlcmwiCi0gICAgIyBhcyAid2VsbCBrbm93biIgbG9jYXRpb25zCi0gICAgcGVybHMgPSBmaW5kX2FsbF9vbl9wYXRoKCJwZXJsLmV4ZSIsIFtyIlxwZXJsXGJpbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIkM6XHBlcmxcYmluIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiXHBlcmw2NFxiaW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJDOlxwZXJsNjRcYmluIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICBwZXJsID0gZmluZF93b3JraW5nX3BlcmwocGVybHMpCi0gICAgaWYgcGVybDoKLSAgICAgICAgcHJpbnQoIkZvdW5kIGEgd29ya2luZyBwZXJsIGF0ICclcyciICUgKHBlcmwsKSkKLSAgICBlbHNlOgotICAgICAgICBwcmludCgiTm8gUGVybCBpbnN0YWxsYXRpb24gd2FzIGZvdW5kLiBFeGlzdGluZyBNYWtlZmlsZXMgYXJlIHVzZWQuIikKLSAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAjIExvb2sgZm9yIFNTTCAyIGxldmVscyB1cCBmcm9tIHBjYnVpbGQgLSBpZSwgc2FtZSBwbGFjZSB6bGliIGV0YyBhbGwgbGl2ZS4KLSAgICBzc2xfZGlyID0gZ2V0X3NzbF9kaXIoKQotICAgIGlmIHNzbF9kaXIgaXMgTm9uZToKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICMgYWRkIG91ciBjb3B5IG9mIE5BU00gdG8gUEFUSC4gIEl0IHdpbGwgYmUgb24gdGhlIHNhbWUgbGV2ZWwgYXMgb3BlbnNzbAotICAgIGZvciBkaXIgaW4gb3MubGlzdGRpcihvcy5wYXRoLmpvaW4oc3NsX2Rpciwgb3MucGFyZGlyKSk6Ci0gICAgICAgIGlmIGRpci5zdGFydHN3aXRoKCduYXNtJyk6Ci0gICAgICAgICAgICBuYXNtX2RpciA9IG9zLnBhdGguam9pbihzc2xfZGlyLCBvcy5wYXJkaXIsIGRpcikKLSAgICAgICAgICAgIG5hc21fZGlyID0gb3MucGF0aC5hYnNwYXRoKG5hc21fZGlyKQotICAgICAgICAgICAgb2xkX3BhdGggPSBvcy5lbnZpcm9uWydQQVRIJ10KLSAgICAgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IG9zLnBhdGhzZXAuam9pbihbbmFzbV9kaXIsIG9sZF9wYXRoXSkKLSAgICAgICAgICAgIGJyZWFrCi0gICAgZWxzZToKLSAgICAgICAgcHJpbnQoJ05BU00gd2FzIG5vdCBmb3VuZCwgbWFrZSBzdXJlIGl0IGlzIG9uIFBBVEgnKQotCi0KLSAgICBvbGRfY2QgPSBvcy5nZXRjd2QoKQotICAgIHRyeToKLSAgICAgICAgb3MuY2hkaXIoc3NsX2RpcikKLSAgICAgICAgIyByZWJ1aWxkIG1ha2VmaWxlIHdoZW4gd2UgZG8gdGhlIHJvbGUgb3ZlciBmcm9tIDMyIHRvIDY0IGJ1aWxkCi0gICAgICAgIGlmIGFyY2ggPT0gImFtZDY0IiBhbmQgb3MucGF0aC5pc2ZpbGUobTMyKSBhbmQgbm90IG9zLnBhdGguaXNmaWxlKG1ha2VmaWxlKToKLSAgICAgICAgICAgIG9zLnVubGluayhtMzIpCi0KLSAgICAgICAgIyBJZiB0aGUgc3NsIG1ha2VmaWxlcyBkbyBub3QgZXhpc3QsIHdlIGludm9rZSBQZXJsIHRvIGdlbmVyYXRlIHRoZW0uCi0gICAgICAgICMgRHVlIHRvIGEgYnVnIGluIHRoaXMgc2NyaXB0LCB0aGUgbWFrZWZpbGUgc29tZXRpbWVzIGVuZGVkIHVwIGVtcHR5Ci0gICAgICAgICMgRm9yY2UgYSByZWdlbmVyYXRpb24gaWYgaXQgaXMuCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShtYWtlZmlsZSkgb3Igb3MucGF0aC5nZXRzaXplKG1ha2VmaWxlKT09MDoKLSAgICAgICAgICAgIGlmIHBlcmwgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBwcmludCgiUGVybCBpcyByZXF1aXJlZCB0byBidWlsZCB0aGUgbWFrZWZpbGVzISIpCi0gICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICAgICAgICAgcHJpbnQoIkNyZWF0aW5nIHRoZSBtYWtlZmlsZXMuLi4iKQotICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgICAgICAjIFB1dCBvdXIgd29ya2luZyBQZXJsIGF0IHRoZSBmcm9udCBvZiBvdXIgcGF0aAotICAgICAgICAgICAgb3MuZW52aXJvblsiUEFUSCJdID0gb3MucGF0aC5kaXJuYW1lKHBlcmwpICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aHNlcCArIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmVudmlyb25bIlBBVEgiXQotICAgICAgICAgICAgcnVuX2NvbmZpZ3VyZShjb25maWd1cmUsIGRvX3NjcmlwdCkKLSAgICAgICAgICAgIGlmIGRlYnVnOgotICAgICAgICAgICAgICAgIHByaW50KCJPcGVuU1NMIGRlYnVnIGJ1aWxkcyBhcmVuJ3Qgc3VwcG9ydGVkLiIpCi0gICAgICAgICAgICAjaWYgYXJjaD09Ing4NiIgYW5kIGRlYnVnOgotICAgICAgICAgICAgIyAgICAjIHRoZSBkb19tYXNtIHNjcmlwdCBpbiBvcGVuc3NsIGRvZXNuJ3QgZ2VuZXJhdGUgYSBkZWJ1ZwotICAgICAgICAgICAgIyAgICAjIGJ1aWxkIG1ha2VmaWxlIHNvIHdlIGdlbmVyYXRlIGl0IGhlcmU6Ci0gICAgICAgICAgICAjICAgIG9zLnN5c3RlbSgicGVybCB1dGlsXG1rMW1mLnBsIGRlYnVnICIrY29uZmlndXJlKyIgPiIrbWFrZWZpbGUpCi0KLSAgICAgICAgICAgIGlmIGFyY2ggPT0gImFtZDY0IjoKLSAgICAgICAgICAgICAgICBjcmVhdGVfbWFrZWZpbGU2NChtYWtlZmlsZSwgbTMyKQotICAgICAgICAgICAgZml4X21ha2VmaWxlKG1ha2VmaWxlKQotICAgICAgICAgICAgY29weShyImNyeXB0b1xidWlsZGluZi5oIiwgciJjcnlwdG9cYnVpbGRpbmZfJXMuaCIgJSBhcmNoKQotICAgICAgICAgICAgY29weShyImNyeXB0b1xvcGVuc3NsY29uZi5oIiwgciJjcnlwdG9cb3BlbnNzbGNvbmZfJXMuaCIgJSBhcmNoKQotCi0gICAgICAgICMgSWYgdGhlIGFzc2VtYmxlciBmaWxlcyBkb24ndCBleGlzdCBpbiB0bXBYWCwgY29weSB0aGVtIHRoZXJlCi0gICAgICAgIGlmIHBlcmwgaXMgTm9uZSBhbmQgb3MucGF0aC5leGlzdHMoImFzbSIrZGlyc3VmZml4KToKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cygidG1wIitkaXJzdWZmaXgpOgotICAgICAgICAgICAgICAgIG9zLm1rZGlyKCJ0bXAiK2RpcnN1ZmZpeCkKLSAgICAgICAgICAgIGZvciBmIGluIG9zLmxpc3RkaXIoImFzbSIrZGlyc3VmZml4KToKLSAgICAgICAgICAgICAgICBpZiBub3QgZi5lbmRzd2l0aCgiLmFzbSIpOiBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHIidG1wJXNcJXMiICUgKGRpcnN1ZmZpeCwgZikpOiBjb250aW51ZQotICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5KHIiYXNtJXNcJXMiICUgKGRpcnN1ZmZpeCwgZiksICJ0bXAiK2RpcnN1ZmZpeCkKLQotICAgICAgICAjIE5vdyBydW4gbWFrZS4KLSAgICAgICAgaWYgYXJjaCA9PSAiYW1kNjQiOgotICAgICAgICAgICAgcmMgPSBvcy5zeXN0ZW0oIm5hc20gLWYgd2luNjQgLURORUFSIC1PeCAtZyBtc1xcdXB0YWJsZS5hc20iKQotICAgICAgICAgICAgaWYgcmM6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIm5hc20gYXNzZW1ibGVyIGhhcyBmYWlsZWQuIikKLSAgICAgICAgICAgICAgICBzeXMuZXhpdChyYykKLQotICAgICAgICBjb3B5KHIiY3J5cHRvXGJ1aWxkaW5mXyVzLmgiICUgYXJjaCwgciJjcnlwdG9cYnVpbGRpbmYuaCIpCi0gICAgICAgIGNvcHkociJjcnlwdG9cb3BlbnNzbGNvbmZfJXMuaCIgJSBhcmNoLCByImNyeXB0b1xvcGVuc3NsY29uZi5oIikKLQotICAgICAgICAjbWFrZUNvbW1hbmQgPSAibm1ha2UgL25vbG9nbyBQRVJMPVwiJXNcIiAtZiBcIiVzXCIiICUocGVybCwgbWFrZWZpbGUpCi0gICAgICAgIG1ha2VDb21tYW5kID0gIm5tYWtlIC9ub2xvZ28gLWYgXCIlc1wiIiAlIG1ha2VmaWxlCi0gICAgICAgIHByaW50KCJFeGVjdXRpbmcgc3NsIG1ha2VmaWxlczoiLCBtYWtlQ29tbWFuZCkKLSAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgIHJjID0gb3Muc3lzdGVtKG1ha2VDb21tYW5kKQotICAgICAgICBpZiByYzoKLSAgICAgICAgICAgIHByaW50KCJFeGVjdXRpbmcgIittYWtlZmlsZSsiIGZhaWxlZCIpCi0gICAgICAgICAgICBwcmludChyYykKLSAgICAgICAgICAgIHN5cy5leGl0KHJjKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIG9zLmNoZGlyKG9sZF9jZCkKLSAgICBzeXMuZXhpdChyYykKLQotaWYgX19uYW1lX189PSdfX21haW5fXyc6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2J1aWxkX3RraW50ZXIucHkgYi9QQ2J1aWxkL2J1aWxkX3RraW50ZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4MDdlN2IuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9idWlsZF90a2ludGVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotIiIiU2NyaXB0IHRvIGNvbXBpbGUgdGhlIGRlcGVuZGVuY2llcyBvZiBfdGtpbnRlcgotCi1Db3B5cmlnaHQgKGMpIDIwMDcgYnkgQ2hyaXN0aWFuIEhlaW1lcyA8Y2hyaXN0aWFuQGNoZWltZXMuZGU+Ci0KLUxpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KLSIiIgotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotaGVyZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQotcGFyID0gb3MucGF0aC5wYXJkaXIKLQotVENMID0gInRjbDguNi4xIgotVEsgPSAidGs4LjYuMSIKLVRJWCA9ICJ0aXgtOC40LjMuMyIKLQotUk9PVCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oaGVyZSwgcGFyLCBwYXIpKQotTk1BS0UgPSAoJ25tYWtlIC9ub2xvZ28gL2YgJXMgJXMgJXMnKQotCi1kZWYgbm1ha2UobWFrZWZpbGUsIGNvbW1hbmQ9IiIsICoqa3cpOgotICAgIGRlZmluZXMgPSAnICcuam9pbihrKyc9JytzdHIodikgZm9yIGssIHYgaW4ga3cuaXRlbXMoKSkKLSAgICBjbWQgPSBOTUFLRSAlIChtYWtlZmlsZSwgZGVmaW5lcywgY29tbWFuZCkKLSAgICBwcmludCgiXG5cbiIrY21kKyJcbiIpCi0gICAgaWYgb3Muc3lzdGVtKGNtZCkgIT0gMDoKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKGNtZCkKLQotZGVmIGJ1aWxkKHBsYXRmb3JtLCBjbGVhbik6Ci0gICAgaWYgcGxhdGZvcm0gPT0gIldpbjMyIjoKLSAgICAgICAgZGVzdCA9IG9zLnBhdGguam9pbihST09ULCAidGNsdGsiKQotICAgICAgICBtYWNoaW5lID0gIklYODYiCi0gICAgZWxpZiBwbGF0Zm9ybSA9PSAiQU1ENjQiOgotICAgICAgICBkZXN0ID0gb3MucGF0aC5qb2luKFJPT1QsICJ0Y2x0azY0IikKLSAgICAgICAgbWFjaGluZSA9ICJBTUQ2NCIKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKHBsYXRmb3JtKQotCi0gICAgIyBUQ0wKLSAgICB0Y2xkaXIgPSBvcy5wYXRoLmpvaW4oUk9PVCwgVENMKQotICAgIGlmIDE6Ci0gICAgICAgIG9zLmNoZGlyKG9zLnBhdGguam9pbih0Y2xkaXIsICJ3aW4iKSkKLSAgICAgICAgaWYgY2xlYW46Ci0gICAgICAgICAgICBubWFrZSgibWFrZWZpbGUudmMiLCAiY2xlYW4iKQotICAgICAgICBubWFrZSgibWFrZWZpbGUudmMiLCBNQUNISU5FPW1hY2hpbmUpCi0gICAgICAgIG5tYWtlKCJtYWtlZmlsZS52YyIsICJpbnN0YWxsIiwgSU5TVEFMTERJUj1kZXN0LCBNQUNISU5FPW1hY2hpbmUpCi0KLSAgICAjIFRLCi0gICAgaWYgMToKLSAgICAgICAgb3MuY2hkaXIob3MucGF0aC5qb2luKFJPT1QsIFRLLCAid2luIikpCi0gICAgICAgIGlmIGNsZWFuOgotICAgICAgICAgICAgbm1ha2UoIm1ha2VmaWxlLnZjIiwgImNsZWFuIiwgREVCVUc9MCwgVENMRElSPXRjbGRpcikKLSAgICAgICAgbm1ha2UoIm1ha2VmaWxlLnZjIiwgREVCVUc9MCwgTUFDSElORT1tYWNoaW5lLCBUQ0xESVI9dGNsZGlyKQotICAgICAgICBubWFrZSgibWFrZWZpbGUudmMiLCAiaW5zdGFsbCIsIERFQlVHPTAsIElOU1RBTExESVI9ZGVzdCwgTUFDSElORT1tYWNoaW5lLCBUQ0xESVI9dGNsZGlyKQotCi0gICAgIyBUSVgKLSAgICBpZiAxOgotICAgICAgICAjIHB5dGhvbjkubWFrIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcKLSAgICAgICAgb3MuY2hkaXIob3MucGF0aC5qb2luKFJPT1QsIFRJWCwgIndpbiIpKQotICAgICAgICBpZiBjbGVhbjoKLSAgICAgICAgICAgIG5tYWtlKCJweXRob24ubWFrIiwgImNsZWFuIikKLSAgICAgICAgbm1ha2UoInB5dGhvbi5tYWsiLCBNQUNISU5FPW1hY2hpbmUsIElOU1RBTExfRElSPWRlc3QpCi0gICAgICAgIG5tYWtlKCJweXRob24ubWFrIiwgImluc3RhbGwiLCBNQUNISU5FPW1hY2hpbmUsIElOU1RBTExfRElSPWRlc3QpCi0KLWRlZiBtYWluKCk6Ci0gICAgaWYgbGVuKHN5cy5hcmd2KSA8IDIgb3Igc3lzLmFyZ3ZbMV0gbm90IGluICgiV2luMzIiLCAiQU1ENjQiKToKLSAgICAgICAgcHJpbnQoIiVzIFdpbjMyfEFNRDY0IiAlIHN5cy5hcmd2WzBdKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgaWYgIi1jIiBpbiBzeXMuYXJndjoKLSAgICAgICAgY2xlYW4gPSBUcnVlCi0gICAgZWxzZToKLSAgICAgICAgY2xlYW4gPSBGYWxzZQotCi0gICAgYnVpbGQoc3lzLmFyZ3ZbMV0sIGNsZWFuKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2NsZWFuLmJhdCBiL1BDYnVpbGQvY2xlYW4uYmF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4NTE3ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL2NsZWFuLmJhdApAQCAtMCwwICsxLDUgQEAKK0BlY2hvIG9mZg0KK3JlbSBBIGJhdGNoIHByb2dyYW0gdG8gY2xlYW4gYSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24sDQorcmVtIGp1c3QgZm9yIGNvbnZlbmllbmNlLg0KKw0KK2NhbGwgJX5kcDBidWlsZC5iYXQgLXQgQ2xlYW4gJSoNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2RlYnVnLnByb3BzIGIvUENidWlsZC9kZWJ1Zy5wcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI3YTY1YS4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL2RlYnVnLnByb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyI+Ci0gICAgPFB5RGVidWdFeHQ+X2Q8L1B5RGVidWdFeHQ+Ci0gICAgPEtpbGxQeXRob25FeGU+JChPdXREaXIpa2lsbF9weXRob25fZC5leGU8L0tpbGxQeXRob25FeGU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxUYXJnZXROYW1lPiQoUHJvamVjdE5hbWUpX2Q8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IlB5RGVidWdFeHQiPgotICAgICAgPFZhbHVlPiQoUHlEZWJ1Z0V4dCk8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJLaWxsUHl0aG9uRXhlIj4KLSAgICAgIDxWYWx1ZT4kKEtpbGxQeXRob25FeGUpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvZW52LmJhdCBiL1BDYnVpbGQvZW52LmJhdAppbmRleCAwMTcwYmNlLi4yYjJjMDA1IDEwMDY0NAotLS0gYS9QQ2J1aWxkL2Vudi5iYXQKKysrIGIvUENidWlsZC9lbnYuYmF0CkBAIC0xLDQgKzEsMTYgQEAKIEBlY2hvIG9mZg0KLWVjaG8gQnVpbGQgZW52aXJvbm1lbnRzOiB4ODYsIGlhNjQsIGFtZDY0LCB4ODZfYW1kNjQsIHg4Nl9pYTY0DQorcmVtIFRoaXMgc2NyaXB0IGFkZHMgdGhlIGxhdGVzdCBhdmFpbGFibGUgdG9vbHMgdG8gdGhlIHBhdGggZm9yIHRoZSBjdXJyZW50DQorcmVtIGNvbW1hbmQgd2luZG93LiBIb3dldmVyLCBtb3N0IGJ1aWxkcyBvZiBQeXRob24gd2lsbCBpZ25vcmUgdGhlIHZlcnNpb24NCityZW0gb2YgdGhlIHRvb2xzIG9uIFBBVEggYW5kIHVzZSBQbGF0Zm9ybVRvb2xzZXQgaW5zdGVhZC4gSWRlYWxseSwgYm90aCBzZXRzIG9mDQorcmVtIHRvb2xzIHNob3VsZCBiZSB0aGUgc2FtZSB2ZXJzaW9uIHRvIGF2b2lkIHBvdGVudGlhbCBjb25mbGljdHMuDQorcmVtDQorcmVtIFRvIGJ1aWxkIFB5dGhvbiB3aXRoIGFuIGVhcmxpZXIgdG9vbHNldCwgcGFzcyAiL3A6UGxhdGZvcm1Ub29sc2V0PXYxMDAiIChvcg0KK3JlbSAndjExMCcsICd2MTIwJyBvciAndjE0MCcpIHRvIHRoZSBidWlsZCBzY3JpcHQuDQorDQorZWNobyBCdWlsZCBlbnZpcm9ubWVudHM6IHg4NiwgYW1kNjQsIHg4Nl9hbWQ2NA0KIGVjaG8uDQotY2FsbCAiJVZTMTAwQ09NTlRPT0xTJS4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiICUqDQorc2V0IFZTVE9PTFM9JVZTMTQwQ09NTlRPT0xTJQ0KK2lmICIlVlNUT09MUyUiPT0iIiBzZXQgVlNUT09MUz0lVlMxMjBDT01OVE9PTFMlDQoraWYgIiVWU1RPT0xTJSI9PSIiIHNldCBWU1RPT0xTPSVWUzExMENPTU5UT09MUyUNCitpZiAiJVZTVE9PTFMlIj09IiIgc2V0IFZTVE9PTFM9JVZTMTAwQ09NTlRPT0xTJQ0KK2NhbGwgIiVWU1RPT0xTJS4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiICUqDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9nZXRfZXh0ZXJuYWxzLmJhdCBiL1BDYnVpbGQvZ2V0X2V4dGVybmFscy5iYXQKaW5kZXggMGI4ZjBiOC4uMGIzYzA4YiAxMDA2NDQKLS0tIGEvUENidWlsZC9nZXRfZXh0ZXJuYWxzLmJhdAorKysgYi9QQ2J1aWxkL2dldF9leHRlcm5hbHMuYmF0CkBAIC01MSwxNiArNTEsMTcgQEAKIA0KIGVjaG8uRmV0Y2hpbmcgZXh0ZXJuYWwgbGlicmFyaWVzLi4uDQogDQotZm9yICUlZSBpbiAoDQotICAgICAgICAgICAgYnppcDItMS4wLjYNCi0gICAgICAgICAgICBuYXNtLTIuMTEuMDYNCi0gICAgICAgICAgICBvcGVuc3NsLTEuMC4yZA0KLSAgICAgICAgICAgIHRjbC04LjYuMS4wDQotICAgICAgICAgICAgdGstOC42LjEuMA0KLSAgICAgICAgICAgIHRpeC04LjQuMy40DQotICAgICAgICAgICAgc3FsaXRlLTMuOC4xMS4wDQotICAgICAgICAgICAgeHotNS4wLjUNCi0gICAgICAgICAgICApIGRvICgNCitzZXQgbGlicmFyaWVzPQ0KK3NldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiemlwMi0xLjAuNg0KK2lmIE5PVCAiJUluY2x1ZGVTU0wlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICBuYXNtLTIuMTEuMDYNCitpZiBOT1QgIiVJbmNsdWRlU1NMJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgb3BlbnNzbC0xLjAuMmQNCitzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsaXRlLTMuOC4xMS4wDQoraWYgTk9UICIlSW5jbHVkZVRraW50ZXIlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlIHRjbC1jb3JlLTguNi40LjINCitpZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGstOC42LjQuMg0KK2lmIE5PVCAiJUluY2x1ZGVUa2ludGVyJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSB0aXgtOC40LjMuNg0KK3NldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ei01LjAuNQ0KKw0KK2ZvciAlJWUgaW4gKCVsaWJyYXJpZXMlKSBkbyAoDQogICAgIGlmIGV4aXN0ICUlZSAoDQogICAgICAgICBlY2hvLiUlZSBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmcuDQogICAgICkgZWxzZSAoDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9pZGxlLmJhdCBiL1BDYnVpbGQvaWRsZS5iYXQKaW5kZXggNWFiMTVmNS4uYmFjYWFhOCAxMDA2NDQKLS0tIGEvUENidWlsZC9pZGxlLmJhdAorKysgYi9QQ2J1aWxkL2lkbGUuYmF0CkBAIC00LDEwICs0LDEwIEBACiByZW0gLWQgICBSdW4gRGVidWcgYnVpbGQgKHB5dGhvbl9kLmV4ZSkuICBFbHNlIHJlbGVhc2UgYnVpbGQuDQogDQogc2V0bG9jYWwNCi1zZXQgZXhlPXB5dGhvbg0KLVBBVEggJVBBVEglOy4uXC4uXHRjbHRrXGJpbg0KK3NldCBleGU9d2luMzJccHl0aG9uDQorUEFUSCAlUEFUSCU7Li5cZXh0ZXJuYWxzXHRjbHRrXGJpbg0KIA0KLWlmICIlMSI9PSItZCIgKHNldCBleGU9cHl0aG9uX2QpICYgc2hpZnQNCitpZiAiJTEiPT0iLWQiIChzZXQgZXhlPSVleGUlX2QpICYgc2hpZnQNCiANCiBzZXQgY21kPSVleGUlIC4uL0xpYi9pZGxlbGliL2lkbGUucHkgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkNCiANCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2luc3RhbGxlci5ibXAgYi9QQ2J1aWxkL2luc3RhbGxlci5ibXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4NzVlMTkuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9pbnN0YWxsZXIuYm1wCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUENidWlsZC9raWxsX3B5dGhvbi5jIGIvUENidWlsZC9raWxsX3B5dGhvbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjZlMWIwLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQva2lsbF9weXRob24uYworKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi0vKgotICogSGVscGVyIHByb2dyYW0gZm9yIGtpbGxpbmcgbGluZ2VyaW5nIHB5dGhvbltfZF0uZXhlIHByb2Nlc3NlcyBiZWZvcmUKLSAqIGJ1aWxkaW5nLCB0aHVzIGF0dGVtcHRpbmcgdG8gYXZvaWQgYnVpbGQgZmFpbHVyZXMgZHVlIHRvIGZpbGVzIGJlaW5nCi0gKiBsb2NrZWQuCi0gKi8KLQotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3Y2hhci5oPgotI2luY2x1ZGUgPHRsaGVscDMyLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLQotI3ByYWdtYSBjb21tZW50KGxpYiwgInBzYXBpIikKLQotI2lmZGVmIF9ERUJVRwotI2RlZmluZSBQWVRIT05fRVhFICAgICAgICAgIChMInB5dGhvbl9kLmV4ZSIpCi0jZGVmaW5lIFBZVEhPTl9FWEVfTEVOICAgICAgKDEyKQotI2RlZmluZSBLSUxMX1BZVEhPTl9FWEUgICAgIChMImtpbGxfcHl0aG9uX2QuZXhlIikKLSNkZWZpbmUgS0lMTF9QWVRIT05fRVhFX0xFTiAoMTcpCi0jZWxzZQotI2RlZmluZSBQWVRIT05fRVhFICAgICAgICAgIChMInB5dGhvbi5leGUiKQotI2RlZmluZSBQWVRIT05fRVhFX0xFTiAgICAgICgxMCkKLSNkZWZpbmUgS0lMTF9QWVRIT05fRVhFICAgICAoTCJraWxsX3B5dGhvbi5leGUiKQotI2RlZmluZSBLSUxMX1BZVEhPTl9FWEVfTEVOICgxNSkKLSNlbmRpZgotCi1pbnQKLW1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewotICAgIEhBTkRMRSAgIGhwLCBoc3AsIGhzbTsgLyogcHJvY2Vzcywgc25hcHNob3QgcHJvY2Vzc2VzLCBzbmFwc2hvdCBtb2R1bGVzICovCi0gICAgRFdPUkQgICAgZGFjLCBvdXJfcGlkOwotICAgIHNpemVfdCAgIGxlbjsKLSAgICB3Y2hhcl90ICBwYXRoW01BWF9QQVRIKzFdOwotCi0gICAgTU9EVUxFRU5UUlkzMlcgIG1lOwotICAgIFBST0NFU1NFTlRSWTMyVyBwZTsKLQotICAgIG1lLmR3U2l6ZSA9IHNpemVvZihNT0RVTEVFTlRSWTMyVyk7Ci0gICAgcGUuZHdTaXplID0gc2l6ZW9mKFBST0NFU1NFTlRSWTMyVyk7Ci0KLSAgICBtZW1zZXQocGF0aCwgMCwgTUFYX1BBVEgrMSk7Ci0KLSAgICBvdXJfcGlkID0gR2V0Q3VycmVudFByb2Nlc3NJZCgpOwotCi0gICAgaHNtID0gQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90KFRIMzJDU19TTkFQTU9EVUxFLCBvdXJfcGlkKTsKLSAgICBpZiAoaHNtID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIHByaW50ZigiQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90WzFdIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAgaWYgKCFNb2R1bGUzMkZpcnN0Vyhoc20sICZtZSkpIHsKLSAgICAgICAgcHJpbnRmKCJNb2R1bGUzMkZpcnN0V1sxXSBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgIENsb3NlSGFuZGxlKGhzbSk7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIC8qCi0gICAgICogRW51bWVyYXRlIG92ZXIgdGhlIG1vZHVsZXMgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3MgaW4gb3JkZXIgdG8gZmluZAotICAgICAqIGtpbGxfcHJvY2Vzc1tfZF0uZXhlLCB0aGVuIHRha2UgYSBub3RlIG9mIHRoZSBkaXJlY3RvcnkgaXQgbGl2ZXMgaW4uCi0gICAgICovCi0gICAgZG8gewotICAgICAgICBpZiAoX3djc25pY21wKG1lLnN6TW9kdWxlLCBLSUxMX1BZVEhPTl9FWEUsIEtJTExfUFlUSE9OX0VYRV9MRU4pKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgbGVuID0gd2Nzbmxlbl9zKG1lLnN6RXhlUGF0aCwgTUFYX1BBVEgpIC0gS0lMTF9QWVRIT05fRVhFX0xFTjsKLSAgICAgICAgd2NzbmNweV9zKHBhdGgsIE1BWF9QQVRIKzEsIG1lLnN6RXhlUGF0aCwgbGVuKTsgCi0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICB9IHdoaWxlIChNb2R1bGUzMk5leHRXKGhzbSwgJm1lKSk7Ci0KLSAgICBDbG9zZUhhbmRsZShoc20pOwotCi0gICAgaWYgKHBhdGggPT0gTlVMTCkgewotICAgICAgICBwcmludGYoImZhaWxlZCB0byBkaXNjZXJuIGRpcmVjdG9yeSBvZiBydW5uaW5nIHByb2Nlc3NcbiIpOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICAvKgotICAgICAqIFRha2UgYSBzbmFwc2hvdCBvZiBzeXN0ZW0gcHJvY2Vzc2VzLiAgRW51bWVyYXRlIG92ZXIgdGhlIHNuYXBzaG90LAotICAgICAqIGxvb2tpbmcgZm9yIHB5dGhvbiBwcm9jZXNzZXMuICBXaGVuIHdlIGZpbmQgb25lLCB2ZXJpZnkgaXQgbGl2ZXMKLSAgICAgKiBpbiB0aGUgc2FtZSBkaXJlY3Rvcnkgd2UgbGl2ZSBpbi4gIElmIGl0IGRvZXMsIGtpbGwgaXQuICBJZiB3ZSdyZQotICAgICAqIHVuYWJsZSB0byBraWxsIGl0LCB0cmVhdCB0aGlzIGFzIGEgZmF0YWwgZXJyb3IgYW5kIHJldHVybiAxLgotICAgICAqIAotICAgICAqIFRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgaXMgdGhhdCB3ZSdyZSBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSAKLSAgICAgKiBidWlsZCBwcm9jZXNzIG9uIHRoZSBiYXNpcyB0aGF0IHdlJ2xsIHRha2UgY2FyZSBvZiBraWxsaW5nIGFueQotICAgICAqIHJ1bm5pbmcgaW5zdGFuY2VzLCBzdWNoIHRoYXQgdGhlIGJ1aWxkIHdvbid0IGVuY291bnRlciBwZXJtaXNzaW9uCi0gICAgICogZGVuaWVkIGVycm9ycyBkdXJpbmcgbGlua2luZy4gSWYgd2UgY2FuJ3Qga2lsbCBvbmUgb2YgdGhlIHByb2Nlc3NlcywKLSAgICAgKiB3ZSBjYW4ndCBwcm92aWRlIHRoaXMgYXNzdXJhbmNlLCBhbmQgdGhlIGJ1aWxkIHNob3VsZG4ndCBzdGFydC4KLSAgICAgKi8KLQotICAgIGhzcCA9IENyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdChUSDMyQ1NfU05BUFBST0NFU1MsIDApOwotICAgIGlmIChoc3AgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgcHJpbnRmKCJDcmVhdGVUb29saGVscDMyU25hcHNob3RbMl0gZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICBpZiAoIVByb2Nlc3MzMkZpcnN0Vyhoc3AsICZwZSkpIHsKLSAgICAgICAgcHJpbnRmKCJQcm9jZXNzMzJGaXJzdFcgZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICBDbG9zZUhhbmRsZShoc3ApOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICBkYWMgPSBQUk9DRVNTX1FVRVJZX0lORk9STUFUSU9OIHwgUFJPQ0VTU19WTV9SRUFEIHwgUFJPQ0VTU19URVJNSU5BVEU7Ci0gICAgZG8gewotCi0gICAgICAgIC8qCi0gICAgICAgICAqIFhYWCBUT0RPOiBpZiB3ZSByZWFsbHkgd2FudGVkIHRvIGJlIGZhbmN5LCB3ZSBjb3VsZCBjaGVjayB0aGUgCi0gICAgICAgICAqIG1vZHVsZXMgZm9yIGFsbCBwcm9jZXNzZXMgKG5vdCBqdXN0IHRoZSBweXRob25bX2RdLmV4ZSBvbmVzKQotICAgICAgICAgKiBhbmQgc2VlIGlmIGFueSBvZiBvdXIgRExMcyBhcmUgbG9hZGVkIChpLmUuIHB5dGhvbjM0W19kXS5kbGwpLAotICAgICAgICAgKiBhcyB0aGF0IHdvdWxkIGFsc28gaW5oaWJpdCBvdXIgYWJpbGl0eSB0byByZWJ1aWxkIHRoZSBzb2x1dGlvbi4KLSAgICAgICAgICogTm90IHdvcnRoIGxvc2luZyBzbGVlcCBvdmVyIHRob3VnaDsgZm9yIG5vdywgYSBzaW1wbGUgY2hlY2sKLSAgICAgICAgICogZm9yIGp1c3QgdGhlIHB5dGhvbiBleGVjdXRhYmxlIHNob3VsZCBiZSBzdWZmaWNpZW50LgotICAgICAgICAgKi8KLQotICAgICAgICBpZiAoX3djc25pY21wKHBlLnN6RXhlRmlsZSwgUFlUSE9OX0VYRSwgUFlUSE9OX0VYRV9MRU4pKQotICAgICAgICAgICAgLyogVGhpcyBpc24ndCBhIHB5dGhvbiBwcm9jZXNzLiAqLwotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLyogSXQncyBhIHB5dGhvbiBwcm9jZXNzLCBzbyBmaWd1cmUgb3V0IHdoaWNoIGRpcmVjdG9yeSBpdCdzIGluLi4uICovCi0gICAgICAgIGhzbSA9IENyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdChUSDMyQ1NfU05BUE1PRFVMRSwgcGUudGgzMlByb2Nlc3NJRCk7Ci0gICAgICAgIGlmIChoc20gPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgICAgICAvKiAKLSAgICAgICAgICAgICAqIElmIG91ciBtb2R1bGUgc25hcHNob3QgZmFpbHMgKHdoaWNoIHdpbGwgaGFwcGVuIGlmIHdlIGRvbid0IG93bgotICAgICAgICAgICAgICogdGhlIHByb2Nlc3MpLCBqdXN0IGlnbm9yZSBpdCBhbmQgY29udGludWUuICAoSXQgc2VlbXMgZGlmZmVyZW50Ci0gICAgICAgICAgICAgKiB2ZXJzaW9ucyBvZiBXaW5kb3dzIHJldHVybiBkaWZmZXJlbnQgdmFsdWVzIGZvciBHZXRMYXN0RXJyb3IoKQotICAgICAgICAgICAgICogaW4gdGhpcyBzaXR1YXRpb247IGl0J3MgZWFzaWVyIHRvIGp1c3QgaWdub3JlIGl0IGFuZCBtb3ZlIG9uIHZzLgotICAgICAgICAgICAgICogc3RvcHBpbmcgdGhlIGJ1aWxkIGZvciB3aGF0IGNvdWxkIGJlIGEgZmFsc2UgcG9zaXRpdmUuKQotICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKCFNb2R1bGUzMkZpcnN0Vyhoc20sICZtZSkpIHsKLSAgICAgICAgICAgIHByaW50ZigiTW9kdWxlMzJGaXJzdFdbMl0gZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNwKTsKLSAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzbSk7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotCi0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGlmIChfd2NzbmljbXAobWUuc3pNb2R1bGUsIFBZVEhPTl9FWEUsIFBZVEhPTl9FWEVfTEVOKSkKLSAgICAgICAgICAgICAgICAvKiBXcm9uZyBtb2R1bGUsIHdlJ3JlIGxvb2tpbmcgZm9yIHB5dGhvbltfZF0uZXhlLi4uICovCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGlmIChfd2NzbmljbXAocGF0aCwgbWUuc3pFeGVQYXRoLCBsZW4pKQotICAgICAgICAgICAgICAgIC8qIFByb2Nlc3MgZG9lc24ndCBsaXZlIGluIG91ciBkaXJlY3RvcnkuICovCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIC8qIFB5dGhvbiBwcm9jZXNzIHJlc2lkaW5nIGluIHRoZSByaWdodCBkaXJlY3RvcnksIGtpbGwgaXQhICAqLwotICAgICAgICAgICAgaHAgPSBPcGVuUHJvY2VzcyhkYWMsIEZBTFNFLCBwZS50aDMyUHJvY2Vzc0lEKTsKLSAgICAgICAgICAgIGlmICghaHApIHsKLSAgICAgICAgICAgICAgICBwcmludGYoIk9wZW5Qcm9jZXNzIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKLSAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShoc3ApOwotICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzbSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghVGVybWluYXRlUHJvY2VzcyhocCwgMSkpIHsKLSAgICAgICAgICAgICAgICBwcmludGYoIlRlcm1pbmF0ZVByb2Nlc3MgZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzcCk7Ci0gICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKLSAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShocCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIENsb3NlSGFuZGxlKGhwKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIH0gd2hpbGUgKE1vZHVsZTMyTmV4dFcoaHNtLCAmbWUpKTsKLQotICAgICAgICBDbG9zZUhhbmRsZShoc20pOwotCi0gICAgfSB3aGlsZSAoUHJvY2VzczMyTmV4dFcoaHNwLCAmcGUpKTsKLQotICAgIENsb3NlSGFuZGxlKGhzcCk7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotLyogdmk6IHNldCB0cz04IHN3PTQgc3RzPTQgZXhwYW5kdGFiICovCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2tpbGxfcHl0aG9uLnZjeHByb2ogYi9QQ2J1aWxkL2tpbGxfcHl0aG9uLnZjeHByb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmNjdjNDAuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9raWxsX3B5dGhvbi52Y3hwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gIDwvSXRlbUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+Ci0gICAgPFByb2plY3RHdWlkPns2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9PC9Qcm9qZWN0R3VpZD4KLSAgICA8Um9vdE5hbWVzcGFjZT5raWxsX3B5dGhvbjwvUm9vdE5hbWVzcGFjZT4KLSAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KLSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSlfZC5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpX2QuZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ia2lsbF9weXRob24uYyIgLz4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9raWxsX3B5dGhvbi52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL2tpbGxfcHl0aG9uLnZjeHByb2ouZmlsdGVycwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDMzZDc1MS4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL2tpbGxfcHl0aG9uLnZjeHByb2ouZmlsdGVycworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgotICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezQ4NjA2NTkxLWM4YjYtNDFhNS05NWM1LTlhMDg5MGM1NTA0Zn08L1VuaXF1ZUlkZW50aWZpZXI+Ci0gICAgPC9GaWx0ZXI+Ci0gIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ia2lsbF9weXRob24uYyI+Ci0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2xpYmVheS52Y3hwcm9qIGIvUENidWlsZC9saWJlYXkudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjYyY2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9saWJlYXkudmN4cHJvagpAQCAtMCwwICsxLDkwNyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPmxpYmVheTwvUm9vdE5hbWVzcGFjZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgIAorICA8SW1wb3J0IFByb2plY3Q9Im9wZW5zc2wucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorCisgIDxUYXJnZXQgTmFtZT0iQ3JlYXRlQnVpbGRpbmZIIiBJbnB1dHM9IiQoTVNCdWlsZFByb2plY3RGdWxsUGF0aCkiIE91dHB1dHM9IiQoSW50RGlyKVxidWlsZGluZi5oIiBBZnRlclRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICA8X0RBVEVWYWx1ZT4jZGVmaW5lIERBVEUgIiQoW1N5c3RlbS5EYXRlVGltZV06Ok5vdy5Ub1N0cmluZyhgZGRkIE1NTSBkZCBISCc6J21tJzonc3MgeXl5eWApKSI8L19EQVRFVmFsdWU+CisgICAgICA8X0NGTEFHU1ZhbHVlPiNkZWZpbmUgQ0ZMQUdTICJjbCAvTUQgL094IC1XMyAtR3MwIC1HeSAtbm9sb2dvIEAoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMtPictRCUoSWRlbnRpdHkpJywnICcpIjwvX0NGTEFHU1ZhbHVlPgorICAgICAgPF9QTEFURk9STVZhbHVlIENvbmRpdGlvbj0iJChQbGF0Zm9ybSk9PSdXaW4zMiciPiNkZWZpbmUgUExBVEZPUk0gIlZDLVdJTjMyIjwvX1BMQVRGT1JNVmFsdWU+CisgICAgICA8X1BMQVRGT1JNVmFsdWUgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKT09J3g2NCciPiNkZWZpbmUgUExBVEZPUk0gIlZDLVdJTjY0QSI8L19QTEFURk9STVZhbHVlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8V3JpdGVMaW5lc1RvRmlsZSBGaWxlPSIkKEludERpcilcYnVpbGRpbmYuaCIKKyAgICAgICAgICAgICAgICAgICAgICBMaW5lcz0iJChfREFURVZhbHVlKTskKF9DRkxBR1NWYWx1ZSk7JChfUExBVEZPUk1WYWx1ZSkiCisgICAgICAgICAgICAgICAgICAgICAgT3ZlcndyaXRlPSJ0cnVlIiAvPgorICAgIDxNZXNzYWdlIFRleHQ9IlVwZGF0aW5nIGJ1aWxkaW5mLmg6CisgICAgJChfREFURVZhbHVlKQorICAgICQoX0NGTEFHU1ZhbHVlKQorICAgICQoX1BMQVRGT1JNVmFsdWUpIiBJbXBvcnRhbmNlPSJub3JtYWwiIC8+CisgIDwvVGFyZ2V0PgorCisgIDxUYXJnZXQgTmFtZT0iU3VwcHJlc3NPcmlnaW5hbEJ1aWxkaW5mSCIgQ29uZGl0aW9uPSJFeGlzdHMoJyQob3BlbnNzbERpciljcnlwdG9cYnVpbGRpbmYuaCcpIiBCZWZvcmVUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiPgorICAgIDxNb3ZlIFNvdXJjZUZpbGVzPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJ1aWxkaW5mLmgiIERlc3RpbmF0aW9uRmlsZXM9IiQob3BlbnNzbERpciljcnlwdG9cYnVpbGRpbmYuaC5vcmlnIiAvPgorICA8L1RhcmdldD4KKworICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjdmVyc2lvbi5jIj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoSW50RGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgCisgIDxJdGVtR3JvdXA+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWFwcHNcZXJyc3RyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFlc1xhZXNfY2ZiLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFlc1xhZXNfY3RyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFlc1xhZXNfZWNiLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFlc1xhZXNfaWdlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFlc1xhZXNfbWlzYy5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYWVzXGFlc19vZmIuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYWVzXGFlc193cmFwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9iaXRzdHIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX2Jvb2wuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX2J5dGVzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9kMmlfZnAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX2RpZ2VzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFfZHVwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9lbnVtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9nZW50bS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFfaTJkX2ZwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9pbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX21ic3RyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9vYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX29jdGV0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9wcmludC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFfc2V0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9zaWduLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9zdHJleC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFfc3RybmlkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV90aW1lLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV90eXBlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV91dGN0bS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFfdXRmOC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFfdmVyaWZ5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYW1ldGhfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYXNuX21pbWUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhc25fbW9pZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFzbl9wYWNrLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYXNuMV9lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhc24xX2dlbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFzbjFfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYXNuMV9wYXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxiaW9fYXNuMS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGJpb19uZGVmLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcZDJpX3ByLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGQyaV9wdS5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGV2cF9hc24xLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGZfZW51bS5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGZfaW50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcZl9zdHJpbmcuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxpMmRfcHIuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcaTJkX3B1LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcbl9wa2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcbnNzZXEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxwNV9wYmUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxwNV9wYmV2Mi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHA4X3BrZXkuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcdF9iaXRzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHRfY3JsLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcdF9wa2V5LmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHRfcmVxLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcdF9zcGtpLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcdF94NTA5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcdF94NTA5YS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHRhc25fZGVjLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcdGFzbl9lbmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx0YXNuX2ZyZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHRhc25fbmV3LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcdGFzbl9wcm4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx0YXNuX3R5cC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHRhc25fdXRsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFceF9hbGdvci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHhfYXR0cmliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFceF9iaWdudW0uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X2NybC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHhfZXh0ZW4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X2luZm8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X2xvbmcuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X25hbWUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X254NTA5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFceF9wa2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFceF9wdWJrZXkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X3JlcS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHhfc2lnLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFceF9zcGtpLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFceF92YWwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X3g1MDkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X3g1MDlhLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJmXGJmX2NmYjY0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJmXGJmX2VjYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiZlxiZl9vZmI2NC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiZlxiZl9za2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJpb1xiX2R1bXAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJfcHJpbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJfc29jay5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiaW9cYmZfYnVmZi5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJmX25iaW8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJmX251bGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJpb19jYi5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiaW9cYmlvX2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiaW9cYmlvX2xpYi5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJzc19hY3B0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJpb1xic3NfYmlvLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJpb1xic3NfY29ubi5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJzc19kZ3JhbS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiaW9cYnNzX2ZkLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJpb1xic3NfZmlsZS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJzc19sb2cuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJzc19tZW0uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJzc19udWxsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJpb1xic3Nfc29jay5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9hZGQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fYmxpbmQuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX2NvbnN0LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX2N0eC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fZGVwci5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9kaXYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX2V4cC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9leHAyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX2djZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9nZjJtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX2tyb24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX21vZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9tb250LmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9tcGkuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fbXVsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX25pc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fcHJpbWUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fcHJpbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fcmFuZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9yZWNwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX3NoaWZ0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX3Nxci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9zcXJ0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX3dvcmQuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX3g5MzFwLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJ1ZmZlclxidWZfZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJ1ZmZlclxidWZfc3RyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJ1ZmZlclxidWZmZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY2FtZWxsaWFcY21sbF9jZmIuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNhbWVsbGlhXGNtbGxfY3RyLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNhbWVsbGlhXGNtbGxfZWNiLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNhbWVsbGlhXGNtbGxfb2ZiLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNhbWVsbGlhXGNtbGxfdXRsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNhc3RcY19jZmI2NC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjYXN0XGNfZWNiLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNhc3RcY19vZmI2NC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjYXN0XGNfc2tleS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjbWFjXGNtX2FtZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNtYWNcY21fcG1ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY21hY1xjbWFjLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNtc1xjbXNfYXNuMS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjbXNcY21zX2F0dC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY21zXGNtc19jZC5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjbXNcY21zX2RkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNtc1xjbXNfZW5jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNtc1xjbXNfZW52LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNtc1xjbXNfZXJyLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjbXNcY21zX2Vzcy5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjbXNcY21zX2lvLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNtc1xjbXNfa2FyaS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjbXNcY21zX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjbXNcY21zX3B3cmkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY21zXGNtc19zZC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY21zXGNtc19zbWltZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjb21wXGNfcmxlLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNvbXBcY196bGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNvbXBcY29tcF9lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY29tcFxjb21wX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjb25mXGNvbmZfYXBpLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNvbmZcY29uZl9kZWYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY29uZlxjb25mX2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjb25mXGNvbmZfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNvbmZcY29uZl9tYWxsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNvbmZcY29uZl9tb2QuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNvbmZcY29uZl9zYXAuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY3B0X2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjcnlwdGxpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNcY2JjX2Nrc20uYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xjYmNfZW5jLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xjZmJfZW5jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xjZmI2NGVkZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNcY2ZiNjRlbmMuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xkZXNfb2xkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xkZXNfb2xkMi5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNcZWNiX2VuYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNcZWNiM19lbmMuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xlZGVfY2JjbV9lbmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXGVuY19yZWFkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xlbmNfd3JpdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNcZmNyeXB0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xvZmJfZW5jLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xvZmI2NGVkZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNcb2ZiNjRlbmMuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xwY2JjX2VuYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNccXVkX2Nrc20uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXHJhbmRfa2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xyZWFkMnB3ZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNccnBjX2VuYy5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNcc2V0X2tleS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXHN0cjJrZXkuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXHhjYmNfZW5jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRoXGRoX2FtZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRoXGRoX2FzbjEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGhcZGhfY2hlY2suYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRoXGRoX2RlcHIuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGhcZGhfZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRoXGRoX2dlbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkaFxkaF9rZGYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGhcZGhfa2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRoXGRoX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkaFxkaF9wbWV0aC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGhcZGhfcHJuLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRoXGRoX3JmYzUxMTQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZHNhXGRzYV9hbWV0aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc2FcZHNhX2FzbjEuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRzYVxkc2FfZGVwci5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc2FcZHNhX2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc2FcZHNhX2dlbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc2FcZHNhX2tleS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc2FcZHNhX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc2FcZHNhX29zc2wuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZHNhXGRzYV9wbWV0aC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZHNhXGRzYV9wcm4uYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZHNhXGRzYV9zaWduLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRzYVxkc2FfdnJmLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc29cZHNvX2Jlb3MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZHNvXGRzb19kbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc29cZHNvX2RsZmNuLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRzb1xkc29fZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRzb1xkc29fbGliLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc29cZHNvX251bGwuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZHNvXGRzb19vcGVuc3NsLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc29cZHNvX3Ztcy5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc29cZHNvX3dpbjMyLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlYmNkaWMuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNfYW1ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNfYXNuMS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNfY2hlY2suYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNfY3VydmUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNfY3Z0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjX2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY19rZXkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjX211bHQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNfb2N0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjX3BtZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjX3ByaW50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjMl9tdWx0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjMl9vY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWMyX3NtcGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNrX3Bybi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY3BfbW9udC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY3BfbmlzdC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNwX25pc3RwMjI0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjcF9uaXN0cDI1Ni5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY3BfbmlzdHA1MjEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNwX25pc3RwdXRpbC5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY3Bfb2N0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjcF9zbXBsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjZGhcZWNoX2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY2RoXGVjaF9rZGYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNkaFxlY2hfa2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjZGhcZWNoX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY2RoXGVjaF9vc3NsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjZHNhXGVjc19hc24xLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjZHNhXGVjc19lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNkc2FcZWNzX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY2RzYVxlY3Nfb3NzbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY2RzYVxlY3Nfc2lnbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY2RzYVxlY3NfdnJmLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVxlbmdfYWxsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVxlbmdfY25mLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcZW5nX2NyeXB0b2Rldi5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcZW5nX2N0cmwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ19keW4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ19lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ19mYXQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ19pbml0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVxlbmdfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVxlbmdfbGlzdC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ19vcGVuc3NsLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVxlbmdfcGtleS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ19yZHJhbmQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ19yc2F4LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVxlbmdfdGFibGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXHRiX2Fzbm10aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcdGJfY2lwaGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVx0Yl9kaC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcdGJfZGlnZXN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVx0Yl9kc2EuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXHRiX2VjZGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXHRiX2VjZHNhLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVx0Yl9wa21ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXHRiX3JhbmQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXHRiX3JzYS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXHRiX3N0b3JlLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVyclxlcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXJyXGVycl9hbGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXJyXGVycl9wcm4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGJpb19iNjQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGJpb19lbmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGJpb19tZC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGJpb19vay5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcY19hbGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGNfYWxsYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcY19hbGxkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxkaWdlc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGVfYWVzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxlX2Flc19jYmNfaG1hY19zaGExLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxlX2Flc19jYmNfaG1hY19zaGEyNTYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGVfYmYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGVfY2FtZWxsaWEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGVfY2FzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZV9kZXMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGVfZGVzMy5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGVfaWRlYS5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZV9udWxsLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZV9vbGQuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGVfcmMyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxlX3JjNC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZV9yYzRfaG1hY19tZDUuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxlX3JjNS5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZV9zZWVkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxlX3hjYmNfZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZW5jb2RlLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZXZwX2FjbmYuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGV2cF9jbmYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGV2cF9lbmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGV2cF9lcnIuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxldnBfZmlwcy5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZXZwX2tleS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZXZwX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZXZwX3BiZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZXZwX3BrZXkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXG1fZHNzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxtX2RzczEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXG1fZWNkc2EuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXG1fbWQ0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxtX21kNS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXG1fbnVsbC5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcbV9yaXBlbWQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXG1fc2hhLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxtX3NoYTEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXG1fc2lndmVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxtX3dwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxuYW1lcy5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXHBfZGVjLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxwX2xpYi5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXHBfb3Blbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBccF9zZWFsLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxwX3NpZ24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXHBfdmVyaWZ5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxwNV9jcnB0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxwNV9jcnB0Mi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBccG1ldGhfZm4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXHBtZXRoX2duLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxwbWV0aF9saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXhfZGF0YS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZmlwc19lcnMuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9caG1hY1xobV9hbWV0aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xobWFjXGhtX3BtZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGhtYWNcaG1hYy5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ca3JiNVxrcmI1X2Fzbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xsaGFzaFxsaF9zdGF0cy5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xsaGFzaFxsaGFzaC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xtZDRcbWQ0X2Rnc3QuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG1kNFxtZDRfb25lLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG1kNVxtZDVfZGdzdC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cbWQ1XG1kNV9vbmUuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cbWVtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG1lbV9kYmcuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cbW9kZXNcY2JjMTI4LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG1vZGVzXGNjbTEyOC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xtb2Rlc1xjZmIxMjguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cbW9kZXNcY3RyMTI4LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG1vZGVzXGN0czEyOC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xtb2Rlc1xnY20xMjguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cbW9kZXNcb2ZiMTI4LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG1vZGVzXHdyYXAxMjguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cbW9kZXNceHRzMTI4LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG9fZGlyLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xvX2ZpcHMuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb19pbml0LmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xvX3N0ci5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xvX3RpbWUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb2JqZWN0c1xvX25hbWVzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG9iamVjdHNcb2JqX2RhdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xvYmplY3RzXG9ial9lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb2JqZWN0c1xvYmpfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG9iamVjdHNcb2JqX3hyZWYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb2NzcFxvY3NwX2Fzbi5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb2NzcFxvY3NwX2NsLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG9jc3Bcb2NzcF9lcnIuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG9jc3Bcb2NzcF9leHQuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb2NzcFxvY3NwX2h0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG9jc3Bcb2NzcF9saWIuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG9jc3Bcb2NzcF9wcm4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb2NzcFxvY3NwX3Nydi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xvY3NwXG9jc3BfdmZ5LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBlbVxwZW1fYWxsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBlbVxwZW1fZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBlbVxwZW1faW5mby5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwZW1ccGVtX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwZW1ccGVtX290aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwZW1ccGVtX3BrOC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwZW1ccGVtX3BrZXkuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBlbVxwZW1fc2VhbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwZW1ccGVtX3NpZ24uYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGVtXHBlbV94NTA5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBlbVxwZW1feGF1eC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwZW1ccHZrZm10LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfYWRkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfYXNuLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfYXR0ci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzMTJccDEyX2NycHQuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfY3J0LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfZGVjci5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGtjczEyXHAxMl9pbml0LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfa2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfa2lzcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzMTJccDEyX211dGwuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfbnBhcy5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzMTJccDEyX3A4ZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzMTJccDEyX3A4ZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzMTJccDEyX3V0bC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzMTJccGsxMmVyci5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGtjczdcYmlvX3BrNy5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzN1xwazdfYXNuMS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzN1xwazdfYXR0ci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzN1xwazdfZG9pdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzN1xwazdfbGliLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzN1xwazdfbWltZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzN1xwazdfc21pbWUuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGtjczdccGtjczdlcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccHF1ZXVlXHBxdWV1ZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyYW5kXG1kX3JhbmQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccmFuZFxyYW5kX2VnZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyYW5kXHJhbmRfZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJhbmRccmFuZF9saWIuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJhbmRccmFuZF9udy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyYW5kXHJhbmRfb3MyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJhbmRccmFuZF91bml4LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJhbmRccmFuZF93aW4uYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJhbmRccmFuZGZpbGUuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccmMyXHJjMl9jYmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccmMyXHJjMl9lY2IuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccmMyXHJjMl9za2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJjMlxyYzJjZmI2NC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyYzJccmMyb2ZiNjQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccmM0XHJjNF91dGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccmlwZW1kXHJtZF9kZ3N0LmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyaXBlbWRccm1kX29uZS5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyc2FccnNhX2FtZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJzYVxyc2FfYXNuMS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9jaGsuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9jcnB0LmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyc2FccnNhX2RlcHIuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9lYXkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9nZW4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9ub25lLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyc2FccnNhX251bGwuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9vYWVwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJzYVxyc2FfcGsxLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJzYVxyc2FfcG1ldGguYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJzYVxyc2FfcHJuLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJzYVxyc2FfcHNzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJzYVxyc2Ffc2Fvcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyc2FccnNhX3NpZ24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9zc2wuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV94OTMxLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHNlZWRcc2VlZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xzZWVkXHNlZWRfY2JjLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHNlZWRcc2VlZF9jZmIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cc2VlZFxzZWVkX2VjYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xzZWVkXHNlZWRfb2ZiLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHNoYVxzaGFfZGdzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xzaGFcc2hhX29uZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xzaGFcc2hhMV9vbmUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cc2hhXHNoYTFkZ3N0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHNoYVxzaGEyNTYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cc2hhXHNoYTUxMi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xzcnBcc3JwX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xzcnBcc3JwX3ZmeS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xzdGFja1xzdGFjay5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cdHNcdHNfYXNuMS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x0c1x0c19jb25mLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHRzXHRzX2Vyci5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cdHNcdHNfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHRzXHRzX3JlcV9wcmludC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x0c1x0c19yZXFfdXRpbHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cdHNcdHNfcnNwX3ByaW50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHRzXHRzX3JzcF9zaWduLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHRzXHRzX3JzcF91dGlscy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x0c1x0c19yc3BfdmVyaWZ5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHRzXHRzX3ZlcmlmeV9jdHguYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cdHh0X2RiXHR4dF9kYi5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cdWlcdWlfY29tcGF0LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHVpXHVpX2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x1aVx1aV9saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cdWlcdWlfb3BlbnNzbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x1aVx1aV91dGlsLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x1aWQuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cd2hybHBvb2xcd3BfZGdzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XGJ5X2Rpci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XGJ5X2ZpbGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4X2FsbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHg1MDlfYXR0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV9jbXAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4NTA5X2QyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV9kZWYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4NTA5X2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHg1MDlfZXh0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV9sdS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHg1MDlfb2JqLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHg1MDlfcjJ4LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV9yZXEuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV9zZXQuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4NTA5X3Rycy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHg1MDlfdHh0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV92My5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHg1MDlfdmZ5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV92cG0uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4NTA5Y3NldC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHg1MDluYW1lLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOXJzZXQuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOXNwa2kuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4NTA5dHlwZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNccGN5X2NhY2hlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1xwY3lfZGF0YS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNccGN5X2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNccGN5X21hcC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNccGN5X25vZGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHBjeV90cmVlLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfYWRkci5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfYWtleS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfYWtleWEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX2FsdC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX2FzaWQuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX2Jjb25zLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19iaXRzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfY29uZi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfY3BvbHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX2NybGQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX2VudW0uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX2V4dGt1LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19nZW5uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19pYTUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX2luZm8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX2ludC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19uY29ucy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfb2NzcC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfcGNpLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19wY2lhLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19wY29ucy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfcGt1LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19wbWFwcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfcHJuLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19wdXJwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19zY3RzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19za2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19zeG5ldC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfdXRsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcY2Nnb3N0XGVfZ29zdF9lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0X2FtZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xjY2dvc3RcZ29zdF9hc24xLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xjY2dvc3RcZ29zdF9jcnlwdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcY2Nnb3N0XGdvc3RfY3RsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xjY2dvc3RcZ29zdF9lbmcuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0X2tleXdyYXAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0X21kLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xjY2dvc3RcZ29zdF9wYXJhbXMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0X3BtZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xjY2dvc3RcZ29zdF9zaWduLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xjY2dvc3RcZ29zdDIwMDEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0MjAwMV9rZXl4LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xjY2dvc3RcZ29zdDg5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xjY2dvc3RcZ29zdDk0X2tleXguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0aGFzaC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcZV80NzU4Y2NhLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xlX2FlcC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcZV9hdGFsbGEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGVfY2FwaS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcZV9jaGlsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xlX2Nzd2lmdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcZV9nbXAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGVfbnVyb24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGVfcGFkbG9jay5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcZV9zdXJld2FyZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcZV91YnNlYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxkMV9jbG50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXGQxX21ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcZDFfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXGQxX3NydnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczJfc3J2ci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFx0MV9jbG50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHQxX2V4dC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFx0MV9zcnZyLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ1dpbjMyJyI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHdocmxwb29sXHdwX2Jsb2NrLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiZlxiZl9lbmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fYXNtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNhbWVsbGlhXGNtbGxfbWlzYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjYXN0XGNfZW5jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xkZXNfZW5jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xmY3J5cHRfYi5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgPEl0ZW1Hcm91cCBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICdXaW4zMiciPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJcYWVzLTU4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxhZXNuaS14ODYuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJcYmYtNTg2LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDMyXGJuLTU4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxjYXN0LTU4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxjbWxsLXg4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxjby01ODYuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJcY3J5cHQ1ODYuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJcZGVzLTU4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxnaGFzaC14ODYuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJcbWQ1LTU4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxyYzQtNTg2LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDMyXHJtZC01ODYuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJcc2hhMS01ODYuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJcc2hhMjU2LTU4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxzaGE1MTItNTg2LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDMyXHZwYWVzLXg4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlx3cC1tbXguYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJceDg2Y3B1aWQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJceDg2LWdmMm0uYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJceDg2LW1vbnQuYXNtIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cCBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICd4NjQnIj4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XGFlc25pLXNoYTEteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XGFlc25pLXNoYTEteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XGFlc25pLWdjbS14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcYWVzbmktbWIteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XGFlc25pLXNoYTI1Ni14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcYWVzbmkteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XGFlcy14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcYnNhZXMteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XGNtbGwteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XGdoYXNoLXg4Nl82NC5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXA2NFxtZDUteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XHJjNC1tZDUteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XHJjNC14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcc2hhMS14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcc2hhMS1tYi14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcc2hhMjU2LW1iLXg4Nl82NC5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXA2NFxzaGEyNTYteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XHNoYTUxMi14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcdnBhZXMteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XHdwLXg4Nl82NC5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXA2NFx4ODZfNjRjcHVpZC5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXA2NFx4ODZfNjQtZ2YybS5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXA2NFx4ODZfNjQtbW9udC5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXA2NFx4ODZfNjQtbW9udDUuYXNtIiAvPgorICA8L0l0ZW1Hcm91cD4KKworICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8VGFyZ2V0IE5hbWU9IkNsZWFuIiAvPgorICA8VGFyZ2V0IE5hbWU9IkNsZWFuQWxsIj4KKyAgICA8RGVsZXRlIEZpbGVzPSIkKFRhcmdldFBhdGgpIiAvPgorICAgIDxSZW1vdmVEaXIgRGlyZWN0b3JpZXM9IiQoSW50RGlyKSIgLz4KKyAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9tYWtlX2J1aWxkaW5mby5jIGIvUENidWlsZC9tYWtlX2J1aWxkaW5mby5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWFhZGVlLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvbWFrZV9idWlsZGluZm8uYworKysgL2Rldi9udWxsCkBAIC0xLDE5NCArMCwwIEBACi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxpby5oPgotCi0jZGVmaW5lIENNRF9TSVpFIDUwMAotCi0vKiBUaGlzIGZpbGUgY3JlYXRlcyB0aGUgZ2V0YnVpbGRpbmZvLm8gb2JqZWN0LCBieSBmaXJzdAotICAgaW52b2tpbmcgc3Vid2NyZXYuZXhlIChpZiBmb3VuZCksIGFuZCB0aGVuIGludm9raW5nIGNsLmV4ZS4KLSAgIEFzIGEgc2lkZSBlZmZlY3QsIGl0IG1pZ2h0IGdlbmVyYXRlIFBDQnVpbGRcZ2V0YnVpbGRpbmZvMi5jCi0gICBhbHNvLiBJZiB0aGlzIGlzbid0IGEgc3VidmVyc2lvbiBjaGVja291dCwgb3Igc3Vid2NyZXYgaXNuJ3QKLSAgIGZvdW5kLCBpdCBjb21waWxlcyAuLlxcTW9kdWxlc1xcZ2V0YnVpbGRpbmZvLmMgaW5zdGVhZC4KLQotICAgQ3VycmVudGx5LCBzdWJ3Y3Jldi5leGUgaXMgZm91bmQgZnJvbSB0aGUgcmVnaXN0cnkgZW50cmllcwotICAgb2YgVG9ydG9pc2VTVk4uCi0KLSAgIE5vIGF0dGVtcHQgaXMgbWFkZSB0byBwbGFjZSBnZXRidWlsZGluZm8ubyBpbnRvIHRoZSBwcm9wZXIKLSAgIGJpbmFyeSBkaXJlY3RvcnkuIFRoaXMgaXNuJ3QgbmVjZXNzYXJ5LCBhcyB0aGlzIHRvb2wgaXMKLSAgIGludm9rZWQgYXMgYSBwcmUtbGluayBzdGVwIGZvciBweXRob25jb3JlLCBzbyB0aGF0IG92ZXJ3cml0ZXMKLSAgIGFueSBwcmV2aW91cyBnZXRidWlsZGluZm8uby4KLQotICAgSG93ZXZlciwgaWYgYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJvdmlkZWQsIHRoaXMgd2lsbCBiZSB1c2VkCi0gICBhcyBhIHRlbXBvcmFyeSBkaXJlY3Rvcnkgd2hlcmUgYW55IGdldGJ1aWxkaW5mbzIuYyBhbmQKLSAgIGdldGJ1aWxkaW5mby5vIGZpbGVzIGFyZSBwdXQuICBUaGlzIGlzIHVzZWZ1bCBpZiBtdWx0aXBsZQotICAgY29uZmlndXJhdGlvbnMgYXJlIGJlaW5nIGJ1aWx0IGluIHBhcmFsbGVsLCB0byBhdm9pZCB0aGVtCi0gICB0cmFtcGxpbmcgZWFjaCBvdGhlcidzIGZpbGVzLgotCi0qLwotCi1pbnQgbWFrZV9idWlsZGluZm8yKGNvbnN0IGNoYXIgKnRtcHBhdGgpCi17Ci0gICAgc3RydWN0IF9zdGF0IHN0OwotICAgIEhLRVkgaFRvcnRvaXNlOwotICAgIGNoYXIgY29tbWFuZFtDTURfU0laRSsxXTsKLSAgICBEV09SRCB0eXBlLCBzaXplOwotICAgIGlmIChfc3RhdCgiLnN2biIsICZzdCkgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICAvKiBBbGxvdyBzdXBwcmVzc2lvbiBvZiBzdWJ3Y3Jldi5leGUgaW52b2NhdGlvbiBpZiBhIG5vX3N1YndjcmV2IGZpbGUgaXMgcHJlc2VudC4gKi8KLSAgICBpZiAoX3N0YXQoIm5vX3N1YndjcmV2IiwgJnN0KSA9PSAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoUmVnT3BlbktleShIS0VZX0xPQ0FMX01BQ0hJTkUsICJTb2Z0d2FyZVxcVG9ydG9pc2VTVk4iLCAmaFRvcnRvaXNlKSAhPSBFUlJPUl9TVUNDRVNTICYmCi0gICAgICAgIFJlZ09wZW5LZXkoSEtFWV9DVVJSRU5UX1VTRVIsICJTb2Z0d2FyZVxcVG9ydG9pc2VTVk4iLCAmaFRvcnRvaXNlKSAhPSBFUlJPUl9TVUNDRVNTKQotICAgICAgICAvKiBUb3J0b2lzZSBub3QgaW5zdGFsbGVkICovCi0gICAgICAgIHJldHVybiAwOwotICAgIGNvbW1hbmRbMF0gPSAnIic7ICAvKiBxdW90ZSB0aGUgcGF0aCB0byB0aGUgZXhlY3V0YWJsZSAqLwotICAgIHNpemUgPSBzaXplb2YoY29tbWFuZCkgLSAxOwotICAgIGlmIChSZWdRdWVyeVZhbHVlRXgoaFRvcnRvaXNlLCAiRGlyZWN0b3J5IiwgMCwgJnR5cGUsIGNvbW1hbmQrMSwgJnNpemUpICE9IEVSUk9SX1NVQ0NFU1MgfHwKLSAgICAgICAgdHlwZSAhPSBSRUdfU1opCi0gICAgICAgIC8qIFJlZ2lzdHJ5IGNvcnJ1cHRlZCAqLwotICAgICAgICByZXR1cm4gMDsKLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImJpblxcc3Vid2NyZXYuZXhlIik7Ci0gICAgaWYgKF9zdGF0KGNvbW1hbmQrMSwgJnN0KSA8IDApCi0gICAgICAgIC8qIHN1YndjcmV2LmV4ZSBub3QgcGFydCBvZiB0aGUgcmVsZWFzZSAqLwotICAgICAgICByZXR1cm4gMDsKLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlwiIC4uIC4uXFxNb2R1bGVzXFxnZXRidWlsZGluZm8uYyBcIiIpOwotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsgLyogcXVvdGVkIHRtcHBhdGggKi8KLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImdldGJ1aWxkaW5mbzIuY1wiIik7Ci0gICAgcHV0cyhjb21tYW5kKTsgZmZsdXNoKHN0ZG91dCk7Ci0gICAgaWYgKHN5c3RlbShjb21tYW5kKSA8IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiAxOwotfQotCi1jb25zdCBjaGFyIERFTElNU1tdID0geyAiIFxuIiB9OwotCi1pbnQgZ2V0X21lcmN1cmlhbF9pbmZvKGNoYXIgKiBoZ2JyYW5jaCwgY2hhciAqIGhndGFnLCBjaGFyICogaGdyZXYsIGludCBzaXplKQotewotICAgIGludCByZXN1bHQgPSAwOwotICAgIGNoYXIgZmlsZW5hbWVbQ01EX1NJWkVdOwotICAgIGNoYXIgY21kbGluZVtDTURfU0laRV07Ci0KLSAgICBzdHJjcHlfcyhmaWxlbmFtZSwgQ01EX1NJWkUsICJ0bXBYWFhYWFgiKTsKLSAgICBpZiAoX21rdGVtcF9zKGZpbGVuYW1lLCBDTURfU0laRSkgPT0gMCkgewotICAgICAgICBpbnQgcmM7Ci0KLSAgICAgICAgc3RyY3B5X3MoY21kbGluZSwgQ01EX1NJWkUsICJoZyBpZCAtYml0ID4gIik7Ci0gICAgICAgIHN0cmNhdF9zKGNtZGxpbmUsIENNRF9TSVpFLCBmaWxlbmFtZSk7Ci0gICAgICAgIHJjID0gc3lzdGVtKGNtZGxpbmUpOwotICAgICAgICBpZiAocmMgPT0gMCkgewotICAgICAgICAgICAgRklMRSAqIGZwOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoZm9wZW5fcygmZnAsIGZpbGVuYW1lLCAiciIpID09IDApIHsKLSAgICAgICAgICAgICAgICBjaGFyICogY3AgPSBmZ2V0cyhjbWRsaW5lLCBDTURfU0laRSwgZnApOwotCi0gICAgICAgICAgICAgICAgaWYgKGNwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYXIgKiBjb250ZXh0ID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgY2hhciAqIHRwID0gc3RydG9rX3MoY3AsIERFTElNUywgJmNvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAodHApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweV9zKGhncmV2LCBzaXplLCB0cCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cCA9IHN0cnRva19zKE5VTEwsIERFTElNUywgJmNvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyY3B5X3MoaGdicmFuY2gsIHNpemUsIHRwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cCA9IHN0cnRva19zKE5VTEwsIERFTElNUywgJmNvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHlfcyhoZ3RhZywgc2l6ZSwgdHApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIF91bmxpbmsoZmlsZW5hbWUpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciphcmd2W10pCi17Ci0gICAgY2hhciBjb21tYW5kW0NNRF9TSVpFXSA9ICJjbC5leGUgLWMgLURfV0lOMzIgLURVU0VfRExfRVhQT1JUIC1EX1dJTkRPV1MgLURXSU4zMiAtRF9XSU5ETEwgIjsKLSAgICBjaGFyIHRtcHBhdGhbQ01EX1NJWkVdID0gIiI7Ci0gICAgaW50IGRvX3VubGluaywgcmVzdWx0OwotICAgIGNoYXIgKnRtcGRpciA9IE5VTEw7Ci0gICAgaWYgKGFyZ2MgPD0gMiB8fCBhcmdjID4gMykgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm1ha2VfYnVpbGRpbmZvICQoQ29uZmlndXJhdGlvbk5hbWUpIFt0bXBkaXJdXG4iKTsKLSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLSAgICB9Ci0gICAgaWYgKHN0cmNtcChhcmd2WzFdLCAiUmVsZWFzZSIpID09IDApIHsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgIik7Ci0gICAgfQotICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiRGVidWciKSA9PSAwKSB7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLURfREVCVUcgLU1EZCAiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJSZWxlYXNlSXRhbml1bSIpID09IDApIHsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgL1VTRUNMOk1TX0lUQU5JVU0gIik7Ci0gICAgfQotICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiUmVsZWFzZUFNRDY0IikgPT0gMCkgewotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1NRCAiKTsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgL1VTRUNMOk1TX09QVEVST04gIik7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInVuc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24gJXNcbiIsIGFyZ3ZbMV0pOwotICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwotICAgIH0KLSAgICBpZiAoYXJnYyA+IDIpIHsKLSAgICAgICAgdG1wZGlyID0gYXJndlsyXTsKLSAgICAgICAgc3RyY2F0X3ModG1wcGF0aCwgX2NvdW50b2YodG1wcGF0aCksIHRtcGRpcik7Ci0gICAgICAgIC8qIEhhY2sgZml4IGZvciBiYWQgY29tbWFuZCBsaW5lOiAgSWYgdGhlIGNvbW1hbmQgaXMgaXNzdWVkIGxpa2UgdGhpczoKLSAgICAgICAgICogJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIERlYnVnICIkKEludERpcikiCi0gICAgICAgICAqIHdlIHdpbGwgZ2V0IGEgdHJhaWxpbmcgcXVvdGUgYmVjYXVzZSBJbnREaXIgZW5kcyB3aXRoIGEgYmFja3NsYXNoIHRoYXQgdGhlbgotICAgICAgICAgKiBlc2NhcGVzIHRoZSBmaW5hbCAiLiAgVG8gc2ltcGxpZnkgdGhlIGxpZmUgZm9yIGRldmVsb3BlcnMsIGNhdGNoIHRoYXQgcHJvYmxlbQotICAgICAgICAgKiBoZXJlIGJ5IGN1dHRpbmcgaXQgb2ZmLgotICAgICAgICAgKiBUaGUgcHJvcGVyIGNvbW1hbmQgbGluZSwgYnR3IGlzOgotICAgICAgICAgKiAkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgRGVidWcgIiQoSW50RGlyKVwiCi0gICAgICAgICAqIEhvb3JheSBmb3IgY29tbWFuZCBsaW5lIHBhcnNpbmcgb24gd2luZG93cy4KLSAgICAgICAgICovCi0gICAgICAgIGlmIChzdHJsZW4odG1wcGF0aCkgPiAwICYmIHRtcHBhdGhbc3RybGVuKHRtcHBhdGgpLTFdID09ICciJykKLSAgICAgICAgICAgIHRtcHBhdGhbc3RybGVuKHRtcHBhdGgpLTFdID0gJ1wwJzsKLSAgICAgICAgc3RyY2F0X3ModG1wcGF0aCwgX2NvdW50b2YodG1wcGF0aCksICJcXCIpOwotICAgIH0KLQotICAgIGlmICgoZG9fdW5saW5rID0gbWFrZV9idWlsZGluZm8yKHRtcHBhdGgpKSkgewotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlwiIik7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJnZXRidWlsZGluZm8yLmNcIiAtRFNVQldDUkVWICIpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgY2hhciBoZ3RhZ1tDTURfU0laRV07Ci0gICAgICAgIGNoYXIgaGdicmFuY2hbQ01EX1NJWkVdOwotICAgICAgICBjaGFyIGhncmV2W0NNRF9TSVpFXTsKLQotICAgICAgICBpZiAoZ2V0X21lcmN1cmlhbF9pbmZvKGhnYnJhbmNoLCBoZ3RhZywgaGdyZXYsIENNRF9TSVpFKSkgewotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItREhHQlJBTkNIPVxcXCIiKTsKLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCBoZ2JyYW5jaCk7Ci0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlxcXCIiKTsKLQotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIgLURIR1RBRz1cXFwiIik7Ci0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgaGd0YWcpOwotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcXFwiIik7Ci0KLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiIC1ESEdWRVJTSU9OPVxcXCIiKTsKLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCBoZ3Jldik7Ci0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlxcXCIgIik7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIuLlxcTW9kdWxlc1xcZ2V0YnVpbGRpbmZvLmMiKTsKLSAgICB9Ci0gICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIgLUZvXCIiKTsKLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgdG1wcGF0aCk7Ci0gICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJnZXRidWlsZGluZm8ub1wiIC1JLi5cXEluY2x1ZGUgLUkuLlxcUEMiKTsKLSAgICBwdXRzKGNvbW1hbmQpOyBmZmx1c2goc3Rkb3V0KTsKLSAgICByZXN1bHQgPSBzeXN0ZW0oY29tbWFuZCk7Ci0gICAgaWYgKGRvX3VubGluaykgewotICAgICAgICBjb21tYW5kWzBdID0gJ1wwJzsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcIiIpOwotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgdG1wcGF0aCk7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvMi5jXCIiKTsKLSAgICAgICAgX3VubGluayhjb21tYW5kKTsKLSAgICB9Ci0gICAgaWYgKHJlc3VsdCA8IDApCi0gICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Ci0gICAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjeHByb2ogYi9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjeHByb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlZTdmOTEuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9tYWtlX2J1aWxkaW5mby52Y3hwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gIDwvSXRlbUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+Ci0gICAgPFByb2plY3RHdWlkPntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9PC9Qcm9qZWN0R3VpZD4KLSAgICA8Um9vdE5hbWVzcGFjZT5tYWtlX2J1aWxkaW5mbzwvUm9vdE5hbWVzcGFjZT4KLSAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgotICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpbWFrZV9idWlsZGluZm8uZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSJtYWtlX2J1aWxkaW5mby5jIiAvPgotICA8L0l0ZW1Hcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KLSAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvbWFrZV9idWlsZGluZm8udmN4cHJvai5maWx0ZXJzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjI3ZjhjLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvbWFrZV9idWlsZGluZm8udmN4cHJvai5maWx0ZXJzCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+Ci0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KLSAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgotICAgIDwvRmlsdGVyPgotICA8L0l0ZW1Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Im1ha2VfYnVpbGRpbmZvLmMiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9tYWtlX3ZlcnNpb25pbmZvLnZjeHByb2ogYi9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmN4cHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNmNTA3Yi4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmN4cHJvagorKysgL2Rldi9udWxsCkBAIC0xLDIwMCArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICA8L0l0ZW1Hcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgotICAgIDxQcm9qZWN0R3VpZD57RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfTwvUHJvamVjdEd1aWQ+Ci0gICAgPFJvb3ROYW1lc3BhY2U+bWFrZV92ZXJzaW9uaW5mbzwvUm9vdE5hbWVzcGFjZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgotICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q3VzdG9tQnVpbGRTdGVwPgotICAgICAgPE1lc3NhZ2U+QnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmg8L01lc3NhZ2U+Ci0gICAgICA8Q29tbWFuZD5jZCAkKFNvbHV0aW9uRGlyKQotbWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlxQQ1xweXRob25udF9yYy5oCi08L0NvbW1hbmQ+Ci0gICAgICA8T3V0cHV0cz4kKFNvbHV0aW9uRGlyKS4uXFBDXHB5dGhvbm50X3JjLmg7JShPdXRwdXRzKTwvT3V0cHV0cz4KLSAgICAgIDxJbnB1dHM+JChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvLmV4ZTwvSW5wdXRzPgotICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm8uZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICAgIDxQb3N0QnVpbGRFdmVudCAvPgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUG9zdEJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxDdXN0b21CdWlsZFN0ZXA+Ci0gICAgICA8TWVzc2FnZT5CdWlsZCBQQy9weXRob25udF9yYyhfZCkuaDwvTWVzc2FnZT4KLSAgICAgIDxDb21tYW5kPmNkICQoU29sdXRpb25EaXIpCi1tYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbm50X3JjLmgKLTwvQ29tbWFuZD4KLSAgICAgIDxPdXRwdXRzPiQoU29sdXRpb25EaXIpLi5cUENccHl0aG9ubnRfcmMuaDslKE91dHB1dHMpPC9PdXRwdXRzPgotICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mby5leGU8L091dHB1dEZpbGU+Ci0gICAgPC9MaW5rPgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPmNkICQoU29sdXRpb25EaXIpCi1tYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbl9udC5oCi08L0NvbW1hbmQ+Ci0gICAgPC9Qb3N0QnVpbGRFdmVudD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Ci0gICAgPEN1c3RvbUJ1aWxkU3RlcD4KLSAgICAgIDxNZXNzYWdlPkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oPC9NZXNzYWdlPgotICAgICAgPENvbW1hbmQ+Y2QgJChTb2x1dGlvbkRpcikKLW1ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlxQQ1xweXRob25udF9yY19kLmgKLTwvQ29tbWFuZD4KLSAgICAgIDxPdXRwdXRzPiQoU29sdXRpb25EaXIpLi5cUENccHl0aG9ubnRfcmNfZC5oOyUoT3V0cHV0cyk8L091dHB1dHM+Ci0gICAgICA8SW5wdXRzPiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mb19kLmV4ZTwvSW5wdXRzPgotICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvX2QuZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUG9zdEJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8Q3VzdG9tQnVpbGRTdGVwPgotICAgICAgPE1lc3NhZ2U+QnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmg8L01lc3NhZ2U+Ci0gICAgICA8Q29tbWFuZD5jZCAkKFNvbHV0aW9uRGlyKQotbWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbm50X3JjX2QuaAotPC9Db21tYW5kPgotICAgICAgPE91dHB1dHM+JChTb2x1dGlvbkRpcikuLlxQQ1xweXRob25udF9yY19kLmg7JShPdXRwdXRzKTwvT3V0cHV0cz4KLSAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvX2QuZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gICAgPFBvc3RCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+Y2QgJChTb2x1dGlvbkRpcikKLW1ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlxQQ1xweXRob25fbnRfZC5oCi08L0NvbW1hbmQ+Ci0gICAgPC9Qb3N0QnVpbGRFdmVudD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcbWFrZV92ZXJzaW9uaW5mby5jIiAvPgotICA8L0l0ZW1Hcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KLSAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9tYWtlX3ZlcnNpb25pbmZvLnZjeHByb2ouZmlsdGVycwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZjMDQzNC4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmN4cHJvai5maWx0ZXJzCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+Ci0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZTQxODA5NTQtYzNhNS00NzQ5LWI5YTQtMzFiODA0ZWU0ZmE4fTwvVW5pcXVlSWRlbnRpZmllcj4KLSAgICA8L0ZpbHRlcj4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xtYWtlX3ZlcnNpb25pbmZvLmMiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9vcGVuc3NsLnByb3BzIGIvUENidWlsZC9vcGVuc3NsLnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwOTRlNTkKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL29wZW5zc2wucHJvcHMKQEAgLTAsMCArMSw3NyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFB5X0ludERpciBDb25kaXRpb249IickKFB5X0ludERpciknID09ICcnIj4kKG9wZW5zc2xEaXIpdG1wXDwvUHlfSW50RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIAorICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKworICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iRFNPX1dJTjMyIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJXSU4zMl9MRUFOX0FORF9NRUFOIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJMX0VORElBTiIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9USFJFQURTIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX1NZU05BTUVfV0lOMzIiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfSUEzMl9TU0UyIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX0NQVUlEX09CSiIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iU0hBMV9BU00iIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlNIQTI1Nl9BU00iIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlNIQTUxMl9BU00iIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik1ENV9BU00iIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IkFFU19BU00iIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlZQQUVTX0FTTSIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iV0hJUkxQT09MX0FTTSIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iR0hBU0hfQVNNIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX05PX0lERUEiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfTk9fUkM1IiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX05PX01EMiIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9OT19NREMyIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX05PX0tSQjUiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfTk9fSlBBS0UiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfTk9fUkRSQU5EIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX05PX1JTQVgiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfTk9fRFlOQU1JQ19FTkdJTkUiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J1dpbjMyJyI+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX0dGMm0iIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX1BBUlRfV09SRFMiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX01PTlQiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlJNRDE2MF9BU00iIC8+CisgIDwvSXRlbUdyb3VwPgorICAKKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9QcmVwcm9jZXNzb3JEZWZpbml0aW9uTGlzdD5AKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvX1ByZXByb2Nlc3NvckRlZmluaXRpb25MaXN0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIAorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPCEtLSBTdXBwcmVzcyA2NC1iaXQgdHJ1bmNhdGlvbiB3YXJuaW5ncyAtIHRoZXkgYXJlbid0IG91cnMgdG8gd29ycnkgYWJvdXQgLS0+CisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDI0NDs0MjY3PC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcik7JChvcGVuc3NsRGlyKWluY2x1ZGU7JChvcGVuc3NsRGlyKWNyeXB0bzskKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjE7JChvcGVuc3NsRGlyKWNyeXB0b1xldnA7JChvcGVuc3NsRGlyKWNyeXB0b1xtb2RlczwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4kKF9QcmVwcm9jZXNzb3JEZWZpbml0aW9uTGlzdCk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIAorICA8VGFyZ2V0IE5hbWU9IkZpbmROYXNtIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgIDxuYXNtIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ1dpbjMyJyI+bmFzbS5leGUgLWYgd2luMzI8L25hc20+CisgICAgICA8bmFzbSBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICd4NjQnIj5uYXNtLmV4ZSAtZiB3aW42NCAtRE5FQVIgLU94IC1nPC9uYXNtPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgPC9UYXJnZXQ+CisKKyAgPFRhcmdldCBOYW1lPSJCdWlsZE5hc21GaWxlcyIgQmVmb3JlVGFyZ2V0cz0iUHJlQnVpbGRFdmVudCIgRGVwZW5kc09uVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkO0ZpbmROYXNtIiBJbnB1dHM9IkAoTmFzbUNvbXBpbGUpIiBPdXRwdXRzPSJAKE5hc21Db21waWxlLT4nJChJbnREaXIpJShGaWxlbmFtZSkub2JqJykiPgorICAgIDxFeGVjIENvbW1hbmQ9J3NldGxvY2FsCitzZXQgUEFUSD0kKG5hc21EaXIpOyVQQVRIJQorJChuYXNtKSAtbyAiJChJbnREaXIpJShOYXNtQ29tcGlsZS5GaWxlbmFtZSkub2JqIiAiJShOYXNtQ29tcGlsZS5GdWxsUGF0aCkiJyAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICA8TGluayBJbmNsdWRlPSIkKEludERpciklKE5hc21Db21waWxlLkZpbGVuYW1lKS5vYmoiIC8+CisgICAgICA8TGliIEluY2x1ZGU9IiQoSW50RGlyKSUoTmFzbUNvbXBpbGUuRmlsZW5hbWUpLm9iaiIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9wY2J1aWxkLnByb2ogYi9QQ2J1aWxkL3BjYnVpbGQucHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjYyMWM5Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9wY2J1aWxkLnByb2oKQEAgLTAsMCArMSw5MCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntDQzlCOTNBMi00MzlELTQwNTgtOUQyOS02RENGNDM3NzQ0MDV9PC9Qcm9qZWN0R3VpZD4KKyAgICA8UGxhdGZvcm0gQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICcnIj5XaW4zMjwvUGxhdGZvcm0+CisgICAgPENvbmZpZ3VyYXRpb24gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJyciPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgPEluY2x1ZGVFeHRlbnNpb25zIENvbmRpdGlvbj0iJyQoSW5jbHVkZUV4dGVuc2lvbnMpJyA9PSAnJyI+dHJ1ZTwvSW5jbHVkZUV4dGVuc2lvbnM+CisgICAgPEluY2x1ZGVFeHRlcm5hbHMgQ29uZGl0aW9uPSInJChJbmNsdWRlRXh0ZXJuYWxzKScgPT0gJyciPnRydWU8L0luY2x1ZGVFeHRlcm5hbHM+CisgICAgPEluY2x1ZGVUZXN0cyBDb25kaXRpb249IickKEluY2x1ZGVUZXN0KScgPT0gJyciPnRydWU8L0luY2x1ZGVUZXN0cz4KKyAgICA8SW5jbHVkZVNTTCBDb25kaXRpb249IickKEluY2x1ZGVTU0wpJyA9PSAnJyI+dHJ1ZTwvSW5jbHVkZVNTTD4KKyAgICA8SW5jbHVkZVRraW50ZXIgQ29uZGl0aW9uPSInJChJbmNsdWRlVGtpbnRlciknID09ICcnIj50cnVlPC9JbmNsdWRlVGtpbnRlcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxQcm9qZWN0cz4KKyAgICAgIDxQbGF0Zm9ybT4kKFBsYXRmb3JtKTwvUGxhdGZvcm0+CisgICAgICA8Q29uZmlndXJhdGlvbj4kKENvbmZpZ3VyYXRpb24pPC9Db25maWd1cmF0aW9uPgorICAgICAgPFByb3BlcnRpZXM+PC9Qcm9wZXJ0aWVzPgorICAgICAgPEJ1aWxkVGFyZ2V0PkJ1aWxkPC9CdWlsZFRhcmdldD4KKyAgICAgIDxDbGVhblRhcmdldD5DbGVhbjwvQ2xlYW5UYXJnZXQ+CisgICAgICA8Q2xlYW5BbGxUYXJnZXQ+Q2xlYW5BbGw8L0NsZWFuQWxsVGFyZ2V0PgorICAgICAgPEJ1aWxkSW5QYXJhbGxlbD50cnVlPC9CdWlsZEluUGFyYWxsZWw+CisgICAgPC9Qcm9qZWN0cz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDwhLS0gcHl0aG9uWFkuZGxsIC0tPgorICAgIDwhLS0KKyAgICBQYXJhbGxlbCBidWlsZCBpcyBleHBsaWNpdGx5IGRpc2FibGVkIGZvciB0aGlzIHByb2plY3QgYmVjYXVzZSBpdAorICAgIGNhdXNlcyBtYW55IGNvbmZsaWN0cyBiZXR3ZWVuIHB5dGhvbmNvcmUgYW5kIHByb2plY3RzIHRoYXQgZGVwZW5kCisgICAgb24gcHl0aG9uY29yZS4gT25jZSB0aGUgY29yZSBETEwgaGFzIGJlZW4gYnVpbHQsIHN1YnNlcXVlbnQKKyAgICBwcm9qZWN0cyB3aWxsIGJlIGJ1aWx0IGluIHBhcmFsbGVsLgorICAgIC0tPgorICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPEJ1aWxkSW5QYXJhbGxlbD5mYWxzZTwvQnVpbGRJblBhcmFsbGVsPgorICAgIDwvUHJvamVjdHM+CisgICAgPCEtLSBweXRob25bd10uZXhlIC0tPgorICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJweXRob24udmN4cHJvajtweXRob253LnZjeHByb2oiIC8+CisgICAgPCEtLSBweXRob24zLmRsbCAtLT4KKyAgICA8UHJvamVjdHMgSW5jbHVkZT0icHl0aG9uM2RsbC52Y3hwcm9qIiAvPgorICAgIDwhLS0gcHlbd10uZXhlIC0tPgorICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJweWxhdW5jaGVyLnZjeHByb2o7cHl3bGF1bmNoZXIudmN4cHJvaiIgLz4KKyAgICA8IS0tIF9mcmVlemVfaW1wb3J0bGliIC0tPgorICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJfZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qIiAvPgorICAgIDwhLS0gRXh0ZW5zaW9uIG1vZHVsZXMgLS0+CisgICAgPEV4dGVuc2lvbk1vZHVsZXMgSW5jbHVkZT0iX2N0eXBlcztfZGVjaW1hbDtfZWxlbWVudHRyZWU7X21zaTtfbXVsdGlwcm9jZXNzaW5nO19vdmVybGFwcGVkO3B5ZXhwYXQ7c2VsZWN0O3VuaWNvZGVkYXRhO3dpbnNvdW5kIiAvPgorICAgIDwhLS0gRXh0ZW5zaW9uIG1vZHVsZXMgdGhhdCByZXF1aXJlIGV4dGVybmFsIHNvdXJjZXMgLS0+CisgICAgPEV4dGVybmFsTW9kdWxlcyBJbmNsdWRlPSJfYnoyO19sem1hO19zcWxpdGUzIiAvPgorICAgIDwhLS0gX3NzbCB3aWxsIGJ1aWxkIF9zb2NrZXQgYXMgd2VsbCwgd2hpY2ggbWF5IGNhdXNlIGNvbmZsaWN0cyBpbiBwYXJhbGxlbCBidWlsZHMgLS0+CisgICAgPEV4dGVuc2lvbk1vZHVsZXMgSW5jbHVkZT0iX3NvY2tldCIgQ29uZGl0aW9uPSIhJChJbmNsdWRlU1NMKSBvciAhJChJbmNsdWRlRXh0ZXJuYWxzKSIgLz4KKyAgICA8RXh0ZXJuYWxNb2R1bGVzIEluY2x1ZGU9Il9zc2w7X2hhc2hsaWIiIENvbmRpdGlvbj0iJChJbmNsdWRlU1NMKSIgLz4KKyAgICA8RXh0ZXJuYWxNb2R1bGVzIEluY2x1ZGU9Il90a2ludGVyO3RpeCIgQ29uZGl0aW9uPSIkKEluY2x1ZGVUa2ludGVyKSIgLz4KKyAgICA8RXh0ZW5zaW9uTW9kdWxlcyBJbmNsdWRlPSJAKEV4dGVybmFsTW9kdWxlcy0+JyUoSWRlbnRpdHkpJykiIENvbmRpdGlvbj0iJChJbmNsdWRlRXh0ZXJuYWxzKSIgLz4KKyAgICA8UHJvamVjdHMgSW5jbHVkZT0iQChFeHRlbnNpb25Nb2R1bGVzLT4nJShJZGVudGl0eSkudmN4cHJvaicpIiBDb25kaXRpb249IiQoSW5jbHVkZUV4dGVuc2lvbnMpIiAvPgorICAgIDwhLS0gVGVzdCBtb2R1bGVzIC0tPgorICAgIDxUZXN0TW9kdWxlcyBJbmNsdWRlPSJfY3R5cGVzX3Rlc3Q7X3Rlc3RidWZmZXI7X3Rlc3RjYXBpO190ZXN0ZW1iZWQ7X3Rlc3RpbXBvcnRtdWx0aXBsZTtfdGVzdG11bHRpcGhhc2UiIC8+CisgICAgPFRlc3RNb2R1bGVzIEluY2x1ZGU9Inh4bGltaXRlZCIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJ1JlbGVhc2UnIiAvPgorICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJAKFRlc3RNb2R1bGVzLT4nJShJZGVudGl0eSkudmN4cHJvaicpIiBDb25kaXRpb249IiQoSW5jbHVkZVRlc3RzKSI+CisgICAgICA8IS0tIERpc2FibGUgcGFyYWxsZWwgYnVpbGQgZm9yIHRlc3QgbW9kdWxlcyAtLT4KKyAgICAgIDxCdWlsZEluUGFyYWxsZWw+ZmFsc2U8L0J1aWxkSW5QYXJhbGxlbD4KKyAgICA8L1Byb2plY3RzPgorICA8L0l0ZW1Hcm91cD4KKworICA8VGFyZ2V0IE5hbWU9IkJ1aWxkIj4KKyAgICA8TVNCdWlsZCBQcm9qZWN0cz0iQChQcm9qZWN0cykiCisgICAgICAgICAgICAgUHJvcGVydGllcz0iQ29uZmlndXJhdGlvbj0lKENvbmZpZ3VyYXRpb24pO1BsYXRmb3JtPSUoUGxhdGZvcm0pOyUoUHJvcGVydGllcykiCisgICAgICAgICAgICAgQnVpbGRJblBhcmFsbGVsPSIlKEJ1aWxkSW5QYXJhbGxlbCkiCisgICAgICAgICAgICAgVGFyZ2V0cz0iJShCdWlsZFRhcmdldCkiIC8+CisgIDwvVGFyZ2V0PgorCisgIDxUYXJnZXQgTmFtZT0iQ2xlYW4iPgorICAgIDxNU0J1aWxkIFByb2plY3RzPSJAKFByb2plY3RzKSIKKyAgICAgICAgICAgICBQcm9wZXJ0aWVzPSJDb25maWd1cmF0aW9uPSUoQ29uZmlndXJhdGlvbik7UGxhdGZvcm09JShQbGF0Zm9ybSk7JShQcm9wZXJ0aWVzKSIKKyAgICAgICAgICAgICBCdWlsZEluUGFyYWxsZWw9IiUoQnVpbGRJblBhcmFsbGVsKSIKKyAgICAgICAgICAgICBTdG9wT25GaXJzdEZhaWx1cmU9ImZhbHNlIgorICAgICAgICAgICAgIENvbmRpdGlvbj0iJShDbGVhblRhcmdldCkgIT0gJyciCisgICAgICAgICAgICAgVGFyZ2V0cz0iJShDbGVhblRhcmdldCkiIC8+CisgIDwvVGFyZ2V0PgorCisgIDxUYXJnZXQgTmFtZT0iQ2xlYW5BbGwiPgorICAgIDxNU0J1aWxkIFByb2plY3RzPSJAKFByb2plY3RzKSIKKyAgICAgICAgICAgICBQcm9wZXJ0aWVzPSJDb25maWd1cmF0aW9uPSUoQ29uZmlndXJhdGlvbik7UGxhdGZvcm09JShQbGF0Zm9ybSk7JShQcm9wZXJ0aWVzKSIKKyAgICAgICAgICAgICBCdWlsZEluUGFyYWxsZWw9IiUoQnVpbGRJblBhcmFsbGVsKSIKKyAgICAgICAgICAgICBTdG9wT25GaXJzdEZhaWx1cmU9ImZhbHNlIgorICAgICAgICAgICAgIENvbmRpdGlvbj0iJShDbGVhbkFsbFRhcmdldCkgIT0gJyciCisgICAgICAgICAgICAgVGFyZ2V0cz0iJShDbGVhbkFsbFRhcmdldCkiIC8+CisgIDwvVGFyZ2V0PgorCisgIDxUYXJnZXQgTmFtZT0iUmVidWlsZCIgRGVwZW5kc09uVGFyZ2V0cz0iQ2xlYW47QnVpbGQiIC8+CisgIDxUYXJnZXQgTmFtZT0iUmVidWlsZEFsbCIgRGVwZW5kc09uVGFyZ2V0cz0iQ2xlYW5BbGw7QnVpbGQiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9wY2J1aWxkLnNsbiBiL1BDYnVpbGQvcGNidWlsZC5zbG4KaW5kZXggYTM0NmUxMC4uNzY2YTg3MCAxMDA2NDQKLS0tIGEvUENidWlsZC9wY2J1aWxkLnNsbgorKysgYi9QQ2J1aWxkL3BjYnVpbGQuc2xuCkBAIC0xLDUgKzEsNyBAQAotTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTEuMDANCi0jIFZpc3VhbCBTdHVkaW8gMjAxMA0KK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDEyLjAwDQorIyBWaXN1YWwgU3R1ZGlvIDE0DQorVmlzdWFsU3R1ZGlvVmVyc2lvbiA9IDE0LjAuMjI4MjMuMQ0KK01pbmltdW1WaXN1YWxTdHVkaW9WZXJzaW9uID0gMTAuMC40MDIxOS4xDQogUHJvamVjdCgiezIxNTBFMzMzLThGREMtNDJBMy05NDc0LTFBMzk1NkQ0NkRFOH0iKSA9ICJTb2x1dGlvbiBJdGVtcyIsICJTb2x1dGlvbiBJdGVtcyIsICJ7NTUzRUMzM0UtOTgxNi00OTk2LUE2NjAtNUQ2MTg2QTBCMEIzfSINCiAJUHJvamVjdFNlY3Rpb24oU29sdXRpb25JdGVtcykgPSBwcmVQcm9qZWN0DQogCQkuLlxNb2R1bGVzXGdldGJ1aWxkaW5mby5jID0gLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYw0KQEAgLTgsMTQgKzEwLDEwIEBACiBFbmRQcm9qZWN0DQogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob24iLCAicHl0aG9uLnZjeHByb2oiLCAie0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV92ZXJzaW9uaW5mbyIsICJtYWtlX3ZlcnNpb25pbmZvLnZjeHByb2oiLCAie0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0iDQotRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uY29yZSIsICJweXRob25jb3JlLnZjeHByb2oiLCAie0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0iDQogRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9udyIsICJweXRob253LnZjeHByb2oiLCAie0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV9idWlsZGluZm8iLCAibWFrZV9idWlsZGluZm8udmN4cHJvaiIsICJ7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSINCi1FbmRQcm9qZWN0DQogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3aW5zb3VuZCIsICJ3aW5zb3VuZC52Y3hwcm9qIiwgInsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9Ig0KIEVuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9kZWNpbWFsIiwgIl9kZWNpbWFsLnZjeHByb2oiLCAiezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30iDQpAQCAtNTAsNyArNDgsNyBAQAogRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHlleHBhdCIsICJweWV4cGF0LnZjeHByb2oiLCAie0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiYmRpc3Rfd2luaW5zdCIsICJiZGlzdF93aW5pbnN0LnZjeHByb2oiLCAie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJiZGlzdF93aW5pbnN0IiwgIi4uXFBDXGJkaXN0X3dpbmluc3RcYmRpc3Rfd2luaW5zdC52Y3hwcm9qIiwgIntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9Ig0KIEVuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9oYXNobGliIiwgIl9oYXNobGliLnZjeHByb2oiLCAiezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0iDQogRW5kUHJvamVjdA0KQEAgLTU4LDEwICs1Niw2IEBACiBFbmRQcm9qZWN0DQogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbXVsdGlwcm9jZXNzaW5nIiwgIl9tdWx0aXByb2Nlc3NpbmcudmN4cHJvaiIsICJ7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzc2wiLCAic3NsLnZjeHByb2oiLCAie0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAia2lsbF9weXRob24iLCAia2lsbF9weXRob24udmN4cHJvaiIsICJ7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSINCi1FbmRQcm9qZWN0DQogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob24zZGxsIiwgInB5dGhvbjNkbGwudmN4cHJvaiIsICJ7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfSINCiBFbmRQcm9qZWN0DQogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ4eGxpbWl0ZWQiLCAieHhsaW1pdGVkLnZjeHByb2oiLCAie0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0iDQpAQCAtNzgsNiArNzIsMTggQEAKIEVuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0ZW1iZWQiLCAiX3Rlc3RlbWJlZC52Y3hwcm9qIiwgIns2REFDNjZEOS1FNzAzLTQ2MjQtQkUwMy00OTExMkFCNUFBNjJ9Ig0KIEVuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0bXVsdGlwaGFzZSIsICJfdGVzdG11bHRpcGhhc2UudmN4cHJvaiIsICJ7MTZCRkU2RjAtMjJFRi00MEI1LUI4MzEtN0U5MzcxMTlFRjEwfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ0Y2wiLCAidGNsLnZjeHByb2oiLCAie0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidGl4IiwgInRpeC52Y3hwcm9qIiwgIntDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInRrIiwgInRrLnZjeHByb2oiLCAiezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibGliZWF5IiwgImxpYmVheS52Y3hwcm9qIiwgIntFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNzbGVheSIsICJzc2xlYXkudmN4cHJvaiIsICJ7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fSINCitFbmRQcm9qZWN0DQogR2xvYmFsDQogCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uDQogCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyDQpAQCAtMTA2LDIyICsxMTIsNiBAQAogCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCiAJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQogCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCiAJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCkBAIC0xNDIsMzQgKzEzMiwxOCBAQAogCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCiAJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCiAJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KIAkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCiAJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQogCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCiAJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCkBAIC0yMjIsMTQgKzE5NiwxNCBAQAogCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCiAJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCiAJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KIAkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCkBAIC0zMzQsMTQgKzMwOCwxNCBAQAogCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCiAJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCiAJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KIAkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCkBAIC00NDIsNyArNDE2LDcgQEAKIAkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCiAJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCiAJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCkBAIC00OTgsNDkgKzQ3MiwxOCBAQAogCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KIAkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQogCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KQEAgLTU2MywxNCArNTA2LDE0IEBACiAJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KIAkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KIAkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQogCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KQEAgLTU3OSwzNCArNTIyLDM0IEBACiAJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KIAkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KIAkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQogCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCiAJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQogCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KIAkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQogCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQogCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KIAkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQogCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQogCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KQEAgLTYxNCw3ICs1NTcsOSBAQAogCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQogCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KIAkJezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQogCQl7RUI2RTY5REQtMDRCRi00NTQzLTlCOTItNDlGQUFCQ0VBQzJFfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KIAkJe0VCNkU2OURELTA0QkYtNDU0My05QjkyLTQ5RkFBQkNFQUMyRX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQogCQl7RUI2RTY5REQtMDRCRi00NTQzLTlCOTItNDlGQUFCQ0VBQzJFfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQpAQCAtNjQ1LDYgKzU5MCwxMDAgQEAKIAkJezZEQUM2NkQ5LUU3MDMtNDYyNC1CRTAzLTQ5MTEyQUI1QUE2Mn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJezZEQUM2NkQ5LUU3MDMtNDYyNC1CRTAzLTQ5MTEyQUI1QUE2Mn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJCXs2REFDNjZEOS1FNzAzLTQ2MjQtQkUwMy00OTExMkFCNUFBNjJ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezE2QkZFNkYwLTIyRUYtNDBCNS1CODMxLTdFOTM3MTE5RUYxMH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXsxNkJGRTZGMC0yMkVGLTQwQjUtQjgzMS03RTkzNzExOUVGMTB9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezE2QkZFNkYwLTIyRUYtNDBCNS1CODMxLTdFOTM3MTE5RUYxMH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezE2QkZFNkYwLTIyRUYtNDBCNS1CODMxLTdFOTM3MTE5RUYxMH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXsxNkJGRTZGMC0yMkVGLTQwQjUtQjgzMS03RTkzNzExOUVGMTB9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTZCRkU2RjAtMjJFRi00MEI1LUI4MzEtN0U5MzcxMTlFRjEwfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MTZCRkU2RjAtMjJFRi00MEI1LUI4MzEtN0U5MzcxMTlFRjEwfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTZCRkU2RjAtMjJFRi00MEI1LUI4MzEtN0U5MzcxMTlFRjEwfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezE2QkZFNkYwLTIyRUYtNDBCNS1CODMxLTdFOTM3MTE5RUYxMH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MTZCRkU2RjAtMjJFRi00MEI1LUI4MzEtN0U5MzcxMTlFRjEwfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7MTZCRkU2RjAtMjJFRi00MEI1LUI4MzEtN0U5MzcxMTlFRjEwfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxNkJGRTZGMC0yMkVGLTQwQjUtQjgzMS03RTkzNzExOUVGMTB9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxNkJGRTZGMC0yMkVGLTQwQjUtQjgzMS03RTkzNzExOUVGMTB9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MTZCRkU2RjAtMjJFRi00MEI1LUI4MzEtN0U5MzcxMTlFRjEwfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAlFbmRHbG9iYWxTZWN0aW9uDQogCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uDQogCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3BnaW5zdHJ1bWVudC5wcm9wcyBiL1BDYnVpbGQvcGdpbnN0cnVtZW50LnByb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTg0OTk1Li4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvcGdpbnN0cnVtZW50LnByb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyI+Ci0gICAgPE91dERpclBHST4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pLXBnaVw8L091dERpclBHST4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPE91dERpcj4kKE91dERpclBHSSlcPC9PdXREaXI+Ci0gICAgPEludERpcj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS10ZW1wLXBnaVwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8RmF2b3JTaXplT3JTcGVlZD5TaXplPC9GYXZvclNpemVPclNwZWVkPgotICAgICAgPE9taXRGcmFtZVBvaW50ZXJzPnRydWU8L09taXRGcmFtZVBvaW50ZXJzPgotICAgICAgPEVuYWJsZUZpYmVyU2FmZU9wdGltaXphdGlvbnM+ZmFsc2U8L0VuYWJsZUZpYmVyU2FmZU9wdGltaXphdGlvbnM+Ci0gICAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8RXhjZXB0aW9uSGFuZGxpbmc+Ci0gICAgICA8L0V4Y2VwdGlvbkhhbmRsaW5nPgotICAgICAgPEJ1ZmZlclNlY3VyaXR5Q2hlY2s+ZmFsc2U8L0J1ZmZlclNlY3VyaXR5Q2hlY2s+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KLSAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgotICAgICAgPExpbmtUaW1lQ29kZUdlbmVyYXRpb24+UEdJbnN0cnVtZW50PC9MaW5rVGltZUNvZGVHZW5lcmF0aW9uPgotICAgICAgPFByb2ZpbGVHdWlkZWREYXRhYmFzZT4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pLXBnaVwkKFRhcmdldE5hbWUpLnBnZDwvUHJvZmlsZUd1aWRlZERhdGFiYXNlPgotICAgICAgPEltcG9ydExpYnJhcnk+JChPdXREaXJQR0kpXCQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9Ik91dERpclBHSSI+Ci0gICAgICA8VmFsdWU+JChPdXREaXJQR0kpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9wZ3VwZGF0ZS5wcm9wcyBiL1BDYnVpbGQvcGd1cGRhdGUucHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3NzVhMDIuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9wZ3VwZGF0ZS5wcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFNvbHV0aW9uRGlyKVxwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXBnb1w8L091dERpcj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsTWFuaWZlc3REZXBlbmRlbmNpZXM+JShBZGRpdGlvbmFsTWFuaWZlc3REZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsTWFuaWZlc3REZXBlbmRlbmNpZXM+Ci0gICAgICA8TGlua1RpbWVDb2RlR2VuZXJhdGlvbj5QR1VwZGF0ZTwvTGlua1RpbWVDb2RlR2VuZXJhdGlvbj4KLSAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHJlcGFyZV9zc2wuYmF0IGIvUENidWlsZC9wcmVwYXJlX3NzbC5iYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA4YTlmMwotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHJlcGFyZV9zc2wuYmF0CkBAIC0wLDAgKzEsMTIgQEAKK0BlY2hvIG9mZg0KK2lmIG5vdCBkZWZpbmVkIEhPU1RfUFlUSE9OICgNCisgIGlmICUxIEVRVSBEZWJ1ZyAoDQorICAgIHNoaWZ0DQorICAgIHNldCBIT1NUX1BZVEhPTj1weXRob25fZC5leGUNCisgICAgaWYgbm90IGV4aXN0IHB5dGhvbjM1X2QuZGxsIGV4aXQgMQ0KKyAgKSBFTFNFICgNCisgICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbi5leGUNCisgICAgaWYgbm90IGV4aXN0IHB5dGhvbjM1LmRsbCBleGl0IDENCisgICkNCispDQorJUhPU1RfUFlUSE9OJSBwcmVwYXJlX3NzbC5weSAlMQ0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHJlcGFyZV9zc2wucHkgYi9QQ2J1aWxkL3ByZXBhcmVfc3NsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyMDNkYWIKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3ByZXBhcmVfc3NsLnB5CkBAIC0wLDAgKzEsMjQ4IEBACisjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMworIyBTY3JpcHQgZm9yIHByZXBhcmluZyBPcGVuU1NMIGZvciBidWlsZGluZyBvbiBXaW5kb3dzLgorIyBVc2VzIFBlcmwgdG8gY3JlYXRlIG5tYWtlIG1ha2VmaWxlcyBhbmQgb3RoZXJ3aXNlIHByZXBhcmUgdGhlIHdheQorIyBmb3IgYnVpbGRpbmcgb24gMzIgb3IgNjQgYml0IHBsYXRmb3Jtcy4KKworIyBTY3JpcHQgb3JpZ2luYWxseSBhdXRob3JlZCBieSBNYXJrIEhhbW1vbmQuCisjIE1ham9yIHJldmlzaW9ucyBieToKKyMgICBNYXJ0aW4gdi4gTMO2d2lzCisjICAgQ2hyaXN0aWFuIEhlaW1lcworIyAgIFphY2hhcnkgV2FyZQorCisjIFRIRU9SRVRJQ0FMTFksIHlvdSBjYW46CisjICogVW5wYWNrIHRoZSBsYXRlc3QgT3BlblNTTCByZWxlYXNlIHdoZXJlICQob3BlbnNzbERpcikgaW4KKyMgICBQQ2J1aWxkXHB5cHJvamVjdC5wcm9wcyBleHBlY3RzIGl0IHRvIGJlLgorIyAqIEluc3RhbGwgQWN0aXZlUGVybCBhbmQgZW5zdXJlIGl0IGlzIHNvbWV3aGVyZSBvbiB5b3VyIHBhdGguCisjICogUnVuIHRoaXMgc2NyaXB0IHdpdGggdGhlIE9wZW5TU0wgc291cmNlIGRpciBhcyB0aGUgb25seSBhcmd1bWVudC4KKyMKKyMgaXQgc2hvdWxkIGNvbmZpZ3VyZSBPcGVuU1NMIHN1Y2ggdGhhdCBpdCBpcyByZWFkeSB0byBiZSBidWlsdCBieQorIyBzc2wudmN4cHJvaiBvbiAzMiBvciA2NCBiaXQgcGxhdGZvcm1zLgorCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IHNodXRpbAoraW1wb3J0IHN1YnByb2Nlc3MKKworIyBGaW5kIGFsbCAiZm9vLmV4ZSIgZmlsZXMgb24gdGhlIFBBVEguCitkZWYgZmluZF9hbGxfb25fcGF0aChmaWxlbmFtZSwgZXh0cmFzID0gTm9uZSk6CisgICAgZW50cmllcyA9IG9zLmVudmlyb25bIlBBVEgiXS5zcGxpdChvcy5wYXRoc2VwKQorICAgIHJldCA9IFtdCisgICAgZm9yIHAgaW4gZW50cmllczoKKyAgICAgICAgZm5hbWUgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHAsIGZpbGVuYW1lKSkKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZm5hbWUpIGFuZCBmbmFtZSBub3QgaW4gcmV0OgorICAgICAgICAgICAgcmV0LmFwcGVuZChmbmFtZSkKKyAgICBpZiBleHRyYXM6CisgICAgICAgIGZvciBwIGluIGV4dHJhczoKKyAgICAgICAgICAgIGZuYW1lID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihwLCBmaWxlbmFtZSkpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbmFtZSkgYW5kIGZuYW1lIG5vdCBpbiByZXQ6CisgICAgICAgICAgICAgICAgcmV0LmFwcGVuZChmbmFtZSkKKyAgICByZXR1cm4gcmV0CisKKyMgRmluZCBhIHN1aXRhYmxlIFBlcmwgaW5zdGFsbGF0aW9uIGZvciBPcGVuU1NMLgorIyBjeWd3aW4gcGVybCBkb2VzICpub3QqIHdvcmsuICBBY3RpdmVQZXJsIGRvZXMuCisjIEJlaW5nIGEgUGVybCBkdW1teSwgdGhlIHNpbXBsZXN0IHdheSBJIGNhbiBjaGVjayBpcyBpZiB0aGUgIldpbjMyIiBwYWNrYWdlCisjIGlzIGF2YWlsYWJsZS4KK2RlZiBmaW5kX3dvcmtpbmdfcGVybChwZXJscyk6CisgICAgZm9yIHBlcmwgaW4gcGVybHM6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtwZXJsLCAiLWUiLCAidXNlIFdpbjMyOyJdKQorICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHBlcmwKKworICAgIGlmIHBlcmxzOgorICAgICAgICBwcmludCgiVGhlIGZvbGxvd2luZyBwZXJsIGludGVycHJldGVycyB3ZXJlIGZvdW5kOiIpCisgICAgICAgIGZvciBwIGluIHBlcmxzOgorICAgICAgICAgICAgcHJpbnQoIiAiLCBwKQorICAgICAgICBwcmludCgiIE5vbmUgb2YgdGhlc2UgdmVyc2lvbnMgYXBwZWFyIHN1aXRhYmxlIGZvciBidWlsZGluZyBPcGVuU1NMIikKKyAgICBlbHNlOgorICAgICAgICBwcmludCgiTk8gcGVybCBpbnRlcnByZXRlcnMgd2VyZSBmb3VuZCBvbiB0aGlzIG1hY2hpbmUgYXQgYWxsISIpCisgICAgcHJpbnQoIiBQbGVhc2UgaW5zdGFsbCBBY3RpdmVQZXJsIGFuZCBlbnN1cmUgaXQgYXBwZWFycyBvbiB5b3VyIHBhdGgiKQorCitkZWYgY3JlYXRlX21ha2VmaWxlNjQobWFrZWZpbGUsIG0zMik6CisgICAgIiIiQ3JlYXRlIGFuZCBmaXggbWFrZWZpbGUgZm9yIDY0Yml0CisKKyAgICBSZXBsYWNlIDMyIHdpdGggNjRiaXQgZGlyZWN0b3JpZXMKKyAgICAiIiIKKyAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUobTMyKToKKyAgICAgICAgcmV0dXJuCisgICAgd2l0aCBvcGVuKG0zMikgYXMgZmluOgorICAgICAgICB3aXRoIG9wZW4obWFrZWZpbGUsICd3JykgYXMgZm91dDoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGZpbjoKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCI9dG1wMzIiLCAiPXRtcDY0IikKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCI9b3V0MzIiLCAiPW91dDY0IikKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCI9aW5jMzIiLCAiPWluYzY0IikKKyAgICAgICAgICAgICAgICAjIGZvcmNlIDY0IGJpdCBtYWNoaW5lCisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiTUtMSUI9bGliIiwgIk1LTElCPWxpYiAvTUFDSElORTpYNjQiKQorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIkxGTEFHUz0iLCAiTEZMQUdTPS9NQUNISU5FOlg2NCAiKQorICAgICAgICAgICAgICAgICMgZG9uJ3QgbGluayBhZ2FpbnN0IHRoZSBsaWIgb24gNjRiaXQgc3lzdGVtcworICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoImJ1ZmZlcm92ZXJmbG93dS5saWIiLCAiIikKKyAgICAgICAgICAgICAgICBmb3V0LndyaXRlKGxpbmUpCisgICAgb3MudW5saW5rKG0zMikKKworZGVmIGNyZWF0ZV9hc21zKG1ha2VmaWxlKToKKyAgICAjY3JlYXRlIGEgY3VzdG9tIG1ha2VmaWxlIG91dCBvZiB0aGUgcHJvdmlkZWQgb25lCisgICAgYXNtX21ha2VmaWxlID0gb3MucGF0aC5zcGxpdGV4dChtYWtlZmlsZSlbMF0gKyAnLmFzbS5tYWsnCisgICAgd2l0aCBvcGVuKG1ha2VmaWxlKSBhcyBmaW46CisgICAgICAgIHdpdGggb3Blbihhc21fbWFrZWZpbGUsICd3JykgYXMgZm91dDoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGZpbjoKKyAgICAgICAgICAgICAgICAjIEtlZXAgZXZlcnl0aGluZyB1cCB0byB0aGUgaW5zdGFsbCB0YXJnZXQgKGl0J3MgY29udmVuaWVudCkKKyAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ2luc3RhbGw6IGFsbCcpOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGZvdXQud3JpdGUobGluZSkKKyAgICAgICAgICAgIGFzbXMgPSBbXQorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZmluOgorICAgICAgICAgICAgICAgIGlmICcuYXNtJyBpbiBsaW5lIGFuZCBsaW5lLnN0cmlwKCkuZW5kc3dpdGgoJy5wbCcpOgorICAgICAgICAgICAgICAgICAgICBhc21zLmFwcGVuZChsaW5lLnNwbGl0KCc6JylbMF0pCisgICAgICAgICAgICAgICAgICAgIHdoaWxlIGxpbmUuc3RyaXAoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvdXQud3JpdGUobGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBuZXh0KGZpbikKKyAgICAgICAgICAgICAgICAgICAgZm91dC53cml0ZSgnXG4nKQorCisgICAgICAgICAgICBmb3V0LndyaXRlKCdhc21zOiAkKFRNUF9EKSAnKQorICAgICAgICAgICAgZm91dC53cml0ZSgnICcuam9pbihhc21zKSkKKyAgICAgICAgICAgIGZvdXQud3JpdGUoJ1xuJykKKworICAgIG9zLnN5c3RlbSgnbm1ha2UgL2Yge30gUEVSTD1wZXJsIGFzbXMnLmZvcm1hdChhc21fbWFrZWZpbGUpKQorICAgIG9zLnVubGluayhhc21fbWFrZWZpbGUpCisKKworCitkZWYgZml4X21ha2VmaWxlKG1ha2VmaWxlKToKKyAgICAiIiJGaXggc29tZSBzdHVmZiBpbiBhbGwgbWFrZWZpbGVzCisgICAgIiIiCisgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG1ha2VmaWxlKToKKyAgICAgICAgcmV0dXJuCisgICAgY29weV9pZl9kaWZmZXJlbnQgPSByJyQoUEVSTCkgJChTUkNfRClcdXRpbFxjb3B5LWlmLWRpZmZlcmVudC5wbCcKKyAgICB3aXRoIG9wZW4obWFrZWZpbGUpIGFzIGZpbjoKKyAgICAgICAgbGluZXMgPSBmaW4ucmVhZGxpbmVzKCkKKyAgICB3aXRoIG9wZW4obWFrZWZpbGUsICd3JykgYXMgZm91dDoKKyAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIlBFUkw9Iik6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiQ1A9Iik6CisgICAgICAgICAgICAgICAgbGluZSA9ICJDUD1jb3B5XG4iCisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIk1LRElSPSIpOgorICAgICAgICAgICAgICAgIGxpbmUgPSAiTUtESVI9bWtkaXJcbiIKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiQ0ZMQUc9Iik6CisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgICAgIGZvciBhbGdvIGluICgiUkM1IiwgIk1EQzIiLCAiSURFQSIpOgorICAgICAgICAgICAgICAgICAgICBub2FsZ28gPSAiIC1ET1BFTlNTTF9OT18lcyIgJSBhbGdvCisgICAgICAgICAgICAgICAgICAgIGlmIG5vYWxnbyBub3QgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lICsgbm9hbGdvCisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUgKyAnXG4nCisgICAgICAgICAgICBpZiBjb3B5X2lmX2RpZmZlcmVudCBpbiBsaW5lOgorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoY29weV9pZl9kaWZmZXJlbnQsICdjb3B5IC9ZJykKKyAgICAgICAgICAgIGZvdXQud3JpdGUobGluZSkKKworZGVmIHJ1bl9jb25maWd1cmUoY29uZmlndXJlLCBkb19zY3JpcHQpOgorICAgIHByaW50KCJwZXJsIENvbmZpZ3VyZSAiK2NvbmZpZ3VyZSsiIG5vLWlkZWEgbm8tbWRjMiIpCisgICAgb3Muc3lzdGVtKCJwZXJsIENvbmZpZ3VyZSAiK2NvbmZpZ3VyZSsiIG5vLWlkZWEgbm8tbWRjMiIpCisgICAgcHJpbnQoZG9fc2NyaXB0KQorICAgIG9zLnN5c3RlbShkb19zY3JpcHQpCisKK2RlZiBjbXAoZjEsIGYyKToKKyAgICBidWZzaXplID0gMTAyNCAqIDgKKyAgICB3aXRoIG9wZW4oZjEsICdyYicpIGFzIGZwMSwgb3BlbihmMiwgJ3JiJykgYXMgZnAyOgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgYjEgPSBmcDEucmVhZChidWZzaXplKQorICAgICAgICAgICAgYjIgPSBmcDIucmVhZChidWZzaXplKQorICAgICAgICAgICAgaWYgYjEgIT0gYjI6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBpZiBub3QgYjE6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworZGVmIGNvcHkoc3JjLCBkc3QpOgorICAgIGlmIG9zLnBhdGguaXNmaWxlKGRzdCkgYW5kIGNtcChzcmMsIGRzdCk6CisgICAgICAgIHJldHVybgorICAgIHNodXRpbC5jb3B5KHNyYywgZHN0KQorCitkZWYgcHJlcChhcmNoKToKKyAgICBpZiBhcmNoID09ICJ4ODYiOgorICAgICAgICBjb25maWd1cmUgPSAiVkMtV0lOMzIiCisgICAgICAgIGRvX3NjcmlwdCA9ICJtc1xcZG9fbmFzbSIKKyAgICAgICAgbWFrZWZpbGU9Im1zXFxudC5tYWsiCisgICAgICAgIG0zMiA9IG1ha2VmaWxlCisgICAgICAgIGRpcnN1ZmZpeCA9ICIzMiIKKyAgICBlbGlmIGFyY2ggPT0gImFtZDY0IjoKKyAgICAgICAgY29uZmlndXJlID0gIlZDLVdJTjY0QSIKKyAgICAgICAgZG9fc2NyaXB0ID0gIm1zXFxkb193aW42NGEiCisgICAgICAgIG1ha2VmaWxlID0gIm1zXFxudDY0Lm1hayIKKyAgICAgICAgbTMyID0gbWFrZWZpbGUucmVwbGFjZSgnNjQnLCAnJykKKyAgICAgICAgZGlyc3VmZml4ID0gIjY0IgorICAgICAgICAjb3MuZW52aXJvblsiVlNFWFRDT01QX1VTRUNMIl0gPSAiTVNfT1BURVJPTiIKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbnJlY29nbml6ZWQgcGxhdGZvcm06ICVzJyAlIGFyY2gpCisKKyAgICAjIHJlYnVpbGQgbWFrZWZpbGUgd2hlbiB3ZSBkbyB0aGUgcm9sZSBvdmVyIGZyb20gMzIgdG8gNjQgYnVpbGQKKyAgICBpZiBhcmNoID09ICJhbWQ2NCIgYW5kIG9zLnBhdGguaXNmaWxlKG0zMikgYW5kIG5vdCBvcy5wYXRoLmlzZmlsZShtYWtlZmlsZSk6CisgICAgICAgIG9zLnVubGluayhtMzIpCisKKyAgICAjIElmIHRoZSBzc2wgbWFrZWZpbGVzIGRvIG5vdCBleGlzdCwgd2UgaW52b2tlIFBlcmwgdG8gZ2VuZXJhdGUgdGhlbS4KKyAgICAjIER1ZSB0byBhIGJ1ZyBpbiB0aGlzIHNjcmlwdCwgdGhlIG1ha2VmaWxlIHNvbWV0aW1lcyBlbmRlZCB1cCBlbXB0eQorICAgICMgRm9yY2UgYSByZWdlbmVyYXRpb24gaWYgaXQgaXMuCisgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG1ha2VmaWxlKSBvciBvcy5wYXRoLmdldHNpemUobWFrZWZpbGUpPT0wOgorICAgICAgICBwcmludCgiQ3JlYXRpbmcgdGhlIG1ha2VmaWxlcy4uLiIpCisgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgICAgICBydW5fY29uZmlndXJlKGNvbmZpZ3VyZSwgZG9fc2NyaXB0KQorCisgICAgICAgIGlmIGFyY2ggPT0gImFtZDY0IjoKKyAgICAgICAgICAgIGNyZWF0ZV9tYWtlZmlsZTY0KG1ha2VmaWxlLCBtMzIpCisgICAgICAgIGZpeF9tYWtlZmlsZShtYWtlZmlsZSkKKyAgICAgICAgY29weShyImNyeXB0b1xidWlsZGluZi5oIiwgciJjcnlwdG9cYnVpbGRpbmZfJXMuaCIgJSBhcmNoKQorICAgICAgICBjb3B5KHIiY3J5cHRvXG9wZW5zc2xjb25mLmgiLCByImNyeXB0b1xvcGVuc3NsY29uZl8lcy5oIiAlIGFyY2gpCisgICAgZWxzZToKKyAgICAgICAgcHJpbnQobWFrZWZpbGUsICdhbHJlYWR5IGV4aXN0cyEnKQorCisgICAgcHJpbnQoJ2NyZWF0aW5nIGFzbXMuLi4nKQorICAgIGNyZWF0ZV9hc21zKG1ha2VmaWxlKQorCitkZWYgbWFpbigpOgorICAgIGlmIGxlbihzeXMuYXJndikgPT0gMToKKyAgICAgICAgcHJpbnQoIk5vdCBlbm91Z2ggYXJndW1lbnRzOiBkaXJlY3RvcnkgY29udGFpbmluZyBPcGVuU1NMIiwKKyAgICAgICAgICAgICAgInNvdXJjZXMgbXVzdCBiZSBzdXBwbGllZCIpCisgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICBpZiBsZW4oc3lzLmFyZ3YpID4gMjoKKyAgICAgICAgcHJpbnQoIlRvbyBtYW55IGFyZ3VtZW50cyBzdXBwbGllZCwgYWxsIHdlIG5lZWQgaXMgdGhlIGRpcmVjdG9yeSIsCisgICAgICAgICAgICAgICJjb250YWluaW5nIE9wZW5TU0wgc291cmNlcyIpCisgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICBzc2xfZGlyID0gc3lzLmFyZ3ZbMV0KKworICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHNzbF9kaXIpOgorICAgICAgICBwcmludChzc2xfZGlyLCAiaXMgbm90IGFuIGV4aXN0aW5nIGRpcmVjdG9yeSEiKQorICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgIyBwZXJsIHNob3VsZCBiZSBvbiB0aGUgcGF0aCwgYnV0IHdlIGFsc28gbG9vayBpbiAiXHBlcmwiIGFuZCAiYzpcXHBlcmwiCisgICAgIyBhcyAid2VsbCBrbm93biIgbG9jYXRpb25zCisgICAgcGVybHMgPSBmaW5kX2FsbF9vbl9wYXRoKCJwZXJsLmV4ZSIsIFtyIlxwZXJsXGJpbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIkM6XHBlcmxcYmluIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiXHBlcmw2NFxiaW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJDOlxwZXJsNjRcYmluIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICBwZXJsID0gZmluZF93b3JraW5nX3BlcmwocGVybHMpCisgICAgaWYgcGVybDoKKyAgICAgICAgcHJpbnQoIkZvdW5kIGEgd29ya2luZyBwZXJsIGF0ICclcyciICUgKHBlcmwsKSkKKyAgICBlbHNlOgorICAgICAgICBzeXMuZXhpdCgxKQorICAgIHN5cy5zdGRvdXQuZmx1c2goKQorCisgICAgIyBQdXQgb3VyIHdvcmtpbmcgUGVybCBhdCB0aGUgZnJvbnQgb2Ygb3VyIHBhdGgKKyAgICBvcy5lbnZpcm9uWyJQQVRIIl0gPSBvcy5wYXRoLmRpcm5hbWUocGVybCkgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGhzZXAgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmVudmlyb25bIlBBVEgiXQorCisgICAgb2xkX2N3ZCA9IG9zLmdldGN3ZCgpCisgICAgdHJ5OgorICAgICAgICBvcy5jaGRpcihzc2xfZGlyKQorICAgICAgICBmb3IgYXJjaCBpbiBbJ2FtZDY0JywgJ3g4NiddOgorICAgICAgICAgICAgcHJlcChhcmNoKQorICAgIGZpbmFsbHk6CisgICAgICAgIG9zLmNoZGlyKG9sZF9jd2QpCisKK2lmIF9fbmFtZV9fPT0nX19tYWluX18nOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weWQucHJvcHMgYi9QQ2J1aWxkL3B5ZC5wcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY5OTY2ZS4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL3B5ZC5wcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPEdlbmVyYXRlTWFuaWZlc3Q+ZmFsc2U8L0dlbmVyYXRlTWFuaWZlc3Q+Ci0gICAgPEVtYmVkTWFuaWZlc3Q+ZmFsc2U8L0VtYmVkTWFuaWZlc3Q+Ci0gICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QeV9CVUlMRF9DT1JFX01PRFVMRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgPC9MaW5rPgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUG9zdEJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5ZF9kLnByb3BzIGIvUENidWlsZC9weWRfZC5wcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjAyMzI4OC4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL3B5ZF9kLnByb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KLSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8R2VuZXJhdGVNYW5pZmVzdD5mYWxzZTwvR2VuZXJhdGVNYW5pZmVzdD4KLSAgICA8RW1iZWRNYW5pZmVzdD5mYWxzZTwvRW1iZWRNYW5pZmVzdD4KLSAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KLSAgICA8VGFyZ2V0TmFtZT4kKFByb2plY3ROYW1lKV9kPC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+RGVmYXVsdDwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UHlfQlVJTERfQ09SRV9NT0RVTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbmsgLz4KLSAgICA8UG9zdEJ1aWxkRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICA8L1Bvc3RCdWlsZEV2ZW50PgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtR3JvdXAgLz4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvaiBiL1BDYnVpbGQvcHlleHBhdC52Y3hwcm9qCmluZGV4IDk3NGZkM2QuLjRlNzYyMWVjIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvagorKysgYi9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvagpAQCAtMzUsMTg2ICszNSwzMyBAQAogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgIDwvSXRlbUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgogICAgIDxQcm9qZWN0R3VpZD57RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfTwvUHJvamVjdEd1aWQ+CiAgICAgPFJvb3ROYW1lc3BhY2U+cHlleHBhdDwvUm9vdE5hbWVzcGFjZT4KLSAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgotICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQeVNvdXJjZVBhdGgpTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uXC4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCIgLz4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlsYXVuY2hlci52Y3hwcm9qIGIvUENidWlsZC9weWxhdW5jaGVyLnZjeHByb2oKaW5kZXggOWZhOTNkZC4uNmEyMTc4NSAxMDA2NDQKLS0tIGEvUENidWlsZC9weWxhdW5jaGVyLnZjeHByb2oKKysrIGIvUENidWlsZC9weWxhdW5jaGVyLnZjeHByb2oKQEAgLTM3LDI1NiArMzcsMzMgQEAKICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgogICAgIDxQcm9qZWN0R3VpZD57N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fTwvUHJvamVjdEd1aWQ+CiAgICAgPFJvb3ROYW1lc3BhY2U+cHlsYXVuY2hlcjwvUm9vdE5hbWVzcGFjZT4KKyAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KKyAgICA8TWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PkNsQ29tcGlsZTwvTWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8TWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PkNsQ29tcGlsZTwvTWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KLSAgICA8VGFyZ2V0TmFtZT5weV9kPC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPFRhcmdldE5hbWU+cHlfZDwvVGFyZ2V0TmFtZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPFRhcmdldE5hbWU+cHk8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPFRhcmdldE5hbWU+cHk8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgotICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+Ci0gICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+Ci0gICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+Ci0gICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTtOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8RW5hYmxlQ09NREFURm9sZGluZz5mYWxzZTwvRW5hYmxlQ09NREFURm9sZGluZz4KLSAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgotICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTtOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8RW5hYmxlQ09NREFURm9sZGluZz5mYWxzZTwvRW5hYmxlQ09NREFURm9sZGluZz4KLSAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgotICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+Ci0gICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgIDwvTGluaz4KQEAgLTMwMCwxMSArNzcsNiBAQAogICA8SXRlbUdyb3VwPgogICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHlsYXVuY2hlci5yYyIgLz4KICAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ibWFrZV92ZXJzaW9uaW5mby52Y3hwcm9qIj4KLSAgICAgIDxQcm9qZWN0PntmMGUwNTQxZS1mMTdkLTQzMGItOTdjNC05M2FkZjBkZDI4NGV9PC9Qcm9qZWN0PgotICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KLSAgPC9JdGVtR3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcyBiL1BDYnVpbGQvcHlwcm9qZWN0LnByb3BzCmluZGV4IDAzNDEzNjguLjI1Y2RmY2MgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHlwcm9qZWN0LnByb3BzCisrKyBiL1BDYnVpbGQvcHlwcm9qZWN0LnByb3BzCkBAIC0xLDQ4ICsxLDU0IEBACiDvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J1dpbjMyJyI+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIiBUcmVhdEFzTG9jYWxQcm9wZXJ0eT0iUHlfSW50RGlyIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpPC9PdXREaXI+Ci0gICAgPEludERpcj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS10ZW1wLSQoQ29uZmlndXJhdGlvbilcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbD5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICA8L1Byb3BlcnR5R3JvdXA+ICAKLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknPT0neDY0JyI+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxfUHJvcGVydHlTaGVldERpc3BsYXlOYW1lPmFtZDY0PC9fUHJvcGVydHlTaGVldERpc3BsYXlOYW1lPgotICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcilhbWQ2NFw8L091dERpcj4KLSAgICA8SW50RGlyPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtJChDb25maWd1cmF0aW9uKVwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VmlzdWFsU3R1ZGlvVmVyc2lvbiBDb25kaXRpb249IickKFZpc3VhbFN0dWRpb1ZlcnNpb24pJyA9PSAnJyI+MTAuMDwvVmlzdWFsU3R1ZGlvVmVyc2lvbj4KKyAgICA8T3V0RGlyPiQoQnVpbGRQYXRoKTwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChQeV9PdXREaXIpJyAhPSAnJyI+JChQeV9PdXREaXIpPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IiFIYXNUcmFpbGluZ1NsYXNoKCQoT3V0RGlyKSkiPiQoT3V0RGlyKVw8L091dERpcj4KKyAgICA8UHlfSW50RGlyIENvbmRpdGlvbj0iJyQoUHlfSW50RGlyKScgPT0gJyciPiQoU29sdXRpb25EaXIpb2JqXDwvUHlfSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSIhSGFzVHJhaWxpbmdTbGFzaCgkKEludERpcikpIj4kKEludERpcilcPC9JbnREaXI+CisgICAgPEludERpcj4kKFB5X0ludERpcilcJChBcmNoTmFtZSlfJChDb25maWd1cmF0aW9uKVwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnUEdJbnN0cnVtZW50JyBvciAkKENvbmZpZ3VyYXRpb24pID09ICdQR1VwZGF0ZSciPiQoUHlfSW50RGlyKVwkKEFyY2hOYW1lKV9QR09cJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChUYXJnZXROYW1lKScgPT0gJyciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lPiQoVGFyZ2V0TmFtZSkkKFB5RGVidWdFeHQpPC9UYXJnZXROYW1lPgorICAgIDxHZW5lcmF0ZU1hbmlmZXN0PmZhbHNlPC9HZW5lcmF0ZU1hbmlmZXN0PgorICAgIDxFbWJlZE1hbmlmZXN0PmZhbHNlPC9FbWJlZE1hbmlmZXN0PgorICAgIDxTdXBwb3J0UEdPIENvbmRpdGlvbj0iJyQoU3VwcG9ydFBHTyknID09ICcnIj50cnVlPC9TdXBwb3J0UEdPPgorICAgIDxTdXBwb3J0U2lnbmluZyBDb25kaXRpb249IickKFN1cHBvcnRTaWduaW5nKScgPT0gJyciPnRydWU8L1N1cHBvcnRTaWduaW5nPgorICAgIDxTdXBwb3J0U2lnbmluZyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyA9PSAnRGVidWcnIj5mYWxzZTwvU3VwcG9ydFNpZ25pbmc+CisgICAgPFN1cHBvcnRTaWduaW5nIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvblR5cGUpJyA9PSAnU3RhdGljTGlicmFyeSciPmZhbHNlPC9TdXBwb3J0U2lnbmluZz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyI+Ci0gICAgPFB5RGxsTmFtZT5weXRob24zNCQoUHlEZWJ1Z0V4dCk8L1B5RGxsTmFtZT4KLSAgICA8UHl0aG9uRXhlPiQoT3V0RGlyKXB5dGhvbiQoUHlEZWJ1Z0V4dCkuZXhlPC9QeXRob25FeGU+Ci0gICAgPEtpbGxQeXRob25FeGU+JChPdXREaXIpa2lsbF9weXRob24kKFB5RGVidWdFeHQpLmV4ZTwvS2lsbFB5dGhvbkV4ZT4KLSAgICA8ZXh0ZXJuYWxzRGlyPi4uXGV4dGVybmFsczwvZXh0ZXJuYWxzRGlyPgotICAgIDxzcWxpdGUzRGlyPiQoZXh0ZXJuYWxzRGlyKVxzcWxpdGUtMy44LjExLjA8L3NxbGl0ZTNEaXI+Ci0gICAgPGJ6MkRpcj4kKGV4dGVybmFsc0RpcilcYnppcDItMS4wLjY8L2J6MkRpcj4KLSAgICA8bHptYURpcj4kKGV4dGVybmFsc0RpcilceHotNS4wLjU8L2x6bWFEaXI+Ci0gICAgPG9wZW5zc2xEaXI+JChleHRlcm5hbHNEaXIpXG9wZW5zc2wtMS4wLjJkPC9vcGVuc3NsRGlyPgotICAgIDx0Y2x0a0Rpcj4kKGV4dGVybmFsc0RpcilcdGNsdGs8L3RjbHRrRGlyPgotICAgIDx0Y2x0azY0RGlyPiQoZXh0ZXJuYWxzRGlyKVx0Y2x0azY0PC90Y2x0azY0RGlyPgotICAgIDx0Y2x0a0xpYj4kKHRjbHRrRGlyKVxsaWJcdGNsODZ0LmxpYjskKHRjbHRrRGlyKVxsaWJcdGs4NnQubGliPC90Y2x0a0xpYj4KLSAgICA8dGNsdGtMaWJEZWJ1Zz4kKHRjbHRrRGlyKVxsaWJcdGNsODZ0Zy5saWI7JCh0Y2x0a0RpcilcbGliXHRrODZ0Zy5saWI8L3RjbHRrTGliRGVidWc+Ci0gICAgPHRjbHRrNjRMaWI+JCh0Y2x0azY0RGlyKVxsaWJcdGNsODZ0LmxpYjskKHRjbHRrNjREaXIpXGxpYlx0azg2dC5saWI8L3RjbHRrNjRMaWI+Ci0gICAgPHRjbHRrNjRMaWJEZWJ1Zz4kKHRjbHRrNjREaXIpXGxpYlx0Y2w4NnRnLmxpYjskKHRjbHRrNjREaXIpXGxpYlx0azg2dGcubGliPC90Y2x0azY0TGliRGVidWc+CisKKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9EZWJ1Z1ByZXByb2Nlc3NvckRlZmluaXRpb24+TkRFQlVHOzwvX0RlYnVnUHJlcHJvY2Vzc29yRGVmaW5pdGlvbj4KKyAgICA8X0RlYnVnUHJlcHJvY2Vzc29yRGVmaW5pdGlvbiBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ0RlYnVnJyI+X0RFQlVHOzwvX0RlYnVnUHJlcHJvY2Vzc29yRGVmaW5pdGlvbj4KKyAgICA8X1BsYXRmb3JtUHJlcHJvY2Vzc29yRGVmaW5pdGlvbj5fV0lOMzI7PC9fUGxhdGZvcm1QcmVwcm9jZXNzb3JEZWZpbml0aW9uPgorICAgIDxfUGxhdGZvcm1QcmVwcm9jZXNzb3JEZWZpbml0aW9uIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPl9XSU42NDtfTV9YNjQ7PC9fUGxhdGZvcm1QcmVwcm9jZXNzb3JEZWZpbml0aW9uPgorICAgIDxfUHlkUHJlcHJvY2Vzc29yRGVmaW5pdGlvbiBDb25kaXRpb249IiQoVGFyZ2V0RXh0KSA9PSAnLnB5ZCciPlB5X0JVSUxEX0NPUkVfTU9EVUxFOzwvX1B5ZFByZXByb2Nlc3NvckRlZmluaXRpb24+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHlTb3VyY2VQYXRoKUluY2x1ZGU7JChQeVNvdXJjZVBhdGgpUEM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjskKF9QbGF0Zm9ybVByZXByb2Nlc3NvckRlZmluaXRpb24pJChfRGVidWdQcmVwcm9jZXNzb3JEZWZpbml0aW9uKSQoX1B5ZFByZXByb2Nlc3NvckRlZmluaXRpb24pJShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgCiAgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KICAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTsgLi5cUEM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxFeGNlcHRpb25IYW5kbGluZz4KLSAgICAgIDwvRXhjZXB0aW9uSGFuZGxpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RXhjZXB0aW9uSGFuZGxpbmc+PC9FeGNlcHRpb25IYW5kbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KICAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPgorICAgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgICAgICA8RW5hYmxlRW5oYW5jZWRJbnN0cnVjdGlvblNldCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSdXaW4zMiciPk5vRXh0ZW5zaW9uczwvRW5hYmxlRW5oYW5jZWRJbnN0cnVjdGlvblNldD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnRGVidWcnIj4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+ZmFsc2U8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+JChPdXREaXIpOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CkBAIC01MSw1NCArNTcsMTA1IEBACiAgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KICAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+dHJ1ZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPgogICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPnRydWU8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPgorICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPkxJQkM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPFRhcmdldE1hY2hpbmUgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICd4NjQnIj5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPFByb2ZpbGVHdWlkZWREYXRhYmFzZSBDb25kaXRpb249IiQoU3VwcG9ydFBHTykiPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkucGdkPC9Qcm9maWxlR3VpZGVkRGF0YWJhc2U+CisgICAgICA8TGlua1RpbWVDb2RlR2VuZXJhdGlvbiBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ1JlbGVhc2UnIj5Vc2VMaW5rVGltZUNvZGVHZW5lcmF0aW9uPC9MaW5rVGltZUNvZGVHZW5lcmF0aW9uPgorICAgICAgPExpbmtUaW1lQ29kZUdlbmVyYXRpb24gQ29uZGl0aW9uPSIkKFN1cHBvcnRQR08pIGFuZCAkKENvbmZpZ3VyYXRpb24pID09ICdQR0luc3RydW1lbnQnIj5QR0luc3RydW1lbnQ8L0xpbmtUaW1lQ29kZUdlbmVyYXRpb24+CisgICAgICA8TGlua1RpbWVDb2RlR2VuZXJhdGlvbiBDb25kaXRpb249IiQoU3VwcG9ydFBHTykgYW5kICQoQ29uZmlndXJhdGlvbikgPT0gJ1BHVXBkYXRlJyI+UEdVcGRhdGU8L0xpbmtUaW1lQ29kZUdlbmVyYXRpb24+CiAgICAgPC9MaW5rPgorICAgIDxMaWI+CisgICAgICA8TGlua1RpbWVDb2RlR2VuZXJhdGlvbiBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ1JlbGVhc2UnIj50cnVlPC9MaW5rVGltZUNvZGVHZW5lcmF0aW9uPgorICAgICAgPExpbmtUaW1lQ29kZUdlbmVyYXRpb24gQ29uZGl0aW9uPSIkKFN1cHBvcnRQR08pIGFuZCAkKENvbmZpZ3VyYXRpb24pID09ICdQR0luc3RydW1lbnQnIj50cnVlPC9MaW5rVGltZUNvZGVHZW5lcmF0aW9uPgorICAgICAgPExpbmtUaW1lQ29kZUdlbmVyYXRpb24gQ29uZGl0aW9uPSIkKFN1cHBvcnRQR08pIGFuZCAkKENvbmZpZ3VyYXRpb24pID09ICdQR1VwZGF0ZSciPnRydWU8L0xpbmtUaW1lQ29kZUdlbmVyYXRpb24+CisgICAgPC9MaWI+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFBDOy4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHlTb3VyY2VQYXRoKVBDOyQoUHlTb3VyY2VQYXRoKUluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4kKF9EZWJ1Z1ByZXByb2Nlc3NvckRlZmluaXRpb24pJShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPiQoX0RlYnVnUHJlcHJvY2Vzc29yRGVmaW5pdGlvbiklKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPgorICAgICAgPFRhcmdldEVudmlyb25tZW50PldpbjMyPC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudCBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJ3g2NCciPlg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKXdpbmluc3QudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IlB5RGxsTmFtZSI+Ci0gICAgICA8VmFsdWU+JChQeURsbE5hbWUpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iUHl0aG9uRXhlIj4KLSAgICAgIDxWYWx1ZT4kKFB5dGhvbkV4ZSk8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJLaWxsUHl0aG9uRXhlIj4KLSAgICAgIDxWYWx1ZT4kKEtpbGxQeXRob25FeGUpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iZXh0ZXJuYWxzRGlyIj4KLSAgICAgIDxWYWx1ZT4kKGV4dGVybmFsc0Rpcik8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJzcWxpdGUzRGlyIj4KLSAgICAgIDxWYWx1ZT4kKHNxbGl0ZTNEaXIpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iYnoyRGlyIj4KLSAgICAgIDxWYWx1ZT4kKGJ6MkRpcik8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJsem1hRGlyIj4KLSAgICAgIDxWYWx1ZT4kKGx6bWFEaXIpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0ib3BlbnNzbERpciI+Ci0gICAgICA8VmFsdWU+JChvcGVuc3NsRGlyKTwvVmFsdWU+Ci0gICAgPC9CdWlsZE1hY3JvPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9InRjbHRrRGlyIj4KLSAgICAgIDxWYWx1ZT4kKHRjbHRrRGlyKTwvVmFsdWU+Ci0gICAgPC9CdWlsZE1hY3JvPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9InRjbHRrNjREaXIiPgotICAgICAgPFZhbHVlPiQodGNsdGs2NERpcik8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJ0Y2x0a0xpYiI+Ci0gICAgICA8VmFsdWU+JCh0Y2x0a0xpYik8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJ0Y2x0a0xpYkRlYnVnIj4KLSAgICAgIDxWYWx1ZT4kKHRjbHRrTGliRGVidWcpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0idGNsdGs2NExpYiI+Ci0gICAgICA8VmFsdWU+JCh0Y2x0azY0TGliKTwvVmFsdWU+Ci0gICAgPC9CdWlsZE1hY3JvPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9InRjbHRrNjRMaWJEZWJ1ZyI+Ci0gICAgICA8VmFsdWU+JCh0Y2x0azY0TGliRGVidWcpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgorCisgIDxUYXJnZXQgTmFtZT0iR2VuZXJhdGVQeXRob25OdFJjSCIKKyAgICAgICAgICBCZWZvcmVUYXJnZXRzPSIkKE1ha2VWZXJzaW9uSW5mb0JlZm9yZVRhcmdldCkiCisgICAgICAgICAgSW5wdXRzPSIkKFB5U291cmNlUGF0aClJbmNsdWRlXHBhdGNobGV2ZWwuaCIKKyAgICAgICAgICBPdXRwdXRzPSIkKFB5U291cmNlUGF0aClQQ1xweXRob25udF9yYyQoUHlEZWJ1Z0V4dCkuaCI+CisgICAgPFdyaXRlTGluZXNUb0ZpbGUgRmlsZT0iJChQeVNvdXJjZVBhdGgpUENccHl0aG9ubnRfcmMkKFB5RGVidWdFeHQpLmgiIE92ZXJ3cml0ZT0idHJ1ZSIgRW5jb2Rpbmc9ImFzY2lpIgorICAgICAgICAgICAgICAgICAgICAgIExpbmVzPScvKiBUaGlzIGZpbGUgY3JlYXRlZCBieSBweXRob24ucHJvcHMgL3Q6R2VuZXJhdGVQeXRob25OdFJjSCAqLworI2RlZmluZSBGSUVMRDMgJChGaWVsZDNWYWx1ZSkKKyNkZWZpbmUgTVNfRExMX0lEICIkKFN5c1dpblZlcikiCisjZGVmaW5lIFBZVEhPTl9ETExfTkFNRSAiJChQeURsbE5hbWUpLmRsbCIKKycgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RmlsZVdyaXRlcyBJbmNsdWRlPSIkKFB5U291cmNlUGF0aClQQ1xweXRob25udF9yYyQoUHlEZWJ1Z0V4dCkuaCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgPC9UYXJnZXQ+CisKKyAgPFVzaW5nVGFzayBUYXNrTmFtZT0iS2lsbFB5dGhvbiIgVGFza0ZhY3Rvcnk9IkNvZGVUYXNrRmFjdG9yeSIgQXNzZW1ibHlGaWxlPSIkKE1TQnVpbGRUb29sc1BhdGgpXE1pY3Jvc29mdC5CdWlsZC5UYXNrcy52NC4wLmRsbCI+CisgICAgPFBhcmFtZXRlckdyb3VwPgorICAgICAgPEZpbGVOYW1lIFJlcXVpcmVkPSJ0cnVlIiAvPgorICAgIDwvUGFyYW1ldGVyR3JvdXA+CisgICAgPFRhc2s+CisgICAgICA8Q29kZSBUeXBlPSJGcmFnbWVudCIgTGFuZ3VhZ2U9ImNzIj4KKzwhW0NEQVRBWworc3RyaW5nIGZ1bGxQYXRoID0gU3lzdGVtLklPLlBhdGguR2V0RnVsbFBhdGgoRmlsZU5hbWUpOworTG9nLkxvZ01lc3NhZ2UoIkxvb2tpbmcgZm9yICIgKyBmdWxsUGF0aCwgTWVzc2FnZUltcG9ydGFuY2UuTm9ybWFsKTsKK2ZvcmVhY2ggKFN5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzIHAgaW4gU3lzdGVtLkRpYWdub3N0aWNzLlByb2Nlc3MuR2V0UHJvY2Vzc2VzKCkpIHsKKyAgICB0cnkgeworICAgICAgICBMb2cuTG9nTWVzc2FnZSgiRm91bmQgcnVubmluZyBwcm9jZXNzOiAiICsgcC5NYWluTW9kdWxlLkZpbGVOYW1lLCBNZXNzYWdlSW1wb3J0YW5jZS5Mb3cpOworICAgICAgICBpZiAoZnVsbFBhdGguRXF1YWxzKFN5c3RlbS5JTy5QYXRoLkdldEZ1bGxQYXRoKHAuTWFpbk1vZHVsZS5GaWxlTmFtZSksIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbElnbm9yZUNhc2UpKSB7CisgICAgICAgICAgICBMb2cuTG9nTWVzc2FnZSgiVGVybWluYXRpbmcgIiArIHAuTWFpbk1vZHVsZS5GaWxlTmFtZSwgTWVzc2FnZUltcG9ydGFuY2UuSGlnaCk7CisgICAgICAgICAgICBwLktpbGwoKTsKKyAgICAgICAgfQorICAgIH0gY2F0Y2ggeworICAgIH0KK30KK11dPgorICAgICAgPC9Db2RlPgorICAgIDwvVGFzaz4KKyAgPC9Vc2luZ1Rhc2s+CisgIAorICA8VGFyZ2V0IE5hbWU9IktpbGxQeXRob24iIEJlZm9yZVRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCIgQ29uZGl0aW9uPSInJChLaWxsUHl0aG9uKScgPT0gJ3RydWUnIj4KKyAgICA8TWVzc2FnZSBUZXh0PSJLaWxsaW5nIGFueSBydW5uaW5nIHB5dGhvbiQoUHlEZWJ1Z0V4dCkkKFB5VGVzdEV4dCkuZXhlIGluc3RhbmNlcy4uLiIgSW1wb3J0YW5jZT0iaGlnaCIgLz4KKyAgICA8S2lsbFB5dGhvbiBGaWxlTmFtZT0iJChPdXREaXIpcHl0aG9uJChQeURlYnVnRXh0KSQoUHlUZXN0RXh0KS5leGUiIC8+CisgIDwvVGFyZ2V0PgorICAKKyAgPCEtLQorICBBIGRlZmF1bHQgdGFyZ2V0IHRvIGhhbmRsZSBtc2J1aWxkIHBjYnVpbGQucHJvaiAvdDpDbGVhbkFsbC4KKyAgCisgIFNvbWUgZXh0ZXJuYWxzIHByb2plY3RzIGRvbid0IHJlc3BvbmQgdG8gL3Q6Q2xlYW4sIHNvIHdlIGludm9rZQorICBDbGVhbkFsbCBvbiB0aGVtIHdoZW4gd2UgcmVhbGx5IHdhbnQgdG8gY2xlYW4gdXAuCisgIC0tPgorICA8VGFyZ2V0IE5hbWU9IkNsZWFuQWxsIiBEZXBlbmRzT25UYXJnZXRzPSJDbGVhbiI+CisgICAgPE1TQnVpbGQgUHJvamVjdHM9IkAoUHJvamVjdFJlZmVyZW5jZS0+JyUoRnVsbFBhdGgpJykiCisgICAgICAgICAgICAgUHJvcGVydGllcz0iQ29uZmlndXJhdGlvbj0kKENvbmZpZ3VyYXRpb24pO1BsYXRmb3JtPSQoUGxhdGZvcm0pIgorICAgICAgICAgICAgIEJ1aWxkSW5QYXJhbGxlbD0idHJ1ZSIKKyAgICAgICAgICAgICBTdG9wT25GaXJzdEZhaWx1cmU9ImZhbHNlIgorICAgICAgICAgICAgIENvbmRpdGlvbj0iRXhpc3RzKCUoRnVsbFBhdGgpKSIKKyAgICAgICAgICAgICBUYXJnZXRzPSJDbGVhbkFsbCIgLz4KKyAgPC9UYXJnZXQ+CisKKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChTaWduaW5nQ2VydGlmaWNhdGUpJyAhPSAnJyBhbmQgJChTdXBwb3J0U2lnbmluZykiPgorICAgIDxTaWduVG9vbFBhdGggQ29uZGl0aW9uPSInJChTaWduVG9vbFBhdGgpJyA9PSAnJyBvciAhRXhpc3RzKCQoU2lnblRvb2xQYXRoKSkiPiQocmVnaXN0cnk6SEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzIEtpdHNcSW5zdGFsbGVkIFJvb3RzQEtpdHNSb290ODEpXGJpblx4ODZcc2lnbnRvb2wuZXhlPC9TaWduVG9vbFBhdGg+CisgICAgPFNpZ25Ub29sUGF0aCBDb25kaXRpb249IiFFeGlzdHMoJChTaWduVG9vbFBhdGgpKSI+JChyZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3MgS2l0c1xJbnN0YWxsZWQgUm9vdHNAS2l0c1Jvb3QpXGJpblx4ODZcc2lnbnRvb2wuZXhlPC9TaWduVG9vbFBhdGg+CisgICAgPFNpZ25Ub29sUGF0aCBDb25kaXRpb249IiFFeGlzdHMoJChTaWduVG9vbFBhdGgpKSI+JChyZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU09GVFdBUkVcTWljcm9zb2Z0XE1pY3Jvc29mdCBTREtzXFdpbmRvd3NcdjcuMUFASW5zdGFsbGF0aW9uRm9sZGVyKVxCaW5cc2lnbnRvb2wuZXhlPC9TaWduVG9vbFBhdGg+CisgICAgPF9TaWduQ29tbWFuZCBDb25kaXRpb249IkV4aXN0cygkKFNpZ25Ub29sUGF0aCkpIj4iJChTaWduVG9vbFBhdGgpIiBzaWduIC9xIC9uICIkKFNpZ25pbmdDZXJ0aWZpY2F0ZSkiIC90IGh0dHA6Ly90aW1lc3RhbXAudmVyaXNpZ24uY29tL3NjcmlwdHMvdGltZXN0YW1wLmRsbCAvZCAiUHl0aG9uICQoUHl0aG9uVmVyc2lvbikiPC9fU2lnbkNvbW1hbmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgCisgIDxUYXJnZXQgTmFtZT0iX1NpZ25CdWlsZCIgQWZ0ZXJUYXJnZXRzPSJBZnRlckJ1aWxkIiBDb25kaXRpb249IickKFNpZ25pbmdDZXJ0aWZpY2F0ZSknICE9ICcnIGFuZCAkKFN1cHBvcnRTaWduaW5nKSI+CisgICAgPEVycm9yIFRleHQ9IlVuYWJsZSB0byBsb2NhdGUgc2lnbnRvb2wuZXhlLiBTZXQgL3A6U2lnblRvb2xQYXRoIGFuZCByZWJ1aWxkIiBDb25kaXRpb249IickKF9TaWduQ29tbWFuZCknID09ICcnIiAvPgorICAgIDxFeGVjIENvbW1hbmQ9JyQoX1NpZ25Db21tYW5kKSAiJChUYXJnZXRQYXRoKSIgfHwgJChfU2lnbkNvbW1hbmQpICIkKFRhcmdldFBhdGgpIiB8fCAkKF9TaWduQ29tbWFuZCkgIiQoVGFyZ2V0UGF0aCkiJyBDb250aW51ZU9uRXJyb3I9ImZhbHNlIiAvPgorICA8L1RhcmdldD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbi5wcm9wcyBiL1BDYnVpbGQvcHl0aG9uLnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MmYwNDEKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5dGhvbi5wcm9wcwpAQCAtMCwwICsxLDE2MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFBsYXRmb3JtIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAnJyI+V2luMzI8L1BsYXRmb3JtPgorICAgIDxDb25maWd1cmF0aW9uIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknID09ICcnIj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgIDwhLS0KKyAgICBVc2UgdGhlIGxhdGVzdCBhdmFpbGFibGUgdmVyc2lvbiBvZiBWaXN1YWwgU3R1ZGlvIHRvIGJ1aWxkLiBUbyBvdmVycmlkZQorICAgIHRoaXMgYW5kIGJ1aWxkIHdpdGggYW4gZWFybGllciB2ZXJzaW9uLCBwYXNzICIvcDpQbGF0Zm9ybVRvb2xzZXQ9djEwMCIKKyAgICAoZm9yIGV4YW1wbGUpIHdoZW4gYnVpbGRpbmcuCisgICAgLS0+CisgICAgPFBsYXRmb3JtVG9vbHNldCBDb25kaXRpb249IickKFBsYXRmb3JtVG9vbHNldCknID09ICcnIGFuZCAnJChWQ1RhcmdldHNQYXRoMTQpJyAhPSAnJyI+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQgQ29uZGl0aW9uPSInJChQbGF0Zm9ybVRvb2xzZXQpJyA9PSAnJyBhbmQgJyQoVkNUYXJnZXRzUGF0aDEyKScgIT0gJyciPnYxMjA8L1BsYXRmb3JtVG9vbHNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0IENvbmRpdGlvbj0iJyQoUGxhdGZvcm1Ub29sc2V0KScgPT0gJycgYW5kICckKFZDVGFyZ2V0c1BhdGgxMSknICE9ICcnIj52MTEwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldCBDb25kaXRpb249IickKFBsYXRmb3JtVG9vbHNldCknID09ICcnIGFuZCAnJChWQ1RhcmdldHNQYXRoMTApJyAhPSAnJyI+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICAgIAorICAgIDwhLS0KKyAgICBDb252aW5jaW5nIE1TVkMvTVNCdWlsZCB0byBwcmVmZXIgb3VyIHBsYXRmb3JtIG5hbWVzIGlzIHRvbyBkaWZmaWN1bHQsCisgICAgc28gd2UgZGVmaW5lIG91ciBvd24gY29uc3RhbnQgQXJjaE5hbWUgYW5kIHVzZSB3aGVyZXZlciB3ZSBuZWVkIGl0LgorICAgIC0tPgorICAgIDxBcmNoTmFtZSBDb25kaXRpb249IickKEFyY2hOYW1lKScgPT0gJycgYW5kICQoUGxhdGZvcm0pID09ICd4NjQnIj5hbWQ2NDwvQXJjaE5hbWU+CisgICAgPEFyY2hOYW1lIENvbmRpdGlvbj0iJyQoQXJjaE5hbWUpJyA9PSAnJyI+d2luMzI8L0FyY2hOYW1lPgorICAgIDxBcmNoTmFtZSBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ1BHSW5zdHJ1bWVudCcgb3IgJChDb25maWd1cmF0aW9uKSA9PSAnUEdVcGRhdGUnIj4kKEFyY2hOYW1lKS1wZ288L0FyY2hOYW1lPgorICAgIAorICAgIDwhLS0gUm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHJlcG9zaXRvcnkgLS0+CisgICAgPFB5U291cmNlUGF0aCBDb25kaXRpb249IickKFB5U291cmNlUGF0aCknID09ICcnIj4kKFtTeXN0ZW0uSU8uUGF0aF06OkdldEZ1bGxQYXRoKCQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KVwuLlwpKTwvUHlTb3VyY2VQYXRoPgorICAgIDxQeVNvdXJjZVBhdGggQ29uZGl0aW9uPSIhSGFzVHJhaWxpbmdTbGFzaCgkKFB5U291cmNlUGF0aCkpIj4kKFB5U291cmNlUGF0aClcPC9QeVNvdXJjZVBhdGg+CisgICAgCisgICAgPCEtLSBEaXJlY3Rvcnkgd2hlcmUgYnVpbGQgb3V0cHV0cyBhcmUgcHV0IC0tPgorICAgIDxCdWlsZFBhdGggQ29uZGl0aW9uPSInJChQeUJ1aWxkUGF0aCknID09ICcnIj4kKFB5U291cmNlUGF0aClQQ0J1aWxkXCQoQXJjaE5hbWUpXDwvQnVpbGRQYXRoPgorICAgIDxCdWlsZFBhdGggQ29uZGl0aW9uPSInJChQeUJ1aWxkUGF0aCknICE9ICcnIj4kKFB5QnVpbGRQYXRoKTwvQnVpbGRQYXRoPgorICAgIDxCdWlsZFBhdGggQ29uZGl0aW9uPSIhSGFzVHJhaWxpbmdTbGFzaCgkKEJ1aWxkUGF0aCkpIj4kKEJ1aWxkUGF0aClcPC9CdWlsZFBhdGg+CisgICAgCisgICAgPCEtLSBEaXJlY3RvcmllcyBvZiBleHRlcm5hbCBwcm9qZWN0cy4gdGNsdGsgaXMgaGFuZGxlZCBpbiB0Y2x0ay5wcm9wcyAtLT4KKyAgICA8RXh0ZXJuYWxzRGlyPiQoW1N5c3RlbS5JTy5QYXRoXTo6R2V0RnVsbFBhdGgoYCQoUHlTb3VyY2VQYXRoKWV4dGVybmFsc1xgKSk8L0V4dGVybmFsc0Rpcj4KKyAgICA8c3FsaXRlM0Rpcj4kKEV4dGVybmFsc0RpcilzcWxpdGUtMy44LjExLjBcPC9zcWxpdGUzRGlyPgorICAgIDxiejJEaXI+JChFeHRlcm5hbHNEaXIpYnppcDItMS4wLjZcPC9iejJEaXI+CisgICAgPGx6bWFEaXI+JChFeHRlcm5hbHNEaXIpeHotNS4wLjVcPC9sem1hRGlyPgorICAgIDxvcGVuc3NsRGlyPiQoRXh0ZXJuYWxzRGlyKW9wZW5zc2wtMS4wLjJkXDwvb3BlbnNzbERpcj4KKyAgICA8bmFzbURpcj4kKEV4dGVybmFsc0RpcilcbmFzbS0yLjExLjA2XDwvbmFzbURpcj4KKyAgICAKKyAgICA8IS0tIFN1ZmZpeCBmb3IgYWxsIGJpbmFyaWVzIHdoZW4gYnVpbGRpbmcgZm9yIGRlYnVnIC0tPgorICAgIDxQeURlYnVnRXh0IENvbmRpdGlvbj0iJyQoUHlEZWJ1Z0V4dCknID09ICcnIGFuZCAkKENvbmZpZ3VyYXRpb24pID09ICdEZWJ1ZyciPl9kPC9QeURlYnVnRXh0PgorICAgIAorICAgIDwhLS0gU3VmZml4IGZvciB2ZXJzaW9ucy9rZXlzIHdoZW4gYnVpbGRpbmcgd2l0aCB0ZXN0IG1hcmtlcnMgLS0+CisgICAgPFB5VGVzdEV4dCBDb25kaXRpb249IiQoVXNlVGVzdE1hcmtlcikgPT0gJ3RydWUnIj4tdGVzdDwvUHlUZXN0RXh0PgorICAgIAorICAgIDwhLS0gU3VmZml4IGZvciB2ZXJzaW9ucy9rZXlzIHdoZW4gYnVpbGRpbmcgZm9yIHBhcnRpY3VsYXIgcGxhdGZvcm1zIC0tPgorICAgIDxQeUFyY2hFeHQgQ29uZGl0aW9uPSInJChBcmNoTmFtZSknID09ICd3aW4zMiciPi0zMjwvUHlBcmNoRXh0PgorICAgIAorICAgIDwhLS0gRnVsbCBwYXRoIG9mIHRoZSByZXN1bHRpbmcgcHl0aG9uLmV4ZSBiaW5hcnkgLS0+CisgICAgPFB5dGhvbkV4ZSBDb25kaXRpb249IickKFB5dGhvbkV4ZSknID09ICcnIj4kKEJ1aWxkUGF0aClweXRob24kKFB5RGVidWdFeHQpLmV4ZTwvUHl0aG9uRXhlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIAorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKE92ZXJyaWRlVmVyc2lvbiknID09ICcnIj4KKyAgICA8IS0tCisgICAgUmVhZCB2ZXJzaW9uIGluZm9ybWF0aW9uIGZyb20gSW5jbHVkZVxwYXRjaGxldmVsLmguIFRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBhcmUgc2V0OgorICAgIAorICAgICAgICBNYWpvclZlcnNpb25OdW1iZXIgIC0gICB0aGUgJzMnIGluICczLjUuMmExJworICAgICAgICBNaW5vclZlcnNpb25OdW1iZXIgIC0gICB0aGUgJzUnIGluICczLjUuMmExJworICAgICAgICBNaWNyb1ZlcnNpb25OdW1iZXIgIC0gICB0aGUgJzInIGluICczLjUuMmExJworICAgICAgICBSZWxlYXNlU2VyaWFsICAgICAgIC0gICB0aGUgJzEnIGluICczLjUuMmExJworICAgICAgICBSZWxlYXNlTGV2ZWxOYW1lICAgIC0gICB0aGUgJ2ExJyBpbiAnMy41LjJhMScKKyAgICAgICAgUHl0aG9uVmVyc2lvbk51bWJlciAtICAgJzMuNS4yJyBmb3IgJzMuNS4yYTEnCisgICAgICAgIFB5dGhvblZlcnNpb24gICAgICAgLSAgICczLjUuMmExJworICAgICAgICBQeXRob25WZXJzaW9uSGV4ICAgIC0gICAweDAzMDUwMmExIGZvciAnMy41LjJhMScKKyAgICAgICAgUmVsZWFzZUxldmVsTnVtYmVyICAtICAgMTAgZm9yIGFscGhhLCAxMSBmb3IgYmV0YSwgMTIgZm9yIFJDIChnYW1tYSksIGFuZCAxNSBmb3IgZmluYWwKKyAgICAgICAgRmllbGQzVmFsdWUgICAgICAgICAtICAgMjEwMSBmb3IgJzMuNS4yYTEnICg9PSAxMDAwKjIgKyAxMCoxMCAoJ2EnKSArIDEpCisgICAgLS0+CisgICAgPF9QYXRjaExldmVsQ29udGVudD4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KGAkKFB5U291cmNlUGF0aClJbmNsdWRlXHBhdGNobGV2ZWwuaGApKTwvX1BhdGNoTGV2ZWxDb250ZW50PgorICAgIDxNYWpvclZlcnNpb25OdW1iZXI+JChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6TWF0Y2goJChfUGF0Y2hMZXZlbENvbnRlbnQpLCBgZGVmaW5lXHMrUFlfTUFKT1JfVkVSU0lPTlxzKyhcZCspYCkuR3JvdXBzWzFdLlZhbHVlKTwvTWFqb3JWZXJzaW9uTnVtYmVyPgorICAgIDxNaW5vclZlcnNpb25OdW1iZXI+JChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6TWF0Y2goJChfUGF0Y2hMZXZlbENvbnRlbnQpLCBgZGVmaW5lXHMrUFlfTUlOT1JfVkVSU0lPTlxzKyhcZCspYCkuR3JvdXBzWzFdLlZhbHVlKTwvTWlub3JWZXJzaW9uTnVtYmVyPgorICAgIDxNaWNyb1ZlcnNpb25OdW1iZXI+JChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6TWF0Y2goJChfUGF0Y2hMZXZlbENvbnRlbnQpLCBgZGVmaW5lXHMrUFlfTUlDUk9fVkVSU0lPTlxzKyhcZCspYCkuR3JvdXBzWzFdLlZhbHVlKTwvTWljcm9WZXJzaW9uTnVtYmVyPgorICAgIDxfUmVsZWFzZUxldmVsPiQoW1N5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy5SZWdleF06Ok1hdGNoKCQoX1BhdGNoTGV2ZWxDb250ZW50KSwgYGRlZmluZVxzK1BZX1JFTEVBU0VfTEVWRUxccytQWV9SRUxFQVNFX0xFVkVMXyhcdyspYCkuR3JvdXBzWzFdLlZhbHVlKTwvX1JlbGVhc2VMZXZlbD4KKyAgICA8UmVsZWFzZVNlcmlhbD4kKFtTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMuUmVnZXhdOjpNYXRjaCgkKF9QYXRjaExldmVsQ29udGVudCksIGBkZWZpbmVccytQWV9SRUxFQVNFX1NFUklBTFxzKyhcZCspYCkuR3JvdXBzWzFdLlZhbHVlKTwvUmVsZWFzZVNlcmlhbD4KKyAgICA8UmVsZWFzZUxldmVsTnVtYmVyPjE1PC9SZWxlYXNlTGV2ZWxOdW1iZXI+CisgICAgPFJlbGVhc2VMZXZlbE51bWJlciBDb25kaXRpb249IiQoX1JlbGVhc2VMZXZlbCkgPT0gJ0FMUEhBJyI+MTA8L1JlbGVhc2VMZXZlbE51bWJlcj4KKyAgICA8UmVsZWFzZUxldmVsTnVtYmVyIENvbmRpdGlvbj0iJChfUmVsZWFzZUxldmVsKSA9PSAnQkVUQSciPjExPC9SZWxlYXNlTGV2ZWxOdW1iZXI+CisgICAgPFJlbGVhc2VMZXZlbE51bWJlciBDb25kaXRpb249IiQoX1JlbGVhc2VMZXZlbCkgPT0gJ0dBTU1BJyI+MTI8L1JlbGVhc2VMZXZlbE51bWJlcj4KKyAgICA8UmVsZWFzZUxldmVsTmFtZSBDb25kaXRpb249IiQoX1JlbGVhc2VMZXZlbCkgPT0gJ0FMUEhBJyI+YSQoUmVsZWFzZVNlcmlhbCk8L1JlbGVhc2VMZXZlbE5hbWU+CisgICAgPFJlbGVhc2VMZXZlbE5hbWUgQ29uZGl0aW9uPSIkKF9SZWxlYXNlTGV2ZWwpID09ICdCRVRBJyI+YiQoUmVsZWFzZVNlcmlhbCk8L1JlbGVhc2VMZXZlbE5hbWU+CisgICAgPFJlbGVhc2VMZXZlbE5hbWUgQ29uZGl0aW9uPSIkKF9SZWxlYXNlTGV2ZWwpID09ICdHQU1NQSciPnJjJChSZWxlYXNlU2VyaWFsKTwvUmVsZWFzZUxldmVsTmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICAKKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChPdmVycmlkZVZlcnNpb24pJyAhPSAnJyI+CisgICAgPCEtLQorICAgIE92ZXJyaWRlIHRoZSB2ZXJzaW9uIG51bWJlciB3aGVuIGJ1aWxkaW5nIGJ5IHNwZWNpZnlpbmcgT3ZlcnJpZGVWZXJzaW9uLgorICAgIEZvciBleGFtcGxlOgorICAgIAorICAgICAgICBQQ0J1aWxkXGJ1aWxkLmJhdCAiL3A6T3ZlcnJpZGVWZXJzaW9uPTMuNS4yYTEiCisgICAgCisgICAgVXNlIHRoZSAtViBvcHRpb24gdG8gY2hlY2sgeW91ciB2ZXJzaW9uIGlzIHZhbGlkOgorICAgIAorICAgICAgICBQQ0J1aWxkXGJ1aWxkLmJhdCAtViAiL3A6T3ZlcnJpZGVWZXJzaW9uPTMuNS4yYTEiCisgICAgICAgICAgUHl0aG9uVmVyc2lvbk51bWJlcjogMy41LjIKKyAgICAgICAgICBQeXRob25WZXJzaW9uOiAgICAgICAzLjUuMmExCisgICAgICAgICAgUHl0aG9uVmVyc2lvbkhleDogICAgMHgwMzA1MDJBMQorICAgICAgICAgIEZpZWxkM1ZhbHVlOiAgICAgICAgIDIxMDEKKyAgICAKKyAgICBOb3RlIHRoYXQgdGhpcyBvbmx5IGFmZmVjdHMgdGhlIHZlcnNpb24gbnVtYmVycyBlbWJlZGRlZCBpbiByZXNvdXJjZXMgYW5kCisgICAgaW5zdGFsbGVycywgYnV0IG5vdCBzeXMudmVyc2lvbi4KKyAgICAtLT4KKyAgICA8TWFqb3JWZXJzaW9uTnVtYmVyPiQoW1N5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy5SZWdleF06Ok1hdGNoKCQoT3ZlcnJpZGVWZXJzaW9uKSwgYChcZCspXC4oXGQrKVwuKFxkKykoKGF8YnxyYykoXGQpKT9gKS5Hcm91cHNbMV0uVmFsdWUpPC9NYWpvclZlcnNpb25OdW1iZXI+CisgICAgPE1pbm9yVmVyc2lvbk51bWJlcj4kKFtTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMuUmVnZXhdOjpNYXRjaCgkKE92ZXJyaWRlVmVyc2lvbiksIGAoXGQrKVwuKFxkKylcLihcZCspKChhfGJ8cmMpKFxkKSk/YCkuR3JvdXBzWzJdLlZhbHVlKTwvTWlub3JWZXJzaW9uTnVtYmVyPgorICAgIDxNaWNyb1ZlcnNpb25OdW1iZXI+JChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6TWF0Y2goJChPdmVycmlkZVZlcnNpb24pLCBgKFxkKylcLihcZCspXC4oXGQrKSgoYXxifHJjKShcZCkpP2ApLkdyb3Vwc1szXS5WYWx1ZSk8L01pY3JvVmVyc2lvbk51bWJlcj4KKyAgICA8UmVsZWFzZUxldmVsTmFtZT4kKFtTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMuUmVnZXhdOjpNYXRjaCgkKE92ZXJyaWRlVmVyc2lvbiksIGAoXGQrKVwuKFxkKylcLihcZCspKChhfGJ8cmMpKFxkKSk/YCkuR3JvdXBzWzRdLlZhbHVlKTwvUmVsZWFzZUxldmVsTmFtZT4KKyAgICA8X1JlbGVhc2VMZXZlbD4kKFtTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMuUmVnZXhdOjpNYXRjaCgkKE92ZXJyaWRlVmVyc2lvbiksIGAoXGQrKVwuKFxkKylcLihcZCspKChhfGJ8cmMpKFxkKSk/YCkuR3JvdXBzWzVdLlZhbHVlKTwvX1JlbGVhc2VMZXZlbD4KKyAgICA8UmVsZWFzZVNlcmlhbD4kKFtTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMuUmVnZXhdOjpNYXRjaCgkKE92ZXJyaWRlVmVyc2lvbiksIGAoXGQrKVwuKFxkKylcLihcZCspKChhfGJ8cmMpKFxkKSk/YCkuR3JvdXBzWzZdLlZhbHVlKTwvUmVsZWFzZVNlcmlhbD4KKyAgICA8UmVsZWFzZVNlcmlhbCBDb25kaXRpb249IickKFJlbGVhc2VTZXJpYWwpJyA9PSAnJyI+MDwvUmVsZWFzZVNlcmlhbD4KKyAgICA8UmVsZWFzZUxldmVsTnVtYmVyPjE1PC9SZWxlYXNlTGV2ZWxOdW1iZXI+CisgICAgPFJlbGVhc2VMZXZlbE51bWJlciBDb25kaXRpb249IiQoX1JlbGVhc2VMZXZlbCkgPT0gJ2EnIj4xMDwvUmVsZWFzZUxldmVsTnVtYmVyPgorICAgIDxSZWxlYXNlTGV2ZWxOdW1iZXIgQ29uZGl0aW9uPSIkKF9SZWxlYXNlTGV2ZWwpID09ICdiJyI+MTE8L1JlbGVhc2VMZXZlbE51bWJlcj4KKyAgICA8UmVsZWFzZUxldmVsTnVtYmVyIENvbmRpdGlvbj0iJChfUmVsZWFzZUxldmVsKSA9PSAncmMnIj4xMjwvUmVsZWFzZUxldmVsTnVtYmVyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIAorICA8UHJvcGVydHlHcm91cD4KKyAgICA8UHl0aG9uVmVyc2lvbk51bWJlcj4kKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLiQoTWljcm9WZXJzaW9uTnVtYmVyKTwvUHl0aG9uVmVyc2lvbk51bWJlcj4KKyAgICA8UHl0aG9uVmVyc2lvbj4kKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLiQoTWljcm9WZXJzaW9uTnVtYmVyKSQoUmVsZWFzZUxldmVsTmFtZSk8L1B5dGhvblZlcnNpb24+CisgICAgPFB5dGhvblZlcnNpb25IZXg+JChbbXNidWlsZF06OkJpdHdpc2VPcigKKyAgICAgICAgJChbbXNidWlsZF06Ok11bHRpcGx5KCQoTWFqb3JWZXJzaW9uTnVtYmVyKSwgMTY3NzcyMTYpKSwKKyAgICAgICAgJChbbXNidWlsZF06OkJpdHdpc2VPcigKKyAgICAgICAgICAgICQoW21zYnVpbGRdOjpNdWx0aXBseSgkKE1pbm9yVmVyc2lvbk51bWJlciksIDY1NTM2KSksCisgICAgICAgICAgICAkKFttc2J1aWxkXTo6Qml0d2lzZU9yKAorICAgICAgICAgICAgICAgICQoW21zYnVpbGRdOjpNdWx0aXBseSgkKE1pY3JvVmVyc2lvbk51bWJlciksIDI1NikpLAorICAgICAgICAgICAgICAgICQoW21zYnVpbGRdOjpCaXR3aXNlT3IoCisgICAgICAgICAgICAgICAgICAgICQoW21zYnVpbGRdOjpNdWx0aXBseSgkKFJlbGVhc2VMZXZlbE51bWJlciksIDE2KSksCisgICAgICAgICAgICAgICAgICAgICQoUmVsZWFzZVNlcmlhbCkKKyAgICAgICAgICAgICAgICApKQorICAgICAgICAgICAgKSkKKyAgICAgICAgKSkKKyAgICApKTwvUHl0aG9uVmVyc2lvbkhleD4KKyAgICA8RmllbGQzVmFsdWU+JChbbXNidWlsZF06OkFkZCgKKyAgICAgICAgJChSZWxlYXNlU2VyaWFsKSwKKyAgICAgICAgJChbbXNidWlsZF06OkFkZCgKKyAgICAgICAgICAgICQoW21zYnVpbGRdOjpNdWx0aXBseSgkKFJlbGVhc2VMZXZlbE51bWJlciksIDEwKSksCisgICAgICAgICAgICAkKFttc2J1aWxkXTo6TXVsdGlwbHkoJChNaWNyb1ZlcnNpb25OdW1iZXIpLCAxMDAwKSkKKyAgICAgICAgKSkKKyAgICApKTwvRmllbGQzVmFsdWU+CisgICAgPEZpZWxkM1ZhbHVlIENvbmRpdGlvbj0iJChVc2VUZXN0TWFya2VyKSA9PSAndHJ1ZSciPiQoW21zYnVpbGRdOjpBZGQoJChGaWVsZDNWYWx1ZSksIDkwMDApKTwvRmllbGQzVmFsdWU+CisgICAgCisgICAgPCEtLSBUaGUgbmFtZSBvZiB0aGUgcmVzdWx0aW5nIHB5dGhvblhZLmRsbCAod2l0aG91dCB0aGUgZXh0ZW5zaW9uKSAtLT4KKyAgICA8UHlEbGxOYW1lPnB5dGhvbiQoTWFqb3JWZXJzaW9uTnVtYmVyKSQoTWlub3JWZXJzaW9uTnVtYmVyKSQoUHlEZWJ1Z0V4dCk8L1B5RGxsTmFtZT4KKworICAgIDwhLS0gVGhlIHZlcnNpb24gYW5kIHBsYXRmb3JtIHRhZyB0byBpbmNsdWRlIGluIC5weWQgZmlsZW5hbWVzIC0tPgorICAgIDxQeWRUYWcgQ29uZGl0aW9uPSIkKEFyY2hOYW1lKSA9PSAnd2luMzInIj4uY3AkKE1ham9yVmVyc2lvbk51bWJlcikkKE1pbm9yVmVyc2lvbk51bWJlciktd2luMzI8L1B5ZFRhZz4KKyAgICA8UHlkVGFnIENvbmRpdGlvbj0iJChBcmNoTmFtZSkgPT0gJ2FtZDY0JyI+LmNwJChNYWpvclZlcnNpb25OdW1iZXIpJChNaW5vclZlcnNpb25OdW1iZXIpLXdpbl9hbWQ2NDwvUHlkVGFnPgorICAgIAorICAgIDwhLS0gVGhlIHZlcnNpb24gbnVtYmVyIGZvciBzeXMud2ludmVyIC0tPgorICAgIDxTeXNXaW5WZXI+JChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKSQoUHlBcmNoRXh0KSQoUHlUZXN0RXh0KTwvU3lzV2luVmVyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIAorICA8IS0tIERpc3BsYXlzIHRoZSBjYWxjdWxhdGVkIHZlcnNpb24gaW5mbyAtLT4KKyAgPFRhcmdldCBOYW1lPSJTaG93VmVyc2lvbkluZm8iPgorICAgIDxNZXNzYWdlIEltcG9ydGFuY2U9ImhpZ2giIFRleHQ9IlB5dGhvblZlcnNpb25OdW1iZXI6ICQoUHl0aG9uVmVyc2lvbk51bWJlcikiIC8+CisgICAgPE1lc3NhZ2UgSW1wb3J0YW5jZT0iaGlnaCIgVGV4dD0iUHl0aG9uVmVyc2lvbjogICAgICAgJChQeXRob25WZXJzaW9uKSIgLz4KKyAgICA8TWVzc2FnZSBJbXBvcnRhbmNlPSJoaWdoIiBUZXh0PSJQeXRob25WZXJzaW9uSGV4OiAgICAweCQoW1N5c3RlbS5VSW50MzJdOjpQYXJzZSgkKFB5dGhvblZlcnNpb25IZXgpKS5Ub1N0cmluZyhgWDA4YCkpIiAvPgorICAgIDxNZXNzYWdlIEltcG9ydGFuY2U9ImhpZ2giIFRleHQ9IkZpZWxkM1ZhbHVlOiAgICAgICAgICQoRmllbGQzVmFsdWUpIiAvPgorICAgIDxNZXNzYWdlIEltcG9ydGFuY2U9ImhpZ2giIFRleHQ9IlN5c1dpblZlcjogICAgICAgICAgICQoU3lzV2luVmVyKSIgLz4KKyAgICA8TWVzc2FnZSBJbXBvcnRhbmNlPSJoaWdoIiBUZXh0PSJQeURsbE5hbWU6ICAgICAgICAgICAkKFB5RGxsTmFtZSkiIC8+CisgIDwvVGFyZ2V0PgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob24udmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9uLnZjeHByb2oKaW5kZXggYmQxMjYyNC4uMGFlNDg4MiAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob24udmN4cHJvagorKysgYi9QQ2J1aWxkL3B5dGhvbi52Y3hwcm9qCkBAIC0zNiw0NCArMzYsMTEgQEAKICAgPC9JdGVtR3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KICAgICA8UHJvamVjdEd1aWQ+e0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX08L1Byb2plY3RHdWlkPgorICAgIDxNYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+Q2xDb21waWxlPC9NYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KQEAgLTgxLDI2OCArNDgsMjQgQEAKICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob24uZXhlPC9PdXRwdXRGaWxlPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbi5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbl9kLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbl9kLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+NDE5NDMwNDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxJbXBvcnRMaWJyYXJ5PgotICAgICAgPC9JbXBvcnRMaWJyYXJ5PgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxJbXBvcnRMaWJyYXJ5PgotICAgICAgPC9JbXBvcnRMaWJyYXJ5PgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob24uZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPEltcG9ydExpYnJhcnk+Ci0gICAgICA8L0ltcG9ydExpYnJhcnk+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbi5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8SW1wb3J0TGlicmFyeT4KLSAgICAgIDwvSW1wb3J0TGlicmFyeT4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cUENccHljb24uaWNvIiAvPgogICA8L0l0ZW1Hcm91cD4KQEAgLTM1MCw3ICs3Myw3IEBACiAgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fZXhlLnJjIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccHl0aG9uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQcm9ncmFtc1xweXRob24uYyIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KQEAgLTM2MSw0ICs4NCwxOSBAQAogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgorICA8VGFyZ2V0IE5hbWU9IkdlbmVyYXRlUHl0aG9uQmF0IiBBZnRlclRhcmdldHM9IkFmdGVyQnVpbGQiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgPF9Db250ZW50PkByZW0gVGhpcyBzY3JpcHQgaW52b2tlcyB0aGUgbW9zdCByZWNlbnRseSBidWlsdCBQeXRob24gd2l0aCBhbGwgYXJndW1lbnRzCitAcmVtIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBpbnRlcnByZXRlci4gIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlCitAcmVtIGJ1aWxkIHByb2Nlc3MgYW5kIGFueSBjaGFuZ2VzICp3aWxsKiBiZSB0aHJvd24gYXdheSBieSB0aGUgbmV4dAorQHJlbSByZWJ1aWxkLgorQHJlbSBUaGlzIGlzIG9ubHkgbWVhbnQgYXMgYSBjb252ZW5pZW5jZSBmb3IgZGV2ZWxvcGluZyBDUHl0aG9uCitAcmVtIGFuZCB1c2luZyBpdCBvdXRzaWRlIG9mIHRoYXQgY29udGV4dCBpcyBpbGwtYWR2aXNlZC4KK0BlY2hvIFJ1bm5pbmcgJChDb25maWd1cmF0aW9uKV58JChQbGF0Zm9ybSkgaW50ZXJwcmV0ZXIuLi4KK0AiJChPdXREaXIpcHl0aG9uJChQeURlYnVnRXh0KS5leGUiICUqCis8L19Db250ZW50PgorICAgICAgPF9FeGlzdGluZ0NvbnRlbnQgQ29uZGl0aW9uPSJFeGlzdHMoJyQoUHlTb3VyY2VQYXRoKXB5dGhvbi5iYXQnKSI+JChbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsVGV4dCgnJChQeVNvdXJjZVBhdGgpcHl0aG9uLmJhdCcpKTwvX0V4aXN0aW5nQ29udGVudD4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPFdyaXRlTGluZXNUb0ZpbGUgRmlsZT0iJChQeVNvdXJjZVBhdGgpcHl0aG9uLmJhdCIgTGluZXM9IiQoX0NvbnRlbnQpIiBPdmVyd3JpdGU9InRydWUiIENvbmRpdGlvbj0iJyQoX0NvbnRlbnQpJyAhPSAnJChfRXhpc3RpbmdDb250ZW50KSciIC8+CisgIDwvVGFyZ2V0PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvcHl0aG9uLnZjeHByb2ouZmlsdGVycwppbmRleCBlNDkwNmE0Li4wNjYyYTRlIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbi52Y3hwcm9qLmZpbHRlcnMKKysrIGIvUENidWlsZC9weXRob24udmN4cHJvai5maWx0ZXJzCkBAIC0xOSw4ICsxOSw4IEBACiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xweXRob24uYyI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQcm9ncmFtc1xweXRob24uYyI+CiAgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbjNkbGwudmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3hwcm9qCmluZGV4IGJjOGZmMzEuLjE4ZmY0YTggMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3hwcm9qCisrKyBiL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3hwcm9qCkBAIC0xLDYgKzEsMTQgQEAKIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMzAsMTQ0ICszOCw0MyBAQAogICAgIDxQcm9qZWN0R3VpZD57ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfTwvUHJvamVjdEd1aWQ+CiAgICAgPFJvb3ROYW1lc3BhY2U+cHl0aG9uM2RsbDwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgICAgPFRhcmdldE5hbWU+cHl0aG9uMzwvVGFyZ2V0TmFtZT4KKyAgICA8TWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PkNsQ29tcGlsZTwvTWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLW5tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZDwvTk1ha2VSZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi0iJChWU0luc3RhbGxEaXIpXFZDXGJpblxubWFrZS5leGUiIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KLSAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KLSAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQ8L05NYWtlUmVCdWlsZENvbW1hbmRMaW5lPgotICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLSIkKFZTSW5zdGFsbERpcilcVkNcYmluXG5tYWtlLmV4ZSIgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgotICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgotICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQwotbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkPC9OTWFrZVJlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQwotIiQoVlNJbnN0YWxsRGlyKVxWQ1xiaW5cbm1ha2UuZXhlIiAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIGNsZWFuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+Ci0gICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLW5tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgcmVidWlsZDwvTk1ha2VSZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi0iJChWU0luc3RhbGxEaXIpXFZDXGJpblxubWFrZS5leGUiIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KLSAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KLSAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQ8L05NYWtlUmVCdWlsZENvbW1hbmRMaW5lPgotICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLSIkKFZTSW5zdGFsbERpcilcVkNcYmluXG5tYWtlLmV4ZSIgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgotICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgotICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQwotbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkPC9OTWFrZVJlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQwotIiQoVlNJbnN0YWxsRGlyKVxWQ1xiaW5cbm1ha2UuZXhlIiAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIGNsZWFuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPF9NYWNoaW5lPlg4NjwvX01hY2hpbmU+CisgICAgPF9NYWNoaW5lIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPlg2NDwvX01hY2hpbmU+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxCdWZmZXJTZWN1cml0eUNoZWNrPmZhbHNlPC9CdWZmZXJTZWN1cml0eUNoZWNrPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChPdXREaXIpJChUYXJnZXROYW1lKXN0dWIubGliPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE1vZHVsZURlZmluaXRpb25GaWxlIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSAhPSAnRGVidWcnIj4kKFB5U291cmNlUGF0aClQQ1xweXRob24zLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+CisgICAgICA8TW9kdWxlRGVmaW5pdGlvbkZpbGUgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdEZWJ1ZyciPiQoSW50RGlyKXB5dGhvbjNfZC5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPgorICAgICAgPEVudHJ5UG9pbnRTeW1ib2w+RGxsTWFpbjwvRW50cnlQb2ludFN5bWJvbD4KKyAgICA8L0xpbms+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPmxpYiAvbm9sb2dvIC9kZWY6IiQoSW50RGlyKXB5dGhvbjNzdHViLmRlZiIgL291dDoiJChPdXREaXIpJChUYXJnZXROYW1lKXN0dWIubGliIiAvTUFDSElORTokKF9NYWNoaW5lKTwvQ29tbWFuZD4KKyAgICAgIDxNZXNzYWdlPlJlYnVpbGRpbmcgJChUYXJnZXROYW1lKXN0dWIubGliPC9NZXNzYWdlPgorICAgICAgPE91dHB1dHM+JChPdXREaXIpJChUYXJnZXROYW1lKXN0dWIubGliPC9PdXRwdXRzPgorICAgIDwvUHJlTGlua0V2ZW50PgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cUENccHl0aG9uMy5kZWYiIC8+CkBAIC0xODEsNCArODgsNTUgQEAKICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KKyAgCisgIDxUYXJnZXQgTmFtZT0iQnVpbGRQeXRob24zX2REZWYiIEJlZm9yZVRhcmdldHM9IkJ1aWxkU3R1YkRlZiIgSW5wdXRzPSIuLlxQQ1xweXRob24zLmRlZiIgT3V0cHV0cz0iJChJbnREaXIpcHl0aG9uM19kLmRlZiIgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdEZWJ1ZyciPgorICAgIDxJdGVtR3JvdXA+CisgICAgICA8X0RlZkxpbmVzIFJlbW92ZT0iQChfRGVmTGluZXMpIiAvPgorICAgICAgPF9MaW5lcyBSZW1vdmU9IkAoX0xpbmVzKSIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8UmVhZExpbmVzRnJvbUZpbGUgRmlsZT0iLi5cUENccHl0aG9uMy5kZWYiPgorICAgICAgPE91dHB1dCBUYXNrUGFyYW1ldGVyPSJMaW5lcyIgSXRlbU5hbWU9Il9EZWZMaW5lcyIgLz4KKyAgICA8L1JlYWRMaW5lc0Zyb21GaWxlPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgPF9QYXR0ZXJuMT4oPXB5dGhvbiQoTWFqb3JWZXJzaW9uTnVtYmVyKSQoTWlub3JWZXJzaW9uTnVtYmVyKSlcLjwvX1BhdHRlcm4xPgorICAgICAgPF9TdWIxPiQxX2QuPC9fU3ViMT4KKyAgICAgIDxfUGF0dGVybjI+InB5dGhvbjMiPC9fUGF0dGVybjI+CisgICAgICA8X1N1YjI+InB5dGhvbjNfZCI8L19TdWIyPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgPF9MaW5lcyBJbmNsdWRlPSJAKF9EZWZMaW5lcykiPgorICAgICAgICA8TmV3PiQoW1N5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy5SZWdleF06OlJlcGxhY2UoJChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6UmVwbGFjZShgJShJZGVudGl0eSlgLCBgJChfUGF0dGVybjEpYCwgYCQoX1N1YjEpYCkpLCBgJChfUGF0dGVybjIpYCwgYCQoX1N1YjIpYCkpPC9OZXc+CisgICAgICA8L19MaW5lcz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8TWFrZURpciBEaXJlY3Rvcmllcz0iJChJbnREaXIpIiAvPgorICAgIDxXcml0ZUxpbmVzVG9GaWxlIEZpbGU9IiQoSW50RGlyKXB5dGhvbjNfZC5kZWYiIExpbmVzPSJAKF9MaW5lcy0+JyUoTmV3KScpIiBPdmVyd3JpdGU9InRydWUiIC8+CisgIDwvVGFyZ2V0PgorICAKKyAgPFRhcmdldCBOYW1lPSJCdWlsZFN0dWJEZWYiIEJlZm9yZVRhcmdldHM9IlByZUxpbmtFdmVudCIgSW5wdXRzPSIuLlxQQ1xweXRob24zLmRlZiIgT3V0cHV0cz0iJChJbnREaXIpcHl0aG9uM3N0dWIuZGVmIj4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgPF9EZWZMaW5lcyBSZW1vdmU9IkAoX0RlZkxpbmVzKSIgLz4KKyAgICAgIDxfTGluZXMgUmVtb3ZlPSJAKF9MaW5lcykiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPFJlYWRMaW5lc0Zyb21GaWxlIEZpbGU9Ii4uXFBDXHB5dGhvbjMuZGVmIj4KKyAgICAgIDxPdXRwdXQgVGFza1BhcmFtZXRlcj0iTGluZXMiIEl0ZW1OYW1lPSJfRGVmTGluZXMiIC8+CisgICAgPC9SZWFkTGluZXNGcm9tRmlsZT4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgIDxfUGF0dGVybj5eW1x3Ll0rPS4rP1wuKFteIF0rKS4qJDwvX1BhdHRlcm4+CisgICAgICA8X1N1Yj4kMTwvX1N1Yj4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgIDxfTGluZXMgSW5jbHVkZT0iRVhQT1JUUyIgLz4KKyAgICAgIDxfU3ltYm9scyBJbmNsdWRlPSJAKF9EZWZMaW5lcykiIENvbmRpdGlvbj0iJChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6SXNNYXRjaChgJShJZGVudGl0eSlgLCBgJChfUGF0dGVybilgKSkiPgorICAgICAgICA8U3ltYm9sPiQoW1N5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy5SZWdleF06OlJlcGxhY2UoYCUoSWRlbnRpdHkpYCwgYCQoX1BhdHRlcm4pYCwgYCQoX1N1YilgKSk8L1N5bWJvbD4KKyAgICAgIDwvX1N5bWJvbHM+CisgICAgICA8X0xpbmVzIEluY2x1ZGU9IkAoX1N5bWJvbHMtPiclKFN5bWJvbCknKSIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8TWFrZURpciBEaXJlY3Rvcmllcz0iJChJbnREaXIpIiAvPgorICAgIDxXcml0ZUxpbmVzVG9GaWxlIEZpbGU9IiQoSW50RGlyKXB5dGhvbjNzdHViLmRlZiIgTGluZXM9IkAoX0xpbmVzKSIgT3ZlcndyaXRlPSJ0cnVlIiAvPgorICA8L1RhcmdldD4KKyAgPFRhcmdldCBOYW1lPSJfQ2xlYW5TdHViRGVmIiBCZWZvcmVUYXJnZXRzPSJDb3JlQ2xlYW4iPgorICAgIDxJdGVtR3JvdXA+CisgICAgICA8Q2xlYW4gSW5jbHVkZT0iJChJbnREaXIpcHl0aG9uM3N0dWIuZGVmIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICA8L1RhcmdldD4KIDwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCmluZGV4IDYwMjFjZDcuLjljYmU4YjkgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCisrKyBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCkBAIC0zOCw0MDUgKzM4LDQxIEBACiAgICAgPFByb2plY3RHdWlkPntDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9PC9Qcm9qZWN0R3VpZD4KICAgICA8Um9vdE5hbWVzcGFjZT5weXRob25jb3JlPC9Sb290TmFtZXNwYWNlPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8TWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PkNsQ29tcGlsZTwvTWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PgorICAgIDxLaWxsUHl0aG9uPnRydWU8L0tpbGxQeXRob24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKFB5RGxsTmFtZSk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz5MaW5rPC9DdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vWm0yMDAgICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFB5U291cmNlUGF0aClQeXRob247JChQeVNvdXJjZVBhdGgpTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7TVNfRExMX0lEPSIkKFN5c1dpblZlcikiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgotICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBSZWxlYXNlICIkKEludERpcilcIjwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFB5RGxsTmFtZSkuZGxsPC9PdXRwdXRGaWxlPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPiQoS2lsbFB5dGhvbkV4ZSkKLUlGICVFUlJPUkxFVkVMJSBORVEgMCAoCi0gICAgZWNobyBraWxsX3B5dGhvbjogd2FyXm5pbmc6IGNvdWxkIG5vdCBraWxsIHJ1bm5pbmcgUHl0aG9ucywgZXhpdCBjb2RlICVFUlJPUkxFVkVMJQotICAgIGV4aXQgL2IgMAotKTwvQ29tbWFuZD4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+Ci0gICAgPFByZUJ1aWxkRXZlbnQ+Ci0gICAgICA8TWVzc2FnZT5LaWxsaW5nIGFueSBydW5uaW5nICQoUHl0aG9uRXhlKSBpbnN0YW5jZXMuLi48L01lc3NhZ2U+Ci0gICAgPC9QcmVCdWlsZEV2ZW50PgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9abTIwMCAgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgotICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBSZWxlYXNlICIkKEludERpcilcIjwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICAgIDxQcmVCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+JChLaWxsUHl0aG9uRXhlKQotSUYgJUVSUk9STEVWRUwlIE5FUSAwICgKLSAgICBlY2hvIGtpbGxfcHl0aG9uOiB3YXJebmluZzogY291bGQgbm90IGtpbGwgcnVubmluZyBQeXRob25zLCBleGl0IGNvZGUgJUVSUk9STEVWRUwlCi0gICAgZXhpdCAvYiAwCi0pPC9Db21tYW5kPgotICAgIDwvUHJlQnVpbGRFdmVudD4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxNZXNzYWdlPktpbGxpbmcgYW55IHJ1bm5pbmcgJChQeXRob25FeGUpIGluc3RhbmNlcy4uLjwvTWVzc2FnZT4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+RGVmYXVsdDwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8TWVzc2FnZT5HZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLjwvTWVzc2FnZT4KLSAgICAgIDxDb21tYW5kPiIkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgRGVidWcgIiQoSW50RGlyKSI8L0NvbW1hbmQ+Ci0gICAgPC9QcmVMaW5rRXZlbnQ+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKEludERpcilnZXRidWlsZGluZm8ubzslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPiQoS2lsbFB5dGhvbkV4ZSkKLUlGICVFUlJPUkxFVkVMJSBORVEgMCAoCi0gICAgZWNobyBraWxsX3B5dGhvbjogd2FyXm5pbmc6IGNvdWxkIG5vdCBraWxsIHJ1bm5pbmcgUHl0aG9ucywgZXhpdCBjb2RlICVFUlJPUkxFVkVMJQotICAgIGV4aXQgL2IgMAotKTwvQ29tbWFuZD4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+Ci0gICAgPFByZUJ1aWxkRXZlbnQ+Ci0gICAgICA8TWVzc2FnZT5LaWxsaW5nIGFueSBydW5uaW5nICQoUHl0aG9uRXhlKSBpbnN0YW5jZXMuLi48L01lc3NhZ2U+Ci0gICAgPC9QcmVCdWlsZEV2ZW50PgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vWm0yMDAgICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5EZWZhdWx0PC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgotICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBEZWJ1ZyAiJChJbnREaXIpIjwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICAgIDxQcmVCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+JChLaWxsUHl0aG9uRXhlKQotSUYgJUVSUk9STEVWRUwlIE5FUSAwICgKLSAgICBlY2hvIGtpbGxfcHl0aG9uOiB3YXJebmluZzogY291bGQgbm90IGtpbGwgcnVubmluZyBQeXRob25zLCBleGl0IGNvZGUgJUVSUk9STEVWRUwlCi0gICAgZXhpdCAvYiAwCi0pPC9Db21tYW5kPgotICAgIDwvUHJlQnVpbGRFdmVudD4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxNZXNzYWdlPktpbGxpbmcgYW55IHJ1bm5pbmcgJChQeXRob25FeGUpIGluc3RhbmNlcy4uLjwvTWVzc2FnZT4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9abTIwMCAgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgotICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBSZWxlYXNlICIkKEludERpcilcIjwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFB5RGxsTmFtZSkuZGxsPC9PdXRwdXRGaWxlPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPiQoS2lsbFB5dGhvbkV4ZSkKLUlGICVFUlJPUkxFVkVMJSBORVEgMCAoCi0gICAgZWNobyBraWxsX3B5dGhvbjogd2FyXm5pbmc6IGNvdWxkIG5vdCBraWxsIHJ1bm5pbmcgUHl0aG9ucywgZXhpdCBjb2RlICVFUlJPUkxFVkVMJQotICAgIGV4aXQgL2IgMAotKTwvQ29tbWFuZD4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+Ci0gICAgPFByZUJ1aWxkRXZlbnQ+Ci0gICAgICA8TWVzc2FnZT5LaWxsaW5nIGFueSBydW5uaW5nICQoUHl0aG9uRXhlKSBpbnN0YW5jZXMuLi48L01lc3NhZ2U+Ci0gICAgPC9QcmVCdWlsZEV2ZW50PgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8UHJlTGlua0V2ZW50PgotICAgICAgPE1lc3NhZ2U+R2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi48L01lc3NhZ2U+Ci0gICAgICA8Q29tbWFuZD4iJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIFJlbGVhc2UgIiQoSW50RGlyKVwiPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChJbnREaXIpZ2V0YnVpbGRpbmZvLm87JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICAgIDxQcmVCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+JChLaWxsUHl0aG9uRXhlKQotSUYgJUVSUk9STEVWRUwlIE5FUSAwICgKLSAgICBlY2hvIGtpbGxfcHl0aG9uOiB3YXJebmluZzogY291bGQgbm90IGtpbGwgcnVubmluZyBQeXRob25zLCBleGl0IGNvZGUgJUVSUk9STEVWRUwlCi0gICAgZXhpdCAvYiAwCi0pPC9Db21tYW5kPgotICAgIDwvUHJlQnVpbGRFdmVudD4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxNZXNzYWdlPktpbGxpbmcgYW55IHJ1bm5pbmcgJChQeXRob25FeGUpIGluc3RhbmNlcy4uLjwvTWVzc2FnZT4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8UHJlTGlua0V2ZW50PgotICAgICAgPE1lc3NhZ2U+R2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi48L01lc3NhZ2U+Ci0gICAgICA8Q29tbWFuZD4iJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIFJlbGVhc2UgIiQoSW50RGlyKVwiPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChJbnREaXIpZ2V0YnVpbGRpbmZvLm87JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5kbGw8L091dHB1dEZpbGU+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICAgIDxQcmVCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+JChLaWxsUHl0aG9uRXhlKQotSUYgJUVSUk9STEVWRUwlIE5FUSAwICgKLSAgICBlY2hvIGtpbGxfcHl0aG9uOiB3YXJebmluZzogY291bGQgbm90IGtpbGwgcnVubmluZyBQeXRob25zLCBleGl0IGNvZGUgJUVSUk9STEVWRUwlCi0gICAgZXhpdCAvYiAwCi0pPC9Db21tYW5kPgotICAgIDwvUHJlQnVpbGRFdmVudD4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxNZXNzYWdlPktpbGxpbmcgYW55IHJ1bm5pbmcgJChQeXRob25FeGUpIGluc3RhbmNlcy4uLjwvTWVzc2FnZT4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9abTIwMCAgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgotICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBSZWxlYXNlICIkKEludERpcilcIjwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPiQoS2lsbFB5dGhvbkV4ZSkKLUlGICVFUlJPUkxFVkVMJSBORVEgMCAoCi0gICAgZWNobyBraWxsX3B5dGhvbjogd2FyXm5pbmc6IGNvdWxkIG5vdCBraWxsIHJ1bm5pbmcgUHl0aG9ucywgZXhpdCBjb2RlICVFUlJPUkxFVkVMJQotICAgIGV4aXQgL2IgMAotKTwvQ29tbWFuZD4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+Ci0gICAgPFByZUJ1aWxkRXZlbnQ+Ci0gICAgICA8TWVzc2FnZT5LaWxsaW5nIGFueSBydW5uaW5nICQoUHl0aG9uRXhlKSBpbnN0YW5jZXMuLi48L01lc3NhZ2U+Ci0gICAgPC9QcmVCdWlsZEV2ZW50PgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGFic3RyYWN0LmgiIC8+CkBAIC00ODYsNiArMTIyLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbm9kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb2JqaW1wbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvZGljdG9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvcGNvZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3NkZWZzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBhcnNldG9rLmgiIC8+CkBAIC01MDIsNiArMTM5LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlleHBhdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWZwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWdldG9wdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWxpZmVjeWNsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweW1hdGguaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHl0aW1lLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5bWFjcm8uaCIgLz4KQEAgLTUxMCw2ICsxNDgsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXN0YXRlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5c3RyY21wLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5c3RydG9kLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5c3RyaGV4LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGR0b2EuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcUHl0aG9uLWFzdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxQeXRob24uaCIgLz4KQEAgLTY3NSw2ICszMTQsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xuYW1lc3BhY2VvYmplY3QuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcb2JqZWN0LmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG9ibWFsbG9jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG9kaWN0b2JqZWN0LmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHJhbmdlb2JqZWN0LmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHNldG9iamVjdC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzbGljZW9iamVjdC5jIiAvPgpAQCAtNjk2LDkgKzMzNiw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJccGFyc2VyLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJccGFyc2V0b2suYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclx0b2tlbml6ZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHdpbnJlZy5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcY29uZmlnLmMiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xkbF9udC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcZ2V0cGF0aHAuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXG1zdmNydG1vZHVsZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5aGFzaC5jIiAvPgpAQCAtNzM0LDEwICszNzQsMTIgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweWFyZW5hLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHljdHlwZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5ZnBlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlsaWZlY3ljbGUuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweW1hdGguYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXRpbWUuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXN0YXRlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlzdHJjbXAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXN0cmhleC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5c3RydG9kLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZHRvYS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXFB5dGhvbi1hc3QuYyIgLz4KQEAgLTc0OSwyMyArMzkxLDMwIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cdHJhY2ViYWNrLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX250LnJjIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcZGxfbnQuYyIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ia2lsbF9weXRob24udmN4cHJvaiI+Ci0gICAgICA8UHJvamVjdD57NmRlMTA3NDQtZTM5Ni00MGE1LWI0ZTItMWI2OWFhN2M4ZDMxfTwvUHJvamVjdD4KLSAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+Ci0gICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgotICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Im1ha2VfYnVpbGRpbmZvLnZjeHByb2oiPgotICAgICAgPFByb2plY3Q+e2M3M2YwZWMxLTM1OGItNDE3Ny05NDBmLTA4NDZhYzhiMDRjZH08L1Byb2plY3Q+Ci0gICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgotICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJtYWtlX3ZlcnNpb25pbmZvLnZjeHByb2oiPgotICAgICAgPFByb2plY3Q+e2YwZTA1NDFlLWYxN2QtNDMwYi05N2M0LTkzYWRmMGRkMjg0ZX08L1Byb2plY3Q+Ci0gICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgotICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9udC5yYyIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+CisgIDxUYXJnZXQgTmFtZT0iX0dldEJ1aWxkSW5mbyIgQmVmb3JlVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIj4KKyAgICA8RXhlYyBDb21tYW5kPSJoZyBpZCAtYiAmZ3Q7ICZxdW90OyQoSW50RGlyKWhnYnJhbmNoLnR4dCZxdW90OyIgQ29udGludWVPbkVycm9yPSJ0cnVlIiAvPgorICAgIDxFeGVjIENvbW1hbmQ9ImhnIGlkIC1pICZndDsgJnF1b3Q7JChJbnREaXIpaGd2ZXJzaW9uLnR4dCZxdW90OyIgQ29udGludWVPbkVycm9yPSJ0cnVlIiAvPgorICAgIDxFeGVjIENvbW1hbmQ9ImhnIGlkIC10ICZndDsgJnF1b3Q7JChJbnREaXIpaGd0YWcudHh0JnF1b3Q7IiBDb250aW51ZU9uRXJyb3I9InRydWUiIC8+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICA8SGdCcmFuY2ggQ29uZGl0aW9uPSJFeGlzdHMoJyQoSW50RGlyKWhnYnJhbmNoLnR4dCcpIj4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCckKEludERpciloZ2JyYW5jaC50eHQnKS5UcmltKCkpPC9IZ0JyYW5jaD4KKyAgICAgIDxIZ1ZlcnNpb24gQ29uZGl0aW9uPSJFeGlzdHMoJyQoSW50RGlyKWhndmVyc2lvbi50eHQnKSI+JChbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsVGV4dCgnJChJbnREaXIpaGd2ZXJzaW9uLnR4dCcpLlRyaW0oKSk8L0hnVmVyc2lvbj4KKyAgICAgIDxIZ1RhZyBDb25kaXRpb249IkV4aXN0cygnJChJbnREaXIpaGd0YWcudHh0JykiPiQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJyQoSW50RGlyKWhndGFnLnR4dCcpLlRyaW0oKSk8L0hnVGFnPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGdldGJ1aWxkaW5mby5jIj4KKyAgICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPkhHVkVSU0lPTj0iJChIZ1ZlcnNpb24pIjtIR1RBRz0iJChIZ1RhZykiO0hHQlJBTkNIPSIkKEhnQnJhbmNoKSI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPC9DbENvbXBpbGU+CisgICAgPC9JdGVtR3JvdXA+CisgIDwvVGFyZ2V0PgorICA8VGFyZ2V0IE5hbWU9Il9XYXJuQWJvdXRUb29sc2V0IiBCZWZvcmVUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiIENvbmRpdGlvbj0iJChQbGF0Zm9ybVRvb2xzZXQpICE9ICd2MTQwJyI+CisgICAgPFdhcm5pbmcgVGV4dD0iVG9vbHNldCAkKFBsYXRmb3JtVG9vbHNldCkgaXMgbm90IHVzZWQgZm9yIG9mZmljaWFsIGJ1aWxkcy4gWW91ciBidWlsZCBtYXkgaGF2ZSBlcnJvcnMgb3IgaW5jb21wYXRpYmlsaXRpZXMuIiAvPgorICA8L1RhcmdldD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA4YzY1MjQ3Li44MzdiNzM2IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTIxNiw2ICsyMTYsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWdldG9wdC5oIj4KICAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWxpZmVjeWNsZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweW1hdGguaCI+CiAgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTI0MCw2ICsyNDMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXN0cnRvZC5oIj4KICAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXN0cmhleC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxkdG9hLmgiPgogICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC00MjksNiArNDM1LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcaGFzaHRhYmxlLmgiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9kaWN0b2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmlzZWN0bW9kdWxlLmMiPgpAQCAtODkwLDYgKzg5OSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlmcGUuYyI+CiAgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5bGlmZWN5Y2xlLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweW1hdGguYyI+CiAgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtOTAyLDYgKzkxNCw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlzdHJjbXAuYyI+CiAgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5c3RyaGV4LmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXN0cnRvZC5jIj4KICAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC05NTMsNiArOTY4LDEyIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGhhc2h0YWJsZS5jIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlci5jIj4KKyAgICAgIDxGaWx0ZXI+UEM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcb2RpY3RvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fbnQucmMiPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob253LnZjeHByb2ogYi9QQ2J1aWxkL3B5dGhvbncudmN4cHJvagppbmRleCAxMjE0NTY5Li5iMGEyMDlhIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbncudmN4cHJvagorKysgYi9QQ2J1aWxkL3B5dGhvbncudmN4cHJvagpAQCAtMzYsMjk2ICszNiwzMCBAQAogICA8L0l0ZW1Hcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgogICAgIDxQcm9qZWN0R3VpZD57RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfTwvUHJvamVjdEd1aWQ+CisgICAgPE1ha2VWZXJzaW9uSW5mb0JlZm9yZVRhcmdldD5DbENvbXBpbGU8L01ha2VWZXJzaW9uSW5mb0JlZm9yZVRhcmdldD4KKyAgICA8U3VwcG9ydFBHTz5mYWxzZTwvU3VwcG9ydFBHTz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9ud19kLmV4ZTwvT3V0cHV0RmlsZT4KICAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9ud19kLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob253LmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbncuZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9udy5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPEltcG9ydExpYnJhcnk+Ci0gICAgICA8L0ltcG9ydExpYnJhcnk+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9udy5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPEltcG9ydExpYnJhcnk+Ci0gICAgICA8L0ltcG9ydExpYnJhcnk+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbncuZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxJbXBvcnRMaWJyYXJ5PgotICAgICAgPC9JbXBvcnRMaWJyYXJ5PgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9udy5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPEltcG9ydExpYnJhcnk+Ci0gICAgICA8L0ltcG9ydExpYnJhcnk+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXdsYXVuY2hlci52Y3hwcm9qIGIvUENidWlsZC9weXdsYXVuY2hlci52Y3hwcm9qCmluZGV4IDk2ZWE0MjEuLjg4MmYxYzQgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl3bGF1bmNoZXIudmN4cHJvagorKysgYi9QQ2J1aWxkL3B5d2xhdW5jaGVyLnZjeHByb2oKQEAgLTM3LDIwMCArMzcsMzcgQEAKICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgogICAgIDxQcm9qZWN0R3VpZD57MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fTwvUHJvamVjdEd1aWQ+CiAgICAgPFJvb3ROYW1lc3BhY2U+cHl3bGF1bmNoZXI8L1Jvb3ROYW1lc3BhY2U+CisgICAgPFRhcmdldE5hbWU+cHl3PC9UYXJnZXROYW1lPgorICAgIDxNYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+Q2xDb21waWxlPC9NYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+CisgICAgPFN1cHBvcnRQR08+ZmFsc2U8L1N1cHBvcnRQR08+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CiAgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxNYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+Q2xDb21waWxlPC9NYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAgIDxUYXJnZXROYW1lPnB5d19kPC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPFRhcmdldE5hbWU+cHl3X2Q8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPFRhcmdldE5hbWU+cHl3PC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8VGFyZ2V0TmFtZT5weXc8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8VGFyZ2V0TmFtZT5weXc8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxUYXJnZXROYW1lPnB5dzwvVGFyZ2V0TmFtZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgotICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+Ci0gICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+Ci0gICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUztOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7TkRFQlVHO19XSU42NDtfTV9YNjQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTO05ERUJVRztfV0lONjQ7X01fWDY0OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcbGF1bmNoZXIuYyIgLz4KICAgPC9JdGVtR3JvdXA+CkBAIC0yNDAsMTEgKzc3LDYgQEAKICAgPEl0ZW1Hcm91cD4KICAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5bGF1bmNoZXIucmMiIC8+CiAgIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Im1ha2VfdmVyc2lvbmluZm8udmN4cHJvaiI+Ci0gICAgICA8UHJvamVjdD57ZjBlMDU0MWUtZjE3ZC00MzBiLTk3YzQtOTNhZGYwZGQyODRlfTwvUHJvamVjdD4KLSAgICA8L1Byb2plY3RSZWZlcmVuY2U+Ci0gIDwvSXRlbUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICA8L0ltcG9ydEdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9yZWFkbWUudHh0IGIvUENidWlsZC9yZWFkbWUudHh0CmluZGV4IGUwYzY2ODUuLjA5YTk5NmYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcmVhZG1lLnR4dAorKysgYi9QQ2J1aWxkL3JlYWRtZS50eHQKQEAgLTEsNDkgKzEsNTQgQEAKK1F1aWNrIFN0YXJ0IEd1aWRlDQorLS0tLS0tLS0tLS0tLS0tLS0NCisNCisxLiAgSW5zdGFsbCBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAyMDE1LCBhbnkgZWRpdGlvbi4NCisyLiAgSW5zdGFsbCBTdWJ2ZXJzaW9uLCBhbmQgbWFrZSBzdXJlICdzdm4uZXhlJyBpcyBvbiB5b3VyIFBBVEguDQorMy4gIFJ1biAiYnVpbGQuYmF0IC1lIiB0byBidWlsZCBQeXRob24gaW4gMzItYml0IFJlbGVhc2UgY29uZmlndXJhdGlvbi4NCis0LiAgKE9wdGlvbmFsLCBidXQgcmVjb21tZW5kZWQpIFJ1biB0aGUgdGVzdCBzdWl0ZSB3aXRoICJydC5iYXQgLXEiLg0KKw0KKw0KIEJ1aWxkaW5nIFB5dGhvbiB1c2luZyBNaWNyb3NvZnQgVmlzdWFsIEMrKw0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIA0KIFRoaXMgZGlyZWN0b3J5IGlzIHVzZWQgdG8gYnVpbGQgQ1B5dGhvbiBmb3IgTWljcm9zb2Z0IFdpbmRvd3MgTlQgdmVyc2lvbg0KLTUuMSBvciBoaWdoZXIgKFdpbmRvd3MgWFAsIFdpbmRvd3MgU2VydmVyIDIwMDMsIG9yIGxhdGVyKSBvbiAzMiBhbmQgNjQNCis2LjAgb3IgaGlnaGVyIChXaW5kb3dzIFZpc3RhLCBXaW5kb3dzIFNlcnZlciAyMDA4LCBvciBsYXRlcikgb24gMzIgYW5kIDY0DQogYml0IHBsYXRmb3Jtcy4gIFVzaW5nIHRoaXMgZGlyZWN0b3J5IHJlcXVpcmVzIGFuIGluc3RhbGxhdGlvbiBvZg0KLU1pY3Jvc29mdCBWaXN1YWwgQysrIDIwMTAgKE1TVkMgMTAuMCkgb2YgYW55IGVkaXRpb24uICBUaGUgc3BlY2lmaWMNCitNaWNyb3NvZnQgVmlzdWFsIEMrKyAyMDE1IChNU1ZDIDE0LjApIG9mIGFueSBlZGl0aW9uLiAgVGhlIHNwZWNpZmljDQogcmVxdWlyZW1lbnRzIGFyZSBhcyBmb2xsb3dzOg0KIA0KLVZpc3VhbCBDKysgMjAxMCBFeHByZXNzIEVkaXRpb24NCi0gICAgUmVxdWlyZWQgZm9yIGJ1aWxkaW5nIDMyLWJpdCBEZWJ1ZyBhbmQgUmVsZWFzZSBjb25maWd1cmF0aW9uIGJ1aWxkcy4NCitWaXN1YWwgU3R1ZGlvIEV4cHJlc3MgMjAxNSBmb3IgRGVza3RvcA0KK1Zpc3VhbCBTdHVkaW8gUHJvZmVzc2lvbmFsIDIwMTUNCisgICAgRWl0aGVyIGVkaXRpb24gaXMgc3VmZmljaWVudCBmb3IgYnVpbGRpbmcgYWxsIGNvbmZpZ3VyYXRpb25zIGV4Y2VwdA0KKyAgICBmb3IgUHJvZmlsZSBHdWlkZWQgT3B0aW1pemF0aW9uLg0KICAgICBUaGUgUHl0aG9uIGJ1aWxkIHNvbHV0aW9uIHBjYnVpbGQuc2xuIG1ha2VzIHVzZSBvZiBTb2x1dGlvbiBGb2xkZXJzLA0KICAgICB3aGljaCB0aGlzIGVkaXRpb24gZG9lcyBub3Qgc3VwcG9ydC4gIEFueSB0aW1lIHBjYnVpbGQuc2xuIGlzIG9wZW5lZA0KLSAgICBvciByZWxvYWRlZCBieSBWaXN1YWwgQysrLCBhIHdhcm5pbmcgYWJvdXQgU29sdXRpb24gRm9sZGVycyB3aWxsIGJlDQotICAgIGRpc3BsYXllZCB3aGljaCBjYW4gYmUgc2FmZWx5IGRpc21pc3NlZCB3aXRoIG5vIGltcGFjdCBvbiB5b3VyDQorICAgIG9yIHJlbG9hZGVkIGJ5IFZpc3VhbCBTdHVkaW8sIGEgd2FybmluZyBhYm91dCBTb2x1dGlvbiBGb2xkZXJzIHdpbGwNCisgICAgYmUgZGlzcGxheWVkLCB3aGljaCBjYW4gYmUgc2FmZWx5IGRpc21pc3NlZCB3aXRoIG5vIGltcGFjdCBvbiB5b3VyDQogICAgIGFiaWxpdHkgdG8gYnVpbGQgUHl0aG9uLg0KLVZpc3VhbCBTdHVkaW8gMjAxMCBQcm9mZXNzaW9uYWwgRWRpdGlvbg0KICAgICBSZXF1aXJlZCBmb3IgYnVpbGRpbmcgNjQtYml0IERlYnVnIGFuZCBSZWxlYXNlIGNvbmZpZ3VyYXRpb24gYnVpbGRzDQotVmlzdWFsIFN0dWRpbyAyMDEwIFByZW1pdW0gRWRpdGlvbg0KK1Zpc3VhbCBTdHVkaW8gUHJlbWl1bSAyMDE1DQogICAgIFJlcXVpcmVkIGZvciBidWlsZGluZyBSZWxlYXNlIGNvbmZpZ3VyYXRpb24gYnVpbGRzIHRoYXQgbWFrZSB1c2Ugb2YNCiAgICAgUHJvZmlsZSBHdWlkZWQgT3B0aW1pemF0aW9uIChQR08pLCBvbiBlaXRoZXIgcGxhdGZvcm0uDQogDQotSW5zdGFsbGluZyBTZXJ2aWNlIFBhY2sgMSBmb3IgVmlzdWFsIFN0dWRpbyAyMDEwIGlzIGhpZ2hseSByZWNvbW1lbmRlZA0KLXRvIGF2b2lkIExOSzExMjMgZXJyb3JzLg0KLQ0KIEFsbCB5b3UgbmVlZCB0byBkbyB0byBidWlsZCBpcyBvcGVuIHRoZSBzb2x1dGlvbiAicGNidWlsZC5zbG4iIGluIFZpc3VhbA0KIFN0dWRpbywgc2VsZWN0IHRoZSBkZXNpcmVkIGNvbWJpbmF0aW9uIG9mIGNvbmZpZ3VyYXRpb24gYW5kIHBsYXRmb3JtLA0KLXRoZW4gYnVpbGQgd2l0aCAiQnVpbGQgU29sdXRpb24iIG9yIHRoZSBGNyBrZXlib2FyZCBzaG9ydGN1dC4gIFlvdSBjYW4NCi1hbHNvIGJ1aWxkIGZyb20gdGhlIGNvbW1hbmQgbGluZSB1c2luZyB0aGUgImJ1aWxkLmJhdCIgc2NyaXB0IGluIHRoaXMNCi1kaXJlY3RvcnkuICBUaGUgc29sdXRpb24gaXMgY29uZmlndXJlZCB0byBidWlsZCB0aGUgcHJvamVjdHMgaW4gdGhlDQotY29ycmVjdCBvcmRlci4NCit0aGVuIGJ1aWxkIHdpdGggIkJ1aWxkIFNvbHV0aW9uIi4gIFlvdSBjYW4gYWxzbyBidWlsZCBmcm9tIHRoZSBjb21tYW5kDQorbGluZSB1c2luZyB0aGUgImJ1aWxkLmJhdCIgc2NyaXB0IGluIHRoaXMgZGlyZWN0b3J5OyBzZWUgYmVsb3cgZm9yDQorZGV0YWlscy4gIFRoZSBzb2x1dGlvbiBpcyBjb25maWd1cmVkIHRvIGJ1aWxkIHRoZSBwcm9qZWN0cyBpbiB0aGUgY29ycmVjdA0KK29yZGVyLg0KIA0KIFRoZSBzb2x1dGlvbiBjdXJyZW50bHkgc3VwcG9ydHMgdHdvIHBsYXRmb3Jtcy4gIFRoZSBXaW4zMiBwbGF0Zm9ybSBpcw0KLXVzZWQgdG8gYnVpbGQgc3RhbmRhcmQgeDg2LWNvbXBhdGlibGUgMzItYml0IGJpbmFyaWVzLCBvdXRwdXQgaW50byB0aGlzDQotZGlyZWN0b3J5LiAgVGhlIHg2NCBwbGF0Zm9ybSBpcyB1c2VkIGZvciBidWlsZGluZyA2NC1iaXQgQU1ENjQgKGFrYQ0KLXg4Nl82NCBvciBFTTY0VCkgYmluYXJpZXMsIG91dHB1dCBpbnRvIHRoZSBhbWQ2NCBzdWItZGlyZWN0b3J5IHdoaWNoDQotd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4gIFRoZSBJdGFuaXVtIChJQS02NCkNCi1wbGF0Zm9ybSBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiAgU2VlIHRoZSAiQnVpbGRpbmcgZm9yIEFNRDY0IiBzZWN0aW9uDQotYmVsb3cgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgNjQtYml0IGJ1aWxkcy4NCit1c2VkIHRvIGJ1aWxkIHN0YW5kYXJkIHg4Ni1jb21wYXRpYmxlIDMyLWJpdCBiaW5hcmllcywgb3V0cHV0IGludG8gdGhlDQord2luMzIgc3ViLWRpcmVjdG9yeS4gIFRoZSB4NjQgcGxhdGZvcm0gaXMgdXNlZCBmb3IgYnVpbGRpbmcgNjQtYml0IEFNRDY0DQorKGFrYSB4ODZfNjQgb3IgRU02NFQpIGJpbmFyaWVzLCBvdXRwdXQgaW50byB0aGUgYW1kNjQgc3ViLWRpcmVjdG9yeS4NCitUaGUgSXRhbml1bSAoSUEtNjQpIHBsYXRmb3JtIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuDQogDQogRm91ciBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHN1cHBvcnRlZCBieSB0aGUgc29sdXRpb246DQogRGVidWcNCiAgICAgVXNlZCB0byBidWlsZCBQeXRob24gd2l0aCBleHRyYSBkZWJ1Z2dpbmcgY2FwYWJpbGl0aWVzLCBlcXVpdmFsZW50DQogICAgIHRvIHVzaW5nIC4vY29uZmlndXJlIC0td2l0aC1weWRlYnVnIG9uIFVOSVguICBBbGwgYmluYXJpZXMgYnVpbHQNCiAgICAgdXNpbmcgdGhpcyBjb25maWd1cmF0aW9uIGhhdmUgIl9kIiBhZGRlZCB0byB0aGVpciBuYW1lOg0KLSAgICBweXRob24zNF9kLmRsbCwgcHl0aG9uX2QuZXhlLCBwYXJzZXJfZC5weWQsIGFuZCBzbyBvbi4gIEJvdGggdGhlDQorICAgIHB5dGhvbjM1X2QuZGxsLCBweXRob25fZC5leGUsIHBhcnNlcl9kLnB5ZCwgYW5kIHNvIG9uLiAgQm90aCB0aGUNCiAgICAgYnVpbGQgYW5kIHJ0IChydW4gdGVzdCkgYmF0Y2ggZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgYWNjZXB0IGEgLWQNCiAgICAgb3B0aW9uIGZvciBkZWJ1ZyBidWlsZHMuICBJZiB5b3UgYXJlIGJ1aWxkaW5nIFB5dGhvbiB0byBoZWxwIHdpdGgNCiAgICAgZGV2ZWxvcG1lbnQgb2YgQ1B5dGhvbiwgeW91IHdpbGwgbW9zdCBsaWtlbHkgdXNlIHRoaXMgY29uZmlndXJhdGlvbi4NCkBAIC01MiwyOCArNTcsMzEgQEAKICAgICByZXF1aXJlcyBQcmVtaXVtIEVkaXRpb24gb2YgVmlzdWFsIFN0dWRpby4gIFNlZSB0aGUgIlByb2ZpbGUNCiAgICAgR3VpZGVkIE9wdGltaXphdGlvbiIgc2VjdGlvbiBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gIEJ1aWxkDQogICAgIG91dHB1dCBmcm9tIGVhY2ggb2YgdGhlc2UgY29uZmlndXJhdGlvbnMgbGFuZHMgaW4gaXRzIG93bg0KLSAgICBzdWItZGlyZWN0b3J5IG9mIHRoaXMgZGlyZWN0b3J5LiAgVGhlIG9mZmljaWFsIFB5dGhvbiByZWxlYXNlcyBhcmUNCi0gICAgYnVpbHQgdXNpbmcgdGhlc2UgY29uZmlndXJhdGlvbnMuDQorICAgIHN1Yi1kaXJlY3Rvcnkgb2YgdGhpcyBkaXJlY3RvcnkuICBUaGUgb2ZmaWNpYWwgUHl0aG9uIHJlbGVhc2VzIG1heQ0KKyAgICBiZSBidWlsdCB1c2luZyB0aGVzZSBjb25maWd1cmF0aW9ucy4NCiBSZWxlYXNlDQogICAgIFVzZWQgdG8gYnVpbGQgUHl0aG9uIGFzIGl0IGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gcHJvZHVjdGlvbg0KICAgICBzZXR0aW5ncywgdGhvdWdoIHdpdGhvdXQgUEdPLg0KIA0KIA0KLUxlZ2FjeSBzdXBwb3J0DQotLS0tLS0tLS0tLS0tLS0NCitCdWlsZGluZyBQeXRob24gdXNpbmcgdGhlIGJ1aWxkLmJhdCBzY3JpcHQNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogDQotWW91IGNhbiBmaW5kIGJ1aWxkIGRpcmVjdG9yaWVzIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBWaXN1YWwgU3R1ZGlvIGFuZA0KLVZpc3VhbCBDKysgaW4gdGhlIFBDIGRpcmVjdG9yeS4gVGhlIGxlZ2FjeSBidWlsZCBkaXJlY3RvcmllcyBhcmUgbm8NCi1sb25nZXIgYWN0aXZlbHkgbWFpbnRhaW5lZCBhbmQgbWF5IG5vdCB3b3JrIG91dCBvZiB0aGUgYm94Lg0KK0luIHRoaXMgZGlyZWN0b3J5IHlvdSBjYW4gZmluZCBidWlsZC5iYXQsIGEgc2NyaXB0IGRlc2lnbmVkIHRvIG1ha2UNCitidWlsZGluZyBQeXRob24gb24gV2luZG93cyBzaW1wbGVyLiAgVGhpcyBzY3JpcHQgd2lsbCB1c2UgdGhlIGVudi5iYXQNCitzY3JpcHQgdG8gZGV0ZWN0IG9uZSBvZiBWaXN1YWwgU3R1ZGlvIDIwMTUsIDIwMTMsIDIwMTIsIG9yIDIwMTAsIGFueSBvZg0KK3doaWNoIG1heSBiZSB1c2VkIHRvIGJ1aWxkIFB5dGhvbiwgdGhvdWdoIG9ubHkgVmlzdWFsIFN0dWRpbyAyMDE1IGlzDQorb2ZmaWNpYWxseSBzdXBwb3J0ZWQuDQogDQotQ3VycmVudGx5LCB0aGUgb25seSBsZWdhY3kgYnVpbGQgZGlyZWN0b3J5IGlzIFBDXFZTOS4wLCBmb3IgVmlzdWFsDQotU3R1ZGlvIDIwMDggKDkuMCkuDQorQnkgZGVmYXVsdCwgYnVpbGQuYmF0IHdpbGwgYnVpbGQgUHl0aG9uIGluIFJlbGVhc2UgY29uZmlndXJhdGlvbiBmb3INCit0aGUgMzItYml0IFdpbjMyIHBsYXRmb3JtLiAgSXQgYWNjZXB0cyBzZXZlcmFsIGFyZ3VtZW50cyB0byBjaGFuZ2UNCit0aGlzIGJlaGF2aW9yLCB0cnkgYGJ1aWxkLmJhdCAtaGAgdG8gbGVhcm4gbW9yZS4NCiANCiANCiBDIFJ1bnRpbWUNCiAtLS0tLS0tLS0NCiANCi1WaXN1YWwgU3R1ZGlvIDIwMTAgdXNlcyB2ZXJzaW9uIDEwIG9mIHRoZSBDIHJ1bnRpbWUgKE1TVkNSVDEwKS4gIFRoZQ0KK1Zpc3VhbCBTdHVkaW8gMjAxNSB1c2VzIHZlcnNpb24gMTQgb2YgdGhlIEMgcnVudGltZSAoTVNWQ1JUMTQpLiAgVGhlDQogZXhlY3V0YWJsZXMgbm8gbG9uZ2VyIHVzZSB0aGUgIlNpZGUgYnkgU2lkZSIgYXNzZW1ibGllcyB1c2VkIGluIHByZXZpb3VzDQogdmVyc2lvbnMgb2YgdGhlIGNvbXBpbGVyLiAgVGhpcyBzaW1wbGlmaWVzIGRpc3RyaWJ1dGlvbiBvZiBhcHBsaWNhdGlvbnMuDQogDQpAQCAtOTgsMTIgKzEwNiw2IEBACiAgICAgLmRsbCBhbmQgLmxpYg0KIHB5dGhvbg0KICAgICAuZXhlDQota2lsbF9weXRob24NCi0gICAga2lsbF9weXRob24uZXhlLCBhIHNtYWxsIHByb2dyYW0gZGVzaWduZWQgdG8ga2lsbCBhbnkgaW5zdGFuY2VzIG9mDQotICAgIHB5dGhvbihfZCkuZXhlIHRoYXQgYXJlIHJ1bm5pbmcgYW5kIGxpdmUgaW4gdGhlIGJ1aWxkIG91dHB1dA0KLSAgICBkaXJlY3Rvcnk7IHRoaXMgaXMgbWVhbnQgdG8gYXZvaWQgYnVpbGQgaXNzdWVzIGR1ZSB0byBsb2NrZWQgZmlsZXMNCi1tYWtlX2J1aWxkaW5mbywgbWFrZV92ZXJzaW9uaW5mbw0KLSAgICBoZWxwZXJzIHRvIHByb3ZpZGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIHRoZSBidWlsZCBwcm9jZXNzDQogDQogVGhlc2Ugc3ViLXByb2plY3RzIHByb3ZpZGUgZXh0cmEgZXhlY3V0YWJsZXMgdGhhdCBhcmUgdXNlZnVsIGZvciBydW5uaW5nDQogQ1B5dGhvbiBpbiBkaWZmZXJlbnQgd2F5czoNCkBAIC0xMjEsMTQgKzEyMywxMCBAQAogICAgIHB1cnBvc2VzLCB1c2VkIGJ5IHRlc3RfY2FwaS5weQ0KIA0KIFRoZXNlIGFyZSBtaXNjZWxsYW5lb3VzIHN1Yi1wcm9qZWN0cyB0aGF0IGRvbid0IHJlYWxseSBmaXQgdGhlIG90aGVyDQotY2F0ZWdvcmllcy4gIEJ5IGRlZmF1bHQsIHRoZXNlIHByb2plY3RzIGRvIG5vdCBidWlsZCBpbiBEZWJ1Zw0KLWNvbmZpZ3VyYXRpb246DQorY2F0ZWdvcmllczoNCiBfZnJlZXplX2ltcG9ydGxpYg0KICAgICBfZnJlZXplX2ltcG9ydGxpYi5leGUsIHVzZWQgdG8gcmVnZW5lcmF0ZSBQeXRob25caW1wb3J0bGliLmggYWZ0ZXINCiAgICAgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZSB0byBMaWJcaW1wb3J0bGliXF9ib290c3RyYXAucHkNCi1iZGlzdF93aW5pbnN0DQotICAgIC4uXExpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTEwLjBbLWFtZDY0XS5leGUsIHRoZSBiYXNlDQotICAgIGV4ZWN1dGFibGUgdXNlZCBieSB0aGUgZGlzdHV0aWxzIGJkaXN0X3dpbmluc3QgY29tbWFuZA0KIHB5dGhvbjNkbGwNCiAgICAgcHl0aG9uMy5kbGwsIHRoZSBQRVAgMzg0IFN0YWJsZSBBQkkgZGxsDQogeHhsaW1pdGVkDQpAQCAtMTg0LDU2ICsxODIsNDkgQEAKICAgICB5b3Ugc2hvdWxkIGZpcnN0IHRyeSB0byB1cGRhdGUgTkFTTSBhbmQgZG8gYSBmdWxsIHJlYnVpbGQgb2YNCiAgICAgT3BlblNTTC4gIElmIHlvdSB1c2UgdGhlIFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQgbWV0aG9kDQogICAgIGZvciBnZXR0aW5nIHNvdXJjZXMsIGl0IGFsc28gZG93bmxvYWRzIGEgdmVyc2lvbiBvZiBOQVNNIHdoaWNoIHRoZQ0KLSAgICBzc2wgYnVpbGQgc2NyaXB0IHdpbGwgYWRkIHRvIFBBVEguDQorICAgIGxpYmVheS9zc2xlYXkgc3ViLXByb2plY3RzIHVzZS4NCiANCi0gICAgSWYgeW91IGxpa2UgdG8gdXNlIHRoZSBvZmZpY2lhbCBzb3VyY2VzIGluc3RlYWQgb2YgdGhlIGZpbGVzIGZyb20NCi0gICAgcHl0aG9uLm9yZydzIHN1YnZlcnNpb24gcmVwb3NpdG9yeSwgUGVybCBpcyByZXF1aXJlZCB0byBidWlsZCB0aGUNCi0gICAgbmVjZXNzYXJ5IG1ha2VmaWxlcyBhbmQgYXNzZW1ibHkgZmlsZXMuICBBY3RpdmVQZXJsIGlzIGF2YWlsYWJsZQ0KLSAgICBmcm9tDQorICAgIFRoZSBsaWJlYXkvc3NsZWF5IHN1Yi1wcm9qZWN0cyBleHBlY3QgeW91ciBPcGVuU1NMIHNvdXJjZXMgdG8gaGF2ZQ0KKyAgICBhbHJlYWR5IGJlZW4gY29uZmlndXJlZCBhbmQgYmUgcmVhZHkgdG8gYnVpbGQuICBJZiB5b3UgZ2V0IHlvdXIgc291cmNlcw0KKyAgICBmcm9tIHN2bi5weXRob24ub3JnIGFzIHN1Z2dlc3RlZCBpbiB0aGUgIkdldHRpbmcgRXh0ZXJuYWwgU291cmNlcyINCisgICAgc2VjdGlvbiBiZWxvdywgdGhlIE9wZW5TU0wgc291cmNlIHdpbGwgYWxyZWFkeSBiZSByZWFkeSB0byBnby4gIElmDQorICAgIHlvdSB3YW50IHRvIGJ1aWxkIGEgZGlmZmVyZW50IHZlcnNpb24sIHlvdSB3aWxsIG5lZWQgdG8gcnVuDQorDQorICAgICAgIFBDYnVpbGRccHJlcGFyZV9zc2wucHkgcGF0aFx0b1xvcGVuc3NsLXNvdXJjZS1kaXINCisNCisgICAgVGhhdCBzY3JpcHQgd2lsbCBwcmVwYXJlIHlvdXIgT3BlblNTTCBzb3VyY2VzIGluIHRoZSBzYW1lIHdheSB0aGF0DQorICAgIHRob3NlIGF2YWlsYWJsZSBvbiBzdm4ucHl0aG9uLm9yZyBoYXZlIGJlZW4gcHJlcGFyZWQuICBOb3RlIHRoYXQNCisgICAgUGVybCBtdXN0IGJlIGluc3RhbGxlZCBhbmQgYXZhaWxhYmxlIG9uIHlvdXIgUEFUSCB0byBjb25maWd1cmUNCisgICAgT3BlblNTTC4gIEFjdGl2ZVBlcmwgaXMgcmVjb21tZW5kZWQgYW5kIGlzIGF2YWlsYWJsZSBmcm9tDQogICAgICAgICBodHRwOi8vd3d3LmFjdGl2ZXN0YXRlLmNvbS9hY3RpdmVwZXJsLw0KLSAgICBUaGUgc3ZuLnB5dGhvbi5vcmcgdmVyc2lvbiBjb250YWlucyBwcmUtYnVpbHQgbWFrZWZpbGVzIGFuZCBhc3NlbWJseQ0KLSAgICBmaWxlcy4NCiANCi0gICAgVGhlIGJ1aWxkIHByb2Nlc3MgbWFrZXMgc3VyZSB0aGF0IG5vIHBhdGVudGVkIGFsZ29yaXRobXMgYXJlDQotICAgIGluY2x1ZGVkLiAgRm9yIG5vdyBSQzUsIE1EQzIgYW5kIElERUEgYXJlIGV4Y2x1ZGVkIGZyb20gdGhlIGJ1aWxkLg0KLSAgICBZb3UgbWF5IGhhdmUgdG8gbWFudWFsbHkgcmVtb3ZlICQoT0JKX0QpXGlfKi5vYmogZnJvbSBtc1xudC5tYWsgaWYNCi0gICAgdXNpbmcgb2ZmaWNpYWwgc291cmNlczsgdGhlIHN2bi5weXRob24ub3JnLWhvc3RlZCB2ZXJzaW9uIGlzIGFscmVhZHkNCi0gICAgZml4ZWQuDQotDQotICAgIFRoZSBzc2wudmN4cHJvaiBzdWItcHJvamVjdCBzaW1wbHkgaW52b2tlcyBQQ2J1aWxkL2J1aWxkX3NzbC5weSwNCi0gICAgd2hpY2ggbG9jYXRlcyBhbmQgYnVpbGRzIE9wZW5TU0wuDQotDQotICAgIGJ1aWxkX3NzbC5weSBhdHRlbXB0cyB0byBjYXRjaCB0aGUgbW9zdCBjb21tb24gZXJyb3JzIChzdWNoIGFzIG5vdA0KLSAgICBiZWluZyBhYmxlIHRvIGZpbmQgT3BlblNTTCBzb3VyY2VzLCBvciBub3QgYmVpbmcgYWJsZSB0byBmaW5kIGEgUGVybA0KLSAgICB0aGF0IHdvcmtzIHdpdGggT3BlblNTTCkgYW5kIGdpdmUgYSByZWFzb25hYmxlIGVycm9yIG1lc3NhZ2UuICBJZg0KLSAgICB5b3UgaGF2ZSBhIHByb2JsZW0gdGhhdCBkb2Vzbid0IHNlZW0gdG8gYmUgaGFuZGxlZCBjb3JyZWN0bHkgKGUuZy4sDQotICAgIHlvdSBrbm93IHlvdSBoYXZlIEFjdGl2ZVBlcmwgYnV0IHdlIGNhbid0IGZpbmQgaXQpLCBwbGVhc2UgdGFrZSBhDQotICAgIHBlZWsgYXQgYnVpbGRfc3NsLnB5IGFuZCBzdWdnZXN0IHBhdGNoZXMuICBOb3RlIHRoYXQgYnVpbGRfc3NsLnB5DQotICAgIHNob3VsZCBiZSBhYmxlIHRvIGJlIHJ1biBkaXJlY3RseSBmcm9tIHRoZSBjb21tYW5kLWxpbmUuDQotDQotICAgIFRoZSBzc2wgc3ViLXByb2plY3QgZG9lcyBub3QgaGF2ZSB0aGUgYWJpbGl0eSB0byBjbGVhbiB0aGUgT3BlblNTTA0KLSAgICBidWlsZDsgaWYgeW91IG5lZWQgdG8gcmVidWlsZCwgeW91J2xsIGhhdmUgdG8gY2xlYW4gaXQgYnkgaGFuZC4NCisgICAgVGhlIGxpYmVheSBhbmQgc3NsZWF5IHN1Yi1wcm9qZWN0cyB3aWxsIGJ1aWxkIHRoZSBtb2R1bGVzIG9mIE9wZW5TU0wNCisgICAgcmVxdWlyZWQgYnkgX3NzbCBhbmQgX2hhc2hsaWIgYW5kIG1heSBuZWVkIHRvIGJlIG1hbnVhbGx5IHVwZGF0ZWQgd2hlbg0KKyAgICB1cGdyYWRpbmcgdG8gYSBuZXdlciB2ZXJzaW9uIG9mIE9wZW5TU0wgb3Igd2hlbiBhZGRpbmcgbmV3DQorICAgIGZ1bmN0aW9uYWxpdHkgdG8gX3NzbCBvciBfaGFzaGxpYi4gVGhleSB3aWxsIG5vdCBjbGVhbiB1cCB0aGVpciBvdXRwdXQNCisgICAgd2l0aCB0aGUgbm9ybWFsIENsZWFuIHRhcmdldDsgQ2xlYW5BbGwgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4NCiBfc3FsaXRlMw0KICAgICBXcmFwcyBTUUxpdGUgMy44LjExLjAsIHdoaWNoIGlzIGl0c2VsZiBidWlsdCBieSBzcWxpdGUzLnZjeHByb2oNCiAgICAgSG9tZXBhZ2U6DQogICAgICAgICBodHRwOi8vd3d3LnNxbGl0ZS5vcmcvDQogX3RraW50ZXINCi0gICAgV3JhcHMgdmVyc2lvbiA4LjYuMSBvZiB0aGUgVGsgd2luZG93aW5nIHN5c3RlbS4NCisgICAgV3JhcHMgdmVyc2lvbiA4LjYuNCBvZiB0aGUgVGsgd2luZG93aW5nIHN5c3RlbS4NCiAgICAgSG9tZXBhZ2U6DQogICAgICAgICBodHRwOi8vd3d3LnRjbC50ay8NCiANCi0gICAgVW5saWtlIHRoZSBvdGhlciBleHRlcm5hbCBsaWJyYXJpZXMgbGlzdGVkIGFib3ZlLCBUayBtdXN0IGJlIGJ1aWx0DQotICAgIHNlcGFyYXRlbHkgYmVmb3JlIHRoZSBfdGtpbnRlciBtb2R1bGUgY2FuIGJlIGJ1aWx0LiBUaGlzIG1lYW5zIHRoYXQNCi0gICAgYSBwcmUtYnVpbHQgVGNsL1RrIGluc3RhbGxhdGlvbiBpcyBleHBlY3RlZCBpbiAuLlxleHRlcm5hbHNcdGNsdGsNCi0gICAgKHRjbHRrNjQgZm9yIDY0LWJpdCkgcmVsYXRpdmUgdG8gdGhpcyBkaXJlY3Rvcnk7IHRoZSBlYXNpZXN0IHdheSB0bw0KLSAgICBkbyBzbyBpcyB0byBidWlsZCBQeXRob24gdXNpbmcgYGJ1aWxkLmJhdCAtZWAsIHdoaWNoIHdpbGwgYnVpbGQNCi0gICAgVGNsLCBUaywgYW5kIFRpeCBhbmQgaW5zdGFsbCB0aGVtIGFzIGV4cGVjdGVkLiAgTm90ZSB0aGF0IHRvDQotICAgIGltcG9ydCBhbmQgdXNlIHRraW50ZXIsIHRoZSBUY2wgYW5kIFRrIERMTHMgbXVzdCBiZSBzb21ld2hlcmUgdGhhdA0KLSAgICBweXRob24uZXhlIGNhbiBmaW5kIHRoZW0sIHdoaWNoIG1lYW5zIHRoYXQgZWl0aGVyDQotICAgIC4uXGV4dGVybmFsc1x0Y2x0a1s2NF1cYmluIG11c3QgYmUgYWRkZWQgdG8gUEFUSCwgb3IgdGhlIERMTHMgbXVzdA0KLSAgICBiZSBjb3BpZWQgZnJvbSB0aGF0IGZvbGRlciB0byBiZSBhbG9uZ3NpZGUgcHl0aG9uLmV4ZS4gIGBidWlsZC5iYXRgDQotICAgIHRha2VzIGNhcmUgb2YgaXQgZm9yIHlvdSBieSBjb3B5aW5nIHRoZSBETExzIGludG8gdGhlIGJ1aWxkDQotICAgIGRpcmVjdG9yeS4NCisgICAgVGtpbnRlcidzIGRlcGVuZGVuY2llcyBhcmUgYnVpbHQgYnkgdGhlIHRjbC52Y3hwcm9qIGFuZCB0ay52Y3hwcm9qDQorICAgIHByb2plY3RzLiAgVGhlIHRpeC52Y3hwcm9qIHByb2plY3QgYWxzbyBidWlsZHMgdGhlIFRpeCBleHRlbmRlZA0KKyAgICB3aWRnZXQgc2V0IGZvciB1c2Ugd2l0aCBUa2ludGVyLg0KKw0KKyAgICBUaG9zZSB0aHJlZSBwcm9qZWN0cyBpbnN0YWxsIHRoZWlyIHJlc3BlY3RpdmUgY29tcG9uZW50cyBpbiBhDQorICAgIGRpcmVjdG9yeSBhbG9uZ3NpZGUgdGhlIHNvdXJjZSBkaXJlY3RvcmllcyBjYWxsZWQgInRjbHRrIiBvbg0KKyAgICBXaW4zMiBhbmQgInRjbHRrNjQiIG9uIHg2NC4gIFRoZXkgYWxzbyBjb3B5IHRoZSBUY2wgYW5kIFRrIERMTHMNCisgICAgaW50byB0aGUgY3VycmVudCBvdXRwdXQgZGlyZWN0b3J5LCB3aGljaCBzaG91bGQgZW5zdXJlIHRoYXQgVGtpbnRlcg0KKyAgICBpcyBhYmxlIHRvIGxvYWQgVGNsL1RrIHdpdGhvdXQgaGF2aW5nIHRvIGNoYW5nZSB5b3VyIFBBVEguDQorDQorICAgIFRoZSB0Y2wsIHRrLCBhbmQgdGl4IHN1Yi1wcm9qZWN0cyBkbyBub3QgY2xlYW4gdGhlaXIgYnVpbGRzIHdpdGgNCisgICAgdGhlIG5vcm1hbCBDbGVhbiB0YXJnZXQ7IGlmIHlvdSBuZWVkIHRvIHJlYnVpbGQsIHlvdSBzaG91bGQgdXNlIHRoZQ0KKyAgICBDbGVhbkFsbCB0YXJnZXQgb3IgbWFudWFsbHkgZGVsZXRlIHRoZWlyIGJ1aWxkcy4NCiANCiANCiBHZXR0aW5nIEV4dGVybmFsIFNvdXJjZXMNCkBAIC0yNDIsMjQgKzIzMywyMSBAQAogVGhlIGxhc3QgY2F0ZWdvcnkgb2Ygc3ViLXByb2plY3RzIGxpc3RlZCBhYm92ZSB3cmFwIGV4dGVybmFsIHByb2plY3RzDQogUHl0aG9uIGRvZXNuJ3QgY29udHJvbCwgYW5kIGFzIHN1Y2ggYSBsaXR0bGUgbW9yZSB3b3JrIGlzIHJlcXVpcmVkIGluDQogb3JkZXIgdG8gZG93bmxvYWQgdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlcyBmb3IgZWFjaCBwcm9qZWN0IGJlZm9yZSB0aGV5DQotY2FuIGJlIGJ1aWx0LiAgVGhlIGVhc2llc3Qgd2F5IHRvIGRvIHRoaXMgaXMgdG8gdXNlIHRoZSBgYnVpbGQuYmF0YA0KLXNjcmlwdCBpbiB0aGlzIGRpcmVjdG9yeSB0byBidWlsZCBQeXRob24sIGFuZCBwYXNzIHRoZSAnLWUnIHN3aXRjaCB0bw0KLXRlbGwgaXQgdG8gdXNlIGdldF9leHRlcm5hbHMuYmF0IHRvIGZldGNoIGV4dGVybmFsIHNvdXJjZXMgYW5kIGJ1aWxkDQotVGNsL1RrIGFuZCBUaXguICBUbyB1c2UgZ2V0X2V4dGVybmFscy5iYXQsIHlvdSdsbCBuZWVkIHRvIGhhdmUNCi1TdWJ2ZXJzaW9uIGluc3RhbGxlZCBhbmQgc3ZuLmV4ZSBvbiB5b3VyIFBBVEguICBUaGUgc2NyaXB0IHdpbGwgZmV0Y2gNCi1leHRlcm5hbCBsaWJyYXJ5IHNvdXJjZXMgZnJvbSBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvZXh0ZXJuYWwgYW5kIHBsYWNlDQotdGhlbSBpbiAuLlxleHRlcm5hbHMgKHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5KS4NCitjYW4gYmUgYnVpbHQuICBIb3dldmVyLCBhIHNpbXBsZSBzY3JpcHQgaXMgcHJvdmlkZWQgdG8gbWFrZSB0aGlzIGFzDQorcGFpbmxlc3MgYXMgcG9zc2libGUsIGNhbGxlZCAiZ2V0X2V4dGVybmFscy5iYXQiIGFuZCBsb2NhdGVkIGluIHRoaXMNCitkaXJlY3RvcnkuICBUaGlzIHNjcmlwdCBleHRyYWN0cyBhbGwgdGhlIGV4dGVybmFsIHN1Yi1wcm9qZWN0cyBmcm9tDQorICAgIGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbA0KK3ZpYSBTdWJ2ZXJzaW9uIChzbyB5b3UnbGwgbmVlZCBzdm4uZXhlIG9uIHlvdXIgUEFUSCkgYW5kIHBsYWNlcyB0aGVtDQoraW4gLi5cZXh0ZXJuYWxzIChyZWxhdGl2ZSB0byB0aGlzIGRpcmVjdG9yeSkuDQogDQorSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBkb3dubG9hZCBzb3VyY2VzIGZyb20gZWFjaCBwcm9qZWN0J3MgaG9tZXBhZ2UsDQordGhvdWdoIHlvdSBtYXkgaGF2ZSB0byBjaGFuZ2UgZm9sZGVyIG5hbWVzIG9yIHBhc3MgdGhlIG5hbWVzIHRvIE1TQnVpbGQNCithcyB0aGUgdmFsdWVzIG9mIGNlcnRhaW4gcHJvcGVydGllcyBpbiBvcmRlciBmb3IgdGhlIGJ1aWxkIHNvbHV0aW9uIHRvDQorZmluZCB0aGVtLiAgVGhpcyBpcyBhbiBhZHZhbmNlZCB0b3BpYyBhbmQgbm90IG5lY2Vzc2FyaWx5IGZ1bGx5DQorc3VwcG9ydGVkLg0KIA0KLUJ1aWxkaW5nIGZvciBBTUQ2NA0KLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLQ0KLVRoZSBidWlsZCBwcm9jZXNzIGZvciBBTUQ2NCAvIHg2NCBpcyB2ZXJ5IHNpbWlsYXIgdG8gc3RhbmRhcmQgYnVpbGRzLA0KLXlvdSBqdXN0IGhhdmUgdG8gc2V0IHg2NCBhcyBwbGF0Zm9ybS4gSW4gYWRkaXRpb24sIHRoZSBIT1NUX1BZVEhPTg0KLWVudmlyb25tZW50IHZhcmlhYmxlIG11c3QgcG9pbnQgdG8gYSBQeXRob24gaW50ZXJwcmV0ZXIgKGF0IGxlYXN0IDIuNCksDQotdG8gc3VwcG9ydCBjcm9zcy1jb21waWxhdGlvbiBmcm9tIFdpbjMyLiAgTm90ZSB0aGF0IFZpc3VhbCBTdHVkaW8NCi1yZXF1aXJlcyBQcm9mZXNzaW9uYWwgRWRpdGlvbiBvciBiZXR0ZXIgaW4gb3JkZXIgdG8gYnVpbGQgNjQtYml0DQotYmluYXJpZXMuDQorVGhlIGdldF9leHRlcm5hbHMuYmF0IHNjcmlwdCBpcyBjYWxsZWQgYXV0b21hdGljYWxseSBieSBidWlsZC5iYXQgd2hlbg0KK3lvdSBwYXNzIHRoZSAnLWUnIG9wdGlvbiB0byBpdC4NCiANCiANCiBQcm9maWxlIEd1aWRlZCBPcHRpbWl6YXRpb24NCkBAIC0yNzYsNyArMjY0LDcgQEAKIFBHSSBweXRob24sIGFuZCBmaW5hbGx5IGNyZWF0ZXMgdGhlIG9wdGltaXplZCBmaWxlcy4NCiANCiBTZWUNCi0gICAgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2U3azMyZjRrKFZTLjEwMCkuYXNweA0KKyAgICBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvZTdrMzJmNGsoVlMuMTQwKS5hc3B4DQogZm9yIG1vcmUgb24gdGhpcyB0b3BpYy4NCiANCiANCkBAIC0yOTQsMjcgKzI4MiwxOSBAQAogVmlzdWFsIFN0dWRpbyBwcm9wZXJ0aWVzDQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogDQotVGhlIFBDYnVpbGQgc29sdXRpb24gbWFrZXMgaGVhdnkgdXNlIG9mIFZpc3VhbCBTdHVkaW8gcHJvcGVydHkgZmlsZXMNCi0oKi5wcm9wcykuIFRoZSBwcm9wZXJ0aWVzIGNhbiBiZSB2aWV3ZWQgYW5kIGFsdGVyZWQgaW4gdGhlIFByb3BlcnR5DQotTWFuYWdlciAoVmlldyAtPiBPdGhlciBXaW5kb3dzIC0+IFByb3BlcnR5IE1hbmFnZXIpLg0KK1RoZSBQQ2J1aWxkIHNvbHV0aW9uIG1ha2VzIHVzZSBvZiBWaXN1YWwgU3R1ZGlvIHByb3BlcnR5IGZpbGVzICgqLnByb3BzKQ0KK3RvIHNpbXBsaWZ5IGVhY2ggcHJvamVjdC4gVGhlIHByb3BlcnRpZXMgY2FuIGJlIHZpZXdlZCBpbiB0aGUgUHJvcGVydHkNCitNYW5hZ2VyIChWaWV3IC0+IE90aGVyIFdpbmRvd3MgLT4gUHJvcGVydHkgTWFuYWdlcikgYnV0IHNob3VsZCBiZQ0KK2NhcmVmdWxseSBtb2RpZmllZCBieSBoYW5kLg0KIA0KLVRoZSBwcm9wZXJ0eSBmaWxlcyB1c2VkIGFyZSAoKy0tID0gImFsc28gaW1wb3J0cyIpOg0KLSAqIGRlYnVnIChkZWJ1ZyBtYWNybzogX0RFQlVHKQ0KLSAqIHBnaW5zdHJ1bWVudCAoUEdPKQ0KLSAqIHBndXBkYXRlIChQR08pDQotICAgICstLSBwZ2luc3RydW1lbnQNCi0gKiBweWQgKHB5dGhvbiBleHRlbnNpb24sIHJlbGVhc2UgYnVpbGQpDQotICAgICstLSByZWxlYXNlDQotICAgICstLSBweXByb2plY3QNCi0gKiBweWRfZCAocHl0aG9uIGV4dGVuc2lvbiwgZGVidWcgYnVpbGQpDQotICAgICstLSBkZWJ1Zw0KLSAgICArLS0gcHlwcm9qZWN0DQotICogcHlwcm9qZWN0IChiYXNlIHNldHRpbmdzIGZvciBhbGwgcHJvamVjdHMsIHVzZXIgbWFjcm9zIGxpa2UgUHlEbGxOYW1lKQ0KLSAqIHJlbGVhc2UgKHJlbGVhc2UgbWFjcm86IE5ERUJVRykNCi0gKiBzcWxpdGUzICh1c2VkIG9ubHkgYnkgc3FsaXRlMy52Y3hwcm9qKQ0KLSAqIHg2NCAoQU1ENjQgLyB4NjQgcGxhdGZvcm0gc3BlY2lmaWMgc2V0dGluZ3MpDQorVGhlIHByb3BlcnR5IGZpbGVzIHVzZWQgYXJlOg0KKyAqIHB5dGhvbiAodmVyc2lvbnMsIGRpcmVjdG9yaWVzIGFuZCBidWlsZCBuYW1lcykNCisgKiBweXByb2plY3QgKGJhc2Ugc2V0dGluZ3MgZm9yIGFsbCBwcm9qZWN0cykNCisgKiBvcGVuc3NsICh1c2VkIGJ5IGxpYmVheSBhbmQgc3NsZWF5IHByb2plY3RzKQ0KKyAqIHRjbHRrICh1c2VkIGJ5IF90a2ludGVyLCB0Y2wsIHRrIGFuZCB0aXggcHJvamVjdHMpDQogDQotVGhlIHB5cHJvamVjdCBwcm9wZXJ0eSBmaWxlIGRlZmluZXMgX1dJTjMyIGFuZCB4NjQgZGVmaW5lcyBfV0lONjQgYW5kDQotX01fWDY0IGFsdGhvdWdoIHRoZSBtYWNyb3MgYXJlIHNldCBieSB0aGUgY29tcGlsZXIsIHRvby4gVGhlIEdVSSBkb2Vzbid0DQotYWx3YXlzIGtub3cgYWJvdXQgdGhlIG1hY3JvcyBhbmQgY29uZnVzZSB0aGUgdXNlciB3aXRoIGZhbHNlDQotaW5mb3JtYXRpb24uDQorVGhlIHB5cHJvamVjdCBwcm9wZXJ0eSBmaWxlIGRlZmluZXMgYWxsIG9mIHRoZSBidWlsZCBzZXR0aW5ncyBmb3IgZWFjaA0KK3Byb2plY3QsIHdpdGggc29tZSBwcm9qZWN0cyBvdmVycmlkaW5nIGNlcnRhaW4gc3BlY2lmaWMgdmFsdWVzLiBUaGUgR1VJDQorZG9lc24ndCBhbHdheXMgcmVmbGVjdCB0aGUgY29ycmVjdCBzZXR0aW5ncyBhbmQgbWF5IGNvbmZ1c2UgdGhlIHVzZXINCit3aXRoIGZhbHNlIGluZm9ybWF0aW9uLCBlc3BlY2lhbGx5IGZvciBzZXR0aW5ncyB0aGF0IGF1dG9tYXRpY2FsbHkgYWRhcHQNCitmb3IgZGlmZmlyZW50IGNvbmZpZ3VyYXRpb25zLg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcmVsZWFzZS5wcm9wcyBiL1BDYnVpbGQvcmVsZWFzZS5wcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNmZTNlNC4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL3JlbGVhc2UucHJvcHMKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIj4KLSAgICA8UHlEZWJ1Z0V4dCAvPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJQeURlYnVnRXh0Ij4KLSAgICAgIDxWYWx1ZT4kKFB5RGVidWdFeHQpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcnQuYmF0IGIvUENidWlsZC9ydC5iYXQKaW5kZXggMTNjOWQ2Mi4uMmQ5M2I4MCAxMDA2NDQKLS0tIGEvUENidWlsZC9ydC5iYXQKKysrIGIvUENidWlsZC9ydC5iYXQKQEAgLTI4LDI1ICsyOCwyNSBAQAogc2V0bG9jYWwNCiANCiBzZXQgcGNidWlsZD0lfmRwMA0KLXNldCBwcmVmaXg9JXBjYnVpbGQlDQorc2V0IHByZWZpeD0lcGNidWlsZCV3aW4zMlwNCiBzZXQgc3VmZml4PQ0KIHNldCBxbW9kZT0NCiBzZXQgZGFzaE89DQotc2V0IHRjbHRrPXRjbHRrDQorc2V0IHJlZ3J0ZXN0YXJncz0NCiANCiA6Q2hlY2tPcHRzDQogaWYgIiUxIj09Ii1PIiAoc2V0IGRhc2hPPS1PKSAgICAgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQogaWYgIiUxIj09Ii1xIiAoc2V0IHFtb2RlPXllcykgICAgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQogaWYgIiUxIj09Ii1kIiAoc2V0IHN1ZmZpeD1fZCkgICAgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotaWYgIiUxIj09Ii14NjQiIChzZXQgcHJlZml4PSVwcmVmaXglYW1kNjQpICYgKHNldCB0Y2x0az10Y2x0azY0KSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJTEiPT0iLXg2NCIgKHNldCBwcmVmaXg9JXBjYnVpbGQlYW1kNjRcKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiBOT1QgIiUxIj09IiIgKHNldCByZWdydGVzdGFyZ3M9JXJlZ3J0ZXN0YXJncyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KIA0KLVBBVEggJVBBVEglOyVwY2J1aWxkJS4uXGV4dGVybmFsc1wldGNsdGslXGJpbg0KLXNldCBleGU9IiVwcmVmaXglXHB5dGhvbiVzdWZmaXglIg0KLXNldCBjbWQ9JWV4ZSUgJWRhc2hPJSAtV2QgLUUgLWJiICIlcGNidWlsZCUuLlxsaWJcdGVzdFxyZWdydGVzdC5weSIgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkNCitzZXQgZXhlPSVwcmVmaXglcHl0aG9uJXN1ZmZpeCUuZXhlDQorc2V0IGNtZD0iJWV4ZSUiICVkYXNoTyUgLVdkIC1FIC1iYiAiJXBjYnVpbGQlLi5cbGliXHRlc3RccmVncnRlc3QucHkiICVyZWdydGVzdGFyZ3MlDQogaWYgZGVmaW5lZCBxbW9kZSBnb3RvIFFtb2RlDQogDQogZWNobyBEZWxldGluZyAucHljLy5weW8gZmlsZXMgLi4uDQotJWV4ZSUgIiVwY2J1aWxkJVxybXB5Yy5weSINCisiJWV4ZSUiICIlcGNidWlsZCVybXB5Yy5weSINCiANCiBlY2hvIG9uDQogJWNtZCUNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NlbGVjdC52Y3hwcm9qIGIvUENidWlsZC9zZWxlY3QudmN4cHJvagppbmRleCA3YzM2ZDY0Li4zY2QwNjk0IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3NlbGVjdC52Y3hwcm9qCisrKyBiL1BDYnVpbGQvc2VsZWN0LnZjeHByb2oKQEAgLTM3LDE4OCArMzcsMzMgQEAKICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgogICAgIDxQcm9qZWN0R3VpZD57MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfTwvUHJvamVjdEd1aWQ+CiAgICAgPFJvb3ROYW1lc3BhY2U+c2VsZWN0PC9Sb290TmFtZXNwYWNlPgotICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KICAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzZWxlY3Rtb2R1bGUuYyIgLz4KICAgPC9JdGVtR3JvdXA+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NxbGl0ZTMucHJvcHMgYi9QQ2J1aWxkL3NxbGl0ZTMucHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZWUwMmMuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9zcWxpdGUzLnByb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+U1FMSVRFX0FQST1fX2RlY2xzcGVjKGRsbGV4cG9ydCk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDE8L1dhcm5pbmdMZXZlbD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qIGIvUENidWlsZC9zcWxpdGUzLnZjeHByb2oKaW5kZXggZGFmMDEwZC4uYjYyNDZmYSAxMDA2NDQKLS0tIGEvUENidWlsZC9zcWxpdGUzLnZjeHByb2oKKysrIGIvUENidWlsZC9zcWxpdGUzLnZjeHByb2oKQEAgLTM3LDE4OCArMzcsMzEgQEAKICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgogICAgIDxQcm9qZWN0R3VpZD57QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfTwvUHJvamVjdEd1aWQ+CiAgICAgPFJvb3ROYW1lc3BhY2U+c3FsaXRlMzwvUm9vdE5hbWVzcGFjZT4KLSAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgICAgPFN1cHBvcnRQR08+ZmFsc2U8L1N1cHBvcnRQR08+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSlfZC5kbGw8L091dHB1dEZpbGU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKV9kLmRsbDwvT3V0cHV0RmlsZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKS5kbGw8L091dHB1dEZpbGU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLmRsbDwvT3V0cHV0RmlsZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLmRsbDwvT3V0cHV0RmlsZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkuZGxsPC9PdXRwdXRGaWxlPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlNRTElURV9BUEk9X19kZWNsc3BlYyhkbGxleHBvcnQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwxPC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KQEAgLTIyOCwxMiArNzEsNiBAQAogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChzcWxpdGUzRGlyKVxzcWxpdGUzLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9ImtpbGxfcHl0aG9uLnZjeHByb2oiPgotICAgICAgPFByb2plY3Q+ezZkZTEwNzQ0LWUzOTYtNDBhNS1iNGUyLTFiNjlhYTdjOGQzMX08L1Byb2plY3Q+Ci0gICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgotICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KLSAgPC9JdGVtR3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NzbC52Y3hwcm9qIGIvUENidWlsZC9zc2wudmN4cHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVlYWM5YS4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL3NzbC52Y3hwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMjIxICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gIDwvSXRlbUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+Ci0gICAgPFByb2plY3RHdWlkPntFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9PC9Qcm9qZWN0R3VpZD4KLSAgICA8Um9vdE5hbWVzcGFjZT5zc2w8L1Jvb3ROYW1lc3BhY2U+Ci0gICAgPEtleXdvcmQ+TWFrZUZpbGVQcm9qPC9LZXl3b3JkPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgotICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Y2QgIiQoU29sdXRpb25EaXIpIgotIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKLTwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgotICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5lY2hvIE9wZW5TU0wgbXVzdCBiZSBjbGVhbmVkIG1hbnVhbGx5IGlmIHlvdSB3YW50IHRvIHJlYnVpbGQgaXQuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgotICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5jZCAiJChTb2x1dGlvbkRpcikiCi0iJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQotPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+ZWNobyBPcGVuU1NMIG11c3QgYmUgY2xlYW5lZCBtYW51YWxseSBpZiB5b3Ugd2FudCB0byByZWJ1aWxkIGl0LjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgotICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+Ci0gICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KLSAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmNkICIkKFNvbHV0aW9uRGlyKSIKLSIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCi08L05NYWtlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmVjaG8gT3BlblNTTCBtdXN0IGJlIGNsZWFuZWQgbWFudWFsbHkgaWYgeW91IHdhbnQgdG8gcmVidWlsZCBpdC48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KLSAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KLSAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+Ci0gICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Y2QgIiQoU29sdXRpb25EaXIpIgotIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKLTwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgotICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5lY2hvIE9wZW5TU0wgbXVzdCBiZSBjbGVhbmVkIG1hbnVhbGx5IGlmIHlvdSB3YW50IHRvIHJlYnVpbGQgaXQuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgotICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5jZCAiJChTb2x1dGlvbkRpcikiCi0iJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQotPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+ZWNobyBPcGVuU1NMIG11c3QgYmUgY2xlYW5lZCBtYW51YWxseSBpZiB5b3Ugd2FudCB0byByZWJ1aWxkIGl0LjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgotICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+Ci0gICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KLSAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPmNkICIkKFNvbHV0aW9uRGlyKSIKLSIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCi08L05NYWtlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPmVjaG8gT3BlblNTTCBtdXN0IGJlIGNsZWFuZWQgbWFudWFsbHkgaWYgeW91IHdhbnQgdG8gcmVidWlsZCBpdC48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KLSAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KLSAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+Ci0gICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Y2QgIiQoU29sdXRpb25EaXIpIgotIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKLTwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgotICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5lY2hvIE9wZW5TU0wgbXVzdCBiZSBjbGVhbmVkIG1hbnVhbGx5IGlmIHlvdSB3YW50IHRvIHJlYnVpbGQgaXQuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgotICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5jZCAiJChTb2x1dGlvbkRpcikiCi0iJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQotPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+ZWNobyBPcGVuU1NMIG11c3QgYmUgY2xlYW5lZCBtYW51YWxseSBpZiB5b3Ugd2FudCB0byByZWJ1aWxkIGl0LjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgotICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+Ci0gICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbi52Y3hwcm9qIj4KLSAgICAgIDxQcm9qZWN0PntiMTFkNzUwZi1jZDFmLTRhOTYtODVjZS1lNjlhNWM1MjU5Zjl9PC9Qcm9qZWN0PgotICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KLSAgICA8L1Byb2plY3RSZWZlcmVuY2U+Ci0gIDwvSXRlbUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgotICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3NsZWF5LnZjeHByb2ogYi9QQ2J1aWxkL3NzbGVheS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzOWUzYWMKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3NzbGVheS52Y3hwcm9qCkBAIC0wLDAgKzEsMTE5IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+c3NsZWF5PC9Sb290TmFtZXNwYWNlPgorICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisKKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgIDxJbXBvcnQgUHJvamVjdD0ib3BlbnNzbC5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisKKyAgPEl0ZW1Hcm91cD4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXGJpb19zc2wuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcZDFfYm90aC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcZDFfY2xudC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxkMV9lbmMuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcZDFfbGliLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxkMV9tZXRoLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXGQxX3BrdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxkMV9zcnRwLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxkMV9zcnZyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXGtzc2wuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczJfY2xudC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzMl9lbmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczJfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMyX21ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczJfcGt0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMyX3NydnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczIzX2NsbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczIzX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzMjNfbWV0aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzMjNfcGt0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMyM19zcnZyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMzX2JvdGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczNfY2JjLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMzX2NsbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczNfZW5jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMzX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzM19tZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMzX3BrdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzM19zcnZyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHNzbF9hbGdzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHNzbF9hc24xLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHNzbF9jZXJ0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHNzbF9jaXBoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHNzbF9lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcc3NsX2VycjIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcc3NsX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzc2xfcnNhLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHNzbF9zZXNzLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzc2xfc3RhdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzc2xfdHh0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHNzbF91dHN0LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHQxX2NsbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcdDFfZW5jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHQxX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFx0MV9tZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHQxX3JlbmVnLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHQxX3NydnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcdGxzX3NycC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxUYXJnZXQgTmFtZT0iQ2xlYW4iIC8+CisgIDxUYXJnZXQgTmFtZT0iQ2xlYW5BbGwiPgorICAgIDxEZWxldGUgRmlsZXM9IiQoVGFyZ2V0UGF0aCkiIC8+CisgICAgPFJlbW92ZURpciBEaXJlY3Rvcmllcz0iJChJbnREaXIpIiAvPgorICA8L1RhcmdldD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3RjbC52Y3hwcm9qIGIvUENidWlsZC90Y2wudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjRjODNjCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC90Y2wudmN4cHJvagpAQCAtMCwwICsxLDkxIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfTwvUHJvamVjdEd1aWQ+CisgIDwvUHJvcGVydHlHcm91cD4KKworICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSJ0Y2x0ay5wcm9wcyIgLz4KKyAgCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxPdXREaXI+JCh0Y2x0a0Rpcik8L091dERpcj4KKyAgICA8VGFyZ2V0UGF0aD4kKE91dERpciliaW5cJCh0Y2xETExOYW1lKTwvVGFyZ2V0UGF0aD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICAKKyAgPEl0ZW1Hcm91cD4KKyAgICA8RXhwZWN0ZWRPdXRwdXRzIEluY2x1ZGU9IgorICAgICAgICAkKE91dERpcilcYmluXCQodGNsRExMTmFtZSk7CisgICAgICAgICQoT3V0RGlyKVxiaW5cJCh0Y2xTaEV4ZU5hbWUpOworICAgICAgICAkKE91dERpcilcaW5jbHVkZVx0Y2wuaDsKKyAgICAgICAgJChPdXREaXIpXGxpYlx0Y2wkKFRjbE1ham9yVmVyc2lvbik7CisgICAgICAgICQoT3V0RGlyKVxsaWJcdGNsJChUY2xNYWpvclZlcnNpb24pLiQoVGNsTWlub3JWZXJzaW9uKTsKKyAgICAgICAgJChPdXREaXIpXGxpYlwkKHRjbExpYk5hbWUpIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICAKKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRjbE9wdHM+bXN2Y3J0PC9UY2xPcHRzPgorICAgIDxUY2xPcHRzIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnRGVidWcnIj5zeW1ib2xzLG1zdmNydDwvVGNsT3B0cz4KKyAgICA8VGNsRGlycz5JTlNUQUxMRElSPSIkKE91dERpci5UcmltRW5kKGBcYCkpIiBJTlNUQUxMX0RJUj0iJChPdXREaXIuVHJpbUVuZChgXGApKSI8L1RjbERpcnM+CisgICAgPERlYnVnRmxhZ3MgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJ0RlYnVnJyI+REVCVUdGTEFHUz0iLXdkNDQ1NiAtd2Q0NDU3IC13ZDQ0NTggLXdkNDQ1OSAtd2Q0OTk2IjwvRGVidWdGbGFncz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lPnNldGxvY2FsCitAKEV4cGVjdGVkT3V0cHV0cy0+J2lmIG5vdCBleGlzdCAiJShGdWxsUGF0aCkiIGdvdG8gYnVpbGQnLCcKKycpCitnb3RvIDplb2YKKzpidWlsZAorc2V0IFZDSU5TVEFMTERJUj0kKFZDSW5zdGFsbERpcikKK2NkIC9EICIkKHRjbERpcil3aW4iCitubWFrZSAtZiBtYWtlZmlsZS52YyBNQUNISU5FPSQoVGNsTWFjaGluZSkgT1BUUz0kKFRjbE9wdHMpICQoVGNsRGlycykgJChEZWJ1Z0ZsYWdzKSBjb3JlIHNoZWxsIGRsbHMKK25tYWtlIC1mIG1ha2VmaWxlLnZjIE1BQ0hJTkU9JChUY2xNYWNoaW5lKSBPUFRTPSQoVGNsT3B0cykgJChUY2xEaXJzKSAkKERlYnVnRmxhZ3MpIGluc3RhbGwtYmluYXJpZXMgaW5zdGFsbC1saWJyYXJpZXMKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgCisgIDxUYXJnZXQgTmFtZT0iQ29weURsbCIgSW5wdXRzPSIkKE91dERpcilcYmluXCQodGNsRExMTmFtZSkiIE91dHB1dHM9IiQoQnVpbGRQYXRoKSQodGNsRExMTmFtZSkiIEFmdGVyVGFyZ2V0cz0iQnVpbGQiPgorICAgIDxDb3B5IFNvdXJjZUZpbGVzPSIkKE91dERpcilcYmluXCQodGNsRExMTmFtZSkiIERlc3RpbmF0aW9uRmlsZXM9IiQoQnVpbGRQYXRoKSQodGNsRExMTmFtZSkiIC8+CisgIDwvVGFyZ2V0PgorICAKKyAgPFRhcmdldCBOYW1lPSJDbGVhbiIgLz4KKyAgPFRhcmdldCBOYW1lPSJDbGVhbkFsbCI+CisgICAgPERlbGV0ZSBGaWxlcz0iJChUYXJnZXRQYXRoKTskKEJ1aWxkUGF0aCkkKHRjbERMTE5hbWUpIiAvPgorICAgIDxSZW1vdmVEaXIgRGlyZWN0b3JpZXM9IiQoSW50RGlyKSIgLz4KKyAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC90Y2x0ay5wcm9wcyBiL1BDYnVpbGQvdGNsdGsucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU3OTRlNQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvdGNsdGsucHJvcHMKQEAgLTAsMCArMSw0NSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUY2xNYWpvclZlcnNpb24+ODwvVGNsTWFqb3JWZXJzaW9uPgorICAgIDxUY2xNaW5vclZlcnNpb24+NjwvVGNsTWlub3JWZXJzaW9uPgorICAgIDxUY2xQYXRjaExldmVsPjQ8L1RjbFBhdGNoTGV2ZWw+CisgICAgPFRjbFJldmlzaW9uPjI8L1RjbFJldmlzaW9uPgorICAgIDxUa01ham9yVmVyc2lvbj4kKFRjbE1ham9yVmVyc2lvbik8L1RrTWFqb3JWZXJzaW9uPgorICAgIDxUa01pbm9yVmVyc2lvbj4kKFRjbE1pbm9yVmVyc2lvbik8L1RrTWlub3JWZXJzaW9uPgorICAgIDxUa1BhdGNoTGV2ZWw+JChUY2xQYXRjaExldmVsKTwvVGtQYXRjaExldmVsPgorICAgIDxUa1JldmlzaW9uPiQoVGNsUmV2aXNpb24pPC9Ua1JldmlzaW9uPgorICAgIDxUaXhNYWpvclZlcnNpb24+ODwvVGl4TWFqb3JWZXJzaW9uPgorICAgIDxUaXhNaW5vclZlcnNpb24+NDwvVGl4TWlub3JWZXJzaW9uPgorICAgIDxUaXhQYXRjaExldmVsPjM8L1RpeFBhdGNoTGV2ZWw+CisgICAgPFRpeFJldmlzaW9uPjY8L1RpeFJldmlzaW9uPgorICAgIDx0Y2xEaXI+JChFeHRlcm5hbHNEaXIpdGNsLWNvcmUtJChUY2xNYWpvclZlcnNpb24pLiQoVGNsTWlub3JWZXJzaW9uKS4kKFRjbFBhdGNoTGV2ZWwpLiQoVGNsUmV2aXNpb24pXDwvdGNsRGlyPgorICAgIDx0a0Rpcj4kKEV4dGVybmFsc0Rpcil0ay0kKFRrTWFqb3JWZXJzaW9uKS4kKFRrTWlub3JWZXJzaW9uKS4kKFRrUGF0Y2hMZXZlbCkuJChUa1JldmlzaW9uKVw8L3RrRGlyPgorICAgIDx0aXhEaXI+JChFeHRlcm5hbHNEaXIpdGl4LSQoVGl4TWFqb3JWZXJzaW9uKS4kKFRpeE1pbm9yVmVyc2lvbikuJChUaXhQYXRjaExldmVsKS4kKFRpeFJldmlzaW9uKVw8L3RpeERpcj4KKyAgICA8dGNsdGtEaXI+JChFeHRlcm5hbHNEaXIpdGNsdGtcPC90Y2x0a0Rpcj4KKyAgICA8dGNsdGtEaXIgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICd4NjQnIj4kKEV4dGVybmFsc0Rpcil0Y2x0azY0XDwvdGNsdGtEaXI+CisgICAgPFRjbERlYnVnRXh0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknID09ICdEZWJ1ZyciPmc8L1RjbERlYnVnRXh0PgorICAgIDx0Y2xETExOYW1lPnRjbCQoVGNsTWFqb3JWZXJzaW9uKSQoVGNsTWlub3JWZXJzaW9uKXQkKFRjbERlYnVnRXh0KS5kbGw8L3RjbERMTE5hbWU+CisgICAgPHRjbExpYk5hbWU+dGNsJChUY2xNYWpvclZlcnNpb24pJChUY2xNaW5vclZlcnNpb24pdCQoVGNsRGVidWdFeHQpLmxpYjwvdGNsTGliTmFtZT4KKyAgICA8dGNsU2hFeGVOYW1lPnRjbHNoJChUY2xNYWpvclZlcnNpb24pJChUY2xNaW5vclZlcnNpb24pdCQoVGNsRGVidWdFeHQpLmV4ZTwvdGNsU2hFeGVOYW1lPgorICAgIDx0a0RMTE5hbWU+dGskKFRrTWFqb3JWZXJzaW9uKSQoVGtNaW5vclZlcnNpb24pdCQoVGNsRGVidWdFeHQpLmRsbDwvdGtETExOYW1lPgorICAgIDx0a0xpYk5hbWU+dGskKFRrTWFqb3JWZXJzaW9uKSQoVGtNaW5vclZlcnNpb24pdCQoVGNsRGVidWdFeHQpLmxpYjwvdGtMaWJOYW1lPgorICAgIDx0aXhETExOYW1lPnRpeCQoVGl4TWFqb3JWZXJzaW9uKSQoVGl4TWlub3JWZXJzaW9uKSQoVGNsRGVidWdFeHQpLmRsbDwvdGl4RExMTmFtZT4KKyAgICA8dGl4RExMUGF0aD4kKHRjbHRrRGlyKWxpYlx0aXgkKFRpeE1ham9yVmVyc2lvbikuJChUaXhNaW5vclZlcnNpb24pLiQoVGl4UGF0Y2hMZXZlbClcJCh0aXhETExOYW1lKTwvdGl4RExMUGF0aD4KKyAgICA8dGNsdGtMaWI+JCh0Y2x0a0RpcilsaWJcdGNsJChUY2xNYWpvclZlcnNpb24pJChUY2xNaW5vclZlcnNpb24pdCQoVGNsRGVidWdFeHQpLmxpYjskKHRjbHRrRGlyKWxpYlx0ayQoVGtNYWpvclZlcnNpb24pJChUa01pbm9yVmVyc2lvbil0JChUY2xEZWJ1Z0V4dCkubGliPC90Y2x0a0xpYj4KKyAgICA8VGNsTWFjaGluZT5JWDg2PC9UY2xNYWNoaW5lPgorICAgIDxUY2xNYWNoaW5lIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAneDY0JyI+QU1ENjQ8L1RjbE1hY2hpbmU+CisgICAgPFRjbFZlcnNpb25zPlRDTF9NQUpPUl9WRVJTSU9OPSQoVGNsTWFqb3JWZXJzaW9uKSBUQ0xfTUlOT1JfVkVSU0lPTj0kKFRjbE1pbm9yVmVyc2lvbikgVENMX1BBVENIX0xFVkVMPSQoVGNsUGF0Y2hMZXZlbCk8L1RjbFZlcnNpb25zPgorICAgIDxUY2xTaG9ydFZlcnNpb25zPlRDTF9NQUpPUj0kKFRjbE1ham9yVmVyc2lvbikgVENMX01JTk9SPSQoVGNsTWlub3JWZXJzaW9uKSBUQ0xfUEFUQ0g9JChUY2xQYXRjaExldmVsKTwvVGNsU2hvcnRWZXJzaW9ucz4KKyAgICA8VGtWZXJzaW9ucz5US19NQUpPUl9WRVJTSU9OPSQoVGtNYWpvclZlcnNpb24pIFRLX01JTk9SX1ZFUlNJT049JChUa01pbm9yVmVyc2lvbikgVEtfUEFUQ0hfTEVWRUw9JChUa1BhdGNoTGV2ZWwpPC9Ua1ZlcnNpb25zPgorCisgICAgPEJ1aWxkRGlyVG9wPlJlbGVhc2U8L0J1aWxkRGlyVG9wPgorICAgIDxCdWlsZERpclRvcCBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ0RlYnVnJyI+RGVidWc8L0J1aWxkRGlyVG9wPgorICAgIDxCdWlsZERpclRvcCBDb25kaXRpb249IiQoVGNsTWFjaGluZSkgIT0gJ0lYODYnIj4kKEJ1aWxkRGlyVG9wKV8kKFRjbE1hY2hpbmUpPC9CdWlsZERpclRvcD4KKyAgICA8QnVpbGREaXJUb3AgQ29uZGl0aW9uPSIkKFZpc3VhbFN0dWRpb1ZlcnNpb24pID09ICcxNC4wJyI+JChCdWlsZERpclRvcClfVkMxMzwvQnVpbGREaXJUb3A+CisgICAgPEJ1aWxkRGlyVG9wIENvbmRpdGlvbj0iJChWaXN1YWxTdHVkaW9WZXJzaW9uKSA9PSAnMTIuMCciPiQoQnVpbGREaXJUb3ApX1ZDMTI8L0J1aWxkRGlyVG9wPgorICAgIDxCdWlsZERpclRvcCBDb25kaXRpb249IiQoVmlzdWFsU3R1ZGlvVmVyc2lvbikgPT0gJzExLjAnIj4kKEJ1aWxkRGlyVG9wKV9WQzExPC9CdWlsZERpclRvcD4KKyAgICA8QnVpbGREaXJUb3AgQ29uZGl0aW9uPSIkKFZpc3VhbFN0dWRpb1ZlcnNpb24pID09ICcxMC4wJyI+JChCdWlsZERpclRvcClfVkMxMDwvQnVpbGREaXJUb3A+CisgIDwvUHJvcGVydHlHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3RpeC52Y3hwcm9qIGIvUENidWlsZC90aXgudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODU3ZjllCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC90aXgudmN4cHJvagpAQCAtMCwwICsxLDkyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+dGl4PC9Sb290TmFtZXNwYWNlPgorICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0idGNsdGsucHJvcHMiIC8+CisgIAorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8T3V0RGlyPiQodGNsdGtEaXIpPC9PdXREaXI+CisgICAgPFRhcmdldFBhdGg+JCh0aXhETExQYXRoKTwvVGFyZ2V0UGF0aD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICAKKyAgPEl0ZW1Hcm91cD4KKyAgICA8RXhwZWN0ZWRPdXRwdXRzIEluY2x1ZGU9IiQoVGFyZ2V0UGF0aCkiIC8+CisgIDwvSXRlbUdyb3VwPgorICAKKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIAorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGl4RGlycz5CVUlMRERJUlRPUD0iJChCdWlsZERpclRvcCkiIFRDTF9ESVI9IiQodGNsRGlyLlRyaW1FbmQoYFxgKSkiIFRLX0RJUj0iJCh0a0Rpci5UcmltRW5kKGBcYCkpIiBJTlNUQUxMX0RJUj0iJChPdXREaXIuVHJpbUVuZChgXGApKSI8L1RpeERpcnM+CisgICAgPERlYnVnRmxhZ3MgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJ0RlYnVnJyI+REVCVUc9MSBOT0RFQlVHPTAgVENMX0RCR1g9ZyBUS19EQkdYPWc8L0RlYnVnRmxhZ3M+CisgICAgPERlYnVnRmxhZ3MgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgIT0gJ0RlYnVnJyI+REVCVUc9MCBOT0RFQlVHPTE8L0RlYnVnRmxhZ3M+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZT5zZXRsb2NhbAorQChFeHBlY3RlZE91dHB1dHMtPidpZiBub3QgZXhpc3QgIiUoRnVsbFBhdGgpIiBnb3RvIGJ1aWxkJywnCisnKQorZ290byA6ZW9mCis6YnVpbGQKK3NldCBWQ0lOU1RBTExESVI9JChWQ0luc3RhbGxEaXIpCitjZCAvRCAiJCh0aXhEaXIpd2luIgorbm1ha2UgL25vbG9nbyAtZiBtYWtlZmlsZS52YyBNQUNISU5FPSQoVGNsTWFjaGluZSkgJChEZWJ1Z0ZsYWdzKSAkKFRjbFNob3J0VmVyc2lvbnMpICQoVGl4RGlycykgYWxsIGluc3RhbGwKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmU+cm1kaXIgL3EvcyAiJChPdXREaXIuVHJpbUVuZChgXGApKSI8L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICAKKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJ0Y2wudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57YjVmZDZmMWQtMTI5ZS00YmZmLTkzNDAtMDM2MDZmYWM3MjgzfTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InRrLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+ezdlODVlY2NmLWE3MmMtNGRhNC05ZTUyLTg4NDUwOGU4MGJhMX08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisKKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKworICA8VGFyZ2V0IE5hbWU9IkNsZWFuIiAvPgorICA8VGFyZ2V0IE5hbWU9IkNsZWFuQWxsIj4KKyAgICA8UmVtb3ZlRGlyIERpcmVjdG9yaWVzPSIkKE91dERpcikiIC8+CisgICAgPFJlbW92ZURpciBEaXJlY3Rvcmllcz0iJChJbnREaXIpIiAvPgorICA8L1RhcmdldD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3RrLnZjeHByb2ogYi9QQ2J1aWxkL3RrLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA3NDlmNwotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvdGsudmN4cHJvagpAQCAtMCwwICsxLDk1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+dGs8L1Jvb3ROYW1lc3BhY2U+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgCisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9InRjbHRrLnByb3BzIiAvPgorICAKKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPE91dERpcj4kKHRjbHRrRGlyKTwvT3V0RGlyPgorICAgIDxUYXJnZXRQYXRoPiQoT3V0RGlyKWJpblwkKHRrRExMTmFtZSk8L1RhcmdldFBhdGg+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgCisgIDxJdGVtR3JvdXA+CisgICAgPEV4cGVjdGVkT3V0cHV0cyBJbmNsdWRlPSIKKyAgICAgICAgJChPdXREaXIpYmluXCQodGtETExOYW1lKTsKKyAgICAgICAgJChPdXREaXIpaW5jbHVkZVx0ay5oOworICAgICAgICAkKE91dERpcilsaWJcJCh0a0xpYk5hbWUpOworICAgICAgICAkKE91dERpcilsaWJcdGskKFRrTWFqb3JWZXJzaW9uKS4kKFRrTWlub3JWZXJzaW9uKSIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIAorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgCisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUa09wdHM+bXN2Y3J0PC9Ua09wdHM+CisgICAgPFRrT3B0cyBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ0RlYnVnJyI+c3ltYm9scyxtc3ZjcnQ8L1RrT3B0cz4KKyAgICA8VGtEaXJzPlRDTERJUj0iJCh0Y2xEaXIuVHJpbUVuZChgXGApKSIgSU5TVEFMTERJUj0iJChPdXREaXIuVHJpbUVuZChgXGApKSI8L1RrRGlycz4KKyAgICA8RGVidWdGbGFncyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyA9PSAnRGVidWcnIj5ERUJVR0ZMQUdTPSItd2Q0NDU2IC13ZDQ0NTcgLXdkNDQ1OCAtd2Q0NDU5IC13ZDQ5OTYiPC9EZWJ1Z0ZsYWdzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmU+c2V0bG9jYWwKK0AoRXhwZWN0ZWRPdXRwdXRzLT4naWYgbm90IGV4aXN0ICIlKEZ1bGxQYXRoKSIgZ290byBidWlsZCcsJworJykKK2dvdG8gOmVvZgorOmJ1aWxkCitzZXQgVkNJTlNUQUxMRElSPSQoVkNJbnN0YWxsRGlyKQorY2QgL0QgIiQodGtEaXIpd2luIgorbm1ha2UgL25vbG9nbyAtZiBtYWtlZmlsZS52YyBSQz1yYyBNQUNISU5FPSQoVGNsTWFjaGluZSkgT1BUUz0kKFRrT3B0cykgJChUa0RpcnMpICQoRGVidWdGbGFncykgYWxsCitubWFrZSAvbm9sb2dvIC1mIG1ha2VmaWxlLnZjIFJDPXJjIE1BQ0hJTkU9JChUY2xNYWNoaW5lKSBPUFRTPSQoVGtPcHRzKSAkKFRrRGlycykgJChEZWJ1Z0ZsYWdzKSBpbnN0YWxsLWJpbmFyaWVzIGluc3RhbGwtbGlicmFyaWVzCis8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InRjbC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntiNWZkNmYxZC0xMjllLTRiZmYtOTM0MC0wMzYwNmZhYzcyODN9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICAKKyAgPFRhcmdldCBOYW1lPSJDb3B5RGxsIiBJbnB1dHM9IiQoT3V0RGlyKVxiaW5cJCh0a0RMTE5hbWUpIiBPdXRwdXRzPSIkKEJ1aWxkUGF0aCkkKHRrRExMTmFtZSkiIEFmdGVyVGFyZ2V0cz0iQnVpbGQiPgorICAgIDxDb3B5IFNvdXJjZUZpbGVzPSIkKE91dERpcilcYmluXCQodGtETExOYW1lKSIgRGVzdGluYXRpb25GaWxlcz0iJChCdWlsZFBhdGgpJCh0a0RMTE5hbWUpIiAvPgorICA8L1RhcmdldD4KKyAgCisgIDxUYXJnZXQgTmFtZT0iQ2xlYW4iIC8+CisgIDxUYXJnZXQgTmFtZT0iQ2xlYW5BbGwiPgorICAgIDxEZWxldGUgRmlsZXM9IiQoVGFyZ2V0UGF0aCk7JChCdWlsZFBhdGgpJCh0a0RMTE5hbWUpIiAvPgorICAgIDxSZW1vdmVEaXIgRGlyZWN0b3JpZXM9IiQoSW50RGlyKSIgLz4KKyAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC91bmljb2RlZGF0YS52Y3hwcm9qIGIvUENidWlsZC91bmljb2RlZGF0YS52Y3hwcm9qCmluZGV4IGM5ZDUyNzguLmEzMDcxZmIgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvdW5pY29kZWRhdGEudmN4cHJvagorKysgYi9QQ2J1aWxkL3VuaWNvZGVkYXRhLnZjeHByb2oKQEAgLTM5LDE3MCArMzksMzEgQEAKICAgICA8Um9vdE5hbWVzcGFjZT51bmljb2RlZGF0YTwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPExpbms+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdW5pY29kZWRhdGFfZGIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdW5pY29kZW5hbWVfZGIuaCIgLz4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvdnM5dG8xMC5weSBiL1BDYnVpbGQvdnM5dG8xMC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWI3ZGFiNS4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL3ZzOXRvMTAucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0jUnVuIHRoaXMgZmlsZSBhZnRlciBhdXRvbWF0aWMgY29udmVyc2lvbiBvZiB0aGUgVmlzdWFsU3R1ZGlvIDIwMDggc29sdXRpb24gYnkgVmlzdWFsU3R1ZGlvIDIwMTAuCi0jVGhpcyBjYW4gYmUgZG9uZSB3aGVuZXZlciB0aGUgMjAwOCBzb2x1dGlvbiBjaGFuZ2VzLgotI0l0IHdpbGwgbWFrZSB0aGUgbmVjZXNzYXJ5IGNsZWFudXAgYW5kIHVwZGF0ZXMgdG8gdGhlIHZjeHByb2ogZmlsZXMKLSN0aGUgLnByb3BzIGZpbGVzIG5lZWQgdG8gYmUgbWFpbnRhaW5lZCBieSBoYW5kIGlmIHRoZSAudnNwcm9wcyBmaWxlcyBjaGFuZ2UKLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotaW1wb3J0IHN5cwotaW1wb3J0IG9zCi1pbXBvcnQgb3MucGF0aAotCi1kZWYgdnM5dG8xMChzcmMsIGRlc3QpOgotICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoc3JjKToKLSAgICAgICAgcGF0aCwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQotICAgICAgICBpZiBleHQubG93ZXIoKSBub3QgaW4gKCcudmN4cHJvaicsKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihzcmMsIG5hbWUpKQotICAgICAgICBkZXN0bmFtZSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKGRlc3QsIG5hbWUpKQotICAgICAgICBwcmludCgiJXMgLT4gJXMiICUgKGZpbGVuYW1lLCBkZXN0bmFtZSkpCi0KLSAgICAgICAgbGluZXMgPSBbXQotICAgICAgICBsYXN0bGluZSA9IGIiIgotICAgICAgICBpbXBvcnRncm91cCA9IEZhbHNlCi0gICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3JiJykgYXMgZmluOgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gZmluOgotICAgICAgICAgICAgICAgICNyZW1vdmUgcmVkdW5kYW50IGxpbmtlciBvdXRwdXQgaW5mbwotICAgICAgICAgICAgICAgIGlmIGIiPE91dHB1dExpbmU+IiBpbiBsaW5lOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIGIiPFByb2dyYW1EYXRhYmFzZUZpbGU+IiBpbiBsaW5lOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIGIiPEltcG9ydExpYnJhcnk+IiBpbiBsaW5lIGFuZCBiIjwvSW1wb3J0TGlicmFyeT4iIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICAjYWRkIG5ldyBwcm9wZXJ0eSBzaGVldCB0byB0aGUgcHl0aG9uY29yZQotICAgICAgICAgICAgICAgIGlmIGltcG9ydGdyb3VwIGFuZCAicHl0aG9uY29yZSIgaW4gbmFtZS5sb3dlcigpOgotICAgICAgICAgICAgICAgICAgICBpZiBiIjwvSW1wb3J0R3JvdXA+IiBpbiBsaW5lOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgYiJkZWJ1Zy5wcm9wcyIgaW4gbGFzdGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGInICAgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uY29yZV9kLnByb3BzIiAvPlxyXG4nKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBiInB5dGhvbmNvcmUiIG5vdCBpbiBsYXN0bGluZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoYicgICAgPEltcG9ydCBQcm9qZWN0PSJweXRob25jb3JlLnByb3BzIiAvPlxyXG4nKQotICAgICAgICAgICAgICAgIGlmIGIiPEltcG9ydEdyb3VwIENvbmRpdGlvbiIgaW4gbGluZToKLSAgICAgICAgICAgICAgICAgICAgaW1wb3J0Z3JvdXAgPSBUcnVlCi0gICAgICAgICAgICAgICAgZWxpZiBiIjwvSW1wb3J0R3JvdXA+IiBpbiBsaW5lOgotICAgICAgICAgICAgICAgICAgICBpbXBvcnRncm91cCA9IEZhbHNlCi0gICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCi0gICAgICAgICAgICAgICAgbGFzdGxpbmUgPSBsaW5lCi0gICAgICAgIHdpdGggb3BlbihkZXN0bmFtZSwgJ3diJykgYXMgZm91dDoKLSAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICAgICAgICAgIGZvdXQud3JpdGUobGluZSkKLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBzcmMgPSAiLiIgaWYgbGVuKHN5cy5hcmd2KSA8IDIgZWxzZSBzeXMuYXJndlsxXQotICAgIG5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGguYWJzcGF0aChzcmMpKQotICAgIGRlc3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHNyYywgIi4uIiwgbmFtZSArICJVcGQiKSkKLSAgICBvcy5tYWtlZGlycyhkZXN0KQotICAgIHZzOXRvMTAoc3JjLCBkZXN0KQpkaWZmIC0tZ2l0IGEvUENidWlsZC92czl0bzgucHkgYi9QQ2J1aWxkL3ZzOXRvOC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I4OGExNi4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL3ZzOXRvOC5weQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLWltcG9ydCBvcwotCi1kZWYgdnM5dG84KHNyYywgZGVzdCk6Ci0gICAgZm9yIG5hbWUgaW4gb3MubGlzdGRpcihzcmMpOgotICAgICAgICBwYXRoLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCi0gICAgICAgIGlmIGV4dC5sb3dlcigpIG5vdCBpbiAoJy5zbG4nLCAnLnZjcHJvaicsICcudnNwcm9wcycpOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKHNyYywgbmFtZSkpCi0gICAgICAgIGRlc3RuYW1lID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZGVzdCwgbmFtZSkpCi0gICAgICAgIHByaW50KCIlcyAtPiAlcyIgJSAoZmlsZW5hbWUsIGRlc3RuYW1lKSkKLQotICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICdyVScpIGFzIGZpbjoKLSAgICAgICAgICAgIGxpbmVzID0gZmluLnJlYWQoKQotICAgICAgICAgICAgbGluZXMgPSBsaW5lcy5yZXBsYWNlKCdWZXJzaW9uPSI5LDAwIicsICdWZXJzaW9uPSI4LjAwIicpCi0gICAgICAgICAgICBsaW5lcyA9IGxpbmVzLnJlcGxhY2UoJ1ZlcnNpb249IjkuMDAiJywgJ1ZlcnNpb249IjguMDAiJykKLSAgICAgICAgICAgIGxpbmVzID0gbGluZXMucmVwbGFjZSgnRm9ybWF0IFZlcnNpb24gMTAuMDAnLCAnRm9ybWF0IFZlcnNpb24gOS4wMCcpCi0gICAgICAgICAgICBsaW5lcyA9IGxpbmVzLnJlcGxhY2UoJ1Zpc3VhbCBTdHVkaW8gMjAwOCcsICdWaXN1YWwgU3R1ZGlvIDIwMDUnKQotCi0gICAgICAgICAgICBsaW5lcyA9IGxpbmVzLnJlcGxhY2UoJ3dpbmluc3QtOS4wJywgJ3dpbmluc3QtOC4wJykKLSAgICAgICAgICAgIGxpbmVzID0gbGluZXMucmVwbGFjZSgnLi5cXCcsICcuLlxcLi5cXCcpCi0gICAgICAgICAgICBsaW5lcyA9IGxpbmVzLnJlcGxhY2UoJy4uXFwuLlxcLi5cXC4uXFwnLCAnLi5cXC4uXFwuLlxcJykKLQotICAgICAgICAgICAgIyBCYWguIFZTOC4wIGRvZXMgbm90IGV4cGFuZCBtYWNyb3MgaW4gZmlsZSBuYW1lcy4KLSAgICAgICAgICAgICMgUmVwbGFjZSB0aGVtIGhlcmUuCi0gICAgICAgICAgICBsaW5lcyA9IGxpbmVzLnJlcGxhY2UoJyQoc3FsaXRlM0RpciknLCAnLi5cXC4uXFwuLlxcc3FsaXRlLTMuNi4yMScpCi0KLSAgICAgICAgd2l0aCBvcGVuKGRlc3RuYW1lLCAnd2InKSBhcyBmb3V0OgotICAgICAgICAgICAgbGluZXMgPSBsaW5lcy5yZXBsYWNlKCJcbiIsICJcclxuIikuZW5jb2RlKCkKLSAgICAgICAgICAgIGZvdXQud3JpdGUobGluZXMpCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdnM5dG84KHNyYz0iLiIsIGRlc3Q9Ii4uL1BDL1ZTOC4wIikKZGlmZiAtLWdpdCBhL1BDYnVpbGQvd2luc291bmQudmN4cHJvaiBiL1BDYnVpbGQvd2luc291bmQudmN4cHJvagppbmRleCBjZjUxOGU5Li41NDAyMzVhIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3dpbnNvdW5kLnZjeHByb2oKKysrIGIvUENidWlsZC93aW5zb3VuZC52Y3hwcm9qCkBAIC0zOSwxNzAgKzM5LDMxIEBACiAgICAgPFJvb3ROYW1lc3BhY2U+d2luc291bmQ8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcd2luc291bmQuYyIgLz4KICAgPC9JdGVtR3JvdXA+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3g2NC5wcm9wcyBiL1BDYnVpbGQveDY0LnByb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODVjMGVmLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQveDY0LnByb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgQ29uZGl0aW9uPSInJChIT1NUX1BZVEhPTiknIT0nJyI+Ci0gICAgPFB5dGhvbkV4ZT4kKEhPU1RfUFlUSE9OKTwvUHl0aG9uRXhlPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QnVmZmVyU2VjdXJpdHlDaGVjaz5mYWxzZTwvQnVmZmVyU2VjdXJpdHlDaGVjaz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lONjQ7X01fWDY0OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iUHl0aG9uRXhlIj4KLSAgICAgIDxWYWx1ZT4kKFB5dGhvbkV4ZSk8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qIGIvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvagppbmRleCBhYmY0MWY5Li4wMTQ0ZmE5IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qCisrKyBiL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2oKQEAgLTEsNiArMSwxNCBAQAog77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KIDxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC0zMSwxNTggKzM5LDQ0IEBACiAgICAgPFJvb3ROYW1lc3BhY2U+eHhsaW1pdGVkPC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICA8U3VwcG9ydFBHTz5mYWxzZTwvU3VwcG9ydFBHTz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X1dJTjMyO19XSU5ETEw7UHlfTElNSVRFRF9BUEk9MHgwMzA0MDAwMDwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk7UHlfTElNSVRFRF9BUEk9MHgwMzA1MDAwMDwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UHlfTElNSVRFRF9BUEk9MHgwMzA0MDAwMDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QeV9MSU1JVEVEX0FQST0weDAzMDQwMDAwOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNceHhsaW1pdGVkLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbjNkbGwudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57ODg1ZDQ4OTgtZDA4ZC00MDkxLTljNDAtYzcwMGNmZTNmYzVhfTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICA8L0ltcG9ydEdyb3VwPgpkaWZmIC0tZ2l0IGEvUGFyc2VyL1B5dGhvbi5hc2RsIGIvUGFyc2VyL1B5dGhvbi5hc2RsCmluZGV4IGRlYmQ4OWUuLmNkMDgzMmQgMTAwNjQ0Ci0tLSBhL1BhcnNlci9QeXRob24uYXNkbAorKysgYi9QYXJzZXIvUHl0aG9uLmFzZGwKQEAgLTksMTMgKzksMTQgQEAKICAgICAgICAgLS0gbm90IHJlYWxseSBhbiBhY3R1YWwgbm9kZSBidXQgdXNlZnVsIGluIEp5dGhvbidzIHR5cGVzeXN0ZW0uCiAgICAgICAgIHwgU3VpdGUoc3RtdCogYm9keSkKIAotICAgIHN0bXQgPSBGdW5jdGlvbkRlZihpZGVudGlmaWVyIG5hbWUsIGFyZ3VtZW50cyBhcmdzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXQqIGJvZHksIGV4cHIqIGRlY29yYXRvcl9saXN0LCBleHByPyByZXR1cm5zKQotICAgICAgICAgIHwgQ2xhc3NEZWYoaWRlbnRpZmllciBuYW1lLCAKKyAgICBzdG10ID0gRnVuY3Rpb25EZWYoaWRlbnRpZmllciBuYW1lLCBhcmd1bWVudHMgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgc3RtdCogYm9keSwgZXhwciogZGVjb3JhdG9yX2xpc3QsIGV4cHI/IHJldHVybnMpCisgICAgICAgICAgfCBBc3luY0Z1bmN0aW9uRGVmKGlkZW50aWZpZXIgbmFtZSwgYXJndW1lbnRzIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXQqIGJvZHksIGV4cHIqIGRlY29yYXRvcl9saXN0LCBleHByPyByZXR1cm5zKQorCisgICAgICAgICAgfCBDbGFzc0RlZihpZGVudGlmaWVyIG5hbWUsCiAgICAgICAgICAgICAgZXhwciogYmFzZXMsCiAgICAgICAgICAgICAga2V5d29yZCoga2V5d29yZHMsCi0gICAgICAgICAgICAgZXhwcj8gc3RhcmFyZ3MsCi0gICAgICAgICAgICAgZXhwcj8ga3dhcmdzLAogICAgICAgICAgICAgIHN0bXQqIGJvZHksCiAgICAgICAgICAgICAgZXhwciogZGVjb3JhdG9yX2xpc3QpCiAgICAgICAgICAgfCBSZXR1cm4oZXhwcj8gdmFsdWUpCkBAIC0yNiw5ICsyNywxMSBAQAogCiAgICAgICAgICAgLS0gdXNlICdvcmVsc2UnIGJlY2F1c2UgZWxzZSBpcyBhIGtleXdvcmQgaW4gdGFyZ2V0IGxhbmd1YWdlcwogICAgICAgICAgIHwgRm9yKGV4cHIgdGFyZ2V0LCBleHByIGl0ZXIsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKKyAgICAgICAgICB8IEFzeW5jRm9yKGV4cHIgdGFyZ2V0LCBleHByIGl0ZXIsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKICAgICAgICAgICB8IFdoaWxlKGV4cHIgdGVzdCwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQogICAgICAgICAgIHwgSWYoZXhwciB0ZXN0LCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCiAgICAgICAgICAgfCBXaXRoKHdpdGhpdGVtKiBpdGVtcywgc3RtdCogYm9keSkKKyAgICAgICAgICB8IEFzeW5jV2l0aCh3aXRoaXRlbSogaXRlbXMsIHN0bXQqIGJvZHkpCiAKICAgICAgICAgICB8IFJhaXNlKGV4cHI/IGV4YywgZXhwcj8gY2F1c2UpCiAgICAgICAgICAgfCBUcnkoc3RtdCogYm9keSwgZXhjZXB0aGFuZGxlciogaGFuZGxlcnMsIHN0bXQqIG9yZWxzZSwgc3RtdCogZmluYWxib2R5KQpAQCAtNTksMTMgKzYyLDEzIEBACiAgICAgICAgICB8IERpY3RDb21wKGV4cHIga2V5LCBleHByIHZhbHVlLCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQogICAgICAgICAgfCBHZW5lcmF0b3JFeHAoZXhwciBlbHQsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCiAgICAgICAgICAtLSB0aGUgZ3JhbW1hciBjb25zdHJhaW5zIHdoZXJlIHlpZWxkIGV4cHJlc3Npb25zIGNhbiBvY2N1cgorICAgICAgICAgfCBBd2FpdChleHByIHZhbHVlKQogICAgICAgICAgfCBZaWVsZChleHByPyB2YWx1ZSkKICAgICAgICAgIHwgWWllbGRGcm9tKGV4cHIgdmFsdWUpCiAgICAgICAgICAtLSBuZWVkIHNlcXVlbmNlcyBmb3IgY29tcGFyZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuCiAgICAgICAgICAtLSB4IDwgNCA8IDMgYW5kICh4IDwgNCkgPCAzCiAgICAgICAgICB8IENvbXBhcmUoZXhwciBsZWZ0LCBjbXBvcCogb3BzLCBleHByKiBjb21wYXJhdG9ycykKLSAgICAgICAgIHwgQ2FsbChleHByIGZ1bmMsIGV4cHIqIGFyZ3MsIGtleXdvcmQqIGtleXdvcmRzLAotICAgICAgICAgICAgIGV4cHI/IHN0YXJhcmdzLCBleHByPyBrd2FyZ3MpCisgICAgICAgICB8IENhbGwoZXhwciBmdW5jLCBleHByKiBhcmdzLCBrZXl3b3JkKiBrZXl3b3JkcykKICAgICAgICAgIHwgTnVtKG9iamVjdCBuKSAtLSBhIG51bWJlciBhcyBhIFB5T2JqZWN0LgogICAgICAgICAgfCBTdHIoc3RyaW5nIHMpIC0tIG5lZWQgdG8gc3BlY2lmeSByYXcsIHVuaWNvZGUsIGV0Yz8KICAgICAgICAgIHwgQnl0ZXMoYnl0ZXMgcykKQEAgLTc3LDcgKzgwLDcgQEAKICAgICAgICAgIHwgU3Vic2NyaXB0KGV4cHIgdmFsdWUsIHNsaWNlIHNsaWNlLCBleHByX2NvbnRleHQgY3R4KQogICAgICAgICAgfCBTdGFycmVkKGV4cHIgdmFsdWUsIGV4cHJfY29udGV4dCBjdHgpCiAgICAgICAgICB8IE5hbWUoaWRlbnRpZmllciBpZCwgZXhwcl9jb250ZXh0IGN0eCkKLSAgICAgICAgIHwgTGlzdChleHByKiBlbHRzLCBleHByX2NvbnRleHQgY3R4KSAKKyAgICAgICAgIHwgTGlzdChleHByKiBlbHRzLCBleHByX2NvbnRleHQgY3R4KQogICAgICAgICAgfCBUdXBsZShleHByKiBlbHRzLCBleHByX2NvbnRleHQgY3R4KQogCiAgICAgICAgICAgLS0gY29sX29mZnNldCBpcyB0aGUgYnl0ZSBvZmZzZXQgaW4gdGhlIHV0Zjggc3RyaW5nIHRoZSBwYXJzZXIgdXNlcwpAQCAtODUsMTMgKzg4LDEzIEBACiAKICAgICBleHByX2NvbnRleHQgPSBMb2FkIHwgU3RvcmUgfCBEZWwgfCBBdWdMb2FkIHwgQXVnU3RvcmUgfCBQYXJhbQogCi0gICAgc2xpY2UgPSBTbGljZShleHByPyBsb3dlciwgZXhwcj8gdXBwZXIsIGV4cHI/IHN0ZXApIAotICAgICAgICAgIHwgRXh0U2xpY2Uoc2xpY2UqIGRpbXMpIAotICAgICAgICAgIHwgSW5kZXgoZXhwciB2YWx1ZSkgCisgICAgc2xpY2UgPSBTbGljZShleHByPyBsb3dlciwgZXhwcj8gdXBwZXIsIGV4cHI/IHN0ZXApCisgICAgICAgICAgfCBFeHRTbGljZShzbGljZSogZGltcykKKyAgICAgICAgICB8IEluZGV4KGV4cHIgdmFsdWUpCiAKLSAgICBib29sb3AgPSBBbmQgfCBPciAKKyAgICBib29sb3AgPSBBbmQgfCBPcgogCi0gICAgb3BlcmF0b3IgPSBBZGQgfCBTdWIgfCBNdWx0IHwgRGl2IHwgTW9kIHwgUG93IHwgTFNoaWZ0IAorICAgIG9wZXJhdG9yID0gQWRkIHwgU3ViIHwgTXVsdCB8IE1hdE11bHQgfCBEaXYgfCBNb2QgfCBQb3cgfCBMU2hpZnQKICAgICAgICAgICAgICAgICAgfCBSU2hpZnQgfCBCaXRPciB8IEJpdFhvciB8IEJpdEFuZCB8IEZsb29yRGl2CiAKICAgICB1bmFyeW9wID0gSW52ZXJ0IHwgTm90IHwgVUFkZCB8IFVTdWIKQEAgLTEwOSw4ICsxMTIsOCBAQAogICAgIGFyZyA9IChpZGVudGlmaWVyIGFyZywgZXhwcj8gYW5ub3RhdGlvbikKICAgICAgICAgICAgYXR0cmlidXRlcyAoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCiAKLSAgICAtLSBrZXl3b3JkIGFyZ3VtZW50cyBzdXBwbGllZCB0byBjYWxsCi0gICAga2V5d29yZCA9IChpZGVudGlmaWVyIGFyZywgZXhwciB2YWx1ZSkKKyAgICAtLSBrZXl3b3JkIGFyZ3VtZW50cyBzdXBwbGllZCB0byBjYWxsIChOVUxMIGlkZW50aWZpZXIgZm9yICoqa3dhcmdzKQorICAgIGtleXdvcmQgPSAoaWRlbnRpZmllcj8gYXJnLCBleHByIHZhbHVlKQogCiAgICAgLS0gaW1wb3J0IG5hbWUgd2l0aCBvcHRpb25hbCAnYXMnIGFsaWFzLgogICAgIGFsaWFzID0gKGlkZW50aWZpZXIgbmFtZSwgaWRlbnRpZmllcj8gYXNuYW1lKQpkaWZmIC0tZ2l0IGEvUGFyc2VyL2FzZGwucHkgYi9QYXJzZXIvYXNkbC5weQppbmRleCBmYzFiMTZjLi4xMjFjZGFiIDEwMDY0NAotLS0gYS9QYXJzZXIvYXNkbC5weQorKysgYi9QYXJzZXIvYXNkbC5weQpAQCAtMSwyNTUgKzEsNTIgQEAKLSIiIkFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBaZXBoeXIgQWJzdHJhY3QgU3ludGF4IERlZmluaXRpb24gTGFuZ3VhZ2UuCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQYXJzZXIgZm9yIEFTREwgWzFdIGRlZmluaXRpb24gZmlsZXMuIFJlYWRzIGluIGFuIEFTREwgZGVzY3JpcHRpb24gYW5kIHBhcnNlcworIyBpdCBpbnRvIGFuIEFTVCB0aGF0IGRlc2NyaWJlcyBpdC4KKyMKKyMgVGhlIEVCTkYgd2UncmUgcGFyc2luZyBoZXJlOiBGaWd1cmUgMSBvZiB0aGUgcGFwZXIgWzFdLiBFeHRlbmRlZCB0byBzdXBwb3J0CisjIG1vZHVsZXMgYW5kIGF0dHJpYnV0ZXMgYWZ0ZXIgYSBwcm9kdWN0LiBXb3JkcyBzdGFydGluZyB3aXRoIENhcGl0YWwgbGV0dGVycworIyBhcmUgdGVybWluYWxzLiBMaXRlcmFsIHRva2VucyBhcmUgaW4gImRvdWJsZSBxdW90ZXMiLiBPdGhlcnMgYXJlCisjIG5vbi10ZXJtaW5hbHMuIElkIGlzIGVpdGhlciBUb2tlbklkIG9yIENvbnN0cnVjdG9ySWQuCisjCisjIG1vZHVsZSAgICAgICAgOjo9ICJtb2R1bGUiIElkICJ7IiBbZGVmaW5pdGlvbnNdICJ9IgorIyBkZWZpbml0aW9ucyAgIDo6PSB7IFR5cGVJZCAiPSIgdHlwZSB9CisjIHR5cGUgICAgICAgICAgOjo9IHByb2R1Y3QgfCBzdW0KKyMgcHJvZHVjdCAgICAgICA6Oj0gZmllbGRzIFsiYXR0cmlidXRlcyIgZmllbGRzXQorIyBmaWVsZHMgICAgICAgIDo6PSAiKCIgeyBmaWVsZCwgIiwiIH0gZmllbGQgIikiCisjIGZpZWxkICAgICAgICAgOjo9IFR5cGVJZCBbIj8iIHwgIioiXSBbSWRdCisjIHN1bSAgICAgICAgICAgOjo9IGNvbnN0cnVjdG9yIHsgInwiIGNvbnN0cnVjdG9yIH0gWyJhdHRyaWJ1dGVzIiBmaWVsZHNdCisjIGNvbnN0cnVjdG9yICAgOjo9IENvbnN0cnVjdG9ySWQgW2ZpZWxkc10KKyMKKyMgWzFdICJUaGUgWmVwaHlyIEFic3RyYWN0IFN5bnRheCBEZXNjcmlwdGlvbiBMYW5ndWFnZSIgYnkgV2FuZywgZXQuIGFsLiBTZWUKKyMgICAgIGh0dHA6Ly9hc2RsLnNvdXJjZWZvcmdlLm5ldC8KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCitpbXBvcnQgcmUKIAotU2VlIGh0dHA6Ly9hc2RsLnNvdXJjZWZvcmdlLm5ldC8gYW5kCi1odHRwOi8vd3d3LmNzLnByaW5jZXRvbi5lZHUvcmVzZWFyY2gvdGVjaHJlcHMvVFItNTU0LTk3CitfX2FsbF9fID0gWworICAgICdidWlsdGluX3R5cGVzJywgJ3BhcnNlJywgJ0FTVCcsICdNb2R1bGUnLCAnVHlwZScsICdDb25zdHJ1Y3RvcicsCisgICAgJ0ZpZWxkJywgJ1N1bScsICdQcm9kdWN0JywgJ1Zpc2l0b3JCYXNlJywgJ0NoZWNrJywgJ2NoZWNrJ10KIAotT25seSBzdXBwb3J0cyB0b3AgbGV2ZWwgbW9kdWxlIGRlY2wsIG5vdCB2aWV3LiAgSSdtIGd1ZXNzaW5nIHRoYXQgdmlldwotaXMgaW50ZW5kZWQgdG8gc3VwcG9ydCB0aGUgYnJvd3NlciBhbmQgSSdtIG5vdCBpbnRlcmVzdGVkIGluIHRoZQotYnJvd3Nlci4KKyMgVGhlIGZvbGxvd2luZyBjbGFzc2VzIGRlZmluZSBub2RlcyBpbnRvIHdoaWNoIHRoZSBBU0RMIGRlc2NyaXB0aW9uIGlzIHBhcnNlZC4KKyMgTm90ZTogdGhpcyBpcyBhICJtZXRhLUFTVCIuIEFTREwgZmlsZXMgKHN1Y2ggYXMgUHl0aG9uLmFzZGwpIGRlc2NyaWJlIHRoZSBBU1QKKyMgc3RydWN0dXJlIHVzZWQgYnkgYSBwcm9ncmFtbWluZyBsYW5ndWFnZS4gQnV0IEFTREwgZmlsZXMgdGhlbXNlbHZlcyBuZWVkIHRvIGJlCisjIHBhcnNlZC4gVGhpcyBtb2R1bGUgcGFyc2VzIEFTREwgZmlsZXMgYW5kIHVzZXMgYSBzaW1wbGUgQVNUIHRvIHJlcHJlc2VudCB0aGVtLgorIyBTZWUgdGhlIEVCTkYgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZSB0byB1bmRlcnN0YW5kIHRoZSBsb2dpY2FsIGNvbm5lY3Rpb24KKyMgYmV0d2VlbiB0aGUgdmFyaW91cyBub2RlIHR5cGVzLgogCi1DaGFuZ2VzIGZvciBQeXRob246IEFkZCBzdXBwb3J0IGZvciBtb2R1bGUgdmVyc2lvbnMKLSIiIgorYnVpbHRpbl90eXBlcyA9IHsnaWRlbnRpZmllcicsICdzdHJpbmcnLCAnYnl0ZXMnLCAnaW50JywgJ29iamVjdCcsICdzaW5nbGV0b24nfQogCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCB0cmFjZWJhY2sKLQotaW1wb3J0IHNwYXJrCi0KLWRlZiBvdXRwdXQoKnN0cmluZ3MpOgotICAgIGZvciBzIGluIHN0cmluZ3M6Ci0gICAgICAgIHN5cy5zdGRvdXQud3JpdGUoc3RyKHMpICsgIlxuIikKLQotCi1jbGFzcyBUb2tlbihvYmplY3QpOgotICAgICMgc3Bhcmsgc2VlbXMgdG8gZGlzcGF0Y2ggaW4gdGhlIHBhcnNlciBiYXNlZCBvbiBhIHRva2VuJ3MKLSAgICAjIHR5cGUgYXR0cmlidXRlCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGUsIGxpbmVubyk6Ci0gICAgICAgIHNlbGYudHlwZSA9IHR5cGUKLSAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KLQotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50eXBlCi0KK2NsYXNzIEFTVDoKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzdHIoc2VsZikKLQotY2xhc3MgSWQoVG9rZW4pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSwgbGluZW5vKToKLSAgICAgICAgc2VsZi50eXBlID0gJ0lkJwotICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKLSAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KLQotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQotCi1jbGFzcyBTdHJpbmcoVG9rZW4pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSwgbGluZW5vKToKLSAgICAgICAgc2VsZi50eXBlID0gJ1N0cmluZycKLSAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCi0gICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vCi0KLWNsYXNzIEFTRExTeW50YXhFcnJvcihFeGNlcHRpb24pOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVubywgdG9rZW49Tm9uZSwgbXNnPU5vbmUpOgotICAgICAgICBzZWxmLmxpbmVubyA9IGxpbmVubwotICAgICAgICBzZWxmLnRva2VuID0gdG9rZW4KLSAgICAgICAgc2VsZi5tc2cgPSBtc2cKLQotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICBpZiBzZWxmLm1zZyBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuICJFcnJvciBhdCAnJXMnLCBsaW5lICVkIiAlIChzZWxmLnRva2VuLCBzZWxmLmxpbmVubykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiJXMsIGxpbmUgJWQiICUgKHNlbGYubXNnLCBzZWxmLmxpbmVubykKLQotY2xhc3MgQVNETFNjYW5uZXIoc3BhcmsuR2VuZXJpY1NjYW5uZXIsIG9iamVjdCk6Ci0KLSAgICBkZWYgdG9rZW5pemUoc2VsZiwgaW5wdXQpOgotICAgICAgICBzZWxmLnJ2ID0gW10KLSAgICAgICAgc2VsZi5saW5lbm8gPSAxCi0gICAgICAgIHN1cGVyKEFTRExTY2FubmVyLCBzZWxmKS50b2tlbml6ZShpbnB1dCkKLSAgICAgICAgcmV0dXJuIHNlbGYucnYKLQotICAgIGRlZiB0X2lkKHNlbGYsIHMpOgotICAgICAgICByIltcd1wuXSsiCi0gICAgICAgICMgWFhYIGRvZXNuJ3QgZGlzdGluZ3Vpc2ggdXBwZXIgdnMuIGxvd2VyLCB3aGljaCBpcwotICAgICAgICAjIHNpZ25pZmljYW50IGZvciBBU0RMLgotICAgICAgICBzZWxmLnJ2LmFwcGVuZChJZChzLCBzZWxmLmxpbmVubykpCi0KLSAgICBkZWYgdF9zdHJpbmcoc2VsZiwgcyk6Ci0gICAgICAgIHInIlteIl0qIicKLSAgICAgICAgc2VsZi5ydi5hcHBlbmQoU3RyaW5nKHMsIHNlbGYubGluZW5vKSkKLQotICAgIGRlZiB0X3h4eChzZWxmLCBzKTogIyBub3Qgc3VyZSB3aGF0IHRoaXMgcHJvZHVjdGlvbiBtZWFucwotICAgICAgICByIjw9IgotICAgICAgICBzZWxmLnJ2LmFwcGVuZChUb2tlbihzLCBzZWxmLmxpbmVubykpCi0KLSAgICBkZWYgdF9wdW5jdHVhdGlvbihzZWxmLCBzKToKLSAgICAgICAgciJbXHtcfVwqXD1cfFwoXClcLFw/XDpdIgotICAgICAgICBzZWxmLnJ2LmFwcGVuZChUb2tlbihzLCBzZWxmLmxpbmVubykpCi0KLSAgICBkZWYgdF9jb21tZW50KHNlbGYsIHMpOgotICAgICAgICByIlwtXC1bXlxuXSoiCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiB0X25ld2xpbmUoc2VsZiwgcyk6Ci0gICAgICAgIHIiXG4iCi0gICAgICAgIHNlbGYubGluZW5vICs9IDEKLQotICAgIGRlZiB0X3doaXRlc3BhY2Uoc2VsZiwgcyk6Ci0gICAgICAgIHIiWyBcdF0rIgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgdF9kZWZhdWx0KHNlbGYsIHMpOgotICAgICAgICByIiAuICsiCi0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVubWF0Y2hlZCBpbnB1dDogJXIiICUgcykKLQotY2xhc3MgQVNETFBhcnNlcihzcGFyay5HZW5lcmljUGFyc2VyLCBvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc3VwZXIoQVNETFBhcnNlciwgc2VsZikuX19pbml0X18oIm1vZHVsZSIpCi0KLSAgICBkZWYgdHlwZXN0cmluZyhzZWxmLCB0b2spOgotICAgICAgICByZXR1cm4gdG9rLnR5cGUKLQotICAgIGRlZiBlcnJvcihzZWxmLCB0b2spOgotICAgICAgICByYWlzZSBBU0RMU3ludGF4RXJyb3IodG9rLmxpbmVubywgdG9rKQotCi0gICAgZGVmIHBfbW9kdWxlXzAoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgbW9kdWxlIDo6PSBJZCBJZCB7IH0gIgotICAgICAgICBtb2R1bGUsIG5hbWUsIF8wLCBfMSA9IGluZm8KLSAgICAgICAgaWYgbW9kdWxlLnZhbHVlICE9ICJtb2R1bGUiOgotICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKG1vZHVsZS5saW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJleHBlY3RlZCAnbW9kdWxlJywgZm91bmQgJXMiICUgbW9kdWxlKQotICAgICAgICByZXR1cm4gTW9kdWxlKG5hbWUsIE5vbmUpCi0KLSAgICBkZWYgcF9tb2R1bGUoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgbW9kdWxlIDo6PSBJZCBJZCB7IGRlZmluaXRpb25zIH0gIgotICAgICAgICBtb2R1bGUsIG5hbWUsIF8wLCBkZWZpbml0aW9ucywgXzEgPSBpbmZvCi0gICAgICAgIGlmIG1vZHVsZS52YWx1ZSAhPSAibW9kdWxlIjoKLSAgICAgICAgICAgIHJhaXNlIEFTRExTeW50YXhFcnJvcihtb2R1bGUubGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iZXhwZWN0ZWQgJ21vZHVsZScsIGZvdW5kICVzIiAlIG1vZHVsZSkKLSAgICAgICAgcmV0dXJuIE1vZHVsZShuYW1lLCBkZWZpbml0aW9ucykKLQotICAgIGRlZiBwX2RlZmluaXRpb25fMChzZWxmLCBkZWZpbml0aW9uKToKLSAgICAgICAgIiBkZWZpbml0aW9ucyA6Oj0gZGVmaW5pdGlvbiAiCi0gICAgICAgIHJldHVybiBkZWZpbml0aW9uWzBdCi0KLSAgICBkZWYgcF9kZWZpbml0aW9uXzEoc2VsZiwgZGVmaW5pdGlvbnMpOgotICAgICAgICAiIGRlZmluaXRpb25zIDo6PSBkZWZpbml0aW9uIGRlZmluaXRpb25zICIKLSAgICAgICAgcmV0dXJuIGRlZmluaXRpb25zWzBdICsgZGVmaW5pdGlvbnNbMV0KLQotICAgIGRlZiBwX2RlZmluaXRpb24oc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgZGVmaW5pdGlvbiA6Oj0gSWQgPSB0eXBlICIKLSAgICAgICAgaWQsIF8sIHR5cGUgPSBpbmZvCi0gICAgICAgIHJldHVybiBbVHlwZShpZCwgdHlwZSldCi0KLSAgICBkZWYgcF90eXBlXzAoc2VsZiwgcHJvZHVjdCk6Ci0gICAgICAgICIgdHlwZSA6Oj0gcHJvZHVjdCAiCi0gICAgICAgIHJldHVybiBwcm9kdWN0WzBdCi0KLSAgICBkZWYgcF90eXBlXzEoc2VsZiwgc3VtKToKLSAgICAgICAgIiB0eXBlIDo6PSBzdW0gIgotICAgICAgICByZXR1cm4gU3VtKHN1bVswXSkKLQotICAgIGRlZiBwX3R5cGVfMihzZWxmLCBpbmZvKToKLSAgICAgICAgIiB0eXBlIDo6PSBzdW0gSWQgKCBmaWVsZHMgKSAiCi0gICAgICAgIHN1bSwgaWQsIF8wLCBhdHRyaWJ1dGVzLCBfMSA9IGluZm8KLSAgICAgICAgaWYgaWQudmFsdWUgIT0gImF0dHJpYnV0ZXMiOgotICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKGlkLmxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9ImV4cGVjdGVkIGF0dHJpYnV0ZXMsIGZvdW5kICVzIiAlIGlkKQotICAgICAgICByZXR1cm4gU3VtKHN1bSwgYXR0cmlidXRlcykKLQotICAgIGRlZiBwX3Byb2R1Y3RfMChzZWxmLCBpbmZvKToKLSAgICAgICAgIiBwcm9kdWN0IDo6PSAoIGZpZWxkcyApICIKLSAgICAgICAgXzAsIGZpZWxkcywgXzEgPSBpbmZvCi0gICAgICAgIHJldHVybiBQcm9kdWN0KGZpZWxkcykKLQotICAgIGRlZiBwX3Byb2R1Y3RfMShzZWxmLCBpbmZvKToKLSAgICAgICAgIiBwcm9kdWN0IDo6PSAoIGZpZWxkcyApIElkICggZmllbGRzICkgIgotICAgICAgICBfMCwgZmllbGRzLCBfMSwgaWQsIF8yLCBhdHRyaWJ1dGVzLCBfMyA9IGluZm8KLSAgICAgICAgaWYgaWQudmFsdWUgIT0gImF0dHJpYnV0ZXMiOgotICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKGlkLmxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9ImV4cGVjdGVkIGF0dHJpYnV0ZXMsIGZvdW5kICVzIiAlIGlkKQotICAgICAgICByZXR1cm4gUHJvZHVjdChmaWVsZHMsIGF0dHJpYnV0ZXMpCi0KLSAgICBkZWYgcF9zdW1fMChzZWxmLCBjb25zdHJ1Y3Rvcik6Ci0gICAgICAgICIgc3VtIDo6PSBjb25zdHJ1Y3RvciAiCi0gICAgICAgIHJldHVybiBbY29uc3RydWN0b3JbMF1dCi0KLSAgICBkZWYgcF9zdW1fMShzZWxmLCBpbmZvKToKLSAgICAgICAgIiBzdW0gOjo9IGNvbnN0cnVjdG9yIHwgc3VtICIKLSAgICAgICAgY29uc3RydWN0b3IsIF8sIHN1bSA9IGluZm8KLSAgICAgICAgcmV0dXJuIFtjb25zdHJ1Y3Rvcl0gKyBzdW0KLQotICAgIGRlZiBwX3N1bV8yKHNlbGYsIGluZm8pOgotICAgICAgICAiIHN1bSA6Oj0gY29uc3RydWN0b3IgfCBzdW0gIgotICAgICAgICBjb25zdHJ1Y3RvciwgXywgc3VtID0gaW5mbwotICAgICAgICByZXR1cm4gW2NvbnN0cnVjdG9yXSArIHN1bQotCi0gICAgZGVmIHBfY29uc3RydWN0b3JfMChzZWxmLCBpZCk6Ci0gICAgICAgICIgY29uc3RydWN0b3IgOjo9IElkICIKLSAgICAgICAgcmV0dXJuIENvbnN0cnVjdG9yKGlkWzBdKQotCi0gICAgZGVmIHBfY29uc3RydWN0b3JfMShzZWxmLCBpbmZvKToKLSAgICAgICAgIiBjb25zdHJ1Y3RvciA6Oj0gSWQgKCBmaWVsZHMgKSAiCi0gICAgICAgIGlkLCBfMCwgZmllbGRzLCBfMSA9IGluZm8KLSAgICAgICAgcmV0dXJuIENvbnN0cnVjdG9yKGlkLCBmaWVsZHMpCi0KLSAgICBkZWYgcF9maWVsZHNfMChzZWxmLCBmaWVsZCk6Ci0gICAgICAgICIgZmllbGRzIDo6PSBmaWVsZCAiCi0gICAgICAgIHJldHVybiBbZmllbGRbMF1dCi0KLSAgICBkZWYgcF9maWVsZHNfMShzZWxmLCBpbmZvKToKLSAgICAgICAgIiBmaWVsZHMgOjo9IGZpZWxkcyAsIGZpZWxkICIKLSAgICAgICAgZmllbGRzLCBfLCBmaWVsZCA9IGluZm8KLSAgICAgICAgcmV0dXJuIGZpZWxkcyArIFtmaWVsZF0KLQotICAgIGRlZiBwX2ZpZWxkXzAoc2VsZiwgdHlwZV8pOgotICAgICAgICAiIGZpZWxkIDo6PSBJZCAiCi0gICAgICAgIHJldHVybiBGaWVsZCh0eXBlX1swXSkKLQotICAgIGRlZiBwX2ZpZWxkXzEoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgZmllbGQgOjo9IElkIElkICIKLSAgICAgICAgdHlwZSwgbmFtZSA9IGluZm8KLSAgICAgICAgcmV0dXJuIEZpZWxkKHR5cGUsIG5hbWUpCi0KLSAgICBkZWYgcF9maWVsZF8yKHNlbGYsIGluZm8pOgotICAgICAgICAiIGZpZWxkIDo6PSBJZCAqIElkICIKLSAgICAgICAgdHlwZSwgXywgbmFtZSA9IGluZm8KLSAgICAgICAgcmV0dXJuIEZpZWxkKHR5cGUsIG5hbWUsIHNlcT1UcnVlKQotCi0gICAgZGVmIHBfZmllbGRfMyhzZWxmLCBpbmZvKToKLSAgICAgICAgIiBmaWVsZCA6Oj0gSWQgPyBJZCAiCi0gICAgICAgIHR5cGUsIF8sIG5hbWUgPSBpbmZvCi0gICAgICAgIHJldHVybiBGaWVsZCh0eXBlLCBuYW1lLCBvcHQ9VHJ1ZSkKLQotICAgIGRlZiBwX2ZpZWxkXzQoc2VsZiwgdHlwZV8pOgotICAgICAgICAiIGZpZWxkIDo6PSBJZCAqICIKLSAgICAgICAgcmV0dXJuIEZpZWxkKHR5cGVfWzBdLCBzZXE9VHJ1ZSkKLQotICAgIGRlZiBwX2ZpZWxkXzUoc2VsZiwgdHlwZV8pOgotICAgICAgICAiIGZpZWxkIDo6PSBJZCA/ICIKLSAgICAgICAgcmV0dXJuIEZpZWxkKHR5cGVbMF0sIG9wdD1UcnVlKQotCi1idWlsdGluX3R5cGVzID0gKCJpZGVudGlmaWVyIiwgInN0cmluZyIsICJieXRlcyIsICJpbnQiLCAib2JqZWN0IiwgInNpbmdsZXRvbiIpCi0KLSMgYmVsb3cgaXMgYSBjb2xsZWN0aW9uIG9mIGNsYXNzZXMgdG8gY2FwdHVyZSB0aGUgQVNUIG9mIGFuIEFTVCA6LSkKLSMgbm90IHN1cmUgaWYgYW55IG9mIHRoZSBtZXRob2RzIGFyZSB1c2VmdWwgeWV0LCBidXQgSSdtIGFkZGluZyB0aGVtCi0jIHBpZWNlbWVhbCBhcyB0aGV5IHNlZW0gaGVscGZ1bAotCi1jbGFzcyBBU1Qob2JqZWN0KToKLSAgICBwYXNzICMgYSBtYXJrZXIgY2xhc3MKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiBjbGFzcyBNb2R1bGUoQVNUKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgZGZucyk6CiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICAgc2VsZi5kZm5zID0gZGZucwotICAgICAgICBzZWxmLnR5cGVzID0ge30gIyBtYXBzIHR5cGUgbmFtZSB0byB2YWx1ZSAoZnJvbSBkZm5zKQotICAgICAgICBmb3IgdHlwZSBpbiBkZm5zOgotICAgICAgICAgICAgc2VsZi50eXBlc1t0eXBlLm5hbWUudmFsdWVdID0gdHlwZS52YWx1ZQorICAgICAgICBzZWxmLnR5cGVzID0ge3R5cGUubmFtZTogdHlwZS52YWx1ZSBmb3IgdHlwZSBpbiBkZm5zfQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIk1vZHVsZSglcywgJXMpIiAlIChzZWxmLm5hbWUsIHNlbGYuZGZucykKKyAgICAgICAgcmV0dXJuICdNb2R1bGUoezAubmFtZX0sIHswLmRmbnN9KScuZm9ybWF0KHNlbGYpCiAKIGNsYXNzIFR5cGUoQVNUKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgdmFsdWUpOgpAQCAtMjU3LDcgKzU0LDcgQEAKICAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiVHlwZSglcywgJXMpIiAlIChzZWxmLm5hbWUsIHNlbGYudmFsdWUpCisgICAgICAgIHJldHVybiAnVHlwZSh7MC5uYW1lfSwgezAudmFsdWV9KScuZm9ybWF0KHNlbGYpCiAKIGNsYXNzIENvbnN0cnVjdG9yKEFTVCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGZpZWxkcz1Ob25lKToKQEAgLTI2NSw3ICs2Miw3IEBACiAgICAgICAgIHNlbGYuZmllbGRzID0gZmllbGRzIG9yIFtdCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiQ29uc3RydWN0b3IoJXMsICVzKSIgJSAoc2VsZi5uYW1lLCBzZWxmLmZpZWxkcykKKyAgICAgICAgcmV0dXJuICdDb25zdHJ1Y3Rvcih7MC5uYW1lfSwgezAuZmllbGRzfSknLmZvcm1hdChzZWxmKQogCiBjbGFzcyBGaWVsZChBU1QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlLCBuYW1lPU5vbmUsIHNlcT1GYWxzZSwgb3B0PUZhbHNlKToKQEAgLTI4Miw5ICs3OSw5IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBleHRyYSA9ICIiCiAgICAgICAgIGlmIHNlbGYubmFtZSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuICJGaWVsZCglcyVzKSIgJSAoc2VsZi50eXBlLCBleHRyYSkKKyAgICAgICAgICAgIHJldHVybiAnRmllbGQoezAudHlwZX17MX0pJy5mb3JtYXQoc2VsZiwgZXh0cmEpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gIkZpZWxkKCVzLCAlcyVzKSIgJSAoc2VsZi50eXBlLCBzZWxmLm5hbWUsIGV4dHJhKQorICAgICAgICAgICAgcmV0dXJuICdGaWVsZCh7MC50eXBlfSwgezAubmFtZX17MX0pJy5mb3JtYXQoc2VsZiwgZXh0cmEpCiAKIGNsYXNzIFN1bShBU1QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlcywgYXR0cmlidXRlcz1Ob25lKToKQEAgLTI5MiwxMCArODksMTAgQEAKICAgICAgICAgc2VsZi5hdHRyaWJ1dGVzID0gYXR0cmlidXRlcyBvciBbXQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmF0dHJpYnV0ZXMgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiAiU3VtKCVzKSIgJSBzZWxmLnR5cGVzCisgICAgICAgIGlmIHNlbGYuYXR0cmlidXRlczoKKyAgICAgICAgICAgIHJldHVybiAnU3VtKHswLnR5cGVzfSwgezAuYXR0cmlidXRlc30pJy5mb3JtYXQoc2VsZikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiU3VtKCVzLCAlcykiICUgKHNlbGYudHlwZXMsIHNlbGYuYXR0cmlidXRlcykKKyAgICAgICAgICAgIHJldHVybiAnU3VtKHswLnR5cGVzfSknLmZvcm1hdChzZWxmKQogCiBjbGFzcyBQcm9kdWN0KEFTVCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpZWxkcywgYXR0cmlidXRlcz1Ob25lKToKQEAgLTMwMyw0OSArMTAwLDQzIEBACiAgICAgICAgIHNlbGYuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMgb3IgW10KIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5hdHRyaWJ1dGVzIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gIlByb2R1Y3QoJXMpIiAlIHNlbGYuZmllbGRzCisgICAgICAgIGlmIHNlbGYuYXR0cmlidXRlczoKKyAgICAgICAgICAgIHJldHVybiAnUHJvZHVjdCh7MC5maWVsZHN9LCB7MC5hdHRyaWJ1dGVzfSknLmZvcm1hdChzZWxmKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICJQcm9kdWN0KCVzLCAlcykiICUgKHNlbGYuZmllbGRzLCBzZWxmLmF0dHJpYnV0ZXMpCisgICAgICAgICAgICByZXR1cm4gJ1Byb2R1Y3QoezAuZmllbGRzfSknLmZvcm1hdChzZWxmKQorCisjIEEgZ2VuZXJpYyB2aXNpdG9yIGZvciB0aGUgbWV0YS1BU1QgdGhhdCBkZXNjcmliZXMgQVNETC4gVGhpcyBjYW4gYmUgdXNlZCBieQorIyBlbWl0dGVycy4gTm90ZSB0aGF0IHRoaXMgdmlzaXRvciBkb2VzIG5vdCBwcm92aWRlIGEgZ2VuZXJpYyB2aXNpdCBtZXRob2QsIHNvIGEKKyMgc3ViY2xhc3MgbmVlZHMgdG8gZGVmaW5lIHZpc2l0IG1ldGhvZHMgZnJvbSB2aXNpdE1vZHVsZSB0byBhcyBkZWVwIGFzIHRoZQorIyBpbnRlcmVzdGluZyBub2RlLgorIyBXZSBhbHNvIGRlZmluZSBhIENoZWNrIHZpc2l0b3IgdGhhdCBtYWtlcyBzdXJlIHRoZSBwYXJzZWQgQVNETCBpcyB3ZWxsLWZvcm1lZC4KIAogY2xhc3MgVmlzaXRvckJhc2Uob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBza2lwPUZhbHNlKToKKyAgICAiIiJHZW5lcmljIHRyZWUgdmlzaXRvciBmb3IgQVNUcy4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYuY2FjaGUgPSB7fQotICAgICAgICBzZWxmLnNraXAgPSBza2lwCiAKLSAgICBkZWYgdmlzaXQoc2VsZiwgb2JqZWN0LCAqYXJncyk6Ci0gICAgICAgIG1ldGggPSBzZWxmLl9kaXNwYXRjaChvYmplY3QpCi0gICAgICAgIGlmIG1ldGggaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtZXRoKG9iamVjdCwgKmFyZ3MpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICBvdXRwdXQoIkVycm9yIHZpc2l0aW5nIiArIHJlcHIob2JqZWN0KSkKLSAgICAgICAgICAgIG91dHB1dChzdHIoc3lzLmV4Y19pbmZvKClbMV0pKQotICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0gICAgICAgICAgICAjIFhYWCBoYWNrCi0gICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdmaWxlJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5maWxlLmZsdXNoKCkKLSAgICAgICAgICAgIG9zLl9leGl0KDEpCi0KLSAgICBkZWYgX2Rpc3BhdGNoKHNlbGYsIG9iamVjdCk6Ci0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG9iamVjdCwgQVNUKSwgcmVwcihvYmplY3QpCi0gICAgICAgIGtsYXNzID0gb2JqZWN0Ll9fY2xhc3NfXworICAgIGRlZiB2aXNpdChzZWxmLCBvYmosICphcmdzKToKKyAgICAgICAga2xhc3MgPSBvYmouX19jbGFzc19fCiAgICAgICAgIG1ldGggPSBzZWxmLmNhY2hlLmdldChrbGFzcykKICAgICAgICAgaWYgbWV0aCBpcyBOb25lOgogICAgICAgICAgICAgbWV0aG5hbWUgPSAidmlzaXQiICsga2xhc3MuX19uYW1lX18KLSAgICAgICAgICAgIGlmIHNlbGYuc2tpcDoKLSAgICAgICAgICAgICAgICBtZXRoID0gZ2V0YXR0cihzZWxmLCBtZXRobmFtZSwgTm9uZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWV0aCA9IGdldGF0dHIoc2VsZiwgbWV0aG5hbWUpCisgICAgICAgICAgICBtZXRoID0gZ2V0YXR0cihzZWxmLCBtZXRobmFtZSwgTm9uZSkKICAgICAgICAgICAgIHNlbGYuY2FjaGVba2xhc3NdID0gbWV0aAotICAgICAgICByZXR1cm4gbWV0aAorICAgICAgICBpZiBtZXRoOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG1ldGgob2JqLCAqYXJncykKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBwcmludCgiRXJyb3IgdmlzaXRpbmcgJXI6ICVzIiAlIChvYmosIGUpKQorICAgICAgICAgICAgICAgIHJhaXNlCiAKIGNsYXNzIENoZWNrKFZpc2l0b3JCYXNlKToKKyAgICAiIiJBIHZpc2l0b3IgdGhhdCBjaGVja3MgYSBwYXJzZWQgQVNETCB0cmVlIGZvciBjb3JyZWN0bmVzcy4KIAorICAgIEVycm9ycyBhcmUgcHJpbnRlZCBhbmQgYWNjdW11bGF0ZWQuCisgICAgIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzdXBlcihDaGVjaywgc2VsZikuX19pbml0X18oc2tpcD1UcnVlKQorICAgICAgICBzdXBlcihDaGVjaywgc2VsZikuX19pbml0X18oKQogICAgICAgICBzZWxmLmNvbnMgPSB7fQogICAgICAgICBzZWxmLmVycm9ycyA9IDAKICAgICAgICAgc2VsZi50eXBlcyA9IHt9CkBAIC0zNjcsOCArMTU4LDggQEAKICAgICAgICAgaWYgY29uZmxpY3QgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuY29uc1trZXldID0gbmFtZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3V0cHV0KCJSZWRlZmluaXRpb24gb2YgY29uc3RydWN0b3IgJXMiICUga2V5KQotICAgICAgICAgICAgb3V0cHV0KCJEZWZpbmVkIGluICVzIGFuZCAlcyIgJSAoY29uZmxpY3QsIG5hbWUpKQorICAgICAgICAgICAgcHJpbnQoJ1JlZGVmaW5pdGlvbiBvZiBjb25zdHJ1Y3RvciB7fScuZm9ybWF0KGtleSkpCisgICAgICAgICAgICBwcmludCgnRGVmaW5lZCBpbiB7fSBhbmQge30nLmZvcm1hdChjb25mbGljdCwgbmFtZSkpCiAgICAgICAgICAgICBzZWxmLmVycm9ycyArPSAxCiAgICAgICAgIGZvciBmIGluIGNvbnMuZmllbGRzOgogICAgICAgICAgICAgc2VsZi52aXNpdChmLCBrZXkpCkBAIC0zODMsNiArMTc0LDExIEBACiAgICAgICAgICAgICBzZWxmLnZpc2l0KGYsIG5hbWUpCiAKIGRlZiBjaGVjayhtb2QpOgorICAgICIiIkNoZWNrIHRoZSBwYXJzZWQgQVNETCB0cmVlIGZvciBjb3JyZWN0bmVzcy4KKworICAgIFJldHVybiBUcnVlIGlmIHN1Y2Nlc3MuIEZvciBmYWlsdXJlLCB0aGUgZXJyb3JzIGFyZSBwcmludGVkIG91dCBhbmQgRmFsc2UKKyAgICBpcyByZXR1cm5lZC4KKyAgICAiIiIKICAgICB2ID0gQ2hlY2soKQogICAgIHYudmlzaXQobW9kKQogCkBAIC0zOTAsNDcgKzE4NiwxOTAgQEAKICAgICAgICAgaWYgdCBub3QgaW4gbW9kLnR5cGVzIGFuZCBub3QgdCBpbiBidWlsdGluX3R5cGVzOgogICAgICAgICAgICAgdi5lcnJvcnMgKz0gMQogICAgICAgICAgICAgdXNlcyA9ICIsICIuam9pbih2LnR5cGVzW3RdKQotICAgICAgICAgICAgb3V0cHV0KCJVbmRlZmluZWQgdHlwZSAlcywgdXNlZCBpbiAlcyIgJSAodCwgdXNlcykpCi0KKyAgICAgICAgICAgIHByaW50KCdVbmRlZmluZWQgdHlwZSB7fSwgdXNlZCBpbiB7fScuZm9ybWF0KHQsIHVzZXMpKQogICAgIHJldHVybiBub3Qgdi5lcnJvcnMKIAotZGVmIHBhcnNlKGZpbGUpOgotICAgIHNjYW5uZXIgPSBBU0RMU2Nhbm5lcigpCi0gICAgcGFyc2VyID0gQVNETFBhcnNlcigpCisjIFRoZSBBU0RMIHBhcnNlciBpdHNlbGYgY29tZXMgbmV4dC4gVGhlIG9ubHkgaW50ZXJlc3RpbmcgZXh0ZXJuYWwgaW50ZXJmYWNlCisjIGhlcmUgaXMgdGhlIHRvcC1sZXZlbCBwYXJzZSBmdW5jdGlvbi4KIAotICAgIGYgPSBvcGVuKGZpbGUpCi0gICAgdHJ5OgotICAgICAgICBidWYgPSBmLnJlYWQoKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIGYuY2xvc2UoKQotICAgIHRva2VucyA9IHNjYW5uZXIudG9rZW5pemUoYnVmKQotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZSh0b2tlbnMpCi0gICAgZXhjZXB0IEFTRExTeW50YXhFcnJvcjoKLSAgICAgICAgZXJyID0gc3lzLmV4Y19pbmZvKClbMV0KLSAgICAgICAgb3V0cHV0KHN0cihlcnIpKQotICAgICAgICBsaW5lcyA9IGJ1Zi5zcGxpdCgiXG4iKQotICAgICAgICBvdXRwdXQobGluZXNbZXJyLmxpbmVubyAtIDFdKSAjIGxpbmVzIHN0YXJ0cyBhdCAwLCBmaWxlcyBhdCAxCitkZWYgcGFyc2UoZmlsZW5hbWUpOgorICAgICIiIlBhcnNlIEFTREwgZnJvbSB0aGUgZ2l2ZW4gZmlsZSBhbmQgcmV0dXJuIGEgTW9kdWxlIG5vZGUgZGVzY3JpYmluZyBpdC4iIiIKKyAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGY6CisgICAgICAgIHBhcnNlciA9IEFTRExQYXJzZXIoKQorICAgICAgICByZXR1cm4gcGFyc2VyLnBhcnNlKGYucmVhZCgpKQogCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIGltcG9ydCBnbG9iCi0gICAgaW1wb3J0IHN5cworIyBUeXBlcyBmb3IgZGVzY3JpYmluZyB0b2tlbnMgaW4gYW4gQVNETCBzcGVjaWZpY2F0aW9uLgorY2xhc3MgVG9rZW5LaW5kOgorICAgICIiIlRva2VuS2luZCBpcyBwcm92aWRlcyBhIHNjb3BlIGZvciBlbnVtZXJhdGVkIHRva2VuIGtpbmRzLiIiIgorICAgIChDb25zdHJ1Y3RvcklkLCBUeXBlSWQsIEVxdWFscywgQ29tbWEsIFF1ZXN0aW9uLCBQaXBlLCBBc3RlcmlzaywKKyAgICAgTFBhcmVuLCBSUGFyZW4sIExCcmFjZSwgUkJyYWNlKSA9IHJhbmdlKDExKQogCi0gICAgaWYgbGVuKHN5cy5hcmd2KSA+IDE6Ci0gICAgICAgIGZpbGVzID0gc3lzLmFyZ3ZbMTpdCi0gICAgZWxzZToKLSAgICAgICAgdGVzdGRpciA9ICJ0ZXN0cyIKLSAgICAgICAgZmlsZXMgPSBnbG9iLmdsb2IodGVzdGRpciArICIvKi5hc2RsIikKKyAgICBvcGVyYXRvcl90YWJsZSA9IHsKKyAgICAgICAgJz0nOiBFcXVhbHMsICcsJzogQ29tbWEsICAgICc/JzogUXVlc3Rpb24sICd8JzogUGlwZSwgICAgJygnOiBMUGFyZW4sCisgICAgICAgICcpJzogUlBhcmVuLCAnKic6IEFzdGVyaXNrLCAneyc6IExCcmFjZSwgICAnfSc6IFJCcmFjZX0KIAotICAgIGZvciBmaWxlIGluIGZpbGVzOgotICAgICAgICBvdXRwdXQoZmlsZSkKLSAgICAgICAgbW9kID0gcGFyc2UoZmlsZSkKLSAgICAgICAgaWYgbm90IG1vZDoKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIG91dHB1dCgibW9kdWxlIiwgbW9kLm5hbWUpCi0gICAgICAgIG91dHB1dChsZW4obW9kLmRmbnMpLCAiZGVmaW5pdGlvbnMiKQotICAgICAgICBpZiBub3QgY2hlY2sobW9kKToKLSAgICAgICAgICAgIG91dHB1dCgiQ2hlY2sgZmFpbGVkIikKK1Rva2VuID0gbmFtZWR0dXBsZSgnVG9rZW4nLCAna2luZCB2YWx1ZSBsaW5lbm8nKQorCitjbGFzcyBBU0RMU3ludGF4RXJyb3IoRXhjZXB0aW9uKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbXNnLCBsaW5lbm89Tm9uZSk6CisgICAgICAgIHNlbGYubXNnID0gbXNnCisgICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vIG9yICc8dW5rbm93bj4nCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICdTeW50YXggZXJyb3Igb24gbGluZSB7MC5saW5lbm99OiB7MC5tc2d9Jy5mb3JtYXQoc2VsZikKKworZGVmIHRva2VuaXplX2FzZGwoYnVmKToKKyAgICAiIiJUb2tlbml6ZSB0aGUgZ2l2ZW4gYnVmZmVyLiBZaWVsZCBUb2tlbiBvYmplY3RzLiIiIgorICAgIGZvciBsaW5lbm8sIGxpbmUgaW4gZW51bWVyYXRlKGJ1Zi5zcGxpdGxpbmVzKCksIDEpOgorICAgICAgICBmb3IgbSBpbiByZS5maW5kaXRlcihyJ1xzKihcdyt8LS0uKnwuKScsIGxpbmUuc3RyaXAoKSk6CisgICAgICAgICAgICBjID0gbS5ncm91cCgxKQorICAgICAgICAgICAgaWYgY1swXS5pc2FscGhhKCk6CisgICAgICAgICAgICAgICAgIyBTb21lIGtpbmQgb2YgaWRlbnRpZmllcgorICAgICAgICAgICAgICAgIGlmIGNbMF0uaXN1cHBlcigpOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbihUb2tlbktpbmQuQ29uc3RydWN0b3JJZCwgYywgbGluZW5vKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuKFRva2VuS2luZC5UeXBlSWQsIGMsIGxpbmVubykKKyAgICAgICAgICAgIGVsaWYgY1s6Ml0gPT0gJy0tJzoKKyAgICAgICAgICAgICAgICAjIENvbW1lbnQKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIE9wZXJhdG9ycworICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3Bfa2luZCA9IFRva2VuS2luZC5vcGVyYXRvcl90YWJsZVtjXQorICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKCdJbnZhbGlkIG9wZXJhdG9yICVzJyAlIGMsIGxpbmVubykKKyAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbihvcF9raW5kLCBjLCBsaW5lbm8pCisKK2NsYXNzIEFTRExQYXJzZXI6CisgICAgIiIiUGFyc2VyIGZvciBBU0RMIGZpbGVzLgorCisgICAgQ3JlYXRlLCB0aGVuIGNhbGwgdGhlIHBhcnNlIG1ldGhvZCBvbiBhIGJ1ZmZlciBjb250YWluaW5nIEFTREwuCisgICAgVGhpcyBpcyBhIHNpbXBsZSByZWN1cnNpdmUgZGVzY2VudCBwYXJzZXIgdGhhdCB1c2VzIHRva2VuaXplX2FzZGwgZm9yIHRoZQorICAgIGxleGluZy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX3Rva2VuaXplciA9IE5vbmUKKyAgICAgICAgc2VsZi5jdXJfdG9rZW4gPSBOb25lCisKKyAgICBkZWYgcGFyc2Uoc2VsZiwgYnVmKToKKyAgICAgICAgIiIiUGFyc2UgdGhlIEFTREwgaW4gdGhlIGJ1ZmZlciBhbmQgcmV0dXJuIGFuIEFTVCB3aXRoIGEgTW9kdWxlIHJvb3QuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl90b2tlbml6ZXIgPSB0b2tlbml6ZV9hc2RsKGJ1ZikKKyAgICAgICAgc2VsZi5fYWR2YW5jZSgpCisgICAgICAgIHJldHVybiBzZWxmLl9wYXJzZV9tb2R1bGUoKQorCisgICAgZGVmIF9wYXJzZV9tb2R1bGUoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2F0X2tleXdvcmQoJ21vZHVsZScpOgorICAgICAgICAgICAgc2VsZi5fYWR2YW5jZSgpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmb3IgZGZuIGluIG1vZC5kZm5zOgotICAgICAgICAgICAgICAgIG91dHB1dChkZm4ubmFtZSwgZGZuLnZhbHVlKQorICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKAorICAgICAgICAgICAgICAgICdFeHBlY3RlZCAibW9kdWxlIiAoZm91bmQge30pJy5mb3JtYXQoc2VsZi5jdXJfdG9rZW4udmFsdWUpLAorICAgICAgICAgICAgICAgIHNlbGYuY3VyX3Rva2VuLmxpbmVubykKKyAgICAgICAgbmFtZSA9IHNlbGYuX21hdGNoKHNlbGYuX2lkX2tpbmRzKQorICAgICAgICBzZWxmLl9tYXRjaChUb2tlbktpbmQuTEJyYWNlKQorICAgICAgICBkZWZzID0gc2VsZi5fcGFyc2VfZGVmaW5pdGlvbnMoKQorICAgICAgICBzZWxmLl9tYXRjaChUb2tlbktpbmQuUkJyYWNlKQorICAgICAgICByZXR1cm4gTW9kdWxlKG5hbWUsIGRlZnMpCisKKyAgICBkZWYgX3BhcnNlX2RlZmluaXRpb25zKHNlbGYpOgorICAgICAgICBkZWZzID0gW10KKyAgICAgICAgd2hpbGUgc2VsZi5jdXJfdG9rZW4ua2luZCA9PSBUb2tlbktpbmQuVHlwZUlkOgorICAgICAgICAgICAgdHlwZW5hbWUgPSBzZWxmLl9hZHZhbmNlKCkKKyAgICAgICAgICAgIHNlbGYuX21hdGNoKFRva2VuS2luZC5FcXVhbHMpCisgICAgICAgICAgICB0eXBlID0gc2VsZi5fcGFyc2VfdHlwZSgpCisgICAgICAgICAgICBkZWZzLmFwcGVuZChUeXBlKHR5cGVuYW1lLCB0eXBlKSkKKyAgICAgICAgcmV0dXJuIGRlZnMKKworICAgIGRlZiBfcGFyc2VfdHlwZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jdXJfdG9rZW4ua2luZCA9PSBUb2tlbktpbmQuTFBhcmVuOgorICAgICAgICAgICAgIyBJZiB3ZSBzZWUgYSAoLCBpdCdzIGEgcHJvZHVjdAorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlX3Byb2R1Y3QoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBPdGhlcndpc2UgaXQncyBhIHN1bS4gTG9vayBmb3IgQ29uc3RydWN0b3JJZAorICAgICAgICAgICAgc3VtbGlzdCA9IFtDb25zdHJ1Y3RvcihzZWxmLl9tYXRjaChUb2tlbktpbmQuQ29uc3RydWN0b3JJZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlX29wdGlvbmFsX2ZpZWxkcygpKV0KKyAgICAgICAgICAgIHdoaWxlIHNlbGYuY3VyX3Rva2VuLmtpbmQgID09IFRva2VuS2luZC5QaXBlOgorICAgICAgICAgICAgICAgICMgTW9yZSBjb25zdHJ1Y3RvcnMKKyAgICAgICAgICAgICAgICBzZWxmLl9hZHZhbmNlKCkKKyAgICAgICAgICAgICAgICBzdW1saXN0LmFwcGVuZChDb25zdHJ1Y3RvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWF0Y2goVG9rZW5LaW5kLkNvbnN0cnVjdG9ySWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZV9vcHRpb25hbF9maWVsZHMoKSkpCisgICAgICAgICAgICByZXR1cm4gU3VtKHN1bWxpc3QsIHNlbGYuX3BhcnNlX29wdGlvbmFsX2F0dHJpYnV0ZXMoKSkKKworICAgIGRlZiBfcGFyc2VfcHJvZHVjdChzZWxmKToKKyAgICAgICAgcmV0dXJuIFByb2R1Y3Qoc2VsZi5fcGFyc2VfZmllbGRzKCksIHNlbGYuX3BhcnNlX29wdGlvbmFsX2F0dHJpYnV0ZXMoKSkKKworICAgIGRlZiBfcGFyc2VfZmllbGRzKHNlbGYpOgorICAgICAgICBmaWVsZHMgPSBbXQorICAgICAgICBzZWxmLl9tYXRjaChUb2tlbktpbmQuTFBhcmVuKQorICAgICAgICB3aGlsZSBzZWxmLmN1cl90b2tlbi5raW5kID09IFRva2VuS2luZC5UeXBlSWQ6CisgICAgICAgICAgICB0eXBlbmFtZSA9IHNlbGYuX2FkdmFuY2UoKQorICAgICAgICAgICAgaXNfc2VxLCBpc19vcHQgPSBzZWxmLl9wYXJzZV9vcHRpb25hbF9maWVsZF9xdWFudGlmaWVyKCkKKyAgICAgICAgICAgIGlkID0gKHNlbGYuX2FkdmFuY2UoKSBpZiBzZWxmLmN1cl90b2tlbi5raW5kIGluIHNlbGYuX2lkX2tpbmRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBOb25lKQorICAgICAgICAgICAgZmllbGRzLmFwcGVuZChGaWVsZCh0eXBlbmFtZSwgaWQsIHNlcT1pc19zZXEsIG9wdD1pc19vcHQpKQorICAgICAgICAgICAgaWYgc2VsZi5jdXJfdG9rZW4ua2luZCA9PSBUb2tlbktpbmQuUlBhcmVuOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbGlmIHNlbGYuY3VyX3Rva2VuLmtpbmQgPT0gVG9rZW5LaW5kLkNvbW1hOgorICAgICAgICAgICAgICAgIHNlbGYuX2FkdmFuY2UoKQorICAgICAgICBzZWxmLl9tYXRjaChUb2tlbktpbmQuUlBhcmVuKQorICAgICAgICByZXR1cm4gZmllbGRzCisKKyAgICBkZWYgX3BhcnNlX29wdGlvbmFsX2ZpZWxkcyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jdXJfdG9rZW4ua2luZCA9PSBUb2tlbktpbmQuTFBhcmVuOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlX2ZpZWxkcygpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIF9wYXJzZV9vcHRpb25hbF9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9hdF9rZXl3b3JkKCdhdHRyaWJ1dGVzJyk6CisgICAgICAgICAgICBzZWxmLl9hZHZhbmNlKCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wYXJzZV9maWVsZHMoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBfcGFyc2Vfb3B0aW9uYWxfZmllbGRfcXVhbnRpZmllcihzZWxmKToKKyAgICAgICAgaXNfc2VxLCBpc19vcHQgPSBGYWxzZSwgRmFsc2UKKyAgICAgICAgaWYgc2VsZi5jdXJfdG9rZW4ua2luZCA9PSBUb2tlbktpbmQuQXN0ZXJpc2s6CisgICAgICAgICAgICBpc19zZXEgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9hZHZhbmNlKCkKKyAgICAgICAgZWxpZiBzZWxmLmN1cl90b2tlbi5raW5kID09IFRva2VuS2luZC5RdWVzdGlvbjoKKyAgICAgICAgICAgIGlzX29wdCA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuX2FkdmFuY2UoKQorICAgICAgICByZXR1cm4gaXNfc2VxLCBpc19vcHQKKworICAgIGRlZiBfYWR2YW5jZShzZWxmKToKKyAgICAgICAgIiIiIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGN1cnJlbnQgdG9rZW4gYW5kIHJlYWQgdGhlIG5leHQgb25lIGludG8KKyAgICAgICAgICAgIHNlbGYuY3VyX3Rva2VuLgorICAgICAgICAiIiIKKyAgICAgICAgY3VyX3ZhbCA9IE5vbmUgaWYgc2VsZi5jdXJfdG9rZW4gaXMgTm9uZSBlbHNlIHNlbGYuY3VyX3Rva2VuLnZhbHVlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuY3VyX3Rva2VuID0gbmV4dChzZWxmLl90b2tlbml6ZXIpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgc2VsZi5jdXJfdG9rZW4gPSBOb25lCisgICAgICAgIHJldHVybiBjdXJfdmFsCisKKyAgICBfaWRfa2luZHMgPSAoVG9rZW5LaW5kLkNvbnN0cnVjdG9ySWQsIFRva2VuS2luZC5UeXBlSWQpCisKKyAgICBkZWYgX21hdGNoKHNlbGYsIGtpbmQpOgorICAgICAgICAiIiJUaGUgJ21hdGNoJyBwcmltaXRpdmUgb2YgUkQgcGFyc2Vycy4KKworICAgICAgICAqIFZlcmlmaWVzIHRoYXQgdGhlIGN1cnJlbnQgdG9rZW4gaXMgb2YgdGhlIGdpdmVuIGtpbmQgKGtpbmQgY2FuCisgICAgICAgICAgYmUgYSB0dXBsZSwgaW4gd2hpY2ggdGhlIGtpbmQgbXVzdCBtYXRjaCBvbmUgb2YgaXRzIG1lbWJlcnMpLgorICAgICAgICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50IHRva2VuCisgICAgICAgICogUmVhZHMgaW4gdGhlIG5leHQgdG9rZW4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIChpc2luc3RhbmNlKGtpbmQsIHR1cGxlKSBhbmQgc2VsZi5jdXJfdG9rZW4ua2luZCBpbiBraW5kIG9yCisgICAgICAgICAgICBzZWxmLmN1cl90b2tlbi5raW5kID09IGtpbmQKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuY3VyX3Rva2VuLnZhbHVlCisgICAgICAgICAgICBzZWxmLl9hZHZhbmNlKCkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKAorICAgICAgICAgICAgICAgICdVbm1hdGNoZWQge30gKGZvdW5kIHt9KScuZm9ybWF0KGtpbmQsIHNlbGYuY3VyX3Rva2VuLmtpbmQpLAorICAgICAgICAgICAgICAgIHNlbGYuY3VyX3Rva2VuLmxpbmVubykKKworICAgIGRlZiBfYXRfa2V5d29yZChzZWxmLCBrZXl3b3JkKToKKyAgICAgICAgcmV0dXJuIChzZWxmLmN1cl90b2tlbi5raW5kID09IFRva2VuS2luZC5UeXBlSWQgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5jdXJfdG9rZW4udmFsdWUgPT0ga2V5d29yZCkKZGlmZiAtLWdpdCBhL1BhcnNlci9hc2RsX2MucHkgYi9QYXJzZXIvYXNkbF9jLnB5CmluZGV4IGQ2MDg2ZTYuLmYzOGMyNTMgMTAwNzU1Ci0tLSBhL1BhcnNlci9hc2RsX2MucHkKKysrIGIvUGFyc2VyL2FzZGxfYy5weQpAQCAtMSw5ICsxLDYgQEAKICMhIC91c3IvYmluL2VudiBweXRob24KICIiIkdlbmVyYXRlIEMgY29kZSBmcm9tIGFuIEFTREwgZGVzY3JpcHRpb24uIiIiCiAKLSMgVE8gRE8KLSMgaGFuZGxlIGZpZWxkcyB0aGF0IGhhdmUgYSB0eXBlIGJ1dCBubyBuYW1lCi0KIGltcG9ydCBvcywgc3lzCiAKIGltcG9ydCBhc2RsCkBAIC0xNCwxMiArMTEsOCBAQAogZGVmIGdldF9jX3R5cGUobmFtZSk6CiAgICAgIiIiUmV0dXJuIGEgc3RyaW5nIGZvciB0aGUgQyBuYW1lIG9mIHRoZSB0eXBlLgogCi0gICAgVGhpcyBmdW5jdGlvbiBzcGVjaWFsIGNhc2VzIHRoZSBkZWZhdWx0IHR5cGVzIHByb3ZpZGVkIGJ5IGFzZGw6Ci0gICAgaWRlbnRpZmllciwgc3RyaW5nLCBpbnQuCisgICAgVGhpcyBmdW5jdGlvbiBzcGVjaWFsIGNhc2VzIHRoZSBkZWZhdWx0IHR5cGVzIHByb3ZpZGVkIGJ5IGFzZGwuCiAgICAgIiIiCi0gICAgIyBYWFggYWNrISAgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIElkIGlzIHVzZWZ1bCBhbmQgd2hlcmUgc3RyaW5nCi0gICAgaWYgaXNpbnN0YW5jZShuYW1lLCBhc2RsLklkKToKLSAgICAgICAgbmFtZSA9IG5hbWUudmFsdWUKICAgICBpZiBuYW1lIGluIGFzZGwuYnVpbHRpbl90eXBlczoKICAgICAgICAgcmV0dXJuIG5hbWUKICAgICBlbHNlOgpAQCAtMTQ0LDcgKzEzNyw3IEBACiAKIAogY2xhc3MgU3RydWN0VmlzaXRvcihFbWl0VmlzaXRvcik6Ci0gICAgIiIiVmlzaXRvciB0byBnZW5lcmF0ZSB0eXBkZWZzIGZvciBBU1QuIiIiCisgICAgIiIiVmlzaXRvciB0byBnZW5lcmF0ZSB0eXBlZGVmcyBmb3IgQVNULiIiIgogCiAgICAgZGVmIHZpc2l0TW9kdWxlKHNlbGYsIG1vZCk6CiAgICAgICAgIGZvciBkZm4gaW4gbW9kLmRmbnM6CkBAIC0xODgsOSArMTgxLDYgQEAKICAgICAgICAgICAgICAgICBzZWxmLnZpc2l0KGYsIGRlcHRoICsgMSkKICAgICAgICAgICAgIHNlbGYuZW1pdCgifSAlczsiICUgY29ucy5uYW1lLCBkZXB0aCkKICAgICAgICAgICAgIHNlbGYuZW1pdCgiIiwgZGVwdGgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFhYWCBub3Qgc3VyZSB3aGF0IEkgd2FudCBoZXJlLCBub3RoaW5nIGlzIHByb2JhYmx5IGZpbmUKLSAgICAgICAgICAgIHBhc3MKIAogICAgIGRlZiB2aXNpdEZpZWxkKHNlbGYsIGZpZWxkLCBkZXB0aCk6CiAgICAgICAgICMgWFhYIG5lZWQgdG8gbG9va3VwIGZpZWxkLnR5cGUsIGJlY2F1c2UgaXQgbWlnaHQgYmUgc29tZXRoaW5nCkBAIC0xOTgsNyArMTg4LDcgQEAKICAgICAgICAgY3R5cGUgPSBnZXRfY190eXBlKGZpZWxkLnR5cGUpCiAgICAgICAgIG5hbWUgPSBmaWVsZC5uYW1lCiAgICAgICAgIGlmIGZpZWxkLnNlcToKLSAgICAgICAgICAgIGlmIGZpZWxkLnR5cGUudmFsdWUgaW4gKCdjbXBvcCcsKToKKyAgICAgICAgICAgIGlmIGZpZWxkLnR5cGUgPT0gJ2NtcG9wJzoKICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoImFzZGxfaW50X3NlcSAqJShuYW1lKXM7IiAlIGxvY2FscygpLCBkZXB0aCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCJhc2RsX3NlcSAqJShuYW1lKXM7IiAlIGxvY2FscygpLCBkZXB0aCkKQEAgLTI1Myw3ICsyNDMsNyBAQAogICAgICAgICAgICAgICAgIG5hbWUgPSBmLm5hbWUKICAgICAgICAgICAgICMgWFhYIHNob3VsZCBleHRlbmQgZ2V0X2NfdHlwZSgpIHRvIGhhbmRsZSB0aGlzCiAgICAgICAgICAgICBpZiBmLnNlcToKLSAgICAgICAgICAgICAgICBpZiBmLnR5cGUudmFsdWUgaW4gKCdjbXBvcCcsKToKKyAgICAgICAgICAgICAgICBpZiBmLnR5cGUgPT0gJ2NtcG9wJzoKICAgICAgICAgICAgICAgICAgICAgY3R5cGUgPSAiYXNkbF9pbnRfc2VxICoiCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgY3R5cGUgPSAiYXNkbF9zZXEgKiIKQEAgLTI4NSw3ICsyNzUsOSBAQAogCiAgICAgZGVmIHZpc2l0UHJvZHVjdChzZWxmLCBwcm9kLCBuYW1lKToKICAgICAgICAgc2VsZi5lbWl0X2Z1bmN0aW9uKG5hbWUsIGdldF9jX3R5cGUobmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmdldF9hcmdzKHByb2QuZmllbGRzKSwgW10sIHVuaW9uPUZhbHNlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRfYXJncyhwcm9kLmZpZWxkcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmdldF9hcmdzKHByb2QuYXR0cmlidXRlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbj1GYWxzZSkKIAogCiBjbGFzcyBGdW5jdGlvblZpc2l0b3IoUHJvdG90eXBlVmlzaXRvcik6CkBAIC0zMzksNyArMzMxLDggQEAKICAgICAgICAgICAgIHNlbGYuZW1pdChzLCBkZXB0aCwgcmVmbG93KQogICAgICAgICBmb3IgYXJndHlwZSwgYXJnbmFtZSwgb3B0IGluIGFyZ3M6CiAgICAgICAgICAgICBlbWl0KCJwLT4lcyA9ICVzOyIgJSAoYXJnbmFtZSwgYXJnbmFtZSksIDEpCi0gICAgICAgIGFzc2VydCBub3QgYXR0cnMKKyAgICAgICAgZm9yIGFyZ3R5cGUsIGFyZ25hbWUsIG9wdCBpbiBhdHRyczoKKyAgICAgICAgICAgIGVtaXQoInAtPiVzID0gJXM7IiAlIChhcmduYW1lLCBhcmduYW1lKSwgMSkKIAogCiBjbGFzcyBQaWNrbGVWaXNpdG9yKEVtaXRWaXNpdG9yKToKQEAgLTQzNyw3ICs0MzAsNyBAQAogICAgICAgICAgICAgc2VsZi5lbWl0KCIiLCAwKQogICAgICAgICAgICAgZm9yIGYgaW4gdC5maWVsZHM6CiAgICAgICAgICAgICAgICAgc2VsZi52aXNpdEZpZWxkKGYsIHQubmFtZSwgc3VtPXN1bSwgZGVwdGg9MikKLSAgICAgICAgICAgIGFyZ3MgPSBbZi5uYW1lLnZhbHVlIGZvciBmIGluIHQuZmllbGRzXSArIFthLm5hbWUudmFsdWUgZm9yIGEgaW4gc3VtLmF0dHJpYnV0ZXNdCisgICAgICAgICAgICBhcmdzID0gW2YubmFtZSBmb3IgZiBpbiB0LmZpZWxkc10gKyBbYS5uYW1lIGZvciBhIGluIHN1bS5hdHRyaWJ1dGVzXQogICAgICAgICAgICAgc2VsZi5lbWl0KCIqb3V0ID0gJXMoJXMpOyIgJSAodC5uYW1lLCBzZWxmLmJ1aWxkQXJncyhhcmdzKSksIDIpCiAgICAgICAgICAgICBzZWxmLmVtaXQoImlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOyIsIDIpCiAgICAgICAgICAgICBzZWxmLmVtaXQoInJldHVybiAwOyIsIDIpCkBAIC00NjIsMTAgKzQ1NSwxNSBAQAogICAgICAgICBzZWxmLmVtaXQoIlB5T2JqZWN0KiB0bXAgPSBOVUxMOyIsIDEpCiAgICAgICAgIGZvciBmIGluIHByb2QuZmllbGRzOgogICAgICAgICAgICAgc2VsZi52aXNpdEZpZWxkRGVjbGFyYXRpb24oZiwgbmFtZSwgcHJvZD1wcm9kLCBkZXB0aD0xKQorICAgICAgICBmb3IgYSBpbiBwcm9kLmF0dHJpYnV0ZXM6CisgICAgICAgICAgICBzZWxmLnZpc2l0RmllbGREZWNsYXJhdGlvbihhLCBuYW1lLCBwcm9kPXByb2QsIGRlcHRoPTEpCiAgICAgICAgIHNlbGYuZW1pdCgiIiwgMCkKICAgICAgICAgZm9yIGYgaW4gcHJvZC5maWVsZHM6CiAgICAgICAgICAgICBzZWxmLnZpc2l0RmllbGQoZiwgbmFtZSwgcHJvZD1wcm9kLCBkZXB0aD0xKQotICAgICAgICBhcmdzID0gW2YubmFtZS52YWx1ZSBmb3IgZiBpbiBwcm9kLmZpZWxkc10KKyAgICAgICAgZm9yIGEgaW4gcHJvZC5hdHRyaWJ1dGVzOgorICAgICAgICAgICAgc2VsZi52aXNpdEZpZWxkKGEsIG5hbWUsIHByb2Q9cHJvZCwgZGVwdGg9MSkKKyAgICAgICAgYXJncyA9IFtmLm5hbWUgZm9yIGYgaW4gcHJvZC5maWVsZHNdCisgICAgICAgIGFyZ3MuZXh0ZW5kKFthLm5hbWUgZm9yIGEgaW4gcHJvZC5hdHRyaWJ1dGVzXSkKICAgICAgICAgc2VsZi5lbWl0KCIqb3V0ID0gJXMoJXMpOyIgJSAobmFtZSwgc2VsZi5idWlsZEFyZ3MoYXJncykpLCAxKQogICAgICAgICBzZWxmLmVtaXQoInJldHVybiAwOyIsIDEpCiAgICAgICAgIHNlbGYuZW1pdCgiZmFpbGVkOiIsIDApCkBAIC00ODcsOCArNDg1LDggQEAKIAogICAgIGRlZiBpc1NpbXBsZVN1bShzZWxmLCBmaWVsZCk6CiAgICAgICAgICMgWFhYIGNhbiB0aGUgbWVtYmVycyBvZiB0aGlzIGxpc3QgYmUgZGV0ZXJtaW5lZCBhdXRvbWF0aWNhbGx5PwotICAgICAgICByZXR1cm4gZmllbGQudHlwZS52YWx1ZSBpbiAoJ2V4cHJfY29udGV4dCcsICdib29sb3AnLCAnb3BlcmF0b3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuYXJ5b3AnLCAnY21wb3AnKQorICAgICAgICByZXR1cm4gZmllbGQudHlwZSBpbiAoJ2V4cHJfY29udGV4dCcsICdib29sb3AnLCAnb3BlcmF0b3InLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuYXJ5b3AnLCAnY21wb3AnKQogCiAgICAgZGVmIGlzTnVtZXJpYyhzZWxmLCBmaWVsZCk6CiAgICAgICAgIHJldHVybiBnZXRfY190eXBlKGZpZWxkLnR5cGUpIGluICgiaW50IiwgImJvb2wiKQpAQCAtOTYwLDcgKzk1OCw3IEBACiAKICAgICBkZWYgdmlzaXRQcm9kdWN0KHNlbGYsIHByb2QsIG5hbWUpOgogICAgICAgICBpZiBwcm9kLmZpZWxkczoKLSAgICAgICAgICAgIGZpZWxkcyA9IG5hbWUudmFsdWUrIl9maWVsZHMiCisgICAgICAgICAgICBmaWVsZHMgPSBuYW1lKyJfZmllbGRzIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZmllbGRzID0gIk5VTEwiCiAgICAgICAgIHNlbGYuZW1pdCgnJXNfdHlwZSA9IG1ha2VfdHlwZSgiJXMiLCAmQVNUX3R5cGUsICVzLCAlZCk7JyAlCkBAIC05ODcsNyArOTg1LDcgQEAKIAogICAgIGRlZiB2aXNpdENvbnN0cnVjdG9yKHNlbGYsIGNvbnMsIG5hbWUsIHNpbXBsZSk6CiAgICAgICAgIGlmIGNvbnMuZmllbGRzOgotICAgICAgICAgICAgZmllbGRzID0gY29ucy5uYW1lLnZhbHVlKyJfZmllbGRzIgorICAgICAgICAgICAgZmllbGRzID0gY29ucy5uYW1lKyJfZmllbGRzIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZmllbGRzID0gIk5VTEwiCiAgICAgICAgIHNlbGYuZW1pdCgnJXNfdHlwZSA9IG1ha2VfdHlwZSgiJXMiLCAlc190eXBlLCAlcywgJWQpOycgJQpAQCAtMTE3MCw3ICsxMTY4LDcgQEAKICAgICBkZWYgc2V0KHNlbGYsIGZpZWxkLCB2YWx1ZSwgZGVwdGgpOgogICAgICAgICBpZiBmaWVsZC5zZXE6CiAgICAgICAgICAgICAjIFhYWCBzaG91bGQgcmVhbGx5IGNoZWNrIGZvciBpc19zaW1wbGUsIGJ1dCB0aGF0IHJlcXVpcmVzIGEgc3ltYm9sIHRhYmxlCi0gICAgICAgICAgICBpZiBmaWVsZC50eXBlLnZhbHVlID09ICJjbXBvcCI6CisgICAgICAgICAgICBpZiBmaWVsZC50eXBlID09ICJjbXBvcCI6CiAgICAgICAgICAgICAgICAgIyBXaGlsZSB0aGUgc2VxdWVuY2UgZWxlbWVudHMgYXJlIHN0b3JlZCBhcyB2b2lkKiwKICAgICAgICAgICAgICAgICAjIGFzdDJvYmpfY21wb3AgZXhwZWN0cyBhbiBlbnVtCiAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCJ7IiwgZGVwdGgpCkBAIC0xMjQ5LDEyICsxMjQ3LDE1IEBACiAKIGNvbW1vbl9tc2cgPSAiLyogRmlsZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSAlcy4gKi9cblxuIgogCi1kZWYgbWFpbihzcmNmaWxlKToKK2RlZiBtYWluKHNyY2ZpbGUsIGR1bXBfbW9kdWxlPUZhbHNlKToKICAgICBhcmd2MCA9IHN5cy5hcmd2WzBdCiAgICAgY29tcG9uZW50cyA9IGFyZ3YwLnNwbGl0KG9zLnNlcCkKICAgICBhcmd2MCA9IG9zLnNlcC5qb2luKGNvbXBvbmVudHNbLTI6XSkKICAgICBhdXRvX2dlbl9tc2cgPSBjb21tb25fbXNnICUgYXJndjAKICAgICBtb2QgPSBhc2RsLnBhcnNlKHNyY2ZpbGUpCisgICAgaWYgZHVtcF9tb2R1bGU6CisgICAgICAgIHByaW50KCdQYXJzZWQgTW9kdWxlOicpCisgICAgICAgIHByaW50KG1vZCkKICAgICBpZiBub3QgYXNkbC5jaGVjayhtb2QpOgogICAgICAgICBzeXMuZXhpdCgxKQogICAgIGlmIElOQ19ESVI6CkBAIC0xMjk2LDIxICsxMjk3LDIzIEBACiAgICAgICAgIGYuY2xvc2UoKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIGltcG9ydCBzeXMKICAgICBpbXBvcnQgZ2V0b3B0CiAKICAgICBJTkNfRElSID0gJycKICAgICBTUkNfRElSID0gJycKLSAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChzeXMuYXJndlsxOl0sICJoOmM6IikKLSAgICBpZiBsZW4ob3B0cykgIT0gMToKLSAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiTXVzdCBzcGVjaWZ5IGV4YWN0bHkgb25lIG91dHB1dCBmaWxlXG4iKQotICAgICAgICBzeXMuZXhpdCgxKQorICAgIGR1bXBfbW9kdWxlID0gRmFsc2UKKyAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChzeXMuYXJndlsxOl0sICJkaDpjOiIpCiAgICAgZm9yIG8sIHYgaW4gb3B0czoKICAgICAgICAgaWYgbyA9PSAnLWgnOgogICAgICAgICAgICAgSU5DX0RJUiA9IHYKICAgICAgICAgaWYgbyA9PSAnLWMnOgogICAgICAgICAgICAgU1JDX0RJUiA9IHYKLSAgICBpZiBsZW4oYXJncykgIT0gMToKLSAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiTXVzdCBzcGVjaWZ5IHNpbmdsZSBpbnB1dCBmaWxlXG4iKQorICAgICAgICBpZiBvID09ICctZCc6CisgICAgICAgICAgICBkdW1wX21vZHVsZSA9IFRydWUKKyAgICBpZiBJTkNfRElSIGFuZCBTUkNfRElSOgorICAgICAgICBwcmludCgnTXVzdCBzcGVjaWZ5IGV4YWN0bHkgb25lIG91dHB1dCBmaWxlJykKICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICBtYWluKGFyZ3NbMF0pCisgICAgZWxpZiBsZW4oYXJncykgIT0gMToKKyAgICAgICAgcHJpbnQoJ011c3Qgc3BlY2lmeSBzaW5nbGUgaW5wdXQgZmlsZScpCisgICAgICAgIHN5cy5leGl0KDEpCisgICAgbWFpbihhcmdzWzBdLCBkdW1wX21vZHVsZSkKZGlmZiAtLWdpdCBhL1BhcnNlci9ub2RlLmMgYi9QYXJzZXIvbm9kZS5jCmluZGV4IDU2NGJkOTEuLjAwMTAzMjQgMTAwNjQ0Ci0tLSBhL1BhcnNlci9ub2RlLmMKKysrIGIvUGFyc2VyL25vZGUuYwpAQCAtNzAsOCArNzAsOCBAQAogICogTm90ZSB0aGF0IHRoaXMgd291bGQgYmUgc3RyYWlnaHRmb3J3YXJkIGlmIGEgbm9kZSBzdG9yZWQgaXRzIGN1cnJlbnQKICAqIGNhcGFjaXR5LiAgVGhlIGNvZGUgaXMgdHJpY2t5IHRvIGF2b2lkIHRoYXQuCiAgKi8KLSNkZWZpbmUgWFhYUk9VTkRVUChuKSAoKG4pIDw9IDEgPyAobikgOiAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgKG4pIDw9IDEyOCA/IF9QeV9TSVpFX1JPVU5EX1VQKChuKSwgNCkgOiBcCisjZGVmaW5lIFhYWFJPVU5EVVAobikgKChuKSA8PSAxID8gKG4pIDogICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgKG4pIDw9IDEyOCA/IChpbnQpX1B5X1NJWkVfUk9VTkRfVVAoKG4pLCA0KSA6ICAgIFwKICAgICAgICAgICAgICAgIGZhbmN5X3JvdW5kdXAobikpCiAKIApkaWZmIC0tZ2l0IGEvUGFyc2VyL3BnZW4uYyBiL1BhcnNlci9wZ2VuLmMKaW5kZXggYjJmODQ3MC4uZjMwMzFhZSAxMDA2NDQKLS0tIGEvUGFyc2VyL3BnZW4uYworKysgYi9QYXJzZXIvcGdlbi5jCkBAIC0xMzYsMTEgKzEzNiwxMiBAQAogCiBzdGF0aWMgY2hhciBSRVFORk1UW10gPSAibWV0YWNvbXBpbGU6IGxlc3MgdGhhbiAlZCBjaGlsZHJlblxuIjsKIAotI2RlZmluZSBSRVFOKGksIGNvdW50KSBcCisjZGVmaW5lIFJFUU4oaSwgY291bnQpIGRvIHsgXAogICAgIGlmIChpIDwgY291bnQpIHsgXAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgUkVRTkZNVCwgY291bnQpOyBcCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlJFUU4iKTsgXAotICAgIH0gZWxzZQorICAgIH0gXAorfSB3aGlsZSAoMCkKIAogI2Vsc2UKICNkZWZpbmUgUkVRTihpLCBjb3VudCkgIC8qIGVtcHR5ICovCmRpZmYgLS1naXQgYS9QYXJzZXIvcGdlbm1haW4uYyBiL1BhcnNlci9wZ2VubWFpbi5jCmluZGV4IDAxN2E0ZjkuLjBmMDU1ZDYgMTAwNjQ0Ci0tLSBhL1BhcnNlci9wZ2VubWFpbi5jCisrKyBiL1BhcnNlci9wZ2VubWFpbi5jCkBAIC05NiwxMCArOTYsMTEgQEAKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJQYXJzaW5nIGVycm9yICVkLCBsaW5lICVkLlxuIiwKICAgICAgICAgICAgIGVyci5lcnJvciwgZXJyLmxpbmVubyk7CiAgICAgICAgIGlmIChlcnIudGV4dCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBzaXplX3QgaTsKKyAgICAgICAgICAgIHNpemVfdCBsZW47CisgICAgICAgICAgICBpbnQgaTsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMiLCBlcnIudGV4dCk7Ci0gICAgICAgICAgICBpID0gc3RybGVuKGVyci50ZXh0KTsKLSAgICAgICAgICAgIGlmIChpID09IDAgfHwgZXJyLnRleHRbaS0xXSAhPSAnXG4nKQorICAgICAgICAgICAgbGVuID0gc3RybGVuKGVyci50ZXh0KTsKKyAgICAgICAgICAgIGlmIChsZW4gPT0gMCB8fCBlcnIudGV4dFtsZW4tMV0gIT0gJ1xuJykKICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZXJyLm9mZnNldDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgaWYgKGVyci50ZXh0W2ldID09ICdcdCcpCmRpZmYgLS1naXQgYS9QYXJzZXIvcHJpbnRncmFtbWFyLmMgYi9QYXJzZXIvcHJpbnRncmFtbWFyLmMKaW5kZXggZGQ3ZTZhZS4uNzMxMWU1NSAxMDA2NDQKLS0tIGEvUGFyc2VyL3ByaW50Z3JhbW1hci5jCisrKyBiL1BhcnNlci9wcmludGdyYW1tYXIuYwpAQCAtODQsNyArODQsNyBAQAogcHJpbnRkZmFzKGdyYW1tYXIgKmcsIEZJTEUgKmZwKQogewogICAgIGRmYSAqZDsKLSAgICBpbnQgaSwgajsKKyAgICBpbnQgaSwgaiwgbjsKIAogICAgIHByaW50c3RhdGVzKGcsIGZwKTsKICAgICBmcHJpbnRmKGZwLCAic3RhdGljIGRmYSBkZmFzWyVkXSA9IHtcbiIsIGctPmdfbmRmYXMpOwpAQCAtOTMsNyArOTMsOCBAQAogICAgICAgICBmcHJpbnRmKGZwLCAiICAgIHslZCwgXCIlc1wiLCAlZCwgJWQsIHN0YXRlc18lZCxcbiIsCiAgICAgICAgICAgICBkLT5kX3R5cGUsIGQtPmRfbmFtZSwgZC0+ZF9pbml0aWFsLCBkLT5kX25zdGF0ZXMsIGkpOwogICAgICAgICBmcHJpbnRmKGZwLCAiICAgICBcIiIpOwotICAgICAgICBmb3IgKGogPSAwOyBqIDwgTkJZVEVTKGctPmdfbGwubGxfbmxhYmVscyk7IGorKykKKyAgICAgICAgbiA9IE5CWVRFUyhnLT5nX2xsLmxsX25sYWJlbHMpOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgbjsgaisrKQogICAgICAgICAgICAgZnByaW50ZihmcCwgIlxcJTAzbyIsIGQtPmRfZmlyc3Rbal0gJiAweGZmKTsKICAgICAgICAgZnByaW50ZihmcCwgIlwifSxcbiIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1BhcnNlci9zcGFyay5weSBiL1BhcnNlci9zcGFyay5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhjMWE4OS4uMDAwMDAwMAotLS0gYS9QYXJzZXIvc3BhcmsucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4NDkgKzAsMCBAQAotIyAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIgSm9obiBBeWNvY2sKLSMKLSMgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotIyAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0jICAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0jICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0jICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLSMgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotIyAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotIwotIyAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKLSMgIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotIwotIyAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi0jICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSMgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KLSMgIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCi0jICBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAotIyAgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKLSMgIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotCi1fX3ZlcnNpb25fXyA9ICdTUEFSSy0wLjcgKHByZS1hbHBoYS01KScKLQotaW1wb3J0IHJlCi0KLSMgQ29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHB5dGhvbnMuCi1kZWYgb3V0cHV0KHN0cmluZz0nJywgZW5kPSdcbicpOgotICAgIHN5cy5zdGRvdXQud3JpdGUoc3RyaW5nICsgZW5kKQotCi10cnk6Ci0gICAgc29ydGVkCi1leGNlcHQgTmFtZUVycm9yOgotICAgIGRlZiBzb3J0ZWQoc2VxKToKLSAgICAgICAgc2VxMiA9IHNlcVs6XQotICAgICAgICBzZXEyLnNvcnQoKQotICAgICAgICByZXR1cm4gc2VxMgotCi1kZWYgX25hbWVsaXN0KGluc3RhbmNlKToKLSAgICBuYW1lbGlzdCwgbmFtZWRpY3QsIGNsYXNzbGlzdCA9IFtdLCB7fSwgW2luc3RhbmNlLl9fY2xhc3NfX10KLSAgICBmb3IgYyBpbiBjbGFzc2xpc3Q6Ci0gICAgICAgIGZvciBiIGluIGMuX19iYXNlc19fOgotICAgICAgICAgICAgY2xhc3NsaXN0LmFwcGVuZChiKQotICAgICAgICBmb3IgbmFtZSBpbiBjLl9fZGljdF9fLmtleXMoKToKLSAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIG5hbWVkaWN0OgotICAgICAgICAgICAgICAgIG5hbWVsaXN0LmFwcGVuZChuYW1lKQotICAgICAgICAgICAgICAgIG5hbWVkaWN0W25hbWVdID0gMQotICAgIHJldHVybiBuYW1lbGlzdAotCi1jbGFzcyBHZW5lcmljU2Nhbm5lcjoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmxhZ3M9MCk6Ci0gICAgICAgIHBhdHRlcm4gPSBzZWxmLnJlZmxlY3QoKQotICAgICAgICBzZWxmLnJlID0gcmUuY29tcGlsZShwYXR0ZXJuLCByZS5WRVJCT1NFfGZsYWdzKQotCi0gICAgICAgIHNlbGYuaW5kZXgyZnVuYyA9IHt9Ci0gICAgICAgIGZvciBuYW1lLCBudW1iZXIgaW4gc2VsZi5yZS5ncm91cGluZGV4Lml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLmluZGV4MmZ1bmNbbnVtYmVyLTFdID0gZ2V0YXR0cihzZWxmLCAndF8nICsgbmFtZSkKLQotICAgIGRlZiBtYWtlUkUoc2VsZiwgbmFtZSk6Ci0gICAgICAgIGRvYyA9IGdldGF0dHIoc2VsZiwgbmFtZSkuX19kb2NfXwotICAgICAgICBydiA9ICcoP1A8JXM+JXMpJyAlIChuYW1lWzI6XSwgZG9jKQotICAgICAgICByZXR1cm4gcnYKLQotICAgIGRlZiByZWZsZWN0KHNlbGYpOgotICAgICAgICBydiA9IFtdCi0gICAgICAgIGZvciBuYW1lIGluIF9uYW1lbGlzdChzZWxmKToKLSAgICAgICAgICAgIGlmIG5hbWVbOjJdID09ICd0XycgYW5kIG5hbWUgIT0gJ3RfZGVmYXVsdCc6Ci0gICAgICAgICAgICAgICAgcnYuYXBwZW5kKHNlbGYubWFrZVJFKG5hbWUpKQotCi0gICAgICAgIHJ2LmFwcGVuZChzZWxmLm1ha2VSRSgndF9kZWZhdWx0JykpCi0gICAgICAgIHJldHVybiAnfCcuam9pbihydikKLQotICAgIGRlZiBlcnJvcihzZWxmLCBzLCBwb3MpOgotICAgICAgICBvdXRwdXQoIkxleGljYWwgZXJyb3IgYXQgcG9zaXRpb24gJXMiICUgcG9zKQotICAgICAgICByYWlzZSBTeXN0ZW1FeGl0Ci0KLSAgICBkZWYgdG9rZW5pemUoc2VsZiwgcyk6Ci0gICAgICAgIHBvcyA9IDAKLSAgICAgICAgbiA9IGxlbihzKQotICAgICAgICB3aGlsZSBwb3MgPCBuOgotICAgICAgICAgICAgbSA9IHNlbGYucmUubWF0Y2gocywgcG9zKQotICAgICAgICAgICAgaWYgbSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IocywgcG9zKQotCi0gICAgICAgICAgICBncm91cHMgPSBtLmdyb3VwcygpCi0gICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oZ3JvdXBzKSk6Ci0gICAgICAgICAgICAgICAgaWYgZ3JvdXBzW2ldIGFuZCBpIGluIHNlbGYuaW5kZXgyZnVuYzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmRleDJmdW5jW2ldKGdyb3Vwc1tpXSkKLSAgICAgICAgICAgIHBvcyA9IG0uZW5kKCkKLQotICAgIGRlZiB0X2RlZmF1bHQoc2VsZiwgcyk6Ci0gICAgICAgIHInKCAuIHwgXG4gKSsnCi0gICAgICAgIG91dHB1dCgiU3BlY2lmaWNhdGlvbiBlcnJvcjogdW5tYXRjaGVkIGlucHV0IikKLSAgICAgICAgcmFpc2UgU3lzdGVtRXhpdAotCi0jCi0jICBFeHRyYWN0ZWQgZnJvbSBHZW5lcmljUGFyc2VyIGFuZCBtYWRlIGdsb2JhbCBzbyB0aGF0IFt1bl1waWNraW5nIHdvcmtzLgotIwotY2xhc3MgX1N0YXRlOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGF0ZW5vLCBpdGVtcyk6Ci0gICAgICAgIHNlbGYuVCwgc2VsZi5jb21wbGV0ZSwgc2VsZi5pdGVtcyA9IFtdLCBbXSwgaXRlbXMKLSAgICAgICAgc2VsZi5zdGF0ZW5vID0gc3RhdGVubwotCi1jbGFzcyBHZW5lcmljUGFyc2VyOgotICAgICMKLSAgICAjICBBbiBFYXJsZXkgcGFyc2VyLCBhcyBwZXIgSi4gRWFybGV5LCAiQW4gRWZmaWNpZW50IENvbnRleHQtRnJlZQotICAgICMgIFBhcnNpbmcgQWxnb3JpdGhtIiwgQ0FDTSAxMygyKSwgcHAuIDk0LTEwMi4gIEFsc28gSi4gQy4gRWFybGV5LAotICAgICMgICJBbiBFZmZpY2llbnQgQ29udGV4dC1GcmVlIFBhcnNpbmcgQWxnb3JpdGhtIiwgUGguRC4gdGhlc2lzLAotICAgICMgIENhcm5lZ2llLU1lbGxvbiBVbml2ZXJzaXR5LCBBdWd1c3QgMTk2OC4gIE5ldyBmb3JtdWxhdGlvbiBvZgotICAgICMgIHRoZSBwYXJzZXIgYWNjb3JkaW5nIHRvIEouIEF5Y29jaywgIlByYWN0aWNhbCBFYXJsZXkgUGFyc2luZwotICAgICMgIGFuZCB0aGUgU1BBUksgVG9vbGtpdCIsIFBoLkQuIHRoZXNpcywgVW5pdmVyc2l0eSBvZiBWaWN0b3JpYSwKLSAgICAjICAyMDAxLCBhbmQgSi4gQXljb2NrIGFuZCBSLiBOLiBIb3JzcG9vbCwgIlByYWN0aWNhbCBFYXJsZXkKLSAgICAjICBQYXJzaW5nIiwgdW5wdWJsaXNoZWQgcGFwZXIsIDIwMDEuCi0gICAgIwotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXJ0KToKLSAgICAgICAgc2VsZi5ydWxlcyA9IHt9Ci0gICAgICAgIHNlbGYucnVsZTJmdW5jID0ge30KLSAgICAgICAgc2VsZi5ydWxlMm5hbWUgPSB7fQotICAgICAgICBzZWxmLmNvbGxlY3RSdWxlcygpCi0gICAgICAgIHNlbGYuYXVnbWVudChzdGFydCkKLSAgICAgICAgc2VsZi5ydWxlc2NoYW5nZWQgPSAxCi0KLSAgICBfTlVMTEFCTEUgPSAnXGVfJwotICAgIF9TVEFSVCA9ICdTVEFSVCcKLSAgICBfQk9GID0gJ3wtJwotCi0gICAgIwotICAgICMgIFdoZW4gcGlja2xpbmcsIHRha2UgdGhlIHRpbWUgdG8gZ2VuZXJhdGUgdGhlIGZ1bGwgc3RhdGUgbWFjaGluZTsKLSAgICAjICBzb21lIGluZm9ybWF0aW9uIGlzIHRoZW4gZXh0cmFuZW91cywgdG9vLiAgVW5mb3J0dW5hdGVseSB3ZQotICAgICMgIGNhbid0IHNhdmUgdGhlIHJ1bGUyZnVuYyBtYXAuCi0gICAgIwotICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYucnVsZXNjaGFuZ2VkOgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyAgWFhYIC0gZHVwbGljYXRlZCBmcm9tIHBhcnNlKCkKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgIHNlbGYuY29tcHV0ZU51bGwoKQotICAgICAgICAgICAgc2VsZi5uZXdydWxlcyA9IHt9Ci0gICAgICAgICAgICBzZWxmLm5ldzJvbGQgPSB7fQotICAgICAgICAgICAgc2VsZi5tYWtlTmV3UnVsZXMoKQotICAgICAgICAgICAgc2VsZi5ydWxlc2NoYW5nZWQgPSAwCi0gICAgICAgICAgICBzZWxmLmVkZ2VzLCBzZWxmLmNvcmVzID0ge30sIHt9Ci0gICAgICAgICAgICBzZWxmLnN0YXRlcyA9IHsgMDogc2VsZi5tYWtlU3RhdGUwKCkgfQotICAgICAgICAgICAgc2VsZi5tYWtlU3RhdGUoMCwgc2VsZi5fQk9GKQotICAgICAgICAjCi0gICAgICAgICMgIFhYWCAtIHNob3VsZCBmaW5kIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLi4KLSAgICAgICAgIwotICAgICAgICBjaGFuZ2VzID0gMQotICAgICAgICB3aGlsZSBjaGFuZ2VzOgotICAgICAgICAgICAgY2hhbmdlcyA9IDAKLSAgICAgICAgICAgIGZvciBrLCB2IGluIHNlbGYuZWRnZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBpZiB2IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLCBzeW0gPSBrCi0gICAgICAgICAgICAgICAgICAgIGlmIHN0YXRlIGluIHNlbGYuc3RhdGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5nb3RvKHN0YXRlLCBzeW0pCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzID0gMQotICAgICAgICBydiA9IHNlbGYuX19kaWN0X18uY29weSgpCi0gICAgICAgIGZvciBzIGluIHNlbGYuc3RhdGVzLnZhbHVlcygpOgotICAgICAgICAgICAgZGVsIHMuaXRlbXMKLSAgICAgICAgZGVsIHJ2WydydWxlMmZ1bmMnXQotICAgICAgICBkZWwgcnZbJ251bGxhYmxlJ10KLSAgICAgICAgZGVsIHJ2Wydjb3JlcyddCi0gICAgICAgIHJldHVybiBydgotCi0gICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBEKToKLSAgICAgICAgc2VsZi5ydWxlcyA9IHt9Ci0gICAgICAgIHNlbGYucnVsZTJmdW5jID0ge30KLSAgICAgICAgc2VsZi5ydWxlMm5hbWUgPSB7fQotICAgICAgICBzZWxmLmNvbGxlY3RSdWxlcygpCi0gICAgICAgIHN0YXJ0ID0gRFsncnVsZXMnXVtzZWxmLl9TVEFSVF1bMF1bMV1bMV0gICAgICAgICMgQmxlY2guCi0gICAgICAgIHNlbGYuYXVnbWVudChzdGFydCkKLSAgICAgICAgRFsncnVsZTJmdW5jJ10gPSBzZWxmLnJ1bGUyZnVuYwotICAgICAgICBEWydtYWtlU2V0J10gPSBzZWxmLm1ha2VTZXRfZmFzdAotICAgICAgICBzZWxmLl9fZGljdF9fID0gRAotCi0gICAgIwotICAgICMgIEEgaG9vayBmb3IgR2VuZXJpY0FTVEJ1aWxkZXIgYW5kIEdlbmVyaWNBU1RNYXRjaGVyLiAgTWVzcwotICAgICMgIHRoZWUgbm90IHdpdGggdGhpczsgbm9yIHNoYWxsIHRoZWUgdG91Y2hldGggdGhlIF9wcmVwcm9jZXNzCi0gICAgIyAgYXJndW1lbnQgdG8gYWRkUnVsZS4KLSAgICAjCi0gICAgZGVmIHByZXByb2Nlc3Moc2VsZiwgcnVsZSwgZnVuYyk6ICAgICAgIHJldHVybiBydWxlLCBmdW5jCi0KLSAgICBkZWYgYWRkUnVsZShzZWxmLCBkb2MsIGZ1bmMsIF9wcmVwcm9jZXNzPTEpOgotICAgICAgICBmbiA9IGZ1bmMKLSAgICAgICAgcnVsZXMgPSBkb2Muc3BsaXQoKQotCi0gICAgICAgIGluZGV4ID0gW10KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHJ1bGVzKSk6Ci0gICAgICAgICAgICBpZiBydWxlc1tpXSA9PSAnOjo9JzoKLSAgICAgICAgICAgICAgICBpbmRleC5hcHBlbmQoaS0xKQotICAgICAgICBpbmRleC5hcHBlbmQobGVuKHJ1bGVzKSkKLQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oaW5kZXgpLTEpOgotICAgICAgICAgICAgbGhzID0gcnVsZXNbaW5kZXhbaV1dCi0gICAgICAgICAgICByaHMgPSBydWxlc1tpbmRleFtpXSsyOmluZGV4W2krMV1dCi0gICAgICAgICAgICBydWxlID0gKGxocywgdHVwbGUocmhzKSkKLQotICAgICAgICAgICAgaWYgX3ByZXByb2Nlc3M6Ci0gICAgICAgICAgICAgICAgcnVsZSwgZm4gPSBzZWxmLnByZXByb2Nlc3MocnVsZSwgZnVuYykKLQotICAgICAgICAgICAgaWYgbGhzIGluIHNlbGYucnVsZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5ydWxlc1tsaHNdLmFwcGVuZChydWxlKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLnJ1bGVzW2xoc10gPSBbIHJ1bGUgXQotICAgICAgICAgICAgc2VsZi5ydWxlMmZ1bmNbcnVsZV0gPSBmbgotICAgICAgICAgICAgc2VsZi5ydWxlMm5hbWVbcnVsZV0gPSBmdW5jLl9fbmFtZV9fWzI6XQotICAgICAgICBzZWxmLnJ1bGVzY2hhbmdlZCA9IDEKLQotICAgIGRlZiBjb2xsZWN0UnVsZXMoc2VsZik6Ci0gICAgICAgIGZvciBuYW1lIGluIF9uYW1lbGlzdChzZWxmKToKLSAgICAgICAgICAgIGlmIG5hbWVbOjJdID09ICdwXyc6Ci0gICAgICAgICAgICAgICAgZnVuYyA9IGdldGF0dHIoc2VsZiwgbmFtZSkKLSAgICAgICAgICAgICAgICBkb2MgPSBmdW5jLl9fZG9jX18KLSAgICAgICAgICAgICAgICBzZWxmLmFkZFJ1bGUoZG9jLCBmdW5jKQotCi0gICAgZGVmIGF1Z21lbnQoc2VsZiwgc3RhcnQpOgotICAgICAgICBydWxlID0gJyVzIDo6PSAlcyAlcycgJSAoc2VsZi5fU1RBUlQsIHNlbGYuX0JPRiwgc3RhcnQpCi0gICAgICAgIHNlbGYuYWRkUnVsZShydWxlLCBsYW1iZGEgYXJnczogYXJnc1sxXSwgMCkKLQotICAgIGRlZiBjb21wdXRlTnVsbChzZWxmKToKLSAgICAgICAgc2VsZi5udWxsYWJsZSA9IHt9Ci0gICAgICAgIHRiZCA9IFtdCi0KLSAgICAgICAgZm9yIHJ1bGVsaXN0IGluIHNlbGYucnVsZXMudmFsdWVzKCk6Ci0gICAgICAgICAgICBsaHMgPSBydWxlbGlzdFswXVswXQotICAgICAgICAgICAgc2VsZi5udWxsYWJsZVtsaHNdID0gMAotICAgICAgICAgICAgZm9yIHJ1bGUgaW4gcnVsZWxpc3Q6Ci0gICAgICAgICAgICAgICAgcmhzID0gcnVsZVsxXQotICAgICAgICAgICAgICAgIGlmIGxlbihyaHMpID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubnVsbGFibGVbbGhzXSA9IDEKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyAgV2Ugb25seSBuZWVkIHRvIGNvbnNpZGVyIHJ1bGVzIHdoaWNoCi0gICAgICAgICAgICAgICAgIyAgY29uc2lzdCBlbnRpcmVseSBvZiBub250ZXJtaW5hbCBzeW1ib2xzLgotICAgICAgICAgICAgICAgICMgIFRoaXMgc2hvdWxkIGJlIGEgc2F2aW5ncyBvbiB0eXBpY2FsCi0gICAgICAgICAgICAgICAgIyAgZ3JhbW1hcnMuCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgIGZvciBzeW0gaW4gcmhzOgotICAgICAgICAgICAgICAgICAgICBpZiBzeW0gbm90IGluIHNlbGYucnVsZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRiZC5hcHBlbmQocnVsZSkKLSAgICAgICAgY2hhbmdlcyA9IDEKLSAgICAgICAgd2hpbGUgY2hhbmdlczoKLSAgICAgICAgICAgIGNoYW5nZXMgPSAwCi0gICAgICAgICAgICBmb3IgbGhzLCByaHMgaW4gdGJkOgotICAgICAgICAgICAgICAgIGlmIHNlbGYubnVsbGFibGVbbGhzXToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBmb3Igc3ltIGluIHJoczoKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYubnVsbGFibGVbc3ltXToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5udWxsYWJsZVtsaHNdID0gMQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzID0gMQotCi0gICAgZGVmIG1ha2VTdGF0ZTAoc2VsZik6Ci0gICAgICAgIHMwID0gX1N0YXRlKDAsIFtdKQotICAgICAgICBmb3IgcnVsZSBpbiBzZWxmLm5ld3J1bGVzW3NlbGYuX1NUQVJUXToKLSAgICAgICAgICAgIHMwLml0ZW1zLmFwcGVuZCgocnVsZSwgMCkpCi0gICAgICAgIHJldHVybiBzMAotCi0gICAgZGVmIGZpbmFsU3RhdGUoc2VsZiwgdG9rZW5zKToKLSAgICAgICAgIwotICAgICAgICAjICBZdWNrLgotICAgICAgICAjCi0gICAgICAgIGlmIGxlbihzZWxmLm5ld3J1bGVzW3NlbGYuX1NUQVJUXSkgPT0gMiBhbmQgbGVuKHRva2VucykgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgIHN0YXJ0ID0gc2VsZi5ydWxlc1tzZWxmLl9TVEFSVF1bMF1bMV1bMV0KLSAgICAgICAgcmV0dXJuIHNlbGYuZ290bygxLCBzdGFydCkKLQotICAgIGRlZiBtYWtlTmV3UnVsZXMoc2VsZik6Ci0gICAgICAgIHdvcmtsaXN0ID0gW10KLSAgICAgICAgZm9yIHJ1bGVsaXN0IGluIHNlbGYucnVsZXMudmFsdWVzKCk6Ci0gICAgICAgICAgICBmb3IgcnVsZSBpbiBydWxlbGlzdDoKLSAgICAgICAgICAgICAgICB3b3JrbGlzdC5hcHBlbmQoKHJ1bGUsIDAsIDEsIHJ1bGUpKQotCi0gICAgICAgIGZvciBydWxlLCBpLCBjYW5kaWRhdGUsIG9sZHJ1bGUgaW4gd29ya2xpc3Q6Ci0gICAgICAgICAgICBsaHMsIHJocyA9IHJ1bGUKLSAgICAgICAgICAgIG4gPSBsZW4ocmhzKQotICAgICAgICAgICAgd2hpbGUgaSA8IG46Ci0gICAgICAgICAgICAgICAgc3ltID0gcmhzW2ldCi0gICAgICAgICAgICAgICAgaWYgc3ltIG5vdCBpbiBzZWxmLnJ1bGVzIG9yIFwKLSAgICAgICAgICAgICAgICAgICBub3Qgc2VsZi5udWxsYWJsZVtzeW1dOgotICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSAwCi0gICAgICAgICAgICAgICAgICAgIGkgPSBpICsgMQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgbmV3cmhzID0gbGlzdChyaHMpCi0gICAgICAgICAgICAgICAgbmV3cmhzW2ldID0gc2VsZi5fTlVMTEFCTEUrc3ltCi0gICAgICAgICAgICAgICAgbmV3cnVsZSA9IChsaHMsIHR1cGxlKG5ld3JocykpCi0gICAgICAgICAgICAgICAgd29ya2xpc3QuYXBwZW5kKChuZXdydWxlLCBpKzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUsIG9sZHJ1bGUpKQotICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IDAKLSAgICAgICAgICAgICAgICBpID0gaSArIDEKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgY2FuZGlkYXRlOgotICAgICAgICAgICAgICAgICAgICBsaHMgPSBzZWxmLl9OVUxMQUJMRStsaHMKLSAgICAgICAgICAgICAgICAgICAgcnVsZSA9IChsaHMsIHJocykKLSAgICAgICAgICAgICAgICBpZiBsaHMgaW4gc2VsZi5uZXdydWxlczoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXdydWxlc1tsaHNdLmFwcGVuZChydWxlKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubmV3cnVsZXNbbGhzXSA9IFsgcnVsZSBdCi0gICAgICAgICAgICAgICAgc2VsZi5uZXcyb2xkW3J1bGVdID0gb2xkcnVsZQotCi0gICAgZGVmIHR5cGVzdHJpbmcoc2VsZiwgdG9rZW4pOgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIGVycm9yKHNlbGYsIHRva2VuKToKLSAgICAgICAgb3V0cHV0KCJTeW50YXggZXJyb3IgYXQgb3IgbmVhciBgJXMnIHRva2VuIiAlIHRva2VuKQotICAgICAgICByYWlzZSBTeXN0ZW1FeGl0Ci0KLSAgICBkZWYgcGFyc2Uoc2VsZiwgdG9rZW5zKToKLSAgICAgICAgc2V0cyA9IFsgWygxLDApLCAoMiwwKV0gXQotICAgICAgICBzZWxmLmxpbmtzID0ge30KLQotICAgICAgICBpZiBzZWxmLnJ1bGVzY2hhbmdlZDoKLSAgICAgICAgICAgIHNlbGYuY29tcHV0ZU51bGwoKQotICAgICAgICAgICAgc2VsZi5uZXdydWxlcyA9IHt9Ci0gICAgICAgICAgICBzZWxmLm5ldzJvbGQgPSB7fQotICAgICAgICAgICAgc2VsZi5tYWtlTmV3UnVsZXMoKQotICAgICAgICAgICAgc2VsZi5ydWxlc2NoYW5nZWQgPSAwCi0gICAgICAgICAgICBzZWxmLmVkZ2VzLCBzZWxmLmNvcmVzID0ge30sIHt9Ci0gICAgICAgICAgICBzZWxmLnN0YXRlcyA9IHsgMDogc2VsZi5tYWtlU3RhdGUwKCkgfQotICAgICAgICAgICAgc2VsZi5tYWtlU3RhdGUoMCwgc2VsZi5fQk9GKQotCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbih0b2tlbnMpKToKLSAgICAgICAgICAgIHNldHMuYXBwZW5kKFtdKQotCi0gICAgICAgICAgICBpZiBzZXRzW2ldID09IFtdOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBzZWxmLm1ha2VTZXQodG9rZW5zW2ldLCBzZXRzLCBpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2V0cy5hcHBlbmQoW10pCi0gICAgICAgICAgICBzZWxmLm1ha2VTZXQoTm9uZSwgc2V0cywgbGVuKHRva2VucykpCi0KLSAgICAgICAgI19kdW1wKHRva2Vucywgc2V0cywgc2VsZi5zdGF0ZXMpCi0KLSAgICAgICAgZmluYWxpdGVtID0gKHNlbGYuZmluYWxTdGF0ZSh0b2tlbnMpLCAwKQotICAgICAgICBpZiBmaW5hbGl0ZW0gbm90IGluIHNldHNbLTJdOgotICAgICAgICAgICAgaWYgbGVuKHRva2VucykgPiAwOgotICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IodG9rZW5zW2ktMV0pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoTm9uZSkKLQotICAgICAgICByZXR1cm4gc2VsZi5idWlsZFRyZWUoc2VsZi5fU1RBUlQsIGZpbmFsaXRlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VucywgbGVuKHNldHMpLTIpCi0KLSAgICBkZWYgaXNudWxsYWJsZShzZWxmLCBzeW0pOgotICAgICAgICAjCi0gICAgICAgICMgIEZvciBzeW1ib2xzIGluIEdfZSBvbmx5LiAgSWYgd2Ugd2VyZW4ndCBzdXBwb3J0aW5nIDEuNSwKLSAgICAgICAgIyAgY291bGQganVzdCB1c2Ugc3ltLnN0YXJ0c3dpdGgoKS4KLSAgICAgICAgIwotICAgICAgICByZXR1cm4gc2VsZi5fTlVMTEFCTEUgPT0gc3ltWzA6bGVuKHNlbGYuX05VTExBQkxFKV0KLQotICAgIGRlZiBza2lwKHNlbGYsIGhzLCBwb3M9MCk6Ci0gICAgICAgIG4gPSBsZW4oaHNbMV0pCi0gICAgICAgIHdoaWxlIHBvcyA8IG46Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5pc251bGxhYmxlKGhzWzFdW3Bvc10pOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBwb3MgPSBwb3MgKyAxCi0gICAgICAgIHJldHVybiBwb3MKLQotICAgIGRlZiBtYWtlU3RhdGUoc2VsZiwgc3RhdGUsIHN5bSk6Ci0gICAgICAgIGFzc2VydCBzeW0gaXMgbm90IE5vbmUKLSAgICAgICAgIwotICAgICAgICAjICBDb21wdXRlIFxlcHNpbG9uLWtlcm5lbCBzdGF0ZSdzIGNvcmUgYW5kIHNlZSBpZgotICAgICAgICAjICBpdCBleGlzdHMgYWxyZWFkeS4KLSAgICAgICAgIwotICAgICAgICBraXRlbXMgPSBbXQotICAgICAgICBmb3IgcnVsZSwgcG9zIGluIHNlbGYuc3RhdGVzW3N0YXRlXS5pdGVtczoKLSAgICAgICAgICAgIGxocywgcmhzID0gcnVsZQotICAgICAgICAgICAgaWYgcmhzW3Bvczpwb3MrMV0gPT0gKHN5bSwpOgotICAgICAgICAgICAgICAgIGtpdGVtcy5hcHBlbmQoKHJ1bGUsIHNlbGYuc2tpcChydWxlLCBwb3MrMSkpKQotICAgICAgICBjb3JlID0ga2l0ZW1zCi0KLSAgICAgICAgY29yZS5zb3J0KCkKLSAgICAgICAgdGNvcmUgPSB0dXBsZShjb3JlKQotICAgICAgICBpZiB0Y29yZSBpbiBzZWxmLmNvcmVzOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29yZXNbdGNvcmVdCi0gICAgICAgICMKLSAgICAgICAgIyAgTm9wZSwgZG9lc24ndCBleGlzdC4gIENvbXB1dGUgaXQgYW5kIHRoZSBhc3NvY2lhdGVkCi0gICAgICAgICMgIFxlcHNpbG9uLW5vbmtlcm5lbCBzdGF0ZSB0b2dldGhlcjsgd2UnbGwgbmVlZCBpdCByaWdodCBhd2F5LgotICAgICAgICAjCi0gICAgICAgIGsgPSBzZWxmLmNvcmVzW3Rjb3JlXSA9IGxlbihzZWxmLnN0YXRlcykKLSAgICAgICAgSywgTksgPSBfU3RhdGUoaywga2l0ZW1zKSwgX1N0YXRlKGsrMSwgW10pCi0gICAgICAgIHNlbGYuc3RhdGVzW2tdID0gSwotICAgICAgICBwcmVkaWN0ZWQgPSB7fQotCi0gICAgICAgIGVkZ2VzID0gc2VsZi5lZGdlcwotICAgICAgICBydWxlcyA9IHNlbGYubmV3cnVsZXMKLSAgICAgICAgZm9yIFggaW4gSywgTks6Ci0gICAgICAgICAgICB3b3JrbGlzdCA9IFguaXRlbXMKLSAgICAgICAgICAgIGZvciBpdGVtIGluIHdvcmtsaXN0OgotICAgICAgICAgICAgICAgIHJ1bGUsIHBvcyA9IGl0ZW0KLSAgICAgICAgICAgICAgICBsaHMsIHJocyA9IHJ1bGUKLSAgICAgICAgICAgICAgICBpZiBwb3MgPT0gbGVuKHJocyk6Ci0gICAgICAgICAgICAgICAgICAgIFguY29tcGxldGUuYXBwZW5kKHJ1bGUpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICBuZXh0U3ltID0gcmhzW3Bvc10KLSAgICAgICAgICAgICAgICBrZXkgPSAoWC5zdGF0ZW5vLCBuZXh0U3ltKQotICAgICAgICAgICAgICAgIGlmIG5leHRTeW0gbm90IGluIHJ1bGVzOgotICAgICAgICAgICAgICAgICAgICBpZiBrZXkgbm90IGluIGVkZ2VzOgotICAgICAgICAgICAgICAgICAgICAgICAgZWRnZXNba2V5XSA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgICAgIFguVC5hcHBlbmQobmV4dFN5bSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBlZGdlc1trZXldID0gTm9uZQotICAgICAgICAgICAgICAgICAgICBpZiBuZXh0U3ltIG5vdCBpbiBwcmVkaWN0ZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWN0ZWRbbmV4dFN5bV0gPSAxCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgcHJ1bGUgaW4gcnVsZXNbbmV4dFN5bV06Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHBvcyA9IHNlbGYuc2tpcChwcnVsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgPSAocHJ1bGUsIHBwb3MpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTksuaXRlbXMuYXBwZW5kKG5ldykKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgIFByb2JsZW06IHdlIGtub3cgSyBuZWVkcyBnZW5lcmF0aW5nLCBidXQgd2UKLSAgICAgICAgICAgICMgIGRvbid0IHlldCBrbm93IGFib3V0IE5LLiAgQ2FuJ3QgY29tbWl0IGFueXRoaW5nCi0gICAgICAgICAgICAjICByZWdhcmRpbmcgTksgdG8gc2VsZi5lZGdlcyB1bnRpbCB3ZSdyZSBzdXJlLiAgU2hvdWxkCi0gICAgICAgICAgICAjICB3ZSBkZWxheSBjb21taXR0aW5nIG9uIGJvdGggSyBhbmQgTksgdG8gYXZvaWQgdGhpcwotICAgICAgICAgICAgIyAgaGFja3kgY29kZT8gIFRoaXMgY3JlYXRlcyBvdGhlciBwcm9ibGVtcy4uCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICBpZiBYIGlzIEs6Ci0gICAgICAgICAgICAgICAgZWRnZXMgPSB7fQotCi0gICAgICAgIGlmIE5LLml0ZW1zID09IFtdOgotICAgICAgICAgICAgcmV0dXJuIGsKLQotICAgICAgICAjCi0gICAgICAgICMgIENoZWNrIGZvciBcZXBzaWxvbi1ub25rZXJuZWwncyBjb3JlLiAgVW5mb3J0dW5hdGVseSB3ZQotICAgICAgICAjICBuZWVkIHRvIGtub3cgdGhlIGVudGlyZSBzZXQgb2YgcHJlZGljdGVkIG5vbnRlcm1pbmFscwotICAgICAgICAjICB0byBkbyB0aGlzIHdpdGhvdXQgYWNjaWRlbnRhbGx5IGR1cGxpY2F0aW5nIHN0YXRlcy4KLSAgICAgICAgIwotICAgICAgICBjb3JlID0gc29ydGVkKHByZWRpY3RlZC5rZXlzKCkpCi0gICAgICAgIHRjb3JlID0gdHVwbGUoY29yZSkKLSAgICAgICAgaWYgdGNvcmUgaW4gc2VsZi5jb3JlczoKLSAgICAgICAgICAgIHNlbGYuZWRnZXNbKGssIE5vbmUpXSA9IHNlbGYuY29yZXNbdGNvcmVdCi0gICAgICAgICAgICByZXR1cm4gawotCi0gICAgICAgIG5rID0gc2VsZi5jb3Jlc1t0Y29yZV0gPSBzZWxmLmVkZ2VzWyhrLCBOb25lKV0gPSBOSy5zdGF0ZW5vCi0gICAgICAgIHNlbGYuZWRnZXMudXBkYXRlKGVkZ2VzKQotICAgICAgICBzZWxmLnN0YXRlc1tua10gPSBOSwotICAgICAgICByZXR1cm4gawotCi0gICAgZGVmIGdvdG8oc2VsZiwgc3RhdGUsIHN5bSk6Ci0gICAgICAgIGtleSA9IChzdGF0ZSwgc3ltKQotICAgICAgICBpZiBrZXkgbm90IGluIHNlbGYuZWRnZXM6Ci0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjICBObyB0cmFuc2l0aW9ucyBmcm9tIHN0YXRlIG9uIHN5bS4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgcnYgPSBzZWxmLmVkZ2VzW2tleV0KLSAgICAgICAgaWYgcnYgaXMgTm9uZToKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgIFRhcmdldCBzdGF0ZSBpc24ndCBnZW5lcmF0ZWQgeWV0LiAgUmVtZWR5IHRoaXMuCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICBydiA9IHNlbGYubWFrZVN0YXRlKHN0YXRlLCBzeW0pCi0gICAgICAgICAgICBzZWxmLmVkZ2VzW2tleV0gPSBydgotICAgICAgICByZXR1cm4gcnYKLQotICAgIGRlZiBnb3RvVChzZWxmLCBzdGF0ZSwgdCk6Ci0gICAgICAgIHJldHVybiBbc2VsZi5nb3RvKHN0YXRlLCB0KV0KLQotICAgIGRlZiBnb3RvU1Qoc2VsZiwgc3RhdGUsIHN0KToKLSAgICAgICAgcnYgPSBbXQotICAgICAgICBmb3IgdCBpbiBzZWxmLnN0YXRlc1tzdGF0ZV0uVDoKLSAgICAgICAgICAgIGlmIHN0ID09IHQ6Ci0gICAgICAgICAgICAgICAgcnYuYXBwZW5kKHNlbGYuZ290byhzdGF0ZSwgdCkpCi0gICAgICAgIHJldHVybiBydgotCi0gICAgZGVmIGFkZChzZWxmLCBzZXQsIGl0ZW0sIGk9Tm9uZSwgcHJlZGVjZXNzb3I9Tm9uZSwgY2F1c2FsPU5vbmUpOgotICAgICAgICBpZiBwcmVkZWNlc3NvciBpcyBOb25lOgotICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gc2V0OgotICAgICAgICAgICAgICAgIHNldC5hcHBlbmQoaXRlbSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGtleSA9IChpdGVtLCBpKQotICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gc2V0OgotICAgICAgICAgICAgICAgIHNlbGYubGlua3Nba2V5XSA9IFtdCi0gICAgICAgICAgICAgICAgc2V0LmFwcGVuZChpdGVtKQotICAgICAgICAgICAgc2VsZi5saW5rc1trZXldLmFwcGVuZCgocHJlZGVjZXNzb3IsIGNhdXNhbCkpCi0KLSAgICBkZWYgbWFrZVNldChzZWxmLCB0b2tlbiwgc2V0cywgaSk6Ci0gICAgICAgIGN1ciwgbmV4dCA9IHNldHNbaV0sIHNldHNbaSsxXQotCi0gICAgICAgIHR0eXBlID0gdG9rZW4gaXMgbm90IE5vbmUgYW5kIHNlbGYudHlwZXN0cmluZyh0b2tlbikgb3IgTm9uZQotICAgICAgICBpZiB0dHlwZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZuLCBhcmcgPSBzZWxmLmdvdG9ULCB0dHlwZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZm4sIGFyZyA9IHNlbGYuZ290b1NULCB0b2tlbgotCi0gICAgICAgIGZvciBpdGVtIGluIGN1cjoKLSAgICAgICAgICAgIHB0ciA9IChpdGVtLCBpKQotICAgICAgICAgICAgc3RhdGUsIHBhcmVudCA9IGl0ZW0KLSAgICAgICAgICAgIGFkZCA9IGZuKHN0YXRlLCBhcmcpCi0gICAgICAgICAgICBmb3IgayBpbiBhZGQ6Ci0gICAgICAgICAgICAgICAgaWYgayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGQobmV4dCwgKGssIHBhcmVudCksIGkrMSwgcHRyKQotICAgICAgICAgICAgICAgICAgICBuayA9IHNlbGYuZ290byhrLCBOb25lKQotICAgICAgICAgICAgICAgICAgICBpZiBuayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkKG5leHQsIChuaywgaSsxKSkKLQotICAgICAgICAgICAgaWYgcGFyZW50ID09IGk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgZm9yIHJ1bGUgaW4gc2VsZi5zdGF0ZXNbc3RhdGVdLmNvbXBsZXRlOgotICAgICAgICAgICAgICAgIGxocywgcmhzID0gcnVsZQotICAgICAgICAgICAgICAgIGZvciBwaXRlbSBpbiBzZXRzW3BhcmVudF06Ci0gICAgICAgICAgICAgICAgICAgIHBzdGF0ZSwgcHBhcmVudCA9IHBpdGVtCi0gICAgICAgICAgICAgICAgICAgIGsgPSBzZWxmLmdvdG8ocHN0YXRlLCBsaHMpCi0gICAgICAgICAgICAgICAgICAgIGlmIGsgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICB3aHkgPSAoaXRlbSwgaSwgcnVsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBwdHIgPSAocGl0ZW0sIHBhcmVudCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkKGN1ciwgKGssIHBwYXJlbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSwgcHB0ciwgd2h5KQotICAgICAgICAgICAgICAgICAgICAgICAgbmsgPSBzZWxmLmdvdG8oaywgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5rIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkKGN1ciwgKG5rLCBpKSkKLQotICAgIGRlZiBtYWtlU2V0X2Zhc3Qoc2VsZiwgdG9rZW4sIHNldHMsIGkpOgotICAgICAgICAjCi0gICAgICAgICMgIENhbGwgKm9ubHkqIHdoZW4gdGhlIGVudGlyZSBzdGF0ZSBtYWNoaW5lIGhhcyBiZWVuIGJ1aWx0IQotICAgICAgICAjICBJdCByZWxpZXMgb24gc2VsZi5lZGdlcyBiZWluZyBmaWxsZWQgaW4gY29tcGxldGVseSwgYW5kCi0gICAgICAgICMgIHRoZW4gZHVwbGljYXRlcyBhbmQgaW5saW5lcyBjb2RlIHRvIGJvb3N0IHNwZWVkIGF0IHRoZQotICAgICAgICAjICBjb3N0IG9mIGV4dHJlbWUgdWdsaW5lc3MuCi0gICAgICAgICMKLSAgICAgICAgY3VyLCBuZXh0ID0gc2V0c1tpXSwgc2V0c1tpKzFdCi0gICAgICAgIHR0eXBlID0gdG9rZW4gaXMgbm90IE5vbmUgYW5kIHNlbGYudHlwZXN0cmluZyh0b2tlbikgb3IgTm9uZQotCi0gICAgICAgIGZvciBpdGVtIGluIGN1cjoKLSAgICAgICAgICAgIHB0ciA9IChpdGVtLCBpKQotICAgICAgICAgICAgc3RhdGUsIHBhcmVudCA9IGl0ZW0KLSAgICAgICAgICAgIGlmIHR0eXBlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGsgPSBzZWxmLmVkZ2VzLmdldCgoc3RhdGUsIHR0eXBlKSwgTm9uZSkKLSAgICAgICAgICAgICAgICBpZiBrIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAjc2VsZi5hZGQobmV4dCwgKGssIHBhcmVudCksIGkrMSwgcHRyKQotICAgICAgICAgICAgICAgICAgICAjSU5MSU5FRCAtLXYKLSAgICAgICAgICAgICAgICAgICAgbmV3ID0gKGssIHBhcmVudCkKLSAgICAgICAgICAgICAgICAgICAga2V5ID0gKG5ldywgaSsxKQotICAgICAgICAgICAgICAgICAgICBpZiBuZXcgbm90IGluIG5leHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmtzW2tleV0gPSBbXQotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5hcHBlbmQobmV3KQotICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmtzW2tleV0uYXBwZW5kKChwdHIsIE5vbmUpKQotICAgICAgICAgICAgICAgICAgICAjSU5MSU5FRCAtLV4KLSAgICAgICAgICAgICAgICAgICAgI25rID0gc2VsZi5nb3RvKGssIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgIG5rID0gc2VsZi5lZGdlcy5nZXQoKGssIE5vbmUpLCBOb25lKQotICAgICAgICAgICAgICAgICAgICBpZiBuayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICNzZWxmLmFkZChuZXh0LCAobmssIGkrMSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAjSU5MSU5FRCAtLXYKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyA9IChuaywgaSsxKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmV3IG5vdCBpbiBuZXh0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQuYXBwZW5kKG5ldykKLSAgICAgICAgICAgICAgICAgICAgICAgICNJTkxJTkVEIC0tXgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBhZGQgPSBzZWxmLmdvdG9TVChzdGF0ZSwgdG9rZW4pCi0gICAgICAgICAgICAgICAgZm9yIGsgaW4gYWRkOgotICAgICAgICAgICAgICAgICAgICBpZiBrIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGQobmV4dCwgKGssIHBhcmVudCksIGkrMSwgcHRyKQotICAgICAgICAgICAgICAgICAgICAgICAgI25rID0gc2VsZi5nb3RvKGssIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICBuayA9IHNlbGYuZWRnZXMuZ2V0KChrLCBOb25lKSwgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5rIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkKG5leHQsIChuaywgaSsxKSkKLQotICAgICAgICAgICAgaWYgcGFyZW50ID09IGk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgZm9yIHJ1bGUgaW4gc2VsZi5zdGF0ZXNbc3RhdGVdLmNvbXBsZXRlOgotICAgICAgICAgICAgICAgIGxocywgcmhzID0gcnVsZQotICAgICAgICAgICAgICAgIGZvciBwaXRlbSBpbiBzZXRzW3BhcmVudF06Ci0gICAgICAgICAgICAgICAgICAgIHBzdGF0ZSwgcHBhcmVudCA9IHBpdGVtCi0gICAgICAgICAgICAgICAgICAgICNrID0gc2VsZi5nb3RvKHBzdGF0ZSwgbGhzKQotICAgICAgICAgICAgICAgICAgICBrID0gc2VsZi5lZGdlcy5nZXQoKHBzdGF0ZSwgbGhzKSwgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoeSA9IChpdGVtLCBpLCBydWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgcHB0ciA9IChwaXRlbSwgcGFyZW50KQotICAgICAgICAgICAgICAgICAgICAgICAgI3NlbGYuYWRkKGN1ciwgKGssIHBwYXJlbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgaSwgcHB0ciwgd2h5KQotICAgICAgICAgICAgICAgICAgICAgICAgI0lOTElORUQgLS12Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgPSAoaywgcHBhcmVudCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGtleSA9IChuZXcsIGkpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXcgbm90IGluIGN1cjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmtzW2tleV0gPSBbXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ci5hcHBlbmQobmV3KQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5rc1trZXldLmFwcGVuZCgocHB0ciwgd2h5KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICNJTkxJTkVEIC0tXgotICAgICAgICAgICAgICAgICAgICAgICAgI25rID0gc2VsZi5nb3RvKGssIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICBuayA9IHNlbGYuZWRnZXMuZ2V0KChrLCBOb25lKSwgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5rIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICNzZWxmLmFkZChjdXIsIChuaywgaSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgI0lOTElORUQgLS12Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3ID0gKG5rLCBpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5ldyBub3QgaW4gY3VyOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXIuYXBwZW5kKG5ldykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjSU5MSU5FRCAtLV4KLQotICAgIGRlZiBwcmVkZWNlc3NvcihzZWxmLCBrZXksIGNhdXNhbCk6Ci0gICAgICAgIGZvciBwLCBjIGluIHNlbGYubGlua3Nba2V5XToKLSAgICAgICAgICAgIGlmIGMgPT0gY2F1c2FsOgotICAgICAgICAgICAgICAgIHJldHVybiBwCi0gICAgICAgIGFzc2VydCAwCi0KLSAgICBkZWYgY2F1c2FsKHNlbGYsIGtleSk6Ci0gICAgICAgIGxpbmtzID0gc2VsZi5saW5rc1trZXldCi0gICAgICAgIGlmIGxlbihsaW5rcykgPT0gMToKLSAgICAgICAgICAgIHJldHVybiBsaW5rc1swXVsxXQotICAgICAgICBjaG9pY2VzID0gW10KLSAgICAgICAgcnVsZTJjYXVzZSA9IHt9Ci0gICAgICAgIGZvciBwLCBjIGluIGxpbmtzOgotICAgICAgICAgICAgcnVsZSA9IGNbMl0KLSAgICAgICAgICAgIGNob2ljZXMuYXBwZW5kKHJ1bGUpCi0gICAgICAgICAgICBydWxlMmNhdXNlW3J1bGVdID0gYwotICAgICAgICByZXR1cm4gcnVsZTJjYXVzZVtzZWxmLmFtYmlndWl0eShjaG9pY2VzKV0KLQotICAgIGRlZiBkZXJpdmVFcHNpbG9uKHNlbGYsIG50KToKLSAgICAgICAgaWYgbGVuKHNlbGYubmV3cnVsZXNbbnRdKSA+IDE6Ci0gICAgICAgICAgICBydWxlID0gc2VsZi5hbWJpZ3VpdHkoc2VsZi5uZXdydWxlc1tudF0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBydWxlID0gc2VsZi5uZXdydWxlc1tudF1bMF0KLSAgICAgICAgI291dHB1dChydWxlKQotCi0gICAgICAgIHJocyA9IHJ1bGVbMV0KLSAgICAgICAgYXR0ciA9IFtOb25lXSAqIGxlbihyaHMpCi0KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHJocyktMSwgLTEsIC0xKToKLSAgICAgICAgICAgIGF0dHJbaV0gPSBzZWxmLmRlcml2ZUVwc2lsb24ocmhzW2ldKQotICAgICAgICByZXR1cm4gc2VsZi5ydWxlMmZ1bmNbc2VsZi5uZXcyb2xkW3J1bGVdXShhdHRyKQotCi0gICAgZGVmIGJ1aWxkVHJlZShzZWxmLCBudCwgaXRlbSwgdG9rZW5zLCBrKToKLSAgICAgICAgc3RhdGUsIHBhcmVudCA9IGl0ZW0KLQotICAgICAgICBjaG9pY2VzID0gW10KLSAgICAgICAgZm9yIHJ1bGUgaW4gc2VsZi5zdGF0ZXNbc3RhdGVdLmNvbXBsZXRlOgotICAgICAgICAgICAgaWYgcnVsZVswXSA9PSBudDoKLSAgICAgICAgICAgICAgICBjaG9pY2VzLmFwcGVuZChydWxlKQotICAgICAgICBydWxlID0gY2hvaWNlc1swXQotICAgICAgICBpZiBsZW4oY2hvaWNlcykgPiAxOgotICAgICAgICAgICAgcnVsZSA9IHNlbGYuYW1iaWd1aXR5KGNob2ljZXMpCi0gICAgICAgICNvdXRwdXQocnVsZSkKLQotICAgICAgICByaHMgPSBydWxlWzFdCi0gICAgICAgIGF0dHIgPSBbTm9uZV0gKiBsZW4ocmhzKQotCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihyaHMpLTEsIC0xLCAtMSk6Ci0gICAgICAgICAgICBzeW0gPSByaHNbaV0KLSAgICAgICAgICAgIGlmIHN5bSBub3QgaW4gc2VsZi5uZXdydWxlczoKLSAgICAgICAgICAgICAgICBpZiBzeW0gIT0gc2VsZi5fQk9GOgotICAgICAgICAgICAgICAgICAgICBhdHRyW2ldID0gdG9rZW5zW2stMV0KLSAgICAgICAgICAgICAgICAgICAga2V5ID0gKGl0ZW0sIGspCi0gICAgICAgICAgICAgICAgICAgIGl0ZW0sIGsgPSBzZWxmLnByZWRlY2Vzc29yKGtleSwgTm9uZSkKLSAgICAgICAgICAgICNlbGlmIHNlbGYuaXNudWxsYWJsZShzeW0pOgotICAgICAgICAgICAgZWxpZiBzZWxmLl9OVUxMQUJMRSA9PSBzeW1bMDpsZW4oc2VsZi5fTlVMTEFCTEUpXToKLSAgICAgICAgICAgICAgICBhdHRyW2ldID0gc2VsZi5kZXJpdmVFcHNpbG9uKHN5bSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAga2V5ID0gKGl0ZW0sIGspCi0gICAgICAgICAgICAgICAgd2h5ID0gc2VsZi5jYXVzYWwoa2V5KQotICAgICAgICAgICAgICAgIGF0dHJbaV0gPSBzZWxmLmJ1aWxkVHJlZShzeW0sIHdoeVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zLCB3aHlbMV0pCi0gICAgICAgICAgICAgICAgaXRlbSwgayA9IHNlbGYucHJlZGVjZXNzb3Ioa2V5LCB3aHkpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1bGUyZnVuY1tzZWxmLm5ldzJvbGRbcnVsZV1dKGF0dHIpCi0KLSAgICBkZWYgYW1iaWd1aXR5KHNlbGYsIHJ1bGVzKToKLSAgICAgICAgIwotICAgICAgICAjICBYWFggLSBwcm9ibGVtIGhlcmUgYW5kIGluIGNvbGxlY3RSdWxlcygpIGlmIHRoZSBzYW1lIHJ1bGUKLSAgICAgICAgIyAgICAgICAgYXBwZWFycyBpbiA+MSBtZXRob2QuICBBbHNvIHVuZGVmaW5lZCByZXN1bHRzIGlmIHJ1bGVzCi0gICAgICAgICMgICAgICAgIGNhdXNpbmcgdGhlIGFtYmlndWl0eSBhcHBlYXIgaW4gdGhlIHNhbWUgbWV0aG9kLgotICAgICAgICAjCi0gICAgICAgIHNvcnRsaXN0ID0gW10KLSAgICAgICAgbmFtZTJpbmRleCA9IHt9Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihydWxlcykpOgotICAgICAgICAgICAgbGhzLCByaHMgPSBydWxlID0gcnVsZXNbaV0KLSAgICAgICAgICAgIG5hbWUgPSBzZWxmLnJ1bGUybmFtZVtzZWxmLm5ldzJvbGRbcnVsZV1dCi0gICAgICAgICAgICBzb3J0bGlzdC5hcHBlbmQoKGxlbihyaHMpLCBuYW1lKSkKLSAgICAgICAgICAgIG5hbWUyaW5kZXhbbmFtZV0gPSBpCi0gICAgICAgIHNvcnRsaXN0LnNvcnQoKQotICAgICAgICBsaXN0ID0gW2IgZm9yIGEsIGIgaW4gc29ydGxpc3RdCi0gICAgICAgIHJldHVybiBydWxlc1tuYW1lMmluZGV4W3NlbGYucmVzb2x2ZShsaXN0KV1dCi0KLSAgICBkZWYgcmVzb2x2ZShzZWxmLCBsaXN0KToKLSAgICAgICAgIwotICAgICAgICAjICBSZXNvbHZlIGFtYmlndWl0eSBpbiBmYXZvciBvZiB0aGUgc2hvcnRlc3QgUkhTLgotICAgICAgICAjICBTaW5jZSB3ZSB3YWxrIHRoZSB0cmVlIGZyb20gdGhlIHRvcCBkb3duLCB0aGlzCi0gICAgICAgICMgIHNob3VsZCBlZmZlY3RpdmVseSByZXNvbHZlIGluIGZhdm9yIG9mIGEgInNoaWZ0Ii4KLSAgICAgICAgIwotICAgICAgICByZXR1cm4gbGlzdFswXQotCi0jCi0jICBHZW5lcmljQVNUQnVpbGRlciBhdXRvbWFnaWNhbGx5IGNvbnN0cnVjdHMgYSBjb25jcmV0ZS9hYnN0cmFjdCBzeW50YXggdHJlZQotIyAgZm9yIGEgZ2l2ZW4gaW5wdXQuICBUaGUgZXh0cmEgYXJndW1lbnQgaXMgYSBjbGFzcyAobm90IGFuIGluc3RhbmNlISkKLSMgIHdoaWNoIHN1cHBvcnRzIHRoZSAiX19zZXRzbGljZV9fIiBhbmQgIl9fbGVuX18iIG1ldGhvZHMuCi0jCi0jICBYWFggLSBzaWxlbnRseSBvdmVycmlkZXMgYW55IHVzZXIgY29kZSBpbiBtZXRob2RzLgotIwotCi1jbGFzcyBHZW5lcmljQVNUQnVpbGRlcihHZW5lcmljUGFyc2VyKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgQVNULCBzdGFydCk6Ci0gICAgICAgIEdlbmVyaWNQYXJzZXIuX19pbml0X18oc2VsZiwgc3RhcnQpCi0gICAgICAgIHNlbGYuQVNUID0gQVNUCi0KLSAgICBkZWYgcHJlcHJvY2VzcyhzZWxmLCBydWxlLCBmdW5jKToKLSAgICAgICAgcmViaW5kID0gbGFtYmRhIGxocywgc2VsZj1zZWxmOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYXJncywgbGhzPWxocywgc2VsZj1zZWxmOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYnVpbGRBU1ROb2RlKGFyZ3MsIGxocykKLSAgICAgICAgbGhzLCByaHMgPSBydWxlCi0gICAgICAgIHJldHVybiBydWxlLCByZWJpbmQobGhzKQotCi0gICAgZGVmIGJ1aWxkQVNUTm9kZShzZWxmLCBhcmdzLCBsaHMpOgotICAgICAgICBjaGlsZHJlbiA9IFtdCi0gICAgICAgIGZvciBhcmcgaW4gYXJnczoKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJnLCBzZWxmLkFTVCk6Ci0gICAgICAgICAgICAgICAgY2hpbGRyZW4uYXBwZW5kKGFyZykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY2hpbGRyZW4uYXBwZW5kKHNlbGYudGVybWluYWwoYXJnKSkKLSAgICAgICAgcmV0dXJuIHNlbGYubm9udGVybWluYWwobGhzLCBjaGlsZHJlbikKLQotICAgIGRlZiB0ZXJtaW5hbChzZWxmLCB0b2tlbik6ICAgICAgcmV0dXJuIHRva2VuCi0KLSAgICBkZWYgbm9udGVybWluYWwoc2VsZiwgdHlwZSwgYXJncyk6Ci0gICAgICAgIHJ2ID0gc2VsZi5BU1QodHlwZSkKLSAgICAgICAgcnZbOmxlbihhcmdzKV0gPSBhcmdzCi0gICAgICAgIHJldHVybiBydgotCi0jCi0jICBHZW5lcmljQVNUVHJhdmVyc2FsIGlzIGEgVmlzaXRvciBwYXR0ZXJuIGFjY29yZGluZyB0byBEZXNpZ24gUGF0dGVybnMuICBGb3IKLSMgIGVhY2ggbm9kZSBpdCBhdHRlbXB0cyB0byBpbnZva2UgdGhlIG1ldGhvZCBuXzxub2RlIHR5cGU+LCBmYWxsaW5nCi0jICBiYWNrIG9udG8gdGhlIGRlZmF1bHQoKSBtZXRob2QgaWYgdGhlIG5fKiBjYW4ndCBiZSBmb3VuZC4gIFRoZSBwcmVvcmRlcgotIyAgdHJhdmVyc2FsIGFsc28gbG9va3MgZm9yIGFuIGV4aXQgaG9vayBuYW1lZCBuXzxub2RlIHR5cGU+X2V4aXQgKG5vIGRlZmF1bHQKLSMgIHJvdXRpbmUgaXMgY2FsbGVkIGlmIGl0J3Mgbm90IGZvdW5kKS4gIFRvIHByZW1hdHVyZWx5IGhhbHQgdHJhdmVyc2FsCi0jICBvZiBhIHN1YnRyZWUsIGNhbGwgdGhlIHBydW5lKCkgbWV0aG9kIC0tIHRoaXMgb25seSBtYWtlcyBzZW5zZSBmb3IgYQotIyAgcHJlb3JkZXIgdHJhdmVyc2FsLiAgTm9kZSB0eXBlIGlzIGRldGVybWluZWQgdmlhIHRoZSB0eXBlc3RyaW5nKCkgbWV0aG9kLgotIwotCi1jbGFzcyBHZW5lcmljQVNUVHJhdmVyc2FsUHJ1bmluZ0V4Y2VwdGlvbjoKLSAgICBwYXNzCi0KLWNsYXNzIEdlbmVyaWNBU1RUcmF2ZXJzYWw6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFzdCk6Ci0gICAgICAgIHNlbGYuYXN0ID0gYXN0Ci0KLSAgICBkZWYgdHlwZXN0cmluZyhzZWxmLCBub2RlKToKLSAgICAgICAgcmV0dXJuIG5vZGUudHlwZQotCi0gICAgZGVmIHBydW5lKHNlbGYpOgotICAgICAgICByYWlzZSBHZW5lcmljQVNUVHJhdmVyc2FsUHJ1bmluZ0V4Y2VwdGlvbgotCi0gICAgZGVmIHByZW9yZGVyKHNlbGYsIG5vZGU9Tm9uZSk6Ci0gICAgICAgIGlmIG5vZGUgaXMgTm9uZToKLSAgICAgICAgICAgIG5vZGUgPSBzZWxmLmFzdAotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG5hbWUgPSAnbl8nICsgc2VsZi50eXBlc3RyaW5nKG5vZGUpCi0gICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsIG5hbWUpOgotICAgICAgICAgICAgICAgIGZ1bmMgPSBnZXRhdHRyKHNlbGYsIG5hbWUpCi0gICAgICAgICAgICAgICAgZnVuYyhub2RlKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmRlZmF1bHQobm9kZSkKLSAgICAgICAgZXhjZXB0IEdlbmVyaWNBU1RUcmF2ZXJzYWxQcnVuaW5nRXhjZXB0aW9uOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgZm9yIGtpZCBpbiBub2RlOgotICAgICAgICAgICAgc2VsZi5wcmVvcmRlcihraWQpCi0KLSAgICAgICAgbmFtZSA9IG5hbWUgKyAnX2V4aXQnCi0gICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgbmFtZSk6Ci0gICAgICAgICAgICBmdW5jID0gZ2V0YXR0cihzZWxmLCBuYW1lKQotICAgICAgICAgICAgZnVuYyhub2RlKQotCi0gICAgZGVmIHBvc3RvcmRlcihzZWxmLCBub2RlPU5vbmUpOgotICAgICAgICBpZiBub2RlIGlzIE5vbmU6Ci0gICAgICAgICAgICBub2RlID0gc2VsZi5hc3QKLQotICAgICAgICBmb3Iga2lkIGluIG5vZGU6Ci0gICAgICAgICAgICBzZWxmLnBvc3RvcmRlcihraWQpCi0KLSAgICAgICAgbmFtZSA9ICduXycgKyBzZWxmLnR5cGVzdHJpbmcobm9kZSkKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCBuYW1lKToKLSAgICAgICAgICAgIGZ1bmMgPSBnZXRhdHRyKHNlbGYsIG5hbWUpCi0gICAgICAgICAgICBmdW5jKG5vZGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmRlZmF1bHQobm9kZSkKLQotCi0gICAgZGVmIGRlZmF1bHQoc2VsZiwgbm9kZSk6Ci0gICAgICAgIHBhc3MKLQotIwotIyAgR2VuZXJpY0FTVE1hdGNoZXIuICBBU1Qgbm9kZXMgbXVzdCBoYXZlICJfX2dldGl0ZW1fXyIgYW5kICJfX2NtcF9fIgotIyAgaW1wbGVtZW50ZWQuCi0jCi0jICBYWFggLSBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCBob3cgR2VuZXJpY1BhcnNlciB3YWxrcyB0aGUgcGFyc2UgdHJlZS4KLSMKLQotY2xhc3MgR2VuZXJpY0FTVE1hdGNoZXIoR2VuZXJpY1BhcnNlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXJ0LCBhc3QpOgotICAgICAgICBHZW5lcmljUGFyc2VyLl9faW5pdF9fKHNlbGYsIHN0YXJ0KQotICAgICAgICBzZWxmLmFzdCA9IGFzdAotCi0gICAgZGVmIHByZXByb2Nlc3Moc2VsZiwgcnVsZSwgZnVuYyk6Ci0gICAgICAgIHJlYmluZCA9IGxhbWJkYSBmdW5jLCBzZWxmPXNlbGY6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBhcmdzLCBmdW5jPWZ1bmMsIHNlbGY9c2VsZjogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZvdW5kTWF0Y2goYXJncywgZnVuYykKLSAgICAgICAgbGhzLCByaHMgPSBydWxlCi0gICAgICAgIHJoc2xpc3QgPSBsaXN0KHJocykKLSAgICAgICAgcmhzbGlzdC5yZXZlcnNlKCkKLQotICAgICAgICByZXR1cm4gKGxocywgdHVwbGUocmhzbGlzdCkpLCByZWJpbmQoZnVuYykKLQotICAgIGRlZiBmb3VuZE1hdGNoKHNlbGYsIGFyZ3MsIGZ1bmMpOgotICAgICAgICBmdW5jKGFyZ3NbLTFdKQotICAgICAgICByZXR1cm4gYXJnc1stMV0KLQotICAgIGRlZiBtYXRjaF9yKHNlbGYsIG5vZGUpOgotICAgICAgICBzZWxmLmlucHV0Lmluc2VydCgwLCBub2RlKQotICAgICAgICBjaGlsZHJlbiA9IDAKLQotICAgICAgICBmb3IgY2hpbGQgaW4gbm9kZToKLSAgICAgICAgICAgIGlmIGNoaWxkcmVuID09IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5pbnB1dC5pbnNlcnQoMCwgJygnKQotICAgICAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlbiArIDEKLSAgICAgICAgICAgIHNlbGYubWF0Y2hfcihjaGlsZCkKLQotICAgICAgICBpZiBjaGlsZHJlbiA+IDA6Ci0gICAgICAgICAgICBzZWxmLmlucHV0Lmluc2VydCgwLCAnKScpCi0KLSAgICBkZWYgbWF0Y2goc2VsZiwgYXN0PU5vbmUpOgotICAgICAgICBpZiBhc3QgaXMgTm9uZToKLSAgICAgICAgICAgIGFzdCA9IHNlbGYuYXN0Ci0gICAgICAgIHNlbGYuaW5wdXQgPSBbXQotCi0gICAgICAgIHNlbGYubWF0Y2hfcihhc3QpCi0gICAgICAgIHNlbGYucGFyc2Uoc2VsZi5pbnB1dCkKLQotICAgIGRlZiByZXNvbHZlKHNlbGYsIGxpc3QpOgotICAgICAgICAjCi0gICAgICAgICMgIFJlc29sdmUgYW1iaWd1aXR5IGluIGZhdm9yIG9mIHRoZSBsb25nZXN0IFJIUy4KLSAgICAgICAgIwotICAgICAgICByZXR1cm4gbGlzdFstMV0KLQotZGVmIF9kdW1wKHRva2Vucywgc2V0cywgc3RhdGVzKToKLSAgICBmb3IgaSBpbiByYW5nZShsZW4oc2V0cykpOgotICAgICAgICBvdXRwdXQoJ3NldCAlZCcgJSBpKQotICAgICAgICBmb3IgaXRlbSBpbiBzZXRzW2ldOgotICAgICAgICAgICAgb3V0cHV0KCdcdCcsIGl0ZW0pCi0gICAgICAgICAgICBmb3IgKGxocywgcmhzKSwgcG9zIGluIHN0YXRlc1tpdGVtWzBdXS5pdGVtczoKLSAgICAgICAgICAgICAgICBvdXRwdXQoJ1x0XHQnLCBsaHMsICc6Oj0nLCBlbmQ9JycpCi0gICAgICAgICAgICAgICAgb3V0cHV0KCcgJy5qb2luKHJoc1s6cG9zXSksIGVuZD0nJykKLSAgICAgICAgICAgICAgICBvdXRwdXQoJy4nLCBlbmQ9JycpCi0gICAgICAgICAgICAgICAgb3V0cHV0KCcgJy5qb2luKHJoc1twb3M6XSkpCi0gICAgICAgIGlmIGkgPCBsZW4odG9rZW5zKToKLSAgICAgICAgICAgIG91dHB1dCgpCi0gICAgICAgICAgICBvdXRwdXQoJ3Rva2VuICVzJyAlIHN0cih0b2tlbnNbaV0pKQotICAgICAgICAgICAgb3V0cHV0KCkKZGlmZiAtLWdpdCBhL1BhcnNlci90b2tlbml6ZXIuYyBiL1BhcnNlci90b2tlbml6ZXIuYwppbmRleCAxNTQwZDI2Li4xY2RiYWUyIDEwMDY0NAotLS0gYS9QYXJzZXIvdG9rZW5pemVyLmMKKysrIGIvUGFyc2VyL3Rva2VuaXplci5jCkBAIC05OCwxMCArOTgsMTMgQEAKICAgICAiRE9VQkxFU0xBU0giLAogICAgICJET1VCTEVTTEFTSEVRVUFMIiwKICAgICAiQVQiLAorICAgICJBVEVRVUFMIiwKICAgICAiUkFSUk9XIiwKICAgICAiRUxMSVBTSVMiLAogICAgIC8qIFRoaXMgdGFibGUgbXVzdCBtYXRjaCB0aGUgI2RlZmluZXMgaW4gdG9rZW4uaCEgKi8KICAgICAiT1AiLAorICAgICJBV0FJVCIsCisgICAgIkFTWU5DIiwKICAgICAiPEVSUk9SVE9LRU4+IiwKICAgICAiPE5fVE9LRU5TPiIKIH07CkBAIC0xMjMsNiArMTI2LDcgQEAKICAgICB0b2stPnRhYnNpemUgPSBUQUJTSVpFOwogICAgIHRvay0+aW5kZW50ID0gMDsKICAgICB0b2stPmluZHN0YWNrWzBdID0gMDsKKwogICAgIHRvay0+YXRib2wgPSAxOwogICAgIHRvay0+cGVuZGluID0gMDsKICAgICB0b2stPnByb21wdCA9IHRvay0+bmV4dHByb21wdCA9IE5VTEw7CkBAIC0xNDMsNiArMTQ3LDExIEBACiAgICAgdG9rLT5kZWNvZGluZ19yZWFkbGluZSA9IE5VTEw7CiAgICAgdG9rLT5kZWNvZGluZ19idWZmZXIgPSBOVUxMOwogI2VuZGlmCisKKyAgICB0b2stPmFzeW5jX2RlZiA9IDA7CisgICAgdG9rLT5hc3luY19kZWZfaW5kZW50ID0gMDsKKyAgICB0b2stPmFzeW5jX2RlZl9ubCA9IDA7CisKICAgICByZXR1cm4gdG9rOwogfQogCkBAIC01MTUsOSArNTI0LDggQEAKICAgICBpZiAoc3RyZWFtID09IE5VTEwpCiAgICAgICAgIGdvdG8gY2xlYW51cDsKIAotICAgIFB5X1hERUNSRUYodG9rLT5kZWNvZGluZ19yZWFkbGluZSk7CiAgICAgcmVhZGxpbmUgPSBfUHlPYmplY3RfR2V0QXR0cklkKHN0cmVhbSwgJlB5SWRfcmVhZGxpbmUpOwotICAgIHRvay0+ZGVjb2RpbmdfcmVhZGxpbmUgPSByZWFkbGluZTsKKyAgICBQeV9TRVRSRUYodG9rLT5kZWNvZGluZ19yZWFkbGluZSwgcmVhZGxpbmUpOwogICAgIGlmIChwb3MgPiAwKSB7CiAgICAgICAgIGlmIChQeU9iamVjdF9DYWxsT2JqZWN0KHJlYWRsaW5lLCBOVUxMKSA9PSBOVUxMKSB7CiAgICAgICAgICAgICByZWFkbGluZSA9IE5VTEw7CkBAIC0xMTI5LDcgKzExMzcsNyBAQAogICAgIGNhc2UgJ30nOiAgICAgICAgICAgcmV0dXJuIFJCUkFDRTsKICAgICBjYXNlICdeJzogICAgICAgICAgIHJldHVybiBDSVJDVU1GTEVYOwogICAgIGNhc2UgJ34nOiAgICAgICAgICAgcmV0dXJuIFRJTERFOwotICAgIGNhc2UgJ0AnOiAgICAgICByZXR1cm4gQVQ7CisgICAgY2FzZSAnQCc6ICAgICAgICAgICByZXR1cm4gQVQ7CiAgICAgZGVmYXVsdDogICAgICAgICAgICByZXR1cm4gT1A7CiAgICAgfQogfQpAQCAtMTIwNSw2ICsxMjEzLDExIEBACiAgICAgICAgIGNhc2UgJz0nOiAgICAgICAgICAgICAgIHJldHVybiBDSVJDVU1GTEVYRVFVQUw7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnQCc6CisgICAgICAgIHN3aXRjaCAoYzIpIHsKKyAgICAgICAgY2FzZSAnPSc6ICAgICAgICAgICAgICAgcmV0dXJuIEFURVFVQUw7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBPUDsKIH0KQEAgLTE0MjIsNiArMTQzNSwyMSBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKHRvay0+YXN5bmNfZGVmCisgICAgICAgICYmICFibGFua2xpbmUKKyAgICAgICAgJiYgdG9rLT5sZXZlbCA9PSAwCisgICAgICAgIC8qIFRoZXJlIHdhcyBhIE5FV0xJTkUgYWZ0ZXIgQVNZTkMgREVGLAorICAgICAgICAgICBzbyB3ZSdyZSBwYXN0IHRoZSBzaWduYXR1cmUuICovCisgICAgICAgICYmIHRvay0+YXN5bmNfZGVmX25sCisgICAgICAgIC8qIEN1cnJlbnQgaW5kZW50YXRpb24gbGV2ZWwgaXMgbGVzcyB0aGFuIHdoZXJlCisgICAgICAgICAgIHRoZSBhc3luYyBmdW5jdGlvbiB3YXMgZGVmaW5lZCAqLworICAgICAgICAmJiB0b2stPmFzeW5jX2RlZl9pbmRlbnQgPj0gdG9rLT5pbmRlbnQpCisgICAgeworICAgICAgICB0b2stPmFzeW5jX2RlZiA9IDA7CisgICAgICAgIHRvay0+YXN5bmNfZGVmX2luZGVudCA9IDA7CisgICAgICAgIHRvay0+YXN5bmNfZGVmX25sID0gMDsKKyAgICB9CisKICBhZ2FpbjoKICAgICB0b2stPnN0YXJ0ID0gTlVMTDsKICAgICAvKiBTa2lwIHNwYWNlcyAqLwpAQCAtMTQ3Myw2ICsxNTAxLDQyIEBACiAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKICAgICAgICAgKnBfc3RhcnQgPSB0b2stPnN0YXJ0OwogICAgICAgICAqcF9lbmQgPSB0b2stPmN1cjsKKworICAgICAgICAvKiBhc3luYy9hd2FpdCBwYXJzaW5nIGJsb2NrLiAqLworICAgICAgICBpZiAodG9rLT5jdXIgLSB0b2stPnN0YXJ0ID09IDUpIHsKKyAgICAgICAgICAgIC8qIEN1cnJlbnQgdG9rZW4gbGVuZ3RoIGlzIDUuICovCisgICAgICAgICAgICBpZiAodG9rLT5hc3luY19kZWYpIHsKKyAgICAgICAgICAgICAgICAvKiBXZSdyZSBpbnNpZGUgYW4gJ2FzeW5jIGRlZicgZnVuY3Rpb24uICovCisgICAgICAgICAgICAgICAgaWYgKG1lbWNtcCh0b2stPnN0YXJ0LCAiYXN5bmMiLCA1KSA9PSAwKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVNZTkM7CisgICAgICAgICAgICAgICAgaWYgKG1lbWNtcCh0b2stPnN0YXJ0LCAiYXdhaXQiLCA1KSA9PSAwKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVdBSVQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImFzeW5jIiwgNSkgPT0gMCkgeworICAgICAgICAgICAgICAgIC8qIFRoZSBjdXJyZW50IHRva2VuIGlzICdhc3luYycuCisgICAgICAgICAgICAgICAgICAgTG9vayBhaGVhZCBvbmUgdG9rZW4uKi8KKworICAgICAgICAgICAgICAgIHN0cnVjdCB0b2tfc3RhdGUgYWhlYWRfdG9rOworICAgICAgICAgICAgICAgIGNoYXIgKmFoZWFkX3Rva19zdGFydCA9IE5VTEwsICphaGVhZF90b2tfZW5kID0gTlVMTDsKKyAgICAgICAgICAgICAgICBpbnQgYWhlYWRfdG9rX2tpbmQ7CisKKyAgICAgICAgICAgICAgICBtZW1jcHkoJmFoZWFkX3RvaywgdG9rLCBzaXplb2YoYWhlYWRfdG9rKSk7CisgICAgICAgICAgICAgICAgYWhlYWRfdG9rX2tpbmQgPSB0b2tfZ2V0KCZhaGVhZF90b2ssICZhaGVhZF90b2tfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhaGVhZF90b2tfZW5kKTsKKworICAgICAgICAgICAgICAgIGlmIChhaGVhZF90b2tfa2luZCA9PSBOQU1FCisgICAgICAgICAgICAgICAgICAgICYmIGFoZWFkX3Rvay5jdXIgLSBhaGVhZF90b2suc3RhcnQgPT0gMworICAgICAgICAgICAgICAgICAgICAmJiBtZW1jbXAoYWhlYWRfdG9rLnN0YXJ0LCAiZGVmIiwgMykgPT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBuZXh0IHRva2VuIGlzIGdvaW5nIHRvIGJlICdkZWYnLCBzbyBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmluZyAnYXN5bmMnIE5BTUUgdG9rZW4sIHdlIHJldHVybiBBU1lOQy4gKi8KKyAgICAgICAgICAgICAgICAgICAgdG9rLT5hc3luY19kZWZfaW5kZW50ID0gdG9rLT5pbmRlbnQ7CisgICAgICAgICAgICAgICAgICAgIHRvay0+YXN5bmNfZGVmID0gMTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFTWU5DOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIHJldHVybiBOQU1FOwogICAgIH0KIApAQCAtMTQ4NCw2ICsxNTQ4LDExIEBACiAgICAgICAgICpwX3N0YXJ0ID0gdG9rLT5zdGFydDsKICAgICAgICAgKnBfZW5kID0gdG9rLT5jdXIgLSAxOyAvKiBMZWF2ZSAnXG4nIG91dCBvZiB0aGUgc3RyaW5nICovCiAgICAgICAgIHRvay0+Y29udF9saW5lID0gMDsKKyAgICAgICAgaWYgKHRvay0+YXN5bmNfZGVmKSB7CisgICAgICAgICAgICAvKiBXZSdyZSBzb21ld2hlcmUgaW5zaWRlIGFuICdhc3luYyBkZWYnIGZ1bmN0aW9uLCBhbmQKKyAgICAgICAgICAgICAgIHdlJ3ZlIGVuY291bnRlcmVkIGEgTkVXTElORSBhZnRlciBpdHMgc2lnbmF0dXJlLiAqLworICAgICAgICAgICAgdG9rLT5hc3luY19kZWZfbmwgPSAxOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBORVdMSU5FOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvUGFyc2VyL3Rva2VuaXplci5oIGIvUGFyc2VyL3Rva2VuaXplci5oCmluZGV4IDFjZTZlZWIuLmFmMDUzZTIgMTAwNjQ0Ci0tLSBhL1BhcnNlci90b2tlbml6ZXIuaAorKysgYi9QYXJzZXIvdG9rZW5pemVyLmgKQEAgLTY1LDYgKzY1LDEzIEBACiAgICAgY29uc3QgY2hhciogZW5jOyAgICAgICAgLyogRW5jb2RpbmcgZm9yIHRoZSBjdXJyZW50IHN0ci4gKi8KICAgICBjb25zdCBjaGFyKiBzdHI7CiAgICAgY29uc3QgY2hhciogaW5wdXQ7IC8qIFRva2VuaXplcidzIG5ld2xpbmUgdHJhbnNsYXRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuICovCisKKyAgICAvKiBhc3luYy9hd2FpdCByZWxhdGVkIGZpZWxkczsgY2FuIGJlIHJlbW92ZWQgaW4gMy43IHdoZW4gYXN5bmMgYW5kIGF3YWl0CisgICAgICAgYmVjb21lIG5vcm1hbCBrZXl3b3Jkcy4gKi8KKyAgICBpbnQgYXN5bmNfZGVmOyAgICAgICAgLyogPTEgaWYgdG9rZW5zIGFyZSBpbnNpZGUgYW4gJ2FzeW5jIGRlZicgYm9keS4gKi8KKyAgICBpbnQgYXN5bmNfZGVmX2luZGVudDsgLyogSW5kZW50YXRpb24gbGV2ZWwgb2YgdGhlIG91dGVybW9zdCAnYXN5bmMgZGVmJy4gKi8KKyAgICBpbnQgYXN5bmNfZGVmX25sOyAgICAgLyogPTEgaWYgdGhlIG91dGVybW9zdCAnYXN5bmMgZGVmJyBoYWQgYXQgbGVhc3Qgb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FV0xJTkUgdG9rZW4gYWZ0ZXIgaXQuICovCiB9OwogCiBleHRlcm4gc3RydWN0IHRva19zdGF0ZSAqUHlUb2tlbml6ZXJfRnJvbVN0cmluZyhjb25zdCBjaGFyICosIGludCk7CmRpZmYgLS1naXQgYS9Qcm9ncmFtcy9SRUFETUUgYi9Qcm9ncmFtcy9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI0NTc4YgotLS0gL2Rldi9udWxsCisrKyBiL1Byb2dyYW1zL1JFQURNRQpAQCAtMCwwICsxIEBACitTb3VyY2UgZmlsZXMgZm9yIGJpbmFyeSBleGVjdXRhYmxlcyAoYXMgb3Bwb3NlZCB0byBzaGFyZWQgbW9kdWxlcykKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyBiL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMKc2ltaWxhcml0eSBpbmRleCA4MSUKcmVuYW1lIGZyb20gTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jCnJlbmFtZSB0byBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jCmluZGV4IDU3YjFhYzAuLmFlY2IxMjMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYworKysgYi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jCkBAIC0xMiwxMiArMTIsMTEgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNlbmRpZgogCi0KIC8qIFRvIGF2b2lkIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBvbiBmcm96ZW4ubywgd2UgY3JlYXRlIG91ciBvd24gc3RydWN0dXJlCiAgICBvZiBmcm96ZW4gbW9kdWxlcyBpbnN0ZWFkLCBsZWZ0IGRlbGliZXJhdGVseSBibGFuayBzbyBhcyB0byBhdm9pZAogICAgdW5pbnRlbnRpb25hbCBpbXBvcnQgb2YgYSBzdGFsZSB2ZXJzaW9uIG9mIF9mcm96ZW5faW1wb3J0bGliLiAqLwogCi1jb25zdCBzdGF0aWMgc3RydWN0IF9mcm96ZW4gX1B5SW1wb3J0X0Zyb3plbk1vZHVsZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgX2Zyb3plbiBfUHlJbXBvcnRfRnJvemVuTW9kdWxlc1tdID0gewogICAgIHswLCAwLCAwfSAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMjgsMTggKzI3LDE5IEBACiBjb25zdCBzdHJ1Y3QgX2Zyb3plbiAqUHlJbXBvcnRfRnJvemVuTW9kdWxlczsKICNlbmRpZgogCi1jb25zdCBjaGFyIGhlYWRlcltdID0gIi8qIEF1dG8tZ2VuZXJhdGVkIGJ5IE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyAqLyI7Citjb25zdCBjaGFyIGhlYWRlcltdID0gIi8qIEF1dG8tZ2VuZXJhdGVkIGJ5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMgKi8iOwogCiBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKLSAgICBjaGFyICppbnBhdGgsICpvdXRwYXRoOworICAgIGNoYXIgKmlucGF0aCwgKm91dHBhdGgsICpjb2RlX25hbWU7CiAgICAgRklMRSAqaW5maWxlID0gTlVMTCwgKm91dGZpbGUgPSBOVUxMOwotICAgIHN0cnVjdCBzdGF0IHN0OworICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3RhdHVzOwogICAgIHNpemVfdCB0ZXh0X3NpemUsIGRhdGFfc2l6ZSwgbjsKICAgICBjaGFyICp0ZXh0ID0gTlVMTDsKICAgICB1bnNpZ25lZCBjaGFyICpkYXRhOwogICAgIFB5T2JqZWN0ICpjb2RlID0gTlVMTCwgKm1hcnNoYWxsZWQgPSBOVUxMOworICAgIGludCBpc19ib290c3RyYXAgPSAxOwogCiAgICAgUHlJbXBvcnRfRnJvemVuTW9kdWxlcyA9IF9QeUltcG9ydF9Gcm96ZW5Nb2R1bGVzOwogCkBAIC01NCwxMSArNTQsMTEgQEAKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjYW5ub3Qgb3BlbiAnJXMnIGZvciByZWFkaW5nXG4iLCBpbnBhdGgpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICBpZiAoZnN0YXQoZmlsZW5vKGluZmlsZSksICZzdCkpIHsKKyAgICBpZiAoX1B5X2ZzdGF0X25vcmFpc2UoZmlsZW5vKGluZmlsZSksICZzdGF0dXMpKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY2Fubm90IGZzdGF0ICclcydcbiIsIGlucGF0aCk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIHRleHRfc2l6ZSA9IHN0LnN0X3NpemU7CisgICAgdGV4dF9zaXplID0gc3RhdHVzLnN0X3NpemU7CiAgICAgdGV4dCA9IChjaGFyICopIG1hbGxvYyh0ZXh0X3NpemUgKyAxKTsKICAgICBpZiAodGV4dCA9PSBOVUxMKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY291bGQgbm90IGFsbG9jYXRlICVsZCBieXRlc1xuIiwgKGxvbmcpIHRleHRfc2l6ZSk7CkBAIC04Miw4ICs4MiwxNCBAQAogICAgIC8qIERvbid0IGluc3RhbGwgaW1wb3J0bGliLCBzaW5jZSBpdCBjb3VsZCBleGVjdXRlIG91dGRhdGVkIGJ5dGVjb2RlLiAqLwogICAgIF9QeV9Jbml0aWFsaXplRXhfUHJpdmF0ZSgxLCAwKTsKIAotICAgIGNvZGUgPSBQeV9Db21waWxlU3RyaW5nRXhGbGFncyh0ZXh0LCAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9maWxlX2lucHV0LCBOVUxMLCAwKTsKKyAgICBpZiAoc3Ryc3RyKGlucGF0aCwgIl9leHRlcm5hbCIpICE9IE5VTEwpIHsKKyAgICAgICAgaXNfYm9vdHN0cmFwID0gMDsKKyAgICB9CisKKyAgICBjb2RlX25hbWUgPSBpc19ib290c3RyYXAgPworICAgICAgICAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iIDoKKyAgICAgICAgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWw+IjsKKyAgICBjb2RlID0gUHlfQ29tcGlsZVN0cmluZ0V4RmxhZ3ModGV4dCwgY29kZV9uYW1lLCBQeV9maWxlX2lucHV0LCBOVUxMLCAwKTsKICAgICBpZiAoY29kZSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIGZyZWUodGV4dCk7CkBAIC0xMDYsNyArMTEyLDExIEBACiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGZwcmludGYob3V0ZmlsZSwgIiVzXG4iLCBoZWFkZXIpOwotICAgIGZwcmludGYob3V0ZmlsZSwgImNvbnN0IHVuc2lnbmVkIGNoYXIgX1B5X01fX2ltcG9ydGxpYltdID0ge1xuIik7CisgICAgaWYgKGlzX2Jvb3RzdHJhcCkKKyAgICAgICAgZnByaW50ZihvdXRmaWxlLCAiY29uc3QgdW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliW10gPSB7XG4iKTsKKyAgICBlbHNlCisgICAgICAgIGZwcmludGYob3V0ZmlsZSwKKyAgICAgICAgICAgICAgICAiY29uc3QgdW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliX2V4dGVybmFsW10gPSB7XG4iKTsKICAgICBmb3IgKG4gPSAwOyBuIDwgZGF0YV9zaXplOyBuICs9IDE2KSB7CiAgICAgICAgIHNpemVfdCBpLCBlbmQgPSBQeV9NSU4obiArIDE2LCBkYXRhX3NpemUpOwogICAgICAgICBmcHJpbnRmKG91dGZpbGUsICIgICAgIik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190ZXN0ZW1iZWQuYyBiL1Byb2dyYW1zL190ZXN0ZW1iZWQuYwpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBNb2R1bGVzL190ZXN0ZW1iZWQuYwpyZW5hbWUgdG8gUHJvZ3JhbXMvX3Rlc3RlbWJlZC5jCmluZGV4IGEyMWQyNTEuLjM5ZmYwOTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3Rlc3RlbWJlZC5jCisrKyBiL1Byb2dyYW1zL190ZXN0ZW1iZWQuYwpAQCAtMTA5LDExICsxMDksMTEgQEAKICAgICBwcmludGYoIi0tLSBVc2UgZGVmYXVsdHMgLS0tXG4iKTsKICAgICBjaGVja19zdGRpb19kZXRhaWxzKE5VTEwsIE5VTEwpOwogICAgIHByaW50ZigiLS0tIFNldCBlcnJvcnMgb25seSAtLS1cbiIpOwotICAgIGNoZWNrX3N0ZGlvX2RldGFpbHMoTlVMTCwgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgIGNoZWNrX3N0ZGlvX2RldGFpbHMoTlVMTCwgImlnbm9yZSIpOwogICAgIHByaW50ZigiLS0tIFNldCBlbmNvZGluZyBvbmx5IC0tLVxuIik7CiAgICAgY2hlY2tfc3RkaW9fZGV0YWlscygibGF0aW4tMSIsIE5VTEwpOwogICAgIHByaW50ZigiLS0tIFNldCBlbmNvZGluZyBhbmQgZXJyb3JzIC0tLVxuIik7Ci0gICAgY2hlY2tfc3RkaW9fZGV0YWlscygibGF0aW4tMSIsICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICBjaGVja19zdGRpb19kZXRhaWxzKCJsYXRpbi0xIiwgInJlcGxhY2UiKTsKIAogICAgIC8qIENoZWNrIGNhbGxpbmcgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gZmFpbHMgKi8KICAgICBQeV9Jbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3B5dGhvbi5jIGIvUHJvZ3JhbXMvcHl0aG9uLmMKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTW9kdWxlcy9weXRob24uYwpyZW5hbWUgdG8gUHJvZ3JhbXMvcHl0aG9uLmMKaW5kZXggOTgxMWMwMS4uMmU1ZTRlMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9weXRob24uYworKysgYi9Qcm9ncmFtcy9weXRob24uYwpAQCAtNTIsNyArNTIsNyBAQAogCiAgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpOwogICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKLSAgICAgICAgYXJndl9jb3B5W2ldID0gX1B5X2NoYXIyd2NoYXIoYXJndltpXSwgTlVMTCk7CisgICAgICAgIGFyZ3ZfY29weVtpXSA9IFB5X0RlY29kZUxvY2FsZShhcmd2W2ldLCBOVUxMKTsKICAgICAgICAgaWYgKCFhcmd2X2NvcHlbaV0pIHsKICAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUob2xkbG9jKTsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmF0YWwgUHl0aG9uIGVycm9yOiAiCmRpZmYgLS1naXQgYS9QeXRob24vUHl0aG9uLWFzdC5jIGIvUHl0aG9uL1B5dGhvbi1hc3QuYwppbmRleCA0NGZkYWZjLi5lZGZjYmFkIDEwMDY0NAotLS0gYS9QeXRob24vUHl0aG9uLWFzdC5jCisrKyBiL1B5dGhvbi9QeXRob24tYXN0LmMKQEAgLTQ1LDE3ICs0NSwyMSBAQAogICAgICJkZWNvcmF0b3JfbGlzdCIsCiAgICAgInJldHVybnMiLAogfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkFzeW5jRnVuY3Rpb25EZWZfdHlwZTsKK3N0YXRpYyBjaGFyICpBc3luY0Z1bmN0aW9uRGVmX2ZpZWxkc1tdPXsKKyAgICAibmFtZSIsCisgICAgImFyZ3MiLAorICAgICJib2R5IiwKKyAgICAiZGVjb3JhdG9yX2xpc3QiLAorICAgICJyZXR1cm5zIiwKK307CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpDbGFzc0RlZl90eXBlOwogX1B5X0lERU5USUZJRVIoYmFzZXMpOwogX1B5X0lERU5USUZJRVIoa2V5d29yZHMpOwotX1B5X0lERU5USUZJRVIoc3RhcmFyZ3MpOwotX1B5X0lERU5USUZJRVIoa3dhcmdzKTsKIHN0YXRpYyBjaGFyICpDbGFzc0RlZl9maWVsZHNbXT17CiAgICAgIm5hbWUiLAogICAgICJiYXNlcyIsCiAgICAgImtleXdvcmRzIiwKLSAgICAic3RhcmFyZ3MiLAotICAgICJrd2FyZ3MiLAogICAgICJib2R5IiwKICAgICAiZGVjb3JhdG9yX2xpc3QiLAogfTsKQEAgLTkxLDYgKzk1LDEzIEBACiAgICAgImJvZHkiLAogICAgICJvcmVsc2UiLAogfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkFzeW5jRm9yX3R5cGU7CitzdGF0aWMgY2hhciAqQXN5bmNGb3JfZmllbGRzW109eworICAgICJ0YXJnZXQiLAorICAgICJpdGVyIiwKKyAgICAiYm9keSIsCisgICAgIm9yZWxzZSIsCit9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqV2hpbGVfdHlwZTsKIF9QeV9JREVOVElGSUVSKHRlc3QpOwogc3RhdGljIGNoYXIgKldoaWxlX2ZpZWxkc1tdPXsKQEAgLTExMCw2ICsxMjEsMTEgQEAKICAgICAiaXRlbXMiLAogICAgICJib2R5IiwKIH07CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpBc3luY1dpdGhfdHlwZTsKK3N0YXRpYyBjaGFyICpBc3luY1dpdGhfZmllbGRzW109eworICAgICJpdGVtcyIsCisgICAgImJvZHkiLAorfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKlJhaXNlX3R5cGU7CiBfUHlfSURFTlRJRklFUihleGMpOwogX1B5X0lERU5USUZJRVIoY2F1c2UpOwpAQCAtMjMyLDYgKzI0OCwxMCBAQAogICAgICJlbHQiLAogICAgICJnZW5lcmF0b3JzIiwKIH07CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpBd2FpdF90eXBlOworc3RhdGljIGNoYXIgKkF3YWl0X2ZpZWxkc1tdPXsKKyAgICAidmFsdWUiLAorfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKllpZWxkX3R5cGU7CiBzdGF0aWMgY2hhciAqWWllbGRfZmllbGRzW109ewogICAgICJ2YWx1ZSIsCkBAIC0yNTQsOCArMjc0LDYgQEAKICAgICAiZnVuYyIsCiAgICAgImFyZ3MiLAogICAgICJrZXl3b3JkcyIsCi0gICAgInN0YXJhcmdzIiwKLSAgICAia3dhcmdzIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpOdW1fdHlwZTsKIF9QeV9JREVOVElGSUVSKG4pOwpAQCAtMzQ5LDEzICszNjcsMTQgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgKk9yX3R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpvcGVyYXRvcl90eXBlOwogc3RhdGljIFB5T2JqZWN0ICpBZGRfc2luZ2xldG9uLCAqU3ViX3NpbmdsZXRvbiwgKk11bHRfc2luZ2xldG9uLAotKkRpdl9zaW5nbGV0b24sICpNb2Rfc2luZ2xldG9uLCAqUG93X3NpbmdsZXRvbiwgKkxTaGlmdF9zaW5nbGV0b24sCi0qUlNoaWZ0X3NpbmdsZXRvbiwgKkJpdE9yX3NpbmdsZXRvbiwgKkJpdFhvcl9zaW5nbGV0b24sICpCaXRBbmRfc2luZ2xldG9uLAotKkZsb29yRGl2X3NpbmdsZXRvbjsKKypNYXRNdWx0X3NpbmdsZXRvbiwgKkRpdl9zaW5nbGV0b24sICpNb2Rfc2luZ2xldG9uLCAqUG93X3NpbmdsZXRvbiwKKypMU2hpZnRfc2luZ2xldG9uLCAqUlNoaWZ0X3NpbmdsZXRvbiwgKkJpdE9yX3NpbmdsZXRvbiwgKkJpdFhvcl9zaW5nbGV0b24sCisqQml0QW5kX3NpbmdsZXRvbiwgKkZsb29yRGl2X3NpbmdsZXRvbjsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9vcGVyYXRvcihvcGVyYXRvcl90eSk7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpBZGRfdHlwZTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKlN1Yl90eXBlOwogc3RhdGljIFB5VHlwZU9iamVjdCAqTXVsdF90eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCAqTWF0TXVsdF90eXBlOwogc3RhdGljIFB5VHlwZU9iamVjdCAqRGl2X3R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpNb2RfdHlwZTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKlBvd190eXBlOwpAQCAtODExLDcgKzgzMCwxMCBAQAogICAgIEZ1bmN0aW9uRGVmX3R5cGUgPSBtYWtlX3R5cGUoIkZ1bmN0aW9uRGVmIiwgc3RtdF90eXBlLCBGdW5jdGlvbkRlZl9maWVsZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1KTsKICAgICBpZiAoIUZ1bmN0aW9uRGVmX3R5cGUpIHJldHVybiAwOwotICAgIENsYXNzRGVmX3R5cGUgPSBtYWtlX3R5cGUoIkNsYXNzRGVmIiwgc3RtdF90eXBlLCBDbGFzc0RlZl9maWVsZHMsIDcpOworICAgIEFzeW5jRnVuY3Rpb25EZWZfdHlwZSA9IG1ha2VfdHlwZSgiQXN5bmNGdW5jdGlvbkRlZiIsIHN0bXRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN5bmNGdW5jdGlvbkRlZl9maWVsZHMsIDUpOworICAgIGlmICghQXN5bmNGdW5jdGlvbkRlZl90eXBlKSByZXR1cm4gMDsKKyAgICBDbGFzc0RlZl90eXBlID0gbWFrZV90eXBlKCJDbGFzc0RlZiIsIHN0bXRfdHlwZSwgQ2xhc3NEZWZfZmllbGRzLCA1KTsKICAgICBpZiAoIUNsYXNzRGVmX3R5cGUpIHJldHVybiAwOwogICAgIFJldHVybl90eXBlID0gbWFrZV90eXBlKCJSZXR1cm4iLCBzdG10X3R5cGUsIFJldHVybl9maWVsZHMsIDEpOwogICAgIGlmICghUmV0dXJuX3R5cGUpIHJldHVybiAwOwpAQCAtODIzLDEyICs4NDUsMTYgQEAKICAgICBpZiAoIUF1Z0Fzc2lnbl90eXBlKSByZXR1cm4gMDsKICAgICBGb3JfdHlwZSA9IG1ha2VfdHlwZSgiRm9yIiwgc3RtdF90eXBlLCBGb3JfZmllbGRzLCA0KTsKICAgICBpZiAoIUZvcl90eXBlKSByZXR1cm4gMDsKKyAgICBBc3luY0Zvcl90eXBlID0gbWFrZV90eXBlKCJBc3luY0ZvciIsIHN0bXRfdHlwZSwgQXN5bmNGb3JfZmllbGRzLCA0KTsKKyAgICBpZiAoIUFzeW5jRm9yX3R5cGUpIHJldHVybiAwOwogICAgIFdoaWxlX3R5cGUgPSBtYWtlX3R5cGUoIldoaWxlIiwgc3RtdF90eXBlLCBXaGlsZV9maWVsZHMsIDMpOwogICAgIGlmICghV2hpbGVfdHlwZSkgcmV0dXJuIDA7CiAgICAgSWZfdHlwZSA9IG1ha2VfdHlwZSgiSWYiLCBzdG10X3R5cGUsIElmX2ZpZWxkcywgMyk7CiAgICAgaWYgKCFJZl90eXBlKSByZXR1cm4gMDsKICAgICBXaXRoX3R5cGUgPSBtYWtlX3R5cGUoIldpdGgiLCBzdG10X3R5cGUsIFdpdGhfZmllbGRzLCAyKTsKICAgICBpZiAoIVdpdGhfdHlwZSkgcmV0dXJuIDA7CisgICAgQXN5bmNXaXRoX3R5cGUgPSBtYWtlX3R5cGUoIkFzeW5jV2l0aCIsIHN0bXRfdHlwZSwgQXN5bmNXaXRoX2ZpZWxkcywgMik7CisgICAgaWYgKCFBc3luY1dpdGhfdHlwZSkgcmV0dXJuIDA7CiAgICAgUmFpc2VfdHlwZSA9IG1ha2VfdHlwZSgiUmFpc2UiLCBzdG10X3R5cGUsIFJhaXNlX2ZpZWxkcywgMik7CiAgICAgaWYgKCFSYWlzZV90eXBlKSByZXR1cm4gMDsKICAgICBUcnlfdHlwZSA9IG1ha2VfdHlwZSgiVHJ5Iiwgc3RtdF90eXBlLCBUcnlfZmllbGRzLCA0KTsKQEAgLTg3NywxMyArOTAzLDE1IEBACiAgICAgR2VuZXJhdG9yRXhwX3R5cGUgPSBtYWtlX3R5cGUoIkdlbmVyYXRvckV4cCIsIGV4cHJfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3JFeHBfZmllbGRzLCAyKTsKICAgICBpZiAoIUdlbmVyYXRvckV4cF90eXBlKSByZXR1cm4gMDsKKyAgICBBd2FpdF90eXBlID0gbWFrZV90eXBlKCJBd2FpdCIsIGV4cHJfdHlwZSwgQXdhaXRfZmllbGRzLCAxKTsKKyAgICBpZiAoIUF3YWl0X3R5cGUpIHJldHVybiAwOwogICAgIFlpZWxkX3R5cGUgPSBtYWtlX3R5cGUoIllpZWxkIiwgZXhwcl90eXBlLCBZaWVsZF9maWVsZHMsIDEpOwogICAgIGlmICghWWllbGRfdHlwZSkgcmV0dXJuIDA7CiAgICAgWWllbGRGcm9tX3R5cGUgPSBtYWtlX3R5cGUoIllpZWxkRnJvbSIsIGV4cHJfdHlwZSwgWWllbGRGcm9tX2ZpZWxkcywgMSk7CiAgICAgaWYgKCFZaWVsZEZyb21fdHlwZSkgcmV0dXJuIDA7CiAgICAgQ29tcGFyZV90eXBlID0gbWFrZV90eXBlKCJDb21wYXJlIiwgZXhwcl90eXBlLCBDb21wYXJlX2ZpZWxkcywgMyk7CiAgICAgaWYgKCFDb21wYXJlX3R5cGUpIHJldHVybiAwOwotICAgIENhbGxfdHlwZSA9IG1ha2VfdHlwZSgiQ2FsbCIsIGV4cHJfdHlwZSwgQ2FsbF9maWVsZHMsIDUpOworICAgIENhbGxfdHlwZSA9IG1ha2VfdHlwZSgiQ2FsbCIsIGV4cHJfdHlwZSwgQ2FsbF9maWVsZHMsIDMpOwogICAgIGlmICghQ2FsbF90eXBlKSByZXR1cm4gMDsKICAgICBOdW1fdHlwZSA9IG1ha2VfdHlwZSgiTnVtIiwgZXhwcl90eXBlLCBOdW1fZmllbGRzLCAxKTsKICAgICBpZiAoIU51bV90eXBlKSByZXR1cm4gMDsKQEAgLTk3MCw2ICs5OTgsMTAgQEAKICAgICBpZiAoIU11bHRfdHlwZSkgcmV0dXJuIDA7CiAgICAgTXVsdF9zaW5nbGV0b24gPSBQeVR5cGVfR2VuZXJpY05ldyhNdWx0X3R5cGUsIE5VTEwsIE5VTEwpOwogICAgIGlmICghTXVsdF9zaW5nbGV0b24pIHJldHVybiAwOworICAgIE1hdE11bHRfdHlwZSA9IG1ha2VfdHlwZSgiTWF0TXVsdCIsIG9wZXJhdG9yX3R5cGUsIE5VTEwsIDApOworICAgIGlmICghTWF0TXVsdF90eXBlKSByZXR1cm4gMDsKKyAgICBNYXRNdWx0X3NpbmdsZXRvbiA9IFB5VHlwZV9HZW5lcmljTmV3KE1hdE11bHRfdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgaWYgKCFNYXRNdWx0X3NpbmdsZXRvbikgcmV0dXJuIDA7CiAgICAgRGl2X3R5cGUgPSBtYWtlX3R5cGUoIkRpdiIsIG9wZXJhdG9yX3R5cGUsIE5VTEwsIDApOwogICAgIGlmICghRGl2X3R5cGUpIHJldHVybiAwOwogICAgIERpdl9zaW5nbGV0b24gPSBQeVR5cGVfR2VuZXJpY05ldyhEaXZfdHlwZSwgTlVMTCwgTlVMTCk7CkBAIC0xMjAyLDkgKzEyMzQsMzkgQEAKIH0KIAogc3RtdF90eQotQ2xhc3NEZWYoaWRlbnRpZmllciBuYW1lLCBhc2RsX3NlcSAqIGJhc2VzLCBhc2RsX3NlcSAqIGtleXdvcmRzLCBleHByX3R5Ci0gICAgICAgICBzdGFyYXJncywgZXhwcl90eSBrd2FyZ3MsIGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBkZWNvcmF0b3JfbGlzdCwKLSAgICAgICAgIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK0FzeW5jRnVuY3Rpb25EZWYoaWRlbnRpZmllciBuYW1lLCBhcmd1bWVudHNfdHkgYXJncywgYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcQorICAgICAgICAgICAgICAgICAqIGRlY29yYXRvcl9saXN0LCBleHByX3R5IHJldHVybnMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LAorICAgICAgICAgICAgICAgICBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBzdG10X3R5IHA7CisgICAgaWYgKCFuYW1lKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIG5hbWUgaXMgcmVxdWlyZWQgZm9yIEFzeW5jRnVuY3Rpb25EZWYiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICghYXJncykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCBhcmdzIGlzIHJlcXVpcmVkIGZvciBBc3luY0Z1bmN0aW9uRGVmIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwID0gKHN0bXRfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcC0+a2luZCA9IEFzeW5jRnVuY3Rpb25EZWZfa2luZDsKKyAgICBwLT52LkFzeW5jRnVuY3Rpb25EZWYubmFtZSA9IG5hbWU7CisgICAgcC0+di5Bc3luY0Z1bmN0aW9uRGVmLmFyZ3MgPSBhcmdzOworICAgIHAtPnYuQXN5bmNGdW5jdGlvbkRlZi5ib2R5ID0gYm9keTsKKyAgICBwLT52LkFzeW5jRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3QgPSBkZWNvcmF0b3JfbGlzdDsKKyAgICBwLT52LkFzeW5jRnVuY3Rpb25EZWYucmV0dXJucyA9IHJldHVybnM7CisgICAgcC0+bGluZW5vID0gbGluZW5vOworICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OworICAgIHJldHVybiBwOworfQorCitzdG10X3R5CitDbGFzc0RlZihpZGVudGlmaWVyIG5hbWUsIGFzZGxfc2VxICogYmFzZXMsIGFzZGxfc2VxICoga2V5d29yZHMsIGFzZGxfc2VxICoKKyAgICAgICAgIGJvZHksIGFzZGxfc2VxICogZGVjb3JhdG9yX2xpc3QsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hCisgICAgICAgICAqYXJlbmEpCiB7CiAgICAgc3RtdF90eSBwOwogICAgIGlmICghbmFtZSkgewpAQCAtMTIxOSw4ICsxMjgxLDYgQEAKICAgICBwLT52LkNsYXNzRGVmLm5hbWUgPSBuYW1lOwogICAgIHAtPnYuQ2xhc3NEZWYuYmFzZXMgPSBiYXNlczsKICAgICBwLT52LkNsYXNzRGVmLmtleXdvcmRzID0ga2V5d29yZHM7Ci0gICAgcC0+di5DbGFzc0RlZi5zdGFyYXJncyA9IHN0YXJhcmdzOwotICAgIHAtPnYuQ2xhc3NEZWYua3dhcmdzID0ga3dhcmdzOwogICAgIHAtPnYuQ2xhc3NEZWYuYm9keSA9IGJvZHk7CiAgICAgcC0+di5DbGFzc0RlZi5kZWNvcmF0b3JfbGlzdCA9IGRlY29yYXRvcl9saXN0OwogICAgIHAtPmxpbmVubyA9IGxpbmVubzsKQEAgLTEzMzgsNiArMTM5OCwzNCBAQAogfQogCiBzdG10X3R5CitBc3luY0ZvcihleHByX3R5IHRhcmdldCwgZXhwcl90eSBpdGVyLCBhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogb3JlbHNlLCBpbnQKKyAgICAgICAgIGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQoreworICAgIHN0bXRfdHkgcDsKKyAgICBpZiAoIXRhcmdldCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCB0YXJnZXQgaXMgcmVxdWlyZWQgZm9yIEFzeW5jRm9yIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoIWl0ZXIpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgaXRlciBpcyByZXF1aXJlZCBmb3IgQXN5bmNGb3IiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHAgPSAoc3RtdF90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwLT5raW5kID0gQXN5bmNGb3Jfa2luZDsKKyAgICBwLT52LkFzeW5jRm9yLnRhcmdldCA9IHRhcmdldDsKKyAgICBwLT52LkFzeW5jRm9yLml0ZXIgPSBpdGVyOworICAgIHAtPnYuQXN5bmNGb3IuYm9keSA9IGJvZHk7CisgICAgcC0+di5Bc3luY0Zvci5vcmVsc2UgPSBvcmVsc2U7CisgICAgcC0+bGluZW5vID0gbGluZW5vOworICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OworICAgIHJldHVybiBwOworfQorCitzdG10X3R5CiBXaGlsZShleHByX3R5IHRlc3QsIGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBvcmVsc2UsIGludCBsaW5lbm8sIGludAogICAgICAgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CkBAIC0xMzk4LDYgKzE0ODYsMjIgQEAKIH0KIAogc3RtdF90eQorQXN5bmNXaXRoKGFzZGxfc2VxICogaXRlbXMsIGFzZGxfc2VxICogYm9keSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsCisgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgc3RtdF90eSBwOworICAgIHAgPSAoc3RtdF90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwLT5raW5kID0gQXN5bmNXaXRoX2tpbmQ7CisgICAgcC0+di5Bc3luY1dpdGguaXRlbXMgPSBpdGVtczsKKyAgICBwLT52LkFzeW5jV2l0aC5ib2R5ID0gYm9keTsKKyAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgcmV0dXJuIHA7Cit9CisKK3N0bXRfdHkKIFJhaXNlKGV4cHJfdHkgZXhjLCBleHByX3R5IGNhdXNlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgc3RtdF90eSBwOwpAQCAtMTgyNSw2ICsxOTI5LDI1IEBACiB9CiAKIGV4cHJfdHkKK0F3YWl0KGV4cHJfdHkgdmFsdWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBleHByX3R5IHA7CisgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCB2YWx1ZSBpcyByZXF1aXJlZCBmb3IgQXdhaXQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHAgPSAoZXhwcl90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwLT5raW5kID0gQXdhaXRfa2luZDsKKyAgICBwLT52LkF3YWl0LnZhbHVlID0gdmFsdWU7CisgICAgcC0+bGluZW5vID0gbGluZW5vOworICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OworICAgIHJldHVybiBwOworfQorCitleHByX3R5CiBZaWVsZChleHByX3R5IHZhbHVlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgZXhwcl90eSBwOwpAQCAtMTg4MCw4ICsyMDAzLDggQEAKIH0KIAogZXhwcl90eQotQ2FsbChleHByX3R5IGZ1bmMsIGFzZGxfc2VxICogYXJncywgYXNkbF9zZXEgKiBrZXl3b3JkcywgZXhwcl90eSBzdGFyYXJncywKLSAgICAgZXhwcl90eSBrd2FyZ3MsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK0NhbGwoZXhwcl90eSBmdW5jLCBhc2RsX3NlcSAqIGFyZ3MsIGFzZGxfc2VxICoga2V5d29yZHMsIGludCBsaW5lbm8sIGludAorICAgICBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKICAgICBleHByX3R5IHA7CiAgICAgaWYgKCFmdW5jKSB7CkBAIC0xODk2LDggKzIwMTksNiBAQAogICAgIHAtPnYuQ2FsbC5mdW5jID0gZnVuYzsKICAgICBwLT52LkNhbGwuYXJncyA9IGFyZ3M7CiAgICAgcC0+di5DYWxsLmtleXdvcmRzID0ga2V5d29yZHM7Ci0gICAgcC0+di5DYWxsLnN0YXJhcmdzID0gc3RhcmFyZ3M7Ci0gICAgcC0+di5DYWxsLmt3YXJncyA9IGt3YXJnczsKICAgICBwLT5saW5lbm8gPSBsaW5lbm87CiAgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CiAgICAgcmV0dXJuIHA7CkBAIC0yMjUxLDcgKzIzNzIsOCBAQAogfQogCiBhcmdfdHkKLWFyZyhpZGVudGlmaWVyIGFyZywgZXhwcl90eSBhbm5vdGF0aW9uLCBQeUFyZW5hICphcmVuYSkKK2FyZyhpZGVudGlmaWVyIGFyZywgZXhwcl90eSBhbm5vdGF0aW9uLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQorICAgICphcmVuYSkKIHsKICAgICBhcmdfdHkgcDsKICAgICBpZiAoIWFyZykgewpAQCAtMjI2NCw2ICsyMzg2LDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcC0+YXJnID0gYXJnOwogICAgIHAtPmFubm90YXRpb24gPSBhbm5vdGF0aW9uOworICAgIHAtPmxpbmVubyA9IGxpbmVubzsKKyAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKICAgICByZXR1cm4gcDsKIH0KIApAQCAtMjI3MSwxMSArMjM5NSw2IEBACiBrZXl3b3JkKGlkZW50aWZpZXIgYXJnLCBleHByX3R5IHZhbHVlLCBQeUFyZW5hICphcmVuYSkKIHsKICAgICBrZXl3b3JkX3R5IHA7Ci0gICAgaWYgKCFhcmcpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgYXJnIGlzIHJlcXVpcmVkIGZvciBrZXl3b3JkIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIHZhbHVlIGlzIHJlcXVpcmVkIGZvciBrZXl3b3JkIik7CkBAIC0yNDE5LDYgKzI1MzgsMzYgQEAKICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFzeW5jRnVuY3Rpb25EZWZfa2luZDoKKyAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoQXN5bmNGdW5jdGlvbkRlZl90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT52LkFzeW5jRnVuY3Rpb25EZWYubmFtZSk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX25hbWUsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfYXJndW1lbnRzKG8tPnYuQXN5bmNGdW5jdGlvbkRlZi5hcmdzKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYXJncywgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQXN5bmNGdW5jdGlvbkRlZi5ib2R5LCBhc3Qyb2JqX3N0bXQpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Bc3luY0Z1bmN0aW9uRGVmLmRlY29yYXRvcl9saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3Qyb2JqX2V4cHIpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9kZWNvcmF0b3JfbGlzdCwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQXN5bmNGdW5jdGlvbkRlZi5yZXR1cm5zKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfcmV0dXJucywgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2xhc3NEZWZfa2luZDoKICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoQ2xhc3NEZWZfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKQEAgLTI0MzcsMTYgKzI1ODYsNiBAQAogICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2tleXdvcmRzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5DbGFzc0RlZi5zdGFyYXJncyk7Ci0gICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3N0YXJhcmdzLCB2YWx1ZSkgPT0gLTEpCi0gICAgICAgICAgICBnb3RvIGZhaWxlZDsKLSAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5DbGFzc0RlZi5rd2FyZ3MpOwotICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rd2FyZ3MsIHZhbHVlKSA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZmFpbGVkOwotICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkNsYXNzRGVmLmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwogICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKQEAgLTI1MzMsNiArMjY3MiwzMCBAQAogICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXN5bmNGb3Jfa2luZDoKKyAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoQXN5bmNGb3JfdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Bc3luY0Zvci50YXJnZXQpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90YXJnZXQsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkFzeW5jRm9yLml0ZXIpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9pdGVyLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Bc3luY0Zvci5ib2R5LCBhc3Qyb2JqX3N0bXQpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Bc3luY0Zvci5vcmVsc2UsIGFzdDJvYmpfc3RtdCk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29yZWxzZSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2hpbGVfa2luZDoKICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoV2hpbGVfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKQEAgLTI1ODUsNiArMjc0OCwyMCBAQAogICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXN5bmNXaXRoX2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEFzeW5jV2l0aF90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkFzeW5jV2l0aC5pdGVtcywgYXN0Mm9ial93aXRoaXRlbSk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2l0ZW1zLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Bc3luY1dpdGguYm9keSwgYXN0Mm9ial9zdG10KTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmFpc2Vfa2luZDoKICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoUmFpc2VfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKQEAgLTI4OTgsNiArMzA3NSwxNSBAQAogICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXdhaXRfa2luZDoKKyAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoQXdhaXRfdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Bd2FpdC52YWx1ZSk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBZaWVsZF9raW5kOgogICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhZaWVsZF90eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwpAQCAtMjk1OSwxNiArMzE0NSw2IEBACiAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa2V5d29yZHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkNhbGwuc3RhcmFyZ3MpOwotICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9zdGFyYXJncywgdmFsdWUpID09IC0xKQotICAgICAgICAgICAgZ290byBmYWlsZWQ7Ci0gICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQ2FsbC5rd2FyZ3MpOwotICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rd2FyZ3MsIHZhbHVlKSA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZmFpbGVkOwotICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE51bV9raW5kOgogICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhOdW1fdHlwZSwgTlVMTCwgTlVMTCk7CkBAIC0zMjMyLDYgKzM0MDgsOSBAQAogICAgICAgICBjYXNlIE11bHQ6CiAgICAgICAgICAgICBQeV9JTkNSRUYoTXVsdF9zaW5nbGV0b24pOwogICAgICAgICAgICAgcmV0dXJuIE11bHRfc2luZ2xldG9uOworICAgICAgICBjYXNlIE1hdE11bHQ6CisgICAgICAgICAgICBQeV9JTkNSRUYoTWF0TXVsdF9zaW5nbGV0b24pOworICAgICAgICAgICAgcmV0dXJuIE1hdE11bHRfc2luZ2xldG9uOwogICAgICAgICBjYXNlIERpdjoKICAgICAgICAgICAgIFB5X0lOQ1JFRihEaXZfc2luZ2xldG9uKTsKICAgICAgICAgICAgIHJldHVybiBEaXZfc2luZ2xldG9uOwpAQCAtMzg1OSw2ICs0MDM4LDEwMiBAQAogICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilBc3luY0Z1bmN0aW9uRGVmX3R5cGUpOworICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoaXNpbnN0YW5jZSkgeworICAgICAgICBpZGVudGlmaWVyIG5hbWU7CisgICAgICAgIGFyZ3VtZW50c190eSBhcmdzOworICAgICAgICBhc2RsX3NlcSogYm9keTsKKyAgICAgICAgYXNkbF9zZXEqIGRlY29yYXRvcl9saXN0OworICAgICAgICBleHByX3R5IHJldHVybnM7CisKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9uYW1lKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9uYW1lKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmbmFtZSwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJuYW1lXCIgbWlzc2luZyBmcm9tIEFzeW5jRnVuY3Rpb25EZWYiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXJncykpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYXJncyk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9hcmd1bWVudHModG1wLCAmYXJncywgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhcmdzXCIgbWlzc2luZyBmcm9tIEFzeW5jRnVuY3Rpb25EZWYiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkFzeW5jRnVuY3Rpb25EZWYgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKKyAgICAgICAgICAgIGJvZHkgPSBfUHlfYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOworICAgICAgICAgICAgaWYgKGJvZHkgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBzdG10X3R5IHZhbHVlOworICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RtdChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYm9keSwgaSwgdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJvZHlcIiBtaXNzaW5nIGZyb20gQXN5bmNGdW5jdGlvbkRlZiIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9kZWNvcmF0b3JfbGlzdCkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9kZWNvcmF0b3JfbGlzdCk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJBc3luY0Z1bmN0aW9uRGVmIGZpZWxkIFwiZGVjb3JhdG9yX2xpc3RcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOworICAgICAgICAgICAgZGVjb3JhdG9yX2xpc3QgPSBfUHlfYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOworICAgICAgICAgICAgaWYgKGRlY29yYXRvcl9saXN0ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKKyAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGRlY29yYXRvcl9saXN0LCBpLCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZGVjb3JhdG9yX2xpc3RcIiBtaXNzaW5nIGZyb20gQXN5bmNGdW5jdGlvbkRlZiIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX3JldHVybnMpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3JldHVybnMpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZyZXR1cm5zLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybnMgPSBOVUxMOworICAgICAgICB9CisgICAgICAgICpvdXQgPSBBc3luY0Z1bmN0aW9uRGVmKG5hbWUsIGFyZ3MsIGJvZHksIGRlY29yYXRvcl9saXN0LCByZXR1cm5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sIGNvbF9vZmZzZXQsIGFyZW5hKTsKKyAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQ2xhc3NEZWZfdHlwZSk7CiAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDE7CkBAIC0zODY3LDggKzQxNDIsNiBAQAogICAgICAgICBpZGVudGlmaWVyIG5hbWU7CiAgICAgICAgIGFzZGxfc2VxKiBiYXNlczsKICAgICAgICAgYXNkbF9zZXEqIGtleXdvcmRzOwotICAgICAgICBleHByX3R5IHN0YXJhcmdzOwotICAgICAgICBleHByX3R5IGt3YXJnczsKICAgICAgICAgYXNkbF9zZXEqIGJvZHk7CiAgICAgICAgIGFzZGxfc2VxKiBkZWNvcmF0b3JfbGlzdDsKIApAQCAtMzkzMSwyNiArNDIwNCw2IEBACiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJrZXl3b3Jkc1wiIG1pc3NpbmcgZnJvbSBDbGFzc0RlZiIpOwogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX3N0YXJhcmdzKSkgewotICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9zdGFyYXJncyk7Ci0gICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnN0YXJhcmdzLCBhcmVuYSk7Ci0gICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN0YXJhcmdzID0gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoZXhpc3RzX25vdF9ub25lKG9iaiwgJlB5SWRfa3dhcmdzKSkgewotICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9rd2FyZ3MpOwotICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZrd2FyZ3MsIGFyZW5hKTsKLSAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICBQeV9DTEVBUih0bXApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAga3dhcmdzID0gTlVMTDsKLSAgICAgICAgfQogICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CkBAIC0zOTk5LDggKzQyNTIsOCBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZGVjb3JhdG9yX2xpc3RcIiBtaXNzaW5nIGZyb20gQ2xhc3NEZWYiKTsKICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgICpvdXQgPSBDbGFzc0RlZihuYW1lLCBiYXNlcywga2V5d29yZHMsIHN0YXJhcmdzLCBrd2FyZ3MsIGJvZHksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZWNvcmF0b3JfbGlzdCwgbGluZW5vLCBjb2xfb2Zmc2V0LCBhcmVuYSk7CisgICAgICAgICpvdXQgPSBDbGFzc0RlZihuYW1lLCBiYXNlcywga2V5d29yZHMsIGJvZHksIGRlY29yYXRvcl9saXN0LCBsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICBjb2xfb2Zmc2V0LCBhcmVuYSk7CiAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC00MjM3LDYgKzQ0OTAsOTAgQEAKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQXN5bmNGb3JfdHlwZSk7CisgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChpc2luc3RhbmNlKSB7CisgICAgICAgIGV4cHJfdHkgdGFyZ2V0OworICAgICAgICBleHByX3R5IGl0ZXI7CisgICAgICAgIGFzZGxfc2VxKiBib2R5OworICAgICAgICBhc2RsX3NlcSogb3JlbHNlOworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ0YXJnZXQsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidGFyZ2V0XCIgbWlzc2luZyBmcm9tIEFzeW5jRm9yIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2l0ZXIpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2l0ZXIpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZpdGVyLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIml0ZXJcIiBtaXNzaW5nIGZyb20gQXN5bmNGb3IiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkFzeW5jRm9yIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CisgICAgICAgICAgICBib2R5ID0gX1B5X2FzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChib2R5ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgc3RtdF90eSB2YWx1ZTsKKyAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0bXQoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGJvZHksIGksIHZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIEFzeW5jRm9yIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29yZWxzZSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQXN5bmNGb3IgZmllbGQgXCJvcmVsc2VcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOworICAgICAgICAgICAgb3JlbHNlID0gX1B5X2FzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChvcmVsc2UgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBzdG10X3R5IHZhbHVlOworICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RtdChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQob3JlbHNlLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwib3JlbHNlXCIgbWlzc2luZyBmcm9tIEFzeW5jRm9yIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICAqb3V0ID0gQXN5bmNGb3IodGFyZ2V0LCBpdGVyLCBib2R5LCBvcmVsc2UsIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilXaGlsZV90eXBlKTsKICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICByZXR1cm4gMTsKQEAgLTQ0NDEsNiArNDc3OCw2NiBAQAogICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilBc3luY1dpdGhfdHlwZSk7CisgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChpc2luc3RhbmNlKSB7CisgICAgICAgIGFzZGxfc2VxKiBpdGVtczsKKyAgICAgICAgYXNkbF9zZXEqIGJvZHk7CisKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9pdGVtcykpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9pdGVtcyk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJBc3luY1dpdGggZmllbGQgXCJpdGVtc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CisgICAgICAgICAgICBpdGVtcyA9IF9QeV9hc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAoaXRlbXMgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICB3aXRoaXRlbV90eSB2YWx1ZTsKKyAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3dpdGhpdGVtKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChpdGVtcywgaSwgdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIml0ZW1zXCIgbWlzc2luZyBmcm9tIEFzeW5jV2l0aCIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQXN5bmNXaXRoIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CisgICAgICAgICAgICBib2R5ID0gX1B5X2FzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChib2R5ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgc3RtdF90eSB2YWx1ZTsKKyAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0bXQoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGJvZHksIGksIHZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIEFzeW5jV2l0aCIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgKm91dCA9IEFzeW5jV2l0aChpdGVtcywgYm9keSwgbGluZW5vLCBjb2xfb2Zmc2V0LCBhcmVuYSk7CisgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKVJhaXNlX3R5cGUpOwogICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CiAgICAgICAgIHJldHVybiAxOwpAQCAtNTM3NSw2ICs1NzcyLDI4IEBACiAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUF3YWl0X3R5cGUpOworICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoaXNpbnN0YW5jZSkgeworICAgICAgICBleHByX3R5IHZhbHVlOworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidmFsdWVcIiBtaXNzaW5nIGZyb20gQXdhaXQiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgICpvdXQgPSBBd2FpdCh2YWx1ZSwgbGluZW5vLCBjb2xfb2Zmc2V0LCBhcmVuYSk7CisgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKVlpZWxkX3R5cGUpOwogICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CiAgICAgICAgIHJldHVybiAxOwpAQCAtNTQ5OCw4ICs1OTE3LDYgQEAKICAgICAgICAgZXhwcl90eSBmdW5jOwogICAgICAgICBhc2RsX3NlcSogYXJnczsKICAgICAgICAgYXNkbF9zZXEqIGtleXdvcmRzOwotICAgICAgICBleHByX3R5IHN0YXJhcmdzOwotICAgICAgICBleHByX3R5IGt3YXJnczsKIAogICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2Z1bmMpKSB7CiAgICAgICAgICAgICBpbnQgcmVzOwpAQCAtNTU2MCwyOCArNTk3Nyw3IEBACiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJrZXl3b3Jkc1wiIG1pc3NpbmcgZnJvbSBDYWxsIik7CiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoZXhpc3RzX25vdF9ub25lKG9iaiwgJlB5SWRfc3RhcmFyZ3MpKSB7Ci0gICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3N0YXJhcmdzKTsKLSAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmc3RhcmFyZ3MsIGFyZW5hKTsKLSAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICBQeV9DTEVBUih0bXApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3RhcmFyZ3MgPSBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9rd2FyZ3MpKSB7Ci0gICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2t3YXJncyk7Ci0gICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmt3YXJncywgYXJlbmEpOwotICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBrd2FyZ3MgPSBOVUxMOwotICAgICAgICB9Ci0gICAgICAgICpvdXQgPSBDYWxsKGZ1bmMsIGFyZ3MsIGtleXdvcmRzLCBzdGFyYXJncywga3dhcmdzLCBsaW5lbm8sIGNvbF9vZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgIGFyZW5hKTsKKyAgICAgICAgKm91dCA9IENhbGwoZnVuYywgYXJncywga2V5d29yZHMsIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOwogICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNjE3NSw2ICs2NTcxLDE0IEBACiAgICAgICAgICpvdXQgPSBNdWx0OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QgKilNYXRNdWx0X3R5cGUpOworICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoaXNpbnN0YW5jZSkgeworICAgICAgICAqb3V0ID0gTWF0TXVsdDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0ICopRGl2X3R5cGUpOwogICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CiAgICAgICAgIHJldHVybiAxOwpAQCAtNjY4NSw2ICs3MDg5LDggQEAKICAgICBQeU9iamVjdCogdG1wID0gTlVMTDsKICAgICBpZGVudGlmaWVyIGFyZzsKICAgICBleHByX3R5IGFubm90YXRpb247CisgICAgaW50IGxpbmVubzsKKyAgICBpbnQgY29sX29mZnNldDsKIAogICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXJnKSkgewogICAgICAgICBpbnQgcmVzOwpAQCAtNjcwNyw3ICs3MTEzLDI5IEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgYW5ub3RhdGlvbiA9IE5VTEw7CiAgICAgfQotICAgICpvdXQgPSBhcmcoYXJnLCBhbm5vdGF0aW9uLCBhcmVuYSk7CisgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9saW5lbm8pKSB7CisgICAgICAgIGludCByZXM7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9saW5lbm8pOworICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZsaW5lbm8sIGFyZW5hKTsKKyAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJsaW5lbm9cIiBtaXNzaW5nIGZyb20gYXJnIik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2NvbF9vZmZzZXQpKSB7CisgICAgICAgIGludCByZXM7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jb2xfb2Zmc2V0KTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9DTEVBUih0bXApOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImNvbF9vZmZzZXRcIiBtaXNzaW5nIGZyb20gYXJnIik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICAqb3V0ID0gYXJnKGFyZywgYW5ub3RhdGlvbiwgbGluZW5vLCBjb2xfb2Zmc2V0LCBhcmVuYSk7CiAgICAgcmV0dXJuIDA7CiBmYWlsZWQ6CiAgICAgUHlfWERFQ1JFRih0bXApOwpAQCAtNjcyMSw3ICs3MTQ5LDcgQEAKICAgICBpZGVudGlmaWVyIGFyZzsKICAgICBleHByX3R5IHZhbHVlOwogCi0gICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9hcmcpKSB7CisgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX2FyZykpIHsKICAgICAgICAgaW50IHJlczsKICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2FyZyk7CiAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CkBAIC02NzI5LDggKzcxNTcsNyBAQAogICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9DTEVBUih0bXApOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImFyZ1wiIG1pc3NpbmcgZnJvbSBrZXl3b3JkIik7Ci0gICAgICAgIHJldHVybiAxOworICAgICAgICBhcmcgPSBOVUxMOwogICAgIH0KICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgewogICAgICAgICBpbnQgcmVzOwpAQCAtNjg0Nyw2ICs3Mjc0LDggQEAKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgInN0bXQiLCAoUHlPYmplY3QqKXN0bXRfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkZ1bmN0aW9uRGVmIiwgKFB5T2JqZWN0KilGdW5jdGlvbkRlZl90eXBlKSA8CiAgICAgICAgIDApIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQXN5bmNGdW5jdGlvbkRlZiIsCisgICAgICAgIChQeU9iamVjdCopQXN5bmNGdW5jdGlvbkRlZl90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQ2xhc3NEZWYiLCAoUHlPYmplY3QqKUNsYXNzRGVmX3R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJSZXR1cm4iLCAoUHlPYmplY3QqKVJldHVybl90eXBlKSA8IDApIHJldHVybgpAQCAtNjg1OCwxMCArNzI4NywxNCBAQAogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQXVnQXNzaWduIiwgKFB5T2JqZWN0KilBdWdBc3NpZ25fdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkZvciIsIChQeU9iamVjdCopRm9yX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBc3luY0ZvciIsIChQeU9iamVjdCopQXN5bmNGb3JfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIldoaWxlIiwgKFB5T2JqZWN0KilXaGlsZV90eXBlKSA8IDApIHJldHVybgogICAgICAgICBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiSWYiLCAoUHlPYmplY3QqKUlmX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJXaXRoIiwgKFB5T2JqZWN0KilXaXRoX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBc3luY1dpdGgiLCAoUHlPYmplY3QqKUFzeW5jV2l0aF90eXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiUmFpc2UiLCAoUHlPYmplY3QqKVJhaXNlX3R5cGUpIDwgMCkgcmV0dXJuCiAgICAgICAgIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJUcnkiLCAoUHlPYmplY3QqKVRyeV90eXBlKSA8IDApIHJldHVybiBOVUxMOwpAQCAtNjkwMiw2ICs3MzM1LDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJHZW5lcmF0b3JFeHAiLCAoUHlPYmplY3QqKUdlbmVyYXRvckV4cF90eXBlKSA8CiAgICAgICAgIDApIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQXdhaXQiLCAoUHlPYmplY3QqKUF3YWl0X3R5cGUpIDwgMCkgcmV0dXJuCisgICAgICAgIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJZaWVsZCIsIChQeU9iamVjdCopWWllbGRfdHlwZSkgPCAwKSByZXR1cm4KICAgICAgICAgTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIllpZWxkRnJvbSIsIChQeU9iamVjdCopWWllbGRGcm9tX3R5cGUpIDwgMCkKQEAgLTY5NTYsNiArNzM5MSw4IEBACiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBZGQiLCAoUHlPYmplY3QqKUFkZF90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU3ViIiwgKFB5T2JqZWN0KilTdWJfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk11bHQiLCAoUHlPYmplY3QqKU11bHRfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk1hdE11bHQiLCAoUHlPYmplY3QqKU1hdE11bHRfdHlwZSkgPCAwKSByZXR1cm4KKyAgICAgICAgTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkRpdiIsIChQeU9iamVjdCopRGl2X3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJNb2QiLCAoUHlPYmplY3QqKU1vZF90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiUG93IiwgKFB5T2JqZWN0KilQb3dfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL1B5dGhvbi9SRUFETUUgYi9QeXRob24vUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1M2I2MjgKLS0tIC9kZXYvbnVsbAorKysgYi9QeXRob24vUkVBRE1FCkBAIC0wLDAgKzEgQEAKK01pc2NlbGxhbmVvdXMgc291cmNlIGZpbGVzIGZvciB0aGUgbWFpbiBQeXRob24gc2hhcmVkIGxpYnJhcnkKZGlmZiAtLWdpdCBhL1B5dGhvbi9fd2FybmluZ3MuYyBiL1B5dGhvbi9fd2FybmluZ3MuYwppbmRleCA2ZGZmMGEyLi45NzhiYWQxIDEwMDY0NAotLS0gYS9QeXRob24vX3dhcm5pbmdzLmMKKysrIGIvUHl0aG9uL193YXJuaW5ncy5jCkBAIC01MTMsNiArNTEzLDY0IEBACiAgICAgcmV0dXJuIHJlc3VsdDsgIC8qIFB5X05vbmUgb3IgTlVMTC4gKi8KIH0KIAorc3RhdGljIGludAoraXNfaW50ZXJuYWxfZnJhbWUoUHlGcmFtZU9iamVjdCAqZnJhbWUpCit7CisgICAgc3RhdGljIFB5T2JqZWN0ICppbXBvcnRsaWJfc3RyaW5nID0gTlVMTDsKKyAgICBzdGF0aWMgUHlPYmplY3QgKmJvb3RzdHJhcF9zdHJpbmcgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKKyAgICBpbnQgY29udGFpbnM7CisKKyAgICBpZiAoaW1wb3J0bGliX3N0cmluZyA9PSBOVUxMKSB7CisgICAgICAgIGltcG9ydGxpYl9zdHJpbmcgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiaW1wb3J0bGliIik7CisgICAgICAgIGlmIChpbXBvcnRsaWJfc3RyaW5nID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgYm9vdHN0cmFwX3N0cmluZyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJfYm9vdHN0cmFwIik7CisgICAgICAgIGlmIChib290c3RyYXBfc3RyaW5nID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpbXBvcnRsaWJfc3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihpbXBvcnRsaWJfc3RyaW5nKTsKKyAgICAgICAgUHlfSU5DUkVGKGJvb3RzdHJhcF9zdHJpbmcpOworICAgIH0KKworICAgIGlmIChmcmFtZSA9PSBOVUxMIHx8IGZyYW1lLT5mX2NvZGUgPT0gTlVMTCB8fAorICAgICAgICAgICAgZnJhbWUtPmZfY29kZS0+Y29fZmlsZW5hbWUgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZmlsZW5hbWUgPSBmcmFtZS0+Zl9jb2RlLT5jb19maWxlbmFtZTsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhmaWxlbmFtZSkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGNvbnRhaW5zID0gUHlVbmljb2RlX0NvbnRhaW5zKGZpbGVuYW1lLCBpbXBvcnRsaWJfc3RyaW5nKTsKKyAgICBpZiAoY29udGFpbnMgPCAwKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIGlmIChjb250YWlucyA+IDApIHsKKyAgICAgICAgY29udGFpbnMgPSBQeVVuaWNvZGVfQ29udGFpbnMoZmlsZW5hbWUsIGJvb3RzdHJhcF9zdHJpbmcpOworICAgICAgICBpZiAoY29udGFpbnMgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjb250YWlucyA+IDApIHsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeUZyYW1lT2JqZWN0ICoKK25leHRfZXh0ZXJuYWxfZnJhbWUoUHlGcmFtZU9iamVjdCAqZnJhbWUpCit7CisgICAgZG8geworICAgICAgICBmcmFtZSA9IGZyYW1lLT5mX2JhY2s7CisgICAgfSB3aGlsZSAoZnJhbWUgIT0gTlVMTCAmJiBpc19pbnRlcm5hbF9mcmFtZShmcmFtZSkpOworCisgICAgcmV0dXJuIGZyYW1lOworfQorCiAvKiBmaWxlbmFtZSwgbW9kdWxlLCBhbmQgcmVnaXN0cnkgYXJlIG5ldyByZWZzLCBnbG9iYWxzIGlzIGJvcnJvd2VkICovCiAvKiBSZXR1cm5zIDAgb24gZXJyb3IgKG5vIG5ldyByZWZzKSwgMSBvbiBzdWNjZXNzICovCiBzdGF0aWMgaW50CkBAIC01MjMsOCArNTgxLDE4IEBACiAKICAgICAvKiBTZXR1cCBnbG9iYWxzIGFuZCBsaW5lbm8uICovCiAgICAgUHlGcmFtZU9iamVjdCAqZiA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmZyYW1lOwotICAgIHdoaWxlICgtLXN0YWNrX2xldmVsID4gMCAmJiBmICE9IE5VTEwpCi0gICAgICAgIGYgPSBmLT5mX2JhY2s7CisgICAgLy8gU3RhY2sgbGV2ZWwgY29tcGFyaXNvbnMgdG8gUHl0aG9uIGNvZGUgaXMgb2ZmIGJ5IG9uZSBhcyB0aGVyZSBpcyBubworICAgIC8vIHdhcm5pbmdzLXJlbGF0ZWQgc3RhY2sgbGV2ZWwgdG8gYXZvaWQuCisgICAgaWYgKHN0YWNrX2xldmVsIDw9IDAgfHwgaXNfaW50ZXJuYWxfZnJhbWUoZikpIHsKKyAgICAgICAgd2hpbGUgKC0tc3RhY2tfbGV2ZWwgPiAwICYmIGYgIT0gTlVMTCkgeworICAgICAgICAgICAgZiA9IGYtPmZfYmFjazsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgd2hpbGUgKC0tc3RhY2tfbGV2ZWwgPiAwICYmIGYgIT0gTlVMTCkgeworICAgICAgICAgICAgZiA9IG5leHRfZXh0ZXJuYWxfZnJhbWUoZik7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBpZiAoZiA9PSBOVUxMKSB7CiAgICAgICAgIGdsb2JhbHMgPSBQeVRocmVhZFN0YXRlX0dldCgpLT5pbnRlcnAtPnN5c2RpY3Q7CkBAIC01ODAsMTMgKzY0OCwxMiBAQAogICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoKmZpbGVuYW1lKTsKIAogI2RlZmluZSBhc2NpaV9sb3dlcihjKSAoKGMgPD0gMTI3KSA/IFB5X1RPTE9XRVIoYykgOiAwKQotICAgICAgICAvKiBpZiBmaWxlbmFtZS5sb3dlcigpLmVuZHN3aXRoKCgiLnB5YyIsICIucHlvIikpOiAqLworICAgICAgICAvKiBpZiBmaWxlbmFtZS5sb3dlcigpLmVuZHN3aXRoKCIucHljIik6ICovCiAgICAgICAgIGlmIChsZW4gPj0gNCAmJgogICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbGVuLTQpID09ICcuJyAmJgogICAgICAgICAgICAgYXNjaWlfbG93ZXIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbGVuLTMpKSA9PSAncCcgJiYKICAgICAgICAgICAgIGFzY2lpX2xvd2VyKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGxlbi0yKSkgPT0gJ3knICYmCi0gICAgICAgICAgICAoYXNjaWlfbG93ZXIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbGVuLTEpKSA9PSAnYycgfHwKLSAgICAgICAgICAgICAgICBhc2NpaV9sb3dlcihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBsZW4tMSkpID09ICdvJykpCisgICAgICAgICAgICBhc2NpaV9sb3dlcihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBsZW4tMSkpID09ICdjJykKICAgICAgICAgewogICAgICAgICAgICAgKmZpbGVuYW1lID0gUHlVbmljb2RlX1N1YnN0cmluZygqZmlsZW5hbWUsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKCpmaWxlbmFtZSktMSk7CkBAIC02MTMsOCArNjgwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgZ290byBoYW5kbGVfZXJyb3I7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFpc190cnVlKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRigqZmlsZW5hbWUpOwotICAgICAgICAgICAgICAgICAgICAqZmlsZW5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiX19tYWluX18iKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfU0VUUkVGKCpmaWxlbmFtZSwgUHlVbmljb2RlX0Zyb21TdHJpbmcoIl9fbWFpbl9fIikpOwogICAgICAgICAgICAgICAgICAgICBpZiAoKmZpbGVuYW1lID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGhhbmRsZV9lcnJvcjsKICAgICAgICAgICAgICAgICB9CkBAIC02NTQsMTYgKzcyMCwxNyBAQAogCiAgICAgaWYgKHJjID09IDEpCiAgICAgICAgIGNhdGVnb3J5ID0gKFB5T2JqZWN0KiltZXNzYWdlLT5vYl90eXBlOwotICAgIGVsc2UgaWYgKGNhdGVnb3J5ID09IE5VTEwpCisgICAgZWxzZSBpZiAoY2F0ZWdvcnkgPT0gTlVMTCB8fCBjYXRlZ29yeSA9PSBQeV9Ob25lKQogICAgICAgICBjYXRlZ29yeSA9IFB5RXhjX1VzZXJXYXJuaW5nOwogCiAgICAgLyogVmFsaWRhdGUgY2F0ZWdvcnkuICovCiAgICAgcmMgPSBQeU9iamVjdF9Jc1N1YmNsYXNzKGNhdGVnb3J5LCBQeUV4Y19XYXJuaW5nKTsKLSAgICBpZiAocmMgPT0gLTEpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChyYyA9PSAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImNhdGVnb3J5IGlzIG5vdCBhIHN1YmNsYXNzIG9mIFdhcm5pbmciKTsKKyAgICAvKiBjYXRlZ29yeSBpcyBub3QgYSBzdWJjbGFzcyBvZiBQeUV4Y19XYXJuaW5nIG9yCisgICAgICAgUHlPYmplY3RfSXNTdWJjbGFzcyByYWlzZWQgYW4gZXJyb3IgKi8KKyAgICBpZiAocmMgPT0gLTEgfHwgcmMgPT0gMCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImNhdGVnb3J5IG11c3QgYmUgYSBXYXJuaW5nIHN1YmNsYXNzLCBub3QgJyVzJyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGNhdGVnb3J5KS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL2FzZGwuYyBiL1B5dGhvbi9hc2RsLmMKaW5kZXggNzRmYTk0MS4uZGYzODdiMiAxMDA2NDQKLS0tIGEvUHl0aG9uL2FzZGwuYworKysgYi9QeXRob24vYXNkbC5jCkBAIC01LDIxICs1LDIxIEBACiBfUHlfYXNkbF9zZXFfbmV3KFB5X3NzaXplX3Qgc2l6ZSwgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgYXNkbF9zZXEgKnNlcSA9IE5VTEw7Ci0gICAgc2l6ZV90IG4gPSAoc2l6ZSA/IChzaXplb2Yodm9pZCAqKSAqIChzaXplIC0gMSkpIDogMCk7CisgICAgc2l6ZV90IG47CiAKICAgICAvKiBjaGVjayBzaXplIGlzIHNhbmUgKi8KLSAgICBpZiAoc2l6ZSA8IDAgfHwgc2l6ZSA9PSBJTlRfTUlOIHx8Ci0gICAgICAgIChzaXplICYmICgoc2l6ZSAtIDEpID4gKFBZX1NJWkVfTUFYIC8gc2l6ZW9mKHZvaWQgKikpKSkpIHsKKyAgICBpZiAoc2l6ZSA8IDAgfHwKKyAgICAgICAgKHNpemUgJiYgKCgoc2l6ZV90KXNpemUgLSAxKSA+IChQWV9TSVpFX01BWCAvIHNpemVvZih2b2lkICopKSkpKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBuID0gKHNpemUgPyAoc2l6ZW9mKHZvaWQgKikgKiAoc2l6ZSAtIDEpKSA6IDApOwogCiAgICAgLyogY2hlY2sgaWYgc2l6ZSBjYW4gYmUgYWRkZWQgc2FmZWx5ICovCiAgICAgaWYgKG4gPiBQWV9TSVpFX01BWCAtIHNpemVvZihhc2RsX3NlcSkpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCiAgICAgbiArPSBzaXplb2YoYXNkbF9zZXEpOwogCiAgICAgc2VxID0gKGFzZGxfc2VxICopUHlBcmVuYV9NYWxsb2MoYXJlbmEsIG4pOwpAQCAtMzYsMjEgKzM2LDIxIEBACiBfUHlfYXNkbF9pbnRfc2VxX25ldyhQeV9zc2l6ZV90IHNpemUsIFB5QXJlbmEgKmFyZW5hKQogewogICAgIGFzZGxfaW50X3NlcSAqc2VxID0gTlVMTDsKLSAgICBzaXplX3QgbiA9IChzaXplID8gKHNpemVvZih2b2lkICopICogKHNpemUgLSAxKSkgOiAwKTsKKyAgICBzaXplX3QgbjsKIAogICAgIC8qIGNoZWNrIHNpemUgaXMgc2FuZSAqLwotICAgIGlmIChzaXplIDwgMCB8fCBzaXplID09IElOVF9NSU4gfHwKLSAgICAgICAgKHNpemUgJiYgKChzaXplIC0gMSkgPiAoUFlfU0laRV9NQVggLyBzaXplb2Yodm9pZCAqKSkpKSkgeworICAgIGlmIChzaXplIDwgMCB8fAorICAgICAgICAoc2l6ZSAmJiAoKChzaXplX3Qpc2l6ZSAtIDEpID4gKFBZX1NJWkVfTUFYIC8gc2l6ZW9mKHZvaWQgKikpKSkpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgbiA9IChzaXplID8gKHNpemVvZih2b2lkICopICogKHNpemUgLSAxKSkgOiAwKTsKIAogICAgIC8qIGNoZWNrIGlmIHNpemUgY2FuIGJlIGFkZGVkIHNhZmVseSAqLwogICAgIGlmIChuID4gUFlfU0laRV9NQVggLSBzaXplb2YoYXNkbF9zZXEpKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQogICAgIG4gKz0gc2l6ZW9mKGFzZGxfc2VxKTsKIAogICAgIHNlcSA9IChhc2RsX2ludF9zZXEgKilQeUFyZW5hX01hbGxvYyhhcmVuYSwgbik7CmRpZmYgLS1naXQgYS9QeXRob24vYXN0LmMgYi9QeXRob24vYXN0LmMKaW5kZXggZDUwY2I4MC4uNzc0M2MzMSAxMDA2NDQKLS0tIGEvUHl0aG9uL2FzdC5jCisrKyBiL1B5dGhvbi9hc3QuYwpAQCAtMTE1LDcgKzExNSw3IEBACiAgICAgfQogICAgIGlmICghdmFsaWRhdGVfYXJncyhhcmdzLT5rd29ubHlhcmdzKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKGFyZ3MtPmt3YXJnICYmIGFyZ3MtPmt3YXJnLT5hbm5vdGF0aW9uIAorICAgIGlmIChhcmdzLT5rd2FyZyAmJiBhcmdzLT5rd2FyZy0+YW5ub3RhdGlvbgogICAgICAgICAmJiAhdmFsaWRhdGVfZXhwcihhcmdzLT5rd2FyZy0+YW5ub3RhdGlvbiwgTG9hZCkpIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTE2NCw2ICsxNjQsOCBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgY2hlY2tfY3R4ID0gMDsKKyAgICAgICAgLyogc2V0IGFjdHVhbF9jdHggdG8gcHJldmVudCBnY2Mgd2FybmluZyAqLworICAgICAgICBhY3R1YWxfY3R4ID0gMDsKICAgICB9CiAgICAgaWYgKGNoZWNrX2N0eCAmJiBhY3R1YWxfY3R4ICE9IGN0eCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImV4cHJlc3Npb24gbXVzdCBoYXZlICVzIGNvbnRleHQgYnV0IGhhcyAlcyBpbnN0ZWFkIiwKQEAgLTE5Nyw4ICsxOTksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGljdCBkb2Vzbid0IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGtleXMgYXMgdmFsdWVzIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcnMoZXhwLT52LkRpY3Qua2V5cywgTG9hZCwgMCkgJiYKLSAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5EaWN0LnZhbHVlcywgTG9hZCwgMCk7CisgICAgICAgIC8qIG51bGxfb2s9MSBmb3Iga2V5cyBleHByZXNzaW9ucyB0byBhbGxvdyBkaWN0IHVucGFja2luZyB0byB3b3JrIGluCisgICAgICAgICAgIGRpY3QgbGl0ZXJhbHMsIGkuZS4gYGB7Kip7YTpifX1gYCAqLworICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcnMoZXhwLT52LkRpY3Qua2V5cywgTG9hZCwgLypudWxsX29rPSovIDEpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhleHAtPnYuRGljdC52YWx1ZXMsIExvYWQsIC8qbnVsbF9vaz0qLyAwKTsKICAgICBjYXNlIFNldF9raW5kOgogICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcnMoZXhwLT52LlNldC5lbHRzLCBMb2FkLCAwKTsKICNkZWZpbmUgQ09NUChOQU1FKSBcCkBAIC0yMTcsNiArMjIxLDggQEAKICAgICAgICAgcmV0dXJuICFleHAtPnYuWWllbGQudmFsdWUgfHwgdmFsaWRhdGVfZXhwcihleHAtPnYuWWllbGQudmFsdWUsIExvYWQpOwogICAgIGNhc2UgWWllbGRGcm9tX2tpbmQ6CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5ZaWVsZEZyb20udmFsdWUsIExvYWQpOworICAgIGNhc2UgQXdhaXRfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LkF3YWl0LnZhbHVlLCBMb2FkKTsKICAgICBjYXNlIENvbXBhcmVfa2luZDoKICAgICAgICAgaWYgKCFhc2RsX3NlcV9MRU4oZXhwLT52LkNvbXBhcmUuY29tcGFyYXRvcnMpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkNvbXBhcmUgd2l0aCBubyBjb21wYXJhdG9ycyIpOwpAQCAtMjMzLDkgKzIzOSw3IEBACiAgICAgY2FzZSBDYWxsX2tpbmQ6CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5DYWxsLmZ1bmMsIExvYWQpICYmCiAgICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhleHAtPnYuQ2FsbC5hcmdzLCBMb2FkLCAwKSAmJgotICAgICAgICAgICAgdmFsaWRhdGVfa2V5d29yZHMoZXhwLT52LkNhbGwua2V5d29yZHMpICYmCi0gICAgICAgICAgICAoIWV4cC0+di5DYWxsLnN0YXJhcmdzIHx8IHZhbGlkYXRlX2V4cHIoZXhwLT52LkNhbGwuc3RhcmFyZ3MsIExvYWQpKSAmJgotICAgICAgICAgICAgKCFleHAtPnYuQ2FsbC5rd2FyZ3MgfHwgdmFsaWRhdGVfZXhwcihleHAtPnYuQ2FsbC5rd2FyZ3MsIExvYWQpKTsKKyAgICAgICAgICAgIHZhbGlkYXRlX2tleXdvcmRzKGV4cC0+di5DYWxsLmtleXdvcmRzKTsKICAgICBjYXNlIE51bV9raW5kOiB7CiAgICAgICAgIFB5T2JqZWN0ICpuID0gZXhwLT52Lk51bS5uOwogICAgICAgICBpZiAoIVB5TG9uZ19DaGVja0V4YWN0KG4pICYmICFQeUZsb2F0X0NoZWNrRXhhY3QobikgJiYKQEAgLTMyMCw5ICszMjQsNyBAQAogICAgICAgICByZXR1cm4gdmFsaWRhdGVfYm9keShzdG10LT52LkNsYXNzRGVmLmJvZHksICJDbGFzc0RlZiIpICYmCiAgICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhzdG10LT52LkNsYXNzRGVmLmJhc2VzLCBMb2FkLCAwKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfa2V5d29yZHMoc3RtdC0+di5DbGFzc0RlZi5rZXl3b3JkcykgJiYKLSAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJzKHN0bXQtPnYuQ2xhc3NEZWYuZGVjb3JhdG9yX2xpc3QsIExvYWQsIDApICYmCi0gICAgICAgICAgICAoIXN0bXQtPnYuQ2xhc3NEZWYuc3RhcmFyZ3MgfHwgdmFsaWRhdGVfZXhwcihzdG10LT52LkNsYXNzRGVmLnN0YXJhcmdzLCBMb2FkKSkgJiYKLSAgICAgICAgICAgICghc3RtdC0+di5DbGFzc0RlZi5rd2FyZ3MgfHwgdmFsaWRhdGVfZXhwcihzdG10LT52LkNsYXNzRGVmLmt3YXJncywgTG9hZCkpOworICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoc3RtdC0+di5DbGFzc0RlZi5kZWNvcmF0b3JfbGlzdCwgTG9hZCwgMCk7CiAgICAgY2FzZSBSZXR1cm5fa2luZDoKICAgICAgICAgcmV0dXJuICFzdG10LT52LlJldHVybi52YWx1ZSB8fCB2YWxpZGF0ZV9leHByKHN0bXQtPnYuUmV0dXJuLnZhbHVlLCBMb2FkKTsKICAgICBjYXNlIERlbGV0ZV9raW5kOgpAQCAtMzM4LDYgKzM0MCwxMSBAQAogICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkZvci5pdGVyLCBMb2FkKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfYm9keShzdG10LT52LkZvci5ib2R5LCAiRm9yIikgJiYKICAgICAgICAgICAgIHZhbGlkYXRlX3N0bXRzKHN0bXQtPnYuRm9yLm9yZWxzZSk7CisgICAgY2FzZSBBc3luY0Zvcl9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LkFzeW5jRm9yLnRhcmdldCwgU3RvcmUpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQXN5bmNGb3IuaXRlciwgTG9hZCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2JvZHkoc3RtdC0+di5Bc3luY0Zvci5ib2R5LCAiQXN5bmNGb3IiKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfc3RtdHMoc3RtdC0+di5Bc3luY0Zvci5vcmVsc2UpOwogICAgIGNhc2UgV2hpbGVfa2luZDoKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5XaGlsZS50ZXN0LCBMb2FkKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfYm9keShzdG10LT52LldoaWxlLmJvZHksICJXaGlsZSIpICYmCkBAIC0zNTYsNiArMzYzLDE2IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2JvZHkoc3RtdC0+di5XaXRoLmJvZHksICJXaXRoIik7CisgICAgY2FzZSBBc3luY1dpdGhfa2luZDoKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV9ub25lbXB0eV9zZXEoc3RtdC0+di5Bc3luY1dpdGguaXRlbXMsICJpdGVtcyIsICJBc3luY1dpdGgiKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKHN0bXQtPnYuQXN5bmNXaXRoLml0ZW1zKTsgaSsrKSB7CisgICAgICAgICAgICB3aXRoaXRlbV90eSBpdGVtID0gYXNkbF9zZXFfR0VUKHN0bXQtPnYuQXN5bmNXaXRoLml0ZW1zLCBpKTsKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVfZXhwcihpdGVtLT5jb250ZXh0X2V4cHIsIExvYWQpIHx8CisgICAgICAgICAgICAgICAgKGl0ZW0tPm9wdGlvbmFsX3ZhcnMgJiYgIXZhbGlkYXRlX2V4cHIoaXRlbS0+b3B0aW9uYWxfdmFycywgU3RvcmUpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsaWRhdGVfYm9keShzdG10LT52LkFzeW5jV2l0aC5ib2R5LCAiQXN5bmNXaXRoIik7CiAgICAgY2FzZSBSYWlzZV9raW5kOgogICAgICAgICBpZiAoc3RtdC0+di5SYWlzZS5leGMpIHsKICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuUmFpc2UuZXhjLCBMb2FkKSAmJgpAQCAtNDA3LDYgKzQyNCwxMiBAQAogICAgICAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuTm9ubG9jYWwubmFtZXMsICJuYW1lcyIsICJOb25sb2NhbCIpOwogICAgIGNhc2UgRXhwcl9raW5kOgogICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LkV4cHIudmFsdWUsIExvYWQpOworICAgIGNhc2UgQXN5bmNGdW5jdGlvbkRlZl9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfYm9keShzdG10LT52LkFzeW5jRnVuY3Rpb25EZWYuYm9keSwgIkFzeW5jRnVuY3Rpb25EZWYiKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfYXJndW1lbnRzKHN0bXQtPnYuQXN5bmNGdW5jdGlvbkRlZi5hcmdzKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoc3RtdC0+di5Bc3luY0Z1bmN0aW9uRGVmLmRlY29yYXRvcl9saXN0LCBMb2FkLCAwKSAmJgorICAgICAgICAgICAgKCFzdG10LT52LkFzeW5jRnVuY3Rpb25EZWYucmV0dXJucyB8fAorICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Bc3luY0Z1bmN0aW9uRGVmLnJldHVybnMsIExvYWQpKTsKICAgICBjYXNlIFBhc3Nfa2luZDoKICAgICBjYXNlIEJyZWFrX2tpbmQ6CiAgICAgY2FzZSBDb250aW51ZV9raW5kOgpAQCAtNDUxLDcgKzQ3NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgZGlzYWxsb3dlZCBpbiBleHByZXNzaW9uIGxpc3QiKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgIH0KICAgICByZXR1cm4gMTsKIH0KQEAgLTUwNSw2ICs1MjgsOSBAQAogc3RhdGljIGV4cHJfdHkgYXN0X2Zvcl90ZXN0bGlzdChzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKik7CiBzdGF0aWMgc3RtdF90eSBhc3RfZm9yX2NsYXNzZGVmKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqLCBhc2RsX3NlcSAqKTsKIAorc3RhdGljIHN0bXRfdHkgYXN0X2Zvcl93aXRoX3N0bXQoc3RydWN0IGNvbXBpbGluZyAqLCBjb25zdCBub2RlICosIGludCk7CitzdGF0aWMgc3RtdF90eSBhc3RfZm9yX2Zvcl9zdG10KHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqLCBpbnQpOworCiAvKiBOb3RlIGRpZmZlcmVudCBzaWduYXR1cmUgZm9yIGFzdF9mb3JfY2FsbCAqLwogc3RhdGljIGV4cHJfdHkgYXN0X2Zvcl9jYWxsKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqLCBleHByX3R5KTsKIApAQCAtODI1LDYgKzg1MSw4IEBACiAgICAgICAgICAgICByZXR1cm4gU3ViOwogICAgICAgICBjYXNlIFNUQVI6CiAgICAgICAgICAgICByZXR1cm4gTXVsdDsKKyAgICAgICAgY2FzZSBBVDoKKyAgICAgICAgICAgIHJldHVybiBNYXRNdWx0OwogICAgICAgICBjYXNlIFNMQVNIOgogICAgICAgICAgICAgcmV0dXJuIERpdjsKICAgICAgICAgY2FzZSBET1VCTEVTTEFTSDoKQEAgLTg0NCw3ICs4NzIsOCBAQAogfTsKIAogc3RhdGljIGludAotZm9yYmlkZGVuX25hbWUoc3RydWN0IGNvbXBpbGluZyAqYywgaWRlbnRpZmllciBuYW1lLCBjb25zdCBub2RlICpuLCBpbnQgZnVsbF9jaGVja3MpCitmb3JiaWRkZW5fbmFtZShzdHJ1Y3QgY29tcGlsaW5nICpjLCBpZGVudGlmaWVyIG5hbWUsIGNvbnN0IG5vZGUgKm4sCisgICAgICAgICAgICAgICBpbnQgZnVsbF9jaGVja3MpCiB7CiAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhuYW1lKSk7CiAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICJfX2RlYnVnX18iKSA9PSAwKSB7CkBAIC05NDAsNiArOTY5LDkgQEAKICAgICAgICAgY2FzZSBZaWVsZEZyb21fa2luZDoKICAgICAgICAgICAgIGV4cHJfbmFtZSA9ICJ5aWVsZCBleHByZXNzaW9uIjsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF3YWl0X2tpbmQ6CisgICAgICAgICAgICBleHByX25hbWUgPSAiYXdhaXQgZXhwcmVzc2lvbiI7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBMaXN0Q29tcF9raW5kOgogICAgICAgICAgICAgZXhwcl9uYW1lID0gImxpc3QgY29tcHJlaGVuc2lvbiI7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwMzAsNiArMTA2Miw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIFBvdzsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdDsKKyAgICAgICAgY2FzZSAnQCc6CisgICAgICAgICAgICByZXR1cm4gTWF0TXVsdDsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwgImludmFsaWQgYXVnYXNzaWduOiAlcyIsIFNUUihuKSk7CiAgICAgICAgICAgICByZXR1cm4gKG9wZXJhdG9yX3R5KTA7CkBAIC0xMTM5LDExICsxMTczLDkgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJldCA9IGFyZyhuYW1lLCBhbm5vdGF0aW9uLCBjLT5jX2FyZW5hKTsKKyAgICByZXQgPSBhcmcobmFtZSwgYW5ub3RhdGlvbiwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgIGlmICghcmV0KQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXQtPmxpbmVubyA9IExJTkVOTyhuKTsKLSAgICByZXQtPmNvbF9vZmZzZXQgPSBuLT5uX2NvbF9vZmZzZXQ7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTE5OSwxMSArMTIzMSwxMCBAQAogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBhcmduYW1lLCBjaCwgMCkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgYXJnID0gYXJnKGFyZ25hbWUsIGFubm90YXRpb24sIGMtPmNfYXJlbmEpOworICAgICAgICAgICAgICAgIGFyZyA9IGFyZyhhcmduYW1lLCBhbm5vdGF0aW9uLCBMSU5FTk8oY2gpLCBjaC0+bl9jb2xfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjLT5jX2FyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAoIWFyZykKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBhcmctPmxpbmVubyA9IExJTkVOTyhjaCk7Ci0gICAgICAgICAgICAgICAgYXJnLT5jb2xfb2Zmc2V0ID0gY2gtPm5fY29sX29mZnNldDsKICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoa3dvbmx5YXJncywgaisrLCBhcmcpOwogICAgICAgICAgICAgICAgIGkgKz0gMjsgLyogdGhlIG5hbWUgYW5kIHRoZSBjb21tYSAqLwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQzOSw3ICsxNDcwLDcgQEAKICAgICAgICAgbmFtZV9leHByID0gTlVMTDsKICAgICB9CiAgICAgZWxzZSBpZiAoTkNIKG4pID09IDUpIHsgLyogQ2FsbCB3aXRoIG5vIGFyZ3VtZW50cyAqLwotICAgICAgICBkID0gQ2FsbChuYW1lX2V4cHIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIExJTkVOTyhuKSwKKyAgICAgICAgZCA9IENhbGwobmFtZV9leHByLCBOVUxMLCBOVUxMLCBMSU5FTk8obiksCiAgICAgICAgICAgICAgICAgIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgICAgIGlmICghZCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTQ3Nyw3ICsxNTA4LDggQEAKIH0KIAogc3RhdGljIHN0bXRfdHkKLWFzdF9mb3JfZnVuY2RlZihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBhc2RsX3NlcSAqZGVjb3JhdG9yX3NlcSkKK2FzdF9mb3JfZnVuY2RlZl9pbXBsKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sCisgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqZGVjb3JhdG9yX3NlcSwgaW50IGlzX2FzeW5jKQogewogICAgIC8qIGZ1bmNkZWY6ICdkZWYnIE5BTUUgcGFyYW1ldGVycyBbJy0+JyB0ZXN0XSAnOicgc3VpdGUgKi8KICAgICBpZGVudGlmaWVyIG5hbWU7CkBAIC0xNTA2LDE0ICsxNTM4LDY4IEBACiAgICAgaWYgKCFib2R5KQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBGdW5jdGlvbkRlZihuYW1lLCBhcmdzLCBib2R5LCBkZWNvcmF0b3Jfc2VxLCByZXR1cm5zLCBMSU5FTk8obiksCi0gICAgICAgICAgICAgICAgICAgICAgIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgaWYgKGlzX2FzeW5jKQorICAgICAgICByZXR1cm4gQXN5bmNGdW5jdGlvbkRlZihuYW1lLCBhcmdzLCBib2R5LCBkZWNvcmF0b3Jfc2VxLCByZXR1cm5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSU5FTk8obiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gRnVuY3Rpb25EZWYobmFtZSwgYXJncywgYm9keSwgZGVjb3JhdG9yX3NlcSwgcmV0dXJucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIExJTkVOTyhuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7Cit9CisKK3N0YXRpYyBzdG10X3R5Cithc3RfZm9yX2FzeW5jX2Z1bmNkZWYoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgYXNkbF9zZXEgKmRlY29yYXRvcl9zZXEpCit7CisgICAgLyogYXN5bmNfZnVuY2RlZjogQVNZTkMgZnVuY2RlZiAqLworICAgIFJFUShuLCBhc3luY19mdW5jZGVmKTsKKyAgICBSRVEoQ0hJTEQobiwgMCksIEFTWU5DKTsKKyAgICBSRVEoQ0hJTEQobiwgMSksIGZ1bmNkZWYpOworCisgICAgcmV0dXJuIGFzdF9mb3JfZnVuY2RlZl9pbXBsKGMsIENISUxEKG4sIDEpLCBkZWNvcmF0b3Jfc2VxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC8qIGlzX2FzeW5jICovKTsKK30KKworc3RhdGljIHN0bXRfdHkKK2FzdF9mb3JfZnVuY2RlZihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBhc2RsX3NlcSAqZGVjb3JhdG9yX3NlcSkKK3sKKyAgICAvKiBmdW5jZGVmOiAnZGVmJyBOQU1FIHBhcmFtZXRlcnMgWyctPicgdGVzdF0gJzonIHN1aXRlICovCisgICAgcmV0dXJuIGFzdF9mb3JfZnVuY2RlZl9pbXBsKGMsIG4sIGRlY29yYXRvcl9zZXEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyogaXNfYXN5bmMgKi8pOworfQorCisKK3N0YXRpYyBzdG10X3R5Cithc3RfZm9yX2FzeW5jX3N0bXQoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICAvKiBhc3luY19zdG10OiBBU1lOQyAoZnVuY2RlZiB8IHdpdGhfc3RtdCB8IGZvcl9zdG10KSAqLworICAgIFJFUShuLCBhc3luY19zdG10KTsKKyAgICBSRVEoQ0hJTEQobiwgMCksIEFTWU5DKTsKKworICAgIHN3aXRjaCAoVFlQRShDSElMRChuLCAxKSkpIHsKKyAgICAgICAgY2FzZSBmdW5jZGVmOgorICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3JfZnVuY2RlZl9pbXBsKGMsIENISUxEKG4sIDEpLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLyogaXNfYXN5bmMgKi8pOworICAgICAgICBjYXNlIHdpdGhfc3RtdDoKKyAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX3dpdGhfc3RtdChjLCBDSElMRChuLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC8qIGlzX2FzeW5jICovKTsKKworICAgICAgICBjYXNlIGZvcl9zdG10OgorICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3JfZm9yX3N0bXQoYywgQ0hJTEQobiwgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC8qIGlzX2FzeW5jICovKTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGFzeW5jIHN0YW1lbnQ6ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTVFIoQ0hJTEQobiwgMSkpKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIH0KIAogc3RhdGljIHN0bXRfdHkKIGFzdF9mb3JfZGVjb3JhdGVkKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCiB7Ci0gICAgLyogZGVjb3JhdGVkOiBkZWNvcmF0b3JzIChjbGFzc2RlZiB8IGZ1bmNkZWYpICovCisgICAgLyogZGVjb3JhdGVkOiBkZWNvcmF0b3JzIChjbGFzc2RlZiB8IGZ1bmNkZWYgfCBhc3luY19mdW5jZGVmKSAqLwogICAgIHN0bXRfdHkgdGhpbmcgPSBOVUxMOwogICAgIGFzZGxfc2VxICpkZWNvcmF0b3Jfc2VxID0gTlVMTDsKIApAQCAtMTUyNCwxMiArMTYxMCwxNSBAQAogICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBhc3NlcnQoVFlQRShDSElMRChuLCAxKSkgPT0gZnVuY2RlZiB8fAorICAgICAgICAgICBUWVBFKENISUxEKG4sIDEpKSA9PSBhc3luY19mdW5jZGVmIHx8CiAgICAgICAgICAgIFRZUEUoQ0hJTEQobiwgMSkpID09IGNsYXNzZGVmKTsKIAogICAgIGlmIChUWVBFKENISUxEKG4sIDEpKSA9PSBmdW5jZGVmKSB7CiAgICAgICB0aGluZyA9IGFzdF9mb3JfZnVuY2RlZihjLCBDSElMRChuLCAxKSwgZGVjb3JhdG9yX3NlcSk7CiAgICAgfSBlbHNlIGlmIChUWVBFKENISUxEKG4sIDEpKSA9PSBjbGFzc2RlZikgewogICAgICAgdGhpbmcgPSBhc3RfZm9yX2NsYXNzZGVmKGMsIENISUxEKG4sIDEpLCBkZWNvcmF0b3Jfc2VxKTsKKyAgICB9IGVsc2UgaWYgKFRZUEUoQ0hJTEQobiwgMSkpID09IGFzeW5jX2Z1bmNkZWYpIHsKKyAgICAgIHRoaW5nID0gYXN0X2Zvcl9hc3luY19mdW5jZGVmKGMsIENISUxEKG4sIDEpLCBkZWNvcmF0b3Jfc2VxKTsKICAgICB9CiAgICAgLyogd2UgY291bnQgdGhlIGRlY29yYXRvcnMgaW4gd2hlbiB0YWxraW5nIGFib3V0IHRoZSBjbGFzcycgb3IKICAgICAgKiBmdW5jdGlvbidzIGxpbmUgbnVtYmVyICovCkBAIC0xNzI5LDE2ICsxODE4LDIyIEBACiBzdGF0aWMgZXhwcl90eQogYXN0X2Zvcl9pdGVyY29tcChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBpbnQgdHlwZSkKIHsKLSAgICAvKiB0ZXN0bGlzdF9jb21wOiB0ZXN0ICggY29tcF9mb3IgfCAoJywnIHRlc3QpKiBbJywnXSApCi0gICAgICAgYXJndW1lbnQ6IFt0ZXN0ICc9J10gdGVzdCBbY29tcF9mb3JdICAgICAgICMgUmVhbGx5IFtrZXl3b3JkICc9J10gdGVzdCAqLworICAgIC8qIHRlc3RsaXN0X2NvbXA6ICh0ZXN0fHN0YXJfZXhwcikKKyAgICAgKiAgICAgICAgICAgICAgICAoIGNvbXBfZm9yIHwgKCcsJyAodGVzdHxzdGFyX2V4cHIpKSogWycsJ10gKSAqLwogICAgIGV4cHJfdHkgZWx0OwogICAgIGFzZGxfc2VxICpjb21wczsKKyAgICBub2RlICpjaDsKIAogICAgIGFzc2VydChOQ0gobikgPiAxKTsKIAotICAgIGVsdCA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChuLCAwKSk7CisgICAgY2ggPSBDSElMRChuLCAwKTsKKyAgICBlbHQgPSBhc3RfZm9yX2V4cHIoYywgY2gpOwogICAgIGlmICghZWx0KQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoZWx0LT5raW5kID09IFN0YXJyZWRfa2luZCkgeworICAgICAgICBhc3RfZXJyb3IoYywgY2gsICJpdGVyYWJsZSB1bnBhY2tpbmcgY2Fubm90IGJlIHVzZWQgaW4gY29tcHJlaGVuc2lvbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICBjb21wcyA9IGFzdF9mb3JfY29tcHJlaGVuc2lvbihjLCBDSElMRChuLCAxKSk7CiAgICAgaWYgKCFjb21wcykKQEAgLTE3NTUsMjMgKzE4NTAsNTkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qIEZpbGxzIGluIHRoZSBrZXksIHZhbHVlIHBhaXIgY29ycmVzcG9uZGluZyB0byB0aGUgZGljdCBlbGVtZW50LiAgSW4gY2FzZQorICogb2YgYW4gdW5wYWNraW5nLCBrZXkgaXMgTlVMTC4gICppIGlzIGFkdmFuY2VkIGJ5IHRoZSBudW1iZXIgb2YgYXN0CisgKiBlbGVtZW50cy4gIElmZiBzdWNjZXNzZnVsLCBub256ZXJvIGlzIHJldHVybmVkLgorICovCitzdGF0aWMgaW50Cithc3RfZm9yX2RpY3RlbGVtZW50KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGludCAqaSwKKyAgICAgICAgICAgICAgICAgICAgZXhwcl90eSAqa2V5LCBleHByX3R5ICp2YWx1ZSkKK3sKKyAgICBleHByX3R5IGV4cHJlc3Npb247CisgICAgaWYgKFRZUEUoQ0hJTEQobiwgKmkpKSA9PSBET1VCTEVTVEFSKSB7CisgICAgICAgIGFzc2VydChOQ0gobikgLSAqaSA+PSAyKTsKKworICAgICAgICBleHByZXNzaW9uID0gYXN0X2Zvcl9leHByKGMsIENISUxEKG4sICppICsgMSkpOworICAgICAgICBpZiAoIWV4cHJlc3Npb24pCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgKmtleSA9IE5VTEw7CisgICAgICAgICp2YWx1ZSA9IGV4cHJlc3Npb247CisKKyAgICAgICAgKmkgKz0gMjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydChOQ0gobikgLSAqaSA+PSAzKTsKKworICAgICAgICBleHByZXNzaW9uID0gYXN0X2Zvcl9leHByKGMsIENISUxEKG4sICppKSk7CisgICAgICAgIGlmICghZXhwcmVzc2lvbikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAqa2V5ID0gZXhwcmVzc2lvbjsKKworICAgICAgICBSRVEoQ0hJTEQobiwgKmkgKyAxKSwgQ09MT04pOworCisgICAgICAgIGV4cHJlc3Npb24gPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQobiwgKmkgKyAyKSk7CisgICAgICAgIGlmICghZXhwcmVzc2lvbikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAqdmFsdWUgPSBleHByZXNzaW9uOworCisgICAgICAgICppICs9IDM7CisgICAgfQorICAgIHJldHVybiAxOworfQorCiBzdGF0aWMgZXhwcl90eQogYXN0X2Zvcl9kaWN0Y29tcChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQogewogICAgIGV4cHJfdHkga2V5LCB2YWx1ZTsKICAgICBhc2RsX3NlcSAqY29tcHM7CisgICAgaW50IGkgPSAwOwogCi0gICAgYXNzZXJ0KE5DSChuKSA+IDMpOwotICAgIFJFUShDSElMRChuLCAxKSwgQ09MT04pOwotCi0gICAga2V5ID0gYXN0X2Zvcl9leHByKGMsIENISUxEKG4sIDApKTsKLSAgICBpZiAoIWtleSkKKyAgICBpZiAoIWFzdF9mb3JfZGljdGVsZW1lbnQoYywgbiwgJmksICZrZXksICZ2YWx1ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHZhbHVlID0gYXN0X2Zvcl9leHByKGMsIENISUxEKG4sIDIpKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQoa2V5KTsKKyAgICBhc3NlcnQoTkNIKG4pIC0gaSA+PSAxKTsKIAotICAgIGNvbXBzID0gYXN0X2Zvcl9jb21wcmVoZW5zaW9uKGMsIENISUxEKG4sIDMpKTsKKyAgICBjb21wcyA9IGFzdF9mb3JfY29tcHJlaGVuc2lvbihjLCBDSElMRChuLCBpKSk7CiAgICAgaWYgKCFjb21wcykKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTE3NzksNiArMTkxMCwzOSBAQAogfQogCiBzdGF0aWMgZXhwcl90eQorYXN0X2Zvcl9kaWN0ZGlzcGxheShzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQoreworICAgIGludCBpOworICAgIGludCBqOworICAgIGludCBzaXplOworICAgIGFzZGxfc2VxICprZXlzLCAqdmFsdWVzOworCisgICAgc2l6ZSA9IChOQ0gobikgKyAxKSAvIDM7IC8qICsxIGluIGNhc2Ugbm8gdHJhaWxpbmcgY29tbWEgKi8KKyAgICBrZXlzID0gX1B5X2FzZGxfc2VxX25ldyhzaXplLCBjLT5jX2FyZW5hKTsKKyAgICBpZiAoIWtleXMpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgdmFsdWVzID0gX1B5X2FzZGxfc2VxX25ldyhzaXplLCBjLT5jX2FyZW5hKTsKKyAgICBpZiAoIXZhbHVlcykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBqID0gMDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgTkNIKG4pOyBpKyspIHsKKyAgICAgICAgZXhwcl90eSBrZXksIHZhbHVlOworCisgICAgICAgIGlmICghYXN0X2Zvcl9kaWN0ZWxlbWVudChjLCBuLCAmaSwgJmtleSwgJnZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBhc2RsX3NlcV9TRVQoa2V5cywgaiwga2V5KTsKKyAgICAgICAgYXNkbF9zZXFfU0VUKHZhbHVlcywgaiwgdmFsdWUpOworCisgICAgICAgIGorKzsKKyAgICB9CisgICAga2V5cy0+c2l6ZSA9IGo7CisgICAgdmFsdWVzLT5zaXplID0gajsKKyAgICByZXR1cm4gRGljdChrZXlzLCB2YWx1ZXMsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKK30KKworc3RhdGljIGV4cHJfdHkKIGFzdF9mb3JfZ2VuZXhwKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCiB7CiAgICAgYXNzZXJ0KFRZUEUobikgPT0gKHRlc3RsaXN0X2NvbXApIHx8IFRZUEUobikgPT0gKGFyZ3VtZW50KSk7CkBAIC0xNzk5LDYgKzE5NjMsMjcgQEAKICAgICByZXR1cm4gYXN0X2Zvcl9pdGVyY29tcChjLCBuLCBDT01QX1NFVENPTVApOwogfQogCitzdGF0aWMgZXhwcl90eQorYXN0X2Zvcl9zZXRkaXNwbGF5KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCit7CisgICAgaW50IGk7CisgICAgaW50IHNpemU7CisgICAgYXNkbF9zZXEgKmVsdHM7CisKKyAgICBhc3NlcnQoVFlQRShuKSA9PSAoZGljdG9yc2V0bWFrZXIpKTsKKyAgICBzaXplID0gKE5DSChuKSArIDEpIC8gMjsgLyogKzEgaW4gY2FzZSBubyB0cmFpbGluZyBjb21tYSAqLworICAgIGVsdHMgPSBfUHlfYXNkbF9zZXFfbmV3KHNpemUsIGMtPmNfYXJlbmEpOworICAgIGlmICghZWx0cykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpID0gMDsgaSA8IE5DSChuKTsgaSArPSAyKSB7CisgICAgICAgIGV4cHJfdHkgZXhwcmVzc2lvbjsKKyAgICAgICAgZXhwcmVzc2lvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChuLCBpKSk7CisgICAgICAgIGlmICghZXhwcmVzc2lvbikKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBhc2RsX3NlcV9TRVQoZWx0cywgaSAvIDIsIGV4cHJlc3Npb24pOworICAgIH0KKyAgICByZXR1cm4gU2V0KGVsdHMsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKK30KIAogc3RhdGljIGV4cHJfdHkKIGFzdF9mb3JfYXRvbShzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQpAQCAtMTkwOSw2MiArMjA5NCw0OCBAQAogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9saXN0Y29tcChjLCBjaCk7CiAgICAgY2FzZSBMQlJBQ0U6IHsKLSAgICAgICAgLyogZGljdG9yc2V0bWFrZXI6IHRlc3QgJzonIHRlc3QgKCcsJyB0ZXN0ICc6JyB0ZXN0KSogWycsJ10gfAotICAgICAgICAgKiAgICAgICAgICAgICAgICAgdGVzdCAoZ2VuX2ZvciB8ICgnLCcgdGVzdCkqIFsnLCddKSAgKi8KLSAgICAgICAgaW50IGksIHNpemU7Ci0gICAgICAgIGFzZGxfc2VxICprZXlzLCAqdmFsdWVzOwotCisgICAgICAgIC8qIGRpY3RvcnNldG1ha2VyOiAoICgodGVzdCAnOicgdGVzdCB8ICcqKicgdGVzdCkKKyAgICAgICAgICogICAgICAgICAgICAgICAgICAgIChjb21wX2ZvciB8ICgnLCcgKHRlc3QgJzonIHRlc3QgfCAnKionIHRlc3QpKSogWycsJ10pKSB8CisgICAgICAgICAqICAgICAgICAgICAgICAgICAgICgodGVzdCB8ICcqJyB0ZXN0KQorICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgKGNvbXBfZm9yIHwgKCcsJyAodGVzdCB8ICcqJyB0ZXN0KSkqIFsnLCddKSkgKSAqLworICAgICAgICBleHByX3R5IHJlczsKICAgICAgICAgY2ggPSBDSElMRChuLCAxKTsKICAgICAgICAgaWYgKFRZUEUoY2gpID09IFJCUkFDRSkgewotICAgICAgICAgICAgLyogaXQncyBhbiBlbXB0eSBkaWN0ICovCisgICAgICAgICAgICAvKiBJdCdzIGFuIGVtcHR5IGRpY3QuICovCiAgICAgICAgICAgICByZXR1cm4gRGljdChOVUxMLCBOVUxMLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoTkNIKGNoKSA9PSAxIHx8IFRZUEUoQ0hJTEQoY2gsIDEpKSA9PSBDT01NQSkgewotICAgICAgICAgICAgLyogaXQncyBhIHNpbXBsZSBzZXQgKi8KLSAgICAgICAgICAgIGFzZGxfc2VxICplbHRzOwotICAgICAgICAgICAgc2l6ZSA9IChOQ0goY2gpICsgMSkgLyAyOyAvKiArMSBpbiBjYXNlIG5vIHRyYWlsaW5nIGNvbW1hICovCi0gICAgICAgICAgICBlbHRzID0gX1B5X2FzZGxfc2VxX25ldyhzaXplLCBjLT5jX2FyZW5hKTsKLSAgICAgICAgICAgIGlmICghZWx0cykKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBOQ0goY2gpOyBpICs9IDIpIHsKLSAgICAgICAgICAgICAgICBleHByX3R5IGV4cHJlc3Npb247Ci0gICAgICAgICAgICAgICAgZXhwcmVzc2lvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChjaCwgaSkpOwotICAgICAgICAgICAgICAgIGlmICghZXhwcmVzc2lvbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGVsdHMsIGkgLyAyLCBleHByZXNzaW9uKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGludCBpc19kaWN0ID0gKFRZUEUoQ0hJTEQoY2gsIDApKSA9PSBET1VCTEVTVEFSKTsKKyAgICAgICAgICAgIGlmIChOQ0goY2gpID09IDEgfHwKKyAgICAgICAgICAgICAgICAgICAgKE5DSChjaCkgPiAxICYmCisgICAgICAgICAgICAgICAgICAgICBUWVBFKENISUxEKGNoLCAxKSkgPT0gQ09NTUEpKSB7CisgICAgICAgICAgICAgICAgLyogSXQncyBhIHNldCBkaXNwbGF5LiAqLworICAgICAgICAgICAgICAgIHJlcyA9IGFzdF9mb3Jfc2V0ZGlzcGxheShjLCBjaCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gU2V0KGVsdHMsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKLSAgICAgICAgfSBlbHNlIGlmIChUWVBFKENISUxEKGNoLCAxKSkgPT0gY29tcF9mb3IpIHsKLSAgICAgICAgICAgIC8qIGl0J3MgYSBzZXQgY29tcHJlaGVuc2lvbiAqLwotICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3Jfc2V0Y29tcChjLCBjaCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoTkNIKGNoKSA+IDMgJiYgVFlQRShDSElMRChjaCwgMykpID09IGNvbXBfZm9yKSB7Ci0gICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9kaWN0Y29tcChjLCBjaCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBpdCdzIGEgZGljdCAqLwotICAgICAgICAgICAgc2l6ZSA9IChOQ0goY2gpICsgMSkgLyA0OyAvKiArMSBpbiBjYXNlIG5vIHRyYWlsaW5nIGNvbW1hICovCi0gICAgICAgICAgICBrZXlzID0gX1B5X2FzZGxfc2VxX25ldyhzaXplLCBjLT5jX2FyZW5hKTsKLSAgICAgICAgICAgIGlmICgha2V5cykKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAgICAgICAgdmFsdWVzID0gX1B5X2FzZGxfc2VxX25ldyhzaXplLCBjLT5jX2FyZW5hKTsKLSAgICAgICAgICAgIGlmICghdmFsdWVzKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTkNIKGNoKTsgaSArPSA0KSB7Ci0gICAgICAgICAgICAgICAgZXhwcl90eSBleHByZXNzaW9uOwotCi0gICAgICAgICAgICAgICAgZXhwcmVzc2lvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChjaCwgaSkpOwotICAgICAgICAgICAgICAgIGlmICghZXhwcmVzc2lvbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoa2V5cywgaSAvIDQsIGV4cHJlc3Npb24pOwotCi0gICAgICAgICAgICAgICAgZXhwcmVzc2lvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChjaCwgaSArIDIpKTsKLSAgICAgICAgICAgICAgICBpZiAoIWV4cHJlc3Npb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKHZhbHVlcywgaSAvIDQsIGV4cHJlc3Npb24pOworICAgICAgICAgICAgZWxzZSBpZiAoTkNIKGNoKSA+IDEgJiYKKyAgICAgICAgICAgICAgICAgICAgVFlQRShDSElMRChjaCwgMSkpID09IGNvbXBfZm9yKSB7CisgICAgICAgICAgICAgICAgLyogSXQncyBhIHNldCBjb21wcmVoZW5zaW9uLiAqLworICAgICAgICAgICAgICAgIHJlcyA9IGFzdF9mb3Jfc2V0Y29tcChjLCBjaCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gRGljdChrZXlzLCB2YWx1ZXMsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKE5DSChjaCkgPiAzIC0gaXNfZGljdCAmJgorICAgICAgICAgICAgICAgICAgICBUWVBFKENISUxEKGNoLCAzIC0gaXNfZGljdCkpID09IGNvbXBfZm9yKSB7CisgICAgICAgICAgICAgICAgLyogSXQncyBhIGRpY3Rpb25hcnkgY29tcHJlaGVuc2lvbi4gKi8KKyAgICAgICAgICAgICAgICBpZiAoaXNfZGljdCkgeworICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImRpY3QgdW5wYWNraW5nIGNhbm5vdCBiZSB1c2VkIGluICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGljdCBjb21wcmVoZW5zaW9uIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXMgPSBhc3RfZm9yX2RpY3Rjb21wKGMsIGNoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8qIEl0J3MgYSBkaWN0aW9uYXJ5IGRpc3BsYXkuICovCisgICAgICAgICAgICAgICAgcmVzID0gYXN0X2Zvcl9kaWN0ZGlzcGxheShjLCBjaCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzKSB7CisgICAgICAgICAgICAgICAgcmVzLT5saW5lbm8gPSBMSU5FTk8obik7CisgICAgICAgICAgICAgICAgcmVzLT5jb2xfb2Zmc2V0ID0gbi0+bl9jb2xfb2Zmc2V0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJlczsKICAgICAgICAgfQogICAgIH0KICAgICBkZWZhdWx0OgpAQCAtMjEwMCw3ICsyMjcxLDcgQEAKICAgICBSRVEobiwgdHJhaWxlcik7CiAgICAgaWYgKFRZUEUoQ0hJTEQobiwgMCkpID09IExQQVIpIHsKICAgICAgICAgaWYgKE5DSChuKSA9PSAyKQotICAgICAgICAgICAgcmV0dXJuIENhbGwobGVmdF9leHByLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBMSU5FTk8obiksCisgICAgICAgICAgICByZXR1cm4gQ2FsbChsZWZ0X2V4cHIsIE5VTEwsIE5VTEwsIExJTkVOTyhuKSwKICAgICAgICAgICAgICAgICAgICAgICAgIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2NhbGwoYywgQ0hJTEQobiwgMSksIGxlZnRfZXhwcik7CkBAIC0yMTkyLDE5ICsyMzYzLDI5IEBACiB9CiAKIHN0YXRpYyBleHByX3R5Ci1hc3RfZm9yX3Bvd2VyKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCithc3RfZm9yX2F0b21fZXhwcihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQogewotICAgIC8qIHBvd2VyOiBhdG9tIHRyYWlsZXIqICgnKionIGZhY3RvcikqCi0gICAgICovCi0gICAgaW50IGk7CisgICAgaW50IGksIG5jaCwgc3RhcnQgPSAwOwogICAgIGV4cHJfdHkgZSwgdG1wOwotICAgIFJFUShuLCBwb3dlcik7Ci0gICAgZSA9IGFzdF9mb3JfYXRvbShjLCBDSElMRChuLCAwKSk7CisKKyAgICBSRVEobiwgYXRvbV9leHByKTsKKyAgICBuY2ggPSBOQ0gobik7CisKKyAgICBpZiAoVFlQRShDSElMRChuLCAwKSkgPT0gQVdBSVQpIHsKKyAgICAgICAgc3RhcnQgPSAxOworICAgICAgICBhc3NlcnQobmNoID4gMSk7CisgICAgfQorCisgICAgZSA9IGFzdF9mb3JfYXRvbShjLCBDSElMRChuLCBzdGFydCkpOwogICAgIGlmICghZSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKE5DSChuKSA9PSAxKQorICAgIGlmIChuY2ggPT0gMSkKICAgICAgICAgcmV0dXJuIGU7Ci0gICAgZm9yIChpID0gMTsgaSA8IE5DSChuKTsgaSsrKSB7CisgICAgaWYgKHN0YXJ0ICYmIG5jaCA9PSAyKSB7CisgICAgICAgIHJldHVybiBBd2FpdChlLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgfQorCisgICAgZm9yIChpID0gc3RhcnQgKyAxOyBpIDwgbmNoOyBpKyspIHsKICAgICAgICAgbm9kZSAqY2ggPSBDSElMRChuLCBpKTsKICAgICAgICAgaWYgKFRZUEUoY2gpICE9IHRyYWlsZXIpCiAgICAgICAgICAgICBicmVhazsKQEAgLTIyMTUsNiArMjM5NiwyOCBAQAogICAgICAgICB0bXAtPmNvbF9vZmZzZXQgPSBlLT5jb2xfb2Zmc2V0OwogICAgICAgICBlID0gdG1wOwogICAgIH0KKworICAgIGlmIChzdGFydCkgeworICAgICAgICAvKiB0aGVyZSB3YXMgYW4gQVdBSVQgKi8KKyAgICAgICAgcmV0dXJuIEF3YWl0KGUsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBlOworICAgIH0KK30KKworc3RhdGljIGV4cHJfdHkKK2FzdF9mb3JfcG93ZXIoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICAvKiBwb3dlcjogYXRvbSB0cmFpbGVyKiAoJyoqJyBmYWN0b3IpKgorICAgICAqLworICAgIGV4cHJfdHkgZTsKKyAgICBSRVEobiwgcG93ZXIpOworICAgIGUgPSBhc3RfZm9yX2F0b21fZXhwcihjLCBDSElMRChuLCAwKSk7CisgICAgaWYgKCFlKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoTkNIKG4pID09IDEpCisgICAgICAgIHJldHVybiBlOwogICAgIGlmIChUWVBFKENISUxEKG4sIE5DSChuKSAtIDEpKSA9PSBmYWN0b3IpIHsKICAgICAgICAgZXhwcl90eSBmID0gYXN0X2Zvcl9leHByKGMsIENISUxEKG4sIE5DSChuKSAtIDEpKTsKICAgICAgICAgaWYgKCFmKQpAQCAtMjI1Nyw5ICsyNDYwLDExIEBACiAgICAgICAgYW5kX2V4cHI6IHNoaWZ0X2V4cHIgKCcmJyBzaGlmdF9leHByKSoKICAgICAgICBzaGlmdF9leHByOiBhcml0aF9leHByICgoJzw8J3wnPj4nKSBhcml0aF9leHByKSoKICAgICAgICBhcml0aF9leHByOiB0ZXJtICgoJysnfCctJykgdGVybSkqCi0gICAgICAgdGVybTogZmFjdG9yICgoJyonfCcvJ3wnJSd8Jy8vJykgZmFjdG9yKSoKKyAgICAgICB0ZXJtOiBmYWN0b3IgKCgnKid8J0AnfCcvJ3wnJSd8Jy8vJykgZmFjdG9yKSoKICAgICAgICBmYWN0b3I6ICgnKyd8Jy0nfCd+JykgZmFjdG9yIHwgcG93ZXIKLSAgICAgICBwb3dlcjogYXRvbSB0cmFpbGVyKiAoJyoqJyBmYWN0b3IpKgorICAgICAgIHBvd2VyOiBhdG9tX2V4cHIgWycqKicgZmFjdG9yXQorICAgICAgIGF0b21fZXhwcjogW0FXQUlUXSBhdG9tIHRyYWlsZXIqCisgICAgICAgeWllbGRfZXhwcjogJ3lpZWxkJyBbeWllbGRfYXJnXQogICAgICovCiAKICAgICBhc2RsX3NlcSAqc2VxOwpAQCAtMjQwOSwxNSArMjYxNCwxNCBAQAogYXN0X2Zvcl9jYWxsKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGV4cHJfdHkgZnVuYykKIHsKICAgICAvKgotICAgICAgYXJnbGlzdDogKGFyZ3VtZW50ICcsJykqIChhcmd1bWVudCBbJywnXXwgJyonIHRlc3QgWycsJyAnKionIHRlc3RdCi0gICAgICAgICAgICAgICB8ICcqKicgdGVzdCkKLSAgICAgIGFyZ3VtZW50OiBbdGVzdCAnPSddICh0ZXN0KSBbY29tcF9mb3JdICAgICAgICAjIFJlYWxseSBba2V5d29yZCAnPSddIHRlc3QKKyAgICAgIGFyZ2xpc3Q6IGFyZ3VtZW50ICgnLCcgYXJndW1lbnQpKiAgWycsJ10KKyAgICAgIGFyZ3VtZW50OiAoIHRlc3QgW2NvbXBfZm9yXSB8ICcqJyB0ZXN0IHwgdGVzdCAnPScgdGVzdCB8ICcqKicgdGVzdCApCiAgICAgKi8KIAogICAgIGludCBpLCBuYXJncywgbmtleXdvcmRzLCBuZ2VuczsKKyAgICBpbnQgbmRvdWJsZXN0YXJzOwogICAgIGFzZGxfc2VxICphcmdzOwogICAgIGFzZGxfc2VxICprZXl3b3JkczsKLSAgICBleHByX3R5IHZhcmFyZyA9IE5VTEwsIGt3YXJnID0gTlVMTDsKIAogICAgIFJFUShuLCBhcmdsaXN0KTsKIApAQCAtMjQzMSw3ICsyNjM1LDEwIEBACiAgICAgICAgICAgICAgICAgbmFyZ3MrKzsKICAgICAgICAgICAgIGVsc2UgaWYgKFRZUEUoQ0hJTEQoY2gsIDEpKSA9PSBjb21wX2ZvcikKICAgICAgICAgICAgICAgICBuZ2VucysrOworICAgICAgICAgICAgZWxzZSBpZiAoVFlQRShDSElMRChjaCwgMCkpID09IFNUQVIpCisgICAgICAgICAgICAgICAgbmFyZ3MrKzsKICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAvKiBUWVBFKENISUxEKGNoLCAwKSkgPT0gRE9VQkxFU1RBUiBvciBrZXl3b3JkIGFyZ3VtZW50ICovCiAgICAgICAgICAgICAgICAgbmtleXdvcmRzKys7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNDUyLDQxICsyNjU5LDgxIEBACiAgICAga2V5d29yZHMgPSBfUHlfYXNkbF9zZXFfbmV3KG5rZXl3b3JkcywgYy0+Y19hcmVuYSk7CiAgICAgaWYgKCFrZXl3b3JkcykKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgbmFyZ3MgPSAwOwotICAgIG5rZXl3b3JkcyA9IDA7CisKKyAgICBuYXJncyA9IDA7ICAvKiBwb3NpdGlvbmFsIGFyZ3VtZW50cyArIGl0ZXJhYmxlIGFyZ3VtZW50IHVucGFja2luZ3MgKi8KKyAgICBua2V5d29yZHMgPSAwOyAgLyoga2V5d29yZCBhcmd1bWVudHMgKyBrZXl3b3JkIGFyZ3VtZW50IHVucGFja2luZ3MgKi8KKyAgICBuZG91Ymxlc3RhcnMgPSAwOyAgLyoganVzdCBrZXl3b3JkIGFyZ3VtZW50IHVucGFja2luZ3MgKi8KICAgICBmb3IgKGkgPSAwOyBpIDwgTkNIKG4pOyBpKyspIHsKICAgICAgICAgbm9kZSAqY2ggPSBDSElMRChuLCBpKTsKICAgICAgICAgaWYgKFRZUEUoY2gpID09IGFyZ3VtZW50KSB7CiAgICAgICAgICAgICBleHByX3R5IGU7CisgICAgICAgICAgICBub2RlICpjaGNoID0gQ0hJTEQoY2gsIDApOwogICAgICAgICAgICAgaWYgKE5DSChjaCkgPT0gMSkgeworICAgICAgICAgICAgICAgIC8qIGEgcG9zaXRpb25hbCBhcmd1bWVudCAqLwogICAgICAgICAgICAgICAgIGlmIChua2V5d29yZHMpIHsKLSAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKGNoLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub24ta2V5d29yZCBhcmcgYWZ0ZXIga2V5d29yZCBhcmciKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5kb3VibGVzdGFycykgeworICAgICAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3NpdGlvbmFsIGFyZ3VtZW50IGZvbGxvd3MgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudCB1bnBhY2tpbmciKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBjaGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG9zaXRpb25hbCBhcmd1bWVudCBmb2xsb3dzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnQiKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHZhcmFyZykgewotICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQoY2gsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9ubHkgbmFtZWQgYXJndW1lbnRzIG1heSBmb2xsb3cgKmV4cHJlc3Npb24iKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGUgPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQoY2gsIDApKTsKKyAgICAgICAgICAgICAgICBlID0gYXN0X2Zvcl9leHByKGMsIGNoY2gpOwogICAgICAgICAgICAgICAgIGlmICghZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGFyZ3MsIG5hcmdzKyssIGUpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoVFlQRShjaGNoKSA9PSBTVEFSKSB7CisgICAgICAgICAgICAgICAgLyogYW4gaXRlcmFibGUgYXJndW1lbnQgdW5wYWNraW5nICovCisgICAgICAgICAgICAgICAgZXhwcl90eSBzdGFycmVkOworICAgICAgICAgICAgICAgIGlmIChuZG91Ymxlc3RhcnMpIHsKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhYmxlIGFyZ3VtZW50IHVucGFja2luZyBmb2xsb3dzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudCB1bnBhY2tpbmciKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGUgPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQoY2gsIDEpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIHN0YXJyZWQgPSBTdGFycmVkKGUsIExvYWQsIExJTkVOTyhjaGNoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoY2gtPm5fY29sX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGMtPmNfYXJlbmEpOworICAgICAgICAgICAgICAgIGlmICghc3RhcnJlZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGFyZ3MsIG5hcmdzKyssIHN0YXJyZWQpOworCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChUWVBFKGNoY2gpID09IERPVUJMRVNUQVIpIHsKKyAgICAgICAgICAgICAgICAvKiBhIGtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nICovCisgICAgICAgICAgICAgICAga2V5d29yZF90eSBrdzsKKyAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgZSA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChjaCwgMSkpOworICAgICAgICAgICAgICAgIGlmICghZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAga3cgPSBrZXl3b3JkKE5VTEwsIGUsIGMtPmNfYXJlbmEpOworICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChrZXl3b3JkcywgbmtleXdvcmRzKyssIGt3KTsKKyAgICAgICAgICAgICAgICBuZG91Ymxlc3RhcnMrKzsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKFRZUEUoQ0hJTEQoY2gsIDEpKSA9PSBjb21wX2ZvcikgeworICAgICAgICAgICAgICAgIC8qIHRoZSBsb25lIGdlbmVyYXRvciBleHByZXNzaW9uICovCiAgICAgICAgICAgICAgICAgZSA9IGFzdF9mb3JfZ2VuZXhwKGMsIGNoKTsKICAgICAgICAgICAgICAgICBpZiAoIWUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhcmdzLCBuYXJncysrLCBlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8qIGEga2V5d29yZCBhcmd1bWVudCAqLwogICAgICAgICAgICAgICAgIGtleXdvcmRfdHkga3c7CiAgICAgICAgICAgICAgICAgaWRlbnRpZmllciBrZXksIHRtcDsKICAgICAgICAgICAgICAgICBpbnQgazsKIAotICAgICAgICAgICAgICAgIC8qIENISUxEKGNoLCAwKSBpcyB0ZXN0LCBidXQgbXVzdCBiZSBhbiBpZGVudGlmaWVyPyAqLwotICAgICAgICAgICAgICAgIGUgPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQoY2gsIDApKTsKKyAgICAgICAgICAgICAgICAvKiBjaGNoIGlzIHRlc3QsIGJ1dCBtdXN0IGJlIGFuIGlkZW50aWZpZXI/ICovCisgICAgICAgICAgICAgICAgZSA9IGFzdF9mb3JfZXhwcihjLCBjaGNoKTsKICAgICAgICAgICAgICAgICBpZiAoIWUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIC8qIGYobGFtYmRhIHg6IHhbMF0gPSAzKSBlbmRzIHVwIGdldHRpbmcgcGFyc2VkIHdpdGgKQEAgLTI0OTUsMTkgKzI3NDIsMjQgQEAKICAgICAgICAgICAgICAgICAgKiB0aGVuIGlzIHZlcnkgY29uZnVzaW5nLgogICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgIGlmIChlLT5raW5kID09IExhbWJkYV9raW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBDSElMRChjaCwgMCksICJsYW1iZGEgY2Fubm90IGNvbnRhaW4gYXNzaWdubWVudCIpOworICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2hjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGFtYmRhIGNhbm5vdCBjb250YWluIGFzc2lnbm1lbnQiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlLT5raW5kICE9IE5hbWVfa2luZCkgewotICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQoY2gsIDApLCAia2V5d29yZCBjYW4ndCBiZSBhbiBleHByZXNzaW9uIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGUtPmtpbmQgIT0gTmFtZV9raW5kKSB7CisgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBjaGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGNhbid0IGJlIGFuIGV4cHJlc3Npb24iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JiaWRkZW5fbmFtZShjLCBlLT52Lk5hbWUuaWQsIGNoLCAxKSkgeworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3JiaWRkZW5fbmFtZShjLCBlLT52Lk5hbWUuaWQsIGNoLCAxKSkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAga2V5ID0gZS0+di5OYW1lLmlkOwogICAgICAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCBua2V5d29yZHM7IGsrKykgewogICAgICAgICAgICAgICAgICAgICB0bXAgPSAoKGtleXdvcmRfdHkpYXNkbF9zZXFfR0VUKGtleXdvcmRzLCBrKSktPmFyZzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ29tcGFyZSh0bXAsIGtleSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBDSElMRChjaCwgMCksICJrZXl3b3JkIGFyZ3VtZW50IHJlcGVhdGVkIik7CisgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgJiYgIVB5VW5pY29kZV9Db21wYXJlKHRtcCwga2V5KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50IHJlcGVhdGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTI1MjAsMjEgKzI3NzIsOSBAQAogICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChrZXl3b3JkcywgbmtleXdvcmRzKyssIGt3KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChUWVBFKGNoKSA9PSBTVEFSKSB7Ci0gICAgICAgICAgICB2YXJhcmcgPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQobiwgaSsxKSk7Ci0gICAgICAgICAgICBpZiAoIXZhcmFyZykKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGkrKzsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChUWVBFKGNoKSA9PSBET1VCTEVTVEFSKSB7Ci0gICAgICAgICAgICBrd2FyZyA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChuLCBpKzEpKTsKLSAgICAgICAgICAgIGlmICgha3dhcmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBpKys7Ci0gICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gQ2FsbChmdW5jLCBhcmdzLCBrZXl3b3JkcywgdmFyYXJnLCBrd2FyZywgZnVuYy0+bGluZW5vLCBmdW5jLT5jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICByZXR1cm4gQ2FsbChmdW5jLCBhcmdzLCBrZXl3b3JkcywgZnVuYy0+bGluZW5vLCBmdW5jLT5jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKIH0KIAogc3RhdGljIGV4cHJfdHkKQEAgLTI1NjgsNyArMjgwOCw3IEBACiAgICAgLyogZXhwcl9zdG10OiB0ZXN0bGlzdF9zdGFyX2V4cHIgKGF1Z2Fzc2lnbiAoeWllbGRfZXhwcnx0ZXN0bGlzdCkKICAgICAgICAgICAgICAgICB8ICgnPScgKHlpZWxkX2V4cHJ8dGVzdGxpc3QpKSopCiAgICAgICAgdGVzdGxpc3Rfc3Rhcl9leHByOiAodGVzdHxzdGFyX2V4cHIpICgnLCcgdGVzdHxzdGFyX2V4cHIpKiBbJywnXQotICAgICAgIGF1Z2Fzc2lnbjogJys9JyB8ICctPScgfCAnKj0nIHwgJy89JyB8ICclPScgfCAnJj0nIHwgJ3w9JyB8ICdePScKKyAgICAgICBhdWdhc3NpZ246ICcrPScgfCAnLT0nIHwgJyo9JyB8ICdAPScgfCAnLz0nIHwgJyU9JyB8ICcmPScgfCAnfD0nIHwgJ149JwogICAgICAgICAgICAgICAgIHwgJzw8PScgfCAnPj49JyB8ICcqKj0nIHwgJy8vPScKICAgICAgICB0ZXN0OiAuLi4gaGVyZSBzdGFydHMgdGhlIG9wZXJhdG9yIHByZWNlbmRlbmNlIGRhbmNlCiAgICAgICovCkBAIC0zMjg4LDcgKzM1MjgsNyBAQAogfQogCiBzdGF0aWMgc3RtdF90eQotYXN0X2Zvcl9mb3Jfc3RtdChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQorYXN0X2Zvcl9mb3Jfc3RtdChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBpbnQgaXNfYXN5bmMpCiB7CiAgICAgYXNkbF9zZXEgKl90YXJnZXQsICpzZXEgPSBOVUxMLCAqc3VpdGVfc2VxOwogICAgIGV4cHJfdHkgZXhwcmVzc2lvbjsKQEAgLTMzMjIsOCArMzU2MiwxNCBAQAogICAgIGlmICghc3VpdGVfc2VxKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBGb3IodGFyZ2V0LCBleHByZXNzaW9uLCBzdWl0ZV9zZXEsIHNlcSwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsCi0gICAgICAgICAgICAgICBjLT5jX2FyZW5hKTsKKyAgICBpZiAoaXNfYXN5bmMpCisgICAgICAgIHJldHVybiBBc3luY0Zvcih0YXJnZXQsIGV4cHJlc3Npb24sIHN1aXRlX3NlcSwgc2VxLAorICAgICAgICAgICAgICAgICAgICAgICAgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICBjLT5jX2FyZW5hKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBGb3IodGFyZ2V0LCBleHByZXNzaW9uLCBzdWl0ZV9zZXEsIHNlcSwKKyAgICAgICAgICAgICAgICAgICBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICBjLT5jX2FyZW5hKTsKIH0KIAogc3RhdGljIGV4Y2VwdGhhbmRsZXJfdHkKQEAgLTM0NzAsNyArMzcxNiw3IEBACiAKIC8qIHdpdGhfc3RtdDogJ3dpdGgnIHdpdGhfaXRlbSAoJywnIHdpdGhfaXRlbSkqICc6JyBzdWl0ZSAqLwogc3RhdGljIHN0bXRfdHkKLWFzdF9mb3Jfd2l0aF9zdG10KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCithc3RfZm9yX3dpdGhfc3RtdChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBpbnQgaXNfYXN5bmMpCiB7CiAgICAgaW50IGksIG5faXRlbXM7CiAgICAgYXNkbF9zZXEgKml0ZW1zLCAqYm9keTsKQEAgLTM0OTIsNyArMzczOCwxMCBAQAogICAgIGlmICghYm9keSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gV2l0aChpdGVtcywgYm9keSwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgIGlmIChpc19hc3luYykKKyAgICAgICAgcmV0dXJuIEFzeW5jV2l0aChpdGVtcywgYm9keSwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFdpdGgoaXRlbXMsIGJvZHksIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKIH0KIAogc3RhdGljIHN0bXRfdHkKQEAgLTM1MTQsOCArMzc2Myw4IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGNsYXNzbmFtZSwgQ0hJTEQobiwgMyksIDApKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJldHVybiBDbGFzc0RlZihjbGFzc25hbWUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIHMsIGRlY29yYXRvcl9zZXEsCi0gICAgICAgICAgICAgICAgICAgICAgICBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgICAgIHJldHVybiBDbGFzc0RlZihjbGFzc25hbWUsIE5VTEwsIE5VTEwsIHMsIGRlY29yYXRvcl9zZXEsIExJTkVOTyhuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgfQogCiAgICAgaWYgKFRZUEUoQ0hJTEQobiwgMykpID09IFJQQVIpIHsgLyogY2xhc3MgTkFNRSAnKCcgJyknICc6JyBzdWl0ZSAqLwpAQCAtMzUyNyw4ICszNzc2LDggQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgY2xhc3NuYW1lLCBDSElMRChuLCAzKSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmV0dXJuIENsYXNzRGVmKGNsYXNzbmFtZSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgcywgZGVjb3JhdG9yX3NlcSwKLSAgICAgICAgICAgICAgICAgICAgICAgIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICAgICAgcmV0dXJuIENsYXNzRGVmKGNsYXNzbmFtZSwgTlVMTCwgTlVMTCwgcywgZGVjb3JhdG9yX3NlcSwgTElORU5PKG4pLAorICAgICAgICAgICAgICAgICAgICAgICAgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKICAgICB9CiAKICAgICAvKiBjbGFzcyBOQU1FICcoJyBhcmdsaXN0ICcpJyAnOicgc3VpdGUgKi8KQEAgLTM1NTMsOCArMzgwMiw3IEBACiAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGNsYXNzbmFtZSwgQ0hJTEQobiwgMSksIDApKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBDbGFzc0RlZihjbGFzc25hbWUsIGNhbGwtPnYuQ2FsbC5hcmdzLCBjYWxsLT52LkNhbGwua2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgIGNhbGwtPnYuQ2FsbC5zdGFyYXJncywgY2FsbC0+di5DYWxsLmt3YXJncywgcywKKyAgICByZXR1cm4gQ2xhc3NEZWYoY2xhc3NuYW1lLCBjYWxsLT52LkNhbGwuYXJncywgY2FsbC0+di5DYWxsLmtleXdvcmRzLCBzLAogICAgICAgICAgICAgICAgICAgICBkZWNvcmF0b3Jfc2VxLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiB9CiAKQEAgLTM2MDAsNyArMzg0OCw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBjb21wb3VuZF9zdG10OiBpZl9zdG10IHwgd2hpbGVfc3RtdCB8IGZvcl9zdG10IHwgdHJ5X3N0bXQKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZiB8IGNsYXNzZGVmIHwgZGVjb3JhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmNkZWYgfCBjbGFzc2RlZiB8IGRlY29yYXRlZCB8IGFzeW5jX3N0bXQKICAgICAgICAgKi8KICAgICAgICAgbm9kZSAqY2ggPSBDSElMRChuLCAwKTsKICAgICAgICAgUkVRKG4sIGNvbXBvdW5kX3N0bXQpOwpAQCAtMzYxMCwxNyArMzg1OCwxOSBAQAogICAgICAgICAgICAgY2FzZSB3aGlsZV9zdG10OgogICAgICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX3doaWxlX3N0bXQoYywgY2gpOwogICAgICAgICAgICAgY2FzZSBmb3Jfc3RtdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9mb3Jfc3RtdChjLCBjaCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3JfZm9yX3N0bXQoYywgY2gsIDApOwogICAgICAgICAgICAgY2FzZSB0cnlfc3RtdDoKICAgICAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl90cnlfc3RtdChjLCBjaCk7CiAgICAgICAgICAgICBjYXNlIHdpdGhfc3RtdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl93aXRoX3N0bXQoYywgY2gpOworICAgICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX3dpdGhfc3RtdChjLCBjaCwgMCk7CiAgICAgICAgICAgICBjYXNlIGZ1bmNkZWY6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3JfZnVuY2RlZihjLCBjaCwgTlVMTCk7CiAgICAgICAgICAgICBjYXNlIGNsYXNzZGVmOgogICAgICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2NsYXNzZGVmKGMsIGNoLCBOVUxMKTsKICAgICAgICAgICAgIGNhc2UgZGVjb3JhdGVkOgogICAgICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2RlY29yYXRlZChjLCBjaCk7CisgICAgICAgICAgICBjYXNlIGFzeW5jX3N0bXQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3JfYXN5bmNfc3RtdChjLCBjaCk7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaGFuZGxlZCBzbWFsbF9zdG10OiBUWVBFPSVkIE5DSD0lZFxuIiwKZGlmZiAtLWdpdCBhL1B5dGhvbi9ibHRpbm1vZHVsZS5jIGIvUHl0aG9uL2JsdGlubW9kdWxlLmMKaW5kZXggNTMwMDllMy4uYTA2ZWY2MSAxMDA2NDQKLS0tIGEvUHl0aG9uL2JsdGlubW9kdWxlLmMKKysrIGIvUHl0aG9uL2JsdGlubW9kdWxlLmMKQEAgLTQ2LDEzICs0NiwxNiBAQAogX1B5X0lERU5USUZJRVIoc3Rkb3V0KTsKIF9QeV9JREVOVElGSUVSKHN0ZGVycik7CiAKKyNpbmNsdWRlICJjbGluaWMvYmx0aW5tb2R1bGUuYy5oIgorCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCB3YWl0aW5nIGZvciAqYXJncyBzdXBwb3J0ICovCiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9fX2J1aWxkX2NsYXNzX18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeU9iamVjdCAqZnVuYywgKm5hbWUsICpiYXNlcywgKm1rdywgKm1ldGEsICp3aW5uZXIsICpwcmVwLCAqbnMsICpjZWxsOwogICAgIFB5T2JqZWN0ICpjbHMgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbmFyZ3M7Ci0gICAgaW50IGlzY2xhc3M7CisgICAgaW50IGlzY2xhc3MgPSAwOyAgIC8qIGluaXRpYWxpemUgdG8gcHJldmVudCBnY2Mgd2FybmluZyAqLwogCiAgICAgYXNzZXJ0KGFyZ3MgIT0gTlVMTCk7CiAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7CkBAIC0yMjksMjUgKzIzMiw0MiBAQAogaXMgdGhlIG51bWJlciBvZiBwYXJlbnQgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IG1vZHVsZS4iKTsKIAogCisvKltjbGluaWMgaW5wdXRdCithYnMgYXMgYnVpbHRpbl9hYnMKKworICAgIHg6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgYXJndW1lbnQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2FicyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2FicyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqeCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ODMzMDQ3YzQ5M2VjZWEyIGlucHV0PWJlZDRjYTE0ZTI5YzIwZDFdKi8KIHsKLSAgICByZXR1cm4gUHlOdW1iZXJfQWJzb2x1dGUodik7CisgICAgcmV0dXJuIFB5TnVtYmVyX0Fic29sdXRlKHgpOwogfQogCi1QeURvY19TVFJWQVIoYWJzX2RvYywKLSJhYnMobnVtYmVyKSAtPiBudW1iZXJcblwKLVxuXAotUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgYXJndW1lbnQuIik7CisvKltjbGluaWMgaW5wdXRdCithbGwgYXMgYnVpbHRpbl9hbGwKKworICAgIGl0ZXJhYmxlOiBvYmplY3QKKyAgICAvCisKK1JldHVybiBUcnVlIGlmIGJvb2woeCkgaXMgVHJ1ZSBmb3IgYWxsIHZhbHVlcyB4IGluIHRoZSBpdGVyYWJsZS4KKworSWYgdGhlIGl0ZXJhYmxlIGlzIGVtcHR5LCByZXR1cm4gVHJ1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fYWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKK2J1aWx0aW5fYWxsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICppdGVyYWJsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wODllNmQxYjdiZGUyN2IxIGlucHV0PTFhN2M1ZDFiYzM0MzhhMjFdKi8KIHsKICAgICBQeU9iamVjdCAqaXQsICppdGVtOwogICAgIFB5T2JqZWN0ICooKml0ZXJuZXh0KShQeU9iamVjdCAqKTsKICAgICBpbnQgY21wOwogCi0gICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKHYpOworICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7CiAgICAgaWYgKGl0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGl0ZXJuZXh0ID0gKlB5X1RZUEUoaXQpLT50cF9pdGVybmV4dDsKQEAgLTI3NywyMCArMjk3LDI2IEBACiAgICAgUHlfUkVUVVJOX1RSVUU7CiB9CiAKLVB5RG9jX1NUUlZBUihhbGxfZG9jLAotImFsbChpdGVyYWJsZSkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gVHJ1ZSBpZiBib29sKHgpIGlzIFRydWUgZm9yIGFsbCB2YWx1ZXMgeCBpbiB0aGUgaXRlcmFibGUuXG5cCi1JZiB0aGUgaXRlcmFibGUgaXMgZW1wdHksIHJldHVybiBUcnVlLiIpOworLypbY2xpbmljIGlucHV0XQorYW55IGFzIGJ1aWx0aW5fYW55CisKKyAgICBpdGVyYWJsZTogb2JqZWN0CisgICAgLworCitSZXR1cm4gVHJ1ZSBpZiBib29sKHgpIGlzIFRydWUgZm9yIGFueSB4IGluIHRoZSBpdGVyYWJsZS4KKworSWYgdGhlIGl0ZXJhYmxlIGlzIGVtcHR5LCByZXR1cm4gRmFsc2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2FueShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2FueShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqaXRlcmFibGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWJlOTk0YjJjMjMwNzQ5MiBpbnB1dD00MWQ3NDUxYzIzMzg0ZjI0XSovCiB7CiAgICAgUHlPYmplY3QgKml0LCAqaXRlbTsKICAgICBQeU9iamVjdCAqKCppdGVybmV4dCkoUHlPYmplY3QgKik7CiAgICAgaW50IGNtcDsKIAotICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcih2KTsKKyAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOwogICAgIGlmIChpdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpdGVybmV4dCA9ICpQeV9UWVBFKGl0KS0+dHBfaXRlcm5leHQ7CkBAIC0zMjAsNTYgKzM0Niw2NyBAQAogICAgIFB5X1JFVFVSTl9GQUxTRTsKIH0KIAotUHlEb2NfU1RSVkFSKGFueV9kb2MsCi0iYW55KGl0ZXJhYmxlKSAtPiBib29sXG5cCi1cblwKLVJldHVybiBUcnVlIGlmIGJvb2woeCkgaXMgVHJ1ZSBmb3IgYW55IHggaW4gdGhlIGl0ZXJhYmxlLlxuXAotSWYgdGhlIGl0ZXJhYmxlIGlzIGVtcHR5LCByZXR1cm4gRmFsc2UuIik7CisvKltjbGluaWMgaW5wdXRdCithc2NpaSBhcyBidWlsdGluX2FzY2lpCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworUmV0dXJuIGFuIEFTQ0lJLW9ubHkgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LgorCitBcyByZXByKCksIHJldHVybiBhIHN0cmluZyBjb250YWluaW5nIGEgcHJpbnRhYmxlIHJlcHJlc2VudGF0aW9uIG9mIGFuCitvYmplY3QsIGJ1dCBlc2NhcGUgdGhlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgcmV0dXJuZWQgYnkKK3JlcHIoKSB1c2luZyBcXHgsIFxcdSBvciBcXFUgZXNjYXBlcy4gVGhpcyBnZW5lcmF0ZXMgYSBzdHJpbmcgc2ltaWxhcgordG8gdGhhdCByZXR1cm5lZCBieSByZXByKCkgaW4gUHl0aG9uIDIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2FzY2lpKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKK2J1aWx0aW5fYXNjaWkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNGU4NjJjNDhhZjJhOTMzIGlucHV0PTRjNjI3MzJlMWIzYTNjYzldKi8KIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQVNDSUkodik7CisgICAgcmV0dXJuIFB5T2JqZWN0X0FTQ0lJKG9iaik7CiB9CiAKLVB5RG9jX1NUUlZBUihhc2NpaV9kb2MsCi0iYXNjaWkob2JqZWN0KSAtPiBzdHJpbmdcblwKLVxuXAotQXMgcmVwcigpLCByZXR1cm4gYSBzdHJpbmcgY29udGFpbmluZyBhIHByaW50YWJsZSByZXByZXNlbnRhdGlvbiBvZiBhblxuXAotb2JqZWN0LCBidXQgZXNjYXBlIHRoZSBub24tQVNDSUkgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIHJldHVybmVkIGJ5XG5cCi1yZXByKCkgdXNpbmcgXFx4LCBcXHUgb3IgXFxVIGVzY2FwZXMuICBUaGlzIGdlbmVyYXRlcyBhIHN0cmluZyBzaW1pbGFyXG5cCi10byB0aGF0IHJldHVybmVkIGJ5IHJlcHIoKSBpbiBQeXRob24gMi4iKTsKIAorLypbY2xpbmljIGlucHV0XQorYmluIGFzIGJ1aWx0aW5fYmluCisKKyAgICBudW1iZXI6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlci4KKworICAgPj4+IGJpbigyNzk2MjAyKQorICAgJzBiMTAxMDEwMTAxMDEwMTAxMDEwMTAxMCcKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fYmluKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKK2J1aWx0aW5fYmluKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpudW1iZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjVlZTI2YzZjZjNiYmI1NCBpbnB1dD01M2Y4YTAyNjRiYWNhZjkwXSovCiB7Ci0gICAgcmV0dXJuIFB5TnVtYmVyX1RvQmFzZSh2LCAyKTsKKyAgICByZXR1cm4gUHlOdW1iZXJfVG9CYXNlKG51bWJlciwgMik7CiB9CiAKLVB5RG9jX1NUUlZBUihiaW5fZG9jLAotImJpbihudW1iZXIpIC0+IHN0cmluZ1xuXAotXG5cCi1SZXR1cm4gdGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLlxuXAotXG5cCi0gICA+Pj4gYmluKDI3OTYyMDIpXG5cCi0gICAnMGIxMDEwMTAxMDEwMTAxMDEwMTAxMDEwJ1xuXAotIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NhbGxhYmxlIGFzIGJ1aWx0aW5fY2FsbGFibGUKKworICAgIG9iajogb2JqZWN0CisgICAgLworCitSZXR1cm4gd2hldGhlciB0aGUgb2JqZWN0IGlzIGNhbGxhYmxlIChpLmUuLCBzb21lIGtpbmQgb2YgZnVuY3Rpb24pLgorCitOb3RlIHRoYXQgY2xhc3NlcyBhcmUgY2FsbGFibGUsIGFzIGFyZSBpbnN0YW5jZXMgb2YgY2xhc3NlcyB3aXRoIGEKK19fY2FsbF9fKCkgbWV0aG9kLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9jYWxsYWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2NhbGxhYmxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjRkZjJjZTkyMzY0YjY1NiBpbnB1dD0xNDIzYmFiOTljYzQxZjU4XSovCiB7Ci0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZylQeUNhbGxhYmxlX0NoZWNrKHYpKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKVB5Q2FsbGFibGVfQ2hlY2sob2JqKSk7CiB9CiAKLVB5RG9jX1NUUlZBUihjYWxsYWJsZV9kb2MsCi0iY2FsbGFibGUob2JqZWN0KSAtPiBib29sXG5cCi1cblwKLVJldHVybiB3aGV0aGVyIHRoZSBvYmplY3QgaXMgY2FsbGFibGUgKGkuZS4sIHNvbWUga2luZCBvZiBmdW5jdGlvbikuXG5cCi1Ob3RlIHRoYXQgY2xhc3NlcyBhcmUgY2FsbGFibGUsIGFzIGFyZSBpbnN0YW5jZXMgb2YgY2xhc3NlcyB3aXRoIGFcblwKLV9fY2FsbF9fKCkgbWV0aG9kLiIpOwotCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECkBAIC01MjQsNDAgKzU2MSw0MiBAQAogfTsKIAogCisvKltjbGluaWMgaW5wdXRdCitmb3JtYXQgYXMgYnVpbHRpbl9mb3JtYXQKKworICAgIHZhbHVlOiBvYmplY3QKKyAgICBmb3JtYXRfc3BlYzogdW5pY29kZShjX2RlZmF1bHQ9Ik5VTEwiKSA9ICcnCisgICAgLworCitSZXR1cm4gdmFsdWUuX19mb3JtYXRfXyhmb3JtYXRfc3BlYykKKworZm9ybWF0X3NwZWMgZGVmYXVsdHMgdG8gdGhlIGVtcHR5IHN0cmluZworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9mb3JtYXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9mb3JtYXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MzQxZmQ3OGE1ZjAxNzY0IGlucHV0PTYzMjVlNzUxYTFiMjliODZdKi8KIHsKLSAgICBQeU9iamVjdCAqdmFsdWU7Ci0gICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjID0gTlVMTDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xVOmZvcm1hdCIsICZ2YWx1ZSwgJmZvcm1hdF9zcGVjKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXR1cm4gUHlPYmplY3RfRm9ybWF0KHZhbHVlLCBmb3JtYXRfc3BlYyk7CiB9CiAKLVB5RG9jX1NUUlZBUihmb3JtYXRfZG9jLAotImZvcm1hdCh2YWx1ZVssIGZvcm1hdF9zcGVjXSkgLT4gc3RyaW5nXG5cCi1cblwKLVJldHVybnMgdmFsdWUuX19mb3JtYXRfXyhmb3JtYXRfc3BlYylcblwKLWZvcm1hdF9zcGVjIGRlZmF1bHRzIHRvIFwiXCIiKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2NociBhcyBidWlsdGluX2NocgorCisgICAgaTogaW50CisgICAgLworCitSZXR1cm4gYSBVbmljb2RlIHN0cmluZyBvZiBvbmUgY2hhcmFjdGVyIHdpdGggb3JkaW5hbCBpOyAwIDw9IGkgPD0gMHgxMGZmZmYuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2NocihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitidWlsdGluX2Nocl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBpKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY3ZmU0ZDg3ZTY5MGYzNzMgaW5wdXQ9M2Y2MDRlZjQ1YTcwNzUwZF0qLwogewotICAgIGludCB4OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmNociIsICZ4KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKHgpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9yZGluYWwoaSk7CiB9CiAKLVB5RG9jX1NUUlZBUihjaHJfZG9jLAotImNocihpKSAtPiBVbmljb2RlIGNoYXJhY3RlclxuXAotXG5cCi1SZXR1cm4gYSBVbmljb2RlIHN0cmluZyBvZiBvbmUgY2hhcmFjdGVyIHdpdGggb3JkaW5hbCBpOyAwIDw9IGkgPD0gMHgxMGZmZmYuIik7Ci0KIAogc3RhdGljIGNvbnN0IGNoYXIgKgogc291cmNlX2FzX3N0cmluZyhQeU9iamVjdCAqY21kLCBjb25zdCBjaGFyICpmdW5jbmFtZSwgY29uc3QgY2hhciAqd2hhdCwgUHlDb21waWxlckZsYWdzICpjZiwgUHlPYmplY3QgKipjbWRfY29weSkKQEAgLTU5OSw4ICs2MzgsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoc3RybGVuKHN0cikgIT0gc2l6ZSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgIGlmIChzdHJsZW4oc3RyKSAhPSAoc2l6ZV90KXNpemUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIGNvZGUgc3RyaW5nIGNhbm5vdCBjb250YWluIG51bGwgYnl0ZXMiKTsKICAgICAgICAgUHlfQ0xFQVIoKmNtZF9jb3B5KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02MDgsMzUgKzY0Nyw0NyBAQAogICAgIHJldHVybiBzdHI7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NvbXBpbGUgYXMgYnVpbHRpbl9jb21waWxlCisKKyAgICBzb3VyY2U6IG9iamVjdAorICAgIGZpbGVuYW1lOiBvYmplY3QoY29udmVydGVyPSJQeVVuaWNvZGVfRlNEZWNvZGVyIikKKyAgICBtb2RlOiBzdHIKKyAgICBmbGFnczogaW50ID0gMAorICAgIGRvbnRfaW5oZXJpdDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICBvcHRpbWl6ZTogaW50ID0gLTEKKworQ29tcGlsZSBzb3VyY2UgaW50byBhIGNvZGUgb2JqZWN0IHRoYXQgY2FuIGJlIGV4ZWN1dGVkIGJ5IGV4ZWMoKSBvciBldmFsKCkuCisKK1RoZSBzb3VyY2UgY29kZSBtYXkgcmVwcmVzZW50IGEgUHl0aG9uIG1vZHVsZSwgc3RhdGVtZW50IG9yIGV4cHJlc3Npb24uCitUaGUgZmlsZW5hbWUgd2lsbCBiZSB1c2VkIGZvciBydW4tdGltZSBlcnJvciBtZXNzYWdlcy4KK1RoZSBtb2RlIG11c3QgYmUgJ2V4ZWMnIHRvIGNvbXBpbGUgYSBtb2R1bGUsICdzaW5nbGUnIHRvIGNvbXBpbGUgYQorc2luZ2xlIChpbnRlcmFjdGl2ZSkgc3RhdGVtZW50LCBvciAnZXZhbCcgdG8gY29tcGlsZSBhbiBleHByZXNzaW9uLgorVGhlIGZsYWdzIGFyZ3VtZW50LCBpZiBwcmVzZW50LCBjb250cm9scyB3aGljaCBmdXR1cmUgc3RhdGVtZW50cyBpbmZsdWVuY2UKK3RoZSBjb21waWxhdGlvbiBvZiB0aGUgY29kZS4KK1RoZSBkb250X2luaGVyaXQgYXJndW1lbnQsIGlmIHRydWUsIHN0b3BzIHRoZSBjb21waWxhdGlvbiBpbmhlcml0aW5nCit0aGUgZWZmZWN0cyBvZiBhbnkgZnV0dXJlIHN0YXRlbWVudHMgaW4gZWZmZWN0IGluIHRoZSBjb2RlIGNhbGxpbmcKK2NvbXBpbGU7IGlmIGFic2VudCBvciBmYWxzZSB0aGVzZSBzdGF0ZW1lbnRzIGRvIGluZmx1ZW5jZSB0aGUgY29tcGlsYXRpb24sCitpbiBhZGRpdGlvbiB0byBhbnkgZmVhdHVyZXMgZXhwbGljaXRseSBzcGVjaWZpZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2NvbXBpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK2J1aWx0aW5fY29tcGlsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKm1vZGUsIGludCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgIGludCBkb250X2luaGVyaXQsIGludCBvcHRpbWl6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMTg4MTc2MmMxYmI5MGM0IGlucHV0PTlkNTNlOGNmYjNjODY0MTRdKi8KIHsKLSAgICBQeU9iamVjdCAqY21kX2NvcHk7CisgICAgUHlPYmplY3QgKnNvdXJjZV9jb3B5OwogICAgIGNvbnN0IGNoYXIgKnN0cjsKLSAgICBQeU9iamVjdCAqZmlsZW5hbWU7Ci0gICAgY2hhciAqc3RhcnRzdHI7Ci0gICAgaW50IG1vZGUgPSAtMTsKLSAgICBpbnQgZG9udF9pbmhlcml0ID0gMDsKLSAgICBpbnQgc3VwcGxpZWRfZmxhZ3MgPSAwOwotICAgIGludCBvcHRpbWl6ZSA9IC0xOworICAgIGludCBjb21waWxlX21vZGUgPSAtMTsKICAgICBpbnQgaXNfYXN0OwogICAgIFB5Q29tcGlsZXJGbGFncyBjZjsKLSAgICBQeU9iamVjdCAqY21kOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic291cmNlIiwgImZpbGVuYW1lIiwgIm1vZGUiLCAiZmxhZ3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9udF9pbmhlcml0IiwgIm9wdGltaXplIiwgTlVMTH07CiAgICAgaW50IHN0YXJ0W10gPSB7UHlfZmlsZV9pbnB1dCwgUHlfZXZhbF9pbnB1dCwgUHlfc2luZ2xlX2lucHV0fTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk9PJnN8aWlpOmNvbXBpbGUiLCAga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjbWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTRGVjb2RlciwgJmZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHN0ciwgJnN1cHBsaWVkX2ZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkb250X2luaGVyaXQsICZvcHRpbWl6ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGNmLmNmX2ZsYWdzID0gZmxhZ3MgfCBQeUNGX1NPVVJDRV9JU19VVEY4OwogCi0gICAgY2YuY2ZfZmxhZ3MgPSBzdXBwbGllZF9mbGFncyB8IFB5Q0ZfU09VUkNFX0lTX1VURjg7Ci0KLSAgICBpZiAoc3VwcGxpZWRfZmxhZ3MgJgorICAgIGlmIChmbGFncyAmCiAgICAgICAgIH4oUHlDRl9NQVNLIHwgUHlDRl9NQVNLX09CU09MRVRFIHwgUHlDRl9ET05UX0lNUExZX0RFREVOVCB8IFB5Q0ZfT05MWV9BU1QpKQogICAgIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCkBAIC02NTUsMjUgKzcwNiwyNSBAQAogICAgICAgICBQeUV2YWxfTWVyZ2VDb21waWxlckZsYWdzKCZjZik7CiAgICAgfQogCi0gICAgaWYgKHN0cmNtcChzdGFydHN0ciwgImV4ZWMiKSA9PSAwKQotICAgICAgICBtb2RlID0gMDsKLSAgICBlbHNlIGlmIChzdHJjbXAoc3RhcnRzdHIsICJldmFsIikgPT0gMCkKLSAgICAgICAgbW9kZSA9IDE7Ci0gICAgZWxzZSBpZiAoc3RyY21wKHN0YXJ0c3RyLCAic2luZ2xlIikgPT0gMCkKLSAgICAgICAgbW9kZSA9IDI7CisgICAgaWYgKHN0cmNtcChtb2RlLCAiZXhlYyIpID09IDApCisgICAgICAgIGNvbXBpbGVfbW9kZSA9IDA7CisgICAgZWxzZSBpZiAoc3RyY21wKG1vZGUsICJldmFsIikgPT0gMCkKKyAgICAgICAgY29tcGlsZV9tb2RlID0gMTsKKyAgICBlbHNlIGlmIChzdHJjbXAobW9kZSwgInNpbmdsZSIpID09IDApCisgICAgICAgIGNvbXBpbGVfbW9kZSA9IDI7CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBpbGUoKSBhcmcgMyBtdXN0IGJlICdleGVjJywgJ2V2YWwnIG9yICdzaW5nbGUnIik7CisgICAgICAgICAgICAgICAgICAgICAgICAiY29tcGlsZSgpIG1vZGUgbXVzdCBiZSAnZXhlYycsICdldmFsJyBvciAnc2luZ2xlJyIpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAotICAgIGlzX2FzdCA9IFB5QVNUX0NoZWNrKGNtZCk7CisgICAgaXNfYXN0ID0gUHlBU1RfQ2hlY2soc291cmNlKTsKICAgICBpZiAoaXNfYXN0ID09IC0xKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIGlmIChpc19hc3QpIHsKLSAgICAgICAgaWYgKHN1cHBsaWVkX2ZsYWdzICYgUHlDRl9PTkxZX0FTVCkgewotICAgICAgICAgICAgUHlfSU5DUkVGKGNtZCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBjbWQ7CisgICAgICAgIGlmIChmbGFncyAmIFB5Q0ZfT05MWV9BU1QpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihzb3VyY2UpOworICAgICAgICAgICAgcmVzdWx0ID0gc291cmNlOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmE7CkBAIC02ODIsNyArNzMzLDcgQEAKICAgICAgICAgICAgIGFyZW5hID0gUHlBcmVuYV9OZXcoKTsKICAgICAgICAgICAgIGlmIChhcmVuYSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBtb2QgPSBQeUFTVF9vYmoybW9kKGNtZCwgYXJlbmEsIG1vZGUpOworICAgICAgICAgICAgbW9kID0gUHlBU1Rfb2JqMm1vZChzb3VyY2UsIGFyZW5hLCBjb21waWxlX21vZGUpOwogICAgICAgICAgICAgaWYgKG1vZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlBcmVuYV9GcmVlKGFyZW5hKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtNjk4LDEyICs3NDksMTIgQEAKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIH0KIAotICAgIHN0ciA9IHNvdXJjZV9hc19zdHJpbmcoY21kLCAiY29tcGlsZSIsICJzdHJpbmcsIGJ5dGVzIG9yIEFTVCIsICZjZiwgJmNtZF9jb3B5KTsKKyAgICBzdHIgPSBzb3VyY2VfYXNfc3RyaW5nKHNvdXJjZSwgImNvbXBpbGUiLCAic3RyaW5nLCBieXRlcyBvciBBU1QiLCAmY2YsICZzb3VyY2VfY29weSk7CiAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgcmVzdWx0ID0gUHlfQ29tcGlsZVN0cmluZ09iamVjdChzdHIsIGZpbGVuYW1lLCBzdGFydFttb2RlXSwgJmNmLCBvcHRpbWl6ZSk7Ci0gICAgUHlfWERFQ1JFRihjbWRfY29weSk7CisgICAgcmVzdWx0ID0gUHlfQ29tcGlsZVN0cmluZ09iamVjdChzdHIsIGZpbGVuYW1lLCBzdGFydFtjb21waWxlX21vZGVdLCAmY2YsIG9wdGltaXplKTsKKyAgICBQeV9YREVDUkVGKHNvdXJjZV9jb3B5KTsKICAgICBnb3RvIGZpbmFsbHk7CiAKIGVycm9yOgpAQCAtNzEzLDIxICs3NjQsNyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihjb21waWxlX2RvYywKLSJjb21waWxlKHNvdXJjZSwgZmlsZW5hbWUsIG1vZGVbLCBmbGFnc1ssIGRvbnRfaW5oZXJpdF1dKSAtPiBjb2RlIG9iamVjdFxuXAotXG5cCi1Db21waWxlIHRoZSBzb3VyY2UgKGEgUHl0aG9uIG1vZHVsZSwgc3RhdGVtZW50IG9yIGV4cHJlc3Npb24pXG5cCi1pbnRvIGEgY29kZSBvYmplY3QgdGhhdCBjYW4gYmUgZXhlY3V0ZWQgYnkgZXhlYygpIG9yIGV2YWwoKS5cblwKLVRoZSBmaWxlbmFtZSB3aWxsIGJlIHVzZWQgZm9yIHJ1bi10aW1lIGVycm9yIG1lc3NhZ2VzLlxuXAotVGhlIG1vZGUgbXVzdCBiZSAnZXhlYycgdG8gY29tcGlsZSBhIG1vZHVsZSwgJ3NpbmdsZScgdG8gY29tcGlsZSBhXG5cCi1zaW5nbGUgKGludGVyYWN0aXZlKSBzdGF0ZW1lbnQsIG9yICdldmFsJyB0byBjb21waWxlIGFuIGV4cHJlc3Npb24uXG5cCi1UaGUgZmxhZ3MgYXJndW1lbnQsIGlmIHByZXNlbnQsIGNvbnRyb2xzIHdoaWNoIGZ1dHVyZSBzdGF0ZW1lbnRzIGluZmx1ZW5jZVxuXAotdGhlIGNvbXBpbGF0aW9uIG9mIHRoZSBjb2RlLlxuXAotVGhlIGRvbnRfaW5oZXJpdCBhcmd1bWVudCwgaWYgbm9uLXplcm8sIHN0b3BzIHRoZSBjb21waWxhdGlvbiBpbmhlcml0aW5nXG5cCi10aGUgZWZmZWN0cyBvZiBhbnkgZnV0dXJlIHN0YXRlbWVudHMgaW4gZWZmZWN0IGluIHRoZSBjb2RlIGNhbGxpbmdcblwKLWNvbXBpbGU7IGlmIGFic2VudCBvciB6ZXJvIHRoZXNlIHN0YXRlbWVudHMgZG8gaW5mbHVlbmNlIHRoZSBjb21waWxhdGlvbixcblwKLWluIGFkZGl0aW9uIHRvIGFueSBmZWF0dXJlcyBleHBsaWNpdGx5IHNwZWNpZmllZC4iKTsKLQorLyogQUM6IGNhbm5vdCBjb252ZXJ0IHlldCwgYXMgbmVlZHMgUEVQIDQ1NyBncm91cCBzdXBwb3J0IGluIGluc3BlY3QgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC03NTIsMzIgKzc4OSw1MCBAQAogIiAgZm9yIGFueSBvdGhlciBvYmplY3Q6IGl0cyBhdHRyaWJ1dGVzLCBpdHMgY2xhc3MncyBhdHRyaWJ1dGVzLCBhbmRcbiIKICIgICAgcmVjdXJzaXZlbHkgdGhlIGF0dHJpYnV0ZXMgb2YgaXRzIGNsYXNzJ3MgYmFzZSBjbGFzc2VzLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9kaXZtb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICp2LCAqdzsKKy8qW2NsaW5pYyBpbnB1dF0KK2Rpdm1vZCBhcyBidWlsdGluX2Rpdm1vZAogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZGl2bW9kIiwgMiwgMiwgJnYsICZ3KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5TnVtYmVyX0Rpdm1vZCh2LCB3KTsKKyAgICB4OiBvYmplY3QKKyAgICB5OiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgdHVwbGUgKCh4LXgleSkveSwgeCV5KS4gIEludmFyaWFudDogZGl2KnkgKyBtb2QgPT0geC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZGl2bW9kX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKngsIFB5T2JqZWN0ICp5KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlhZDAwNzYxMjBlYmY5YWMgaW5wdXQ9N2ZkYjE1ZjhhOTdhNWZlN10qLworeworICAgIHJldHVybiBQeU51bWJlcl9EaXZtb2QoeCwgeSk7CiB9CiAKLVB5RG9jX1NUUlZBUihkaXZtb2RfZG9jLAotImRpdm1vZCh4LCB5KSAtPiAoZGl2LCBtb2QpXG5cCi1cblwKLVJldHVybiB0aGUgdHVwbGUgKCh4LXgleSkveSwgeCV5KS4gIEludmFyaWFudDogZGl2KnkgKyBtb2QgPT0geC4iKTsKIAorLypbY2xpbmljIGlucHV0XQorZXZhbCBhcyBidWlsdGluX2V2YWwKKworICAgIHNvdXJjZTogb2JqZWN0CisgICAgZ2xvYmFsczogb2JqZWN0ID0gTm9uZQorICAgIGxvY2Fsczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworRXZhbHVhdGUgdGhlIGdpdmVuIHNvdXJjZSBpbiB0aGUgY29udGV4dCBvZiBnbG9iYWxzIGFuZCBsb2NhbHMuCisKK1RoZSBzb3VyY2UgbWF5IGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhIFB5dGhvbiBleHByZXNzaW9uCitvciBhIGNvZGUgb2JqZWN0IGFzIHJldHVybmVkIGJ5IGNvbXBpbGUoKS4KK1RoZSBnbG9iYWxzIG11c3QgYmUgYSBkaWN0aW9uYXJ5IGFuZCBsb2NhbHMgY2FuIGJlIGFueSBtYXBwaW5nLAorZGVmYXVsdGluZyB0byB0aGUgY3VycmVudCBnbG9iYWxzIGFuZCBsb2NhbHMuCitJZiBvbmx5IGdsb2JhbHMgaXMgZ2l2ZW4sIGxvY2FscyBkZWZhdWx0cyB0byBpdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fZXZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitidWlsdGluX2V2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc291cmNlLCBQeU9iamVjdCAqZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2NhbHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzI4NDUwMWZiN2I0ZDY2NiBpbnB1dD0xMWVlNzE4YTg2NDBlNTI3XSovCiB7Ci0gICAgUHlPYmplY3QgKmNtZCwgKnJlc3VsdCwgKmNtZF9jb3B5OwotICAgIFB5T2JqZWN0ICpnbG9iYWxzID0gUHlfTm9uZSwgKmxvY2FscyA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKnJlc3VsdCwgKnNvdXJjZV9jb3B5OwogICAgIGNvbnN0IGNoYXIgKnN0cjsKICAgICBQeUNvbXBpbGVyRmxhZ3MgY2Y7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJldmFsIiwgMSwgMywgJmNtZCwgJmdsb2JhbHMsICZsb2NhbHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobG9jYWxzICE9IFB5X05vbmUgJiYgIVB5TWFwcGluZ19DaGVjayhsb2NhbHMpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJsb2NhbHMgbXVzdCBiZSBhIG1hcHBpbmciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC04MTIsMTcgKzg2NywxNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKFB5Q29kZV9DaGVjayhjbWQpKSB7Ci0gICAgICAgIGlmIChQeUNvZGVfR2V0TnVtRnJlZSgoUHlDb2RlT2JqZWN0ICopY21kKSA+IDApIHsKKyAgICBpZiAoUHlDb2RlX0NoZWNrKHNvdXJjZSkpIHsKKyAgICAgICAgaWYgKFB5Q29kZV9HZXROdW1GcmVlKChQeUNvZGVPYmplY3QgKilzb3VyY2UpID4gMCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgImNvZGUgb2JqZWN0IHBhc3NlZCB0byBldmFsKCkgbWF5IG5vdCBjb250YWluIGZyZWUgdmFyaWFibGVzIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gUHlFdmFsX0V2YWxDb2RlKGNtZCwgZ2xvYmFscywgbG9jYWxzKTsKKyAgICAgICAgcmV0dXJuIFB5RXZhbF9FdmFsQ29kZShzb3VyY2UsIGdsb2JhbHMsIGxvY2Fscyk7CiAgICAgfQogCiAgICAgY2YuY2ZfZmxhZ3MgPSBQeUNGX1NPVVJDRV9JU19VVEY4OwotICAgIHN0ciA9IHNvdXJjZV9hc19zdHJpbmcoY21kLCAiZXZhbCIsICJzdHJpbmcsIGJ5dGVzIG9yIGNvZGUiLCAmY2YsICZjbWRfY29weSk7CisgICAgc3RyID0gc291cmNlX2FzX3N0cmluZyhzb3VyY2UsICJldmFsIiwgInN0cmluZywgYnl0ZXMgb3IgY29kZSIsICZjZiwgJnNvdXJjZV9jb3B5KTsKICAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC04MzEsMjggKzg4NiwzMyBAQAogCiAgICAgKHZvaWQpUHlFdmFsX01lcmdlQ29tcGlsZXJGbGFncygmY2YpOwogICAgIHJlc3VsdCA9IFB5UnVuX1N0cmluZ0ZsYWdzKHN0ciwgUHlfZXZhbF9pbnB1dCwgZ2xvYmFscywgbG9jYWxzLCAmY2YpOwotICAgIFB5X1hERUNSRUYoY21kX2NvcHkpOworICAgIFB5X1hERUNSRUYoc291cmNlX2NvcHkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihldmFsX2RvYywKLSJldmFsKHNvdXJjZVssIGdsb2JhbHNbLCBsb2NhbHNdXSkgLT4gdmFsdWVcblwKLVxuXAotRXZhbHVhdGUgdGhlIHNvdXJjZSBpbiB0aGUgY29udGV4dCBvZiBnbG9iYWxzIGFuZCBsb2NhbHMuXG5cCi1UaGUgc291cmNlIG1heSBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBQeXRob24gZXhwcmVzc2lvblxuXAotb3IgYSBjb2RlIG9iamVjdCBhcyByZXR1cm5lZCBieSBjb21waWxlKCkuXG5cCi1UaGUgZ2xvYmFscyBtdXN0IGJlIGEgZGljdGlvbmFyeSBhbmQgbG9jYWxzIGNhbiBiZSBhbnkgbWFwcGluZyxcblwKLWRlZmF1bHRpbmcgdG8gdGhlIGN1cnJlbnQgZ2xvYmFscyBhbmQgbG9jYWxzLlxuXAotSWYgb25seSBnbG9iYWxzIGlzIGdpdmVuLCBsb2NhbHMgZGVmYXVsdHMgdG8gaXQuXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2V4ZWMgYXMgYnVpbHRpbl9leGVjCisKKyAgICBzb3VyY2U6IG9iamVjdAorICAgIGdsb2JhbHM6IG9iamVjdCA9IE5vbmUKKyAgICBsb2NhbHM6IG9iamVjdCA9IE5vbmUKKyAgICAvCisKK0V4ZWN1dGUgdGhlIGdpdmVuIHNvdXJjZSBpbiB0aGUgY29udGV4dCBvZiBnbG9iYWxzIGFuZCBsb2NhbHMuCisKK1RoZSBzb3VyY2UgbWF5IGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBvbmUgb3IgbW9yZSBQeXRob24gc3RhdGVtZW50cworb3IgYSBjb2RlIG9iamVjdCBhcyByZXR1cm5lZCBieSBjb21waWxlKCkuCitUaGUgZ2xvYmFscyBtdXN0IGJlIGEgZGljdGlvbmFyeSBhbmQgbG9jYWxzIGNhbiBiZSBhbnkgbWFwcGluZywKK2RlZmF1bHRpbmcgdG8gdGhlIGN1cnJlbnQgZ2xvYmFscyBhbmQgbG9jYWxzLgorSWYgb25seSBnbG9iYWxzIGlzIGdpdmVuLCBsb2NhbHMgZGVmYXVsdHMgdG8gaXQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2V4ZWMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9leGVjX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnNvdXJjZSwgUHlPYmplY3QgKmdsb2JhbHMsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG9jYWxzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgzZDU3NGVmOWQ1ZDBiNDYgaW5wdXQ9MDFjYTNlMWMwMTY5MjgyOV0qLwogewogICAgIFB5T2JqZWN0ICp2OwotICAgIFB5T2JqZWN0ICpwcm9nLCAqZ2xvYmFscyA9IFB5X05vbmUsICpsb2NhbHMgPSBQeV9Ob25lOwotCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZXhlYyIsIDEsIDMsICZwcm9nLCAmZ2xvYmFscywgJmxvY2FscykpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKGdsb2JhbHMgPT0gUHlfTm9uZSkgewogICAgICAgICBnbG9iYWxzID0gUHlFdmFsX0dldEdsb2JhbHMoKTsKQEAgLTg3MSwxMyArOTMxLDEzIEBACiAgICAgICAgIGxvY2FscyA9IGdsb2JhbHM7CiAKICAgICBpZiAoIVB5RGljdF9DaGVjayhnbG9iYWxzKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiZXhlYygpIGFyZyAyIG11c3QgYmUgYSBkaWN0LCBub3QgJS4xMDBzIiwKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImV4ZWMoKSBnbG9iYWxzIG11c3QgYmUgYSBkaWN0LCBub3QgJS4xMDBzIiwKICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHMtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKCFQeU1hcHBpbmdfQ2hlY2sobG9jYWxzKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgImFyZyAzIG11c3QgYmUgYSBtYXBwaW5nIG9yIE5vbmUsIG5vdCAlLjEwMHMiLAorICAgICAgICAgICAgImxvY2FscyBtdXN0IGJlIGEgbWFwcGluZyBvciBOb25lLCBub3QgJS4xMDBzIiwKICAgICAgICAgICAgIGxvY2Fscy0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTg4NywyMyArOTQ3LDIzIEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoUHlDb2RlX0NoZWNrKHByb2cpKSB7Ci0gICAgICAgIGlmIChQeUNvZGVfR2V0TnVtRnJlZSgoUHlDb2RlT2JqZWN0ICopcHJvZykgPiAwKSB7CisgICAgaWYgKFB5Q29kZV9DaGVjayhzb3VyY2UpKSB7CisgICAgICAgIGlmIChQeUNvZGVfR2V0TnVtRnJlZSgoUHlDb2RlT2JqZWN0ICopc291cmNlKSA+IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgImNvZGUgb2JqZWN0IHBhc3NlZCB0byBleGVjKCkgbWF5IG5vdCAiCiAgICAgICAgICAgICAgICAgImNvbnRhaW4gZnJlZSB2YXJpYWJsZXMiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHYgPSBQeUV2YWxfRXZhbENvZGUocHJvZywgZ2xvYmFscywgbG9jYWxzKTsKKyAgICAgICAgdiA9IFB5RXZhbF9FdmFsQ29kZShzb3VyY2UsIGdsb2JhbHMsIGxvY2Fscyk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqcHJvZ19jb3B5OworICAgICAgICBQeU9iamVjdCAqc291cmNlX2NvcHk7CiAgICAgICAgIGNvbnN0IGNoYXIgKnN0cjsKICAgICAgICAgUHlDb21waWxlckZsYWdzIGNmOwogICAgICAgICBjZi5jZl9mbGFncyA9IFB5Q0ZfU09VUkNFX0lTX1VURjg7Ci0gICAgICAgIHN0ciA9IHNvdXJjZV9hc19zdHJpbmcocHJvZywgImV4ZWMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcsIGJ5dGVzIG9yIGNvZGUiLCAmY2YsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb2dfY29weSk7CisgICAgICAgIHN0ciA9IHNvdXJjZV9hc19zdHJpbmcoc291cmNlLCAiZXhlYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nLCBieXRlcyBvciBjb2RlIiwgJmNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNvdXJjZV9jb3B5KTsKICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChQeUV2YWxfTWVyZ2VDb21waWxlckZsYWdzKCZjZikpCkBAIC05MTEsNyArOTcxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHMsICZjZik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHYgPSBQeVJ1bl9TdHJpbmcoc3RyLCBQeV9maWxlX2lucHV0LCBnbG9iYWxzLCBsb2NhbHMpOwotICAgICAgICBQeV9YREVDUkVGKHByb2dfY29weSk7CisgICAgICAgIFB5X1hERUNSRUYoc291cmNlX2NvcHkpOwogICAgIH0KICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTkxOSwxNSArOTc5LDggQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGV4ZWNfZG9jLAotImV4ZWMob2JqZWN0WywgZ2xvYmFsc1ssIGxvY2Fsc11dKVxuXAotXG5cCi1SZWFkIGFuZCBleGVjdXRlIGNvZGUgZnJvbSBhbiBvYmplY3QsIHdoaWNoIGNhbiBiZSBhIHN0cmluZyBvciBhIGNvZGVcblwKLW9iamVjdC5cblwKLVRoZSBnbG9iYWxzIGFuZCBsb2NhbHMgYXJlIGRpY3Rpb25hcmllcywgZGVmYXVsdGluZyB0byB0aGUgY3VycmVudFxuXAotZ2xvYmFscyBhbmQgbG9jYWxzLiAgSWYgb25seSBnbG9iYWxzIGlzIGdpdmVuLCBsb2NhbHMgZGVmYXVsdHMgdG8gaXQuIik7CiAKLQorLyogQUM6IGNhbm5vdCBjb252ZXJ0IHlldCwgYXMgbmVlZHMgUEVQIDQ1NyBncm91cCBzdXBwb3J0IGluIGluc3BlY3QgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX2dldGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtOTYxLDggKzEwMTQsMTggQEAKIGV4aXN0OyB3aXRob3V0IGl0LCBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGluIHRoYXQgY2FzZS4iKTsKIAogCisvKltjbGluaWMgaW5wdXRdCitnbG9iYWxzIGFzIGJ1aWx0aW5fZ2xvYmFscworCitSZXR1cm4gdGhlIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgY3VycmVudCBzY29wZSdzIGdsb2JhbCB2YXJpYWJsZXMuCisKK05PVEU6IFVwZGF0ZXMgdG8gdGhpcyBkaWN0aW9uYXJ5ICp3aWxsKiBhZmZlY3QgbmFtZSBsb29rdXBzIGluIHRoZSBjdXJyZW50CitnbG9iYWwgc2NvcGUgYW5kIHZpY2UtdmVyc2EuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2dsb2JhbHMoUHlPYmplY3QgKnNlbGYpCitidWlsdGluX2dsb2JhbHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ5NTg2NDVlOTZkZDgxMzggaW5wdXQ9OTMyNzU3NmY5MmJiNDhiYV0qLwogewogICAgIFB5T2JqZWN0ICpkOwogCkBAIC05NzEsMjYgKzEwMzQsMzEgQEAKICAgICByZXR1cm4gZDsKIH0KIAotUHlEb2NfU1RSVkFSKGdsb2JhbHNfZG9jLAotImdsb2JhbHMoKSAtPiBkaWN0aW9uYXJ5XG5cCi1cblwKLVJldHVybiB0aGUgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjdXJyZW50IHNjb3BlJ3MgZ2xvYmFsIHZhcmlhYmxlcy4iKTsKIAorLypbY2xpbmljIGlucHV0XQoraGFzYXR0ciBhcyBidWlsdGluX2hhc2F0dHIKKworICAgIG9iajogb2JqZWN0CisgICAgbmFtZTogb2JqZWN0CisgICAgLworCitSZXR1cm4gd2hldGhlciB0aGUgb2JqZWN0IGhhcyBhbiBhdHRyaWJ1dGUgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4KKworVGhpcyBpcyBkb25lIGJ5IGNhbGxpbmcgZ2V0YXR0cihvYmosIG5hbWUpIGFuZCBjYXRjaGluZyBBdHRyaWJ1dGVFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5faGFzYXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitidWlsdGluX2hhc2F0dHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04MTE1NGZkZDYzNjM0Njk2IGlucHV0PTBmYWVjOTc4N2Q5Nzk1NDJdKi8KIHsKICAgICBQeU9iamVjdCAqdjsKLSAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImhhc2F0dHIiLCAyLCAyLCAmdiwgJm5hbWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhuYW1lKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImhhc2F0dHIoKTogYXR0cmlidXRlIG5hbWUgbXVzdCBiZSBzdHJpbmciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHYgPSBQeU9iamVjdF9HZXRBdHRyKHYsIG5hbWUpOworICAgIHYgPSBQeU9iamVjdF9HZXRBdHRyKG9iaiwgbmFtZSk7CiAgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0xMDAyLDI1ICsxMDcwLDMxIEBACiAgICAgUHlfUkVUVVJOX1RSVUU7CiB9CiAKLVB5RG9jX1NUUlZBUihoYXNhdHRyX2RvYywKLSJoYXNhdHRyKG9iamVjdCwgbmFtZSkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gd2hldGhlciB0aGUgb2JqZWN0IGhhcyBhbiBhdHRyaWJ1dGUgd2l0aCB0aGUgZ2l2ZW4gbmFtZS5cblwKLShUaGlzIGlzIGRvbmUgYnkgY2FsbGluZyBnZXRhdHRyKG9iamVjdCwgbmFtZSkgYW5kIGNhdGNoaW5nIEF0dHJpYnV0ZUVycm9yLikiKTsKIAorLyogQUM6IGdkYidzIGludGVncmF0aW9uIHdpdGggQ1B5dGhvbiByZWxpZXMgb24gYnVpbHRpbl9pZCBoYXZpbmcKKyAqIHRoZSAqZXhhY3QqIHBhcmFtZXRlciBuYW1lcyBvZiAic2VsZiIgYW5kICJ2Iiwgc28gd2UgZW5zdXJlIHdlCisgKiBwcmVzZXJ2ZSB0aG9zZSBuYW1lIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBBQyBkZWZhdWx0cy4KKyAqLworLypbY2xpbmljIGlucHV0XQoraWQgYXMgYnVpbHRpbl9pZAorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeU1vZHVsZURlZiAqIikKKyAgICBvYmogYXMgdjogb2JqZWN0CisgICAgLworCitSZXR1cm4gdGhlIGlkZW50aXR5IG9mIGFuIG9iamVjdC4KKworVGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIHVuaXF1ZSBhbW9uZyBzaW11bHRhbmVvdXNseSBleGlzdGluZyBvYmplY3RzLgorKENQeXRob24gdXNlcyB0aGUgb2JqZWN0J3MgbWVtb3J5IGFkZHJlc3MuKQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9pZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2lkKFB5TW9kdWxlRGVmICpzZWxmLCBQeU9iamVjdCAqdikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYWE2NDA3ODVmNjk3ZjY1IGlucHV0PTVhNTM0MTM2NDE5NjMxZjRdKi8KIHsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Wb2lkUHRyKHYpOwogfQogCi1QeURvY19TVFJWQVIoaWRfZG9jLAotImlkKG9iamVjdCkgLT4gaW50ZWdlclxuXAotXG5cCi1SZXR1cm4gdGhlIGlkZW50aXR5IG9mIGFuIG9iamVjdC4gIFRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZSB1bmlxdWUgYW1vbmdcblwKLXNpbXVsdGFuZW91c2x5IGV4aXN0aW5nIG9iamVjdHMuICAoSGludDogaXQncyB0aGUgb2JqZWN0J3MgbWVtb3J5IGFkZHJlc3MuKSIpOwotCiAKIC8qIG1hcCBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCkBAIC0xMTkzLDYgKzEyNjcsOCBAQAogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKKworLyogQUM6IGNhbm5vdCBjb252ZXJ0IHlldCwgYXMgbmVlZHMgUEVQIDQ1NyBncm91cCBzdXBwb3J0IGluIGluc3BlY3QgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX25leHQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTIzNCw4MyArMTMxMCwxMDAgQEAKIGlzIGV4aGF1c3RlZCwgaXQgaXMgcmV0dXJuZWQgaW5zdGVhZCBvZiByYWlzaW5nIFN0b3BJdGVyYXRpb24uIik7CiAKIAotc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fc2V0YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnY7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0gICAgUHlPYmplY3QgKnZhbHVlOworLypbY2xpbmljIGlucHV0XQorc2V0YXR0ciBhcyBidWlsdGluX3NldGF0dHIKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNldGF0dHIiLCAzLCAzLCAmdiwgJm5hbWUsICZ2YWx1ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeU9iamVjdF9TZXRBdHRyKHYsIG5hbWUsIHZhbHVlKSAhPSAwKQorICAgIG9iajogb2JqZWN0CisgICAgbmFtZTogb2JqZWN0CisgICAgdmFsdWU6IG9iamVjdAorICAgIC8KKworU2V0cyB0aGUgbmFtZWQgYXR0cmlidXRlIG9uIHRoZSBnaXZlbiBvYmplY3QgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS4KKworc2V0YXR0cih4LCAneScsIHYpIGlzIGVxdWl2YWxlbnQgdG8gYGB4LnkgPSB2JycKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fc2V0YXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ4ODFjNjU1YzBmN2UzNGYgaW5wdXQ9YmQyYjdjYTY4NzVhMTg5OV0qLworeworICAgIGlmIChQeU9iamVjdF9TZXRBdHRyKG9iaiwgbmFtZSwgdmFsdWUpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotUHlEb2NfU1RSVkFSKHNldGF0dHJfZG9jLAotInNldGF0dHIob2JqZWN0LCBuYW1lLCB2YWx1ZSlcblwKLVxuXAotU2V0IGEgbmFtZWQgYXR0cmlidXRlIG9uIGFuIG9iamVjdDsgc2V0YXR0cih4LCAneScsIHYpIGlzIGVxdWl2YWxlbnQgdG9cblwKLWBgeC55ID0gdicnLiIpOwogCisvKltjbGluaWMgaW5wdXRdCitkZWxhdHRyIGFzIGJ1aWx0aW5fZGVsYXR0cgorCisgICAgb2JqOiBvYmplY3QKKyAgICBuYW1lOiBvYmplY3QKKyAgICAvCisKK0RlbGV0ZXMgdGhlIG5hbWVkIGF0dHJpYnV0ZSBmcm9tIHRoZSBnaXZlbiBvYmplY3QuCisKK2RlbGF0dHIoeCwgJ3knKSBpcyBlcXVpdmFsZW50IHRvIGBgZGVsIHgueScnCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2RlbGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9kZWxhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKm5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWY2NTNlNjk4YTBiNDE4NyBpbnB1dD1kYjE2Njg1ZDZiNGI5NDEwXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0KLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJkZWxhdHRyIiwgMiwgMiwgJnYsICZuYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5T2JqZWN0X1NldEF0dHIodiwgbmFtZSwgKFB5T2JqZWN0ICopTlVMTCkgIT0gMCkKKyAgICBpZiAoUHlPYmplY3RfU2V0QXR0cihvYmosIG5hbWUsIChQeU9iamVjdCAqKU5VTEwpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotUHlEb2NfU1RSVkFSKGRlbGF0dHJfZG9jLAotImRlbGF0dHIob2JqZWN0LCBuYW1lKVxuXAotXG5cCi1EZWxldGUgYSBuYW1lZCBhdHRyaWJ1dGUgb24gYW4gb2JqZWN0OyBkZWxhdHRyKHgsICd5JykgaXMgZXF1aXZhbGVudCB0b1xuXAotYGBkZWwgeC55JycuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2hhc2ggYXMgYnVpbHRpbl9oYXNoCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHRoZSBoYXNoIHZhbHVlIGZvciB0aGUgZ2l2ZW4gb2JqZWN0LgorCitUd28gb2JqZWN0cyB0aGF0IGNvbXBhcmUgZXF1YWwgbXVzdCBhbHNvIGhhdmUgdGhlIHNhbWUgaGFzaCB2YWx1ZSwgYnV0IHRoZQorcmV2ZXJzZSBpcyBub3QgbmVjZXNzYXJpbHkgdHJ1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5faGFzaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2hhc2goUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZjMyZmYxNTRjMWY3NTFhIGlucHV0PTU4YzQ4YmU4MjJiZjljNTRdKi8KIHsKICAgICBQeV9oYXNoX3QgeDsKIAotICAgIHggPSBQeU9iamVjdF9IYXNoKHYpOworICAgIHggPSBQeU9iamVjdF9IYXNoKG9iaik7CiAgICAgaWYgKHggPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoeCk7CiB9CiAKLVB5RG9jX1NUUlZBUihoYXNoX2RvYywKLSJoYXNoKG9iamVjdCkgLT4gaW50ZWdlclxuXAotXG5cCi1SZXR1cm4gYSBoYXNoIHZhbHVlIGZvciB0aGUgb2JqZWN0LiAgVHdvIG9iamVjdHMgd2l0aCB0aGUgc2FtZSB2YWx1ZSBoYXZlXG5cCi10aGUgc2FtZSBoYXNoIHZhbHVlLiAgVGhlIHJldmVyc2UgaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUsIGJ1dCBsaWtlbHkuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2hleCBhcyBidWlsdGluX2hleAorCisgICAgbnVtYmVyOiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlci4KKworICAgPj4+IGhleCgxMjY0ODQzMCkKKyAgICcweGMwZmZlZScKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5faGV4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKK2J1aWx0aW5faGV4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpudW1iZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjE4NDg5Y2UzY2JjNTg1OCBpbnB1dD1lNjQ1YWZmNWZjN2Q1NDBlXSovCiB7Ci0gICAgcmV0dXJuIFB5TnVtYmVyX1RvQmFzZSh2LCAxNik7CisgICAgcmV0dXJuIFB5TnVtYmVyX1RvQmFzZShudW1iZXIsIDE2KTsKIH0KIAotUHlEb2NfU1RSVkFSKGhleF9kb2MsCi0iaGV4KG51bWJlcikgLT4gc3RyaW5nXG5cCi1cblwKLVJldHVybiB0aGUgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlci5cblwKLVxuXAotICAgPj4+IGhleCgzNzM1OTI4NTU5KVxuXAotICAgJzB4ZGVhZGJlZWYnXG5cCi0iKTsKIAotCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCBhcyBuZWVkcyBQRVAgNDU3IGdyb3VwIHN1cHBvcnQgaW4gaW5zcGVjdCAqLwogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5faXRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0xMzM3LDI1ICsxNDMwLDQxIEBACiBJbiB0aGUgc2Vjb25kIGZvcm0sIHRoZSBjYWxsYWJsZSBpcyBjYWxsZWQgdW50aWwgaXQgcmV0dXJucyB0aGUgc2VudGluZWwuIik7CiAKIAorLypbY2xpbmljIGlucHV0XQorbGVuIGFzIGJ1aWx0aW5fbGVuCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBjb250YWluZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2xlbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2xlbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThlNTgzN2I2ZjgxZDkxNWIgaW5wdXQ9YmM1NTU5OGRhOWU5YzliNV0qLwogewogICAgIFB5X3NzaXplX3QgcmVzOwogCi0gICAgcmVzID0gUHlPYmplY3RfU2l6ZSh2KTsKKyAgICByZXMgPSBQeU9iamVjdF9TaXplKG9iaik7CiAgICAgaWYgKHJlcyA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOwogfQogCi1QeURvY19TVFJWQVIobGVuX2RvYywKLSJsZW4ob2JqZWN0KVxuXAotXG5cCi1SZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBvZiBhIHNlcXVlbmNlIG9yIGNvbGxlY3Rpb24uIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2xvY2FscyBhcyBidWlsdGluX2xvY2FscworCitSZXR1cm4gYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc2NvcGUncyBsb2NhbCB2YXJpYWJsZXMuCisKK05PVEU6IFdoZXRoZXIgb3Igbm90IHVwZGF0ZXMgdG8gdGhpcyBkaWN0aW9uYXJ5IHdpbGwgYWZmZWN0IG5hbWUgbG9va3VwcyBpbgordGhlIGxvY2FsIHNjb3BlIGFuZCB2aWNlLXZlcnNhIGlzICppbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQqIGFuZCBub3QKK2NvdmVyZWQgYnkgYW55IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGd1YXJhbnRlZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2xvY2FscyhQeU9iamVjdCAqc2VsZikKK2J1aWx0aW5fbG9jYWxzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04YjVhNDFmMTJlMTlkMTNhIGlucHV0PTc4NzQwMThkNDc4ZDVjNGJdKi8KIHsKICAgICBQeU9iamVjdCAqZDsKIApAQCAtMTM2NCwxMSArMTQ3Myw2IEBACiAgICAgcmV0dXJuIGQ7CiB9CiAKLVB5RG9jX1NUUlZBUihsb2NhbHNfZG9jLAotImxvY2FscygpIC0+IGRpY3Rpb25hcnlcblwKLVxuXAotVXBkYXRlIGFuZCByZXR1cm4gYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc2NvcGUncyBsb2NhbCB2YXJpYWJsZXMuIik7Ci0KIAogc3RhdGljIFB5T2JqZWN0ICoKIG1pbl9tYXgoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzLCBpbnQgb3ApCkBAIC0xNDcxLDYgKzE1NzUsNyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCB3YWl0aW5nIGZvciAqYXJncyBzdXBwb3J0ICovCiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9taW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKQEAgLTE0ODcsNiArMTU5Miw3IEBACiBXaXRoIHR3byBvciBtb3JlIGFyZ3VtZW50cywgcmV0dXJuIHRoZSBzbWFsbGVzdCBhcmd1bWVudC4iKTsKIAogCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCB3YWl0aW5nIGZvciAqYXJncyBzdXBwb3J0ICovCiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9tYXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKQEAgLTE1MDMsNTYgKzE2MDksNzAgQEAKIFdpdGggdHdvIG9yIG1vcmUgYXJndW1lbnRzLCByZXR1cm4gdGhlIGxhcmdlc3QgYXJndW1lbnQuIik7CiAKIAorLypbY2xpbmljIGlucHV0XQorb2N0IGFzIGJ1aWx0aW5fb2N0CisKKyAgICBudW1iZXI6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHRoZSBvY3RhbCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLgorCisgICA+Pj4gb2N0KDM0MjM5MSkKKyAgICcwbzEyMzQ1NjcnCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX29jdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX29jdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbnVtYmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE4ZjcwMWJjNmQ4ZjgwNGEgaW5wdXQ9YWQ2YjI3NGFmNDAxNmM3Ml0qLwogewotICAgIHJldHVybiBQeU51bWJlcl9Ub0Jhc2UodiwgOCk7CisgICAgcmV0dXJuIFB5TnVtYmVyX1RvQmFzZShudW1iZXIsIDgpOwogfQogCi1QeURvY19TVFJWQVIob2N0X2RvYywKLSJvY3QobnVtYmVyKSAtPiBzdHJpbmdcblwKLVxuXAotUmV0dXJuIHRoZSBvY3RhbCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLlxuXAotXG5cCi0gICA+Pj4gb2N0KDM0MjM5MSlcblwKLSAgICcwbzEyMzQ1NjcnXG5cCi0iKTsKIAorLypbY2xpbmljIGlucHV0XQorb3JkIGFzIGJ1aWx0aW5fb3JkCisKKyAgICBjOiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgVW5pY29kZSBjb2RlIHBvaW50IGZvciBhIG9uZS1jaGFyYWN0ZXIgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9vcmQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0KiBvYmopCitidWlsdGluX29yZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNGZkMjcyNzJkOTQ2MmY2IGlucHV0PTMwNjRlNWQ2MjAzYWQwMTJdKi8KIHsKICAgICBsb25nIG9yZDsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAKLSAgICBpZiAoUHlCeXRlc19DaGVjayhvYmopKSB7Ci0gICAgICAgIHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKG9iaik7CisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soYykpIHsKKyAgICAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoYyk7CiAgICAgICAgIGlmIChzaXplID09IDEpIHsKLSAgICAgICAgICAgIG9yZCA9IChsb25nKSgodW5zaWduZWQgY2hhcikqUHlCeXRlc19BU19TVFJJTkcob2JqKSk7CisgICAgICAgICAgICBvcmQgPSAobG9uZykoKHVuc2lnbmVkIGNoYXIpKlB5Qnl0ZXNfQVNfU1RSSU5HKGMpKTsKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob3JkKTsKICAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgewotICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPT0gLTEpCisgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGMpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYykgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CisgICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChjKTsKICAgICAgICAgaWYgKHNpemUgPT0gMSkgewotICAgICAgICAgICAgb3JkID0gKGxvbmcpUHlVbmljb2RlX1JFQURfQ0hBUihvYmosIDApOworICAgICAgICAgICAgb3JkID0gKGxvbmcpUHlVbmljb2RlX1JFQURfQ0hBUihjLCAwKTsKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob3JkKTsKICAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhvYmopKSB7CisgICAgZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2soYykpIHsKICAgICAgICAgLyogWFhYIEhvcGVmdWxseSB0aGlzIGlzIHRlbXBvcmFyeSAqLwotICAgICAgICBzaXplID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUob2JqKTsKKyAgICAgICAgc2l6ZSA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKGMpOwogICAgICAgICBpZiAoc2l6ZSA9PSAxKSB7Ci0gICAgICAgICAgICBvcmQgPSAobG9uZykoKHVuc2lnbmVkIGNoYXIpKlB5Qnl0ZUFycmF5X0FTX1NUUklORyhvYmopKTsKKyAgICAgICAgICAgIG9yZCA9IChsb25nKSgodW5zaWduZWQgY2hhcikqUHlCeXRlQXJyYXlfQVNfU1RSSU5HKGMpKTsKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob3JkKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJvcmQoKSBleHBlY3RlZCBzdHJpbmcgb2YgbGVuZ3RoIDEsIGJ1dCAiIFwKLSAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMgZm91bmQiLCBvYmotPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyBmb3VuZCIsIGMtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTE1NjMsMzEgKzE2ODMsMzAgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlEb2NfVkFSKG9yZF9kb2MpID0gUHlEb2NfU1RSKAotIm9yZChjKSAtPiBpbnRlZ2VyXG5cCi1cblwKLVJldHVybiB0aGUgaW50ZWdlciBvcmRpbmFsIG9mIGEgb25lLWNoYXJhY3RlciBzdHJpbmcuIgotKTsKIAorLypbY2xpbmljIGlucHV0XQorcG93IGFzIGJ1aWx0aW5fcG93CisKKyAgICB4OiBvYmplY3QKKyAgICB5OiBvYmplY3QKKyAgICB6OiBvYmplY3QgPSBOb25lCisgICAgLworCitFcXVpdmFsZW50IHRvIHgqKnkgKHdpdGggdHdvIGFyZ3VtZW50cykgb3IgeCoqeSAlIHogKHdpdGggdGhyZWUgYXJndW1lbnRzKQorCitTb21lIHR5cGVzLCBzdWNoIGFzIGludHMsIGFyZSBhYmxlIHRvIHVzZSBhIG1vcmUgZWZmaWNpZW50IGFsZ29yaXRobSB3aGVuCitpbnZva2VkIHVzaW5nIHRoZSB0aHJlZSBhcmd1bWVudCBmb3JtLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9wb3coUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9wb3dfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqeCwgUHlPYmplY3QgKnksIFB5T2JqZWN0ICp6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFmYmEyNjhhZGJhOWI0NWYgaW5wdXQ9NjUzZDU3ZDM4ZDQxZmMwN10qLwogewotICAgIFB5T2JqZWN0ICp2LCAqdywgKnogPSBQeV9Ob25lOwotCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicG93IiwgMiwgMywgJnYsICZ3LCAmeikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeU51bWJlcl9Qb3dlcih2LCB3LCB6KTsKKyAgICByZXR1cm4gUHlOdW1iZXJfUG93ZXIoeCwgeSwgeik7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3dfZG9jLAotInBvdyh4LCB5Wywgel0pIC0+IG51bWJlclxuXAotXG5cCi1XaXRoIHR3byBhcmd1bWVudHMsIGVxdWl2YWxlbnQgdG8geCoqeS4gIFdpdGggdGhyZWUgYXJndW1lbnRzLFxuXAotZXF1aXZhbGVudCB0byAoeCoqeSkgJSB6LCBidXQgbWF5IGJlIG1vcmUgZWZmaWNpZW50IChlLmcuIGZvciBpbnRzKS4iKTsKIAotCi0KKy8qIEFDOiBjYW5ub3QgY29udmVydCB5ZXQsIHdhaXRpbmcgZm9yICphcmdzIHN1cHBvcnQgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX3ByaW50KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CkBAIC0xNjgzLDEwICsxODAyLDI1IEBACiBmbHVzaDogd2hldGhlciB0byBmb3JjaWJseSBmbHVzaCB0aGUgc3RyZWFtLiIpOwogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK2lucHV0IGFzIGJ1aWx0aW5faW5wdXQKKworICAgIHByb21wdDogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gTm9uZQorICAgIC8KKworUmVhZCBhIHN0cmluZyBmcm9tIHN0YW5kYXJkIGlucHV0LiAgVGhlIHRyYWlsaW5nIG5ld2xpbmUgaXMgc3RyaXBwZWQuCisKK1RoZSBwcm9tcHQgc3RyaW5nLCBpZiBnaXZlbiwgaXMgcHJpbnRlZCB0byBzdGFuZGFyZCBvdXRwdXQgd2l0aG91dCBhCit0cmFpbGluZyBuZXdsaW5lIGJlZm9yZSByZWFkaW5nIGlucHV0LgorCitJZiB0aGUgdXNlciBoaXRzIEVPRiAoKm5peDogQ3RybC1ELCBXaW5kb3dzOiBDdHJsLVorUmV0dXJuKSwgcmFpc2UgRU9GRXJyb3IuCitPbiAqbml4IHN5c3RlbXMsIHJlYWRsaW5lIGlzIHVzZWQgaWYgYXZhaWxhYmxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9pbnB1dChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitidWlsdGluX2lucHV0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnByb21wdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNzc3MzFmNTllMTUxNWM0IGlucHV0PTVlOGJiNzBjMjkwOGZlM2NdKi8KIHsKLSAgICBQeU9iamVjdCAqcHJvbXB0YXJnID0gTlVMTDsKICAgICBQeU9iamVjdCAqZmluID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGluKTsKICAgICBQeU9iamVjdCAqZm91dCA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRvdXQpOwogICAgIFB5T2JqZWN0ICpmZXJyID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGVycik7CkBAIC0xNjk0LDEwICsxODI4LDYgQEAKICAgICBsb25nIGZkOwogICAgIGludCB0dHk7CiAKLSAgICAvKiBQYXJzZSBhcmd1bWVudHMgKi8KLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJpbnB1dCIsIDAsIDEsICZwcm9tcHRhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIC8qIENoZWNrIHRoYXQgc3RkaW4vb3V0L2VyciBhcmUgaW50YWN0ICovCiAgICAgaWYgKGZpbiA9PSBOVUxMIHx8IGZpbiA9PSBQeV9Ob25lKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCkBAIC0xNzU1LDcgKzE4ODUsNyBAQAogICAgIC8qIElmIHdlJ3JlIGludGVyYWN0aXZlLCB1c2UgKEdOVSkgcmVhZGxpbmUgKi8KICAgICBpZiAodHR5KSB7CiAgICAgICAgIFB5T2JqZWN0ICpwbyA9IE5VTEw7Ci0gICAgICAgIGNoYXIgKnByb21wdDsKKyAgICAgICAgY2hhciAqcHJvbXB0c3RyOwogICAgICAgICBjaGFyICpzID0gTlVMTDsKICAgICAgICAgUHlPYmplY3QgKnN0ZGluX2VuY29kaW5nID0gTlVMTCwgKnN0ZGluX2Vycm9ycyA9IE5VTEw7CiAgICAgICAgIFB5T2JqZWN0ICpzdGRvdXRfZW5jb2RpbmcgPSBOVUxMLCAqc3Rkb3V0X2Vycm9ycyA9IE5VTEw7CkBAIC0xNzc4LDcgKzE5MDgsNyBAQAogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7Ci0gICAgICAgIGlmIChwcm9tcHRhcmcgIT0gTlVMTCkgeworICAgICAgICBpZiAocHJvbXB0ICE9IE5VTEwpIHsKICAgICAgICAgICAgIC8qIFdlIGhhdmUgYSBwcm9tcHQsIGVuY29kZSBpdCBhcyBzdGRvdXQgd291bGQgKi8KICAgICAgICAgICAgIGNoYXIgKnN0ZG91dF9lbmNvZGluZ19zdHIsICpzdGRvdXRfZXJyb3JzX3N0cjsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJpbmdwbzsKQEAgLTE3OTAsNyArMTkyMCw3IEBACiAgICAgICAgICAgICBzdGRvdXRfZXJyb3JzX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoc3Rkb3V0X2Vycm9ycyk7CiAgICAgICAgICAgICBpZiAoIXN0ZG91dF9lbmNvZGluZ19zdHIgfHwgIXN0ZG91dF9lcnJvcnNfc3RyKQogICAgICAgICAgICAgICAgIGdvdG8gX3JlYWRsaW5lX2Vycm9yczsKLSAgICAgICAgICAgIHN0cmluZ3BvID0gUHlPYmplY3RfU3RyKHByb21wdGFyZyk7CisgICAgICAgICAgICBzdHJpbmdwbyA9IFB5T2JqZWN0X1N0cihwcm9tcHQpOwogICAgICAgICAgICAgaWYgKHN0cmluZ3BvID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwogICAgICAgICAgICAgcG8gPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHN0cmluZ3BvLApAQCAtMTgwMCwxNSArMTkzMCwxNSBAQAogICAgICAgICAgICAgUHlfQ0xFQVIoc3RyaW5ncG8pOwogICAgICAgICAgICAgaWYgKHBvID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwotICAgICAgICAgICAgcHJvbXB0ID0gUHlCeXRlc19Bc1N0cmluZyhwbyk7Ci0gICAgICAgICAgICBpZiAocHJvbXB0ID09IE5VTEwpCisgICAgICAgICAgICBwcm9tcHRzdHIgPSBQeUJ5dGVzX0FzU3RyaW5nKHBvKTsKKyAgICAgICAgICAgIGlmIChwcm9tcHRzdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIF9yZWFkbGluZV9lcnJvcnM7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBwbyA9IE5VTEw7Ci0gICAgICAgICAgICBwcm9tcHQgPSAiIjsKKyAgICAgICAgICAgIHByb21wdHN0ciA9ICIiOwogICAgICAgICB9Ci0gICAgICAgIHMgPSBQeU9TX1JlYWRsaW5lKHN0ZGluLCBzdGRvdXQsIHByb21wdCk7CisgICAgICAgIHMgPSBQeU9TX1JlYWRsaW5lKHN0ZGluLCBzdGRvdXQsIHByb21wdHN0cik7CiAgICAgICAgIGlmIChzID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0NoZWNrU2lnbmFscygpOwogICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQpAQCAtMTg1MCw4ICsxOTgwLDggQEAKICAgICB9CiAKICAgICAvKiBGYWxsYmFjayBpZiB3ZSdyZSBub3QgaW50ZXJhY3RpdmUgKi8KLSAgICBpZiAocHJvbXB0YXJnICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RmlsZV9Xcml0ZU9iamVjdChwcm9tcHRhcmcsIGZvdXQsIFB5X1BSSU5UX1JBVykgIT0gMCkKKyAgICBpZiAocHJvbXB0ICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RmlsZV9Xcml0ZU9iamVjdChwcm9tcHQsIGZvdXQsIFB5X1BSSU5UX1JBVykgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7CkBAIC0xODYyLDI4ICsxOTkyLDI5IEBACiAgICAgcmV0dXJuIFB5RmlsZV9HZXRMaW5lKGZpbiwgLTEpOwogfQogCi1QeURvY19TVFJWQVIoaW5wdXRfZG9jLAotImlucHV0KFtwcm9tcHRdKSAtPiBzdHJpbmdcblwKLVxuXAotUmVhZCBhIHN0cmluZyBmcm9tIHN0YW5kYXJkIGlucHV0LiAgVGhlIHRyYWlsaW5nIG5ld2xpbmUgaXMgc3RyaXBwZWQuXG5cCi1JZiB0aGUgdXNlciBoaXRzIEVPRiAoVW5peDogQ3RsLUQsIFdpbmRvd3M6IEN0bC1aK1JldHVybiksIHJhaXNlIEVPRkVycm9yLlxuXAotT24gVW5peCwgR05VIHJlYWRsaW5lIGlzIHVzZWQgaWYgZW5hYmxlZC4gIFRoZSBwcm9tcHQgc3RyaW5nLCBpZiBnaXZlbixcblwKLWlzIHByaW50ZWQgd2l0aG91dCBhIHRyYWlsaW5nIG5ld2xpbmUgYmVmb3JlIHJlYWRpbmcuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3JlcHIgYXMgYnVpbHRpbl9yZXByCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHRoZSBjYW5vbmljYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuCisKK0ZvciBtYW55IG9iamVjdCB0eXBlcywgaW5jbHVkaW5nIG1vc3QgYnVpbHRpbnMsIGV2YWwocmVwcihvYmopKSA9PSBvYmouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX3JlcHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQorYnVpbHRpbl9yZXByKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGM0MTc4NGZhNDM0MTgzNCBpbnB1dD0xYzllNmQ2NmQzZTNiZTA0XSovCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X1JlcHIodik7CisgICAgcmV0dXJuIFB5T2JqZWN0X1JlcHIob2JqKTsKIH0KIAotUHlEb2NfU1RSVkFSKHJlcHJfZG9jLAotInJlcHIob2JqZWN0KSAtPiBzdHJpbmdcblwKLVxuXAotUmV0dXJuIHRoZSBjYW5vbmljYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuXG5cCi1Gb3IgbW9zdCBvYmplY3QgdHlwZXMsIGV2YWwocmVwcihvYmplY3QpKSA9PSBvYmplY3QuIik7CiAKLQorLyogQUM6IGNhbm5vdCBjb252ZXJ0IHlldCwgYXMgbmVlZHMgUEVQIDQ1NyBncm91cCBzdXBwb3J0IGluIGluc3BlY3QKKyAqICAgICBvciBhIHNlbWFudGljIGNoYW5nZSB0byBhY2NlcHQgTm9uZSBmb3IgIm5kaWdpdHMiCisgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX3JvdW5kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CkBAIC0xOTI1LDYgKzIwNTYsMzUgQEAKIHNhbWUgdHlwZSBhcyB0aGUgbnVtYmVyLiBuZGlnaXRzIG1heSBiZSBuZWdhdGl2ZS4iKTsKIAogCisvKkFDOiB3ZSBuZWVkIHRvIGtlZXAgdGhlIGt3ZHMgZGljdCBpbnRhY3QgdG8gZWFzaWx5IGNhbGwgaW50byB0aGUKKyAqIGxpc3Quc29ydCBtZXRob2QsIHdoaWNoIGlzbid0IGN1cnJlbnRseSBzdXBwb3J0ZWQgaW4gQUMuIFNvIHdlIGp1c3QgdXNlCisgKiB0aGUgaW5pdGlhbGx5IGdlbmVyYXRlZCBzaWduYXR1cmUgd2l0aCBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbi4KKyAqLworLyogW2Rpc2FibGVkIGNsaW5pYyBpbnB1dF0KK3NvcnRlZCBhcyBidWlsdGluX3NvcnRlZAorCisgICAgaXRlcmFibGUgYXMgc2VxOiBvYmplY3QKKyAgICBrZXkgYXMga2V5ZnVuYzogb2JqZWN0ID0gTm9uZQorICAgIHJldmVyc2U6IG9iamVjdCA9IEZhbHNlCisKK1JldHVybiBhIG5ldyBsaXN0IGNvbnRhaW5pbmcgYWxsIGl0ZW1zIGZyb20gdGhlIGl0ZXJhYmxlIGluIGFzY2VuZGluZyBvcmRlci4KKworQSBjdXN0b20ga2V5IGZ1bmN0aW9uIGNhbiBiZSBzdXBwbGllZCB0byBjdXN0b21pc2UgdGhlIHNvcnQgb3JkZXIsIGFuZCB0aGUKK3JldmVyc2UgZmxhZyBjYW4gYmUgc2V0IHRvIHJlcXVlc3QgdGhlIHJlc3VsdCBpbiBkZXNjZW5kaW5nIG9yZGVyLgorW2VuZCBkaXNhYmxlZCBjbGluaWMgaW5wdXRdKi8KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fc29ydGVkX19kb2NfXywKKyJzb3J0ZWQoJG1vZHVsZSwgaXRlcmFibGUsIGtleT1Ob25lLCByZXZlcnNlPUZhbHNlKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbmV3IGxpc3QgY29udGFpbmluZyBhbGwgaXRlbXMgZnJvbSB0aGUgaXRlcmFibGUgaW4gYXNjZW5kaW5nIG9yZGVyLlxuIgorIlxuIgorIkEgY3VzdG9tIGtleSBmdW5jdGlvbiBjYW4gYmUgc3VwcGxpZWQgdG8gY3VzdG9taXNlIHRoZSBzb3J0IG9yZGVyLCBhbmQgdGhlXG4iCisicmV2ZXJzZSBmbGFnIGNhbiBiZSBzZXQgdG8gcmVxdWVzdCB0aGUgcmVzdWx0IGluIGRlc2NlbmRpbmcgb3JkZXIuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9TT1JURURfTUVUSE9EREVGICAgIFwKKyAgICB7InNvcnRlZCIsIChQeUNGdW5jdGlvbilidWlsdGluX3NvcnRlZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ1aWx0aW5fc29ydGVkX19kb2NfX30sCisKIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX3NvcnRlZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewpAQCAtMTk2Niw5ICsyMTI2LDggQEAKICAgICByZXR1cm4gbmV3bGlzdDsKIH0KIAotUHlEb2NfU1RSVkFSKHNvcnRlZF9kb2MsCi0ic29ydGVkKGl0ZXJhYmxlLCBrZXk9Tm9uZSwgcmV2ZXJzZT1GYWxzZSkgLS0+IG5ldyBzb3J0ZWQgbGlzdCIpOwogCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCBhcyBuZWVkcyBQRVAgNDU3IGdyb3VwIHN1cHBvcnQgaW4gaW5zcGVjdCAqLwogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fdmFycyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0yMDAwLDE3ICsyMTU5LDI5IEBACiBXaXRob3V0IGFyZ3VtZW50cywgZXF1aXZhbGVudCB0byBsb2NhbHMoKS5cblwKIFdpdGggYW4gYXJndW1lbnQsIGVxdWl2YWxlbnQgdG8gb2JqZWN0Ll9fZGljdF9fLiIpOwogCi1zdGF0aWMgUHlPYmplY3QqCi1idWlsdGluX3N1bShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisKKy8qW2NsaW5pYyBpbnB1dF0KK3N1bSBhcyBidWlsdGluX3N1bQorCisgICAgaXRlcmFibGU6IG9iamVjdAorICAgIHN0YXJ0OiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSAwCisgICAgLworCitSZXR1cm4gdGhlIHN1bSBvZiBhICdzdGFydCcgdmFsdWUgKGRlZmF1bHQ6IDApIHBsdXMgYW4gaXRlcmFibGUgb2YgbnVtYmVycworCitXaGVuIHRoZSBpdGVyYWJsZSBpcyBlbXB0eSwgcmV0dXJuIHRoZSBzdGFydCB2YWx1ZS4KK1RoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgc3BlY2lmaWNhbGx5IGZvciB1c2Ugd2l0aCBudW1lcmljIHZhbHVlcyBhbmQgbWF5CityZWplY3Qgbm9uLW51bWVyaWMgdHlwZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX3N1bV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICppdGVyYWJsZSwgUHlPYmplY3QgKnN0YXJ0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMzNjU1YjI0OGIyMWQ1ODEgaW5wdXQ9M2I1YjdhOWQ3NjExYzczYV0qLwogewotICAgIFB5T2JqZWN0ICpzZXE7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IHN0YXJ0OwogICAgIFB5T2JqZWN0ICp0ZW1wLCAqaXRlbSwgKml0ZXI7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdW0iLCAxLCAyLCAmc2VxLCAmcmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpdGVyID0gUHlPYmplY3RfR2V0SXRlcihzZXEpOworICAgIGl0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKICAgICBpZiAoaXRlciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMjA0MCw3ICsyMjExLDYgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0KICAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CiAgICAgfQogCkBAIC0yMTY2LDYyICsyMzM2LDYyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlEb2NfU1RSVkFSKHN1bV9kb2MsCi0ic3VtKGl0ZXJhYmxlWywgc3RhcnRdKSAtPiB2YWx1ZVxuXAotXG5cCi1SZXR1cm4gdGhlIHN1bSBvZiBhbiBpdGVyYWJsZSBvZiBudW1iZXJzIChOT1Qgc3RyaW5ncykgcGx1cyB0aGUgdmFsdWVcblwKLW9mIHBhcmFtZXRlciAnc3RhcnQnICh3aGljaCBkZWZhdWx0cyB0byAwKS4gIFdoZW4gdGhlIGl0ZXJhYmxlIGlzXG5cCi1lbXB0eSwgcmV0dXJuIHN0YXJ0LiIpOwogCisvKltjbGluaWMgaW5wdXRdCitpc2luc3RhbmNlIGFzIGJ1aWx0aW5faXNpbnN0YW5jZQorCisgICAgb2JqOiBvYmplY3QKKyAgICBjbGFzc19vcl90dXBsZTogb2JqZWN0CisgICAgLworCitSZXR1cm4gd2hldGhlciBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyBvciBvZiBhIHN1YmNsYXNzIHRoZXJlb2YuCisKK0EgdHVwbGUsIGFzIGluIGBgaXNpbnN0YW5jZSh4LCAoQSwgQiwgLi4uKSlgYCwgbWF5IGJlIGdpdmVuIGFzIHRoZSB0YXJnZXQgdG8KK2NoZWNrIGFnYWluc3QuIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYGlzaW5zdGFuY2UoeCwgQSkgb3IgaXNpbnN0YW5jZSh4LCBCKQorb3IgLi4uYGAgZXRjLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9pc2luc3RhbmNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J1aWx0aW5faXNpbnN0YW5jZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2xhc3Nfb3JfdHVwbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Zjk2MGI3YzEyZGJiZWRhMCBpbnB1dD1mZmE3NDNkYjFkYWY3NTQ5XSovCiB7Ci0gICAgUHlPYmplY3QgKmluc3Q7Ci0gICAgUHlPYmplY3QgKmNsczsKICAgICBpbnQgcmV0dmFsOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaXNpbnN0YW5jZSIsIDIsIDIsICZpbnN0LCAmY2xzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR2YWwgPSBQeU9iamVjdF9Jc0luc3RhbmNlKGluc3QsIGNscyk7CisgICAgcmV0dmFsID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIGNsYXNzX29yX3R1cGxlKTsKICAgICBpZiAocmV0dmFsIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXR2YWwpOwogfQogCi1QeURvY19TVFJWQVIoaXNpbnN0YW5jZV9kb2MsCi0iaXNpbnN0YW5jZShvYmplY3QsIGNsYXNzLW9yLXR5cGUtb3ItdHVwbGUpIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIHdoZXRoZXIgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3Mgb3Igb2YgYSBzdWJjbGFzcyB0aGVyZW9mLlxuXAotV2l0aCBhIHR5cGUgYXMgc2Vjb25kIGFyZ3VtZW50LCByZXR1cm4gd2hldGhlciB0aGF0IGlzIHRoZSBvYmplY3QncyB0eXBlLlxuXAotVGhlIGZvcm0gdXNpbmcgYSB0dXBsZSwgaXNpbnN0YW5jZSh4LCAoQSwgQiwgLi4uKSksIGlzIGEgc2hvcnRjdXQgZm9yXG5cCi1pc2luc3RhbmNlKHgsIEEpIG9yIGlzaW5zdGFuY2UoeCwgQikgb3IgLi4uIChldGMuKS4iKTsKIAorLypbY2xpbmljIGlucHV0XQoraXNzdWJjbGFzcyBhcyBidWlsdGluX2lzc3ViY2xhc3MKKworICAgIGNsczogb2JqZWN0CisgICAgY2xhc3Nfb3JfdHVwbGU6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHdoZXRoZXIgJ2NscycgaXMgYSBkZXJpdmVkIGZyb20gYW5vdGhlciBjbGFzcyBvciBpcyB0aGUgc2FtZSBjbGFzcy4KKworQSB0dXBsZSwgYXMgaW4gYGBpc3N1YmNsYXNzKHgsIChBLCBCLCAuLi4pKWBgLCBtYXkgYmUgZ2l2ZW4gYXMgdGhlIHRhcmdldCB0bworY2hlY2sgYWdhaW5zdC4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgaXNzdWJjbGFzcyh4LCBBKSBvciBpc3N1YmNsYXNzKHgsIEIpCitvciAuLi5gYCBldGMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2lzc3ViY2xhc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9pc3N1YmNsYXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmNscywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjbGFzc19vcl90dXBsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04YjAxMmExNTE5NDBiYmYyIGlucHV0PWFmNWYzNWU5Y2VhZGRhZjZdKi8KIHsKLSAgICBQeU9iamVjdCAqZGVyaXZlZDsKLSAgICBQeU9iamVjdCAqY2xzOwogICAgIGludCByZXR2YWw7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJpc3N1YmNsYXNzIiwgMiwgMiwgJmRlcml2ZWQsICZjbHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHZhbCA9IFB5T2JqZWN0X0lzU3ViY2xhc3MoZGVyaXZlZCwgY2xzKTsKKyAgICByZXR2YWwgPSBQeU9iamVjdF9Jc1N1YmNsYXNzKGNscywgY2xhc3Nfb3JfdHVwbGUpOwogICAgIGlmIChyZXR2YWwgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJldHZhbCk7CiB9CiAKLVB5RG9jX1NUUlZBUihpc3N1YmNsYXNzX2RvYywKLSJpc3N1YmNsYXNzKEMsIEIpIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIHdoZXRoZXIgY2xhc3MgQyBpcyBhIHN1YmNsYXNzIChpLmUuLCBhIGRlcml2ZWQgY2xhc3MpIG9mIGNsYXNzIEIuXG5cCi1XaGVuIHVzaW5nIGEgdHVwbGUgYXMgdGhlIHNlY29uZCBhcmd1bWVudCBpc3N1YmNsYXNzKFgsIChBLCBCLCAuLi4pKSxcblwKLWlzIGEgc2hvcnRjdXQgZm9yIGlzc3ViY2xhc3MoWCwgQSkgb3IgaXNzdWJjbGFzcyhYLCBCKSBvciAuLi4gKGV0Yy4pLiIpOwotCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECkBAIC0yNDE2LDQ0ICsyNTg2LDQ0IEBACiAgICAgeyJfX2J1aWxkX2NsYXNzX18iLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9fX2J1aWxkX2NsYXNzX18sCiAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIGJ1aWxkX2NsYXNzX2RvY30sCiAgICAgeyJfX2ltcG9ydF9fIiwgICAgICAoUHlDRnVuY3Rpb24pYnVpbHRpbl9fX2ltcG9ydF9fLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBpbXBvcnRfZG9jfSwKLSAgICB7ImFicyIsICAgICAgICAgICAgIGJ1aWx0aW5fYWJzLCAgICAgICAgTUVUSF9PLCBhYnNfZG9jfSwKLSAgICB7ImFsbCIsICAgICAgICAgICAgIGJ1aWx0aW5fYWxsLCAgICAgICAgTUVUSF9PLCBhbGxfZG9jfSwKLSAgICB7ImFueSIsICAgICAgICAgICAgIGJ1aWx0aW5fYW55LCAgICAgICAgTUVUSF9PLCBhbnlfZG9jfSwKLSAgICB7ImFzY2lpIiwgICAgICAgICAgIGJ1aWx0aW5fYXNjaWksICAgICAgTUVUSF9PLCBhc2NpaV9kb2N9LAotICAgIHsiYmluIiwgICAgICAgICAgICAgYnVpbHRpbl9iaW4sICAgICAgICBNRVRIX08sIGJpbl9kb2N9LAotICAgIHsiY2FsbGFibGUiLCAgICAgICAgYnVpbHRpbl9jYWxsYWJsZSwgICBNRVRIX08sIGNhbGxhYmxlX2RvY30sCi0gICAgeyJjaHIiLCAgICAgICAgICAgICBidWlsdGluX2NociwgICAgICAgIE1FVEhfVkFSQVJHUywgY2hyX2RvY30sCi0gICAgeyJjb21waWxlIiwgICAgICAgICAoUHlDRnVuY3Rpb24pYnVpbHRpbl9jb21waWxlLCAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBjb21waWxlX2RvY30sCi0gICAgeyJkZWxhdHRyIiwgICAgICAgICBidWlsdGluX2RlbGF0dHIsICAgIE1FVEhfVkFSQVJHUywgZGVsYXR0cl9kb2N9LAorICAgIEJVSUxUSU5fQUJTX01FVEhPRERFRgorICAgIEJVSUxUSU5fQUxMX01FVEhPRERFRgorICAgIEJVSUxUSU5fQU5ZX01FVEhPRERFRgorICAgIEJVSUxUSU5fQVNDSUlfTUVUSE9EREVGCisgICAgQlVJTFRJTl9CSU5fTUVUSE9EREVGCisgICAgQlVJTFRJTl9DQUxMQUJMRV9NRVRIT0RERUYKKyAgICBCVUlMVElOX0NIUl9NRVRIT0RERUYKKyAgICBCVUlMVElOX0NPTVBJTEVfTUVUSE9EREVGCisgICAgQlVJTFRJTl9ERUxBVFRSX01FVEhPRERFRgogICAgIHsiZGlyIiwgICAgICAgICAgICAgYnVpbHRpbl9kaXIsICAgICAgICBNRVRIX1ZBUkFSR1MsIGRpcl9kb2N9LAotICAgIHsiZGl2bW9kIiwgICAgICAgICAgYnVpbHRpbl9kaXZtb2QsICAgICBNRVRIX1ZBUkFSR1MsIGRpdm1vZF9kb2N9LAotICAgIHsiZXZhbCIsICAgICAgICAgICAgYnVpbHRpbl9ldmFsLCAgICAgICBNRVRIX1ZBUkFSR1MsIGV2YWxfZG9jfSwKLSAgICB7ImV4ZWMiLCAgICAgICAgYnVpbHRpbl9leGVjLCAgICAgICBNRVRIX1ZBUkFSR1MsIGV4ZWNfZG9jfSwKLSAgICB7ImZvcm1hdCIsICAgICAgICAgIGJ1aWx0aW5fZm9ybWF0LCAgICAgTUVUSF9WQVJBUkdTLCBmb3JtYXRfZG9jfSwKKyAgICBCVUlMVElOX0RJVk1PRF9NRVRIT0RERUYKKyAgICBCVUlMVElOX0VWQUxfTUVUSE9EREVGCisgICAgQlVJTFRJTl9FWEVDX01FVEhPRERFRgorICAgIEJVSUxUSU5fRk9STUFUX01FVEhPRERFRgogICAgIHsiZ2V0YXR0ciIsICAgICAgICAgYnVpbHRpbl9nZXRhdHRyLCAgICBNRVRIX1ZBUkFSR1MsIGdldGF0dHJfZG9jfSwKLSAgICB7Imdsb2JhbHMiLCAgICAgICAgIChQeUNGdW5jdGlvbilidWlsdGluX2dsb2JhbHMsICAgIE1FVEhfTk9BUkdTLCBnbG9iYWxzX2RvY30sCi0gICAgeyJoYXNhdHRyIiwgICAgICAgICBidWlsdGluX2hhc2F0dHIsICAgIE1FVEhfVkFSQVJHUywgaGFzYXR0cl9kb2N9LAotICAgIHsiaGFzaCIsICAgICAgICAgICAgYnVpbHRpbl9oYXNoLCAgICAgICBNRVRIX08sIGhhc2hfZG9jfSwKLSAgICB7ImhleCIsICAgICAgICAgICAgIGJ1aWx0aW5faGV4LCAgICAgICAgTUVUSF9PLCBoZXhfZG9jfSwKLSAgICB7ImlkIiwgICAgICAgICAgICAgIGJ1aWx0aW5faWQsICAgICAgICAgTUVUSF9PLCBpZF9kb2N9LAotICAgIHsiaW5wdXQiLCAgICAgICAgICAgYnVpbHRpbl9pbnB1dCwgICAgICBNRVRIX1ZBUkFSR1MsIGlucHV0X2RvY30sCi0gICAgeyJpc2luc3RhbmNlIiwgIGJ1aWx0aW5faXNpbnN0YW5jZSwgTUVUSF9WQVJBUkdTLCBpc2luc3RhbmNlX2RvY30sCi0gICAgeyJpc3N1YmNsYXNzIiwgIGJ1aWx0aW5faXNzdWJjbGFzcywgTUVUSF9WQVJBUkdTLCBpc3N1YmNsYXNzX2RvY30sCisgICAgQlVJTFRJTl9HTE9CQUxTX01FVEhPRERFRgorICAgIEJVSUxUSU5fSEFTQVRUUl9NRVRIT0RERUYKKyAgICBCVUlMVElOX0hBU0hfTUVUSE9EREVGCisgICAgQlVJTFRJTl9IRVhfTUVUSE9EREVGCisgICAgQlVJTFRJTl9JRF9NRVRIT0RERUYKKyAgICBCVUlMVElOX0lOUFVUX01FVEhPRERFRgorICAgIEJVSUxUSU5fSVNJTlNUQU5DRV9NRVRIT0RERUYKKyAgICBCVUlMVElOX0lTU1VCQ0xBU1NfTUVUSE9EREVGCiAgICAgeyJpdGVyIiwgICAgICAgICAgICBidWlsdGluX2l0ZXIsICAgICAgIE1FVEhfVkFSQVJHUywgaXRlcl9kb2N9LAotICAgIHsibGVuIiwgICAgICAgICAgICAgYnVpbHRpbl9sZW4sICAgICAgICBNRVRIX08sIGxlbl9kb2N9LAotICAgIHsibG9jYWxzIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fbG9jYWxzLCAgICAgTUVUSF9OT0FSR1MsIGxvY2Fsc19kb2N9LAorICAgIEJVSUxUSU5fTEVOX01FVEhPRERFRgorICAgIEJVSUxUSU5fTE9DQUxTX01FVEhPRERFRgogICAgIHsibWF4IiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fbWF4LCAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgbWF4X2RvY30sCiAgICAgeyJtaW4iLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pYnVpbHRpbl9taW4sICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBtaW5fZG9jfSwKICAgICB7Im5leHQiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilidWlsdGluX25leHQsICAgICAgIE1FVEhfVkFSQVJHUywgbmV4dF9kb2N9LAotICAgIHsib2N0IiwgICAgICAgICAgICAgYnVpbHRpbl9vY3QsICAgICAgICBNRVRIX08sIG9jdF9kb2N9LAotICAgIHsib3JkIiwgICAgICAgICAgICAgYnVpbHRpbl9vcmQsICAgICAgICBNRVRIX08sIG9yZF9kb2N9LAotICAgIHsicG93IiwgICAgICAgICAgICAgYnVpbHRpbl9wb3csICAgICAgICBNRVRIX1ZBUkFSR1MsIHBvd19kb2N9LAorICAgIEJVSUxUSU5fT0NUX01FVEhPRERFRgorICAgIEJVSUxUSU5fT1JEX01FVEhPRERFRgorICAgIEJVSUxUSU5fUE9XX01FVEhPRERFRgogICAgIHsicHJpbnQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fcHJpbnQsICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcHJpbnRfZG9jfSwKLSAgICB7InJlcHIiLCAgICAgICAgICAgIGJ1aWx0aW5fcmVwciwgICAgICAgTUVUSF9PLCByZXByX2RvY30sCisgICAgQlVJTFRJTl9SRVBSX01FVEhPRERFRgogICAgIHsicm91bmQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fcm91bmQsICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcm91bmRfZG9jfSwKLSAgICB7InNldGF0dHIiLCAgICAgICAgIGJ1aWx0aW5fc2V0YXR0ciwgICAgTUVUSF9WQVJBUkdTLCBzZXRhdHRyX2RvY30sCi0gICAgeyJzb3J0ZWQiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYnVpbHRpbl9zb3J0ZWQsICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzb3J0ZWRfZG9jfSwKLSAgICB7InN1bSIsICAgICAgICAgICAgIGJ1aWx0aW5fc3VtLCAgICAgICAgTUVUSF9WQVJBUkdTLCBzdW1fZG9jfSwKKyAgICBCVUlMVElOX1NFVEFUVFJfTUVUSE9EREVGCisgICAgQlVJTFRJTl9TT1JURURfTUVUSE9EREVGCisgICAgQlVJTFRJTl9TVU1fTUVUSE9EREVGCiAgICAgeyJ2YXJzIiwgICAgICAgICAgICBidWlsdGluX3ZhcnMsICAgICAgIE1FVEhfVkFSQVJHUywgdmFyc19kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0sCiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NldmFsLmMgYi9QeXRob24vY2V2YWwuYwppbmRleCA3YTBjYjdmLi43ODZhZGJmIDEwMDY0NAotLS0gYS9QeXRob24vY2V2YWwuYworKysgYi9QeXRob24vY2V2YWwuYwpAQCAtMTIsOCArMTIsMTAgQEAKICNpbmNsdWRlICJQeXRob24uaCIKIAogI2luY2x1ZGUgImNvZGUuaCIKKyNpbmNsdWRlICJkaWN0b2JqZWN0LmgiCiAjaW5jbHVkZSAiZnJhbWVvYmplY3QuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKKyNpbmNsdWRlICJzZXRvYmplY3QuaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAogI2luY2x1ZGUgPGN0eXBlLmg+CkBAIC03MzUsNyArNzM3LDcgQEAKICAgICBpZiAodHN0YXRlLT5yZWN1cnNpb25fZGVwdGggPiByZWN1cnNpb25fbGltaXQpIHsKICAgICAgICAgLS10c3RhdGUtPnJlY3Vyc2lvbl9kZXB0aDsKICAgICAgICAgdHN0YXRlLT5vdmVyZmxvd2VkID0gMTsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1JlY3Vyc2lvbkVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIm1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2VlZGVkJXMiLAogICAgICAgICAgICAgICAgICAgICAgd2hlcmUpOwogICAgICAgICByZXR1cm4gLTE7CkBAIC0xMTg5LDcgKzExOTEsNyBAQAogICAgIGYtPmZfc3RhY2t0b3AgPSBOVUxMOyAgICAgICAvKiByZW1haW5zIE5VTEwgdW5sZXNzIHlpZWxkIHN1c3BlbmRzIGZyYW1lICovCiAgICAgZi0+Zl9leGVjdXRpbmcgPSAxOwogCi0gICAgaWYgKGNvLT5jb19mbGFncyAmIENPX0dFTkVSQVRPUikgeworICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FKSkgewogICAgICAgICBpZiAoIXRocm93ZmxhZyAmJiBmLT5mX2V4Y190eXBlICE9IE5VTEwgJiYgZi0+Zl9leGNfdHlwZSAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAvKiBXZSB3ZXJlIGluIGFuIGV4Y2VwdCBoYW5kbGVyIHdoZW4gd2UgbGVmdCwKICAgICAgICAgICAgICAgIHJlc3RvcmUgdGhlIGV4Y2VwdGlvbiBzdGF0ZSB3aGljaCB3YXMgcHV0IGFzaWRlCkBAIC0xNTA0LDYgKzE1MDYsMTggQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoQklOQVJZX01BVFJJWF9NVUxUSVBMWSkgeworICAgICAgICAgICAgUHlPYmplY3QgKnJpZ2h0ID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqbGVmdCA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5TnVtYmVyX01hdHJpeE11bHRpcGx5KGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsZWZ0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyaWdodCk7CisgICAgICAgICAgICBTRVRfVE9QKHJlcyk7CisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoQklOQVJZX1RSVUVfRElWSURFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZGl2aXNvciA9IFBPUCgpOwogICAgICAgICAgICAgUHlPYmplY3QgKmRpdmlkZW5kID0gVE9QKCk7CkBAIC0xNjk0LDYgKzE3MDgsMTggQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoSU5QTEFDRV9NQVRSSVhfTVVMVElQTFkpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyaWdodCA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmxlZnQgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU51bWJlcl9JblBsYWNlTWF0cml4TXVsdGlwbHkobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgUHlfREVDUkVGKGxlZnQpOworICAgICAgICAgICAgUHlfREVDUkVGKHJpZ2h0KTsKKyAgICAgICAgICAgIFNFVF9UT1AocmVzKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFRBUkdFVChJTlBMQUNFX1RSVUVfRElWSURFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZGl2aXNvciA9IFBPUCgpOwogICAgICAgICAgICAgUHlPYmplY3QgKmRpdmlkZW5kID0gVE9QKCk7CkBAIC0xOTAwLDExICsxOTI2LDExNSBAQAogICAgICAgICAgICAgZ290byBmYXN0X2Jsb2NrX2VuZDsKICAgICAgICAgfQogCisgICAgICAgIFRBUkdFVChHRVRfQUlURVIpIHsKKyAgICAgICAgICAgIHVuYXJ5ZnVuYyBnZXR0ZXIgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKml0ZXIgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKmF3YWl0YWJsZSA9IE5VTEw7CisgICAgICAgICAgICBQeU9iamVjdCAqb2JqID0gVE9QKCk7CisgICAgICAgICAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSBQeV9UWVBFKG9iaik7CisKKyAgICAgICAgICAgIGlmICh0eXBlLT50cF9hc19hc3luYyAhPSBOVUxMKQorICAgICAgICAgICAgICAgIGdldHRlciA9IHR5cGUtPnRwX2FzX2FzeW5jLT5hbV9haXRlcjsKKworICAgICAgICAgICAgaWYgKGdldHRlciAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaXRlciA9ICgqZ2V0dGVyKShvYmopOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvYmopOworICAgICAgICAgICAgICAgIGlmIChpdGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgU0VUX1RPUChOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBTRVRfVE9QKE5VTEwpOworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiJ2FzeW5jIGZvcicgcmVxdWlyZXMgYW4gb2JqZWN0IHdpdGggIgorICAgICAgICAgICAgICAgICAgICAiX19haXRlcl9fIG1ldGhvZCwgZ290ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvYmopOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF3YWl0YWJsZSA9IF9QeUNvcm9fR2V0QXdhaXRhYmxlSXRlcihpdGVyKTsKKyAgICAgICAgICAgIGlmIChhd2FpdGFibGUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFNFVF9UT1AoTlVMTCk7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdCAiCisgICAgICAgICAgICAgICAgICAgICJmcm9tIF9fYWl0ZXJfXzogJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShpdGVyKS0+dHBfbmFtZSk7CisKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKKworICAgICAgICAgICAgU0VUX1RPUChhd2FpdGFibGUpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChHRVRfQU5FWFQpIHsKKyAgICAgICAgICAgIHVuYXJ5ZnVuYyBnZXR0ZXIgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKm5leHRfaXRlciA9IE5VTEw7CisgICAgICAgICAgICBQeU9iamVjdCAqYXdhaXRhYmxlID0gTlVMTDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICphaXRlciA9IFRPUCgpOworICAgICAgICAgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShhaXRlcik7CisKKyAgICAgICAgICAgIGlmICh0eXBlLT50cF9hc19hc3luYyAhPSBOVUxMKQorICAgICAgICAgICAgICAgIGdldHRlciA9IHR5cGUtPnRwX2FzX2FzeW5jLT5hbV9hbmV4dDsKKworICAgICAgICAgICAgaWYgKGdldHRlciAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgbmV4dF9pdGVyID0gKCpnZXR0ZXIpKGFpdGVyKTsKKyAgICAgICAgICAgICAgICBpZiAobmV4dF9pdGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIidhc3luYyBmb3InIHJlcXVpcmVzIGFuIGl0ZXJhdG9yIHdpdGggIgorICAgICAgICAgICAgICAgICAgICAiX19hbmV4dF9fIG1ldGhvZCwgZ290ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF3YWl0YWJsZSA9IF9QeUNvcm9fR2V0QXdhaXRhYmxlSXRlcihuZXh0X2l0ZXIpOworICAgICAgICAgICAgaWYgKGF3YWl0YWJsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdCAiCisgICAgICAgICAgICAgICAgICAgICJmcm9tIF9fYW5leHRfXzogJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShuZXh0X2l0ZXIpLT50cF9uYW1lKTsKKworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXh0X2l0ZXIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV4dF9pdGVyKTsKKworICAgICAgICAgICAgUFVTSChhd2FpdGFibGUpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChHRVRfQVdBSVRBQkxFKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqaXRlcmFibGUgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVyID0gX1B5Q29yb19HZXRBd2FpdGFibGVJdGVyKGl0ZXJhYmxlKTsKKworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXJhYmxlKTsKKworICAgICAgICAgICAgU0VUX1RPUChpdGVyKTsgLyogRXZlbiBpZiBpdCdzIE5VTEwgKi8KKworICAgICAgICAgICAgaWYgKGl0ZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoWUlFTERfRlJPTSkgewogICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQT1AoKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpyZWNpZXZlciA9IFRPUCgpOwogICAgICAgICAgICAgaW50IGVycjsKLSAgICAgICAgICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHJlY2lldmVyKSkgeworICAgICAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QocmVjaWV2ZXIpIHx8IFB5Q29yb19DaGVja0V4YWN0KHJlY2lldmVyKSkgewogICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeUdlbl9TZW5kKChQeUdlbk9iamVjdCAqKXJlY2lldmVyLCB2KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoc2VuZCk7CkBAIC0yMjMzLDYgKzIzNjMsMTAgQEAKICAgICAgICAgICAgICAgICAvKiBTbG93LXBhdGggaWYgZ2xvYmFscyBvciBidWlsdGlucyBpcyBub3QgYSBkaWN0ICovCiAgICAgICAgICAgICAgICAgdiA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9nbG9iYWxzLCBuYW1lKTsKICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworCiAgICAgICAgICAgICAgICAgICAgIHYgPSBQeU9iamVjdF9HZXRJdGVtKGYtPmZfYnVpbHRpbnMsIG5hbWUpOwogICAgICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCkBAIC0yMzU1LDYgKzI0ODksNDMgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKEJVSUxEX1RVUExFX1VOUEFDSywgX2J1aWxkX2xpc3RfdW5wYWNrKQorICAgICAgICBUQVJHRVQoQlVJTERfTElTVF9VTlBBQ0spCisgICAgICAgIF9idWlsZF9saXN0X3VucGFjazogeworICAgICAgICAgICAgaW50IGNvbnZlcnRfdG9fdHVwbGUgPSBvcGNvZGUgPT0gQlVJTERfVFVQTEVfVU5QQUNLOworICAgICAgICAgICAgaW50IGk7CisgICAgICAgICAgICBQeU9iamVjdCAqc3VtID0gUHlMaXN0X05ldygwKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CisgICAgICAgICAgICBpZiAoc3VtID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICAgICAgZm9yIChpID0gb3Bhcmc7IGkgPiAwOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqbm9uZV92YWw7CisKKyAgICAgICAgICAgICAgICBub25lX3ZhbCA9IF9QeUxpc3RfRXh0ZW5kKChQeUxpc3RPYmplY3QgKilzdW0sIFBFRUsoaSkpOworICAgICAgICAgICAgICAgIGlmIChub25lX3ZhbCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobm9uZV92YWwpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY29udmVydF90b190dXBsZSkgeworICAgICAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IFB5TGlzdF9Bc1R1cGxlKHN1bSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7CisgICAgICAgICAgICAgICAgaWYgKHJldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gc3VtOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3aGlsZSAob3BhcmctLSkKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoUE9QKCkpOworICAgICAgICAgICAgUFVTSChyZXR1cm5fdmFsdWUpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFRBUkdFVChCVUlMRF9TRVQpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzZXQgPSBQeVNldF9OZXcoTlVMTCk7CiAgICAgICAgICAgICBpbnQgZXJyID0gMDsKQEAgLTIzNzQsMjYgKzI1NDUsMTI3IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgVEFSR0VUKEJVSUxEX1NFVF9VTlBBQ0spIHsKKyAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgUHlPYmplY3QgKnN1bSA9IFB5U2V0X05ldyhOVUxMKTsKKyAgICAgICAgICAgIGlmIChzdW0gPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgICAgICBmb3IgKGkgPSBvcGFyZzsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlTZXRfVXBkYXRlKHN1bSwgUEVFSyhpKSkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKG9wYXJnLS0pCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgIFBVU0goc3VtKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoQlVJTERfTUFQKSB7CisgICAgICAgICAgICBpbnQgaTsKICAgICAgICAgICAgIFB5T2JqZWN0ICptYXAgPSBfUHlEaWN0X05ld1ByZXNpemVkKChQeV9zc2l6ZV90KW9wYXJnKTsKICAgICAgICAgICAgIGlmIChtYXAgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgZm9yIChpID0gb3Bhcmc7IGkgPiAwOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBpbnQgZXJyOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBQRUVLKDIqaSk7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gUEVFSygyKmkgLSAxKTsKKyAgICAgICAgICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbShtYXAsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWFwKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdoaWxlIChvcGFyZy0tKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoUE9QKCkpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgUFVTSChtYXApOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChTVE9SRV9NQVApIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBUT1AoKTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IFNFQ09ORCgpOwotICAgICAgICAgICAgUHlPYmplY3QgKm1hcCA9IFRISVJEKCk7Ci0gICAgICAgICAgICBpbnQgZXJyOwotICAgICAgICAgICAgU1RBQ0tBREooLTIpOwotICAgICAgICAgICAgYXNzZXJ0KFB5RGljdF9DaGVja0V4YWN0KG1hcCkpOwotICAgICAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW0obWFwLCBrZXksIHZhbHVlKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgIGlmIChlcnIgIT0gMCkKKyAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCwgX2J1aWxkX21hcF91bnBhY2spCisgICAgICAgIFRBUkdFVChCVUlMRF9NQVBfVU5QQUNLKQorICAgICAgICBfYnVpbGRfbWFwX3VucGFjazogeworICAgICAgICAgICAgaW50IHdpdGhfY2FsbCA9IG9wY29kZSA9PSBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTDsKKyAgICAgICAgICAgIGludCBudW1fbWFwczsKKyAgICAgICAgICAgIGludCBmdW5jdGlvbl9sb2NhdGlvbjsKKyAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgUHlPYmplY3QgKnN1bSA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgIGlmIChzdW0gPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgaWYgKHdpdGhfY2FsbCkgeworICAgICAgICAgICAgICAgIG51bV9tYXBzID0gb3BhcmcgJiAweGZmOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uX2xvY2F0aW9uID0gKG9wYXJnPj44KSAmIDB4ZmY7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBudW1fbWFwcyA9IG9wYXJnOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGkgPSBudW1fbWFwczsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBQRUVLKGkpOworICAgICAgICAgICAgICAgIGlmICh3aXRoX2NhbGwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmludGVyc2VjdGlvbiA9IF9QeURpY3RWaWV3X0ludGVyc2VjdChzdW0sIGFyZyk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGludGVyc2VjdGlvbiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBFRUsoZnVuY3Rpb25fbG9jYXRpb24gKyBudW1fbWFwcykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICoqICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgbWFwcGluZywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5U2V0X0dFVF9TSVpFKGludGVyc2VjdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaWR4ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFBFRUsoZnVuY3Rpb25fbG9jYXRpb24gKyBudW1fbWFwcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QeVNldF9OZXh0RW50cnkoaW50ZXJzZWN0aW9uLCAmaWR4LCAma2V5LCAmaGFzaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMga2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGdvdCBtdWx0aXBsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICclVSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbnRlcnNlY3Rpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbnRlcnNlY3Rpb24pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChQeURpY3RfVXBkYXRlKHN1bSwgYXJnKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBhIG1hcHBpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKG51bV9tYXBzLS0pCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgIFBVU0goc3VtKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIApAQCAtMjY1NSw2ICsyOTI3LDM0IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgVEFSR0VUKEdFVF9ZSUVMRF9GUk9NX0lURVIpIHsKKyAgICAgICAgICAgIC8qIGJlZm9yZTogW29ial07IGFmdGVyIFtnZXRpdGVyKG9iaildICovCisgICAgICAgICAgICBQeU9iamVjdCAqaXRlcmFibGUgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVyOworICAgICAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGl0ZXJhYmxlKSkgeworICAgICAgICAgICAgICAgIC8qIGBpdGVyYWJsZWAgaXMgYSBjb3JvdXRpbmUgKi8KKyAgICAgICAgICAgICAgICBpZiAoIShjby0+Y29fZmxhZ3MgJiAoQ09fQ09ST1VUSU5FIHwgQ09fSVRFUkFCTEVfQ09ST1VUSU5FKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogYW5kIGl0IGlzIHVzZWQgaW4gYSAneWllbGQgZnJvbScgZXhwcmVzc2lvbiBvZiBhCisgICAgICAgICAgICAgICAgICAgICAgIHJlZ3VsYXIgZ2VuZXJhdG9yLiAqLworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcmFibGUpOworICAgICAgICAgICAgICAgICAgICBTRVRfVE9QKE5VTEwpOworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCAneWllbGQgZnJvbScgYSBjb3JvdXRpbmUgb2JqZWN0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiBhIG5vbi1jb3JvdXRpbmUgZ2VuZXJhdG9yIik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoIVB5R2VuX0NoZWNrRXhhY3QoaXRlcmFibGUpKSB7CisgICAgICAgICAgICAgICAgLyogYGl0ZXJhYmxlYCBpcyBub3QgYSBnZW5lcmF0b3IuICovCisgICAgICAgICAgICAgICAgaXRlciA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyYWJsZSk7CisgICAgICAgICAgICAgICAgU0VUX1RPUChpdGVyKTsKKyAgICAgICAgICAgICAgICBpZiAoaXRlciA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFBSRURJQ1RFRF9XSVRIX0FSRyhGT1JfSVRFUik7CiAgICAgICAgIFRBUkdFVChGT1JfSVRFUikgewogICAgICAgICAgICAgLyogYmVmb3JlOiBbaXRlcl07IGFmdGVyOiBbaXRlciwgaXRlcigpXSAqb3IqIFtdICovCkBAIC0yNzA3LDYgKzMwMDcsMzkgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoQkVGT1JFX0FTWU5DX1dJVEgpIHsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fYWV4aXRfXyk7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2FlbnRlcl9fKTsKKworICAgICAgICAgICAgUHlPYmplY3QgKm1nciA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmV4aXQgPSBzcGVjaWFsX2xvb2t1cChtZ3IsICZQeUlkX19fYWV4aXRfXyksCisgICAgICAgICAgICAgICAgICAgICAqZW50ZXI7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzOworICAgICAgICAgICAgaWYgKGV4aXQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgU0VUX1RPUChleGl0KTsKKyAgICAgICAgICAgIGVudGVyID0gc3BlY2lhbF9sb29rdXAobWdyLCAmUHlJZF9fX2FlbnRlcl9fKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihtZ3IpOworICAgICAgICAgICAgaWYgKGVudGVyID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZW50ZXIsIE5VTEwpOworICAgICAgICAgICAgUHlfREVDUkVGKGVudGVyKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgUFVTSChyZXMpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChTRVRVUF9BU1lOQ19XSVRIKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gUE9QKCk7CisgICAgICAgICAgICAvKiBTZXR1cCB0aGUgZmluYWxseSBibG9jayBiZWZvcmUgcHVzaGluZyB0aGUgcmVzdWx0CisgICAgICAgICAgICAgICBvZiBfX2FlbnRlcl9fIG9uIHRoZSBzdGFjay4gKi8KKyAgICAgICAgICAgIFB5RnJhbWVfQmxvY2tTZXR1cChmLCBTRVRVUF9GSU5BTExZLCBJTlNUUl9PRkZTRVQoKSArIG9wYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQUNLX0xFVkVMKCkpOworICAgICAgICAgICAgUFVTSChyZXMpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFRBUkdFVChTRVRVUF9XSVRIKSB7CiAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2V4aXRfXyk7CiAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2VudGVyX18pOwpAQCAtMjczMyw3ICszMDY2LDcgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoV0lUSF9DTEVBTlVQKSB7CisgICAgICAgIFRBUkdFVChXSVRIX0NMRUFOVVBfU1RBUlQpIHsKICAgICAgICAgICAgIC8qIEF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGFyZSAxLTYgdmFsdWVzIGluZGljYXRpbmcKICAgICAgICAgICAgICAgIGhvdy93aHkgd2UgZW50ZXJlZCB0aGUgZmluYWxseSBjbGF1c2U6CiAgICAgICAgICAgICAgICAtIFRPUCA9IE5vbmUKQEAgLTI3NjEsNyArMzA5NCw2IEBACiAKICAgICAgICAgICAgIFB5T2JqZWN0ICpleGl0X2Z1bmM7CiAgICAgICAgICAgICBQeU9iamVjdCAqZXhjID0gVE9QKCksICp2YWwgPSBQeV9Ob25lLCAqdGIgPSBQeV9Ob25lLCAqcmVzOwotICAgICAgICAgICAgaW50IGVycjsKICAgICAgICAgICAgIGlmIChleGMgPT0gUHlfTm9uZSkgewogICAgICAgICAgICAgICAgICh2b2lkKVBPUCgpOwogICAgICAgICAgICAgICAgIGV4aXRfZnVuYyA9IFRPUCgpOwpAQCAtMjgxMSwxMSArMzE0MywyNiBAQAogICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKKyAgICAgICAgICAgIFB5X0lOQ1JFRihleGMpOyAvKiBEdXBsaWNhdGluZyB0aGUgZXhjZXB0aW9uIG9uIHRoZSBzdGFjayAqLworICAgICAgICAgICAgUFVTSChleGMpOworICAgICAgICAgICAgUFVTSChyZXMpOworICAgICAgICAgICAgUFJFRElDVChXSVRIX0NMRUFOVVBfRklOSVNIKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBQUkVESUNURUQoV0lUSF9DTEVBTlVQX0ZJTklTSCk7CisgICAgICAgIFRBUkdFVChXSVRIX0NMRUFOVVBfRklOSVNIKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqZXhjID0gUE9QKCk7CisgICAgICAgICAgICBpbnQgZXJyOworCiAgICAgICAgICAgICBpZiAoZXhjICE9IFB5X05vbmUpCiAgICAgICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfSXNUcnVlKHJlcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZXJyID0gMDsKKwogICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZXhjKTsKIAogICAgICAgICAgICAgaWYgKGVyciA8IDApCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI4NjcsOCArMzIxNCw3IEBACiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwogICAgICAgICAgICAgICAgIGZ1bmMgPSBQeU1ldGhvZF9HRVRfRlVOQ1RJT04oZnVuYyk7CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRigqcGZ1bmMpOwotICAgICAgICAgICAgICAgICpwZnVuYyA9IHNlbGY7CisgICAgICAgICAgICAgICAgUHlfU0VUUkVGKCpwZnVuYywgc2VsZik7CiAgICAgICAgICAgICAgICAgbmErKzsKICAgICAgICAgICAgICAgICAvKiBuKys7ICovCiAgICAgICAgICAgICB9IGVsc2UKQEAgLTMwMjYsNiArMzM3Miw3IEBACiAgICAgICAgICAgICBnb3RvIGRpc3BhdGNoX29wY29kZTsKICAgICAgICAgfQogCisKICNpZiBVU0VfQ09NUFVURURfR09UT1MKICAgICAgICAgX3Vua25vd25fb3Bjb2RlOgogI2VuZGlmCkBAIC0zMTY4LDExICszNTE1LDEwIEBACiAgICAgaWYgKHdoeSAhPSBXSFlfUkVUVVJOKQogICAgICAgICByZXR2YWwgPSBOVUxMOwogCi0gICAgYXNzZXJ0KChyZXR2YWwgIT0gTlVMTCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHx8IChyZXR2YWwgPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSk7CisgICAgYXNzZXJ0KChyZXR2YWwgIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CiAKIGZhc3RfeWllbGQ6Ci0gICAgaWYgKGNvLT5jb19mbGFncyAmIENPX0dFTkVSQVRPUikgeworICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FKSkgewogCiAgICAgICAgIC8qIFRoZSBwdXJwb3NlIG9mIHRoaXMgYmxvY2sgaXMgdG8gcHV0IGFzaWRlIHRoZSBnZW5lcmF0b3IncyBleGNlcHRpb24KICAgICAgICAgICAgc3RhdGUgYW5kIHJlc3RvcmUgdGhhdCBvZiB0aGUgY2FsbGluZyBmcmFtZS4gSWYgdGhlIGN1cnJlbnQKQEAgLTMyMzAsNyArMzU3Niw3IEBACiAgICAgZi0+Zl9leGVjdXRpbmcgPSAwOwogICAgIHRzdGF0ZS0+ZnJhbWUgPSBmLT5mX2JhY2s7CiAKLSAgICByZXR1cm4gcmV0dmFsOworICAgIHJldHVybiBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChOVUxMLCByZXR2YWwsICJQeUV2YWxfRXZhbEZyYW1lRXgiKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTMzODcsMTAgKzM3MzMsMTEgQEAKICAgIFB5RXZhbF9FdmFsRnJhbWUoKSBhbmQgUHlFdmFsX0V2YWxDb2RlRXgoKSB5b3Ugd2lsbCBuZWVkIHRvIGFkanVzdAogICAgdGhlIHRlc3QgaW4gdGhlIGlmIHN0YXRlbWVudHMgaW4gTWlzYy9nZGJpbml0IChweXN0YWNrIGFuZCBweXN0YWNrdikuICovCiAKLVB5T2JqZWN0ICoKLVB5RXZhbF9FdmFsQ29kZUV4KFB5T2JqZWN0ICpfY28sIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLAorc3RhdGljIFB5T2JqZWN0ICoKK19QeUV2YWxfRXZhbENvZGVXaXRoTmFtZShQeU9iamVjdCAqX2NvLCBQeU9iamVjdCAqZ2xvYmFscywgUHlPYmplY3QgKmxvY2FscywKICAgICAgICAgICAgUHlPYmplY3QgKiphcmdzLCBpbnQgYXJnY291bnQsIFB5T2JqZWN0ICoqa3dzLCBpbnQga3djb3VudCwKLSAgICAgICAgICAgUHlPYmplY3QgKipkZWZzLCBpbnQgZGVmY291bnQsIFB5T2JqZWN0ICprd2RlZnMsIFB5T2JqZWN0ICpjbG9zdXJlKQorICAgICAgICAgICBQeU9iamVjdCAqKmRlZnMsIGludCBkZWZjb3VudCwgUHlPYmplY3QgKmt3ZGVmcywgUHlPYmplY3QgKmNsb3N1cmUsCisgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpCiB7CiAgICAgUHlDb2RlT2JqZWN0KiBjbyA9IChQeUNvZGVPYmplY3QqKV9jbzsKICAgICBQeUZyYW1lT2JqZWN0ICpmOwpAQCAtMzU3Myw3ICszOTIwLDIxIEBACiAgICAgICAgIGZyZWV2YXJzW1B5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2NlbGx2YXJzKSArIGldID0gbzsKICAgICB9CiAKLSAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fR0VORVJBVE9SKSB7CisgICAgaWYgKGNvLT5jb19mbGFncyAmIChDT19HRU5FUkFUT1IgfCBDT19DT1JPVVRJTkUpKSB7CisgICAgICAgIFB5T2JqZWN0ICpnZW47CisgICAgICAgIFB5T2JqZWN0ICpjb3JvX3dyYXBwZXIgPSB0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyOworICAgICAgICBpbnQgaXNfY29ybyA9IGNvLT5jb19mbGFncyAmIENPX0NPUk9VVElORTsKKworICAgICAgICBpZiAoaXNfY29ybyAmJiB0c3RhdGUtPmluX2Nvcm91dGluZV93cmFwcGVyKSB7CisgICAgICAgICAgICBhc3NlcnQoY29yb193cmFwcGVyICE9IE5VTEwpOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY29yb3V0aW5lIHdyYXBwZXIgJS4yMDBSIGF0dGVtcHRlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInRvIHJlY3Vyc2l2ZWx5IHdyYXAgJS4yMDBSIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb3JvX3dyYXBwZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY28pOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisKICAgICAgICAgLyogRG9uJ3QgbmVlZCB0byBrZWVwIHRoZSByZWZlcmVuY2UgdG8gZl9iYWNrLCBpdCB3aWxsIGJlIHNldAogICAgICAgICAgKiB3aGVuIHRoZSBnZW5lcmF0b3IgaXMgcmVzdW1lZC4gKi8KICAgICAgICAgUHlfQ0xFQVIoZi0+Zl9iYWNrKTsKQEAgLTM1ODIsNyArMzk0MywyMyBAQAogCiAgICAgICAgIC8qIENyZWF0ZSBhIG5ldyBnZW5lcmF0b3IgdGhhdCBvd25zIHRoZSByZWFkeSB0byBydW4gZnJhbWUKICAgICAgICAgICogYW5kIHJldHVybiB0aGF0IGFzIHRoZSB2YWx1ZS4gKi8KLSAgICAgICAgcmV0dXJuIFB5R2VuX05ldyhmKTsKKyAgICAgICAgaWYgKGlzX2Nvcm8pIHsKKyAgICAgICAgICAgIGdlbiA9IFB5Q29yb19OZXcoZiwgbmFtZSwgcXVhbG5hbWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZ2VuID0gUHlHZW5fTmV3V2l0aFF1YWxOYW1lKGYsIG5hbWUsIHF1YWxuYW1lKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZ2VuID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBpZiAoaXNfY29ybyAmJiBjb3JvX3dyYXBwZXIgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlPYmplY3QgKndyYXBwZWQ7CisgICAgICAgICAgICB0c3RhdGUtPmluX2Nvcm91dGluZV93cmFwcGVyID0gMTsKKyAgICAgICAgICAgIHdyYXBwZWQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY29yb193cmFwcGVyLCAiTiIsIGdlbik7CisgICAgICAgICAgICB0c3RhdGUtPmluX2Nvcm91dGluZV93cmFwcGVyID0gMDsKKyAgICAgICAgICAgIHJldHVybiB3cmFwcGVkOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGdlbjsKICAgICB9CiAKICAgICByZXR2YWwgPSBQeUV2YWxfRXZhbEZyYW1lRXgoZiwwKTsKQEAgLTM2MDEsNiArMzk3OCwxNiBAQAogICAgIHJldHVybiByZXR2YWw7CiB9CiAKK1B5T2JqZWN0ICoKK1B5RXZhbF9FdmFsQ29kZUV4KFB5T2JqZWN0ICpfY28sIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLAorICAgICAgICAgICBQeU9iamVjdCAqKmFyZ3MsIGludCBhcmdjb3VudCwgUHlPYmplY3QgKiprd3MsIGludCBrd2NvdW50LAorICAgICAgICAgICBQeU9iamVjdCAqKmRlZnMsIGludCBkZWZjb3VudCwgUHlPYmplY3QgKmt3ZGVmcywgUHlPYmplY3QgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIF9QeUV2YWxfRXZhbENvZGVXaXRoTmFtZShfY28sIGdsb2JhbHMsIGxvY2FscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGFyZ2NvdW50LCBrd3MsIGt3Y291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZzLCBkZWZjb3VudCwga3dkZWZzLCBjbG9zdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzcGVjaWFsX2xvb2t1cChQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKmlkKQpAQCAtMzc5MSw5ICs0MTc4LDE3IEBACiAgICAgICAgIGlmICh3ID09IE5VTEwpIHsKICAgICAgICAgICAgIC8qIEl0ZXJhdG9yIGRvbmUsIHZpYSBlcnJvciBvciBleGhhdXN0aW9uLiAqLwogICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJuZWVkIG1vcmUgdGhhbiAlZCB2YWx1ZSVzIHRvIHVucGFjayIsCi0gICAgICAgICAgICAgICAgICAgIGksIGkgPT0gMSA/ICIiIDogInMiKTsKKyAgICAgICAgICAgICAgICBpZiAoYXJnY250YWZ0ZXIgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibm90IGVub3VnaCB2YWx1ZXMgdG8gdW5wYWNrIChleHBlY3RlZCAlZCwgZ290ICVkKSIsCisgICAgICAgICAgICAgICAgICAgICAgICBhcmdjbnQsIGkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibm90IGVub3VnaCB2YWx1ZXMgdG8gdW5wYWNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICIoZXhwZWN0ZWQgYXQgbGVhc3QgJWQsIGdvdCAlZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgYXJnY250ICsgYXJnY250YWZ0ZXIsIGkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdvdG8gRXJyb3I7CiAgICAgICAgIH0KQEAgLTM4MTAsOCArNDIwNSw5IEBACiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYodyk7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAidG9vIG1hbnkgdmFsdWVzIHRvIHVucGFjayAiCi0gICAgICAgICAgICAgICAgICAgICAiKGV4cGVjdGVkICVkKSIsIGFyZ2NudCk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgInRvbyBtYW55IHZhbHVlcyB0byB1bnBhY2sgKGV4cGVjdGVkICVkKSIsCisgICAgICAgICAgICBhcmdjbnQpOwogICAgICAgICBnb3RvIEVycm9yOwogICAgIH0KIApAQCAtMzgyMyw4ICs0MjE5LDkgQEAKIAogICAgIGxsID0gUHlMaXN0X0dFVF9TSVpFKGwpOwogICAgIGlmIChsbCA8IGFyZ2NudGFmdGVyKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAibmVlZCBtb3JlIHRoYW4gJXpkIHZhbHVlcyB0byB1bnBhY2siLAotICAgICAgICAgICAgICAgICAgICAgYXJnY250ICsgbGwpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJub3QgZW5vdWdoIHZhbHVlcyB0byB1bnBhY2sgKGV4cGVjdGVkIGF0IGxlYXN0ICVkLCBnb3QgJXpkKSIsCisgICAgICAgICAgICBhcmdjbnQgKyBhcmdjbnRhZnRlciwgYXJnY250ICsgbGwpOwogICAgICAgICBnb3RvIEVycm9yOwogICAgIH0KIApAQCAtNDAwOCw2ICs0NDA1LDIyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAodHN0YXRlLT5jX3Byb2ZpbGVmdW5jICE9IE5VTEwpKTsKIH0KIAordm9pZAorX1B5RXZhbF9TZXRDb3JvdXRpbmVXcmFwcGVyKFB5T2JqZWN0ICp3cmFwcGVyKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisKKyAgICBQeV9YSU5DUkVGKHdyYXBwZXIpOworICAgIFB5X1NFVFJFRih0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyLCB3cmFwcGVyKTsKK30KKworUHlPYmplY3QgKgorX1B5RXZhbF9HZXRDb3JvdXRpbmVXcmFwcGVyKHZvaWQpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICByZXR1cm4gdHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlcjsKK30KKwogUHlPYmplY3QgKgogUHlFdmFsX0dldEJ1aWx0aW5zKHZvaWQpCiB7CkBAIC00MDg2LDggKzQ0OTksOCBAQAogCiAjaWZkZWYgUHlfREVCVUcKICAgICAvKiBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcygpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbgotICAgICAgIHNldCwgYmVjYXVzZSBpdCBtYXkgY2xlYXIgaXQgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpCi0gICAgICAgYW5kIHNvIHRoZSBjYWxsZXIgbG9zZXMgaXRzIGV4Y2VwdGlvbiAqLworICAgICAgIHNldC4gSXQgcmFpc2VzIGEgbmV3IGV4Y2VwdGlvbiBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkIG9yIGlmCisgICAgICAgUHlUdXBsZV9OZXcoKSBmYWlscywgYW5kIHNvIHRoZSBvcmlnaW5hbCBleGNlcHRpb24gaXMgbG9zdC4gKi8KICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOwogI2VuZGlmCiAKQEAgLTQxMTQsOCArNDUyNyw2IEBACiAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmcsIGt3KTsKICAgICBQeV9ERUNSRUYoYXJnKTsKIAotICAgIGFzc2VydCgocmVzdWx0ICE9IE5VTEwgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgIHx8IChyZXN1bHQgPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDIxOCwxMSArNDYyOSwxNSBAQAogICAgICAgICAgICAgUHlPYmplY3QgKnNlbGYgPSBQeUNGdW5jdGlvbl9HRVRfU0VMRihmdW5jKTsKICAgICAgICAgICAgIGlmIChmbGFncyAmIE1FVEhfTk9BUkdTICYmIG5hID09IDApIHsKICAgICAgICAgICAgICAgICBDX1RSQUNFKHgsICgqbWV0aCkoc2VsZixOVUxMKSk7CisKKyAgICAgICAgICAgICAgICB4ID0gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuYywgeCwgTlVMTCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIE1FVEhfTyAmJiBuYSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZyA9IEVYVF9QT1AoKnBwX3N0YWNrKTsKICAgICAgICAgICAgICAgICBDX1RSQUNFKHgsICgqbWV0aCkoc2VsZixhcmcpKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXJnKTsKKworICAgICAgICAgICAgICAgIHggPSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jLCB4LCBOVUxMKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGVycl9hcmdzKGZ1bmMsIGZsYWdzLCBuYSk7CkBAIC00MjQyLDcgKzQ2NTcsOCBAQAogICAgICAgICAgICAgICAgIHggPSBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIGlmIChQeU1ldGhvZF9DaGVjayhmdW5jKSAmJiBQeU1ldGhvZF9HRVRfU0VMRihmdW5jKSAhPSBOVUxMKSB7CiAgICAgICAgICAgICAvKiBvcHRpbWl6ZSBhY2Nlc3MgdG8gYm91bmQgbWV0aG9kcyAqLwogICAgICAgICAgICAgUHlPYmplY3QgKnNlbGYgPSBQeU1ldGhvZF9HRVRfU0VMRihmdW5jKTsKQEAgLTQyNTEsOCArNDY2Nyw3IEBACiAgICAgICAgICAgICBQeV9JTkNSRUYoc2VsZik7CiAgICAgICAgICAgICBmdW5jID0gUHlNZXRob2RfR0VUX0ZVTkNUSU9OKGZ1bmMpOwogICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgICAgICAgICAgUHlfREVDUkVGKCpwZnVuYyk7Ci0gICAgICAgICAgICAqcGZ1bmMgPSBzZWxmOworICAgICAgICAgICAgUHlfU0VUUkVGKCpwZnVuYywgc2VsZik7CiAgICAgICAgICAgICBuYSsrOwogICAgICAgICAgICAgbisrOwogICAgICAgICB9IGVsc2UKQEAgLTQyNjQsOSArNDY3OSw5IEBACiAgICAgICAgICAgICB4ID0gZG9fY2FsbChmdW5jLCBwcF9zdGFjaywgbmEsIG5rKTsKICAgICAgICAgUkVBRF9USU1FU1RBTVAoKnBpbnRyMSk7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKworICAgICAgICBhc3NlcnQoKHggIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CiAgICAgfQotICAgIGFzc2VydCgoeCAhPSBOVUxMICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICB8fCAoeCA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpKTsKIAogICAgIC8qIENsZWFyIHRoZSBzdGFjayBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgQWxzbyByZW1vdmVzCiAgICAgICAgdGhlIGFyZ3VtZW50cyBpbiBjYXNlIHRoZXkgd2VyZW4ndCBjb25zdW1lZCBhbHJlYWR5CkBAIC00Mjc4LDggKzQ2OTMsNyBAQAogICAgICAgICBQQ0FMTChQQ0FMTF9QT1ApOwogICAgIH0KIAotICAgIGFzc2VydCgoeCAhPSBOVUxMICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICB8fCAoeCA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpKTsKKyAgICBhc3NlcnQoKHggIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CiAgICAgcmV0dXJuIHg7CiB9CiAKQEAgLTQyOTksNiArNDcxMyw4IEBACiAgICAgUHlPYmplY3QgKmdsb2JhbHMgPSBQeUZ1bmN0aW9uX0dFVF9HTE9CQUxTKGZ1bmMpOwogICAgIFB5T2JqZWN0ICphcmdkZWZzID0gUHlGdW5jdGlvbl9HRVRfREVGQVVMVFMoZnVuYyk7CiAgICAgUHlPYmplY3QgKmt3ZGVmcyA9IFB5RnVuY3Rpb25fR0VUX0tXX0RFRkFVTFRTKGZ1bmMpOworICAgIFB5T2JqZWN0ICpuYW1lID0gKChQeUZ1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gZnVuY19uYW1lOworICAgIFB5T2JqZWN0ICpxdWFsbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfcXVhbG5hbWU7CiAgICAgUHlPYmplY3QgKipkID0gTlVMTDsKICAgICBpbnQgbmQgPSAwOwogCkBAIC00MzQxLDEwICs0NzU3LDExIEBACiAgICAgICAgIGQgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdkZWZzLCAwKTsKICAgICAgICAgbmQgPSBQeV9TSVpFKGFyZ2RlZnMpOwogICAgIH0KLSAgICByZXR1cm4gUHlFdmFsX0V2YWxDb2RlRXgoKFB5T2JqZWN0KiljbywgZ2xvYmFscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopTlVMTCwgKCpwcF9zdGFjayktbiwgbmEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqcHBfc3RhY2spLTIqbmssIG5rLCBkLCBuZCwga3dkZWZzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX0dFVF9DTE9TVVJFKGZ1bmMpKTsKKyAgICByZXR1cm4gX1B5RXZhbF9FdmFsQ29kZVdpdGhOYW1lKChQeU9iamVjdCopY28sIGdsb2JhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKilOVUxMLCAoKnBwX3N0YWNrKS1uLCBuYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqcHBfc3RhY2spLTIqbmssIG5rLCBkLCBuZCwga3dkZWZzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9HRVRfQ0xPU1VSRShmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHF1YWxuYW1lKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQ1MDgsNiArNDkyNSwxMiBAQAogICAgICAgICAgICAga3dkaWN0ID0gZDsKICAgICAgICAgfQogICAgIH0KKyAgICBpZiAobmsgPiAwKSB7CisgICAgICAgIGt3ZGljdCA9IHVwZGF0ZV9rZXl3b3JkX2FyZ3Moa3dkaWN0LCBuaywgcHBfc3RhY2ssIGZ1bmMpOworICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7CisgICAgfQorCiAgICAgaWYgKGZsYWdzICYgQ0FMTF9GTEFHX1ZBUikgewogICAgICAgICBzdGFyYXJnID0gRVhUX1BPUCgqcHBfc3RhY2spOwogICAgICAgICBpZiAoIVB5VHVwbGVfQ2hlY2soc3RhcmFyZykpIHsKQEAgLTQ1MjksMTEgKzQ5NTIsNiBAQAogICAgICAgICB9CiAgICAgICAgIG5zdGFyID0gUHlUdXBsZV9HRVRfU0laRShzdGFyYXJnKTsKICAgICB9Ci0gICAgaWYgKG5rID4gMCkgewotICAgICAgICBrd2RpY3QgPSB1cGRhdGVfa2V5d29yZF9hcmdzKGt3ZGljdCwgbmssIHBwX3N0YWNrLCBmdW5jKTsKLSAgICAgICAgaWYgKGt3ZGljdCA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBleHRfY2FsbF9mYWlsOwotICAgIH0KICAgICBjYWxsYXJncyA9IHVwZGF0ZV9zdGFyX2FyZ3MobmEsIG5zdGFyLCBzdGFyYXJnLCBwcF9zdGFjayk7CiAgICAgaWYgKGNhbGxhcmdzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXh0X2NhbGxfZmFpbDsKQEAgLTQ1NjMsMTIgKzQ5ODEsMTAgQEAKICAgICBQeV9YREVDUkVGKGNhbGxhcmdzKTsKICAgICBQeV9YREVDUkVGKGt3ZGljdCk7CiAgICAgUHlfWERFQ1JFRihzdGFyYXJnKTsKLSAgICBhc3NlcnQoKHJlc3VsdCAhPSBOVUxMICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICB8fCAocmVzdWx0ID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS8qIEV4dHJhY3QgYSBzbGljZSBpbmRleCBmcm9tIGEgUHlJbnQgb3IgUHlMb25nIG9yIGFuIG9iamVjdCB3aXRoIHRoZQorLyogRXh0cmFjdCBhIHNsaWNlIGluZGV4IGZyb20gYSBQeUxvbmcgb3IgYW4gb2JqZWN0IHdpdGggdGhlCiAgICBuYl9pbmRleCBzbG90IGRlZmluZWQsIGFuZCBzdG9yZSBpbiAqcGkuCiAgICBTaWxlbnRseSByZWR1Y2UgdmFsdWVzIGxhcmdlciB0aGFuIFBZX1NTSVpFX1RfTUFYIHRvIFBZX1NTSVpFX1RfTUFYLAogICAgYW5kIHNpbGVudGx5IGJvb3N0IHZhbHVlcyBsZXNzIHRoYW4gLVBZX1NTSVpFX1RfTUFYLTEgdG8gLVBZX1NTSVpFX1RfTUFYLTEuCkBAIC00NjU4LDEyICs1MDc0LDM1IEBACiBpbXBvcnRfZnJvbShQeU9iamVjdCAqdiwgUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgUHlPYmplY3QgKng7CisgICAgX1B5X0lERU5USUZJRVIoX19uYW1lX18pOworICAgIFB5T2JqZWN0ICpmdWxsbW9kbmFtZSwgKnBrZ25hbWU7CiAKICAgICB4ID0gUHlPYmplY3RfR2V0QXR0cih2LCBuYW1lKTsKLSAgICBpZiAoeCA9PSBOVUxMICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwgImNhbm5vdCBpbXBvcnQgbmFtZSAlUiIsIG5hbWUpOworICAgIGlmICh4ICE9IE5VTEwgfHwgIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQorICAgICAgICByZXR1cm4geDsKKyAgICAvKiBJc3N1ZSAjMTc2MzY6IGluIGNhc2UgdGhpcyBmYWlsZWQgYmVjYXVzZSBvZiBhIGNpcmN1bGFyIHJlbGF0aXZlCisgICAgICAgaW1wb3J0LCB0cnkgdG8gZmFsbGJhY2sgb24gcmVhZGluZyB0aGUgbW9kdWxlIGRpcmVjdGx5IGZyb20KKyAgICAgICBzeXMubW9kdWxlcy4gKi8KKyAgICBQeUVycl9DbGVhcigpOworICAgIHBrZ25hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKHYsICZQeUlkX19fbmFtZV9fKTsKKyAgICBpZiAocGtnbmFtZSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQorICAgIGZ1bGxtb2RuYW1lID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVLiVVIiwgcGtnbmFtZSwgbmFtZSk7CisgICAgUHlfREVDUkVGKHBrZ25hbWUpOworICAgIGlmIChmdWxsbW9kbmFtZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICB4ID0gUHlEaWN0X0dldEl0ZW0oUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpLCBmdWxsbW9kbmFtZSk7CisgICAgUHlfREVDUkVGKGZ1bGxtb2RuYW1lKTsKKyAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIFB5X0lOQ1JFRih4KTsKICAgICByZXR1cm4geDsKKyBlcnJvcjoKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsICJjYW5ub3QgaW1wb3J0IG5hbWUgJVIiLCBuYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIGludApkaWZmIC0tZ2l0IGEvUHl0aG9uL2NldmFsX2dpbC5oIGIvUHl0aG9uL2NldmFsX2dpbC5oCmluZGV4IDI3MDJkNWMuLmFhZmNiYzIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jZXZhbF9naWwuaAorKysgYi9QeXRob24vY2V2YWxfZ2lsLmgKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAgdmFyaWFibGUgKGdpbF9kcm9wX3JlcXVlc3QpIGlzIHVzZWQgZm9yIHRoYXQgcHVycG9zZSwgd2hpY2ggaXMgY2hlY2tlZAogICAgICBhdCBldmVyeSB0dXJuIG9mIHRoZSBldmFsIGxvb3AuIFRoYXQgdmFyaWFibGUgaXMgc2V0IGFmdGVyIGEgd2FpdCBvZgogICAgICBgaW50ZXJ2YWxgIG1pY3Jvc2Vjb25kcyBvbiBgZ2lsX2NvbmRgIGhhcyB0aW1lZCBvdXQuCi0gICAgICAKKwogICAgICAgW0FjdHVhbGx5LCBhbm90aGVyIHZvbGF0aWxlIGJvb2xlYW4gdmFyaWFibGUgKGV2YWxfYnJlYWtlcikgaXMgdXNlZAogICAgICAgIHdoaWNoIE9ScyBzZXZlcmFsIGNvbmRpdGlvbnMgaW50byBvbmUuIFZvbGF0aWxlIGJvb2xlYW5zIGFyZQogICAgICAgIHN1ZmZpY2llbnQgYXMgaW50ZXItdGhyZWFkIHNpZ25hbGxpbmcgbWVhbnMgc2luY2UgUHl0aG9uIGlzIHJ1bgpAQCAtNDEsNyArNDEsNyBAQAogICAgICB0aW1lIChgaW50ZXJ2YWxgIG1pY3Jvc2Vjb25kcykgYmVmb3JlIHNldHRpbmcgZ2lsX2Ryb3BfcmVxdWVzdC4gVGhpcwogICAgICBlbmNvdXJhZ2VzIGEgZGVmaW5lZCBzd2l0Y2hpbmcgcGVyaW9kLCBidXQgZG9lc24ndCBlbmZvcmNlIGl0IHNpbmNlCiAgICAgIG9wY29kZXMgY2FuIHRha2UgYW4gYXJiaXRyYXJ5IHRpbWUgdG8gZXhlY3V0ZS4KLSAKKwogICAgICBUaGUgYGludGVydmFsYCB2YWx1ZSBpcyBhdmFpbGFibGUgZm9yIHRoZSB1c2VyIHRvIHJlYWQgYW5kIG1vZGlmeQogICAgICB1c2luZyB0aGUgUHl0aG9uIEFQSSBgc3lzLntnZXQsc2V0fXN3aXRjaGludGVydmFsKClgLgogCkBAIC01MSw3ICs1MSw3IEBACiAgICAgIHRoZSB2YWx1ZSBvZiBnaWxfbGFzdF9ob2xkZXIgaXMgY2hhbmdlZCB0byBzb21ldGhpbmcgZWxzZSB0aGFuIGl0cwogICAgICBvd24gdGhyZWFkIHN0YXRlIHBvaW50ZXIsIGluZGljYXRpbmcgdGhhdCBhbm90aGVyIHRocmVhZCB3YXMgYWJsZSB0bwogICAgICB0YWtlIHRoZSBHSUwuCi0gCisKICAgICAgVGhpcyBpcyBtZWFudCB0byBwcm9oaWJpdCB0aGUgbGF0ZW5jeS1hZHZlcnNlIGJlaGF2aW91ciBvbiBtdWx0aS1jb3JlCiAgICAgIG1hY2hpbmVzIHdoZXJlIG9uZSB0aHJlYWQgd291bGQgc3BlY3VsYXRpdmVseSByZWxlYXNlIHRoZSBHSUwsIGJ1dCBzdGlsbAogICAgICBydW4gYW5kIGVuZCB1cCBiZWluZyB0aGUgZmlyc3QgdG8gcmUtYWNxdWlyZSBpdCwgbWFraW5nIHRoZSAidGltZXNsaWNlcyIKQEAgLTE4NiwxMiArMTg2LDEyIEBACiAgICAgX1B5X2F0b21pY19zdG9yZV9yZWxheGVkKCZnaWxfbG9ja2VkLCAwKTsKICAgICBDT05EX1NJR05BTChnaWxfY29uZCk7CiAgICAgTVVURVhfVU5MT0NLKGdpbF9tdXRleCk7Ci0gICAgCisKICNpZmRlZiBGT1JDRV9TV0lUQ0hJTkcKICAgICBpZiAoX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmdpbF9kcm9wX3JlcXVlc3QpICYmIHRzdGF0ZSAhPSBOVUxMKSB7CiAgICAgICAgIE1VVEVYX0xPQ0soc3dpdGNoX211dGV4KTsKICAgICAgICAgLyogTm90IHN3aXRjaGVkIHlldCA9PiB3YWl0ICovCi0gICAgICAgIGlmIChfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyKSA9PSB0c3RhdGUpIHsKKyAgICAgICAgaWYgKChQeVRocmVhZFN0YXRlKilfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyKSA9PSB0c3RhdGUpIHsKICAgICAgICAgUkVTRVRfR0lMX0RST1BfUkVRVUVTVCgpOwogICAgICAgICAgICAgLyogTk9URTogaWYgQ09ORF9XQUlUIGRvZXMgbm90IGF0b21pY2FsbHkgc3RhcnQgd2FpdGluZyB3aGVuCiAgICAgICAgICAgICAgICByZWxlYXNpbmcgdGhlIG11dGV4LCBhbm90aGVyIHRocmVhZCBjYW4gcnVuIHRocm91Z2gsIHRha2UKQEAgLTIxNSw3ICsyMTUsNyBAQAogCiAgICAgaWYgKCFfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmZ2lsX2xvY2tlZCkpCiAgICAgICAgIGdvdG8gX3JlYWR5OwotICAgIAorCiAgICAgd2hpbGUgKF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZnaWxfbG9ja2VkKSkgewogICAgICAgICBpbnQgdGltZWRfb3V0ID0gMDsKICAgICAgICAgdW5zaWduZWQgbG9uZyBzYXZlZF9zd2l0Y2hudW07CkBAIC0yMzksNyArMjM5LDcgQEAKICAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJmdpbF9sb2NrZWQsIDEpOwogICAgIF9QeV9BTk5PVEFURV9SV0xPQ0tfQUNRVUlSRUQoJmdpbF9sb2NrZWQsIC8qaXNfd3JpdGU9Ki8xKTsKIAotICAgIGlmICh0c3RhdGUgIT0gX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlcikpIHsKKyAgICBpZiAodHN0YXRlICE9IChQeVRocmVhZFN0YXRlKilfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyKSkgewogICAgICAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlciwgdHN0YXRlKTsKICAgICAgICAgKytnaWxfc3dpdGNoX251bWJlcjsKICAgICB9CkBAIC0yNTQsNyArMjU0LDcgQEAKICAgICBpZiAodHN0YXRlLT5hc3luY19leGMgIT0gTlVMTCkgewogICAgICAgICBfUHlFdmFsX1NpZ25hbEFzeW5jRXhjKCk7CiAgICAgfQotICAgIAorCiAgICAgTVVURVhfVU5MT0NLKGdpbF9tdXRleCk7CiAgICAgZXJybm8gPSBlcnI7CiB9CmRpZmYgLS1naXQgYS9QeXRob24vY2xpbmljL2JsdGlubW9kdWxlLmMuaCBiL1B5dGhvbi9jbGluaWMvYmx0aW5tb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNjkxNDgKLS0tIC9kZXYvbnVsbAorKysgYi9QeXRob24vY2xpbmljL2JsdGlubW9kdWxlLmMuaApAQCAtMCwwICsxLDY2MyBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fYWJzX19kb2NfXywKKyJhYnMoJG1vZHVsZSwgeCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIGFyZ3VtZW50LiIpOworCisjZGVmaW5lIEJVSUxUSU5fQUJTX01FVEhPRERFRiAgICBcCisgICAgeyJhYnMiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9hYnMsIE1FVEhfTywgYnVpbHRpbl9hYnNfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fYWxsX19kb2NfXywKKyJhbGwoJG1vZHVsZSwgaXRlcmFibGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gVHJ1ZSBpZiBib29sKHgpIGlzIFRydWUgZm9yIGFsbCB2YWx1ZXMgeCBpbiB0aGUgaXRlcmFibGUuXG4iCisiXG4iCisiSWYgdGhlIGl0ZXJhYmxlIGlzIGVtcHR5LCByZXR1cm4gVHJ1ZS4iKTsKKworI2RlZmluZSBCVUlMVElOX0FMTF9NRVRIT0RERUYgICAgXAorICAgIHsiYWxsIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fYWxsLCBNRVRIX08sIGJ1aWx0aW5fYWxsX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihidWlsdGluX2FueV9fZG9jX18sCisiYW55KCRtb2R1bGUsIGl0ZXJhYmxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIFRydWUgaWYgYm9vbCh4KSBpcyBUcnVlIGZvciBhbnkgeCBpbiB0aGUgaXRlcmFibGUuXG4iCisiXG4iCisiSWYgdGhlIGl0ZXJhYmxlIGlzIGVtcHR5LCByZXR1cm4gRmFsc2UuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9BTllfTUVUSE9EREVGICAgIFwKKyAgICB7ImFueSIsIChQeUNGdW5jdGlvbilidWlsdGluX2FueSwgTUVUSF9PLCBidWlsdGluX2FueV9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnVpbHRpbl9hc2NpaV9fZG9jX18sCisiYXNjaWkoJG1vZHVsZSwgb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGFuIEFTQ0lJLW9ubHkgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LlxuIgorIlxuIgorIkFzIHJlcHIoKSwgcmV0dXJuIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBwcmludGFibGUgcmVwcmVzZW50YXRpb24gb2YgYW5cbiIKKyJvYmplY3QsIGJ1dCBlc2NhcGUgdGhlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgcmV0dXJuZWQgYnlcbiIKKyJyZXByKCkgdXNpbmcgXFxcXHgsIFxcXFx1IG9yIFxcXFxVIGVzY2FwZXMuIFRoaXMgZ2VuZXJhdGVzIGEgc3RyaW5nIHNpbWlsYXJcbiIKKyJ0byB0aGF0IHJldHVybmVkIGJ5IHJlcHIoKSBpbiBQeXRob24gMi4iKTsKKworI2RlZmluZSBCVUlMVElOX0FTQ0lJX01FVEhPRERFRiAgICBcCisgICAgeyJhc2NpaSIsIChQeUNGdW5jdGlvbilidWlsdGluX2FzY2lpLCBNRVRIX08sIGJ1aWx0aW5fYXNjaWlfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fYmluX19kb2NfXywKKyJiaW4oJG1vZHVsZSwgbnVtYmVyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlci5cbiIKKyJcbiIKKyIgICA+Pj4gYmluKDI3OTYyMDIpXG4iCisiICAgXCcwYjEwMTAxMDEwMTAxMDEwMTAxMDEwMTBcJyIpOworCisjZGVmaW5lIEJVSUxUSU5fQklOX01FVEhPRERFRiAgICBcCisgICAgeyJiaW4iLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9iaW4sIE1FVEhfTywgYnVpbHRpbl9iaW5fX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fY2FsbGFibGVfX2RvY19fLAorImNhbGxhYmxlKCRtb2R1bGUsIG9iaiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB3aGV0aGVyIHRoZSBvYmplY3QgaXMgY2FsbGFibGUgKGkuZS4sIHNvbWUga2luZCBvZiBmdW5jdGlvbikuXG4iCisiXG4iCisiTm90ZSB0aGF0IGNsYXNzZXMgYXJlIGNhbGxhYmxlLCBhcyBhcmUgaW5zdGFuY2VzIG9mIGNsYXNzZXMgd2l0aCBhXG4iCisiX19jYWxsX18oKSBtZXRob2QuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9DQUxMQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsiY2FsbGFibGUiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9jYWxsYWJsZSwgTUVUSF9PLCBidWlsdGluX2NhbGxhYmxlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihidWlsdGluX2Zvcm1hdF9fZG9jX18sCisiZm9ybWF0KCRtb2R1bGUsIHZhbHVlLCBmb3JtYXRfc3BlYz1cJ1wnLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHZhbHVlLl9fZm9ybWF0X18oZm9ybWF0X3NwZWMpXG4iCisiXG4iCisiZm9ybWF0X3NwZWMgZGVmYXVsdHMgdG8gdGhlIGVtcHR5IHN0cmluZyIpOworCisjZGVmaW5lIEJVSUxUSU5fRk9STUFUX01FVEhPRERFRiAgICBcCisgICAgeyJmb3JtYXQiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9mb3JtYXQsIE1FVEhfVkFSQVJHUywgYnVpbHRpbl9mb3JtYXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZm9ybWF0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9mb3JtYXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnZhbHVlOworICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98VTpmb3JtYXQiLAorICAgICAgICAmdmFsdWUsICZmb3JtYXRfc3BlYykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2Zvcm1hdF9pbXBsKG1vZHVsZSwgdmFsdWUsIGZvcm1hdF9zcGVjKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9jaHJfX2RvY19fLAorImNocigkbW9kdWxlLCBpLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgVW5pY29kZSBzdHJpbmcgb2Ygb25lIGNoYXJhY3RlciB3aXRoIG9yZGluYWwgaTsgMCA8PSBpIDw9IDB4MTBmZmZmLiIpOworCisjZGVmaW5lIEJVSUxUSU5fQ0hSX01FVEhPRERFRiAgICBcCisgICAgeyJjaHIiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9jaHIsIE1FVEhfTywgYnVpbHRpbl9jaHJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fY2hyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGkpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9jaHIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgaTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpjaHIiLCAmaSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2Nocl9pbXBsKG1vZHVsZSwgaSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fY29tcGlsZV9fZG9jX18sCisiY29tcGlsZSgkbW9kdWxlLCAvLCBzb3VyY2UsIGZpbGVuYW1lLCBtb2RlLCBmbGFncz0wLFxuIgorIiAgICAgICAgZG9udF9pbmhlcml0PUZhbHNlLCBvcHRpbWl6ZT0tMSlcbiIKKyItLVxuIgorIlxuIgorIkNvbXBpbGUgc291cmNlIGludG8gYSBjb2RlIG9iamVjdCB0aGF0IGNhbiBiZSBleGVjdXRlZCBieSBleGVjKCkgb3IgZXZhbCgpLlxuIgorIlxuIgorIlRoZSBzb3VyY2UgY29kZSBtYXkgcmVwcmVzZW50IGEgUHl0aG9uIG1vZHVsZSwgc3RhdGVtZW50IG9yIGV4cHJlc3Npb24uXG4iCisiVGhlIGZpbGVuYW1lIHdpbGwgYmUgdXNlZCBmb3IgcnVuLXRpbWUgZXJyb3IgbWVzc2FnZXMuXG4iCisiVGhlIG1vZGUgbXVzdCBiZSBcJ2V4ZWNcJyB0byBjb21waWxlIGEgbW9kdWxlLCBcJ3NpbmdsZVwnIHRvIGNvbXBpbGUgYVxuIgorInNpbmdsZSAoaW50ZXJhY3RpdmUpIHN0YXRlbWVudCwgb3IgXCdldmFsXCcgdG8gY29tcGlsZSBhbiBleHByZXNzaW9uLlxuIgorIlRoZSBmbGFncyBhcmd1bWVudCwgaWYgcHJlc2VudCwgY29udHJvbHMgd2hpY2ggZnV0dXJlIHN0YXRlbWVudHMgaW5mbHVlbmNlXG4iCisidGhlIGNvbXBpbGF0aW9uIG9mIHRoZSBjb2RlLlxuIgorIlRoZSBkb250X2luaGVyaXQgYXJndW1lbnQsIGlmIHRydWUsIHN0b3BzIHRoZSBjb21waWxhdGlvbiBpbmhlcml0aW5nXG4iCisidGhlIGVmZmVjdHMgb2YgYW55IGZ1dHVyZSBzdGF0ZW1lbnRzIGluIGVmZmVjdCBpbiB0aGUgY29kZSBjYWxsaW5nXG4iCisiY29tcGlsZTsgaWYgYWJzZW50IG9yIGZhbHNlIHRoZXNlIHN0YXRlbWVudHMgZG8gaW5mbHVlbmNlIHRoZSBjb21waWxhdGlvbixcbiIKKyJpbiBhZGRpdGlvbiB0byBhbnkgZmVhdHVyZXMgZXhwbGljaXRseSBzcGVjaWZpZWQuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9DT01QSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJjb21waWxlIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fY29tcGlsZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ1aWx0aW5fY29tcGlsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9jb21waWxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmaWxlbmFtZSwgY29uc3QgY2hhciAqbW9kZSwgaW50IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgaW50IGRvbnRfaW5oZXJpdCwgaW50IG9wdGltaXplKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fY29tcGlsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNvdXJjZSIsICJmaWxlbmFtZSIsICJtb2RlIiwgImZsYWdzIiwgImRvbnRfaW5oZXJpdCIsICJvcHRpbWl6ZSIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzb3VyY2U7CisgICAgUHlPYmplY3QgKmZpbGVuYW1lOworICAgIGNvbnN0IGNoYXIgKm1vZGU7CisgICAgaW50IGZsYWdzID0gMDsKKyAgICBpbnQgZG9udF9pbmhlcml0ID0gMDsKKyAgICBpbnQgb3B0aW1pemUgPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PJnN8aWlpOmNvbXBpbGUiLCBfa2V5d29yZHMsCisgICAgICAgICZzb3VyY2UsIFB5VW5pY29kZV9GU0RlY29kZXIsICZmaWxlbmFtZSwgJm1vZGUsICZmbGFncywgJmRvbnRfaW5oZXJpdCwgJm9wdGltaXplKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fY29tcGlsZV9pbXBsKG1vZHVsZSwgc291cmNlLCBmaWxlbmFtZSwgbW9kZSwgZmxhZ3MsIGRvbnRfaW5oZXJpdCwgb3B0aW1pemUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX2Rpdm1vZF9fZG9jX18sCisiZGl2bW9kKCRtb2R1bGUsIHgsIHksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHR1cGxlICgoeC14JXkpL3ksIHgleSkuICBJbnZhcmlhbnQ6IGRpdip5ICsgbW9kID09IHguIik7CisKKyNkZWZpbmUgQlVJTFRJTl9ESVZNT0RfTUVUSE9EREVGICAgIFwKKyAgICB7ImRpdm1vZCIsIChQeUNGdW5jdGlvbilidWlsdGluX2Rpdm1vZCwgTUVUSF9WQVJBUkdTLCBidWlsdGluX2Rpdm1vZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9kaXZtb2RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqeCwgUHlPYmplY3QgKnkpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9kaXZtb2QoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKng7CisgICAgUHlPYmplY3QgKnk7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJkaXZtb2QiLAorICAgICAgICAyLCAyLAorICAgICAgICAmeCwgJnkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9kaXZtb2RfaW1wbChtb2R1bGUsIHgsIHkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX2V2YWxfX2RvY19fLAorImV2YWwoJG1vZHVsZSwgc291cmNlLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRXZhbHVhdGUgdGhlIGdpdmVuIHNvdXJjZSBpbiB0aGUgY29udGV4dCBvZiBnbG9iYWxzIGFuZCBsb2NhbHMuXG4iCisiXG4iCisiVGhlIHNvdXJjZSBtYXkgYmUgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgUHl0aG9uIGV4cHJlc3Npb25cbiIKKyJvciBhIGNvZGUgb2JqZWN0IGFzIHJldHVybmVkIGJ5IGNvbXBpbGUoKS5cbiIKKyJUaGUgZ2xvYmFscyBtdXN0IGJlIGEgZGljdGlvbmFyeSBhbmQgbG9jYWxzIGNhbiBiZSBhbnkgbWFwcGluZyxcbiIKKyJkZWZhdWx0aW5nIHRvIHRoZSBjdXJyZW50IGdsb2JhbHMgYW5kIGxvY2Fscy5cbiIKKyJJZiBvbmx5IGdsb2JhbHMgaXMgZ2l2ZW4sIGxvY2FscyBkZWZhdWx0cyB0byBpdC4iKTsKKworI2RlZmluZSBCVUlMVElOX0VWQUxfTUVUSE9EREVGICAgIFwKKyAgICB7ImV2YWwiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9ldmFsLCBNRVRIX1ZBUkFSR1MsIGJ1aWx0aW5fZXZhbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9ldmFsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnNvdXJjZSwgUHlPYmplY3QgKmdsb2JhbHMsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG9jYWxzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZXZhbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc291cmNlOworICAgIFB5T2JqZWN0ICpnbG9iYWxzID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqbG9jYWxzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImV2YWwiLAorICAgICAgICAxLCAzLAorICAgICAgICAmc291cmNlLCAmZ2xvYmFscywgJmxvY2FscykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2V2YWxfaW1wbChtb2R1bGUsIHNvdXJjZSwgZ2xvYmFscywgbG9jYWxzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9leGVjX19kb2NfXywKKyJleGVjKCRtb2R1bGUsIHNvdXJjZSwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkV4ZWN1dGUgdGhlIGdpdmVuIHNvdXJjZSBpbiB0aGUgY29udGV4dCBvZiBnbG9iYWxzIGFuZCBsb2NhbHMuXG4iCisiXG4iCisiVGhlIHNvdXJjZSBtYXkgYmUgYSBzdHJpbmcgcmVwcmVzZW50aW5nIG9uZSBvciBtb3JlIFB5dGhvbiBzdGF0ZW1lbnRzXG4iCisib3IgYSBjb2RlIG9iamVjdCBhcyByZXR1cm5lZCBieSBjb21waWxlKCkuXG4iCisiVGhlIGdsb2JhbHMgbXVzdCBiZSBhIGRpY3Rpb25hcnkgYW5kIGxvY2FscyBjYW4gYmUgYW55IG1hcHBpbmcsXG4iCisiZGVmYXVsdGluZyB0byB0aGUgY3VycmVudCBnbG9iYWxzIGFuZCBsb2NhbHMuXG4iCisiSWYgb25seSBnbG9iYWxzIGlzIGdpdmVuLCBsb2NhbHMgZGVmYXVsdHMgdG8gaXQuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9FWEVDX01FVEhPRERFRiAgICBcCisgICAgeyJleGVjIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fZXhlYywgTUVUSF9WQVJBUkdTLCBidWlsdGluX2V4ZWNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZXhlY19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzb3VyY2UsIFB5T2JqZWN0ICpnbG9iYWxzLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmxvY2Fscyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2V4ZWMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNvdXJjZTsKKyAgICBQeU9iamVjdCAqZ2xvYmFscyA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmxvY2FscyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJleGVjIiwKKyAgICAgICAgMSwgMywKKyAgICAgICAgJnNvdXJjZSwgJmdsb2JhbHMsICZsb2NhbHMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9leGVjX2ltcGwobW9kdWxlLCBzb3VyY2UsIGdsb2JhbHMsIGxvY2Fscyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fZ2xvYmFsc19fZG9jX18sCisiZ2xvYmFscygkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc2NvcGVcJ3MgZ2xvYmFsIHZhcmlhYmxlcy5cbiIKKyJcbiIKKyJOT1RFOiBVcGRhdGVzIHRvIHRoaXMgZGljdGlvbmFyeSAqd2lsbCogYWZmZWN0IG5hbWUgbG9va3VwcyBpbiB0aGUgY3VycmVudFxuIgorImdsb2JhbCBzY29wZSBhbmQgdmljZS12ZXJzYS4iKTsKKworI2RlZmluZSBCVUlMVElOX0dMT0JBTFNfTUVUSE9EREVGICAgIFwKKyAgICB7Imdsb2JhbHMiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9nbG9iYWxzLCBNRVRIX05PQVJHUywgYnVpbHRpbl9nbG9iYWxzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2dsb2JhbHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZ2xvYmFscyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBidWlsdGluX2dsb2JhbHNfaW1wbChtb2R1bGUpOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9oYXNhdHRyX19kb2NfXywKKyJoYXNhdHRyKCRtb2R1bGUsIG9iaiwgbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB3aGV0aGVyIHRoZSBvYmplY3QgaGFzIGFuIGF0dHJpYnV0ZSB3aXRoIHRoZSBnaXZlbiBuYW1lLlxuIgorIlxuIgorIlRoaXMgaXMgZG9uZSBieSBjYWxsaW5nIGdldGF0dHIob2JqLCBuYW1lKSBhbmQgY2F0Y2hpbmcgQXR0cmlidXRlRXJyb3IuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9IQVNBVFRSX01FVEhPRERFRiAgICBcCisgICAgeyJoYXNhdHRyIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5faGFzYXR0ciwgTUVUSF9WQVJBUkdTLCBidWlsdGluX2hhc2F0dHJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5faGFzYXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5faGFzYXR0cihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIFB5T2JqZWN0ICpuYW1lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaGFzYXR0ciIsCisgICAgICAgIDIsIDIsCisgICAgICAgICZvYmosICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5faGFzYXR0cl9pbXBsKG1vZHVsZSwgb2JqLCBuYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9pZF9fZG9jX18sCisiaWQoJG1vZHVsZSwgb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBpZGVudGl0eSBvZiBhbiBvYmplY3QuXG4iCisiXG4iCisiVGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIHVuaXF1ZSBhbW9uZyBzaW11bHRhbmVvdXNseSBleGlzdGluZyBvYmplY3RzLlxuIgorIihDUHl0aG9uIHVzZXMgdGhlIG9iamVjdFwncyBtZW1vcnkgYWRkcmVzcy4pIik7CisKKyNkZWZpbmUgQlVJTFRJTl9JRF9NRVRIT0RERUYgICAgXAorICAgIHsiaWQiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9pZCwgTUVUSF9PLCBidWlsdGluX2lkX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihidWlsdGluX3NldGF0dHJfX2RvY19fLAorInNldGF0dHIoJG1vZHVsZSwgb2JqLCBuYW1lLCB2YWx1ZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldHMgdGhlIG5hbWVkIGF0dHJpYnV0ZSBvbiB0aGUgZ2l2ZW4gb2JqZWN0IHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuXG4iCisiXG4iCisic2V0YXR0cih4LCBcJ3lcJywgdikgaXMgZXF1aXZhbGVudCB0byBgYHgueSA9IHZcJ1wnIik7CisKKyNkZWZpbmUgQlVJTFRJTl9TRVRBVFRSX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRhdHRyIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fc2V0YXR0ciwgTUVUSF9WQVJBUkdTLCBidWlsdGluX3NldGF0dHJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fc2V0YXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fc2V0YXR0cihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIFB5T2JqZWN0ICpuYW1lOworICAgIFB5T2JqZWN0ICp2YWx1ZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNldGF0dHIiLAorICAgICAgICAzLCAzLAorICAgICAgICAmb2JqLCAmbmFtZSwgJnZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fc2V0YXR0cl9pbXBsKG1vZHVsZSwgb2JqLCBuYW1lLCB2YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fZGVsYXR0cl9fZG9jX18sCisiZGVsYXR0cigkbW9kdWxlLCBvYmosIG5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJEZWxldGVzIHRoZSBuYW1lZCBhdHRyaWJ1dGUgZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0LlxuIgorIlxuIgorImRlbGF0dHIoeCwgXCd5XCcpIGlzIGVxdWl2YWxlbnQgdG8gYGBkZWwgeC55XCdcJyIpOworCisjZGVmaW5lIEJVSUxUSU5fREVMQVRUUl9NRVRIT0RERUYgICAgXAorICAgIHsiZGVsYXR0ciIsIChQeUNGdW5jdGlvbilidWlsdGluX2RlbGF0dHIsIE1FVEhfVkFSQVJHUywgYnVpbHRpbl9kZWxhdHRyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2RlbGF0dHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2RlbGF0dHIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBQeU9iamVjdCAqbmFtZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImRlbGF0dHIiLAorICAgICAgICAyLCAyLAorICAgICAgICAmb2JqLCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2RlbGF0dHJfaW1wbChtb2R1bGUsIG9iaiwgbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5faGFzaF9fZG9jX18sCisiaGFzaCgkbW9kdWxlLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGhhc2ggdmFsdWUgZm9yIHRoZSBnaXZlbiBvYmplY3QuXG4iCisiXG4iCisiVHdvIG9iamVjdHMgdGhhdCBjb21wYXJlIGVxdWFsIG11c3QgYWxzbyBoYXZlIHRoZSBzYW1lIGhhc2ggdmFsdWUsIGJ1dCB0aGVcbiIKKyJyZXZlcnNlIGlzIG5vdCBuZWNlc3NhcmlseSB0cnVlLiIpOworCisjZGVmaW5lIEJVSUxUSU5fSEFTSF9NRVRIT0RERUYgICAgXAorICAgIHsiaGFzaCIsIChQeUNGdW5jdGlvbilidWlsdGluX2hhc2gsIE1FVEhfTywgYnVpbHRpbl9oYXNoX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihidWlsdGluX2hleF9fZG9jX18sCisiaGV4KCRtb2R1bGUsIG51bWJlciwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlci5cbiIKKyJcbiIKKyIgICA+Pj4gaGV4KDEyNjQ4NDMwKVxuIgorIiAgIFwnMHhjMGZmZWVcJyIpOworCisjZGVmaW5lIEJVSUxUSU5fSEVYX01FVEhPRERFRiAgICBcCisgICAgeyJoZXgiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9oZXgsIE1FVEhfTywgYnVpbHRpbl9oZXhfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fbGVuX19kb2NfXywKKyJsZW4oJG1vZHVsZSwgb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBjb250YWluZXIuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9MRU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImxlbiIsIChQeUNGdW5jdGlvbilidWlsdGluX2xlbiwgTUVUSF9PLCBidWlsdGluX2xlbl9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnVpbHRpbl9sb2NhbHNfX2RvY19fLAorImxvY2FscygkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjdXJyZW50IHNjb3BlXCdzIGxvY2FsIHZhcmlhYmxlcy5cbiIKKyJcbiIKKyJOT1RFOiBXaGV0aGVyIG9yIG5vdCB1cGRhdGVzIHRvIHRoaXMgZGljdGlvbmFyeSB3aWxsIGFmZmVjdCBuYW1lIGxvb2t1cHMgaW5cbiIKKyJ0aGUgbG9jYWwgc2NvcGUgYW5kIHZpY2UtdmVyc2EgaXMgKmltcGxlbWVudGF0aW9uIGRlcGVuZGVudCogYW5kIG5vdFxuIgorImNvdmVyZWQgYnkgYW55IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGd1YXJhbnRlZXMuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9MT0NBTFNfTUVUSE9EREVGICAgIFwKKyAgICB7ImxvY2FscyIsIChQeUNGdW5jdGlvbilidWlsdGluX2xvY2FscywgTUVUSF9OT0FSR1MsIGJ1aWx0aW5fbG9jYWxzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2xvY2Fsc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9sb2NhbHMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYnVpbHRpbl9sb2NhbHNfaW1wbChtb2R1bGUpOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9vY3RfX2RvY19fLAorIm9jdCgkbW9kdWxlLCBudW1iZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIG9jdGFsIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIuXG4iCisiXG4iCisiICAgPj4+IG9jdCgzNDIzOTEpXG4iCisiICAgXCcwbzEyMzQ1NjdcJyIpOworCisjZGVmaW5lIEJVSUxUSU5fT0NUX01FVEhPRERFRiAgICBcCisgICAgeyJvY3QiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9vY3QsIE1FVEhfTywgYnVpbHRpbl9vY3RfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fb3JkX19kb2NfXywKKyJvcmQoJG1vZHVsZSwgYywgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgVW5pY29kZSBjb2RlIHBvaW50IGZvciBhIG9uZS1jaGFyYWN0ZXIgc3RyaW5nLiIpOworCisjZGVmaW5lIEJVSUxUSU5fT1JEX01FVEhPRERFRiAgICBcCisgICAgeyJvcmQiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9vcmQsIE1FVEhfTywgYnVpbHRpbl9vcmRfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fcG93X19kb2NfXywKKyJwb3coJG1vZHVsZSwgeCwgeSwgej1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRXF1aXZhbGVudCB0byB4Kip5ICh3aXRoIHR3byBhcmd1bWVudHMpIG9yIHgqKnkgJSB6ICh3aXRoIHRocmVlIGFyZ3VtZW50cylcbiIKKyJcbiIKKyJTb21lIHR5cGVzLCBzdWNoIGFzIGludHMsIGFyZSBhYmxlIHRvIHVzZSBhIG1vcmUgZWZmaWNpZW50IGFsZ29yaXRobSB3aGVuXG4iCisiaW52b2tlZCB1c2luZyB0aGUgdGhyZWUgYXJndW1lbnQgZm9ybS4iKTsKKworI2RlZmluZSBCVUlMVElOX1BPV19NRVRIT0RERUYgICAgXAorICAgIHsicG93IiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fcG93LCBNRVRIX1ZBUkFSR1MsIGJ1aWx0aW5fcG93X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX3Bvd19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICp4LCBQeU9iamVjdCAqeSwgUHlPYmplY3QgKnopOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9wb3coUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKng7CisgICAgUHlPYmplY3QgKnk7CisgICAgUHlPYmplY3QgKnogPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicG93IiwKKyAgICAgICAgMiwgMywKKyAgICAgICAgJngsICZ5LCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX3Bvd19pbXBsKG1vZHVsZSwgeCwgeSwgeik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5faW5wdXRfX2RvY19fLAorImlucHV0KCRtb2R1bGUsIHByb21wdD1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhIHN0cmluZyBmcm9tIHN0YW5kYXJkIGlucHV0LiAgVGhlIHRyYWlsaW5nIG5ld2xpbmUgaXMgc3RyaXBwZWQuXG4iCisiXG4iCisiVGhlIHByb21wdCBzdHJpbmcsIGlmIGdpdmVuLCBpcyBwcmludGVkIHRvIHN0YW5kYXJkIG91dHB1dCB3aXRob3V0IGFcbiIKKyJ0cmFpbGluZyBuZXdsaW5lIGJlZm9yZSByZWFkaW5nIGlucHV0LlxuIgorIlxuIgorIklmIHRoZSB1c2VyIGhpdHMgRU9GICgqbml4OiBDdHJsLUQsIFdpbmRvd3M6IEN0cmwtWitSZXR1cm4pLCByYWlzZSBFT0ZFcnJvci5cbiIKKyJPbiAqbml4IHN5c3RlbXMsIHJlYWRsaW5lIGlzIHVzZWQgaWYgYXZhaWxhYmxlLiIpOworCisjZGVmaW5lIEJVSUxUSU5fSU5QVVRfTUVUSE9EREVGICAgIFwKKyAgICB7ImlucHV0IiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5faW5wdXQsIE1FVEhfVkFSQVJHUywgYnVpbHRpbl9pbnB1dF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9pbnB1dF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpwcm9tcHQpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9pbnB1dChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcHJvbXB0ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImlucHV0IiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJnByb21wdCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2lucHV0X2ltcGwobW9kdWxlLCBwcm9tcHQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX3JlcHJfX2RvY19fLAorInJlcHIoJG1vZHVsZSwgb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBjYW5vbmljYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuXG4iCisiXG4iCisiRm9yIG1hbnkgb2JqZWN0IHR5cGVzLCBpbmNsdWRpbmcgbW9zdCBidWlsdGlucywgZXZhbChyZXByKG9iaikpID09IG9iai4iKTsKKworI2RlZmluZSBCVUlMVElOX1JFUFJfTUVUSE9EREVGICAgIFwKKyAgICB7InJlcHIiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9yZXByLCBNRVRIX08sIGJ1aWx0aW5fcmVwcl9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnVpbHRpbl9zdW1fX2RvY19fLAorInN1bSgkbW9kdWxlLCBpdGVyYWJsZSwgc3RhcnQ9MCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgc3VtIG9mIGEgXCdzdGFydFwnIHZhbHVlIChkZWZhdWx0OiAwKSBwbHVzIGFuIGl0ZXJhYmxlIG9mIG51bWJlcnNcbiIKKyJcbiIKKyJXaGVuIHRoZSBpdGVyYWJsZSBpcyBlbXB0eSwgcmV0dXJuIHRoZSBzdGFydCB2YWx1ZS5cbiIKKyJUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHNwZWNpZmljYWxseSBmb3IgdXNlIHdpdGggbnVtZXJpYyB2YWx1ZXMgYW5kIG1heVxuIgorInJlamVjdCBub24tbnVtZXJpYyB0eXBlcy4iKTsKKworI2RlZmluZSBCVUlMVElOX1NVTV9NRVRIT0RERUYgICAgXAorICAgIHsic3VtIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fc3VtLCBNRVRIX1ZBUkFSR1MsIGJ1aWx0aW5fc3VtX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX3N1bV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICppdGVyYWJsZSwgUHlPYmplY3QgKnN0YXJ0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fc3VtKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICppdGVyYWJsZTsKKyAgICBQeU9iamVjdCAqc3RhcnQgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3VtIiwKKyAgICAgICAgMSwgMiwKKyAgICAgICAgJml0ZXJhYmxlLCAmc3RhcnQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9zdW1faW1wbChtb2R1bGUsIGl0ZXJhYmxlLCBzdGFydCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5faXNpbnN0YW5jZV9fZG9jX18sCisiaXNpbnN0YW5jZSgkbW9kdWxlLCBvYmosIGNsYXNzX29yX3R1cGxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHdoZXRoZXIgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3Mgb3Igb2YgYSBzdWJjbGFzcyB0aGVyZW9mLlxuIgorIlxuIgorIkEgdHVwbGUsIGFzIGluIGBgaXNpbnN0YW5jZSh4LCAoQSwgQiwgLi4uKSlgYCwgbWF5IGJlIGdpdmVuIGFzIHRoZSB0YXJnZXQgdG9cbiIKKyJjaGVjayBhZ2FpbnN0LiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBpc2luc3RhbmNlKHgsIEEpIG9yIGlzaW5zdGFuY2UoeCwgQilcbiIKKyJvciAuLi5gYCBldGMuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9JU0lOU1RBTkNFX01FVEhPRERFRiAgICBcCisgICAgeyJpc2luc3RhbmNlIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5faXNpbnN0YW5jZSwgTUVUSF9WQVJBUkdTLCBidWlsdGluX2lzaW5zdGFuY2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5faXNpbnN0YW5jZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2xhc3Nfb3JfdHVwbGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9pc2luc3RhbmNlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgUHlPYmplY3QgKmNsYXNzX29yX3R1cGxlOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaXNpbnN0YW5jZSIsCisgICAgICAgIDIsIDIsCisgICAgICAgICZvYmosICZjbGFzc19vcl90dXBsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2lzaW5zdGFuY2VfaW1wbChtb2R1bGUsIG9iaiwgY2xhc3Nfb3JfdHVwbGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX2lzc3ViY2xhc3NfX2RvY19fLAorImlzc3ViY2xhc3MoJG1vZHVsZSwgY2xzLCBjbGFzc19vcl90dXBsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB3aGV0aGVyIFwnY2xzXCcgaXMgYSBkZXJpdmVkIGZyb20gYW5vdGhlciBjbGFzcyBvciBpcyB0aGUgc2FtZSBjbGFzcy5cbiIKKyJcbiIKKyJBIHR1cGxlLCBhcyBpbiBgYGlzc3ViY2xhc3MoeCwgKEEsIEIsIC4uLikpYGAsIG1heSBiZSBnaXZlbiBhcyB0aGUgdGFyZ2V0IHRvXG4iCisiY2hlY2sgYWdhaW5zdC4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgaXNzdWJjbGFzcyh4LCBBKSBvciBpc3N1YmNsYXNzKHgsIEIpXG4iCisib3IgLi4uYGAgZXRjLiIpOworCisjZGVmaW5lIEJVSUxUSU5fSVNTVUJDTEFTU19NRVRIT0RERUYgICAgXAorICAgIHsiaXNzdWJjbGFzcyIsIChQeUNGdW5jdGlvbilidWlsdGluX2lzc3ViY2xhc3MsIE1FVEhfVkFSQVJHUywgYnVpbHRpbl9pc3N1YmNsYXNzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2lzc3ViY2xhc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqY2xzLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNsYXNzX29yX3R1cGxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5faXNzdWJjbGFzcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY2xzOworICAgIFB5T2JqZWN0ICpjbGFzc19vcl90dXBsZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImlzc3ViY2xhc3MiLAorICAgICAgICAyLCAyLAorICAgICAgICAmY2xzLCAmY2xhc3Nfb3JfdHVwbGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9pc3N1YmNsYXNzX2ltcGwobW9kdWxlLCBjbHMsIGNsYXNzX29yX3R1cGxlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlYzMzOTljMGFlZTk4ZDcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NsaW5pYy9pbXBvcnQuYy5oIGIvUHl0aG9uL2NsaW5pYy9pbXBvcnQuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0Nzc2NjUKLS0tIC9kZXYvbnVsbAorKysgYi9QeXRob24vY2xpbmljL2ltcG9ydC5jLmgKQEAgLTAsMCArMSwzNTUgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfaW1wX2xvY2tfaGVsZF9fZG9jX18sCisibG9ja19oZWxkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gVHJ1ZSBpZiB0aGUgaW1wb3J0IGxvY2sgaXMgY3VycmVudGx5IGhlbGQsIGVsc2UgRmFsc2UuXG4iCisiXG4iCisiT24gcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgcmV0dXJuIEZhbHNlLiIpOworCisjZGVmaW5lIF9JTVBfTE9DS19IRUxEX01FVEhPRERFRiAgICBcCisgICAgeyJsb2NrX2hlbGQiLCAoUHlDRnVuY3Rpb24pX2ltcF9sb2NrX2hlbGQsIE1FVEhfTk9BUkdTLCBfaW1wX2xvY2tfaGVsZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9sb2NrX2hlbGRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfbG9ja19oZWxkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pbXBfbG9ja19oZWxkX2ltcGwobW9kdWxlKTsKK30KKworUHlEb2NfU1RSVkFSKF9pbXBfYWNxdWlyZV9sb2NrX19kb2NfXywKKyJhY3F1aXJlX2xvY2soJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkFjcXVpcmVzIHRoZSBpbnRlcnByZXRlclwncyBpbXBvcnQgbG9jayBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkLlxuIgorIlxuIgorIlRoaXMgbG9jayBzaG91bGQgYmUgdXNlZCBieSBpbXBvcnQgaG9va3MgdG8gZW5zdXJlIHRocmVhZC1zYWZldHkgd2hlbiBpbXBvcnRpbmdcbiIKKyJtb2R1bGVzLiBPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iKTsKKworI2RlZmluZSBfSU1QX0FDUVVJUkVfTE9DS19NRVRIT0RERUYgICAgXAorICAgIHsiYWNxdWlyZV9sb2NrIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfYWNxdWlyZV9sb2NrLCBNRVRIX05PQVJHUywgX2ltcF9hY3F1aXJlX2xvY2tfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfYWNxdWlyZV9sb2NrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2FjcXVpcmVfbG9jayhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW1wX2FjcXVpcmVfbG9ja19pbXBsKG1vZHVsZSk7Cit9CisKK1B5RG9jX1NUUlZBUihfaW1wX3JlbGVhc2VfbG9ja19fZG9jX18sCisicmVsZWFzZV9sb2NrKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWxlYXNlIHRoZSBpbnRlcnByZXRlclwncyBpbXBvcnQgbG9jay5cbiIKKyJcbiIKKyJPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iKTsKKworI2RlZmluZSBfSU1QX1JFTEVBU0VfTE9DS19NRVRIT0RERUYgICAgXAorICAgIHsicmVsZWFzZV9sb2NrIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfcmVsZWFzZV9sb2NrLCBNRVRIX05PQVJHUywgX2ltcF9yZWxlYXNlX2xvY2tfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfcmVsZWFzZV9sb2NrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX3JlbGVhc2VfbG9jayhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW1wX3JlbGVhc2VfbG9ja19pbXBsKG1vZHVsZSk7Cit9CisKK1B5RG9jX1NUUlZBUihfaW1wX19maXhfY29fZmlsZW5hbWVfX2RvY19fLAorIl9maXhfY29fZmlsZW5hbWUoJG1vZHVsZSwgY29kZSwgcGF0aCwgLylcbiIKKyItLVxuIgorIlxuIgorIkNoYW5nZXMgY29kZS5jb19maWxlbmFtZSB0byBzcGVjaWZ5IHRoZSBwYXNzZWQtaW4gZmlsZSBwYXRoLlxuIgorIlxuIgorIiAgY29kZVxuIgorIiAgICBDb2RlIG9iamVjdCB0byBjaGFuZ2UuXG4iCisiICBwYXRoXG4iCisiICAgIEZpbGUgcGF0aCB0byB1c2UuIik7CisKKyNkZWZpbmUgX0lNUF9fRklYX0NPX0ZJTEVOQU1FX01FVEhPRERFRiAgICBcCisgICAgeyJfZml4X2NvX2ZpbGVuYW1lIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfX2ZpeF9jb19maWxlbmFtZSwgTUVUSF9WQVJBUkdTLCBfaW1wX19maXhfY29fZmlsZW5hbWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfX2ZpeF9jb19maWxlbmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5Q29kZU9iamVjdCAqY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXRoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfX2ZpeF9jb19maWxlbmFtZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeUNvZGVPYmplY3QgKmNvZGU7CisgICAgUHlPYmplY3QgKnBhdGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hVTpfZml4X2NvX2ZpbGVuYW1lIiwKKyAgICAgICAgJlB5Q29kZV9UeXBlLCAmY29kZSwgJnBhdGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9fZml4X2NvX2ZpbGVuYW1lX2ltcGwobW9kdWxlLCBjb2RlLCBwYXRoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2ltcF9jcmVhdGVfYnVpbHRpbl9fZG9jX18sCisiY3JlYXRlX2J1aWx0aW4oJG1vZHVsZSwgc3BlYywgLylcbiIKKyItLVxuIgorIlxuIgorIkNyZWF0ZSBhbiBleHRlbnNpb24gbW9kdWxlLiIpOworCisjZGVmaW5lIF9JTVBfQ1JFQVRFX0JVSUxUSU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImNyZWF0ZV9idWlsdGluIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfY3JlYXRlX2J1aWx0aW4sIE1FVEhfTywgX2ltcF9jcmVhdGVfYnVpbHRpbl9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2ltcF9leHRlbnNpb25fc3VmZml4ZXNfX2RvY19fLAorImV4dGVuc2lvbl9zdWZmaXhlcygkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB0aGUgbGlzdCBvZiBmaWxlIHN1ZmZpeGVzIHVzZWQgdG8gaWRlbnRpZnkgZXh0ZW5zaW9uIG1vZHVsZXMuIik7CisKKyNkZWZpbmUgX0lNUF9FWFRFTlNJT05fU1VGRklYRVNfTUVUSE9EREVGICAgIFwKKyAgICB7ImV4dGVuc2lvbl9zdWZmaXhlcyIsIChQeUNGdW5jdGlvbilfaW1wX2V4dGVuc2lvbl9zdWZmaXhlcywgTUVUSF9OT0FSR1MsIF9pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2V4dGVuc2lvbl9zdWZmaXhlc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9leHRlbnNpb25fc3VmZml4ZXMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2ltcF9leHRlbnNpb25fc3VmZml4ZXNfaW1wbChtb2R1bGUpOworfQorCitQeURvY19TVFJWQVIoX2ltcF9pbml0X2Zyb3plbl9fZG9jX18sCisiaW5pdF9mcm96ZW4oJG1vZHVsZSwgbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkluaXRpYWxpemVzIGEgZnJvemVuIG1vZHVsZS4iKTsKKworI2RlZmluZSBfSU1QX0lOSVRfRlJPWkVOX01FVEhPRERFRiAgICBcCisgICAgeyJpbml0X2Zyb3plbiIsIChQeUNGdW5jdGlvbilfaW1wX2luaXRfZnJvemVuLCBNRVRIX08sIF9pbXBfaW5pdF9mcm96ZW5fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfaW5pdF9mcm96ZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2luaXRfZnJvemVuKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aW5pdF9mcm96ZW4iLCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2luaXRfZnJvemVuX2ltcGwobW9kdWxlLCBuYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2ltcF9nZXRfZnJvemVuX29iamVjdF9fZG9jX18sCisiZ2V0X2Zyb3plbl9vYmplY3QoJG1vZHVsZSwgbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNyZWF0ZSBhIGNvZGUgb2JqZWN0IGZvciBhIGZyb3plbiBtb2R1bGUuIik7CisKKyNkZWZpbmUgX0lNUF9HRVRfRlJPWkVOX09CSkVDVF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0X2Zyb3plbl9vYmplY3QiLCAoUHlDRnVuY3Rpb24pX2ltcF9nZXRfZnJvemVuX29iamVjdCwgTUVUSF9PLCBfaW1wX2dldF9mcm96ZW5fb2JqZWN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2dldF9mcm96ZW5fb2JqZWN0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9nZXRfZnJvemVuX29iamVjdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmdldF9mcm96ZW5fb2JqZWN0IiwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9nZXRfZnJvemVuX29iamVjdF9pbXBsKG1vZHVsZSwgbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pbXBfaXNfZnJvemVuX3BhY2thZ2VfX2RvY19fLAorImlzX2Zyb3plbl9wYWNrYWdlKCRtb2R1bGUsIG5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIFRydWUgaWYgdGhlIG1vZHVsZSBuYW1lIGlzIG9mIGEgZnJvemVuIHBhY2thZ2UuIik7CisKKyNkZWZpbmUgX0lNUF9JU19GUk9aRU5fUEFDS0FHRV9NRVRIT0RERUYgICAgXAorICAgIHsiaXNfZnJvemVuX3BhY2thZ2UiLCAoUHlDRnVuY3Rpb24pX2ltcF9pc19mcm96ZW5fcGFja2FnZSwgTUVUSF9PLCBfaW1wX2lzX2Zyb3plbl9wYWNrYWdlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2lzX2Zyb3plbl9wYWNrYWdlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9pc19mcm96ZW5fcGFja2FnZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2Zyb3plbl9wYWNrYWdlIiwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pc19mcm96ZW5fcGFja2FnZV9pbXBsKG1vZHVsZSwgbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pbXBfaXNfYnVpbHRpbl9fZG9jX18sCisiaXNfYnVpbHRpbigkbW9kdWxlLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBUcnVlIGlmIHRoZSBtb2R1bGUgbmFtZSBjb3JyZXNwb25kcyB0byBhIGJ1aWx0LWluIG1vZHVsZS4iKTsKKworI2RlZmluZSBfSU1QX0lTX0JVSUxUSU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImlzX2J1aWx0aW4iLCAoUHlDRnVuY3Rpb24pX2ltcF9pc19idWlsdGluLCBNRVRIX08sIF9pbXBfaXNfYnVpbHRpbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9pc19idWlsdGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9pc19idWlsdGluKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfYnVpbHRpbiIsICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pbXBfaXNfYnVpbHRpbl9pbXBsKG1vZHVsZSwgbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pbXBfaXNfZnJvemVuX19kb2NfXywKKyJpc19mcm96ZW4oJG1vZHVsZSwgbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgVHJ1ZSBpZiB0aGUgbW9kdWxlIG5hbWUgY29ycmVzcG9uZHMgdG8gYSBmcm96ZW4gbW9kdWxlLiIpOworCisjZGVmaW5lIF9JTVBfSVNfRlJPWkVOX01FVEhPRERFRiAgICBcCisgICAgeyJpc19mcm96ZW4iLCAoUHlDRnVuY3Rpb24pX2ltcF9pc19mcm96ZW4sIE1FVEhfTywgX2ltcF9pc19mcm96ZW5fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfaXNfZnJvemVuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9pc19mcm96ZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19mcm96ZW4iLCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2lzX2Zyb3plbl9pbXBsKG1vZHVsZSwgbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9EWU5BTUlDX0xPQURJTkcpCisKK1B5RG9jX1NUUlZBUihfaW1wX2NyZWF0ZV9keW5hbWljX19kb2NfXywKKyJjcmVhdGVfZHluYW1pYygkbW9kdWxlLCBzcGVjLCBmaWxlPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGUgYW4gZXh0ZW5zaW9uIG1vZHVsZS4iKTsKKworI2RlZmluZSBfSU1QX0NSRUFURV9EWU5BTUlDX01FVEhPRERFRiAgICBcCisgICAgeyJjcmVhdGVfZHluYW1pYyIsIChQeUNGdW5jdGlvbilfaW1wX2NyZWF0ZV9keW5hbWljLCBNRVRIX1ZBUkFSR1MsIF9pbXBfY3JlYXRlX2R5bmFtaWNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfY3JlYXRlX2R5bmFtaWNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3BlYywgUHlPYmplY3QgKmZpbGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9jcmVhdGVfZHluYW1pYyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3BlYzsKKyAgICBQeU9iamVjdCAqZmlsZSA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJjcmVhdGVfZHluYW1pYyIsCisgICAgICAgIDEsIDIsCisgICAgICAgICZzcGVjLCAmZmlsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2NyZWF0ZV9keW5hbWljX2ltcGwobW9kdWxlLCBzcGVjLCBmaWxlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0RZTkFNSUNfTE9BRElORykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9EWU5BTUlDX0xPQURJTkcpCisKK1B5RG9jX1NUUlZBUihfaW1wX2V4ZWNfZHluYW1pY19fZG9jX18sCisiZXhlY19keW5hbWljKCRtb2R1bGUsIG1vZCwgLylcbiIKKyItLVxuIgorIlxuIgorIkluaXRpYWxpemUgYW4gZXh0ZW5zaW9uIG1vZHVsZS4iKTsKKworI2RlZmluZSBfSU1QX0VYRUNfRFlOQU1JQ19NRVRIT0RERUYgICAgXAorICAgIHsiZXhlY19keW5hbWljIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfZXhlY19keW5hbWljLCBNRVRIX08sIF9pbXBfZXhlY19keW5hbWljX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK19pbXBfZXhlY19keW5hbWljX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm1vZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2V4ZWNfZHluYW1pYyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbW9kKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgX3JldHVybl92YWx1ZSA9IF9pbXBfZXhlY19keW5hbWljX2ltcGwobW9kdWxlLCBtb2QpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0RZTkFNSUNfTE9BRElORykgKi8KKworUHlEb2NfU1RSVkFSKF9pbXBfZXhlY19idWlsdGluX19kb2NfXywKKyJleGVjX2J1aWx0aW4oJG1vZHVsZSwgbW9kLCAvKVxuIgorIi0tXG4iCisiXG4iCisiSW5pdGlhbGl6ZSBhIGJ1aWx0LWluIG1vZHVsZS4iKTsKKworI2RlZmluZSBfSU1QX0VYRUNfQlVJTFRJTl9NRVRIT0RERUYgICAgXAorICAgIHsiZXhlY19idWlsdGluIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfZXhlY19idWlsdGluLCBNRVRIX08sIF9pbXBfZXhlY19idWlsdGluX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK19pbXBfZXhlY19idWlsdGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm1vZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2V4ZWNfYnVpbHRpbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbW9kKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgX3JldHVybl92YWx1ZSA9IF9pbXBfZXhlY19idWlsdGluX2ltcGwobW9kdWxlLCBtb2QpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWZuZGVmIF9JTVBfQ1JFQVRFX0RZTkFNSUNfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU1QX0NSRUFURV9EWU5BTUlDX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JTVBfQ1JFQVRFX0RZTkFNSUNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9JTVBfRVhFQ19EWU5BTUlDX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lNUF9FWEVDX0RZTkFNSUNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lNUF9FWEVDX0RZTkFNSUNfTUVUSE9EREVGKSAqLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMyMzI0YTVlNDZjZGZjNGIgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NvZGVjcy5jIGIvUHl0aG9uL2NvZGVjcy5jCmluZGV4IDI3ZjJhZWIuLmQ5MGJmNzMgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jb2RlY3MuYworKysgYi9QeXRob24vY29kZWNzLmMKQEAgLTksNiArOSw3IEBACiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInVjbmhhc2guaCIKICNpbmNsdWRlIDxjdHlwZS5oPgogCiBjb25zdCBjaGFyICpQeV9oZXhkaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CkBAIC04NTYsNiArODU3LDExOCBAQAogCiBQeU9iamVjdCAqUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzKFB5T2JqZWN0ICpleGMpCiB7CisgICAgUHlPYmplY3QgKm9iamVjdDsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlfc3NpemVfdCBzdGFydDsKKyAgICBQeV9zc2l6ZV90IGVuZDsKKyAgICBQeU9iamVjdCAqcmVzOworICAgIHVuc2lnbmVkIGNoYXIgKm91dHA7CisgICAgaW50IHJlc3NpemU7CisgICAgUHlfVUNTNCBjOworCisgICAgaWYgKFB5T2JqZWN0X1R5cGVDaGVjayhleGMsIChQeVR5cGVPYmplY3QgKilQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IpKSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgKnA7CisgICAgICAgIGlmIChQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydChleGMsICZzdGFydCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZChleGMsICZlbmQpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICghKG9iamVjdCA9IFB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdChleGMpKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIShwID0gKHVuc2lnbmVkIGNoYXIqKVB5Qnl0ZXNfQXNTdHJpbmcob2JqZWN0KSkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvYmplY3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmVzID0gUHlVbmljb2RlX05ldyg0ICogKGVuZCAtIHN0YXJ0KSwgMTI3KTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIG91dHAgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpOworICAgICAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrLCBvdXRwICs9IDQpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IHBbaV07CisgICAgICAgICAgICBvdXRwWzBdID0gJ1xcJzsKKyAgICAgICAgICAgIG91dHBbMV0gPSAneCc7CisgICAgICAgICAgICBvdXRwWzJdID0gUHlfaGV4ZGlnaXRzWyhjPj40KSYweGZdOworICAgICAgICAgICAgb3V0cFszXSA9IFB5X2hleGRpZ2l0c1tjJjB4Zl07CisgICAgICAgIH0KKworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihObikiLCByZXMsIGVuZCk7CisgICAgfQorICAgIGlmIChQeU9iamVjdF9UeXBlQ2hlY2soZXhjLCAoUHlUeXBlT2JqZWN0ICopUHlFeGNfVW5pY29kZUVuY29kZUVycm9yKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQoZXhjLCAmZW5kKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIShvYmplY3QgPSBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3QoZXhjKSkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlPYmplY3RfVHlwZUNoZWNrKGV4YywgKFB5VHlwZU9iamVjdCAqKVB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvcikpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKCEob2JqZWN0ID0gUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0KGV4YykpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB3cm9uZ19leGNlcHRpb25fdHlwZShleGMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZW5kIC0gc3RhcnQgPiBQWV9TU0laRV9UX01BWCAvICgxKzErOCkpCisgICAgICAgIGVuZCA9IHN0YXJ0ICsgUFlfU1NJWkVfVF9NQVggLyAoMSsxKzgpOworICAgIGZvciAoaSA9IHN0YXJ0LCByZXNzaXplID0gMDsgaSA8IGVuZDsgKytpKSB7CisgICAgICAgIC8qIG9iamVjdCBpcyBndWFyYW50ZWVkIHRvIGJlICJyZWFkeSIgKi8KKyAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKKyAgICAgICAgaWYgKGMgPj0gMHgxMDAwMCkgeworICAgICAgICAgICAgcmVzc2l6ZSArPSAxKzErODsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjID49IDB4MTAwKSB7CisgICAgICAgICAgICByZXNzaXplICs9IDErMSs0OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3NpemUgKz0gMSsxKzI7CisgICAgfQorICAgIHJlcyA9IFB5VW5pY29kZV9OZXcocmVzc2l6ZSwgMTI3KTsKKyAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBvdXRwID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKTsKKyAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7CisgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKG9iamVjdCwgaSk7CisgICAgICAgICpvdXRwKysgPSAnXFwnOworICAgICAgICBpZiAoYyA+PSAweDAwMDEwMDAwKSB7CisgICAgICAgICAgICAqb3V0cCsrID0gJ1UnOworICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MjgpJjB4Zl07CisgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj4yNCkmMHhmXTsKKyAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjIwKSYweGZdOworICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MTYpJjB4Zl07CisgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj4xMikmMHhmXTsKKyAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjgpJjB4Zl07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYyA+PSAweDEwMCkgeworICAgICAgICAgICAgKm91dHArKyA9ICd1JzsKKyAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjEyKSYweGZdOworICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+OCkmMHhmXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICAqb3V0cCsrID0gJ3gnOworICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj40KSYweGZdOworICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzW2MmMHhmXTsKKyAgICB9CisKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgIFB5X0RFQ1JFRihvYmplY3QpOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTm4pIiwgcmVzLCBlbmQpOworfQorCitzdGF0aWMgX1B5VW5pY29kZV9OYW1lX0NBUEkgKnVjbmhhc2hfQ0FQSSA9IE5VTEw7CisKK1B5T2JqZWN0ICpQeUNvZGVjX05hbWVSZXBsYWNlRXJyb3JzKFB5T2JqZWN0ICpleGMpCit7CiAgICAgaWYgKFB5T2JqZWN0X1R5cGVDaGVjayhleGMsIChQeVR5cGVPYmplY3QgKilQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IpKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKICAgICAgICAgUHlPYmplY3QgKm9iamVjdDsKQEAgLTg2NSwzNiArOTc4LDU2IEBACiAgICAgICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dHA7CiAgICAgICAgIFB5X3NzaXplX3QgcmVzc2l6ZTsKKyAgICAgICAgaW50IHJlcGxzaXplOwogICAgICAgICBQeV9VQ1M0IGM7CisgICAgICAgIGNoYXIgYnVmZmVyWzI1Nl07IC8qIE5BTUVfTUFYTEVOICovCiAgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydChleGMsICZzdGFydCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZChleGMsICZlbmQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICghKG9iamVjdCA9IFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdChleGMpKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoZW5kIC0gc3RhcnQgPiBQWV9TU0laRV9UX01BWCAvICgxKzErOCkpCi0gICAgICAgICAgICBlbmQgPSBzdGFydCArIFBZX1NTSVpFX1RfTUFYIC8gKDErMSs4KTsKKyAgICAgICAgaWYgKCF1Y25oYXNoX0NBUEkpIHsKKyAgICAgICAgICAgIC8qIGxvYWQgdGhlIHVuaWNvZGUgZGF0YSBtb2R1bGUgKi8KKyAgICAgICAgICAgIHVjbmhhc2hfQ0FQSSA9IChfUHlVbmljb2RlX05hbWVfQ0FQSSAqKVB5Q2Fwc3VsZV9JbXBvcnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZURhdGFfQ0FQU1VMRV9OQU1FLCAxKTsKKyAgICAgICAgICAgIGlmICghdWNuaGFzaF9DQVBJKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIGZvciAoaSA9IHN0YXJ0LCByZXNzaXplID0gMDsgaSA8IGVuZDsgKytpKSB7CiAgICAgICAgICAgICAvKiBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBiZSAicmVhZHkiICovCiAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmplY3QsIGkpOwotICAgICAgICAgICAgaWYgKGMgPj0gMHgxMDAwMCkgewotICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMSsxKzg7CisgICAgICAgICAgICBpZiAodWNuaGFzaF9DQVBJLT5nZXRuYW1lKE5VTEwsIGMsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIDEpKSB7CisgICAgICAgICAgICAgICAgcmVwbHNpemUgPSAxKzErMSsoaW50KXN0cmxlbihidWZmZXIpKzE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjID49IDB4MTAwMDApIHsKKyAgICAgICAgICAgICAgICByZXBsc2l6ZSA9IDErMSs4OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAweDEwMCkgewotICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMSsxKzQ7CisgICAgICAgICAgICAgICAgcmVwbHNpemUgPSAxKzErNDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNzaXplICs9IDErMSsyOworICAgICAgICAgICAgICAgIHJlcGxzaXplID0gMSsxKzI7CisgICAgICAgICAgICBpZiAocmVzc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gcmVwbHNpemUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXNzaXplICs9IHJlcGxzaXplOwogICAgICAgICB9CisgICAgICAgIGVuZCA9IGk7CiAgICAgICAgIHJlcyA9IFB5VW5pY29kZV9OZXcocmVzc2l6ZSwgMTI3KTsKLSAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKKyAgICAgICAgaWYgKHJlcz09TlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgICAgIGZvciAoaSA9IHN0YXJ0LCBvdXRwID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKTsKICAgICAgICAgICAgIGkgPCBlbmQ7ICsraSkgewogICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKICAgICAgICAgICAgICpvdXRwKysgPSAnXFwnOworICAgICAgICAgICAgaWYgKHVjbmhhc2hfQ0FQSS0+Z2V0bmFtZShOVUxMLCBjLCBidWZmZXIsIHNpemVvZihidWZmZXIpLCAxKSkgeworICAgICAgICAgICAgICAgICpvdXRwKysgPSAnTic7CisgICAgICAgICAgICAgICAgKm91dHArKyA9ICd7JzsKKyAgICAgICAgICAgICAgICBzdHJjcHkoKGNoYXIgKilvdXRwLCBidWZmZXIpOworICAgICAgICAgICAgICAgIG91dHAgKz0gc3RybGVuKGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgKm91dHArKyA9ICd9JzsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjID49IDB4MDAwMTAwMDApIHsKICAgICAgICAgICAgICAgICAqb3V0cCsrID0gJ1UnOwogICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjI4KSYweGZdOwpAQCAtOTE1LDYgKzEwNDgsNyBAQAogICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1tjJjB4Zl07CiAgICAgICAgIH0KIAorICAgICAgICBhc3NlcnQob3V0cCA9PSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpICsgcmVzc2l6ZSk7CiAgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CiAgICAgICAgIHJlc3R1cGxlID0gUHlfQnVpbGRWYWx1ZSgiKE5uKSIsIHJlcywgZW5kKTsKICAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CkBAIC05MjYsNiArMTA2MCw3IEBACiAgICAgfQogfQogCisjZGVmaW5lIEVOQ19VTktOT1dOICAgICAtMQogI2RlZmluZSBFTkNfVVRGOCAgICAgICAgMAogI2RlZmluZSBFTkNfVVRGMTZCRSAgICAgMQogI2RlZmluZSBFTkNfVVRGMTZMRSAgICAgMgpAQCAtOTQxLDcgKzEwNzYsMTEgQEAKICAgICAgICAgZW5jb2RpbmcgKz0gMzsKICAgICAgICAgaWYgKCplbmNvZGluZyA9PSAnLScgfHwgKmVuY29kaW5nID09ICdfJyApCiAgICAgICAgICAgICBlbmNvZGluZysrOwotICAgICAgICBpZiAoZW5jb2RpbmdbMF0gPT0gJzEnICYmIGVuY29kaW5nWzFdID09ICc2JykgeworICAgICAgICBpZiAoZW5jb2RpbmdbMF0gPT0gJzgnICYmIGVuY29kaW5nWzFdID09ICdcMCcpIHsKKyAgICAgICAgICAgICpieXRlbGVuZ3RoID0gMzsKKyAgICAgICAgICAgIHJldHVybiBFTkNfVVRGODsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlbmNvZGluZ1swXSA9PSAnMScgJiYgZW5jb2RpbmdbMV0gPT0gJzYnKSB7CiAgICAgICAgICAgICBlbmNvZGluZyArPSAyOwogICAgICAgICAgICAgKmJ5dGVsZW5ndGggPSAyOwogICAgICAgICAgICAgaWYgKCplbmNvZGluZyA9PSAnXDAnKSB7CkBAIC05ODAsOSArMTExOSwxMSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIC8qIHV0Zi04ICovCi0gICAgKmJ5dGVsZW5ndGggPSAzOwotICAgIHJldHVybiBFTkNfVVRGODsKKyAgICBlbHNlIGlmIChzdHJjbXAoZW5jb2RpbmcsICJDUF9VVEY4IikgPT0gMCkgeworICAgICAgICAqYnl0ZWxlbmd0aCA9IDM7CisgICAgICAgIHJldHVybiBFTkNfVVRGODsKKyAgICB9CisgICAgcmV0dXJuIEVOQ19VTktOT1dOOwogfQogCiAvKiBUaGlzIGhhbmRsZXIgaXMgZGVjbGFyZWQgc3RhdGljIHVudGlsIHNvbWVvbmUgZGVtb25zdHJhdGVzCkBAIC0xMDIwLDYgKzExNjEsMTIgQEAKICAgICAgICAgfQogICAgICAgICBjb2RlID0gZ2V0X3N0YW5kYXJkX2VuY29kaW5nKGVuY29kaW5nLCAmYnl0ZWxlbmd0aCk7CiAgICAgICAgIFB5X0RFQ1JFRihlbmNvZGUpOworICAgICAgICBpZiAoY29kZSA9PSBFTkNfVU5LTk9XTikgeworICAgICAgICAgICAgLyogTm90IHN1cHBvcnRlZCwgZmFpbCB3aXRoIG9yaWdpbmFsIGV4Y2VwdGlvbiAqLworICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2xhc3MoZXhjKSwgZXhjKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvYmplY3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoZW5kIC0gc3RhcnQgPiBQWV9TU0laRV9UX01BWCAvIGJ5dGVsZW5ndGgpCiAgICAgICAgICAgICBlbmQgPSBzdGFydCArIFBZX1NTSVpFX1RfTUFYIC8gYnl0ZWxlbmd0aDsKQEAgLTEwOTYsNiArMTI0MywxMiBAQAogICAgICAgICB9CiAgICAgICAgIGNvZGUgPSBnZXRfc3RhbmRhcmRfZW5jb2RpbmcoZW5jb2RpbmcsICZieXRlbGVuZ3RoKTsKICAgICAgICAgUHlfREVDUkVGKGVuY29kZSk7CisgICAgICAgIGlmIChjb2RlID09IEVOQ19VTktOT1dOKSB7CisgICAgICAgICAgICAvKiBOb3Qgc3VwcG9ydGVkLCBmYWlsIHdpdGggb3JpZ2luYWwgZXhjZXB0aW9uICovCisgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNlcHRpb25JbnN0YW5jZV9DbGFzcyhleGMpLCBleGMpOworICAgICAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogCiAgICAgICAgIC8qIFRyeSBkZWNvZGluZyBhIHNpbmdsZSBzdXJyb2dhdGUgY2hhcmFjdGVyLiBJZgogICAgICAgICAgICB0aGVyZSBhcmUgbW9yZSwgbGV0IHRoZSBjb2RlYyBjYWxsIHVzIGFnYWluLiAqLwpAQCAtMTI1Miw2ICsxNDA1LDExIEBACiAgICAgcmV0dXJuIFB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycyhleGMpOwogfQogCitzdGF0aWMgUHlPYmplY3QgKm5hbWVyZXBsYWNlX2Vycm9ycyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmV4YykKK3sKKyAgICByZXR1cm4gUHlDb2RlY19OYW1lUmVwbGFjZUVycm9ycyhleGMpOworfQorCiBzdGF0aWMgUHlPYmplY3QgKnN1cnJvZ2F0ZXBhc3NfZXJyb3JzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZXhjKQogewogICAgIHJldHVybiBQeUNvZGVjX1N1cnJvZ2F0ZVBhc3NFcnJvcnMoZXhjKTsKQEAgLTEzMTcsOCArMTQ3NSwxOSBAQAogICAgICAgICAgICAgICAgIGJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzLAogICAgICAgICAgICAgICAgIE1FVEhfTywKICAgICAgICAgICAgICAgICBQeURvY19TVFIoIkltcGxlbWVudHMgdGhlICdiYWNrc2xhc2hyZXBsYWNlJyBlcnJvciBoYW5kbGluZywgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAid2hpY2ggcmVwbGFjZXMgbWFsZm9ybWVkIGRhdGEgd2l0aCBhIGJhY2tzbGFzaGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImVzY2FwZSBzZXF1ZW5jZS4iKQorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZXJlcGxhY2UiLAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lcmVwbGFjZV9lcnJvcnMiLAorICAgICAgICAgICAgICAgIG5hbWVyZXBsYWNlX2Vycm9ycywKKyAgICAgICAgICAgICAgICBNRVRIX08sCisgICAgICAgICAgICAgICAgUHlEb2NfU1RSKCJJbXBsZW1lbnRzIHRoZSAnbmFtZXJlcGxhY2UnIGVycm9yIGhhbmRsaW5nLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGljaCByZXBsYWNlcyBhbiB1bmVuY29kYWJsZSBjaGFyYWN0ZXIgd2l0aCBhICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImJhY2tzbGFzaGVkIGVzY2FwZSBzZXF1ZW5jZS4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAiXFxOey4uLn0gZXNjYXBlIHNlcXVlbmNlLiIpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1B5dGhvbi9jb21waWxlLmMgYi9QeXRob24vY29tcGlsZS5jCmluZGV4IGZmNjI0ODcuLjc2MzFmNGUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jb21waWxlLmMKKysrIGIvUHl0aG9uL2NvbXBpbGUuYwpAQCAtMzAsOCArMzAsNiBAQAogI2luY2x1ZGUgInN5bXRhYmxlLmgiCiAjaW5jbHVkZSAib3Bjb2RlLmgiCiAKLWludCBQeV9PcHRpbWl6ZUZsYWcgPSAwOwotCiAjZGVmaW5lIERFRkFVTFRfQkxPQ0tfU0laRSAxNgogI2RlZmluZSBERUZBVUxUX0JMT0NLUyA4CiAjZGVmaW5lIERFRkFVTFRfQ09ERV9TSVpFIDEyOApAQCAtOTQsNiArOTIsNyBAQAogICAgIENPTVBJTEVSX1NDT1BFX01PRFVMRSwKICAgICBDT01QSUxFUl9TQ09QRV9DTEFTUywKICAgICBDT01QSUxFUl9TQ09QRV9GVU5DVElPTiwKKyAgICBDT01QSUxFUl9TQ09QRV9BU1lOQ19GVU5DVElPTiwKICAgICBDT01QSUxFUl9TQ09QRV9MQU1CREEsCiAgICAgQ09NUElMRVJfU0NPUEVfQ09NUFJFSEVOU0lPTiwKIH07CkBAIC0xOTUsMTEgKzE5NCwxMSBAQAogc3RhdGljIGludCBleHByX2NvbnN0YW50KHN0cnVjdCBjb21waWxlciAqLCBleHByX3R5KTsKIAogc3RhdGljIGludCBjb21waWxlcl93aXRoKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5LCBpbnQpOworc3RhdGljIGludCBjb21waWxlcl9hc3luY193aXRoKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5LCBpbnQpOworc3RhdGljIGludCBjb21waWxlcl9hc3luY19mb3Ioc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHkpOwogc3RhdGljIGludCBjb21waWxlcl9jYWxsX2hlbHBlcihzdHJ1Y3QgY29tcGlsZXIgKmMsIFB5X3NzaXplX3QgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICprZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBzdGFyYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBrd2FyZ3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqa2V5d29yZHMpOwogc3RhdGljIGludCBjb21waWxlcl90cnlfZXhjZXB0KHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfc2V0X3F1YWxuYW1lKHN0cnVjdCBjb21waWxlciAqKTsKIApAQCAtNjc3LDcgKzY3Niw5IEBACiAgICAgICAgIHBhcmVudCA9IChzdHJ1Y3QgY29tcGlsZXJfdW5pdCAqKVB5Q2Fwc3VsZV9HZXRQb2ludGVyKGNhcHN1bGUsIENBUFNVTEVfTkFNRSk7CiAgICAgICAgIGFzc2VydChwYXJlbnQpOwogCi0gICAgICAgIGlmICh1LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfRlVOQ1RJT04gfHwgdS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0NMQVNTKSB7CisgICAgICAgIGlmICh1LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfRlVOQ1RJT04KKyAgICAgICAgICAgIHx8IHUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9BU1lOQ19GVU5DVElPTgorICAgICAgICAgICAgfHwgdS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0NMQVNTKSB7CiAgICAgICAgICAgICBhc3NlcnQodS0+dV9uYW1lKTsKICAgICAgICAgICAgIG1hbmdsZWQgPSBfUHlfTWFuZ2xlKHBhcmVudC0+dV9wcml2YXRlLCB1LT51X25hbWUpOwogICAgICAgICAgICAgaWYgKCFtYW5nbGVkKQpAQCAtNjkxLDYgKzY5Miw3IEBACiAKICAgICAgICAgaWYgKCFmb3JjZV9nbG9iYWwpIHsKICAgICAgICAgICAgIGlmIChwYXJlbnQtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9GVU5DVElPTgorICAgICAgICAgICAgICAgIHx8IHBhcmVudC0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0FTWU5DX0ZVTkNUSU9OCiAgICAgICAgICAgICAgICAgfHwgcGFyZW50LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfTEFNQkRBKSB7CiAgICAgICAgICAgICAgICAgZG90X2xvY2Fsc19zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmZG90X2xvY2Fscyk7CiAgICAgICAgICAgICAgICAgaWYgKGRvdF9sb2NhbHNfc3RyID09IE5VTEwpCkBAIC04ODEsNiArODgzLDcgQEAKIAogICAgICAgICBjYXNlIEJJTkFSWV9QT1dFUjoKICAgICAgICAgY2FzZSBCSU5BUllfTVVMVElQTFk6CisgICAgICAgIGNhc2UgQklOQVJZX01BVFJJWF9NVUxUSVBMWToKICAgICAgICAgY2FzZSBCSU5BUllfTU9EVUxPOgogICAgICAgICBjYXNlIEJJTkFSWV9BREQ6CiAgICAgICAgIGNhc2UgQklOQVJZX1NVQlRSQUNUOgpAQCAtODk1LDEyICs4OTgsMTEgQEAKICAgICAgICAgY2FzZSBJTlBMQUNFX0FERDoKICAgICAgICAgY2FzZSBJTlBMQUNFX1NVQlRSQUNUOgogICAgICAgICBjYXNlIElOUExBQ0VfTVVMVElQTFk6CisgICAgICAgIGNhc2UgSU5QTEFDRV9NQVRSSVhfTVVMVElQTFk6CiAgICAgICAgIGNhc2UgSU5QTEFDRV9NT0RVTE86CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGNhc2UgU1RPUkVfU1VCU0NSOgogICAgICAgICAgICAgcmV0dXJuIC0zOwotICAgICAgICBjYXNlIFNUT1JFX01BUDoKLSAgICAgICAgICAgIHJldHVybiAtMjsKICAgICAgICAgY2FzZSBERUxFVEVfU1VCU0NSOgogICAgICAgICAgICAgcmV0dXJuIC0yOwogCkBAIC05MjksNyArOTMxLDkgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBjYXNlIFNFVFVQX1dJVEg6CiAgICAgICAgICAgICByZXR1cm4gNzsKLSAgICAgICAgY2FzZSBXSVRIX0NMRUFOVVA6CisgICAgICAgIGNhc2UgV0lUSF9DTEVBTlVQX1NUQVJUOgorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgV0lUSF9DTEVBTlVQX0ZJTklTSDoKICAgICAgICAgICAgIHJldHVybiAtMTsgLyogWFhYIFNvbWV0aW1lcyBtb3JlICovCiAgICAgICAgIGNhc2UgUkVUVVJOX1ZBTFVFOgogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtOTczLDggKzk3NywxNSBAQAogICAgICAgICBjYXNlIEJVSUxEX0xJU1Q6CiAgICAgICAgIGNhc2UgQlVJTERfU0VUOgogICAgICAgICAgICAgcmV0dXJuIDEtb3Bhcmc7CisgICAgICAgIGNhc2UgQlVJTERfTElTVF9VTlBBQ0s6CisgICAgICAgIGNhc2UgQlVJTERfVFVQTEVfVU5QQUNLOgorICAgICAgICBjYXNlIEJVSUxEX1NFVF9VTlBBQ0s6CisgICAgICAgIGNhc2UgQlVJTERfTUFQX1VOUEFDSzoKKyAgICAgICAgICAgIHJldHVybiAxIC0gb3Bhcmc7CisgICAgICAgIGNhc2UgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEw6CisgICAgICAgICAgICByZXR1cm4gMSAtIChvcGFyZyAmIDB4RkYpOwogICAgICAgICBjYXNlIEJVSUxEX01BUDoKLSAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgcmV0dXJuIDEgLSAyKm9wYXJnOwogICAgICAgICBjYXNlIExPQURfQVRUUjoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBjYXNlIENPTVBBUkVfT1A6CkBAIC0xMDQzLDYgKzEwNTQsMTggQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgY2FzZSBERUxFVEVfREVSRUY6CiAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHRVRfQVdBSVRBQkxFOgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgU0VUVVBfQVNZTkNfV0lUSDoKKyAgICAgICAgICAgIHJldHVybiA2OworICAgICAgICBjYXNlIEJFRk9SRV9BU1lOQ19XSVRIOgorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgR0VUX0FJVEVSOgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR0VUX0FORVhUOgorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgR0VUX1lJRUxEX0ZST01fSVRFUjoKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIFBZX0lOVkFMSURfU1RBQ0tfRUZGRUNUOwogICAgIH0KQEAgLTExMjMsOCArMTE0NiwxMCBAQAogCiAgICAgdiA9IFB5RGljdF9HZXRJdGVtKGRpY3QsIHQpOwogICAgIGlmICghdikgewotICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0KTsKICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgICAgICBhcmcgPSBQeURpY3RfU2l6ZShkaWN0KTsKICAgICAgICAgdiA9IFB5TG9uZ19Gcm9tU3NpemVfdChhcmcpOwogICAgICAgICBpZiAoIXYpIHsKQEAgLTE1MzYsMzIgKzE1NjEsMzEgQEAKICAgICAgICAgVklTSVQoYywgZXhwciwgYW5ub3RhdGlvbik7CiAgICAgICAgIG1hbmdsZWQgPSBfUHlfTWFuZ2xlKGMtPnUtPnVfcHJpdmF0ZSwgaWQpOwogICAgICAgICBpZiAoIW1hbmdsZWQpCi0gICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobmFtZXMsIG1hbmdsZWQpIDwgMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKG1hbmdsZWQpOwotICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKG1hbmdsZWQpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gMTsKIH0KIAogc3RhdGljIGludAogY29tcGlsZXJfdmlzaXRfYXJnYW5ub3RhdGlvbnMoc3RydWN0IGNvbXBpbGVyICpjLCBhc2RsX3NlcSogYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lcykKIHsKLSAgICBpbnQgaSwgZXJyb3I7CisgICAgaW50IGk7CiAgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihhcmdzKTsgaSsrKSB7CiAgICAgICAgIGFyZ190eSBhcmcgPSAoYXJnX3R5KWFzZGxfc2VxX0dFVChhcmdzLCBpKTsKLSAgICAgICAgZXJyb3IgPSBjb21waWxlcl92aXNpdF9hcmdhbm5vdGF0aW9uKAorICAgICAgICBpZiAoIWNvbXBpbGVyX3Zpc2l0X2FyZ2Fubm90YXRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICBjLAogICAgICAgICAgICAgICAgICAgICAgICAgYXJnLT5hcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPmFubm90YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lcyk7Ci0gICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzKSkKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gMTsKIH0KIAogc3RhdGljIGludApAQCAtMTU4MSwxNiArMTYwNSwxNiBAQAogICAgIGlmICghbmFtZXMpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIGlmIChjb21waWxlcl92aXNpdF9hcmdhbm5vdGF0aW9ucyhjLCBhcmdzLT5hcmdzLCBuYW1lcykpCisgICAgaWYgKCFjb21waWxlcl92aXNpdF9hcmdhbm5vdGF0aW9ucyhjLCBhcmdzLT5hcmdzLCBuYW1lcykpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgaWYgKGFyZ3MtPnZhcmFyZyAmJiBhcmdzLT52YXJhcmctPmFubm90YXRpb24gJiYKLSAgICAgICAgY29tcGlsZXJfdmlzaXRfYXJnYW5ub3RhdGlvbihjLCBhcmdzLT52YXJhcmctPmFyZywKKyAgICAgICAgIWNvbXBpbGVyX3Zpc2l0X2FyZ2Fubm90YXRpb24oYywgYXJncy0+dmFyYXJnLT5hcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+dmFyYXJnLT5hbm5vdGF0aW9uLCBuYW1lcykpCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgaWYgKGNvbXBpbGVyX3Zpc2l0X2FyZ2Fubm90YXRpb25zKGMsIGFyZ3MtPmt3b25seWFyZ3MsIG5hbWVzKSkKKyAgICBpZiAoIWNvbXBpbGVyX3Zpc2l0X2FyZ2Fubm90YXRpb25zKGMsIGFyZ3MtPmt3b25seWFyZ3MsIG5hbWVzKSkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBpZiAoYXJncy0+a3dhcmcgJiYgYXJncy0+a3dhcmctPmFubm90YXRpb24gJiYKLSAgICAgICAgY29tcGlsZXJfdmlzaXRfYXJnYW5ub3RhdGlvbihjLCBhcmdzLT5rd2FyZy0+YXJnLAorICAgICAgICAhY29tcGlsZXJfdmlzaXRfYXJnYW5ub3RhdGlvbihjLCBhcmdzLT5rd2FyZy0+YXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MtPmt3YXJnLT5hbm5vdGF0aW9uLCBuYW1lcykpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTE1OTksNyArMTYyMyw3IEBACiAgICAgICAgIGlmICghcmV0dXJuX3N0cikKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIGlmIChjb21waWxlcl92aXNpdF9hcmdhbm5vdGF0aW9uKGMsIHJldHVybl9zdHIsIHJldHVybnMsIG5hbWVzKSkgeworICAgIGlmICghY29tcGlsZXJfdmlzaXRfYXJnYW5ub3RhdGlvbihjLCByZXR1cm5fc3RyLCByZXR1cm5zLCBuYW1lcykpIHsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKQEAgLTE2MzcsMTkgKzE2NjEsNDMgQEAKIH0KIAogc3RhdGljIGludAotY29tcGlsZXJfZnVuY3Rpb24oc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMpCitjb21waWxlcl9mdW5jdGlvbihzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcywgaW50IGlzX2FzeW5jKQogewogICAgIFB5Q29kZU9iamVjdCAqY287CiAgICAgUHlPYmplY3QgKnF1YWxuYW1lLCAqZmlyc3RfY29uc3QgPSBQeV9Ob25lOwotICAgIGFyZ3VtZW50c190eSBhcmdzID0gcy0+di5GdW5jdGlvbkRlZi5hcmdzOwotICAgIGV4cHJfdHkgcmV0dXJucyA9IHMtPnYuRnVuY3Rpb25EZWYucmV0dXJuczsKLSAgICBhc2RsX3NlcSogZGVjb3MgPSBzLT52LkZ1bmN0aW9uRGVmLmRlY29yYXRvcl9saXN0OworICAgIGFyZ3VtZW50c190eSBhcmdzOworICAgIGV4cHJfdHkgcmV0dXJuczsKKyAgICBpZGVudGlmaWVyIG5hbWU7CisgICAgYXNkbF9zZXEqIGRlY29zOworICAgIGFzZGxfc2VxICpib2R5OwogICAgIHN0bXRfdHkgc3Q7CiAgICAgUHlfc3NpemVfdCBpLCBuLCBhcmdsZW5ndGg7CiAgICAgaW50IGRvY3N0cmluZywga3dfZGVmYXVsdF9jb3VudCA9IDA7CiAgICAgaW50IG51bV9hbm5vdGF0aW9uczsKKyAgICBpbnQgc2NvcGVfdHlwZTsKIAotICAgIGFzc2VydChzLT5raW5kID09IEZ1bmN0aW9uRGVmX2tpbmQpOworCisgICAgaWYgKGlzX2FzeW5jKSB7CisgICAgICAgIGFzc2VydChzLT5raW5kID09IEFzeW5jRnVuY3Rpb25EZWZfa2luZCk7CisKKyAgICAgICAgYXJncyA9IHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5hcmdzOworICAgICAgICByZXR1cm5zID0gcy0+di5Bc3luY0Z1bmN0aW9uRGVmLnJldHVybnM7CisgICAgICAgIGRlY29zID0gcy0+di5Bc3luY0Z1bmN0aW9uRGVmLmRlY29yYXRvcl9saXN0OworICAgICAgICBuYW1lID0gcy0+di5Bc3luY0Z1bmN0aW9uRGVmLm5hbWU7CisgICAgICAgIGJvZHkgPSBzLT52LkFzeW5jRnVuY3Rpb25EZWYuYm9keTsKKworICAgICAgICBzY29wZV90eXBlID0gQ09NUElMRVJfU0NPUEVfQVNZTkNfRlVOQ1RJT047CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KHMtPmtpbmQgPT0gRnVuY3Rpb25EZWZfa2luZCk7CisKKyAgICAgICAgYXJncyA9IHMtPnYuRnVuY3Rpb25EZWYuYXJnczsKKyAgICAgICAgcmV0dXJucyA9IHMtPnYuRnVuY3Rpb25EZWYucmV0dXJuczsKKyAgICAgICAgZGVjb3MgPSBzLT52LkZ1bmN0aW9uRGVmLmRlY29yYXRvcl9saXN0OworICAgICAgICBuYW1lID0gcy0+di5GdW5jdGlvbkRlZi5uYW1lOworICAgICAgICBib2R5ID0gcy0+di5GdW5jdGlvbkRlZi5ib2R5OworCisgICAgICAgIHNjb3BlX3R5cGUgPSBDT01QSUxFUl9TQ09QRV9GVU5DVElPTjsKKyAgICB9CiAKICAgICBpZiAoIWNvbXBpbGVyX2RlY29yYXRvcnMoYywgZGVjb3MpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE2NjcsMTIgKzE3MTUsMTIgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgYXNzZXJ0KChudW1fYW5ub3RhdGlvbnMgJiAweEZGRkYpID09IG51bV9hbm5vdGF0aW9ucyk7CiAKLSAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIHMtPnYuRnVuY3Rpb25EZWYubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTVBJTEVSX1NDT1BFX0ZVTkNUSU9OLCAodm9pZCAqKXMsCisgICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVfdHlwZSwgKHZvaWQgKilzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGluZW5vKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBzdCA9IChzdG10X3R5KWFzZGxfc2VxX0dFVChzLT52LkZ1bmN0aW9uRGVmLmJvZHksIDApOworICAgIHN0ID0gKHN0bXRfdHkpYXNkbF9zZXFfR0VUKGJvZHksIDApOwogICAgIGRvY3N0cmluZyA9IGNvbXBpbGVyX2lzZG9jc3RyaW5nKHN0KTsKICAgICBpZiAoZG9jc3RyaW5nICYmIGMtPmNfb3B0aW1pemUgPCAyKQogICAgICAgICBmaXJzdF9jb25zdCA9IHN0LT52LkV4cHIudmFsdWUtPnYuU3RyLnM7CkBAIC0xNjgzLDEwICsxNzMxLDEwIEBACiAKICAgICBjLT51LT51X2FyZ2NvdW50ID0gYXNkbF9zZXFfTEVOKGFyZ3MtPmFyZ3MpOwogICAgIGMtPnUtPnVfa3dvbmx5YXJnY291bnQgPSBhc2RsX3NlcV9MRU4oYXJncy0+a3dvbmx5YXJncyk7Ci0gICAgbiA9IGFzZGxfc2VxX0xFTihzLT52LkZ1bmN0aW9uRGVmLmJvZHkpOworICAgIG4gPSBhc2RsX3NlcV9MRU4oYm9keSk7CiAgICAgLyogaWYgdGhlcmUgd2FzIGEgZG9jc3RyaW5nLCB3ZSBuZWVkIHRvIHNraXAgdGhlIGZpcnN0IHN0YXRlbWVudCAqLwogICAgIGZvciAoaSA9IGRvY3N0cmluZzsgaSA8IG47IGkrKykgewotICAgICAgICBzdCA9IChzdG10X3R5KWFzZGxfc2VxX0dFVChzLT52LkZ1bmN0aW9uRGVmLmJvZHksIGkpOworICAgICAgICBzdCA9IChzdG10X3R5KWFzZGxfc2VxX0dFVChib2R5LCBpKTsKICAgICAgICAgVklTSVRfSU5fU0NPUEUoYywgc3RtdCwgc3QpOwogICAgIH0KICAgICBjbyA9IGFzc2VtYmxlKGMsIDEpOwpAQCAtMTcwMiw2ICsxNzUwLDggQEAKICAgICBhcmdsZW5ndGggPSBhc2RsX3NlcV9MRU4oYXJncy0+ZGVmYXVsdHMpOwogICAgIGFyZ2xlbmd0aCB8PSBrd19kZWZhdWx0X2NvdW50IDw8IDg7CiAgICAgYXJnbGVuZ3RoIHw9IG51bV9hbm5vdGF0aW9ucyA8PCAxNjsKKyAgICBpZiAoaXNfYXN5bmMpCisgICAgICAgIGNvLT5jb19mbGFncyB8PSBDT19DT1JPVVRJTkU7CiAgICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCBhcmdsZW5ndGgsIHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYocXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihjbyk7CkBAIC0xNzExLDcgKzE3NjEsNyBAQAogICAgICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT04sIDEpOwogICAgIH0KIAotICAgIHJldHVybiBjb21waWxlcl9uYW1lb3AoYywgcy0+di5GdW5jdGlvbkRlZi5uYW1lLCBTdG9yZSk7CisgICAgcmV0dXJuIGNvbXBpbGVyX25hbWVvcChjLCBuYW1lLCBTdG9yZSk7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTE3NDUsOCArMTc5NSw3IEBACiAgICAgewogICAgICAgICAvKiB1c2UgdGhlIGNsYXNzIG5hbWUgZm9yIG5hbWUgbWFuZ2xpbmcgKi8KICAgICAgICAgUHlfSU5DUkVGKHMtPnYuQ2xhc3NEZWYubmFtZSk7Ci0gICAgICAgIFB5X1hERUNSRUYoYy0+dS0+dV9wcml2YXRlKTsKLSAgICAgICAgYy0+dS0+dV9wcml2YXRlID0gcy0+di5DbGFzc0RlZi5uYW1lOworICAgICAgICBQeV9TRVRSRUYoYy0+dS0+dV9wcml2YXRlLCBzLT52LkNsYXNzRGVmLm5hbWUpOwogICAgICAgICAvKiBsb2FkIChnbG9iYWwpIF9fbmFtZV9fIC4uLiAqLwogICAgICAgICBzdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19uYW1lX18iKTsKICAgICAgICAgaWYgKCFzdHIgfHwgIWNvbXBpbGVyX25hbWVvcChjLCBzdHIsIExvYWQpKSB7CkBAIC0xODIxLDkgKzE4NzAsNyBAQAogICAgIC8qIDUuIGdlbmVyYXRlIHRoZSByZXN0IG9mIHRoZSBjb2RlIGZvciB0aGUgY2FsbCAqLwogICAgIGlmICghY29tcGlsZXJfY2FsbF9oZWxwZXIoYywgMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnYuQ2xhc3NEZWYuYmFzZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT52LkNsYXNzRGVmLmtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+di5DbGFzc0RlZi5zdGFyYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnYuQ2xhc3NEZWYua3dhcmdzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnYuQ2xhc3NEZWYua2V5d29yZHMpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8qIDYuIGFwcGx5IGRlY29yYXRvcnMgKi8KQEAgLTE5MzgsNyArMTk4NSw3IEBACiAgICAgfSBlbHNlIGlmIChjb25zdGFudCA9PSAxKSB7CiAgICAgICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LklmLmJvZHkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChzLT52LklmLm9yZWxzZSkgeworICAgICAgICBpZiAoYXNkbF9zZXFfTEVOKHMtPnYuSWYub3JlbHNlKSkgewogICAgICAgICAgICAgbmV4dCA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKICAgICAgICAgICAgIGlmIChuZXh0ID09IE5VTEwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0xOTQ4LDggKzE5OTUsOCBAQAogICAgICAgICBWSVNJVChjLCBleHByLCBzLT52LklmLnRlc3QpOwogICAgICAgICBBRERPUF9KQUJTKGMsIFBPUF9KVU1QX0lGX0ZBTFNFLCBuZXh0KTsKICAgICAgICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuSWYuYm9keSk7Ci0gICAgICAgIEFERE9QX0pSRUwoYywgSlVNUF9GT1JXQVJELCBlbmQpOwotICAgICAgICBpZiAocy0+di5JZi5vcmVsc2UpIHsKKyAgICAgICAgaWYgKGFzZGxfc2VxX0xFTihzLT52LklmLm9yZWxzZSkpIHsKKyAgICAgICAgICAgIEFERE9QX0pSRUwoYywgSlVNUF9GT1JXQVJELCBlbmQpOwogICAgICAgICAgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgbmV4dCk7CiAgICAgICAgICAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5JZi5vcmVsc2UpOwogICAgICAgICB9CkBAIC0xOTg2LDYgKzIwMzMsOTIgQEAKICAgICByZXR1cm4gMTsKIH0KIAorCitzdGF0aWMgaW50Citjb21waWxlcl9hc3luY19mb3Ioc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMpCit7CisgICAgc3RhdGljIFB5T2JqZWN0ICpzdG9waXRlcl9lcnJvciA9IE5VTEw7CisgICAgYmFzaWNibG9jayAqdHJ5LCAqZXhjZXB0LCAqZW5kLCAqYWZ0ZXJfdHJ5LCAqdHJ5X2NsZWFudXAsCisgICAgICAgICAgICAgICAqYWZ0ZXJfbG9vcCwgKmFmdGVyX2xvb3BfZWxzZTsKKworICAgIGlmIChzdG9waXRlcl9lcnJvciA9PSBOVUxMKSB7CisgICAgICAgIHN0b3BpdGVyX2Vycm9yID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIlN0b3BBc3luY0l0ZXJhdGlvbiIpOworICAgICAgICBpZiAoc3RvcGl0ZXJfZXJyb3IgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHRyeSA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBleGNlcHQgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgZW5kID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIGFmdGVyX3RyeSA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICB0cnlfY2xlYW51cCA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBhZnRlcl9sb29wID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIGFmdGVyX2xvb3BfZWxzZSA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKworICAgIGlmICh0cnkgPT0gTlVMTCB8fCBleGNlcHQgPT0gTlVMTCB8fCBlbmQgPT0gTlVMTAorICAgICAgICAgICAgfHwgYWZ0ZXJfdHJ5ID09IE5VTEwgfHwgdHJ5X2NsZWFudXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBRERPUF9KUkVMKGMsIFNFVFVQX0xPT1AsIGFmdGVyX2xvb3ApOworICAgIGlmICghY29tcGlsZXJfcHVzaF9mYmxvY2soYywgTE9PUCwgdHJ5KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBWSVNJVChjLCBleHByLCBzLT52LkFzeW5jRm9yLml0ZXIpOworICAgIEFERE9QKGMsIEdFVF9BSVRFUik7CisgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworCisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgdHJ5KTsKKworCisgICAgQURET1BfSlJFTChjLCBTRVRVUF9FWENFUFQsIGV4Y2VwdCk7CisgICAgaWYgKCFjb21waWxlcl9wdXNoX2ZibG9jayhjLCBFWENFUFQsIHRyeSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgQURET1AoYywgR0VUX0FORVhUKTsKKyAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CisgICAgQURET1AoYywgWUlFTERfRlJPTSk7CisgICAgVklTSVQoYywgZXhwciwgcy0+di5Bc3luY0Zvci50YXJnZXQpOworICAgIEFERE9QKGMsIFBPUF9CTE9DSyk7CisgICAgY29tcGlsZXJfcG9wX2ZibG9jayhjLCBFWENFUFQsIHRyeSk7CisgICAgQURET1BfSlJFTChjLCBKVU1QX0ZPUldBUkQsIGFmdGVyX3RyeSk7CisKKworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGV4Y2VwdCk7CisgICAgQURET1AoYywgRFVQX1RPUCk7CisgICAgQURET1BfTyhjLCBMT0FEX0dMT0JBTCwgc3RvcGl0ZXJfZXJyb3IsIG5hbWVzKTsKKyAgICBBRERPUF9JKGMsIENPTVBBUkVfT1AsIFB5Q21wX0VYQ19NQVRDSCk7CisgICAgQURET1BfSkFCUyhjLCBQT1BfSlVNUF9JRl9GQUxTRSwgdHJ5X2NsZWFudXApOworCisgICAgQURET1AoYywgUE9QX1RPUCk7CisgICAgQURET1AoYywgUE9QX1RPUCk7CisgICAgQURET1AoYywgUE9QX1RPUCk7CisgICAgQURET1AoYywgUE9QX0VYQ0VQVCk7IC8qIGZvciBTRVRVUF9FWENFUFQgKi8KKyAgICBBRERPUChjLCBQT1BfQkxPQ0spOyAvKiBmb3IgU0VUVVBfTE9PUCAqLworICAgIEFERE9QX0pBQlMoYywgSlVNUF9BQlNPTFVURSwgYWZ0ZXJfbG9vcF9lbHNlKTsKKworCisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgdHJ5X2NsZWFudXApOworICAgIEFERE9QKGMsIEVORF9GSU5BTExZKTsKKworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGFmdGVyX3RyeSk7CisgICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuQXN5bmNGb3IuYm9keSk7CisgICAgQURET1BfSkFCUyhjLCBKVU1QX0FCU09MVVRFLCB0cnkpOworCisgICAgQURET1AoYywgUE9QX0JMT0NLKTsgLyogZm9yIFNFVFVQX0xPT1AgKi8KKyAgICBjb21waWxlcl9wb3BfZmJsb2NrKGMsIExPT1AsIHRyeSk7CisKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBhZnRlcl9sb29wKTsKKyAgICBBRERPUF9KQUJTKGMsIEpVTVBfQUJTT0xVVEUsIGVuZCk7CisKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBhZnRlcl9sb29wX2Vsc2UpOworICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LkZvci5vcmVsc2UpOworCisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgZW5kKTsKKworICAgIHJldHVybiAxOworfQorCiBzdGF0aWMgaW50CiBjb21waWxlcl93aGlsZShzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKIHsKQEAgLTI1MTIsNyArMjY0NSw3IEBACiAKICAgICBzd2l0Y2ggKHMtPmtpbmQpIHsKICAgICBjYXNlIEZ1bmN0aW9uRGVmX2tpbmQ6Ci0gICAgICAgIHJldHVybiBjb21waWxlcl9mdW5jdGlvbihjLCBzKTsKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Z1bmN0aW9uKGMsIHMsIDApOwogICAgIGNhc2UgQ2xhc3NEZWZfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2NsYXNzKGMsIHMpOwogICAgIGNhc2UgUmV0dXJuX2tpbmQ6CkBAIC0yNTkxLDcgKzI3MjQsMTQgQEAKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2NvbnRpbnVlKGMpOwogICAgIGNhc2UgV2l0aF9raW5kOgogICAgICAgICByZXR1cm4gY29tcGlsZXJfd2l0aChjLCBzLCAwKTsKKyAgICBjYXNlIEFzeW5jRnVuY3Rpb25EZWZfa2luZDoKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Z1bmN0aW9uKGMsIHMsIDEpOworICAgIGNhc2UgQXN5bmNXaXRoX2tpbmQ6CisgICAgICAgIHJldHVybiBjb21waWxlcl9hc3luY193aXRoKGMsIHMsIDApOworICAgIGNhc2UgQXN5bmNGb3Jfa2luZDoKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2FzeW5jX2ZvcihjLCBzKTsKICAgICB9CisKICAgICByZXR1cm4gMTsKIH0KIApAQCAtMjYyNCw2ICsyNzY0LDggQEAKICAgICAgICAgcmV0dXJuIEJJTkFSWV9TVUJUUkFDVDsKICAgICBjYXNlIE11bHQ6CiAgICAgICAgIHJldHVybiBCSU5BUllfTVVMVElQTFk7CisgICAgY2FzZSBNYXRNdWx0OgorICAgICAgICByZXR1cm4gQklOQVJZX01BVFJJWF9NVUxUSVBMWTsKICAgICBjYXNlIERpdjoKICAgICAgICAgcmV0dXJuIEJJTkFSWV9UUlVFX0RJVklERTsKICAgICBjYXNlIE1vZDoKQEAgLTI2ODgsNiArMjgzMCw4IEBACiAgICAgICAgIHJldHVybiBJTlBMQUNFX1NVQlRSQUNUOwogICAgIGNhc2UgTXVsdDoKICAgICAgICAgcmV0dXJuIElOUExBQ0VfTVVMVElQTFk7CisgICAgY2FzZSBNYXRNdWx0OgorICAgICAgICByZXR1cm4gSU5QTEFDRV9NQVRSSVhfTVVMVElQTFk7CiAgICAgY2FzZSBEaXY6CiAgICAgICAgIHJldHVybiBJTlBMQUNFX1RSVUVfRElWSURFOwogICAgIGNhc2UgTW9kOgpAQCAtMjc0OSw4ICsyODkzLDcgQEAKICAgICAgICAgICAgIG9wdHlwZSA9IE9QX0ZBU1Q7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR0xPQkFMX0lNUExJQ0lUOgotICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV90eXBlID09IEZ1bmN0aW9uQmxvY2sgJiYKLSAgICAgICAgICAgICFjLT51LT51X3N0ZS0+c3RlX3Vub3B0aW1pemVkKQorICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV90eXBlID09IEZ1bmN0aW9uQmxvY2spCiAgICAgICAgICAgICBvcHR5cGUgPSBPUF9HTE9CQUw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR0xPQkFMX0VYUExJQ0lUOgpAQCAtMjg2OCw2NyArMzAxMSwxNDUgQEAKIH0KIAogc3RhdGljIGludAorc3RhcnVucGFja19oZWxwZXIoc3RydWN0IGNvbXBpbGVyICpjLCBhc2RsX3NlcSAqZWx0cywKKyAgICAgICAgICAgICAgICAgIGludCBzaW5nbGVfb3AsIGludCBpbm5lcl9vcCwgaW50IG91dGVyX29wKQoreworICAgIFB5X3NzaXplX3QgbiA9IGFzZGxfc2VxX0xFTihlbHRzKTsKKyAgICBQeV9zc2l6ZV90IGksIG5zdWJpdGVtcyA9IDAsIG5zZWVuID0gMDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIGV4cHJfdHkgZWx0ID0gYXNkbF9zZXFfR0VUKGVsdHMsIGkpOworICAgICAgICBpZiAoZWx0LT5raW5kID09IFN0YXJyZWRfa2luZCkgeworICAgICAgICAgICAgaWYgKG5zZWVuKSB7CisgICAgICAgICAgICAgICAgQURET1BfSShjLCBpbm5lcl9vcCwgbnNlZW4pOworICAgICAgICAgICAgICAgIG5zZWVuID0gMDsKKyAgICAgICAgICAgICAgICBuc3ViaXRlbXMrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdC0+di5TdGFycmVkLnZhbHVlKTsKKyAgICAgICAgICAgIG5zdWJpdGVtcysrOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0KTsKKyAgICAgICAgICAgIG5zZWVuKys7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG5zdWJpdGVtcykgeworICAgICAgICBpZiAobnNlZW4pIHsKKyAgICAgICAgICAgIEFERE9QX0koYywgaW5uZXJfb3AsIG5zZWVuKTsKKyAgICAgICAgICAgIG5zdWJpdGVtcysrOworICAgICAgICB9CisgICAgICAgIEFERE9QX0koYywgb3V0ZXJfb3AsIG5zdWJpdGVtcyk7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgQURET1BfSShjLCBzaW5nbGVfb3AsIG5zZWVuKTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorYXNzaWdubWVudF9oZWxwZXIoc3RydWN0IGNvbXBpbGVyICpjLCBhc2RsX3NlcSAqZWx0cykKK3sKKyAgICBQeV9zc2l6ZV90IG4gPSBhc2RsX3NlcV9MRU4oZWx0cyk7CisgICAgUHlfc3NpemVfdCBpOworICAgIGludCBzZWVuX3N0YXIgPSAwOworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgZXhwcl90eSBlbHQgPSBhc2RsX3NlcV9HRVQoZWx0cywgaSk7CisgICAgICAgIGlmIChlbHQtPmtpbmQgPT0gU3RhcnJlZF9raW5kICYmICFzZWVuX3N0YXIpIHsKKyAgICAgICAgICAgIGlmICgoaSA+PSAoMSA8PCA4KSkgfHwKKyAgICAgICAgICAgICAgICAobi1pLTEgPj0gKElOVF9NQVggPj4gOCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLAorICAgICAgICAgICAgICAgICAgICAidG9vIG1hbnkgZXhwcmVzc2lvbnMgaW4gIgorICAgICAgICAgICAgICAgICAgICAic3Rhci11bnBhY2tpbmcgYXNzaWdubWVudCIpOworICAgICAgICAgICAgQURET1BfSShjLCBVTlBBQ0tfRVgsIChpICsgKChuLWktMSkgPDwgOCkpKTsKKyAgICAgICAgICAgIHNlZW5fc3RhciA9IDE7CisgICAgICAgICAgICBhc2RsX3NlcV9TRVQoZWx0cywgaSwgZWx0LT52LlN0YXJyZWQudmFsdWUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGVsdC0+a2luZCA9PSBTdGFycmVkX2tpbmQpIHsKKyAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLAorICAgICAgICAgICAgICAgICJ0d28gc3RhcnJlZCBleHByZXNzaW9ucyBpbiBhc3NpZ25tZW50Iik7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFzZWVuX3N0YXIpIHsKKyAgICAgICAgQURET1BfSShjLCBVTlBBQ0tfU0VRVUVOQ0UsIG4pOworICAgIH0KKyAgICBWSVNJVF9TRVEoYywgZXhwciwgZWx0cyk7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKIGNvbXBpbGVyX2xpc3Qoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUpCiB7Ci0gICAgUHlfc3NpemVfdCBuID0gYXNkbF9zZXFfTEVOKGUtPnYuTGlzdC5lbHRzKTsKKyAgICBhc2RsX3NlcSAqZWx0cyA9IGUtPnYuTGlzdC5lbHRzOwogICAgIGlmIChlLT52Lkxpc3QuY3R4ID09IFN0b3JlKSB7Ci0gICAgICAgIGludCBpLCBzZWVuX3N0YXIgPSAwOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgICAgICBleHByX3R5IGVsdCA9IGFzZGxfc2VxX0dFVChlLT52Lkxpc3QuZWx0cywgaSk7Ci0gICAgICAgICAgICBpZiAoZWx0LT5raW5kID09IFN0YXJyZWRfa2luZCAmJiAhc2Vlbl9zdGFyKSB7Ci0gICAgICAgICAgICAgICAgaWYgKChpID49ICgxIDw8IDgpKSB8fAotICAgICAgICAgICAgICAgICAgICAobi1pLTEgPj0gKElOVF9NQVggPj4gOCkpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0b28gbWFueSBleHByZXNzaW9ucyBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAic3Rhci11bnBhY2tpbmcgYXNzaWdubWVudCIpOwotICAgICAgICAgICAgICAgIEFERE9QX0koYywgVU5QQUNLX0VYLCAoaSArICgobi1pLTEpIDw8IDgpKSk7Ci0gICAgICAgICAgICAgICAgc2Vlbl9zdGFyID0gMTsKLSAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoZS0+di5MaXN0LmVsdHMsIGksIGVsdC0+di5TdGFycmVkLnZhbHVlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZWx0LT5raW5kID09IFN0YXJyZWRfa2luZCkgewotICAgICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLAotICAgICAgICAgICAgICAgICAgICAidHdvIHN0YXJyZWQgZXhwcmVzc2lvbnMgaW4gYXNzaWdubWVudCIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICghc2Vlbl9zdGFyKSB7Ci0gICAgICAgICAgICBBRERPUF9JKGMsIFVOUEFDS19TRVFVRU5DRSwgbik7Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGFzc2lnbm1lbnRfaGVscGVyKGMsIGVsdHMpOwogICAgIH0KLSAgICBWSVNJVF9TRVEoYywgZXhwciwgZS0+di5MaXN0LmVsdHMpOwotICAgIGlmIChlLT52Lkxpc3QuY3R4ID09IExvYWQpIHsKLSAgICAgICAgQURET1BfSShjLCBCVUlMRF9MSVNULCBuKTsKKyAgICBlbHNlIGlmIChlLT52Lkxpc3QuY3R4ID09IExvYWQpIHsKKyAgICAgICAgcmV0dXJuIHN0YXJ1bnBhY2tfaGVscGVyKGMsIGVsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCVUlMRF9MSVNULCBCVUlMRF9UVVBMRSwgQlVJTERfTElTVF9VTlBBQ0spOwogICAgIH0KKyAgICBlbHNlCisgICAgICAgIFZJU0lUX1NFUShjLCBleHByLCBlbHRzKTsKICAgICByZXR1cm4gMTsKIH0KIAogc3RhdGljIGludAogY29tcGlsZXJfdHVwbGUoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUpCiB7Ci0gICAgUHlfc3NpemVfdCBuID0gYXNkbF9zZXFfTEVOKGUtPnYuVHVwbGUuZWx0cyk7CisgICAgYXNkbF9zZXEgKmVsdHMgPSBlLT52LlR1cGxlLmVsdHM7CiAgICAgaWYgKGUtPnYuVHVwbGUuY3R4ID09IFN0b3JlKSB7Ci0gICAgICAgIGludCBpLCBzZWVuX3N0YXIgPSAwOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgICAgICBleHByX3R5IGVsdCA9IGFzZGxfc2VxX0dFVChlLT52LlR1cGxlLmVsdHMsIGkpOwotICAgICAgICAgICAgaWYgKGVsdC0+a2luZCA9PSBTdGFycmVkX2tpbmQgJiYgIXNlZW5fc3RhcikgewotICAgICAgICAgICAgICAgIGlmICgoaSA+PSAoMSA8PCA4KSkgfHwKLSAgICAgICAgICAgICAgICAgICAgKG4taS0xID49IChJTlRfTUFYID4+IDgpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAidG9vIG1hbnkgZXhwcmVzc2lvbnMgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgInN0YXItdW5wYWNraW5nIGFzc2lnbm1lbnQiKTsKLSAgICAgICAgICAgICAgICBBRERPUF9JKGMsIFVOUEFDS19FWCwgKGkgKyAoKG4taS0xKSA8PCA4KSkpOwotICAgICAgICAgICAgICAgIHNlZW5fc3RhciA9IDE7Ci0gICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGUtPnYuVHVwbGUuZWx0cywgaSwgZWx0LT52LlN0YXJyZWQudmFsdWUpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChlbHQtPmtpbmQgPT0gU3RhcnJlZF9raW5kKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsCi0gICAgICAgICAgICAgICAgICAgICJ0d28gc3RhcnJlZCBleHByZXNzaW9ucyBpbiBhc3NpZ25tZW50Iik7Ci0gICAgICAgICAgICB9CisgICAgICAgIHJldHVybiBhc3NpZ25tZW50X2hlbHBlcihjLCBlbHRzKTsKKyAgICB9CisgICAgZWxzZSBpZiAoZS0+di5UdXBsZS5jdHggPT0gTG9hZCkgeworICAgICAgICByZXR1cm4gc3RhcnVucGFja19oZWxwZXIoYywgZWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJVSUxEX1RVUExFLCBCVUlMRF9UVVBMRSwgQlVJTERfVFVQTEVfVU5QQUNLKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBWSVNJVF9TRVEoYywgZXhwciwgZWx0cyk7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2NvbXBpbGVyX3NldChzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKK3sKKyAgICByZXR1cm4gc3RhcnVucGFja19oZWxwZXIoYywgZS0+di5TZXQuZWx0cywgQlVJTERfU0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCVUlMRF9TRVQsIEJVSUxEX1NFVF9VTlBBQ0spOworfQorCitzdGF0aWMgaW50Citjb21waWxlcl9kaWN0KHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlKQoreworICAgIFB5X3NzaXplX3QgaSwgbiwgY29udGFpbmVycywgZWxlbWVudHM7CisgICAgaW50IGlzX3VucGFja2luZyA9IDA7CisgICAgbiA9IGFzZGxfc2VxX0xFTihlLT52LkRpY3QudmFsdWVzKTsKKyAgICBjb250YWluZXJzID0gMDsKKyAgICBlbGVtZW50cyA9IDA7CisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICBpc191bnBhY2tpbmcgPSAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LmtleXMsIGkpID09IE5VTEw7CisgICAgICAgIGlmIChlbGVtZW50cyA9PSAweEZGRkYgfHwgKGVsZW1lbnRzICYmIGlzX3VucGFja2luZykpIHsKKyAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQLCBlbGVtZW50cyk7CisgICAgICAgICAgICBjb250YWluZXJzKys7CisgICAgICAgICAgICBlbGVtZW50cyA9IDA7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFzZWVuX3N0YXIpIHsKLSAgICAgICAgICAgIEFERE9QX0koYywgVU5QQUNLX1NFUVVFTkNFLCBuKTsKKyAgICAgICAgaWYgKGlzX3VucGFja2luZykgeworICAgICAgICAgICAgVklTSVQoYywgZXhwciwgKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC52YWx1ZXMsIGkpKTsKKyAgICAgICAgICAgIGNvbnRhaW5lcnMrKzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3Qua2V5cywgaSkpOworICAgICAgICAgICAgVklTSVQoYywgZXhwciwgKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC52YWx1ZXMsIGkpKTsKKyAgICAgICAgICAgIGVsZW1lbnRzKys7CiAgICAgICAgIH0KICAgICB9Ci0gICAgVklTSVRfU0VRKGMsIGV4cHIsIGUtPnYuVHVwbGUuZWx0cyk7Ci0gICAgaWYgKGUtPnYuVHVwbGUuY3R4ID09IExvYWQpIHsKLSAgICAgICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgbik7CisgICAgaWYgKGVsZW1lbnRzIHx8IGNvbnRhaW5lcnMgPT0gMCkgeworICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgZWxlbWVudHMpOworICAgICAgICBjb250YWluZXJzKys7CisgICAgfQorICAgIC8qIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgZGljdCwgdGhleSBuZWVkIHRvIGJlIG1lcmdlZCBpbnRvIGEgbmV3CisgICAgICogZGljdC4gIElmIHRoZXJlIGlzIG9uZSBkaWN0IGFuZCBpdCdzIGFuIHVucGFja2luZywgdGhlbiBpdCBuZWVkcworICAgICAqIHRvIGJlIGNvcGllZCBpbnRvIGEgbmV3IGRpY3QuIiAqLworICAgIHdoaWxlIChjb250YWluZXJzID4gMSB8fCBpc191bnBhY2tpbmcpIHsKKyAgICAgICAgaW50IG9wYXJnID0gY29udGFpbmVycyA8IDI1NSA/IGNvbnRhaW5lcnMgOiAyNTU7CisgICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQX1VOUEFDSywgb3BhcmcpOworICAgICAgICBjb250YWluZXJzIC09IChvcGFyZyAtIDEpOworICAgICAgICBpc191bnBhY2tpbmcgPSAwOwogICAgIH0KICAgICByZXR1cm4gMTsKIH0KQEAgLTI5ODQsOSArMzIwNSw3IEBACiAgICAgVklTSVQoYywgZXhwciwgZS0+di5DYWxsLmZ1bmMpOwogICAgIHJldHVybiBjb21waWxlcl9jYWxsX2hlbHBlcihjLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT52LkNhbGwuYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+di5DYWxsLmtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT52LkNhbGwuc3RhcmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUtPnYuQ2FsbC5rd2FyZ3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT52LkNhbGwua2V5d29yZHMpOwogfQogCiAvKiBzaGFyZWQgY29kZSBiZXR3ZWVuIGNvbXBpbGVyX2NhbGwgYW5kIGNvbXBpbGVyX2NsYXNzICovCkBAIC0yOTk0LDI2ICszMjEzLDEwMiBAQAogY29tcGlsZXJfY2FsbF9oZWxwZXIoc3RydWN0IGNvbXBpbGVyICpjLAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuLCAvKiBBcmdzIGFscmVhZHkgcHVzaGVkICovCiAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqYXJncywKLSAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICprZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgc3RhcmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICBleHByX3R5IGt3YXJncykKKyAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICprZXl3b3JkcykKIHsKICAgICBpbnQgY29kZSA9IDA7CisgICAgUHlfc3NpemVfdCBuZWx0cywgaSwgbnNlZW4sIG5rdzsKIAotICAgIG4gKz0gYXNkbF9zZXFfTEVOKGFyZ3MpOwotICAgIFZJU0lUX1NFUShjLCBleHByLCBhcmdzKTsKLSAgICBpZiAoa2V5d29yZHMpIHsKLSAgICAgICAgVklTSVRfU0VRKGMsIGtleXdvcmQsIGtleXdvcmRzKTsKLSAgICAgICAgbiB8PSBhc2RsX3NlcV9MRU4oa2V5d29yZHMpIDw8IDg7CisgICAgLyogdGhlIG51bWJlciBvZiB0dXBsZXMgYW5kIGRpY3Rpb25hcmllcyBvbiB0aGUgc3RhY2sgKi8KKyAgICBQeV9zc2l6ZV90IG5zdWJhcmdzID0gMCwgbnN1Ymt3YXJncyA9IDA7CisKKyAgICBua3cgPSAwOworICAgIG5zZWVuID0gMDsgIC8qIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgb24gdGhlIHN0YWNrICovCisgICAgbmVsdHMgPSBhc2RsX3NlcV9MRU4oYXJncyk7CisgICAgZm9yIChpID0gMDsgaSA8IG5lbHRzOyBpKyspIHsKKyAgICAgICAgZXhwcl90eSBlbHQgPSBhc2RsX3NlcV9HRVQoYXJncywgaSk7CisgICAgICAgIGlmIChlbHQtPmtpbmQgPT0gU3RhcnJlZF9raW5kKSB7CisgICAgICAgICAgICAvKiBBIHN0YXItYXJnLiBJZiB3ZSd2ZSBzZWVuIHBvc2l0aW9uYWwgYXJndW1lbnRzLAorICAgICAgICAgICAgICAgcGFjayB0aGUgcG9zaXRpb25hbCBhcmd1bWVudHMgaW50byBhCisgICAgICAgICAgICAgICB0dXBsZS4gKi8KKyAgICAgICAgICAgIGlmIChuc2VlbikgeworICAgICAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIG5zZWVuKTsKKyAgICAgICAgICAgICAgICBuc2VlbiA9IDA7CisgICAgICAgICAgICAgICAgbnN1YmFyZ3MrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdC0+di5TdGFycmVkLnZhbHVlKTsKKyAgICAgICAgICAgIG5zdWJhcmdzKys7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobnN1YmFyZ3MpIHsKKyAgICAgICAgICAgIC8qIFdlJ3ZlIHNlZW4gc3Rhci1hcmdzIGFscmVhZHksIHNvIHdlCisgICAgICAgICAgICAgICBjb3VudCB0b3dhcmRzIGl0ZW1zLXRvLXBhY2staW50by10dXBsZS4gKi8KKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdCk7CisgICAgICAgICAgICBuc2VlbisrOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogUG9zaXRpb25hbCBhcmd1bWVudHMgYmVmb3JlIHN0YXItYXJndW1lbnRzCisgICAgICAgICAgICAgICBhcmUgbGVmdCBvbiB0aGUgc3RhY2suICovCisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQpOworICAgICAgICAgICAgbisrOworICAgICAgICB9CiAgICAgfQotICAgIGlmIChzdGFyYXJncykgewotICAgICAgICBWSVNJVChjLCBleHByLCBzdGFyYXJncyk7CisgICAgaWYgKG5zZWVuKSB7CisgICAgICAgIC8qIFBhY2sgdXAgYW55IHRyYWlsaW5nIHBvc2l0aW9uYWwgYXJndW1lbnRzLiAqLworICAgICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCBuc2Vlbik7CisgICAgICAgIG5zdWJhcmdzKys7CisgICAgfQorICAgIGlmIChuc3ViYXJncykgewogICAgICAgICBjb2RlIHw9IDE7CisgICAgICAgIGlmIChuc3ViYXJncyA+IDEpIHsKKyAgICAgICAgICAgIC8qIElmIHdlIGVuZGVkIHVwIHdpdGggbW9yZSB0aGFuIG9uZSBzdGFyYXJnLCB3ZSBuZWVkCisgICAgICAgICAgICAgICB0byBjb25jYXRlbmF0ZSB0aGVtIGludG8gYSBzaW5nbGUgc2VxdWVuY2UuICovCisgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX0xJU1RfVU5QQUNLLCBuc3ViYXJncyk7CisgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGt3YXJncykgewotICAgICAgICBWSVNJVChjLCBleHByLCBrd2FyZ3MpOworCisgICAgLyogU2FtZSBkYW5jZSBhZ2FpbiBmb3Iga2V5d29yZCBhcmd1bWVudHMgKi8KKyAgICBuc2VlbiA9IDA7ICAvKiB0aGUgbnVtYmVyIG9mIGtleXdvcmQgYXJndW1lbnRzIG9uIHRoZSBzdGFjayBmb2xsb3dpbmcgKi8KKyAgICBuZWx0cyA9IGFzZGxfc2VxX0xFTihrZXl3b3Jkcyk7CisgICAgZm9yIChpID0gMDsgaSA8IG5lbHRzOyBpKyspIHsKKyAgICAgICAga2V5d29yZF90eSBrdyA9IGFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSk7CisgICAgICAgIGlmIChrdy0+YXJnID09IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIEEga2V5d29yZCBhcmd1bWVudCB1bnBhY2tpbmcuICovCisgICAgICAgICAgICBpZiAobnNlZW4pIHsKKyAgICAgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgbnNlZW4pOworICAgICAgICAgICAgICAgIG5zZWVuID0gMDsKKyAgICAgICAgICAgICAgICBuc3Via3dhcmdzKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBrdy0+dmFsdWUpOworICAgICAgICAgICAgbnN1Ymt3YXJncysrOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG5zdWJrd2FyZ3MpIHsKKyAgICAgICAgICAgIC8qIEEga2V5d29yZCBhcmd1bWVudCBhbmQgd2UgYWxyZWFkeSBoYXZlIGEgZGljdC4gKi8KKyAgICAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwga3ctPmFyZywgY29uc3RzKTsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGt3LT52YWx1ZSk7CisgICAgICAgICAgICBuc2VlbisrOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyoga2V5d29yZCBhcmd1bWVudCAqLworICAgICAgICAgICAgVklTSVQoYywga2V5d29yZCwga3cpCisgICAgICAgICAgICBua3crKzsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAobnNlZW4pIHsKKyAgICAgICAgLyogUGFjayB1cCBhbnkgdHJhaWxpbmcga2V5d29yZCBhcmd1bWVudHMuICovCisgICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQLCBuc2Vlbik7CisgICAgICAgIG5zdWJrd2FyZ3MrKzsKKyAgICB9CisgICAgaWYgKG5zdWJrd2FyZ3MpIHsKICAgICAgICAgY29kZSB8PSAyOworICAgICAgICBpZiAobnN1Ymt3YXJncyA+IDEpIHsKKyAgICAgICAgICAgIC8qIFBhY2sgaXQgYWxsIHVwICovCisgICAgICAgICAgICBpbnQgZnVuY3Rpb25fcG9zID0gbiArIChjb2RlICYgMSkgKyBua3cgKyAxOworICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCwgbnN1Ymt3YXJncyB8IChmdW5jdGlvbl9wb3MgPDwgOCkpOworICAgICAgICB9CiAgICAgfQorICAgIGFzc2VydChuIDwgMTw8OCk7CisgICAgYXNzZXJ0KG5rdyA8IDE8PDI0KTsKKyAgICBuIHw9IG5rdyA8PCA4OworCiAgICAgc3dpdGNoIChjb2RlKSB7CiAgICAgY2FzZSAwOgogICAgICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT04sIG4pOwpAQCAtMzEzOCw4ICszNDMzLDkgQEAKIH0KIAogc3RhdGljIGludAotY29tcGlsZXJfY29tcHJlaGVuc2lvbihzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSwgaW50IHR5cGUsIGlkZW50aWZpZXIgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmdlbmVyYXRvcnMsIGV4cHJfdHkgZWx0LCBleHByX3R5IHZhbCkKK2NvbXBpbGVyX2NvbXByZWhlbnNpb24oc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUsIGludCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyIG5hbWUsIGFzZGxfc2VxICpnZW5lcmF0b3JzLCBleHByX3R5IGVsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWwpCiB7CiAgICAgUHlDb2RlT2JqZWN0ICpjbyA9IE5VTEw7CiAgICAgZXhwcl90eSBvdXRlcm1vc3RfaXRlcjsKQEAgLTMzMTIsNiArMzYwOCwxMDIgQEAKICAgICB9CiB9CiAKKworLyoKKyAgIEltcGxlbWVudHMgdGhlIGFzeW5jIHdpdGggc3RhdGVtZW50LgorCisgICBUaGUgc2VtYW50aWNzIG91dGxpbmVkIGluIHRoYXQgUEVQIGFyZSBhcyBmb2xsb3dzOgorCisgICBhc3luYyB3aXRoIEVYUFIgYXMgVkFSOgorICAgICAgIEJMT0NLCisKKyAgIEl0IGlzIGltcGxlbWVudGVkIHJvdWdobHkgYXM6CisKKyAgIGNvbnRleHQgPSBFWFBSCisgICBleGl0ID0gY29udGV4dC5fX2FleGl0X18gICMgbm90IGNhbGxpbmcgaXQKKyAgIHZhbHVlID0gYXdhaXQgY29udGV4dC5fX2FlbnRlcl9fKCkKKyAgIHRyeToKKyAgICAgICBWQVIgPSB2YWx1ZSAgIyBpZiBWQVIgcHJlc2VudCBpbiB0aGUgc3ludGF4CisgICAgICAgQkxPQ0sKKyAgIGZpbmFsbHk6CisgICAgICAgaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQ6CisgICAgICAgZXhjID0gY29weSBvZiAoZXhjZXB0aW9uLCBpbnN0YW5jZSwgdHJhY2ViYWNrKQorICAgICAgIGVsc2U6CisgICAgICAgZXhjID0gKE5vbmUsIE5vbmUsIE5vbmUpCisgICAgICAgaWYgbm90IChhd2FpdCBleGl0KCpleGMpKToKKyAgICAgICAgICAgcmFpc2UKKyAqLworc3RhdGljIGludAorY29tcGlsZXJfYXN5bmNfd2l0aChzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcywgaW50IHBvcykKK3sKKyAgICBiYXNpY2Jsb2NrICpibG9jaywgKmZpbmFsbHk7CisgICAgd2l0aGl0ZW1fdHkgaXRlbSA9IGFzZGxfc2VxX0dFVChzLT52LkFzeW5jV2l0aC5pdGVtcywgcG9zKTsKKworICAgIGFzc2VydChzLT5raW5kID09IEFzeW5jV2l0aF9raW5kKTsKKworICAgIGJsb2NrID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIGZpbmFsbHkgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgaWYgKCFibG9jayB8fCAhZmluYWxseSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBFdmFsdWF0ZSBFWFBSICovCisgICAgVklTSVQoYywgZXhwciwgaXRlbS0+Y29udGV4dF9leHByKTsKKworICAgIEFERE9QKGMsIEJFRk9SRV9BU1lOQ19XSVRIKTsKKyAgICBBRERPUChjLCBHRVRfQVdBSVRBQkxFKTsKKyAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CisgICAgQURET1AoYywgWUlFTERfRlJPTSk7CisKKyAgICBBRERPUF9KUkVMKGMsIFNFVFVQX0FTWU5DX1dJVEgsIGZpbmFsbHkpOworCisgICAgLyogU0VUVVBfQVNZTkNfV0lUSCBwdXNoZXMgYSBmaW5hbGx5IGJsb2NrLiAqLworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGJsb2NrKTsKKyAgICBpZiAoIWNvbXBpbGVyX3B1c2hfZmJsb2NrKGMsIEZJTkFMTFlfVFJZLCBibG9jaykpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKGl0ZW0tPm9wdGlvbmFsX3ZhcnMpIHsKKyAgICAgICAgVklTSVQoYywgZXhwciwgaXRlbS0+b3B0aW9uYWxfdmFycyk7CisgICAgfQorICAgIGVsc2UgeworICAgIC8qIERpc2NhcmQgcmVzdWx0IGZyb20gY29udGV4dC5fX2FlbnRlcl9fKCkgKi8KKyAgICAgICAgQURET1AoYywgUE9QX1RPUCk7CisgICAgfQorCisgICAgcG9zKys7CisgICAgaWYgKHBvcyA9PSBhc2RsX3NlcV9MRU4ocy0+di5Bc3luY1dpdGguaXRlbXMpKQorICAgICAgICAvKiBCTE9DSyBjb2RlICovCisgICAgICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LkFzeW5jV2l0aC5ib2R5KQorICAgIGVsc2UgaWYgKCFjb21waWxlcl9hc3luY193aXRoKGMsIHMsIHBvcykpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIEVuZCBvZiB0cnkgYmxvY2s7IHN0YXJ0IHRoZSBmaW5hbGx5IGJsb2NrICovCisgICAgQURET1AoYywgUE9QX0JMT0NLKTsKKyAgICBjb21waWxlcl9wb3BfZmJsb2NrKGMsIEZJTkFMTFlfVFJZLCBibG9jayk7CisKKyAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgZmluYWxseSk7CisgICAgaWYgKCFjb21waWxlcl9wdXNoX2ZibG9jayhjLCBGSU5BTExZX0VORCwgZmluYWxseSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogRmluYWxseSBibG9jayBzdGFydHM7IGNvbnRleHQuX19leGl0X18gaXMgb24gdGhlIHN0YWNrIHVuZGVyCisgICAgICAgdGhlIGV4Y2VwdGlvbiBvciByZXR1cm4gaW5mb3JtYXRpb24uIEp1c3QgaXNzdWUgb3VyIG1hZ2ljCisgICAgICAgb3Bjb2RlLiAqLworICAgIEFERE9QKGMsIFdJVEhfQ0xFQU5VUF9TVEFSVCk7CisKKyAgICBBRERPUChjLCBHRVRfQVdBSVRBQkxFKTsKKyAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CisgICAgQURET1AoYywgWUlFTERfRlJPTSk7CisKKyAgICBBRERPUChjLCBXSVRIX0NMRUFOVVBfRklOSVNIKTsKKworICAgIC8qIEZpbmFsbHkgYmxvY2sgZW5kcy4gKi8KKyAgICBBRERPUChjLCBFTkRfRklOQUxMWSk7CisgICAgY29tcGlsZXJfcG9wX2ZibG9jayhjLCBGSU5BTExZX0VORCwgZmluYWxseSk7CisgICAgcmV0dXJuIDE7Cit9CisKKwogLyoKICAgIEltcGxlbWVudHMgdGhlIHdpdGggc3RhdGVtZW50IGZyb20gUEVQIDM0My4KIApAQCAtMzM4NSw3ICszNzc3LDggQEAKICAgICAvKiBGaW5hbGx5IGJsb2NrIHN0YXJ0czsgY29udGV4dC5fX2V4aXRfXyBpcyBvbiB0aGUgc3RhY2sgdW5kZXIKICAgICAgICB0aGUgZXhjZXB0aW9uIG9yIHJldHVybiBpbmZvcm1hdGlvbi4gSnVzdCBpc3N1ZSBvdXIgbWFnaWMKICAgICAgICBvcGNvZGUuICovCi0gICAgQURET1AoYywgV0lUSF9DTEVBTlVQKTsKKyAgICBBRERPUChjLCBXSVRIX0NMRUFOVVBfU1RBUlQpOworICAgIEFERE9QKGMsIFdJVEhfQ0xFQU5VUF9GSU5JU0gpOwogCiAgICAgLyogRmluYWxseSBibG9jayBlbmRzLiAqLwogICAgIEFERE9QKGMsIEVORF9GSU5BTExZKTsKQEAgLTMzOTYsOCArMzc4OSw2IEBACiBzdGF0aWMgaW50CiBjb21waWxlcl92aXNpdF9leHByKHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlKQogewotICAgIFB5X3NzaXplX3QgaSwgbjsKLQogICAgIC8qIElmIGV4cHIgZSBoYXMgYSBkaWZmZXJlbnQgbGluZSBudW1iZXIgdGhhbiB0aGUgbGFzdCBleHByL3N0bXQsCiAgICAgICAgc2V0IGEgbmV3IGxpbmUgbnVtYmVyIGZvciB0aGUgbmV4dCBpbnN0cnVjdGlvbi4KICAgICAqLwpAQCAtMzQyNCwyMyArMzgxNSw5IEBACiAgICAgY2FzZSBJZkV4cF9raW5kOgogICAgICAgICByZXR1cm4gY29tcGlsZXJfaWZleHAoYywgZSk7CiAgICAgY2FzZSBEaWN0X2tpbmQ6Ci0gICAgICAgIG4gPSBhc2RsX3NlcV9MRU4oZS0+di5EaWN0LnZhbHVlcyk7Ci0gICAgICAgIC8qIEJVSUxEX01BUCBwYXJhbWV0ZXIgaXMgb25seSB1c2VkIHRvIHByZWFsbG9jYXRlIHRoZSBkaWN0aW9uYXJ5LAotICAgICAgICAgICBpdCBkb2Vzbid0IG5lZWQgdG8gYmUgZXhhY3QgKi8KLSAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIChuPjB4RkZGRiA/IDB4RkZGRiA6IG4pKTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgICAgICAgVklTSVQoYywgZXhwciwKLSAgICAgICAgICAgICAgICAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LnZhbHVlcywgaSkpOwotICAgICAgICAgICAgVklTSVQoYywgZXhwciwKLSAgICAgICAgICAgICAgICAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LmtleXMsIGkpKTsKLSAgICAgICAgICAgIEFERE9QKGMsIFNUT1JFX01BUCk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBjb21waWxlcl9kaWN0KGMsIGUpOwogICAgIGNhc2UgU2V0X2tpbmQ6Ci0gICAgICAgIG4gPSBhc2RsX3NlcV9MRU4oZS0+di5TZXQuZWx0cyk7Ci0gICAgICAgIFZJU0lUX1NFUShjLCBleHByLCBlLT52LlNldC5lbHRzKTsKLSAgICAgICAgQURET1BfSShjLCBCVUlMRF9TRVQsIG4pOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3NldChjLCBlKTsKICAgICBjYXNlIEdlbmVyYXRvckV4cF9raW5kOgogICAgICAgICByZXR1cm4gY29tcGlsZXJfZ2VuZXhwKGMsIGUpOwogICAgIGNhc2UgTGlzdENvbXBfa2luZDoKQEAgLTM0NTIsNiArMzgyOSw4IEBACiAgICAgY2FzZSBZaWVsZF9raW5kOgogICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV90eXBlICE9IEZ1bmN0aW9uQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIid5aWVsZCcgb3V0c2lkZSBmdW5jdGlvbiIpOworICAgICAgICBpZiAoYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0FTWU5DX0ZVTkNUSU9OKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICIneWllbGQnIGluc2lkZSBhc3luYyBmdW5jdGlvbiIpOwogICAgICAgICBpZiAoZS0+di5ZaWVsZC52YWx1ZSkgewogICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZS0+di5ZaWVsZC52YWx1ZSk7CiAgICAgICAgIH0KQEAgLTM0NjMsOCArMzg0MiwyOCBAQAogICAgIGNhc2UgWWllbGRGcm9tX2tpbmQ6CiAgICAgICAgIGlmIChjLT51LT51X3N0ZS0+c3RlX3R5cGUgIT0gRnVuY3Rpb25CbG9jaykKICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLCAiJ3lpZWxkJyBvdXRzaWRlIGZ1bmN0aW9uIik7CisKKyAgICAgICAgaWYgKGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9BU1lOQ19GVU5DVElPTikKKyAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLCAiJ3lpZWxkIGZyb20nIGluc2lkZSBhc3luYyBmdW5jdGlvbiIpOworCiAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGUtPnYuWWllbGRGcm9tLnZhbHVlKTsKLSAgICAgICAgQURET1AoYywgR0VUX0lURVIpOworICAgICAgICBBRERPUChjLCBHRVRfWUlFTERfRlJPTV9JVEVSKTsKKyAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgICAgICBBRERPUChjLCBZSUVMRF9GUk9NKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBd2FpdF9raW5kOgorICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV90eXBlICE9IEZ1bmN0aW9uQmxvY2spCisgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIidhd2FpdCcgb3V0c2lkZSBmdW5jdGlvbiIpOworCisgICAgICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfQ09NUFJFSEVOU0lPTikKKyAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcigKKyAgICAgICAgICAgICAgICBjLCAiJ2F3YWl0JyBleHByZXNzaW9ucyBpbiBjb21wcmVoZW5zaW9ucyBhcmUgbm90IHN1cHBvcnRlZCIpOworCisgICAgICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgIT0gQ09NUElMRVJfU0NPUEVfQVNZTkNfRlVOQ1RJT04pCisgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIidhd2FpdCcgb3V0c2lkZSBhc3luYyBmdW5jdGlvbiIpOworCisgICAgICAgIFZJU0lUKGMsIGV4cHIsIGUtPnYuQXdhaXQudmFsdWUpOworICAgICAgICBBRERPUChjLCBHRVRfQVdBSVRBQkxFKTsKICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOwogICAgICAgICBBRERPUChjLCBZSUVMRF9GUk9NKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNTUxLDcgKzM5NTAsNyBAQAogICAgICAgICAgICAgICAgICJzdGFycmVkIGFzc2lnbm1lbnQgdGFyZ2V0IG11c3QgYmUgaW4gYSBsaXN0IG9yIHR1cGxlIik7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywKLSAgICAgICAgICAgICAgICAiY2FuIHVzZSBzdGFycmVkIGV4cHJlc3Npb24gb25seSBhcyBhc3NpZ25tZW50IHRhcmdldCIpOworICAgICAgICAgICAgICAgICJjYW4ndCB1c2Ugc3RhcnJlZCBleHByZXNzaW9uIGhlcmUiKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIE5hbWVfa2luZDoKQEAgLTQxODEsOSArNDU4MCw3IEBACiAgICAgaW50IGZsYWdzID0gMDsKICAgICBQeV9zc2l6ZV90IG47CiAgICAgaWYgKHN0ZS0+c3RlX3R5cGUgPT0gRnVuY3Rpb25CbG9jaykgewotICAgICAgICBmbGFncyB8PSBDT19ORVdMT0NBTFM7Ci0gICAgICAgIGlmICghc3RlLT5zdGVfdW5vcHRpbWl6ZWQpCi0gICAgICAgICAgICBmbGFncyB8PSBDT19PUFRJTUlaRUQ7CisgICAgICAgIGZsYWdzIHw9IENPX05FV0xPQ0FMUyB8IENPX09QVElNSVpFRDsKICAgICAgICAgaWYgKHN0ZS0+c3RlX25lc3RlZCkKICAgICAgICAgICAgIGZsYWdzIHw9IENPX05FU1RFRDsKICAgICAgICAgaWYgKHN0ZS0+c3RlX2dlbmVyYXRvcikKZGlmZiAtLWdpdCBhL1B5dGhvbi9jb25kdmFyLmggYi9QeXRob24vY29uZHZhci5oCmluZGV4IGVmODE4YzQuLmJiNWIxYjYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jb25kdmFyLmgKKysrIGIvUHl0aG9uL2NvbmR2YXIuaApAQCAtMSw0ICsxLDQgQEAKLS8qIAorLyoKICAqIFBvcnRhYmxlIGNvbmRpdGlvbiB2YXJpYWJsZSBzdXBwb3J0IGZvciB3aW5kb3dzIGFuZCBwdGhyZWFkcy4KICAqIEV2ZXJ5dGhpbmcgaXMgaW5saW5lLCB0aGlzIGhlYWRlciBjYW4gYmUgaW5jbHVkZWQgd2hlcmUgbmVlZGVkLgogICoKQEAgLTEwNSw3ICsxMDUsNyBAQAogICAgICAgICByZXR1cm4gMTsKICAgICBlbHNlIGlmIChyKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgZWxzZSAKKyAgICBlbHNlCiAgICAgICAgIHJldHVybiAwOwogfQogCkBAIC0yNTUsNyArMjU1LDcgQEAKICAgICAgICAgICogYSBuZXcgdGhyZWFkIGNvbWVzIGFsb25nLCBpdCB3aWxsIHBhc3MgcmlnaHQgdGhyb3VoZ2gsIGhhdmluZwogICAgICAgICAgKiBhZGp1c3RlZCBpdCB0byAod2FpdGluZyA9PSAwICYmIHNlbS5jb3VudCA9PSAwKS4KICAgICAgICAgICovCi0gICAgICAgICAKKwogICAgIGlmICh3YWl0ID09IFdBSVRfRkFJTEVEKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgLyogcmV0dXJuIDAgb24gc3VjY2VzcywgMSBvbiB0aW1lb3V0ICovCmRpZmYgLS1naXQgYS9QeXRob24vZHRvYS5jIGIvUHl0aG9uL2R0b2EuYwppbmRleCA4OTk2YTcyLi4zZGE1NDZlIDEwMDY0NAotLS0gYS9QeXRob24vZHRvYS5jCisrKyBiL1B5dGhvbi9kdG9hLmMKQEAgLTM3Myw3ICszNzMsNyBAQAogICAgICAgICB4ID0gMSA8PCBrOwogICAgICAgICBsZW4gPSAoc2l6ZW9mKEJpZ2ludCkgKyAoeC0xKSpzaXplb2YoVUxvbmcpICsgc2l6ZW9mKGRvdWJsZSkgLSAxKQogICAgICAgICAgICAgL3NpemVvZihkb3VibGUpOwotICAgICAgICBpZiAoayA8PSBLbWF4ICYmIHBtZW1fbmV4dCAtIHByaXZhdGVfbWVtICsgbGVuIDw9IFBSSVZBVEVfbWVtKSB7CisgICAgICAgIGlmIChrIDw9IEttYXggJiYgcG1lbV9uZXh0IC0gcHJpdmF0ZV9tZW0gKyBsZW4gPD0gKFB5X3NzaXplX3QpUFJJVkFURV9tZW0pIHsKICAgICAgICAgICAgIHJ2ID0gKEJpZ2ludCopcG1lbV9uZXh0OwogICAgICAgICAgICAgcG1lbV9uZXh0ICs9IGxlbjsKICAgICAgICAgfQpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAKICAgICBiID0gQmFsbG9jKDEpOwogICAgIGlmIChiID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIAorCiAgICAgLyogRmlyc3QgY29uc3RydWN0IGIgYW5kIGUgYXNzdW1pbmcgdGhhdCBzY2FsZSA9PSAwLiAqLwogICAgIGItPndkcyA9IDI7CiAgICAgYi0+eFswXSA9IHdvcmQxKGQpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfYWl4LmMgYi9QeXRob24vZHlubG9hZF9haXguYwppbmRleCA1YWMzMGVkLi5iM2ZmOGUyIDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF9haXguYworKysgYi9QeXRob24vZHlubG9hZF9haXguYwpAQCAtMTU0LDggKzE1NCw5IEBACiB9CiAKIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorZGxfZnVuY3B0ciBfUHlJbXBvcnRfRmluZFNoYXJlZEZ1bmNwdHIoY29uc3QgY2hhciAqcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGRsX2Z1bmNwdHIgcDsKIApkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfZGwuYyBiL1B5dGhvbi9keW5sb2FkX2RsLmMKaW5kZXggNTgzNmNiM2IuLjJiZWM2NDUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX2RsLmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfZGwuYwpAQCAtMTIsMTEgKzEyLDEyIEBACiBjb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsiLm8iLCBOVUxMfTsKIAogCi1kbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCitkbF9mdW5jcHRyIF9QeUltcG9ydF9GaW5kU2hhcmVkRnVuY3B0cihjb25zdCBjaGFyICpwcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzaG9ydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCiB7CiAgICAgY2hhciBmdW5jbmFtZVsyNThdOwogCi0gICAgUHlPU19zbnByaW50ZihmdW5jbmFtZSwgc2l6ZW9mKGZ1bmNuYW1lKSwgIlB5SW5pdF8lLjIwMHMiLCBzaG9ydG5hbWUpOworICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksICIlLjIwc18lLjIwMHMiLCBwcmVmaXgsIHNob3J0bmFtZSk7CiAgICAgcmV0dXJuIGRsX2xvYWRtb2QoUHlfR2V0UHJvZ3JhbU5hbWUoKSwgcGF0aG5hbWUsIGZ1bmNuYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX2hwdXguYyBiL1B5dGhvbi9keW5sb2FkX2hwdXguYwppbmRleCBjOTU1NDE0Li40OTY3YWZjIDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF9ocHV4LmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfaHB1eC5jCkBAIC04LDE1ICs4LDE2IEBACiAjaW5jbHVkZSAiaW1wb3J0ZGwuaCIKIAogI2lmIGRlZmluZWQoX19ocDkwMDBzMzAwKQotI2RlZmluZSBGVU5DTkFNRV9QQVRURVJOICJfUHlJbml0XyUuMjAwcyIKKyNkZWZpbmUgRlVOQ05BTUVfUEFUVEVSTiAiXyUuMjBzXyUuMjAwcyIKICNlbHNlCi0jZGVmaW5lIEZVTkNOQU1FX1BBVFRFUk4gIlB5SW5pdF8lLjIwMHMiCisjZGVmaW5lIEZVTkNOQU1FX1BBVFRFUk4gIiUuMjBzXyUuMjAwcyIKICNlbmRpZgogCiBjb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHtTSExJQl9FWFQsIE5VTEx9OwogCi1kbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCitkbF9mdW5jcHRyIF9QeUltcG9ydF9GaW5kU2hhcmVkRnVuY3B0cihjb25zdCBjaGFyICpwcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzaG9ydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCiB7CiAgICAgZGxfZnVuY3B0ciBwOwogICAgIHNobF90IGxpYjsKQEAgLTUwLDcgKzUxLDggQEAKICAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lX29iKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksIEZVTkNOQU1FX1BBVFRFUk4sIHNob3J0bmFtZSk7CisgICAgUHlPU19zbnByaW50ZihmdW5jbmFtZSwgc2l6ZW9mKGZ1bmNuYW1lKSwgRlVOQ05BTUVfUEFUVEVSTiwKKyAgICAgICAgICAgICAgICAgIHByZWZpeCwgc2hvcnRuYW1lKTsKICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCiAgICAgICAgIHByaW50Zigic2hsX2ZpbmRzeW0gJXNcbiIsIGZ1bmNuYW1lKTsKICAgICBpZiAoc2hsX2ZpbmRzeW0oJmxpYiwgZnVuY25hbWUsIFRZUEVfVU5ERUZJTkVELCAodm9pZCAqKSAmcCkgPT0gLTEpIHsKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX25leHQuYyBiL1B5dGhvbi9keW5sb2FkX25leHQuYwppbmRleCA4NWM5NWI0Li44M2E4YjJiYiAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfbmV4dC5jCisrKyBiL1B5dGhvbi9keW5sb2FkX25leHQuYwpAQCAtMjcsOCArMjcsOSBAQAogI2RlZmluZSBMSU5LT1BUSU9OUyBOU0xJTktNT0RVTEVfT1BUSU9OX0JJTkROT1d8IFwKICAgICBOU0xJTktNT0RVTEVfT1BUSU9OX1JFVFVSTl9PTl9FUlJPUnxOU0xJTktNT0RVTEVfT1BUSU9OX1BSSVZBVEUKICNlbmRpZgotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorZGxfZnVuY3B0ciBfUHlJbXBvcnRfRmluZFNoYXJlZEZ1bmNwdHIoY29uc3QgY2hhciAqcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGRsX2Z1bmNwdHIgcCA9IE5VTEw7CiAgICAgY2hhciBmdW5jbmFtZVsyNThdOwpAQCAtMzksNyArNDAsNyBAQAogICAgIGNvbnN0IGNoYXIgKmVyclN0cmluZzsKICAgICBjaGFyIGVyckJ1Zls1MTJdOwogCi0gICAgUHlPU19zbnByaW50ZihmdW5jbmFtZSwgc2l6ZW9mKGZ1bmNuYW1lKSwgIl9QeUluaXRfJS4yMDBzIiwgc2hvcnRuYW1lKTsKKyAgICBQeU9TX3NucHJpbnRmKGZ1bmNuYW1lLCBzaXplb2YoZnVuY25hbWUpLCAiXyUuMjBzXyUuMjAwcyIsIHByZWZpeCwgc2hvcnRuYW1lKTsKIAogI2lmZGVmIFVTRV9EWUxEX0dMT0JBTF9OQU1FU1BBQ0UKICAgICBpZiAoTlNJc1N5bWJvbE5hbWVEZWZpbmVkKGZ1bmNuYW1lKSkgewpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfc2hsaWIuYyBiL1B5dGhvbi9keW5sb2FkX3NobGliLmMKaW5kZXggNWNkMWVmZC4uN2Y4ZjEzNCAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfc2hsaWIuYworKysgYi9QeXRob24vZHlubG9hZF9zaGxpYi5jCkBAIC01MSw4ICs1MSwxMCBAQAogc3RhdGljIGludCBuaGFuZGxlcyA9IDA7CiAKIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorZGxfZnVuY3B0cgorX1B5SW1wb3J0X0ZpbmRTaGFyZWRGdW5jcHRyKGNvbnN0IGNoYXIgKnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzaG9ydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGRsX2Z1bmNwdHIgcDsKICAgICB2b2lkICpoYW5kbGU7CkBAIC02NywyNiArNjksMjQgQEAKICAgICB9CiAKICAgICBQeU9TX3NucHJpbnRmKGZ1bmNuYW1lLCBzaXplb2YoZnVuY25hbWUpLAotICAgICAgICAgICAgICAgICAgTEVBRF9VTkRFUlNDT1JFICJQeUluaXRfJS4yMDBzIiwgc2hvcnRuYW1lKTsKKyAgICAgICAgICAgICAgICAgIExFQURfVU5ERVJTQ09SRSAiJS4yMHNfJS4yMDBzIiwgcHJlZml4LCBzaG9ydG5hbWUpOwogCiAgICAgaWYgKGZwICE9IE5VTEwpIHsKICAgICAgICAgaW50IGk7Ci0gICAgICAgIHN0cnVjdCBzdGF0IHN0YXRiOwotICAgICAgICBpZiAoZnN0YXQoZmlsZW5vKGZwKSwgJnN0YXRiKSA9PSAtMSkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0YXR1czsKKyAgICAgICAgaWYgKF9QeV9mc3RhdChmaWxlbm8oZnApLCAmc3RhdHVzKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuaGFuZGxlczsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoc3RhdGIuc3RfZGV2ID09IGhhbmRsZXNbaV0uZGV2ICYmCi0gICAgICAgICAgICAgICAgc3RhdGIuc3RfaW5vID09IGhhbmRsZXNbaV0uaW5vKSB7CisgICAgICAgICAgICBpZiAoc3RhdHVzLnN0X2RldiA9PSBoYW5kbGVzW2ldLmRldiAmJgorICAgICAgICAgICAgICAgIHN0YXR1cy5zdF9pbm8gPT0gaGFuZGxlc1tpXS5pbm8pIHsKICAgICAgICAgICAgICAgICBwID0gKGRsX2Z1bmNwdHIpIGRsc3ltKGhhbmRsZXNbaV0uaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY25hbWUpOwogICAgICAgICAgICAgICAgIHJldHVybiBwOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChuaGFuZGxlcyA8IDEyOCkgewotICAgICAgICAgICAgaGFuZGxlc1tuaGFuZGxlc10uZGV2ID0gc3RhdGIuc3RfZGV2OwotICAgICAgICAgICAgaGFuZGxlc1tuaGFuZGxlc10uaW5vID0gc3RhdGIuc3RfaW5vOworICAgICAgICAgICAgaGFuZGxlc1tuaGFuZGxlc10uZGV2ID0gc3RhdHVzLnN0X2RldjsKKyAgICAgICAgICAgIGhhbmRsZXNbbmhhbmRsZXNdLmlubyA9IHN0YXR1cy5zdF9pbm87CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX3dpbi5jIGIvUHl0aG9uL2R5bmxvYWRfd2luLmMKaW5kZXggZmZjZjBlZS4uZjJjNzk2ZSAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfd2luLmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfd2luLmMKQEAgLTksNiArOSw3IEBACiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAogI2luY2x1ZGUgImltcG9ydGRsLmgiCisjaW5jbHVkZSAicGF0Y2hsZXZlbC5oIgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAogLy8gImFjdGl2YXRpb24gY29udGV4dCIgbWFnaWMgLSBzZWUgZGxfbnQuYy4uLgpAQCAtMTcsMTYgKzE4LDI4IEBACiB2b2lkIF9QeV9EZWFjdGl2YXRlQWN0Q3R4KFVMT05HX1BUUiBjb29raWUpOwogI2VuZGlmCiAKLWNvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0gewogI2lmZGVmIF9ERUJVRwotICAgICJfZC5weWQiLAorI2RlZmluZSBQWURfREVCVUdfU1VGRklYICJfZCIKICNlbHNlCi0gICAgIi5weWQiLAorI2RlZmluZSBQWURfREVCVUdfU1VGRklYICIiCiAjZW5kaWYKKworI2RlZmluZSBTVFJJTkdJWkUyKHgpICN4CisjZGVmaW5lIFNUUklOR0laRSh4KSBTVFJJTkdJWkUyKHgpCisjaWZkZWYgUFlEX1BMQVRGT1JNX1RBRworI2RlZmluZSBQWURfVEFHR0VEX1NVRkZJWCBQWURfREVCVUdfU1VGRklYICIuY3AiIFNUUklOR0laRShQWV9NQUpPUl9WRVJTSU9OKSBTVFJJTkdJWkUoUFlfTUlOT1JfVkVSU0lPTikgIi0iIFBZRF9QTEFURk9STV9UQUcgIi5weWQiCisjZWxzZQorI2RlZmluZSBQWURfVEFHR0VEX1NVRkZJWCBQWURfREVCVUdfU1VGRklYICIuY3AiIFNUUklOR0laRShQWV9NQUpPUl9WRVJTSU9OKSBTVFJJTkdJWkUoUFlfTUlOT1JfVkVSU0lPTikgIi5weWQiCisjZW5kaWYKKworI2RlZmluZSBQWURfVU5UQUdHRURfU1VGRklYIFBZRF9ERUJVR19TVUZGSVggIi5weWQiCisKK2NvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0geworICAgIFBZRF9UQUdHRURfU1VGRklYLAorICAgIFBZRF9VTlRBR0dFRF9TVUZGSVgsCiAgICAgTlVMTAogfTsKIAotCiAvKiBDYXNlIGluc2Vuc2l0aXZlIHN0cmluZyBjb21wYXJlLCB0byBhdm9pZCBhbnkgZGVwZW5kZW5jaWVzIG9uIHBhcnRpY3VsYXIKICAgIEMgUlRMIGltcGxlbWVudGF0aW9ucyAqLwogCkBAIC0xNzMsOCArMTg2LDkgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZFdpbmRvd3MoY29uc3QgY2hhciAqc2hvcnRuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdGhuYW1lLCBGSUxFICpmcCkKK2RsX2Z1bmNwdHIgX1B5SW1wb3J0X0ZpbmRTaGFyZWRGdW5jcHRyV2luZG93cyhjb25zdCBjaGFyICpwcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXRobmFtZSwgRklMRSAqZnApCiB7CiAgICAgZGxfZnVuY3B0ciBwOwogICAgIGNoYXIgZnVuY25hbWVbMjU4XSwgKmltcG9ydF9weXRob247CkBAIC0xODgsNyArMjAyLDcgQEAKICAgICBpZiAod3BhdGhuYW1lID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgUHlPU19zbnByaW50ZihmdW5jbmFtZSwgc2l6ZW9mKGZ1bmNuYW1lKSwgIlB5SW5pdF8lLjIwMHMiLCBzaG9ydG5hbWUpOworICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksICIlLjIwc18lLjIwMHMiLCBwcmVmaXgsIHNob3J0bmFtZSk7CiAKICAgICB7CiAgICAgICAgIEhJTlNUQU5DRSBoRExMID0gTlVMTDsKZGlmZiAtLWdpdCBhL1B5dGhvbi9lcnJvcnMuYyBiL1B5dGhvbi9lcnJvcnMuYwppbmRleCBiMGFkOWFhLi43YjY3NTY2IDEwMDY0NAotLS0gYS9QeXRob24vZXJyb3JzLmMKKysrIGIvUHl0aG9uL2Vycm9ycy5jCkBAIC03NCwxMSArNzQsMTEgQEAKICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgIVB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgICAgICAvKiBXZSBtdXN0IG5vcm1hbGl6ZSB0aGUgdmFsdWUgcmlnaHQgbm93ICovCiAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgKmZpeGVkX3ZhbHVlOwotI2lmZGVmIFB5X0RFQlVHCi0gICAgICAgICAgICAvKiBpbiBkZWJ1ZyBtb2RlLCBQeUV2YWxfRXZhbEZyYW1lRXgoKSBmYWlscyB3aXRoIGFuIGFzc2VydGlvbgotICAgICAgICAgICAgICAgZXJyb3IgaWYgYW4gZXhjZXB0aW9uIGlzIHNldCB3aGVuIGl0IGlzIGNhbGxlZCAqLworCisgICAgICAgICAgICAvKiBJc3N1ZSAjMjM1NzE6IFB5RXZhbF9DYWxsT2JqZWN0KCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4KKyAgICAgICAgICAgICAgIGV4Y2VwdGlvbiBzZXQgKi8KICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0jZW5kaWYKKwogICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgdmFsdWUgPT0gUHlfTm9uZSkKICAgICAgICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CiAgICAgICAgICAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKHZhbHVlKSkgewpAQCAtMzE1LDE0ICszMTUsMTEgQEAKICAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwogICAgIGlmICgrK3RzdGF0ZS0+cmVjdXJzaW9uX2RlcHRoID4gUHlfR2V0UmVjdXJzaW9uTGltaXQoKSkgewogICAgICAgICAtLXRzdGF0ZS0+cmVjdXJzaW9uX2RlcHRoOwotICAgICAgICAvKiB0aHJvdyBhd2F5IHRoZSBvbGQgZXhjZXB0aW9uLi4uICovCi0gICAgICAgIFB5X0RFQ1JFRigqZXhjKTsKLSAgICAgICAgUHlfREVDUkVGKCp2YWwpOwotICAgICAgICAvKiAuLi4gYW5kIHVzZSB0aGUgcmVjdXJzaW9uIGVycm9yIGluc3RlYWQgKi8KLSAgICAgICAgKmV4YyA9IFB5RXhjX1J1bnRpbWVFcnJvcjsKLSAgICAgICAgKnZhbCA9IFB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdDsKLSAgICAgICAgUHlfSU5DUkVGKCpleGMpOwotICAgICAgICBQeV9JTkNSRUYoKnZhbCk7CisgICAgICAgIC8qIHRocm93IGF3YXkgdGhlIG9sZCBleGNlcHRpb24gYW5kIHVzZSB0aGUgcmVjdXJzaW9uIGVycm9yIGluc3RlYWQgKi8KKyAgICAgICAgUHlfSU5DUkVGKFB5RXhjX1JlY3Vyc2lvbkVycm9yKTsKKyAgICAgICAgUHlfU0VUUkVGKCpleGMsIFB5RXhjX1JlY3Vyc2lvbkVycm9yKTsKKyAgICAgICAgUHlfSU5DUkVGKFB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdCk7CisgICAgICAgIFB5X1NFVFJFRigqdmFsLCBQeUV4Y19SZWN1cnNpb25FcnJvckluc3QpOwogICAgICAgICAvKiBqdXN0IGtlZXBpbmcgdGhlIG9sZCB0cmFjZWJhY2sgKi8KICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc3MywzNCArNzcwLDM4IEBACiAjZGVmaW5lIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpIF9QeUVycl9CYWRJbnRlcm5hbENhbGwoX19GSUxFX18sIF9fTElORV9fKQogCiAKK1B5T2JqZWN0ICoKK1B5RXJyX0Zvcm1hdFYoUHlPYmplY3QgKmV4Y2VwdGlvbiwgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhcmdzKQoreworICAgIFB5T2JqZWN0KiBzdHJpbmc7CisKKyAgICAvKiBJc3N1ZSAjMjM1NzE6IFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuCisgICAgICAgZXhjZXB0aW9uIHNldCwgaXQgY2FsbHMgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlIGxpa2UgUHlPYmplY3RfUmVwcigpICovCisgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgIHN0cmluZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0Vihmb3JtYXQsIHZhcmdzKTsKKworICAgIFB5RXJyX1NldE9iamVjdChleGNlcHRpb24sIHN0cmluZyk7CisgICAgUHlfWERFQ1JFRihzdHJpbmcpOworICAgIHJldHVybiBOVUxMOworfQorCiAKIFB5T2JqZWN0ICoKIFB5RXJyX0Zvcm1hdChQeU9iamVjdCAqZXhjZXB0aW9uLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhcmdzOwotICAgIFB5T2JqZWN0KiBzdHJpbmc7Ci0KICNpZmRlZiBIQVZFX1NUREFSR19QUk9UT1RZUEVTCiAgICAgdmFfc3RhcnQodmFyZ3MsIGZvcm1hdCk7CiAjZWxzZQogICAgIHZhX3N0YXJ0KHZhcmdzKTsKICNlbmRpZgotCi0jaWZkZWYgUHlfREVCVUcKLSAgICAvKiBpbiBkZWJ1ZyBtb2RlLCBQeUV2YWxfRXZhbEZyYW1lRXgoKSBmYWlscyB3aXRoIGFuIGFzc2VydGlvbiBlcnJvcgotICAgICAgIGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQgd2hlbiBpdCBpcyBjYWxsZWQgKi8KLSAgICBQeUVycl9DbGVhcigpOwotI2VuZGlmCi0KLSAgICBzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoZm9ybWF0LCB2YXJncyk7Ci0gICAgUHlFcnJfU2V0T2JqZWN0KGV4Y2VwdGlvbiwgc3RyaW5nKTsKLSAgICBQeV9YREVDUkVGKHN0cmluZyk7CisgICAgUHlFcnJfRm9ybWF0VihleGNlcHRpb24sIGZvcm1hdCwgdmFyZ3MpOwogICAgIHZhX2VuZCh2YXJncyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKIAotCiBQeU9iamVjdCAqCiBQeUVycl9OZXdFeGNlcHRpb24oY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKmJhc2UsIFB5T2JqZWN0ICpkaWN0KQogewpAQCAtMTEyMSw2ICsxMTIyLDEwIEBACiAgICAgaWYgKGZpbGVuYW1lID09IE5VTEwgfHwgbGluZW5vIDw9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGZwID0gX1B5X2ZvcGVuX29iaihmaWxlbmFtZSwgInIiIFBZX1NURElPVEVYVE1PREUpOworICAgIGlmIChmcCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXR1cm4gZXJyX3Byb2dyYW10ZXh0KGZwLCBsaW5lbm8pOwogfQogCmRpZmYgLS1naXQgYS9QeXRob24vZmlsZXV0aWxzLmMgYi9QeXRob24vZmlsZXV0aWxzLmMKaW5kZXggMzE2ODljMC4uMDZkNjMyYSAxMDA2NDQKLS0tIGEvUHl0aG9uL2ZpbGV1dGlscy5jCisrKyBiL1B5dGhvbi9maWxldXRpbHMuYwpAQCAtMyw3ICszLDkgQEAKICNpbmNsdWRlIDxsb2NhbGUuaD4KIAogI2lmZGVmIE1TX1dJTkRPV1MKKyMgIGluY2x1ZGUgPG1hbGxvYy5oPgogIyAgaW5jbHVkZSA8d2luZG93cy5oPgorZXh0ZXJuIGludCB3aW5lcnJvcl90b19lcnJubyhpbnQpOwogI2VuZGlmCiAKICNpZmRlZiBIQVZFX0xBTkdJTkZPX0gKQEAgLTI5LDcgKzMxLDggQEAKICAgICAwOiBvcGVuKCkgaWdub3JlcyBPX0NMT0VYRUMgZmxhZywgZXg6IExpbnV4IGtlcm5lbCBvbGRlciB0aGFuIDIuNi4yMwogICAgIDE6IG9wZW4oKSBzdXBwb3J0cyBPX0NMT0VYRUMgZmxhZywgY2xvc2Utb24tZXhlYyBpcyBzZXQKIAotICAgVGhlIGZsYWcgaXMgdXNlZCBieSBfUHlfb3BlbigpLCBpby5GaWxlSU8gYW5kIG9zLm9wZW4oKSAqLworICAgVGhlIGZsYWcgaXMgdXNlZCBieSBfUHlfb3BlbigpLCBfUHlfb3Blbl9ub3JhaXNlKCksIGlvLkZpbGVJTworICAgYW5kIG9zLm9wZW4oKS4gKi8KIGludCBfUHlfb3Blbl9jbG9leGVjX3dvcmtzID0gLTE7CiAjZW5kaWYKIApAQCAtMzksOSArNDIsMTMgQEAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgVUlOVCBjcDsKICNlbmRpZgotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSB8fCAhaXNhdHR5KGZkKSkgeworICAgIGludCB2YWxpZDsKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgdmFsaWQgPSBfUHlWZXJpZnlfZmQoZmQpICYmIGlzYXR0eShmZCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICBpZiAoIXZhbGlkKQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICB9CisKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgaWYgKGZkID09IDApCiAgICAgICAgIGNwID0gR2V0Q29uc29sZUNQKCk7CkBAIC04MiwxMSArODksMTEgQEAKIAogICAgVmFsdWVzIG9mIGZvcmNlX2FzY2lpOgogCi0gICAgICAgMTogdGhlIHdvcmthcm91bmQgaXMgdXNlZDogX1B5X3djaGFyMmNoYXIoKSB1c2VzCi0gICAgICAgICAgZW5jb2RlX2FzY2lpX3N1cnJvZ2F0ZWVzY2FwZSgpIGFuZCBfUHlfY2hhcjJ3Y2hhcigpIHVzZXMKKyAgICAgICAxOiB0aGUgd29ya2Fyb3VuZCBpcyB1c2VkOiBQeV9FbmNvZGVMb2NhbGUoKSB1c2VzCisgICAgICAgICAgZW5jb2RlX2FzY2lpX3N1cnJvZ2F0ZWVzY2FwZSgpIGFuZCBQeV9EZWNvZGVMb2NhbGUoKSB1c2VzCiAgICAgICAgICAgZGVjb2RlX2FzY2lpX3N1cnJvZ2F0ZWVzY2FwZSgpCi0gICAgICAgMDogdGhlIHdvcmthcm91bmQgaXMgbm90IHVzZWQ6IF9QeV93Y2hhcjJjaGFyKCkgdXNlcyB3Y3N0b21icygpIGFuZAotICAgICAgICAgIF9QeV9jaGFyMndjaGFyKCkgdXNlcyBtYnN0b3djcygpCisgICAgICAgMDogdGhlIHdvcmthcm91bmQgaXMgbm90IHVzZWQ6IFB5X0VuY29kZUxvY2FsZSgpIHVzZXMgd2NzdG9tYnMoKSBhbmQKKyAgICAgICAgICBQeV9EZWNvZGVMb2NhbGUoKSB1c2VzIG1ic3Rvd2NzKCkKICAgICAgIC0xOiB1bmtub3duLCBuZWVkIHRvIGNhbGwgY2hlY2tfZm9yY2VfYXNjaWkoKSB0byBnZXQgdGhlIHZhbHVlCiAqLwogc3RhdGljIGludCBmb3JjZV9hc2NpaSA9IC0xOwpAQCAtMjQ0LDI0ICsyNTEsMjYgQEAKIAogCiAvKiBEZWNvZGUgYSBieXRlIHN0cmluZyBmcm9tIHRoZSBsb2NhbGUgZW5jb2Rpbmcgd2l0aCB0aGUKLSAgIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyICh1bmRlY29kYWJsZSBieXRlcyBhcmUgZGVjb2RlZCBhcyBjaGFyYWN0ZXJzCi0gICBpbiByYW5nZSBVK0RDODAuLlUrRENGRikuIElmIGEgYnl0ZSBzZXF1ZW5jZSBjYW4gYmUgZGVjb2RlZCBhcyBhIHN1cnJvZ2F0ZQorICAgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXI6IHVuZGVjb2RhYmxlIGJ5dGVzIGFyZSBkZWNvZGVkIGFzIGNoYXJhY3RlcnMKKyAgIGluIHJhbmdlIFUrREM4MC4uVStEQ0ZGLiBJZiBhIGJ5dGUgc2VxdWVuY2UgY2FuIGJlIGRlY29kZWQgYXMgYSBzdXJyb2dhdGUKICAgIGNoYXJhY3RlciwgZXNjYXBlIHRoZSBieXRlcyB1c2luZyB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIgaW5zdGVhZAogICAgb2YgZGVjb2RpbmcgdGhlbS4KIAotICAgVXNlIF9QeV93Y2hhcjJjaGFyKCkgdG8gZW5jb2RlIHRoZSBjaGFyYWN0ZXIgc3RyaW5nIGJhY2sgdG8gYSBieXRlIHN0cmluZy4KKyAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSBuZXdseSBhbGxvY2F0ZWQgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nLCB1c2UKKyAgIFB5TWVtX1Jhd0ZyZWUoKSB0byBmcmVlIHRoZSBtZW1vcnkuIElmIHNpemUgaXMgbm90IE5VTEwsIHdyaXRlIHRoZSBudW1iZXIgb2YKKyAgIHdpZGUgY2hhcmFjdGVycyBleGNsdWRpbmcgdGhlIG51bGwgY2hhcmFjdGVyIGludG8gKnNpemUKIAotICAgUmV0dXJuIGEgcG9pbnRlciB0byBhIG5ld2x5IGFsbG9jYXRlZCB3aWRlIGNoYXJhY3RlciBzdHJpbmcgKHVzZQotICAgUHlNZW1fUmF3RnJlZSgpIHRvIGZyZWUgdGhlIG1lbW9yeSkgYW5kIHdyaXRlIHRoZSBudW1iZXIgb2Ygd3JpdHRlbiB3aWRlCi0gICBjaGFyYWN0ZXJzIGV4Y2x1ZGluZyB0aGUgbnVsbCBjaGFyYWN0ZXIgaW50byAqc2l6ZSBpZiBzaXplIGlzIG5vdCBOVUxMLCBvcgotICAgTlVMTCBvbiBlcnJvciAoZGVjb2Rpbmcgb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IpLiBJZiBzaXplIGlzIG5vdCBOVUxMLAotICAgKnNpemUgaXMgc2V0IHRvIChzaXplX3QpLTEgb24gbWVtb3J5IGVycm9yIGFuZCAoc2l6ZV90KS0yIG9uIGRlY29kaW5nCi0gICBlcnJvci4KKyAgIFJldHVybiBOVUxMIG9uIGRlY29kaW5nIGVycm9yIG9yIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yLiBJZiAqc2l6ZSogaXMgbm90CisgICBOVUxMLCAqc2l6ZSBpcyBzZXQgdG8gKHNpemVfdCktMSBvbiBtZW1vcnkgZXJyb3Igb3Igc2V0IHRvIChzaXplX3QpLTIgb24KKyAgIGRlY29kaW5nIGVycm9yLgogCi0gICBDb252ZXJzaW9uIGVycm9ycyBzaG91bGQgbmV2ZXIgaGFwcGVuLCB1bmxlc3MgdGhlcmUgaXMgYSBidWcgaW4gdGhlIEMKLSAgIGxpYnJhcnkuICovCisgICBEZWNvZGluZyBlcnJvcnMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgdW5sZXNzIHRoZXJlIGlzIGEgYnVnIGluIHRoZSBDCisgICBsaWJyYXJ5LgorCisgICBVc2UgdGhlIFB5X0VuY29kZUxvY2FsZSgpIGZ1bmN0aW9uIHRvIGVuY29kZSB0aGUgY2hhcmFjdGVyIHN0cmluZyBiYWNrIHRvIGEKKyAgIGJ5dGUgc3RyaW5nLiAqLwogd2NoYXJfdCoKLV9QeV9jaGFyMndjaGFyKGNvbnN0IGNoYXIqIGFyZywgc2l6ZV90ICpzaXplKQorUHlfRGVjb2RlTG9jYWxlKGNvbnN0IGNoYXIqIGFyZywgc2l6ZV90ICpzaXplKQogewogI2lmZGVmIF9fQVBQTEVfXwogICAgIHdjaGFyX3QgKndzdHI7CkBAIC0zOTksMTkgKzQwOCwyMCBAQAogI2VuZGlmICAgLyogX19BUFBMRV9fICovCiB9CiAKLS8qIEVuY29kZSBhICh3aWRlKSBjaGFyYWN0ZXIgc3RyaW5nIHRvIHRoZSBsb2NhbGUgZW5jb2Rpbmcgd2l0aCB0aGUKLSAgIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyIChjaGFyYWN0ZXJzIGluIHJhbmdlIFUrREM4MC4uVStEQ0ZGIGFyZQotICAgY29udmVydGVkIHRvIGJ5dGVzIDB4ODAuLjB4RkYpLgorLyogRW5jb2RlIGEgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nIHRvIHRoZSBsb2NhbGUgZW5jb2Rpbmcgd2l0aCB0aGUKKyAgIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyOiBzdXJyb2dhdGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UKKyAgIFUrREM4MC4uVStEQ0ZGIGFyZSBjb252ZXJ0ZWQgdG8gYnl0ZXMgMHg4MC4uMHhGRi4KIAotICAgVGhpcyBmdW5jdGlvbiBpcyB0aGUgcmV2ZXJzZSBvZiBfUHlfY2hhcjJ3Y2hhcigpLgorICAgUmV0dXJuIGEgcG9pbnRlciB0byBhIG5ld2x5IGFsbG9jYXRlZCBieXRlIHN0cmluZywgdXNlIFB5TWVtX0ZyZWUoKSB0byBmcmVlCisgICB0aGUgbWVtb3J5LiBSZXR1cm4gTlVMTCBvbiBlbmNvZGluZyBvciBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvci4KIAotICAgUmV0dXJuIGEgcG9pbnRlciB0byBhIG5ld2x5IGFsbG9jYXRlZCBieXRlIHN0cmluZyAodXNlIFB5TWVtX0ZyZWUoKSB0byBmcmVlCi0gICB0aGUgbWVtb3J5KSwgb3IgTlVMTCBvbiBlbmNvZGluZyBvciBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvci4KKyAgIElmIGVycm9yX3BvcyBpcyBub3QgTlVMTCwgKmVycm9yX3BvcyBpcyBzZXQgdG8gdGhlIGluZGV4IG9mIHRoZSBpbnZhbGlkCisgICBjaGFyYWN0ZXIgb24gZW5jb2RpbmcgZXJyb3IsIG9yIHNldCB0byAoc2l6ZV90KS0xIG90aGVyd2lzZS4KIAotICAgSWYgZXJyb3JfcG9zIGlzIG5vdCBOVUxMOiAqZXJyb3JfcG9zIGlzIHRoZSBpbmRleCBvZiB0aGUgaW52YWxpZCBjaGFyYWN0ZXIKLSAgIG9uIGVuY29kaW5nIGVycm9yLCBvciAoc2l6ZV90KS0xIG90aGVyd2lzZS4gKi8KKyAgIFVzZSB0aGUgUHlfRGVjb2RlTG9jYWxlKCkgZnVuY3Rpb24gdG8gZGVjb2RlIHRoZSBieXRlcyBzdHJpbmcgYmFjayB0byBhIHdpZGUKKyAgIGNoYXJhY3RlciBzdHJpbmcuICovCiBjaGFyKgotX1B5X3djaGFyMmNoYXIoY29uc3Qgd2NoYXJfdCAqdGV4dCwgc2l6ZV90ICplcnJvcl9wb3MpCitQeV9FbmNvZGVMb2NhbGUoY29uc3Qgd2NoYXJfdCAqdGV4dCwgc2l6ZV90ICplcnJvcl9wb3MpCiB7CiAjaWZkZWYgX19BUFBMRV9fCiAgICAgUHlfc3NpemVfdCBsZW47CkBAIC01MTQsMzQgKzUyNCwxNzkgQEAKICNlbmRpZiAgIC8qIF9fQVBQTEVfXyAqLwogfQogCi0vKiBJbiBwcmluY2lwbGUsIHRoaXMgc2hvdWxkIHVzZSBIQVZFX19XU1RBVCwgYW5kIF93c3RhdAotICAgc2hvdWxkIGJlIGRldGVjdGVkIGJ5IGF1dG9jb25mLiBIb3dldmVyLCBubyBjdXJyZW50Ci0gICBQT1NJWCBzeXN0ZW0gcHJvdmlkZXMgdGhhdCBmdW5jdGlvbiwgc28gdGVzdGluZyBmb3IKLSAgIGl0IGlzIHBvaW50bGVzcy4KLSAgIE5vdCBzdXJlIHdoZXRoZXIgdGhlIE1TX1dJTkRPV1MgZ3VhcmRzIGFyZSBuZWNlc3Nhcnk6Ci0gICBwZXJoYXBzIGZvciBjeWd3aW4vbWluZ3cgYnVpbGRzPwotKi8KLSNpZiBkZWZpbmVkKEhBVkVfU1RBVCkgJiYgIWRlZmluZWQoTVNfV0lORE9XUykKIAotLyogR2V0IGZpbGUgc3RhdHVzLiBFbmNvZGUgdGhlIHBhdGggdG8gdGhlIGxvY2FsZSBlbmNvZGluZy4gKi8KKyNpZmRlZiBNU19XSU5ET1dTCitzdGF0aWMgX19pbnQ2NCBzZWNzX2JldHdlZW5fZXBvY2hzID0gMTE2NDQ0NzM2MDA7IC8qIFNlY29uZHMgYmV0d2VlbiAxLjEuMTYwMSBhbmQgMS4xLjE5NzAgKi8KIAotaW50Ci1fUHlfd3N0YXQoY29uc3Qgd2NoYXJfdCogcGF0aCwgc3RydWN0IHN0YXQgKmJ1ZikKK3N0YXRpYyB2b2lkCitGSUxFX1RJTUVfdG9fdGltZV90X25zZWMoRklMRVRJTUUgKmluX3B0ciwgdGltZV90ICp0aW1lX291dCwgaW50KiBuc2VjX291dCkKIHsKLSAgICBpbnQgZXJyOwotICAgIGNoYXIgKmZuYW1lOwotICAgIGZuYW1lID0gX1B5X3djaGFyMmNoYXIocGF0aCwgTlVMTCk7Ci0gICAgaWYgKGZuYW1lID09IE5VTEwpIHsKLSAgICAgICAgZXJybm8gPSBFSU5WQUw7Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICAvKiBYWFggZW5kaWFubmVzcy4gU2hvdWxkbid0IG1hdHRlciwgYXMgYWxsIFdpbmRvd3MgaW1wbGVtZW50YXRpb25zIGFyZSBsaXR0bGUtZW5kaWFuICovCisgICAgLyogQ2Fubm90IHNpbXBseSBjYXN0IGFuZCBkZXJlZmVyZW5jZSBpbl9wdHIsCisgICAgICAgc2luY2UgaXQgbWlnaHQgbm90IGJlIGFsaWduZWQgcHJvcGVybHkgKi8KKyAgICBfX2ludDY0IGluOworICAgIG1lbWNweSgmaW4sIGluX3B0ciwgc2l6ZW9mKGluKSk7CisgICAgKm5zZWNfb3V0ID0gKGludCkoaW4gJSAxMDAwMDAwMCkgKiAxMDA7IC8qIEZJTEVUSU1FIGlzIGluIHVuaXRzIG9mIDEwMCBuc2VjLiAqLworICAgICp0aW1lX291dCA9IFB5X1NBRkVfRE9XTkNBU1QoKGluIC8gMTAwMDAwMDApIC0gc2Vjc19iZXR3ZWVuX2Vwb2NocywgX19pbnQ2NCwgdGltZV90KTsKK30KKwordm9pZAorX1B5X3RpbWVfdF90b19GSUxFX1RJTUUodGltZV90IHRpbWVfaW4sIGludCBuc2VjX2luLCBGSUxFVElNRSAqb3V0X3B0cikKK3sKKyAgICAvKiBYWFggZW5kaWFubmVzcyAqLworICAgIF9faW50NjQgb3V0OworICAgIG91dCA9IHRpbWVfaW4gKyBzZWNzX2JldHdlZW5fZXBvY2hzOworICAgIG91dCA9IG91dCAqIDEwMDAwMDAwICsgbnNlY19pbiAvIDEwMDsKKyAgICBtZW1jcHkob3V0X3B0ciwgJm91dCwgc2l6ZW9mKG91dCkpOworfQorCisvKiBCZWxvdywgd2UgKmtub3cqIHRoYXQgdWdvK3IgaXMgMDQ0NCAqLworI2lmIF9TX0lSRUFEICE9IDA0MDAKKyNlcnJvciBVbnN1cHBvcnRlZCBDIGxpYnJhcnkKKyNlbmRpZgorc3RhdGljIGludAorYXR0cmlidXRlc190b19tb2RlKERXT1JEIGF0dHIpCit7CisgICAgaW50IG0gPSAwOworICAgIGlmIChhdHRyICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQorICAgICAgICBtIHw9IF9TX0lGRElSIHwgMDExMTsgLyogSUZFWEVDIGZvciB1c2VyLGdyb3VwLG90aGVyICovCisgICAgZWxzZQorICAgICAgICBtIHw9IF9TX0lGUkVHOworICAgIGlmIChhdHRyICYgRklMRV9BVFRSSUJVVEVfUkVBRE9OTFkpCisgICAgICAgIG0gfD0gMDQ0NDsKKyAgICBlbHNlCisgICAgICAgIG0gfD0gMDY2NjsKKyAgICByZXR1cm4gbTsKK30KKwordm9pZAorX1B5X2F0dHJpYnV0ZV9kYXRhX3RvX3N0YXQoQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKmluZm8sIFVMT05HIHJlcGFyc2VfdGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0KQoreworICAgIG1lbXNldChyZXN1bHQsIDAsIHNpemVvZigqcmVzdWx0KSk7CisgICAgcmVzdWx0LT5zdF9tb2RlID0gYXR0cmlidXRlc190b19tb2RlKGluZm8tPmR3RmlsZUF0dHJpYnV0ZXMpOworICAgIHJlc3VsdC0+c3Rfc2l6ZSA9ICgoKF9faW50NjQpaW5mby0+bkZpbGVTaXplSGlnaCk8PDMyKSArIGluZm8tPm5GaWxlU2l6ZUxvdzsKKyAgICByZXN1bHQtPnN0X2RldiA9IGluZm8tPmR3Vm9sdW1lU2VyaWFsTnVtYmVyOworICAgIHJlc3VsdC0+c3RfcmRldiA9IHJlc3VsdC0+c3RfZGV2OworICAgIEZJTEVfVElNRV90b190aW1lX3RfbnNlYygmaW5mby0+ZnRDcmVhdGlvblRpbWUsICZyZXN1bHQtPnN0X2N0aW1lLCAmcmVzdWx0LT5zdF9jdGltZV9uc2VjKTsKKyAgICBGSUxFX1RJTUVfdG9fdGltZV90X25zZWMoJmluZm8tPmZ0TGFzdFdyaXRlVGltZSwgJnJlc3VsdC0+c3RfbXRpbWUsICZyZXN1bHQtPnN0X210aW1lX25zZWMpOworICAgIEZJTEVfVElNRV90b190aW1lX3RfbnNlYygmaW5mby0+ZnRMYXN0QWNjZXNzVGltZSwgJnJlc3VsdC0+c3RfYXRpbWUsICZyZXN1bHQtPnN0X2F0aW1lX25zZWMpOworICAgIHJlc3VsdC0+c3RfbmxpbmsgPSBpbmZvLT5uTnVtYmVyT2ZMaW5rczsKKyAgICByZXN1bHQtPnN0X2lubyA9ICgoKF9faW50NjQpaW5mby0+bkZpbGVJbmRleEhpZ2gpPDwzMikgKyBpbmZvLT5uRmlsZUluZGV4TG93OworICAgIGlmIChyZXBhcnNlX3RhZyA9PSBJT19SRVBBUlNFX1RBR19TWU1MSU5LKSB7CisgICAgICAgIC8qIGZpcnN0IGNsZWFyIHRoZSBTX0lGTVQgYml0cyAqLworICAgICAgICByZXN1bHQtPnN0X21vZGUgXj0gKHJlc3VsdC0+c3RfbW9kZSAmIFNfSUZNVCk7CisgICAgICAgIC8qIG5vdyBzZXQgdGhlIGJpdHMgdGhhdCBtYWtlIHRoaXMgYSBzeW1saW5rICovCisgICAgICAgIHJlc3VsdC0+c3RfbW9kZSB8PSBTX0lGTE5LOwogICAgIH0KLSAgICBlcnIgPSBzdGF0KGZuYW1lLCBidWYpOwotICAgIFB5TWVtX0ZyZWUoZm5hbWUpOwotICAgIHJldHVybiBlcnI7CisgICAgcmVzdWx0LT5zdF9maWxlX2F0dHJpYnV0ZXMgPSBpbmZvLT5kd0ZpbGVBdHRyaWJ1dGVzOwogfQogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX1NUQVQKKy8qIFJldHVybiBpbmZvcm1hdGlvbiBhYm91dCBhIGZpbGUuCisKKyAgIE9uIFBPU0lYLCB1c2UgZnN0YXQoKS4KKworICAgT24gV2luZG93cywgdXNlIEdldEZpbGVUeXBlKCkgYW5kIEdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKCkgd2hpY2ggc3VwcG9ydAorICAgZmlsZXMgbGFyZ2VyIHRoYW4gMiBHQi4gIGZzdGF0KCkgbWF5IGZhaWwgd2l0aCBFT1ZFUkZMT1cgb24gZmlsZXMgbGFyZ2VyCisgICB0aGFuIDIgR0IgYmVjYXVzZSB0aGUgZmlsZSBzaXplIHR5cGUgaXMgYSBzaWduZWQgMzItYml0IGludGVnZXI6IHNlZSBpc3N1ZQorICAgIzIzMTUyLgorCisgICBPbiBXaW5kb3dzLCBzZXQgdGhlIGxhc3QgV2luZG93cyBlcnJvciBhbmQgcmV0dXJuIG5vbnplcm8gb24gZXJyb3IuIE9uCisgICBQT1NJWCwgc2V0IGVycm5vIGFuZCByZXR1cm4gbm9uemVybyBvbiBlcnJvci4gRmlsbCBzdGF0dXMgYW5kIHJldHVybiAwIG9uCisgICBzdWNjZXNzLiAqLworaW50CitfUHlfZnN0YXRfbm9yYWlzZShpbnQgZmQsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnN0YXR1cykKK3sKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gaW5mbzsKKyAgICBIQU5ETEUgaDsKKyAgICBpbnQgdHlwZTsKKworICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKKyAgICAgICAgaCA9IElOVkFMSURfSEFORExFX1ZBTFVFOworICAgIGVsc2UgeworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgIGggPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICB9CisKKyAgICBpZiAoaCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgeworICAgICAgICAvKiBlcnJubyBpcyBhbHJlYWR5IHNldCBieSBfZ2V0X29zZmhhbmRsZSwgYnV0IHdlIGFsc28gc2V0CisgICAgICAgICAgIHRoZSBXaW4zMiBlcnJvciBmb3IgY2FsbGVycyB3aG8gZXhwZWN0IHRoYXQgKi8KKyAgICAgICAgU2V0TGFzdEVycm9yKEVSUk9SX0lOVkFMSURfSEFORExFKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBtZW1zZXQoc3RhdHVzLCAwLCBzaXplb2YoKnN0YXR1cykpOworCisgICAgdHlwZSA9IEdldEZpbGVUeXBlKGgpOworICAgIGlmICh0eXBlID09IEZJTEVfVFlQRV9VTktOT1dOKSB7CisgICAgICAgIERXT1JEIGVycm9yID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgIGlmIChlcnJvciAhPSAwKSB7CisgICAgICAgICAgICBlcnJubyA9IHdpbmVycm9yX3RvX2Vycm5vKGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICAvKiBlbHNlOiB2YWxpZCBidXQgdW5rbm93biBmaWxlICovCisgICAgfQorCisgICAgaWYgKHR5cGUgIT0gRklMRV9UWVBFX0RJU0spIHsKKyAgICAgICAgaWYgKHR5cGUgPT0gRklMRV9UWVBFX0NIQVIpCisgICAgICAgICAgICBzdGF0dXMtPnN0X21vZGUgPSBfU19JRkNIUjsKKyAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBGSUxFX1RZUEVfUElQRSkKKyAgICAgICAgICAgIHN0YXR1cy0+c3RfbW9kZSA9IF9TX0lGSUZPOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoIUdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGgsICZpbmZvKSkgeworICAgICAgICAvKiBUaGUgV2luMzIgZXJyb3IgaXMgYWxyZWFkeSBzZXQsIGJ1dCB3ZSBhbHNvIHNldCBlcnJubyBmb3IKKyAgICAgICAgICAgY2FsbGVycyB3aG8gZXhwZWN0IGl0ICovCisgICAgICAgIGVycm5vID0gd2luZXJyb3JfdG9fZXJybm8oR2V0TGFzdEVycm9yKCkpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgX1B5X2F0dHJpYnV0ZV9kYXRhX3RvX3N0YXQoJmluZm8sIDAsIHN0YXR1cyk7CisgICAgLyogc3BlY2lmaWMgdG8gZnN0YXQoKSAqLworICAgIHN0YXR1cy0+c3RfaW5vID0gKCgoX19pbnQ2NClpbmZvLm5GaWxlSW5kZXhIaWdoKTw8MzIpICsgaW5mby5uRmlsZUluZGV4TG93OworICAgIHJldHVybiAwOworI2Vsc2UKKyAgICByZXR1cm4gZnN0YXQoZmQsIHN0YXR1cyk7CisjZW5kaWYKK30KKworLyogUmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IGEgZmlsZS4KKworICAgT24gUE9TSVgsIHVzZSBmc3RhdCgpLgorCisgICBPbiBXaW5kb3dzLCB1c2UgR2V0RmlsZVR5cGUoKSBhbmQgR2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoKSB3aGljaCBzdXBwb3J0CisgICBmaWxlcyBsYXJnZXIgdGhhbiAyIEdCLiAgZnN0YXQoKSBtYXkgZmFpbCB3aXRoIEVPVkVSRkxPVyBvbiBmaWxlcyBsYXJnZXIKKyAgIHRoYW4gMiBHQiBiZWNhdXNlIHRoZSBmaWxlIHNpemUgdHlwZSBpcyBhIHNpZ25lZCAzMi1iaXQgaW50ZWdlcjogc2VlIGlzc3VlCisgICAjMjMxNTIuCisKKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiBPbiBXaW5kb3dzLCBzZXQgdGhlIGxhc3QgV2luZG93cworICAgZXJyb3Igb24gZXJyb3IuIE9uIFBPU0lYLCBzZXQgZXJybm8gb24gZXJyb3IuIEZpbGwgc3RhdHVzIGFuZCByZXR1cm4gMCBvbgorICAgc3VjY2Vzcy4KKworICAgUmVsZWFzZSB0aGUgR0lMIHRvIGNhbGwgR2V0RmlsZVR5cGUoKSBhbmQgR2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoKSwgb3IKKyAgIHRvIGNhbGwgZnN0YXQoKS4gVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIEdJTC4gKi8KK2ludAorX1B5X2ZzdGF0KGludCBmZCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqc3RhdHVzKQoreworICAgIGludCByZXM7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzID0gX1B5X2ZzdGF0X25vcmFpc2UoZmQsIHN0YXR1cyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXMgIT0gMCkgeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisjZWxzZQorICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KIAogLyogQ2FsbCBfd3N0YXQoKSBvbiBXaW5kb3dzLCBvciBlbmNvZGUgdGhlIHBhdGggdG8gdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgYW5kCiAgICBjYWxsIHN0YXQoKSBvdGhlcndpc2UuIE9ubHkgZmlsbCBzdF9tb2RlIGF0dHJpYnV0ZSBvbiBXaW5kb3dzLgpAQCAtNTc1LDcgKzczMCw2IEBACiAjZW5kaWYKIH0KIAotI2VuZGlmCiAKIHN0YXRpYyBpbnQKIGdldF9pbmhlcml0YWJsZShpbnQgZmQsIGludCByYWlzZSkKQEAgLTU5MCw3ICs3NDQsOSBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGhhbmRsZSA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICBpZiAocmFpc2UpCiAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CkBAIC02NjUsNyArODIxLDkgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAorICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBoYW5kbGUgPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKICAgICAgICAgaWYgKHJhaXNlKQogICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwpAQCAtNzY3LDQwICs5MjUsOTIgQEAKICAgICByZXR1cm4gc2V0X2luaGVyaXRhYmxlKGZkLCBpbmhlcml0YWJsZSwgMSwgYXRvbWljX2ZsYWdfd29ya3MpOwogfQogCi0vKiBPcGVuIGEgZmlsZSB3aXRoIHRoZSBzcGVjaWZpZWQgZmxhZ3MgKHdyYXBwZXIgdG8gb3BlbigpIGZ1bmN0aW9uKS4KLSAgIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgY3JlYXRlZCBub24taW5oZXJpdGFibGUuICovCi1pbnQKLV9QeV9vcGVuKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MpCitzdGF0aWMgaW50CitfUHlfb3Blbl9pbXBsKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIGludCBnaWxfaGVsZCkKIHsKICAgICBpbnQgZmQ7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIGZkID0gb3BlbihwYXRobmFtZSwgZmxhZ3MgfCBPX05PSU5IRVJJVCk7Ci0gICAgaWYgKGZkIDwgMCkKLSAgICAgICAgcmV0dXJuIGZkOwotI2Vsc2UKLQorICAgIGludCBhc3luY19lcnIgPSAwOworI2lmbmRlZiBNU19XSU5ET1dTCiAgICAgaW50ICphdG9taWNfZmxhZ193b3JrczsKLSNpZmRlZiBPX0NMT0VYRUMKKyNlbmRpZgorCisjaWZkZWYgTVNfV0lORE9XUworICAgIGZsYWdzIHw9IE9fTk9JTkhFUklUOworI2VsaWYgZGVmaW5lZChPX0NMT0VYRUMpCiAgICAgYXRvbWljX2ZsYWdfd29ya3MgPSAmX1B5X29wZW5fY2xvZXhlY193b3JrczsKICAgICBmbGFncyB8PSBPX0NMT0VYRUM7CiAjZWxzZQogICAgIGF0b21pY19mbGFnX3dvcmtzID0gTlVMTDsKICNlbmRpZgotICAgIGZkID0gb3BlbihwYXRobmFtZSwgZmxhZ3MpOwotICAgIGlmIChmZCA8IDApCi0gICAgICAgIHJldHVybiBmZDsKIAotICAgIGlmIChzZXRfaW5oZXJpdGFibGUoZmQsIDAsIDAsIGF0b21pY19mbGFnX3dvcmtzKSA8IDApIHsKKyAgICBpZiAoZ2lsX2hlbGQpIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgZmQgPSBvcGVuKHBhdGhuYW1lLCBmbGFncyk7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICB9IHdoaWxlIChmZCA8IDAKKyAgICAgICAgICAgICAgICAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgICAgICBpZiAoYXN5bmNfZXJyKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoZmQgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoUHlFeGNfT1NFcnJvciwgcGF0aG5hbWUpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmZCA9IG9wZW4ocGF0aG5hbWUsIGZsYWdzKTsKKyAgICAgICAgaWYgKGZkIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyNpZm5kZWYgTVNfV0lORE9XUworICAgIGlmIChzZXRfaW5oZXJpdGFibGUoZmQsIDAsIGdpbF9oZWxkLCBhdG9taWNfZmxhZ193b3JrcykgPCAwKSB7CiAgICAgICAgIGNsb3NlKGZkKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSNlbmRpZiAgIC8qICFNU19XSU5ET1dTICovCisjZW5kaWYKKwogICAgIHJldHVybiBmZDsKIH0KIAorLyogT3BlbiBhIGZpbGUgd2l0aCB0aGUgc3BlY2lmaWVkIGZsYWdzICh3cmFwcGVyIHRvIG9wZW4oKSBmdW5jdGlvbikuCisgICBSZXR1cm4gYSBmaWxlIGRlc2NyaXB0b3Igb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24KKyAgIGVycm9yLgorCisgICBUaGUgZmlsZSBkZXNjcmlwdG9yIGlzIGNyZWF0ZWQgbm9uLWluaGVyaXRhYmxlLgorCisgICBXaGVuIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIChvcGVuKCkgZmFpbHMgd2l0aCBFSU5UUiksIHJldHJ5IHRoZSBzeXNjYWxsLAorICAgZXhjZXB0IGlmIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KKworICAgUmVsZWFzZSB0aGUgR0lMIHRvIGNhbGwgb3BlbigpLiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgR0lMLiAqLworaW50CitfUHlfb3Blbihjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGZsYWdzKQoreworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgLyogX1B5X29wZW4oKSBtdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBHSUwgaGVsZC4gKi8KKyAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKKyNlbmRpZgorICAgIHJldHVybiBfUHlfb3Blbl9pbXBsKHBhdGhuYW1lLCBmbGFncywgMSk7Cit9CisKKy8qIE9wZW4gYSBmaWxlIHdpdGggdGhlIHNwZWNpZmllZCBmbGFncyAod3JhcHBlciB0byBvcGVuKCkgZnVuY3Rpb24pLgorICAgUmV0dXJuIGEgZmlsZSBkZXNjcmlwdG9yIG9uIHN1Y2Nlc3MuIFNldCBlcnJubyBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLgorCisgICBUaGUgZmlsZSBkZXNjcmlwdG9yIGlzIGNyZWF0ZWQgbm9uLWluaGVyaXRhYmxlLgorCisgICBJZiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCwgZmFpbCB3aXRoIEVJTlRSLiAqLworaW50CitfUHlfb3Blbl9ub3JhaXNlKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MpCit7CisgICAgcmV0dXJuIF9QeV9vcGVuX2ltcGwocGF0aG5hbWUsIGZsYWdzLCAwKTsKK30KKwogLyogT3BlbiBhIGZpbGUuIFVzZSBfd2ZvcGVuKCkgb24gV2luZG93cywgZW5jb2RlIHRoZSBwYXRoIHRvIHRoZSBsb2NhbGUKLSAgIGVuY29kaW5nIGFuZCB1c2UgZm9wZW4oKSBvdGhlcndpc2UuIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgY3JlYXRlZAotICAgbm9uLWluaGVyaXRhYmxlLiAqLworICAgZW5jb2RpbmcgYW5kIHVzZSBmb3BlbigpIG90aGVyd2lzZS4KKworICAgVGhlIGZpbGUgZGVzY3JpcHRvciBpcyBjcmVhdGVkIG5vbi1pbmhlcml0YWJsZS4KKworICAgSWYgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwsIGZhaWwgd2l0aCBFSU5UUi4gKi8KIEZJTEUgKgogX1B5X3dmb3Blbihjb25zdCB3Y2hhcl90ICpwYXRoLCBjb25zdCB3Y2hhcl90ICptb2RlKQogewpAQCAtODE0LDcgKzEwMjQsNyBAQAogICAgICAgICBlcnJubyA9IEVJTlZBTDsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGNwYXRoID0gX1B5X3djaGFyMmNoYXIocGF0aCwgTlVMTCk7CisgICAgY3BhdGggPSBQeV9FbmNvZGVMb2NhbGUocGF0aCwgTlVMTCk7CiAgICAgaWYgKGNwYXRoID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGYgPSBmb3BlbihjcGF0aCwgY21vZGUpOwpAQCAtODMxLDcgKzEwNDEsMTEgQEAKICAgICByZXR1cm4gZjsKIH0KIAotLyogV3JhcHBlciB0byBmb3BlbigpLiBUaGUgZmlsZSBkZXNjcmlwdG9yIGlzIGNyZWF0ZWQgbm9uLWluaGVyaXRhYmxlLiAqLworLyogV3JhcHBlciB0byBmb3BlbigpLgorCisgICBUaGUgZmlsZSBkZXNjcmlwdG9yIGlzIGNyZWF0ZWQgbm9uLWluaGVyaXRhYmxlLgorCisgICBJZiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCwgZmFpbCB3aXRoIEVJTlRSLiAqLwogRklMRSoKIF9QeV9mb3Blbihjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3QgY2hhciAqbW9kZSkKIHsKQEAgLTg0NiwyMCArMTA2MCwzMiBAQAogfQogCiAvKiBPcGVuIGEgZmlsZS4gQ2FsbCBfd2ZvcGVuKCkgb24gV2luZG93cywgb3IgZW5jb2RlIHRoZSBwYXRoIHRvIHRoZSBmaWxlc3lzdGVtCi0gICBlbmNvZGluZyBhbmQgY2FsbCBmb3BlbigpIG90aGVyd2lzZS4gVGhlIGZpbGUgZGVzY3JpcHRvciBpcyBjcmVhdGVkCi0gICBub24taW5oZXJpdGFibGUuCisgICBlbmNvZGluZyBhbmQgY2FsbCBmb3BlbigpIG90aGVyd2lzZS4KIAotICAgUmV0dXJuIHRoZSBuZXcgZmlsZSBvYmplY3Qgb24gc3VjY2Vzcywgb3IgTlVMTCBpZiB0aGUgZmlsZSBjYW5ub3QgYmUgb3BlbiBvcgotICAgKGlmIFB5RXJyX09jY3VycmVkKCkpIG9uIHVuaWNvZGUgZXJyb3IuICovCisgICBSZXR1cm4gdGhlIG5ldyBmaWxlIG9iamVjdCBvbiBzdWNjZXNzLiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMCisgICBvbiBlcnJvci4KKworICAgVGhlIGZpbGUgZGVzY3JpcHRvciBpcyBjcmVhdGVkIG5vbi1pbmhlcml0YWJsZS4KKworICAgV2hlbiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAob3BlbigpIGZhaWxzIHdpdGggRUlOVFIpLCByZXRyeSB0aGUgc3lzY2FsbCwKKyAgIGV4Y2VwdCBpZiB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVyIHJhaXNlcyBhbiBleGNlcHRpb24uCisKKyAgIFJlbGVhc2UgdGhlIEdJTCB0byBjYWxsIF93Zm9wZW4oKSBvciBmb3BlbigpLiBUaGUgY2FsbGVyIG11c3QgaG9sZAorICAgdGhlIEdJTC4gKi8KIEZJTEUqCiBfUHlfZm9wZW5fb2JqKFB5T2JqZWN0ICpwYXRoLCBjb25zdCBjaGFyICptb2RlKQogewogICAgIEZJTEUgKmY7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAjaWZkZWYgTVNfV0lORE9XUwogICAgIHdjaGFyX3QgKndwYXRoOwogICAgIHdjaGFyX3Qgd21vZGVbMTBdOwogICAgIGludCB1c2l6ZTsKIAorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7CisjZW5kaWYKKwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHBhdGgpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAic3RyIGZpbGUgcGF0aCBleHBlY3RlZCB1bmRlciBXaW5kb3dzLCBnb3QgJVIiLApAQCAtODcxLDI2ICsxMDk3LDI0OSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHVzaXplID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9BQ1AsIDAsIG1vZGUsIC0xLCB3bW9kZSwgc2l6ZW9mKHdtb2RlKSk7Ci0gICAgaWYgKHVzaXplID09IDApCisgICAgaWYgKHVzaXplID09IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIGYgPSBfd2ZvcGVuKHdwYXRoLCB3bW9kZSk7CisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGYgPSBfd2ZvcGVuKHdwYXRoLCB3bW9kZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAoZiA9PSBOVUxMCisgICAgICAgICAgICAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOwogI2Vsc2UKICAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgY2hhciAqcGF0aF9ieXRlczsKKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7CisjZW5kaWYKKwogICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKHBhdGgsICZieXRlcykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGYgPSBmb3BlbihQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksIG1vZGUpOworICAgIHBhdGhfYnl0ZXMgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyk7CisKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZiA9IGZvcGVuKHBhdGhfYnl0ZXMsIG1vZGUpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKGYgPT0gTlVMTAorICAgICAgICAgICAgICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKwogICAgIFB5X0RFQ1JFRihieXRlcyk7CiAjZW5kaWYKLSAgICBpZiAoZiA9PSBOVUxMKQorICAgIGlmIChhc3luY19lcnIpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChtYWtlX25vbl9pbmhlcml0YWJsZShmaWxlbm8oZikpIDwgMCkgeworCisgICAgaWYgKGYgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwgcGF0aCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChzZXRfaW5oZXJpdGFibGUoZmlsZW5vKGYpLCAwLCAxLCBOVUxMKSA8IDApIHsKICAgICAgICAgZmNsb3NlKGYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIGY7CiB9CiAKKy8qIFJlYWQgY291bnQgYnl0ZXMgZnJvbSBmZCBpbnRvIGJ1Zi4KKworICAgT24gc3VjY2VzcywgcmV0dXJuIHRoZSBudW1iZXIgb2YgcmVhZCBieXRlcywgaXQgY2FuIGJlIGxvd2VyIHRoYW4gY291bnQuCisgICBJZiB0aGUgY3VycmVudCBmaWxlIG9mZnNldCBpcyBhdCBvciBwYXN0IHRoZSBlbmQgb2YgZmlsZSwgbm8gYnl0ZXMgYXJlIHJlYWQsCisgICBhbmQgcmVhZCgpIHJldHVybnMgemVyby4KKworICAgT24gZXJyb3IsIHJhaXNlIGFuIGV4Y2VwdGlvbiwgc2V0IGVycm5vIGFuZCByZXR1cm4gLTEuCisKKyAgIFdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKHJlYWQoKSBmYWlscyB3aXRoIEVJTlRSKSwgcmV0cnkgdGhlIHN5c2NhbGwuCisgICBJZiB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVyIHJhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBmdW5jdGlvbiByZXR1cm5zIC0xCisgICAodGhlIHN5c2NhbGwgaXMgbm90IHJldHJpZWQpLgorCisgICBSZWxlYXNlIHRoZSBHSUwgdG8gY2FsbCByZWFkKCkuIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBHSUwuICovCitQeV9zc2l6ZV90CitfUHlfcmVhZChpbnQgZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworICAgIFB5X3NzaXplX3QgbjsKKyAgICBpbnQgZXJyOworICAgIGludCBhc3luY19lcnIgPSAwOworCisgICAgLyogX1B5X3JlYWQoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24gc2V0LCBvdGhlcndpc2UgdGhlCisgICAgICogY2FsbGVyIG1heSB0aGluayB0aGF0IHJlYWQoKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgYW5kIHRoZSBzaWduYWwKKyAgICAgKiBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24uICovCisgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKKworICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICAvKiBzYXZlL3Jlc3RvcmUgZXJybm8gYmVjYXVzZSBQeUVycl9TZXRGcm9tRXJybm8oKSBjYW4gbW9kaWZ5IGl0ICovCisgICAgICAgIGVyciA9IGVycm5vOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIGVycm5vID0gZXJyOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChjb3VudCA+IElOVF9NQVgpIHsKKyAgICAgICAgLyogT24gV2luZG93cywgdGhlIGNvdW50IHBhcmFtZXRlciBvZiByZWFkKCkgaXMgYW4gaW50ICovCisgICAgICAgIGNvdW50ID0gSU5UX01BWDsKKyAgICB9CisjZWxzZQorICAgIGlmIChjb3VudCA+IFBZX1NTSVpFX1RfTUFYKSB7CisgICAgICAgIC8qIGlmIGNvdW50IGlzIGdyZWF0ZXIgdGhhbiBQWV9TU0laRV9UX01BWCwKKyAgICAgICAgICogcmVhZCgpIHJlc3VsdCBpcyB1bmRlZmluZWQgKi8KKyAgICAgICAgY291bnQgPSBQWV9TU0laRV9UX01BWDsKKyAgICB9CisjZW5kaWYKKworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZXJybm8gPSAwOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgbiA9IHJlYWQoZmQsIGJ1ZiwgKGludCljb3VudCk7CisjZWxzZQorICAgICAgICBuID0gcmVhZChmZCwgYnVmLCBjb3VudCk7CisjZW5kaWYKKyAgICAgICAgLyogc2F2ZS9yZXN0b3JlIGVycm5vIGJlY2F1c2UgUHlFcnJfQ2hlY2tTaWduYWxzKCkKKyAgICAgICAgICogYW5kIFB5RXJyX1NldEZyb21FcnJubygpIGNhbiBtb2RpZnkgaXQgKi8KKyAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAobiA8IDAgJiYgZXJyID09IEVJTlRSICYmCisgICAgICAgICAgICAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKworICAgIGlmIChhc3luY19lcnIpIHsKKyAgICAgICAgLyogcmVhZCgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAoZmFpbGVkIHdpdGggRUlOVFIpCisgICAgICAgICAqIGFuZCB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24gKi8KKyAgICAgICAgZXJybm8gPSBlcnI7CisgICAgICAgIGFzc2VydChlcnJubyA9PSBFSU5UUiAmJiBQeUVycl9PY2N1cnJlZCgpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAobiA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICBlcnJubyA9IGVycjsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiBuOworfQorCitzdGF0aWMgUHlfc3NpemVfdAorX1B5X3dyaXRlX2ltcGwoaW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCwgaW50IGdpbF9oZWxkKQoreworICAgIFB5X3NzaXplX3QgbjsKKyAgICBpbnQgZXJyOworICAgIGludCBhc3luY19lcnIgPSAwOworCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgIGlmIChnaWxfaGVsZCkgeworICAgICAgICAgICAgLyogc2F2ZS9yZXN0b3JlIGVycm5vIGJlY2F1c2UgUHlFcnJfU2V0RnJvbUVycm5vKCkgY2FuIG1vZGlmeSBpdCAqLworICAgICAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgICAgICBlcnJubyA9IGVycjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoY291bnQgPiAzMjc2NyAmJiBpc2F0dHkoZmQpKSB7CisgICAgICAgIC8qIElzc3VlICMxMTM5NTogdGhlIFdpbmRvd3MgY29uc29sZSByZXR1cm5zIGFuIGVycm9yICgxMjogbm90CisgICAgICAgICAgIGVub3VnaCBzcGFjZSBlcnJvcikgb24gd3JpdGluZyBpbnRvIHN0ZG91dCBpZiBzdGRvdXQgbW9kZSBpcworICAgICAgICAgICBiaW5hcnkgYW5kIHRoZSBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIDY2LDAwMCBieXRlcyAob3IgbGVzcywKKyAgICAgICAgICAgZGVwZW5kaW5nIG9uIGhlYXAgdXNhZ2UpLiAqLworICAgICAgICBjb3VudCA9IDMyNzY3OworICAgIH0KKyAgICBlbHNlIGlmIChjb3VudCA+IElOVF9NQVgpCisgICAgICAgIGNvdW50ID0gSU5UX01BWDsKKyNlbHNlCisgICAgaWYgKGNvdW50ID4gUFlfU1NJWkVfVF9NQVgpIHsKKyAgICAgICAgLyogd3JpdGUoKSBzaG91bGQgdHJ1bmNhdGUgY291bnQgdG8gUFlfU1NJWkVfVF9NQVgsIGJ1dCBpdCdzIHNhZmVyCisgICAgICAgICAqIHRvIGRvIGl0IG91cnNlbGYgdG8gaGF2ZSBhIHBvcnRhYmxlIGJlaGF2aW91ci4gKi8KKyAgICAgICAgY291bnQgPSBQWV9TU0laRV9UX01BWDsKKyAgICB9CisjZW5kaWYKKworICAgIGlmIChnaWxfaGVsZCkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICBlcnJubyA9IDA7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgbiA9IHdyaXRlKGZkLCBidWYsIChpbnQpY291bnQpOworI2Vsc2UKKyAgICAgICAgICAgIG4gPSB3cml0ZShmZCwgYnVmLCBjb3VudCk7CisjZW5kaWYKKyAgICAgICAgICAgIC8qIHNhdmUvcmVzdG9yZSBlcnJubyBiZWNhdXNlIFB5RXJyX0NoZWNrU2lnbmFscygpCisgICAgICAgICAgICAgKiBhbmQgUHlFcnJfU2V0RnJvbUVycm5vKCkgY2FuIG1vZGlmeSBpdCAqLworICAgICAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnIgPT0gRUlOVFIgJiYKKyAgICAgICAgICAgICAgICAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBlcnJubyA9IDA7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgbiA9IHdyaXRlKGZkLCBidWYsIChpbnQpY291bnQpOworI2Vsc2UKKyAgICAgICAgICAgIG4gPSB3cml0ZShmZCwgYnVmLCBjb3VudCk7CisjZW5kaWYKKyAgICAgICAgICAgIGVyciA9IGVycm5vOworICAgICAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnIgPT0gRUlOVFIpOworICAgIH0KKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorCisgICAgaWYgKGFzeW5jX2VycikgeworICAgICAgICAvKiB3cml0ZSgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAoZmFpbGVkIHdpdGggRUlOVFIpCisgICAgICAgICAgIGFuZCB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24gKGlmIGdpbF9oZWxkIGlzCisgICAgICAgICAgIG5vbnplcm8pLiAqLworICAgICAgICBlcnJubyA9IGVycjsKKyAgICAgICAgYXNzZXJ0KGVycm5vID09IEVJTlRSICYmICghZ2lsX2hlbGQgfHwgUHlFcnJfT2NjdXJyZWQoKSkpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChuIDwgMCkgeworICAgICAgICBpZiAoZ2lsX2hlbGQpCisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIGVycm5vID0gZXJyOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIG47Cit9CisKKy8qIFdyaXRlIGNvdW50IGJ5dGVzIG9mIGJ1ZiBpbnRvIGZkLgorCisgICBPbiBzdWNjZXNzLCByZXR1cm4gdGhlIG51bWJlciBvZiB3cml0dGVuIGJ5dGVzLCBpdCBjYW4gYmUgbG93ZXIgdGhhbiBjb3VudAorICAgaW5jbHVkaW5nIDAuIE9uIGVycm9yLCByYWlzZSBhbiBleGNlcHRpb24sIHNldCBlcnJubyBhbmQgcmV0dXJuIC0xLgorCisgICBXaGVuIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsICh3cml0ZSgpIGZhaWxzIHdpdGggRUlOVFIpLCByZXRyeSB0aGUgc3lzY2FsbC4KKyAgIElmIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIGZ1bmN0aW9uIHJldHVybnMgLTEKKyAgICh0aGUgc3lzY2FsbCBpcyBub3QgcmV0cmllZCkuCisKKyAgIFJlbGVhc2UgdGhlIEdJTCB0byBjYWxsIHdyaXRlKCkuIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBHSUwuICovCitQeV9zc2l6ZV90CitfUHlfd3JpdGUoaW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKK3sKKyAgICAvKiBfUHlfd3JpdGUoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24gc2V0LCBvdGhlcndpc2UgdGhlCisgICAgICogY2FsbGVyIG1heSB0aGluayB0aGF0IHdyaXRlKCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIGFuZCB0aGUgc2lnbmFsCisgICAgICogaGFuZGxlciByYWlzZWQgYW4gZXhjZXB0aW9uLiAqLworICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CisKKyAgICByZXR1cm4gX1B5X3dyaXRlX2ltcGwoZmQsIGJ1ZiwgY291bnQsIDEpOworfQorCisvKiBXcml0ZSBjb3VudCBieXRlcyBvZiBidWYgaW50byBmZC4KKyAqCisgKiBPbiBzdWNjZXNzLCByZXR1cm4gdGhlIG51bWJlciBvZiB3cml0dGVuIGJ5dGVzLCBpdCBjYW4gYmUgbG93ZXIgdGhhbiBjb3VudAorICogaW5jbHVkaW5nIDAuIE9uIGVycm9yLCBzZXQgZXJybm8gYW5kIHJldHVybiAtMS4KKyAqCisgKiBXaGVuIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsICh3cml0ZSgpIGZhaWxzIHdpdGggRUlOVFIpLCByZXRyeSB0aGUgc3lzY2FsbAorICogd2l0aG91dCBjYWxsaW5nIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIuICovCitQeV9zc2l6ZV90CitfUHlfd3JpdGVfbm9yYWlzZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworICAgIHJldHVybiBfUHlfd3JpdGVfaW1wbChmZCwgYnVmLCBjb3VudCwgMCk7Cit9CisKICNpZmRlZiBIQVZFX1JFQURMSU5LCiAKIC8qIFJlYWQgdmFsdWUgb2Ygc3ltYm9saWMgbGluay4gRW5jb2RlIHRoZSBwYXRoIHRvIHRoZSBsb2NhbGUgZW5jb2RpbmcsIGRlY29kZQpAQCAtOTA1LDcgKzEzNTQsNyBAQAogICAgIGludCByZXM7CiAgICAgc2l6ZV90IHIxOwogCi0gICAgY3BhdGggPSBfUHlfd2NoYXIyY2hhcihwYXRoLCBOVUxMKTsKKyAgICBjcGF0aCA9IFB5X0VuY29kZUxvY2FsZShwYXRoLCBOVUxMKTsKICAgICBpZiAoY3BhdGggPT0gTlVMTCkgewogICAgICAgICBlcnJubyA9IEVJTlZBTDsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtOTE5LDcgKzEzNjgsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGNidWZbcmVzXSA9ICdcMCc7IC8qIGJ1ZiB3aWxsIGJlIG51bGwgdGVybWluYXRlZCAqLwotICAgIHdidWYgPSBfUHlfY2hhcjJ3Y2hhcihjYnVmLCAmcjEpOworICAgIHdidWYgPSBQeV9EZWNvZGVMb2NhbGUoY2J1ZiwgJnIxKTsKICAgICBpZiAod2J1ZiA9PSBOVUxMKSB7CiAgICAgICAgIGVycm5vID0gRUlOVkFMOwogICAgICAgICByZXR1cm4gLTE7CkBAIC05NTAsNyArMTM5OSw3IEBACiAgICAgd2NoYXJfdCAqd3Jlc29sdmVkX3BhdGg7CiAgICAgY2hhciAqcmVzOwogICAgIHNpemVfdCByOwotICAgIGNwYXRoID0gX1B5X3djaGFyMmNoYXIocGF0aCwgTlVMTCk7CisgICAgY3BhdGggPSBQeV9FbmNvZGVMb2NhbGUocGF0aCwgTlVMTCk7CiAgICAgaWYgKGNwYXRoID09IE5VTEwpIHsKICAgICAgICAgZXJybm8gPSBFSU5WQUw7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtOTYwLDcgKzE0MDksNyBAQAogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB3cmVzb2x2ZWRfcGF0aCA9IF9QeV9jaGFyMndjaGFyKGNyZXNvbHZlZF9wYXRoLCAmcik7CisgICAgd3Jlc29sdmVkX3BhdGggPSBQeV9EZWNvZGVMb2NhbGUoY3Jlc29sdmVkX3BhdGgsICZyKTsKICAgICBpZiAod3Jlc29sdmVkX3BhdGggPT0gTlVMTCkgewogICAgICAgICBlcnJubyA9IEVJTlZBTDsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC05OTMsNyArMTQ0Miw3IEBACiAKICAgICBpZiAoZ2V0Y3dkKGZuYW1lLCBQeV9BUlJBWV9MRU5HVEgoZm5hbWUpKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB3bmFtZSA9IF9QeV9jaGFyMndjaGFyKGZuYW1lLCAmbGVuKTsKKyAgICB3bmFtZSA9IFB5X0RlY29kZUxvY2FsZShmbmFtZSwgJmxlbik7CiAgICAgaWYgKHduYW1lID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzaXplIDw9IGxlbikgewpAQCAtMTAyNSw3ICsxNDc0LDkgQEAKICAgICB9CiAKICNpZmRlZiBNU19XSU5ET1dTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGhhbmRsZSA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTEwMzUsNyArMTQ4Niw5IEBACiAgICAgZnR5cGUgPSBHZXRGaWxlVHlwZShoYW5kbGUpOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBmZCA9IGR1cChmZCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChmZCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwpAQCAtMTA0NSwxMyArMTQ5OCwxNyBAQAogICAgIC8qIENoYXJhY3RlciBmaWxlcyBsaWtlIGNvbnNvbGUgY2Fubm90IGJlIG1ha2Ugbm9uLWluaGVyaXRhYmxlICovCiAgICAgaWYgKGZ0eXBlICE9IEZJTEVfVFlQRV9DSEFSKSB7CiAgICAgICAgIGlmIChfUHlfc2V0X2luaGVyaXRhYmxlKGZkLCAwLCBOVUxMKSA8IDApIHsKKyAgICAgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICAgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICB9CiAjZWxpZiBkZWZpbmVkKEhBVkVfRkNOVExfSCkgJiYgZGVmaW5lZChGX0RVUEZEX0NMT0VYRUMpCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBmZCA9IGZjbnRsKGZkLCBGX0RVUEZEX0NMT0VYRUMsIDApOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoZmQgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKQEAgLTEwNjAsNyArMTUxNyw5IEBACiAKICNlbHNlCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBmZCA9IGR1cChmZCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChmZCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwpAQCAtMTA2OCwxMCArMTUyNywxNTIgQEAKICAgICB9CiAKICAgICBpZiAoX1B5X3NldF9pbmhlcml0YWJsZShmZCwgMCwgTlVMTCkgPCAwKSB7CisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogI2VuZGlmCiAgICAgcmV0dXJuIGZkOwogfQogCisjaWZuZGVmIE1TX1dJTkRPV1MKKy8qIEdldCB0aGUgYmxvY2tpbmcgbW9kZSBvZiB0aGUgZmlsZSBkZXNjcmlwdG9yLgorICAgUmV0dXJuIDAgaWYgdGhlIE9fTk9OQkxPQ0sgZmxhZyBpcyBzZXQsIDEgaWYgdGhlIGZsYWcgaXMgY2xlYXJlZCwKKyAgIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworaW50CitfUHlfZ2V0X2Jsb2NraW5nKGludCBmZCkKK3sKKyAgICBpbnQgZmxhZ3M7CisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIGZsYWdzID0gZmNudGwoZmQsIEZfR0VURkwsIDApOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgaWYgKGZsYWdzIDwgMCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gIShmbGFncyAmIE9fTk9OQkxPQ0spOworfQorCisvKiBTZXQgdGhlIGJsb2NraW5nIG1vZGUgb2YgdGhlIHNwZWNpZmllZCBmaWxlIGRlc2NyaXB0b3IuCisKKyAgIFNldCB0aGUgT19OT05CTE9DSyBmbGFnIGlmIGJsb2NraW5nIGlzIEZhbHNlLCBjbGVhciB0aGUgT19OT05CTE9DSyBmbGFnCisgICBvdGhlcndpc2UuCisKKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworaW50CitfUHlfc2V0X2Jsb2NraW5nKGludCBmZCwgaW50IGJsb2NraW5nKQoreworI2lmIGRlZmluZWQoSEFWRV9TWVNfSU9DVExfSCkgJiYgZGVmaW5lZChGSU9OQklPKQorICAgIGludCBhcmcgPSAhYmxvY2tpbmc7CisgICAgaWYgKGlvY3RsKGZkLCBGSU9OQklPLCAmYXJnKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisjZWxzZQorICAgIGludCBmbGFncywgcmVzOworCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIGZsYWdzID0gZmNudGwoZmQsIEZfR0VURkwsIDApOworICAgIGlmIChmbGFncyA+PSAwKSB7CisgICAgICAgIGlmIChibG9ja2luZykKKyAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MgJiAofk9fTk9OQkxPQ0spOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmbGFncyA9IGZsYWdzIHwgT19OT05CTE9DSzsKKworICAgICAgICByZXMgPSBmY250bChmZCwgRl9TRVRGTCwgZmxhZ3MpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlcyA9IC0xOworICAgIH0KKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorCisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisjZW5kaWYKKyAgICByZXR1cm4gMDsKKworZXJyb3I6CisgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgIHJldHVybiAtMTsKK30KKyNlbmRpZgorCisjaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmIF9NU0NfVkVSIDwgMTkwMAorLyogTGVnYWN5IGltcGxlbWVudGF0aW9uIG9mIF9QeVZlcmlmeV9mZCB3aGlsZSB0cmFuc2l0aW9uaW5nIHRvCisgKiBNU1ZDIDE0LjAuIFRoaXMgc2hvdWxkIGV2ZW50dWFsbHkgYmUgcmVtb3ZlZC4gKGlzc3VlMjM1MjQpCisgKi8KKworLyogTWljcm9zb2Z0IENSVCBpbiBWUzIwMDUgYW5kIGhpZ2hlciB3aWxsIHZlcmlmeSB0aGF0IGEgZmlsZWhhbmRsZSBpcworICogdmFsaWQgYW5kIHJhaXNlIGFuIGFzc2VydGlvbiBpZiBpdCBpc24ndC4KKyAqIE5vcm1hbGx5LCBhbiBpbnZhbGlkIGZkIGlzIGxpa2VseSB0byBiZSBhIEMgcHJvZ3JhbSBlcnJvciBhbmQgdGhlcmVmb3JlCisgKiBhbiBhc3NlcnRpb24gY2FuIGJlIHVzZWZ1bCwgYnV0IGl0IGRvZXMgY29udHJhZGljdCB0aGUgUE9TSVggc3RhbmRhcmQKKyAqIHdoaWNoIGZvciB3cml0ZSgyKSBzdGF0ZXM6CisgKiAgICAiT3RoZXJ3aXNlLCAtMSBzaGFsbCBiZSByZXR1cm5lZCBhbmQgZXJybm8gc2V0IHRvIGluZGljYXRlIHRoZSBlcnJvci4iCisgKiAgICAiW0VCQURGXSBUaGUgZmlsZGVzIGFyZ3VtZW50IGlzIG5vdCBhIHZhbGlkIGZpbGUgZGVzY3JpcHRvciBvcGVuIGZvcgorICogICAgIHdyaXRpbmcuIgorICogRnVydGhlcm1vcmUsIHB5dGhvbiBhbGxvd3MgdGhlIHVzZXIgdG8gZW50ZXIgYW55IG9sZCBpbnRlZ2VyCisgKiBhcyBhIGZkIGFuZCBzaG91bGQgbWVyZWx5IHJhaXNlIGEgcHl0aG9uIGV4Y2VwdGlvbiBvbiBlcnJvci4KKyAqIFRoZSBNaWNyb3NvZnQgQ1JUIGRvZXNuJ3QgcHJvdmlkZSBhbiBvZmZpY2lhbCB3YXkgdG8gY2hlY2sgZm9yIHRoZQorICogdmFsaWRpdHkgb2YgYSBmaWxlIGRlc2NyaXB0b3IsIGJ1dCB3ZSBjYW4gZW11bGF0ZSBpdHMgaW50ZXJuYWwgYmVoYXZpb3VyCisgKiBieSB1c2luZyB0aGUgZXhwb3J0ZWQgX19waW5mbyBkYXRhIG1lbWJlciBhbmQga25vd2xlZGdlIG9mIHRoZQorICogaW50ZXJuYWwgc3RydWN0dXJlcyBpbnZvbHZlZC4KKyAqIFRoZSBzdHJ1Y3R1cmVzIGJlbG93IG11c3QgYmUgdXBkYXRlZCBmb3IgZWFjaCB2ZXJzaW9uIG9mIHZpc3VhbCBzdHVkaW8KKyAqIGFjY29yZGluZyB0byB0aGUgZmlsZSBpbnRlcm5hbC5oIGluIHRoZSBDUlQgc291cmNlLCB1bnRpbCBNUyBjb21lcworICogdXAgd2l0aCBhIGxlc3MgaGFja3kgd2F5IHRvIGRvIHRoaXMuCisgKiAoYWxsIG9mIHRoaXMgaXMgdG8gYXZvaWQgZ2xvYmFsbHkgbW9kaWZ5aW5nIHRoZSBDUlQgYmVoYXZpb3VyIHVzaW5nCisgKiBfc2V0X2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIoKSBhbmQgX0NydFNldFJlcG9ydE1vZGUoKSkKKyAqLworLyogVGhlIGFjdHVhbCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaXMgZGV0ZXJtaW5lZCBhdCBydW50aW1lLgorICogT25seSB0aGUgZmlyc3QgaXRlbXMgbXVzdCBiZSBwcmVzZW50LgorICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50cHRyX3Qgb3NmaG5kOworICAgIGNoYXIgb3NmaWxlOworfSBteV9pb2luZm87CisKK2V4dGVybiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY2hhciAqIF9fcGlvaW5mb1tdOworI2RlZmluZSBJT0lORk9fTDJFIDUKKyNkZWZpbmUgSU9JTkZPX0FSUkFZUyA2NAorI2RlZmluZSBJT0lORk9fQVJSQVlfRUxUUyAgICgxIDw8IElPSU5GT19MMkUpCisjZGVmaW5lIF9OSEFORExFXyAgICAgICAgICAgKElPSU5GT19BUlJBWVMgKiBJT0lORk9fQVJSQVlfRUxUUykKKyNkZWZpbmUgRk9QRU4gMHgwMQorI2RlZmluZSBfTk9fQ09OU09MRV9GSUxFTk8gKGludHB0cl90KS0yCisKKy8qIFRoaXMgZnVuY3Rpb24gZW11bGF0ZXMgd2hhdCB0aGUgd2luZG93cyBDUlQgZG9lcyB0byB2YWxpZGF0ZSBmaWxlIGhhbmRsZXMgKi8KK2ludAorX1B5VmVyaWZ5X2ZkKGludCBmZCkKK3sKKyAgICBjb25zdCBpbnQgaTEgPSBmZCA+PiBJT0lORk9fTDJFOworICAgIGNvbnN0IGludCBpMiA9IGZkICYgKCgxIDw8IElPSU5GT19MMkUpIC0gMSk7CisKKyAgICBzdGF0aWMgc2l6ZV90IHNpemVvZl9pb2luZm8gPSAwOworCisgICAgLyogRGV0ZXJtaW5lIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgaW9pbmZvIHN0cnVjdHVyZSwKKyAgICAgKiBhcyB1c2VkIGJ5IHRoZSBDUlQgbG9hZGVkIGluIG1lbW9yeQorICAgICAqLworICAgIGlmIChzaXplb2ZfaW9pbmZvID09IDAgJiYgX19waW9pbmZvWzBdICE9IE5VTEwpIHsKKyAgICAgICAgc2l6ZW9mX2lvaW5mbyA9IF9tc2l6ZShfX3Bpb2luZm9bMF0pIC8gSU9JTkZPX0FSUkFZX0VMVFM7CisgICAgfQorICAgIGlmIChzaXplb2ZfaW9pbmZvID09IDApIHsKKyAgICAgICAgLyogVGhpcyBzaG91bGQgbm90IGhhcHBlbi4uLiAqLworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgLyogU2VlIHRoYXQgaXQgaXNuJ3QgYSBzcGVjaWFsIENMRUFSIGZpbGVubyAqLworICAgIGlmIChmZCAhPSBfTk9fQ09OU09MRV9GSUxFTk8pIHsKKyAgICAgICAgLyogTWljcm9zb2Z0IENSVCB3b3VsZCBjaGVjayB0aGF0IDA8PWZkPF9uaGFuZGxlIGJ1dCB3ZSBjYW4ndCBkbyB0aGF0LiAgSW5zdGVhZAorICAgICAgICAgKiB3ZSBjaGVjayBwb2ludGVyIHZhbGlkaXR5IGFuZCBvdGhlciBpbmZvCisgICAgICAgICAqLworICAgICAgICBpZiAoMCA8PSBpMSAmJiBpMSA8IElPSU5GT19BUlJBWVMgJiYgX19waW9pbmZvW2kxXSAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBmaW5hbGx5LCBjaGVjayB0aGF0IHRoZSBmaWxlIGlzIG9wZW4gKi8KKyAgICAgICAgICAgIG15X2lvaW5mbyogaW5mbyA9IChteV9pb2luZm8qKShfX3Bpb2luZm9baTFdICsgaTIgKiBzaXplb2ZfaW9pbmZvKTsKKyAgICAgICAgICAgIGlmIChpbmZvLT5vc2ZpbGUgJiBGT1BFTikgeworICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICBmYWlsOgorICAgIGVycm5vID0gRUJBREY7CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgX01TQ19WRVIgPCAxOTAwICovCmRpZmYgLS1naXQgYS9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYyBiL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jCmluZGV4IGUzYTgxNDkuLjA1NmJiNzYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jCisrKyBiL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jCkBAIC04NDYsNiArODQ2LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBmb3JtYXQgc3BlY2lmaWVyICdjJyIpOwogICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICB9CisgICAgICAgIC8qIGVycm9yIHRvIHJlcXVlc3QgYWx0ZXJuYXRlIGZvcm1hdCAqLworICAgICAgICBpZiAoZm9ybWF0LT5hbHRlcm5hdGUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbHRlcm5hdGUgZm9ybSAoIykgbm90IGFsbG93ZWQgd2l0aCBpbnRlZ2VyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgZm9ybWF0IHNwZWNpZmllciAnYyciKTsKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgfQogCiAgICAgICAgIC8qIHRha2VuIGZyb20gdW5pY29kZW9iamVjdC5jIGZvcm1hdGNoYXIoKSAqLwogICAgICAgICAvKiBJbnRlZ2VyIGlucHV0IHRydW5jYXRlZCB0byBhIGNoYXJhY3RlciAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2Zyb3plbi5jIGIvUHl0aG9uL2Zyb3plbi5jCmluZGV4IDliYzY2MmIuLjY3NmYzOTUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9mcm96ZW4uYworKysgYi9QeXRob24vZnJvemVuLmMKQEAgLTMsNiArMyw3IEBACiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJpbXBvcnRsaWIuaCIKKyNpbmNsdWRlICJpbXBvcnRsaWJfZXh0ZXJuYWwuaCIKIAogLyogSW4gb3JkZXIgdG8gdGVzdCB0aGUgc3VwcG9ydCBmb3IgZnJvemVuIG1vZHVsZXMsIGJ5IGRlZmF1bHQgd2UKICAgIGRlZmluZSBhIHNpbmdsZSBmcm96ZW4gbW9kdWxlLCBfX2hlbGxvX18uICBMb2FkaW5nIGl0IHdpbGwgcHJpbnQKQEAgLTMxLDYgKzMyLDggQEAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgX2Zyb3plbiBfUHlJbXBvcnRfRnJvemVuTW9kdWxlc1tdID0gewogICAgIC8qIGltcG9ydGxpYiAqLwogICAgIHsiX2Zyb3plbl9pbXBvcnRsaWIiLCBfUHlfTV9faW1wb3J0bGliLCAoaW50KXNpemVvZihfUHlfTV9faW1wb3J0bGliKX0sCisgICAgeyJfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbCIsIF9QeV9NX19pbXBvcnRsaWJfZXh0ZXJuYWwsCisgICAgICAgIChpbnQpc2l6ZW9mKF9QeV9NX19pbXBvcnRsaWJfZXh0ZXJuYWwpfSwKICAgICAvKiBUZXN0IG1vZHVsZSAqLwogICAgIHsiX19oZWxsb19fIiwgTV9fX2hlbGxvX18sIFNJWkV9LAogICAgIC8qIFRlc3QgcGFja2FnZSAobmVnYXRpdmUgc2l6ZSBpbmRpY2F0ZXMgcGFja2FnZS1uZXNzKSAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2Zyb3plbm1haW4uYyBiL1B5dGhvbi9mcm96ZW5tYWluLmMKaW5kZXggYjA1Yzk0YS4uZGU4YmQzNSAxMDA2NDQKLS0tIGEvUHl0aG9uL2Zyb3plbm1haW4uYworKysgYi9QeXRob24vZnJvemVubWFpbi5jCkBAIC01NCw3ICs1NCw3IEBACiAKICAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CiAgICAgZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykgewotICAgICAgICBhcmd2X2NvcHlbaV0gPSBfUHlfY2hhcjJ3Y2hhcihhcmd2W2ldLCBOVUxMKTsKKyAgICAgICAgYXJndl9jb3B5W2ldID0gUHlfRGVjb2RlTG9jYWxlKGFyZ3ZbaV0sIE5VTEwpOwogICAgICAgICBhcmd2X2NvcHkyW2ldID0gYXJndl9jb3B5W2ldOwogICAgICAgICBpZiAoIWFyZ3ZfY29weVtpXSkgewogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJVbmFibGUgdG8gZGVjb2RlIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnQgIyVpXG4iLApkaWZmIC0tZ2l0IGEvUHl0aG9uL2Z1dHVyZS5jIGIvUHl0aG9uL2Z1dHVyZS5jCmluZGV4IDgxZWFiNTQuLjE2M2Y4N2YgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9mdXR1cmUuYworKysgYi9QeXRob24vZnV0dXJlLmMKQEAgLTQwLDYgKzQwLDggQEAKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcChmZWF0dXJlLCBGVVRVUkVfQkFSUllfQVNfQkRGTCkgPT0gMCkgewogICAgICAgICAgICAgZmYtPmZmX2ZlYXR1cmVzIHw9IENPX0ZVVFVSRV9CQVJSWV9BU19CREZMOworICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcChmZWF0dXJlLCBGVVRVUkVfR0VORVJBVE9SX1NUT1ApID09IDApIHsKKyAgICAgICAgICAgIGZmLT5mZl9mZWF0dXJlcyB8PSBDT19GVVRVUkVfR0VORVJBVE9SX1NUT1A7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGZlYXR1cmUsICJicmFjZXMiKSA9PSAwKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3ludGF4RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBhIGNoYW5jZSIpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2dldGFyZ3MuYyBiL1B5dGhvbi9nZXRhcmdzLmMKaW5kZXggNjkwMmQxMy4uYzM2NWZjMiAxMDA2NDQKLS0tIGEvUHl0aG9uL2dldGFyZ3MuYworKysgYi9QeXRob24vZ2V0YXJncy5jCkBAIC04NzIsMTAgKzg3MiwxMCBAQAogICAgICAgICAgICAgU1RPUkVfU0laRShjb3VudCk7CiAgICAgICAgICAgICBmb3JtYXQrKzsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChzdHJsZW4oKnApICE9IGNvdW50KQotICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAotICAgICAgICAgICAgICAgICAgICAiYnl0ZXMgd2l0aG91dCBudWxsIGJ5dGVzIiwKLSAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOworICAgICAgICAgICAgaWYgKHN0cmxlbigqcCkgIT0gKHNpemVfdCljb3VudCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBieXRlIik7CisgICAgICAgICAgICAgICAgUkVUVVJOX0VSUl9PQ0NVUlJFRDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CkBAIC05NDgsMTYgKzk0OCwxNSBAQAogICAgICAgICAgICAgICAgIGlmIChzYXJnID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKENPTlZfVU5JQ09ERSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOworICAgICAgICAgICAgICAgIGlmIChzdHJsZW4oc2FyZykgIT0gKHNpemVfdClsZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOworICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAqcCA9IHNhcmc7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoYyA9PSAneicgPyAic3RyIG9yIE5vbmUiIDogInN0ciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwotICAgICAgICAgICAgaWYgKCpwICE9IE5VTEwgJiYgc2FyZyAhPSBOVUxMICYmIChQeV9zc2l6ZV90KSBzdHJsZW4oKnApICE9IGxlbikKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKLSAgICAgICAgICAgICAgICAgICAgYyA9PSAneicgPyAic3RyIHdpdGhvdXQgbnVsbCBjaGFyYWN0ZXJzIG9yIE5vbmUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInN0ciB3aXRob3V0IG51bGwgY2hhcmFjdGVycyIsCi0gICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CkBAIC05OTUsMTAgKzk5NCwxMCBAQAogICAgICAgICAgICAgICAgICpwID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUoYXJnLCAmbGVuKTsKICAgICAgICAgICAgICAgICBpZiAoKnAgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0VSUl9PQ0NVUlJFRDsKLSAgICAgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9zdHJsZW4oKnApICE9IGxlbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCi0gICAgICAgICAgICAgICAgICAgICAgICAic3RyIHdpdGhvdXQgbnVsbCBjaGFyYWN0ZXJzIG9yIE5vbmUiLAotICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOworICAgICAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX3N0cmxlbigqcCkgIT0gKHNpemVfdClsZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOworICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKGMgPT0gJ1onID8gInN0ciBvciBOb25lIiA6ICJzdHIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKQEAgLTEyNDYsNyArMTI0NSw4IEBACiAgICAgICAgICAgIHN1cHBvcnRzIGl0IGRpcmVjdGx5LiAqLwogICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgKFB5X2J1ZmZlciopcCwgUHlCVUZfV1JJVEFCTEUpIDwgMCkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCJyZWFkLXdyaXRlIGJ1ZmZlciIsIGFyZywgbXNnYnVmLCBidWZzaXplKTsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCJyZWFkLXdyaXRlIGJ5dGVzLWxpa2Ugb2JqZWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIVB5QnVmZmVyX0lzQ29udGlndW91cygoUHlfYnVmZmVyKilwLCAnQycpKSB7CiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKChQeV9idWZmZXIqKXApOwpAQCAtMTI4NCw3ICsxMjg0LDcgQEAKICAgICAqZXJybXNnID0gTlVMTDsKICAgICAqcCA9IE5VTEw7CiAgICAgaWYgKHBiICE9IE5VTEwgJiYgcGItPmJmX3JlbGVhc2VidWZmZXIgIT0gTlVMTCkgewotICAgICAgICAqZXJybXNnID0gInJlYWQtb25seSBwaW5uZWQgYnVmZmVyIjsKKyAgICAgICAgKmVycm1zZyA9ICJyZWFkLW9ubHkgYnl0ZXMtbGlrZSBvYmplY3QiOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCkBAIC0xMzAwLDcgKzEzMDAsNyBAQAogZ2V0YnVmZmVyKFB5T2JqZWN0ICphcmcsIFB5X2J1ZmZlciAqdmlldywgY2hhciAqKmVycm1zZykKIHsKICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgdmlldywgUHlCVUZfU0lNUExFKSAhPSAwKSB7Ci0gICAgICAgICplcnJtc2cgPSAiYnl0ZXMgb3IgYnVmZmVyIjsKKyAgICAgICAgKmVycm1zZyA9ICJieXRlcy1saWtlIG9iamVjdCI7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKCFQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXModmlldywgJ0MnKSkgewpkaWZmIC0tZ2l0IGEvUHl0aG9uL2dyYW1pbml0LmMgYi9QeXRob24vZ3JhbWluaXQuYwppbmRleCBlMDQ5OTliLi44MjEyYjJhIDEwMDY0NAotLS0gYS9QeXRob24vZ3JhbWluaXQuYworKysgYi9QeXRob24vZ3JhbWluaXQuYwpAQCAtOTIsMzkzICs5Miw0MDYgQEAKIHN0YXRpYyBhcmMgYXJjc181XzBbMV0gPSB7CiAgICAgezE2LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNV8xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzVfMVszXSA9IHsKICAgICB7MTgsIDJ9LAogICAgIHsxOSwgMn0sCisgICAgezIwLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNV8yWzFdID0gewogICAgIHswLCAyfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzVbM10gPSB7CiAgICAgezEsIGFyY3NfNV8wfSwKLSAgICB7MiwgYXJjc181XzF9LAorICAgIHszLCBhcmNzXzVfMX0sCiAgICAgezEsIGFyY3NfNV8yfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNl8wWzFdID0gewotICAgIHsyMCwgMX0sCisgICAgezIxLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNl8xWzFdID0gewotICAgIHsyMSwgMn0sCisgICAgezE5LCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNl8yWzFdID0gewotICAgIHsyMiwgM30sCisgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182XzNbMl0gPSB7Ci0gICAgezIzLCA0fSwKLSAgICB7MjUsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182XzRbMV0gPSB7Ci0gICAgezI0LCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNl81WzFdID0gewotICAgIHsyNiwgN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzZfNlsxXSA9IHsKLSAgICB7MjUsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182XzdbMV0gPSB7Ci0gICAgezAsIDd9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNls4XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNlszXSA9IHsKICAgICB7MSwgYXJjc182XzB9LAogICAgIHsxLCBhcmNzXzZfMX0sCiAgICAgezEsIGFyY3NfNl8yfSwKLSAgICB7MiwgYXJjc182XzN9LAotICAgIHsxLCBhcmNzXzZfNH0sCi0gICAgezEsIGFyY3NfNl81fSwKLSAgICB7MSwgYXJjc182XzZ9LAotICAgIHsxLCBhcmNzXzZfN30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzdfMFsxXSA9IHsKLSAgICB7MTMsIDF9LAorICAgIHsyMiwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzdfMVsyXSA9IHsKLSAgICB7MjcsIDJ9LAotICAgIHsxNSwgM30sCitzdGF0aWMgYXJjIGFyY3NfN18xWzFdID0geworICAgIHsyMywgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzdfMlsxXSA9IHsKLSAgICB7MTUsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183XzNbMV0gPSB7Ci0gICAgezAsIDN9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfN1s0XSA9IHsKLSAgICB7MSwgYXJjc183XzB9LAotICAgIHsyLCBhcmNzXzdfMX0sCi0gICAgezEsIGFyY3NfN18yfSwKLSAgICB7MSwgYXJjc183XzN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzBbM10gPSB7Ci0gICAgezI4LCAxfSwKLSAgICB7MzEsIDJ9LAotICAgIHszMiwgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfMVszXSA9IHsKLSAgICB7MjksIDR9LAotICAgIHszMCwgNX0sCi0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzJbM10gPSB7Ci0gICAgezI4LCA2fSwKLSAgICB7MzAsIDd9LAotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF8zWzFdID0gewotICAgIHsyOCwgOH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfNFsxXSA9IHsKLSAgICB7MjQsIDl9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzVbNF0gPSB7Ci0gICAgezI4LCAxMH0sCi0gICAgezMxLCAxMX0sCi0gICAgezMyLCAzfSwKLSAgICB7MCwgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfNlsyXSA9IHsKLSAgICB7MzAsIDd9LAotICAgIHswLCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF83WzJdID0gewotICAgIHsyOCwgMTJ9LAotICAgIHszMiwgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfOFsxXSA9IHsKLSAgICB7MCwgOH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfOVsyXSA9IHsKLSAgICB7MzAsIDV9LAotICAgIHswLCA5fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF8xMFszXSA9IHsKLSAgICB7MzAsIDV9LAotICAgIHsyOSwgNH0sCi0gICAgezAsIDEwfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF8xMVszXSA9IHsKLSAgICB7MjgsIDEzfSwKLSAgICB7MzAsIDE0fSwKLSAgICB7MCwgMTF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzEyWzNdID0gewotICAgIHszMCwgN30sCi0gICAgezI5LCAxNX0sCi0gICAgezAsIDEyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF8xM1syXSA9IHsKLSAgICB7MzAsIDE0fSwKLSAgICB7MCwgMTN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzE0WzJdID0gewotICAgIHsyOCwgMTZ9LAotICAgIHszMiwgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfMTVbMV0gPSB7Ci0gICAgezI0LCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF8xNlszXSA9IHsKLSAgICB7MzAsIDE0fSwKLSAgICB7MjksIDE3fSwKLSAgICB7MCwgMTZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzE3WzFdID0gewotICAgIHsyNCwgMTN9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfOFsxOF0gPSB7Ci0gICAgezMsIGFyY3NfOF8wfSwKLSAgICB7MywgYXJjc184XzF9LAotICAgIHszLCBhcmNzXzhfMn0sCi0gICAgezEsIGFyY3NfOF8zfSwKLSAgICB7MSwgYXJjc184XzR9LAotICAgIHs0LCBhcmNzXzhfNX0sCi0gICAgezIsIGFyY3NfOF82fSwKLSAgICB7MiwgYXJjc184Xzd9LAotICAgIHsxLCBhcmNzXzhfOH0sCi0gICAgezIsIGFyY3NfOF85fSwKLSAgICB7MywgYXJjc184XzEwfSwKLSAgICB7MywgYXJjc184XzExfSwKLSAgICB7MywgYXJjc184XzEyfSwKLSAgICB7MiwgYXJjc184XzEzfSwKLSAgICB7MiwgYXJjc184XzE0fSwKLSAgICB7MSwgYXJjc184XzE1fSwKLSAgICB7MywgYXJjc184XzE2fSwKLSAgICB7MSwgYXJjc184XzE3fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOV8wWzFdID0gewotICAgIHsyMSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzlfMVsyXSA9IHsKLSAgICB7MjUsIDJ9LAotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOV8yWzFdID0gewogICAgIHsyNCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzlfM1sxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183XzNbMl0gPSB7CisgICAgezI1LCA0fSwKKyAgICB7MjcsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183XzRbMV0gPSB7CisgICAgezI2LCA2fSwKK307CitzdGF0aWMgYXJjIGFyY3NfN181WzFdID0geworICAgIHsyOCwgN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzdfNlsxXSA9IHsKKyAgICB7MjcsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183XzdbMV0gPSB7CisgICAgezAsIDd9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfN1s4XSA9IHsKKyAgICB7MSwgYXJjc183XzB9LAorICAgIHsxLCBhcmNzXzdfMX0sCisgICAgezEsIGFyY3NfN18yfSwKKyAgICB7MiwgYXJjc183XzN9LAorICAgIHsxLCBhcmNzXzdfNH0sCisgICAgezEsIGFyY3NfN181fSwKKyAgICB7MSwgYXJjc183XzZ9LAorICAgIHsxLCBhcmNzXzdfN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzhfMFsxXSA9IHsKKyAgICB7MTMsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184XzFbMl0gPSB7CisgICAgezI5LCAyfSwKKyAgICB7MTUsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184XzJbMV0gPSB7CisgICAgezE1LCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfOF8zWzFdID0gewogICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzlbNF0gPSB7Ci0gICAgezEsIGFyY3NfOV8wfSwKLSAgICB7MiwgYXJjc185XzF9LAotICAgIHsxLCBhcmNzXzlfMn0sCi0gICAgezEsIGFyY3NfOV8zfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfOFs0XSA9IHsKKyAgICB7MSwgYXJjc184XzB9LAorICAgIHsyLCBhcmNzXzhfMX0sCisgICAgezEsIGFyY3NfOF8yfSwKKyAgICB7MSwgYXJjc184XzN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF8wWzNdID0gewotICAgIHszNCwgMX0sCi0gICAgezMxLCAyfSwKLSAgICB7MzIsIDN9LAorc3RhdGljIGFyYyBhcmNzXzlfMFszXSA9IHsKKyAgICB7MzAsIDF9LAorICAgIHszMywgMn0sCisgICAgezM0LCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfMVszXSA9IHsKLSAgICB7MjksIDR9LAotICAgIHszMCwgNX0sCitzdGF0aWMgYXJjIGFyY3NfOV8xWzNdID0geworICAgIHszMSwgNH0sCisgICAgezMyLCA1fSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzJbM10gPSB7Ci0gICAgezM0LCA2fSwKLSAgICB7MzAsIDd9LAorc3RhdGljIGFyYyBhcmNzXzlfMlszXSA9IHsKKyAgICB7MzAsIDZ9LAorICAgIHszMiwgN30sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF8zWzFdID0gewotICAgIHszNCwgOH0sCitzdGF0aWMgYXJjIGFyY3NfOV8zWzFdID0geworICAgIHszMCwgOH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzRbMV0gPSB7Ci0gICAgezI0LCA5fSwKK3N0YXRpYyBhcmMgYXJjc185XzRbMV0gPSB7CisgICAgezI2LCA5fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfNVs0XSA9IHsKLSAgICB7MzQsIDEwfSwKLSAgICB7MzEsIDExfSwKLSAgICB7MzIsIDN9LAorc3RhdGljIGFyYyBhcmNzXzlfNVs0XSA9IHsKKyAgICB7MzAsIDEwfSwKKyAgICB7MzMsIDExfSwKKyAgICB7MzQsIDN9LAogICAgIHswLCA1fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfNlsyXSA9IHsKLSAgICB7MzAsIDd9LAorc3RhdGljIGFyYyBhcmNzXzlfNlsyXSA9IHsKKyAgICB7MzIsIDd9LAogICAgIHswLCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfN1syXSA9IHsKLSAgICB7MzQsIDEyfSwKLSAgICB7MzIsIDN9LAorc3RhdGljIGFyYyBhcmNzXzlfN1syXSA9IHsKKyAgICB7MzAsIDEyfSwKKyAgICB7MzQsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF84WzFdID0geworc3RhdGljIGFyYyBhcmNzXzlfOFsxXSA9IHsKICAgICB7MCwgOH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzlbMl0gPSB7Ci0gICAgezMwLCA1fSwKK3N0YXRpYyBhcmMgYXJjc185XzlbMl0gPSB7CisgICAgezMyLCA1fSwKICAgICB7MCwgOX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzEwWzNdID0gewotICAgIHszMCwgNX0sCi0gICAgezI5LCA0fSwKK3N0YXRpYyBhcmMgYXJjc185XzEwWzNdID0geworICAgIHszMiwgNX0sCisgICAgezMxLCA0fSwKICAgICB7MCwgMTB9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF8xMVszXSA9IHsKLSAgICB7MzQsIDEzfSwKLSAgICB7MzAsIDE0fSwKK3N0YXRpYyBhcmMgYXJjc185XzExWzNdID0geworICAgIHszMCwgMTN9LAorICAgIHszMiwgMTR9LAogICAgIHswLCAxMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzEyWzNdID0gewotICAgIHszMCwgN30sCi0gICAgezI5LCAxNX0sCitzdGF0aWMgYXJjIGFyY3NfOV8xMlszXSA9IHsKKyAgICB7MzIsIDd9LAorICAgIHszMSwgMTV9LAogICAgIHswLCAxMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzEzWzJdID0gewotICAgIHszMCwgMTR9LAorc3RhdGljIGFyYyBhcmNzXzlfMTNbMl0gPSB7CisgICAgezMyLCAxNH0sCiAgICAgezAsIDEzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfMTRbMl0gPSB7Ci0gICAgezM0LCAxNn0sCi0gICAgezMyLCAzfSwKK3N0YXRpYyBhcmMgYXJjc185XzE0WzJdID0geworICAgIHszMCwgMTZ9LAorICAgIHszNCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzE1WzFdID0gewotICAgIHsyNCwgNn0sCitzdGF0aWMgYXJjIGFyY3NfOV8xNVsxXSA9IHsKKyAgICB7MjYsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF8xNlszXSA9IHsKLSAgICB7MzAsIDE0fSwKLSAgICB7MjksIDE3fSwKK3N0YXRpYyBhcmMgYXJjc185XzE2WzNdID0geworICAgIHszMiwgMTR9LAorICAgIHszMSwgMTd9LAogICAgIHswLCAxNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzE3WzFdID0gewotICAgIHsyNCwgMTN9LAorc3RhdGljIGFyYyBhcmNzXzlfMTdbMV0gPSB7CisgICAgezI2LCAxM30sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18xMFsxOF0gPSB7Ci0gICAgezMsIGFyY3NfMTBfMH0sCi0gICAgezMsIGFyY3NfMTBfMX0sCi0gICAgezMsIGFyY3NfMTBfMn0sCi0gICAgezEsIGFyY3NfMTBfM30sCi0gICAgezEsIGFyY3NfMTBfNH0sCi0gICAgezQsIGFyY3NfMTBfNX0sCi0gICAgezIsIGFyY3NfMTBfNn0sCi0gICAgezIsIGFyY3NfMTBfN30sCi0gICAgezEsIGFyY3NfMTBfOH0sCi0gICAgezIsIGFyY3NfMTBfOX0sCi0gICAgezMsIGFyY3NfMTBfMTB9LAotICAgIHszLCBhcmNzXzEwXzExfSwKLSAgICB7MywgYXJjc18xMF8xMn0sCi0gICAgezIsIGFyY3NfMTBfMTN9LAotICAgIHsyLCBhcmNzXzEwXzE0fSwKLSAgICB7MSwgYXJjc18xMF8xNX0sCi0gICAgezMsIGFyY3NfMTBfMTZ9LAotICAgIHsxLCBhcmNzXzEwXzE3fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfOVsxOF0gPSB7CisgICAgezMsIGFyY3NfOV8wfSwKKyAgICB7MywgYXJjc185XzF9LAorICAgIHszLCBhcmNzXzlfMn0sCisgICAgezEsIGFyY3NfOV8zfSwKKyAgICB7MSwgYXJjc185XzR9LAorICAgIHs0LCBhcmNzXzlfNX0sCisgICAgezIsIGFyY3NfOV82fSwKKyAgICB7MiwgYXJjc185Xzd9LAorICAgIHsxLCBhcmNzXzlfOH0sCisgICAgezIsIGFyY3NfOV85fSwKKyAgICB7MywgYXJjc185XzEwfSwKKyAgICB7MywgYXJjc185XzExfSwKKyAgICB7MywgYXJjc185XzEyfSwKKyAgICB7MiwgYXJjc185XzEzfSwKKyAgICB7MiwgYXJjc185XzE0fSwKKyAgICB7MSwgYXJjc185XzE1fSwKKyAgICB7MywgYXJjc185XzE2fSwKKyAgICB7MSwgYXJjc185XzE3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTFfMFsxXSA9IHsKLSAgICB7MjEsIDF9LAorc3RhdGljIGFyYyBhcmNzXzEwXzBbMV0gPSB7CisgICAgezIzLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTFfMVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xMF8xWzJdID0geworICAgIHsyNywgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTFbMl0gPSB7Ci0gICAgezEsIGFyY3NfMTFfMH0sCi0gICAgezEsIGFyY3NfMTFfMX0sCitzdGF0aWMgYXJjIGFyY3NfMTBfMlsxXSA9IHsKKyAgICB7MjYsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMl8wWzJdID0gewotICAgIHszLCAxfSwKLSAgICB7NCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfMTBfM1sxXSA9IHsKKyAgICB7MCwgM30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18xMFs0XSA9IHsKKyAgICB7MSwgYXJjc18xMF8wfSwKKyAgICB7MiwgYXJjc18xMF8xfSwKKyAgICB7MSwgYXJjc18xMF8yfSwKKyAgICB7MSwgYXJjc18xMF8zfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTFfMFszXSA9IHsKKyAgICB7MzYsIDF9LAorICAgIHszMywgMn0sCisgICAgezM0LCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTFfMVszXSA9IHsKKyAgICB7MzEsIDR9LAorICAgIHszMiwgNX0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8yWzNdID0geworICAgIHszNiwgNn0sCisgICAgezMyLCA3fSwKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzNbMV0gPSB7CisgICAgezM2LCA4fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTFfNFsxXSA9IHsKKyAgICB7MjYsIDl9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV81WzRdID0geworICAgIHszNiwgMTB9LAorICAgIHszMywgMTF9LAorICAgIHszNCwgM30sCisgICAgezAsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV82WzJdID0geworICAgIHszMiwgN30sCisgICAgezAsIDZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV83WzJdID0geworICAgIHszNiwgMTJ9LAorICAgIHszNCwgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzhbMV0gPSB7CisgICAgezAsIDh9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV85WzJdID0geworICAgIHszMiwgNX0sCisgICAgezAsIDl9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xMFszXSA9IHsKKyAgICB7MzIsIDV9LAorICAgIHszMSwgNH0sCisgICAgezAsIDEwfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTFfMTFbM10gPSB7CisgICAgezM2LCAxM30sCisgICAgezMyLCAxNH0sCisgICAgezAsIDExfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTFfMTJbM10gPSB7CisgICAgezMyLCA3fSwKKyAgICB7MzEsIDE1fSwKKyAgICB7MCwgMTJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xM1syXSA9IHsKKyAgICB7MzIsIDE0fSwKKyAgICB7MCwgMTN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xNFsyXSA9IHsKKyAgICB7MzYsIDE2fSwKKyAgICB7MzQsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xNVsxXSA9IHsKKyAgICB7MjYsIDZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xNlszXSA9IHsKKyAgICB7MzIsIDE0fSwKKyAgICB7MzEsIDE3fSwKKyAgICB7MCwgMTZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xN1sxXSA9IHsKKyAgICB7MjYsIDEzfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzExWzE4XSA9IHsKKyAgICB7MywgYXJjc18xMV8wfSwKKyAgICB7MywgYXJjc18xMV8xfSwKKyAgICB7MywgYXJjc18xMV8yfSwKKyAgICB7MSwgYXJjc18xMV8zfSwKKyAgICB7MSwgYXJjc18xMV80fSwKKyAgICB7NCwgYXJjc18xMV81fSwKKyAgICB7MiwgYXJjc18xMV82fSwKKyAgICB7MiwgYXJjc18xMV83fSwKKyAgICB7MSwgYXJjc18xMV84fSwKKyAgICB7MiwgYXJjc18xMV85fSwKKyAgICB7MywgYXJjc18xMV8xMH0sCisgICAgezMsIGFyY3NfMTFfMTF9LAorICAgIHszLCBhcmNzXzExXzEyfSwKKyAgICB7MiwgYXJjc18xMV8xM30sCisgICAgezIsIGFyY3NfMTFfMTR9LAorICAgIHsxLCBhcmNzXzExXzE1fSwKKyAgICB7MywgYXJjc18xMV8xNn0sCisgICAgezEsIGFyY3NfMTFfMTd9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMl8wWzFdID0geworICAgIHsyMywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzEyXzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTJbMl0gPSB7Ci0gICAgezIsIGFyY3NfMTJfMH0sCisgICAgezEsIGFyY3NfMTJfMH0sCiAgICAgezEsIGFyY3NfMTJfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEzXzBbMV0gPSB7Ci0gICAgezM1LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18xM18wWzJdID0geworICAgIHszLCAxfSwKKyAgICB7NCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEzXzFbMl0gPSB7Ci0gICAgezM2LCAyfSwKK3N0YXRpYyBhcmMgYXJjc18xM18xWzFdID0geworICAgIHswLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzEzWzJdID0geworICAgIHsyLCBhcmNzXzEzXzB9LAorICAgIHsxLCBhcmNzXzEzXzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xNF8wWzFdID0geworICAgIHszNywgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE0XzFbMl0gPSB7CisgICAgezM4LCAyfSwKICAgICB7MiwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEzXzJbMl0gPSB7Ci0gICAgezM1LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18xNF8yWzJdID0geworICAgIHszNywgMX0sCiAgICAgezIsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xM18zWzFdID0geworc3RhdGljIGFyYyBhcmNzXzE0XzNbMV0gPSB7CiAgICAgezAsIDN9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTNbNF0gPSB7Ci0gICAgezEsIGFyY3NfMTNfMH0sCi0gICAgezIsIGFyY3NfMTNfMX0sCi0gICAgezIsIGFyY3NfMTNfMn0sCi0gICAgezEsIGFyY3NfMTNfM30sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzE0WzRdID0geworICAgIHsxLCBhcmNzXzE0XzB9LAorICAgIHsyLCBhcmNzXzE0XzF9LAorICAgIHsyLCBhcmNzXzE0XzJ9LAorICAgIHsxLCBhcmNzXzE0XzN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xNF8wWzhdID0gewotICAgIHszNywgMX0sCi0gICAgezM4LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18xNV8wWzhdID0gewogICAgIHszOSwgMX0sCiAgICAgezQwLCAxfSwKICAgICB7NDEsIDF9LAogICAgIHs0MiwgMX0sCiAgICAgezQzLCAxfSwKICAgICB7NDQsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18xNF8xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzE0WzJdID0gewotICAgIHs4LCBhcmNzXzE0XzB9LAotICAgIHsxLCBhcmNzXzE0XzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18xNV8wWzFdID0gewogICAgIHs0NSwgMX0sCisgICAgezQ2LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTVfMVszXSA9IHsKLSAgICB7NDYsIDJ9LAotICAgIHsyOSwgM30sCitzdGF0aWMgYXJjIGFyY3NfMTVfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE1XzJbMl0gPSB7Ci0gICAgezQ3LCA0fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMTVbMl0gPSB7CisgICAgezgsIGFyY3NfMTVfMH0sCisgICAgezEsIGFyY3NfMTVfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE2XzBbMV0gPSB7CisgICAgezQ3LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTZfMVszXSA9IHsKKyAgICB7NDgsIDJ9LAorICAgIHszMSwgM30sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xNl8yWzJdID0geworICAgIHs0OSwgNH0sCiAgICAgezksIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xNV8zWzJdID0geworc3RhdGljIGFyYyBhcmNzXzE2XzNbMl0gPSB7CisgICAgezQ5LCA1fSwKICAgICB7NDcsIDV9LAotICAgIHs0NSwgNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE1XzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMTZfNFsxXSA9IHsKICAgICB7MCwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE1XzVbMl0gPSB7Ci0gICAgezI5LCAzfSwKK3N0YXRpYyBhcmMgYXJjc18xNl81WzJdID0geworICAgIHszMSwgM30sCiAgICAgezAsIDV9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTVbNl0gPSB7Ci0gICAgezEsIGFyY3NfMTVfMH0sCi0gICAgezMsIGFyY3NfMTVfMX0sCi0gICAgezIsIGFyY3NfMTVfMn0sCi0gICAgezIsIGFyY3NfMTVfM30sCi0gICAgezEsIGFyY3NfMTVfNH0sCi0gICAgezIsIGFyY3NfMTVfNX0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzE2WzZdID0geworICAgIHsxLCBhcmNzXzE2XzB9LAorICAgIHszLCBhcmNzXzE2XzF9LAorICAgIHsyLCBhcmNzXzE2XzJ9LAorICAgIHsyLCBhcmNzXzE2XzN9LAorICAgIHsxLCBhcmNzXzE2XzR9LAorICAgIHsyLCBhcmNzXzE2XzV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xNl8wWzJdID0gewotICAgIHsyNCwgMX0sCi0gICAgezQ4LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18xN18wWzJdID0geworICAgIHsyNiwgMX0sCisgICAgezUwLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTZfMVsyXSA9IHsKLSAgICB7MzAsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzE3XzFbMl0gPSB7CisgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE2XzJbM10gPSB7Ci0gICAgezI0LCAxfSwKLSAgICB7NDgsIDF9LAorc3RhdGljIGFyYyBhcmNzXzE3XzJbM10gPSB7CisgICAgezI2LCAxfSwKKyAgICB7NTAsIDF9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzE2WzNdID0gewotICAgIHsyLCBhcmNzXzE2XzB9LAotICAgIHsyLCBhcmNzXzE2XzF9LAotICAgIHszLCBhcmNzXzE2XzJ9LAorc3RhdGljIHN0YXRlIHN0YXRlc18xN1szXSA9IHsKKyAgICB7MiwgYXJjc18xN18wfSwKKyAgICB7MiwgYXJjc18xN18xfSwKKyAgICB7MywgYXJjc18xN18yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTdfMFsxMl0gPSB7Ci0gICAgezQ5LCAxfSwKLSAgICB7NTAsIDF9LAorc3RhdGljIGFyYyBhcmNzXzE4XzBbMTNdID0gewogICAgIHs1MSwgMX0sCiAgICAgezUyLCAxfSwKICAgICB7NTMsIDF9LApAQCAtNDg5LDY0ICs1MDIsNTcgQEAKICAgICB7NTgsIDF9LAogICAgIHs1OSwgMX0sCiAgICAgezYwLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMTdfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18xN1syXSA9IHsKLSAgICB7MTIsIGFyY3NfMTdfMH0sCi0gICAgezEsIGFyY3NfMTdfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzE4XzBbMV0gPSB7CiAgICAgezYxLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMThfMVsxXSA9IHsKLSAgICB7NjIsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18xOF8yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzE4WzNdID0gewotICAgIHsxLCBhcmNzXzE4XzB9LAotICAgIHsxLCBhcmNzXzE4XzF9LAotICAgIHsxLCBhcmNzXzE4XzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18xOV8wWzFdID0geworICAgIHs2MiwgMX0sCiAgICAgezYzLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTlfMVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xOF8xWzFdID0gewogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzE5WzJdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18xOFsyXSA9IHsKKyAgICB7MTMsIGFyY3NfMThfMH0sCisgICAgezEsIGFyY3NfMThfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE5XzBbMV0gPSB7CisgICAgezY0LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTlfMVsxXSA9IHsKKyAgICB7NjUsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xOV8yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzE5WzNdID0gewogICAgIHsxLCBhcmNzXzE5XzB9LAogICAgIHsxLCBhcmNzXzE5XzF9LAorICAgIHsxLCBhcmNzXzE5XzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yMF8wWzVdID0gewotICAgIHs2NCwgMX0sCi0gICAgezY1LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18yMF8wWzFdID0gewogICAgIHs2NiwgMX0sCi0gICAgezY3LCAxfSwKLSAgICB7NjgsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18yMF8xWzFdID0gewogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzIwWzJdID0gewotICAgIHs1LCBhcmNzXzIwXzB9LAorICAgIHsxLCBhcmNzXzIwXzB9LAogICAgIHsxLCBhcmNzXzIwXzF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yMV8wWzFdID0geworc3RhdGljIGFyYyBhcmNzXzIxXzBbNV0gPSB7CisgICAgezY3LCAxfSwKKyAgICB7NjgsIDF9LAogICAgIHs2OSwgMX0sCisgICAgezcwLCAxfSwKKyAgICB7NzEsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18yMV8xWzFdID0gewogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzIxWzJdID0gewotICAgIHsxLCBhcmNzXzIxXzB9LAorICAgIHs1LCBhcmNzXzIxXzB9LAogICAgIHsxLCBhcmNzXzIxXzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18yMl8wWzFdID0gewotICAgIHs3MCwgMX0sCisgICAgezcyLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjJfMVsxXSA9IHsKICAgICB7MCwgMX0sCkBAIC01NTYsMTQ4ICs1NjIsMTM5IEBACiAgICAgezEsIGFyY3NfMjJfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzIzXzBbMV0gPSB7Ci0gICAgezcxLCAxfSwKKyAgICB7NzMsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yM18xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzIzXzFbMV0gPSB7CisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjNbMl0gPSB7CisgICAgezEsIGFyY3NfMjNfMH0sCisgICAgezEsIGFyY3NfMjNfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI0XzBbMV0gPSB7CisgICAgezc0LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjRfMVsyXSA9IHsKICAgICB7OSwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yM18yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzI0XzJbMV0gPSB7CiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjNbM10gPSB7Ci0gICAgezEsIGFyY3NfMjNfMH0sCi0gICAgezIsIGFyY3NfMjNfMX0sCi0gICAgezEsIGFyY3NfMjNfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI0XzBbMV0gPSB7Ci0gICAgezQ3LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjRfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18yNFsyXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjRbM10gPSB7CiAgICAgezEsIGFyY3NfMjRfMH0sCi0gICAgezEsIGFyY3NfMjRfMX0sCisgICAgezIsIGFyY3NfMjRfMX0sCisgICAgezEsIGFyY3NfMjRfMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzI1XzBbMV0gPSB7Ci0gICAgezcyLCAxfSwKKyAgICB7NDksIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yNV8xWzJdID0gewotICAgIHsyNCwgMn0sCitzdGF0aWMgYXJjIGFyY3NfMjVfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI1XzJbMl0gPSB7Ci0gICAgezczLCAzfSwKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI1XzNbMV0gPSB7Ci0gICAgezI0LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjVfNFsxXSA9IHsKLSAgICB7MCwgNH0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18yNVs1XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjVbMl0gPSB7CiAgICAgezEsIGFyY3NfMjVfMH0sCi0gICAgezIsIGFyY3NfMjVfMX0sCi0gICAgezIsIGFyY3NfMjVfMn0sCi0gICAgezEsIGFyY3NfMjVfM30sCi0gICAgezEsIGFyY3NfMjVfNH0sCisgICAgezEsIGFyY3NfMjVfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI2XzBbMl0gPSB7Ci0gICAgezc0LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18yNl8wWzFdID0gewogICAgIHs3NSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI2XzFbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjZfMVsyXSA9IHsKKyAgICB7MjYsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI2WzJdID0gewotICAgIHsyLCBhcmNzXzI2XzB9LAotICAgIHsxLCBhcmNzXzI2XzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yN18wWzFdID0gewotICAgIHs3NiwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI3XzFbMV0gPSB7Ci0gICAgezc3LCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjdfMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yNl8yWzJdID0geworICAgIHs3NiwgM30sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjdbM10gPSB7Ci0gICAgezEsIGFyY3NfMjdfMH0sCi0gICAgezEsIGFyY3NfMjdfMX0sCi0gICAgezEsIGFyY3NfMjdfMn0sCitzdGF0aWMgYXJjIGFyY3NfMjZfM1sxXSA9IHsKKyAgICB7MjYsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yOF8wWzFdID0gewotICAgIHs3MywgMX0sCitzdGF0aWMgYXJjIGFyY3NfMjZfNFsxXSA9IHsKKyAgICB7MCwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI4XzFbM10gPSB7Ci0gICAgezc4LCAyfSwKLSAgICB7NzksIDJ9LAotICAgIHsxMiwgM30sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzI2WzVdID0geworICAgIHsxLCBhcmNzXzI2XzB9LAorICAgIHsyLCBhcmNzXzI2XzF9LAorICAgIHsyLCBhcmNzXzI2XzJ9LAorICAgIHsxLCBhcmNzXzI2XzN9LAorICAgIHsxLCBhcmNzXzI2XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yOF8yWzRdID0gewotICAgIHs3OCwgMn0sCi0gICAgezc5LCAyfSwKLSAgICB7MTIsIDN9LAotICAgIHs3NiwgNH0sCitzdGF0aWMgYXJjIGFyY3NfMjdfMFsyXSA9IHsKKyAgICB7NzcsIDF9LAorICAgIHs3OCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI4XzNbMV0gPSB7Ci0gICAgezc2LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjhfNFszXSA9IHsKLSAgICB7MzEsIDV9LAotICAgIHsxMywgNn0sCi0gICAgezgwLCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjhfNVsxXSA9IHsKLSAgICB7MCwgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI4XzZbMV0gPSB7Ci0gICAgezgwLCA3fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjhfN1sxXSA9IHsKLSAgICB7MTUsIDV9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjhbOF0gPSB7Ci0gICAgezEsIGFyY3NfMjhfMH0sCi0gICAgezMsIGFyY3NfMjhfMX0sCi0gICAgezQsIGFyY3NfMjhfMn0sCi0gICAgezEsIGFyY3NfMjhfM30sCi0gICAgezMsIGFyY3NfMjhfNH0sCi0gICAgezEsIGFyY3NfMjhfNX0sCi0gICAgezEsIGFyY3NfMjhfNn0sCi0gICAgezEsIGFyY3NfMjhfN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzBbMV0gPSB7Ci0gICAgezIxLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfMVsyXSA9IHsKLSAgICB7ODIsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzI3XzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yOV8yWzFdID0gewotICAgIHsyMSwgM30sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzI3WzJdID0geworICAgIHsyLCBhcmNzXzI3XzB9LAorICAgIHsxLCBhcmNzXzI3XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOF8wWzFdID0geworICAgIHs3OSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI4XzFbMV0gPSB7CisgICAgezgwLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjhfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18yOFszXSA9IHsKKyAgICB7MSwgYXJjc18yOF8wfSwKKyAgICB7MSwgYXJjc18yOF8xfSwKKyAgICB7MSwgYXJjc18yOF8yfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjlfMFsxXSA9IHsKKyAgICB7NzYsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOV8xWzNdID0geworICAgIHs4MSwgMn0sCisgICAgezgyLCAyfSwKKyAgICB7MTIsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOV8yWzRdID0geworICAgIHs4MSwgMn0sCisgICAgezgyLCAyfSwKKyAgICB7MTIsIDN9LAorICAgIHs3OSwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzI5XzNbMV0gPSB7Ci0gICAgezAsIDN9LAorICAgIHs3OSwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18yOVs0XSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yOV80WzNdID0geworICAgIHszMywgNX0sCisgICAgezEzLCA2fSwKKyAgICB7ODMsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOV81WzFdID0geworICAgIHswLCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjlfNlsxXSA9IHsKKyAgICB7ODMsIDd9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOV83WzFdID0geworICAgIHsxNSwgNX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18yOVs4XSA9IHsKICAgICB7MSwgYXJjc18yOV8wfSwKLSAgICB7MiwgYXJjc18yOV8xfSwKLSAgICB7MSwgYXJjc18yOV8yfSwKKyAgICB7MywgYXJjc18yOV8xfSwKKyAgICB7NCwgYXJjc18yOV8yfSwKICAgICB7MSwgYXJjc18yOV8zfSwKKyAgICB7MywgYXJjc18yOV80fSwKKyAgICB7MSwgYXJjc18yOV81fSwKKyAgICB7MSwgYXJjc18yOV82fSwKKyAgICB7MSwgYXJjc18yOV83fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzBfMFsxXSA9IHsKLSAgICB7MTIsIDF9LAorICAgIHsyMywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMwXzFbMl0gPSB7Ci0gICAgezgyLCAyfSwKKyAgICB7ODUsIDJ9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzBfMlsxXSA9IHsKLSAgICB7MjEsIDN9LAorICAgIHsyMywgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMwXzNbMV0gPSB7CiAgICAgezAsIDN9LApAQCAtNzA5LDM3ICs3MDYsNDUgQEAKICAgICB7MSwgYXJjc18zMF8zfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzFfMFsxXSA9IHsKLSAgICB7ODEsIDF9LAorICAgIHsxMiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMxXzFbMl0gPSB7Ci0gICAgezMwLCAyfSwKKyAgICB7ODUsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzFfMlsyXSA9IHsKLSAgICB7ODEsIDF9LAotICAgIHswLCAyfSwKK3N0YXRpYyBhcmMgYXJjc18zMV8yWzFdID0geworICAgIHsyMywgM30sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18zMVszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18zMV8zWzFdID0geworICAgIHswLCAzfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzMxWzRdID0gewogICAgIHsxLCBhcmNzXzMxXzB9LAogICAgIHsyLCBhcmNzXzMxXzF9LAotICAgIHsyLCBhcmNzXzMxXzJ9LAorICAgIHsxLCBhcmNzXzMxXzJ9LAorICAgIHsxLCBhcmNzXzMxXzN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMl8wWzFdID0gewotICAgIHs4MywgMX0sCisgICAgezg0LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzJfMVsyXSA9IHsKLSAgICB7MzAsIDB9LAorICAgIHszMiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzJbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMzJfMlsyXSA9IHsKKyAgICB7ODQsIDF9LAorICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzMyWzNdID0gewogICAgIHsxLCBhcmNzXzMyXzB9LAogICAgIHsyLCBhcmNzXzMyXzF9LAorICAgIHsyLCBhcmNzXzMyXzJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zM18wWzFdID0gewotICAgIHsyMSwgMX0sCisgICAgezg2LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzNfMVsyXSA9IHsKLSAgICB7NzgsIDB9LAorICAgIHszMiwgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzNbMl0gPSB7CkBAIC03NDcsMjggKzc1MiwyNCBAQAogICAgIHsyLCBhcmNzXzMzXzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNF8wWzFdID0gewotICAgIHs4NCwgMX0sCisgICAgezIzLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzRfMVsxXSA9IHsKLSAgICB7MjEsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzM0XzFbMl0gPSB7CisgICAgezgxLCAwfSwKKyAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzM0XzJbMl0gPSB7Ci0gICAgezMwLCAxfSwKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18zNFszXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzRbMl0gPSB7CiAgICAgezEsIGFyY3NfMzRfMH0sCi0gICAgezEsIGFyY3NfMzRfMX0sCi0gICAgezIsIGFyY3NfMzRfMn0sCisgICAgezIsIGFyY3NfMzRfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM1XzBbMV0gPSB7Ci0gICAgezg1LCAxfSwKKyAgICB7ODcsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNV8xWzFdID0gewotICAgIHsyMSwgMn0sCisgICAgezIzLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzVfMlsyXSA9IHsKLSAgICB7MzAsIDF9LAorICAgIHszMiwgMX0sCiAgICAgezAsIDJ9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzVbM10gPSB7CkBAIC03NzcsNTA0ICs3NzgsNTE0IEBACiAgICAgezIsIGFyY3NfMzVfMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM2XzBbMV0gPSB7Ci0gICAgezg2LCAxfSwKKyAgICB7ODgsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNl8xWzFdID0gewotICAgIHsyNCwgMn0sCisgICAgezIzLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzZfMlsyXSA9IHsKLSAgICB7MzAsIDN9LAorICAgIHszMiwgMX0sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zNl8zWzFdID0gewotICAgIHsyNCwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM2XzRbMV0gPSB7Ci0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzZbNV0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzM2WzNdID0gewogICAgIHsxLCBhcmNzXzM2XzB9LAogICAgIHsxLCBhcmNzXzM2XzF9LAogICAgIHsyLCBhcmNzXzM2XzJ9LAotICAgIHsxLCBhcmNzXzM2XzN9LAotICAgIHsxLCBhcmNzXzM2XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zN18wWzhdID0gewotICAgIHs4NywgMX0sCi0gICAgezg4LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18zN18wWzFdID0gewogICAgIHs4OSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM3XzFbMV0gPSB7CisgICAgezI2LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzdfMlsyXSA9IHsKKyAgICB7MzIsIDN9LAorICAgIHswLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzdfM1sxXSA9IHsKKyAgICB7MjYsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zN180WzFdID0geworICAgIHswLCA0fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzM3WzVdID0geworICAgIHsxLCBhcmNzXzM3XzB9LAorICAgIHsxLCBhcmNzXzM3XzF9LAorICAgIHsyLCBhcmNzXzM3XzJ9LAorICAgIHsxLCBhcmNzXzM3XzN9LAorICAgIHsxLCBhcmNzXzM3XzR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zOF8wWzldID0gewogICAgIHs5MCwgMX0sCiAgICAgezkxLCAxfSwKKyAgICB7OTIsIDF9LAorICAgIHs5MywgMX0sCisgICAgezk0LCAxfSwKICAgICB7MTksIDF9LAogICAgIHsxOCwgMX0sCiAgICAgezE3LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzdfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18zN1syXSA9IHsKLSAgICB7OCwgYXJjc18zN18wfSwKLSAgICB7MSwgYXJjc18zN18xfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzhfMFsxXSA9IHsKLSAgICB7OTIsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOF8xWzFdID0gewotICAgIHsyNCwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM4XzJbMV0gPSB7Ci0gICAgezI1LCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzhfM1sxXSA9IHsKLSAgICB7MjYsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOF80WzNdID0gewotICAgIHs5MywgMX0sCi0gICAgezk0LCA1fSwKLSAgICB7MCwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM4XzVbMV0gPSB7Ci0gICAgezI1LCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzhfNlsxXSA9IHsKLSAgICB7MjYsIDd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOF83WzFdID0gewotICAgIHswLCA3fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzM4WzhdID0gewotICAgIHsxLCBhcmNzXzM4XzB9LAotICAgIHsxLCBhcmNzXzM4XzF9LAotICAgIHsxLCBhcmNzXzM4XzJ9LAotICAgIHsxLCBhcmNzXzM4XzN9LAotICAgIHszLCBhcmNzXzM4XzR9LAotICAgIHsxLCBhcmNzXzM4XzV9LAotICAgIHsxLCBhcmNzXzM4XzZ9LAotICAgIHsxLCBhcmNzXzM4Xzd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOV8wWzFdID0gewogICAgIHs5NSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzM5XzFbMV0gPSB7Ci0gICAgezI0LCAyfSwKK3N0YXRpYyBhcmMgYXJjc18zOF8xWzFdID0geworICAgIHswLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzM4WzJdID0geworICAgIHs5LCBhcmNzXzM4XzB9LAorICAgIHsxLCBhcmNzXzM4XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zOV8wWzFdID0geworICAgIHsyMSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM5XzFbM10gPSB7CisgICAgezE5LCAyfSwKKyAgICB7OTQsIDJ9LAorICAgIHs5MiwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM5XzJbMV0gPSB7Ci0gICAgezI1LCAzfSwKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzM5XzNbMV0gPSB7Ci0gICAgezI2LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzlfNFsyXSA9IHsKLSAgICB7OTQsIDV9LAotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzlfNVsxXSA9IHsKLSAgICB7MjUsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOV82WzFdID0gewotICAgIHsyNiwgN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzM5XzdbMV0gPSB7Ci0gICAgezAsIDd9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzlbOF0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzM5WzNdID0gewogICAgIHsxLCBhcmNzXzM5XzB9LAotICAgIHsxLCBhcmNzXzM5XzF9LAorICAgIHszLCBhcmNzXzM5XzF9LAogICAgIHsxLCBhcmNzXzM5XzJ9LAotICAgIHsxLCBhcmNzXzM5XzN9LAotICAgIHsyLCBhcmNzXzM5XzR9LAotICAgIHsxLCBhcmNzXzM5XzV9LAotICAgIHsxLCBhcmNzXzM5XzZ9LAotICAgIHsxLCBhcmNzXzM5Xzd9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MF8wWzFdID0gewogICAgIHs5NiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQwXzFbMV0gPSB7Ci0gICAgezYyLCAyfSwKKyAgICB7MjYsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MF8yWzFdID0gewotICAgIHs5NywgM30sCisgICAgezI3LCAzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDBfM1sxXSA9IHsKLSAgICB7OSwgNH0sCisgICAgezI4LCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfNFsxXSA9IHsKLSAgICB7MjUsIDV9LAorc3RhdGljIGFyYyBhcmNzXzQwXzRbM10gPSB7CisgICAgezk3LCAxfSwKKyAgICB7OTgsIDV9LAorICAgIHswLCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDBfNVsxXSA9IHsKLSAgICB7MjYsIDZ9LAorICAgIHsyNywgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQwXzZbMl0gPSB7Ci0gICAgezk0LCA3fSwKLSAgICB7MCwgNn0sCitzdGF0aWMgYXJjIGFyY3NfNDBfNlsxXSA9IHsKKyAgICB7MjgsIDd9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MF83WzFdID0gewotICAgIHsyNSwgOH0sCisgICAgezAsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180MF84WzFdID0gewotICAgIHsyNiwgOX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQwXzlbMV0gPSB7Ci0gICAgezAsIDl9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDBbMTBdID0geworc3RhdGljIHN0YXRlIHN0YXRlc180MFs4XSA9IHsKICAgICB7MSwgYXJjc180MF8wfSwKICAgICB7MSwgYXJjc180MF8xfSwKICAgICB7MSwgYXJjc180MF8yfSwKICAgICB7MSwgYXJjc180MF8zfSwKLSAgICB7MSwgYXJjc180MF80fSwKKyAgICB7MywgYXJjc180MF80fSwKICAgICB7MSwgYXJjc180MF81fSwKLSAgICB7MiwgYXJjc180MF82fSwKKyAgICB7MSwgYXJjc180MF82fSwKICAgICB7MSwgYXJjc180MF83fSwKLSAgICB7MSwgYXJjc180MF84fSwKLSAgICB7MSwgYXJjc180MF85fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDFfMFsxXSA9IHsKLSAgICB7OTgsIDF9LAorICAgIHs5OSwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQxXzFbMV0gPSB7Ci0gICAgezI1LCAyfSwKKyAgICB7MjYsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MV8yWzFdID0gewotICAgIHsyNiwgM30sCisgICAgezI3LCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDFfM1syXSA9IHsKLSAgICB7OTksIDR9LAotICAgIHsxMDAsIDV9LAorc3RhdGljIGFyYyBhcmNzXzQxXzNbMV0gPSB7CisgICAgezI4LCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDFfNFsxXSA9IHsKLSAgICB7MjUsIDZ9LAorc3RhdGljIGFyYyBhcmNzXzQxXzRbMl0gPSB7CisgICAgezk4LCA1fSwKKyAgICB7MCwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQxXzVbMV0gPSB7Ci0gICAgezI1LCA3fSwKKyAgICB7MjcsIDZ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MV82WzFdID0gewotICAgIHsyNiwgOH0sCisgICAgezI4LCA3fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDFfN1sxXSA9IHsKLSAgICB7MjYsIDl9LAorICAgIHswLCA3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDFfOFs0XSA9IHsKLSAgICB7OTksIDR9LAotICAgIHs5NCwgMTB9LAotICAgIHsxMDAsIDV9LAotICAgIHswLCA4fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDFfOVsxXSA9IHsKLSAgICB7MCwgOX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQxXzEwWzFdID0gewotICAgIHsyNSwgMTF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180MV8xMVsxXSA9IHsKLSAgICB7MjYsIDEyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDFfMTJbMl0gPSB7Ci0gICAgezEwMCwgNX0sCi0gICAgezAsIDEyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQxWzEzXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDFbOF0gPSB7CiAgICAgezEsIGFyY3NfNDFfMH0sCiAgICAgezEsIGFyY3NfNDFfMX0sCiAgICAgezEsIGFyY3NfNDFfMn0sCi0gICAgezIsIGFyY3NfNDFfM30sCi0gICAgezEsIGFyY3NfNDFfNH0sCisgICAgezEsIGFyY3NfNDFfM30sCisgICAgezIsIGFyY3NfNDFfNH0sCiAgICAgezEsIGFyY3NfNDFfNX0sCiAgICAgezEsIGFyY3NfNDFfNn0sCiAgICAgezEsIGFyY3NfNDFfN30sCi0gICAgezQsIGFyY3NfNDFfOH0sCi0gICAgezEsIGFyY3NfNDFfOX0sCi0gICAgezEsIGFyY3NfNDFfMTB9LAotICAgIHsxLCBhcmNzXzQxXzExfSwKLSAgICB7MiwgYXJjc180MV8xMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQyXzBbMV0gPSB7Ci0gICAgezEwMSwgMX0sCisgICAgezEwMCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQyXzFbMV0gPSB7Ci0gICAgezEwMiwgMn0sCisgICAgezY1LCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDJfMlsyXSA9IHsKLSAgICB7MzAsIDF9LAotICAgIHsyNSwgM30sCitzdGF0aWMgYXJjIGFyY3NfNDJfMlsxXSA9IHsKKyAgICB7MTAxLCAzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfM1sxXSA9IHsKLSAgICB7MjYsIDR9LAorICAgIHs5LCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfNFsxXSA9IHsKLSAgICB7MCwgNH0sCisgICAgezI3LCA1fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQyWzVdID0geworc3RhdGljIGFyYyBhcmNzXzQyXzVbMV0gPSB7CisgICAgezI4LCA2fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDJfNlsyXSA9IHsKKyAgICB7OTgsIDd9LAorICAgIHswLCA2fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDJfN1sxXSA9IHsKKyAgICB7MjcsIDh9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180Ml84WzFdID0geworICAgIHsyOCwgOX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQyXzlbMV0gPSB7CisgICAgezAsIDl9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDJbMTBdID0gewogICAgIHsxLCBhcmNzXzQyXzB9LAogICAgIHsxLCBhcmNzXzQyXzF9LAotICAgIHsyLCBhcmNzXzQyXzJ9LAorICAgIHsxLCBhcmNzXzQyXzJ9LAogICAgIHsxLCBhcmNzXzQyXzN9LAogICAgIHsxLCBhcmNzXzQyXzR9LAorICAgIHsxLCBhcmNzXzQyXzV9LAorICAgIHsyLCBhcmNzXzQyXzZ9LAorICAgIHsxLCBhcmNzXzQyXzd9LAorICAgIHsxLCBhcmNzXzQyXzh9LAorICAgIHsxLCBhcmNzXzQyXzl9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180M18wWzFdID0gewotICAgIHsyNCwgMX0sCisgICAgezEwMiwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQzXzFbMl0gPSB7Ci0gICAgezgyLCAyfSwKLSAgICB7MCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNDNfMVsxXSA9IHsKKyAgICB7MjcsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180M18yWzFdID0gewotICAgIHsxMDMsIDN9LAorICAgIHsyOCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQzXzNbMV0gPSB7Ci0gICAgezAsIDN9LAorc3RhdGljIGFyYyBhcmNzXzQzXzNbMl0gPSB7CisgICAgezEwMywgNH0sCisgICAgezEwNCwgNX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc180M1s0XSA9IHsKK3N0YXRpYyBhcmMgYXJjc180M180WzFdID0geworICAgIHsyNywgNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQzXzVbMV0gPSB7CisgICAgezI3LCA3fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDNfNlsxXSA9IHsKKyAgICB7MjgsIDh9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180M183WzFdID0geworICAgIHsyOCwgOX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQzXzhbNF0gPSB7CisgICAgezEwMywgNH0sCisgICAgezk4LCAxMH0sCisgICAgezEwNCwgNX0sCisgICAgezAsIDh9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180M185WzFdID0geworICAgIHswLCA5fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDNfMTBbMV0gPSB7CisgICAgezI3LCAxMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQzXzExWzFdID0geworICAgIHsyOCwgMTJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180M18xMlsyXSA9IHsKKyAgICB7MTA0LCA1fSwKKyAgICB7MCwgMTJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDNbMTNdID0gewogICAgIHsxLCBhcmNzXzQzXzB9LAotICAgIHsyLCBhcmNzXzQzXzF9LAorICAgIHsxLCBhcmNzXzQzXzF9LAogICAgIHsxLCBhcmNzXzQzXzJ9LAotICAgIHsxLCBhcmNzXzQzXzN9LAorICAgIHsyLCBhcmNzXzQzXzN9LAorICAgIHsxLCBhcmNzXzQzXzR9LAorICAgIHsxLCBhcmNzXzQzXzV9LAorICAgIHsxLCBhcmNzXzQzXzZ9LAorICAgIHsxLCBhcmNzXzQzXzd9LAorICAgIHs0LCBhcmNzXzQzXzh9LAorICAgIHsxLCBhcmNzXzQzXzl9LAorICAgIHsxLCBhcmNzXzQzXzEwfSwKKyAgICB7MSwgYXJjc180M18xMX0sCisgICAgezIsIGFyY3NfNDNfMTJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180NF8wWzFdID0gewotICAgIHsxMDQsIDF9LAorICAgIHsxMDUsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180NF8xWzJdID0gewotICAgIHsyNCwgMn0sCi0gICAgezAsIDF9LAorc3RhdGljIGFyYyBhcmNzXzQ0XzFbMV0gPSB7CisgICAgezEwNiwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ0XzJbMl0gPSB7Ci0gICAgezgyLCAzfSwKLSAgICB7MCwgMn0sCisgICAgezMyLCAxfSwKKyAgICB7MjcsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180NF8zWzFdID0gewotICAgIHsyMSwgNH0sCisgICAgezI4LCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDRfNFsxXSA9IHsKICAgICB7MCwgNH0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc180NFs1XSA9IHsKICAgICB7MSwgYXJjc180NF8wfSwKLSAgICB7MiwgYXJjc180NF8xfSwKKyAgICB7MSwgYXJjc180NF8xfSwKICAgICB7MiwgYXJjc180NF8yfSwKICAgICB7MSwgYXJjc180NF8zfSwKICAgICB7MSwgYXJjc180NF80fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDVfMFsyXSA9IHsKLSAgICB7MywgMX0sCi0gICAgezIsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzQ1XzBbMV0gPSB7CisgICAgezI2LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDVfMVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180NV8xWzJdID0geworICAgIHs4NSwgMn0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180NV8yWzFdID0gewotICAgIHsxMDUsIDN9LAorICAgIHsxMDcsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180NV8zWzFdID0gewotICAgIHs2LCA0fSwKKyAgICB7MCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ1XzRbMl0gPSB7Ci0gICAgezYsIDR9LAotICAgIHsxMDYsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDVbNV0gPSB7Ci0gICAgezIsIGFyY3NfNDVfMH0sCi0gICAgezEsIGFyY3NfNDVfMX0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ1WzRdID0geworICAgIHsxLCBhcmNzXzQ1XzB9LAorICAgIHsyLCBhcmNzXzQ1XzF9LAogICAgIHsxLCBhcmNzXzQ1XzJ9LAogICAgIHsxLCBhcmNzXzQ1XzN9LAotICAgIHsyLCBhcmNzXzQ1XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Nl8wWzJdID0gewotICAgIHsxMDcsIDF9LAotICAgIHsxMDgsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzQ2XzBbMV0gPSB7CisgICAgezEwOCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ2XzFbMl0gPSB7Ci0gICAgezkyLCAzfSwKKyAgICB7MjYsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDZfMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180Nl8yWzJdID0geworICAgIHs4NSwgM30sCiAgICAgezAsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Nl8zWzFdID0gewotICAgIHsxMDcsIDR9LAorICAgIHsyMywgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ2XzRbMV0gPSB7Ci0gICAgezk0LCA1fSwKKyAgICB7MCwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ2XzVbMV0gPSB7Ci0gICAgezI0LCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ2WzZdID0gewotICAgIHsyLCBhcmNzXzQ2XzB9LAorc3RhdGljIHN0YXRlIHN0YXRlc180Nls1XSA9IHsKKyAgICB7MSwgYXJjc180Nl8wfSwKICAgICB7MiwgYXJjc180Nl8xfSwKLSAgICB7MSwgYXJjc180Nl8yfSwKKyAgICB7MiwgYXJjc180Nl8yfSwKICAgICB7MSwgYXJjc180Nl8zfSwKICAgICB7MSwgYXJjc180Nl80fSwKLSAgICB7MSwgYXJjc180Nl81fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDdfMFsyXSA9IHsKLSAgICB7MTA3LCAxfSwKLSAgICB7MTEwLCAxfSwKKyAgICB7MywgMX0sCisgICAgezIsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180N18xWzFdID0gewogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ3WzJdID0geworc3RhdGljIGFyYyBhcmNzXzQ3XzJbMV0gPSB7CisgICAgezEwOSwgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ3XzNbMV0gPSB7CisgICAgezYsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180N180WzJdID0geworICAgIHs2LCA0fSwKKyAgICB7MTEwLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ3WzVdID0gewogICAgIHsyLCBhcmNzXzQ3XzB9LAogICAgIHsxLCBhcmNzXzQ3XzF9LAorICAgIHsxLCBhcmNzXzQ3XzJ9LAorICAgIHsxLCBhcmNzXzQ3XzN9LAorICAgIHsyLCBhcmNzXzQ3XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180OF8wWzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ4XzBbMl0gPSB7CiAgICAgezExMSwgMX0sCisgICAgezExMiwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ4XzFbMl0gPSB7Ci0gICAgezMzLCAyfSwKLSAgICB7MjUsIDN9LAorICAgIHs5NiwgM30sCisgICAgezAsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180OF8yWzFdID0gewotICAgIHsyNSwgM30sCisgICAgezAsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180OF8zWzFdID0gewotICAgIHsyNCwgNH0sCisgICAgezExMSwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ4XzRbMV0gPSB7Ci0gICAgezAsIDR9LAorICAgIHs5OCwgNX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc180OFs1XSA9IHsKLSAgICB7MSwgYXJjc180OF8wfSwKK3N0YXRpYyBhcmMgYXJjc180OF81WzFdID0geworICAgIHsyNiwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc180OFs2XSA9IHsKKyAgICB7MiwgYXJjc180OF8wfSwKICAgICB7MiwgYXJjc180OF8xfSwKICAgICB7MSwgYXJjc180OF8yfSwKICAgICB7MSwgYXJjc180OF8zfSwKICAgICB7MSwgYXJjc180OF80fSwKKyAgICB7MSwgYXJjc180OF81fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDlfMFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180OV8wWzJdID0gewogICAgIHsxMTEsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180OV8xWzJdID0gewotICAgIHszMywgMn0sCi0gICAgezI1LCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDlfMlsxXSA9IHsKLSAgICB7MjUsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180OV8zWzFdID0gewotICAgIHsxMDksIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180OV80WzFdID0gewotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ5WzVdID0gewotICAgIHsxLCBhcmNzXzQ5XzB9LAotICAgIHsyLCBhcmNzXzQ5XzF9LAotICAgIHsxLCBhcmNzXzQ5XzJ9LAotICAgIHsxLCBhcmNzXzQ5XzN9LAotICAgIHsxLCBhcmNzXzQ5XzR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181MF8wWzFdID0gewotICAgIHsxMTIsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181MF8xWzJdID0gewotICAgIHsxMTMsIDB9LAotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzUwWzJdID0gewotICAgIHsxLCBhcmNzXzUwXzB9LAotICAgIHsyLCBhcmNzXzUwXzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181MV8wWzFdID0gewogICAgIHsxMTQsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181MV8xWzJdID0gewotICAgIHsxMTUsIDB9LAorc3RhdGljIGFyYyBhcmNzXzQ5XzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTFbMl0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ5WzJdID0geworICAgIHsyLCBhcmNzXzQ5XzB9LAorICAgIHsxLCBhcmNzXzQ5XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181MF8wWzFdID0geworICAgIHsxMTUsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181MF8xWzJdID0geworICAgIHszNSwgMn0sCisgICAgezI3LCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTBfMlsxXSA9IHsKKyAgICB7MjcsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181MF8zWzFdID0geworICAgIHsyNiwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzUwXzRbMV0gPSB7CisgICAgezAsIDR9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTBbNV0gPSB7CisgICAgezEsIGFyY3NfNTBfMH0sCisgICAgezIsIGFyY3NfNTBfMX0sCisgICAgezEsIGFyY3NfNTBfMn0sCisgICAgezEsIGFyY3NfNTBfM30sCisgICAgezEsIGFyY3NfNTBfNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzUxXzBbMV0gPSB7CisgICAgezExNSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzUxXzFbMl0gPSB7CisgICAgezM1LCAyfSwKKyAgICB7MjcsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181MV8yWzFdID0geworICAgIHsyNywgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzUxXzNbMV0gPSB7CisgICAgezExMywgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzUxXzRbMV0gPSB7CisgICAgezAsIDR9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTFbNV0gPSB7CiAgICAgezEsIGFyY3NfNTFfMH0sCiAgICAgezIsIGFyY3NfNTFfMX0sCisgICAgezEsIGFyY3NfNTFfMn0sCisgICAgezEsIGFyY3NfNTFfM30sCisgICAgezEsIGFyY3NfNTFfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzUyXzBbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNTJfMFsxXSA9IHsKICAgICB7MTE2LCAxfSwKLSAgICB7MTE3LCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTJfMVsxXSA9IHsKLSAgICB7MTE0LCAyfSwKK3N0YXRpYyBhcmMgYXJjc181Ml8xWzJdID0geworICAgIHsxMTcsIDB9LAorICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTJfMlsxXSA9IHsKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc181MlszXSA9IHsKLSAgICB7MiwgYXJjc181Ml8wfSwKLSAgICB7MSwgYXJjc181Ml8xfSwKLSAgICB7MSwgYXJjc181Ml8yfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTJbMl0gPSB7CisgICAgezEsIGFyY3NfNTJfMH0sCisgICAgezIsIGFyY3NfNTJfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUzXzBbMV0gPSB7Ci0gICAgezEwMywgMX0sCisgICAgezExOCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUzXzFbMl0gPSB7Ci0gICAgezExOCwgMH0sCisgICAgezExOSwgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTNbMl0gPSB7CiAgICAgezEsIGFyY3NfNTNfMH0sCiAgICAgezIsIGFyY3NfNTNfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzU0XzBbMTBdID0gewotICAgIHsxMTksIDF9LAorc3RhdGljIGFyYyBhcmNzXzU0XzBbMl0gPSB7CiAgICAgezEyMCwgMX0sCi0gICAgezEyMSwgMX0sCi0gICAgezEyMiwgMX0sCisgICAgezEyMSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU0XzFbMV0gPSB7CisgICAgezExOCwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU0XzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTRbM10gPSB7CisgICAgezIsIGFyY3NfNTRfMH0sCisgICAgezEsIGFyY3NfNTRfMX0sCisgICAgezEsIGFyY3NfNTRfMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU1XzBbMV0gPSB7CisgICAgezEwNywgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU1XzFbMl0gPSB7CisgICAgezEyMiwgMH0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTVbMl0gPSB7CisgICAgezEsIGFyY3NfNTVfMH0sCisgICAgezIsIGFyY3NfNTVfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU2XzBbMTBdID0gewogICAgIHsxMjMsIDF9LAogICAgIHsxMjQsIDF9LAogICAgIHsxMjUsIDF9LAotICAgIHs5NywgMX0sCi0gICAgezExNiwgMn0sCi0gICAgezEyNiwgM30sCisgICAgezEyNiwgMX0sCisgICAgezEyNywgMX0sCisgICAgezEyOCwgMX0sCisgICAgezEyOSwgMX0sCisgICAgezEwMSwgMX0sCisgICAgezEyMCwgMn0sCisgICAgezEzMCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzU0XzFbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNTZfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzU0XzJbMV0gPSB7Ci0gICAgezk3LCAxfSwKK3N0YXRpYyBhcmMgYXJjc181Nl8yWzFdID0geworICAgIHsxMDEsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181NF8zWzJdID0gewotICAgIHsxMTYsIDF9LAorc3RhdGljIGFyYyBhcmNzXzU2XzNbMl0gPSB7CisgICAgezEyMCwgMX0sCiAgICAgezAsIDN9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTRbNF0gPSB7Ci0gICAgezEwLCBhcmNzXzU0XzB9LAotICAgIHsxLCBhcmNzXzU0XzF9LAotICAgIHsxLCBhcmNzXzU0XzJ9LAotICAgIHsyLCBhcmNzXzU0XzN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181NV8wWzFdID0gewotICAgIHszMSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU1XzFbMV0gPSB7Ci0gICAgezEwMywgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU1XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTVbM10gPSB7Ci0gICAgezEsIGFyY3NfNTVfMH0sCi0gICAgezEsIGFyY3NfNTVfMX0sCi0gICAgezEsIGFyY3NfNTVfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU2XzBbMV0gPSB7Ci0gICAgezEyNywgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU2XzFbMl0gPSB7Ci0gICAgezEyOCwgMH0sCi0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTZbMl0gPSB7Ci0gICAgezEsIGFyY3NfNTZfMH0sCi0gICAgezIsIGFyY3NfNTZfMX0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzU2WzRdID0geworICAgIHsxMCwgYXJjc181Nl8wfSwKKyAgICB7MSwgYXJjc181Nl8xfSwKKyAgICB7MSwgYXJjc181Nl8yfSwKKyAgICB7MiwgYXJjc181Nl8zfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTdfMFsxXSA9IHsKLSAgICB7MTI5LCAxfSwKKyAgICB7MzMsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181N18xWzJdID0gewotICAgIHsxMzAsIDB9LAotICAgIHswLCAxfSwKK3N0YXRpYyBhcmMgYXJjc181N18xWzFdID0geworICAgIHsxMDcsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTdbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNTdfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181N1szXSA9IHsKICAgICB7MSwgYXJjc181N18wfSwKLSAgICB7MiwgYXJjc181N18xfSwKKyAgICB7MSwgYXJjc181N18xfSwKKyAgICB7MSwgYXJjc181N18yfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNThfMFsxXSA9IHsKICAgICB7MTMxLCAxfSwKQEAgLTEyOTAsNzUyICsxMzAxLDc5MyBAQAogc3RhdGljIGFyYyBhcmNzXzU5XzBbMV0gPSB7CiAgICAgezEzMywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzU5XzFbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNTlfMVsyXSA9IHsKICAgICB7MTM0LCAwfSwKLSAgICB7MTM1LCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc181OVsyXSA9IHsKICAgICB7MSwgYXJjc181OV8wfSwKLSAgICB7MywgYXJjc181OV8xfSwKKyAgICB7MiwgYXJjc181OV8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjBfMFsxXSA9IHsKLSAgICB7MTM2LCAxfSwKKyAgICB7MTM1LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjBfMVszXSA9IHsKLSAgICB7MTM3LCAwfSwKLSAgICB7MTM4LCAwfSwKK3N0YXRpYyBhcmMgYXJjc182MF8xWzJdID0geworICAgIHsxMzYsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzYwWzJdID0gewogICAgIHsxLCBhcmNzXzYwXzB9LAotICAgIHszLCBhcmNzXzYwXzF9LAorICAgIHsyLCBhcmNzXzYwXzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182MV8wWzFdID0gewotICAgIHsxMzksIDF9LAorICAgIHsxMzcsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182MV8xWzVdID0gewotICAgIHszMSwgMH0sCi0gICAgezE0MCwgMH0sCi0gICAgezE0MSwgMH0sCi0gICAgezE0MiwgMH0sCitzdGF0aWMgYXJjIGFyY3NfNjFfMVszXSA9IHsKKyAgICB7MTM4LCAwfSwKKyAgICB7MTM5LCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc182MVsyXSA9IHsKICAgICB7MSwgYXJjc182MV8wfSwKLSAgICB7NSwgYXJjc182MV8xfSwKKyAgICB7MywgYXJjc182MV8xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjJfMFs0XSA9IHsKLSAgICB7MTM3LCAxfSwKLSAgICB7MTM4LCAxfSwKLSAgICB7MTQzLCAxfSwKLSAgICB7MTQ0LCAyfSwKK3N0YXRpYyBhcmMgYXJjc182Ml8wWzFdID0geworICAgIHsxNDAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182Ml8xWzFdID0gewotICAgIHsxMzksIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182Ml8yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzYyWzNdID0gewotICAgIHs0LCBhcmNzXzYyXzB9LAotICAgIHsxLCBhcmNzXzYyXzF9LAotICAgIHsxLCBhcmNzXzYyXzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182M18wWzFdID0gewotICAgIHsxNDUsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182M18xWzNdID0gewotICAgIHsxNDYsIDF9LAotICAgIHszMiwgMn0sCitzdGF0aWMgYXJjIGFyY3NfNjJfMVszXSA9IHsKKyAgICB7MTQxLCAwfSwKKyAgICB7MTQyLCAwfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzYzXzJbMV0gPSB7Ci0gICAgezEzOSwgM30sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzYyWzJdID0geworICAgIHsxLCBhcmNzXzYyXzB9LAorICAgIHszLCBhcmNzXzYyXzF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182M18zWzFdID0gewotICAgIHswLCAzfSwKK3N0YXRpYyBhcmMgYXJjc182M18wWzFdID0geworICAgIHsxNDMsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjNbNF0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjNfMVs2XSA9IHsKKyAgICB7MzMsIDB9LAorICAgIHsxMSwgMH0sCisgICAgezE0NCwgMH0sCisgICAgezE0NSwgMH0sCisgICAgezE0NiwgMH0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjNbMl0gPSB7CiAgICAgezEsIGFyY3NfNjNfMH0sCi0gICAgezMsIGFyY3NfNjNfMX0sCi0gICAgezEsIGFyY3NfNjNfMn0sCi0gICAgezEsIGFyY3NfNjNfM30sCisgICAgezYsIGFyY3NfNjNfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzBbMTBdID0gewotICAgIHsxMywgMX0sCitzdGF0aWMgYXJjIGFyY3NfNjRfMFs0XSA9IHsKKyAgICB7MTQxLCAxfSwKKyAgICB7MTQyLCAxfSwKKyAgICB7MTQ3LCAxfSwKICAgICB7MTQ4LCAyfSwKLSAgICB7MTUwLCAzfSwKLSAgICB7MjEsIDR9LAotICAgIHsxNTMsIDR9LAotICAgIHsxNTQsIDV9LAotICAgIHs3OSwgNH0sCi0gICAgezE1NSwgNH0sCi0gICAgezE1NiwgNH0sCi0gICAgezE1NywgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzFbM10gPSB7Ci0gICAgezQ3LCA2fSwKLSAgICB7MTQ3LCA2fSwKLSAgICB7MTUsIDR9LAorc3RhdGljIGFyYyBhcmNzXzY0XzFbMV0gPSB7CisgICAgezE0MywgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzJbMl0gPSB7Ci0gICAgezE0NywgN30sCi0gICAgezE0OSwgNH0sCitzdGF0aWMgYXJjIGFyY3NfNjRfMlsxXSA9IHsKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzNbMl0gPSB7Ci0gICAgezE1MSwgOH0sCi0gICAgezE1MiwgNH0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzY0WzNdID0geworICAgIHs0LCBhcmNzXzY0XzB9LAorICAgIHsxLCBhcmNzXzY0XzF9LAorICAgIHsxLCBhcmNzXzY0XzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NF80WzFdID0gewotICAgIHswLCA0fSwKK3N0YXRpYyBhcmMgYXJjc182NV8wWzFdID0geworICAgIHsxNDksIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NF81WzJdID0gewotICAgIHsxNTQsIDV9LAotICAgIHswLCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjRfNlsxXSA9IHsKLSAgICB7MTUsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182NF83WzFdID0gewotICAgIHsxNDksIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182NF84WzFdID0gewotICAgIHsxNTIsIDR9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjRbOV0gPSB7Ci0gICAgezEwLCBhcmNzXzY0XzB9LAotICAgIHszLCBhcmNzXzY0XzF9LAotICAgIHsyLCBhcmNzXzY0XzJ9LAotICAgIHsyLCBhcmNzXzY0XzN9LAotICAgIHsxLCBhcmNzXzY0XzR9LAotICAgIHsyLCBhcmNzXzY0XzV9LAotICAgIHsxLCBhcmNzXzY0XzZ9LAotICAgIHsxLCBhcmNzXzY0Xzd9LAotICAgIHsxLCBhcmNzXzY0Xzh9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182NV8wWzJdID0gewotICAgIHsyNCwgMX0sCi0gICAgezQ4LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjVfMVszXSA9IHsKLSAgICB7MTU4LCAyfSwKLSAgICB7MzAsIDN9LAorc3RhdGljIGFyYyBhcmNzXzY1XzFbMl0gPSB7CisgICAgezM0LCAyfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzY1XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAorICAgIHsxNDMsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NV8zWzNdID0gewotICAgIHsyNCwgNH0sCi0gICAgezQ4LCA0fSwKK3N0YXRpYyBhcmMgYXJjc182NV8zWzFdID0gewogICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjVfNFsyXSA9IHsKLSAgICB7MzAsIDN9LAotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY1WzVdID0gewotICAgIHsyLCBhcmNzXzY1XzB9LAotICAgIHszLCBhcmNzXzY1XzF9LAorc3RhdGljIHN0YXRlIHN0YXRlc182NVs0XSA9IHsKKyAgICB7MSwgYXJjc182NV8wfSwKKyAgICB7MiwgYXJjc182NV8xfSwKICAgICB7MSwgYXJjc182NV8yfSwKLSAgICB7MywgYXJjc182NV8zfSwKLSAgICB7MiwgYXJjc182NV80fSwKKyAgICB7MSwgYXJjc182NV8zfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjZfMFszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182Nl8wWzJdID0geworICAgIHsxNTAsIDF9LAorICAgIHsxNTEsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182Nl8xWzFdID0geworICAgIHsxNTEsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182Nl8yWzJdID0geworICAgIHsxNTIsIDJ9LAorICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzY2WzNdID0geworICAgIHsyLCBhcmNzXzY2XzB9LAorICAgIHsxLCBhcmNzXzY2XzF9LAorICAgIHsyLCBhcmNzXzY2XzJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182N18wWzEwXSA9IHsKICAgICB7MTMsIDF9LAotICAgIHsxNDgsIDJ9LAotICAgIHs3OCwgM30sCisgICAgezE1NCwgMn0sCisgICAgezE1NiwgM30sCisgICAgezIzLCA0fSwKKyAgICB7MTU5LCA0fSwKKyAgICB7MTYwLCA1fSwKKyAgICB7ODIsIDR9LAorICAgIHsxNjEsIDR9LAorICAgIHsxNjIsIDR9LAorICAgIHsxNjMsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182Nl8xWzJdID0gewotICAgIHsxNCwgNH0sCi0gICAgezE1LCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjZfMlsxXSA9IHsKLSAgICB7MTU5LCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjZfM1sxXSA9IHsKLSAgICB7MjEsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182Nl80WzFdID0gewotICAgIHsxNSwgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY2XzVbMV0gPSB7Ci0gICAgezAsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182Nl82WzFdID0gewotICAgIHsxNDksIDV9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjZbN10gPSB7Ci0gICAgezMsIGFyY3NfNjZfMH0sCi0gICAgezIsIGFyY3NfNjZfMX0sCi0gICAgezEsIGFyY3NfNjZfMn0sCi0gICAgezEsIGFyY3NfNjZfM30sCi0gICAgezEsIGFyY3NfNjZfNH0sCi0gICAgezEsIGFyY3NfNjZfNX0sCi0gICAgezEsIGFyY3NfNjZfNn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY3XzBbMV0gPSB7Ci0gICAgezE2MCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY3XzFbMl0gPSB7Ci0gICAgezMwLCAyfSwKLSAgICB7MCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNjdfMVszXSA9IHsKKyAgICB7NDksIDZ9LAorICAgIHsxNTMsIDZ9LAorICAgIHsxNSwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzY3XzJbMl0gPSB7Ci0gICAgezE2MCwgMX0sCi0gICAgezAsIDJ9LAorICAgIHsxNTMsIDd9LAorICAgIHsxNTUsIDR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjdbM10gPSB7Ci0gICAgezEsIGFyY3NfNjdfMH0sCi0gICAgezIsIGFyY3NfNjdfMX0sCitzdGF0aWMgYXJjIGFyY3NfNjdfM1syXSA9IHsKKyAgICB7MTU3LCA4fSwKKyAgICB7MTU4LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjdfNFsxXSA9IHsKKyAgICB7MCwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY3XzVbMl0gPSB7CisgICAgezE2MCwgNX0sCisgICAgezAsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182N182WzFdID0geworICAgIHsxNSwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY3XzdbMV0gPSB7CisgICAgezE1NSwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY3XzhbMV0gPSB7CisgICAgezE1OCwgNH0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc182N1s5XSA9IHsKKyAgICB7MTAsIGFyY3NfNjdfMH0sCisgICAgezMsIGFyY3NfNjdfMX0sCiAgICAgezIsIGFyY3NfNjdfMn0sCisgICAgezIsIGFyY3NfNjdfM30sCisgICAgezEsIGFyY3NfNjdfNH0sCisgICAgezIsIGFyY3NfNjdfNX0sCisgICAgezEsIGFyY3NfNjdfNn0sCisgICAgezEsIGFyY3NfNjdfN30sCisgICAgezEsIGFyY3NfNjdfOH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzY4XzBbMl0gPSB7Ci0gICAgezI0LCAxfSwKLSAgICB7MjUsIDJ9LAorICAgIHsyNiwgMX0sCisgICAgezUwLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjhfMVsyXSA9IHsKLSAgICB7MjUsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzY4XzFbM10gPSB7CisgICAgezE2NCwgMn0sCisgICAgezMyLCAzfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY4XzJbM10gPSB7Ci0gICAgezI0LCAzfSwKLSAgICB7MTYxLCA0fSwKK3N0YXRpYyBhcmMgYXJjc182OF8yWzFdID0gewogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjhfM1syXSA9IHsKLSAgICB7MTYxLCA0fSwKK3N0YXRpYyBhcmMgYXJjc182OF8zWzNdID0geworICAgIHsyNiwgNH0sCisgICAgezUwLCA0fSwKICAgICB7MCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY4XzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjhfNFsyXSA9IHsKKyAgICB7MzIsIDN9LAogICAgIHswLCA0fSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzY4WzVdID0gewogICAgIHsyLCBhcmNzXzY4XzB9LAotICAgIHsyLCBhcmNzXzY4XzF9LAotICAgIHszLCBhcmNzXzY4XzJ9LAotICAgIHsyLCBhcmNzXzY4XzN9LAotICAgIHsxLCBhcmNzXzY4XzR9LAorICAgIHszLCBhcmNzXzY4XzF9LAorICAgIHsxLCBhcmNzXzY4XzJ9LAorICAgIHszLCBhcmNzXzY4XzN9LAorICAgIHsyLCBhcmNzXzY4XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OV8wWzFdID0gewotICAgIHsyNSwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNjlfMFszXSA9IHsKKyAgICB7MTMsIDF9LAorICAgIHsxNTQsIDJ9LAorICAgIHs4MSwgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzY5XzFbMl0gPSB7Ci0gICAgezI0LCAyfSwKLSAgICB7MCwgMX0sCisgICAgezE0LCA0fSwKKyAgICB7MTUsIDV9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182OV8yWzFdID0gewotICAgIHswLCAyfSwKKyAgICB7MTY1LCA2fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY5WzNdID0gewotICAgIHsxLCBhcmNzXzY5XzB9LAorc3RhdGljIGFyYyBhcmNzXzY5XzNbMV0gPSB7CisgICAgezIzLCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjlfNFsxXSA9IHsKKyAgICB7MTUsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OV81WzFdID0geworICAgIHswLCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjlfNlsxXSA9IHsKKyAgICB7MTU1LCA1fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzY5WzddID0geworICAgIHszLCBhcmNzXzY5XzB9LAogICAgIHsyLCBhcmNzXzY5XzF9LAogICAgIHsxLCBhcmNzXzY5XzJ9LAorICAgIHsxLCBhcmNzXzY5XzN9LAorICAgIHsxLCBhcmNzXzY5XzR9LAorICAgIHsxLCBhcmNzXzY5XzV9LAorICAgIHsxLCBhcmNzXzY5XzZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MF8wWzJdID0gewotICAgIHsxMDMsIDF9LAotICAgIHs0OCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzBfMFsxXSA9IHsKKyAgICB7MTY2LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNzBfMVsyXSA9IHsKLSAgICB7MzAsIDJ9LAorICAgIHszMiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MF8yWzNdID0gewotICAgIHsxMDMsIDF9LAotICAgIHs0OCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzBfMlsyXSA9IHsKKyAgICB7MTY2LCAxfSwKICAgICB7MCwgMn0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc183MFszXSA9IHsKLSAgICB7MiwgYXJjc183MF8wfSwKKyAgICB7MSwgYXJjc183MF8wfSwKICAgICB7MiwgYXJjc183MF8xfSwKLSAgICB7MywgYXJjc183MF8yfSwKKyAgICB7MiwgYXJjc183MF8yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzFfMFsxXSA9IHsKLSAgICB7MjQsIDF9LAorc3RhdGljIGFyYyBhcmNzXzcxXzBbMl0gPSB7CisgICAgezI2LCAxfSwKKyAgICB7MjcsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc183MV8xWzJdID0gewotICAgIHszMCwgMn0sCisgICAgezI3LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcxXzJbMl0gPSB7Ci0gICAgezI0LCAxfSwKK3N0YXRpYyBhcmMgYXJjc183MV8yWzNdID0geworICAgIHsyNiwgM30sCisgICAgezE2NywgNH0sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzFbM10gPSB7Ci0gICAgezEsIGFyY3NfNzFfMH0sCitzdGF0aWMgYXJjIGFyY3NfNzFfM1syXSA9IHsKKyAgICB7MTY3LCA0fSwKKyAgICB7MCwgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzcxXzRbMV0gPSB7CisgICAgezAsIDR9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzFbNV0gPSB7CisgICAgezIsIGFyY3NfNzFfMH0sCiAgICAgezIsIGFyY3NfNzFfMX0sCi0gICAgezIsIGFyY3NfNzFfMn0sCisgICAgezMsIGFyY3NfNzFfMn0sCisgICAgezIsIGFyY3NfNzFfM30sCisgICAgezEsIGFyY3NfNzFfNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzcyXzBbMV0gPSB7Ci0gICAgezI0LCAxfSwKKyAgICB7MjcsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183Ml8xWzRdID0gewotICAgIHsyNSwgMn0sCi0gICAgezE1OCwgM30sCi0gICAgezMwLCA0fSwKK3N0YXRpYyBhcmMgYXJjc183Ml8xWzJdID0geworICAgIHsyNiwgMn0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc183Ml8yWzFdID0gewotICAgIHsyNCwgNX0sCisgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183Ml8zWzFdID0gewotICAgIHswLCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzJfNFsyXSA9IHsKLSAgICB7MjQsIDZ9LAotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzJfNVszXSA9IHsKLSAgICB7MTU4LCAzfSwKLSAgICB7MzAsIDd9LAotICAgIHswLCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzJfNlsyXSA9IHsKLSAgICB7MzAsIDR9LAotICAgIHswLCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzJfN1syXSA9IHsKLSAgICB7MjQsIDh9LAotICAgIHswLCA3fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzJfOFsxXSA9IHsKLSAgICB7MjUsIDl9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Ml85WzFdID0gewotICAgIHsyNCwgMTB9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Ml8xMFsyXSA9IHsKLSAgICB7MzAsIDd9LAotICAgIHswLCAxMH0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc183MlsxMV0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzcyWzNdID0gewogICAgIHsxLCBhcmNzXzcyXzB9LAotICAgIHs0LCBhcmNzXzcyXzF9LAorICAgIHsyLCBhcmNzXzcyXzF9LAogICAgIHsxLCBhcmNzXzcyXzJ9LAotICAgIHsxLCBhcmNzXzcyXzN9LAotICAgIHsyLCBhcmNzXzcyXzR9LAotICAgIHszLCBhcmNzXzcyXzV9LAotICAgIHsyLCBhcmNzXzcyXzZ9LAotICAgIHsyLCBhcmNzXzcyXzd9LAotICAgIHsxLCBhcmNzXzcyXzh9LAotICAgIHsxLCBhcmNzXzcyXzl9LAotICAgIHsyLCBhcmNzXzcyXzEwfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfMFsxXSA9IHsKLSAgICB7MTYyLCAxfSwKK3N0YXRpYyBhcmMgYXJjc183M18wWzJdID0geworICAgIHsxMDcsIDF9LAorICAgIHs1MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzczXzFbMV0gPSB7Ci0gICAgezIxLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfMlsyXSA9IHsKLSAgICB7MTMsIDN9LAotICAgIHsyNSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzczXzNbMl0gPSB7Ci0gICAgezE0LCA1fSwKLSAgICB7MTUsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183M180WzFdID0gewotICAgIHsyNiwgN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzczXzVbMV0gPSB7Ci0gICAgezE1LCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfNlsxXSA9IHsKLSAgICB7MjUsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183M183WzFdID0gewotICAgIHswLCA3fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzczWzhdID0gewotICAgIHsxLCBhcmNzXzczXzB9LAotICAgIHsxLCBhcmNzXzczXzF9LAotICAgIHsyLCBhcmNzXzczXzJ9LAotICAgIHsyLCBhcmNzXzczXzN9LAotICAgIHsxLCBhcmNzXzczXzR9LAotICAgIHsxLCBhcmNzXzczXzV9LAotICAgIHsxLCBhcmNzXzczXzZ9LAotICAgIHsxLCBhcmNzXzczXzd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183NF8wWzNdID0gewotICAgIHsxNjMsIDF9LAotICAgIHszMSwgMn0sCi0gICAgezMyLCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzRfMVsyXSA9IHsKLSAgICB7MzAsIDR9LAorc3RhdGljIGFyYyBhcmNzXzczXzFbMl0gPSB7CisgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc0XzJbMV0gPSB7Ci0gICAgezI0LCA1fSwKK3N0YXRpYyBhcmMgYXJjc183M18yWzNdID0geworICAgIHsxMDcsIDF9LAorICAgIHs1MCwgMX0sCisgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NF8zWzFdID0gewotICAgIHsyNCwgNn0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzczWzNdID0geworICAgIHsyLCBhcmNzXzczXzB9LAorICAgIHsyLCBhcmNzXzczXzF9LAorICAgIHszLCBhcmNzXzczXzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NF80WzRdID0gewotICAgIHsxNjMsIDF9LAotICAgIHszMSwgMn0sCi0gICAgezMyLCAzfSwKLSAgICB7MCwgNH0sCitzdGF0aWMgYXJjIGFyY3NfNzRfMFsxXSA9IHsKKyAgICB7MjYsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NF81WzJdID0gewotICAgIHszMCwgN30sCi0gICAgezAsIDV9LAorc3RhdGljIGFyYyBhcmNzXzc0XzFbMl0gPSB7CisgICAgezMyLCAyfSwKKyAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc0XzZbMV0gPSB7Ci0gICAgezAsIDZ9LAorc3RhdGljIGFyYyBhcmNzXzc0XzJbMl0gPSB7CisgICAgezI2LCAxfSwKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc0XzdbMl0gPSB7Ci0gICAgezE2MywgNX0sCi0gICAgezMyLCAzfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzc0WzhdID0gewotICAgIHszLCBhcmNzXzc0XzB9LAorc3RhdGljIHN0YXRlIHN0YXRlc183NFszXSA9IHsKKyAgICB7MSwgYXJjc183NF8wfSwKICAgICB7MiwgYXJjc183NF8xfSwKLSAgICB7MSwgYXJjc183NF8yfSwKLSAgICB7MSwgYXJjc183NF8zfSwKLSAgICB7NCwgYXJjc183NF80fSwKLSAgICB7MiwgYXJjc183NF81fSwKLSAgICB7MSwgYXJjc183NF82fSwKLSAgICB7MiwgYXJjc183NF83fSwKKyAgICB7MiwgYXJjc183NF8yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMFsxXSA9IHsKLSAgICB7MjQsIDF9LAorc3RhdGljIGFyYyBhcmNzXzc1XzBbM10gPSB7CisgICAgezI2LCAxfSwKKyAgICB7MzQsIDJ9LAorICAgIHs1MCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzFbM10gPSB7Ci0gICAgezE1OCwgMn0sCi0gICAgezI5LCAzfSwKK3N0YXRpYyBhcmMgYXJjc183NV8xWzRdID0geworICAgIHsyNywgNH0sCisgICAgezE2NCwgNX0sCisgICAgezMyLCA2fSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzc1XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAorICAgIHsxMDcsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8zWzFdID0gewotICAgIHsyNCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc183NVs0XSA9IHsKLSAgICB7MSwgYXJjc183NV8wfSwKLSAgICB7MywgYXJjc183NV8xfSwKLSAgICB7MSwgYXJjc183NV8yfSwKLSAgICB7MSwgYXJjc183NV8zfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfMFsyXSA9IHsKLSAgICB7MTU4LCAxfSwKLSAgICB7MTY1LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc183NlsyXSA9IHsKLSAgICB7MiwgYXJjc183Nl8wfSwKLSAgICB7MSwgYXJjc183Nl8xfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzdfMFsxXSA9IHsKLSAgICB7OTYsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183N18xWzFdID0gewotICAgIHs2MiwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc3XzJbMV0gPSB7Ci0gICAgezk3LCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzdfM1sxXSA9IHsKLSAgICB7MTA3LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzdfNFsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183NV8zWzNdID0gewogICAgIHsxNjQsIDV9LAotICAgIHswLCA0fSwKKyAgICB7MzIsIDZ9LAorICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzdfNVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183NV80WzFdID0geworICAgIHsyNiwgN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzc1XzVbMV0gPSB7CiAgICAgezAsIDV9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzdbNl0gPSB7Ci0gICAgezEsIGFyY3NfNzdfMH0sCi0gICAgezEsIGFyY3NfNzdfMX0sCi0gICAgezEsIGFyY3NfNzdfMn0sCi0gICAgezEsIGFyY3NfNzdfM30sCi0gICAgezIsIGFyY3NfNzdfNH0sCi0gICAgezEsIGFyY3NfNzdfNX0sCitzdGF0aWMgYXJjIGFyY3NfNzVfNlszXSA9IHsKKyAgICB7MjYsIDh9LAorICAgIHs1MCwgOH0sCisgICAgezAsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183OF8wWzFdID0gewotICAgIHs5MiwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzVfN1szXSA9IHsKKyAgICB7MTY0LCA1fSwKKyAgICB7MzIsIDl9LAorICAgIHswLCA3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzhfMVsxXSA9IHsKLSAgICB7MTA5LCAyfSwKK3N0YXRpYyBhcmMgYXJjc183NV84WzJdID0geworICAgIHszMiwgNn0sCisgICAgezAsIDh9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183OF8yWzJdID0gewotICAgIHsxNjQsIDN9LAorc3RhdGljIGFyYyBhcmNzXzc1XzlbM10gPSB7CisgICAgezI2LCAxMH0sCisgICAgezM0LCAxMX0sCisgICAgezAsIDl9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183NV8xMFsxXSA9IHsKKyAgICB7MjcsIDEyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzVfMTFbMV0gPSB7CisgICAgezEwNywgMTN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183NV8xMlsxXSA9IHsKKyAgICB7MjYsIDEzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzVfMTNbMl0gPSB7CisgICAgezMyLCA5fSwKKyAgICB7MCwgMTN9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzVbMTRdID0geworICAgIHszLCBhcmNzXzc1XzB9LAorICAgIHs0LCBhcmNzXzc1XzF9LAorICAgIHsxLCBhcmNzXzc1XzJ9LAorICAgIHszLCBhcmNzXzc1XzN9LAorICAgIHsxLCBhcmNzXzc1XzR9LAorICAgIHsxLCBhcmNzXzc1XzV9LAorICAgIHszLCBhcmNzXzc1XzZ9LAorICAgIHszLCBhcmNzXzc1Xzd9LAorICAgIHsyLCBhcmNzXzc1Xzh9LAorICAgIHszLCBhcmNzXzc1Xzl9LAorICAgIHsxLCBhcmNzXzc1XzEwfSwKKyAgICB7MSwgYXJjc183NV8xMX0sCisgICAgezEsIGFyY3NfNzVfMTJ9LAorICAgIHsyLCBhcmNzXzc1XzEzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzZfMFsxXSA9IHsKKyAgICB7MTY4LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzZfMVsxXSA9IHsKKyAgICB7MjMsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183Nl8yWzJdID0geworICAgIHsxMywgM30sCisgICAgezI3LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzZfM1syXSA9IHsKKyAgICB7MTQsIDV9LAorICAgIHsxNSwgNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc2XzRbMV0gPSB7CisgICAgezI4LCA3fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzZfNVsxXSA9IHsKKyAgICB7MTUsIDZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183Nl82WzFdID0geworICAgIHsyNywgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc2XzdbMV0gPSB7CisgICAgezAsIDd9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzZbOF0gPSB7CisgICAgezEsIGFyY3NfNzZfMH0sCisgICAgezEsIGFyY3NfNzZfMX0sCisgICAgezIsIGFyY3NfNzZfMn0sCisgICAgezIsIGFyY3NfNzZfM30sCisgICAgezEsIGFyY3NfNzZfNH0sCisgICAgezEsIGFyY3NfNzZfNX0sCisgICAgezEsIGFyY3NfNzZfNn0sCisgICAgezEsIGFyY3NfNzZfN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzBbMV0gPSB7CisgICAgezE2OSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzFbMl0gPSB7CisgICAgezMyLCAyfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzJbMl0gPSB7CisgICAgezE2OSwgMX0sCiAgICAgezAsIDJ9LAogfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzdbM10gPSB7CisgICAgezEsIGFyY3NfNzdfMH0sCisgICAgezIsIGFyY3NfNzdfMX0sCisgICAgezIsIGFyY3NfNzdfMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc4XzBbM10gPSB7CisgICAgezI2LCAxfSwKKyAgICB7MzQsIDJ9LAorICAgIHszMywgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc4XzFbM10gPSB7CisgICAgezE2NCwgM30sCisgICAgezMxLCAyfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc4XzJbMV0gPSB7CisgICAgezI2LCAzfSwKK307CiBzdGF0aWMgYXJjIGFyY3NfNzhfM1sxXSA9IHsKICAgICB7MCwgM30sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc183OFs0XSA9IHsKLSAgICB7MSwgYXJjc183OF8wfSwKLSAgICB7MSwgYXJjc183OF8xfSwKLSAgICB7MiwgYXJjc183OF8yfSwKKyAgICB7MywgYXJjc183OF8wfSwKKyAgICB7MywgYXJjc183OF8xfSwKKyAgICB7MSwgYXJjc183OF8yfSwKICAgICB7MSwgYXJjc183OF8zfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzlfMFsxXSA9IHsKLSAgICB7MjEsIDF9LAorc3RhdGljIGFyYyBhcmNzXzc5XzBbMl0gPSB7CisgICAgezE2NCwgMX0sCisgICAgezE3MSwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzc5XzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzlbMl0gPSB7Ci0gICAgezEsIGFyY3NfNzlfMH0sCisgICAgezIsIGFyY3NfNzlfMH0sCiAgICAgezEsIGFyY3NfNzlfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgwXzBbMV0gPSB7Ci0gICAgezE2NywgMX0sCisgICAgezEwMCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzgwXzFbMl0gPSB7Ci0gICAgezE2OCwgMn0sCi0gICAgezAsIDF9LAorc3RhdGljIGFyYyBhcmNzXzgwXzFbMV0gPSB7CisgICAgezY1LCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODBfMlsxXSA9IHsKLSAgICB7MCwgMn0sCisgICAgezEwMSwgM30sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc184MFszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc184MF8zWzFdID0geworICAgIHsxMTEsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184MF80WzJdID0geworICAgIHsxNzAsIDV9LAorICAgIHswLCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfODBfNVsxXSA9IHsKKyAgICB7MCwgNX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc184MFs2XSA9IHsKICAgICB7MSwgYXJjc184MF8wfSwKLSAgICB7MiwgYXJjc184MF8xfSwKKyAgICB7MSwgYXJjc184MF8xfSwKICAgICB7MSwgYXJjc184MF8yfSwKKyAgICB7MSwgYXJjc184MF8zfSwKKyAgICB7MiwgYXJjc184MF80fSwKKyAgICB7MSwgYXJjc184MF81fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfODFfMFsyXSA9IHsKLSAgICB7NzMsIDF9LAotICAgIHs5LCAyfSwKK3N0YXRpYyBhcmMgYXJjc184MV8wWzFdID0geworICAgIHs5NiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgxXzFbMV0gPSB7Ci0gICAgezI0LCAyfSwKKyAgICB7MTEzLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfODFfMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc184MV8yWzJdID0geworICAgIHsxNzAsIDN9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzgxWzNdID0gewotICAgIHsyLCBhcmNzXzgxXzB9LAotICAgIHsxLCBhcmNzXzgxXzF9LAotICAgIHsxLCBhcmNzXzgxXzJ9LAorc3RhdGljIGFyYyBhcmNzXzgxXzNbMV0gPSB7CisgICAgezAsIDN9LAogfTsKLXN0YXRpYyBkZmEgZGZhc1s4Ml0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzgxWzRdID0geworICAgIHsxLCBhcmNzXzgxXzB9LAorICAgIHsxLCBhcmNzXzgxXzF9LAorICAgIHsyLCBhcmNzXzgxXzJ9LAorICAgIHsxLCBhcmNzXzgxXzN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184Ml8wWzFdID0geworICAgIHsyMywgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzgyXzFbMV0gPSB7CisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODJbMl0gPSB7CisgICAgezEsIGFyY3NfODJfMH0sCisgICAgezEsIGFyY3NfODJfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzgzXzBbMV0gPSB7CisgICAgezE3MywgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzgzXzFbMl0gPSB7CisgICAgezE3NCwgMn0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184M18yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzgzWzNdID0geworICAgIHsxLCBhcmNzXzgzXzB9LAorICAgIHsyLCBhcmNzXzgzXzF9LAorICAgIHsxLCBhcmNzXzgzXzJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184NF8wWzJdID0geworICAgIHs3NiwgMX0sCisgICAgezksIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184NF8xWzFdID0geworICAgIHsyNiwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzg0XzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODRbM10gPSB7CisgICAgezIsIGFyY3NfODRfMH0sCisgICAgezEsIGFyY3NfODRfMX0sCisgICAgezEsIGFyY3NfODRfMn0sCit9Oworc3RhdGljIGRmYSBkZmFzWzg1XSA9IHsKICAgICB7MjU2LCAic2luZ2xlX2lucHV0IiwgMCwgMywgc3RhdGVzXzAsCi0gICAgICJcMDA0XDA1MFwwNjBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwyMjBcMDQ1XDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDRcMDAwIn0sCisgICAgICJcMDA0XDA1MFwzNDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMTMxXDAwMlwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQxIn0sCiAgICAgezI1NywgImZpbGVfaW5wdXQiLCAwLCAyLCBzdGF0ZXNfMSwKLSAgICAgIlwyMDRcMDUwXDA2MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDIyMFwwNDVcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwNFwwMDAifSwKKyAgICAgIlwyMDRcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wxMzFcMDAyXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDEifSwKICAgICB7MjU4LCAiZXZhbF9pbnB1dCIsIDAsIDMsIHN0YXRlc18yLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAogICAgIHsyNTksICJkZWNvcmF0b3IiLCAwLCA3LCBzdGF0ZXNfMywKICAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKICAgICB7MjYwLCAiZGVjb3JhdG9ycyIsIDAsIDIsIHN0YXRlc180LAogICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAogICAgIHsyNjEsICJkZWNvcmF0ZWQiLCAwLCAzLCBzdGF0ZXNfNSwKICAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjYyLCAiZnVuY2RlZiIsIDAsIDgsIHN0YXRlc182LAotICAgICAiXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjMsICJwYXJhbWV0ZXJzIiwgMCwgNCwgc3RhdGVzXzcsCisgICAgezI2MiwgImFzeW5jX2Z1bmNkZWYiLCAwLCAzLCBzdGF0ZXNfNiwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjYzLCAiZnVuY2RlZiIsIDAsIDgsIHN0YXRlc183LAorICAgICAiXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjQsICJwYXJhbWV0ZXJzIiwgMCwgNCwgc3RhdGVzXzgsCiAgICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NCwgInR5cGVkYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzgsCi0gICAgICJcMDAwXDAwMFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NSwgInRmcGRlZiIsIDAsIDQsIHN0YXRlc185LAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjYsICJ2YXJhcmdzbGlzdCIsIDAsIDE4LCBzdGF0ZXNfMTAsCi0gICAgICJcMDAwXDAwMFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NywgInZmcGRlZiIsIDAsIDIsIHN0YXRlc18xMSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY4LCAic3RtdCIsIDAsIDIsIHN0YXRlc18xMiwKLSAgICAgIlwwMDBcMDUwXDA2MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDIyMFwwNDVcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwNFwwMDAifSwKLSAgICB7MjY5LCAic2ltcGxlX3N0bXQiLCAwLCA0LCBzdGF0ZXNfMTMsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDBcMDAwIn0sCi0gICAgezI3MCwgInNtYWxsX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMTQsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDBcMDAwIn0sCi0gICAgezI3MSwgImV4cHJfc3RtdCIsIDAsIDYsIHN0YXRlc18xNSwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MjcyLCAidGVzdGxpc3Rfc3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzE2LAotICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHsyNzMsICJhdWdhc3NpZ24iLCAwLCAyLCBzdGF0ZXNfMTcsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzc2XDAzN1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3NCwgImRlbF9zdG10IiwgMCwgMywgc3RhdGVzXzE4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzUsICJwYXNzX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMTksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3NiwgImZsb3dfc3RtdCIsIDAsIDIsIHN0YXRlc18yMCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDM0MFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDAifSwKLSAgICB7Mjc3LCAiYnJlYWtfc3RtdCIsIDAsIDIsIHN0YXRlc18yMSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc4LCAiY29udGludWVfc3RtdCIsIDAsIDIsIHN0YXRlc18yMiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc5LCAicmV0dXJuX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMjMsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MCwgInlpZWxkX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjQsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwIn0sCi0gICAgezI4MSwgInJhaXNlX3N0bXQiLCAwLCA1LCBzdGF0ZXNfMjUsCisgICAgezI2NSwgInR5cGVkYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzksCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2NiwgInRmcGRlZiIsIDAsIDQsIHN0YXRlc18xMCwKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjY3LCAidmFyYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzExLAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjgsICJ2ZnBkZWYiLCAwLCAyLCBzdGF0ZXNfMTIsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2OSwgInN0bXQiLCAwLCAyLCBzdGF0ZXNfMTMsCisgICAgICJcMDAwXDA1MFwzNDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMTMxXDAwMlwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQxIn0sCisgICAgezI3MCwgInNpbXBsZV9zdG10IiwgMCwgNCwgc3RhdGVzXzE0LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MCJ9LAorICAgIHsyNzEsICJzbWFsbF9zdG10IiwgMCwgMiwgc3RhdGVzXzE1LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MCJ9LAorICAgIHsyNzIsICJleHByX3N0bXQiLCAwLCA2LCBzdGF0ZXNfMTYsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezI3MywgInRlc3RsaXN0X3N0YXJfZXhwciIsIDAsIDMsIHN0YXRlc18xNywKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7Mjc0LCAiYXVnYXNzaWduIiwgMCwgMiwgc3RhdGVzXzE4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDM3MFwzNzdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzUsICJkZWxfc3RtdCIsIDAsIDMsIHN0YXRlc18xOSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjc2LCAicGFzc19zdG10IiwgMCwgMiwgc3RhdGVzXzIwLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzcsICJmbG93X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjEsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDE3XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwIn0sCisgICAgezI3OCwgImJyZWFrX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjIsCiAgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MiwgImltcG9ydF9zdG10IiwgMCwgMiwgc3RhdGVzXzI2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODMsICJpbXBvcnRfbmFtZSIsIDAsIDMsIHN0YXRlc18yNywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg0LCAiaW1wb3J0X2Zyb20iLCAwLCA4LCBzdGF0ZXNfMjgsCisgICAgezI3OSwgImNvbnRpbnVlX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjMsCiAgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NSwgImltcG9ydF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzI5LAorICAgIHsyODAsICJyZXR1cm5fc3RtdCIsIDAsIDMsIHN0YXRlc18yNCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjgxLCAieWllbGRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDAifSwKKyAgICB7MjgyLCAicmFpc2Vfc3RtdCIsIDAsIDUsIHN0YXRlc18yNiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjgzLCAiaW1wb3J0X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjcsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NCwgImltcG9ydF9uYW1lIiwgMCwgMywgc3RhdGVzXzI4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODUsICJpbXBvcnRfZnJvbSIsIDAsIDgsIHN0YXRlc18yOSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg2LCAiaW1wb3J0X2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzAsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NywgImRvdHRlZF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzMxLAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODgsICJpbXBvcnRfYXNfbmFtZXMiLCAwLCAzLCBzdGF0ZXNfMzIsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4OSwgImRvdHRlZF9hc19uYW1lcyIsIDAsIDIsIHN0YXRlc18zMywKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkwLCAiZG90dGVkX25hbWUiLCAwLCAyLCBzdGF0ZXNfMzQsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MSwgImdsb2JhbF9zdG10IiwgMCwgMywgc3RhdGVzXzM1LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTIsICJub25sb2NhbF9zdG10IiwgMCwgMywgc3RhdGVzXzM2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTMsICJhc3NlcnRfc3RtdCIsIDAsIDUsIHN0YXRlc18zNywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk0LCAiY29tcG91bmRfc3RtdCIsIDAsIDIsIHN0YXRlc18zOCwKKyAgICAgIlwwMDBcMDEwXDE0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMzFcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDEifSwKKyAgICB7Mjk1LCAiYXN5bmNfc3RtdCIsIDAsIDMsIHN0YXRlc18zOSwKICAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg2LCAiZG90dGVkX2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzAsCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NywgImltcG9ydF9hc19uYW1lcyIsIDAsIDMsIHN0YXRlc18zMSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg4LCAiZG90dGVkX2FzX25hbWVzIiwgMCwgMiwgc3RhdGVzXzMyLAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODksICJkb3R0ZWRfbmFtZSIsIDAsIDIsIHN0YXRlc18zMywKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkwLCAiZ2xvYmFsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzQsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MSwgIm5vbmxvY2FsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzUsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MiwgImFzc2VydF9zdG10IiwgMCwgNSwgc3RhdGVzXzM2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTMsICJjb21wb3VuZF9zdG10IiwgMCwgMiwgc3RhdGVzXzM3LAotICAgICAiXDAwMFwwMTBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjIwXDA0NVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMCJ9LAotICAgIHsyOTQsICJpZl9zdG10IiwgMCwgOCwgc3RhdGVzXzM4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTUsICJ3aGlsZV9zdG10IiwgMCwgOCwgc3RhdGVzXzM5LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTYsICJmb3Jfc3RtdCIsIDAsIDEwLCBzdGF0ZXNfNDAsCisgICAgezI5NiwgImlmX3N0bXQiLCAwLCA4LCBzdGF0ZXNfNDAsCiAgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5NywgInRyeV9zdG10IiwgMCwgMTMsIHN0YXRlc180MSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk4LCAid2l0aF9zdG10IiwgMCwgNSwgc3RhdGVzXzQyLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTksICJ3aXRoX2l0ZW0iLCAwLCA0LCBzdGF0ZXNfNDMsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMwMCwgImV4Y2VwdF9jbGF1c2UiLCAwLCA1LCBzdGF0ZXNfNDQsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwMSwgInN1aXRlIiwgMCwgNSwgc3RhdGVzXzQ1LAotICAgICAiXDAwNFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjAwXDAwMCJ9LAotICAgIHszMDIsICJ0ZXN0IiwgMCwgNiwgc3RhdGVzXzQ2LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMDMsICJ0ZXN0X25vY29uZCIsIDAsIDIsIHN0YXRlc180NywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzA0LCAibGFtYmRlZiIsIDAsIDUsIHN0YXRlc180OCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzA1LCAibGFtYmRlZl9ub2NvbmQiLCAwLCA1LCBzdGF0ZXNfNDksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwNiwgIm9yX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTAsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMwNywgImFuZF90ZXN0IiwgMCwgMiwgc3RhdGVzXzUxLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMDgsICJub3RfdGVzdCIsIDAsIDMsIHN0YXRlc181MiwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzA5LCAiY29tcGFyaXNvbiIsIDAsIDIsIHN0YXRlc181MywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzEwLCAiY29tcF9vcCIsIDAsIDQsIHN0YXRlc181NCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDIyMFwxNzdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzExLCAic3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzU1LAotICAgICAiXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMTIsICJleHByIiwgMCwgMiwgc3RhdGVzXzU2LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMTMsICJ4b3JfZXhwciIsIDAsIDIsIHN0YXRlc181NywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzE0LCAiYW5kX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTgsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMxNSwgInNoaWZ0X2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTksCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMxNiwgImFyaXRoX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjAsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMxNywgInRlcm0iLCAwLCAyLCBzdGF0ZXNfNjEsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMxOCwgImZhY3RvciIsIDAsIDMsIHN0YXRlc182MiwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzE5LCAicG93ZXIiLCAwLCA0LCBzdGF0ZXNfNjMsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMyMCwgImF0b20iLCAwLCA5LCBzdGF0ZXNfNjQsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMyMSwgInRlc3RsaXN0X2NvbXAiLCAwLCA1LCBzdGF0ZXNfNjUsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMyMiwgInRyYWlsZXIiLCAwLCA3LCBzdGF0ZXNfNjYsCi0gICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMyMywgInN1YnNjcmlwdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNjcsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMyNCwgInN1YnNjcmlwdCIsIDAsIDUsIHN0YXRlc182OCwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzI1LCAic2xpY2VvcCIsIDAsIDMsIHN0YXRlc182OSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzI2LCAiZXhwcmxpc3QiLCAwLCAzLCBzdGF0ZXNfNzAsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMyNywgInRlc3RsaXN0IiwgMCwgMywgc3RhdGVzXzcxLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMjgsICJkaWN0b3JzZXRtYWtlciIsIDAsIDExLCBzdGF0ZXNfNzIsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMyOSwgImNsYXNzZGVmIiwgMCwgOCwgc3RhdGVzXzczLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMCJ9LAotICAgIHszMzAsICJhcmdsaXN0IiwgMCwgOCwgc3RhdGVzXzc0LAotICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMzEsICJhcmd1bWVudCIsIDAsIDQsIHN0YXRlc183NSwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzMyLCAiY29tcF9pdGVyIiwgMCwgMiwgc3RhdGVzXzc2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzMsICJjb21wX2ZvciIsIDAsIDYsIHN0YXRlc183NywKKyAgICB7Mjk3LCAid2hpbGVfc3RtdCIsIDAsIDgsIHN0YXRlc180MSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk4LCAiZm9yX3N0bXQiLCAwLCAxMCwgc3RhdGVzXzQyLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTksICJ0cnlfc3RtdCIsIDAsIDEzLCBzdGF0ZXNfNDMsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwMCwgIndpdGhfc3RtdCIsIDAsIDUsIHN0YXRlc180NCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzAxLCAid2l0aF9pdGVtIiwgMCwgNCwgc3RhdGVzXzQ1LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMDIsICJleGNlcHRfY2xhdXNlIiwgMCwgNSwgc3RhdGVzXzQ2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDMsICJzdWl0ZSIsIDAsIDUsIHN0YXRlc180NywKKyAgICAgIlwwMDRcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDAifSwKKyAgICB7MzA0LCAidGVzdCIsIDAsIDYsIHN0YXRlc180OCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzA1LCAidGVzdF9ub2NvbmQiLCAwLCAyLCBzdGF0ZXNfNDksCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMwNiwgImxhbWJkZWYiLCAwLCA1LCBzdGF0ZXNfNTAsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwNywgImxhbWJkZWZfbm9jb25kIiwgMCwgNSwgc3RhdGVzXzUxLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDgsICJvcl90ZXN0IiwgMCwgMiwgc3RhdGVzXzUyLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMDksICJhbmRfdGVzdCIsIDAsIDIsIHN0YXRlc181MywKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzEwLCAibm90X3Rlc3QiLCAwLCAzLCBzdGF0ZXNfNTQsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMxMSwgImNvbXBhcmlzb24iLCAwLCAyLCBzdGF0ZXNfNTUsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMxMiwgImNvbXBfb3AiLCAwLCA0LCBzdGF0ZXNfNTYsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMzcxXDAwN1wwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMxMywgInN0YXJfZXhwciIsIDAsIDMsIHN0YXRlc181NywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzE0LCAiZXhwciIsIDAsIDIsIHN0YXRlc181OCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzE1LCAieG9yX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTksCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMxNiwgImFuZF9leHByIiwgMCwgMiwgc3RhdGVzXzYwLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMTcsICJzaGlmdF9leHByIiwgMCwgMiwgc3RhdGVzXzYxLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMTgsICJhcml0aF9leHByIiwgMCwgMiwgc3RhdGVzXzYyLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMTksICJ0ZXJtIiwgMCwgMiwgc3RhdGVzXzYzLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMjAsICJmYWN0b3IiLCAwLCAzLCBzdGF0ZXNfNjQsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMyMSwgInBvd2VyIiwgMCwgNCwgc3RhdGVzXzY1LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMjIsICJhdG9tX2V4cHIiLCAwLCAzLCBzdGF0ZXNfNjYsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDIyNFwwMTdcMDAwIn0sCisgICAgezMyMywgImF0b20iLCAwLCA5LCBzdGF0ZXNfNjcsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIyNFwwMTdcMDAwIn0sCisgICAgezMyNCwgInRlc3RsaXN0X2NvbXAiLCAwLCA1LCBzdGF0ZXNfNjgsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMyNSwgInRyYWlsZXIiLCAwLCA3LCBzdGF0ZXNfNjksCisgICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwIn0sCisgICAgezMyNiwgInN1YnNjcmlwdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNzAsCisgICAgICJcMDAwXDA0MFwyMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMyNywgInN1YnNjcmlwdCIsIDAsIDUsIHN0YXRlc183MSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzI4LCAic2xpY2VvcCIsIDAsIDMsIHN0YXRlc183MiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzI5LCAiZXhwcmxpc3QiLCAwLCAzLCBzdGF0ZXNfNzMsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMzMCwgInRlc3RsaXN0IiwgMCwgMywgc3RhdGVzXzc0LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMzEsICJkaWN0b3JzZXRtYWtlciIsIDAsIDE0LCBzdGF0ZXNfNzUsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMzMiwgImNsYXNzZGVmIiwgMCwgOCwgc3RhdGVzXzc2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMSJ9LAorICAgIHszMzMsICJhcmdsaXN0IiwgMCwgMywgc3RhdGVzXzc3LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMzQsICJhcmd1bWVudCIsIDAsIDQsIHN0YXRlc183OCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzM1LCAiY29tcF9pdGVyIiwgMCwgMiwgc3RhdGVzXzc5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzYsICJjb21wX2ZvciIsIDAsIDYsIHN0YXRlc184MCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzM3LCAiY29tcF9pZiIsIDAsIDQsIHN0YXRlc184MSwKICAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM0LCAiY29tcF9pZiIsIDAsIDQsIHN0YXRlc183OCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM1LCAiZW5jb2RpbmdfZGVjbCIsIDAsIDIsIHN0YXRlc183OSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM2LCAieWllbGRfZXhwciIsIDAsIDMsIHN0YXRlc184MCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDAifSwKLSAgICB7MzM3LCAieWllbGRfYXJnIiwgMCwgMywgc3RhdGVzXzgxLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMlwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMzgsICJlbmNvZGluZ19kZWNsIiwgMCwgMiwgc3RhdGVzXzgyLAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzksICJ5aWVsZF9leHByIiwgMCwgMywgc3RhdGVzXzgzLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MCJ9LAorICAgIHszNDAsICJ5aWVsZF9hcmciLCAwLCAzLCBzdGF0ZXNfODQsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCiB9Owotc3RhdGljIGxhYmVsIGxhYmVsc1sxNjldID0geworc3RhdGljIGxhYmVsIGxhYmVsc1sxNzVdID0gewogICAgIHswLCAiRU1QVFkifSwKICAgICB7MjU2LCAwfSwKICAgICB7NCwgMH0sCi0gICAgezI2OSwgMH0sCi0gICAgezI5MywgMH0sCisgICAgezI3MCwgMH0sCisgICAgezI5NCwgMH0sCiAgICAgezI1NywgMH0sCi0gICAgezI2OCwgMH0sCisgICAgezI2OSwgMH0sCiAgICAgezAsIDB9LAogICAgIHsyNTgsIDB9LAotICAgIHszMjcsIDB9LAorICAgIHszMzAsIDB9LAogICAgIHsyNTksIDB9LAogICAgIHs0OSwgMH0sCi0gICAgezI4OSwgMH0sCisgICAgezI5MCwgMH0sCiAgICAgezcsIDB9LAotICAgIHszMzAsIDB9LAorICAgIHszMzMsIDB9LAogICAgIHs4LCAwfSwKICAgICB7MjYwLCAwfSwKICAgICB7MjYxLCAwfSwKLSAgICB7MzI5LCAwfSwKKyAgICB7MzMyLCAwfSwKKyAgICB7MjYzLCAwfSwKICAgICB7MjYyLCAwfSwKKyAgICB7NTUsIDB9LAogICAgIHsxLCAiZGVmIn0sCiAgICAgezEsIDB9LAotICAgIHsyNjMsIDB9LAotICAgIHs1MCwgMH0sCi0gICAgezMwMiwgMH0sCi0gICAgezExLCAwfSwKLSAgICB7MzAxLCAwfSwKICAgICB7MjY0LCAwfSwKKyAgICB7NTEsIDB9LAorICAgIHszMDQsIDB9LAorICAgIHsxMSwgMH0sCisgICAgezMwMywgMH0sCiAgICAgezI2NSwgMH0sCisgICAgezI2NiwgMH0sCiAgICAgezIyLCAwfSwKICAgICB7MTIsIDB9LAogICAgIHsxNiwgMH0sCiAgICAgezM1LCAwfSwKLSAgICB7MjY2LCAwfSwKICAgICB7MjY3LCAwfSwKLSAgICB7MjcwLCAwfSwKLSAgICB7MTMsIDB9LAorICAgIHsyNjgsIDB9LAogICAgIHsyNzEsIDB9LAotICAgIHsyNzQsIDB9LAorICAgIHsxMywgMH0sCisgICAgezI3MiwgMH0sCiAgICAgezI3NSwgMH0sCiAgICAgezI3NiwgMH0sCi0gICAgezI4MiwgMH0sCi0gICAgezI5MCwgMH0sCisgICAgezI3NywgMH0sCisgICAgezI4MywgMH0sCiAgICAgezI5MSwgMH0sCiAgICAgezI5MiwgMH0sCi0gICAgezI3MiwgMH0sCisgICAgezI5MywgMH0sCiAgICAgezI3MywgMH0sCi0gICAgezMzNiwgMH0sCi0gICAgezMxMSwgMH0sCisgICAgezI3NCwgMH0sCisgICAgezMzOSwgMH0sCisgICAgezMxMywgMH0sCiAgICAgezM2LCAwfSwKICAgICB7MzcsIDB9LAogICAgIHszOCwgMH0sCisgICAgezUwLCAwfSwKICAgICB7MzksIDB9LAogICAgIHs0MCwgMH0sCiAgICAgezQxLCAwfSwKQEAgLTIwNDYsMzYgKzIwOTgsMzcgQEAKICAgICB7NDYsIDB9LAogICAgIHs0OCwgMH0sCiAgICAgezEsICJkZWwifSwKLSAgICB7MzI2LCAwfSwKKyAgICB7MzI5LCAwfSwKICAgICB7MSwgInBhc3MifSwKLSAgICB7Mjc3LCAwfSwKICAgICB7Mjc4LCAwfSwKICAgICB7Mjc5LCAwfSwKLSAgICB7MjgxLCAwfSwKICAgICB7MjgwLCAwfSwKKyAgICB7MjgyLCAwfSwKKyAgICB7MjgxLCAwfSwKICAgICB7MSwgImJyZWFrIn0sCiAgICAgezEsICJjb250aW51ZSJ9LAogICAgIHsxLCAicmV0dXJuIn0sCiAgICAgezEsICJyYWlzZSJ9LAogICAgIHsxLCAiZnJvbSJ9LAotICAgIHsyODMsIDB9LAogICAgIHsyODQsIDB9LAotICAgIHsxLCAiaW1wb3J0In0sCi0gICAgezI4OCwgMH0sCi0gICAgezIzLCAwfSwKLSAgICB7NTEsIDB9LAotICAgIHsyODcsIDB9LAogICAgIHsyODUsIDB9LAotICAgIHsxLCAiYXMifSwKKyAgICB7MSwgImltcG9ydCJ9LAorICAgIHsyODksIDB9LAorICAgIHsyMywgMH0sCisgICAgezUyLCAwfSwKKyAgICB7Mjg4LCAwfSwKICAgICB7Mjg2LCAwfSwKKyAgICB7MSwgImFzIn0sCisgICAgezI4NywgMH0sCiAgICAgezEsICJnbG9iYWwifSwKICAgICB7MSwgIm5vbmxvY2FsIn0sCiAgICAgezEsICJhc3NlcnQifSwKLSAgICB7Mjk0LCAwfSwKLSAgICB7Mjk1LCAwfSwKICAgICB7Mjk2LCAwfSwKICAgICB7Mjk3LCAwfSwKICAgICB7Mjk4LCAwfSwKKyAgICB7Mjk5LCAwfSwKKyAgICB7MzAwLCAwfSwKKyAgICB7Mjk1LCAwfSwKICAgICB7MSwgImlmIn0sCiAgICAgezEsICJlbGlmIn0sCiAgICAgezEsICJlbHNlIn0sCkBAIC0yMDgzLDI2ICsyMTM2LDI2IEBACiAgICAgezEsICJmb3IifSwKICAgICB7MSwgImluIn0sCiAgICAgezEsICJ0cnkifSwKLSAgICB7MzAwLCAwfSwKKyAgICB7MzAyLCAwfSwKICAgICB7MSwgImZpbmFsbHkifSwKICAgICB7MSwgIndpdGgifSwKLSAgICB7Mjk5LCAwfSwKLSAgICB7MzEyLCAwfSwKKyAgICB7MzAxLCAwfSwKKyAgICB7MzE0LCAwfSwKICAgICB7MSwgImV4Y2VwdCJ9LAogICAgIHs1LCAwfSwKICAgICB7NiwgMH0sCi0gICAgezMwNiwgMH0sCi0gICAgezMwNCwgMH0sCi0gICAgezMwMywgMH0sCi0gICAgezMwNSwgMH0sCi0gICAgezEsICJsYW1iZGEifSwKLSAgICB7MzA3LCAwfSwKLSAgICB7MSwgIm9yIn0sCiAgICAgezMwOCwgMH0sCisgICAgezMwNiwgMH0sCisgICAgezMwNSwgMH0sCisgICAgezMwNywgMH0sCisgICAgezEsICJsYW1iZGEifSwKKyAgICB7MzA5LCAwfSwKKyAgICB7MSwgIm9yIn0sCisgICAgezMxMCwgMH0sCiAgICAgezEsICJhbmQifSwKICAgICB7MSwgIm5vdCJ9LAotICAgIHszMDksIDB9LAotICAgIHszMTAsIDB9LAorICAgIHszMTEsIDB9LAorICAgIHszMTIsIDB9LAogICAgIHsyMCwgMH0sCiAgICAgezIxLCAwfSwKICAgICB7MjcsIDB9LApAQCAtMjExMSw1MiArMjE2NCw1NCBAQAogICAgIHsyOCwgMH0sCiAgICAgezI4LCAwfSwKICAgICB7MSwgImlzIn0sCi0gICAgezMxMywgMH0sCi0gICAgezE4LCAwfSwKLSAgICB7MzE0LCAwfSwKLSAgICB7MzIsIDB9LAogICAgIHszMTUsIDB9LAotICAgIHsxOSwgMH0sCisgICAgezE4LCAwfSwKICAgICB7MzE2LCAwfSwKKyAgICB7MzIsIDB9LAorICAgIHszMTcsIDB9LAorICAgIHsxOSwgMH0sCisgICAgezMxOCwgMH0sCiAgICAgezMzLCAwfSwKICAgICB7MzQsIDB9LAotICAgIHszMTcsIDB9LAorICAgIHszMTksIDB9LAogICAgIHsxNCwgMH0sCiAgICAgezE1LCAwfSwKLSAgICB7MzE4LCAwfSwKKyAgICB7MzIwLCAwfSwKICAgICB7MTcsIDB9LAogICAgIHsyNCwgMH0sCiAgICAgezQ3LCAwfSwKICAgICB7MzEsIDB9LAotICAgIHszMTksIDB9LAotICAgIHszMjAsIDB9LAotICAgIHszMjIsIDB9LAogICAgIHszMjEsIDB9LAorICAgIHszMjIsIDB9LAorICAgIHs1NCwgMH0sCisgICAgezMyMywgMH0sCisgICAgezMyNSwgMH0sCisgICAgezMyNCwgMH0sCiAgICAgezksIDB9LAogICAgIHsxMCwgMH0sCiAgICAgezI1LCAwfSwKLSAgICB7MzI4LCAwfSwKKyAgICB7MzMxLCAwfSwKICAgICB7MjYsIDB9LAogICAgIHsyLCAwfSwKICAgICB7MywgMH0sCiAgICAgezEsICJOb25lIn0sCiAgICAgezEsICJUcnVlIn0sCiAgICAgezEsICJGYWxzZSJ9LAotICAgIHszMzMsIDB9LAotICAgIHszMjMsIDB9LAotICAgIHszMjQsIDB9LAotICAgIHszMjUsIDB9LAorICAgIHszMzYsIDB9LAorICAgIHszMjYsIDB9LAorICAgIHszMjcsIDB9LAorICAgIHszMjgsIDB9LAogICAgIHsxLCAiY2xhc3MifSwKLSAgICB7MzMxLCAwfSwKLSAgICB7MzMyLCAwfSwKICAgICB7MzM0LCAwfSwKICAgICB7MzM1LCAwfSwKLSAgICB7MSwgInlpZWxkIn0sCiAgICAgezMzNywgMH0sCisgICAgezMzOCwgMH0sCisgICAgezEsICJ5aWVsZCJ9LAorICAgIHszNDAsIDB9LAogfTsKIGdyYW1tYXIgX1B5UGFyc2VyX0dyYW1tYXIgPSB7Ci0gICAgODIsCisgICAgODUsCiAgICAgZGZhcywKLSAgICB7MTY5LCBsYWJlbHN9LAorICAgIHsxNzUsIGxhYmVsc30sCiAgICAgMjU2CiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydC5jIGIvUHl0aG9uL2ltcG9ydC5jCmluZGV4IDRmMDc2NWEuLmVkZjAzMGQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnQuYworKysgYi9QeXRob24vaW1wb3J0LmMKQEAgLTM2LDYgKzM2LDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTljMzMyNDc1ZDg2ODYyODRdKi8KIAorI2luY2x1ZGUgImNsaW5pYy9pbXBvcnQuYy5oIgorCiAvKltweXRob24gaW5wdXRdCiBjbGFzcyBmc191bmljb2RlX2NvbnZlcnRlcihDQ29udmVydGVyKToKICAgICB0eXBlID0gJ1B5T2JqZWN0IConCkBAIC0yMzksMjkgKzI0MSw5IEBACiBPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCByZXR1cm4gRmFsc2UuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfaW1wX2xvY2tfaGVsZF9fZG9jX18sCi0ibG9ja19oZWxkKCRtb2R1bGUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJSZXR1cm4gVHJ1ZSBpZiB0aGUgaW1wb3J0IGxvY2sgaXMgY3VycmVudGx5IGhlbGQsIGVsc2UgRmFsc2UuXG4iCi0iXG4iCi0iT24gcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgcmV0dXJuIEZhbHNlLiIpOwotCi0jZGVmaW5lIF9JTVBfTE9DS19IRUxEX01FVEhPRERFRiAgICBcCi0gICAgeyJsb2NrX2hlbGQiLCAoUHlDRnVuY3Rpb24pX2ltcF9sb2NrX2hlbGQsIE1FVEhfTk9BUkdTLCBfaW1wX2xvY2tfaGVsZF9fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9sb2NrX2hlbGRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfbG9ja19oZWxkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCi17Ci0gICAgcmV0dXJuIF9pbXBfbG9ja19oZWxkX2ltcGwobW9kdWxlKTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIF9pbXBfbG9ja19oZWxkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYWU2NTY3NDk2NmJhYTY1IGlucHV0PTliMDg4ZjliMjE3ZDliZGZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kN2E4Y2MzYTUxNjkwODFhIGlucHV0PTliMDg4ZjliMjE3ZDliZGZdKi8KIHsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoaW1wb3J0X2xvY2tfdGhyZWFkICE9IC0xKTsKQEAgLTI3OSwzMCArMjYxLDkgQEAKIG1vZHVsZXMuIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX2ltcF9hY3F1aXJlX2xvY2tfX2RvY19fLAotImFjcXVpcmVfbG9jaygkbW9kdWxlLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iQWNxdWlyZXMgdGhlIGludGVycHJldGVyXCdzIGltcG9ydCBsb2NrIGZvciB0aGUgY3VycmVudCB0aHJlYWQuXG4iCi0iXG4iCi0iVGhpcyBsb2NrIHNob3VsZCBiZSB1c2VkIGJ5IGltcG9ydCBob29rcyB0byBlbnN1cmUgdGhyZWFkLXNhZmV0eSB3aGVuIGltcG9ydGluZ1xuIgotIm1vZHVsZXMuIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIpOwotCi0jZGVmaW5lIF9JTVBfQUNRVUlSRV9MT0NLX01FVEhPRERFRiAgICBcCi0gICAgeyJhY3F1aXJlX2xvY2siLCAoUHlDRnVuY3Rpb24pX2ltcF9hY3F1aXJlX2xvY2ssIE1FVEhfTk9BUkdTLCBfaW1wX2FjcXVpcmVfbG9ja19fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9hY3F1aXJlX2xvY2tfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfYWNxdWlyZV9sb2NrKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCi17Ci0gICAgcmV0dXJuIF9pbXBfYWNxdWlyZV9sb2NrX2ltcGwobW9kdWxlKTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIF9pbXBfYWNxdWlyZV9sb2NrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NzhmMWZhMDg5ZmRiOWE0IGlucHV0PTRhMmQ0MzgxODY2ZDVmZGNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYzE0M2IxZDE2NDIyY2FlIGlucHV0PTRhMmQ0MzgxODY2ZDVmZGNdKi8KIHsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIF9QeUltcG9ydF9BY3F1aXJlTG9jaygpOwpAQCAtMzE5LDI5ICsyODAsOSBAQAogT24gcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfaW1wX3JlbGVhc2VfbG9ja19fZG9jX18sCi0icmVsZWFzZV9sb2NrKCRtb2R1bGUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJSZWxlYXNlIHRoZSBpbnRlcnByZXRlclwncyBpbXBvcnQgbG9jay5cbiIKLSJcbiIKLSJPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iKTsKLQotI2RlZmluZSBfSU1QX1JFTEVBU0VfTE9DS19NRVRIT0RERUYgICAgXAotICAgIHsicmVsZWFzZV9sb2NrIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfcmVsZWFzZV9sb2NrLCBNRVRIX05PQVJHUywgX2ltcF9yZWxlYXNlX2xvY2tfX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfcmVsZWFzZV9sb2NrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX3JlbGVhc2VfbG9jayhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQotewotICAgIHJldHVybiBfaW1wX3JlbGVhc2VfbG9ja19pbXBsKG1vZHVsZSk7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBfaW1wX3JlbGVhc2VfbG9ja19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzZjNzdhNjgzMmZkYWZkNCBpbnB1dD05MzRmYjExNTE2ZGQ3NzhiXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzRkMjhlMzhlYmUyYjIyNCBpbnB1dD05MzRmYjExNTE2ZGQ3NzhiXSovCiB7CiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBpZiAoX1B5SW1wb3J0X1JlbGVhc2VMb2NrKCkgPCAwKSB7CkBAIC01NTAsOCArNDkxLDEzIEBACiB7CiAgICAgbG9uZyByZXM7CiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dldCgpLT5pbnRlcnA7Ci0gICAgUHlPYmplY3QgKnB5Y19tYWdpYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW50ZXJwLT5pbXBvcnRsaWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9SQVdfTUFHSUNfTlVNQkVSIik7CisgICAgUHlPYmplY3QgKmV4dGVybmFsLCAqcHljX21hZ2ljOworCisgICAgZXh0ZXJuYWwgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGludGVycC0+aW1wb3J0bGliLCAiX2Jvb3RzdHJhcF9leHRlcm5hbCIpOworICAgIGlmIChleHRlcm5hbCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcHljX21hZ2ljID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhleHRlcm5hbCwgIl9SQVdfTUFHSUNfTlVNQkVSIik7CisgICAgUHlfREVDUkVGKGV4dGVybmFsKTsKICAgICBpZiAocHljX21hZ2ljID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICByZXMgPSBQeUxvbmdfQXNMb25nKHB5Y19tYWdpYyk7CkBAIC03OTYsNyArNzQyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjcGF0aG5hbWUpCiB7CiAgICAgUHlPYmplY3QgKm0gPSBOVUxMOwotICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqcGF0aG9iaiA9IE5VTEwsICpjcGF0aG9iaiA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWVvYmosICpwYXRob2JqID0gTlVMTCwgKmNwYXRob2JqID0gTlVMTCwgKmV4dGVybmFsPSBOVUxMOwogCiAgICAgbmFtZW9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOwogICAgIGlmIChuYW1lb2JqID09IE5VTEwpCkBAIC04MjQsOSArNzcwLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyBpbnRlcnByZXRlciEiKTsKICAgICAgICAgfQogCi0gICAgICAgIHBhdGhvYmogPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19nZXRfc291cmNlZmlsZSwgY3BhdGhvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgZXh0ZXJuYWw9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfYm9vdHN0cmFwX2V4dGVybmFsIik7CisgICAgICAgIGlmIChleHRlcm5hbCAhPSBOVUxMKSB7CisgICAgICAgICAgICBwYXRob2JqID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoZXh0ZXJuYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX2dldF9zb3VyY2VmaWxlLCBjcGF0aG9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihleHRlcm5hbCk7CisgICAgICAgIH0KICAgICAgICAgaWYgKHBhdGhvYmogPT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgfQpAQCAtODkyLDcgKzg0Myw3IEBACiBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmNvLCBQeU9iamVjdCAqcGF0aG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY3BhdGhuYW1lKQogewotICAgIFB5T2JqZWN0ICpkLCAqcmVzOworICAgIFB5T2JqZWN0ICpkLCAqZXh0ZXJuYWwsICpyZXM7CiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgX1B5X0lERU5USUZJRVIoX2ZpeF91cF9tb2R1bGUpOwogCkBAIC05MDQsOSArODU1LDEzIEBACiAgICAgaWYgKHBhdGhuYW1lID09IE5VTEwpIHsKICAgICAgICAgcGF0aG5hbWUgPSAoKFB5Q29kZU9iamVjdCAqKWNvKS0+Y29fZmlsZW5hbWU7CiAgICAgfQotICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKGludGVycC0+aW1wb3J0bGliLAorICAgIGV4dGVybmFsID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpbnRlcnAtPmltcG9ydGxpYiwgIl9ib290c3RyYXBfZXh0ZXJuYWwiKTsKKyAgICBpZiAoZXh0ZXJuYWwgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoZXh0ZXJuYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX2ZpeF91cF9tb2R1bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCwgbmFtZSwgcGF0aG5hbWUsIGNwYXRobmFtZSwgTlVMTCk7CisgICAgUHlfREVDUkVGKGV4dGVybmFsKTsKICAgICBpZiAocmVzICE9IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgIHJlcyA9IGV4ZWNfY29kZV9pbl9tb2R1bGUobmFtZSwgZCwgY28pOwpAQCAtOTY2LDQzICs5MjEsMTAgQEAKIENoYW5nZXMgY29kZS5jb19maWxlbmFtZSB0byBzcGVjaWZ5IHRoZSBwYXNzZWQtaW4gZmlsZSBwYXRoLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX2ltcF9fZml4X2NvX2ZpbGVuYW1lX19kb2NfXywKLSJfZml4X2NvX2ZpbGVuYW1lKCRtb2R1bGUsIGNvZGUsIHBhdGgsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJDaGFuZ2VzIGNvZGUuY29fZmlsZW5hbWUgdG8gc3BlY2lmeSB0aGUgcGFzc2VkLWluIGZpbGUgcGF0aC5cbiIKLSJcbiIKLSIgIGNvZGVcbiIKLSIgICAgQ29kZSBvYmplY3QgdG8gY2hhbmdlLlxuIgotIiAgcGF0aFxuIgotIiAgICBGaWxlIHBhdGggdG8gdXNlLiIpOwotCi0jZGVmaW5lIF9JTVBfX0ZJWF9DT19GSUxFTkFNRV9NRVRIT0RERUYgICAgXAotICAgIHsiX2ZpeF9jb19maWxlbmFtZSIsIChQeUNGdW5jdGlvbilfaW1wX19maXhfY29fZmlsZW5hbWUsIE1FVEhfVkFSQVJHUywgX2ltcF9fZml4X2NvX2ZpbGVuYW1lX19kb2NfX30sCi0KIHN0YXRpYyBQeU9iamVjdCAqCi1faW1wX19maXhfY29fZmlsZW5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeUNvZGVPYmplY3QgKmNvZGUsIFB5T2JqZWN0ICpwYXRoKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfX2ZpeF9jb19maWxlbmFtZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeUNvZGVPYmplY3QgKmNvZGU7Ci0gICAgUHlPYmplY3QgKnBhdGg7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIk8hVTpfZml4X2NvX2ZpbGVuYW1lIiwKLSAgICAgICAgJlB5Q29kZV9UeXBlLCAmY29kZSwgJnBhdGgpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9fZml4X2NvX2ZpbGVuYW1lX2ltcGwobW9kdWxlLCBjb2RlLCBwYXRoKTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9fZml4X2NvX2ZpbGVuYW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlDb2RlT2JqZWN0ICpjb2RlLCBQeU9iamVjdCAqcGF0aCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YjRiMWVkZWIwZDU1YzVkIGlucHV0PTg5NWJhNTBlNzhiODJmMDVdKi8KK19pbXBfX2ZpeF9jb19maWxlbmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5Q29kZU9iamVjdCAqY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY0ZGI1NmFhYzBhMTMyN2YgaW5wdXQ9ODk1YmE1MGU3OGI4MmYwNV0qLwogCiB7CiAgICAgdXBkYXRlX2NvbXBpbGVkX21vZHVsZShjb2RlLCBwYXRoKTsKQEAgLTExMDQsNTAgKzEwMjYsNzQgQEAKICAgICByZXR1cm4gaW1wb3J0ZXI7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pbXAuY3JlYXRlX2J1aWx0aW4KIAotc3RhdGljIGludCBpbml0X2J1aWx0aW4oUHlPYmplY3QgKik7IC8qIEZvcndhcmQgKi8KKyAgICBzcGVjOiBvYmplY3QKKyAgICAvCiAKLS8qIEluaXRpYWxpemUgYSBidWlsdC1pbiBtb2R1bGUuCi0gICBSZXR1cm4gMSBmb3Igc3VjY2VzcywgMCBpZiB0aGUgbW9kdWxlIGlzIG5vdCBmb3VuZCwgYW5kIC0xIHdpdGgKLSAgIGFuIGV4Y2VwdGlvbiBzZXQgaWYgdGhlIGluaXRpYWxpemF0aW9uIGZhaWxlZC4gKi8KK0NyZWF0ZSBhbiBleHRlbnNpb24gbW9kdWxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1zdGF0aWMgaW50Ci1pbml0X2J1aWx0aW4oUHlPYmplY3QgKm5hbWUpCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9jcmVhdGVfYnVpbHRpbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3BlYykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MDM4ZjQ2NzYxNzIyNmJkIGlucHV0PTM3Zjk2NmY4OTAzODRlNDddKi8KIHsKICAgICBzdHJ1Y3QgX2luaXR0YWIgKnA7CisgICAgUHlPYmplY3QgKm5hbWU7CisgICAgY2hhciAqbmFtZXN0cjsKICAgICBQeU9iamVjdCAqbW9kOwogCisgICAgbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3BlYywgIm5hbWUiKTsKKyAgICBpZiAobmFtZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIG1vZCA9IF9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uT2JqZWN0KG5hbWUsIG5hbWUpOwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKG1vZCAhPSBOVUxMKQotICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAobW9kIHx8IFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICBQeV9JTkNSRUYobW9kKTsKKyAgICAgICAgcmV0dXJuIG1vZDsKKyAgICB9CisKKyAgICBuYW1lc3RyID0gUHlVbmljb2RlX0FzVVRGOChuYW1lKTsKKyAgICBpZiAobmFtZXN0ciA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgZm9yIChwID0gUHlJbXBvcnRfSW5pdHRhYjsgcC0+bmFtZSAhPSBOVUxMOyBwKyspIHsKLSAgICAgICAgUHlPYmplY3QgKm1vZDsKICAgICAgICAgUHlNb2R1bGVEZWYgKmRlZjsKICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsIHAtPm5hbWUpID09IDApIHsKICAgICAgICAgICAgIGlmIChwLT5pbml0ZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHJlLWluaXQgaW50ZXJuYWwgbW9kdWxlICVSIiwKLSAgICAgICAgICAgICAgICAgICAgbmFtZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIC8qIENhbm5vdCByZS1pbml0IGludGVybmFsIG1vZHVsZSAoInN5cyIgb3IgImJ1aWx0aW5zIikgKi8KKyAgICAgICAgICAgICAgICBtb2QgPSBQeUltcG9ydF9BZGRNb2R1bGUobmFtZXN0cik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiBtb2Q7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtb2QgPSAoKnAtPmluaXRmdW5jKSgpOwotICAgICAgICAgICAgaWYgKG1vZCA9PSAwKQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIC8qIFJlbWVtYmVyIHBvaW50ZXIgdG8gbW9kdWxlIGluaXQgZnVuY3Rpb24uICovCi0gICAgICAgICAgICBkZWYgPSBQeU1vZHVsZV9HZXREZWYobW9kKTsKLSAgICAgICAgICAgIGRlZi0+bV9iYXNlLm1faW5pdCA9IHAtPmluaXRmdW5jOwotICAgICAgICAgICAgaWYgKF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdChtb2QsIG5hbWUsIG5hbWUpIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAvKiBGaXh1cEV4dGVuc2lvbiBoYXMgcHV0IHRoZSBtb2R1bGUgaW50byBzeXMubW9kdWxlcywKLSAgICAgICAgICAgICAgIHNvIHdlIGNhbiByZWxlYXNlIG91ciBvd24gcmVmZXJlbmNlLiAqLwotICAgICAgICAgICAgUHlfREVDUkVGKG1vZCk7Ci0gICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIGlmIChtb2QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChQeU9iamVjdF9UeXBlQ2hlY2sobW9kLCAmUHlNb2R1bGVEZWZfVHlwZSkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjKChQeU1vZHVsZURlZiopbW9kLCBzcGVjKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyogUmVtZW1iZXIgcG9pbnRlciB0byBtb2R1bGUgaW5pdCBmdW5jdGlvbi4gKi8KKyAgICAgICAgICAgICAgICBkZWYgPSBQeU1vZHVsZV9HZXREZWYobW9kKTsKKyAgICAgICAgICAgICAgICBkZWYtPm1fYmFzZS5tX2luaXQgPSBwLT5pbml0ZnVuYzsKKyAgICAgICAgICAgICAgICBpZiAoX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KG1vZCwgbmFtZSwgbmFtZSkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbW9kOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiAwOworICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogCkBAIC0xMzM3LDYgKzEyODMsNyBAQAogcmVtb3ZlX2ltcG9ydGxpYl9mcmFtZXModm9pZCkKIHsKICAgICBjb25zdCBjaGFyICppbXBvcnRsaWJfZmlsZW5hbWUgPSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iOworICAgIGNvbnN0IGNoYXIgKmV4dGVybmFsX2ZpbGVuYW1lID0gIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWw+IjsKICAgICBjb25zdCBjaGFyICpyZW1vdmVfZnJhbWVzID0gIl9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQiOwogICAgIGludCBhbHdheXNfdHJpbSA9IDA7CiAgICAgaW50IGluX2ltcG9ydGxpYiA9IDA7CkBAIC0xMzY2LDcgKzEzMTMsMTAgQEAKICAgICAgICAgYXNzZXJ0KFB5VHJhY2VCYWNrX0NoZWNrKHRiKSk7CiAgICAgICAgIG5vd19pbl9pbXBvcnRsaWIgPSAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUtPmNvX2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWJfZmlsZW5hbWUpID09IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWJfZmlsZW5hbWUpID09IDApIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUtPmNvX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5hbF9maWxlbmFtZSkgPT0gMCk7CiAgICAgICAgIGlmIChub3dfaW5faW1wb3J0bGliICYmICFpbl9pbXBvcnRsaWIpIHsKICAgICAgICAgICAgIC8qIFRoaXMgaXMgdGhlIGxpbmsgdG8gdGhpcyBjaHVuayBvZiBpbXBvcnRsaWIgdHJhY2ViYWNrcyAqLwogICAgICAgICAgICAgb3V0ZXJfbGluayA9IHByZXZfbGluazsKQEAgLTE4NjgsMjcgKzE4MTgsOSBAQAogUmV0dXJucyB0aGUgbGlzdCBvZiBmaWxlIHN1ZmZpeGVzIHVzZWQgdG8gaWRlbnRpZnkgZXh0ZW5zaW9uIG1vZHVsZXMuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfaW1wX2V4dGVuc2lvbl9zdWZmaXhlc19fZG9jX18sCi0iZXh0ZW5zaW9uX3N1ZmZpeGVzKCRtb2R1bGUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJSZXR1cm5zIHRoZSBsaXN0IG9mIGZpbGUgc3VmZml4ZXMgdXNlZCB0byBpZGVudGlmeSBleHRlbnNpb24gbW9kdWxlcy4iKTsKLQotI2RlZmluZSBfSU1QX0VYVEVOU0lPTl9TVUZGSVhFU19NRVRIT0RERUYgICAgXAotICAgIHsiZXh0ZW5zaW9uX3N1ZmZpeGVzIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzLCBNRVRIX05PQVJHUywgX2ltcF9leHRlbnNpb25fc3VmZml4ZXNfX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2V4dGVuc2lvbl9zdWZmaXhlcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQotewotICAgIHJldHVybiBfaW1wX2V4dGVuc2lvbl9zdWZmaXhlc19pbXBsKG1vZHVsZSk7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBfaW1wX2V4dGVuc2lvbl9zdWZmaXhlc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmIzMGEyNDM4MTY3Nzk4YyBpbnB1dD1lY2RlZWVjZmNiNmY4MzllXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDQ0YzE1NjZlZjM2MjIyOSBpbnB1dD1lY2RlZWVjZmNiNmY4MzllXSovCiB7CiAgICAgUHlPYmplY3QgKmxpc3Q7CiAgICAgY29uc3QgY2hhciAqc3VmZml4OwpAQCAtMTkxNyw2MiArMTg0OSw2IEBACiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KLV9pbXAuaW5pdF9idWlsdGluCi0KLSAgICBuYW1lOiB1bmljb2RlCi0gICAgLwotCi1Jbml0aWFsaXplcyBhIGJ1aWx0LWluIG1vZHVsZS4KLVtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLQotUHlEb2NfU1RSVkFSKF9pbXBfaW5pdF9idWlsdGluX19kb2NfXywKLSJpbml0X2J1aWx0aW4oJG1vZHVsZSwgbmFtZSwgLylcbiIKLSItLVxuIgotIlxuIgotIkluaXRpYWxpemVzIGEgYnVpbHQtaW4gbW9kdWxlLiIpOwotCi0jZGVmaW5lIF9JTVBfSU5JVF9CVUlMVElOX01FVEhPRERFRiAgICBcCi0gICAgeyJpbml0X2J1aWx0aW4iLCAoUHlDRnVuY3Rpb24pX2ltcF9pbml0X2J1aWx0aW4sIE1FVEhfVkFSQVJHUywgX2ltcF9pbml0X2J1aWx0aW5fX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfaW5pdF9idWlsdGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9pbml0X2J1aWx0aW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIlU6aW5pdF9idWlsdGluIiwKLSAgICAgICAgJm5hbWUpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pbml0X2J1aWx0aW5faW1wbChtb2R1bGUsIG5hbWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2luaXRfYnVpbHRpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWEwMjQ0OTQ4YTQzZjhlMjYgaW5wdXQ9ZjkzNGQyMjMxZWM1MmEyZV0qLwotewotICAgIGludCByZXQ7Ci0gICAgUHlPYmplY3QgKm07Ci0KLSAgICByZXQgPSBpbml0X2J1aWx0aW4obmFtZSk7Ci0gICAgaWYgKHJldCA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChyZXQgPT0gMCkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgIH0KLSAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KG5hbWUpOwotICAgIFB5X1hJTkNSRUYobSk7Ci0gICAgcmV0dXJuIG07Ci19Ci0KLS8qW2NsaW5pYyBpbnB1dF0KIF9pbXAuaW5pdF9mcm96ZW4KIAogICAgIG5hbWU6IHVuaWNvZGUKQEAgLTE5ODEsMzcgKzE4NTcsOSBAQAogSW5pdGlhbGl6ZXMgYSBmcm96ZW4gbW9kdWxlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX2ltcF9pbml0X2Zyb3plbl9fZG9jX18sCi0iaW5pdF9mcm96ZW4oJG1vZHVsZSwgbmFtZSwgLylcbiIKLSItLVxuIgotIlxuIgotIkluaXRpYWxpemVzIGEgZnJvemVuIG1vZHVsZS4iKTsKLQotI2RlZmluZSBfSU1QX0lOSVRfRlJPWkVOX01FVEhPRERFRiAgICBcCi0gICAgeyJpbml0X2Zyb3plbiIsIChQeUNGdW5jdGlvbilfaW1wX2luaXRfZnJvemVuLCBNRVRIX1ZBUkFSR1MsIF9pbXBfaW5pdF9mcm96ZW5fX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfaW5pdF9mcm96ZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2luaXRfZnJvemVuKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpuYW1lOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJVOmluaXRfZnJvemVuIiwKLSAgICAgICAgJm5hbWUpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pbml0X2Zyb3plbl9pbXBsKG1vZHVsZSwgbmFtZSk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIF9pbXBfaW5pdF9mcm96ZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lNGJjMmJmZjI5NmY4ZjIyIGlucHV0PTEzMDE5YWRmYzA0ZjNmYjNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hOWRlNDkzYmRkNzExODc4IGlucHV0PTEzMDE5YWRmYzA0ZjNmYjNdKi8KIHsKICAgICBpbnQgcmV0OwogICAgIFB5T2JqZWN0ICptOwpAQCAtMjAzNywzNyArMTg4NSw5IEBACiBDcmVhdGUgYSBjb2RlIG9iamVjdCBmb3IgYSBmcm96ZW4gbW9kdWxlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX2ltcF9nZXRfZnJvemVuX29iamVjdF9fZG9jX18sCi0iZ2V0X2Zyb3plbl9vYmplY3QoJG1vZHVsZSwgbmFtZSwgLylcbiIKLSItLVxuIgotIlxuIgotIkNyZWF0ZSBhIGNvZGUgb2JqZWN0IGZvciBhIGZyb3plbiBtb2R1bGUuIik7Ci0KLSNkZWZpbmUgX0lNUF9HRVRfRlJPWkVOX09CSkVDVF9NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0X2Zyb3plbl9vYmplY3QiLCAoUHlDRnVuY3Rpb24pX2ltcF9nZXRfZnJvemVuX29iamVjdCwgTUVUSF9WQVJBUkdTLCBfaW1wX2dldF9mcm96ZW5fb2JqZWN0X19kb2NfX30sCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2dldF9mcm96ZW5fb2JqZWN0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9nZXRfZnJvemVuX29iamVjdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbmFtZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiVTpnZXRfZnJvemVuX29iamVjdCIsCi0gICAgICAgICZuYW1lKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IF9pbXBfZ2V0X2Zyb3plbl9vYmplY3RfaW1wbChtb2R1bGUsIG5hbWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBfaW1wX2dldF9mcm96ZW5fb2JqZWN0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDA4OWVjNzAyYTlkNzBjNSBpbnB1dD1lZDY4OWJjMDUzNThmZGJkXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzExNGM5NzBhNDdmMmUzYyBpbnB1dD1lZDY4OWJjMDUzNThmZGJkXSovCiB7CiAgICAgcmV0dXJuIGdldF9mcm96ZW5fb2JqZWN0KG5hbWUpOwogfQpAQCAtMjA4MSwzNyArMTkwMSw5IEBACiBSZXR1cm5zIFRydWUgaWYgdGhlIG1vZHVsZSBuYW1lIGlzIG9mIGEgZnJvemVuIHBhY2thZ2UuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfaW1wX2lzX2Zyb3plbl9wYWNrYWdlX19kb2NfXywKLSJpc19mcm96ZW5fcGFja2FnZSgkbW9kdWxlLCBuYW1lLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iUmV0dXJucyBUcnVlIGlmIHRoZSBtb2R1bGUgbmFtZSBpcyBvZiBhIGZyb3plbiBwYWNrYWdlLiIpOwotCi0jZGVmaW5lIF9JTVBfSVNfRlJPWkVOX1BBQ0tBR0VfTUVUSE9EREVGICAgIFwKLSAgICB7ImlzX2Zyb3plbl9wYWNrYWdlIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfaXNfZnJvemVuX3BhY2thZ2UsIE1FVEhfVkFSQVJHUywgX2ltcF9pc19mcm96ZW5fcGFja2FnZV9fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9pc19mcm96ZW5fcGFja2FnZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfaXNfZnJvemVuX3BhY2thZ2UoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIlU6aXNfZnJvemVuX3BhY2thZ2UiLAotICAgICAgICAmbmFtZSkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2lzX2Zyb3plbl9wYWNrYWdlX2ltcGwobW9kdWxlLCBuYW1lKTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogX2ltcF9pc19mcm96ZW5fcGFja2FnZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg2YWFiMTRkY2Q0Yjk1OWIgaW5wdXQ9ODFiNmNkZWNkMDgwZmJiOF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNlNGNhYjgwMmI1NmQ2NDkgaW5wdXQ9ODFiNmNkZWNkMDgwZmJiOF0qLwogewogICAgIHJldHVybiBpc19mcm96ZW5fcGFja2FnZShuYW1lKTsKIH0KQEAgLTIxMjUsMzcgKzE5MTcsOSBAQAogUmV0dXJucyBUcnVlIGlmIHRoZSBtb2R1bGUgbmFtZSBjb3JyZXNwb25kcyB0byBhIGJ1aWx0LWluIG1vZHVsZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKF9pbXBfaXNfYnVpbHRpbl9fZG9jX18sCi0iaXNfYnVpbHRpbigkbW9kdWxlLCBuYW1lLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iUmV0dXJucyBUcnVlIGlmIHRoZSBtb2R1bGUgbmFtZSBjb3JyZXNwb25kcyB0byBhIGJ1aWx0LWluIG1vZHVsZS4iKTsKLQotI2RlZmluZSBfSU1QX0lTX0JVSUxUSU5fTUVUSE9EREVGICAgIFwKLSAgICB7ImlzX2J1aWx0aW4iLCAoUHlDRnVuY3Rpb24pX2ltcF9pc19idWlsdGluLCBNRVRIX1ZBUkFSR1MsIF9pbXBfaXNfYnVpbHRpbl9fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9pc19idWlsdGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9pc19idWlsdGluKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpuYW1lOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJVOmlzX2J1aWx0aW4iLAotICAgICAgICAmbmFtZSkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2lzX2J1aWx0aW5faW1wbChtb2R1bGUsIG5hbWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBfaW1wX2lzX2J1aWx0aW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNTg0N2Y4Y2FjNTA5NDZlIGlucHV0PTg2YmVmZGFjMDIxZGQxYzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZGVlYzljYWM2ZmI5YTdlIGlucHV0PTg2YmVmZGFjMDIxZGQxYzddKi8KIHsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGlzX2J1aWx0aW4obmFtZSkpOwogfQpAQCAtMjE2OSwzNyArMTkzMyw5IEBACiBSZXR1cm5zIFRydWUgaWYgdGhlIG1vZHVsZSBuYW1lIGNvcnJlc3BvbmRzIHRvIGEgZnJvemVuIG1vZHVsZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKF9pbXBfaXNfZnJvemVuX19kb2NfXywKLSJpc19mcm96ZW4oJG1vZHVsZSwgbmFtZSwgLylcbiIKLSItLVxuIgotIlxuIgotIlJldHVybnMgVHJ1ZSBpZiB0aGUgbW9kdWxlIG5hbWUgY29ycmVzcG9uZHMgdG8gYSBmcm96ZW4gbW9kdWxlLiIpOwotCi0jZGVmaW5lIF9JTVBfSVNfRlJPWkVOX01FVEhPRERFRiAgICBcCi0gICAgeyJpc19mcm96ZW4iLCAoUHlDRnVuY3Rpb24pX2ltcF9pc19mcm96ZW4sIE1FVEhfVkFSQVJHUywgX2ltcF9pc19mcm96ZW5fX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfaXNfZnJvemVuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9pc19mcm96ZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIlU6aXNfZnJvemVuIiwKLSAgICAgICAgJm5hbWUpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pc19mcm96ZW5faW1wbChtb2R1bGUsIG5hbWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBfaW1wX2lzX2Zyb3plbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY2OTFhZjg4NGJhNDk4N2QgaW5wdXQ9NzMwMWRiY2ExODk3ZDY2Yl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdkZThlMjYwYzhlMzZhZWQgaW5wdXQ9NzMwMWRiY2ExODk3ZDY2Yl0qLwogewogICAgIGNvbnN0IHN0cnVjdCBfZnJvemVuICpwOwogCkBAIC0yMjA3LDg0ICsxOTQzLDEzMSBAQAogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpIChwID09IE5VTEwgPyAwIDogcC0+c2l6ZSkpOwogfQogCisvKiBDb21tb24gaW1wbGVtZW50YXRpb24gZm9yIF9pbXAuZXhlY19keW5hbWljIGFuZCBfaW1wLmV4ZWNfYnVpbHRpbiAqLworc3RhdGljIGludAorZXhlY19idWlsdGluX29yX2R5bmFtaWMoUHlPYmplY3QgKm1vZCkgeworICAgIFB5TW9kdWxlRGVmICpkZWY7CisgICAgdm9pZCAqc3RhdGU7CisKKyAgICBpZiAoIVB5TW9kdWxlX0NoZWNrKG1vZCkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgZGVmID0gUHlNb2R1bGVfR2V0RGVmKG1vZCk7CisgICAgaWYgKGRlZiA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHN0YXRlID0gUHlNb2R1bGVfR2V0U3RhdGUobW9kKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChzdGF0ZSkgeworICAgICAgICAvKiBBbHJlYWR5IGluaXRpYWxpemVkOyBza2lwIHJlbG9hZCAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIFB5TW9kdWxlX0V4ZWNEZWYobW9kLCBkZWYpOworfQorCiAjaWZkZWYgSEFWRV9EWU5BTUlDX0xPQURJTkcKIAogLypbY2xpbmljIGlucHV0XQotX2ltcC5sb2FkX2R5bmFtaWMKK19pbXAuY3JlYXRlX2R5bmFtaWMKIAotICAgIG5hbWU6IHVuaWNvZGUKLSAgICBwYXRoOiBmc191bmljb2RlCisgICAgc3BlYzogb2JqZWN0CiAgICAgZmlsZTogb2JqZWN0ID0gTlVMTAogICAgIC8KIAotTG9hZHMgYW4gZXh0ZW5zaW9uIG1vZHVsZS4KK0NyZWF0ZSBhbiBleHRlbnNpb24gbW9kdWxlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX2ltcF9sb2FkX2R5bmFtaWNfX2RvY19fLAotImxvYWRfZHluYW1pYygkbW9kdWxlLCBuYW1lLCBwYXRoLCBmaWxlPU5vbmUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJMb2FkcyBhbiBleHRlbnNpb24gbW9kdWxlLiIpOwotCi0jZGVmaW5lIF9JTVBfTE9BRF9EWU5BTUlDX01FVEhPRERFRiAgICBcCi0gICAgeyJsb2FkX2R5bmFtaWMiLCAoUHlDRnVuY3Rpb24pX2ltcF9sb2FkX2R5bmFtaWMsIE1FVEhfVkFSQVJHUywgX2ltcF9sb2FkX2R5bmFtaWNfX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfbG9hZF9keW5hbWljX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqZmlsZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2xvYWRfZHluYW1pYyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK19pbXBfY3JlYXRlX2R5bmFtaWNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3BlYywgUHlPYmplY3QgKmZpbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTM1Y2RlNWIzODcyZDU2ZCBpbnB1dD1jMzFiOTU0ZjRjZjRlMDlkXSovCiB7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0gICAgUHlPYmplY3QgKnBhdGg7Ci0gICAgUHlPYmplY3QgKmZpbGUgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJVTyZ8Tzpsb2FkX2R5bmFtaWMiLAotICAgICAgICAmbmFtZSwgUHlVbmljb2RlX0ZTRGVjb2RlciwgJnBhdGgsICZmaWxlKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IF9pbXBfbG9hZF9keW5hbWljX2ltcGwobW9kdWxlLCBuYW1lLCBwYXRoLCBmaWxlKTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9sb2FkX2R5bmFtaWNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICpmaWxlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgxZDExYTFmYmQxZWEwYTggaW5wdXQ9YWY2NGYwNmU0YmFkMzUyNl0qLwotewotICAgIFB5T2JqZWN0ICptb2Q7CisgICAgUHlPYmplY3QgKm1vZCwgKm5hbWUsICpwYXRoOwogICAgIEZJTEUgKmZwOwogCisgICAgbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3BlYywgIm5hbWUiKTsKKyAgICBpZiAobmFtZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHBhdGggPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNwZWMsICJvcmlnaW4iKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbW9kID0gX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25PYmplY3QobmFtZSwgcGF0aCk7CisgICAgaWYgKG1vZCAhPSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGgpOworICAgICAgICBQeV9JTkNSRUYobW9kKTsKKyAgICAgICAgcmV0dXJuIG1vZDsKKyAgICB9CisKICAgICBpZiAoZmlsZSAhPSBOVUxMKSB7CiAgICAgICAgIGZwID0gX1B5X2ZvcGVuX29iaihwYXRoLCAiciIpOwogICAgICAgICBpZiAoZnAgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgICAgICAgICAgUHlfREVDUkVGKHBhdGgpOwotICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgZnAgPSBOVUxMOwotICAgIG1vZCA9IF9QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZShuYW1lLCBwYXRoLCBmcCk7CisKKyAgICBtb2QgPSBfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGVXaXRoU3BlYyhzcGVjLCBmcCk7CisKKyAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgUHlfREVDUkVGKHBhdGgpOwogICAgIGlmIChmcCkKICAgICAgICAgZmNsb3NlKGZwKTsKICAgICByZXR1cm4gbW9kOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW1wLmV4ZWNfZHluYW1pYyAtPiBpbnQKKworICAgIG1vZDogb2JqZWN0CisgICAgLworCitJbml0aWFsaXplIGFuIGV4dGVuc2lvbiBtb2R1bGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19pbXBfZXhlY19keW5hbWljX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm1vZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00Yjg0ZjEzMDFiMjJkNGJkIGlucHV0PTlmZGJmY2IyNTAyODBkM2FdKi8KK3sKKyAgICByZXR1cm4gZXhlY19idWlsdGluX29yX2R5bmFtaWMobW9kKTsKK30KKworCiAjZW5kaWYgLyogSEFWRV9EWU5BTUlDX0xPQURJTkcgKi8KIAogLypbY2xpbmljIGlucHV0XQorX2ltcC5leGVjX2J1aWx0aW4gLT4gaW50CisKKyAgICBtb2Q6IG9iamVjdAorICAgIC8KKworSW5pdGlhbGl6ZSBhIGJ1aWx0LWluIG1vZHVsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorX2ltcF9leGVjX2J1aWx0aW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbW9kKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIxNWU5OTg3NmEyN2UyODQgaW5wdXQ9N2JlZWQ1YTJmMTJhNjBjYV0qLworeworICAgIHJldHVybiBleGVjX2J1aWx0aW5fb3JfZHluYW1pYyhtb2QpOworfQorCisvKltjbGluaWMgaW5wdXRdCiBkdW1wIGJ1ZmZlcgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotCi0jaWZuZGVmIF9JTVBfTE9BRF9EWU5BTUlDX01FVEhPRERFRgotICAgICNkZWZpbmUgX0lNUF9MT0FEX0RZTkFNSUNfTUVUSE9EREVGCi0jZW5kaWYgLyogIWRlZmluZWQoX0lNUF9MT0FEX0RZTkFNSUNfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQwN2MxZDRhMzQzYTk1NzkgaW5wdXQ9NTI0Y2UyZTAyMWU0ZWJhNl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NTI0Y2UyZTAyMWU0ZWJhNl0qLwogCiAKIFB5RG9jX1NUUlZBUihkb2NfaW1wLApAQCAtMjI5NywxMSArMjA4MCwxMyBAQAogICAgIF9JTVBfUkVMRUFTRV9MT0NLX01FVEhPRERFRgogICAgIF9JTVBfR0VUX0ZST1pFTl9PQkpFQ1RfTUVUSE9EREVGCiAgICAgX0lNUF9JU19GUk9aRU5fUEFDS0FHRV9NRVRIT0RERUYKLSAgICBfSU1QX0lOSVRfQlVJTFRJTl9NRVRIT0RERUYKKyAgICBfSU1QX0NSRUFURV9CVUlMVElOX01FVEhPRERFRgogICAgIF9JTVBfSU5JVF9GUk9aRU5fTUVUSE9EREVGCiAgICAgX0lNUF9JU19CVUlMVElOX01FVEhPRERFRgogICAgIF9JTVBfSVNfRlJPWkVOX01FVEhPRERFRgotICAgIF9JTVBfTE9BRF9EWU5BTUlDX01FVEhPRERFRgorICAgIF9JTVBfQ1JFQVRFX0RZTkFNSUNfTUVUSE9EREVGCisgICAgX0lNUF9FWEVDX0RZTkFNSUNfTUVUSE9EREVGCisgICAgX0lNUF9FWEVDX0JVSUxUSU5fTUVUSE9EREVGCiAgICAgX0lNUF9fRklYX0NPX0ZJTEVOQU1FX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfSAgLyogc2VudGluZWwgKi8KIH07CkBAIC0yMzg0LDcgKzIxNjksNyBAQAogCiAgICAgbWVtc2V0KG5ld3RhYiwgJ1wwJywgc2l6ZW9mIG5ld3RhYik7CiAKLSAgICBuZXd0YWJbMF0ubmFtZSA9IChjaGFyICopbmFtZTsKKyAgICBuZXd0YWJbMF0ubmFtZSA9IG5hbWU7CiAgICAgbmV3dGFiWzBdLmluaXRmdW5jID0gaW5pdGZ1bmM7CiAKICAgICByZXR1cm4gUHlJbXBvcnRfRXh0ZW5kSW5pdHRhYihuZXd0YWIpOwpAQCAtMjM5Myw0ICsyMTc4LDMgQEAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCi0KZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRkbC5jIGIvUHl0aG9uL2ltcG9ydGRsLmMKaW5kZXggYjYwZjFjNy4uMWFhNTg1ZCAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydGRsLmMKKysrIGIvUHl0aG9uL2ltcG9ydGRsLmMKQEAgLTEzLDg3ICsxMywxODUgQEAKICNpbmNsdWRlICJpbXBvcnRkbC5oIgogCiAjaWZkZWYgTVNfV0lORE9XUwotZXh0ZXJuIGRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRXaW5kb3dzKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0aG5hbWUsIEZJTEUgKmZwKTsKK2V4dGVybiBkbF9mdW5jcHRyIF9QeUltcG9ydF9GaW5kU2hhcmVkRnVuY3B0cldpbmRvd3MoY29uc3QgY2hhciAqcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzaG9ydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXRobmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqZnApOwogI2Vsc2UKLWV4dGVybiBkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKTsKK2V4dGVybiBkbF9mdW5jcHRyIF9QeUltcG9ydF9GaW5kU2hhcmVkRnVuY3B0cihjb25zdCBjaGFyICpwcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCk7CiAjZW5kaWYKIAotUHlPYmplY3QgKgotX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCwgRklMRSAqZnApCi17Ci0gICAgUHlPYmplY3QgKm0gPSBOVUxMOwotI2lmbmRlZiBNU19XSU5ET1dTCi0gICAgUHlPYmplY3QgKnBhdGhieXRlczsKLSNlbmRpZgotICAgIFB5T2JqZWN0ICpuYW1lYXNjaWk7Ci0gICAgY2hhciAqbmFtZXN0ciwgKmxhc3Rkb3QsICpzaG9ydG5hbWUsICpwYWNrYWdlY29udGV4dCwgKm9sZGNvbnRleHQ7Ci0gICAgZGxfZnVuY3B0ciBwMDsKLSAgICBQeU9iamVjdCogKCpwKSh2b2lkKTsKLSAgICBzdHJ1Y3QgUHlNb2R1bGVEZWYgKmRlZjsKK3N0YXRpYyBjb25zdCBjaGFyICphc2NpaV9vbmx5X3ByZWZpeCA9ICJQeUluaXQiOworc3RhdGljIGNvbnN0IGNoYXIgKm5vbmFzY2lpX3ByZWZpeCA9ICJQeUluaXRVIjsKIAotICAgIG0gPSBfUHlJbXBvcnRfRmluZEV4dGVuc2lvbk9iamVjdChuYW1lLCBwYXRoKTsKLSAgICBpZiAobSAhPSBOVUxMKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihtKTsKLSAgICAgICAgcmV0dXJuIG07CisvKiBHZXQgdGhlIHZhcmlhYmxlIHBhcnQgb2YgYSBtb2R1bGUncyBleHBvcnQgc3ltYm9sIG5hbWUuCisgKiBSZXR1cm5zIGEgYnl0ZXMgaW5zdGFuY2UuIEZvciBub24tQVNDSUktbmFtZWQgbW9kdWxlcywgdGhlIG5hbWUgaXMKKyAqIGVuY29kZWQgYXMgcGVyIFBFUCA0ODkuCisgKiBUaGUgaG9va19wcmVmaXggcG9pbnRlciBpcyBzZXQgdG8gZWl0aGVyIGFzY2lpX29ubHlfcHJlZml4IG9yCisgKiBub25hc2NpaV9wcmVmaXgsIGFzIGFwcHJvcHJpYXRlLgorICovCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X2VuY29kZWRfbmFtZShQeU9iamVjdCAqbmFtZSwgY29uc3QgY2hhciAqKmhvb2tfcHJlZml4KSB7CisgICAgUHlPYmplY3QgKnRtcDsKKyAgICBQeU9iamVjdCAqZW5jb2RlZCA9IE5VTEw7CisgICAgUHlPYmplY3QgKm1vZG5hbWUgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbmFtZV9sZW4sIGxhc3Rkb3Q7CisgICAgX1B5X0lERU5USUZJRVIocmVwbGFjZSk7CisKKyAgICAvKiBHZXQgdGhlIHNob3J0IG5hbWUgKHN1YnN0cmluZyBhZnRlciBsYXN0IGRvdCkgKi8KKyAgICBuYW1lX2xlbiA9IFB5VW5pY29kZV9HZXRMZW5ndGgobmFtZSk7CisgICAgbGFzdGRvdCA9IFB5VW5pY29kZV9GaW5kQ2hhcihuYW1lLCAnLicsIDAsIG5hbWVfbGVuLCAtMSk7CisgICAgaWYgKGxhc3Rkb3QgPCAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9IGVsc2UgaWYgKGxhc3Rkb3QgPj0gMCkgeworICAgICAgICB0bXAgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKG5hbWUsIGxhc3Rkb3QgKyAxLCBuYW1lX2xlbik7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBuYW1lID0gdG1wOworICAgICAgICAvKiAibmFtZSIgbm93IGhvbGRzIGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgc3Vic3RyaW5nICovCisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlfSU5DUkVGKG5hbWUpOwogICAgIH0KIAotICAgIC8qIG5hbWUgbXVzdCBiZSBlbmNvZGFibGUgdG8gQVNDSUkgYmVjYXVzZSBkeW5hbWljIG1vZHVsZSBtdXN0IGhhdmUgYQotICAgICAgIGZ1bmN0aW9uIGNhbGxlZCAiUHlJbml0X05BTUUiLCB0aGV5IGFyZSB3cml0dGVuIGluIEMsIGFuZCB0aGUgQyBsYW5ndWFnZQotICAgICAgIGRvZXNuJ3QgYWNjZXB0IG5vbi1BU0NJSSBpZGVudGlmaWVycy4gKi8KLSAgICBuYW1lYXNjaWkgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKG5hbWUsICJhc2NpaSIsIE5VTEwpOwotICAgIGlmIChuYW1lYXNjaWkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogRW5jb2RlIHRvIEFTQ0lJIG9yIFB1bnljb2RlLCBhcyBuZWVkZWQgKi8KKyAgICBlbmNvZGVkID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhuYW1lLCAiYXNjaWkiLCBOVUxMKTsKKyAgICBpZiAoZW5jb2RlZCAhPSBOVUxMKSB7CisgICAgICAgICpob29rX3ByZWZpeCA9IGFzY2lpX29ubHlfcHJlZml4OworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICBlbmNvZGVkID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhuYW1lLCAicHVueWNvZGUiLCBOVUxMKTsKKyAgICAgICAgICAgIGlmIChlbmNvZGVkID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKmhvb2tfcHJlZml4ID0gbm9uYXNjaWlfcHJlZml4OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KIAotICAgIG5hbWVzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhuYW1lYXNjaWkpOwotICAgIGlmIChuYW1lc3RyID09IE5VTEwpCisgICAgLyogUmVwbGFjZSAnLScgYnkgJ18nICovCisgICAgbW9kbmFtZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZW5jb2RlZCwgJlB5SWRfcmVwbGFjZSwgImNjIiwgJy0nLCAnXycpOworICAgIGlmIChtb2RuYW1lID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBsYXN0ZG90ID0gc3RycmNocihuYW1lc3RyLCAnLicpOwotICAgIGlmIChsYXN0ZG90ID09IE5VTEwpIHsKLSAgICAgICAgcGFja2FnZWNvbnRleHQgPSBOVUxMOwotICAgICAgICBzaG9ydG5hbWUgPSBuYW1lc3RyOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgcGFja2FnZWNvbnRleHQgPSBuYW1lc3RyOwotICAgICAgICBzaG9ydG5hbWUgPSBsYXN0ZG90KzE7CisgICAgUHlfREVDUkVGKG5hbWUpOworICAgIFB5X0RFQ1JFRihlbmNvZGVkKTsKKyAgICByZXR1cm4gbW9kbmFtZTsKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICBQeV9YREVDUkVGKGVuY29kZWQpOworICAgIHJldHVybiBOVUxMOworfQorCitQeU9iamVjdCAqCitfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGVXaXRoU3BlYyhQeU9iamVjdCAqc3BlYywgRklMRSAqZnApCit7CisjaWZuZGVmIE1TX1dJTkRPV1MKKyAgICBQeU9iamVjdCAqcGF0aGJ5dGVzID0gTlVMTDsKKyNlbmRpZgorICAgIFB5T2JqZWN0ICpuYW1lX3VuaWNvZGUgPSBOVUxMLCAqbmFtZSA9IE5VTEwsICpwYXRoID0gTlVMTCwgKm0gPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKm5hbWVfYnVmLCAqaG9va19wcmVmaXg7CisgICAgY2hhciAqb2xkY29udGV4dDsKKyAgICBkbF9mdW5jcHRyIGV4cG9ydGZ1bmM7CisgICAgUHlNb2R1bGVEZWYgKmRlZjsKKyAgICBQeU9iamVjdCAqKCpwMCkodm9pZCk7CisKKyAgICBuYW1lX3VuaWNvZGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNwZWMsICJuYW1lIik7CisgICAgaWYgKG5hbWVfdW5pY29kZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIG5hbWUgPSBnZXRfZW5jb2RlZF9uYW1lKG5hbWVfdW5pY29kZSwgJmhvb2tfcHJlZml4KTsKKyAgICBpZiAobmFtZSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIG5hbWVfYnVmID0gUHlCeXRlc19BU19TVFJJTkcobmFtZSk7CisKKyAgICBwYXRoID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzcGVjLCAib3JpZ2luIik7CisgICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBwMCA9IF9QeUltcG9ydF9HZXREeW5Mb2FkV2luZG93cyhzaG9ydG5hbWUsIHBhdGgsIGZwKTsKKyAgICBleHBvcnRmdW5jID0gX1B5SW1wb3J0X0ZpbmRTaGFyZWRGdW5jcHRyV2luZG93cyhob29rX3ByZWZpeCwgbmFtZV9idWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgZnApOwogI2Vsc2UKICAgICBwYXRoYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHBhdGgpOwogICAgIGlmIChwYXRoYnl0ZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICBwMCA9IF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhzaG9ydG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcocGF0aGJ5dGVzKSwgZnApOworICAgIGV4cG9ydGZ1bmMgPSBfUHlJbXBvcnRfRmluZFNoYXJlZEZ1bmNwdHIoaG9va19wcmVmaXgsIG5hbWVfYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcocGF0aGJ5dGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwKTsKICAgICBQeV9ERUNSRUYocGF0aGJ5dGVzKTsKICNlbmRpZgotICAgIHAgPSAoUHlPYmplY3QqKCopKHZvaWQpKXAwOwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIGlmIChwID09IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKm1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJkeW5hbWljIG1vZHVsZSBkb2VzIG5vdCBkZWZpbmUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluaXQgZnVuY3Rpb24gKFB5SW5pdF8lcykiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRuYW1lKTsKLSAgICAgICAgaWYgKG1zZyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3IobXNnLCBuYW1lLCBwYXRoKTsKLSAgICAgICAgUHlfREVDUkVGKG1zZyk7CisKKyAgICBpZiAoZXhwb3J0ZnVuYyA9PSBOVUxMKSB7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgUHlPYmplY3QgKm1zZzsKKyAgICAgICAgICAgIG1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAgICAgICAgICJkeW5hbWljIG1vZHVsZSBkb2VzIG5vdCBkZWZpbmUgIgorICAgICAgICAgICAgICAgICJtb2R1bGUgZXhwb3J0IGZ1bmN0aW9uICglc18lcykiLAorICAgICAgICAgICAgICAgIGhvb2tfcHJlZml4LCBuYW1lX2J1Zik7CisgICAgICAgICAgICBpZiAobXNnID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFB5RXJyX1NldEltcG9ydEVycm9yKG1zZywgbmFtZV91bmljb2RlLCBwYXRoKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihtc2cpOworICAgICAgICB9CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIG9sZGNvbnRleHQgPSBfUHlfUGFja2FnZUNvbnRleHQ7Ci0gICAgX1B5X1BhY2thZ2VDb250ZXh0ID0gcGFja2FnZWNvbnRleHQ7Ci0gICAgbSA9ICgqcCkoKTsKLSAgICBfUHlfUGFja2FnZUNvbnRleHQgPSBvbGRjb250ZXh0OwotICAgIGlmIChtID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgIHAwID0gKFB5T2JqZWN0ICooKikodm9pZCkpZXhwb3J0ZnVuYzsKKworICAgIC8qIFBhY2thZ2UgY29udGV4dCBpcyBuZWVkZWQgZm9yIHNpbmdsZS1waGFzZSBpbml0ICovCisgICAgb2xkY29udGV4dCA9IF9QeV9QYWNrYWdlQ29udGV4dDsKKyAgICBfUHlfUGFja2FnZUNvbnRleHQgPSBQeVVuaWNvZGVfQXNVVEY4KG5hbWVfdW5pY29kZSk7CisgICAgbSA9IHAwKCk7CisgICAgX1B5X1BhY2thZ2VDb250ZXh0ID0gb2xkY29udGV4dDsKKworICAgIGlmIChtID09IE5VTEwpIHsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgImluaXRpYWxpemF0aW9uIG9mICVzIGZhaWxlZCB3aXRob3V0IHJhaXNpbmcgYW4gZXhjZXB0aW9uIiwKKyAgICAgICAgICAgICAgICBuYW1lX2J1Zik7CisgICAgICAgIH0KKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9IGVsc2UgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAiaW5pdGlhbGl6YXRpb24gb2YgJXMgcmFpc2VkIHVucmVwb3J0ZWQgZXhjZXB0aW9uIiwKKyAgICAgICAgICAgIG5hbWVfYnVmKTsKKyAgICAgICAgbSA9IE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmIChQeV9UWVBFKG0pID09IE5VTEwpIHsKKyAgICAgICAgLyogVGhpcyBjYW4gaGFwcGVuIHdoZW4gYSBQeU1vZHVsZURlZiBpcyByZXR1cm5lZCB3aXRob3V0IGNhbGxpbmcKKyAgICAgICAgICogUHlNb2R1bGVEZWZfSW5pdCBvbiBpdAorICAgICAgICAgKi8KICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImluaXRpYWxpemF0aW9uIG9mICVzIHJhaXNlZCB1bnJlcG9ydGVkIGV4Y2VwdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICBzaG9ydG5hbWUpOworICAgICAgICAgICAgICAgICAgICAgImluaXQgZnVuY3Rpb24gb2YgJXMgcmV0dXJuZWQgdW5pbml0aWFsaXplZCBvYmplY3QiLAorICAgICAgICAgICAgICAgICAgICAgbmFtZV9idWYpOworICAgICAgICBtID0gTlVMTDsgLyogcHJldmVudCBzZWdmYXVsdCBpbiBERUNSRUYgKi8KKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKFB5T2JqZWN0X1R5cGVDaGVjayhtLCAmUHlNb2R1bGVEZWZfVHlwZSkpIHsKKyAgICAgICAgUHlfREVDUkVGKG5hbWVfdW5pY29kZSk7CisgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGgpOworICAgICAgICByZXR1cm4gUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMoKFB5TW9kdWxlRGVmKiltLCBzcGVjKTsKKyAgICB9CisKKyAgICAvKiBGYWxsIGJhY2sgdG8gc2luZ2xlLXBoYXNlIGluaXQgbWVjaGFuaXNtICovCisKKyAgICBpZiAoaG9va19wcmVmaXggPT0gbm9uYXNjaWlfcHJlZml4KSB7CisgICAgICAgIC8qIGRvbid0IGFsbG93IGxlZ2FjeSBpbml0IGZvciBub24tQVNDSUkgbW9kdWxlIG5hbWVzICovCisgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgIFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgImluaXRpYWxpemF0aW9uIG9mICogZGlkIG5vdCByZXR1cm4gUHlNb2R1bGVEZWYiLAorICAgICAgICAgICAgbmFtZV9idWYpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIApAQCAtMTAyLDEwICsyMDAsMTAgQEAKICAgICBpZiAoZGVmID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgImluaXRpYWxpemF0aW9uIG9mICVzIGRpZCBub3QgcmV0dXJuIGFuIGV4dGVuc2lvbiAiCi0gICAgICAgICAgICAgICAgICAgICAibW9kdWxlIiwgc2hvcnRuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUiLCBuYW1lX2J1Zik7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIGRlZi0+bV9iYXNlLm1faW5pdCA9IHA7CisgICAgZGVmLT5tX2Jhc2UubV9pbml0ID0gcDA7CiAKICAgICAvKiBSZW1lbWJlciB0aGUgZmlsZW5hbWUgYXMgdGhlIF9fZmlsZV9fIGF0dHJpYnV0ZSAqLwogICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9fZmlsZV9fIiwgcGF0aCkgPCAwKQpAQCAtMTEzLDEzICsyMTEsMTkgQEAKICAgICBlbHNlCiAgICAgICAgIFB5X0lOQ1JFRihwYXRoKTsKIAotICAgIGlmIChfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QobSwgbmFtZSwgcGF0aCkgPCAwKQorICAgIGlmIChfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QobSwgbmFtZV91bmljb2RlLCBwYXRoKSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgUHlfREVDUkVGKG5hbWVhc2NpaSk7CisKKyAgICBQeV9ERUNSRUYobmFtZV91bmljb2RlKTsKKyAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgUHlfREVDUkVGKHBhdGgpOworCiAgICAgcmV0dXJuIG07CiAKIGVycm9yOgotICAgIFB5X0RFQ1JFRihuYW1lYXNjaWkpOworICAgIFB5X0RFQ1JFRihuYW1lX3VuaWNvZGUpOworICAgIFB5X1hERUNSRUYobmFtZSk7CisgICAgUHlfWERFQ1JFRihwYXRoKTsKICAgICBQeV9YREVDUkVGKG0pOwogICAgIHJldHVybiBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGRsLmggYi9QeXRob24vaW1wb3J0ZGwuaAppbmRleCA2YTUxYTkxLi45ODQ3NjUyIDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0ZGwuaAorKysgYi9QeXRob24vaW1wb3J0ZGwuaApAQCAtOCw4ICs4LDcgQEAKIAogZXh0ZXJuIGNvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdOwogCi1leHRlcm4gUHlPYmplY3QgKl9QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZShQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGhuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqKTsKK2V4dGVybiBQeU9iamVjdCAqX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlV2l0aFNwZWMoUHlPYmplY3QgKnNwZWMsIEZJTEUgKik7CiAKIC8qIE1heCBsZW5ndGggb2YgbW9kdWxlIHN1ZmZpeCBzZWFyY2hlZCBmb3IgLS0gYWNjb21tb2RhdGVzICJtb2R1bGUuc2xiIiAqLwogI2RlZmluZSBNQVhTVUZGSVhTSVpFIDEyCmRpZmYgLS1naXQgYS9QeXRob24vaW1wb3J0bGliLmggYi9QeXRob24vaW1wb3J0bGliLmgKaW5kZXggNzViZmNhNC4uYTRkYWY2MiAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydGxpYi5oCisrKyBiL1B5dGhvbi9pbXBvcnRsaWIuaApAQCAtMSwyMjYzICsxLDE0NTIgQEAKLS8qIEF1dG8tZ2VuZXJhdGVkIGJ5IE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyAqLworLyogQXV0by1nZW5lcmF0ZWQgYnkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyAqLwogY29uc3QgdW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliW10gPSB7Ci0gICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNywwLDAsCi0gICAgMCw2NCwwLDAsMCwxMTUsMjI4LDQsMCwwLDEwMCwwLDAsOTAsMCwwLAotICAgIDEwMCwxNjMsMCw5MCwxLDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsCi0gICAgMiwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDMsMCwxMDAsOCwKLSAgICAwLDEwMCw5LDAsMTMyLDAsMCw5MCw0LDAsMTAwLDEwLDAsMTAwLDExLDAsCi0gICAgMTMyLDAsMCw5MCw1LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCw5MCwKLSAgICA2LDAsMTAwLDE0LDAsMTAwLDE1LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDE2LAotICAgIDAsMTAwLDE3LDAsMTMyLDAsMCw5MCw4LDAsMTAwLDE4LDAsMTAwLDE5LDAsCi0gICAgMTMyLDAsMCw5MCw5LDAsMTAwLDIwLDAsMTAwLDIxLDAsMTMyLDAsMCw5MCwKLSAgICAxMCwwLDEwMCwyMiwwLDEwMCwyMywwLDEwMCwyNCwwLDEzMiwxLDAsOTAsMTEsCi0gICAgMCwxMDAsMjUsMCwxMDAsMjYsMCwxMzIsMCwwLDkwLDEyLDAsMTAwLDI3LDAsCi0gICAgMTAwLDI4LDAsMTMyLDAsMCw5MCwxMywwLDEwMSwxNCwwLDEwMSwxMiwwLDEwNiwKLSAgICAxNSwwLDEzMSwxLDAsOTAsMTYsMCw3MSwxMDAsMjksMCwxMDAsMzAsMCwxMzIsCi0gICAgMCwwLDEwMCwzMCwwLDEzMSwyLDAsOTAsMTcsMCwxMDUsMCwwLDkwLDE4LAotICAgIDAsMTA1LDAsMCw5MCwxOSwwLDcxLDEwMCwzMSwwLDEwMCwzMiwwLDEzMiwwLAotICAgIDAsMTAwLDMyLDAsMTAxLDIwLDAsMTMxLDMsMCw5MCwyMSwwLDcxLDEwMCwzMywKLSAgICAwLDEwMCwzNCwwLDEzMiwwLDAsMTAwLDM0LDAsMTMxLDIsMCw5MCwyMiwwLAotICAgIDcxLDEwMCwzNSwwLDEwMCwzNiwwLDEzMiwwLDAsMTAwLDM2LDAsMTMxLDIsMCwKLSAgICA5MCwyMywwLDcxLDEwMCwzNywwLDEwMCwzOCwwLDEzMiwwLDAsMTAwLDM4LDAsCi0gICAgMTMxLDIsMCw5MCwyNCwwLDEwMCwzOSwwLDEwMCw0MCwwLDEzMiwwLDAsOTAsCi0gICAgMjUsMCwxMDAsNDEsMCwxMDAsNDIsMCwxMzIsMCwwLDkwLDI2LDAsMTAwLDQzLAotICAgIDAsMTAwLDQ0LDAsMTMyLDAsMCw5MCwyNywwLDEwMCw0NSwwLDEwNiwyOCwwLAotICAgIDEwMCw0NiwwLDEwMCw0NywwLDEzMSwyLDAsMTAwLDQ4LDAsMjMsOTAsMjksMCwKLSAgICAxMDEsMzAsMCwxMDYsMzEsMCwxMDEsMjksMCwxMDAsNDcsMCwxMzEsMiwwLDkwLAotICAgIDMyLDAsMTAwLDQ5LDAsOTAsMzMsMCwxMDAsNTAsMCwxMDMsMSwwLDkwLDM0LAotICAgIDAsMTAwLDUxLDAsMTAzLDEsMCw5MCwzNSwwLDEwMCw1MiwwLDEwMywxLDAsCi0gICAgOTAsMzYsMCwxMDAsNTMsMCwxMDAsNTQsMCwxMDAsNTUsMCwxMzIsMSwwLDkwLAotICAgIDM3LDAsMTAwLDU2LDAsMTAwLDU3LDAsMTMyLDAsMCw5MCwzOCwwLDEwMCw1OCwKLSAgICAwLDEwMCw1OSwwLDEzMiwwLDAsOTAsMzksMCwxMDAsNjAsMCwxMDAsNjEsMCwKLSAgICAxMzIsMCwwLDkwLDQwLDAsMTAwLDYyLDAsMTAwLDYzLDAsMTAwLDY0LDAsMTAwLAotICAgIDY1LDAsMTMyLDAsMSw5MCw0MSwwLDEwMCw2NiwwLDEwMCw2NywwLDEzMiwwLAotICAgIDAsOTAsNDIsMCwxMDAsNjgsMCwxMDAsNjksMCwxMzIsMCwwLDkwLDQzLDAsCi0gICAgMTAwLDcwLDAsMTAwLDcxLDAsMTMyLDAsMCw5MCw0NCwwLDEwMCw3MiwwLDEwMCwKLSAgICA3MywwLDEzMiwwLDAsOTAsNDUsMCwxMDAsNzQsMCwxMDAsNzUsMCwxMzIsMCwKLSAgICAwLDkwLDQ2LDAsMTAwLDUzLDAsMTAwLDUzLDAsMTAwLDUzLDAsMTAwLDc2LDAsCi0gICAgMTAwLDc3LDAsMTMyLDMsMCw5MCw0NywwLDEwMCw1MywwLDEwMCw1MywwLDEwMCwKLSAgICA1MywwLDEwMCw3OCwwLDEwMCw3OSwwLDEzMiwzLDAsOTAsNDgsMCwxMDAsODAsCi0gICAgMCwxMDAsODAsMCwxMDAsODEsMCwxMDAsODIsMCwxMzIsMiwwLDkwLDQ5LDAsCi0gICAgMTAwLDgzLDAsMTAwLDg0LDAsMTMyLDAsMCw5MCw1MCwwLDEwMCw4NSwwLDEwMCwKLSAgICA4NiwwLDEzMiwwLDAsOTAsNTEsMCw3MSwxMDAsODcsMCwxMDAsODgsMCwxMzIsCi0gICAgMCwwLDEwMCw4OCwwLDEzMSwyLDAsOTAsNTIsMCw3MSwxMDAsODksMCwxMDAsCi0gICAgOTAsMCwxMzIsMCwwLDEwMCw5MCwwLDEzMSwyLDAsOTAsNTMsMCwxMDAsOTEsCi0gICAgMCwxMDAsNTMsMCwxMDAsOTIsMCwxMDAsNTMsMCwxMDAsOTMsMCwxMDAsOTQsMCwKLSAgICAxMzIsMCwyLDkwLDU0LDAsMTAxLDU1LDAsMTMxLDAsMCw5MCw1NiwwLDEwMCwKLSAgICA1MywwLDEwMCw5NSwwLDEwMCw1MywwLDEwMCw5NiwwLDEwMSw1NiwwLDEwMCw5NywKLSAgICAwLDEwMCw5OCwwLDEzMiwxLDIsOTAsNTcsMCwxMDAsNTMsMCwxMDAsNTMsMCwKLSAgICAxMDAsOTksMCwxMDAsMTAwLDAsMTMyLDIsMCw5MCw1OCwwLDcxLDEwMCwxMDEsMCwKLSAgICAxMDAsMTAyLDAsMTMyLDAsMCwxMDAsMTAyLDAsMTMxLDIsMCw5MCw1OSwwLDEwMCwKLSAgICA1MywwLDEwMCwxMDMsMCwxMDAsMTA0LDAsMTMyLDEsMCw5MCw2MCwwLDcxLDEwMCwKLSAgICAxMDUsMCwxMDAsMTA2LDAsMTMyLDAsMCwxMDAsMTA2LDAsMTMxLDIsMCw5MCw2MSwKLSAgICAwLDcxLDEwMCwxMDcsMCwxMDAsMTA4LDAsMTMyLDAsMCwxMDAsMTA4LDAsMTMxLDIsCi0gICAgMCw5MCw2MiwwLDcxLDEwMCwxMDksMCwxMDAsMTEwLDAsMTMyLDAsMCwxMDAsMTEwLAotICAgIDAsMTMxLDIsMCw5MCw2MywwLDcxLDEwMCwxMTEsMCwxMDAsMTEyLDAsMTMyLDAsCi0gICAgMCwxMDAsMTEyLDAsMTMxLDIsMCw5MCw2NCwwLDcxLDEwMCwxMTMsMCwxMDAsMTE0LAotICAgIDAsMTMyLDAsMCwxMDAsMTE0LDAsMTAxLDY0LDAsMTMxLDMsMCw5MCw2NSwwLAotICAgIDcxLDEwMCwxMTUsMCwxMDAsMTE2LDAsMTMyLDAsMCwxMDAsMTE2LDAsMTMxLDIsMCwKLSAgICA5MCw2NiwwLDcxLDEwMCwxMTcsMCwxMDAsMTE4LDAsMTMyLDAsMCwxMDAsMTE4LDAsCi0gICAgMTAxLDY2LDAsMTAxLDY1LDAsMTMxLDQsMCw5MCw2NywwLDcxLDEwMCwxMTksMCwKLSAgICAxMDAsMTIwLDAsMTMyLDAsMCwxMDAsMTIwLDAsMTAxLDY2LDAsMTAxLDY0LDAsMTMxLAotICAgIDQsMCw5MCw2OCwwLDEwMywwLDAsOTAsNjksMCw3MSwxMDAsMTIxLDAsMTAwLAotICAgIDEyMiwwLDEzMiwwLDAsMTAwLDEyMiwwLDEzMSwyLDAsOTAsNzAsMCw3MSwxMDAsCi0gICAgMTIzLDAsMTAwLDEyNCwwLDEzMiwwLDAsMTAwLDEyNCwwLDEzMSwyLDAsOTAsNzEsCi0gICAgMCw3MSwxMDAsMTI1LDAsMTAwLDEyNiwwLDEzMiwwLDAsMTAwLDEyNiwwLDEzMSwyLAotICAgIDAsOTAsNzIsMCw3MSwxMDAsMTI3LDAsMTAwLDEyOCwwLDEzMiwwLDAsMTAwLDEyOCwKLSAgICAwLDEzMSwyLDAsOTAsNzMsMCw3MSwxMDAsMTI5LDAsMTAwLDEzMCwwLDEzMiwwLAotICAgIDAsMTAwLDEzMCwwLDEzMSwyLDAsOTAsNzQsMCw3MSwxMDAsMTMxLDAsMTAwLDEzMiwKLSAgICAwLDEzMiwwLDAsMTAwLDEzMiwwLDEzMSwyLDAsOTAsNzUsMCwxMDAsMTMzLDAsCi0gICAgMTAwLDEzNCwwLDEzMiwwLDAsOTAsNzYsMCwxMDAsMTM1LDAsMTAwLDEzNiwwLDEzMiwKLSAgICAwLDAsOTAsNzcsMCwxMDAsNTMsMCwxMDAsMTM3LDAsMTAwLDEzOCwwLDEzMiwxLAotICAgIDAsOTAsNzgsMCwxMDAsMTM5LDAsMTAwLDE0MCwwLDEzMiwwLDAsOTAsNzksMCwKLSAgICAxMDAsMTQxLDAsOTAsODAsMCwxMDEsODAsMCwxMDAsMTQyLDAsMjMsOTAsODEsMCwKLSAgICAxMDAsMTQzLDAsMTAwLDE0NCwwLDEzMiwwLDAsOTAsODIsMCwxMDAsMTQ1LDAsMTAwLAotICAgIDE0NiwwLDEzMiwwLDAsOTAsODMsMCwxMDAsNTMsMCwxMDAsODAsMCwxMDAsMTQ3LAotICAgIDAsMTAwLDE0OCwwLDEzMiwyLDAsOTAsODQsMCwxMDAsMTQ5LDAsMTAwLDE1MCwwLAotICAgIDEzMiwwLDAsOTAsODUsMCwxMDAsMTUxLDAsMTAwLDE1MiwwLDEzMiwwLDAsOTAsCi0gICAgODYsMCwxMDAsMTUzLDAsMTAwLDE1NCwwLDEzMiwwLDAsOTAsODcsMCwxMDAsNTMsCi0gICAgMCwxMDAsNTMsMCwxMDIsMCwwLDEwMCw4MCwwLDEwMCwxNTUsMCwxMDAsMTU2LDAsCi0gICAgMTMyLDQsMCw5MCw4OCwwLDEwMCwxNTcsMCwxMDAsMTU4LDAsMTMyLDAsMCw5MCwKLSAgICA4OSwwLDEwMCwxNTksMCwxMDAsMTYwLDAsMTMyLDAsMCw5MCw5MCwwLDEwMCwxNjEsCi0gICAgMCwxMDAsMTYyLDAsMTMyLDAsMCw5MCw5MSwwLDEwMCw1MywwLDgzLDQxLDE2NCwKLSAgICA5Nyw4MywxLDAsMCw2NywxMTEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKLSAgICAxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiw0NiwxMCwxMCw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAzMiwxMDUsMTE1LDMyLDc4LDc5LDg0LDMyLDEwOSwxMDEsOTcsMTEwLDExNiwzMiwxMTYsMTExLAotICAgIDMyLDk4LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDEwOCwxMjEsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsMTAxLDEwMCwzMywzMiw3MywxMTYsMzIsMTA0LDk3LDExNSwzMiw5OCwxMDEsCi0gICAgMTAxLDExMCwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDExNSwxMTcsOTksMTA0LAotICAgIDEwLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTYsMzIsOTksOTcsMTEwLDMyLDk4LDEwMSwzMiwKLSAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsMTEyLDEwMSwxMDAsMzIsMTA1LDExMCwxMTYsCi0gICAgMTExLDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsCi0gICAgMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLDY1LDExNSwxMCwxMTUsMTE3LDk5LAotICAgIDEwNCwzMiwxMDUsMTE2LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNSwKLSAgICAxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwKLSAgICA5NywxMTAsMTAwLDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTA1LAotICAgIDExMCwzMiwxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMTAsMTE5LDExMSwxMTQsMTA3LDQ2LAotICAgIDMyLDc5LDExMCwxMDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTE3LDExNSwxMDEsMzIsCi0gICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTEyLDExNyw5OCwxMDgsMTA1LDk5LDQ1LDEwMiw5Nyw5OSwxMDUsMTEwLDEwMywzMiwxMTgsCi0gICAgMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMjE4LDMsMTE5LDEwNSwxMTAsMjE4LDYsOTksCi0gICAgMTIxLDEwMywxMTksMTA1LDExMCwyMTgsNiwxMDAsOTcsMTE0LDExOSwxMDUsMTEwLDk5LDAsMCwKLSAgICAwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDQ5LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLAotICAgIDExNiwzLDAsMTMxLDEsMCwxMTQsMzMsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLAotICAgIDAsMCwxMjUsMCwwLDExMCwxMiwwLDEwMCwzLDAsMTAwLDIsMCwxMzIsMCwKLSAgICAwLDEyNSwwLDAsMTI0LDAsMCw4Myw0MSw0LDc4LDk5LDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsODMsMCwwLDAsCi0gICAgMTE1LDEzLDAsMCwwLDEwMCwxLDAsMTE2LDAsMCwxMDYsMSwwLDEwNyw2LAotICAgIDAsODMsNDEsMiwxMjIsNTMsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMDIsMTA1LAotICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsCi0gICAgOTksMTA0LDEwMSw5OSwxMDcsMTAxLDEwMCwzMiw5OSw5NywxMTUsMTAxLDQ1LDEwNSwxMTAsMTE1LAotICAgIDEwMSwxMTAsMTE1LDEwNSwxMTYsMTA1LDExOCwxMDEsMTA4LDEyMSw0NiwxMTUsMTIsMCwwLDAsCi0gICAgODAsODksODQsNzIsNzksNzgsNjcsNjUsODMsNjksNzksNzUsNDEsMiwyMTgsMywKLSAgICA5NSwxMTEsMTE1LDkwLDcsMTAxLDExMCwxMTgsMTA1LDExNCwxMTEsMTEwLDE2OSwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDI1MCwyOSw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAotICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCi0gICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwyMTgsMTEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LAotICAgIDk5LDk3LDExNSwxMDEsMzAsMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwKLSAgICAzNyw5NSwxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LAotICAgIDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMDgsOTcsCi0gICAgMTIwLDk1LDk5LDk3LDExNSwxMDEsOTksMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMSwwLDAsMCw4MywwLDAsMCwxMTUsNCwwLDAsMCwKLSAgICAxMDAsMSwwLDgzLDQxLDIsMTIyLDUzLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsCi0gICAgMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsMzIsOTksOTcsMTE1LDEwMSw0NSwxMDUsCi0gICAgMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsMTAxLDEwOCwxMjEsNDYsNzAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDYsMCwwLDAsMzQsMCwwLDAsCi0gICAgMTE1LDIsMCwwLDAsMCwyLDQxLDQsMjE4LDMsMTE1LDEyMSwxMTUsMjE4LDgsCi0gICAgMTEyLDEwOCw5NywxMTYsMTAyLDExMSwxMTQsMTA5LDIxOCwxMCwxMTUsMTE2LDk3LDExNCwxMTYsMTE1LAotICAgIDExOSwxMDUsMTE2LDEwNCwyMTgsMjcsOTUsNjcsNjUsODMsNjksOTUsNzMsNzgsODMsNjksCi0gICAgNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsNzYsNjUsODQsNzAsNzksODIsNzcsCi0gICAgODMsNDEsMSwxMTQsNiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNSwwLDAsMCwyMTgsMTYsOTUsMTA5LDk3LDEwNywxMDEsOTUsMTE0LAotICAgIDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsMjgsMCwwLDAsMTE1LDgsMCwKLSAgICAwLDAsMCwxLDE4LDEsMTUsNCwxMiwzLDExNCwxMSwwLDAsMCw5OSwKLSAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSwyNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLAotICAgIDEsMCwxMDAsMSwwLDY0LDEwNiwxLDAsMTAwLDIsMCwxMDAsMywwLDEzMSwKLSAgICAyLDAsODMsNDEsNCwxMjIsNDIsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsOTcsCi0gICAgMzIsNTEsNTAsNDUsOTgsMTA1LDExNiwzMiwxMDUsMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsMzIsCi0gICAgMTE2LDExMSwzMiwxMDgsMTA1LDExNiwxMTYsMTA4LDEwMSw0NSwxMDEsMTEwLDEwMCwxMDUsOTcsMTEwLAotICAgIDQ2LDEwOCwzLDAsMCwwLDI1NSwxMjcsMjU1LDEyNywzLDAsMjMzLDQsMCwwLAotICAgIDAsMjE4LDYsMTA4LDEwNSwxMTYsMTE2LDEwOCwxMDEsNDEsMiwyMTgsMywxMDUsMTEwLDExNiwKLSAgICAyMTgsOCwxMTYsMTExLDk1LDk4LDEyMSwxMTYsMTAxLDExNSw0MSwxLDIxOCwxLDEyMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsNywKLSAgICA5NSwxMTksOTUsMTA4LDExMSwxMTAsMTAzLDQwLDAsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMiwxMTQsMTcsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLAotICAgIDEsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLAotICAgIDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwwLAotICAgIDgzLDQxLDIsMTIyLDQ3LDY3LDExMSwxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLDUyLDMyLDk4LAotICAgIDEyMSwxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLDQ1LDEwMSwKLSAgICAxMTAsMTAwLDEwNSw5NywxMTAsMzIsMTE2LDExMSwzMiw5NywxMTAsMzIsMTA1LDExMCwxMTYsMTAxLAotICAgIDEwMywxMDEsMTE0LDQ2LDExNCwxMywwLDAsMCw0MSwyLDExNCwxNCwwLDAsMCwKLSAgICAyMTgsMTAsMTAyLDExNCwxMTEsMTA5LDk1LDk4LDEyMSwxMTYsMTAxLDExNSw0MSwxLDkwLDksCi0gICAgMTA1LDExMCwxMTYsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw1LDAsMCwwLDIxOCw3LDk1LDExNCw5NSwxMDgsMTExLDExMCwKLSAgICAxMDMsNDUsMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNCwxOSwwLDAsCi0gICAgMCw5OSwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsCi0gICAgMCwwLDcxLDAsMCwwLDExNSwyNiwwLDAsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsMTI0LDAsMCw2OCwxMzEsMSwKLSAgICAwLDEzMSwxLDAsODMsNDEsMywxMjIsMzEsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLAotICAgIDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LAotICAgIDQ2LDEwNiwxMTEsMTA1LDExMCw0MCw0MSw0Niw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCw0LDAsMCwwLDgzLDAsMCwwLDExNSwzNywwLAotICAgIDAsMCwxMDMsMCwwLDEyNCwwLDAsOTMsMjcsMCwxMjUsMSwwLDEyNCwxLAotICAgIDAsMTE0LDYsMCwxMjQsMSwwLDEwNiwwLDAsMTE2LDEsMCwxMzEsMSwwLAotICAgIDE0NSwyLDAsMTEzLDYsMCw4MywxMTQsNCwwLDAsMCw0MSwyLDIxOCw2LAotICAgIDExNCwxMTUsMTE2LDExNCwxMDUsMTEyLDIxOCwxNSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiwKLSAgICA5NywxMTQsOTcsMTE2LDExMSwxMTQsMTE1LDQxLDIsMjE4LDIsNDYsNDgsMjE4LDQsMTEyLAotICAgIDk3LDExNCwxMTYsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMjUwLDEwLDYwLDEwOCwxMDUsMTE1LDExNiw5OSwxMTEsMTA5LDExMiw2Miw1MiwwLAotICAgIDAsMCwxMTUsMiwwLDAsMCw5LDEsMTIyLDMwLDk1LDExMiw5NywxMTYsMTA0LAotICAgIDk1LDEwNiwxMTEsMTA1LDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsCi0gICAgMTA4LDEwNSwxMTUsMTE2LDk5LDExMSwxMDksMTEyLDYyLDQxLDIsMjE4LDgsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsMTE1LDEwMSwxMTIsMjE4LDQsMTA2LDExMSwxMDUsMTEwLDQxLDEsMjE4LDEwLDExMiwKLSAgICA5NywxMTYsMTA0LDk1LDExMiw5NywxMTQsMTE2LDExNSwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTAsOTUsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA2LDExMSwxMDUsMTEwLDUwLDAsMCwwLDExNSw0LDAsMCwwLDAsMiwxNSwKLSAgICAxLDExNCwyOCwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwKLSAgICAwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwxMzQsMCwwLDAsCi0gICAgMTE2LDAsMCwxMTYsMSwwLDEzMSwxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwKLSAgICA1MiwwLDEyNCwwLDAsMTA2LDIsMCwxMTYsMywwLDEzMSwxLDAsOTIsMywKLSAgICAwLDEyNSwxLDAsMTI1LDIsMCwxMjUsMywwLDEyNCwxLDAsMTI0LDMsMCwKLSAgICAxMDIsMiwwLDgzLDEyMCw2OSwwLDExNiw0LDAsMTI0LDAsMCwxMzEsMSwwLAotICAgIDY4LDkzLDU1LDAsMTI1LDQsMCwxMjQsNCwwLDExNiwxLDAsMTA3LDYsMCwKLSAgICAxMTQsNjUsMCwxMjQsMCwwLDEwNiw1LDAsMTI0LDQsMCwxMDAsMiwwLDEwMCwKLSAgICAxLDAsMTMxLDEsMSw5MiwyLDAsMTI1LDEsMCwxMjUsMywwLDEyNCwxLAotICAgIDAsMTI0LDMsMCwxMDIsMiwwLDgzLDExMyw2NSwwLDg3LDEwMCwzLDAsMTI0LAotICAgIDAsMCwxMDIsMiwwLDgzLDQxLDQsMTIyLDMyLDgyLDEwMSwxMTIsMTA4LDk3LDk5LAotICAgIDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LAotICAgIDEwNCw0NiwxMTUsMTEyLDEwOCwxMDUsMTE2LDQwLDQxLDQ2LDIzMywxLDAsMCwwLDkwLAotICAgIDgsMTA5LDk3LDEyMCwxMTUsMTEyLDEwOCwxMDUsMTE2LDIxOCwwLDQxLDYsMjE4LDMsMTA4LAotICAgIDEwMSwxMTAsMTE0LDIxLDAsMCwwLDIxOCwxMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwKLSAgICAxMDUsMTExLDExMCwxMTQsMjUsMCwwLDAsMjE4LDgsMTE0LDEwMSwxMTgsMTAxLDExNCwxMTUsCi0gICAgMTAxLDEwMCwyMTgsNiwxMTQsMTE1LDExMiwxMDgsMTA1LDExNiw0MSw1LDIxOCw0LDExMiw5NywKLSAgICAxMTYsMTA0LDkwLDUsMTAyLDExNCwxMTEsMTEwLDExNiwyMTgsMSw5NSwyMTgsNCwxMTYsOTcsCi0gICAgMTA1LDEwOCwxMTQsMTYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDUsMCwwLDAsMjE4LDExLDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsCi0gICAgMTA4LDEwNSwxMTYsNTYsMCwwLDAsMTE1LDE2LDAsMCwwLDAsMiwxOCwxLAotICAgIDI0LDEsMTAsMSwxOSwxLDEyLDEsMjcsMSwxNCwxLDExNCwzOCwwLDAsCi0gICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTI0LDAsMCwxMzEsMSwwLDgzLDQxLDEsMTIyLDEyNiw4MywxMTYsOTcsMTE2LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAotICAgIDc3LDk3LDEwMCwxMDEsMzIsOTcsMzIsMTE1LDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMDEsMzIsCi0gICAgMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTA5LDk3LDEwNywxMDEsCi0gICAgMzIsMTA1LDExNiwzMiwxMDEsOTcsMTE1LDEwNSwxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTExLDExOCwKLSAgICAxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMDUsMTEwLDMyLDEwMSwxMjAsMTEyLDEwMSwxMTQsMTA1LAotICAgIDEwOSwxMDEsMTEwLDExNiwxMTUsMTAsMzIsMzIsMzIsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwKLSAgICA5OSw5Nyw5OSwxMDQsMTAxLDMyLDExNSwxMTYsOTcsMTE2LDMyLDExNCwxMDEsMTE1LDExNywxMDgsCi0gICAgMTE2LDExNSw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw0MSwyLDExNCwzLDAsMCwKLSAgICAwLDkwLDQsMTE1LDExNiw5NywxMTYsNDEsMSwxMTQsMzUsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEwLDk1LAotICAgIDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDY4LDAsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsNywxMTQsMzksMCwwLDAsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDMsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDU4LAotICAgIDAsMCwwLDEyMSwxNiwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwKLSAgICAyLDAsODcsMTEwLDIyLDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCw0MCwwLAotICAgIDEsMSwxLDEwMCwxLDAsODMsODksMTEwLDEsMCw4OCwxMjQsMiwwLDEwNiwKLSAgICAyLDAsMTAwLDIsMCw2NCwxMjQsMSwwLDEwNywyLDAsODMsNDEsMywxMjIsCi0gICAgNDksODQsMTAxLDExNSwxMTYsMzIsMTE5LDEwNCwxMDEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwKLSAgICAxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMDEsMzIsMTE2LDEyMSwxMTIsCi0gICAgMTAxLDQ2LDcwLDEwNSwwLDI0MCwwLDAsNDEsMywxMTQsMzksMCwwLDAsMjE4LAotICAgIDcsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LDIxOCw3LDExNSwxMTYsOTUsMTA5LDExMSwxMDAsCi0gICAgMTAxLDQxLDMsMTE0LDM1LDAsMCwwLDIxOCw0LDEwOSwxMTEsMTAwLDEwMSw5MCw5LAotICAgIDExNSwxMTYsOTcsMTE2LDk1LDEwNSwxMTAsMTAyLDExMSwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTgsOTUsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDc4LDAsMCwwLAotICAgIDExNSwxMCwwLDAsMCwwLDIsMywxLDE2LDEsMTMsMSw5LDEsMTE0LAotICAgIDQzLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwKLSAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDExNiwwLAotICAgIDAsMTI0LDAsMCwxMDAsMSwwLDEzMSwyLDAsODMsNDEsMiwxMjIsMzEsODIsCi0gICAgMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsCi0gICAgMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwNSwwLAotICAgIDEyOCwwLDAsNDEsMSwxMTQsNDMsMCwwLDAsNDEsMSwxMTQsMzUsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCi0gICAgMjE4LDEyLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDg3LDAsCi0gICAgMCwwLDExNSwyLDAsMCwwLDAsMiwxMTQsNDQsMCwwLDAsOTksMSwKLSAgICAwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsMzQsMCwwLDAsMTI0LDAsMCwxMTUsMjEsMCwxMTYsMCwKLSAgICAwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMCwwLDExMCwwLDAsMTE2LDIsMCwKLSAgICAxMjQsMCwwLDEwMCwxLDAsMTMxLDIsMCw4Myw0MSwyLDEyMiwzMCw4MiwxMDEsCi0gICAgMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsCi0gICAgNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA1LDExNSwxMDAsMTA1LDExNCw0NiwxMDUsMCw2NCwwLAotICAgIDAsNDEsMywxMTQsMywwLDAsMCwyMTgsNiwxMDMsMTAxLDExNiw5OSwxMTksMTAwLAotICAgIDExNCw0MywwLDAsMCw0MSwxLDExNCwzNSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTEsOTUsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCw5MiwwLDAsMCwxMTUsNiwwLDAsCi0gICAgMCwwLDIsNiwxLDE1LDEsMTE0LDQ2LDAsMCwwLDEwNSwxODIsMSwwLAotICAgIDAsOTksMywwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTcsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDE5MiwwLDAsMCwxMDAsMSwwLDEwNiwwLAotICAgIDAsMTI0LDAsMCwxMTYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMzEsMiwwLAotICAgIDEyNSwzLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwzLDAsMTE2LDIsMCwxMDYsCi0gICAgNCwwLDExNiwyLDAsMTA2LDUsMCw2NiwxMTYsMiwwLDEwNiw2LDAsNjYsCi0gICAgMTI0LDIsMCwxMDAsMiwwLDY0LDEzMSwzLDAsMTI1LDQsMCwxMjEsNjAsMCwKLSAgICAxMTYsNywwLDEwNiw4LDAsMTI0LDQsMCwxMDAsMywwLDEzMSwyLDAsMTQzLAotICAgIDIwLDAsMTI1LDUsMCwxMjQsNSwwLDEwNiw5LDAsMTI0LDEsMCwxMzEsMSwKLSAgICAwLDEsODcsMTAwLDQsMCw4MSw4OCwxMTYsMiwwLDEwNiwxMCwwLDEyNCwzLAotICAgIDAsMTI0LDAsMCwxMzEsMiwwLDEsODcsMTEwLDU5LDAsNCwxMTYsMTEsMCwKLSAgICAxMDcsMTAsMCwxMTQsMTg3LDAsMSwxLDEsMTIxLDE3LDAsMTE2LDIsMCwxMDYsCi0gICAgMTIsMCwxMjQsMywwLDEzMSwxLDAsMSw4NywxMTAsMTgsMCw0LDExNiwxMSwKLSAgICAwLDEwNywxMCwwLDExNCwxNzksMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEzMCwKLSAgICAwLDAsODksMTEwLDEsMCw4OCwxMDAsNCwwLDgzLDQxLDUsMTIyLDE2Miw2NiwKLSAgICAxMDEsMTE1LDExNiw0NSwxMDEsMTAyLDEwMiwxMTEsMTE0LDExNiwzMiwxMDIsMTE3LDExMCw5OSwxMTYsCi0gICAgMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDMyLDEwMCw5NywxMTYsCi0gICAgOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTYsMTExLDEwOSwKLSAgICAxMDUsOTksOTcsMTA4LDEwOCwxMjEsNDYsMTAsMzIsMzIsMzIsMzIsNjYsMTAxLDMyLDExMiwKLSAgICAxMTQsMTAxLDExMiw5NywxMTQsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwKLSAgICAxMDEsMzIsOTcsMzIsNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwxMTUsMTE2LDExNSw2OSwxMTQsCi0gICAgMTE0LDExMSwxMTQsMzIsMTA1LDEwMiwzMiw5OSwxMTEsMTEwLDk5LDExNywxMTQsMTE0LDEwMSwxMTAsCi0gICAgMTE2LDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLAotICAgIDEwLDMyLDMyLDMyLDMyLDExNiwxMDEsMTA5LDExMiwxMTEsMTE0LDk3LDExNCwxMjEsMzIsMTAyLAotICAgIDEwNSwxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCwKLSAgICA0NiwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsMTA1LDE4MiwxLDAsMCw5MCwyLDExOSwKLSAgICA5OCw3OCw0MSwxMywyMTgsNiwxMDIsMTExLDExNCwxMDksOTcsMTE2LDIxOCwyLDEwNSwxMDAsCi0gICAgMTE0LDMsMCwwLDAsOTAsNCwxMTEsMTEyLDEwMSwxMTAsOTAsNiw3OSw5NSw2OSwKLSAgICA4OCw2Nyw3Niw5MCw3LDc5LDk1LDY3LDgyLDY5LDY1LDg0LDkwLDgsNzksOTUsCi0gICAgODcsODIsNzksNzgsNzYsODksMjE4LDMsOTUsMTA1LDExMSwyMTgsNiw3MCwxMDUsMTA4LAotICAgIDEwMSw3Myw3OSwyMTgsNSwxMTksMTE0LDEwNSwxMTYsMTAxLDIxOCw3LDExNCwxMDEsMTEyLDEwOCwKLSAgICA5Nyw5OSwxMDEsMTE0LDQwLDAsMCwwLDkwLDYsMTE3LDExMCwxMDgsMTA1LDExMCwxMDcsCi0gICAgNDEsNiwxMTQsMzUsMCwwLDAsMjE4LDQsMTAwLDk3LDExNiw5NywxMTQsNDIsMCwKLSAgICAwLDAsOTAsOCwxMTIsOTcsMTE2LDEwNCw5NSwxMTYsMTA5LDExMiw5MCwyLDEwMiwxMDAsCi0gICAgMjE4LDQsMTAyLDEwNSwxMDgsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDIxOCwxMyw5NSwxMTksMTE0LDEwNSwxMTYsMTAxLDk1LDk3LDExNiwKLSAgICAxMTEsMTA5LDEwNSw5OSw5OSwwLDAsMCwxMTUsMjYsMCwwLDAsMCw1LDI0LAotICAgIDEsOSwxLDMzLDEsMywzLDIxLDEsMTksMSwyMCwxLDEzLDEsMywKLSAgICAxLDE3LDEsMTMsMSw1LDEsMTE0LDU1LDAsMCwwLDk5LDIsMCwwLAotICAgIDAsMCwwLDAsMCwzLDAsMCwwLDcsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDk1LDAsMCwwLDEyMCw2OSwwLDEwMCwxLDAsMTAwLDIsMCwxMDAsCi0gICAgMywwLDEwMCw0LDAsMTAzLDQsMCw2OCw5Myw0OSwwLDEyNSwyLDAsMTE2LAotICAgIDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMTQsMTksMCwxMTYsMSwKLSAgICAwLDEyNCwwLDAsMTI0LDIsMCwxMTYsMiwwLDEyNCwxLDAsMTI0LDIsMCwKLSAgICAxMzEsMiwwLDEzMSwzLDAsMSwxMTMsMTksMCwxMTMsMTksMCw4NywxMjQsMCwKLSAgICAwLDEwNiwzLDAsMTA2LDQsMCwxMjQsMSwwLDEwNiwzLDAsMTMxLDEsMCwKLSAgICAxLDEwMCw1LDAsODMsNDEsNiwxMjIsNDcsODMsMTA1LDEwOSwxMTIsMTA4LDEwMSwzMiwKLSAgICAxMTUsMTE3LDk4LDExNSwxMTYsMTA1LDExNiwxMTcsMTE2LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMDIsCi0gICAgMTE3LDExMCw5OSwxMTYsMTExLDExMSwxMDgsMTE1LDQ2LDExNywxMTIsMTAwLDk3LDExNiwxMDEsOTUsCi0gICAgMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDYsMjE4LDEwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDk1LDk1LDIxOCw4LDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDIxOCwxMiwKLSAgICA5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwyMTgsNyw5NSw5NSwKLSAgICAxMDAsMTExLDk5LDk1LDk1LDc4LDQxLDUsMjE4LDcsMTA0LDk3LDExNSw5NywxMTYsMTE2LAotICAgIDExNCwyMTgsNywxMTUsMTAxLDExNiw5NywxMTYsMTE2LDExNCwyMTgsNywxMDMsMTAxLDExNiw5NywKLSAgICAxMTYsMTE2LDExNCwyMTgsOCw5NSw5NSwxMDAsMTA1LDk5LDExNiw5NSw5NSwyMTgsNiwxMTcsCi0gICAgMTEyLDEwMCw5NywxMTYsMTAxLDQxLDMsOTAsMywxMTAsMTAxLDExOSw5MCwzLDExMSwxMDgsCi0gICAgMTAwLDExNCw1MiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNSwwLDAsMCwyMTgsNSw5NSwxMTksMTE0LDk3LDExMiwxMjEsMCwwLDAsCi0gICAgMTE1LDgsMCwwLDAsMCwyLDI1LDEsMTUsMSwzMiwxLDExNCw2NSwwLAotICAgIDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwwLDExNiwKLSAgICAxLDAsMTMxLDEsMCwxMjQsMCwwLDEzMSwxLDAsODMsNDEsMSw3OCw0MSwKLSAgICAyLDIxOCw0LDExNiwxMjEsMTEyLDEwMSwxMTQsNywwLDAsMCw0MSwxLDIxOCw0LAotICAgIDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDIxOCwxMSw5NSwxMTAsMTAxLDExOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMjksMCwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNCw2OCwwLDAsMCwKLSAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSw1OCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwKLSAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwKLSAgICAzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLAotICAgIDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwKLSAgICAxMDAsOCwwLDgzLDQxLDksMjE4LDEzLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLAotICAgIDEwMSwxMDgsMTExLDk3LDEwMCwxMjIsNjMsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE1LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDExMiwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSwzMiw5OSwxMDgsMTAxLDk3LAotICAgIDExMCw0NSwxMTcsMTEyLDMyLDExMSwxMDIsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDQwLDQxLDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwyLAotICAgIDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLAotICAgIDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDAsMCw4Myw0MSwxLDc4LAotICAgIDQxLDEsMjE4LDUsOTUsMTEwLDk3LDEwOSwxMDEsNDEsMiwyMTgsNCwxMTUsMTAxLDEwOCwKLSAgICAxMDIsMTE0LDY3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDIxOCw4LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxNDEsCi0gICAgMCwwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyMiw5NSw3Nyw5NywxMTAsCi0gICAgOTcsMTAzLDEwMSw4MiwxMDEsMTA4LDExMSw5NywxMDAsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LAotICAgIDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDI1LDAsMCwwLDEyNCwwLDAsMTA2LAotICAgIDAsMCwxMTYsMSwwLDEwNiwyLDAsMTA3LDYsMCwxMjQsMCwwLDk1LDMsCi0gICAgMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsNCwxMTQsNzAsMCwwLDAsMTE0LAotICAgIDcsMCwwLDAsMjE4LDcsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDIxOCwxMCw5NSwKLSAgICAxMDUsMTE1LDk1LDExNCwxMDEsMTA4LDExMSw5NywxMDAsNDEsMSwxMTQsNzEsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LAotICAgIDksOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSwxNDQsMCwwLDAsMTE1LDIsCi0gICAgMCwwLDAsMCwxLDEyMiwyMyw5NSw3Nyw5NywxMTAsOTcsMTAzLDEwMSw4MiwxMDEsCi0gICAgMTA4LDExMSw5NywxMDAsNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsMCw3MSwKLSAgICAwLDAsMCwxMTUsODAsMCwwLDAsMTE2LDAsMCwxMDAsMSwwLDEwMCwyLAotICAgIDAsMTMyLDAsMCwxMjQsMSwwLDY4LDEzMSwxLDAsMTMxLDEsMCwxMTQsNzYsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTIsMTE0LDc2LDAsMTIxLDE3LDAsMTE2LDIsCi0gICAgMCwxMDYsMywwLDEyNCwwLDAsMTA2LDQsMCw2MSw4NywxMTMsNzYsMCw0LAotICAgIDExNiw1LDAsMTA3LDEwLDAsMTE0LDcyLDAsMSwxLDEsODksMTEzLDc2LDAsCi0gICAgODgsMTEwLDAsMCwxMDAsMCwwLDgzLDQxLDMsNzgsOTksMSwwLDAsMCwKLSAgICAwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwxMTUsMCwwLDAsCi0gICAgMTE1LDI3LDAsMCwwLDEyNCwwLDAsOTMsMTcsMCwxMjUsMSwwLDEyNCwxLAotICAgIDAsMTAwLDAsMCwxMDcsOSwwLDg2LDEsMTEzLDMsMCwxMDAsMCwwLDgzLAotICAgIDQxLDEsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMjIsMCwwLDAsMjE4LAotICAgIDMsOTcsMTE0LDEwMywxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwyNTAsOSw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTQ4LDAsCi0gICAgMCwwLDExNSwyLDAsMCwwLDYsMCwxMjIsNDEsOTUsNzcsOTcsMTEwLDk3LAotICAgIDEwMywxMDEsODIsMTAxLDEwOCwxMTEsOTcsMTAwLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSwKLSAgICA5NSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsMTAxLAotICAgIDEyMCwxMTIsMTE0LDYyLDQxLDYsMjE4LDMsOTcsMTEwLDEyMSwxMTQsNzQsMCwwLDAsCi0gICAgMTE0LDcsMCwwLDAsMTE0LDczLDAsMCwwLDExNCw3MCwwLDAsMCwyMTgsCi0gICAgOCw3NSwxMDEsMTIxLDY5LDExNCwxMTQsMTExLDExNCw0MSwyLDExNCw3MSwwLDAsMCwKLSAgICAyMTgsNCw5NywxMTQsMTAzLDExNSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNSwwLDAsMCwyMTgsOCw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsMTQ3LAotICAgIDAsMCwwLDExNSwxMCwwLDAsMCwwLDEsMzUsMSwzLDEsMTcsMSwKLSAgICAxMywxLDEyMiwyMiw5NSw3Nyw5NywxMTAsOTcsMTAzLDEwMSw4MiwxMDEsMTA4LDExMSw5NywKLSAgICAxMDAsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDc4LDQxLDcsMTE0LDU3LDAsCi0gICAgMCwwLDExNCw1NiwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDU5LDAsMCwKLSAgICAwLDExNCw3MiwwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LDgxLDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA1LDAsMCwwLDExNCw2OSwwLDAsMCwxMzcsMCwwLDAsMTE1LDgsMCwKLSAgICAwLDAsMTIsMiw2LDIsMTIsMywxMiwzLDExNCw2OSwwLDAsMCw5OSwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAotICAgIDY0LDAsMCwwLDExNSwxNiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsCi0gICAgMCwwLDkwLDIsMCwxMDAsMSwwLDgzLDQxLDIsMjE4LDE0LDk1LDY4LDEwMSwKLSAgICA5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsMTE0LDc4LDQxLDMsMTE0LDU3LAotICAgIDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAotICAgIDAsMTE0LDgyLDAsMCwwLDE2MiwwLDAsMCwxMTUsMiwwLDAsMCwxMiwKLSAgICAxLDExNCw4MiwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSw4MiwwLDAsMCwKLSAgICAxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLAotICAgIDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsCi0gICAgMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwKLSAgICAxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCw5MCwKLSAgICA3LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMCw5MCw4LDAsMTAwLDEyLAotICAgIDAsODMsNDEsMTMsMjE4LDExLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LAotICAgIDEwNywxMjIsMTY5LDY1LDMyLDExNCwxMDEsOTksMTE3LDExNCwxMTUsMTA1LDExOCwxMDEsMzIsMTA4LAotICAgIDExMSw5OSwxMDcsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTE1LDMyLDk3LDk4LDEwOCwxMDEsCi0gICAgMzIsMTE2LDExMSwzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwKLSAgICAxMTEsOTksMTA3LDExNSwxMCwzMiwzMiwzMiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDExNiwKLSAgICAxMDQsMTE0LDEwMSw5NywxMDAsMzIsNDksMzIsMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTE2LAotICAgIDExMSwzMiwxMTYsOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LDEwNywxMTUsMzIsNjUsMzIsMTE2LAotICAgIDEwNCwxMDEsMTEwLDMyLDY2LDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMTQsMTAxLDk3LAotICAgIDEwMCwzMiw1MCwzMiwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywzMiwxMTYsMTExLDEwLDMyLDMyLAotICAgIDMyLDMyLDExNiw5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDExNSwzMiw2NiwzMiwxMTYsCi0gICAgMTA0LDEwMSwxMTAsMzIsNjUsNDEsNDYsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsCi0gICAgMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsNzAsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI0LAotICAgIDAsMCw5NSwyLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI0LDAsCi0gICAgMCw5NSwzLDAsMTI0LDEsMCwxMjQsMCwwLDk1LDQsMCwxMDAsMCwwLAotICAgIDEyNCwwLDAsOTUsNSwwLDEwMCwxLDAsMTI0LDAsMCw5NSw2LDAsMTAwLAotICAgIDEsMCwxMjQsMCwwLDk1LDcsMCwxMDAsMCwwLDgzLDQxLDIsNzgsMjMzLAotICAgIDAsMCwwLDAsNDEsOCwyMTgsNyw5NSwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDkwLAotICAgIDEzLDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMjE4LDQsCi0gICAgMTA4LDExMSw5OSwxMDcsMjE4LDYsMTE5LDk3LDEwNywxMDEsMTE3LDExMiwxMTQsNjcsMCwwLAotICAgIDAsMjE4LDUsMTExLDExOSwxMTAsMTAxLDExNCwyMTgsNSw5OSwxMTEsMTE3LDExMCwxMTYsMjE4LAotICAgIDcsMTE5LDk3LDEwNSwxMTYsMTAxLDExNCwxMTUsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LAotICAgIDY3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDExNCw3MiwwLDAsMCwxNzIsMCwwLDAsMTE1LDEyLDAsMCwKLSAgICAwLDAsMSwxNSwxLDE1LDEsOSwxLDksMSw5LDEsMTIyLDIwLDk1LAotICAgIDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMDUsMTEwLDEwNSwKLSAgICAxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsCi0gICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsODgsMCwwLDAsMTE2LDAsMCwKLSAgICAxMDYsMSwwLDEzMSwwLDAsMTI1LDEsMCwxMjQsMCwwLDEwNiwyLDAsMTI1LAotICAgIDIsMCwxMjAsNjAsMCwxMTYsMywwLDEwNiw0LDAsMTI0LDIsMCwxMzEsMSwKLSAgICAwLDEyNSwzLDAsMTI0LDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDU1LDAsCi0gICAgMTAwLDEsMCw4MywxMjQsMywwLDEwNiwyLDAsMTI1LDIsMCwxMjQsMiwwLAotICAgIDEyNCwxLDAsMTA3LDIsMCwxMTQsMjQsMCwxMDAsMiwwLDgzLDExMywyNCwwLAotICAgIDg3LDEwMCwwLDAsODMsNDEsMyw3OCw3MCw4NCw0MSw1LDExNCw4NSwwLDAsCi0gICAgMCwyMTgsOSwxMDMsMTAxLDExNiw5NSwxMDUsMTAwLDEwMSwxMTAsMTE2LDExNCw4OCwwLDAsCi0gICAgMCwyMTgsMTIsOTUsOTgsMTA4LDExMSw5OSwxMDcsMTA1LDExMCwxMDMsOTUsMTExLDExMCwyMTgsCi0gICAgMywxMDMsMTAxLDExNiw0MSw0LDExNCw3MSwwLDAsMCwyMTgsMiwxMDksMTAxLDIxOCwKLSAgICAzLDExNiwxMDUsMTAwLDExNCw4NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTIsMTA0LDk3LDExNSw5NSwxMDAsMTAxLAotICAgIDk3LDEwMCwxMDgsMTExLDk5LDEwNywxODAsMCwwLDAsMTE1LDE4LDAsMCwwLDAsCi0gICAgMiwxMiwxLDksMSwzLDEsMTUsMSwxMiwxLDQsMSw5LDEsMTIsCi0gICAgMSwxMjIsMjQsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDEwNCwKLSAgICA5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsOTksMSwwLDAsMCwKLSAgICAwLDAsMCwwLDIsMCwwLDAsMTYsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDIxNSwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwKLSAgICAwLDEyNCwwLDAsMTE2LDIsMCwxMjQsMSwwLDYwLDEyMiwxNzgsMCwxMjAsMTcxLAotICAgIDAsMTI0LDAsMCwxMDYsMywwLDE0MywxMzAsMCwxLDEyNCwwLDAsMTA2LDQsCi0gICAgMCwxMDAsMSwwLDEwNywyLDAsMTE1LDY4LDAsMTI0LDAsMCwxMDYsNSwwLAotICAgIDEyNCwxLDAsMTA3LDIsMCwxMTQsOTYsMCwxMjQsMSwwLDEyNCwwLDAsOTUsCi0gICAgNSwwLDEyNCwwLDAsNCwxMDYsNCwwLDEwMCwyLDAsNTUsMiw5NSw0LAotICAgIDAsMTAwLDMsMCw4MywxMjQsMCwwLDEwNiw2LDAsMTMxLDAsMCwxMTQsMTI3LAotICAgIDAsMTE2LDcsMCwxMDAsNCwwLDEyNCwwLDAsMjIsMTMxLDEsMCwxMzAsMSwKLSAgICAwLDExMCwwLDAsMTI0LDAsMCwxMDYsOCwwLDEwNiw5LDAsMTAwLDUsMCwKLSAgICAxMzEsMSwwLDExNCwxNjMsMCwxMjQsMCwwLDQsMTA2LDEwLDAsMTAwLDIsMCwKLSAgICA1NSwyLDk1LDEwLDAsMTEwLDAsMCw4NywxMDAsNiwwLDgxLDg4LDEyNCwwLAotICAgIDAsMTA2LDgsMCwxMDYsOSwwLDEzMSwwLDAsMSwxMjQsMCwwLDEwNiw4LAotICAgIDAsMTA2LDExLDAsMTMxLDAsMCwxLDExMywyOCwwLDg3LDg3LDEwMCw2LDAsCi0gICAgMTE2LDIsMCwxMjQsMSwwLDYxLDg4LDEwMCw2LDAsODMsNDEsNywxMjIsMTg1LAotICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDY1LDk5LDExMywxMTcsMTA1LDExNCwxMDEsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsCi0gICAgNDYsMzIsMzIsNzMsMTAyLDMyLDk3LDMyLDExMiwxMTEsMTE2LDEwMSwxMTAsMTE2LDEwNSw5NywKLSAgICAxMDgsMzIsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsMzIsMTA1LDExNSwzMiwxMDAsMTAxLAotICAgIDExNiwxMDEsOTksMTE2LDEwMSwxMDAsNDQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgOTcsMzIsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2OSwxMTQsMTE0LDExMSwxMTQsCi0gICAgMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDc5LDExNiwxMDQsMTAxLDExNCwxMTksMTA1LDExNSwxMDEsNDQsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTA1LDExNSwzMiw5NywxMDgsMTE5LDk3LDEyMSwKLSAgICAxMTUsMzIsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsOTcsMTEwLDEwMCwzMiw4NCwKLSAgICAxMTQsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsNDYsCi0gICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDg0LDAsMCwwLDExNCwyOSwKLSAgICAwLDAsMCw4NCwxMjIsMjMsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsMzIsMTAwLAotICAgIDEwMSwxMTYsMTAxLDk5LDExNiwxMDEsMTAwLDMyLDk4LDEyMSwzMiwzNywxMTQsNzAsNzgsNDEsCi0gICAgMTIsMTE0LDg1LDAsMCwwLDExNCw5MSwwLDAsMCwxMTQsOTIsMCwwLDAsCi0gICAgMTE0LDg2LDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LAotICAgIDk2LDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsODcsMCwwLDAsMjE4LDcsCi0gICAgOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMTQsOTAsMCwwLDAsMjE4LDcsMTE0LDEwMSwKLSAgICAxMDgsMTAxLDk3LDExNSwxMDEsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDk1LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAotICAgIDExNCw5NywwLDAsMCwxOTIsMCwwLDAsMTE1LDMyLDAsMCwwLDAsNiwKLSAgICAxMiwxLDEwLDEsMywxLDMsMSwxMCwxLDMwLDEsOSwxLDE1LDEsCi0gICAgNCwxLDEyLDEsMTksMSwxOCwxLDI0LDIsMTMsMSwyMSwyLDEyMiwxOSwKLSAgICA5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLDExNywKLSAgICAxMDUsMTE0LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKLSAgICAxMCwwLDAsMCw2NywwLDAsMCwxMTUsMTY1LDAsMCwwLDExNiwwLDAsCi0gICAgMTA2LDEsMCwxMzEsMCwwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMiwwLDE0MywKLSAgICAxMzgsMCwxLDEyNCwwLDAsMTA2LDMsMCwxMjQsMSwwLDEwNywzLDAsMTE0LAotICAgIDUyLDAsMTE2LDQsMCwxMDAsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDUsMCwxMDAsMiwwLDEwNyw0LDAsMTE1LDczLDAsCi0gICAgMTE2LDYsMCwxMzAsMSwwLDEyNCwwLDAsNCwxMDYsNSwwLDEwMCwzLDAsCi0gICAgNTYsMiw5NSw1LDAsMTI0LDAsMCwxMDYsNSwwLDEwMCwyLDAsMTA3LDIsCi0gICAgMCwxMTQsMTU1LDAsMTAwLDAsMCwxMjQsMCwwLDk1LDMsMCwxMjQsMCwwLAotICAgIDEwNiw3LDAsMTE0LDE1NSwwLDEyNCwwLDAsNCwxMDYsNywwLDEwMCwzLDAsCi0gICAgNTYsMiw5NSw3LDAsMTI0LDAsMCwxMDYsOCwwLDEwNiw5LDAsMTMxLDAsCi0gICAgMCwxLDExMywxNTUsMCwxMTAsMCwwLDg3LDEwMCwwLDAsODEsODgsMTAwLDAsCi0gICAgMCw4Myw0MSw0LDc4LDEyMiwzMSw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTE0LDEwMSwKLSAgICAxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE3LDExMCw0NSw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLAotICAgIDEwMCwzMiwxMDgsMTExLDk5LDEwNywxMTQsODQsMCwwLDAsMTE0LDI5LDAsMCwwLAotICAgIDQxLDEwLDExNCw4NSwwLDAsMCwxMTQsOTEsMCwwLDAsMTE0LDg2LDAsMCwKLSAgICAwLDExNCw4OCwwLDAsMCwyMTgsMTIsODIsMTE3LDExMCwxMTYsMTA1LDEwOSwxMDEsNjksCi0gICAgMTE0LDExNCwxMTEsMTE0LDExNCw4OSwwLDAsMCwyMTgsMTQsNjUsMTE1LDExNSwxMDEsMTE0LAotICAgIDExNiwxMDUsMTExLDExMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDkwLDAsMCwwLDExNCw4NywKLSAgICAwLDAsMCwxMTQsOTgsMCwwLDAsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LAotICAgIDk1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDExNCw5OCwwLDAsMCwyMTcsMCwwLDAsMTE1LDIyLDAsMCwKLSAgICAwLDAsMSwxMiwxLDEwLDEsMTUsMSwxNSwxLDIxLDEsMTUsMSwxNSwKLSAgICAxLDksMSw5LDEsMTUsMSwxMjIsMTksOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA3NiwxMTEsOTksMTA3LDQ2LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk5LDEsMCwwLAotICAgIDAsMCwwLDAsMCwxLDAsMCwwLDQsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDI1LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwKLSAgICAxLDAsMTE2LDIsMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDIsMCw4Myw0MSwKLSAgICAyLDc4LDEyMiwyMyw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDAsCi0gICAgMTIzLDMzLDExNCwxMjUsNDEsMzIsOTcsMTE2LDMyLDEyMywxMjUsNDEsMywxMTQsNDcsMCwKLSAgICAwLDAsMTE0LDY3LDAsMCwwLDExNCw0OCwwLDAsMCw0MSwxLDExNCw3MSwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwyMTgsOCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsMjMwLDAsMCwwLAotICAgIDExNSwyLDAsMCwwLDAsMSwxMjIsMjAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA3NiwxMTEsOTksMTA3LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw3OCw0MSw5LAotICAgIDExNCw1NywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCwKLSAgICA1OSwwLDAsMCwxMTQsNzIsMCwwLDAsMTE0LDk2LDAsMCwwLDExNCw5NywKLSAgICAwLDAsMCwxMTQsOTgsMCwwLDAsMTE0LDEwMSwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCi0gICAgMCwxMTQsODMsMCwwLDAsMTY2LDAsMCwwLDExNSwxMiwwLDAsMCwxMiwKLSAgICA0LDYsMiwxMiw4LDEyLDEyLDEyLDI1LDEyLDEzLDExNCw4MywwLDAsMCwKLSAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSw3MCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwKLSAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwKLSAgICAzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLAotICAgIDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwKLSAgICAxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsODMsCi0gICAgNDEsMTEsMjE4LDE2LDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDc2LDExMSw5OSwxMDcsMTIyLDg2LDY1LDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTAxLDMyLDk1LAotICAgIDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywzMiwxMDEsMTEzLDExNywxMDUsMTE4LAotICAgIDk3LDEwOCwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLAotICAgIDMyLDk4LDExNywxMDUsMTA4LDEwMCwxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LDExMSwxMTcsMTE2LDEwLAotICAgIDMyLDMyLDMyLDMyLDEwOSwxMTcsMTA4LDExNiwxMDUsNDUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwKLSAgICAxMDUsMTEwLDEwMywzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsNDYsOTksMiwwLDAsCi0gICAgMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMjIsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMDAsCi0gICAgMSwwLDEyNCwwLDAsOTUsMSwwLDEwMCwwLDAsODMsNDEsMiw3OCwxMTQsCi0gICAgODQsMCwwLDAsNDEsMiwxMTQsNjcsMCwwLDAsMTE0LDg5LDAsMCwwLAotICAgIDQxLDIsMTE0LDcxLDAsMCwwLDExNCw2NywwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzIsMCwwLDAsCi0gICAgMjM4LDAsMCwwLDExNSw0LDAsMCwwLDAsMSw5LDEsMTIyLDI1LDk1LAotICAgIDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsCi0gICAgOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LDAsCi0gICAgMCwwLDEyNCwwLDAsNCwxMDYsMCwwLDEwMCwxLDAsNTUsMiw5NSwwLAotICAgIDAsMTAwLDIsMCw4Myw0MSwzLDc4LDExNCwyOSwwLDAsMCw4NCw0MSwxLAotICAgIDExNCw4OSwwLDAsMCw0MSwxLDExNCw3MSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsOTcsMCwwLDAsCi0gICAgMjQyLDAsMCwwLDExNSw0LDAsMCwwLDAsMSwxNSwxLDEyMiwyNCw5NSwKLSAgICA2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LAotICAgIDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLAotICAgIDEsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNDksMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMzAsMCwKLSAgICAxMTYsMSwwLDEwMCwyLDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTI0LAotICAgIDAsMCw0LDEwNiwwLDAsMTAwLDMsMCw1NiwyLDk1LDAsMCwxMDAsMCwKLSAgICAwLDgzLDQxLDQsNzgsMTE0LDg0LDAsMCwwLDEyMiwzMSw5OSw5NywxMTAsMTEwLAotICAgIDExMSwxMTYsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE3LDExMCw0NSw5Nyw5OSwKLSAgICAxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiwxMDgsMTExLDk5LDEwNywxMTQsMjksMCwwLDAsCi0gICAgNDEsMiwxMTQsODksMCwwLDAsMTE0LDk5LDAsMCwwLDQxLDEsMTE0LDcxLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDExNCw5OCwwLDAsMCwyNDYsMCwwLDAsMTE1LDYsMCwwLDAsCi0gICAgMCwxLDE1LDEsMTUsMSwxMjIsMjQsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwKLSAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw0LDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSwyNSwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsCi0gICAgMTI0LDAsMCwxMDYsMSwwLDExNiwyLDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwKLSAgICAyLDAsODMsNDEsMiw3OCwxMjIsMjgsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwKKyAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2LDAsMCwKKyAgICAwLDY0LDAsMCwwLDExNSwxNjksMiwwLDAsMTAwLDAsMCw5MCwwLDAsCisgICAgMTAwLDEsMCw5NywxLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCisgICAgMiwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDMsMCw3MSwxMDAsCisgICAgNiwwLDEwMCw3LDAsMTMyLDAsMCwxMDAsNywwLDEzMSwyLDAsOTAsNCwKKyAgICAwLDEwNSwwLDAsOTAsNSwwLDEwNSwwLDAsOTAsNiwwLDcxLDEwMCw4LAorICAgIDAsMTAwLDksMCwxMzIsMCwwLDEwMCw5LDAsMTAxLDcsMCwxMzEsMywwLAorICAgIDkwLDgsMCw3MSwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwwLDEwMCwxMSwwLAorICAgIDEzMSwyLDAsOTAsOSwwLDcxLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsCisgICAgMTAwLDEzLDAsMTMxLDIsMCw5MCwxMCwwLDcxLDEwMCwxNCwwLDEwMCwxNSwwLAorICAgIDEzMiwwLDAsMTAwLDE1LDAsMTMxLDIsMCw5MCwxMSwwLDEwMCwxNiwwLDEwMCwKKyAgICAxNywwLDEzMiwwLDAsOTAsMTIsMCwxMDAsMTgsMCwxMDAsMTksMCwxMzIsMCwKKyAgICAwLDkwLDEzLDAsMTAwLDIwLDAsMTAwLDIxLDAsMTMyLDAsMCw5MCwxNCwwLAorICAgIDEwMCwyMiwwLDEwMCwyMywwLDEwMCwyNCwwLDEwMCwyNSwwLDEzMiwwLDEsOTAsCisgICAgMTUsMCwxMDAsMjYsMCwxMDAsMjcsMCwxMzIsMCwwLDkwLDE2LDAsMTAwLDI4LAorICAgIDAsMTAwLDI5LDAsMTMyLDAsMCw5MCwxNywwLDEwMCwzMCwwLDEwMCwzMSwwLAorICAgIDEzMiwwLDAsOTAsMTgsMCwxMDAsMzIsMCwxMDAsMzMsMCwxMzIsMCwwLDkwLAorICAgIDE5LDAsNzEsMTAwLDM0LDAsMTAwLDM1LDAsMTMyLDAsMCwxMDAsMzUsMCwxMzEsCisgICAgMiwwLDkwLDIwLDAsNzEsMTAwLDM2LDAsMTAwLDM3LDAsMTMyLDAsMCwxMDAsCisgICAgMzcsMCwxMzEsMiwwLDkwLDIxLDAsMTAwLDM4LDAsMTAwLDEsMCwxMDAsMzksCisgICAgMCwxMDAsMSwwLDEwMCw0MCwwLDEwMCw0MSwwLDEzMiwwLDIsOTAsMjIsMCwKKyAgICAxMDEsMjMsMCwxMzEsMCwwLDkwLDI0LDAsMTAwLDEsMCwxMDAsMSwwLDEwMCwKKyAgICA0MiwwLDEwMCw0MywwLDEzMiwyLDAsOTAsMjUsMCwxMDAsNDQsMCwxMDAsNDUsCisgICAgMCwxMDAsNDYsMCwxMDAsNDcsMCwxMzIsMCwxLDkwLDI2LDAsMTAwLDQ4LDAsCisgICAgMTAwLDQ5LDAsMTMyLDAsMCw5MCwyNywwLDEwMCw1MCwwLDEwMCw1MSwwLDEzMiwKKyAgICAwLDAsOTAsMjgsMCwxMDAsNTIsMCwxMDAsNTMsMCwxMzIsMCwwLDkwLDI5LAorICAgIDAsMTAwLDU0LDAsMTAwLDU1LDAsMTMyLDAsMCw5MCwzMCwwLDEwMCw1NiwwLAorICAgIDEwMCw1NywwLDEzMiwwLDAsOTAsMzEsMCwxMDAsNTgsMCwxMDAsNTksMCwxMzIsCisgICAgMCwwLDkwLDMyLDAsNzEsMTAwLDYwLDAsMTAwLDYxLDAsMTMyLDAsMCwxMDAsCisgICAgNjEsMCwxMzEsMiwwLDkwLDMzLDAsNzEsMTAwLDYyLDAsMTAwLDYzLDAsMTMyLAorICAgIDAsMCwxMDAsNjMsMCwxMzEsMiwwLDkwLDM0LDAsNzEsMTAwLDY0LDAsMTAwLAorICAgIDY1LDAsMTMyLDAsMCwxMDAsNjUsMCwxMzEsMiwwLDkwLDM1LDAsMTAwLDY2LAorICAgIDAsMTAwLDY3LDAsMTMyLDAsMCw5MCwzNiwwLDEwMCw2OCwwLDEwMCw2OSwwLAorICAgIDEzMiwwLDAsOTAsMzcsMCwxMDAsMSwwLDEwMCw3MCwwLDEwMCw3MSwwLDEzMiwKKyAgICAxLDAsOTAsMzgsMCwxMDAsNzIsMCwxMDAsNzMsMCwxMzIsMCwwLDkwLDM5LAorICAgIDAsMTAwLDc0LDAsOTAsNDAsMCwxMDEsNDAsMCwxMDAsNzUsMCwyMyw5MCw0MSwKKyAgICAwLDEwMCw3NiwwLDEwMCw3NywwLDEzMiwwLDAsOTAsNDIsMCwxMDAsNzgsMCwKKyAgICAxMDAsNzksMCwxMzIsMCwwLDkwLDQzLDAsMTAwLDEsMCwxMDAsODAsMCwxMDAsCisgICAgODEsMCwxMDAsODIsMCwxMzIsMiwwLDkwLDQ0LDAsMTAwLDgzLDAsMTAwLDg0LAorICAgIDAsMTMyLDAsMCw5MCw0NSwwLDEwMCw4NSwwLDEwMCw4NiwwLDEzMiwwLDAsCisgICAgOTAsNDYsMCwxMDAsMSwwLDEwMCwxLDAsMTAyLDAsMCwxMDAsODAsMCwxMDAsCisgICAgODcsMCwxMDAsODgsMCwxMzIsNCwwLDkwLDQ3LDAsMTAwLDg5LDAsMTAwLDkwLAorICAgIDAsMTMyLDAsMCw5MCw0OCwwLDEwMCw5MSwwLDEwMCw5MiwwLDEzMiwwLDAsCisgICAgOTAsNDksMCwxMDAsOTMsMCwxMDAsOTQsMCwxMzIsMCwwLDkwLDUwLDAsMTAwLAorICAgIDEsMCw4Myw0MSw5NSw5Nyw4MywxLDAsMCw2NywxMTEsMTE0LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMCwxMCw4NCwxMDQsMTA1LDExNSwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDc4LDc5LDg0LDMyLDEwOSwxMDEsOTcsCisgICAgMTEwLDExNiwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDEwOCwKKyAgICAxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMywzMiw3MywxMTYsMzIsMTA0LAorICAgIDk3LDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLAorICAgIDMyLDExNSwxMTcsOTksMTA0LDEwLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTYsMzIsOTksOTcsCisgICAgMTEwLDMyLDk4LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsMTEyLDEwMSwKKyAgICAxMDAsMzIsMTA1LDExMCwxMTYsMTExLDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsOTcsMTE1LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwKKyAgICAxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLDY1LAorICAgIDExNSwxMCwxMTUsMTE3LDk5LDEwNCwzMiwxMDUsMTE2LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LAorICAgIDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTExLDExMCwKKyAgICAzMiwxMTEsMTAyLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsCisgICAgMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMTAsCisgICAgMTE5LDExMSwxMTQsMTA3LDQ2LDMyLDc5LDExMCwxMDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsCisgICAgMzIsMTE3LDExNSwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5NywKKyAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNyw5OCwxMDgsMTA1LDk5LDQ1LDEwMiw5Nyw5OSwKKyAgICAxMDUsMTEwLDEwMywzMiwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTYsCisgICAgMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsNzgsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsOTIsMCwwLDAsMTIwLDY2LDAsMTAwLDEsMCwxMDAsMiwKKyAgICAwLDEwMCwzLDAsMTAwLDQsMCwxMDMsNCwwLDY4LDkzLDQ2LDAsMTI1LDIsCisgICAgMCwxMTYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDExNCwxOSwwLAorICAgIDExNiwxLDAsMTI0LDAsMCwxMjQsMiwwLDExNiwyLDAsMTI0LDEsMCwxMjQsCisgICAgMiwwLDEzMSwyLDAsMTMxLDMsMCwxLDExMywxOSwwLDg3LDEyNCwwLDAsCisgICAgMTA2LDMsMCwxMDYsNCwwLDEyNCwxLDAsMTA2LDMsMCwxMzEsMSwwLDEsCisgICAgMTAwLDUsMCw4Myw0MSw2LDEyMiw0Nyw4MywxMDUsMTA5LDExMiwxMDgsMTAxLDMyLDExNSwKKyAgICAxMTcsOTgsMTE1LDExNiwxMDUsMTE2LDExNywxMTYsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEwMiwxMTcsCisgICAgMTEwLDk5LDExNiwxMTEsMTExLDEwOCwxMTUsNDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw5NSwxMTksCisgICAgMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0NiwyMTgsMTAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsOTUsOTUsMjE4LDgsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMjE4LDEyLDk1LAorICAgIDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDIxOCw3LDk1LDk1LDEwMCwKKyAgICAxMTEsOTksOTUsOTUsNzgsNDEsNSwyMTgsNywxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LAorICAgIDIxOCw3LDExNSwxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw3LDEwMywxMDEsMTE2LDk3LDExNiwKKyAgICAxMTYsMTE0LDIxOCw4LDk1LDk1LDEwMCwxMDUsOTksMTE2LDk1LDk1LDIxOCw2LDExNywxMTIsCisgICAgMTAwLDk3LDExNiwxMDEsNDEsMyw5MCwzLDExMCwxMDEsMTE5LDkwLDMsMTExLDEwOCwxMDAsCisgICAgMjE4LDcsMTE0LDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxNjksMCwxMTQsMTAsMCwwLDAsCisgICAgMjUwLDI5LDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDIxOCwKKyAgICA1LDk1LDExOSwxMTQsOTcsMTEyLDI3LDAsMCwwLDExNSw4LDAsMCwwLDAsCisgICAgMiwyNSwxLDE1LDEsMjksMSwxMTQsMTIsMCwwLDAsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEzMSwxLDAsMTI0LAorICAgIDAsMCwxMzEsMSwwLDgzLDQxLDEsNzgsNDEsMiwyMTgsNCwxMTYsMTIxLDExMiwKKyAgICAxMDEsMjE4LDMsMTE1LDEyMSwxMTUsNDEsMSwyMTgsNCwxMTAsOTcsMTA5LDEwMSwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTEsOTUsCisgICAgMTEwLDEwMSwxMTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzUsMCwwLDAsMTE1LDIsCisgICAgMCwwLDAsMCwxLDExNCwxNiwwLDAsMCw5OSwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKKyAgICA1OCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKKyAgICAxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCwKKyAgICA0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LAorICAgIDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDgzLDQxLDksCisgICAgMjE4LDEzLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCwxMjIsCisgICAgNjMsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTEsMTE1LAorICAgIDExNSwxMDUsOTgsMTA4LDEwMSwzMiw5OSwxMDgsMTAxLDk3LDExMCw0NSwxMTcsMTEyLDMyLDExMSwKKyAgICAxMDIsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDQ2LAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCwKKyAgICA5NSwwLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDEsMjE4LDUsOTUsMTEwLAorICAgIDk3LDEwOSwxMDEsNDEsMiwyMTgsNCwxMTUsMTAxLDEwOCwxMDIsMTE0LDE1LDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKKyAgICA4LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0MywwLDAsMCwxMTUsMiwwLAorICAgIDAsMCwwLDEsMTIyLDIyLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsCisgICAgMTExLDk3LDEwMCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMjUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDExNiwxLDAsMTA2LAorICAgIDIsMCwxMDcsNiwwLDEyNCwwLDAsOTUsMywwLDEwMCwwLDAsODMsNDEsCisgICAgMSw3OCw0MSw0LDExNCwxOCwwLDAsMCwxMTQsMTQsMCwwLDAsMjE4LDcsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDIxOCwxMCw5NSwxMDUsMTE1LDk1LDExNCwxMDEsMTA4LAorICAgIDExMSw5NywxMDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDksOTUsOTUsMTAxLDExMCwxMTYsCisgICAgMTAxLDExNCw5NSw5NSw0NiwwLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAorICAgIDIzLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSwKKyAgICA5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDExLDAsMCwwLDcxLDAsMCwwLDExNSw3NywwLAorICAgIDAsMCwxMTYsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwxLAorICAgIDAsNjgsMTMxLDEsMCwxMzEsMSwwLDExNCw3MywwLDEyNCwwLDAsMTA2LDEsCisgICAgMCwxMiwxMTQsNzMsMCwxMjEsMTcsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDAsCisgICAgMCwxMDYsNCwwLDYxLDg3LDExMCwxOCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwKKyAgICAxMTQsNzIsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsCisgICAgMyw3OCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLAorICAgIDAsMCwwLDExNSwwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywKKyAgICAxNywwLDEyNSwxLDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw5LDAsODYsMSwKKyAgICAxMTMsMywwLDEwMCwwLDAsODMsNDEsMSw3OCwxMTQsMTAsMCwwLDAsNDEsCisgICAgMiwyMTgsMiw0Niw0OCwyMTgsMyw5NywxMTQsMTAzLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDI1MCw5LDYwLDEwMywxMDEsMTEwLDEwMSwKKyAgICAxMjAsMTEyLDExNCw2Miw1MCwwLDAsMCwxMTUsMiwwLDAsMCw2LDAsMTIyLAorICAgIDQxLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSwKKyAgICA5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAorICAgIDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2Miw0MSw2LDIxOCwzLDk3LDExMCwKKyAgICAxMjEsMTE0LDIyLDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsCisgICAgMTE0LDE4LDAsMCwwLDIxOCw4LDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDQxLAorICAgIDIsMTE0LDE5LDAsMCwwLDIxOCw0LDk3LDExNCwxMDMsMTE1LDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDk1LDk1LDEwMSwKKyAgICAxMjAsMTA1LDExNiw5NSw5NSw0OSwwLDAsMCwxMTUsMTAsMCwwLDAsMCwxLAorICAgIDM1LDEsMywxLDE3LDEsMTMsMSwxMjIsMjIsOTUsNzcsOTcsMTEwLDk3LDEwMywKKyAgICAxMDEsODIsMTAxLDEwOCwxMTEsOTcsMTAwLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSwKKyAgICA3OCw0MSw3LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsCisgICAgMCwwLDExNCwzLDAsMCwwLDExNCwyMCwwLDAsMCwxMTQsMjMsMCwwLAorICAgIDAsMTE0LDMwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTcsMCwwLDAsMzksCisgICAgMCwwLDAsMTE1LDgsMCwwLDAsMTIsMiw2LDIsMTIsMywxMiwzLAorICAgIDExNCwxNywwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsMCwxLDAsMCwwLDY0LDAsMCwwLDExNSwxNiwwLDAsMCwxMDEsCisgICAgMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDgzLDQxLAorICAgIDIsMjE4LDE0LDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsCisgICAgMTE0LDc4LDQxLDMsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDExNCwzMSwwLDAsMCw2NCwwLDAsMCwKKyAgICAxMTUsMiwwLDAsMCwxMiwxLDExNCwzMSwwLDAsMCw5OSwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwKKyAgICAwLDExNSw4MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAorICAgIDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsCisgICAgMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLAorICAgIDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDEwMCwKKyAgICA5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsCisgICAgMCw5MCw4LDAsMTAwLDEyLDAsODMsNDEsMTMsMjE4LDExLDk1LDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMjIsMTY5LDY1LDMyLDExNCwxMDEsOTksMTE3LDExNCwKKyAgICAxMTUsMTA1LDExOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCisgICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsCisgICAgMTE1LDMyLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LAorICAgIDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDExNSwxMCwzMiwzMiwzMiwzMiw0MCwKKyAgICAxMDEsNDYsMTAzLDQ2LDMyLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMzIsNDksMzIsMTE2LDExNCwKKyAgICAxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwzMiwxMTYsOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LAorICAgIDEwNywxMTUsMzIsNjUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDY2LDQ0LDMyLDk3LDExMCwxMDAsCisgICAgMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwzMiw1MCwzMiwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywKKyAgICAzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNiw5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksCisgICAgMTA3LDExNSwzMiw2NiwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNjUsNDEsNDYsMTAsMzIsMzIsCisgICAgMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNzAsMCwwLDAsMTE2LDAsMCwxMDYsCisgICAgMSwwLDEzMSwwLDAsMTI0LDAsMCw5NSwyLDAsMTE2LDAsMCwxMDYsMSwKKyAgICAwLDEzMSwwLDAsMTI0LDAsMCw5NSwzLDAsMTI0LDEsMCwxMjQsMCwwLAorICAgIDk1LDQsMCwxMDAsMCwwLDEyNCwwLDAsOTUsNSwwLDEwMCwxLDAsMTI0LAorICAgIDAsMCw5NSw2LDAsMTAwLDEsMCwxMjQsMCwwLDk1LDcsMCwxMDAsMCwKKyAgICAwLDgzLDQxLDIsNzgsMjMzLDAsMCwwLDAsNDEsOCwyMTgsNyw5NSwxMTYsCisgICAgMTA0LDExNCwxMDEsOTcsMTAwLDkwLDEzLDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMDEsOTUsCisgICAgMTA4LDExMSw5OSwxMDcsMjE4LDQsMTA4LDExMSw5OSwxMDcsMjE4LDYsMTE5LDk3LDEwNywxMDEsCisgICAgMTE3LDExMiwxMTQsMTUsMCwwLDAsMjE4LDUsMTExLDExOSwxMTAsMTAxLDExNCwyMTgsNSwKKyAgICA5OSwxMTEsMTE3LDExMCwxMTYsMjE4LDcsMTE5LDk3LDEwNSwxMTYsMTAxLDExNCwxMTUsNDEsMiwKKyAgICAxMTQsMTksMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCw3NCwwLAorICAgIDAsMCwxMTUsMTIsMCwwLDAsMCwxLDE1LDEsMTUsMSw5LDEsOSwKKyAgICAxLDksMSwxMjIsMjAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAorICAgIDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsNCwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw4OCwKKyAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwKKyAgICAwLDAsMTA2LDIsMCwxMjUsMiwwLDEyMCw2MCwwLDExNiwzLDAsMTA2LDQsCisgICAgMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMjQsMywwLDEwMCwwLDAsCisgICAgMTA3LDgsMCwxMTQsNTUsMCwxMDAsMSwwLDgzLDEyNCwzLDAsMTA2LDIsMCwKKyAgICAxMjUsMiwwLDEyNCwyLDAsMTI0LDEsMCwxMDcsMiwwLDExNCwyNCwwLDEwMCwKKyAgICAyLDAsODMsMTEzLDI0LDAsODcsMTAwLDAsMCw4Myw0MSwzLDc4LDcwLDg0LAorICAgIDQxLDUsMTE0LDM0LDAsMCwwLDIxOCw5LDEwMywxMDEsMTE2LDk1LDEwNSwxMDAsMTAxLAorICAgIDExMCwxMTYsMTE0LDM3LDAsMCwwLDIxOCwxMiw5NSw5OCwxMDgsMTExLDk5LDEwNywxMDUsCisgICAgMTEwLDEwMyw5NSwxMTEsMTEwLDIxOCwzLDEwMywxMDEsMTE2LDQxLDQsMTE0LDE5LDAsMCwKKyAgICAwLDkwLDIsMTA5LDEwMSwyMTgsMywxMTYsMTA1LDEwMCwxMTQsMzUsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEyLAorICAgIDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsODIsMCwwLDAsCisgICAgMTE1LDE4LDAsMCwwLDAsMiwxMiwxLDksMSwzLDEsMTUsMSwxMiwKKyAgICAxLDQsMSw5LDEsMTIsMSwxMjIsMjQsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA3NiwxMTEsOTksMTA3LDQ2LDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwKKyAgICAxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTYsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDIxMCwwLDAsMCwxMTYsMCwwLDEwNiwxLAorICAgIDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwwLDAsMTE2LDIsMCwxMjQsMSwwLAorICAgIDYwLDEyMiwxNzMsMCwxMjAsMTY2LDAsMTI0LDAsMCwxMDYsMywwLDE0MywxMjQsMCwKKyAgICAxLDEyNCwwLDAsMTA2LDQsMCwxMDAsMSwwLDEwNywyLDAsMTE1LDY4LDAsCisgICAgMTI0LDAsMCwxMDYsNSwwLDEyNCwxLDAsMTA3LDIsMCwxMTQsOTYsMCwxMjQsCisgICAgMSwwLDEyNCwwLDAsOTUsNSwwLDEyNCwwLDAsNCwxMDYsNCwwLDEwMCwKKyAgICAyLDAsNTUsMiw5NSw0LDAsMTAwLDMsMCw4MywxMjQsMCwwLDEwNiw2LAorICAgIDAsMTMxLDAsMCwxMTQsMTI0LDAsMTE2LDcsMCwxMDAsNCwwLDEyNCwwLDAsCisgICAgMjIsMTMxLDEsMCwxMzAsMSwwLDEyNCwwLDAsMTA2LDgsMCwxMDYsOSwwLAorICAgIDEwMCw1LDAsMTMxLDEsMCwxMTQsMTU3LDAsMTI0LDAsMCw0LDEwNiwxMCwwLAorICAgIDEwMCwyLDAsNTUsMiw5NSwxMCwwLDg3LDEwMCw2LDAsODEsODIsODgsMTI0LAorICAgIDAsMCwxMDYsOCwwLDEwNiw5LDAsMTMxLDAsMCwxLDEyNCwwLDAsMTA2LAorICAgIDgsMCwxMDYsMTEsMCwxMzEsMCwwLDEsMTEzLDI4LDAsODcsODcsMTAwLDYsCisgICAgMCwxMTYsMiwwLDEyNCwxLDAsNjEsODgsMTAwLDYsMCw4Myw0MSw3LDEyMiwKKyAgICAxODUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNjUsOTksMTEzLDExNywxMDUsMTE0LAorICAgIDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LAorICAgIDEwNyw0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LAorICAgIDk3LDEwOCwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDEwMCwKKyAgICAxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCw0NCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiw5NywzMiw5NSw2OCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLAorICAgIDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsNzksMTE2LDEwNCwxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTksOTcsCisgICAgMTIxLDExNSwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiw5NywxMTAsMTAwLDMyLAorICAgIDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwKKyAgICA0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMzMsMCwwLDAsMjMzLAorICAgIDEsMCwwLDAsODQsMTIyLDIzLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDMyLAorICAgIDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMzcsMTE0LDcwLDc4LAorICAgIDQxLDEyLDExNCwzNCwwLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDQxLDAsMCwKKyAgICAwLDExNCwzNSwwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDM3LDAsMCwwLAorICAgIDExNCw0NCwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDM2LDAsMCwwLDIxOCwKKyAgICA3LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTE0LDM5LDAsMCwwLDIxOCw3LDExNCwKKyAgICAxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDQxLDIsMTE0LDE5LDAsMCwwLDExNCw0MywwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCisgICAgMCwxMTQsNDYsMCwwLDAsOTQsMCwwLDAsMTE1LDMyLDAsMCwwLDAsCisgICAgNiwxMiwxLDEwLDEsMywxLDMsMSwxMCwxLDMwLDEsOSwxLDE1LAorICAgIDEsNCwxLDEyLDEsMTYsMSwxOCwxLDIyLDIsMTMsMSwyMSwyLDEyMiwKKyAgICAxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLAorICAgIDExNywxMDUsMTE0LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCwxMCwwLDAsMCw2NywwLDAsMCwxMTUsMTU3LDAsMCwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMiwwLAorICAgIDE0MywxMjksMCwxLDEyNCwwLDAsMTA2LDMsMCwxMjQsMSwwLDEwNywzLDAsCisgICAgMTE0LDQ5LDAsMTE2LDQsMCwxMDAsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMjQsCisgICAgMCwwLDEwNiw1LDAsMTAwLDIsMCwxMDcsNCwwLDExNSw3MCwwLDExNiw2LAorICAgIDAsMTMwLDEsMCwxMjQsMCwwLDQsMTA2LDUsMCwxMDAsMywwLDU2LDIsCisgICAgOTUsNSwwLDEyNCwwLDAsMTA2LDUsMCwxMDAsMiwwLDEwNywyLDAsMTE0LAorICAgIDE0NiwwLDEwMCwwLDAsMTI0LDAsMCw5NSwzLDAsMTI0LDAsMCwxMDYsNywKKyAgICAwLDExNCwxNDYsMCwxMjQsMCwwLDQsMTA2LDcsMCwxMDAsMywwLDU2LDIsCisgICAgOTUsNywwLDEyNCwwLDAsMTA2LDgsMCwxMDYsOSwwLDEzMSwwLDAsMSwKKyAgICA4NywxMDAsMCwwLDgxLDgyLDg4LDEwMCwwLDAsODMsNDEsNCw3OCwxMjIsMzEsCisgICAgOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNywKKyAgICAxMTAsNDUsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LDExMSw5OSwxMDcsMTE0LAorICAgIDMzLDAsMCwwLDExNCw0NSwwLDAsMCw0MSwxMCwxMTQsMzQsMCwwLDAsCisgICAgMTE0LDQwLDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMzcsMCwwLDAsMjE4LAorICAgIDEyLDgyLDExNywxMTAsMTE2LDEwNSwxMDksMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMzgsMCwKKyAgICAwLDAsMjE4LDE0LDY1LDExNSwxMTUsMTAxLDExNCwxMTYsMTA1LDExMSwxMTAsNjksMTE0LDExNCwKKyAgICAxMTEsMTE0LDExNCwzOSwwLDAsMCwxMTQsMzYsMCwwLDAsMTE0LDQ3LDAsMCwKKyAgICAwLDQxLDIsMTE0LDE5LDAsMCwwLDExNCw0MywwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDcsMCwwLAorICAgIDAsMTE5LDAsMCwwLDExNSwyMiwwLDAsMCwwLDEsMTIsMSwxMCwxLAorICAgIDE1LDEsMTIsMSwyMSwxLDE1LDEsMTUsMSw5LDEsOSwxLDE1LDEsCisgICAgMTIyLDE5LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMTQsMTAxLAorICAgIDEwOCwxMDEsOTcsMTE1LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAorICAgIDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwyNSwwLDAsMCwxMDAsCisgICAgMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDExNiwyLDAsMTI0LDAsCisgICAgMCwxMzEsMSwwLDEzMSwyLDAsODMsNDEsMiw3OCwxMjIsMjMsOTUsNzcsMTExLAogICAgIDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQwLDEyMywzMywxMTQsMTI1LDQxLDMyLDk3LAotICAgIDExNiwzMiwxMjMsMTI1LDQxLDMsMTE0LDQ3LDAsMCwwLDExNCw2NywwLDAsMCwKLSAgICAxMTQsNDgsMCwwLDAsNDEsMSwxMTQsNzEsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDEwMSwwLDAsMCwKLSAgICAyNTEsMCwwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNSw5NSw2OCwxMTcsCi0gICAgMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk1LDk1LAotICAgIDExNCwxMDEsMTEyLDExNCw5NSw5NSw3OCw0MSw4LDExNCw1NywwLDAsMCwxMTQsNTYsCi0gICAgMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw1OSwwLDAsMCwxMTQsNzIsMCwKLSAgICAwLDAsMTE0LDk3LDAsMCwwLDExNCw5OCwwLDAsMCwxMTQsMTAxLDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDExNCwxMDIsMCwwLDAsMjM0LDAsMCwwLDExNSwxMCwKLSAgICAwLDAsMCwxMiwyLDYsMiwxMiw0LDEyLDQsMTIsNSwxMTQsMTAyLDAsCi0gICAgMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsCi0gICAgMCwwLDAsNjQsMCwwLDAsMTE1LDUyLDAsMCwwLDEwMSwwLDAsOTAsCi0gICAgMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwKLSAgICAwLDkwLDMsMCwxMDAsMywwLDEwMCw0LDAsMTMyLDAsMCw5MCw0LDAsCi0gICAgMTAwLDUsMCwxMDAsNiwwLDEzMiwwLDAsOTAsNSwwLDEwMCw3LDAsODMsCi0gICAgNDEsOCwyMTgsMTgsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LAotICAgIDk3LDExMCw5NywxMDMsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLDAsMiwKLSAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyMiwwLDAsMCwKLSAgICAxMjQsMSwwLDEyNCwwLDAsOTUsMCwwLDEwMCwwLDAsMTI0LDAsMCw5NSwKLSAgICAxLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDIsMTE0LDcwLDAsMCwwLAotICAgIDIxOCw1LDk1LDEwOCwxMTEsOTksMTA3LDQxLDIsMTE0LDcxLDAsMCwwLDExNCw2NywKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwxMTQsNzIsMCwwLDAsMSwxLDAsMCwxMTUsNCwwLDAsMCwKLSAgICAwLDEsOSwxLDEyMiwyNyw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwKLSAgICAxMDcsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSwKLSAgICA5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxMCwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsNTMsMCwwLDAsMTIyLDIyLDAsMTE2LDAsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDIsMCwKLSAgICA4NywxMDAsMCwwLDExNiwzLDAsMTA2LDQsMCwxMzEsMCwwLDEsODgsMTI0LAotICAgIDAsMCwxMDYsMiwwLDEwNiw1LDAsMTMxLDAsMCwxLDEwMCwwLDAsODMsCi0gICAgNDEsMSw3OCw0MSw2LDIxOCwxNiw5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTQsNzAsMCwwLDAsMTE0LDEwNCwwLDAsCi0gICAgMCwyMTgsNCw5NSwxMDUsMTA5LDExMiwyMTgsMTIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsCi0gICAgOTUsMTA4LDExMSw5OSwxMDcsMTE0LDk3LDAsMCwwLDQxLDEsMTE0LDcxLDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAotICAgIDExNCw3NSwwLDAsMCw1LDEsMCwwLDExNSw4LDAsMCwwLDAsMSwKLSAgICAzLDEsMjIsMiwxMSwxLDEyMiwyOCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LAotICAgIDExMSw5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LAotICAgIDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLAotICAgIDAsMSwwLDAsMCw3OSwwLDAsMCwxMTUsMTcsMCwwLDAsMTI0LDAsCi0gICAgMCwxMDYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxLDEwMCwwLDAsODMsNDEsCi0gICAgMSw3OCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDk4LDAsMCwwLDQxLDMsCi0gICAgMTE0LDcxLDAsMCwwLDExNCw4MCwwLDAsMCwyMTgsNiwxMDcsMTE5LDk3LDExNCwKLSAgICAxMDMsMTE1LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKLSAgICAwLDExNCw4MSwwLDAsMCwxMiwxLDAsMCwxMTUsMiwwLDAsMCwwLAotICAgIDEsMTIyLDI3LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw3Nyw5NywKLSAgICAxMTAsOTcsMTAzLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDc4LDQxLAotICAgIDYsMTE0LDU3LDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsNTgsMCwwLDAsCi0gICAgMTE0LDcyLDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsODEsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCi0gICAgMCwwLDAsMTE0LDEwMywwLDAsMCwyNTUsMCwwLDAsMTE1LDYsMCwwLAotICAgIDAsMTIsMiwxMiw0LDEyLDcsMTE0LDEwMywwLDAsMCw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMywwLDAsMCwxMSwwLDAsMCwzLDAsMCwKLSAgICAwLDExNSwxNDIsMCwwLDAsMTAwLDEsMCwxMjUsMSwwLDEyMSwxNywwLDExNiwKLSAgICAwLDAsMTM2LDAsMCwyNSwxMzEsMCwwLDEyNSwxLDAsODcsMTEwLDE4LDAsCi0gICAgNCwxMTYsMSwwLDEwNywxMCwwLDExNCw0MywwLDEsMSwxLDg5LDExMCwxLAotICAgIDAsODgsMTI0LDEsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDEzOCwwLDExNiwyLAotICAgIDAsMTAwLDEsMCwxMDcsOCwwLDExNCw4MywwLDExNiwzLDAsMTM2LDAsMCwKLSAgICAxMzEsMSwwLDEyNSwxLDAsMTEwLDEyLDAsMTE2LDQsMCwxMzYsMCwwLDEzMSwKLSAgICAxLDAsMTI1LDEsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDIsMCwxMDAsMywKLSAgICAwLDEzNCwwLDAsMTI1LDIsMCwxMTYsNSwwLDEwNiw2LDAsMTI0LDEsMCwKLSAgICAxMjQsMiwwLDEzMSwyLDAsMTE2LDAsMCwxMzYsMCwwLDYwLDExMCwwLDAsCi0gICAgMTI0LDEsMCw4Myw0MSw0LDEyMiwxMDksNzEsMTAxLDExNiwzMiwxMTEsMTE0LDMyLDk5LAotICAgIDExNCwxMDEsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAzMiwxMDgsMTExLDk5LDEwNywzMiwxMDIsMTExLDExNCwzMiw5NywzMiwxMDMsMTA1LDExOCwxMDEsCi0gICAgMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LDEwLDEwLAotICAgIDMyLDMyLDMyLDMyLDgzLDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTExLDExMCwxMDgsMTIxLDMyLAotICAgIDk4LDEwMSwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDMyLDExNiwKLSAgICA5NywxMDcsMTAxLDExMCw0Niw3OCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwKLSAgICAwLDAsMCwyLDAsMCwwLDE5LDAsMCwwLDExNSwxMSwwLDAsMCwKLSAgICAxMTYsMCwwLDEzNiwwLDAsNjEsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDEsCi0gICAgMjE4LDEzLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNSw0MSwKLSAgICAxLDExNCwzNiwwLDAsMCw0MSwxLDExNCw2NywwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNSwwLDAsMCwyMTgsMiw5OSw5OCwzMiwxLDAsMCwxMTUsCi0gICAgMiwwLDAsMCwwLDEsMTIyLDI4LDk1LDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSwKLSAgICA2Miw0Niw5OSw5OCw0MSw3LDExNCwxMDksMCwwLDAsMTE0LDc5LDAsMCwwLAotICAgIDExNCw4NSwwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCw4MywwLDAsMCwyMTgsCi0gICAgOCw5NSwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiw5MCwzLDExNCwxMDEsMTAyLDQxLDMsCi0gICAgMTE0LDY3LDAsMCwwLDExNCw4NiwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDQxLDEsMTE0LDY3LDAsMCwwLDExNCw1LDAsMCwwLAotICAgIDExNCwxMDUsMCwwLDAsMTgsMSwwLDAsMTE1LDI0LDAsMCwwLDAsNCwKLSAgICA2LDEsMywxLDE3LDEsMTMsMSw1LDEsMTIsMSwxMiwxLDE1LDIsCi0gICAgMTIsMSwxOCwyLDI1LDEsMTE0LDEwNSwwLDAsMCw5OSwxLDAsMCwwLAotICAgIDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsNzEsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDEsCi0gICAgMCwxMTYsMSwwLDEwNiwyLDAsMTMxLDAsMCwxLDEyMSwxNCwwLDEyNCwxLAotICAgIDAsMTA2LDMsMCwxMzEsMCwwLDEsODcsMTEwLDE4LDAsNCwxMTYsNCwwLAotICAgIDEwNywxMCwwLDExNCw1NiwwLDEsMSwxLDg5LDExMCwxMSwwLDg4LDEyNCwxLAotICAgIDAsMTA2LDUsMCwxMzEsMCwwLDEsMTAwLDEsMCw4Myw0MSwyLDk3LDIxLAotICAgIDEsMCwwLDgyLDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLAotICAgIDEwOCwxMTEsOTgsOTcsMTA4LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksCi0gICAgMTA3LDQ0LDMyLDk3LDExMCwxMDAsMzIsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsCi0gICAgMTE2LDEwNCwxMDEsMTEwLDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLAotICAgIDEwLDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LAotICAgIDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDEwMywxMDUsMTE4LDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsMTAsMzIsMzIsMzIsMzIsODQsMTA0LAotICAgIDEwNSwxMTUsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTEwLAotICAgIDExNSwxMTcsMTE0LDEwMSwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LAotICAgIDMyLDk5LDExMSwxMDksMTEyLDEwOCwxMDEsMTE2LDEwMSwxMDgsMTIxLDMyLDEwNSwxMTAsMTA1LDExNiwKLSAgICAxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCw0NCwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDEwLAotICAgIDMyLDMyLDMyLDMyLDEwMSwxMTgsMTAxLDExMCwxMTYsMzIsMTA1LDExNiwzMiwxMDUsMTE1LDMyLAotICAgIDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDMyLDk4LAotICAgIDEyMSwzMiw5NywxMTAsMTExLDExNiwxMDQsMTAxLDExNCwzMiwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgzLDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTExLDExMCwKLSAgICAxMDgsMTIxLDMyLDk4LDEwMSwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsCi0gICAgMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksCi0gICAgMTA3LDMyLDExNiw5NywxMDcsMTAxLDExMCw0Niw3OCw0MSw2LDExNCwxMDUsMCwwLDAsCi0gICAgMTE0LDEwNiwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCw5NywwLDAsMCwxMTQsCi0gICAgODIsMCwwLDAsMTE0LDk4LDAsMCwwLDQxLDIsMTE0LDY3LDAsMCwwLAotICAgIDExNCw4NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwyMTgsMTksOTUsMTA4LDExMSw5OSwxMDcsOTUsMTE3LDExMCwxMDgsMTExLAotICAgIDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzNywxLDAsMCwxMTUsMTQsMCwKLSAgICAwLDAsMCw3LDEyLDEsMTAsMSwzLDEsMTQsMSwxMywzLDUsMiwKLSAgICAxMTQsMTEyLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsCi0gICAgMCwwLDMsMCwwLDAsNzksMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwKLSAgICAwLDAsMTI0LDEsMCwxMjQsMiwwLDE0MiwwLDAsODMsNDEsMSw5Nyw0NiwKLSAgICAxLDAsMCwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICAxMDgsMTA1LDk4LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMDUsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiw0Niw5OSwzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTcsMTA4LDExOSw5NywKLSAgICAxMjEsMTE1LDMyLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDMyLDExNSwxMDEsMTEzLDExNywxMDEsMTEwLAotICAgIDk5LDEwMSwxMTUsMTAsMzIsMzIsMzIsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwxMDgsMTA1LDk4LDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywxMTYsCi0gICAgMzIsMTAxLDExMCwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDk3LDMyLDk5LDk3LDEwOCwxMDgsCi0gICAgMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsCi0gICAgMTEwLDEwLDEwLDMyLDMyLDMyLDMyLDg1LDExNSwxMDEsMzIsMTA1LDExNiwzMiwxMDUsMTEwLAotICAgIDExNSwxMTYsMTAxLDk3LDEwMCwzMiwxMTEsMTAyLDMyLDk3LDMyLDExMCwxMTEsMTE0LDEwOSw5NywKLSAgICAxMDgsMzIsOTksOTcsMTA4LDEwOCwzMiwxMDUsMTEwLDMyLDExMiwxMDgsOTcsOTksMTAxLDExNSwKLSAgICAzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsMTA1LDExMCwxMDMsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwxMCwzMiwKLSAgICAzMiwzMiwzMiwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLDEwNSwxMTAsMTE2LDExNCwxMTEsMTAwLAotICAgIDExNyw5OSwxMDEsMTE1LDMyLDExNywxMTAsMTE5LDk3LDExMCwxMTYsMTAxLDEwMCwzMiwxMTAsMTExLAotICAgIDEwNSwxMTUsMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTYsMTE0LDk3LAotICAgIDk5LDEwMSw5OCw5Nyw5OSwxMDcsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwxMTksMTA0LDEwMSwKLSAgICAxMTAsMzIsMTAxLDEyMCwxMDEsOTksMTE3LDExNiwxMDUsMTEwLDEwMywxMCwzMiwzMiwzMiwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0MSwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMTQsNCwwLDAsMCw0MSwzLDIxOCwxLDEwMiwxMTQsODAsMCwwLDAsCi0gICAgOTAsNCwxMDcsMTE5LDEwMCwxMTUsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDUsMCwwLDAsMjE4LDI1LDk1LDk5LDk3LDEwOCwxMDgsOTUsMTE5LDEwNSwxMTYsCi0gICAgMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMTAwLAotICAgIDU3LDEsMCwwLDExNSwyLDAsMCwwLDAsOCwxMTQsMTE0LDAsMCwwLAotICAgIDEwNSwyMzgsMTIsMCwwLDIzMywyLDAsMCwwLDExNCwxMywwLDAsMCwxMTUsCi0gICAgMiwwLDAsMCwxMywxMCw5MCwxMSw5NSw5NSwxMTIsMTIxLDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsOTUsOTUsMTIyLDMsNDYsMTEyLDEyMSwxMjIsNCw0NiwxMTIsMTIxLDk5LDEyMiw0LAotICAgIDQ2LDExMiwxMjEsMTExLDc4LDk5LDIsMCwwLDAsMCwwLDAsMCwxMSwwLAotICAgIDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwxOTIsMCwwLDAsMTI0LAotICAgIDEsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDI1LDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEwNiwyLDAsMTIsMTEwLDMsMCwxMjQsMSwwLDEyNSwyLDAsMTI0LDIsCi0gICAgMCwxMTQsNDYsMCwxMTYsMywwLDEyNSwzLDAsMTEwLDYsMCwxMTYsNCwwLAotICAgIDEyNSwzLDAsMTE2LDUsMCwxMjQsMCwwLDEzMSwxLDAsOTIsMiwwLDEyNSwKLSAgICA0LDAsMTI1LDUsMCwxMjQsNSwwLDEwNiw2LDAsMTAwLDIsMCwxMzEsMSwKLSAgICAwLDkyLDMsMCwxMjUsNiwwLDEyNSw3LDAsMTI1LDgsMCwxMTYsMCwwLAotICAgIDEwNiw3LDAsMTA2LDgsMCwxMjUsOSwwLDEyNCw5LDAsMTAwLDEsMCwxMDcsCi0gICAgOCwwLDExNCwxMzMsMCwxMTYsOSwwLDEwMCwzLDAsMTMxLDEsMCwxMzAsMSwKLSAgICAwLDExMCwwLDAsMTAwLDQsMCwxMDYsMTAsMCwxMjQsNiwwLDExNCwxNTEsMCwKLSAgICAxMjQsNiwwLDExMCwzLDAsMTI0LDgsMCwxMjQsNywwLDEyNCw5LDAsMTI0LAotICAgIDMsMCwxMDAsNSwwLDI1LDEwMyw0LDAsMTMxLDEsMCwxMjUsMTAsMCwxMTYsCi0gICAgMTEsMCwxMjQsNCwwLDExNiwxMiwwLDEyNCwxMCwwLDEzMSwzLDAsODMsNDEsCi0gICAgNiw5NywyNDQsMSwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LAotICAgIDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLAotICAgIDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiw0NiwxMTIsMTIxLDk5LDQ3LAotICAgIDQ2LDExMiwxMjEsMTExLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICA4NCwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLAotICAgIDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLAotICAgIDEwNSwxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwKLSAgICAzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwKLSAgICAxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiw0NiwxMTIsMTIxLAotICAgIDk5LDQ3LDQ2LDExMiwxMjEsMTExLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5OSw5NywxMDgsOTksCi0gICAgMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwzMiw5NywxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTksMTAxLDExNCwxMDEsMzIsMTA1LAotICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwMSwxMjAsCi0gICAgMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDEwLDMyLDMyLDMyLDMyLDExOSwxMDUsMTA4LDEwOCwKLSAgICAzMiw5OCwxMDEsMzIsNDYsMTEyLDEyMSw5OSwzMiwxMTcsMTEwLDEwOCwxMDEsMTE1LDExNSwzMiwKLSAgICAxMTUsMTIxLDExNSw0NiwxMDIsMTA4LDk3LDEwMywxMTUsNDYsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsCi0gICAgMTIyLDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTEwLDQ1LDEyMiwxMDEsMTE0LDExMSw0NCwzMiwKLSAgICAxMTYsMTA0LDEwMSwxMTAsMzIsMTA1LDExNiwzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTgsMTAxLDMyLAotICAgIDQ2LDExMiwxMjEsMTExLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMDAsMTAxLAotICAgIDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMDUsMTE1LDMyLAotICAgIDExMCwxMTEsMTE2LDMyLDc4LDExMSwxMTAsMTAxLDQ0LDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMDUsCi0gICAgMTE2LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsOTcsMzIsOTgsMTExLDExMSwxMDgsCi0gICAgMTAxLDk3LDExMCwzMiw5NywxMTAsMTAwLDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLAotICAgIDEwNSwxMTAsMTAsMzIsMzIsMzIsMzIsMTEyLDEwOCw5Nyw5OSwxMDEsMzIsMTExLDEwMiwzMiwKLSAgICAxMTUsMTIxLDExNSw0NiwxMDIsMTA4LDk3LDEwMywxMTUsNDYsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsCi0gICAgMTIyLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMTE1LDEyMSwxMTUsNDYsCi0gICAgMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LAotICAgIDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLAotICAgIDMyLDExNiwxMDQsMTAxLDExMCwzMiw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLAotICAgIDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LAotICAgIDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDIxOCwxLDQ2LDEyMiwzNiwKLSAgICAxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LAotICAgIDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsCi0gICAgNzgsMTExLDExMCwxMDEsMTE0LDMwLDAsMCwwLDExNCw4NCwwLDAsMCw0MSwxMywKLSAgICAxMTQsNywwLDAsMCwyMTgsNSwxMDIsMTA4LDk3LDEwMywxMTUsMjE4LDgsMTExLDExMiwKLSAgICAxMTYsMTA1LDEwOSwxMDUsMTIyLDEwMSwyMTgsMjMsNjgsNjksNjYsODUsNzEsOTUsNjYsODksCi0gICAgODQsNjksNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsMjE4LAotICAgIDI3LDc5LDgwLDg0LDczLDc3LDczLDkwLDY5LDY4LDk1LDY2LDg5LDg0LDY5LDY3LAotICAgIDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDExNCwzOCwwLDAsCi0gICAgMCwxMTQsMzIsMCwwLDAsMjE4LDE0LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsCi0gICAgMTE2LDk3LDExNiwxMDUsMTExLDExMCwyMTgsOSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywKLSAgICAxMDMsMjE4LDE5LDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsCi0gICAgMTAwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMjYsMCwwLDAsMTE0LDI4LDAsMCwwLAotICAgIDIxOCw4LDk1LDgwLDg5LDY3LDY1LDY3LDcyLDY5LDQxLDExLDExNCwzNSwwLDAsCi0gICAgMCw5MCwxNCwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLAotICAgIDEwMSwyMTgsNSwxMDAsMTAxLDk4LDExNywxMDMsMjE4LDgsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsCi0gICAgMTAxLDExNSwyMTgsNCwxMDQsMTAxLDk3LDEwMCwxMTQsMzcsMCwwLDAsMjE4LDQsOTgsCi0gICAgOTcsMTE1LDEwMSwyMTgsMywxMTUsMTAxLDExMiwyMTgsNCwxMTQsMTAxLDExNSwxMTYsOTAsMywKLSAgICAxMTYsOTcsMTAzLDIxOCw4LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTcsOTksOTcsCi0gICAgOTksMTA0LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxODEsCi0gICAgMSwwLDAsMTE1LDIyLDAsMCwwLDAsMTMsMzEsMSw2LDEsOSwyLAotICAgIDYsMSwxOCwxLDI0LDEsMTIsMSwxMiwxLDE1LDEsNDMsMSwxMTQsMTMyLAotICAgIDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLAotICAgIDUsMCwwLDAsNjcsMCwwLDAsMTE1LDE5MywwLDAsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTA2LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDMzLDAsMTE2LAotICAgIDMsMCwxMDAsMiwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDExNiw0LAotICAgIDAsMTI0LDAsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMSwwLDEyNSwyLDAsCi0gICAgMTE2LDQsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSwxLDAsMTI1LAotICAgIDMsMCwxMjQsMywwLDExNiw1LDAsMTA3LDMsMCwxMTQsMTA4LDAsMTE2LDYsCi0gICAgMCwxMDAsMywwLDEwNiw3LDAsMTE2LDUsMCwxMjQsMCwwLDEzMSwyLDAsCi0gICAgMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTI0LDIsMCwxMDYsOCwwLDEwMCwKLSAgICA0LDAsMTMxLDEsMCwxMDAsNSwwLDEwNywzLDAsMTE0LDE1MywwLDExNiw2LAotICAgIDAsMTAwLDYsMCwxMDYsNywwLDEyNCwyLDAsMTMxLDEsMCwxMzEsMSwwLAotICAgIDEzMCwxLDAsMTEwLDAsMCwxMjQsMiwwLDEwNiw5LDAsMTAwLDQsMCwxMzEsCi0gICAgMSwwLDEwMCw3LDAsMjUsMTI1LDQsMCwxMTYsMTAsMCwxMjQsMSwwLDEyNCwKLSAgICA0LDAsMTE2LDExLDAsMTAwLDcsMCwyNSwyMywxMzEsMiwwLDgzLDQxLDgsCi0gICAgOTcsMTIxLDEsMCwwLDcxLDEwNSwxMTgsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCi0gICAgOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDk3LDMyLDQ2LDExMiwxMjEsOTksNDYsNDcsNDYsCi0gICAgMTEyLDEyMSwxMTEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTA1LDExNiwxMTUsCi0gICAgMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgODQsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDk5LDQ3LDQ2LDExMiwxMjEsMTExLDMyLDEwMiwxMDUsCi0gICAgMTA4LDEwMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTEwLDEwMSwxMDEsMTAwLAotICAgIDMyLDExNiwxMTEsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiw1OSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsCi0gICAgMTE1LDEwNSwxMDksMTEyLDEwOCwxMjEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTksOTcsMTA4LDk5LAotICAgIDExNywxMDgsOTcsMTE2LDEwMSwxMDAsMzIsMTE2LDExMSwzMiw5OSwxMTEsMTE0LDExNCwxMDEsMTE1LAotICAgIDExMiwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsOTksCi0gICAgNDcsNDYsMTEyLDEyMSwxMTEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDMyLDMyLDczLDEwMiwzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMDAsMTExLDEwMSwxMTUsMTAsMzIsMzIsMzIsMzIsMTEwLDExMSwKLSAgICAxMTYsMzIsOTksMTExLDExMCwxMDIsMTExLDExNCwxMDksMzIsMTE2LDExMSwzMiw4MCw2OSw4MCwKLSAgICAzMiw1MSw0OSw1Miw1NSwzMiwxMDIsMTExLDExNCwxMDksOTcsMTE2LDQ0LDMyLDg2LDk3LAotICAgIDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTgsMTAxLAotICAgIDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMzIsNzMsMTAyLDEwLDMyLDMyLDMyLDMyLAotICAgIDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsCi0gICAgMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiwKLSAgICA3OCwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNzgsMTExLDExNiw3MywxMDksMTEyLAotICAgIDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsCi0gICAgMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMjIsCi0gICAgMzYsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LAotICAgIDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LAotICAgIDMyLDc4LDExMSwxMTAsMTAxLDEyMiwzNywxMjMsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDk4LDExMSwKLSAgICAxMTYsMTE2LDExMSwxMDksNDUsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMDAsMTA1LDExNCwxMDEsOTksCi0gICAgMTE2LDExMSwxMTQsMTIxLDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMTE0LDExNiwwLDAsCi0gICAgMCwxMTQsMTE1LDAsMCwwLDEyMiwyOCwxMDEsMTIwLDExMiwxMDEsOTksMTE2LDEwMSwxMDAsCi0gICAgMzIsMTExLDExMCwxMDgsMTIxLDMyLDUwLDMyLDEwMCwxMTEsMTE2LDExNSwzMiwxMDUsMTEwLDMyLAotICAgIDEyMywzMywxMTQsMTI1LDExNCw4NCwwLDAsMCw0MSwxMiwxMTQsNywwLDAsMCwKLSAgICAxMTQsMTIxLDAsMCwwLDExNCwxMjIsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsCi0gICAgMzgsMCwwLDAsMTE0LDEyNCwwLDAsMCwyMTgsMTAsODYsOTcsMTA4LDExNywxMDEsCi0gICAgNjksMTE0LDExNCwxMTEsMTE0LDExNCw0NywwLDAsMCwxMTQsODksMCwwLDAsMjE4LAotICAgIDksMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTQsMjgsMCwwLDAsMjE4LAotICAgIDE1LDgzLDc5LDg1LDgyLDY3LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLAotICAgIDQxLDUsMTE0LDM1LDAsMCwwLDExNCwxMjcsMCwwLDAsOTAsMTYsMTEyLDEyMSwKLSAgICA5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw5MCw3LAotICAgIDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5MCwxMyw5OCw5NywxMTUsMTAxLDk1LDEwMiwxMDUsCi0gICAgMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNSwwLDAsMCwyMTgsMTcsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDIsMTE0LAotICAgIDExMSwxMDksOTUsOTksOTcsOTksMTA0LDEwMSwyMDgsMSwwLDAsMTE1LDI0LDAsMCwKLSAgICAwLDAsOSwxOCwxLDE1LDEsMTgsMSwxOCwxLDEyLDEsOSwxLDE4LAotICAgIDEsMjEsMSw5LDEsMTUsMSwxOSwxLDExNCwxMzYsMCwwLDAsOTksMSwKLSAgICAwLDAsMCwwLDAsMCwwLDUsMCwwLDAsMTIsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDE2NCwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsCi0gICAgMCwxMDAsMSwwLDEwNywyLDAsMTE0LDIyLDAsMTAwLDIsMCw4MywxMjQsMCwKLSAgICAwLDEwNiwxLDAsMTAwLDMsMCwxMzEsMSwwLDkyLDMsMCwxMjUsMSwwLAotICAgIDEyNSwyLDAsMTI1LDMsMCwxMjQsMSwwLDEyLDExNSw4MSwwLDEyNCwzLDAsCi0gICAgMTA2LDIsMCwxMzEsMCwwLDEwMCw3LDAsMTAwLDgsMCwxMzMsMiwwLDI1LAotICAgIDEwMCw2LDAsMTA3LDMsMCwxMTQsODUsMCwxMjQsMCwwLDgzLDEyMSwxNiwwLAotICAgIDExNiwzLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSw0LDAsODcsMTEwLDQwLDAsCi0gICAgNCwxMTYsNCwwLDExNiw1LDAsMTAyLDIsMCwxMDcsMTAsMCwxMTQsMTQzLDAsCi0gICAgMSwxLDEsMTI0LDAsMCwxMDAsMiwwLDEwMCw5LDAsMTMzLDIsMCwyNSwKLSAgICAxMjUsNCwwLDg5LDExMCwxLDAsODgsMTE2LDYsMCwxMjQsNCwwLDEzMSwxLAotICAgIDAsMTE0LDE2MCwwLDEyNCw0LDAsODMsMTI0LDAsMCw4Myw0MSwxMCwxMjIsMTg4LAotICAgIDY3LDExMSwxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLDk3LDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLAotICAgIDk3LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsNDAsMTA1LAotICAgIDEwMiwzMiwxMTIsMTExLDExNSwxMTUsMTA1LDk4LDEwOCwxMDEsNDEsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLAotICAgIDEwMSwxMjAsMTA1LDExNSwxMTYsMTE1LDMyLDExMiwxMTcsMTE0LDEwMSwxMDgsMTIxLDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDk4LDk3LDk5LDEwNywxMTksOTcsMTE0LDEwMCwxMTUsNDUsOTksMTExLDEwOSwxMTIsCi0gICAgOTcsMTE2LDEwNSw5OCwxMDUsMTA4LDEwNSwxMTYsMTIxLDMyLDEwMiwxMTEsMTE0LDEwLDMyLDMyLAotICAgIDMyLDMyLDgwLDEyMSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDk1LDY5LDEyMCwxMDEsOTksNjcsCi0gICAgMTExLDEwMCwxMDEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4NywxMDUsMTE2LDEwNCw3MCwxMDUsMTA4LAotICAgIDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsNDAsNDEsMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICA2NywzMiw2NSw4MCw3Myw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsODQsMCwwLAotICAgIDAsNzgsMTE0LDExNiwwLDAsMCwyMzMsMywwLDAsMCwxMTQsMjksMCwwLAotICAgIDAsOTAsMiwxMTIsMTIxLDIzMywyNTMsMjU1LDI1NSwyNTUsMjMzLDI1NSwyNTUsMjU1LDI1NSwxMTQsCi0gICAgMTM5LDAsMCwwLDQxLDcsMTE0LDMxLDAsMCwwLDExNCwzMiwwLDAsMCwKLSAgICAyMTgsNSwxMDgsMTExLDExOSwxMDEsMTE0LDExNCwxMzYsMCwwLDAsMTE0LDEyMywwLDAsCi0gICAgMCwxMTQsMTMzLDAsMCwwLDExNCw0NCwwLDAsMCw0MSw1LDIxOCwxMyw5OCwKLSAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTMwLDAsMCwKLSAgICAwLDExNCwzNiwwLDAsMCw5MCw5LDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsCi0gICAgMTEwLDIxOCwxMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNSw5NSwKLSAgICAxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwMiwxMDUsMTA4LDEwMSwyMzEsMSwKLSAgICAwLDAsMTE1LDIwLDAsMCwwLDAsNywxOCwxLDQsMSwyNCwxLDM1LAotICAgIDEsNCwxLDMsMSwxNiwxLDE5LDEsMjEsMSwxMTQsMTQzLDAsMCwwLAotICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSw2MCwwLDAsMCwxMjEsMTksMCwxMTYsMCwwLAotICAgIDEyNCwwLDAsMTMxLDEsMCwxMDYsMSwwLDEyNSwxLDAsODcsMTEwLDI0LDAsCi0gICAgNCwxMTYsMiwwLDEwNywxMCwwLDExNCw0NSwwLDEsMSwxLDEwMCwxLDAsCi0gICAgMTI1LDEsMCw4OSwxMTAsMSwwLDg4LDEyNCwxLDAsMTAwLDIsMCw3OSwxMjUsCi0gICAgMSwwLDEyNCwxLDAsODMsNDEsMywxMjIsNTEsNjcsOTcsMTA4LDk5LDExNywxMDgsCi0gICAgOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMDEsMzIsMTEyLDEwMSwxMTQsCi0gICAgMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTEsMTEwLDExNSwzMiwxMDIsMTExLDExNCwzMiw5NywzMiw5OCwKLSAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTA1LDE4MiwxLAotICAgIDAsMCwyMzMsMTI4LDAsMCwwLDQxLDMsMTE0LDM5LDAsMCwwLDExNCw0MSwKLSAgICAwLDAsMCwxMTQsNDAsMCwwLDAsNDEsMiwxMTQsMzUsMCwwLDAsMTE0LAotICAgIDQyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDIxOCwxMCw5NSw5OSw5NywxMDgsOTksOTUsMTA5LDExMSwxMDAsMTAxLDI1MCwKLSAgICAxLDAsMCwxMTUsMTIsMCwwLDAsMCwyLDMsMSwxOSwxLDEzLDEsCi0gICAgMTEsMywxMCwxLDExNCwxNDUsMCwwLDAsMjE4LDksMTE4LDEwMSwxMTQsOTgsMTExLAotICAgIDExNSwxMDUsMTE2LDEyMSwxMTQsMjksMCwwLDAsOTksMSwwLDAsMCwxLDAsCi0gICAgMCwwLDMsMCwwLDAsNCwwLDAsMCw3MSwwLDAsMCwxMTUsODEsCi0gICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwNiwyLDAsMTI0LDEsMCwxMDcsCi0gICAgNSwwLDExNCw3NywwLDEyNCwwLDAsMTA2LDMsMCwxMDAsNiwwLDEzMSwxLAotICAgIDAsMTE1LDQ2LDAsMTAwLDMsMCwxMjQsMCwwLDIzLDEyNSwwLDAsMTEwLDAsCi0gICAgMCwxMTYsNCwwLDEyNCwwLDAsMTA2LDUsMCwxMjQsMiwwLDE0MCwwLDAsCi0gICAgMTAwLDQsMCwxMTYsMCwwLDEwNiw2LDAsMTMxLDEsMSwxLDExMCwwLDAsCi0gICAgMTAwLDUsMCw4Myw0MSw3LDEyMiw2MSw4MCwxMTQsMTA1LDExMCwxMTYsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMzIsMTE2LDExMSwzMiwxMTUsMTE2LDEwMCwKLSAgICAxMDEsMTE0LDExNCwzMiwxMDUsMTAyLDMyLDQ1LDExOCw0Nyw4MCw4OSw4NCw3Miw3OSw3OCwKLSAgICA4Niw2OSw4Miw2Niw3OSw4Myw2OSwzMiwxMDUsMTE1LDMyLDExNiwxMTcsMTE0LDExMCwxMDEsCi0gICAgMTAwLDMyLDExMSwxMTAsNDYsMjUwLDEsMzUsMjUwLDcsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMzIsMTIyLDIsMzUsMzIsMTE0LDU0LDAsMCwwLDc4LDQxLDIsMTE0LDE0NywwLAotICAgIDAsMCwxMTQsMTQ4LDAsMCwwLDQxLDcsMTE0LDcsMCwwLDAsMTE0LDExNywKLSAgICAwLDAsMCwyMTgsNywxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSwxMTQsOSwwLDAsCi0gICAgMCwyMTgsNSwxMTIsMTE0LDEwNSwxMTAsMTE2LDExNCw0NywwLDAsMCwyMTgsNiwxMTUsCi0gICAgMTE2LDEwMCwxMDEsMTE0LDExNCw0MSwzLDIxOCw3LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLAotICAgIDExNCwxNDYsMCwwLDAsMTE0LDgwLDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNiw5NSwxMTgsMTAxLDExNCw5OCwKLSAgICAxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSw2LDIsMCwwLDExNSwKLSAgICA4LDAsMCwwLDAsMiwxOCwxLDE1LDEsMTMsMSwxMTQsMTUzLDAsMCwKLSAgICAwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwKLSAgICAwLDAsMywwLDAsMCwxMTUsMzgsMCwwLDAsMTAwLDEsMCwxMzUsMCwKLSAgICAwLDEwMiwxLDAsMTAwLDIsMCwxMDAsMywwLDEzNCwxLDAsMTI1LDEsMCwKLSAgICAxMTYsMCwwLDEyNCwxLDAsMTM2LDAsMCwxMzEsMiwwLDEsMTI0LDEsMCwKLSAgICA4Myw0MSw0LDEyMiwyNTIsNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwxMTQsMzIsMTE2LAotICAgIDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTE0LAotICAgIDEwMSwxMTMsMTE3LDEwMSwxMTUsMTE2LDEwMSwxMDAsMzIsMTA5LDk3LDExNiw5OSwxMDQsMTAxLDExNSwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LDk3LDExMCwzMiwxMDQsOTcsMTEwLDEwMCwKLSAgICAxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTQsCi0gICAgMTE1LDExNiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsNDAsMTE1LDEwMSwxMDgsCi0gICAgMTAyLDQxLDMyLDEwOSwxMTcsMTE1LDExNiwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwzMiw5NSwKLSAgICAxMTAsOTcsMTA5LDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LAotICAgIDEwMSw5OSwxMTEsMTEwLDEwMCwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LAotICAgIDExNSwxMCwzMiwzMiwzMiwzMiw5OSwxMTEsMTA5LDExMiw5NywxMTQsMTAxLDEwMCwzMiw5NywKLSAgICAxMDMsOTcsMTA1LDExMCwxMTUsMTE2LDQ2LDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw5OSwKLSAgICAxMTEsMTA5LDExMiw5NywxMTQsMTA1LDExNSwxMTEsMTEwLDMyLDEwMiw5NywxMDUsMTA4LDExNSwzMiwKLSAgICAxMTYsMTA0LDEwMSwxMTAsMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsCi0gICAgMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDc4LDk5LDIsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDUsCi0gICAgMCwwLDAsMzEsMCwwLDAsMTE1LDgzLDAsMCwwLDEyNCwxLDAsMTAwLAotICAgIDAsMCwxMDcsOCwwLDExNCwyNCwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMSwKLSAgICAwLDExMCw0MCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEwNywzLDAsCi0gICAgMTE0LDY0LDAsMTE2LDEsMCwxMDAsMSwwLDEyNCwxLDAsMjIsMTAwLDIsMCwKLSAgICAxMjQsMSwwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMCwwLDEzNiwwLDAsMTI0LAotICAgIDAsMCwxMjQsMSwwLDEyNCwyLDAsMTI0LDMsMCwxNDIsMiwwLDgzLDQxLAotICAgIDMsNzgsMTIyLDIzLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTksOTcsMTEwLDExMCwxMTEsCi0gICAgMTE2LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsMzcsMTE1LDExNCw2NywwLDAsMCwKLSAgICA0MSwyLDExNCw2NywwLDAsMCwyMTgsMTEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwKLSAgICAxMTQsMTE0LDExMSwxMTQsNDEsNCwxMTQsNzEsMCwwLDAsMTE0LDY3LDAsMCwwLAotICAgIDExNCw4MCwwLDAsMCwxMTQsMTA4LDAsMCwwLDQxLDEsMjE4LDYsMTA5LDEwMSwKLSAgICAxMTYsMTA0LDExMSwxMDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE5LAotICAgIDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwxMTQsOTcsMTEyLAotICAgIDExMiwxMDEsMTE0LDIyLDIsMCwwLDExNSwxMCwwLDAsMCwwLDEsMTIsMSwKLSAgICAxMiwxLDE1LDEsMjUsMSwxMjIsNDAsOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLAotICAgIDk3LDEwOSwxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDk5LDEwNCwKLSAgICAxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LAotICAgIDQxLDEsMTE0LDY1LDAsMCwwLDQxLDIsMTE0LDE1NSwwLDAsMCwxMTQsMTU2LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LDE1NSwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwyMTgsMTEsOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwKLSAgICAxMDEsMTQsMiwwLDAsMTE1LDYsMCwwLDAsMCw4LDIxLDYsMTMsMSwKLSAgICAxMTQsMTU3LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCi0gICAgMCwwLDMsMCwwLDAsMywwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LAotICAgIDAsMCwxMDIsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLAotICAgIDAsMTE2LDAsMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLAotICAgIDAsODMsNDEsMywxMjIsNDksNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwxMTQsMzIsCi0gICAgMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsCi0gICAgMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OCwxMTcsCi0gICAgMTA1LDEwOCwxMTYsNDUsMTA1LDExMCw0Niw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCw0LDAsMCwwLDE5LDAsMCwwLDExNSw1OCwwLDAsCi0gICAgMCwxMjQsMSwwLDExNiwwLDAsMTA2LDEsMCwxMDcsNywwLDExNCw0NSwwLAorICAgIDExNiwzMiwxMjMsMTI1LDQxLDMsMjE4LDYsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTQsMTUsCisgICAgMCwwLDAsMjE4LDIsMTA1LDEwMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOCw5NSwKKyAgICA5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsMTMyLDAsMCwwLDExNSwyLDAsMCwwLAorICAgIDAsMSwxMjIsMjAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LAorICAgIDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw3OCw0MSw5LDExNCwxLDAsMCwwLAorICAgIDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsMCwwLDExNCwKKyAgICAyMCwwLDAsMCwxMTQsNDQsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCw0NywKKyAgICAwLDAsMCwxMTQsNTIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwzMiwwLDAsCisgICAgMCw2OCwwLDAsMCwxMTUsMTIsMCwwLDAsMTIsNCw2LDIsMTIsOCwKKyAgICAxMiwxMiwxMiwyNSwxMiwxMywxMTQsMzIsMCwwLDAsOTksMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwKKyAgICAxMTUsNzAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLAorICAgIDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsCisgICAgOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsCisgICAgNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsOSwKKyAgICAwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDgzLDQxLDExLDIxOCwxNiw5NSwKKyAgICA2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDEyMiwKKyAgICA4Niw2NSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEwMSwzMiw5NSw3NywxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDc2LDExMSw5OSwxMDcsMzIsMTAxLDExMywxMTcsMTA1LDExOCw5NywxMDgsMTAxLDExMCwxMTYsCisgICAgMzIsMTAyLDExMSwxMTQsMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMDAsMTE1LDMyLDExOSwxMDUsMTE2LDEwNCwxMTEsMTE3LDExNiwxMCwzMiwzMiwzMiwzMiwxMDksCisgICAgMTE3LDEwOCwxMTYsMTA1LDQ1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LAorICAgIDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwKKyAgICAyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwKKyAgICAwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDEsMCwxMjQsMCwwLAorICAgIDk1LDEsMCwxMDAsMCwwLDgzLDQxLDIsNzgsMTE0LDMzLDAsMCwwLDQxLAorICAgIDIsMTE0LDE1LDAsMCwwLDExNCwzOCwwLDAsMCw0MSwyLDExNCwxOSwwLAorICAgIDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMTE0LDIwLDAsMCwwLDE0MCwwLDAsMCwxMTUsCisgICAgNCwwLDAsMCwwLDEsOSwxLDEyMiwyNSw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsCisgICAgNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LAorICAgIDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKKyAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSwxOSwwLDAsMCwxMjQsMCwwLAorICAgIDQsMTA2LDAsMCwxMDAsMSwwLDU1LDIsOTUsMCwwLDEwMCwyLDAsODMsCisgICAgNDEsMyw3OCwxMTQsNDUsMCwwLDAsODQsNDEsMSwxMTQsMzgsMCwwLDAsCisgICAgNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMTE0LDQ2LDAsMCwwLDE0NCwwLDAsMCwxMTUsCisgICAgNCwwLDAsMCwwLDEsMTUsMSwxMjIsMjQsOTUsNjgsMTE3LDEwOSwxMDksMTIxLAorICAgIDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5Nyw5OSwxMTMsMTE3LDEwNSwKKyAgICAxMTQsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDQ2LDAsMCwwLDEyNCwwLDAsMTA2LAorICAgIDAsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDI3LDAsMTE2LDEsMCwxMDAsMiwKKyAgICAwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMCwwLDQsMTA2LDAsMCwxMDAsMywKKyAgICAwLDU2LDIsOTUsMCwwLDEwMCwwLDAsODMsNDEsNCw3OCwxMTQsMzMsMCwKKyAgICAwLDAsMTIyLDMxLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsCisgICAgMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDEwOCwKKyAgICAxMTEsOTksMTA3LDExNCw0NSwwLDAsMCw0MSwyLDExNCwzOCwwLDAsMCwxMTQsCisgICAgNDgsMCwwLDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDQ3LDAsMCwwLDE0OCwKKyAgICAwLDAsMCwxMTUsNiwwLDAsMCwwLDEsMTUsMSwxMiwxLDEyMiwyNCwKKyAgICA5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAorICAgIDQ2LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDI1LDAsCisgICAgMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTE2LDIsCisgICAgMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDIsMCw4Myw0MSwyLDc4LDEyMiwyOCwKKyAgICA5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAorICAgIDQwLDEyMywzMywxMTQsMTI1LDQxLDMyLDk3LDExNiwzMiwxMjMsMTI1LDQxLDMsMTE0LDUwLAorICAgIDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsNTEsMCwwLDAsNDEsMSwxMTQsCisgICAgMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMTE0LDUyLDAsMCwwLDE1MywwLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDEsMTIyLDI1LDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDc4LDQxLAorICAgIDgsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsCisgICAgMTE0LDMsMCwwLDAsMTE0LDIwLDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsCisgICAgNDcsMCwwLDAsMTE0LDUyLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNTMsMCwKKyAgICAwLDAsMTM2LDAsMCwwLDExNSwxMCwwLDAsMCwxMiwyLDYsMiwxMiwKKyAgICA0LDEyLDQsMTIsNSwxMTQsNTMsMCwwLDAsOTksMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsCisgICAgNTIsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCisgICAgMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMCwzLDAsMTAwLAorICAgIDQsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNSwwLDEwMCw2LDAsMTMyLDAsCisgICAgMCw5MCw1LDAsMTAwLDcsMCw4Myw0MSw4LDIxOCwxOCw5NSw3NywxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE0LDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDIyLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLAorICAgIDAsMTAwLDAsMCwxMjQsMCwwLDk1LDEsMCwxMDAsMCwwLDgzLDQxLDEsCisgICAgNzgsNDEsMiwxMTQsMTgsMCwwLDAsMjE4LDUsOTUsMTA4LDExMSw5OSwxMDcsNDEsCisgICAgMiwxMTQsMTksMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCwxNTksCisgICAgMCwwLDAsMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjcsOTUsNzcsCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCwKKyAgICA0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDEsMCwwLDAsMTAsMCwwLDAsNjcsMCwwLDAsMTE1LDUzLAorICAgIDAsMCwwLDEyMiwyMiwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwKKyAgICAxLDAsMTI0LDAsMCw5NSwyLDAsODcsMTAwLDAsMCwxMTYsMywwLDEwNiwKKyAgICA0LDAsMTMxLDAsMCwxLDg4LDEyNCwwLDAsMTA2LDIsMCwxMDYsNSwwLAorICAgIDEzMSwwLDAsMSwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsNiwyMTgsMTYsOTUsCisgICAgMTAzLDEwMSwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE0LAorICAgIDE4LDAsMCwwLDExNCw1NSwwLDAsMCwyMTgsNCw5NSwxMDUsMTA5LDExMiwyMTgsCisgICAgMTIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE0LDQ2LDAsCisgICAgMCwwLDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMywwLDAsMCwxNjMsMCwwLAorICAgIDAsMTE1LDgsMCwwLDAsMCwxLDMsMSwyMiwyLDExLDEsMTIyLDI4LAorICAgIDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLAorICAgIDEwMSwxMTQsNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMywwLDAsMCwxLDAsMCwwLDc5LDAsMCwKKyAgICAwLDExNSwxNywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsMCwxMzEsCisgICAgMCwwLDEsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDIsMTE0LDU1LDAsMCwKKyAgICAwLDExNCw0NywwLDAsMCw0MSwzLDExNCwxOSwwLDAsMCwxMTQsMjksMCwKKyAgICAwLDAsOTAsNiwxMDcsMTE5LDk3LDExNCwxMDMsMTE1LDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwzMCwwLDAsMCwxNzAsMCwKKyAgICAwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNyw5NSw3NywxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDc2LDExMSw5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE0LDQ2LDk1LDk1LAorICAgIDEwMSwxMjAsMTA1LDExNiw5NSw5NSw3OCw0MSw2LDExNCwxLDAsMCwwLDExNCwwLAorICAgIDAsMCwwLDExNCwyLDAsMCwwLDExNCwyMCwwLDAsMCwxMTQsMjMsMCwKKyAgICAwLDAsMTE0LDMwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNTQsMCwwLDAsCisgICAgMTU3LDAsMCwwLDExNSw2LDAsMCwwLDEyLDIsMTIsNCwxMiw3LDExNCwKKyAgICA1NCwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsCisgICAgMCwxMSwwLDAsMCwzLDAsMCwwLDExNSwxMzksMCwwLDAsMTAwLDEsCisgICAgMCwxMjUsMSwwLDEyMSwxNywwLDExNiwwLDAsMTM2LDAsMCwyNSwxMzEsMCwKKyAgICAwLDEyNSwxLDAsODcsMTEwLDE4LDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCwKKyAgICA0MywwLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDEsMCwxMDAsMSwwLAorICAgIDEwNyw4LDAsMTE0LDEzNSwwLDExNiwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwKKyAgICA4MywwLDExNiwzLDAsMTM2LDAsMCwxMzEsMSwwLDEyNSwxLDAsMTEwLDEyLAorICAgIDAsMTE2LDQsMCwxMzYsMCwwLDEzMSwxLDAsMTI1LDEsMCwxMzUsMCwwLAorICAgIDEwMiwxLDAsMTAwLDIsMCwxMDAsMywwLDEzNCwwLDAsMTI1LDIsMCwxMTYsCisgICAgNSwwLDEwNiw2LDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTE2LDAsCisgICAgMCwxMzYsMCwwLDYwLDEyNCwxLDAsODMsNDEsNCwxMjIsMTA5LDcxLDEwMSwxMTYsCisgICAgMzIsMTExLDExNCwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTAyLDExMSwxMTQsMzIsOTcsCisgICAgMzIsMTAzLDEwNSwxMTgsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsCisgICAgMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MywxMDQsMTExLDExNywxMDgsMTAwLDMyLAorICAgIDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExOSwKKyAgICAxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsCisgICAgMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LDEwMSwxMTAsNDYsNzgsOTksMSwwLDAsMCwKKyAgICAwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCwxOSwwLDAsMCwKKyAgICAxMTUsMTEsMCwwLDAsMTE2LDAsMCwxMzYsMCwwLDYxLDEwMCwwLDAsODMsCisgICAgNDEsMSw3OCw0MSwxLDIxOCwxMyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsCisgICAgMTExLDk5LDEwNywxMTUsNDEsMSwyMTgsMSw5NSw0MSwxLDExNCwxNSwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyLDk5LDk4LDE5MCwwLAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI4LDk1LDEwMywxMDEsMTE2LDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDQ2LDYwLDEwOCwxMTEsOTksCisgICAgOTcsMTA4LDExNSw2Miw0Niw5OSw5OCw0MSw3LDExNCw1OSwwLDAsMCwxMTQsMjgsCisgICAgMCwwLDAsMTE0LDM0LDAsMCwwLDExNCw1MywwLDAsMCwxMTQsMzIsMCwKKyAgICAwLDAsMjE4LDgsOTUsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTAsMywxMTQsMTAxLAorICAgIDEwMiw0MSwzLDExNCwxNSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDYxLDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCw0MSwxLDExNCwxNSwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMTE0LDU2LDAsMCwwLDE3NiwwLDAsMCwxMTUsMjQsMCwwLAorICAgIDAsMCw0LDYsMSwzLDEsMTcsMSwxMywxLDUsMSwxMiwxLDEyLAorICAgIDEsMTUsMiwxMiwxLDE4LDIsMjIsMSwxMTQsNTYsMCwwLDAsOTksMSwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDcxLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwKKyAgICAwLDEyNSwxLDAsMTE2LDEsMCwxMDYsMiwwLDEzMSwwLDAsMSwxMjEsMTQsCisgICAgMCwxMjQsMSwwLDEwNiwzLDAsMTMxLDAsMCwxLDg3LDExMCwxOCwwLDQsCisgICAgMTE2LDQsMCwxMDcsMTAsMCwxMTQsNTYsMCwxLDEsMSw4OSwxMTAsMTEsMCwKKyAgICA4OCwxMjQsMSwwLDEwNiw1LDAsMTMxLDAsMCwxLDEwMCwxLDAsODMsNDEsCisgICAgMiw5NywyMSwxLDAsMCw4MiwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKKyAgICAxMDgsMTExLDk5LDEwNyw0NCwzMiw5NywxMTAsMTAwLDMyLDk3LDk5LDExMywxMTcsMTA1LDExNCwKKyAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwKKyAgICAxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsCisgICAgMTExLDk5LDEwNywzMiwxMDIsMTExLDExNCwzMiw5NywzMiwxMDMsMTA1LDExOCwxMDEsMTEwLDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LDEwLDMyLDMyLDMyLAorICAgIDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsCisgICAgMzIsMTAxLDExMCwxMTUsMTE3LDExNCwxMDEsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsMTA1LDExNSwzMiw5OSwxMTEsMTA5LDExMiwxMDgsMTAxLDExNiwxMDEsMTA4LDEyMSwzMiwxMDUsCisgICAgMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsNDQsMzIsMTA1LDExMCwzMiwxMTYsCisgICAgMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDEsMTE4LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTYsMzIsCisgICAgMTA1LDExNSwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDEwMCwzMiw5OCwxMjEsMzIsOTcsMTEwLDExMSwxMTYsMTA0LDEwMSwxMTQsMzIsMTE2LDEwNCwxMTQsCisgICAgMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MywxMDQsMTExLDExNywxMDgsMTAwLAorICAgIDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLAorICAgIDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKKyAgICAxMDgsMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LDEwMSwxMTAsNDYsNzgsNDEsNiwxMTQsNTYsCisgICAgMCwwLDAsMTE0LDU3LDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNDYsMCwKKyAgICAwLDAsMTE0LDMxLDAsMCwwLDExNCw0NywwLDAsMCw0MSwyLDExNCwxNSwKKyAgICAwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE5LDk1LDEwOCwxMTEsOTksMTA3LDk1LDExNywKKyAgICAxMTAsMTA4LDExMSw5OSwxMDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTk1LDAsMCwwLAorICAgIDExNSwxNCwwLDAsMCwwLDcsMTIsMSwxMCwxLDMsMSwxNCwxLDEzLAorICAgIDMsNSwyLDExNCw2MywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMywwLDAsMCwzLDAsMCwwLDc5LDAsMCwwLDExNSwxMywwLAorICAgIDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxNDIsMCwwLDgzLDQxLAorICAgIDEsOTcsNDYsMSwwLDAsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsOTUsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLDEwNSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsOTksMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk3LAorICAgIDEwOCwxMTksOTcsMTIxLDExNSwzMiwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwzMiwxMTUsMTAxLDExMywKKyAgICAxMTcsMTAxLDExMCw5OSwxMDEsMTE1LDEwLDMyLDMyLDMyLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLDExNiwKKyAgICAxMDQsOTcsMTE2LDMyLDEwMSwxMTAsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiw5NywzMiw5OSwKKyAgICA5NywxMDgsMTA4LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LAorICAgIDExNiwxMDUsMTExLDExMCwxMCwxMCwzMiwzMiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwNSwxMTYsCisgICAgMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsMzIsMTExLDEwMiwzMiw5NywzMiwxMTAsMTExLAorICAgIDExNCwxMDksOTcsMTA4LDMyLDk5LDk3LDEwOCwxMDgsMzIsMTA1LDExMCwzMiwxMTIsMTA4LDk3LAorICAgIDk5LDEwMSwxMTUsMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTEwLDk5LDEwOCwxMTcsMTAwLAorICAgIDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsMTAsMzIsMzIsMzIsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMDUsMTEwLDExNiwKKyAgICAxMTQsMTExLDEwMCwxMTcsOTksMTAxLDExNSwzMiwxMTcsMTEwLDExOSw5NywxMTAsMTE2LDEwMSwxMDAsCisgICAgMzIsMTEwLDExMSwxMDUsMTE1LDEwMSwzMiwxMDUsMTEwLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTE2LDExNCw5Nyw5OSwxMDEsOTgsOTcsOTksMTA3LDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsCisgICAgMTE5LDEwNCwxMDEsMTEwLDMyLDEwMSwxMjAsMTAxLDk5LDExNywxMTYsMTA1LDExMCwxMDMsMTAsMzIsCisgICAgMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDEsMTAsCisgICAgMzIsMzIsMzIsMzIsMTE0LDEwLDAsMCwwLDQxLDMsMjE4LDEsMTAyLDExNCwyOSwKKyAgICAwLDAsMCw5MCw0LDEwNywxMTksMTAwLDExNSwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMjUsOTUsOTksOTcsMTA4LDEwOCw5NSwKKyAgICAxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsCisgICAgMTE4LDEwMSwxMDAsMjE0LDAsMCwwLDExNSwyLDAsMCwwLDAsOCwxMTQsNjUsCisgICAgMCwwLDAsMjE4LDksMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDUsMTE2LDEyMSwxMTQsNDUsCisgICAgMCwwLDAsOTksMSwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsCisgICAgNCwwLDAsMCw3MSwwLDAsMCwxMTUsNzUsMCwwLDAsMTE2LDAsMCwKKyAgICAxMDYsMSwwLDEwNiwyLDAsMTI0LDEsMCwxMDcsNSwwLDExNCw3MSwwLDEyNCwKKyAgICAwLDAsMTA2LDMsMCwxMDAsNiwwLDEzMSwxLDAsMTE1LDQzLDAsMTAwLDMsCisgICAgMCwxMjQsMCwwLDIzLDEyNSwwLDAsMTE2LDQsMCwxMjQsMCwwLDEwNiw1LAorICAgIDAsMTI0LDIsMCwxNDAsMCwwLDEwMCw0LDAsMTE2LDAsMCwxMDYsNiwwLAorICAgIDEzMSwxLDEsMSwxMDAsNSwwLDgzLDQxLDcsMTIyLDYxLDgwLDExNCwxMDUsMTEwLAorICAgIDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwzMiwxMTYsMTExLAorICAgIDMyLDExNSwxMTYsMTAwLDEwMSwxMTQsMTE0LDMyLDEwNSwxMDIsMzIsNDUsMTE4LDQ3LDgwLDg5LAorICAgIDg0LDcyLDc5LDc4LDg2LDY5LDgyLDY2LDc5LDgzLDY5LDMyLDEwNSwxMTUsMzIsMTE2LAorICAgIDExNywxMTQsMTEwLDEwMSwxMDAsMzIsMTExLDExMCw0NiwyNTAsMSwzNSwyNTAsNywxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwzMiwxMjIsMiwzNSwzMiw5MCw0LDEwMiwxMDUsMTA4LDEwMSw3OCwKKyAgICA0MSwyLDExNCw2NywwLDAsMCwxMTQsNjgsMCwwLDAsNDEsNywxMTQsMTQsCisgICAgMCwwLDAsMjE4LDUsMTAyLDEwOCw5NywxMDMsMTE1LDIxOCw3LDExOCwxMDEsMTE0LDk4LAorICAgIDExMSwxMTUsMTAxLDIxOCwxMCwxMTUsMTE2LDk3LDExNCwxMTYsMTE1LDExOSwxMDUsMTE2LDEwNCwyMTgsCisgICAgNSwxMTIsMTE0LDEwNSwxMTAsMTE2LDExNCw1MCwwLDAsMCwyMTgsNiwxMTUsMTE2LDEwMCwKKyAgICAxMDEsMTE0LDExNCw0MSwzLDIxOCw3LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNCw2NiwKKyAgICAwLDAsMCwxMTQsMjksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsCisgICAgMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDIyNSwwLDAsMCwxMTUsOCwwLAorICAgIDAsMCwwLDIsMTgsMSwxNSwxLDEwLDEsMTE0LDc1LDAsMCwwLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsCisgICAgMywwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwKKyAgICAxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwKKyAgICAwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDEsMywxMjIsNDksCisgICAgNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwKKyAgICAxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwKKyAgICA0Niw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsCisgICAgMCwwLDE5LDAsMCwwLDExNSw1NSwwLDAsMCwxMjQsMSwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMDcsNywwLDExNCw0MiwwLDExNiwyLDAsMTAwLDEsMCwKKyAgICAxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwxMDAsMiwwLDEyNCwxLDAsMTMxLAorICAgIDEsMSwxMzAsMSwwLDEzNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLAorICAgIDAsODMsNDEsMyw3OCwxMjIsMjksMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsCisgICAgMTExLDExNiwzMiw5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTQsMTUsMCwwLDAsNDEsNCwxMTQsMTQsMCwwLDAsCisgICAgMjE4LDIwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDExMCw5NywxMDksMTAxLDExNSwyMTgsMTEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsCisgICAgMTE0LDExMSwxMTQsMTE0LDUwLDAsMCwwLDQxLDIsMTE0LDE5LDAsMCwwLDIxOCwKKyAgICA4LDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MSwxLDIxOCwzLDEwMiwxMjAsMTEwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDExNCwxMDEsMTEzLAorICAgIDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCwKKyAgICA5NywxMTIsMTEyLDEwMSwxMTQsMjM1LDAsMCwwLDExNSw4LDAsMCwwLDAsMSwKKyAgICAxNSwxLDE4LDEsOSwxLDEyMiw1Miw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsCisgICAgMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LAorICAgIDExNSw2Miw0Niw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsCisgICAgMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQxLDEsMTE0LDEyLAorICAgIDAsMCwwLDQxLDIsMTE0LDc5LDAsMCwwLDExNCw4MCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsNDEsMSwxMTQsNzksMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCwxNyw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LAorICAgIDExNiwxMDUsMTEwLDIzMywwLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTgsNSwKKyAgICAxMywxLDExNCw4MSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsCisgICAgMiwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsMCwKKyAgICAwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwKKyAgICAxMjUsMSwwLDExNiwwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwKKyAgICAxMjQsMSwwLDgzLDQxLDMsMTIyLDQ3LDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsCisgICAgMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsNDYsOTksMiwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsNTUsMCwwLAorICAgIDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMTUsNDIsMCwKICAgICAxMTYsMiwwLDEwMCwxLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsMTAwLAotICAgIDIsMCwxMjQsMSwwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMCwwLDEzNiwwLAotICAgIDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMyw3OCwxMjIsMjksCi0gICAgMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiw5OCwxMTcsCi0gICAgMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsNjcsMCwKLSAgICAwLDAsNDEsNCwxMTQsNywwLDAsMCwyMTgsMjAsOTgsMTE3LDEwNSwxMDgsMTE2LAotICAgIDEwNSwxMTAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDExNCwKLSAgICAxNTQsMCwwLDAsMTE0LDQ3LDAsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLAotICAgIDIxOCw4LDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MSwxLDIxOCwzLDEwMiwxMjAsCi0gICAgMTEwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwyNSw5NSwxMTQsMTAxLAotICAgIDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExOSwKLSAgICAxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDM0LDIsMCwwLDExNSw4LDAsMCwwLDAsCi0gICAgMSwxNSwxLDE4LDEsMTIsMSwxMjIsNTIsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsCi0gICAgMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LAotICAgIDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsCi0gICAgMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MSwxLDExNCwKLSAgICA2NSwwLDAsMCw0MSwyLDExNCwxNjAsMCwwLDAsMTE0LDE2MSwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCw0MSwxLDExNCwxNjAsMCwwLDAsMTE0LDUsMCwwLAotICAgIDAsMjE4LDE3LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwKLSAgICAxMDgsMTE2LDEwNSwxMTAsMzIsMiwwLDAsMTE1LDYsMCwwLDAsMCwyLDE4LAotICAgIDUsMTMsMSwxMTQsMTYyLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDMsMCwwLDAsMywwLDAsMCwxMTUsMzUsMCwKLSAgICAwLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwKLSAgICAwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwKLSAgICAxLDEyNCwxLDAsODMsNDEsMywxMjIsNDcsNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LAotICAgIDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwKLSAgICAzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw0Niw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCw0LDAsMCwwLDE5LDAsMCwwLDExNSw1OCwwLAotICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNSw0NSwKLSAgICAwLDExNiwyLDAsMTAwLDEsMCwxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwKLSAgICAxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsMTM2LAotICAgIDAsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsMCw4Myw0MSwzLDc4LDEyMiwKLSAgICAyNywxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMiwKLSAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCw2NywwLDAsCi0gICAgMCw0MSw0LDExNCwxMDYsMCwwLDAsMjE4LDksMTA1LDExNSw5NSwxMDIsMTE0LDExMSwKLSAgICAxMjIsMTAxLDExMCwxMTQsMTU0LDAsMCwwLDExNCw0NywwLDAsMCw0MSwyLDExNCwKLSAgICA3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDQxLDEsMTE0LDE2MCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMjQsOTUsMTE0LDEwMSwxMTMsCi0gICAgMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTksMTE0LDk3LAotICAgIDExMiwxMTIsMTAxLDExNCw0NSwyLDAsMCwxMTUsOCwwLDAsMCwwLDEsMTUsCi0gICAgMSwxOCwxLDEyLDEsMTIyLDUwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsCi0gICAgOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAotICAgIDQ2LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwKLSAgICAxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDEsMSwxMTQsNjUsMCwwLDAsCi0gICAgNDEsMiwxMTQsMTYwLDAsMCwwLDExNCwxNjQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsNDEsMSwxMTQsMTYwLDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNiw5NSwKLSAgICAxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDQzLAotICAgIDIsMCwwLDExNSw2LDAsMCwwLDAsMiwxOCw1LDEzLDEsMTE0LDE2NSwKLSAgICAwLDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwKLSAgICA0LDAsMCwwLDY3LDAsMCwwLDExNSw4NywwLDAsMCwxMjQsMCwwLAotICAgIDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMiwwLDEyNSwKLSAgICAzLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDgzLDAsMTE2LDEsCi0gICAgMCwxMjQsMywwLDEzMSwxLDAsMTE0LDgzLDAsMTAwLDIsMCwxMjUsNCwwLAotICAgIDExNiwyLDAsMTA2LDMsMCwxMjQsNCwwLDEwNiw0LDAsMTI0LDMsMCwxMDAsCi0gICAgMywwLDI1LDEzMSwxLDAsMTE2LDUsMCwxMzEsMiwwLDEsMTEwLDAsMCwKLSAgICAxMjQsMiwwLDgzLDQxLDQsMTIyLDE1NSw4NCwxMTQsMTIxLDMyLDExNiwxMTEsMzIsMTAyLAotICAgIDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCwxMjEsMzIsMTAwLDEwMSwxMDgsMTAxLDEwMyw5NywxMTYsCi0gICAgMTA1LDExMCwxMDMsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDEwOCwxMDIsNDYsCi0gICAgMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsNDYsMTAsMTAsCi0gICAgMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsCi0gICAgMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDMyLDEwNSwxMTAsCi0gICAgMzIsMTAyLDk3LDExOCwxMTEsMTE0LDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsCi0gICAgNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDc4LDEyMiw0NCw3OCwxMTEsMTE2LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwNSwxMTAsMTAzLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTIzLDEyNSwKLSAgICA1OCwzMiwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsOTUsOTUsMTA1LDExMCwxMDUsMTE2LAotICAgIDk1LDk1LDExNCw4NCwwLDAsMCw0MSw2LDIxOCwxMSwxMDIsMTA1LDExMCwxMDAsOTUsCi0gICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTQsMzEsMCwwLDAsMjE4LDksOTUsMTE5LDk3LAotICAgIDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LDIxOCw0LDExOSw5NywxMTQsMTEwLDExNCw0NywwLDAsCi0gICAgMCwyMTgsMTMsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLAotICAgIDQxLDUsMTE0LDcxLDAsMCwwLDExNCwxNTksMCwwLDAsMjE4LDYsMTA4LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCwyMTgsOCwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDIxOCwzLAotICAgIDEwOSwxMTUsMTAzLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDIxOCwxNyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgOTUsMTE1LDEwNCwxMDUsMTA5LDU0LDIsMCwwLDExNSwxMCwwLDAsMCwwLDEwLAotICAgIDIxLDEsMjQsMSw2LDEsMzIsMSwxMTQsMTczLDAsMCwwLDk5LDIsMCwKLSAgICAwLDAsMCwwLDAsMCw1LDAsMCwwLDMsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDkzLDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMjQsMCwwLAotICAgIDEzMSwyLDAsMTI1LDIsMCwxMTYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsCi0gICAgMywwLDEyNCwxLDAsMTE2LDIsMCwxMDYsMywwLDEwNyw2LDAsMTE0LDc5LAotICAgIDAsMTE2LDIsMCwxMDYsMywwLDEyNCwxLDAsMjUsMTI1LDQsMCwxMjQsMywKLSAgICAwLDEwNiw0LDAsMTI0LDQsMCwxMzEsMSwwLDEsMTE2LDIsMCwxMDYsMywKLSAgICAwLDEyNCwxLDAsMjUsODMsMTI0LDMsMCwxMDYsNSwwLDEzMSwwLDAsODMsCi0gICAgMTAwLDEsMCw4Myw0MSwyLDEyMiwxMjgsNzYsMTExLDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMDUsMTE2LAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwKLSAgICAxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCwKLSAgICA0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAxLDEyMCwKLSAgICAxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywKLSAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsNDEsNiwyMTgsMTYsMTE1LDExMiwxMDEsCi0gICAgOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMjE4LDEyLDk1LAotICAgIDgzLDExMiwxMDEsOTksNzcsMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMTE0LDcsMCwwLDAsCi0gICAgMTE0LDczLDAsMCwwLDIxOCw0LDEwMSwxMjAsMTAxLDk5LDIxOCw0LDEwOCwxMTEsOTcsCi0gICAgMTAwLDQxLDUsMTE0LDcxLDAsMCwwLDExNCwxNTksMCwwLDAsMjE4LDQsMTE1LAotICAgIDExMiwxMDEsOTksMjE4LDcsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDIxOCw2LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDIxOCwxNyw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw5NSwxMTUsMTA0LDEwNSwxMDksNzEsMiwwLDAsMTE1LDE0LDAsMCwwLDAsCi0gICAgNiwxNSwxLDEyLDEsMTUsMSwxMywxLDEzLDEsMTEsMiwxMTQsMTgxLDAsCi0gICAgMCwwLDk5LDQsMCwwLDAsMCwwLDAsMCwxMSwwLDAsMCwxOSwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMjU1LDEsMCwwLDEwNSwwLDAsMTI1LAotICAgIDQsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDksMCwxMTQsMzEsMCwxMjQsMiwKLSAgICAwLDEyNCw0LDAsMTAwLDIsMCw2MCwxMTAsNiwwLDEwMCwzLDAsMTI1LDIsCi0gICAgMCwxMjQsMywwLDEwMCwxLDAsMTA3LDksMCwxMTQsNjIsMCwxMjQsMywwLAotICAgIDEyNCw0LDAsMTAwLDQsMCw2MCwxMTAsMCwwLDEyNCwwLDAsMTAwLDEsMCwKLSAgICAxMDAsNSwwLDEzMywyLDAsMjUsMTI1LDUsMCwxMjQsMCwwLDEwMCw1LDAsCi0gICAgMTAwLDYsMCwxMzMsMiwwLDI1LDEyNSw2LDAsMTI0LDAsMCwxMDAsNiwwLAotICAgIDEwMCw3LDAsMTMzLDIsMCwyNSwxMjUsNywwLDEyNCw1LDAsMTE2LDAsMCwKLSAgICAxMDcsMywwLDExNCwxNzEsMCwxMDAsOCwwLDEwNiwxLDAsMTI0LDIsMCwxMjQsCi0gICAgNSwwLDEzMSwyLDAsMTI1LDgsMCwxMTYsMiwwLDEwMCw5LDAsMTI0LDgsCi0gICAgMCwxMzEsMiwwLDEsMTE2LDMsMCwxMjQsOCwwLDEyNCw0LDAsMTQxLDEsCi0gICAgMCwxMzAsMSwwLDExMCwxMjIsMCwxMTYsNCwwLDEyNCw2LDAsMTMxLDEsMCwKLSAgICAxMDAsNSwwLDEwNywzLDAsMTE0LDIzMiwwLDEwMCwxMCwwLDEwNiwxLDAsMTI0LAotICAgIDIsMCwxMzEsMSwwLDEyNSw4LDAsMTE2LDIsMCwxMDAsOSwwLDEyNCw4LAotICAgIDAsMTMxLDIsMCwxLDExNiw1LDAsMTI0LDgsMCwxMzEsMSwwLDEzMCwxLAotICAgIDAsMTEwLDYxLDAsMTE2LDQsMCwxMjQsNywwLDEzMSwxLDAsMTAwLDUsMCwKLSAgICAxMDcsMywwLDExNCwzNywxLDEwMCwxMSwwLDEwNiwxLDAsMTI0LDIsMCwxMzEsCi0gICAgMSwwLDEyNSw4LDAsMTE2LDIsMCwxMDAsOSwwLDEyNCw4LDAsMTMxLDIsCi0gICAgMCwxLDExNiw1LDAsMTI0LDgsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsCi0gICAgMCwxMjQsMSwwLDEwMCwxLDAsMTA3LDksMCwxMTQsMjQxLDEsMTIxLDIwLDAsCi0gICAgMTE2LDYsMCwxMjQsMSwwLDEwMCwxMiwwLDI1LDEzMSwxLDAsMTI1LDksMCwKLSAgICA4NywxMTAsMTgsMCw0LDExNiw3LDAsMTA3LDEwLDAsMTE0LDg5LDEsMSwxLAotICAgIDEsODksMTEwLDY1LDAsODgsMTE2LDgsMCwxMjQsNiwwLDEzMSwxLDAsMTI0LAotICAgIDksMCwxMDcsMywwLDExNCwxNTQsMSwxMDAsMTMsMCwxMDYsMSwwLDEyNCwyLAotICAgIDAsMTMxLDEsMCwxMjUsOCwwLDExNiwyLDAsMTAwLDksMCwxMjQsOCwwLAotICAgIDEzMSwyLDAsMSwxMTYsMywwLDEyNCw4LDAsMTI0LDQsMCwxNDEsMSwwLAotICAgIDEzMCwxLDAsMTEwLDAsMCwxMjEsMTgsMCwxMjQsMSwwLDEwMCwxNCwwLDI1LAotICAgIDEwMCwxNSwwLDY0LDEyNSwxMCwwLDg3LDExMCwxOCwwLDQsMTE2LDcsMCwxMDcsCi0gICAgMTAsMCwxMTQsMTkyLDEsMSwxLDEsODksMTEzLDI0MSwxLDg4LDExNiw4LDAsCi0gICAgMTI0LDcsMCwxMzEsMSwwLDEyNCwxMCwwLDEwNywzLDAsMTE0LDI0MSwxLDExNiwKLSAgICAzLDAsMTAwLDEzLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI0LDQsCi0gICAgMCwxNDEsMSwwLDEzMCwxLDAsMTEzLDI0MSwxLDExMCwwLDAsMTI0LDAsMCwKLSAgICAxMDAsNywwLDEwMCwxLDAsMTMzLDIsMCwyNSw4Myw0MSwxNiw5NywxMjIsMSwKLSAgICAwLDAsODYsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDQsCi0gICAgMTAxLDk3LDEwMCwxMDEsMTE0LDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNSwKLSAgICAxMTUsMTAxLDEwMCw0NSwxMDUsMTEwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLAotICAgIDk3LDEwMyw5NywxMDUsMTEwLDExNSwxMTYsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsCi0gICAgMTE2LDk3LDExNiwxMTUsMzIsNDAsMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwxMDMsMTA1LDExOCwKLSAgICAxMDEsMTEwLDQxLDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTA1LDExMCwKLSAgICAxMDMsMzIsMTE2LDEwNCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTE2LAotICAgIDEwNCw5NywxMTYsMzIsOTksOTcsMTEwLDMyLDk4LDEwMSwzMiw5OSwxMTEsMTA5LDExMiwxMDUsCi0gICAgMTA4LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDQwLDQxLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTExLDExNiwxMDQsMTAxLDExNCwKLSAgICAzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTE3LAotICAgIDExNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAxLDExMCwxMDQsOTcsMTEwLDk5LDEwMSwzMiwxMDEsCi0gICAgMTE0LDExNCwxMTEsMTE0LDMyLDExNCwxMDEsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDQ2LDEwLAotICAgIDEwLDMyLDMyLDMyLDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LAotICAgIDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTA5LDk3LDEwMywxMDUsOTksMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwKLSAgICAzMiwxMDUsMTE1LDMyLDEwNSwxMTAsOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwzMiwxMTEsMTE0LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwNSwxMTUsCi0gICAgMTAsMzIsMzIsMzIsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiwxMTYsMTExLDMyLDk4LDEwMSwKLSAgICAzMiwxMTUsMTE2LDk3LDEwOCwxMDEsNDYsMzIsNjksNzksNzAsNjksMTE0LDExNCwxMTEsMTE0LAotICAgIDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTAwLDk3LDExNiw5NywzMiwxMDUsMTE1LDMyLDEwMiwxMTEsMTE3LDExMCwKLSAgICAxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDExNCwxMTcsMTEwLAotICAgIDk5LDk3LDExNiwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDExNCw2NywwLAotICAgIDAsMCwxMjIsMTAsNjAsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNjIsMTE0LDM1LAotICAgIDAsMCwwLDExNCwxMiwwLDAsMCwyMzMsOCwwLDAsMCwyMzMsMTIsMCwKLSAgICAwLDAsMTIyLDMwLDk4LDk3LDEwMCwzMiwxMDksOTcsMTAzLDEwNSw5OSwzMiwxMTAsMTE3LAotICAgIDEwOSw5OCwxMDEsMTE0LDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsNTgsMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMTIyLDIsMTIzLDEyNSwxMjIsNDMsMTE0LDEwMSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiwKLSAgICA2OSw3OSw3MCwzMiwxMTksMTA0LDEwNSwxMDgsMTAxLDMyLDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsCi0gICAgMTAzLDMyLDExNiwxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LDEwOSwxMTIsMzIsMTA1LDExMCwzMiwxMjMsCi0gICAgMzMsMTE0LDEyNSwxMjIsNDgsMTE0LDEwMSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiw2OSw3OSw3MCwKLSAgICAzMiwxMTksMTA0LDEwNSwxMDgsMTAxLDMyLDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwKLSAgICAxMDUsMTIyLDEwMSwzMiwxMTEsMTAyLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTA1LDExMCwKLSAgICAzMiwxMjMsMzMsMTE0LDEyNSwyMTgsNSwxMDksMTE2LDEwNSwxMDksMTAxLDEyMiwyNiw5OCwxMjEsCi0gICAgMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDUsMTE1LDMyLDExNSwxMTYsOTcsMTA4LDEwMSwzMiwKLSAgICAxMDIsMTExLDExNCwzMiwxMjMsMzMsMTE0LDEyNSwyMTgsNCwxMTUsMTA1LDEyMiwxMDEsMTA4LDMsCi0gICAgMCwwLDAsMjU1LDEyNywyNTUsMTI3LDMsMCw0MSw5LDIxOCwxMiw3Nyw2NSw3MSwKLSAgICA3Myw2Nyw5NSw3OCw4NSw3Nyw2Niw2OSw4MiwxMTQsNDcsMCwwLDAsMTE0LDE1MywKLSAgICAwLDAsMCwxMTQsMTU0LDAsMCwwLDExNCwzMSwwLDAsMCwyMTgsOCw2OSwKLSAgICA3OSw3MCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsCi0gICAgMCwxMTQsMTksMCwwLDAsNDEsMTEsMTE0LDUzLDAsMCwwLDIxOCwxMiwxMTUsCi0gICAgMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwxMTYsOTcsMTE2LDExNSwxMTQsNjcsMCwwLDAsCi0gICAgMTE0LDM1LDAsMCwwLDkwLDExLDEwMSwxMjAsOTksOTUsMTAwLDEwMSwxMTYsOTcsMTA1LAotICAgIDEwOCwxMTUsOTAsNSwxMDksOTcsMTAzLDEwNSw5OSw5MCwxMywxMTQsOTcsMTE5LDk1LDExNiwKLSAgICAxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LDEwOSwxMTIsOTAsOCwxMTQsOTcsMTE5LDk1LDExNSwxMDUsCi0gICAgMTIyLDEwMSwxMTQsMTUyLDAsMCwwLDIxOCwxMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LAotICAgIDEwOSwxMTYsMTA1LDEwOSwxMDEsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDEwNSwKLSAgICAxMjIsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKLSAgICAwLDIxOCwyNSw5NSwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OCwxMjEsMTE2LAotICAgIDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDg3LDIsMCwwLAotICAgIDExNSw3NiwwLDAsMCwwLDExLDYsMSwxMiwxLDEzLDMsNiwxLDEyLAotICAgIDEsMTMsMSwxNiwxLDE2LDEsMTYsMSwxMiwxLDE4LDEsMTMsMSwxOCwKLSAgICAxLDE4LDEsMTUsMSwxMywxLDE1LDEsMTgsMSwxNSwxLDEzLDEsMTUsCi0gICAgMSwxMiwxLDMsMSwyMCwxLDEzLDEsNSwyLDE4LDEsMTUsMSwxMywKLSAgICAxLDE4LDEsMywxLDE4LDEsMTMsMSw1LDIsMTgsMSwxNSwxLDE1LAotICAgIDEsMTE0LDE5MSwwLDAsMCw5OSw0LDAsMCwwLDAsMCwwLDAsNSwKLSAgICAwLDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwxMTUsMCwwLDAsCi0gICAgMTE2LDAsMCwxMDYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsNCwwLDExNiwKLSAgICAyLDAsMTI0LDQsMCwxMTYsMywwLDEzMSwyLDAsMTE0LDc4LDAsMTE2LDQsCi0gICAgMCwxMDAsMSwwLDEyNCwyLDAsMTMxLDIsMCwxLDEyNCwzLDAsMTAwLDIsCi0gICAgMCwxMDcsOSwwLDExNCw3NCwwLDExNiw1LDAsMTA2LDYsMCwxMjQsNCwwLAotICAgIDEyNCwzLDAsMTMxLDIsMCwxLDExMCwwLDAsMTI0LDQsMCw4MywxMTYsNywKLSAgICAwLDEwMCwzLDAsMTA2LDgsMCwxMjQsMiwwLDEzMSwxLDAsMTAwLDQsMCwKLSAgICAxMjQsMSwwLDEwMCw1LDAsMTI0LDIsMCwxMzEsMSwyLDEzMCwxLDAsMTAwLAotICAgIDIsMCw4Myw0MSw2LDEyMiw2MCw2NywxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwzMiw5OCwKLSAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiw5NywxMTUsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwKLSAgICAxMTAsMTAxLDEwMCwzMiw5OCwxMjEsMzIsOTUsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsCi0gICAgOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTA0LDEwMSw5NywxMDAsMTAxLDExNCwKLSAgICA0MCw0MSw0NiwxMjIsMjEsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LAotICAgIDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSw3OCwxMjIsMjMsNzgsMTExLDExMCwKLSAgICA0NSw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTA1LDExMCwzMiwKLSAgICAxMjMsMzMsMTE0LDEyNSwxMTQsNjcsMCwwLDAsMTE0LDM1LDAsMCwwLDQxLDksCi0gICAgMjE4LDcsMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCw5MCw1LDEwOCwxMTEsOTcsMTAwLDExNSwKLSAgICAyMTgsMTAsMTA1LDExNSwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwyMTgsMTAsOTUsOTksCi0gICAgMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDExNCwxNTMsMCwwLDAsMTE0LDEwNiwwLAotICAgIDAsMCw5MCwxNiw5NSwxMDIsMTA1LDEyMCw5NSw5OSwxMTEsOTUsMTAyLDEwNSwxMDgsMTAxLAotICAgIDExMCw5NywxMDksMTAxLDExNCwxNTQsMCwwLDAsMTE0LDQ3LDAsMCwwLDQxLDUsCi0gICAgMTE0LDUzLDAsMCwwLDExNCw2NywwLDAsMCwxMTQsMTQxLDAsMCwwLDExNCwKLSAgICAxNDIsMCwwLDAsMjE4LDQsOTksMTExLDEwMCwxMDEsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE3LDk1LDk5LDExMSwxMDksMTEyLAotICAgIDEwNSwxMDgsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDE0MiwyLDAsMCwKLSAgICAxMTUsMTYsMCwwLDAsMCwyLDE1LDEsMTUsMSwxMywxLDEyLDEsMTksCi0gICAgMSw0LDIsMTgsMSwxMTQsMTk2LDAsMCwwLDExNCw4NCwwLDAsMCw5OSwKLSAgICAzLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw3NiwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTMxLAotICAgIDEsMCwxMjUsMywwLDEyNCwzLDAsMTA2LDIsMCwxMTYsMywwLDEyNCwxLAotICAgIDAsMTMxLDEsMCwxMzEsMSwwLDEsMTI0LDMsMCwxMDYsMiwwLDExNiwzLAotICAgIDAsMTI0LDIsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjQsMywwLDEwNiwyLAotICAgIDAsMTE2LDQsMCwxMDYsNSwwLDEyNCwwLDAsMTMxLDEsMCwxMzEsMSwwLAotICAgIDEsMTI0LDMsMCw4Myw0MSwxLDEyMiw4MCw2NywxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwKLSAgICAzMiw5NywzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTA1LAotICAgIDExMCwxMTYsMTExLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMTEsMTE0LAotICAgIDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTE3LDExNiwzMiwxMTYsMTExLDMyLAotICAgIDk3LDMyLDk4LDEyMSwxMTYsMTAxLDQ1LDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDEwMCwxMCwKLSAgICAzMiwzMiwzMiwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsNDEsNiwyMTgsOSw5OCwxMjEsMTE2LAotICAgIDEwMSw5NywxMTQsMTE0LDk3LDEyMSwxMTQsMTg2LDAsMCwwLDIxOCw2LDEwMSwxMjAsMTE2LAotICAgIDEwMSwxMTAsMTAwLDExNCwxNywwLDAsMCwxMTQsMTkyLDAsMCwwLDkwLDUsMTAwLAotICAgIDExNywxMDksMTEyLDExNSw0MSw0LDExNCwxOTUsMCwwLDAsMTE0LDE4NCwwLDAsMCwKLSAgICAxMTQsMTkwLDAsMCwwLDExNCw1MywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTcsOTUsOTksMTExLDEwMCwxMDEsCi0gICAgOTUsMTE2LDExMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxNTQsMiwwLDAsCi0gICAgMTE1LDEwLDAsMCwwLDAsMywxMiwxLDE5LDEsMTksMSwyMiwxLDExNCwKLSAgICAxOTksMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDUsMCwwLAotICAgIDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsODksMCwwLDAsMTAwLDEsCi0gICAgMCwxMDAsMiwwLDEwOCwwLDAsMTI1LDEsMCwxMTYsMSwwLDEwNiwyLDAsCi0gICAgMTI0LDAsMCwxMzEsMSwwLDEwNiwzLDAsMTI1LDIsMCwxMjQsMSwwLDEwNiwKLSAgICA0LDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsMTE2LDEsMCwxMDYsNSwKLSAgICAwLDEwMCwyLDAsMTAwLDMsMCwxMzEsMiwwLDEyNSw0LDAsMTI0LDQsMCwKLSAgICAxMDYsNiwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsMywwLDEwMCwxLDAsMjUsCi0gICAgMTMxLDEsMCwxMzEsMSwwLDgzLDQxLDQsMTIyLDEyMSw2OCwxMDEsOTksMTExLDEwMCwKLSAgICAxMDEsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsCi0gICAgMTE2LDEwNSwxMTAsMTAzLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsCi0gICAgMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTUsMTE2LDExNCwxMDUsMTEwLDEwMyw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NSwxMTAsMTA1LAotICAgIDExOCwxMDEsMTE0LDExNSw5NywxMDgsMzIsMTEwLDEwMSwxMTksMTA4LDEwNSwxMTAsMTAxLDMyLDExNSwKLSAgICAxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwzMiwxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMDUsCi0gICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDEsOTksMTExLDEwMCwxMDUsMTEwLDEwMyw0NiwxMCwKLSAgICAzMiwzMiwzMiwzMiwxMTQsODQsMCwwLDAsNzgsODQsNDEsNywyMTgsOCwxMTYsCi0gICAgMTExLDEwNywxMDEsMTEwLDEwNSwxMjIsMTAxLDExNCw0OSwwLDAsMCw5MCw3LDY2LDEyMSwKLSAgICAxMTYsMTAxLDExNSw3Myw3OSw5MCw4LDExNCwxMDEsOTcsMTAwLDEwOCwxMDUsMTEwLDEwMSw5MCwKLSAgICAxNSwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDk1LDEwMSwxMTAsOTksMTExLDEwMCwxMDUsMTEwLDEwMywKLSAgICA5MCwyNSw3MywxMTAsOTksMTE0LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTA4LDc4LDEwMSwxMTksCi0gICAgMTA4LDEwNSwxMTAsMTAxLDY4LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMjE4LDYsMTAwLDEwMSw5OSwKLSAgICAxMTEsMTAwLDEwMSw0MSw1LDIxOCwxMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDk4LDEyMSwKLSAgICAxMTYsMTAxLDExNSwxMTQsMjAwLDAsMCwwLDkwLDIxLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgOTUsOTgsMTIxLDExNiwxMDEsMTE1LDk1LDExNCwxMDEsOTcsMTAwLDEwOCwxMDUsMTEwLDEwMSwyMTgsCi0gICAgOCwxMDEsMTEwLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsOTAsMTUsMTEwLDEwMSwxMTksMTA4LDEwNSwKLSAgICAxMTAsMTAxLDk1LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMywxMDAsMTAxLDk5LDExMSwxMDAsCi0gICAgMTAxLDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTY0LDIsMCwwLDExNSwxMCwwLDAsCi0gICAgMCwwLDUsMTIsMSwxOCwxLDE1LDEsMTgsMSwxMTQsMjA0LDAsMCwwLAotICAgIDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDM1LDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSwxNSwxLDAsMCwxMTYsMCwwLDEyNCwwLDAsCi0gICAgMTAwLDEsMCwxMDAsMCwwLDEzMSwzLDAsMTI1LDEsMCwxMTYsMSwwLDEyNCwKLSAgICAxLDAsMTAwLDIsMCwxMzEsMiwwLDExNCw3NCwwLDEyMSwxNywwLDEyNCwxLAotICAgIDAsMTA2LDIsMCwxMjQsMCwwLDEzMSwxLDAsODMsODcsMTEzLDc0LDAsNCwKLSAgICAxMTYsMywwLDEwNywxMCwwLDExNCw3MCwwLDEsMSwxLDg5LDExMyw3NCwwLAotICAgIDg4LDExMCwwLDAsMTIxLDEzLDAsMTI0LDAsMCwxMDYsNCwwLDEyNSwyLDAsCi0gICAgODcsMTEwLDE4LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxMDcsMCwxLDEsCi0gICAgMSw4OSwxMTAsMjksMCw4OCwxMjQsMiwwLDEwMCwwLDAsMTA3LDksMCwxMTQsCi0gICAgMTM2LDAsMTE2LDYsMCwxMjQsMiwwLDEzMSwxLDAsMTA2LDIsMCwxMzEsMCwKLSAgICAwLDgzLDEyMSwxMywwLDEyNCwwLDAsMTA2LDcsMCwxMjUsMywwLDg3LDExMCwKLSAgICAyNCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTc1LDAsMSwxLDEsMTAwLAotICAgIDMsMCwxMjUsMywwLDg5LDExMCwxLDAsODgsMTIxLDEzLDAsMTI0LDAsMCwKLSAgICAxMDYsOCwwLDEyNSw0LDAsODcsMTEwLDU5LDAsNCwxMTYsNSwwLDEwNywxMCwKLSAgICAwLDExNCwyNTAsMCwxLDEsMSwxMjQsMSwwLDEwMCwwLDAsMTA3LDgsMCwKLSAgICAxMTQsMjMwLDAsMTAwLDQsMCwxMDYsOSwwLDEyNCwzLDAsMTMxLDEsMCw4MywKLSAgICAxMDAsNSwwLDEwNiw5LDAsMTI0LDMsMCwxMjQsMSwwLDEzMSwyLDAsODMsCi0gICAgODksMTEwLDE3LDAsODgsMTAwLDYsMCwxMDYsOSwwLDEyNCwzLDAsMTI0LDQsCi0gICAgMCwxMzEsMiwwLDgzLDEwMCwwLDAsODMsNDEsNyw3OCwyMTgsMTAsOTUsOTUsCi0gICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwyMTgsMTEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgOTUsMTE0LDEwMSwxMTIsMTE0LDI1MCwxLDYzLDEyMiwxMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw2MiwxMjIsMjAsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTIzLDMzLDExNCwxMjUsNDEsNjIsMTIyLDIzLDYwLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDEwMiwxMTQsMTExLDEwOSwKLSAgICAzMiwxMjMsMzMsMTE0LDEyNSw2Miw0MSwxMCwxMTQsNjIsMCwwLDAsMTE0LDYwLDAsCi0gICAgMCwwLDExNCwyMDYsMCwwLDAsMjE4LDksNjksMTIwLDk5LDEwMSwxMTIsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDIxOCw4LDk1LDk1LDExNSwxMTIsMTAxLDk5LDk1LDk1LDIxOCwxNCw2NSwxMTYsCi0gICAgMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCwxNzUsMCwwLAotICAgIDAsMTE0LDU3LDAsMCwwLDIxOCw4LDk1LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSwKLSAgICAxMTQsNDcsMCwwLDAsNDEsNSwxMTQsMTgwLDAsMCwwLDExNCwxNzAsMCwwLAotICAgIDAsMTE0LDE3OCwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDEzMSwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsCi0gICAgMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDE3OCwyLDAsCi0gICAgMCwxMTUsNDYsMCwwLDAsMCwyLDE4LDEsMTUsNCwzLDEsMTcsMSwKLSAgICAxMywxLDgsMSwzLDEsMTMsMSwxMywxLDUsMiwxMiwxLDE2LDQsCi0gICAgMywxLDEzLDEsMTMsMSwxMSwxLDMsMSwxMywxLDEzLDEsMTIsMSwKLSAgICAxMywyLDIxLDIsMTE0LDIxMiwwLDAsMCw5OSwwLDAsMCwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSw1MiwKLSAgICAwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsCi0gICAgMSwwLDEwMCwyLDAsMTMyLDAsMCw5MCwzLDAsMTAwLDMsMCwxMDAsNCwKLSAgICAwLDEzMiwwLDAsOTAsNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLAotICAgIDkwLDUsMCwxMDAsNywwLDgzLDQxLDgsMjE4LDE3LDk1LDEwNSwxMTAsMTE1LDExNiwKLSAgICA5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw5OSwyLDAsMCwKLSAgICAwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwyNSwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwwLDEyNCwKLSAgICAxLDAsMTA2LDEsMCwxMjQsMCwwLDk1LDIsMCwxMDAsMCwwLDgzLDQxLAotICAgIDEsNzgsNDEsMywyMTgsNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMjA5LDAsCi0gICAgMCwwLDIxOCw1LDk1LDExNSwxMTIsMTAxLDk5LDQxLDIsMTE0LDcxLDAsMCwwLAotICAgIDExNCwxODAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMTE0LDcyLDAsMCwwLDIxNiwyLDAsMCwxMTUsNCwwLAotICAgIDAsMCwwLDEsOSwxLDEyMiwyNiw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwKLSAgICAxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LAotICAgIDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDM4LDAsMCwwLDEwMCwxLDAsMTI0LAotICAgIDAsMCwxMDYsMCwwLDk1LDEsMCwxMjQsMCwwLDEwNiwyLDAsMTE2LDMsCi0gICAgMCwxMDYsNCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsNSwwLDYwLDEwMCwwLAotICAgIDAsODMsNDEsMiw3OCw4NCw0MSw2LDExNCwyMTUsMCwwLDAsMjE4LDEzLDk1LAotICAgIDEwNSwxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTA1LDExMCwxMDMsMTE0LDIxNCwwLDAsCi0gICAgMCwxMTQsNywwLDAsMCwxMTQsNzMsMCwwLDAsMTE0LDY3LDAsMCwwLAotICAgIDQxLDEsMTE0LDcxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw1LDAsMCwwLDExNCw3NSwwLDAsMCwyMjAsMiwwLDAsMTE1LAotICAgIDQsMCwwLDAsMCw0LDEyLDEsMTIyLDI3LDk1LDEwNSwxMTAsMTE1LDExNiw5NywKLSAgICAxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsMTEwLAotICAgIDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsCi0gICAgMCwwLDE3LDAsMCwwLDcxLDAsMCwwLDExNSwxMjEsMCwwLDAsMTIyLAotICAgIDEwMSwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMiwwLDExNiwxLDAsMTAwLDEsCi0gICAgMCwxMDAsMiwwLDEzMiwwLDAsMTI0LDEsMCw2OCwxMzEsMSwwLDEzMSwxLAotICAgIDAsMTE0LDc4LDAsMTIxLDE3LDAsMTE2LDIsMCwxMDYsMywwLDEyNCwyLDAsCi0gICAgMTA2LDQsMCw2MSw4NywxMTMsMTAwLDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwKLSAgICA3NCwwLDEsMSwxLDg5LDExMywxMDAsMCw4OCwxMTAsMjIsMCwxMTYsNiwwLAotICAgIDEwMCwzLDAsMTI0LDIsMCwxMDYsNCwwLDEyNCwyLDAsMTA2LDcsMCwxMzEsCi0gICAgMywwLDEsODcsMTAwLDAsMCwxMDAsNCwwLDEyNCwwLDAsMTA2LDAsMCwKLSAgICA5NSw4LDAsODgsMTAwLDAsMCw4Myw0MSw1LDc4LDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsMTE1LDAsMCwwLAotICAgIDExNSwyNywwLDAsMCwxMjQsMCwwLDkzLDE3LDAsMTI1LDEsMCwxMjQsMSwKLSAgICAwLDEwMCwwLDAsMTA3LDksMCw4NiwxLDExMywzLDAsMTAwLDAsMCw4MywKLSAgICA0MSwxLDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDIyLDAsMCwwLDExNCwKLSAgICA3NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwxMTQsNzcsMCwwLDAsMjMwLDIsMCwwLDExNSwyLDAsMCwKLSAgICAwLDYsMCwxMjIsNDUsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwKLSAgICAxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSw0NiwKLSAgICA2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsCi0gICAgMTE0LDYyLDEyMiwxOCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMjMsMzMsMTE0LDEyNSwzMiwKLSAgICAzNSwzMiwxMjMsMzMsMTE0LDEyNSw3MCw0MSw5LDExNCwyMTUsMCwwLDAsMTE0LDc4LAotICAgIDAsMCwwLDExNCw3LDAsMCwwLDExNCw3MywwLDAsMCwxMTQsNjcsMCwKLSAgICAwLDAsMTE0LDc5LDAsMCwwLDExNCwxNTMsMCwwLDAsMTE0LDE3MCwwLDAsCi0gICAgMCwxMTQsMjE2LDAsMCwwLDQxLDMsMTE0LDcxLDAsMCwwLDExNCw4MCwwLAotICAgIDAsMCwxMTQsMTc4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw1LDAsMCwwLDExNCw4MSwwLDAsMCwyMjcsMiwwLDAsMTE1LAotICAgIDE4LDAsMCwwLDAsMSwzLDEsOSwxLDI1LDEsMywxLDE3LDEsCi0gICAgMTMsMSw4LDIsMjYsMiwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsCisgICAgMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDEzNiwwLDAsMTI0LDAsCisgICAgMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMyw3OCwxMjIsMjcsMTIzLDMzLDExNCwKKyAgICAxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTUsMCwwLDAsNDEsNCwxMTQsCisgICAgNTcsMCwwLDAsMjE4LDksMTA1LDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwxMTQsCisgICAgNzcsMCwwLDAsMTE0LDUwLDAsMCwwLDQxLDIsMTE0LDE5LDAsMCwwLAorICAgIDExNCw3OCwwLDAsMCw0MSwxLDExNCw3OSwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDExLDAsMCwwLDIxOCwyNCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsCisgICAgMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LAorICAgIDI0NiwwLDAsMCwxMTUsOCwwLDAsMCwwLDEsMTUsMSwxOCwxLDksCisgICAgMSwxMjIsNTAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwKKyAgICAxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTksMTE0LAorICAgIDk3LDExMiwxMTIsMTAxLDExNCw0MSwxLDExNCwxMiwwLDAsMCw0MSwyLDExNCw3OSwKKyAgICAwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDEwLDAsMCwwLDQxLDEsMTE0LAorICAgIDc5LDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTYsOTUsMTE0LDEwMSwxMTMsMTE3LAorICAgIDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwyNDQsMCwwLDAsMTE1LAorICAgIDYsMCwwLDAsMCwyLDE4LDUsMTMsMSwxMTQsODQsMCwwLDAsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsODEsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEyNCwKKyAgICAwLDAsMTMxLDIsMCwxMjUsMiwwLDEyNCwxLDAsMTE2LDEsMCwxMDYsMiwKKyAgICAwLDEwNyw2LDAsMTE0LDY3LDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsCisgICAgMjUsMTI1LDMsMCwxMTYsMywwLDEyNCwyLDAsMTI0LDMsMCwxMzEsMiwwLAorICAgIDEsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMjUsODMsMTE2LDQsMCwxMjQsCisgICAgMiwwLDEzMSwxLDAsODMsMTAwLDEsMCw4Myw0MSwyLDEyMiwxMjgsNzYsMTExLAorICAgIDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTUsMTIxLDExNSwKKyAgICA0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwKKyAgICAxMTcsMTE0LDExMCwzMiwxMDUsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsCisgICAgMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LAorICAgIDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCisgICAgMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsNDEsCisgICAgNSwyMTgsMTYsMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwyMTgsNSw5NSwKKyAgICAxMDEsMTIwLDEwMSw5OSwyMTgsNSw5NSwxMDgsMTExLDk3LDEwMCw0MSw0LDExNCwxOSwwLAorICAgIDAsMCwxMTQsNzgsMCwwLDAsMjE4LDQsMTE1LDExMiwxMDEsOTksMjE4LDYsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTEsMCwwLDAsMjE4LDE3LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSwwLDEsMCwwLDExNSwxMiwwLDAsMCwKKyAgICAwLDYsMTUsMSwxNSwxLDEzLDEsMTMsMSwxMSwyLDExNCw5MCwwLDAsCisgICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwzNSwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsNiwxLDAsMCwxMTYsMCwwLDEyNCwwLAorICAgIDAsMTAwLDEsMCwxMDAsMCwwLDEzMSwzLDAsMTI1LDEsMCwxMTYsMSwwLAorICAgIDEyNCwxLDAsMTAwLDIsMCwxMzEsMiwwLDExNCw3MSwwLDEyMSwxNywwLDEyNCwKKyAgICAxLDAsMTA2LDIsMCwxMjQsMCwwLDEzMSwxLDAsODMsODcsMTEwLDE4LDAsCisgICAgNCwxMTYsMywwLDEwNywxMCwwLDExNCw3MCwwLDEsMSwxLDg5LDExMCwxLAorICAgIDAsODgsMTIxLDEzLDAsMTI0LDAsMCwxMDYsNCwwLDEyNSwyLDAsODcsMTEwLAorICAgIDE4LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxMDQsMCwxLDEsMSw4OSwKKyAgICAxMTAsMjMsMCw4OCwxMjQsMiwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTI3LDAsCisgICAgMTE2LDYsMCwxMjQsMiwwLDEzMSwxLDAsODMsMTIxLDEzLDAsMTI0LDAsMCwKKyAgICAxMDYsNywwLDEyNSwzLDAsODcsMTEwLDI0LDAsNCwxMTYsNSwwLDEwNywxMCwKKyAgICAwLDExNCwxNjYsMCwxLDEsMSwxMDAsMywwLDEyNSwzLDAsODksMTEwLDEsCisgICAgMCw4OCwxMjEsMTMsMCwxMjQsMCwwLDEwNiw4LDAsMTI1LDQsMCw4NywxMTAsCisgICAgNTksMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDI0MSwwLDEsMSwxLDEyNCwKKyAgICAxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwyMjEsMCwxMDAsNCwwLDEwNiw5LAorICAgIDAsMTI0LDMsMCwxMzEsMSwwLDgzLDEwMCw1LDAsMTA2LDksMCwxMjQsMywKKyAgICAwLDEyNCwxLDAsMTMxLDIsMCw4Myw4OSwxMTAsMTcsMCw4OCwxMDAsNiwwLAorICAgIDEwNiw5LDAsMTI0LDMsMCwxMjQsNCwwLDEzMSwyLDAsODMsMTAwLDAsMCwKKyAgICA4Myw0MSw3LDc4LDIxOCwxMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LAorICAgIDIxOCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsMjUwLDEsNjMsCisgICAgMTIyLDEzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwKKyAgICAyMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsCisgICAgMzMsMTE0LDEyNSw0MSw2MiwxMjIsMjMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLAorICAgIDMzLDExNCwxMjUsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDYyLDQxLDEwLAorICAgIDExNCw2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw5MiwwLDAsMCwyMTgsCisgICAgOSw2OSwxMjAsOTksMTAxLDExMiwxMTYsMTA1LDExMSwxMTAsMjE4LDgsOTUsOTUsMTE1LDExMiwKKyAgICAxMDEsOTksOTUsOTUsMjE4LDE0LDY1LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw2OSwKKyAgICAxMTQsMTE0LDExMSwxMTQsMjE4LDIyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsCisgICAgMTEyLDExNCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMiwxMDEsOTksMTE0LDEsMCwwLAorICAgIDAsMjE4LDgsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDExNCw1MCwwLDAsMCwKKyAgICA0MSw1LDExNCw4OSwwLDAsMCwyMTgsNiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwKKyAgICA4OCwwLDAsMCwxMTQsMTUsMCwwLDAsMjE4LDgsMTAyLDEwNSwxMDgsMTAxLDExMCwKKyAgICA5NywxMDksMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCisgICAgMCwwLDIxOCwxMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsCisgICAgMTYsMSwwLDAsMTE1LDQ2LDAsMCwwLDAsMiwxOCwxLDE1LDQsMywKKyAgICAxLDE3LDEsMTMsMSw1LDEsMywxLDEzLDEsMTMsMSw1LDIsMTIsCisgICAgMSwxMCw0LDMsMSwxMywxLDEzLDEsMTEsMSwzLDEsMTMsMSwxMywKKyAgICAxLDEyLDEsMTMsMiwyMSwyLDExNCwxMDEsMCwwLDAsOTksMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsCisgICAgMCwxMTUsNTIsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwKKyAgICAyLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMCwzLAorICAgIDAsMTAwLDQsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNSwwLDEwMCw2LDAsCisgICAgMTMyLDAsMCw5MCw1LDAsMTAwLDcsMCw4Myw0MSw4LDIxOCwxNyw5NSwxMDUsCisgICAgMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMjUsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LAorICAgIDAsMCwxMjQsMSwwLDEwNiwxLDAsMTI0LDAsMCw5NSwyLDAsMTAwLDAsCisgICAgMCw4Myw0MSwxLDc4LDQxLDMsMjE4LDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTE0LDk1LDAsMCwwLDIxOCw1LDk1LDExNSwxMTIsMTAxLDk5LDQxLDIsMTE0LDE5LAorICAgIDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsNTQsMSwwLDAsCisgICAgMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LAorICAgIDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwNSwKKyAgICAxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAorICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzOCwwLDAsMCwxMDAsCisgICAgMSwwLDEyNCwwLDAsMTA2LDAsMCw5NSwxLDAsMTI0LDAsMCwxMDYsMiwKKyAgICAwLDExNiwzLDAsMTA2LDQsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDUsMCwKKyAgICA2MCwxMDAsMCwwLDgzLDQxLDIsNzgsODQsNDEsNiwxMTQsMTA0LDAsMCwwLAorICAgIDIxOCwxMyw5NSwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwNSwxMTAsMTAzLDExNCwKKyAgICAxMDMsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwxMTQsMTUsCisgICAgMCwwLDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIzLDAsMCwwLDU4LDEsCisgICAgMCwwLDExNSw0LDAsMCwwLDAsNCwxMiwxLDEyMiwyNyw5NSwxMDUsMTEwLAorICAgIDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsCisgICAgOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMywwLDAsMCwxNywwLDAsMCw3MSwwLDAsMCwxMTUsMTIxLDAsCisgICAgMCwwLDEyMiwxMDEsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDIsMCwxMTYsMSwKKyAgICAwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwxLDAsNjgsMTMxLDEsCisgICAgMCwxMzEsMSwwLDExNCw3OCwwLDEyMSwxNywwLDExNiwyLDAsMTA2LDMsMCwKKyAgICAxMjQsMiwwLDEwNiw0LDAsNjEsODcsMTEzLDEwMCwwLDQsMTE2LDUsMCwxMDcsCisgICAgMTAsMCwxMTQsNzQsMCwxLDEsMSw4OSwxMTMsMTAwLDAsODgsMTEwLDIyLDAsCisgICAgMTE2LDYsMCwxMDAsMywwLDEyNCwyLDAsMTA2LDQsMCwxMjQsMiwwLDEwNiwKKyAgICA3LDAsMTMxLDMsMCwxLDg3LDEwMCwwLDAsMTAwLDQsMCwxMjQsMCwwLAorICAgIDEwNiwwLDAsOTUsOCwwLDg4LDEwMCwwLDAsODMsNDEsNSw3OCw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwKKyAgICAwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywxNywwLDEyNSwxLAorICAgIDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw5LDAsODYsMSwxMTMsMywwLDEwMCwKKyAgICAwLDAsODMsNDEsMSw3OCwxMTQsMTAsMCwwLDAsNDEsMiwxMTQsMjQsMCwKKyAgICAwLDAsMTE0LDI1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDExLDAsMCwwLDExNCwyNiwwLDAsMCw2OCwxLDAsMCwxMTUsCisgICAgMiwwLDAsMCw2LDAsMTIyLDQ1LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LAogICAgIDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsCi0gICAgOTUsOTUsNzgsNDEsNiwxMTQsNTcsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCwKLSAgICA1OCwwLDAsMCwxMTQsNzIsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCw4MSwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNSwwLDAsMCwxMTQsMjEzLDAsMCwwLDIxNCwyLDAsMCwKLSAgICAxMTUsNiwwLDAsMCwxMiwyLDEyLDQsMTIsNywxMTQsMjEzLDAsMCwwLAotICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDgsMCwwLAotICAgIDAsNjQsMCwwLDAsMTE1LDE3MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwKLSAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwKLSAgICAzLDAsMTAwLDQsMCwxMDAsMywwLDEwMCw1LDAsMTAwLDMsMCwxMDAsNiwKLSAgICAwLDEwMCw3LDAsMTMyLDAsMyw5MCw0LDAsMTAwLDgsMCwxMDAsOSwwLAotICAgIDEzMiwwLDAsOTAsNSwwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLDAsOTAsCi0gICAgNiwwLDEwMSw3LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCwxMzEsMSwKLSAgICAwLDkwLDgsMCwxMDEsOCwwLDEwNiw5LDAsMTAwLDE0LDAsMTAwLDEzLDAsCi0gICAgMTMyLDAsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNywwLDEwMCwxNSwwLDEwMCwKLSAgICAxNiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw3LDAsMTAwLDE3LAotICAgIDAsMTAwLDE4LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDExLDAsMTAxLDExLDAsCi0gICAgMTA2LDksMCwxMDAsMTksMCwxMDAsMTgsMCwxMzIsMCwwLDEzMSwxLDAsOTAsCi0gICAgMTEsMCwxMDAsMywwLDgzLDQxLDIwLDIxOCwxMCw3NywxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDgzLDExMiwxMDEsOTksOTcsMjA4LDUsMCwwLDg0LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsCi0gICAgOTksMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTEsMTE0LDMyLDk3LAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMDIsMTExLAotICAgIDExNCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMyw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICA2NSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTE1LDExMiwxMDEsOTksMzIsCi0gICAgMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLDExMCwzMiw5Nyw5OCwKLSAgICAxMTEsMTE3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwzMiwKLSAgICAzMiw3MCwxMTEsMTE0LDEwLDMyLDMyLDMyLDMyLDEwMCw5NywxMTYsOTcsMzIsOTcsMTE1LAotICAgIDExNSwxMTEsOTksMTA1LDk3LDExNiwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTEwLDk5LDEwOCwxMTcsMTAwLAotICAgIDEwNSwxMTAsMTAzLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDQsMzIsMTE3LDExNSwxMDEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDEwLDMyLDMyLDMyLDMyLDEwOCwKLSAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsMTEwLDk3LDEwOSwKLSAgICAxMDEsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiw5Nyw5OCwxMTUsMTExLDEwOCwxMTcsCi0gICAgMTE2LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTYsCi0gICAgMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDEwLDMyLAotICAgIDMyLDMyLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDEwOCwKLSAgICAxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDQ2LDMyLDMyLDk2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTYsMzIsMTA1LDExNSwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDEwLAotICAgIDMyLDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDEwNSwxMTAsNDYsMzIsMzIsODQsCi0gICAgMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTQsCi0gICAgMTA1LDExOCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsCi0gICAgMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwKLSAgICAxMDcsOTcsMTAzLDEwMSw5NiwzMiwxMDAsMTAxLDExNiwxMDEsMTE0LDEwOSwxMDUsMTEwLDEwMSwxMTUsCi0gICAgMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsCi0gICAgMTE1LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwxMDEsMTAwLDMyLDk3LDMyLDExMiwKLSAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTEsMTE0LDEwLDMyLDMyLDMyLDMyLDExMCwxMTEsCi0gICAgMTE2LDQ2LDMyLDMyLDc5LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTE2LAotICAgIDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMDIsMTA4LDEwMSw5OSwxMTYsMTAxLDEwMCwKLSAgICAzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsOTYsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDk2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDk2LDMyLDEwNSwxMTUsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsMTA4LDExMSw5OSw5NywKLSAgICAxMTYsMTA1LDExMSwxMTAsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTksMTA0LDEwNSwKLSAgICA5OSwxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDgsMTExLDk3LDEwMCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTAyLDMyLDExNiwxMDQsCi0gICAgOTcsMTE2LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDUsCi0gICAgMTE1LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDYsMzIsMzIsODcsMTA0LAotICAgIDEwMSwxMTAsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDEwNSwxMTUsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTE1LDEwMSwxMTYsNDQsMzIsMTExLDExNCwxMDUsMTAzLDEwNSwxMTAsMzIsMTE5LAotICAgIDEwNSwxMDgsMTA4LDMyLDEwOSw5NywxMTYsOTksMTA0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAotICAgIDk2LDEwNCw5NywxMTUsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsOTYsMzIsMTA1LAotICAgIDExMCwxMDAsMTA1LDk5LDk3LDExNiwxMDEsMTE1LDMyLDExNiwxMDQsOTcsMTE2LDMyLDk3LDMyLAotICAgIDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwzNCwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCwzNCwzMiwKLSAgICAxMTQsMTAxLDEwMiwxMDgsMTAxLDk5LDExNiwxMTUsMzIsOTcsMzIsMTA4LDExMSw5OSw5NywxMTYsCi0gICAgMTA1LDExMSwxMTAsNDYsMTAsMzIsMzIsMzIsMzIsODcsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwKLSAgICAxMDUsMTE1LDMyLDEwNSwxMTUsMzIsODQsMTE0LDExNywxMDEsNDQsMzIsOTYsOTUsOTUsMTAyLAotICAgIDEwNSwxMDgsMTAxLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwKLSAgICAzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwKLSAgICAxMTUsMzIsMTE1LDEwMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsOTksOTcsOTksCi0gICAgMTA0LDEwMSwxMDAsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk5LDk3LAotICAgIDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsMTAwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwKLSAgICA0NCwzMiwxMDUsMTAyLDMyLDk3LDExMCwxMjEsNDYsMzIsMzIsNzMsMTE2LDEwLDMyLDMyLAotICAgIDMyLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDExNSwzMiwxMTYsMTExLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDk2LDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk1LDk1LAotICAgIDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiw5NiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsCi0gICAgMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsOTYsMzIsMTA1LAotICAgIDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwxMDEsMzIsMTExLAotICAgIDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTA1LDEwMSwxMTUsMzIsMTE2LAotICAgIDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTE5LDEwNCwxMDEsCi0gICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExNSwxMTcsOTgsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDMyLDMyLDczLDEwMiwzMiwxMTUsMTAxLDExNiw0NCwKLSAgICAzMiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTUsMTA0LDExMSwxMTcsCi0gICAgMTA4LDEwMCwzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsODQsMTE0LDExNywxMDEsNDUsNDUsCi0gICAgOTcsMTEwLDEwMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTEsMTE2LDEwNCwxMDEsMTE0LDExOSwKLSAgICAxMDUsMTE1LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MCw5Nyw5OSwxMDcsOTcsMTAzLAotICAgIDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywxMTYsMzIsNDAsMTA5LDk3LDEyMSw0MSwKLSAgICAzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKLSAgICA0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTE1LDExMiwxMDEsOTksMTAsMzIsMzIsMzIsCi0gICAgMzIsMTA0LDk3LDExNSwzMiw5NywzMiwxMTAsMTExLDExMCw0NSw3OCwxMTEsMTEwLDEwMSwzMiwKLSAgICAxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA1LDExMCwzMiw5NiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwKLSAgICAxMDUsMTExLDExMCwxMTUsOTYsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsMTE5LDEwNSwxMDgsCi0gICAgMTA4LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTcsMTE1LDMyLDExMiw5Nyw5OSwxMDcsOTcsCi0gICAgMTAzLDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzksMTEwLDEwOCwxMjEsMzIsMTAyLAotICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDMyLDQwLDExNSwxMDEsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTcsOTgsOTksNDYsNzcsMTAxLDExNiw5Nyw4MCw5NywKLSAgICAxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsOTcsMTEwLDEwMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk3LDk4LDk5LDQ2LDgwLAotICAgIDk3LDExNiwxMDQsNjksMTEwLDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDEsMzIsCi0gICAgMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMjEsMzIsNzcsMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDMyLDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksCi0gICAgMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwyMTgsNiwxMTEsMTE0LDEwNSwxMDMsMTA1LAotICAgIDExMCw3OCwyMTgsMTIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTUsMTE2LDk3LDExNiwxMDEsCi0gICAgMjE4LDEwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LDMsMCwwLAotICAgIDAsMywwLDAsMCw2LDAsMCwwLDIsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDc5LDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTI0LAotICAgIDIsMCwxMjQsMCwwLDk1LDEsMCwxMjQsMywwLDEyNCwwLDAsOTUsMiwKLSAgICAwLDEyNCw0LDAsMTI0LDAsMCw5NSwzLDAsMTI0LDUsMCwxMTQsNDgsMCwKLSAgICAxMDMsMCwwLDExMCwzLDAsMTAwLDAsMCwxMjQsMCwwLDk1LDQsMCwxMDAsCi0gICAgMSwwLDEyNCwwLDAsOTUsNSwwLDEwMCwwLDAsMTI0LDAsMCw5NSw2LAotICAgIDAsMTAwLDAsMCw4Myw0MSwyLDc4LDcwLDQxLDcsMTE0LDY3LDAsMCwwLAotICAgIDExNCwxNzAsMCwwLDAsMTE0LDIxOCwwLDAsMCwxMTQsMjE5LDAsMCwwLDIxOCwKLSAgICAyNiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LAotICAgIDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsMjE4LDEzLDk1LDExNSwxMDEsCi0gICAgMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSw5NywxMTYsMTE2LDExNCwyMTgsNyw5NSw5OSw5Nyw5OSwKLSAgICAxMDQsMTAxLDEwMCw0MSw2LDExNCw3MSwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LAotICAgIDE3MCwwLDAsMCwxMTQsMjE4LDAsMCwwLDExNCwyMTksMCwwLDAsMTE0LDIyMCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwxMTQsNzIsMCwwLDAsMjIsMywwLDAsMTE1LDE0LDAsMCwwLAotICAgIDAsMiw5LDEsOSwxLDksMSw5LDEsMjEsMyw5LDEsMTIyLDE5LAotICAgIDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0Niw5NSw5NSwxMDUsMTEwLDEwNSwKLSAgICAxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCi0gICAgNCwwLDAsMCw2NywwLDAsMCwxMTUsMTUzLDAsMCwwLDEwMCwxLDAsCi0gICAgMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwxMDAsMiwwLDEwNiwKLSAgICAwLDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsMTAzLDIsMCwxMjUsMSwKLSAgICAwLDEyNCwwLDAsMTA2LDMsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDc5LDAsCi0gICAgMTI0LDEsMCwxMDYsNCwwLDEwMCwzLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwKLSAgICAzLDAsMTMxLDEsMCwxMzEsMSwwLDEsMTEwLDAsMCwxMjQsMCwwLDEwNiwKLSAgICA1LDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxMjIsMCwxMjQsMSwwLDEwNiw0LAorICAgIDk1LDk1LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwKKyAgICAxMDEsMTIwLDExMiwxMTQsNjIsMTIyLDE4LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEyMywzMywKKyAgICAxMTQsMTI1LDMyLDM1LDMyLDEyMywzMywxMTQsMTI1LDcwLDQxLDksMTE0LDEwNCwwLDAsCisgICAgMCwxMTQsMjcsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwKKyAgICAxMTQsMTUsMCwwLDAsMTE0LDI4LDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsCisgICAgOTksMCwwLDAsMTE0LDEwNSwwLDAsMCw0MSwzLDExNCwxOSwwLDAsMCwKKyAgICAxMTQsMjksMCwwLDAsMTE0LDg4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwzMCwwLDAsMCw2NSwxLAorICAgIDAsMCwxMTUsMTgsMCwwLDAsMCwxLDMsMSw5LDEsMjUsMSwzLAorICAgIDEsMTcsMSwxMywxLDgsMiwyNiwyLDEyMiwyNiw5NSwxMDUsMTEwLDExNSwxMTYsCisgICAgOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsOTUsMTAxLAorICAgIDEyMCwxMDUsMTE2LDk1LDk1LDc4LDQxLDYsMTE0LDEsMCwwLDAsMTE0LDAsMCwKKyAgICAwLDAsMTE0LDIsMCwwLDAsMTE0LDIwLDAsMCwwLDExNCwyMywwLDAsCisgICAgMCwxMTQsMzAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMDIsMCwwLDAsNTIsCisgICAgMSwwLDAsMTE1LDYsMCwwLDAsMTIsMiwxMiw0LDEyLDcsMTE0LDEwMiwKKyAgICAwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICA4LDAsMCwwLDY0LDAsMCwwLDExNSwxNzIsMCwwLDAsMTAxLDAsMCwKKyAgICA5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLAorICAgIDIsMCwxMDAsMywwLDEwMCw0LDAsMTAwLDMsMCwxMDAsNSwwLDEwMCwzLAorICAgIDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDMsOTAsNCwwLDEwMCw4LDAsCisgICAgMTAwLDksMCwxMzIsMCwwLDkwLDUsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsCisgICAgMCwwLDkwLDYsMCwxMDEsNywwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLAorICAgIDAsMTMxLDEsMCw5MCw4LDAsMTAxLDgsMCwxMDYsOSwwLDEwMCwxNCwwLAorICAgIDEwMCwxMywwLDEzMiwwLDAsMTMxLDEsMCw5MCw4LDAsMTAxLDcsMCwxMDAsCisgICAgMTUsMCwxMDAsMTYsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsNywKKyAgICAwLDEwMCwxNywwLDEwMCwxOCwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMSwwLAorICAgIDEwMSwxMSwwLDEwNiw5LDAsMTAwLDE5LDAsMTAwLDE4LDAsMTMyLDAsMCwxMzEsCisgICAgMSwwLDkwLDExLDAsMTAwLDMsMCw4Myw0MSwyMCwyMTgsMTAsNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDk3LDIwOCw1LDAsMCw4NCwxMDQsMTAxLDMyLAorICAgIDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDIsMTExLAorICAgIDExNCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMTcsMTE1LDEwMSwxMDAsCisgICAgMzIsMTAyLDExMSwxMTQsMzIsMTA4LDExMSw5NywxMDAsMTA1LDExMCwxMDMsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsNjUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExNSwxMTIsCisgICAgMTAxLDk5LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICAzMiwxMDIsMTExLDExNCwzMiwxMDUsMTEwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgMzIsOTcsOTgsMTExLDExNywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNDYsMzIsMzIsNzAsMTExLDExNCwxMCwzMiwzMiwzMiwzMiwxMDAsOTcsMTE2LDk3LAorICAgIDMyLDk3LDExNSwxMTUsMTExLDk5LDEwNSw5NywxMTYsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTA1LDExMCw5OSwKKyAgICAxMDgsMTE3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDQ0LDMyLDExNywKKyAgICAxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk2LAorICAgIDExMCw5NywxMDksMTAxLDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsOTcsOTgsMTE1LAorICAgIDExMSwxMDgsMTE3LDExNiwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwzMiwzMiw5NiwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDExOSwxMDQsMTAxLAorICAgIDExMCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw0NiwzMiwzMiw5NiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk2LDMyLAorICAgIDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMTYsCisgICAgMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMDUsMTEwLDQ2LAorICAgIDMyLDMyLDg0LDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLAorICAgIDEwMCwxMDEsMTE0LDEwNSwxMTgsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTEwLDk3LDEwOSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsMTA1LDExNSw5NSwKKyAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTYsMzIsMTAwLDEwMSwxMTYsMTAxLDExNCwxMDksMTA1LAorICAgIDExMCwxMDEsMTE1LDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTA1LDExNSwzMiw5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMTAxLDEwMCwzMiwKKyAgICA5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTExLDExNCwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMTAsMTExLDExNiw0NiwzMiwzMiw3OSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTE1LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTAyLDEwOCwxMDEsOTksCisgICAgMTE2LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDk2LDk1LDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw0NiwKKyAgICAxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCw5NiwzMiwxMDUsCisgICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDMyLDEwOCwKKyAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNywxMTUsMTAxLDEwMCwzMiw5OCwxMjEsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTE0LDExMSwxMDksMzIsCisgICAgMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTA4LDExMSw5NywKKyAgICAxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTA1LDEwMiwKKyAgICAzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTEwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsMzIsMTA1LDExNSwzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDQ2LDMyLAorICAgIDMyLDg3LDEwNCwxMDEsMTEwLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMDUsCisgICAgMTE1LDEwLDMyLDMyLDMyLDMyLDExNSwxMDEsMTE2LDQ0LDMyLDExMSwxMTQsMTA1LDEwMywxMDUsCisgICAgMTEwLDMyLDExOSwxMDUsMTA4LDEwOCwzMiwxMDksOTcsMTE2LDk5LDEwNCw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiw5NiwxMDQsOTcsMTE1LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLAorICAgIDk2LDMyLDEwNSwxMTAsMTAwLDEwNSw5OSw5NywxMTYsMTAxLDExNSwzMiwxMTYsMTA0LDk3LDExNiwKKyAgICAzMiw5NywzMiwxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMzIsMzQsMTExLDExNCwxMDUsMTAzLDEwNSwKKyAgICAxMTAsMzQsMzIsMTE0LDEwMSwxMDIsMTA4LDEwMSw5OSwxMTYsMTE1LDMyLDk3LDMyLDEwOCwxMTEsCisgICAgOTksOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDEwLDMyLDMyLDMyLDMyLDg3LDEwNCwxMDEsMTEwLAorICAgIDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDUsMTE1LDMyLDg0LDExNCwxMTcsMTAxLDQ0LDMyLDk2LAorICAgIDk1LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSw5NiwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsCisgICAgMTE3LDExNiwxMDEsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMDUsMTE1LDMyLDExNSwxMDEsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk2LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LAorICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw5OSwKKyAgICA5Nyw5OSwxMDQsMTAxLDEwMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsCisgICAgMTA1LDEwOCwxMDEsNDQsMzIsMTA1LDEwMiwzMiw5NywxMTAsMTIxLDQ2LDMyLDMyLDczLDExNiwKKyAgICAxMCwzMiwzMiwzMiwzMiw5OSwxMTEsMTE0LDExNCwxMDEsMTE1LDExMiwxMTEsMTEwLDEwMCwxMTUsCisgICAgMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiw5Niw5NSw5NSw5OSw5Nyw5OSwxMDQsMTAxLAorICAgIDEwMCw5NSw5NSw5NiwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsOTYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwKKyAgICAxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LAorICAgIDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksCisgICAgMTAxLDMyLDExMSwxMDIsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEwNSwxMDEsCisgICAgMTE1LDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LDMyLAorICAgIDExOSwxMDQsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMTUsCisgICAgMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NiwzMiwzMiw3MywxMDIsMzIsMTE1LAorICAgIDEwMSwxMTYsNDQsMzIsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTE1LAorICAgIDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDEwLDMyLDMyLDMyLDMyLDg0LDExNCwxMTcsCisgICAgMTAxLDQ1LDQ1LDk3LDExMCwxMDAsMzIsNzAsOTcsMTA4LDExNSwxMDEsMzIsMTExLDExNiwxMDQsCisgICAgMTAxLDExNCwxMTksMTA1LDExNSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODAsOTcsOTksCisgICAgMTA3LDk3LDEwMywxMDEsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMjEsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDExNiwxMDQsOTcsMTE2LDMyLDQwLDEwOSwKKyAgICA5NywxMjEsNDEsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMTUsNDYsMzIsMzIsNzMsMTAyLDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LDEwLAorICAgIDMyLDMyLDMyLDMyLDEwNCw5NywxMTUsMzIsOTcsMzIsMTEwLDExMSwxMTAsNDUsNzgsMTExLAorICAgIDExMCwxMDEsMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwxMTAsMzIsOTYsMTE1LDExNyw5OCwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSwKKyAgICA5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDk2LDQ0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwLDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDMyLAorICAgIDExOSwxMDUsMTA4LDEwOCwzMiw5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsCisgICAgMTA5LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk3LDExNSwzMiwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc5LDExMCwxMDgsCisgICAgMTIxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNSwzMiw0MCwxMTUsMTAxLDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk3LDk4LDk5LDQ2LDc3LDEwMSwxMTYsCisgICAgOTcsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsMTAsCisgICAgMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5Nyw5OCwKKyAgICA5OSw0Niw4MCw5NywxMTYsMTA0LDY5LDExMCwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDQxLDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTIxLAorICAgIDMyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSwzMiwxMDUsMTEwLDExNSwxMTYsCisgICAgOTcsMTEwLDk5LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMjE4LDYsMTExLDExNCwKKyAgICAxMDUsMTAzLDEwNSwxMTAsNzgsMjE4LDEyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTE1LDExNiwKKyAgICA5NywxMTYsMTAxLDIxOCwxMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwKKyAgICAzLDAsMCwwLDMsMCwwLDAsNiwwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw3OSwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsCisgICAgMCwwLDEyNCwyLDAsMTI0LDAsMCw5NSwxLDAsMTI0LDMsMCwxMjQsMCwKKyAgICAwLDk1LDIsMCwxMjQsNCwwLDEyNCwwLDAsOTUsMywwLDEyNCw1LDAsCisgICAgMTE0LDQ4LDAsMTAzLDAsMCwxMTAsMywwLDEwMCwwLDAsMTI0LDAsMCw5NSwKKyAgICA0LDAsMTAwLDEsMCwxMjQsMCwwLDk1LDUsMCwxMDAsMCwwLDEyNCwwLAorICAgIDAsOTUsNiwwLDEwMCwwLDAsODMsNDEsMiw3OCw3MCw0MSw3LDExNCwxNSwKKyAgICAwLDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTA4LDAsCisgICAgMCwwLDIxOCwyNiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsCisgICAgOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsMjE4LDEzLAorICAgIDk1LDExNSwxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSw5NywxMTYsMTE2LDExNCwyMTgsNyw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDEwMCw0MSw2LDExNCwxOSwwLDAsMCwxMTQsMTUsMCwKKyAgICAwLDAsMTE0LDk5LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEwOCwwLDAsCisgICAgMCwxMTQsMTA5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCwxMTYsMSwwLDAsMTE1LDE0LAorICAgIDAsMCwwLDAsMiw5LDEsOSwxLDksMSw5LDEsMjEsMyw5LAorICAgIDEsMTIyLDE5LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0Niw5NSw5NSwKKyAgICAxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDIsCisgICAgMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMTQ3LDAsMCwwLAorICAgIDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwxMDAsCisgICAgMiwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsMTAzLDIsCisgICAgMCwxMjUsMSwwLDEyNCwwLDAsMTA2LDMsMCwxMDAsMCwwLDEwNyw5LDAsCisgICAgMTE0LDc2LDAsMTI0LDEsMCwxMDYsNCwwLDEwMCwzLDAsMTA2LDAsMCwxMjQsCisgICAgMCwwLDEwNiwzLDAsMTMxLDEsMCwxMzEsMSwwLDEsMTI0LDAsMCwxMDYsCisgICAgNSwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTE2LDAsMTI0LDEsMCwxMDYsNCwKICAgICAwLDEwMCw0LDAsMTA2LDAsMCwxMjQsMCwwLDEwNiw1LDAsMTMxLDEsMCwKLSAgICAxMzEsMSwwLDEsMTEwLDAsMCwxMDAsNSwwLDEwNiwwLDAsMTI0LDAsMCwKLSAgICAxMDYsNiwwLDEwNiw3LDAsMTAwLDYsMCwxMDYsOCwwLDEyNCwxLDAsMTMxLAotICAgIDEsMCwxMzEsMiwwLDgzLDQxLDcsNzgsMTIyLDksMTEwLDk3LDEwOSwxMDEsNjEsCi0gICAgMTIzLDMzLDExNCwxMjUsMTIyLDExLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNjEsMTIzLDMzLDExNCwKLSAgICAxMjUsMTIyLDExLDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDYxLDEyMywzMywxMTQsMTI1LDEyMiwyOSwKLSAgICAxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCwKLSAgICA5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsNjEsMTIzLDEyNSwxMjIsNiwxMjMsCi0gICAgMTI1LDQwLDEyMywxMjUsNDEsMTIyLDIsNDQsMzIsNDEsOSwxMTQsNDcsMCwwLDAsCi0gICAgMTE0LDY3LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDIxOCwwLDAsMCwyMTgsCi0gICAgNiw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDExNCwyMjEsMCwwLDAsMjE4LDksOTUsOTUsCi0gICAgOTksMTA4LDk3LDExNSwxMTUsOTUsOTUsMTE0LDU3LDAsMCwwLDExNCwyNiwwLDAsCi0gICAgMCw0MSwyLDExNCw3MSwwLDAsMCwxMTQsODAsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDEwMSwwLDAsCi0gICAgMCwzNCwzLDAsMCwxMTUsMTYsMCwwLDAsMCwxLDE1LDEsMjEsMSwKLSAgICAxNSwxLDI4LDEsMTUsMSwxMiwxLDE2LDEsMTIyLDE5LDc3LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsOTksCi0gICAgMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMTEsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDE0NSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LAotICAgIDIsMCwxMjEsMTA3LDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTA2LDEsCi0gICAgMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDEsMCwKLSAgICAxMDYsMiwwLDEwNywyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDMsMCwxMjQsCi0gICAgMSwwLDEwNiwzLDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDIsMCwxMjQsMSwKLSAgICAwLDEwNiwwLDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsNCwwLAotICAgIDEyNCwxLDAsMTA2LDQsMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiwKLSAgICA1LDAsMTI0LDEsMCwxMDYsNSwwLDEwNywyLDAsODMsODcsMTEwLDIyLDAsCi0gICAgNCwxMTYsNiwwLDEwNywxMCwwLDExNCwxNDAsMCwxLDEsMSwxMDAsMSwwLAotICAgIDgzLDg5LDExMCwxLDAsODgsMTAwLDAsMCw4Myw0MSwyLDc4LDcwLDQxLDcsCi0gICAgMTE0LDIyMSwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsCi0gICAgMjE4LDAsMCwwLDIxOCw2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDIxOCwxMiwxMDQsOTcsCi0gICAgMTE1LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCwyMTAsMCwwLDAsNDEsCi0gICAgMywxMTQsNzEsMCwwLDAsMjE4LDUsMTExLDExNiwxMDQsMTAxLDExNCwyMTgsNCwxMTUsCi0gICAgMTA5LDExNSwxMDgsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMjE4LDYsOTUsOTUsMTAxLDExMyw5NSw5NSw0NCwzLDAsMCwxMTUsMjAsCi0gICAgMCwwLDAsMCwxLDksMSwzLDEsMTgsMSwxOCwxLDE4LDEsMTUsCi0gICAgMSwxOCwxLDIwLDEsMTMsMSwxMjIsMTcsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywKLSAgICAxMTIsMTAxLDk5LDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsOTksMSwwLDAsMCwwLAotICAgIDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDE1OCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDAsMCwxMDcsOCwwLAotICAgIDExNCwxNTEsMCwxMjQsMCwwLDEwNiwxLDAsMTAwLDAsMCwxMDcsOSwwLDExNCwKLSAgICAxNTEsMCwxMjQsMCwwLDEwNiwyLDAsMTE0LDE1MSwwLDEyNCwwLDAsMTA2LDEsCi0gICAgMCwxMjUsMSwwLDEyNCwxLDAsMTA2LDMsMCwxMTYsNCwwLDExNiw1LDAsCi0gICAgMTMxLDEsMCwxMzEsMSwwLDExNCwxMTIsMCwxMjEsMTksMCwxMTYsNiwwLDEyNCwKLSAgICAxLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDAsMCw4NywxMTMsMTQ1LDAsNCwKLSAgICAxMTYsNywwLDEwNywxMCwwLDExNCwxMDgsMCwxLDEsMSw4OSwxMTMsMTQ1LDAsCi0gICAgODgsMTEzLDE0OCwwLDEyNCwxLDAsMTA2LDMsMCwxMTYsNCwwLDExNiw4LDAsCi0gICAgMTMxLDEsMCwxMzEsMSwwLDExNCwxNDgsMCwxMjQsMSwwLDEyNCwwLDAsOTUsCi0gICAgMCwwLDExMywxNDgsMCwxMTMsMTUxLDAsMTEwLDAsMCwxMjQsMCwwLDEwNiwwLAotICAgIDAsODMsNDEsMSw3OCw0MSw5LDExNCwyMjMsMCwwLDAsMTE0LDIxOCwwLDAsCi0gICAgMCwxMTQsMjIyLDAsMCwwLDIxOCw4LDEwMSwxMTAsMTAwLDExNSwxMTksMTA1LDExNiwxMDQsCi0gICAgMjE4LDUsMTE2LDExNywxMTIsMTA4LDEwMSwxMTQsMTM1LDAsMCwwLDExNCwxMzIsMCwwLAotICAgIDAsMTE0LDEyMywwLDAsMCwyMTgsMTcsNjYsODksODQsNjksNjcsNzksNjgsNjksCi0gICAgOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsNDEsMiwxMTQsNzEsMCwwLDAsCi0gICAgMTE0LDEzMSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwxMTQsMjI2LDAsMCwwLDU2LDMsMCwwLDExNSwyMiwwLAotICAgIDAsMCwwLDIsMTUsMSwyNCwxLDksMSwyMSwxLDMsMSwxOSwxLAotICAgIDEzLDEsOCwxLDIxLDEsMTgsMSwxMjIsMTcsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA4MywxMTIsMTAxLDk5LDQ2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk5LDIsMCwwLDAsCi0gICAgMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDEzLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDAsCi0gICAgMCw4Myw0MSwxLDc4LDQxLDEsMTE0LDIyMywwLDAsMCw0MSwyLDExNCw3MSwKLSAgICAwLDAsMCwxMTQsMjI2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw1LDAsMCwwLDExNCwyMjYsMCwwLDAsNzAsMywwLDAsCi0gICAgMTE1LDIsMCwwLDAsMCwyLDk5LDEsMCwwLDAsMCwwLDAsMCwKLSAgICAxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDQ2LDAsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDM1LDAsCi0gICAgMTI0LDAsMCwxMDYsMSwwLDEwNiwyLDAsMTAwLDIsMCwxMzEsMSwwLDEwMCwKLSAgICAzLDAsMjUsODMsMTI0LDAsMCwxMDYsMSwwLDgzLDEwMCwxLDAsODMsNDEsCi0gICAgNCwxMjIsMzIsODQsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTIsOTcsMTE0LDEwMSwKLSAgICAxMTAsMTE2LDQ2LDc4LDExNCwxMTYsMCwwLDAsMTE0LDg0LDAsMCwwLDQxLDMsCi0gICAgMTE0LDIyMSwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDMyLDAsMCwwLDQxLAotICAgIDEsMTE0LDcxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDIxOCw2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsNzQsMywwLAotICAgIDAsMTE1LDYsMCwwLDAsMCwzLDE1LDEsMjAsMiwxMjIsMTcsNzcsMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTksCi0gICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMSwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsNywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsODMsCi0gICAgNDEsMSw3OCw0MSwxLDExNCwyMjIsMCwwLDAsNDEsMSwxMTQsNzEsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCi0gICAgMTE0LDIyNywwLDAsMCw4MiwzLDAsMCwxMTUsMiwwLDAsMCwwLDIsCi0gICAgMTIyLDIzLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0NiwxMDQsOTcsMTE1LAotICAgIDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDk5LDIsMCwwLDAsMCwwLAotICAgIDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LAotICAgIDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNCwwLDAsOTUsCi0gICAgMSwwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDIxOCw0LDk4LDExMSwxMTEsCi0gICAgMTA4LDExNCwyMjIsMCwwLDAsNDEsMiwxMTQsNzEsMCwwLDAsMjE4LDUsMTE4LAotICAgIDk3LDEwOCwxMTcsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDExNCwyMjcsMCwwLDAsODYsMywwLDAsMTE1LDIsMCwwLAotICAgIDAsMCwyLDQxLDEyLDExNCw1NywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LAotICAgIDU4LDAsMCwwLDExNCw1OSwwLDAsMCwxMTQsNzIsMCwwLDAsMTE0LDEwMSwKLSAgICAwLDAsMCwxMTQsMjMwLDAsMCwwLDIxOCw4LDExMiwxMTQsMTExLDExMiwxMDEsMTE0LAotICAgIDExNiwxMjEsMTE0LDIyNiwwLDAsMCwyMTgsNiwxMTUsMTAxLDExNiwxMTYsMTAxLDExNCwxMTQsCi0gICAgMjM0LDAsMCwwLDExNCwyMjcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIxNywwLAotICAgIDAsMCwyNDEsMiwwLDAsMTE1LDIwLDAsMCwwLDEyLDM1LDYsMiwxNSwKLSAgICAxLDE1LDExLDEyLDEwLDEyLDEyLDE4LDE0LDIxLDQsMTgsOCwxOCw0LDExNCwKLSAgICAyMTcsMCwwLDAsMTE0LDIxOCwwLDAsMCwxMTQsMjIwLDAsMCwwLDk5LDIsCi0gICAgMCwwLDAsMiwwLDAsMCw1LDAsMCwwLDE1LDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwxOTMsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEwMCwxLAotICAgIDAsMTMxLDIsMCwxMTQsODMsMCwxMjQsMywwLDEwMCwyLDAsMTA3LDgsMCwKLSAgICAxMTQsNDMsMCwxMTYsMSwwLDEyNCwwLDAsMTAwLDMsMCwxMjQsMSwwLDEzMSwKLSAgICAxLDEsODMsMTI0LDMsMCwxMTQsNTUsMCwxMDMsMCwwLDExMCwzLDAsMTAwLAotICAgIDIsMCwxMjUsNCwwLDExNiwxLDAsMTI0LDAsMCwxMDAsMywwLDEyNCwxLAotICAgIDAsMTAwLDQsMCwxMjQsNCwwLDEzMSwxLDIsODMsMTI0LDMsMCwxMDAsMiwKLSAgICAwLDEwNyw4LDAsMTE0LDE2OCwwLDExNiwwLDAsMTI0LDEsMCwxMDAsNSwwLAotICAgIDEzMSwyLDAsMTE0LDE1OSwwLDEyMSwxOSwwLDEyNCwxLDAsMTA2LDIsMCwxMjQsCi0gICAgMCwwLDEzMSwxLDAsMTI1LDMsMCw4NywxMTMsMTY1LDAsNCwxMTYsMywwLAotICAgIDEwNywxMCwwLDExNCwxNTUsMCwxLDEsMSwxMDAsMiwwLDEyNSwzLDAsODksCi0gICAgMTEzLDE2NSwwLDg4LDExMywxNjgsMCwxMDAsNiwwLDEyNSwzLDAsMTEwLDAsMCwKLSAgICAxMTYsNCwwLDEyNCwwLDAsMTI0LDEsMCwxMDAsNywwLDEyNCwyLDAsMTAwLAotICAgIDUsMCwxMjQsMywwLDEzMSwyLDIsODMsNDEsOCwxMjIsNTMsODIsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTUsMTEyLDEwMSwKLSAgICA5OSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExOCw5NywxMTQsMTA1LDExMSwKLSAgICAxMTcsMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCi0gICAgMTE1LDQ2LDIxOCwxMiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsCi0gICAgNzgsMTE0LDE3MCwwLDAsMCwxMTQsMjIxLDAsMCwwLDExNCwyMjAsMCwwLDAsCi0gICAgNzAsMTE0LDIxOCwwLDAsMCw0MSw1LDExNCw2MCwwLDAsMCwyMTgsMjMsMTE1LAotICAgIDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsMTExLAotICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsMjIwLDAsMCwwLDExNCwxNTQsMCwwLDAsCi0gICAgMTE0LDIxNywwLDAsMCw0MSw1LDExNCw2NywwLDAsMCwxMTQsMTcwLDAsMCwKLSAgICAwLDExNCwyMTgsMCwwLDAsMTE0LDIyMCwwLDAsMCw5MCw2LDExNSwxMDEsOTcsCi0gICAgMTE0LDk5LDEwNCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwxMTQsMTc0LDAsMCwwLDkxLDMsMCwwLDExNSwyOCwwLDAsMCwKLSAgICAwLDIsMTUsMSwxMiwxLDE2LDEsMTgsMSwxNSwxLDcsMiwxMiwxLAotICAgIDE1LDEsMywxLDE5LDEsMTMsMSwxNCwzLDksMiwxMTQsMTc0LDAsMCwKLSAgICAwLDExNCwxNzAsMCwwLDAsMTE0LDIyMSwwLDAsMCw5OSwyLDAsMCwwLAotICAgIDIsMCwwLDAsOSwwLDAsMCwxOSwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsMTEwLDEsMCwwLDEyNCwxLDAsMTAwLDEsMCwxMDcsOCwwLDExNCw3OSwKLSAgICAwLDEwMCwyLDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwyLDAsMTAwLDMsMCwKLSAgICAxMzEsMiwwLDExNCw3OSwwLDEyMSwxOSwwLDEyNCwyLDAsMTA2LDEsMCwxMjQsCi0gICAgMCwwLDEzMSwxLDAsMTI1LDEsMCw4NywxMTMsNzYsMCw0LDExNiwyLDAsCi0gICAgMTA3LDEwLDAsMTE0LDcyLDAsMSwxLDEsODksMTEzLDc2LDAsODgsMTEzLDc5LAotICAgIDAsMTEwLDAsMCwxMTYsMywwLDEyNCwwLDAsMTI0LDIsMCwxMDAsNCwwLAotICAgIDEyNCwxLDAsMTMxLDIsMSwxMjUsNCwwLDEwMCw1LDAsMTI0LDQsMCw5NSwKLSAgICA0LDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDIwMywwLDEyMCw3OSwKLSAgICAwLDExNiw1LDAsMTMxLDAsMCw2OCw5Myw2MSwwLDkyLDIsMCwxMjUsNSwKLSAgICAwLDEyNSw2LDAsMTI0LDEsMCwxMDYsNiwwLDExNiw3LDAsMTI0LDYsMCwKLSAgICAxMzEsMSwwLDEzMSwxLDAsMTE0LDEzMSwwLDEyNCw1LDAsMTI0LDAsMCwxMjQsCi0gICAgMSwwLDEzMSwyLDAsMTI1LDIsMCwxMjQsMiwwLDEyNCw0LDAsOTUsOCwKLSAgICAwLDgwLDExMywxMzEsMCwxMTMsMTMxLDAsODcsMTAwLDEsMCw4MywxMTAsMCwwLAotICAgIDEyNCwzLDAsMTE2LDksMCwxMDcsOCwwLDExNCwzOCwxLDExNiwwLDAsMTI0LAotICAgIDIsMCwxMDAsNiwwLDEzMSwyLDAsMTE0LDQ3LDEsMTIxLDE5LDAsMTI0LDIsCi0gICAgMCwxMDYsMTAsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDcsMCw4NywxMTAsMTgsCi0gICAgMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDEzLDEsMSwxLDEsODksMTEzLAotICAgIDM1LDEsODgsMTI0LDcsMCwxMTQsMzUsMSwxMDMsMCwwLDEyNCw0LDAsOTUsCi0gICAgMTEsMCwxMTMsMzUsMSwxMTMsNDcsMSwxMTAsOSwwLDEyNCwzLDAsMTI0LDQsCi0gICAgMCw5NSwxMSwwLDEyNCw0LDAsMTA2LDExLDAsMTAzLDAsMCwxMDcsMiwwLAotICAgIDExNCwxMDYsMSwxMjQsMSwwLDExNCwxMDYsMSwxMTYsMTIsMCwxMjQsMSwwLDEzMSwKLSAgICAxLDAsMTAwLDcsMCwyNSwxMjUsOCwwLDEyNCw0LDAsMTA2LDExLDAsMTA2LAotICAgIDEzLDAsMTI0LDgsMCwxMzEsMSwwLDEsMTEzLDEwNiwxLDExMCwwLDAsMTI0LAotICAgIDQsMCw4Myw0MSw4LDk3LDYxLDEsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsCi0gICAgMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTgsCi0gICAgOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA4LAotICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTExLAotICAgIDMyLDEwNSwxMTAsMTAwLDEwNSw5OSw5NywxMTYsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLAotICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ0LDMyLDExNSwxMDEsMTE2LDEwLDMyLDMyLDMyLDMyLAotICAgIDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LAotICAgIDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSwzMiwxMTYsMTExLDMyLDk3LDMyLAotICAgIDEwOCwxMDUsMTE1LDExNiwzMiwxMTEsMTAyLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwKLSAgICAxMjEsMzIsMTEyLDk3LDExNiwxMDQsMTE1LDQ2LDMyLDMyLDY1LDExMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMDEsMTA5LDExMiwxMTYsMTIxLDMyLDEwOCwxMDUsMTE1LDExNiwzMiwxMDUsMTE1LDMyLDExNSwKLSAgICAxMTcsMTAyLDEwMiwxMDUsOTksMTA1LDEwMSwxMTAsMTE2LDQ0LDMyLDExNiwxMDQsMTExLDExNywxMDMsCi0gICAgMTA0LDMyLDEwNSwxMTYsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExMSwxMTYsMTA0LDEwMSwxMTQsMTE5LAotICAgIDEwNSwxMTUsMTAxLDMyLDExNywxMTUsMTAxLDEwMiwxMTcsMTA4LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwKLSAgICAxMDEsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTE1LDEyMSwxMTUsCi0gICAgMTE2LDEwMSwxMDksNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDMyLDEwOSwxMTcsMTE1LDExNiwzMiwxMTYsOTcsMTA3LDEwMSwzMiw5NywKLSAgICAzMiwxMTUsMTEyLDEwMSw5OSwzMiw5NywxMTUsMzIsMTA1LDExNiwxMTUsMzIsMTExLDExMCwxMDgsCi0gICAgMTIxLDMyLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0MCw0MSwzMiw5NywxMTQsMTAzLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDEyMiw5LDYwLDExNywxMTAsMTA3LDExMCwxMTEsCi0gICAgMTE5LDExMCw2MiwxMTQsMjM5LDAsMCwwLDExNCwyMTgsMCwwLDAsODQsMTE0LDIyMCwKLSAgICAwLDAsMCwxMTQsODQsMCwwLDAsNDEsMTQsMTE0LDYwLDAsMCwwLDExNCwKLSAgICAyMzksMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsMjE3LDAsMCwwLDExNCwyMjIsCi0gICAgMCwwLDAsMjE4LDI3LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LAotICAgIDExNiwxMDEsMTAwLDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwKLSAgICAxMTQsMjMxLDAsMCwwLDExNCwyMzIsMCwwLDAsMTE0LDE3MCwwLDAsMCwyMTgsCi0gICAgOSw5NSw4MCw3OSw4MCw4NSw3Niw2NSw4NCw2OSwxMTQsMjIwLDAsMCwwLDExNCwKLSAgICAyMjEsMCwwLDAsMTE0LDM4LDAsMCwwLDExNCwyMjQsMCwwLDAsNDEsOSwKLSAgICAxMTQsNjcsMCwwLDAsMjE4LDgsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LAotICAgIDE3MCwwLDAsMCwxMTQsMjIxLDAsMCwwLDExNCwxNzgsMCwwLDAsMjE4LDEyLAotICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTksMTA4LDk3LDExNSwxMTUsMTE0LDEyNiwwLDAsCi0gICAgMCwxMTQsMjIwLDAsMCwwLDkwLDcsMTAwLDEwNSwxMTQsMTEwLDk3LDEwOSwxMDEsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDI0MCwKLSAgICAwLDAsMCwxMTYsMywwLDAsMTE1LDYwLDAsMCwwLDAsMTIsMTIsNCwKLSAgICA2LDEsMTUsMiwzLDEsMTksMSwxMywxLDExLDgsMjEsMSw5LDMsCi0gICAgMTIsMSwyMiwxLDIxLDEsMTUsMSw5LDEsOCwyLDcsMywxMiwyLAotICAgIDE1LDEsMywxLDE5LDEsMTMsMSw1LDIsNiwxLDE4LDIsOSwxLAotICAgIDE1LDEsNiwxLDE2LDEsMjIsMiwxMTQsMjQwLDAsMCwwLDk5LDMsMCwKKyAgICAxMzEsMSwwLDEsMTAwLDUsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDYsMCwKKyAgICAxMDYsNywwLDEwMCw2LDAsMTA2LDgsMCwxMjQsMSwwLDEzMSwxLDAsMTMxLAorICAgIDIsMCw4Myw0MSw3LDc4LDEyMiw5LDExMCw5NywxMDksMTAxLDYxLDEyMywzMywxMTQsCisgICAgMTI1LDEyMiwxMSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDYxLDEyMywzMywxMTQsMTI1LDEyMiwxMSwKKyAgICAxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCw2MSwxMjMsMzMsMTE0LDEyNSwxMjIsMjksMTE1LDExNyw5OCwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSwKKyAgICA5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDYxLDEyMywxMjUsMTIyLDYsMTIzLDEyNSw0MCwxMjMsCisgICAgMTI1LDQxLDEyMiwyLDQ0LDMyLDQxLDksMTE0LDUwLDAsMCwwLDExNCwxNSwwLAorICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwyMTgsNiw5NywxMTIsCisgICAgMTEyLDEwMSwxMTAsMTAwLDExNCwxMTAsMCwwLDAsMjE4LDksOTUsOTUsOTksMTA4LDk3LAorICAgIDExNSwxMTUsOTUsOTUsMTE0LDEsMCwwLDAsMjE4LDQsMTA2LDExMSwxMDUsMTEwLDQxLAorICAgIDIsMTE0LDE5LDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNTIsMCwwLDAsMTI4LAorICAgIDEsMCwwLDExNSwxNiwwLDAsMCwwLDEsMTUsMSwyMSwxLDE1LDEsCisgICAgMjUsMSwxNSwxLDEyLDEsMTMsMSwxMjIsMTksNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA4MywxMTIsMTAxLDk5LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMywwLDAsMCwxMSwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTQ1LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMiwwLAorICAgIDEyMSwxMDcsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMDYsMSwwLDEwNywKKyAgICAyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMSwwLDEwNiwyLAorICAgIDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsMywwLDEyNCwxLDAsCisgICAgMTA2LDMsMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMiwwLDEyNCwxLDAsMTA2LAorICAgIDAsMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiw0LDAsMTI0LDEsCisgICAgMCwxMDYsNCwwLDEwNywyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDUsMCwKKyAgICAxMjQsMSwwLDEwNiw1LDAsMTA3LDIsMCw4Myw4NywxMTAsMjIsMCw0LDExNiwKKyAgICA2LDAsMTA3LDEwLDAsMTE0LDE0MCwwLDEsMSwxLDEwMCwxLDAsODMsODksCisgICAgMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQxLDIsNzgsNzAsNDEsNywxMTQsMTEwLAorICAgIDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLAorICAgIDAsMCwyMTgsNiw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwyMTgsMTIsMTA0LDk3LDExNSw5NSwKKyAgICAxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsOTYsMCwwLDAsNDEsMywxMTQsCisgICAgMTksMCwwLDAsOTAsNSwxMTEsMTE2LDEwNCwxMDEsMTE0LDkwLDQsMTE1LDEwOSwxMTUsCisgICAgMTA4LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCw2LDk1LDk1LDEwMSwxMTMsOTUsOTUsMTM4LDEsMCwwLDExNSwyMCwwLDAsCisgICAgMCwwLDEsOSwxLDMsMSwxOCwxLDE4LDEsMTgsMSwxNSwxLDE4LAorICAgIDEsMjAsMSwxMywxLDEyMiwxNyw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsCisgICAgOTksNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw4NSwwLAorICAgIDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDAsMCwxMDcsOCwwLDExNCw3OCwKKyAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDc4LDAsCisgICAgMTI0LDAsMCwxMDYsMiwwLDExNCw3OCwwLDExNiwzLDAsMTAwLDAsMCwxMDcsCisgICAgOCwwLDExNCw1NywwLDExNiw0LDAsMTMwLDEsMCwxMTYsMywwLDEwNiw1LAorICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsMTI0LDAsMCw5NSwwLDAsCisgICAgMTI0LDAsMCwxMDYsMCwwLDgzLDQxLDEsNzgsNDEsNiwxMTQsMTEyLDAsMCwKKyAgICAwLDExNCwxMDcsMCwwLDAsMTE0LDExMSwwLDAsMCwyMTgsMTksOTUsOTgsMTExLAorICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDk1LDEwMSwxMjAsMTE2LDEwMSwxMTQsMTEwLDk3LDEwOCwKKyAgICAyMTgsMTksNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDkwLDExLDk1LDEwMywxMDEsMTE2LDk1LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsMTAwLDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMTYsMCwwLDAsMTUwLDEsMCwKKyAgICAwLDExNSwxMiwwLDAsMCwwLDIsMTUsMSwyNCwxLDEyLDEsNiwxLAorICAgIDIxLDEsMTIyLDE3LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0Niw5OSwKKyAgICA5Nyw5OSwxMDQsMTAxLDEwMCw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMjQsCisgICAgMSwwLDEyNCwwLDAsOTUsMCwwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwKKyAgICAxLDExNCwxMTIsMCwwLDAsNDEsMiwxMTQsMTksMCwwLDAsMTE0LDExNiwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCisgICAgMCwxMTQsMTE2LDAsMCwwLDE1OSwxLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDIsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsNDYsMCwwLDAsMTI0LDAsMCwxMDYsMCwKKyAgICAwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMzUsMCwxMjQsMCwwLDEwNiwxLDAsCisgICAgMTA2LDIsMCwxMDAsMiwwLDEzMSwxLDAsMTAwLDMsMCwyNSw4MywxMjQsMCwKKyAgICAwLDEwNiwxLDAsODMsMTAwLDEsMCw4Myw0MSw0LDEyMiwzMiw4NCwxMDQsMTAxLAorICAgIDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDYsNzgsMjE4LDEsCisgICAgNDYsMTE0LDMzLDAsMCwwLDQxLDMsMTE0LDExMCwwLDAsMCwxMTQsMTUsMCwKKyAgICAwLDAsMjE4LDEwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDQxLDEsCisgICAgMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDIxOCw2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsMTYzLDEsMCwwLAorICAgIDExNSw2LDAsMCwwLDAsMywxNSwxLDIwLDIsMTIyLDE3LDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0NiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDEsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDcsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDgzLDQxLAorICAgIDEsNzgsNDEsMSwxMTQsMTExLDAsMCwwLDQxLDEsMTE0LDE5LDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwKKyAgICAxMTcsMCwwLDAsMTcxLDEsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsCisgICAgMjMsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDEwNCw5NywxMTUsOTUsCisgICAgMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTksMCwKKyAgICAwLDAsMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI0LDAsMCw5NSwxLAorICAgIDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDIsMjE4LDQsOTgsMTExLDExMSwxMDgsCisgICAgMTE0LDExMSwwLDAsMCw0MSwyLDExNCwxOSwwLDAsMCwyMTgsNSwxMTgsOTcsCisgICAgMTA4LDExNywxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMTE0LDExNywwLDAsMCwxNzUsMSwwLDAsMTE1LDIsMCwwLDAsCisgICAgMCwyLDQxLDEyLDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLAorICAgIDAsMCwwLDExNCwzLDAsMCwwLDExNCwyMCwwLDAsMCwxMTQsNTIsMCwKKyAgICAwLDAsMTE0LDExOCwwLDAsMCwyMTgsOCwxMTIsMTE0LDExMSwxMTIsMTAxLDExNCwxMTYsCisgICAgMTIxLDExNCwxMTYsMCwwLDAsMjE4LDYsMTE1LDEwMSwxMTYsMTE2LDEwMSwxMTQsMTE0LDEyMywKKyAgICAwLDAsMCwxMTQsMTE3LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTA2LDAsMCwKKyAgICAwLDc5LDEsMCwwLDExNSwyMCwwLDAsMCwxMiwzNSw2LDIsMTUsMSwKKyAgICAxNSwxMSwxMiwxMCwxMiwxMiwxOCw5LDIxLDQsMTgsOCwxOCw0LDExNCwxMDYsCisgICAgMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTA5LDAsMCwwLDk5LDIsMCwKKyAgICAwLDAsMiwwLDAsMCw2LDAsMCwwLDE1LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwyMTcsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEwMCwxLDAsCisgICAgMTMxLDIsMCwxMTQsMTEwLDAsMTE2LDEsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LAorICAgIDMzLDAsMTE2LDIsMCwxMzAsMSwwLDExNiwxLDAsMTA2LDMsMCwxMjUsNCwKKyAgICAwLDEyNCwzLDAsMTAwLDIsMCwxMDcsOCwwLDExNCw3MCwwLDEyNCw0LDAsCisgICAgMTI0LDAsMCwxMDAsMywwLDEyNCwxLDAsMTMxLDEsMSw4MywxMjQsMywwLAorICAgIDExNCw4MiwwLDEwMywwLDAsMTEwLDMsMCwxMDAsMiwwLDEyNSw1LDAsMTI0LAorICAgIDQsMCwxMjQsMCwwLDEwMCwzLDAsMTI0LDEsMCwxMDAsNCwwLDEyNCw1LAorICAgIDAsMTMxLDEsMiw4MywxMjQsMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsMTkyLAorICAgIDAsMTE2LDAsMCwxMjQsMSwwLDEwMCw1LDAsMTMxLDIsMCwxMTQsMTg2LDAsCisgICAgMTIxLDE5LDAsMTI0LDEsMCwxMDYsNCwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsCisgICAgMywwLDg3LDExMywxOTIsMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDE4MiwwLAorICAgIDEsMSwxLDEwMCwyLDAsMTI1LDMsMCw4OSwxMTMsMTkyLDAsODgsMTEwLDYsCisgICAgMCwxMDAsNiwwLDEyNSwzLDAsMTE2LDYsMCwxMjQsMCwwLDEyNCwxLDAsCisgICAgMTAwLDcsMCwxMjQsMiwwLDEwMCw1LDAsMTI0LDMsMCwxMzEsMiwyLDgzLAorICAgIDQxLDgsMTIyLDUzLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsOTcsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLAorICAgIDExMCwzMiwxMTgsOTcsMTE0LDEwNSwxMTEsMTE3LDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSw0Niw5MCwxMiwxMDMsMTAxLDExNiw5NSwxMDIsCisgICAgMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNzgsMTE0LDk5LDAsMCwwLDExNCwxMTAsMCwKKyAgICAwLDAsMTE0LDEwOSwwLDAsMCw3MCwxMTQsMTA3LDAsMCwwLDQxLDcsMTE0LAorICAgIDQsMCwwLDAsMTE0LDExOSwwLDAsMCwxMTQsMTIwLDAsMCwwLDIxOCwyMywKKyAgICAxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDEwOCwKKyAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCwxMDksMCwwLDAsMTE0LDc3LDAsMCwKKyAgICAwLDExNCwxMDYsMCwwLDAsNDEsNiwxMTQsMTUsMCwwLDAsMTE0LDk5LDAsCisgICAgMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEwOSwwLDAsMCwxMTQsMTI4LDAsMCwKKyAgICAwLDkwLDYsMTE1LDEwMSw5NywxMTQsOTksMTA0LDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCw4NSwwLDAsMCwxODAsMSwwLAorICAgIDAsMTE1LDM0LDAsMCwwLDAsMiwxNSwxLDEyLDEsNiwxLDksMiwKKyAgICAxMiwxLDE2LDEsMTgsMSwxNSwxLDcsMiwxMiwxLDE1LDEsMywxLAorICAgIDE5LDEsMTMsMSwxNCwzLDYsMiwxMTQsODUsMCwwLDAsOTksMywwLAogICAgIDAsMCwwLDAsMCwwLDgsMCwwLDAsNTMsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDEyNCwxLDAsMCwxMjEsMTMsMCwxMjQsMCwwLDEwNiwwLDAsCisgICAgMCwwLDExNSwxMTgsMSwwLDAsMTIxLDEzLDAsMTI0LDAsMCwxMDYsMCwwLAogICAgIDEyNSwzLDAsODcsMTEwLDE4LDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCwzMywKICAgICAwLDEsMSwxLDg5LDExMCwxNywwLDg4LDEyNCwzLDAsMTAwLDAsMCwxMDcsCiAgICAgOSwwLDExNCw1MCwwLDEyNCwzLDAsODMsMTI0LDAsMCwxMDYsMiwwLDEyNSwKLSAgICA0LDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEwOCwwLDEyMSwxMywKLSAgICAwLDEyNCwwLDAsMTA2LDMsMCwxMjUsMSwwLDg3LDExMywxMDgsMCw0LDExNiwKLSAgICAxLDAsMTA3LDEwLDAsMTE0LDEwNCwwLDEsMSwxLDg5LDExMywxMDgsMCw4OCwKLSAgICAxMTAsMCwwLDEyMSwxMywwLDEyNCwwLDAsMTA2LDQsMCwxMjUsNSwwLDg3LAotICAgIDExMCwyNCwwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsMTQ3LDAsMSwxLDEsCi0gICAgMTAwLDAsMCwxMjUsNSwwLDg5LDExMCwxLDAsODgsMTI0LDIsMCwxMDAsMCwKLSAgICAwLDEwNyw4LDAsMTE0LDIyNCwwLDEyNCw1LDAsMTAwLDAsMCwxMDcsOCwwLAotICAgIDExNCwyMTUsMCwxMjEsMTMsMCwxMjQsMSwwLDEwNiw1LDAsMTI1LDIsMCw4NywKLSAgICAxMTMsMjIxLDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCwyMTEsMCwxLDEsMSwKLSAgICAxMDAsMCwwLDEyNSwyLDAsODksMTEzLDIyMSwwLDg4LDExMywyMjQsMCwxMjQsNSwKLSAgICAwLDEyNSwyLDAsMTEwLDAsMCwxMjEsMTMsMCwxMjQsMCwwLDEwNiw2LDAsCi0gICAgMTI1LDYsMCw4NywxMTAsMjQsMCw0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDcsCi0gICAgMSwxLDEsMSwxMDAsMCwwLDEyNSw2LDAsODksMTEwLDEsMCw4OCwxMjEsCi0gICAgMTksMCwxMTYsNywwLDEyNCwwLDAsMTA2LDgsMCwxMzEsMSwwLDEyNSw3LAotICAgIDAsODcsMTEwLDI0LDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCw1MywxLDEsCi0gICAgMSwxLDEwMCwwLDAsMTI1LDcsMCw4OSwxMTAsMSwwLDg4LDExNiw5LDAsCi0gICAgMTI0LDQsMCwxMjQsMSwwLDEwMCwxLDAsMTI0LDIsMCwxMzEsMiwxLDEyNSwKLSAgICAzLDAsMTI0LDUsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDkzLDEsMTAwLDIsCi0gICAgMCwxMTAsMywwLDEwMCwzLDAsMTI0LDMsMCw5NSwxMCwwLDEyNCw2LDAsCi0gICAgMTI0LDMsMCw5NSwxMSwwLDEyNCw3LDAsMTI0LDMsMCw5NSwxMiwwLDEyNCwKLSAgICAzLDAsODMsNDEsNCw3OCwxMTQsMjE4LDAsMCwwLDcwLDg0LDQxLDEzLDExNCwKLSAgICAyMDksMCwwLDAsMTE0LDIxMCwwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDIwNSwKLSAgICAwLDAsMCwxMTQsMjExLDAsMCwwLDkwLDcsOTUsNzksODIsNzMsNzEsNzMsCi0gICAgNzgsMjE4LDEwLDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk1LDk1LDIxOCw0LDEwOCwKLSAgICAxMDUsMTE1LDExNiwyMTgsOCw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMTQsMjE3LDAsCi0gICAgMCwwLDExNCwyMjIsMCwwLDAsMTE0LDIyNiwwLDAsMCwxMTQsMjIxLDAsMCwKLSAgICAwLDQxLDgsMTE0LDE4MCwwLDAsMCwxMTQsMTcwLDAsMCwwLDExNCwyMTgsMCwKLSAgICAwLDAsMTE0LDE3OCwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDI0MywwLDAsCi0gICAgMCwxMTQsMjI2LDAsMCwwLDExNCwyMjEsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE3LDk1LDExNSwxMTIsMTAxLAotICAgIDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxODAsMywwLAotICAgIDAsMTE1LDcyLDAsMCwwLDAsMiwzLDEsMTMsMSwxMywxLDUsMiwKLSAgICAxMiwxLDQsMiw5LDEsMTIsMSwzLDEsMTMsMSwxMywyLDgsMSwKLSAgICAzLDEsMTMsMSwxMywxLDExLDEsMTIsMSwxMiwxLDMsMSwxMywxLAotICAgIDEzLDEsMTQsMiw5LDEsMywxLDEzLDEsMTMsMSwxMSwxLDMsMSwKLSAgICAxOSwxLDEzLDEsMTEsMiwyMSwxLDI3LDEsOSwxLDksMSwxMTQsMjQ4LAotICAgIDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDYsMCwwLDAsNjQsMCwwLDAsMTE1LDE0MiwwLDAsMCwxMDEsMCwwLAotICAgIDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsCi0gICAgMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwKLSAgICAwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMDAsOCwwLAotICAgIDEwMCw5LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMiw5MCw2LDAsMTAwLAotICAgIDEyLDAsMTAwLDEzLDAsMTMyLDAsMCw5MCw3LDAsMTAwLDE0LDAsMTAwLDE1LAotICAgIDAsMTMyLDAsMCw5MCw4LDAsMTAwLDE2LDAsMTAwLDE3LDAsMTMyLDAsMCwKLSAgICA5MCw5LDAsMTAwLDE4LDAsMTAwLDE5LDAsMTMyLDAsMCw5MCwxMCwwLDEwMCwKLSAgICAyMCwwLDEwMCwyMSwwLDEzMiwwLDAsOTAsMTEsMCwxMDAsMjIsMCwxMDAsMjMsCi0gICAgMCwxMzIsMCwwLDkwLDEyLDAsMTAwLDI0LDAsODMsNDEsMjUsMTE0LDE3NSwwLAotICAgIDAsMCwxMjIsNzcsNjcsMTExLDExMCwxMTgsMTAxLDExMCwxMDUsMTAxLDExMCw5OSwxMDEsMzIsCi0gICAgMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsMzIsOTcsMTE0LDExMSwxMTcsMTEwLDEwMCwzMiwxMTUsCi0gICAgMTEyLDEwMSw5OSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE1LDMyLDExNiwxMTEsMzIsMTEyLAotICAgIDExNCwxMTEsMTE4LDEwNSwxMDAsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDQ1LDExNSwxMTIsMTAxLDk5LAotICAgIDEwNSwxMDIsMTA1LDk5LDEwLDMyLDMyLDMyLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwKLSAgICA0Niw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMjQsMSwwLDEyNCwwLAotICAgIDAsOTUsMCwwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwxLDExNCwxNzgsMCwKLSAgICAwLDAsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzIsMCwKLSAgICAwLDAsMjMyLDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjEsOTUsCi0gICAgODMsMTEyLDEwMSw5OSw3NywxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSw0Niw5NSw5NSwxMDUsMTEwLAotICAgIDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLAotICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTU4LDAsMCwwLDEyNCwwLAotICAgIDAsMTA2LDAsMCwxMjUsMSwwLDEyNCwxLDAsMTA2LDEsMCwxMDAsMSwwLAotICAgIDEwNyw4LDAsMTE0LDMwLDAsMTAwLDIsMCwxMTAsNiwwLDEyNCwxLDAsMTA2LAotICAgIDEsMCwxMjUsMiwwLDEyNCwxLDAsMTA2LDIsMCwxMDAsMSwwLDEwNyw4LAotICAgIDAsMTE0LDEwNCwwLDEyNCwxLDAsMTA2LDMsMCwxMDAsMSwwLDEwNyw4LDAsCi0gICAgMTE0LDgyLDAsMTAwLDMsMCwxMDYsNCwwLDEyNCwyLDAsMTMxLDEsMCw4MywKLSAgICAxMDAsNCwwLDEwNiw0LDAsMTI0LDIsMCwxMjQsMSwwLDEwNiwzLDAsMTMxLAotICAgIDIsMCw4MywxMTAsNTAsMCwxMjQsMSwwLDEwNiw1LDAsMTE0LDEzMiwwLDEwMCwKLSAgICA1LDAsMTA2LDQsMCwxMjQsMiwwLDEyNCwxLDAsMTA2LDIsMCwxMzEsMiwKLSAgICAwLDgzLDEwMCw2LDAsMTA2LDQsMCwxMjQsMSwwLDEwNiwxLDAsMTI0LDEsCi0gICAgMCwxMDYsMiwwLDEzMSwyLDAsODMsMTAwLDEsMCw4Myw0MSw3LDEyMiwzOCwKLSAgICA4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwxMDEsMTEyLDExNCwzMiwKLSAgICAxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDc4LDExNCwyMDcsMCwwLDAsMTIyLDEzLDYwLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwyMCw2MCwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsMzMsMTE0LDEyNSw0MSwKLSAgICA2MiwxMjIsMjMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsCi0gICAgMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwxOCw2MCwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsMTI1LDQxLDYyLDQxLDYsCi0gICAgMTE0LDE3OCwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDIxOCwwLDAsMCwxMTQsCi0gICAgMTcwLDAsMCwwLDExNCw0NywwLDAsMCwxMTQsMjI3LDAsMCwwLDQxLDMsCi0gICAgMTE0LDcxLDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDY3LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyMDYsCi0gICAgMCwwLDAsMjM1LDMsMCwwLDExNSwxOCwwLDAsMCwwLDMsOSwxLAotICAgIDMwLDEsMTUsMSwxNSwxLDEzLDIsMjIsMiw5LDEsMTksMiwxMjIsMjQsCi0gICAgOTUsODMsMTEyLDEwMSw5OSw3NywxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSw0NiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsMjE4LDksOTUsMTExLDExOCwxMDEsMTE0LDExNCwKLSAgICAxMDUsMTAwLDEwMSw3MCwyMTgsMTEsOTUsMTAyLDExMSwxMTQsOTksMTAxLDk1LDExMCw5NywxMDksCi0gICAgMTAxLDg0LDk5LDIsMCwwLDAsMiwwLDAsMCw2LDAsMCwwLDU5LAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw3NSwyLDAsMCwxMjQsMCwwLDEwNiwKLSAgICAwLDAsMTI1LDQsMCwxMjQsMiwwLDExNSw0NSwwLDEyNCwzLDAsMTE1LDQ1LAotICAgIDAsMTE2LDEsMCwxMjQsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzEsMywwLAotICAgIDEwMCwyLDAsMTA3LDgsMCwxMTQsODUsMCwxMjEsMTYsMCwxMjQsNCwwLDEwNiwKLSAgICAyLDAsMTI0LDEsMCw5NSwzLDAsODcsMTEzLDg1LDAsNCwxMTYsNCwwLAotICAgIDEwNywxMCwwLDExNCw4MSwwLDEsMSwxLDg5LDExMyw4NSwwLDg4LDExMCwwLAotICAgIDAsMTI0LDIsMCwxMTUsMTE1LDAsMTE2LDEsMCwxMjQsMSwwLDEwMCwzLDAsCi0gICAgMTAwLDIsMCwxMzEsMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsMjIxLDAsMTI0LAotICAgIDQsMCwxMDYsNSwwLDEyNSw1LDAsMTI0LDUsMCwxMDAsMiwwLDEwNyw4LAotICAgIDAsMTE0LDE4NCwwLDEyNCw0LDAsMTA2LDYsMCwxMDAsMiwwLDEwNyw5LDAsCi0gICAgMTE0LDE4NCwwLDExNiw3LDAsMTA2LDgsMCwxMTYsNywwLDEzMSwxLDAsMTI1LAotICAgIDUsMCwxMjQsNCwwLDEwNiw2LDAsMTI0LDUsMCw5NSw5LDAsMTEzLDE4NCwKLSAgICAwLDExMCwwLDAsMTIxLDEzLDAsMTI0LDUsMCwxMjQsMSwwLDk1LDEwLDAsCi0gICAgODcsMTEzLDIyMSwwLDQsMTE2LDQsMCwxMDcsMTAsMCwxMTQsMjE3LDAsMSwxLAotICAgIDEsODksMTEzLDIyMSwwLDg4LDExMCwwLDAsMTI0LDIsMCwxMTUsMjUxLDAsMTE2LAotICAgIDEsMCwxMjQsMSwwLDEwMCw0LDAsMTAwLDIsMCwxMzEsMywwLDEwMCwyLAotICAgIDAsMTA3LDgsMCwxMTQsMzUsMSwxMjEsMTYsMCwxMjQsNCwwLDEwNiwxMSwwLAotICAgIDEyNCwxLDAsOTUsMTIsMCw4NywxMTMsMzUsMSw0LDExNiw0LDAsMTA3LDEwLAotICAgIDAsMTE0LDMxLDEsMSwxLDEsODksMTEzLDM1LDEsODgsMTEwLDAsMCwxMjEsCi0gICAgMTMsMCwxMjQsNCwwLDEyNCwxLDAsOTUsMTMsMCw4NywxMTAsMTgsMCw0LAotICAgIDExNiw0LDAsMTA3LDEwLDAsMTE0LDY4LDEsMSwxLDEsODksMTEwLDEsMCwKLSAgICA4OCwxMjQsMiwwLDExNSw5OSwxLDExNiwxLDAsMTI0LDEsMCwxMDAsNSwwLAotICAgIDEwMCwyLDAsMTMxLDMsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDE1NywxLDEyNCwKLSAgICA0LDAsMTA2LDYsMCwxMDAsMiwwLDEwNyw5LDAsMTE0LDE1NywxLDEyMSwxNiwKLSAgICAwLDEyNCw0LDAsMTA2LDYsMCwxMjQsMSwwLDk1LDE0LDAsODcsMTEzLDE1NCwKLSAgICAxLDQsMTE2LDQsMCwxMDcsMTAsMCwxMTQsMTUwLDEsMSwxLDEsODksMTEzLAotICAgIDE1NCwxLDg4LDExMywxNTcsMSwxMTAsMCwwLDEyNCw0LDAsMTA2LDE1LDAsMTE0LAotICAgIDcxLDIsMTI0LDIsMCwxMTUsMTk2LDEsMTE2LDEsMCwxMjQsMSwwLDEwMCw2LAotICAgIDAsMTAwLDIsMCwxMzEsMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsMjM2LDEsCi0gICAgMTIxLDE2LDAsMTI0LDQsMCwxMDYsMTYsMCwxMjQsMSwwLDk1LDE3LDAsODcsCi0gICAgMTEzLDIzNiwxLDQsMTE2LDQsMCwxMDcsMTAsMCwxMTQsMjMyLDEsMSwxLDEsCi0gICAgODksMTEzLDIzNiwxLDg4LDExMCwwLDAsMTI0LDIsMCwxMTUsMTAsMiwxMTYsMSwKLSAgICAwLDEyNCwxLDAsMTAwLDcsMCwxMDAsMiwwLDEzMSwzLDAsMTAwLDIsMCwKLSAgICAxMDcsOCwwLDExNCw3MSwyLDEyNCw0LDAsMTA2LDE4LDAsMTAwLDIsMCwxMDcsCi0gICAgOSwwLDExNCw2OCwyLDEyMSwxNiwwLDEyNCw0LDAsMTA2LDE4LDAsMTI0LDEsCi0gICAgMCw5NSwxOSwwLDg3LDExMyw2NSwyLDQsMTE2LDQsMCwxMDcsMTAsMCwxMTQsCi0gICAgNjEsMiwxLDEsMSw4OSwxMTMsNjUsMiw4OCwxMTMsNjgsMiwxMTMsNzEsMiwKLSAgICAxMTAsMCwwLDEwMCwyLDAsODMsNDEsOCw5NywyOSwyLDAsMCw4MywxMDEsCi0gICAgMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiw5NywKLSAgICAxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLAotICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ1LDExNCwxMDEsMTA4LDk3LDExNiwxMDEsMTAwLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsCi0gICAgMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiw0NiwzMiwzMiw3MiwKLSAgICAxMDEsMTE0LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMDUsMTE1LDMyLDEwNCwKLSAgICAxMTEsMTE5LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk3LDExNiwxMTYsMTE0LAotICAgIDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTA5LDk3LDExMiwzMiwxMTEsMTEwLDExNiwxMTEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNTgsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMTE1LDExMiwxMDEsOTksNDYsMTEwLDk3LDEwOSwxMDEsMzIsNDUsCi0gICAgNjIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsCi0gICAgOTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDExMiwxMDEsOTksNDYsMTA4LAotICAgIDExMSw5NywxMDAsMTAxLDExNCwzMiw0NSw2MiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwKLSAgICA5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDExNSwxMTIsMTAxLDk5LDQ2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsNDUsCi0gICAgNjIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywKLSAgICAxMDMsMTAxLDk1LDk1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTIsMTAxLAotICAgIDk5LDMyLDQ1LDYyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDk1LDk1LDExNSwxMTIsCi0gICAgMTAxLDk5LDk1LDk1LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc5LDExMiwKLSAgICAxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDU4LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDExNSwxMTIsMTAxLDk5LDQ2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDMyLDQ1LDYyLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDk1LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSwzMiw0MCwKLSAgICAxMDUsMTAyLDMyLDExNSwxMTIsMTAxLDk5LDQ2LDExNSwxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwKLSAgICA5NywxMTYsMTE2LDExNCwzMiwxMDUsMTE1LDMyLDExNiwxMTQsMTE3LDEwMSw0MSwxMCwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTEyLDEwMSw5OSw0Niw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDEwMCwzMiw0NSw2MiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw5NSw5NSw5OSw5NywKLSAgICA5OSwxMDQsMTAxLDEwMCw5NSw5NSwzMiw0MCwxMDUsMTAyLDMyLDk1LDk1LDEwMiwxMDUsMTA4LAotICAgIDEwMSw5NSw5NSwzMiw5NywxMDgsMTE1LDExMSwzMiwxMTUsMTAxLDExNiw0MSwxMCwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTEyLDEwMSw5OSw0NiwxMTUsMTE3LDk4LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LAotICAgIDExNiwxMDUsMTExLDExMCwxMTUsMzIsNDUsNjIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsCi0gICAgOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMzIsNDAsMTA1LDEwMiwzMiwxMTUsMTAxLDExNiwKLSAgICA0MSwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsNTcsMCwwLDAsCi0gICAgNzgsMTE0LDIwNSwwLDAsMCwyMTgsMTEsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsCi0gICAgMTAxLDk1LDk1LDExNCwyNDcsMCwwLDAsMTE0LDIxMSwwLDAsMCwxMTQsMjQ1LDAsCi0gICAgMCwwLDQxLDIwLDExNCwxNzgsMCwwLDAsMTE0LDYyLDAsMCwwLDExNCw2NywKLSAgICAwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDIxMCwwLDAsMCwxMTQsMTcwLDAsCi0gICAgMCwwLDExNCwyMjEsMCwwLDAsMjE4LDE2LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiwKLSAgICA5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDIxOCw3LDk1LDk1LDExMCwxMDEsMTE5LAotICAgIDk1LDk1LDIxOCw1LDk1LDExMiw5NywxMTYsMTA0LDExNCwyMDUsMCwwLDAsMTE0LDIzNCwKLSAgICAwLDAsMCwxMTQsMjUxLDAsMCwwLDExNCwyMDksMCwwLDAsMTE0LDI0NywwLAotICAgIDAsMCwxMTQsMjI3LDAsMCwwLDExNCwyMTgsMCwwLDAsMTE0LDIxMSwwLDAsCi0gICAgMCwxMTQsMjI2LDAsMCwwLDExNCwyNDUsMCwwLDAsNDEsNiwxMTQsNzEsMCwKLSAgICAwLDAsMTE0LDE4MCwwLDAsMCwxMTQsMjQ5LDAsMCwwLDExNCwyNTAsMCwwLAotICAgIDAsMTE0LDE3OCwwLDAsMCwxMTQsMTcwLDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNywxMDUsMTEwLDEwNSwxMTYsCi0gICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTcsMTE2LDExNiwxMTQsMTE1LDI1MSwzLDAsCi0gICAgMCwxMTUsODgsMCwwLDAsMCwxNyw5LDYsMTIsMSwyNCwxLDMsMSwKLSAgICAxNiwxLDEzLDEsOCwzLDMwLDEsOSwxLDEyLDIsMTUsMSwxNSwxLAotICAgIDE4LDEsMywxLDEzLDEsMTMsMSw4LDMsMzAsMSwzLDEsMTYsMSwKLSAgICAxMywxLDgsMywzLDEsMTMsMSwxMywxLDUsMywzMCwxLDE1LDEsCi0gICAgMywxLDE2LDEsMTMsMSwxMSwyLDksMiwzMCwxLDMsMSwxNiwxLAotICAgIDEzLDEsOCwzLDMwLDEsMTUsMSwzLDEsMTYsMSwxMywxLDEyMiwzMCwKLSAgICA5NSw4MywxMTIsMTAxLDk5LDc3LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDQ2LDEwNSwxMTAsMTA1LAotICAgIDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NywxMTYsMTE2LDExNCwxMTUsOTksMSwKLSAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsMTAxLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMSwKLSAgICAwLDExNiwxLDAsMTI0LDEsMCwxMDYsMiwwLDEwMCwxLDAsMTMxLDIsMCwKLSAgICAxMTQsNDgsMCwxMjQsMSwwLDEwNiwyLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwKLSAgICAxLDAsMTI1LDIsMCwxMTAsNiwwLDEwMCwyLDAsMTI1LDIsMCwxMjQsMiwKLSAgICAwLDEwMCwyLDAsMTA3LDgsMCwxMTQsODQsMCwxMTYsNCwwLDEyNCwxLDAsCi0gICAgMTA2LDUsMCwxMzEsMSwwLDEyNSwyLDAsMTEwLDAsMCwxMjQsMCwwLDEwNiwKLSAgICA2LDAsMTI0LDIsMCwxMzEsMSwwLDEsMTI0LDIsMCw4Myw0MSwzLDEyMiwKLSAgICAxNTMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywzMiwxMTAsMTAxLDExOSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsCi0gICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsCi0gICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDUsMTE0LDEwMSwxMDgsOTcsMTE2LDEwMSwxMDAsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSwKLSAgICAzMiw5NywxMTQsMTAxLDMyLDk3LDEwOCwxMTUsMTExLDMyLDExNSwxMDEsMTE2LDMyLDExOSwxMDUsCi0gICAgMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5NywKLSAgICAxMTIsMTEyLDExNCwxMTEsMTEyLDExNCwxMDUsOTcsMTE2LDEwMSwzMiwxMTgsOTcsMTA4LDExNywxMDEsCi0gICAgMTE1LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSw0NiwKLSAgICAxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwyMTgsMTMsOTksMTE0LDEwMSw5NywKLSAgICAxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDcsMTE0LDE3OCwwLDAsCi0gICAgMCwxMTQsNjAsMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsMCwxLDAsMCwKLSAgICAxMTQsNjgsMCwwLDAsMTE0LDY3LDAsMCwwLDExNCwyNTUsMCwwLDAsNDEsCi0gICAgMywxMTQsNzEsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsMTgwLDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwKLSAgICA2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw3NSw0LDAsMCwxMTUsMTYsMCwwLDAsCi0gICAgMCw3LDksMiwxOCwzLDIxLDIsNiwxLDEyLDQsMTgsMSwxMywxLAotICAgIDEyMiwxOSw5NSw4MywxMTIsMTAxLDk5LDc3LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDQ2LDk5LAotICAgIDExNCwxMDEsOTcsMTE2LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAotICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyMywwLDAsMCwxMjQsCi0gICAgMCwwLDEwNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMCwxLDEwMCwxLDAsODMsNDEsMiwxMjIsMTg5LDY4LDExMSwzMiwxMDEsMTE4LDEwMSwKLSAgICAxMTQsMTIxLDExNiwxMDQsMTA1LDExMCwxMDMsMzIsMTEwLDEwMSw5OSwxMDEsMTE1LDExNSw5NywxMTQsCi0gICAgMTIxLDMyLDExNiwxMTEsMzIsMTAxLDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsODQsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwKLSAgICAxMTEsMTAyLDMyLDk2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk2LDMyLDEwNSwxMTUsMzIsMTE3LAotICAgIDExNSwxMDEsMTAwLDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTYsOTcsMTE0LDEwMywxMDEsCi0gICAgMTE2LDMyLDExMSwxMDIsMzIsMTAxLDEyMCwxMDEsOTksMTE3LDExNiwxMDUsMTExLDExMCw0NiwxMCwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwKLSAgICAxMDQsMTExLDEwMCwzMiwxMTcsMTE1LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCwzOSwxMTUsMzIsOTYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsNDAsNDEsOTYsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMywxMTQsMTc4LDAsMCwwLDExNCwKLSAgICAxNzAsMCwwLDAsMjE4LDExLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDQxLDIsMTE0LDcxLDAsMCwwLDExNCwxODAsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDUsOTUsMTAxLAotICAgIDEyMCwxMDEsOTksOTgsNCwwLDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwxOCwKLSAgICA5NSw4MywxMTIsMTAxLDk5LDc3LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDQ2LDk1LDEwMSwxMjAsCi0gICAgMTAxLDk5LDk5LDIsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDExLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxNywxLDAsMCwxMjQsMCwwLDEwNiwKLSAgICAwLDAsMTA2LDEsMCwxMjUsMiwwLDExNiwyLDAsMTA2LDMsMCwxMzEsMCwKLSAgICAwLDEsMTE2LDQsMCwxMjQsMiwwLDEzMSwxLDAsMTQzLDIyNiwwLDEsMTE2LAotICAgIDUsMCwxMDYsNiwwLDEwNiw3LDAsMTI0LDIsMCwxMzEsMSwwLDEyNCwxLAotICAgIDAsMTA3LDksMCwxMTQsOTUsMCwxMDAsMSwwLDEwNiw4LDAsMTI0LDIsMCwKLSAgICAxMzEsMSwwLDEyNSwzLDAsMTE2LDksMCwxMjQsMywwLDEwMCwyLDAsMTI0LAotICAgIDIsMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDAsMCwxMjQsMCwwLDEwNiwwLAotICAgIDAsMTA2LDEwLDAsMTAwLDMsMCwxMDcsOCwwLDExNCwxODEsMCwxMjQsMCwwLAotICAgIDEwNiwwLDAsMTA2LDExLDAsMTAwLDMsMCwxMDcsOCwwLDExNCwxNTgsMCwxMTYsCi0gICAgOSwwLDEwMCw0LDAsMTAwLDIsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsCi0gICAgMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDAsMCwxMjQsMCwwLDEwNiwxMiwwLAotICAgIDEyNCwxLDAsMTAwLDUsMCwxMDAsNiwwLDEzMSwxLDEsMSwxMjQsMSwwLAotICAgIDgzLDEyNCwwLDAsMTA2LDEyLDAsMTI0LDEsMCwxMDAsNSwwLDEwMCw2LDAsCi0gICAgMTMxLDEsMSwxLDExNiwxMywwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMTAsMCwKLSAgICAxMDAsNywwLDEzMSwyLDAsMTE1LDI0MywwLDEyNCwwLDAsMTA2LDAsMCwxMDYsCi0gICAgMTAsMCwxMDYsMTQsMCwxMjQsMiwwLDEzMSwxLDAsMSwxMTAsMTMsMCwxMjQsCi0gICAgMCwwLDEwNiwxNSwwLDEyNCwxLDAsMTMxLDEsMCwxLDg3LDEwMCwzLDAsCi0gICAgODEsODgsMTE2LDUsMCwxMDYsNiwwLDEyNCwyLDAsMjUsODMsNDEsOCwxMjIsCi0gICAgNTEsNjksMTIwLDEwMSw5OSwxMTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSwKLSAgICA5OSwzMiwxMDUsMTEwLDMyLDk3LDExMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDEwNSwxMTAsMTAzLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLAotICAgIDk3LDk5LDEwMSw0NiwxMjIsMzAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwKLSAgICAxMjUsMzIsMTEwLDExMSwxMTYsMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTUsMTE0LDY3LDAsMCwwLDc4LDEyMiwxNCwxMDksMTA1LDExNSwxMTUsCi0gICAgMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTQsMjQ5LDAsMCwwLDg0LAotICAgIDExNCwyLDEsMCwwLDQxLDE2LDExNCwxNzgsMCwwLDAsMTE0LDY3LDAsMCwKLSAgICAwLDExNCwxMDYsMCwwLDAsMjE4LDEyLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsOTUsCi0gICAgMTA4LDExMSw5OSwxMDcsMTE0LDEwMywwLDAsMCwxMTQsNywwLDAsMCwxMTQsNzMsCi0gICAgMCwwLDAsMTE0LDkzLDAsMCwwLDExNCw0NywwLDAsMCwxMTQsMTU0LDAsCi0gICAgMCwwLDExNCwxNzAsMCwwLDAsMTE0LDIyMSwwLDAsMCwxMTQsMjU1LDAsMCwKLSAgICAwLDExNCw2MCwwLDAsMCwyMTgsMTEsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTE0LDMsMSwwLDAsNDEsNCwxMTQsNzEsMCwwLDAsMTE0LAotICAgIDE4MCwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDE3MiwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTc2LDAsCi0gICAgMCwwLDEwOCw0LDAsMCwxMTUsMzIsMCwwLDAsMCwyLDEyLDEsMTAsCi0gICAgMSwxMywxLDI0LDEsMTUsMSwyMSwxLDE4LDEsMTgsMSwyNywyLDE5LAotICAgIDEsNCwxLDE5LDEsMjEsNCwyMiwyLDE5LDEsMTIyLDE3LDk1LDgzLDExMiwKLSAgICAxMDEsOTksNzcsMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsNDYsMTAxLDEyMCwxMDEsOTksOTksMSwKLSAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMjcsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDI0LDEsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMSwKLSAgICAwLDEyNCwxLDAsMTA2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTA2LDMsMCwKLSAgICAxMzEsMSwwLDEsMTE2LDQsMCwxMDYsNSwwLDEyNCwxLDAsMTA2LDMsMCwKLSAgICAyNSwxMjUsMiwwLDExNiw2LDAsMTI0LDIsMCwxMDAsMSwwLDEwMCwwLDAsCi0gICAgMTMxLDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEwOCwwLDEyMSwxNiwwLDEyNCwKLSAgICAxLDAsMTA2LDEsMCwxMjQsMiwwLDk1LDcsMCw4NywxMTMsMTA4LDAsNCwKLSAgICAxMTYsOCwwLDEwNywxMCwwLDExNCwxMDQsMCwxLDEsMSw4OSwxMTMsMTA4LDAsCi0gICAgODgsMTEwLDAsMCwxMTYsNiwwLDEyNCwyLDAsMTAwLDIsMCwxMDAsMCwwLAotICAgIDEzMSwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwyMTUsMCwxMjEsNTksMCwxMjQsCi0gICAgMiwwLDEwNiw5LDAsMTI0LDIsMCw5NSwxMCwwLDExNiwxMSwwLDEyNCwyLAotICAgIDAsMTAwLDMsMCwxMzEsMiwwLDExNSwxOTAsMCwxMjQsMSwwLDEwNiwzLDAsCi0gICAgMTA2LDEyLDAsMTAwLDQsMCwxMzEsMSwwLDEwMCw1LDAsMjUsMTI0LDIsMCwKLSAgICA5NSwxMCwwLDExMCwwLDAsODcsMTEzLDIxNSwwLDQsMTE2LDgsMCwxMDcsMTAsCi0gICAgMCwxMTQsMjExLDAsMSwxLDEsODksMTEzLDIxNSwwLDg4LDExMCwwLDAsMTE2LAotICAgIDYsMCwxMjQsMiwwLDEwMCw2LDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLAotICAgIDAsMTA3LDgsMCwxMTQsMjAsMSwxMjEsMTMsMCwxMjQsMSwwLDEyNCwyLDAsCi0gICAgOTUsMTMsMCw4NywxMTMsMjAsMSw0LDExNiw4LDAsMTA3LDEwLDAsMTE0LDE2LAotICAgIDEsMSwxLDEsODksMTEzLDIwLDEsODgsMTEwLDAsMCwxMjQsMiwwLDgzLAotICAgIDQxLDcsNzgsMTE0LDIwNSwwLDAsMCwxMTQsMjUxLDAsMCwwLDExNCwyNDcsMCwKLSAgICAwLDAsMTE0LDExNiwwLDAsMCwxMTQsODQsMCwwLDAsMTE0LDIwOSwwLDAsCi0gICAgMCw0MSwxNCwxMTQsMTc4LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDUsMSwKLSAgICAwLDAsMTE0LDY3LDAsMCwwLDExNCw3LDAsMCwwLDExNCw3MywwLDAsCi0gICAgMCwxMTQsNjIsMCwwLDAsMTE0LDIwNSwwLDAsMCwxMTQsMjEwLDAsMCwwLAotICAgIDExNCw1NywwLDAsMCwxMTQsMjUxLDAsMCwwLDExNCw2MCwwLDAsMCwxMTQsCi0gICAgMzIsMCwwLDAsMTE0LDIwOSwwLDAsMCw0MSwzLDExNCw3MSwwLDAsMCwKLSAgICAxMTQsMTc4LDAsMCwwLDExNCwxODAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDI1LDk1LDEwOCwxMTEsOTcsMTAwLAotICAgIDk1LDk4LDk3LDk5LDEwNywxMTksOTcsMTE0LDEwMCw5NSw5OSwxMTEsMTA5LDExMiw5NywxMTYsCi0gICAgMTA1LDk4LDEwOCwxMDEsMTMyLDQsMCwwLDExNSw0MiwwLDAsMCwwLDQsOSwKLSAgICAxLDE5LDIsMTYsMSwyNCwxLDMsMSwxNiwxLDEzLDEsOCwxLDI0LAotICAgIDEsMyw0LDEyLDEsMTUsMSwzMiwxLDEzLDEsOCwxLDI0LDEsMywKLSAgICAxLDEzLDEsMTMsMSw4LDEsMTIyLDM4LDk1LDgzLDExMiwxMDEsOTksNzcsMTAxLAotICAgIDExNiwxMDQsMTExLDEwMCwxMTUsNDYsOTUsMTA4LDExMSw5NywxMDAsOTUsOTgsOTcsOTksMTA3LAotICAgIDExOSw5NywxMTQsMTAwLDk1LDk5LDExMSwxMDksMTEyLDk3LDExNiwxMDUsOTgsMTA4LDEwMSw5OSwKLSAgICAxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMTc5LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsCi0gICAgMSwwLDEwMCwwLDAsMTA3LDksMCwxMTQsNTIsMCwxMTYsMiwwLDEyNCwwLAotICAgIDAsMTA2LDAsMCwxMDYsMSwwLDEwMCwxLDAsMTMxLDIsMCwxMTUsNTIsMCwKLSAgICAxMjQsMCwwLDEwNiwzLDAsMTMxLDAsMCw4MywxMTAsMCwwLDEyNCwwLDAsCi0gICAgMTA2LDQsMCwxMzEsMCwwLDEyNSwxLDAsMTE2LDUsMCwxMjQsMSwwLDEzMSwKLSAgICAxLDAsMTQzLDg0LDAsMSwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsMCwxMDAsCi0gICAgMCwwLDEwNyw4LDAsMTE0LDE0MywwLDEyNCwwLDAsMTA2LDAsMCwxMDYsNiwKLSAgICAwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMTU2LDAsMTE2LDcsMCwxMDAsMiwwLAotICAgIDEwMCwzLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiw4LDAsMTMxLDEsMSwxMzAsCi0gICAgMSwwLDExMywxNTYsMCwxMTAsMTMsMCwxMjQsMCwwLDEwNiw5LDAsMTI0LDEsCi0gICAgMCwxMzEsMSwwLDEsODcsMTAwLDAsMCw4MSw4OCwxMTYsMTAsMCwxMDYsMTEsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDgsMCwyNSw4Myw0MSw0LDc4LDExNCwKLSAgICAyLDEsMCwwLDEyMiwxNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCwxMTQsNjcsMCwwLDAsNDEsMTIsMTE0LDE3OCwwLDAsMCwKLSAgICAxMTQsMTcwLDAsMCwwLDExNCw2MCwwLDAsMCwxMTQsNiwxLDAsMCwxMTQsCi0gICAgMSwxLDAsMCwxMTQsMjEzLDAsMCwwLDExNCwyMjEsMCwwLDAsMTE0LDE1NCwKLSAgICAwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDMsMSwwLDAsMTE0LDcsMCwKLSAgICAwLDAsMTE0LDczLDAsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLDExNCwxODAsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMjE4LDE0LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsCi0gICAgMTAxLDEwMCwxNjIsNCwwLDAsMTE1LDIwLDAsMCwwLDAsMiwxOCwyLDIxLAotICAgIDEsMTMsMiwxMiwxLDEzLDEsMTgsMSwxOCwxLDMwLDMsMTksNSwxMjIsCi0gICAgMjcsOTUsODMsMTEyLDEwMSw5OSw3NywxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSw0Niw5NSwxMDgsCi0gICAgMTExLDk3LDEwMCw5NSwxMTcsMTEwLDEwOCwxMTEsOTksMTA3LDEwMSwxMDAsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsOCwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsNDksMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMSwKLSAgICAxMTYsMiwwLDEyNCwwLDAsMTA2LDMsMCwxMDYsNCwwLDEzMSwxLDAsMTQzLAotICAgIDE1LDAsMSwxMjQsMCwwLDEwNiw1LDAsMTMxLDAsMCw4Myw4NywxMDAsMSwKLSAgICAwLDgxLDg4LDEwMCwxLDAsODMsNDEsMiwxMjIsMjA3LDgyLDEwMSwxMTYsMTE3LDExNCwKLSAgICAxMTAsMzIsOTcsMzIsMTEwLDEwMSwxMTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLAotICAgIDk4LDEwNiwxMDEsOTksMTE2LDQ0LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsOTgsMTIxLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwxMDgsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywKLSAgICAxMDAsMTAwLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiwxMTIsOTcsMTE0LDEwMSwKLSAgICAxMTAsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwKLSAgICA5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTQsMTAxLAotICAgIDk3LDEwMCwxMjEsMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwxMTUsNDQsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMDUsMTEwLAotICAgIDEwMywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDMsMTAxLDExNiwxMTUsMTAsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsOTksMTA4LDExMSw5OCw5OCwxMDEsMTE0LDEwMSwxMDAsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsNiwxMTQsMTA2LDAsCi0gICAgMCwwLDExNCw0LDEsMCwwLDExNCwxMDMsMCwwLDAsMTE0LDE3OCwwLDAsCi0gICAgMCwxMTQsNjcsMCwwLDAsMTE0LDcsMSwwLDAsNDEsMSwxMTQsNzEsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAotICAgIDAsMTE0LDE3NywwLDAsMCwxODUsNCwwLDAsMTE1LDYsMCwwLDAsMCwKLSAgICA5LDEwLDEsMTksMSwxMjIsMTcsOTUsODMsMTEyLDEwMSw5OSw3NywxMDEsMTE2LDEwNCwKLSAgICAxMTEsMTAwLDExNSw0NiwxMDgsMTExLDk3LDEwMCw3OCw0MSwxMywxMTQsNTcsMCwwLDAsCi0gICAgMTE0LDU2LDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNTksMCwwLDAsMTE0LAotICAgIDcyLDAsMCwwLDExNCwyMDYsMCwwLDAsMTE0LDI1NSwwLDAsMCwxMTQsMSwKLSAgICAxLDAsMCwxMTQsMywxLDAsMCwxMTQsMTc2LDAsMCwwLDExNCw2LDEsCi0gICAgMCwwLDExNCw3LDEsMCwwLDExNCwxNzcsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCi0gICAgMTE0LDE3NSwwLDAsMCwyMjUsMywwLDAsMTE1LDIwLDAsMCwwLDEyLDMsCi0gICAgNiw0LDEyLDMsMTIsMTYsMjQsODAsMTIsMjMsMTIsMTAsMTIsMjQsMTIsMzAsCi0gICAgMTIsMjMsMTE0LDE3NSwwLDAsMCw5OSw0LDAsMCwwLDAsMCwwLDAsCi0gICAgNiwwLDAsMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsMjAxLDAsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEzMSwxLDAsMTI1LDQsMCwKLSAgICAxMjQsMCwwLDEwNiwwLDAsMTAwLDIsMCwxMzEsMSwwLDEyNSw1LDAsMTI0LAotICAgIDQsMCwxMTUsMTAyLDAsMTI0LDUsMCwxMTQsNTQsMCwxMjQsNSwwLDEwNiwxLAotICAgIDAsMTI1LDQsMCwxMTMsMTAyLDAsMTI0LDIsMCwxMjQsMywwLDEwNywyLDAsCi0gICAgMTE0LDg0LDAsMTE2LDIsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsCi0gICAgNCwwLDExMywxMDIsMCwxMTYsMywwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwKLSAgICAwLDEyNSw0LDAsMTEwLDAsMCwxMjQsNSwwLDExNSwxMzIsMCwxMTYsNCwwLAotICAgIDEyNCwxLDAsMTI0LDIsMCwxMDAsMywwLDEyNCw0LDAsMTMxLDIsMSwxMjUsCi0gICAgNSwwLDExMCwwLDAsMTIxLDQ0LDAsMTI0LDUsMCwxMjQsMCwwLDEwMCwyLAotICAgIDAsNjAsMTI0LDQsMCwxMjQsMCwwLDEwMCwxLDAsNjAsMTI0LDIsMCwxMjQsCi0gICAgMCwwLDEwMCw0LDAsNjAsMTI0LDMsMCwxMjQsMCwwLDEwMCw1LDAsNjAsCi0gICAgODcsMTEwLDE4LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxOTYsMCwxLDEsCi0gICAgMSw4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsNiw3OCwxMTQsMjA1LDAsCi0gICAgMCwwLDExNCwyMDksMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsMjExLDAsMCwKLSAgICAwLDExNCwyNDUsMCwwLDAsNDEsNiwxMTQsOTMsMCwwLDAsMTE0LDE3MCwwLAotICAgIDAsMCwyMTgsMjAsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMjE4LDE2LDgzLDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICA3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE0LDI0MCwwLDAsMCwxMTQsCi0gICAgMjA4LDAsMCwwLDQxLDYsOTAsMiwxMTAsMTE1LDExNCw2NywwLDAsMCw5MCwKLSAgICA4LDExMiw5NywxMTYsMTA0LDExMCw5NywxMDksMTAxLDkwLDksOTksMTEyLDk3LDExNiwxMDQsCi0gICAgMTEwLDk3LDEwOSwxMDEsMTE0LDE3MCwwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNCw5NSwKLSAgICAxMDIsMTA1LDEyMCw5NSwxMTcsMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE5OSw0LDAsCi0gICAgMCwxMTUsMzQsMCwwLDAsMCwyLDE1LDEsMTUsMSw2LDEsNiwxLAotICAgIDEyLDEsMTIsMSwxOCwyLDE4LDEsNiwxLDI0LDEsMywxLDEwLDEsCi0gICAgMTAsMSwxMCwxLDE0LDEsMTMsMiwxMTQsMTAsMSwwLDAsOTksMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw2NCwwLAotICAgIDAsMCwxMTUsMTgxLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsCi0gICAgOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLDIsMCwxMDAsCi0gICAgMywwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDYsMCwxMDAsNCwKLSAgICAwLDEwMCw0LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwyLDAsMTMxLDEsMCwKLSAgICA5MCw3LDAsMTAxLDYsMCwxMDAsNCwwLDEwMCw3LDAsMTAwLDgsMCwxMzIsCi0gICAgMSwwLDEzMSwxLDAsOTAsOCwwLDEwMSw2LDAsMTAxLDksMCwxMDAsOSwKLSAgICAwLDEwMCwxMCwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsMSwwLDkwLDEwLDAsCi0gICAgMTAxLDYsMCwxMDEsOSwwLDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwwLDAsMTMxLAotICAgIDEsMCwxMzEsMSwwLDkwLDExLDAsMTAxLDYsMCwxMDEsOSwwLDEwMCwxMywKLSAgICAwLDEwMCwxNCwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsMSwwLDkwLDEyLDAsCi0gICAgMTAxLDYsMCwxMDEsOSwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwwLDAsMTMxLAotICAgIDEsMCwxMzEsMSwwLDkwLDEzLDAsMTAwLDQsMCw4Myw0MSwxNywyMTgsMTUsCi0gICAgNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDEyMiwKLSAgICAxNDQsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwzMiwxMDIsMTExLDExNCwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTA4LDEwOCwKLSAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMDEsMTA1LDExNiwKLSAgICAxMDQsMTAxLDExNCwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTE0LDMyLDExNSwxMTYsOTcsCi0gICAgMTE2LDEwNSw5OSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsMTE2LDExMSwzMiw5NywKLSAgICAxMTgsMTExLDEwNSwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsCi0gICAgMTAsMzIsMzIsMzIsMzIsMTA1LDExMCwxMTUsMTE2LDk3LDExMCwxMTYsMTA1LDk3LDExNiwxMDEsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDk3LDExNSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQxLDIsMTIyLDExNSw4MiwKLSAgICAxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwKLSAgICAxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwKLSAgICAxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwKLSAgICAxMDEsMTE0LDEyMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA2LDExMSw5OCwKLSAgICAzMiwxMDUsMTE2LDExNSwxMDEsMTA4LDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwxMjIsMjQsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsCi0gICAgMzIsNDAsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsNDEsNjIsNDEsMiwxMTQsNDcsCi0gICAgMCwwLDAsMTE0LDU3LDAsMCwwLDQxLDEsMTE0LDE4MCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjA2LAotICAgIDAsMCwwLDIzMyw0LDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI3LAotICAgIDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsNzgsOTksNCwwLDAsCi0gICAgMCwwLDAsMCwwLDQsMCwwLDAsNSwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsNTgsMCwwLDAsMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LAotICAgIDE2LDAsMTAwLDAsMCw4MywxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDExNCw1MCwwLDExNiwyLDAsMTI0LDEsMCwxMjQsMCwwLDEwMCwxLAotICAgIDAsMTAwLDIsMCwxMzEsMiwxLDgzLDEwMCwwLDAsODMsMTAwLDAsMCw4MywKLSAgICA0MSwzLDc4LDExNCwyMTgsMCwwLDAsMTIyLDgsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LAotICAgIDEwNSwxMTAsNDEsMywxMTQsMTA2LDAsMCwwLDkwLDEwLDEwNSwxMTUsOTUsOTgsMTE3LAotICAgIDEwNSwxMDgsMTE2LDEwNSwxMTAsMTE0LDE3NCwwLDAsMCw0MSw0LDIxOCwzLDk5LDEwOCwKLSAgICAxMTUsMTE0LDE1OSwwLDAsMCwxMTQsMzUsMCwwLDAsMjE4LDYsMTE2LDk3LDExNCwKLSAgICAxMDMsMTAxLDExNiwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwyMTgsOSwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksMjQyLDQsMCwKLSAgICAwLDExNSwxMCwwLDAsMCwwLDIsMTIsMSw0LDEsMTUsMSwxOSwyLAotICAgIDEyMiwyNSw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKLSAgICAxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsMCwwLDAsCi0gICAgMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDQxLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEyNCwyLAotICAgIDAsMTMxLDIsMCwxMjUsMywwLDEyNCwzLDAsMTAwLDEsMCwxMDcsOSwwLAotICAgIDExNCwzNywwLDEyNCwzLDAsMTA2LDEsMCw4MywxMDAsMSwwLDgzLDQxLDIsCi0gICAgMTIyLDE3NSw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsCi0gICAgNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMzksMTEyLDk3LDExNiwxMDQsMzksMzIsMTA1LAotICAgIDExNSwzMiwxMDEsMTE4LDEwMSwxMTQsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwKLSAgICAzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LAotICAgIDMyLDEwNSwxMTUsMzIsOTksMTExLDExMCwxMTUsMTA1LDEwMCwxMDEsMTE0LDEwMSwxMDAsMzIsOTcsCi0gICAgMzIsMTAyLDk3LDEwNSwxMDgsMTE3LDExNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LAotICAgIDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LAotICAgIDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwKLSAgICAxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDc4LDQxLDIsMTE0LDE0LDEsMCwwLDExNCwxNzAsMCwwLDAsNDEsNCwKLSAgICAxMTQsMTIsMSwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LAotICAgIDE3OCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwyMTgsMTEsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDI1MSw0LDAsMCwxMTUsNCwwLDAsMCwwLDksMTgsMSwxMjIsMjcsNjYsCi0gICAgMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMiwKLSAgICAxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsCi0gICAgMCwwLDAsMywwLDAsMCwxMCwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgNTksMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTQzLDIzLDAsCi0gICAgMSwxMTYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwyLDAsCi0gICAgMTI1LDIsMCw4NywxMDAsMSwwLDgxLDg4LDEyNCwwLDAsMTI0LDIsMCw5NSwKLSAgICA0LDAsMTAwLDIsMCwxMjQsMiwwLDk1LDUsMCwxMjQsMiwwLDgzLDQxLAotICAgIDMsMTIyLDIzLDc2LDExMSw5NywxMDAsMzIsOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LAotICAgIDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsMTE0LDMwLDAsMCwwLAotICAgIDQxLDYsMTE0LDY5LDAsMCwwLDExNCwxMTQsMCwwLDAsMTE0LDEwNiwwLDAsCi0gICAgMCw5MCwxMiwxMDUsMTEwLDEwNSwxMTYsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsMTE0LAotICAgIDIwNSwwLDAsMCwxMTQsMjUxLDAsMCwwLDQxLDMsMTE0LDEyLDEsMCwwLAotICAgIDExNCwxNTksMCwwLDAsMTE0LDE4MCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNSwxLDAsMCw3LDUsCi0gICAgMCwwLDExNSwxMCwwLDAsMCwwLDYsMTMsMSwyNCwxLDksMSw5LAotICAgIDEsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLAorICAgIDQsMCwxMjQsMSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMTA1LDAsMTIxLDEzLAorICAgIDAsMTI0LDAsMCwxMDYsMywwLDEyNSwxLDAsODcsMTEwLDE4LDAsNCwxMTYsCisgICAgMSwwLDEwNywxMCwwLDExNCwxMDQsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LAorICAgIDEyMSwxMywwLDEyNCwwLDAsMTA2LDQsMCwxMjUsNSwwLDg3LDExMCwyNCwwLAorICAgIDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsMTQ0LDAsMSwxLDEsMTAwLDAsMCwKKyAgICAxMjUsNSwwLDg5LDExMCwxLDAsODgsMTI0LDIsMCwxMDAsMCwwLDEwNyw4LAorICAgIDAsMTE0LDIxOCwwLDEyNCw1LDAsMTAwLDAsMCwxMDcsOCwwLDExNCwyMTIsMCwKKyAgICAxMjEsMTMsMCwxMjQsMSwwLDEwNiw1LDAsMTI1LDIsMCw4NywxMTMsMjE4LDAsCisgICAgNCwxMTYsMSwwLDEwNywxMCwwLDExNCwyMDgsMCwxLDEsMSwxMDAsMCwwLAorICAgIDEyNSwyLDAsODksMTEzLDIxOCwwLDg4LDExMCw2LDAsMTI0LDUsMCwxMjUsMiwKKyAgICAwLDEyMSwxMywwLDEyNCwwLDAsMTA2LDYsMCwxMjUsNiwwLDg3LDExMCwyNCwKKyAgICAwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsMSwxLDEsMSwxLDEwMCwwLAorICAgIDAsMTI1LDYsMCw4OSwxMTAsMSwwLDg4LDEyMSwxOSwwLDExNiw3LDAsMTI0LAorICAgIDAsMCwxMDYsOCwwLDEzMSwxLDAsMTI1LDcsMCw4NywxMTAsMjQsMCw0LAorICAgIDExNiwxLDAsMTA3LDEwLDAsMTE0LDQ3LDEsMSwxLDEsMTAwLDAsMCwxMjUsCisgICAgNywwLDg5LDExMCwxLDAsODgsMTE2LDksMCwxMjQsNCwwLDEyNCwxLDAsCisgICAgMTAwLDEsMCwxMjQsMiwwLDEzMSwyLDEsMTI1LDMsMCwxMjQsNSwwLDEwMCwKKyAgICAwLDAsMTA3LDgsMCwxMTQsODcsMSwxMDAsMiwwLDExMCwzLDAsMTAwLDMsCisgICAgMCwxMjQsMywwLDk1LDEwLDAsMTI0LDYsMCwxMjQsMywwLDk1LDExLDAsCisgICAgMTI0LDcsMCwxMjQsMywwLDk1LDEyLDAsMTI0LDMsMCw4Myw0MSw0LDc4LAorICAgIDExNCwxMDcsMCwwLDAsNzAsODQsNDEsMTMsMTE0LDk1LDAsMCwwLDExNCw5NiwKKyAgICAwLDAsMCwxMTQsMSwwLDAsMCwxMTQsOTEsMCwwLDAsMTE0LDk4LDAsCisgICAgMCwwLDkwLDcsOTUsNzksODIsNzMsNzEsNzMsNzgsMjE4LDEwLDk1LDk1LDk5LAorICAgIDk3LDk5LDEwNCwxMDEsMTAwLDk1LDk1LDIxOCw0LDEwOCwxMDUsMTE1LDExNiwyMTgsOCw5NSwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMTQsMTA2LDAsMCwwLDExNCwxMTEsMCwwLAorICAgIDAsMTE0LDExNiwwLDAsMCwxMTQsMTEwLDAsMCwwLDQxLDgsMTE0LDg5LDAsCisgICAgMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCw4OCwwLDAsCisgICAgMCwxMTQsMTUsMCwwLDAsOTAsOCwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwKKyAgICAxMTQsMTE2LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE3LDk1LDExNSwxMTIsMTAxLDk5LAorICAgIDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyMDksMSwwLDAsCisgICAgMTE1LDcyLDAsMCwwLDAsMiwzLDEsMTMsMSwxMywxLDUsMiwxMiwKKyAgICAxLDQsMiw5LDEsMTIsMSwzLDEsMTMsMSwxMywyLDUsMSwzLAorICAgIDEsMTMsMSwxMywxLDExLDEsMTIsMSwxMiwxLDMsMSwxMywxLDEzLAorICAgIDEsMTQsMiw2LDEsMywxLDEzLDEsMTMsMSwxMSwxLDMsMSwxOSwKKyAgICAxLDEzLDEsMTEsMiwyMSwxLDI3LDEsOSwxLDksMSwxMTQsMTMyLDAsCisgICAgMCwwLDIxOCw4LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsNzAsOTksMiwwLAorICAgIDAsMCwxLDAsMCwwLDUsMCwwLDAsNTksMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDU0LDIsMCwwLDEyNCwyLDAsMTE1LDMwLDAsMTE2LDAsMCwKKyAgICAxMjQsMSwwLDEwMCwxLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LAorICAgIDgsMCwxMTQsNjcsMCwxMjEsMTYsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsCisgICAgMCw5NSwyLDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwKKyAgICA2NiwwLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDIsMCwxMTUsOTcsMCwKKyAgICAxMTYsMCwwLDEyNCwxLDAsMTAwLDIsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLAorICAgIDAsMCwxMDcsOCwwLDExNCwyMjEsMCwxMjQsMCwwLDEwNiw0LDAsMTI1LDMsCisgICAgMCwxMjQsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMTg3LDAsMTI0LDAsMCwKKyAgICAxMDYsNSwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTg3LDAsMTE2LDYsMCwxMDAsCisgICAgMCwwLDEwNyw4LDAsMTE0LDE1MSwwLDExNiw3LDAsMTMwLDEsMCwxMTYsNiwKKyAgICAwLDEwNiw4LDAsMTI1LDQsMCwxMjQsNCwwLDEwNiw5LDAsMTI0LDQsMCwKKyAgICAxMzEsMSwwLDEyNSwzLDAsMTI0LDAsMCwxMDYsNSwwLDEyNCwzLDAsOTUsCisgICAgMTAsMCwxMjEsMTMsMCwxMjQsMywwLDEyNCwxLDAsOTUsMTEsMCw4NywxMTAsCisgICAgMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDIyMCwwLDEsMSwxLDg5LAorICAgIDExMCwxLDAsODgsMTI0LDIsMCwxMTUsMjUxLDAsMTE2LDAsMCwxMjQsMSwwLAorICAgIDEwMCwzLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsCisgICAgMzIsMSwxMjEsMTYsMCwxMjQsMCwwLDEwNiwxMiwwLDEyNCwxLDAsOTUsMTMsCisgICAgMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDMxLDEsMSwKKyAgICAxLDEsODksMTEwLDEsMCw4OCwxMjEsMTMsMCwxMjQsMCwwLDEyNCwxLDAsCisgICAgOTUsMTQsMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDY1LAorICAgIDEsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMiwwLDExNSw5NiwxLDExNiwKKyAgICAwLDAsMTI0LDEsMCwxMDAsNCwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwKKyAgICAwLDEwNyw4LDAsMTE0LDE0OCwxLDEyNCwwLDAsMTA2LDUsMCwxMDAsMCwwLAorICAgIDEwNyw5LDAsMTE0LDE0OCwxLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDUsMCwxMjQsCisgICAgMSwwLDk1LDE1LDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLAorICAgIDExNCwxNDcsMSwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwwLDAsMTA2LDE2LAorICAgIDAsMTE0LDUwLDIsMTI0LDIsMCwxMTUsMTg3LDEsMTE2LDAsMCwxMjQsMSwwLAorICAgIDEwMCw1LDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsCisgICAgMjI0LDEsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMTcsMCwxMjQsMSwwLDk1LDE4LAorICAgIDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwyMjMsMSwxLAorICAgIDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsMTE1LDI1NCwxLDExNiwwLDAsCisgICAgMTI0LDEsMCwxMDAsNiwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNywKKyAgICA4LDAsMTE0LDUwLDIsMTI0LDAsMCwxMDYsMTksMCwxMDAsMCwwLDEwNyw5LAorICAgIDAsMTE0LDUwLDIsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMTksMCwxMjQsMSwwLAorICAgIDk1LDIwLDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCw0OSwKKyAgICAyLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDEsMCw4Myw0MSw3LDc4LAorICAgIDExNCwxLDAsMCwwLDExNCw5MSwwLDAsMCwyMTgsMTEsOTUsOTUsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDExNCwxMzEsMCwwLDAsMTE0LDk4LDAsMCwKKyAgICAwLDExNCwxMjksMCwwLDAsNDEsMjEsMTE0LDYsMCwwLDAsMTE0LDE1LDAsCisgICAgMCwwLDExNCwxLDAsMCwwLDExNCw5NiwwLDAsMCwxMTQsOTksMCwwLAorICAgIDAsMTE0LDExMCwwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCwxMjAsMCwwLDAsCisgICAgMjE4LDE2LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDIxOCw3LDk1LDk1LDExMCwxMDEsMTE5LDk1LDk1LDkwLDUsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsMTE0LDkxLDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDEzNCwwLDAsCisgICAgMCwxMTQsOTUsMCwwLDAsMTE0LDEzMSwwLDAsMCwxMTQsMTE3LDAsMCwwLAorICAgIDExNCwxMDcsMCwwLDAsMTE0LDk4LDAsMCwwLDExNCwxMTYsMCwwLDAsMTE0LAorICAgIDEyOSwwLDAsMCw0MSw1LDExNCw4OCwwLDAsMCwxMTQsODksMCwwLDAsCisgICAgMTE0LDEzMywwLDAsMCwxMTQsOTksMCwwLDAsMTE0LDEzNSwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTgsCisgICAgOTUsMTA1LDExMCwxMDUsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk3LDExNiwxMTYsCisgICAgMTE0LDExNSwyNTQsMSwwLDAsMTE1LDkyLDAsMCwwLDAsNCwzMCwxLDMsCisgICAgMSwxNiwxLDEzLDEsNSwyLDMwLDEsOSwxLDEyLDIsMTUsMSwxMiwKKyAgICAxLDYsMSw5LDIsMTUsMSwxMiwxLDMsMSwxMywxLDEzLDEsNSwKKyAgICAyLDMwLDEsMywxLDE2LDEsMTMsMSw1LDIsMywxLDEzLDEsMTMsCisgICAgMSw1LDIsMzAsMSwxNSwxLDMsMSwxNiwxLDEzLDEsNSwyLDksCisgICAgMSwzMCwxLDMsMSwxNiwxLDEzLDEsNSwyLDMwLDEsMTUsMSwzLAorICAgIDEsMTYsMSwxMywxLDUsMSwxMTQsMTM3LDAsMCwwLDk5LDEsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDUsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDEyOSwwLDAsMCwxMDAsMSwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsCisgICAgMCwwLDEwNiwxLDAsMTAwLDIsMCwxMzEsMiwwLDExNCw0NSwwLDEyNCwwLAorICAgIDAsMTA2LDEsMCwxMDYsMiwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsMSwwLAorICAgIDExMCw0MCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEwMCwzLDAsMTMxLAorICAgIDIsMCwxMTQsODUsMCwxMTYsMywwLDEwNiw0LDAsMTAwLDQsMCwxMTYsNSwKKyAgICAwLDEwMCw1LDAsMTAwLDYsMCwxMzEsMiwxLDEsMTI0LDEsMCwxMDAsMSwKKyAgICAwLDEwNyw4LDAsMTE0LDExMiwwLDExNiw2LDAsMTI0LDAsMCwxMDYsNywwLAorICAgIDEzMSwxLDAsMTI1LDEsMCwxMTYsOCwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsCisgICAgMiwwLDEsMTI0LDEsMCw4Myw0MSw3LDEyMiw0Myw2NywxMTQsMTAxLDk3LDExNiwKKyAgICAxMDEsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsOTcsMTE1LDEwMSwxMDAsCisgICAgMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTE0LDExMSwxMTgsMTA1LDEwMCwxMDEsMTAwLAorICAgIDMyLDExNSwxMTIsMTAxLDk5LDQ2LDc4LDIxOCwxMyw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjE4LDExLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDEyMiw4NywxMTUsMTE2LDk3LDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTA1LDExMCwKKyAgICAzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDUxLDQ2LDU0LDQ0LDMyLDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMTE1LDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTA1LDExMCwxMDMsMzIsMTAxLDEyMCwKKyAgICAxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA5LDExNywxMTUsMTE2LAorICAgIDMyLDk3LDEwOCwxMTUsMTExLDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTAxLDMyLDk5LDExNCwxMDEsCisgICAgOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSw5MCwxMCwxMTUsMTE2LAorICAgIDk3LDk5LDEwNywxMDgsMTAxLDExOCwxMDEsMTA4LDIzMywyLDAsMCwwLDQxLDksMTE0LAorICAgIDQsMCwwLDAsMTE0LDk5LDAsMCwwLDExNCwxMzgsMCwwLDAsMjE4LDksCisgICAgOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LDIxOCw0LDExOSw5NywxMTQsMTEwLDIxOCwKKyAgICAxOCw2OCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDg3LDk3LDExNCwxMTAsCisgICAgMTA1LDExMCwxMDMsMTE0LDE2LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTM3LDAsCisgICAgMCwwLDQxLDIsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTYsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNSwxMTIsMTAxLDk5LDU4LAorICAgIDIsMCwwLDExNSwyMCwwLDAsMCwwLDMsNiwxLDE4LDMsMjEsMSwKKyAgICAxOCwxLDksMiwxMywxLDEyLDEsMTUsMSwxMywxLDExNCwxNDQsMCwwLAorICAgIDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMTQ5LDAsMCwwLDEyNCwwLDAsMTA2LDAsCisgICAgMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDIxLDAsMTAwLDIsMCwxMTAsNiwwLAorICAgIDEyNCwwLDAsMTA2LDAsMCwxMjUsMSwwLDEyNCwwLDAsMTA2LDEsMCwxMDAsCisgICAgMSwwLDEwNyw4LDAsMTE0LDk1LDAsMTI0LDAsMCwxMDYsMiwwLDEwMCwxLAorICAgIDAsMTA3LDgsMCwxMTQsNzMsMCwxMDAsMywwLDEwNiwzLDAsMTI0LDEsMCwKKyAgICAxMzEsMSwwLDgzLDEwMCw0LDAsMTA2LDMsMCwxMjQsMSwwLDEyNCwwLDAsCisgICAgMTA2LDIsMCwxMzEsMiwwLDgzLDExMCw1MCwwLDEyNCwwLDAsMTA2LDQsMCwKKyAgICAxMTQsMTIzLDAsMTAwLDUsMCwxMDYsMywwLDEyNCwxLDAsMTI0LDAsMCwxMDYsCisgICAgMSwwLDEzMSwyLDAsODMsMTAwLDYsMCwxMDYsMywwLDEyNCwwLDAsMTA2LAorICAgIDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDIsMCw4MywxMDAsMSwwLDgzLAorICAgIDQxLDcsMTIyLDM4LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LAorICAgIDEwMSwxMTIsMTE0LDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsMTE0LDkzLDAsMCwwLAorICAgIDEyMiwxMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw2MiwxMjIsCisgICAgMjAsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTIzLAorICAgIDMzLDExNCwxMjUsNDEsNjIsMTIyLDIzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywKKyAgICAzMywxMTQsMTI1LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSw2MiwxMjIsMTgsCisgICAgNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTIzLDEyNSwKKyAgICA0MSw2Miw0MSw1LDExNCwxNSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCw5OSwKKyAgICAwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDExNywwLDAsMCw0MSwyLDExNCwKKyAgICA4OCwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDk3LDAsMCwwLDc2LDIsMCwKKyAgICAwLDExNSwxNiwwLDAsMCwwLDMsMzAsMSwxNSwxLDE1LDEsMTMsMiwKKyAgICAyMiwyLDksMSwxOSwyLDExNCw5NywwLDAsMCw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsNCwwLDAsMCwxMiwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMjUzLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMiwwLDExNiwxLAorICAgIDAsMTA2LDIsMCwxMzEsMCwwLDEsMTE2LDMsMCwxMjQsMiwwLDEzMSwxLAorICAgIDAsMTQzLDIwOCwwLDEsMTE2LDQsMCwxMDYsNSwwLDEwNiw2LDAsMTI0LDIsCisgICAgMCwxMzEsMSwwLDEyNCwxLDAsMTA3LDksMCwxMTQsODksMCwxMDAsMSwwLAorICAgIDEwNiw3LDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsMTE2LDgsMCwxMjQsCisgICAgMywwLDEwMCwyLDAsMTI0LDIsMCwxMzEsMSwxLDEzMCwxLDAsMTI0LDAsCisgICAgMCwxMDYsOSwwLDEwMCwzLDAsMTA3LDgsMCwxMTQsMTYzLDAsMTI0LDAsMCwKKyAgICAxMDYsMTAsMCwxMDAsMywwLDEwNyw4LDAsMTE0LDE0MCwwLDExNiw4LDAsMTAwLAorICAgIDQsMCwxMDAsMiwwLDEyNCwwLDAsMTA2LDAsMCwxMzEsMSwxLDEzMCwxLAorICAgIDAsMTE2LDExLDAsMTI0LDAsMCwxMjQsMSwwLDEwMCw1LDAsMTAwLDYsMCwKKyAgICAxMzEsMiwxLDEsMTI0LDEsMCw4MywxMTYsMTEsMCwxMjQsMCwwLDEyNCwxLAorICAgIDAsMTAwLDUsMCwxMDAsNiwwLDEzMSwyLDEsMSwxMTYsMTIsMCwxMjQsMCwKKyAgICAwLDEwNiw5LDAsMTAwLDcsMCwxMzEsMiwwLDExNSwyMTksMCwxMjQsMCwwLAorICAgIDEwNiw5LDAsMTA2LDEzLDAsMTI0LDIsMCwxMzEsMSwwLDEsMTEwLDE2LDAsCisgICAgMTI0LDAsMCwxMDYsOSwwLDEwNiwxNCwwLDEyNCwxLDAsMTMxLDEsMCwxLAorICAgIDg3LDEwMCwzLDAsODEsODIsODgsMTE2LDQsMCwxMDYsNSwwLDEyNCwyLDAsCisgICAgMjUsODMsNDEsOCwxMjIsNTEsNjksMTIwLDEwMSw5OSwxMTcsMTE2LDEwMSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiwxMDUsMTEwLDMyLDk3LDExMCwzMiwxMDEsMTIwLDEwNSwKKyAgICAxMTUsMTE2LDEwNSwxMTAsMTAzLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTAsCisgICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0NiwxMjIsMzAsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTEwLDExMSwxMTYsMzIsMTA1LDExMCwzMiwxMTUsMTIxLAorICAgIDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE0LDE1LDAsMCwwLDc4LDEyMiwKKyAgICAxNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTQsCisgICAgMTMzLDAsMCwwLDg0LDExNCwxMzksMCwwLDAsNDEsMTUsMTE0LDE1LDAsMCwKKyAgICAwLDExNCw1NywwLDAsMCwyMTgsMTIsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5NSwKKyAgICAxMDgsMTExLDk5LDEwNywxMTQsNTQsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwKKyAgICAwLDAsMCwxMTQsNDIsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCw3NywwLAorICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDExMCwwLDAsMCwxMTQsMTM3LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDIxOCwxMSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTQsMTM5LDAsMCwwLDQxLDQsMTE0LDg4LDAsMCwwLDExNCwKKyAgICA4OSwwLDAsMCwxMTQsMTUsMCwwLDAsMjE4LDMsMTA5LDExNSwxMDMsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDg2LDAsCisgICAgMCwwLDkzLDIsMCwwLDExNSwzMiwwLDAsMCwwLDIsOSwxLDEwLAorICAgIDEsMTMsMSwyNCwxLDE1LDEsMTgsMSwxNSwxLDE1LDEsMjEsMiwxOSwKKyAgICAxLDQsMSwxOSwxLDE4LDQsMTksMiwyMywxLDExNCw4NiwwLDAsMCwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyNywwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMywxLDAsMCwxMjQsMCwwLDEwNiwwLDAsCisgICAgMTA2LDEsMCwxMjQsMCwwLDEwNiwyLDAsMTMxLDEsMCwxLDExNiwzLDAsCisgICAgMTA2LDQsMCwxMjQsMCwwLDEwNiwyLDAsMjUsMTI1LDEsMCwxMTYsNSwwLAorICAgIDEyNCwxLDAsMTAwLDEsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsCisgICAgOCwwLDExNCw5NiwwLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwKKyAgICAwLDk1LDYsMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsMTA3LDEwLDAsMTE0LAorICAgIDk1LDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMTYsNSwwLDEyNCwxLDAsCisgICAgMTAwLDIsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwKKyAgICAxOTcsMCwxMjEsNTYsMCwxMjQsMSwwLDEwNiw4LDAsMTI0LDEsMCw5NSw5LAorICAgIDAsMTE2LDEwLDAsMTI0LDEsMCwxMDAsMywwLDEzMSwyLDAsMTE1LDE3NSwwLAorICAgIDEyNCwwLDAsMTA2LDIsMCwxMDYsMTEsMCwxMDAsNCwwLDEzMSwxLDAsMTAwLAorICAgIDUsMCwyNSwxMjQsMSwwLDk1LDksMCw4NywxMTAsMTgsMCw0LDExNiw3LAorICAgIDAsMTA3LDEwLDAsMTE0LDE5NiwwLDEsMSwxLDg5LDExMCwxLDAsODgsMTE2LAorICAgIDUsMCwxMjQsMSwwLDEwMCw2LDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLAorICAgIDAsMTA3LDgsMCwxMTQsMjU1LDAsMTIxLDEzLDAsMTI0LDAsMCwxMjQsMSwwLAorICAgIDk1LDEyLDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLDEwNywxMCwwLDExNCwyNTQsCisgICAgMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwxLDAsODMsNDEsNyw3OCwKKyAgICAxMTQsOTEsMCwwLDAsMTE0LDEzNCwwLDAsMCwxMTQsMTMxLDAsMCwwLDExNCwKKyAgICAxMjEsMCwwLDAsMTE0LDMzLDAsMCwwLDExNCw5NSwwLDAsMCw0MSwxMywKKyAgICAxMTQsOTksMCwwLDAsMTE0LDE0NiwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LAorICAgIDE0LDAsMCwwLDExNCwyMSwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsOTEsCisgICAgMCwwLDAsMTE0LDk2LDAsMCwwLDExNCwxLDAsMCwwLDExNCwxMzQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDEyMiwwLDAsMCwxMTQsOTUsMCwwLAorICAgIDAsNDEsMiwxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyNSw5NSwxMDgsCisgICAgMTExLDk3LDEwMCw5NSw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwxMDAsOTUsOTksMTExLDEwOSwKKyAgICAxMTIsOTcsMTE2LDEwNSw5OCwxMDgsMTAxLDExOCwyLDAsMCwxMTUsNDAsMCwwLDAsCisgICAgMCw0LDE5LDIsMTYsMSwyNCwxLDMsMSwxNiwxLDEzLDEsNSwxLAorICAgIDI0LDEsMyw0LDEyLDEsMTUsMSwyOSwxLDEzLDEsNSwxLDI0LDEsCisgICAgMywxLDEzLDEsMTMsMSw1LDEsMTE0LDE0OCwwLDAsMCw5OSwxLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTU5LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMCwwLAorICAgIDEwNyw5LDAsMTE0LDQzLDAsMTE2LDEsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLAorICAgIDEsMCwxMzEsMiwwLDExNSw0MywwLDExNiwyLDAsMTI0LDAsMCwxMzEsMSwKKyAgICAwLDgzLDExNiwzLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwxLDAsMTE2LDQsCisgICAgMCwxMjQsMSwwLDEzMSwxLDAsMTQzLDc1LDAsMSwxMjQsMCwwLDEwNiwwLAorICAgIDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxMjIsMCwxMjQsMCwwLDEwNiw1LDAsCisgICAgMTAwLDAsMCwxMDcsOCwwLDExNCwxMzgsMCwxMTYsNiwwLDEwMCwyLDAsMTAwLAorICAgIDMsMCwxMjQsMCwwLDEwNiw3LDAsMTMxLDEsMSwxMzAsMSwwLDExMCwxNiwKKyAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMDYsOCwwLDEyNCwxLDAsMTMxLDEsMCwKKyAgICAxLDg3LDEwMCwwLDAsODEsODIsODgsMTE2LDksMCwxMDYsMTAsMCwxMjQsMCwKKyAgICAwLDEwNiw3LDAsMjUsODMsNDEsNCw3OCwxMTQsMTM5LDAsMCwwLDEyMiwxNCwKKyAgICAxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTQsMTUsCisgICAgMCwwLDAsNDEsMTEsMTE0LDk5LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICAxNDgsMCwwLDAsMTE0LDE0NCwwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCwxMTAsCisgICAgMCwwLDAsMTE0LDc3LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTM5LDAsCisgICAgMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsNDEsMiwxMTQsODgsCisgICAgMCwwLDAsMTE0LDg5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDIxOCwxNCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMTcsCisgICAgMTEwLDEwOCwxMTEsOTksMTA3LDEwMSwxMDAsMTQ3LDIsMCwwLDExNSwyMCwwLDAsMCwKKyAgICAwLDIsMTUsMiwxOCwxLDEwLDIsMTIsMSwxMywxLDE1LDEsMTUsMSwKKyAgICAyNCwzLDIzLDUsMTE0LDE0OSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsMSwwLDAsMCw5LDAsMCwwLDY3LDAsMCwwLDExNSw0NywKKyAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxLDExNiwyLDAsCisgICAgMTI0LDAsMCwxMDYsMywwLDEzMSwxLDAsMTQzLDE1LDAsMSwxMTYsNCwwLAorICAgIDEyNCwwLDAsMTMxLDEsMCw4Myw4NywxMDAsMSwwLDgxLDgyLDg4LDEwMCwxLAorICAgIDAsODMsNDEsMiwxMjIsMTkxLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsOTcsMzIsMTEwLAorICAgIDEwMSwxMTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LAorICAgIDQ0LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LAorICAgIDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDAsMTAwLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDUsCisgICAgMTE2LDExNSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDczLDEwMiwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LAorICAgIDEwOCwxMTQsMTAxLDk3LDEwMCwxMjEsMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTAxLDEyMCwxMDUsMTE1LAorICAgIDExNiwxMDUsMTEwLDEwMywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDMsMTAxLDExNiwxMTUsCisgICAgMTAsMzIsMzIsMzIsMzIsOTksMTA4LDExMSw5OCw5OCwxMDEsMTE0LDEwMSwxMDAsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsNzgsNDEsNSwxMTQsNTcsMCwwLDAsMTE0LDE0NSwwLAorICAgIDAsMCwxMTQsNTQsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxNDksMCwwLAorICAgIDAsNDEsMSwxMTQsODgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMTE0LDg3LDAsMCwwLDE3MCwyLDAsMCwKKyAgICAxMTUsNiwwLDAsMCwwLDksMTAsMSwxNiwxLDExNCw4NywwLDAsMCwKKyAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw1LDAsMCwKKyAgICAwLDY0LDAsMCwwLDExNSwyMDUsMCwwLDAsMTAxLDAsMCw5MCwxLDAsCisgICAgMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAxLDQsMCwxMDAsCisgICAgMiwwLDEwMCwzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwxMDEsNiwKKyAgICAwLDEwMCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEwMCw2LDAsMTMyLDIsMCwKKyAgICAxMzEsMSwwLDkwLDcsMCwxMDEsNiwwLDEwMCw0LDAsMTAwLDcsMCwxMDAsCisgICAgOCwwLDEzMiwxLDAsMTMxLDEsMCw5MCw4LDAsMTAxLDYsMCwxMDAsOSwKKyAgICAwLDEwMCwxMCwwLDEzMiwwLDAsMTMxLDEsMCw5MCw5LDAsMTAxLDYsMCwKKyAgICAxMDAsMTEsMCwxMDAsMTIsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsCisgICAgNiwwLDEwMSwxMSwwLDEwMCwxMywwLDEwMCwxNCwwLDEzMiwwLDAsMTMxLDEsCisgICAgMCwxMzEsMSwwLDkwLDEyLDAsMTAxLDYsMCwxMDEsMTEsMCwxMDAsMTUsMCwKKyAgICAxMDAsMTYsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxMywwLDEwMSwKKyAgICA2LDAsMTAxLDExLDAsMTAwLDE3LDAsMTAwLDE4LDAsMTMyLDAsMCwxMzEsMSwKKyAgICAwLDEzMSwxLDAsOTAsMTQsMCwxMDEsNiwwLDEwMSwxNSwwLDEzMSwxLDAsCisgICAgOTAsMTYsMCwxMDAsNCwwLDgzLDQxLDE5LDIxOCwxNSw2NiwxMTcsMTA1LDEwOCwxMTYsCisgICAgMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTIyLDE0NCw3NywxMDEsMTE2LDk3LAorICAgIDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTEsMTE0LAorICAgIDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwKKyAgICAxMTEsMTAwLDExNSwzMiw5NywxMTQsMTAxLDMyLDEwMSwxMDUsMTE2LDEwNCwxMDEsMTE0LDMyLDk5LAorICAgIDEwOCw5NywxMTUsMTE1LDMyLDExMSwxMTQsMzIsMTE1LDExNiw5NywxMTYsMTA1LDk5LDMyLDEwOSwKKyAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsMTExLDMyLDk3LDExOCwxMTEsMTA1LDEwMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwKKyAgICAxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDExNiwxMDUsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICA5OSwxMDgsOTcsMTE1LDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsCisgICAgMSwwLDEzMSwxLDAsODMsNDEsMiwxMjIsMTE1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsCisgICAgMzIsMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LAorICAgIDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwKKyAgICAxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwKKyAgICAxMTEsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDYsMTExLDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwKKyAgICAxMDgsMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEyMiwyNCw2MCwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCw5OCwxMTcsMTA1LAorICAgIDEwOCwxMTYsNDUsMTA1LDExMCw0MSw2Miw0MSwyLDExNCw1MCwwLDAsMCwxMTQsMSwKKyAgICAwLDAsMCw0MSwxLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsOTIsMCwwLDAsMTk1LDIsCisgICAgMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LAorICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDk1LDExNCwxMDEsMTEyLDExNCw3OCw5OSw0LDAsMCwwLDAsMCwwLDAsCisgICAgNCwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSw1OCwwLDAsCisgICAgMCwxMjQsMiwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTYsMCwxMDAsMCwwLAorICAgIDgzLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTE0LDUwLDAsCisgICAgMTE2LDIsMCwxMjQsMSwwLDEyNCwwLDAsMTAwLDEsMCwxMDAsMiwwLDEzMSwKKyAgICAyLDEsODMsMTAwLDAsMCw4MywxMDAsMCwwLDgzLDQxLDMsNzgsMTE0LDEwNywKKyAgICAwLDAsMCwxMjIsOCw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCw0MSwzLDExNCwKKyAgICA1NywwLDAsMCw5MCwxMCwxMDUsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLAorICAgIDExNCw4NSwwLDAsMCw0MSw0LDIxOCwzLDk5LDEwOCwxMTUsMTE0LDc4LDAsMCwKKyAgICAwLDIxOCw0LDExMiw5NywxMTYsMTA0LDIxOCw2LDExNiw5NywxMTQsMTAzLDEwMSwxMTYsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDksCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDIwNCwyLDAsMCwxMTUsMTAsMCwKKyAgICAwLDAsMCwyLDEyLDEsNCwxLDE1LDEsMTksMiwxMjIsMjUsNjYsMTE3LAorICAgIDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMiwxMDUsCisgICAgMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsMCwwLDAsCisgICAgNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw0MSwwLDAsCisgICAgMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsCisgICAgMTI1LDMsMCwxMjQsMywwLDEwMCwxLDAsMTA3LDksMCwxMTQsMzcsMCwxMjQsCisgICAgMywwLDEwNiwxLDAsODMsMTAwLDEsMCw4Myw0MSwyLDEyMiwxNzUsNzAsMTA1LAorICAgIDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsNzMsMTAyLDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLDEwNSwxMTUsMzIsMTAxLDExOCwKKyAgICAxMDEsMTE0LDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTE2LDEwNCwxMDEsCisgICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMDEsOTcsMTE0LDk5LDEwNCwzMiwxMDUsMTE1LDMyLAorICAgIDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwxMDEsMTAwLDMyLDk3LDMyLDEwMiw5NywxMDUsCisgICAgMTA4LDExNywxMTQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LAorICAgIDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwKKyAgICAxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMiwKKyAgICAxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLAorICAgIDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwyLAorICAgIDExNCwxNTQsMCwwLDAsMTE0LDk5LDAsMCwwLDQxLDQsMTE0LDE1MSwwLDAsCisgICAgMCwxMTQsNzgsMCwwLDAsMTE0LDE1MiwwLDAsMCwxMTQsODgsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LAorICAgIDExLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyMTMsMiwwLDAsCisgICAgMTE1LDQsMCwwLDAsMCw5LDE4LDEsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwKKyAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsCisgICAgMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsNjcsMCwwLDAsCisgICAgMTI0LDEsMCwxMDYsMCwwLDExNiwxLDAsMTA2LDIsMCwxMDcsNywwLDExNCwKKyAgICA1MSwwLDExNiwzLDAsMTAwLDEsMCwxMDYsNCwwLDEyNCwxLDAsMTA2LDAsCisgICAgMCwxMzEsMSwwLDEwMCwyLDAsMTI0LDEsMCwxMDYsMCwwLDEzMSwxLDEsCisgICAgMTMwLDEsMCwxMTYsNSwwLDExNiw2LDAsMTA2LDcsMCwxMjQsMSwwLDEzMSwKKyAgICAyLDAsODMsNDEsMywxMjIsMjQsNjcsMTE0LDEwMSw5NywxMTYsMTAxLDMyLDk3LDMyLAorICAgIDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyMiwKKyAgICAyOSwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDk4LAorICAgIDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxNSwKKyAgICAwLDAsMCw0MSw4LDExNCwxNSwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LAorICAgIDc2LDAsMCwwLDExNCw3NywwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDY1LAorICAgIDAsMCwwLDExNCw1NywwLDAsMCw5MCwxNCw5OSwxMTQsMTAxLDk3LDExNiwxMDEsCisgICAgOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDEsMiwxMTQsMTksMCwwLDAsMTE0LAorICAgIDg4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAorICAgIDAsMCwwLDExNCwxMzgsMCwwLDAsMjI1LDIsMCwwLDExNSw4LDAsMCwKKyAgICAwLDAsMywxOCwxLDIxLDEsMTIsMSwxMjIsMjksNjYsMTE3LDEwNSwxMDgsMTE2LAorICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDk5LDExNCwxMDEsOTcsMTE2LAorICAgIDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyMCwwLAorICAgIDAsMCwxMTYsMCwwLDExNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwyLAorICAgIDAsMSwxMDAsMSwwLDgzLDQxLDIsMTIyLDIyLDY5LDEyMCwxMDEsOTksMzIsOTcsCisgICAgMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNzgsNDEsMywxMTQsNjUsMCwwLDAsMTE0LDU3LDAsMCwwLDkwLDEyLDEwMSwKKyAgICAxMjAsMTAxLDk5LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQxLDIsMTE0LDE5LDAsCisgICAgMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMSwwLDAsMCwxMTQsMTM5LDAsMCwwLDIzMywyLDAsMCwxMTUsCisgICAgMiwwLDAsMCwwLDMsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKKyAgICAxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsCisgICAgODMsNDEsMiwxMjIsNTcsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwKKyAgICAzMiw5NywxMTUsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsCisgICAgMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDExNSw0Niw3OCwxMTQsCisgICAgMTAsMCwwLDAsNDEsMiwxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsCisgICAgOCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwyMzgsMiwwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCw0LDEyMiwyNCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwKICAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDU3LAorICAgIDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsNTYsCiAgICAgODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsOTgsCiAgICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLAotICAgIDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsOTksMTExLDEwMCwxMDEsCi0gICAgMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDExNSw0Niw3OCwxMTQsNCwwLDAsMCw0MSwKLSAgICAyLDExNCwxMiwxLDAsMCwxMTQsMTU5LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCw4LDEwMywxMDEsMTE2LDk1LAotICAgIDk5LDExMSwxMDAsMTAxLDE5LDUsMCwwLDExNSwyLDAsMCwwLDAsNCwxMjIsCi0gICAgMjQsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LAotICAgIDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLAotICAgIDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsCi0gICAgMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw1Niw4MiwxMDEsMTE2LDExNywxMTQsCi0gICAgMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsCi0gICAgMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLAotICAgIDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwKLSAgICAxMDAsMTAxLDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDEyLDEsMCwwLAotICAgIDExNCwxNTksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMjE4LDEwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgMjUsNSwwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyNiw2NiwxMTcsMTA1LAotICAgIDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsCi0gICAgOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwKLSAgICAwLDEwMCwxLDAsODMsNDEsMiwxMjIsNTIsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKLSAgICA3MCw5NywxMDgsMTE1LDEwMSwzMiw5NywxMTUsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwKLSAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTEwLDEwMSwKLSAgICAxMTgsMTAxLDExNCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE1LDQ2LDcwLDExNCw0LAotICAgIDAsMCwwLDQxLDIsMTE0LDEyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIyMCwKLSAgICAwLDAsMCwzMSw1LDAsMCwxMTUsMiwwLDAsMCwwLDQsMTIyLDI2LAotICAgIDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKLSAgICAxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwxNCwxMTQsNTcsMCwwLAotICAgIDAsMTE0LDU2LDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNTksMCwwLDAsCi0gICAgMjE4LDEyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsMjA2LAotICAgIDAsMCwwLDIxOCwxMSw5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwKLSAgICAxMTQsMTQsMSwwLDAsMTE0LDE1LDEsMCwwLDExNCwxNjIsMCwwLDAsMTE0LAotICAgIDUsMSwwLDAsMTE0LDE2LDEsMCwwLDExNCwxNywxLDAsMCwxMTQsMjIwLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw1LDAsMCwwLDExNCwxMSwxLDAsMCwyMjQsNCwwLDAsCi0gICAgMTE1LDI4LDAsMCwwLDEyLDcsNiwyLDE4LDksMywxLDIxLDgsMywKLSAgICAxLDE4LDExLDMsMSwyMSwxMSwzLDEsMjEsNSwzLDEsMjEsNSwzLAotICAgIDEsMTE0LDExLDEsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDAsMCwwLDUsMCwwLDAsNjQsMCwwLDAsMTE1LDE5MywwLDAsMCwKLSAgICAxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLAotICAgIDMsMCwxMDEsNCwwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDEzMSwxLAotICAgIDAsOTAsNSwwLDEwMSw2LDAsMTAwLDQsMCwxMDAsNCwwLDEwMCw1LDAsCi0gICAgMTAwLDYsMCwxMzIsMiwwLDEzMSwxLDAsOTAsNywwLDEwMSw2LDAsMTAwLAotICAgIDQsMCwxMDAsNywwLDEwMCw4LDAsMTMyLDEsMCwxMzEsMSwwLDkwLDgsCi0gICAgMCwxMDEsNCwwLDEwMCw5LDAsMTAwLDEwLDAsMTMyLDAsMCwxMzEsMSwwLAotICAgIDkwLDksMCwxMDEsNiwwLDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwwLDAsMTMxLAotICAgIDEsMCw5MCwxMCwwLDEwMSw2LDAsMTAxLDExLDAsMTAwLDEzLDAsMTAwLDE0LAotICAgIDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTIsMCwxMDEsNiwwLAotICAgIDEwMSwxMSwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCi0gICAgMSwwLDkwLDEzLDAsMTAxLDYsMCwxMDEsMTEsMCwxMDAsMTcsMCwxMDAsMTgsCi0gICAgMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxNCwwLDEwMCw0LDAsCi0gICAgODMsNDEsMTksMjE4LDE0LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwxMDEsMTE0LDEyMiwxNDIsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsCi0gICAgMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDIsMTExLDExNCwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsCi0gICAgMTA4LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMDEsCi0gICAgMTA1LDExNiwxMDQsMTAxLDExNCwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTE0LDMyLDExNSwKLSAgICAxMTYsOTcsMTE2LDEwNSw5OSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsMTE2LDExMSwKLSAgICAzMiw5NywxMTgsMTExLDEwNSwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLAotICAgIDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTA1LDExMCwxMTUsMTE2LDk3LDExMCwxMTYsMTA1LDk3LAotICAgIDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDk3LDExNSwxMTUsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCi0gICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwKLSAgICAxMDYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQxLDIsMTIyLAotICAgIDExNSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMDIsMTExLDExNCwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLAotICAgIDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwKLSAgICAzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwxMDQsCi0gICAgMTA1LDExMCwxMDEsMTE0LDEyMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA2LAotICAgIDExMSw5OCwzMiwxMDUsMTE2LDExNSwxMDEsMTA4LDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwxMjIsMjIsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMzIsNDAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsNDEsNjIsNDEsMiwxMTQsNDcsCi0gICAgMCwwLDAsMTE0LDU3LDAsMCwwLDQxLDEsMjE4LDEsMTA5LDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyMDYsMCwwLAotICAgIDAsNDcsNSwwLDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwyNiw3MCwxMTQsCi0gICAgMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsNzgsOTksNCwwLDAsMCwwLDAsCi0gICAgMCwwLDQsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsNDIsCisgICAgMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCwxMCwwLDAsMCw0MSwyLAorICAgIDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMCwxMDMsMTAxLDExNiw5NSwxMTUsCisgICAgMTExLDExNywxMTQsOTksMTAxLDI0NCwyLDAsMCwxMTUsMiwwLDAsMCwwLDQsCisgICAgMTIyLDI2LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw1Miw4MiwxMDEsCisgICAgMTE2LDExNywxMTQsMTEwLDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDk3LDExNSwzMiw5OCwxMTcsCisgICAgMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsCisgICAgMTE0LDEwMSwzMiwxMTAsMTAxLDExOCwxMDEsMTE0LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKKyAgICAxMTUsNDYsNzAsMTE0LDEwLDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsCisgICAgNzgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMTE0LDEwOSwwLDAsMCwyNTAsMiwwLDAsMTE1LDIsMCwwLAorICAgIDAsMCw0LDEyMiwyNiw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsCisgICAgMTcsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsCisgICAgMTE0LDMsMCwwLDAsMjE4LDEyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwxMDksMTAxLDExNiwKKyAgICAxMDQsMTExLDEwMCwxMTQsOTIsMCwwLDAsMjE4LDExLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwKKyAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCwxNTQsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsCisgICAgMTM4LDAsMCwwLDExNCwxMzksMCwwLDAsMTE0LDgxLDAsMCwwLDExNCwxNTYsCisgICAgMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCw5MCwwLAorICAgIDAsMCwxMTQsMTQ2LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTUwLDAsMCwwLAorICAgIDE4NiwyLDAsMCwxMTUsMzAsMCwwLDAsMTIsNyw2LDIsMTgsOSwzLAorICAgIDEsMjEsOCwzLDEsMTgsMTEsMTgsOCwxOCw1LDMsMSwyMSw1LDMsCisgICAgMSwyMSw1LDMsMSwyMSw1LDExNCwxNTAsMCwwLDAsOTksMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw2NCwwLDAsCisgICAgMCwxMTUsMjExLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsCisgICAgMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLDIsMCwxMDAsMywKKyAgICAwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDYsMCwxMDAsNCwwLAorICAgIDEwMCw0LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwyLDAsMTMxLDEsMCw5MCwKKyAgICA3LDAsMTAxLDYsMCwxMDAsNCwwLDEwMCw3LDAsMTAwLDgsMCwxMzIsMSwKKyAgICAwLDEzMSwxLDAsOTAsOCwwLDEwMSw2LDAsMTAwLDksMCwxMDAsMTAsMCwKKyAgICAxMzIsMCwwLDEzMSwxLDAsOTAsOSwwLDEwMSw0LDAsMTAwLDExLDAsMTAwLAorICAgIDEyLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLDYsMCwxMDAsMTMsCisgICAgMCwxMDAsMTQsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTEsMCwxMDEsNiwwLAorICAgIDEwMSwxMiwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCisgICAgMSwwLDkwLDEzLDAsMTAxLDYsMCwxMDEsMTIsMCwxMDAsMTcsMCwxMDAsMTgsCisgICAgMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxNCwwLDEwMSw2LDAsCisgICAgMTAxLDEyLDAsMTAwLDE5LDAsMTAwLDIwLDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwKKyAgICAxLDAsOTAsMTUsMCwxMDAsNCwwLDgzLDQxLDIxLDIxOCwxNCw3MCwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQyLDc3LDEwMSwxMTYsCisgICAgOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExMSwKKyAgICAxMTQsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKKyAgICAxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksMTA4LAorICAgIDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LDEwMSwKKyAgICAxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMTE4LDExMSwxMDUsMTAwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwKKyAgICAxMTAsMTE1LDExNiw5NywxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LAorICAgIDEwOCw5NywxMTUsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLAorICAgIDAsMTMxLDEsMCw4Myw0MSwyLDEyMiwxMTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKKyAgICAxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LAorICAgIDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKKyAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsMzIsMTAwLDExMSwKKyAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsOTgsMzIsMTA1LDExNiwxMTUsMTAxLDEwOCwKKyAgICAxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTIyLDIyLDYwLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDQxLDYyLDQxLDIsMTE0LDUwLDAsMCwwLDExNCwxLDAsMCwwLAorICAgIDQxLDEsMjE4LDEsMTA5LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDExNCw5MiwwLDAsMCwxMiwzLDAsMCwxMTUsMiwwLAorICAgIDAsMCwwLDcsMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwKKyAgICA3OCw5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw1LDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw0MiwwLDAsMCwxMTYsMCwwLDEwNiwxLAorICAgIDAsMTI0LDEsMCwxMzEsMSwwLDExNCwzNCwwLDExNiwyLDAsMTI0LDEsMCwKKyAgICAxMjQsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzEsMiwxLDgzLDEwMCwwLDAsCisgICAgODMsMTAwLDAsMCw4Myw0MSwzLDc4LDExNCwxMDcsMCwwLDAsOTAsNiwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCw0MSwzLDExNCw1NywwLDAsMCwxMTQsODIsMCwwLAorICAgIDAsMTE0LDg1LDAsMCwwLDQxLDQsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwKKyAgICAwLDAsMTE0LDE1MiwwLDAsMCwxMTQsMTUzLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTQsMCwwLDAsCisgICAgMjEsMywwLDAsMTE1LDYsMCwwLDAsMCwyLDE1LDEsMTksMiwxMjIsCisgICAgMjQsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsMCwwLDAsMCwwLAorICAgIDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIzLAogICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTE0LAotICAgIDM0LDAsMTE2LDIsMCwxMjQsMSwwLDEyNCwwLDAsMTAwLDEsMCwxMDAsMiwKLSAgICAwLDEzMSwyLDEsODMsMTAwLDAsMCw4MywxMDAsMCwwLDgzLDQxLDMsNzgsCi0gICAgMTE0LDIxOCwwLDAsMCw5MCw2LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDQxLDMsMTE0LAotICAgIDEwNiwwLDAsMCwxMTQsMTYzLDAsMCwwLDExNCwxNzQsMCwwLDAsNDEsNCwKLSAgICAxMTQsMTIsMSwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LAotICAgIDEzLDEsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDExNCwxNCwxLDAsMCw1Niw1LDAsMCwxMTUsNiwwLDAsCi0gICAgMCwwLDIsMTUsMSwxOSwyLDEyMiwyNCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLAotICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsCi0gICAgOTksOTksMywwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMiwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsMjMsMCwwLDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEyNCwxLDAsMTMxLDEsMCwxMTQsMTksMCwxMjQsMCwwLDgzLDEwMCwxLAotICAgIDAsODMsNDEsMiwxMjIsOTMsNzAsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTAyLDExNCwxMTEsCi0gICAgMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCi0gICAgMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLAotICAgIDMyLDg1LDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLAotICAgIDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDc4LDQxLDIsMTE0LDEwNiwwLDAsMCwxMTQsMTYzLDAsMCwwLAotICAgIDQxLDMsMTE0LDEyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDM1LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAotICAgIDExNCwxNSwxLDAsMCw2Myw1LDAsMCwxMTUsMiwwLDAsMCwwLDcsCi0gICAgMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LAotICAgIDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMywwLDAsMCw0LDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSw5NSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsMCwxMjUsCi0gICAgMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsMTE1LDU3LAotICAgIDAsMTE2LDQsMCwxMDAsMSwwLDEwNiw1LDAsMTI0LDEsMCwxMzEsMSwwLAotICAgIDEwMCwyLDAsMTI0LDEsMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDAsMCwxMTYsCi0gICAgNiwwLDExNiwyLDAsMTA2LDcsMCwxMjQsMSwwLDEzMSwyLDAsMTI1LDIsCi0gICAgMCwxMTYsOCwwLDEyNCwyLDAsMTI0LDAsMCwxMDYsOSwwLDEzMSwyLDAsCi0gICAgMSwxMDAsMCwwLDgzLDQxLDMsNzgsMTIyLDI3LDEyMywzMywxMTQsMTI1LDMyLDEwNSwKLSAgICAxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDY3LDAsMCwwLDQxLDEwLDExNCwyMDksMCwwLAotICAgIDAsMTE0LDY3LDAsMCwwLDExNCwxMDYsMCwwLDAsMTE0LDE2MywwLDAsMCwKLSAgICAxMTQsMTU0LDAsMCwwLDExNCw0NywwLDAsMCwxMTQsMTE0LDAsMCwwLDIxOCwKLSAgICAxNywxMDMsMTAxLDExNiw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTEsOTgsMTA2LDEwMSwKLSAgICA5OSwxMTYsMTE0LDE3NiwwLDAsMCwxMTQsNjMsMCwwLDAsNDEsMywxMTQsMTgwLAotICAgIDAsMCwwLDExNCw2NywwLDAsMCwxMTQsMTk1LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyLDEsMCwKLSAgICAwLDcyLDUsMCwwLDExNSwxMiwwLDAsMCwwLDIsMTIsMSwxNSwxLAotICAgIDE4LDEsMTIsMSwxOCwxLDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwKKyAgICAxOSwwLDEyNCwwLDAsODMsMTAwLDEsMCw4Myw0MSwyLDEyMiw5Myw3MCwxMDUsCisgICAgMTEwLDEwMCwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LAorICAgIDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKKyAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwKKyAgICAxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsNTcsCisgICAgMCwwLDAsMTE0LDgyLDAsMCwwLDQxLDMsMTE0LDE1MSwwLDAsMCwxMTQsCisgICAgNzgsMCwwLDAsMTE0LDE1MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU1LDAsMCwwLDI4LDMsMCwKKyAgICAwLDExNSwyLDAsMCwwLDAsNywxMjIsMjYsNzAsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsCisgICAgMCw4Myw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsCisgICAgMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsMTExLDExNCwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsMTExLDExMCw0NiwKKyAgICA3OCwxMTQsMTAsMCwwLDAsNDEsMiwxMTQsMTUxLDAsMCwwLDExNCw4OCwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCisgICAgMCwxMTQsMTM4LDAsMCwwLDM3LDMsMCwwLDExNSwwLDAsMCwwLDEyMiwKKyAgICAyOCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKKyAgICA5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsNCwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsOTIsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsCisgICAgMTI1LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDExNSwKKyAgICA1NCwwLDExNiw0LDAsMTAwLDEsMCwxMDYsNSwwLDEyNCwxLDAsMTMxLDEsCisgICAgMCwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExNiw2LDAsCisgICAgMTE2LDIsMCwxMDYsNywwLDEyNCwxLDAsMTMxLDIsMCwxMjUsMiwwLDExNiwKKyAgICA4LDAsMTI0LDIsMCwxMjQsMCwwLDEwNiw5LDAsMTMxLDIsMCwxLDEwMCwKKyAgICAwLDAsODMsNDEsMyw3OCwxMjIsMjcsMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwKKyAgICAxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTQsMTUsMCwwLDAsNDEsMTAsMTE0LDk1LDAsMCwwLDExNCwKKyAgICAxNSwwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDgyLDAsMCwwLDExNCw3NywKKyAgICAwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDY1LDAsMCwwLDIxOCwxNywxMDMsCisgICAgMTAxLDExNiw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsCisgICAgMjE4LDQsMTAxLDEyMCwxMDEsOTksMTE0LDcsMCwwLDAsNDEsMywxMTQsODksMCwKKyAgICAwLDAsMTE0LDE1LDAsMCwwLDIxOCw0LDk5LDExMSwxMDAsMTAxLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMzksMCwwLAorICAgIDAsNDEsMywwLDAsMTE1LDEyLDAsMCwwLDAsMiwxMiwxLDE1LDEsCisgICAgMTgsMSw5LDEsMTgsMSwxMjIsMjYsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksCiAgICAgMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LAogICAgIDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywKICAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTE2LDAsMCwxMjQsCkBAIC0yMjY3LDEwICsxNDU2LDEwIEBACiAgICAgMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLAogICAgIDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksCiAgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywKLSAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDEsMSwxMTQsMTgxLAotICAgIDAsMCwwLDQxLDIsMTE0LDEyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDUsCi0gICAgMSwwLDAsODEsNSwwLDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwyNiwKKyAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDEsMSwxMTQsOTAsCisgICAgMCwwLDAsNDEsMiwxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTQ2LAorICAgIDAsMCwwLDUwLDMsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMjYsCiAgICAgNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA4LAogICAgIDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLAogICAgIDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCkBAIC0yMjc4LDkgKzE0NjcsOSBAQAogICAgIDgzLDQxLDEsMTIyLDQ1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCiAgICAgOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwMiwxMTEsMTE0LDMyLAogICAgIDExNiwxMDQsMTAxLDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDQ2LDQxLDIsMTE0LDEwNiwwLDAsMCwxMTQsMjIsMSwwLDAsNDEsMiwKLSAgICAxMTQsMTIsMSwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTYsMSwwLDAsOTAsNSwKKyAgICAxMDEsNDYsNDEsMiwxMTQsNTcsMCwwLDAsMTE0LDE2MiwwLDAsMCw0MSwyLAorICAgIDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTYsMCwwLDAsNTksMywKICAgICAwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyMyw3MCwxMTQsMTExLDEyMiwxMDEsCiAgICAgMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsCiAgICAgMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLApAQCAtMjI4OCwxMCArMTQ3NywxMCBAQAogICAgIDQxLDIsMTIyLDU0LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsCiAgICAgOTcsMTE1LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAogICAgIDExNSwzMiwxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLDMyLDExNSwxMTEsCi0gICAgMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsMTE0LDQsMCwwLDAsCi0gICAgNDEsMiwxMTQsMTIsMSwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTcsMSwwLDAsCi0gICAgOTYsNSwwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyNSw3MCwxMTQsMTExLAorICAgIDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCwxMCwwLDAsMCwKKyAgICA0MSwyLDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTcsMCwwLDAsCisgICAgNjUsMywwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyNSw3MCwxMTQsMTExLAogICAgIDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwKICAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLAogICAgIDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLApAQCAtMjI5OSwyMDc5ICsxNDg4LDUwMSBAQAogICAgIDQ2LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwKICAgICAxMTYsMTA0LDEwMSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAogICAgIDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0Niw0MSwKLSAgICAyLDExNCwxMDYsMCwwLDAsOTAsMTcsMTA1LDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLAotICAgIDExMCw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsMiwxMTQsMTIsMSwwLDAsCi0gICAgMTE0LDE1OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwxMTQsMjIwLDAsMCwwLDEwMiw1LDAsMCwxMTUsMiwwLAorICAgIDIsMTE0LDU3LDAsMCwwLDkwLDE3LDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQxLDIsMTE0LDE1MSwwLDAsMCwKKyAgICAxMTQsNzgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTEsMCwwLDAsMTE0LDEwOSwwLDAsMCw3MSwzLDAsMCwxMTUsMiwwLAogICAgIDAsMCwwLDQsMTIyLDI1LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsCiAgICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQxLAotICAgIDE1LDExNCw1NywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwwLAotICAgIDExNCw1OSwwLDAsMCwxMTQsMTgsMSwwLDAsMTE0LDIwNiwwLDAsMCwxMTQsCi0gICAgMTksMSwwLDAsMTE0LDE0LDEsMCwwLDExNCwxNSwxLDAsMCwxMTQsMiwKLSAgICAxLDAsMCwxMTQsNSwxLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNiwxLAotICAgIDAsMCwxMTQsMTcsMSwwLDAsMTE0LDIyMCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKLSAgICAxMTQsMjAsMSwwLDAsMzgsNSwwLDAsMTE1LDI4LDAsMCwwLDEyLDcsCi0gICAgNiwyLDE4LDksMywxLDIxLDYsMywxLDE4LDgsMTgsOSwxOCw5LAotICAgIDMsMSwyMSw1LDMsMSwyMSw1LDMsMSwxMTQsMjAsMSwwLDAsOTksCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwKLSAgICA2NCwwLDAsMCwxMTUsMTIxLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwKLSAgICAwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsOTAsNCwKLSAgICAwLDEwMCwzLDAsOTAsNSwwLDEwMCw0LDAsOTAsNiwwLDEwMSw3LDAsCi0gICAgMTAwLDUsMCwxMDAsNiwwLDEzMiwwLDAsMTMxLDEsMCw5MCw4LDAsMTAxLAotICAgIDcsMCwxMDAsNywwLDEwMCw4LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDksCi0gICAgMCwxMDEsNywwLDEwMCw5LDAsMTAwLDksMCwxMDAsMTAsMCwxMDAsMTEsMCwKLSAgICAxMzIsMiwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsNywwLDEwMCw5LDAsMTAwLAotICAgIDEyLDAsMTAwLDEzLDAsMTMyLDEsMCwxMzEsMSwwLDkwLDExLDAsMTAwLDksCi0gICAgMCw4Myw0MSwxNCwyMTgsMjEsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywKLSAgICAxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTIyLDYyLDc3LDEwMSwxMTYsCi0gICAgOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMDEsOTksMTA4LDk3LDExNCwKLSAgICAxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsODcsMTA1LDExMCwxMDAsMTExLDExOSwKLSAgICAxMTUsMzIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw0NiwxMjIsNTksODMsMTExLDEwMiwKLSAgICAxMTYsMTE5LDk3LDExNCwxMDEsOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw5Miw4MCwxMjEsMTE2LAotICAgIDEwNCwxMTEsMTEwLDY3LDExMSwxMTQsMTAxLDkyLDEyMywxMTUsMTIxLDExNSw5NSwxMTgsMTAxLDExNCwKLSAgICAxMTUsMTA1LDExMSwxMTAsMTI1LDkyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDkyLDEyMywxMDIsCi0gICAgMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTI1LDEyMiw2NSw4MywxMTEsMTAyLDExNiwxMTksOTcsCi0gICAgMTE0LDEwMSw5Miw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsCi0gICAgNjcsMTExLDExNCwxMDEsOTIsMTIzLDExNSwxMjEsMTE1LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLAotICAgIDExMCwxMjUsOTIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsOTIsMTIzLDEwMiwxMTcsMTA4LDEwOCwKLSAgICAxMTAsOTcsMTA5LDEwMSwxMjUsOTIsNjgsMTAxLDk4LDExNywxMDMsNzAsOTksMiwwLDAsCi0gICAgMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDY3LDAsMCwwLDEyMSwyMywwLDExNiwwLDAsMTA2LDEsMCwxMTYsCi0gICAgMCwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMiwwLDgzLDg3LDExMCwzNywwLAotICAgIDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNjIsMCwxLDEsMSwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTE2LDAsMCwxMDYsNCwwLDEyNCwxLDAsMTMxLDIsMCw4MywKLSAgICA4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsMSw3OCw0MSw1LDIxOCw3LAotICAgIDk1LDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDkwLDcsNzksMTEyLDEwMSwxMTAsNzUsMTAxLDEyMSwKLSAgICA5MCwxNyw3Miw3NSw2OSw4OSw5NSw2Nyw4NSw4Miw4Miw2OSw3OCw4NCw5NSw4NSwKLSAgICA4Myw2OSw4MiwxMTQsNDAsMCwwLDAsOTAsMTgsNzIsNzUsNjksODksOTUsNzYsCi0gICAgNzksNjcsNjUsNzYsOTUsNzcsNjUsNjcsNzIsNzMsNzgsNjksNDEsMiwxMTQsMTIsCi0gICAgMSwwLDAsMjE4LDMsMTA3LDEwMSwxMjEsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDUsMCwwLDAsMjE4LDE0LDk1LDExMSwxMTIsMTAxLDExMCw5NSwxMTQsCi0gICAgMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDEyMSw1LDAsMCwxMTUsOCwwLDAsMCwKLSAgICAwLDIsMywxLDIzLDEsMTMsMSwxMjIsMzYsODcsMTA1LDExMCwxMDAsMTExLDExOSwKLSAgICAxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsCi0gICAgOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTYsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDE0MiwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTE0LDIxLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEyNSwyLDAsMTEwLDksMCwxMjQsMCwwLAotICAgIDEwNiwyLDAsMTI1LDIsMCwxMjQsMiwwLDEwNiwzLDAsMTAwLDEsMCwxMjQsCi0gICAgMSwwLDEwMCwyLDAsMTE2LDQsMCwxMDYsNSwwLDEwMCwwLDAsMTAwLDMsCi0gICAgMCwxMzMsMiwwLDI1LDEzMSwwLDIsMTI1LDMsMCwxMjEsNDYsMCwxMjQsMCwKLSAgICAwLDEwNiw2LDAsMTI0LDMsMCwxMzEsMSwwLDE0MywyNSwwLDEyNSw0LDAsCi0gICAgMTE2LDcsMCwxMDYsOCwwLDEyNCw0LDAsMTAwLDQsMCwxMzEsMiwwLDEyNSwKLSAgICA1LDAsODcsMTAwLDAsMCw4MSw4OCw4NywxMTAsMjIsMCw0LDExNiw5LDAsCi0gICAgMTA3LDEwLDAsMTE0LDEzNywwLDEsMSwxLDEwMCwwLDAsODMsODksMTEwLDEsCi0gICAgMCw4OCwxMjQsNSwwLDgzLDQxLDUsNzgsMTE0LDE1OSwwLDAsMCw5MCwxMSwKLSAgICAxMTUsMTIxLDExNSw5NSwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTE0LDEzNywwLDAsMCwKLSAgICAxMTQsMzAsMCwwLDAsNDEsMTAsMjE4LDExLDY4LDY5LDY2LDg1LDcxLDk1LDY2LAotICAgIDg1LDczLDc2LDY4LDIxOCwxOCw4Miw2OSw3MSw3Myw4Myw4NCw4Miw4OSw5NSw3NSwKLSAgICA2OSw4OSw5NSw2OCw2OSw2Niw4NSw3MSwyMTgsMTIsODIsNjksNzEsNzMsODMsODQsCi0gICAgODIsODksOTUsNzUsNjksODksMTE0LDQ3LDAsMCwwLDExNCw3LDAsMCwwLAotICAgIDIxOCw3LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMTQsMjYsMSwwLDAsMTE0LDI0LAotICAgIDEsMCwwLDkwLDEwLDgxLDExNywxMDEsMTE0LDEyMSw4Niw5NywxMDgsMTE3LDEwMSwxMTQsCi0gICAgNDAsMCwwLDAsNDEsNiwxMTQsMTIsMSwwLDAsMTE0LDE1OSwwLDAsMCwKLSAgICA5MCwxMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk1LDEwNywxMDEsMTIxLDExNCwyNSwKLSAgICAxLDAsMCw5MCw0LDEwNCwxMDcsMTAxLDEyMSwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEyLAotICAgIDk3LDExNiwxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMjE4LDE2LDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsCi0gICAgMTE1LDExNiwxMTQsMTIxLDEyOCw1LDAsMCwxMTUsMjIsMCwwLDAsMCwyLDksCi0gICAgMSwxMiwyLDksMSwxNSwxLDIyLDEsMywxLDE4LDEsMjgsMSwxMywKLSAgICAxLDksMSwxMjIsMzgsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsCi0gICAgMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTE1LDEwMSw5NywxMTQsCi0gICAgOTksMTA0LDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzgsOTksNCwwLDAsCi0gICAgMCwwLDAsMCwwLDgsMCwwLDAsMTQsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDE1NSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDEyNSw0LDAsMTI0LDQsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDMxLAotICAgIDAsMTAwLDAsMCw4MywxMjEsMTQsMCwxMTYsMSwwLDEyNCw0LDAsMTMxLDEsCi0gICAgMCwxLDg3LDExMCwyMiwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNjksMCwKLSAgICAxLDEsMSwxMDAsMCwwLDgzLDg5LDExMCwxLDAsODgsMTIwLDc4LDAsMTE2LAotICAgIDMsMCwxMzEsMCwwLDY4LDkzLDY3LDAsOTIsMiwwLDEyNSw1LDAsMTI1LAotICAgIDYsMCwxMjQsNCwwLDEwNiw0LDAsMTE2LDUsMCwxMjQsNiwwLDEzMSwxLAotICAgIDAsMTMxLDEsMCwxMTQsODAsMCwxMTYsNiwwLDEyNCwxLDAsMTI0LDUsMCwKLSAgICAxMjQsMSwwLDEyNCw0LDAsMTMxLDIsMCwxMDAsMSwwLDEyNCw0LDAsMTMxLAotICAgIDIsMSwxMjUsNywwLDEyNCw3LDAsODMsMTEzLDgwLDAsODcsMTAwLDAsMCwKLSAgICA4Myw0MSwyLDc4LDExNCwyMTgsMCwwLDAsNDEsNywxMTQsMzIsMSwwLDAsCi0gICAgMTE0LDM5LDAsMCwwLDExNCw0MCwwLDAsMCwxMTQsMjQxLDAsMCwwLDExNCwKLSAgICAyMzEsMCwwLDAsMTE0LDIzMiwwLDAsMCwxMTQsMTc0LDAsMCwwLDQxLDgsCi0gICAgMTE0LDEyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwKLSAgICAxMywxLDAsMCwxMTQsMzEsMSwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsMTI2LAotICAgIDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDE0LDEsMCwwLDE0Myw1LDAsMCwKLSAgICAxMTUsMjQsMCwwLDAsMCwyLDE1LDEsMTIsMSw0LDEsMywxLDE0LAotICAgIDEsMTMsMSw5LDEsMjIsMSwyMSwxLDIxLDEsOSwxLDEyMiwzMSw4NywKLSAgICAxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywKLSAgICAwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNDUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLAotICAgIDAsMTI0LDIsMCwxMzEsMiwwLDEyNSwzLDAsMTI0LDMsMCwxMDAsMSwwLAotICAgIDEwNyw5LDAsMTE0LDM3LDAsMTI0LDMsMCwxMDYsMSwwLDgzLDEwMCwxLDAsCi0gICAgODMsMTAwLDEsMCw4Myw0MSwyLDEyMiwxMDgsNzAsMTA1LDExMCwxMDAsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwKLSAgICAzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsCi0gICAgMzIsODUsMTE1LDEwMSwzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiw3OCw0MSwyLDExNCwxNCwxLDAsMCwxMTQsMTcwLDAsCi0gICAgMCwwLDQxLDQsMTE0LDEyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDM1LAotICAgIDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDE1LDEsMCwwLDE1OCw1LDAsMCwKLSAgICAxMTUsOCwwLDAsMCwwLDcsMTgsMSwxMiwxLDcsMiwxMjIsMzMsODcsCi0gICAgMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDQxLDEyLDExNCw1NywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwKLSAgICAwLDExNCw1OSwwLDAsMCwxMTQsMjksMSwwLDAsMTE0LDI4LDEsMCwwLAotICAgIDExNCwyNywxLDAsMCwxMTQsMTksMSwwLDAsMTE0LDI2LDEsMCwwLDExNCwKLSAgICAzMiwxLDAsMCwxMTQsMTQsMSwwLDAsMTE0LDE1LDEsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDExNCwyMywxLDAsMCwxMDksNSwwLDAsMTE1LDIwLDAsMCwwLAotICAgIDEyLDIsNiwzLDYsMyw2LDIsNiwyLDE4LDcsMTgsMTUsMywxLAotICAgIDIxLDE0LDMsMSwxMTQsMjMsMSwwLDAsOTksMCwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsNTIsCi0gICAgMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLAotICAgIDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwKLSAgICAwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDEsNiwwLAotICAgIDkwLDcsMCwxMDAsNiwwLDgzLDQxLDcsMjE4LDEzLDk1LDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSwxMjIsODMsNjYsOTcsMTE1LDEwMSwzMiw5OSwKLSAgICAxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTAyLDMyLDk5LDExMSwxMDksMTA5LDExMSwxMTAsMzIsOTksCi0gICAgMTExLDEwMCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDk4LDExMSwKLSAgICAxMTYsMTA0LDMyLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsCi0gICAgOTcsMTEwLDEwMCwxMCwzMiwzMiwzMiwzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwKLSAgICAxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5OSwyLDAsCi0gICAgMCwwLDAsMCwwLDAsNSwwLDAsMCwzLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSw4OCwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwKLSAgICAxMjQsMSwwLDEzMSwxLDAsMTMxLDEsMCwxMDAsMSwwLDI1LDEyNSwyLDAsCi0gICAgMTI0LDIsMCwxMDYsMiwwLDEwMCwyLDAsMTAwLDEsMCwxMzEsMiwwLDEwMCwKLSAgICAzLDAsMjUsMTI1LDMsMCwxMjQsMSwwLDEwNiwzLDAsMTAwLDIsMCwxMzEsCi0gICAgMSwwLDEwMCw0LDAsMjUsMTI1LDQsMCwxMjQsMywwLDEwMCw1LDAsMTA3LAotICAgIDIsMCwxMTEsODcsMCwxMjQsNCwwLDEwMCw1LDAsMTA3LDMsMCw4Myw0MSwKLSAgICA2LDEyMiwxNDEsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LAotICAgIDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLAotICAgIDExNSwxMTIsMTAxLDk5LDExNiw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsCi0gICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsOTgsMTIxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwNSwKLSAgICAxMTAsMTAzLDMyLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwKLSAgICA5OCwxMjEsMzIsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLAotICAgIDEwNCw5NywxMTUsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDExMSwKLSAgICAxMDIsMzIsMzksOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQ2LDExMiwxMjEsMzksNDYsCi0gICAgMTE0LDI5LDAsMCwwLDExNCwxMTYsMCwwLDAsMTE0LDg0LDAsMCwwLDExNCwKLSAgICAxMTUsMCwwLDAsMTE0LDcyLDAsMCwwLDQxLDQsMTE0LDM4LDAsMCwwLAotICAgIDExNCwyMzksMCwwLDAsMTE0LDM0LDAsMCwwLDExNCwzMiwwLDAsMCw0MSwKLSAgICA1LDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwxMzEsMCwwLDAsCi0gICAgOTAsMTMsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDk1LDk4LDk3LDExNSwxMDEsOTAsCi0gICAgOSwxMTYsOTcsMTA1LDEwOCw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjIwLDAsMCwwLDE3Nyw1LAotICAgIDAsMCwxMTUsOCwwLDAsMCwwLDMsMjUsMSwyMiwxLDE5LDEsMTIyLAotICAgIDI0LDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0NiwxMDUsCi0gICAgMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLDAsMCwwLDAsMCwKLSAgICAwLDAsMywwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw4MCwKLSAgICAwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwKLSAgICAxLDAsMTI1LDIsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsNTcsCi0gICAgMCwxMTYsMiwwLDEwMCwyLDAsMTA2LDMsMCwxMjQsMSwwLDEwNiwxLDAsCi0gICAgMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMTYsNCwwLDExNiwKLSAgICA1LDAsMTI0LDIsMCwxMjQsMSwwLDEwNiw2LDAsMTMxLDMsMCwxLDEwMCwKLSAgICAxLDAsODMsNDEsMywxMjIsMTksNjksMTIwLDEwMSw5OSwxMTcsMTE2LDEwMSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw3OCwxMjIsNTIsOTksOTcsMTEwLAotICAgIDExMCwxMTEsMTE2LDMyLDEwOCwxMTEsOTcsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLAotICAgIDEyMywzMywxMTQsMTI1LDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsCi0gICAgMTAwLDEwMSw0MCw0MSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsNzgsMTExLDExMCwKLSAgICAxMDEsNDEsNywxMTQsMTYsMSwwLDAsMTE0LDU3LDAsMCwwLDExNCwxNTQsMCwKLSAgICAwLDAsMTE0LDQ3LDAsMCwwLDExNCwxMTQsMCwwLDAsMTE0LDE3NiwwLDAsCi0gICAgMCwxMTQsNjMsMCwwLDAsNDEsMywxMTQsNzEsMCwwLDAsMTE0LDE4MCwwLAotICAgIDAsMCwxMTQsMTk1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw1LDAsMCwwLDExNCwyLDEsMCwwLDE4NSw1LDAsMCwxMTUsCi0gICAgMTAsMCwwLDAsMCwyLDE4LDEsMTIsMSw5LDEsMTgsMSwxMjIsMjUsCi0gICAgOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwMSwxMjAsCi0gICAgMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDgsMTE0LDU3LDAsMCwKLSAgICAwLDExNCw1NiwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDU5LDAsMCwwLAotICAgIDExNCwyMjAsMCwwLDAsMTE0LDIsMSwwLDAsMTE0LDE4MSwwLDAsMCwxMTQsCi0gICAgNSwxLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMzMsMSwwLDAsMTcyLDUsMCwKLSAgICAwLDExNSw4LDAsMCwwLDEyLDMsNiwyLDEyLDgsMTIsOCwxMTQsMzMsCi0gICAgMSwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAgNCwwLDAsMCw2NCwwLDAsMCwxMTUsMTA2LDAsMCwwLDEwMSwwLDAsCi0gICAgOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsCi0gICAgMCwwLDkwLDMsMCwxMDAsMywwLDEwMCw0LDAsMTMyLDAsMCw5MCw0LAotICAgIDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwwLDAsOTAsNSwwLDEwMCw3LDAsCi0gICAgMTAwLDgsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOSwwLDEwMCwxMCwwLDEzMiwKLSAgICAwLDAsOTAsNywwLDEwMCwxMSwwLDEwMCwxOCwwLDEwMCwxMywwLDEwMCwxNCwKLSAgICAwLDEzMiwwLDEsOTAsOCwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwwLDAsCi0gICAgOTAsOSwwLDEwMCwxNywwLDgzLDQxLDE5LDIxOCwxMiw4MywxMTEsMTE3LDExNCw5OSwKLSAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDEwLDAsMCwKLSAgICAwLDExNiwwLDAsMTMwLDEsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDE3OCw3OSwKLSAgICAxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTYsCi0gICAgMTA0LDk3LDExNiwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTA5LDExMSwxMDAsMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMDUsMTA5LAotICAgIDEwMSwzMiw0MCw5NywxMTAsMzIsMTA1LDExMCwxMTYsNDEsMzIsMTAyLDExMSwxMTQsMzIsMTE2LAotICAgIDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDExMiwxMDEsOTksMTA1LAotICAgIDEwMiwxMDUsMTAxLDEwMCwzMiwxMTIsOTcsMTE2LDEwNCw0NCwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLAotICAgIDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsOTcsMzIsMTE1LDExNiwxMTQsNDYsMTAsCi0gICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODIsOTcsMTA1LDExNSwxMDEsMTE1LDMyLAotICAgIDczLDc5LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTEyLDk3LDExNiwxMDQsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk4LDEwMSwzMiwKLSAgICAxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDEwMCw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw3OCw0MSwxLDIxOCw3LDczLDc5LDY5LDExNCwxMTQsMTExLDExNCw0MSwyLDExNCwKLSAgICA3MSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEwLDExMiw5NywxMTYsMTA0LDk1LDEwOSwKLSAgICAxMTYsMTA1LDEwOSwxMDEsMTk4LDUsMCwwLDExNSwyLDAsMCwwLDAsNiwxMjIsCi0gICAgMjMsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTIsOTcsCi0gICAgMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDIwLDAsCi0gICAgMCwwLDEwNSwxLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMCwxMDAsMSwwLDU0LDgzLDQxLDIsOTcsMTcwLDEsMCwwLDc5LDExMiwxMTYsCi0gICAgMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExNCwxMDEsMTE2LAotICAgIDExNywxMTQsMTEwLDEwNSwxMTAsMTAzLDMyLDk3LDMyLDEwOSwxMDEsMTE2LDk3LDEwMCw5NywxMTYsCi0gICAgOTcsMzIsMTAwLDEwNSw5OSwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LAotICAgIDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiw0MCwxMTUsMTE2LDExNCw0MSw0NiwxMCwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiw4MCwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSwzMiwxMDcsMTAxLDEyMSwKLSAgICAxMTUsNTgsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDUsMzIsMzksMTA5LDExNiwKLSAgICAxMDUsMTA5LDEwMSwzOSwzMiw0MCwxMDksOTcsMTEwLDEwMCw5NywxMTYsMTExLDExNCwxMjEsNDEsCi0gICAgMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwzMiwKLSAgICAxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDMyLDExMSwxMDIsMzIsMTA4LDk3LDExNSwKLSAgICAxMTYsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEwNSw5OSw5NywKLSAgICAxMTYsMTA1LDExMSwxMTAsNTksMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDUsMzIsCi0gICAgMzksMTE1LDEwNSwxMjIsMTAxLDM5LDMyLDQwLDExMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwKLSAgICA0MSwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMDUsMTIyLDEwMSwzMiwxMDUsMTEwLAotICAgIDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsCi0gICAgMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywKLSAgICAzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwKLSAgICAxMTEsMTE5LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExNiwKLSAgICAxMTEsMzIsMTE0LDEwMSw5NywxMDAsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDExNSw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4MiwKLSAgICA5NywxMDUsMTE1LDEwMSwxMTUsMzIsNzMsNzksNjksMTE0LDExNCwxMTEsMTE0LDMyLDExOSwxMDQsCi0gICAgMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw5OSw5NywxMTAsMTEwLAotICAgIDExMSwxMTYsMzIsOTgsMTAxLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMTAwLDQ2LDEwLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCwxODQsMCwwLDAsNDEsMSwxMTQsMzYsCi0gICAgMSwwLDAsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMCwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMjA2LDUsMCwwLDExNSwyLAotICAgIDAsMCwwLDAsMTEsMTIyLDIzLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDk5LDQsCi0gICAgMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDE2LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMiwKLSAgICAwLDEyNCwzLDAsMTMxLDIsMCw4Myw0MSwxLDEyMiwyMjgsNzksMTEyLDExNiwxMDUsCi0gICAgMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE5LDEwNCwxMDUsOTksCi0gICAgMTA0LDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTE1LDMyLDEwMCw5NywxMTYsOTcsMzIsNDAsOTgsCi0gICAgMTIxLDExNiwxMDEsMTE1LDQxLDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLAotICAgIDExMiw5NywxMTYsMTA0LDMyLDQwLDk3LDMyLDExNSwxMTYsMTE0LDQxLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsCi0gICAgMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLAotICAgIDk3LDEwOCwxMDgsMTExLDExOSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE5LAotICAgIDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLAotICAgIDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTEyLDk3LAotICAgIDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLAotICAgIDExMSwxMTQsMTAwLDEwMSwxMTQsMzIsMTE2LDExMSwzMiw5OSwxMTEsMTE0LDExNCwxMDEsOTksMTE2LAotICAgIDEwOCwxMjEsMzIsMTE2LDExNCw5NywxMTAsMTE1LDEwMiwxMDEsMTE0LDMyLDExMiwxMDEsMTE0LDEwOSwKLSAgICAxMDUsMTE1LDExNSwxMDUsMTExLDExMCwxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgNDEsMSwyMTgsOCwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQxLDQsMTE0LDcxLAotICAgIDAsMCwwLDExNCwxNDIsMCwwLDAsOTAsMTAsOTksOTcsOTksMTA0LDEwMSw5NSwKLSAgICAxMTIsOTcsMTE2LDEwNCwxMTQsNTMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE1LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMjE5LDUsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsOCwxMjIsMjgsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCw0Niw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDk5LDMsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDEsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4MywKLSAgICA0MSwyLDEyMiwxNTAsNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsCi0gICAgMTA0LDExMSwxMDAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTE1LAotICAgIDMyLDEwMCw5NywxMTYsOTcsMzIsNDAsOTgsMTIxLDExNiwxMDEsMTE1LDQxLDMyLDExNiwxMTEsCi0gICAgMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDQwLDk3LDMyLAotICAgIDExNSwxMTYsMTE0LDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLAotICAgIDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDUsMTE1LAotICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDk3LDEwOCwxMDgsMTExLDExOSwxMTUsMzIsMTAyLAotICAgIDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwKLSAgICAxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDExNSwKLSAgICA0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMTQsNCwwLDAsMCwKLSAgICA0MSwzLDExNCw3MSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDUzLDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAotICAgIDExNCwzOCwxLDAsMCwyMjksNSwwLDAsMTE1LDAsMCwwLDAsMTIyLDIxLAotICAgIDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTE1LDEwMSwxMTYsCi0gICAgOTUsMTAwLDk3LDExNiw5Nyw5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLAotICAgIDAsMCwxNiwwLDAsMCw2NywwLDAsMCwxMTUsMTA1LDAsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMjEsMTksCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsCi0gICAgODcsMTEwLDU4LDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw5NCwwLDEsMTI1LAotICAgIDQsMCwxLDEyMiwyNiwwLDExNiwzLDAsMTAwLDEsMCwxMDAsMiwwLDEyNCwKLSAgICAxLDAsMTMxLDEsMSwxMjQsNCwwLDEzMCwyLDAsODcsODksMTAwLDMsMCwKLSAgICAxMDAsMywwLDEyNSw0LDAsMTI2LDQsMCw4OCwxMTAsMSwwLDg4LDExNiw0LAotICAgIDAsMTI0LDMsMCwxMzEsMSwwLDgzLDQxLDQsMTIyLDUyLDY3LDExMSwxMTAsOTksCi0gICAgMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwKLSAgICAxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDYsCi0gICAgMTIyLDM5LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTE4LDk3LAotICAgIDEwNSwxMDgsOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTA0LDExNCwxMTEsMTE3LDEwMywxMDQsMzIsMTAzLAotICAgIDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MCw0MSwxMTQsNjcsMCwwLDAsNzgsNDEsCi0gICAgNSwxMTQsMjM5LDAsMCwwLDIxOCw4LDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsCi0gICAgMTE0LDQwLDAsMCwwLDExNCwxNTQsMCwwLDAsMTE0LDIwNCwwLDAsMCw0MSwKLSAgICA1LDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwzNSwwLDAsMCwKLSAgICAxMTQsMjAyLDAsMCwwLDIxOCwzLDEwMSwxMjAsOTksMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE3LDEsMCwwLDIzNiw1LAotICAgIDAsMCwxMTUsMTQsMCwwLDAsMCwyLDE1LDEsMywxLDE5LDEsMTgsCi0gICAgMSw5LDEsMzEsMSwxMjIsMjMsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDIxOCw5LAotICAgIDk1LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMTE0LDI5LDAsMCwwLDk5LDMsCi0gICAgMCwwLDAsMSwwLDAsMCw0LDAsMCwwLDksMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDMxLDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMjQsMSwKLSAgICAwLDEyNCwyLDAsMTAwLDEsMCwxMDAsMiwwLDEwMCwzLDAsMTAwLDQsMCwKLSAgICAxMjQsMywwLDEzMSw0LDIsODMsNDEsNSwxMjIsMTMwLDgyLDEwMSwxMTYsMTE3LDExNCwKLSAgICAxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksCi0gICAgMTE2LDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsCi0gICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw4NCwxMDQsMTAxLDMyLDM5LDEwMCw5NywxMTYsOTcsMzksMzIsOTcsMTE0LDEwMywxMTcsCi0gICAgMTA5LDEwMSwxMTAsMTE2LDMyLDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTcsMTEwLDEyMSwzMiwKLSAgICAxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTE2LDEyMSwxMTIsMTAxLDMyLDExNiwxMDQsOTcsMTE2LAotICAgIDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDQwLDQxLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsCi0gICAgMTE0LDExNiwxMTUsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDE3NiwwLAotICAgIDAsMCwyMTgsMTIsMTAwLDExMSwxMTAsMTE2LDk1LDEwNSwxMTAsMTA0LDEwMSwxMTQsMTA1LDExNiwKLSAgICA4NCwxMTQsMTE4LDAsMCwwLDQxLDIsMTE0LDExNCwwLDAsMCwyMTgsNyw5OSwKLSAgICAxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSw0MSw0LDExNCw3MSwwLDAsMCwxMTQsNTMsMCwKLSAgICAwLDAsMTE0LDM1LDAsMCwwLDExNCw0MiwxLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTQsMTE1LDExMSwxMTcsCi0gICAgMTE0LDk5LDEwMSw5NSwxMTYsMTExLDk1LDk5LDExMSwxMDAsMTAxLDI0Niw1LDAsMCwxMTUsCi0gICAgNCwwLDAsMCwwLDUsMTgsMSwxMjIsMjcsODMsMTExLDExNywxMTQsOTksMTAxLAotICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNiwxMTEsCi0gICAgOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDEwLDAsCi0gICAgMCwwLDQzLDAsMCwwLDY3LDAsMCwwLDExNSwxNzcsMSwwLDAsMTI0LAotICAgIDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEwMCwxLAotICAgIDAsMTI1LDMsMCwxMjEsMTYsMCwxMTYsMSwwLDEyNCwyLDAsMTMxLDEsMCwKLSAgICAxMjUsNCwwLDg3LDExMCwyNCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNjMsCi0gICAgMCwxLDEsMSwxMDAsMSwwLDEyNSw0LDAsODksMTEwLDIwMiwwLDg4LDEyMSwKLSAgICAxOSwwLDEyNCwwLDAsMTA2LDMsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDUsCi0gICAgMCw4NywxMTAsMTgsMCw0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDEwMywwLDEsCi0gICAgMSwxLDg5LDExMCwxNjIsMCw4OCwxMTYsNSwwLDEyNCw1LDAsMTAwLDIsMCwKLSAgICAyNSwxMzEsMSwwLDEyNSwzLDAsMTIxLDE5LDAsMTI0LDAsMCwxMDYsNiwwLAotICAgIDEyNCw0LDAsMTMxLDEsMCwxMjUsNiwwLDg3LDExMCwxOCwwLDQsMTE2LDcsCi0gICAgMCwxMDcsMTAsMCwxMTQsMTU5LDAsMSwxLDEsODksMTEwLDEwNiwwLDg4LDEyMSwKLSAgICAzNCwwLDExNiw4LDAsMTI0LDYsMCwxMDAsMywwLDEyNCw1LDAsMTAwLDQsCi0gICAgMCwxMjQsMSwwLDEwMCw1LDAsMTI0LDQsMCwxMzEsMSwzLDEyNSw3LDAsCi0gICAgODcsMTEwLDI0LDAsNCwxMTYsOSwwLDExNiwxMCwwLDEwMiwyLDAsMTA3LDEwLAotICAgIDAsMTE0LDIyMCwwLDEsMSwxLDg5LDExMCw0NSwwLDg4LDExNiwxMSwwLDEwMCwKLSAgICA2LDAsMTI0LDQsMCwxMjQsMiwwLDEzMSwzLDAsMSwxMTYsMTIsMCwxMjQsCi0gICAgNywwLDEwMCw0LDAsMTI0LDEsMCwxMDAsNywwLDEyNCw0LDAsMTAwLDgsCi0gICAgMCwxMjQsMiwwLDEzMSwxLDMsODMsMTI0LDAsMCwxMDYsNiwwLDEyNCwyLAotICAgIDAsMTMxLDEsMCwxMjUsOCwwLDEyNCwwLDAsMTA2LDEzLDAsMTI0LDgsMCwKLSAgICAxMjQsMiwwLDEzMSwyLDAsMTI1LDksMCwxMTYsMTEsMCwxMDAsOSwwLDEyNCwKLSAgICAyLDAsMTMxLDIsMCwxLDExNiwxNCwwLDEwNiwxNSwwLDEyLDExNCwxNzMsMSwKLSAgICAxMjQsNCwwLDEwMCwxLDAsMTA3LDksMCwxMTQsMTczLDEsMTI0LDMsMCwxMDAsCi0gICAgMSwwLDEwNyw5LDAsMTE0LDE3MywxLDExNiwxNiwwLDEyNCw5LDAsMTI0LDMsCi0gICAgMCwxMTYsMTcsMCwxMjQsOCwwLDEzMSwxLDAsMTMxLDMsMCwxMjUsNiwwLAotICAgIDEyMSwzNiwwLDEyNCwwLDAsMTA2LDE4LDAsMTI0LDIsMCwxMjQsNCwwLDEyNCwKLSAgICA2LDAsMTMxLDMsMCwxLDExNiwxMSwwLDEwMCwxMCwwLDEyNCw0LDAsMTMxLAotICAgIDIsMCwxLDg3LDExMywxNzMsMSw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDE2OSwKLSAgICAxLDEsMSwxLDg5LDExMywxNzMsMSw4OCwxMTAsMCwwLDEyNCw5LDAsODMsCi0gICAgNDEsMTEsMTIyLDE5MCw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwKLSAgICAxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywKLSAgICAxMTAsMTE1LDExMiwxMDEsOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiwKLSAgICA5NSw5OSwxMTEsMTAwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICA4MiwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksCi0gICAgMTExLDEwMCwxMDEsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTIsOTcsMTE2LAotICAgIDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw0NiwzMiw4NCwxMTEsMzIsMTE5LDExNCwKLSAgICAxMDUsMTE2LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OCwxMjEsMTE2LDEwMSwKLSAgICA5OSwxMTEsMTAwLDEwMSw0NCwzMiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDMyLDEwOSwKLSAgICAxMTcsMTE1LDExNiwzMiw5NywxMDgsMTE1LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LAotICAgIDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiw3OCwxMTQsMTg0LDAsMCwwLDExNCwxODgsMCwwLDAsMTE0LDY3LDAsCi0gICAgMCwwLDExNCwzNSwwLDAsMCwxMjIsMTMsMTIzLDEyNSwzMiwxMDksOTcsMTE2LDk5LAotICAgIDEwNCwxMDEsMTE1LDMyLDEyMywxMjUsMTE0LDE0MSwwLDAsMCwxMTQsMTQyLDAsMCwwLAotICAgIDEyMiwxOSw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLDExNCwKLSAgICAxMTEsMTA5LDMyLDEyMywxMjUsMTIyLDEwLDExOSwxMTQsMTExLDExNiwxMDEsMzIsMTIzLDMzLDExNCwKLSAgICAxMjUsNDEsMTksMTE0LDIzOSwwLDAsMCwxMTQsMTMyLDAsMCwwLDExNCwxMjMsMCwKLSAgICAwLDAsMTE0LDM3LDEsMCwwLDExNCwzNSwxLDAsMCwxMTQsMTQsMCwwLAotICAgIDAsMTE0LDQwLDEsMCwwLDExNCw0MCwwLDAsMCwxMTQsMTkxLDAsMCwwLAotICAgIDExNCwxNTQsMCwwLDAsMTE0LDE4NywwLDAsMCwxMTQsMTUzLDAsMCwwLDExNCwKLSAgICAxOTYsMCwwLDAsMTE0LDQ1LDEsMCwwLDExNCw3LDAsMCwwLDIxOCwxOSwKLSAgICAxMDAsMTExLDExMCwxMTYsOTUsMTE5LDExNCwxMDUsMTE2LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwKLSAgICAxMTEsMTAwLDEwMSwxMTQsMTk5LDAsMCwwLDExNCwzMSwwLDAsMCwxMTQsMzksMSwKLSAgICAwLDAsNDEsMTAsMTE0LDcxLDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LDE0MiwKLSAgICAwLDAsMCwxMTQsMTg5LDAsMCwwLDExNCwxNDEsMCwwLDAsMjE4LDIsMTE1LAotICAgIDExNiwxMTQsNTMsMCwwLDAsMjE4LDEwLDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDAsOTcsCi0gICAgMTE2LDk3LDExNCwyMDIsMCwwLDAsOTAsMTEsOTksMTExLDEwMCwxMDEsOTUsMTExLDk4LAotICAgIDEwNiwxMDEsOTksMTE2LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDExNCwxNiwxLDAsMCwyNTQsNSwwLDAsMTE1LDc4LDAsMCwKLSAgICAwLDAsNywxNSwxLDYsMSwzLDEsMTYsMSwxMywxLDExLDIsMywKLSAgICAxLDE5LDEsMTMsMSw1LDIsMTYsMSwzLDEsMTksMSwxMywxLDUsCi0gICAgMiwzLDEsOSwxLDEyLDEsMTMsMSwxOSwxLDUsMiw5LDEsNywKLSAgICAxLDE1LDEsNiwxLDcsMSwxNSwxLDE4LDEsMTMsMSwyMiwxLDEyLAotICAgIDEsOSwxLDE1LDEsMywxLDE5LDEsMTcsMSwxMywxLDgsMSwxMjIsCi0gICAgMjEsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLAotICAgIDExNiw5NSw5OSwxMTEsMTAwLDEwMSw3OCwxMTQsMTM5LDAsMCwwLDQxLDEwLDExNCw1NywKLSAgICAwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCwzNiwxLAotICAgIDAsMCwxMTQsMzcsMSwwLDAsMTE0LDM5LDEsMCwwLDExNCwzOCwxLDAsCi0gICAgMCwxMTQsMTcsMSwwLDAsMTE0LDQ1LDEsMCwwLDExNCwxNiwxLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwxMTQsMzQsMSwwLDAsMTk2LDUsMCwwLDExNSwxNCwwLAotICAgIDAsMCwxMiwyLDEyLDgsMTIsMTMsMTIsMTAsMTIsNywxMiwxMCwxOCw4LAotICAgIDExNCwzNCwxLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDAsMCw0LDAsMCwwLDAsMCwwLDAsMTE1LDExMiwwLDAsMCwxMDEsCi0gICAgMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsCi0gICAgMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwKLSAgICAxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsCi0gICAgMCwwLDkwLDYsMCwxMDEsNywwLDEzNSwwLDAsMTAyLDEsMCwxMDAsOCwKLSAgICAwLDEwMCw5LDAsMTM0LDAsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNywwLAotICAgIDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLDAsMTMxLDEsMCw5MCw5LDAsMTAwLAotICAgIDEyLDAsMTAwLDEzLDAsMTMyLDAsMCw5MCwxMCwwLDEzNSwwLDAsODMsNDEsCi0gICAgMTQsMjE4LDEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsMTAzLDY2LAotICAgIDk3LDExNSwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsCi0gICAgOTksMTA4LDk3LDExNSwxMTUsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDEwNSwxMDksMTEyLDEwOCwKLSAgICAxMDEsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDMyLDExMiwxMTQsMTExLDExNiwxMTEsOTksMTExLDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLAotICAgIDEwMCwxMTUsMzIsMTE2LDEwNCw5NywxMTYsMTAsMzIsMzIsMzIsMzIsMTE0LDEwMSwxMTMsMTE3LAotICAgIDEwNSwxMTQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiwKLSAgICAxMTcsMTE1LDk3LDEwMywxMDEsNDYsOTksMywwLDAsMCwwLDAsMCwwLDMsCi0gICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMjIsMCwwLDAsCi0gICAgMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMjQsMiwwLDEyNCwwLDAsOTUsCi0gICAgMSwwLDEwMCwxLDAsODMsNDEsMiwxMjIsNzUsNjcsOTcsOTksMTA0LDEwMSwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwKLSAgICA5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsOTgsCi0gICAgMTIxLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEwMiwxMDUsCi0gICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDc4LDQxLDIsMTE0LDY3LDAsMCwwLDExNCwzNSwwLAotICAgIDAsMCw0MSwzLDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwzNSwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwxMTQsNzIsMCwwLDAsNTUsNiwwLDAsMTE1LDQsMCwwLDAsCi0gICAgMCwzLDksMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAotICAgIDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLDAsMCwKLSAgICAwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwzNCwKLSAgICAwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDYsMCwwLDEwNywKLSAgICAyLDAsMTExLDMzLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTA2LDEsCi0gICAgMCwxMDcsMiwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsMjI1LDAsMCwwLDExNCwKLSAgICA2MywwLDAsMCw0MSwyLDExNCw3MSwwLDAsMCwxMTQsMjI4LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwKLSAgICAyMzAsMCwwLDAsNjEsNiwwLDAsMTE1LDQsMCwwLDAsMCwxLDE4LAotICAgIDEsMTIyLDE3LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwKLSAgICAxMDEsMTEzLDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwKLSAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDI2LDAsMCwwLDExNiwwLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsMTE2LDAsMCwxMjQsMCwwLAotICAgIDEwNiwyLDAsMTMxLDEsMCw2NSw4Myw0MSwxLDc4LDQxLDMsMjE4LDQsMTA0LAotICAgIDk3LDExNSwxMDQsMTE0LDY3LDAsMCwwLDExNCwzNSwwLDAsMCw0MSwxLDExNCwKLSAgICA3MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwyMTgsOCw5NSw5NSwxMDQsOTcsMTE1LDEwNCw5NSw5NSw2NSw2LDAsCi0gICAgMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDQsOTcsMTE1LDEwNCw5NSw5NSw5OSwyLDAsCi0gICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDMsMCwKLSAgICAwLDAsMTE1LDIyLDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMjQsMCwwLAotICAgIDEzMSwyLDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwxLDAsODMsNDEsMSwxMjIsCi0gICAgMTAwLDc2LDExMSw5NywxMDAsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTAyLAotICAgIDExNCwxMTEsMTA5LDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwKLSAgICAzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsCi0gICAgMzIsODUsMTE1LDEwMSwzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiw0MSwzLDIxOCw1LDExNSwxMTcsMTEyLDEwMSwxMTQsMTE0LDQ5LAotICAgIDEsMCwwLDExNCw1LDEsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLDExNCwKLSAgICAxNTksMCwwLDAsNDEsMSwxMTQsMjI1LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDExNCw1LDEsMCwwLDY4LDYsMCwwLDExNSwyLAotICAgIDAsMCwwLDAsMTAsMTIyLDIyLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLAotICAgIDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsCi0gICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSw3LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCw4Myw0MSwxLAotICAgIDEyMiw1OCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsCi0gICAgMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMzIsOTcsMTE1LDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsOTgsMTIxLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDQxLDEsMTE0LDM1LAotICAgIDAsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIzOSwKLSAgICAwLDAsMCw4MCw2LDAsMCwxMTUsMiwwLDAsMCwwLDMsMTIyLDIzLAotICAgIDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDIsCi0gICAgMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDMsMCwwLDAsOCwwLDAsMCw2NywwLDAsMCwxMTUsNDEsMCwwLAotICAgIDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTAwLDEsMCwxMzEsMiwwLAotICAgIDE0MywxNywwLDEyNSwyLDAsMTI0LDIsMCwxMDYsMiwwLDEzMSwwLDAsODMsCi0gICAgODcsMTAwLDIsMCw4MSw4OCwxMDAsMiwwLDgzLDQxLDMsMTIyLDM5LDgyLDEwMSwKLSAgICAxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDk3LDExNiw5NywzMiwxMDIsMTE0LAotICAgIDExMSwxMDksMzIsMTEyLDk3LDExNiwxMDQsMzIsOTcsMTE1LDMyLDExNCw5NywxMTksMzIsOTgsCi0gICAgMTIxLDExNiwxMDEsMTE1LDQ2LDIxOCwxLDExNCw3OCw0MSwzLDExNCw0OSwwLDAsMCwKLSAgICAxMTQsNTAsMCwwLDAsOTAsNCwxMTQsMTAxLDk3LDEwMCw0MSwzLDExNCw3MSwwLAotICAgIDAsMCwxMTQsMzUsMCwwLDAsMTE0LDU0LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw0MCwxLDAsMCwKLSAgICA4NSw2LDAsMCwxMTUsNCwwLDAsMCwwLDIsMjEsMSwxMjIsMTksNzAsCi0gICAgMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMCw5NywKLSAgICAxMTYsOTcsNDEsMTEsMTE0LDU3LDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsNTgsCi0gICAgMCwwLDAsMTE0LDU5LDAsMCwwLDExNCw3MiwwLDAsMCwxMTQsMjMwLDAsCi0gICAgMCwwLDExNCw1MSwxLDAsMCwxMTQsMTU3LDAsMCwwLDExNCw1LDEsMCwKLSAgICAwLDExNCwyMzksMCwwLDAsMTE0LDQwLDEsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDQxLDEsMTE0LDIyNSwwLDAsMCwxMTQsNSwwLDAsCi0gICAgMCwxMTQsNDksMSwwLDAsNTAsNiwwLDAsMTE1LDE0LDAsMCwwLDEyLAotICAgIDMsNiwyLDEyLDYsMTIsNCwxMiwzLDI0LDEyLDE4LDUsMTE0LDQ5LDEsCi0gICAgMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsCi0gICAgMCwwLDAsNjQsMCwwLDAsMTE1LDY0LDAsMCwwLDEwMSwwLDAsOTAsCi0gICAgMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLAotICAgIDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsCi0gICAgMTMyLDAsMCw5MCw1LDAsMTAwLDYsMCwxMDAsNywwLDEwMCw4LDAsMTAwLAotICAgIDksMCwxMzIsMCwxLDkwLDYsMCwxMDAsMTAsMCw4Myw0MSwxMSwxMTQsOSwKLSAgICAxLDAsMCwxMjIsNjIsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsCi0gICAgODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTcsMTE1LDEwNSwKLSAgICAxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsCi0gICAgMTAxLDEwOSw0Niw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwKLSAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSwzNiwwLDAsMCwxMTYsMCwwLAotICAgIDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEwNSwyLDAsMTI0LDIsMCwxMDYsCi0gICAgMSwwLDEwMCwxLDAsNTQsMTI0LDIsMCwxMDYsMiwwLDEwMCwyLDAsNTQsCi0gICAgODMsNDEsMywxMjIsMzMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDksMTAxLDExNiw5NywxMDAsOTcsMTE2LDk3LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDExMiw5NywxMTYsMTA0LDQ2LDExNCwxODQsMCwwLDAsMTE0LDE4NSwwLDAsMCwKLSAgICA0MSwzLDExNCwzOSwwLDAsMCwyMTgsOCwxMTUsMTE2LDk1LDEwOSwxMTYsMTA1LDEwOSwKLSAgICAxMDEsOTAsNywxMTUsMTE2LDk1LDExNSwxMDUsMTIyLDEwMSw0MSwzLDExNCw3MSwwLDAsCi0gICAgMCwxMTQsMzUsMCwwLDAsMTE0LDQ3LDEsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwzNywxLDAsMCw5NSwKLSAgICA2LDAsMCwxMTUsNCwwLDAsMCwwLDIsMTIsMSwxMjIsMjcsODMsMTExLAotICAgIDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTIsCi0gICAgOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsOTksNCwwLDAsMCwwLDAsCi0gICAgMCwwLDUsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsMzQsCi0gICAgMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDQsMCwxMjQsCi0gICAgMCwwLDEwNiwxLDAsMTI0LDIsMCwxMjQsMywwLDEwMCwxLDAsMTI0LDQsCi0gICAgMCwxMzEsMiwxLDgzLDQxLDIsNzgsMjE4LDUsOTUsMTA5LDExMSwxMDAsMTAxLDQxLAotICAgIDIsMTE0LDE0NSwwLDAsMCwxMTQsMzgsMSwwLDAsNDEsNSwxMTQsNzEsMCwKLSAgICAwLDAsMTE0LDE0MiwwLDAsMCwxMTQsMTQxLDAsMCwwLDExNCw1MywwLDAsCi0gICAgMCwxMTQsNDIsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDUsMCwwLDAsMTE0LDM5LDEsMCwwLDEwMCw2LDAsMCwxMTUsNCwKLSAgICAwLDAsMCwwLDIsMTIsMSwxMjIsMzIsODMsMTExLDExNywxMTQsOTksMTAxLDcwLAotICAgIDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNCw1NSwxLDAsMCwxMDUsMTgyLAotICAgIDEsMCwwLDk5LDMsMCwwLDAsMSwwLDAsMCw5LDAsMCwwLAotICAgIDE3LDAsMCwwLDY3LDAsMCwwLDExNSw1MywxLDAsMCwxMTYsMCwwLAotICAgIDEyNCwxLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDQsMCwxMjUsNSwwLDEwMywKLSAgICAwLDAsMTI1LDYsMCwxMjAsNTQsMCwxMjQsNCwwLDExNCw4MCwwLDExNiwxLAotICAgIDAsMTI0LDQsMCwxMzEsMSwwLDEyLDExNCw4MCwwLDExNiwwLDAsMTI0LDQsCi0gICAgMCwxMzEsMSwwLDkyLDIsMCwxMjUsNCwwLDEyNSw3LDAsMTI0LDYsMCwKLSAgICAxMDYsMiwwLDEyNCw3LDAsMTMxLDEsMCwxLDExMywyNywwLDg3LDEyMCwxMzIsCi0gICAgMCwxMTYsMywwLDEyNCw2LDAsMTMxLDEsMCw2OCw5MywxMTgsMCwxMjUsNywKLSAgICAwLDExNiw0LDAsMTI0LDQsMCwxMjQsNywwLDEzMSwyLDAsMTI1LDQsMCwKLSAgICAxMjEsMTcsMCwxMTYsNSwwLDEwNiw2LDAsMTI0LDQsMCwxMzEsMSwwLDEsCi0gICAgODcsMTEzLDk0LDAsNCwxMTYsNywwLDEwNywxMCwwLDExNCwxNTUsMCwxLDEsCi0gICAgMSwxMTksOTQsMCw4OSwxMTMsOTQsMCw0LDExNiw4LDAsMTA3LDEwLDAsMTE0LAotICAgIDIxMSwwLDEsMTI1LDgsMCwxLDEyMiwyNSwwLDExNiw5LDAsMTAwLDEsMCwKLSAgICAxMjQsNCwwLDEyNCw4LDAsMTMxLDMsMCwxLDEwMCwyLDAsODMsODcsODksCi0gICAgMTAwLDIsMCwxMDAsMiwwLDEyNSw4LDAsMTI2LDgsMCw4OCwxMTMsOTQsMCwKLSAgICA4OCwxMTMsOTQsMCw4NywxMjEsMzMsMCwxMTYsMTAsMCwxMjQsMSwwLDEyNCwyLAotICAgIDAsMTI0LDMsMCwxMzEsMywwLDEsMTE2LDksMCwxMDAsMywwLDEyNCwxLAotICAgIDAsMTMxLDIsMCwxLDg3LDExMCw1MywwLDQsMTE2LDgsMCwxMDcsMTAsMCwKLSAgICAxMTQsNDgsMSwxLDEyNSw4LDAsMSwxMjIsMjEsMCwxMTYsOSwwLDEwMCwxLAotICAgIDAsMTI0LDEsMCwxMjQsOCwwLDEzMSwzLDAsMSw4Nyw4OSwxMDAsMiwwLAotICAgIDEwMCwyLDAsMTI1LDgsMCwxMjYsOCwwLDg4LDExMCwxLDAsODgsMTAwLDIsCi0gICAgMCw4Myw0MSw0LDEyMiwyNyw4NywxMTQsMTA1LDExNiwxMDEsMzIsOTgsMTIxLDExNiwxMDEsCi0gICAgMTE1LDMyLDEwMCw5NywxMTYsOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsCi0gICAgNDYsMTIyLDI3LDk5LDExMSwxMTcsMTA4LDEwMCwzMiwxMTAsMTExLDExNiwzMiw5OSwxMTQsMTAxLAotICAgIDk3LDExNiwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNTgsMzIsMTIzLDMzLDExNCwxMjUsNzgsMTIyLAotICAgIDEyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwxMDAsMzIsMTIzLDMzLDExNCwxMjUsNDEsMTEsMTE0LAotICAgIDM4LDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsMjI0LDAsMCwwLDExNCwzMywKLSAgICAwLDAsMCwxMTQsMjgsMCwwLDAsMTE0LDMsMCwwLDAsOTAsNSwxMDksCi0gICAgMTA3LDEwMCwxMDUsMTE0LDIxOCwxNSw3MCwxMDUsMTA4LDEwMSw2OSwxMjAsMTA1LDExNSwxMTYsMTE1LAotICAgIDY5LDExNCwxMTQsMTExLDExNCwxMTQsNDAsMCwwLDAsMTE0LDE1MywwLDAsMCwxMTQsCi0gICAgNTUsMCwwLDAsNDEsOSwxMTQsNzEsMCwwLDAsMTE0LDM1LDAsMCwwLAotICAgIDExNCw1MywwLDAsMCwxMTQsNTUsMSwwLDAsMTE0LDIzNCwwLDAsMCwxMTQsCi0gICAgMTMxLDAsMCwwLDExNCwyNywwLDAsMCwxMTQsMjMsMCwwLDAsMTE0LDQxLAotICAgIDEsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDExNCwzOCwxLDAsMCwxMDUsNiwwLDAsMTE1LDM4LDAsMCwwLAotICAgIDAsMiwxOCwxLDYsMiwyMiwxLDE4LDEsMTcsMiwxOSwxLDE1LDEsCi0gICAgMywxLDE3LDEsMTMsMiw3LDEsMTgsMywxNiwxLDI3LDEsMywxLAotICAgIDE2LDEsMTcsMSwxOCwyLDEyMiwyNSw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LAotICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsCi0gICAgOTcsNzgsNDEsNywxMTQsNTcsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw1OCwKLSAgICAwLDAsMCwxMTQsNTksMCwwLDAsMTE0LDM3LDEsMCwwLDExNCwzOSwxLAotICAgIDAsMCwxMTQsMzgsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDksMSwwLDAsCi0gICAgOTEsNiwwLDAsMTE1LDgsMCwwLDAsMTIsMiw2LDIsMTIsNSwxMiwKLSAgICA1LDExNCw5LDEsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDE2LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLAorICAgIDExNCwzLDAsMCwwLDExNCwxNTgsMCwwLDAsMTE0LDkyLDAsMCwwLDExNCwKKyAgICAxNTksMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsMTU1LDAsMCwwLDExNCwxMzgsCisgICAgMCwwLDAsMTE0LDEzOSwwLDAsMCwxMTQsMTQ2LDAsMCwwLDExNCw4NCwwLAorICAgIDAsMCwxMTQsMTU2LDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDEwOSwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMTE0LDE2MCwwLDAsMCwzLDMsMCwwLDExNSwzMCwKKyAgICAwLDAsMCwxMiw3LDYsMiwxOCw5LDMsMSwyMSw2LDMsMSwxOCwKKyAgICA4LDE4LDQsMTgsOSwxOCw5LDMsMSwyMSw1LDMsMSwyMSw1LDMsCisgICAgMSwxMTQsMTYwLDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLAogICAgIDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LDQ2LDAsMCwwLAogICAgIDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsCiAgICAgMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwKICAgICAwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsMCw4Myw0MSw3LAotICAgIDExNCw4LDEsMCwwLDEyMiw0NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE5LDEwNCwKLSAgICAxMDUsOTksMTA0LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMTE1LDMyLDExNSwxMTEsMTE3LDExNCwKLSAgICA5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMTUsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLAotICAgIDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsNzYsMCwwLDAsMTI0LDAsCi0gICAgMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEyNCwwLDAsCi0gICAgMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMTYsMiwwLDEyNCwKLSAgICAzLDAsMTAwLDEsMCwxMjQsMSwwLDEwMCwyLDAsMTI0LDIsMCwxMzEsMSwKLSAgICAyLDEyNSw0LDAsMTE2LDMsMCwxMjQsNCwwLDEwMCwxLDAsMTI0LDEsMCwKLSAgICAxMDAsMywwLDEyNCwyLDAsMTMxLDEsMiw4Myw0MSw0LDc4LDExNCw2NywwLAotICAgIDAsMCwxMTQsMzUsMCwwLDAsMTE0LDE0MSwwLDAsMCw0MSw0LDExNCwyMzksCi0gICAgMCwwLDAsMTE0LDQwLDEsMCwwLDExNCwxOTEsMCwwLDAsMTE0LDE5NiwwLAotICAgIDAsMCw0MSw1LDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwzNSwKLSAgICAwLDAsMCwxMTQsNTMsMCwwLDAsMTE0LDQ4LDEsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxNiwxLDAsCi0gICAgMCwxMzgsNiwwLDAsMTE1LDgsMCwwLDAsMCwxLDE1LDEsMTUsMSwKLSAgICAyNCwxLDEyMiwyOSw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwKLSAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLAotICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsCi0gICAgMiwxMjIsMzksODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMzIsMTE1LDExMSwKLSAgICAxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsNCwwLDAsMCwKLSAgICA0MSwyLDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxNywxLDAsMCwKLSAgICAxNDQsNiwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwzMSw4MywxMTEsMTE3LAotICAgIDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLAotICAgIDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDc4LDQxLDYsMTE0LAotICAgIDU3LDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDU5LAotICAgIDAsMCwwLDExNCwxNiwxLDAsMCwxMTQsMTcsMSwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAotICAgIDAsMTE0LDgsMSwwLDAsMTM0LDYsMCwwLDExNSw2LDAsMCwwLDEyLAotICAgIDIsNiwyLDEyLDYsMTE0LDgsMSwwLDAsOTksMCwwLDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCw2NCwwLDAsMCwxMTUsCi0gICAgMTMwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLAotICAgIDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLAotICAgIDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsCi0gICAgMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMSw3LDAsMTAwLDgsMCwKLSAgICAxMDAsOSwwLDEzMiwwLDAsMTMxLDEsMCw5MCw4LDAsMTAwLDEwLDAsMTAwLAotICAgIDExLDAsMTMyLDAsMCw5MCw5LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsCi0gICAgMCw5MCwxMCwwLDEwMCwxNCwwLDEwMCwxNSwwLDEzMiwwLDAsOTAsMTEsMCwKLSAgICAxMDEsNywwLDEwMCwxNiwwLDEwMCwxNywwLDEzMiwwLDAsMTMxLDEsMCw5MCwKLSAgICAxMiwwLDEwMCwxOCwwLDgzLDQxLDE5LDIxOCwxOSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LAotICAgIDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsOTMsNzYsCi0gICAgMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LAotICAgIDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiw4NCwxMDQsMTAxLDMyLDk5LDExMSwxMTAsMTE1LDExNiwxMTQsMTE3LDk5LDExNiwxMTEsCi0gICAgMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiwxMTYsMTExLAotICAgIDMyLDExOSwxMTEsMTE0LDEwNywzMiwxMTksMTA1LDExNiwxMDQsMzIsNzAsMTA1LDEwOCwxMDEsNzAsCi0gICAgMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5OSwzLDAsMCwKLSAgICAwLDAsMCwwLDAsMywwLDAsMCwyLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwyMiwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwwLDEyNCwKLSAgICAyLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLAotICAgIDIsMTE0LDY3LDAsMCwwLDExNCwzNSwwLDAsMCw0MSwzLDExNCw3MSwwLAotICAgIDAsMCwxMTQsNjcsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw3MiwwLDAsMCwKLSAgICAxNjEsNiwwLDAsMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjgsNjksCi0gICAgMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsCi0gICAgMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDM0LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEwNiwwLAotICAgIDAsMTA3LDIsMCwxMTEsMzMsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwKLSAgICAxMDYsMSwwLDEwNywyLDAsODMsNDEsMSw3OCw0MSwyLDExNCwyMjUsMCwwLAotICAgIDAsMTE0LDYzLDAsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLDExNCwyMjgsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAotICAgIDAsMTE0LDIzMCwwLDAsMCwxNjUsNiwwLDAsMTE1LDQsMCwwLDAsMCwKLSAgICAxLDE4LDEsMTIyLDI2LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LAotICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsOTksCi0gICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMjYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwKLSAgICAxLDAsMTMxLDEsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDIsMCwxMzEsMSwKLSAgICAwLDY1LDgzLDQxLDEsNzgsNDEsMywxMTQsNTAsMSwwLDAsMTE0LDY3LDAsCi0gICAgMCwwLDExNCwzNSwwLDAsMCw0MSwxLDExNCw3MSwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNTEsMSwKLSAgICAwLDAsMTY5LDYsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjgsNjksCi0gICAgMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsNDYsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsOTksMiwwLDAsMCwKLSAgICAwLDAsMCwwLDQsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDE4MywwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxNDMsMjksCi0gICAgMCwxLDExNiwxLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwxLDAsMTI0LDAsCi0gICAgMCwxMDYsNCwwLDEzMSwzLDAsMTI1LDIsMCw4NywxMDAsMSwwLDgxLDg4LAotICAgIDExNiw1LDAsMTAwLDIsMCwxMjQsMCwwLDEwNiw0LDAsMTMxLDIsMCwxLAotICAgIDEyNCwwLDAsMTA2LDYsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDMsMCwxMjQsCi0gICAgMywwLDExNCwxMjQsMCwxMTYsNywwLDEyNCwyLDAsMTAwLDMsMCwxMzEsMiwKLSAgICAwLDEyLDExNCwxMjQsMCwxMTYsOCwwLDEyNCwwLDAsMTA2LDQsMCwxMzEsMSwKLSAgICAwLDEwMCw0LDAsMjUsMTAzLDEsMCwxMjQsMiwwLDk1LDksMCwxMTAsMCwKLSAgICAwLDEyNCwwLDAsMTI0LDIsMCw5NSwxMCwwLDEyNCwyLDAsMTA2LDExLDAsCi0gICAgMTI0LDIsMCw5NSwxMiwwLDEyNCwzLDAsMTE1LDE3OSwwLDEyNCwyLDAsMTA2LAotICAgIDEyLDAsMTA2LDEzLDAsMTAwLDUsMCwxMzEsMSwwLDEwMCw0LDAsMjUsMTI0LAotICAgIDIsMCw5NSwxMiwwLDExMCwwLDAsMTI0LDIsMCw4Myw0MSw2LDEyMiwyNSwKLSAgICA3NiwxMTEsOTcsMTAwLDMyLDk3LDExMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLAotICAgIDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw3OCwxMjIsMzMsMTAxLDEyMCwxMTYsMTAxLAotICAgIDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsMTE0LDI0NywwLAotICAgIDAsMCwxMTQsODQsMCwwLDAsMTE0LDExNiwwLDAsMCw0MSwxNCwxMTQsNjksCi0gICAgMCwwLDAsMTE0LDExNCwwLDAsMCwxMTQsMTA2LDAsMCwwLDkwLDEyLDEwOCwKLSAgICAxMTEsOTcsMTAwLDk1LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksMTE0LDM1LDAsMCwwLAotICAgIDExNCwxNTMsMCwwLDAsMTE0LDIyMCwwLDAsMCwxMTQsNjAsMCwwLDAsMTE0LAotICAgIDM4LDAsMCwwLDExNCwyNDcsMCwwLDAsMTE0LDIwNSwwLDAsMCwxMTQsNTcsCi0gICAgMCwwLDAsMTE0LDI1MSwwLDAsMCwxMTQsMzIsMCwwLDAsNDEsNCwxMTQsCi0gICAgNzEsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMTgwLDAsMCwwLDExNCwyMjAsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMTE0LDUsMSwwLDAsMTcyLDYsMCwwLDExNSwyNCwwLDAsMCwKLSAgICAwLDUsMTMsMSw5LDEsMjEsMSwxNiwxLDE1LDEsMjIsMSwyOCwxLAotICAgIDksMSwxMiwxLDYsMSwyOCwxLDEyMiwzMSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LAotICAgIDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDgsMTExLAotICAgIDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwKLSAgICAwLDAsMiwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsMTE1LDQ4LAotICAgIDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsMTAwLAotICAgIDEsMCwyNSwxMzcsMCwwLDExNiwyLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwKLSAgICAyLDAsMTAwLDMsMCwxMzQsMCwwLDExNiwzLDAsNjgsMTMxLDEsMCwxMzEsCi0gICAgMSwwLDgzLDQxLDQsMTIyLDQ5LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsODQsMTE0LAotICAgIDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwKLSAgICAxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLAotICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0NiwxMTQsMjksMCwwLDAsOTksMSwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCw1MSwwLAotICAgIDAsMCwxMTUsMzEsMCwwLDAsMTI0LDAsMCw5MywyMSwwLDEyNSwxLDAsCi0gICAgMTM2LDAsMCwxMDAsMCwwLDEyNCwxLDAsMjMsMTA3LDIsMCw4NiwxLDExMywKLSAgICAzLDAsMTAwLDEsMCw4Myw0MSwyLDExNCw3MiwwLDAsMCw3OCwxMTQsNCwKLSAgICAwLDAsMCw0MSwyLDExNCwyMiwwLDAsMCwyMTgsNiwxMTUsMTE3LDEwMiwxMDIsCi0gICAgMTA1LDEyMCw0MSwxLDIxOCw5LDEwMiwxMDUsMTA4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzcsMCwwLDAsMTkzLDYsCi0gICAgMCwwLDExNSwyLDAsMCwwLDYsMSwxMjIsNDksNjksMTIwLDExNiwxMDEsMTEwLAotICAgIDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LAotICAgIDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsCi0gICAgMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2Miw0MSw0LDExNCwzOCwKLSAgICAwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDc4LDAsMCwwLDIxOCwxOCw2OSwKLSAgICA4OCw4NCw2OSw3OCw4Myw3Myw3OSw3OCw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSwKLSAgICA4Myw0MSwyLDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDQxLDEsMTE0LDU5LDEsMCwwLDExNCw1LDAsMCwwLDExNCwyMjAsCi0gICAgMCwwLDAsMTkwLDYsMCwwLDExNSw2LDAsMCwwLDAsMiwxOSwxLAotICAgIDE4LDEsMTIyLDMwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwKLSAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywKLSAgICAxMDMsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4MywKLSAgICA0MSwyLDEyMiw2Myw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLAotICAgIDk3LDExNSwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk5LDExNCwKLSAgICAxMDEsOTcsMTE2LDEwMSwzMiw5NywzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSwKLSAgICA5OSwxMTYsNDYsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsNzEsMCwwLDAsCi0gICAgMTE0LDE1OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwxMTQsMTYsMSwwLDAsMTk2LDYsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsMiwxMjIsMjgsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwKLSAgICAxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLAotICAgIDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLAotICAgIDQxLDIsMTIyLDUzLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsCi0gICAgOTcsMTE1LDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNSwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTAsMTExLDMyLDExNSwxMTEsMTE3LAotICAgIDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsMTE0LDQsMCwwLDAsNDEsCi0gICAgMiwxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTcsMSwwLDAsMjAwLAotICAgIDYsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMzAsNjksMTIwLDExNiwxMDEsCi0gICAgMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsCi0gICAgMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwKLSAgICA3LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCw4Myw0MSwxLDEyMiw1OCw4MiwKLSAgICAxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwKLSAgICAxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDIsMTA1LDEwOCwKLSAgICAxMDEsMzIsOTcsMTE1LDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDQxLDEsMTE0LDM1LDAsMCwwLAotICAgIDQxLDIsMTE0LDcxLDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIzOSwwLDAsMCwKLSAgICAyMDQsNiwwLDAsMTE1LDIsMCwwLDAsMCwzLDEyMiwzMiw2OSwxMjAsMTE2LAotICAgIDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICA0NiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNzgsNDEsMTMsCi0gICAgMTE0LDU3LDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LAotICAgIDU5LDAsMCwwLDExNCw3MiwwLDAsMCwxMTQsMjMwLDAsMCwwLDExNCw1MSwKLSAgICAxLDAsMCwxMTQsMTU3LDAsMCwwLDExNCw1LDEsMCwwLDExNCwyMjAsMCwKLSAgICAwLDAsMTE0LDE2LDEsMCwwLDExNCwxNywxLDAsMCwxMTQsMjM5LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDExNCw1NywxLDAsMCwxNTMsNiwwLDAsMTE1LDE4LAotICAgIDAsMCwwLDEyLDYsNiwyLDEyLDQsMTIsNCwxMiwzLDE4LDE4LDEyLAotICAgIDYsMTIsNCwxMiw0LDExNCw1NywxLDAsMCw5OSwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKLSAgICAxMzAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCi0gICAgMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCi0gICAgNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwKLSAgICAwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsOSwwLAotICAgIDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLDAsOTAsCi0gICAgOCwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsOTAsOSwwLDEwMCwxNCwKLSAgICAwLDEwMCwxNSwwLDEzMiwwLDAsOTAsMTAsMCwxMDAsMTYsMCwxMDAsMTcsMCwKLSAgICAxMzIsMCwwLDkwLDExLDAsMTAwLDE4LDAsMTAwLDE5LDAsMTMyLDAsMCw5MCwKLSAgICAxMiwwLDEwMCwyMCwwLDgzLDQxLDIxLDIxOCwxNCw5NSw3OCw5NywxMDksMTAxLDExNSwKLSAgICAxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsOTcsMzgsMSwwLDAsODIsMTAxLDExMiwKLSAgICAxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiwKLSAgICA5Nyw5OSwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDM5LDExNSwzMiwxMTIsOTcsCi0gICAgMTE2LDEwNCw0NiwzMiwzMiw3MywxMTYsMzIsMTE3LDExNSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwLDMyLDMyLDMyLAotICAgIDMyLDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDEwNSwxMTYsMTE1LDMyLDExMiw5NywxMTQsCi0gICAgMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsOTcsMTEwLDEwMCwzMiwKLSAgICAxMDIsMTE0LDExMSwxMDksMzIsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTE2LDMyLDEwOCwxMTEsCi0gICAgMTExLDEwNywxMTUsMzIsMTE3LDExMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsCi0gICAgMTE2LDM5LDExNSwxMCwzMiwzMiwzMiwzMiw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwKLSAgICA0NiwzMiwzMiw4NywxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsOTksMTA0LDk3LAotICAgIDExMCwxMDMsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAzOSwxMTUsMzIsMTExLDExOSwxMTAsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMTQsCi0gICAgMTAxLDk5LDExMSwxMDksMTEyLDExNywxMTYsMTAxLDEwMCw0NCwxMCwzMiwzMiwzMiwzMiwxMTcsCi0gICAgMTE1LDEwNSwxMTAsMTAzLDMyLDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LAotICAgIDQ2LDMyLDMyLDcwLDExMSwxMTQsMzIsMTE2LDExMSwxMTIsNDUsMTA4LDEwMSwxMTgsMTAxLDEwOCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LAotICAgIDExNCwxMDEsMTEwLDExNiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEyLDk3LAotICAgIDExNiwxMDQsMTAsMzIsMzIsMzIsMzIsMTA1LDExNSwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsCi0gICAgMTE2LDEwNCw0Niw5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwKLSAgICAyLDAsMCwwLDY3LDAsMCwwLDExNSw1MiwwLDAsMCwxMjQsMSwwLAotICAgIDEyNCwwLDAsOTUsMCwwLDEyNCwyLDAsMTI0LDAsMCw5NSwxLDAsMTE2LAotICAgIDIsMCwxMjQsMCwwLDEwNiwzLDAsMTMxLDAsMCwxMzEsMSwwLDEyNCwwLAotICAgIDAsOTUsNCwwLDEyNCwzLDAsMTI0LDAsMCw5NSw1LDAsMTAwLDAsMCwKLSAgICA4Myw0MSwxLDc4LDQxLDYsMTE0LDcwLDAsMCwwLDExNCwyNTQsMCwwLDAsCi0gICAgMTE0LDIzMiwwLDAsMCwyMTgsMTYsOTUsMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsCi0gICAgMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwyMTgsMTcsOTUsMTA4LDk3LDExNSwxMTYsOTUsMTEyLAotICAgIDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwyMTgsMTIsOTUsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDEsNCwxMTQsNzEsMCwwLDAsMTE0LAotICAgIDY3LDAsMCwwLDExNCwzNSwwLDAsMCwyMTgsMTEsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDUsMCwwLDAsMTE0LDcyLDAsMCwwLDIxNyw2LDAsMCwxMTUsOCwKLSAgICAwLDAsMCwwLDEsOSwxLDksMSwyMSwxLDEyMiwyMyw5NSw3OCw5NywKLSAgICAxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsMTA1LDExMCwKLSAgICAxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCw0LDAsMCwKLSAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDUzLDAsMCwwLDEyNCwwLAotICAgIDAsMTA2LDAsMCwxMDYsMSwwLDEwMCwxLDAsMTMxLDEsMCw5MiwzLDAsCi0gICAgMTI1LDEsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDIsMCwxMDAsMiwwLDEwNywKLSAgICAyLDAsMTE0LDQzLDAsMTAwLDYsMCw4MywxMjQsMSwwLDEwMCw1LDAsMTAyLAotICAgIDIsMCw4Myw0MSw3LDEyMiw2Miw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywKLSAgICAzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDExMSwxMDIsMzIsNDAsMTEyLDk3LDExNCwxMDEsMTEwLAotICAgIDExNiw0NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NSwxMTAsOTcsMTA5LDEwMSw0NCwzMiwxMTIsCi0gICAgOTcsMTE0LDEwMSwxMTAsMTE2LDQ1LDExMiw5NywxMTYsMTA0LDQ1LDk3LDExNiwxMTYsMTE0LDQ1LAotICAgIDExMCw5NywxMDksMTAxLDQxLDExNCwxMTYsMCwwLDAsMTE0LDMwLDAsMCwwLDExNCwKLSAgICA3LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMjQ3LDAsMCwwLDQxLDIsCi0gICAgMTIyLDMsMTE1LDEyMSwxMTUsMTIyLDQsMTEyLDk3LDExNiwxMDQsNDEsMiwxMTQsNzAsMCwKLSAgICAwLDAsMTE0LDMyLDAsMCwwLDQxLDQsMTE0LDcxLDAsMCwwLDExNCwyMzQsCi0gICAgMCwwLDAsMjE4LDMsMTAwLDExMSwxMTYsMTE0LDk0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwyMyw5NSwxMDIsCi0gICAgMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKLSAgICAxMTAsOTcsMTA5LDEwMSwxMTUsMjIzLDYsMCwwLDExNSw4LDAsMCwwLDAsMiwKLSAgICAyNywxLDEyLDIsNCwzLDEyMiwzOCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsCi0gICAgOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsCi0gICAgMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDM4LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMzEsMCwKLSAgICAwLDkyLDIsMCwxMjUsMSwwLDEyNSwyLDAsMTE2LDEsMCwxMTYsMiwwLAotICAgIDEwNiwzLDAsMTI0LDEsMCwyNSwxMjQsMiwwLDEzMSwyLDAsODMsNDEsMSwKLSAgICA3OCw0MSw0LDExNCw2NywxLDAsMCwxMTQsNjIsMCwwLDAsMTE0LDcsMCwKLSAgICAwLDAsMTE0LDczLDAsMCwwLDQxLDMsMTE0LDcxLDAsMCwwLDkwLDE4LAotICAgIDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTEwLDk3LAotICAgIDEwOSwxMDEsOTAsMTQsMTEyLDk3LDExNiwxMDQsOTUsOTcsMTE2LDExNiwxMTQsOTUsMTEwLDk3LAotICAgIDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAotICAgIDAsMTE0LDYyLDEsMCwwLDIzMyw2LDAsMCwxMTUsNCwwLDAsMCwwLAotICAgIDEsMTgsMSwxMjIsMzEsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCwKLSAgICA5NywxMTYsMTA0LDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsCi0gICAgMTEyLDk3LDExNiwxMDQsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLAotICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTI3LDAsMCwwLDExNiwwLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTMxLDEsMCwxMjUsMSwwLAotICAgIDEyNCwxLDAsMTI0LDAsMCwxMDYsMiwwLDEwNywzLDAsMTE0LDEyMCwwLDEyNCwKLSAgICAwLDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LDAsMTI0LDEsMCwxMzEsMiwKLSAgICAwLDEyNSwyLDAsMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDEwOCwwLAotICAgIDEyNCwyLDAsMTA2LDUsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEwOCwwLDEyNCwKLSAgICAyLDAsMTA2LDYsMCwxMTQsMTA4LDAsMTI0LDIsMCwxMDYsNiwwLDEyNCwwLAotICAgIDAsOTUsNywwLDExMywxMDgsMCwxMTAsMCwwLDEyNCwxLDAsMTI0LDAsMCwKLSAgICA5NSwyLDAsMTEwLDAsMCwxMjQsMCwwLDEwNiw3LDAsODMsNDEsMSw3OCwKLSAgICA0MSw4LDExNCwyMzIsMCwwLDAsMTE0LDYyLDEsMCwwLDExNCw2MywxLDAsCi0gICAgMCwxMTQsNjQsMSwwLDAsMTE0LDcwLDAsMCwwLDExNCwxNzAsMCwwLDAsCi0gICAgMTE0LDIyMSwwLDAsMCwxMTQsMjU0LDAsMCwwLDQxLDMsMTE0LDcxLDAsMCwKLSAgICAwLDkwLDExLDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE3OCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwyMTgsMTIsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLAotICAgIDIzNyw2LDAsMCwxMTUsMTYsMCwwLDAsMCwyLDE4LDEsMTUsMSwyMSwKLSAgICAzLDI3LDEsOSwxLDE4LDEsMTIsMSwxMjIsMjcsOTUsNzgsOTcsMTA5LDEwMSwKLSAgICAxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDExNCwxMDEsOTksOTcsMTA4LAotICAgIDk5LDExNywxMDgsOTcsMTE2LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwKLSAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwKLSAgICAxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMCwwLDEzMSwxLDAsODMsCi0gICAgNDEsMSw3OCw0MSwyLDIxOCw0LDEwNSwxMTYsMTAxLDExNCwxMTQsNjgsMSwwLDAsCi0gICAgNDEsMSwxMTQsNzEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDUsMCwwLDAsMjE4LDgsOTUsOTUsMTA1LDExNiwxMDEsMTE0LDk1LDk1LAotICAgIDI1MCw2LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDIzLDk1LDc4LDk3LAotICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDUsMTE2LAotICAgIDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLAotICAgIDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTE2LDAsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMzEsMSwwLDgzLDQxLDEsCi0gICAgNzgsNDEsMiwxMTQsMzEsMCwwLDAsMTE0LDY4LDEsMCwwLDQxLDEsMTE0LAotICAgIDcxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDIxOCw3LDk1LDk1LDEwOCwxMDEsMTEwLDk1LDk1LDI1Myw2LDAsMCwKLSAgICAxMTUsMiwwLDAsMCwwLDEsMTIyLDIyLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiwKLSAgICA5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDgsMTAxLDExMCw5NSw5NSw5OSwKLSAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LAotICAgIDAsMCwxMDYsMSwwLDEzMSwxLDAsODMsNDEsMiw3OCwxMjIsMjAsOTUsNzgsCi0gICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQwLDEyMywzMywxMTQsCi0gICAgMTI1LDQxLDQxLDIsMTE0LDQ3LDAsMCwwLDExNCwyNTQsMCwwLDAsNDEsMSwKLSAgICAxMTQsNzEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMTE0LDEwMSwwLDAsMCwwLDcsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsMSwxMjIsMjMsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKLSAgICA4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw5OSwyLDAsCi0gICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwxNiwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsMTA2LDAsMCwKLSAgICAxMzEsMCwwLDEwNyw2LDAsODMsNDEsMSw3OCw0MSwxLDExNCw2OCwxLDAsCi0gICAgMCw0MSwyLDExNCw3MSwwLDAsMCwyMTgsNCwxMDUsMTE2LDEwMSwxMDksMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEyLDk1LAotICAgIDk1LDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTE1LDk1LDk1LDMsNywwLDAsMTE1LAotICAgIDIsMCwwLDAsMCwxLDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsCi0gICAgOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsOTksMTExLDExMCwxMTYsOTcsMTA1LDExMCwKLSAgICAxMTUsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCi0gICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsMjAsMCwwLDAsMTI0LDAsMCwKLSAgICAxMDYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEsMTAwLDAsMCwKLSAgICA4Myw0MSwxLDc4LDQxLDIsMTE0LDI1NCwwLDAsMCwxMTQsMjI0LDAsMCwwLAotICAgIDQxLDIsMTE0LDcxLDAsMCwwLDExNCw3MiwxLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjI0LDAsMCwwLAotICAgIDYsNywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyMSw5NSw3OCw5NywKLSAgICAxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTcsMTEyLDExMiwxMDEsCi0gICAgMTEwLDEwMCw3OCw0MSwxMywxMTQsNTcsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCwKLSAgICA1OCwwLDAsMCwxMTQsNTksMCwwLDAsMTE0LDcyLDAsMCwwLDExNCw2NywKLSAgICAxLDAsMCwxMTQsNjIsMSwwLDAsMTE0LDY4LDEsMCwwLDExNCw3MCwxLAotICAgIDAsMCwxMTQsNzEsMSwwLDAsMTE0LDEwMSwwLDAsMCwxMTQsNzMsMSwwLAotICAgIDAsMTE0LDIyNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNjEsMSwwLDAsMjEwLAotICAgIDYsMCwwLDExNSwyMCwwLDAsMCwxMiw1LDYsMiwxMiw2LDEyLDEwLAotICAgIDEyLDQsMTIsMTMsMTIsMywxMiwzLDEyLDMsMTIsMywxMTQsNjEsMSwwLAotICAgIDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMywwLAotICAgIDAsMCw2NCwwLDAsMCwxMTUsMTA2LDAsMCwwLDEwMSwwLDAsOTAsMSwKLSAgICAwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLAotICAgIDkwLDMsMCwxMDEsNCwwLDEwMCwzLDAsMTAwLDQsMCwxMzIsMCwwLDEzMSwKLSAgICAxLDAsOTAsNSwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDkwLDYsCi0gICAgMCwxMDAsNywwLDEwMCw4LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDksMCwKLSAgICAxMDAsMTAsMCwxMzIsMCwwLDkwLDgsMCwxMDAsMTEsMCwxMDAsMTIsMCwxMzIsCi0gICAgMCwwLDkwLDksMCwxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMCwwLDkwLDEwLAotICAgIDAsMTAwLDE1LDAsODMsNDEsMTYsMTE0LDI1MiwwLDAsMCw5OSw0LDAsMCwKKyAgICAyMTgsMTgsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsCisgICAgMTE2LDEwMSwxMjAsMTE2LDEyMiwzNiw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwzMiwxMDksOTcsCisgICAgMTEwLDk3LDEwMywxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDk5LDEsMCwwLDAsMCwKKyAgICAwLDAsMCwxLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDE0LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEsMTAwLDEsCisgICAgMCw4Myw0MSwyLDEyMiwyNCw2NSw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDc4LDQxLAorICAgIDIsMTE0LDU3LDAsMCwwLDExNCwxNDUsMCwwLDAsNDEsMSwxMTQsMTksMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDIzLDAsMCwwLDg0LDMsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgMiwxMjIsMjgsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwKKyAgICAxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksCisgICAgNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMSwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTQsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwKKyAgICAwLDAsMSwxMDAsMSwwLDgzLDQxLDIsMTIyLDYwLDgyLDEwMSwxMDgsMTAxLDk3LAorICAgIDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSwKKyAgICA5OSwxMDcsMzIsMTE0LDEwMSwxMDMsOTcsMTE0LDEwMCwxMDgsMTAxLDExNSwxMTUsMzIsMTExLDEwMiwKKyAgICAzMiw5NywxMTAsMTIxLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTAxLDEyMCw5OSwxMDEsCisgICAgMTEyLDExNiwxMDUsMTExLDExMCwxMTUsNDYsNzgsNDEsMiwxMTQsNTcsMCwwLDAsMTE0LAorICAgIDU4LDAsMCwwLDQxLDQsMTE0LDE5LDAsMCwwLDkwLDgsMTAxLDEyMCw5OSwKKyAgICA5NSwxMTYsMTIxLDExMiwxMDEsOTAsOSwxMDEsMTIwLDk5LDk1LDExOCw5NywxMDgsMTE3LDEwMSwKKyAgICA5MCwxMywxMDEsMTIwLDk5LDk1LDExNiwxMTQsOTcsOTksMTAxLDk4LDk3LDk5LDEwNywxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMzAsCisgICAgMCwwLDAsODgsMywwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwyNywKKyAgICA5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLAorICAgIDEyMCwxMTYsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDc4LDQxLDYsMTE0LDEsCisgICAgMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsMTE0LDMsMCwKKyAgICAwLDAsMTE0LDIzLDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMTE0LDE2NSwwLDAsMCw4MCwzLDAsMCwxMTUsNiwwLDAsMCwxMiwyLAorICAgIDYsMiwxMiw0LDExNCwxNjUsMCwwLDAsOTksMywwLDAsMCwwLDAsCisgICAgMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsODgsCisgICAgMCwwLDAsMTI0LDEsMCwxMDYsMCwwLDEwMCwxLDAsMTI0LDIsMCwxMDAsCisgICAgMiwwLDI0LDEzMSwyLDAsMTI1LDMsMCwxMTYsMSwwLDEyNCwzLDAsMTMxLAorICAgIDEsMCwxMjQsMiwwLDEwNywwLDAsMTE0LDUyLDAsMTE2LDIsMCwxMDAsMywKKyAgICAwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMywwLDEwMCw0LDAsMjUsMTI1LDQsCisgICAgMCwxMjQsMCwwLDExNCw4NCwwLDEwMCw1LDAsMTA2LDMsMCwxMjQsNCwwLAorICAgIDEyNCwwLDAsMTMxLDIsMCw4MywxMjQsNCwwLDgzLDQxLDYsMTIyLDUwLDgyLAorICAgIDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LAorICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTYsMTExLAorICAgIDMyLDk3LDExMCwzMiw5Nyw5OCwxMTUsMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTEsMTEwLDEwMSwKKyAgICA0NiwxMTQsMTIxLDAsMCwwLDExNCw0NSwwLDAsMCwxMjIsNTAsOTcsMTE2LDExNiwKKyAgICAxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTgsMTAxLDEyMSwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLAorICAgIDExMiw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTQsCisgICAgMzMsMCwwLDAsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDQxLDQsMjE4LDYsMTE0LAorICAgIDExNSwxMTIsMTA4LDEwNSwxMTYsMjE4LDMsMTA4LDEwMSwxMTAsMjE4LDEwLDg2LDk3LDEwOCwxMTcsCisgICAgMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsNTAsMCwwLDAsNDEsNSwxMTQsMTUsMCwKKyAgICAwLDAsMjE4LDcsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDIxOCw1LDEwOCwxMDEsMTE4LAorICAgIDEwMSwxMDgsOTAsNCw5OCwxMDUsMTE2LDExNSw5MCw0LDk4LDk3LDExNSwxMDEsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEzLDk1LAorICAgIDExNCwxMDEsMTE1LDExMSwxMDgsMTE4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSw5MywzLDAsMCwKKyAgICAxMTUsMTAsMCwwLDAsMCwyLDIyLDEsMTgsMSwxMiwxLDEwLDEsMTE0LAorICAgIDE3MSwwLDAsMCw5OSwzLDAsMCwwLDAsMCwwLDAsNCwwLDAsCisgICAgMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw0NywwLDAsMCwxMjQsMCwKKyAgICAwLDEwNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTI1LDMsMCwKKyAgICAxMjQsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMzQsMCwxMDAsMCwwLDgzLAorICAgIDExNiwxLDAsMTI0LDEsMCwxMjQsMywwLDEzMSwyLDAsODMsNDEsMSw3OCwKKyAgICA0MSwyLDExNCwxNTUsMCwwLDAsMTE0LDg1LDAsMCwwLDQxLDQsMjE4LDYsCisgICAgMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDE1LDAsMCwwLDExNCwxNTIsMCwwLDAsCisgICAgMTE0LDk5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDIxOCwxNyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksCisgICAgOTUsMTA4LDEwMSwxMDMsOTcsOTksMTIxLDEwMiwzLDAsMCwxMTUsOCwwLDAsMCwKKyAgICAwLDMsMTgsMSwxMiwxLDQsMSwxMTQsMTczLDAsMCwwLDk5LDMsMCwKKyAgICAwLDAsMCwwLDAsMCw5LDAsMCwwLDI3LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw0MiwxLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTAwLDEsMCwKKyAgICAxMDcsOSwwLDExNCw0MSwwLDExNiwwLDAsMTA2LDEsMCwxMiwxMTQsNDEsMCwKKyAgICAxMTYsMiwwLDEwNiwzLDAsMTAwLDIsMCwxMTYsNCwwLDEzMSwyLDAsMSwKKyAgICAxMjQsMCwwLDExNiwwLDAsMTA2LDUsMCwxMDcsNiwwLDEyNSwzLDAsMTIwLAorICAgIDIzNSwwLDExNiwwLDAsMTA2LDEsMCw2OCw5MywyMjAsMCwxMjUsNCwwLDExNiwKKyAgICA2LDAsMTMxLDAsMCwxNDMsOTAsMCwxLDEyMSwxMywwLDEyNCw0LDAsMTA2LAorICAgIDcsMCwxMjUsNSwwLDg3LDExMCw1MSwwLDQsMTE2LDgsMCwxMDcsMTAsMCwKKyAgICAxMTQsMTQ4LDAsMSwxLDEsMTE2LDksMCwxMjQsNCwwLDEyNCwwLDAsMTI0LAorICAgIDEsMCwxMzEsMywwLDEyNSw2LDAsMTI0LDYsMCwxMDAsMSwwLDEwNyw4LAorICAgIDAsMTE0LDE0NCwwLDExOSw2NiwwLDg5LDExMCwxOSwwLDg4LDEyNCw1LDAsMTI0LAorICAgIDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDMsMCwxMjUsNiwwLDg3LDEwMCwKKyAgICAxLDAsODEsODIsODgsMTI0LDYsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDY2LAorICAgIDAsMTI0LDMsMCwxMiwxMTQsMjYsMSwxMjQsMCwwLDExNiwwLDAsMTA2LDUsCisgICAgMCwxMDcsNiwwLDExNCwyNiwxLDExNiwwLDAsMTA2LDUsMCwxMjQsMCwwLAorICAgIDI1LDEyNSw3LDAsMTIxLDEzLDAsMTI0LDcsMCwxMDYsMTAsMCwxMjUsOCwwLAorICAgIDg3LDExMCwyMiwwLDQsMTE2LDgsMCwxMDcsMTAsMCwxMTQsMiwxLDEsMSwKKyAgICAxLDEyNCw2LDAsODMsODksMTEzLDMwLDEsODgsMTI0LDgsMCwxMDAsMSwwLAorICAgIDEwNyw4LDAsMTE0LDE5LDEsMTI0LDYsMCw4MywxMjQsOCwwLDgzLDExMyw2NiwKKyAgICAwLDEyNCw2LDAsODMsMTEzLDY2LDAsODcsMTAwLDEsMCw4MywxMDAsMSwwLAorICAgIDgzLDQxLDMsMTIyLDIzLDcwLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDM5LDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDc4LDEyMiwyMiwxMTUsCisgICAgMTIxLDExNSw0NiwxMDksMTAxLDExNiw5Nyw5NSwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLAorICAgIDEwMSwxMDksMTEyLDExNiwxMjEsNDEsMTEsMTE0LDE0LDAsMCwwLDIxOCw5LDEwOSwxMDEsCisgICAgMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDExNCwxNDEsMCwwLDAsMTE0LDE0MiwwLDAsCisgICAgMCwyMTgsMTMsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLAorICAgIDExNCwyMSwwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNTQsMCwwLDAsMTE0LAorICAgIDk2LDAsMCwwLDExNCwxNzMsMCwwLDAsMTE0LDk1LDAsMCwwLDQxLDksCisgICAgMTE0LDE1LDAsMCwwLDExNCwxNTIsMCwwLDAsMTE0LDE1MywwLDAsMCw5MCwKKyAgICA5LDEwNSwxMTUsOTUsMTE0LDEwMSwxMDgsMTExLDk3LDEwMCwxMTQsMTcyLDAsMCwwLDExNCwKKyAgICAxNTQsMCwwLDAsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsOTUsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMjE4LDEwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwxMTEsMywKKyAgICAwLDAsMTE1LDQ4LDAsMCwwLDAsMiwyNSwxLDE2LDQsMTUsMSwxNiwKKyAgICAxLDEwLDEsMywxLDEzLDEsMTMsMSwxOCwxLDEyLDEsOCwyLDI1LAorICAgIDEsMTIsMiwyMiwxLDEzLDEsMywxLDEzLDEsMTMsNCw5LDIsMTIsCisgICAgMSw0LDIsNywyLDgsMiwxMTQsMTc2LDAsMCwwLDk5LDMsMCwwLAogICAgIDAsMCwwLDAsMCw0LDAsMCwwLDQsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDI1LDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEyNCwKLSAgICAzLDAsMTMxLDMsMCwxMjQsMCwwLDk1LDEsMCwxMDAsMCwwLDgzLDQxLAotICAgIDEsNzgsNDEsMiwxMTQsNjEsMSwwLDAsMTE0LDI1NCwwLDAsMCw0MSw0LAotICAgIDExNCw3MSwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwKLSAgICA2NSwxLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwxMTQsNzIsMCwwLDAsMTIsNywwLDAsMTE1LDIsMCwwLAotICAgIDAsMCwxLDEyMiwyNSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LAotICAgIDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwxLAotICAgIDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQxLDIsMTIyLDExNSw4MiwxMDEsMTE2LDExNywKLSAgICAxMTQsMTEwLDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw4NCwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLAotICAgIDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLAotICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSwKLSAgICAzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA2LDExMSw5OCwzMiwxMDUsMTE2LAotICAgIDExNSwxMDEsMTA4LDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsCi0gICAgMjUsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDEsNjIsNDEsMiwxMTQsNDcsMCwwLAotICAgIDAsMTE0LDU3LDAsMCwwLDQxLDIsMTE0LDEyLDEsMCwwLDExNCwxODAsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAotICAgIDAsMTE0LDIwNiwwLDAsMCwxNSw3LDAsMCwxMTUsMiwwLDAsMCwwLAotICAgIDcsMTIyLDI4LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCw5OSwKLSAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiw3OCwKLSAgICA4NCwxMTQsNCwwLDAsMCw0MSwyLDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKLSAgICAwLDExNCwyMjAsMCwwLDAsMjQsNywwLDAsMTE1LDIsMCwwLDAsMCwKLSAgICAxLDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiw3OCwxMTQsCi0gICAgMzAsMCwwLDAsMTE0LDQsMCwwLDAsNDEsMiwxMTQsNzEsMCwwLDAsCi0gICAgMTE0LDE1OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwxMTQsMTcsMSwwLDAsMjcsNywwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCwxLDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLAotICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksCi0gICAgMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDYsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwwLDExNiwwLDAsMTAwLDEsCi0gICAgMCwxMDAsMiwwLDEwMCwzLDAsMTAwLDQsMCwxMDAsNSwwLDEzMSwzLDEsCi0gICAgODMsNDEsNiw3OCwxMTQsMzAsMCwwLDAsMTIyLDgsNjAsMTE1LDExNiwxMTQsMTA1LAotICAgIDExMCwxMDMsNjIsMTE0LDE3NiwwLDAsMCwxMTQsNDMsMSwwLDAsODQsNDEsMSwKLSAgICAxMTQsNDQsMSwwLDAsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKLSAgICAxMTQsMTYsMSwwLDAsMzAsNywwLDAsMTE1LDIsMCwwLDAsMCwxLAotICAgIDEyMiwyNSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLAotICAgIDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSw0LDAsMCwwLDEwMCwwLDAsODMsNDEsMSw3OCwxMTQsNCwwLDAsCi0gICAgMCw0MSwyLDExNCw3MSwwLDAsMCwxMTQsMTgwLDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyLDEsMCwKLSAgICAwLDMzLDcsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjgsOTUsNzgsCi0gICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAxLAotICAgIDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLAotICAgIDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMjksMCwwLDAsMTE2LDAsMCwxMDAsMSwwLDEyNCwwLDAsMTA2LDEsMCwKLSAgICAxMzEsMiwwLDEsMTE2LDIsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsMCwKLSAgICA4Myw0MSwyLDEyMiw5OCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDExMCw5NywxMDksMTAxLAotICAgIDExNSwxMTIsOTcsOTksMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwKLSAgICAxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCwKLSAgICA0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEyMiwzOCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAotICAgIDk5LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLAotICAgIDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMjMsMzMsMTE0LDEyNSw0MSwKLSAgICAzLDExNCwxNTMsMCwwLDAsMTE0LDI1NCwwLDAsMCwxMTQsMTgxLDAsMCwwLAotICAgIDQxLDIsMTE0LDcxLDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDUsMSwwLDAsCi0gICAgMzYsNywwLDAsMTE1LDQsMCwwLDAsMCw3LDE2LDEsMTIyLDI4LDk1LAotICAgIDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAotICAgIDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDExLDExNCw1NywKLSAgICAwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw3MiwwLAotICAgIDAsMCwxMTQsMTksMSwwLDAsMTE0LDIwNiwwLDAsMCwxMTQsMjIwLDAsMCwKLSAgICAwLDExNCwxNywxLDAsMCwxMTQsMTYsMSwwLDAsMTE0LDIsMSwwLDAsCi0gICAgMTE0LDUsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDI1MiwwLDAsMCwxMSw3LAotICAgIDAsMCwxMTUsMTQsMCwwLDAsMTIsMSwxMiwzLDE4LDksMTIsMywxMiwKLSAgICAzLDEyLDMsMTIsMywxMTQsMjUyLDAsMCwwLDk5LDAsMCwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNjQsMCwwLDAsMTE1LAotICAgIDE2MCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKLSAgICAxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwyLDAsMTAwLDMsMCwxMzIsCi0gICAgMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw0LDAsMTAwLDQsMCwxMDAsNSwKLSAgICAwLDEzMiwwLDAsMTMxLDEsMCw5MCw2LDAsMTAxLDQsMCwxMDAsNiwwLAotICAgIDEwMCw3LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDcsMCwxMDEsNCwwLDEwMCwKLSAgICA4LDAsMTAwLDksMCwxMzIsMCwwLDEzMSwxLDAsOTAsOCwwLDEwMSw0LAotICAgIDAsMTAwLDEwLDAsMTAwLDExLDAsMTAwLDEyLDAsMTMyLDEsMCwxMzEsMSwwLAotICAgIDkwLDksMCwxMDEsNCwwLDEwMCwxMCwwLDEwMCwxMCwwLDEwMCwxMywwLDEwMCwKLSAgICAxNCwwLDEzMiwyLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw0LDAsMTAwLDEwLAotICAgIDAsMTAwLDE1LDAsMTAwLDE2LDAsMTMyLDEsMCwxMzEsMSwwLDkwLDExLDAsCi0gICAgMTAwLDEwLDAsODMsNDEsMTcsMjE4LDEwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsCi0gICAgMTAxLDExNCwxMjIsNjIsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAotICAgIDEwNCwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiw5NSw5NSwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSw5NSwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsCi0gICAgMTE1LDQ2LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDU4LDAsMCwwLDEyMCw1MSwwLDExNiwKLSAgICAwLDAsMTA2LDEsMCwxMDYsMiwwLDEzMSwwLDAsNjgsOTMsMzQsMCwxMjUsCi0gICAgMSwwLDExNiwzLDAsMTI0LDEsMCwxMDAsMSwwLDEzMSwyLDAsMTE0LDE2LAotICAgIDAsMTI0LDEsMCwxMDYsNCwwLDEzMSwwLDAsMSwxMTMsMTYsMCwxMTMsMTYsCi0gICAgMCw4NywxMDAsMiwwLDgzLDQxLDMsMTIyLDEyNSw2Nyw5NywxMDgsMTA4LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsCi0gICAgOTksMTA0LDEwMSwxMTUsNDAsNDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTExLDExMCwKLSAgICAzMiw5NywxMDgsMTA4LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsCi0gICAgMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDExNSwxMTYsMTExLDExNCwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsCi0gICAgMTAxLDExNSwzMiw0MCwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAotICAgIDEwMSwxMTAsMTE2LDEwMSwxMDAsNDEsNDYsMjE4LDE3LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLAotICAgIDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsNzgsNDEsNSwxMTQsNywwLAotICAgIDAsMCwyMTgsMTksMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAotICAgIDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDIxOCw2LDExOCw5NywxMDgsMTE3LDEwMSwxMTUsMTE0LAotICAgIDYwLDAsMCwwLDExNCw3NSwxLDAsMCw0MSwyLDExNCwxMiwxLDAsMCwKLSAgICAyMTgsNiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNSwwLDAsMCwxMTQsNzUsMSwwLDAsNTMsNywwLDAsCi0gICAgMTE1LDYsMCwwLDAsMCw0LDIyLDEsMTUsMSwxMjIsMjgsODAsOTcsMTE2LAotICAgIDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LAotICAgIDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDMsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDk0LAotICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMTUsMjgsMCwxMTYsMiwwLDEwNiwKLSAgICAzLDAsMTAwLDEsMCwxMTYsNCwwLDEzMSwyLDAsMSwxMTAsMCwwLDEyMCwKLSAgICA1OSwwLDExNiwwLDAsMTA2LDEsMCw2OCw5Myw0NCwwLDEyNSwyLDAsMTIxLAotICAgIDE0LDAsMTI0LDIsMCwxMjQsMSwwLDEzMSwxLDAsODMsODcsMTEzLDM4LDAsCi0gICAgNCwxMTYsNSwwLDEwNywxMCwwLDExNCw4MSwwLDEsMSwxLDExOSwzOCwwLAotICAgIDg5LDExMywzOCwwLDg4LDExMywzOCwwLDg3LDEwMCwyLDAsODMsMTAwLDIsMCwKLSAgICA4Myw0MSwzLDEyMiwxMTMsODMsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTE1LDEwMSwxMTMsMTE3LAotICAgIDEwMSwxMTAsOTksMTAxLDMyLDExMSwxMDIsMzIsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDIsMTExLAotICAgIDExNCwzMiw5NywzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwzOSwKLSAgICAxMTIsOTcsMTE2LDEwNCwzOSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICA3MywxMDIsMzIsMzksMTA0LDExMSwxMTEsMTA3LDExNSwzOSwzMiwxMDUsMTE1LDMyLDEwMiw5NywKLSAgICAxMDgsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE3LDExNSwxMDEsMzIsMTE1LDEyMSwxMTUsCi0gICAgNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMjMsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsCi0gICAgOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDUsMTE1LDMyLDEwMSwxMDksMTEyLDExNiwxMjEsNzgsCi0gICAgNDEsNiwxMTQsNywwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKLSAgICAxMTEsMTA3LDExNSwxMTQsMTY3LDAsMCwwLDExNCwxNjgsMCwwLDAsMTE0LDE2OSwwLAotICAgIDAsMCwxMTQsMTU0LDAsMCwwLDQxLDMsMTE0LDEyLDEsMCwwLDExNCwzNSwKLSAgICAwLDAsMCw5MCw0LDEwNCwxMTEsMTExLDEwNywxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA0LDExMSwxMTEsMTA3LDExNSw2MSw3LDAsMCwxMTUsMTYsMCwwLDAsMCw3LAotICAgIDksMSwxOSwxLDE2LDEsMywxLDE0LDEsMTMsMSwxMiwyLDEyMiwyMiwKLSAgICA4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTEyLDk3LDExNiwxMDQsCi0gICAgOTUsMTA0LDExMSwxMTEsMTA3LDExNSw5OSwyLDAsMCwwLDAsMCwwLDAsMywKLSAgICAwLDAsMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsOTcsMCwwLDAsCi0gICAgMTI0LDEsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDI3LDAsMTE2LDAsMCwxMDYsCi0gICAgMSwwLDEzMSwwLDAsMTI1LDEsMCwxMTAsMCwwLDEyMSwxNywwLDExNiwyLAotICAgIDAsMTA2LDMsMCwxMjQsMSwwLDI1LDEyNSwyLDAsODcsMTEwLDQ2LDAsNCwKLSAgICAxMTYsNCwwLDEwNywxMCwwLDExNCw5MiwwLDEsMSwxLDEyNCwwLDAsMTA2LAotICAgIDUsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMjQsMiwwLDExNiwyLAotICAgIDAsMTA2LDMsMCwxMjQsMSwwLDYwLDg5LDExMCwxLDAsODgsMTI0LDIsMCwKLSAgICA4Myw0MSwyLDEyMiwyMTAsNzEsMTAxLDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwKLSAgICAxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKLSAgICAzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTUsMTIxLDExNSw0NiwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LAotICAgIDk5LDEwNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsCi0gICAgMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LAotICAgIDk5LDEwNCwxMDEsNDQsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDk3LDExMiwKLSAgICAxMTIsMTE0LDExMSwxMTIsMTE0LDEwNSw5NywxMTYsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LAotICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk3LDExMCwxMDAsMzIsOTksOTcsOTksCi0gICAgMTA0LDEwMSwzMiwxMDUsMTE2LDQ2LDMyLDczLDEwMiwzMiwxMTAsMTExLDMyLDEwMiwxMDUsMTEwLAotICAgIDEwMCwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsMTA4LDEwMSwKLSAgICA0NCwzMiwxMTUsMTE2LDExMSwxMTQsMTAxLDMyLDc4LDExMSwxMTAsMTAxLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCwzMCwwLDAsMCw0MSw2LDExNCwzLAotICAgIDAsMCwwLDExNCw0NSwwLDAsMCwxMTQsNywwLDAsMCwxMTQsNzYsMSwKLSAgICAwLDAsMTE0LDc5LDAsMCwwLDExNCw4MCwxLDAsMCw0MSwzLDExNCwxMiwKLSAgICAxLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDc4LDEsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwyMCw5NSwxMTIsCi0gICAgOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LAotICAgIDEwNCwxMDEsNzgsNywwLDAsMTE1LDE2LDAsMCwwLDAsOCwxMiwxLDE1LAotICAgIDEsMywxLDE3LDEsMTMsMSwxNSwxLDE4LDEsMTIyLDMxLDgwLDk3LDExNiwKLSAgICAxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTksMywwLDAsCi0gICAgMCwwLDAsMCwwLDYsMCwwLDAsMywwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTEzLDAsMCwwLDExNiwwLDAsMTI0LDIsMCwxMDAsMSwwLDEzMSwKLSAgICAyLDAsMTE0LDM5LDAsMTI0LDIsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMCw5MiwyLDAsMTI1LDMsMCwxMjUsNCwwLDExMCwyMSwwLDEyNCwyLDAsCi0gICAgMTA2LDIsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDMsMCwxMDMsMCwwLDEyNSwKLSAgICA0LDAsMTI0LDMsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDg1LDAsMTE2LDMsCi0gICAgMCwxMjQsMSwwLDEyNCwzLDAsMTMxLDIsMCw4MywxMTYsNCwwLDEyNCwxLAotICAgIDAsMTAwLDAsMCwxMzEsMiwwLDEyNSw1LDAsMTI0LDQsMCwxMjQsNSwwLAotICAgIDk1LDUsMCwxMjQsNSwwLDgzLDQxLDIsNzgsMTE0LDE2NiwwLDAsMCw0MSwKLSAgICA2LDExNCw2MCwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCwxNSwxLDAsMCwKLSAgICAxMTQsMTc0LDAsMCwwLDExNCwyMTcsMCwwLDAsMTE0LDIyMSwwLDAsMCw0MSwKLSAgICA2LDExNCwxMiwxLDAsMCwxMTQsMTU5LDAsMCwwLDExNCw3OCwxLDAsMCwKLSAgICAxMTQsMTcwLDAsMCwwLDExNCwxNzEsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTYsCi0gICAgOTUsMTA4LDEwMSwxMDMsOTcsOTksMTIxLDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LAotICAgIDk1LDcsMCwwLDExNSwxOCwwLDAsMCwwLDQsMTUsMSwyNCwyLDE1LAotICAgIDEsNiwxLDEyLDEsMTMsMSwxNSwxLDksMSwxMjIsMjcsODAsOTcsMTE2LAotICAgIDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwOCwxMDEsMTAzLDk3LDk5LDEyMSw5NSwKLSAgICAxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSw3OCw5OSw0LDAsMCwwLDAsMCwKLSAgICAwLDAsOSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwyNTIsCi0gICAgMCwwLDAsMTAzLDAsMCwxMjUsNCwwLDEyMCwyMzksMCwxMjQsMiwwLDY4LAotICAgIDkzLDIwMywwLDEyNSw1LDAsMTE2LDAsMCwxMjQsNSwwLDExNiwxLDAsMTE2LAotICAgIDIsMCwxMDIsMiwwLDEzMSwyLDAsMTE1LDQ2LDAsMTEzLDEzLDAsMTEwLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwzLDAsMTI0LDUsMCwxMzEsMSwwLDEyNSw2LDAsCi0gICAgMTI0LDYsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDEzLDAsMTE2LDQsMCwxMjQsCi0gICAgNiwwLDEwMCwyLDAsMTMxLDIsMCwxMTQsMTA5LDAsMTI0LDYsMCwxMDYsNSwKLSAgICAwLDEyNCwxLDAsMTI0LDMsMCwxMzEsMiwwLDEyNSw3LDAsMTEwLDE4LDAsCi0gICAgMTI0LDAsMCwxMDYsNiwwLDEyNCwxLDAsMTI0LDYsMCwxMzEsMiwwLDEyNSwKLSAgICA3LDAsMTI0LDcsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDE0NSwwLDExMywxMywKLSAgICAwLDExMCwwLDAsMTI0LDcsMCwxMDYsNywwLDEwMCwxLDAsMTA3LDksMCwKLSAgICAxMTQsMTY0LDAsMTI0LDcsMCw4MywxMjQsNywwLDEwNiw4LDAsMTI1LDgsMCwKLSAgICAxMjQsOCwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMjAwLDAsMTE2LDksMCwxMDAsCi0gICAgMywwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCw0LDAsMTA2LDEwLAotICAgIDAsMTI0LDgsMCwxMzEsMSwwLDEsMTEzLDEzLDAsMTEzLDEzLDAsODcsMTE2LAotICAgIDExLDAsMTI0LDEsMCwxMDAsMSwwLDEzMSwyLDAsMTI1LDcsMCwxMjQsNCwKLSAgICAwLDEyNCw3LDAsOTUsOCwwLDEyNCw3LDAsODMsMTAwLDEsMCw4Myw0MSwKLSAgICA0LDEyMiw2Myw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDMyLDExMSwxMTQsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTUsCi0gICAgMTEyLDk3LDExNiwxMDQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDQ3LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTAsOTcsMTA5LAotICAgIDEwMSw0Niw3OCwxMTQsMTQsMSwwLDAsMTIyLDE5LDExNSwxMTIsMTAxLDk5LDMyLDEwOSwKLSAgICAxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQxLDEyLDExNCwKLSAgICAxOTMsMCwwLDAsMjE4LDMsMTE1LDExNiwxMTQsMjE4LDUsOTgsMTIxLDExNiwxMDEsMTE1LAotICAgIDExNCw4MSwxLDAsMCwxMTQsNjAsMCwwLDAsMTE0LDE0LDEsMCwwLDExNCwKLSAgICA4MiwxLDAsMCwxMTQsMTcwLDAsMCwwLDExNCwyMjEsMCwwLDAsMTE0LDE1NCwKLSAgICAwLDAsMCwxMTQsMTk4LDAsMCwwLDExNCwyMTcsMCwwLDAsNDEsOSwxMTQsCi0gICAgMTIsMSwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDEzLAotICAgIDEsMCwwLDIxOCwxNCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw5NSwxMTIsCi0gICAgOTcsMTE2LDEwNCw5MCw1LDEwMSwxMTAsMTE2LDExNCwxMjEsMTE0LDc4LDEsMCwwLDExNCwKLSAgICAxNzgsMCwwLDAsMTE0LDE3MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNSwwLDAsMCwyMTgsOSw5NSwxMDMsMTAxLDExNiw5NSwxMTUsCi0gICAgMTEyLDEwMSw5OSwxMTAsNywwLDAsMTE1LDQwLDAsMCwwLDAsNSw2LDEsCi0gICAgMTMsMSwyMSwxLDYsMSwxNSwxLDEyLDEsMTUsMSwyMSwyLDE4LDEsCi0gICAgMTIsMSw2LDEsMTUsMSw0LDEsOSwxLDEyLDEsMTUsNSwyMCwyLAotICAgIDE1LDEsOSwxLDEyMiwyMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsCi0gICAgNDYsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksOTksNCwwLDAsMCwwLAotICAgIDAsMCwwLDYsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTQzLDAsMCwwLDEyNCwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwyNCwwLAotICAgIDExNiwwLDAsMTA2LDEsMCwxMjUsMiwwLDExMCwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMiwwLDEyNCwxLDAsMTI0LDIsMCwxMjQsMywwLDEzMSwzLDAsMTI1LDQsCi0gICAgMCwxMjQsNCwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsNjEsMCwxMDAsMSwwLAotICAgIDgzLDEyNCw0LDAsMTA2LDMsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDEzNSwwLAotICAgIDEyNCw0LDAsMTA2LDQsMCwxMjUsNSwwLDEyNCw1LDAsMTE0LDEyOCwwLDEwMCwKLSAgICAyLDAsMTI0LDQsMCw5NSw1LDAsMTE2LDYsMCwxMjQsMSwwLDEyNCw1LAotICAgIDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwzLDAsMTI0LDQsMCw5NSw0LDAsCi0gICAgMTI0LDQsMCw4MywxMDAsMSwwLDgzLDExMCw0LDAsMTI0LDQsMCw4MywxMDAsCi0gICAgMSwwLDgzLDQxLDMsMTIyLDk4LDEwMiwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywKLSAgICAxMTYsMTA0LDMyLDExMSwxMTQsMzIsMzksMTEyLDk3LDExNiwxMDQsMzksMzIsOTgsOTcsMTE1LAotICAgIDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsCi0gICAgMTExLDExMSwxMDcsMTE1LDMyLDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQ2LDc4LDkwLDksMTEwLDk3LDEwOSwxMDEsCi0gICAgMTE1LDExMiw5Nyw5OSwxMDEsNDEsNywxMTQsNywwLDAsMCwxMTQsMzUsMCwwLAotICAgIDAsMTE0LDg2LDEsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDIyMSwwLDAsMCwKLSAgICAxMTQsMjE4LDAsMCwwLDExNCw2MSwxLDAsMCw0MSw2LDExNCwxMiwxLDAsCi0gICAgMCwxMTQsMTU5LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMTMsMSwwLDAsCi0gICAgMTE0LDE3OCwwLDAsMCwxMTQsODUsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE0LDEsMCwwLDE0Miw3LAotICAgIDAsMCwxMTUsMjYsMCwwLDAsMCw0LDEyLDEsMTIsMSwyMSwxLDEyLAotICAgIDEsNCwxLDE1LDEsOSwxLDYsMyw5LDEsMjQsMSw0LDIsNywKLSAgICAyLDEyMiwyMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwKLSAgICAxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsMCwwLDAsMCwwLDAsMCwKLSAgICA0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDQxLDAsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwKLSAgICAxMjUsMywwLDEyNCwzLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwzNCwwLDEwMCwKLSAgICAxLDAsODMsMTI0LDMsMCwxMDYsMSwwLDgzLDQxLDIsMTIyLDE3MCwxMDIsMTA1LAotICAgIDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLDExMCwKLSAgICAzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwzMiwxMTEsMTE0LDMyLDM5LDExMiw5NywKLSAgICAxMTYsMTA0LDM5LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsCi0gICAgNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiw5NywxMTAsMTAwLDEwLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LAotICAgIDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw0NiwKLSAgICAxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksCi0gICAgMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsCi0gICAgMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LAotICAgIDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsMTQsMSwwLDAsCi0gICAgMTE0LDE3MCwwLDAsMCw0MSw0LDExNCwxMiwxLDAsMCwxMTQsMTU5LDAsMCwKLSAgICAwLDExNCwzNSwwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxNSwxLDAsMCwxNjQsCi0gICAgNywwLDAsMTE1LDgsMCwwLDAsMCw4LDE4LDEsMTIsMSw0LDEsCi0gICAgMTIyLDIyLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwKLSAgICAxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDEsMTIsMTE0LDU3LDAsMCwwLDExNCwKLSAgICA1NiwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDU5LDAsMCwwLDExNCwxOSwKLSAgICAxLDAsMCwxMTQsNzUsMSwwLDAsMTE0LDgwLDEsMCwwLDExNCw4MSwxLAotICAgIDAsMCwxMTQsODIsMSwwLDAsMTE0LDg2LDEsMCwwLDExNCwxNCwxLDAsCi0gICAgMCwxMTQsMTUsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDc0LDEsMCwwLDQ5LAotICAgIDcsMCwwLDExNSwyMiwwLDAsMCwxMiwyLDYsMiwxOCw4LDE4LDE3LAotICAgIDE4LDE3LDE4LDE1LDMsMSwxOCwzMSwzLDEsMjEsMjEsMywxLDExNCw3NCwKLSAgICAxLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAzLDAsMCwwLDY0LDAsMCwwLDExNSwxMzMsMCwwLDAsMTAxLDAsMCwKLSAgICA5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLAotICAgIDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsCi0gICAgMCwxMzIsMCwwLDkwLDUsMCwxMDEsNiwwLDkwLDcsMCwxMDAsNiwwLAotICAgIDEwMCw3LDAsMTMyLDAsMCw5MCw4LDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwKLSAgICAwLDAsOTAsOSwwLDEwMCwxMCwwLDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwxLAotICAgIDAsOTAsMTAsMCwxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMCwwLDkwLDExLDAsCi0gICAgMTAxLDEyLDAsMTAwLDE1LDAsMTAwLDE2LDAsMTMyLDAsMCwxMzEsMSwwLDkwLAotICAgIDEzLDAsMTAwLDE3LDAsMTAwLDE4LDAsMTMyLDAsMCw5MCwxNCwwLDEwMCwxMCwKLSAgICAwLDgzLDQxLDE5LDIxOCwxMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAotICAgIDEyMiwxNzIsNzAsMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTAyLDEwNSwxMTAsCi0gICAgMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTEwLDExNiwxMDEsMTE0LDk3LAotICAgIDk5LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiw5NywxMTQsMTAxLDMyLAotICAgIDk5LDk3LDk5LDEwNCwxMDEsMTAwLDMyLDEwMiwxMTEsMTE0LDMyLDExMiwxMDEsMTE0LDEwMiwxMTEsCi0gICAgMTE0LDEwOSw5NywxMTAsOTksMTAxLDQ0LDMyLDk4LDEwMSwxMDUsMTEwLDEwMywxMCwzMiwzMiwKLSAgICAzMiwzMiwxMTQsMTAxLDEwMiwxMTQsMTAxLDExNSwxMDQsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDEwNCw5NywxMTAsCi0gICAgMTAwLDEwOCwxMDUsMTEwLDEwMywzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwOSwKLSAgICAxMTEsMTAwLDEwNSwxMDIsMTA1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNSwwLDAsMCw3LAotICAgIDAsMCwwLDExNSwxMjIsMCwwLDAsMTAzLDAsMCwxMjUsMywwLDEyMCw1MiwKLSAgICAwLDEyNCwyLDAsNjgsOTMsNDQsMCw5MiwyLDAsMTM3LDAsMCwxMjUsNCwKLSAgICAwLDEyNCwzLDAsMTA2LDAsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDEsMCwKLSAgICAxMDAsMiwwLDEzNCwwLDAsMTI0LDQsMCw2OCwxMzEsMSwwLDEzMSwxLDAsCi0gICAgMSwxMTMsMTMsMCw4NywxMjQsMywwLDEyNCwwLDAsOTUsMSwwLDEyNCwxLAotICAgIDAsMTEyLDc5LDAsMTAwLDMsMCwxMjQsMCwwLDk1LDIsMCwxMDAsNiwwLAotICAgIDEyNCwwLDAsOTUsMywwLDExNiw0LDAsMTMxLDAsMCwxMjQsMCwwLDk1LAotICAgIDUsMCwxMTYsNCwwLDEzMSwwLDAsMTI0LDAsMCw5NSw2LDAsMTAwLDUsCi0gICAgMCw4Myw0MSw3LDEyMiwxNTQsNzMsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwKLSAgICAzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LAotICAgIDExMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTExLDExMCwzMiw5NywxMTAsMTAwLDMyLAotICAgIDk3LDMyLDExOCw5NywxMTQsMTA1LDk3LDk4LDEwOCwxMDEsMzIsMTEwLDExNywxMDksOTgsMTAxLAotICAgIDExNCwzMiwxMTEsMTAyLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDUwLDQ1LDExNiwKLSAgICAxMTcsMTEyLDEwOCwxMDEsMTE1LDMyLDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTA1LDExMCwxMDMsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsCi0gICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMTE0LDEwMSw5OSwxMTEsMTAzLDExMCwxMDUsMTIyLDEwMSwxMTUsNDYsCi0gICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsCi0gICAgMCw1MSwwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywxNywwLAotICAgIDEyNSwxLDAsMTI0LDEsMCwxMzYsMCwwLDEwMiwyLDAsODYsMSwxMTMsMywKLSAgICAwLDEwMCwwLDAsODMsNDEsMSw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwKLSAgICAyMiwwLDAsMCwxMTQsNTgsMSwwLDAsNDEsMSwxMTQsMTcwLDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw3NywwLDAsMCwxOTMsCi0gICAgNywwLDAsMTE1LDIsMCwwLDAsNiwwLDEyMiwzOCw3MCwxMDUsMTA4LDEwMSwKLSAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0NiwKLSAgICA2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsCi0gICAgMTE0LDYyLDExNCwxMTYsMCwwLDAsMTE0LDI5LDAsMCwwLDc4LDExNCwxMzksMCwKLSAgICAwLDAsNDEsNywxMTQsMTk4LDAsMCwwLDIxOCw4LDk1LDEwOCwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsMTE1LDExNCwzNSwwLDAsMCwyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA5LDExNiwxMDUsMTA5LDEwMSwyMTgsMywxMTUsMTAxLDExNiwyMTgsMTEsOTUsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsOTksOTcsOTksMTA0LDEwMSwyMTgsMTksOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDEwMSwKLSAgICAxMDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTksOTcsOTksMTA0LDEwMSw0MSw1LDExNCw3MSwKLSAgICAwLDAsMCwxMTQsMzUsMCwwLDAsMjE4LDE0LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgOTUsMTAwLDEwMSwxMTYsOTcsMTA1LDEwOCwxMTUsOTAsNywxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAotICAgIDExNSwxMTQsMTI2LDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LDE3MCwwLAotICAgIDAsMCwxMTQsNSwwLDAsMCwxMTQsNzIsMCwwLDAsMTg3LDcsMCwwLAotICAgIDExNSwxNiwwLDAsMCwwLDQsNiwxLDE5LDEsMzYsMSw5LDIsMTUsCi0gICAgMSw5LDEsMTIsMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLAotICAgIDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLAotICAgIDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTMsMCwwLDAsMTAwLDMsMCwxMjQsMCwwLDk1LDAsMCwxMDAsMiwwLAotICAgIDgzLDQxLDQsMTIyLDMxLDczLDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEwOSwxMTYsCi0gICAgMTA1LDEwOSwxMDEsNDYsMTE0LDI5LDAsMCwwLDc4LDExNCwxMzksMCwwLDAsNDEsCi0gICAgMSwxMTQsODksMSwwLDAsNDEsMSwxMTQsNzEsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDc1LDEsMCwKLSAgICAwLDIwMSw3LDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDI4LDcwLDEwNSwKLSAgICAxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsCi0gICAgOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw5OSwyLDAsMCwwLDAsCi0gICAgMCwwLDAsMywwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwKLSAgICA1OSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLAotICAgIDEyNSwyLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDM3LDAsMTAwLAotICAgIDEsMCwxMDMsMCwwLDEwMiwyLDAsODMsMTI0LDIsMCwxMDYsMSwwLDEyNCwKLSAgICAyLDAsMTA2LDIsMCwxMTIsNTUsMCwxMDMsMCwwLDEwMiwyLDAsODMsNDEsCi0gICAgMiwxMjIsMTk3LDg0LDExNCwxMjEsMzIsMTE2LDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsCi0gICAgMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDQ0LDMyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5NywKLSAgICA5OSwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTEyLDk3LDk5LDEwNyw5NywKLSAgICAxMDMsMTAxLDMyLDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDYsMzIsODIsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwxMTUsMzIsNDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NCwzMiwxMDgsMTA1LAotICAgIDExNSwxMTYsNDUsMTExLDEwMiw0NSwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDQxLDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwKLSAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywKLSAgICAxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsCi0gICAgMTEyLDEwMSw5OSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwzLDExNCwxNCwxLDAsMCwKLSAgICAxMTQsMTcwLDAsMCwwLDExNCwyMjEsMCwwLDAsNDEsMywxMTQsNzEsMCwwLAotICAgIDAsMTE0LDE1OSwwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxNjYsMCwwLDAsMjA3LAotICAgIDcsMCwwLDExNSw4LDAsMCwwLDAsNywxNSwxLDEyLDEsMTAsMSwKLSAgICAxMjIsMjIsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwKLSAgICAxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5OSw2LDAsMCwwLDAsMCwwLAotICAgIDAsNywwLDAsMCw3LDAsMCwwLDY3LDAsMCwwLDExNSw0MCwwLAotICAgIDAsMCwxMjQsMSwwLDEyNCwyLDAsMTI0LDMsMCwxMzEsMiwwLDEyNSw2LAotICAgIDAsMTE2LDAsMCwxMjQsMiwwLDEyNCwzLDAsMTAwLDEsMCwxMjQsNiwwLAotICAgIDEwMCwyLDAsMTI0LDQsMCwxMzEsMiwyLDgzLDQxLDMsNzgsMTE0LDE3MCwwLAotICAgIDAsMCwxMTQsMjIxLDAsMCwwLDQxLDEsMTE0LDI0MCwwLDAsMCw0MSw3LAotICAgIDExNCw3MSwwLDAsMCwxMTQsMjQ0LDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LAotICAgIDM1LDAsMCwwLDExNCwyMjksMCwwLDAsMTE0LDEzLDEsMCwwLDExNCwxNzAsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMTE0LDg2LDEsMCwwLDIxOSw3LDAsMCwxMTUsNiwwLDAsMCwKLSAgICAwLDEsMTUsMSwxOCwxLDEyMiwyMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwKLSAgICAxMDEsMTE0LDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDc4LDk5LDMsMCwKLSAgICAwLDAsMCwwLDAsMCwxNCwwLDAsMCwxNSwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMjQwLDEsMCwwLDEwMCwxLDAsMTI1LDMsMCwxMjQsMSwwLAotICAgIDEwNiwwLDAsMTAwLDIsMCwxMzEsMSwwLDEwMCwzLDAsMjUsMTI1LDQsMCwKLSAgICAxMjEsMzQsMCwxMTYsMSwwLDEyNCwwLDAsMTA2LDIsMCwxMTIsNDksMCwxMTYsCi0gICAgMywwLDEwNiw0LDAsMTMxLDAsMCwxMzEsMSwwLDEwNiw1LDAsMTI1LDUsCi0gICAgMCw4NywxMTAsMjQsMCw0LDExNiw2LDAsMTA3LDEwLDAsMTE0LDg1LDAsMSwKLSAgICAxLDEsMTAwLDEwLDAsMTI1LDUsMCw4OSwxMTAsMSwwLDg4LDEyNCw1LDAsCi0gICAgMTI0LDAsMCwxMDYsNywwLDEwNywzLDAsMTE0LDEyMywwLDEyNCwwLDAsMTA2LAotICAgIDgsMCwxMzEsMCwwLDEsMTI0LDUsMCwxMjQsMCwwLDk1LDcsMCwxMTAsCi0gICAgMCwwLDExNiw5LDAsMTMxLDAsMCwxMTQsMTU2LDAsMTI0LDAsMCwxMDYsMTAsCi0gICAgMCwxMjUsNiwwLDEyNCw0LDAsMTA2LDExLDAsMTMxLDAsMCwxMjUsNywwLAotICAgIDExMCwxNSwwLDEyNCwwLDAsMTA2LDEyLDAsMTI1LDYsMCwxMjQsNCwwLDEyNSwKLSAgICA3LDAsMTI0LDcsMCwxMjQsNiwwLDEwNyw2LDAsMTE0LDUxLDEsMTE2LDEzLAotICAgIDAsMTI0LDAsMCwxMDYsMiwwLDEyNCw0LDAsMTMxLDIsMCwxMjUsOCwwLAotICAgIDEyMCwxMDMsMCwxMjQsMCwwLDEwNiwxNCwwLDY4LDkzLDc3LDAsOTIsMiwwLAotICAgIDEyNSw5LDAsMTI1LDEwLDAsMTAwLDUsMCwxMjQsOSwwLDIzLDEyNSwxMSwwLAotICAgIDExNiwxMywwLDEyNCw4LDAsMTI0LDExLDAsMTMxLDIsMCwxMjUsMTIsMCwxMTYsCi0gICAgMTUsMCwxMjQsMTIsMCwxMzEsMSwwLDExNCwyMTEsMCwxMjQsMCwwLDEwNiwxNiwKLSAgICAwLDEyNCwxMCwwLDEyNCwxLDAsMTI0LDEyLDAsMTI0LDgsMCwxMDMsMSwwLAotICAgIDEyNCwyLDAsMTMxLDUsMCw4MywxMTMsMjExLDAsODcsMTE2LDE3LDAsMTI0LDgsCi0gICAgMCwxMzEsMSwwLDEyNSwzLDAsMTEwLDAsMCwxMjAsMTI2LDAsMTI0LDAsMCwKLSAgICAxMDYsMTQsMCw2OCw5MywxMTUsMCw5MiwyLDAsMTI1LDksMCwxMjUsMTAsMCwKLSAgICAxMTYsMTMsMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDQsMCwxMjQsOSwwLDIzLAotICAgIDEzMSwyLDAsMTI1LDEyLDAsMTE2LDE4LDAsMTAwLDYsMCwxMDYsMTksMCwxMjQsCi0gICAgMTIsMCwxMzEsMSwwLDEwMCw3LDAsMTAwLDMsMCwxMzEsMSwxLDEsMTI0LAotICAgIDcsMCwxMjQsOSwwLDIzLDEyNCw2LDAsMTA3LDYsMCwxMTQsNjEsMSwxMTYsCi0gICAgMTUsMCwxMjQsMTIsMCwxMzEsMSwwLDExNCwxNzYsMSwxMjQsMCwwLDEwNiwxNiwKLSAgICAwLDEyNCwxMCwwLDEyNCwxLDAsMTI0LDEyLDAsMTAwLDgsMCwxMjQsMiwwLAotICAgIDEzMSw1LDAsODMsMTEzLDYxLDEsMTEzLDYxLDEsODcsMTI0LDMsMCwxMTQsMjM2LAotICAgIDEsMTE2LDE4LDAsMTAwLDksMCwxMDYsMTksMCwxMjQsOCwwLDEzMSwxLDAsCi0gICAgMTMxLDEsMCwxLDExNiwyMCwwLDEyNCwxLDAsMTAwLDgsMCwxMzEsMiwwLAotICAgIDEyNSwxMywwLDEyNCw4LDAsMTAzLDEsMCwxMjQsMTMsMCw5NSwyMSwwLDEyNCwKLSAgICAxMywwLDgzLDEwMCw4LDAsODMsNDEsMTEsMTIyLDEyNSw4NCwxMTQsMTIxLDMyLDExNiwKLSAgICAxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsCi0gICAgMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLAotICAgIDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTIsMTExLDExNCwxMTYsMTA1LAotICAgIDExMSwxMTAsMTE1LDQ2LDMyLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDQwLDEwOCwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsNDQsMzIsMTA4LDEwNSwxMTUsMTE2LDQ1LDExMSwxMDIsNDUsMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSw0MSw0Niw3MCwxMTQsMTE2LDAsMCwwLDExNCwxMTUsCi0gICAgMCwwLDAsMTE0LDI5LDAsMCwwLDExNCw3MiwwLDAsMCwxMjIsOSwxMTYsCi0gICAgMTE0LDEyMSwxMDUsMTEwLDEwMywzMiwxMjMsMTI1LDExNCwxNDYsMCwwLDAsNzgsMTIyLDI1LAotICAgIDExMiwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAotICAgIDk5LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMjMsMTI1LDExNCwxMzksMCwwLDAsNDEsMjIsCi0gICAgMTE0LDMyLDAsMCwwLDExNCwzOSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LAotICAgIDMsMCwwLDAsMTE0LDQ1LDAsMCwwLDExNCw1NCwxLDAsMCwxMTQsNDAsCi0gICAgMCwwLDAsMTE0LDg5LDEsMCwwLDIxOCwxMSw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsCi0gICAgOTksOTcsOTksMTA0LDEwMSwxMTQsNiwwLDAsMCwxMTQsOTIsMSwwLDAsMTE0LAotICAgIDE0MCwwLDAsMCwxMTQsOTEsMSwwLDAsMTE0LDI4LDAsMCwwLDExNCw4OCwKLSAgICAxLDAsMCwxMTQsNDQsMCwwLDAsMTE0LDg2LDEsMCwwLDExNCw0NiwwLAotICAgIDAsMCwxMTQsMTUzLDAsMCwwLDExNCw0NywwLDAsMCwxMTQsMjE3LDAsMCwKLSAgICAwLDExNCwyMjEsMCwwLDAsNDEsMTQsMTE0LDcxLDAsMCwwLDExNCwxNTksMCwKLSAgICAwLDAsMTE0LDEzLDEsMCwwLDkwLDEyLDEwNSwxMTUsOTUsMTEwLDk3LDEwOSwxMDEsCi0gICAgMTE1LDExMiw5Nyw5OSwxMDEsOTAsMTEsMTE2LDk3LDEwNSwxMDgsOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsMTE0LDE4NCwwLDAsMCw5MCw1LDk5LDk3LDk5LDEwNCwxMDEsOTAsMTIsCi0gICAgOTksOTcsOTksMTA0LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCw5LDk4LDk3LAotICAgIDExNSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDU4LDEsMCwwLDExNCwyNDQsMCwwLAotICAgIDAsOTAsMTMsMTA1LDExMCwxMDUsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwKLSAgICA5MCw5LDEwMiwxMTcsMTA4LDEwOCw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTc4LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwKLSAgICAxNCwxLDAsMCwyMjQsNywwLDAsMTE1LDY4LDAsMCwwLDAsMyw2LAotICAgIDEsMTksMSwzLDEsMzQsMSwxMywxLDExLDEsMTUsMSwxMCwxLDEyLAotICAgIDIsOSwxLDksMSwxNSwyLDksMSw2LDIsMTIsMSwxOCwxLDIyLAotICAgIDEsMTAsMSwxNSwxLDEyLDEsMzIsNCwxNSwyLDIyLDEsMjIsMSwyNSwKLSAgICAxLDE2LDEsMTIsMSwzMiwxLDYsMSwxOSwxLDE1LDEsMTIsMSw0LAotICAgIDEsMTIyLDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwKLSAgICAxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDEsMCwwLDAsMCwwLDAsMCwKLSAgICA5LDAsMCwwLDEzLDAsMCwwLDY3LDAsMCwwLDExNSwxNCwxLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDEsMCwxMjEsMzEsMCwxMTYsMSwwLAotICAgIDEwNiwyLDAsMTI0LDEsMCwxMTIsMzMsMCwxMTYsMSwwLDEwNiwzLDAsMTMxLAotICAgIDAsMCwxMzEsMSwwLDEyNSwyLDAsODcsMTEwLDMzLDAsNCwxMTYsNCwwLAotICAgIDExNiw1LDAsMTE2LDYsMCwxMDIsMywwLDEwNywxMCwwLDExNCw3NSwwLDEsCi0gICAgMSwxLDEwMywwLDAsMTI1LDIsMCw4OSwxMTAsMSwwLDg4LDExNiw3LDAsCi0gICAgMTA2LDgsMCwxMDYsOSwwLDEwMCwxLDAsMTMxLDEsMCwxMTUsMTEyLDAsMTE2LAotICAgIDEwLDAsMTI0LDIsMCwxMzEsMSwwLDEyNCwwLDAsOTUsMTEsMCwxMTAsMTExLAotICAgIDAsMTE2LDEwLDAsMTMxLDAsMCwxMjUsMywwLDEyMCw5MCwwLDEyNCwyLDAsCi0gICAgNjgsOTMsODIsMCwxMjUsNCwwLDEyNCw0LDAsMTA2LDEyLDAsMTAwLDIsMCwKLSAgICAxMzEsMSwwLDkyLDMsMCwxMjUsNSwwLDEyNSw2LDAsMTI1LDcsMCwxMjQsCi0gICAgNiwwLDExNCwxOTEsMCwxMDAsMywwLDEwNiwxMywwLDEyNCw1LDAsMTI0LDcsCi0gICAgMCwxMDYsMTQsMCwxMzEsMCwwLDEzMSwyLDAsMTI1LDgsMCwxMTAsNiwwLAotICAgIDEyNCw1LDAsMTI1LDgsMCwxMjQsMywwLDEwNiwxNSwwLDEyNCw4LDAsMTMxLAotICAgIDEsMCwxLDExMywxMjgsMCw4NywxMjQsMywwLDEyNCwwLDAsOTUsMTEsMCwKLSAgICAxMTYsNywwLDEwNiw4LDAsMTA2LDksMCwxMTYsMTYsMCwxMzEsMSwwLDExNCwKLSAgICAxMCwxLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDEyNCwyLDAsNjgsMTMxLAotICAgIDEsMCwxMjQsMCwwLDk1LDE3LDAsMTEwLDAsMCwxMDAsNiwwLDgzLDQxLAotICAgIDcsMTIyLDY4LDcwLDEwNSwxMDgsMTA4LDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsMzIsMTExLDEwMiwzMiwxMTIsMTExLDExNiwxMDEsMTEwLDExNiwxMDUsOTcsMTA4LDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsOTcsCi0gICAgMTAzLDEwMSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwMCwxMDUsMTE0LAotICAgIDEwMSw5OSwxMTYsMTExLDExNCwxMjEsNDYsMTE0LDAsMCwwLDAsMTE0LDExNiwwLDAsCi0gICAgMCwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMywwLDAsMCw4MywwLDAsMCwxMTUsMjgsMCwKLSAgICAwLDAsMTA0LDAsMCwxMjQsMCwwLDkzLDE4LDAsMTI1LDEsMCwxMjQsMSwKLSAgICAwLDEwNiwwLDAsMTMxLDAsMCwxNDYsMiwwLDExMyw2LDAsODMsMTE0LDQsCi0gICAgMCwwLDAsNDEsMSwxMTQsMTQwLDAsMCwwLDQxLDIsMTE0LDIyLDAsMCwKLSAgICAwLDkwLDIsMTAyLDExMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwyNTAsOSw2MCwxMTUsMTAxLDExNiw5OSwxMTEsMTA5LDExMiw2Miw0MiwKLSAgICA4LDAsMCwxMTUsMiwwLDAsMCw5LDAsMTIyLDQxLDcwLDEwNSwxMDgsMTAxLAotICAgIDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LAotICAgIDEwNCwxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDExNSwxMDEsMTE2LAotICAgIDk5LDExMSwxMDksMTEyLDYyLDc4LDQxLDE4LDExNCwzNSwwLDAsMCwxMTQsMywwLAotICAgIDAsMCw5MCw3LDEwOCwxMDUsMTE1LDExNiwxMDAsMTA1LDExNCwxMTQsNDUsMCwwLDAsCi0gICAgMjE4LDE3LDcwLDEwNSwxMDgsMTAxLDc4LDExMSwxMTYsNzAsMTExLDExNywxMTAsMTAwLDY5LDExNCwKLSAgICAxMTQsMTExLDExNCwyMTgsMTUsODAsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsNjksCi0gICAgMTE0LDExNCwxMTEsMTE0LDIxOCwxOCw3OCwxMTEsMTE2LDY1LDY4LDEwNSwxMTQsMTAxLDk5LDExNiwKLSAgICAxMTEsMTE0LDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDcsMCwwLDAsMTE0LDgsMCwKLSAgICAwLDAsMTE0LDksMCwwLDAsMTE0LDkwLDEsMCwwLDExNCw5MSwxLDAsCi0gICAgMCwxMTQsMTM0LDAsMCwwLDExNCw0NywwLDAsMCwxMTQsMTQwLDAsMCwwLAotICAgIDIxOCwzLDk3LDEwMCwxMDAsMTE0LDEwLDAsMCwwLDExNCw5MiwxLDAsMCw0MSwKLSAgICA5LDExNCw3MSwwLDAsMCwxMTQsMzUsMCwwLDAsOTAsOCw5OSwxMTEsMTEwLAotICAgIDExNiwxMDEsMTEwLDExNiwxMTUsOTAsMjEsMTA4LDExMSwxMTksMTAxLDExNCw5NSwxMTUsMTE3LDEwMiwKLSAgICAxMDIsMTA1LDEyMCw5NSw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsMTE0LDcyLDEsMCwKLSAgICAwLDExNCw2NywwLDAsMCwxMTQsNjYsMSwwLDAsMTE0LDU4LDEsMCwwLAotICAgIDkwLDgsMTEwLDEwMSwxMTksOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDk0LDEsMCwwLDEzLDgsCi0gICAgMCwwLDExNSwzNCwwLDAsMCwwLDIsOSwxLDMsMSwzMSwxLDIyLAotICAgIDMsMTEsMywxOCwxLDE4LDcsOSwxLDEzLDEsMjQsMSw2LDEsMjcsCi0gICAgMiw2LDEsMTcsMSw5LDEsMTgsMSwxMjIsMjIsNzAsMTA1LDEwOCwxMDEsNzAsCi0gICAgMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LAotICAgIDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsCi0gICAgMCwwLDcsMCwwLDAsMTE1LDI1LDAsMCwwLDEzNSwwLDAsMTM1LDEsCi0gICAgMCwxMDIsMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwyLDAsCi0gICAgMTI0LDIsMCw4Myw0MSwzLDk3LDIwLDEsMCwwLDY1LDMyLDk5LDEwOCw5NywKLSAgICAxMTUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwKLSAgICAxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsOTksMTA4LDExMSwxMTUsMTE3LDExNCwKLSAgICAxMDEsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LAotICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMCwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDExNCwxMDEsMTE2LAotICAgIDExNywxMTQsMTEwLDMyLDk3LDExMCwzMiwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwzMiwKLSAgICAxMTcsMTE1LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsCi0gICAgMTA1LDEwMSwxMDAsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMzIsOTcsMTEwLDEwMCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwKLSAgICAxMDgsMTExLDExNSwxMTcsMTE0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsOTksOTcsMTA4LAotICAgIDEwOCwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDExMSwxMTUsMTE3LAotICAgIDExNCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDAsMTA1LDExNCwxMDEsCi0gICAgOTksMTE2LDExMSwxMTQsMTIxLDQ0LDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwKLSAgICAxMTEsMTE0LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDk3LAotICAgIDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OSwKLSAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw0LDAsMCwwLAotICAgIDE5LDAsMCwwLDExNSw0NiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLAotICAgIDEsMCwxMTUsMzMsMCwxMTYsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMjQsMCwKLSAgICAwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMCwwLDEzNiwwLDAsMTI0LDAsMCwKLSAgICAxMzYsMSwwLDE0MCwxLDAsODMsNDEsMywxMjIsNDUsODAsOTcsMTE2LDEwNCwzMiwKLSAgICAxMDQsMTExLDExMSwxMDcsMzIsMTAyLDExMSwxMTQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAotICAgIDEwNSw5OCw0NiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsNDYsNzAsMTA1LDEwOCwKLSAgICAxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMjIsMzAsMTExLDExMCwxMDgsMTIxLDMyLDEwMCwKLSAgICAxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMDUsMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExNSwKLSAgICAxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDExNCwzNSwwLDAsMCw0MSwyLDExNCwKLSAgICA0NiwwLDAsMCwxMTQsMTU0LDAsMCwwLDQxLDEsMTE0LDM1LDAsMCwwLAotICAgIDQxLDIsMTE0LDEyLDEsMCwwLDExNCw5MywxLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNSwwLDAsMCwyMTgsMjQsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsCi0gICAgMTA3LDk1LDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsCi0gICAgNTQsOCwwLDAsMTE1LDYsMCwwLDAsMCwyLDEyLDEsMjEsMSwxMjIsCi0gICAgNTQsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCwKLSAgICA5NSwxMDQsMTExLDExMSwxMDcsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDExMiwKLSAgICA5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw5NSwxMDIsMTExLDExNCw5NSw3MCwxMDUsMTA4LAotICAgIDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNCw0LDAsMCwwLDQxLDMsMTE0LDEyLAotICAgIDEsMCwwLDExNCw5MywxLDAsMCwxMTQsMTAwLDEsMCwwLDExNCw0LDAsCi0gICAgMCwwLDQxLDIsMTE0LDEyLDEsMCwwLDExNCw5MywxLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwyMTgsOSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsNDQsOCwKLSAgICAwLDAsMTE1LDQsMCwwLDAsMCwxMCwyMSw2LDEyMiwyMCw3MCwxMDUsMTA4LAotICAgIDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLAotICAgIDEwNyw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsODMsNDEsMiw3OCwxMjIsMTYsCi0gICAgNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwxMjMsMzMsMTE0LDEyNSw0MSwKLSAgICA0MSwyLDExNCw0NywwLDAsMCwxMTQsMzUsMCwwLDAsNDEsMSwxMTQsNzEsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMTE0LDEwMSwwLDAsMCw2Miw4LDAsMCwxMTUsMiwwLDAsMCwKLSAgICAwLDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsCi0gICAgOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDQxLDE1LDExNCw1NywwLDAsMCwxMTQsNTYsCi0gICAgMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw1OSwwLDAsMCwxMTQsNzIsMCwKLSAgICAwLDAsMTE0LDc1LDEsMCwwLDExNCwxNzMsMCwwLDAsMTE0LDE1LDEsMCwKLSAgICAwLDExNCwxNjYsMCwwLDAsMTE0LDg2LDEsMCwwLDExNCwxNCwxLDAsMCwKLSAgICAxMTQsOTQsMSwwLDAsMTE0LDE5LDEsMCwwLDExNCwxMDEsMSwwLDAsMTE0LAotICAgIDEwMSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNSwwLDAsMCwxMTQsODcsMSwwLDAsMTc4LDcsMCwKLSAgICAwLDExNSwyMCwwLDAsMCwxMiw3LDYsMiwxMiwxNCwxMiw0LDYsMiwKLSAgICAxMiwxMiwxMiw1LDE1LDQ1LDEyLDMxLDE4LDE4LDExNCw4NywxLDAsMCw5OSwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAotICAgIDY0LDAsMCwwLDExNSw0NiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsCi0gICAgMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLAotICAgIDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsCi0gICAgOTAsNSwwLDEwMCw2LDAsODMsNDEsNywyMTgsMTgsOTUsNzMsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDEyMiwzNiw2NywKLSAgICAxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwzMiwxMDksOTcsMTEwLDk3LDEwMywxMDEsMTE0LDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsCi0gICAgOTksMTA3LDQ2LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAotICAgIDEsMCwwLDAsNjcsMCwwLDAsMTE1LDE0LDAsMCwwLDExNiwwLDAsCi0gICAgMTA2LDEsMCwxMzEsMCwwLDEsMTAwLDEsMCw4Myw0MSwyLDEyMiwyNCw2NSwKLSAgICA5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDc4LDQxLDIsMTE0LDEwNiwwLDAsMCwxMTQsCi0gICAgNCwxLDAsMCw0MSwxLDExNCw3MSwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzUsMCwwLDAsNzIsCi0gICAgOCwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwyOCw5NSw3MywxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsNDYsOTUsCi0gICAgOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSw0LDAsMCwwLDAsMCwwLAotICAgIDAsNCwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwxNCwwLAotICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxLDEwMCwxLDAsODMsCi0gICAgNDEsMiwxMjIsNjAsODIsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywzMiwxMTQsMTAxLDEwMyw5NywKLSAgICAxMTQsMTAwLDEwOCwxMDEsMTE1LDExNSwzMiwxMTEsMTAyLDMyLDk3LDExMCwxMjEsMzIsMTE0LDk3LAotICAgIDEwNSwxMTUsMTAxLDEwMCwzMiwxMDEsMTIwLDk5LDEwMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDExNSw0NiwKLSAgICA3OCw0MSwyLDExNCwxMDYsMCwwLDAsMTE0LDEwNywwLDAsMCw0MSw0LDExNCwKLSAgICA3MSwwLDAsMCw5MCw4LDEwMSwxMjAsOTksOTUsMTE2LDEyMSwxMTIsMTAxLDkwLDksCi0gICAgMTAxLDEyMCw5OSw5NSwxMTgsOTcsMTA4LDExNywxMDEsOTAsMTMsMTAxLDEyMCw5OSw5NSwxMTYsCi0gICAgMTE0LDk3LDk5LDEwMSw5OCw5Nyw5OSwxMDcsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDgxLDAsMCwwLDc2LDgsMCwwLAotICAgIDExNSwyLDAsMCwwLDAsMiwxMjIsMjcsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICA3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMjAsCi0gICAgMTA1LDExNiw5NSw5NSw3OCw0MSw2LDExNCw1NywwLDAsMCwxMTQsNTYsMCwwLAotICAgIDAsMTE0LDU4LDAsMCwwLDExNCw1OSwwLDAsMCwxMTQsNzUsMCwwLDAsCi0gICAgMTE0LDgxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxMDIsMSwwLDAsNjgsOCwKLSAgICAwLDAsMTE1LDYsMCwwLDAsMTIsMiw2LDIsMTIsNCwxMTQsMTAyLDEsCi0gICAgMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDQsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDkxLDAsMCwwLDEyNCwxLDAsMTA2LAotICAgIDAsMCwxMDAsMSwwLDEyNCwyLDAsMTAwLDIsMCwyNCwxMzEsMiwwLDEyNSwKLSAgICAzLDAsMTE2LDEsMCwxMjQsMywwLDEzMSwxLDAsMTI0LDIsMCwxMDcsMCwKLSAgICAwLDExNCw1NSwwLDExNiwyLDAsMTAwLDMsMCwxMzEsMSwwLDEzMCwxLDAsCi0gICAgMTEwLDAsMCwxMjQsMywwLDEwMCw0LDAsMjUsMTI1LDQsMCwxMjQsMCwwLAotICAgIDExNCw4NywwLDEwMCw1LDAsMTA2LDMsMCwxMjQsNCwwLDEyNCwwLDAsMTMxLAotICAgIDIsMCw4MywxMjQsNCwwLDgzLDQxLDYsMTIyLDUwLDgyLDEwMSwxMTUsMTExLDEwOCwKLSAgICAxMTgsMTAxLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTYsMTExLDMyLDk3LDExMCwzMiwKLSAgICA5Nyw5OCwxMTUsMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTEsMTEwLDEwMSw0NiwxMTQsMTE2LDAsCi0gICAgMCwwLDExNCwyOSwwLDAsMCwxMjIsNTAsOTcsMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsCi0gICAgMTAxLDEwMCwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMzIsOTgsMTAxLDEyMSwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLDExMiw0NSwxMDgsMTAxLAotICAgIDExOCwxMDEsMTA4LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTQsODQsMCwwLDAsCi0gICAgMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDQxLDQsMTE0LDM0LDAsMCwwLDExNCwzMSwKLSAgICAwLDAsMCwxMTQsMTMzLDAsMCwwLDExNCw0NywwLDAsMCw0MSw1LDExNCwKLSAgICA2NywwLDAsMCwyMTgsNywxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMjE4LDUsMTA4LAotICAgIDEwMSwxMTgsMTAxLDEwOCw5MCw0LDk4LDEwNSwxMTYsMTE1LDExNCwxMjgsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEzLAotICAgIDk1LDExNCwxMDEsMTE1LDExMSwxMDgsMTE4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSw4MSw4LDAsCi0gICAgMCwxMTUsMTAsMCwwLDAsMCwyLDIyLDEsMTgsMSwxNSwxLDEwLDEsCi0gICAgMTE0LDEwNSwxLDAsMCw5OSwzLDAsMCwwLDAsMCwwLDAsNCwwLAotICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw0NywwLDAsMCwxMjQsCi0gICAgMCwwLDEwNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTI1LDMsCi0gICAgMCwxMjQsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMzQsMCwxMDAsMCwwLAotICAgIDgzLDExNiwxLDAsMTI0LDEsMCwxMjQsMywwLDEzMSwyLDAsODMsNDEsMSwKLSAgICA3OCw0MSwyLDExNCwxNSwxLDAsMCwxMTQsMTc0LDAsMCwwLDQxLDQsMTE0LAotICAgIDc4LDEsMCwwLDExNCw2NywwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDE3MCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwyMTgsMTcsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk1LDEwOCwKLSAgICAxMDEsMTAzLDk3LDk5LDEyMSw5MCw4LDAsMCwxMTUsOCwwLDAsMCwwLDMsCi0gICAgMTgsMSwxMiwxLDQsMSwxMTQsMTA2LDEsMCwwLDk5LDMsMCwwLDAsCi0gICAgMCwwLDAsMCw5LDAsMCwwLDI2LDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSwzNCwxLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTE1LDI4LDAsMTE2LDIsCi0gICAgMCwxMDYsMywwLDEwMCwxLDAsMTE2LDQsMCwxMzEsMiwwLDEsMTEwLDAsCi0gICAgMCwxMjQsMCwwLDExNiwwLDAsMTA2LDUsMCwxMDcsNiwwLDEyNSwzLDAsCi0gICAgMTIwLDI0MCwwLDExNiwwLDAsMTA2LDEsMCw2OCw5MywyMjUsMCwxMjUsNCwwLAotICAgIDExNiw2LDAsMTMxLDAsMCwxNDMsOTMsMCwxLDEyMSwxMywwLDEyNCw0LDAsCi0gICAgMTA2LDcsMCwxMjUsNSwwLDg3LDExMCw1NCwwLDQsMTE2LDgsMCwxMDcsMTAsCi0gICAgMCwxMTQsMTM4LDAsMSwxLDEsMTE2LDksMCwxMjQsNCwwLDEyNCwwLDAsCi0gICAgMTI0LDEsMCwxMzEsMywwLDEyNSw2LDAsMTI0LDYsMCwxMDAsMiwwLDEwNywKLSAgICA4LDAsMTE0LDEzNCwwLDExOSw1MywwLDExMCwwLDAsODksMTEwLDE5LDAsODgsCi0gICAgMTI0LDUsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywwLDEyNSwKLSAgICA2LDAsODcsMTAwLDIsMCw4MSw4OCwxMjQsNiwwLDEwMCwyLDAsMTA3LDksCi0gICAgMCwxMTQsNTMsMCwxMjQsMywwLDEyLDExNCwxNSwxLDEyNCwwLDAsMTE2LDAsCi0gICAgMCwxMDYsNSwwLDEwNyw2LDAsMTE0LDE1LDEsMTE2LDAsMCwxMDYsNSwwLAotICAgIDEyNCwwLDAsMjUsMTI1LDcsMCwxMjEsMTMsMCwxMjQsNywwLDEwNiwxMCwwLAotICAgIDEyNSw4LDAsODcsMTEwLDIyLDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwyNDcsCi0gICAgMCwxLDEsMSwxMjQsNiwwLDgzLDg5LDExMywxOSwxLDg4LDEyNCw4LDAsCi0gICAgMTAwLDIsMCwxMDcsOCwwLDExNCw4LDEsMTI0LDYsMCw4MywxMjQsOCwwLAotICAgIDgzLDExMywyMiwxLDEyNCw2LDAsODMsMTEzLDUzLDAsMTEzLDUzLDAsODcsMTAwLAotICAgIDIsMCw4MywxMDAsMiwwLDgzLDQxLDMsMTIyLDIzLDcwLDEwNSwxMTAsMTAwLDMyLAotICAgIDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDQ2LDEyMiwyMiwxMTUsMTIxLDExNSw0NiwxMDksMTAxLDExNiw5Nyw5NSwxMTIsOTcsMTE2LAotICAgIDEwNCwzMiwxMDUsMTE1LDMyLDEwMSwxMDksMTEyLDExNiwxMjEsNzgsNDEsMTEsMTE0LDcsMCwKLSAgICAwLDAsMjE4LDksMTA5LDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE2NywwLAotICAgIDAsMCwxMTQsMTY4LDAsMCwwLDExNCwxNjksMCwwLDAsMTE0LDczLDAsMCwKLSAgICAwLDExNCwxMDIsMSwwLDAsMTE0LDE0LDEsMCwwLDExNCwyMTAsMCwwLDAsCi0gICAgMTE0LDEwNiwxLDAsMCwxMTQsMjA5LDAsMCwwLDQxLDksMTE0LDY3LDAsMCwKLSAgICAwLDExNCwzNSwwLDAsMCwxMTQsMTMsMSwwLDAsOTAsOSwxMDUsMTE1LDk1LAotICAgIDExNCwxMDEsMTA4LDExMSw5NywxMDAsMTE0LDc4LDEsMCwwLDExNCwxNCwxLDAsMCwKLSAgICAxMTQsMTc4LDAsMCwwLDExNCwxODAsMCwwLDAsMTE0LDIwOSwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTAsCi0gICAgOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDgsMCwwLDExNSw0OCwKLSAgICAwLDAsMCwwLDIsOSwxLDE5LDQsMTUsMSwxNiwxLDEwLDEsMywKLSAgICAxLDEzLDEsMTMsMSwxOCwxLDEyLDEsMTEsMiwyNCwxLDEyLDIsMjIsCi0gICAgMSwxMywxLDMsMSwxMywxLDEzLDQsOSwyLDEyLDEsNCwyLDcsCi0gICAgMiwxMSwyLDExNCwxMDgsMSwwLDAsOTksMywwLDAsMCwwLDAsMCwKLSAgICAwLDQsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMTk0LDAsCi0gICAgMCwwLDExNiwwLDAsMTI0LDAsMCwxMTYsMSwwLDEzMSwyLDAsMTE1LDQ1LAotICAgIDAsMTE2LDIsMCwxMDAsMSwwLDEwNiwzLDAsMTE2LDQsMCwxMjQsMCwwLAotICAgIDEzMSwxLDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsCi0gICAgMiwwLDEwMCwyLDAsMTA3LDAsMCwxMTQsNzIsMCwxMTYsNSwwLDEwMCwzLAotICAgIDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTI0LDEsMCwxMTQsMTU2LDAsCi0gICAgMTE2LDAsMCwxMjQsMSwwLDExNiwxLDAsMTMxLDIsMCwxMTUsMTA4LDAsMTE2LAotICAgIDIsMCwxMDAsNCwwLDEzMSwxLDAsMTMwLDEsMCwxMTMsMTU2LDAsMTI0LDEsCi0gICAgMCwxMTYsNiwwLDEwNiw3LDAsMTA3LDcsMCwxMTQsMTU2LDAsMTAwLDUsMCwKLSAgICAxMjUsMywwLDExNiw4LDAsMTI0LDMsMCwxMDYsMywwLDEyNCwxLDAsMTMxLAotICAgIDEsMCwxMzEsMSwwLDEzMCwxLDAsMTEzLDE1NiwwLDExMCwwLDAsMTI0LDAsCi0gICAgMCwxMiwxMTQsMTkwLDAsMTI0LDIsMCwxMDAsMiwwLDEwNywyLDAsMTE0LDE5MCwKLSAgICAwLDExNiw1LDAsMTAwLDYsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwKLSAgICAxMDAsNywwLDgzLDQxLDgsMTIyLDI4LDg2LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsOTcsCi0gICAgMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDM0LDExNSw5NywKLSAgICAxMTAsMTAxLDM0LDQ2LDEyMiwzMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LAotICAgIDEwMSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDExNSwxMTYsMTE0LDQ0LDMyLDExMCwKLSAgICAxMTEsMTE2LDMyLDEyMywxMjUsMTE0LDg0LDAsMCwwLDEyMiwxOCwxMDgsMTAxLDExOCwxMDEsCi0gICAgMTA4LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsNjIsNjEsMzIsNDgsMTIyLDMxLAotICAgIDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTAsMTExLDExNiwzMiwKLSAgICAxMTUsMTAxLDExNiwzMiwxMTYsMTExLDMyLDk3LDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDEyMiwKLSAgICA2MSw4MCw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLAotICAgIDMzLDExNCwxMjUsMzIsMTEwLDExMSwxMTYsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCw0NCwzMiwKLSAgICA5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTEyLDEwMSwxMTQsMTAyLDExMSwxMTQsMTA5LDMyLDExNCwKLSAgICAxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMjIsMTcsCi0gICAgNjksMTA5LDExMiwxMTYsMTIxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksCi0gICAgMTAxLDc4LDQxLDksMTE0LDE5MywwLDAsMCwxMTQsODMsMSwwLDAsMjE4LDksCi0gICAgODQsMTIxLDExMiwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCw0NywwLDAsMCwxMTQsNjYsCi0gICAgMCwwLDAsMTE0LDEzMywwLDAsMCwxMTQsNywwLDAsMCwxMTQsNzMsMCwKLSAgICAwLDAsMjE4LDExLDgzLDEyMSwxMTUsMTE2LDEwMSwxMDksNjksMTE0LDExNCwxMTEsMTE0LDQxLAotICAgIDQsMTE0LDY3LDAsMCwwLDExNCwxMDMsMSwwLDAsMTE0LDEwNCwxLDAsMCwKLSAgICAxMTQsMTcyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA1LDAsMCwwLDIxOCwxMyw5NSwxMTUsOTcsMTEwLDEwNSwxMTYsMTIxLDk1LDk5LDEwNCwKLSAgICAxMDEsOTksMTA3LDEzOSw4LDAsMCwxMTUsMjQsMCwwLDAsMCwyLDE1LDEsCi0gICAgMzAsMSwxMiwxLDE1LDEsNiwxLDE1LDEsMTUsMSwxNSwxLDYsMiwKLSAgICAyNywxLDE5LDEsMTE0LDExMSwxLDAsMCwxMjIsMTYsNzgsMTExLDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMjIsNCwxMjMsMzMsMTE0LAotICAgIDEyNSw5OSwyLDAsMCwwLDAsMCwwLDAsOCwwLDAsMCwxMiwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsNTIsMSwwLDAsMTAwLDAsMCwxMjUsMiwKLSAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEzMSwxLDAsMTAwLDIsMCwKLSAgICAyNSwxMjUsMywwLDEyNCwzLDAsMTE0LDE3OCwwLDEyNCwzLDAsMTE2LDEsMCwKLSAgICAxMDYsMiwwLDEwNyw3LDAsMTE0LDYyLDAsMTE2LDMsMCwxMjQsMSwwLDEyNCwKLSAgICAzLDAsMTMxLDIsMCwxLDExMCwwLDAsMTI0LDAsMCwxMTYsMSwwLDEwNiwKLSAgICAyLDAsMTA3LDYsMCwxMTQsODgsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LDAsCi0gICAgMCwyNSw4MywxMTYsMSwwLDEwNiwyLDAsMTI0LDMsMCwyNSwxMjUsNCwwLAotICAgIDEyMSwxMywwLDEyNCw0LDAsMTA2LDQsMCwxMjUsMiwwLDg3LDExMywxNzgsMCwKLSAgICA0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDE3NCwwLDEsMSwxLDExNiw2LDAsCi0gICAgMTAwLDMsMCwyMywxMDYsNywwLDEyNCwwLDAsMTI0LDMsMCwxMzEsMiwwLAotICAgIDEyNSw1LDAsMTE2LDgsMCwxMjQsNSwwLDEwMCw0LDAsMTI0LDAsMCwxMzEsCi0gICAgMSwxLDEzMCwxLDAsODksMTEzLDE3OCwwLDg4LDExMCwwLDAsMTE2LDksMCwKLSAgICAxMjQsMCwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsNiwwLDEyNCw2LDAsMTAwLAotICAgIDAsMCwxMDcsOCwwLDExNCwyMzUsMCwxMTYsOCwwLDExNiw2LDAsMTA2LDcsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDAsMTAwLDQsMCwxMjQsMCwwLDEzMSwxLDEsCi0gICAgMTMwLDEsMCwxMTAsMTgsMCwxMTYsMTAsMCwxMjQsNiwwLDEzMSwxLDAsMTA2LAotICAgIDExLDAsMTMxLDAsMCwxMjUsNywwLDEyNCwzLDAsMTE0LDQ4LDEsMTE2LDEsCi0gICAgMCwxMDYsMiwwLDEyNCwzLDAsMjUsMTI1LDQsMCwxMTYsMTIsMCwxMjQsNCwKLSAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEzMSwxLDAsMTAwLDUsMCwKLSAgICAyNSwxMjQsNywwLDEzMSwzLDAsMSwxMTAsMCwwLDEyNCw3LDAsODMsNDEsCi0gICAgNiw3OCwxMTQsMTE2LDAsMCwwLDExNCw4NCwwLDAsMCwxMjIsMjMsNTksMzIsCisgICAgMCwxMTUsMTc5LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMTYsMSwwLDEzMSwKKyAgICAyLDAsMTE1LDQyLDAsMTE2LDIsMCwxMDAsMSwwLDEwNiwzLDAsMTE2LDQsCisgICAgMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsCisgICAgMTI0LDIsMCwxMDAsMiwwLDEwNywwLDAsMTE0LDY2LDAsMTE2LDUsMCwxMDAsCisgICAgMywwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMSwwLDExNCwxNDQsMCwxMTYsMCwKKyAgICAwLDEyNCwxLDAsMTE2LDEsMCwxMzEsMiwwLDExNSwxMDIsMCwxMTYsMiwwLAorICAgIDEwMCw0LDAsMTMxLDEsMCwxMzAsMSwwLDExMCw0MiwwLDEyNCwxLDAsMTE2LAorICAgIDYsMCwxMDYsNywwLDEwNyw3LDAsMTE0LDE0NCwwLDEwMCw1LDAsMTI1LDMsCisgICAgMCwxMTYsOCwwLDEyNCwzLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsCisgICAgMTMxLDEsMCwxMzAsMSwwLDEyNCwwLDAsMTIsMTE0LDE3NSwwLDEyNCwyLDAsCisgICAgMTAwLDIsMCwxMDcsMiwwLDExNCwxNzUsMCwxMTYsNSwwLDEwMCw2LDAsMTMxLAorICAgIDEsMCwxMzAsMSwwLDEwMCw3LDAsODMsNDEsOCwxMjIsMjgsODYsMTAxLDExNCwKKyAgICAxMDUsMTAyLDEyMSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMTE1LDMyLDk3LDExNCwKKyAgICAxMDEsMzIsMzQsMTE1LDk3LDExMCwxMDEsMzQsNDYsMTIyLDMxLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTE1LAorICAgIDExNiwxMTQsNDQsMzIsMTEwLDExMSwxMTYsMzIsMTIzLDEyNSwxMTQsMzMsMCwwLDAsMTIyLAorICAgIDE4LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiw2MiwKKyAgICA2MSwzMiw0OCwxMjIsMzEsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LAorICAgIDMyLDExMCwxMTEsMTE2LDMyLDExNSwxMDEsMTE2LDMyLDExNiwxMTEsMzIsOTcsMzIsMTE1LDExNiwKKyAgICAxMTQsMTA1LDExMCwxMDMsMTIyLDYxLDgwLDk3LDExNCwxMDEsMTEwLDExNiwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMTAsMTExLDExNiwzMiwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTAwLDQ0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTIsMTAxLDExNCwxMDIsCisgICAgMTExLDExNCwxMDksMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEyMiwxNyw2OSwxMDksMTEyLDExNiwxMjEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNzgsNDEsOSwyMTgsMTAsMTA1LDExNSwxMDUsMTEwLDExNSwKKyAgICAxMTYsOTcsMTEwLDk5LDEwMSwyMTgsMywxMTUsMTE2LDExNCwyMTgsOSw4NCwxMjEsMTEyLDEwMSwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDUwLDAsMCwwLDExNCwxMywwLDAsMCwxMTQsCisgICAgMTY4LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsMjE4LDExLAorICAgIDgzLDEyMSwxMTUsMTE2LDEwMSwxMDksNjksMTE0LDExNCwxMTEsMTE0LDQxLDQsMTE0LDE1LDAsCisgICAgMCwwLDExNCwxNjksMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsMTQ3LDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCwxMyw5NSwxMTUsOTcsMTEwLDEwNSwxMTYsMTIxLDk1LDk5LDEwNCwxMDEsOTksMTA3LDE1MSwKKyAgICAzLDAsMCwxMTUsMjQsMCwwLDAsMCwyLDE1LDEsMjcsMSwxMiwxLAorICAgIDEyLDEsNiwxLDE1LDEsMTUsMSwxNSwxLDYsMiwyMSwxLDE5LDEsCisgICAgMTE0LDE4MSwwLDAsMCwxMjIsMTYsNzgsMTExLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMjIsNCwxMjMsMzMsMTE0LDEyNSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsOCwwLDAsMCwxMiwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsNDAsMSwwLDAsMTAwLDAsMCwxMjUsMiwwLDEyNCwwLDAsCisgICAgMTA2LDAsMCwxMDAsMSwwLDEzMSwxLDAsMTAwLDIsMCwyNSwxMjUsMywwLAorICAgIDEyNCwzLDAsMTE0LDE3NSwwLDEyNCwzLDAsMTE2LDEsMCwxMDYsMiwwLDEwNywKKyAgICA3LDAsMTE0LDU5LDAsMTE2LDMsMCwxMjQsMSwwLDEyNCwzLDAsMTMxLDIsCisgICAgMCwxLDEyNCwwLDAsMTE2LDEsMCwxMDYsMiwwLDEwNyw2LDAsMTE0LDg1LAorICAgIDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwwLDAsMjUsODMsMTE2LDEsMCwxMDYsCisgICAgMiwwLDEyNCwzLDAsMjUsMTI1LDQsMCwxMjEsMTMsMCwxMjQsNCwwLDEwNiwKKyAgICA0LDAsMTI1LDIsMCw4NywxMTAsNjEsMCw0LDExNiw1LDAsMTA3LDEwLDAsCisgICAgMTE0LDE3NCwwLDEsMSwxLDExNiw2LDAsMTAwLDMsMCwyMywxMDYsNywwLAorICAgIDEyNCwwLDAsMTI0LDMsMCwxMzEsMiwwLDEyNSw1LDAsMTE2LDgsMCwxMjQsCisgICAgNSwwLDEwMCw0LDAsMTI0LDAsMCwxMzEsMSwxLDEwMCwwLDAsMTMwLDIsCisgICAgMCw4OSwxMTAsMSwwLDg4LDExNiw5LDAsMTI0LDAsMCwxMjQsMiwwLDEzMSwKKyAgICAyLDAsMTI1LDYsMCwxMjQsNiwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMjMyLAorICAgIDAsMTE2LDgsMCwxMTYsNiwwLDEwNiw3LDAsMTI0LDAsMCwxMzEsMSwwLAorICAgIDEwMCw0LDAsMTI0LDAsMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDEyLDAsMTE2LAorICAgIDEwLDAsMTI0LDYsMCwxMzEsMSwwLDEyNSw3LDAsMTI0LDMsMCwxMTQsMzYsCisgICAgMSwxMTYsMSwwLDEwNiwyLDAsMTI0LDMsMCwyNSwxMjUsNCwwLDExNiwxMSwKKyAgICAwLDEyNCw0LDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTMxLDEsMCwKKyAgICAxMDAsNSwwLDI1LDEyNCw3LDAsMTMxLDMsMCwxLDEyNCw3LDAsODMsNDEsCisgICAgNiw3OCwxMTQsMTIxLDAsMCwwLDExNCwzMywwLDAsMCwxMjIsMjMsNTksMzIsCiAgICAgMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMTIsOTcsCi0gICAgOTksMTA3LDk3LDEwMywxMDEsMTE0LDY3LDAsMCwwLDExNCwxMTUsMCwwLDAsNDEsCi0gICAgMTMsMTE0LDMyLDAsMCwwLDExNCw3LDAsMCwwLDExNCw3MywwLDAsMCwKLSAgICAxMTQsMTE0LDAsMCwwLDExNCwyNDcsMCwwLDAsMTE0LDIxMCwwLDAsMCwyMTgsCi0gICAgOCw5NSw2OSw4Miw4Miw5NSw3Nyw4Myw3MSwxMTQsNDcsMCwwLDAsMTE0LDE1NCwKLSAgICAwLDAsMCwxMTQsMTA4LDEsMCwwLDExNCwxNzUsMCwwLDAsMTE0LDcsMSwKLSAgICAwLDAsMTE0LDYxLDAsMCwwLDQxLDgsMTE0LDY3LDAsMCwwLDIxOCw3LAotICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDExNCwzNSwwLDAsMCwxMTQsMjM0LDAsMCwKLSAgICAwLDkwLDEzLDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE0LDE3MiwwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCwxODAsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDIzLAotICAgIDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywKLSAgICAxMTAsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCwxNTksOCwwLDAsMTE1LDQyLDAsMCwwLAotICAgIDAsMSw2LDEsMTksMSw2LDEsMTUsMSwxNiwyLDE1LDEsMTEsMSwKLSAgICAxMywxLDMsMSwxMywxLDEzLDEsMjIsMSwyNiwxLDE1LDEsMTIsMSwKLSAgICAzMCwyLDE4LDEsNiwyLDEzLDEsMzIsMSwxMTQsMTE0LDEsMCwwLDk5LAotICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEwLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSwzNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLAotICAgIDEsMCwxNDMsMTgsMCwxLDExNiwxLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwKLSAgICAyLDAsODMsODcsMTAwLDEsMCw4MSw4OCwxMDAsMSwwLDgzLDQxLDIsMTIyLAotICAgIDU0LDcwLDEwNSwxMTAsMTAwLDMyLDk3LDExMCwxMDAsMzIsMTA4LDExMSw5NywxMDAsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsOTcsMTEwLDEwMCwzMiwxMTQsCi0gICAgMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw3OCw0MSwyLDExNCwxMDMsMCwwLDAsMTE0LAotICAgIDExNCwxLDAsMCw0MSwyLDExNCw2NywwLDAsMCwxMTQsMTEzLDEsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwKLSAgICAxNCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxODYsCi0gICAgOCwwLDAsMTE1LDQsMCwwLDAsMCwyLDEzLDEsMTE0LDExNSwxLDAsCi0gICAgMCw5OSwzLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw0LDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxNzIsMCwwLDAsMTE2LDAsMCwxMjQsMCwKLSAgICAwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywwLDEsMTI0LDIsMCwxMDAsMSwKLSAgICAwLDEwNyw0LDAsMTE0LDQ5LDAsMTE2LDEsMCwxMjQsMCwwLDEyNCwxLDAsCi0gICAgMTI0LDIsMCwxMzEsMywwLDEyNSwwLDAsMTEwLDAsMCwxMTYsMiwwLDEwNiwKLSAgICAzLDAsMTMxLDAsMCwxLDEyNCwwLDAsMTE2LDQsMCwxMDYsNSwwLDEwNywKLSAgICA3LDAsMTE0LDg3LDAsMTE2LDYsMCwxMjQsMCwwLDExNiw3LDAsMTMxLDIsCi0gICAgMCw4MywxMTYsNCwwLDEwNiw1LDAsMTI0LDAsMCwyNSwxMjUsMywwLDEyNCwKLSAgICAzLDAsMTAwLDIsMCwxMDcsOCwwLDExNCwxNTgsMCwxMTYsMiwwLDEwNiw4LAotICAgIDAsMTMxLDAsMCwxLDEwMCwzLDAsMTA2LDksMCwxMjQsMCwwLDEzMSwxLAotICAgIDAsMTI1LDQsMCwxMTYsMTAsMCwxMjQsNCwwLDEwMCw0LDAsMTI0LDAsMCwKLSAgICAxMzEsMSwxLDEzMCwxLDAsMTEwLDAsMCwxMTYsMTEsMCwxMjQsMCwwLDEzMSwKLSAgICAxLDAsMSwxMjQsMywwLDgzLDQxLDUsOTcsNTAsMSwwLDAsNzMsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDk3LDExNSwxMDEsMTAwLAotICAgIDMyLDExMSwxMTAsMzIsMTA1LDExNiwxMTUsMzIsMTEwLDk3LDEwOSwxMDEsNDQsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LAotICAgIDEwOCwxMDgsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsCi0gICAgMTA5LDk3LDEwMCwxMDEsMzIsMTAyLDExNCwxMTEsMTA5LDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiw5NywxMDAsMTA2LDExNywxMTUsMTE2LDEwOSwKLSAgICAxMDEsMTEwLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDIsCi0gICAgMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwKLSAgICAxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMTQsMTAxLDk3LDExNiwxMDEsMTE1LDExNiwzMiwKLSAgICA5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLDEwMCwxMDEsMTEwLDExMSwxMDksMTA1LDExMCw5NywxMTYsCi0gICAgMTExLDExNCwzMiwxMTEsMTAyLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCw5NywxMDgsCi0gICAgMTA1LDExNiwxMjEsMTAsMzIsMzIsMzIsMzIsOTgsMTAxLDExNiwxMTksMTAxLDEwMSwxMTAsMzIsCi0gICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTcsMTEwLAotICAgIDEwMCwzMiw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSw0NiwzMiw4NCwxMDQsCi0gICAgMTA1LDExNSwzMiwxMDUsMTEwLDk5LDEwOCwxMTcsMTAwLDEwMSwxMTUsMzIsMTE1LDEwMSwxMTYsMTE2LAotICAgIDEwNSwxMTAsMTAzLDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwKLSAgICAxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMTQsMzIsMTAwLDEwNSwxMDAsMzIsMTEwLDExMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgMTE0LDg0LDAsMCwwLDc4LDEyMiw0MCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTEsCi0gICAgMTAyLDMyLDEyMywxMjUsMzIsMTA0LDk3LDEwOCwxMTYsMTAxLDEwMCw1OSwzMiw3OCwxMTEsMTEwLAotICAgIDEwMSwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKLSAgICAxMTQsNjcsMCwwLDAsNDEsMTIsMTE0LDExMSwxLDAsMCwxMTQsMTA1LDEsMCwKLSAgICAwLDExNCwxMDYsMCwwLDAsMTE0LDQsMSwwLDAsMTE0LDcsMCwwLDAsCi0gICAgMTE0LDczLDAsMCwwLDExNCwxMTUsMSwwLDAsMjE4LDExLDk1LDEwMyw5OSwxMDAsCi0gICAgOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE0LDEwNywwLDAsMCwxMTQsNDcsMCwwLAotICAgIDAsMTE0LDE1NCwwLDAsMCwxMTQsMTEyLDAsMCwwLDQxLDUsMTE0LDY3LDAsCi0gICAgMCwwLDExNCwxMDMsMSwwLDAsMTE0LDEwNCwxLDAsMCwxMTQsMTgwLDAsMCwKLSAgICAwLDExNCwxNTIsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDUsMCwwLDAsMTE0LDExNiwxLDAsMCwxOTIsOCwwLDAsMTE1LDI4LAotICAgIDAsMCwwLDAsOSwxNiwxLDEyLDEsMjEsMSwxMCwxLDE1LDEsMTMsCi0gICAgMSwxMywxLDEyLDEsMTAsMSw2LDEsOSwxLDIxLDEsMTAsMSwxMTQsCi0gICAgMTE2LDEsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw2LDAsMCwKLSAgICAwLDE3LDAsMCwwLDY3LDAsMCwwLDExNSwxLDEsMCwwLDExNiwwLAotICAgIDAsMTI0LDAsMCwxMDAsMSwwLDEzMSwyLDAsMTE0LDI1MywwLDEwMCwyLDAsCi0gICAgMTI0LDEsMCwxMDcsNiwwLDExNCw4OSwwLDExNiwxLDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDEyNSwxLDAsMTI0LDEsMCwxMDYsMiwwLDEwMCwyLDAsMTMxLDEsCi0gICAgMCwxLDExNiwwLDAsMTI0LDAsMCwxMDAsMywwLDEzMSwyLDAsMTE0LDg5LAotICAgIDAsMTI0LDEsMCwxMDYsMywwLDEyNCwwLDAsMTA2LDQsMCwxMzEsMSwwLAotICAgIDEsMTEzLDg5LDAsMTEwLDAsMCwxMjAsMTYxLDAsMTI0LDEsMCw2OCw5MywxNTAsCi0gICAgMCwxMjUsMywwLDExNiwwLDAsMTI0LDAsMCwxMjQsMywwLDEzMSwyLDAsCi0gICAgMTE1LDk2LDAsMTAwLDQsMCwxMDYsNSwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsCi0gICAgMywwLDEzMSwyLDAsMTI1LDQsMCwxMjEsMTcsMCwxMTYsNywwLDEyNCwyLAotICAgIDAsMTI0LDQsMCwxMzEsMiwwLDEsODcsMTEzLDI0NiwwLDQsMTE2LDgsMCwKLSAgICAxMDcsMTAsMCwxMTQsMjQyLDAsMSwxMjUsNSwwLDEsMTIyLDUzLDAsMTE2LDksCi0gICAgMCwxMjQsNSwwLDEzMSwxLDAsMTA2LDEwLDAsMTE2LDExLDAsMTMxLDEsMCwKLSAgICAxMTQsMjIxLDAsMTI0LDUsMCwxMDYsMTIsMCwxMjQsNCwwLDEwNywyLDAsMTE0LAotICAgIDIyMSwwLDExOSw5NiwwLDExMywyMjEsMCwxMTAsMCwwLDEzMCwwLDAsODcsODksCi0gICAgMTAwLDUsMCwxMDAsNSwwLDEyNSw1LDAsMTI2LDUsMCw4OCwxMTMsMjQ2LDAsCi0gICAgODgsMTEzLDk2LDAsMTEzLDk2LDAsODcsMTEwLDAsMCwxMjQsMCwwLDgzLDQxLAotICAgIDYsMTIyLDIzOCw3MCwxMDUsMTAzLDExNywxMTQsMTAxLDMyLDExMSwxMTcsMTE2LDMyLDExOSwxMDQsCi0gICAgOTcsMTE2LDMyLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDMyLDExNSwxMDQsCi0gICAgMTExLDExNywxMDgsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDQ2LDEwLDEwLDMyLDMyLAotICAgIDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMzIsMTEyLDk3LAotICAgIDExNCw5NywxMDksMTAxLDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsOTcsMzIsOTksOTcsMTA4LAotICAgIDEwOCw5Nyw5OCwxMDgsMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsOTcsMTA3LDEwMSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDQ2LDMyLDczLDExNiwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LAotICAgIDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDk5LDExMSwxMTcsMTEyLDEwOCwxMDEsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTQsMTExLDEwOSwKLSAgICAzMiw5NywxMTUsMTE1LDExNywxMDksMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMTA4LDEwNSw5OCwzOSwxMTUsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLAotICAgIDEwNSwxMTUsMzIsMTAwLDEwMSwxMTUsMTA1LDExNCwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDExNCwyNDcsMCwwLDAsMjUwLDEsNDIsMjE4LDcsOTUsOTUsOTcsMTA4LDEwOCwKLSAgICA5NSw5NSwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsNzgsNDEsMTMsMTE0LDYwLDAsMCwKLSAgICAwLDExNCwyNDYsMCwwLDAsMjE4LDYsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMTE0LDE5OCwKLSAgICAwLDAsMCwxMTQsMTE4LDEsMCwwLDExNCw0NywwLDAsMCwxMTQsNTcsMCwKLSAgICAwLDAsMTE0LDExNCwwLDAsMCwxMTQsMTU0LDAsMCwwLDExNCw4MywxLDAsCi0gICAgMCwxMTQsOSwwLDAsMCwyMTgsMTUsOTUsNjksODIsODIsOTUsNzcsODMsNzEsCi0gICAgOTUsODAsODIsNjksNzAsNzMsODgsMTE0LDY3LDAsMCwwLDQxLDYsMTE0LDE4MCwKLSAgICAwLDAsMCwyMTgsOCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDExNCwxMTMsMSwKLSAgICAwLDAsMTE0LDE2LDAsMCwwLDkwLDksMTAyLDExNCwxMTEsMTA5LDk1LDExMCw5NywKLSAgICAxMDksMTAxLDExNCw0MSwxLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNSwwLDAsMCwyMTgsMTYsOTUsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSw5NSwKLSAgICAxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDIxNiw4LDAsMCwxMTUsMzQsMCwwLAotICAgIDAsMCwxMCwxNSwxLDEyLDEsMTIsMSwxMywxLDE1LDEsMjIsMSwxMywKLSAgICAxLDE1LDEsMjEsMSwzLDEsMTcsMSwxOCw0LDIxLDEsMTUsMSw5LAotICAgIDEsMzIsMSwxMTQsMTIyLDEsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDc4LDAsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEzMSwxLDAsMTI1LDEsCi0gICAgMCwxMjQsMSwwLDEwMCwyLDAsMTA3LDgsMCwxMTQsNzQsMCwxMjQsMCwwLAotICAgIDEwMCwzLDAsMjUsMTI1LDEsMCwxMDAsNCwwLDEyNCwwLDAsMTA3LDcsMCwKLSAgICAxMTQsNzQsMCwxMjQsMSwwLDEwNiwxLDAsMTAwLDUsMCwxMzEsMSwwLDEwMCwKLSAgICA2LDAsMjUsMTI1LDEsMCwxMTMsNzQsMCwxMTAsMCwwLDEyNCwxLDAsODMsCi0gICAgNDEsNywxMjIsMTY3LDY3LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMzIsMTE5LDEwNCwKLSAgICA5NywxMTYsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDExNSwKLSAgICAxMDQsMTExLDExNywxMDgsMTAwLDMyLDk4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NSwKLSAgICA5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTA1LDExNSwzMiwxMTAsMTExLAotICAgIDExNiwzMiwxMDMsMTE3LDk3LDExNCw5NywxMTAsMTE2LDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsCi0gICAgOTgsMTAxLDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTAxLDEwMCwzMiwxMTEsMTE0LDMyLDk5LDExMSwKLSAgICAxMTcsMTA4LDEwMCwzMiw5OCwxMDEsMzIsMTE1LDEwMSwxMTYsMzIsMTE2LDExMSwzMiw3OCwxMTEsCi0gICAgMTEwLDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LAotICAgIDEwMSwxMTAsMTE2LDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTYsMTE1LDMyLDExMiwxMTQsMTExLAotICAgIDExMiwxMDEsMTE0LDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLDExNywxMTAsMTA3LAotICAgIDExMCwxMTEsMTE5LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsMjUxLDAsMCwwLAotICAgIDc4LDExNCw1NywwLDAsMCwxMTQsMjQ3LDAsMCwwLDExNCwxMTYsMCwwLDAsCi0gICAgMTE0LDg0LDAsMCwwLDQxLDIsMTE0LDkzLDAsMCwwLDExNCwzMiwwLDAsCi0gICAgMCw0MSwyLDIxOCw3LDEwMywxMDgsMTExLDk4LDk3LDEwOCwxMTUsMTE0LDEwMywxLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKLSAgICAyMTgsMTcsOTUsOTksOTcsMTA4LDk5LDk1LDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLAotICAgIDEwMSw5NSw5NSwyNDgsOCwwLDAsMTE1LDEyLDAsMCwwLDAsNywxNSwxLAotICAgIDEyLDEsMTAsMSwxMiwxLDI1LDEsMTE0LDEyNCwxLDAsMCw5OSwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSw1NSwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTA2LDIsMCwKLSAgICAxMzEsMCwwLDEwMiwyLDAsMTI1LDAsMCwxMTYsMywwLDExNiw0LDAsMTAyLAotICAgIDIsMCwxMjUsMSwwLDExNiw1LDAsMTE2LDYsMCwxMDIsMiwwLDEyNSwyLAotICAgIDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTAzLDMsMCw4Myw0MSwxLAotICAgIDEyMiw5NSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiwxMDgsMTA1LDExNSwxMTYsCi0gICAgMzIsMTExLDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsNDYsMTAsMTAsCi0gICAgMzIsMzIsMzIsMzIsNjksOTcsOTksMTA0LDMyLDEwNSwxMTYsMTAxLDEwOSwzMiwxMDUsMTE1LAotICAgIDMyLDk3LDMyLDExNiwxMTcsMTEyLDEwOCwxMDEsMzIsNDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICA0NCwzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDQxLDQ2LDEwLDMyLDMyLDMyLAotICAgIDMyLDQxLDcsMTE0LDU3LDEsMCwwLDExNCwxMDYsMCwwLDAsMjE4LDE4LDEwMSwKLSAgICAxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDk1LDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwKLSAgICAxMTUsMTE0LDksMSwwLDAsMTE0LDEzNSwwLDAsMCwxMTQsOCwxLDAsMCwKLSAgICAxMTQsMjMzLDAsMCwwLDQxLDMsOTAsMTAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LAotICAgIDExMSwxMTAsMTE1LDkwLDYsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5MCw4LDk4LDEyMSwxMTYsCi0gICAgMTAxLDk5LDExMSwxMDAsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA1LDAsMCwwLDExNCwyNDEsMCwwLDAsNyw5LDAsMCwxMTUsOCwwLAotICAgIDAsMCwwLDUsMTgsMSwxMiwxLDEyLDEsMTE0LDI0MSwwLDAsMCw5OSwKLSAgICA1LDAsMCwwLDAsMCwwLDAsOSwwLDAsMCw1LDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSwyMjcsMCwwLDAsMTI0LDQsMCwxMDAsMSwwLDEwNywKLSAgICAyLDAsMTE0LDI3LDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDUsCi0gICAgMCwxMTAsNTQsMCwxMjQsMSwwLDEwMCwyLDAsMTA3LDksMCwxMTQsNDUsMCwKLSAgICAxMjQsMSwwLDExMCwzLDAsMTA1LDAsMCwxMjUsNiwwLDExNiwxLDAsMTI0LAotICAgIDYsMCwxMzEsMSwwLDEyNSw3LDAsMTE2LDAsMCwxMjQsMCwwLDEyNCw3LAotICAgIDAsMTI0LDQsMCwxMzEsMywwLDEyNSw1LDAsMTI0LDMsMCwxMTUsMjA3LDAsCi0gICAgMTI0LDQsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDEyMiwwLDExNiwwLDAsMTI0LAotICAgIDAsMCwxMDYsMiwwLDEwMCwzLDAsMTMxLDEsMCwxMDAsMSwwLDI1LDEzMSwKLSAgICAxLDAsODMsMTI0LDAsMCwxMTUsMTMyLDAsMTI0LDUsMCw4MywxMTYsMywwLAotICAgIDEyNCwwLDAsMTMxLDEsMCwxMTYsMywwLDEyNCwwLDAsMTA2LDIsMCwxMDAsCi0gICAgMywwLDEzMSwxLDAsMTAwLDEsMCwyNSwxMzEsMSwwLDI0LDEyNSw4LDAsCi0gICAgMTE2LDQsMCwxMDYsNSwwLDEyNCw1LDAsMTA2LDYsMCwxMDAsMiwwLDExNiwKLSAgICAzLDAsMTI0LDUsMCwxMDYsNiwwLDEzMSwxLDAsMTI0LDgsMCwyNCwxMzMsCi0gICAgMiwwLDI1LDI1LDgzLDExMCwxNiwwLDExNiw3LDAsMTI0LDUsMCwxMjQsMywKLSAgICAwLDExNiwwLDAsMTMxLDMsMCw4MywxMDAsMiwwLDgzLDQxLDQsOTcsMjE0LAotICAgIDEsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwxMDMsMTA4LAotICAgIDExMSw5OCw5NywxMDgsMTE1LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwKLSAgICAxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNSwxMTAsMTAyLDEwMSwxMTQsCi0gICAgMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwzMiwxMDUsMTE1LDMyLDExMSw5OSw5OSwxMTcsMTE0LDEwNSwxMTAsMTAzLDMyLDEwMiwxMTQsCi0gICAgMTExLDEwOSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsCi0gICAgMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDExNSw0NiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwOCwxMTEsOTksOTcsMTA4LDExNSwzOSwzMiwKLSAgICA5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMDUsMTAzLDExMCwxMTEsCi0gICAgMTE0LDEwMSwxMDAsNDYsMzIsODQsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzOSwxMDIsMTE0LAotICAgIDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwKLSAgICAzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTE1LDMyLDExOSwxMDQsOTcsMTE2LDMyLAotICAgIDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMzIsOTcsMTE1LDMyLAotICAgIDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTExLDExMCwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LAotICAgIDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiw0MCwxMDEsNDYsMTAzLAotICAgIDQ2LDMyLDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw2MCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LAotICAgIDYyLDk2LDk2LDQxLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTA4LDEwMSwxMTgsMTAxLAotICAgIDEwOCwzOSwxMCwzMiwzMiwzMiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsCi0gICAgMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwKLSAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwKLSAgICAxMTYsMTExLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMDUsCi0gICAgMTEwLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk2LDk2LAotICAgIDEwMiwxMTQsMTExLDEwOSwzMiw0Niw0NiwxMTIsMTA3LDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwzMiwxMDksMTExLDEwMCw5Niw5NiwzMiwxMTksMTExLDExNywxMDgsMTAwLDMyLDEwNCw5NywKLSAgICAxMTgsMTAxLDMyLDk3LDMyLDM5LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzksMzIsMTExLDEwMiwzMiwKLSAgICA1MCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsODQsMCwwLDAsNzgsMTE0LAotICAgIDExNiwwLDAsMCw0MSw4LDExNCwxMTYsMSwwLDAsMTE0LDEyNCwxLDAsMCwKLSAgICAxMTQsMTM0LDAsMCwwLDExNCwzMSwwLDAsMCwxMTQsNywwLDAsMCwxMTQsCi0gICAgNzMsMCwwLDAsMTE0LDU3LDAsMCwwLDExNCwxMjIsMSwwLDAsNDEsOSwKLSAgICAxMTQsNjcsMCwwLDAsMTE0LDEyMywxLDAsMCwyMTgsNiwxMDgsMTExLDk5LDk3LAotICAgIDEwOCwxMTUsMTE0LDEyMSwxLDAsMCwxMTQsMTA0LDEsMCwwLDExNCwxODAsMCwwLAotICAgIDAsOTAsOCwxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDk1LDExNCwxMDMsMSwwLDAsCi0gICAgOTAsNyw5OSwxMTcsMTE2LDk1LDExMSwxMDIsMTAyLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMCw5NSw5NSwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiw5NSw5NSwxOCw5LDAsMCwxMTUsMjYsMCwwLDAsMCwxMSwxMiwKLSAgICAxLDE1LDIsMjQsMSwxMiwxLDE4LDEsNiwzLDEyLDEsMjMsMSw2LAotICAgIDEsNCw0LDM1LDMsNDAsMiwxMTQsMTI3LDEsMCwwLDk5LDEsMCwwLAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDExNCwxNSwwLDAsMCwxMTQsMTQwLDAsMCwwLDQxLAorICAgIDEyLDExNCwxMjIsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwKKyAgICAxMTQsNjUsMCwwLDAsMTE0LDEzMSwwLDAsMCwxMTQsOTYsMCwwLDAsMjE4LAorICAgIDgsOTUsNjksODIsODIsOTUsNzcsODMsNzEsMTE0LDUwLDAsMCwwLDExNCw3NywKKyAgICAwLDAsMCwxMTQsMTc2LDAsMCwwLDExNCwxNDksMCwwLDAsMTE0LDUsMCwKKyAgICAwLDAsNDEsOCwxMTQsMTUsMCwwLDAsMjE4LDcsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsOTUsMTE0LDE1MiwwLDAsMCwxMTQsMTIzLDAsMCwwLDkwLDEzLDExMiw5NywKKyAgICAxMTQsMTAxLDExMCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDE0NywwLDAsMCwKKyAgICAxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyMyw5NSwxMDIsMTA1LDExMCwxMDAsCisgICAgOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMTcsMTEwLDEwOCwxMTEsOTksMTA3LAorICAgIDEwMSwxMDAsMTcxLDMsMCwwLDExNSw0MiwwLDAsMCwwLDEsNiwxLDE5LAorICAgIDEsNiwxLDE1LDEsMTMsMiwxNSwxLDExLDEsMTMsMSwzLDEsMTMsCisgICAgMSwxMywxLDIyLDEsMjYsMSwxNSwxLDEyLDEsMzAsMiwxMiwxLDYsCisgICAgMiwxMywxLDI5LDEsMTE0LDE4NCwwLDAsMCw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsMiwwLDAsMCwxMCwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMzcsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsMTQzLDE4LDAsCisgICAgMSwxMTYsMSwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsMiwwLDgzLDg3LDEwMCwKKyAgICAxLDAsODEsODIsODgsMTAwLDEsMCw4Myw0MSwyLDEyMiw1NCw3MCwxMDUsMTEwLAorICAgIDEwMCwzMiw5NywxMTAsMTAwLDMyLDEwOCwxMTEsOTcsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LAorICAgIDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSwKKyAgICA5OSwxMDcsNDYsNzgsNDEsMiwxMTQsNTQsMCwwLDAsMTE0LDE4NCwwLDAsMCwKKyAgICA0MSwyLDExNCwxNSwwLDAsMCwxMTQsMTgzLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNCw5NSwxMDIsMTA1LAorICAgIDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxOTgsMywwLDAsMTE1LAorICAgIDQsMCwwLDAsMCwyLDEzLDEsMTE0LDE4NSwwLDAsMCwxMTQsMzMsMCwKKyAgICAwLDAsOTksMywwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNCwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTY2LDAsMCwwLDExNiwwLDAsMTI0LAorICAgIDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDMsMCwxLDEyNCwyLDAsMTAwLAorICAgIDEsMCwxMDcsNCwwLDExNCw0NiwwLDExNiwxLDAsMTI0LDAsMCwxMjQsMSwKKyAgICAwLDEyNCwyLDAsMTMxLDMsMCwxMjUsMCwwLDExNiwyLDAsMTA2LDMsMCwKKyAgICAxMzEsMCwwLDEsMTI0LDAsMCwxMTYsNCwwLDEwNiw1LDAsMTA3LDcsMCwKKyAgICAxMTQsODQsMCwxMTYsNiwwLDEyNCwwLDAsMTE2LDcsMCwxMzEsMiwwLDgzLAorICAgIDExNiw0LDAsMTA2LDUsMCwxMjQsMCwwLDI1LDEyNSwzLDAsMTI0LDMsMCwKKyAgICAxMDAsMiwwLDEwNyw4LDAsMTE0LDE1MiwwLDExNiwyLDAsMTA2LDgsMCwxMzEsCisgICAgMCwwLDEsMTAwLDMsMCwxMDYsOSwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsCisgICAgNCwwLDExNiwxMCwwLDEyNCw0LDAsMTAwLDQsMCwxMjQsMCwwLDEzMSwxLAorICAgIDEsMTMwLDEsMCwxMTYsMTEsMCwxMjQsMCwwLDEzMSwxLDAsMSwxMjQsMywKKyAgICAwLDgzLDQxLDUsOTcsNTAsMSwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTA1LAorICAgIDExNiwxMTUsMzIsMTEwLDk3LDEwOSwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDk5LAorICAgIDEwNyw5NywxMDMsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMzIsMTA1LDExNSwKKyAgICAxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA5LDk3LDEwMCwxMDEsMzIsCisgICAgMTAyLDExNCwxMTEsMTA5LDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDEwMSwKKyAgICAxMTgsMTAxLDEwOCwzMiw5NywxMDAsMTA2LDExNywxMTUsMTE2LDEwOSwxMDEsMTEwLDExNiw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LAorICAgIDExMSwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwMywxMTQsMTAxLDk3LDExNiwxMDEsMTE1LDExNiwzMiw5OSwxMTEsMTA5LDEwOSwxMTEsCisgICAgMTEwLDMyLDEwMCwxMDEsMTEwLDExMSwxMDksMTA1LDExMCw5NywxMTYsMTExLDExNCwzMiwxMTEsMTAyLAorICAgIDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCw5NywxMDgsMTA1LDExNiwxMjEsMTAsMzIsCisgICAgMzIsMzIsMzIsOTgsMTAxLDExNiwxMTksMTAxLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTcsMTEwLDEwMCwzMiw5NSw5NSwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSw0NiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDUsMTEwLAorICAgIDk5LDEwOCwxMTcsMTAwLDEwMSwxMTUsMzIsMTE1LDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDk1LAorICAgIDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMDUsMTAyLDEwLDMyLDMyLAorICAgIDMyLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAwLDEwNSwxMDAsCisgICAgMzIsMTEwLDExMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDMzLDAsMCwwLAorICAgIDc4LDEyMiw0MCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTEsMTAyLDMyLDEyMywxMjUsMzIsCisgICAgMTA0LDk3LDEwOCwxMTYsMTAxLDEwMCw1OSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMDUsMTEwLDMyLAorICAgIDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTQsMTUsMCwwLDAsCisgICAgNDEsMTIsMTE0LDE4MSwwLDAsMCwxMTQsMTcxLDAsMCwwLDExNCw1NywwLDAsCisgICAgMCwxMTQsMTQ1LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsCisgICAgMTE0LDE4NSwwLDAsMCwyMTgsMTEsOTUsMTAzLDk5LDEwMCw5NSwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMTQsNTgsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCw3NywwLDAsCisgICAgMCwxMTQsNjMsMCwwLDAsNDEsNSwxMTQsMTUsMCwwLDAsMTE0LDE2OSwwLAorICAgIDAsMCwxMTQsMTcwLDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsNzQsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMTE0LDE4NiwwLDAsMCwyMDQsMywwLDAsMTE1LDI4LDAsMCwwLDAsOSwKKyAgICAxNiwxLDEyLDEsMTgsMSwxMCwxLDE1LDEsMTMsMSwxMywxLDEyLDEsCisgICAgMTAsMSw2LDEsOSwxLDE4LDEsMTAsMSwxMTQsMTg2LDAsMCwwLDk5LAorICAgIDMsMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDE3LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwyMzksMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwMCwKKyAgICAxLDAsMTMxLDIsMCwxMTQsMjM1LDAsMTAwLDIsMCwxMjQsMSwwLDEwNyw2LAorICAgIDAsMTE0LDgzLDAsMTE2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDEsMCwKKyAgICAxMjQsMSwwLDEwNiwyLDAsMTAwLDIsMCwxMzEsMSwwLDEsMTE2LDAsMCwKKyAgICAxMjQsMCwwLDEwMCwzLDAsMTMxLDIsMCwxMTQsODMsMCwxMjQsMSwwLDEwNiwKKyAgICAzLDAsMTI0LDAsMCwxMDYsNCwwLDEzMSwxLDAsMSwxMjAsMTQ5LDAsMTI0LAorICAgIDEsMCw2OCw5MywxNDEsMCwxMjUsMywwLDExNiwwLDAsMTI0LDAsMCwxMjQsCisgICAgMywwLDEzMSwyLDAsMTE1LDkwLDAsMTAwLDQsMCwxMDYsNSwwLDEyNCwwLAorICAgIDAsMTA2LDYsMCwxMjQsMywwLDEzMSwyLDAsMTI1LDQsMCwxMjEsMTcsMCwKKyAgICAxMTYsNywwLDEyNCwyLDAsMTI0LDQsMCwxMzEsMiwwLDEsODcsMTEzLDkwLAorICAgIDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwyMzAsMCwxLDEyNSw1LDAsMSwKKyAgICAxMjIsNDcsMCwxMTYsOSwwLDEyNCw1LDAsMTMxLDEsMCwxMDYsMTAsMCwxMTYsCisgICAgMTEsMCwxMzEsMSwwLDExNCwyMDksMCwxMjQsNSwwLDEwNiwxMiwwLDEyNCw0LAorICAgIDAsMTA3LDIsMCwxMTQsMjA5LDAsMTE5LDkwLDAsMTMwLDAsMCw4Nyw4OSwxMDAsCisgICAgNSwwLDEwMCw1LDAsMTI1LDUsMCwxMjYsNSwwLDg4LDExMyw5MCwwLDg4LAorICAgIDExMyw5MCwwLDg3LDEyNCwwLDAsODMsNDEsNiwxMjIsMjM4LDcwLDEwNSwxMDMsMTE3LAorICAgIDExNCwxMDEsMzIsMTExLDExNywxMTYsMzIsMTE5LDEwNCw5NywxMTYsMzIsOTUsOTUsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsOTUsOTUsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTE0LDEwMSwKKyAgICAxMTYsMTE3LDExNCwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiw5NSwzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsCisgICAgMzIsMTA1LDExNSwzMiw5NywzMiw5OSw5NywxMDgsMTA4LDk3LDk4LDEwOCwxMDEsMzIsMTE5LAorICAgIDEwNCwxMDUsOTksMTA0LDMyLDExNiw5NywxMDcsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsCisgICAgOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExNiwxMTEsCisgICAgMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMzIsNzMsMTE2LDMyLAorICAgIDEwNSwxMTUsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMCwKKyAgICAxMDEsOTksMTExLDExNywxMTIsMTA4LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwKKyAgICAxMTYsMTA1LDExMSwxMTAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDk3LDExNSwxMTUsMTE3LDEwOSwxMDUsCisgICAgMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDM5LDExNSwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKKyAgICAxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExNSwxMDUsCisgICAgMTE0LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDEzMSwwLDAsMCwyNTAsCisgICAgMSw0MiwyMTgsNyw5NSw5NSw5NywxMDgsMTA4LDk1LDk1LDEyMiw1LDEyMywxMjUsNDYsCisgICAgMTIzLDEyNSw3OCw0MSwxMywxMTQsNCwwLDAsMCwxMTQsMTMwLDAsMCwwLDIxOCwKKyAgICA2LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDIxOCw2LDEwMSwxMjAsMTE2LDEwMSwxMTAsMTAwLDExNCwKKyAgICAxODgsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCwxLDAsMCwwLDExNCw2NSwKKyAgICAwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsNzEsMCwKKyAgICAwLDAsMjE4LDE1LDk1LDY5LDgyLDgyLDk1LDc3LDgzLDcxLDk1LDgwLDgyLDY5LAorICAgIDcwLDczLDg4LDExNCwxNSwwLDAsMCw0MSw2LDExNCw4OSwwLDAsMCwyMTgsCisgICAgOCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDExNCwxODMsMCwwLDAsMjE4LDEsCisgICAgMTIwLDkwLDksMTAyLDExNCwxMTEsMTA5LDk1LDExMCw5NywxMDksMTAxLDkwLDMsMTAxLDEyMCwKKyAgICA5OSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKKyAgICAyMTgsMTYsOTUsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwKKyAgICAxMTUsMTE2LDIyOCwzLDAsMCwxMTUsMzQsMCwwLDAsMCwxMCwxNSwxLDEyLAorICAgIDEsMTIsMSwxMywxLDE1LDEsMTYsMSwxMywxLDE1LDEsMjEsMSwzLAorICAgIDEsMTcsMSwxOCw0LDIxLDEsMTUsMSwzLDEsMjYsMSwxMTQsMTk0LDAsCisgICAgMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDcyLDAsMCwwLDEyNCwwLDAsMTA2LAorICAgIDAsMCwxMDAsMSwwLDEzMSwxLDAsMTI1LDEsMCwxMjQsMSwwLDEwMCwyLAorICAgIDAsMTA3LDgsMCwxMTQsNjgsMCwxMjQsMCwwLDEwMCwzLDAsMjUsMTI1LDEsCisgICAgMCwxMDAsNCwwLDEyNCwwLDAsMTA3LDcsMCwxMTQsNjgsMCwxMjQsMSwwLAorICAgIDEwNiwxLDAsMTAwLDUsMCwxMzEsMSwwLDEwMCw2LDAsMjUsMTI1LDEsMCwKKyAgICAxMjQsMSwwLDgzLDQxLDcsMTIyLDE2Nyw2Nyw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsCisgICAgMTAxLDMyLDExOSwxMDQsOTcsMTE2LDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKKyAgICA5NSw5NSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDEwNSwKKyAgICAxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTAzLDExNyw5NywxMTQsOTcsMTEwLDExNiwxMDEsMTAxLDEwMCwKKyAgICAzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwxMDAsMzIsMTExLAorICAgIDExNCwzMiw5OSwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDMyLDExNSwxMDEsMTE2LDMyLDExNiwKKyAgICAxMTEsMzIsNzgsMTExLDExMCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDExMSwzMiwxMTQsMTAxLAorICAgIDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDExNSwKKyAgICAzMiwxMTIsMTE0LDExMSwxMTIsMTAxLDExNCwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA1LDExNSwKKyAgICAzMiwxMTcsMTEwLDEwNywxMTAsMTExLDExOSwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LAorICAgIDEzNCwwLDAsMCw3OCwxMTQsMSwwLDAsMCwxMTQsMTMxLDAsMCwwLDExNCwKKyAgICAxMjEsMCwwLDAsMTE0LDMzLDAsMCwwLDQxLDIsMTE0LDQyLDAsMCwwLAorICAgIDExNCwxMjIsMCwwLDAsNDEsMiwyMTgsNywxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LAorICAgIDExNCwxNjksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTEsMCwwLDAsMjE4LDE3LDk1LDk5LDk3LDEwOCw5OSw5NSw5NSw5NSwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsNCw0LDAsMCwxMTUsMTIsMCwwLDAsCisgICAgMCw3LDE1LDEsMTIsMSwxMCwxLDEyLDEsMTksMSwxMTQsMTk2LDAsMCwKKyAgICAwLDk5LDUsMCwwLDAsMCwwLDAsMCw5LDAsMCwwLDUsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDIyNywwLDAsMCwxMjQsNCwwLDEwMCwxLAorICAgIDAsMTA3LDIsMCwxMTQsMjcsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsMCwKKyAgICAxMjUsNSwwLDExMCw1NCwwLDEyNCwxLDAsMTAwLDIsMCwxMDcsOSwwLDExNCwKKyAgICA0NSwwLDEyNCwxLDAsMTEwLDMsMCwxMDUsMCwwLDEyNSw2LDAsMTE2LDEsCisgICAgMCwxMjQsNiwwLDEzMSwxLDAsMTI1LDcsMCwxMTYsMCwwLDEyNCwwLDAsCisgICAgMTI0LDcsMCwxMjQsNCwwLDEzMSwzLDAsMTI1LDUsMCwxMjQsMywwLDExNSwKKyAgICAyMDcsMCwxMjQsNCwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMTIyLDAsMTE2LDAsCisgICAgMCwxMjQsMCwwLDEwNiwyLDAsMTAwLDMsMCwxMzEsMSwwLDEwMCwxLDAsCisgICAgMjUsMTMxLDEsMCw4MywxMjQsMCwwLDExNSwxMzIsMCwxMjQsNSwwLDgzLDExNiwKKyAgICAzLDAsMTI0LDAsMCwxMzEsMSwwLDExNiwzLDAsMTI0LDAsMCwxMDYsMiwKKyAgICAwLDEwMCwzLDAsMTMxLDEsMCwxMDAsMSwwLDI1LDEzMSwxLDAsMjQsMTI1LAorICAgIDgsMCwxMTYsNCwwLDEwNiw1LDAsMTI0LDUsMCwxMDYsNiwwLDEwMCwyLAorICAgIDAsMTE2LDMsMCwxMjQsNSwwLDEwNiw2LDAsMTMxLDEsMCwxMjQsOCwwLAorICAgIDI0LDEzMywyLDAsMjUsMjUsODMsMTEwLDE2LDAsMTE2LDcsMCwxMjQsNSwwLAorICAgIDEyNCwzLDAsMTE2LDAsMCwxMzEsMywwLDgzLDEwMCwyLDAsODMsNDEsNCwKKyAgICA5NywyMTQsMSwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5NywzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LAorICAgIDEwMywxMDgsMTExLDk4LDk3LDEwOCwxMTUsMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsCisgICAgMTE2LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA1LDExMCwxMDIsCisgICAgMTAxLDExNCwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDMyLDEwNSwxMTUsMzIsMTExLDk5LDk5LDExNywxMTQsMTA1LDExMCwxMDMsMzIsCisgICAgMTAyLDExNCwxMTEsMTA5LDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTA0LDk3LDExMCwxMDAsCisgICAgMTA4LDEwMSwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTE1LDQ2LDMyLDg0LDEwNCwxMDEsMzIsMzksMTA4LDExMSw5OSw5NywxMDgsMTE1LAorICAgIDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLDEwNSwxMDMsCisgICAgMTEwLDExMSwxMTQsMTAxLDEwMCw0NiwzMiw4NCwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDM5LAorICAgIDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwKKyAgICAxMTAsMTE2LDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMTUsMzIsMTE5LDEwNCw5NywKKyAgICAxMTYsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwzMiw5NywKKyAgICAxMTUsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSwzMiwxMTEsMTEwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEwLDMyLDMyLDMyLDMyLDk4LAorICAgIDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDMyLDQwLDEwMSwKKyAgICA0NiwxMDMsNDYsMzIsOTYsOTYsMTAyLDExNCwxMTEsMTA5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDYwLDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LAorICAgIDExNSwxMTYsNjIsOTYsOTYsNDEsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwxMDgsMTAxLAorICAgIDExOCwxMDEsMTA4LDM5LDEwLDMyLDMyLDMyLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLAorICAgIDExNiwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsCisgICAgMTEwLDMyLDExNiwxMTEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExNCwxMTEsMTA5LAorICAgIDMyLDEwNSwxMTAsMzIsOTcsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDEwLDMyLAorICAgIDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsCisgICAgOTYsOTYsMTAyLDExNCwxMTEsMTA5LDMyLDQ2LDQ2LDExMiwxMDcsMTAzLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDMyLDEwOSwxMTEsMTAwLDk2LDk2LDMyLDExOSwxMTEsMTE3LDEwOCwxMDAsMzIsCisgICAgMTA0LDk3LDExOCwxMDEsMzIsOTcsMzIsMzksMTA4LDEwMSwxMTgsMTAxLDEwOCwzOSwzMiwxMTEsCisgICAgMTAyLDMyLDUwLDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwzMywwLDAsMCwKKyAgICA3OCwxMTQsMTIxLDAsMCwwLDQxLDgsMTE0LDE4NiwwLDAsMCwxMTQsMTk2LDAsCisgICAgMCwwLDIxOCw5LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE0LDE2NywwLAorICAgIDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLDExNCwxLDAsMCwKKyAgICAwLDExNCwxOTQsMCwwLDAsNDEsOSwxMTQsMTUsMCwwLDAsMTE0LDE5NSwwLAorICAgIDAsMCwyMTgsNiwxMDgsMTExLDk5LDk3LDEwOCwxMTUsMTE0LDE5MiwwLDAsMCwxMTQsCisgICAgMTcwLDAsMCwwLDExNCw4OSwwLDAsMCw5MCw4LDEwMywxMDgsMTExLDk4LDk3LAorICAgIDEwOCwxMTUsOTUsMTE0LDE2OSwwLDAsMCw5MCw3LDk5LDExNywxMTYsOTUsMTExLDEwMiwKKyAgICAxMDIsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMjE4LDEwLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDE5LDQsMCwwLAorICAgIDExNSwyNiwwLDAsMCwwLDExLDEyLDEsMTUsMiwyNCwxLDEyLDEsMTgsCisgICAgMSw2LDMsMTIsMSwyMywxLDYsMSw0LDQsMzUsMyw0MCwyLDExNCwKKyAgICAxOTksMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNTMsMCwwLDAsMTE2LDAsCisgICAgMCwxMDYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsMSwwLDEyNCwxLDAsCisgICAgMTAwLDAsMCwxMDcsOCwwLDExNCw0MywwLDExNiwyLDAsMTAwLDEsMCwxMjQsCisgICAgMCwwLDIzLDEzMSwxLDAsMTMwLDEsMCwxMTYsMywwLDEyNCwxLDAsMTMxLAorICAgIDEsMCw4Myw0MSwyLDc4LDEyMiwyNSwxMTAsMTExLDMyLDk4LDExNywxMDUsMTA4LDExNiwKKyAgICA0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwKKyAgICAzMiw0MSw0LDExNCwxNTAsMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsNzcsMCwKKyAgICAwLDAsMTE0LDE0OSwwLDAsMCw0MSwyLDExNCwxNSwwLDAsMCwxMTQsODgsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMjE4LDE4LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwMiwxMTQsMTExLAorICAgIDEwOSw5NSwxMTAsOTcsMTA5LDEwMSw1NCw0LDAsMCwxMTUsOCwwLDAsMCwwLAorICAgIDEsMTUsMSwxMiwxLDE2LDEsMTE0LDIwMCwwLDAsMCw5OSwyLDAsMCwKKyAgICAwLDAsMCwwLDAsMTIsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDc0LDEsMCwwLDEyNCwxLDAsOTcsMCwwLDEyNCwwLDAsOTcsCisgICAgMSwwLDExNiwyLDAsMTE2LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTIwLDEyMywKKyAgICAwLDExNiwxLDAsMTA2LDMsMCwxMDYsNCwwLDEzMSwwLDAsNjgsOTMsMTA2LAorICAgIDAsOTIsMiwwLDEyNSwzLDAsMTI1LDQsMCwxMTYsNSwwLDEyNCw0LDAsCisgICAgMTI0LDIsMCwxMzEsMiwwLDExNCw0MCwwLDEyNCwzLDAsMTE2LDEsMCwxMDYsCisgICAgNiwwLDEwNyw2LDAsMTE0LDkxLDAsMTE2LDcsMCwxMjUsNSwwLDExMCwyNywKKyAgICAwLDExNiwwLDAsMTA2LDgsMCwxMjQsMywwLDEzMSwxLDAsMTE0LDQwLDAsCisgICAgMTE2LDksMCwxMjUsNSwwLDExMCwzLDAsMTEzLDQwLDAsMTE2LDEwLDAsMTI0LAorICAgIDQsMCwxMjQsNSwwLDEzMSwyLDAsMTI1LDYsMCwxMTYsMTEsMCwxMjQsNiwKKyAgICAwLDEyNCw0LDAsMTMxLDIsMCwxLDExMyw0MCwwLDg3LDExNiwxLDAsMTA2LAorICAgIDMsMCwxMTYsMTIsMCwyNSwxMjUsNywwLDEyMCw3MywwLDEwMCw1LDAsNjgsCisgICAgOTMsNjUsMCwxMjUsOCwwLDEyNCw4LDAsMTE2LDEsMCwxMDYsMywwLDEwNywKKyAgICA3LDAsMTE0LDIwNiwwLDExNiwxMywwLDEyNCw4LDAsMTMxLDEsMCwxMjUsOSwKKyAgICAwLDExMCwxMywwLDExNiwxLDAsMTA2LDMsMCwxMjQsOCwwLDI1LDEyNSw5LAorICAgIDAsMTE2LDE0LDAsMTI0LDcsMCwxMjQsOCwwLDEyNCw5LDAsMTMxLDMsMCwKKyAgICAxLDExMywxNzAsMCw4NywxMjEsMTYsMCwxMTYsMTMsMCwxMDAsMiwwLDEzMSwxLAorICAgIDAsMTI1LDEwLDAsODcsMTEwLDI0LDAsNCwxMTYsMTUsMCwxMDcsMTAsMCwxMTQsCisgICAgMjUsMSwxLDEsMSwxMDAsMywwLDEyNSwxMCwwLDg5LDExMCwxLDAsODgsCisgICAgMTE2LDE0LDAsMTI0LDcsMCwxMDAsMiwwLDEyNCwxMCwwLDEzMSwzLDAsMSwKKyAgICAxMTYsMTMsMCwxMDAsNCwwLDEzMSwxLDAsMTI1LDExLDAsMTE2LDE0LDAsMTI0LAorICAgIDcsMCwxMDAsNCwwLDEyNCwxMSwwLDEzMSwzLDAsMSwxMDAsMywwLDgzLAorICAgIDQxLDYsMTIyLDI1MCw4MywxMDEsMTE2LDExNywxMTIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCwzMiw5OCwxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsCisgICAgMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTA1LDExMCwxMDYsCisgICAgMTAxLDk5LDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwxMDksMTAsMzIsMzIsMzIsMzIsCisgICAgMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwKKyAgICAxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKKyAgICA2NSwxMTUsMzIsMTE1LDEyMSwxMTUsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwKKyAgICAzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsCisgICAgMzIsOTcsOTksOTksMTAxLDExNSwxMTUsMzIsOTcsMTEwLDEwMCwzMiw5NSwxMDUsMTA5LDExMiwKKyAgICAzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA4LDExMSwKKyAgICA5NywxMDAsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsMTExLDExNSwxMDEsMzIsMTE2LAorICAgIDExOSwxMTEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiwKKyAgICA5OCwxMDEsMzIsMTAxLDEyMCwxMTIsMTA4LDEwNSw5OSwxMDUsMTE2LDEwOCwxMjEsMzIsMTEyLDk3LAorICAgIDExNSwxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwxNDEsCisgICAgMCwwLDAsMTE0LDM0LDAsMCwwLDc4LDExNCw2MiwwLDAsMCw0MSwxLAorICAgIDEyMiw5LDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSw0MSwxNiwxMTQsNTcsMCwKKyAgICAwLDAsMTE0LDE0LDAsMCwwLDExNCwxMywwLDAsMCwxMTQsMjEsMCwwLAorICAgIDAsMjE4LDUsMTA1LDExNiwxMDEsMTA5LDExNSwxMTQsMTc3LDAsMCwwLDExNCw3NiwwLAorICAgIDAsMCwxMTQsMTUwLDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsMTYwLDAsMCwKKyAgICAwLDExNCwxMzIsMCwwLDAsMTE0LDEzNywwLDAsMCwxMTQsMSwwLDAsMCwKKyAgICAxMTQsMjAwLDAsMCwwLDExNCw1LDAsMCwwLDExNCw3NywwLDAsMCw0MSwKKyAgICAxMiwyMTgsMTAsMTE1LDEyMSwxMTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjE4LDExLDk1LAorICAgIDEwNSwxMDksMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDExLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSwxMTQsMTUsMCwwLDAsMTE0LDg5LDAsMCwKKyAgICAwLDExNCw5OSwwLDAsMCwxMTQsODgsMCwwLDAsOTAsMTEsMTE1LDEwMSwxMDgsCisgICAgMTAyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEyLDk4LDExNywxMDUsMTA4LDExNiwxMDUsCisgICAgMTEwLDk1LDExMCw5NywxMDksMTAxLDkwLDE0LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEzLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTQsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTEsMCwwLDAsMjE4LDYsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw2MSw0LDAsMCwKKyAgICAxMTUsNTAsMCwwLDAsMCw5LDYsMSw2LDMsMTIsMSwyOCwxLDE1LAorICAgIDEsMTUsMSw5LDEsMTUsMSw5LDIsMywxLDE1LDEsMTcsMywxMywKKyAgICAxLDEzLDEsMTUsMSwxNSwyLDEzLDEsMjAsMywzLDEsMTYsMSwxMywKKyAgICAyLDExLDEsMTYsMywxMiwxLDExNCwyMDQsMCwwLDAsOTksMiwwLDAsCiAgICAgMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsNjgsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwwLDAsMTMxLAotICAgIDEsMCwxMjUsMSwwLDEyNCwxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCw0NiwKLSAgICAwLDExNiwyLDAsMTAwLDEsMCwxMjQsMCwwLDIzLDEzMSwxLDAsMTMwLDEsCi0gICAgMCwxMTAsMCwwLDExNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsCi0gICAgMTI0LDIsMCwxMDYsNCwwLDEzMSwwLDAsODMsNDEsMiw3OCwxMjIsMjUsMTEwLAotICAgIDExMSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsNDEsNSwxMTQsMTEsMSwwLDAsMTE0LAotICAgIDE0LDEsMCwwLDExNCwxNTQsMCwwLDAsMTE0LDE3NSwwLDAsMCwxMTQsNywKLSAgICAxLDAsMCw0MSwzLDExNCw2NywwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCwKLSAgICAxNzksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCi0gICAgMCwwLDAsMjE4LDE4LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwMiwxMTQsCi0gICAgMTExLDEwOSw5NSwxMTAsOTcsMTA5LDEwMSw1Myw5LDAsMCwxMTUsMTAsMCwwLDAsCi0gICAgMCwxLDE1LDEsMTIsMSwxOSwxLDEyLDEsMTE0LDEyOCwxLDAsMCw5OSwKLSAgICAyLDAsMCwwLDAsMCwwLDAsMTksMCwwLDAsMTIsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDIzMiwyLDAsMCwxMjQsMSwwLDk3LDAsMCwxMjQsCi0gICAgMCwwLDk3LDEsMCwxMTYsMSwwLDEwNiwyLDAsMTA2LDMsMCwxMTQsMzMsCi0gICAgMCwxMTYsNCwwLDk3LDUsMCwxMTAsNiwwLDExNiw2LDAsOTcsNSwwLAotICAgIDExNiw3LDAsMTE2LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTIwLDEzOCwwLDExNiwKLSAgICAxLDAsMTA2LDgsMCwxMDYsOSwwLDEzMSwwLDAsNjgsOTMsMTIxLDAsOTIsCi0gICAgMiwwLDEyNSwzLDAsMTI1LDQsMCwxMTYsMTAsMCwxMjQsNCwwLDEyNCwyLAotICAgIDAsMTMxLDIsMCwxMTQsNjcsMCwxMjQsMywwLDExNiwxLDAsMTA2LDExLDAsCi0gICAgMTA3LDYsMCwxMTQsMTE4LDAsMTE2LDEyLDAsMTI1LDUsMCwxMTAsMjcsMCwxMTYsCi0gICAgMCwwLDEwNiwxMywwLDEyNCwzLDAsMTMxLDEsMCwxMTQsNjcsMCwxMTYsMTQsCi0gICAgMCwxMjUsNSwwLDExMCwzLDAsMTEzLDY3LDAsMTE2LDE1LDAsMTI0LDQsMCwKLSAgICAxMjQsNSwwLDEzMSwyLDAsMTI1LDYsMCwxMTYsMTYsMCwxMjQsNiwwLDEzMSwKLSAgICAxLDAsMTI1LDcsMCwxMjQsNywwLDEwNiwxNywwLDEyNCw0LDAsMTMxLDEsCi0gICAgMCwxLDExMyw2NywwLDExMyw2NywwLDg3LDExNiwxLDAsMTA2LDgsMCwxMTYsCi0gICAgMTgsMCwyNSwxMjUsOCwwLDEyMCw3MywwLDEwMCwyNiwwLDY4LDkzLDY1LDAsCi0gICAgMTI1LDksMCwxMjQsOSwwLDExNiwxLDAsMTA2LDgsMCwxMDcsNywwLDExNCwKLSAgICAyNDgsMCwxMTYsMTksMCwxMjQsOSwwLDEzMSwxLDAsMTI1LDEwLDAsMTEwLDEzLAotICAgIDAsMTE2LDEsMCwxMDYsOCwwLDEyNCw5LDAsMjUsMTI1LDEwLDAsMTE2LDIwLAotICAgIDAsMTI0LDgsMCwxMjQsOSwwLDEyNCwxMCwwLDEzMSwzLDAsMSwxMTMsMjEyLAotICAgIDAsODcsMTAwLDUsMCwxMDAsNiwwLDEwMywxLDAsMTAyLDIsMCwxMDAsNywKLSAgICAwLDEwMCw4LDAsMTAwLDYsMCwxMDMsMiwwLDEwMiwyLDAsMTAyLDIsMCwKLSAgICAxMjUsMTEsMCwxMjAsMTQ2LDAsMTI0LDExLDAsNjgsOTMsMTI2LDAsOTIsMiwwLAotICAgIDEyNSwxMiwwLDEyNSwxMywwLDExNiwyMSwwLDEwMCw5LDAsMTAwLDEwLDAsMTMyLAotICAgIDAsMCwxMjQsMTMsMCw2OCwxMzEsMSwwLDEzMSwxLDAsMTE1LDEwOCwxLDExNiwKLSAgICAyMiwwLDEzMCwxLDAsMTI0LDEzLDAsMTAwLDExLDAsMjUsMTI1LDE0LDAsMTI0LAotICAgIDEyLDAsMTE2LDEsMCwxMDYsOCwwLDEwNyw2LDAsMTE0LDE1MCwxLDExNiwxLAotICAgIDAsMTA2LDgsMCwxMjQsMTIsMCwyNSwxMjUsMTUsMCw4MCwxMTMsNjUsMSwxMjEsCi0gICAgMTcsMCwxMTYsMTksMCwxMjQsMTIsMCwxMzEsMSwwLDEyNSwxNSwwLDgwLDg3LAotICAgIDExMyw2NSwxLDQsMTE2LDIzLDAsMTA3LDEwLDAsMTE0LDE5MCwxLDEsMSwxLAotICAgIDExOSw2NSwxLDg5LDExMyw2NSwxLDg4LDExMyw2NSwxLDg3LDExNiwyMywwLDEwMCwKLSAgICAxMiwwLDEzMSwxLDAsMTMwLDEsMCwxMTYsMjAsMCwxMjQsOCwwLDEwMCwxMywKLSAgICAwLDEyNCwxNSwwLDEzMSwzLDAsMSwxMTYsMjAsMCwxMjQsOCwwLDEwMCwxNCwKLSAgICAwLDEyNCwxNCwwLDEzMSwzLDAsMSwxMTYsMjAsMCwxMjQsOCwwLDEwMCwxNSwKLSAgICAwLDEwMCwxNiwwLDEwNiwyNCwwLDEyNCwxMywwLDEzMSwxLDAsMTMxLDMsMCwKLSAgICAxLDEyMSwxNiwwLDExNiwxOSwwLDEwMCwxNywwLDEzMSwxLDAsMTI1LDE2LDAsCi0gICAgODcsMTEwLDI0LDAsNCwxMTYsMjMsMCwxMDcsMTAsMCwxMTQsNTAsMiwxLDEsCi0gICAgMSwxMDAsMTgsMCwxMjUsMTYsMCw4OSwxMTAsMSwwLDg4LDExNiwyMCwwLDEyNCwKLSAgICA4LDAsMTAwLDE3LDAsMTI0LDE2LDAsMTMxLDMsMCwxLDExNiwxOSwwLDEwMCwKLSAgICAxOSwwLDEzMSwxLDAsMTI1LDE3LDAsMTE2LDIwLDAsMTI0LDgsMCwxMDAsMTksCi0gICAgMCwxMjQsMTcsMCwxMzEsMywwLDEsMTI0LDEyLDAsMTAwLDcsMCwxMDcsMiwKLSAgICAwLDExNCwxMzgsMiwxMTYsMTksMCwxMDAsMjAsMCwxMzEsMSwwLDEyNSwxOCwwLAotICAgIDExNiwyMCwwLDEyNCw4LDAsMTAwLDIxLDAsMTI0LDE4LDAsMTMxLDMsMCwxLAotICAgIDExMCwwLDAsMTE2LDIwLDAsMTI0LDgsMCwxMDAsMjIsMCwxMTYsMjUsMCwxMzEsCi0gICAgMCwwLDEzMSwzLDAsMSwxMTYsMjYsMCwxMDYsMjcsMCwxMTYsMCwwLDEwNiwKLSAgICAyOCwwLDEzMSwwLDAsMTMxLDEsMCwxLDEyNCwxMiwwLDEwMCw3LDAsMTA3LAotICAgIDIsMCwxMTQsMjI4LDIsMTE2LDI5LDAsMTA2LDMwLDAsMTAwLDIzLDAsMTMxLDEsCi0gICAgMCwxLDEwMCwyNCwwLDExNiwyNiwwLDEwNyw2LDAsMTE0LDIyOCwyLDEwMCwyNSwKLSAgICAwLDExNiwzMSwwLDk1LDMyLDAsMTEzLDIyOCwyLDExMCwwLDAsMTAwLDE4LDAsCi0gICAgODMsNDEsMjcsMTIyLDI1MCw4MywxMDEsMTE2LDExNywxMTIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMTA4LDEwNSw5OCwzMiw5OCwxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwKLSAgICAxMDMsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwKLSAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTA1LDExMCwKLSAgICAxMDYsMTAxLDk5LDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwxMDksMTAsMzIsMzIsMzIsCi0gICAgMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwKLSAgICAzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiw2NSwxMTUsMzIsMTE1LDEyMSwxMTUsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLAotICAgIDEwMCwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMTUsMzIsOTcsOTksOTksMTAxLDExNSwxMTUsMzIsOTcsMTEwLDEwMCwzMiw5NSwxMDUsMTA5LAotICAgIDExMiwzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA4LAotICAgIDExMSw5NywxMDAsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsMTExLDExNSwxMDEsMzIsCi0gICAgMTE2LDExOSwxMTEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwKLSAgICAzMiw5OCwxMDEsMzIsMTAxLDEyMCwxMTIsMTA4LDEwNSw5OSwxMDUsMTE2LDEwOCwxMjEsMzIsMTEyLAotICAgIDk3LDExNSwxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwKLSAgICA0OSwwLDAsMCwxMTQsMTY3LDAsMCwwLDIxOCw4LDk4LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDExNSwxMTQsMTkyLDAsMCwwLDkwLDUsMTEyLDExMSwxMTUsMTA1LDEyMCwyNTAsCi0gICAgMSw0NywyMTgsMiwxMTAsMTE2LDI1MCwxLDkyLDk5LDEsMCwwLDAsMCwwLAotICAgIDAsMCwyLDAsMCwwLDMsMCwwLDAsMTE1LDAsMCwwLDExNSwzMywKLSAgICAwLDAsMCwxMjQsMCwwLDkzLDIzLDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwKLSAgICAxLDAsMTMxLDEsMCwxMDAsMCwwLDEwNywyLDAsODYsMSwxMTMsMywwLAotICAgIDEwMCwxLDAsODMsNDEsMiwxMTQsMjksMCwwLDAsNzgsNDEsMSwxMTQsMzEsCi0gICAgMCwwLDAsNDEsMiwxMTQsMjIsMCwwLDAsMTE0LDEyOSwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzcsCi0gICAgMCwwLDAsMTA1LDksMCwwLDExNSwyLDAsMCwwLDYsMCwxMjIsMjUsCi0gICAgOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsCi0gICAgNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDExNCw4NCwwLDAsMCwxMjIsMzAsCi0gICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwKLSAgICAxMDEsMTE1LDMyLDExMiwxMTEsMTE1LDEwNSwxMjAsMzIsMTExLDExNCwzMiwxMTAsMTE2LDExNCwzLAotICAgIDAsMCwwLDExNCwyNSwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDMwLDAsCi0gICAgMCwwLDExNCw4NSwwLDAsMCw3OCwxMTQsMTExLDAsMCwwLDkwLDYsMTE5LAotICAgIDEwNSwxMTAsMTE0LDEwMSwxMDMsMTE0LDI0LDEsMCwwLDExNCw2LDAsMCwwLDEyMiwKLSAgICA0LDQ2LDExMiwxMjEsMTE5LDEyMiw2LDk1LDEwMCw0NiwxMTIsMTIxLDEwMCw4NCw0MSw0LAotICAgIDEyMiwzLDk1LDEwNSwxMTEsMTIyLDksOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LAotICAgIDEyMiw4LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDExNSwxMjIsNywxMDksOTcsMTE0LDExNSwKLSAgICAxMDQsOTcsMTA4LDQxLDMzLDExNCwxMDYsMCwwLDAsMTE0LDcsMCwwLDAsMTE0LAotICAgIDExNywwLDAsMCwxMTQsMTE4LDAsMCwwLDExNCwxMjAsMCwwLDAsMTE0LDIzMywKLSAgICAwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCw2NiwwLDAsMCwxMTQsNzMsMCwKLSAgICAwLDAsMjE4LDUsMTA1LDExNiwxMDEsMTA5LDExNSwxMTQsMTkzLDAsMCwwLDExNCwxNTgsCi0gICAgMCwwLDAsMTE0LDExLDEsMCwwLDExNCwxNjMsMCwwLDAsMTE0LDIwLDEsCi0gICAgMCwwLDExNCwyNDgsMCwwLDAsMTE0LDE3NSwwLDAsMCwxMTQsMjU1LDAsMCwKLSAgICAwLDExNCw1NywwLDAsMCwxMTQsMTI4LDEsMCwwLDExNCw2MSwwLDAsMCwKLSAgICAyMTgsMyw5NywxMDgsMTA4LDExNCwxMDAsMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsCi0gICAgMjYsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw2MCwxLDAsMCwxMTQsMTk4LAotICAgIDAsMCwwLDExNCwxMjUsMSwwLDAsMTE0LDEzNSwwLDAsMCwxMTQsMjI0LDAsCi0gICAgMCwwLDExNCwyMywxLDAsMCwxMTQsMjcsMSwwLDAsNDEsMTksMjE4LDEwLAotICAgIDExNSwxMjEsMTE1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIxOCwxMSw5NSwxMDUsMTA5LDExMiwKLSAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwKLSAgICAxMTYsMTIxLDExMiwxMDEsMTE0LDY3LDAsMCwwLDExNCwxODAsMCwwLDAsMTE0LDE3MCwKLSAgICAwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCwxNzksMCwwLDAsOTAsMTEsMTE1LAotICAgIDEwMSwxMDgsMTAyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEyLDk4LDExNywxMDUsMTA4LAotICAgIDExNiwxMDUsMTEwLDk1LDExMCw5NywxMDksMTAxLDkwLDE0LDk4LDExNywxMDUsMTA4LDExNiwxMDUsCi0gICAgMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEwLDExMSwxMTUsOTUsMTAwLDEwMSwxMTYsCi0gICAgOTcsMTA1LDEwOCwxMTUsOTAsMTAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTExLDExNSwKLSAgICAxMTQsMjEsMCwwLDAsMTE0LDI1LDAsMCwwLDkwLDksMTExLDExNSw5NSwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDk1LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDkwLDE0LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDk1LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDkwLDEzLDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDIxOCw2LDk1LDExNSwxMDEsMTE2LDExNywxMTIsNjEsOSwwLDAsMTE1LDEwOCwKLSAgICAwLDAsMCwwLDksNiwxLDYsMiwxMiwxLDksMiw2LDMsMTIsCi0gICAgMSwyOCwxLDE1LDEsMTUsMSw5LDEsMTUsMSw5LDIsMywxLDE1LAotICAgIDEsMTIsMSwyMCwzLDEzLDEsMTMsMSwxNSwxLDE1LDIsMTMsMSwyMCwKLSAgICAzLDMzLDEsMTksMiwzMSwxLDEwLDEsMTUsMSwxMywxLDQsMiwzLAotICAgIDEsMTIsMSw1LDEsMTMsMSwxMiwyLDEyLDEsMTYsMSwxNiwxLDI1LAotICAgIDMsMywxLDE2LDEsMTMsMiwxMSwxLDE2LDMsMTIsMSwxNiwzLDEyLAotICAgIDEsMTIsMSwxOSwzLDE5LDEsMTksMSwxMiwxLDEzLDEsMTIsMSwxMTQsCi0gICAgMTM3LDEsMCwwLDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwKLSAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEzNiwwLDAsMCwxMTYsMCwKLSAgICAwLDEyNCwwLDAsMTI0LDEsMCwxMzEsMiwwLDEsMTE2LDEsMCwxMzEsMCwKLSAgICAwLDEyNSwyLDAsMTE2LDIsMCwxMDYsMywwLDEwNiw0LDAsMTE2LDUsMCwKLSAgICAxMDYsNiwwLDEyNCwyLDAsMTQwLDAsMCwxMDMsMSwwLDEzMSwxLDAsMSwKLSAgICAxMTYsMiwwLDEwNiw3LDAsMTA2LDgsMCwxMTYsOSwwLDEzMSwxLDAsMSwKLSAgICAxMTYsMiwwLDEwNiw3LDAsMTA2LDgsMCwxMTYsMTAsMCwxMzEsMSwwLDEsCi0gICAgMTE2LDExLDAsMTA2LDEyLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwxMTYsMCwxMTYsCi0gICAgMiwwLDEwNiw3LDAsMTA2LDgsMCwxMTYsMTMsMCwxMzEsMSwwLDEsMTEwLAotICAgIDAsMCwxMTYsMiwwLDEwNiw3LDAsMTA2LDgsMCwxMTYsMTQsMCwxMzEsMSwKLSAgICAwLDEsMTAwLDIsMCw4Myw0MSwzLDEyMiw1MCw3MywxMTAsMTE1LDExNiw5NywxMDgsCi0gICAgMTA4LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTcsMTE1LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDExNCwxMzEsMSwwLAotICAgIDAsNzgsNDEsMTUsMTE0LDEzNywxLDAsMCwxMTQsMjQxLDAsMCwwLDExNCw3LAotICAgIDAsMCwwLDExNCw3OSwxLDAsMCwxMTQsMTk4LDAsMCwwLDExNCw4NywxLAotICAgIDAsMCwxMTQsMTAxLDEsMCwwLDExNCwxMDcsMSwwLDAsMTE0LDIyNCwwLDAsCi0gICAgMCwxMTQsMTEsMSwwLDAsMTE0LDIwLDEsMCwwLDExNCwzLDAsMCwwLAotICAgIDExNCw1NywwLDAsMCwxMTQsMjMsMSwwLDAsMTE0LDc0LDEsMCwwLDQxLAotICAgIDMsMTE0LDEzNSwxLDAsMCwxMTQsMTM2LDEsMCwwLDkwLDE3LDExNSwxMTcsMTEyLAotICAgIDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCw4LDk1LAotICAgIDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDE0OCw5LDAsMCwxMTUsMTYsMCwwLDAsCi0gICAgMCwyLDEzLDEsOSwxLDI4LDEsMTYsMSwxNiwxLDE1LDEsMTksMSwKLSAgICAxMTQsMTM4LDEsMCwwLDQxLDMsMTIyLDMsMTE5LDEwNSwxMTAsMTE0LDEsMCwwLAotICAgIDAsMTE0LDIsMCwwLDAsNDEsOTIsMTE0LDU5LDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE3LDAsMCwwLDExNCwxOSwwLDAsCi0gICAgMCwxMTQsMjgsMCwwLDAsMTE0LDM4LDAsMCwwLDExNCwzOSwwLDAsMCwKLSAgICAxMTQsNDMsMCwwLDAsMTE0LDQ0LDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsCi0gICAgNTUsMCwwLDAsMTE0LDY1LDAsMCwwLDExNCw2OCwwLDAsMCwxMTQsNjYsCi0gICAgMCwwLDAsMjE4LDgsOTUsOTUsOTksMTExLDEwMCwxMDEsOTUsOTUsMTE0LDE5NCwwLAotICAgIDAsMCwxMTQsNjksMCwwLDAsMTE0LDEwOSwwLDAsMCwxMTQsOTIsMCwwLAotICAgIDAsMTE0LDk5LDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsODMsMCwwLDAsCi0gICAgMTE0LDEwMiwwLDAsMCwxMTQsMTAzLDAsMCwwLDExNCwxMDUsMCwwLDAsMTE0LAotICAgIDExMiwwLDAsMCwxMTQsMTE0LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTg2LAotICAgIDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMTgsMCwwLDAsOTAsMTcsOTUsCi0gICAgODIsNjUsODcsOTUsNzcsNjUsNzEsNzMsNjcsOTUsNzgsODUsNzcsNjYsNjksODIsCi0gICAgMTE0LDEyNCwwLDAsMCwxMTQsMTM1LDAsMCwwLDExNCwxMTksMCwwLDAsMTE0LAotICAgIDEyMCwwLDAsMCwxMTQsMTMyLDAsMCwwLDExNCwxMzYsMCwwLDAsMTE0LDE0MywKLSAgICAwLDAsMCwxMTQsMTQ1LDAsMCwwLDExNCwxNTMsMCwwLDAsMTE0LDE1NywwLAotICAgIDAsMCwxMTQsMTYyLDAsMCwwLDExNCwxNjUsMCwwLDAsMTE0LDE3MywwLDAsCi0gICAgMCwxMTQsMTgxLDAsMCwwLDExNCwxOTEsMCwwLDAsMTE0LDE5NiwwLDAsMCwKLSAgICAxMTQsMTk5LDAsMCwwLDExNCwyMDQsMCwwLDAsMTE0LDIxMiwwLDAsMCwxMTQsCi0gICAgMjEzLDAsMCwwLDExNCwyMTcsMCwwLDAsMTE0LDE3NCwwLDAsMCwyMTgsNiwKLSAgICAxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE0LDI0MiwwLDAsMCwxMTQsMjQwLDAsMCwwLAotICAgIDExNCwyNDgsMCwwLDAsMTE0LDE3NSwwLDAsMCwxMTQsMTAsMSwwLDAsMTE0LAotICAgIDExLDEsMCwwLDExNCwyMCwxLDAsMCwxMTQsMjMsMSwwLDAsMTE0LDMzLAotICAgIDEsMCwwLDExNCwzNCwxLDAsMCwxMTQsNDksMSwwLDAsMTE0LDksMSwKLSAgICAwLDAsMTE0LDgsMSwwLDAsMTE0LDYwLDEsMCwwLDExNCw1NywxLDAsCi0gICAgMCwxMTQsNjEsMSwwLDAsMTE0LDI1MiwwLDAsMCwxMTQsNzQsMSwwLDAsCi0gICAgMTE0LDg3LDEsMCwwLDExNCwxMDIsMSwwLDAsMTE0LDEwNSwxLDAsMCwxMTQsCi0gICAgMTA2LDEsMCwwLDExNCwxMDgsMSwwLDAsMTE0LDExMSwxLDAsMCwxMTQsMTIwLAotICAgIDEsMCwwLDExNCwxMTIsMSwwLDAsMTE0LDExNCwxLDAsMCwxMTQsMTE1LDEsCi0gICAgMCwwLDExNCwxMTYsMSwwLDAsMTE0LDEyMiwxLDAsMCwxMTQsMTI0LDEsMCwKLSAgICAwLDExNCwyNDEsMCwwLDAsMTE0LDEyNywxLDAsMCwxMTQsMTI4LDEsMCwwLAotICAgIDExNCwxMzcsMSwwLDAsMTE0LDEzOCwxLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsOCwKLSAgICA2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2Miw4LDAsMCwwLDExNSwxNzAsMCwwLAotICAgIDAsNiwxNyw2LDMsMTIsMTIsMTIsNSwxMiw1LDEyLDYsMTIsMTIsMTIsCi0gICAgMTAsMTIsOSwxMiw1LDEyLDcsMTUsMjIsMTIsOCwxMiw0LDE1LDQsMTksCi0gICAgMjAsNiwyLDYsMywyMiw0LDE5LDY4LDE5LDIxLDE5LDE5LDEyLDE5LDEyLAotICAgIDIwLDEyLDExNCwyMiwxLDE4LDIsNiwyLDksMiw5LDEsOSwyLDE1LAotICAgIDI3LDEyLDIzLDEyLDE5LDEyLDEyLDE4LDgsMTIsMTgsMTIsMTEsMTIsMTEsMTIsCi0gICAgMTcsMTIsMTYsMjEsNTUsMjEsMTIsMTgsMTAsMTIsMTQsMTIsMzYsMTksMjcsMTksCi0gICAgMTA2LDI0LDIyLDksMywxMiwxLDE1LDYzLDE4LDQ1LDE5LDIzMCwxNSwyNSwxOSwKLSAgICA3MCwxOSw3MSwxOSw2MywxOSwyNCwyMiwxMTAsMTksNDEsMjUsNDMsMjUsMTYsNiwKLSAgICAzLDE5LDU3LDE5LDU3LDE5LDM4LDE5LDEyOSwxOSwxNDYsMTksMTMsMTIsOSwxMiwKLSAgICA5LDE1LDQwLDEyLDE3LDYsMSwxMCwyLDEyLDI3LDEyLDYsMTgsMjQsMTIsCi0gICAgMzIsMTIsMTUsMTIsMTEsMjQsMzUsMTIsOCwxMiw4NywKKyAgICAwLDExNSw4NywwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsCisgICAgMiwwLDEsMTE2LDEsMCwxMDYsMiwwLDEwNiwzLDAsMTE2LDQsMCwxMzEsCisgICAgMSwwLDEsMTE2LDEsMCwxMDYsMiwwLDEwNiwzLDAsMTE2LDUsMCwxMzEsCisgICAgMSwwLDEsMTAwLDEsMCwxMDAsMiwwLDEwOCw2LDAsMTI1LDIsMCwxMjQsCisgICAgMiwwLDk3LDcsMCwxMjQsMiwwLDEwNiw4LDAsMTE2LDEsMCwxMDYsOSwKKyAgICAwLDExNiwxMCwwLDI1LDEzMSwxLDAsMSwxMDAsMiwwLDgzLDQxLDMsMTIyLAorICAgIDUwLDczLDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCisgICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsNDYsMTE0LDMzLDAsMCwwLDc4LDQxLDExLDExNCwyMDQsMCwwLDAsCisgICAgMTE0LDE0LDAsMCwwLDExNCwxNzQsMCwwLDAsMTE0LDExMywwLDAsMCwxMTQsCisgICAgMTUwLDAsMCwwLDExNCwxNjAsMCwwLDAsMjE4LDI2LDk1LDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsOTUsMTAxLDEyMCwxMTYsCisgICAgMTAxLDExNCwxMTAsOTcsMTA4LDExNCwxMTksMCwwLDAsMjE4LDgsOTUsMTA1LDExMCwxMTUsCisgICAgMTE2LDk3LDEwOCwxMDgsMTE0LDIxLDAsMCwwLDExNCwxLDAsMCwwLDQxLDMsCisgICAgMTE0LDIwMiwwLDAsMCwxMTQsMjAzLDAsMCwwLDExNCwyMDUsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIwNiwKKyAgICAwLDAsMCwxMDgsNCwwLDAsMTE1LDEyLDAsMCwwLDAsMiwxMywyLAorICAgIDE2LDEsMTYsMywxMiwxLDYsMSwxMTQsMjA2LDAsMCwwLDQxLDUxLDExNCwKKyAgICAzLDAsMCwwLDExNCwxMTksMCwwLDAsMTE0LDEyLDAsMCwwLDExNCwxNiwKKyAgICAwLDAsMCwxMTQsMTcsMCwwLDAsMTE0LDU5LDAsMCwwLDExNCw0MSwwLAorICAgIDAsMCwxMTQsNDgsMCwwLDAsMTE0LDMxLDAsMCwwLDExNCwzMiwwLDAsCisgICAgMCwxMTQsNTMsMCwwLDAsMTE0LDU0LDAsMCwwLDExNCw1NiwwLDAsMCwKKyAgICAxMTQsNjMsMCwwLDAsMTE0LDY1LDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsCisgICAgODEsMCwwLDAsMTE0LDg0LDAsMCwwLDExNCw5MCwwLDAsMCwxMTQsMTAxLAorICAgIDAsMCwwLDExNCwxMDIsMCwwLDAsMTE0LDEwNiwwLDAsMCwxMTQsODUsMCwKKyAgICAwLDAsMjE4LDYsMTExLDk4LDEwNiwxMDEsOTksMTE2LDkwLDksOTUsODAsNzksODAsCisgICAgODUsNzYsNjUsODQsNjksMTE0LDEzMiwwLDAsMCwxMTQsMTM3LDAsMCwwLDExNCwKKyAgICAxNDQsMCwwLDAsMTE0LDk3LDAsMCwwLDExNCw4NiwwLDAsMCwxMTQsMTQ4LAorICAgIDAsMCwwLDExNCwxNDksMCwwLDAsMTE0LDg3LDAsMCwwLDExNCwxNTAsMCwKKyAgICAwLDAsMTE0LDE2MCwwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNzEsMCwwLAorICAgIDAsMTE0LDE3MywwLDAsMCwxMTQsMTc2LDAsMCwwLDExNCwxODEsMCwwLDAsCisgICAgMTE0LDE5MSwwLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxODQsMCwwLDAsMTE0LAorICAgIDE4NSwwLDAsMCwxMTQsMTg2LDAsMCwwLDExNCwxOTQsMCwwLDAsMTE0LDE5NiwKKyAgICAwLDAsMCwxMTQsMTk5LDAsMCwwLDExNCwyMDAsMCwwLDAsMTE0LDIwNCwwLAorICAgIDAsMCwxMTQsMjA2LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOCw2MCwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw2Miw4LDAsMCwwLDExNSw5NiwwLDAsMCw2LDE3LAorICAgIDYsMiwxMiw4LDEyLDQsMTksMjAsNiwyLDYsMywyMiw0LDE5LDY4LAorICAgIDE5LDIxLDE5LDE5LDEyLDE5LDEyLDE5LDEyLDExLDE4LDgsMTIsMTEsMTIsMTIsCisgICAgMTIsMTYsMTIsMzYsMTksMjcsMTksMTAxLDI0LDI2LDksMywxOCw0NSwxOCw2MCwKKyAgICAxMiwxOCwxMiwxNywxMiwyNSwxMiwyOSwxMiwyMywxMiwxNiwxOSw3MywxOSw3NywKKyAgICAxOSwxMywxMiw5LDEyLDksMTUsNDAsMTIsMTcsNiwxLDEwLDIsMTIsMjcsCisgICAgMTIsNiwxOCwyNCwxMiwzMiwxMiwxNSwyNCwzNSwxMiw3LDEyLDQ3LAogfTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaCBiL1B5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjBjZTE3Ci0tLSAvZGV2L251bGwKKysrIGIvUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCkBAIC0wLDAgKzEsMjU5NyBAQAorLyogQXV0by1nZW5lcmF0ZWQgYnkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyAqLworY29uc3QgdW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliX2V4dGVybmFsW10gPSB7CisgICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNywwLDAsCisgICAgMCw2NCwwLDAsMCwxMTUsMjI4LDIsMCwwLDEwMCwwLDAsOTAsMCwwLAorICAgIDEwMCw5NiwwLDkwLDEsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKKyAgICAyLDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsMywwLDEwMCw4LAorICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDQsMCwxMDAsMTAsMCwxMDAsMTEsMCwKKyAgICAxMzIsMCwwLDkwLDUsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLAorICAgIDYsMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTYsCisgICAgMCwxMDAsMTcsMCwxMzIsMCwwLDkwLDgsMCwxMDAsMTgsMCwxMDAsMTksMCwKKyAgICAxMzIsMCwwLDkwLDksMCwxMDAsMjAsMCwxMDAsMjEsMCwxMzIsMCwwLDkwLAorICAgIDEwLDAsMTAwLDIyLDAsMTAwLDIzLDAsMTAwLDI0LDAsMTMyLDEsMCw5MCwxMSwKKyAgICAwLDEwMSwxMiwwLDEwMSwxMSwwLDEwNiwxMywwLDEzMSwxLDAsOTAsMTQsMCwKKyAgICAxMDAsMjUsMCwxMDYsMTUsMCwxMDAsMjYsMCwxMDAsMjcsMCwxMzEsMiwwLDEwMCwKKyAgICAyOCwwLDIzLDkwLDE2LDAsMTAxLDE3LDAsMTA2LDE4LDAsMTAxLDE2LDAsMTAwLAorICAgIDI3LDAsMTMxLDIsMCw5MCwxOSwwLDEwMCwyOSwwLDkwLDIwLDAsMTAwLDMwLAorICAgIDAsOTAsMjEsMCwxMDAsMzEsMCwxMDMsMSwwLDkwLDIyLDAsMTAwLDMyLDAsCisgICAgMTAzLDEsMCw5MCwyMywwLDEwMSwyMywwLDQsOTAsMjQsMCw5MCwyNSwwLAorICAgIDEwMCwzMywwLDEwMCwzNCwwLDEwMCwzMywwLDEwMCwzNSwwLDEwMCwzNiwwLDEzMiwKKyAgICAxLDEsOTAsMjYsMCwxMDAsMzcsMCwxMDAsMzgsMCwxMzIsMCwwLDkwLDI3LAorICAgIDAsMTAwLDM5LDAsMTAwLDQwLDAsMTMyLDAsMCw5MCwyOCwwLDEwMCw0MSwwLAorICAgIDEwMCw0MiwwLDEzMiwwLDAsOTAsMjksMCwxMDAsNDMsMCwxMDAsNDQsMCwxMzIsCisgICAgMCwwLDkwLDMwLDAsMTAwLDQ1LDAsMTAwLDQ2LDAsMTAwLDQ3LDAsMTAwLDQ4LAorICAgIDAsMTMyLDAsMSw5MCwzMSwwLDEwMCw0OSwwLDEwMCw1MCwwLDEzMiwwLDAsCisgICAgOTAsMzIsMCwxMDAsNTEsMCwxMDAsNTIsMCwxMzIsMCwwLDkwLDMzLDAsMTAwLAorICAgIDMzLDAsMTAwLDMzLDAsMTAwLDMzLDAsMTAwLDUzLDAsMTAwLDU0LDAsMTMyLDMsCisgICAgMCw5MCwzNCwwLDEwMCwzMywwLDEwMCwzMywwLDEwMCwzMywwLDEwMCw1NSwwLAorICAgIDEwMCw1NiwwLDEzMiwzLDAsOTAsMzUsMCwxMDAsNTcsMCwxMDAsNTcsMCwxMDAsCisgICAgNTgsMCwxMDAsNTksMCwxMzIsMiwwLDkwLDM2LDAsMTAwLDYwLDAsMTAwLDYxLAorICAgIDAsMTMyLDAsMCw5MCwzNywwLDEwMSwzOCwwLDEzMSwwLDAsOTAsMzksMCwKKyAgICAxMDAsMzMsMCwxMDAsNjIsMCwxMDAsMzMsMCwxMDAsNjMsMCwxMDEsMzksMCwxMDAsCisgICAgNjQsMCwxMDAsNjUsMCwxMzIsMSwyLDkwLDQwLDAsNzEsMTAwLDY2LDAsMTAwLAorICAgIDY3LDAsMTMyLDAsMCwxMDAsNjcsMCwxMzEsMiwwLDkwLDQxLDAsNzEsMTAwLAorICAgIDY4LDAsMTAwLDY5LDAsMTMyLDAsMCwxMDAsNjksMCwxMzEsMiwwLDkwLDQyLAorICAgIDAsNzEsMTAwLDcwLDAsMTAwLDcxLDAsMTMyLDAsMCwxMDAsNzEsMCwxMDEsNDIsCisgICAgMCwxMzEsMywwLDkwLDQzLDAsNzEsMTAwLDcyLDAsMTAwLDczLDAsMTMyLDAsCisgICAgMCwxMDAsNzMsMCwxMzEsMiwwLDkwLDQ0LDAsNzEsMTAwLDc0LDAsMTAwLDc1LAorICAgIDAsMTMyLDAsMCwxMDAsNzUsMCwxMDEsNDQsMCwxMDEsNDMsMCwxMzEsNCwwLAorICAgIDkwLDQ1LDAsNzEsMTAwLDc2LDAsMTAwLDc3LDAsMTMyLDAsMCwxMDAsNzcsMCwKKyAgICAxMDEsNDQsMCwxMDEsNDIsMCwxMzEsNCwwLDkwLDQ2LDAsMTAzLDAsMCw5MCwKKyAgICA0NywwLDcxLDEwMCw3OCwwLDEwMCw3OSwwLDEzMiwwLDAsMTAwLDc5LDAsMTAxLAorICAgIDQ0LDAsMTAxLDQyLDAsMTMxLDQsMCw5MCw0OCwwLDcxLDEwMCw4MCwwLDEwMCwKKyAgICA4MSwwLDEzMiwwLDAsMTAwLDgxLDAsMTMxLDIsMCw5MCw0OSwwLDcxLDEwMCwKKyAgICA4MiwwLDEwMCw4MywwLDEzMiwwLDAsMTAwLDgzLDAsMTMxLDIsMCw5MCw1MCwKKyAgICAwLDcxLDEwMCw4NCwwLDEwMCw4NSwwLDEzMiwwLDAsMTAwLDg1LDAsMTMxLDIsCisgICAgMCw5MCw1MSwwLDcxLDEwMCw4NiwwLDEwMCw4NywwLDEzMiwwLDAsMTAwLDg3LAorICAgIDAsMTMxLDIsMCw5MCw1MiwwLDEwMCwzMywwLDEwMCw4OCwwLDEwMCw4OSwwLAorICAgIDEzMiwxLDAsOTAsNTMsMCwxMDAsOTAsMCwxMDAsOTEsMCwxMzIsMCwwLDkwLAorICAgIDU0LDAsMTAwLDkyLDAsMTAwLDkzLDAsMTMyLDAsMCw5MCw1NSwwLDEwMCw5NCwKKyAgICAwLDEwMCw5NSwwLDEzMiwwLDAsOTAsNTYsMCwxMDAsMzMsMCw4Myw0MSw5NywKKyAgICA5Nyw5NCwxLDAsMCw2NywxMTEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKKyAgICAxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICA0NSw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMCwxMCwKKyAgICA4NCwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDc4LAorICAgIDc5LDg0LDMyLDEwOSwxMDEsOTcsMTEwLDExNiwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsCisgICAgMTA1LDExNCwxMDEsOTksMTE2LDEwOCwxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwKKyAgICAzMywzMiw3MywxMTYsMzIsMTA0LDk3LDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwxMDAsMTAxLAorICAgIDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDExNSwxMTcsOTksMTA0LDEwLDExNiwxMDQsOTcsMTE2LAorICAgIDMyLDEwNSwxMTYsMzIsOTksOTcsMTEwLDMyLDk4LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsCisgICAgMTE2LDExNCw5NywxMTIsMTEyLDEwMSwxMDAsMzIsMTA1LDExMCwxMTYsMTExLDMyLDgwLDEyMSwxMTYsCisgICAgMTA0LDExMSwxMTAsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsCisgICAgMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDQ2LDMyLDY1LDExNSwxMCwxMTUsMTE3LDk5LDEwNCwzMiwxMDUsMTE2LDMyLAorICAgIDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDExMCwxMDYsCisgICAgMTAxLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsCisgICAgMTA1LDk5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDk3LAorICAgIDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwKKyAgICAxMDEsMTE0LDMyLDExNiwxMTEsMTAsMTE5LDExMSwxMTQsMTA3LDQ2LDMyLDc5LDExMCwxMDEsMzIsCisgICAgMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTE3LDExNSwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTA4LDEwNSw5OCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNyw5OCwxMDgsCisgICAgMTA1LDk5LDQ1LDEwMiw5Nyw5OSwxMDUsMTEwLDEwMywzMiwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwKKyAgICAxMTAsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNDYsMTAsMTAsMjE4LDMsMTE5LDEwNSwxMTAsMjE4LDYsOTksMTIxLDEwMywxMTksMTA1LDExMCwKKyAgICAyMTgsNiwxMDAsOTcsMTE0LDExOSwxMDUsMTEwLDk5LDAsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDQ5LDAsCisgICAgMCwwLDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDExNiwzLDAsMTMxLDEsCisgICAgMCwxMTQsMzMsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCwxMjUsMCwwLAorICAgIDExMCwxMiwwLDEwMCwzLDAsMTAwLDIsMCwxMzIsMCwwLDEyNSwwLDAsMTI0LAorICAgIDAsMCw4Myw0MSw0LDc4LDk5LDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsMCwwLDIsMCwwLDAsODMsMCwwLDAsMTE1LDEzLDAsMCwwLAorICAgIDEwMCwxLDAsMTE2LDAsMCwxMDYsMSwwLDEwNyw2LDAsODMsNDEsMiwxMjIsCisgICAgNTMsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwKKyAgICAxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsOTksMTA0LDEwMSw5OSwxMDcsCisgICAgMTAxLDEwMCwzMiw5OSw5NywxMTUsMTAxLDQ1LDEwNSwxMTAsMTE1LDEwMSwxMTAsMTE1LDEwNSwxMTYsCisgICAgMTA1LDExOCwxMDEsMTA4LDEyMSw0NiwxMTUsMTIsMCwwLDAsODAsODksODQsNzIsNzksCisgICAgNzgsNjcsNjUsODMsNjksNzksNzUsNDEsMiwyMTgsMyw5NSwxMTEsMTE1LDkwLDcsCisgICAgMTAxLDExMCwxMTgsMTA1LDExNCwxMTEsMTEwLDE2OSwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDI1MCwzOCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw5NSwxMDEsMTIwLDExNiwxMDEsMTE0LDExMCw5NywxMDgsNjIsMjE4LDExLDk1LDExNCwxMDEsCisgICAgMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDMwLDAsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsMiwxMjIsMzcsOTUsMTA5LDk3LDEwNywxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLAorICAgIDk1LDk5LDk3LDExNSwxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LAorICAgIDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDk5LDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDEsMCwwLDAsODMsMCwwLDAsMTE1LAorICAgIDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw1Myw4NCwxMTQsMTE3LDEwMSwKKyAgICAzMiwxMDUsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsMzIsMTA5LDExNywKKyAgICAxMTUsMTE2LDMyLDk4LDEwMSwzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDEsMTAwLDMyLDk5LDk3LAorICAgIDExNSwxMDEsNDUsMTA1LDExMCwxMTUsMTAxLDExMCwxMTUsMTA1LDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLAorICAgIDQ2LDcwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw2LDAsMCwwLAorICAgIDM0LDAsMCwwLDExNSwyLDAsMCwwLDAsMiw0MSw0LDIxOCwzLDExNSwKKyAgICAxMjEsMTE1LDIxOCw4LDExMiwxMDgsOTcsMTE2LDEwMiwxMTEsMTE0LDEwOSwyMTgsMTAsMTE1LDExNiwKKyAgICA5NywxMTQsMTE2LDExNSwxMTksMTA1LDExNiwxMDQsMjE4LDI3LDk1LDY3LDY1LDgzLDY5LDk1LAorICAgIDczLDc4LDgzLDY5LDc4LDgzLDczLDg0LDczLDg2LDY5LDk1LDgwLDc2LDY1LDg0LAorICAgIDcwLDc5LDgyLDc3LDgzLDQxLDEsMTE0LDYsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE2LDk1LDEwOSw5NywKKyAgICAxMDcsMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDI4LDAsMCwKKyAgICAwLDExNSw4LDAsMCwwLDAsMSwxOCwxLDE1LDQsMTIsMywxMTQsMTEsCisgICAgMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCisgICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMjYsMCwwLDAsMTE2LDAsMCwKKyAgICAxMjQsMCwwLDEzMSwxLDAsMTAwLDEsMCw2NCwxMDYsMSwwLDEwMCwyLDAsCisgICAgMTAwLDMsMCwxMzEsMiwwLDgzLDQxLDQsMTIyLDQyLDY3LDExMSwxMTAsMTE4LDEwMSwKKyAgICAxMTQsMTE2LDMyLDk3LDMyLDUxLDUwLDQ1LDk4LDEwNSwxMTYsMzIsMTA1LDExMCwxMTYsMTAxLAorICAgIDEwMywxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwxMDEsNDUsMTAxLDExMCwKKyAgICAxMDAsMTA1LDk3LDExMCw0NiwxMDgsMywwLDAsMCwyNTUsMTI3LDI1NSwxMjcsMywwLAorICAgIDIzMyw0LDAsMCwwLDIxOCw2LDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLDQxLDIsMjE4LAorICAgIDMsMTA1LDExMCwxMTYsMjE4LDgsMTE2LDExMSw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsNDEsMSwKKyAgICAyMTgsMSwxMjAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKKyAgICAwLDAsMjE4LDcsOTUsMTE5LDk1LDEwOCwxMTEsMTEwLDEwMyw0MCwwLDAsMCwxMTUsCisgICAgMiwwLDAsMCwwLDIsMTE0LDE3LDAsMCwwLDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDE2LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMCwwLDEwMCwxLAorICAgIDAsMTMxLDIsMCw4Myw0MSwyLDEyMiw0Nyw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwKKyAgICAzMiw1MiwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMDgsMTA1LDExNiwxMTYsCisgICAgMTA4LDEwMSw0NSwxMDEsMTEwLDEwMCwxMDUsOTcsMTEwLDMyLDExNiwxMTEsMzIsOTcsMTEwLDMyLAorICAgIDEwNSwxMTAsMTE2LDEwMSwxMDMsMTAxLDExNCw0NiwxMTQsMTMsMCwwLDAsNDEsMiwxMTQsCisgICAgMTQsMCwwLDAsMjE4LDEwLDEwMiwxMTQsMTExLDEwOSw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsCisgICAgNDEsMSw5MCw5LDEwNSwxMTAsMTE2LDk1LDk4LDEyMSwxMTYsMTAxLDExNSwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsNyw5NSwxMTQsCisgICAgOTUsMTA4LDExMSwxMTAsMTAzLDQ1LDAsMCwwLDExNSwyLDAsMCwwLDAsMiwKKyAgICAxMTQsMTksMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsMywwLDAsMCw3MSwwLDAsMCwxMTUsMjYsMCwwLDAsMTE2LAorICAgIDAsMCwxMDYsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwwLAorICAgIDAsNjgsMTMxLDEsMCwxMzEsMSwwLDgzLDQxLDMsMTIyLDMxLDgyLDEwMSwxMTIsCisgICAgMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTExLDExNSw0NiwKKyAgICAxMTIsOTcsMTE2LDEwNCw0NiwxMDYsMTExLDEwNSwxMTAsNDAsNDEsNDYsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCw4MywwLDAsCisgICAgMCwxMTUsMzcsMCwwLDAsMTAzLDAsMCwxMjQsMCwwLDkzLDI3LDAsMTI1LAorICAgIDEsMCwxMjQsMSwwLDExNCw2LDAsMTI0LDEsMCwxMDYsMCwwLDExNiwxLAorICAgIDAsMTMxLDEsMCwxNDUsMiwwLDExMyw2LDAsODMsMTE0LDQsMCwwLDAsCisgICAgNDEsMiwyMTgsNiwxMTQsMTE1LDExNiwxMTQsMTA1LDExMiwyMTgsMTUsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTE1LDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMTEsMTE0LDExNSw0MSwyLDIxOCwyLDQ2LAorICAgIDQ4LDIxOCw0LDExMiw5NywxMTQsMTE2LDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw1LDAsMCwwLDI1MCwxMCw2MCwxMDgsMTA1LDExNSwxMTYsOTksMTExLDEwOSwKKyAgICAxMTIsNjIsNTIsMCwwLDAsMTE1LDIsMCwwLDAsOSwxLDEyMiwzMCw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsCisgICAgMTE1LDYyLDQ2LDYwLDEwOCwxMDUsMTE1LDExNiw5OSwxMTEsMTA5LDExMiw2Miw0MSwyLDIxOCwKKyAgICA4LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDIxOCw0LDEwNiwxMTEsMTA1LDExMCw0MSwKKyAgICAxLDIxOCwxMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTIsOTcsMTE0LDExNiwxMTUsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEwLDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw1MCwwLDAsMCwxMTUsNCwwLDAsCisgICAgMCwwLDIsMTUsMSwxMTQsMjgsMCwwLDAsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDUsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTM0LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMzEsMSwwLDEwMCwxLDAsCisgICAgMTA3LDIsMCwxMTQsNTIsMCwxMjQsMCwwLDEwNiwyLDAsMTE2LDMsMCwxMzEsCisgICAgMSwwLDkyLDMsMCwxMjUsMSwwLDEyNSwyLDAsMTI1LDMsMCwxMjQsMSwKKyAgICAwLDEyNCwzLDAsMTAyLDIsMCw4MywxMjAsNjksMCwxMTYsNCwwLDEyNCwwLAorICAgIDAsMTMxLDEsMCw2OCw5Myw1NSwwLDEyNSw0LDAsMTI0LDQsMCwxMTYsMSwKKyAgICAwLDEwNyw2LDAsMTE0LDY1LDAsMTI0LDAsMCwxMDYsNSwwLDEyNCw0LDAsCisgICAgMTAwLDIsMCwxMDAsMSwwLDEzMSwxLDEsOTIsMiwwLDEyNSwxLDAsMTI1LAorICAgIDMsMCwxMjQsMSwwLDEyNCwzLDAsMTAyLDIsMCw4MywxMTMsNjUsMCw4NywKKyAgICAxMDAsMywwLDEyNCwwLDAsMTAyLDIsMCw4Myw0MSw0LDEyMiwzMiw4MiwxMDEsCisgICAgMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsCisgICAgNDYsMTEyLDk3LDExNiwxMDQsNDYsMTE1LDExMiwxMDgsMTA1LDExNiw0MCw0MSw0NiwyMzMsMSwKKyAgICAwLDAsMCw5MCw4LDEwOSw5NywxMjAsMTE1LDExMiwxMDgsMTA1LDExNiwyMTgsMCw0MSwKKyAgICA2LDIxOCwzLDEwOCwxMDEsMTEwLDExNCwyMSwwLDAsMCwyMTgsMTAsMTE0LDExMiw5NywKKyAgICAxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE0LDI1LDAsMCwwLDIxOCw4LDExNCwxMDEsCisgICAgMTE4LDEwMSwxMTQsMTE1LDEwMSwxMDAsMjE4LDYsMTE0LDExNSwxMTIsMTA4LDEwNSwxMTYsNDEsNSwKKyAgICAyMTgsNCwxMTIsOTcsMTE2LDEwNCw5MCw1LDEwMiwxMTQsMTExLDExMCwxMTYsMjE4LDEsOTUsCisgICAgMjE4LDQsMTE2LDk3LDEwNSwxMDgsMTE0LDE2LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDU2LDAsMCwwLDExNSwxNiwwLDAsMCwKKyAgICAwLDIsMTgsMSwyNCwxLDEwLDEsMTksMSwxMiwxLDI3LDEsMTQsMSwKKyAgICAxMTQsMzgsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTE2LAorICAgIDAsMCwxMDYsMSwwLDEyNCwwLDAsMTMxLDEsMCw4Myw0MSwxLDEyMiwxMjYsCisgICAgODMsMTE2LDk3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw3Nyw5NywxMDAsMTAxLDMyLDk3LDMyLDExNSwxMDEsMTEyLDk3LDExNCwKKyAgICA5NywxMTYsMTAxLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTExLDMyLAorICAgIDEwOSw5NywxMDcsMTAxLDMyLDEwNSwxMTYsMzIsMTAxLDk3LDExNSwxMDUsMTAxLDExNCwzMiwxMTYsCisgICAgMTExLDMyLDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTA1LDExMCwzMiwxMDEsMTIwLAorICAgIDExMiwxMDEsMTE0LDEwNSwxMDksMTAxLDExMCwxMTYsMTE1LDEwLDMyLDMyLDMyLDMyLDQwLDEwMSwKKyAgICA0NiwxMDMsNDYsMzIsOTksOTcsOTksMTA0LDEwMSwzMiwxMTUsMTE2LDk3LDExNiwzMiwxMTQsCisgICAgMTAxLDExNSwxMTcsMTA4LDExNiwxMTUsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNDEsMiwKKyAgICAxMTQsMywwLDAsMCw5MCw0LDExNSwxMTYsOTcsMTE2LDQxLDEsMTE0LDM1LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKKyAgICAwLDIxOCwxMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiw2OCwwLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDcsMTE0LDM5LDAsMCwwLDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw1OCwwLDAsMCwxMjEsMTYsMCwxMTYsMCwwLDEyNCwwLDAsCisgICAgMTMxLDEsMCwxMjUsMiwwLDg3LDExMCwyMiwwLDQsMTE2LDEsMCwxMDcsMTAsCisgICAgMCwxMTQsNDAsMCwxLDEsMSwxMDAsMSwwLDgzLDg5LDExMCwxLDAsODgsCisgICAgMTI0LDIsMCwxMDYsMiwwLDEwMCwyLDAsNjQsMTI0LDEsMCwxMDcsMiwwLAorICAgIDgzLDQxLDMsMTIyLDQ5LDg0LDEwMSwxMTUsMTE2LDMyLDExOSwxMDQsMTAxLDExNiwxMDQsMTAxLAorICAgIDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTAxLAorICAgIDMyLDExNiwxMjEsMTEyLDEwMSw0Niw3MCwxMDUsMCwyNDAsMCwwLDQxLDMsMTE0LDM5LAorICAgIDAsMCwwLDIxOCw3LDc5LDgzLDY5LDExNCwxMTQsMTExLDExNCwyMTgsNywxMTUsMTE2LAorICAgIDk1LDEwOSwxMTEsMTAwLDEwMSw0MSwzLDExNCwzNSwwLDAsMCwyMTgsNCwxMDksMTExLAorICAgIDEwMCwxMDEsOTAsOSwxMTUsMTE2LDk3LDExNiw5NSwxMDUsMTEwLDEwMiwxMTEsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE4LDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwNSwxMTUsOTUsMTA5LDExMSwxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSwKKyAgICA3OCwwLDAsMCwxMTUsMTAsMCwwLDAsMCwyLDMsMSwxNiwxLDEzLAorICAgIDEsOSwxLDExNCw0MywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLAorICAgIDAsMCwxMTYsMCwwLDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwwLDgzLDQxLAorICAgIDIsMTIyLDMxLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLAorICAgIDExMSwxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMDUsMTE1LDEwMiwxMDUsMTA4LAorICAgIDEwMSw0NiwxMDUsMCwxMjgsMCwwLDQxLDEsMTE0LDQzLDAsMCwwLDQxLDEsCisgICAgMTE0LDM1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDIxOCwxMiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMiwxMDUsCisgICAgMTA4LDEwMSw4NywwLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE0LDQ0LDAsCisgICAgMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDMxLDAsMCwwLDEyNCwwLDAsMTE1LAorICAgIDE4LDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI1LDAsMCwxMTYsMiwKKyAgICAwLDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwwLDgzLDQxLDIsMTIyLDMwLDgyLAorICAgIDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTExLAorICAgIDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMDUsMTE1LDEwMCwxMDUsMTE0LDQ2LDEwNSwwLDY0LAorICAgIDAsMCw0MSwzLDExNCwzLDAsMCwwLDIxOCw2LDEwMywxMDEsMTE2LDk5LDExOSwKKyAgICAxMDAsMTE0LDQzLDAsMCwwLDQxLDEsMTE0LDM1LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMSw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMCwxMDUsMTE0LDkyLDAsMCwwLDExNSw2LDAsCisgICAgMCwwLDAsMiw2LDEsMTIsMSwxMTQsNDYsMCwwLDAsMTA1LDE4MiwxLAorICAgIDAsMCw5OSwzLDAsMCwwLDAsMCwwLDAsNiwwLDAsMCwxNywKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTkzLDAsMCwwLDEwMCwxLDAsMTA2LAorICAgIDAsMCwxMjQsMCwwLDExNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwyLAorICAgIDAsMTI1LDMsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDMsMCwxMTYsMiwwLAorICAgIDEwNiw0LDAsMTE2LDIsMCwxMDYsNSwwLDY2LDExNiwyLDAsMTA2LDYsMCwKKyAgICA2NiwxMjQsMiwwLDEwMCwyLDAsNjQsMTMxLDMsMCwxMjUsNCwwLDEyMSw2MSwKKyAgICAwLDExNiw3LDAsMTA2LDgsMCwxMjQsNCwwLDEwMCwzLDAsMTMxLDIsMCwKKyAgICAxNDMsMjAsMCwxMjUsNSwwLDEyNCw1LDAsMTA2LDksMCwxMjQsMSwwLDEzMSwKKyAgICAxLDAsMSw4NywxMDAsNCwwLDgxLDgyLDg4LDExNiwyLDAsMTA2LDEwLDAsCisgICAgMTI0LDMsMCwxMjQsMCwwLDEzMSwyLDAsMSw4NywxMTAsNTksMCw0LDExNiwKKyAgICAxMSwwLDEwNywxMCwwLDExNCwxODgsMCwxLDEsMSwxMjEsMTcsMCwxMTYsMiwKKyAgICAwLDEwNiwxMiwwLDEyNCwzLDAsMTMxLDEsMCwxLDg3LDExMCwxOCwwLDQsCisgICAgMTE2LDExLDAsMTA3LDEwLDAsMTE0LDE4MCwwLDEsMSwxLDg5LDExMCwxLDAsCisgICAgODgsMTMwLDAsMCw4OSwxMTAsMSwwLDg4LDEwMCw0LDAsODMsNDEsNSwxMjIsCisgICAgMTYyLDY2LDEwMSwxMTUsMTE2LDQ1LDEwMSwxMDIsMTAyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTcsMTEwLAorICAgIDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTExLDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMzIsMTAwLAorICAgIDk3LDExNiw5NywzMiwxMTYsMTExLDMyLDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDk3LDExNiwKKyAgICAxMTEsMTA5LDEwNSw5OSw5NywxMDgsMTA4LDEyMSw0NiwxMCwzMiwzMiwzMiwzMiw2NiwxMDEsCisgICAgMzIsMTEyLDExNCwxMDEsMTEyLDk3LDExNCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA0LDk3LDExMCwKKyAgICAxMDAsMTA4LDEwMSwzMiw5NywzMiw3MCwxMDUsMTA4LDEwMSw2OSwxMjAsMTA1LDExNSwxMTYsMTE1LAorICAgIDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTAyLDMyLDk5LDExMSwxMTAsOTksMTE3LDExNCwxMTQsCisgICAgMTAxLDExMCwxMTYsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsMTE2LAorICAgIDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDEwMSwxMDksMTEyLDExMSwxMTQsOTcsMTE0LDEyMSwKKyAgICAzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywxMTYsMTE2LDEwMSwxMDksMTEyLDExNiwKKyAgICAxMDEsMTAwLDQ2LDEyMiw1LDEyMywxMjUsNDYsMTIzLDEyNSwxMDUsMTgyLDEsMCwwLDkwLAorICAgIDIsMTE5LDk4LDc4LDQxLDEzLDIxOCw2LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMjE4LDIsCisgICAgMTA1LDEwMCwxMTQsMywwLDAsMCw5MCw0LDExMSwxMTIsMTAxLDExMCw5MCw2LDc5LAorICAgIDk1LDY5LDg4LDY3LDc2LDkwLDcsNzksOTUsNjcsODIsNjksNjUsODQsOTAsOCwKKyAgICA3OSw5NSw4Nyw4Miw3OSw3OCw3Niw4OSwyMTgsMyw5NSwxMDUsMTExLDIxOCw2LDcwLAorICAgIDEwNSwxMDgsMTAxLDczLDc5LDIxOCw1LDExOSwxMTQsMTA1LDExNiwxMDEsMjE4LDcsMTE0LDEwMSwKKyAgICAxMTIsMTA4LDk3LDk5LDEwMSwxMTQsNDAsMCwwLDAsOTAsNiwxMTcsMTEwLDEwOCwxMDUsCisgICAgMTEwLDEwNyw0MSw2LDExNCwzNSwwLDAsMCwyMTgsNCwxMDAsOTcsMTE2LDk3LDExNCwKKyAgICA0MiwwLDAsMCw5MCw4LDExMiw5NywxMTYsMTA0LDk1LDExNiwxMDksMTEyLDkwLDIsCisgICAgMTAyLDEwMCwyMTgsNCwxMDIsMTA1LDEwOCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDUsMCwwLDAsMjE4LDEzLDk1LDExOSwxMTQsMTA1LDExNiwxMDEsOTUsCisgICAgOTcsMTE2LDExMSwxMDksMTA1LDk5LDk5LDAsMCwwLDExNSwyNiwwLDAsMCwwLAorICAgIDUsMjQsMSw5LDEsMzMsMSwzLDMsMjEsMSwyMCwxLDIwLDEsMTMsCisgICAgMSwzLDEsMTcsMSwxMywxLDUsMSwxMTQsNTUsMCwwLDAsMTA1LDIyLAorICAgIDEzLDAsMCwyMzMsMiwwLDAsMCwxMTQsMTMsMCwwLDAsMTE1LDIsMCwKKyAgICAwLDAsMTMsMTAsOTAsMTEsOTUsOTUsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsMTAxLDk1LAorICAgIDk1LDEyMiw0LDExMSwxMTIsMTE2LDQ1LDEyMiwzLDQ2LDExMiwxMjEsMTIyLDQsNDYsMTEyLAorICAgIDEyMSw5OSw3OCwyMTgsMTIsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLAorICAgIDExMCw5OSwyLDAsMCwwLDEsMCwwLDAsMTEsMCwwLDAsNiwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsODcsMSwwLDAsMTI0LDEsMCwxMDAsMSwKKyAgICAwLDEwNyw5LDAsMTE0LDc2LDAsMTE2LDAsMCwxMDYsMSwwLDEwMCwyLDAsCisgICAgMTE2LDIsMCwxMzEsMiwwLDEsMTI0LDIsMCwxMDAsMSwwLDEwNyw5LDAsCisgICAgMTE0LDU4LDAsMTAwLDMsMCwxMjUsMywwLDExNiwzLDAsMTI0LDMsMCwxMzEsCisgICAgMSwwLDEzMCwxLDAsMTI0LDEsMCwxMTQsNzAsMCwxMDAsNCwwLDExMCwzLAorICAgIDAsMTAwLDUsMCwxMjUsMiwwLDExNiw0LDAsMTI0LDAsMCwxMzEsMSwwLAorICAgIDkyLDIsMCwxMjUsNCwwLDEyNSw1LDAsMTI0LDUsMCwxMDYsNSwwLDEwMCwKKyAgICA2LDAsMTMxLDEsMCw5MiwzLDAsMTI1LDYsMCwxMjUsNywwLDEyNSw4LAorICAgIDAsMTE2LDYsMCwxMDYsNywwLDEwNiw4LDAsMTI1LDksMCwxMjQsOSwwLAorICAgIDEwMCwxLDAsMTA3LDgsMCwxMTQsMTU0LDAsMTE2LDksMCwxMDAsNywwLDEzMSwKKyAgICAxLDAsMTMwLDEsMCwxMDAsNCwwLDEwNiwxMCwwLDEyNCw2LDAsMTE0LDE3MiwKKyAgICAwLDEyNCw2LDAsMTEwLDMsMCwxMjQsOCwwLDEyNCw3LDAsMTI0LDksMCwKKyAgICAxMDMsMywwLDEzMSwxLDAsMTI1LDEwLDAsMTI0LDIsMCwxMDAsMSwwLDEwNywKKyAgICA4LDAsMTE0LDI0MSwwLDExNiw2LDAsMTA2LDExLDAsMTA2LDEyLDAsMTAwLDgsCisgICAgMCwxMDcsMiwwLDExNCwyMjksMCwxMDAsNCwwLDEyNSwyLDAsMTEwLDEyLDAsCisgICAgMTE2LDYsMCwxMDYsMTEsMCwxMDYsMTIsMCwxMjUsMiwwLDExNiwxMywwLDEyNCwKKyAgICAyLDAsMTMxLDEsMCwxMjUsMiwwLDEyNCwyLDAsMTAwLDQsMCwxMDcsMywKKyAgICAwLDExNCw2MywxLDEyNCwyLDAsMTA2LDE0LDAsMTMxLDAsMCwxMTUsNDIsMSwKKyAgICAxMTYsMTUsMCwxMDAsOSwwLDEwNiwxNiwwLDEyNCwyLDAsMTMxLDEsMCwxMzEsCisgICAgMSwwLDEzMCwxLDAsMTAwLDEwLDAsMTA2LDE2LDAsMTI0LDEwLDAsMTE2LDE3LAorICAgIDAsMTI0LDIsMCwxMzEsMywwLDEyNSwxMCwwLDExNiwxOCwwLDEyNCw0LDAsCisgICAgMTE2LDE5LDAsMTI0LDEwLDAsMTE2LDIwLDAsMTAwLDgsMCwyNSwyMywxMzEsMywKKyAgICAwLDgzLDQxLDExLDk3LDI1NCwyLDAsMCw3MSwxMDUsMTE4LDEwMSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywzMiw0NiwxMTIsMTIxLAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSw0NCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDEwNSwxMTYsMTE1LDMyLDQ2LDExMiwKKyAgICAxMjEsOTksMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwKKyAgICAxMDEsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLAorICAgIDExMCwxMTEsMTE2LDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMSwxMjAsMTA1LDExNSwKKyAgICAxMTYsNTksMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTIxLDMyLDExNCwKKyAgICAxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwKKyAgICAxMTYsMTExLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDQ2LDExMiwxMjEsOTksMzIsCisgICAgMTAyLDEwNSwxMDgsMTAxLDMyLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMTAwLDMyLAorICAgIDk3LDExNSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwKKyAgICAxMDgsMTAxLDMyLDExOSwxMDEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTExLDExMiwxMTYsMTA1LAorICAgIDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsCisgICAgMTE2LDEwMSwxMTQsMzIsOTksMTExLDExMCwxMTYsMTE0LDExMSwxMDgsMTE1LDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExMiwxMTQsMTAxLDExNSwxMTcsMTA5LDEwMSwxMDAsMzIsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsCisgICAgMTIyLDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDExMSwxMDIsMTAsCisgICAgMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsCisgICAgMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDMyLDczLDEwMiwzMiwzOSwxMTEsMTEyLDExNiwxMDUsMTA5LAorICAgIDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsCisgICAgNzgsMTExLDExMCwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsCisgICAgMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsOTcsMTE0LDEwMywxMTcsMTA5LAorICAgIDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsMTE2LDk3LDEwNywxMDEsMTEwLDMyLDk3LDExMCwxMDAsCisgICAgMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwKKyAgICA5NywxMDgsMTEyLDEwNCw5NywxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwzMiw0MCwxMDEsMTA4LAorICAgIDExNSwxMDEsMzIsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDEwLDMyLDMyLAorICAgIDMyLDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0MSw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwKKyAgICAxMTQsMTE0LDEwNSwxMDAsMTAxLDMyLDExMiw5NywxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiwKKyAgICAxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsNzMsCisgICAgMTAyLDMyLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLAorICAgIDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsNzgsMTExLDExMCwxMDEsNDQsMTAsMzIsMzIsCisgICAgMzIsMzIsOTcsMzIsODQsMTE0LDExNywxMDEsMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwKKyAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDk3LDEwOSwxMDEsMzIsOTcsMTE1LDMyLDExNSwxMDEsCisgICAgMTE2LDExNiwxMDUsMTEwLDEwMywzMiwzOSwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LAorICAgIDEwNSwxMTEsMTEwLDM5LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTAxLDEwOSwxMTIsMTE2LAorICAgIDEyMSwzMiwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywxMCwzMiwzMiwzMiwzMiwxMTksMTA0LDEwNSwKKyAgICAxMDgsMTAxLDMyLDk3LDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDExOCw5NywxMDgsMTE3LDEwMSwKKyAgICAzMiwxMDUsMTE1LDMyLDEwMSwxMTMsMTE3LDEwNSwxMTgsOTcsMTA4LDEwMSwxMTAsMTE2LDMyLDExNiwKKyAgICAxMTEsMzIsMTE1LDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDM5LDExMSwxMTIsMTE2LDEwNSwxMDksCisgICAgMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTE2LDExMSwzMiwzOSw0OSwzOSw0NiwKKyAgICAxMCwxMCwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsCisgICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDMyLDExNiwxMDQsCisgICAgMTAxLDExMCwzMiw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLAorICAgIDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDEyMiw3MCwxMTYsMTA0LDEwMSwzMiwxMDAsMTAxLAorICAgIDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMTIsOTcsMTE0LAorICAgIDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LAorICAgIDk3LDExNiwxMDEsMTAwLDU5LDMyLDExNywxMTUsMTAxLDMyLDM5LDExMSwxMTIsMTE2LDEwNSwxMDksCisgICAgMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsCisgICAgMTIyLDUwLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLAorICAgIDMyLDExMSwxMTQsMzIsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwKKyAgICAzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDExNSwxMDEsMTE2LDMyLDExNiwxMTEsMzIsCisgICAgNzgsMTExLDExMCwxMDEsMTE0LDMwLDAsMCwwLDExNCwyOSwwLDAsMCwyMTgsMSwKKyAgICA0NiwxMjIsMzYsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsCisgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwKKyAgICAxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDIzMywwLDAsMCwwLDEyMiwyNCwxMjMsMzMsCisgICAgMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDEwOCwxMTIsMTA0LDk3LDExMCwKKyAgICAxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LDEyMiw3LDEyMywxMjUsNDYsMTIzLDEyNSwxMjMsMTI1LDQxLAorICAgIDIxLDIxOCw5LDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwyMTgsNCwxMTksOTcsCisgICAgMTE0LDExMCwyMTgsMTgsNjgsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDUsMTExLDExMCw4NywKKyAgICA5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDIxOCw5LDg0LDEyMSwxMTIsMTAxLDY5LDExNCwxMTQsMTExLAorICAgIDExNCwxMTQsMzgsMCwwLDAsMTE0LDMyLDAsMCwwLDExNCw3LDAsMCwwLAorICAgIDIxOCwxNCwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgMjE4LDksOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDIxOCwxOSw3OCwxMTEsMTE2LAorICAgIDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgMTE0LDI2LDAsMCwwLDIxOCw1LDEwMiwxMDgsOTcsMTAzLDExNSwyMTgsOCwxMTEsMTEyLAorICAgIDExNiwxMDUsMTA5LDEwNSwxMjIsMTAxLDIxOCwzLDExNSwxMTYsMTE0LDIxOCw3LDEwNSwxMTUsOTcsCisgICAgMTA4LDExMCwxMTcsMTA5LDIxOCwxMCw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgMTE0LDQ3LDAsMCwwLDIxOCw0LDk1LDc5LDgwLDg0LDExNCwyOCwwLDAsMCwKKyAgICAyMTgsOCw5NSw4MCw4OSw2Nyw2NSw2Nyw3Miw2OSwyMTgsMTcsNjYsODksODQsNjksCisgICAgNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsNDEsMTEsMTE0LAorICAgIDM1LDAsMCwwLDkwLDE0LDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsCisgICAgMTE0LDEwNSwxMDAsMTAxLDExNCw1NywwLDAsMCwyMTgsNywxMDksMTAxLDExNSwxMTUsOTcsCisgICAgMTAzLDEwMSwyMTgsNCwxMDQsMTAxLDk3LDEwMCwxMTQsMzcsMCwwLDAsOTAsNCw5OCwKKyAgICA5NywxMTUsMTAxLDIxOCwzLDExNSwxMDEsMTEyLDIxOCw0LDExNCwxMDEsMTE1LDExNiw5MCwzLAorICAgIDExNiw5NywxMDMsOTAsMTUsOTcsMTA4LDEwOSwxMTEsMTE1LDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCisgICAgMCwwLDAsMjE4LDE3LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMjQzLDAsMCwwLDExNSw0NiwwLDAsMCwwLAorICAgIDE4LDEyLDEsOSwxLDcsMSwxMiwxLDYsMSwxMiwxLDE4LDEsMTgsCisgICAgMSwyNCwxLDEyLDEsMTIsMSwxMiwxLDM2LDEsMTIsMSwxOCwxLDksCisgICAgMiwxMiwxLDEyLDEsMTIsMSwxMiwxLDIxLDEsMjEsMSwxMTQsNzksMCwKKyAgICAwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDgsMCwwLDAsNSwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNjIsMSwwLDAsMTE2LDAsMCwxMDYsCisgICAgMSwwLDEwNiwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwzMCwwLDExNiwzLAorICAgIDAsMTAwLDIsMCwxMzEsMSwwLDEzMCwxLDAsMTE2LDQsMCwxMjQsMCwwLAorICAgIDEzMSwxLDAsOTIsMiwwLDEyNSwxLDAsMTI1LDIsMCwxMTYsNCwwLDEyNCwKKyAgICAxLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDEsMCwxMjUsMywwLDEyNCwzLAorICAgIDAsMTE2LDUsMCwxMDcsMywwLDExNCwxMDIsMCwxMTYsNiwwLDEwMCwzLDAsCisgICAgMTA2LDcsMCwxMTYsNSwwLDEyNCwwLDAsMTMxLDIsMCwxMzEsMSwwLDEzMCwKKyAgICAxLDAsMTI0LDIsMCwxMDYsOCwwLDEwMCw0LDAsMTMxLDEsMCwxMjUsNCwKKyAgICAwLDEyNCw0LDAsMTAwLDExLDAsMTA3LDcsMCwxMTQsMTUzLDAsMTE2LDYsMCwKKyAgICAxMDAsNywwLDEwNiw3LDAsMTI0LDIsMCwxMzEsMSwwLDEzMSwxLDAsMTMwLAorICAgIDEsMCwxMTAsMTI1LDAsMTI0LDQsMCwxMDAsNiwwLDEwNywyLDAsMTE0LDIyLAorICAgIDEsMTI0LDIsMCwxMDYsOSwwLDEwMCw0LDAsMTAwLDUsMCwxMzEsMiwwLAorICAgIDEwMCwxMiwwLDI1LDEyNSw1LDAsMTI0LDUsMCwxMDYsMTAsMCwxMTYsMTEsMCwKKyAgICAxMzEsMSwwLDExNSwyMjMsMCwxMTYsNiwwLDEwMCw4LDAsMTA2LDcsMCwxMTYsCisgICAgMTEsMCwxMzEsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMjQsNSwwLDExNiwxMiwKKyAgICAwLDExNiwxMSwwLDEzMSwxLDAsMTAwLDEsMCwxMzMsMiwwLDI1LDEyNSw2LAorICAgIDAsMTI0LDYsMCwxMDYsMTMsMCwxMzEsMCwwLDExNSwyMiwxLDExNiw2LDAsCisgICAgMTAwLDksMCwxMDYsNywwLDEyNCw1LDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwKKyAgICAxLDAsMTI0LDIsMCwxMDYsMTQsMCwxMDAsNCwwLDEzMSwxLDAsMTAwLDEwLAorICAgIDAsMjUsMTI1LDcsMCwxMTYsMTUsMCwxMjQsMSwwLDEyNCw3LDAsMTE2LDE2LAorICAgIDAsMTAwLDEwLDAsMjUsMjMsMTMxLDIsMCw4Myw0MSwxMyw5NywxMTAsMSwwLAorICAgIDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLAorICAgIDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLDEyMSw5OSw0NiwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsCisgICAgMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsOTksMzIsCisgICAgMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLAorICAgIDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LAorICAgIDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5OSw5NywKKyAgICAxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDk5LDExMSwxMTQsMTE0LAorICAgIDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLAorICAgIDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMzIsMzIsNzMsMTAyLDMyLDExMiw5NywxMTYsCisgICAgMTA0LDMyLDEwMCwxMTEsMTAxLDExNSwxMCwzMiwzMiwzMiwzMiwxMTAsMTExLDExNiwzMiw5OSwKKyAgICAxMTEsMTEwLDEwMiwxMTEsMTE0LDEwOSwzMiwxMTYsMTExLDMyLDgwLDY5LDgwLDMyLDUxLDQ5LAorICAgIDUyLDU1LDQ3LDUyLDU2LDU2LDMyLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsNDQsMzIsODYsCisgICAgOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OCwKKyAgICAxMDEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwzMiw3MywxMDIsMTAsMzIsMzIsMzIsCisgICAgMzIsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LAorICAgIDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LAorICAgIDMyLDc4LDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDExMCwzMiw3OCwxMTEsMTE2LDczLDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LAorICAgIDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LAorICAgIDEyMiwzNiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywKKyAgICAxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwKKyAgICAxMTUsMzIsNzgsMTExLDExMCwxMDEsMTIyLDM3LDEyMywxMjUsMzIsMTEwLDExMSwxMTYsMzIsOTgsCisgICAgMTExLDExNiwxMTYsMTExLDEwOSw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEwMCwxMDUsMTE0LDEwMSwKKyAgICA5OSwxMTYsMTExLDExNCwxMjEsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSwxMTQsNTgsMCwKKyAgICAwLDAsMTE0LDU2LDAsMCwwLDIzMywzLDAsMCwwLDEyMiwzMywxMDEsMTIwLAorICAgIDExMiwxMDEsOTksMTE2LDEwMSwxMDAsMzIsMTExLDExMCwxMDgsMTIxLDMyLDUwLDMyLDExMSwxMTQsCisgICAgMzIsNTEsMzIsMTAwLDExMSwxMTYsMTE1LDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMTIyLAorICAgIDU3LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksCisgICAgMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTUsMTE2LDk3LDExNCwxMTYsCisgICAgMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDEyMywzMywxMTQsMTI1LDEyMiw1MiwxMTEsMTEyLDExNiwxMDUsCisgICAgMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTIzLAorICAgIDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMTAsMzIsOTcsMTA4LAorICAgIDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMzIsMTE4LDk3LDEwOCwxMTcsMTAxLAorICAgIDExNCw1OSwwLDAsMCw2MiwyLDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsCisgICAgODAsMCwwLDAsMjMzLDI1NCwyNTUsMjU1LDI1NSw0MSwxNywxMTQsNywwLDAsMCwKKyAgICAxMTQsNjQsMCwwLDAsMTE0LDY1LDAsMCwwLDExNCw2NiwwLDAsMCwxMTQsCisgICAgMzgsMCwwLDAsMTE0LDczLDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsNDcsCisgICAgMCwwLDAsMjE4LDUsOTksMTExLDExNywxMTAsMTE2LDExNCwzNCwwLDAsMCwxMTQsCisgICAgOSwwLDAsMCwxMTQsNzIsMCwwLDAsMTE0LDMxLDAsMCwwLDExNCw3MCwKKyAgICAwLDAsMCwyMTgsOSwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNCwyOCwKKyAgICAwLDAsMCwyMTgsMTUsODMsNzksODUsODIsNjcsNjksOTUsODMsODUsNzAsNzAsCisgICAgNzMsODgsNjksODMsNDEsOCwxMTQsMzUsMCwwLDAsMTE0LDc2LDAsMCwwLAorICAgIDkwLDE2LDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LAorICAgIDEwOSwxMDEsOTAsNywxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTAsOSwxMDAsMTExLDExNiwKKyAgICA5NSw5OSwxMTEsMTE3LDExMCwxMTYsMTE0LDU3LDAsMCwwLDkwLDksMTExLDExMiwxMTYsCisgICAgOTUsMTA4LDEwMSwxMTgsMTAxLDEwOCw5MCwxMyw5OCw5NywxMTUsMTAxLDk1LDEwMiwxMDUsMTA4LAorICAgIDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwyMTgsMTcsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDIsMTE0LDExMSwKKyAgICAxMDksOTUsOTksOTcsOTksMTA0LDEwMSwzMSwxLDAsMCwxMTUsNDQsMCwwLDAsCisgICAgMCw5LDE4LDEsMTIsMSwxOCwxLDE4LDEsMTIsMSw5LDEsMTUsMSwKKyAgICAxNSwxLDEyLDEsOSwxLDE1LDEsMTIsMSwyMiwxLDE1LDEsOSwxLAorICAgIDEyLDEsMjIsMSwxMiwxLDksMSwxMiwxLDE5LDEsMTE0LDg1LDAsMCwKKyAgICAwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDEyLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwxNjQsMCwwLDAsMTE2LDAsMCwxMjQsMCwKKyAgICAwLDEzMSwxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyMiwwLDEwMCwyLDAsCisgICAgODMsMTI0LDAsMCwxMDYsMSwwLDEwMCwzLDAsMTMxLDEsMCw5MiwzLDAsCisgICAgMTI1LDEsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDEsMCwxMiwxMTUsODEsMCwKKyAgICAxMjQsMywwLDEwNiwyLDAsMTMxLDAsMCwxMDAsNywwLDEwMCw4LDAsMTMzLAorICAgIDIsMCwyNSwxMDAsNiwwLDEwNywzLDAsMTE0LDg1LDAsMTI0LDAsMCw4MywKKyAgICAxMjEsMTYsMCwxMTYsMywwLDEyNCwwLDAsMTMxLDEsMCwxMjUsNCwwLDg3LAorICAgIDExMCw0MCwwLDQsMTE2LDQsMCwxMTYsNSwwLDEwMiwyLDAsMTA3LDEwLDAsCisgICAgMTE0LDE0MywwLDEsMSwxLDEyNCwwLDAsMTAwLDIsMCwxMDAsOSwwLDEzMywKKyAgICAyLDAsMjUsMTI1LDQsMCw4OSwxMTAsMSwwLDg4LDExNiw2LDAsMTI0LDQsCisgICAgMCwxMzEsMSwwLDExNCwxNjAsMCwxMjQsNCwwLDgzLDEyNCwwLDAsODMsNDEsCisgICAgMTAsMTIyLDE4OCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywzMiw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTE2LDExMSwzMiw5NywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDQwLDEwNSwxMDIsMzIsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDQxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTIsMTE3LDExNCwxMDEsMTA4LDEyMSwKKyAgICAzMiwxMDIsMTExLDExNCwzMiw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwxMDAsMTE1LDQ1LDk5LAorICAgIDExMSwxMDksMTEyLDk3LDExNiwxMDUsOTgsMTA1LDEwOCwxMDUsMTE2LDEyMSwzMiwxMDIsMTExLDExNCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4MCwxMjEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw2OSwxMjAsCisgICAgMTAxLDk5LDY3LDExMSwxMDAsMTAxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODcsMTA1LDExNiwxMDQsCisgICAgNzAsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDQwLDQxLDMyLDEwNSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsNjcsMzIsNjUsODAsNzMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LAorICAgIDU5LDAsMCwwLDc4LDExNCw1OCwwLDAsMCwxMTQsODAsMCwwLDAsMTE0LAorICAgIDI5LDAsMCwwLDkwLDIsMTEyLDEyMSwyMzMsMjUzLDI1NSwyNTUsMjU1LDIzMywyNTUsMjU1LAorICAgIDI1NSwyNTUsMTE0LDg3LDAsMCwwLDQxLDcsMTE0LDMxLDAsMCwwLDExNCwzMiwKKyAgICAwLDAsMCwyMTgsNSwxMDgsMTExLDExOSwxMDEsMTE0LDExNCw4NSwwLDAsMCwxMTQsCisgICAgNjYsMCwwLDAsMTE0LDcxLDAsMCwwLDExNCw0NCwwLDAsMCw0MSw1LAorICAgIDIxOCwxMyw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsCisgICAgNzgsMCwwLDAsMTE0LDM2LDAsMCwwLDkwLDksMTAxLDEyMCwxMTYsMTAxLDExMCwKKyAgICAxMTUsMTA1LDExMSwxMTAsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCisgICAgMjE4LDE1LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTAyLDEwNSwxMDgsCisgICAgMTAxLDY0LDEsMCwwLDExNSwyMCwwLDAsMCwwLDcsMTgsMSw0LDEsCisgICAgMjQsMSwzNSwxLDQsMSwzLDEsMTYsMSwxOSwxLDIxLDEsMTE0LDkxLAorICAgIDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDExLDAsMCwwLDY3LDAsMCwwLDExNSw5MiwwLDAsMCwxMjQsMCwwLAorICAgIDEwNiwwLDAsMTE2LDEsMCwxMTYsMiwwLDEzMSwxLDAsMTMxLDEsMCwxMTQsCisgICAgNTksMCwxMjEsMTQsMCwxMTYsMywwLDEyNCwwLDAsMTMxLDEsMCw4Myw4NywKKyAgICAxMTMsODgsMCw0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDU1LDAsMSwxLDEsCisgICAgODksMTEzLDg4LDAsODgsMTEwLDI5LDAsMTI0LDAsMCwxMDYsMCwwLDExNiwxLAorICAgIDAsMTE2LDUsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LDg0LDAsMTI0LDAsMCwKKyAgICA4MywxMDAsMCwwLDgzLDEwMCwwLDAsODMsNDEsMSw3OCw0MSw2LDIxOCw4LAorICAgIDEwMSwxMTAsMTAwLDExNSwxMTksMTA1LDExNiwxMDQsMjE4LDUsMTE2LDExNywxMTIsMTA4LDEwMSwxMTQsCisgICAgODQsMCwwLDAsMTE0LDc5LDAsMCwwLDExNCw2NiwwLDAsMCwxMTQsNzQsCisgICAgMCwwLDAsNDEsMSwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDExLAorICAgIDk1LDEwMywxMDEsMTE2LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDgzLDEsMCwwLDExNSwKKyAgICAxNiwwLDAsMCwwLDEsMjEsMSwzLDEsMTQsMSwxMywxLDgsMSwKKyAgICAyMSwxLDQsMiwxMTQsOTUsMCwwLDAsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDYwLAorICAgIDAsMCwwLDEyMSwxOSwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDEwNiwKKyAgICAxLDAsMTI1LDEsMCw4NywxMTAsMjQsMCw0LDExNiwyLDAsMTA3LDEwLDAsCisgICAgMTE0LDQ1LDAsMSwxLDEsMTAwLDEsMCwxMjUsMSwwLDg5LDExMCwxLDAsCisgICAgODgsMTI0LDEsMCwxMDAsMiwwLDc5LDEyNSwxLDAsMTI0LDEsMCw4Myw0MSwKKyAgICAzLDEyMiw1MSw2Nyw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwOSwxMTEsMTAwLDEwMSwzMiwxMTIsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsCisgICAgMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMDUsMTgyLDEsMCwwLDIzMywxMjgsMCwwLDAsCisgICAgNDEsMywxMTQsMzksMCwwLDAsMTE0LDQxLDAsMCwwLDExNCw0MCwwLDAsCisgICAgMCw0MSwyLDExNCwzNSwwLDAsMCwxMTQsNDIsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEwLDk1LDk5LAorICAgIDk3LDEwOCw5OSw5NSwxMDksMTExLDEwMCwxMDEsOTUsMSwwLDAsMTE1LDEyLDAsMCwKKyAgICAwLDAsMiwzLDEsMTksMSwxMywxLDExLDMsMTAsMSwxMTQsOTcsMCwKKyAgICAwLDAsMjE4LDksMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDUsMTE2LDEyMSwxMTQsMjksMCwKKyAgICAwLDAsOTksMSwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNCwKKyAgICAwLDAsMCw3MSwwLDAsMCwxMTUsNzUsMCwwLDAsMTE2LDAsMCwxMDYsCisgICAgMSwwLDEwNiwyLDAsMTI0LDEsMCwxMDcsNSwwLDExNCw3MSwwLDEyNCwwLAorICAgIDAsMTA2LDMsMCwxMDAsNiwwLDEzMSwxLDAsMTE1LDQzLDAsMTAwLDMsMCwKKyAgICAxMjQsMCwwLDIzLDEyNSwwLDAsMTE2LDQsMCwxMjQsMCwwLDEwNiw1LDAsCisgICAgMTI0LDIsMCwxNDAsMCwwLDEwMCw0LDAsMTE2LDAsMCwxMDYsNiwwLDEzMSwKKyAgICAxLDEsMSwxMDAsNSwwLDgzLDQxLDcsMTIyLDYxLDgwLDExNCwxMDUsMTEwLDExNiwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwzMiwxMTYsMTExLDMyLAorICAgIDExNSwxMTYsMTAwLDEwMSwxMTQsMTE0LDMyLDEwNSwxMDIsMzIsNDUsMTE4LDQ3LDgwLDg5LDg0LAorICAgIDcyLDc5LDc4LDg2LDY5LDgyLDY2LDc5LDgzLDY5LDMyLDEwNSwxMTUsMzIsMTE2LDExNywKKyAgICAxMTQsMTEwLDEwMSwxMDAsMzIsMTExLDExMCw0NiwyNTAsMSwzNSwyNTAsNywxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMjIsMiwzNSwzMiwxMTQsNTQsMCwwLDAsNzgsNDEsMiwKKyAgICAxMTQsOTksMCwwLDAsMTE0LDEwMCwwLDAsMCw0MSw3LDExNCw3LDAsMCwKKyAgICAwLDExNCw2NywwLDAsMCwyMTgsNywxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSwxMTQsCisgICAgOSwwLDAsMCwyMTgsNSwxMTIsMTE0LDEwNSwxMTAsMTE2LDExNCw0NywwLDAsMCwKKyAgICAyMTgsNiwxMTUsMTE2LDEwMCwxMDEsMTE0LDExNCw0MSwzLDExNCw3NSwwLDAsMCwxMTQsCisgICAgOTgsMCwwLDAsMjE4LDQsOTcsMTE0LDEwMywxMTUsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE2LDk1LDExOCwxMDEsMTE0LDk4LAorICAgIDExMSwxMTUsMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDEwNywxLDAsMCwxMTUsCisgICAgOCwwLDAsMCwwLDIsMTgsMSwxNSwxLDEwLDEsMTE0LDEwNSwwLDAsCisgICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxMSwwLAorICAgIDAsMCwzLDAsMCwwLDExNSw4NCwwLDAsMCwxMDAsMSwwLDEzNSwwLAorICAgIDAsMTAyLDEsMCwxMDAsMiwwLDEwMCwzLDAsMTM0LDEsMCwxMjUsMSwwLAorICAgIDEyMSwxMywwLDExNiwwLDAsMTA2LDEsMCwxMjUsMiwwLDg3LDExMCwzMCwwLAorICAgIDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNjYsMCwxLDEsMSwxMDAsNCwwLAorICAgIDEwMCw1LDAsMTMyLDAsMCwxMjUsMiwwLDg5LDExMCwxLDAsODgsMTI0LDIsCisgICAgMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDEsCisgICAgNiwxMjIsMjUyLDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LDMyLDExNiwxMTEsMzIsCisgICAgMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLDMyLDExNCwxMDEsMTEzLAorICAgIDExNywxMDEsMTE1LDExNiwxMDEsMTAwLDMyLDEwOSw5NywxMTYsOTksMTA0LDEwMSwxMTUsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCwzMiw5OSw5NywxMTAsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwMiwxMDUsMTE0LDExNSwxMTYsCisgICAgMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDQwLDExNSwxMDEsMTA4LDEwMiw0MSwKKyAgICAzMiwxMDksMTE3LDExNSwxMTYsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsMzIsOTUsMTEwLDk3LAorICAgIDEwOSwxMDEsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMDEsOTksCisgICAgMTExLDExMCwxMDAsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMTAsCisgICAgMzIsMzIsMzIsMzIsOTksMTExLDEwOSwxMTIsOTcsMTE0LDEwMSwxMDAsMzIsOTcsMTAzLDk3LAorICAgIDEwNSwxMTAsMTE1LDExNiw0NiwzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTExLDEwOSwKKyAgICAxMTIsOTcsMTE0LDEwNSwxMTUsMTExLDExMCwzMiwxMDIsOTcsMTA1LDEwOCwxMTUsMzIsMTE2LDEwNCwKKyAgICAxMDEsMTEwLDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwKKyAgICAxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw1LDAsMCwKKyAgICAwLDMxLDAsMCwwLDExNSw4OSwwLDAsMCwxMjQsMSwwLDEwMCwwLDAsCisgICAgMTA3LDgsMCwxMTQsMjQsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDEsMCwxMTAsCisgICAgNDYsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDcsMywwLDExNCw3MCwKKyAgICAwLDExNiwxLDAsMTAwLDEsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwKKyAgICAxMDIsMiwwLDIyLDEwMCwyLDAsMTI0LDEsMCwxMzEsMSwxLDEzMCwxLDAsCisgICAgMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMjQsMywwLDE0MiwKKyAgICAyLDAsODMsNDEsMyw3OCwxMjIsMzAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsCisgICAgMTExLDExNCwzMiwzNywxMTUsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTAsCisgICAgMTAwLDEwOCwxMDEsMzIsMzcsMTE1LDIxOCw0LDExMCw5NywxMDksMTAxLDQxLDIsMTE0LDEwNiwKKyAgICAwLDAsMCwyMTgsMTEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgNDEsNCwyMTgsNCwxMTUsMTAxLDEwOCwxMDIsMTE0LDEwNiwwLDAsMCwxMTQsMTA0LDAsCisgICAgMCwwLDkwLDYsMTA3LDExOSw5NywxMTQsMTAzLDExNSw0MSwxLDIxOCw2LDEwOSwxMDEsCisgICAgMTE2LDEwNCwxMTEsMTAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxOSwKKyAgICA5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LDExMiwKKyAgICAxMTIsMTAxLDExNCwxMjMsMSwwLDAsMTE1LDEyLDAsMCwwLDAsMSwxMiwxLAorICAgIDEyLDEsMTUsMSw2LDEsMjUsMSwxMjIsNDAsOTUsOTksMTA0LDEwMSw5OSwxMDcsCisgICAgOTUsMTEwLDk3LDEwOSwxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LAorICAgIDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwxMTQsOTcsMTEyLDExMiwKKyAgICAxMDEsMTE0LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDcsCisgICAgMCwwLDAsODMsMCwwLDAsMTE1LDkyLDAsMCwwLDEyMCw2NiwwLDEwMCwKKyAgICAxLDAsMTAwLDIsMCwxMDAsMywwLDEwMCw0LDAsMTAzLDQsMCw2OCw5MywKKyAgICA0NiwwLDEyNSwyLDAsMTE2LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsCisgICAgMCwxMTQsMTksMCwxMTYsMSwwLDEyNCwwLDAsMTI0LDIsMCwxMTYsMiwwLAorICAgIDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDEzMSwzLDAsMSwxMTMsMTksMCwKKyAgICA4NywxMjQsMCwwLDEwNiwzLDAsMTA2LDQsMCwxMjQsMSwwLDEwNiwzLDAsCisgICAgMTMxLDEsMCwxLDEwMCwwLDAsODMsNDEsNSw3OCwyMTgsMTAsOTUsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMjE4LDgsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsCisgICAgOTUsMjE4LDEyLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDIxOCwKKyAgICA3LDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsNDEsNSwyMTgsNywxMDQsOTcsMTE1LDk3LAorICAgIDExNiwxMTYsMTE0LDIxOCw3LDExNSwxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw3LDEwMywxMDEsCisgICAgMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw4LDk1LDk1LDEwMCwxMDUsOTksMTE2LDk1LDk1LDIxOCwKKyAgICA2LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNDEsMyw5MCwzLDExMCwxMDEsMTE5LDkwLDMsCisgICAgMTExLDEwOCwxMDAsMTE0LDUyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDIxOCw1LDk1LDExOSwxMTQsOTcsMTEyLDEzNCwxLAorICAgIDAsMCwxMTUsOCwwLDAsMCwwLDEsMjUsMSwxNSwxLDI5LDEsMTIyLAorICAgIDI2LDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDQ2LDYwLDEwOCwxMTEsCisgICAgOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTksMTE0LDk3LDExMiw0MSwzLDIxOCwxMCw5NSwKKyAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsMTE0LDEyMCwwLDAsMCwyMTgsOSwKKyAgICA3OCw5NywxMDksMTAxLDY5LDExNCwxMTQsMTExLDExNCw0MSwzLDExNCwxMDksMCwwLDAsCisgICAgMTE0LDExMCwwLDAsMCwxMTQsMTIwLDAsMCwwLDExNCw0LDAsMCwwLDQxLAorICAgIDEsMTE0LDEwOSwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTEsOTUsOTksMTA0LAorICAgIDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDEsMCwwLDExNSwxNCwwLDAsCisgICAgMCwwLDgsMjEsNywzLDEsMTMsMSwxMywyLDE3LDUsMTMsMSwxMTQsCisgICAgMTIzLDAsMCwwLDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwKKyAgICAwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDg0LDAsMCwwLDEyNCwwLAorICAgIDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSwyLDAsCisgICAgMTI1LDMsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsODAsMCwxMTYsCisgICAgMSwwLDEyNCwzLDAsMTMxLDEsMCwxMTQsODAsMCwxMDAsMiwwLDEyNSw0LAorICAgIDAsMTE2LDIsMCwxMDYsMywwLDEyNCw0LDAsMTA2LDQsMCwxMjQsMywwLAorICAgIDEwMCwzLDAsMjUsMTMxLDEsMCwxMTYsNSwwLDEzMSwyLDAsMSwxMjQsMiwKKyAgICAwLDgzLDQxLDQsMTIyLDE1NSw4NCwxMTQsMTIxLDMyLDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsCisgICAgMTAwLDMyLDk3LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiw5OCwxMjEsMzIsMTAwLDEwMSwxMDgsMTAxLDEwMyw5NywxMTYsMTA1LDExMCwKKyAgICAxMDMsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDEwOCwxMDIsNDYsMTAyLDEwNSwKKyAgICAxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwKKyAgICAzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTAyLAorICAgIDk3LDExOCwxMTEsMTE0LDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLAorICAgIDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDc4LDEyMiw0NCw3OCwxMTEsMTE2LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsCisgICAgMTAzLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTIzLDEyNSw1OCwzMiwKKyAgICAxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LAorICAgIDExNCw1OSwwLDAsMCw0MSw2LDIxOCwxMSwxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwxMTQsMzEsMCwwLDAsMTE0LDYwLDAsMCwwLDExNCw2MSwKKyAgICAwLDAsMCwxMTQsNDcsMCwwLDAsMjE4LDEzLDczLDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMyw0MSw1LDExNCwxMDgsMCwwLDAsMjE4LDgsCisgICAgMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDIxOCw2LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgMjE4LDgsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSwyMTgsMywxMDksMTE1LDEwMywxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTcsCisgICAgOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsMTA1LAorICAgIDEwOSwxNDMsMSwwLDAsMTE1LDEwLDAsMCwwLDAsMTAsMjEsMSwyNCwxLAorICAgIDYsMSwyOSwxLDExNCwxMzAsMCwwLDAsOTksNCwwLDAsMCwwLDAsCisgICAgMCwwLDExLDAsMCwwLDE5LDAsMCwwLDY3LDAsMCwwLDExNSwyNDAsCisgICAgMSwwLDAsMTA1LDAsMCwxMjUsNCwwLDEyNCwyLDAsMTAwLDEsMCwxMDcsCisgICAgOSwwLDExNCwzMSwwLDEyNCwyLDAsMTI0LDQsMCwxMDAsMiwwLDYwLDExMCwKKyAgICA2LDAsMTAwLDMsMCwxMjUsMiwwLDEyNCwzLDAsMTAwLDEsMCwxMDcsOSwKKyAgICAwLDExNCw1OSwwLDEyNCwzLDAsMTI0LDQsMCwxMDAsNCwwLDYwLDEyNCwwLAorICAgIDAsMTAwLDEsMCwxMDAsNSwwLDEzMywyLDAsMjUsMTI1LDUsMCwxMjQsMCwKKyAgICAwLDEwMCw1LDAsMTAwLDYsMCwxMzMsMiwwLDI1LDEyNSw2LDAsMTI0LDAsCisgICAgMCwxMDAsNiwwLDEwMCw3LDAsMTMzLDIsMCwyNSwxMjUsNywwLDEyNCw1LAorICAgIDAsMTE2LDAsMCwxMDcsMywwLDExNCwxNjgsMCwxMDAsOCwwLDEwNiwxLDAsCisgICAgMTI0LDIsMCwxMjQsNSwwLDEzMSwyLDAsMTI1LDgsMCwxMTYsMiwwLDEwMCwKKyAgICA5LDAsMTI0LDgsMCwxMzEsMiwwLDEsMTE2LDMsMCwxMjQsOCwwLDEyNCwKKyAgICA0LDAsMTQxLDEsMCwxMzAsMSwwLDExMCwxMTksMCwxMTYsNCwwLDEyNCw2LAorICAgIDAsMTMxLDEsMCwxMDAsNSwwLDEwNywzLDAsMTE0LDIyOSwwLDEwMCwxMCwwLAorICAgIDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw4LDAsMTE2LDIsMCwxMDAsCisgICAgOSwwLDEyNCw4LDAsMTMxLDIsMCwxLDExNiw1LDAsMTI0LDgsMCwxMzEsCisgICAgMSwwLDEzMCwxLDAsMTEwLDU4LDAsMTE2LDQsMCwxMjQsNywwLDEzMSwxLAorICAgIDAsMTAwLDUsMCwxMDcsMywwLDExNCwzMSwxLDEwMCwxMSwwLDEwNiwxLDAsCisgICAgMTI0LDIsMCwxMzEsMSwwLDEyNSw4LDAsMTE2LDIsMCwxMDAsOSwwLDEyNCwKKyAgICA4LDAsMTMxLDIsMCwxLDExNiw1LDAsMTI0LDgsMCwxMzEsMSwwLDEzMCwKKyAgICAxLDAsMTI0LDEsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDIyNiwxLDEyMSwyMCwKKyAgICAwLDExNiw2LDAsMTI0LDEsMCwxMDAsMTIsMCwyNSwxMzEsMSwwLDEyNSw5LAorICAgIDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLDEwNywxMCwwLDExNCw4MywxLDEsCisgICAgMSwxLDg5LDExMCw2MiwwLDg4LDExNiw4LDAsMTI0LDYsMCwxMzEsMSwwLAorICAgIDEyNCw5LDAsMTA3LDMsMCwxMTQsMTQ1LDEsMTAwLDEzLDAsMTA2LDEsMCwxMjQsCisgICAgMiwwLDEzMSwxLDAsMTI1LDgsMCwxMTYsMiwwLDEwMCw5LDAsMTI0LDgsCisgICAgMCwxMzEsMiwwLDEsMTE2LDMsMCwxMjQsOCwwLDEyNCw0LDAsMTQxLDEsCisgICAgMCwxMzAsMSwwLDEyMSwxOCwwLDEyNCwxLDAsMTAwLDE0LDAsMjUsMTAwLDE1LAorICAgIDAsNjQsMTI1LDEwLDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLDEwNywxMCwwLAorICAgIDExNCwxODMsMSwxLDEsMSw4OSwxMTAsNDMsMCw4OCwxMTYsOCwwLDEyNCw3LAorICAgIDAsMTMxLDEsMCwxMjQsMTAsMCwxMDcsMywwLDExNCwyMjYsMSwxMTYsMywwLAorICAgIDEwMCwxMywwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNCw0LDAsMTQxLAorICAgIDEsMCwxMzAsMSwwLDEyNCwwLDAsMTAwLDcsMCwxMDAsMSwwLDEzMywyLAorICAgIDAsMjUsODMsNDEsMTYsOTcsMTIyLDEsMCwwLDg2LDk3LDEwOCwxMDUsMTAwLDk3LAorICAgIDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA0LDEwMSw5NywxMDAsMTAxLDExNCwzMiwxMTEsMTAyLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTUsMTE1LDEwMSwxMDAsNDUsMTA1LDExMCwzMiw5OCwKKyAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiw5NywxMDMsOTcsMTA1LDExMCwxMTUsMTE2LDMyLAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsMTE1LDMyLDQwLDEwNSwxMDIsCisgICAgMTAsMzIsMzIsMzIsMzIsMTAzLDEwNSwxMTgsMTAxLDExMCw0MSwzMiw5NywxMTAsMTAwLDMyLAorICAgIDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDk4LDEyMSwKKyAgICAxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDk5LDk3LDExMCwzMiwKKyAgICA5OCwxMDEsMzIsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDMyLDk4LDEyMSwzMiw5OSwKKyAgICAxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSw0MCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwKKyAgICAxMDgsMTA4LDMyLDExMSwxMTYsMTA0LDEwMSwxMTQsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsCisgICAgMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMSwKKyAgICAxMTAsMTA0LDk3LDExMCw5OSwxMDEsMzIsMTAxLDExNCwxMTQsMTExLDExNCwzMiwxMTQsMTAxLDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDUsMTEwLDEwMyw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3MywxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LAorICAgIDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSw5NywxMDMsMTA1LAorICAgIDk5LDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTA1LDExNSwzMiwxMDUsMTEwLDk5LDExMSwKKyAgICAxMTQsMTE0LDEwMSw5OSwxMTYsMzIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDEwMiwxMTEsMTE3LAorICAgIDExMCwxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTE1LDExNiw5NywxMDgsMTAxLDQ2LDMyLAorICAgIDY5LDc5LDcwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LAorICAgIDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCw5NywxMTYsOTcsCisgICAgMzIsMTA1LDExNSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDExNiwxMTEsMzIsOTgsMTAxLDEwLAorICAgIDMyLDMyLDMyLDMyLDExNiwxMTQsMTE3LDExMCw5OSw5NywxMTYsMTAxLDEwMCw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw3OCwxMTQsMTA2LDAsMCwwLDEyMiwxMCw2MCw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSw2MiwxMTQsMzUsMCwwLDAsMTE0LDEyLDAsMCwwLAorICAgIDIzMyw4LDAsMCwwLDIzMywxMiwwLDAsMCwxMjIsMzAsOTgsOTcsMTAwLDMyLAorICAgIDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTA1LDExMCwzMiwKKyAgICAxMjMsMzMsMTE0LDEyNSw1OCwzMiwxMjMsMzMsMTE0LDEyNSwxMjIsMiwxMjMsMTI1LDEyMiw0MywKKyAgICAxMTQsMTAxLDk3LDk5LDEwNCwxMDEsMTAwLDMyLDY5LDc5LDcwLDMyLDExOSwxMDQsMTA1LDEwOCwKKyAgICAxMDEsMzIsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsCisgICAgOTcsMTA5LDExMiwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDEyMiw0OCwxMTQsMTAxLDk3LAorICAgIDk5LDEwNCwxMDEsMTAwLDMyLDY5LDc5LDcwLDMyLDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsMTE0LAorICAgIDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LDEwNSwxMjIsMTAxLDMyLDExMSwxMDIsMzIsMTE1LAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDIxOCw1LDEwOSwKKyAgICAxMTYsMTA1LDEwOSwxMDEsMTIyLDI2LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwNSwKKyAgICAxMTUsMzIsMTE1LDExNiw5NywxMDgsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEyMywzMywxMTQsMTI1LAorICAgIDIxOCw0LDExNSwxMDUsMTIyLDEwMSwxMDgsMywwLDAsMCwyNTUsMTI3LDI1NSwxMjcsMywKKyAgICAwLDQxLDksMjE4LDEyLDc3LDY1LDcxLDczLDY3LDk1LDc4LDg1LDc3LDY2LDY5LAorICAgIDgyLDExNCw0NywwLDAsMCwxMTQsMTA1LDAsMCwwLDExNCwxMDcsMCwwLDAsCisgICAgMTE0LDMxLDAsMCwwLDIxOCw4LDY5LDc5LDcwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsCisgICAgMTQsMCwwLDAsMjE4LDgsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDE5LAorICAgIDAsMCwwLDQxLDExLDExNCw1MywwLDAsMCwyMTgsMTIsMTE1LDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMTE0LDEwNiwwLDAsMCwxMTQsMzUsMCwKKyAgICAwLDAsOTAsMTEsMTAxLDEyMCw5OSw5NSwxMDAsMTAxLDExNiw5NywxMDUsMTA4LDExNSw5MCwKKyAgICA1LDEwOSw5NywxMDMsMTA1LDk5LDkwLDEzLDExNCw5NywxMTksOTUsMTE2LDEwNSwxMDksMTAxLAorICAgIDExNSwxMTYsOTcsMTA5LDExMiw5MCw4LDExNCw5NywxMTksOTUsMTE1LDEwNSwxMjIsMTAxLDExNCwKKyAgICA3NSwwLDAsMCwyMTgsMTIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDksMTE2LDEwNSwKKyAgICAxMDksMTAxLDIxOCwxMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwxMDUsMTIyLDEwMSwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMjUsCisgICAgOTUsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLAorICAgIDEwMCwxMDEsOTUsMTA0LDEwMSw5NywxMDAsMTAxLDExNCwxNjAsMSwwLDAsMTE1LDc2LDAsCisgICAgMCwwLDAsMTEsNiwxLDEyLDEsMTMsMyw2LDEsMTIsMSwxMCwxLAorICAgIDE2LDEsMTYsMSwxNiwxLDEyLDEsMTgsMSwxMywxLDE4LDEsMTgsMSwKKyAgICAxNSwxLDEzLDEsMTUsMSwxOCwxLDE1LDEsMTMsMSwxMiwxLDEyLDEsCisgICAgMywxLDIwLDEsMTMsMSw1LDIsMTgsMSwxNSwxLDEzLDEsMTUsMSwKKyAgICAzLDEsMTgsMSwxMywxLDUsMiwxOCwxLDE1LDEsOSwxLDExNCwxNDEsCisgICAgMCwwLDAsOTksNCwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsCisgICAgNiwwLDAsMCw2NywwLDAsMCwxMTUsMTEyLDAsMCwwLDExNiwwLDAsCisgICAgMTA2LDEsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDQsMCwxMTYsMiwwLDEyNCwKKyAgICA0LDAsMTE2LDMsMCwxMzEsMiwwLDExNCw3NSwwLDExNiw0LDAsMTAwLDEsCisgICAgMCwxMjQsMiwwLDEzMSwyLDAsMSwxMjQsMywwLDEwMCwyLDAsMTA3LDksCisgICAgMCwxMTQsNzEsMCwxMTYsNSwwLDEwNiw2LDAsMTI0LDQsMCwxMjQsMywwLAorICAgIDEzMSwyLDAsMSwxMjQsNCwwLDgzLDExNiw3LDAsMTAwLDMsMCwxMDYsOCwKKyAgICAwLDEyNCwyLDAsMTMxLDEsMCwxMDAsNCwwLDEyNCwxLDAsMTAwLDUsMCwKKyAgICAxMjQsMiwwLDEzMSwxLDIsMTMwLDEsMCwxMDAsMiwwLDgzLDQxLDYsMTIyLAorICAgIDYwLDY3LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsCisgICAgMTAxLDMyLDk3LDExNSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDMyLDk4LDEyMSwKKyAgICAzMiw5NSwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwKKyAgICAxMTEsMTAwLDEwMSw5NSwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDQwLDQxLDQ2LDEyMiwyMSw5OSwKKyAgICAxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLDExNCwxMTEsMTA5LDMyLAorICAgIDEyMywzMywxMTQsMTI1LDc4LDEyMiwyMyw3OCwxMTEsMTEwLDQ1LDk5LDExMSwxMDAsMTAxLDMyLAorICAgIDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDExNCwxMDYsCisgICAgMCwwLDAsMTE0LDM1LDAsMCwwLDQxLDksMjE4LDcsMTA5LDk3LDExNCwxMTUsCisgICAgMTA0LDk3LDEwOCw5MCw1LDEwOCwxMTEsOTcsMTAwLDExNSwyMTgsMTAsMTA1LDExNSwxMDUsMTEwLAorICAgIDExNSwxMTYsOTcsMTEwLDk5LDEwMSwyMTgsMTAsOTUsOTksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwKKyAgICAxMTIsMTAxLDExNCwxMDUsMCwwLDAsMjE4LDQsOTUsMTA1LDEwOSwxMTIsOTAsMTYsOTUsCisgICAgMTAyLDEwNSwxMjAsOTUsOTksMTExLDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsCisgICAgMTA3LDAsMCwwLDExNCw0NywwLDAsMCw0MSw1LDExNCw1MywwLDAsMCwKKyAgICAxMTQsMTA2LDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsOTAsMCwwLDAsMjE4LAorICAgIDQsOTksMTExLDEwMCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMjE4LDE3LDk1LDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDk1LDk4LAorICAgIDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDIxNSwxLDAsMCwxMTUsMTYsMCwwLDAsCisgICAgMCwyLDE1LDEsMTUsMSwxMywxLDEyLDEsMTYsMSw0LDIsMTgsMSwKKyAgICAxMTQsMTQ3LDAsMCwwLDExNCw1OSwwLDAsMCw5OSwzLDAsMCwwLDAsCisgICAgMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICA3NiwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTMxLDEsMCwxMjUsMywwLAorICAgIDEyNCwzLDAsMTA2LDIsMCwxMTYsMywwLDEyNCwxLDAsMTMxLDEsMCwxMzEsCisgICAgMSwwLDEsMTI0LDMsMCwxMDYsMiwwLDExNiwzLDAsMTI0LDIsMCwxMzEsCisgICAgMSwwLDEzMSwxLDAsMSwxMjQsMywwLDEwNiwyLDAsMTE2LDQsMCwxMDYsCisgICAgNSwwLDEyNCwwLDAsMTMxLDEsMCwxMzEsMSwwLDEsMTI0LDMsMCw4MywKKyAgICA0MSwxLDEyMiw4MCw2NywxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwzMiw5NywzMiw5OSwxMTEsCisgICAgMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTA1LDExMCwxMTYsMTExLDMyLDk4LAorICAgIDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDExOSwxMTQsMTA1LDExNiwKKyAgICAxMDUsMTEwLDEwMywzMiwxMTEsMTE3LDExNiwzMiwxMTYsMTExLDMyLDk3LDMyLDk4LDEyMSwxMTYsCisgICAgMTAxLDQ1LDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDEwMCwxMCwzMiwzMiwzMiwzMiwxMDIsCisgICAgMTA1LDEwOCwxMDEsNDYsNDEsNiwyMTgsOSw5OCwxMjEsMTE2LDEwMSw5NywxMTQsMTE0LDk3LAorICAgIDEyMSwxMTQsMTM1LDAsMCwwLDIxOCw2LDEwMSwxMjAsMTE2LDEwMSwxMTAsMTAwLDExNCwxNywKKyAgICAwLDAsMCwxMTQsMTQyLDAsMCwwLDkwLDUsMTAwLDExNywxMDksMTEyLDExNSw0MSwKKyAgICA0LDExNCwxNDYsMCwwLDAsMTE0LDEzMywwLDAsMCwxMTQsMTQwLDAsMCwwLAorICAgIDExNCw1MywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwyMTgsMTcsOTUsOTksMTExLDEwMCwxMDEsOTUsMTE2LDExMSw5NSw5OCwKKyAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwyMjcsMSwwLDAsMTE1LDEwLDAsMCwwLAorICAgIDAsMywxMiwxLDE5LDEsMTksMSwyMiwxLDExNCwxNTAsMCwwLDAsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNCwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsODksMCwwLDAsMTAwLDEsMCwxMDAsMiwwLDEwOCwKKyAgICAwLDAsMTI1LDEsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LDAsMCwxMzEsMSwKKyAgICAwLDEwNiwzLDAsMTI1LDIsMCwxMjQsMSwwLDEwNiw0LDAsMTI0LDIsMCwKKyAgICAxMzEsMSwwLDEyNSwzLDAsMTE2LDEsMCwxMDYsNSwwLDEwMCwyLDAsMTAwLAorICAgIDMsMCwxMzEsMiwwLDEyNSw0LDAsMTI0LDQsMCwxMDYsNiwwLDEyNCwwLAorICAgIDAsMTA2LDYsMCwxMjQsMywwLDEwMCwxLDAsMjUsMTMxLDEsMCwxMzEsMSwKKyAgICAwLDgzLDQxLDQsMTIyLDEyMSw2OCwxMDEsOTksMTExLDEwMCwxMDEsMzIsOTgsMTIxLDExNiwKKyAgICAxMDEsMTE1LDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsMzIsOTcsMTEwLDEwMCwzMiwKKyAgICAxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTE2LDExNCwxMDUsMTEwLAorICAgIDEwMyw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NSwxMTAsMTA1LDExOCwxMDEsMTE0LDExNSw5NywKKyAgICAxMDgsMzIsMTEwLDEwMSwxMTksMTA4LDEwNSwxMTAsMTAxLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LAorICAgIDExNiwzMiwxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwMCwxMDEsOTksMTExLDEwMCwxMDUsMTEwLDEwMyw0NiwxMCwzMiwzMiwzMiwzMiwxMTQsCisgICAgNTksMCwwLDAsNzgsODQsNDEsNywyMTgsOCwxMTYsMTExLDEwNywxMDEsMTEwLDEwNSwKKyAgICAxMjIsMTAxLDExNCw0OSwwLDAsMCw5MCw3LDY2LDEyMSwxMTYsMTAxLDExNSw3Myw3OSwKKyAgICA5MCw4LDExNCwxMDEsOTcsMTAwLDEwOCwxMDUsMTEwLDEwMSw5MCwxNSwxMDAsMTAxLDExNiwxMDEsCisgICAgOTksMTE2LDk1LDEwMSwxMTAsOTksMTExLDEwMCwxMDUsMTEwLDEwMyw5MCwyNSw3MywxMTAsOTksCisgICAgMTE0LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTA4LDc4LDEwMSwxMTksMTA4LDEwNSwxMTAsMTAxLDY4LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMjE4LDYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSw0MSw1LAorICAgIDIxOCwxMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDExNSwxMTQsMTUxLAorICAgIDAsMCwwLDkwLDIxLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsOTgsMTIxLDExNiwxMDEsCisgICAgMTE1LDk1LDExNCwxMDEsOTcsMTAwLDEwOCwxMDUsMTEwLDEwMSwyMTgsOCwxMDEsMTEwLDk5LDExMSwKKyAgICAxMDAsMTA1LDExMCwxMDMsOTAsMTUsMTEwLDEwMSwxMTksMTA4LDEwNSwxMTAsMTAxLDk1LDEwMCwxMDEsCisgICAgOTksMTExLDEwMCwxMDEsMTE0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDIxOCwxMywxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDk1LDExNSwxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsMjM3LDEsMCwwLDExNSwxMCwwLDAsMCwwLDUsMTIsMSwKKyAgICAxOCwxLDE1LDEsMTgsMSwxMTQsMTU1LDAsMCwwLDExNCwxMjcsMCwwLDAsCisgICAgMjE4LDI2LDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsCisgICAgOTksMTA0LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSw5OSwyLDAsMCwKKyAgICAwLDIsMCwwLDAsOSwwLDAsMCwxOSwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsODksMSwwLDAsMTI0LDEsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LAorICAgIDczLDAsMTAwLDIsMCwxMjUsMSwwLDExNiwwLDAsMTI0LDIsMCwxMDAsMywKKyAgICAwLDEzMSwyLDAsMTE0LDczLDAsMTIxLDE5LDAsMTI0LDIsMCwxMDYsMSwwLAorICAgIDEyNCwwLDAsMTMxLDEsMCwxMjUsMSwwLDg3LDExMCwxOCwwLDQsMTE2LDIsCisgICAgMCwxMDcsMTAsMCwxMTQsNzIsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDExNiwKKyAgICAzLDAsMTA2LDQsMCwxMjQsMCwwLDEyNCwyLDAsMTAwLDQsMCwxMjQsMSwKKyAgICAwLDEzMSwyLDEsMTI1LDQsMCwxMDAsNSwwLDEyNCw0LDAsOTUsNSwwLAorICAgIDEyNCwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwxOTQsMCwxMjAsNzMsMCwxMTYsCisgICAgNiwwLDEzMSwwLDAsNjgsOTMsNTgsMCw5MiwyLDAsMTI1LDUsMCwxMjUsCisgICAgNiwwLDEyNCwxLDAsMTA2LDcsMCwxMTYsOCwwLDEyNCw2LDAsMTMxLDEsCisgICAgMCwxMzEsMSwwLDExNCwxMjgsMCwxMjQsNSwwLDEyNCwwLDAsMTI0LDEsMCwKKyAgICAxMzEsMiwwLDEyNSwyLDAsMTI0LDIsMCwxMjQsNCwwLDk1LDksMCw4MCwKKyAgICAxMTMsMTI4LDAsODcsMTAwLDEsMCw4MywxMjQsMywwLDExNiwxMCwwLDEwNyw4LAorICAgIDAsMTE0LDIzLDEsMTE2LDAsMCwxMjQsMiwwLDEwMCw2LDAsMTMxLDIsMCwKKyAgICAxMTQsMzIsMSwxMjEsMTksMCwxMjQsMiwwLDEwNiwxMSwwLDEyNCwwLDAsMTMxLAorICAgIDEsMCwxMjUsNywwLDg3LDExMCwxOCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwKKyAgICAxMTQsNCwxLDEsMSwxLDg5LDExMywzMiwxLDg4LDEyNCw3LDAsMTE0LDMyLAorICAgIDEsMTAzLDAsMCwxMjQsNCwwLDk1LDEyLDAsMTEwLDksMCwxMjQsMywwLAorICAgIDEyNCw0LDAsOTUsMTIsMCwxMjQsNCwwLDEwNiwxMiwwLDEwMywwLDAsMTA3LAorICAgIDIsMCwxMTQsODUsMSwxMjQsMSwwLDExNCw4NSwxLDExNiwxMywwLDEyNCwxLAorICAgIDAsMTMxLDEsMCwxMDAsNywwLDI1LDEyNSw4LDAsMTI0LDQsMCwxMDYsMTIsCisgICAgMCwxMDYsMTQsMCwxMjQsOCwwLDEzMSwxLDAsMSwxMjQsNCwwLDgzLDQxLAorICAgIDgsOTcsNjEsMSwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5OCw5NywxMTUsMTAxLDEwMCwKKyAgICAzMiwxMTEsMTEwLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsMTExLDk5LDk3LDExNiwKKyAgICAxMDUsMTExLDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMTEsMzIsMTA1LDExMCwxMDAsCisgICAgMTA1LDk5LDk3LDExNiwxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsNDQsMzIsMTE1LDEwMSwxMTYsMTAsMzIsMzIsMzIsMzIsMTE1LDExNyw5OCwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMzIsMTA4LDEwNSwxMTUsMTE2LAorICAgIDMyLDExMSwxMDIsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMTIsOTcsCisgICAgMTE2LDEwNCwxMTUsNDYsMzIsMzIsNjUsMTEwLDEwLDMyLDMyLDMyLDMyLDEwMSwxMDksMTEyLAorICAgIDExNiwxMjEsMzIsMTA4LDEwNSwxMTUsMTE2LDMyLDEwNSwxMTUsMzIsMTE1LDExNywxMDIsMTAyLDEwNSwKKyAgICA5OSwxMDUsMTAxLDExMCwxMTYsNDQsMzIsMTE2LDEwNCwxMTEsMTE3LDEwMywxMDQsMzIsMTA1LDExNiwKKyAgICAxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTExLDExNiwxMDQsMTAxLDExNCwxMTksMTA1LDExNSwxMDEsMzIsCisgICAgMTE3LDExNSwxMDEsMTAyLDExNywxMDgsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSw0NiwKKyAgICAxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgMzIsMTA5LDExNywxMTUsMTE2LDMyLDExNiw5NywxMDcsMTAxLDMyLDk3LDMyLDExNSwxMTIsMTAxLAorICAgIDk5LDMyLDk3LDExNSwzMiwxMDUsMTE2LDExNSwzMiwxMTEsMTEwLDEwOCwxMjEsMzIsOTUsOTUsCisgICAgMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQwLDQxLDMyLDk3LDExNCwxMDMsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsNzgsMTIyLDksNjAsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDYyLDIxOCwKKyAgICAxMiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMjE4LDYsMTExLAorICAgIDExNCwxMDUsMTAzLDEwNSwxMTAsODQsMjE4LDEwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDExNCw1OSwwLDAsMCw0MSwxNSwxMTQsMTE1LDAsMCwwLDExNCwxNTcsCisgICAgMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTIxLDAsMCwwLDIxOCwxMCw3NywKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksOTAsMTMsOTUsMTE1LDEwMSwxMTYsOTUsCisgICAgMTAyLDEwNSwxMDgsMTAxLDk3LDExNiwxMTYsMTE0LDIxOCwyNyw5NSwxMDMsMTAxLDExNiw5NSwxMTUsCisgICAgMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwxMTUsMTE0LDkyLDAsMCwwLDExNCw5MywwLDAsMCwxMTQsCisgICAgMTI3LDAsMCwwLDIxOCw5LDk1LDgwLDc5LDgwLDg1LDc2LDY1LDg0LDY5LDExNCwKKyAgICAxNTksMCwwLDAsMTE0LDE1NiwwLDAsMCwxMTQsMzgsMCwwLDAsMjE4LDYsCisgICAgOTcsMTEyLDExMiwxMDEsMTEwLDEwMCw0MSw5LDExNCwxMDYsMCwwLDAsOTAsOCwxMDgsCisgICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsMTI3LDAsMCwwLDExNCwxNTYsMCwwLAorICAgIDAsMjE4LDQsMTE1LDExMiwxMDEsOTksMjE4LDEyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsCisgICAgOTksMTA4LDk3LDExNSwxMTUsMjE4LDgsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwxMTQsCisgICAgMTU5LDAsMCwwLDkwLDcsMTAwLDEwNSwxMTQsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDIzLDExNSwxMTIsCisgICAgMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMjU0LDEsMCwwLDExNSw2MCwwLDAsMCwwLDEyLAorICAgIDEyLDQsNiwxLDE1LDIsMywxLDE5LDEsMTMsMSw1LDgsMjQsMSwKKyAgICA5LDMsMTIsMSwyMiwxLDIxLDEsMTUsMSw5LDEsNSwyLDQsMywKKyAgICAxMiwyLDE1LDEsMywxLDE5LDEsMTMsMSw1LDIsNiwxLDEyLDIsCisgICAgOSwxLDE1LDEsNiwxLDE2LDEsMTYsMiwxMTQsMTY3LDAsMCwwLDk5LAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsCisgICAgNjQsMCwwLDAsMTE1LDEyMSwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsCisgICAgMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDkwLDQsCisgICAgMCwxMDAsMywwLDkwLDUsMCwxMDAsNCwwLDkwLDYsMCwxMDEsNywwLAorICAgIDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDEzMSwxLDAsOTAsOCwwLDEwMSwKKyAgICA3LDAsMTAwLDcsMCwxMDAsOCwwLDEzMiwwLDAsMTMxLDEsMCw5MCw5LAorICAgIDAsMTAxLDcsMCwxMDAsOSwwLDEwMCw5LDAsMTAwLDEwLDAsMTAwLDExLDAsCisgICAgMTMyLDIsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLDcsMCwxMDAsOSwwLDEwMCwKKyAgICAxMiwwLDEwMCwxMywwLDEzMiwxLDAsMTMxLDEsMCw5MCwxMSwwLDEwMCw5LAorICAgIDAsODMsNDEsMTQsMjE4LDIxLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsCisgICAgMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiw2Miw3NywxMDEsMTE2LAorICAgIDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTAxLDk5LDEwOCw5NywxMTQsCisgICAgMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksCisgICAgMTE1LDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsMTIyLDU5LDgzLDExMSwxMDIsCisgICAgMTE2LDExOSw5NywxMTQsMTAxLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsOTIsODAsMTIxLDExNiwKKyAgICAxMDQsMTExLDExMCw2NywxMTEsMTE0LDEwMSw5MiwxMjMsMTE1LDEyMSwxMTUsOTUsMTE4LDEwMSwxMTQsCisgICAgMTE1LDEwNSwxMTEsMTEwLDEyNSw5Miw3NywxMTEsMTAwLDExNywxMDgsMTAxLDExNSw5MiwxMjMsMTAyLAorICAgIDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDEyNSwxMjIsNjUsODMsMTExLDEwMiwxMTYsMTE5LDk3LAorICAgIDExNCwxMDEsOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw5Miw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLAorICAgIDY3LDExMSwxMTQsMTAxLDkyLDEyMywxMTUsMTIxLDExNSw5NSwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwKKyAgICAxMTAsMTI1LDkyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDkyLDEyMywxMDIsMTE3LDEwOCwxMDgsCisgICAgMTEwLDk3LDEwOSwxMDEsMTI1LDkyLDY4LDEwMSw5OCwxMTcsMTAzLDcwLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw2NywwLDAsMCwxMjEsMjMsMCwxMTYsMCwwLDEwNiwxLDAsMTE2LAorICAgIDAsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDIsMCw4Myw4NywxMTAsMzcsMCwKKyAgICA0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDYyLDAsMSwxLDEsMTE2LDAsMCwKKyAgICAxMDYsMSwwLDExNiwwLDAsMTA2LDQsMCwxMjQsMSwwLDEzMSwyLDAsODMsCisgICAgODksMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsNSwyMTgsNywKKyAgICA5NSwxMTksMTA1LDExMCwxMTQsMTAxLDEwMyw5MCw3LDc5LDExMiwxMDEsMTEwLDc1LDEwMSwxMjEsCisgICAgOTAsMTcsNzIsNzUsNjksODksOTUsNjcsODUsODIsODIsNjksNzgsODQsOTUsODUsCisgICAgODMsNjksODIsMTE0LDQwLDAsMCwwLDkwLDE4LDcyLDc1LDY5LDg5LDk1LDc2LAorICAgIDc5LDY3LDY1LDc2LDk1LDc3LDY1LDY3LDcyLDczLDc4LDY5LDQxLDIsMjE4LDMsCisgICAgOTksMTA4LDExNSwyMTgsMywxMDcsMTAxLDEyMSwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNSwwLDAsMCwyMTgsMTQsOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwKKyAgICAxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzYsMiwwLDAsMTE1LDgsMCwwLDAsCisgICAgMCwyLDMsMSwyMywxLDEzLDEsMTIyLDM2LDg3LDEwNSwxMTAsMTAwLDExMSwxMTksCisgICAgMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LAorICAgIDk1LDExMSwxMTIsMTAxLDExMCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDE2LDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxNDMsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDExNCwyMSwKKyAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMjUsMiwwLDExMCw5LDAsMTI0LDAsMCwKKyAgICAxMDYsMiwwLDEyNSwyLDAsMTI0LDIsMCwxMDYsMywwLDEwMCwxLDAsMTI0LAorICAgIDEsMCwxMDAsMiwwLDExNiw0LDAsMTA2LDUsMCwxMDAsMCwwLDEwMCwzLAorICAgIDAsMTMzLDIsMCwyNSwxMzEsMCwyLDEyNSwzLDAsMTIxLDQ3LDAsMTI0LDAsCisgICAgMCwxMDYsNiwwLDEyNCwzLDAsMTMxLDEsMCwxNDMsMjUsMCwxMjUsNCwwLAorICAgIDExNiw3LDAsMTA2LDgsMCwxMjQsNCwwLDEwMCw0LDAsMTMxLDIsMCwxMjUsCisgICAgNSwwLDg3LDEwMCwwLDAsODEsODIsODgsODcsMTEwLDIyLDAsNCwxMTYsOSwKKyAgICAwLDEwNywxMCwwLDExNCwxMzgsMCwxLDEsMSwxMDAsMCwwLDgzLDg5LDExMCwKKyAgICAxLDAsODgsMTI0LDUsMCw4Myw0MSw1LDc4LDExNCwxMjYsMCwwLDAsOTAsCisgICAgMTEsMTE1LDEyMSwxMTUsOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDExNCw4MCwwLDAsCisgICAgMCwxMTQsMzAsMCwwLDAsNDEsMTAsMjE4LDExLDY4LDY5LDY2LDg1LDcxLDk1LAorICAgIDY2LDg1LDczLDc2LDY4LDIxOCwxOCw4Miw2OSw3MSw3Myw4Myw4NCw4Miw4OSw5NSwKKyAgICA3NSw2OSw4OSw5NSw2OCw2OSw2Niw4NSw3MSwyMTgsMTIsODIsNjksNzEsNzMsODMsCisgICAgODQsODIsODksOTUsNzUsNjksODksMTE0LDQ3LDAsMCwwLDExNCw3LDAsMCwKKyAgICAwLDIxOCw3LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMTQsMTcyLDAsMCwwLDExNCwKKyAgICAxNjksMCwwLDAsOTAsMTAsODEsMTE3LDEwMSwxMTQsMTIxLDg2LDk3LDEwOCwxMTcsMTAxLAorICAgIDExNCw0MCwwLDAsMCw0MSw2LDExNCwxNzAsMCwwLDAsMTE0LDEyNiwwLDAsCisgICAgMCw5MCwxMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk1LDEwNywxMDEsMTIxLDExNCwKKyAgICAxNzEsMCwwLDAsOTAsNCwxMDQsMTA3LDEwMSwxMjEsMjE4LDgsMTAyLDEwNSwxMDgsMTAxLAorICAgIDExMiw5NywxMTYsMTA0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAorICAgIDAsMCwwLDIxOCwxNiw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTE0LDEwMSwxMDMsCisgICAgMTA1LDExNSwxMTYsMTE0LDEyMSw4MywyLDAsMCwxMTUsMjIsMCwwLDAsMCwyLAorICAgIDksMSwxMiwyLDksMSwxNSwxLDIyLDEsMywxLDE4LDEsMjksMSwKKyAgICAxMywxLDksMSwxMjIsMzgsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywKKyAgICAxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTE1LDEwMSw5NywKKyAgICAxMTQsOTksMTA0LDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzgsOTksNCwwLAorICAgIDAsMCwwLDAsMCwwLDgsMCwwLDAsMTQsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDE1OCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwKKyAgICAxMzEsMSwwLDEyNSw0LDAsMTI0LDQsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LAorICAgIDMxLDAsMTAwLDAsMCw4MywxMjEsMTQsMCwxMTYsMSwwLDEyNCw0LDAsMTMxLAorICAgIDEsMCwxLDg3LDExMCwyMiwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNjksCisgICAgMCwxLDEsMSwxMDAsMCwwLDgzLDg5LDExMCwxLDAsODgsMTIwLDgxLDAsCisgICAgMTE2LDMsMCwxMzEsMCwwLDY4LDkzLDcwLDAsOTIsMiwwLDEyNSw1LDAsCisgICAgMTI1LDYsMCwxMjQsNCwwLDEwNiw0LDAsMTE2LDUsMCwxMjQsNiwwLDEzMSwKKyAgICAxLDAsMTMxLDEsMCwxMTQsODAsMCwxMTYsNiwwLDEwNiw3LDAsMTI0LDEsCisgICAgMCwxMjQsNSwwLDEyNCwxLDAsMTI0LDQsMCwxMzEsMiwwLDEwMCwxLDAsCisgICAgMTI0LDQsMCwxMzEsMiwxLDEyNSw3LDAsMTI0LDcsMCw4MywxMTMsODAsMCwKKyAgICA4NywxMDAsMCwwLDgzLDQxLDIsNzgsMTE0LDE1OCwwLDAsMCw0MSw4LDExNCwKKyAgICAxNzgsMCwwLDAsMTE0LDM5LDAsMCwwLDExNCw0MCwwLDAsMCwxMTQsMTYxLAorICAgIDAsMCwwLDExNCw5MiwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDEyMSwwLAorICAgIDAsMCwyMTgsMTYsMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDEsOCwxMTQsMTcwLDAsMCwwLDExNCwxMjYsMCwwLDAsCisgICAgMTE0LDM1LDAsMCwwLDIxOCw2LDExNiw5NywxMTQsMTAzLDEwMSwxMTYsMTE0LDE3NywwLAorICAgIDAsMCwxMTQsMTI3LDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LDE2NCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKKyAgICAyMTgsOSwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTgsMiwwLDAsMTE1LAorICAgIDI2LDAsMCwwLDAsMiwxNSwxLDEyLDEsNCwxLDMsMSwxNCwxLAorICAgIDEzLDEsOSwxLDIyLDEsMjEsMSw5LDEsMTUsMSw5LDEsMTIyLDMxLAorICAgIDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwKKyAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwKKyAgICAzLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw0NSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LAorICAgIDEsMCwxMjQsMiwwLDEzMSwyLDAsMTI1LDMsMCwxMjQsMywwLDEwMCwxLAorICAgIDAsMTA3LDksMCwxMTQsMzcsMCwxMjQsMywwLDEwNiwxLDAsODMsMTAwLDEsCisgICAgMCw4MywxMDAsMSwwLDgzLDQxLDIsMTIyLDEwOCw3MCwxMDUsMTEwLDEwMCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsCisgICAgMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwKKyAgICAzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDIsMTE0LDE4MSwwLDAsMCwxMTQsMTI3LAorICAgIDAsMCwwLDQxLDQsMTE0LDE3MCwwLDAsMCwxMTQsMTI2LDAsMCwwLDExNCwKKyAgICAzNSwwLDAsMCwxMTQsMTY0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDIsMCwwLDExNSw4LDAsMCwwLDAsNywKKyAgICAxOCwxLDEyLDEsNywyLDEyMiwzMyw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwKKyAgICAxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LAorICAgIDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDEsMTIsMTE0LDExMiwwLDAsMCwKKyAgICAxMTQsMTExLDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNCwwLDAsMCwxMTQsCisgICAgMTc1LDAsMCwwLDExNCwxNzQsMCwwLDAsMTE0LDE3MywwLDAsMCwyMTgsMTEsCisgICAgOTksMTA4LDk3LDExNSwxMTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE0LDE3MiwwLDAsMCwKKyAgICAxMTQsMTc4LDAsMCwwLDExNCwxODEsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKKyAgICAwLDAsMCwxMTQsMTY4LDAsMCwwLDY0LDIsMCwwLDExNSwyMCwwLDAsCisgICAgMCwxMiwyLDYsMyw2LDMsNiwyLDYsMiwxOCw3LDE4LDE1LDMsCisgICAgMSwyMSwxNSwzLDEsMTE0LDE2OCwwLDAsMCw5OSwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKKyAgICA3MCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKKyAgICAxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCwKKyAgICA0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LAorICAgIDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDEwMCw5LDAsCisgICAgMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsODMsNDEsMTEsMjE4LDEzLDk1LDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSwxMjIsODMsNjYsOTcsMTE1LAorICAgIDEwMSwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTAyLDMyLDk5LDExMSwxMDksMTA5LDExMSwKKyAgICAxMTAsMzIsOTksMTExLDEwMCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsOTgsMTIxLAorICAgIDMyLDk4LDExMSwxMTYsMTA0LDMyLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMzIsOTcsMTEwLDEwMCwxMCwzMiwzMiwzMiwzMiw4MywxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwzLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSw4OCwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsCisgICAgMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTMxLDEsMCwxMDAsMSwwLDI1LAorICAgIDEyNSwyLDAsMTI0LDIsMCwxMDYsMiwwLDEwMCwyLDAsMTAwLDEsMCwxMzEsCisgICAgMiwwLDEwMCwzLDAsMjUsMTI1LDMsMCwxMjQsMSwwLDEwNiwzLDAsMTAwLAorICAgIDIsMCwxMzEsMSwwLDEwMCw0LDAsMjUsMTI1LDQsMCwxMjQsMywwLDEwMCwKKyAgICA1LDAsMTA3LDIsMCwxMTEsODcsMCwxMjQsNCwwLDEwMCw1LDAsMTA3LDMsCisgICAgMCw4Myw0MSw2LDEyMiwxNDEsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsCisgICAgMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LAorICAgIDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsOTgsMTIxLDMyLDk5LDEwNCwxMDEsCisgICAgOTksMTA3LDEwNSwxMTAsMTAzLDMyLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsCisgICAgMTAxLDEwMCwzMiw5OCwxMjEsMzIsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywKKyAgICAxMDksMTAxLDMyLDEwNCw5NywxMTUsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksCisgICAgMTAxLDMyLDExMSwxMDIsMzIsMzksOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQ2LDExMiwKKyAgICAxMjEsMzksNDYsMTE0LDI5LDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNTksMCwKKyAgICAwLDAsMTE0LDU2LDAsMCwwLDIxOCw4LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSwKKyAgICA5NSw0MSw0LDExNCwzOCwwLDAsMCwxMTQsMTU3LDAsMCwwLDExNCwzNCwwLAorICAgIDAsMCwxMTQsMzIsMCwwLDAsNDEsNSwxMTQsMTA4LDAsMCwwLDExNCwxMjYsCisgICAgMCwwLDAsMTE0LDk0LDAsMCwwLDkwLDEzLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsCisgICAgMTA5LDEwMSw5NSw5OCw5NywxMTUsMTAxLDkwLDksMTE2LDk3LDEwNSwxMDgsOTUsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAorICAgIDAsMTE0LDE1OSwwLDAsMCwxMzMsMiwwLDAsMTE1LDgsMCwwLDAsMCwKKyAgICAzLDI1LDEsMjIsMSwxOSwxLDEyMiwyNCw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNjYsOTcsMTE1LDEwNSw5OSwxMTUsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywKKyAgICAxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLAorICAgIDIsMTIyLDQyLDg1LDExNSwxMDEsMzIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsMzIsMTE1LAorICAgIDEwMSwxMDksOTcsMTEwLDExNiwxMDUsOTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDc4LDExNCw0LAorICAgIDAsMCwwLDQxLDIsMTE0LDEwOCwwLDAsMCwxMTQsMTY0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMywKKyAgICA5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTQxLDIsMCwKKyAgICAwLDExNSwwLDAsMCwwLDEyMiwyNyw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsCisgICAgOTcsMTE1LDEwNSw5OSwxMTUsNDYsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLAorICAgIDQsMCwwLDAsNjcsMCwwLDAsMTE1LDgwLDAsMCwwLDEyNCwwLDAsCisgICAgMTA2LDAsMCwxMjQsMSwwLDEwNiwxLDAsMTMxLDEsMCwxMjUsMiwwLDEyNCwKKyAgICAyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCw1NCwwLDExNiwyLDAsMTAwLDIsCisgICAgMCwxMDYsMywwLDEyNCwxLDAsMTA2LDEsMCwxMzEsMSwwLDEzMSwxLDAsCisgICAgMTMwLDEsMCwxMTYsNCwwLDEwNiw1LDAsMTE2LDYsMCwxMjQsMiwwLDEyNCwKKyAgICAxLDAsMTA2LDcsMCwxMzEsMywwLDEsMTAwLDEsMCw4Myw0MSwzLDEyMiwKKyAgICAxOSw2OSwxMjAsMTAxLDk5LDExNywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDQ2LDc4LDEyMiw1Miw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTA4LDExMSwKKyAgICA5NywxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTE5LAorICAgIDEwNCwxMDEsMTEwLDMyLDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDQwLDQxLDMyLDExNCwKKyAgICAxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw3OCwxMTEsMTEwLDEwMSw0MSw4LDIxOCw4LDEwMywKKyAgICAxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDExNCwxMTIsMCwwLDAsMTE0LDEwNywwLDAsCisgICAgMCwxMTQsNDcsMCwwLDAsMTE0LDEyMSwwLDAsMCwyMTgsMjUsOTUsOTksOTcsCisgICAgMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsCisgICAgMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMjE4LDQsMTAxLDEyMCwxMDEsOTksMTE0LDExOCwwLDAsCisgICAgMCw0MSwzLDExNCwxMDgsMCwwLDAsMjE4LDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTE0LDE0NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwyMTgsMTEsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTQ0LDIsMCwwLDExNSwxMCwwLDAsMCwwLDIsMTgsMSwxMiwxLAorICAgIDksMSwxNSwxLDEyMiwyNSw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LAorICAgIDEwNSw5OSwxMTUsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwKKyAgICAwLDAsMTI0LDEsMCwxMzEsMiwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsMTIxLAorICAgIDAsMCwwLDIxOCwxNyw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5NSwxMTUsMTA0LDEwNSwxMDksNDEsMiwxMTQsMTA4LDAsMCwwLDExNCwxMjYsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAorICAgIDAsMjE4LDExLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE1MiwyLAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI1LDk1LDc2LDExMSw5NywxMDAsCisgICAgMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw3OCw0MSw4LDExNCwxMTIsMCwwLDAsMTE0LDExMSwwLDAsCisgICAgMCwxMTQsMTEzLDAsMCwwLDExNCwxMTQsMCwwLDAsMTE0LDE1OSwwLDAsMCwKKyAgICAxMTQsMTg2LDAsMCwwLDExNCwxOTEsMCwwLDAsMTE0LDE5MywwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKKyAgICAwLDAsMCwxMTQsMTg0LDAsMCwwLDEyOCwyLDAsMCwxMTUsMTAsMCwwLAorICAgIDAsMTIsMyw2LDIsMTIsOCwxMiwzLDEyLDgsMTE0LDE4NCwwLDAsMCwKKyAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0LDAsMCwKKyAgICAwLDY0LDAsMCwwLDExNSwxMDYsMCwwLDAsMTAxLDAsMCw5MCwxLDAsCisgICAgMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsCisgICAgMywwLDEwMCwzLDAsMTAwLDQsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNSwKKyAgICAwLDEwMCw2LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDcsMCwxMDAsOCwwLAorICAgIDEzMiwwLDAsOTAsNiwwLDEwMCw5LDAsMTAwLDEwLDAsMTMyLDAsMCw5MCwKKyAgICA3LDAsMTAwLDExLDAsMTAwLDE4LDAsMTAwLDEzLDAsMTAwLDE0LDAsMTMyLDAsCisgICAgMSw5MCw4LDAsMTAwLDE1LDAsMTAwLDE2LDAsMTMyLDAsMCw5MCw5LDAsCisgICAgMTAwLDE3LDAsODMsNDEsMTksMjE4LDEyLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsMTAsMCwwLDAsMTE2LDAsCisgICAgMCwxMzAsMSwwLDEwMCwxLDAsODMsNDEsMiwxMjIsMTc4LDc5LDExMiwxMTYsMTA1LAorICAgIDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExNiwxMDQsOTcsMTE2LAorICAgIDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwKKyAgICAxMDUsMTAyLDEwNSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDEwNSwxMDksMTAxLDMyLDQwLAorICAgIDk3LDExMCwzMiwxMDUsMTEwLDExNiw0MSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwxMCwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsCisgICAgMTAwLDMyLDExMiw5NywxMTYsMTA0LDQ0LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsMzIsMTA1LDExNSwzMiw5NywzMiwxMTUsMTE2LDExNCw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiw4Miw5NywxMDUsMTE1LDEwMSwxMTUsMzIsNzMsNzksNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsCisgICAgMTE2LDEwNCwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTgsMTAxLDMyLDEwNCw5NywxMTAsCisgICAgMTAwLDEwOCwxMDEsMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLAorICAgIDEsMjE4LDcsNzMsNzksNjksMTE0LDExNCwxMTEsMTE0LDQxLDIsMTE0LDEwOCwwLDAsCisgICAgMCwxMTQsMzUsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDUsMCwwLDAsMjE4LDEwLDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwKKyAgICAxMDEsMTU4LDIsMCwwLDExNSwyLDAsMCwwLDAsNiwxMjIsMjMsODMsMTExLAorICAgIDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICAxMDksMTE2LDEwNSwxMDksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LDAsMCwwLDEwMCwKKyAgICAxLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMDUsMSwKKyAgICAwLDgzLDQxLDIsOTcsMTcwLDEsMCwwLDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsCisgICAgMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwNSwKKyAgICAxMTAsMTAzLDMyLDk3LDMyLDEwOSwxMDEsMTE2LDk3LDEwMCw5NywxMTYsOTcsMzIsMTAwLDEwNSwKKyAgICA5OSwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LAorICAgIDEwMiwxMDUsMTAxLDEwMCwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwxMTYsMTExLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiw0MCwxMTUsMTE2LDExNCw0MSw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICA4MCwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSwzMiwxMDcsMTAxLDEyMSwxMTUsNTgsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDUsMzIsMzksMTA5LDExNiwxMDUsMTA5LDEwMSwzOSwKKyAgICAzMiw0MCwxMDksOTcsMTEwLDEwMCw5NywxMTYsMTExLDExNCwxMjEsNDEsMzIsMTA1LDExNSwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwzMiwxMTYsMTA1LDEwOSwxMDEsCisgICAgMTE1LDExNiw5NywxMDksMTEyLDMyLDExMSwxMDIsMzIsMTA4LDk3LDExNSwxMTYsMzIsMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OSwKKyAgICAxMTEsMTAwLDEwMSwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEwNSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgNTksMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDUsMzIsMzksMTE1LDEwNSwxMjIsCisgICAgMTAxLDM5LDMyLDQwLDExMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCw0MSwzMiwxMDUsMTE1LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMDUsMTIyLDEwMSwzMiwxMDUsMTEwLDMyLDk4LDEyMSwxMTYsCisgICAgMTAxLDExNSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgMzIsOTksMTExLDEwMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwNSwKKyAgICAxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTE0LDEwMSwKKyAgICA5NywxMDAsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLAorICAgIDExNSw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4Miw5NywxMDUsMTE1LDEwMSwKKyAgICAxMTUsMzIsNzMsNzksNjksMTE0LDExNCwxMTEsMTE0LDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTgsCisgICAgMTAxLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDExNCwxMzMsMCwwLDAsNDEsMSwxMTQsMTk2LDAsMCwwLDQxLAorICAgIDIsMTE0LDEwOCwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEwLDExMiw5NywxMTYsMTA0LAorICAgIDk1LDExNSwxMTYsOTcsMTE2LDExNSwxNjYsMiwwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICAxMSwxMjIsMjMsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsOTksNCwwLDAsMCwwLAorICAgIDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTYsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwyLDAsMTI0LDMsMCwKKyAgICAxMzEsMiwwLDgzLDQxLDEsMTIyLDIyOCw3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwKKyAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LDExNCwKKyAgICAxMDUsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiw5NywzMiw0MCw5OCwxMjEsMTE2LDEwMSwxMTUsCisgICAgNDEsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsNDAsOTcsMzIsMTE1LDExNiwxMTQsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwKKyAgICAxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwxMTEsCisgICAgMTE5LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LAorICAgIDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsCisgICAgMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LAorICAgIDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsCisgICAgMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTExLDExNCwxMDAsMTAxLAorICAgIDExNCwzMiwxMTYsMTExLDMyLDk5LDExMSwxMTQsMTE0LDEwMSw5OSwxMTYsMTA4LDEyMSwzMiwxMTYsCisgICAgMTE0LDk3LDExMCwxMTUsMTAyLDEwMSwxMTQsMzIsMTEyLDEwMSwxMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwKKyAgICAxMTEsMTEwLDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0MSwxLDIxOCw4LAorICAgIDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDEsNCwxMTQsMTA4LDAsMCwwLDExNCwKKyAgICA5MCwwLDAsMCw5MCwxMCw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExMiw5NywxMTYsMTA0LAorICAgIDExNCw1MywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwyMTgsMTUsOTUsOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwxNzksMiwwLDAsMTE1LDIsMCwwLDAsMCw4LAorICAgIDEyMiwyOCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTksMywKKyAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMSwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDE1MCwKKyAgICA3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwKKyAgICAxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiwKKyAgICA5NywzMiw0MCw5OCwxMjEsMTE2LDEwMSwxMTUsNDEsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsCisgICAgMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsNDAsOTcsMzIsMTE1LDExNiwxMTQsNDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwxMDgsMTAxLAorICAgIDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsCisgICAgMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwxMjEsCisgICAgMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDc4LDExNCw0LDAsMCwwLDQxLDMsMTE0LDEwOCwKKyAgICAwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDUzLDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxOTgsMCwwLAorICAgIDAsMTg5LDIsMCwwLDExNSwwLDAsMCwwLDEyMiwyMSw4MywxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsCisgICAgOTcsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsMTYsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDEwNSwwLDAsMCwxMjQsMCwwLDEwNiwwLAorICAgIDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTIxLDE5LDAsMTI0LDAsMCwKKyAgICAxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLDg3LDExMCw1OCwwLAorICAgIDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsOTQsMCwxLDEyNSw0LDAsMSwxMjIsCisgICAgMjYsMCwxMTYsMywwLDEwMCwxLDAsMTAwLDIsMCwxMjQsMSwwLDEzMSwxLAorICAgIDEsMTI0LDQsMCwxMzAsMiwwLDg3LDg5LDEwMCwzLDAsMTAwLDMsMCwxMjUsCisgICAgNCwwLDEyNiw0LDAsODgsMTEwLDEsMCw4OCwxMTYsNCwwLDEyNCwzLDAsCisgICAgMTMxLDEsMCw4Myw0MSw0LDEyMiw1Miw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwKKyAgICAzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsCisgICAgMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDQ2LDEyMiwzOSwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDMyLDExMCwxMTEsMTE2LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LAorICAgIDEwOCwxMDEsMzIsMTE2LDEwNCwxMTQsMTExLDExNywxMDMsMTA0LDMyLDEwMywxMDEsMTE2LDk1LDEwMCwKKyAgICA5NywxMTYsOTcsNDAsNDEsMTE0LDEwNiwwLDAsMCw3OCw0MSw1LDExNCwxNTcsMCwKKyAgICAwLDAsMjE4LDgsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywxMTQsNDAsMCwwLAorICAgIDAsMTE0LDEwNywwLDAsMCwxMTQsMTU1LDAsMCwwLDQxLDUsMTE0LDEwOCwwLAorICAgIDAsMCwxMTQsMTI2LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMTUzLDAsMCwKKyAgICAwLDIxOCwzLDEwMSwxMjAsOTksMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDUsMCwwLDAsMjE4LDEwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsMTk2LDIsMCwwLDExNSwxNCwwLDAsMCwwLDIsMTUsMSwzLDEsCisgICAgMTksMSwxOCwxLDksMSwzMSwxLDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsMjE4LDksOTUsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDEwMSwxMTQsMjksMCwwLAorICAgIDAsOTksMywwLDAsMCwxLDAsMCwwLDQsMCwwLDAsOSwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMzQsMCwwLDAsMTE2LDAsMCwxMDYsMSwKKyAgICAwLDExNiwyLDAsMTI0LDEsMCwxMjQsMiwwLDEwMCwxLDAsMTAwLDIsMCwKKyAgICAxMDAsMywwLDEwMCw0LDAsMTI0LDMsMCwxMzEsNCwyLDgzLDQxLDUsMTIyLAorICAgIDEzMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LDExMSwxMDAsMTAxLAorICAgIDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwxMDAsCisgICAgMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwxMDAsOTcsMTE2LDk3LAorICAgIDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiw5OSw5NywxMTAsMzIsOTgsCisgICAgMTAxLDMyLDk3LDExMCwxMjEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDExNiwxMjEsMTEyLAorICAgIDEwMSwzMiwxMTYsMTA0LDk3LDExNiwzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSw0MCw0MSwKKyAgICAzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTE1LDQ2LDEwLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDExNCwxODksMCwwLDAsMjE4LDEyLDEwMCwxMTEsMTEwLDExNiw5NSwxMDUsCisgICAgMTEwLDEwNCwxMDEsMTE0LDEwNSwxMTYsODQsMTE0LDY4LDAsMCwwLDQxLDMsMTE0LDEyMSwKKyAgICAwLDAsMCwxMTQsMTg4LDAsMCwwLDIxOCw3LDk5LDExMSwxMDksMTEyLDEwNSwxMDgsCisgICAgMTAxLDQxLDQsMTE0LDEwOCwwLDAsMCwxMTQsNTMsMCwwLDAsMTE0LDM1LDAsCisgICAgMCwwLDExNCwyMDMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDUsMCwwLDAsMjE4LDE0LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE2LAorICAgIDExMSw5NSw5OSwxMTEsMTAwLDEwMSwyMDYsMiwwLDAsMTE1LDQsMCwwLDAsMCwKKyAgICA1LDIxLDEsMTIyLDI3LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsNDYsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTYsMTExLDk1LDk5LDExMSwxMDAsMTAxLAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwxMCwwLDAsMCw0MywwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTc0LDEsMCwwLDEyNCwwLDAsMTA2LDAsMCwKKyAgICAxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMDAsMSwwLDEyNSwzLDAsMTIxLAorICAgIDE2LDAsMTE2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDQsMCw4NywxMTAsCisgICAgMjQsMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDYzLDAsMSwxLDEsMTAwLAorICAgIDEsMCwxMjUsNCwwLDg5LDExMCwyMDIsMCw4OCwxMjEsMTksMCwxMjQsMCwwLAorICAgIDEwNiwzLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw1LDAsODcsMTEwLDE4LDAsCisgICAgNCwxMTYsNCwwLDEwNywxMCwwLDExNCwxMDMsMCwxLDEsMSw4OSwxMTAsMTYyLAorICAgIDAsODgsMTE2LDUsMCwxMjQsNSwwLDEwMCwyLDAsMjUsMTMxLDEsMCwxMjUsCisgICAgMywwLDEyMSwxOSwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsNCwwLDEzMSwxLAorICAgIDAsMTI1LDYsMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsMTA3LDEwLDAsMTE0LAorICAgIDE1OSwwLDEsMSwxLDg5LDExMCwxMDYsMCw4OCwxMjEsMzQsMCwxMTYsOCwwLAorICAgIDEyNCw2LDAsMTAwLDMsMCwxMjQsNSwwLDEwMCw0LDAsMTI0LDEsMCwxMDAsCisgICAgNSwwLDEyNCw0LDAsMTMxLDEsMywxMjUsNywwLDg3LDExMCwyNCwwLDQsCisgICAgMTE2LDksMCwxMTYsMTAsMCwxMDIsMiwwLDEwNywxMCwwLDExNCwyMjAsMCwxLAorICAgIDEsMSw4OSwxMTAsNDUsMCw4OCwxMTYsMTEsMCwxMDAsNiwwLDEyNCw0LDAsCisgICAgMTI0LDIsMCwxMzEsMywwLDEsMTE2LDEyLDAsMTI0LDcsMCwxMDAsNCwwLAorICAgIDEyNCwxLDAsMTAwLDcsMCwxMjQsNCwwLDEwMCw4LDAsMTI0LDIsMCwxMzEsCisgICAgMSwzLDgzLDEyNCwwLDAsMTA2LDYsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LAorICAgIDgsMCwxMjQsMCwwLDEwNiwxMywwLDEyNCw4LDAsMTI0LDIsMCwxMzEsMiwKKyAgICAwLDEyNSw5LDAsMTE2LDExLDAsMTAwLDksMCwxMjQsMiwwLDEzMSwyLDAsCisgICAgMSwxMTYsMTQsMCwxMDYsMTUsMCwxMiwxMTQsMTcwLDEsMTI0LDQsMCwxMDAsMSwKKyAgICAwLDEwNyw5LDAsMTE0LDE3MCwxLDEyNCwzLDAsMTAwLDEsMCwxMDcsOSwwLAorICAgIDExNCwxNzAsMSwxMTYsMTYsMCwxMjQsOSwwLDEyNCwzLDAsMTE2LDE3LDAsMTI0LAorICAgIDgsMCwxMzEsMSwwLDEzMSwzLDAsMTI1LDYsMCwxMjEsMzYsMCwxMjQsMCwKKyAgICAwLDEwNiwxOCwwLDEyNCwyLDAsMTI0LDQsMCwxMjQsNiwwLDEzMSwzLDAsCisgICAgMSwxMTYsMTEsMCwxMDAsMTAsMCwxMjQsNCwwLDEzMSwyLDAsMSw4NywxMTAsCisgICAgMTgsMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDE2OSwxLDEsMSwxLDg5LAorICAgIDExMCwxLDAsODgsMTI0LDksMCw4Myw0MSwxMSwxMjIsMTkwLDY3LDExMSwxMTAsOTksCisgICAgMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwKKyAgICAxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsCisgICAgMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMTQsMTAxLDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMTE1LDMyLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSwzMiwKKyAgICAxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsCisgICAgMTAwLDQ2LDMyLDg0LDExMSwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDQ0LDMyLDExNSwxMDEsCisgICAgMTE2LDk1LDEwMCw5NywxMTYsOTcsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk3LDEwOCwxMTUsMTExLAorICAgIDMyLDk4LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDExNCwxMzMsMCwwLDAsCisgICAgMTE0LDEzOCwwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCwzNSwwLDAsMCwxMjIsCisgICAgMTMsMTIzLDEyNSwzMiwxMDksOTcsMTE2LDk5LDEwNCwxMDEsMTE1LDMyLDEyMywxMjUsMTE0LDg5LAorICAgIDAsMCwwLDExNCw5MCwwLDAsMCwxMjIsMTksOTksMTExLDEwMCwxMDEsMzIsMTExLAorICAgIDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMTI1LDEyMiwxMCwxMTksCisgICAgMTE0LDExMSwxMTYsMTAxLDMyLDEyMywzMywxMTQsMTI1LDQxLDE5LDExNCwxNTcsMCwwLDAsCisgICAgMTE0LDc5LDAsMCwwLDExNCw2NiwwLDAsMCwxMTQsMTk3LDAsMCwwLDExNCwKKyAgICAxOTUsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMDAsMCwwLDAsMTE0LDQwLAorICAgIDAsMCwwLDExNCwxNDEsMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTM2LDAsCisgICAgMCwwLDExNCwxMDUsMCwwLDAsMTE0LDE0NywwLDAsMCwxMTQsMjA2LDAsMCwKKyAgICAwLDExNCw3LDAsMCwwLDIxOCwxOSwxMDAsMTExLDExMCwxMTYsOTUsMTE5LDExNCwxMDUsCisgICAgMTE2LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTUwLDAsMCwwLAorICAgIDExNCwzMSwwLDAsMCwxMTQsMTk5LDAsMCwwLDQxLDEwLDExNCwxMDgsMCwwLAorICAgIDAsMTE0LDEyNiwwLDAsMCwxMTQsOTAsMCwwLDAsMTE0LDEzOSwwLDAsMCwKKyAgICAxMTQsODksMCwwLDAsMjE4LDIsMTE1LDExNiwxMTQsNTMsMCwwLDAsMjE4LDEwLAorICAgIDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDAsOTcsMTE2LDk3LDExNCwxNTMsMCwwLDAsOTAsCisgICAgMTEsOTksMTExLDEwMCwxMDEsOTUsMTExLDk4LDEwNiwxMDEsOTksMTE2LDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxODcsMCwwLDAsCisgICAgMjE0LDIsMCwwLDExNSw3OCwwLDAsMCwwLDcsMTUsMSw2LDEsMywKKyAgICAxLDE2LDEsMTMsMSwxMSwyLDMsMSwxOSwxLDEzLDEsNSwyLDE2LAorICAgIDEsMywxLDE5LDEsMTMsMSw1LDIsMywxLDksMSwxMiwxLDEzLAorICAgIDEsMTksMSw1LDIsOSwxLDcsMSwxNSwxLDYsMSw3LDEsMTUsCisgICAgMSwxOCwxLDEzLDEsMjIsMSwxMiwxLDksMSwxNSwxLDMsMSwxOSwKKyAgICAxLDE3LDEsMTMsMSw1LDEsMTIyLDIxLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsNzgsMTE0LAorICAgIDg3LDAsMCwwLDQxLDEwLDExNCwxMTIsMCwwLDAsMTE0LDExMSwwLDAsMCwKKyAgICAxMTQsMTEzLDAsMCwwLDExNCwxOTYsMCwwLDAsMTE0LDE5NywwLDAsMCwxMTQsCisgICAgMTk5LDAsMCwwLDExNCwxOTgsMCwwLDAsMTE0LDIwMiwwLDAsMCwxMTQsMjA2LAorICAgIDAsMCwwLDExNCwxODcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE5NCwwLDAsCisgICAgMCwxNTYsMiwwLDAsMTE1LDE0LDAsMCwwLDEyLDIsMTIsOCwxMiwxMywKKyAgICAxMiwxMCwxMiw3LDEyLDEwLDE4LDgsMTE0LDE5NCwwLDAsMCw5OSwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDAsMCwKKyAgICAwLDAsMTE1LDExMiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLAorICAgIDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLAorICAgIDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwKKyAgICAwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDEsNywwLAorICAgIDEzNSwwLDAsMTAyLDEsMCwxMDAsOCwwLDEwMCw5LDAsMTM0LDAsMCwxMzEsCisgICAgMSwwLDkwLDgsMCwxMDEsNywwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLAorICAgIDAsMTMxLDEsMCw5MCw5LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCwKKyAgICA5MCwxMCwwLDEzNSwwLDAsODMsNDEsMTQsMjE4LDEwLDcwLDEwNSwxMDgsMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCwxMjIsMTAzLDY2LDk3LDExNSwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLAorICAgIDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTE5LDEwNCwKKyAgICAxMDUsOTksMTA0LDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExMiwxMTQsMTExLDExNiwxMTEsOTksCisgICAgMTExLDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsMTE2LDEwNCw5NywxMTYsMTAsCisgICAgMzIsMzIsMzIsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwKKyAgICAzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiwxMTcsMTE1LDk3LDEwMywxMDEsNDYsOTksMywKKyAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMiwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMjIsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsCisgICAgMCwxMjQsMiwwLDEyNCwwLDAsOTUsMSwwLDEwMCwxLDAsODMsNDEsMiwKKyAgICAxMjIsNzUsNjcsOTcsOTksMTA0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLAorICAgIDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDc4LDQxLDIsCisgICAgMTE0LDEwNiwwLDAsMCwxMTQsMzUsMCwwLDAsNDEsMywxMTQsMTA4LDAsMCwKKyAgICAwLDExNCwxMjYsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxODUsMCwwLDAsMTUsCisgICAgMywwLDAsMTE1LDQsMCwwLDAsMCwzLDksMSwxMjIsMTksNzAsMTA1LAorICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSwKKyAgICA5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwzNCwwLDAsMCwxMjQsMCwwLDEwNiwwLAorICAgIDAsMTI0LDEsMCwxMDYsMCwwLDEwNywyLDAsMTExLDMzLDAsMTI0LDAsMCwKKyAgICAxMDYsMSwwLDEyNCwxLDAsMTA2LDEsMCwxMDcsMiwwLDgzLDQxLDEsNzgsCisgICAgNDEsMiwyMTgsOSw5NSw5NSw5OSwxMDgsOTcsMTE1LDExNSw5NSw5NSwxMTQsMTE4LDAsCisgICAgMCwwLDQxLDIsMTE0LDEwOCwwLDAsMCwyMTgsNSwxMTEsMTE2LDEwNCwxMDEsMTE0LAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwKKyAgICA2LDk1LDk1LDEwMSwxMTMsOTUsOTUsMjEsMywwLDAsMTE1LDQsMCwwLDAsCisgICAgMCwxLDE4LDEsMTIyLDE3LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDI2LDAsMCwKKyAgICAwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsMTE2LDAsMCwKKyAgICAxMjQsMCwwLDEwNiwyLDAsMTMxLDEsMCw2NSw4Myw0MSwxLDc4LDQxLDMsCisgICAgMjE4LDQsMTA0LDk3LDExNSwxMDQsMTE0LDEwNiwwLDAsMCwxMTQsMzUsMCwwLDAsCisgICAgNDEsMSwxMTQsMTA4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw1LDAsMCwwLDIxOCw4LDk1LDk1LDEwNCw5NywxMTUsMTA0LDk1LDk1LAorICAgIDI1LDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMTksNzAsMTA1LDEwOCwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNCw5NywxMTUsMTA0LDk1LDk1LAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLAorICAgIDAsMywwLDAsMCwxMTUsMjIsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLAorICAgIDEyNCwwLDAsMTMxLDIsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDEsMCw4MywKKyAgICA0MSwxLDEyMiwxMDAsNzYsMTExLDk3LDEwMCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMDIsMTE0LDExMSwxMDksMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LAorICAgIDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLAorICAgIDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDMsMjE4LDUsMTE1LDExNywxMTIsMTAxLAorICAgIDExNCwxMTQsMjEwLDAsMCwwLDExNCwxOTMsMCwwLDAsNDEsMiwxMTQsMTA4LDAsCisgICAgMCwwLDExNCwxMjYsMCwwLDAsNDEsMSwxMTQsMjExLDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw1LDAsMCwwLDExNCwxOTMsMCwwLDAsMjgsMywwLAorICAgIDAsMTE1LDIsMCwwLDAsMCwxMCwxMjIsMjIsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDcsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLAorICAgIDgzLDQxLDEsMTIyLDU4LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5NywxMTUsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwKKyAgICAzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsNDEsCisgICAgMSwxMTQsMzUsMCwwLDAsNDEsMiwxMTQsMTA4LDAsMCwwLDExNCwxMjYsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAorICAgIDAsMTE0LDE1NywwLDAsMCw0MCwzLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDMsMTIyLDIzLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLAorICAgIDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTksMiwwLDAsMCwwLAorICAgIDAsMCwwLDMsMCwwLDAsOSwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgNDIsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTAwLDEsMCwKKyAgICAxMzEsMiwwLDE0MywxNywwLDEyNSwyLDAsMTI0LDIsMCwxMDYsMiwwLDEzMSwKKyAgICAwLDAsODMsODcsMTAwLDIsMCw4MSw4Miw4OCwxMDAsMiwwLDgzLDQxLDMsCisgICAgMTIyLDM5LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDk3LDExNiwKKyAgICA5NywzMiwxMDIsMTE0LDExMSwxMDksMzIsMTEyLDk3LDExNiwxMDQsMzIsOTcsMTE1LDMyLDExNCwKKyAgICA5NywxMTksMzIsOTgsMTIxLDExNiwxMDEsMTE1LDQ2LDIxOCwxLDExNCw3OCw0MSwzLDExNCwKKyAgICA0OSwwLDAsMCwxMTQsNTAsMCwwLDAsOTAsNCwxMTQsMTAxLDk3LDEwMCw0MSwKKyAgICAzLDExNCwxMDgsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw1NCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsCisgICAgMjAwLDAsMCwwLDQ1LDMsMCwwLDExNSw0LDAsMCwwLDAsMiwyMSwKKyAgICAxLDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwKKyAgICAxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MSwxMSwxMTQsMTEyLDAsMCwwLDExNCwxMTEsMCwKKyAgICAwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE0LDAsMCwwLDExNCwxODUsMCwwLAorICAgIDAsMTE0LDIxMywwLDAsMCwxMTQsMjE1LDAsMCwwLDExNCwxMjMsMCwwLDAsCisgICAgMTE0LDE5MywwLDAsMCwxMTQsMTU3LDAsMCwwLDExNCwyMDAsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsNDEsMSwxMTQsMjExLDAsMCwwLAorICAgIDExNCw1LDAsMCwwLDExNCwyMTAsMCwwLDAsMTAsMywwLDAsMTE1LDE0LAorICAgIDAsMCwwLDEyLDMsNiwyLDEyLDYsMTIsNCwxMiwzLDI0LDEyLDE4LAorICAgIDUsMTE0LDIxMCwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMCw0LDAsMCwwLDY0LDAsMCwwLDExNSw2NCwwLDAsMCwKKyAgICAxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLAorICAgIDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsCisgICAgMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwKKyAgICAxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMSw5MCw2LDAsMTAwLDEwLDAsODMsCisgICAgNDEsMTEsMjE4LDE2LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMTIyLDYyLDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwKKyAgICAxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLAorICAgIDMyLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE3LDExNSwKKyAgICAxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsCisgICAgMTE2LDEwMSwxMDksNDYsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLAorICAgIDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMzQsMCwwLDAsMTE2LDAsCisgICAgMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMDAsMSwwLDEyNCwyLDAsCisgICAgMTA2LDEsMCwxMDAsMiwwLDEyNCwyLDAsMTA2LDIsMCwxMDUsMiwwLDgzLAorICAgIDQxLDMsMTIyLDMzLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LAorICAgIDEwMSwxMTYsOTcsMTAwLDk3LDExNiw5NywzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTIsOTcsMTE2LDEwNCw0NiwxMTQsMTMzLDAsMCwwLDExNCwxMzQsMCwwLDAsNDEsCisgICAgMywxMTQsMzksMCwwLDAsMjE4LDgsMTE1LDExNiw5NSwxMDksMTE2LDEwNSwxMDksMTAxLAorICAgIDkwLDcsMTE1LDExNiw5NSwxMTUsMTA1LDEyMiwxMDEsNDEsMywxMTQsMTA4LDAsMCwwLAorICAgIDExNCwzNSwwLDAsMCwxMTQsMjA4LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxOTcsMCwwLDAsNTUsMywKKyAgICAwLDAsMTE1LDQsMCwwLDAsMCwyLDEyLDEsMTIyLDI3LDgzLDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDk5LDQsMCwwLDAsMCwwLDAsCisgICAgMCw1LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsCisgICAgMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSw0LDAsMTI0LDAsCisgICAgMCwxMDYsMSwwLDEyNCwyLDAsMTI0LDMsMCwxMDAsMSwwLDEyNCw0LDAsCisgICAgMTMxLDIsMSw4Myw0MSwyLDc4LDIxOCw1LDk1LDEwOSwxMTEsMTAwLDEwMSw0MSwyLAorICAgIDExNCw5NywwLDAsMCwxMTQsMTk4LDAsMCwwLDQxLDUsMTE0LDEwOCwwLDAsCisgICAgMCwxMTQsOTAsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCw1MywwLDAsMCwKKyAgICAxMTQsNDIsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMTE0LDE5OSwwLDAsMCw2MCwzLDAsMCwxMTUsNCwwLAorICAgIDAsMCwwLDIsMTIsMSwxMjIsMzIsODMsMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwKKyAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk1LAorICAgIDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwyMjAsMCwwLDAsMTA1LDE4MiwxLAorICAgIDAsMCw5OSwzLDAsMCwwLDEsMCwwLDAsOSwwLDAsMCwxNywKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNTMsMSwwLDAsMTE2LDAsMCwxMjQsCisgICAgMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsMTI1LDUsMCwxMDMsMCwKKyAgICAwLDEyNSw2LDAsMTIwLDU0LDAsMTI0LDQsMCwxMTQsODAsMCwxMTYsMSwwLAorICAgIDEyNCw0LDAsMTMxLDEsMCwxMiwxMTQsODAsMCwxMTYsMCwwLDEyNCw0LDAsCisgICAgMTMxLDEsMCw5MiwyLDAsMTI1LDQsMCwxMjUsNywwLDEyNCw2LDAsMTA2LAorICAgIDIsMCwxMjQsNywwLDEzMSwxLDAsMSwxMTMsMjcsMCw4NywxMjAsMTMyLDAsCisgICAgMTE2LDMsMCwxMjQsNiwwLDEzMSwxLDAsNjgsOTMsMTE4LDAsMTI1LDcsMCwKKyAgICAxMTYsNCwwLDEyNCw0LDAsMTI0LDcsMCwxMzEsMiwwLDEyNSw0LDAsMTIxLAorICAgIDE3LDAsMTE2LDUsMCwxMDYsNiwwLDEyNCw0LDAsMTMxLDEsMCwxLDg3LAorICAgIDExMyw5NCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsMTU1LDAsMSwxLDEsCisgICAgMTE5LDk0LDAsODksMTEzLDk0LDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwyMTEsCisgICAgMCwxLDEyNSw4LDAsMSwxMjIsMjUsMCwxMTYsOSwwLDEwMCwxLDAsMTI0LAorICAgIDQsMCwxMjQsOCwwLDEzMSwzLDAsMSwxMDAsMiwwLDgzLDg3LDg5LDEwMCwKKyAgICAyLDAsMTAwLDIsMCwxMjUsOCwwLDEyNiw4LDAsODgsMTEzLDk0LDAsODgsCisgICAgMTEzLDk0LDAsODcsMTIxLDMzLDAsMTE2LDEwLDAsMTI0LDEsMCwxMjQsMiwwLAorICAgIDEyNCwzLDAsMTMxLDMsMCwxLDExNiw5LDAsMTAwLDMsMCwxMjQsMSwwLAorICAgIDEzMSwyLDAsMSw4NywxMTAsNTMsMCw0LDExNiw4LDAsMTA3LDEwLDAsMTE0LAorICAgIDQ4LDEsMSwxMjUsOCwwLDEsMTIyLDIxLDAsMTE2LDksMCwxMDAsMSwwLAorICAgIDEyNCwxLDAsMTI0LDgsMCwxMzEsMywwLDEsODcsODksMTAwLDIsMCwxMDAsCisgICAgMiwwLDEyNSw4LDAsMTI2LDgsMCw4OCwxMTAsMSwwLDg4LDEwMCwyLDAsCisgICAgODMsNDEsNCwxMjIsMjcsODcsMTE0LDEwNSwxMTYsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwKKyAgICAzMiwxMDAsOTcsMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LAorICAgIDEyMiwyNyw5OSwxMTEsMTE3LDEwOCwxMDAsMzIsMTEwLDExMSwxMTYsMzIsOTksMTE0LDEwMSw5NywKKyAgICAxMTYsMTAxLDMyLDEyMywzMywxMTQsMTI1LDU4LDMyLDEyMywzMywxMTQsMTI1LDc4LDEyMiwxMiwKKyAgICA5OSwxMTQsMTAxLDk3LDExNiwxMDEsMTAwLDMyLDEyMywzMywxMTQsMTI1LDQxLDExLDExNCwzOCwKKyAgICAwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LDE2MywwLDAsMCwxMTQsMzMsMCwKKyAgICAwLDAsMTE0LDI4LDAsMCwwLDExNCwzLDAsMCwwLDkwLDUsMTA5LDEwNywKKyAgICAxMDAsMTA1LDExNCwyMTgsMTUsNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwxMTUsMTE2LDExNSw2OSwKKyAgICAxMTQsMTE0LDExMSwxMTQsMTE0LDQwLDAsMCwwLDExNCwxMDUsMCwwLDAsMTE0LDU1LAorICAgIDAsMCwwLDQxLDksMTE0LDEwOCwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LAorICAgIDUzLDAsMCwwLDExNCwyMjAsMCwwLDAsMjE4LDYsMTEyLDk3LDExNCwxMDEsMTEwLAorICAgIDExNiwxMTQsOTQsMCwwLDAsMTE0LDI3LDAsMCwwLDExNCwyMywwLDAsMCwKKyAgICAxMTQsMjAxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDExNCwxOTgsMCwwLDAsNjUsMywwLDAsMTE1LDM4LDAsCisgICAgMCwwLDAsMiwxOCwxLDYsMiwyMiwxLDE4LDEsMTcsMiwxOSwxLAorICAgIDE1LDEsMywxLDE3LDEsMTMsMiw3LDEsMTgsMywxNiwxLDI3LDEsCisgICAgMywxLDE2LDEsMTcsMSwxOCwyLDEyMiwyNSw4MywxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMDEsMTE2LDk1LDEwMCwKKyAgICA5NywxMTYsOTcsNzgsNDEsNywxMTQsMTEyLDAsMCwwLDExNCwxMTEsMCwwLDAsCisgICAgMTE0LDExMywwLDAsMCwxMTQsMTE0LDAsMCwwLDExNCwxOTcsMCwwLDAsMTE0LAorICAgIDE5OSwwLDAsMCwxMTQsMTk4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyMTgsMCwKKyAgICAwLDAsNTEsMywwLDAsMTE1LDgsMCwwLDAsMTIsMiw2LDIsMTIsCisgICAgNSwxMiw1LDExNCwyMTgsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsNDYsMCwKKyAgICAwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsCisgICAgMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwwLAorICAgIDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwwLDgzLAorICAgIDQxLDcsMjE4LDIwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LAorICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiw0NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMTE1LDMyLDExNSwKKyAgICAxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMTUsNDYsOTksMiwwLDAsMCwwLDAsMCwwLAorICAgIDUsMCwwLDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsNzYsMCwwLAorICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLAorICAgIDEyNCwwLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMTYsCisgICAgMiwwLDEyNCwzLDAsMTAwLDEsMCwxMjQsMSwwLDEwMCwyLDAsMTI0LDIsCisgICAgMCwxMzEsMSwyLDEyNSw0LDAsMTE2LDMsMCwxMjQsNCwwLDEwMCwxLDAsCisgICAgMTI0LDEsMCwxMDAsMywwLDEyNCwyLDAsMTMxLDEsMiw4Myw0MSw0LDc4LAorICAgIDExNCwxMDYsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw4OSwwLDAsMCw0MSwKKyAgICA0LDExNCwxNTcsMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsMTQxLDAsMCwwLAorICAgIDExNCwxNDcsMCwwLDAsNDEsNSwxMTQsMTA4LDAsMCwwLDExNCwxMjYsMCwwLAorICAgIDAsMTE0LDM1LDAsMCwwLDExNCw1MywwLDAsMCwxMTQsMjA5LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwKKyAgICAxODcsMCwwLDAsOTgsMywwLDAsMTE1LDgsMCwwLDAsMCwxLDE1LAorICAgIDEsMTUsMSwyNCwxLDEyMiwyOSw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsCisgICAgMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwKKyAgICA5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLAorICAgIDAsODMsNDEsMiwxMjIsMzksODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLAorICAgIDEwMSwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsCisgICAgMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsNCwKKyAgICAwLDAsMCw0MSwyLDExNCwxMDgsMCwwLDAsMTE0LDEyNiwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjAyLAorICAgIDAsMCwwLDEwNCwzLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDMxLAorICAgIDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNzgsCisgICAgNDEsNiwxMTQsMTEyLDAsMCwwLDExNCwxMTEsMCwwLDAsMTE0LDExMywwLDAsCisgICAgMCwxMTQsMTE0LDAsMCwwLDExNCwxODcsMCwwLDAsMTE0LDIwMiwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwxMTQsMjIzLDAsMCwwLDk0LDMsMCwwLDExNSw2LDAsCisgICAgMCwwLDEyLDIsNiwyLDEyLDYsMTE0LDIyMywwLDAsMCw5OSwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDY0LDAsCisgICAgMCwwLDExNSwxMzYsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCwKKyAgICA5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwKKyAgICAwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsCisgICAgMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwKKyAgICAxMDAsOSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwKKyAgICAwLDAsOTAsOCwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsOTAsOSwKKyAgICAwLDEwMCwxNCwwLDEwMCwxNSwwLDEzMiwwLDAsOTAsMTAsMCwxMDAsMTYsMCwKKyAgICAxMDAsMTcsMCwxMzIsMCwwLDkwLDExLDAsMTAxLDEyLDAsMTAwLDE4LDAsMTAwLAorICAgIDE5LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEzLDAsMTAwLDIwLDAsODMsNDEsCisgICAgMjEsMjE4LDE5LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiw5Myw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLAorICAgIDExMSwxMTQsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsOTksCisgICAgMTExLDExMCwxMTUsMTE2LDExNCwxMTcsOTksMTE2LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMDAsMTAxLAorICAgIDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTE5LDExMSwxMTQsMTA3LDMyLDExOSwKKyAgICAxMDUsMTE2LDEwNCwzMiw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDk5LDMsMCwwLDAsMCwwLDAsMCwzLDAsCisgICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwwLDEyNCwKKyAgICAxLDAsMTI0LDAsMCw5NSwwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LDEsCisgICAgMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsMTA2LDAsMCwwLDExNCwKKyAgICAzNSwwLDAsMCw0MSwzLDExNCwxMDgsMCwwLDAsMTE0LDEwNiwwLDAsMCwKKyAgICAxMTQsMzUsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMTE0LDE4NSwwLDAsMCwxMjEsMywwLDAsMTE1LDQsMCwKKyAgICAwLDAsMCwxLDksMSwxMjIsMjgsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLAorICAgIDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwKKyAgICAxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsMCwwLDEyNCwwLAorICAgIDAsMTA2LDAsMCwxMjQsMSwwLDEwNiwwLDAsMTA3LDIsMCwxMTEsMzMsMCwKKyAgICAxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMDYsMSwwLDEwNywyLDAsODMsCisgICAgNDEsMSw3OCw0MSwyLDExNCwyMTEsMCwwLDAsMTE0LDExOCwwLDAsMCw0MSwKKyAgICAyLDExNCwxMDgsMCwwLDAsMTE0LDIxMiwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjEzLDAsMCwwLDEyNSwKKyAgICAzLDAsMCwxMTUsNCwwLDAsMCwwLDEsMTgsMSwxMjIsMjYsNjksMTIwLAorICAgIDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyNiwwLAorICAgIDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDExNiwwLAorICAgIDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsNjUsODMsNDEsMSw3OCw0MSwKKyAgICAzLDExNCwyMTQsMCwwLDAsMTE0LDEwNiwwLDAsMCwxMTQsMzUsMCwwLDAsCisgICAgNDEsMSwxMTQsMTA4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw1LDAsMCwwLDExNCwyMTUsMCwwLDAsMTI5LDMsMCwwLDExNSwKKyAgICAyLDAsMCwwLDAsMSwxMjIsMjgsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLAorICAgIDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA0LDk3LAorICAgIDExNSwxMDQsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLAorICAgIDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsNDcsMCwwLDAsMTE2LDAsCisgICAgMCwxMDYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwyLDAsCisgICAgMTI1LDIsMCwxMTYsNCwwLDEwMCwxLDAsMTI0LDEsMCwxMDYsNSwwLDEyNCwKKyAgICAwLDAsMTA2LDYsMCwxMzEsMywwLDEsMTI0LDIsMCw4Myw0MSwyLDEyMiwKKyAgICAzOCw2NywxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsMTEwLDMyLDExNywxMTAsMTA1LDExNiwxMDUsCisgICAgOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjIsMzgsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LAorICAgIDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNDEsCisgICAgNywxMTQsMTIxLDAsMCwwLDExNCwxODgsMCwwLDAsMTE0LDE0NSwwLDAsMCwKKyAgICA5MCwxNCw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSwKKyAgICAxMTQsMTA1LDAsMCwwLDExNCwxMDYsMCwwLDAsMTE0LDM1LDAsMCwwLDQxLAorICAgIDMsMTE0LDEwOCwwLDAsMCwxMTQsMTY0LDAsMCwwLDExNCwxOTAsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LAorICAgIDE4NiwwLDAsMCwxMzIsMywwLDAsMTE1LDEwLDAsMCwwLDAsMiw2LAorICAgIDEsMTUsMSw2LDEsMTYsMSwxMjIsMzMsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsCisgICAgMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTksMTE0LDEwMSwKKyAgICA5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwKKyAgICAwLDAsMCwyLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDQ1LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMTYsMiwwLDEwNiwzLDAsCisgICAgMTI0LDEsMCwxMzEsMiwwLDEsMTE2LDQsMCwxMDAsMSwwLDEyNCwwLDAsCisgICAgMTA2LDUsMCwxMjQsMCwwLDEwNiw2LDAsMTMxLDMsMCwxLDEwMCwyLDAsCisgICAgODMsNDEsMywxMjIsMzAsNzMsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwzMiwKKyAgICA5NywxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTIyLDQwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDEwMSwxMjAsMTAxLDk5LDExNywKKyAgICAxMTYsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNzgsNDEsNywKKyAgICAxMTQsMTIxLDAsMCwwLDExNCwxODgsMCwwLDAsMTE0LDE0NSwwLDAsMCw5MCwKKyAgICAxMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDExNCwxMDUsMCwKKyAgICAwLDAsMTE0LDEwNiwwLDAsMCwxMTQsMzUsMCwwLDAsNDEsMiwxMTQsMTA4LAorICAgIDAsMCwwLDExNCwxOTAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDE5MSwwLDAsMCwxNDAsMywwLDAsCisgICAgMTE1LDYsMCwwLDAsMCwyLDE5LDEsNiwxLDEyMiwzMSw2OSwxMjAsMTE2LAorICAgIDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDMsMCwwLAorICAgIDAsMTE1LDQ4LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwKKyAgICAxLDAsMTAwLDEsMCwyNSwxMzcsMCwwLDExNiwyLDAsMTM1LDAsMCwxMDIsCisgICAgMSwwLDEwMCwyLDAsMTAwLDMsMCwxMzQsMCwwLDExNiwzLDAsNjgsMTMxLAorICAgIDEsMCwxMzEsMSwwLDgzLDQxLDQsMTIyLDQ5LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsCisgICAgMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDEsMTIwLDExNiwKKyAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LAorICAgIDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0NiwxMTQsMjksMCwwLDAsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsCisgICAgMCw1MSwwLDAsMCwxMTUsMzEsMCwwLDAsMTI0LDAsMCw5MywyMSwwLAorICAgIDEyNSwxLDAsMTM2LDAsMCwxMDAsMCwwLDEyNCwxLDAsMjMsMTA3LDIsMCwKKyAgICA4NiwxLDExMywzLDAsMTAwLDEsMCw4Myw0MSwyLDExNCwxODUsMCwwLDAsCisgICAgNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMjIsMCwwLDAsMjE4LDYsMTE1LAorICAgIDExNywxMDIsMTAyLDEwNSwxMjAsNDEsMSwyMTgsOSwxMDIsMTA1LDEwOCwxMDEsOTUsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjUwLDksNjAsMTAzLAorICAgIDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDE0OSwzLDAsMCwxMTUsMiwwLDAsMCwKKyAgICA2LDEsMTIyLDQ5LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwKKyAgICAxMDEsMTIwLDExMiwxMTQsNjIsNDEsNCwxMTQsMzgsMCwwLDAsMTE0LDM1LDAsMCwKKyAgICAwLDIxOCwzLDk3LDExMCwxMjEsMjE4LDE4LDY5LDg4LDg0LDY5LDc4LDgzLDczLDc5LAorICAgIDc4LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDQxLDIsMTE0LDEwOCwwLDAsCisgICAgMCwxMTQsMTI2LDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LDIyNiwwLAorICAgIDAsMCwxMTQsNSwwLDAsMCwxMTQsMTU5LDAsMCwwLDE0NiwzLDAsMCwKKyAgICAxMTUsNiwwLDAsMCwwLDIsMTksMSwxOCwxLDEyMiwzMCw2OSwxMjAsMTE2LAorICAgIDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsNjMsODIsMTAxLDExNiwKKyAgICAxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsOTcsMTEwLDMyLDEwMSwKKyAgICAxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLAorICAgIDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsMzIsCisgICAgOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDQ2LDc4LDExNCw0LDAsCisgICAgMCwwLDQxLDIsMTE0LDEwOCwwLDAsMCwxMTQsMTI2LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxODcsMCwKKyAgICAwLDAsMTUyLDMsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMjgsNjksCisgICAgMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDUzLDgyLDEwMSwxMTYsCisgICAgMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDEwMSwxMjAsMTE2LDEwMSwKKyAgICAxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDQsOTcsCisgICAgMTE4LDEwMSwzMiwxMTAsMTExLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwKKyAgICAxMDEsNDYsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTA4LDAsMCwwLDExNCwKKyAgICAxMjYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCisgICAgMCwwLDAsMTE0LDIwMiwwLDAsMCwxNTYsMywwLDAsMTE1LDIsMCwwLAorICAgIDAsMCwyLDEyMiwzMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwKKyAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywKKyAgICAxMTQsOTksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDEsMCwwLDAsNjcsMCwwLDAsMTE1LDcsMCwwLDAsMTI0LDAsMCwKKyAgICAxMDYsMCwwLDgzLDQxLDEsMTIyLDU4LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsCisgICAgMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5NywxMTUsMzIsMTAyLDExMSwKKyAgICAxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsNDYsNDEsMSwxMTQsMzUsMCwwLDAsNDEsMiwxMTQsMTA4LDAsMCwwLAorICAgIDExNCwxMjYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMTE0LDE1NywwLDAsMCwxNjAsMywwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCwzLDEyMiwzMiw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLAorICAgIDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LAorICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNzgsNDEsMTQsMTE0LDExMiwwLDAsMCwxMTQsMTExLAorICAgIDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNCwwLDAsMCwxMTQsMTg1LDAsCisgICAgMCwwLDExNCwyMTMsMCwwLDAsMTE0LDIxNSwwLDAsMCwxMTQsMTg2LDAsMCwKKyAgICAwLDExNCwxOTEsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMTg3LDAsMCwwLAorICAgIDExNCwyMDIsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMTU3LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAorICAgIDAsMCwwLDExNCwyMjQsMCwwLDAsMTEzLDMsMCwwLDExNSwyMCwwLDAsCisgICAgMCwxMiw2LDYsMiwxMiw0LDEyLDQsMTIsMywxMiw4LDEyLDYsMTIsCisgICAgNiwxMiw0LDEyLDQsMTE0LDIyNCwwLDAsMCw5OSwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKKyAgICAxMzAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCisgICAgMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCisgICAgNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwKKyAgICAwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsOSwwLAorICAgIDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLDAsOTAsCisgICAgOCwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsOTAsOSwwLDEwMCwxNCwKKyAgICAwLDEwMCwxNSwwLDEzMiwwLDAsOTAsMTAsMCwxMDAsMTYsMCwxMDAsMTcsMCwKKyAgICAxMzIsMCwwLDkwLDExLDAsMTAwLDE4LDAsMTAwLDE5LDAsMTMyLDAsMCw5MCwKKyAgICAxMiwwLDEwMCwyMCwwLDgzLDQxLDIxLDIxOCwxNCw5NSw3OCw5NywxMDksMTAxLDExNSwKKyAgICAxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsOTcsMzgsMSwwLDAsODIsMTAxLDExMiwKKyAgICAxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiwKKyAgICA5Nyw5OSwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDM5LDExNSwzMiwxMTIsOTcsCisgICAgMTE2LDEwNCw0NiwzMiwzMiw3MywxMTYsMzIsMTE3LDExNSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwLDMyLDMyLDMyLAorICAgIDMyLDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDEwNSwxMTYsMTE1LDMyLDExMiw5NywxMTQsCisgICAgMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsOTcsMTEwLDEwMCwzMiwKKyAgICAxMDIsMTE0LDExMSwxMDksMzIsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTE2LDMyLDEwOCwxMTEsCisgICAgMTExLDEwNywxMTUsMzIsMTE3LDExMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsCisgICAgMTE2LDM5LDExNSwxMCwzMiwzMiwzMiwzMiw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwKKyAgICA0NiwzMiwzMiw4NywxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsOTksMTA0LDk3LAorICAgIDExMCwxMDMsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzOSwxMTUsMzIsMTExLDExOSwxMTAsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMTQsCisgICAgMTAxLDk5LDExMSwxMDksMTEyLDExNywxMTYsMTAxLDEwMCw0NCwxMCwzMiwzMiwzMiwzMiwxMTcsCisgICAgMTE1LDEwNSwxMTAsMTAzLDMyLDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LAorICAgIDQ2LDMyLDMyLDcwLDExMSwxMTQsMzIsMTE2LDExMSwxMTIsNDUsMTA4LDEwMSwxMTgsMTAxLDEwOCwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LAorICAgIDExNCwxMDEsMTEwLDExNiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsMTAsMzIsMzIsMzIsMzIsMTA1LDExNSwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsCisgICAgMTE2LDEwNCw0Niw5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwKKyAgICAyLDAsMCwwLDY3LDAsMCwwLDExNSw1MiwwLDAsMCwxMjQsMSwwLAorICAgIDEyNCwwLDAsOTUsMCwwLDEyNCwyLDAsMTI0LDAsMCw5NSwxLDAsMTE2LAorICAgIDIsMCwxMjQsMCwwLDEwNiwzLDAsMTMxLDAsMCwxMzEsMSwwLDEyNCwwLAorICAgIDAsOTUsNCwwLDEyNCwzLDAsMTI0LDAsMCw5NSw1LDAsMTAwLDAsMCwKKyAgICA4Myw0MSwxLDc4LDQxLDYsMjE4LDUsOTUsMTEwLDk3LDEwOSwxMDEsMjE4LDUsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsMTE0LDkzLDAsMCwwLDIxOCwxNiw5NSwxMDMsMTAxLDExNiw5NSwKKyAgICAxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDIxOCwxNyw5NSwxMDgsOTcsCisgICAgMTE1LDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDIxOCwxMiwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0MSw0LDExNCwxMDgsCisgICAgMCwwLDAsMTE0LDEwNiwwLDAsMCwxMTQsMzUsMCwwLDAsMjE4LDExLDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxODUsMCwwLDAsMTczLDMsCisgICAgMCwwLDExNSw4LDAsMCwwLDAsMSw5LDEsOSwxLDIxLDEsMTIyLAorICAgIDIzLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0NiwKKyAgICA5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDQsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNTMsMCwKKyAgICAwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsMTAwLDEsMCwxMzEsMSwKKyAgICAwLDkyLDMsMCwxMjUsMSwwLDEyNSwyLDAsMTI1LDMsMCwxMjQsMiwwLAorICAgIDEwMCwyLDAsMTA3LDIsMCwxMTQsNDMsMCwxMDAsNiwwLDgzLDEyNCwxLDAsCisgICAgMTAwLDUsMCwxMDIsMiwwLDgzLDQxLDcsMTIyLDYyLDgyLDEwMSwxMTYsMTE3LDExNCwKKyAgICAxMTAsMTE1LDMyLDk3LDMyLDExNiwxMTcsMTEyLDEwOCwxMDEsMzIsMTExLDEwMiwzMiw0MCwxMTIsCisgICAgOTcsMTE0LDEwMSwxMTAsMTE2LDQ1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ1LDExMCw5NywxMDksCisgICAgMTAxLDQ0LDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDUsMTEyLDk3LDExNiwxMDQsNDUsOTcsCisgICAgMTE2LDExNiwxMTQsNDUsMTEwLDk3LDEwOSwxMDEsNDEsMTE0LDU4LDAsMCwwLDExNCwzMCwKKyAgICAwLDAsMCwxMTQsNywwLDAsMCwxMTQsMzUsMCwwLDAsOTAsOCw5NSwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSw0MSwyLDEyMiwzLDExNSwxMjEsMTE1LDEyMiw0LAorICAgIDExMiw5NywxMTYsMTA0LDQxLDIsMTE0LDIzMSwwLDAsMCwxMTQsMzIsMCwwLDAsCisgICAgNDEsNCwxMTQsMTA4LDAsMCwwLDExNCwyMjIsMCwwLDAsMjE4LDMsMTAwLDExMSwKKyAgICAxMTYsOTAsMiwxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDIxOCwyMyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwxMDEsCisgICAgMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMTc5LDMsMCwKKyAgICAwLDExNSw4LDAsMCwwLDAsMiwyNywxLDEyLDIsNCwzLDEyMiwzOCwKKyAgICA5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDk5LDEsMCwwLDAsMCwwLDAsMCwzLAorICAgIDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDM4LDAsMCwwLAorICAgIDEyNCwwLDAsMTA2LDAsMCwxMzEsMCwwLDkyLDIsMCwxMjUsMSwwLDEyNSwKKyAgICAyLDAsMTE2LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDEsMCwyNSwxMjQsCisgICAgMiwwLDEzMSwyLDAsODMsNDEsMSw3OCw0MSw0LDExNCwyMzgsMCwwLDAsCisgICAgMTE0LDExNywwLDAsMCwxMTQsNywwLDAsMCwyMTgsNywxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMTUsNDEsMywxMTQsMTA4LDAsMCwwLDkwLDE4LDExMiw5NywxMTQsMTAxLAorICAgIDExMCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsOTAsMTQsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsOTcsMTE2LDExNiwxMTQsOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIzMywwLAorICAgIDAsMCwxODksMywwLDAsMTE1LDQsMCwwLDAsMCwxLDE4LDEsMTIyLAorICAgIDMxLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0NiwKKyAgICA5NSwxMDMsMTAxLDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LAorICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDExOCwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsCisgICAgMTA2LDEsMCwxMzEsMCwwLDEzMSwxLDAsMTI1LDEsMCwxMjQsMSwwLDEyNCwKKyAgICAwLDAsMTA2LDIsMCwxMDcsMywwLDExNCwxMTEsMCwxMjQsMCwwLDEwNiwzLAorICAgIDAsMTI0LDAsMCwxMDYsNCwwLDEyNCwxLDAsMTMxLDIsMCwxMjUsMiwwLAorICAgIDEyNCwyLDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxMDIsMCwxMjQsMiwwLDEwNiwKKyAgICA1LDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxMDIsMCwxMjQsMiwwLDEwNiw2LAorICAgIDAsMTE0LDEwMiwwLDEyNCwyLDAsMTA2LDYsMCwxMjQsMCwwLDk1LDcsMCwKKyAgICAxMjQsMSwwLDEyNCwwLDAsOTUsMiwwLDEyNCwwLDAsMTA2LDcsMCw4MywKKyAgICA0MSwxLDc4LDQxLDgsMTE0LDkzLDAsMCwwLDExNCwyMzMsMCwwLDAsMTE0LAorICAgIDIzNCwwLDAsMCwxMTQsMjM1LDAsMCwwLDExNCwyMzEsMCwwLDAsMTE0LDEyNywKKyAgICAwLDAsMCwxMTQsMTU2LDAsMCwwLDExNCwyMzIsMCwwLDAsNDEsMywxMTQsCisgICAgMTA4LDAsMCwwLDkwLDExLDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE0LDE2NCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNSwwLDAsMCwyMTgsMTIsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LDEwOCwKKyAgICA5NywxMTYsMTAxLDE5MywzLDAsMCwxMTUsMTYsMCwwLDAsMCwyLDE4LDEsCisgICAgMTUsMSwyMSwzLDI3LDEsOSwxLDEyLDEsOSwxLDEyMiwyNyw5NSw3OCwKKyAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsMTE0LDEwMSwKKyAgICA5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LAorICAgIDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTMxLAorICAgIDEsMCw4Myw0MSwxLDc4LDQxLDIsMjE4LDQsMTA1LDExNiwxMDEsMTE0LDExNCwyNDAsCisgICAgMCwwLDAsNDEsMSwxMTQsMTA4LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCw4LDk1LDk1LDEwNSwxMTYsMTAxLAorICAgIDExNCw5NSw5NSwyMDYsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyMywKKyAgICA5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsCisgICAgOTUsMTA1LDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwKKyAgICAwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTMxLDEsMCwKKyAgICA4Myw0MSwxLDc4LDQxLDIsMTE0LDMxLDAsMCwwLDExNCwyNDAsMCwwLDAsCisgICAgNDEsMSwxMTQsMTA4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw1LDAsMCwwLDIxOCw3LDk1LDk1LDEwOCwxMDEsMTEwLDk1LDk1LDIwOSwKKyAgICAzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDIyLDk1LDc4LDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDgsMTAxLDExMCwKKyAgICA5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwKKyAgICAwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsODMsNDEsMiw3OCwxMjIsCisgICAgMjAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQwLAorICAgIDEyMywzMywxMTQsMTI1LDQxLDQxLDIsMTE0LDQ3LDAsMCwwLDExNCwyMzIsMCwwLAorICAgIDAsNDEsMSwxMTQsMTA4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDIxOCw4LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSwKKyAgICA5NSwyMTIsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyMyw5NSw3OCwKKyAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsMTE0LAorICAgIDEwMSwxMTIsMTE0LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEyNCwKKyAgICAxLDAsMTI0LDAsMCwxMDYsMCwwLDEzMSwwLDAsMTA3LDYsMCw4Myw0MSwKKyAgICAxLDc4LDQxLDEsMTE0LDI0MCwwLDAsMCw0MSwyLDExNCwxMDgsMCwwLDAsCisgICAgMjE4LDQsMTA1LDExNiwxMDEsMTA5LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw1LDAsMCwwLDIxOCwxMiw5NSw5NSw5OSwxMTEsMTEwLDExNiw5NywxMDUsMTEwLAorICAgIDExNSw5NSw5NSwyMTUsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNywKKyAgICA5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsCisgICAgOTUsOTksMTExLDExMCwxMTYsOTcsMTA1LDExMCwxMTUsOTUsOTUsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMjAsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsMTI0LDEsCisgICAgMCwxMzEsMSwwLDEsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDIsMTE0LDIzMiwKKyAgICAwLDAsMCwxMTQsMTYzLDAsMCwwLDQxLDIsMTE0LDEwOCwwLDAsMCwxMTQsCisgICAgMjQ1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAorICAgIDAsMCwwLDExNCwxNjMsMCwwLDAsMjE4LDMsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsMSwxMjIsMjEsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCwKKyAgICA5NywxMTYsMTA0LDQ2LDk3LDExMiwxMTIsMTAxLDExMCwxMDAsNzgsNDEsMTMsMTE0LDExMiwwLAorICAgIDAsMCwxMTQsMTExLDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNCwwLDAsCisgICAgMCwxMTQsMTg1LDAsMCwwLDExNCwyMzgsMCwwLDAsMTE0LDIzMywwLDAsMCwKKyAgICAxMTQsMjQwLDAsMCwwLDExNCwyNDIsMCwwLDAsMTE0LDI0MywwLDAsMCwxMTQsCisgICAgMjQ0LDAsMCwwLDExNCwyNDYsMCwwLDAsMTE0LDE2MywwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAorICAgIDAsMCwxMTQsMjMwLDAsMCwwLDE2NiwzLDAsMCwxMTUsMjAsMCwwLDAsCisgICAgMTIsNSw2LDIsMTIsNiwxMiwxMCwxMiw0LDEyLDEzLDEyLDMsMTIsMywKKyAgICAxMiwzLDEyLDMsMTE0LDIzMCwwLDAsMCw5OSwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDY0LDAsMCwwLDExNSwxMTgsCisgICAgMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLAorICAgIDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMSw0LDAsMTAwLDMsCisgICAgMCwxMDAsNCwwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAwLDUsMCwKKyAgICAxMDAsNiwwLDEzMiwwLDAsOTAsNiwwLDEwMCw3LDAsMTAwLDgsMCwxMzIsCisgICAgMCwwLDkwLDcsMCwxMDAsOSwwLDEwMCwxMCwwLDEzMiwwLDAsOTAsOCwKKyAgICAwLDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwwLDAsOTAsOSwwLDEwMCwxMywwLAorICAgIDEwMCwxNCwwLDEzMiwwLDAsOTAsMTAsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsCisgICAgMCwwLDkwLDExLDAsMTAwLDE3LDAsODMsNDEsMTgsMjE4LDE2LDk1LDc4LDk3LAorICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDQsMCwKKyAgICAwLDAsMCwwLDAsMCw0LDAsMCwwLDQsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDI1LDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMjQsMiwwLAorICAgIDEyNCwzLDAsMTMxLDMsMCwxMjQsMCwwLDk1LDEsMCwxMDAsMCwwLDgzLAorICAgIDQxLDEsNzgsNDEsMiwxMTQsMjMwLDAsMCwwLDExNCwyMzIsMCwwLDAsNDEsCisgICAgNCwxMTQsMTA4LDAsMCwwLDExNCwxMDYsMCwwLDAsMTE0LDM1LDAsMCwwLAorICAgIDExNCwyMzYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMTE0LDE4NSwwLDAsMCwyMjQsMywwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCwxLDEyMiwyNSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwKKyAgICAxLDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQxLDIsMTIyLDExNSw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsCisgICAgMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LAorICAgIDEyMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA2LDExMSw5OCwzMiwxMDUsCisgICAgMTE2LDExNSwxMDEsMTA4LDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAxMjIsMjUsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsCisgICAgMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDEsNjIsNDEsMiwxMTQsNDcsMCwKKyAgICAwLDAsMTE0LDExMiwwLDAsMCw0MSwyLDExNCwxNzAsMCwwLDAsMTE0LDE5MCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAorICAgIDAsMCwyMTgsMTEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDIyNywKKyAgICAzLDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI4LDk1LDc4LDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCw5OSwyLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsCisgICAgMCwwLDEwMCwxLDAsODMsNDEsMiw3OCw4NCwxMTQsNCwwLDAsMCw0MSwKKyAgICAyLDExNCwxMDgsMCwwLDAsMTE0LDEyNiwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTU5LDAsMCwwLDIzNiwKKyAgICAzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI3LDk1LDc4LDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsCisgICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwKKyAgICAyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLAorICAgIDAsMTAwLDEsMCw4Myw0MSwyLDc4LDExNCwzMCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCw0MSwyLDExNCwxMDgsMCwwLDAsMTE0LDEyNiwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjAyLDAsCisgICAgMCwwLDIzOSwzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI3LDk1LAorICAgIDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAorICAgIDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLDAsMCwwLAorICAgIDAsMCwwLDIsMCwwLDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMjIsMCwwLDAsMTE2LDAsMCwxMDAsMSwwLDEwMCwyLDAsMTAwLDMsMCwKKyAgICAxMDAsNCwwLDEwMCw1LDAsMTMxLDMsMSw4Myw0MSw2LDc4LDExNCwzMCwwLAorICAgIDAsMCwxMjIsOCw2MCwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMyw2MiwxMTQsMTg5LDAsMCwKKyAgICAwLDExNCwyMDQsMCwwLDAsODQsNDEsMSwxMTQsMjA1LDAsMCwwLDQxLDIsCisgICAgMTE0LDEwOCwwLDAsMCwxMTQsMTI2LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxODcsMCwwLDAsMjQyLDMsCisgICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjUsOTUsNzgsOTcsMTA5LDEwMSwKKyAgICAxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsCisgICAgOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwKKyAgICAwLDgzLDQxLDIsMTIyLDQyLDg1LDExNSwxMDEsMzIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwKKyAgICAxMTYsMzIsMTE1LDEwMSwxMDksOTcsMTEwLDExNiwxMDUsOTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LAorICAgIDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDEwOCwwLDAsMCwxMTQsMTY0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKKyAgICAwLDExNCwxODYsMCwwLDAsMjQ1LDMsMCwwLDExNSwwLDAsMCwwLDEyMiwKKyAgICAzMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMCwwLDgzLDQxLDEsNzgsCisgICAgMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTA4LDAsMCwwLDExNCwxOTAsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCisgICAgMTE0LDE5MSwwLDAsMCwyNDgsMywwLDAsMTE1LDIsMCwwLDAsMCwxLAorICAgIDEyMiwyOCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsCisgICAgMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwzMiwwLDAsMCwxMTYsMCwwLDEwMCwxLDAsMTI0LDAsCisgICAgMCwxMDYsMSwwLDEzMSwyLDAsMSwxMTYsMiwwLDEwNiwzLDAsMTI0LDAsCisgICAgMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMiwxMjIsOTgsNzYsMTExLDk3LDEwMCwKKyAgICAzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsCisgICAgMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLAorICAgIDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDEsMTIwLAorICAgIDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsCisgICAgMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMzgsCisgICAgMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMzIsMTIzLDMzLDExNCwxMjUsNDEsNCwxMTQsMTA1LDAsMCwwLDExNCwyMzIsMCwKKyAgICAwLDAsMTE0LDEyMSwwLDAsMCwxMTQsMTkyLDAsMCwwLDQxLDIsMTE0LDEwOCwKKyAgICAwLDAsMCwxMTQsMTI2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDExNCwxOTMsMCwwLDAsMjUxLDMsMCwwLAorICAgIDExNSw0LDAsMCwwLDAsNywxNiwxLDEyMiwyOCw5NSw3OCw5NywxMDksMTAxLAorICAgIDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw0MSwxMiwxMTQsMTEyLDAsMCwwLDExNCwKKyAgICAxMTEsMCwwLDAsMTE0LDExMywwLDAsMCwxMTQsMTg1LDAsMCwwLDExNCwxODMsCisgICAgMCwwLDAsMTE0LDI0OCwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwyMDIsMCwKKyAgICAwLDAsMTE0LDE4NywwLDAsMCwxMTQsMTg2LDAsMCwwLDExNCwxOTEsMCwwLAorICAgIDAsMTE0LDE5MywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjQ3LDAsMCwwLDIyMywKKyAgICAzLDAsMCwxMTUsMTYsMCwwLDAsMTIsMSwxMiwzLDE4LDksMTIsMywKKyAgICAxMiwzLDEyLDMsMTIsMywxMiwzLDExNCwyNDcsMCwwLDAsOTksMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw2NCwwLAorICAgIDAsMCwxMTUsMTYwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsCisgICAgOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLDIsMCwxMDAsCisgICAgMywwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDQsMCwxMDAsNCwKKyAgICAwLDEwMCw1LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDYsMCwxMDEsNCwwLAorICAgIDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNywwLDEwMSwKKyAgICA0LDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsMTMxLDEsMCw5MCw4LAorICAgIDAsMTAxLDQsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMDAsMTIsMCwxMzIsMSwwLAorICAgIDEzMSwxLDAsOTAsOSwwLDEwMSw0LDAsMTAwLDEwLDAsMTAwLDEwLDAsMTAwLAorICAgIDEzLDAsMTAwLDE0LDAsMTMyLDIsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLDQsCisgICAgMCwxMDAsMTAsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMSwwLDEzMSwxLDAsCisgICAgOTAsMTEsMCwxMDAsMTAsMCw4Myw0MSwxNywyMTgsMTAsODAsOTcsMTE2LDEwNCw3MCwKKyAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiw2Miw3NywxMDEsMTE2LDk3LDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNSwxMjEsMTE1LDQ2LAorICAgIDExMiw5NywxMTYsMTA0LDMyLDk3LDExMCwxMDAsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDMyLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwKKyAgICAxMTcsMTE2LDEwMSwxMTUsNDYsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsNTUsMCwwLDAsMTIwLAorICAgIDQ4LDAsMTE2LDAsMCwxMDYsMSwwLDEwNiwyLDAsMTMxLDAsMCw2OCw5MywKKyAgICAzMSwwLDEyNSwxLDAsMTE2LDMsMCwxMjQsMSwwLDEwMCwxLDAsMTMxLDIsCisgICAgMCwxMTQsMTYsMCwxMjQsMSwwLDEwNiw0LDAsMTMxLDAsMCwxLDExMywxNiwKKyAgICAwLDg3LDEwMCwyLDAsODMsNDEsMywxMjIsMTI1LDY3LDk3LDEwOCwxMDgsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5NywKKyAgICA5OSwxMDQsMTAxLDExNSw0MCw0MSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTEsMTEwLAorICAgIDMyLDk3LDEwOCwxMDgsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwzMiwKKyAgICAxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMTE1LDExNiwxMTEsMTE0LDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsMTE1LDMyLDQwLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCisgICAgMTAxLDExMCwxMTYsMTAxLDEwMCw0MSw0NiwyMTgsMTcsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsCisgICAgOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw3OCw0MSw1LDExNCw3LDAsCisgICAgMCwwLDIxOCwxOSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMjE4LDYsMTE4LDk3LDEwOCwxMTcsMTAxLDExNSwxMTQsCisgICAgMTE1LDAsMCwwLDExNCwyNTAsMCwwLDAsNDEsMiwxMTQsMTcwLDAsMCwwLAorICAgIDIxOCw2LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDExNCwyNTAsMCwwLDAsMTIsNCwwLDAsCisgICAgMTE1LDYsMCwwLDAsMCw0LDIyLDEsMTUsMSwxMjIsMjgsODAsOTcsMTE2LAorICAgIDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LAorICAgIDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDMsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDEwNywKKyAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTAwLDEsMCwxMDcsOSwwLDExNCwKKyAgICA0MSwwLDExNiwwLDAsMTA2LDEsMCwxMiwxMTQsNDEsMCwxMTYsMiwwLDEwNiwKKyAgICAzLDAsMTAwLDIsMCwxMTYsNCwwLDEzMSwyLDAsMSwxMjAsNTksMCwxMTYsCisgICAgMCwwLDEwNiwxLDAsNjgsOTMsNDQsMCwxMjUsMiwwLDEyMSwxNCwwLDEyNCwKKyAgICAyLDAsMTI0LDEsMCwxMzEsMSwwLDgzLDg3LDExMyw1MSwwLDQsMTE2LDUsCisgICAgMCwxMDcsMTAsMCwxMTQsOTQsMCwxLDEsMSwxMTksNTEsMCw4OSwxMTMsNTEsCisgICAgMCw4OCwxMTMsNTEsMCw4NywxMDAsMSwwLDgzLDEwMCwxLDAsODMsNDEsMywKKyAgICAxMjIsMTEzLDgzLDEwMSw5NywxMTQsOTksMTA0LDMyLDExNSwxMDEsMTEzLDExNywxMDEsMTEwLDk5LAorICAgIDEwMSwzMiwxMTEsMTAyLDMyLDEwNCwxMTEsMTExLDEwNywxMTUsMzIsMTAyLDExMSwxMTQsMzIsOTcsCisgICAgMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMzksMTEyLDk3LDExNiwKKyAgICAxMDQsMzksNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLAorICAgIDM5LDEwNCwxMTEsMTExLDEwNywxMTUsMzksMzIsMTA1LDExNSwzMiwxMDIsOTcsMTA4LDExNSwxMDEsCisgICAgMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNywxMTUsMTAxLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsNzgsMTIyLDIzLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwKKyAgICAxMTEsMTExLDEwNywxMTUsMzIsMTA1LDExNSwzMiwxMDEsMTA5LDExMiwxMTYsMTIxLDQxLDYsMTE0LAorICAgIDcsMCwwLDAsMjE4LDEwLDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsCisgICAgMTE0LDYwLDAsMCwwLDExNCw2MSwwLDAsMCwxMTQsMTI1LDAsMCwwLDExNCwKKyAgICAxMDcsMCwwLDAsNDEsMywxMTQsMTcwLDAsMCwwLDExNCwzNSwwLDAsMCwKKyAgICA5MCw0LDEwNCwxMTEsMTExLDEwNywxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNSwwLDAsMCwyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsCisgICAgMTA3LDExNSwyMCw0LDAsMCwxMTUsMTYsMCwwLDAsMCw3LDI1LDEsMTYsCisgICAgMSwxNiwxLDMsMSwxNCwxLDEzLDEsMTIsMiwxMjIsMjIsODAsOTcsMTE2LAorICAgIDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsCisgICAgMTExLDEwNywxMTUsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsCisgICAgMTksMCwwLDAsNjcsMCwwLDAsMTE1LDEyMywwLDAsMCwxMjQsMSwwLAorICAgIDEwMCwxLDAsMTA3LDIsMCwxMTQsNTMsMCwxMjEsMTYsMCwxMTYsMCwwLDEwNiwKKyAgICAxLDAsMTMxLDAsMCwxMjUsMSwwLDg3LDExMCwyMiwwLDQsMTE2LDIsMCwKKyAgICAxMDcsMTAsMCwxMTQsNTIsMCwxLDEsMSwxMDAsMiwwLDgzLDg5LDExMCwxLAorICAgIDAsODgsMTIxLDE3LDAsMTE2LDMsMCwxMDYsNCwwLDEyNCwxLDAsMjUsMTI1LAorICAgIDIsMCw4NywxMTAsNDYsMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDExOCwwLAorICAgIDEsMSwxLDEyNCwwLDAsMTA2LDYsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LAorICAgIDIsMCwxMjQsMiwwLDExNiwzLDAsMTA2LDQsMCwxMjQsMSwwLDYwLDg5LAorICAgIDExMCwxLDAsODgsMTI0LDIsMCw4Myw0MSwzLDEyMiwyMTAsNzEsMTAxLDExNiwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLDEwMiwxMTQsCisgICAgMTExLDEwOSwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMDUsMTEwLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsNDQsMzIsMTAyLDEwNSwxMTAsMTAwLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDk3LDExMiwxMTIsMTE0LDExMSwxMTIsMTE0LDEwNSw5NywxMTYsMTAxLAorICAgIDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDk3LDExMCwxMDAsMzIsOTksOTcsOTksMTA0LDEwMSwzMiwxMDUsMTE2LDQ2LDMyLDczLDEwMiwKKyAgICAzMiwxMTAsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsOTcsMTE4LAorICAgIDk3LDEwNSwxMDgsOTcsOTgsMTA4LDEwMSw0NCwzMiwxMTUsMTE2LDExMSwxMTQsMTAxLDMyLDc4LAorICAgIDExMSwxMTAsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCwzMCwKKyAgICAwLDAsMCw3OCw0MSw3LDExNCwzLDAsMCwwLDExNCw0NSwwLDAsMCwKKyAgICAyMTgsMTcsNzAsMTA1LDEwOCwxMDEsNzgsMTExLDExNiw3MCwxMTEsMTE3LDExMCwxMDAsNjksMTE0LAorICAgIDExNCwxMTEsMTE0LDExNCw3LDAsMCwwLDExNCwyNTEsMCwwLDAsMTE0LDEzNywwLAorICAgIDAsMCwxMTQsMjU1LDAsMCwwLDQxLDMsMTE0LDE3MCwwLDAsMCwxMTQsMzUsCisgICAgMCwwLDAsMTE0LDI1MywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNSwwLDAsMCwyMTgsMjAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDM3LDQsMCwKKyAgICAwLDExNSwyMiwwLDAsMCwwLDgsMTIsMSwzLDEsMTYsMSwxMywzLAorICAgIDksMSwzLDEsMTcsMSwxMywxLDE1LDEsMTgsMSwxMjIsMzEsODAsOTcsCisgICAgMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw5OSwzLDAsCisgICAgMCwwLDAsMCwwLDAsNiwwLDAsMCwzLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxMTksMCwwLDAsMTE2LDAsMCwxMjQsMiwwLDEwMCwxLDAsCisgICAgMTMxLDIsMCwxMTQsMzksMCwxMjQsMiwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsCisgICAgMSwwLDkyLDIsMCwxMjUsMywwLDEyNSw0LDAsMTEwLDIxLDAsMTI0LDIsCisgICAgMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMywwLDEwMywwLDAsCisgICAgMTI1LDQsMCwxMjQsMywwLDEwMCwwLDAsMTA3LDksMCwxMTQsODgsMCwxMTYsCisgICAgMywwLDEwNiw0LDAsMTI0LDEsMCwxMjQsMywwLDEzMSwyLDAsODMsMTE2LAorICAgIDMsMCwxMDYsNSwwLDEyNCwxLDAsMTAwLDAsMCwxMzEsMiwwLDEyNSw1LAorICAgIDAsMTI0LDQsMCwxMjQsNSwwLDk1LDYsMCwxMjQsNSwwLDgzLDQxLDIsCisgICAgNzgsMTE0LDEyNCwwLDAsMCw0MSw3LDExNCwxMTUsMCwwLDAsMTE0LDEyNCwwLAorICAgIDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxMjEsMCwwLDAsMTE0LDE3OSwwLDAsCisgICAgMCwxMTQsMTYwLDAsMCwwLDExNCwxNTYsMCwwLDAsNDEsNiwxMTQsMTcwLDAsCisgICAgMCwwLDExNCwxMjYsMCwwLDAsMTE0LDI1MywwLDAsMCwxMTQsMTI3LDAsMCwKKyAgICAwLDExNCwxMjgsMCwwLDAsMTE0LDE2NCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTYsOTUsMTA4LDEwMSwxMDMsCisgICAgOTcsOTksMTIxLDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDU5LDQsMCwwLAorICAgIDExNSwxOCwwLDAsMCwwLDQsMTUsMSwyNCwyLDE1LDEsNiwxLDEyLAorICAgIDEsMTYsMSwxOCwxLDksMSwxMjIsMjcsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLAorICAgIDEwMCwxMDEsMTE0LDQ2LDk1LDEwOCwxMDEsMTAzLDk3LDk5LDEyMSw5NSwxMDMsMTAxLDExNiw5NSwKKyAgICAxMTUsMTEyLDEwMSw5OSw3OCw5OSw0LDAsMCwwLDAsMCwwLDAsOSwwLAorICAgIDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwyNDMsMCwwLDAsMTAzLAorICAgIDAsMCwxMjUsNCwwLDEyMCwyMzAsMCwxMjQsMiwwLDY4LDkzLDE5MSwwLDEyNSwKKyAgICA1LDAsMTE2LDAsMCwxMjQsNSwwLDExNiwxLDAsMTE2LDIsMCwxMDIsMiwKKyAgICAwLDEzMSwyLDAsMTE1LDQzLDAsMTEzLDEzLDAsMTI0LDAsMCwxMDYsMywwLAorICAgIDEyNCw1LDAsMTMxLDEsMCwxMjUsNiwwLDEyNCw2LDAsMTAwLDEsMCwxMDcsCisgICAgOSwwLDExNCwxMywwLDExNiw0LDAsMTI0LDYsMCwxMDAsMiwwLDEzMSwyLAorICAgIDAsMTE0LDEwNiwwLDEyNCw2LDAsMTA2LDUsMCwxMjQsMSwwLDEyNCwzLDAsCisgICAgMTMxLDIsMCwxMjUsNywwLDExMCwxOCwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsCisgICAgMSwwLDEyNCw2LDAsMTMxLDIsMCwxMjUsNywwLDEyNCw3LDAsMTAwLDEsCisgICAgMCwxMDcsOCwwLDExNCwxMzksMCwxMTMsMTMsMCwxMjQsNywwLDEwNiw3LDAsCisgICAgMTAwLDEsMCwxMDcsOSwwLDExNCwxNTgsMCwxMjQsNywwLDgzLDEyNCw3LDAsCisgICAgMTA2LDgsMCwxMjUsOCwwLDEyNCw4LDAsMTAwLDEsMCwxMDcsOCwwLDExNCwKKyAgICAxOTEsMCwxMTYsOSwwLDEwMCwzLDAsMTMxLDEsMCwxMzAsMSwwLDEyNCw0LAorICAgIDAsMTA2LDEwLDAsMTI0LDgsMCwxMzEsMSwwLDEsMTEzLDEzLDAsODcsMTE2LAorICAgIDExLDAsMTA2LDEyLDAsMTI0LDEsMCwxMDAsMSwwLDEzMSwyLDAsMTI1LDcsCisgICAgMCwxMjQsNCwwLDEyNCw3LDAsOTUsOCwwLDEyNCw3LDAsODMsMTAwLDEsCisgICAgMCw4Myw0MSw0LDEyMiw2Myw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExMSwxMTQsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5NywKKyAgICA5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDUsMTE1LAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ3LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwKKyAgICAxMTAsOTcsMTA5LDEwMSw0Niw3OCwxMTQsMTgxLDAsMCwwLDEyMiwxOSwxMTUsMTEyLDEwMSwKKyAgICA5OSwzMiwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA0MSwxMywxMTQsMTQzLDAsMCwwLDExNCw2OSwwLDAsMCwyMTgsNSw5OCwxMjEsCisgICAgMTE2LDEwMSwxMTUsMTE0LDEsMSwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTgxLDAsCisgICAgMCwwLDExNCwyLDEsMCwwLDExNCwxMjcsMCwwLDAsMTE0LDE1NiwwLDAsCisgICAgMCwxMTQsMTA3LDAsMCwwLDExNCwxNDksMCwwLDAsMTE0LDEyMSwwLDAsMCwKKyAgICAxMTQsMTYwLDAsMCwwLDQxLDksMTE0LDE3MCwwLDAsMCwxMTQsMTI2LDAsMCwKKyAgICAwLDExNCwzNSwwLDAsMCwxMTQsMTgwLDAsMCwwLDIxOCwxNCwxMTAsOTcsMTA5LAorICAgIDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCw5MCw1LDEwMSwxMTAsMTE2LAorICAgIDExNCwxMjEsMTE0LDI1MywwLDAsMCwxMTQsMTY0LDAsMCwwLDExNCwxMjgsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCisgICAgMjE4LDksOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksNzQsNCwwLDAsMTE1LAorICAgIDQwLDAsMCwwLDAsNSw2LDEsMTMsMSwyMSwxLDMsMSwxNSwxLAorICAgIDEyLDEsMTUsMSwyMSwyLDE4LDEsMTIsMSwzLDEsMTUsMSw0LDEsCisgICAgOSwxLDEyLDEsMTIsNSwxNywyLDE4LDEsOSwxLDEyMiwyMCw4MCw5NywKKyAgICAxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwKKyAgICAxMDEsOTksOTksNCwwLDAsMCwwLDAsMCwwLDYsMCwwLDAsNCwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTQwLDAsMCwwLDEyNCwyLDAsMTAwLAorICAgIDEsMCwxMDcsOCwwLDExNCwyMSwwLDExNiwwLDAsMTA2LDEsMCwxMjUsMiwKKyAgICAwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMSwwLDEyNCwyLDAsMTI0LDMsMCwKKyAgICAxMzEsMywwLDEyNSw0LDAsMTI0LDQsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LAorICAgIDU4LDAsMTAwLDEsMCw4MywxMjQsNCwwLDEwNiwzLDAsMTAwLDEsMCwxMDcsCisgICAgOCwwLDExNCwxMzIsMCwxMjQsNCwwLDEwNiw0LDAsMTI1LDUsMCwxMjQsNSwKKyAgICAwLDExNCwxMjUsMCwxMDAsMiwwLDEyNCw0LDAsOTUsNSwwLDExNiw2LDAsCisgICAgMTI0LDEsMCwxMjQsNSwwLDEyNCwwLDAsMTA2LDIsMCwxMzEsMywwLDEyNCwKKyAgICA0LDAsOTUsNCwwLDEyNCw0LDAsODMsMTAwLDEsMCw4MywxMTAsNCwwLAorICAgIDEyNCw0LDAsODMsMTAwLDEsMCw4Myw0MSwzLDEyMiw5OCwxMDIsMTA1LDExMCwxMDAsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLDExMCwzMiwxMTUsCisgICAgMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwzMiwxMTEsMTE0LDMyLDM5LDExMiw5NywxMTYsMTA0LAorICAgIDM5LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw0Niw3OCw5MCwKKyAgICA5LDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQxLDcsMTE0LDcsMCwwLAorICAgIDAsMTE0LDM1LDAsMCwwLDExNCw1LDEsMCwwLDExNCwxMjcsMCwwLDAsCisgICAgMTE0LDE1NiwwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCwyMzAsMCwwLDAsNDEsCisgICAgNiwxMTQsMTcwLDAsMCwwLDExNCwxMjYsMCwwLDAsMTE0LDM1LDAsMCwwLAorICAgIDExNCwxODAsMCwwLDAsMTE0LDE2NCwwLDAsMCwxMTQsNCwxLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTgxLAorICAgIDAsMCwwLDEwNiw0LDAsMCwxMTUsMjYsMCwwLDAsMCw0LDEyLDEsCisgICAgOSwxLDIxLDEsMTIsMSw0LDEsMTUsMSw5LDEsNiwzLDksMSwKKyAgICAyNCwxLDQsMiw3LDIsMTIyLDIwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsCisgICAgMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywwLDAsCisgICAgMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsNDEsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTI0LAorICAgIDIsMCwxMzEsMiwwLDEyNSwzLDAsMTI0LDMsMCwxMDAsMSwwLDEwNyw4LAorICAgIDAsMTE0LDM0LDAsMTAwLDEsMCw4MywxMjQsMywwLDEwNiwxLDAsODMsNDEsCisgICAgMiwxMjIsMTcwLDEwMiwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDMyLDExMSwKKyAgICAxMTQsMzIsMzksMTEyLDk3LDExNiwxMDQsMzksMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLAorICAgIDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LAorICAgIDMyLDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsCisgICAgNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSwKKyAgICA5Nyw5OSwxMDQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LAorICAgIDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwKKyAgICAxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMiwKKyAgICAxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLAorICAgIDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwyLAorICAgIDExNCwxODEsMCwwLDAsMTE0LDEyNywwLDAsMCw0MSw0LDExNCwxNzAsMCwwLAorICAgIDAsMTE0LDEyNiwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDE2NCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsCisgICAgMTgyLDAsMCwwLDEyOCw0LDAsMCwxMTUsOCwwLDAsMCwwLDgsMTgsCisgICAgMSwxMiwxLDQsMSwxMjIsMjIsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxMiwxMTQsCisgICAgMTEyLDAsMCwwLDExNCwxMTEsMCwwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE0LAorICAgIDAsMCwwLDExNCwxODMsMCwwLDAsMTE0LDI1MCwwLDAsMCwxMTQsMjU1LDAsCisgICAgMCwwLDExNCwxLDEsMCwwLDExNCwyLDEsMCwwLDExNCw1LDEsMCwKKyAgICAwLDExNCwxODEsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsCisgICAgMjQ5LDAsMCwwLDgsNCwwLDAsMTE1LDIyLDAsMCwwLDEyLDIsNiwKKyAgICAyLDE4LDgsMTgsMTcsMTgsMjIsMTgsMTUsMywxLDE4LDMxLDMsMSwyMSwKKyAgICAyMSwzLDEsMTE0LDI0OSwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwzLDAsMCwwLDY0LDAsMCwwLDExNSwxMzMsMCwKKyAgICAwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsCisgICAgMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwwLAorICAgIDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDEsNiwwLDkwLAorICAgIDcsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw4LDAsMTAwLDgsCisgICAgMCwxMDAsOSwwLDEzMiwwLDAsOTAsOSwwLDEwMCwxMCwwLDEwMCwxMSwwLAorICAgIDEwMCwxMiwwLDEzMiwxLDAsOTAsMTAsMCwxMDAsMTMsMCwxMDAsMTQsMCwxMzIsCisgICAgMCwwLDkwLDExLDAsMTAxLDEyLDAsMTAwLDE1LDAsMTAwLDE2LDAsMTMyLDAsCisgICAgMCwxMzEsMSwwLDkwLDEzLDAsMTAwLDE3LDAsMTAwLDE4LDAsMTMyLDAsMCwKKyAgICA5MCwxNCwwLDEwMCwxMCwwLDgzLDQxLDE5LDIxOCwxMCw3MCwxMDUsMTA4LDEwMSw3MCwKKyAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiwxNzIsNzAsMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwKKyAgICAxMDAsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsCisgICAgMTEwLDExNiwxMDEsMTE0LDk3LDk5LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwKKyAgICAzMiw5NywxMTQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsMTAwLDMyLDEwMiwxMTEsMTE0LDMyLAorICAgIDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSw5NywxMTAsOTksMTAxLDQ0LDMyLDk4LDEwMSwxMDUsCisgICAgMTEwLDEwMywxMCwzMiwzMiwzMiwzMiwxMTQsMTAxLDEwMiwxMTQsMTAxLDExNSwxMDQsMTAxLDEwMCwKKyAgICAzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwKKyAgICAxMTEsMTE0LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsCisgICAgMTE1LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDUsMTEwLDEwMywzMiwxMDQsOTcsMTE1LDMyLDk4LAorICAgIDEwMSwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDEwMSwxMDAsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsCisgICAgNSwwLDAsMCw3LDAsMCwwLDExNSwxMjIsMCwwLDAsMTAzLDAsMCwKKyAgICAxMjUsMywwLDEyMCw1MiwwLDEyNCwyLDAsNjgsOTMsNDQsMCw5MiwyLDAsCisgICAgMTM3LDAsMCwxMjUsNCwwLDEyNCwzLDAsMTA2LDAsMCwxMzUsMCwwLDEwMiwKKyAgICAxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLDAsMTI0LDQsMCw2OCwxMzEsCisgICAgMSwwLDEzMSwxLDAsMSwxMTMsMTMsMCw4NywxMjQsMywwLDEyNCwwLDAsCisgICAgOTUsMSwwLDEyNCwxLDAsMTEyLDc5LDAsMTAwLDMsMCwxMjQsMCwwLDk1LAorICAgIDIsMCwxMDAsNiwwLDEyNCwwLDAsOTUsMywwLDExNiw0LDAsMTMxLDAsCisgICAgMCwxMjQsMCwwLDk1LDUsMCwxMTYsNCwwLDEzMSwwLDAsMTI0LDAsMCwKKyAgICA5NSw2LDAsMTAwLDUsMCw4Myw0MSw3LDEyMiwxNTQsNzMsMTEwLDEwNSwxMTYsMTA1LAorICAgIDk3LDEwOCwxMDUsMTIyLDEwMSwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLAorICAgIDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTExLDExMCwKKyAgICAzMiw5NywxMTAsMTAwLDMyLDk3LDMyLDExOCw5NywxMTQsMTA1LDk3LDk4LDEwOCwxMDEsMzIsCisgICAgMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDEwLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDUwLDQ1LDExNiwxMTcsMTEyLDEwOCwxMDEsMTE1LDMyLDk5LDExMSwxMTAsMTE2LDk3LAorICAgIDEwNSwxMTAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTE3LAorICAgIDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDEwMSw5OSwxMTEsMTAzLDExMCwKKyAgICAxMDUsMTIyLDEwMSwxMTUsNDYsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMywwLDAsMCw1MSwwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LAorICAgIDAsMCw5MywxNywwLDEyNSwxLDAsMTI0LDEsMCwxMzYsMCwwLDEwMiwyLAorICAgIDAsODYsMSwxMTMsMywwLDEwMCwwLDAsODMsNDEsMSw3OCwxMTQsNCwwLAorICAgIDAsMCw0MSwyLDExNCwyMiwwLDAsMCwxMTQsMjI1LDAsMCwwLDQxLDEsCisgICAgMTE0LDEyNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsCisgICAgMjI3LDAsMCwwLDE1Nyw0LDAsMCwxMTUsMiwwLDAsMCw2LDAsMTIyLAorICAgIDM4LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwKKyAgICAxMDUsMTE2LDk1LDk1LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsCisgICAgMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTE0LDU4LDAsMCwwLDExNCwyOSwwLDAsCisgICAgMCw3OCwxMTQsODcsMCwwLDAsNDEsNywxMTQsMTQ5LDAsMCwwLDIxOCw4LAorICAgIDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNCwzNSwwLDAsMCwyMTgsMTEsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwyMTgsMywxMTUsMTAxLDExNiwyMTgsCisgICAgMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTksOTcsOTksMTA0LDEwMSwyMTgsMTksOTUsMTE0LAorICAgIDEwMSwxMDgsOTcsMTIwLDEwMSwxMDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTksOTcsOTksMTA0LAorICAgIDEwMSw0MSw1LDExNCwxMDgsMCwwLDAsMTE0LDM1LDAsMCwwLDIxOCwxNCwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LDkwLDcsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE0LDE2NiwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICA0MSwxLDExNCwxMjcsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE4NSwwLDAsCisgICAgMCwxNTEsNCwwLDAsMTE1LDE2LDAsMCwwLDAsNCw2LDEsMTksMSwKKyAgICAzNiwxLDksMiwxNSwxLDksMSwxMiwxLDEyMiwxOSw3MCwxMDUsMTA4LDEwMSwKKyAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMDAsMywwLDEyNCwwLDAsOTUsCisgICAgMCwwLDEwMCwyLDAsODMsNDEsNCwxMjIsMzEsNzMsMTEwLDExOCw5NywxMDgsMTA1LAorICAgIDEwMCw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLAorICAgIDExNCwxMjEsMzIsMTA5LDExNiwxMDUsMTA5LDEwMSw0NiwxMTQsMjksMCwwLDAsNzgsMTE0LAorICAgIDg3LDAsMCwwLDQxLDEsMTE0LDgsMSwwLDAsNDEsMSwxMTQsMTA4LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKKyAgICAwLDExNCwyNTAsMCwwLDAsMTY1LDQsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgMiwxMjIsMjgsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDUsMTEwLAorICAgIDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDU5LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsCisgICAgMSwwLDEzMSwxLDAsMTI1LDIsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsCisgICAgMCwxMTQsMzcsMCwxMDAsMSwwLDEwMywwLDAsMTAyLDIsMCw4MywxMjQsMiwKKyAgICAwLDEwNiwxLDAsMTI0LDIsMCwxMDYsMiwwLDExMiw1NSwwLDEwMywwLDAsCisgICAgMTAyLDIsMCw4Myw0MSwyLDEyMiwxOTcsODQsMTE0LDEyMSwzMiwxMTYsMTExLDMyLDEwMiwKKyAgICAxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsCisgICAgMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSwKKyAgICA0NiwzMiw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw0MCwxMDgsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ0LDMyLDEwOCwxMDUsMTE1LDExNiw0NSwxMTEsMTAyLDQ1LDExMiwxMTEsMTE0LDExNiwxMDUsCisgICAgMTExLDExMCwxMTUsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsCisgICAgMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLAorICAgIDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAyLAorICAgIDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsCisgICAgOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDMsCisgICAgMTE0LDE4MSwwLDAsMCwxMTQsMTI3LDAsMCwwLDExNCwxNTYsMCwwLDAsNDEsCisgICAgMywxMTQsMTA4LDAsMCwwLDExNCwxMjYsMCwwLDAsMTE0LDE2NCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsCisgICAgMTI0LDAsMCwwLDE3MSw0LDAsMCwxMTUsOCwwLDAsMCwwLDcsMTUsCisgICAgMSwxMiwxLDEwLDEsMTIyLDIyLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTksNiwwLAorICAgIDAsMCwwLDAsMCwwLDcsMCwwLDAsNywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsNDAsMCwwLDAsMTI0LDEsMCwxMjQsMiwwLDEyNCwzLDAsCisgICAgMTMxLDIsMCwxMjUsNiwwLDExNiwwLDAsMTI0LDIsMCwxMjQsMywwLDEwMCwKKyAgICAxLDAsMTI0LDYsMCwxMDAsMiwwLDEyNCw0LDAsMTMxLDIsMiw4Myw0MSwKKyAgICAzLDc4LDExNCwxMjcsMCwwLDAsMTE0LDE1NiwwLDAsMCw0MSwxLDExNCwxNjcsCisgICAgMCwwLDAsNDEsNywxMTQsMTA4LDAsMCwwLDExNCwxNjUsMCwwLDAsMTE0LAorICAgIDEyNiwwLDAsMCwxMTQsMzUsMCwwLDAsOTAsNCwxMTUsMTA5LDExNSwxMDgsMTE0LAorICAgIDE4MCwwLDAsMCwxMTQsMTI3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw1LDAsMCwwLDExNCw1LDEsMCwwLDE4Myw0LDAsCisgICAgMCwxMTUsNiwwLDAsMCwwLDEsMTUsMSwxOCwxLDEyMiwyMCw3MCwxMDUsCisgICAgMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsCisgICAgMTAxLDk5LDc4LDk5LDMsMCwwLDAsMCwwLDAsMCwxNCwwLDAsMCwKKyAgICAxNSwwLDAsMCw2NywwLDAsMCwxMTUsMjM0LDEsMCwwLDEwMCwxLDAsCisgICAgMTI1LDMsMCwxMjQsMSwwLDEwNiwwLDAsMTAwLDIsMCwxMzEsMSwwLDEwMCwKKyAgICAzLDAsMjUsMTI1LDQsMCwxMjEsMzQsMCwxMTYsMSwwLDEyNCwwLDAsMTA2LAorICAgIDIsMCwxMTIsNDksMCwxMTYsMywwLDEwNiw0LDAsMTMxLDAsMCwxMzEsMSwKKyAgICAwLDEwNiw1LDAsMTI1LDUsMCw4NywxMTAsMjQsMCw0LDExNiw2LDAsMTA3LAorICAgIDEwLDAsMTE0LDg1LDAsMSwxLDEsMTAwLDEwLDAsMTI1LDUsMCw4OSwxMTAsCisgICAgMSwwLDg4LDEyNCw1LDAsMTI0LDAsMCwxMDYsNywwLDEwNywzLDAsMTE0LAorICAgIDEyMCwwLDEyNCwwLDAsMTA2LDgsMCwxMzEsMCwwLDEsMTI0LDUsMCwxMjQsCisgICAgMCwwLDk1LDcsMCwxMTYsOSwwLDEzMSwwLDAsMTE0LDE1MywwLDEyNCwwLAorICAgIDAsMTA2LDEwLDAsMTI1LDYsMCwxMjQsNCwwLDEwNiwxMSwwLDEzMSwwLDAsCisgICAgMTI1LDcsMCwxMTAsMTUsMCwxMjQsMCwwLDEwNiwxMiwwLDEyNSw2LDAsMTI0LAorICAgIDQsMCwxMjUsNywwLDEyNCw3LDAsMTI0LDYsMCwxMDcsNiwwLDExNCw0NSwKKyAgICAxLDExNiwxMywwLDEyNCwwLDAsMTA2LDIsMCwxMjQsNCwwLDEzMSwyLDAsCisgICAgMTI1LDgsMCwxMjAsMTAwLDAsMTI0LDAsMCwxMDYsMTQsMCw2OCw5Myw3NywwLAorICAgIDkyLDIsMCwxMjUsOSwwLDEyNSwxMCwwLDEwMCw1LDAsMTI0LDksMCwyMywKKyAgICAxMjUsMTEsMCwxMTYsMTMsMCwxMjQsOCwwLDEyNCwxMSwwLDEzMSwyLDAsMTI1LAorICAgIDEyLDAsMTE2LDE1LDAsMTI0LDEyLDAsMTMxLDEsMCwxMTQsMjA4LDAsMTI0LDAsCisgICAgMCwxMDYsMTYsMCwxMjQsMTAsMCwxMjQsMSwwLDEyNCwxMiwwLDEyNCw4LDAsCisgICAgMTAzLDEsMCwxMjQsMiwwLDEzMSw1LDAsODMsMTEzLDIwOCwwLDg3LDExNiwxNywKKyAgICAwLDEyNCw4LDAsMTMxLDEsMCwxMjUsMywwLDEyMCwxMjMsMCwxMjQsMCwwLAorICAgIDEwNiwxNCwwLDY4LDkzLDExMiwwLDkyLDIsMCwxMjUsOSwwLDEyNSwxMCwwLAorICAgIDExNiwxMywwLDEyNCwwLDAsMTA2LDIsMCwxMjQsNCwwLDEyNCw5LDAsMjMsCisgICAgMTMxLDIsMCwxMjUsMTIsMCwxMTYsMTgsMCwxMDAsNiwwLDEwNiwxOSwwLDEyNCwKKyAgICAxMiwwLDEzMSwxLDAsMTAwLDcsMCwxMDAsMywwLDEzMSwxLDEsMSwxMjQsCisgICAgNywwLDEyNCw5LDAsMjMsMTI0LDYsMCwxMDcsNiwwLDExNCw1NSwxLDExNiwKKyAgICAxNSwwLDEyNCwxMiwwLDEzMSwxLDAsMTE0LDU1LDEsMTI0LDAsMCwxMDYsMTYsCisgICAgMCwxMjQsMTAsMCwxMjQsMSwwLDEyNCwxMiwwLDEwMCw4LDAsMTI0LDIsMCwKKyAgICAxMzEsNSwwLDgzLDExMyw1NSwxLDg3LDEyNCwzLDAsMTE0LDIzMCwxLDExNiwxOCwKKyAgICAwLDEwMCw5LDAsMTA2LDE5LDAsMTI0LDgsMCwxMzEsMSwwLDEzMSwxLDAsCisgICAgMSwxMTYsMjAsMCwxMDYsMjEsMCwxMjQsMSwwLDEwMCw4LDAsMTMxLDIsMCwKKyAgICAxMjUsMTMsMCwxMjQsOCwwLDEwMywxLDAsMTI0LDEzLDAsOTUsMjIsMCwxMjQsCisgICAgMTMsMCw4MywxMDAsOCwwLDgzLDQxLDExLDEyMiwxMjUsODQsMTE0LDEyMSwzMiwxMTYsCisgICAgMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLAorICAgIDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwKKyAgICAxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTEyLDExMSwxMTQsMTE2LDEwNSwKKyAgICAxMTEsMTEwLDExNSw0NiwzMiw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw0MCwxMDgsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ0LDMyLDEwOCwxMDUsMTE1LDExNiw0NSwxMTEsMTAyLDQ1LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDEsNDYsNzAsMTE0LDU4LDAsMCwwLDExNCw1NiwKKyAgICAwLDAsMCwxMTQsMjksMCwwLDAsMTE0LDE4NSwwLDAsMCwxMjIsOSwxMTYsCisgICAgMTE0LDEyMSwxMDUsMTEwLDEwMywzMiwxMjMsMTI1LDExNCw5OCwwLDAsMCw3OCwxMjIsMjUsCisgICAgMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsCisgICAgOTksMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEyMywxMjUsMTE0LDg3LDAsMCwwLDQxLDIzLAorICAgIDExNCwzMiwwLDAsMCwxMTQsMzksMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwKKyAgICAzLDAsMCwwLDExNCw0NSwwLDAsMCwxMTQsMjE5LDAsMCwwLDExNCw0MCwKKyAgICAwLDAsMCwxMTQsOCwxLDAsMCwyMTgsMTEsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsMTE0LDYsMCwwLDAsMTE0LDExLDEsMCwwLDExNCwKKyAgICA4OCwwLDAsMCwxMTQsMTAsMSwwLDAsMTE0LDI4LDAsMCwwLDExNCw3LAorICAgIDEsMCwwLDExNCw0NCwwLDAsMCwxMTQsNSwxLDAsMCwxMTQsNDYsMCwKKyAgICAwLDAsMTE0LDEwNSwwLDAsMCwxMTQsNDcsMCwwLDAsMTE0LDEyMSwwLDAsCisgICAgMCwxMTQsMTYwLDAsMCwwLDExNCwxNTYsMCwwLDAsNDEsMTQsMTE0LDEwOCwwLAorICAgIDAsMCwxMTQsMTI2LDAsMCwwLDExNCwxODAsMCwwLDAsOTAsMTIsMTA1LDExNSwKKyAgICA5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw5MCwxMSwxMTYsOTcsMTA1LDEwOCwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTMzLDAsMCwwLDkwLDUsOTksOTcsCisgICAgOTksMTA0LDEwMSw5MCwxMiw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDkwLDksOTgsOTcsMTE1LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMjI1LDAsMCwKKyAgICAwLDExNCwxNjUsMCwwLDAsOTAsMTMsMTA1LDExMCwxMDUsMTE2LDk1LDEwMiwxMDUsMTA4LAorICAgIDEwMSwxMTAsOTcsMTA5LDEwMSw5MCw5LDEwMiwxMTcsMTA4LDEwOCw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICAxMTQsMTY0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDExNCwxODEsMCwwLDAsMTg4LDQsMCwwLDExNSw2OCwwLAorICAgIDAsMCwwLDMsNiwxLDE5LDEsMywxLDM0LDEsMTMsMSwxMSwxLAorICAgIDE1LDEsMTAsMSw5LDIsOSwxLDksMSwxNSwyLDksMSw2LDIsCisgICAgMTIsMSwxOCwxLDIyLDEsMTAsMSwxNSwxLDEyLDEsMzIsNCwxMiwyLAorICAgIDIyLDEsMjIsMSwyNSwxLDE2LDEsMTIsMSwyOSwxLDYsMSwxOSwxLAorICAgIDE4LDEsMTIsMSw0LDEsMTIyLDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDEsMCwwLAorICAgIDAsMCwwLDAsMCw5LDAsMCwwLDEzLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxMSwxLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDEsMCwxMjEsCisgICAgMzEsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LDEsMCwxMTIsMzMsMCwxMTYsMSwKKyAgICAwLDEwNiwzLDAsMTMxLDAsMCwxMzEsMSwwLDEyNSwyLDAsODcsMTEwLDMzLAorICAgIDAsNCwxMTYsNCwwLDExNiw1LDAsMTE2LDYsMCwxMDIsMywwLDEwNywxMCwKKyAgICAwLDExNCw3NSwwLDEsMSwxLDEwMywwLDAsMTI1LDIsMCw4OSwxMTAsMSwKKyAgICAwLDg4LDExNiw3LDAsMTA2LDgsMCwxMDYsOSwwLDEwMCwxLDAsMTMxLDEsCisgICAgMCwxMTUsMTEyLDAsMTE2LDEwLDAsMTI0LDIsMCwxMzEsMSwwLDEyNCwwLDAsCisgICAgOTUsMTEsMCwxMTAsMTExLDAsMTE2LDEwLDAsMTMxLDAsMCwxMjUsMywwLDEyMCwKKyAgICA5MCwwLDEyNCwyLDAsNjgsOTMsODIsMCwxMjUsNCwwLDEyNCw0LDAsMTA2LAorICAgIDEyLDAsMTAwLDIsMCwxMzEsMSwwLDkyLDMsMCwxMjUsNSwwLDEyNSw2LAorICAgIDAsMTI1LDcsMCwxMjQsNiwwLDExNCwxOTEsMCwxMDAsMywwLDEwNiwxMywwLAorICAgIDEyNCw1LDAsMTI0LDcsMCwxMDYsMTQsMCwxMzEsMCwwLDEzMSwyLDAsMTI1LAorICAgIDgsMCwxMTAsNiwwLDEyNCw1LDAsMTI1LDgsMCwxMjQsMywwLDEwNiwxNSwKKyAgICAwLDEyNCw4LDAsMTMxLDEsMCwxLDExMywxMjgsMCw4NywxMjQsMywwLDEyNCwKKyAgICAwLDAsOTUsMTEsMCwxMTYsNywwLDEwNiw4LDAsMTA2LDksMCwxMTYsMTYsCisgICAgMCwxMzEsMSwwLDExNCw3LDEsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsCisgICAgMTI0LDIsMCw2OCwxMzEsMSwwLDEyNCwwLDAsOTUsMTcsMCwxMDAsNiwwLAorICAgIDgzLDQxLDcsMTIyLDY4LDcwLDEwNSwxMDgsMTA4LDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LAorICAgIDk5LDEwNCwxMDEsMzIsMTExLDEwMiwzMiwxMTIsMTExLDExNiwxMDEsMTEwLDExNiwxMDUsOTcsMTA4LAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwMCwKKyAgICAxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsNDYsMTE0LDAsMCwwLDAsMTE0LDU4LAorICAgIDAsMCwwLDEyMiw1LDEyMywxMjUsNDYsMTIzLDEyNSw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDgzLDAsMCwwLDExNSwKKyAgICAyOCwwLDAsMCwxMDQsMCwwLDEyNCwwLDAsOTMsMTgsMCwxMjUsMSwwLAorICAgIDEyNCwxLDAsMTA2LDAsMCwxMzEsMCwwLDE0NiwyLDAsMTEzLDYsMCw4MywKKyAgICAxMTQsNCwwLDAsMCw0MSwxLDExNCw4OCwwLDAsMCw0MSwyLDExNCwyMiwKKyAgICAwLDAsMCw5MCwyLDEwMiwxMTAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDUsMCwwLDAsMjUwLDksNjAsMTE1LDEwMSwxMTYsOTksMTExLDEwOSwxMTIsCisgICAgNjIsNiw1LDAsMCwxMTUsMiwwLDAsMCw5LDAsMTIyLDQxLDcwLDEwNSwKKyAgICAxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LAorICAgIDk3LDk5LDEwNCwxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDExNSwKKyAgICAxMDEsMTE2LDk5LDExMSwxMDksMTEyLDYyLDc4LDQxLDE4LDExNCwzNSwwLDAsMCwxMTQsCisgICAgMywwLDAsMCw5MCw3LDEwOCwxMDUsMTE1LDExNiwxMDAsMTA1LDExNCwxMTQsNDUsMCwKKyAgICAwLDAsMTE0LDAsMSwwLDAsMjE4LDE1LDgwLDEwMSwxMTQsMTA5LDEwNSwxMTUsMTE1LAorICAgIDEwNSwxMTEsMTEwLDY5LDExNCwxMTQsMTExLDExNCwyMTgsMTgsNzgsMTExLDExNiw2NSw2OCwxMDUsCisgICAgMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDExNCw3LDAsMCwKKyAgICAwLDExNCw4LDAsMCwwLDExNCw5LDAsMCwwLDExNCw5LDEsMCwwLAorICAgIDExNCwxMCwxLDAsMCwxMTQsODMsMCwwLDAsMTE0LDQ3LDAsMCwwLDExNCwKKyAgICA4OCwwLDAsMCwyMTgsMyw5NywxMDAsMTAwLDExNCwxMCwwLDAsMCwxMTQsMTEsCisgICAgMSwwLDAsNDEsOSwxMTQsMTA4LDAsMCwwLDExNCwzNSwwLDAsMCw5MCwKKyAgICA4LDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDExNSw5MCwyMSwxMDgsMTExLDExOSwxMDEsMTE0LAorICAgIDk1LDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDk1LDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDExNSwKKyAgICAxMTQsMjQ1LDAsMCwwLDExNCwxMDYsMCwwLDAsMTE0LDIzNywwLDAsMCwxMTQsCisgICAgMjI1LDAsMCwwLDkwLDgsMTEwLDEwMSwxMTksOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDEzLDEsCisgICAgMCwwLDIzMyw0LDAsMCwxMTUsMzQsMCwwLDAsMCwyLDksMSwzLAorICAgIDEsMzEsMSwyMiwzLDExLDMsMTgsMSwxOCw3LDksMSwxMywxLDI0LAorICAgIDEsNiwxLDI3LDIsNiwxLDE3LDEsOSwxLDE4LDEsMTIyLDIyLDcwLAorICAgIDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwKKyAgICAwLDAsMywwLDAsMCw3LDAsMCwwLDExNSwyNSwwLDAsMCwxMzUsCisgICAgMCwwLDEzNSwxLDAsMTAyLDIsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsCisgICAgMCwxMjUsMiwwLDEyNCwyLDAsODMsNDEsMyw5NywyMCwxLDAsMCw2NSwKKyAgICAzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LAorICAgIDEwNSw5OSwxMDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDk5LDEwOCwKKyAgICAxMTEsMTE1LDExNywxMTQsMTAxLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTExLDExMCwzMiwKKyAgICAxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMDUsMTA4LDEwOCwKKyAgICAzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywxMTAsMzIsMTA1LDExMCwxMTUsMTE2LDk3LAorICAgIDExMCw5OSwxMDEsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLAorICAgIDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDMyLAorICAgIDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsOTksMTA4LDExMSwxMTUsMTE3LDExNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LAorICAgIDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsCisgICAgMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSw0NCwzMiw3MywxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCisgICAgNCwwLDAsMCwxOSwwLDAsMCwxMTUsNDMsMCwwLDAsMTE2LDAsMCwKKyAgICAxMjQsMCwwLDEzMSwxLDAsMTE1LDMwLDAsMTE2LDEsMCwxMDAsMSwwLDEwMCwKKyAgICAyLDAsMTI0LDAsMCwxMzEsMSwxLDEzMCwxLDAsMTM2LDAsMCwxMjQsMCwKKyAgICAwLDEzNiwxLDAsMTQwLDEsMCw4Myw0MSwzLDEyMiw0NSw4MCw5NywxMTYsMTA0LAorICAgIDMyLDEwNCwxMTEsMTExLDEwNywzMiwxMDIsMTExLDExNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDQ2LDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSw0Niw3MCwxMDUsCisgICAgMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEyMiwzMCwxMTEsMTEwLDEwOCwxMjEsMzIsCisgICAgMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEwNSwxMDEsMTE1LDMyLDk3LDExNCwxMDEsMzIsCisgICAgMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMTE0LDM1LDAsMCwwLDQxLDIsCisgICAgMTE0LDQ2LDAsMCwwLDExNCwxMDcsMCwwLDAsNDEsMSwxMTQsMzUsMCwwLAorICAgIDAsNDEsMiwxMTQsMTcwLDAsMCwwLDExNCwxMiwxLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNSwwLDAsMCwyMTgsMjQsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKKyAgICAxMTEsMTA3LDk1LDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsMTgsNSwwLDAsMTE1LDYsMCwwLDAsMCwyLDEyLDEsMTgsMSwKKyAgICAxMjIsNTQsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMDQsMTExLDExMSwxMDcsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw5NSwxMDIsMTExLDExNCw5NSw3MCwxMDUsCisgICAgMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNCw0LDAsMCwwLDQxLDMsMTE0LAorICAgIDE3MCwwLDAsMCwxMTQsMTIsMSwwLDAsMTE0LDE4LDEsMCwwLDExNCw0LAorICAgIDAsMCwwLDQxLDIsMTE0LDE3MCwwLDAsMCwxMTQsMTIsMSwwLDAsMTE0LAorICAgIDUsMCwwLDAsMjE4LDksMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDgsCisgICAgNSwwLDAsMTE1LDQsMCwwLDAsMCwxMCwyMSw2LDEyMiwyMCw3MCwxMDUsCisgICAgMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsCisgICAgMTExLDEwNyw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwKKyAgICAwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsODMsNDEsMiw3OCwxMjIsCisgICAgMTYsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwxMjMsMzMsMTE0LDEyNSwKKyAgICA0MSw0MSwyLDExNCw0NywwLDAsMCwxMTQsMzUsMCwwLDAsNDEsMSwxMTQsCisgICAgMTA4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAorICAgIDAsMCwwLDExNCwyNDQsMCwwLDAsMjYsNSwwLDAsMTE1LDIsMCwwLAorICAgIDAsMCwxLDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LAorICAgIDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw0MSwxNSwxMTQsMTEyLDAsMCwwLDExNCwKKyAgICAxMTEsMCwwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE0LDAsMCwwLDExNCwxODUsCisgICAgMCwwLDAsMTE0LDI1MCwwLDAsMCwxMTQsMTMwLDAsMCwwLDExNCwxODIsMCwKKyAgICAwLDAsMTE0LDEyNCwwLDAsMCwxMTQsNSwxLDAsMCwxMTQsMTgxLDAsMCwKKyAgICAwLDExNCwxMywxLDAsMCwxMTQsMTgzLDAsMCwwLDExNCwxOSwxLDAsMCwKKyAgICAxMTQsMjQ0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw2LDEsMCwwLDE0Miw0LAorICAgIDAsMCwxMTUsMjAsMCwwLDAsMTIsNyw2LDIsMTIsMTQsMTIsNCw2LAorICAgIDIsMTIsMTIsMTIsNSwxNSw0NSwxMiwzMSwxOCwxOCwxMTQsNiwxLDAsMCwKKyAgICA5OSw0LDAsMCwwLDAsMCwwLDAsNiwwLDAsMCwxMSwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTk1LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwKKyAgICAxMDAsMSwwLDEzMSwxLDAsMTI1LDQsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLAorICAgIDIsMCwxMzEsMSwwLDEyNSw1LDAsMTI0LDQsMCwxMTUsOTksMCwxMjQsNSwKKyAgICAwLDExNCw1NCwwLDEyNCw1LDAsMTA2LDEsMCwxMjUsNCwwLDExMCw0NSwwLAorICAgIDEyNCwyLDAsMTI0LDMsMCwxMDcsMiwwLDExNCw4NCwwLDExNiwyLDAsMTI0LAorICAgIDEsMCwxMjQsMiwwLDEzMSwyLDAsMTI1LDQsMCwxMTAsMTUsMCwxMTYsMywKKyAgICAwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDEyNSw0LDAsMTI0LDUsMCwKKyAgICAxMTUsMTI2LDAsMTE2LDQsMCwxMjQsMSwwLDEyNCwyLDAsMTAwLDMsMCwxMjQsCisgICAgNCwwLDEzMSwyLDEsMTI1LDUsMCwxMjEsNDQsMCwxMjQsNSwwLDEyNCwwLAorICAgIDAsMTAwLDIsMCw2MCwxMjQsNCwwLDEyNCwwLDAsMTAwLDEsMCw2MCwxMjQsCisgICAgMiwwLDEyNCwwLDAsMTAwLDQsMCw2MCwxMjQsMywwLDEyNCwwLDAsMTAwLAorICAgIDUsMCw2MCw4NywxMTAsMTgsMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDE5MCwKKyAgICAwLDEsMSwxLDg5LDExMCwxLDAsODgsMTAwLDAsMCw4Myw0MSw2LDc4LAorICAgIDIxOCwxMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDIxOCw4LDk1LDk1LAorICAgIDExNSwxMTIsMTAxLDk5LDk1LDk1LDExNCwxMjcsMCwwLDAsOTAsOCw5NSw5NSwxMDIsCisgICAgMTA1LDEwOCwxMDEsOTUsOTUsOTAsMTAsOTUsOTUsOTksOTcsOTksMTA0LDEwMSwxMDAsOTUsCisgICAgOTUsNDEsNiwyMTgsMywxMDMsMTAxLDExNiwxMTQsMTI3LDAsMCwwLDExNCwyMjMsMCwKKyAgICAwLDAsMTE0LDIxOCwwLDAsMCwxMTQsMTY3LDAsMCwwLDIxOCw5LDY5LDEyMCwKKyAgICA5OSwxMDEsMTEyLDExNiwxMDUsMTExLDExMCw0MSw2LDkwLDIsMTEwLDExNSwxMTQsMTA2LDAsCisgICAgMCwwLDkwLDgsMTEyLDk3LDExNiwxMDQsMTEwLDk3LDEwOSwxMDEsOTAsOSw5OSwxMTIsCisgICAgOTcsMTE2LDEwNCwxMTAsOTcsMTA5LDEwMSwxMTQsMTI3LDAsMCwwLDExNCwxNjQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCisgICAgMjE4LDE0LDk1LDEwMiwxMDUsMTIwLDk1LDExNywxMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsNSwwLDAsMTE1LDM0LDAsMCwwLDAsMiwxNSwxLDE1LDEsNiwKKyAgICAxLDYsMSwxMiwxLDEyLDEsMTgsMiwxNSwxLDYsMSwyMSwxLDMsCisgICAgMSwxMCwxLDEwLDEsMTAsMSwxNCwxLDEzLDIsMTE0LDI0LDEsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDU1LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwKKyAgICAxMDYsMiwwLDEzMSwwLDAsMTAyLDIsMCwxMjUsMCwwLDExNiwzLDAsMTE2LAorICAgIDQsMCwxMDIsMiwwLDEyNSwxLDAsMTE2LDUsMCwxMTYsNiwwLDEwMiwyLAorICAgIDAsMTI1LDIsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMDMsMywwLAorICAgIDgzLDQxLDEsMTIyLDk1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDEwOCwKKyAgICAxMDUsMTE1LDExNiwzMiwxMTEsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSw0NSw5OCw5NywxMTUsMTAxLAorICAgIDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw2OSw5Nyw5OSwxMDQsMzIsMTA1LDExNiwxMDEsMTA5LAorICAgIDMyLDEwNSwxMTUsMzIsOTcsMzIsMTE2LDExNywxMTIsMTA4LDEwMSwzMiw0MCwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ0LDMyLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsNDEsNDYsMTAsCisgICAgMzIsMzIsMzIsMzIsNDEsNywxMTQsMjI0LDAsMCwwLDExNCwxNDUsMCwwLDAsCisgICAgMjE4LDE4LDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDk1LDExNSwxMTcsMTAyLDEwMiwKKyAgICAxMDUsMTIwLDEwMSwxMTUsMTE0LDIxOCwwLDAsMCwxMTQsODQsMCwwLDAsMTE0LDIyMywKKyAgICAwLDAsMCwxMTQsNzQsMCwwLDAsNDEsMyw5MCwxMCwxMDEsMTIwLDExNiwxMDEsCisgICAgMTEwLDExNSwxMDUsMTExLDExMCwxMTUsOTAsNiwxMTUsMTExLDExNywxMTQsOTksMTAxLDkwLDgsCisgICAgOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDE2MSwwLDAsMCw1NSw1LDAsMCwKKyAgICAxMTUsOCwwLDAsMCwwLDUsMTgsMSwxMiwxLDEyLDEsMTE0LDE2MSwwLAorICAgIDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsMTIsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDcwLDIsMCwwLDEyNCwwLDAsOTcsCisgICAgMCwwLDExNiwwLDAsMTA2LDEsMCw5NywxLDAsMTE2LDAsMCwxMDYsMiwKKyAgICAwLDk3LDIsMCwxMTYsMSwwLDEwNiwzLDAsMTE2LDQsMCwyNSwxMjUsMSwKKyAgICAwLDEyMCw3NiwwLDEwMCwyNiwwLDY4LDkzLDY4LDAsMTI1LDIsMCwxMjQsMiwKKyAgICAwLDExNiwxLDAsMTA2LDMsMCwxMDcsNywwLDExNCw4MywwLDExNiwwLDAsCisgICAgMTA2LDUsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMTAsMTMsMCwxMTYsCisgICAgMSwwLDEwNiwzLDAsMTI0LDIsMCwyNSwxMjUsMywwLDExNiw2LDAsMTI0LAorICAgIDEsMCwxMjQsMiwwLDEyNCwzLDAsMTMxLDMsMCwxLDExMyw0NCwwLDg3LAorICAgIDEwMCw1LDAsMTAwLDYsMCwxMDMsMSwwLDEwMiwyLDAsMTAwLDcsMCwxMDAsCisgICAgOCwwLDEwMCw2LDAsMTAzLDIsMCwxMDIsMiwwLDEwMiwyLDAsMTI1LDQsCisgICAgMCwxMjAsMTQ5LDAsMTI0LDQsMCw2OCw5MywxMjksMCw5MiwyLDAsMTI1LDUsCisgICAgMCwxMjUsNiwwLDExNiw3LDAsMTAwLDksMCwxMDAsMTAsMCwxMzIsMCwwLAorICAgIDEyNCw2LDAsNjgsMTMxLDEsMCwxMzEsMSwwLDExNSwxOTksMCwxMTYsOCwwLAorICAgIDEzMCwxLDAsMTI0LDYsMCwxMDAsMTEsMCwyNSwxMjUsNywwLDEyNCw1LDAsCisgICAgMTE2LDEsMCwxMDYsMywwLDEwNyw2LDAsMTE0LDI0MSwwLDExNiwxLDAsMTA2LAorICAgIDMsMCwxMjQsNSwwLDI1LDEyNSw4LDAsODAsMTEzLDE1NiwwLDEyMSwyMCwwLAorICAgIDExNiwwLDAsMTA2LDUsMCwxMjQsNSwwLDEzMSwxLDAsMTI1LDgsMCw4MCwKKyAgICA4NywxMTMsMTU2LDAsNCwxMTYsOSwwLDEwNywxMCwwLDExNCwyOCwxLDEsMSwKKyAgICAxLDExOSwxNTYsMCw4OSwxMTMsMTU2LDAsODgsMTEzLDE1NiwwLDg3LDExNiw5LDAsCisgICAgMTAwLDEyLDAsMTMxLDEsMCwxMzAsMSwwLDExNiw2LDAsMTI0LDEsMCwxMDAsCisgICAgMTMsMCwxMjQsOCwwLDEzMSwzLDAsMSwxMTYsNiwwLDEyNCwxLDAsMTAwLAorICAgIDE0LDAsMTI0LDcsMCwxMzEsMywwLDEsMTE2LDYsMCwxMjQsMSwwLDEwMCwKKyAgICAxNSwwLDEwMCwxNiwwLDEwNiwxMCwwLDEyNCw2LDAsMTMxLDEsMCwxMzEsMywKKyAgICAwLDEsMTIxLDE5LDAsMTE2LDAsMCwxMDYsNSwwLDEwMCwxNywwLDEzMSwxLAorICAgIDAsMTI1LDksMCw4NywxMTAsMjQsMCw0LDExNiw5LDAsMTA3LDEwLDAsMTE0LAorICAgIDE0NywxLDEsMSwxLDEwMCwxOCwwLDEyNSw5LDAsODksMTEwLDEsMCw4OCwKKyAgICAxMTYsNiwwLDEyNCwxLDAsMTAwLDE3LDAsMTI0LDksMCwxMzEsMywwLDEsCisgICAgMTE2LDAsMCwxMDYsNSwwLDEwMCwxOSwwLDEzMSwxLDAsMTI1LDEwLDAsMTE2LAorICAgIDYsMCwxMjQsMSwwLDEwMCwxOSwwLDEyNCwxMCwwLDEzMSwzLDAsMSwxMjQsCisgICAgNSwwLDEwMCw3LDAsMTA3LDIsMCwxMTQsMjM4LDEsMTE2LDAsMCwxMDYsNSwKKyAgICAwLDEwMCwyMCwwLDEzMSwxLDAsMTI1LDExLDAsMTE2LDYsMCwxMjQsMSwwLAorICAgIDEwMCwyMSwwLDEyNCwxMSwwLDEzMSwzLDAsMSwxMTYsNiwwLDEyNCwxLDAsCisgICAgMTAwLDIyLDAsMTE2LDExLDAsMTMxLDAsMCwxMzEsMywwLDEsMTE2LDEyLDAsCisgICAgMTA2LDEzLDAsMTE2LDIsMCwxMDYsMTQsMCwxMzEsMCwwLDEzMSwxLDAsMSwKKyAgICAxMjQsNSwwLDEwMCw3LDAsMTA3LDIsMCwxMTQsNjYsMiwxMTYsMTUsMCwxMDYsCisgICAgMTYsMCwxMDAsMjMsMCwxMzEsMSwwLDEsMTAwLDI0LDAsMTE2LDEyLDAsMTA3LAorICAgIDYsMCwxMTQsNjYsMiwxMDAsMjUsMCwxMTYsMTcsMCw5NSwxOCwwLDEwMCwxOCwKKyAgICAwLDgzLDQxLDI3LDEyMiwyMDUsODMsMTAxLDExNiwxMTcsMTEyLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExMiw5NywxMTYsMTA0LDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwMSwxMTQsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsMzIsOTgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLAorICAgIDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDEwLDMyLDMyLDMyLDMyLDk4LDExNywxMDUsMTA4LDExNiwKKyAgICA0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLAorICAgIDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMTA5LDMyLDEwNSwKKyAgICAxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTEwLAorICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzksCisgICAgMTE2LDEwNCwxMDEsMTE0LDMyLDk5LDExMSwxMDksMTEyLDExMSwxMTAsMTAxLDExMCwxMTYsMTE1LDMyLAorICAgIDk3LDExNCwxMDEsMzIsMTAxLDEyMCwxMTYsMTE0LDk3LDk5LDExNiwxMDEsMTAwLDMyLDEwMiwxMTQsCisgICAgMTExLDEwOSwzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMTEsMTE0LDEwMSwzMiw5OCwxMTEsMTExLDExNiwKKyAgICAxMTUsMTE2LDExNCw5NywxMTIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsMTE0LDQ5LDAsMCwwLDExNCw2MCwwLDAsMCwyMTgsOCw5OCwKKyAgICAxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwxMTUsMTE0LDE0MiwwLDAsMCw5MCw1LDExMiwxMTEsCisgICAgMTE1LDEwNSwxMjAsMjUwLDEsNDcsMjE4LDIsMTEwLDExNiwyNTAsMSw5Miw5OSwxLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwwLAorICAgIDAsMCwxMTUsMzMsMCwwLDAsMTI0LDAsMCw5MywyMywwLDEyNSwxLDAsCisgICAgMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTAwLDAsMCwxMDcsMiwwLDg2LAorICAgIDEsMTEzLDMsMCwxMDAsMSwwLDgzLDQxLDIsMTE0LDI5LDAsMCwwLDc4LAorICAgIDQxLDEsMTE0LDMxLDAsMCwwLDQxLDIsMTE0LDIyLDAsMCwwLDExNCw3NywKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAorICAgIDAsMCwxMTQsMjI3LDAsMCwwLDkxLDUsMCwwLDExNSwyLDAsMCwwLAorICAgIDYsMCwxMjIsMjUsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw0Niw2MCwxMDgsMTExLDk5LDk3LAorICAgIDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDExNCw1OSwwLAorICAgIDAsMCwxMjIsMzAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiwxMTQsMTAxLAorICAgIDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExMiwxMTEsMTE1LDEwNSwxMjAsMzIsMTExLDExNCwzMiwKKyAgICAxMTAsMTE2LDExNCwzLDAsMCwwLDExNCwyNSwwLDAsMCwxMTQsMjEsMCwwLAorICAgIDAsMTE0LDMwLDAsMCwwLDkwLDcsOTUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw3OCwKKyAgICA5MCw4LDk1LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDkwLDYsMTE5LDEwNSwxMTAsMTE0LAorICAgIDEwMSwxMDMsMTE0LDE2OSwwLDAsMCwxMTQsNiwwLDAsMCwxMjIsNCw0NiwxMTIsCisgICAgMTIxLDExOSwxMjIsNiw5NSwxMDAsNDYsMTEyLDEyMSwxMDAsODQsNDEsNCwxMjIsMyw5NSwKKyAgICAxMDUsMTExLDEyMiw5LDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwxMjIsOCw5OCwKKyAgICAxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwxMTUsMTIyLDcsMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCwKKyAgICA0MSwxOSwxMTQsMTIxLDAsMCwwLDExNCw3LDAsMCwwLDExNCwxNDUsMCwwLAorICAgIDAsMTE0LDIzOSwwLDAsMCwxMTQsMTEyLDAsMCwwLDkwLDE4LDk1LDk4LDExNywKKyAgICAxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsCisgICAgMTE2LDAsMCwwLDIxOCwzLDk3LDEwOCwxMDgsMjE4LDE0LDY1LDExNSwxMTUsMTAxLDExNCwKKyAgICAxMTYsMTA1LDExMSwxMTAsNjksMTE0LDExNCwxMTEsMTE0LDExNCwxMDcsMCwwLDAsMTE0LDI2LAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjI5LDAsMCwwLDExNCwxNDksMCwKKyAgICAwLDAsMTE0LDI1LDEsMCwwLDExNCw4NCwwLDAsMCwxMTQsMTYzLDAsMCwKKyAgICAwLDExNCwxNjgsMCwwLDAsMTE0LDE3MywwLDAsMCw0MSwxMiwyMTgsMTcsOTUsCisgICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDkwLDExLDExNSwxMDEsMTA4LDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMiw5OCwKKyAgICAxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTAsOTcsMTA5LDEwMSw5MCwxNCw5OCwxMTcsMTA1LAorICAgIDEwOCwxMTYsMTA1LDExMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMCwxMTEsMTE1LDk1LAorICAgIDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LDkwLDEwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLAorICAgIDk1LDExMSwxMTUsMTE0LDIxLDAsMCwwLDExNCwyNSwwLDAsMCw5MCw5LDExMSwKKyAgICAxMTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTMsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxNCwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTksMTA1LDExMCwxMTQsMTAxLDEwMyw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNSwwLDAsMCwyMTgsNiw5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDY2LDUsMCwKKyAgICAwLDExNSw4MiwwLDAsMCwwLDgsNiwxLDksMSw5LDMsMTMsMSwKKyAgICAxMywxLDE1LDEsMTgsMiwxMywxLDIwLDMsMzMsMSwxOSwyLDMxLDEsCisgICAgMTAsMSwxNSwxLDEzLDEsNCwyLDMsMSwxNSwxLDUsMSwxMywxLAorICAgIDEyLDIsMTIsMSwxNiwxLDE2LDEsMjUsMywzLDEsMTksMSwxMywyLAorICAgIDExLDEsMTYsMywxNSwxLDE2LDMsMTIsMSwxNSwxLDE2LDMsMTksMSwKKyAgICAxOSwxLDEyLDEsMTMsMSwxMiwxLDExNCwzMywxLDAsMCw5OSwxLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxMTYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsCisgICAgMSwxMTYsMSwwLDEzMSwwLDAsMTI1LDEsMCwxMTYsMiwwLDEwNiwzLDAsCisgICAgMTA2LDQsMCwxMTYsNSwwLDEwNiw2LDAsMTI0LDEsMCwxNDAsMCwwLDEwMywKKyAgICAxLDAsMTMxLDEsMCwxLDExNiw3LDAsMTA2LDgsMCwxMDAsMSwwLDEwNywKKyAgICAyLDAsMTE0LDc4LDAsMTE2LDIsMCwxMDYsOSwwLDEwNiwxMCwwLDExNiwxMSwKKyAgICAwLDEzMSwxLDAsMSwxMTYsMiwwLDEwNiw5LDAsMTA2LDEwLDAsMTE2LDEyLAorICAgIDAsMTMxLDEsMCwxLDExNiw1LDAsMTI0LDAsMCw5NSw1LDAsMTE2LDEzLAorICAgIDAsMTI0LDAsMCw5NSwxMywwLDEwMCwyLDAsODMsNDEsMywxMjIsNDEsNzMsCisgICAgMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCw0NSwKKyAgICA5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5OSwxMTEsMTA5LAorICAgIDExMiwxMTEsMTEwLDEwMSwxMTAsMTE2LDExNSw0NiwxMTQsMjgsMSwwLDAsNzgsNDEsMTQsCisgICAgMTE0LDMzLDEsMCwwLDExNCwxNjEsMCwwLDAsMTE0LDcsMCwwLDAsMTE0LAorICAgIDI1NCwwLDAsMCwxMTQsMTQ5LDAsMCwwLDExNCw2LDEsMCwwLDExNCwxOSwKKyAgICAxLDAsMCwxMTQsMywwLDAsMCwxMTQsMTEyLDAsMCwwLDIxOCw5LDEwOSwKKyAgICAxMDEsMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDExNCwxNjMsMCwwLDAsMTE0LDE2OCwwLAorICAgIDAsMCwxMTQsMjQ5LDAsMCwwLDExNCwyMTgsMCwwLDAsNDEsMiwxMTQsMzIsCisgICAgMSwwLDAsOTAsMTcsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsOTUsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDUsMCwwLDAsMjE4LDgsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMTM0LAorICAgIDUsMCwwLDExNSwxNiwwLDAsMCwwLDIsMTAsMSw5LDEsMjgsMSwKKyAgICAxNSwxLDE2LDEsMTYsNCw5LDEsMTE0LDM1LDEsMCwwLDQxLDMsMTIyLAorICAgIDMsMTE5LDEwNSwxMTAsMTE0LDEsMCwwLDAsMTE0LDIsMCwwLDAsNDEsNTcsCisgICAgMTE0LDExNCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwKKyAgICAxNywwLDAsMCwxMTQsMTksMCwwLDAsMTE0LDI4LDAsMCwwLDExNCwzOCwKKyAgICAwLDAsMCwxMTQsMzksMCwwLDAsMTE0LDQzLDAsMCwwLDExNCw0NCwwLAorICAgIDAsMCwxMTQsNDYsMCwwLDAsMTE0LDU1LDAsMCwwLDIxOCw0LDExNiwxMjEsCisgICAgMTEyLDEwMSwyMTgsOCw5NSw5NSw5OSwxMTEsMTAwLDEwMSw5NSw5NSwxMTQsMTQ0LDAsMCwKKyAgICAwLDExNCwxNSwwLDAsMCwxMTQsMTM1LDAsMCwwLDExNCwxNCwwLDAsMCwKKyAgICAxMTQsMTgsMCwwLDAsOTAsMTcsOTUsODIsNjUsODcsOTUsNzcsNjUsNzEsNzMsCisgICAgNjcsOTUsNzgsODUsNzcsNjYsNjksODIsMTE0LDczLDAsMCwwLDExNCw3MiwwLAorICAgIDAsMCwxMTQsODQsMCwwLDAsMTE0LDc0LDAsMCwwLDkwLDIzLDY4LDY5LAorICAgIDY2LDg1LDcxLDk1LDY2LDg5LDg0LDY5LDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLAorICAgIDcwLDczLDg4LDY5LDgzLDkwLDI3LDc5LDgwLDg0LDczLDc3LDczLDkwLDY5LDY4LAorICAgIDk1LDY2LDg5LDg0LDY5LDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LAorICAgIDY5LDgzLDExNCw3OSwwLDAsMCwxMTQsODUsMCwwLDAsMTE0LDkxLDAsMCwKKyAgICAwLDExNCw5NSwwLDAsMCwxMTQsOTcsMCwwLDAsMTE0LDEwNSwwLDAsMCwKKyAgICAxMTQsMTIzLDAsMCwwLDExNCwxMzAsMCwwLDAsMTE0LDE0MSwwLDAsMCwxMTQsCisgICAgMTQ3LDAsMCwwLDExNCwxNTAsMCwwLDAsMTE0LDE1NSwwLDAsMCwyMTgsNiwKKyAgICAxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE0LDE2MiwwLDAsMCwxMTQsMTY3LDAsMCwwLAorICAgIDExNCwxNjgsMCwwLDAsMTE0LDE4NCwwLDAsMCwxMTQsMTk0LDAsMCwwLDExNCwKKyAgICAyMTAsMCwwLDAsMTE0LDIxOCwwLDAsMCwxMTQsMjIzLDAsMCwwLDExNCwyMjksCisgICAgMCwwLDAsMTE0LDIyNCwwLDAsMCwxMTQsMjMwLDAsMCwwLDExNCwyNDcsMCwKKyAgICAwLDAsMTE0LDI0OSwwLDAsMCwxMTQsNiwxLDAsMCwxMTQsMjQsMSwwLAorICAgIDAsMTE0LDE2MSwwLDAsMCwxMTQsMzMsMSwwLDAsMTE0LDM1LDEsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDIxOCw4LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDYyLDgsMCwKKyAgICAwLDAsMTE1LDEwMCwwLDAsMCw2LDE3LDYsMywxMiwxMiwxMiw1LDEyLAorICAgIDUsMTIsNiwxMiwxMiwxMiwxMCwxMiw5LDEyLDUsMTIsNywxNSwyMiwxNSwKKyAgICAxMTAsMjIsMSwxOCwyLDYsMSw2LDIsOSwyLDksMiwxMCwyLDIxLAorICAgIDQ0LDEyLDMzLDEyLDE5LDEyLDEyLDEyLDEyLDE4LDgsMTIsMjgsMTIsMTcsMjEsCisgICAgNTUsMjEsMTIsMTgsMTAsMTIsMTQsOSwzLDEyLDEsMTUsNjUsMTksNjQsMTksCisgICAgMjgsMjIsMTEwLDE5LDQxLDI1LDQzLDI1LDE2LDYsMywyNSw1MywxOSw1NywxOSwKKyAgICA0MSwxOSwxMzQsMTksMTQ2LDE1LDIzLDEyLDExLDEyLDY4LAorfTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9tYXJzaGFsLmMgYi9QeXRob24vbWFyc2hhbC5jCmluZGV4IDZmMGVlNWUuLjViOGRlOTkgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9tYXJzaGFsLmMKKysrIGIvUHl0aG9uL21hcnNoYWwuYwpAQCAtMTIsOCArMTIsNyBAQAogI2luY2x1ZGUgImxvbmdpbnRyZXByLmgiCiAjaW5jbHVkZSAiY29kZS5oIgogI2luY2x1ZGUgIm1hcnNoYWwuaCIKLQotI2RlZmluZSBBQlMoeCkgKCh4KSA8IDAgPyAtKHgpIDogKHgpKQorI2luY2x1ZGUgIi4uL01vZHVsZXMvaGFzaHRhYmxlLmgiCiAKIC8qIEhpZ2ggd2F0ZXIgbWFyayB0byBkZXRlcm1pbmUgd2hlbiB0aGUgbWFyc2hhbGxlZCBvYmplY3QgaXMgZGFuZ2Vyb3VzbHkgZGVlcAogICogYW5kIHJpc2tzIGNvcmluZyB0aGUgaW50ZXJwcmV0ZXIuICBXaGVuIHRoZSBvYmplY3Qgc3RhY2sgZ2V0cyB0aGlzIGRlZXAsCkBAIC0yMSw3ICsyMCw3IEBACiAgKiBPbiBXaW5kb3dzIGRlYnVnIGJ1aWxkcywgcmVkdWNlIHRoaXMgdmFsdWUuCiAgKi8KICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoX0RFQlVHKQotI2RlZmluZSBNQVhfTUFSU0hBTF9TVEFDS19ERVBUSCAxNTAwCisjZGVmaW5lIE1BWF9NQVJTSEFMX1NUQUNLX0RFUFRIIDEwMDAKICNlbHNlCiAjZGVmaW5lIE1BWF9NQVJTSEFMX1NUQUNLX0RFUFRIIDIwMDAKICNlbmRpZgpAQCAtNjYsNTQgKzY1LDgzIEBACiAgICAgRklMRSAqZnA7CiAgICAgaW50IGVycm9yOyAgLyogc2VlIFdGRVJSXyogdmFsdWVzICovCiAgICAgaW50IGRlcHRoOwotICAgIC8qIElmIGZwID09IE5VTEwsIHRoZSBmb2xsb3dpbmcgYXJlIHZhbGlkOiAqLwotICAgIFB5T2JqZWN0ICpyZWFkYWJsZTsgICAgLyogU3RyZWFtLWxpa2Ugb2JqZWN0IGJlaW5nIHJlYWQgZnJvbSAqLwogICAgIFB5T2JqZWN0ICpzdHI7Ci0gICAgUHlPYmplY3QgKmN1cnJlbnRfZmlsZW5hbWU7CiAgICAgY2hhciAqcHRyOwogICAgIGNoYXIgKmVuZDsKICAgICBjaGFyICpidWY7Ci0gICAgUHlfc3NpemVfdCBidWZfc2l6ZTsKLSAgICBQeU9iamVjdCAqcmVmczsgLyogZGljdCBvbiBtYXJzaGFsLCBsaXN0IG9uIHVubWFyc2hhbCAqLworICAgIF9QeV9oYXNodGFibGVfdCAqaGFzaHRhYmxlOwogICAgIGludCB2ZXJzaW9uOwogfSBXRklMRTsKIAotI2RlZmluZSB3X2J5dGUoYywgcCkgaWYgKCgocCktPmZwKSkgcHV0YygoYyksIChwKS0+ZnApOyBcCi0gICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKHApLT5wdHIgIT0gKHApLT5lbmQpICoocCktPnB0cisrID0gKGMpOyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHdfbW9yZSgoYyksIHApCisjZGVmaW5lIHdfYnl0ZShjLCBwKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKChwKS0+cHRyICE9IChwKS0+ZW5kIHx8IHdfcmVzZXJ2ZSgocCksIDEpKSAgXAorICAgICAgICAgICAgKihwKS0+cHRyKysgPSAoYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSgwKQogCiBzdGF0aWMgdm9pZAotd19tb3JlKGNoYXIgYywgV0ZJTEUgKnApCit3X2ZsdXNoKFdGSUxFICpwKQogewotICAgIFB5X3NzaXplX3Qgc2l6ZSwgbmV3c2l6ZTsKLSAgICBpZiAocC0+c3RyID09IE5VTEwpCi0gICAgICAgIHJldHVybjsgLyogQW4gZXJyb3IgYWxyZWFkeSBvY2N1cnJlZCAqLwotICAgIHNpemUgPSBQeUJ5dGVzX1NpemUocC0+c3RyKTsKLSAgICBuZXdzaXplID0gc2l6ZSArIHNpemUgKyAxMDI0OwotICAgIGlmIChuZXdzaXplID4gMzIqMTAyNCoxMDI0KSB7Ci0gICAgICAgIG5ld3NpemUgPSBzaXplICsgKHNpemUgPj4gMyk7ICAgICAgICAgICAvKiAxMi41JSBvdmVyYWxsb2NhdGlvbiAqLworICAgIGFzc2VydChwLT5mcCAhPSBOVUxMKTsKKyAgICBmd3JpdGUocC0+YnVmLCAxLCBwLT5wdHIgLSBwLT5idWYsIHAtPmZwKTsKKyAgICBwLT5wdHIgPSBwLT5idWY7Cit9CisKK3N0YXRpYyBpbnQKK3dfcmVzZXJ2ZShXRklMRSAqcCwgUHlfc3NpemVfdCBuZWVkZWQpCit7CisgICAgUHlfc3NpemVfdCBwb3MsIHNpemUsIGRlbHRhOworICAgIGlmIChwLT5wdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDA7IC8qIEFuIGVycm9yIGFscmVhZHkgb2NjdXJyZWQgKi8KKyAgICBpZiAocC0+ZnAgIT0gTlVMTCkgeworICAgICAgICB3X2ZsdXNoKHApOworICAgICAgICByZXR1cm4gbmVlZGVkIDw9IHAtPmVuZCAtIHAtPnB0cjsKICAgICB9Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcC0+c3RyLCBuZXdzaXplKSAhPSAwKSB7Ci0gICAgICAgIHAtPnB0ciA9IHAtPmVuZCA9IE5VTEw7CisgICAgYXNzZXJ0KHAtPnN0ciAhPSBOVUxMKTsKKyAgICBwb3MgPSBwLT5wdHIgLSBwLT5idWY7CisgICAgc2l6ZSA9IFB5Qnl0ZXNfU2l6ZShwLT5zdHIpOworICAgIGlmIChzaXplID4gMTYqMTAyNCoxMDI0KQorICAgICAgICBkZWx0YSA9IChzaXplID4+IDMpOyAgICAgICAgICAgIC8qIDEyLjUlIG92ZXJhbGxvY2F0aW9uICovCisgICAgZWxzZQorICAgICAgICBkZWx0YSA9IHNpemUgKyAxMDI0OworICAgIGRlbHRhID0gUHlfTUFYKGRlbHRhLCBuZWVkZWQpOworICAgIGlmIChkZWx0YSA+IFBZX1NTSVpFX1RfTUFYIC0gc2l6ZSkgeworICAgICAgICBwLT5lcnJvciA9IFdGRVJSX05PTUVNT1JZOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgc2l6ZSArPSBkZWx0YTsKKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZwLT5zdHIsIHNpemUpICE9IDApIHsKKyAgICAgICAgcC0+cHRyID0gcC0+YnVmID0gcC0+ZW5kID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBwLT5wdHIgPSBQeUJ5dGVzX0FTX1NUUklORygoUHlCeXRlc09iamVjdCAqKXAtPnN0cikgKyBzaXplOwotICAgICAgICBwLT5lbmQgPQotICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoKFB5Qnl0ZXNPYmplY3QgKilwLT5zdHIpICsgbmV3c2l6ZTsKLSAgICAgICAgKnAtPnB0cisrID0gYzsKKyAgICAgICAgcC0+YnVmID0gUHlCeXRlc19BU19TVFJJTkcocC0+c3RyKTsKKyAgICAgICAgcC0+cHRyID0gcC0+YnVmICsgcG9zOworICAgICAgICBwLT5lbmQgPSBwLT5idWYgKyBzaXplOworICAgICAgICByZXR1cm4gMTsKICAgICB9CiB9CiAKIHN0YXRpYyB2b2lkCiB3X3N0cmluZyhjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IG4sIFdGSUxFICpwKQogeworICAgIFB5X3NzaXplX3QgbTsKKyAgICBpZiAoIW4gfHwgcC0+cHRyID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKyAgICBtID0gcC0+ZW5kIC0gcC0+cHRyOwogICAgIGlmIChwLT5mcCAhPSBOVUxMKSB7Ci0gICAgICAgIGZ3cml0ZShzLCAxLCBuLCBwLT5mcCk7CisgICAgICAgIGlmIChuIDw9IG0pIHsKKyAgICAgICAgICAgIFB5X01FTUNQWShwLT5wdHIsIHMsIG4pOworICAgICAgICAgICAgcC0+cHRyICs9IG47CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB3X2ZsdXNoKHApOworICAgICAgICAgICAgZndyaXRlKHMsIDEsIG4sIHAtPmZwKTsKKyAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgd2hpbGUgKC0tbiA+PSAwKSB7Ci0gICAgICAgICAgICB3X2J5dGUoKnMsIHApOwotICAgICAgICAgICAgcysrOworICAgICAgICBpZiAobiA8PSBtIHx8IHdfcmVzZXJ2ZShwLCBuIC0gbSkpIHsKKyAgICAgICAgICAgIFB5X01FTUNQWShwLT5wdHIsIHMsIG4pOworICAgICAgICAgICAgcC0+cHRyICs9IG47CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xOTIsNyArMjIwLDcgQEAKICAgICB9CiAKICAgICAvKiBzZXQgbCB0byBudW1iZXIgb2YgYmFzZSBQeUxvbmdfTUFSU0hBTF9CQVNFIGRpZ2l0cyAqLwotICAgIG4gPSBBQlMoUHlfU0laRShvYikpOworICAgIG4gPSBQeV9BQlMoUHlfU0laRShvYikpOwogICAgIGwgPSAobi0xKSAqIFB5TG9uZ19NQVJTSEFMX1JBVElPOwogICAgIGQgPSBvYi0+b2JfZGlnaXRbbi0xXTsKICAgICBhc3NlcnQoZCAhPSAwKTsgLyogYSBQeUxvbmcgaXMgYWx3YXlzIG5vcm1hbGl6ZWQgKi8KQEAgLTIyNSw0NiArMjUzLDM4IEBACiBzdGF0aWMgaW50CiB3X3JlZihQeU9iamVjdCAqdiwgY2hhciAqZmxhZywgV0ZJTEUgKnApCiB7Ci0gICAgUHlPYmplY3QgKmlkOwotICAgIFB5T2JqZWN0ICppZHg7CisgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeTsKKyAgICBpbnQgdzsKIAotICAgIGlmIChwLT52ZXJzaW9uIDwgMyB8fCBwLT5yZWZzID09IE5VTEwpCisgICAgaWYgKHAtPnZlcnNpb24gPCAzIHx8IHAtPmhhc2h0YWJsZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gMDsgLyogbm90IHdyaXRpbmcgb2JqZWN0IHJlZmVyZW5jZXMgKi8KIAogICAgIC8qIGlmIGl0IGhhcyBvbmx5IG9uZSByZWZlcmVuY2UsIGl0IGRlZmluaXRlbHkgaXNuJ3Qgc2hhcmVkICovCiAgICAgaWYgKFB5X1JFRkNOVCh2KSA9PSAxKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlkID0gUHlMb25nX0Zyb21Wb2lkUHRyKCh2b2lkKil2KTsKLSAgICBpZiAoaWQgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnI7Ci0gICAgaWR4ID0gUHlEaWN0X0dldEl0ZW0ocC0+cmVmcywgaWQpOwotICAgIGlmIChpZHggIT0gTlVMTCkgeworICAgIGVudHJ5ID0gX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkocC0+aGFzaHRhYmxlLCB2KTsKKyAgICBpZiAoZW50cnkgIT0gTlVMTCkgewogICAgICAgICAvKiB3cml0ZSB0aGUgcmVmZXJlbmNlIGluZGV4IHRvIHRoZSBzdHJlYW0gKi8KLSAgICAgICAgbG9uZyB3ID0gUHlMb25nX0FzTG9uZyhpZHgpOwotICAgICAgICBQeV9ERUNSRUYoaWQpOwotICAgICAgICBpZiAodyA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICBnb3RvIGVycjsKLSAgICAgICAgfQorICAgICAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfREFUQShwLT5oYXNodGFibGUsICZ3LCBzaXplb2YodyksIGVudHJ5KTsKICAgICAgICAgLyogd2UgZG9uJ3Qgc3RvcmUgImxvbmciIGluZGljZXMgaW4gdGhlIGRpY3QgKi8KICAgICAgICAgYXNzZXJ0KDAgPD0gdyAmJiB3IDw9IDB4N2ZmZmZmZmYpOwogICAgICAgICB3X2J5dGUoVFlQRV9SRUYsIHApOwogICAgICAgICB3X2xvbmcodywgcCk7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGludCBvazsKLSAgICAgICAgUHlfc3NpemVfdCBzID0gUHlEaWN0X1NpemUocC0+cmVmcyk7CisgICAgICAgIHNpemVfdCBzID0gcC0+aGFzaHRhYmxlLT5lbnRyaWVzOwogICAgICAgICAvKiB3ZSBkb24ndCBzdXBwb3J0IGxvbmcgaW5kaWNlcyAqLwogICAgICAgICBpZiAocyA+PSAweDdmZmZmZmZmKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInRvbyBtYW55IG9iamVjdHMiKTsKICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICB9Ci0gICAgICAgIGlkeCA9IFB5TG9uZ19Gcm9tU3NpemVfdChzKTsKLSAgICAgICAgb2sgPSBpZHggJiYgUHlEaWN0X1NldEl0ZW0ocC0+cmVmcywgaWQsIGlkeCkgPT0gMDsKLSAgICAgICAgUHlfREVDUkVGKGlkKTsKLSAgICAgICAgUHlfWERFQ1JFRihpZHgpOwotICAgICAgICBpZiAoIW9rKQorICAgICAgICB3ID0gKGludClzOworICAgICAgICBQeV9JTkNSRUYodik7CisgICAgICAgIGlmIChfUHlfSEFTSFRBQkxFX1NFVChwLT5oYXNodGFibGUsIHYsIHcpIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgIH0KICAgICAgICAgKmZsYWcgfD0gRkxBR19SRUY7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTU0NywzNyArNTY3LDgxIEBACiAgICAgfQogfQogCitzdGF0aWMgaW50Cit3X2luaXRfcmVmcyhXRklMRSAqd2YsIGludCB2ZXJzaW9uKQoreworICAgIGlmICh2ZXJzaW9uID49IDMpIHsKKyAgICAgICAgd2YtPmhhc2h0YWJsZSA9IF9QeV9oYXNodGFibGVfbmV3KHNpemVvZihpbnQpLCBfUHlfaGFzaHRhYmxlX2hhc2hfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2RpcmVjdCk7CisgICAgICAgIGlmICh3Zi0+aGFzaHRhYmxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3dfZGVjcmVmX2VudHJ5KF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksIHZvaWQgKlB5X1VOVVNFRChkYXRhKSkKK3sKKyAgICBQeV9YREVDUkVGKGVudHJ5LT5rZXkpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAord19jbGVhcl9yZWZzKFdGSUxFICp3ZikKK3sKKyAgICBpZiAod2YtPmhhc2h0YWJsZSAhPSBOVUxMKSB7CisgICAgICAgIF9QeV9oYXNodGFibGVfZm9yZWFjaCh3Zi0+aGFzaHRhYmxlLCB3X2RlY3JlZl9lbnRyeSwgTlVMTCk7CisgICAgICAgIF9QeV9oYXNodGFibGVfZGVzdHJveSh3Zi0+aGFzaHRhYmxlKTsKKyAgICB9Cit9CisKIC8qIHZlcnNpb24gY3VycmVudGx5IGhhcyBubyBlZmZlY3QgZm9yIHdyaXRpbmcgaW50cy4gKi8KIHZvaWQKIFB5TWFyc2hhbF9Xcml0ZUxvbmdUb0ZpbGUobG9uZyB4LCBGSUxFICpmcCwgaW50IHZlcnNpb24pCiB7CisgICAgY2hhciBidWZbNF07CiAgICAgV0ZJTEUgd2Y7CisgICAgbWVtc2V0KCZ3ZiwgMCwgc2l6ZW9mKHdmKSk7CiAgICAgd2YuZnAgPSBmcDsKKyAgICB3Zi5wdHIgPSB3Zi5idWYgPSBidWY7CisgICAgd2YuZW5kID0gd2YucHRyICsgc2l6ZW9mKGJ1Zik7CiAgICAgd2YuZXJyb3IgPSBXRkVSUl9PSzsKLSAgICB3Zi5kZXB0aCA9IDA7Ci0gICAgd2YucmVmcyA9IE5VTEw7CiAgICAgd2YudmVyc2lvbiA9IHZlcnNpb247CiAgICAgd19sb25nKHgsICZ3Zik7CisgICAgd19mbHVzaCgmd2YpOwogfQogCiB2b2lkCiBQeU1hcnNoYWxfV3JpdGVPYmplY3RUb0ZpbGUoUHlPYmplY3QgKngsIEZJTEUgKmZwLCBpbnQgdmVyc2lvbikKIHsKKyAgICBjaGFyIGJ1ZltCVUZTSVpdOwogICAgIFdGSUxFIHdmOworICAgIG1lbXNldCgmd2YsIDAsIHNpemVvZih3ZikpOwogICAgIHdmLmZwID0gZnA7CisgICAgd2YucHRyID0gd2YuYnVmID0gYnVmOworICAgIHdmLmVuZCA9IHdmLnB0ciArIHNpemVvZihidWYpOwogICAgIHdmLmVycm9yID0gV0ZFUlJfT0s7Ci0gICAgd2YuZGVwdGggPSAwOwotICAgIGlmICh2ZXJzaW9uID49IDMpIHsKLSAgICAgICAgaWYgKCh3Zi5yZWZzID0gUHlEaWN0X05ldygpKSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuOyAvKiBjYWxsZXIgbXVzaCBjaGVjayBQeUVycl9PY2N1cnJlZCgpICovCi0gICAgfSBlbHNlCi0gICAgICAgIHdmLnJlZnMgPSBOVUxMOwogICAgIHdmLnZlcnNpb24gPSB2ZXJzaW9uOworICAgIGlmICh3X2luaXRfcmVmcygmd2YsIHZlcnNpb24pKQorICAgICAgICByZXR1cm47IC8qIGNhbGxlciBtdXNoIGNoZWNrIFB5RXJyX09jY3VycmVkKCkgKi8KICAgICB3X29iamVjdCh4LCAmd2YpOwotICAgIFB5X1hERUNSRUYod2YucmVmcyk7CisgICAgd19jbGVhcl9yZWZzKCZ3Zik7CisgICAgd19mbHVzaCgmd2YpOwogfQogCi10eXBlZGVmIFdGSUxFIFJGSUxFOyAvKiBTYW1lIHN0cnVjdCB3aXRoIGRpZmZlcmVudCBpbnZhcmlhbnRzICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgRklMRSAqZnA7CisgICAgaW50IGRlcHRoOworICAgIFB5T2JqZWN0ICpyZWFkYWJsZTsgIC8qIFN0cmVhbS1saWtlIG9iamVjdCBiZWluZyByZWFkIGZyb20gKi8KKyAgICBQeU9iamVjdCAqY3VycmVudF9maWxlbmFtZTsKKyAgICBjaGFyICpwdHI7CisgICAgY2hhciAqZW5kOworICAgIGNoYXIgKmJ1ZjsKKyAgICBQeV9zc2l6ZV90IGJ1Zl9zaXplOworICAgIFB5T2JqZWN0ICpyZWZzOyAgLyogYSBsaXN0ICovCit9IFJGSUxFOwogCiBzdGF0aWMgY2hhciAqCiByX3N0cmluZyhQeV9zc2l6ZV90IG4sIFJGSUxFICpwKQpAQCAtNzI3LDggKzc5MSw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHNpemUgPSAxICsgKEFCUyhuKSAtIDEpIC8gUHlMb25nX01BUlNIQUxfUkFUSU87Ci0gICAgc2hvcnRzX2luX3RvcF9kaWdpdCA9IDEgKyAoQUJTKG4pIC0gMSkgJSBQeUxvbmdfTUFSU0hBTF9SQVRJTzsKKyAgICBzaXplID0gMSArIChQeV9BQlMobikgLSAxKSAvIFB5TG9uZ19NQVJTSEFMX1JBVElPOworICAgIHNob3J0c19pbl90b3BfZGlnaXQgPSAxICsgKFB5X0FCUyhuKSAtIDEpICUgUHlMb25nX01BUlNIQUxfUkFUSU87CiAgICAgb2IgPSBfUHlMb25nX05ldyhzaXplKTsKICAgICBpZiAob2IgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNDE3LDE4ICsxNDgxLDIwIEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAotI2lmZGVmIEhBVkVfRlNUQVQKLS8qIFJldHVybiBzaXplIG9mIGZpbGUgaW4gYnl0ZXM7IDwgMCBpZiB1bmtub3duLiAqLworLyogUmV0dXJuIHNpemUgb2YgZmlsZSBpbiBieXRlczsgPCAwIGlmIHVua25vd24gb3IgSU5UX01BWCBpZiB0b28gYmlnICovCiBzdGF0aWMgb2ZmX3QKIGdldGZpbGVzaXplKEZJTEUgKmZwKQogewotICAgIHN0cnVjdCBzdGF0IHN0OwotICAgIGlmIChmc3RhdChmaWxlbm8oZnApLCAmc3QpICE9IDApCisgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdDsKKyAgICBpZiAoX1B5X2ZzdGF0X25vcmFpc2UoZmlsZW5vKGZwKSwgJnN0KSAhPSAwKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gc3Quc3Rfc2l6ZTsKLX0KKyNpZiBTSVpFT0ZfT0ZGX1QgPT0gNAorICAgIGVsc2UgaWYgKHN0LnN0X3NpemUgPj0gSU5UX01BWCkKKyAgICAgICAgcmV0dXJuIChvZmZfdClJTlRfTUFYOwogI2VuZGlmCisgICAgZWxzZQorICAgICAgICByZXR1cm4gKG9mZl90KXN0LnN0X3NpemU7Cit9CiAKIC8qIElmIHdlIGNhbiBnZXQgdGhlIHNpemUgb2YgdGhlIGZpbGUgdXAtZnJvbnQsIGFuZCBpdCdzIHJlYXNvbmFibHkgc21hbGwsCiAgKiByZWFkIGl0IGluIG9uZSBndWxwIGFuZCBkZWxlZ2F0ZSB0byAuLi5Gcm9tU3RyaW5nKCkgaW5zdGVhZC4gIE11Y2ggcXVpY2tlcgpAQCAtMTQ0MSw3ICsxNTA3LDYgQEAKIHsKIC8qIFJFQVNPTkFCTEVfRklMRV9MSU1JVCBpcyBieSBkZWZuIHNvbWV0aGluZyBiaWcgZW5vdWdoIGZvciBUa2ludGVyLnB5Yy4gKi8KICNkZWZpbmUgUkVBU09OQUJMRV9GSUxFX0xJTUlUICgxTCA8PCAxOCkKLSNpZmRlZiBIQVZFX0ZTVEFUCiAgICAgb2ZmX3QgZmlsZXNpemU7CiAgICAgZmlsZXNpemUgPSBnZXRmaWxlc2l6ZShmcCk7CiAgICAgaWYgKGZpbGVzaXplID4gMCAmJiBmaWxlc2l6ZSA8PSBSRUFTT05BQkxFX0ZJTEVfTElNSVQpIHsKQEAgLTE0NTQsNyArMTUxOSw2IEBACiAgICAgICAgIH0KIAogICAgIH0KLSNlbmRpZgogICAgIC8qIFdlIGRvbid0IGhhdmUgZnN0YXQsIG9yIHdlIGRvIGJ1dCB0aGUgZmlsZSBpcyBsYXJnZXIgdGhhbgogICAgICAqIFJFQVNPTkFCTEVfRklMRV9MSU1JVCBvciBtYWxsb2MgZmFpbGVkIC0tIHJlYWQgYSBieXRlIGF0IGEgdGltZS4KICAgICAgKi8KQEAgLTE1MTEsMjUgKzE1NzUsMjAgQEAKIHsKICAgICBXRklMRSB3ZjsKIAotICAgIHdmLmZwID0gTlVMTDsKLSAgICB3Zi5yZWFkYWJsZSA9IE5VTEw7CisgICAgbWVtc2V0KCZ3ZiwgMCwgc2l6ZW9mKHdmKSk7CiAgICAgd2Yuc3RyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIDUwKTsKICAgICBpZiAod2Yuc3RyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHdmLnB0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKChQeUJ5dGVzT2JqZWN0ICopd2Yuc3RyKTsKKyAgICB3Zi5wdHIgPSB3Zi5idWYgPSBQeUJ5dGVzX0FTX1NUUklORygoUHlCeXRlc09iamVjdCAqKXdmLnN0cik7CiAgICAgd2YuZW5kID0gd2YucHRyICsgUHlCeXRlc19TaXplKHdmLnN0cik7CiAgICAgd2YuZXJyb3IgPSBXRkVSUl9PSzsKLSAgICB3Zi5kZXB0aCA9IDA7CiAgICAgd2YudmVyc2lvbiA9IHZlcnNpb247Ci0gICAgaWYgKHZlcnNpb24gPj0gMykgewotICAgICAgICBpZiAoKHdmLnJlZnMgPSBQeURpY3RfTmV3KCkpID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih3Zi5zdHIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgd2YucmVmcyA9IE5VTEw7CisgICAgaWYgKHdfaW5pdF9yZWZzKCZ3ZiwgdmVyc2lvbikpIHsKKyAgICAgICAgUHlfREVDUkVGKHdmLnN0cik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICB3X29iamVjdCh4LCAmd2YpOwotICAgIFB5X1hERUNSRUYod2YucmVmcyk7CisgICAgd19jbGVhcl9yZWZzKCZ3Zik7CiAgICAgaWYgKHdmLnN0ciAhPSBOVUxMKSB7CiAgICAgICAgIGNoYXIgKmJhc2UgPSBQeUJ5dGVzX0FTX1NUUklORygoUHlCeXRlc09iamVjdCAqKXdmLnN0cik7CiAgICAgICAgIGlmICh3Zi5wdHIgLSBiYXNlID4gUFlfU1NJWkVfVF9NQVgpIHsKQEAgLTE1ODUsNyArMTY0NCw3IEBACiBvcGVuKCkgb3Igb3MucG9wZW4oKS4gSXQgbXVzdCBiZSBvcGVuZWQgaW4gYmluYXJ5IG1vZGUgKCd3Yicgb3IgJ3crYicpLlxuXAogXG5cCiBJZiB0aGUgdmFsdWUgaGFzIChvciBjb250YWlucyBhbiBvYmplY3QgdGhhdCBoYXMpIGFuIHVuc3VwcG9ydGVkIHR5cGUsIGFcblwKLVZhbHVlRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZCDigJQgYnV0IGdhcmJhZ2UgZGF0YSB3aWxsIGFsc28gYmUgd3JpdHRlblxuXAorVmFsdWVFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkIC0gYnV0IGdhcmJhZ2UgZGF0YSB3aWxsIGFsc28gYmUgd3JpdHRlblxuXAogdG8gdGhlIGZpbGUuIFRoZSBvYmplY3Qgd2lsbCBub3QgYmUgcHJvcGVybHkgcmVhZCBiYWNrIGJ5IGxvYWQoKVxuXAogXG5cCiBUaGUgdmVyc2lvbiBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGRhdGEgZm9ybWF0IHRoYXQgZHVtcCBzaG91bGQgdXNlLiIpOwpAQCAtMTYzNiw3ICsxNjk1LDcgQEAKICJsb2FkKGZpbGUpXG5cCiBcblwKIFJlYWQgb25lIHZhbHVlIGZyb20gdGhlIG9wZW4gZmlsZSBhbmQgcmV0dXJuIGl0LiBJZiBubyB2YWxpZCB2YWx1ZSBpc1xuXAotcmVhZCAoZS5nLiBiZWNhdXNlIHRoZSBkYXRhIGhhcyBhIGRpZmZlcmVudCBQeXRob24gdmVyc2lvbuKAmXNcblwKK3JlYWQgKGUuZy4gYmVjYXVzZSB0aGUgZGF0YSBoYXMgYSBkaWZmZXJlbnQgUHl0aG9uIHZlcnNpb24nc1xuXAogaW5jb21wYXRpYmxlIG1hcnNoYWwgZm9ybWF0KSwgcmFpc2UgRU9GRXJyb3IsIFZhbHVlRXJyb3Igb3IgVHlwZUVycm9yLlxuXAogVGhlIGZpbGUgbXVzdCBiZSBhbiBvcGVuIGZpbGUgb2JqZWN0IG9wZW5lZCBpbiBiaW5hcnkgbW9kZSAoJ3JiJyBvclxuXAogJ3IrYicpLlxuXApkaWZmIC0tZ2l0IGEvUHl0aG9uL29wY29kZV90YXJnZXRzLmggYi9QeXRob24vb3Bjb2RlX3RhcmdldHMuaAppbmRleCBmOTBhMTdhLi4xOTI1OWUxIDEwMDY0NAotLS0gYS9QeXRob24vb3Bjb2RlX3RhcmdldHMuaAorKysgYi9QeXRob24vb3Bjb2RlX3RhcmdldHMuaApAQCAtMTUsOCArMTUsOCBAQAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmVEFSR0VUX1VOQVJZX0lOVkVSVCwKLSAgICAmJl91bmtub3duX29wY29kZSwKLSAgICAmJl91bmtub3duX29wY29kZSwKKyAgICAmJlRBUkdFVF9CSU5BUllfTUFUUklYX01VTFRJUExZLAorICAgICYmVEFSR0VUX0lOUExBQ0VfTUFUUklYX01VTFRJUExZLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmVEFSR0VUX0JJTkFSWV9QT1dFUiwKICAgICAmJlRBUkdFVF9CSU5BUllfTVVMVElQTFksCkBAIC00OSwxMSArNDksMTEgQEAKICAgICAmJl91bmtub3duX29wY29kZSwKICAgICAmJl91bmtub3duX29wY29kZSwKICAgICAmJl91bmtub3duX29wY29kZSwKKyAgICAmJlRBUkdFVF9HRVRfQUlURVIsCisgICAgJiZUQVJHRVRfR0VUX0FORVhULAorICAgICYmVEFSR0VUX0JFRk9SRV9BU1lOQ19XSVRILAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmVEFSR0VUX1NUT1JFX01BUCwKICAgICAmJlRBUkdFVF9JTlBMQUNFX0FERCwKICAgICAmJlRBUkdFVF9JTlBMQUNFX1NVQlRSQUNULAogICAgICYmVEFSR0VUX0lOUExBQ0VfTVVMVElQTFksCkBAIC02OCwxMSArNjgsMTEgQEAKICAgICAmJlRBUkdFVF9CSU5BUllfT1IsCiAgICAgJiZUQVJHRVRfSU5QTEFDRV9QT1dFUiwKICAgICAmJlRBUkdFVF9HRVRfSVRFUiwKLSAgICAmJl91bmtub3duX29wY29kZSwKKyAgICAmJlRBUkdFVF9HRVRfWUlFTERfRlJPTV9JVEVSLAogICAgICYmVEFSR0VUX1BSSU5UX0VYUFIsCiAgICAgJiZUQVJHRVRfTE9BRF9CVUlMRF9DTEFTUywKICAgICAmJlRBUkdFVF9ZSUVMRF9GUk9NLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAorICAgICYmVEFSR0VUX0dFVF9BV0FJVEFCTEUsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZUQVJHRVRfSU5QTEFDRV9MU0hJRlQsCiAgICAgJiZUQVJHRVRfSU5QTEFDRV9SU0hJRlQsCkBAIC04MCw4ICs4MCw4IEBACiAgICAgJiZUQVJHRVRfSU5QTEFDRV9YT1IsCiAgICAgJiZUQVJHRVRfSU5QTEFDRV9PUiwKICAgICAmJlRBUkdFVF9CUkVBS19MT09QLAotICAgICYmVEFSR0VUX1dJVEhfQ0xFQU5VUCwKLSAgICAmJl91bmtub3duX29wY29kZSwKKyAgICAmJlRBUkdFVF9XSVRIX0NMRUFOVVBfU1RBUlQsCisgICAgJiZUQVJHRVRfV0lUSF9DTEVBTlVQX0ZJTklTSCwKICAgICAmJlRBUkdFVF9SRVRVUk5fVkFMVUUsCiAgICAgJiZUQVJHRVRfSU1QT1JUX1NUQVIsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCkBAIC0xNDgsMTIgKzE0OCwxMiBAQAogICAgICYmVEFSR0VUX1NFVF9BREQsCiAgICAgJiZUQVJHRVRfTUFQX0FERCwKICAgICAmJlRBUkdFVF9MT0FEX0NMQVNTREVSRUYsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCisgICAgJiZUQVJHRVRfQlVJTERfTElTVF9VTlBBQ0ssCisgICAgJiZUQVJHRVRfQlVJTERfTUFQX1VOUEFDSywKKyAgICAmJlRBUkdFVF9CVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCwKKyAgICAmJlRBUkdFVF9CVUlMRF9UVVBMRV9VTlBBQ0ssCisgICAgJiZUQVJHRVRfQlVJTERfU0VUX1VOUEFDSywKKyAgICAmJlRBUkdFVF9TRVRVUF9BU1lOQ19XSVRILAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLApkaWZmIC0tZ2l0IGEvUHl0aG9uL3BlZXBob2xlLmMgYi9QeXRob24vcGVlcGhvbGUuYwppbmRleCBjNTZjOGZjLi41OWFkM2I3IDEwMDY0NAotLS0gYS9QeXRob24vcGVlcGhvbGUuYworKysgYi9QeXRob24vcGVlcGhvbGUuYwpAQCAtMTgsNyArMTgsMTEgQEAKICAgICB8fCBvcD09SlVNUF9JRl9GQUxTRV9PUl9QT1AgfHwgb3A9PUpVTVBfSUZfVFJVRV9PUl9QT1ApCiAjZGVmaW5lIEpVTVBTX09OX1RSVUUob3ApIChvcD09UE9QX0pVTVBfSUZfVFJVRSB8fCBvcD09SlVNUF9JRl9UUlVFX09SX1BPUCkKICNkZWZpbmUgR0VUSlVNUFRHVChhcnIsIGkpIChHRVRBUkcoYXJyLGkpICsgKEFCU09MVVRFX0pVTVAoYXJyW2ldKSA/IDAgOiBpKzMpKQotI2RlZmluZSBTRVRBUkcoYXJyLCBpLCB2YWwpIGFycltpKzJdID0gdmFsPj44OyBhcnJbaSsxXSA9IHZhbCAmIDI1NQorI2RlZmluZSBTRVRBUkcoYXJyLCBpLCB2YWwpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGFzc2VydCgwIDw9IHZhbCAmJiB2YWwgPD0gMHhmZmZmKTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGFycltpKzJdID0gKHVuc2lnbmVkIGNoYXIpKCgodW5zaWduZWQgaW50KXZhbCk+PjgpOyAgICAgXAorICAgIGFycltpKzFdID0gKHVuc2lnbmVkIGNoYXIpKCgodW5zaWduZWQgaW50KXZhbCkgJiAyNTUpOyAgXAorfSB3aGlsZSgwKQogI2RlZmluZSBDT0RFU0laRShvcCkgIChIQVNfQVJHKG9wKSA/IDMgOiAxKQogI2RlZmluZSBJU0JBU0lDQkxPQ0soYmxvY2tzLCBzdGFydCwgYnl0ZXMpIFwKICAgICAoYmxvY2tzW3N0YXJ0XT09YmxvY2tzW3N0YXJ0K2J5dGVzLTFdKQpAQCAtMzE1LDYgKzMxOSw3IEBACiAgICAgICAgICAgICBjYXNlIFNFVFVQX0VYQ0VQVDoKICAgICAgICAgICAgIGNhc2UgU0VUVVBfRklOQUxMWToKICAgICAgICAgICAgIGNhc2UgU0VUVVBfV0lUSDoKKyAgICAgICAgICAgIGNhc2UgU0VUVVBfQVNZTkNfV0lUSDoKICAgICAgICAgICAgICAgICBqID0gR0VUSlVNUFRHVChjb2RlLCBpKTsKICAgICAgICAgICAgICAgICBibG9ja3Nbal0gPSAxOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzU1LDcgKzM2MCw4IEBACiAgICAgdW5zaWduZWQgY2hhciAqY29kZXN0ciA9IE5VTEw7CiAgICAgdW5zaWduZWQgY2hhciAqbGluZW5vOwogICAgIGludCAqYWRkcm1hcCA9IE5VTEw7Ci0gICAgaW50IG5ld19saW5lLCBjdW1fb3JpZ19saW5lLCBsYXN0X2xpbmUsIHRhYnNpejsKKyAgICBpbnQgbmV3X2xpbmUsIGN1bV9vcmlnX2xpbmUsIGxhc3RfbGluZTsKKyAgICBQeV9zc2l6ZV90IHRhYnNpejsKICAgICBQeU9iamVjdCAqKmNvbnN0X3N0YWNrID0gTlVMTDsKICAgICBQeV9zc2l6ZV90ICpsb2FkX2NvbnN0X3N0YWNrID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGNvbnN0X3N0YWNrX3RvcCA9IC0xOwpAQCAtNjE1LDYgKzYyMSw3IEBACiAgICAgICAgICAgICBjYXNlIFNFVFVQX0VYQ0VQVDoKICAgICAgICAgICAgIGNhc2UgU0VUVVBfRklOQUxMWToKICAgICAgICAgICAgIGNhc2UgU0VUVVBfV0lUSDoKKyAgICAgICAgICAgIGNhc2UgU0VUVVBfQVNZTkNfV0lUSDoKICAgICAgICAgICAgICAgICB0Z3QgPSBHRVRKVU1QVEdUKGNvZGVzdHIsIGkpOwogICAgICAgICAgICAgICAgIC8qIFJlcGxhY2UgSlVNUF8qIHRvIGEgUkVUVVJOIGludG8ganVzdCBhIFJFVFVSTiAqLwogICAgICAgICAgICAgICAgIGlmIChVTkNPTkRJVElPTkFMX0pVTVAob3Bjb2RlKSAmJgpAQCAtNjYwLDcgKzY2Nyw4IEBACiAKICAgICAvKiBGaXh1cCBsaW5lbm90YWIgKi8KICAgICBmb3IgKGk9MCwgbm9wcz0wIDsgaTxjb2RlbGVuIDsgaSArPSBDT0RFU0laRShjb2Rlc3RyW2ldKSkgewotICAgICAgICBhZGRybWFwW2ldID0gaSAtIG5vcHM7CisgICAgICAgIGFzc2VydChpIC0gbm9wcyA8PSBJTlRfTUFYKTsKKyAgICAgICAgYWRkcm1hcFtpXSA9IChpbnQpKGkgLSBub3BzKTsKICAgICAgICAgaWYgKGNvZGVzdHJbaV0gPT0gTk9QKQogICAgICAgICAgICAgbm9wcysrOwogICAgIH0KQEAgLTY5OCw2ICs3MDYsNyBAQAogICAgICAgICAgICAgY2FzZSBTRVRVUF9FWENFUFQ6CiAgICAgICAgICAgICBjYXNlIFNFVFVQX0ZJTkFMTFk6CiAgICAgICAgICAgICBjYXNlIFNFVFVQX1dJVEg6CisgICAgICAgICAgICBjYXNlIFNFVFVQX0FTWU5DX1dJVEg6CiAgICAgICAgICAgICAgICAgaiA9IGFkZHJtYXBbR0VUQVJHKGNvZGVzdHIsIGkpICsgaSArIDNdIC0gYWRkcm1hcFtpXSAtIDM7CiAgICAgICAgICAgICAgICAgU0VUQVJHKGNvZGVzdHIsIGksIGopOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5ZnBlLmMgYi9QeXRob24vcHlmcGUuYwppbmRleCA0YjdmNWJhLi5hYjBlZjgzIDEwMDY0NAotLS0gYS9QeXRob24vcHlmcGUuYworKysgYi9QeXRob24vcHlmcGUuYwpAQCAtMSw2ICsxLDYgQEAKICNpbmNsdWRlICJweWNvbmZpZy5oIgogI2luY2x1ZGUgInB5ZnBlLmgiCi0vKiAKKy8qCiAgKiBUaGUgc2lnbmFsIGhhbmRsZXIgZm9yIFNJR0ZQRSBpcyBhY3R1YWxseSBkZWNsYXJlZCBpbiBhbiBleHRlcm5hbAogICogbW9kdWxlIGZwZWN0bCwgb3IgYXMgcHJlZmVycmVkIGJ5IHRoZSB1c2VyLiAgVGhlc2UgdmFyaWFibGUKICAqIGRlZmluaXRpb25zIGFyZSByZXF1aXJlZCBpbiBvcmRlciB0byBjb21waWxlIFB5dGhvbiB3aXRob3V0CkBAIC0xMyw3ICsxMyw3IEBACiBpbnQgUHlGUEVfY291bnRlciA9IDA7CiAjZW5kaWYKIAotLyogSGF2ZSB0aGlzIG91dHNpZGUgdGhlIGFib3ZlICNpZmRlZiwgc2luY2Ugc29tZSBwaWNreSBBTlNJIGNvbXBpbGVycyBpc3N1ZSBhIAorLyogSGF2ZSB0aGlzIG91dHNpZGUgdGhlIGFib3ZlICNpZmRlZiwgc2luY2Ugc29tZSBwaWNreSBBTlNJIGNvbXBpbGVycyBpc3N1ZSBhCiAgICB3YXJuaW5nIHdoZW4gY29tcGlsaW5nIGFuIGVtcHR5IGZpbGUuICovCiAKIGRvdWJsZQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5bGlmZWN5Y2xlLmMgYi9QeXRob24vcHlsaWZlY3ljbGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjVlZmM5Ci0tLSAvZGV2L251bGwKKysrIGIvUHl0aG9uL3B5bGlmZWN5Y2xlLmMKQEAgLTAsMCArMSwxNTgyIEBACisvKiBQeXRob24gaW50ZXJwcmV0ZXIgdG9wLWxldmVsIHJvdXRpbmVzLCBpbmNsdWRpbmcgaW5pdC9leGl0ICovCisKKyNpbmNsdWRlICJQeXRob24uaCIKKworI2luY2x1ZGUgIlB5dGhvbi1hc3QuaCIKKyN1bmRlZiBZaWVsZCAvKiB1bmRlZmluZSBtYWNybyBjb25mbGljdGluZyB3aXRoIHdpbmJhc2UuaCAqLworI2luY2x1ZGUgImdyYW1tYXIuaCIKKyNpbmNsdWRlICJub2RlLmgiCisjaW5jbHVkZSAidG9rZW4uaCIKKyNpbmNsdWRlICJwYXJzZXRvay5oIgorI2luY2x1ZGUgImVycmNvZGUuaCIKKyNpbmNsdWRlICJjb2RlLmgiCisjaW5jbHVkZSAic3ltdGFibGUuaCIKKyNpbmNsdWRlICJhc3QuaCIKKyNpbmNsdWRlICJtYXJzaGFsLmgiCisjaW5jbHVkZSAib3NkZWZzLmgiCisjaW5jbHVkZSA8bG9jYWxlLmg+CisKKyNpZmRlZiBIQVZFX1NJR05BTF9ICisjaW5jbHVkZSA8c2lnbmFsLmg+CisjZW5kaWYKKworI2lmZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlICJtYWxsb2MuaCIgLyogZm9yIGFsbG9jYSAqLworI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xBTkdJTkZPX0gKKyNpbmNsdWRlIDxsYW5naW5mby5oPgorI2VuZGlmCisKKyNpZmRlZiBNU19XSU5ET1dTCisjdW5kZWYgQllURQorI2luY2x1ZGUgIndpbmRvd3MuaCIKKyNlbmRpZgorCitfUHlfSURFTlRJRklFUihmbHVzaCk7CitfUHlfSURFTlRJRklFUihuYW1lKTsKK19QeV9JREVOVElGSUVSKHN0ZGluKTsKK19QeV9JREVOVElGSUVSKHN0ZG91dCk7CitfUHlfSURFTlRJRklFUihzdGRlcnIpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK2V4dGVybiB3Y2hhcl90ICpQeV9HZXRQYXRoKHZvaWQpOworCitleHRlcm4gZ3JhbW1hciBfUHlQYXJzZXJfR3JhbW1hcjsgLyogRnJvbSBncmFtaW5pdC5jICovCisKKy8qIEZvcndhcmQgKi8KK3N0YXRpYyB2b2lkIGluaXRtYWluKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwKTsKK3N0YXRpYyBpbnQgaW5pdGZzZW5jb2RpbmcoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApOworc3RhdGljIHZvaWQgaW5pdHNpdGUodm9pZCk7CitzdGF0aWMgaW50IGluaXRzdGRpbyh2b2lkKTsKK3N0YXRpYyB2b2lkIGluaXRzaWdzKHZvaWQpOworc3RhdGljIHZvaWQgY2FsbF9weV9leGl0ZnVuY3Modm9pZCk7CitzdGF0aWMgdm9pZCB3YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24odm9pZCk7CitzdGF0aWMgdm9pZCBjYWxsX2xsX2V4aXRmdW5jcyh2b2lkKTsKK2V4dGVybiBpbnQgX1B5VW5pY29kZV9Jbml0KHZvaWQpOworZXh0ZXJuIGludCBfUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgX1B5VW5pY29kZV9GaW5pKHZvaWQpOworZXh0ZXJuIGludCBfUHlMb25nX0luaXQodm9pZCk7CitleHRlcm4gdm9pZCBQeUxvbmdfRmluaSh2b2lkKTsKK2V4dGVybiBpbnQgX1B5RmF1bHRoYW5kbGVyX0luaXQodm9pZCk7CitleHRlcm4gdm9pZCBfUHlGYXVsdGhhbmRsZXJfRmluaSh2b2lkKTsKK2V4dGVybiB2b2lkIF9QeUhhc2hfRmluaSh2b2lkKTsKK2V4dGVybiBpbnQgX1B5VHJhY2VNYWxsb2NfSW5pdCh2b2lkKTsKK2V4dGVybiBpbnQgX1B5VHJhY2VNYWxsb2NfRmluaSh2b2lkKTsKKworI2lmZGVmIFdJVEhfVEhSRUFECitleHRlcm4gdm9pZCBfUHlHSUxTdGF0ZV9Jbml0KFB5SW50ZXJwcmV0ZXJTdGF0ZSAqLCBQeVRocmVhZFN0YXRlICopOworZXh0ZXJuIHZvaWQgX1B5R0lMU3RhdGVfRmluaSh2b2lkKTsKKyNlbmRpZiAvKiBXSVRIX1RIUkVBRCAqLworCisvKiBHbG9iYWwgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgYXJlIGluIHB5ZGVidWcuaCAqLworLyogWFhYIChuY29naGxhbik6IG1vdmUgdGhvc2UgZGVjbGFyYXRpb25zIHRvIHB5bGlmZWN5Y2xlLmg/ICovCitpbnQgUHlfRGVidWdGbGFnOyAvKiBOZWVkZWQgYnkgcGFyc2VyLmMgKi8KK2ludCBQeV9WZXJib3NlRmxhZzsgLyogTmVlZGVkIGJ5IGltcG9ydC5jICovCitpbnQgUHlfUXVpZXRGbGFnOyAvKiBOZWVkZWQgYnkgc3lzbW9kdWxlLmMgKi8KK2ludCBQeV9JbnRlcmFjdGl2ZUZsYWc7IC8qIE5lZWRlZCBieSBQeV9GZElzSW50ZXJhY3RpdmUoKSBiZWxvdyAqLworaW50IFB5X0luc3BlY3RGbGFnOyAvKiBOZWVkZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gZXhpdCBhdCBTeXN0ZW1FeGl0ICovCitpbnQgUHlfT3B0aW1pemVGbGFnID0gMDsgLyogTmVlZGVkIGJ5IGNvbXBpbGUuYyAqLworaW50IFB5X05vU2l0ZUZsYWc7IC8qIFN1cHByZXNzICdpbXBvcnQgc2l0ZScgKi8KK2ludCBQeV9CeXRlc1dhcm5pbmdGbGFnOyAvKiBXYXJuIG9uIHN0cihieXRlcykgYW5kIHN0cihidWZmZXIpICovCitpbnQgUHlfVXNlQ2xhc3NFeGNlcHRpb25zRmxhZyA9IDE7IC8qIE5lZWRlZCBieSBibHRpbm1vZHVsZS5jOiBkZXByZWNhdGVkICovCitpbnQgUHlfRnJvemVuRmxhZzsgLyogTmVlZGVkIGJ5IGdldHBhdGguYyAqLworaW50IFB5X0lnbm9yZUVudmlyb25tZW50RmxhZzsgLyogZS5nLiBQWVRIT05QQVRILCBQWVRIT05IT01FICovCitpbnQgUHlfRG9udFdyaXRlQnl0ZWNvZGVGbGFnOyAvKiBTdXBwcmVzcyB3cml0aW5nIGJ5dGVjb2RlIGZpbGVzICgqLnB5W2NvXSkgKi8KK2ludCBQeV9Ob1VzZXJTaXRlRGlyZWN0b3J5ID0gMDsgLyogZm9yIC1zIGFuZCBzaXRlLnB5ICovCitpbnQgUHlfVW5idWZmZXJlZFN0ZGlvRmxhZyA9IDA7IC8qIFVuYnVmZmVyZWQgYmluYXJ5IHN0ZHtpbixvdXQsZXJyfSAqLworaW50IFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IDA7IC8qIGZvciAtUiBhbmQgUFlUSE9OSEFTSFNFRUQgKi8KK2ludCBQeV9Jc29sYXRlZEZsYWcgPSAwOyAvKiBmb3IgLUksIGlzb2xhdGUgZnJvbSB1c2VyJ3MgZW52ICovCisKK1B5VGhyZWFkU3RhdGUgKl9QeV9GaW5hbGl6aW5nID0gTlVMTDsKKworLyogSGFjayB0byBmb3JjZSBsb2FkaW5nIG9mIG9iamVjdCBmaWxlcyAqLworaW50ICgqX1B5T1NfbXlzdHJuaWNtcF9oYWNrKShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCkgPSBcCisgICAgUHlPU19teXN0cm5pY21wOyAvKiBQeXRob24vcHlzdHJjbXAubyAqLworCisvKiBQeU1vZHVsZV9HZXRXYXJuaW5nc01vZHVsZSBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IGFzIG9mIDIuNgorc2luY2UgX3dhcm5pbmdzIGlzIGJ1aWx0aW4uICBUaGlzIEFQSSBzaG91bGQgbm90IGJlIHVzZWQuICovCitQeU9iamVjdCAqCitQeU1vZHVsZV9HZXRXYXJuaW5nc01vZHVsZSh2b2lkKQoreworICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIndhcm5pbmdzIik7Cit9CisKK3N0YXRpYyBpbnQgaW5pdGlhbGl6ZWQgPSAwOworCisvKiBBUEkgdG8gYWNjZXNzIHRoZSBpbml0aWFsaXplZCBmbGFnIC0tIHVzZWZ1bCBmb3IgZXNvdGVyaWMgdXNlICovCisKK2ludAorUHlfSXNJbml0aWFsaXplZCh2b2lkKQoreworICAgIHJldHVybiBpbml0aWFsaXplZDsKK30KKworLyogSGVscGVyIHRvIGFsbG93IGFuIGVtYmVkZGluZyBhcHBsaWNhdGlvbiB0byBvdmVycmlkZSB0aGUgbm9ybWFsCisgKiBtZWNoYW5pc20gdGhhdCBhdHRlbXB0cyB0byBmaWd1cmUgb3V0IGFuIGFwcHJvcHJpYXRlIElPIGVuY29kaW5nCisgKi8KKworc3RhdGljIGNoYXIgKl9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nID0gTlVMTDsKK3N0YXRpYyBjaGFyICpfUHlfU3RhbmRhcmRTdHJlYW1FcnJvcnMgPSBOVUxMOworCitpbnQKK1B5X1NldFN0YW5kYXJkU3RyZWFtRW5jb2RpbmcoY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBpZiAoUHlfSXNJbml0aWFsaXplZCgpKSB7CisgICAgICAgIC8qIFRoaXMgaXMgdG9vIGxhdGUgdG8gaGF2ZSBhbnkgZWZmZWN0ICovCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgLyogQ2FuJ3QgY2FsbCBQeUVycl9Ob01lbW9yeSgpIG9uIGVycm9ycywgYXMgUHl0aG9uIGhhc24ndCBiZWVuCisgICAgICogaW5pdGlhbGlzZWQgeWV0LgorICAgICAqCisgICAgICogSG93ZXZlciwgdGhlIHJhdyBtZW1vcnkgYWxsb2NhdG9ycyBhcmUgaW5pdGlhbGlzZWQgYXBwcm9wcmlhdGVseQorICAgICAqIGFzIEMgc3RhdGljIHZhcmlhYmxlcywgc28gX1B5TWVtX1Jhd1N0cmR1cCBpcyBPSyBldmVuIHRob3VnaAorICAgICAqIFB5X0luaXRpYWxpemUgaGFzbid0IGJlZW4gY2FsbGVkIHlldC4KKyAgICAgKi8KKyAgICBpZiAoZW5jb2RpbmcpIHsKKyAgICAgICAgX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcgPSBfUHlNZW1fUmF3U3RyZHVwKGVuY29kaW5nKTsKKyAgICAgICAgaWYgKCFfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZykgeworICAgICAgICAgICAgcmV0dXJuIC0yOworICAgICAgICB9CisgICAgfQorICAgIGlmIChlcnJvcnMpIHsKKyAgICAgICAgX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzID0gX1B5TWVtX1Jhd1N0cmR1cChlcnJvcnMpOworICAgICAgICBpZiAoIV9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycykgeworICAgICAgICAgICAgaWYgKF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nKSB7CisgICAgICAgICAgICAgICAgUHlNZW1fUmF3RnJlZShfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLTM7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIEdsb2JhbCBpbml0aWFsaXphdGlvbnMuICBDYW4gYmUgdW5kb25lIGJ5IFB5X0ZpbmFsaXplKCkuICBEb24ndAorICAgY2FsbCB0aGlzIHR3aWNlIHdpdGhvdXQgYW4gaW50ZXJ2ZW5pbmcgUHlfRmluYWxpemUoKSBjYWxsLiAgV2hlbgorICAgaW5pdGlhbGl6YXRpb25zIGZhaWwsIGEgZmF0YWwgZXJyb3IgaXMgaXNzdWVkIGFuZCB0aGUgZnVuY3Rpb24gZG9lcworICAgbm90IHJldHVybi4gIE9uIHJldHVybiwgdGhlIGZpcnN0IHRocmVhZCBhbmQgaW50ZXJwcmV0ZXIgc3RhdGUgaGF2ZQorICAgYmVlbiBjcmVhdGVkLgorCisgICBMb2NraW5nOiB5b3UgbXVzdCBob2xkIHRoZSBpbnRlcnByZXRlciBsb2NrIHdoaWxlIGNhbGxpbmcgdGhpcy4KKyAgIChJZiB0aGUgbG9jayBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLCB0aGF0J3MgZXF1aXZhbGVudCB0bworICAgaGF2aW5nIHRoZSBsb2NrLCBidXQgeW91IGNhbm5vdCB1c2UgbXVsdGlwbGUgdGhyZWFkcy4pCisKKyovCisKK3N0YXRpYyBpbnQKK2FkZF9mbGFnKGludCBmbGFnLCBjb25zdCBjaGFyICplbnZzKQoreworICAgIGludCBlbnYgPSBhdG9pKGVudnMpOworICAgIGlmIChmbGFnIDwgZW52KQorICAgICAgICBmbGFnID0gZW52OworICAgIGlmIChmbGFnIDwgMSkKKyAgICAgICAgZmxhZyA9IDE7CisgICAgcmV0dXJuIGZsYWc7Cit9CisKK3N0YXRpYyBjaGFyKgorZ2V0X2NvZGVjX25hbWUoY29uc3QgY2hhciAqZW5jb2RpbmcpCit7CisgICAgY2hhciAqbmFtZV91dGY4LCAqbmFtZV9zdHI7CisgICAgUHlPYmplY3QgKmNvZGVjLCAqbmFtZSA9IE5VTEw7CisKKyAgICBjb2RlYyA9IF9QeUNvZGVjX0xvb2t1cChlbmNvZGluZyk7CisgICAgaWYgKCFjb2RlYykKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIG5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNvZGVjLCAmUHlJZF9uYW1lKTsKKyAgICBQeV9DTEVBUihjb2RlYyk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgbmFtZV91dGY4ID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lKTsKKyAgICBpZiAobmFtZV91dGY4ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgbmFtZV9zdHIgPSBfUHlNZW1fUmF3U3RyZHVwKG5hbWVfdXRmOCk7CisgICAgUHlfREVDUkVGKG5hbWUpOworICAgIGlmIChuYW1lX3N0ciA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gbmFtZV9zdHI7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoY29kZWMpOworICAgIFB5X1hERUNSRUYobmFtZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBjaGFyKgorZ2V0X2xvY2FsZV9lbmNvZGluZyh2b2lkKQoreworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBjaGFyIGNvZGVwYWdlWzEwMF07CisgICAgUHlPU19zbnByaW50Zihjb2RlcGFnZSwgc2l6ZW9mKGNvZGVwYWdlKSwgImNwJWQiLCBHZXRBQ1AoKSk7CisgICAgcmV0dXJuIGdldF9jb2RlY19uYW1lKGNvZGVwYWdlKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKENPREVTRVQpCisgICAgY2hhciogY29kZXNldCA9IG5sX2xhbmdpbmZvKENPREVTRVQpOworICAgIGlmICghY29kZXNldCB8fCBjb2Rlc2V0WzBdID09ICdcMCcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDT0RFU0VUIGlzIG5vdCBzZXQgb3IgZW1wdHkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBnZXRfY29kZWNfbmFtZShjb2Rlc2V0KTsKKyNlbHNlCisgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKKyAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZAoraW1wb3J0X2luaXQoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsIFB5T2JqZWN0ICpzeXNtb2QpCit7CisgICAgUHlPYmplY3QgKmltcG9ydGxpYjsKKyAgICBQeU9iamVjdCAqaW1wbW9kOworICAgIFB5T2JqZWN0ICpzeXNfbW9kdWxlczsKKyAgICBQeU9iamVjdCAqdmFsdWU7CisKKyAgICAvKiBJbXBvcnQgX2ltcG9ydGxpYiB0aHJvdWdoIGl0cyBmcm96ZW4gdmVyc2lvbiwgX2Zyb3plbl9pbXBvcnRsaWIuICovCisgICAgaWYgKFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZSgiX2Zyb3plbl9pbXBvcnRsaWIiKSA8PSAwKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiIpOworICAgIH0KKyAgICBlbHNlIGlmIChQeV9WZXJib3NlRmxhZykgeworICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiAjIGZyb3plblxuIik7CisgICAgfQorICAgIGltcG9ydGxpYiA9IFB5SW1wb3J0X0FkZE1vZHVsZSgiX2Zyb3plbl9pbXBvcnRsaWIiKTsKKyAgICBpZiAoaW1wb3J0bGliID09IE5VTEwpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY291bGRuJ3QgZ2V0IF9mcm96ZW5faW1wb3J0bGliIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAgICJzeXMubW9kdWxlcyIpOworICAgIH0KKyAgICBpbnRlcnAtPmltcG9ydGxpYiA9IGltcG9ydGxpYjsKKyAgICBQeV9JTkNSRUYoaW50ZXJwLT5pbXBvcnRsaWIpOworCisgICAgLyogSW1wb3J0IHRoZSBfaW1wIG1vZHVsZSAqLworICAgIGltcG1vZCA9IFB5SW5pdF9pbXAoKTsKKyAgICBpZiAoaW1wbW9kID09IE5VTEwpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW1wb3J0IF9pbXAiKTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlfVmVyYm9zZUZsYWcpIHsKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgX2ltcCAjIGJ1aWx0aW5cbiIpOworICAgIH0KKyAgICBzeXNfbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKKyAgICBpZiAoUHlfVmVyYm9zZUZsYWcpIHsKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgc3lzICMgYnVpbHRpblxuIik7CisgICAgfQorICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhzeXNfbW9kdWxlcywgIl9pbXAiLCBpbXBtb2QpIDwgMCkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBzYXZlIF9pbXAgdG8gc3lzLm1vZHVsZXMiKTsKKyAgICB9CisKKyAgICAvKiBJbnN0YWxsIGltcG9ydGxpYiBhcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgaW1wb3J0ICovCisgICAgdmFsdWUgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGltcG9ydGxpYiwgIl9pbnN0YWxsIiwgIk9PIiwgc3lzbW9kLCBpbXBtb2QpOworICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1ByaW50KCk7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGltcG9ydGxpYiBpbnN0YWxsIGZhaWxlZCIpOworICAgIH0KKyAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIFB5X0RFQ1JFRihpbXBtb2QpOworCisgICAgX1B5SW1wb3J0WmlwX0luaXQoKTsKK30KKworCit2b2lkCitfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoaW50IGluc3RhbGxfc2lncywgaW50IGluc3RhbGxfaW1wb3J0bGliKQoreworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICBQeU9iamVjdCAqYmltb2QsICpzeXNtb2QsICpwc3RkZXJyOworICAgIGNoYXIgKnA7CisgICAgZXh0ZXJuIHZvaWQgX1B5X1JlYWR5VHlwZXModm9pZCk7CisKKyAgICBpZiAoaW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBpbml0aWFsaXplZCA9IDE7CisgICAgX1B5X0ZpbmFsaXppbmcgPSBOVUxMOworCisjaWYgZGVmaW5lZChIQVZFX0xBTkdJTkZPX0gpICYmIGRlZmluZWQoSEFWRV9TRVRMT0NBTEUpCisgICAgLyogU2V0IHVwIHRoZSBMQ19DVFlQRSBsb2NhbGUsIHNvIHdlIGNhbiBvYnRhaW4KKyAgICAgICB0aGUgbG9jYWxlJ3MgY2hhcnNldCB3aXRob3V0IGhhdmluZyB0byBzd2l0Y2gKKyAgICAgICBsb2NhbGVzLiAqLworICAgIHNldGxvY2FsZShMQ19DVFlQRSwgIiIpOworI2VuZGlmCisKKyAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkRFQlVHIikpICYmICpwICE9ICdcMCcpCisgICAgICAgIFB5X0RlYnVnRmxhZyA9IGFkZF9mbGFnKFB5X0RlYnVnRmxhZywgcCk7CisgICAgaWYgKChwID0gUHlfR0VURU5WKCJQWVRIT05WRVJCT1NFIikpICYmICpwICE9ICdcMCcpCisgICAgICAgIFB5X1ZlcmJvc2VGbGFnID0gYWRkX2ZsYWcoUHlfVmVyYm9zZUZsYWcsIHApOworICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OT1BUSU1JWkUiKSkgJiYgKnAgIT0gJ1wwJykKKyAgICAgICAgUHlfT3B0aW1pemVGbGFnID0gYWRkX2ZsYWcoUHlfT3B0aW1pemVGbGFnLCBwKTsKKyAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkRPTlRXUklURUJZVEVDT0RFIikpICYmICpwICE9ICdcMCcpCisgICAgICAgIFB5X0RvbnRXcml0ZUJ5dGVjb2RlRmxhZyA9IGFkZF9mbGFnKFB5X0RvbnRXcml0ZUJ5dGVjb2RlRmxhZywgcCk7CisgICAgLyogVGhlIHZhcmlhYmxlIGlzIG9ubHkgdGVzdGVkIGZvciBleGlzdGVuY2UgaGVyZTsgX1B5UmFuZG9tX0luaXQgd2lsbAorICAgICAgIGNoZWNrIGl0cyB2YWx1ZSBmdXJ0aGVyLiAqLworICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OSEFTSFNFRUQiKSkgJiYgKnAgIT0gJ1wwJykKKyAgICAgICAgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnID0gYWRkX2ZsYWcoUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnLCBwKTsKKworICAgIF9QeVJhbmRvbV9Jbml0KCk7CisKKyAgICBpbnRlcnAgPSBQeUludGVycHJldGVyU3RhdGVfTmV3KCk7CisgICAgaWYgKGludGVycCA9PSBOVUxMKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBtYWtlIGZpcnN0IGludGVycHJldGVyIik7CisKKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX05ldyhpbnRlcnApOworICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgbWFrZSBmaXJzdCB0aHJlYWQiKTsKKyAgICAodm9pZCkgUHlUaHJlYWRTdGF0ZV9Td2FwKHRzdGF0ZSk7CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIC8qIFdlIGNhbid0IGNhbGwgX1B5RXZhbF9GaW5pVGhyZWFkcygpIGluIFB5X0ZpbmFsaXplIGJlY2F1c2UKKyAgICAgICBkZXN0cm95aW5nIHRoZSBHSUwgbWlnaHQgZmFpbCB3aGVuIGl0IGlzIGJlaW5nIHJlZmVyZW5jZWQgZnJvbQorICAgICAgIGFub3RoZXIgcnVubmluZyB0aHJlYWQgKHNlZSBpc3N1ZSAjOTkwMSkuCisgICAgICAgSW5zdGVhZCB3ZSBkZXN0cm95IHRoZSBwcmV2aW91c2x5IGNyZWF0ZWQgR0lMIGhlcmUsIHdoaWNoIGVuc3VyZXMKKyAgICAgICB0aGF0IHdlIGNhbiBjYWxsIFB5X0luaXRpYWxpemUgLyBQeV9GaW5hbGl6ZSBtdWx0aXBsZSB0aW1lcy4gKi8KKyAgICBfUHlFdmFsX0ZpbmlUaHJlYWRzKCk7CisKKyAgICAvKiBBdXRvLXRocmVhZC1zdGF0ZSBBUEkgKi8KKyAgICBfUHlHSUxTdGF0ZV9Jbml0KGludGVycCwgdHN0YXRlKTsKKyNlbmRpZiAvKiBXSVRIX1RIUkVBRCAqLworCisgICAgX1B5X1JlYWR5VHlwZXMoKTsKKworICAgIGlmICghX1B5RnJhbWVfSW5pdCgpKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0IGZyYW1lcyIpOworCisgICAgaWYgKCFfUHlMb25nX0luaXQoKSkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdCBsb25ncyIpOworCisgICAgaWYgKCFQeUJ5dGVBcnJheV9Jbml0KCkpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXQgYnl0ZWFycmF5Iik7CisKKyAgICBpZiAoIV9QeUZsb2F0X0luaXQoKSkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdCBmbG9hdCIpOworCisgICAgaW50ZXJwLT5tb2R1bGVzID0gUHlEaWN0X05ldygpOworICAgIGlmIChpbnRlcnAtPm1vZHVsZXMgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgbWFrZSBtb2R1bGVzIGRpY3Rpb25hcnkiKTsKKworICAgIC8qIEluaXQgVW5pY29kZSBpbXBsZW1lbnRhdGlvbjsgcmVsaWVzIG9uIHRoZSBjb2RlYyByZWdpc3RyeSAqLworICAgIGlmIChfUHlVbmljb2RlX0luaXQoKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgdW5pY29kZSIpOworICAgIGlmIChfUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0KCkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN0cnVjdHNlcSIpOworCisgICAgYmltb2QgPSBfUHlCdWlsdGluX0luaXQoKTsKKyAgICBpZiAoYmltb2QgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBidWlsdGlucyBtb2R1bGVzIik7CisgICAgX1B5SW1wb3J0X0ZpeHVwQnVpbHRpbihiaW1vZCwgImJ1aWx0aW5zIik7CisgICAgaW50ZXJwLT5idWlsdGlucyA9IFB5TW9kdWxlX0dldERpY3QoYmltb2QpOworICAgIGlmIChpbnRlcnAtPmJ1aWx0aW5zID09IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgYnVpbHRpbnMgZGljdCIpOworICAgIFB5X0lOQ1JFRihpbnRlcnAtPmJ1aWx0aW5zKTsKKworICAgIC8qIGluaXRpYWxpemUgYnVpbHRpbiBleGNlcHRpb25zICovCisgICAgX1B5RXhjX0luaXQoYmltb2QpOworCisgICAgc3lzbW9kID0gX1B5U3lzX0luaXQoKTsKKyAgICBpZiAoc3lzbW9kID09IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIik7CisgICAgaW50ZXJwLT5zeXNkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChzeXNtb2QpOworICAgIGlmIChpbnRlcnAtPnN5c2RpY3QgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgZGljdCIpOworICAgIFB5X0lOQ1JFRihpbnRlcnAtPnN5c2RpY3QpOworICAgIF9QeUltcG9ydF9GaXh1cEJ1aWx0aW4oc3lzbW9kLCAic3lzIik7CisgICAgUHlTeXNfU2V0UGF0aChQeV9HZXRQYXRoKCkpOworICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGludGVycC0+c3lzZGljdCwgIm1vZHVsZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycC0+bW9kdWxlcyk7CisKKyAgICAvKiBTZXQgdXAgYSBwcmVsaW1pbmFyeSBzdGRlcnIgcHJpbnRlciB1bnRpbCB3ZSBoYXZlIGVub3VnaAorICAgICAgIGluZnJhc3RydWN0dXJlIGZvciB0aGUgaW8gbW9kdWxlIGluIHBsYWNlLiAqLworICAgIHBzdGRlcnIgPSBQeUZpbGVfTmV3U3RkUHJpbnRlcihmaWxlbm8oc3RkZXJyKSk7CisgICAgaWYgKHBzdGRlcnIgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3Qgc2V0IHByZWxpbWluYXJ5IHN0ZGVyciIpOworICAgIF9QeVN5c19TZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIsIHBzdGRlcnIpOworICAgIFB5U3lzX1NldE9iamVjdCgiX19zdGRlcnJfXyIsIHBzdGRlcnIpOworICAgIFB5X0RFQ1JFRihwc3RkZXJyKTsKKworICAgIF9QeUltcG9ydF9Jbml0KCk7CisKKyAgICBfUHlJbXBvcnRIb29rc19Jbml0KCk7CisKKyAgICAvKiBJbml0aWFsaXplIF93YXJuaW5ncy4gKi8KKyAgICBfUHlXYXJuaW5nc19Jbml0KCk7CisKKyAgICBpZiAoIWluc3RhbGxfaW1wb3J0bGliKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoX1B5VGltZV9Jbml0KCkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHRpbWUiKTsKKworICAgIGltcG9ydF9pbml0KGludGVycCwgc3lzbW9kKTsKKworICAgIC8qIGluaXRpYWxpemUgdGhlIGZhdWx0aGFuZGxlciBtb2R1bGUgKi8KKyAgICBpZiAoX1B5RmF1bHRoYW5kbGVyX0luaXQoKSkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBmYXVsdGhhbmRsZXIiKTsKKworICAgIGlmIChpbml0ZnNlbmNvZGluZyhpbnRlcnApIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogdW5hYmxlIHRvIGxvYWQgdGhlIGZpbGUgc3lzdGVtIGNvZGVjIik7CisKKyAgICBpZiAoaW5zdGFsbF9zaWdzKQorICAgICAgICBpbml0c2lncygpOyAvKiBTaWduYWwgaGFuZGxpbmcgc3R1ZmYsIGluY2x1ZGluZyBpbml0aW50cigpICovCisKKyAgICBpZiAoX1B5VHJhY2VNYWxsb2NfSW5pdCgpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSB0cmFjZW1hbGxvYyIpOworCisgICAgaW5pdG1haW4oaW50ZXJwKTsgLyogTW9kdWxlIF9fbWFpbl9fICovCisgICAgaWYgKGluaXRzdGRpbygpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigKKyAgICAgICAgICAgICJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN5cyBzdGFuZGFyZCBzdHJlYW1zIik7CisKKyAgICAvKiBJbml0aWFsaXplIHdhcm5pbmdzLiAqLworICAgIGlmIChQeVN5c19IYXNXYXJuT3B0aW9ucygpKSB7CisgICAgICAgIFB5T2JqZWN0ICp3YXJuaW5nc19tb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIndhcm5pbmdzIik7CisgICAgICAgIGlmICh3YXJuaW5nc19tb2R1bGUgPT0gTlVMTCkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICInaW1wb3J0IHdhcm5pbmdzJyBmYWlsZWQ7IHRyYWNlYmFjazpcbiIpOworICAgICAgICAgICAgUHlFcnJfUHJpbnQoKTsKKyAgICAgICAgfQorICAgICAgICBQeV9YREVDUkVGKHdhcm5pbmdzX21vZHVsZSk7CisgICAgfQorCisgICAgaWYgKCFQeV9Ob1NpdGVGbGFnKQorICAgICAgICBpbml0c2l0ZSgpOyAvKiBNb2R1bGUgc2l0ZSAqLworfQorCit2b2lkCitQeV9Jbml0aWFsaXplRXgoaW50IGluc3RhbGxfc2lncykKK3sKKyAgICBfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoaW5zdGFsbF9zaWdzLCAxKTsKK30KKwordm9pZAorUHlfSW5pdGlhbGl6ZSh2b2lkKQoreworICAgIFB5X0luaXRpYWxpemVFeCgxKTsKK30KKworCisjaWZkZWYgQ09VTlRfQUxMT0NTCitleHRlcm4gdm9pZCBkdW1wX2NvdW50cyhGSUxFKik7CisjZW5kaWYKKworLyogRmx1c2ggc3Rkb3V0IGFuZCBzdGRlcnIgKi8KKworc3RhdGljIGludAorZmlsZV9pc19jbG9zZWQoUHlPYmplY3QgKmZvYmopCit7CisgICAgaW50IHI7CisgICAgUHlPYmplY3QgKnRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZm9iaiwgImNsb3NlZCIpOworICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgciA9IFB5T2JqZWN0X0lzVHJ1ZSh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIGlmIChyIDwgMCkKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICByZXR1cm4gciA+IDA7Cit9CisKK3N0YXRpYyB2b2lkCitmbHVzaF9zdGRfZmlsZXModm9pZCkKK3sKKyAgICBQeU9iamVjdCAqZm91dCA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRvdXQpOworICAgIFB5T2JqZWN0ICpmZXJyID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGVycik7CisgICAgUHlPYmplY3QgKnRtcDsKKworICAgIGlmIChmb3V0ICE9IE5VTEwgJiYgZm91dCAhPSBQeV9Ob25lICYmICFmaWxlX2lzX2Nsb3NlZChmb3V0KSkgeworICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShmb3V0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgfQorCisgICAgaWYgKGZlcnIgIT0gTlVMTCAmJiBmZXJyICE9IFB5X05vbmUgJiYgIWZpbGVfaXNfY2xvc2VkKGZlcnIpKSB7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgfQorfQorCisvKiBVbmRvIHRoZSBlZmZlY3Qgb2YgUHlfSW5pdGlhbGl6ZSgpLgorCisgICBCZXdhcmU6IGlmIG11bHRpcGxlIGludGVycHJldGVyIGFuZC9vciB0aHJlYWQgc3RhdGVzIGV4aXN0LCB0aGVzZQorICAgYXJlIG5vdCB3aXBlZCBvdXQ7IG9ubHkgdGhlIGN1cnJlbnQgdGhyZWFkIGFuZCBpbnRlcnByZXRlciBzdGF0ZQorICAgYXJlIGRlbGV0ZWQuICBCdXQgc2luY2UgZXZlcnl0aGluZyBlbHNlIGlzIGRlbGV0ZWQsIHRob3NlIG90aGVyCisgICBpbnRlcnByZXRlciBhbmQgdGhyZWFkIHN0YXRlcyBzaG91bGQgbm8gbG9uZ2VyIGJlIHVzZWQuCisKKyAgIChYWFggV2Ugc2hvdWxkIGRvIGJldHRlciwgZS5nLiB3aXBlIG91dCBhbGwgaW50ZXJwcmV0ZXJzIGFuZAorICAgdGhyZWFkcy4pCisKKyAgIExvY2tpbmc6IGFzIGFib3ZlLgorCisqLworCit2b2lkCitQeV9GaW5hbGl6ZSh2b2lkKQoreworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKworICAgIGlmICghaW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHdhaXRfZm9yX3RocmVhZF9zaHV0ZG93bigpOworCisgICAgLyogVGhlIGludGVycHJldGVyIGlzIHN0aWxsIGVudGlyZWx5IGludGFjdCBhdCB0aGlzIHBvaW50LCBhbmQgdGhlCisgICAgICogZXhpdCBmdW5jcyBtYXkgYmUgcmVseWluZyBvbiB0aGF0LiAgSW4gcGFydGljdWxhciwgaWYgc29tZSB0aHJlYWQKKyAgICAgKiBvciBleGl0IGZ1bmMgaXMgc3RpbGwgd2FpdGluZyB0byBkbyBhbiBpbXBvcnQsIHRoZSBpbXBvcnQgbWFjaGluZXJ5CisgICAgICogZXhwZWN0cyBQeV9Jc0luaXRpYWxpemVkKCkgdG8gcmV0dXJuIHRydWUuICBTbyBkb24ndCBzYXkgdGhlCisgICAgICogaW50ZXJwcmV0ZXIgaXMgdW5pbml0aWFsaXplZCB1bnRpbCBhZnRlciB0aGUgZXhpdCBmdW5jcyBoYXZlIHJ1bi4KKyAgICAgKiBOb3RlIHRoYXQgVGhyZWFkaW5nLnB5IHVzZXMgYW4gZXhpdCBmdW5jIHRvIGRvIGEgam9pbiBvbiBhbGwgdGhlCisgICAgICogdGhyZWFkcyBjcmVhdGVkIHRocnUgaXQsIHNvIHRoaXMgYWxzbyBwcm90ZWN0cyBwZW5kaW5nIGltcG9ydHMgaW4KKyAgICAgKiB0aGUgdGhyZWFkcyBjcmVhdGVkIHZpYSBUaHJlYWRpbmcuCisgICAgICovCisgICAgY2FsbF9weV9leGl0ZnVuY3MoKTsKKworICAgIC8qIEdldCBjdXJyZW50IHRocmVhZCBzdGF0ZSBhbmQgaW50ZXJwcmV0ZXIgcG9pbnRlciAqLworICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgaW50ZXJwID0gdHN0YXRlLT5pbnRlcnA7CisKKyAgICAvKiBSZW1haW5pbmcgdGhyZWFkcyAoZS5nLiBkYWVtb24gdGhyZWFkcykgd2lsbCBhdXRvbWF0aWNhbGx5IGV4aXQKKyAgICAgICBhZnRlciB0YWtpbmcgdGhlIEdJTCAoaW4gUHlFdmFsX1Jlc3RvcmVUaHJlYWQoKSkuICovCisgICAgX1B5X0ZpbmFsaXppbmcgPSB0c3RhdGU7CisgICAgaW5pdGlhbGl6ZWQgPSAwOworCisgICAgLyogRmx1c2ggc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciAqLworICAgIGZsdXNoX3N0ZF9maWxlcygpOworCisgICAgLyogRGlzYWJsZSBzaWduYWwgaGFuZGxpbmcgKi8KKyAgICBQeU9TX0ZpbmlJbnRlcnJ1cHRzKCk7CisKKyAgICAvKiBDb2xsZWN0IGdhcmJhZ2UuICBUaGlzIG1heSBjYWxsIGZpbmFsaXplcnM7IGl0J3MgbmljZSB0byBjYWxsIHRoZXNlCisgICAgICogYmVmb3JlIGFsbCBtb2R1bGVzIGFyZSBkZXN0cm95ZWQuCisgICAgICogWFhYIElmIGEgX19kZWxfXyBvciB3ZWFrcmVmIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCBoZXJlLCBhbmQgdHJpZXMgdG8KKyAgICAgKiBYWFggaW1wb3J0IGEgbW9kdWxlLCBiYWQgdGhpbmdzIGNhbiBoYXBwZW4sIGJlY2F1c2UgUHl0aG9uIG5vCisgICAgICogWFhYIGxvbmdlciBiZWxpZXZlcyBpdCdzIGluaXRpYWxpemVkLgorICAgICAqIFhYWCAgICAgRmF0YWwgUHl0aG9uIGVycm9yOiBJbnRlcnByZXRlciBub3QgaW5pdGlhbGl6ZWQgKHZlcnNpb24gbWlzbWF0Y2g/KQorICAgICAqIFhYWCBpcyBlYXN5IHRvIHByb3Zva2UgdGhhdCB3YXkuICBJJ3ZlIGFsc28gc2VlbiwgZS5nLiwKKyAgICAgKiBYWFggICAgIEV4Y2VwdGlvbiBleGNlcHRpb25zLkltcG9ydEVycm9yOiAnTm8gbW9kdWxlIG5hbWVkIHNoYScKKyAgICAgKiBYWFggICAgICAgICBpbiA8ZnVuY3Rpb24gY2FsbGJhY2sgYXQgMHgwMDhGNTcxOD4gaWdub3JlZAorICAgICAqIFhYWCBidXQgSSdtIHVuY2xlYXIgb24gZXhhY3RseSBob3cgdGhhdCBvbmUgaGFwcGVucy4gIEluIGFueSBjYXNlLAorICAgICAqIFhYWCBJIGhhdmVuJ3Qgc2VlbiBhIHJlYWwtbGlmZSByZXBvcnQgb2YgZWl0aGVyIG9mIHRoZXNlLgorICAgICAqLworICAgIFB5R0NfQ29sbGVjdCgpOworI2lmZGVmIENPVU5UX0FMTE9DUworICAgIC8qIFdpdGggQ09VTlRfQUxMT0NTLCBpdCBoZWxwcyB0byBydW4gR0MgbXVsdGlwbGUgdGltZXM6CisgICAgICAgZWFjaCBjb2xsZWN0aW9uIG1pZ2h0IHJlbGVhc2Ugc29tZSB0eXBlcyBmcm9tIHRoZSB0eXBlCisgICAgICAgbGlzdCwgc28gdGhleSBiZWNvbWUgZ2FyYmFnZS4gKi8KKyAgICB3aGlsZSAoUHlHQ19Db2xsZWN0KCkgPiAwKQorICAgICAgICAvKiBub3RoaW5nICovOworI2VuZGlmCisgICAgLyogRGVzdHJveSBhbGwgbW9kdWxlcyAqLworICAgIFB5SW1wb3J0X0NsZWFudXAoKTsKKworICAgIC8qIEZsdXNoIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgKGFnYWluLCBpbiBjYXNlIG1vcmUgd2FzIHByaW50ZWQpICovCisgICAgZmx1c2hfc3RkX2ZpbGVzKCk7CisKKyAgICAvKiBDb2xsZWN0IGZpbmFsIGdhcmJhZ2UuICBUaGlzIGRpc3Bvc2VzIG9mIGN5Y2xlcyBjcmVhdGVkIGJ5CisgICAgICogY2xhc3MgZGVmaW5pdGlvbnMsIGZvciBleGFtcGxlLgorICAgICAqIFhYWCBUaGlzIGlzIGRpc2FibGVkIGJlY2F1c2UgaXQgY2F1c2VkIHRvbyBtYW55IHByb2JsZW1zLiAgSWYKKyAgICAgKiBYWFggYSBfX2RlbF9fIG9yIHdlYWtyZWYgY2FsbGJhY2sgdHJpZ2dlcnMgaGVyZSwgUHl0aG9uIGNvZGUgaGFzCisgICAgICogWFhYIGEgaGFyZCB0aW1lIHJ1bm5pbmcsIGJlY2F1c2UgZXZlbiB0aGUgc3lzIG1vZHVsZSBoYXMgYmVlbgorICAgICAqIFhYWCBjbGVhcmVkIG91dCAoc3lzLnN0ZG91dCBpcyBnb25lLCBzeXMuZXhjZXB0aG9vayBpcyBnb25lLCBldGMpLgorICAgICAqIFhYWCBPbmUgc3ltcHRvbSBpcyBhIHNlcXVlbmNlIG9mIGluZm9ybWF0aW9uLWZyZWUgbWVzc2FnZXMKKyAgICAgKiBYWFggY29taW5nIGZyb20gdGhyZWFkcyAoaWYgYSBfX2RlbF9fIG9yIGNhbGxiYWNrIGlzIGludm9rZWQsCisgICAgICogWFhYIG90aGVyIHRocmVhZHMgY2FuIGV4ZWN1dGUgdG9vLCBhbmQgYW55IGV4Y2VwdGlvbiB0aGV5IGVuY291bnRlcgorICAgICAqIFhYWCB0cmlnZ2VycyBhIGNvbWVkeSBvZiBlcnJvcnMgYXMgc3Vic3lzdGVtIGFmdGVyIHN1YnN5c3RlbQorICAgICAqIFhYWCBmYWlscyB0byBmaW5kIHdoYXQgaXQgKmV4cGVjdHMqIHRvIGZpbmQgaW4gc3lzIHRvIGhlbHAgcmVwb3J0CisgICAgICogWFhYIHRoZSBleGNlcHRpb24gYW5kIGNvbnNlcXVlbnQgdW5leHBlY3RlZCBmYWlsdXJlcykuICBJJ3ZlIGFsc28KKyAgICAgKiBYWFggc2VlbiBzZWdmYXVsdHMgdGhlbiwgYWZ0ZXIgYWRkaW5nIHByaW50IHN0YXRlbWVudHMgdG8gdGhlCisgICAgICogWFhYIFB5dGhvbiBjb2RlIGdldHRpbmcgY2FsbGVkLgorICAgICAqLworI2lmIDAKKyAgICBQeUdDX0NvbGxlY3QoKTsKKyNlbmRpZgorCisgICAgLyogRGlzYWJsZSB0cmFjZW1hbGxvYyBhZnRlciBhbGwgUHl0aG9uIG9iamVjdHMgaGF2ZSBiZWVuIGRlc3Ryb3llZCwKKyAgICAgICBzbyBpdCBpcyBwb3NzaWJsZSB0byB1c2UgdHJhY2VtYWxsb2MgaW4gb2JqZWN0cyBkZXN0cnVjdG9yLiAqLworICAgIF9QeVRyYWNlTWFsbG9jX0ZpbmkoKTsKKworICAgIC8qIERlc3Ryb3kgdGhlIGRhdGFiYXNlIHVzZWQgYnkgX1B5SW1wb3J0X3tGaXh1cCxGaW5kfUV4dGVuc2lvbiAqLworICAgIF9QeUltcG9ydF9GaW5pKCk7CisKKyAgICAvKiBDbGVhbnVwIHR5cGVvYmplY3QuYydzIGludGVybmFsIGNhY2hlcy4gKi8KKyAgICBfUHlUeXBlX0ZpbmkoKTsKKworICAgIC8qIHVubG9hZCBmYXVsdGhhbmRsZXIgbW9kdWxlICovCisgICAgX1B5RmF1bHRoYW5kbGVyX0ZpbmkoKTsKKworICAgIC8qIERlYnVnZ2luZyBzdHVmZiAqLworI2lmZGVmIENPVU5UX0FMTE9DUworICAgIGR1bXBfY291bnRzKHN0ZG91dCk7CisjZW5kaWYKKyAgICAvKiBkdW1wIGhhc2ggc3RhdHMgKi8KKyAgICBfUHlIYXNoX0ZpbmkoKTsKKworICAgIF9QWV9ERUJVR19QUklOVF9UT1RBTF9SRUZTKCk7CisKKyNpZmRlZiBQeV9UUkFDRV9SRUZTCisgICAgLyogRGlzcGxheSBhbGwgb2JqZWN0cyBzdGlsbCBhbGl2ZSAtLSB0aGlzIGNhbiBpbnZva2UgYXJiaXRyYXJ5CisgICAgICogX19yZXByX18gb3ZlcnJpZGVzLCBzbyByZXF1aXJlcyBhIG1vc3RseS1pbnRhY3QgaW50ZXJwcmV0ZXIuCisgICAgICogQWxhcywgYSBsb3Qgb2Ygc3R1ZmYgbWF5IHN0aWxsIGJlIGFsaXZlIG5vdyB0aGF0IHdpbGwgYmUgY2xlYW5lZAorICAgICAqIHVwIGxhdGVyLgorICAgICAqLworICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTkRVTVBSRUZTIikpCisgICAgICAgIF9QeV9QcmludFJlZmVyZW5jZXMoc3RkZXJyKTsKKyNlbmRpZiAvKiBQeV9UUkFDRV9SRUZTICovCisKKyAgICAvKiBDbGVhciBpbnRlcnByZXRlciBzdGF0ZSBhbmQgYWxsIHRocmVhZCBzdGF0ZXMuICovCisgICAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyKGludGVycCk7CisKKyAgICAvKiBOb3cgd2UgZGVjcmVmIHRoZSBleGNlcHRpb24gY2xhc3Nlcy4gIEFmdGVyIHRoaXMgcG9pbnQgbm90aGluZworICAgICAgIGNhbiByYWlzZSBhbiBleGNlcHRpb24uICBUaGF0J3Mgb2theSwgYmVjYXVzZSBlYWNoIEZpbmkoKSBtZXRob2QKKyAgICAgICBiZWxvdyBoYXMgYmVlbiBjaGVja2VkIHRvIG1ha2Ugc3VyZSBubyBleGNlcHRpb25zIGFyZSBldmVyCisgICAgICAgcmFpc2VkLgorICAgICovCisKKyAgICBfUHlFeGNfRmluaSgpOworCisgICAgLyogU3VuZHJ5IGZpbmFsaXplcnMgKi8KKyAgICBQeU1ldGhvZF9GaW5pKCk7CisgICAgUHlGcmFtZV9GaW5pKCk7CisgICAgUHlDRnVuY3Rpb25fRmluaSgpOworICAgIFB5VHVwbGVfRmluaSgpOworICAgIFB5TGlzdF9GaW5pKCk7CisgICAgUHlTZXRfRmluaSgpOworICAgIFB5Qnl0ZXNfRmluaSgpOworICAgIFB5Qnl0ZUFycmF5X0ZpbmkoKTsKKyAgICBQeUxvbmdfRmluaSgpOworICAgIFB5RmxvYXRfRmluaSgpOworICAgIFB5RGljdF9GaW5pKCk7CisgICAgUHlTbGljZV9GaW5pKCk7CisgICAgX1B5R0NfRmluaSgpOworICAgIF9QeVJhbmRvbV9GaW5pKCk7CisKKyAgICAvKiBDbGVhbnVwIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gKi8KKyAgICBfUHlVbmljb2RlX0ZpbmkoKTsKKworICAgIC8qIHJlc2V0IGZpbGUgc3lzdGVtIGRlZmF1bHQgZW5jb2RpbmcgKi8KKyAgICBpZiAoIVB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgJiYgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZykgeworICAgICAgICBQeU1lbV9SYXdGcmVlKChjaGFyKilQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nKTsKKyAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IE5VTEw7CisgICAgfQorCisgICAgLyogWFhYIFN0aWxsIGFsbG9jYXRlZDoKKyAgICAgICAtIHZhcmlvdXMgc3RhdGljIGFkLWhvYyBwb2ludGVycyB0byBpbnRlcm5lZCBzdHJpbmdzCisgICAgICAgLSBpbnQgYW5kIGZsb2F0IGZyZWUgbGlzdCBibG9ja3MKKyAgICAgICAtIHdoYXRldmVyIHZhcmlvdXMgbW9kdWxlcyBhbmQgbGlicmFyaWVzIGFsbG9jYXRlCisgICAgKi8KKworICAgIFB5R3JhbW1hcl9SZW1vdmVBY2NlbGVyYXRvcnMoJl9QeVBhcnNlcl9HcmFtbWFyKTsKKworICAgIC8qIENsZWFudXAgYXV0by10aHJlYWQtc3RhdGUgKi8KKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIF9QeUdJTFN0YXRlX0ZpbmkoKTsKKyNlbmRpZiAvKiBXSVRIX1RIUkVBRCAqLworCisgICAgLyogRGVsZXRlIGN1cnJlbnQgdGhyZWFkLiBBZnRlciB0aGlzLCBtYW55IEMgQVBJIGNhbGxzIGJlY29tZSBjcmFzaHkuICovCisgICAgUHlUaHJlYWRTdGF0ZV9Td2FwKE5VTEwpOworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKKworI2lmZGVmIFB5X1RSQUNFX1JFRlMKKyAgICAvKiBEaXNwbGF5IGFkZHJlc3NlcyAoJiByZWZjbnRzKSBvZiBhbGwgb2JqZWN0cyBzdGlsbCBhbGl2ZS4KKyAgICAgKiBBbiBhZGRyZXNzIGNhbiBiZSB1c2VkIHRvIGZpbmQgdGhlIHJlcHIgb2YgdGhlIG9iamVjdCwgcHJpbnRlZAorICAgICAqIGFib3ZlIGJ5IF9QeV9QcmludFJlZmVyZW5jZXMuCisgICAgICovCisgICAgaWYgKFB5X0dFVEVOVigiUFlUSE9ORFVNUFJFRlMiKSkKKyAgICAgICAgX1B5X1ByaW50UmVmZXJlbmNlQWRkcmVzc2VzKHN0ZGVycik7CisjZW5kaWYgLyogUHlfVFJBQ0VfUkVGUyAqLworI2lmZGVmIFBZTUFMTE9DX0RFQlVHCisgICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKSkKKyAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKKyNlbmRpZgorCisgICAgY2FsbF9sbF9leGl0ZnVuY3MoKTsKK30KKworLyogQ3JlYXRlIGFuZCBpbml0aWFsaXplIGEgbmV3IGludGVycHJldGVyIGFuZCB0aHJlYWQsIGFuZCByZXR1cm4gdGhlCisgICBuZXcgdGhyZWFkLiAgVGhpcyByZXF1aXJlcyB0aGF0IFB5X0luaXRpYWxpemUoKSBoYXMgYmVlbiBjYWxsZWQKKyAgIGZpcnN0LgorCisgICBVbnN1Y2Nlc3NmdWwgaW5pdGlhbGl6YXRpb24geWllbGRzIGEgTlVMTCBwb2ludGVyLiAgTm90ZSB0aGF0ICpubyoKKyAgIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgZXZlbiBpbiB0aGlzIGNhc2UgLS0gdGhlCisgICBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgaGVsZCBpbiB0aGUgdGhyZWFkLCBhbmQgdGhlcmUgaXMgbm8KKyAgIHRocmVhZC4KKworICAgTG9ja2luZzogYXMgYWJvdmUuCisKKyovCisKK1B5VGhyZWFkU3RhdGUgKgorUHlfTmV3SW50ZXJwcmV0ZXIodm9pZCkKK3sKKyAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUsICpzYXZlX3RzdGF0ZTsKKyAgICBQeU9iamVjdCAqYmltb2QsICpzeXNtb2Q7CisKKyAgICBpZiAoIWluaXRpYWxpemVkKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9OZXdJbnRlcnByZXRlcjogY2FsbCBQeV9Jbml0aWFsaXplIGZpcnN0Iik7CisKKyAgICBpbnRlcnAgPSBQeUludGVycHJldGVyU3RhdGVfTmV3KCk7CisgICAgaWYgKGludGVycCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfTmV3KGludGVycCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgc2F2ZV90c3RhdGUgPSBQeVRocmVhZFN0YXRlX1N3YXAodHN0YXRlKTsKKworICAgIC8qIFhYWCBUaGUgZm9sbG93aW5nIGlzIGxheCBpbiBlcnJvciBjaGVja2luZyAqLworCisgICAgaW50ZXJwLT5tb2R1bGVzID0gUHlEaWN0X05ldygpOworCisgICAgYmltb2QgPSBfUHlJbXBvcnRfRmluZEJ1aWx0aW4oImJ1aWx0aW5zIik7CisgICAgaWYgKGJpbW9kICE9IE5VTEwpIHsKKyAgICAgICAgaW50ZXJwLT5idWlsdGlucyA9IFB5TW9kdWxlX0dldERpY3QoYmltb2QpOworICAgICAgICBpZiAoaW50ZXJwLT5idWlsdGlucyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBoYW5kbGVfZXJyb3I7CisgICAgICAgIFB5X0lOQ1JFRihpbnRlcnAtPmJ1aWx0aW5zKTsKKyAgICB9CisKKyAgICAvKiBpbml0aWFsaXplIGJ1aWx0aW4gZXhjZXB0aW9ucyAqLworICAgIF9QeUV4Y19Jbml0KGJpbW9kKTsKKworICAgIHN5c21vZCA9IF9QeUltcG9ydF9GaW5kQnVpbHRpbigic3lzIik7CisgICAgaWYgKGJpbW9kICE9IE5VTEwgJiYgc3lzbW9kICE9IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3QgKnBzdGRlcnI7CisKKyAgICAgICAgaW50ZXJwLT5zeXNkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChzeXNtb2QpOworICAgICAgICBpZiAoaW50ZXJwLT5zeXNkaWN0ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGhhbmRsZV9lcnJvcjsKKyAgICAgICAgUHlfSU5DUkVGKGludGVycC0+c3lzZGljdCk7CisgICAgICAgIFB5U3lzX1NldFBhdGgoUHlfR2V0UGF0aCgpKTsKKyAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoaW50ZXJwLT5zeXNkaWN0LCAibW9kdWxlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycC0+bW9kdWxlcyk7CisgICAgICAgIC8qIFNldCB1cCBhIHByZWxpbWluYXJ5IHN0ZGVyciBwcmludGVyIHVudGlsIHdlIGhhdmUgZW5vdWdoCisgICAgICAgICAgIGluZnJhc3RydWN0dXJlIGZvciB0aGUgaW8gbW9kdWxlIGluIHBsYWNlLiAqLworICAgICAgICBwc3RkZXJyID0gUHlGaWxlX05ld1N0ZFByaW50ZXIoZmlsZW5vKHN0ZGVycikpOworICAgICAgICBpZiAocHN0ZGVyciA9PSBOVUxMKQorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3Qgc2V0IHByZWxpbWluYXJ5IHN0ZGVyciIpOworICAgICAgICBfUHlTeXNfU2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyLCBwc3RkZXJyKTsKKyAgICAgICAgUHlTeXNfU2V0T2JqZWN0KCJfX3N0ZGVycl9fIiwgcHN0ZGVycik7CisgICAgICAgIFB5X0RFQ1JFRihwc3RkZXJyKTsKKworICAgICAgICBfUHlJbXBvcnRIb29rc19Jbml0KCk7CisKKyAgICAgICAgaW1wb3J0X2luaXQoaW50ZXJwLCBzeXNtb2QpOworCisgICAgICAgIGlmIChpbml0ZnNlbmNvZGluZyhpbnRlcnApIDwgMCkKKyAgICAgICAgICAgIGdvdG8gaGFuZGxlX2Vycm9yOworCisgICAgICAgIGlmIChpbml0c3RkaW8oKSA8IDApCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKAorICAgICAgICAgICAgIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIHN0YW5kYXJkIHN0cmVhbXMiKTsKKyAgICAgICAgaW5pdG1haW4oaW50ZXJwKTsKKyAgICAgICAgaWYgKCFQeV9Ob1NpdGVGbGFnKQorICAgICAgICAgICAgaW5pdHNpdGUoKTsKKyAgICB9CisKKyAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiB0c3RhdGU7CisKK2hhbmRsZV9lcnJvcjoKKyAgICAvKiBPb3BzLCBpdCBkaWRuJ3Qgd29yay4gIFVuZG8gaXQgYWxsLiAqLworCisgICAgUHlFcnJfUHJpbnRFeCgwKTsKKyAgICBQeVRocmVhZFN0YXRlX0NsZWFyKHRzdGF0ZSk7CisgICAgUHlUaHJlYWRTdGF0ZV9Td2FwKHNhdmVfdHN0YXRlKTsKKyAgICBQeVRocmVhZFN0YXRlX0RlbGV0ZSh0c3RhdGUpOworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKKworICAgIHJldHVybiBOVUxMOworfQorCisvKiBEZWxldGUgYW4gaW50ZXJwcmV0ZXIgYW5kIGl0cyBsYXN0IHRocmVhZC4gIFRoaXMgcmVxdWlyZXMgdGhhdCB0aGUKKyAgIGdpdmVuIHRocmVhZCBzdGF0ZSBpcyBjdXJyZW50LCB0aGF0IHRoZSB0aHJlYWQgaGFzIG5vIHJlbWFpbmluZworICAgZnJhbWVzLCBhbmQgdGhhdCBpdCBpcyBpdHMgaW50ZXJwcmV0ZXIncyBvbmx5IHJlbWFpbmluZyB0aHJlYWQuCisgICBJdCBpcyBhIGZhdGFsIGVycm9yIHRvIHZpb2xhdGUgdGhlc2UgY29uc3RyYWludHMuCisKKyAgIChQeV9GaW5hbGl6ZSgpIGRvZXNuJ3QgaGF2ZSB0aGVzZSBjb25zdHJhaW50cyAtLSBpdCB6YXBzCisgICBldmVyeXRoaW5nLCByZWdhcmRsZXNzLikKKworICAgTG9ja2luZzogYXMgYWJvdmUuCisKKyovCisKK3ZvaWQKK1B5X0VuZEludGVycHJldGVyKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSkKK3sKKyAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IHRzdGF0ZS0+aW50ZXJwOworCisgICAgaWYgKHRzdGF0ZSAhPSBQeVRocmVhZFN0YXRlX0dFVCgpKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9FbmRJbnRlcnByZXRlcjogdGhyZWFkIGlzIG5vdCBjdXJyZW50Iik7CisgICAgaWYgKHRzdGF0ZS0+ZnJhbWUgIT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfRW5kSW50ZXJwcmV0ZXI6IHRocmVhZCBzdGlsbCBoYXMgYSBmcmFtZSIpOworCisgICAgd2FpdF9mb3JfdGhyZWFkX3NodXRkb3duKCk7CisKKyAgICBpZiAodHN0YXRlICE9IGludGVycC0+dHN0YXRlX2hlYWQgfHwgdHN0YXRlLT5uZXh0ICE9IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0VuZEludGVycHJldGVyOiBub3QgdGhlIGxhc3QgdGhyZWFkIik7CisKKyAgICBQeUltcG9ydF9DbGVhbnVwKCk7CisgICAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyKGludGVycCk7CisgICAgUHlUaHJlYWRTdGF0ZV9Td2FwKE5VTEwpOworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKK30KKworI2lmZGVmIE1TX1dJTkRPV1MKK3N0YXRpYyB3Y2hhcl90ICpwcm9nbmFtZSA9IEwicHl0aG9uIjsKKyNlbHNlCitzdGF0aWMgd2NoYXJfdCAqcHJvZ25hbWUgPSBMInB5dGhvbjMiOworI2VuZGlmCisKK3ZvaWQKK1B5X1NldFByb2dyYW1OYW1lKHdjaGFyX3QgKnBuKQoreworICAgIGlmIChwbiAmJiAqcG4pCisgICAgICAgIHByb2duYW1lID0gcG47Cit9CisKK3djaGFyX3QgKgorUHlfR2V0UHJvZ3JhbU5hbWUodm9pZCkKK3sKKyAgICByZXR1cm4gcHJvZ25hbWU7Cit9CisKK3N0YXRpYyB3Y2hhcl90ICpkZWZhdWx0X2hvbWUgPSBOVUxMOworc3RhdGljIHdjaGFyX3QgZW52X2hvbWVbTUFYUEFUSExFTisxXTsKKwordm9pZAorUHlfU2V0UHl0aG9uSG9tZSh3Y2hhcl90ICpob21lKQoreworICAgIGRlZmF1bHRfaG9tZSA9IGhvbWU7Cit9CisKK3djaGFyX3QgKgorUHlfR2V0UHl0aG9uSG9tZSh2b2lkKQoreworICAgIHdjaGFyX3QgKmhvbWUgPSBkZWZhdWx0X2hvbWU7CisgICAgaWYgKGhvbWUgPT0gTlVMTCAmJiAhUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnKSB7CisgICAgICAgIGNoYXIqIGNob21lID0gUHlfR0VURU5WKCJQWVRIT05IT01FIik7CisgICAgICAgIGlmIChjaG9tZSkgeworICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBQeV9BUlJBWV9MRU5HVEgoZW52X2hvbWUpOworICAgICAgICAgICAgc2l6ZV90IHIgPSBtYnN0b3djcyhlbnZfaG9tZSwgY2hvbWUsIHNpemUpOworICAgICAgICAgICAgaWYgKHIgIT0gKHNpemVfdCktMSAmJiByIDwgc2l6ZSkKKyAgICAgICAgICAgICAgICBob21lID0gZW52X2hvbWU7CisgICAgICAgIH0KKworICAgIH0KKyAgICByZXR1cm4gaG9tZTsKK30KKworLyogQ3JlYXRlIF9fbWFpbl9fIG1vZHVsZSAqLworCitzdGF0aWMgdm9pZAoraW5pdG1haW4oUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApCit7CisgICAgUHlPYmplY3QgKm0sICpkLCAqbG9hZGVyOworICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGUoIl9fbWFpbl9fIik7CisgICAgaWYgKG0gPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiY2FuJ3QgY3JlYXRlIF9fbWFpbl9fIG1vZHVsZSIpOworICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOworICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyhkLCAiX19idWlsdGluc19fIikgPT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqYmltb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImJ1aWx0aW5zIik7CisgICAgICAgIGlmIChiaW1vZCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gcmV0cmlldmUgYnVpbHRpbnMgbW9kdWxlIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2J1aWx0aW5zX18iLCBiaW1vZCkgPCAwKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBfX21haW5fXy5fX2J1aWx0aW5zX18iKTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYoYmltb2QpOworICAgIH0KKyAgICAvKiBNYWluIGlzIGEgbGl0dGxlIHNwZWNpYWwgLSBpbXAuaXNfYnVpbHRpbigiX19tYWluX18iKSB3aWxsIHJldHVybgorICAgICAqIEZhbHNlLCBidXQgQnVpbHRpbkltcG9ydGVyIGlzIHN0aWxsIHRoZSBtb3N0IGFwcHJvcHJpYXRlIGluaXRpYWwKKyAgICAgKiBzZXR0aW5nIGZvciBpdHMgX19sb2FkZXJfXyBhdHRyaWJ1dGUuIEEgbW9yZSBzdWl0YWJsZSB2YWx1ZSB3aWxsCisgICAgICogYmUgc2V0IGlmIF9fbWFpbl9fIGdldHMgZnVydGhlciBpbml0aWFsaXplZCBsYXRlciBpbiB0aGUgc3RhcnR1cAorICAgICAqIHByb2Nlc3MuCisgICAgICovCisgICAgbG9hZGVyID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fbG9hZGVyX18iKTsKKyAgICBpZiAobG9hZGVyID09IE5VTEwgfHwgbG9hZGVyID09IFB5X05vbmUpIHsKKyAgICAgICAgUHlPYmplY3QgKmxvYWRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCdWlsdGluSW1wb3J0ZXIiKTsKKyAgICAgICAgaWYgKGxvYWRlciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gcmV0cmlldmUgQnVpbHRpbkltcG9ydGVyIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2xvYWRlcl9fIiwgbG9hZGVyKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIF9fbWFpbl9fLl9fbG9hZGVyX18iKTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYobG9hZGVyKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK2luaXRmc2VuY29kaW5nKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwKQoreworICAgIFB5T2JqZWN0ICpjb2RlYzsKKworICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID09IE5VTEwpCisgICAgeworICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gZ2V0X2xvY2FsZV9lbmNvZGluZygpOworICAgICAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9PSBOVUxMKQorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogVW5hYmxlIHRvIGdldCB0aGUgbG9jYWxlIGVuY29kaW5nIik7CisKKyAgICAgICAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDA7CisgICAgICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDE7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIHRoZSBlbmNvZGluZyBpcyBtYmNzLCB1dGYtOCBvciBhc2NpaSAqLworICAgIGNvZGVjID0gX1B5Q29kZWNfTG9va3VwKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcpOworICAgIGlmICghY29kZWMpIHsKKyAgICAgICAgLyogU3VjaCBlcnJvciBjYW4gb25seSBvY2N1cnMgaW4gY3JpdGljYWwgc2l0dWF0aW9uczogbm8gbW9yZQorICAgICAgICAgKiBtZW1vcnksIGltcG9ydCBhIG1vZHVsZSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBmYWlsZWQsCisgICAgICAgICAqIGV0Yy4gKi8KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBQeV9ERUNSRUYoY29kZWMpOworICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDE7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIEltcG9ydCB0aGUgc2l0ZSBtb2R1bGUgKG5vdCBpbnRvIF9fbWFpbl9fIHRob3VnaCkgKi8KKworc3RhdGljIHZvaWQKK2luaXRzaXRlKHZvaWQpCit7CisgICAgUHlPYmplY3QgKm07CisgICAgbSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgic2l0ZSIpOworICAgIGlmIChtID09IE5VTEwpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gaW1wb3J0IHRoZSBzaXRlIG1vZHVsZVxuIik7CisgICAgICAgIFB5RXJyX1ByaW50KCk7CisgICAgICAgIFB5X0ZpbmFsaXplKCk7CisgICAgICAgIGV4aXQoMSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9ERUNSRUYobSk7CisgICAgfQorfQorCisvKiBDaGVjayBpZiBhIGZpbGUgZGVzY3JpcHRvciBpcyB2YWxpZCBvciBub3QuCisgICBSZXR1cm4gMCBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIGludmFsaWQsIHJldHVybiBub24temVybyBvdGhlcndpc2UuICovCitzdGF0aWMgaW50Citpc192YWxpZF9mZChpbnQgZmQpCit7CisgICAgaW50IGZkMjsKKyAgICBpZiAoZmQgPCAwIHx8ICFfUHlWZXJpZnlfZmQoZmQpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgZmQyID0gZHVwKGZkKTsKKyAgICBpZiAoZmQyID49IDApCisgICAgICAgIGNsb3NlKGZkMik7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICByZXR1cm4gZmQyID49IDA7Cit9CisKKy8qIHJldHVybnMgUHlfTm9uZSBpZiB0aGUgZmQgaXMgbm90IHZhbGlkICovCitzdGF0aWMgUHlPYmplY3QqCitjcmVhdGVfc3RkaW8oUHlPYmplY3QqIGlvLAorICAgIGludCBmZCwgaW50IHdyaXRlX21vZGUsIGNoYXIqIG5hbWUsCisgICAgY2hhciogZW5jb2RpbmcsIGNoYXIqIGVycm9ycykKK3sKKyAgICBQeU9iamVjdCAqYnVmID0gTlVMTCwgKnN0cmVhbSA9IE5VTEwsICp0ZXh0ID0gTlVMTCwgKnJhdyA9IE5VTEwsICpyZXM7CisgICAgY29uc3QgY2hhciogbW9kZTsKKyAgICBjb25zdCBjaGFyKiBuZXdsaW5lOworICAgIFB5T2JqZWN0ICpsaW5lX2J1ZmZlcmluZzsKKyAgICBpbnQgYnVmZmVyaW5nLCBpc2F0dHk7CisgICAgX1B5X0lERU5USUZJRVIob3Blbik7CisgICAgX1B5X0lERU5USUZJRVIoaXNhdHR5KTsKKyAgICBfUHlfSURFTlRJRklFUihUZXh0SU9XcmFwcGVyKTsKKyAgICBfUHlfSURFTlRJRklFUihtb2RlKTsKKworICAgIGlmICghaXNfdmFsaWRfZmQoZmQpKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKworICAgIC8qIHN0ZGluIGlzIGFsd2F5cyBvcGVuZWQgaW4gYnVmZmVyZWQgbW9kZSwgZmlyc3QgYmVjYXVzZSBpdCBzaG91bGRuJ3QKKyAgICAgICBtYWtlIGEgZGlmZmVyZW5jZSBpbiBjb21tb24gdXNlIGNhc2VzLCBzZWNvbmQgYmVjYXVzZSBUZXh0SU9XcmFwcGVyCisgICAgICAgZGVwZW5kcyBvbiB0aGUgcHJlc2VuY2Ugb2YgYSByZWFkMSgpIG1ldGhvZCB3aGljaCBvbmx5IGV4aXN0cyBvbgorICAgICAgIGJ1ZmZlcmVkIHN0cmVhbXMuCisgICAgKi8KKyAgICBpZiAoUHlfVW5idWZmZXJlZFN0ZGlvRmxhZyAmJiB3cml0ZV9tb2RlKQorICAgICAgICBidWZmZXJpbmcgPSAwOworICAgIGVsc2UKKyAgICAgICAgYnVmZmVyaW5nID0gLTE7CisgICAgaWYgKHdyaXRlX21vZGUpCisgICAgICAgIG1vZGUgPSAid2IiOworICAgIGVsc2UKKyAgICAgICAgbW9kZSA9ICJyYiI7CisgICAgYnVmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfb3BlbiwgImlzaU9PT2kiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQsIG1vZGUsIGJ1ZmZlcmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUsIFB5X05vbmUsIFB5X05vbmUsIDApOworICAgIGlmIChidWYgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGlmIChidWZmZXJpbmcpIHsKKyAgICAgICAgX1B5X0lERU5USUZJRVIocmF3KTsKKyAgICAgICAgcmF3ID0gX1B5T2JqZWN0X0dldEF0dHJJZChidWYsICZQeUlkX3Jhdyk7CisgICAgICAgIGlmIChyYXcgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByYXcgPSBidWY7CisgICAgICAgIFB5X0lOQ1JFRihyYXcpOworICAgIH0KKworICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKKyAgICBpZiAodGV4dCA9PSBOVUxMIHx8IF9QeU9iamVjdF9TZXRBdHRySWQocmF3LCAmUHlJZF9uYW1lLCB0ZXh0KSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2lzYXR0eSwgIiIpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpc2F0dHkgPSBQeU9iamVjdF9Jc1RydWUocmVzKTsKKyAgICBQeV9ERUNSRUYocmVzKTsKKyAgICBpZiAoaXNhdHR5ID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChpc2F0dHkgfHwgUHlfVW5idWZmZXJlZFN0ZGlvRmxhZykKKyAgICAgICAgbGluZV9idWZmZXJpbmcgPSBQeV9UcnVlOworICAgIGVsc2UKKyAgICAgICAgbGluZV9idWZmZXJpbmcgPSBQeV9GYWxzZTsKKworICAgIFB5X0NMRUFSKHJhdyk7CisgICAgUHlfQ0xFQVIodGV4dCk7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogc3lzLnN0ZGluOiBlbmFibGUgdW5pdmVyc2FsIG5ld2xpbmUgbW9kZSwgdHJhbnNsYXRlICJcclxuIiBhbmQgIlxyIgorICAgICAgIG5ld2xpbmVzIHRvICJcbiIuCisgICAgICAgc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVycjogdHJhbnNsYXRlICJcbiIgdG8gIlxyXG4iLiAqLworICAgIG5ld2xpbmUgPSBOVUxMOworI2Vsc2UKKyAgICAvKiBzeXMuc3RkaW46IHNwbGl0IGxpbmVzIGF0ICJcbiIuCisgICAgICAgc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVycjogZG9uJ3QgdHJhbnNsYXRlIG5ld2xpbmVzICh1c2UgIlxuIikuICovCisgICAgbmV3bGluZSA9ICJcbiI7CisjZW5kaWYKKworICAgIHN0cmVhbSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX1RleHRJT1dyYXBwZXIsICJPc3NzTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIGVuY29kaW5nLCBlcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lLCBsaW5lX2J1ZmZlcmluZyk7CisgICAgUHlfQ0xFQVIoYnVmKTsKKyAgICBpZiAoc3RyZWFtID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBpZiAod3JpdGVfbW9kZSkKKyAgICAgICAgbW9kZSA9ICJ3IjsKKyAgICBlbHNlCisgICAgICAgIG1vZGUgPSAiciI7CisgICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1vZGUpOworICAgIGlmICghdGV4dCB8fCBfUHlPYmplY3RfU2V0QXR0cklkKHN0cmVhbSwgJlB5SWRfbW9kZSwgdGV4dCkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworICAgIFB5X0NMRUFSKHRleHQpOworICAgIHJldHVybiBzdHJlYW07CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoYnVmKTsKKyAgICBQeV9YREVDUkVGKHN0cmVhbSk7CisgICAgUHlfWERFQ1JFRih0ZXh0KTsKKyAgICBQeV9YREVDUkVGKHJhdyk7CisKKyAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PU0Vycm9yKSAmJiAhaXNfdmFsaWRfZmQoZmQpKSB7CisgICAgICAgIC8qIElzc3VlICMyNDg5MTogdGhlIGZpbGUgZGVzY3JpcHRvciB3YXMgY2xvc2VkIGFmdGVyIHRoZSBmaXJzdAorICAgICAgICAgICBpc192YWxpZF9mZCgpIGNoZWNrIHdhcyBjYWxsZWQuIElnbm9yZSB0aGUgT1NFcnJvciBhbmQgc2V0IHRoZQorICAgICAgICAgICBzdHJlYW0gdG8gTm9uZS4gKi8KKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCisvKiBJbml0aWFsaXplIHN5cy5zdGRpbiwgc3Rkb3V0LCBzdGRlcnIgYW5kIGJ1aWx0aW5zLm9wZW4gKi8KK3N0YXRpYyBpbnQKK2luaXRzdGRpbyh2b2lkKQoreworICAgIFB5T2JqZWN0ICppb21vZCA9IE5VTEwsICp3cmFwcGVyOworICAgIFB5T2JqZWN0ICpiaW1vZCA9IE5VTEw7CisgICAgUHlPYmplY3QgKm07CisgICAgUHlPYmplY3QgKnN0ZCA9IE5VTEw7CisgICAgaW50IHN0YXR1cyA9IDAsIGZkOworICAgIFB5T2JqZWN0ICogZW5jb2RpbmdfYXR0cjsKKyAgICBjaGFyICpweXRob25pb2VuY29kaW5nID0gTlVMTCwgKmVuY29kaW5nLCAqZXJyb3JzOworCisgICAgLyogSGFjayB0byBhdm9pZCBhIG5hc3R5IHJlY3Vyc2lvbiBpc3N1ZSB3aGVuIFB5dGhvbiBpcyBpbnZva2VkCisgICAgICAgaW4gdmVyYm9zZSBtb2RlOiBwcmUtaW1wb3J0IHRoZSBMYXRpbi0xIGFuZCBVVEYtOCBjb2RlY3MgKi8KKyAgICBpZiAoKG0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImVuY29kaW5ncy51dGZfOCIpKSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIFB5X0RFQ1JFRihtKTsKKworICAgIGlmICghKG0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImVuY29kaW5ncy5sYXRpbl8xIikpKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIFB5X0RFQ1JFRihtKTsKKworICAgIGlmICghKGJpbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJidWlsdGlucyIpKSkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmICghKGlvbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJpbyIpKSkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAoISh3cmFwcGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpb21vZCwgIk9wZW5XcmFwcGVyIikpKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgLyogU2V0IGJ1aWx0aW5zLm9wZW4gKi8KKyAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhiaW1vZCwgIm9wZW4iLCB3cmFwcGVyKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYod3JhcHBlcik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIFB5X0RFQ1JFRih3cmFwcGVyKTsKKworICAgIGVuY29kaW5nID0gX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2Rpbmc7CisgICAgZXJyb3JzID0gX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzOworICAgIGlmICghZW5jb2RpbmcgfHwgIWVycm9ycykgeworICAgICAgICBpZiAoIWVycm9ycykgeworICAgICAgICAgICAgLyogV2hlbiB0aGUgTENfQ1RZUEUgbG9jYWxlIGlzIHRoZSBQT1NJWCBsb2NhbGUgKCJDIGxvY2FsZSIpLAorICAgICAgICAgICAgICAgc3RkaW4gYW5kIHN0ZG91dCB1c2UgdGhlIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyIGJ5CisgICAgICAgICAgICAgICBkZWZhdWx0LCBpbnN0ZWFkIG9mIHRoZSBzdHJpY3QgZXJyb3IgaGFuZGxlci4gKi8KKyAgICAgICAgICAgIGNoYXIgKmxvYyA9IHNldGxvY2FsZShMQ19DVFlQRSwgTlVMTCk7CisgICAgICAgICAgICBpZiAobG9jICE9IE5VTEwgJiYgc3RyY21wKGxvYywgIkMiKSA9PSAwKQorICAgICAgICAgICAgICAgIGVycm9ycyA9ICJzdXJyb2dhdGVlc2NhcGUiOworICAgICAgICB9CisKKyAgICAgICAgcHl0aG9uaW9lbmNvZGluZyA9IFB5X0dFVEVOVigiUFlUSE9OSU9FTkNPRElORyIpOworICAgICAgICBpZiAocHl0aG9uaW9lbmNvZGluZykgeworICAgICAgICAgICAgY2hhciAqZXJyOworICAgICAgICAgICAgcHl0aG9uaW9lbmNvZGluZyA9IF9QeU1lbV9TdHJkdXAocHl0aG9uaW9lbmNvZGluZyk7CisgICAgICAgICAgICBpZiAocHl0aG9uaW9lbmNvZGluZyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXJyID0gc3RyY2hyKHB5dGhvbmlvZW5jb2RpbmcsICc6Jyk7CisgICAgICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICAgICAgKmVyciA9ICdcMCc7CisgICAgICAgICAgICAgICAgZXJyKys7CisgICAgICAgICAgICAgICAgaWYgKCplcnIgJiYgIV9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycykgeworICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBlcnI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCpweXRob25pb2VuY29kaW5nICYmICFlbmNvZGluZykgeworICAgICAgICAgICAgICAgIGVuY29kaW5nID0gcHl0aG9uaW9lbmNvZGluZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIFNldCBzeXMuc3RkaW4gKi8KKyAgICBmZCA9IGZpbGVubyhzdGRpbik7CisgICAgLyogVW5kZXIgc29tZSBjb25kaXRpb25zIHN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVyciBtYXkgbm90IGJlIGNvbm5lY3RlZAorICAgICAqIGFuZCBmaWxlbm8oKSBtYXkgcG9pbnQgdG8gYW4gaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IuIEZvciBleGFtcGxlCisgICAgICogR1VJIGFwcHMgZG9uJ3QgaGF2ZSB2YWxpZCBzdGFuZGFyZCBzdHJlYW1zIGJ5IGRlZmF1bHQuCisgICAgICovCisgICAgc3RkID0gY3JlYXRlX3N0ZGlvKGlvbW9kLCBmZCwgMCwgIjxzdGRpbj4iLCBlbmNvZGluZywgZXJyb3JzKTsKKyAgICBpZiAoc3RkID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlTeXNfU2V0T2JqZWN0KCJfX3N0ZGluX18iLCBzdGQpOworICAgIF9QeVN5c19TZXRPYmplY3RJZCgmUHlJZF9zdGRpbiwgc3RkKTsKKyAgICBQeV9ERUNSRUYoc3RkKTsKKworICAgIC8qIFNldCBzeXMuc3Rkb3V0ICovCisgICAgZmQgPSBmaWxlbm8oc3Rkb3V0KTsKKyAgICBzdGQgPSBjcmVhdGVfc3RkaW8oaW9tb2QsIGZkLCAxLCAiPHN0ZG91dD4iLCBlbmNvZGluZywgZXJyb3JzKTsKKyAgICBpZiAoc3RkID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlTeXNfU2V0T2JqZWN0KCJfX3N0ZG91dF9fIiwgc3RkKTsKKyAgICBfUHlTeXNfU2V0T2JqZWN0SWQoJlB5SWRfc3Rkb3V0LCBzdGQpOworICAgIFB5X0RFQ1JFRihzdGQpOworCisjaWYgMSAvKiBEaXNhYmxlIHRoaXMgaWYgeW91IGhhdmUgdHJvdWJsZSBkZWJ1Z2dpbmcgYm9vdHN0cmFwIHN0dWZmICovCisgICAgLyogU2V0IHN5cy5zdGRlcnIsIHJlcGxhY2VzIHRoZSBwcmVsaW1pbmFyeSBzdGRlcnIgKi8KKyAgICBmZCA9IGZpbGVubyhzdGRlcnIpOworICAgIHN0ZCA9IGNyZWF0ZV9zdGRpbyhpb21vZCwgZmQsIDEsICI8c3RkZXJyPiIsIGVuY29kaW5nLCAiYmFja3NsYXNocmVwbGFjZSIpOworICAgIGlmIChzdGQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIC8qIFNhbWUgYXMgaGFjayBhYm92ZSwgcHJlLWltcG9ydCBzdGRlcnIncyBjb2RlYyB0byBhdm9pZCByZWN1cnNpb24KKyAgICAgICB3aGVuIGltcG9ydC5jIHRyaWVzIHRvIHdyaXRlIHRvIHN0ZGVyciBpbiB2ZXJib3NlIG1vZGUuICovCisgICAgZW5jb2RpbmdfYXR0ciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RkLCAiZW5jb2RpbmciKTsKKyAgICBpZiAoZW5jb2RpbmdfYXR0ciAhPSBOVUxMKSB7CisgICAgICAgIGNvbnN0IGNoYXIgKiBzdGRfZW5jb2Rpbmc7CisgICAgICAgIHN0ZF9lbmNvZGluZyA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoZW5jb2RpbmdfYXR0cik7CisgICAgICAgIGlmIChzdGRfZW5jb2RpbmcgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlPYmplY3QgKmNvZGVjX2luZm8gPSBfUHlDb2RlY19Mb29rdXAoc3RkX2VuY29kaW5nKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoY29kZWNfaW5mbyk7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGVuY29kaW5nX2F0dHIpOworICAgIH0KKyAgICBQeUVycl9DbGVhcigpOyAgLyogTm90IGEgZmF0YWwgZXJyb3IgaWYgY29kZWMgaXNuJ3QgYXZhaWxhYmxlICovCisKKyAgICBpZiAoUHlTeXNfU2V0T2JqZWN0KCJfX3N0ZGVycl9fIiwgc3RkKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKHN0ZCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmIChfUHlTeXNfU2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyLCBzdGQpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYoc3RkKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgUHlfREVDUkVGKHN0ZCk7CisjZW5kaWYKKworICAgIGlmICgwKSB7CisgIGVycm9yOgorICAgICAgICBzdGF0dXMgPSAtMTsKKyAgICB9CisKKyAgICAvKiBXZSB3b24ndCBuZWVkIHRoZW0gYW55bW9yZS4gKi8KKyAgICBpZiAoX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcpIHsKKyAgICAgICAgUHlNZW1fUmF3RnJlZShfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZyk7CisgICAgICAgIF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nID0gTlVMTDsKKyAgICB9CisgICAgaWYgKF9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycykgeworICAgICAgICBQeU1lbV9SYXdGcmVlKF9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycyk7CisgICAgICAgIF9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycyA9IE5VTEw7CisgICAgfQorICAgIFB5TWVtX0ZyZWUocHl0aG9uaW9lbmNvZGluZyk7CisgICAgUHlfWERFQ1JFRihiaW1vZCk7CisgICAgUHlfWERFQ1JFRihpb21vZCk7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworCisvKiBQcmludCB0aGUgY3VycmVudCBleGNlcHRpb24gKGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQpIHdpdGggaXRzIHRyYWNlYmFjaywKKyAqIG9yIGRpc3BsYXkgdGhlIGN1cnJlbnQgUHl0aG9uIHN0YWNrLgorICoKKyAqIERvbid0IGNhbGwgUHlFcnJfUHJpbnRFeCgpIGFuZCB0aGUgZXhjZXB0IGhvb2ssIGJlY2F1c2UgUHlfRmF0YWxFcnJvcigpIGlzCisgKiBjYWxsZWQgb24gY2F0YXN0cm9waGljIGNhc2VzLiAqLworCitzdGF0aWMgdm9pZAorX1B5X1ByaW50RmF0YWxFcnJvcihpbnQgZmQpCit7CisgICAgUHlPYmplY3QgKmZlcnIsICpyZXM7CisgICAgUHlPYmplY3QgKmV4Y2VwdGlvbiwgKnYsICp0YjsKKyAgICBpbnQgaGFzX3RiOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKworICAgIFB5RXJyX0ZldGNoKCZleGNlcHRpb24sICZ2LCAmdGIpOworICAgIGlmIChleGNlcHRpb24gPT0gTlVMTCkgeworICAgICAgICAvKiBObyBjdXJyZW50IGV4Y2VwdGlvbiAqLworICAgICAgICBnb3RvIGRpc3BsYXlfc3RhY2s7CisgICAgfQorCisgICAgZmVyciA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIpOworICAgIGlmIChmZXJyID09IE5VTEwgfHwgZmVyciA9PSBQeV9Ob25lKSB7CisgICAgICAgIC8qIHN5cy5zdGRlcnIgaXMgbm90IHNldCB5ZXQgb3Igc2V0IHRvIE5vbmUsCisgICAgICAgICAgIG5vIG5lZWQgdG8gdHJ5IHRvIGRpc3BsYXkgdGhlIGV4Y2VwdGlvbiAqLworICAgICAgICBnb3RvIGRpc3BsYXlfc3RhY2s7CisgICAgfQorCisgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZleGNlcHRpb24sICZ2LCAmdGIpOworICAgIGlmICh0YiA9PSBOVUxMKSB7CisgICAgICAgIHRiID0gUHlfTm9uZTsKKyAgICAgICAgUHlfSU5DUkVGKHRiKTsKKyAgICB9CisgICAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrKHYsIHRiKTsKKyAgICBpZiAoZXhjZXB0aW9uID09IE5VTEwpIHsKKyAgICAgICAgLyogUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCkgZmFpbGVkICovCisgICAgICAgIGdvdG8gZGlzcGxheV9zdGFjazsKKyAgICB9CisKKyAgICBoYXNfdGIgPSAodGIgIT0gUHlfTm9uZSk7CisgICAgUHlFcnJfRGlzcGxheShleGNlcHRpb24sIHYsIHRiKTsKKyAgICBQeV9YREVDUkVGKGV4Y2VwdGlvbik7CisgICAgUHlfWERFQ1JFRih2KTsKKyAgICBQeV9YREVDUkVGKHRiKTsKKworICAgIC8qIHN5cy5zdGRlcnIgbWF5IGJlIGJ1ZmZlcmVkOiBjYWxsIHN5cy5zdGRlcnIuZmx1c2goKSAqLworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgZWxzZQorICAgICAgICBQeV9ERUNSRUYocmVzKTsKKworICAgIGlmIChoYXNfdGIpCisgICAgICAgIHJldHVybjsKKworZGlzcGxheV9zdGFjazoKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIC8qIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkgd29ya3MgZXZlbiBpZiB0aGUgR0lMIHdhcyByZWxlYXNlZCAqLworICAgIHRzdGF0ZSA9IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCk7CisjZWxzZQorICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisjZW5kaWYKKyAgICBpZiAodHN0YXRlID09IE5VTEwpIHsKKyAgICAgICAgLyogX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKCkgcmVxdWlyZXMgdGhlIHRocmVhZCBzdGF0ZSB0byBkaXNwbGF5CisgICAgICAgICAqIGZyYW1lcyAqLworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKKyAgICBmZmx1c2goc3RkZXJyKTsKKworICAgIC8qIGRpc3BsYXkgdGhlIGN1cnJlbnQgUHl0aG9uIHN0YWNrICovCisgICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCB0c3RhdGUtPmludGVycCwgdHN0YXRlKTsKK30KKy8qIFByaW50IGZhdGFsIGVycm9yIG1lc3NhZ2UgYW5kIGFib3J0ICovCisKK3ZvaWQKK1B5X0ZhdGFsRXJyb3IoY29uc3QgY2hhciAqbXNnKQoreworICAgIGNvbnN0IGludCBmZCA9IGZpbGVubyhzdGRlcnIpOworICAgIHN0YXRpYyBpbnQgcmVlbnRyYW50ID0gMDsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgc2l6ZV90IGxlbjsKKyAgICBXQ0hBUiogYnVmZmVyOworICAgIHNpemVfdCBpOworI2VuZGlmCisKKyAgICBpZiAocmVlbnRyYW50KSB7CisgICAgICAgIC8qIFB5X0ZhdGFsRXJyb3IoKSBjYXVzZWQgYSBzZWNvbmQgZmF0YWwgZXJyb3IuCisgICAgICAgICAgIEV4YW1wbGU6IGZsdXNoX3N0ZF9maWxlcygpIHJhaXNlcyBhIHJlY3Vyc2lvbiBlcnJvci4gKi8KKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZWVudHJhbnQgPSAxOworCisgICAgZnByaW50ZihzdGRlcnIsICJGYXRhbCBQeXRob24gZXJyb3I6ICVzXG4iLCBtc2cpOworICAgIGZmbHVzaChzdGRlcnIpOyAvKiBpdCBoZWxwcyBpbiBXaW5kb3dzIGRlYnVnIGJ1aWxkICovCisKKyAgICAvKiBQcmludCB0aGUgZXhjZXB0aW9uIChpZiBhbiBleGNlcHRpb24gaXMgc2V0KSB3aXRoIGl0cyB0cmFjZWJhY2ssCisgICAgICogb3IgZGlzcGxheSB0aGUgY3VycmVudCBQeXRob24gc3RhY2suICovCisgICAgX1B5X1ByaW50RmF0YWxFcnJvcihmZCk7CisKKyAgICAvKiBGbHVzaCBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyICovCisgICAgZmx1c2hfc3RkX2ZpbGVzKCk7CisKKyAgICAvKiBUaGUgbWFpbiBwdXJwb3NlIG9mIGZhdWx0aGFuZGxlciBpcyB0byBkaXNwbGF5IHRoZSB0cmFjZWJhY2suIFdlIGFscmVhZHkKKyAgICAgKiBkaWQgb3VyIGJlc3QgdG8gZGlzcGxheSBpdC4gU28gZmF1bHRoYW5kbGVyIGNhbiBub3cgYmUgZGlzYWJsZWQuCisgICAgICogKERvbid0IHRyaWdnZXIgaXQgb24gYWJvcnQoKS4pICovCisgICAgX1B5RmF1bHRoYW5kbGVyX0ZpbmkoKTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBsZW4gPSBzdHJsZW4obXNnKTsKKworICAgIC8qIENvbnZlcnQgdGhlIG1lc3NhZ2UgdG8gd2NoYXJfdC4gVGhpcyB1c2VzIGEgc2ltcGxlIG9uZS10by1vbmUKKyAgICBjb252ZXJzaW9uLCBhc3N1bWluZyB0aGF0IHRoZSB0aGlzIGVycm9yIG1lc3NhZ2UgYWN0dWFsbHkgdXNlcyBBU0NJSQorICAgIG9ubHkuIElmIHRoaXMgY2Vhc2VzIHRvIGJlIHRydWUsIHdlIHdpbGwgaGF2ZSB0byBjb252ZXJ0LiAqLworICAgIGJ1ZmZlciA9IGFsbG9jYSggKGxlbisxKSAqIChzaXplb2YgKmJ1ZmZlcikpOworICAgIGZvciggaT0wOyBpPD1sZW47ICsraSkKKyAgICAgICAgYnVmZmVyW2ldID0gbXNnW2ldOworICAgIE91dHB1dERlYnVnU3RyaW5nVyhMIkZhdGFsIFB5dGhvbiBlcnJvcjogIik7CisgICAgT3V0cHV0RGVidWdTdHJpbmdXKGJ1ZmZlcik7CisgICAgT3V0cHV0RGVidWdTdHJpbmdXKEwiXG4iKTsKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCisKK2V4aXQ6CisjaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKF9ERUJVRykKKyAgICBEZWJ1Z0JyZWFrKCk7CisjZW5kaWYKKyAgICBhYm9ydCgpOworfQorCisvKiBDbGVhbiB1cCBhbmQgZXhpdCAqLworCisjaWZkZWYgV0lUSF9USFJFQUQKKyNpbmNsdWRlICJweXRocmVhZC5oIgorI2VuZGlmCisKK3N0YXRpYyB2b2lkICgqcHlleGl0ZnVuYykodm9pZCkgPSBOVUxMOworLyogRm9yIHRoZSBhdGV4aXQgbW9kdWxlLiAqLwordm9pZCBfUHlfUHlBdEV4aXQodm9pZCAoKmZ1bmMpKHZvaWQpKQoreworICAgIHB5ZXhpdGZ1bmMgPSBmdW5jOworfQorCitzdGF0aWMgdm9pZAorY2FsbF9weV9leGl0ZnVuY3Modm9pZCkKK3sKKyAgICBpZiAocHlleGl0ZnVuYyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisKKyAgICAoKnB5ZXhpdGZ1bmMpKCk7CisgICAgUHlFcnJfQ2xlYXIoKTsKK30KKworLyogV2FpdCB1bnRpbCB0aHJlYWRpbmcuX3NodXRkb3duIGNvbXBsZXRlcywgcHJvdmlkZWQKKyAgIHRoZSB0aHJlYWRpbmcgbW9kdWxlIHdhcyBpbXBvcnRlZCBpbiB0aGUgZmlyc3QgcGxhY2UuCisgICBUaGUgc2h1dGRvd24gcm91dGluZSB3aWxsIHdhaXQgdW50aWwgYWxsIG5vbi1kYWVtb24KKyAgICJ0aHJlYWRpbmciIHRocmVhZHMgaGF2ZSBjb21wbGV0ZWQuICovCitzdGF0aWMgdm9pZAord2FpdF9mb3JfdGhyZWFkX3NodXRkb3duKHZvaWQpCit7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBfUHlfSURFTlRJRklFUihfc2h1dGRvd24pOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICBQeU9iamVjdCAqdGhyZWFkaW5nID0gUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcodHN0YXRlLT5pbnRlcnAtPm1vZHVsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aHJlYWRpbmciKTsKKyAgICBpZiAodGhyZWFkaW5nID09IE5VTEwpIHsKKyAgICAgICAgLyogdGhyZWFkaW5nIG5vdCBpbXBvcnRlZCAqLworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGhyZWFkaW5nLCAmUHlJZF9fc2h1dGRvd24sICIiKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKHRocmVhZGluZyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICB9CisgICAgUHlfREVDUkVGKHRocmVhZGluZyk7CisjZW5kaWYKK30KKworI2RlZmluZSBORVhJVEZVTkNTIDMyCitzdGF0aWMgdm9pZCAoKmV4aXRmdW5jc1tORVhJVEZVTkNTXSkodm9pZCk7CitzdGF0aWMgaW50IG5leGl0ZnVuY3MgPSAwOworCitpbnQgUHlfQXRFeGl0KHZvaWQgKCpmdW5jKSh2b2lkKSkKK3sKKyAgICBpZiAobmV4aXRmdW5jcyA+PSBORVhJVEZVTkNTKQorICAgICAgICByZXR1cm4gLTE7CisgICAgZXhpdGZ1bmNzW25leGl0ZnVuY3MrK10gPSBmdW5jOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorY2FsbF9sbF9leGl0ZnVuY3Modm9pZCkKK3sKKyAgICB3aGlsZSAobmV4aXRmdW5jcyA+IDApCisgICAgICAgICgqZXhpdGZ1bmNzWy0tbmV4aXRmdW5jc10pKCk7CisKKyAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICBmZmx1c2goc3RkZXJyKTsKK30KKwordm9pZAorUHlfRXhpdChpbnQgc3RzKQoreworICAgIFB5X0ZpbmFsaXplKCk7CisKKyAgICBleGl0KHN0cyk7Cit9CisKK3N0YXRpYyB2b2lkCitpbml0c2lncyh2b2lkKQoreworI2lmZGVmIFNJR1BJUEUKKyAgICBQeU9TX3NldHNpZyhTSUdQSVBFLCBTSUdfSUdOKTsKKyNlbmRpZgorI2lmZGVmIFNJR1hGWgorICAgIFB5T1Nfc2V0c2lnKFNJR1hGWiwgU0lHX0lHTik7CisjZW5kaWYKKyNpZmRlZiBTSUdYRlNaCisgICAgUHlPU19zZXRzaWcoU0lHWEZTWiwgU0lHX0lHTik7CisjZW5kaWYKKyAgICBQeU9TX0luaXRJbnRlcnJ1cHRzKCk7IC8qIE1heSBpbXBseSBpbml0c2lnbmFsKCkgKi8KKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbXBvcnQgc2lnbmFsIik7CisgICAgfQorfQorCisKKy8qIFJlc3RvcmUgc2lnbmFscyB0aGF0IHRoZSBpbnRlcnByZXRlciBoYXMgY2FsbGVkIFNJR19JR04gb24gdG8gU0lHX0RGTC4KKyAqCisgKiBBbGwgb2YgdGhlIGNvZGUgaW4gdGhpcyBmdW5jdGlvbiBtdXN0IG9ubHkgdXNlIGFzeW5jLXNpZ25hbC1zYWZlIGZ1bmN0aW9ucywKKyAqIGxpc3RlZCBhdCBgbWFuIDcgc2lnbmFsYCBvcgorICogaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Z1bmN0aW9ucy94c2hfY2hhcDAyXzA0Lmh0bWwuCisgKi8KK3ZvaWQKK19QeV9SZXN0b3JlU2lnbmFscyh2b2lkKQoreworI2lmZGVmIFNJR1BJUEUKKyAgICBQeU9TX3NldHNpZyhTSUdQSVBFLCBTSUdfREZMKTsKKyNlbmRpZgorI2lmZGVmIFNJR1hGWgorICAgIFB5T1Nfc2V0c2lnKFNJR1hGWiwgU0lHX0RGTCk7CisjZW5kaWYKKyNpZmRlZiBTSUdYRlNaCisgICAgUHlPU19zZXRzaWcoU0lHWEZTWiwgU0lHX0RGTCk7CisjZW5kaWYKK30KKworCisvKgorICogVGhlIGZpbGUgZGVzY3JpcHRvciBmZCBpcyBjb25zaWRlcmVkIGBgaW50ZXJhY3RpdmUnJyBpZiBlaXRoZXIKKyAqICAgYSkgaXNhdHR5KGZkKSBpcyBUUlVFLCBvcgorICogICBiKSB0aGUgLWkgZmxhZyB3YXMgZ2l2ZW4sIGFuZCB0aGUgZmlsZW5hbWUgYXNzb2NpYXRlZCB3aXRoCisgKiAgICAgIHRoZSBkZXNjcmlwdG9yIGlzIE5VTEwgb3IgIjxzdGRpbj4iIG9yICI/Pz8iLgorICovCitpbnQKK1B5X0ZkSXNJbnRlcmFjdGl2ZShGSUxFICpmcCwgY29uc3QgY2hhciAqZmlsZW5hbWUpCit7CisgICAgaWYgKGlzYXR0eSgoaW50KWZpbGVubyhmcCkpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoIVB5X0ludGVyYWN0aXZlRmxhZykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIChmaWxlbmFtZSA9PSBOVUxMKSB8fAorICAgICAgICAgICAoc3RyY21wKGZpbGVuYW1lLCAiPHN0ZGluPiIpID09IDApIHx8CisgICAgICAgICAgIChzdHJjbXAoZmlsZW5hbWUsICI/Pz8iKSA9PSAwKTsKK30KKworCisvKiBXcmFwcGVycyBhcm91bmQgc2lnYWN0aW9uKCkgb3Igc2lnbmFsKCkuICovCisKK1B5T1Nfc2lnaGFuZGxlcl90CitQeU9TX2dldHNpZyhpbnQgc2lnKQoreworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgc3RydWN0IHNpZ2FjdGlvbiBjb250ZXh0OworICAgIGlmIChzaWdhY3Rpb24oc2lnLCBOVUxMLCAmY29udGV4dCkgPT0gLTEpCisgICAgICAgIHJldHVybiBTSUdfRVJSOworICAgIHJldHVybiBjb250ZXh0LnNhX2hhbmRsZXI7CisjZWxzZQorICAgIFB5T1Nfc2lnaGFuZGxlcl90IGhhbmRsZXI7CisvKiBTcGVjaWFsIHNpZ25hbCBoYW5kbGluZyBmb3IgdGhlIHNlY3VyZSBDUlQgaW4gVmlzdWFsIFN0dWRpbyAyMDA1ICovCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTQwMAorICAgIHN3aXRjaCAoc2lnKSB7CisgICAgLyogT25seSB0aGVzZSBzaWduYWxzIGFyZSB2YWxpZCAqLworICAgIGNhc2UgU0lHSU5UOgorICAgIGNhc2UgU0lHSUxMOgorICAgIGNhc2UgU0lHRlBFOgorICAgIGNhc2UgU0lHU0VHVjoKKyAgICBjYXNlIFNJR1RFUk06CisgICAgY2FzZSBTSUdCUkVBSzoKKyAgICBjYXNlIFNJR0FCUlQ6CisgICAgICAgIGJyZWFrOworICAgIC8qIERvbid0IGNhbGwgc2lnbmFsKCkgd2l0aCBvdGhlciB2YWx1ZXMgb3IgaXQgd2lsbCBhc3NlcnQgKi8KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gU0lHX0VSUjsKKyAgICB9CisjZW5kaWYgLyogX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAqLworICAgIGhhbmRsZXIgPSBzaWduYWwoc2lnLCBTSUdfSUdOKTsKKyAgICBpZiAoaGFuZGxlciAhPSBTSUdfRVJSKQorICAgICAgICBzaWduYWwoc2lnLCBoYW5kbGVyKTsKKyAgICByZXR1cm4gaGFuZGxlcjsKKyNlbmRpZgorfQorCisvKgorICogQWxsIG9mIHRoZSBjb2RlIGluIHRoaXMgZnVuY3Rpb24gbXVzdCBvbmx5IHVzZSBhc3luYy1zaWduYWwtc2FmZSBmdW5jdGlvbnMsCisgKiBsaXN0ZWQgYXQgYG1hbiA3IHNpZ25hbGAgb3IKKyAqIGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9mdW5jdGlvbnMveHNoX2NoYXAwMl8wNC5odG1sLgorICovCitQeU9TX3NpZ2hhbmRsZXJfdAorUHlPU19zZXRzaWcoaW50IHNpZywgUHlPU19zaWdoYW5kbGVyX3QgaGFuZGxlcikKK3sKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgIC8qIFNvbWUgY29kZSBpbiBNb2R1bGVzL3NpZ25hbG1vZHVsZS5jIGRlcGVuZHMgb24gc2lnYWN0aW9uKCkgYmVpbmcKKyAgICAgKiB1c2VkIGhlcmUgaWYgSEFWRV9TSUdBQ1RJT04gaXMgZGVmaW5lZC4gIEZpeCB0aGF0IGlmIHRoaXMgY29kZQorICAgICAqIGNoYW5nZXMgdG8gaW52YWxpZGF0ZSB0aGF0IGFzc3VtcHRpb24uCisgICAgICovCisgICAgc3RydWN0IHNpZ2FjdGlvbiBjb250ZXh0LCBvY29udGV4dDsKKyAgICBjb250ZXh0LnNhX2hhbmRsZXIgPSBoYW5kbGVyOworICAgIHNpZ2VtcHR5c2V0KCZjb250ZXh0LnNhX21hc2spOworICAgIGNvbnRleHQuc2FfZmxhZ3MgPSAwOworICAgIGlmIChzaWdhY3Rpb24oc2lnLCAmY29udGV4dCwgJm9jb250ZXh0KSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIFNJR19FUlI7CisgICAgcmV0dXJuIG9jb250ZXh0LnNhX2hhbmRsZXI7CisjZWxzZQorICAgIFB5T1Nfc2lnaGFuZGxlcl90IG9sZGhhbmRsZXI7CisgICAgb2xkaGFuZGxlciA9IHNpZ25hbChzaWcsIGhhbmRsZXIpOworI2lmZGVmIEhBVkVfU0lHSU5URVJSVVBUCisgICAgc2lnaW50ZXJydXB0KHNpZywgMSk7CisjZW5kaWYKKyAgICByZXR1cm4gb2xkaGFuZGxlcjsKKyNlbmRpZgorfQorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5c3RhdGUuYyBiL1B5dGhvbi9weXN0YXRlLmMKaW5kZXggMmFjMmZkNS4uN2UwMjY3YSAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5c3RhdGUuYworKysgYi9QeXRob24vcHlzdGF0ZS5jCkBAIC0yMTIsNiArMjEyLDkgQEAKICAgICAgICAgdHN0YXRlLT5vbl9kZWxldGUgPSBOVUxMOwogICAgICAgICB0c3RhdGUtPm9uX2RlbGV0ZV9kYXRhID0gTlVMTDsKIAorICAgICAgICB0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyID0gTlVMTDsKKyAgICAgICAgdHN0YXRlLT5pbl9jb3JvdXRpbmVfd3JhcHBlciA9IDA7CisKICAgICAgICAgaWYgKGluaXQpCiAgICAgICAgICAgICBfUHlUaHJlYWRTdGF0ZV9Jbml0KHRzdGF0ZSk7CiAKQEAgLTI1Myw2ICsyNTYsOSBAQAogICAgIFB5X3NzaXplX3QgaW5kZXggPSBtb2R1bGUtPm1fYmFzZS5tX2luZGV4OwogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqc3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgUHlPYmplY3QgKnJlczsKKyAgICBpZiAobW9kdWxlLT5tX3Nsb3RzKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBpZiAoaW5kZXggPT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHN0YXRlLT5tb2R1bGVzX2J5X2luZGV4ID09IE5VTEwpCkBAIC0yNjYsNyArMjcyLDEzIEBACiBpbnQKIF9QeVN0YXRlX0FkZE1vZHVsZShQeU9iamVjdCogbW9kdWxlLCBzdHJ1Y3QgUHlNb2R1bGVEZWYqIGRlZikKIHsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKnN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqc3RhdGU7CisgICAgaWYgKGRlZi0+bV9zbG90cykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiUHlTdGF0ZV9BZGRNb2R1bGUgY2FsbGVkIG9uIG1vZHVsZSB3aXRoIHNsb3RzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgc3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgaWYgKCFkZWYpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoIXN0YXRlLT5tb2R1bGVzX2J5X2luZGV4KSB7CkBAIC0zMDYsOCArMzE4LDE0IEBACiBpbnQKIFB5U3RhdGVfUmVtb3ZlTW9kdWxlKHN0cnVjdCBQeU1vZHVsZURlZiogZGVmKQogeworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqc3RhdGU7CiAgICAgUHlfc3NpemVfdCBpbmRleCA9IGRlZi0+bV9iYXNlLm1faW5kZXg7Ci0gICAgUHlJbnRlcnByZXRlclN0YXRlICpzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKKyAgICBpZiAoZGVmLT5tX3Nsb3RzKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJQeVN0YXRlX1JlbW92ZU1vZHVsZSBjYWxsZWQgb24gbW9kdWxlIHdpdGggc2xvdHMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICBpZiAoaW5kZXggPT0gMCkgewogICAgICAgICBQeV9GYXRhbEVycm9yKCJQeVN0YXRlX1JlbW92ZU1vZHVsZTogTW9kdWxlIGluZGV4IGludmFsaWQuIik7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTM3Miw2ICszOTAsOCBAQAogICAgIHRzdGF0ZS0+Y190cmFjZWZ1bmMgPSBOVUxMOwogICAgIFB5X0NMRUFSKHRzdGF0ZS0+Y19wcm9maWxlb2JqKTsKICAgICBQeV9DTEVBUih0c3RhdGUtPmNfdHJhY2VvYmopOworCisgICAgUHlfQ0xFQVIodHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlcik7CiB9CiAKIApAQCAtNDAzLDcgKzQyMyw3IEBACiB2b2lkCiBQeVRocmVhZFN0YXRlX0RlbGV0ZShQeVRocmVhZFN0YXRlICp0c3RhdGUpCiB7Ci0gICAgaWYgKHRzdGF0ZSA9PSBfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCkpCisgICAgaWYgKHRzdGF0ZSA9PSAoUHlUaHJlYWRTdGF0ZSopX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJl9QeVRocmVhZFN0YXRlX0N1cnJlbnQpKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJQeVRocmVhZFN0YXRlX0RlbGV0ZTogdHN0YXRlIGlzIHN0aWxsIGN1cnJlbnQiKTsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIGlmIChhdXRvSW50ZXJwcmV0ZXJTdGF0ZSAmJiBQeVRocmVhZF9nZXRfa2V5X3ZhbHVlKGF1dG9UTFNrZXkpID09IHRzdGF0ZSkKQEAgLTY2Miw3ICs2ODIsNyBAQAogewogICAgIC8qIE11c3QgYmUgdGhlIHRzdGF0ZSBmb3IgdGhpcyB0aHJlYWQgKi8KICAgICBhc3NlcnQoUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKT09dHN0YXRlKTsKLSAgICByZXR1cm4gdHN0YXRlID09IF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KTsKKyAgICByZXR1cm4gdHN0YXRlID09IChQeVRocmVhZFN0YXRlKilfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCk7CiB9CiAKIC8qIEludGVybmFsIGluaXRpYWxpemF0aW9uL2ZpbmFsaXphdGlvbiBmdW5jdGlvbnMgY2FsbGVkIGJ5CmRpZmYgLS1naXQgYS9QeXRob24vcHlzdHJoZXguYyBiL1B5dGhvbi9weXN0cmhleC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNTllZDEKLS0tIC9kZXYvbnVsbAorKysgYi9QeXRob24vcHlzdHJoZXguYwpAQCAtMCwwICsxLDYxIEBACisvKiBieXRlcyB0byBoZXggaW1wbGVtZW50YXRpb24gKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorCitzdGF0aWMgUHlPYmplY3QgKl9QeV9zdHJoZXhfaW1wbChjb25zdCBjaGFyKiBhcmdidWYsIGNvbnN0IFB5X3NzaXplX3QgYXJnbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJldHVybl9ieXRlcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dmFsOworICAgIFB5X1VDUzEqIHJldGJ1ZjsKKyAgICBQeV9zc2l6ZV90IGksIGo7CisKKyAgICBhc3NlcnQoYXJnbGVuID49IDApOworICAgIGlmIChhcmdsZW4gPiBQWV9TU0laRV9UX01BWCAvIDIpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworCisgICAgaWYgKHJldHVybl9ieXRlcykgeworICAgICAgICAvKiBJZiBfUHlCeXRlc19Gcm9tU2l6ZSgpIHdlcmUgcHVibGljIHdlIGNvdWxkIGF2b2lkIG1hbGxvYytjb3B5LiAqLworICAgICAgICByZXRidWYgPSAoUHlfVUNTMSopIFB5TWVtX01hbGxvYyhhcmdsZW4qMik7CisJaWYgKCFyZXRidWYpCisJICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR2YWwgPSBOVUxMOyAgLyogc2lsZW5jZSBhIGNvbXBpbGVyIHdhcm5pbmcsIGFzc2lnbmVkIGxhdGVyLiAqLworICAgIH0gZWxzZSB7CisJcmV0dmFsID0gUHlVbmljb2RlX05ldyhhcmdsZW4qMiwgMTI3KTsKKwlpZiAoIXJldHZhbCkKKwkgICAgcmV0dXJuIE5VTEw7CisJcmV0YnVmID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmV0dmFsKTsKKyAgICB9CisKKyAgICAvKiBtYWtlIGhleCB2ZXJzaW9uIG9mIHN0cmluZywgdGFrZW4gZnJvbSBzaGFtb2R1bGUuYyAqLworICAgIGZvciAoaT1qPTA7IGkgPCBhcmdsZW47IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CisgICAgICAgIGMgPSAoYXJnYnVmW2ldID4+IDQpICYgMHhmOworICAgICAgICByZXRidWZbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKKyAgICAgICAgYyA9IGFyZ2J1ZltpXSAmIDB4ZjsKKyAgICAgICAgcmV0YnVmW2orK10gPSBQeV9oZXhkaWdpdHNbY107CisgICAgfQorCisgICAgaWYgKHJldHVybl9ieXRlcykgeworICAgICAgICByZXR2YWwgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopcmV0YnVmLCBhcmdsZW4qMik7CisgICAgICAgIFB5TWVtX0ZyZWUocmV0YnVmKTsKKyAgICB9CisjaWZkZWYgUHlfREVCVUcKKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXR2YWwsIDEpKTsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X3N0cmhleChjb25zdCBjaGFyKiBhcmdidWYsIGNvbnN0IFB5X3NzaXplX3QgYXJnbGVuKQoreworICAgIHJldHVybiBfUHlfc3RyaGV4X2ltcGwoYXJnYnVmLCBhcmdsZW4sIDApOworfQorCisvKiBTYW1lIGFzIGFib3ZlIGJ1dCByZXR1cm5zIGEgYnl0ZXMoKSBpbnN0ZWFkIG9mIHN0cigpIHRvIGF2b2lkIHRoZQorICogbmVlZCB0byBkZWNvZGUgdGhlIHN0cigpIHdoZW4gYnl0ZXMgYXJlIG5lZWRlZC4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X3N0cmhleF9ieXRlcyhjb25zdCBjaGFyKiBhcmdidWYsIGNvbnN0IFB5X3NzaXplX3QgYXJnbGVuKQoreworICAgIHJldHVybiBfUHlfc3RyaGV4X2ltcGwoYXJnYnVmLCBhcmdsZW4sIDEpOworfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5dGhvbnJ1bi5jIGIvUHl0aG9uL3B5dGhvbnJ1bi5jCmluZGV4IDA5NjdhNDcuLmViZWRkMTIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXRob25ydW4uYworKysgYi9QeXRob24vcHl0aG9ucnVuLmMKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlICJhc3QuaCIKICNpbmNsdWRlICJtYXJzaGFsLmgiCiAjaW5jbHVkZSAib3NkZWZzLmgiCisjaW5jbHVkZSA8bG9jYWxlLmg+CiAKICNpZmRlZiBIQVZFX1NJR05BTF9ICiAjaW5jbHVkZSA8c2lnbmFsLmg+CkBAIC0yNSwxOCArMjYsMTIgQEAKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9MQU5HSU5GT19ICi0jaW5jbHVkZSA8bG9jYWxlLmg+CiAjaW5jbHVkZSA8bGFuZ2luZm8uaD4KICNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUwogI3VuZGVmIEJZVEUKICNpbmNsdWRlICJ3aW5kb3dzLmgiCi0jZGVmaW5lIFBBVEhfTUFYIE1BWFBBVEhMRU4KLSNlbmRpZgotCi0jaWZkZWYgX19nbnVfaHVyZF9fCi0jZGVmaW5lIFBBVEhfTUFYIE1BWFBBVEhMRU4KICNlbmRpZgogCiBfUHlfSURFTlRJRklFUihidWlsdGlucyk7CkBAIC00NSw3ICs0MCw2IEBACiBfUHlfSURFTlRJRklFUihsYXN0X3RyYWNlYmFjayk7CiBfUHlfSURFTlRJRklFUihsYXN0X3R5cGUpOwogX1B5X0lERU5USUZJRVIobGFzdF92YWx1ZSk7Ci1fUHlfSURFTlRJRklFUihuYW1lKTsKIF9QeV9JREVOVElGSUVSKHBzMSk7CiBfUHlfSURFTlRJRklFUihwczIpOwogX1B5X0lERU5USUZJRVIoc3RkaW4pOwpAQCAtNTMsNDMgKzQ3LDEzIEBACiBfUHlfSURFTlRJRklFUihzdGRlcnIpOwogX1B5X3N0YXRpY19zdHJpbmcoUHlJZF9zdHJpbmcsICI8c3RyaW5nPiIpOwogCi0jaWZkZWYgUHlfUkVGX0RFQlVHCi1zdGF0aWMKLXZvaWQgX3ByaW50X3RvdGFsX3JlZnModm9pZCkgewotICAgIFB5T2JqZWN0ICp4b3B0aW9ucywgKnZhbHVlOwotICAgIF9QeV9JREVOVElGSUVSKHNob3dyZWZjb3VudCk7Ci0KLSAgICB4b3B0aW9ucyA9IFB5U3lzX0dldFhPcHRpb25zKCk7Ci0gICAgaWYgKHhvcHRpb25zID09IE5VTEwpCi0gICAgICAgIHJldHVybjsKLSAgICB2YWx1ZSA9IF9QeURpY3RfR2V0SXRlbUlkKHhvcHRpb25zLCAmUHlJZF9zaG93cmVmY291bnQpOwotICAgIGlmICh2YWx1ZSA9PSBQeV9UcnVlKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICAgICAiWyUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgcmVmcywgIgotICAgICAgICAgICAgICAgICIlIiBQWV9GT1JNQVRfU0laRV9UICJkIGJsb2Nrc11cbiIsCi0gICAgICAgICAgICAgICAgX1B5X0dldFJlZlRvdGFsKCksIF9QeV9HZXRBbGxvY2F0ZWRCbG9ja3MoKSk7Ci19Ci0jZW5kaWYKLQotI2lmbmRlZiBQeV9SRUZfREVCVUcKLSNkZWZpbmUgUFJJTlRfVE9UQUxfUkVGUygpCi0jZWxzZSAvKiBQeV9SRUZfREVCVUcgKi8KLSNkZWZpbmUgUFJJTlRfVE9UQUxfUkVGUygpIF9wcmludF90b3RhbF9yZWZzKCkKLSNlbmRpZgotCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLWV4dGVybiB3Y2hhcl90ICpQeV9HZXRQYXRoKHZvaWQpOwotCiBleHRlcm4gZ3JhbW1hciBfUHlQYXJzZXJfR3JhbW1hcjsgLyogRnJvbSBncmFtaW5pdC5jICovCiAKIC8qIEZvcndhcmQgKi8KLXN0YXRpYyB2b2lkIGluaXRtYWluKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwKTsKLXN0YXRpYyBpbnQgaW5pdGZzZW5jb2RpbmcoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApOwotc3RhdGljIHZvaWQgaW5pdHNpdGUodm9pZCk7Ci1zdGF0aWMgaW50IGluaXRzdGRpbyh2b2lkKTsKIHN0YXRpYyB2b2lkIGZsdXNoX2lvKHZvaWQpOwogc3RhdGljIFB5T2JqZWN0ICpydW5fbW9kKG1vZF90eSwgUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlDb21waWxlckZsYWdzICosIFB5QXJlbmEgKik7CkBAIC05NywxMTc3ICs2MSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUNvbXBpbGVyRmxhZ3MgKik7CiBzdGF0aWMgdm9pZCBlcnJfaW5wdXQocGVycmRldGFpbCAqKTsKIHN0YXRpYyB2b2lkIGVycl9mcmVlKHBlcnJkZXRhaWwgKik7Ci1zdGF0aWMgdm9pZCBpbml0c2lncyh2b2lkKTsKLXN0YXRpYyB2b2lkIGNhbGxfcHlfZXhpdGZ1bmNzKHZvaWQpOwotc3RhdGljIHZvaWQgd2FpdF9mb3JfdGhyZWFkX3NodXRkb3duKHZvaWQpOwotc3RhdGljIHZvaWQgY2FsbF9sbF9leGl0ZnVuY3Modm9pZCk7Ci1leHRlcm4gaW50IF9QeVVuaWNvZGVfSW5pdCh2b2lkKTsKLWV4dGVybiBpbnQgX1B5U3RydWN0U2VxdWVuY2VfSW5pdCh2b2lkKTsKLWV4dGVybiB2b2lkIF9QeVVuaWNvZGVfRmluaSh2b2lkKTsKLWV4dGVybiBpbnQgX1B5TG9uZ19Jbml0KHZvaWQpOwotZXh0ZXJuIHZvaWQgUHlMb25nX0Zpbmkodm9pZCk7Ci1leHRlcm4gaW50IF9QeUZhdWx0aGFuZGxlcl9Jbml0KHZvaWQpOwotZXh0ZXJuIHZvaWQgX1B5RmF1bHRoYW5kbGVyX0Zpbmkodm9pZCk7Ci1leHRlcm4gdm9pZCBfUHlIYXNoX0Zpbmkodm9pZCk7Ci1leHRlcm4gaW50IF9QeVRyYWNlTWFsbG9jX0luaXQodm9pZCk7Ci1leHRlcm4gaW50IF9QeVRyYWNlTWFsbG9jX0Zpbmkodm9pZCk7Ci0KLSNpZmRlZiBXSVRIX1RIUkVBRAotZXh0ZXJuIHZvaWQgX1B5R0lMU3RhdGVfSW5pdChQeUludGVycHJldGVyU3RhdGUgKiwgUHlUaHJlYWRTdGF0ZSAqKTsKLWV4dGVybiB2b2lkIF9QeUdJTFN0YXRlX0Zpbmkodm9pZCk7Ci0jZW5kaWYgLyogV0lUSF9USFJFQUQgKi8KLQotaW50IFB5X0RlYnVnRmxhZzsgLyogTmVlZGVkIGJ5IHBhcnNlci5jICovCi1pbnQgUHlfVmVyYm9zZUZsYWc7IC8qIE5lZWRlZCBieSBpbXBvcnQuYyAqLwotaW50IFB5X1F1aWV0RmxhZzsgLyogTmVlZGVkIGJ5IHN5c21vZHVsZS5jICovCi1pbnQgUHlfSW50ZXJhY3RpdmVGbGFnOyAvKiBOZWVkZWQgYnkgUHlfRmRJc0ludGVyYWN0aXZlKCkgYmVsb3cgKi8KLWludCBQeV9JbnNwZWN0RmxhZzsgLyogTmVlZGVkIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIGV4aXQgYXQgU3lzdGVtRXhpdCAqLwotaW50IFB5X05vU2l0ZUZsYWc7IC8qIFN1cHByZXNzICdpbXBvcnQgc2l0ZScgKi8KLWludCBQeV9CeXRlc1dhcm5pbmdGbGFnOyAvKiBXYXJuIG9uIHN0cihieXRlcykgYW5kIHN0cihidWZmZXIpICovCi1pbnQgUHlfRG9udFdyaXRlQnl0ZWNvZGVGbGFnOyAvKiBTdXBwcmVzcyB3cml0aW5nIGJ5dGVjb2RlIGZpbGVzICgqLnB5W2NvXSkgKi8KLWludCBQeV9Vc2VDbGFzc0V4Y2VwdGlvbnNGbGFnID0gMTsgLyogTmVlZGVkIGJ5IGJsdGlubW9kdWxlLmM6IGRlcHJlY2F0ZWQgKi8KLWludCBQeV9Gcm96ZW5GbGFnOyAvKiBOZWVkZWQgYnkgZ2V0cGF0aC5jICovCi1pbnQgUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnOyAvKiBlLmcuIFBZVEhPTlBBVEgsIFBZVEhPTkhPTUUgKi8KLWludCBQeV9Ob1VzZXJTaXRlRGlyZWN0b3J5ID0gMDsgLyogZm9yIC1zIGFuZCBzaXRlLnB5ICovCi1pbnQgUHlfVW5idWZmZXJlZFN0ZGlvRmxhZyA9IDA7IC8qIFVuYnVmZmVyZWQgYmluYXJ5IHN0ZHtpbixvdXQsZXJyfSAqLwotaW50IFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IDA7IC8qIGZvciAtUiBhbmQgUFlUSE9OSEFTSFNFRUQgKi8KLWludCBQeV9Jc29sYXRlZEZsYWcgPSAwOyAvKiBmb3IgLUksIGlzb2xhdGUgZnJvbSB1c2VyJ3MgZW52ICovCi0KLVB5VGhyZWFkU3RhdGUgKl9QeV9GaW5hbGl6aW5nID0gTlVMTDsKLQotLyogSGFjayB0byBmb3JjZSBsb2FkaW5nIG9mIG9iamVjdCBmaWxlcyAqLwotaW50ICgqX1B5T1NfbXlzdHJuaWNtcF9oYWNrKShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCkgPSBcCi0gICAgUHlPU19teXN0cm5pY21wOyAvKiBQeXRob24vcHlzdHJjbXAubyAqLwotCi0vKiBQeU1vZHVsZV9HZXRXYXJuaW5nc01vZHVsZSBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IGFzIG9mIDIuNgotc2luY2UgX3dhcm5pbmdzIGlzIGJ1aWx0aW4uICBUaGlzIEFQSSBzaG91bGQgbm90IGJlIHVzZWQuICovCi1QeU9iamVjdCAqCi1QeU1vZHVsZV9HZXRXYXJuaW5nc01vZHVsZSh2b2lkKQotewotICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIndhcm5pbmdzIik7Ci19Ci0KLXN0YXRpYyBpbnQgaW5pdGlhbGl6ZWQgPSAwOwotCi0vKiBBUEkgdG8gYWNjZXNzIHRoZSBpbml0aWFsaXplZCBmbGFnIC0tIHVzZWZ1bCBmb3IgZXNvdGVyaWMgdXNlICovCi0KLWludAotUHlfSXNJbml0aWFsaXplZCh2b2lkKQotewotICAgIHJldHVybiBpbml0aWFsaXplZDsKLX0KLQotLyogSGVscGVyIHRvIGFsbG93IGFuIGVtYmVkZGluZyBhcHBsaWNhdGlvbiB0byBvdmVycmlkZSB0aGUgbm9ybWFsCi0gKiBtZWNoYW5pc20gdGhhdCBhdHRlbXB0cyB0byBmaWd1cmUgb3V0IGFuIGFwcHJvcHJpYXRlIElPIGVuY29kaW5nCi0gKi8KLQotc3RhdGljIGNoYXIgKl9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nID0gTlVMTDsKLXN0YXRpYyBjaGFyICpfUHlfU3RhbmRhcmRTdHJlYW1FcnJvcnMgPSBOVUxMOwotCi1pbnQKLVB5X1NldFN0YW5kYXJkU3RyZWFtRW5jb2RpbmcoY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKLXsKLSAgICBpZiAoUHlfSXNJbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIC8qIFRoaXMgaXMgdG9vIGxhdGUgdG8gaGF2ZSBhbnkgZWZmZWN0ICovCi0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgLyogQ2FuJ3QgY2FsbCBQeUVycl9Ob01lbW9yeSgpIG9uIGVycm9ycywgYXMgUHl0aG9uIGhhc24ndCBiZWVuCi0gICAgICogaW5pdGlhbGlzZWQgeWV0LgotICAgICAqCi0gICAgICogSG93ZXZlciwgdGhlIHJhdyBtZW1vcnkgYWxsb2NhdG9ycyBhcmUgaW5pdGlhbGlzZWQgYXBwcm9wcmlhdGVseQotICAgICAqIGFzIEMgc3RhdGljIHZhcmlhYmxlcywgc28gX1B5TWVtX1Jhd1N0cmR1cCBpcyBPSyBldmVuIHRob3VnaAotICAgICAqIFB5X0luaXRpYWxpemUgaGFzbid0IGJlZW4gY2FsbGVkIHlldC4KLSAgICAgKi8KLSAgICBpZiAoZW5jb2RpbmcpIHsKLSAgICAgICAgX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcgPSBfUHlNZW1fUmF3U3RyZHVwKGVuY29kaW5nKTsKLSAgICAgICAgaWYgKCFfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZykgewotICAgICAgICAgICAgcmV0dXJuIC0yOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChlcnJvcnMpIHsKLSAgICAgICAgX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzID0gX1B5TWVtX1Jhd1N0cmR1cChlcnJvcnMpOwotICAgICAgICBpZiAoIV9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycykgewotICAgICAgICAgICAgaWYgKF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgUHlNZW1fUmF3RnJlZShfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gLTM7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLS8qIEdsb2JhbCBpbml0aWFsaXphdGlvbnMuICBDYW4gYmUgdW5kb25lIGJ5IFB5X0ZpbmFsaXplKCkuICBEb24ndAotICAgY2FsbCB0aGlzIHR3aWNlIHdpdGhvdXQgYW4gaW50ZXJ2ZW5pbmcgUHlfRmluYWxpemUoKSBjYWxsLiAgV2hlbgotICAgaW5pdGlhbGl6YXRpb25zIGZhaWwsIGEgZmF0YWwgZXJyb3IgaXMgaXNzdWVkIGFuZCB0aGUgZnVuY3Rpb24gZG9lcwotICAgbm90IHJldHVybi4gIE9uIHJldHVybiwgdGhlIGZpcnN0IHRocmVhZCBhbmQgaW50ZXJwcmV0ZXIgc3RhdGUgaGF2ZQotICAgYmVlbiBjcmVhdGVkLgotCi0gICBMb2NraW5nOiB5b3UgbXVzdCBob2xkIHRoZSBpbnRlcnByZXRlciBsb2NrIHdoaWxlIGNhbGxpbmcgdGhpcy4KLSAgIChJZiB0aGUgbG9jayBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLCB0aGF0J3MgZXF1aXZhbGVudCB0bwotICAgaGF2aW5nIHRoZSBsb2NrLCBidXQgeW91IGNhbm5vdCB1c2UgbXVsdGlwbGUgdGhyZWFkcy4pCi0KLSovCi0KLXN0YXRpYyBpbnQKLWFkZF9mbGFnKGludCBmbGFnLCBjb25zdCBjaGFyICplbnZzKQotewotICAgIGludCBlbnYgPSBhdG9pKGVudnMpOwotICAgIGlmIChmbGFnIDwgZW52KQotICAgICAgICBmbGFnID0gZW52OwotICAgIGlmIChmbGFnIDwgMSkKLSAgICAgICAgZmxhZyA9IDE7Ci0gICAgcmV0dXJuIGZsYWc7Ci19Ci0KLXN0YXRpYyBjaGFyKgotZ2V0X2NvZGVjX25hbWUoY29uc3QgY2hhciAqZW5jb2RpbmcpCi17Ci0gICAgY2hhciAqbmFtZV91dGY4LCAqbmFtZV9zdHI7Ci0gICAgUHlPYmplY3QgKmNvZGVjLCAqbmFtZSA9IE5VTEw7Ci0KLSAgICBjb2RlYyA9IF9QeUNvZGVjX0xvb2t1cChlbmNvZGluZyk7Ci0gICAgaWYgKCFjb2RlYykKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIG5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNvZGVjLCAmUHlJZF9uYW1lKTsKLSAgICBQeV9DTEVBUihjb2RlYyk7Ci0gICAgaWYgKCFuYW1lKQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgbmFtZV91dGY4ID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lKTsKLSAgICBpZiAobmFtZV91dGY4ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgbmFtZV9zdHIgPSBfUHlNZW1fUmF3U3RyZHVwKG5hbWVfdXRmOCk7Ci0gICAgUHlfREVDUkVGKG5hbWUpOwotICAgIGlmIChuYW1lX3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gbmFtZV9zdHI7Ci0KLWVycm9yOgotICAgIFB5X1hERUNSRUYoY29kZWMpOwotICAgIFB5X1hERUNSRUYobmFtZSk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBjaGFyKgotZ2V0X2xvY2FsZV9lbmNvZGluZyh2b2lkKQotewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBjaGFyIGNvZGVwYWdlWzEwMF07Ci0gICAgUHlPU19zbnByaW50Zihjb2RlcGFnZSwgc2l6ZW9mKGNvZGVwYWdlKSwgImNwJWQiLCBHZXRBQ1AoKSk7Ci0gICAgcmV0dXJuIGdldF9jb2RlY19uYW1lKGNvZGVwYWdlKTsKLSNlbGlmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKENPREVTRVQpCi0gICAgY2hhciogY29kZXNldCA9IG5sX2xhbmdpbmZvKENPREVTRVQpOwotICAgIGlmICghY29kZXNldCB8fCBjb2Rlc2V0WzBdID09ICdcMCcpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDT0RFU0VUIGlzIG5vdCBzZXQgb3IgZW1wdHkiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBnZXRfY29kZWNfbmFtZShjb2Rlc2V0KTsKLSNlbHNlCi0gICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKLSAgICByZXR1cm4gTlVMTDsKLSNlbmRpZgotfQotCi1zdGF0aWMgdm9pZAotaW1wb3J0X2luaXQoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsIFB5T2JqZWN0ICpzeXNtb2QpCi17Ci0gICAgUHlPYmplY3QgKmltcG9ydGxpYjsKLSAgICBQeU9iamVjdCAqaW1wbW9kOwotICAgIFB5T2JqZWN0ICpzeXNfbW9kdWxlczsKLSAgICBQeU9iamVjdCAqdmFsdWU7Ci0KLSAgICAvKiBJbXBvcnQgX2ltcG9ydGxpYiB0aHJvdWdoIGl0cyBmcm96ZW4gdmVyc2lvbiwgX2Zyb3plbl9pbXBvcnRsaWIuICovCi0gICAgaWYgKFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZSgiX2Zyb3plbl9pbXBvcnRsaWIiKSA8PSAwKSB7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiIpOwotICAgIH0KLSAgICBlbHNlIGlmIChQeV9WZXJib3NlRmxhZykgewotICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiAjIGZyb3plblxuIik7Ci0gICAgfQotICAgIGltcG9ydGxpYiA9IFB5SW1wb3J0X0FkZE1vZHVsZSgiX2Zyb3plbl9pbXBvcnRsaWIiKTsKLSAgICBpZiAoaW1wb3J0bGliID09IE5VTEwpIHsKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY291bGRuJ3QgZ2V0IF9mcm96ZW5faW1wb3J0bGliIGZyb20gIgotICAgICAgICAgICAgICAgICAgICAgICJzeXMubW9kdWxlcyIpOwotICAgIH0KLSAgICBpbnRlcnAtPmltcG9ydGxpYiA9IGltcG9ydGxpYjsKLSAgICBQeV9JTkNSRUYoaW50ZXJwLT5pbXBvcnRsaWIpOwotCi0gICAgLyogSW5zdGFsbCBfaW1wb3J0bGliIGFzIF9faW1wb3J0X18gKi8KLSAgICBpbXBtb2QgPSBQeUluaXRfaW1wKCk7Ci0gICAgaWYgKGltcG1vZCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBpbXAiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoUHlfVmVyYm9zZUZsYWcpIHsKLSAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgaW1wICMgYnVpbHRpblxuIik7Ci0gICAgfQotICAgIHN5c19tb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIGlmIChQeV9WZXJib3NlRmxhZykgewotICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBzeXMgIyBidWlsdGluXG4iKTsKLSAgICB9Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKHN5c19tb2R1bGVzLCAiX2ltcCIsIGltcG1vZCkgPCAwKSB7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IHNhdmUgX2ltcCB0byBzeXMubW9kdWxlcyIpOwotICAgIH0KLQotICAgIHZhbHVlID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbXBvcnRsaWIsICJfaW5zdGFsbCIsICJPTyIsIHN5c21vZCwgaW1wbW9kKTsKLSAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9QcmludCgpOwotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBpbXBvcnRsaWIgaW5zdGFsbCBmYWlsZWQiKTsKLSAgICB9Ci0gICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICBQeV9ERUNSRUYoaW1wbW9kKTsKLQotICAgIF9QeUltcG9ydFppcF9Jbml0KCk7Ci19Ci0KLQotdm9pZAotX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKGludCBpbnN0YWxsX3NpZ3MsIGludCBpbnN0YWxsX2ltcG9ydGxpYikKLXsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7Ci0gICAgUHlPYmplY3QgKmJpbW9kLCAqc3lzbW9kLCAqcHN0ZGVycjsKLSAgICBjaGFyICpwOwotICAgIGV4dGVybiB2b2lkIF9QeV9SZWFkeVR5cGVzKHZvaWQpOwotCi0gICAgaWYgKGluaXRpYWxpemVkKQotICAgICAgICByZXR1cm47Ci0gICAgaW5pdGlhbGl6ZWQgPSAxOwotICAgIF9QeV9GaW5hbGl6aW5nID0gTlVMTDsKLQotI2lmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKEhBVkVfU0VUTE9DQUxFKQotICAgIC8qIFNldCB1cCB0aGUgTENfQ1RZUEUgbG9jYWxlLCBzbyB3ZSBjYW4gb2J0YWluCi0gICAgICAgdGhlIGxvY2FsZSdzIGNoYXJzZXQgd2l0aG91dCBoYXZpbmcgdG8gc3dpdGNoCi0gICAgICAgbG9jYWxlcy4gKi8KLSAgICBzZXRsb2NhbGUoTENfQ1RZUEUsICIiKTsKLSNlbmRpZgotCi0gICAgaWYgKChwID0gUHlfR0VURU5WKCJQWVRIT05ERUJVRyIpKSAmJiAqcCAhPSAnXDAnKQotICAgICAgICBQeV9EZWJ1Z0ZsYWcgPSBhZGRfZmxhZyhQeV9EZWJ1Z0ZsYWcsIHApOwotICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OVkVSQk9TRSIpKSAmJiAqcCAhPSAnXDAnKQotICAgICAgICBQeV9WZXJib3NlRmxhZyA9IGFkZF9mbGFnKFB5X1ZlcmJvc2VGbGFnLCBwKTsKLSAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTk9QVElNSVpFIikpICYmICpwICE9ICdcMCcpCi0gICAgICAgIFB5X09wdGltaXplRmxhZyA9IGFkZF9mbGFnKFB5X09wdGltaXplRmxhZywgcCk7Ci0gICAgaWYgKChwID0gUHlfR0VURU5WKCJQWVRIT05ET05UV1JJVEVCWVRFQ09ERSIpKSAmJiAqcCAhPSAnXDAnKQotICAgICAgICBQeV9Eb250V3JpdGVCeXRlY29kZUZsYWcgPSBhZGRfZmxhZyhQeV9Eb250V3JpdGVCeXRlY29kZUZsYWcsIHApOwotICAgIC8qIFRoZSB2YXJpYWJsZSBpcyBvbmx5IHRlc3RlZCBmb3IgZXhpc3RlbmNlIGhlcmU7IF9QeVJhbmRvbV9Jbml0IHdpbGwKLSAgICAgICBjaGVjayBpdHMgdmFsdWUgZnVydGhlci4gKi8KLSAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkhBU0hTRUVEIikpICYmICpwICE9ICdcMCcpCi0gICAgICAgIFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IGFkZF9mbGFnKFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZywgcCk7Ci0KLSAgICBfUHlSYW5kb21fSW5pdCgpOwotCi0gICAgaW50ZXJwID0gUHlJbnRlcnByZXRlclN0YXRlX05ldygpOwotICAgIGlmIChpbnRlcnAgPT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgbWFrZSBmaXJzdCBpbnRlcnByZXRlciIpOwotCi0gICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9OZXcoaW50ZXJwKTsKLSAgICBpZiAodHN0YXRlID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IG1ha2UgZmlyc3QgdGhyZWFkIik7Ci0gICAgKHZvaWQpIFB5VGhyZWFkU3RhdGVfU3dhcCh0c3RhdGUpOwotCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICAvKiBXZSBjYW4ndCBjYWxsIF9QeUV2YWxfRmluaVRocmVhZHMoKSBpbiBQeV9GaW5hbGl6ZSBiZWNhdXNlCi0gICAgICAgZGVzdHJveWluZyB0aGUgR0lMIG1pZ2h0IGZhaWwgd2hlbiBpdCBpcyBiZWluZyByZWZlcmVuY2VkIGZyb20KLSAgICAgICBhbm90aGVyIHJ1bm5pbmcgdGhyZWFkIChzZWUgaXNzdWUgIzk5MDEpLgotICAgICAgIEluc3RlYWQgd2UgZGVzdHJveSB0aGUgcHJldmlvdXNseSBjcmVhdGVkIEdJTCBoZXJlLCB3aGljaCBlbnN1cmVzCi0gICAgICAgdGhhdCB3ZSBjYW4gY2FsbCBQeV9Jbml0aWFsaXplIC8gUHlfRmluYWxpemUgbXVsdGlwbGUgdGltZXMuICovCi0gICAgX1B5RXZhbF9GaW5pVGhyZWFkcygpOwotCi0gICAgLyogQXV0by10aHJlYWQtc3RhdGUgQVBJICovCi0gICAgX1B5R0lMU3RhdGVfSW5pdChpbnRlcnAsIHRzdGF0ZSk7Ci0jZW5kaWYgLyogV0lUSF9USFJFQUQgKi8KLQotICAgIF9QeV9SZWFkeVR5cGVzKCk7Ci0KLSAgICBpZiAoIV9QeUZyYW1lX0luaXQoKSkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdCBmcmFtZXMiKTsKLQotICAgIGlmICghX1B5TG9uZ19Jbml0KCkpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXQgbG9uZ3MiKTsKLQotICAgIGlmICghUHlCeXRlQXJyYXlfSW5pdCgpKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0IGJ5dGVhcnJheSIpOwotCi0gICAgaWYgKCFfUHlGbG9hdF9Jbml0KCkpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXQgZmxvYXQiKTsKLQotICAgIGludGVycC0+bW9kdWxlcyA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoaW50ZXJwLT5tb2R1bGVzID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IG1ha2UgbW9kdWxlcyBkaWN0aW9uYXJ5Iik7Ci0KLSAgICAvKiBJbml0IFVuaWNvZGUgaW1wbGVtZW50YXRpb247IHJlbGllcyBvbiB0aGUgY29kZWMgcmVnaXN0cnkgKi8KLSAgICBpZiAoX1B5VW5pY29kZV9Jbml0KCkgPCAwKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHVuaWNvZGUiKTsKLSAgICBpZiAoX1B5U3RydWN0U2VxdWVuY2VfSW5pdCgpIDwgMCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzdHJ1Y3RzZXEiKTsKLQotICAgIGJpbW9kID0gX1B5QnVpbHRpbl9Jbml0KCk7Ci0gICAgaWYgKGJpbW9kID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgYnVpbHRpbnMgbW9kdWxlcyIpOwotICAgIF9QeUltcG9ydF9GaXh1cEJ1aWx0aW4oYmltb2QsICJidWlsdGlucyIpOwotICAgIGludGVycC0+YnVpbHRpbnMgPSBQeU1vZHVsZV9HZXREaWN0KGJpbW9kKTsKLSAgICBpZiAoaW50ZXJwLT5idWlsdGlucyA9PSBOVUxMKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIGJ1aWx0aW5zIGRpY3QiKTsKLSAgICBQeV9JTkNSRUYoaW50ZXJwLT5idWlsdGlucyk7Ci0KLSAgICAvKiBpbml0aWFsaXplIGJ1aWx0aW4gZXhjZXB0aW9ucyAqLwotICAgIF9QeUV4Y19Jbml0KGJpbW9kKTsKLQotICAgIHN5c21vZCA9IF9QeVN5c19Jbml0KCk7Ci0gICAgaWYgKHN5c21vZCA9PSBOVUxMKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN5cyIpOwotICAgIGludGVycC0+c3lzZGljdCA9IFB5TW9kdWxlX0dldERpY3Qoc3lzbW9kKTsKLSAgICBpZiAoaW50ZXJwLT5zeXNkaWN0ID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIGRpY3QiKTsKLSAgICBQeV9JTkNSRUYoaW50ZXJwLT5zeXNkaWN0KTsKLSAgICBfUHlJbXBvcnRfRml4dXBCdWlsdGluKHN5c21vZCwgInN5cyIpOwotICAgIFB5U3lzX1NldFBhdGgoUHlfR2V0UGF0aCgpKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhpbnRlcnAtPnN5c2RpY3QsICJtb2R1bGVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnAtPm1vZHVsZXMpOwotCi0gICAgLyogU2V0IHVwIGEgcHJlbGltaW5hcnkgc3RkZXJyIHByaW50ZXIgdW50aWwgd2UgaGF2ZSBlbm91Z2gKLSAgICAgICBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIGlvIG1vZHVsZSBpbiBwbGFjZS4gKi8KLSAgICBwc3RkZXJyID0gUHlGaWxlX05ld1N0ZFByaW50ZXIoZmlsZW5vKHN0ZGVycikpOwotICAgIGlmIChwc3RkZXJyID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IHNldCBwcmVsaW1pbmFyeSBzdGRlcnIiKTsKLSAgICBfUHlTeXNfU2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyLCBwc3RkZXJyKTsKLSAgICBQeVN5c19TZXRPYmplY3QoIl9fc3RkZXJyX18iLCBwc3RkZXJyKTsKLSAgICBQeV9ERUNSRUYocHN0ZGVycik7Ci0KLSAgICBfUHlJbXBvcnRfSW5pdCgpOwotCi0gICAgX1B5SW1wb3J0SG9va3NfSW5pdCgpOwotCi0gICAgLyogSW5pdGlhbGl6ZSBfd2FybmluZ3MuICovCi0gICAgX1B5V2FybmluZ3NfSW5pdCgpOwotCi0gICAgaWYgKCFpbnN0YWxsX2ltcG9ydGxpYikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW1wb3J0X2luaXQoaW50ZXJwLCBzeXNtb2QpOwotCi0gICAgLyogaW5pdGlhbGl6ZSB0aGUgZmF1bHRoYW5kbGVyIG1vZHVsZSAqLwotICAgIGlmIChfUHlGYXVsdGhhbmRsZXJfSW5pdCgpKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIGZhdWx0aGFuZGxlciIpOwotCi0gICAgX1B5VGltZV9Jbml0KCk7Ci0KLSAgICBpZiAoaW5pdGZzZW5jb2RpbmcoaW50ZXJwKSA8IDApCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IHVuYWJsZSB0byBsb2FkIHRoZSBmaWxlIHN5c3RlbSBjb2RlYyIpOwotCi0gICAgaWYgKGluc3RhbGxfc2lncykKLSAgICAgICAgaW5pdHNpZ3MoKTsgLyogU2lnbmFsIGhhbmRsaW5nIHN0dWZmLCBpbmNsdWRpbmcgaW5pdGludHIoKSAqLwotCi0gICAgaWYgKF9QeVRyYWNlTWFsbG9jX0luaXQoKSA8IDApCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgdHJhY2VtYWxsb2MiKTsKLQotICAgIGluaXRtYWluKGludGVycCk7IC8qIE1vZHVsZSBfX21haW5fXyAqLwotICAgIGlmIChpbml0c3RkaW8oKSA8IDApCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoCi0gICAgICAgICAgICAiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgc3RhbmRhcmQgc3RyZWFtcyIpOwotCi0gICAgLyogSW5pdGlhbGl6ZSB3YXJuaW5ncy4gKi8KLSAgICBpZiAoUHlTeXNfSGFzV2Fybk9wdGlvbnMoKSkgewotICAgICAgICBQeU9iamVjdCAqd2FybmluZ3NfbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJ3YXJuaW5ncyIpOwotICAgICAgICBpZiAod2FybmluZ3NfbW9kdWxlID09IE5VTEwpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJ2ltcG9ydCB3YXJuaW5ncycgZmFpbGVkOyB0cmFjZWJhY2s6XG4iKTsKLSAgICAgICAgICAgIFB5RXJyX1ByaW50KCk7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfWERFQ1JFRih3YXJuaW5nc19tb2R1bGUpOwotICAgIH0KLQotICAgIGlmICghUHlfTm9TaXRlRmxhZykKLSAgICAgICAgaW5pdHNpdGUoKTsgLyogTW9kdWxlIHNpdGUgKi8KLX0KLQotdm9pZAotUHlfSW5pdGlhbGl6ZUV4KGludCBpbnN0YWxsX3NpZ3MpCi17Ci0gICAgX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKGluc3RhbGxfc2lncywgMSk7Ci19Ci0KLXZvaWQKLVB5X0luaXRpYWxpemUodm9pZCkKLXsKLSAgICBQeV9Jbml0aWFsaXplRXgoMSk7Ci19Ci0KLQotI2lmZGVmIENPVU5UX0FMTE9DUwotZXh0ZXJuIHZvaWQgZHVtcF9jb3VudHMoRklMRSopOwotI2VuZGlmCi0KLS8qIEZsdXNoIHN0ZG91dCBhbmQgc3RkZXJyICovCi0KLXN0YXRpYyBpbnQKLWZpbGVfaXNfY2xvc2VkKFB5T2JqZWN0ICpmb2JqKQotewotICAgIGludCByOwotICAgIFB5T2JqZWN0ICp0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZvYmosICJjbG9zZWQiKTsKLSAgICBpZiAodG1wID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHIgPSBQeU9iamVjdF9Jc1RydWUodG1wKTsKLSAgICBQeV9ERUNSRUYodG1wKTsKLSAgICBpZiAociA8IDApCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgcmV0dXJuIHIgPiAwOwotfQotCi1zdGF0aWMgdm9pZAotZmx1c2hfc3RkX2ZpbGVzKHZvaWQpCi17Ci0gICAgUHlPYmplY3QgKmZvdXQgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfc3Rkb3V0KTsKLSAgICBQeU9iamVjdCAqZmVyciA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIpOwotICAgIFB5T2JqZWN0ICp0bXA7Ci0KLSAgICBpZiAoZm91dCAhPSBOVUxMICYmIGZvdXQgIT0gUHlfTm9uZSAmJiAhZmlsZV9pc19jbG9zZWQoZm91dCkpIHsKLSAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgIiIpOwotICAgICAgICBpZiAodG1wID09IE5VTEwpCi0gICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoZm91dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwotICAgIH0KLQotICAgIGlmIChmZXJyICE9IE5VTEwgJiYgZmVyciAhPSBQeV9Ob25lICYmICFmaWxlX2lzX2Nsb3NlZChmZXJyKSkgewotICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCAiIik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwotICAgIH0KLX0KLQotLyogVW5kbyB0aGUgZWZmZWN0IG9mIFB5X0luaXRpYWxpemUoKS4KLQotICAgQmV3YXJlOiBpZiBtdWx0aXBsZSBpbnRlcnByZXRlciBhbmQvb3IgdGhyZWFkIHN0YXRlcyBleGlzdCwgdGhlc2UKLSAgIGFyZSBub3Qgd2lwZWQgb3V0OyBvbmx5IHRoZSBjdXJyZW50IHRocmVhZCBhbmQgaW50ZXJwcmV0ZXIgc3RhdGUKLSAgIGFyZSBkZWxldGVkLiAgQnV0IHNpbmNlIGV2ZXJ5dGhpbmcgZWxzZSBpcyBkZWxldGVkLCB0aG9zZSBvdGhlcgotICAgaW50ZXJwcmV0ZXIgYW5kIHRocmVhZCBzdGF0ZXMgc2hvdWxkIG5vIGxvbmdlciBiZSB1c2VkLgotCi0gICAoWFhYIFdlIHNob3VsZCBkbyBiZXR0ZXIsIGUuZy4gd2lwZSBvdXQgYWxsIGludGVycHJldGVycyBhbmQKLSAgIHRocmVhZHMuKQotCi0gICBMb2NraW5nOiBhcyBhYm92ZS4KLQotKi8KLQotdm9pZAotUHlfRmluYWxpemUodm9pZCkKLXsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7Ci0KLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICB3YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24oKTsKLQotICAgIC8qIFRoZSBpbnRlcnByZXRlciBpcyBzdGlsbCBlbnRpcmVseSBpbnRhY3QgYXQgdGhpcyBwb2ludCwgYW5kIHRoZQotICAgICAqIGV4aXQgZnVuY3MgbWF5IGJlIHJlbHlpbmcgb24gdGhhdC4gIEluIHBhcnRpY3VsYXIsIGlmIHNvbWUgdGhyZWFkCi0gICAgICogb3IgZXhpdCBmdW5jIGlzIHN0aWxsIHdhaXRpbmcgdG8gZG8gYW4gaW1wb3J0LCB0aGUgaW1wb3J0IG1hY2hpbmVyeQotICAgICAqIGV4cGVjdHMgUHlfSXNJbml0aWFsaXplZCgpIHRvIHJldHVybiB0cnVlLiAgU28gZG9uJ3Qgc2F5IHRoZQotICAgICAqIGludGVycHJldGVyIGlzIHVuaW5pdGlhbGl6ZWQgdW50aWwgYWZ0ZXIgdGhlIGV4aXQgZnVuY3MgaGF2ZSBydW4uCi0gICAgICogTm90ZSB0aGF0IFRocmVhZGluZy5weSB1c2VzIGFuIGV4aXQgZnVuYyB0byBkbyBhIGpvaW4gb24gYWxsIHRoZQotICAgICAqIHRocmVhZHMgY3JlYXRlZCB0aHJ1IGl0LCBzbyB0aGlzIGFsc28gcHJvdGVjdHMgcGVuZGluZyBpbXBvcnRzIGluCi0gICAgICogdGhlIHRocmVhZHMgY3JlYXRlZCB2aWEgVGhyZWFkaW5nLgotICAgICAqLwotICAgIGNhbGxfcHlfZXhpdGZ1bmNzKCk7Ci0KLSAgICAvKiBHZXQgY3VycmVudCB0aHJlYWQgc3RhdGUgYW5kIGludGVycHJldGVyIHBvaW50ZXIgKi8KLSAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwotICAgIGludGVycCA9IHRzdGF0ZS0+aW50ZXJwOwotCi0gICAgLyogUmVtYWluaW5nIHRocmVhZHMgKGUuZy4gZGFlbW9uIHRocmVhZHMpIHdpbGwgYXV0b21hdGljYWxseSBleGl0Ci0gICAgICAgYWZ0ZXIgdGFraW5nIHRoZSBHSUwgKGluIFB5RXZhbF9SZXN0b3JlVGhyZWFkKCkpLiAqLwotICAgIF9QeV9GaW5hbGl6aW5nID0gdHN0YXRlOwotICAgIGluaXRpYWxpemVkID0gMDsKLQotICAgIC8qIEZsdXNoIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgKi8KLSAgICBmbHVzaF9zdGRfZmlsZXMoKTsKLQotICAgIC8qIERpc2FibGUgc2lnbmFsIGhhbmRsaW5nICovCi0gICAgUHlPU19GaW5pSW50ZXJydXB0cygpOwotCi0gICAgLyogQ29sbGVjdCBnYXJiYWdlLiAgVGhpcyBtYXkgY2FsbCBmaW5hbGl6ZXJzOyBpdCdzIG5pY2UgdG8gY2FsbCB0aGVzZQotICAgICAqIGJlZm9yZSBhbGwgbW9kdWxlcyBhcmUgZGVzdHJveWVkLgotICAgICAqIFhYWCBJZiBhIF9fZGVsX18gb3Igd2Vha3JlZiBjYWxsYmFjayBpcyB0cmlnZ2VyZWQgaGVyZSwgYW5kIHRyaWVzIHRvCi0gICAgICogWFhYIGltcG9ydCBhIG1vZHVsZSwgYmFkIHRoaW5ncyBjYW4gaGFwcGVuLCBiZWNhdXNlIFB5dGhvbiBubwotICAgICAqIFhYWCBsb25nZXIgYmVsaWV2ZXMgaXQncyBpbml0aWFsaXplZC4KLSAgICAgKiBYWFggICAgIEZhdGFsIFB5dGhvbiBlcnJvcjogSW50ZXJwcmV0ZXIgbm90IGluaXRpYWxpemVkICh2ZXJzaW9uIG1pc21hdGNoPykKLSAgICAgKiBYWFggaXMgZWFzeSB0byBwcm92b2tlIHRoYXQgd2F5LiAgSSd2ZSBhbHNvIHNlZW4sIGUuZy4sCi0gICAgICogWFhYICAgICBFeGNlcHRpb24gZXhjZXB0aW9ucy5JbXBvcnRFcnJvcjogJ05vIG1vZHVsZSBuYW1lZCBzaGEnCi0gICAgICogWFhYICAgICAgICAgaW4gPGZ1bmN0aW9uIGNhbGxiYWNrIGF0IDB4MDA4RjU3MTg+IGlnbm9yZWQKLSAgICAgKiBYWFggYnV0IEknbSB1bmNsZWFyIG9uIGV4YWN0bHkgaG93IHRoYXQgb25lIGhhcHBlbnMuICBJbiBhbnkgY2FzZSwKLSAgICAgKiBYWFggSSBoYXZlbid0IHNlZW4gYSByZWFsLWxpZmUgcmVwb3J0IG9mIGVpdGhlciBvZiB0aGVzZS4KLSAgICAgKi8KLSAgICBQeUdDX0NvbGxlY3QoKTsKLSNpZmRlZiBDT1VOVF9BTExPQ1MKLSAgICAvKiBXaXRoIENPVU5UX0FMTE9DUywgaXQgaGVscHMgdG8gcnVuIEdDIG11bHRpcGxlIHRpbWVzOgotICAgICAgIGVhY2ggY29sbGVjdGlvbiBtaWdodCByZWxlYXNlIHNvbWUgdHlwZXMgZnJvbSB0aGUgdHlwZQotICAgICAgIGxpc3QsIHNvIHRoZXkgYmVjb21lIGdhcmJhZ2UuICovCi0gICAgd2hpbGUgKFB5R0NfQ29sbGVjdCgpID4gMCkKLSAgICAgICAgLyogbm90aGluZyAqLzsKLSNlbmRpZgotICAgIC8qIERlc3Ryb3kgYWxsIG1vZHVsZXMgKi8KLSAgICBQeUltcG9ydF9DbGVhbnVwKCk7Ci0KLSAgICAvKiBGbHVzaCBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyIChhZ2FpbiwgaW4gY2FzZSBtb3JlIHdhcyBwcmludGVkKSAqLwotICAgIGZsdXNoX3N0ZF9maWxlcygpOwotCi0gICAgLyogQ29sbGVjdCBmaW5hbCBnYXJiYWdlLiAgVGhpcyBkaXNwb3NlcyBvZiBjeWNsZXMgY3JlYXRlZCBieQotICAgICAqIGNsYXNzIGRlZmluaXRpb25zLCBmb3IgZXhhbXBsZS4KLSAgICAgKiBYWFggVGhpcyBpcyBkaXNhYmxlZCBiZWNhdXNlIGl0IGNhdXNlZCB0b28gbWFueSBwcm9ibGVtcy4gIElmCi0gICAgICogWFhYIGEgX19kZWxfXyBvciB3ZWFrcmVmIGNhbGxiYWNrIHRyaWdnZXJzIGhlcmUsIFB5dGhvbiBjb2RlIGhhcwotICAgICAqIFhYWCBhIGhhcmQgdGltZSBydW5uaW5nLCBiZWNhdXNlIGV2ZW4gdGhlIHN5cyBtb2R1bGUgaGFzIGJlZW4KLSAgICAgKiBYWFggY2xlYXJlZCBvdXQgKHN5cy5zdGRvdXQgaXMgZ29uZSwgc3lzLmV4Y2VwdGhvb2sgaXMgZ29uZSwgZXRjKS4KLSAgICAgKiBYWFggT25lIHN5bXB0b20gaXMgYSBzZXF1ZW5jZSBvZiBpbmZvcm1hdGlvbi1mcmVlIG1lc3NhZ2VzCi0gICAgICogWFhYIGNvbWluZyBmcm9tIHRocmVhZHMgKGlmIGEgX19kZWxfXyBvciBjYWxsYmFjayBpcyBpbnZva2VkLAotICAgICAqIFhYWCBvdGhlciB0aHJlYWRzIGNhbiBleGVjdXRlIHRvbywgYW5kIGFueSBleGNlcHRpb24gdGhleSBlbmNvdW50ZXIKLSAgICAgKiBYWFggdHJpZ2dlcnMgYSBjb21lZHkgb2YgZXJyb3JzIGFzIHN1YnN5c3RlbSBhZnRlciBzdWJzeXN0ZW0KLSAgICAgKiBYWFggZmFpbHMgdG8gZmluZCB3aGF0IGl0ICpleHBlY3RzKiB0byBmaW5kIGluIHN5cyB0byBoZWxwIHJlcG9ydAotICAgICAqIFhYWCB0aGUgZXhjZXB0aW9uIGFuZCBjb25zZXF1ZW50IHVuZXhwZWN0ZWQgZmFpbHVyZXMpLiAgSSd2ZSBhbHNvCi0gICAgICogWFhYIHNlZW4gc2VnZmF1bHRzIHRoZW4sIGFmdGVyIGFkZGluZyBwcmludCBzdGF0ZW1lbnRzIHRvIHRoZQotICAgICAqIFhYWCBQeXRob24gY29kZSBnZXR0aW5nIGNhbGxlZC4KLSAgICAgKi8KLSNpZiAwCi0gICAgUHlHQ19Db2xsZWN0KCk7Ci0jZW5kaWYKLQotICAgIC8qIERpc2FibGUgdHJhY2VtYWxsb2MgYWZ0ZXIgYWxsIFB5dGhvbiBvYmplY3RzIGhhdmUgYmVlbiBkZXN0cm95ZWQsCi0gICAgICAgc28gaXQgaXMgcG9zc2libGUgdG8gdXNlIHRyYWNlbWFsbG9jIGluIG9iamVjdHMgZGVzdHJ1Y3Rvci4gKi8KLSAgICBfUHlUcmFjZU1hbGxvY19GaW5pKCk7Ci0KLSAgICAvKiBEZXN0cm95IHRoZSBkYXRhYmFzZSB1c2VkIGJ5IF9QeUltcG9ydF97Rml4dXAsRmluZH1FeHRlbnNpb24gKi8KLSAgICBfUHlJbXBvcnRfRmluaSgpOwotCi0gICAgLyogQ2xlYW51cCB0eXBlb2JqZWN0LmMncyBpbnRlcm5hbCBjYWNoZXMuICovCi0gICAgX1B5VHlwZV9GaW5pKCk7Ci0KLSAgICAvKiB1bmxvYWQgZmF1bHRoYW5kbGVyIG1vZHVsZSAqLwotICAgIF9QeUZhdWx0aGFuZGxlcl9GaW5pKCk7Ci0KLSAgICAvKiBEZWJ1Z2dpbmcgc3R1ZmYgKi8KLSNpZmRlZiBDT1VOVF9BTExPQ1MKLSAgICBkdW1wX2NvdW50cyhzdGRvdXQpOwotI2VuZGlmCi0gICAgLyogZHVtcCBoYXNoIHN0YXRzICovCi0gICAgX1B5SGFzaF9GaW5pKCk7Ci0KLSAgICBQUklOVF9UT1RBTF9SRUZTKCk7Ci0KLSNpZmRlZiBQeV9UUkFDRV9SRUZTCi0gICAgLyogRGlzcGxheSBhbGwgb2JqZWN0cyBzdGlsbCBhbGl2ZSAtLSB0aGlzIGNhbiBpbnZva2UgYXJiaXRyYXJ5Ci0gICAgICogX19yZXByX18gb3ZlcnJpZGVzLCBzbyByZXF1aXJlcyBhIG1vc3RseS1pbnRhY3QgaW50ZXJwcmV0ZXIuCi0gICAgICogQWxhcywgYSBsb3Qgb2Ygc3R1ZmYgbWF5IHN0aWxsIGJlIGFsaXZlIG5vdyB0aGF0IHdpbGwgYmUgY2xlYW5lZAotICAgICAqIHVwIGxhdGVyLgotICAgICAqLwotICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTkRVTVBSRUZTIikpCi0gICAgICAgIF9QeV9QcmludFJlZmVyZW5jZXMoc3RkZXJyKTsKLSNlbmRpZiAvKiBQeV9UUkFDRV9SRUZTICovCi0KLSAgICAvKiBDbGVhciBpbnRlcnByZXRlciBzdGF0ZSBhbmQgYWxsIHRocmVhZCBzdGF0ZXMuICovCi0gICAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyKGludGVycCk7Ci0KLSAgICAvKiBOb3cgd2UgZGVjcmVmIHRoZSBleGNlcHRpb24gY2xhc3Nlcy4gIEFmdGVyIHRoaXMgcG9pbnQgbm90aGluZwotICAgICAgIGNhbiByYWlzZSBhbiBleGNlcHRpb24uICBUaGF0J3Mgb2theSwgYmVjYXVzZSBlYWNoIEZpbmkoKSBtZXRob2QKLSAgICAgICBiZWxvdyBoYXMgYmVlbiBjaGVja2VkIHRvIG1ha2Ugc3VyZSBubyBleGNlcHRpb25zIGFyZSBldmVyCi0gICAgICAgcmFpc2VkLgotICAgICovCi0KLSAgICBfUHlFeGNfRmluaSgpOwotCi0gICAgLyogU3VuZHJ5IGZpbmFsaXplcnMgKi8KLSAgICBQeU1ldGhvZF9GaW5pKCk7Ci0gICAgUHlGcmFtZV9GaW5pKCk7Ci0gICAgUHlDRnVuY3Rpb25fRmluaSgpOwotICAgIFB5VHVwbGVfRmluaSgpOwotICAgIFB5TGlzdF9GaW5pKCk7Ci0gICAgUHlTZXRfRmluaSgpOwotICAgIFB5Qnl0ZXNfRmluaSgpOwotICAgIFB5Qnl0ZUFycmF5X0ZpbmkoKTsKLSAgICBQeUxvbmdfRmluaSgpOwotICAgIFB5RmxvYXRfRmluaSgpOwotICAgIFB5RGljdF9GaW5pKCk7Ci0gICAgUHlTbGljZV9GaW5pKCk7Ci0gICAgX1B5R0NfRmluaSgpOwotICAgIF9QeVJhbmRvbV9GaW5pKCk7Ci0KLSAgICAvKiBDbGVhbnVwIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gKi8KLSAgICBfUHlVbmljb2RlX0ZpbmkoKTsKLQotICAgIC8qIHJlc2V0IGZpbGUgc3lzdGVtIGRlZmF1bHQgZW5jb2RpbmcgKi8KLSAgICBpZiAoIVB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgJiYgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZykgewotICAgICAgICBQeU1lbV9SYXdGcmVlKChjaGFyKilQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nKTsKLSAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IE5VTEw7Ci0gICAgfQotCi0gICAgLyogWFhYIFN0aWxsIGFsbG9jYXRlZDoKLSAgICAgICAtIHZhcmlvdXMgc3RhdGljIGFkLWhvYyBwb2ludGVycyB0byBpbnRlcm5lZCBzdHJpbmdzCi0gICAgICAgLSBpbnQgYW5kIGZsb2F0IGZyZWUgbGlzdCBibG9ja3MKLSAgICAgICAtIHdoYXRldmVyIHZhcmlvdXMgbW9kdWxlcyBhbmQgbGlicmFyaWVzIGFsbG9jYXRlCi0gICAgKi8KLQotICAgIFB5R3JhbW1hcl9SZW1vdmVBY2NlbGVyYXRvcnMoJl9QeVBhcnNlcl9HcmFtbWFyKTsKLQotICAgIC8qIENsZWFudXAgYXV0by10aHJlYWQtc3RhdGUgKi8KLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIF9QeUdJTFN0YXRlX0ZpbmkoKTsKLSNlbmRpZiAvKiBXSVRIX1RIUkVBRCAqLwotCi0gICAgLyogRGVsZXRlIGN1cnJlbnQgdGhyZWFkLiBBZnRlciB0aGlzLCBtYW55IEMgQVBJIGNhbGxzIGJlY29tZSBjcmFzaHkuICovCi0gICAgUHlUaHJlYWRTdGF0ZV9Td2FwKE5VTEwpOwotICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKLQotI2lmZGVmIFB5X1RSQUNFX1JFRlMKLSAgICAvKiBEaXNwbGF5IGFkZHJlc3NlcyAoJiByZWZjbnRzKSBvZiBhbGwgb2JqZWN0cyBzdGlsbCBhbGl2ZS4KLSAgICAgKiBBbiBhZGRyZXNzIGNhbiBiZSB1c2VkIHRvIGZpbmQgdGhlIHJlcHIgb2YgdGhlIG9iamVjdCwgcHJpbnRlZAotICAgICAqIGFib3ZlIGJ5IF9QeV9QcmludFJlZmVyZW5jZXMuCi0gICAgICovCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9ORFVNUFJFRlMiKSkKLSAgICAgICAgX1B5X1ByaW50UmVmZXJlbmNlQWRkcmVzc2VzKHN0ZGVycik7Ci0jZW5kaWYgLyogUHlfVFJBQ0VfUkVGUyAqLwotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKSkKLSAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKLSNlbmRpZgotCi0gICAgY2FsbF9sbF9leGl0ZnVuY3MoKTsKLX0KLQotLyogQ3JlYXRlIGFuZCBpbml0aWFsaXplIGEgbmV3IGludGVycHJldGVyIGFuZCB0aHJlYWQsIGFuZCByZXR1cm4gdGhlCi0gICBuZXcgdGhyZWFkLiAgVGhpcyByZXF1aXJlcyB0aGF0IFB5X0luaXRpYWxpemUoKSBoYXMgYmVlbiBjYWxsZWQKLSAgIGZpcnN0LgotCi0gICBVbnN1Y2Nlc3NmdWwgaW5pdGlhbGl6YXRpb24geWllbGRzIGEgTlVMTCBwb2ludGVyLiAgTm90ZSB0aGF0ICpubyoKLSAgIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgZXZlbiBpbiB0aGlzIGNhc2UgLS0gdGhlCi0gICBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgaGVsZCBpbiB0aGUgdGhyZWFkLCBhbmQgdGhlcmUgaXMgbm8KLSAgIHRocmVhZC4KLQotICAgTG9ja2luZzogYXMgYWJvdmUuCi0KLSovCi0KLVB5VGhyZWFkU3RhdGUgKgotUHlfTmV3SW50ZXJwcmV0ZXIodm9pZCkKLXsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUsICpzYXZlX3RzdGF0ZTsKLSAgICBQeU9iamVjdCAqYmltb2QsICpzeXNtb2Q7Ci0KLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9OZXdJbnRlcnByZXRlcjogY2FsbCBQeV9Jbml0aWFsaXplIGZpcnN0Iik7Ci0KLSAgICBpbnRlcnAgPSBQeUludGVycHJldGVyU3RhdGVfTmV3KCk7Ci0gICAgaWYgKGludGVycCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfTmV3KGludGVycCk7Ci0gICAgaWYgKHRzdGF0ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgc2F2ZV90c3RhdGUgPSBQeVRocmVhZFN0YXRlX1N3YXAodHN0YXRlKTsKLQotICAgIC8qIFhYWCBUaGUgZm9sbG93aW5nIGlzIGxheCBpbiBlcnJvciBjaGVja2luZyAqLwotCi0gICAgaW50ZXJwLT5tb2R1bGVzID0gUHlEaWN0X05ldygpOwotCi0gICAgYmltb2QgPSBfUHlJbXBvcnRfRmluZEJ1aWx0aW4oImJ1aWx0aW5zIik7Ci0gICAgaWYgKGJpbW9kICE9IE5VTEwpIHsKLSAgICAgICAgaW50ZXJwLT5idWlsdGlucyA9IFB5TW9kdWxlX0dldERpY3QoYmltb2QpOwotICAgICAgICBpZiAoaW50ZXJwLT5idWlsdGlucyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBoYW5kbGVfZXJyb3I7Ci0gICAgICAgIFB5X0lOQ1JFRihpbnRlcnAtPmJ1aWx0aW5zKTsKLSAgICB9Ci0KLSAgICAvKiBpbml0aWFsaXplIGJ1aWx0aW4gZXhjZXB0aW9ucyAqLwotICAgIF9QeUV4Y19Jbml0KGJpbW9kKTsKLQotICAgIHN5c21vZCA9IF9QeUltcG9ydF9GaW5kQnVpbHRpbigic3lzIik7Ci0gICAgaWYgKGJpbW9kICE9IE5VTEwgJiYgc3lzbW9kICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKnBzdGRlcnI7Ci0KLSAgICAgICAgaW50ZXJwLT5zeXNkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChzeXNtb2QpOwotICAgICAgICBpZiAoaW50ZXJwLT5zeXNkaWN0ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGhhbmRsZV9lcnJvcjsKLSAgICAgICAgUHlfSU5DUkVGKGludGVycC0+c3lzZGljdCk7Ci0gICAgICAgIFB5U3lzX1NldFBhdGgoUHlfR2V0UGF0aCgpKTsKLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoaW50ZXJwLT5zeXNkaWN0LCAibW9kdWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycC0+bW9kdWxlcyk7Ci0gICAgICAgIC8qIFNldCB1cCBhIHByZWxpbWluYXJ5IHN0ZGVyciBwcmludGVyIHVudGlsIHdlIGhhdmUgZW5vdWdoCi0gICAgICAgICAgIGluZnJhc3RydWN0dXJlIGZvciB0aGUgaW8gbW9kdWxlIGluIHBsYWNlLiAqLwotICAgICAgICBwc3RkZXJyID0gUHlGaWxlX05ld1N0ZFByaW50ZXIoZmlsZW5vKHN0ZGVycikpOwotICAgICAgICBpZiAocHN0ZGVyciA9PSBOVUxMKQotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3Qgc2V0IHByZWxpbWluYXJ5IHN0ZGVyciIpOwotICAgICAgICBfUHlTeXNfU2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyLCBwc3RkZXJyKTsKLSAgICAgICAgUHlTeXNfU2V0T2JqZWN0KCJfX3N0ZGVycl9fIiwgcHN0ZGVycik7Ci0gICAgICAgIFB5X0RFQ1JFRihwc3RkZXJyKTsKLQotICAgICAgICBfUHlJbXBvcnRIb29rc19Jbml0KCk7Ci0KLSAgICAgICAgaW1wb3J0X2luaXQoaW50ZXJwLCBzeXNtb2QpOwotCi0gICAgICAgIGlmIChpbml0ZnNlbmNvZGluZyhpbnRlcnApIDwgMCkKLSAgICAgICAgICAgIGdvdG8gaGFuZGxlX2Vycm9yOwotCi0gICAgICAgIGlmIChpbml0c3RkaW8oKSA8IDApCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKAotICAgICAgICAgICAgIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIHN0YW5kYXJkIHN0cmVhbXMiKTsKLSAgICAgICAgaW5pdG1haW4oaW50ZXJwKTsKLSAgICAgICAgaWYgKCFQeV9Ob1NpdGVGbGFnKQotICAgICAgICAgICAgaW5pdHNpdGUoKTsKLSAgICB9Ci0KLSAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiB0c3RhdGU7Ci0KLWhhbmRsZV9lcnJvcjoKLSAgICAvKiBPb3BzLCBpdCBkaWRuJ3Qgd29yay4gIFVuZG8gaXQgYWxsLiAqLwotCi0gICAgUHlFcnJfUHJpbnRFeCgwKTsKLSAgICBQeVRocmVhZFN0YXRlX0NsZWFyKHRzdGF0ZSk7Ci0gICAgUHlUaHJlYWRTdGF0ZV9Td2FwKHNhdmVfdHN0YXRlKTsKLSAgICBQeVRocmVhZFN0YXRlX0RlbGV0ZSh0c3RhdGUpOwotICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKLQotICAgIHJldHVybiBOVUxMOwotfQotCi0vKiBEZWxldGUgYW4gaW50ZXJwcmV0ZXIgYW5kIGl0cyBsYXN0IHRocmVhZC4gIFRoaXMgcmVxdWlyZXMgdGhhdCB0aGUKLSAgIGdpdmVuIHRocmVhZCBzdGF0ZSBpcyBjdXJyZW50LCB0aGF0IHRoZSB0aHJlYWQgaGFzIG5vIHJlbWFpbmluZwotICAgZnJhbWVzLCBhbmQgdGhhdCBpdCBpcyBpdHMgaW50ZXJwcmV0ZXIncyBvbmx5IHJlbWFpbmluZyB0aHJlYWQuCi0gICBJdCBpcyBhIGZhdGFsIGVycm9yIHRvIHZpb2xhdGUgdGhlc2UgY29uc3RyYWludHMuCi0KLSAgIChQeV9GaW5hbGl6ZSgpIGRvZXNuJ3QgaGF2ZSB0aGVzZSBjb25zdHJhaW50cyAtLSBpdCB6YXBzCi0gICBldmVyeXRoaW5nLCByZWdhcmRsZXNzLikKLQotICAgTG9ja2luZzogYXMgYWJvdmUuCi0KLSovCi0KLXZvaWQKLVB5X0VuZEludGVycHJldGVyKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSkKLXsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IHRzdGF0ZS0+aW50ZXJwOwotCi0gICAgaWYgKHRzdGF0ZSAhPSBQeVRocmVhZFN0YXRlX0dFVCgpKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9FbmRJbnRlcnByZXRlcjogdGhyZWFkIGlzIG5vdCBjdXJyZW50Iik7Ci0gICAgaWYgKHRzdGF0ZS0+ZnJhbWUgIT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfRW5kSW50ZXJwcmV0ZXI6IHRocmVhZCBzdGlsbCBoYXMgYSBmcmFtZSIpOwotCi0gICAgd2FpdF9mb3JfdGhyZWFkX3NodXRkb3duKCk7Ci0KLSAgICBpZiAodHN0YXRlICE9IGludGVycC0+dHN0YXRlX2hlYWQgfHwgdHN0YXRlLT5uZXh0ICE9IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0VuZEludGVycHJldGVyOiBub3QgdGhlIGxhc3QgdGhyZWFkIik7Ci0KLSAgICBQeUltcG9ydF9DbGVhbnVwKCk7Ci0gICAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyKGludGVycCk7Ci0gICAgUHlUaHJlYWRTdGF0ZV9Td2FwKE5VTEwpOwotICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKLX0KLQotI2lmZGVmIE1TX1dJTkRPV1MKLXN0YXRpYyB3Y2hhcl90ICpwcm9nbmFtZSA9IEwicHl0aG9uIjsKLSNlbHNlCi1zdGF0aWMgd2NoYXJfdCAqcHJvZ25hbWUgPSBMInB5dGhvbjMiOwotI2VuZGlmCi0KLXZvaWQKLVB5X1NldFByb2dyYW1OYW1lKHdjaGFyX3QgKnBuKQotewotICAgIGlmIChwbiAmJiAqcG4pCi0gICAgICAgIHByb2duYW1lID0gcG47Ci19Ci0KLXdjaGFyX3QgKgotUHlfR2V0UHJvZ3JhbU5hbWUodm9pZCkKLXsKLSAgICByZXR1cm4gcHJvZ25hbWU7Ci19Ci0KLXN0YXRpYyB3Y2hhcl90ICpkZWZhdWx0X2hvbWUgPSBOVUxMOwotc3RhdGljIHdjaGFyX3QgZW52X2hvbWVbTUFYUEFUSExFTisxXTsKLQotdm9pZAotUHlfU2V0UHl0aG9uSG9tZSh3Y2hhcl90ICpob21lKQotewotICAgIGRlZmF1bHRfaG9tZSA9IGhvbWU7Ci19Ci0KLXdjaGFyX3QgKgotUHlfR2V0UHl0aG9uSG9tZSh2b2lkKQotewotICAgIHdjaGFyX3QgKmhvbWUgPSBkZWZhdWx0X2hvbWU7Ci0gICAgaWYgKGhvbWUgPT0gTlVMTCAmJiAhUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnKSB7Ci0gICAgICAgIGNoYXIqIGNob21lID0gUHlfR0VURU5WKCJQWVRIT05IT01FIik7Ci0gICAgICAgIGlmIChjaG9tZSkgewotICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBQeV9BUlJBWV9MRU5HVEgoZW52X2hvbWUpOwotICAgICAgICAgICAgc2l6ZV90IHIgPSBtYnN0b3djcyhlbnZfaG9tZSwgY2hvbWUsIHNpemUpOwotICAgICAgICAgICAgaWYgKHIgIT0gKHNpemVfdCktMSAmJiByIDwgc2l6ZSkKLSAgICAgICAgICAgICAgICBob21lID0gZW52X2hvbWU7Ci0gICAgICAgIH0KLQotICAgIH0KLSAgICByZXR1cm4gaG9tZTsKLX0KLQotLyogQ3JlYXRlIF9fbWFpbl9fIG1vZHVsZSAqLwotCi1zdGF0aWMgdm9pZAotaW5pdG1haW4oUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApCi17Ci0gICAgUHlPYmplY3QgKm0sICpkLCAqbG9hZGVyOwotICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGUoIl9fbWFpbl9fIik7Ci0gICAgaWYgKG0gPT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiY2FuJ3QgY3JlYXRlIF9fbWFpbl9fIG1vZHVsZSIpOwotICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwotICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyhkLCAiX19idWlsdGluc19fIikgPT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqYmltb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImJ1aWx0aW5zIik7Ci0gICAgICAgIGlmIChiaW1vZCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gcmV0cmlldmUgYnVpbHRpbnMgbW9kdWxlIik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2J1aWx0aW5zX18iLCBiaW1vZCkgPCAwKSB7Ci0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBfX21haW5fXy5fX2J1aWx0aW5zX18iKTsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoYmltb2QpOwotICAgIH0KLSAgICAvKiBNYWluIGlzIGEgbGl0dGxlIHNwZWNpYWwgLSBpbXAuaXNfYnVpbHRpbigiX19tYWluX18iKSB3aWxsIHJldHVybgotICAgICAqIEZhbHNlLCBidXQgQnVpbHRpbkltcG9ydGVyIGlzIHN0aWxsIHRoZSBtb3N0IGFwcHJvcHJpYXRlIGluaXRpYWwKLSAgICAgKiBzZXR0aW5nIGZvciBpdHMgX19sb2FkZXJfXyBhdHRyaWJ1dGUuIEEgbW9yZSBzdWl0YWJsZSB2YWx1ZSB3aWxsCi0gICAgICogYmUgc2V0IGlmIF9fbWFpbl9fIGdldHMgZnVydGhlciBpbml0aWFsaXplZCBsYXRlciBpbiB0aGUgc3RhcnR1cAotICAgICAqIHByb2Nlc3MuCi0gICAgICovCi0gICAgbG9hZGVyID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fbG9hZGVyX18iKTsKLSAgICBpZiAobG9hZGVyID09IE5VTEwgfHwgbG9hZGVyID09IFB5X05vbmUpIHsKLSAgICAgICAgUHlPYmplY3QgKmxvYWRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW50ZXJwLT5pbXBvcnRsaWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCdWlsdGluSW1wb3J0ZXIiKTsKLSAgICAgICAgaWYgKGxvYWRlciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gcmV0cmlldmUgQnVpbHRpbkltcG9ydGVyIik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2xvYWRlcl9fIiwgbG9hZGVyKSA8IDApIHsKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIF9fbWFpbl9fLl9fbG9hZGVyX18iKTsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYobG9hZGVyKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBpbnQKLWluaXRmc2VuY29kaW5nKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwKQotewotICAgIFB5T2JqZWN0ICpjb2RlYzsKLQotICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID09IE5VTEwpCi0gICAgewotICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gZ2V0X2xvY2FsZV9lbmNvZGluZygpOwotICAgICAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9PSBOVUxMKQotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogVW5hYmxlIHRvIGdldCB0aGUgbG9jYWxlIGVuY29kaW5nIik7Ci0KLSAgICAgICAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDA7Ci0gICAgICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDE7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8qIHRoZSBlbmNvZGluZyBpcyBtYmNzLCB1dGYtOCBvciBhc2NpaSAqLwotICAgIGNvZGVjID0gX1B5Q29kZWNfTG9va3VwKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcpOwotICAgIGlmICghY29kZWMpIHsKLSAgICAgICAgLyogU3VjaCBlcnJvciBjYW4gb25seSBvY2N1cnMgaW4gY3JpdGljYWwgc2l0dWF0aW9uczogbm8gbW9yZQotICAgICAgICAgKiBtZW1vcnksIGltcG9ydCBhIG1vZHVsZSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBmYWlsZWQsCi0gICAgICAgICAqIGV0Yy4gKi8KLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBQeV9ERUNSRUYoY29kZWMpOwotICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDE7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLS8qIEltcG9ydCB0aGUgc2l0ZSBtb2R1bGUgKG5vdCBpbnRvIF9fbWFpbl9fIHRob3VnaCkgKi8KLQotc3RhdGljIHZvaWQKLWluaXRzaXRlKHZvaWQpCi17Ci0gICAgUHlPYmplY3QgKm07Ci0gICAgbSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgic2l0ZSIpOwotICAgIGlmIChtID09IE5VTEwpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gaW1wb3J0IHRoZSBzaXRlIG1vZHVsZVxuIik7Ci0gICAgICAgIFB5RXJyX1ByaW50KCk7Ci0gICAgICAgIFB5X0ZpbmFsaXplKCk7Ci0gICAgICAgIGV4aXQoMSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeV9ERUNSRUYobSk7Ci0gICAgfQotfQotCi0vKiBDaGVjayBpZiBhIGZpbGUgZGVzY3JpcHRvciBpcyB2YWxpZCBvciBub3QuCi0gICBSZXR1cm4gMCBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIGludmFsaWQsIHJldHVybiBub24temVybyBvdGhlcndpc2UuICovCi1zdGF0aWMgaW50Ci1pc192YWxpZF9mZChpbnQgZmQpCi17Ci0gICAgaW50IGZkMjsKLSAgICBpZiAoZmQgPCAwIHx8ICFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBmZDIgPSBkdXAoZmQpOwotICAgIGlmIChmZDIgPj0gMCkKLSAgICAgICAgY2xvc2UoZmQyKTsKLSAgICByZXR1cm4gZmQyID49IDA7Ci19Ci0KLS8qIHJldHVybnMgUHlfTm9uZSBpZiB0aGUgZmQgaXMgbm90IHZhbGlkICovCi1zdGF0aWMgUHlPYmplY3QqCi1jcmVhdGVfc3RkaW8oUHlPYmplY3QqIGlvLAotICAgIGludCBmZCwgaW50IHdyaXRlX21vZGUsIGNoYXIqIG5hbWUsCi0gICAgY2hhciogZW5jb2RpbmcsIGNoYXIqIGVycm9ycykKLXsKLSAgICBQeU9iamVjdCAqYnVmID0gTlVMTCwgKnN0cmVhbSA9IE5VTEwsICp0ZXh0ID0gTlVMTCwgKnJhdyA9IE5VTEwsICpyZXM7Ci0gICAgY29uc3QgY2hhciogbW9kZTsKLSAgICBjb25zdCBjaGFyKiBuZXdsaW5lOwotICAgIFB5T2JqZWN0ICpsaW5lX2J1ZmZlcmluZzsKLSAgICBpbnQgYnVmZmVyaW5nLCBpc2F0dHk7Ci0gICAgX1B5X0lERU5USUZJRVIob3Blbik7Ci0gICAgX1B5X0lERU5USUZJRVIoaXNhdHR5KTsKLSAgICBfUHlfSURFTlRJRklFUihUZXh0SU9XcmFwcGVyKTsKLSAgICBfUHlfSURFTlRJRklFUihtb2RlKTsKLQotICAgIGlmICghaXNfdmFsaWRfZmQoZmQpKQotICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLQotICAgIC8qIHN0ZGluIGlzIGFsd2F5cyBvcGVuZWQgaW4gYnVmZmVyZWQgbW9kZSwgZmlyc3QgYmVjYXVzZSBpdCBzaG91bGRuJ3QKLSAgICAgICBtYWtlIGEgZGlmZmVyZW5jZSBpbiBjb21tb24gdXNlIGNhc2VzLCBzZWNvbmQgYmVjYXVzZSBUZXh0SU9XcmFwcGVyCi0gICAgICAgZGVwZW5kcyBvbiB0aGUgcHJlc2VuY2Ugb2YgYSByZWFkMSgpIG1ldGhvZCB3aGljaCBvbmx5IGV4aXN0cyBvbgotICAgICAgIGJ1ZmZlcmVkIHN0cmVhbXMuCi0gICAgKi8KLSAgICBpZiAoUHlfVW5idWZmZXJlZFN0ZGlvRmxhZyAmJiB3cml0ZV9tb2RlKQotICAgICAgICBidWZmZXJpbmcgPSAwOwotICAgIGVsc2UKLSAgICAgICAgYnVmZmVyaW5nID0gLTE7Ci0gICAgaWYgKHdyaXRlX21vZGUpCi0gICAgICAgIG1vZGUgPSAid2IiOwotICAgIGVsc2UKLSAgICAgICAgbW9kZSA9ICJyYiI7Ci0gICAgYnVmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfb3BlbiwgImlzaU9PT2kiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQsIG1vZGUsIGJ1ZmZlcmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUsIFB5X05vbmUsIFB5X05vbmUsIDApOwotICAgIGlmIChidWYgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIGlmIChidWZmZXJpbmcpIHsKLSAgICAgICAgX1B5X0lERU5USUZJRVIocmF3KTsKLSAgICAgICAgcmF3ID0gX1B5T2JqZWN0X0dldEF0dHJJZChidWYsICZQeUlkX3Jhdyk7Ci0gICAgICAgIGlmIChyYXcgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICByYXcgPSBidWY7Ci0gICAgICAgIFB5X0lOQ1JFRihyYXcpOwotICAgIH0KLQotICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKLSAgICBpZiAodGV4dCA9PSBOVUxMIHx8IF9QeU9iamVjdF9TZXRBdHRySWQocmF3LCAmUHlJZF9uYW1lLCB0ZXh0KSA8IDApCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2lzYXR0eSwgIiIpOwotICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBpc2F0dHkgPSBQeU9iamVjdF9Jc1RydWUocmVzKTsKLSAgICBQeV9ERUNSRUYocmVzKTsKLSAgICBpZiAoaXNhdHR5ID09IC0xKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIGlmIChpc2F0dHkgfHwgUHlfVW5idWZmZXJlZFN0ZGlvRmxhZykKLSAgICAgICAgbGluZV9idWZmZXJpbmcgPSBQeV9UcnVlOwotICAgIGVsc2UKLSAgICAgICAgbGluZV9idWZmZXJpbmcgPSBQeV9GYWxzZTsKLQotICAgIFB5X0NMRUFSKHJhdyk7Ci0gICAgUHlfQ0xFQVIodGV4dCk7Ci0KLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgLyogc3lzLnN0ZGluOiBlbmFibGUgdW5pdmVyc2FsIG5ld2xpbmUgbW9kZSwgdHJhbnNsYXRlICJcclxuIiBhbmQgIlxyIgotICAgICAgIG5ld2xpbmVzIHRvICJcbiIuCi0gICAgICAgc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVycjogdHJhbnNsYXRlICJcbiIgdG8gIlxyXG4iLiAqLwotICAgIG5ld2xpbmUgPSBOVUxMOwotI2Vsc2UKLSAgICAvKiBzeXMuc3RkaW46IHNwbGl0IGxpbmVzIGF0ICJcbiIuCi0gICAgICAgc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVycjogZG9uJ3QgdHJhbnNsYXRlIG5ld2xpbmVzICh1c2UgIlxuIikuICovCi0gICAgbmV3bGluZSA9ICJcbiI7Ci0jZW5kaWYKLQotICAgIHN0cmVhbSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX1RleHRJT1dyYXBwZXIsICJPc3NzTyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIGVuY29kaW5nLCBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lLCBsaW5lX2J1ZmZlcmluZyk7Ci0gICAgUHlfQ0xFQVIoYnVmKTsKLSAgICBpZiAoc3RyZWFtID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBpZiAod3JpdGVfbW9kZSkKLSAgICAgICAgbW9kZSA9ICJ3IjsKLSAgICBlbHNlCi0gICAgICAgIG1vZGUgPSAiciI7Ci0gICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1vZGUpOwotICAgIGlmICghdGV4dCB8fCBfUHlPYmplY3RfU2V0QXR0cklkKHN0cmVhbSwgJlB5SWRfbW9kZSwgdGV4dCkgPCAwKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIFB5X0NMRUFSKHRleHQpOwotICAgIHJldHVybiBzdHJlYW07Ci0KLWVycm9yOgotICAgIFB5X1hERUNSRUYoYnVmKTsKLSAgICBQeV9YREVDUkVGKHN0cmVhbSk7Ci0gICAgUHlfWERFQ1JFRih0ZXh0KTsKLSAgICBQeV9YREVDUkVGKHJhdyk7Ci0KLSAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PU0Vycm9yKSAmJiAhaXNfdmFsaWRfZmQoZmQpKSB7Ci0gICAgICAgIC8qIElzc3VlICMyNDg5MTogdGhlIGZpbGUgZGVzY3JpcHRvciB3YXMgY2xvc2VkIGFmdGVyIHRoZSBmaXJzdAotICAgICAgICAgICBpc192YWxpZF9mZCgpIGNoZWNrIHdhcyBjYWxsZWQuIElnbm9yZSB0aGUgT1NFcnJvciBhbmQgc2V0IHRoZQotICAgICAgICAgICBzdHJlYW0gdG8gTm9uZS4gKi8KLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgUHlfUkVUVVJOX05PTkU7Ci0gICAgfQotICAgIHJldHVybiBOVUxMOwotfQotCi0vKiBJbml0aWFsaXplIHN5cy5zdGRpbiwgc3Rkb3V0LCBzdGRlcnIgYW5kIGJ1aWx0aW5zLm9wZW4gKi8KLXN0YXRpYyBpbnQKLWluaXRzdGRpbyh2b2lkKQotewotICAgIFB5T2JqZWN0ICppb21vZCA9IE5VTEwsICp3cmFwcGVyOwotICAgIFB5T2JqZWN0ICpiaW1vZCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm07Ci0gICAgUHlPYmplY3QgKnN0ZCA9IE5VTEw7Ci0gICAgaW50IHN0YXR1cyA9IDAsIGZkOwotICAgIFB5T2JqZWN0ICogZW5jb2RpbmdfYXR0cjsKLSAgICBjaGFyICpweXRob25pb2VuY29kaW5nID0gTlVMTCwgKmVuY29kaW5nLCAqZXJyb3JzOwotCi0gICAgLyogSGFjayB0byBhdm9pZCBhIG5hc3R5IHJlY3Vyc2lvbiBpc3N1ZSB3aGVuIFB5dGhvbiBpcyBpbnZva2VkCi0gICAgICAgaW4gdmVyYm9zZSBtb2RlOiBwcmUtaW1wb3J0IHRoZSBMYXRpbi0xIGFuZCBVVEYtOCBjb2RlY3MgKi8KLSAgICBpZiAoKG0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImVuY29kaW5ncy51dGZfOCIpKSA9PSBOVUxMKSB7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihtKTsKLQotICAgIGlmICghKG0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImVuY29kaW5ncy5sYXRpbl8xIikpKSB7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihtKTsKLQotICAgIGlmICghKGJpbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJidWlsdGlucyIpKSkgewotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQotICAgIGlmICghKGlvbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJpbyIpKSkgewotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBpZiAoISh3cmFwcGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpb21vZCwgIk9wZW5XcmFwcGVyIikpKSB7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgLyogU2V0IGJ1aWx0aW5zLm9wZW4gKi8KLSAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhiaW1vZCwgIm9wZW4iLCB3cmFwcGVyKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYod3JhcHBlcik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIFB5X0RFQ1JFRih3cmFwcGVyKTsKLQotICAgIGVuY29kaW5nID0gX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2Rpbmc7Ci0gICAgZXJyb3JzID0gX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzOwotICAgIGlmICghZW5jb2RpbmcgfHwgIWVycm9ycykgewotICAgICAgICBweXRob25pb2VuY29kaW5nID0gUHlfR0VURU5WKCJQWVRIT05JT0VOQ09ESU5HIik7Ci0gICAgICAgIGlmIChweXRob25pb2VuY29kaW5nKSB7Ci0gICAgICAgICAgICBjaGFyICplcnI7Ci0gICAgICAgICAgICBweXRob25pb2VuY29kaW5nID0gX1B5TWVtX1N0cmR1cChweXRob25pb2VuY29kaW5nKTsKLSAgICAgICAgICAgIGlmIChweXRob25pb2VuY29kaW5nID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlcnIgPSBzdHJjaHIocHl0aG9uaW9lbmNvZGluZywgJzonKTsKLSAgICAgICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAgICAgICAqZXJyID0gJ1wwJzsKLSAgICAgICAgICAgICAgICBlcnIrKzsKLSAgICAgICAgICAgICAgICBpZiAoKmVyciAmJiAhZXJyb3JzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IGVycjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKnB5dGhvbmlvZW5jb2RpbmcgJiYgIWVuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBweXRob25pb2VuY29kaW5nOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyogU2V0IHN5cy5zdGRpbiAqLwotICAgIGZkID0gZmlsZW5vKHN0ZGluKTsKLSAgICAvKiBVbmRlciBzb21lIGNvbmRpdGlvbnMgc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyIG1heSBub3QgYmUgY29ubmVjdGVkCi0gICAgICogYW5kIGZpbGVubygpIG1heSBwb2ludCB0byBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvci4gRm9yIGV4YW1wbGUKLSAgICAgKiBHVUkgYXBwcyBkb24ndCBoYXZlIHZhbGlkIHN0YW5kYXJkIHN0cmVhbXMgYnkgZGVmYXVsdC4KLSAgICAgKi8KLSAgICBzdGQgPSBjcmVhdGVfc3RkaW8oaW9tb2QsIGZkLCAwLCAiPHN0ZGluPiIsIGVuY29kaW5nLCBlcnJvcnMpOwotICAgIGlmIChzdGQgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBQeVN5c19TZXRPYmplY3QoIl9fc3RkaW5fXyIsIHN0ZCk7Ci0gICAgX1B5U3lzX1NldE9iamVjdElkKCZQeUlkX3N0ZGluLCBzdGQpOwotICAgIFB5X0RFQ1JFRihzdGQpOwotCi0gICAgLyogU2V0IHN5cy5zdGRvdXQgKi8KLSAgICBmZCA9IGZpbGVubyhzdGRvdXQpOwotICAgIHN0ZCA9IGNyZWF0ZV9zdGRpbyhpb21vZCwgZmQsIDEsICI8c3Rkb3V0PiIsIGVuY29kaW5nLCBlcnJvcnMpOwotICAgIGlmIChzdGQgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBQeVN5c19TZXRPYmplY3QoIl9fc3Rkb3V0X18iLCBzdGQpOwotICAgIF9QeVN5c19TZXRPYmplY3RJZCgmUHlJZF9zdGRvdXQsIHN0ZCk7Ci0gICAgUHlfREVDUkVGKHN0ZCk7Ci0KLSNpZiAxIC8qIERpc2FibGUgdGhpcyBpZiB5b3UgaGF2ZSB0cm91YmxlIGRlYnVnZ2luZyBib290c3RyYXAgc3R1ZmYgKi8KLSAgICAvKiBTZXQgc3lzLnN0ZGVyciwgcmVwbGFjZXMgdGhlIHByZWxpbWluYXJ5IHN0ZGVyciAqLwotICAgIGZkID0gZmlsZW5vKHN0ZGVycik7Ci0gICAgc3RkID0gY3JlYXRlX3N0ZGlvKGlvbW9kLCBmZCwgMSwgIjxzdGRlcnI+IiwgZW5jb2RpbmcsICJiYWNrc2xhc2hyZXBsYWNlIik7Ci0gICAgaWYgKHN0ZCA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgLyogU2FtZSBhcyBoYWNrIGFib3ZlLCBwcmUtaW1wb3J0IHN0ZGVycidzIGNvZGVjIHRvIGF2b2lkIHJlY3Vyc2lvbgotICAgICAgIHdoZW4gaW1wb3J0LmMgdHJpZXMgdG8gd3JpdGUgdG8gc3RkZXJyIGluIHZlcmJvc2UgbW9kZS4gKi8KLSAgICBlbmNvZGluZ19hdHRyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdGQsICJlbmNvZGluZyIpOwotICAgIGlmIChlbmNvZGluZ19hdHRyICE9IE5VTEwpIHsKLSAgICAgICAgY29uc3QgY2hhciAqIHN0ZF9lbmNvZGluZzsKLSAgICAgICAgc3RkX2VuY29kaW5nID0gX1B5VW5pY29kZV9Bc1N0cmluZyhlbmNvZGluZ19hdHRyKTsKLSAgICAgICAgaWYgKHN0ZF9lbmNvZGluZyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqY29kZWNfaW5mbyA9IF9QeUNvZGVjX0xvb2t1cChzdGRfZW5jb2RpbmcpOwotICAgICAgICAgICAgUHlfWERFQ1JFRihjb2RlY19pbmZvKTsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoZW5jb2RpbmdfYXR0cik7Ci0gICAgfQotICAgIFB5RXJyX0NsZWFyKCk7ICAvKiBOb3QgYSBmYXRhbCBlcnJvciBpZiBjb2RlYyBpc24ndCBhdmFpbGFibGUgKi8KLQotICAgIGlmIChQeVN5c19TZXRPYmplY3QoIl9fc3RkZXJyX18iLCBzdGQpIDwgMCkgewotICAgICAgICBQeV9ERUNSRUYoc3RkKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgaWYgKF9QeVN5c19TZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIsIHN0ZCkgPCAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdGQpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBQeV9ERUNSRUYoc3RkKTsKLSNlbmRpZgotCi0gICAgaWYgKDApIHsKLSAgZXJyb3I6Ci0gICAgICAgIHN0YXR1cyA9IC0xOwotICAgIH0KLQotICAgIC8qIFdlIHdvbid0IG5lZWQgdGhlbSBhbnltb3JlLiAqLwotICAgIGlmIChfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZykgewotICAgICAgICBQeU1lbV9SYXdGcmVlKF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nKTsKLSAgICAgICAgX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcgPSBOVUxMOwotICAgIH0KLSAgICBpZiAoX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzKSB7Ci0gICAgICAgIFB5TWVtX1Jhd0ZyZWUoX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzKTsKLSAgICAgICAgX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzID0gTlVMTDsKLSAgICB9Ci0gICAgUHlNZW1fRnJlZShweXRob25pb2VuY29kaW5nKTsKLSAgICBQeV9YREVDUkVGKGJpbW9kKTsKLSAgICBQeV9YREVDUkVGKGlvbW9kKTsKLSAgICByZXR1cm4gc3RhdHVzOwotfQogCiAvKiBQYXJzZSBpbnB1dCBmcm9tIGEgZmlsZSBhbmQgZXhlY3V0ZSBpdCAqLwogCkBAIC0xMzE3LDcgKzExMCw3IEBACiAgICAgZXJyID0gLTE7CiAgICAgZm9yICg7OykgewogICAgICAgICByZXQgPSBQeVJ1bl9JbnRlcmFjdGl2ZU9uZU9iamVjdChmcCwgZmlsZW5hbWUsIGZsYWdzKTsKLSAgICAgICAgUFJJTlRfVE9UQUxfUkVGUygpOworICAgICAgICBfUFlfREVCVUdfUFJJTlRfVE9UQUxfUkVGUygpOwogICAgICAgICBpZiAocmV0ID09IEVfRU9GKSB7CiAgICAgICAgICAgICBlcnIgPSAwOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDcyLDcgKzI2NSw3IEBACiBzdGF0aWMgaW50CiBtYXliZV9weWNfZmlsZShGSUxFICpmcCwgY29uc3QgY2hhciogZmlsZW5hbWUsIGNvbnN0IGNoYXIqIGV4dCwgaW50IGNsb3NlaXQpCiB7Ci0gICAgaWYgKHN0cmNtcChleHQsICIucHljIikgPT0gMCB8fCBzdHJjbXAoZXh0LCAiLnB5byIpID09IDApCisgICAgaWYgKHN0cmNtcChleHQsICIucHljIikgPT0gMCkKICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAvKiBPbmx5IGxvb2sgaW50byB0aGUgZmlsZSBpZiB3ZSBhcmUgYWxsb3dlZCB0byBjbG9zZSBpdCwgc2luY2UKQEAgLTE1MTEsNyArMzA0LDcgQEAKIHsKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lX29iaiwgKmxvYWRlcl90eXBlLCAqbG9hZGVyOworICAgIFB5T2JqZWN0ICpmaWxlbmFtZV9vYmosICpib290c3RyYXAsICpsb2FkZXJfdHlwZSA9IE5VTEwsICpsb2FkZXI7CiAgICAgaW50IHJlc3VsdCA9IDA7CiAKICAgICBmaWxlbmFtZV9vYmogPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGZpbGVuYW1lKTsKQEAgLTE1MjAsNyArMzEzLDEyIEBACiAgICAgLyogR2V0IGN1cnJlbnQgdGhyZWFkIHN0YXRlIGFuZCBpbnRlcnByZXRlciBwb2ludGVyICovCiAgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKICAgICBpbnRlcnAgPSB0c3RhdGUtPmludGVycDsKLSAgICBsb2FkZXJfdHlwZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW50ZXJwLT5pbXBvcnRsaWIsIGxvYWRlcl9uYW1lKTsKKyAgICBib290c3RyYXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGludGVycC0+aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9ib290c3RyYXBfZXh0ZXJuYWwiKTsKKyAgICBpZiAoYm9vdHN0cmFwICE9IE5VTEwpIHsKKyAgICAgICAgbG9hZGVyX3R5cGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGJvb3RzdHJhcCwgbG9hZGVyX25hbWUpOworICAgICAgICBQeV9ERUNSRUYoYm9vdHN0cmFwKTsKKyAgICB9CiAgICAgaWYgKGxvYWRlcl90eXBlID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGZpbGVuYW1lX29iaik7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTE1NzgsOSArMzc2LDYgQEAKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicHl0aG9uOiBDYW4ndCByZW9wZW4gLnB5YyBmaWxlXG4iKTsKICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgfQotICAgICAgICAvKiBUdXJuIG9uIG9wdGltaXphdGlvbiBpZiBhIC5weW8gZmlsZSBpcyBnaXZlbiAqLwotICAgICAgICBpZiAoc3RyY21wKGV4dCwgIi5weW8iKSA9PSAwKQotICAgICAgICAgICAgUHlfT3B0aW1pemVGbGFnID0gMTsKIAogICAgICAgICBpZiAoc2V0X21haW5fbG9hZGVyKGQsIGZpbGVuYW1lLCAiU291cmNlbGVzc0ZpbGVMb2FkZXIiKSA8IDApIHsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicHl0aG9uOiBmYWlsZWQgdG8gc2V0IF9fbWFpbl9fLl9fbG9hZGVyX19cbiIpOwpAQCAtMTcyNCw3ICs1MTksNyBAQAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAob2Zmc2V0ID49IDApIHsKLSAgICAgICAgaWYgKG9mZnNldCA+IDAgJiYgb2Zmc2V0ID09IHN0cmxlbih0ZXh0KSAmJiB0ZXh0W29mZnNldCAtIDFdID09ICdcbicpCisgICAgICAgIGlmIChvZmZzZXQgPiAwICYmIChzaXplX3Qpb2Zmc2V0ID09IHN0cmxlbih0ZXh0KSAmJiB0ZXh0W29mZnNldCAtIDFdID09ICdcbicpCiAgICAgICAgICAgICBvZmZzZXQtLTsKICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgbmwgPSBzdHJjaHIodGV4dCwgJ1xuJyk7CkBAIC0yMTg4LDEzICs5ODMsMTcgQEAKIAogICAgIG1hZ2ljID0gUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApOwogICAgIGlmIChtYWdpYyAhPSBQeUltcG9ydF9HZXRNYWdpY051bWJlcigpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgIkJhZCBtYWdpYyBudW1iZXIgaW4gLnB5YyBmaWxlIik7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICJCYWQgbWFnaWMgbnVtYmVyIGluIC5weWMgZmlsZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgLyogU2tpcCBtdGltZSBhbmQgc2l6ZSAqLwogICAgICh2b2lkKSBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZShmcCk7CiAgICAgKHZvaWQpIFB5TWFyc2hhbF9SZWFkTG9uZ0Zyb21GaWxlKGZwKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICB2ID0gUHlNYXJzaGFsX1JlYWRMYXN0T2JqZWN0RnJvbUZpbGUoZnApOwogICAgIGlmICh2ID09IE5VTEwgfHwgIVB5Q29kZV9DaGVjayh2KSkgewogICAgICAgICBQeV9YREVDUkVGKHYpOwpAQCAtMjU4MiwyNzYgKzEzODEsNiBAQAogICAgIH0KIH0KIAotLyogUHJpbnQgdGhlIGN1cnJlbnQgZXhjZXB0aW9uIChpZiBhbiBleGNlcHRpb24gaXMgc2V0KSB3aXRoIGl0cyB0cmFjZWJhY2ssCi0gKiBvciBkaXNwbGF5IHRoZSBjdXJyZW50IFB5dGhvbiBzdGFjay4KLSAqCi0gKiBEb24ndCBjYWxsIFB5RXJyX1ByaW50RXgoKSBhbmQgdGhlIGV4Y2VwdCBob29rLCBiZWNhdXNlIFB5X0ZhdGFsRXJyb3IoKSBpcwotICogY2FsbGVkIG9uIGNhdGFzdHJvcGhpYyBjYXNlcy4gKi8KLQotc3RhdGljIHZvaWQKLV9QeV9QcmludEZhdGFsRXJyb3IoaW50IGZkKQotewotICAgIFB5T2JqZWN0ICpmZXJyLCAqcmVzOwotICAgIFB5T2JqZWN0ICpleGNlcHRpb24sICp2LCAqdGI7Ci0gICAgaW50IGhhc190YjsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7Ci0KLSAgICBQeUVycl9GZXRjaCgmZXhjZXB0aW9uLCAmdiwgJnRiKTsKLSAgICBpZiAoZXhjZXB0aW9uID09IE5VTEwpIHsKLSAgICAgICAgLyogTm8gY3VycmVudCBleGNlcHRpb24gKi8KLSAgICAgICAgZ290byBkaXNwbGF5X3N0YWNrOwotICAgIH0KLQotICAgIGZlcnIgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyKTsKLSAgICBpZiAoZmVyciA9PSBOVUxMIHx8IGZlcnIgPT0gUHlfTm9uZSkgewotICAgICAgICAvKiBzeXMuc3RkZXJyIGlzIG5vdCBzZXQgeWV0IG9yIHNldCB0byBOb25lLAotICAgICAgICAgICBubyBuZWVkIHRvIHRyeSB0byBkaXNwbGF5IHRoZSBleGNlcHRpb24gKi8KLSAgICAgICAgZ290byBkaXNwbGF5X3N0YWNrOwotICAgIH0KLQotICAgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigmZXhjZXB0aW9uLCAmdiwgJnRiKTsKLSAgICBpZiAodGIgPT0gTlVMTCkgewotICAgICAgICB0YiA9IFB5X05vbmU7Ci0gICAgICAgIFB5X0lOQ1JFRih0Yik7Ci0gICAgfQotICAgIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjayh2LCB0Yik7Ci0gICAgaWYgKGV4Y2VwdGlvbiA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigpIGZhaWxlZCAqLwotICAgICAgICBnb3RvIGRpc3BsYXlfc3RhY2s7Ci0gICAgfQotCi0gICAgaGFzX3RiID0gKHRiICE9IE5VTEwgJiYgdGIgIT0gUHlfTm9uZSk7Ci0gICAgUHlFcnJfRGlzcGxheShleGNlcHRpb24sIHYsIHRiKTsKLSAgICBQeV9YREVDUkVGKGV4Y2VwdGlvbik7Ci0gICAgUHlfWERFQ1JFRih2KTsKLSAgICBQeV9YREVDUkVGKHRiKTsKLQotICAgIC8qIHN5cy5zdGRlcnIgbWF5IGJlIGJ1ZmZlcmVkOiBjYWxsIHN5cy5zdGRlcnIuZmx1c2goKSAqLwotICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsICIiKTsKLSAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgZWxzZQotICAgICAgICBQeV9ERUNSRUYocmVzKTsKLQotICAgIGlmIChoYXNfdGIpCi0gICAgICAgIHJldHVybjsKLQotZGlzcGxheV9zdGFjazoKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIC8qIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkgd29ya3MgZXZlbiBpZiB0aGUgR0lMIHdhcyByZWxlYXNlZCAqLwotICAgIHRzdGF0ZSA9IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCk7Ci0jZWxzZQotICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7Ci0jZW5kaWYKLSAgICBpZiAodHN0YXRlID09IE5VTEwpIHsKLSAgICAgICAgLyogX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKCkgcmVxdWlyZXMgdGhlIHRocmVhZCBzdGF0ZSB0byBkaXNwbGF5Ci0gICAgICAgICAqIGZyYW1lcyAqLwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKLSAgICBmZmx1c2goc3RkZXJyKTsKLQotICAgIC8qIGRpc3BsYXkgdGhlIGN1cnJlbnQgUHl0aG9uIHN0YWNrICovCi0gICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCB0c3RhdGUtPmludGVycCwgdHN0YXRlKTsKLX0KLQotLyogUHJpbnQgZmF0YWwgZXJyb3IgbWVzc2FnZSBhbmQgYWJvcnQgKi8KLQotdm9pZAotUHlfRmF0YWxFcnJvcihjb25zdCBjaGFyICptc2cpCi17Ci0gICAgY29uc3QgaW50IGZkID0gZmlsZW5vKHN0ZGVycik7Ci0gICAgc3RhdGljIGludCByZWVudHJhbnQgPSAwOwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBzaXplX3QgbGVuOwotICAgIFdDSEFSKiBidWZmZXI7Ci0gICAgc2l6ZV90IGk7Ci0jZW5kaWYKLQotICAgIGlmIChyZWVudHJhbnQpIHsKLSAgICAgICAgLyogUHlfRmF0YWxFcnJvcigpIGNhdXNlZCBhIHNlY29uZCBmYXRhbCBlcnJvci4KLSAgICAgICAgICAgRXhhbXBsZTogZmx1c2hfc3RkX2ZpbGVzKCkgcmFpc2VzIGEgcmVjdXJzaW9uIGVycm9yLiAqLwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQotICAgIHJlZW50cmFudCA9IDE7Ci0KLSAgICBmcHJpbnRmKHN0ZGVyciwgIkZhdGFsIFB5dGhvbiBlcnJvcjogJXNcbiIsIG1zZyk7Ci0gICAgZmZsdXNoKHN0ZGVycik7IC8qIGl0IGhlbHBzIGluIFdpbmRvd3MgZGVidWcgYnVpbGQgKi8KLQotICAgIC8qIFByaW50IHRoZSBleGNlcHRpb24gKGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQpIHdpdGggaXRzIHRyYWNlYmFjaywKLSAgICAgKiBvciBkaXNwbGF5IHRoZSBjdXJyZW50IFB5dGhvbiBzdGFjay4gKi8KLSAgICBfUHlfUHJpbnRGYXRhbEVycm9yKGZkKTsKLQotICAgIC8qIEZsdXNoIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgKi8KLSAgICBmbHVzaF9zdGRfZmlsZXMoKTsKLQotICAgIC8qIFRoZSBtYWluIHB1cnBvc2Ugb2YgZmF1bHRoYW5kbGVyIGlzIHRvIGRpc3BsYXkgdGhlIHRyYWNlYmFjay4gV2UgYWxyZWFkeQotICAgICAqIGRpZCBvdXIgYmVzdCB0byBkaXNwbGF5IGl0LiBTbyBmYXVsdGhhbmRsZXIgY2FuIG5vdyBiZSBkaXNhYmxlZC4KLSAgICAgKiAoRG9uJ3QgdHJpZ2dlciBpdCBvbiBhYm9ydCgpLikgKi8KLSAgICBfUHlGYXVsdGhhbmRsZXJfRmluaSgpOwotCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIGxlbiA9IHN0cmxlbihtc2cpOwotCi0gICAgLyogQ29udmVydCB0aGUgbWVzc2FnZSB0byB3Y2hhcl90LiBUaGlzIHVzZXMgYSBzaW1wbGUgb25lLXRvLW9uZQotICAgIGNvbnZlcnNpb24sIGFzc3VtaW5nIHRoYXQgdGhlIHRoaXMgZXJyb3IgbWVzc2FnZSBhY3R1YWxseSB1c2VzIEFTQ0lJCi0gICAgb25seS4gSWYgdGhpcyBjZWFzZXMgdG8gYmUgdHJ1ZSwgd2Ugd2lsbCBoYXZlIHRvIGNvbnZlcnQuICovCi0gICAgYnVmZmVyID0gYWxsb2NhKCAobGVuKzEpICogKHNpemVvZiAqYnVmZmVyKSk7Ci0gICAgZm9yKCBpPTA7IGk8PWxlbjsgKytpKQotICAgICAgICBidWZmZXJbaV0gPSBtc2dbaV07Ci0gICAgT3V0cHV0RGVidWdTdHJpbmdXKEwiRmF0YWwgUHl0aG9uIGVycm9yOiAiKTsKLSAgICBPdXRwdXREZWJ1Z1N0cmluZ1coYnVmZmVyKTsKLSAgICBPdXRwdXREZWJ1Z1N0cmluZ1coTCJcbiIpOwotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KLQotZXhpdDoKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoX0RFQlVHKQotICAgIERlYnVnQnJlYWsoKTsKLSNlbmRpZgotICAgIGFib3J0KCk7Ci19Ci0KLS8qIENsZWFuIHVwIGFuZCBleGl0ICovCi0KLSNpZmRlZiBXSVRIX1RIUkVBRAotI2luY2x1ZGUgInB5dGhyZWFkLmgiCi0jZW5kaWYKLQotc3RhdGljIHZvaWQgKCpweWV4aXRmdW5jKSh2b2lkKSA9IE5VTEw7Ci0vKiBGb3IgdGhlIGF0ZXhpdCBtb2R1bGUuICovCi12b2lkIF9QeV9QeUF0RXhpdCh2b2lkICgqZnVuYykodm9pZCkpCi17Ci0gICAgcHlleGl0ZnVuYyA9IGZ1bmM7Ci19Ci0KLXN0YXRpYyB2b2lkCi1jYWxsX3B5X2V4aXRmdW5jcyh2b2lkKQotewotICAgIGlmIChweWV4aXRmdW5jID09IE5VTEwpCi0gICAgICAgIHJldHVybjsKLQotICAgICgqcHlleGl0ZnVuYykoKTsKLSAgICBQeUVycl9DbGVhcigpOwotfQotCi0vKiBXYWl0IHVudGlsIHRocmVhZGluZy5fc2h1dGRvd24gY29tcGxldGVzLCBwcm92aWRlZAotICAgdGhlIHRocmVhZGluZyBtb2R1bGUgd2FzIGltcG9ydGVkIGluIHRoZSBmaXJzdCBwbGFjZS4KLSAgIFRoZSBzaHV0ZG93biByb3V0aW5lIHdpbGwgd2FpdCB1bnRpbCBhbGwgbm9uLWRhZW1vbgotICAgInRocmVhZGluZyIgdGhyZWFkcyBoYXZlIGNvbXBsZXRlZC4gKi8KLXN0YXRpYyB2b2lkCi13YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24odm9pZCkKLXsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIF9QeV9JREVOVElGSUVSKF9zaHV0ZG93bik7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwotICAgIFB5T2JqZWN0ICp0aHJlYWRpbmcgPSBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZyh0c3RhdGUtPmludGVycC0+bW9kdWxlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRocmVhZGluZyIpOwotICAgIGlmICh0aHJlYWRpbmcgPT0gTlVMTCkgewotICAgICAgICAvKiB0aHJlYWRpbmcgbm90IGltcG9ydGVkICovCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aHJlYWRpbmcsICZQeUlkX19zaHV0ZG93biwgIiIpOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUodGhyZWFkaW5nKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgIH0KLSAgICBQeV9ERUNSRUYodGhyZWFkaW5nKTsKLSNlbmRpZgotfQotCi0jZGVmaW5lIE5FWElURlVOQ1MgMzIKLXN0YXRpYyB2b2lkICgqZXhpdGZ1bmNzW05FWElURlVOQ1NdKSh2b2lkKTsKLXN0YXRpYyBpbnQgbmV4aXRmdW5jcyA9IDA7Ci0KLWludCBQeV9BdEV4aXQodm9pZCAoKmZ1bmMpKHZvaWQpKQotewotICAgIGlmIChuZXhpdGZ1bmNzID49IE5FWElURlVOQ1MpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBleGl0ZnVuY3NbbmV4aXRmdW5jcysrXSA9IGZ1bmM7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB2b2lkCi1jYWxsX2xsX2V4aXRmdW5jcyh2b2lkKQotewotICAgIHdoaWxlIChuZXhpdGZ1bmNzID4gMCkKLSAgICAgICAgKCpleGl0ZnVuY3NbLS1uZXhpdGZ1bmNzXSkoKTsKLQotICAgIGZmbHVzaChzdGRvdXQpOwotICAgIGZmbHVzaChzdGRlcnIpOwotfQotCi12b2lkCi1QeV9FeGl0KGludCBzdHMpCi17Ci0gICAgUHlfRmluYWxpemUoKTsKLQotICAgIGV4aXQoc3RzKTsKLX0KLQotc3RhdGljIHZvaWQKLWluaXRzaWdzKHZvaWQpCi17Ci0jaWZkZWYgU0lHUElQRQotICAgIFB5T1Nfc2V0c2lnKFNJR1BJUEUsIFNJR19JR04pOwotI2VuZGlmCi0jaWZkZWYgU0lHWEZaCi0gICAgUHlPU19zZXRzaWcoU0lHWEZaLCBTSUdfSUdOKTsKLSNlbmRpZgotI2lmZGVmIFNJR1hGU1oKLSAgICBQeU9TX3NldHNpZyhTSUdYRlNaLCBTSUdfSUdOKTsKLSNlbmRpZgotICAgIFB5T1NfSW5pdEludGVycnVwdHMoKTsgLyogTWF5IGltcGx5IGluaXRzaWduYWwoKSAqLwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBzaWduYWwiKTsKLSAgICB9Ci19Ci0KLQotLyogUmVzdG9yZSBzaWduYWxzIHRoYXQgdGhlIGludGVycHJldGVyIGhhcyBjYWxsZWQgU0lHX0lHTiBvbiB0byBTSUdfREZMLgotICoKLSAqIEFsbCBvZiB0aGUgY29kZSBpbiB0aGlzIGZ1bmN0aW9uIG11c3Qgb25seSB1c2UgYXN5bmMtc2lnbmFsLXNhZmUgZnVuY3Rpb25zLAotICogbGlzdGVkIGF0IGBtYW4gNyBzaWduYWxgIG9yCi0gKiBodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvZnVuY3Rpb25zL3hzaF9jaGFwMDJfMDQuaHRtbC4KLSAqLwotdm9pZAotX1B5X1Jlc3RvcmVTaWduYWxzKHZvaWQpCi17Ci0jaWZkZWYgU0lHUElQRQotICAgIFB5T1Nfc2V0c2lnKFNJR1BJUEUsIFNJR19ERkwpOwotI2VuZGlmCi0jaWZkZWYgU0lHWEZaCi0gICAgUHlPU19zZXRzaWcoU0lHWEZaLCBTSUdfREZMKTsKLSNlbmRpZgotI2lmZGVmIFNJR1hGU1oKLSAgICBQeU9TX3NldHNpZyhTSUdYRlNaLCBTSUdfREZMKTsKLSNlbmRpZgotfQotCi0KLS8qCi0gKiBUaGUgZmlsZSBkZXNjcmlwdG9yIGZkIGlzIGNvbnNpZGVyZWQgYGBpbnRlcmFjdGl2ZScnIGlmIGVpdGhlcgotICogICBhKSBpc2F0dHkoZmQpIGlzIFRSVUUsIG9yCi0gKiAgIGIpIHRoZSAtaSBmbGFnIHdhcyBnaXZlbiwgYW5kIHRoZSBmaWxlbmFtZSBhc3NvY2lhdGVkIHdpdGgKLSAqICAgICAgdGhlIGRlc2NyaXB0b3IgaXMgTlVMTCBvciAiPHN0ZGluPiIgb3IgIj8/PyIuCi0gKi8KLWludAotUHlfRmRJc0ludGVyYWN0aXZlKEZJTEUgKmZwLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKLXsKLSAgICBpZiAoaXNhdHR5KChpbnQpZmlsZW5vKGZwKSkpCi0gICAgICAgIHJldHVybiAxOwotICAgIGlmICghUHlfSW50ZXJhY3RpdmVGbGFnKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gKGZpbGVuYW1lID09IE5VTEwpIHx8Ci0gICAgICAgICAgIChzdHJjbXAoZmlsZW5hbWUsICI8c3RkaW4+IikgPT0gMCkgfHwKLSAgICAgICAgICAgKHN0cmNtcChmaWxlbmFtZSwgIj8/PyIpID09IDApOwotfQotCiAKICNpZiBkZWZpbmVkKFVTRV9TVEFDS0NIRUNLKQogI2lmIGRlZmluZWQoV0lOMzIpICYmIGRlZmluZWQoX01TQ19WRVIpCkBAIC0yODkwLDczICsxNDE5LDYgQEAKIAogI2VuZGlmIC8qIFVTRV9TVEFDS0NIRUNLICovCiAKLQotLyogV3JhcHBlcnMgYXJvdW5kIHNpZ2FjdGlvbigpIG9yIHNpZ25hbCgpLiAqLwotCi1QeU9TX3NpZ2hhbmRsZXJfdAotUHlPU19nZXRzaWcoaW50IHNpZykKLXsKLSNpZmRlZiBIQVZFX1NJR0FDVElPTgotICAgIHN0cnVjdCBzaWdhY3Rpb24gY29udGV4dDsKLSAgICBpZiAoc2lnYWN0aW9uKHNpZywgTlVMTCwgJmNvbnRleHQpID09IC0xKQotICAgICAgICByZXR1cm4gU0lHX0VSUjsKLSAgICByZXR1cm4gY29udGV4dC5zYV9oYW5kbGVyOwotI2Vsc2UKLSAgICBQeU9TX3NpZ2hhbmRsZXJfdCBoYW5kbGVyOwotLyogU3BlY2lhbCBzaWduYWwgaGFuZGxpbmcgZm9yIHRoZSBzZWN1cmUgQ1JUIGluIFZpc3VhbCBTdHVkaW8gMjAwNSAqLwotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE0MDAKLSAgICBzd2l0Y2ggKHNpZykgewotICAgIC8qIE9ubHkgdGhlc2Ugc2lnbmFscyBhcmUgdmFsaWQgKi8KLSAgICBjYXNlIFNJR0lOVDoKLSAgICBjYXNlIFNJR0lMTDoKLSAgICBjYXNlIFNJR0ZQRToKLSAgICBjYXNlIFNJR1NFR1Y6Ci0gICAgY2FzZSBTSUdURVJNOgotICAgIGNhc2UgU0lHQlJFQUs6Ci0gICAgY2FzZSBTSUdBQlJUOgotICAgICAgICBicmVhazsKLSAgICAvKiBEb24ndCBjYWxsIHNpZ25hbCgpIHdpdGggb3RoZXIgdmFsdWVzIG9yIGl0IHdpbGwgYXNzZXJ0ICovCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFNJR19FUlI7Ci0gICAgfQotI2VuZGlmIC8qIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgKi8KLSAgICBoYW5kbGVyID0gc2lnbmFsKHNpZywgU0lHX0lHTik7Ci0gICAgaWYgKGhhbmRsZXIgIT0gU0lHX0VSUikKLSAgICAgICAgc2lnbmFsKHNpZywgaGFuZGxlcik7Ci0gICAgcmV0dXJuIGhhbmRsZXI7Ci0jZW5kaWYKLX0KLQotLyoKLSAqIEFsbCBvZiB0aGUgY29kZSBpbiB0aGlzIGZ1bmN0aW9uIG11c3Qgb25seSB1c2UgYXN5bmMtc2lnbmFsLXNhZmUgZnVuY3Rpb25zLAotICogbGlzdGVkIGF0IGBtYW4gNyBzaWduYWxgIG9yCi0gKiBodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvZnVuY3Rpb25zL3hzaF9jaGFwMDJfMDQuaHRtbC4KLSAqLwotUHlPU19zaWdoYW5kbGVyX3QKLVB5T1Nfc2V0c2lnKGludCBzaWcsIFB5T1Nfc2lnaGFuZGxlcl90IGhhbmRsZXIpCi17Ci0jaWZkZWYgSEFWRV9TSUdBQ1RJT04KLSAgICAvKiBTb21lIGNvZGUgaW4gTW9kdWxlcy9zaWduYWxtb2R1bGUuYyBkZXBlbmRzIG9uIHNpZ2FjdGlvbigpIGJlaW5nCi0gICAgICogdXNlZCBoZXJlIGlmIEhBVkVfU0lHQUNUSU9OIGlzIGRlZmluZWQuICBGaXggdGhhdCBpZiB0aGlzIGNvZGUKLSAgICAgKiBjaGFuZ2VzIHRvIGludmFsaWRhdGUgdGhhdCBhc3N1bXB0aW9uLgotICAgICAqLwotICAgIHN0cnVjdCBzaWdhY3Rpb24gY29udGV4dCwgb2NvbnRleHQ7Ci0gICAgY29udGV4dC5zYV9oYW5kbGVyID0gaGFuZGxlcjsKLSAgICBzaWdlbXB0eXNldCgmY29udGV4dC5zYV9tYXNrKTsKLSAgICBjb250ZXh0LnNhX2ZsYWdzID0gMDsKLSAgICBpZiAoc2lnYWN0aW9uKHNpZywgJmNvbnRleHQsICZvY29udGV4dCkgPT0gLTEpCi0gICAgICAgIHJldHVybiBTSUdfRVJSOwotICAgIHJldHVybiBvY29udGV4dC5zYV9oYW5kbGVyOwotI2Vsc2UKLSAgICBQeU9TX3NpZ2hhbmRsZXJfdCBvbGRoYW5kbGVyOwotICAgIG9sZGhhbmRsZXIgPSBzaWduYWwoc2lnLCBoYW5kbGVyKTsKLSNpZmRlZiBIQVZFX1NJR0lOVEVSUlVQVAotICAgIHNpZ2ludGVycnVwdChzaWcsIDEpOwotI2VuZGlmCi0gICAgcmV0dXJuIG9sZGhhbmRsZXI7Ci0jZW5kaWYKLX0KLQogLyogRGVwcmVjYXRlZCBDIEFQSSBmdW5jdGlvbnMgc3RpbGwgcHJvdmlkZWQgZm9yIGJpbmFyeSBjb21wYXRpYmxpdHkgKi8KIAogI3VuZGVmIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5dGltZS5jIGIvUHl0aG9uL3B5dGltZS5jCmluZGV4IGRlNmE0MWYuLjdmNjU4MjQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXRpbWUuYworKysgYi9QeXRob24vcHl0aW1lLmMKQEAgLTMsMTE1ICszLDI1IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgZGVmaW5lZChIQVZFX0dFVFRJTUVPRkRBWSkgJiYgZGVmaW5lZChIQVZFX0ZUSU1FKQotICAvKgotICAgKiBfUHlUaW1lX2dldHRpbWVvZmRheSBmYWxscyBiYWNrIHRvIGZ0aW1lIHdoZW4gZ2V0dHRpbWVvZmRheSBmYWlscyBiZWNhdXNlIHRoZSBsYXR0ZXIKLSAgICogbWlnaHQgZmFpbCBvbiBzb21lIHBsYXRmb3Jtcy4gVGhpcyBmYWxsYmFjayBpcyB1bndhbnRlZCBvbiBNYWNPU1ggYmVjYXVzZQotICAgKiB0aGF0IG1ha2VzIGl0IGltcG9zc2libGUgdG8gdXNlIGEgYmluYXJ5IGJ1aWxkIG9uIE9TWCAxMC40IG9uIGVhcmxpZXIKLSAgICogcmVsZWFzZXMgb2YgdGhlIE9TLiBUaGVyZWZvcmUgY2xhaW0gd2UgZG9uJ3Qgc3VwcG9ydCBmdGltZS4KLSAgICovCi0jIHVuZGVmIEhBVkVfRlRJTUUKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpbmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPiAgIC8qIG1hY2hfYWJzb2x1dGVfdGltZSgpLCBtYWNoX3RpbWViYXNlX2luZm8oKSAqLwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKEhBVkVfRlRJTUUpICYmICFkZWZpbmVkKE1TX1dJTkRPV1MpCi0jaW5jbHVkZSA8c3lzL3RpbWViLmg+Ci1leHRlcm4gaW50IGZ0aW1lKHN0cnVjdCB0aW1lYiAqKTsKLSNlbmRpZgorLyogVG8gbWlsbGlzZWNvbmQgKDEwXi0zKSAqLworI2RlZmluZSBTRUNfVE9fTVMgMTAwMAogCi1zdGF0aWMgdm9pZAotcHlnZXR0aW1lb2ZkYXkoX1B5VGltZV90aW1ldmFsICp0cCwgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKLXsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgRklMRVRJTUUgc3lzdGVtX3RpbWU7Ci0gICAgVUxBUkdFX0lOVEVHRVIgbGFyZ2U7Ci0gICAgVUxPTkdMT05HIG1pY3Jvc2Vjb25kczsKKy8qIFRvIG1pY3Jvc2Vjb25kcyAoMTBeLTYpICovCisjZGVmaW5lIE1TX1RPX1VTIDEwMDAKKyNkZWZpbmUgU0VDX1RPX1VTIChTRUNfVE9fTVMgKiBNU19UT19VUykKIAotICAgIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCZzeXN0ZW1fdGltZSk7Ci0gICAgbGFyZ2UudS5Mb3dQYXJ0ID0gc3lzdGVtX3RpbWUuZHdMb3dEYXRlVGltZTsKLSAgICBsYXJnZS51LkhpZ2hQYXJ0ID0gc3lzdGVtX3RpbWUuZHdIaWdoRGF0ZVRpbWU7Ci0gICAgLyogMTEsNjQ0LDQ3Myw2MDAsMDAwLDAwMDogbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcyBiZXR3ZWVuCi0gICAgICAgdGhlIDFzdCBqYW51YXJ5IDE2MDEgYW5kIHRoZSAxc3QgamFudWFyeSAxOTcwICgzNjkgeWVhcnMgKyA4OSBsZWFwCi0gICAgICAgZGF5cykuICovCi0gICAgbWljcm9zZWNvbmRzID0gbGFyZ2UuUXVhZFBhcnQgLyAxMCAtIDExNjQ0NDczNjAwMDAwMDAwOwotICAgIHRwLT50dl9zZWMgPSBtaWNyb3NlY29uZHMgLyAxMDAwMDAwOwotICAgIHRwLT50dl91c2VjID0gbWljcm9zZWNvbmRzICUgMTAwMDAwMDsKLSAgICBpZiAoaW5mbykgewotICAgICAgICBEV09SRCB0aW1lQWRqdXN0bWVudCwgdGltZUluY3JlbWVudDsKLSAgICAgICAgQk9PTCBpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQ7CisvKiBUbyBuYW5vc2Vjb25kcyAoMTBeLTkpICovCisjZGVmaW5lIFVTX1RPX05TIDEwMDAKKyNkZWZpbmUgTVNfVE9fTlMgKE1TX1RPX1VTICogVVNfVE9fTlMpCisjZGVmaW5lIFNFQ19UT19OUyAoU0VDX1RPX01TICogTVNfVE9fTlMpCiAKLSAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoKSI7Ci0gICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7Ci0gICAgICAgICh2b2lkKSBHZXRTeXN0ZW1UaW1lQWRqdXN0bWVudCgmdGltZUFkanVzdG1lbnQsICZ0aW1lSW5jcmVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlzVGltZUFkanVzdG1lbnREaXNhYmxlZCk7Ci0gICAgICAgIGluZm8tPnJlc29sdXRpb24gPSB0aW1lSW5jcmVtZW50ICogMWUtNzsKLSAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7Ci0gICAgfQotI2Vsc2UKLSAgICAvKiBUaGVyZSBhcmUgdGhyZWUgd2F5cyB0byBnZXQgdGhlIHRpbWU6Ci0gICAgICAoMSkgZ2V0dGltZW9mZGF5KCkgLS0gcmVzb2x1dGlvbiBpbiBtaWNyb3NlY29uZHMKLSAgICAgICgyKSBmdGltZSgpIC0tIHJlc29sdXRpb24gaW4gbWlsbGlzZWNvbmRzCi0gICAgICAoMykgdGltZSgpIC0tIHJlc29sdXRpb24gaW4gc2Vjb25kcwotICAgICAgSW4gYWxsIGNhc2VzIHRoZSByZXR1cm4gdmFsdWUgaW4gYSB0aW1ldmFsIHN0cnVjdC4KLSAgICAgIFNpbmNlIG9uIHNvbWUgc3lzdGVtcyAoZS5nLiBTQ08gT0RUIDMuMCkgZ2V0dGltZW9mZGF5KCkgbWF5Ci0gICAgICBmYWlsLCBzbyB3ZSBmYWxsIGJhY2sgb24gZnRpbWUoKSBvciB0aW1lKCkuCi0gICAgICBOb3RlOiBjbG9jayByZXNvbHV0aW9uIGRvZXMgbm90IGltcGx5IGNsb2NrIGFjY3VyYWN5ISAqLwotCi0jaWZkZWYgSEFWRV9HRVRUSU1FT0ZEQVkKLSAgICBpbnQgZXJyOwotI2lmZGVmIEdFVFRJTUVPRkRBWV9OT19UWgotICAgIGVyciA9IGdldHRpbWVvZmRheSh0cCk7Ci0jZWxzZQotICAgIGVyciA9IGdldHRpbWVvZmRheSh0cCwgKHN0cnVjdCB0aW1lem9uZSAqKU5VTEwpOwotI2VuZGlmCi0gICAgaWYgKGVyciA9PSAwKSB7Ci0gICAgICAgIGlmIChpbmZvKSB7Ci0gICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJnZXR0aW1lb2ZkYXkoKSI7Ci0gICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtNjsKLSAgICAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7Ci0gICAgICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmICAgLyogSEFWRV9HRVRUSU1FT0ZEQVkgKi8KLQotI2lmIGRlZmluZWQoSEFWRV9GVElNRSkKLSAgICB7Ci0gICAgICAgIHN0cnVjdCB0aW1lYiB0OwotICAgICAgICBmdGltZSgmdCk7Ci0gICAgICAgIHRwLT50dl9zZWMgPSB0LnRpbWU7Ci0gICAgICAgIHRwLT50dl91c2VjID0gdC5taWxsaXRtICogMTAwMDsKLSAgICAgICAgaWYgKGluZm8pIHsKLSAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gImZ0aW1lKCkiOwotICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTM7Ci0gICAgICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOwotICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7Ci0gICAgICAgIH0KLSAgICB9Ci0jZWxzZSAvKiAhSEFWRV9GVElNRSAqLwotICAgIHRwLT50dl9zZWMgPSB0aW1lKE5VTEwpOwotICAgIHRwLT50dl91c2VjID0gMDsKLSAgICBpZiAoaW5mbykgewotICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJ0aW1lKCkiOwotICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMS4wOwotICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOwotICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKLSAgICB9Ci0jZW5kaWYgLyogIUhBVkVfRlRJTUUgKi8KLQotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KLX0KLQotdm9pZAotX1B5VGltZV9nZXR0aW1lb2ZkYXkoX1B5VGltZV90aW1ldmFsICp0cCkKLXsKLSAgICBweWdldHRpbWVvZmRheSh0cCwgTlVMTCk7Ci19Ci0KLXZvaWQKLV9QeVRpbWVfZ2V0dGltZW9mZGF5X2luZm8oX1B5VGltZV90aW1ldmFsICp0cCwgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKLXsKLSAgICBweWdldHRpbWVvZmRheSh0cCwgaW5mbyk7Ci19CisvKiBDb252ZXJzaW9uIGZyb20gbmFub3NlY29uZHMgKi8KKyNkZWZpbmUgTlNfVE9fTVMgKDEwMDAgKiAxMDAwKQorI2RlZmluZSBOU19UT19VUyAoMTAwMCkKIAogc3RhdGljIHZvaWQKIGVycm9yX3RpbWVfdF9vdmVyZmxvdyh2b2lkKQpAQCAtMTY4LDE3ICs3OCwxNSBAQAogICAgICAgICB9CiAKICAgICAgICAgZmxvYXRwYXJ0ICo9IGRlbm9taW5hdG9yOwotICAgICAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9VUCkgewotICAgICAgICAgICAgaWYgKGludHBhcnQgPj0gMCkgewotICAgICAgICAgICAgICAgIGZsb2F0cGFydCA9IGNlaWwoZmxvYXRwYXJ0KTsKLSAgICAgICAgICAgICAgICBpZiAoZmxvYXRwYXJ0ID49IGRlbm9taW5hdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0cGFydCA9IDAuMDsKLSAgICAgICAgICAgICAgICAgICAgaW50cGFydCArPSAxLjA7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKSB7CisgICAgICAgICAgICBmbG9hdHBhcnQgPSBjZWlsKGZsb2F0cGFydCk7CisgICAgICAgICAgICBpZiAoZmxvYXRwYXJ0ID49IGRlbm9taW5hdG9yKSB7CisgICAgICAgICAgICAgICAgZmxvYXRwYXJ0ID0gMC4wOworICAgICAgICAgICAgICAgIGludHBhcnQgKz0gMS4wOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZmxvYXRwYXJ0ID0gZmxvb3IoZmxvYXRwYXJ0KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZsb2F0cGFydCA9IGZsb29yKGZsb2F0cGFydCk7CiAgICAgICAgIH0KIAogICAgICAgICAqc2VjID0gKHRpbWVfdClpbnRwYXJ0OwpAQCAtMjA3LDEyICsxMTUsMTAgQEAKICAgICAgICAgZG91YmxlIGQsIGludHBhcnQsIGVycjsKIAogICAgICAgICBkID0gUHlGbG9hdF9Bc0RvdWJsZShvYmopOwotICAgICAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9VUCkgewotICAgICAgICAgICAgaWYgKGQgPj0gMCkKLSAgICAgICAgICAgICAgICBkID0gY2VpbChkKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBkID0gZmxvb3IoZCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykKKyAgICAgICAgICAgIGQgPSBjZWlsKGQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkID0gZmxvb3IoZCk7CiAgICAgICAgICh2b2lkKW1vZGYoZCwgJmludHBhcnQpOwogCiAgICAgICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7CkBAIC0yNDUsOCArMTUxLDU0NiBAQAogICAgIHJldHVybiBfUHlUaW1lX09iamVjdFRvRGVub21pbmF0b3Iob2JqLCBzZWMsIHVzZWMsIDFlNiwgcm91bmQpOwogfQogCi12b2lkCi1fUHlUaW1lX0luaXQoKQorc3RhdGljIHZvaWQKK19QeVRpbWVfb3ZlcmZsb3codm9pZCkKIHsKLSAgICAvKiBEbyBub3RoaW5nLiAgTmVlZGVkIHRvIGZvcmNlIGxpbmtpbmcuICovCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJ0aW1lc3RhbXAgdG9vIGxhcmdlIHRvIGNvbnZlcnQgdG8gQyBfUHlUaW1lX3QiKTsKK30KKworX1B5VGltZV90CitfUHlUaW1lX0Zyb21TZWNvbmRzKGludCBzZWNvbmRzKQoreworICAgIF9QeVRpbWVfdCB0OworICAgIC8qIGVuc3VyZSB0aGF0IGludGVnZXIgb3ZlcmZsb3cgY2Fubm90IGhhcHBlbiwgaW50IHR5cGUgc2hvdWxkIGhhdmUgMzIKKyAgICAgICBiaXRzLCB3aGVyZWFzIF9QeVRpbWVfdCB0eXBlIGhhcyBhdCBsZWFzdCA2NCBiaXRzIChTRUNfVE9fTVMgdGFrZXMgMzAKKyAgICAgICBiaXRzKS4gKi8KKyAgICBhc3NlcnQoKHNlY29uZHMgPj0gMCAmJiBzZWNvbmRzIDw9IF9QeVRpbWVfTUFYIC8gU0VDX1RPX05TKQorICAgICAgICAgICB8fCAoc2Vjb25kcyA8IDAgJiYgc2Vjb25kcyA+PSBfUHlUaW1lX01JTiAvIFNFQ19UT19OUykpOworICAgIHQgPSAoX1B5VGltZV90KXNlY29uZHMgKiBTRUNfVE9fTlM7CisgICAgcmV0dXJuIHQ7Cit9CisKK19QeVRpbWVfdAorX1B5VGltZV9Gcm9tTmFub3NlY29uZHMoUFlfTE9OR19MT05HIG5zKQoreworICAgIF9QeVRpbWVfdCB0OworICAgIGFzc2VydChzaXplb2YoUFlfTE9OR19MT05HKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisgICAgdCA9IFB5X1NBRkVfRE9XTkNBU1QobnMsIFBZX0xPTkdfTE9ORywgX1B5VGltZV90KTsKKyAgICByZXR1cm4gdDsKK30KKworI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQorc3RhdGljIGludAorX1B5VGltZV9Gcm9tVGltZXNwZWMoX1B5VGltZV90ICp0cCwgc3RydWN0IHRpbWVzcGVjICp0cywgaW50IHJhaXNlKQoreworICAgIF9QeVRpbWVfdCB0OworICAgIGludCByZXMgPSAwOworCisgICAgdCA9IChfUHlUaW1lX3QpdHMtPnR2X3NlYyAqIFNFQ19UT19OUzsKKyAgICBpZiAodCAvIFNFQ19UT19OUyAhPSB0cy0+dHZfc2VjKSB7CisgICAgICAgIGlmIChyYWlzZSkKKyAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgcmVzID0gLTE7CisgICAgfQorCisgICAgdCArPSB0cy0+dHZfbnNlYzsKKworICAgICp0cCA9IHQ7CisgICAgcmV0dXJuIHJlczsKK30KKyNlbGlmICFkZWZpbmVkKE1TX1dJTkRPV1MpCitzdGF0aWMgaW50CitfUHlUaW1lX0Zyb21UaW1ldmFsKF9QeVRpbWVfdCAqdHAsIHN0cnVjdCB0aW1ldmFsICp0diwgaW50IHJhaXNlKQoreworICAgIF9QeVRpbWVfdCB0OworICAgIGludCByZXMgPSAwOworCisgICAgdCA9IChfUHlUaW1lX3QpdHYtPnR2X3NlYyAqIFNFQ19UT19OUzsKKyAgICBpZiAodCAvIFNFQ19UT19OUyAhPSB0di0+dHZfc2VjKSB7CisgICAgICAgIGlmIChyYWlzZSkKKyAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgcmVzID0gLTE7CisgICAgfQorCisgICAgdCArPSAoX1B5VGltZV90KXR2LT50dl91c2VjICogVVNfVE9fTlM7CisKKyAgICAqdHAgPSB0OworICAgIHJldHVybiByZXM7Cit9CisjZW5kaWYKKworc3RhdGljIGludAorX1B5VGltZV9Gcm9tT2JqZWN0KF9QeVRpbWVfdCAqdCwgUHlPYmplY3QgKm9iaiwgX1B5VGltZV9yb3VuZF90IHJvdW5kLAorICAgICAgICAgICAgICAgICAgIGxvbmcgdG9fbmFub3NlY29uZHMpCit7CisgICAgaWYgKFB5RmxvYXRfQ2hlY2sob2JqKSkgeworICAgICAgICAvKiB2b2xhdGlsZSBhdm9pZHMgdW5zYWZlIG9wdGltaXphdGlvbiBvbiBmbG9hdCBlbmFibGVkIGJ5IGdjYyAtTzMgKi8KKyAgICAgICAgdm9sYXRpbGUgZG91YmxlIGQsIGVycjsKKworICAgICAgICAvKiBjb252ZXJ0IHRvIGEgbnVtYmVyIG9mIG5hbm9zZWNvbmRzICovCisgICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7CisgICAgICAgIGQgKj0gdG9fbmFub3NlY29uZHM7CisKKyAgICAgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykKKyAgICAgICAgICAgIGQgPSBjZWlsKGQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkID0gZmxvb3IoZCk7CisKKyAgICAgICAgKnQgPSAoX1B5VGltZV90KWQ7CisgICAgICAgIGVyciA9IGQgLSAoZG91YmxlKSp0OworICAgICAgICBpZiAoZmFicyhlcnIpID49IDEuMCkgeworICAgICAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgICAgICBQWV9MT05HX0xPTkcgc2VjOworICAgICAgICBzZWMgPSBQeUxvbmdfQXNMb25nTG9uZyhvYmopOworICAgICAgICBhc3NlcnQoc2l6ZW9mKFBZX0xPTkdfTE9ORykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworI2Vsc2UKKyAgICAgICAgbG9uZyBzZWM7CisgICAgICAgIHNlYyA9IFB5TG9uZ19Bc0xvbmcob2JqKTsKKyAgICAgICAgYXNzZXJ0KHNpemVvZihQWV9MT05HX0xPTkcpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKKyNlbmRpZgorICAgICAgICBpZiAoc2VjID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpKQorICAgICAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICAqdCA9IHNlYyAqIHRvX25hbm9zZWNvbmRzOworICAgICAgICBpZiAoKnQgLyB0b19uYW5vc2Vjb25kcyAhPSBzZWMpIHsKKyAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2ludAorX1B5VGltZV9Gcm9tU2Vjb25kc09iamVjdChfUHlUaW1lX3QgKnQsIFB5T2JqZWN0ICpvYmosIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKK3sKKyAgICByZXR1cm4gX1B5VGltZV9Gcm9tT2JqZWN0KHQsIG9iaiwgcm91bmQsIFNFQ19UT19OUyk7Cit9CisKK2ludAorX1B5VGltZV9Gcm9tTWlsbGlzZWNvbmRzT2JqZWN0KF9QeVRpbWVfdCAqdCwgUHlPYmplY3QgKm9iaiwgX1B5VGltZV9yb3VuZF90IHJvdW5kKQoreworICAgIHJldHVybiBfUHlUaW1lX0Zyb21PYmplY3QodCwgb2JqLCByb3VuZCwgTVNfVE9fTlMpOworfQorCitkb3VibGUKK19QeVRpbWVfQXNTZWNvbmRzRG91YmxlKF9QeVRpbWVfdCB0KQoreworICAgIF9QeVRpbWVfdCBzZWMsIG5zOworICAgIC8qIERpdmlkZSB1c2luZyBpbnRlZ2VycyB0byBhdm9pZCByb3VuZGluZyBpc3N1ZXMgb24gdGhlIGludGVnZXIgcGFydC4KKyAgICAgICAxZS05IGNhbm5vdCBiZSBzdG9yZWQgZXhhY3RseSBpbiBJRUVFIDY0LWJpdC4gKi8KKyAgICBzZWMgPSB0IC8gU0VDX1RPX05TOworICAgIG5zID0gdCAlIFNFQ19UT19OUzsKKyAgICByZXR1cm4gKGRvdWJsZSlzZWMgKyAoZG91YmxlKW5zICogMWUtOTsKK30KKworUHlPYmplY3QgKgorX1B5VGltZV9Bc05hbm9zZWNvbmRzT2JqZWN0KF9QeVRpbWVfdCB0KQoreworI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgYXNzZXJ0KHNpemVvZihQWV9MT05HX0xPTkcpID49IHNpemVvZihfUHlUaW1lX3QpKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXQpOworI2Vsc2UKKyAgICBhc3NlcnQoc2l6ZW9mKGxvbmcpID49IHNpemVvZihfUHlUaW1lX3QpKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXQpOworI2VuZGlmCit9CisKK3N0YXRpYyBfUHlUaW1lX3QKK19QeVRpbWVfRGl2aWRlKGNvbnN0IF9QeVRpbWVfdCB0LCBjb25zdCBfUHlUaW1lX3QgaywKKyAgICAgICAgICAgICAgIGNvbnN0IF9QeVRpbWVfcm91bmRfdCByb3VuZCkKK3sKKyAgICBhc3NlcnQoayA+IDEpOworICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIHsKKyAgICAgICAgaWYgKHQgPj0gMCkKKyAgICAgICAgICAgIHJldHVybiAodCArIGsgLSAxKSAvIGs7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB0IC8gazsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmICh0ID49IDApCisgICAgICAgICAgICByZXR1cm4gdCAvIGs7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAodCAtIChrIC0gMSkpIC8gazsKKyAgICB9Cit9CisKK19QeVRpbWVfdAorX1B5VGltZV9Bc01pbGxpc2Vjb25kcyhfUHlUaW1lX3QgdCwgX1B5VGltZV9yb3VuZF90IHJvdW5kKQoreworICAgIHJldHVybiBfUHlUaW1lX0RpdmlkZSh0LCBOU19UT19NUywgcm91bmQpOworfQorCitfUHlUaW1lX3QKK19QeVRpbWVfQXNNaWNyb3NlY29uZHMoX1B5VGltZV90IHQsIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKK3sKKyAgICByZXR1cm4gX1B5VGltZV9EaXZpZGUodCwgTlNfVE9fVVMsIHJvdW5kKTsKK30KKworc3RhdGljIGludAorX1B5VGltZV9Bc1RpbWV2YWxfaW1wbChfUHlUaW1lX3QgdCwgX1B5VGltZV90ICpwX3NlY3MsIGludCAqcF91cywKKyAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9yb3VuZF90IHJvdW5kKQoreworICAgIF9QeVRpbWVfdCBzZWNzLCBuczsKKyAgICBpbnQgdXNlYzsKKyAgICBpbnQgcmVzID0gMDsKKworICAgIHNlY3MgPSB0IC8gU0VDX1RPX05TOworICAgIG5zID0gdCAlIFNFQ19UT19OUzsKKworICAgIHVzZWMgPSAoaW50KV9QeVRpbWVfRGl2aWRlKG5zLCBVU19UT19OUywgcm91bmQpOworICAgIGlmICh1c2VjIDwgMCkgeworICAgICAgICB1c2VjICs9IFNFQ19UT19VUzsKKyAgICAgICAgaWYgKHNlY3MgIT0gX1B5VGltZV9NSU4pCisgICAgICAgICAgICBzZWNzIC09IDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcyA9IC0xOworICAgIH0KKyAgICBlbHNlIGlmICh1c2VjID49IFNFQ19UT19VUykgeworICAgICAgICB1c2VjIC09IFNFQ19UT19VUzsKKyAgICAgICAgaWYgKHNlY3MgIT0gX1B5VGltZV9NQVgpCisgICAgICAgICAgICBzZWNzICs9IDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcyA9IC0xOworICAgIH0KKyAgICBhc3NlcnQoMCA8PSB1c2VjICYmIHVzZWMgPCBTRUNfVE9fVVMpOworCisgICAgKnBfc2VjcyA9IHNlY3M7CisgICAgKnBfdXMgPSB1c2VjOworCisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIGludAorX1B5VGltZV9Bc1RpbWV2YWxTdHJ1Y3RfaW1wbChfUHlUaW1lX3QgdCwgc3RydWN0IHRpbWV2YWwgKnR2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQsIGludCByYWlzZSkKK3sKKyAgICBfUHlUaW1lX3Qgc2VjczsKKyAgICBpbnQgdXM7CisgICAgaW50IHJlczsKKworICAgIHJlcyA9IF9QeVRpbWVfQXNUaW1ldmFsX2ltcGwodCwgJnNlY3MsICZ1cywgcm91bmQpOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIHR2LT50dl9zZWMgPSAobG9uZylzZWNzOworI2Vsc2UKKyAgICB0di0+dHZfc2VjID0gc2VjczsKKyNlbmRpZgorICAgIHR2LT50dl91c2VjID0gdXM7CisKKyAgICBpZiAocmVzIDwgMCB8fCAoX1B5VGltZV90KXR2LT50dl9zZWMgIT0gc2VjcykgeworICAgICAgICBpZiAocmFpc2UpCisgICAgICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworaW50CitfUHlUaW1lX0FzVGltZXZhbChfUHlUaW1lX3QgdCwgc3RydWN0IHRpbWV2YWwgKnR2LCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCit7CisgICAgcmV0dXJuIF9QeVRpbWVfQXNUaW1ldmFsU3RydWN0X2ltcGwodCwgdHYsIHJvdW5kLCAxKTsKK30KKworaW50CitfUHlUaW1lX0FzVGltZXZhbF9ub3JhaXNlKF9QeVRpbWVfdCB0LCBzdHJ1Y3QgdGltZXZhbCAqdHYsIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKK3sKKyAgICByZXR1cm4gX1B5VGltZV9Bc1RpbWV2YWxTdHJ1Y3RfaW1wbCh0LCB0diwgcm91bmQsIDApOworfQorCitpbnQKK19QeVRpbWVfQXNUaW1ldmFsVGltZV90KF9QeVRpbWVfdCB0LCB0aW1lX3QgKnBfc2VjcywgaW50ICp1cywKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKK3sKKyAgICBfUHlUaW1lX3Qgc2VjczsKKyAgICBpbnQgcmVzOworCisgICAgcmVzID0gX1B5VGltZV9Bc1RpbWV2YWxfaW1wbCh0LCAmc2VjcywgdXMsIHJvdW5kKTsKKworICAgICpwX3NlY3MgPSBzZWNzOworCisgICAgaWYgKHJlcyA8IDAgfHwgKF9QeVRpbWVfdCkqcF9zZWNzICE9IHNlY3MpIHsKKyAgICAgICAgZXJyb3JfdGltZV90X292ZXJmbG93KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgfHwgZGVmaW5lZChIQVZFX0tRVUVVRSkKK2ludAorX1B5VGltZV9Bc1RpbWVzcGVjKF9QeVRpbWVfdCB0LCBzdHJ1Y3QgdGltZXNwZWMgKnRzKQoreworICAgIF9QeVRpbWVfdCBzZWNzLCBuc2VjOworCisgICAgc2VjcyA9IHQgLyBTRUNfVE9fTlM7CisgICAgbnNlYyA9IHQgJSBTRUNfVE9fTlM7CisgICAgaWYgKG5zZWMgPCAwKSB7CisgICAgICAgIG5zZWMgKz0gU0VDX1RPX05TOworICAgICAgICBzZWNzIC09IDE7CisgICAgfQorICAgIHRzLT50dl9zZWMgPSAodGltZV90KXNlY3M7CisgICAgaWYgKChfUHlUaW1lX3QpdHMtPnR2X3NlYyAhPSBzZWNzKSB7CisgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICB0cy0+dHZfbnNlYyA9IG5zZWM7CisKKyAgICBhc3NlcnQoMCA8PSB0cy0+dHZfbnNlYyAmJiB0cy0+dHZfbnNlYyA8PSA5OTk5OTk5OTkpOworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQKK3B5Z2V0dGltZW9mZGF5KF9QeVRpbWVfdCAqdHAsIF9QeV9jbG9ja19pbmZvX3QgKmluZm8sIGludCByYWlzZSkKK3sKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgRklMRVRJTUUgc3lzdGVtX3RpbWU7CisgICAgVUxBUkdFX0lOVEVHRVIgbGFyZ2U7CisKKyAgICBhc3NlcnQoaW5mbyA9PSBOVUxMIHx8IHJhaXNlKTsKKworICAgIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCZzeXN0ZW1fdGltZSk7CisgICAgbGFyZ2UudS5Mb3dQYXJ0ID0gc3lzdGVtX3RpbWUuZHdMb3dEYXRlVGltZTsKKyAgICBsYXJnZS51LkhpZ2hQYXJ0ID0gc3lzdGVtX3RpbWUuZHdIaWdoRGF0ZVRpbWU7CisgICAgLyogMTEsNjQ0LDQ3Myw2MDAsMDAwLDAwMCwwMDA6IG51bWJlciBvZiBuYW5vc2Vjb25kcyBiZXR3ZWVuCisgICAgICAgdGhlIDFzdCBqYW51YXJ5IDE2MDEgYW5kIHRoZSAxc3QgamFudWFyeSAxOTcwICgzNjkgeWVhcnMgKyA4OSBsZWFwCisgICAgICAgZGF5cykuICovCisgICAgKnRwID0gbGFyZ2UuUXVhZFBhcnQgKiAxMDAgLSAxMTY0NDQ3MzYwMDAwMDAwMDAwMDsKKyAgICBpZiAoaW5mbykgeworICAgICAgICBEV09SRCB0aW1lQWRqdXN0bWVudCwgdGltZUluY3JlbWVudDsKKyAgICAgICAgQk9PTCBpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQsIG9rOworCisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIkdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCkiOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOworICAgICAgICBvayA9IEdldFN5c3RlbVRpbWVBZGp1c3RtZW50KCZ0aW1lQWRqdXN0bWVudCwgJnRpbWVJbmNyZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlzVGltZUFkanVzdG1lbnREaXNhYmxlZCk7CisgICAgICAgIGlmICghb2spIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSB0aW1lSW5jcmVtZW50ICogMWUtNzsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7CisgICAgfQorCisjZWxzZSAgIC8qIE1TX1dJTkRPV1MgKi8KKyAgICBpbnQgZXJyOworI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQorICAgIHN0cnVjdCB0aW1lc3BlYyB0czsKKyNlbHNlCisgICAgc3RydWN0IHRpbWV2YWwgdHY7CisjZW5kaWYKKworICAgIGFzc2VydChpbmZvID09IE5VTEwgfHwgcmFpc2UpOworCisjaWZkZWYgSEFWRV9DTE9DS19HRVRUSU1FCisgICAgZXJyID0gY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgJnRzKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIGlmIChyYWlzZSkKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoX1B5VGltZV9Gcm9tVGltZXNwZWModHAsICZ0cywgcmFpc2UpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgc3RydWN0IHRpbWVzcGVjIHJlczsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSkiOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOworICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKKyAgICAgICAgaWYgKGNsb2NrX2dldHJlcyhDTE9DS19SRUFMVElNRSwgJnJlcykgPT0gMCkKKyAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSByZXMudHZfc2VjICsgcmVzLnR2X25zZWMgKiAxZS05OworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtOTsKKyAgICB9CisjZWxzZSAgIC8qIEhBVkVfQ0xPQ0tfR0VUVElNRSAqLworCisgICAgIC8qIHRlc3QgZ2V0dGltZW9mZGF5KCkgKi8KKyNpZmRlZiBHRVRUSU1FT0ZEQVlfTk9fVFoKKyAgICBlcnIgPSBnZXR0aW1lb2ZkYXkoJnR2KTsKKyNlbHNlCisgICAgZXJyID0gZ2V0dGltZW9mZGF5KCZ0diwgKHN0cnVjdCB0aW1lem9uZSAqKU5VTEwpOworI2VuZGlmCisgICAgaWYgKGVycikgeworICAgICAgICBpZiAocmFpc2UpCisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKF9QeVRpbWVfRnJvbVRpbWV2YWwodHAsICZ0diwgcmFpc2UpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiZ2V0dGltZW9mZGF5KCkiOworICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtNjsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMDsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7CisgICAgfQorI2VuZGlmICAgLyogIUhBVkVfQ0xPQ0tfR0VUVElNRSAqLworI2VuZGlmICAgLyogIU1TX1dJTkRPV1MgKi8KKyAgICByZXR1cm4gMDsKK30KKworX1B5VGltZV90CitfUHlUaW1lX0dldFN5c3RlbUNsb2NrKHZvaWQpCit7CisgICAgX1B5VGltZV90IHQ7CisgICAgaWYgKHB5Z2V0dGltZW9mZGF5KCZ0LCBOVUxMLCAwKSA8IDApIHsKKyAgICAgICAgLyogc2hvdWxkIG5vdCBoYXBwZW4sIF9QeVRpbWVfSW5pdCgpIGNoZWNrZWQgdGhlIGNsb2NrIGF0IHN0YXJ0dXAgKi8KKyAgICAgICAgYXNzZXJ0KDApOworCisgICAgICAgIC8qIHVzZSBhIGZpeGVkIHZhbHVlIGluc3RlYWQgb2YgYSByYW5kb20gdmFsdWUgZnJvbSB0aGUgc3RhY2sgKi8KKyAgICAgICAgdCA9IDA7CisgICAgfQorICAgIHJldHVybiB0OworfQorCitpbnQKK19QeVRpbWVfR2V0U3lzdGVtQ2xvY2tXaXRoSW5mbyhfUHlUaW1lX3QgKnQsIF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCit7CisgICAgcmV0dXJuIHB5Z2V0dGltZW9mZGF5KHQsIGluZm8sIDEpOworfQorCisKK3N0YXRpYyBpbnQKK3B5bW9ub3RvbmljKF9QeVRpbWVfdCAqdHAsIF9QeV9jbG9ja19pbmZvX3QgKmluZm8sIGludCByYWlzZSkKK3sKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisgICAgVUxPTkdMT05HIHJlc3VsdDsKKworICAgIGFzc2VydChpbmZvID09IE5VTEwgfHwgcmFpc2UpOworCisgICAgcmVzdWx0ID0gR2V0VGlja0NvdW50NjQoKTsKKworICAgICp0cCA9IHJlc3VsdCAqIE1TX1RPX05TOworICAgIGlmICgqdHAgLyBNU19UT19OUyAhPSByZXN1bHQpIHsKKyAgICAgICAgaWYgKHJhaXNlKSB7CisgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgLyogSGVsbG8sIHRpbWUgdHJhdmVsZXIhICovCisgICAgICAgIGFzc2VydCgwKTsKKyAgICB9CisKKyAgICBpZiAoaW5mbykgeworICAgICAgICBEV09SRCB0aW1lQWRqdXN0bWVudCwgdGltZUluY3JlbWVudDsKKyAgICAgICAgQk9PTCBpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQsIG9rOworICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJHZXRUaWNrQ291bnQ2NCgpIjsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgb2sgPSBHZXRTeXN0ZW1UaW1lQWRqdXN0bWVudCgmdGltZUFkanVzdG1lbnQsICZ0aW1lSW5jcmVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQpOworICAgICAgICBpZiAoIW9rKSB7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gdGltZUluY3JlbWVudCAqIDFlLTc7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgIH0KKworI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCisgICAgc3RhdGljIG1hY2hfdGltZWJhc2VfaW5mb19kYXRhX3QgdGltZWJhc2U7CisgICAgdWludDY0X3QgdGltZTsKKworICAgIGlmICh0aW1lYmFzZS5kZW5vbSA9PSAwKSB7CisgICAgICAgIC8qIEFjY29yZGluZyB0byB0aGUgVGVjaG5pY2FsIFEmQSBRQTEzOTgsIG1hY2hfdGltZWJhc2VfaW5mbygpIGNhbm5vdAorICAgICAgICAgICBmYWlsOiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9tYWMvI3FhL3FhMTM5OC8gKi8KKyAgICAgICAgKHZvaWQpbWFjaF90aW1lYmFzZV9pbmZvKCZ0aW1lYmFzZSk7CisgICAgfQorCisgICAgdGltZSA9IG1hY2hfYWJzb2x1dGVfdGltZSgpOworCisgICAgLyogYXBwbHkgdGltZWJhc2UgZmFjdG9yICovCisgICAgdGltZSAqPSB0aW1lYmFzZS5udW1lcjsKKyAgICB0aW1lIC89IHRpbWViYXNlLmRlbm9tOworCisgICAgKnRwID0gdGltZTsKKworICAgIGlmIChpbmZvKSB7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIm1hY2hfYWJzb2x1dGVfdGltZSgpIjsKKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IChkb3VibGUpdGltZWJhc2UubnVtZXIgLyB0aW1lYmFzZS5kZW5vbSAqIDFlLTk7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgIH0KKworI2Vsc2UKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7CisjaWZkZWYgQ0xPQ0tfSElHSFJFUworICAgIGNvbnN0IGNsb2NraWRfdCBjbGtfaWQgPSBDTE9DS19ISUdIUkVTOworICAgIGNvbnN0IGNoYXIgKmltcGxlbWVudGF0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfSElHSFJFUykiOworI2Vsc2UKKyAgICBjb25zdCBjbG9ja2lkX3QgY2xrX2lkID0gQ0xPQ0tfTU9OT1RPTklDOworICAgIGNvbnN0IGNoYXIgKmltcGxlbWVudGF0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDKSI7CisjZW5kaWYKKworICAgIGFzc2VydChpbmZvID09IE5VTEwgfHwgcmFpc2UpOworCisgICAgaWYgKGNsb2NrX2dldHRpbWUoY2xrX2lkLCAmdHMpICE9IDApIHsKKyAgICAgICAgaWYgKHJhaXNlKSB7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChpbmZvKSB7CisgICAgICAgIHN0cnVjdCB0aW1lc3BlYyByZXM7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gaW1wbGVtZW50YXRpb247CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgICAgICBpZiAoY2xvY2tfZ2V0cmVzKGNsa19pZCwgJnJlcykgIT0gMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSByZXMudHZfc2VjICsgcmVzLnR2X25zZWMgKiAxZS05OworICAgIH0KKyAgICBpZiAoX1B5VGltZV9Gcm9tVGltZXNwZWModHAsICZ0cywgcmFpc2UpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworI2VuZGlmCisgICAgcmV0dXJuIDA7Cit9CisKK19QeVRpbWVfdAorX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jayh2b2lkKQoreworICAgIF9QeVRpbWVfdCB0OworICAgIGlmIChweW1vbm90b25pYygmdCwgTlVMTCwgMCkgPCAwKSB7CisgICAgICAgIC8qIHNob3VsZCBub3QgaGFwcGVuLCBfUHlUaW1lX0luaXQoKSBjaGVja2VkIHRoYXQgbW9ub3RvbmljIGNsb2NrIGF0CisgICAgICAgICAgIHN0YXJ0dXAgKi8KKyAgICAgICAgYXNzZXJ0KDApOworCisgICAgICAgIC8qIHVzZSBhIGZpeGVkIHZhbHVlIGluc3RlYWQgb2YgYSByYW5kb20gdmFsdWUgZnJvbSB0aGUgc3RhY2sgKi8KKyAgICAgICAgdCA9IDA7CisgICAgfQorICAgIHJldHVybiB0OworfQorCitpbnQKK19QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2tXaXRoSW5mbyhfUHlUaW1lX3QgKnRwLCBfUHlfY2xvY2tfaW5mb190ICppbmZvKQoreworICAgIHJldHVybiBweW1vbm90b25pYyh0cCwgaW5mbywgMSk7Cit9CisKK2ludAorX1B5VGltZV9Jbml0KHZvaWQpCit7CisgICAgX1B5VGltZV90IHQ7CisKKyAgICAvKiBlbnN1cmUgdGhhdCB0aGUgc3lzdGVtIGNsb2NrIHdvcmtzICovCisgICAgaWYgKF9QeVRpbWVfR2V0U3lzdGVtQ2xvY2tXaXRoSW5mbygmdCwgTlVMTCkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiBlbnN1cmUgdGhhdCB0aGUgb3BlcmF0aW5nIHN5c3RlbSBwcm92aWRlcyBhIG1vbm90b25pYyBjbG9jayAqLworICAgIGlmIChfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrV2l0aEluZm8oJnQsIE5VTEwpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogY2hlY2sgdGhhdCBfUHlUaW1lX0Zyb21TZWNvbmRzKCkgY2Fubm90IG92ZXJmbG93ICovCisgICAgYXNzZXJ0KElOVF9NQVggPD0gX1B5VGltZV9NQVggLyBTRUNfVE9fTlMpOworICAgIGFzc2VydChJTlRfTUlOID49IF9QeVRpbWVfTUlOIC8gU0VDX1RPX05TKTsKKyAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9yYW5kb20uYyBiL1B5dGhvbi9yYW5kb20uYwppbmRleCBhZjNkMGJkLi43NzJiZmVmIDEwMDY0NAotLS0gYS9QeXRob24vcmFuZG9tLmMKKysrIGIvUHl0aG9uL3JhbmRvbS5jCkBAIC0xLDExICsxLDE2IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaWZkZWYgTVNfV0lORE9XUwotI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KICNlbHNlCi0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpZmRlZiBIQVZFX1NZU19TVEFUX0gKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2VuZGlmCisjICBpbmNsdWRlIDxmY250bC5oPgorIyAgaWZkZWYgSEFWRV9TWVNfU1RBVF9ICisjICAgIGluY2x1ZGUgPHN5cy9zdGF0Lmg+CisjICBlbmRpZgorIyAgaWZkZWYgSEFWRV9HRVRSQU5ET00KKyMgICAgaW5jbHVkZSA8c3lzL3JhbmRvbS5oPgorIyAgZWxpZiBkZWZpbmVkKEhBVkVfR0VUUkFORE9NX1NZU0NBTEwpCisjICAgIGluY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisjICBlbmRpZgogI2VuZGlmCiAKICNpZmRlZiBQeV9ERUJVRwpAQCAtNjcsOCArNzIsNiBAQAogICAgIHJldHVybiAwOwogfQogCi0vKiBJc3N1ZSAjMjUwMDM6IERvbicgdXNlIGdldGVudHJvcHkoKSBvbiBTb2xhcmlzIChhdmFpbGFibGUgc2luY2UKLSAqIFNvbGFyaXMgMTEuMyksIGl0IGlzIGJsb2NraW5nIHdoZXJlYXMgb3MudXJhbmRvbSgpIHNob3VsZCBub3QgYmxvY2suICovCiAjZWxpZiBkZWZpbmVkKEhBVkVfR0VURU5UUk9QWSkgJiYgIWRlZmluZWQoc3VuKQogI2RlZmluZSBQWV9HRVRFTlRST1BZIDEKIApAQCAtMTA3LDEyICsxMTAsODkgQEAKIH0KIAogI2Vsc2UKKworLyogSXNzdWUgIzI1MDAzOiBEb24nIHVzZSBnZXRlbnRyb3B5KCkgb24gU29sYXJpcyAoYXZhaWxhYmxlIHNpbmNlCisgKiBTb2xhcmlzIDExLjMpLCBpdCBpcyBibG9ja2luZyB3aGVyZWFzIG9zLnVyYW5kb20oKSBzaG91bGQgbm90IGJsb2NrLiAqLworI2lmIGRlZmluZWQoSEFWRV9HRVRSQU5ET00pIHx8IGRlZmluZWQoSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCkKKyNkZWZpbmUgUFlfR0VUUkFORE9NIDEKKworc3RhdGljIGludAorcHlfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCit7CisgICAgLyogSXMgZ2V0cmFuZG9tKCkgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbD8KKyAgICAgKiBOZWVkIExpbnV4IGtlcm5lbCAzLjE3IG9yIG5ld2VyLCBvciBTb2xhcmlzIDExLjMgb3IgbmV3ZXIgKi8KKyAgICBzdGF0aWMgaW50IGdldHJhbmRvbV93b3JrcyA9IDE7CisgICAgLyogVXNlIG5vbi1ibG9ja2luZyAvZGV2L3VyYW5kb20gZGV2aWNlLiBPbiBMaW51eCBhdCBib290LCB0aGUgZ2V0cmFuZG9tKCkKKyAgICAgKiBzeXNjYWxsIGJsb2NrcyB1bnRpbCAvZGV2L3VyYW5kb20gaXMgaW5pdGlhbGl6ZWQgd2l0aCBlbm91Z2ggZW50cm9weS4gKi8KKyAgICBjb25zdCBpbnQgZmxhZ3MgPSAwOworICAgIGludCBuOworCisgICAgaWYgKCFnZXRyYW5kb21fd29ya3MpCisgICAgICAgIHJldHVybiAwOworCisgICAgd2hpbGUgKDAgPCBzaXplKSB7CisgICAgICAgIGVycm5vID0gMDsKKworI2lmZGVmIEhBVkVfR0VUUkFORE9NCisgICAgICAgIGlmIChyYWlzZSkgeworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgbiA9IGdldHJhbmRvbShidWZmZXIsIHNpemUsIGZsYWdzKTsKKyAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBuID0gZ2V0cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgZmxhZ3MpOworICAgICAgICB9CisjZWxzZQorICAgICAgICAvKiBPbiBMaW51eCwgdXNlIHRoZSBzeXNjYWxsKCkgZnVuY3Rpb24gYmVjYXVzZSB0aGUgR05VIGxpYmMgZG9lc24ndAorICAgICAgICAgKiBleHBvc2UgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwgeWV0LiBTZWU6CisgICAgICAgICAqIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE3MjUyICovCisgICAgICAgIGlmIChyYWlzZSkgeworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgbiA9IHN5c2NhbGwoU1lTX2dldHJhbmRvbSwgYnVmZmVyLCBzaXplLCBmbGFncyk7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbiA9IHN5c2NhbGwoU1lTX2dldHJhbmRvbSwgYnVmZmVyLCBzaXplLCBmbGFncyk7CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChuIDwgMCkgeworICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT1NZUykgeworICAgICAgICAgICAgICAgIGdldHJhbmRvbV93b3JrcyA9IDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgeworICAgICAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXJhaXNlKQorICAgICAgICAgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZ2V0cmFuZG9tKCkgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvKiByZXRyeSBnZXRyYW5kb20oKSAqLworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocmFpc2UpCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImdldHJhbmRvbSgpIGZhaWxlZCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgYnVmZmVyICs9IG47CisgICAgICAgIHNpemUgLT0gbjsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisjZW5kaWYKKwogc3RhdGljIHN0cnVjdCB7CiAgICAgaW50IGZkOwogICAgIGRldl90IHN0X2RldjsKICAgICBpbm9fdCBzdF9pbm87CiB9IHVyYW5kb21fY2FjaGUgPSB7IC0xIH07CiAKKwogLyogUmVhZCBzaXplIGJ5dGVzIGZyb20gL2Rldi91cmFuZG9tIGludG8gYnVmZmVyLgogICAgQ2FsbCBQeV9GYXRhbEVycm9yKCkgb24gZXJyb3IuICovCiBzdGF0aWMgdm9pZApAQCAtMTIzLDcgKzIwMywxNCBAQAogCiAgICAgYXNzZXJ0ICgwIDwgc2l6ZSk7CiAKLSAgICBmZCA9IF9QeV9vcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7CisjaWZkZWYgUFlfR0VUUkFORE9NCisgICAgaWYgKHB5X2dldHJhbmRvbShidWZmZXIsIHNpemUsIDApID09IDEpCisgICAgICAgIHJldHVybjsKKyAgICAvKiBnZXRyYW5kb20oKSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbCwgZmFsbCBiYWNrCisgICAgICogb24gcmVhZGluZyAvZGV2L3VyYW5kb20gKi8KKyNlbmRpZgorCisgICAgZmQgPSBfUHlfb3Blbl9ub3JhaXNlKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7CiAgICAgaWYgKGZkIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIG9wZW4gL2Rldi91cmFuZG9tIik7CiAKQEAgLTE1MSwxNCArMjM4LDI3IEBACiB7CiAgICAgaW50IGZkOwogICAgIFB5X3NzaXplX3QgbjsKLSAgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0OworI2lmZGVmIFBZX0dFVFJBTkRPTQorICAgIGludCByZXM7CisjZW5kaWYKIAogICAgIGlmIChzaXplIDw9IDApCiAgICAgICAgIHJldHVybiAwOwogCisjaWZkZWYgUFlfR0VUUkFORE9NCisgICAgcmVzID0gcHlfZ2V0cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMSk7CisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAocmVzID09IDEpCisgICAgICAgIHJldHVybiAwOworICAgIC8qIGdldHJhbmRvbSgpIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHJ1bm5pbmcga2VybmVsLCBmYWxsIGJhY2sKKyAgICAgKiBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSAqLworI2VuZGlmCisKICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7CiAgICAgICAgIC8qIERvZXMgdGhlIGZkIHBvaW50IHRvIHRoZSBzYW1lIHRoaW5nIGFzIGJlZm9yZT8gKGlzc3VlICMyMTIwNykgKi8KLSAgICAgICAgaWYgKGZzdGF0KHVyYW5kb21fY2FjaGUuZmQsICZzdCkKKyAgICAgICAgaWYgKF9QeV9mc3RhdF9ub3JhaXNlKHVyYW5kb21fY2FjaGUuZmQsICZzdCkKICAgICAgICAgICAgIHx8IHN0LnN0X2RldiAhPSB1cmFuZG9tX2NhY2hlLnN0X2RldgogICAgICAgICAgICAgfHwgc3Quc3RfaW5vICE9IHVyYW5kb21fY2FjaGUuc3RfaW5vKSB7CiAgICAgICAgICAgICAvKiBTb21ldGhpbmcgY2hhbmdlZDogZm9yZ2V0IHRoZSBjYWNoZWQgZmQgKGJ1dCBkb24ndCBjbG9zZSBpdCwKQEAgLTE3MCwxNyArMjcwLDEzIEBACiAgICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkKICAgICAgICAgZmQgPSB1cmFuZG9tX2NhY2hlLmZkOwogICAgIGVsc2UgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIGZkID0gX1B5X29wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGZkIDwgMCkKLSAgICAgICAgeworICAgICAgICBpZiAoZmQgPCAwKSB7CiAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PRU5UIHx8IGVycm5vID09IEVOWElPIHx8CiAgICAgICAgICAgICAgICAgZXJybm8gPT0gRU5PREVWIHx8IGVycm5vID09IEVBQ0NFUykKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9kZXYvdXJhbmRvbSAob3IgZXF1aXZhbGVudCkgbm90IGZvdW5kIik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICAgICAgLyogb3RoZXJ3aXNlLCBrZWVwIHRoZSBPU0Vycm9yIGV4Y2VwdGlvbiByYWlzZWQgYnkgX1B5X29wZW4oKSAqLwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKQEAgLTE5MCw4ICsyODYsNyBAQAogICAgICAgICAgICAgZmQgPSB1cmFuZG9tX2NhY2hlLmZkOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKGZzdGF0KGZkLCAmc3QpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICAgICAgaWYgKF9QeV9mc3RhdChmZCwgJnN0KSkgewogICAgICAgICAgICAgICAgIGNsb3NlKGZkKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CkBAIC0yMDMsMjkgKzI5OCwyMSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGRvIHsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgbiA9IHJlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKLSAgICAgICAgfSB3aGlsZSAobiA8IDAgJiYgZXJybm8gPT0gRUlOVFIpOwotICAgICAgICBpZiAobiA8PSAwKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGJ1ZmZlciArPSBuOwotICAgICAgICBzaXplIC09IChQeV9zc2l6ZV90KW47Ci0gICAgfSB3aGlsZSAoMCA8IHNpemUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAobiA8PSAwKQotICAgIHsKLSAgICAgICAgLyogc3RvcCBvbiBlcnJvciBvciBpZiByZWFkKHNpemUpIHJldHVybmVkIDAgKi8KLSAgICAgICAgaWYgKG4gPCAwKQotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICBlbHNlCisgICAgICAgIG4gPSBfUHlfcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOworICAgICAgICBpZiAobiA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKG4gPT0gMCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHJlYWQgJXppIGJ5dGVzIGZyb20gL2Rldi91cmFuZG9tIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZWFkICV6aSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIsCisgICAgICAgICAgICAgICAgICAgIHNpemUpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgYnVmZmVyICs9IG47CisgICAgICAgIHNpemUgLT0gbjsKKyAgICB9IHdoaWxlICgwIDwgc2l6ZSk7CisKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjM4LDcgKzMyNSw3IEBACiAgICAgfQogfQogCi0jZW5kaWYgLyogSEFWRV9HRVRFTlRST1BZICovCisjZW5kaWYKIAogLyogRmlsbCBidWZmZXIgd2l0aCBwc2V1ZG8tcmFuZG9tIGJ5dGVzIGdlbmVyYXRlZCBieSBhIGxpbmVhciBjb25ncnVlbnQKICAgIGdlbmVyYXRvciAoTENHKToKZGlmZiAtLWdpdCBhL1B5dGhvbi9zeW10YWJsZS5jIGIvUHl0aG9uL3N5bXRhYmxlLmMKaW5kZXggOTUxMjY3My4uNmQxYTYyYiAxMDA2NDQKLS0tIGEvUHl0aG9uL3N5bXRhYmxlLmMKKysrIGIvUHl0aG9uL3N5bXRhYmxlLmMKQEAgLTQ3LDcgKzQ3LDYgQEAKICAgICBzdGUtPnN0ZV9kaXJlY3RpdmVzID0gTlVMTDsKIAogICAgIHN0ZS0+c3RlX3R5cGUgPSBibG9jazsKLSAgICBzdGUtPnN0ZV91bm9wdGltaXplZCA9IDA7CiAgICAgc3RlLT5zdGVfbmVzdGVkID0gMDsKICAgICBzdGUtPnN0ZV9mcmVlID0gMDsKICAgICBzdGUtPnN0ZV92YXJhcmdzID0gMDsKQEAgLTExMyw3ICsxMTIsNiBAQAogICAgIHsic3ltYm9scyIsICBUX09CSkVDVCwgT0ZGKHN0ZV9zeW1ib2xzKSwgUkVBRE9OTFl9LAogICAgIHsidmFybmFtZXMiLCBUX09CSkVDVCwgT0ZGKHN0ZV92YXJuYW1lcyksIFJFQURPTkxZfSwKICAgICB7ImNoaWxkcmVuIiwgVF9PQkpFQ1QsIE9GRihzdGVfY2hpbGRyZW4pLCBSRUFET05MWX0sCi0gICAgeyJvcHRpbWl6ZWQiLFRfSU5ULCAgICBPRkYoc3RlX3Vub3B0aW1pemVkKSwgUkVBRE9OTFl9LAogICAgIHsibmVzdGVkIiwgICBUX0lOVCwgICAgT0ZGKHN0ZV9uZXN0ZWQpLCBSRUFET05MWX0sCiAgICAgeyJ0eXBlIiwgICAgIFRfSU5ULCAgICBPRkYoc3RlX3R5cGUpLCBSRUFET05MWX0sCiAgICAgeyJsaW5lbm8iLCAgIFRfSU5ULCAgICBPRkYoc3RlX2xpbmVubyksIFJFQURPTkxZfSwKQEAgLTE4Miw3ICsxODAsNyBAQAogc3RhdGljIGludCBzeW10YWJsZV92aXNpdF9wYXJhbXMoc3RydWN0IHN5bXRhYmxlICpzdCwgYXNkbF9zZXEgKmFyZ3MpOwogc3RhdGljIGludCBzeW10YWJsZV92aXNpdF9hcmdhbm5vdGF0aW9ucyhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBhc2RsX3NlcSAqYXJncyk7CiBzdGF0aWMgaW50IHN5bXRhYmxlX2ltcGxpY2l0X2FyZyhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBpbnQgcG9zKTsKLXN0YXRpYyBpbnQgc3ltdGFibGVfdmlzaXRfYW5ub3RhdGlvbnMoc3RydWN0IHN5bXRhYmxlICpzdCwgc3RtdF90eSBzKTsKK3N0YXRpYyBpbnQgc3ltdGFibGVfdmlzaXRfYW5ub3RhdGlvbnMoc3RydWN0IHN5bXRhYmxlICpzdCwgc3RtdF90eSBzLCBhcmd1bWVudHNfdHksIGV4cHJfdHkpOwogc3RhdGljIGludCBzeW10YWJsZV92aXNpdF93aXRoaXRlbShzdHJ1Y3Qgc3ltdGFibGUgKnN0LCB3aXRoaXRlbV90eSBpdGVtKTsKIAogCkBAIC0yNzEsNyArMjY5LDYgQEAKICAgICB9CiAKICAgICBzdC0+c3RfdG9wID0gc3QtPnN0X2N1cjsKLSAgICBzdC0+c3RfY3VyLT5zdGVfdW5vcHRpbWl6ZWQgPSBPUFRfVE9QTEVWRUw7CiAgICAgc3dpdGNoIChtb2QtPmtpbmQpIHsKICAgICBjYXNlIE1vZHVsZV9raW5kOgogICAgICAgICBzZXEgPSBtb2QtPnYuTW9kdWxlLmJvZHk7CkBAIC0zNzEsMTUgKzM2OCwyMCBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeU9iamVjdCAqZGF0YTsKICAgICBhc3NlcnQoc3RlLT5zdGVfZGlyZWN0aXZlcyk7Ci0gICAgZm9yIChpID0gMDsgOyBpKyspIHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgUHlMaXN0X0dFVF9TSVpFKHN0ZS0+c3RlX2RpcmVjdGl2ZXMpOyBpKyspIHsKICAgICAgICAgZGF0YSA9IFB5TGlzdF9HRVRfSVRFTShzdGUtPnN0ZV9kaXJlY3RpdmVzLCBpKTsKICAgICAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2tFeGFjdChkYXRhKSk7Ci0gICAgICAgIGlmIChQeVR1cGxlX0dFVF9JVEVNKGRhdGEsIDApID09IG5hbWUpCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVja0V4YWN0KFB5VHVwbGVfR0VUX0lURU0oZGF0YSwgMCkpKTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlKFB5VHVwbGVfR0VUX0lURU0oZGF0YSwgMCksIG5hbWUpID09IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1N5bnRheExvY2F0aW9uT2JqZWN0KHN0ZS0+c3RlX3RhYmxlLT5zdF9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Bc0xvbmcoUHlUdXBsZV9HRVRfSVRFTShkYXRhLCAxKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfQXNMb25nKFB5VHVwbGVfR0VUX0lURU0oZGF0YSwgMikpKTsKKworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0gICAKICAgICB9Ci0gICAgUHlFcnJfU3ludGF4TG9jYXRpb25PYmplY3Qoc3RlLT5zdGVfdGFibGUtPnN0X2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Bc0xvbmcoUHlUdXBsZV9HRVRfSVRFTShkYXRhLCAxKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0FzTG9uZyhQeVR1cGxlX0dFVF9JVEVNKGRhdGEsIDIpKSk7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIkJVRzogaW50ZXJuYWwgZGlyZWN0aXZlIGJvb2trZWVwaW5nIGJyb2tlbiIpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMDg2LDEzICsxMDg4LDEzIEBACiAgICAgfSBcCiB9CiAKLSNkZWZpbmUgVklTSVRfS1dPTkxZREVGQVVMVFMoU1QsIEtXX0RFRkFVTFRTKSB7IFwKKyNkZWZpbmUgVklTSVRfU0VRX1dJVEhfTlVMTChTVCwgVFlQRSwgU0VRKSB7ICAgICBcCiAgICAgaW50IGkgPSAwOyBcCi0gICAgYXNkbF9zZXEgKnNlcSA9IChLV19ERUZBVUxUUyk7IC8qIGF2b2lkIHZhcmlhYmxlIGNhcHR1cmUgKi8gXAorICAgIGFzZGxfc2VxICpzZXEgPSAoU0VRKTsgLyogYXZvaWQgdmFyaWFibGUgY2FwdHVyZSAqLyBcCiAgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihzZXEpOyBpKyspIHsgXAotICAgICAgICBleHByX3R5IGVsdCA9IChleHByX3R5KWFzZGxfc2VxX0dFVChzZXEsIGkpOyBcCisgICAgICAgIFRZUEUgIyMgX3R5IGVsdCA9IChUWVBFICMjIF90eSlhc2RsX3NlcV9HRVQoc2VxLCBpKTsgXAogICAgICAgICBpZiAoIWVsdCkgY29udGludWU7IC8qIGNhbiBiZSBOVUxMICovIFwKLSAgICAgICAgaWYgKCFzeW10YWJsZV92aXNpdF9leHByKChTVCksIGVsdCkpIFwKKyAgICAgICAgaWYgKCFzeW10YWJsZV92aXNpdF8gIyMgVFlQRSgoU1QpLCBlbHQpKSBcCiAgICAgICAgICAgICBWSVNJVF9RVUlUKChTVCksIDApOyAgICAgICAgICAgICBcCiAgICAgfSBcCiB9CkBAIC0xMTE4LDE0ICsxMTIwLDE3IEBACiBzdGF0aWMgaW50CiBzeW10YWJsZV9yZWNvcmRfZGlyZWN0aXZlKHN0cnVjdCBzeW10YWJsZSAqc3QsIGlkZW50aWZpZXIgbmFtZSwgc3RtdF90eSBzKQogewotICAgIFB5T2JqZWN0ICpkYXRhOworICAgIFB5T2JqZWN0ICpkYXRhLCAqbWFuZ2xlZDsKICAgICBpbnQgcmVzOwogICAgIGlmICghc3QtPnN0X2N1ci0+c3RlX2RpcmVjdGl2ZXMpIHsKICAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2RpcmVjdGl2ZXMgPSBQeUxpc3RfTmV3KDApOwogICAgICAgICBpZiAoIXN0LT5zdF9jdXItPnN0ZV9kaXJlY3RpdmVzKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGRhdGEgPSBQeV9CdWlsZFZhbHVlKCIoT2lpKSIsIG5hbWUsIHMtPmxpbmVubywgcy0+Y29sX29mZnNldCk7CisgICAgbWFuZ2xlZCA9IF9QeV9NYW5nbGUoc3QtPnN0X3ByaXZhdGUsIG5hbWUpOworICAgIGlmICghbWFuZ2xlZCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgZGF0YSA9IFB5X0J1aWxkVmFsdWUoIihOaWkpIiwgbWFuZ2xlZCwgcy0+bGluZW5vLCBzLT5jb2xfb2Zmc2V0KTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJlcyA9IFB5TGlzdF9BcHBlbmQoc3QtPnN0X2N1ci0+c3RlX2RpcmVjdGl2ZXMsIGRhdGEpOwpAQCAtMTEzOCw3ICsxMTQzLDcgQEAKIHN5bXRhYmxlX3Zpc2l0X3N0bXQoc3RydWN0IHN5bXRhYmxlICpzdCwgc3RtdF90eSBzKQogewogICAgIGlmICgrK3N0LT5yZWN1cnNpb25fZGVwdGggPiBzdC0+cmVjdXJzaW9uX2xpbWl0KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SZWN1cnNpb25FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZCBkdXJpbmcgY29tcGlsYXRpb24iKTsKICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgfQpAQCAtMTE0OSw5ICsxMTU0LDkgQEAKICAgICAgICAgaWYgKHMtPnYuRnVuY3Rpb25EZWYuYXJncy0+ZGVmYXVsdHMpCiAgICAgICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIHMtPnYuRnVuY3Rpb25EZWYuYXJncy0+ZGVmYXVsdHMpOwogICAgICAgICBpZiAocy0+di5GdW5jdGlvbkRlZi5hcmdzLT5rd19kZWZhdWx0cykKLSAgICAgICAgICAgIFZJU0lUX0tXT05MWURFRkFVTFRTKHN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnYuRnVuY3Rpb25EZWYuYXJncy0+a3dfZGVmYXVsdHMpOwotICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0X2Fubm90YXRpb25zKHN0LCBzKSkKKyAgICAgICAgICAgIFZJU0lUX1NFUV9XSVRIX05VTEwoc3QsIGV4cHIsIHMtPnYuRnVuY3Rpb25EZWYuYXJncy0+a3dfZGVmYXVsdHMpOworICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0X2Fubm90YXRpb25zKHN0LCBzLCBzLT52LkZ1bmN0aW9uRGVmLmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+di5GdW5jdGlvbkRlZi5yZXR1cm5zKSkKICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICBpZiAocy0+di5GdW5jdGlvbkRlZi5kZWNvcmF0b3JfbGlzdCkKICAgICAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgcy0+di5GdW5jdGlvbkRlZi5kZWNvcmF0b3JfbGlzdCk7CkBAIC0xMTcwLDEwICsxMTc1LDYgQEAKICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIHMtPnYuQ2xhc3NEZWYuYmFzZXMpOwogICAgICAgICBWSVNJVF9TRVEoc3QsIGtleXdvcmQsIHMtPnYuQ2xhc3NEZWYua2V5d29yZHMpOwotICAgICAgICBpZiAocy0+di5DbGFzc0RlZi5zdGFyYXJncykKLSAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LkNsYXNzRGVmLnN0YXJhcmdzKTsKLSAgICAgICAgaWYgKHMtPnYuQ2xhc3NEZWYua3dhcmdzKQotICAgICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuQ2xhc3NEZWYua3dhcmdzKTsKICAgICAgICAgaWYgKHMtPnYuQ2xhc3NEZWYuZGVjb3JhdG9yX2xpc3QpCiAgICAgICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIHMtPnYuQ2xhc3NEZWYuZGVjb3JhdG9yX2xpc3QpOwogICAgICAgICBpZiAoIXN5bXRhYmxlX2VudGVyX2Jsb2NrKHN0LCBzLT52LkNsYXNzRGVmLm5hbWUsIENsYXNzQmxvY2ssCkBAIC0xMjQ1LDIxICsxMjQ2LDkgQEAKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbXBvcnRfa2luZDoKICAgICAgICAgVklTSVRfU0VRKHN0LCBhbGlhcywgcy0+di5JbXBvcnQubmFtZXMpOwotICAgICAgICAvKiBYWFggRG9uJ3QgaGF2ZSB0aGUgbGluZW5vIGF2YWlsYWJsZSBpbnNpZGUKLSAgICAgICAgICAgdmlzaXRfYWxpYXMgKi8KLSAgICAgICAgaWYgKHN0LT5zdF9jdXItPnN0ZV91bm9wdGltaXplZCAmJiAhc3QtPnN0X2N1ci0+c3RlX29wdF9saW5lbm8pIHsKLSAgICAgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9vcHRfbGluZW5vID0gcy0+bGluZW5vOwotICAgICAgICAgICAgc3QtPnN0X2N1ci0+c3RlX29wdF9jb2xfb2Zmc2V0ID0gcy0+Y29sX29mZnNldDsKLSAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEltcG9ydEZyb21fa2luZDoKICAgICAgICAgVklTSVRfU0VRKHN0LCBhbGlhcywgcy0+di5JbXBvcnRGcm9tLm5hbWVzKTsKLSAgICAgICAgLyogWFhYIERvbid0IGhhdmUgdGhlIGxpbmVubyBhdmFpbGFibGUgaW5zaWRlCi0gICAgICAgICAgIHZpc2l0X2FsaWFzICovCi0gICAgICAgIGlmIChzdC0+c3RfY3VyLT5zdGVfdW5vcHRpbWl6ZWQgJiYgIXN0LT5zdF9jdXItPnN0ZV9vcHRfbGluZW5vKSB7Ci0gICAgICAgICAgICBzdC0+c3RfY3VyLT5zdGVfb3B0X2xpbmVubyA9IHMtPmxpbmVubzsKLSAgICAgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9vcHRfY29sX29mZnNldCA9IHMtPmNvbF9vZmZzZXQ7Ci0gICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHbG9iYWxfa2luZDogewogICAgICAgICBpbnQgaTsKQEAgLTEzMzUsNiArMTMyNCwzOSBAQAogICAgICAgICBWSVNJVF9TRVEoc3QsIHdpdGhpdGVtLCBzLT52LldpdGguaXRlbXMpOwogICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuV2l0aC5ib2R5KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBc3luY0Z1bmN0aW9uRGVmX2tpbmQ6CisgICAgICAgIGlmICghc3ltdGFibGVfYWRkX2RlZihzdCwgcy0+di5Bc3luY0Z1bmN0aW9uRGVmLm5hbWUsIERFRl9MT0NBTCkpCisgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgaWYgKHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5hcmdzLT5kZWZhdWx0cykKKyAgICAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgcy0+di5Bc3luY0Z1bmN0aW9uRGVmLmFyZ3MtPmRlZmF1bHRzKTsKKyAgICAgICAgaWYgKHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5hcmdzLT5rd19kZWZhdWx0cykKKyAgICAgICAgICAgIFZJU0lUX1NFUV9XSVRIX05VTEwoc3QsIGV4cHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5hcmdzLT5rd19kZWZhdWx0cyk7CisgICAgICAgIGlmICghc3ltdGFibGVfdmlzaXRfYW5ub3RhdGlvbnMoc3QsIHMsIHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5yZXR1cm5zKSkKKyAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICBpZiAocy0+di5Bc3luY0Z1bmN0aW9uRGVmLmRlY29yYXRvcl9saXN0KQorICAgICAgICAgICAgVklTSVRfU0VRKHN0LCBleHByLCBzLT52LkFzeW5jRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3QpOworICAgICAgICBpZiAoIXN5bXRhYmxlX2VudGVyX2Jsb2NrKHN0LCBzLT52LkFzeW5jRnVuY3Rpb25EZWYubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbkJsb2NrLCAodm9pZCAqKXMsIHMtPmxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jb2xfb2Zmc2V0KSkKKyAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICBWSVNJVChzdCwgYXJndW1lbnRzLCBzLT52LkFzeW5jRnVuY3Rpb25EZWYuYXJncyk7CisgICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5Bc3luY0Z1bmN0aW9uRGVmLmJvZHkpOworICAgICAgICBpZiAoIXN5bXRhYmxlX2V4aXRfYmxvY2soc3QsIHMpKQorICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXN5bmNXaXRoX2tpbmQ6CisgICAgICAgIFZJU0lUX1NFUShzdCwgd2l0aGl0ZW0sIHMtPnYuQXN5bmNXaXRoLml0ZW1zKTsKKyAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LkFzeW5jV2l0aC5ib2R5KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBc3luY0Zvcl9raW5kOgorICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bc3luY0Zvci50YXJnZXQpOworICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bc3luY0Zvci5pdGVyKTsKKyAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LkFzeW5jRm9yLmJvZHkpOworICAgICAgICBpZiAocy0+di5Bc3luY0Zvci5vcmVsc2UpCisgICAgICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuQXN5bmNGb3Iub3JlbHNlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIFZJU0lUX1FVSVQoc3QsIDEpOwogfQpAQCAtMTM0Myw3ICsxMzY1LDcgQEAKIHN5bXRhYmxlX3Zpc2l0X2V4cHIoc3RydWN0IHN5bXRhYmxlICpzdCwgZXhwcl90eSBlKQogewogICAgIGlmICgrK3N0LT5yZWN1cnNpb25fZGVwdGggPiBzdC0+cmVjdXJzaW9uX2xpbWl0KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SZWN1cnNpb25FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZCBkdXJpbmcgY29tcGlsYXRpb24iKTsKICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgfQpAQCAtMTM2NCw4ICsxMzg2LDcgQEAKICAgICAgICAgaWYgKGUtPnYuTGFtYmRhLmFyZ3MtPmRlZmF1bHRzKQogICAgICAgICAgICAgVklTSVRfU0VRKHN0LCBleHByLCBlLT52LkxhbWJkYS5hcmdzLT5kZWZhdWx0cyk7CiAgICAgICAgIGlmIChlLT52LkxhbWJkYS5hcmdzLT5rd19kZWZhdWx0cykKLSAgICAgICAgICAgIFZJU0lUX0tXT05MWURFRkFVTFRTKHN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+di5MYW1iZGEuYXJncy0+a3dfZGVmYXVsdHMpOworICAgICAgICAgICAgVklTSVRfU0VRX1dJVEhfTlVMTChzdCwgZXhwciwgZS0+di5MYW1iZGEuYXJncy0+a3dfZGVmYXVsdHMpOwogICAgICAgICBpZiAoIXN5bXRhYmxlX2VudGVyX2Jsb2NrKHN0LCBsYW1iZGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25CbG9jaywgKHZvaWQgKillLCBlLT5saW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+Y29sX29mZnNldCkpCkBAIC0xMzgyLDcgKzE0MDMsNyBAQAogICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5JZkV4cC5vcmVsc2UpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERpY3Rfa2luZDoKLSAgICAgICAgVklTSVRfU0VRKHN0LCBleHByLCBlLT52LkRpY3Qua2V5cyk7CisgICAgICAgIFZJU0lUX1NFUV9XSVRIX05VTEwoc3QsIGV4cHIsIGUtPnYuRGljdC5rZXlzKTsKICAgICAgICAgVklTSVRfU0VRKHN0LCBleHByLCBlLT52LkRpY3QudmFsdWVzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZXRfa2luZDoKQEAgLTE0MTMsNiArMTQzNCwxMCBAQAogICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5ZaWVsZEZyb20udmFsdWUpOwogICAgICAgICBzdC0+c3RfY3VyLT5zdGVfZ2VuZXJhdG9yID0gMTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBd2FpdF9raW5kOgorICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5Bd2FpdC52YWx1ZSk7CisgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9nZW5lcmF0b3IgPSAxOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbXBhcmVfa2luZDoKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuQ29tcGFyZS5sZWZ0KTsKICAgICAgICAgVklTSVRfU0VRKHN0LCBleHByLCBlLT52LkNvbXBhcmUuY29tcGFyYXRvcnMpOwpAQCAtMTQyMCwxMSArMTQ0NSw3IEBACiAgICAgY2FzZSBDYWxsX2tpbmQ6CiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkNhbGwuZnVuYyk7CiAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgZS0+di5DYWxsLmFyZ3MpOwotICAgICAgICBWSVNJVF9TRVEoc3QsIGtleXdvcmQsIGUtPnYuQ2FsbC5rZXl3b3Jkcyk7Ci0gICAgICAgIGlmIChlLT52LkNhbGwuc3RhcmFyZ3MpCi0gICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5DYWxsLnN0YXJhcmdzKTsKLSAgICAgICAgaWYgKGUtPnYuQ2FsbC5rd2FyZ3MpCi0gICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5DYWxsLmt3YXJncyk7CisgICAgICAgIFZJU0lUX1NFUV9XSVRIX05VTEwoc3QsIGtleXdvcmQsIGUtPnYuQ2FsbC5rZXl3b3Jkcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTnVtX2tpbmQ6CiAgICAgY2FzZSBTdHJfa2luZDoKQEAgLTE1MTcsMTAgKzE1MzgsOSBAQAogfQogCiBzdGF0aWMgaW50Ci1zeW10YWJsZV92aXNpdF9hbm5vdGF0aW9ucyhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBzdG10X3R5IHMpCitzeW10YWJsZV92aXNpdF9hbm5vdGF0aW9ucyhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBzdG10X3R5IHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNfdHkgYSwgZXhwcl90eSByZXR1cm5zKQogewotICAgIGFyZ3VtZW50c190eSBhID0gcy0+di5GdW5jdGlvbkRlZi5hcmdzOwotCiAgICAgaWYgKGEtPmFyZ3MgJiYgIXN5bXRhYmxlX3Zpc2l0X2FyZ2Fubm90YXRpb25zKHN0LCBhLT5hcmdzKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKGEtPnZhcmFyZyAmJiBhLT52YXJhcmctPmFubm90YXRpb24pCkBAIC0xNTI5LDggKzE1NDksOCBAQAogICAgICAgICBWSVNJVChzdCwgZXhwciwgYS0+a3dhcmctPmFubm90YXRpb24pOwogICAgIGlmIChhLT5rd29ubHlhcmdzICYmICFzeW10YWJsZV92aXNpdF9hcmdhbm5vdGF0aW9ucyhzdCwgYS0+a3dvbmx5YXJncykpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChzLT52LkZ1bmN0aW9uRGVmLnJldHVybnMpCi0gICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LkZ1bmN0aW9uRGVmLnJldHVybnMpOworICAgIGlmIChyZXR1cm5zKQorICAgICAgICBWSVNJVChzdCwgZXhwciwgcmV0dXJucyk7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTE2MTUsNyArMTYzNSw2IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoc3RvcmVfbmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBzdC0+c3RfY3VyLT5zdGVfdW5vcHRpbWl6ZWQgfD0gT1BUX0lNUE9SVF9TVEFSOwogICAgICAgICBQeV9ERUNSRUYoc3RvcmVfbmFtZSk7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9zeXNtb2R1bGUuYyBiL1B5dGhvbi9zeXNtb2R1bGUuYwppbmRleCAyOTBlZWMxLi4zMzRmNWQwIDEwMDY0NAotLS0gYS9QeXRob24vc3lzbW9kdWxlLmMKKysrIGIvUHl0aG9uL3N5c21vZHVsZS5jCkBAIC02MzIsMTkgKzYzMiw4NCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHN5c19zZXRyZWN1cnNpb25saW1pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgaW50IG5ld19saW1pdDsKKyAgICBpbnQgbmV3X2xpbWl0LCBtYXJrOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpzZXRyZWN1cnNpb25saW1pdCIsICZuZXdfbGltaXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAobmV3X2xpbWl0IDw9IDApIHsKKworICAgIGlmIChuZXdfbGltaXQgPCAxKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlY3Vyc2lvbiBsaW1pdCBtdXN0IGJlIHBvc2l0aXZlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAicmVjdXJzaW9uIGxpbWl0IG11c3QgYmUgZ3JlYXRlciBvciBlcXVhbCB0aGFuIDEiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCisgICAgLyogSXNzdWUgIzI1Mjc0OiBXaGVuIHRoZSByZWN1cnNpb24gZGVwdGggaGl0cyB0aGUgcmVjdXJzaW9uIGxpbWl0IGluCisgICAgICAgX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbCgpLCB0aGUgb3ZlcmZsb3dlZCBmbGFnIG9mIHRoZSB0aHJlYWQgc3RhdGUgaXMKKyAgICAgICBzZXQgdG8gMSBhbmQgYSBSZWN1cnNpb25FcnJvciBpcyByYWlzZWQuIFRoZSBvdmVyZmxvd2VkIGZsYWcgaXMgcmVzZXQKKyAgICAgICB0byAwIHdoZW4gdGhlIHJlY3Vyc2lvbiBkZXB0aCBnb2VzIGJlbG93IHRoZSBsb3ctd2F0ZXIgbWFyazogc2VlCisgICAgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCkuCisKKyAgICAgICBSZWplY3QgdG9vIGxvdyBuZXcgbGltaXQgaWYgdGhlIGN1cnJlbnQgcmVjdXJzaW9uIGRlcHRoIGlzIGhpZ2hlciB0aGFuCisgICAgICAgdGhlIG5ldyBsb3ctd2F0ZXIgbWFyay4gT3RoZXJ3aXNlIGl0IG1heSBub3QgYmUgcG9zc2libGUgYW55bW9yZSB0bworICAgICAgIHJlc2V0IHRoZSBvdmVyZmxvd2VkIGZsYWcgdG8gMC4gKi8KKyAgICBtYXJrID0gX1B5X1JlY3Vyc2lvbkxpbWl0TG93ZXJXYXRlck1hcmsobmV3X2xpbWl0KTsKKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIGlmICh0c3RhdGUtPnJlY3Vyc2lvbl9kZXB0aCA+PSBtYXJrKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SZWN1cnNpb25FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJjYW5ub3Qgc2V0IHRoZSByZWN1cnNpb24gbGltaXQgdG8gJWkgYXQgIgorICAgICAgICAgICAgICAgICAgICAgInRoZSByZWN1cnNpb24gZGVwdGggJWk6IHRoZSBsaW1pdCBpcyB0b28gbG93IiwKKyAgICAgICAgICAgICAgICAgICAgIG5ld19saW1pdCwgdHN0YXRlLT5yZWN1cnNpb25fZGVwdGgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBQeV9TZXRSZWN1cnNpb25MaW1pdChuZXdfbGltaXQpOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3N5c19zZXRfY29yb3V0aW5lX3dyYXBwZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp3cmFwcGVyKQoreworICAgIGlmICh3cmFwcGVyICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKHdyYXBwZXIpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsYWJsZSBleHBlY3RlZCwgZ290ICUuNTBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHdyYXBwZXIpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIF9QeUV2YWxfU2V0Q29yb3V0aW5lV3JhcHBlcih3cmFwcGVyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9QeUV2YWxfU2V0Q29yb3V0aW5lV3JhcHBlcihOVUxMKTsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihzZXRfY29yb3V0aW5lX3dyYXBwZXJfZG9jLAorInNldF9jb3JvdXRpbmVfd3JhcHBlcih3cmFwcGVyKVxuXAorXG5cCitTZXQgYSB3cmFwcGVyIGZvciBjb3JvdXRpbmUgb2JqZWN0cy4iCispOworCitzdGF0aWMgUHlPYmplY3QgKgorc3lzX2dldF9jb3JvdXRpbmVfd3JhcHBlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKndyYXBwZXIgPSBfUHlFdmFsX0dldENvcm91dGluZVdyYXBwZXIoKTsKKyAgICBpZiAod3JhcHBlciA9PSBOVUxMKSB7CisgICAgICAgIHdyYXBwZXIgPSBQeV9Ob25lOworICAgIH0KKyAgICBQeV9JTkNSRUYod3JhcHBlcik7CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK1B5RG9jX1NUUlZBUihnZXRfY29yb3V0aW5lX3dyYXBwZXJfZG9jLAorImdldF9jb3JvdXRpbmVfd3JhcHBlcigpXG5cCitcblwKK1JldHVybiB0aGUgd3JhcHBlciBmb3IgY29yb3V0aW5lIG9iamVjdHMgc2V0IGJ5IHN5cy5zZXRfY29yb3V0aW5lX3dyYXBwZXIuIgorKTsKKworCiBzdGF0aWMgUHlUeXBlT2JqZWN0IEhhc2hfSW5mb1R5cGU7CiAKIFB5RG9jX1NUUlZBUihoYXNoX2luZm9fZG9jLApAQCAtNzcyLDYgKzgzNywxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlhIGluZGV4aW5nLCB0aGUgcmVzdCBhcmUgbmFtZSBvbmx5ICovCiB9OwogCisvKiBEaXNhYmxlIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGFib3V0IEdldFZlcnNpb25FeCBhcyB0aGUgcmVzdWx0IGlzCisgICBiZWluZyBwYXNzZWQgc3RyYWlnaHQgdGhyb3VnaCB0byB0aGUgY2FsbGVyLCB3aG8gaXMgcmVzcG9uc2libGUgZm9yCisgICB1c2luZyBpdCBjb3JyZWN0bHkuICovCisjcHJhZ21hIHdhcm5pbmcocHVzaCkKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5OTYpCisKIHN0YXRpYyBQeU9iamVjdCAqCiBzeXNfZ2V0d2luZG93c3ZlcnNpb24oUHlPYmplY3QgKnNlbGYpCiB7CkBAIC04MDMsNiArODc0LDggQEAKICAgICByZXR1cm4gdmVyc2lvbjsKIH0KIAorI3ByYWdtYSB3YXJuaW5nKHBvcCkKKwogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogI2lmZGVmIEhBVkVfRExPUEVOCkBAIC0xMTIxLDYgKzExOTQsMTYgQEAKICJfY2xlYXJfdHlwZV9jYWNoZSgpIC0+IE5vbmVcblwKIENsZWFyIHRoZSBpbnRlcm5hbCB0eXBlIGxvb2t1cCBjYWNoZS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK3N5c19pc19maW5hbGl6aW5nKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKF9QeV9GaW5hbGl6aW5nICE9IE5VTEwpOworfQorCitQeURvY19TVFJWQVIoaXNfZmluYWxpemluZ19kb2MsCisiaXNfZmluYWxpemluZygpXG5cCitSZXR1cm4gVHJ1ZSBpZiBQeXRob24gaXMgZXhpdGluZy4iKTsKKwogCiBzdGF0aWMgUHlNZXRob2REZWYgc3lzX21ldGhvZHNbXSA9IHsKICAgICAvKiBNaWdodCBhcyB3ZWxsIGtlZXAgdGhpcyBpbiBhbHBoYWJldGljIG9yZGVyICovCkBAIC0xMTY3LDYgKzEyNTAsNyBAQAogICAgICBnZXR3aW5kb3dzdmVyc2lvbl9kb2N9LAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICAgICB7ImludGVybiIsICAgICAgICAgIHN5c19pbnRlcm4sICAgICBNRVRIX1ZBUkFSR1MsIGludGVybl9kb2N9LAorICAgIHsiaXNfZmluYWxpemluZyIsICAgc3lzX2lzX2ZpbmFsaXppbmcsIE1FVEhfTk9BUkdTLCBpc19maW5hbGl6aW5nX2RvY30sCiAjaWZkZWYgVVNFX01BTExPUFQKICAgICB7Im1kZWJ1ZyIsICAgICAgICAgIHN5c19tZGVidWcsIE1FVEhfVkFSQVJHU30sCiAjZW5kaWYKQEAgLTExOTYsNiArMTI4MCwxMCBAQAogICAgIHsiY2FsbF90cmFjaW5nIiwgc3lzX2NhbGxfdHJhY2luZywgTUVUSF9WQVJBUkdTLCBjYWxsX3RyYWNpbmdfZG9jfSwKICAgICB7Il9kZWJ1Z21hbGxvY3N0YXRzIiwgc3lzX2RlYnVnbWFsbG9jc3RhdHMsIE1FVEhfTk9BUkdTLAogICAgICBkZWJ1Z21hbGxvY3N0YXRzX2RvY30sCisgICAgeyJzZXRfY29yb3V0aW5lX3dyYXBwZXIiLCBzeXNfc2V0X2Nvcm91dGluZV93cmFwcGVyLCBNRVRIX08sCisgICAgIHNldF9jb3JvdXRpbmVfd3JhcHBlcl9kb2N9LAorICAgIHsiZ2V0X2Nvcm91dGluZV93cmFwcGVyIiwgc3lzX2dldF9jb3JvdXRpbmVfd3JhcHBlciwgTUVUSF9OT0FSR1MsCisgICAgIGdldF9jb3JvdXRpbmVfd3JhcHBlcl9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xNjcwLDggKzE3NTgsOCBAQAogICAgIHRoZSBzaGVsbCBhbHJlYWR5IHByZXZlbnRzIHRoYXQuICovCiAjaWYgIWRlZmluZWQoTVNfV0lORE9XUykKICAgICB7Ci0gICAgICAgIHN0cnVjdCBzdGF0IHNiOwotICAgICAgICBpZiAoZnN0YXQoZmlsZW5vKHN0ZGluKSwgJnNiKSA9PSAwICYmCisgICAgICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc2I7CisgICAgICAgIGlmIChfUHlfZnN0YXRfbm9yYWlzZShmaWxlbm8oc3RkaW4pLCAmc2IpID09IDAgJiYKICAgICAgICAgICAgIFNfSVNESVIoc2Iuc3RfbW9kZSkpIHsKICAgICAgICAgICAgIC8qIFRoZXJlJ3Mgbm90aGluZyBtb3JlIHdlIGNhbiBkby4gKi8KICAgICAgICAgICAgIC8qIFB5X0ZhdGFsRXJyb3IoKSB3aWxsIGNvcmUgZHVtcCwgc28ganVzdCBleGl0LiAqLwpAQCAtMTY4MSw3ICsxNzY5LDcgQEAKICAgICB9CiAjZW5kaWYKIAotICAgIC8qIHN0ZGluL3N0ZG91dC9zdGRlcnIgYXJlIG5vdyBzZXQgYnkgcHl0aG9ucnVuLmMgKi8KKyAgICAvKiBzdGRpbi9zdGRvdXQvc3RkZXJyIGFyZSBzZXQgaW4gcHlsaWZlY3ljbGUuYyAqLwogCiAgICAgU0VUX1NZU19GUk9NX1NUUklOR19CT1JST1coIl9fZGlzcGxheWhvb2tfXyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlEaWN0X0dldEl0ZW1TdHJpbmcoc3lzZGljdCwgImRpc3BsYXlob29rIikpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZC5jIGIvUHl0aG9uL3RocmVhZC5jCmluZGV4IDgxMDY5MWYuLjYzZWViMWUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi90aHJlYWQuYworKysgYi9QeXRob24vdGhyZWFkLmMKQEAgLTQzMSw3ICs0MzEsNyBAQAogICAgICAmJiBkZWZpbmVkKF9DU19HTlVfTElCUFRIUkVBRF9WRVJTSU9OKSkKICAgICB2YWx1ZSA9IE5VTEw7CiAgICAgbGVuID0gY29uZnN0cihfQ1NfR05VX0xJQlBUSFJFQURfVkVSU0lPTiwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7Ci0gICAgaWYgKDEgPCBsZW4gJiYgbGVuIDwgc2l6ZW9mKGJ1ZmZlcikpIHsKKyAgICBpZiAoMSA8IGxlbiAmJiAoc2l6ZV90KWxlbiA8IHNpemVvZihidWZmZXIpKSB7CiAgICAgICAgIHZhbHVlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoYnVmZmVyLCBsZW4tMSk7CiAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfZm9vYmFyLmggYi9QeXRob24vdGhyZWFkX2Zvb2Jhci5oCmluZGV4IGQyYjc4YzUuLmVhOTZmOWMgMTAwNjQ0Ci0tLSBhL1B5dGhvbi90aHJlYWRfZm9vYmFyLmgKKysrIGIvUHl0aG9uL3RocmVhZF9mb29iYXIuaApAQCAtMSw0ICsxLDMgQEAKLQogLyoKICAqIEluaXRpYWxpemF0aW9uLgogICovCkBAIC02MSwxMCArNjAsMTggQEAKIGludAogUHlUaHJlYWRfYWNxdWlyZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrLCBpbnQgd2FpdGZsYWcpCiB7CisgICAgcmV0dXJuIFB5VGhyZWFkX2FjcXVpcmVfbG9ja190aW1lZChsb2NrLCB3YWl0ZmxhZyA/IC0xIDogMCwgMCk7Cit9CisKK1B5TG9ja1N0YXR1cworUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrLCBQWV9USU1FT1VUX1QgbWljcm9zZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnRyX2ZsYWcpCit7CiAgICAgaW50IHN1Y2Nlc3M7CiAKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgY2FsbGVkXG4iLCBsb2NrLCB3YWl0ZmxhZykpOwotICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSAtPiAlZFxuIiwgbG9jaywgd2FpdGZsYWcsIHN1Y2Nlc3MpKTsKKyAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKCVwLCAlbGxkLCAlZCkgY2FsbGVkXG4iLCBsb2NrLCBtaWNyb3NlY29uZHMsIGludHJfZmxhZykpOworICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQoJXAsICVsbGQsICVkKSAtPiAlZFxuIiwKKwkgICAgIGxvY2ssIG1pY3Jvc2Vjb25kcywgaW50cl9mbGFnLCBzdWNjZXNzKSk7CiAgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKQEAgLTczLDMgKzgwLDUzIEBACiB7CiAgICAgZHByaW50ZigoIlB5VGhyZWFkX3JlbGVhc2VfbG9jayglcCkgY2FsbGVkXG4iLCBsb2NrKSk7CiB9CisKKy8qIFRoZSBmb2xsb3dpbmcgYXJlIG9ubHkgbmVlZGVkIGlmIG5hdGl2ZSBUTFMgc3VwcG9ydCBleGlzdHMgKi8KKyNkZWZpbmUgUHlfSEFWRV9OQVRJVkVfVExTCisKKyNpZmRlZiBQeV9IQVZFX05BVElWRV9UTFMKK2ludAorUHlUaHJlYWRfY3JlYXRlX2tleSh2b2lkKQoreworICAgIGludCByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZAorUHlUaHJlYWRfZGVsZXRlX2tleShpbnQga2V5KQoreworCit9CisKK2ludAorUHlUaHJlYWRfc2V0X2tleV92YWx1ZShpbnQga2V5LCB2b2lkICp2YWx1ZSkKK3sKKyAgICBpbnQgb2s7CisKKyAgICAvKiBBIGZhaWx1cmUgaW4gdGhpcyBjYXNlIHJldHVybnMgLTEgKi8KKyAgICBpZiAoIW9rKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgKgorUHlUaHJlYWRfZ2V0X2tleV92YWx1ZShpbnQga2V5KQoreworICAgIHZvaWQgKnJlc3VsdDsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQKK1B5VGhyZWFkX2RlbGV0ZV9rZXlfdmFsdWUoaW50IGtleSkKK3sKKworfQorCit2b2lkCitQeVRocmVhZF9SZUluaXRUTFModm9pZCkKK3sKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfcHRocmVhZC5oIGIvUHl0aG9uL3RocmVhZF9wdGhyZWFkLmgKaW5kZXggZDlmN2M3Ni4uMjdlMGRjOCAxMDA2NDQKLS0tIGEvUHl0aG9uL3RocmVhZF9wdGhyZWFkLmgKKysrIGIvUHl0aG9uL3RocmVhZF9wdGhyZWFkLmgKQEAgLTYwOCw3ICs2MDgsMTUgQEAKIHsKICAgICBwdGhyZWFkX2tleV90IGtleTsKICAgICBpbnQgZmFpbCA9IHB0aHJlYWRfa2V5X2NyZWF0ZSgma2V5LCBOVUxMKTsKLSAgICByZXR1cm4gZmFpbCA/IC0xIDoga2V5OworICAgIGlmIChmYWlsKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKGtleSA+IElOVF9NQVgpIHsKKyAgICAgICAgLyogSXNzdWUgIzIyMjA2OiBoYW5kbGUgaW50ZWdlciBvdmVyZmxvdyAqLworICAgICAgICBwdGhyZWFkX2tleV9kZWxldGUoa2V5KTsKKyAgICAgICAgZXJybm8gPSBFTk9NRU07CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIChpbnQpa2V5OwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9QeXRob24vdHJhY2ViYWNrLmMgYi9QeXRob24vdHJhY2ViYWNrLmMKaW5kZXggN2QxZmMyZS4uOTQxZDFjYiAxMDA2NDQKLS0tIGEvUHl0aG9uL3RyYWNlYmFjay5jCisrKyBiL1B5dGhvbi90cmFjZWJhY2suYwpAQCAtMTMsNyArMTMsNyBAQAogCiAjZGVmaW5lIE9GRih4KSBvZmZzZXRvZihQeVRyYWNlYmFja09iamVjdCwgeCkKIAotI2RlZmluZSBQVVRTKGZkLCBzdHIpIHdyaXRlKGZkLCBzdHIsIChpbnQpc3RybGVuKHN0cikpCisjZGVmaW5lIFBVVFMoZmQsIHN0cikgX1B5X3dyaXRlX25vcmFpc2UoZmQsIHN0ciwgKGludClzdHJsZW4oc3RyKSkKICNkZWZpbmUgTUFYX1NUUklOR19MRU5HVEggNTAwCiAjZGVmaW5lIE1BWF9GUkFNRV9ERVBUSCAxMDAKICNkZWZpbmUgTUFYX05USFJFQURTIDEwMApAQCAtMjMxLDcgKzIzMSw3IEBACiAgICAgICAgIH0KICAgICAgICAgc3RyY3B5KG5hbWVidWYsIFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGgpKTsKICAgICAgICAgUHlfREVDUkVGKHBhdGgpOwotICAgICAgICBpZiAoc3RybGVuKG5hbWVidWYpICE9IGxlbikKKyAgICAgICAgaWYgKHN0cmxlbihuYW1lYnVmKSAhPSAoc2l6ZV90KWxlbikKICAgICAgICAgICAgIGNvbnRpbnVlOyAvKiB2IGNvbnRhaW5zICdcMCcgKi8KICAgICAgICAgaWYgKGxlbiA+IDAgJiYgbmFtZWJ1ZltsZW4tMV0gIT0gU0VQKQogICAgICAgICAgICAgbmFtZWJ1ZltsZW4rK10gPSBTRVA7CkBAIC01MTIsNyArNTEyLDcgQEAKICAgICAgICAgbGVuKys7CiAgICAgfSB3aGlsZSAodmFsdWUpOwogICAgIHJldmVyc2Vfc3RyaW5nKGJ1ZmZlciwgbGVuKTsKLSAgICB3cml0ZShmZCwgYnVmZmVyLCBsZW4pOworICAgIF9QeV93cml0ZV9ub3JhaXNlKGZkLCBidWZmZXIsIGxlbik7CiB9CiAKIC8qIEZvcm1hdCBhbiBpbnRlZ2VyIGluIHJhbmdlIFswOyAweGZmZmZmZmZmXSB0byBoZXhhZGVjaW1hbCBvZiAnd2lkdGgnIGRpZ2l0cywKQEAgLTUzMiw3ICs1MzIsNyBAQAogICAgICAgICBsZW4rKzsKICAgICB9IHdoaWxlIChsZW4gPCB3aWR0aCB8fCB2YWx1ZSk7CiAgICAgcmV2ZXJzZV9zdHJpbmcoYnVmZmVyLCBsZW4pOwotICAgIHdyaXRlKGZkLCBidWZmZXIsIGxlbik7CisgICAgX1B5X3dyaXRlX25vcmFpc2UoZmQsIGJ1ZmZlciwgbGVuKTsKIH0KIAogLyogV3JpdGUgYW4gdW5pY29kZSBvYmplY3QgaW50byB0aGUgZmlsZSBmZCB1c2luZyBhc2NpaStiYWNrc2xhc2hyZXBsYWNlLgpAQCAtNTgyLDE1ICs1ODIsMTYgQEAKICAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNoID0gd3N0cltpXTsKLSAgICAgICAgaWYgKGNoIDwgMTI4KSB7CisgICAgICAgIGlmICgnICcgPD0gY2ggJiYgY2ggPD0gMTI2KSB7CisgICAgICAgICAgICAvKiBwcmludGFibGUgQVNDSUkgY2hhcmFjdGVyICovCiAgICAgICAgICAgICBjaGFyIGMgPSAoY2hhciljaDsKLSAgICAgICAgICAgIHdyaXRlKGZkLCAmYywgMSk7CisgICAgICAgICAgICBfUHlfd3JpdGVfbm9yYWlzZShmZCwgJmMsIDEpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGNoIDwgMHhmZikgeworICAgICAgICBlbHNlIGlmIChjaCA8PSAweGZmKSB7CiAgICAgICAgICAgICBQVVRTKGZkLCAiXFx4Iik7CiAgICAgICAgICAgICBkdW1wX2hleGFkZWNpbWFsKGZkLCBjaCwgMik7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY2ggPCAweGZmZmYpIHsKKyAgICAgICAgZWxzZSBpZiAoY2ggPD0gMHhmZmZmKSB7CiAgICAgICAgICAgICBQVVRTKGZkLCAiXFx1Iik7CiAgICAgICAgICAgICBkdW1wX2hleGFkZWNpbWFsKGZkLCBjaCwgNCk7CiAgICAgICAgIH0KQEAgLTYxOCw5ICs2MTksOSBAQAogICAgIGlmIChjb2RlICE9IE5VTEwgJiYgY29kZS0+Y29fZmlsZW5hbWUgIT0gTlVMTAogICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2soY29kZS0+Y29fZmlsZW5hbWUpKQogICAgIHsKLSAgICAgICAgd3JpdGUoZmQsICJcIiIsIDEpOworICAgICAgICBQVVRTKGZkLCAiXCIiKTsKICAgICAgICAgZHVtcF9hc2NpaShmZCwgY29kZS0+Y29fZmlsZW5hbWUpOwotICAgICAgICB3cml0ZShmZCwgIlwiIiwgMSk7CisgICAgICAgIFBVVFMoZmQsICJcIiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFBVVFMoZmQsICI/Pz8iKTsKICAgICB9CkBAIC02MzcsNyArNjM4LDcgQEAKICAgICBlbHNlCiAgICAgICAgIFBVVFMoZmQsICI/Pz8iKTsKIAotICAgIHdyaXRlKGZkLCAiXG4iLCAxKTsKKyAgICBQVVRTKGZkLCAiXG4iKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTY2Nyw2ICs2NjgsMTIgQEAKICAgICB9CiB9CiAKKy8qIER1bXAgdGhlIHRyYWNlYmFjayBvZiBhIFB5dGhvbiB0aHJlYWQgaW50byBmZC4gVXNlIHdyaXRlKCkgdG8gd3JpdGUgdGhlCisgICB0cmFjZWJhY2sgYW5kIHJldHJ5IGlmIHdyaXRlKCkgaXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKGZhaWxlZCB3aXRoCisgICBFSU5UUiksIGJ1dCBkb24ndCBjYWxsIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIuCisKKyAgIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgdG8gY2FsbCBQeUVycl9DaGVja1NpZ25hbHMoKSB0byBjYWxsIFB5dGhvbiBzaWduYWwKKyAgIGhhbmRsZXJzIGlmIHNpZ25hbHMgd2VyZSByZWNlaXZlZC4gKi8KIHZvaWQKIF9QeV9EdW1wVHJhY2ViYWNrKGludCBmZCwgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKQogewpAQCAtNjg1LDEwICs2OTIsMTYgQEAKICAgICAgICAgUFVUUyhmZCwgIkN1cnJlbnQgdGhyZWFkIDB4Iik7CiAgICAgZWxzZQogICAgICAgICBQVVRTKGZkLCAiVGhyZWFkIDB4Iik7Ci0gICAgZHVtcF9oZXhhZGVjaW1hbChmZCwgKHVuc2lnbmVkIGxvbmcpdHN0YXRlLT50aHJlYWRfaWQsIHNpemVvZihsb25nKSoyKTsKKyAgICBkdW1wX2hleGFkZWNpbWFsKGZkLCAodW5zaWduZWQgbG9uZyl0c3RhdGUtPnRocmVhZF9pZCwgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKjIpOwogICAgIFBVVFMoZmQsICIgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOlxuIik7CiB9CiAKKy8qIER1bXAgdGhlIHRyYWNlYmFjayBvZiBhbGwgUHl0aG9uIHRocmVhZHMgaW50byBmZC4gVXNlIHdyaXRlKCkgdG8gd3JpdGUgdGhlCisgICB0cmFjZWJhY2sgYW5kIHJldHJ5IGlmIHdyaXRlKCkgaXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKGZhaWxlZCB3aXRoCisgICBFSU5UUiksIGJ1dCBkb24ndCBjYWxsIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIuCisKKyAgIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgdG8gY2FsbCBQeUVycl9DaGVja1NpZ25hbHMoKSB0byBjYWxsIFB5dGhvbiBzaWduYWwKKyAgIGhhbmRsZXJzIGlmIHNpZ25hbHMgd2VyZSByZWNlaXZlZC4gKi8KIGNvbnN0IGNoYXIqCiBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoaW50IGZkLCBQeUludGVycHJldGVyU3RhdGUgKmludGVycCwKICAgICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RocmVhZCkKQEAgLTcwNCwxMCArNzE3LDExIEBACiAgICAgLyogRHVtcCB0aGUgdHJhY2ViYWNrIG9mIGVhY2ggdGhyZWFkICovCiAgICAgdHN0YXRlID0gUHlJbnRlcnByZXRlclN0YXRlX1RocmVhZEhlYWQoaW50ZXJwKTsKICAgICBudGhyZWFkcyA9IDA7CisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGRvCiAgICAgewogICAgICAgICBpZiAobnRocmVhZHMgIT0gMCkKLSAgICAgICAgICAgIHdyaXRlKGZkLCAiXG4iLCAxKTsKKyAgICAgICAgICAgIFBVVFMoZmQsICJcbiIpOwogICAgICAgICBpZiAobnRocmVhZHMgPj0gTUFYX05USFJFQURTKSB7CiAgICAgICAgICAgICBQVVRTKGZkLCAiLi4uXG4iKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzE3LDYgKzczMSw3IEBACiAgICAgICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfTmV4dCh0c3RhdGUpOwogICAgICAgICBudGhyZWFkcysrOwogICAgIH0gd2hpbGUgKHRzdGF0ZSAhPSBOVUxMKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogCiAgICAgcmV0dXJuIE5VTEw7CiB9CmRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKaW5kZXggOTE5MGM1Yy4uMWJhNzQyZSAxMDA2NDQKLS0tIGEvUkVBRE1FCisrKyBiL1JFQURNRQpAQCAtMSwxMyArMSwxNCBAQAotVGhpcyBpcyBQeXRob24gdmVyc2lvbiAzLjQuNAorVGhpcyBpcyBQeXRob24gdmVyc2lvbiAzLjUuMQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsCiAyMDEyLCAyMDEzLCAyMDE0LCAyMDE1LCAyMDE2IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAotUHl0aG9uIDMueCBpcyBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBsYW5ndWFnZSwgd2hpY2ggaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIDIueAotbGluZSBvZiByZWxlYXNlcy4gIFRoZSBsYW5ndWFnZSBpcyBtb3N0bHkgdGhlIHNhbWUsIGJ1dCBtYW55IGRldGFpbHMsIGVzcGVjaWFsbHkKLWhvdyBidWlsdC1pbiBvYmplY3RzIGxpa2UgZGljdGlvbmFyaWVzIGFuZCBzdHJpbmdzIHdvcmssIGhhdmUgY2hhbmdlZAotY29uc2lkZXJhYmx5LCBhbmQgYSBsb3Qgb2YgZGVwcmVjYXRlZCBmZWF0dXJlcyBoYXZlIGZpbmFsbHkgYmVlbiByZW1vdmVkLgorUHl0aG9uIDMueCBpcyBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBsYW5ndWFnZSwgd2hpY2ggaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlCisyLnggbGluZSBvZiByZWxlYXNlcy4gIFRoZSBsYW5ndWFnZSBpcyBtb3N0bHkgdGhlIHNhbWUsIGJ1dCBtYW55IGRldGFpbHMsCitlc3BlY2lhbGx5IGhvdyBidWlsdC1pbiBvYmplY3RzIGxpa2UgZGljdGlvbmFyaWVzIGFuZCBzdHJpbmdzIHdvcmssCitoYXZlIGNoYW5nZWQgY29uc2lkZXJhYmx5LCBhbmQgYSBsb3Qgb2YgZGVwcmVjYXRlZCBmZWF0dXJlcyBoYXZlIGZpbmFsbHkKK2JlZW4gcmVtb3ZlZC4KIAogCiBCdWlsZCBJbnN0cnVjdGlvbnMKQEAgLTE1LDggKzE2LDYgQEAKIAogT24gVW5peCwgTGludXgsIEJTRCwgT1NYLCBhbmQgQ3lnd2luOgogCi1OZXcgdGV4dAotCiAgICAgLi9jb25maWd1cmUKICAgICBtYWtlCiAgICAgbWFrZSB0ZXN0CkBAIC0yOSwxNCArMjgsMTQgQEAKIGVsc2V3aGVyZSBpdCdzIGp1c3QgcHl0aG9uLgogCiBPbiBNYWMgT1MgWCwgaWYgeW91IGhhdmUgY29uZmlndXJlZCBQeXRob24gd2l0aCAtLWVuYWJsZS1mcmFtZXdvcmssIHlvdSBzaG91bGQKLXVzZSAibWFrZSBmcmFtZXdvcmtpbnN0YWxsIiB0byBkbyB0aGUgaW5zdGFsbGF0aW9uLiAgTm90ZSB0aGF0IHRoaXMgaW5zdGFsbHMgdGhlCi1QeXRob24gZXhlY3V0YWJsZSBpbiBhIHBsYWNlIHRoYXQgaXMgbm90IG5vcm1hbGx5IG9uIHlvdXIgUEFUSCwgeW91IG1heSB3YW50IHRvCi1zZXQgdXAgYSBzeW1saW5rIGluIC91c3IvbG9jYWwvYmluLgordXNlICJtYWtlIGZyYW1ld29ya2luc3RhbGwiIHRvIGRvIHRoZSBpbnN0YWxsYXRpb24uICBOb3RlIHRoYXQgdGhpcyBpbnN0YWxscwordGhlIFB5dGhvbiBleGVjdXRhYmxlIGluIGEgcGxhY2UgdGhhdCBpcyBub3Qgbm9ybWFsbHkgb24geW91ciBQQVRILCB5b3UgbWF5Cit3YW50IHRvIHNldCB1cCBhIHN5bWxpbmsgaW4gL3Vzci9sb2NhbC9iaW4uCiAKIE9uIFdpbmRvd3MsIHNlZSBQQ2J1aWxkL3JlYWRtZS50eHQuCiAKLUlmIHlvdSB3aXNoLCB5b3UgY2FuIGNyZWF0ZSBhIHN1YmRpcmVjdG9yeSBhbmQgaW52b2tlIGNvbmZpZ3VyZSBmcm9tIHRoZXJlLiAgRm9yCi1leGFtcGxlOgorSWYgeW91IHdpc2gsIHlvdSBjYW4gY3JlYXRlIGEgc3ViZGlyZWN0b3J5IGFuZCBpbnZva2UgY29uZmlndXJlIGZyb20gdGhlcmUuCitGb3IgZXhhbXBsZToKIAogICAgIG1rZGlyIGRlYnVnCiAgICAgY2QgZGVidWcKQEAgLTQ0LDIxICs0Myw0OSBAQAogICAgIG1ha2UKICAgICBtYWtlIHRlc3QKIAotKFRoaXMgd2lsbCBmYWlsIGlmIHlvdSAqYWxzbyogYnVpbHQgYXQgdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuICBZb3Ugc2hvdWxkIGRvIGEKLSJtYWtlIGNsZWFuIiBhdCB0aGUgdG9wbGV2ZWwgZmlyc3QuKQorKFRoaXMgd2lsbCBmYWlsIGlmIHlvdSAqYWxzbyogYnVpbHQgYXQgdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCitZb3Ugc2hvdWxkIGRvIGEgIm1ha2UgY2xlYW4iIGF0IHRoZSB0b3BsZXZlbCBmaXJzdC4pCisKK0lmIHlvdSBuZWVkIGFuIG9wdGltaXplZCB2ZXJzaW9uIG9mIFB5dGhvbiwgeW91IHR5cGUgIm1ha2UgcHJvZmlsZS1vcHQiIGluIHRoZQordG9wIGxldmVsIGRpcmVjdG9yeS4gVGhpcyB3aWxsIHJlYnVpbGQgdGhlIGludGVycHJldGVyIGV4ZWN1dGFibGUgdXNpbmcgUHJvZmlsZQorR3VpZGVkIE9wdGltaXphdGlvbiAoUEdPKS4gRm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZSBzZWN0aW9uIGJlbGxvdy4KKworCitQcm9maWxlIEd1aWRlZCBPcHRpbWl6YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQR08gdGFrZXMgYWR2YW50YWdlIG9mIHJlY2VudCB2ZXJzaW9ucyBvZiB0aGUgR0NDIG9yIENsYW5nIGNvbXBpbGVycy4KK0lmIHJhbiwgdGhlICJwcm9maWxlLW9wdCIgcnVsZSB3aWxsIGRvIHNldmVyYWwgc3RlcHMuCisKK0ZpcnN0LCB0aGUgZW50aXJlIFB5dGhvbiBkaXJlY3RvcnkgaXMgY2xlYW5lZCBvZiB0ZW1wb3JhcnkgZmlsZXMgdGhhdAorbWF5IHJlc3VsdGVkIGluIGEgcHJldmlvdXMgY29tcGlsYXRpb24uCisKK1RoZW4sIGFuIGluc3RydW1lbnRlZCB2ZXJzaW9uIG9mIHRoZSBpbnRlcnByZXRlciBpcyBidWlsdCwgdXNpbmcgc3VpdGFibGUKK2NvbXBpbGVyIGZsYWdzIGZvciBlYWNoIGZsYXZvdXIuIE5vdGUgdGhhdCB0aGlzIGlzIGp1c3QgYW4gaW50ZXJtZWRpYXJ5CitzdGVwIGFuZCB0aGUgYmluYXJ5IHJlc3VsdGVkIGFmdGVyIHRoaXMgc3RlcCBpcyBub3QgZ29vZCBmb3IgcmVhbCBsaWZlCit3b3JrbG9hZHMsIGFzIGl0IGhhcyBwcm9maWxpbmcgaW5zdHJ1Y3Rpb25zIGVtYmVkZGVkIGluc2lkZS4KKworQWZ0ZXIgdGhpcyBpbnN0cnVtZW50ZWQgdmVyc2lvbiBvZiB0aGUgaW50ZXJwcmV0ZXIgaXMgYnVpbHQsIHRoZSBNYWtlZmlsZQord2lsbCBhdXRvbWF0aWNhbGx5IHJ1biBhIHRyYWluaW5nIHdvcmtsb2FkLiBUaGlzIGlzIG5lY2Vzc2FyeSBpbiBvcmRlciB0bworcHJvZmlsZSB0aGUgaW50ZXJwcmV0ZXIgZXhlY3V0aW9uLiBOb3RlIGFsc28gdGhhdCBhbnkgb3V0cHV0LCBib3RoIHN0ZG91dAorYW5kIHN0ZGVyciwgdGhhdCBtYXkgYXBwZWFyIGF0IHRoaXMgc3RlcCBpcyBzdXByZXNzZWQuCisKK0ZpbmFsbHksIHRoZSBsYXN0IHN0ZXAgaXMgdG8gcmVidWlsZCB0aGUgaW50ZXJwcmV0ZXIsIHVzaW5nIHRoZSBpbmZvcm1hdGlvbgorY29sbGVjdGVkIGluIHRoZSBwcmV2aW91cyBvbmUuIFRoZSBlbmQgcmVzdWx0IHdpbGwgYmUgYSB0aGUgUHl0aG9uIGJpbmFyeQordGhhdCBpcyBvcHRpbWl6ZWQgYW5kIHN1aXRhYmxlIGZvciBkaXN0cmlidXRpb24gb3IgcHJvZHVjdGlvbiBpbnN0YWxsYXRpb24uCiAKIAogV2hhdCdzIE5ldwogLS0tLS0tLS0tLQogCi1XZSB0cnkgdG8gaGF2ZSBhIGNvbXByZWhlbnNpdmUgb3ZlcnZpZXcgb2YgdGhlIGNoYW5nZXMgaW4gdGhlICJXaGF0J3MgTmV3IGluCi1QeXRob24gMy40IiBkb2N1bWVudCwgZm91bmQgYXQKK1dlIGhhdmUgYSBjb21wcmVoZW5zaXZlIG92ZXJ2aWV3IG9mIHRoZSBjaGFuZ2VzIGluIHRoZSAiV2hhdCdzIE5ldyBpbgorUHl0aG9uIDMuNSIgZG9jdW1lbnQsIGZvdW5kIGF0CiAKLSAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNC93aGF0c25ldy8zLjQuaHRtbAorICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy41L3doYXRzbmV3LzMuNS5odG1sCiAKLUZvciBhIG1vcmUgZGV0YWlsZWQgY2hhbmdlIGxvZywgcmVhZCBNaXNjL05FV1MgKHRob3VnaCB0aGlzIGZpbGUsIHRvbywgaXMKLWluY29tcGxldGUsIGFuZCBhbHNvIGRvZXNuJ3QgbGlzdCBhbnl0aGluZyBtZXJnZWQgaW4gZnJvbSB0aGUgMi43IHJlbGVhc2UgdW5kZXIKLWRldmVsb3BtZW50KS4KK0ZvciBhIG1vcmUgZGV0YWlsZWQgY2hhbmdlIGxvZywgcmVhZCBNaXNjL05FV1MgKHRob3VnaCB0aGlzIGZpbGUsIHRvbywKK2lzIGluY29tcGxldGUsIGFuZCBhbHNvIGRvZXNuJ3QgbGlzdCBhbnl0aGluZyBtZXJnZWQgaW4gZnJvbSB0aGUgMi43CityZWxlYXNlIHVuZGVyIGRldmVsb3BtZW50KS4KIAogSWYgeW91IHdhbnQgdG8gaW5zdGFsbCBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24gc2VlIHRoZSBzZWN0aW9uIGJlbG93CiBlbnRpdGxlZCAiSW5zdGFsbGluZyBtdWx0aXBsZSB2ZXJzaW9ucyIuCkBAIC02Nyw5ICs5NCw5IEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLURvY3VtZW50YXRpb24gZm9yIFB5dGhvbiAzLjQgaXMgb25saW5lLCB1cGRhdGVkIGRhaWx5OgorRG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uIDMuNSBpcyBvbmxpbmUsIHVwZGF0ZWQgZGFpbHk6CiAKLSAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNC8KKyAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNS8KIAogSXQgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiBtYW55IGZvcm1hdHMgZm9yIGZhc3RlciBhY2Nlc3MuICBUaGUgZG9jdW1lbnRhdGlvbgogaXMgZG93bmxvYWRhYmxlIGluIEhUTUwsIFBERiwgYW5kIHJlU3RydWN0dXJlZFRleHQgZm9ybWF0czsgdGhlIGxhdHRlciB2ZXJzaW9uCkBAIC05NCwxNiArMTIxLDE3IEBACiBBIHNvdXJjZS10by1zb3VyY2UgdHJhbnNsYXRpb24gdG9vbCwgIjJ0bzMiLCBjYW4gdGFrZSBjYXJlIG9mIHRoZSBtdW5kYW5lIHRhc2sKIG9mIGNvbnZlcnRpbmcgbGFyZ2UgYW1vdW50cyBvZiBzb3VyY2UgY29kZS4gIEl0IGlzIG5vdCBhIGNvbXBsZXRlIHNvbHV0aW9uIGJ1dAogaXMgY29tcGxlbWVudGVkIGJ5IHRoZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBpbiAyLjYuICBTZWUKLWh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy40L2xpYnJhcnkvMnRvMy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgoraHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjUvbGlicmFyeS8ydG8zLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIAogVGVzdGluZwogLS0tLS0tLQogCi1UbyB0ZXN0IHRoZSBpbnRlcnByZXRlciwgdHlwZSAibWFrZSB0ZXN0IiBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4gIFRoZSB0ZXN0Ci1zZXQgcHJvZHVjZXMgc29tZSBvdXRwdXQuICBZb3UgY2FuIGdlbmVyYWxseSBpZ25vcmUgdGhlIG1lc3NhZ2VzIGFib3V0IHNraXBwZWQKLXRlc3RzIGR1ZSB0byBvcHRpb25hbCBmZWF0dXJlcyB3aGljaCBjYW4ndCBiZSBpbXBvcnRlZC4gIElmIGEgbWVzc2FnZSBpcyBwcmludGVkCi1hYm91dCBhIGZhaWxlZCB0ZXN0IG9yIGEgdHJhY2ViYWNrIG9yIGNvcmUgZHVtcCBpcyBwcm9kdWNlZCwgc29tZXRoaW5nIGlzIHdyb25nLgorVG8gdGVzdCB0aGUgaW50ZXJwcmV0ZXIsIHR5cGUgIm1ha2UgdGVzdCIgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCitUaGUgdGVzdCBzZXQgcHJvZHVjZXMgc29tZSBvdXRwdXQuICBZb3UgY2FuIGdlbmVyYWxseSBpZ25vcmUgdGhlIG1lc3NhZ2VzCithYm91dCBza2lwcGVkIHRlc3RzIGR1ZSB0byBvcHRpb25hbCBmZWF0dXJlcyB3aGljaCBjYW4ndCBiZSBpbXBvcnRlZC4KK0lmIGEgbWVzc2FnZSBpcyBwcmludGVkIGFib3V0IGEgZmFpbGVkIHRlc3Qgb3IgYSB0cmFjZWJhY2sgb3IgY29yZSBkdW1wCitpcyBwcm9kdWNlZCwgc29tZXRoaW5nIGlzIHdyb25nLgogCiBCeSBkZWZhdWx0LCB0ZXN0cyBhcmUgcHJldmVudGVkIGZyb20gb3ZlcnVzaW5nIHJlc291cmNlcyBsaWtlIGRpc2sgc3BhY2UgYW5kCiBtZW1vcnkuICBUbyBlbmFibGUgdGhlc2UgdGVzdHMsIHJ1biAibWFrZSB0ZXN0YWxsIi4KQEAgLTEyMywxNiArMTUxLDE2IEBACiAKIE9uIFVuaXggYW5kIE1hYyBzeXN0ZW1zIGlmIHlvdSBpbnRlbmQgdG8gaW5zdGFsbCBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24KIHVzaW5nIHRoZSBzYW1lIGluc3RhbGxhdGlvbiBwcmVmaXggKC0tcHJlZml4IGFyZ3VtZW50IHRvIHRoZSBjb25maWd1cmUgc2NyaXB0KQoteW91IG11c3QgdGFrZSBjYXJlIHRoYXQgeW91ciBwcmltYXJ5IHB5dGhvbiBleGVjdXRhYmxlIGlzIG5vdCBvdmVyd3JpdHRlbiBieSB0aGUKLWluc3RhbGxhdGlvbiBvZiBhIGRpZmZlcmVudCB2ZXJzaW9uLiAgQWxsIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbnN0YWxsZWQgdXNpbmcKLSJtYWtlIGFsdGluc3RhbGwiIGNvbnRhaW4gdGhlIG1ham9yIGFuZCBtaW5vciB2ZXJzaW9uIGFuZCBjYW4gdGh1cyBsaXZlCi1zaWRlLWJ5LXNpZGUuICAibWFrZSBpbnN0YWxsIiBhbHNvIGNyZWF0ZXMgJHtwcmVmaXh9L2Jpbi9weXRob24zIHdoaWNoIHJlZmVycyB0bwotJHtwcmVmaXh9L2Jpbi9weXRob25YLlkuICBJZiB5b3UgaW50ZW5kIHRvIGluc3RhbGwgbXVsdGlwbGUgdmVyc2lvbnMgdXNpbmcgdGhlCi1zYW1lIHByZWZpeCB5b3UgbXVzdCBkZWNpZGUgd2hpY2ggdmVyc2lvbiAoaWYgYW55KSBpcyB5b3VyICJwcmltYXJ5IiB2ZXJzaW9uLgotSW5zdGFsbCB0aGF0IHZlcnNpb24gdXNpbmcgIm1ha2UgaW5zdGFsbCIuICBJbnN0YWxsIGFsbCBvdGhlciB2ZXJzaW9ucyB1c2luZwotIm1ha2UgYWx0aW5zdGFsbCIuCit5b3UgbXVzdCB0YWtlIGNhcmUgdGhhdCB5b3VyIHByaW1hcnkgcHl0aG9uIGV4ZWN1dGFibGUgaXMgbm90IG92ZXJ3cml0dGVuIGJ5Cit0aGUgaW5zdGFsbGF0aW9uIG9mIGEgZGlmZmVyZW50IHZlcnNpb24uICBBbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluc3RhbGxlZAordXNpbmcgIm1ha2UgYWx0aW5zdGFsbCIgY29udGFpbiB0aGUgbWFqb3IgYW5kIG1pbm9yIHZlcnNpb24gYW5kIGNhbiB0aHVzIGxpdmUKK3NpZGUtYnktc2lkZS4gICJtYWtlIGluc3RhbGwiIGFsc28gY3JlYXRlcyAke3ByZWZpeH0vYmluL3B5dGhvbjMgd2hpY2ggcmVmZXJzCit0byAke3ByZWZpeH0vYmluL3B5dGhvblguWS4gIElmIHlvdSBpbnRlbmQgdG8gaW5zdGFsbCBtdWx0aXBsZSB2ZXJzaW9ucyB1c2luZwordGhlIHNhbWUgcHJlZml4IHlvdSBtdXN0IGRlY2lkZSB3aGljaCB2ZXJzaW9uIChpZiBhbnkpIGlzIHlvdXIgInByaW1hcnkiCit2ZXJzaW9uLiAgSW5zdGFsbCB0aGF0IHZlcnNpb24gdXNpbmcgIm1ha2UgaW5zdGFsbCIuICBJbnN0YWxsIGFsbCBvdGhlcgordmVyc2lvbnMgdXNpbmcgIm1ha2UgYWx0aW5zdGFsbCIuCiAKLUZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBpbnN0YWxsIFB5dGhvbiAyLjYsIDIuNyBhbmQgMy40IHdpdGggMi43IGJlaW5nIHRoZQorRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGluc3RhbGwgUHl0aG9uIDIuNiwgMi43IGFuZCAzLjUgd2l0aCAyLjcgYmVpbmcgdGhlCiBwcmltYXJ5IHZlcnNpb24sIHlvdSB3b3VsZCBleGVjdXRlICJtYWtlIGluc3RhbGwiIGluIHlvdXIgMi43IGJ1aWxkIGRpcmVjdG9yeQogYW5kICJtYWtlIGFsdGluc3RhbGwiIGluIHRoZSBvdGhlcnMuCiAKQEAgLTE0MSw3ICsxNjksNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFdlJ3JlIHNvbGljaXRpbmcgYnVnIHJlcG9ydHMgYWJvdXQgYWxsIGFzcGVjdHMgb2YgdGhlIGxhbmd1YWdlLiAgRml4ZXMgYXJlIGFsc28KLXdlbGNvbWUsIHByZWZlcmFibGUgaW4gdW5pZmllZCBkaWZmIGZvcm1hdC4gIFBsZWFzZSB1c2UgdGhlIGlzc3VlIHRyYWNrZXI6Cit3ZWxjb21lLCBwcmVmZXJhYmx5IGluIHVuaWZpZWQgZGlmZiBmb3JtYXQuICBQbGVhc2UgdXNlIHRoZSBpc3N1ZSB0cmFja2VyOgogCiAgICAgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy8KIApAQCAtMTY4LDcgKzE5Niw3IEBACiBSZWxlYXNlIFNjaGVkdWxlCiAtLS0tLS0tLS0tLS0tLS0tCiAKLVNlZSBQRVAgNDI5IGZvciByZWxlYXNlIGRldGFpbHM6IGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDQyOS8KK1NlZSBQRVAgNDc4IGZvciByZWxlYXNlIGRldGFpbHM6IGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDQ3OC8KIAogCiBDb3B5cmlnaHQgYW5kIExpY2Vuc2UgSW5mb3JtYXRpb24KQEAgLTE4NCwxMSArMjEyLDExIEBACiAKIENvcHlyaWdodCAoYykgMTk5MS0xOTk1IFN0aWNodGluZyBNYXRoZW1hdGlzY2ggQ2VudHJ1bS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKLVNlZSB0aGUgZmlsZSAiTElDRU5TRSIgZm9yIGluZm9ybWF0aW9uIG9uIHRoZSBoaXN0b3J5IG9mIHRoaXMgc29mdHdhcmUsIHRlcm1zICYKLWNvbmRpdGlvbnMgZm9yIHVzYWdlLCBhbmQgYSBESVNDTEFJTUVSIE9GIEFMTCBXQVJSQU5USUVTLgorU2VlIHRoZSBmaWxlICJMSUNFTlNFIiBmb3IgaW5mb3JtYXRpb24gb24gdGhlIGhpc3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSwKK3Rlcm1zICYgY29uZGl0aW9ucyBmb3IgdXNhZ2UsIGFuZCBhIERJU0NMQUlNRVIgT0YgQUxMIFdBUlJBTlRJRVMuCiAKLVRoaXMgUHl0aG9uIGRpc3RyaWJ1dGlvbiBjb250YWlucyAqbm8qIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGNvZGUsIHNvCi1pdCBtYXkgYmUgdXNlZCBpbiBwcm9wcmlldGFyeSBwcm9qZWN0cy4gIFRoZXJlIGFyZSBpbnRlcmZhY2VzIHRvIHNvbWUgR05VIGNvZGUKLWJ1dCB0aGVzZSBhcmUgZW50aXJlbHkgb3B0aW9uYWwuCitUaGlzIFB5dGhvbiBkaXN0cmlidXRpb24gY29udGFpbnMgKm5vKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBjb2RlLAorc28gaXQgbWF5IGJlIHVzZWQgaW4gcHJvcHJpZXRhcnkgcHJvamVjdHMuICBUaGVyZSBhcmUgaW50ZXJmYWNlcyB0byBzb21lIEdOVQorY29kZSBidXQgdGhlc2UgYXJlIGVudGlyZWx5IG9wdGlvbmFsLgogCiBBbGwgdHJhZGVtYXJrcyByZWZlcmVuY2VkIGhlcmVpbiBhcmUgcHJvcGVydHkgb2YgdGhlaXIgcmVzcGVjdGl2ZSBob2xkZXJzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvYnVpbGRtc2kuYmF0IGIvVG9vbHMvYnVpbGRib3QvYnVpbGRtc2kuYmF0CmluZGV4IDRjYTU2MDQuLmUzYzJkYmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkbXNpLmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9idWlsZG1zaS5iYXQKQEAgLTEsMjEgKzEsOSBAQAogQHJlbSBVc2VkIGJ5IHRoZSBidWlsZGJvdCAiYnVpbGRtc2kiIHN0ZXAuDQorc2V0bG9jYWwNCiANCi1jbWQgL2MgVG9vbHNcYnVpbGRib3RcZXh0ZXJuYWwuYmF0DQotQHJlbSBidWlsZCByZWxlYXNlIHZlcnNpb25zIG9mIHRoaW5ncw0KLWNhbGwgIiVWUzEwMENPTU5UT09MUyV2c3ZhcnMzMi5iYXQiDQorcHVzaGQNCiANCi1AcmVtIGJ1aWxkIFB5dGhvbg0KLW1zYnVpbGQgL3A6dXNlZW52PXRydWUgUENidWlsZFxwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm09V2luMzINCitAcmVtIGJ1aWxkIGJvdGggc25hcHNob3QgTVNJcw0KK2NhbGwgIiV+ZHAwLi5cbXNpXGJ1aWxkLmJhdCIgLXg4NiAteDY0DQogDQotQHJlbSBidWlsZCB0aGUgZG9jdW1lbnRhdGlvbg0KLWJhc2guZXhlIC1jICdjZCBEb2M7bWFrZSBQWVRIT049cHl0aG9uMi41IHVwZGF0ZSBodG1saGVscCcNCi0iJVByb2dyYW1GaWxlcyVcSFRNTCBIZWxwIFdvcmtzaG9wXGhoYy5leGUiIERvY1xidWlsZFxodG1saGVscFxweXRob24yNmEzLmhocA0KLQ0KLUByZW0gYnVpbGQgdGhlIE1TSSBmaWxlDQotY2QgUEMNCi1ubWFrZSAvZiBpY29ucy5tYWsNCi1jZCAuLlxUb29sc1xtc2kNCi1kZWwgKi5tc2kNCi1ubWFrZSAvZiBtc2lzdXBwb3J0Lm1haw0KLSVIT1NUX1BZVEhPTiUgbXNpLnB5DQotDQorcG9wZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0IGIvVG9vbHMvYnVpbGRib3QvdGVzdC5iYXQKaW5kZXggMTU0ZGZhNS4uZmY3ZDE2NyAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvdGVzdC5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvdGVzdC5iYXQKQEAgLTEsMTUgKzEsMTkgQEAKLUByZW0gVXNlZCBieSB0aGUgYnVpbGRib3QgInRlc3QiIHN0ZXAuDQotQHNldGxvY2FsDQorQGVjaG8gb2ZmDQorcmVtIFVzZWQgYnkgdGhlIGJ1aWxkYm90ICJ0ZXN0IiBzdGVwLg0KK3NldGxvY2FsDQogDQotQHNldCBoZXJlPSV+ZHAwDQotQHNldCBydF9vcHRzPS1xIC1kDQorc2V0IGhlcmU9JX5kcDANCitzZXQgcnRfb3B0cz0tcSAtZA0KK3NldCByZWdydGVzdF9hcmdzPQ0KIA0KIDpDaGVja09wdHMNCi1AaWYgJyUxJz09Jy14NjQnIChzZXQgcnRfb3B0cz0lcnRfb3B0cyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLUBpZiAnJTEnPT0nLWQnIChzZXQgcnRfb3B0cz0lcnRfb3B0cyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLUBpZiAnJTEnPT0nLU8nIChzZXQgcnRfb3B0cz0lcnRfb3B0cyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLUBpZiAnJTEnPT0nLXEnIChzZXQgcnRfb3B0cz0lcnRfb3B0cyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLUBpZiAnJTEnPT0nK2QnIChzZXQgcnRfb3B0cz0lcnRfb3B0czotZD0lKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1AaWYgJyUxJz09JytxJyAoc2V0IHJ0X29wdHM9JXJ0X29wdHM6LXE9JSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIj09Ii14NjQiIChzZXQgcnRfb3B0cz0lcnRfb3B0cyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSI9PSItZCIgKHNldCBydF9vcHRzPSVydF9vcHRzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIj09Ii1PIiAoc2V0IHJ0X29wdHM9JXJ0X29wdHMlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJTEiPT0iLXEiIChzZXQgcnRfb3B0cz0lcnRfb3B0cyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSI9PSIrZCIgKHNldCBydF9vcHRzPSVydF9vcHRzOi1kPSUpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSI9PSIrcSIgKHNldCBydF9vcHRzPSVydF9vcHRzOi1xPSUpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmIE5PVCAiJTEiPT0iIiAoc2V0IHJlZ3J0ZXN0X2FyZ3M9JXJlZ3J0ZXN0X2FyZ3MlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCiANCi1jYWxsICIlaGVyZSUuLlwuLlxQQ2J1aWxkXHJ0LmJhdCIgJXJ0X29wdHMlIC11YWxsIC1yd1cgLW4gLS10aW1lb3V0PTM2MDAgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkNCitlY2hvIG9uDQorY2FsbCAiJWhlcmUlLi5cLi5cUENidWlsZFxydC5iYXQiICVydF9vcHRzJSAtdWFsbCAtcndXIC0tdGltZW91dD0zNjAwICVyZWdydGVzdF9hcmdzJQ0KZGlmZiAtLWdpdCBhL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkgYi9Ub29scy9jbGluaWMvY2xpbmljLnB5CmluZGV4IGM2YWMzYjkuLjNjZTM1ODcgMTAwNzU1Ci0tLSBhL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkKKysrIGIvVG9vbHMvY2xpbmljL2NsaW5pYy5weQpAQCAtMjYsOCArMjYsMTIgQEAKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdHJhY2ViYWNrCitpbXBvcnQgdHlwZXMKIGltcG9ydCB1dWlkCiAKK2Zyb20gdHlwZXMgaW1wb3J0ICoKK05vbmVUeXBlID0gdHlwZShOb25lKQorCiAjIFRPRE86CiAjCiAjIHNvb246CkBAIC02Niw2ICs3MCwxMCBAQAogCiB1bmtub3duID0gVW5rbm93bigpCiAKK3NpZ19lbmRfbWFya2VyID0gJy0tJworCisKK190ZXh0X2FjY3VtdWxhdG9yX250ID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgiX3RleHRfYWNjdW11bGF0b3IiLCAidGV4dCBhcHBlbmQgb3V0cHV0IikKIAogZGVmIF90ZXh0X2FjY3VtdWxhdG9yKCk6CiAgICAgdGV4dCA9IFtdCkBAIC03Myw5ICs4MSwxMSBAQAogICAgICAgICBzID0gJycuam9pbih0ZXh0KQogICAgICAgICB0ZXh0LmNsZWFyKCkKICAgICAgICAgcmV0dXJuIHMKLSAgICByZXR1cm4gdGV4dCwgdGV4dC5hcHBlbmQsIG91dHB1dAorICAgIHJldHVybiBfdGV4dF9hY2N1bXVsYXRvcl9udCh0ZXh0LCB0ZXh0LmFwcGVuZCwgb3V0cHV0KQogCiAKK3RleHRfYWNjdW11bGF0b3JfbnQgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCJ0ZXh0X2FjY3VtdWxhdG9yIiwgInRleHQgYXBwZW5kIikKKwogZGVmIHRleHRfYWNjdW11bGF0b3IoKToKICAgICAiIiIKICAgICBDcmVhdGVzIGEgc2ltcGxlIHRleHQgYWNjdW11bGF0b3IgLyBqb2luZXIuCkBAIC04OCw3ICs5OCw3IEBACiAgICAgICAgZW1wdGllcyB0aGUgYWNjdW11bGF0b3IuCiAgICAgIiIiCiAgICAgdGV4dCwgYXBwZW5kLCBvdXRwdXQgPSBfdGV4dF9hY2N1bXVsYXRvcigpCi0gICAgcmV0dXJuIGFwcGVuZCwgb3V0cHV0CisgICAgcmV0dXJuIHRleHRfYWNjdW11bGF0b3JfbnQoYXBwZW5kLCBvdXRwdXQpCiAKIAogZGVmIHdhcm5fb3JfZmFpbChmYWlsPUZhbHNlLCAqYXJncywgZmlsZW5hbWU9Tm9uZSwgbGluZV9udW1iZXI9Tm9uZSk6CkBAIC01MjEsNiArNTMxLDU4IEBACiAgICAgcmV0dXJuIHMKIAogCitkZWYgd3JhcF9kZWNsYXJhdGlvbnModGV4dCwgbGVuZ3RoPTc4KToKKyAgICAiIiIKKyAgICBBIHNpbXBsZS1taW5kZWQgdGV4dCB3cmFwcGVyIGZvciBDIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KKworICAgIEl0IHZpZXdzIGEgZGVjbGFyYXRpb24gbGluZSBhcyBsb29raW5nIGxpa2UgdGhpczoKKyAgICAgICAgeHh4eHh4eHgoeHh4eHh4eHh4LHh4eHh4eHh4eCkKKyAgICBJZiBjYWxsZWQgd2l0aCBsZW5ndGg9MzAsIGl0IHdvdWxkIHdyYXAgdGhhdCBsaW5lIGludG8KKyAgICAgICAgeHh4eHh4eHgoeHh4eHh4eHh4LAorICAgICAgICAgICAgICAgICB4eHh4eHh4eHgpCisgICAgKElmIHRoZSBkZWNsYXJhdGlvbiBoYXMgemVybyBvciBvbmUgcGFyYW1ldGVycywgdGhpcworICAgIGZ1bmN0aW9uIHdvbid0IHdyYXAgaXQuKQorCisgICAgSWYgdGhpcyBkb2Vzbid0IHdvcmsgcHJvcGVybHksIGl0J3MgcHJvYmFibHkgYmV0dGVyIHRvCisgICAgc3RhcnQgZnJvbSBzY3JhdGNoIHdpdGggYSBtb3JlIHNvcGhpc3RpY2F0ZWQgYWxnb3JpdGhtLAorICAgIHJhdGhlciB0aGFuIHRyeSBhbmQgaW1wcm92ZS9kZWJ1ZyB0aGlzIGR1bWIgbGl0dGxlIGZ1bmN0aW9uLgorICAgICIiIgorICAgIGxpbmVzID0gW10KKyAgICBmb3IgbGluZSBpbiB0ZXh0LnNwbGl0KCdcbicpOgorICAgICAgICBwcmVmaXgsIF8sIGFmdGVyX2xfcGFyZW4gPSBsaW5lLnBhcnRpdGlvbignKCcpCisgICAgICAgIGlmIG5vdCBhZnRlcl9sX3BhcmVuOgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBwYXJhbWV0ZXJzLCBfLCBhZnRlcl9yX3BhcmVuID0gYWZ0ZXJfbF9wYXJlbi5wYXJ0aXRpb24oJyknKQorICAgICAgICBpZiBub3QgXzoKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgJywnIG5vdCBpbiBwYXJhbWV0ZXJzOgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBwYXJhbWV0ZXJzID0gW3guc3RyaXAoKSArICIsICIgZm9yIHggaW4gcGFyYW1ldGVycy5zcGxpdCgnLCcpXQorICAgICAgICBwcmVmaXggKz0gIigiCisgICAgICAgIGlmIGxlbihwcmVmaXgpIDwgbGVuZ3RoOgorICAgICAgICAgICAgc3BhY2VzID0gIiAiICogbGVuKHByZWZpeCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNwYWNlcyA9ICIgIiAqIDQKKworICAgICAgICB3aGlsZSBwYXJhbWV0ZXJzOgorICAgICAgICAgICAgbGluZSA9IHByZWZpeAorICAgICAgICAgICAgZmlyc3QgPSBUcnVlCisgICAgICAgICAgICB3aGlsZSBwYXJhbWV0ZXJzOgorICAgICAgICAgICAgICAgIGlmIChub3QgZmlyc3QgYW5kCisgICAgICAgICAgICAgICAgICAgIChsZW4obGluZSkgKyBsZW4ocGFyYW1ldGVyc1swXSkgPiBsZW5ndGgpKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBsaW5lICs9IHBhcmFtZXRlcnMucG9wKDApCisgICAgICAgICAgICAgICAgZmlyc3QgPSBGYWxzZQorICAgICAgICAgICAgaWYgbm90IHBhcmFtZXRlcnM6CisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucnN0cmlwKCIsICIpICsgIikiICsgYWZ0ZXJfcl9wYXJlbgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUucnN0cmlwKCkpCisgICAgICAgICAgICBwcmVmaXggPSBzcGFjZXMKKyAgICByZXR1cm4gIlxuIi5qb2luKGxpbmVzKQorCisKIGNsYXNzIENMYW5ndWFnZShMYW5ndWFnZSk6CiAKICAgICBib2R5X3ByZWZpeCAgID0gIiMiCkBAIC01NTUsOCArNjE3LDEzIEBACiAgICAgICAgICAgICBhZGQocXVvdGVkX2Zvcl9jX3N0cmluZyhsaW5lKSkKICAgICAgICAgICAgIGFkZCgnXFxuIlxuJykKIAotICAgICAgICB0ZXh0LnBvcCgpCi0gICAgICAgIGFkZCgnIicpCisgICAgICAgIGlmIHRleHRbLTJdID09IHNpZ19lbmRfbWFya2VyOgorICAgICAgICAgICAgIyBJZiB3ZSBvbmx5IGhhdmUgYSBzaWduYXR1cmUsIGFkZCB0aGUgYmxhbmsgbGluZSB0aGF0IHRoZQorICAgICAgICAgICAgIyBfX3RleHRfc2lnbmF0dXJlX18gZ2V0dGVyIGV4cGVjdHMgdG8gYmUgdGhlcmUuCisgICAgICAgICAgICBhZGQoJyJcXG4iJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRleHQucG9wKCkKKyAgICAgICAgICAgIGFkZCgnIicpCiAgICAgICAgIHJldHVybiAnJy5qb2luKHRleHQpCiAKICAgICBkZWYgb3V0cHV0X3RlbXBsYXRlcyhzZWxmLCBmKToKQEAgLTU4OSw4ICs2NTYsNiBAQAogICAgICAgICBtZXRoX28gPSAobGVuKHBhcmFtZXRlcnMpID09IDEgYW5kCiAgICAgICAgICAgICAgIHBhcmFtZXRlcnNbMF0ua2luZCA9PSBpbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkgYW5kCiAgICAgICAgICAgICAgIG5vdCBjb252ZXJ0ZXJzWzBdLmlzX29wdGlvbmFsKCkgYW5kCi0gICAgICAgICAgICAgIGlzaW5zdGFuY2UoY29udmVydGVyc1swXSwgb2JqZWN0X2NvbnZlcnRlcikgYW5kCi0gICAgICAgICAgICAgIGNvbnZlcnRlcnNbMF0uZm9ybWF0X3VuaXQgPT0gJ08nIGFuZAogICAgICAgICAgICAgICBub3QgbmV3X29yX2luaXQpCiAKICAgICAgICAgIyB3ZSBoYXZlIHRvIHNldCB0aGVzZSB0aGluZ3MgYmVmb3JlIHdlJ3JlIGRvbmU6CkBAIC02OTYsMjIgKzc2MSwzOCBAQAogICAgICAgICBlbGlmIG1ldGhfbzoKICAgICAgICAgICAgIGZsYWdzID0gIk1FVEhfTyIKIAotICAgICAgICAgICAgbWV0aF9vX3Byb3RvdHlwZSA9IG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgotICAgICAgICAgICAgICAgIHN0YXRpYyBQeU9iamVjdCAqCi0gICAgICAgICAgICAgICAge2NfYmFzZW5hbWV9KHtpbXBsX3BhcmFtZXRlcnN9KQotICAgICAgICAgICAgICAgICIiIikKKyAgICAgICAgICAgIGlmIChpc2luc3RhbmNlKGNvbnZlcnRlcnNbMF0sIG9iamVjdF9jb252ZXJ0ZXIpIGFuZAorICAgICAgICAgICAgICAgIGNvbnZlcnRlcnNbMF0uZm9ybWF0X3VuaXQgPT0gJ08nKToKKyAgICAgICAgICAgICAgICBtZXRoX29fcHJvdG90eXBlID0gbm9ybWFsaXplX3NuaXBwZXQoIiIiCisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBQeU9iamVjdCAqCisgICAgICAgICAgICAgICAgICAgIHtjX2Jhc2VuYW1lfSh7aW1wbF9wYXJhbWV0ZXJzfSkKKyAgICAgICAgICAgICAgICAgICAgIiIiKQogCi0gICAgICAgICAgICBpZiBkZWZhdWx0X3JldHVybl9jb252ZXJ0ZXI6Ci0gICAgICAgICAgICAgICAgIyBtYXBzIHBlcmZlY3RseSB0byBNRVRIX08sIGRvZXNuJ3QgbmVlZCBhIHJldHVybiBjb252ZXJ0ZXIuCi0gICAgICAgICAgICAgICAgIyBzbyB3ZSBza2lwIG1ha2luZyBhIHBhcnNlIGZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgIyBhbmQgY2FsbCBkaXJlY3RseSBpbnRvIHRoZSBpbXBsIGZ1bmN0aW9uLgotICAgICAgICAgICAgICAgIGltcGxfcHJvdG90eXBlID0gcGFyc2VyX3Byb3RvdHlwZSA9IHBhcnNlcl9kZWZpbml0aW9uID0gJycKLSAgICAgICAgICAgICAgICBpbXBsX2RlZmluaXRpb24gPSBtZXRoX29fcHJvdG90eXBlCisgICAgICAgICAgICAgICAgaWYgZGVmYXVsdF9yZXR1cm5fY29udmVydGVyOgorICAgICAgICAgICAgICAgICAgICAjIG1hcHMgcGVyZmVjdGx5IHRvIE1FVEhfTywgZG9lc24ndCBuZWVkIGEgcmV0dXJuIGNvbnZlcnRlci4KKyAgICAgICAgICAgICAgICAgICAgIyBzbyB3ZSBza2lwIG1ha2luZyBhIHBhcnNlIGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICMgYW5kIGNhbGwgZGlyZWN0bHkgaW50byB0aGUgaW1wbCBmdW5jdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgaW1wbF9wcm90b3R5cGUgPSBwYXJzZXJfcHJvdG90eXBlID0gcGFyc2VyX2RlZmluaXRpb24gPSAnJworICAgICAgICAgICAgICAgICAgICBpbXBsX2RlZmluaXRpb24gPSBtZXRoX29fcHJvdG90eXBlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBTTElHSFQgSEFDSworICAgICAgICAgICAgICAgICAgICAjIHVzZSBpbXBsX3BhcmFtZXRlcnMgZm9yIHRoZSBwYXJzZXIgaGVyZSEKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VyX3Byb3RvdHlwZSA9IG1ldGhfb19wcm90b3R5cGUKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlKQorCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgU0xJR0hUIEhBQ0sKLSAgICAgICAgICAgICAgICAjIHVzZSBpbXBsX3BhcmFtZXRlcnMgZm9yIHRoZSBwYXJzZXIgaGVyZSEKLSAgICAgICAgICAgICAgICBwYXJzZXJfcHJvdG90eXBlID0gbWV0aF9vX3Byb3RvdHlwZQotICAgICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSkKKyAgICAgICAgICAgICAgICBhcmduYW1lID0gJ2FyZycKKyAgICAgICAgICAgICAgICBpZiBwYXJhbWV0ZXJzWzBdLm5hbWUgPT0gYXJnbmFtZToKKyAgICAgICAgICAgICAgICAgICAgYXJnbmFtZSArPSAnXycKKyAgICAgICAgICAgICAgICBwYXJzZXJfcHJvdG90eXBlID0gbm9ybWFsaXplX3NuaXBwZXQoIiIiCisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBQeU9iamVjdCAqCisgICAgICAgICAgICAgICAgICAgIHtjX2Jhc2VuYW1lfSh7c2VsZl90eXBlfXtzZWxmX25hbWV9LCBQeU9iamVjdCAqJXMpCisgICAgICAgICAgICAgICAgICAgICIiIiAlIGFyZ25hbWUpCisKKyAgICAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsIG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgorICAgICAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKCVzLCAie2Zvcm1hdF91bml0c306e25hbWV9Iiwge3BhcnNlX2FyZ3VtZW50c30pKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgICAgICAiIiIgJSBhcmduYW1lLCBpbmRlbnQ9NCkpCiAKICAgICAgICAgZWxpZiBoYXNfb3B0aW9uX2dyb3VwczoKICAgICAgICAgICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIHdpdGggb3B0aW9uIGdyb3VwcwpAQCAtNzQ2LDggKzgyNyw3IEBACiAgICAgICAgICAgICBwYXJzZXJfcHJvdG90eXBlID0gcGFyc2VyX3Byb3RvdHlwZV92YXJhcmdzCiAKICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLAorICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAie2Zvcm1hdF91bml0c306e25hbWV9IiwKICAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkpCkBAIC03NTksMTQgKzgzOSwxMiBAQAogICAgICAgICAgICAgcGFyc2VyX3Byb3RvdHlwZSA9IHBhcnNlcl9wcm90b3R5cGVfa2V5d29yZAogCiAgICAgICAgICAgICBib2R5ID0gbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAgICAgICAgICAgICAie2Zvcm1hdF91bml0c306e25hbWV9IiwgX2tleXdvcmRzLAorICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsIF9rZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgICAgICAiIiIsIGluZGVudD00KQogICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlLCBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCi0gICAgICAgICAgICAgICAgICAgICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCBfa2V5d29yZHMsCisgICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAie2Zvcm1hdF91bml0c306e25hbWV9IiwgX2tleXdvcmRzLAogICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgICAgICAgICAiIiIsIGluZGVudD00KSkKQEAgLTgyMCw3ICs4OTgsOCBAQAogICAgICAgICAgICAgY3BwX2lmID0gIiNpZiAiICsgY29uZGl0aW9uYWwKICAgICAgICAgICAgIGNwcF9lbmRpZiA9ICIjZW5kaWYgLyogIiArIGNvbmRpdGlvbmFsICsgIiAqLyIKIAotICAgICAgICAgICAgaWYgbWV0aG9kZGVmX2RlZmluZToKKyAgICAgICAgICAgIGlmIG1ldGhvZGRlZl9kZWZpbmUgYW5kIGYubmFtZSBub3QgaW4gY2xpbmljLmlmbmRlZl9zeW1ib2xzOgorICAgICAgICAgICAgICAgIGNsaW5pYy5pZm5kZWZfc3ltYm9scy5hZGQoZi5uYW1lKQogICAgICAgICAgICAgICAgIG1ldGhvZGRlZl9pZm5kZWYgPSBub3JtYWxpemVfc25pcHBldCgiIiIKICAgICAgICAgICAgICAgICAgICAgI2lmbmRlZiB7bWV0aG9kZGVmX25hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAjZGVmaW5lIHttZXRob2RkZWZfbmFtZX0KQEAgLTEwMjAsNyArMTA5OSw3IEBACiAgICAgICAgICMgTUVUSF9PLCB3ZSBoYXZlIGV4YWN0bHkgb25lIGFueXdheSwgc28gd2Uga25vdyBleGFjdGx5CiAgICAgICAgICMgd2hlcmUgaXQgaXMuCiAgICAgICAgIGlmICgiTUVUSF9PIiBpbiB0ZW1wbGF0ZXNbJ21ldGhvZGRlZl9kZWZpbmUnXSBhbmQKLSAgICAgICAgICAgIG5vdCBkZWZhdWx0X3JldHVybl9jb252ZXJ0ZXIpOgorICAgICAgICAgICAgJ3tpbXBsX3BhcmFtZXRlcnN9JyBpbiB0ZW1wbGF0ZXNbJ3BhcnNlcl9wcm90b3R5cGUnXSk6CiAgICAgICAgICAgICBkYXRhLmRlY2xhcmF0aW9ucy5wb3AoMCkKIAogICAgICAgICB0ZW1wbGF0ZV9kaWN0ID0ge30KQEAgLTEwNzgsNyArMTE1Nyw4IEBACiAgICAgICAgIGlmIGhhc19vcHRpb25fZ3JvdXBzOgogICAgICAgICAgICAgc2VsZi5yZW5kZXJfb3B0aW9uX2dyb3VwX3BhcnNpbmcoZiwgdGVtcGxhdGVfZGljdCkKIAotICAgICAgICBmb3IgbmFtZSwgZGVzdGluYXRpb24gaW4gY2xpbmljLmZpZWxkX2Rlc3RpbmF0aW9ucy5pdGVtcygpOgorICAgICAgICAjIGJ1ZmZlcnMsIG5vdCBkZXN0aW5hdGlvbgorICAgICAgICBmb3IgbmFtZSwgZGVzdGluYXRpb24gaW4gY2xpbmljLmRlc3RpbmF0aW9uX2J1ZmZlcnMuaXRlbXMoKToKICAgICAgICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGVzW25hbWVdCiAgICAgICAgICAgICBpZiBoYXNfb3B0aW9uX2dyb3VwczoKICAgICAgICAgICAgICAgICB0ZW1wbGF0ZSA9IGxpbmVhcl9mb3JtYXQodGVtcGxhdGUsCkBAIC0xMTAwLDYgKzExODAsMTEgQEAKIAogICAgICAgICAgICAgcyA9IHRlbXBsYXRlLmZvcm1hdF9tYXAodGVtcGxhdGVfZGljdCkKIAorICAgICAgICAgICAgIyBtaWxkIGhhY2s6CisgICAgICAgICAgICAjIHJlZmxvdyBsb25nIGltcGwgZGVjbGFyYXRpb25zCisgICAgICAgICAgICBpZiBuYW1lIGluIHsiaW1wbF9wcm90b3R5cGUiLCAiaW1wbF9kZWZpbml0aW9uIn06CisgICAgICAgICAgICAgICAgcyA9IHdyYXBfZGVjbGFyYXRpb25zKHMpCisKICAgICAgICAgICAgIGlmIGNsaW5pYy5saW5lX3ByZWZpeDoKICAgICAgICAgICAgICAgICBzID0gaW5kZW50X2FsbF9saW5lcyhzLCBjbGluaWMubGluZV9wcmVmaXgpCiAgICAgICAgICAgICBpZiBjbGluaWMubGluZV9zdWZmaXg6CkBAIC0xMjUyLDEwICsxMzM3LDExIEBACiAgICAgICAgIG1hdGNoID0gc2VsZi5zdGFydF9yZS5tYXRjaChsaW5lLmxzdHJpcCgpKQogICAgICAgICByZXR1cm4gbWF0Y2guZ3JvdXAoMSkgaWYgbWF0Y2ggZWxzZSBOb25lCiAKLSAgICBkZWYgX2xpbmUoc2VsZik6CisgICAgZGVmIF9saW5lKHNlbGYsIGxvb2thaGVhZD1GYWxzZSk6CiAgICAgICAgIHNlbGYubGluZV9udW1iZXIgKz0gMQogICAgICAgICBsaW5lID0gc2VsZi5pbnB1dC5wb3AoKQotICAgICAgICBzZWxmLmxhbmd1YWdlLnBhcnNlX2xpbmUobGluZSkKKyAgICAgICAgaWYgbm90IGxvb2thaGVhZDoKKyAgICAgICAgICAgIHNlbGYubGFuZ3VhZ2UucGFyc2VfbGluZShsaW5lKQogICAgICAgICByZXR1cm4gbGluZQogCiAgICAgZGVmIHBhcnNlX3ZlcmJhdGltX2Jsb2NrKHNlbGYpOgpAQCAtMTMxMSw3ICsxMzk3LDcgQEAKICAgICAgICAgb3V0cHV0X2FkZCwgb3V0cHV0X291dHB1dCA9IHRleHRfYWNjdW11bGF0b3IoKQogICAgICAgICBhcmd1bWVudHMgPSBOb25lCiAgICAgICAgIHdoaWxlIHNlbGYuaW5wdXQ6Ci0gICAgICAgICAgICBsaW5lID0gc2VsZi5fbGluZSgpCisgICAgICAgICAgICBsaW5lID0gc2VsZi5fbGluZShsb29rYWhlYWQ9VHJ1ZSkKICAgICAgICAgICAgIG1hdGNoID0gY2hlY2tzdW1fcmUubWF0Y2gobGluZS5sc3RyaXAoKSkKICAgICAgICAgICAgIGFyZ3VtZW50cyA9IG1hdGNoLmdyb3VwKDEpIGlmIG1hdGNoIGVsc2UgTm9uZQogICAgICAgICAgICAgaWYgYXJndW1lbnRzOgpAQCAtMTQwMiwxMiArMTQ4OCw0OCBAQAogICAgICAgICBzZWxmLmYud3JpdGUodGV4dCkKIAogCitjbGFzcyBCdWZmZXJTZXJpZXM6CisgICAgIiIiCisgICAgQmVoYXZlcyBsaWtlIGEgImRlZmF1bHRsaXN0Ii4KKyAgICBXaGVuIHlvdSBhc2sgZm9yIGFuIGluZGV4IHRoYXQgZG9lc24ndCBleGlzdCB5ZXQsCisgICAgdGhlIG9iamVjdCBncm93cyB0aGUgbGlzdCB1bnRpbCB0aGF0IGl0ZW0gZXhpc3RzLgorICAgIFNvIG9bbl0gd2lsbCBhbHdheXMgd29yay4KKworICAgIFN1cHBvcnRzIG5lZ2F0aXZlIGluZGljZXMgZm9yIGFjdHVhbCBpdGVtcy4KKyAgICBlLmcuIG9bLTFdIGlzIGFuIGVsZW1lbnQgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIG9bMF0uCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX3N0YXJ0ID0gMAorICAgICAgICBzZWxmLl9hcnJheSA9IFtdCisgICAgICAgIHNlbGYuX2NvbnN0cnVjdG9yID0gX3RleHRfYWNjdW11bGF0b3IKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpKToKKyAgICAgICAgaSAtPSBzZWxmLl9zdGFydAorICAgICAgICBpZiBpIDwgMDoKKyAgICAgICAgICAgIHNlbGYuX3N0YXJ0ICs9IGkKKyAgICAgICAgICAgIHByZWZpeCA9IFtzZWxmLl9jb25zdHJ1Y3RvcigpIGZvciB4IGluIHJhbmdlKC1pKV0KKyAgICAgICAgICAgIHNlbGYuX2FycmF5ID0gcHJlZml4ICsgc2VsZi5fYXJyYXkKKyAgICAgICAgICAgIGkgPSAwCisgICAgICAgIHdoaWxlIGkgPj0gbGVuKHNlbGYuX2FycmF5KToKKyAgICAgICAgICAgIHNlbGYuX2FycmF5LmFwcGVuZChzZWxmLl9jb25zdHJ1Y3RvcigpKQorICAgICAgICByZXR1cm4gc2VsZi5fYXJyYXlbaV0KKworICAgIGRlZiBjbGVhcihzZWxmKToKKyAgICAgICAgZm9yIHRhIGluIHNlbGYuX2FycmF5OgorICAgICAgICAgICAgdGEuX3RleHQuY2xlYXIoKQorCisgICAgZGVmIGR1bXAoc2VsZik6CisgICAgICAgIHRleHRzID0gW3RhLm91dHB1dCgpIGZvciB0YSBpbiBzZWxmLl9hcnJheV0KKyAgICAgICAgcmV0dXJuICIiLmpvaW4odGV4dHMpCisKKwogY2xhc3MgRGVzdGluYXRpb246CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHR5cGUsIGNsaW5pYywgKmFyZ3MpOgogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgIHNlbGYudHlwZSA9IHR5cGUKICAgICAgICAgc2VsZi5jbGluaWMgPSBjbGluaWMKLSAgICAgICAgdmFsaWRfdHlwZXMgPSAoJ2J1ZmZlcicsICdmaWxlJywgJ3N1cHByZXNzJywgJ3R3by1wYXNzJykKKyAgICAgICAgdmFsaWRfdHlwZXMgPSAoJ2J1ZmZlcicsICdmaWxlJywgJ3N1cHByZXNzJykKICAgICAgICAgaWYgdHlwZSBub3QgaW4gdmFsaWRfdHlwZXM6CiAgICAgICAgICAgICBmYWlsKCJJbnZhbGlkIGRlc3RpbmF0aW9uIHR5cGUgIiArIHJlcHIodHlwZSkgKyAiIGZvciAiICsgbmFtZSArICIgLCBtdXN0IGJlICIgKyAnLCAnLmpvaW4odmFsaWRfdHlwZXMpKQogICAgICAgICBleHRyYV9hcmd1bWVudHMgPSAxIGlmIHR5cGUgPT0gImZpbGUiIGVsc2UgMApAQCAtMTQyNiwxMCArMTU0OCw4IEBACiAgICAgICAgICAgICBkWydiYXNlbmFtZSddID0gYmFzZW5hbWUKICAgICAgICAgICAgIGRbJ2Jhc2VuYW1lX3Jvb3QnXSwgZFsnYmFzZW5hbWVfZXh0ZW5zaW9uJ10gPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKQogICAgICAgICAgICAgc2VsZi5maWxlbmFtZSA9IGFyZ3NbMF0uZm9ybWF0X21hcChkKQotICAgICAgICBpZiB0eXBlID09ICd0d28tcGFzcyc6Ci0gICAgICAgICAgICBzZWxmLmlkID0gTm9uZQogCi0gICAgICAgIHNlbGYudGV4dCwgc2VsZi5hcHBlbmQsIHNlbGYuX2R1bXAgPSBfdGV4dF9hY2N1bXVsYXRvcigpCisgICAgICAgIHNlbGYuYnVmZmVycyA9IEJ1ZmZlclNlcmllcygpCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIGlmIHNlbGYudHlwZSA9PSAnZmlsZSc6CkBAIC0xNDQxLDE1ICsxNTYxLDEwIEBACiAgICAgZGVmIGNsZWFyKHNlbGYpOgogICAgICAgICBpZiBzZWxmLnR5cGUgIT0gJ2J1ZmZlcic6CiAgICAgICAgICAgICBmYWlsKCJDYW4ndCBjbGVhciBkZXN0aW5hdGlvbiIgKyBzZWxmLm5hbWUgKyAiICwgaXQncyBub3Qgb2YgdHlwZSBidWZmZXIiKQotICAgICAgICBzZWxmLnRleHQuY2xlYXIoKQorICAgICAgICBzZWxmLmJ1ZmZlcnMuY2xlYXIoKQogCiAgICAgZGVmIGR1bXAoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYudHlwZSA9PSAndHdvLXBhc3MnOgotICAgICAgICAgICAgaWYgc2VsZi5pZCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuaWQgPSBzdHIodXVpZC51dWlkNCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmlkCi0gICAgICAgICAgICBmYWlsKCJZb3UgY2FuIG9ubHkgZHVtcCBhIHR3by1wYXNzIGJ1ZmZlciBleGFjdGx5IG9uY2UhIikKLSAgICAgICAgcmV0dXJuIHNlbGYuX2R1bXAoKQorICAgICAgICByZXR1cm4gc2VsZi5idWZmZXJzLmR1bXAoKQogCiAKICMgbWFwcyBzdHJpbmdzIHRvIExhbmd1YWdlIG9iamVjdHMuCkBAIC0xNDg4LDQ5ICsxNjAzLDQ0IEBACiAgICAgcHJlc2V0c190ZXh0ID0gIiIiCiBwcmVzZXQgYmxvY2sKIGV2ZXJ5dGhpbmcgYmxvY2sKK21ldGhvZGRlZl9pZm5kZWYgYnVmZmVyIDEKIGRvY3N0cmluZ19wcm90b3R5cGUgc3VwcHJlc3MKIHBhcnNlcl9wcm90b3R5cGUgc3VwcHJlc3MKIGNwcF9pZiBzdXBwcmVzcwogY3BwX2VuZGlmIHN1cHByZXNzCi1tZXRob2RkZWZfaWZuZGVmIGJ1ZmZlcgogCiBwcmVzZXQgb3JpZ2luYWwKIGV2ZXJ5dGhpbmcgYmxvY2sKK21ldGhvZGRlZl9pZm5kZWYgYnVmZmVyIDEKIGRvY3N0cmluZ19wcm90b3R5cGUgc3VwcHJlc3MKIHBhcnNlcl9wcm90b3R5cGUgc3VwcHJlc3MKIGNwcF9pZiBzdXBwcmVzcwogY3BwX2VuZGlmIHN1cHByZXNzCi1tZXRob2RkZWZfaWZuZGVmIGJ1ZmZlcgogCiBwcmVzZXQgZmlsZQogZXZlcnl0aGluZyBmaWxlCittZXRob2RkZWZfaWZuZGVmIGZpbGUgMQogZG9jc3RyaW5nX3Byb3RvdHlwZSBzdXBwcmVzcwogcGFyc2VyX3Byb3RvdHlwZSBzdXBwcmVzcwogaW1wbF9kZWZpbml0aW9uIGJsb2NrCiAKIHByZXNldCBidWZmZXIKIGV2ZXJ5dGhpbmcgYnVmZmVyCittZXRob2RkZWZfaWZuZGVmIGJ1ZmZlciAxCitpbXBsX2RlZmluaXRpb24gYmxvY2sKIGRvY3N0cmluZ19wcm90b3R5cGUgc3VwcHJlc3MKIGltcGxfcHJvdG90eXBlIHN1cHByZXNzCiBwYXJzZXJfcHJvdG90eXBlIHN1cHByZXNzCi1pbXBsX2RlZmluaXRpb24gYmxvY2sKIAogcHJlc2V0IHBhcnRpYWwtYnVmZmVyCiBldmVyeXRoaW5nIGJ1ZmZlcgorbWV0aG9kZGVmX2lmbmRlZiBidWZmZXIgMQogZG9jc3RyaW5nX3Byb3RvdHlwZSBibG9jawogaW1wbF9wcm90b3R5cGUgc3VwcHJlc3MKIG1ldGhvZGRlZl9kZWZpbmUgYmxvY2sKIHBhcnNlcl9wcm90b3R5cGUgYmxvY2sKIGltcGxfZGVmaW5pdGlvbiBibG9jawogCi1wcmVzZXQgdHdvLXBhc3MKLWV2ZXJ5dGhpbmcgYnVmZmVyCi1kb2NzdHJpbmdfcHJvdG90eXBlIHR3by1wYXNzCi1pbXBsX3Byb3RvdHlwZSBzdXBwcmVzcwotbWV0aG9kZGVmX2RlZmluZSB0d28tcGFzcwotcGFyc2VyX3Byb3RvdHlwZSB0d28tcGFzcwotaW1wbF9kZWZpbml0aW9uIGJsb2NrCi0KICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxhbmd1YWdlLCBwcmludGVyPU5vbmUsICosIGZvcmNlPUZhbHNlLCB2ZXJpZnk9VHJ1ZSwgZmlsZW5hbWU9Tm9uZSk6CkBAIC0xNTU0LDI1ICsxNjY0LDI1IEBACiAgICAgICAgIHNlbGYuYWRkX2Rlc3RpbmF0aW9uKCJibG9jayIsICJidWZmZXIiKQogICAgICAgICBzZWxmLmFkZF9kZXN0aW5hdGlvbigic3VwcHJlc3MiLCAic3VwcHJlc3MiKQogICAgICAgICBzZWxmLmFkZF9kZXN0aW5hdGlvbigiYnVmZmVyIiwgImJ1ZmZlciIpCi0gICAgICAgIHNlbGYuYWRkX2Rlc3RpbmF0aW9uKCJ0d28tcGFzcyIsICJ0d28tcGFzcyIpCiAgICAgICAgIGlmIGZpbGVuYW1lOgogICAgICAgICAgICAgc2VsZi5hZGRfZGVzdGluYXRpb24oImZpbGUiLCAiZmlsZSIsICJ7ZGlybmFtZX0vY2xpbmljL3tiYXNlbmFtZX0uaCIpCiAKLSAgICAgICAgZCA9IHNlbGYuZGVzdGluYXRpb25zLmdldAotICAgICAgICBzZWxmLmZpZWxkX2Rlc3RpbmF0aW9ucyA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCgKLSAgICAgICAgICAgICgnY3BwX2lmJywgZCgnc3VwcHJlc3MnKSksCisgICAgICAgIGQgPSBzZWxmLmdldF9kZXN0aW5hdGlvbl9idWZmZXIKKyAgICAgICAgc2VsZi5kZXN0aW5hdGlvbl9idWZmZXJzID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKAorICAgICAgICAgICAgKCdjcHBfaWYnLCBkKCdmaWxlJykpLAogICAgICAgICAgICAgKCdkb2NzdHJpbmdfcHJvdG90eXBlJywgZCgnc3VwcHJlc3MnKSksCi0gICAgICAgICAgICAoJ2RvY3N0cmluZ19kZWZpbml0aW9uJywgZCgnYmxvY2snKSksCi0gICAgICAgICAgICAoJ21ldGhvZGRlZl9kZWZpbmUnLCBkKCdibG9jaycpKSwKLSAgICAgICAgICAgICgnaW1wbF9wcm90b3R5cGUnLCBkKCdibG9jaycpKSwKKyAgICAgICAgICAgICgnZG9jc3RyaW5nX2RlZmluaXRpb24nLCBkKCdmaWxlJykpLAorICAgICAgICAgICAgKCdtZXRob2RkZWZfZGVmaW5lJywgZCgnZmlsZScpKSwKKyAgICAgICAgICAgICgnaW1wbF9wcm90b3R5cGUnLCBkKCdmaWxlJykpLAogICAgICAgICAgICAgKCdwYXJzZXJfcHJvdG90eXBlJywgZCgnc3VwcHJlc3MnKSksCi0gICAgICAgICAgICAoJ3BhcnNlcl9kZWZpbml0aW9uJywgZCgnYmxvY2snKSksCi0gICAgICAgICAgICAoJ2NwcF9lbmRpZicsIGQoJ3N1cHByZXNzJykpLAotICAgICAgICAgICAgKCdtZXRob2RkZWZfaWZuZGVmJywgZCgnYnVmZmVyJykpLAorICAgICAgICAgICAgKCdwYXJzZXJfZGVmaW5pdGlvbicsIGQoJ2ZpbGUnKSksCisgICAgICAgICAgICAoJ2NwcF9lbmRpZicsIGQoJ2ZpbGUnKSksCisgICAgICAgICAgICAoJ21ldGhvZGRlZl9pZm5kZWYnLCBkKCdmaWxlJywgMSkpLAogICAgICAgICAgICAgKCdpbXBsX2RlZmluaXRpb24nLCBkKCdibG9jaycpKSwKICAgICAgICAgKSkKIAotICAgICAgICBzZWxmLmZpZWxkX2Rlc3RpbmF0aW9uc19zdGFjayA9IFtdCisgICAgICAgIHNlbGYuZGVzdGluYXRpb25fYnVmZmVyc19zdGFjayA9IFtdCisgICAgICAgIHNlbGYuaWZuZGVmX3N5bWJvbHMgPSBzZXQoKQogCiAgICAgICAgIHNlbGYucHJlc2V0cyA9IHt9CiAgICAgICAgIHByZXNldCA9IE5vbmUKQEAgLTE1ODAsMzcgKzE2OTAsNDMgQEAKICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKICAgICAgICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBuYW1lLCB2YWx1ZSA9IGxpbmUuc3BsaXQoKQorICAgICAgICAgICAgbmFtZSwgdmFsdWUsICpvcHRpb25zID0gbGluZS5zcGxpdCgpCiAgICAgICAgICAgICBpZiBuYW1lID09ICdwcmVzZXQnOgogICAgICAgICAgICAgICAgIHNlbGYucHJlc2V0c1t2YWx1ZV0gPSBwcmVzZXQgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpCiAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgZGVzdGluYXRpb24gPSBzZWxmLmdldF9kZXN0aW5hdGlvbih2YWx1ZSkKKyAgICAgICAgICAgIGlmIGxlbihvcHRpb25zKToKKyAgICAgICAgICAgICAgICBpbmRleCA9IGludChvcHRpb25zWzBdKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpbmRleCA9IDAKKyAgICAgICAgICAgIGJ1ZmZlciA9IHNlbGYuZ2V0X2Rlc3RpbmF0aW9uX2J1ZmZlcih2YWx1ZSwgaW5kZXgpCiAKICAgICAgICAgICAgIGlmIG5hbWUgPT0gJ2V2ZXJ5dGhpbmcnOgotICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIHNlbGYuZmllbGRfZGVzdGluYXRpb25zOgotICAgICAgICAgICAgICAgICAgICBwcmVzZXRbbmFtZV0gPSBkZXN0aW5hdGlvbgorICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIHNlbGYuZGVzdGluYXRpb25fYnVmZmVyczoKKyAgICAgICAgICAgICAgICAgICAgcHJlc2V0W25hbWVdID0gYnVmZmVyCiAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgYXNzZXJ0IG5hbWUgaW4gc2VsZi5maWVsZF9kZXN0aW5hdGlvbnMKLSAgICAgICAgICAgIHByZXNldFtuYW1lXSA9IGRlc3RpbmF0aW9uCisgICAgICAgICAgICBhc3NlcnQgbmFtZSBpbiBzZWxmLmRlc3RpbmF0aW9uX2J1ZmZlcnMKKyAgICAgICAgICAgIHByZXNldFtuYW1lXSA9IGJ1ZmZlcgogCiAgICAgICAgIGdsb2JhbCBjbGluaWMKICAgICAgICAgY2xpbmljID0gc2VsZgogCi0gICAgZGVmIGdldF9kZXN0aW5hdGlvbihzZWxmLCBuYW1lLCBkZWZhdWx0PXVuc3BlY2lmaWVkKToKLSAgICAgICAgZCA9IHNlbGYuZGVzdGluYXRpb25zLmdldChuYW1lKQotICAgICAgICBpZiBub3QgZDoKLSAgICAgICAgICAgIGlmIGRlZmF1bHQgaXMgbm90IHVuc3BlY2lmaWVkOgotICAgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0Ci0gICAgICAgICAgICBmYWlsKCJEZXN0aW5hdGlvbiBkb2VzIG5vdCBleGlzdDogIiArIHJlcHIobmFtZSkpCi0gICAgICAgIHJldHVybiBkCi0KICAgICBkZWYgYWRkX2Rlc3RpbmF0aW9uKHNlbGYsIG5hbWUsIHR5cGUsICphcmdzKToKICAgICAgICAgaWYgbmFtZSBpbiBzZWxmLmRlc3RpbmF0aW9uczoKICAgICAgICAgICAgIGZhaWwoIkRlc3RpbmF0aW9uIGFscmVhZHkgZXhpc3RzOiAiICsgcmVwcihuYW1lKSkKICAgICAgICAgc2VsZi5kZXN0aW5hdGlvbnNbbmFtZV0gPSBEZXN0aW5hdGlvbihuYW1lLCB0eXBlLCBzZWxmLCAqYXJncykKIAorICAgIGRlZiBnZXRfZGVzdGluYXRpb24oc2VsZiwgbmFtZSk6CisgICAgICAgIGQgPSBzZWxmLmRlc3RpbmF0aW9ucy5nZXQobmFtZSkKKyAgICAgICAgaWYgbm90IGQ6CisgICAgICAgICAgICBmYWlsKCJEZXN0aW5hdGlvbiBkb2VzIG5vdCBleGlzdDogIiArIHJlcHIobmFtZSkpCisgICAgICAgIHJldHVybiBkCisKKyAgICBkZWYgZ2V0X2Rlc3RpbmF0aW9uX2J1ZmZlcihzZWxmLCBuYW1lLCBpdGVtPTApOgorICAgICAgICBkID0gc2VsZi5nZXRfZGVzdGluYXRpb24obmFtZSkKKyAgICAgICAgcmV0dXJuIGQuYnVmZmVyc1tpdGVtXQorCiAgICAgZGVmIHBhcnNlKHNlbGYsIGlucHV0KToKICAgICAgICAgcHJpbnRlciA9IHNlbGYucHJpbnRlcgogICAgICAgICBzZWxmLmJsb2NrX3BhcnNlciA9IEJsb2NrUGFyc2VyKGlucHV0LCBzZWxmLmxhbmd1YWdlLCB2ZXJpZnk9c2VsZi52ZXJpZnkpCkBAIC0xNjMwLDE3ICsxNzQ2LDExIEBACiAKICAgICAgICAgc2Vjb25kX3Bhc3NfcmVwbGFjZW1lbnRzID0ge30KIAorICAgICAgICAjIHRoZXNlIGFyZSBkZXN0aW5hdGlvbnMgbm90IGJ1ZmZlcnMKICAgICAgICAgZm9yIG5hbWUsIGRlc3RpbmF0aW9uIGluIHNlbGYuZGVzdGluYXRpb25zLml0ZW1zKCk6CiAgICAgICAgICAgICBpZiBkZXN0aW5hdGlvbi50eXBlID09ICdzdXBwcmVzcyc6CiAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIG91dHB1dCA9IGRlc3RpbmF0aW9uLl9kdW1wKCkKLQotICAgICAgICAgICAgaWYgZGVzdGluYXRpb24udHlwZSA9PSAndHdvLXBhc3MnOgotICAgICAgICAgICAgICAgIGlmIGRlc3RpbmF0aW9uLmlkOgotICAgICAgICAgICAgICAgICAgICBzZWNvbmRfcGFzc19yZXBsYWNlbWVudHNbZGVzdGluYXRpb24uaWRdID0gb3V0cHV0Ci0gICAgICAgICAgICAgICAgZWxpZiBvdXRwdXQ6Ci0gICAgICAgICAgICAgICAgICAgIGZhaWwoIlR3by1wYXNzIGJ1ZmZlciAiICsgcmVwcihuYW1lKSArICIgbm90IGVtcHR5IGF0IGVuZCBvZiBmaWxlISIpCi0gICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG91dHB1dCA9IGRlc3RpbmF0aW9uLmR1bXAoKQogCiAgICAgICAgICAgICBpZiBvdXRwdXQ6CiAKQEAgLTE4MzIsNiArMTk0Miw3IEBACiBfX2lhbmRfXwogX19pZmxvb3JkaXZfXwogX19pbHNoaWZ0X18KK19faW1hdG11bF9fCiBfX2ltb2RfXwogX19pbXVsX18KIF9faW5kZXhfXwpAQCAtMTg0OCw2ICsxOTU5LDcgQEAKIF9fbGVuX18KIF9fbHNoaWZ0X18KIF9fbHRfXworX19tYXRtdWxfXwogX19tb2RfXwogX19tdWxfXwogX19uZWdfXwpAQCAtMTg2Miw2ICsxOTc0LDcgQEAKIF9fcmVwcl9fCiBfX3JmbG9vcmRpdl9fCiBfX3Jsc2hpZnRfXworX19ybWF0bXVsX18KIF9fcm1vZF9fCiBfX3JtdWxfXwogX19yb3JfXwpAQCAtMjM3OSwxMiArMjQ5MiwxMiBAQAogCiBjbGFzcyBjaGFyX2NvbnZlcnRlcihDQ29udmVydGVyKToKICAgICB0eXBlID0gJ2NoYXInCi0gICAgZGVmYXVsdF90eXBlID0gc3RyCisgICAgZGVmYXVsdF90eXBlID0gKGJ5dGVzLCBieXRlYXJyYXkpCiAgICAgZm9ybWF0X3VuaXQgPSAnYycKICAgICBjX2lnbm9yZWRfZGVmYXVsdCA9ICInXDAnIgogCiAgICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYpOgotICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuZGVmYXVsdCwgc3RyKSBhbmQgKGxlbihzZWxmLmRlZmF1bHQpICE9IDEpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuZGVmYXVsdCwgc2VsZi5kZWZhdWx0X3R5cGUpIGFuZCAobGVuKHNlbGYuZGVmYXVsdCkgIT0gMSk6CiAgICAgICAgICAgICBmYWlsKCJjaGFyX2NvbnZlcnRlcjogaWxsZWdhbCBkZWZhdWx0IHZhbHVlICIgKyByZXByKHNlbGYuZGVmYXVsdCkpCiAKIApAQCAtMjQxNywxOCArMjUzMCwyMCBAQAogICAgICAgICBpZiBub3QgYml0d2lzZToKICAgICAgICAgICAgIGZhaWwoIlVuc2lnbmVkIHNob3J0cyBtdXN0IGJlIGJpdHdpc2UgKGZvciBub3cpLiIpCiAKLUBhZGRfbGVnYWN5X2NfY29udmVydGVyKCdDJywgdHlwZXM9J3N0cicpCitAYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcignQycsIGFjY2VwdD17c3RyfSkKIGNsYXNzIGludF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CiAgICAgdHlwZSA9ICdpbnQnCiAgICAgZGVmYXVsdF90eXBlID0gaW50CiAgICAgZm9ybWF0X3VuaXQgPSAnaScKICAgICBjX2lnbm9yZWRfZGVmYXVsdCA9ICIwIgogCi0gICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYsICosIHR5cGVzPSdpbnQnKToKLSAgICAgICAgaWYgdHlwZXMgPT0gJ3N0cic6CisgICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYsICosIGFjY2VwdD17aW50fSwgdHlwZT1Ob25lKToKKyAgICAgICAgaWYgYWNjZXB0ID09IHtzdHJ9OgogICAgICAgICAgICAgc2VsZi5mb3JtYXRfdW5pdCA9ICdDJwotICAgICAgICBlbGlmIHR5cGVzICE9ICdpbnQnOgotICAgICAgICAgICAgZmFpbCgiaW50X2NvbnZlcnRlcjogaWxsZWdhbCAndHlwZXMnIGFyZ3VtZW50IikKKyAgICAgICAgZWxpZiBhY2NlcHQgIT0ge2ludH06CisgICAgICAgICAgICBmYWlsKCJpbnRfY29udmVydGVyOiBpbGxlZ2FsICdhY2NlcHQnIGFyZ3VtZW50ICIgKyByZXByKGFjY2VwdCkpCisgICAgICAgIGlmIHR5cGUgIT0gTm9uZToKKyAgICAgICAgICAgIHNlbGYudHlwZSA9IHR5cGUKIAogY2xhc3MgdW5zaWduZWRfaW50X2NvbnZlcnRlcihDQ29udmVydGVyKToKICAgICB0eXBlID0gJ3Vuc2lnbmVkIGludCcKQEAgLTI1MTcsMTM3ICsyNjMyLDE1MyBAQAogICAgICAgICAgICAgc2VsZi50eXBlID0gdHlwZQogCiAKLUBhZGRfbGVnYWN5X2NfY29udmVydGVyKCdzIycsIGxlbmd0aD1UcnVlKQotQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ3knLCB0eXBlcz0iYnl0ZXMiKQotQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ3kjJywgdHlwZXM9ImJ5dGVzIiwgbGVuZ3RoPVRydWUpCi1AYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcigneicsIG51bGxhYmxlPVRydWUpCi1AYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcigneiMnLCBudWxsYWJsZT1UcnVlLCBsZW5ndGg9VHJ1ZSkKKyMKKyMgV2UgZGVmaW5lIHRocmVlIGNvbnZlbnRpb25zIGZvciBidWZmZXIgdHlwZXMgaW4gdGhlICdhY2NlcHQnIGFyZ3VtZW50OgorIworIyAgYnVmZmVyICA6IGFueSBvYmplY3Qgc3VwcG9ydGluZyB0aGUgYnVmZmVyIGludGVyZmFjZQorIyAgcndidWZmZXI6IGFueSBvYmplY3Qgc3VwcG9ydGluZyB0aGUgYnVmZmVyIGludGVyZmFjZSwgYnV0IG11c3QgYmUgd3JpdGVhYmxlCisjICByb2J1ZmZlcjogYW55IG9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgaW50ZXJmYWNlLCBidXQgbXVzdCBub3QgYmUgd3JpdGVhYmxlCisjCisKK2NsYXNzIGJ1ZmZlcjogcGFzcworY2xhc3MgcndidWZmZXI6IHBhc3MKK2NsYXNzIHJvYnVmZmVyOiBwYXNzCisKK2RlZiBzdHJfY29udmVydGVyX2tleSh0eXBlcywgZW5jb2RpbmcsIHplcm9lcyk6CisgICAgcmV0dXJuIChmcm96ZW5zZXQodHlwZXMpLCBib29sKGVuY29kaW5nKSwgYm9vbCh6ZXJvZXMpKQorCitzdHJfY29udmVydGVyX2FyZ3VtZW50X21hcCA9IHt9CisKIGNsYXNzIHN0cl9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CiAgICAgdHlwZSA9ICdjb25zdCBjaGFyIConCiAgICAgZGVmYXVsdF90eXBlID0gKHN0ciwgTnVsbCwgTm9uZVR5cGUpCiAgICAgZm9ybWF0X3VuaXQgPSAncycKIAotICAgIGRlZiBjb252ZXJ0ZXJfaW5pdChzZWxmLCAqLCBlbmNvZGluZz1Ob25lLCB0eXBlcz0ic3RyIiwKLSAgICAgICAgbGVuZ3RoPUZhbHNlLCBudWxsYWJsZT1GYWxzZSwgemVyb2VzPUZhbHNlKToKKyAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZiwgKiwgYWNjZXB0PXtzdHJ9LCBlbmNvZGluZz1Ob25lLCB6ZXJvZXM9RmFsc2UpOgogCi0gICAgICAgIHR5cGVzID0gc2V0KHR5cGVzLnN0cmlwKCkuc3BsaXQoKSkKLSAgICAgICAgYnl0ZXNfdHlwZSA9IHNldCgoImJ5dGVzIiwpKQotICAgICAgICBzdHJfdHlwZSA9IHNldCgoInN0ciIsKSkKLSAgICAgICAgYWxsXzNfdHlwZSA9IHNldCgoImJ5dGVhcnJheSIsKSkgfCBieXRlc190eXBlIHwgc3RyX3R5cGUKLSAgICAgICAgaXNfYnl0ZXMgPSB0eXBlcyA9PSBieXRlc190eXBlCi0gICAgICAgIGlzX3N0ciA9IHR5cGVzID09IHN0cl90eXBlCi0gICAgICAgIGlzX2FsbF8zID0gdHlwZXMgPT0gYWxsXzNfdHlwZQotCi0gICAgICAgIHNlbGYubGVuZ3RoID0gYm9vbChsZW5ndGgpCi0gICAgICAgIGZvcm1hdF91bml0ID0gTm9uZQotCi0gICAgICAgIGlmIGVuY29kaW5nOgotICAgICAgICAgICAgc2VsZi5lbmNvZGluZyA9IGVuY29kaW5nCi0KLSAgICAgICAgICAgIGlmIGlzX3N0ciBhbmQgbm90IChsZW5ndGggb3IgemVyb2VzIG9yIG51bGxhYmxlKToKLSAgICAgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICdlcycKLSAgICAgICAgICAgIGVsaWYgaXNfYWxsXzMgYW5kIG5vdCAobGVuZ3RoIG9yIHplcm9lcyBvciBudWxsYWJsZSk6Ci0gICAgICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAnZXQnCi0gICAgICAgICAgICBlbGlmIGlzX3N0ciBhbmQgbGVuZ3RoIGFuZCB6ZXJvZXMgYW5kIG5vdCBudWxsYWJsZToKLSAgICAgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICdlcyMnCi0gICAgICAgICAgICBlbGlmIGlzX2FsbF8zIGFuZCBsZW5ndGggYW5kIG5vdCAobnVsbGFibGUgb3IgemVyb2VzKToKLSAgICAgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICdldCMnCi0KLSAgICAgICAgICAgIGlmIGZvcm1hdF91bml0LmVuZHN3aXRoKCcjJyk6Ci0gICAgICAgICAgICAgICAgZmFpbCgiU29ycnk6IGNvZGUgdXNpbmcgZm9ybWF0IHVuaXQgIiwgcmVwcihmb3JtYXRfdW5pdCksICJwcm9iYWJseSBkb2Vzbid0IHdvcmsgcHJvcGVybHkgeWV0LlxuR2l2ZSBMYXJyeSB5b3VyIHRlc3QgY2FzZSBhbmQgaGUnbGwgaXQuIikKLSAgICAgICAgICAgICAgICAjIFRPRE8gc2V0IHBvaW50ZXIgdG8gTlVMTAotICAgICAgICAgICAgICAgICMgVE9ETyBhZGQgY2xlYW51cCBmb3IgYnVmZmVyCi0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiB6ZXJvZXM6Ci0gICAgICAgICAgICAgICAgZmFpbCgic3RyX2NvbnZlcnRlcjogaWxsZWdhbCBjb21iaW5hdGlvbiBvZiBhcmd1bWVudHMgKHplcm9lcyBpcyBvbmx5IGxlZ2FsIHdpdGggYW4gZW5jb2RpbmcpIikKLQotICAgICAgICAgICAgaWYgaXNfYnl0ZXMgYW5kIG5vdCAobnVsbGFibGUgb3IgbGVuZ3RoKToKLSAgICAgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICd5JwotICAgICAgICAgICAgZWxpZiBpc19ieXRlcyBhbmQgbGVuZ3RoIGFuZCBub3QgbnVsbGFibGU6Ci0gICAgICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAneSMnCi0gICAgICAgICAgICBlbGlmIGlzX3N0ciBhbmQgbm90IChudWxsYWJsZSBvciBsZW5ndGgpOgotICAgICAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ3MnCi0gICAgICAgICAgICBlbGlmIGlzX3N0ciBhbmQgbGVuZ3RoIGFuZCBub3QgbnVsbGFibGU6Ci0gICAgICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAncyMnCi0gICAgICAgICAgICBlbGlmIGlzX3N0ciBhbmQgbnVsbGFibGUgIGFuZCBub3QgbGVuZ3RoOgotICAgICAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ3onCi0gICAgICAgICAgICBlbGlmIGlzX3N0ciBhbmQgbnVsbGFibGUgYW5kIGxlbmd0aDoKLSAgICAgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICd6IycKLQorICAgICAgICBrZXkgPSBzdHJfY29udmVydGVyX2tleShhY2NlcHQsIGVuY29kaW5nLCB6ZXJvZXMpCisgICAgICAgIGZvcm1hdF91bml0ID0gc3RyX2NvbnZlcnRlcl9hcmd1bWVudF9tYXAuZ2V0KGtleSkKICAgICAgICAgaWYgbm90IGZvcm1hdF91bml0OgotICAgICAgICAgICAgZmFpbCgic3RyX2NvbnZlcnRlcjogaWxsZWdhbCBjb21iaW5hdGlvbiBvZiBhcmd1bWVudHMiKQorICAgICAgICAgICAgZmFpbCgic3RyX2NvbnZlcnRlcjogaWxsZWdhbCBjb21iaW5hdGlvbiBvZiBhcmd1bWVudHMiLCBrZXkpCisKICAgICAgICAgc2VsZi5mb3JtYXRfdW5pdCA9IGZvcm1hdF91bml0CisgICAgICAgIHNlbGYubGVuZ3RoID0gYm9vbCh6ZXJvZXMpCisgICAgICAgIGlmIGVuY29kaW5nOgorICAgICAgICAgICAgaWYgc2VsZi5kZWZhdWx0IG5vdCBpbiAoTnVsbCwgTm9uZSwgdW5zcGVjaWZpZWQpOgorICAgICAgICAgICAgICAgIGZhaWwoInN0cl9jb252ZXJ0ZXI6IEFyZ3VtZW50IENsaW5pYyBkb2Vzbid0IHN1cHBvcnQgZGVmYXVsdCB2YWx1ZXMgZm9yIGVuY29kZWQgc3RyaW5ncyIpCisgICAgICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2RpbmcKKyAgICAgICAgICAgIHNlbGYudHlwZSA9ICdjaGFyIConCisgICAgICAgICAgICAjIHNvcnJ5LCBjbGluaWMgY2FuJ3Qgc3VwcG9ydCBwcmVhbGxvY2F0ZWQgYnVmZmVycworICAgICAgICAgICAgIyBmb3IgZXMjIGFuZCBldCMKKyAgICAgICAgICAgIHNlbGYuY19kZWZhdWx0ID0gIk5VTEwiCisKKyAgICBkZWYgY2xlYW51cChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5lbmNvZGluZzoKKyAgICAgICAgICAgIG5hbWUgPSBlbnN1cmVfbGVnYWxfY19pZGVudGlmaWVyKHNlbGYubmFtZSkKKyAgICAgICAgICAgIHJldHVybiAiIi5qb2luKFsiaWYgKCIsIG5hbWUsICIpXG4gICBQeU1lbV9GUkVFKCIsIG5hbWUsICIpO1xuIl0pCisKKyMKKyMgVGhpcyBpcyB0aGUgZm91cnRoIG9yIGZpZnRoIHJld3JpdGUgb2YgcmVnaXN0ZXJpbmcgYWxsIHRoZQorIyBjcmF6eSBzdHJpbmcgY29udmVydGVyIGZvcm1hdCB1bml0cy4gIFByZXZpb3VzIGFwcHJvYWNoZXMgaGlkCisjIGJ1Z3MtLWdlbmVyYWxseSBtaXNtYXRjaGVzIGJldHdlZW4gdGhlIHNlbWFudGljcyBvZiB0aGUgZm9ybWF0CisjIHVuaXQgYW5kIHRoZSBhcmd1bWVudHMgbmVjZXNzYXJ5IHRvIHJlcHJlc2VudCB0aG9zZSBzZW1hbnRpY3MKKyMgcHJvcGVybHkuICBIb3BlZnVsbHkgd2l0aCB0aGlzIGFwcHJvYWNoIHdlJ2xsIGdldCBpdCAxMDAlIHJpZ2h0LgorIworIyBUaGUgcigpIGZ1bmN0aW9uIChzaG9ydCBmb3IgInJlZ2lzdGVyIikgYm90aCByZWdpc3RlcnMgdGhlCisjIG1hcHBpbmcgZnJvbSBhcmd1bWVudHMgdG8gZm9ybWF0IHVuaXQgKmFuZCogcmVnaXN0ZXJzIHRoZQorIyBsZWdhY3kgQyBjb252ZXJ0ZXIgZm9yIHRoYXQgZm9ybWF0IHVuaXQuCisjCitkZWYgcihmb3JtYXRfdW5pdCwgKiwgYWNjZXB0LCBlbmNvZGluZz1GYWxzZSwgemVyb2VzPUZhbHNlKToKKyAgICBpZiBub3QgZW5jb2RpbmcgYW5kIGZvcm1hdF91bml0ICE9ICdzJzoKKyAgICAgICAgIyBhZGQgdGhlIGxlZ2FjeSBjIGNvbnZlcnRlcnMgaGVyZSB0b28uCisgICAgICAgICMKKyAgICAgICAgIyBub3RlOiBhZGRfbGVnYWN5X2NfY29udmVydGVyIGNhbid0IHdvcmsgZm9yCisgICAgICAgICMgICBlcywgZXMjLCBldCwgb3IgZXQjCisgICAgICAgICMgICBiZWNhdXNlIG9mIHRoZWlyIGV4dHJhIGVuY29kaW5nIGFyZ3VtZW50CisgICAgICAgICMKKyAgICAgICAgIyBhbHNvIGRvbid0IGFkZCB0aGUgY29udmVydGVyIGZvciAncycgYmVjYXVzZQorICAgICAgICAjIHRoZSBtZXRhY2xhc3MgZm9yIENDb252ZXJ0ZXIgYWRkcyBpdCBmb3IgdXMuCisgICAgICAgIGt3YXJncyA9IHt9CisgICAgICAgIGlmIGFjY2VwdCAhPSB7c3RyfToKKyAgICAgICAgICAgIGt3YXJnc1snYWNjZXB0J10gPSBhY2NlcHQKKyAgICAgICAgaWYgemVyb2VzOgorICAgICAgICAgICAga3dhcmdzWyd6ZXJvZXMnXSA9IFRydWUKKyAgICAgICAgYWRkZWRfZiA9IGZ1bmN0b29scy5wYXJ0aWFsKHN0cl9jb252ZXJ0ZXIsICoqa3dhcmdzKQorICAgICAgICBsZWdhY3lfY29udmVydGVyc1tmb3JtYXRfdW5pdF0gPSBhZGRlZF9mCisKKyAgICBkID0gc3RyX2NvbnZlcnRlcl9hcmd1bWVudF9tYXAKKyAgICBrZXkgPSBzdHJfY29udmVydGVyX2tleShhY2NlcHQsIGVuY29kaW5nLCB6ZXJvZXMpCisgICAgaWYga2V5IGluIGQ6CisgICAgICAgIHN5cy5leGl0KCJEdXBsaWNhdGUga2V5cyBzcGVjaWZpZWQgZm9yIHN0cl9jb252ZXJ0ZXJfYXJndW1lbnRfbWFwISIpCisgICAgZFtrZXldID0gZm9ybWF0X3VuaXQKKworcignZXMnLCAgZW5jb2Rpbmc9VHJ1ZSwgICAgICAgICAgICAgIGFjY2VwdD17c3RyfSkKK3IoJ2VzIycsIGVuY29kaW5nPVRydWUsIHplcm9lcz1UcnVlLCBhY2NlcHQ9e3N0cn0pCityKCdldCcsICBlbmNvZGluZz1UcnVlLCAgICAgICAgICAgICAgYWNjZXB0PXtieXRlcywgYnl0ZWFycmF5LCBzdHJ9KQorcignZXQjJywgZW5jb2Rpbmc9VHJ1ZSwgemVyb2VzPVRydWUsIGFjY2VwdD17Ynl0ZXMsIGJ5dGVhcnJheSwgc3RyfSkKK3IoJ3MnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQ9e3N0cn0pCityKCdzIycsICAgICAgICAgICAgICAgICB6ZXJvZXM9VHJ1ZSwgYWNjZXB0PXtyb2J1ZmZlciwgc3RyfSkKK3IoJ3knLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQ9e3JvYnVmZmVyfSkKK3IoJ3kjJywgICAgICAgICAgICAgICAgIHplcm9lcz1UcnVlLCBhY2NlcHQ9e3JvYnVmZmVyfSkKK3IoJ3onLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KQorcigneiMnLCAgICAgICAgICAgICAgICAgemVyb2VzPVRydWUsIGFjY2VwdD17cm9idWZmZXIsIHN0ciwgTm9uZVR5cGV9KQorZGVsIHIKIAogCiBjbGFzcyBQeUJ5dGVzT2JqZWN0X2NvbnZlcnRlcihDQ29udmVydGVyKToKICAgICB0eXBlID0gJ1B5Qnl0ZXNPYmplY3QgKicKICAgICBmb3JtYXRfdW5pdCA9ICdTJworICAgICMgYWNjZXB0ID0ge2J5dGVzfQogCiBjbGFzcyBQeUJ5dGVBcnJheU9iamVjdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CiAgICAgdHlwZSA9ICdQeUJ5dGVBcnJheU9iamVjdCAqJwogICAgIGZvcm1hdF91bml0ID0gJ1knCisgICAgIyBhY2NlcHQgPSB7Ynl0ZWFycmF5fQogCiBjbGFzcyB1bmljb2RlX2NvbnZlcnRlcihDQ29udmVydGVyKToKICAgICB0eXBlID0gJ1B5T2JqZWN0IConCiAgICAgZGVmYXVsdF90eXBlID0gKHN0ciwgTnVsbCwgTm9uZVR5cGUpCiAgICAgZm9ybWF0X3VuaXQgPSAnVScKIAotQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ3UjJywgbGVuZ3RoPVRydWUpCi1AYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcignWicsIG51bGxhYmxlPVRydWUpCi1AYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcignWiMnLCBudWxsYWJsZT1UcnVlLCBsZW5ndGg9VHJ1ZSkKK0BhZGRfbGVnYWN5X2NfY29udmVydGVyKCd1IycsIHplcm9lcz1UcnVlKQorQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ1onLCBhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KQorQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ1ojJywgYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSwgemVyb2VzPVRydWUpCiBjbGFzcyBQeV9VTklDT0RFX2NvbnZlcnRlcihDQ29udmVydGVyKToKICAgICB0eXBlID0gJ1B5X1VOSUNPREUgKicKICAgICBkZWZhdWx0X3R5cGUgPSAoc3RyLCBOdWxsLCBOb25lVHlwZSkKICAgICBmb3JtYXRfdW5pdCA9ICd1JwogCi0gICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYsICosIG51bGxhYmxlPUZhbHNlLCBsZW5ndGg9RmFsc2UpOgotICAgICAgICBmb3JtYXRfdW5pdCA9ICdaJyBpZiBudWxsYWJsZSBlbHNlICd1JwotICAgICAgICBpZiBsZW5ndGg6CisgICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYsICosIGFjY2VwdD17c3RyfSwgemVyb2VzPUZhbHNlKToKKyAgICAgICAgZm9ybWF0X3VuaXQgPSAnWicgaWYgYWNjZXB0PT17c3RyLCBOb25lVHlwZX0gZWxzZSAndScKKyAgICAgICAgaWYgemVyb2VzOgogICAgICAgICAgICAgZm9ybWF0X3VuaXQgKz0gJyMnCiAgICAgICAgICAgICBzZWxmLmxlbmd0aCA9IFRydWUKICAgICAgICAgc2VsZi5mb3JtYXRfdW5pdCA9IGZvcm1hdF91bml0CiAKLSMKLSMgV2UgZGVmaW5lIHRocmVlIHN0cmluZyBjb252ZW50aW9ucyBmb3IgYnVmZmVyIHR5cGVzIGluIHRoZSAndHlwZXMnIGFyZ3VtZW50OgotIyAgJ2J1ZmZlcicgOiBhbnkgb2JqZWN0IHN1cHBvcnRpbmcgdGhlIGJ1ZmZlciBpbnRlcmZhY2UKLSMgICdyd2J1ZmZlcic6IGFueSBvYmplY3Qgc3VwcG9ydGluZyB0aGUgYnVmZmVyIGludGVyZmFjZSwgYnV0IG11c3QgYmUgd3JpdGVhYmxlCi0jICAncm9idWZmZXInOiBhbnkgb2JqZWN0IHN1cHBvcnRpbmcgdGhlIGJ1ZmZlciBpbnRlcmZhY2UsIGJ1dCBtdXN0IG5vdCBiZSB3cml0ZWFibGUKLSMKLUBhZGRfbGVnYWN5X2NfY29udmVydGVyKCdzKicsIHR5cGVzPSdzdHIgYnl0ZXMgYnl0ZWFycmF5IGJ1ZmZlcicpCi1AYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcigneionLCB0eXBlcz0nc3RyIGJ5dGVzIGJ5dGVhcnJheSBidWZmZXInLCBudWxsYWJsZT1UcnVlKQotQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ3cqJywgdHlwZXM9J2J5dGVhcnJheSByd2J1ZmZlcicpCitAYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcigncyonLCBhY2NlcHQ9e3N0ciwgYnVmZmVyfSkKK0BhZGRfbGVnYWN5X2NfY29udmVydGVyKCd6KicsIGFjY2VwdD17c3RyLCBidWZmZXIsIE5vbmVUeXBlfSkKK0BhZGRfbGVnYWN5X2NfY29udmVydGVyKCd3KicsIGFjY2VwdD17cndidWZmZXJ9KQogY2xhc3MgUHlfYnVmZmVyX2NvbnZlcnRlcihDQ29udmVydGVyKToKICAgICB0eXBlID0gJ1B5X2J1ZmZlcicKICAgICBmb3JtYXRfdW5pdCA9ICd5KicKICAgICBpbXBsX2J5X3JlZmVyZW5jZSA9IFRydWUKICAgICBjX2lnbm9yZWRfZGVmYXVsdCA9ICJ7TlVMTCwgTlVMTH0iCiAKLSAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZiwgKiwgdHlwZXM9J2J5dGVzIGJ5dGVhcnJheSBidWZmZXInLCBudWxsYWJsZT1GYWxzZSk6CisgICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYsICosIGFjY2VwdD17YnVmZmVyfSk6CiAgICAgICAgIGlmIHNlbGYuZGVmYXVsdCBub3QgaW4gKHVuc3BlY2lmaWVkLCBOb25lKToKICAgICAgICAgICAgIGZhaWwoIlRoZSBvbmx5IGxlZ2FsIGRlZmF1bHQgdmFsdWUgZm9yIFB5X2J1ZmZlciBpcyBOb25lLiIpCi0gICAgICAgIHNlbGYuY19kZWZhdWx0ID0gc2VsZi5jX2lnbm9yZWRfZGVmYXVsdAotICAgICAgICB0eXBlcyA9IHNldCh0eXBlcy5zdHJpcCgpLnNwbGl0KCkpCi0gICAgICAgIGJ5dGVzX3R5cGUgPSBzZXQoKCdieXRlcycsKSkKLSAgICAgICAgYnl0ZWFycmF5X3R5cGUgPSBzZXQoKCdieXRlYXJyYXknLCkpCi0gICAgICAgIGJ1ZmZlcl90eXBlID0gc2V0KCgnYnVmZmVyJywpKQotICAgICAgICByd2J1ZmZlcl90eXBlID0gc2V0KCgncndidWZmZXInLCkpCi0gICAgICAgIHJvYnVmZmVyX3R5cGUgPSBzZXQoKCdyb2J1ZmZlcicsKSkKLSAgICAgICAgc3RyX3R5cGUgPSBzZXQoKCdzdHInLCkpCi0gICAgICAgIGJ5dGVzX2J5dGVhcnJheV9idWZmZXJfdHlwZSA9IGJ5dGVzX3R5cGUgfCBieXRlYXJyYXlfdHlwZSB8IGJ1ZmZlcl90eXBlCiAKLSAgICAgICAgZm9ybWF0X3VuaXQgPSBOb25lCi0gICAgICAgIGlmIHR5cGVzID09IChzdHJfdHlwZSB8IGJ5dGVzX2J5dGVhcnJheV9idWZmZXJfdHlwZSk6Ci0gICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICdzKicgaWYgbm90IG51bGxhYmxlIGVsc2UgJ3oqJworICAgICAgICBzZWxmLmNfZGVmYXVsdCA9IHNlbGYuY19pZ25vcmVkX2RlZmF1bHQKKworICAgICAgICBpZiBhY2NlcHQgPT0ge3N0ciwgYnVmZmVyLCBOb25lVHlwZX06CisgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICd6KicKKyAgICAgICAgZWxpZiBhY2NlcHQgPT0ge3N0ciwgYnVmZmVyfToKKyAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ3MqJworICAgICAgICBlbGlmIGFjY2VwdCA9PSB7YnVmZmVyfToKKyAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ3kqJworICAgICAgICBlbGlmIGFjY2VwdCA9PSB7cndidWZmZXJ9OgorICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAndyonCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBudWxsYWJsZToKLSAgICAgICAgICAgICAgICBmYWlsKCdQeV9idWZmZXJfY29udmVydGVyOiBpbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIGFyZ3VtZW50cyAobnVsbGFibGU9VHJ1ZSknKQotICAgICAgICAgICAgZWxpZiB0eXBlcyA9PSAoYnl0ZXNfYnl0ZWFycmF5X2J1ZmZlcl90eXBlKToKLSAgICAgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICd5KicKLSAgICAgICAgICAgIGVsaWYgdHlwZXMgPT0gKGJ5dGVhcnJheV90eXBlIHwgcndidWZmZXJfdHlwZSk6Ci0gICAgICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAndyonCi0gICAgICAgIGlmIG5vdCBmb3JtYXRfdW5pdDoKICAgICAgICAgICAgIGZhaWwoIlB5X2J1ZmZlcl9jb252ZXJ0ZXI6IGlsbGVnYWwgY29tYmluYXRpb24gb2YgYXJndW1lbnRzIikKIAogICAgICAgICBzZWxmLmZvcm1hdF91bml0ID0gZm9ybWF0X3VuaXQKQEAgLTI4NjMsMTAgKzI5OTQsMTEgQEAKICAgICB0eXBlID0gJ2xvbmcnCiAgICAgY29udmVyc2lvbl9mbiA9ICdQeUxvbmdfRnJvbUxvbmcnCiAgICAgY2FzdCA9ICcnCisgICAgdW5zaWduZWRfY2FzdCA9ICcnCiAKICAgICBkZWYgcmVuZGVyKHNlbGYsIGZ1bmN0aW9uLCBkYXRhKToKICAgICAgICAgc2VsZi5kZWNsYXJlKGRhdGEpCi0gICAgICAgIHNlbGYuZXJyX29jY3VycmVkX2lmKCJfcmV0dXJuX3ZhbHVlID09IC0xIiwgZGF0YSkKKyAgICAgICAgc2VsZi5lcnJfb2NjdXJyZWRfaWYoIl9yZXR1cm5fdmFsdWUgPT0ge30tMSIuZm9ybWF0KHNlbGYudW5zaWduZWRfY2FzdCksIGRhdGEpCiAgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKAogICAgICAgICAgICAgJycuam9pbigoJ3JldHVybl92YWx1ZSA9ICcsIHNlbGYuY29udmVyc2lvbl9mbiwgJygnLCBzZWxmLmNhc3QsICdfcmV0dXJuX3ZhbHVlKTtcbicpKSkKIApAQCAtMjg4NywxMCArMzAxOSwxMiBAQAogY2xhc3MgdW5zaWduZWRfbG9uZ19yZXR1cm5fY29udmVydGVyKGxvbmdfcmV0dXJuX2NvbnZlcnRlcik6CiAgICAgdHlwZSA9ICd1bnNpZ25lZCBsb25nJwogICAgIGNvbnZlcnNpb25fZm4gPSAnUHlMb25nX0Zyb21VbnNpZ25lZExvbmcnCisgICAgdW5zaWduZWRfY2FzdCA9ICcodW5zaWduZWQgbG9uZyknCiAKIGNsYXNzIHVuc2lnbmVkX2ludF9yZXR1cm5fY29udmVydGVyKHVuc2lnbmVkX2xvbmdfcmV0dXJuX2NvbnZlcnRlcik6CiAgICAgdHlwZSA9ICd1bnNpZ25lZCBpbnQnCiAgICAgY2FzdCA9ICcodW5zaWduZWQgbG9uZyknCisgICAgdW5zaWduZWRfY2FzdCA9ICcodW5zaWduZWQgaW50KScKIAogY2xhc3MgUHlfc3NpemVfdF9yZXR1cm5fY29udmVydGVyKGxvbmdfcmV0dXJuX2NvbnZlcnRlcik6CiAgICAgdHlwZSA9ICdQeV9zc2l6ZV90JwpAQCAtMjg5OSw2ICszMDMzLDcgQEAKIGNsYXNzIHNpemVfdF9yZXR1cm5fY29udmVydGVyKGxvbmdfcmV0dXJuX2NvbnZlcnRlcik6CiAgICAgdHlwZSA9ICdzaXplX3QnCiAgICAgY29udmVyc2lvbl9mbiA9ICdQeUxvbmdfRnJvbVNpemVfdCcKKyAgICB1bnNpZ25lZF9jYXN0ID0gJyhzaXplX3QpJwogCiAKIGNsYXNzIGRvdWJsZV9yZXR1cm5fY29udmVydGVyKENSZXR1cm5Db252ZXJ0ZXIpOgpAQCAtMjkyNiw2ICszMDYxLDI0IEBACiAgICAgICAgICAgICAncmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChfcmV0dXJuX3ZhbHVlKTtcbicpCiAKIAorZGVmIGV2YWxfYXN0X2V4cHIobm9kZSwgZ2xvYmFscywgKiwgZmlsZW5hbWU9Jy0nKToKKyAgICAiIiIKKyAgICBUYWtlcyBhbiBhc3QuRXhwciBub2RlLiAgQ29tcGlsZXMgYW5kIGV2YWx1YXRlcyBpdC4KKyAgICBSZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGV4cHJlc3Npb24uCisKKyAgICBnbG9iYWxzIHJlcHJlc2VudHMgdGhlIGdsb2JhbHMgZGljdCB0aGUgZXhwcmVzc2lvbgorICAgIHNob3VsZCBzZWUuICAoVGhlcmUncyBubyBlcXVpdmFsZW50IGZvciAibG9jYWxzIiBoZXJlLikKKyAgICAiIiIKKworICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgYXN0LkV4cHIpOgorICAgICAgICBub2RlID0gbm9kZS52YWx1ZQorCisgICAgbm9kZSA9IGFzdC5FeHByZXNzaW9uKG5vZGUpCisgICAgY28gPSBjb21waWxlKG5vZGUsIGZpbGVuYW1lLCAnZXZhbCcpCisgICAgZm4gPSB0eXBlcy5GdW5jdGlvblR5cGUoY28sIGdsb2JhbHMpCisgICAgcmV0dXJuIGZuKCkKKworCiBjbGFzcyBJbmRlbnRTdGFjazoKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYuaW5kZW50cyA9IFtdCkBAIC0zMDk0LDQzICszMjQ3LDQzIEBACiAgICAgICAgIGZhaWwoInVua25vd24gZGVzdGluYXRpb24gY29tbWFuZCIsIHJlcHIoY29tbWFuZCkpCiAKIAotICAgIGRlZiBkaXJlY3RpdmVfb3V0cHV0KHNlbGYsIGZpZWxkLCBkZXN0aW5hdGlvbj0nJyk6Ci0gICAgICAgIGZkID0gc2VsZi5jbGluaWMuZmllbGRfZGVzdGluYXRpb25zCisgICAgZGVmIGRpcmVjdGl2ZV9vdXRwdXQoc2VsZiwgY29tbWFuZF9vcl9uYW1lLCBkZXN0aW5hdGlvbj0nJyk6CisgICAgICAgIGZkID0gc2VsZi5jbGluaWMuZGVzdGluYXRpb25fYnVmZmVycwogCi0gICAgICAgIGlmIGZpZWxkID09ICJwcmVzZXQiOgorICAgICAgICBpZiBjb21tYW5kX29yX25hbWUgPT0gInByZXNldCI6CiAgICAgICAgICAgICBwcmVzZXQgPSBzZWxmLmNsaW5pYy5wcmVzZXRzLmdldChkZXN0aW5hdGlvbikKICAgICAgICAgICAgIGlmIG5vdCBwcmVzZXQ6CiAgICAgICAgICAgICAgICAgZmFpbCgiVW5rbm93biBwcmVzZXQgIiArIHJlcHIoZGVzdGluYXRpb24pICsgIiEiKQogICAgICAgICAgICAgZmQudXBkYXRlKHByZXNldCkKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGlmIGZpZWxkID09ICJwdXNoIjoKLSAgICAgICAgICAgIHNlbGYuY2xpbmljLmZpZWxkX2Rlc3RpbmF0aW9uc19zdGFjay5hcHBlbmQoZmQuY29weSgpKQorICAgICAgICBpZiBjb21tYW5kX29yX25hbWUgPT0gInB1c2giOgorICAgICAgICAgICAgc2VsZi5jbGluaWMuZGVzdGluYXRpb25fYnVmZmVyc19zdGFjay5hcHBlbmQoZmQuY29weSgpKQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgaWYgZmllbGQgPT0gInBvcCI6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5jbGluaWMuZmllbGRfZGVzdGluYXRpb25zX3N0YWNrOgorICAgICAgICBpZiBjb21tYW5kX29yX25hbWUgPT0gInBvcCI6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5jbGluaWMuZGVzdGluYXRpb25fYnVmZmVyc19zdGFjazoKICAgICAgICAgICAgICAgICBmYWlsKCJDYW4ndCAnb3V0cHV0IHBvcCcsIHN0YWNrIGlzIGVtcHR5ISIpCi0gICAgICAgICAgICBwcmV2aW91c19mZCA9IHNlbGYuY2xpbmljLmZpZWxkX2Rlc3RpbmF0aW9uc19zdGFjay5wb3AoKQorICAgICAgICAgICAgcHJldmlvdXNfZmQgPSBzZWxmLmNsaW5pYy5kZXN0aW5hdGlvbl9idWZmZXJzX3N0YWNrLnBvcCgpCiAgICAgICAgICAgICBmZC51cGRhdGUocHJldmlvdXNfZmQpCiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAjIHNlY3JldCBjb21tYW5kIGZvciBkZWJ1Z2dpbmchCi0gICAgICAgIGlmIGZpZWxkID09ICJwcmludCI6CisgICAgICAgIGlmIGNvbW1hbmRfb3JfbmFtZSA9PSAicHJpbnQiOgogICAgICAgICAgICAgc2VsZi5ibG9jay5vdXRwdXQuYXBwZW5kKHBwcmludC5wZm9ybWF0KGZkKSkKICAgICAgICAgICAgIHNlbGYuYmxvY2sub3V0cHV0LmFwcGVuZCgnXG4nKQogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgZCA9IHNlbGYuY2xpbmljLmdldF9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKIAotICAgICAgICBpZiBmaWVsZCA9PSAiZXZlcnl0aGluZyI6CisgICAgICAgIGlmIGNvbW1hbmRfb3JfbmFtZSA9PSAiZXZlcnl0aGluZyI6CiAgICAgICAgICAgICBmb3IgbmFtZSBpbiBsaXN0KGZkKToKICAgICAgICAgICAgICAgICBmZFtuYW1lXSA9IGQKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGlmIGZpZWxkIG5vdCBpbiBmZDoKLSAgICAgICAgICAgIGZhaWwoIkludmFsaWQgZmllbGQgIiArIHJlcHIoZmllbGQpICsgIiwgbXVzdCBiZSBvbmUgb2Y6XG4gIHByZXNldCBwdXNoIHBvcCBwcmludCBldmVyeXRoaW5nICIgKyAiICIuam9pbihmZCkpCi0gICAgICAgIGZkW2ZpZWxkXSA9IGQKKyAgICAgICAgaWYgY29tbWFuZF9vcl9uYW1lIG5vdCBpbiBmZDoKKyAgICAgICAgICAgIGZhaWwoIkludmFsaWQgY29tbWFuZCAvIGRlc3RpbmF0aW9uIG5hbWUgIiArIHJlcHIoY29tbWFuZF9vcl9uYW1lKSArICIsIG11c3QgYmUgb25lIG9mOlxuICBwcmVzZXQgcHVzaCBwb3AgcHJpbnQgZXZlcnl0aGluZyAiICsgIiAiLmpvaW4oZmQpKQorICAgICAgICBmZFtjb21tYW5kX29yX25hbWVdID0gZAogCiAgICAgZGVmIGRpcmVjdGl2ZV9kdW1wKHNlbGYsIG5hbWUpOgogICAgICAgICBzZWxmLmJsb2NrLm91dHB1dC5hcHBlbmQoc2VsZi5jbGluaWMuZ2V0X2Rlc3RpbmF0aW9uKG5hbWUpLmR1bXAoKSkKQEAgLTM1MTMsNyArMzY2Niw3IEBACiAgICAgICAgIGV4Y2VwdCBTeW50YXhFcnJvcjoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAjIHRoZSBsYXN0ID0gd2FzIHByb2JhYmx5IGluc2lkZSBhIGZ1bmN0aW9uIGNhbGwsIGxpa2UKLSAgICAgICAgICAgICAgICAjICAgaTogaW50KG51bGxhYmxlPVRydWUpCisgICAgICAgICAgICAgICAgIyAgIGM6IGludChhY2NlcHQ9e3N0cn0pCiAgICAgICAgICAgICAgICAgIyBzbyBhc3N1bWUgdGhlcmUgd2FzIG5vIGFjdHVhbCBkZWZhdWx0IHZhbHVlLgogICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBOb25lCiAgICAgICAgICAgICAgICAgYXN0X2lucHV0ID0gImRlZiB4KHt9KTogcGFzcyIuZm9ybWF0KGxpbmUpCkBAIC0zNTI0LDYgKzM2NzcsMTQgQEAKICAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIGhhcyBhbiBpbnZhbGlkIHBhcmFtZXRlciBkZWNsYXJhdGlvbjpcblx0IiArIGxpbmUpCiAKICAgICAgICAgZnVuY3Rpb25fYXJncyA9IG1vZHVsZS5ib2R5WzBdLmFyZ3MKKworICAgICAgICBpZiBsZW4oZnVuY3Rpb25fYXJncy5hcmdzKSA+IDE6CisgICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiBoYXMgYW4gaW52YWxpZCBwYXJhbWV0ZXIgZGVjbGFyYXRpb24gKGNvbW1hPyk6XG5cdCIgKyBsaW5lKQorICAgICAgICBpZiBmdW5jdGlvbl9hcmdzLmRlZmF1bHRzIG9yIGZ1bmN0aW9uX2FyZ3Mua3dfZGVmYXVsdHM6CisgICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiBoYXMgYW4gaW52YWxpZCBwYXJhbWV0ZXIgZGVjbGFyYXRpb24gKGRlZmF1bHQgdmFsdWU/KTpcblx0IiArIGxpbmUpCisgICAgICAgIGlmIGZ1bmN0aW9uX2FyZ3MudmFyYXJnIG9yIGZ1bmN0aW9uX2FyZ3Mua3dhcmc6CisgICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiBoYXMgYW4gaW52YWxpZCBwYXJhbWV0ZXIgZGVjbGFyYXRpb24gKCphcmdzPyAqKmt3YXJncz8pOlxuXHQiICsgbGluZSkKKwogICAgICAgICBwYXJhbWV0ZXIgPSBmdW5jdGlvbl9hcmdzLmFyZ3NbMF0KIAogICAgICAgICBwYXJhbWV0ZXJfbmFtZSA9IHBhcmFtZXRlci5hcmcKQEAgLTM2ODYsNyArMzg0Nyw5IEBACiAgICAgICAgICAgICBmYWlsKCJBbm5vdGF0aW9ucyBtdXN0IGJlIGVpdGhlciBhIG5hbWUsIGEgZnVuY3Rpb24gY2FsbCwgb3IgYSBzdHJpbmcuIikKIAogICAgICAgICBuYW1lID0gYW5ub3RhdGlvbi5mdW5jLmlkCi0gICAgICAgIGt3YXJncyA9IHtub2RlLmFyZzogYXN0LmxpdGVyYWxfZXZhbChub2RlLnZhbHVlKSBmb3Igbm9kZSBpbiBhbm5vdGF0aW9uLmtleXdvcmRzfQorICAgICAgICBzeW1ib2xzID0gZ2xvYmFscygpCisKKyAgICAgICAga3dhcmdzID0ge25vZGUuYXJnOiBldmFsX2FzdF9leHByKG5vZGUudmFsdWUsIHN5bWJvbHMpIGZvciBub2RlIGluIGFubm90YXRpb24ua2V5d29yZHN9CiAgICAgICAgIHJldHVybiBuYW1lLCBGYWxzZSwga3dhcmdzCiAKICAgICBkZWYgcGFyc2Vfc3BlY2lhbF9zeW1ib2woc2VsZiwgc3ltYm9sKToKQEAgLTM5NTksNyArNDEyMiw3IEBACiAgICAgICAgICMgICAgIGFkZChmLnJldHVybl9jb252ZXJ0ZXIucHlfZGVmYXVsdCkKIAogICAgICAgICBpZiBub3QgZi5kb2NzdHJpbmdfb25seToKLSAgICAgICAgICAgIGFkZCgiXG4tLVxuIikKKyAgICAgICAgICAgIGFkZCgiXG4iICsgc2lnX2VuZF9tYXJrZXIgKyAiXG4iKQogCiAgICAgICAgIGRvY3N0cmluZ19maXJzdF9saW5lID0gb3V0cHV0KCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZGVtby9zczEucHkgYi9Ub29scy9kZW1vL3NzMS5weQppbmRleCA2NDk3OTBmLi5jNTFmMDQxIDEwMDc1NQotLS0gYS9Ub29scy9kZW1vL3NzMS5weQorKysgYi9Ub29scy9kZW1vL3NzMS5weQpAQCAtMjYxLDcgKzI2MSw3IEBACiAgICAgZGVmIGVuZF9pbnQoc2VsZiwgdGV4dCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYudmFsdWUgPSBpbnQodGV4dCkKLSAgICAgICAgZXhjZXB0OgorICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnZhbHVlID0gTm9uZQogCiAgICAgZW5kX2xvbmcgPSBlbmRfaW50CkBAIC0yNjksMTMgKzI2OSwxMyBAQAogICAgIGRlZiBlbmRfZG91YmxlKHNlbGYsIHRleHQpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnZhbHVlID0gZmxvYXQodGV4dCkKLSAgICAgICAgZXhjZXB0OgorICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnZhbHVlID0gTm9uZQogCiAgICAgZGVmIGVuZF9jb21wbGV4KHNlbGYsIHRleHQpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnZhbHVlID0gY29tcGxleCh0ZXh0KQotICAgICAgICBleGNlcHQ6CisgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICAgICAgIHNlbGYudmFsdWUgPSBOb25lCiAKICAgICBkZWYgZW5kX3N0cmluZyhzZWxmLCB0ZXh0KToKQEAgLTc2Myw3ICs3NjMsNyBAQAogICAgICAgICAgICAgZm9yIGNscyBpbiBpbnQsIGZsb2F0LCBjb21wbGV4OgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBjbHModGV4dCkKLSAgICAgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGNlbGwgPSBOdW1lcmljQ2VsbCh2YWx1ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL2ZyZWV6ZS9SRUFETUUgYi9Ub29scy9mcmVlemUvUkVBRE1FCmluZGV4IDgxYmUyYzguLjViYzViMDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2ZyZWV6ZS9SRUFETUUKKysrIGIvVG9vbHMvZnJlZXplL1JFQURNRQpAQCAtMTAwLDggKzEwMCw4IEBACiB0aGVuIGRlY2xhcmUgdGhlc2UgZGlyZWN0b3JpZXMgaW4geW91ciBmcm96ZW4gUHl0aG9uIHByb2dyYW0gdXNpbmcKIHRoZSBUQ0xfTElCUkFSWSwgVEtfTElCUkFSWSBhbmQgVElYX0xJQlJBUlkgZW52aXJvbm1lbnQgdmFyaWFibGVzLgogCi1Gb3IgZXhhbXBsZSwgYXNzdW1lIHlvdSB3aWxsIHNoaXAgeW91ciBmcm96ZW4gcHJvZ3JhbSBpbiB0aGUgZGlyZWN0b3J5IAotPHJvb3Q+L2Jpbi93aW5kb3dzLXg4NiBhbmQgd2lsbCBwbGFjZSB5b3VyIFRjbCBsaWJyYXJ5IGZpbGVzIAorRm9yIGV4YW1wbGUsIGFzc3VtZSB5b3Ugd2lsbCBzaGlwIHlvdXIgZnJvemVuIHByb2dyYW0gaW4gdGhlIGRpcmVjdG9yeQorPHJvb3Q+L2Jpbi93aW5kb3dzLXg4NiBhbmQgd2lsbCBwbGFjZSB5b3VyIFRjbCBsaWJyYXJ5IGZpbGVzCiBpbiA8cm9vdD4vbGliL3RjbDguMiBhbmQgeW91ciBUayBsaWJyYXJ5IGZpbGVzIGluIDxyb290Pi9saWIvdGs4LjIuIFRoZW4KIHBsYWNpbmcgdGhlIGZvbGxvd2luZyBsaW5lcyBpbiB5b3VyIGZyb3plbiBQeXRob24gc2NyaXB0IGJlZm9yZSBpbXBvcnRpbmcKIFRraW50ZXIgb3IgVGl4IHdvdWxkIHNldCB0aGUgZW52aXJvbm1lbnQgY29ycmVjdGx5IGZvciBUY2wvVGsvVGl4OgpAQCAtMTM4LDggKzEzOCw4IEBACiBlbnZpcm9ubWVudCB2YXJpYWJsZSBMRF9MSUJSQVJZX1BBVEggYW5kL29yIHRoZSBzeXN0ZW0KIHNoYXJlZCBsaWJyYXJ5IGNhY2hlIChsZC5zbykuIEFuIGFkZGl0aW9uYWwgcHJlZmVycmVkIGRpcmVjdG9yeSBmb3IKIGZpbmRpbmcgdGhlIGR5bmFtaWMgbGlicmFyaWVzIGlzIGJ1aWx0IGludG8gdGhlIC5kbGwgb3IgLnNvIGZpbGVzIGF0Ci1jb21waWxlIHRpbWUgLSBzZWUgdGhlIExJQl9SVU5USU1FX0RJUiB2YXJpYWJsZSBpbiB0aGUgVGNsIG1ha2VmaWxlLiAKLVRoZSBPUyBtdXN0IGZpbmQgdGhlIGR5bmFtaWMgbGlicmFyaWVzIG9yIHlvdXIgZnJvemVuIHByb2dyYW0gd29uJ3Qgc3RhcnQuIAorY29tcGlsZSB0aW1lIC0gc2VlIHRoZSBMSUJfUlVOVElNRV9ESVIgdmFyaWFibGUgaW4gdGhlIFRjbCBtYWtlZmlsZS4KK1RoZSBPUyBtdXN0IGZpbmQgdGhlIGR5bmFtaWMgbGlicmFyaWVzIG9yIHlvdXIgZnJvemVuIHByb2dyYW0gd29uJ3Qgc3RhcnQuCiBVc3VhbGx5IEkgbWFrZSBzdXJlIHRoYXQgdGhlIC5zbyBvciAuZGxsIGZpbGVzIGFyZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKIGFzIHRoZSBleGVjdXRhYmxlLCBidXQgdGhpcyBtYXkgbm90IGJlIGZvb2xwcm9vZi4KIApAQCAtMTQ5LDggKzE0OSw4IEBACiB0byBhIHRlbXBvcmFyeSBsb2NhdGlvbiB3aGVuIHRoZSBwcm9ncmFtIHJ1bnM7IHRoaXMgaXMgY3VycmVudGx5IGxlZnQKIGFzIGFuIGV4ZXJjaXNlIGZvciB0aGUgcmVhZGVyLiAgQW4gZWFzaWVyIGFwcHJvYWNoIGlzIHRvIGZyZWV6ZSB0aGUKIFRjbC9Uay9UaXggY29kZSBpbnRvIHRoZSBkeW5hbWljIGxpYnJhcmllcyB1c2luZyB0aGUgVGNsIEVUIGNvZGUsCi1vciB0aGUgVGl4IFN0YW5kLUFsb25lLU1vZHVsZSBjb2RlLiBPZiBjb3Vyc2UsIHlvdSBjYW4gYWxzbyBzaW1wbHkgCi1yZXF1aXJlIHRoYXQgVGNsL1RrIGlzIHJlcXVpcmVkIG9uIHRoZSB0YXJnZXQgaW5zdGFsbGF0aW9uLCBidXQgYmUgCitvciB0aGUgVGl4IFN0YW5kLUFsb25lLU1vZHVsZSBjb2RlLiBPZiBjb3Vyc2UsIHlvdSBjYW4gYWxzbyBzaW1wbHkKK3JlcXVpcmUgdGhhdCBUY2wvVGsgaXMgcmVxdWlyZWQgb24gdGhlIHRhcmdldCBpbnN0YWxsYXRpb24sIGJ1dCBiZQogY2FyZWZ1bCB0aGF0IHRoZSB2ZXJzaW9uIGNvcnJlc3BvbmRzLgogCiBUaGVyZSBhcmUgc29tZSBjYXZlYXRzIHVzaW5nIGZyb3plbiBUa2ludGVyIGFwcGxpY2F0aW9uczoKQEAgLTE2NCw3ICsxNjQsNyBAQAogQSB3YXJuaW5nIGFib3V0IHNoYXJlZCBsaWJyYXJ5IG1vZHVsZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdoZW4geW91ciBQeXRob24gaW5zdGFsbGF0aW9uIHVzZXMgc2hhcmVkIGxpYnJhcnkgbW9kdWxlcyBzdWNoIGFzIAorV2hlbiB5b3VyIFB5dGhvbiBpbnN0YWxsYXRpb24gdXNlcyBzaGFyZWQgbGlicmFyeSBtb2R1bGVzIHN1Y2ggYXMKIF90a2ludGVyLnB5ZCwgdGhlc2Ugd2lsbCBub3QgYmUgaW5jb3Jwb3JhdGVkIGluIHRoZSBmcm96ZW4gcHJvZ3JhbS4KICBBZ2FpbiwgdGhlIGZyb3plbiBwcm9ncmFtIHdpbGwgd29yayB3aGVuIHlvdSB0ZXN0IGl0LCBidXQgaXQgd29uJ3QKICB3b3JrIHdoZW4geW91IHNoaXAgaXQgdG8gYSBzaXRlIHdpdGhvdXQgYSBQeXRob24gaW5zdGFsbGF0aW9uLgpAQCAtMjc1LDkgKzI3NSw5IEBACiAgICAgICAgICAgICAgIGFyZSByZWFkIGFuZCB0aGUgLWkgb3B0aW9uIHJlcGxhY2VkIHdpdGggdGhlIHBhcnNlZAogICAgICAgICAgICAgICBwYXJhbXMgKG5vdGUgLSBxdW90aW5nIGFyZ3MgaW4gdGhpcyBmaWxlIGlzIE5PVCBzdXBwb3J0ZWQpCiAKLS1zIHN1YnN5c3RlbTogU3BlY2lmeSB0aGUgc3Vic3lzdGVtIChGb3IgV2luZG93cyBvbmx5Lik7IAorLXMgc3Vic3lzdGVtOiBTcGVjaWZ5IHRoZSBzdWJzeXN0ZW0gKEZvciBXaW5kb3dzIG9ubHkuKTsKICAgICAgICAgICAgICAgJ2NvbnNvbGUnIChkZWZhdWx0KSwgJ3dpbmRvd3MnLCAnc2VydmljZScgb3IgJ2NvbV9kbGwnCi0gICAgICAgICAgICAgIAorCiAtdzogICAgICAgICAgIFRvZ2dsZSBXaW5kb3dzIChOVCBvciA5NSkgYmVoYXZpb3IuCiAgICAgICAgICAgICAgIChGb3IgZGVidWdnaW5nIG9ubHkgLS0gb24gYSB3aW4zMiBwbGF0Zm9ybSwgd2luMzIgYmVoYXZpb3IKICAgICAgICAgICAgICAgaXMgYXV0b21hdGljLikKZGlmZiAtLWdpdCBhL1Rvb2xzL2ZyZWV6ZS9ia2ZpbGUucHkgYi9Ub29scy9mcmVlemUvYmtmaWxlLnB5CmluZGV4IDZhYmFjYzkuLjIwYTcwYjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2ZyZWV6ZS9ia2ZpbGUucHkKKysrIGIvVG9vbHMvZnJlZXplL2JrZmlsZS5weQpAQCAtMSw0OSArMSwyNiBAQAogZnJvbSBidWlsdGlucyBpbXBvcnQgb3BlbiBhcyBfb3JpZ19vcGVuCiAKLWNsYXNzIF9Ca0ZpbGU6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUsIG1vZGUsIGJ1ZnNpemUpOgotICAgICAgICBpbXBvcnQgb3MKLSAgICAgICAgc2VsZi5fX2ZpbGVuYW1lID0gZmlsZQotICAgICAgICBzZWxmLl9fYmFja3VwID0gZmlsZSArICd+JwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy51bmxpbmsoc2VsZi5fX2JhY2t1cCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLnJlbmFtZShmaWxlLCBzZWxmLl9fYmFja3VwKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHNlbGYuX19iYWNrdXAgPSBOb25lCi0gICAgICAgIHNlbGYuX19maWxlID0gX29yaWdfb3BlbihmaWxlLCBtb2RlLCBidWZzaXplKQotICAgICAgICBzZWxmLmNsb3NlZCA9IHNlbGYuX19maWxlLmNsb3NlZAotICAgICAgICBzZWxmLmZpbGVubyA9IHNlbGYuX19maWxlLmZpbGVubwotICAgICAgICBzZWxmLmZsdXNoID0gc2VsZi5fX2ZpbGUuZmx1c2gKLSAgICAgICAgc2VsZi5pc2F0dHkgPSBzZWxmLl9fZmlsZS5pc2F0dHkKLSAgICAgICAgc2VsZi5tb2RlID0gc2VsZi5fX2ZpbGUubW9kZQotICAgICAgICBzZWxmLm5hbWUgPSBzZWxmLl9fZmlsZS5uYW1lCi0gICAgICAgIHNlbGYucmVhZCA9IHNlbGYuX19maWxlLnJlYWQKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5yZWFkaW50byA9IHNlbGYuX19maWxlLnJlYWRpbnRvCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgc2VsZi5yZWFkbGluZSA9IHNlbGYuX19maWxlLnJlYWRsaW5lCi0gICAgICAgIHNlbGYucmVhZGxpbmVzID0gc2VsZi5fX2ZpbGUucmVhZGxpbmVzCi0gICAgICAgIHNlbGYuc2VlayA9IHNlbGYuX19maWxlLnNlZWsKLSAgICAgICAgc2VsZi50ZWxsID0gc2VsZi5fX2ZpbGUudGVsbAotICAgICAgICBzZWxmLnRydW5jYXRlID0gc2VsZi5fX2ZpbGUudHJ1bmNhdGUKLSAgICAgICAgc2VsZi53cml0ZSA9IHNlbGYuX19maWxlLndyaXRlCi0gICAgICAgIHNlbGYud3JpdGVsaW5lcyA9IHNlbGYuX19maWxlLndyaXRlbGluZXMKLQotICAgIGRlZiBjbG9zZShzZWxmKToKLSAgICAgICAgc2VsZi5fX2ZpbGUuY2xvc2UoKQotICAgICAgICBpZiBzZWxmLl9fYmFja3VwIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaW1wb3J0IGZpbGVjbXAKLSAgICAgICAgaWYgZmlsZWNtcC5jbXAoc2VsZi5fX2JhY2t1cCwgc2VsZi5fX2ZpbGVuYW1lLCBzaGFsbG93ID0gMCk6Ci0gICAgICAgICAgICBpbXBvcnQgb3MKLSAgICAgICAgICAgIG9zLnVubGluayhzZWxmLl9fZmlsZW5hbWUpCi0gICAgICAgICAgICBvcy5yZW5hbWUoc2VsZi5fX2JhY2t1cCwgc2VsZi5fX2ZpbGVuYW1lKQotCi1kZWYgb3BlbihmaWxlLCBtb2RlID0gJ3InLCBidWZzaXplID0gLTEpOgorZGVmIG9wZW4oZmlsZSwgbW9kZT0ncicsIGJ1ZnNpemU9LTEpOgogICAgIGlmICd3JyBub3QgaW4gbW9kZToKICAgICAgICAgcmV0dXJuIF9vcmlnX29wZW4oZmlsZSwgbW9kZSwgYnVmc2l6ZSkKLSAgICByZXR1cm4gX0JrRmlsZShmaWxlLCBtb2RlLCBidWZzaXplKQorICAgIGltcG9ydCBvcworICAgIGJhY2t1cCA9IGZpbGUgKyAnficKKyAgICB0cnk6CisgICAgICAgIG9zLnVubGluayhiYWNrdXApCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIHBhc3MKKyAgICB0cnk6CisgICAgICAgIG9zLnJlbmFtZShmaWxlLCBiYWNrdXApCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIHJldHVybiBfb3JpZ19vcGVuKGZpbGUsIG1vZGUsIGJ1ZnNpemUpCisgICAgZiA9IF9vcmlnX29wZW4oZmlsZSwgbW9kZSwgYnVmc2l6ZSkKKyAgICBfb3JpZ19jbG9zZSA9IGYuY2xvc2UKKyAgICBkZWYgY2xvc2UoKToKKyAgICAgICAgX29yaWdfY2xvc2UoKQorICAgICAgICBpbXBvcnQgZmlsZWNtcAorICAgICAgICBpZiBmaWxlY21wLmNtcChiYWNrdXAsIGZpbGUsIHNoYWxsb3c9RmFsc2UpOgorICAgICAgICAgICAgaW1wb3J0IG9zCisgICAgICAgICAgICBvcy51bmxpbmsoZmlsZSkKKyAgICAgICAgICAgIG9zLnJlbmFtZShiYWNrdXAsIGZpbGUpCisgICAgZi5jbG9zZSA9IGNsb3NlCisgICAgcmV0dXJuIGYKZGlmZiAtLWdpdCBhL1Rvb2xzL2ZyZWV6ZS9leHRlbnNpb25zX3dpbjMyLmluaSBiL1Rvb2xzL2ZyZWV6ZS9leHRlbnNpb25zX3dpbjMyLmluaQppbmRleCAxZTM2YWJhLi5kMDFmZDZiIDEwMDY0NAotLS0gYS9Ub29scy9mcmVlemUvZXh0ZW5zaW9uc193aW4zMi5pbmkKKysrIGIvVG9vbHMvZnJlZXplL2V4dGVuc2lvbnNfd2luMzIuaW5pCkBAIC02LDcgKzYsNyBAQAogCiA7IFRoaXMgaXMgYWxsIHNldHVwIGZvciBhbGwgdGhlIHdpbjMyIGV4dGVuc2lvbiBtb2R1bGVzCiA7IHJlbGVhc2VkIGJ5IE1hcmsgSGFtbW9uZC4KLTsgWW91IG11c3QgZW5zdXJlIHRoYXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFBZVEhPTkVYIGlzIHNldCAKKzsgWW91IG11c3QgZW5zdXJlIHRoYXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFBZVEhPTkVYIGlzIHNldAogOyB0byBwb2ludCB0byB0aGUgcm9vdCB3aW4zMiBleHRlbnNpb25zIGRpcmVjdG9yeQogCiA7IFBZVEhPTlBSRUZJWCBtdXN0IHBvaW50IHRvIHRoZSBQeXRob24gYnVpbGQgcm9vdCBkaXJlY3RvcnkKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogW3psaWJdCiBkc3A9JVBZVEhPTlBSRUZJWCVcUENCdWlsZFx6bGliLmRzcAotY2w9L0kgJVBZVEhPTlBSRUZJWCVcLi5cemxpYi0xLjEuNCAvRCBfV0lORE9XUyAvRCBXSU4zMiAKK2NsPS9JICVQWVRIT05QUkVGSVglXC4uXHpsaWItMS4xLjQgL0QgX1dJTkRPV1MgL0QgV0lOMzIKIGxpYnM9JVBZVEhPTlBSRUZJWCVcLi5cemxpYi0xLjEuNFx6bGliLmxpYiAvbm9kZWZhdWx0bGliOmxpYmMKIAogW3dpbnJlZ10KQEAgLTk1LDcgKzk1LDcgQEAKIGNsPS9JICVQWVRIT05FWCVcd2luMzJcc3JjCiAKIFt3aW4zMmZpbGVdCi1kc3A9JVBZVEhPTkVYJVx3aW4zMlx3aW4zMmZpbGUuZHNwIAorZHNwPSVQWVRIT05FWCVcd2luMzJcd2luMzJmaWxlLmRzcAogY2w9L0kgJVBZVEhPTkVYJVx3aW4zMlxzcmMKIAogW3dpbjMybmV0XQpAQCAtMTA4LDcgKzEwOCw3IEBACiBjbD0vSSAlUFlUSE9ORVglXHdpbjMyXHNyYwogCiBbd2luMzJwaXBlXQotZHNwPSVQWVRIT05FWCVcd2luMzJcd2luMzJwaXBlLmRzcCAKK2RzcD0lUFlUSE9ORVglXHdpbjMyXHdpbjMycGlwZS5kc3AKIGNsPS9JICVQWVRIT05FWCVcd2luMzJcc3JjCiAKIFt3aW4zMnNlY3VyaXR5XQpkaWZmIC0tZ2l0IGEvVG9vbHMvZnJlZXplL2ZyZWV6ZS5weSBiL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkKaW5kZXggZTBjNmMyYy4uYzA3NTgwNyAxMDA3NTUKLS0tIGEvVG9vbHMvZnJlZXplL2ZyZWV6ZS5weQorKysgYi9Ub29scy9mcmVlemUvZnJlZXplLnB5CkBAIC0zNjYsOCArMzY2LDEwIEBACiAgICAgICAgICAgICBtZi5sb2FkX2ZpbGUobW9kKQogCiAgICAgIyBBbGlhcyAiaW1wb3J0bGliLl9ib290c3RyYXAiIHRvICJfZnJvemVuX2ltcG9ydGxpYiIgc28gdGhhdCB0aGUKLSAgICAjIGltcG9ydCBtYWNoaW5lcnkgY2FuIGJvb3RzdHJhcC4KKyAgICAjIGltcG9ydCBtYWNoaW5lcnkgY2FuIGJvb3RzdHJhcC4gIERvIHRoZSBzYW1lIGZvcgorICAgICMgaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwuCiAgICAgbWYubW9kdWxlc1siX2Zyb3plbl9pbXBvcnRsaWIiXSA9IG1mLm1vZHVsZXNbImltcG9ydGxpYi5fYm9vdHN0cmFwIl0KKyAgICBtZi5tb2R1bGVzWyJfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbCJdID0gbWYubW9kdWxlc1siaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwiXQogCiAgICAgIyBBZGQgdGhlIG1haW4gc2NyaXB0IGFzIGVpdGhlciBfX21haW5fXywgb3IgdGhlIGFjdHVhbCBtb2R1bGUgbmFtZS4KICAgICBpZiBweXRob25fZW50cnlfaXNfbWFpbjoKQEAgLTQzOSwyNSArNDQxLDE3IEBACiAgICAgICAgICAgICAgICAgIGZyb3plbmRsbG1haW5fYywgb3MucGF0aC5iYXNlbmFtZShleHRlbnNpb25zX2MpXSArIGZpbGVzCiAgICAgICAgIG1haW5kZWZuID0gY2hlY2tleHRlbnNpb25zX3dpbjMyLkNFeHRlbnNpb24oICdfX21haW5fXycsIHh0cmFzICkKICAgICAgICAgZnJvemVuX2V4dGVuc2lvbnMuYXBwZW5kKCBtYWluZGVmbiApCi0gICAgICAgIG91dGZwID0gb3BlbihtYWtlZmlsZSwgJ3cnKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbihtYWtlZmlsZSwgJ3cnKSBhcyBvdXRmcDoKICAgICAgICAgICAgIHdpbm1ha2VtYWtlZmlsZS5tYWtlbWFrZWZpbGUob3V0ZnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FscygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm96ZW5fZXh0ZW5zaW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZSh0YXJnZXQpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3V0ZnAuY2xvc2UoKQogICAgICAgICByZXR1cm4KIAogICAgICMgZ2VuZXJhdGUgY29uZmlnLmMgYW5kIE1ha2VmaWxlCiAgICAgYnVpbHRpbnMuc29ydCgpCi0gICAgaW5mcCA9IG9wZW4oY29uZmlnX2NfaW4pCi0gICAgb3V0ZnAgPSBia2ZpbGUub3Blbihjb25maWdfYywgJ3cnKQotICAgIHRyeToKKyAgICB3aXRoIG9wZW4oY29uZmlnX2NfaW4pIGFzIGluZnAsIGJrZmlsZS5vcGVuKGNvbmZpZ19jLCAndycpIGFzIG91dGZwOgogICAgICAgICBtYWtlY29uZmlnLm1ha2Vjb25maWcoaW5mcCwgb3V0ZnAsIGJ1aWx0aW5zKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIG91dGZwLmNsb3NlKCkKLSAgICBpbmZwLmNsb3NlKCkKIAogICAgIGNmbGFncyA9IFsnJChPUFQpJ10KICAgICBjcHBmbGFncyA9IGRlZmluZXMgKyBpbmNsdWRlcwpAQCAtNDc1LDExICs0NjksOCBAQAogICAgICAgICAgICAgZmlsZXMgKyBzdXBwX3NvdXJjZXMgKyAgYWRkZmlsZXMgKyBsaWJzICsgXAogICAgICAgICAgICAgWyckKE1PRExJQlMpJywgJyQoTElCUyknLCAnJChTWVNMSUJTKSddCiAKLSAgICBvdXRmcCA9IGJrZmlsZS5vcGVuKG1ha2VmaWxlLCAndycpCi0gICAgdHJ5OgorICAgIHdpdGggYmtmaWxlLm9wZW4obWFrZWZpbGUsICd3JykgYXMgb3V0ZnA6CiAgICAgICAgIG1ha2VtYWtlZmlsZS5tYWtlbWFrZWZpbGUob3V0ZnAsIHNvbWV2YXJzLCBmaWxlcywgYmFzZV90YXJnZXQpCi0gICAgZmluYWxseToKLSAgICAgICAgb3V0ZnAuY2xvc2UoKQogCiAgICAgIyBEb25lIQogCmRpZmYgLS1naXQgYS9Ub29scy9mcmVlemUvbWFrZWZyZWV6ZS5weSBiL1Rvb2xzL2ZyZWV6ZS9tYWtlZnJlZXplLnB5CmluZGV4IGVmMThlYzcuLjY0ZTNlNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2ZyZWV6ZS9tYWtlZnJlZXplLnB5CisrKyBiL1Rvb2xzL2ZyZWV6ZS9tYWtlZnJlZXplLnB5CkBAIC0zOSwzNiArMzksMzQgQEAKICAgICAgICAgbWFuZ2xlZCA9ICJfXyIuam9pbihtb2Quc3BsaXQoIi4iKSkKICAgICAgICAgaWYgbS5fX2NvZGVfXzoKICAgICAgICAgICAgIGZpbGUgPSAnTV8nICsgbWFuZ2xlZCArICcuYycKLSAgICAgICAgICAgIG91dGZwID0gYmtmaWxlLm9wZW4oYmFzZSArIGZpbGUsICd3JykKLSAgICAgICAgICAgIGZpbGVzLmFwcGVuZChmaWxlKQotICAgICAgICAgICAgaWYgZGVidWc6Ci0gICAgICAgICAgICAgICAgcHJpbnQoImZyZWV6aW5nIiwgbW9kLCAiLi4uIikKLSAgICAgICAgICAgIHN0ciA9IG1hcnNoYWwuZHVtcHMobS5fX2NvZGVfXykKLSAgICAgICAgICAgIHNpemUgPSBsZW4oc3RyKQotICAgICAgICAgICAgaWYgbS5fX3BhdGhfXzoKLSAgICAgICAgICAgICAgICAjIEluZGljYXRlIHBhY2thZ2UgYnkgbmVnYXRpdmUgc2l6ZQotICAgICAgICAgICAgICAgIHNpemUgPSAtc2l6ZQotICAgICAgICAgICAgZG9uZS5hcHBlbmQoKG1vZCwgbWFuZ2xlZCwgc2l6ZSkpCi0gICAgICAgICAgICB3cml0ZWNvZGUob3V0ZnAsIG1hbmdsZWQsIHN0cikKLSAgICAgICAgICAgIG91dGZwLmNsb3NlKCkKKyAgICAgICAgICAgIHdpdGggYmtmaWxlLm9wZW4oYmFzZSArIGZpbGUsICd3JykgYXMgb3V0ZnA6CisgICAgICAgICAgICAgICAgZmlsZXMuYXBwZW5kKGZpbGUpCisgICAgICAgICAgICAgICAgaWYgZGVidWc6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCJmcmVlemluZyIsIG1vZCwgIi4uLiIpCisgICAgICAgICAgICAgICAgc3RyID0gbWFyc2hhbC5kdW1wcyhtLl9fY29kZV9fKQorICAgICAgICAgICAgICAgIHNpemUgPSBsZW4oc3RyKQorICAgICAgICAgICAgICAgIGlmIG0uX19wYXRoX186CisgICAgICAgICAgICAgICAgICAgICMgSW5kaWNhdGUgcGFja2FnZSBieSBuZWdhdGl2ZSBzaXplCisgICAgICAgICAgICAgICAgICAgIHNpemUgPSAtc2l6ZQorICAgICAgICAgICAgICAgIGRvbmUuYXBwZW5kKChtb2QsIG1hbmdsZWQsIHNpemUpKQorICAgICAgICAgICAgICAgIHdyaXRlY29kZShvdXRmcCwgbWFuZ2xlZCwgc3RyKQogICAgIGlmIGRlYnVnOgogICAgICAgICBwcmludCgiZ2VuZXJhdGluZyB0YWJsZSBvZiBmcm96ZW4gbW9kdWxlcyIpCi0gICAgb3V0ZnAgPSBia2ZpbGUub3BlbihiYXNlICsgJ2Zyb3plbi5jJywgJ3cnKQotICAgIGZvciBtb2QsIG1hbmdsZWQsIHNpemUgaW4gZG9uZToKLSAgICAgICAgb3V0ZnAud3JpdGUoJ2V4dGVybiB1bnNpZ25lZCBjaGFyIE1fJXNbXTtcbicgJSBtYW5nbGVkKQotICAgIG91dGZwLndyaXRlKGhlYWRlcikKLSAgICBmb3IgbW9kLCBtYW5nbGVkLCBzaXplIGluIGRvbmU6Ci0gICAgICAgIG91dGZwLndyaXRlKCdcdHsiJXMiLCBNXyVzLCAlZH0sXG4nICUgKG1vZCwgbWFuZ2xlZCwgc2l6ZSkpCi0gICAgb3V0ZnAud3JpdGUoJ1xuJykKLSAgICAjIFRoZSBmb2xsb3dpbmcgbW9kdWxlcyBoYXZlIGEgTlVMTCBjb2RlIHBvaW50ZXIsIGluZGljYXRpbmcKLSAgICAjIHRoYXQgdGhlIGZyb3plbiBwcm9ncmFtIHNob3VsZCBub3Qgc2VhcmNoIGZvciB0aGVtIG9uIHRoZSBob3N0Ci0gICAgIyBzeXN0ZW0uIEltcG9ydGluZyB0aGVtIHdpbGwgKmFsd2F5cyogcmFpc2UgYW4gSW1wb3J0RXJyb3IuCi0gICAgIyBUaGUgemVybyB2YWx1ZSBzaXplIGlzIG5ldmVyIHVzZWQuCi0gICAgZm9yIG1vZCBpbiBmYWlsX2ltcG9ydDoKLSAgICAgICAgb3V0ZnAud3JpdGUoJ1x0eyIlcyIsIE5VTEwsIDB9LFxuJyAlIChtb2QsKSkKLSAgICBvdXRmcC53cml0ZSh0cmFpbGVyKQotICAgIG91dGZwLndyaXRlKGVudHJ5X3BvaW50KQotICAgIG91dGZwLmNsb3NlKCkKKyAgICB3aXRoIGJrZmlsZS5vcGVuKGJhc2UgKyAnZnJvemVuLmMnLCAndycpIGFzIG91dGZwOgorICAgICAgICBmb3IgbW9kLCBtYW5nbGVkLCBzaXplIGluIGRvbmU6CisgICAgICAgICAgICBvdXRmcC53cml0ZSgnZXh0ZXJuIHVuc2lnbmVkIGNoYXIgTV8lc1tdO1xuJyAlIG1hbmdsZWQpCisgICAgICAgIG91dGZwLndyaXRlKGhlYWRlcikKKyAgICAgICAgZm9yIG1vZCwgbWFuZ2xlZCwgc2l6ZSBpbiBkb25lOgorICAgICAgICAgICAgb3V0ZnAud3JpdGUoJ1x0eyIlcyIsIE1fJXMsICVkfSxcbicgJSAobW9kLCBtYW5nbGVkLCBzaXplKSkKKyAgICAgICAgb3V0ZnAud3JpdGUoJ1xuJykKKyAgICAgICAgIyBUaGUgZm9sbG93aW5nIG1vZHVsZXMgaGF2ZSBhIE5VTEwgY29kZSBwb2ludGVyLCBpbmRpY2F0aW5nCisgICAgICAgICMgdGhhdCB0aGUgZnJvemVuIHByb2dyYW0gc2hvdWxkIG5vdCBzZWFyY2ggZm9yIHRoZW0gb24gdGhlIGhvc3QKKyAgICAgICAgIyBzeXN0ZW0uIEltcG9ydGluZyB0aGVtIHdpbGwgKmFsd2F5cyogcmFpc2UgYW4gSW1wb3J0RXJyb3IuCisgICAgICAgICMgVGhlIHplcm8gdmFsdWUgc2l6ZSBpcyBuZXZlciB1c2VkLgorICAgICAgICBmb3IgbW9kIGluIGZhaWxfaW1wb3J0OgorICAgICAgICAgICAgb3V0ZnAud3JpdGUoJ1x0eyIlcyIsIE5VTEwsIDB9LFxuJyAlIChtb2QsKSkKKyAgICAgICAgb3V0ZnAud3JpdGUodHJhaWxlcikKKyAgICAgICAgb3V0ZnAud3JpdGUoZW50cnlfcG9pbnQpCiAgICAgcmV0dXJuIGZpbGVzCiAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvaTE4bi9tYWtlbG9jYWxlYWxpYXMucHkgYi9Ub29scy9pMThuL21ha2Vsb2NhbGVhbGlhcy5weQppbmRleCAxMDg4N2NlLi5jN2VjYWNlIDEwMDc1NQotLS0gYS9Ub29scy9pMThuL21ha2Vsb2NhbGVhbGlhcy5weQorKysgYi9Ub29scy9pMThuL21ha2Vsb2NhbGVhbGlhcy5weQpAQCAtOCw5ICs4LDEyIEBACiAiIiIKIGltcG9ydCBsb2NhbGUKIGltcG9ydCBzeXMKK19sb2NhbGUgPSBsb2NhbGUKIAotIyBMb2NhdGlvbiBvZiB0aGUgYWxpYXMgZmlsZQorIyBMb2NhdGlvbiBvZiB0aGUgWDExIGFsaWFzIGZpbGUuCiBMT0NBTEVfQUxJQVMgPSAnL3Vzci9zaGFyZS9YMTEvbG9jYWxlL2xvY2FsZS5hbGlhcycKKyMgTG9jYXRpb24gb2YgdGhlIGdsaWJjIFNVUFBPUlRFRCBsb2NhbGVzIGZpbGUuCitTVVBQT1JURUQgPSAnL3Vzci9zaGFyZS9pMThuL1NVUFBPUlRFRCcKIAogZGVmIHBhcnNlKGZpbGVuYW1lKToKIApAQCAtNDQsMTAgKzQ3LDM5IEBACiAgICAgICAgICAgICBlbmNvZGluZyA9IGVuY29kaW5nLnJlcGxhY2UoJy0nLCAnJykKICAgICAgICAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcucmVwbGFjZSgnXycsICcnKQogICAgICAgICAgICAgbG9jYWxlID0gbGFuZyArICcuJyArIGVuY29kaW5nCi0gICAgICAgICAgICBpZiBlbmNvZGluZy5sb3dlcigpID09ICd1dGY4JzoKLSAgICAgICAgICAgICAgICAjIElnbm9yZSBVVEYtOCBtYXBwaW5ncyAtIHRoaXMgZW5jb2Rpbmcgc2hvdWxkIGJlCi0gICAgICAgICAgICAgICAgIyBhdmFpbGFibGUgZm9yIGFsbCBsb2NhbGVzCi0gICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZGF0YVtsb2NhbGVdID0gYWxpYXMKKyAgICByZXR1cm4gZGF0YQorCitkZWYgcGFyc2VfZ2xpYmNfc3VwcG9ydGVkKGZpbGVuYW1lKToKKworICAgIHdpdGggb3BlbihmaWxlbmFtZSwgZW5jb2Rpbmc9J2xhdGluMScpIGFzIGY6CisgICAgICAgIGxpbmVzID0gbGlzdChmKQorICAgIGRhdGEgPSB7fQorICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgIGlmIG5vdCBsaW5lOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgbGluZVs6MV0gPT0gJyMnOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgnLycsICcgJykuc3RyaXAoKQorICAgICAgICBsaW5lID0gbGluZS5yc3RyaXAoJ1xcJykucnN0cmlwKCkKKyAgICAgICAgd29yZHMgPSBsaW5lLnNwbGl0KCkKKyAgICAgICAgaWYgbGVuKHdvcmRzKSAhPSAyOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgYWxpYXMsIGFsaWFzX2VuY29kaW5nID0gd29yZHMKKyAgICAgICAgIyBMb3dlci1jYXNlIGxvY2FsZQorICAgICAgICBsb2NhbGUgPSBhbGlhcy5sb3dlcigpCisgICAgICAgICMgTm9ybWFsaXplIGVuY29kaW5nLCBpZiBnaXZlbgorICAgICAgICBpZiAnLicgaW4gbG9jYWxlOgorICAgICAgICAgICAgbGFuZywgZW5jb2RpbmcgPSBsb2NhbGUuc3BsaXQoJy4nKVs6Ml0KKyAgICAgICAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcucmVwbGFjZSgnLScsICcnKQorICAgICAgICAgICAgZW5jb2RpbmcgPSBlbmNvZGluZy5yZXBsYWNlKCdfJywgJycpCisgICAgICAgICAgICBsb2NhbGUgPSBsYW5nICsgJy4nICsgZW5jb2RpbmcKKyAgICAgICAgIyBBZGQgYW4gZW5jb2RpbmcgdG8gYWxpYXMKKyAgICAgICAgYWxpYXMsIF8sIG1vZGlmaWVyID0gYWxpYXMucGFydGl0aW9uKCdAJykKKyAgICAgICAgYWxpYXMgPSBfbG9jYWxlLl9yZXBsYWNlX2VuY29kaW5nKGFsaWFzLCBhbGlhc19lbmNvZGluZykKKyAgICAgICAgaWYgbW9kaWZpZXIgYW5kIG5vdCAobW9kaWZpZXIgPT0gJ2V1cm8nIGFuZCBhbGlhc19lbmNvZGluZyA9PSAnSVNPLTg4NTktMTUnKToKKyAgICAgICAgICAgIGFsaWFzICs9ICdAJyArIG1vZGlmaWVyCiAgICAgICAgIGRhdGFbbG9jYWxlXSA9IGFsaWFzCiAgICAgcmV0dXJuIGRhdGEKIApAQCAtOTIsOSArMTI0LDI1IEBACiAgICAgcmV0dXJuIGVycm9ycwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCBhcmdwYXJzZQorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWxvY2FsZS1hbGlhcycsIGRlZmF1bHQ9TE9DQUxFX0FMSUFTLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nbG9jYXRpb24gb2YgdGhlIFgxMSBhbGlhcyBmaWxlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhkZWZhdWx0OiAlYSknICUgTE9DQUxFX0FMSUFTKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZ2xpYmMtc3VwcG9ydGVkJywgZGVmYXVsdD1TVVBQT1JURUQsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdsb2NhdGlvbiBvZiB0aGUgZ2xpYmMgU1VQUE9SVEVEIGxvY2FsZXMgZmlsZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZGVmYXVsdDogJWEpJyAlIFNVUFBPUlRFRCkKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCiAgICAgZGF0YSA9IGxvY2FsZS5sb2NhbGVfYWxpYXMuY29weSgpCi0gICAgZGF0YS51cGRhdGUocGFyc2UoTE9DQUxFX0FMSUFTKSkKLSAgICBkYXRhID0gb3B0aW1pemUoZGF0YSkKKyAgICBkYXRhLnVwZGF0ZShwYXJzZV9nbGliY19zdXBwb3J0ZWQoYXJncy5nbGliY19zdXBwb3J0ZWQpKQorICAgIGRhdGEudXBkYXRlKHBhcnNlKGFyZ3MubG9jYWxlX2FsaWFzKSkKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICAjIFJlcGVhdCBvcHRpbWl6YXRpb24gd2hpbGUgdGhlIHNpemUgaXMgZGVjcmVhc2VkLgorICAgICAgICBuID0gbGVuKGRhdGEpCisgICAgICAgIGRhdGEgPSBvcHRpbWl6ZShkYXRhKQorICAgICAgICBpZiBsZW4oZGF0YSkgPT0gbjoKKyAgICAgICAgICAgIGJyZWFrCiAgICAgcHJpbnRfZGlmZmVyZW5jZXMoZGF0YSwgbG9jYWxlLmxvY2FsZV9hbGlhcykKICAgICBwcmludCgpCiAgICAgcHJpbnQoJ2xvY2FsZV9hbGlhcyA9IHsnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvaTE4bi9weWdldHRleHQucHkgYi9Ub29scy9pMThuL3B5Z2V0dGV4dC5weQppbmRleCA5ZmZlYjE3Li4zYzZjMTRjIDEwMDc1NQotLS0gYS9Ub29scy9pMThuL3B5Z2V0dGV4dC5weQorKysgYi9Ub29scy9pMThuL3B5Z2V0dGV4dC5weQpAQCAtNDQxLDkgKzQ0MSw3IEBACiAKICAgICBkZWYgd3JpdGUoc2VsZiwgZnApOgogICAgICAgICBvcHRpb25zID0gc2VsZi5fX29wdGlvbnMKLSAgICAgICAgdGltZXN0YW1wID0gdGltZS5zdHJmdGltZSgnJVktJW0tJWQgJUg6JU0rJVonKQotICAgICAgICAjIFRoZSB0aW1lIHN0YW1wIGluIHRoZSBoZWFkZXIgZG9lc24ndCBoYXZlIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGF0Ci0gICAgICAgICMgZ2VuZXJhdGVkIGJ5IHhnZXR0ZXh0Li4uCisgICAgICAgIHRpbWVzdGFtcCA9IHRpbWUuc3RyZnRpbWUoJyVZLSVtLSVkICVIOiVNJXonKQogICAgICAgICBlbmNvZGluZyA9IGZwLmVuY29kaW5nIGlmIGZwLmVuY29kaW5nIGVsc2UgJ1VURi04JwogICAgICAgICBwcmludChwb3RfaGVhZGVyICUgeyd0aW1lJzogdGltZXN0YW1wLCAndmVyc2lvbic6IF9fdmVyc2lvbl9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGFyc2V0JzogZW5jb2RpbmcsCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvUkVBRE1FLnR4dCBiL1Rvb2xzL21zaS9SRUFETUUudHh0CmluZGV4IGRjNGFlOTAuLjcwMjNiNjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9SRUFETUUudHh0CisrKyBiL1Rvb2xzL21zaS9SRUFETUUudHh0CkBAIC0xLDI1ICsxLDUzNSBAQAotUGFja2FnaW5nIFB5dGhvbiBhcyBhIE1pY3Jvc29mdCBJbnN0YWxsZXIgUGFja2FnZSAoTVNJKQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUXVpY2sgQnVpbGQgSW5mbworPT09PT09PT09PT09PT09PQogCi1Vc2luZyB0aGlzIGxpYnJhcnksIFB5dGhvbiBjYW4gYmUgcGFja2FnZWQgYXMgYSBNUy1XaW5kb3dzCi1NU0kgZmlsZS4gVG8gZ2VuZXJhdGUgYW4gaW5zdGFsbGVyIHBhY2thZ2UsIHlvdSBuZWVkCi1hIGJ1aWxkIHRyZWUuIEJ5IGRlZmF1bHQsIHRoZSBidWlsZCB0cmVlIHJvb3QgZGlyZWN0b3J5Ci1pcyBhc3N1bWVkIHRvIGJlIGluICIuLi8uLiIuIFRoaXMgbG9jYXRpb24gY2FuIGJlIGNoYW5nZWQKLWJ5IGFkZGluZyBhIGZpbGUgY29uZmlnLnB5OyBzZWUgdGhlIGJlZ2lubmluZyBvZiBtc2kucHkKLWZvciBhZGRpdGlvbmFsIGN1c3RvbWl6YXRpb24gb3B0aW9ucy4KK0ZvciB0ZXN0aW5nLCB0aGUgaW5zdGFsbGVyIHNob3VsZCBiZSBidWlsdCB3aXRoIHRoZSBUb29scy9tc2kvYnVpbGQuYmF0CitzY3JpcHQ6CiAKLVRoZSBwYWNrYWdpbmcgcHJvY2VzcyBhc3N1bWVzIHRoYXQgYmluYXJpZXMgaGF2ZSBiZWVuIAotZ2VuZXJhdGVkIGFjY29yZGluZyB0byB0aGUgaW5zdHJ1Y3Rpb25zIGluIFBDQnVpbGQvUkVBRE1FLnR4dCwKLWFuZCB0aGF0IHlvdSBoYXZlIGVpdGhlciBWaXN1YWwgU3R1ZGlvIG9yIHRoZSBQbGF0Zm9ybSBTREsKLWluc3RhbGxlZC4gSW4gYWRkaXRpb24sIHlvdSBuZWVkIHRoZSBQeXRob24gQ09NIGV4dGVuc2lvbnMsCi1laXRoZXIgZnJvbSBQeXRob25XaW4sIG9yIGZyb20gQWN0aXZlUHl0aG9uLgorICAgIGJ1aWxkLmJhdCBbLXg4Nl0gWy14NjRdIFstLWRvY10KIAotVG8gaW52b2tlIHRoZSBzY3JpcHQsIG9wZW4gYSBjbWQuZXhlIHdpbmRvdyB3aGljaCBoYXMgCi1jYWJhcmMuZXhlIGluIGl0cyBQQVRIIChlLmcuICJWaXN1YWwgU3R1ZGlvIC5ORVQgMjAwMwotQ29tbWFuZCBQcm9tcHQiKS4gVGhlbiBpbnZva2UKK0ZvciBhbiBvZmZpY2lhbCByZWxlYXNlLCB0aGUgaW5zdGFsbGVyIHNob3VsZCBiZSBidWlsdCB3aXRoIHRoZQorVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQgc2NyaXB0IGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CiAKLTxwYXRoLXRvLXB5dGhvbi5leGU+IG1zaS5weQorICAgIHNldCBQWVRIT049PHBhdGggdG8gUHl0aG9uIDIuNyBvciAzLjQ+CisgICAgc2V0IFNQSElOWEJVSUxEPTxwYXRoIHRvIHNwaGlueC1idWlsZC5leGU+CisgICAgc2V0IFBBVEg9PHBhdGggdG8gTWVyY3VyaWFsIChoZy5leGUpPjsKKyAgICAgICAgICAgICA8cGF0aCB0byBIVE1MIEhlbHAgQ29tcGlsZXIgKGhoYy5leGUpPjslUEFUSCUKIAotSWYgZXZlcnl0aGluZyBzdWNjZWVkcywgcHl0aG9uWC5ZLloubXNpIGlzIGdlbmVyYXRlZAotaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorICAgIGJ1aWxkcmVsZWFzZS5iYXQgWy14ODZdIFsteDY0XSBbLURdIFstQl0KKyAgICAgICAgWy1vIDxvdXRwdXQgZGlyZWN0b3J5Pl0gWy1jIDxjZXJ0aWZpY2F0ZSBuYW1lPl0KKworU2VlIHRoZSBCdWlsZGluZyB0aGUgSW5zdGFsbGVyIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKK092ZXJ2aWV3Cis9PT09PT09PQorCitQeXRob24gaXMgZGlzdHJpYnV0ZWQgb24gV2luZG93cyBhcyBhbiBpbnN0YWxsZXIgdGhhdCB3aWxsIGNvbmZpZ3VyZSB0aGUKK3VzZXIncyBzeXN0ZW0uIFRoaXMgYWxsb3dzIHVzZXJzIHRvIGhhdmUgYSBmdW5jdGlvbmluZyBjb3B5IG9mIFB5dGhvbgord2l0aG91dCBoYXZpbmcgdG8gYnVpbGQgaXQgdGhlbXNlbHZlcy4KKworVGhlIG1haW4gdGFza3Mgb2YgdGhlIGluc3RhbGxlciBhcmU6CisKKyogY29weSByZXF1aXJlZCBmaWxlcyBpbnRvIHRoZSBleHBlY3RlZCBsYXlvdXQKKyogY29uZmlndXJlIHN5c3RlbSBzZXR0aW5ncyBzbyB0aGUgaW5zdGFsbGF0aW9uIGNhbiBiZSBsb2NhdGVkIGJ5CisgIG90aGVyIHByb2dyYW1zCisqIGFkZCBlbnRyeSBwb2ludHMgZm9yIG1vZGlmeWluZywgcmVwYWlyaW5nIGFuZCB1bmluc3RhbGxpbmcgUHl0aG9uCisqIG1ha2UgaXQgZWFzeSB0byBsYXVuY2ggUHl0aG9uLCBpdHMgZG9jdW1lbnRhdGlvbiwgYW5kIElETEUKKworRWFjaCBvZiB0aGVzZSBpcyBkaXNjdXNzZWQgaW4gYSBsYXRlciBzZWN0aW9uIG9mIHRoaXMgZG9jdW1lbnQuCisKK1N0cnVjdHVyZSBvZiB0aGUgSW5zdGFsbGVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgaW5zdGFsbGVyIGlzIHN0cnVjdHVyZWQgYXMgYSAnbGF5b3V0Jywgd2hpY2ggY29uc2lzdHMgb2YgYSBudW1iZXIgb2YKK0NBQiBhbmQgTVNJIGZpbGVzIGFuZCBhIHNpbmdsZSBFWEUuCisKK1RoZSBFWEUgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQgaW50byB0aGUgaW5zdGFsbGVyLiBJdCBjb250YWlucyB0aGUgVUkKK2FuZCBjb21tYW5kLWxpbmUgbG9naWMsIGFzIHdlbGwgYXMgdGhlIGFiaWxpdHkgdG8gbG9jYXRlIGFuZCBvcHRpb25hbGx5Citkb3dubG9hZCBvdGhlciBwYXJ0cyBvZiB0aGUgbGF5b3V0LgorCitFYWNoIE1TSSBjb250YWlucyB0aGUgbG9naWMgcmVxdWlyZWQgdG8gaW5zdGFsbCBhIGNvbXBvbmVudCBvciBmZWF0dXJlCitvZiBQeXRob24uIFRoZXNlIE1TSXMgc2hvdWxkIG5vdCBiZSBsYXVuY2hlZCBkaXJlY3RseSBieSB1c2Vycy4gTVNJcyBjYW4KK2JlIGVtYmVkZGVkIGludG8gdGhlIEVYRSBvciBhdXRvbWF0aWNhbGx5IGRvd25sb2FkZWQgYXMgbmVlZGVkLgorCitFYWNoIENBQiBjb250YWlucyB0aGUgZmlsZXMgbWFraW5nIHVwIGEgUHl0aG9uIGluc3RhbGxhdGlvbi4gQ0FCcyBhcmUKK2VtYmVkZGVkIGludG8gdGhlaXIgYXNzb2NpYXRlZCBNU0kgYW5kIGFyZSBuZXZlciBzZWVuIGJ5IHVzZXJzLgorCitNU0lzIGFyZSBvbmx5IHJlcXVpcmVkIHdoZW4gdGhlIHJlbGF0ZWQgZmVhdHVyZSBvciBjb21wb25lbnQgaXMgYmVpbmcKK2luc3RhbGxlZC4gV2hlbiBjb21wb25lbnRzIGFyZSBub3Qgc2VsZWN0ZWQgZm9yIGluc3RhbGxhdGlvbiwgdGhlCithc3NvY2lhdGVkIE1TSSBpcyBub3QgZG93bmxvYWRlZC4gVGhpcyBhbGxvd3MgdGhlIGluc3RhbGxlciB0byBvZmZlcgorb3B0aW9ucyB0byBpbnN0YWxsIGRlYnVnZ2luZyBzeW1ib2xzIGFuZCBiaW5hcmllcyB3aXRob3V0IGluY3JlYXNpbmcKK3RoZSBpbml0aWFsIGRvd25sb2FkIHNpemUgYnkgc2VwYXJhdGluZyB0aGVtIGludG8gdGhlaXIgb3duIE1TSXMuCisKK0J1aWxkaW5nIHRoZSBJbnN0YWxsZXIKKz09PT09PT09PT09PT09PT09PT09PT0KKworQmVmb3JlIGJ1aWxkaW5nIHRoZSBpbnN0YWxsZXIsIGRvd25sb2FkIGV4dHJhIGJ1aWxkIGRlcGVuZGVuY2llcyB1c2luZworVG9vbHNcbXNpXGdldF9leHRlcm5hbHMuYmF0LiAoTm90ZSB0aGF0IHRoaXMgaXMgaW4gYWRkaXRpb24gdG8gdGhlCitzaW1pbGFybHkgbmFtZWQgZmlsZSBpbiBQQ0J1aWxkLikKKworRm9yIHRlc3RpbmcsIHRoZSBpbnN0YWxsZXIgc2hvdWxkIGJlIGJ1aWx0IHdpdGggdGhlIFRvb2xzL21zaS9idWlsZC5iYXQKK3NjcmlwdDoKKworICAgIGJ1aWxkLmJhdCBbLXg4Nl0gWy14NjRdIFstLWRvY10gWy0tdGVzdC1tYXJrZXJdIFstLXBhY2tdCisKK1RoaXMgc2NyaXB0IHdpbGwgYnVpbGQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIG9mIFB5dGhvbiBhbmQKK2dlbmVyYXRlIGFuIGluc3RhbGxlciBsYXlvdXQgaW4gUENCdWlsZC8od2luMzJ8YW1kNjQpL2VuLXVzLgorCitTcGVjaWZ5IC14ODYgYW5kL29yIC14NjQgdG8gYnVpbGQgZm9yIGVhY2ggcGxhdGZvcm0uIElmIG5laXRoZXIgaXMKK3NwZWNpZmllZCwgYm90aCBwbGF0Zm9ybXMgd2lsbCBiZSBidWlsdC4gQ3VycmVudGx5LCBib3RoIHRoZSBkZWJ1ZyBhbmQKK3JlbGVhc2UgdmVyc2lvbnMgb2YgUHl0aG9uIGFyZSByZXF1aXJlZCBmb3IgdGhlIGluc3RhbGxlci4KKworU3BlY2lmeSAtLWRvYyB0byBidWlsZCB0aGUgZG9jdW1lbnRhdGlvbiAoLmNobSkgZmlsZS4gSWYgdGhlIGZpbGUgaXMgbm90CithdmFpbGFibGUsIGl0IHdpbGwgc2ltcGx5IGJlIGV4Y2x1ZGVkIGZyb20gdGhlIGluc3RhbGxlci4gRW5zdXJlCislUFlUSE9OJSBhbmQgJVNQSElOWEJVSUxEJSBhcmUgc2V0IHdoZW4gcGFzc2luZyB0aGlzIG9wdGlvbi4gWW91IG1heQorYWxzbyBzZXQgJUhUTUxIRUxQJSB0byB0aGUgSHRtbCBIZWxwIENvbXBpbGVyIChoaGMuZXhlKSwgb3IgcHV0IEhIQyBvbgoreW91ciBQQVRIIG9yIGluIGV4dGVybmFscy8uCisKK1NwZWNpZnkgLS10ZXN0LW1hcmtlciB0byBidWlsZCBhbiBpbnN0YWxsZXIgdGhhdCB3b3JrcyBzaWRlLWJ5LXNpZGUgd2l0aAorYW4gb2ZmaWNpYWwgUHl0aG9uIHJlbGVhc2UuIEFsbCByZWdpc3RyeSBrZXlzIGFuZCBpbnN0YWxsIGxvY2F0aW9ucyB3aWxsCitpbmNsdWRlIGFuIGV4dHJhIG1hcmtlciB0byBhdm9pZCBvdmVyd3JpdGluZyBmaWxlcy4gVGhpcyBtYXJrZXIgaXMKK2N1cnJlbnRseSBhbiAneCcgcHJlZml4LCBidXQgbWF5IGNoYW5nZSBhdCBhbnkgdGltZS4KKworU3BlY2lmeSAtLXBhY2sgdG8gYnVpbGQgYW4gaW5zdGFsbGVyIHRoYXQgZG9lcyBub3QgcmVxdWlyZSBhbGwgTVNJcyB0bworYmUgYXZhaWxhYmxlIGFsb25nc2lkZS4gVGhpcyB0YWtlcyBsb25nZXIsIGJ1dCBpcyBlYXNpZXIgdG8gc2hhcmUuCisKKworRm9yIGFuIG9mZmljaWFsIHJlbGVhc2UsIHRoZSBpbnN0YWxsZXIgc2hvdWxkIGJlIGJ1aWx0IHdpdGggdGhlCitUb29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdCBzY3JpcHQ6CisKKyAgICBzZXQgUFlUSE9OPTxwYXRoIHRvIFB5dGhvbiAyLjcgb3IgMy40PgorICAgIHNldCBTUEhJTlhCVUlMRD08cGF0aCB0byBzcGhpbngtYnVpbGQuZXhlPgorICAgIHNldCBQQVRIPTxwYXRoIHRvIE1lcmN1cmlhbCAoaGcuZXhlKT47CisgICAgICAgICAgICAgPHBhdGggdG8gSFRNTCBIZWxwIENvbXBpbGVyIChoaGMuZXhlKT47JVBBVEglCisKKyAgICBidWlsZHJlbGVhc2UuYmF0IFsteDg2XSBbLXg2NF0gWy1EXSBbLUJdCisgICAgICAgIFstbyA8b3V0cHV0IGRpcmVjdG9yeT5dIFstYyA8Y2VydGlmaWNhdGUgbmFtZT5dCisKK1NwZWNpZnkgLXg4NiBhbmQvb3IgLXg2NCB0byBidWlsZCBmb3IgZWFjaCBwbGF0Zm9ybS4gSWYgbmVpdGhlciBpcworc3BlY2lmaWVkLCBib3RoIHBsYXRmb3JtcyB3aWxsIGJlIGJ1aWx0LiBDdXJyZW50bHksIGJvdGggdGhlIGRlYnVnIGFuZAorcmVsZWFzZSB2ZXJzaW9ucyBvZiBQeXRob24gYXJlIHJlcXVpcmVkIGZvciB0aGUgaW5zdGFsbGVyLgorCitTcGVjaWZ5IC1EIHRvIHNraXAgcmVidWlsZGluZyB0aGUgZG9jdW1lbnRhdGlvbi4gVGhlIGRvY3VtZW50YXRpb24gaXMKK3JlcXVpcmVkIGZvciBhIHJlbGVhc2UgYW5kIHRoZSBidWlsZCB3aWxsIGZhaWwgaWYgaXQgaXMgbm90IGF2YWlsYWJsZS4KKworU3BlY2lmeSAtQiB0byBza2lwIHJlYnVpbGRpbmcgUHl0aG9uLiBUaGlzIGlzIHVzZWZ1bCB0byBvbmx5IHJlYnVpbGQgdGhlCitpbnN0YWxsZXIgbGF5b3V0IGFmdGVyIGEgcHJldmlvdXMgY2FsbCB0byBidWlsZHJlbGVhc2UuYmF0LgorCitTcGVjaWZ5IC1vIHRvIHNldCBhbiBvdXRwdXQgZGlyZWN0b3J5LiBUaGUgaW5zdGFsbGVyIGxheW91dHMgd2lsbCBiZQorY29waWVkIHRvIHBsYXRmb3JtLXNwZWNpZmljIHN1YmRpcmVjdG9yaWVzIG9mIHRoaXMgcGF0aC4KKworU3BlY2lmeSAtYyB0byBjaG9vc2UgYSBjb2RlLXNpZ25pbmcgY2VydGlmaWNhdGUgdG8gYmUgdXNlZCBmb3IgYWxsIHRoZQorc2lnbmFibGUgYmluYXJpZXMgaW4gUHl0aG9uIGFzIHdlbGwgYXMgZWFjaCBmaWxlIG1ha2luZyB1cCB0aGUKK2luc3RhbGxlci4gT2ZmaWNpYWwgcmVsZWFzZXMgb2YgUHl0aG9uIG11c3QgYmUgc2lnbmVkLgorCitFbnN1cmUgJVBZVEhPTiUgYW5kICVTUEhJTlhCVUlMRCUgYXJlIHNldCB3aGVuIHBhc3NpbmcgdGhpcyBvcHRpb24uIFlvdQorbWF5IGFsc28gc2V0ICVIVE1MSEVMUCUgdG8gdGhlIEh0bWwgSGVscCBDb21waWxlciAoaGhjLmV4ZSksIG9yIHB1dCBISEMKK29uIHlvdXIgUEFUSCBvciBpbiBleHRlcm5hbHMvLiBZb3Ugd2lsbCBhbHNvIG5lZWQgTWVyY3VyaWFsIChoZy5leGUpIG9uCit5b3VyIFBBVEguCisKK0lmIFdpWCBpcyBub3QgZm91bmQgb24geW91ciBzeXN0ZW0sIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBkb3dubG9hZGVkCithbmQgZXh0cmFjdGVkIHRvIHRoZSBleHRlcm5hbHMvIGRpcmVjdG9yeS4KKworVG8gbWFudWFsbHkgYnVpbGQgbGF5b3V0cyBvZiB0aGUgaW5zdGFsbGVyLCBidWlsZCBvbmUgb2YgdGhlIHByb2plY3RzIGluCit0aGUgYnVuZGxlIGZvbGRlci4KKworICAgIG1zYnVpbGQgYnVuZGxlXHNuYXBzaG90LndpeHByb2oKKyAgICBtc2J1aWxkIGJ1bmRsZVxyZWxlYXNld2ViLndpeHByb2oKKyAgICBtc2J1aWxkIGJ1bmRsZVxyZWxlYXNlbG9jYWwud2l4cHJvagorICAgIG1zYnVpbGQgYnVuZGxlXGZ1bGwud2l4cHJvagorCitzbmFwc2hvdC53aXhwcm9qIHByb2R1Y2VzIGEgdGVzdCBpbnN0YWxsZXIgdmVyc2lvbmVkIGJhc2VkIG9uIHRoZSBkYXRlLgorCityZWxlYXNld2ViLndpeHByb2ogcHJvZHVjZXMgYSByZWxlYXNlIGluc3RhbGxlciB0aGF0IGRvZXMgbm90IGVtYmVkIGFueQorb2YgdGhlIGxheW91dC4KKworcmVsZWFzZWxvY2FsLndpeHByb2ogcHJvZHVjZXMgYSByZWxlYXNlIGluc3RhbGxlciB0aGF0IGVtYmVkcyB0aGUgZmlsZXMKK3JlcXVpcmVkIGZvciBhIGRlZmF1bHQgaW5zdGFsbGF0aW9uLgorCitmdWxsLndpeHByb2ogcHJvZHVjZXMgYSB0ZXN0IGluc3RhbGxlciB0aGF0IGVtYmVkcyB0aGUgZW50aXJlIGxheW91dC4KKworVGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIG1heSBiZSBwYXNzZWQgd2hlbiBidWlsZGluZyB0aGVzZSBwcm9qZWN0cy4KKworICAvcDpCdWlsZEZvclJlbGVhc2U9KHRydWV8ZmFsc2UpCisgICAgV2hlbiB0cnVlLCBhZGRzIGV4dHJhIHZlcmlmaWNhdGlvbiB0byBlbnN1cmUgYSBjb21wbGV0ZSBpbnN0YWxsZXIgaXMKKyAgICBwcm9kdWNlZC4gRm9yIGV4YW1wbGUsIGJpbnV0aWxzIGlzIHJlcXVpcmVkIHdoZW4gYnVpbGRpbmcgZm9yIGEgcmVsZWFzZQorICAgIHRvIGdlbmVyYXRlIE1pbkdXLWNvbXBhdGlibGUgbGlicmFyaWVzLCBhbmQgdGhlIGJ1aWxkIHdpbGwgYmUgYWJvcnRlZCBpZgorICAgIHRoaXMgZmFpbHMuIERlZmF1bHRzIHRvIGZhbHNlLgorCisgIC9wOlJlbGVhc2VVcmk9KGFueSBVUkkpCisgICAgVXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgSURzIGZvciB0aGUgaW5zdGFsbGVycyB0byBhbGxvdyBzaWRlLWJ5LXNpZGUKKyAgICBpbnN0YWxsYXRpb24uIEZvcmtzIG9mIFB5dGhvbiBjYW4gdXNlIHRoZSBzYW1lIGluc3RhbGxlciBpbmZyYXN0cnVjdHVyZQorICAgIGJ5IHByb3ZpZGluZyBhIHVuaXF1ZSBVUkkgZm9yIHRoaXMgcHJvcGVydHkuIEl0IGRvZXMgbm90IG5lZWQgdG8gYmUgYW4KKyAgICBhY3RpdmUgaW50ZXJuZXQgYWRkcmVzcy4gRGVmYXVsdHMgdG8gJChDb21wdXRlck5hbWUpLgorCisgICAgT2ZmaWNpYWwgcmVsZWFzZXMgdXNlIGh0dHA6Ly93d3cucHl0aG9uLm9yZy8oYXJjaGl0ZWN0dXJlIG5hbWUpCisKKyAgL3A6RG93bmxvYWRVcmxCYXNlPShhbnkgVVJJKQorICAgIFNwZWNpZmllcyB0aGUgYmFzZSBvZiBhIFVSTCB3aGVyZSBtaXNzaW5nIHBhcnRzIG9mIHRoZSBpbnN0YWxsZXIgbGF5b3V0CisgICAgY2FuIGJlIGRvd25sb2FkZWQgZnJvbS4gVGhlIGJ1aWxkIHZlcnNpb24gYW5kIGFyY2hpdGVjdHVyZSB3aWxsIGJlCisgICAgYXBwZW5kZWQgdG8gY3JlYXRlIHRoZSBmdWxsIGFkZHJlc3MuIElmIG9taXR0ZWQsIG1pc3NpbmcgY29tcG9uZW50cyB3aWxsCisgICAgbm90IGJlIGF1dG9tYXRpY2FsbHkgZG93bmxvYWRlZC4KKworICAvcDpEb3dubG9hZFVybD0oYW55IFVSSSkKKyAgICBTcGVjaWZpZXMgdGhlIGZ1bGwgVVJMIHdoZXJlIG1pc3NpbmcgcGFydHMgb2YgdGhlIGluc3RhbGxlciBsYXlvdXQgY2FuCisgICAgYmUgZG93bmxvYWRlZCBmcm9tLiBTaG91bGQgbm9ybWFsbHkgaW5jbHVkZSAnezJ9Jywgd2hpY2ggd2lsbCBiZQorICAgIHN1YnN0aXR1dGVkIGZvciB0aGUgZmlsZW5hbWUuIElmIG9taXR0ZWQsIG1pc3NpbmcgY29tcG9uZW50cyB3aWxsIG5vdCBiZQorICAgIGF1dG9tYXRpY2FsbHkgZG93bmxvYWRlZC4gSWYgc3BlY2lmaWVkLCB0aGlzIHZhbHVlIG92ZXJyaWRlcworICAgIERvd25sb2FkVXJsQmFzZS4KKworICAvcDpTaWduaW5nQ2VydGlmaWNhdGU9KGNlcnRpZmljYXRlIG5hbWUpCisgICAgU3BlY2lmaWVzIHRoZSBjZXJ0aWZpY2F0ZSB0byBzaWduIHRoZSBpbnN0YWxsZXIgbGF5b3V0IHdpdGguIElmIG9taXR0ZWQsCisgICAgdGhlIGxheW91dCB3aWxsIG5vdCBiZSBzaWduZWQuCisKKyAgL3A6UmVidWlsZEFsbD0odHJ1ZXxmYWxzZSkKKyAgICBXaGVuIHRydWUsIHJlYnVpbGRzIGFsbCBvZiB0aGUgTVNJcyBtYWtpbmcgdXAgdGhlIGxheW91dC4gRGVmYXVsdHMgdG8KKyAgICB0cnVlLgorCitVcGxvYWRpbmcgdGhlIEluc3RhbGxlcgorPT09PT09PT09PT09PT09PT09PT09PT0KKworRm9yIG9mZmljaWFsIHJlbGVhc2VzLCB0aGUgdXBsb2FkcmVsZWFzZS5iYXQgc2NyaXB0IHNob3VsZCBiZSB1c2VkLgorCitZb3Ugd2lsbCByZXF1aXJlIFB1VFRZIHNvIHRoYXQgcGxpbmsuZXhlIGFuZCBwc2NwLmV4ZSBjYW4gYmUgdXNlZCwgYW5kIHlvdXIKK1NTSCBrZXkgY2FuIGJlIGFjdGl2YXRlZCBpbiBwYWdlYW50LmV4ZS4gUHVUVFkgc2hvdWxkIGJlIGVpdGhlciBvbiB5b3VyIHBhdGgKK29yIGluICVQcm9ncmFtRmlsZXMoeDg2KSVcUHVUVFkuCisKK1RvIGluY2x1ZGUgc2lnbmF0dXJlcyBmb3IgZWFjaCB1cGxvYWRlZCBmaWxlLCB5b3Ugd2lsbCBuZWVkIGdwZzIuZXhlIG9uIHlvdXIKK3BhdGggb3IgaGF2ZSBydW4gZ2V0X2V4dGVybmFscy5iYXQuIFlvdSBtYXkgYWxzbyBuZWVkIHRvICJncGcyLmV4ZSAtLWltcG9ydCIKK3lvdXIga2V5IGJlZm9yZSBydW5uaW5nIHRoZSB1cGxvYWQgc2NyaXB0LgorCisgICAgdXBsb2FkcmVsZWFzZS5iYXQgLS1ob3N0IDxob3N0PiAtLXVzZXIgPHVzZXJuYW1lPiBbLS1kcnktcnVuXSBbLS1uby1ncGddCisKK1RoZSBob3N0IGlzIHRoZSBVUkwgdG8gdGhlIHNlcnZlci4gVGhpcyBjYW4gYmUgcHJvdmlkZWQgYnkgdGhlIFJlbGVhc2UKK01hbmFnZXIuIFlvdSBzaG91bGQgYmUgYWJsZSB0byBTU0ggdG8gdGhpcyBhZGRyZXNzLgorCitUaGUgdXNlcm5hbWUgaXMgeW91ciBvd24gdXNlcm5hbWUsIHdoaWNoIHlvdSBoYXZlIHBlcm1pc3Npb24gdG8gU1NIIGludG8KK3RoZSBzZXJ2ZXIgY29udGFpbmluZyBkb3dubG9hZHMuCisKK1VzZSAtLWRyeS1ydW4gdG8gZGlzcGxheSB0aGUgZ2VuZXJhdGVkIHVwbG9hZCBjb21tYW5kcyB3aXRob3V0IGV4ZWN1dGluZwordGhlbS4gU2lnbmF0dXJlcyBmb3IgZWFjaCBmaWxlIHdpbGwgYmUgZ2VuZXJhdGVkIGJ1dCBub3QgdXBsb2FkZWQgdW5sZXNzCistLW5vLWdwZyBpcyBhbHNvIHBhc3NlZC4KKworVXNlIC0tbm8tZ3BnIHRvIHN1cHByZXNzIHNpZ25hdHVyZSBnZW5lcmF0aW9uIGFuZCB1cGxvYWQuCisKK1RoZSBkZWZhdWx0IHRhcmdldCBkaXJlY3RvcnkgKHdoaWNoIGFwcGVhcnMgaW4gdXBsb2FkcmVsZWFzZS5wcm9qKSBpcworY29ycmVjdCBmb3Igb2ZmaWNpYWwgUHl0aG9uIHJlbGVhc2VzLCBidXQgbWF5IGJlIG92ZXJyaWRkZW4gd2l0aAorLS10YXJnZXQgPHBhdGg+IGZvciBvdGhlciBwdXJwb3Nlcy4gVGhpcyBwYXRoIHNob3VsZCBnZW5lcmFsbHkgbm90IGluY2x1ZGUKK2FueSB2ZXJzaW9uIHNwZWNpZmllciwgYXMgdGhhdCB3aWxsIGJlIGFkZGVkIGF1dG9tYXRpY2FsbHkuCisKK01vZGlmeWluZyB0aGUgSW5zdGFsbGVyCis9PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgY29kZSBmb3IgdGhlIGluc3RhbGxlciBpcyBkaXZpZGVkIGludG8gdGhyZWUgbWFpbiBncm91cHM6IHBhY2thZ2VzLAordGhlIGJ1bmRsZSBhbmQgdGhlIGJvb3RzdHJhcCBhcHBsaWNhdGlvbi4KKworUGFja2FnZXMKKy0tLS0tLS0tCisKK1BhY2thZ2VzIGFwcGVhciBhcyBzdWJkaXJlY3RvcmllcyBvZiBUb29scy9tc2kgKG90aGVyIHRoYW4gdGhlIGJ1bmRsZS8KK2RpcmVjdG9yeSkuIFRoZSBwcm9qZWN0IGZpbGUgaXMgYSAud2l4cHJvaiBhbmQgdGhlIGJ1aWxkIG91dHB1dCBpcyBhCitzaW5nbGUgTVNJLiBQYWNrYWdlcyBhcmUgYnVpbHQgd2l0aCB0aGUgV2lYIFRvb2xzZXQuIFNvbWUgcHJvamVjdCBmaWxlcworc2hhcmUgc291cmNlIGZpbGVzIGFuZCB1c2UgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgdG8gZW5hYmxlIHBhcnRpY3VsYXIKK2ZlYXR1cmVzLiBUaGVzZSBhcmUgdHlwaWNhbGx5IHVzZWQgdG8ga2VlcCB0aGUgc291cmNlcyBjbG9zZSB3aGVuIHRoZQorZmlsZXMgYXJlIHJlbGF0ZWQsIGJ1dCBwcm9kdWNlIG11bHRpcGxlIGluZGVwZW5kZW50IHBhY2thZ2VzLgorCitBIHBhY2thZ2UgaXMgdGhlIHNtYWxsZXN0IGVsZW1lbnQgdGhhdCBtYXkgYmUgaW5kZXBlbmRlbnRseSBpbnN0YWxsZWQgb3IKK3VuaW5zdGFsbGVkIChhcyB1c2VkIGluIHRoaXMgaW5zdGFsbGVyKS4gRm9yIGV4YW1wbGUsIHRoZSB0ZXN0IHN1aXRlIGhhcworaXRzIG93biBwYWNrYWdlLCBhcyB1c2VycyBjYW4gY2hvb3NlIHRvIGFkZCBvciByZW1vdmUgaXQgYWZ0ZXIgdGhlCitpbml0aWFsIGluc3RhbGxhdGlvbi4KKworQWxsIHRoZSBmaWxlcyBpbnN0YWxsZWQgYnkgYSBzaW5nbGUgcGFja2FnZSBzaG91bGQgYmUgcmVsYXRlZCwgdGhvdWdoCitzb21lIHBhY2thZ2VzIG1heSBub3QgaW5zdGFsbCBhbnkgZmlsZXMuIEZvciBleGFtcGxlLCB0aGUgcGlwIHBhY2thZ2UKK2V4ZWN1dGVzIHRoZSBlbnN1cmVwaXAgcGFja2FnZSwgYnV0IGRvZXMgbm90IGFkZCBvciByZW1vdmUgYW55IG9mIGl0cworb3duIGZpbGVzLiAoSXQgaXMgcmVwcmVzZW50ZWQgYXMgYSBwYWNrYWdlIGJlY2F1c2Ugb2YgaXRzCitpbnN0YWxsZWQvdW5pbnN0YWxsZWQgbmF0dXJlLCBhcyBvcHBvc2VkIHRvIHRoZSAicHJlY29tcGlsZSBzdGFuZGFyZAorbGlicmFyeSIgb3B0aW9uLCBmb3IgZXhhbXBsZS4pIERlcGVuZGVuY2llcyBiZXR3ZWVuIHBhY2thZ2VzIGFyZSBoYW5kbGVkCitieSB0aGUgYnVuZGxlLCBidXQgcGFja2FnZXMgc2hvdWxkIGRldGVjdCB3aGVuIGRlcGVuZGVuY2llcyBhcmUgbWlzc2luZworYW5kIHJhaXNlIGFuIGVycm9yLgorCitQYWNrYWdlcyB0aGF0IGluY2x1ZGUgYSBsb3Qgb2YgZmlsZXMgbWF5IHVzZSBhbiBJbnN0YWxsRmlsZXMgZWxlbWVudCBpbgordGhlIC53aXhwcm9qIGZpbGUgdG8gZ2VuZXJhdGUgc291cmNlcy4gU2VlIGxpYi9saWIud2l4cHJvaiBmb3IgYW4KK2V4YW1wbGUsIGFuZCBtc2kudGFyZ2V0cyBhbmQgY3N2X3RvX3d4cy5weSBmb3IgdGhlIGltcGxlbWVudGF0aW9uLiBUaGlzCitlbGVtZW50IGlzIGFsc28gcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGhlIGNvZGUgZm9yIGNsZWFuaW5nIHVwIGFuZAorcmVtb3ZpbmcgX19weWNhY2hlX18gZm9sZGVycyBpbiBhbnkgZGlyZWN0b3J5IGNvbnRhaW5pbmcgLnB5IGZpbGVzLgorCitBbGwgcGFja2FnZXMgYXJlIGJ1aWx0IHdpdGggdGhlIFRvb2xzL21zaS9jb21tb24ud3hzIGZpbGUsIGFuZCBzbyBhbnkKK2RpcmVjdG9yeSBvciBwcm9wZXJ0eSBpbiB0aGlzIGZpbGUgbWF5IGJlIHJlZmVyZW5jZWQuIE9mIHBhcnRpY3VsYXIKK2ludGVyZXN0OgorCisgIFJFR0lTVFJZS0VZIChwcm9wZXJ0eSkKKyAgICBUaGUgcmVnaXN0cnkga2V5IGZvciB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24uCisKKyAgSW5zdGFsbERpcmVjdG9yeSAoZGlyZWN0b3J5KQorICAgIFRoZSByb290IGluc3RhbGwgZGlyZWN0b3J5IGZvciB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24uIFN1YmRpcmVjdG9yaWVzCisgICAgYXJlIGFsc28gc3BlY2lmaWVkIGluIHRoaXMgZmlsZSAoRExMcywgTGliLCBldGMuKQorCisgIE1lbnVEaXIgKGRpcmVjdG9yeSkKKyAgICBUaGUgU3RhcnQgTWVudSBmb2xkZXIgZm9yIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbi4KKworICBVcGdyYWRlVGFibGUgKHByb3BlcnR5KQorICAgIEV2ZXJ5IHBhY2thZ2Ugc2hvdWxkIHJlZmVyZW5jZSB0aGlzIHByb3BlcnR5IHRvIGluY2x1ZGUgdXBncmFkZQorICAgIGluZm9ybWF0aW9uLgorCisgIE9wdGlvbmFsRmVhdHVyZSAoQ29tcG9uZW50KQorICAgIFBhY2thZ2VzIHRoYXQgbWF5IGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgc2hvdWxkIHJlZmVyZW5jZSB0aGlzIGNvbXBvbmVudAorICAgIGFuZCBoYXZlIGFuIE9QVElPTkFMX0ZFQVRVUkVTIGVudHJ5IGluIHRoZSBib290c3RyYXAgYXBwbGljYXRpb24gdG8KKyAgICBwcm9wZXJseSBoYW5kbGUgTW9kaWZ5IGFuZCBVcGdyYWRlLgorCitUaGUgLnd4bF90ZW1wbGF0ZSBmaWxlIGlzIHNwZWNpYWxseSBoYW5kbGVkIGJ5IHRoZSBidWlsZCBzeXN0ZW0gZm9yIHRoaXMKK3Byb2plY3QgdG8gcGVyZm9ybSB7e3N1YnN0aXR1dGlvbnN9fSBhcyBkZWZpbmVkIGluIG1zaS50YXJnZXRzLiBUaGV5CitzaG91bGQgYmUgaW5jbHVkZWQgaW4gcHJvamVjdHMgYXMgPFd4bFRlbXBsYXRlPiBpdGVtcywgd2hlcmUgLnd4bCBmaWxlcworYXJlIG5vcm1hbGx5IGluY2x1ZGVkIGFzIDxFbWJlZGRlZFJlc291cmNlPiBpdGVtcy4KKworQnVuZGxlCistLS0tLS0KKworVGhlIGJ1bmRsZSBpcyBjb21waWxlZCB0byB0aGUgbWFpbiBFWEUgZW50cnkgcG9pbnQgdGhhdCBmb3IgbW9zdCB1c2Vycword2lsbCByZXByZXNlbnQgdGhlIFB5dGhvbiBpbnN0YWxsZXIuIEl0IGlzIGJ1aWx0IGZyb20gVG9vbHMvbXNpL2J1bmRsZQord2l0aCBwYWNrYWdlcyByZWZlcmVuY2VzIGluIFRvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy4KKworQnVpbGQgbG9naWMgZm9yIHRoZSBidW5kbGUgaXMgaW4gYnVuZGxlLnRhcmdldHMsIGJ1dCBzaG91bGQgYmUgaW52b2tlZAordGhyb3VnaCBvbmUgb2YgdGhlIC53aXhwcm9qIGZpbGVzIGFzIGRlc2NyaWJlZCBpbiBCdWlsZGluZyB0aGUKK0luc3RhbGxlci4KKworVGhlIFVJIGlzIHNlcGFyYXRlZCBiZXR3ZWVuIERlZmF1bHQudGhtIChVSSBsYXlvdXQpLCBEZWZhdWx0Lnd4bAorKHN0cmluZ3MpLCBidW5kbGUud3hzIChwcm9wZXJ0aWVzKSBhbmQgdGhlIGJvb3RzdHJhcCBhcHBsaWNhdGlvbi4KK0J1bmRsZS53eHMgYWxzbyBjb250YWlucyB0aGUgY2hhaW4sIHdoaWNoIGlzIHRoZSBsaXN0IG9mIHBhY2thZ2VzIHRvCitpbnN0YWxsIGFuZCB0aGUgb3JkZXIgdGhleSBzaG91bGQgYmUgaW5zdGFsbGVkIGluLiBUaGVzZSByZWZlciB0byBuYW1lZAorcGFja2FnZSBncm91cHMgaW4gYnVuZGxlL3BhY2thZ2Vncm91cHMuCisKK0VhY2ggcGFja2FnZSBncm91cCBzcGVjaWZpZXMgb25lIG9yIG1vcmUgcGFja2FnZXMgdG8gaW5zdGFsbC4gTW9zdAorcGFja2FnZXMgcmVxdWlyZSB0d28gc2VwYXJhdGUgZW50cmllcyB0byBzdXBwb3J0IGJvdGggcGVyLXVzZXIgYW5kCithbGwtdXNlcnMgaW5zdGFsbGF0aW9ucy4gQmVjYXVzZSB0aGVzZSByZXVzZSB0aGUgc2FtZSBwYWNrYWdlLCBpdCBkb2VzCitub3QgaW5jcmVhc2UgdGhlIG92ZXJhbGwgc2l6ZSBvZiB0aGUgcGFja2FnZS4KKworUGFja2FnZSBncm91cHMgcmVmZXIgdG8gcGF5bG9hZCBncm91cHMsIHdoaWNoIGFsbG93IGJldHRlciBjb250cm9sIG92ZXIKK2VtYmVkZGluZyBhbmQgZG93bmxvYWRpbmcgZmlsZXMgdGhhbiB0aGUgZGVmYXVsdCBzZXR0aW5ncy4gV2hldGhlciBmaWxlcworYXJlIGVtYmVkZGVkIGFuZCB3aGVyZSB0aGV5IGFyZSBkb3dubG9hZGVkIGZyb20gZGVwZW5kcyBvbiBzZXR0aW5ncworY3JlYXRlZCBieSB0aGUgcHJvamVjdCBmaWxlcy4KKworUGFja2FnZSByZWZlcmVuY2VzIGNhbiBpbmNsdWRlIGluc3RhbGwgY29uZGl0aW9ucyB0aGF0IGRldGVybWluZSB3aGVuIHRvCitpbnN0YWxsIHRoZSBwYWNrYWdlLiBXaGVuIGEgcGFja2FnZSBpcyBhIGRlcGVuZGVuY3kgZm9yIG90aGVycywgdGhlCitjb25kaXRpb24gc2hvdWxkIGJlIGNyYWZ0ZWQgdG8gZW5zdXJlIGl0IGlzIGluc3RhbGxlZC4KKworTVNJIHBhY2thZ2VzIGFyZSBpbnN0YWxsZWQgb3IgdW5pbnN0YWxsZWQgYmFzZWQgb24gdGhlaXIgY3VycmVudCBzdGF0ZQorYW5kIHRoZSBpbnN0YWxsIGNvbmRpdGlvbi4gVGhpcyBtYWtlcyB0aGVtIG1vc3Qgc3VpdGFibGUgZm9yIGZlYXR1cmVzCit0aGF0IGFyZSBjbGVhcmx5IHByZXNlbnQgb3IgYWJzZW50IGZyb20gdGhlIHVzZXIncyBtYWNoaW5lLgorCitFWEUgcGFja2FnZXMgYXJlIGV4ZWN1dGVkIGJhc2VkIG9uIGEgY3VzdG9taXNhYmxlIGNvbmRpdGlvbiB0aGF0IGNhbiBiZQorb21pdHRlZC4gVGhpcyBtYWtlcyB0aGVtIHN1aXRhYmxlIGZvciBwcmUtIG9yIHBvc3QtaW5zdGFsbCB0YXNrcyB0aGF0CituZWVkIHRvIHJ1biByZWdhcmRsZXNzIG9mIHdoZXRoZXIgZmVhdHVyZXMgaGF2ZSBiZWVuIGFkZGVkIG9yIHJlbW92ZWQuCisKK0Jvb3RzdHJhcCBBcHBsaWNhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBib290c3RyYXAgYXBwbGljYXRpb24gaXMgYSBDKysgYXBwbGljYXRpb24gdGhhdCBjb250cm9scyB0aGUgVUkgYW5kCitpbnN0YWxsYXRpb24uIFdoaWxlIGl0IGRvZXMgbm90IGRpcmVjdGx5IGNvbXBpbGUgaW50byB0aGUgbWFpbiBFWEUgb2YKK3RoZSBpbnN0YWxsZXIsIGl0IGZvcm1zIHRoZSBtYWluIGFjdGl2ZSBjb21wb25lbnQuIE1vc3Qgb2YgdGhlCitpbnN0YWxsYXRpb24gZnVuY3Rpb25hbGl0eSBpcyBwcm92aWRlZCBieSBXaVgsIGFuZCBzbyB0aGUgYm9vdHN0cmFwCithcHBsaWNhdGlvbiBpcyBwcmVkb21pbmFudGx5IHJlc3BvbnNpYmxlIGZvciB0aGUgY29kZSBiZWhpbmQgdGhlIFVJIHRoYXQKK2lzIGRlZmluZWQgaW4gdGhlIERlZmF1bHQudGhtIGZpbGUuIFRoZSBib290c3RyYXAgYXBwbGljYXRpb24gY29kZSBpcyBpbgorYnVuZGxlL2Jvb3RzdHJhcCBhbmQgaXMgYnVpbHQgYXV0b21hdGljYWxseSB3aGVuIGJ1aWxkaW5nIHRoZSBidW5kbGUuCisKK0luc3RhbGxhdGlvbiBMYXlvdXQKKz09PT09PT09PT09PT09PT09PT0KKworVGhlcmUgYXJlIHR3byBpbnN0YWxsYXRpb24gbGF5b3V0cyBmb3IgUHl0aG9uIG9uIFdpbmRvd3MsIHdpdGggdGhlIG9ubHkKK2RpZmZlcmVuY2VzIGJlaW5nIHN1cHBvcnRpbmcgZmlsZXMuIEEgbGF5b3V0IGlzIHNlbGVjdGVkIGltcGxpY2l0bHkKK2Jhc2VkIG9uIHdoZXRoZXIgdGhlIGluc3RhbGwgaXMgZm9yIGFsbCB1c2VycyBvZiB0aGUgbWFjaGluZSBvciBqdXN0IGZvcgordGhlIHVzZXIgcGVyZm9ybWluZyB0aGUgaW5zdGFsbGF0aW9uLgorCitUaGUgZGVmYXVsdCBpbnN0YWxsYXRpb24gbG9jYXRpb24gd2hlbiBpbnN0YWxsaW5nIGZvciBhbGwgdXNlcnMgaXMKKyIlUHJvZ3JhbUZpbGVzJVxQeXRob24zWCIgZm9yIHRoZSA2NC1iaXQgaW50ZXJwcmV0ZXIgYW5kCisiJVByb2dyYW1GaWxlcyh4ODYpJVxQeXRob24zWC0zMiIgZm9yIHRoZSAzMi1iaXQgaW50ZXJwcmV0ZXIuIChOb3RlIHRoYXQKK3RoZSBsYXR0ZXIgcGF0aCBpcyBlcXVpdmFsZW50IHRvICIlUHJvZ3JhbUZpbGVzJVxQeXRob24zWC0zMiIgd2hlbgorcnVubmluZyBhIDMyLWJpdCB2ZXJzaW9uIG9mIFdpbmRvd3MuKSBUaGlzIGxvY2F0aW9uIHJlcXVpcmVzCithZG1pbmlzdHJhdGl2ZSBwcml2aWxlZ2VzIHRvIGluc3RhbGwgb3IgbGF0ZXIgbW9kaWZ5IHRoZSBpbnN0YWxsYXRpb24uCisKK1RoZSBkZWZhdWx0IGluc3RhbGxhdGlvbiBsb2NhdGlvbiB3aGVuIGluc3RhbGxpbmcgZm9yIHRoZSBjdXJyZW50IHVzZXIKK2lzICIlTG9jYWxBcHBEYXRhJVxQcm9ncmFtc1xQeXRob25cUHl0aG9uM1giIGZvciB0aGUgNjQtYml0IGludGVycHJldGVyCithbmQgIiVMb2NhbEFwcERhdGElXFByb2dyYW1zXFB5dGhvblxQeXRob24zWC0zMiIgZm9yIHRoZSAzMi1iaXQKK2ludGVycHJldGVyLiBPbmx5IHRoZSBjdXJyZW50IHVzZXIgY2FuIGFjY2VzcyB0aGlzIGxvY2F0aW9uLiBUaGlzCitwcm92aWRlcyBhIHN1aXRhYmxlIGxldmVsIG9mIHByb3RlY3Rpb24gYWdhaW5zdCBtYWxpY2lvdXMgbW9kaWZpY2F0aW9uCitvZiBQeXRob24ncyBmaWxlcy4KKworKERlZmF1bHQgaW5zdGFsbGF0aW9uIGxvY2F0aW9ucyBhcmUgc2V0IGluIFRvb2xzXG1zaVxidW5kbGVcYnVuZGxlLnd4cy4pCisKK1dpdGhpbiB0aGlzIGluc3RhbGwgZGlyZWN0b3J5IGlzIHRoZSBmb2xsb3dpbmcgYXBwcm94aW1hdGUgbGF5b3V0OgorCisuXHB5dGhvblt3XS5leGUgVGhlIGNvcmUgZXhlY3V0YWJsZSBmaWxlcworLlxETExzICAgICAgICAgIFN0ZGxpYiBleHRlbnNpb25zICgqLnB5ZCkgYW5kIGRlcGVuZGVuY2llcworLlxEb2MgICAgICAgICAgIERvY3VtZW50YXRpb24gKCouY2htKQorLlxpbmNsdWRlICAgICAgIERldmVsb3BtZW50IGhlYWRlcnMgKCouaCkKKy5cTGliICAgICAgICAgICBTdGFuZGFyZCBsaWJyYXJ5CisuXExpYlx0ZXN0ICAgICAgVGVzdCBzdWl0ZQorLlxsaWJzICAgICAgICAgIERldmVsb3BtZW50IGxpYnJhcmllcyAoKi5saWIpCisuXFNjcmlwdHMgICAgICAgTGF1bmNoZXIgc2NyaXB0cyAoKi5leGUsICoucHkpCisuXHRjbCAgICAgICAgICAgVGNsIGRlcGVuZGVuY2llcyAoKi5kbGwsICoudGNsIGFuZCBvdGhlcnMpCisuXFRvb2xzICAgICAgICAgVG9vbCBzY3JpcHRzICgqLnB5KQorCitXaGVuIGluc3RhbGxlZCBmb3IgYWxsIHVzZXJzLCB0aGUgZm9sbG93aW5nIGZpbGVzIGFyZSBpbnN0YWxsZWQgdG8KK2VpdGhlciAiJVN5c3RlbVJvb3QlXFN5c3RlbTMyIiBvciAiJVN5c3RlbVJvb3QlXFN5c1dPVzY0IiBhcworYXBwcm9wcmlhdGUuIEZvciB0aGUgY3VycmVudCB1c2VyLCB0aGV5IGFyZSBpbnN0YWxsZWQgaW4gdGhlIFB5dGhvbgoraW5zdGFsbCBkaXJlY3RvcnkuCisKKy5ccHl0aG9uM3guZGxsICAgICAgVGhlIGNvcmUgaW50ZXJwcmV0ZXIKKy5ccHl0aG9uMy5kbGwgICAgICAgVGhlIHN0YWJsZSBBQkkgcmVmZXJlbmNlCisKK1doZW4gaW5zdGFsbGVkIGZvciBhbGwgdXNlcnMsIHRoZSBmb2xsb3dpbmcgZmlsZXMgYXJlIGluc3RhbGxlZCB0bworIiVTeXN0ZW1Sb290JSIgKHR5cGljYWxseSAiQzpcV2luZG93cyIpIHRvIGVuc3VyZSB0aGV5IGFyZSBhbHdheXMKK2F2YWlsYWJsZSBvbiBQQVRILiAoU2VlIExhdW5jaGluZyBQeXRob24gYmVsb3cuKSBGb3IgdGhlIGN1cnJlbnQgdXNlciwKK3RoZXkgYXJlIGluc3RhbGxlZCBpbiAiJUxvY2FsQXBwRGF0YSVcUHJvZ3JhbXNcUHl0aG9uXFB5TGF1bmNoZXIiLgorCisuXHB5W3ddLmV4ZSAgICAgICAgIFBFUCAzOTcgbGF1bmNoZXIKKworU3lzdGVtIFNldHRpbmdzCis9PT09PT09PT09PT09PT0KKworT24gaW5zdGFsbGF0aW9uLCByZWdpc3RyeSBrZXlzIGFyZSBjcmVhdGVkIHNvIHRoYXQgb3RoZXIgYXBwbGljYXRpb25zCitjYW4gbG9jYXRlIGFuZCBpZGVudGlmeSBpbnN0YWxsYXRpb25zIG9mIFB5dGhvbi4gVGhlIGxvY2F0aW9ucyBvZiB0aGVzZQora2V5cyB2YXJ5IGJhc2VkIG9uIHRoZSBpbnN0YWxsIHR5cGUuCisKK0ZvciA2NC1iaXQgaW50ZXJwcmV0ZXJzIGluc3RhbGxlZCBmb3IgYWxsIHVzZXJzLCB0aGUgcm9vdCBrZXkgaXM6CisgICAgSEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXFB5dGhvblxQeXRob25Db3JlXDMuWAorCitGb3IgMzItYml0IGludGVycHJldGVycyBpbnN0YWxsZWQgZm9yIGFsbCB1c2VycyBvbiBhIDY0LWJpdCBvcGVyYXRpbmcKK3N5c3RlbSwgdGhlIHJvb3Qga2V5IGlzOgorICAgIEhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxXb3c2NDMyTm9kZVxQeXRob25cUHl0aG9uQ29yZVwzLlgtMzIKKworRm9yIDMyLWJpdCBpbnRlcnByZXRlcnMgaW5zdGFsbGVkIGZvciBhbGwgdXNlcnMgb24gYSAzMi1iaXQgb3BlcmF0aW5nCitzeXN0ZW0sIHRoZSByb290IGtleSBpczoKKyAgICBIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcUHl0aG9uXFB5dGhvbkNvcmVcMy5YLTMyCisKK0ZvciA2NC1iaXQgaW50ZXJwcmV0ZXJzIGluc3RhbGxlZCBmb3IgdGhlIGN1cnJlbnQgdXNlcjoKKyAgICBIS0VZX0NVUlJFTlRfVVNFUlxTb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZVwzLlgKKworRm9yIDMyLWJpdCBpbnRlcnByZXRlcnMgaW5zdGFsbGVkIGZvciB0aGUgY3VycmVudCB1c2VyOgorICAgIEhLRVlfQ1VSUkVOVF9VU0VSXFNvZnR3YXJlXFB5dGhvblxQeXRob25Db3JlXDMuWC0zMgorCitXaGVuIHRoZSBjb3JlIFB5dGhvbiBleGVjdXRhYmxlcyBhcmUgaW5zdGFsbGVkLCBhIGtleSAiSW5zdGFsbFBhdGgiIGlzCitjcmVhdGVkIHdpdGhpbiB0aGUgcm9vdCBrZXkgd2l0aCBpdHMgZGVmYXVsdCB2YWx1ZSBzZXQgdG8gdGhlCitleGVjdXRhYmxlJ3MgaW5zdGFsbCBkaXJlY3RvcnkuIEEgdmFsdWUgbmFtZWQgIkV4ZWN1dGFibGVQYXRoIiBpcyBhZGRlZAord2l0aCB0aGUgZnVsbCBwYXRoIHRvIHRoZSBtYWluIFB5dGhvbiBpbnRlcnByZXRlciwgYW5kIGEga2V5CisiSW5zdGFsbEdyb3VwIiBpcyBjcmVhdGVkIHdpdGggaXRzIGRlZmF1bHQgdmFsdWUgc2V0IHRvIHRoZSBwcm9kdWN0CituYW1lICJQeXRob24gMy5YIi4KKworV2hlbiB0aGUgUHl0aG9uIHN0YW5kYXJkIGxpYnJhcnkgaXMgaW5zdGFsbGVkLCBhIGtleSAiUHl0aG9uUGF0aCIgaXMKK2NyZWF0ZWQgd2l0aGluIHRoZSByb290IGtleSB3aXRoIGl0cyBkZWZhdWx0IHZhbHVlIHNldCB0byB0aGUgZnVsbCBwYXRoCit0byB0aGUgTGliIGZvbGRlciBmb2xsb3dlZCBieSB0aGUgcGF0aCB0byB0aGUgRExMcyBmb2xkZXIsIHNlcGFyYXRlZCBieQorYSBzZW1pY29sb24uCisKK1doZW4gdGhlIGRvY3VtZW50YXRpb24gaXMgaW5zdGFsbGVkLCBhIGtleSAiSGVscCIgaXMgY3JlYXRlZCB3aXRoaW4gdGhlCityb290IGtleSwgd2l0aCBhIHN1YmtleSAiTWFpbiBQeXRob24gRG9jdW1lbnRhdGlvbiIgd2l0aCBpdHMgZGVmYXVsdAordmFsdWUgc2V0IHRvIHRoZSBmdWxsIHBhdGggdG8gdGhlIGluc3RhbGxlZCBDSE0gZmlsZS4KKworCitUaGUgcHkuZXhlIGxhdW5jaGVyIGlzIGluc3RhbGxlZCBhcyBwYXJ0IG9mIGEgcmVndWxhciBQeXRob24gaW5zdGFsbCwKK2J1dCB1c2luZyBhIHNlcGFyYXRlIG1lY2hhbmlzbSB0aGF0IGFsbG93cyBpdCB0byBtb3JlIGVhc2lseSBzcGFuCit2ZXJzaW9ucyBvZiBQeXRob24uIEFzIGEgcmVzdWx0LCBpdCBoYXMgZGlmZmVyZW50IHJvb3Qga2V5cyBmb3IgaXRzCityZWdpc3RyeSBlbnRyaWVzOgorCitXaGVuIGluc3RhbGxlZCBmb3IgYWxsIHVzZXJzIG9uIGEgNjQtYml0IG9wZXJhdGluZyBzeXN0ZW0sIHRoZQorbGF1bmNoZXIncyByb290IGtleSBpczoKKyAgICBIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcV293NjQzMk5vZGVcUHl0aG9uXExhdW5jaGVyCisKK1doZW4gaW5zdGFsbGVkIGZvciBhbGwgdXNlcnMgb24gYSAzMi1iaXQgb3BlcmF0aW5nIHN5c3RlbSwgdGhlCitsYXVuY2hlcidzIHJvb3Qga2V5IGlzOgorICAgIEhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxQeXRob25cTGF1bmNoZXIKKworV2hlbiBpbnN0YWxsZWQgZm9yIHRoZSBjdXJyZW50IHVzZXI6CisgICAgSEtFWV9DVVJSRU5UX1VTRVJcU29mdHdhcmVcUHl0aG9uXExhdW5jaGVyCisKK1doZW4gdGhlIGxhdW5jaGVyIGlzIGluc3RhbGxlZCwgYSBrZXkgIkluc3RhbGxQYXRoIiBpcyBjcmVhdGVkIHdpdGhpbgoraXRzIHJvb3Qga2V5IHdpdGggaXRzIGRlZmF1bHQgdmFsdWUgc2V0IHRvIHRoZSBsYXVuY2hlcidzIGluc3RhbGwKK2RpcmVjdG9yeS4gRmlsZSBhc3NvY2lhdGlvbnMgYXJlIGFsc28gY3JlYXRlZCBmb3IgLnB5LCAucHl3LCAucHljIGFuZAorLnB5byBmaWxlcy4KKworTGF1bmNoaW5nIFB5dGhvbgorPT09PT09PT09PT09PT09PQorCitXaGVuIGEgZmVhdHVyZSBvZmZlcmluZyB1c2VyIGVudHJ5IHBvaW50cyBpbiB0aGUgU3RhcnQgTWVudSBpcworaW5zdGFsbGVkLCBhIGZvbGRlciAiUHl0aG9uIDMuWCIgaXMgY3JlYXRlZC4gRXZlcnkgc2hvcnRjdXQgc2hvdWxkIGJlCitjcmVhdGVkIHdpdGhpbiB0aGlzIGZvbGRlciwgYW5kIGVhY2ggc2hvcnRjdXQgc2hvdWxkIGluY2x1ZGUgdGhlIHZlcnNpb24KK2FuZCBwbGF0Zm9ybSB0byBhbGxvdyB1c2VycyB0byBpZGVudGlmeSB0aGUgc2hvcnRjdXQgaW4gYSBzZWFyY2ggcmVzdWx0cworcGFnZS4KKworVGhlIGNvcmUgUHl0aG9uIGV4ZWN1dGFibGVzIGNyZWF0ZXMgYSBzaG9ydGN1dCAiUHl0aG9uIDMuWCAoMzItYml0KSIgb3IKKyJQeXRob24gMy5YICg2NC1iaXQpIiBkZXBlbmRpbmcgb24gdGhlIGludGVycHJldGVyLgorCitUaGUgZG9jdW1lbnRhdGlvbiBjcmVhdGVzIGEgc2hvcnRjdXQgIlB5dGhvbiAzLlggMzItYml0IE1hbnVhbHMiIG9yCisiUHl0aG9uIDMuWCA2NC1iaXQgTWFudWFscyIuIFRoZSBkb2N1bWVudGF0aW9uIGlzIGlkZW50aWNhbCBmb3IgYWxsCitwbGF0Zm9ybXMsIGJ1dCB0aGUgc2hvcnRjdXRzIG5lZWQgdG8gYmUgc2VwYXJhdGUgdG8gYXZvaWQgdW5pbnN0YWxsYXRpb24KK2NvbmZsaWN0cy4KKworSW5zdGFsbGluZyBJRExFIGNyZWF0ZXMgYSBzaG9ydGN1dCAiSURMRSAoUHl0aG9uIDMuWCAzMi1iaXQpIiBvciAiSURMRQorKFB5dGhvbiAzLlggNjQtYml0KSIgZGVwZW5kaW5nIG9uIHRoZSBpbnRlcnByZXRlci4KKworCitGb3IgdXNlcnMgd2hvIG9mdGVuIGxhdW5jaCBQeXRob24gZnJvbSBhIENvbW1hbmQgUHJvbXB0LCBhbiBvcHRpb24gaXMKK3Byb3ZpZGVkIHRvIGFkZCB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgcHl0aG9uLmV4ZSB0byB0aGUgdXNlciBvcgorc3lzdGVtIFBBVEggdmFyaWFibGUuIElmIHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQsIHRoZSBpbnN0YWxsIGRpcmVjdG9yeQorYW5kIHRoZSBTY3JpcHRzIGRpcmVjdG9yeSB3aWxsIGJlIGFkZGVkIGF0IHRoZSBzdGFydCBvZiB0aGUgc3lzdGVtIFBBVEgKK2ZvciBhbiBhbGwgdXNlcnMgaW5zdGFsbCBhbmQgdGhlIHVzZXIgUEFUSCBmb3IgYSBwZXItdXNlciBpbnN0YWxsLgorCitXaGVuIHRoZSB1c2VyIG9ubHkgaGFzIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiBpbnN0YWxsZWQsIHRoaXMgd2lsbCBiZWhhdmUKK2FzIGV4cGVjdGVkLiBIb3dldmVyLCBiZWNhdXNlIFdpbmRvd3Mgc2VhcmNoZXMgdGhlIHN5c3RlbSBQQVRIIGJlZm9yZQordGhlIHVzZXIgUEFUSCwgdXNlcnMgY2Fubm90IG92ZXJyaWRlIGEgc3lzdGVtLXdpZGUgaW5zdGFsbGF0aW9uIG9mCitQeXRob24gb24gdGhlaXIgUEFUSC4gRnVydGhlciwgYmVjYXVzZSB0aGUgaW5zdGFsbGVyIGNhbiBvbmx5IHByZXBlbmQgdG8KK3RoZSBwYXRoLCBsYXRlciBpbnN0YWxsYXRpb25zIG9mIFB5dGhvbiB3aWxsIHRha2UgcHJlY2VkZW5jZSBvdmVyCitlYXJsaWVyIGluc3RhbGxhdGlvbnMsIHJlZ2FyZGxlc3Mgb2YgaW50ZXJwcmV0ZXIgdmVyc2lvbi4KKworQmVjYXVzZSBpdCBpcyBub3QgcG9zc2libGUgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgYSBzZW5zaWJsZSBQQVRICitjb25maWd1cmF0aW9uLCB1c2VycyBhcmUgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSBweS5leGUgbGF1bmNoZXIgYW5kCittYW51YWxseSBtb2RpZnkgdGhlaXIgUEFUSCB2YXJpYWJsZSB0byBhZGQgU2NyaXB0cyBkaXJlY3RvcmllcyBpbiB0aGVpcgorcHJlZmVycmVkIG9yZGVyLiBTeXN0ZW0td2lkZSBpbnN0YWxsYXRpb25zIG9mIFB5dGhvbiBzaG91bGQgY29uc2lkZXIgbm90Cittb2RpZnlpbmcgUEFUSCwgb3IgdXNpbmcgYW4gYWx0ZXJuYXRpdmUgdGVjaG5vbG9neSB0byBtb2RpZnkgdGhlaXIKK3VzZXJzJyBQQVRIIHZhcmlhYmxlcy4KKworCitUaGUgcHkuZXhlIGxhdW5jaGVyIGlzIHJlY29tbWVuZGVkIGJlY2F1c2UgaXQgdXNlcyBhIGNvbnNpc3RlbnQgYW5kCitzZW5zaWJsZSBzZWFyY2ggb3JkZXIgZm9yIFB5dGhvbiBpbnN0YWxsYXRpb25zLiBVc2VyIGluc3RhbGxhdGlvbnMgYXJlCitwcmVmZXJyZWQgb3ZlciBzeXN0ZW0td2lkZSBpbnN0YWxscywgYW5kIGxhdGVyIHZlcnNpb25zIGFyZSBwcmVmZXJyZWQKK3JlZ2FyZGxlc3Mgb2YgaW5zdGFsbGF0aW9uIG9yZGVyICh3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBweS5leGUKK2N1cnJlbnRseSBwcmVmZXJzIDIueCB2ZXJzaW9ucyBvdmVyIDMueCB2ZXJzaW9ucyB3aXRob3V0IHRoZSAtMyBjb21tYW5kCitsaW5lIGFyZ3VtZW50KS4KKworRm9yIGJvdGggMzItYml0IGFuZCA2NC1iaXQgaW50ZXJwcmV0ZXJzLCB0aGUgMzItYml0IHZlcnNpb24gb2YgdGhlCitsYXVuY2hlciBpcyBpbnN0YWxsZWQuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBzZWFyY2ggb3JkZXIgaXMgYWx3YXlzCitjb25zaXN0ZW50IChhcyB0aGUgNjQtYml0IGxhdW5jaGVyIGlzIHN1YnRseSBkaWZmZXJlbnQgZnJvbSB0aGUgMzItYml0CitsYXVuY2hlcikgYW5kIGFsc28gYXZvaWRzIHRoZSBuZWVkIHRvIGluc3RhbGwgaXQgbXVsdGlwbGUgdGltZXMuIEZ1dHVyZQordmVyc2lvbnMgb2YgUHl0aG9uIHdpbGwgdXBncmFkZSB0aGUgbGF1bmNoZXIgaW4tcGxhY2UsIHVzaW5nIFdpbmRvd3MKK0luc3RhbGxlcidzIHVwZ3JhZGUgZnVuY3Rpb25hbGl0eSB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBlYXJsaWVyCitpbnN0YWxsZWQgdmVyc2lvbnMuCisKK1doZW4gaW5zdGFsbGVkLCBmaWxlIGFzc29jaWF0aW9ucyBhcmUgY3JlYXRlZCBmb3IgLnB5LCAucHljIGFuZCAucHlvCitmaWxlcyB0byBsYXVuY2ggd2l0aCBweS5leGUgYW5kIC5weXcgZmlsZXMgdG8gbGF1bmNoIHdpdGggcHl3LmV4ZS4gVGhpcworbWFrZXMgUHl0aG9uIGZpbGVzIHJlc3BlY3Qgc2hlYmFuZyBsaW5lcyBieSBkZWZhdWx0IGFuZCBhbHNvIGF2b2lkcworY29uZmxpY3RzIGJldHdlZW4gbXVsdGlwbGUgUHl0aG9uIGluc3RhbGxhdGlvbnMuCisKKworUmVwYWlyLCBNb2RpZnkgYW5kIFVuaW5zdGFsbAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBZnRlciBpbnN0YWxsYXRpb24sIFB5dGhvbiBtYXkgYmUgbW9kaWZpZWQsIHJlcGFpcmVkIG9yIHVuaW5zdGFsbGVkIGJ5CitydW5uaW5nIHRoZSBvcmlnaW5hbCBFWEUgYWdhaW4gb3IgdmlhIHRoZSBQcm9ncmFtcyBhbmQgRmVhdHVyZXMgYXBwbGV0CisoZm9ybWVybHkga25vd24gYXMgQWRkIG9yIFJlbW92ZSBQcm9ncmFtcykuCisKK01vZGlmaWNhdGlvbnMgYWxsb3cgZmVhdHVyZXMgdG8gYmUgYWRkZWQgb3IgcmVtb3ZlZC4gVGhlIGluc3RhbGwKK2RpcmVjdG9yeSBhbmQga2luZCAoYWxsIHVzZXJzL3NpbmdsZSB1c2VyKSBjYW5ub3QgYmUgbW9kaWZpZWQuIEJlY2F1c2UKK1dpbmRvd3MgSW5zdGFsbGVyIGNhY2hlcyBpbnN0YWxsYXRpb24gcGFja2FnZXMsIHJlbW92aW5nIGZlYXR1cmVzIHdpbGwKK25vdCByZXF1aXJlIGludGVybmV0IGFjY2VzcyB1bmxlc3MgdGhlIHBhY2thZ2UgY2FjaGUgaGFzIGJlZW4gY29ycnVwdGVkCitvciBkZWxldGVkLiBBZGRpbmcgZmVhdHVyZXMgdGhhdCB3ZXJlIG5vdCBwcmV2aW91c2x5IGluc3RhbGxlZCBhbmQgYXJlCitub3QgZW1iZWRkZWQgb3Igb3RoZXJ3aXNlIGF2YWlsYWJsZSB3aWxsIHJlcXVpcmUgaW50ZXJuZXQgYWNjZXNzLgorCitSZXBhaXJpbmcgd2lsbCByZXJ1biB0aGUgaW5zdGFsbGF0aW9uIGZvciBhbGwgY3VycmVudGx5IGluc3RhbGxlZAorZmVhdHVyZXMsIHJlc3RvcmluZyBmaWxlcyBhbmQgcmVnaXN0cnkga2V5cyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZCBvcgorcmVtb3ZlZC4gVGhpcyBvcGVyYXRpb24gZ2VuZXJhbGx5IHdpbGwgbm90IHJlZG93bmxvYWQgYW55IGZpbGVzIHVubGVzcwordGhlIGNhY2hlZCBwYWNrYWdlcyBoYXZlIGJlZW4gY29ycnVwdGVkIG9yIGRlbGV0ZWQuCisKK1JlbW92aW5nIFB5dGhvbiB3aWxsIGNsZWFuIHVwIGFsbCB0aGUgZmlsZXMgYW5kIHJlZ2lzdHJ5IGtleXMgdGhhdCB3ZXJlCitjcmVhdGVkIGJ5IHRoZSBpbnN0YWxsZXIsIGFzIHdlbGwgYXMgX19weWNhY2hlX18gZm9sZGVycyB0aGF0IGFyZQorZXhwbGljaXRseSBoYW5kbGVkIGJ5IHRoZSBpbnN0YWxsZXIuIFB5dGhvbiBwYWNrYWdlcyBpbnN0YWxsZWQgbGF0ZXIKK3VzaW5nIGEgdG9vbCBsaWtlIHBpcCB3aWxsIG5vdCBiZSByZW1vdmVkLiBTb21lIGNvbXBvbmVudHMgbWF5IGJlCitpbnN0YWxsZWQgYnkgb3RoZXIgaW5zdGFsbGVycyBhbmQgdGhlc2Ugd2lsbCBub3QgYmUgcmVtb3ZlZCBpZiBhbm90aGVyCitwcm9kdWN0IGhhcyBhIGRlcGVuZGVuY3kgb24gdGhlbS4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1aWxkLmJhdCBiL1Rvb2xzL21zaS9idWlsZC5iYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTYxYWNlOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idWlsZC5iYXQKQEAgLTAsMCArMSw3NiBAQAorQGVjaG8gb2ZmDQorc2V0bG9jYWwNCitzZXQgRD0lfmRwMA0KK3NldCBQQ0JVSUxEPSVEJS4uXC4uXFBDQnVpbGRcDQorDQorc2V0IEJVSUxEWDg2PQ0KK3NldCBCVUlMRFg2ND0NCitzZXQgQlVJTERET0M9DQorc2V0IEJVSUxEVEVTVD0tLXRlc3QtbWFya2VyDQorc2V0IEJVSUxEUEFDSz0NCitzZXQgUkVCVUlMRD0NCisNCis6Q2hlY2tPcHRzDQoraWYgIiV+MSIgRVFVICItaCIgZ290byBIZWxwDQoraWYgIiV+MSIgRVFVICIteDg2IiAoc2V0IEJVSUxEWDg2PTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSIgRVFVICIteDY0IiAoc2V0IEJVSUxEWDY0PTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSIgRVFVICItLWRvYyIgKHNldCBCVUlMRERPQz0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlfjEiIEVRVSAiLS1uby10ZXN0LW1hcmtlciIgKHNldCBCVUlMRFRFU1Q9KSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlfjEiIEVRVSAiLS1wYWNrIiAoc2V0IEJVSUxEUEFDSz0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlfjEiIEVRVSAiLXIiIChzZXQgUkVCVUlMRD0tcikgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCisNCitpZiBub3QgZGVmaW5lZCBCVUlMRFg4NiBpZiBub3QgZGVmaW5lZCBCVUlMRFg2NCAoc2V0IEJVSUxEWDg2PTEpICYmIChzZXQgQlVJTERYNjQ9MSkNCisNCitjYWxsICIlRCVnZXRfZXh0ZXJuYWxzLmJhdCINCisNCitjYWxsICIlUENCVUlMRCVlbnYuYmF0IiB4ODYNCisNCitpZiBkZWZpbmVkIEJVSUxEWDg2ICgNCisgICAgY2FsbCAiJVBDQlVJTEQlYnVpbGQuYmF0IiAtZCAtZSAlUkVCVUlMRCUgJUJVSUxEVEVTVCUNCisgICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KKyAgICBjYWxsICIlUENCVUlMRCVidWlsZC5iYXQiIC1lICVSRUJVSUxEJSAlQlVJTERURVNUJQ0KKyAgICBpZiBlcnJvcmxldmVsIDEgZ290byA6ZW9mDQorKQ0KK2lmIGRlZmluZWQgQlVJTERYNjQgKA0KKyAgICBjYWxsICIlUENCVUlMRCVidWlsZC5iYXQiIC1wIHg2NCAtZCAtZSAlUkVCVUlMRCUgJUJVSUxEVEVTVCUNCisgICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KKyAgICBjYWxsICIlUENCVUlMRCVidWlsZC5iYXQiIC1wIHg2NCAtZSAlUkVCVUlMRCUgJUJVSUxEVEVTVCUNCisgICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KKykNCisNCitpZiBkZWZpbmVkIEJVSUxERE9DICgNCisgICAgY2FsbCAiJVBDQlVJTEQlLi5cRG9jXG1ha2UuYmF0IiBodG1saGVscA0KKyAgICBpZiBlcnJvcmxldmVsIDEgZ290byA6ZW9mDQorKQ0KKw0KK3NldCBCVUlMRF9DTUQ9IiVEJWJ1bmRsZVxzbmFwc2hvdC53aXhwcm9qIg0KK2lmIGRlZmluZWQgQlVJTERURVNUICgNCisgICAgc2V0IEJVSUxEX0NNRD0lQlVJTERfQ01EJSAvcDpVc2VUZXN0TWFya2VyPXRydWUNCispDQoraWYgZGVmaW5lZCBCVUlMRFBBQ0sgKA0KKyAgICBzZXQgQlVJTERfQ01EPSVCVUlMRF9DTUQlIC9wOlBhY2s9dHJ1ZQ0KKykNCitpZiBkZWZpbmVkIFJFQlVJTEQgKA0KKyAgICBzZXQgQlVJTERfQ01EPSVCVUlMRF9DTUQlIC90OlJlYnVpbGQNCispDQorDQoraWYgZGVmaW5lZCBCVUlMRFg4NiAoDQorICAgIG1zYnVpbGQgJUJVSUxEX0NNRCUNCisgICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KKykNCitpZiBkZWZpbmVkIEJVSUxEWDY0ICgNCisgICAgbXNidWlsZCAvcDpQbGF0Zm9ybT14NjQgJUJVSUxEX0NNRCUNCisgICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KKykNCisNCitleGl0IC9CIDANCisNCis6SGVscA0KK2VjaG8gYnVpbGQuYmF0IFsteDg2XSBbLXg2NF0gWy0tZG9jXSBbLWhdIFstLW5vLXRlc3QtbWFya2VyXSBbLS1wYWNrXSBbLXJdDQorZWNoby4NCitlY2hvICAgIC14ODYgICAgICAgICAgICAgICAgQnVpbGQgeDg2IGluc3RhbGxlcnMNCitlY2hvICAgIC14NjQgICAgICAgICAgICAgICAgQnVpbGQgeDY0IGluc3RhbGxlcnMNCitlY2hvICAgIC0tZG9jICAgICAgICAgICAgICAgQnVpbGQgQ0hNIGRvY3VtZW50YXRpb24NCitlY2hvICAgIC0tbm8tdGVzdC1tYXJrZXIgICAgQnVpbGQgd2l0aG91dCB0ZXN0IG1hcmtlcnMNCitlY2hvICAgIC0tcGFjayAgICAgICAgICAgICAgRW1iZWQgY29yZSBNU0lzIGludG8gaW5zdGFsbGVyDQorZWNobyAgICAtciAgICAgICAgICAgICAgICAgIFJlYnVpbGQgcmF0aGVyIHRoYW4gaW5jcmVtZW50YWwgYnVpbGQNCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdCBiL1Rvb2xzL21zaS9idWlsZHJlbGVhc2UuYmF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjN2NiOWYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdApAQCAtMCwwICsxLDIyOCBAQAorQHNldGxvY2FsDQorQGVjaG8gb2ZmDQorDQorcmVtIFRoaXMgc2NyaXB0IGlzIGludGVuZGVkIGZvciBidWlsZGluZyBvZmZpY2lhbCByZWxlYXNlcyBvZiBQeXRob24uDQorcmVtIFRvIHVzZSBpdCB0byBidWlsZCBhbHRlcm5hdGl2ZSByZWxlYXNlcywgeW91IHNob3VsZCBjbG9uZSB0aGlzIGZpbGUNCityZW0gYW5kIG1vZGlmeSB0aGUgZm9sbG93aW5nIHRocmVlIFVSSXMuDQorDQorcmVtIFRoZXNlIHR3byB3aWxsIGVuc3VyZSB0aGF0IHlvdXIgcmVsZWFzZSBjYW4gYmUgaW5zdGFsbGVkDQorcmVtIGFsb25nc2lkZSBhbiBvZmZpY2lhbCBQeXRob24gcmVsZWFzZSwgYnkgbW9kaWZ5aW5nIHRoZSBHVUlEcyB1c2VkDQorcmVtIGZvciBhbGwgY29tcG9uZW50cy4NCityZW0NCityZW0gVGhlIGZvbGxvd2luZyBzdWJzdGl0dXRpb25zIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcmVsZWFzZSBVUkk6DQorcmVtICAgICBWYXJpYWJsZSAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICBFeGFtcGxlDQorcmVtICAgICB7YXJjaH0gICAgICAgICAgYXJjaGl0ZWN0dXJlICAgICAgICBhbWQ2NCwgd2luMzINCitzZXQgUkVMRUFTRV9VUkk9aHR0cDovL3d3dy5weXRob24ub3JnL3thcmNofQ0KKw0KK3JlbSBUaGlzIGlzIHRoZSBVUkwgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZG93bmxvYWQgaW5zdGFsbGF0aW9uIGZpbGVzLg0KK3JlbSBUaGUgZmlsZXMgYXZhaWxhYmxlIGZyb20gdGhlIGRlZmF1bHQgVVJMICp3aWxsKiBjb25mbGljdCB3aXRoIHlvdXINCityZW0gaW5zdGFsbGVyLiBUcnVzdCBtZSwgeW91IGRvbid0IHdhbnQgdGhlbSwgZXZlbiBpZiBpdCBzZWVtcyBsaWtlIGENCityZW0gZ29vZCBpZGVhLg0KK3JlbQ0KK3JlbSBUaGUgZm9sbG93aW5nIHN1YnN0aXR1dGlvbnMgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBkb3dubG9hZCBVUkw6DQorcmVtICAgICBWYXJpYWJsZSAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICBFeGFtcGxlDQorcmVtICAgICB7dmVyc2lvbn0gICAgICAgdmVyc2lvbiBudW1iZXIgICAgICAzLjUuMA0KK3JlbSAgICAge2FyY2h9ICAgICAgICAgIGFyY2hpdGVjdHVyZSAgICAgICAgYW1kNjQsIHdpbjMyDQorcmVtICAgICB7cmVsZWFzZW5hbWV9ICAgcmVsZWFzZSBuYW1lICAgICAgICBhMSwgYjIsIHJjMyAob3IgYmxhbmsgZm9yIGZpbmFsKQ0KK3JlbSAgICAge21zaX0gICAgICAgICAgIE1TSSBmaWxlbmFtZSAgICAgICAgY29yZS5tc2kNCitzZXQgRE9XTkxPQURfVVJMPWh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi97dmVyc2lvbn0ve2FyY2h9e3JlbGVhc2VuYW1lfS97bXNpfQ0KKw0KK3NldCBEPSV+ZHAwDQorc2V0IFBDQlVJTEQ9JUQlLi5cLi5cUENCdWlsZFwNCitzZXQgRVhURVJOQUxTPSVEJS4uXC4uXGV4dGVybmFsc1x3aW5kb3dzLWluc3RhbGxlclwNCisNCitzZXQgQlVJTERYODY9DQorc2V0IEJVSUxEWDY0PQ0KK3NldCBUQVJHRVQ9UmVidWlsZA0KK3NldCBURVNUVEFSR0VURElSPQ0KK3NldCBQR089DQorDQorDQorOkNoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItaCIgZ290byBIZWxwDQoraWYgIiUxIiBFUVUgIi1jIiAoc2V0IENFUlROQU1FPSV+MikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS1jZXJ0aWZpY2F0ZSIgKHNldCBDRVJUTkFNRT0lfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi1vIiAoc2V0IE9VVERJUj0lfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi0tb3V0IiAoc2V0IE9VVERJUj0lfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi1EIiAoc2V0IFNLSVBET0M9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS1za2lwLWRvYyIgKHNldCBTS0lQRE9DPTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi1CIiAoc2V0IFNLSVBCVUlMRD0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLXNraXAtYnVpbGQiIChzZXQgU0tJUEJVSUxEPTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi0tZG93bmxvYWQiIChzZXQgRE9XTkxPQURfVVJMPSV+MikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS10ZXN0IiAoc2V0IFRFU1RUQVJHRVRESVI9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItYiIgKHNldCBUQVJHRVQ9QnVpbGQpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi0tYnVpbGQiIChzZXQgVEFSR0VUPUJ1aWxkKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICIteDg2IiAoc2V0IEJVSUxEWDg2PTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi14NjQiIChzZXQgQlVJTERYNjQ9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS1wZ28iIChzZXQgUEdPPSV+MikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCisNCitpZiAiJTEiIE5FUSAiIiBlY2hvIEludmFsaWQgb3B0aW9uOiAiJTEiICYmIGV4aXQgL0IgMQ0KKw0KK2lmIG5vdCBkZWZpbmVkIEJVSUxEWDg2IGlmIG5vdCBkZWZpbmVkIEJVSUxEWDY0IChzZXQgQlVJTERYODY9MSkgJiYgKHNldCBCVUlMRFg2ND0xKQ0KKw0KK2NhbGwgIiVEJWdldF9leHRlcm5hbHMuYmF0Ig0KKw0KKzpidWlsZGRvYw0KK2lmICIlU0tJUEJVSUxEJSIgRVFVICIxIiBnb3RvIHNraXBkb2MNCitpZiAiJVNLSVBET0MlIiBFUVUgIjEiIGdvdG8gc2tpcGRvYw0KKw0KK2lmIG5vdCBkZWZpbmVkIFBZVEhPTiB3aGVyZSBweSAtcSB8fCBlY2hvIENhbm5vdCBmaW5kIHB5IG9uIHBhdGggYW5kIFBZVEhPTiBpcyBub3Qgc2V0LiAmJiBleGl0IC9CIDENCitpZiBub3QgZGVmaW5lZCBTUEhJTlhCVUlMRCB3aGVyZSBzcGhpbngtYnVpbGQgLXEgfHwgZWNobyBDYW5ub3QgZmluZCBzcGhpbngtYnVpbGQgb24gcGF0aCBhbmQgU1BISU5YQlVJTEQgaXMgbm90IHNldC4gJiYgZXhpdCAvQiAxDQorDQorY2FsbCAiJUQlLi5cLi5cZG9jXG1ha2UuYmF0IiBodG1saGVscA0KK2lmIGVycm9ybGV2ZWwgMSBnb3RvIDplb2YNCis6c2tpcGRvYw0KKw0KK3doZXJlIGhnIC9xIHx8IGVjaG8gQ2Fubm90IGZpbmQgTWVyY3VyaWFsIG9uIFBBVEggJiYgZXhpdCAvQiAxDQorDQord2hlcmUgZGxsdG9vbCAvcSAmJiBnb3RvIHNraXBkbGx0b29sc2VhcmNoDQorc2V0IF9ETExUT09MX1BBVEg9DQord2hlcmUgL1IgIiVFWFRFUk5BTFMlXCIgZGxsdG9vbCA+ICIlVEVNUCVcZGxsdG9vbC5sb2MiIDI+IG51bCAmJiBzZXQgL1AgX0RMTFRPT0xfUEFUSD0gPCAiJVRFTVAlXGRsbHRvb2wubG9jIiAmIGRlbCAiJVRFTVAlXGRsbHRvb2wubG9jIiANCitpZiBub3QgZXhpc3QgIiVfRExMVE9PTF9QQVRIJSIgZWNobyBDYW5ub3QgZmluZCBiaW51dGlscyBvbiBQQVRIIG9yIGluIGV4dGVybmFsICYmIGV4aXQgL0IgMQ0KK2ZvciAlJWYgaW4gKCVfRExMVE9PTF9QQVRIJSkgZG8gc2V0IFBBVEg9JVBBVEglOyUlfmRwZg0KK3NldCBfRExMVE9PTF9QQVRIPQ0KKzpza2lwZGxsdG9vbHNlYXJjaA0KKw0KK2lmIGRlZmluZWQgQlVJTERYODYgKA0KKyAgICBjYWxsIDpidWlsZCB4ODYNCisgICAgaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCispDQorDQoraWYgZGVmaW5lZCBCVUlMRFg2NCAoDQorICAgIGNhbGwgOmJ1aWxkIHg2NCAiJVBHTyUiDQorICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorKQ0KKw0KK2lmIGRlZmluZWQgVEVTVFRBUkdFVERJUiAoDQorICAgIGNhbGwgIiVEJXRlc3RyZWxlYXNlLmJhdCIgLXQgIiVURVNUVEFSR0VURElSJSINCispDQorDQorZXhpdCAvQiAwDQorDQorOmJ1aWxkDQorQHNldGxvY2FsDQorQGVjaG8gb2ZmDQorDQoraWYgIiUxIiBFUVUgIng4NiIgKA0KKyAgICBjYWxsICIlUENCVUlMRCVlbnYuYmF0IiB4ODYNCisgICAgc2V0IEJVSUxEPSVQQ0JVSUxEJXdpbjMyXA0KKyAgICBzZXQgQlVJTERfUExBVD1XaW4zMg0KKyAgICBzZXQgT1VURElSX1BMQVQ9d2luMzINCisgICAgc2V0IE9CSkRJUl9QTEFUPXg4Ng0KKykgZWxzZSBpZiAiJX4yIiBORVEgIiIgKA0KKyAgICBjYWxsICIlUENCVUlMRCVlbnYuYmF0IiBhbWQ2NA0KKyAgICBzZXQgUEdPPSV+Mg0KKyAgICBzZXQgQlVJTEQ9JVBDQlVJTEQlYW1kNjQtcGdvXA0KKyAgICBzZXQgQlVJTERfUExBVD14NjQNCisgICAgc2V0IE9VVERJUl9QTEFUPWFtZDY0DQorICAgIHNldCBPQkpESVJfUExBVD14NjQNCispIGVsc2UgKA0KKyAgICBjYWxsICIlUENCVUlMRCVlbnYuYmF0IiBhbWQ2NA0KKyAgICBzZXQgQlVJTEQ9JVBDQlVJTEQlYW1kNjRcDQorICAgIHNldCBCVUlMRF9QTEFUPXg2NA0KKyAgICBzZXQgT1VURElSX1BMQVQ9YW1kNjQNCisgICAgc2V0IE9CSkRJUl9QTEFUPXg2NA0KKykNCisNCitpZiBleGlzdCAiJUJVSUxEJWVuLXVzIiAoDQorICAgIGVjaG8gRGVsZXRpbmcgJUJVSUxEJWVuLXVzDQorICAgIHJtZGlyIC9xL3MgIiVCVUlMRCVlbi11cyINCisgICAgaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCispDQorDQoraWYgZXhpc3QgIiVEJW9ialxSZWxlYXNlXyVPQkpESVJfUExBVCUiICgNCisgICAgZWNobyBEZWxldGluZyAiJUQlb2JqXFJlbGVhc2VfJU9CSkRJUl9QTEFUJSINCisgICAgcm1kaXIgL3EvcyAiJUQlb2JqXFJlbGVhc2VfJU9CSkRJUl9QTEFUJSINCisgICAgaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCispDQorDQoraWYgbm90ICIlQ0VSVE5BTUUlIiBFUVUgIiIgKA0KKyAgICBzZXQgQ0VSVE9QVFM9Ii9wOlNpZ25pbmdDZXJ0aWZpY2F0ZT0lQ0VSVE5BTUUlIg0KKykgZWxzZSAoDQorICAgIHNldCBDRVJUT1BUUz0NCispDQorDQoraWYgbm90ICIlU0tJUEJVSUxEJSIgRVFVICIxIiAoDQorICAgIEBjYWxsICIlUENCVUlMRCVidWlsZC5iYXQiIC1lIC1wICVCVUlMRF9QTEFUJSAtZCAtdCAlVEFSR0VUJSAlQ0VSVE9QVFMlDQorICAgIEBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKyAgICBAcmVtIGJ1aWxkLmJhdCB0dXJucyBlY2hvIGJhY2sgb24sIHNvIHdlIGRpc2FibGUgaXQgYWdhaW4NCisgICAgQGVjaG8gb2ZmDQorICAgIA0KKyAgICBpZiAiJVBHTyUiIEVRVSAiIiAoDQorICAgICAgICBAY2FsbCAiJVBDQlVJTEQlYnVpbGQuYmF0IiAtZSAtcCAlQlVJTERfUExBVCUgLXQgJVRBUkdFVCUgJUNFUlRPUFRTJQ0KKyAgICApIGVsc2UgKA0KKyAgICAgICAgQGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLWUgLXAgJUJVSUxEX1BMQVQlIC1jIFBHSW5zdHJ1bWVudCAtdCAlVEFSR0VUJSAlQ0VSVE9QVFMlDQorICAgICAgICBAaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCisgICAgICAgIA0KKyAgICAgICAgQGRlbCAiJUJVSUxEJSoucGdjIg0KKyAgICAgICAgaWYgIiVQR08lIiBFUVUgImRlZmF1bHQiICgNCisgICAgICAgICAgICAiJUJVSUxEJXB5dGhvbi5leGUiIC1tIHRlc3QgLXEgLS1wZ28NCisgICAgICAgICkgZWxzZSBpZiAiJVBHTyUiIEVRVSAiZGVmYXVsdDIiICgNCisgICAgICAgICAgICAiJUJVSUxEJXB5dGhvbi5leGUiIC1tIHRlc3QgLXIgLXEgLS1wZ28NCisgICAgICAgICAgICAiJUJVSUxEJXB5dGhvbi5leGUiIC1tIHRlc3QgLXIgLXEgLS1wZ28NCisgICAgICAgICkgZWxzZSBpZiAiJVBHTyUiIEVRVSAiZGVmYXVsdDEwIiAoDQorICAgICAgICAgICAgZm9yIC9MICUlaSBpbiAoMCwgMSwgOSkgZG8gIiVCVUlMRCVweXRob24uZXhlIiAtbSB0ZXN0IC1xIC1yIC0tcGdvDQorICAgICAgICApIGVsc2UgaWYgIiVQR08lIiBFUVUgInB5YmVuY2giICgNCisgICAgICAgICAgICAiJUJVSUxEJXB5dGhvbi5leGUiICIlUENCVUlMRCUuLlxUb29sc1xweWJlbmNoXHB5YmVuY2gucHkiDQorICAgICAgICApIGVsc2UgKA0KKyAgICAgICAgICAgICIlQlVJTEQlcHl0aG9uLmV4ZSIgJVBHTyUNCisgICAgICAgICkNCisgICAgICAgIA0KKyAgICAgICAgQGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLWUgLXAgJUJVSUxEX1BMQVQlIC1jIFBHVXBkYXRlIC10ICVUQVJHRVQlICVDRVJUT1BUUyUNCisgICAgKQ0KKyAgICBAaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCisgICAgQGVjaG8gb2ZmDQorKQ0KKw0KK3NldCBCVUlMRE9QVFM9L3A6UGxhdGZvcm09JTEgL3A6QnVpbGRGb3JSZWxlYXNlPXRydWUgL3A6RG93bmxvYWRVcmw9JURPV05MT0FEX1VSTCUgL3A6RG93bmxvYWRVcmxCYXNlPSVET1dOTE9BRF9VUkxfQkFTRSUgL3A6UmVsZWFzZVVyaT0lUkVMRUFTRV9VUkklDQoraWYgIiVQR08lIiBORVEgIiIgc2V0IEJVSUxET1BUUz0lQlVJTERPUFRTJSAvcDpQR09CdWlsZFBhdGg9JUJVSUxEJQ0KK21zYnVpbGQgIiVEJWJ1bmRsZVxyZWxlYXNlbG9jYWwud2l4cHJvaiIgL3Q6UmVidWlsZCAlQlVJTERPUFRTJSAlQ0VSVE9QVFMlIC9wOlJlYnVpbGRBbGw9dHJ1ZQ0KK2lmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorbXNidWlsZCAiJUQlYnVuZGxlXHJlbGVhc2V3ZWIud2l4cHJvaiIgL3Q6UmVidWlsZCAlQlVJTERPUFRTJSAlQ0VSVE9QVFMlIC9wOlJlYnVpbGRBbGw9ZmFsc2UNCitpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKw0KK21zYnVpbGQgIiVEJW1ha2VfemlwLnByb2oiIC90OkJ1aWxkICVCVUlMRE9QVFMlICVDRVJUT1BUUyUNCisNCitpZiBub3QgIiVPVVRESVIlIiBFUVUgIiIgKA0KKyAgICBta2RpciAiJU9VVERJUiVcJU9VVERJUl9QTEFUJSINCisgICAgY29weSAvWSAiJUJVSUxEJWVuLXVzXCouY2FiIiAiJU9VVERJUiVcJU9VVERJUl9QTEFUJSINCisgICAgY29weSAvWSAiJUJVSUxEJWVuLXVzXCouZXhlIiAiJU9VVERJUiVcJU9VVERJUl9QTEFUJSINCisgICAgY29weSAvWSAiJUJVSUxEJWVuLXVzXCoubXNpIiAiJU9VVERJUiVcJU9VVERJUl9QTEFUJSINCisgICAgY29weSAvWSAiJUJVSUxEJWVuLXVzXCoubXN1IiAiJU9VVERJUiVcJU9VVERJUl9QTEFUJSINCispDQorDQorZXhpdCAvQiAwDQorDQorOkhlbHANCitlY2hvIGJ1aWxkcmVsZWFzZS5iYXQgWy0tb3V0IERJUl0gWy14ODZdIFsteDY0XSBbLS1jZXJ0aWZpY2F0ZSBDRVJUTkFNRV0gWy0tYnVpbGRdIFstLXNraXAtYnVpbGRdDQorZWNobyAgICAgICAgICAgICAgICAgIFstLXBnbyBDT01NQU5EXSBbLS1za2lwLWRvY10gWy0tZG93bmxvYWQgRE9XTkxPQUQgVVJMXSBbLS10ZXN0IFRBUkdFVERJUl0NCitlY2hvICAgICAgICAgICAgICAgICAgWy1oXQ0KK2VjaG8uDQorZWNobyAgICAtLW91dCAoLW8pICAgICAgICAgIFNwZWNpZnkgYW4gYWRkaXRpb25hbCBvdXRwdXQgZGlyZWN0b3J5IGZvciBpbnN0YWxsZXJzDQorZWNobyAgICAteDg2ICAgICAgICAgICAgICAgIEJ1aWxkIHg4NiBpbnN0YWxsZXJzDQorZWNobyAgICAteDY0ICAgICAgICAgICAgICAgIEJ1aWxkIHg2NCBpbnN0YWxsZXJzDQorZWNobyAgICAtLWJ1aWxkICgtYikgICAgICAgIEluY3JlbWVudGFsbHkgYnVpbGQgUHl0aG9uIHJhdGhlciB0aGFuIHJlYnVpbGRpbmcNCitlY2hvICAgIC0tc2tpcC1idWlsZCAoLUIpICAgRG8gbm90IGJ1aWxkIFB5dGhvbiAoanVzdCBkbyB0aGUgaW5zdGFsbGVycykNCitlY2hvICAgIC0tc2tpcC1kb2MgKC1EKSAgICAgRG8gbm90IGJ1aWxkIGRvY3VtZW50YXRpb24NCitlY2hvICAgIC0tcGdvICAgICAgICAgICAgICAgQnVpbGQgeDY0IGluc3RhbGxlcnMgdXNpbmcgUEdPDQorZWNobyAgICAtLWRvd25sb2FkICAgICAgICAgIFNwZWNpZnkgdGhlIGZ1bGwgZG93bmxvYWQgVVJMIGZvciBNU0lzDQorZWNobyAgICAtLXRlc3QgICAgICAgICAgICAgIFNwZWNpZnkgdGhlIHRlc3QgZGlyZWN0b3J5IHRvIHJ1biB0aGUgaW5zdGFsbGVyIHRlc3RzDQorZWNobyAgICAtaCAgICAgICAgICAgICAgICAgIERpc3BsYXkgdGhpcyBoZWxwIGluZm9ybWF0aW9uDQorZWNoby4NCitlY2hvIElmIG5vIGFyY2hpdGVjdHVyZSBpcyBzcGVjaWZpZWQsIGFsbCBhcmNoaXRlY3R1cmVzIHdpbGwgYmUgYnVpbHQuDQorZWNobyBJZiAtLXRlc3QgaXMgbm90IHNwZWNpZmllZCwgdGhlIGluc3RhbGxlciB0ZXN0cyBhcmUgbm90IHJ1bi4NCitlY2hvLg0KK2VjaG8gRm9yIHRoZSAtLXBnbyBvcHRpb24sIGFueSBQeXRob24gY29tbWFuZCBsaW5lIGNhbiBiZSB1c2VkIGFzIHdlbGwgYXMgdGhlDQorZWNobyBmb2xsb3dpbmcgc2hvcnRjdXRzOg0KK2VjaG8gICAgIFNob3J0Y3V0ICAgICAgICBEZXNjcmlwdGlvbg0KK2VjaG8gICAgIGRlZmF1bHQgICAgICAgICBUZXN0IHN1aXRlIHdpdGggLS1wZ28NCitlY2hvICAgICBkZWZhdWx0MiAgICAgICAgMnggdGVzdCBzdWl0ZSB3aXRoIC0tcGdvIGFuZCByYW5kb21pemVkIHRlc3Qgb3JkZXINCitlY2hvICAgICBkZWZhdWx0MTAgICAgICAgMTB4IHRlc3Qgc3VpdGUgd2l0aCAtLXBnbyBhbmQgcmFuZG9taXplZCB0ZXN0IG9yZGVyDQorZWNobyAgICAgcHliZW5jaCAgICAgICAgIHB5YmVuY2ggc2NyaXB0DQorZWNoby4NCitlY2hvIFRoZSBmb2xsb3dpbmcgc3Vic3RpdHV0aW9ucyB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIGRvd25sb2FkIFVSTDoNCitlY2hvICAgICBWYXJpYWJsZSAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICBFeGFtcGxlDQorZWNobyAgICAge3ZlcnNpb259ICAgICAgIHZlcnNpb24gbnVtYmVyICAgICAgMy41LjANCitlY2hvICAgICB7YXJjaH0gICAgICAgICAgYXJjaGl0ZWN0dXJlICAgICAgICBhbWQ2NCwgd2luMzINCitlY2hvICAgICB7cmVsZWFzZW5hbWV9ICAgcmVsZWFzZSBuYW1lICAgICAgICBhMSwgYjIsIHJjMyAob3IgYmxhbmsgZm9yIGZpbmFsKQ0KK2VjaG8gICAgIHttc2l9ICAgICAgICAgICBNU0kgZmlsZW5hbWUgICAgICAgIGNvcmUubXNpDQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0LnRobSBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC50aG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ5Yzk3YQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC50aG0KQEAgLTAsMCArMSwxMzYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8VGhlbWUgeG1sbnM9Imh0dHA6Ly93aXh0b29sc2V0Lm9yZy9zY2hlbWFzL3RobXV0aWwvMjAxMCI+CisgICAgPFdpbmRvdyBXaWR0aD0iNjcwIiBIZWlnaHQ9IjQxMiIgSGV4U3R5bGU9IjEwMGEwMDAwIiBGb250SWQ9IjAiPiMobG9jLkNhcHRpb24pPC9XaW5kb3c+CisgICAgPEZvbnQgSWQ9IjAiIEhlaWdodD0iLTE0IiBXZWlnaHQ9IjUwMCIgRm9yZWdyb3VuZD0iMDAwMDAwIiBCYWNrZ3JvdW5kPSJmZmZmZmYiPlNlZ29lIFVJPC9Gb250PgorICAgIDxGb250IElkPSIxIiBIZWlnaHQ9Ii0yNiIgV2VpZ2h0PSI1MDAiIEZvcmVncm91bmQ9IjAwMDAwMCIgQmFja2dyb3VuZD0iZmZmZmZmIj5TZWdvZSBVSTwvRm9udD4KKyAgICA8Rm9udCBJZD0iMiIgSGVpZ2h0PSItMjQiIFdlaWdodD0iNTAwIiBGb3JlZ3JvdW5kPSI4MDgwODAiIEJhY2tncm91bmQ9ImZmZmZmZiI+U2Vnb2UgVUk8L0ZvbnQ+CisgICAgPEZvbnQgSWQ9IjMiIEhlaWdodD0iLTE0IiBXZWlnaHQ9IjUwMCIgRm9yZWdyb3VuZD0iMDAwMDAwIiBCYWNrZ3JvdW5kPSJmZmZmZmYiPlNlZ29lIFVJPC9Gb250PgorICAgIDxGb250IElkPSI0IiBIZWlnaHQ9Ii0xNCIgV2VpZ2h0PSI1MDAiIEZvcmVncm91bmQ9ImZmMDAwMCIgQmFja2dyb3VuZD0iZmZmZmZmIiBVbmRlcmxpbmU9InllcyI+U2Vnb2UgVUk8L0ZvbnQ+CisgICAgPEZvbnQgSWQ9IjUiIEhlaWdodD0iLTE0IiBXZWlnaHQ9IjUwMCIgRm9yZWdyb3VuZD0iODA4MDgwIiBCYWNrZ3JvdW5kPSJmZmZmZmYiPlNlZ29lIFVJPC9Gb250PgorCisgICAgPFBhZ2UgTmFtZT0iSGVscCI+CisgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMzYiIEZvbnRJZD0iMSIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5IZWxwSGVhZGVyKTwvVGV4dD4KKyAgICAgICAgPEltYWdlIFg9IjAiIFk9IjAiIFdpZHRoPSIxNzgiIEhlaWdodD0iMzgyIiBJbWFnZUZpbGU9IlNpZGVCYXIucG5nIi8+CisKKyAgICAgICAgPEh5cGVydGV4dCBYPSIxODUiIFk9IjUwIiBXaWR0aD0iLTExIiBIZWlnaHQ9Ii0zNSIgRm9udElkPSIzIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLkhlbHBUZXh0KTwvSHlwZXJ0ZXh0PgorICAgICAgICA8QnV0dG9uIE5hbWU9IlN1Y2Nlc3NDYW5jZWxCdXR0b24iIFg9Ii0xMSIgWT0iLTExIiBXaWR0aD0iODUiIEhlaWdodD0iMjciIFRhYlN0b3A9InllcyIgRm9udElkPSIwIj4jKGxvYy5DbG9zZUJ1dHRvbik8L0J1dHRvbj4KKyAgICA8L1BhZ2U+CisgICAgPFBhZ2UgTmFtZT0iSW5zdGFsbCI+CisgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMzYiIEZvbnRJZD0iMSIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5JbnN0YWxsSGVhZGVyKTwvVGV4dD4KKyAgICAgICAgPEltYWdlIFg9IjAiIFk9IjAiIFdpZHRoPSIxNzgiIEhlaWdodD0iMzgyIiBJbWFnZUZpbGU9IlNpZGVCYXIucG5nIi8+CisKKyAgICAgICAgPFRleHQgWD0iMTg1IiBZPSI1MCIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSI1MCIgRm9udElkPSIzIiBUYWJTdG9wPSJ5ZXMiPiMobG9jLkluc3RhbGxNZXNzYWdlKTwvVGV4dD4KKworICAgICAgICA8QnV0dG9uIE5hbWU9Ikluc3RhbGxCdXR0b24iIFg9IjE4NSIgWT0iMTAxIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjEwOSIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhleFN0eWxlPSIweEUiPiMobG9jLkluc3RhbGxCdXR0b24pPC9CdXR0b24+CisgICAgICAgIDxCdXR0b24gTmFtZT0iSW5zdGFsbEN1c3RvbUJ1dHRvbiIgWD0iMTg1IiBZPSIyMjEiIFdpZHRoPSItMTEiIEhlaWdodD0iNTkiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIZXhTdHlsZT0iMHhFIj4jKGxvYy5JbnN0YWxsQ3VzdG9tQnV0dG9uKTwvQnV0dG9uPgorCisgICAgICAgIDxDaGVja2JveCBOYW1lPSJJbnN0YWxsTGF1bmNoZXJBbGxVc2VycyIgWD0iMTg1IiBZPSItMzciIFdpZHRoPSItMTAwIiBIZWlnaHQ9IjI0IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyI+Iyhsb2MuU2hvcnRJbnN0YWxsTGF1bmNoZXJBbGxVc2Vyc0xhYmVsKTwvQ2hlY2tib3g+CisgICAgICAgIDxDaGVja2JveCBOYW1lPSJQcmVwZW5kUGF0aCIgWD0iMTg1IiBZPSItMTMiIFdpZHRoPSItMTAwIiBIZWlnaHQ9IjI0IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyI+Iyhsb2MuU2hvcnRQcmVwZW5kUGF0aExhYmVsKTwvQ2hlY2tib3g+CisKKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJJbnN0YWxsQ2FuY2VsQnV0dG9uIiBYPSItMTEiIFk9Ii0xMSIgV2lkdGg9Ijg1IiBIZWlnaHQ9IjI3IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMCI+Iyhsb2MuQ2FuY2VsQnV0dG9uKTwvQnV0dG9uPgorICAgIDwvUGFnZT4KKyAgICA8UGFnZSBOYW1lPSJVcGdyYWRlIj4KKyAgICAgICAgPFRleHQgWD0iMTg1IiBZPSIxMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNiIgRm9udElkPSIxIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLkluc3RhbGxVcGdyYWRlSGVhZGVyKTwvVGV4dD4KKyAgICAgICAgPEltYWdlIFg9IjAiIFk9IjAiIFdpZHRoPSIxNzgiIEhlaWdodD0iMzgyIiBJbWFnZUZpbGU9IlNpZGVCYXIucG5nIi8+CisKKyAgICAgICAgPFRleHQgWD0iMTg1IiBZPSI1MCIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSI1MCIgRm9udElkPSIzIiBUYWJTdG9wPSJ5ZXMiPiMobG9jLkluc3RhbGxVcGdyYWRlTWVzc2FnZSk8L1RleHQ+CisKKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJJbnN0YWxsVXBncmFkZUJ1dHRvbiIgWD0iMTg1IiBZPSIxMDEiIFdpZHRoPSItMTEiIEhlaWdodD0iMTI5IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGV4U3R5bGU9IjB4RSI+Iyhsb2MuSW5zdGFsbFVwZ3JhZGVCdXR0b24pPC9CdXR0b24+CisgICAgICAgIDxCdXR0b24gTmFtZT0iSW5zdGFsbFVwZ3JhZGVDdXN0b21CdXR0b24iIFg9IjE4NSIgWT0iMjQxIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjU5IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGV4U3R5bGU9IjB4RSI+Iyhsb2MuSW5zdGFsbFVwZ3JhZGVDdXN0b21CdXR0b24pPC9CdXR0b24+CisKKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJJbnN0YWxsQ2FuY2VsQnV0dG9uIiBYPSItMTEiIFk9Ii0xMSIgV2lkdGg9Ijg1IiBIZWlnaHQ9IjI3IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMCI+Iyhsb2MuQ2FuY2VsQnV0dG9uKTwvQnV0dG9uPgorICAgIDwvUGFnZT4KKyAgICA8UGFnZSBOYW1lPSJTaW1wbGVJbnN0YWxsIj4KKyAgICAgICAgPFRleHQgWD0iMTg1IiBZPSIxMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNiIgRm9udElkPSIxIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLkluc3RhbGxIZWFkZXIpPC9UZXh0PgorICAgICAgICA8SW1hZ2UgWD0iMCIgWT0iMCIgV2lkdGg9IjE3OCIgSGVpZ2h0PSIzODIiIEltYWdlRmlsZT0iU2lkZUJhci5wbmciLz4KKworICAgICAgICA8QnV0dG9uIE5hbWU9Ikluc3RhbGxTaW1wbGVCdXR0b24iIFg9IjE4NSIgWT0iMTAxIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjEyOSIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyIgSGV4U3R5bGU9IjB4RiI+Iyhsb2MuSW5zdGFsbFNpbXBsZUJ1dHRvbik8L0J1dHRvbj4KKworICAgICAgICA8QnV0dG9uIE5hbWU9Ikluc3RhbGxDYW5jZWxCdXR0b24iIFg9Ii0xMSIgWT0iLTExIiBXaWR0aD0iODUiIEhlaWdodD0iMjciIFRhYlN0b3A9InllcyIgRm9udElkPSIwIj4jKGxvYy5DYW5jZWxCdXR0b24pPC9CdXR0b24+CisgICAgPC9QYWdlPgorICAgIDxQYWdlIE5hbWU9IkN1c3RvbTEiPgorICAgICAgICA8VGV4dCBYPSIxODUiIFk9IjExIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjM2IiBGb250SWQ9IjEiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuQ3VzdG9tMUhlYWRlcik8L1RleHQ+CisgICAgICAgIDxJbWFnZSBYPSIwIiBZPSIwIiBXaWR0aD0iMTc4IiBIZWlnaHQ9IjM4MiIgSW1hZ2VGaWxlPSJTaWRlQmFyLnBuZyIvPgorICAgICAgICAKKyAgICAgICAgPENoZWNrYm94IE5hbWU9IkluY2x1ZGVfZG9jIiBYPSIxODUiIFk9IjUxIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjI0IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIj4jKGxvYy5JbmNsdWRlX2RvY0xhYmVsKTwvQ2hlY2tib3g+CisgICAgICAgIDxUZXh0IFg9IjIwNSIgWT0iNzYiIFdpZHRoPSItMTEiIEhlaWdodD0iMjQiIFRhYlN0b3A9Im5vIiBGb250SWQ9IjUiPiMobG9jLkluY2x1ZGVfZG9jSGVscExhYmVsKTwvVGV4dD4KKyAgICAgICAgCisgICAgICAgIDxDaGVja2JveCBOYW1lPSJJbmNsdWRlX3BpcCIgWD0iMTg1IiBZPSIxMDEiIFdpZHRoPSItMTEiIEhlaWdodD0iMjQiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLkluY2x1ZGVfcGlwTGFiZWwpPC9DaGVja2JveD4KKyAgICAgICAgPFRleHQgWD0iMjA1IiBZPSIxMjYiIFdpZHRoPSItMTEiIEhlaWdodD0iMjQiIFRhYlN0b3A9Im5vIiBGb250SWQ9IjUiPiMobG9jLkluY2x1ZGVfcGlwSGVscExhYmVsKTwvVGV4dD4KKyAgICAgICAgCisgICAgICAgIDxDaGVja2JveCBOYW1lPSJJbmNsdWRlX3RjbHRrIiBYPSIxODUiIFk9IjE1MSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyNCIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuSW5jbHVkZV90Y2x0a0xhYmVsKTwvQ2hlY2tib3g+CisgICAgICAgIDxUZXh0IFg9IjIwNSIgWT0iMTc2IiBXaWR0aD0iLTExIiBIZWlnaHQ9IjI0IiBUYWJTdG9wPSJubyIgRm9udElkPSI1Ij4jKGxvYy5JbmNsdWRlX3RjbHRrSGVscExhYmVsKTwvVGV4dD4KKyAgICAgICAgCisgICAgICAgIDxDaGVja2JveCBOYW1lPSJJbmNsdWRlX3Rlc3QiIFg9IjE4NSIgWT0iMjAxIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjI0IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIj4jKGxvYy5JbmNsdWRlX3Rlc3RMYWJlbCk8L0NoZWNrYm94PgorICAgICAgICA8VGV4dCBYPSIyMDUiIFk9IjIyNiIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyNCIgVGFiU3RvcD0ibm8iIEZvbnRJZD0iNSI+Iyhsb2MuSW5jbHVkZV90ZXN0SGVscExhYmVsKTwvVGV4dD4KKworICAgICAgICA8Q2hlY2tib3ggTmFtZT0iSW5jbHVkZV9sYXVuY2hlciIgWD0iMTg1IiBZPSIyNTEiIFdpZHRoPSIxMDAiIEhlaWdodD0iMjQiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJubyI+Iyhsb2MuSW5jbHVkZV9sYXVuY2hlckxhYmVsKTwvQ2hlY2tib3g+CisgICAgICAgIDxDaGVja2JveCBOYW1lPSJDdXN0b21JbnN0YWxsTGF1bmNoZXJBbGxVc2VycyIgWD0iMjg1IiBZPSIyNTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMjQiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIj4jKGxvYy5JbnN0YWxsTGF1bmNoZXJBbGxVc2Vyc0xhYmVsKTwvQ2hlY2tib3g+CisgICAgICAgIDxUZXh0IE5hbWU9IkluY2x1ZGVfbGF1bmNoZXJIZWxwIiBYPSIyMDUiIFk9IjI3NiIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyNCIgVGFiU3RvcD0ibm8iIEZvbnRJZD0iNSI+PC9UZXh0PgorCisgICAgICAgIDxCdXR0b24gTmFtZT0iQ3VzdG9tMUJhY2tCdXR0b24iIFg9IjE4NSIgWT0iLTExIiBXaWR0aD0iODUiIEhlaWdodD0iMjciIFRhYlN0b3A9InllcyIgRm9udElkPSIwIj4jKGxvYy5DdXN0b21CYWNrQnV0dG9uKTwvQnV0dG9uPgorICAgICAgICA8QnV0dG9uIE5hbWU9IkN1c3RvbU5leHRCdXR0b24iIFg9Ii0xMDEiIFk9Ii0xMSIgV2lkdGg9Ijg1IiBIZWlnaHQ9IjI3IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMCI+Iyhsb2MuQ3VzdG9tTmV4dEJ1dHRvbik8L0J1dHRvbj4KKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJDdXN0b20xQ2FuY2VsQnV0dG9uIiBYPSItMTEiIFk9Ii0xMSIgV2lkdGg9Ijg1IiBIZWlnaHQ9IjI3IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMCI+Iyhsb2MuQ2FuY2VsQnV0dG9uKTwvQnV0dG9uPgorICAgIDwvUGFnZT4KKyAgICA8UGFnZSBOYW1lPSJDdXN0b20yIj4KKyAgICAgICAgPFRleHQgWD0iMTg1IiBZPSIxMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNiIgRm9udElkPSIxIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLkN1c3RvbTJIZWFkZXIpPC9UZXh0PgorICAgICAgICA8SW1hZ2UgWD0iMCIgWT0iMCIgV2lkdGg9IjE3OCIgSGVpZ2h0PSIzODIiIEltYWdlRmlsZT0iU2lkZUJhci5wbmciLz4KKyAgICAgICAgCisgICAgICAgIDxDaGVja2JveCBOYW1lPSJJbnN0YWxsQWxsVXNlcnMiIFg9IjE4NSIgWT0iNTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMjQiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJubyI+Iyhsb2MuSW5zdGFsbEFsbFVzZXJzTGFiZWwpPC9DaGVja2JveD4KKyAgICAgICAgPENoZWNrYm94IE5hbWU9IkFzc29jaWF0ZUZpbGVzIiBYPSIxODUiIFk9Ijc2IiBXaWR0aD0iLTExIiBIZWlnaHQ9IjI0IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ibm8iPiMobG9jLkFzc29jaWF0ZUZpbGVzTGFiZWwpPC9DaGVja2JveD4KKyAgICAgICAgPENoZWNrYm94IE5hbWU9IlNob3J0Y3V0cyIgWD0iMTg1IiBZPSIxMDEiIFdpZHRoPSItMTEiIEhlaWdodD0iMjQiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJubyI+Iyhsb2MuU2hvcnRjdXRzTGFiZWwpPC9DaGVja2JveD4KKyAgICAgICAgPENoZWNrYm94IE5hbWU9IlByZXBlbmRQYXRoIiBYPSIxODUiIFk9IjEyNiIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyNCIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9Im5vIj4jKGxvYy5QcmVwZW5kUGF0aExhYmVsKTwvQ2hlY2tib3g+CisgICAgICAgIDxDaGVja2JveCBOYW1lPSJDb21waWxlQWxsIiBYPSIxODUiIFk9IjE1MSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyNCIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9Im5vIj4jKGxvYy5QcmVjb21waWxlTGFiZWwpPC9DaGVja2JveD4KKyAgICAgICAgPENoZWNrYm94IE5hbWU9IkluY2x1ZGVfc3ltYm9scyIgWD0iMTg1IiBZPSIxNzYiIFdpZHRoPSItMTEiIEhlaWdodD0iMjQiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJubyI+Iyhsb2MuSW5jbHVkZV9zeW1ib2xzTGFiZWwpPC9DaGVja2JveD4KKyAgICAgICAgPENoZWNrYm94IE5hbWU9IkluY2x1ZGVfZGVidWciIFg9IjE4NSIgWT0iMjAxIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjI0IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ibm8iPiMobG9jLkluY2x1ZGVfZGVidWdMYWJlbCk8L0NoZWNrYm94PgorCisgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMjU2IiBXaWR0aD0iLTExIiBIZWlnaHQ9IjE3IiBGb250SWQ9IjMiPiMobG9jLkN1c3RvbUxvY2F0aW9uTGFiZWwpPC9UZXh0PgorICAgICAgICA8RWRpdGJveCBOYW1lPSJUYXJnZXREaXIiIFg9IjE4NSIgWT0iMjc3IiBXaWR0aD0iLTEwMSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEZpbGVTeXN0ZW1BdXRvQ29tcGxldGU9InllcyIgLz4KKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJDdXN0b21Ccm93c2VCdXR0b24iIFg9Ii0xMSIgWT0iMjc2IiBXaWR0aD0iODUiIEhlaWdodD0iMjciIFRhYlN0b3A9InllcyIgRm9udElkPSIzIj4jKGxvYy5DdXN0b21Ccm93c2VCdXR0b24pPC9CdXR0b24+CisgICAgICAgIDxUZXh0IE5hbWU9IkN1c3RvbUJyb3dzZUJ1dHRvbkxhYmVsIiBYPSIxODUiIFk9IjMwNiIgV2lkdGg9Ii05MSIgSGVpZ2h0PSIzNSIgRm9udElkPSI1IiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLkN1c3RvbUxvY2F0aW9uSGVscExhYmVsKTwvVGV4dD4KKworICAgICAgICA8QnV0dG9uIE5hbWU9IkN1c3RvbTJCYWNrQnV0dG9uIiBYPSIxODUiIFk9Ii0xMSIgV2lkdGg9Ijg1IiBIZWlnaHQ9IjI3IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMCI+Iyhsb2MuQ3VzdG9tQmFja0J1dHRvbik8L0J1dHRvbj4KKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJDdXN0b21JbnN0YWxsQnV0dG9uIiBYPSItMTAxIiBZPSItMTEiIFdpZHRoPSI5NSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiPiMobG9jLkN1c3RvbUluc3RhbGxCdXR0b24pPC9CdXR0b24+CisgICAgICAgIDxCdXR0b24gTmFtZT0iQ3VzdG9tMkNhbmNlbEJ1dHRvbiIgWD0iLTExIiBZPSItMTEiIFdpZHRoPSI4NSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiPiMobG9jLkNhbmNlbEJ1dHRvbik8L0J1dHRvbj4KKyAgICA8L1BhZ2U+CisgICAgPFBhZ2UgTmFtZT0iUHJvZ3Jlc3MiPgorICAgICAgICA8VGV4dCBYPSIxODUiIFk9IjExIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjM2IiBGb250SWQ9IjEiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuUHJvZ3Jlc3NIZWFkZXIpPC9UZXh0PgorICAgICAgICA8SW1hZ2UgWD0iMCIgWT0iMCIgV2lkdGg9IjE3OCIgSGVpZ2h0PSIzODIiIEltYWdlRmlsZT0iU2lkZUJhci5wbmciLz4KKworICAgICAgICA8VGV4dCBYPSIxODUiIFk9IjExMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyMCIgRm9udElkPSIzIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLlByb2dyZXNzTGFiZWwpPC9UZXh0PgorICAgICAgICA8VGV4dCBOYW1lPSJPdmVyYWxsUHJvZ3Jlc3NQYWNrYWdlVGV4dCIgWD0iMTg1IiBZPSIxNDYiIFdpZHRoPSItMTEiIEhlaWdodD0iMjAiIEZvbnRJZD0iMyIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5PdmVyYWxsUHJvZ3Jlc3NQYWNrYWdlVGV4dCk8L1RleHQ+CisgICAgICAgIDxQcm9ncmVzc2JhciBOYW1lPSJPdmVyYWxsQ2FsY3VsYXRlZFByb2dyZXNzYmFyIiBYPSIxODUiIFk9IjE3MSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyNCIgLz4KKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJQcm9ncmVzc0NhbmNlbEJ1dHRvbiIgWD0iLTExIiBZPSItMTEiIFdpZHRoPSI5NSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiPiMobG9jLkNhbmNlbEJ1dHRvbik8L0J1dHRvbj4KKyAgICA8L1BhZ2U+CisgICAgPFBhZ2UgTmFtZT0iTW9kaWZ5Ij4KKyAgICAgICAgPFRleHQgWD0iMTg1IiBZPSIxMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNiIgRm9udElkPSIxIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLk1vZGlmeUhlYWRlcik8L1RleHQ+CisgICAgICAgIDxJbWFnZSBYPSIwIiBZPSIwIiBXaWR0aD0iMTc4IiBIZWlnaHQ9IjM4MiIgSW1hZ2VGaWxlPSJTaWRlQmFyLnBuZyIvPgorCisgICAgICAgIDxCdXR0b24gTmFtZT0iTW9kaWZ5QnV0dG9uIiBYPSIxODUiIFk9IjEwMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSI1OSIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhleFN0eWxlPSIweEYiPiMobG9jLk1vZGlmeU1vZGlmeUJ1dHRvbik8L0J1dHRvbj4KKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJSZXBhaXJCdXR0b24iIFg9IjE4NSIgWT0iMTcxIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjU5IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGV4U3R5bGU9IjB4RSI+Iyhsb2MuTW9kaWZ5UmVwYWlyQnV0dG9uKTwvQnV0dG9uPgorICAgICAgICA8QnV0dG9uIE5hbWU9IlVuaW5zdGFsbEJ1dHRvbiIgWD0iMTg1IiBZPSIyNDEiIFdpZHRoPSItMTEiIEhlaWdodD0iNTkiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIZXhTdHlsZT0iMHhFIj4jKGxvYy5Nb2RpZnlVbmluc3RhbGxCdXR0b24pPC9CdXR0b24+CisKKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJNb2RpZnlDYW5jZWxCdXR0b24iIFg9Ii0xMSIgWT0iLTExIiBXaWR0aD0iODUiIEhlaWdodD0iMjciIFRhYlN0b3A9InllcyIgRm9udElkPSIwIj4jKGxvYy5DYW5jZWxCdXR0b24pPC9CdXR0b24+CisgICAgPC9QYWdlPgorICAgIDxQYWdlIE5hbWU9IlN1Y2Nlc3MiPgorICAgICAgICA8VGV4dCBYPSIxODUiIFk9IjExIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjM2IiBGb250SWQ9IjEiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuU3VjY2Vzc0hlYWRlcik8L1RleHQ+CisgICAgICAgIDxJbWFnZSBYPSIwIiBZPSIwIiBXaWR0aD0iMTc4IiBIZWlnaHQ9IjM4MiIgSW1hZ2VGaWxlPSJTaWRlQmFyLnBuZyIvPgorCisgICAgICAgIDxIeXBlcnRleHQgTmFtZT0iU3VjY2Vzc1RleHQiIFg9IjIwNSIgWT0iNzEiIFdpZHRoPSItMzEiIEhlaWdodD0iMTAwIiBGb250SWQ9IjMiIERpc2FibGVQcmVmaXg9InllcyI+PC9IeXBlcnRleHQ+CisKKyAgICAgICAgPFRleHQgTmFtZT0iU3VjY2Vzc1Jlc3RhcnRUZXh0IiBYPSIyMDUiIFk9Ii0xMDAiIFdpZHRoPSItMTEiIEhlaWdodD0iMzQiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLlN1Y2Nlc3NSZXN0YXJ0VGV4dCk8L1RleHQ+CisgICAgICAgIDxCdXR0b24gTmFtZT0iTGF1bmNoQnV0dG9uIiBYPSIxODUiIFk9Ii01MCIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSI1OSIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhleFN0eWxlPSIweEYiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuU3VjY2Vzc0xhdW5jaEJ1dHRvbik8L0J1dHRvbj4KKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJTdWNjZXNzUmVzdGFydEJ1dHRvbiIgWD0iLTEwMSIgWT0iLTExIiBXaWR0aD0iODUiIEhlaWdodD0iMjciIFRhYlN0b3A9InllcyIgRm9udElkPSIwIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLlN1Y2Nlc3NSZXN0YXJ0QnV0dG9uKTwvQnV0dG9uPgorICAgICAgICA8QnV0dG9uIE5hbWU9IlN1Y2Nlc3NDYW5jZWxCdXR0b24iIFg9Ii0xMSIgWT0iLTExIiBXaWR0aD0iODUiIEhlaWdodD0iMjciIFRhYlN0b3A9InllcyIgRm9udElkPSIwIj4jKGxvYy5DbG9zZUJ1dHRvbik8L0J1dHRvbj4KKyAgICA8L1BhZ2U+CisgICAgPFBhZ2UgTmFtZT0iRmFpbHVyZSI+CisgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMzYiIEZvbnRJZD0iMSIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5GYWlsdXJlSGVhZGVyKTwvVGV4dD4KKyAgICAgICAgPEltYWdlIFg9IjAiIFk9IjAiIFdpZHRoPSIxNzgiIEhlaWdodD0iMzgyIiBJbWFnZUZpbGU9IlNpZGVCYXIucG5nIi8+CisKKyAgICAgICAgPEh5cGVydGV4dCBOYW1lPSJGYWlsdXJlTG9nRmlsZUxpbmsiIFg9IjIwNSIgWT0iNzEiIFdpZHRoPSItMTEiIEhlaWdodD0iNjAiIEZvbnRJZD0iMyIgVGFiU3RvcD0ieWVzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLkZhaWx1cmVIeXBlcmxpbmtMb2dUZXh0KTwvSHlwZXJ0ZXh0PgorICAgICAgICA8SHlwZXJ0ZXh0IE5hbWU9IkZhaWx1cmVNZXNzYWdlVGV4dCIgWD0iMjA1IiBZPSIxNTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMTIwIiBGb250SWQ9IjMiIFRhYlN0b3A9InllcyIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIj48L0h5cGVydGV4dD4KKyAgICAgICAgPFRleHQgTmFtZT0iRmFpbHVyZVJlc3RhcnRUZXh0IiBYPSIyMDUiIFk9Ii00MCIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNCIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuRmFpbHVyZVJlc3RhcnRUZXh0KTwvVGV4dD4KKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJGYWlsdXJlUmVzdGFydEJ1dHRvbiIgWD0iLTEwMSIgWT0iLTExIiBXaWR0aD0iODUiIEhlaWdodD0iMjciIFRhYlN0b3A9InllcyIgRm9udElkPSIwIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLkZhaWx1cmVSZXN0YXJ0QnV0dG9uKTwvQnV0dG9uPgorICAgICAgICA8QnV0dG9uIE5hbWU9IkZhaWx1cmVDYW5jZWxCdXR0b24iIFg9Ii0xMSIgWT0iLTExIiBXaWR0aD0iODUiIEhlaWdodD0iMjciIFRhYlN0b3A9InllcyIgRm9udElkPSIwIj4jKGxvYy5DbG9zZUJ1dHRvbik8L0J1dHRvbj4KKyAgICA8L1BhZ2U+Cis8L1RoZW1lPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC53eGwgYi9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQud3hsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5NzA2NmIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQud3hsCkBAIC0wLDAgKzEsMTM1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgTGFuZ3VhZ2U9IjEwMzMiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L2xvY2FsaXphdGlvbiI+CisgIDxTdHJpbmcgSWQ9IkNhcHRpb24iPltXaXhCdW5kbGVOYW1lXSBTZXR1cDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJUaXRsZSI+W1dpeEJ1bmRsZU5hbWVdPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxpbmciPkluc3RhbGxpbmc8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbGF0aW9uIj5TZXR1cDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJNb2RpZnlpbmciPlVwZGF0aW5nPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ik1vZGlmaWNhdGlvbiI+TW9kaWZ5PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlJlcGFpcmluZyI+UmVwYWlyaW5nPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlJlcGFpciI+UmVwYWlyPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlVuaW5zdGFsbGluZyI+UmVtb3Zpbmc8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iVW5pbnN0YWxsYXRpb24iPlVuaW5zdGFsbDwvU3RyaW5nPgorICAKKyAgPFN0cmluZyBJZD0iRWxldmF0ZUZvckNSVEluc3RhbGwiPllvdSB3aWxsIGJlIHByb21wdGVkIGZvciBBZG1pbmlzdHJhdG9yIHByaXZpbGVnZXMgdG8gaW5zdGFsbCBhIEMgUnVudGltZSBMaWJyYXJ5IHVwZGF0ZSAoS0IyOTk5MjI2KS4KKworCitDb250aW51ZT88L1N0cmluZz4KKyAgCisgIDxTdHJpbmcgSWQ9IkNhbmNlbEJ1dHRvbiI+JmFtcDtDYW5jZWw8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iQ2xvc2VCdXR0b24iPiZhbXA7Q2xvc2U8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbEhlYWRlciI+SW5zdGFsbCBbV2l4QnVuZGxlTmFtZV08L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbE1lc3NhZ2UiPlNlbGVjdCBJbnN0YWxsIE5vdyB0byBpbnN0YWxsIFB5dGhvbiB3aXRoIGRlZmF1bHQgc2V0dGluZ3MsIG9yIGNob29zZSBDdXN0b21pemUgdG8gZW5hYmxlIG9yIGRpc2FibGUgZmVhdHVyZXMuPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxWZXJzaW9uIj5WZXJzaW9uIFtXaXhCdW5kbGVWZXJzaW9uXTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsVXBncmFkZUhlYWRlciI+VXBncmFkZSB0byBbV2l4QnVuZGxlTmFtZV08L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbFVwZ3JhZGVNZXNzYWdlIj5TZWxlY3QgVXBncmFkZSBOb3cgdG8ga2VlcCB5b3VyIGN1cnJlbnQgc2V0dGluZ3MsIG9yIGNob29zZSBDdXN0b21pemUgdG8gZW5hYmxlIG9yIGRpc2FibGUgZmVhdHVyZXMuPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkNvbmZpcm1DYW5jZWxNZXNzYWdlIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2FuY2VsPzwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJFeGVjdXRlVXBncmFkZVJlbGF0ZWRCdW5kbGVNZXNzYWdlIj5QcmV2aW91cyB2ZXJzaW9uPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkhlbHBIZWFkZXIiPlNldHVwIEhlbHA8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSGVscFRleHQiPlZpc2l0ICZsdDthIGhyZWY9Imh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvW1Nob3J0VmVyc2lvbl0vdXNpbmcvd2luZG93cy5odG1sIiZndDtkb2NzLnB5dGhvbi5vcmcvW1Nob3J0VmVyc2lvbl0vdXNpbmcvd2luZG93cy5odG1sJmx0Oy9hJmd0OyBmb3IgdGhlIGZ1bGwgbGlzdCBvZiBvcHRpb25zLCBpbmNsdWRpbmcgdGhlIGFiaWxpdHkgdG8gZW5hYmxlIGFuZCBkaXNhYmxlIHNwZWNpZmljIGZlYXR1cmVzLgorCisiL3Bhc3NpdmUiIHRvIGRpc3BsYXkgcHJvZ3Jlc3Mgd2l0aG91dCByZXF1aXJpbmcgdXNlciBpbnRlcmFjdGlvbgorCisiL3F1aWV0IiB0byBpbnN0YWxsL3VuaW5zdGFsbCB3aXRob3V0IGRpc3BsYXlpbmcgYW55IFVJCisKKyIvc2ltcGxlIiB0byBwcmV2ZW50IHVzZXIgY3VzdG9taXphdGlvbgorCisiL3VuaW5zdGFsbCIgdG8gcmVtb3ZlIFB5dGhvbiAod2l0aG91dCBjb25maXJtYXRpb24pCisKKyIvbGF5b3V0IFtcW11kaXJlY3RvcnlbXF1dIiB0byBwcmUtZG93bmxvYWQgYWxsIGNvbXBvbmVudHMKKworIi9sb2cgW1xbXWZpbGVuYW1lW1xdXSIgdG8gc3BlY2lmeSBsb2cgZmlsZXMgbG9jYXRpb248L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbExpY2Vuc2VMaW5rVGV4dCI+W1dpeEJ1bmRsZU5hbWVdICZsdDthIGhyZWY9IiMiJmd0O2xpY2Vuc2UgdGVybXMmbHQ7L2EmZ3Q7LjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsQWNjZXB0Q2hlY2tib3giPkkgJmFtcDthZ3JlZSB0byB0aGUgbGljZW5zZSB0ZXJtcyBhbmQgY29uZGl0aW9uczwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsQnV0dG9uIj4mYW1wO0luc3RhbGwgTm93PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxCdXR0b25Ob3RlIj5bVGFyZ2V0RGlyXQorCitJbmNsdWRlcyBJRExFLCBwaXAgYW5kIGRvY3VtZW50YXRpb24KK0NyZWF0ZXMgc2hvcnRjdXRzIGFuZCBmaWxlIGFzc29jaWF0aW9uczwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsQ3VzdG9tQnV0dG9uIj5DJmFtcDt1c3RvbWl6ZSBpbnN0YWxsYXRpb248L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbEN1c3RvbUJ1dHRvbk5vdGUiPkNob29zZSBsb2NhdGlvbiBhbmQgZmVhdHVyZXM8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbFNpbXBsZUJ1dHRvbiI+JmFtcDtJbnN0YWxsPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxTaW1wbGVCdXR0b25Ob3RlIj5Vc2Ugc2V0dGluZ3MgcHJlc2VsZWN0ZWQgYnkgeW91ciBhZG1pbmlzdHJhdG9yCisKK1tTaW1wbGVJbnN0YWxsRGVzY3JpcHRpb25dPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxVcGdyYWRlQnV0dG9uIj5VcCZhbXA7Z3JhZGUgTm93PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxVcGdyYWRlQnV0dG9uTm90ZSI+W1RhcmdldERpcl0KKworUmVwbGFjZXMgeW91ciBleGlzdGluZyBpbnN0YWxsYXRpb24gd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KK1NlbGVjdCBDdXN0b21pemUgdG8gcmV2aWV3IGN1cnJlbnQgb3B0aW9ucy48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbFVwZ3JhZGVDdXN0b21CdXR0b24iPkMmYW1wO3VzdG9taXplIGluc3RhbGxhdGlvbjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsVXBncmFkZUN1c3RvbUJ1dHRvbk5vdGUiPkNob29zZSBsb2NhdGlvbiBhbmQgZmVhdHVyZXM8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iQ3VzdG9tMUhlYWRlciI+T3B0aW9uYWwgRmVhdHVyZXM8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iQ3VzdG9tMkhlYWRlciI+QWR2YW5jZWQgT3B0aW9uczwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDdXN0b21Mb2NhdGlvbkxhYmVsIj5DdXN0b21pemUgaW5zdGFsbCBsb2NhdGlvbjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDdXN0b21Mb2NhdGlvbkhlbHBMYWJlbCI+WW91IHdpbGwgcmVxdWlyZSB3cml0ZSBwZXJtaXNzaW9ucyBmb3IgdGhlIHNlbGVjdGVkIGxvY2F0aW9uLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDdXN0b21JbnN0YWxsQnV0dG9uIj4mYW1wO0luc3RhbGw8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iQ3VzdG9tTmV4dEJ1dHRvbiI+JmFtcDtOZXh0PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkN1c3RvbUJhY2tCdXR0b24iPiZhbXA7QmFjazwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDdXN0b21Ccm93c2VCdXR0b24iPkImYW1wO3Jvd3NlPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfZG9jTGFiZWwiPiZhbXA7RG9jdW1lbnRhdGlvbjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbmNsdWRlX2RvY0hlbHBMYWJlbCI+SW5zdGFsbHMgdGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uIGZpbGUuPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfcGlwTGFiZWwiPiZhbXA7cGlwPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfcGlwSGVscExhYmVsIj5JbnN0YWxscyBwaXAsIHdoaWNoIGNhbiBkb3dubG9hZCBhbmQgaW5zdGFsbCBvdGhlciBQeXRob24gcGFja2FnZXMuPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfdGNsdGtMYWJlbCI+dGNsL3RrIGFuZCAmYW1wO0lETEU8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5jbHVkZV90Y2x0a0hlbHBMYWJlbCI+SW5zdGFsbHMgdGtpbnRlciBhbmQgdGhlIElETEUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfdGVzdExhYmVsIj5QeXRob24gJmFtcDt0ZXN0IHN1aXRlPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfdGVzdEhlbHBMYWJlbCI+SW5zdGFsbHMgdGhlIHN0YW5kYXJkIGxpYnJhcnkgdGVzdCBzdWl0ZS48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5jbHVkZV9sYXVuY2hlckxhYmVsIj5weSAmYW1wO2xhdW5jaGVyPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfbGF1bmNoZXJIZWxwIj5JbnN0YWxscyB0aGUgZ2xvYmFsICdweScgbGF1bmNoZXIgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc3RhcnQgUHl0aG9uLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbmNsdWRlX2xhdW5jaGVyUmVtb3ZlIj5Vc2UgUHJvZ3JhbXMgYW5kIEZlYXR1cmVzIHRvIHJlbW92ZSB0aGUgJ3B5JyBsYXVuY2hlci48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5jbHVkZV9sYXVuY2hlclVwZ3JhZGUiPlVwZ3JhZGVzIHRoZSBnbG9iYWwgJ3B5JyBsYXVuY2hlciBmcm9tIHRoZSBwcmV2aW91cyB2ZXJzaW9uLjwvU3RyaW5nPgorICAKKyAgPFN0cmluZyBJZD0iQXNzb2NpYXRlRmlsZXNMYWJlbCI+QXNzb2NpYXRlICZhbXA7ZmlsZXMgd2l0aCBQeXRob24gKHJlcXVpcmVzIHRoZSBweSBsYXVuY2hlcik8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iU2hvcnRjdXRzTGFiZWwiPkNyZWF0ZSBzaG9ydGN1dHMgZm9yIGluc3RhbGxlZCBhcHBsaWNhdGlvbnM8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iUHJlcGVuZFBhdGhMYWJlbCI+QWRkIFB5dGhvbiB0byAmYW1wO2Vudmlyb25tZW50IHZhcmlhYmxlczwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTaG9ydFByZXBlbmRQYXRoTGFiZWwiPkFkZCAmYW1wO1B5dGhvbiBbU2hvcnRWZXJzaW9uXSB0byBQQVRIPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxBbGxVc2Vyc0xhYmVsIj5JbnN0YWxsIGZvciAmYW1wO2FsbCB1c2VyczwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsTGF1bmNoZXJBbGxVc2Vyc0xhYmVsIj5mb3IgJmFtcDthbGwgdXNlcnMgKHJlcXVpcmVzIGVsZXZhdGlvbik8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iU2hvcnRJbnN0YWxsTGF1bmNoZXJBbGxVc2Vyc0xhYmVsIj5JbnN0YWxsICZhbXA7bGF1bmNoZXIgZm9yIGFsbCB1c2VycyAocmVjb21tZW5kZWQpPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlByZWNvbXBpbGVMYWJlbCI+JmFtcDtQcmVjb21waWxlIHN0YW5kYXJkIGxpYnJhcnk8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5jbHVkZV9zeW1ib2xzTGFiZWwiPkRvd25sb2FkIGRlYnVnZ2luZyAmYW1wO3N5bWJvbHM8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5jbHVkZV9kZWJ1Z0xhYmVsIj5Eb3dubG9hZCBkZWJ1JmFtcDtnIGJpbmFyaWVzIChyZXF1aXJlcyBWUyAyMDE1IG9yIGxhdGVyKTwvU3RyaW5nPgorICAKKyAgPFN0cmluZyBJZD0iUHJvZ3Jlc3NIZWFkZXIiPltBY3Rpb25MaWtlSW5zdGFsbGF0aW9uXSBQcm9ncmVzczwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJQcm9ncmVzc0xhYmVsIj5bQWN0aW9uTGlrZUluc3RhbGxpbmddOjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJPdmVyYWxsUHJvZ3Jlc3NQYWNrYWdlVGV4dCI+SW5pdGlhbGl6aW5nLi4uPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ik1vZGlmeUhlYWRlciI+TW9kaWZ5IFNldHVwPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ik1vZGlmeU1vZGlmeUJ1dHRvbiI+JmFtcDtNb2RpZnk8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iTW9kaWZ5QnV0dG9uTm90ZSI+QWRkIG9yIHJlbW92ZSBpbmRpdmlkdWFsIGZlYXR1cmVzLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJNb2RpZnlSZXBhaXJCdXR0b24iPiZhbXA7UmVwYWlyPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlJlcGFpckJ1dHRvbk5vdGUiPkVuc3VyZSBhbGwgY3VycmVudCBmZWF0dXJlcyBhcmUgY29ycmVjdGx5IGluc3RhbGxlZC48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iTW9kaWZ5VW5pbnN0YWxsQnV0dG9uIj4mYW1wO1VuaW5zdGFsbDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJVbmluc3RhbGxCdXR0b25Ob3RlIj5SZW1vdmUgdGhlIGVudGlyZSBbV2l4QnVuZGxlTmFtZV0gaW5zdGFsbGF0aW9uLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTdWNjZXNzSGVhZGVyIj5bQWN0aW9uTGlrZUluc3RhbGxhdGlvbl0gd2FzIHN1Y2Nlc3NmdWw8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iU3VjY2Vzc0xhdW5jaEJ1dHRvbiI+JmFtcDtMYXVuY2g8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iU3VjY2Vzc1Jlc3RhcnRUZXh0Ij5Zb3UgbWF5IG5lZWQgdG8gcmVzdGFydCB5b3VyIGNvbXB1dGVyIHRvIGZpbmlzaCB1cGRhdGluZyBmaWxlcy48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iU3VjY2Vzc1Jlc3RhcnRCdXR0b24iPiZhbXA7UmVzdGFydDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTdWNjZXNzSW5zdGFsbE1lc3NhZ2UiPlNwZWNpYWwgdGhhbmtzIHRvIE1hcmsgSGFtbW9uZCwgd2l0aG91dCB3aG9zZSB5ZWFycyBvZiBmcmVlbHkgc2hhcmVkIFdpbmRvd3MgZXhwZXJ0aXNlLCBQeXRob24gZm9yIFdpbmRvd3Mgd291bGQgc3RpbGwgYmUgUHl0aG9uIGZvciBET1MuCisKK05ldyB0byBQeXRob24/IFN0YXJ0IHdpdGggdGhlICZsdDthIGhyZWY9Imh0dHBzOi8vZG9jcy5weXRob24ub3JnL1tTaG9ydFZlcnNpb25dL3R1dG9yaWFsL2luZGV4Lmh0bWwiJmd0O29ubGluZSB0dXRvcmlhbCZsdDsvYSZndDsgYW5kICZsdDthIGhyZWY9Imh0dHBzOi8vZG9jcy5weXRob24ub3JnL1tTaG9ydFZlcnNpb25dL2luZGV4Lmh0bWwiJmd0O2RvY3VtZW50YXRpb24mbHQ7L2EmZ3Q7LgorCitTZWUgJmx0O2EgaHJlZj0iaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvW1Nob3J0VmVyc2lvbl0vd2hhdHNuZXcvW1Nob3J0VmVyc2lvbl0uaHRtbCImZ3Q7d2hhdCdzIG5ldyZsdDsvYSZndDsgaW4gdGhpcyByZWxlYXNlLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTdWNjZXNzTW9kaWZ5TWVzc2FnZSI+VGhhbmsgeW91IGZvciB1c2luZyBbV2l4QnVuZGxlTmFtZV0uPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlN1Y2Nlc3NSZXBhaXJNZXNzYWdlIj5UaGFuayB5b3UgZm9yIHVzaW5nIFtXaXhCdW5kbGVOYW1lXS4KKworRmVlbCBmcmVlIHRvIGVtYWlsICZsdDthIGhyZWY9Im1haWx0bzpweXRob24tbGlzdEBweXRob24ub3JnIiZndDtweXRob24tbGlzdEBweXRob24ub3JnJmx0Oy9hJmd0OyBpZiB5b3UgY29udGludWUgdG8gZW5jb3VudGVyIGlzc3Vlcy48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iU3VjY2Vzc1JlbW92ZU1lc3NhZ2UiPlRoYW5rIHlvdSBmb3IgdXNpbmcgW1dpeEJ1bmRsZU5hbWVdLgorCitGZWVsIGZyZWUgdG8gZW1haWwgJmx0O2EgaHJlZj0ibWFpbHRvOnB5dGhvbi1saXN0QHB5dGhvbi5vcmciJmd0O3B5dGhvbi1saXN0QHB5dGhvbi5vcmcmbHQ7L2EmZ3Q7IGlmIHlvdSBlbmNvdW50ZXJlZCBwcm9ibGVtcy48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iRmFpbHVyZUhlYWRlciI+U2V0dXAgZmFpbGVkPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkZhaWx1cmVIeXBlcmxpbmtMb2dUZXh0Ij5PbmUgb3IgbW9yZSBpc3N1ZXMgY2F1c2VkIHRoZSBzZXR1cCB0byBmYWlsLiBQbGVhc2UgZml4IHRoZSBpc3N1ZXMgYW5kIHRoZW4gcmV0cnkgc2V0dXAuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUgJmx0O2EgaHJlZj0iIyImZ3Q7bG9nIGZpbGUmbHQ7L2EmZ3Q7LjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJGYWlsdXJlUmVzdGFydFRleHQiPllvdSBtdXN0IHJlc3RhcnQgeW91ciBjb21wdXRlciB0byBjb21wbGV0ZSB0aGUgcm9sbGJhY2sgb2YgdGhlIHNvZnR3YXJlLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJGYWlsdXJlUmVzdGFydEJ1dHRvbiI+JmFtcDtSZXN0YXJ0PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkZhaWx1cmVFeGlzdGluZ0luc3RhbGwiPlVuYWJsZSB0byBpbnN0YWxsIFtXaXhCdW5kbGVOYW1lXSBkdWUgdG8gYW4gZXhpc3RpbmcgaW5zdGFsbC4gVXNlIFByb2dyYW1zIGFuZCBGZWF0dXJlcyB0byBtb2RpZnksIHJlcGFpciBvciByZW1vdmUgW1dpeEJ1bmRsZU5hbWVdLjwvU3RyaW5nPgorICAKKyAgPFN0cmluZyBJZD0iRmFpbHVyZVdpbjdNaXNzaW5nU1AxIj5XaW5kb3dzIDcgU2VydmljZSBQYWNrIDEgYW5kIGFsbCBhcHBsaWNhYmxlIHVwZGF0ZXMgYXJlIHJlcXVpcmVkIHRvIGluc3RhbGwgW1dpeEJ1bmRsZU5hbWVdLgorCitQbGVhc2UgJmx0O2EgaHJlZj0iaHR0cHM6Ly93d3cuYmluZy5jb20vc2VhcmNoP3E9aG93JTIwdG8lMjBpbnN0YWxsJTIwd2luZG93cyUyMDclMjBzZXJ2aWNlJTIwcGFjayUyMDEiJmd0O3VwZGF0ZSB5b3VyIG1hY2hpbmUmbHQ7L2EmZ3Q7IGFuZCB0aGVuIHJlc3RhcnQgdGhlIGluc3RhbGxhdGlvbi48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iRmFpbHVyZVZpc3RhTWlzc2luZ1NQMiI+V2luZG93cyBWaXN0YSBTZXJ2aWNlIFBhY2sgMiBhbmQgYWxsIGFwcGxpY2FibGUgdXBkYXRlcyBhcmUgcmVxdWlyZWQgdG8gaW5zdGFsbCBbV2l4QnVuZGxlTmFtZV0uCisKK1BsZWFzZSAmbHQ7YSBocmVmPSJodHRwczovL3d3dy5iaW5nLmNvbS9zZWFyY2g/cT1ob3clMjB0byUyMGluc3RhbGwlMjB3aW5kb3dzJTIwdmlzdGElMjBzZXJ2aWNlJTIwcGFjayUyMDIiJmd0O3VwZGF0ZSB5b3VyIG1hY2hpbmUmbHQ7L2EmZ3Q7IGFuZCB0aGVuIHJlc3RhcnQgdGhlIGluc3RhbGxhdGlvbi48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iRmFpbHVyZVhQT3JFYXJsaWVyIj5XaW5kb3dzIFZpc3RhIG9yIGxhdGVyIGlzIHJlcXVpcmVkIHRvIGluc3RhbGwgYW5kIHVzZSBbV2l4QnVuZGxlTmFtZV0uCisKK1Zpc2l0ICZsdDthIGhyZWY9Imh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvIiZndDtweXRob24ub3JnJmx0Oy9hJmd0OyB0byBkb3dubG9hZCBQeXRob24gMy40LjwvU3RyaW5nPgorPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL1NpZGVCYXIucG5nIGIvVG9vbHMvbXNpL2J1bmRsZS9TaWRlQmFyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjNjZTVlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9TaWRlQmFyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9MSUNFTlNFLnR4dCBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL0xJQ0VOU0UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OTFhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9MSUNFTlNFLnR4dApAQCAtMCwwICsxLDI1IEBACitUaGlzIGxpY2Vuc2UgYXBwbGllcyB0byB0aGUgYm9vdHN0cmFwcGVyIGFwcGxpY2F0aW9uIHRoYXQgaXMgZW1iZWRkZWQgd2l0aGluIHRoZSBpbnN0YWxsZXIuIEl0IGhhcyBubyBpbXBhY3Qgb24gdGhlIGxpY2Vuc2luZyBmb3IgdGhlIHJlc3Qgb2YgdGhlIGluc3RhbGxlciBvciBQeXRob24gaXRzZWxmLCBhcyBubyBjb2RlIGNvdmVyZWQgYnkgdGhpcyBsaWNlbnNlIGV4aXN0cyBpbiBhbnkgb3RoZXIgcGFydCBvZiB0aGUgcHJvZHVjdC4KKworLS0tCisKK01pY3Jvc29mdCBSZWNpcHJvY2FsIExpY2Vuc2UgKE1TLVJMKQorCitUaGlzIGxpY2Vuc2UgZ292ZXJucyB1c2Ugb2YgdGhlIGFjY29tcGFueWluZyBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGUgc29mdHdhcmUsIHlvdSBhY2NlcHQgdGhpcyBsaWNlbnNlLiBJZiB5b3UgZG8gbm90IGFjY2VwdCB0aGUgbGljZW5zZSwgZG8gbm90IHVzZSB0aGUgc29mdHdhcmUuCisKKzEuIERlZmluaXRpb25zCisgVGhlIHRlcm1zICJyZXByb2R1Y2UsIiAicmVwcm9kdWN0aW9uLCIgImRlcml2YXRpdmUgd29ya3MsIiBhbmQgImRpc3RyaWJ1dGlvbiIgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGhlcmUgYXMgdW5kZXIgVS5TLiBjb3B5cmlnaHQgbGF3LgorIEEgImNvbnRyaWJ1dGlvbiIgaXMgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLCBvciBhbnkgYWRkaXRpb25zIG9yIGNoYW5nZXMgdG8gdGhlIHNvZnR3YXJlLgorIEEgImNvbnRyaWJ1dG9yIiBpcyBhbnkgcGVyc29uIHRoYXQgZGlzdHJpYnV0ZXMgaXRzIGNvbnRyaWJ1dGlvbiB1bmRlciB0aGlzIGxpY2Vuc2UuCisgIkxpY2Vuc2VkIHBhdGVudHMiIGFyZSBhIGNvbnRyaWJ1dG9yJ3MgcGF0ZW50IGNsYWltcyB0aGF0IHJlYWQgZGlyZWN0bHkgb24gaXRzIGNvbnRyaWJ1dGlvbi4KKworMi4gR3JhbnQgb2YgUmlnaHRzCisgKEEpIENvcHlyaWdodCBHcmFudC0gU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyBsaWNlbnNlLCBpbmNsdWRpbmcgdGhlIGxpY2Vuc2UgY29uZGl0aW9ucyBhbmQgbGltaXRhdGlvbnMgaW4gc2VjdGlvbiAzLCBlYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZSBjb3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UgaXRzIGNvbnRyaWJ1dGlvbiwgcHJlcGFyZSBkZXJpdmF0aXZlIHdvcmtzIG9mIGl0cyBjb250cmlidXRpb24sIGFuZCBkaXN0cmlidXRlIGl0cyBjb250cmlidXRpb24gb3IgYW55IGRlcml2YXRpdmUgd29ya3MgdGhhdCB5b3UgY3JlYXRlLgorIChCKSBQYXRlbnQgR3JhbnQtIFN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgbGljZW5zZSwgaW5jbHVkaW5nIHRoZSBsaWNlbnNlIGNvbmRpdGlvbnMgYW5kIGxpbWl0YXRpb25zIGluIHNlY3Rpb24gMywgZWFjaCBjb250cmlidXRvciBncmFudHMgeW91IGEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLCByb3lhbHR5LWZyZWUgbGljZW5zZSB1bmRlciBpdHMgbGljZW5zZWQgcGF0ZW50cyB0byBtYWtlLCBoYXZlIG1hZGUsIHVzZSwgc2VsbCwgb2ZmZXIgZm9yIHNhbGUsIGltcG9ydCwgYW5kL29yIG90aGVyd2lzZSBkaXNwb3NlIG9mIGl0cyBjb250cmlidXRpb24gaW4gdGhlIHNvZnR3YXJlIG9yIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIGNvbnRyaWJ1dGlvbiBpbiB0aGUgc29mdHdhcmUuCisKKzMuIENvbmRpdGlvbnMgYW5kIExpbWl0YXRpb25zCisgKEEpIFJlY2lwcm9jYWwgR3JhbnRzLSBGb3IgYW55IGZpbGUgeW91IGRpc3RyaWJ1dGUgdGhhdCBjb250YWlucyBjb2RlIGZyb20gdGhlIHNvZnR3YXJlIChpbiBzb3VyY2UgY29kZSBvciBiaW5hcnkgZm9ybWF0KSwgeW91IG11c3QgcHJvdmlkZSByZWNpcGllbnRzIHRoZSBzb3VyY2UgY29kZSB0byB0aGF0IGZpbGUgYWxvbmcgd2l0aCBhIGNvcHkgb2YgdGhpcyBsaWNlbnNlLCB3aGljaCBsaWNlbnNlIHdpbGwgZ292ZXJuIHRoYXQgZmlsZS4gWW91IG1heSBsaWNlbnNlIG90aGVyIGZpbGVzIHRoYXQgYXJlIGVudGlyZWx5IHlvdXIgb3duIHdvcmsgYW5kIGRvIG5vdCBjb250YWluIGNvZGUgZnJvbSB0aGUgc29mdHdhcmUgdW5kZXIgYW55IHRlcm1zIHlvdSBjaG9vc2UuCisgKEIpIE5vIFRyYWRlbWFyayBMaWNlbnNlLSBUaGlzIGxpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgeW91IHJpZ2h0cyB0byB1c2UgYW55IGNvbnRyaWJ1dG9ycycgbmFtZSwgbG9nbywgb3IgdHJhZGVtYXJrcy4KKyAoQykgSWYgeW91IGJyaW5nIGEgcGF0ZW50IGNsYWltIGFnYWluc3QgYW55IGNvbnRyaWJ1dG9yIG92ZXIgcGF0ZW50cyB0aGF0IHlvdSBjbGFpbSBhcmUgaW5mcmluZ2VkIGJ5IHRoZSBzb2Z0d2FyZSwgeW91ciBwYXRlbnQgbGljZW5zZSBmcm9tIHN1Y2ggY29udHJpYnV0b3IgdG8gdGhlIHNvZnR3YXJlIGVuZHMgYXV0b21hdGljYWxseS4KKyAoRCkgSWYgeW91IGRpc3RyaWJ1dGUgYW55IHBvcnRpb24gb2YgdGhlIHNvZnR3YXJlLCB5b3UgbXVzdCByZXRhaW4gYWxsIGNvcHlyaWdodCwgcGF0ZW50LCB0cmFkZW1hcmssIGFuZCBhdHRyaWJ1dGlvbiBub3RpY2VzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHNvZnR3YXJlLgorIChFKSBJZiB5b3UgZGlzdHJpYnV0ZSBhbnkgcG9ydGlvbiBvZiB0aGUgc29mdHdhcmUgaW4gc291cmNlIGNvZGUgZm9ybSwgeW91IG1heSBkbyBzbyBvbmx5IHVuZGVyIHRoaXMgbGljZW5zZSBieSBpbmNsdWRpbmcgYSBjb21wbGV0ZSBjb3B5IG9mIHRoaXMgbGljZW5zZSB3aXRoIHlvdXIgZGlzdHJpYnV0aW9uLiBJZiB5b3UgZGlzdHJpYnV0ZSBhbnkgcG9ydGlvbiBvZiB0aGUgc29mdHdhcmUgaW4gY29tcGlsZWQgb3Igb2JqZWN0IGNvZGUgZm9ybSwgeW91IG1heSBvbmx5IGRvIHNvIHVuZGVyIGEgbGljZW5zZSB0aGF0IGNvbXBsaWVzIHdpdGggdGhpcyBsaWNlbnNlLgorIChGKSBUaGUgc29mdHdhcmUgaXMgbGljZW5zZWQgImFzLWlzLiIgWW91IGJlYXIgdGhlIHJpc2sgb2YgdXNpbmcgaXQuIFRoZSBjb250cmlidXRvcnMgZ2l2ZSBubyBleHByZXNzIHdhcnJhbnRpZXMsIGd1YXJhbnRlZXMgb3IgY29uZGl0aW9ucy4gWW91IG1heSBoYXZlIGFkZGl0aW9uYWwgY29uc3VtZXIgcmlnaHRzIHVuZGVyIHlvdXIgbG9jYWwgbGF3cyB3aGljaCB0aGlzIGxpY2Vuc2UgY2Fubm90IGNoYW5nZS4gVG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgdW5kZXIgeW91ciBsb2NhbCBsYXdzLCB0aGUgY29udHJpYnV0b3JzIGV4Y2x1ZGUgdGhlIGltcGxpZWQgd2FycmFudGllcyBvZiBtZXJjaGFudGFiaWxpdHksIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlIGFuZCBub24taW5mcmluZ2VtZW50LgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uY3BwIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NjJkN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9QeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAKQEAgLTAsMCArMSwzMjU3IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIDxjb3B5cmlnaHQgZmlsZT0iV2l4U3RhbmRhcmRCb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAiIGNvbXBhbnk9Ik91dGVyY3VydmUgRm91bmRhdGlvbiI+CisvLyAgIENvcHlyaWdodCAoYykgMjAwNCwgT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uLgorLy8gICBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1pY3Jvc29mdCBSZWNpcHJvY2FsIExpY2Vuc2UgKE1TLVJMKS4KKy8vICAgVGhlIGxpY2Vuc2UgYW5kIGZ1cnRoZXIgY29weXJpZ2h0IHRleHQgY2FuIGJlIGZvdW5kIGluIHRoZSBmaWxlCisvLyAgIExJQ0VOU0UuVFhUIGF0IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgZGlzdHJpYnV0aW9uLgorLy8gPC9jb3B5cmlnaHQ+CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCisjaW5jbHVkZSAicGNoLmgiCisKK3N0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfV0lORE9XX0NMQVNTID0gTCJQeXRob25CQSI7CitzdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfUEFUSCA9IEwiTGF1bmNoVGFyZ2V0IjsKK3N0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9FTEVWQVRFRF9JRCA9IEwiTGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCI7CitzdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1ZBUklBQkxFX0xBVU5DSF9BUkdVTUVOVFMgPSBMIkxhdW5jaEFyZ3VtZW50cyI7CitzdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1ZBUklBQkxFX0xBVU5DSF9ISURERU4gPSBMIkxhdW5jaEhpZGRlbiI7CitzdGF0aWMgY29uc3QgRFdPUkQgUFlCQV9BQ1FVSVJFX1BFUkNFTlRBR0UgPSAzMDsKK3N0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfQlVORExFX0ZJTEVfVkVSU0lPTiA9IEwiV2l4QnVuZGxlRmlsZVZlcnNpb24iOworCitlbnVtIFBZQkFfU1RBVEUgeworICAgIFBZQkFfU1RBVEVfSU5JVElBTElaSU5HLAorICAgIFBZQkFfU1RBVEVfSU5JVElBTElaRUQsCisgICAgUFlCQV9TVEFURV9IRUxQLAorICAgIFBZQkFfU1RBVEVfREVURUNUSU5HLAorICAgIFBZQkFfU1RBVEVfREVURUNURUQsCisgICAgUFlCQV9TVEFURV9QTEFOTklORywKKyAgICBQWUJBX1NUQVRFX1BMQU5ORUQsCisgICAgUFlCQV9TVEFURV9BUFBMWUlORywKKyAgICBQWUJBX1NUQVRFX0NBQ0hJTkcsCisgICAgUFlCQV9TVEFURV9DQUNIRUQsCisgICAgUFlCQV9TVEFURV9FWEVDVVRJTkcsCisgICAgUFlCQV9TVEFURV9FWEVDVVRFRCwKKyAgICBQWUJBX1NUQVRFX0FQUExJRUQsCisgICAgUFlCQV9TVEFURV9GQUlMRUQsCit9OworCitzdGF0aWMgY29uc3QgaW50IFdNX1BZQkFfU0hPV19IRUxQID0gV01fQVBQICsgMTAwOworc3RhdGljIGNvbnN0IGludCBXTV9QWUJBX0RFVEVDVF9QQUNLQUdFUyA9IFdNX0FQUCArIDEwMTsKK3N0YXRpYyBjb25zdCBpbnQgV01fUFlCQV9QTEFOX1BBQ0tBR0VTID0gV01fQVBQICsgMTAyOworc3RhdGljIGNvbnN0IGludCBXTV9QWUJBX0FQUExZX1BBQ0tBR0VTID0gV01fQVBQICsgMTAzOworc3RhdGljIGNvbnN0IGludCBXTV9QWUJBX0NIQU5HRV9TVEFURSA9IFdNX0FQUCArIDEwNDsKK3N0YXRpYyBjb25zdCBpbnQgV01fUFlCQV9TSE9XX0ZBSUxVUkUgPSBXTV9BUFAgKyAxMDU7CisKKy8vIFRoaXMgZW51bSBtdXN0IGJlIGtlcHQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIFBBR0VfTkFNRVMgYXJyYXkuCitlbnVtIFBBR0UgeworICAgIFBBR0VfTE9BRElORywKKyAgICBQQUdFX0hFTFAsCisgICAgUEFHRV9JTlNUQUxMLAorICAgIFBBR0VfVVBHUkFERSwKKyAgICBQQUdFX1NJTVBMRV9JTlNUQUxMLAorICAgIFBBR0VfQ1VTVE9NMSwKKyAgICBQQUdFX0NVU1RPTTIsCisgICAgUEFHRV9NT0RJRlksCisgICAgUEFHRV9QUk9HUkVTUywKKyAgICBQQUdFX1BST0dSRVNTX1BBU1NJVkUsCisgICAgUEFHRV9TVUNDRVNTLAorICAgIFBBR0VfRkFJTFVSRSwKKyAgICBDT1VOVF9QQUdFLAorfTsKKworLy8gVGhpcyBhcnJheSBtdXN0IGJlIGtlcHQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIFBBR0UgZW51bS4KK3N0YXRpYyBMUENXU1RSIFBBR0VfTkFNRVNbXSA9IHsKKyAgICBMIkxvYWRpbmciLAorICAgIEwiSGVscCIsCisgICAgTCJJbnN0YWxsIiwKKyAgICBMIlVwZ3JhZGUiLAorICAgIEwiU2ltcGxlSW5zdGFsbCIsCisgICAgTCJDdXN0b20xIiwKKyAgICBMIkN1c3RvbTIiLAorICAgIEwiTW9kaWZ5IiwKKyAgICBMIlByb2dyZXNzIiwKKyAgICBMIlByb2dyZXNzUGFzc2l2ZSIsCisgICAgTCJTdWNjZXNzIiwKKyAgICBMIkZhaWx1cmUiLAorfTsKKworZW51bSBDT05UUk9MX0lEIHsKKyAgICAvLyBOb24tcGFnZWQgY29udHJvbHMKKyAgICBJRF9DTE9TRV9CVVRUT04gPSBUSEVNRV9GSVJTVF9BU1NJR05fQ09OVFJPTF9JRCwKKyAgICBJRF9NSU5JTUlaRV9CVVRUT04sCisKKyAgICAvLyBXZWxjb21lIHBhZ2UKKyAgICBJRF9JTlNUQUxMX0JVVFRPTiwKKyAgICBJRF9JTlNUQUxMX0NVU1RPTV9CVVRUT04sCisgICAgSURfSU5TVEFMTF9TSU1QTEVfQlVUVE9OLAorICAgIElEX0lOU1RBTExfVVBHUkFERV9CVVRUT04sCisgICAgSURfSU5TVEFMTF9VUEdSQURFX0NVU1RPTV9CVVRUT04sCisgICAgSURfSU5TVEFMTF9DQU5DRUxfQlVUVE9OLAorICAgIElEX0lOU1RBTExfTEFVTkNIRVJfQUxMX1VTRVJTX0NIRUNLQk9YLAorCisgICAgLy8gQ3VzdG9taXplIFBhZ2UKKyAgICBJRF9UQVJHRVRESVJfRURJVEJPWCwKKyAgICBJRF9DVVNUT01fQVNTT0NJQVRFX0ZJTEVTX0NIRUNLQk9YLAorICAgIElEX0NVU1RPTV9JTlNUQUxMX0FMTF9VU0VSU19DSEVDS0JPWCwKKyAgICBJRF9DVVNUT01fSU5TVEFMTF9MQVVOQ0hFUl9BTExfVVNFUlNfQ0hFQ0tCT1gsCisgICAgSURfQ1VTVE9NX0lOQ0xVREVfTEFVTkNIRVJfSEVMUF9MQUJFTCwKKyAgICBJRF9DVVNUT01fQ09NUElMRV9BTExfQ0hFQ0tCT1gsCisgICAgSURfQ1VTVE9NX0JST1dTRV9CVVRUT04sCisgICAgSURfQ1VTVE9NX0JST1dTRV9CVVRUT05fTEFCRUwsCisgICAgSURfQ1VTVE9NX0lOU1RBTExfQlVUVE9OLAorICAgIElEX0NVU1RPTV9ORVhUX0JVVFRPTiwKKyAgICBJRF9DVVNUT00xX0JBQ0tfQlVUVE9OLAorICAgIElEX0NVU1RPTTJfQkFDS19CVVRUT04sCisgICAgSURfQ1VTVE9NMV9DQU5DRUxfQlVUVE9OLAorICAgIElEX0NVU1RPTTJfQ0FOQ0VMX0JVVFRPTiwKKworICAgIC8vIE1vZGlmeSBwYWdlCisgICAgSURfTU9ESUZZX0JVVFRPTiwKKyAgICBJRF9SRVBBSVJfQlVUVE9OLAorICAgIElEX1VOSU5TVEFMTF9CVVRUT04sCisgICAgSURfTU9ESUZZX0NBTkNFTF9CVVRUT04sCisKKyAgICAvLyBQcm9ncmVzcyBwYWdlCisgICAgSURfQ0FDSEVfUFJPR1JFU1NfUEFDS0FHRV9URVhULAorICAgIElEX0NBQ0hFX1BST0dSRVNTX0JBUiwKKyAgICBJRF9DQUNIRV9QUk9HUkVTU19URVhULAorCisgICAgSURfRVhFQ1VURV9QUk9HUkVTU19QQUNLQUdFX1RFWFQsCisgICAgSURfRVhFQ1VURV9QUk9HUkVTU19CQVIsCisgICAgSURfRVhFQ1VURV9QUk9HUkVTU19URVhULAorICAgIElEX0VYRUNVVEVfUFJPR1JFU1NfQUNUSU9OREFUQV9URVhULAorCisgICAgSURfT1ZFUkFMTF9QUk9HUkVTU19QQUNLQUdFX1RFWFQsCisgICAgSURfT1ZFUkFMTF9QUk9HUkVTU19CQVIsCisgICAgSURfT1ZFUkFMTF9DQUxDVUxBVEVEX1BST0dSRVNTX0JBUiwKKyAgICBJRF9PVkVSQUxMX1BST0dSRVNTX1RFWFQsCisKKyAgICBJRF9QUk9HUkVTU19DQU5DRUxfQlVUVE9OLAorCisgICAgLy8gU3VjY2VzcyBwYWdlCisgICAgSURfTEFVTkNIX0JVVFRPTiwKKyAgICBJRF9TVUNDRVNTX1RFWFQsCisgICAgSURfU1VDQ0VTU19SRVNUQVJUX1RFWFQsCisgICAgSURfU1VDQ0VTU19SRVNUQVJUX0JVVFRPTiwKKyAgICBJRF9TVUNDRVNTX0NBTkNFTF9CVVRUT04sCisKKyAgICAvLyBGYWlsdXJlIHBhZ2UKKyAgICBJRF9GQUlMVVJFX0xPR0ZJTEVfTElOSywKKyAgICBJRF9GQUlMVVJFX01FU1NBR0VfVEVYVCwKKyAgICBJRF9GQUlMVVJFX1JFU1RBUlRfVEVYVCwKKyAgICBJRF9GQUlMVVJFX1JFU1RBUlRfQlVUVE9OLAorICAgIElEX0ZBSUxVUkVfQ0FOQ0VMX0JVVFRPTgorfTsKKworc3RhdGljIFRIRU1FX0FTU0lHTl9DT05UUk9MX0lEIENPTlRST0xfSURfTkFNRVNbXSA9IHsKKyAgICB7IElEX0NMT1NFX0JVVFRPTiwgTCJDbG9zZUJ1dHRvbiIgfSwKKyAgICB7IElEX01JTklNSVpFX0JVVFRPTiwgTCJNaW5pbWl6ZUJ1dHRvbiIgfSwKKworICAgIHsgSURfSU5TVEFMTF9CVVRUT04sIEwiSW5zdGFsbEJ1dHRvbiIgfSwKKyAgICB7IElEX0lOU1RBTExfQ1VTVE9NX0JVVFRPTiwgTCJJbnN0YWxsQ3VzdG9tQnV0dG9uIiB9LAorICAgIHsgSURfSU5TVEFMTF9TSU1QTEVfQlVUVE9OLCBMIkluc3RhbGxTaW1wbGVCdXR0b24iIH0sCisgICAgeyBJRF9JTlNUQUxMX1VQR1JBREVfQlVUVE9OLCBMIkluc3RhbGxVcGdyYWRlQnV0dG9uIiB9LAorICAgIHsgSURfSU5TVEFMTF9VUEdSQURFX0NVU1RPTV9CVVRUT04sIEwiSW5zdGFsbFVwZ3JhZGVDdXN0b21CdXR0b24iIH0sCisgICAgeyBJRF9JTlNUQUxMX0NBTkNFTF9CVVRUT04sIEwiSW5zdGFsbENhbmNlbEJ1dHRvbiIgfSwKKyAgICB7IElEX0lOU1RBTExfTEFVTkNIRVJfQUxMX1VTRVJTX0NIRUNLQk9YLCBMIkluc3RhbGxMYXVuY2hlckFsbFVzZXJzIiB9LAorCisgICAgeyBJRF9UQVJHRVRESVJfRURJVEJPWCwgTCJUYXJnZXREaXIiIH0sCisgICAgeyBJRF9DVVNUT01fQVNTT0NJQVRFX0ZJTEVTX0NIRUNLQk9YLCBMIkFzc29jaWF0ZUZpbGVzIiB9LAorICAgIHsgSURfQ1VTVE9NX0lOU1RBTExfQUxMX1VTRVJTX0NIRUNLQk9YLCBMIkluc3RhbGxBbGxVc2VycyIgfSwKKyAgICB7IElEX0NVU1RPTV9JTlNUQUxMX0xBVU5DSEVSX0FMTF9VU0VSU19DSEVDS0JPWCwgTCJDdXN0b21JbnN0YWxsTGF1bmNoZXJBbGxVc2VycyIgfSwKKyAgICB7IElEX0NVU1RPTV9JTkNMVURFX0xBVU5DSEVSX0hFTFBfTEFCRUwsIEwiSW5jbHVkZV9sYXVuY2hlckhlbHAiIH0sCisgICAgeyBJRF9DVVNUT01fQ09NUElMRV9BTExfQ0hFQ0tCT1gsIEwiQ29tcGlsZUFsbCIgfSwKKyAgICB7IElEX0NVU1RPTV9CUk9XU0VfQlVUVE9OLCBMIkN1c3RvbUJyb3dzZUJ1dHRvbiIgfSwKKyAgICB7IElEX0NVU1RPTV9CUk9XU0VfQlVUVE9OX0xBQkVMLCBMIkN1c3RvbUJyb3dzZUJ1dHRvbkxhYmVsIiB9LAorICAgIHsgSURfQ1VTVE9NX0lOU1RBTExfQlVUVE9OLCBMIkN1c3RvbUluc3RhbGxCdXR0b24iIH0sCisgICAgeyBJRF9DVVNUT01fTkVYVF9CVVRUT04sIEwiQ3VzdG9tTmV4dEJ1dHRvbiIgfSwKKyAgICB7IElEX0NVU1RPTTFfQkFDS19CVVRUT04sIEwiQ3VzdG9tMUJhY2tCdXR0b24iIH0sCisgICAgeyBJRF9DVVNUT00yX0JBQ0tfQlVUVE9OLCBMIkN1c3RvbTJCYWNrQnV0dG9uIiB9LAorICAgIHsgSURfQ1VTVE9NMV9DQU5DRUxfQlVUVE9OLCBMIkN1c3RvbTFDYW5jZWxCdXR0b24iIH0sCisgICAgeyBJRF9DVVNUT00yX0NBTkNFTF9CVVRUT04sIEwiQ3VzdG9tMkNhbmNlbEJ1dHRvbiIgfSwKKworICAgIHsgSURfTU9ESUZZX0JVVFRPTiwgTCJNb2RpZnlCdXR0b24iIH0sCisgICAgeyBJRF9SRVBBSVJfQlVUVE9OLCBMIlJlcGFpckJ1dHRvbiIgfSwKKyAgICB7IElEX1VOSU5TVEFMTF9CVVRUT04sIEwiVW5pbnN0YWxsQnV0dG9uIiB9LAorICAgIHsgSURfTU9ESUZZX0NBTkNFTF9CVVRUT04sIEwiTW9kaWZ5Q2FuY2VsQnV0dG9uIiB9LAorCisgICAgeyBJRF9DQUNIRV9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIEwiQ2FjaGVQcm9ncmVzc1BhY2thZ2VUZXh0IiB9LAorICAgIHsgSURfQ0FDSEVfUFJPR1JFU1NfQkFSLCBMIkNhY2hlUHJvZ3Jlc3NiYXIiIH0sCisgICAgeyBJRF9DQUNIRV9QUk9HUkVTU19URVhULCBMIkNhY2hlUHJvZ3Jlc3NUZXh0IiB9LAorICAgIHsgSURfRVhFQ1VURV9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIEwiRXhlY3V0ZVByb2dyZXNzUGFja2FnZVRleHQiIH0sCisgICAgeyBJRF9FWEVDVVRFX1BST0dSRVNTX0JBUiwgTCJFeGVjdXRlUHJvZ3Jlc3NiYXIiIH0sCisgICAgeyBJRF9FWEVDVVRFX1BST0dSRVNTX1RFWFQsIEwiRXhlY3V0ZVByb2dyZXNzVGV4dCIgfSwKKyAgICB7IElEX0VYRUNVVEVfUFJPR1JFU1NfQUNUSU9OREFUQV9URVhULCBMIkV4ZWN1dGVQcm9ncmVzc0FjdGlvbkRhdGFUZXh0IiB9LAorICAgIHsgSURfT1ZFUkFMTF9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIEwiT3ZlcmFsbFByb2dyZXNzUGFja2FnZVRleHQiIH0sCisgICAgeyBJRF9PVkVSQUxMX1BST0dSRVNTX0JBUiwgTCJPdmVyYWxsUHJvZ3Jlc3NiYXIiIH0sCisgICAgeyBJRF9PVkVSQUxMX0NBTENVTEFURURfUFJPR1JFU1NfQkFSLCBMIk92ZXJhbGxDYWxjdWxhdGVkUHJvZ3Jlc3NiYXIiIH0sCisgICAgeyBJRF9PVkVSQUxMX1BST0dSRVNTX1RFWFQsIEwiT3ZlcmFsbFByb2dyZXNzVGV4dCIgfSwKKyAgICB7IElEX1BST0dSRVNTX0NBTkNFTF9CVVRUT04sIEwiUHJvZ3Jlc3NDYW5jZWxCdXR0b24iIH0sCisKKyAgICB7IElEX0xBVU5DSF9CVVRUT04sIEwiTGF1bmNoQnV0dG9uIiB9LAorICAgIHsgSURfU1VDQ0VTU19URVhULCBMIlN1Y2Nlc3NUZXh0IiB9LAorICAgIHsgSURfU1VDQ0VTU19SRVNUQVJUX1RFWFQsIEwiU3VjY2Vzc1Jlc3RhcnRUZXh0IiB9LAorICAgIHsgSURfU1VDQ0VTU19SRVNUQVJUX0JVVFRPTiwgTCJTdWNjZXNzUmVzdGFydEJ1dHRvbiIgfSwKKyAgICB7IElEX1NVQ0NFU1NfQ0FOQ0VMX0JVVFRPTiwgTCJTdWNjZXNzQ2FuY2VsQnV0dG9uIiB9LAorCisgICAgeyBJRF9GQUlMVVJFX0xPR0ZJTEVfTElOSywgTCJGYWlsdXJlTG9nRmlsZUxpbmsiIH0sCisgICAgeyBJRF9GQUlMVVJFX01FU1NBR0VfVEVYVCwgTCJGYWlsdXJlTWVzc2FnZVRleHQiIH0sCisgICAgeyBJRF9GQUlMVVJFX1JFU1RBUlRfVEVYVCwgTCJGYWlsdXJlUmVzdGFydFRleHQiIH0sCisgICAgeyBJRF9GQUlMVVJFX1JFU1RBUlRfQlVUVE9OLCBMIkZhaWx1cmVSZXN0YXJ0QnV0dG9uIiB9LAorICAgIHsgSURfRkFJTFVSRV9DQU5DRUxfQlVUVE9OLCBMIkZhaWx1cmVDYW5jZWxCdXR0b24iIH0sCit9OworCitzdGF0aWMgc3RydWN0IHsgTFBDV1NUUiByZWdOYW1lOyBMUENXU1RSIHZhcmlhYmxlTmFtZTsgfSBPUFRJT05BTF9GRUFUVVJFU1tdID0geworICAgIHsgTCJjb3JlX2QiLCBMIkluY2x1ZGVfZGVidWciIH0sCisgICAgeyBMImNvcmVfcGRiIiwgTCJJbmNsdWRlX3N5bWJvbHMiIH0sCisgICAgeyBMImRldiIsIEwiSW5jbHVkZV9kZXYiIH0sCisgICAgeyBMImRvYyIsIEwiSW5jbHVkZV9kb2MiIH0sCisgICAgeyBMImV4ZSIsIEwiSW5jbHVkZV9leGUiIH0sCisgICAgeyBMImxpYiIsIEwiSW5jbHVkZV9saWIiIH0sCisgICAgeyBMInBhdGgiLCBMIlByZXBlbmRQYXRoIiB9LAorICAgIHsgTCJwaXAiLCBMIkluY2x1ZGVfcGlwIiB9LAorICAgIHsgTCJ0Y2x0ayIsIEwiSW5jbHVkZV90Y2x0ayIgfSwKKyAgICB7IEwidGVzdCIsIEwiSW5jbHVkZV90ZXN0IiB9LAorICAgIHsgTCJ0b29scyIsIEwiSW5jbHVkZV90b29scyIgfSwKKyAgICB7IEwiU2hvcnRjdXRzIiwgTCJTaG9ydGN1dHMiIH0sCisgICAgLy8gSW5jbHVkZV9sYXVuY2hlciBhbmQgQXNzb2NpYXRlRmlsZXMgYXJlIGhhbmRsZWQgc2VwYXJhdGVseSBhbmQgc28gZG8KKyAgICAvLyBub3QgbmVlZCB0byBiZSBpbmNsdWRlZCBpbiB0aGlzIGxpc3QuCisgICAgeyBudWxscHRyLCBudWxscHRyIH0KK307CisKKworCitjbGFzcyBQeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbiA6IHB1YmxpYyBDQmFsQmFzZUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uIHsKKyAgICB2b2lkIFNob3dQYWdlKERXT1JEIG5ld1BhZ2VJZCkgeworICAgICAgICAvLyBQcm9jZXNzIGVhY2ggY29udHJvbCBmb3Igc3BlY2lhbCBoYW5kbGluZyBpbiB0aGUgbmV3IHBhZ2UuCisgICAgICAgIFByb2Nlc3NQYWdlQ29udHJvbHMoVGhlbWVHZXRQYWdlKF90aGVtZSwgbmV3UGFnZUlkKSk7CisKKyAgICAgICAgLy8gRW5hYmxlIGRpc2FibGUgY29udHJvbHMgcGVyLXBhZ2UuCisgICAgICAgIGlmIChfcGFnZUlkc1tQQUdFX0lOU1RBTExdID09IG5ld1BhZ2VJZCB8fAorICAgICAgICAgICAgX3BhZ2VJZHNbUEFHRV9TSU1QTEVfSU5TVEFMTF0gPT0gbmV3UGFnZUlkIHx8CisgICAgICAgICAgICBfcGFnZUlkc1tQQUdFX1VQR1JBREVdID09IG5ld1BhZ2VJZCkgeworICAgICAgICAgICAgSW5zdGFsbFBhZ2VfU2hvdygpOworICAgICAgICB9IGVsc2UgaWYgKF9wYWdlSWRzW1BBR0VfQ1VTVE9NMV0gPT0gbmV3UGFnZUlkKSB7CisgICAgICAgICAgICBDdXN0b20xUGFnZV9TaG93KCk7CisgICAgICAgIH0gZWxzZSBpZiAoX3BhZ2VJZHNbUEFHRV9DVVNUT00yXSA9PSBuZXdQYWdlSWQpIHsKKyAgICAgICAgICAgIEN1c3RvbTJQYWdlX1Nob3coKTsKKyAgICAgICAgfSBlbHNlIGlmIChfcGFnZUlkc1tQQUdFX01PRElGWV0gPT0gbmV3UGFnZUlkKSB7CisgICAgICAgICAgICBNb2RpZnlQYWdlX1Nob3coKTsKKyAgICAgICAgfSBlbHNlIGlmIChfcGFnZUlkc1tQQUdFX1NVQ0NFU1NdID09IG5ld1BhZ2VJZCkgeworICAgICAgICAgICAgU3VjY2Vzc1BhZ2VfU2hvdygpOworICAgICAgICB9IGVsc2UgaWYgKF9wYWdlSWRzW1BBR0VfRkFJTFVSRV0gPT0gbmV3UGFnZUlkKSB7CisgICAgICAgICAgICBGYWlsdXJlUGFnZV9TaG93KCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBQcmV2ZW50IHJlcGFpbnRpbmcgd2hpbGUgc3dpdGNoaW5nIHBhZ2UgdG8gYXZvaWQgdWdseSBmbGlja2VyaW5nCisgICAgICAgIF9zdXBwcmVzc1BhaW50ID0gVFJVRTsKKyAgICAgICAgVGhlbWVTaG93UGFnZShfdGhlbWUsIG5ld1BhZ2VJZCwgU1dfU0hPVyk7CisgICAgICAgIFRoZW1lU2hvd1BhZ2UoX3RoZW1lLCBfdmlzaWJsZVBhZ2VJZCwgU1dfSElERSk7CisgICAgICAgIF9zdXBwcmVzc1BhaW50ID0gRkFMU0U7CisgICAgICAgIEludmFsaWRhdGVSZWN0KF90aGVtZS0+aHduZFBhcmVudCwgbnVsbHB0ciwgVFJVRSk7CisgICAgICAgIF92aXNpYmxlUGFnZUlkID0gbmV3UGFnZUlkOworCisgICAgICAgIC8vIE9uIHRoZSBpbnN0YWxsIHBhZ2Ugc2V0IHRoZSBmb2N1cyB0byB0aGUgaW5zdGFsbCBidXR0b24gb3IKKyAgICAgICAgLy8gdGhlIG5leHQgZW5hYmxlZCBjb250cm9sIGlmIGluc3RhbGwgaXMgZGlzYWJsZWQKKyAgICAgICAgaWYgKF9wYWdlSWRzW1BBR0VfSU5TVEFMTF0gPT0gbmV3UGFnZUlkKSB7CisgICAgICAgICAgICBUaGVtZVNldEZvY3VzKF90aGVtZSwgSURfSU5TVEFMTF9CVVRUT04pOworICAgICAgICB9IGVsc2UgaWYgKF9wYWdlSWRzW1BBR0VfU0lNUExFX0lOU1RBTExdID09IG5ld1BhZ2VJZCkgeworICAgICAgICAgICAgVGhlbWVTZXRGb2N1cyhfdGhlbWUsIElEX0lOU1RBTExfU0lNUExFX0JVVFRPTik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLworICAgIC8vIEhhbmRsZXMgY29udHJvbCBjbGlja3MKKyAgICAvLworICAgIHZvaWQgT25Db21tYW5kKENPTlRST0xfSUQgaWQpIHsKKyAgICAgICAgTFBXU1RSIGRlZmF1bHREaXIgPSBudWxscHRyOworICAgICAgICBMUFdTVFIgdGFyZ2V0RGlyID0gbnVsbHB0cjsKKyAgICAgICAgTE9OR0xPTkcgZWxldmF0ZWQsIGNydEluc3RhbGxlZCwgaW5zdGFsbEFsbFVzZXJzOworICAgICAgICBCT09MIGNoZWNrZWQsIGxhdW5jaGVyQ2hlY2tlZDsKKyAgICAgICAgV0NIQVIgd3pQYXRoW01BWF9QQVRIXSA9IHsgfTsKKyAgICAgICAgQlJPV1NFSU5GT1cgYnJvd3NlSW5mbyA9IHsgfTsKKyAgICAgICAgUElETElTVF9BQlNPTFVURSBwaWRsID0gbnVsbHB0cjsKKyAgICAgICAgRFdPUkQgcGFnZUlkOworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKworICAgICAgICBzd2l0Y2goaWQpIHsKKyAgICAgICAgY2FzZSBJRF9DTE9TRV9CVVRUT046CisgICAgICAgICAgICBPbkNsaWNrQ2xvc2VCdXR0b24oKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8vIEluc3RhbGwgY29tbWFuZHMKKyAgICAgICAgY2FzZSBJRF9JTlNUQUxMX1NJTVBMRV9CVVRUT046IF9fZmFsbHRocm91Z2g7CisgICAgICAgIGNhc2UgSURfSU5TVEFMTF9VUEdSQURFX0JVVFRPTjogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgY2FzZSBJRF9JTlNUQUxMX0JVVFRPTjoKKyAgICAgICAgICAgIFNhdmVQYWdlU2V0dGluZ3MoKTsKKworICAgICAgICAgICAgaWYgKCFXaWxsRWxldmF0ZSgpICYmICFRdWVyeUVsZXZhdGVGb3JDcnRJbnN0YWxsKCkpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaHIgPSBCYWxHZXROdW1lcmljVmFyaWFibGUoTCJJbnN0YWxsQWxsVXNlcnMiLCAmaW5zdGFsbEFsbFVzZXJzKTsKKyAgICAgICAgICAgIEV4aXRPbkZhaWx1cmUoaHIsIEwiRmFpbGVkIHRvIGdldCBpbnN0YWxsIHNjb3BlIik7CisKKyAgICAgICAgICAgIGhyID0gX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiQ29tcGlsZUFsbCIsIGluc3RhbGxBbGxVc2Vycyk7CisgICAgICAgICAgICBFeGl0T25GYWlsdXJlKGhyLCBMIkZhaWxlZCB0byB1cGRhdGUgQ29tcGlsZUFsbCIpOworCisgICAgICAgICAgICBociA9IEVuc3VyZVRhcmdldERpcigpOworICAgICAgICAgICAgRXhpdE9uRmFpbHVyZShociwgTCJGYWlsZWQgdG8gc2V0IFRhcmdldERpciIpOworCisgICAgICAgICAgICBPblBsYW4oQk9PVFNUUkFQUEVSX0FDVElPTl9JTlNUQUxMKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSURfQ1VTVE9NMV9CQUNLX0JVVFRPTjoKKyAgICAgICAgICAgIFNhdmVQYWdlU2V0dGluZ3MoKTsKKyAgICAgICAgICAgIGlmIChfbW9kaWZ5aW5nKSB7CisgICAgICAgICAgICAgICAgR29Ub1BhZ2UoUEFHRV9NT0RJRlkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChfdXBncmFkaW5nKSB7CisgICAgICAgICAgICAgICAgR29Ub1BhZ2UoUEFHRV9VUEdSQURFKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgR29Ub1BhZ2UoUEFHRV9JTlNUQUxMKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSURfSU5TVEFMTF9DVVNUT01fQlVUVE9OOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICBjYXNlIElEX0lOU1RBTExfVVBHUkFERV9DVVNUT01fQlVUVE9OOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICBjYXNlIElEX0NVU1RPTTJfQkFDS19CVVRUT046CisgICAgICAgICAgICBTYXZlUGFnZVNldHRpbmdzKCk7CisgICAgICAgICAgICBHb1RvUGFnZShQQUdFX0NVU1RPTTEpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJRF9DVVNUT01fTkVYVF9CVVRUT046CisgICAgICAgICAgICBTYXZlUGFnZVNldHRpbmdzKCk7CisgICAgICAgICAgICBHb1RvUGFnZShQQUdFX0NVU1RPTTIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJRF9DVVNUT01fSU5TVEFMTF9CVVRUT046CisgICAgICAgICAgICBTYXZlUGFnZVNldHRpbmdzKCk7CisKKyAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoTCJUYXJnZXREaXIiLCAmdGFyZ2V0RGlyKTsKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIpKSB7CisgICAgICAgICAgICAgICAgLy8gVE9ETzogQ2hlY2sgd2hldGhlciBkaXJlY3RvcnkgZXhpc3RzIGFuZCBjb250YWlucyBhbm90aGVyIGluc3RhbGxhdGlvbgorICAgICAgICAgICAgICAgIFJlbGVhc2VTdHIodGFyZ2V0RGlyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFXaWxsRWxldmF0ZSgpICYmICFRdWVyeUVsZXZhdGVGb3JDcnRJbnN0YWxsKCkpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgT25QbGFuKF9jb21tYW5kLmFjdGlvbik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElEX0lOU1RBTExfTEFVTkNIRVJfQUxMX1VTRVJTX0NIRUNLQk9YOgorICAgICAgICAgICAgY2hlY2tlZCA9IFRoZW1lSXNDb250cm9sQ2hlY2tlZChfdGhlbWUsIElEX0lOU1RBTExfTEFVTkNIRVJfQUxMX1VTRVJTX0NIRUNLQk9YKTsKKyAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhMIkluc3RhbGxMYXVuY2hlckFsbFVzZXJzIiwgY2hlY2tlZCk7CisKKyAgICAgICAgICAgIFRoZW1lQ29udHJvbEVsZXZhdGVzKF90aGVtZSwgSURfSU5TVEFMTF9CVVRUT04sIFdpbGxFbGV2YXRlKCkpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJRF9DVVNUT01fSU5TVEFMTF9MQVVOQ0hFUl9BTExfVVNFUlNfQ0hFQ0tCT1g6CisgICAgICAgICAgICBjaGVja2VkID0gVGhlbWVJc0NvbnRyb2xDaGVja2VkKF90aGVtZSwgSURfQ1VTVE9NX0lOU1RBTExfTEFVTkNIRVJfQUxMX1VTRVJTX0NIRUNLQk9YKTsKKyAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhMIkluc3RhbGxMYXVuY2hlckFsbFVzZXJzIiwgY2hlY2tlZCk7CisKKyAgICAgICAgICAgIFRoZW1lQ29udHJvbEVsZXZhdGVzKF90aGVtZSwgSURfQ1VTVE9NX0lOU1RBTExfQlVUVE9OLCBXaWxsRWxldmF0ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSURfQ1VTVE9NX0lOU1RBTExfQUxMX1VTRVJTX0NIRUNLQk9YOgorICAgICAgICAgICAgY2hlY2tlZCA9IFRoZW1lSXNDb250cm9sQ2hlY2tlZChfdGhlbWUsIElEX0NVU1RPTV9JTlNUQUxMX0FMTF9VU0VSU19DSEVDS0JPWCk7CisgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoTCJJbnN0YWxsQWxsVXNlcnMiLCBjaGVja2VkKTsKKworICAgICAgICAgICAgVGhlbWVDb250cm9sRWxldmF0ZXMoX3RoZW1lLCBJRF9DVVNUT01fSU5TVEFMTF9CVVRUT04sIFdpbGxFbGV2YXRlKCkpOworICAgICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfQ1VTVE9NX0JST1dTRV9CVVRUT05fTEFCRUwsICFjaGVja2VkKTsKKyAgICAgICAgICAgIGlmIChjaGVja2VkKSB7CisgICAgICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiQ29tcGlsZUFsbCIsIDEpOworICAgICAgICAgICAgICAgIFRoZW1lU2VuZENvbnRyb2xNZXNzYWdlKF90aGVtZSwgSURfQ1VTVE9NX0NPTVBJTEVfQUxMX0NIRUNLQk9YLCBCTV9TRVRDSEVDSywgQlNUX0NIRUNLRUQsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVGhlbWVHZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX1RBUkdFVERJUl9FRElUQk9YLCAmdGFyZ2V0RGlyKTsKKyAgICAgICAgICAgIGlmICh0YXJnZXREaXIpIHsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGUgY3VycmVudCB2YWx1ZSBhZ2FpbnN0IHRoZSBkZWZhdWx0IHRvIHNlZQorICAgICAgICAgICAgICAgIC8vIGlmIHdlIHNob3VsZCBzd2l0Y2ggaXQgYXV0b21hdGljYWxseS4KKyAgICAgICAgICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKAorICAgICAgICAgICAgICAgICAgICBjaGVja2VkID8gTCJEZWZhdWx0SnVzdEZvck1lVGFyZ2V0RGlyIiA6IEwiRGVmYXVsdEFsbFVzZXJzVGFyZ2V0RGlyIiwKKyAgICAgICAgICAgICAgICAgICAgJmRlZmF1bHREaXIKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIpICYmIGRlZmF1bHREaXIpIHsKKyAgICAgICAgICAgICAgICAgICAgTFBXU1RSIGZvcm1hdHRlZCA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0RGlyWzBdICYmIFNVQ0NFRURFRChCYWxGb3JtYXRTdHJpbmcoZGVmYXVsdERpciwgJmZvcm1hdHRlZCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2NzY21wKGZvcm1hdHRlZCwgdGFyZ2V0RGlyKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZVN0cihkZWZhdWx0RGlyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RGlyID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlU3RyKGZvcm1hdHRlZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkID8gTCJEZWZhdWx0QWxsVXNlcnNUYXJnZXREaXIiIDogTCJEZWZhdWx0SnVzdEZvck1lVGFyZ2V0RGlyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRlZmF1bHREaXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIpICYmIGRlZmF1bHREaXIgJiYgZGVmYXVsdERpclswXSAmJiBTVUNDRUVERUQoQmFsRm9ybWF0U3RyaW5nKGRlZmF1bHREaXIsICZmb3JtYXR0ZWQpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgSURfVEFSR0VURElSX0VESVRCT1gsIGZvcm1hdHRlZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2VTdHIoZm9ybWF0dGVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2VTdHIoZm9ybWF0dGVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgUmVsZWFzZVN0cihkZWZhdWx0RGlyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElEX0NVU1RPTV9CUk9XU0VfQlVUVE9OOgorICAgICAgICAgICAgYnJvd3NlSW5mby5od25kT3duZXIgPSBfaFduZDsKKyAgICAgICAgICAgIGJyb3dzZUluZm8ucHN6RGlzcGxheU5hbWUgPSB3elBhdGg7CisgICAgICAgICAgICBicm93c2VJbmZvLmxwc3pUaXRsZSA9IF90aGVtZS0+c2N6Q2FwdGlvbjsKKyAgICAgICAgICAgIGJyb3dzZUluZm8udWxGbGFncyA9IEJJRl9SRVRVUk5PTkxZRlNESVJTIHwgQklGX1VTRU5FV1VJOworICAgICAgICAgICAgcGlkbCA9IDo6U0hCcm93c2VGb3JGb2xkZXJXKCZicm93c2VJbmZvKTsKKyAgICAgICAgICAgIGlmIChwaWRsICYmIDo6U0hHZXRQYXRoRnJvbUlETGlzdFcocGlkbCwgd3pQYXRoKSkgeworICAgICAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9UQVJHRVRESVJfRURJVEJPWCwgd3pQYXRoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHBpZGwpIHsKKyAgICAgICAgICAgICAgICA6OkNvVGFza01lbUZyZWUocGlkbCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvLyBNb2RpZnkgY29tbWFuZHMKKyAgICAgICAgY2FzZSBJRF9NT0RJRllfQlVUVE9OOgorICAgICAgICAgICAgLy8gU29tZSB2YXJpYWJsZXMgY2Fubm90IGJlIG1vZGlmaWVkCisgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZVN0cmluZyhMIkluc3RhbGxBbGxVc2Vyc1N0YXRlIiwgTCJkaXNhYmxlIik7CisgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZVN0cmluZyhMIkluc3RhbGxMYXVuY2hlckFsbFVzZXJzU3RhdGUiLCBMImRpc2FibGUiKTsKKyAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKEwiVGFyZ2V0RGlyU3RhdGUiLCBMImRpc2FibGUiKTsKKyAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKEwiQ3VzdG9tQnJvd3NlQnV0dG9uU3RhdGUiLCBMImRpc2FibGUiKTsKKyAgICAgICAgICAgIF9tb2RpZnlpbmcgPSBUUlVFOworICAgICAgICAgICAgR29Ub1BhZ2UoUEFHRV9DVVNUT00xKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSURfUkVQQUlSX0JVVFRPTjoKKyAgICAgICAgICAgIE9uUGxhbihCT09UU1RSQVBQRVJfQUNUSU9OX1JFUEFJUik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElEX1VOSU5TVEFMTF9CVVRUT046CisgICAgICAgICAgICBPblBsYW4oQk9PVFNUUkFQUEVSX0FDVElPTl9VTklOU1RBTEwpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgIExFeGl0OgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdm9pZCBJbnN0YWxsUGFnZV9TaG93KCkgeworICAgICAgICAvLyBFbnN1cmUgdGhlIEFsbCBVc2VycyBpbnN0YWxsIGJ1dHRvbiBoYXMgYSBVQUMgc2hpZWxkCisgICAgICAgIEJPT0wgZWxldmF0ZWQgPSBXaWxsRWxldmF0ZSgpOworICAgICAgICBUaGVtZUNvbnRyb2xFbGV2YXRlcyhfdGhlbWUsIElEX0lOU1RBTExfQlVUVE9OLCBlbGV2YXRlZCk7CisgICAgICAgIFRoZW1lQ29udHJvbEVsZXZhdGVzKF90aGVtZSwgSURfSU5TVEFMTF9TSU1QTEVfQlVUVE9OLCBlbGV2YXRlZCk7CisgICAgICAgIFRoZW1lQ29udHJvbEVsZXZhdGVzKF90aGVtZSwgSURfSU5TVEFMTF9VUEdSQURFX0JVVFRPTiwgZWxldmF0ZWQpOworICAgIH0KKworICAgIHZvaWQgQ3VzdG9tMVBhZ2VfU2hvdygpIHsKKyAgICAgICAgTE9OR0xPTkcgaW5zdGFsbExhdW5jaGVyQWxsVXNlcnM7CisKKyAgICAgICAgaWYgKEZBSUxFRChCYWxHZXROdW1lcmljVmFyaWFibGUoTCJJbnN0YWxsTGF1bmNoZXJBbGxVc2VycyIsICZpbnN0YWxsTGF1bmNoZXJBbGxVc2VycykpKSB7CisgICAgICAgICAgICBpbnN0YWxsTGF1bmNoZXJBbGxVc2VycyA9IDA7CisgICAgICAgIH0KKworICAgICAgICBUaGVtZVNlbmRDb250cm9sTWVzc2FnZShfdGhlbWUsIElEX0NVU1RPTV9JTlNUQUxMX0xBVU5DSEVSX0FMTF9VU0VSU19DSEVDS0JPWCwgQk1fU0VUQ0hFQ0ssCisgICAgICAgICAgICBpbnN0YWxsTGF1bmNoZXJBbGxVc2VycyA/IEJTVF9DSEVDS0VEIDogQlNUX1VOQ0hFQ0tFRCwgMCk7CisKKyAgICAgICAgTE9DX1NUUklORyAqcExvY1N0cmluZyA9IG51bGxwdHI7CisgICAgICAgIExQQ1dTVFIgbG9jS2V5ID0gTCIjKGxvYy5JbmNsdWRlX2xhdW5jaGVySGVscCkiOworICAgICAgICBMT05HTE9ORyBkZXRlY3RlZExhdW5jaGVyOworCisgICAgICAgIGlmIChTVUNDRUVERUQoQmFsR2V0TnVtZXJpY1ZhcmlhYmxlKEwiRGV0ZWN0ZWRMYXVuY2hlciIsICZkZXRlY3RlZExhdW5jaGVyKSkgJiYgZGV0ZWN0ZWRMYXVuY2hlcikgeworICAgICAgICAgICAgbG9jS2V5ID0gTCIjKGxvYy5JbmNsdWRlX2xhdW5jaGVyUmVtb3ZlKSI7CisgICAgICAgIH0gZWxzZSBpZiAoU1VDQ0VFREVEKEJhbEdldE51bWVyaWNWYXJpYWJsZShMIkRldGVjdGVkT2xkTGF1bmNoZXIiLCAmZGV0ZWN0ZWRMYXVuY2hlcikpICYmIGRldGVjdGVkTGF1bmNoZXIpIHsKKyAgICAgICAgICAgIGxvY0tleSA9IEwiIyhsb2MuSW5jbHVkZV9sYXVuY2hlclVwZ3JhZGUpIjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChTVUNDRUVERUQoTG9jR2V0U3RyaW5nKF93aXhMb2MsIGxvY0tleSwgJnBMb2NTdHJpbmcpKSAmJiBwTG9jU3RyaW5nKSB7CisgICAgICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgSURfQ1VTVE9NX0lOQ0xVREVfTEFVTkNIRVJfSEVMUF9MQUJFTCwgcExvY1N0cmluZy0+d3pUZXh0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgQ3VzdG9tMlBhZ2VfU2hvdygpIHsKKyAgICAgICAgSFJFU1VMVCBocjsKKyAgICAgICAgTE9OR0xPTkcgaW5zdGFsbEFsbCwgaW5jbHVkZUxhdW5jaGVyOworICAgICAgICAKKyAgICAgICAgaWYgKEZBSUxFRChCYWxHZXROdW1lcmljVmFyaWFibGUoTCJJbnN0YWxsQWxsVXNlcnMiLCAmaW5zdGFsbEFsbCkpKSB7CisgICAgICAgICAgICBpbnN0YWxsQWxsID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChXaWxsRWxldmF0ZSgpKSB7CisgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbGV2YXRlcyhfdGhlbWUsIElEX0NVU1RPTV9JTlNUQUxMX0JVVFRPTiwgVFJVRSk7CisgICAgICAgICAgICBUaGVtZVNob3dDb250cm9sKF90aGVtZSwgSURfQ1VTVE9NX0JST1dTRV9CVVRUT05fTEFCRUwsIFNXX0hJREUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgVGhlbWVDb250cm9sRWxldmF0ZXMoX3RoZW1lLCBJRF9DVVNUT01fSU5TVEFMTF9CVVRUT04sIEZBTFNFKTsKKyAgICAgICAgICAgIFRoZW1lU2hvd0NvbnRyb2woX3RoZW1lLCBJRF9DVVNUT01fQlJPV1NFX0JVVFRPTl9MQUJFTCwgU1dfU0hPVyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoU1VDQ0VFREVEKEJhbEdldE51bWVyaWNWYXJpYWJsZShMIkluY2x1ZGVfbGF1bmNoZXIiLCAmaW5jbHVkZUxhdW5jaGVyKSkgJiYgaW5jbHVkZUxhdW5jaGVyKSB7CisgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9DVVNUT01fQVNTT0NJQVRFX0ZJTEVTX0NIRUNLQk9YLCBUUlVFKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFRoZW1lU2VuZENvbnRyb2xNZXNzYWdlKF90aGVtZSwgSURfQ1VTVE9NX0FTU09DSUFURV9GSUxFU19DSEVDS0JPWCwgQk1fU0VUQ0hFQ0ssIEJTVF9VTkNIRUNLRUQsIDApOworICAgICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfQ1VTVE9NX0FTU09DSUFURV9GSUxFU19DSEVDS0JPWCwgRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgTFBXU1RSIHRhcmdldERpciA9IG51bGxwdHI7CisgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoTCJUYXJnZXREaXIiLCAmdGFyZ2V0RGlyKTsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgdGFyZ2V0RGlyICYmIHRhcmdldERpclswXSkgeworICAgICAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX1RBUkdFVERJUl9FRElUQk9YLCB0YXJnZXREaXIpOworICAgICAgICAgICAgU3RyRnJlZSh0YXJnZXREaXIpOworICAgICAgICB9IGVsc2UgaWYgKFNVQ0NFRURFRChocikpIHsKKyAgICAgICAgICAgIFN0ckZyZWUodGFyZ2V0RGlyKTsKKyAgICAgICAgICAgIHRhcmdldERpciA9IG51bGxwdHI7CisKKyAgICAgICAgICAgIExQV1NUUiBkZWZhdWx0VGFyZ2V0RGlyID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoTCJEZWZhdWx0Q3VzdG9tVGFyZ2V0RGlyIiwgJmRlZmF1bHRUYXJnZXREaXIpOworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgZGVmYXVsdFRhcmdldERpciAmJiAhZGVmYXVsdFRhcmdldERpclswXSkgeworICAgICAgICAgICAgICAgIFN0ckZyZWUoZGVmYXVsdFRhcmdldERpcik7CisgICAgICAgICAgICAgICAgZGVmYXVsdFRhcmdldERpciA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZSgKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbEFsbCA/IEwiRGVmYXVsdEFsbFVzZXJzVGFyZ2V0RGlyIiA6IEwiRGVmYXVsdEp1c3RGb3JNZVRhcmdldERpciIsCisgICAgICAgICAgICAgICAgICAgICZkZWZhdWx0VGFyZ2V0RGlyCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIpICYmIGRlZmF1bHRUYXJnZXREaXIpIHsKKyAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdFRhcmdldERpclswXSAmJiBTVUNDRUVERUQoQmFsRm9ybWF0U3RyaW5nKGRlZmF1bHRUYXJnZXREaXIsICZ0YXJnZXREaXIpKSkgeworICAgICAgICAgICAgICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgSURfVEFSR0VURElSX0VESVRCT1gsIHRhcmdldERpcik7CisgICAgICAgICAgICAgICAgICAgIFN0ckZyZWUodGFyZ2V0RGlyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgU3RyRnJlZShkZWZhdWx0VGFyZ2V0RGlyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgTW9kaWZ5UGFnZV9TaG93KCkgeworICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9SRVBBSVJfQlVUVE9OLCAhX3N1cHByZXNzUmVwYWlyKTsKKyAgICB9CisKKyAgICB2b2lkIFN1Y2Nlc3NQYWdlX1Nob3coKSB7CisgICAgICAgIC8vIG9uIHRoZSAiU3VjY2VzcyIgcGFnZSwgY2hlY2sgaWYgdGhlIHJlc3RhcnQgb3IgbGF1bmNoIGJ1dHRvbiBzaG91bGQgYmUgZW5hYmxlZC4KKyAgICAgICAgQk9PTCBzaG93UmVzdGFydEJ1dHRvbiA9IEZBTFNFOworICAgICAgICBCT09MIGxhdW5jaFRhcmdldEV4aXN0cyA9IEZBTFNFOworICAgICAgICBMT0NfU1RSSU5HICpzdWNjZXNzVGV4dCA9IG51bGxwdHI7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworICAgICAgICAKKyAgICAgICAgaWYgKF9yZXN0YXJ0UmVxdWlyZWQpIHsKKyAgICAgICAgICAgIGlmIChCT09UU1RSQVBQRVJfUkVTVEFSVF9QUk9NUFQgPT0gX2NvbW1hbmQucmVzdGFydCkgeworICAgICAgICAgICAgICAgIHNob3dSZXN0YXJ0QnV0dG9uID0gVFJVRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChUaGVtZUNvbnRyb2xFeGlzdHMoX3RoZW1lLCBJRF9MQVVOQ0hfQlVUVE9OKSkgeworICAgICAgICAgICAgbGF1bmNoVGFyZ2V0RXhpc3RzID0gQmFsU3RyaW5nVmFyaWFibGVFeGlzdHMoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX1BBVEgpOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChfcGxhbm5lZEFjdGlvbikgeworICAgICAgICBjYXNlIEJPT1RTVFJBUFBFUl9BQ1RJT05fSU5TVEFMTDoKKyAgICAgICAgICAgIGhyID0gTG9jR2V0U3RyaW5nKF93aXhMb2MsIEwiIyhsb2MuU3VjY2Vzc0luc3RhbGxNZXNzYWdlKSIsICZzdWNjZXNzVGV4dCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBCT09UU1RSQVBQRVJfQUNUSU9OX01PRElGWToKKyAgICAgICAgICAgIGhyID0gTG9jR2V0U3RyaW5nKF93aXhMb2MsIEwiIyhsb2MuU3VjY2Vzc01vZGlmeU1lc3NhZ2UpIiwgJnN1Y2Nlc3NUZXh0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJPT1RTVFJBUFBFUl9BQ1RJT05fUkVQQUlSOgorICAgICAgICAgICAgaHIgPSBMb2NHZXRTdHJpbmcoX3dpeExvYywgTCIjKGxvYy5TdWNjZXNzUmVwYWlyTWVzc2FnZSkiLCAmc3VjY2Vzc1RleHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQk9PVFNUUkFQUEVSX0FDVElPTl9VTklOU1RBTEw6CisgICAgICAgICAgICBociA9IExvY0dldFN0cmluZyhfd2l4TG9jLCBMIiMobG9jLlN1Y2Nlc3NSZW1vdmVNZXNzYWdlKSIsICZzdWNjZXNzVGV4dCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdWNjZXNzVGV4dCkgeworICAgICAgICAgICAgTFBXU1RSIGZvcm1hdHRlZFN0cmluZyA9IG51bGxwdHI7CisgICAgICAgICAgICBCYWxGb3JtYXRTdHJpbmcoc3VjY2Vzc1RleHQtPnd6VGV4dCwgJmZvcm1hdHRlZFN0cmluZyk7CisgICAgICAgICAgICBpZiAoZm9ybWF0dGVkU3RyaW5nKSB7CisgICAgICAgICAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX1NVQ0NFU1NfVEVYVCwgZm9ybWF0dGVkU3RyaW5nKTsKKyAgICAgICAgICAgICAgICBTdHJGcmVlKGZvcm1hdHRlZFN0cmluZyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9MQVVOQ0hfQlVUVE9OLCBsYXVuY2hUYXJnZXRFeGlzdHMgJiYgQk9PVFNUUkFQUEVSX0FDVElPTl9VTklOU1RBTEwgPCBfcGxhbm5lZEFjdGlvbik7CisgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX1NVQ0NFU1NfUkVTVEFSVF9URVhULCBzaG93UmVzdGFydEJ1dHRvbik7CisgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX1NVQ0NFU1NfUkVTVEFSVF9CVVRUT04sIHNob3dSZXN0YXJ0QnV0dG9uKTsKKyAgICB9CisKKyAgICB2b2lkIEZhaWx1cmVQYWdlX1Nob3coKSB7CisgICAgICAgIC8vIG9uIHRoZSAiRmFpbHVyZSIgcGFnZSwgc2hvdyBlcnJvciBtZXNzYWdlIGFuZCBjaGVjayBpZiB0aGUgcmVzdGFydCBidXR0b24gc2hvdWxkIGJlIGVuYWJsZWQuCisKKyAgICAgICAgLy8gaWYgdGhlcmUgaXMgYSBsb2cgZmlsZSB2YXJpYWJsZSB0aGVuIHdlJ2xsIGFzc3VtZSB0aGUgbG9nIGZpbGUgZXhpc3RzLgorICAgICAgICBCT09MIHNob3dMb2dMaW5rID0gKF9idW5kbGUuc2N6TG9nVmFyaWFibGUgJiYgKl9idW5kbGUuc2N6TG9nVmFyaWFibGUpOworICAgICAgICBCT09MIHNob3dFcnJvck1lc3NhZ2UgPSBGQUxTRTsKKyAgICAgICAgQk9PTCBzaG93UmVzdGFydEJ1dHRvbiA9IEZBTFNFOworCisgICAgICAgIGlmIChGQUlMRUQoX2hyRmluYWwpKSB7CisgICAgICAgICAgICBMUFdTVFIgdW5mb3JtYXR0ZWRUZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIExQV1NUUiB0ZXh0ID0gbnVsbHB0cjsKKworICAgICAgICAgICAgLy8gSWYgd2Uga25vdyB0aGUgZmFpbHVyZSBtZXNzYWdlLCB1c2UgdGhhdC4KKyAgICAgICAgICAgIGlmIChfZmFpbGVkTWVzc2FnZSAmJiAqX2ZhaWxlZE1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICBTdHJBbGxvY1N0cmluZygmdW5mb3JtYXR0ZWRUZXh0LCBfZmFpbGVkTWVzc2FnZSwgMCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIHRyeSB0byBnZXQgdGhlIGVycm9yIG1lc3NhZ2UgZnJvbSB0aGUgZXJyb3IgY29kZS4KKyAgICAgICAgICAgICAgICBTdHJBbGxvY0Zyb21FcnJvcigmdW5mb3JtYXR0ZWRUZXh0LCBfaHJGaW5hbCwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgaWYgKCF1bmZvcm1hdHRlZFRleHQgfHwgISp1bmZvcm1hdHRlZFRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyQWxsb2NGcm9tRXJyb3IoJnVuZm9ybWF0dGVkVGV4dCwgRV9GQUlMLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChFX1dJWFNUREJBX0NPTkRJVElPTl9GQUlMRUQgPT0gX2hyRmluYWwpIHsKKyAgICAgICAgICAgICAgICBpZiAodW5mb3JtYXR0ZWRUZXh0KSB7CisgICAgICAgICAgICAgICAgICAgIFN0ckFsbG9jU3RyaW5nKCZ0ZXh0LCB1bmZvcm1hdHRlZFRleHQsIDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgU3RyQWxsb2NGb3JtYXR0ZWQoJnRleHQsIEwiMHglMDh4IC0gJWxzIiwgX2hyRmluYWwsIHVuZm9ybWF0dGVkVGV4dCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0ZXh0KSB7CisgICAgICAgICAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX0ZBSUxVUkVfTUVTU0FHRV9URVhULCB0ZXh0KTsKKyAgICAgICAgICAgICAgICBzaG93RXJyb3JNZXNzYWdlID0gVFJVRTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUmVsZWFzZVN0cih0ZXh0KTsKKyAgICAgICAgICAgIFJlbGVhc2VTdHIodW5mb3JtYXR0ZWRUZXh0KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChfcmVzdGFydFJlcXVpcmVkICYmIEJPT1RTVFJBUFBFUl9SRVNUQVJUX1BST01QVCA9PSBfY29tbWFuZC5yZXN0YXJ0KSB7CisgICAgICAgICAgICBzaG93UmVzdGFydEJ1dHRvbiA9IFRSVUU7CisgICAgICAgIH0KKworICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9GQUlMVVJFX0xPR0ZJTEVfTElOSywgc2hvd0xvZ0xpbmspOworICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9GQUlMVVJFX01FU1NBR0VfVEVYVCwgc2hvd0Vycm9yTWVzc2FnZSk7CisgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX0ZBSUxVUkVfUkVTVEFSVF9URVhULCBzaG93UmVzdGFydEJ1dHRvbik7CisgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX0ZBSUxVUkVfUkVTVEFSVF9CVVRUT04sIHNob3dSZXN0YXJ0QnV0dG9uKTsKKyAgICB9CisKKworcHVibGljOiAvLyBJQm9vdHN0cmFwcGVyQXBwbGljYXRpb24KKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUCBPblN0YXJ0dXAoKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworICAgICAgICBEV09SRCBkd1VJVGhyZWFkSWQgPSAwOworCisgICAgICAgIC8vIGNyZWF0ZSBVSSB0aHJlYWQKKyAgICAgICAgX2hVaVRocmVhZCA9IDo6Q3JlYXRlVGhyZWFkKG51bGxwdHIsIDAsIFVpVGhyZWFkUHJvYywgdGhpcywgMCwgJmR3VUlUaHJlYWRJZCk7CisgICAgICAgIGlmICghX2hVaVRocmVhZCkgeworICAgICAgICAgICAgRXhpdFdpdGhMYXN0RXJyb3IoaHIsICJGYWlsZWQgdG8gY3JlYXRlIFVJIHRocmVhZC4iKTsKKyAgICAgICAgfQorCisgICAgTEV4aXQ6CisgICAgICAgIHJldHVybiBocjsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uU2h1dGRvd24oKSB7CisgICAgICAgIGludCBuUmVzdWx0ID0gSUROT0FDVElPTjsKKworICAgICAgICAvLyB3YWl0IGZvciBVSSB0aHJlYWQgdG8gdGVybWluYXRlCisgICAgICAgIGlmIChfaFVpVGhyZWFkKSB7CisgICAgICAgICAgICA6OldhaXRGb3JTaW5nbGVPYmplY3QoX2hVaVRocmVhZCwgSU5GSU5JVEUpOworICAgICAgICAgICAgUmVsZWFzZUhhbmRsZShfaFVpVGhyZWFkKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIGEgcmVzdGFydCB3YXMgcmVxdWlyZWQuCisgICAgICAgIGlmIChfcmVzdGFydFJlcXVpcmVkICYmIF9hbGxvd1Jlc3RhcnQpIHsKKyAgICAgICAgICAgIG5SZXN1bHQgPSBJRFJFU1RBUlQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gblJlc3VsdDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPbkRldGVjdFJlbGF0ZWRNc2lQYWNrYWdlKAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3elBhY2thZ2VJZCwKKyAgICAgICAgX19pbl96IExQQ1dTVFIgLyp3elByb2R1Y3RDb2RlKi8sCisgICAgICAgIF9faW4gQk9PTCBmUGVyTWFjaGluZSwKKyAgICAgICAgX19pbiBEV09SRDY0IC8qZHc2NFZlcnNpb24qLywKKyAgICAgICAgX19pbiBCT09UU1RSQVBQRVJfUkVMQVRFRF9PUEVSQVRJT04gb3BlcmF0aW9uCisgICAgKSB7CisgICAgICAgIGlmIChCT09UU1RSQVBQRVJfUkVMQVRFRF9PUEVSQVRJT05fTUFKT1JfVVBHUkFERSA9PSBvcGVyYXRpb24gJiYgCisgICAgICAgICAgICAoQ1NUUl9FUVVBTCA9PSA6OkNvbXBhcmVTdHJpbmdXKExPQ0FMRV9ORVVUUkFMLCAwLCB3elBhY2thZ2VJZCwgLTEsIEwibGF1bmNoZXJfQWxsVXNlcnMiLCAtMSkgfHwKKyAgICAgICAgICAgICBDU1RSX0VRVUFMID09IDo6Q29tcGFyZVN0cmluZ1coTE9DQUxFX05FVVRSQUwsIDAsIHd6UGFja2FnZUlkLCAtMSwgTCJsYXVuY2hlcl9KdXN0Rm9yTWUiLCAtMSkpKSB7CisgICAgICAgICAgICBhdXRvIGhyID0gTG9hZEFzc29jaWF0ZUZpbGVzU3RhdGVGcm9tS2V5KF9lbmdpbmUsIGZQZXJNYWNoaW5lID8gSEtFWV9MT0NBTF9NQUNISU5FIDogSEtFWV9DVVJSRU5UX1VTRVIpOworICAgICAgICAgICAgaWYgKGhyID09IFNfT0spIHsKKyAgICAgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoTCJBc3NvY2lhdGVGaWxlcyIsIDEpOworICAgICAgICAgICAgfSBlbHNlIGlmIChGQUlMRUQoaHIpKSB7CisgICAgICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfRVJST1IsICJGYWlsZWQgdG8gbG9hZCBBc3NvY2lhdGVGaWxlcyBzdGF0ZTogZXJyb3IgY29kZSAweCUwOFgiLCBocik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhMIkluY2x1ZGVfbGF1bmNoZXIiLCAxKTsKKyAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhMIkRldGVjdGVkT2xkTGF1bmNoZXIiLCAxKTsKKyAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhMIkluc3RhbGxMYXVuY2hlckFsbFVzZXJzIiwgZlBlck1hY2hpbmUgPyAxIDogMCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIENoZWNrQ2FuY2VsZWQoKSA/IElEQ0FOQ0VMIDogSUROT0FDVElPTjsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPbkRldGVjdFJlbGF0ZWRCdW5kbGUoCisgICAgICAgIF9faW4gTFBDV1NUUiB3ekJ1bmRsZUlkLAorICAgICAgICBfX2luIEJPT1RTVFJBUFBFUl9SRUxBVElPTl9UWVBFIHJlbGF0aW9uVHlwZSwKKyAgICAgICAgX19pbiBMUENXU1RSIC8qd3pCdW5kbGVUYWcqLywKKyAgICAgICAgX19pbiBCT09MIGZQZXJNYWNoaW5lLAorICAgICAgICBfX2luIERXT1JENjQgLypkdzY0VmVyc2lvbiovLAorICAgICAgICBfX2luIEJPT1RTVFJBUFBFUl9SRUxBVEVEX09QRVJBVElPTiBvcGVyYXRpb24KKyAgICApIHsKKyAgICAgICAgQmFsSW5mb0FkZFJlbGF0ZWRCdW5kbGVBc1BhY2thZ2UoJl9idW5kbGUucGFja2FnZXMsIHd6QnVuZGxlSWQsIHJlbGF0aW9uVHlwZSwgZlBlck1hY2hpbmUpOworCisgICAgICAgIC8vIFJlbWVtYmVyIHdoZW4gb3VyIGJ1bmRsZSB3b3VsZCBjYXVzZSBhIGRvd25ncmFkZS4KKyAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9SRUxBVEVEX09QRVJBVElPTl9ET1dOR1JBREUgPT0gb3BlcmF0aW9uKSB7CisgICAgICAgICAgICBfZG93bmdyYWRpbmdPdGhlclZlcnNpb24gPSBUUlVFOworICAgICAgICB9IGVsc2UgaWYgKEJPT1RTVFJBUFBFUl9SRUxBVEVEX09QRVJBVElPTl9NQUpPUl9VUEdSQURFID09IG9wZXJhdGlvbikgeworICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJEZXRlY3RlZCBwcmV2aW91cyB2ZXJzaW9uIC0gcGxhbm5pbmcgdXBncmFkZSIpOworICAgICAgICAgICAgX3VwZ3JhZGluZyA9IFRSVUU7CisKKyAgICAgICAgICAgIExvYWRPcHRpb25hbEZlYXR1cmVTdGF0ZXMoX2VuZ2luZSk7CisgICAgICAgIH0gZWxzZSBpZiAoQk9PVFNUUkFQUEVSX1JFTEFURURfT1BFUkFUSU9OX05PTkUgPT0gb3BlcmF0aW9uKSB7CisgICAgICAgICAgICBpZiAoX2NvbW1hbmQuYWN0aW9uID09IEJPT1RTVFJBUFBFUl9BQ1RJT05fSU5TVEFMTCkgeworICAgICAgICAgICAgICAgIExPQ19TVFJJTkcgKnBMb2NTdHJpbmcgPSBudWxscHRyOworICAgICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoTG9jR2V0U3RyaW5nKF93aXhMb2MsIEwiIyhsb2MuRmFpbHVyZUV4aXN0aW5nSW5zdGFsbCkiLCAmcExvY1N0cmluZykpICYmIHBMb2NTdHJpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgQmFsRm9ybWF0U3RyaW5nKHBMb2NTdHJpbmctPnd6VGV4dCwgJl9mYWlsZWRNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBCYWxGb3JtYXRTdHJpbmcoTCJDYW5ub3QgaW5zdGFsbCBbV2l4QnVuZGxlTmFtZV0gYmVjYXVzZSBpdCBpcyBhbHJlYWR5IGluc3RhbGxlZC4iLCAmX2ZhaWxlZE1lc3NhZ2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBCYWxMb2coCisgICAgICAgICAgICAgICAgICAgIEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICJSZWxhdGVkIGJ1bmRsZSAlbHMgaXMgcHJldmVudGluZyBpbnN0YWxsIiwKKyAgICAgICAgICAgICAgICAgICAgd3pCdW5kbGVJZAorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9GQUlMRUQsIEVfV0lYU1REQkFfQ09ORElUSU9OX0ZBSUxFRCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gQ2hlY2tDYW5jZWxlZCgpID8gSURDQU5DRUwgOiBJRE9LOworICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKHZvaWQpIE9uRGV0ZWN0UGFja2FnZUNvbXBsZXRlKAorICAgICAgICBfX2luIExQQ1dTVFIgd3pQYWNrYWdlSWQsCisgICAgICAgIF9faW4gSFJFU1VMVCBoclN0YXR1cywKKyAgICAgICAgX19pbiBCT09UU1RSQVBQRVJfUEFDS0FHRV9TVEFURSBzdGF0ZQorICAgICkgeworICAgICAgICBpZiAoRkFJTEVEKGhyU3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQk9PTCBkZXRlY3RlZExhdW5jaGVyID0gRkFMU0U7CisgICAgICAgIEhLRVkgaGtleSA9IEhLRVlfTE9DQUxfTUFDSElORTsKKyAgICAgICAgaWYgKENTVFJfRVFVQUwgPT0gOjpDb21wYXJlU3RyaW5nVyhMT0NBTEVfTkVVVFJBTCwgMCwgd3pQYWNrYWdlSWQsIC0xLCBMImxhdW5jaGVyX0FsbFVzZXJzIiwgLTEpKSB7CisgICAgICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX1BBQ0tBR0VfU1RBVEVfUFJFU0VOVCA9PSBzdGF0ZSB8fCBCT09UU1RSQVBQRVJfUEFDS0FHRV9TVEFURV9PQlNPTEVURSA9PSBzdGF0ZSkgeworICAgICAgICAgICAgICAgIGRldGVjdGVkTGF1bmNoZXIgPSBUUlVFOworICAgICAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhMIkluc3RhbGxMYXVuY2hlckFsbFVzZXJzIiwgMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoQ1NUUl9FUVVBTCA9PSA6OkNvbXBhcmVTdHJpbmdXKExPQ0FMRV9ORVVUUkFMLCAwLCB3elBhY2thZ2VJZCwgLTEsIEwibGF1bmNoZXJfSnVzdEZvck1lIiwgLTEpKSB7CisgICAgICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX1BBQ0tBR0VfU1RBVEVfUFJFU0VOVCA9PSBzdGF0ZSB8fCBCT09UU1RSQVBQRVJfUEFDS0FHRV9TVEFURV9PQlNPTEVURSA9PSBzdGF0ZSkgeworICAgICAgICAgICAgICAgIGRldGVjdGVkTGF1bmNoZXIgPSBUUlVFOworICAgICAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhMIkluc3RhbGxMYXVuY2hlckFsbFVzZXJzIiwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGV0ZWN0ZWRMYXVuY2hlcikgeworICAgICAgICAgICAgLyogV2hlbiB3ZSBkZXRlY3QgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgbGF1bmNoZXIuICovCisgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoTCJJbmNsdWRlX2xhdW5jaGVyIiwgMSk7CisgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoTCJEZXRlY3RlZExhdW5jaGVyIiwgMSk7CisgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZVN0cmluZyhMIkluY2x1ZGVfbGF1bmNoZXJTdGF0ZSIsIEwiZGlzYWJsZSIpOworICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVTdHJpbmcoTCJJbnN0YWxsTGF1bmNoZXJBbGxVc2Vyc1N0YXRlIiwgTCJkaXNhYmxlIik7CisKKyAgICAgICAgICAgIGF1dG8gaHIgPSBMb2FkQXNzb2NpYXRlRmlsZXNTdGF0ZUZyb21LZXkoX2VuZ2luZSwgaGtleSk7CisgICAgICAgICAgICBpZiAoaHIgPT0gU19PSykgeworICAgICAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhMIkFzc29jaWF0ZUZpbGVzIiwgMSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKEZBSUxFRChocikpIHsKKyAgICAgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9FUlJPUiwgIkZhaWxlZCB0byBsb2FkIEFzc29jaWF0ZUZpbGVzIHN0YXRlOiBlcnJvciBjb2RlIDB4JTA4WCIsIGhyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKHZvaWQpIE9uRGV0ZWN0Q29tcGxldGUoX19pbiBIUkVTVUxUIGhyU3RhdHVzKSB7CisgICAgICAgIGlmIChTVUNDRUVERUQoaHJTdGF0dXMpICYmIF9iYUZ1bmN0aW9uKSB7CisgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIlJ1bm5pbmcgZGV0ZWN0IGNvbXBsZXRlIEJBIGZ1bmN0aW9uIik7CisgICAgICAgICAgICBfYmFGdW5jdGlvbi0+T25EZXRlY3RDb21wbGV0ZSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFNVQ0NFRURFRChoclN0YXR1cykpIHsKKyAgICAgICAgICAgIGhyU3RhdHVzID0gRXZhbHVhdGVDb25kaXRpb25zKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoU1VDQ0VFREVEKGhyU3RhdHVzKSkgeworICAgICAgICAgICAgLy8gRW5zdXJlIHRoZSBkZWZhdWx0IHBhdGggaGFzIGJlZW4gc2V0CisgICAgICAgICAgICBoclN0YXR1cyA9IEVuc3VyZVRhcmdldERpcigpOworICAgICAgICB9CisKKyAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9ERVRFQ1RFRCwgaHJTdGF0dXMpOworCisgICAgICAgIC8vIElmIHdlJ3JlIG5vdCBpbnRlcmFjdGluZyB3aXRoIHRoZSB1c2VyIG9yIHdlJ3JlIGRvaW5nIGEgbGF5b3V0IG9yIHdlJ3JlIGp1c3QgYWZ0ZXIgYSBmb3JjZSByZXN0YXJ0CisgICAgICAgIC8vIHRoZW4gYXV0b21hdGljYWxseSBzdGFydCBwbGFubmluZy4KKyAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9ESVNQTEFZX0ZVTEwgPiBfY29tbWFuZC5kaXNwbGF5IHx8CisgICAgICAgICAgICBCT09UU1RSQVBQRVJfQUNUSU9OX0xBWU9VVCA9PSBfY29tbWFuZC5hY3Rpb24gfHwKKyAgICAgICAgICAgIEJPT1RTVFJBUFBFUl9BQ1RJT05fVU5JTlNUQUxMID09IF9jb21tYW5kLmFjdGlvbiB8fAorICAgICAgICAgICAgQk9PVFNUUkFQUEVSX1JFU1VNRV9UWVBFX1JFQk9PVCA9PSBfY29tbWFuZC5yZXN1bWVUeXBlKSB7CisgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyU3RhdHVzKSkgeworICAgICAgICAgICAgICAgIDo6UG9zdE1lc3NhZ2VXKF9oV25kLCBXTV9QWUJBX1BMQU5fUEFDS0FHRVMsIDAsIF9jb21tYW5kLmFjdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uUGxhblJlbGF0ZWRCdW5kbGUoCisgICAgICAgIF9faW5feiBMUENXU1RSIC8qd3pCdW5kbGVJZCovLAorICAgICAgICBfX2lub3V0X3ogQk9PVFNUUkFQUEVSX1JFUVVFU1RfU1RBVEUqIHBSZXF1ZXN0ZWRTdGF0ZQorICAgICkgeworICAgICAgICByZXR1cm4gQ2hlY2tDYW5jZWxlZCgpID8gSURDQU5DRUwgOiBJRE9LOworICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKGludCkgT25QbGFuUGFja2FnZUJlZ2luKAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3elBhY2thZ2VJZCwKKyAgICAgICAgX19pbm91dCBCT09UU1RSQVBQRVJfUkVRVUVTVF9TVEFURSAqcFJlcXVlc3RTdGF0ZQorICAgICkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgQkFMX0lORk9fUEFDS0FHRSogcFBhY2thZ2UgPSBudWxscHRyOworCisgICAgICAgIGlmIChfbmV4dFBhY2thZ2VBZnRlclJlc3RhcnQpIHsKKyAgICAgICAgICAgIC8vIEFmdGVyIHJlc3RhcnQgd2UgbmVlZCB0byBmaW5pc2ggdGhlIGRlcGVuZGVuY3kgcmVnaXN0cmF0aW9uIGZvciBvdXIgcGFja2FnZSBzbyBhbGxvdyB0aGUgcGFja2FnZQorICAgICAgICAgICAgLy8gdG8gZ28gcHJlc2VudC4KKyAgICAgICAgICAgIGlmIChDU1RSX0VRVUFMID09IDo6Q29tcGFyZVN0cmluZ1coTE9DQUxFX05FVVRSQUwsIDAsIHd6UGFja2FnZUlkLCAtMSwgX25leHRQYWNrYWdlQWZ0ZXJSZXN0YXJ0LCAtMSkpIHsKKyAgICAgICAgICAgICAgICAvLyBEbyBub3QgYWxsb3cgYSByZXBhaXIgYmVjYXVzZSB0aGF0IGNvdWxkIHB1dCB1cyBpbiBhIHBlcnBldHVhbCByZXN0YXJ0IGxvb3AuCisgICAgICAgICAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9SRVFVRVNUX1NUQVRFX1JFUEFJUiA9PSAqcFJlcXVlc3RTdGF0ZSkgeworICAgICAgICAgICAgICAgICAgICAqcFJlcXVlc3RTdGF0ZSA9IEJPT1RTVFJBUFBFUl9SRVFVRVNUX1NUQVRFX1BSRVNFTlQ7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgUmVsZWFzZU51bGxTdHIoX25leHRQYWNrYWdlQWZ0ZXJSZXN0YXJ0KTsgLy8gbm8gbW9yZSBza2lwcGluZyBub3cuCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIG5vdCB0aGUgbWF0Y2hpbmcgcGFja2FnZSwgc28gc2tpcCBpdC4KKyAgICAgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIlNraXBwaW5nIHBhY2thZ2U6ICVscywgYWZ0ZXIgcmVzdGFydCBiZWNhdXNlIGl0IHdhcyBhcHBsaWVkIGJlZm9yZSB0aGUgcmVzdGFydC4iLCB3elBhY2thZ2VJZCk7CisKKyAgICAgICAgICAgICAgICAqcFJlcXVlc3RTdGF0ZSA9IEJPT1RTVFJBUFBFUl9SRVFVRVNUX1NUQVRFX05PTkU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoKF9wbGFubmVkQWN0aW9uID09IEJPT1RTVFJBUFBFUl9BQ1RJT05fSU5TVEFMTCB8fCBfcGxhbm5lZEFjdGlvbiA9PSBCT09UU1RSQVBQRVJfQUNUSU9OX01PRElGWSkgJiYKKyAgICAgICAgICAgICAgICAgICBTVUNDRUVERUQoQmFsSW5mb0ZpbmRQYWNrYWdlQnlJZCgmX2J1bmRsZS5wYWNrYWdlcywgd3pQYWNrYWdlSWQsICZwUGFja2FnZSkpKSB7CisgICAgICAgICAgICBCT09MIGYgPSBGQUxTRTsKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQoX2VuZ2luZS0+RXZhbHVhdGVDb25kaXRpb24ocFBhY2thZ2UtPnNjekluc3RhbGxDb25kaXRpb24sICZmKSkgJiYgZikgeworICAgICAgICAgICAgICAgICpwUmVxdWVzdFN0YXRlID0gQk9PVFNUUkFQUEVSX1JFUVVFU1RfU1RBVEVfUFJFU0VOVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBDaGVja0NhbmNlbGVkKCkgPyBJRENBTkNFTCA6IElET0s7CisgICAgfQorCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKGludCkgT25QbGFuTXNpRmVhdHVyZSgKKyAgICAgICAgX19pbl96IExQQ1dTVFIgd3pQYWNrYWdlSWQsCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6RmVhdHVyZUlkLAorICAgICAgICBfX2lub3V0IEJPT1RTVFJBUFBFUl9GRUFUVVJFX1NUQVRFKiBwUmVxdWVzdGVkU3RhdGUKKyAgICApIHsKKyAgICAgICAgTE9OR0xPTkcgaW5zdGFsbDsKKyAgICAgICAgCisgICAgICAgIGlmICh3Y3NjbXAod3pGZWF0dXJlSWQsIEwiQXNzb2NpYXRlRmlsZXMiKSA9PSAwIHx8IHdjc2NtcCh3ekZlYXR1cmVJZCwgTCJTaG9ydGN1dHMiKSA9PSAwKSB7CisgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKF9lbmdpbmUtPkdldFZhcmlhYmxlTnVtZXJpYyh3ekZlYXR1cmVJZCwgJmluc3RhbGwpKSAmJiBpbnN0YWxsKSB7CisgICAgICAgICAgICAgICAgKnBSZXF1ZXN0ZWRTdGF0ZSA9IEJPT1RTVFJBUFBFUl9GRUFUVVJFX1NUQVRFX0xPQ0FMOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAqcFJlcXVlc3RlZFN0YXRlID0gQk9PVFNUUkFQUEVSX0ZFQVRVUkVfU1RBVEVfQUJTRU5UOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgKnBSZXF1ZXN0ZWRTdGF0ZSA9IEJPT1RTVFJBUFBFUl9GRUFUVVJFX1NUQVRFX0xPQ0FMOworICAgICAgICB9CisgICAgICAgIHJldHVybiBDaGVja0NhbmNlbGVkKCkgPyBJRENBTkNFTCA6IElETk9BQ1RJT047CisgICAgfQorCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKHZvaWQpIE9uUGxhbkNvbXBsZXRlKF9faW4gSFJFU1VMVCBoclN0YXR1cykgeworICAgICAgICBpZiAoU1VDQ0VFREVEKGhyU3RhdHVzKSAmJiBfYmFGdW5jdGlvbikgeworICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJSdW5uaW5nIHBsYW4gY29tcGxldGUgQkEgZnVuY3Rpb24iKTsKKyAgICAgICAgICAgIF9iYUZ1bmN0aW9uLT5PblBsYW5Db21wbGV0ZSgpOworICAgICAgICB9CisKKyAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9QTEFOTkVELCBoclN0YXR1cyk7CisKKyAgICAgICAgaWYgKFNVQ0NFRURFRChoclN0YXR1cykpIHsKKyAgICAgICAgICAgIDo6UG9zdE1lc3NhZ2VXKF9oV25kLCBXTV9QWUJBX0FQUExZX1BBQ0tBR0VTLCAwLCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIF9zdGFydGVkRXhlY3V0aW9uID0gRkFMU0U7CisgICAgICAgIF9jYWxjdWxhdGVkQ2FjaGVQcm9ncmVzcyA9IDA7CisgICAgICAgIF9jYWxjdWxhdGVkRXhlY3V0ZVByb2dyZXNzID0gMDsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uQ2FjaGVQYWNrYWdlQmVnaW4oCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6UGFja2FnZUlkLAorICAgICAgICBfX2luIERXT1JEIGNDYWNoZVBheWxvYWRzLAorICAgICAgICBfX2luIERXT1JENjQgZHc2NFBhY2thZ2VDYWNoZVNpemUKKyAgICApIHsKKyAgICAgICAgaWYgKHd6UGFja2FnZUlkICYmICp3elBhY2thZ2VJZCkgeworICAgICAgICAgICAgQkFMX0lORk9fUEFDS0FHRSogcFBhY2thZ2UgPSBudWxscHRyOworICAgICAgICAgICAgSFJFU1VMVCBociA9IEJhbEluZm9GaW5kUGFja2FnZUJ5SWQoJl9idW5kbGUucGFja2FnZXMsIHd6UGFja2FnZUlkLCAmcFBhY2thZ2UpOworICAgICAgICAgICAgTFBDV1NUUiB3eiA9IChTVUNDRUVERUQoaHIpICYmIHBQYWNrYWdlLT5zY3pEaXNwbGF5TmFtZSkgPyBwUGFja2FnZS0+c2N6RGlzcGxheU5hbWUgOiB3elBhY2thZ2VJZDsKKworICAgICAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX0NBQ0hFX1BST0dSRVNTX1BBQ0tBR0VfVEVYVCwgd3opOworCisgICAgICAgICAgICAvLyBJZiBzb21ldGhpbmcgc3RhcnRlZCBleGVjdXRpbmcsIGxlYXZlIGl0IGluIHRoZSBvdmVyYWxsIHByb2dyZXNzIHRleHQuCisgICAgICAgICAgICBpZiAoIV9zdGFydGVkRXhlY3V0aW9uKSB7CisgICAgICAgICAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX09WRVJBTExfUFJPR1JFU1NfUEFDS0FHRV9URVhULCB3eik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gX19zdXBlcjo6T25DYWNoZVBhY2thZ2VCZWdpbih3elBhY2thZ2VJZCwgY0NhY2hlUGF5bG9hZHMsIGR3NjRQYWNrYWdlQ2FjaGVTaXplKTsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uQ2FjaGVBY3F1aXJlUHJvZ3Jlc3MoCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6UGFja2FnZU9yQ29udGFpbmVySWQsCisgICAgICAgIF9faW5fel9vcHQgTFBDV1NUUiB3elBheWxvYWRJZCwKKyAgICAgICAgX19pbiBEV09SRDY0IGR3NjRQcm9ncmVzcywKKyAgICAgICAgX19pbiBEV09SRDY0IGR3NjRUb3RhbCwKKyAgICAgICAgX19pbiBEV09SRCBkd092ZXJhbGxQZXJjZW50YWdlCisgICAgKSB7CisgICAgICAgIFdDSEFSIHd6UHJvZ3Jlc3NbNV0gPSB7IH07CisKKyNpZmRlZiBERUJVRworICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIlBZQkE6IE9uQ2FjaGVBY3F1aXJlUHJvZ3Jlc3MoKSAtIGNvbnRhaW5lci9wYWNrYWdlOiAlbHMsIHBheWxvYWQ6ICVscywgcHJvZ3Jlc3M6ICVJNjR1LCB0b3RhbDogJUk2NHUsIG92ZXJhbGwgcHJvZ3Jlc3M6ICV1JSUiLCB3elBhY2thZ2VPckNvbnRhaW5lcklkLCB3elBheWxvYWRJZCwgZHc2NFByb2dyZXNzLCBkdzY0VG90YWwsIGR3T3ZlcmFsbFBlcmNlbnRhZ2UpOworI2VuZGlmCisKKyAgICAgICAgOjpTdHJpbmdDY2hQcmludGZXKHd6UHJvZ3Jlc3MsIGNvdW50b2Yod3pQcm9ncmVzcyksIEwiJXUlJSIsIGR3T3ZlcmFsbFBlcmNlbnRhZ2UpOworICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgSURfQ0FDSEVfUFJPR1JFU1NfVEVYVCwgd3pQcm9ncmVzcyk7CisKKyAgICAgICAgVGhlbWVTZXRQcm9ncmVzc0NvbnRyb2woX3RoZW1lLCBJRF9DQUNIRV9QUk9HUkVTU19CQVIsIGR3T3ZlcmFsbFBlcmNlbnRhZ2UpOworCisgICAgICAgIF9jYWxjdWxhdGVkQ2FjaGVQcm9ncmVzcyA9IGR3T3ZlcmFsbFBlcmNlbnRhZ2UgKiBQWUJBX0FDUVVJUkVfUEVSQ0VOVEFHRSAvIDEwMDsKKyAgICAgICAgVGhlbWVTZXRQcm9ncmVzc0NvbnRyb2woX3RoZW1lLCBJRF9PVkVSQUxMX0NBTENVTEFURURfUFJPR1JFU1NfQkFSLCBfY2FsY3VsYXRlZENhY2hlUHJvZ3Jlc3MgKyBfY2FsY3VsYXRlZEV4ZWN1dGVQcm9ncmVzcyk7CisKKyAgICAgICAgU2V0VGFza2JhckJ1dHRvblByb2dyZXNzKF9jYWxjdWxhdGVkQ2FjaGVQcm9ncmVzcyArIF9jYWxjdWxhdGVkRXhlY3V0ZVByb2dyZXNzKTsKKworICAgICAgICByZXR1cm4gX19zdXBlcjo6T25DYWNoZUFjcXVpcmVQcm9ncmVzcyh3elBhY2thZ2VPckNvbnRhaW5lcklkLCB3elBheWxvYWRJZCwgZHc2NFByb2dyZXNzLCBkdzY0VG90YWwsIGR3T3ZlcmFsbFBlcmNlbnRhZ2UpOworICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKGludCkgT25DYWNoZUFjcXVpcmVDb21wbGV0ZSgKKyAgICAgICAgX19pbl96IExQQ1dTVFIgd3pQYWNrYWdlT3JDb250YWluZXJJZCwKKyAgICAgICAgX19pbl96X29wdCBMUENXU1RSIHd6UGF5bG9hZElkLAorICAgICAgICBfX2luIEhSRVNVTFQgaHJTdGF0dXMsCisgICAgICAgIF9faW4gaW50IG5SZWNvbW1lbmRhdGlvbgorICAgICkgeworICAgICAgICBTZXRQcm9ncmVzc1N0YXRlKGhyU3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIF9fc3VwZXI6Ok9uQ2FjaGVBY3F1aXJlQ29tcGxldGUod3pQYWNrYWdlT3JDb250YWluZXJJZCwgd3pQYXlsb2FkSWQsIGhyU3RhdHVzLCBuUmVjb21tZW5kYXRpb24pOworICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKGludCkgT25DYWNoZVZlcmlmeUNvbXBsZXRlKAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3elBhY2thZ2VJZCwKKyAgICAgICAgX19pbl96IExQQ1dTVFIgd3pQYXlsb2FkSWQsCisgICAgICAgIF9faW4gSFJFU1VMVCBoclN0YXR1cywKKyAgICAgICAgX19pbiBpbnQgblJlY29tbWVuZGF0aW9uCisgICAgKSB7CisgICAgICAgIFNldFByb2dyZXNzU3RhdGUoaHJTdGF0dXMpOworICAgICAgICByZXR1cm4gX19zdXBlcjo6T25DYWNoZVZlcmlmeUNvbXBsZXRlKHd6UGFja2FnZUlkLCB3elBheWxvYWRJZCwgaHJTdGF0dXMsIG5SZWNvbW1lbmRhdGlvbik7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8odm9pZCkgT25DYWNoZUNvbXBsZXRlKF9faW4gSFJFU1VMVCAvKmhyU3RhdHVzKi8pIHsKKyAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX0NBQ0hFX1BST0dSRVNTX1BBQ0tBR0VfVEVYVCwgTCIiKTsKKyAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9DQUNIRUQsIFNfT0spOyAvLyB3ZSBhbHdheXMgcmV0dXJuIHN1Y2Nlc3MgaGVyZSBhbmQgbGV0IE9uQXBwbHlDb21wbGV0ZSgpIGRlYWwgd2l0aCB0aGUgZXJyb3IuCisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPbkVycm9yKAorICAgICAgICBfX2luIEJPT1RTVFJBUFBFUl9FUlJPUl9UWVBFIGVycm9yVHlwZSwKKyAgICAgICAgX19pbiBMUENXU1RSIHd6UGFja2FnZUlkLAorICAgICAgICBfX2luIERXT1JEIGR3Q29kZSwKKyAgICAgICAgX19pbl96IExQQ1dTVFIgd3pFcnJvciwKKyAgICAgICAgX19pbiBEV09SRCBkd1VJSGludCwKKyAgICAgICAgX19pbiBEV09SRCAvKmNEYXRhKi8sCisgICAgICAgIF9faW5fZWNvdW50X3pfb3B0KGNEYXRhKSBMUENXU1RSKiAvKnJnd3pEYXRhKi8sCisgICAgICAgIF9faW4gaW50IG5SZWNvbW1lbmRhdGlvbgorICAgICkgeworICAgICAgICBpbnQgblJlc3VsdCA9IG5SZWNvbW1lbmRhdGlvbjsKKyAgICAgICAgTFBXU1RSIHNjekVycm9yID0gbnVsbHB0cjsKKworICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfRU1CRURERUQgPT0gX2NvbW1hbmQuZGlzcGxheSkgeworICAgICAgICAgICAgSFJFU1VMVCBociA9IF9lbmdpbmUtPlNlbmRFbWJlZGRlZEVycm9yKGR3Q29kZSwgd3pFcnJvciwgZHdVSUhpbnQsICZuUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChGQUlMRUQoaHIpKSB7CisgICAgICAgICAgICAgICAgblJlc3VsdCA9IElERVJST1I7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfRlVMTCA9PSBfY29tbWFuZC5kaXNwbGF5KSB7CisgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGFuIGF1dGhlbnRpY2F0aW9uIGZhaWx1cmUsIGxldCB0aGUgZW5naW5lIHRyeSB0byBoYW5kbGUgaXQgZm9yIHVzLgorICAgICAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9FUlJPUl9UWVBFX0hUVFBfQVVUSF9TRVJWRVIgPT0gZXJyb3JUeXBlIHx8IEJPT1RTVFJBUFBFUl9FUlJPUl9UWVBFX0hUVFBfQVVUSF9QUk9YWSA9PSBlcnJvclR5cGUpIHsKKyAgICAgICAgICAgICAgICBuUmVzdWx0ID0gSURUUllBR0FJTjsKKyAgICAgICAgICAgIH0gZWxzZSAvLyBzaG93IGEgZ2VuZXJpYyBlcnJvciBtZXNzYWdlIGJveC4KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBCYWxSZXRyeUVycm9yT2NjdXJyZWQod3pQYWNrYWdlSWQsIGR3Q29kZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoIV9zaG93aW5nSW50ZXJuYWxVSVRoaXNQYWNrYWdlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIG5vIGVycm9yIG1lc3NhZ2Ugd2FzIHByb3ZpZGVkLCB1c2UgdGhlIGVycm9yIGNvZGUgdG8gdHJ5IGFuZCBnZXQgYW4gZXJyb3IgbWVzc2FnZS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKCF3ekVycm9yIHx8ICEqd3pFcnJvciB8fCBCT09UU1RSQVBQRVJfRVJST1JfVFlQRV9XSU5ET1dTX0lOU1RBTExFUiAhPSBlcnJvclR5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEhSRVNVTFQgaHIgPSBTdHJBbGxvY0Zyb21FcnJvcigmc2N6RXJyb3IsIGR3Q29kZSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRkFJTEVEKGhyKSB8fCAhc2N6RXJyb3IgfHwgISpzY3pFcnJvcikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0ckFsbG9jRm9ybWF0dGVkKCZzY3pFcnJvciwgTCIweCV4IiwgZHdDb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIG5SZXN1bHQgPSA6Ok1lc3NhZ2VCb3hXKF9oV25kLCBzY3pFcnJvciA/IHNjekVycm9yIDogd3pFcnJvciwgX3RoZW1lLT5zY3pDYXB0aW9uLCBkd1VJSGludCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBTZXRQcm9ncmVzc1N0YXRlKEhSRVNVTFRfRlJPTV9XSU4zMihkd0NvZGUpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIGp1c3QgdGFrZSBub3RlIG9mIHRoZSBlcnJvciBjb2RlIGFuZCBsZXQgdGhpbmdzIGNvbnRpbnVlLgorICAgICAgICAgICAgQmFsUmV0cnlFcnJvck9jY3VycmVkKHd6UGFja2FnZUlkLCBkd0NvZGUpOworICAgICAgICB9CisKKyAgICAgICAgUmVsZWFzZVN0cihzY3pFcnJvcik7CisgICAgICAgIHJldHVybiBuUmVzdWx0OworICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKGludCkgT25FeGVjdXRlTXNpTWVzc2FnZSgKKyAgICAgICAgX19pbl96IExQQ1dTVFIgd3pQYWNrYWdlSWQsCisgICAgICAgIF9faW4gSU5TVEFMTE1FU1NBR0UgbXQsCisgICAgICAgIF9faW4gVUlOVCB1aUZsYWdzLAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3ek1lc3NhZ2UsCisgICAgICAgIF9faW4gRFdPUkQgY0RhdGEsCisgICAgICAgIF9faW5fZWNvdW50X3pfb3B0KGNEYXRhKSBMUENXU1RSKiByZ3d6RGF0YSwKKyAgICAgICAgX19pbiBpbnQgblJlY29tbWVuZGF0aW9uCisgICAgKSB7CisjaWZkZWYgREVCVUcKKyAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJQWUJBOiBPbkV4ZWN1dGVNc2lNZXNzYWdlKCkgLSBwYWNrYWdlOiAlbHMsIG1lc3NhZ2U6ICVscyIsIHd6UGFja2FnZUlkLCB3ek1lc3NhZ2UpOworI2VuZGlmCisgICAgICAgIGlmIChCT09UU1RSQVBQRVJfRElTUExBWV9GVUxMID09IF9jb21tYW5kLmRpc3BsYXkgJiYgKElOU1RBTExNRVNTQUdFX1dBUk5JTkcgPT0gbXQgfHwgSU5TVEFMTE1FU1NBR0VfVVNFUiA9PSBtdCkpIHsKKyAgICAgICAgICAgIGludCBuUmVzdWx0ID0gOjpNZXNzYWdlQm94VyhfaFduZCwgd3pNZXNzYWdlLCBfdGhlbWUtPnNjekNhcHRpb24sIHVpRmxhZ3MpOworICAgICAgICAgICAgcmV0dXJuIG5SZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoSU5TVEFMTE1FU1NBR0VfQUNUSU9OU1RBUlQgPT0gbXQpIHsKKyAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9FWEVDVVRFX1BST0dSRVNTX0FDVElPTkRBVEFfVEVYVCwgd3pNZXNzYWdlKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBfX3N1cGVyOjpPbkV4ZWN1dGVNc2lNZXNzYWdlKHd6UGFja2FnZUlkLCBtdCwgdWlGbGFncywgd3pNZXNzYWdlLCBjRGF0YSwgcmd3ekRhdGEsIG5SZWNvbW1lbmRhdGlvbik7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPblByb2dyZXNzKF9faW4gRFdPUkQgZHdQcm9ncmVzc1BlcmNlbnRhZ2UsIF9faW4gRFdPUkQgZHdPdmVyYWxsUHJvZ3Jlc3NQZXJjZW50YWdlKSB7CisgICAgICAgIFdDSEFSIHd6UHJvZ3Jlc3NbNV0gPSB7IH07CisKKyNpZmRlZiBERUJVRworICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIlBZQkE6IE9uUHJvZ3Jlc3MoKSAtIHByb2dyZXNzOiAldSUlLCBvdmVyYWxsIHByb2dyZXNzOiAldSUlIiwgZHdQcm9ncmVzc1BlcmNlbnRhZ2UsIGR3T3ZlcmFsbFByb2dyZXNzUGVyY2VudGFnZSk7CisjZW5kaWYKKworICAgICAgICA6OlN0cmluZ0NjaFByaW50Zlcod3pQcm9ncmVzcywgY291bnRvZih3elByb2dyZXNzKSwgTCIldSUlIiwgZHdPdmVyYWxsUHJvZ3Jlc3NQZXJjZW50YWdlKTsKKyAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX09WRVJBTExfUFJPR1JFU1NfVEVYVCwgd3pQcm9ncmVzcyk7CisKKyAgICAgICAgVGhlbWVTZXRQcm9ncmVzc0NvbnRyb2woX3RoZW1lLCBJRF9PVkVSQUxMX1BST0dSRVNTX0JBUiwgZHdPdmVyYWxsUHJvZ3Jlc3NQZXJjZW50YWdlKTsKKyAgICAgICAgU2V0VGFza2JhckJ1dHRvblByb2dyZXNzKGR3T3ZlcmFsbFByb2dyZXNzUGVyY2VudGFnZSk7CisKKyAgICAgICAgcmV0dXJuIF9fc3VwZXI6Ok9uUHJvZ3Jlc3MoZHdQcm9ncmVzc1BlcmNlbnRhZ2UsIGR3T3ZlcmFsbFByb2dyZXNzUGVyY2VudGFnZSk7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPbkV4ZWN1dGVQYWNrYWdlQmVnaW4oX19pbl96IExQQ1dTVFIgd3pQYWNrYWdlSWQsIF9faW4gQk9PTCBmRXhlY3V0ZSkgeworICAgICAgICBMUFdTVFIgc2N6Rm9ybWF0dGVkU3RyaW5nID0gbnVsbHB0cjsKKworICAgICAgICBfc3RhcnRlZEV4ZWN1dGlvbiA9IFRSVUU7CisKKyAgICAgICAgaWYgKHd6UGFja2FnZUlkICYmICp3elBhY2thZ2VJZCkgeworICAgICAgICAgICAgQkFMX0lORk9fUEFDS0FHRSogcFBhY2thZ2UgPSBudWxscHRyOworICAgICAgICAgICAgQmFsSW5mb0ZpbmRQYWNrYWdlQnlJZCgmX2J1bmRsZS5wYWNrYWdlcywgd3pQYWNrYWdlSWQsICZwUGFja2FnZSk7CisKKyAgICAgICAgICAgIExQQ1dTVFIgd3ogPSB3elBhY2thZ2VJZDsKKyAgICAgICAgICAgIGlmIChwUGFja2FnZSkgeworICAgICAgICAgICAgICAgIExPQ19TVFJJTkcqIHBMb2NTdHJpbmcgPSBudWxscHRyOworCisgICAgICAgICAgICAgICAgc3dpdGNoIChwUGFja2FnZS0+dHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgQkFMX0lORk9fUEFDS0FHRV9UWVBFX0JVTkRMRV9BRERPTjoKKyAgICAgICAgICAgICAgICAgICAgTG9jR2V0U3RyaW5nKF93aXhMb2MsIEwiIyhsb2MuRXhlY3V0ZUFkZG9uUmVsYXRlZEJ1bmRsZU1lc3NhZ2UpIiwgJnBMb2NTdHJpbmcpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgQkFMX0lORk9fUEFDS0FHRV9UWVBFX0JVTkRMRV9QQVRDSDoKKyAgICAgICAgICAgICAgICAgICAgTG9jR2V0U3RyaW5nKF93aXhMb2MsIEwiIyhsb2MuRXhlY3V0ZVBhdGNoUmVsYXRlZEJ1bmRsZU1lc3NhZ2UpIiwgJnBMb2NTdHJpbmcpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgQkFMX0lORk9fUEFDS0FHRV9UWVBFX0JVTkRMRV9VUEdSQURFOgorICAgICAgICAgICAgICAgICAgICBMb2NHZXRTdHJpbmcoX3dpeExvYywgTCIjKGxvYy5FeGVjdXRlVXBncmFkZVJlbGF0ZWRCdW5kbGVNZXNzYWdlKSIsICZwTG9jU3RyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHBMb2NTdHJpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHdpeCBkZXZlbG9wZXIgaXMgc2hvd2luZyBhIGhpZGRlbiB2YXJpYWJsZSBpbiB0aGUgVUksIHRoZW4gb2J2aW91c2x5IHRoZXkgZG9uJ3QgY2FyZSBhYm91dCBrZWVwaW5nIGl0IHNhZmUKKyAgICAgICAgICAgICAgICAgICAgLy8gc28gZG9uJ3QgZ28gZG93biB0aGUgcmFiYml0IGhvbGUgb2YgbWFraW5nIHN1cmUgdGhhdCB0aGlzIGlzIHNlY3VyZWx5IGZyZWVkLgorICAgICAgICAgICAgICAgICAgICBCYWxGb3JtYXRTdHJpbmcocExvY1N0cmluZy0+d3pUZXh0LCAmc2N6Rm9ybWF0dGVkU3RyaW5nKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB3eiA9IHNjekZvcm1hdHRlZFN0cmluZyA/IHNjekZvcm1hdHRlZFN0cmluZyA6IHBQYWNrYWdlLT5zY3pEaXNwbGF5TmFtZSA/IHBQYWNrYWdlLT5zY3pEaXNwbGF5TmFtZSA6IHd6UGFja2FnZUlkOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBfc2hvd2luZ0ludGVybmFsVUlUaGlzUGFja2FnZSA9IHBQYWNrYWdlICYmIHBQYWNrYWdlLT5mRGlzcGxheUludGVybmFsVUk7CisKKyAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9FWEVDVVRFX1BST0dSRVNTX1BBQ0tBR0VfVEVYVCwgd3opOworICAgICAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX09WRVJBTExfUFJPR1JFU1NfUEFDS0FHRV9URVhULCB3eik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBfc2hvd2luZ0ludGVybmFsVUlUaGlzUGFja2FnZSA9IEZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgUmVsZWFzZVN0cihzY3pGb3JtYXR0ZWRTdHJpbmcpOworICAgICAgICByZXR1cm4gX19zdXBlcjo6T25FeGVjdXRlUGFja2FnZUJlZ2luKHd6UGFja2FnZUlkLCBmRXhlY3V0ZSk7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIGludCBfX3N0ZGNhbGwgT25FeGVjdXRlUHJvZ3Jlc3MoCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6UGFja2FnZUlkLAorICAgICAgICBfX2luIERXT1JEIGR3UHJvZ3Jlc3NQZXJjZW50YWdlLAorICAgICAgICBfX2luIERXT1JEIGR3T3ZlcmFsbFByb2dyZXNzUGVyY2VudGFnZQorICAgICkgeworICAgICAgICBXQ0hBUiB3elByb2dyZXNzWzhdID0geyB9OworCisjaWZkZWYgREVCVUcKKyAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJQWUJBOiBPbkV4ZWN1dGVQcm9ncmVzcygpIC0gcGFja2FnZTogJWxzLCBwcm9ncmVzczogJXUlJSwgb3ZlcmFsbCBwcm9ncmVzczogJXUlJSIsIHd6UGFja2FnZUlkLCBkd1Byb2dyZXNzUGVyY2VudGFnZSwgZHdPdmVyYWxsUHJvZ3Jlc3NQZXJjZW50YWdlKTsKKyNlbmRpZgorCisgICAgICAgIDo6U3RyaW5nQ2NoUHJpbnRmVyh3elByb2dyZXNzLCBjb3VudG9mKHd6UHJvZ3Jlc3MpLCBMIiV1JSUiLCBkd092ZXJhbGxQcm9ncmVzc1BlcmNlbnRhZ2UpOworICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgSURfRVhFQ1VURV9QUk9HUkVTU19URVhULCB3elByb2dyZXNzKTsKKworICAgICAgICBUaGVtZVNldFByb2dyZXNzQ29udHJvbChfdGhlbWUsIElEX0VYRUNVVEVfUFJPR1JFU1NfQkFSLCBkd092ZXJhbGxQcm9ncmVzc1BlcmNlbnRhZ2UpOworCisgICAgICAgIF9jYWxjdWxhdGVkRXhlY3V0ZVByb2dyZXNzID0gZHdPdmVyYWxsUHJvZ3Jlc3NQZXJjZW50YWdlICogKDEwMCAtIFBZQkFfQUNRVUlSRV9QRVJDRU5UQUdFKSAvIDEwMDsKKyAgICAgICAgVGhlbWVTZXRQcm9ncmVzc0NvbnRyb2woX3RoZW1lLCBJRF9PVkVSQUxMX0NBTENVTEFURURfUFJPR1JFU1NfQkFSLCBfY2FsY3VsYXRlZENhY2hlUHJvZ3Jlc3MgKyBfY2FsY3VsYXRlZEV4ZWN1dGVQcm9ncmVzcyk7CisKKyAgICAgICAgU2V0VGFza2JhckJ1dHRvblByb2dyZXNzKF9jYWxjdWxhdGVkQ2FjaGVQcm9ncmVzcyArIF9jYWxjdWxhdGVkRXhlY3V0ZVByb2dyZXNzKTsKKworICAgICAgICByZXR1cm4gX19zdXBlcjo6T25FeGVjdXRlUHJvZ3Jlc3Mod3pQYWNrYWdlSWQsIGR3UHJvZ3Jlc3NQZXJjZW50YWdlLCBkd092ZXJhbGxQcm9ncmVzc1BlcmNlbnRhZ2UpOworICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKGludCkgT25FeGVjdXRlUGFja2FnZUNvbXBsZXRlKAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3elBhY2thZ2VJZCwKKyAgICAgICAgX19pbiBIUkVTVUxUIGhyRXhpdENvZGUsCisgICAgICAgIF9faW4gQk9PVFNUUkFQUEVSX0FQUExZX1JFU1RBUlQgcmVzdGFydCwKKyAgICAgICAgX19pbiBpbnQgblJlY29tbWVuZGF0aW9uCisgICAgKSB7CisgICAgICAgIFNldFByb2dyZXNzU3RhdGUoaHJFeGl0Q29kZSk7CisKKyAgICAgICAgaWYgKF93Y3NuaWNtcCh3elBhY2thZ2VJZCwgTCJwYXRoXyIsIDUpID09IDAgJiYgU1VDQ0VFREVEKGhyRXhpdENvZGUpKSB7CisgICAgICAgICAgICBTZW5kTWVzc2FnZVRpbWVvdXRXKAorICAgICAgICAgICAgICAgIEhXTkRfQlJPQURDQVNULAorICAgICAgICAgICAgICAgIFdNX1NFVFRJTkdDSEFOR0UsCisgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PExQQVJBTT4oTCJFbnZpcm9ubWVudCIpLAorICAgICAgICAgICAgICAgIFNNVE9fQUJPUlRJRkhVTkcsCisgICAgICAgICAgICAgICAgMTAwMCwKKyAgICAgICAgICAgICAgICBudWxscHRyCisgICAgICAgICAgICApOworICAgICAgICB9CisKKyAgICAgICAgaW50IG5SZXN1bHQgPSBfX3N1cGVyOjpPbkV4ZWN1dGVQYWNrYWdlQ29tcGxldGUod3pQYWNrYWdlSWQsIGhyRXhpdENvZGUsIHJlc3RhcnQsIG5SZWNvbW1lbmRhdGlvbik7CisKKyAgICAgICAgcmV0dXJuIG5SZXN1bHQ7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8odm9pZCkgT25FeGVjdXRlQ29tcGxldGUoX19pbiBIUkVTVUxUIGhyU3RhdHVzKSB7CisgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9FWEVDVVRFX1BST0dSRVNTX1BBQ0tBR0VfVEVYVCwgTCIiKTsKKyAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX0VYRUNVVEVfUFJPR1JFU1NfQUNUSU9OREFUQV9URVhULCBMIiIpOworICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgSURfT1ZFUkFMTF9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIEwiIik7CisgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX1BST0dSRVNTX0NBTkNFTF9CVVRUT04sIEZBTFNFKTsgLy8gbm8gbW9yZSBjYW5jZWwuCisKKyAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9FWEVDVVRFRCwgU19PSyk7IC8vIHdlIGFsd2F5cyByZXR1cm4gc3VjY2VzcyBoZXJlIGFuZCBsZXQgT25BcHBseUNvbXBsZXRlKCkgZGVhbCB3aXRoIHRoZSBlcnJvci4KKyAgICAgICAgU2V0UHJvZ3Jlc3NTdGF0ZShoclN0YXR1cyk7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPblJlc29sdmVTb3VyY2UoCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6UGFja2FnZU9yQ29udGFpbmVySWQsCisgICAgICAgIF9faW5fel9vcHQgTFBDV1NUUiB3elBheWxvYWRJZCwKKyAgICAgICAgX19pbl96IExQQ1dTVFIgd3pMb2NhbFNvdXJjZSwKKyAgICAgICAgX19pbl96X29wdCBMUENXU1RSIHd6RG93bmxvYWRTb3VyY2UKKyAgICApIHsKKyAgICAgICAgaW50IG5SZXN1bHQgPSBJREVSUk9SOyAvLyBhc3N1bWUgd2Ugd29uJ3QgcmVzb2x2ZSBzb3VyY2UgYW5kIHRoYXQgaXMgdW5leHBlY3RlZC4KKworICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfRlVMTCA9PSBfY29tbWFuZC5kaXNwbGF5KSB7CisgICAgICAgICAgICBpZiAod3pEb3dubG9hZFNvdXJjZSkgeworICAgICAgICAgICAgICAgIG5SZXN1bHQgPSBJRERPV05MT0FEOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBwcm9tcHQgdG8gY2hhbmdlIHRoZSBzb3VyY2UgbG9jYXRpb24uCisgICAgICAgICAgICAgICAgT1BFTkZJTEVOQU1FVyBvZm4gPSB7IH07CisgICAgICAgICAgICAgICAgV0NIQVIgd3pGaWxlW01BWF9QQVRIXSA9IHsgfTsKKworICAgICAgICAgICAgICAgIDo6U3RyaW5nQ2NoQ29weVcod3pGaWxlLCBjb3VudG9mKHd6RmlsZSksIHd6TG9jYWxTb3VyY2UpOworCisgICAgICAgICAgICAgICAgb2ZuLmxTdHJ1Y3RTaXplID0gc2l6ZW9mKG9mbik7CisgICAgICAgICAgICAgICAgb2ZuLmh3bmRPd25lciA9IF9oV25kOworICAgICAgICAgICAgICAgIG9mbi5scHN0ckZpbGUgPSB3ekZpbGU7CisgICAgICAgICAgICAgICAgb2ZuLm5NYXhGaWxlID0gY291bnRvZih3ekZpbGUpOworICAgICAgICAgICAgICAgIG9mbi5scHN0ckZpbHRlciA9IEwiQWxsIEZpbGVzXDAqLipcMCI7CisgICAgICAgICAgICAgICAgb2ZuLm5GaWx0ZXJJbmRleCA9IDE7CisgICAgICAgICAgICAgICAgb2ZuLkZsYWdzID0gT0ZOX1BBVEhNVVNURVhJU1QgfCBPRk5fRklMRU1VU1RFWElTVDsKKyAgICAgICAgICAgICAgICBvZm4ubHBzdHJUaXRsZSA9IF90aGVtZS0+c2N6Q2FwdGlvbjsKKworICAgICAgICAgICAgICAgIGlmICg6OkdldE9wZW5GaWxlTmFtZVcoJm9mbikpIHsKKyAgICAgICAgICAgICAgICAgICAgSFJFU1VMVCBociA9IF9lbmdpbmUtPlNldExvY2FsU291cmNlKHd6UGFja2FnZU9yQ29udGFpbmVySWQsIHd6UGF5bG9hZElkLCBvZm4ubHBzdHJGaWxlKTsKKyAgICAgICAgICAgICAgICAgICAgblJlc3VsdCA9IFNVQ0NFRURFRChocikgPyBJRFJFVFJZIDogSURFUlJPUjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBuUmVzdWx0ID0gSURDQU5DRUw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHd6RG93bmxvYWRTb3VyY2UpIHsKKyAgICAgICAgICAgIC8vIElmIGRvaW5nIGEgbm9uLWludGVyYWN0aXZlIGluc3RhbGwgYW5kIGRvd25sb2FkIHNvdXJjZSBpcyBhdmFpbGFibGUsIGxldCdzIHRyeSBkb3dubG9hZGluZyB0aGUgcGFja2FnZSBzaWxlbnRseQorICAgICAgICAgICAgblJlc3VsdCA9IElERE9XTkxPQUQ7CisgICAgICAgIH0KKyAgICAgICAgLy8gZWxzZSB0aGVyZSdzIG5vdGhpbmcgbW9yZSB3ZSBjYW4gZG8gaW4gbm9uLWludGVyYWN0aXZlIG1vZGUKKworICAgICAgICByZXR1cm4gQ2hlY2tDYW5jZWxlZCgpID8gSURDQU5DRUwgOiBuUmVzdWx0OworICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKGludCkgT25BcHBseUNvbXBsZXRlKF9faW4gSFJFU1VMVCBoclN0YXR1cywgX19pbiBCT09UU1RSQVBQRVJfQVBQTFlfUkVTVEFSVCByZXN0YXJ0KSB7CisgICAgICAgIF9yZXN0YXJ0UmVzdWx0ID0gcmVzdGFydDsgLy8gcmVtZW1iZXIgdGhlIHJlc3RhcnQgcmVzdWx0IHNvIHdlIHJldHVybiB0aGUgY29ycmVjdCBlcnJvciBjb2RlIG5vIG1hdHRlciB3aGF0IHRoZSB1c2VyIGNob29zZXMgdG8gZG8gaW4gdGhlIFVJLgorCisgICAgICAgIC8vIElmIGEgcmVzdGFydCB3YXMgZW5jb3VudGVyZWQgYW5kIHdlIGFyZSBub3Qgc3VwcHJlc3NpbmcgcmVzdGFydHMsIHRoZW4gcmVzdGFydCBpcyByZXF1aXJlZC4KKyAgICAgICAgX3Jlc3RhcnRSZXF1aXJlZCA9IChCT09UU1RSQVBQRVJfQVBQTFlfUkVTVEFSVF9OT05FICE9IHJlc3RhcnQgJiYgQk9PVFNUUkFQUEVSX1JFU1RBUlRfTkVWRVIgPCBfY29tbWFuZC5yZXN0YXJ0KTsKKyAgICAgICAgLy8gSWYgYSByZXN0YXJ0IGlzIHJlcXVpcmVkIGFuZCB3ZSdyZSBub3QgZGlzcGxheWluZyBhIFVJIG9yIHdlIGFyZSBub3Qgc3VwcG9zZWQgdG8gcHJvbXB0IGZvciByZXN0YXJ0IHRoZW4gYWxsb3cgdGhlIHJlc3RhcnQuCisgICAgICAgIF9hbGxvd1Jlc3RhcnQgPSBfcmVzdGFydFJlcXVpcmVkICYmIChCT09UU1RSQVBQRVJfRElTUExBWV9GVUxMID4gX2NvbW1hbmQuZGlzcGxheSB8fCBCT09UU1RSQVBQRVJfUkVTVEFSVF9QUk9NUFQgPCBfY29tbWFuZC5yZXN0YXJ0KTsKKworICAgICAgICAvLyBJZiB3ZSBhcmUgc2hvd2luZyBVSSwgd2FpdCBhIGJlYXQgYmVmb3JlIG1vdmluZyB0byB0aGUgZmluYWwgc2NyZWVuLgorICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfTk9ORSA8IF9jb21tYW5kLmRpc3BsYXkpIHsKKyAgICAgICAgICAgIDo6U2xlZXAoMjUwKTsKKyAgICAgICAgfQorCisgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfQVBQTElFRCwgaHJTdGF0dXMpOworICAgICAgICBTZXRUYXNrYmFyQnV0dG9uUHJvZ3Jlc3MoMTAwKTsgLy8gc2hvdyBmdWxsIHByb2dyZXNzIGJhciwgZ3JlZW4sIHllbGxvdywgb3IgcmVkCisKKyAgICAgICAgcmV0dXJuIElETk9BQ1RJT047CisgICAgfQorCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKHZvaWQpIE9uTGF1bmNoQXBwcm92ZWRFeGVDb21wbGV0ZShfX2luIEhSRVNVTFQgaHJTdGF0dXMsIF9faW4gRFdPUkQgLypwcm9jZXNzSWQqLykgeworICAgICAgICBpZiAoSFJFU1VMVF9GUk9NX1dJTjMyKEVSUk9SX0FDQ0VTU19ERU5JRUQpID09IGhyU3RhdHVzKSB7CisgICAgICAgICAgICAvL3RyeSB3aXRoIFNoZWxFeGVjIG5leHQgdGltZQorICAgICAgICAgICAgT25DbGlja0xhdW5jaEJ1dHRvbigpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgOjpQb3N0TWVzc2FnZVcoX2hXbmQsIFdNX0NMT1NFLCAwLCAwKTsKKyAgICAgICAgfQorICAgIH0KKworCitwcml2YXRlOgorICAgIC8vCisgICAgLy8gVWlUaHJlYWRQcm9jIC0gZW50cnlwb2ludCBmb3IgVUkgdGhyZWFkLgorICAgIC8vCisgICAgc3RhdGljIERXT1JEIFdJTkFQSSBVaVRocmVhZFByb2MoX19pbiBMUFZPSUQgcHZDb250ZXh0KSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworICAgICAgICBQeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbiogcFRoaXMgPSAoUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24qKXB2Q29udGV4dDsKKyAgICAgICAgQk9PTCBjb21Jbml0aWFsaXplZCA9IEZBTFNFOworICAgICAgICBCT09MIHJldCA9IEZBTFNFOworICAgICAgICBNU0cgbXNnID0geyB9OworCisgICAgICAgIC8vIEluaXRpYWxpemUgQ09NIGFuZCB0aGVtZS4KKyAgICAgICAgaHIgPSA6OkNvSW5pdGlhbGl6ZShudWxscHRyKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBpbml0aWFsaXplIENPTS4iKTsKKyAgICAgICAgY29tSW5pdGlhbGl6ZWQgPSBUUlVFOworCisgICAgICAgIGhyID0gVGhlbWVJbml0aWFsaXplKHBUaGlzLT5faE1vZHVsZSk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGVtZSBtYW5hZ2VyLiIpOworCisgICAgICAgIGhyID0gcFRoaXMtPkluaXRpYWxpemVEYXRhKCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBkYXRhIGluIGJvb3RzdHJhcHBlciBhcHBsaWNhdGlvbi4iKTsKKworICAgICAgICAvLyBDcmVhdGUgbWFpbiB3aW5kb3cuCisgICAgICAgIHBUaGlzLT5Jbml0aWFsaXplVGFza2JhckJ1dHRvbigpOworICAgICAgICBociA9IHBUaGlzLT5DcmVhdGVNYWluV2luZG93KCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gY3JlYXRlIG1haW4gd2luZG93LiIpOworCisgICAgICAgIHBUaGlzLT5WYWxpZGF0ZU9wZXJhdGluZ1N5c3RlbSgpOworCisgICAgICAgIGlmIChGQUlMRUQocFRoaXMtPl9ockZpbmFsKSkgeworICAgICAgICAgICAgcFRoaXMtPlNldFN0YXRlKFBZQkFfU1RBVEVfRkFJTEVELCBocik7CisgICAgICAgICAgICA6OlBvc3RNZXNzYWdlVyhwVGhpcy0+X2hXbmQsIFdNX1BZQkFfU0hPV19GQUlMVVJFLCAwLCAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIE9rYXksIHdlJ3JlIHJlYWR5IGZvciBwYWNrYWdlcyBub3cuCisgICAgICAgICAgICBwVGhpcy0+U2V0U3RhdGUoUFlCQV9TVEFURV9JTklUSUFMSVpFRCwgaHIpOworICAgICAgICAgICAgOjpQb3N0TWVzc2FnZVcocFRoaXMtPl9oV25kLCBCT09UU1RSQVBQRVJfQUNUSU9OX0hFTFAgPT0gcFRoaXMtPl9jb21tYW5kLmFjdGlvbiA/IFdNX1BZQkFfU0hPV19IRUxQIDogV01fUFlCQV9ERVRFQ1RfUEFDS0FHRVMsIDAsIDApOworICAgICAgICB9CisKKyAgICAgICAgLy8gbWVzc2FnZSBwdW1wCisgICAgICAgIHdoaWxlICgwICE9IChyZXQgPSA6OkdldE1lc3NhZ2VXKCZtc2csIG51bGxwdHIsIDAsIDApKSkgeworICAgICAgICAgICAgaWYgKC0xID09IHJldCkgeworICAgICAgICAgICAgICAgIGhyID0gRV9VTkVYUEVDVEVEOworICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJVbmV4cGVjdGVkIHJldHVybiB2YWx1ZSBmcm9tIG1lc3NhZ2UgcHVtcC4iKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIVRoZW1lSGFuZGxlS2V5Ym9hcmRNZXNzYWdlKHBUaGlzLT5fdGhlbWUsIG1zZy5od25kLCAmbXNnKSkgeworICAgICAgICAgICAgICAgIDo6VHJhbnNsYXRlTWVzc2FnZSgmbXNnKTsKKyAgICAgICAgICAgICAgICA6OkRpc3BhdGNoTWVzc2FnZVcoJm1zZyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBTdWNjZWVkZWQgdGh1cyBmYXIsIGNoZWNrIHRvIHNlZSBpZiBhbnl0aGluZyB3ZW50IHdyb25nIHdoaWxlIGFjdHVhbGx5CisgICAgICAgIC8vIGV4ZWN1dGluZyBjaGFuZ2VzLgorICAgICAgICBpZiAoRkFJTEVEKHBUaGlzLT5faHJGaW5hbCkpIHsKKyAgICAgICAgICAgIGhyID0gcFRoaXMtPl9ockZpbmFsOworICAgICAgICB9IGVsc2UgaWYgKHBUaGlzLT5DaGVja0NhbmNlbGVkKCkpIHsKKyAgICAgICAgICAgIGhyID0gSFJFU1VMVF9GUk9NX1dJTjMyKEVSUk9SX0lOU1RBTExfVVNFUkVYSVQpOworICAgICAgICB9CisKKyAgICBMRXhpdDoKKyAgICAgICAgLy8gZGVzdHJveSBtYWluIHdpbmRvdworICAgICAgICBwVGhpcy0+RGVzdHJveU1haW5XaW5kb3coKTsKKworICAgICAgICAvLyBpbml0aWF0ZSBlbmdpbmUgc2h1dGRvd24KKyAgICAgICAgRFdPUkQgZHdRdWl0ID0gSFJFU1VMVF9DT0RFKGhyKTsKKyAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9BUFBMWV9SRVNUQVJUX0lOSVRJQVRFRCA9PSBwVGhpcy0+X3Jlc3RhcnRSZXN1bHQpIHsKKyAgICAgICAgICAgIGR3UXVpdCA9IEVSUk9SX1NVQ0NFU1NfUkVCT09UX0lOSVRJQVRFRDsKKyAgICAgICAgfSBlbHNlIGlmIChCT09UU1RSQVBQRVJfQVBQTFlfUkVTVEFSVF9SRVFVSVJFRCA9PSBwVGhpcy0+X3Jlc3RhcnRSZXN1bHQpIHsKKyAgICAgICAgICAgIGR3UXVpdCA9IEVSUk9SX1NVQ0NFU1NfUkVCT09UX1JFUVVJUkVEOworICAgICAgICB9CisgICAgICAgIHBUaGlzLT5fZW5naW5lLT5RdWl0KGR3UXVpdCk7CisKKyAgICAgICAgUmVsZWFzZVRoZW1lKHBUaGlzLT5fdGhlbWUpOworICAgICAgICBUaGVtZVVuaW5pdGlhbGl6ZSgpOworCisgICAgICAgIC8vIHVuaW5pdGlhbGl6ZSBDT00KKyAgICAgICAgaWYgKGNvbUluaXRpYWxpemVkKSB7CisgICAgICAgICAgICA6OkNvVW5pbml0aWFsaXplKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gaHI7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBQYXJzZVZhcmlhYmxlc0Zyb21VbmF0dGVuZFhtbCAtIHJlYWRzIG9wdGlvbnMgZnJvbSB1bmF0dGVuZC54bWwgaWYgaXQKKyAgICAvLyBleGlzdHMKKyAgICAvLworICAgIEhSRVNVTFQgUGFyc2VWYXJpYWJsZXNGcm9tVW5hdHRlbmRYbWwoKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworICAgICAgICBMUFdTVFIgc2N6VW5hdHRlbmRYbWxQYXRoID0gbnVsbHB0cjsKKyAgICAgICAgSVhNTERPTURvY3VtZW50ICpwaXhkVW5hdHRlbmQgPSBudWxscHRyOworICAgICAgICBJWE1MRE9NTm9kZUxpc3QgKnBOb2RlcyA9IG51bGxwdHI7CisgICAgICAgIElYTUxET01Ob2RlICpwTm9kZSA9IG51bGxwdHI7CisgICAgICAgIGxvbmcgY05vZGVzOworICAgICAgICBEV09SRCBkd0F0dHI7CisgICAgICAgIExQV1NUUiBzY3ogPSBudWxscHRyOworICAgICAgICBCT09MIGJWYWx1ZTsKKyAgICAgICAgaW50IGlWYWx1ZTsKKyAgICAgICAgQk9PTCB0cnlDb252ZXJ0OworICAgICAgICBCU1RSIGJzdHJWYWx1ZSA9IG51bGxwdHI7CisKKyAgICAgICAgaHIgPSBCYWxGb3JtYXRTdHJpbmcoTCJbV2l4QnVuZGxlT3JpZ2luYWxTb3VyY2VGb2xkZXJddW5hdHRlbmQueG1sIiwgJnNjelVuYXR0ZW5kWG1sUGF0aCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gY2FsY3VsYXRlIHBhdGggdG8gdW5hdHRlbmQueG1sIik7CisKKyAgICAgICAgaWYgKCFGaWxlRXhpc3RzRXgoc2N6VW5hdHRlbmRYbWxQYXRoLCAmZHdBdHRyKSkgeworICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfVkVSQk9TRSwgIkRpZCBub3QgZmluZCAlbHMiLCBzY3pVbmF0dGVuZFhtbFBhdGgpOworICAgICAgICAgICAgaHIgPSBTX0ZBTFNFOworICAgICAgICAgICAgZ290byBMRXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIGhyID0gWG1sTG9hZERvY3VtZW50RnJvbUZpbGUoc2N6VW5hdHRlbmRYbWxQYXRoLCAmcGl4ZFVuYXR0ZW5kKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gcmVhZCAlbHMiLCBzY3pVbmF0dGVuZFhtbFBhdGgpOworCisgICAgICAgIC8vIGdldCB0aGUgbGlzdCBvZiB2YXJpYWJsZXMgdXNlcnMgaGF2ZSBvdmVycmlkZGVuCisgICAgICAgIGhyID0gWG1sU2VsZWN0Tm9kZXMocGl4ZFVuYXR0ZW5kLCBMIi9PcHRpb25zL09wdGlvbiIsICZwTm9kZXMpOworICAgICAgICBpZiAoU19GQUxTRSA9PSBocikgeworICAgICAgICAgICAgRXhpdEZ1bmN0aW9uMShociA9IFNfT0spOworICAgICAgICB9CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gc2VsZWN0IG9wdGlvbiBub2Rlcy4iKTsKKworICAgICAgICBociA9IHBOb2Rlcy0+Z2V0X2xlbmd0aCgobG9uZyopJmNOb2Rlcyk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gZ2V0IG9wdGlvbiBub2RlIGNvdW50LiIpOworCisgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiUmVhZGluZyBzZXR0aW5ncyBmcm9tICVscyIsIHNjelVuYXR0ZW5kWG1sUGF0aCk7CisKKyAgICAgICAgZm9yIChEV09SRCBpID0gMDsgaSA8IGNOb2RlczsgKytpKSB7CisgICAgICAgICAgICBociA9IFhtbE5leHRFbGVtZW50KHBOb2RlcywgJnBOb2RlLCBudWxscHRyKTsKKyAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gZ2V0IG5leHQgbm9kZS4iKTsKKworICAgICAgICAgICAgLy8gQE5hbWUKKyAgICAgICAgICAgIGhyID0gWG1sR2V0QXR0cmlidXRlRXgocE5vZGUsIEwiTmFtZSIsICZzY3opOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBnZXQgQE5hbWUuIik7CisKKyAgICAgICAgICAgIHRyeUNvbnZlcnQgPSBUUlVFOworICAgICAgICAgICAgaHIgPSBYbWxHZXRBdHRyaWJ1dGUocE5vZGUsIEwiVmFsdWUiLCAmYnN0clZhbHVlKTsKKyAgICAgICAgICAgIGlmIChGQUlMRUQoaHIpIHx8ICFic3RyVmFsdWUgfHwgISpic3RyVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBociA9IFhtbEdldFRleHQocE5vZGUsICZic3RyVmFsdWUpOworICAgICAgICAgICAgICAgIHRyeUNvbnZlcnQgPSBGQUxTRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gZ2V0IEBWYWx1ZS4iKTsKKworICAgICAgICAgICAgaWYgKHRyeUNvbnZlcnQgJiYKKyAgICAgICAgICAgICAgICBDU1RSX0VRVUFMID09IDo6Q29tcGFyZVN0cmluZ1coTE9DQUxFX0lOVkFSSUFOVCwgTk9STV9JR05PUkVDQVNFLCBic3RyVmFsdWUsIC0xLCBMInllcyIsIC0xKSkgeworICAgICAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhzY3osIDEpOworICAgICAgICAgICAgfSBlbHNlIGlmICh0cnlDb252ZXJ0ICYmCisgICAgICAgICAgICAgICAgICAgICAgIENTVFJfRVFVQUwgPT0gOjpDb21wYXJlU3RyaW5nVyhMT0NBTEVfSU5WQVJJQU5ULCBOT1JNX0lHTk9SRUNBU0UsIGJzdHJWYWx1ZSwgLTEsIEwibm8iLCAtMSkpIHsKKyAgICAgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoc2N6LCAwKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodHJ5Q29udmVydCAmJiA6OlN0clRvSW50RXhXKGJzdHJWYWx1ZSwgU1RJRl9ERUZBVUxULCAmaVZhbHVlKSkgeworICAgICAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhzY3osIGlWYWx1ZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKHNjeiwgYnN0clZhbHVlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUmVsZWFzZU51bGxCU1RSKGJzdHJWYWx1ZSk7CisgICAgICAgICAgICBSZWxlYXNlTnVsbFN0cihzY3opOworICAgICAgICAgICAgUmVsZWFzZU51bGxPYmplY3QocE5vZGUpOworICAgICAgICB9CisKKyAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJGaW5pc2hlZCByZWFkaW5nIGZyb20gJWxzIiwgc2N6VW5hdHRlbmRYbWxQYXRoKTsKKworICAgIExFeGl0OgorICAgICAgICBSZWxlYXNlT2JqZWN0KHBOb2RlKTsKKyAgICAgICAgUmVsZWFzZU9iamVjdChwTm9kZXMpOworICAgICAgICBSZWxlYXNlT2JqZWN0KHBpeGRVbmF0dGVuZCk7CisgICAgICAgIFJlbGVhc2VTdHIoc2N6VW5hdHRlbmRYbWxQYXRoKTsKKworICAgICAgICByZXR1cm4gaHI7CisgICAgfQorCisKKyAgICAvLworICAgIC8vIEluaXRpYWxpemVEYXRhIC0gaW5pdGlhbGl6ZXMgYWxsIHRoZSBwYWNrYWdlIGluZm9ybWF0aW9uLgorICAgIC8vCisgICAgSFJFU1VMVCBJbml0aWFsaXplRGF0YSgpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisgICAgICAgIExQV1NUUiBzY3pNb2R1bGVQYXRoID0gbnVsbHB0cjsKKyAgICAgICAgSVhNTERPTURvY3VtZW50ICpwaXhkTWFuaWZlc3QgPSBudWxscHRyOworCisgICAgICAgIGhyID0gQmFsTWFuaWZlc3RMb2FkKF9oTW9kdWxlLCAmcGl4ZE1hbmlmZXN0KTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBsb2FkIGJvb3RzdHJhcHBlciBhcHBsaWNhdGlvbiBtYW5pZmVzdC4iKTsKKworICAgICAgICBociA9IFBhcnNlT3ZlcnJpZGFibGVWYXJpYWJsZXNGcm9tWG1sKHBpeGRNYW5pZmVzdCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gcmVhZCBvdmVycmlkYWJsZSB2YXJpYWJsZXMuIik7CisKKyAgICAgICAgaHIgPSBQYXJzZVZhcmlhYmxlc0Zyb21VbmF0dGVuZFhtbCgpOworICAgICAgICBFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIHJlYWQgdW5hdHRlbmQuaW5pIGZpbGUuIik7CisKKyAgICAgICAgaHIgPSBQcm9jZXNzQ29tbWFuZExpbmUoJl9sYW5ndWFnZSk7CisgICAgICAgIEV4aXRPbkZhaWx1cmUoaHIsICJVbmtub3duIGNvbW1hbmRsaW5lIHBhcmFtZXRlcnMuIik7CisKKyAgICAgICAgaHIgPSBQYXRoUmVsYXRpdmVUb01vZHVsZSgmc2N6TW9kdWxlUGF0aCwgbnVsbHB0ciwgX2hNb2R1bGUpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGdldCBtb2R1bGUgcGF0aC4iKTsKKworICAgICAgICBociA9IExvYWRMb2NhbGl6YXRpb24oc2N6TW9kdWxlUGF0aCwgX2xhbmd1YWdlKTsKKyAgICAgICAgRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBsb2FkIGxvY2FsaXphdGlvbi4iKTsKKworICAgICAgICBociA9IExvYWRUaGVtZShzY3pNb2R1bGVQYXRoLCBfbGFuZ3VhZ2UpOworICAgICAgICBFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGxvYWQgdGhlbWUuIik7CisKKyAgICAgICAgaHIgPSBCYWxJbmZvUGFyc2VGcm9tWG1sKCZfYnVuZGxlLCBwaXhkTWFuaWZlc3QpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGxvYWQgYnVuZGxlIGluZm9ybWF0aW9uLiIpOworCisgICAgICAgIGhyID0gQmFsQ29uZGl0aW9uc1BhcnNlRnJvbVhtbCgmX2NvbmRpdGlvbnMsIHBpeGRNYW5pZmVzdCwgX3dpeExvYyk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gbG9hZCBjb25kaXRpb25zIGZyb20gWE1MLiIpOworCisgICAgICAgIGhyID0gTG9hZEJvb3RzdHJhcHBlckJBRnVuY3Rpb25zKCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gbG9hZCBib290c3RyYXBwZXIgZnVuY3Rpb25zLiIpOworCisgICAgICAgIGhyID0gVXBkYXRlVUlTdHJpbmdzKF9jb21tYW5kLmFjdGlvbik7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gbG9hZCBVSSBzdHJpbmdzLiIpOworCisgICAgICAgIGlmIChfY29tbWFuZC5hY3Rpb24gPT0gQk9PVFNUUkFQUEVSX0FDVElPTl9NT0RJRlkpIHsKKyAgICAgICAgICAgIExvYWRPcHRpb25hbEZlYXR1cmVTdGF0ZXMoX2VuZ2luZSk7CisgICAgICAgIH0KKworICAgICAgICBHZXRCdW5kbGVGaWxlVmVyc2lvbigpOworICAgICAgICAvLyBkb24ndCBmYWlsIGlmIHdlIGNvdWxkbid0IGdldCB0aGUgdmVyc2lvbiBpbmZvOyBiZXN0LWVmZm9ydCBvbmx5CisgICAgTEV4aXQ6CisgICAgICAgIFJlbGVhc2VPYmplY3QocGl4ZE1hbmlmZXN0KTsKKyAgICAgICAgUmVsZWFzZVN0cihzY3pNb2R1bGVQYXRoKTsKKworICAgICAgICByZXR1cm4gaHI7CisgICAgfQorCisKKyAgICAvLworICAgIC8vIFByb2Nlc3NDb21tYW5kTGluZSAtIHByb2Nlc3MgdGhlIHByb3ZpZGVkIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCisgICAgLy8KKyAgICBIUkVTVUxUIFByb2Nlc3NDb21tYW5kTGluZShfX2lub3V0IExQV1NUUiogcHNjekxhbmd1YWdlKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworICAgICAgICBpbnQgYXJnYyA9IDA7CisgICAgICAgIExQV1NUUiogYXJndiA9IG51bGxwdHI7CisgICAgICAgIExQV1NUUiBzY3pWYXJpYWJsZU5hbWUgPSBudWxscHRyOworICAgICAgICBMUFdTVFIgc2N6VmFyaWFibGVWYWx1ZSA9IG51bGxwdHI7CisKKyAgICAgICAgaWYgKF9jb21tYW5kLnd6Q29tbWFuZExpbmUgJiYgKl9jb21tYW5kLnd6Q29tbWFuZExpbmUpIHsKKyAgICAgICAgICAgIGFyZ3YgPSA6OkNvbW1hbmRMaW5lVG9Bcmd2VyhfY29tbWFuZC53ekNvbW1hbmRMaW5lLCAmYXJnYyk7CisgICAgICAgICAgICBFeGl0T25OdWxsV2l0aExhc3RFcnJvcihhcmd2LCBociwgIkZhaWxlZCB0byBnZXQgY29tbWFuZCBsaW5lLiIpOworCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ2M7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChhcmd2W2ldWzBdID09IEwnLScgfHwgYXJndltpXVswXSA9PSBMJy8nKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChDU1RSX0VRVUFMID09IDo6Q29tcGFyZVN0cmluZ1coTE9DQUxFX0lOVkFSSUFOVCwgTk9STV9JR05PUkVDQVNFLCAmYXJndltpXVsxXSwgLTEsIEwibGFuZyIsIC0xKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxID49IGFyZ2MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBociA9IEVfSU5WQUxJREFSRzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiTXVzdCBzcGVjaWZ5IGEgbGFuZ3VhZ2UuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICsraTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaHIgPSBTdHJBbGxvY1N0cmluZyhwc2N6TGFuZ3VhZ2UsICZhcmd2W2ldWzBdLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gY29weSBsYW5ndWFnZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChDU1RSX0VRVUFMID09IDo6Q29tcGFyZVN0cmluZ1coTE9DQUxFX0lOVkFSSUFOVCwgTk9STV9JR05PUkVDQVNFLCAmYXJndltpXVsxXSwgLTEsIEwic2ltcGxlIiwgLTEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoTCJTaW1wbGVJbnN0YWxsIiwgMSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKF9vdmVycmlkYWJsZVZhcmlhYmxlcykgeworICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWU7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIHB3YyA9IHdjc2Nocihhcmd2W2ldLCBMJz0nKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHB3YykgeworICAgICAgICAgICAgICAgICAgICAgICAgaHIgPSBTdHJBbGxvY1N0cmluZygmc2N6VmFyaWFibGVOYW1lLCBhcmd2W2ldLCBwd2MgLSBhcmd2W2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gY29weSB2YXJpYWJsZSBuYW1lLiIpOworCisgICAgICAgICAgICAgICAgICAgICAgICBociA9IERpY3RLZXlFeGlzdHMoX292ZXJyaWRhYmxlVmFyaWFibGVzLCBzY3pWYXJpYWJsZU5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEVfTk9URk9VTkQgPT0gaHIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9FUlJPUiwgIklnbm9yaW5nIGF0dGVtcHQgdG8gc2V0IG5vbi1vdmVycmlkYWJsZSB2YXJpYWJsZTogJyVscycuIiwgc2N6VmFyaWFibGVOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBociA9IFNfT0s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGNoZWNrIHRoZSBkaWN0aW9uYXJ5IG9mIG92ZXJyaWRhYmxlIHZhcmlhYmxlcy4iKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaHIgPSBTdHJBbGxvY1N0cmluZygmc2N6VmFyaWFibGVWYWx1ZSwgKytwd2MsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBjb3B5IHZhcmlhYmxlIHZhbHVlLiIpOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoOjpTdHJUb0ludEV4KHNjelZhcmlhYmxlVmFsdWUsIFNUSUZfREVGQVVMVCwgJnZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyID0gX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKHNjelZhcmlhYmxlTmFtZSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBociA9IF9lbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKHNjelZhcmlhYmxlTmFtZSwgc2N6VmFyaWFibGVWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIHNldCB2YXJpYWJsZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiSWdub3JpbmcgdW5rbm93biBhcmd1bWVudDogJWxzIiwgYXJndltpXSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIExFeGl0OgorICAgICAgICBpZiAoYXJndikgeworICAgICAgICAgICAgOjpMb2NhbEZyZWUoYXJndik7CisgICAgICAgIH0KKworICAgICAgICBSZWxlYXNlU3RyKHNjelZhcmlhYmxlTmFtZSk7CisgICAgICAgIFJlbGVhc2VTdHIoc2N6VmFyaWFibGVWYWx1ZSk7CisKKyAgICAgICAgcmV0dXJuIGhyOworICAgIH0KKworICAgIEhSRVNVTFQgTG9hZExvY2FsaXphdGlvbihfX2luX3ogTFBDV1NUUiB3ek1vZHVsZVBhdGgsIF9faW5fel9vcHQgTFBDV1NUUiB3ekxhbmd1YWdlKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworICAgICAgICBMUFdTVFIgc2N6TG9jUGF0aCA9IG51bGxwdHI7CisgICAgICAgIExQQ1dTVFIgd3pMb2NGaWxlTmFtZSA9IEwiRGVmYXVsdC53eGwiOworCisgICAgICAgIGhyID0gTG9jUHJvYmVGb3JGaWxlKHd6TW9kdWxlUGF0aCwgd3pMb2NGaWxlTmFtZSwgd3pMYW5ndWFnZSwgJnNjekxvY1BhdGgpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlMihociwgIkZhaWxlZCB0byBwcm9iZSBmb3IgbG9jIGZpbGU6ICVscyBpbiBwYXRoOiAlbHMiLCB3ekxvY0ZpbGVOYW1lLCB3ek1vZHVsZVBhdGgpOworCisgICAgICAgIGhyID0gTG9jTG9hZEZyb21GaWxlKHNjekxvY1BhdGgsICZfd2l4TG9jKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gbG9hZCBsb2MgZmlsZSBmcm9tIHBhdGg6ICVscyIsIHNjekxvY1BhdGgpOworCisgICAgICAgIGlmIChXSVhfTE9DQUxJWkFUSU9OX0xBTkdVQUdFX05PVF9TRVQgIT0gX3dpeExvYy0+ZHdMYW5nSWQpIHsKKyAgICAgICAgICAgIDo6U2V0VGhyZWFkTG9jYWxlKF93aXhMb2MtPmR3TGFuZ0lkKTsKKyAgICAgICAgfQorCisgICAgICAgIGhyID0gU3RyQWxsb2NTdHJpbmcoJl9jb25maXJtQ2xvc2VNZXNzYWdlLCBMIiMobG9jLkNvbmZpcm1DYW5jZWxNZXNzYWdlKSIsIDApOworICAgICAgICBFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgY29uZmlybSBtZXNzYWdlIGxvYyBpZGVudGlmaWVyLiIpOworCisgICAgICAgIGhyID0gTG9jTG9jYWxpemVTdHJpbmcoX3dpeExvYywgJl9jb25maXJtQ2xvc2VNZXNzYWdlKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gbG9jYWxpemUgY29uZmlybSBjbG9zZSBtZXNzYWdlOiAlbHMiLCBfY29uZmlybUNsb3NlTWVzc2FnZSk7CisKKyAgICBMRXhpdDoKKyAgICAgICAgUmVsZWFzZVN0cihzY3pMb2NQYXRoKTsKKworICAgICAgICByZXR1cm4gaHI7CisgICAgfQorCisKKyAgICBIUkVTVUxUIExvYWRUaGVtZShfX2luX3ogTFBDV1NUUiB3ek1vZHVsZVBhdGgsIF9faW5fel9vcHQgTFBDV1NUUiB3ekxhbmd1YWdlKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworICAgICAgICBMUFdTVFIgc2N6VGhlbWVQYXRoID0gbnVsbHB0cjsKKyAgICAgICAgTFBDV1NUUiB3elRoZW1lRmlsZU5hbWUgPSBMIkRlZmF1bHQudGhtIjsKKyAgICAgICAgTFBXU1RSIHNjekNhcHRpb24gPSBudWxscHRyOworCisgICAgICAgIGhyID0gTG9jUHJvYmVGb3JGaWxlKHd6TW9kdWxlUGF0aCwgd3pUaGVtZUZpbGVOYW1lLCB3ekxhbmd1YWdlLCAmc2N6VGhlbWVQYXRoKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTIoaHIsICJGYWlsZWQgdG8gcHJvYmUgZm9yIHRoZW1lIGZpbGU6ICVscyBpbiBwYXRoOiAlbHMiLCB3elRoZW1lRmlsZU5hbWUsIHd6TW9kdWxlUGF0aCk7CisKKyAgICAgICAgaHIgPSBUaGVtZUxvYWRGcm9tRmlsZShzY3pUaGVtZVBhdGgsICZfdGhlbWUpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBsb2FkIHRoZW1lIGZyb20gcGF0aDogJWxzIiwgc2N6VGhlbWVQYXRoKTsKKworICAgICAgICBociA9IFRoZW1lTG9jYWxpemUoX3RoZW1lLCBfd2l4TG9jKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gbG9jYWxpemUgdGhlbWU6ICVscyIsIHNjelRoZW1lUGF0aCk7CisKKyAgICAgICAgLy8gVXBkYXRlIHRoZSBjYXB0aW9uIGlmIHRoZXJlIGFyZSBhbnkgZm9ybWF0dGVkIHN0cmluZ3MgaW4gaXQuCisgICAgICAgIC8vIElmIHRoZSB3aXggZGV2ZWxvcGVyIGlzIHNob3dpbmcgYSBoaWRkZW4gdmFyaWFibGUgaW4gdGhlIFVJLCB0aGVuCisgICAgICAgIC8vIG9idmlvdXNseSB0aGV5IGRvbid0IGNhcmUgYWJvdXQga2VlcGluZyBpdCBzYWZlIHNvIGRvbid0IGdvIGRvd24gdGhlCisgICAgICAgIC8vIHJhYmJpdCBob2xlIG9mIG1ha2luZyBzdXJlIHRoYXQgdGhpcyBpcyBzZWN1cmVseSBmcmVlZC4KKyAgICAgICAgaHIgPSBCYWxGb3JtYXRTdHJpbmcoX3RoZW1lLT5zY3pDYXB0aW9uLCAmc2N6Q2FwdGlvbik7CisgICAgICAgIGlmIChTVUNDRUVERUQoaHIpKSB7CisgICAgICAgICAgICBUaGVtZVVwZGF0ZUNhcHRpb24oX3RoZW1lLCBzY3pDYXB0aW9uKTsKKyAgICAgICAgfQorCisgICAgTEV4aXQ6CisgICAgICAgIFJlbGVhc2VTdHIoc2N6Q2FwdGlvbik7CisgICAgICAgIFJlbGVhc2VTdHIoc2N6VGhlbWVQYXRoKTsKKworICAgICAgICByZXR1cm4gaHI7CisgICAgfQorCisKKyAgICBIUkVTVUxUIFBhcnNlT3ZlcnJpZGFibGVWYXJpYWJsZXNGcm9tWG1sKF9faW4gSVhNTERPTURvY3VtZW50KiBwaXhkTWFuaWZlc3QpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisgICAgICAgIElYTUxET01Ob2RlKiBwTm9kZSA9IG51bGxwdHI7CisgICAgICAgIElYTUxET01Ob2RlTGlzdCogcE5vZGVzID0gbnVsbHB0cjsKKyAgICAgICAgRFdPUkQgY05vZGVzID0gMDsKKyAgICAgICAgTFBXU1RSIHNjeiA9IG51bGxwdHI7CisgICAgICAgIEJPT0wgaGlkZGVuID0gRkFMU0U7CisKKyAgICAgICAgLy8gZ2V0IHRoZSBsaXN0IG9mIHZhcmlhYmxlcyB1c2VycyBjYW4gb3ZlcnJpZGUgb24gdGhlIGNvbW1hbmQgbGluZQorICAgICAgICBociA9IFhtbFNlbGVjdE5vZGVzKHBpeGRNYW5pZmVzdCwgTCIvQm9vdHN0cmFwcGVyQXBwbGljYXRpb25EYXRhL1dpeFN0ZGJhT3ZlcnJpZGFibGVWYXJpYWJsZSIsICZwTm9kZXMpOworICAgICAgICBpZiAoU19GQUxTRSA9PSBocikgeworICAgICAgICAgICAgRXhpdEZ1bmN0aW9uMShociA9IFNfT0spOworICAgICAgICB9CisgICAgICAgIEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gc2VsZWN0IG92ZXJyaWRhYmxlIHZhcmlhYmxlIG5vZGVzLiIpOworCisgICAgICAgIGhyID0gcE5vZGVzLT5nZXRfbGVuZ3RoKChsb25nKikmY05vZGVzKTsKKyAgICAgICAgRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBnZXQgb3ZlcnJpZGFibGUgdmFyaWFibGUgbm9kZSBjb3VudC4iKTsKKworICAgICAgICBpZiAoY05vZGVzKSB7CisgICAgICAgICAgICBociA9IERpY3RDcmVhdGVTdHJpbmdMaXN0KCZfb3ZlcnJpZGFibGVWYXJpYWJsZXMsIDMyLCBESUNUX0ZMQUdfTk9ORSk7CisgICAgICAgICAgICBFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGNyZWF0ZSB0aGUgc3RyaW5nIGRpY3Rpb25hcnkuIik7CisKKyAgICAgICAgICAgIGZvciAoRFdPUkQgaSA9IDA7IGkgPCBjTm9kZXM7ICsraSkgeworICAgICAgICAgICAgICAgIGhyID0gWG1sTmV4dEVsZW1lbnQocE5vZGVzLCAmcE5vZGUsIG51bGxwdHIpOworICAgICAgICAgICAgICAgIEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gZ2V0IG5leHQgbm9kZS4iKTsKKworICAgICAgICAgICAgICAgIC8vIEBOYW1lCisgICAgICAgICAgICAgICAgaHIgPSBYbWxHZXRBdHRyaWJ1dGVFeChwTm9kZSwgTCJOYW1lIiwgJnNjeik7CisgICAgICAgICAgICAgICAgRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBnZXQgQE5hbWUuIik7CisKKyAgICAgICAgICAgICAgICBociA9IFhtbEdldFllc05vQXR0cmlidXRlKHBOb2RlLCBMIkhpZGRlbiIsICZoaWRkZW4pOworCisgICAgICAgICAgICAgICAgaWYgKCFoaWRkZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgaHIgPSBEaWN0QWRkS2V5KF9vdmVycmlkYWJsZVZhcmlhYmxlcywgc2N6KTsKKyAgICAgICAgICAgICAgICAgICAgRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gYWRkIFwiJWxzXCIgdG8gdGhlIHN0cmluZyBkaWN0aW9uYXJ5LiIsIHNjeik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gcHJlcGFyZSBuZXh0IGl0ZXJhdGlvbgorICAgICAgICAgICAgICAgIFJlbGVhc2VOdWxsT2JqZWN0KHBOb2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgTEV4aXQ6CisgICAgICAgIFJlbGVhc2VPYmplY3QocE5vZGUpOworICAgICAgICBSZWxlYXNlT2JqZWN0KHBOb2Rlcyk7CisgICAgICAgIFJlbGVhc2VTdHIoc2N6KTsKKyAgICAgICAgcmV0dXJuIGhyOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBHZXQgdGhlIGZpbGUgdmVyc2lvbiBvZiB0aGUgYm9vdHN0cmFwcGVyIGFuZCByZWNvcmQgaW4gYm9vdHN0cmFwcGVyIGxvZyBmaWxlCisgICAgLy8KKyAgICBIUkVTVUxUIEdldEJ1bmRsZUZpbGVWZXJzaW9uKCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgVUxBUkdFX0lOVEVHRVIgdWxpVmVyc2lvbiA9IHsgfTsKKyAgICAgICAgTFBXU1RSIHNjekN1cnJlbnRQYXRoID0gbnVsbHB0cjsKKworICAgICAgICBociA9IFBhdGhGb3JDdXJyZW50UHJvY2Vzcygmc2N6Q3VycmVudFBhdGgsIG51bGxwdHIpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGdldCBidW5kbGUgcGF0aC4iKTsKKworICAgICAgICBociA9IEZpbGVWZXJzaW9uKHNjekN1cnJlbnRQYXRoLCAmdWxpVmVyc2lvbi5IaWdoUGFydCwgJnVsaVZlcnNpb24uTG93UGFydCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gZ2V0IGJ1bmRsZSBmaWxlIHZlcnNpb24uIik7CisKKyAgICAgICAgaHIgPSBfZW5naW5lLT5TZXRWYXJpYWJsZVZlcnNpb24oUFlCQV9WQVJJQUJMRV9CVU5ETEVfRklMRV9WRVJTSU9OLCB1bGlWZXJzaW9uLlF1YWRQYXJ0KTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBzZXQgV2l4QnVuZGxlRmlsZVZlcnNpb24gdmFyaWFibGUuIik7CisKKyAgICBMRXhpdDoKKyAgICAgICAgUmVsZWFzZVN0cihzY3pDdXJyZW50UGF0aCk7CisKKyAgICAgICAgcmV0dXJuIGhyOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBDcmVhdGVNYWluV2luZG93IC0gY3JlYXRlcyB0aGUgbWFpbiBpbnN0YWxsIHdpbmRvdy4KKyAgICAvLworICAgIEhSRVNVTFQgQ3JlYXRlTWFpbldpbmRvdygpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisgICAgICAgIEhJQ09OIGhJY29uID0gcmVpbnRlcnByZXRfY2FzdDxISUNPTj4oX3RoZW1lLT5oSWNvbik7CisgICAgICAgIFdORENMQVNTVyB3YyA9IHsgfTsKKyAgICAgICAgRFdPUkQgZHdXaW5kb3dTdHlsZSA9IDA7CisgICAgICAgIGludCB4ID0gQ1dfVVNFREVGQVVMVDsKKyAgICAgICAgaW50IHkgPSBDV19VU0VERUZBVUxUOworICAgICAgICBQT0lOVCBwdEN1cnNvciA9IHsgfTsKKyAgICAgICAgSE1PTklUT1IgaE1vbml0b3IgPSBudWxscHRyOworICAgICAgICBNT05JVE9SSU5GTyBtaSA9IHsgfTsKKyAgICAgICAgQ09MT1JSRUYgZmcsIGJnOworICAgICAgICBIQlJVU0ggYmdCcnVzaDsKKworICAgICAgICAvLyBJZiB0aGUgdGhlbWUgZGlkIG5vdCBwcm92aWRlIGFuIGljb24sIHRyeSB1c2luZyB0aGUgaWNvbiBmcm9tIHRoZSBidW5kbGUgZW5naW5lLgorICAgICAgICBpZiAoIWhJY29uKSB7CisgICAgICAgICAgICBITU9EVUxFIGhCb290c3RyYXBwZXJFbmdpbmUgPSA6OkdldE1vZHVsZUhhbmRsZVcobnVsbHB0cik7CisgICAgICAgICAgICBpZiAoaEJvb3RzdHJhcHBlckVuZ2luZSkgeworICAgICAgICAgICAgICAgIGhJY29uID0gOjpMb2FkSWNvblcoaEJvb3RzdHJhcHBlckVuZ2luZSwgTUFLRUlOVFJFU09VUkNFVygxKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmZyA9IFJHQigwLCAwLCAwKTsKKyAgICAgICAgYmcgPSBSR0IoMjU1LCAyNTUsIDI1NSk7CisgICAgICAgIGJnQnJ1c2ggPSAoSEJSVVNIKShDT0xPUl9XSU5ET1crMSk7CisgICAgICAgIGlmIChfdGhlbWUtPmR3Rm9udElkIDwgX3RoZW1lLT5jRm9udHMpIHsKKyAgICAgICAgICAgIFRIRU1FX0ZPTlQgKmZvbnQgPSAmX3RoZW1lLT5yZ0ZvbnRzW190aGVtZS0+ZHdGb250SWRdOworICAgICAgICAgICAgZmcgPSBmb250LT5jckZvcmVncm91bmQ7CisgICAgICAgICAgICBiZyA9IGZvbnQtPmNyQmFja2dyb3VuZDsKKyAgICAgICAgICAgIGJnQnJ1c2ggPSBmb250LT5oQmFja2dyb3VuZDsKKyAgICAgICAgICAgIFJlbWFwQ29sb3IoJmZnLCAmYmcsICZiZ0JydXNoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlZ2lzdGVyIHRoZSB3aW5kb3cgY2xhc3MgYW5kIGNyZWF0ZSB0aGUgd2luZG93LgorICAgICAgICB3Yy5scGZuV25kUHJvYyA9IFB5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uOjpXbmRQcm9jOworICAgICAgICB3Yy5oSW5zdGFuY2UgPSBfaE1vZHVsZTsKKyAgICAgICAgd2MuaEljb24gPSBoSWNvbjsKKyAgICAgICAgd2MuaEN1cnNvciA9IDo6TG9hZEN1cnNvclcobnVsbHB0ciwgKExQQ1dTVFIpSURDX0FSUk9XKTsKKyAgICAgICAgd2MuaGJyQmFja2dyb3VuZCA9IGJnQnJ1c2g7CisgICAgICAgIHdjLmxwc3pNZW51TmFtZSA9IG51bGxwdHI7CisgICAgICAgIHdjLmxwc3pDbGFzc05hbWUgPSBQWUJBX1dJTkRPV19DTEFTUzsKKyAgICAgICAgaWYgKCE6OlJlZ2lzdGVyQ2xhc3NXKCZ3YykpIHsKKyAgICAgICAgICAgIEV4aXRXaXRoTGFzdEVycm9yKGhyLCAiRmFpbGVkIHRvIHJlZ2lzdGVyIHdpbmRvdy4iKTsKKyAgICAgICAgfQorCisgICAgICAgIF9yZWdpc3RlcmVkID0gVFJVRTsKKworICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHdpbmRvdyBzdHlsZSBiYXNlZCBvbiB0aGUgdGhlbWUgc3R5bGUgYW5kIGNvbW1hbmQgZGlzcGxheSB2YWx1ZS4KKyAgICAgICAgZHdXaW5kb3dTdHlsZSA9IF90aGVtZS0+ZHdTdHlsZTsKKyAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9ESVNQTEFZX05PTkUgPj0gX2NvbW1hbmQuZGlzcGxheSkgeworICAgICAgICAgICAgZHdXaW5kb3dTdHlsZSAmPSB+V1NfVklTSUJMRTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIERvbid0IHNob3cgdGhlIHdpbmRvdyBpZiB0aGVyZSBpcyBhIHNwbGFzaCBzY3JlZW4gKGl0IHdpbGwgYmUgbWFkZSB2aXNpYmxlIHdoZW4gdGhlIHNwbGFzaCBzY3JlZW4gaXMgaGlkZGVuKQorICAgICAgICBpZiAoOjpJc1dpbmRvdyhfY29tbWFuZC5od25kU3BsYXNoU2NyZWVuKSkgeworICAgICAgICAgICAgZHdXaW5kb3dTdHlsZSAmPSB+V1NfVklTSUJMRTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENlbnRlciB0aGUgd2luZG93IG9uIHRoZSBtb25pdG9yIHdpdGggdGhlIG1vdXNlLgorICAgICAgICBpZiAoOjpHZXRDdXJzb3JQb3MoJnB0Q3Vyc29yKSkgeworICAgICAgICAgICAgaE1vbml0b3IgPSA6Ok1vbml0b3JGcm9tUG9pbnQocHRDdXJzb3IsIE1PTklUT1JfREVGQVVMVFRPTkVBUkVTVCk7CisgICAgICAgICAgICBpZiAoaE1vbml0b3IpIHsKKyAgICAgICAgICAgICAgICBtaS5jYlNpemUgPSBzaXplb2YobWkpOworICAgICAgICAgICAgICAgIGlmICg6OkdldE1vbml0b3JJbmZvVyhoTW9uaXRvciwgJm1pKSkgeworICAgICAgICAgICAgICAgICAgICB4ID0gbWkucmNXb3JrLmxlZnQgKyAobWkucmNXb3JrLnJpZ2h0IC0gbWkucmNXb3JrLmxlZnQgLSBfdGhlbWUtPm5XaWR0aCkgLyAyOworICAgICAgICAgICAgICAgICAgICB5ID0gbWkucmNXb3JrLnRvcCArIChtaS5yY1dvcmsuYm90dG9tIC0gbWkucmNXb3JrLnRvcCAtIF90aGVtZS0+bkhlaWdodCkgLyAyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIF9oV25kID0gOjpDcmVhdGVXaW5kb3dFeFcoCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgd2MubHBzekNsYXNzTmFtZSwKKyAgICAgICAgICAgIF90aGVtZS0+c2N6Q2FwdGlvbiwKKyAgICAgICAgICAgIGR3V2luZG93U3R5bGUsCisgICAgICAgICAgICB4LAorICAgICAgICAgICAgeSwKKyAgICAgICAgICAgIF90aGVtZS0+bldpZHRoLAorICAgICAgICAgICAgX3RoZW1lLT5uSGVpZ2h0LAorICAgICAgICAgICAgSFdORF9ERVNLVE9QLAorICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgIF9oTW9kdWxlLAorICAgICAgICAgICAgdGhpcworICAgICAgICApOworICAgICAgICBFeGl0T25OdWxsV2l0aExhc3RFcnJvcihfaFduZCwgaHIsICJGYWlsZWQgdG8gY3JlYXRlIHdpbmRvdy4iKTsKKworICAgICAgICBociA9IFNfT0s7CisKKyAgICBMRXhpdDoKKyAgICAgICAgcmV0dXJuIGhyOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBJbml0aWFsaXplVGFza2JhckJ1dHRvbiAtIGluaXRpYWxpemVzIHRhc2tiYXIgYnV0dG9uIGZvciBwcm9ncmVzcy4KKyAgICAvLworICAgIHZvaWQgSW5pdGlhbGl6ZVRhc2tiYXJCdXR0b24oKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgICAgIGhyID0gOjpDb0NyZWF0ZUluc3RhbmNlKENMU0lEX1Rhc2tiYXJMaXN0LCBudWxscHRyLCBDTFNDVFhfQUxMLCBfX3V1aWRvZihJVGFza2Jhckxpc3QzKSwgcmVpbnRlcnByZXRfY2FzdDxMUFZPSUQqPigmX3Rhc2tiYXJMaXN0KSk7CisgICAgICAgIGlmIChSRUdEQl9FX0NMQVNTTk9UUkVHID09IGhyKSB7CisgICAgICAgICAgICAvLyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBXaW5kb3dzIDcKKyAgICAgICAgICAgIEV4aXRGdW5jdGlvbjEoaHIgPSBTX09LKTsKKyAgICAgICAgfQorICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGNyZWF0ZSBJVGFza2Jhckxpc3QzLiBDb250aW51aW5nLiIpOworCisgICAgICAgIF90YXNrYmFyQnV0dG9uQ3JlYXRlZE1lc3NhZ2UgPSA6OlJlZ2lzdGVyV2luZG93TWVzc2FnZVcoTCJUYXNrYmFyQnV0dG9uQ3JlYXRlZCIpOworICAgICAgICBCYWxFeGl0T25OdWxsV2l0aExhc3RFcnJvcihfdGFza2JhckJ1dHRvbkNyZWF0ZWRNZXNzYWdlLCBociwgIkZhaWxlZCB0byBnZXQgVGFza2JhckJ1dHRvbkNyZWF0ZWQgbWVzc2FnZS4gQ29udGludWluZy4iKTsKKworICAgIExFeGl0OgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8KKyAgICAvLyBEZXN0cm95TWFpbldpbmRvdyAtIGNsZWFuIHVwIGFsbCB0aGUgd2luZG93IHJlZ2lzdHJhdGlvbi4KKyAgICAvLworICAgIHZvaWQgRGVzdHJveU1haW5XaW5kb3coKSB7CisgICAgICAgIGlmICg6OklzV2luZG93KF9oV25kKSkgeworICAgICAgICAgICAgOjpEZXN0cm95V2luZG93KF9oV25kKTsKKyAgICAgICAgICAgIF9oV25kID0gbnVsbHB0cjsKKyAgICAgICAgICAgIF90YXNrYmFyQnV0dG9uT0sgPSBGQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChfcmVnaXN0ZXJlZCkgeworICAgICAgICAgICAgOjpVbnJlZ2lzdGVyQ2xhc3NXKFBZQkFfV0lORE9XX0NMQVNTLCBfaE1vZHVsZSk7CisgICAgICAgICAgICBfcmVnaXN0ZXJlZCA9IEZBTFNFOworICAgICAgICB9CisgICAgfQorCisKKyAgICAvLworICAgIC8vIFduZFByb2MgLSBzdGFuZGFyZCB3aW5kb3dzIG1lc3NhZ2UgaGFuZGxlci4KKyAgICAvLworICAgIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFduZFByb2MoCisgICAgICAgIF9faW4gSFdORCBoV25kLAorICAgICAgICBfX2luIFVJTlQgdU1zZywKKyAgICAgICAgX19pbiBXUEFSQU0gd1BhcmFtLAorICAgICAgICBfX2luIExQQVJBTSBsUGFyYW0KKyAgICApIHsKKyNwcmFnbWEgd2FybmluZyhzdXBwcmVzczo0MzEyKQorICAgICAgICBhdXRvIHBCQSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24qPig6OkdldFdpbmRvd0xvbmdQdHJXKGhXbmQsIEdXTFBfVVNFUkRBVEEpKTsKKworICAgICAgICBzd2l0Y2ggKHVNc2cpIHsKKyAgICAgICAgY2FzZSBXTV9OQ0NSRUFURTogeworICAgICAgICAgICAgTFBDUkVBVEVTVFJVQ1QgbHBjcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8TFBDUkVBVEVTVFJVQ1Q+KGxQYXJhbSk7CisgICAgICAgICAgICBwQkEgPSByZWludGVycHJldF9jYXN0PFB5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKj4obHBjcy0+bHBDcmVhdGVQYXJhbXMpOworI3ByYWdtYSB3YXJuaW5nKHN1cHByZXNzOjQyNDQpCisgICAgICAgICAgICA6OlNldFdpbmRvd0xvbmdQdHJXKGhXbmQsIEdXTFBfVVNFUkRBVEEsIHJlaW50ZXJwcmV0X2Nhc3Q8TE9OR19QVFI+KHBCQSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFdNX05DREVTVFJPWTogeworICAgICAgICAgICAgTFJFU1VMVCBscmVzID0gVGhlbWVEZWZXaW5kb3dQcm9jKHBCQSA/IHBCQS0+X3RoZW1lIDogbnVsbHB0ciwgaFduZCwgdU1zZywgd1BhcmFtLCBsUGFyYW0pOworICAgICAgICAgICAgOjpTZXRXaW5kb3dMb25nUHRyVyhoV25kLCBHV0xQX1VTRVJEQVRBLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBscmVzOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBXTV9DUkVBVEU6IAorICAgICAgICAgICAgaWYgKCFwQkEtPk9uQ3JlYXRlKGhXbmQpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXTV9RVUVSWUVORFNFU1NJT046CisgICAgICAgICAgICByZXR1cm4gSURDQU5DRUwgIT0gcEJBLT5PblN5c3RlbVNodXRkb3duKHN0YXRpY19jYXN0PERXT1JEPihsUGFyYW0pLCBJRENBTkNFTCk7CisKKyAgICAgICAgY2FzZSBXTV9DTE9TRToKKyAgICAgICAgICAgIC8vIElmIHRoZSB1c2VyIGNob3NlIG5vdCB0byBjbG9zZSwgZG8gKm5vdCogbGV0IHRoZSBkZWZhdWx0IHdpbmRvdyBwcm9jIGhhbmRsZSB0aGUgbWVzc2FnZS4KKyAgICAgICAgICAgIGlmICghcEJBLT5PbkNsb3NlKCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV01fREVTVFJPWToKKyAgICAgICAgICAgIDo6UG9zdFF1aXRNZXNzYWdlKDApOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXTV9QQUlOVDogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgY2FzZSBXTV9FUkFTRUJLR05EOgorICAgICAgICAgICAgaWYgKHBCQSAmJiBwQkEtPl9zdXBwcmVzc1BhaW50KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdNX1BZQkFfU0hPV19IRUxQOgorICAgICAgICAgICAgcEJBLT5PblNob3dIZWxwKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjYXNlIFdNX1BZQkFfREVURUNUX1BBQ0tBR0VTOgorICAgICAgICAgICAgcEJBLT5PbkRldGVjdCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY2FzZSBXTV9QWUJBX1BMQU5fUEFDS0FHRVM6CisgICAgICAgICAgICBwQkEtPk9uUGxhbihzdGF0aWNfY2FzdDxCT09UU1RSQVBQRVJfQUNUSU9OPihsUGFyYW0pKTsKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNhc2UgV01fUFlCQV9BUFBMWV9QQUNLQUdFUzoKKyAgICAgICAgICAgIHBCQS0+T25BcHBseSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY2FzZSBXTV9QWUJBX0NIQU5HRV9TVEFURToKKyAgICAgICAgICAgIHBCQS0+T25DaGFuZ2VTdGF0ZShzdGF0aWNfY2FzdDxQWUJBX1NUQVRFPihsUGFyYW0pKTsKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNhc2UgV01fUFlCQV9TSE9XX0ZBSUxVUkU6CisgICAgICAgICAgICBwQkEtPk9uU2hvd0ZhaWx1cmUoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNhc2UgV01fQ09NTUFORDoKKyAgICAgICAgICAgIHN3aXRjaCAoTE9XT1JEKHdQYXJhbSkpIHsKKyAgICAgICAgICAgIC8vIEN1c3RvbWl6ZSBjb21tYW5kcworICAgICAgICAgICAgLy8gU3VjY2Vzcy9mYWlsdXJlIGNvbW1hbmRzCisgICAgICAgICAgICBjYXNlIElEX0xBVU5DSF9CVVRUT046CisgICAgICAgICAgICAgICAgcEJBLT5PbkNsaWNrTGF1bmNoQnV0dG9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgIGNhc2UgSURfU1VDQ0VTU19SRVNUQVJUX0JVVFRPTjogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgSURfRkFJTFVSRV9SRVNUQVJUX0JVVFRPTjoKKyAgICAgICAgICAgICAgICBwQkEtPk9uQ2xpY2tSZXN0YXJ0QnV0dG9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgIGNhc2UgSURDQU5DRUw6IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIElEX0lOU1RBTExfQ0FOQ0VMX0JVVFRPTjogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgSURfQ1VTVE9NMV9DQU5DRUxfQlVUVE9OOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBJRF9DVVNUT00yX0NBTkNFTF9CVVRUT046IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIElEX01PRElGWV9DQU5DRUxfQlVUVE9OOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBJRF9QUk9HUkVTU19DQU5DRUxfQlVUVE9OOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBJRF9TVUNDRVNTX0NBTkNFTF9CVVRUT046IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIElEX0ZBSUxVUkVfQ0FOQ0VMX0JVVFRPTjogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgSURfQ0xPU0VfQlVUVE9OOgorICAgICAgICAgICAgICAgIHBCQS0+T25Db21tYW5kKElEX0NMT1NFX0JVVFRPTik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcEJBLT5PbkNvbW1hbmQoKENPTlRST0xfSUQpTE9XT1JEKHdQYXJhbSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXTV9OT1RJRlk6CisgICAgICAgICAgICBpZiAobFBhcmFtKSB7CisgICAgICAgICAgICAgICAgTFBOTUhEUiBwbm1oZHIgPSByZWludGVycHJldF9jYXN0PExQTk1IRFI+KGxQYXJhbSk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChwbm1oZHItPmNvZGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIE5NX0NMSUNLOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgICAgIGNhc2UgTk1fUkVUVVJOOgorICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PERXT1JEPihwbm1oZHItPmlkRnJvbSkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBJRF9GQUlMVVJFX0xPR0ZJTEVfTElOSzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBCQS0+T25DbGlja0xvZ0ZpbGVMaW5rKCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV01fQ1RMQ09MT1JTVEFUSUM6CisgICAgICAgIGNhc2UgV01fQ1RMQ09MT1JCVE46CisgICAgICAgICAgICBpZiAocEJBKSB7CisgICAgICAgICAgICAgICAgSEJSVVNIIGJydXNoID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBpZiAocEJBLT5TZXRDb250cm9sQ29sb3IoKEhXTkQpbFBhcmFtLCAoSERDKXdQYXJhbSwgJmJydXNoKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKExSRVNVTFQpYnJ1c2g7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAocEJBICYmIHBCQS0+X3Rhc2tiYXJMaXN0ICYmIHVNc2cgPT0gcEJBLT5fdGFza2JhckJ1dHRvbkNyZWF0ZWRNZXNzYWdlKSB7CisgICAgICAgICAgICBwQkEtPl90YXNrYmFyQnV0dG9uT0sgPSBUUlVFOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gVGhlbWVEZWZXaW5kb3dQcm9jKHBCQSA/IHBCQS0+X3RoZW1lIDogbnVsbHB0ciwgaFduZCwgdU1zZywgd1BhcmFtLCBsUGFyYW0pOworICAgIH0KKworICAgIC8vCisgICAgLy8gT25DcmVhdGUgLSBmaW5pc2hlcyBsb2FkaW5nIHRoZSB0aGVtZS4KKyAgICAvLworICAgIEJPT0wgT25DcmVhdGUoX19pbiBIV05EIGhXbmQpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisKKyAgICAgICAgaHIgPSBUaGVtZUxvYWRDb250cm9scyhfdGhlbWUsIGhXbmQsIENPTlRST0xfSURfTkFNRVMsIGNvdW50b2YoQ09OVFJPTF9JRF9OQU1FUykpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGxvYWQgdGhlbWUgY29udHJvbHMuIik7CisKKyAgICAgICAgQ19BU1NFUlQoQ09VTlRfUEFHRSA9PSBjb3VudG9mKFBBR0VfTkFNRVMpKTsKKyAgICAgICAgQ19BU1NFUlQoY291bnRvZihfcGFnZUlkcykgPT0gY291bnRvZihQQUdFX05BTUVTKSk7CisKKyAgICAgICAgVGhlbWVHZXRQYWdlSWRzKF90aGVtZSwgUEFHRV9OQU1FUywgX3BhZ2VJZHMsIGNvdW50b2YoX3BhZ2VJZHMpKTsKKworICAgICAgICAvLyBJbml0aWFsaXplIHRoZSB0ZXh0IG9uIGFsbCAiYXBwbGljYXRpb24iIChub24tcGFnZSkgY29udHJvbHMuCisgICAgICAgIGZvciAoRFdPUkQgaSA9IDA7IGkgPCBfdGhlbWUtPmNDb250cm9sczsgKytpKSB7CisgICAgICAgICAgICBUSEVNRV9DT05UUk9MKiBwQ29udHJvbCA9IF90aGVtZS0+cmdDb250cm9scyArIGk7CisgICAgICAgICAgICBMUFdTVFIgdGV4dCA9IG51bGxwdHI7CisKKyAgICAgICAgICAgIGlmICghcENvbnRyb2wtPndQYWdlSWQgJiYgcENvbnRyb2wtPnNjelRleHQgJiYgKnBDb250cm9sLT5zY3pUZXh0KSB7CisgICAgICAgICAgICAgICAgSFJFU1VMVCBockZvcm1hdDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgd2l4IGRldmVsb3BlciBpcyBzaG93aW5nIGEgaGlkZGVuIHZhcmlhYmxlIGluIHRoZSBVSSwKKyAgICAgICAgICAgICAgICAvLyB0aGVuIG9idmlvdXNseSB0aGV5IGRvbid0IGNhcmUgYWJvdXQga2VlcGluZyBpdCBzYWZlIHNvIGRvbid0CisgICAgICAgICAgICAgICAgLy8gZ28gZG93biB0aGUgcmFiYml0IGhvbGUgb2YgbWFraW5nIHN1cmUgdGhhdCB0aGlzIGlzIHNlY3VyZWx5CisgICAgICAgICAgICAgICAgLy8gZnJlZWQuCisgICAgICAgICAgICAgICAgaHJGb3JtYXQgPSBCYWxGb3JtYXRTdHJpbmcocENvbnRyb2wtPnNjelRleHQsICZ0ZXh0KTsKKyAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyRm9ybWF0KSkgeworICAgICAgICAgICAgICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgcENvbnRyb2wtPndJZCwgdGV4dCk7CisgICAgICAgICAgICAgICAgICAgIFJlbGVhc2VTdHIodGV4dCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICBMRXhpdDoKKyAgICAgICAgcmV0dXJuIFNVQ0NFRURFRChocik7CisgICAgfQorCisgICAgdm9pZCBSZW1hcENvbG9yKENPTE9SUkVGICpmZywgQ09MT1JSRUYgKmJnLCBIQlJVU0ggKmJnQnJ1c2gpIHsKKyAgICAgICAgaWYgKCpmZyA9PSBSR0IoMCwgMCwgMCkpIHsKKyAgICAgICAgICAgICpmZyA9IEdldFN5c0NvbG9yKENPTE9SX1dJTkRPV1RFWFQpOworICAgICAgICB9IGVsc2UgaWYgKCpmZyA9PSBSR0IoMTI4LCAxMjgsIDEyOCkpIHsKKyAgICAgICAgICAgICpmZyA9IEdldFN5c0NvbG9yKENPTE9SX0dSQVlURVhUKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKmJnQnJ1c2ggJiYgKmJnID09IFJHQigyNTUsIDI1NSwgMjU1KSkgeworICAgICAgICAgICAgKmJnID0gR2V0U3lzQ29sb3IoQ09MT1JfV0lORE9XKTsKKyAgICAgICAgICAgICpiZ0JydXNoID0gR2V0U3lzQ29sb3JCcnVzaChDT0xPUl9XSU5ET1cpOworICAgICAgICB9CisgICAgfQorCisgICAgQk9PTCBTZXRDb250cm9sQ29sb3IoSFdORCBoV25kLCBIREMgaERDLCBIQlJVU0ggKmJydXNoKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgX3RoZW1lLT5jQ29udHJvbHM7ICsraSkgeworICAgICAgICAgICAgaWYgKF90aGVtZS0+cmdDb250cm9sc1tpXS5oV25kICE9IGhXbmQpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRFdPUkQgZm9udElkID0gX3RoZW1lLT5yZ0NvbnRyb2xzW2ldLmR3Rm9udElkOworICAgICAgICAgICAgaWYgKGZvbnRJZCA+IF90aGVtZS0+Y0ZvbnRzKSB7CisgICAgICAgICAgICAgICAgZm9udElkID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFRIRU1FX0ZPTlQgKmZudCA9ICZfdGhlbWUtPnJnRm9udHNbZm9udElkXTsKKworICAgICAgICAgICAgQ09MT1JSRUYgZmcgPSBmbnQtPmNyRm9yZWdyb3VuZCwgYmcgPSBmbnQtPmNyQmFja2dyb3VuZDsKKyAgICAgICAgICAgICpicnVzaCA9IGZudC0+aEJhY2tncm91bmQ7CisgICAgICAgICAgICBSZW1hcENvbG9yKCZmZywgJmJnLCBicnVzaCk7CisgICAgICAgICAgICA6OlNldFRleHRDb2xvcihoREMsIGZnKTsKKyAgICAgICAgICAgIDo6U2V0QmtDb2xvcihoREMsIGJnKTsKKworICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIC8vCisgICAgLy8gT25TaG93RmFpbHVyZSAtIGRpc3BsYXkgdGhlIGZhaWx1cmUgcGFnZS4KKyAgICAvLworICAgIHZvaWQgT25TaG93RmFpbHVyZSgpIHsKKyAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9GQUlMRUQsIFNfT0spOworCisgICAgICAgIC8vIElmIHRoZSBVSSBzaG91bGQgYmUgdmlzaWJsZSwgZGlzcGxheSBpdCBub3cgYW5kIGhpZGUgdGhlIHNwbGFzaCBzY3JlZW4KKyAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9ESVNQTEFZX05PTkUgPCBfY29tbWFuZC5kaXNwbGF5KSB7CisgICAgICAgICAgICA6OlNob3dXaW5kb3coX3RoZW1lLT5od25kUGFyZW50LCBTV19TSE9XKTsKKyAgICAgICAgfQorCisgICAgICAgIF9lbmdpbmUtPkNsb3NlU3BsYXNoU2NyZWVuKCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBPblNob3dIZWxwIC0gZGlzcGxheSB0aGUgaGVscCBwYWdlLgorICAgIC8vCisgICAgdm9pZCBPblNob3dIZWxwKCkgeworICAgICAgICBTZXRTdGF0ZShQWUJBX1NUQVRFX0hFTFAsIFNfT0spOworCisgICAgICAgIC8vIElmIHRoZSBVSSBzaG91bGQgYmUgdmlzaWJsZSwgZGlzcGxheSBpdCBub3cgYW5kIGhpZGUgdGhlIHNwbGFzaCBzY3JlZW4KKyAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9ESVNQTEFZX05PTkUgPCBfY29tbWFuZC5kaXNwbGF5KSB7CisgICAgICAgICAgICA6OlNob3dXaW5kb3coX3RoZW1lLT5od25kUGFyZW50LCBTV19TSE9XKTsKKyAgICAgICAgfQorCisgICAgICAgIF9lbmdpbmUtPkNsb3NlU3BsYXNoU2NyZWVuKCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBPbkRldGVjdCAtIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIG9mIHBhY2thZ2VzLgorICAgIC8vCisgICAgdm9pZCBPbkRldGVjdCgpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisKKyAgICAgICAgaWYgKF9iYUZ1bmN0aW9uKSB7CisgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIlJ1bm5pbmcgZGV0ZWN0IEJBIGZ1bmN0aW9uIik7CisgICAgICAgICAgICBociA9IF9iYUZ1bmN0aW9uLT5PbkRldGVjdCgpOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCBjYWxsaW5nIGRldGVjdCBCQSBmdW5jdGlvbi4iKTsKKyAgICAgICAgfQorCisgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfREVURUNUSU5HLCBocik7CisKKyAgICAgICAgLy8gSWYgdGhlIFVJIHNob3VsZCBiZSB2aXNpYmxlLCBkaXNwbGF5IGl0IG5vdyBhbmQgaGlkZSB0aGUgc3BsYXNoIHNjcmVlbgorICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfTk9ORSA8IF9jb21tYW5kLmRpc3BsYXkpIHsKKyAgICAgICAgICAgIDo6U2hvd1dpbmRvdyhfdGhlbWUtPmh3bmRQYXJlbnQsIFNXX1NIT1cpOworICAgICAgICB9CisKKyAgICAgICAgX2VuZ2luZS0+Q2xvc2VTcGxhc2hTY3JlZW4oKTsKKworICAgICAgICAvLyBUZWxsIHRoZSBjb3JlIHdlJ3JlIHJlYWR5IGZvciB0aGUgcGFja2FnZXMgdG8gYmUgcHJvY2Vzc2VkIG5vdy4KKyAgICAgICAgaHIgPSBfZW5naW5lLT5EZXRlY3QoKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBzdGFydCBkZXRlY3RpbmcgY2hhaW4uIik7CisKKyAgICBMRXhpdDoKKyAgICAgICAgaWYgKEZBSUxFRChocikpIHsKKyAgICAgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfREVURUNUSU5HLCBocik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSFJFU1VMVCBVcGRhdGVVSVN0cmluZ3MoX19pbiBCT09UU1RSQVBQRVJfQUNUSU9OIGFjdGlvbikgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgTFBDV1NUUiBsaWtlSW5zdGFsbGluZyA9IG51bGxwdHI7CisgICAgICAgIExQQ1dTVFIgbGlrZUluc3RhbGxhdGlvbiA9IG51bGxwdHI7CisgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgICAgIGNhc2UgQk9PVFNUUkFQUEVSX0FDVElPTl9JTlNUQUxMOgorICAgICAgICAgICAgbGlrZUluc3RhbGxpbmcgPSBMIkluc3RhbGxpbmciOworICAgICAgICAgICAgbGlrZUluc3RhbGxhdGlvbiA9IEwiSW5zdGFsbGF0aW9uIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJPT1RTVFJBUFBFUl9BQ1RJT05fTU9ESUZZOgorICAgICAgICAgICAgLy8gRm9yIG1vZGlmeSwgd2UgYWN0dWFsbHkgd2FudCB0byBwYXNzIElOU1RBTEwKKyAgICAgICAgICAgIGFjdGlvbiA9IEJPT1RTVFJBUFBFUl9BQ1RJT05fSU5TVEFMTDsKKyAgICAgICAgICAgIGxpa2VJbnN0YWxsaW5nID0gTCJNb2RpZnlpbmciOworICAgICAgICAgICAgbGlrZUluc3RhbGxhdGlvbiA9IEwiTW9kaWZpY2F0aW9uIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJPT1RTVFJBUFBFUl9BQ1RJT05fUkVQQUlSOgorICAgICAgICAgICAgbGlrZUluc3RhbGxpbmcgPSBMIlJlcGFpcmluZyI7CisgICAgICAgICAgICBsaWtlSW5zdGFsbGF0aW9uID0gTCJSZXBhaXIiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQk9PVFNUUkFQUEVSX0FDVElPTl9VTklOU1RBTEw6CisgICAgICAgICAgICBsaWtlSW5zdGFsbGluZyA9IEwiVW5pbnN0YWxsaW5nIjsKKyAgICAgICAgICAgIGxpa2VJbnN0YWxsYXRpb24gPSBMIlVuaW5zdGFsbGF0aW9uIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxpa2VJbnN0YWxsaW5nKSB7CisgICAgICAgICAgICBMUFdTVFIgbG9jTmFtZSA9IG51bGxwdHI7CisgICAgICAgICAgICBMT0NfU1RSSU5HICpsb2NUZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGhyID0gU3RyQWxsb2NGb3JtYXR0ZWQoJmxvY05hbWUsIEwiIyhsb2MuJWxzKSIsIGxpa2VJbnN0YWxsaW5nKTsKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIpKSB7CisgICAgICAgICAgICAgICAgaHIgPSBMb2NHZXRTdHJpbmcoX3dpeExvYywgbG9jTmFtZSwgJmxvY1RleHQpOworICAgICAgICAgICAgICAgIFJlbGVhc2VTdHIobG9jTmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZVN0cmluZygKKyAgICAgICAgICAgICAgICBMIkFjdGlvbkxpa2VJbnN0YWxsaW5nIiwKKyAgICAgICAgICAgICAgICBTVUNDRUVERUQoaHIpICYmIGxvY1RleHQgPyBsb2NUZXh0LT53elRleHQgOiBsaWtlSW5zdGFsbGluZworICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsaWtlSW5zdGFsbGF0aW9uKSB7CisgICAgICAgICAgICBMUFdTVFIgbG9jTmFtZSA9IG51bGxwdHI7CisgICAgICAgICAgICBMT0NfU1RSSU5HICpsb2NUZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGhyID0gU3RyQWxsb2NGb3JtYXR0ZWQoJmxvY05hbWUsIEwiIyhsb2MuJWxzKSIsIGxpa2VJbnN0YWxsYXRpb24pOworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikpIHsKKyAgICAgICAgICAgICAgICBociA9IExvY0dldFN0cmluZyhfd2l4TG9jLCBsb2NOYW1lLCAmbG9jVGV4dCk7CisgICAgICAgICAgICAgICAgUmVsZWFzZVN0cihsb2NOYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKAorICAgICAgICAgICAgICAgIEwiQWN0aW9uTGlrZUluc3RhbGxhdGlvbiIsCisgICAgICAgICAgICAgICAgU1VDQ0VFREVEKGhyKSAmJiBsb2NUZXh0ID8gbG9jVGV4dC0+d3pUZXh0IDogbGlrZUluc3RhbGxhdGlvbgorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaHI7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBPblBsYW4gLSBwbGFuIHRoZSBkZXRlY3RlZCBjaGFuZ2VzLgorICAgIC8vCisgICAgdm9pZCBPblBsYW4oX19pbiBCT09UU1RSQVBQRVJfQUNUSU9OIGFjdGlvbikgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKworICAgICAgICBfcGxhbm5lZEFjdGlvbiA9IGFjdGlvbjsKKworICAgICAgICBociA9IFVwZGF0ZVVJU3RyaW5ncyhhY3Rpb24pOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIHVwZGF0ZSBzdHJpbmdzIik7CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIGdvaW5nIHRvIGFwcGx5IGEgZG93bmdyYWRlLCBiYWlsLgorICAgICAgICBpZiAoX2Rvd25ncmFkaW5nT3RoZXJWZXJzaW9uICYmIEJPT1RTVFJBUFBFUl9BQ1RJT05fVU5JTlNUQUxMIDwgYWN0aW9uKSB7CisgICAgICAgICAgICBpZiAoX3N1cHByZXNzRG93bmdyYWRlRmFpbHVyZSkgeworICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiQSBuZXdlciB2ZXJzaW9uIG9mIHRoaXMgcHJvZHVjdCBpcyBpbnN0YWxsZWQgYnV0IGRvd25ncmFkZSBmYWlsdXJlIGhhcyBiZWVuIHN1cHByZXNzZWQ7IGNvbnRpbnVpbmcuLi4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaHIgPSBIUkVTVUxUX0ZST01fV0lOMzIoRVJST1JfUFJPRFVDVF9WRVJTSU9OKTsKKyAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiQ2Fubm90IGluc3RhbGwgYSBwcm9kdWN0IHdoZW4gYSBuZXdlciB2ZXJzaW9uIGlzIGluc3RhbGxlZC4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfUExBTk5JTkcsIGhyKTsKKworICAgICAgICBpZiAoX2JhRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiUnVubmluZyBwbGFuIEJBIGZ1bmN0aW9uIik7CisgICAgICAgICAgICBfYmFGdW5jdGlvbi0+T25QbGFuKCk7CisgICAgICAgIH0KKworICAgICAgICBociA9IF9lbmdpbmUtPlBsYW4oYWN0aW9uKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBzdGFydCBwbGFubmluZyBwYWNrYWdlcy4iKTsKKworICAgIExFeGl0OgorICAgICAgICBpZiAoRkFJTEVEKGhyKSkgeworICAgICAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9QTEFOTklORywgaHIpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBPbkFwcGx5IC0gYXBwbHkgdGhlIHBhY2thZ2VzLgorICAgIC8vCisgICAgdm9pZCBPbkFwcGx5KCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKworICAgICAgICBTZXRTdGF0ZShQWUJBX1NUQVRFX0FQUExZSU5HLCBocik7CisgICAgICAgIFNldFByb2dyZXNzU3RhdGUoaHIpOworICAgICAgICBTZXRUYXNrYmFyQnV0dG9uUHJvZ3Jlc3MoMCk7CisKKyAgICAgICAgaHIgPSBfZW5naW5lLT5BcHBseShfaFduZCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gc3RhcnQgYXBwbHlpbmcgcGFja2FnZXMuIik7CisKKyAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfUFJPR1JFU1NfQ0FOQ0VMX0JVVFRPTiwgVFJVRSk7IC8vIGVuc3VyZSB0aGUgY2FuY2VsIGJ1dHRvbiBpcyBlbmFibGVkIGJlZm9yZSBzdGFydGluZy4KKworICAgIExFeGl0OgorICAgICAgICBpZiAoRkFJTEVEKGhyKSkgeworICAgICAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9BUFBMWUlORywgaHIpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBPbkNoYW5nZVN0YXRlIC0gY2hhbmdlIHN0YXRlLgorICAgIC8vCisgICAgdm9pZCBPbkNoYW5nZVN0YXRlKF9faW4gUFlCQV9TVEFURSBzdGF0ZSkgeworICAgICAgICBMUFdTVFIgdW5mb3JtYXR0ZWRUZXh0ID0gbnVsbHB0cjsKKworICAgICAgICBfc3RhdGUgPSBzdGF0ZTsKKworICAgICAgICAvLyBJZiBvdXIgaW5zdGFsbCBpcyBhdCB0aGUgZW5kIChzdWNjZXNzIG9yIGZhaWx1cmUpIGFuZCB3ZSdyZSBub3Qgc2hvd2luZyBmdWxsIFVJCisgICAgICAgIC8vIHRoZW4gZXhpdCAocHJvbXB0IGZvciByZXN0YXJ0IGlmIHJlcXVpcmVkKS4KKyAgICAgICAgaWYgKChQWUJBX1NUQVRFX0FQUExJRUQgPD0gX3N0YXRlICYmIEJPT1RTVFJBUFBFUl9ESVNQTEFZX0ZVTEwgPiBfY29tbWFuZC5kaXNwbGF5KSkgeworICAgICAgICAgICAgLy8gSWYgYSByZXN0YXJ0IHdhcyByZXF1aXJlZCBidXQgd2Ugd2VyZSBub3QgYXV0b21hdGljYWxseSBhbGxvd2VkIHRvCisgICAgICAgICAgICAvLyBhY2NlcHQgdGhlIHJlYm9vdCB0aGVuIGRvIHRoZSBwcm9tcHQuCisgICAgICAgICAgICBpZiAoX3Jlc3RhcnRSZXF1aXJlZCAmJiAhX2FsbG93UmVzdGFydCkgeworICAgICAgICAgICAgICAgIFN0ckFsbG9jRnJvbUVycm9yKCZ1bmZvcm1hdHRlZFRleHQsIEhSRVNVTFRfRlJPTV9XSU4zMihFUlJPUl9TVUNDRVNTX1JFQk9PVF9SRVFVSVJFRCksIG51bGxwdHIpOworCisgICAgICAgICAgICAgICAgX2FsbG93UmVzdGFydCA9IElET0sgPT0gOjpNZXNzYWdlQm94VygKKyAgICAgICAgICAgICAgICAgICAgX2hXbmQsCisgICAgICAgICAgICAgICAgICAgIHVuZm9ybWF0dGVkVGV4dCA/IHVuZm9ybWF0dGVkVGV4dCA6IEwiVGhlIHJlcXVlc3RlZCBvcGVyYXRpb24gaXMgc3VjY2Vzc2Z1bC4gQ2hhbmdlcyB3aWxsIG5vdCBiZSBlZmZlY3RpdmUgdW50aWwgdGhlIHN5c3RlbSBpcyByZWJvb3RlZC4iLAorICAgICAgICAgICAgICAgICAgICBfdGhlbWUtPnNjekNhcHRpb24sCisgICAgICAgICAgICAgICAgICAgIE1CX0lDT05FWENMQU1BVElPTiB8IE1CX09LQ0FOQ0VMCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gUXVpZXRseSBleGl0LgorICAgICAgICAgICAgOjpQb3N0TWVzc2FnZVcoX2hXbmQsIFdNX0NMT1NFLCAwLCAwKTsKKyAgICAgICAgfSBlbHNlIHsgLy8gdHJ5IHRvIGNoYW5nZSB0aGUgcGFnZXMuCisgICAgICAgICAgICBEV09SRCBuZXdQYWdlSWQgPSAwOworICAgICAgICAgICAgRGV0ZXJtaW5lUGFnZUlkKF9zdGF0ZSwgJm5ld1BhZ2VJZCk7CisKKyAgICAgICAgICAgIGlmIChfdmlzaWJsZVBhZ2VJZCAhPSBuZXdQYWdlSWQpIHsKKyAgICAgICAgICAgICAgICBTaG93UGFnZShuZXdQYWdlSWQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgUmVsZWFzZVN0cih1bmZvcm1hdHRlZFRleHQpOworICAgIH0KKworICAgIC8vCisgICAgLy8gQ2FsbGVkIGJlZm9yZSBzaG93aW5nIGEgcGFnZSB0byBoYW5kbGUgYWxsIGNvbnRyb2xzLgorICAgIC8vCisgICAgdm9pZCBQcm9jZXNzUGFnZUNvbnRyb2xzKFRIRU1FX1BBR0UgKnBQYWdlKSB7CisgICAgICAgIGlmICghcFBhZ2UpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoRFdPUkQgaSA9IDA7IGkgPCBwUGFnZS0+Y0NvbnRyb2xJbmRpY2VzOyArK2kpIHsKKyAgICAgICAgICAgIFRIRU1FX0NPTlRST0wqIHBDb250cm9sID0gX3RoZW1lLT5yZ0NvbnRyb2xzICsgcFBhZ2UtPnJnZHdDb250cm9sSW5kaWNlc1tpXTsKKyAgICAgICAgICAgIEJPT0wgZW5hYmxlQ29udHJvbCA9IFRSVUU7CisKKyAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBuYW1lZCBjb250cm9sLCB0cnkgdG8gc2V0IGl0cyBkZWZhdWx0IHN0YXRlLgorICAgICAgICAgICAgaWYgKHBDb250cm9sLT5zY3pOYW1lICYmICpwQ29udHJvbC0+c2N6TmFtZSkgeworICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBjaGVja2FibGUgY29udHJvbCwgdHJ5IHRvIHNldCBpdHMgZGVmYXVsdCBzdGF0ZQorICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBzdGF0ZSBvZiBhIG1hdGNoaW5nIG5hbWVkIEJ1cm4gdmFyaWFibGUuCisgICAgICAgICAgICAgICAgaWYgKElzQ2hlY2thYmxlKHBDb250cm9sKSkgeworICAgICAgICAgICAgICAgICAgICBMT05HTE9ORyBsbFZhbHVlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgSFJFU1VMVCBociA9IEJhbEdldE51bWVyaWNWYXJpYWJsZShwQ29udHJvbC0+c2N6TmFtZSwgJmxsVmFsdWUpOworCisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjb250cm9sIHZhbHVlIGlzbid0IHNldCB0aGVuIGRpc2FibGUgaXQuCisgICAgICAgICAgICAgICAgICAgIGlmICghU1VDQ0VFREVEKGhyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQ29udHJvbCA9IEZBTFNFOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgVGhlbWVTZW5kQ29udHJvbE1lc3NhZ2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoZW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBDb250cm9sLT53SWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQk1fU0VUQ0hFQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VDQ0VFREVEKGhyKSAmJiBsbFZhbHVlID8gQlNUX0NIRUNLRUQgOiBCU1RfVU5DSEVDS0VELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBIaWRlIG9yIGRpc2FibGUgY29udHJvbHMgYmFzZWQgb24gdGhlIGNvbnRyb2wgbmFtZSB3aXRoICdTdGF0ZScgYXBwZW5kZWQKKyAgICAgICAgICAgICAgICBMUFdTVFIgY29udHJvbE5hbWUgPSBudWxscHRyOworICAgICAgICAgICAgICAgIEhSRVNVTFQgaHIgPSBTdHJBbGxvY0Zvcm1hdHRlZCgmY29udHJvbE5hbWUsIEwiJWxzU3RhdGUiLCBwQ29udHJvbC0+c2N6TmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikpIHsKKyAgICAgICAgICAgICAgICAgICAgTFBXU1RSIGNvbnRyb2xTdGF0ZSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoY29udHJvbE5hbWUsICZjb250cm9sU3RhdGUpOworICAgICAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSAmJiBjb250cm9sU3RhdGUgJiYgKmNvbnRyb2xTdGF0ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xTdGF0ZVswXSA9PSAnWycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUFdTVFIgZm9ybWF0dGVkID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKEJhbEZvcm1hdFN0cmluZyhjb250cm9sU3RhdGUsICZmb3JtYXR0ZWQpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJGcmVlKGNvbnRyb2xTdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xTdGF0ZSA9IGZvcm1hdHRlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDU1RSX0VRVUFMID09IDo6Q29tcGFyZVN0cmluZ1coTE9DQUxFX05FVVRSQUwsIDAsIGNvbnRyb2xTdGF0ZSwgLTEsIEwiZGlzYWJsZSIsIC0xKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiRGlzYWJsZSBjb250cm9sICVscyIsIHBDb250cm9sLT5zY3pOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVDb250cm9sID0gRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKENTVFJfRVFVQUwgPT0gOjpDb21wYXJlU3RyaW5nVyhMT0NBTEVfTkVVVFJBTCwgMCwgY29udHJvbFN0YXRlLCAtMSwgTCJoaWRlIiwgLTEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJIaWRlIGNvbnRyb2wgJWxzIiwgcENvbnRyb2wtPnNjek5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IFRoaXMgZG9lc24ndCB3b3JrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlbWVTaG93Q29udHJvbChfdGhlbWUsIHBDb250cm9sLT53SWQsIFNXX0hJREUpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBbiBleHBsaWNpdCBzdGF0ZSBjYW4gb3ZlcnJpZGUgdGhlIGxhY2sgb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJhY2tpbmcgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQ29udHJvbCA9IFRSVUU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgU3RyRnJlZShjb250cm9sU3RhdGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBTdHJGcmVlKGNvbnRyb2xOYW1lKTsKKyAgICAgICAgICAgICAgICBjb250cm9sTmFtZSA9IG51bGxwdHI7CisKKworICAgICAgICAgICAgICAgIC8vIElmIGEgY29tbWFuZCBsaW5rIGhhcyBhIG5vdGUsIHRoZW4gYWRkIGl0LgorICAgICAgICAgICAgICAgIGlmICgocENvbnRyb2wtPmR3U3R5bGUgJiBCU19UWVBFTUFTSykgPT0gQlNfQ09NTUFORExJTksgfHwKKyAgICAgICAgICAgICAgICAgICAgKHBDb250cm9sLT5kd1N0eWxlICYgQlNfVFlQRU1BU0spID09IEJTX0RFRkNPTU1BTkRMSU5LKSB7CisgICAgICAgICAgICAgICAgICAgIGhyID0gU3RyQWxsb2NGb3JtYXR0ZWQoJmNvbnRyb2xOYW1lLCBMIiMobG9jLiVsc05vdGUpIiwgcENvbnRyb2wtPnNjek5hbWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgTE9DX1NUUklORyAqbG9jVGV4dCA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgICAgICBociA9IExvY0dldFN0cmluZyhfd2l4TG9jLCBjb250cm9sTmFtZSwgJmxvY1RleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgbG9jVGV4dCAmJiBsb2NUZXh0LT53elRleHQgJiYgbG9jVGV4dC0+d3pUZXh0WzBdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBXU1RSIHRleHQgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyID0gQmFsRm9ybWF0U3RyaW5nKGxvY1RleHQtPnd6VGV4dCwgJnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIpICYmIHRleHQgJiYgdGV4dFswXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVtZVNlbmRDb250cm9sTWVzc2FnZShfdGhlbWUsIHBDb250cm9sLT53SWQsIEJDTV9TRVROT1RFLCAwLCAoTFBBUkFNKXRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlU3RyKHRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlU3RyKGNvbnRyb2xOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xOYW1lID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBociA9IFNfT0s7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBwQ29udHJvbC0+d0lkLCBlbmFibGVDb250cm9sKTsKKworICAgICAgICAgICAgLy8gRm9ybWF0IHRoZSB0ZXh0IGluIGVhY2ggb2YgdGhlIG5ldyBwYWdlJ3MgY29udHJvbHMKKyAgICAgICAgICAgIGlmIChwQ29udHJvbC0+c2N6VGV4dCAmJiAqcENvbnRyb2wtPnNjelRleHQpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgd2l4IGRldmVsb3BlciBpcyBzaG93aW5nIGEgaGlkZGVuIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgLy8gaW4gdGhlIFVJLCB0aGVuIG9idmlvdXNseSB0aGV5IGRvbid0IGNhcmUgYWJvdXQKKyAgICAgICAgICAgICAgICAvLyBrZWVwaW5nIGl0IHNhZmUgc28gZG9uJ3QgZ28gZG93biB0aGUgcmFiYml0IGhvbGUKKyAgICAgICAgICAgICAgICAvLyBvZiBtYWtpbmcgc3VyZSB0aGF0IHRoaXMgaXMgc2VjdXJlbHkgZnJlZWQuCisgICAgICAgICAgICAgICAgTFBXU1RSIHRleHQgPSBudWxscHRyOworICAgICAgICAgICAgICAgIEhSRVNVTFQgaHIgPSBCYWxGb3JtYXRTdHJpbmcocENvbnRyb2wtPnNjelRleHQsICZ0ZXh0KTsKKyAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSkgeworICAgICAgICAgICAgICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgcENvbnRyb2wtPndJZCwgdGV4dCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8KKyAgICAvLyBPbkNsb3NlIC0gY2FsbGVkIHdoZW4gdGhlIHdpbmRvdyBpcyB0cnlpbmcgdG8gYmUgY2xvc2VkLgorICAgIC8vCisgICAgQk9PTCBPbkNsb3NlKCkgeworICAgICAgICBCT09MIGNsb3NlID0gRkFMU0U7CisKKyAgICAgICAgLy8gSWYgd2UndmUgYWxyZWFkeSBzdWNjZWVkZWQgb3IgZmFpbGVkIG9yIHNob3dpbmcgdGhlIGhlbHAgcGFnZSwganVzdCBjbG9zZSAocHJvbXB0cyBhcmUgYW5ub3lpbmcgaWYgdGhlIGJvb3RzdHJhcHBlciBpcyBkb25lKS4KKyAgICAgICAgaWYgKFBZQkFfU1RBVEVfQVBQTElFRCA8PSBfc3RhdGUgfHwgUFlCQV9TVEFURV9IRUxQID09IF9zdGF0ZSkgeworICAgICAgICAgICAgY2xvc2UgPSBUUlVFOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gcHJvbXB0IHRoZSB1c2VyIG9yIGZvcmNlIHRoZSBjYW5jZWwgaWYgdGhlcmUgaXMgbm8gVUkuCisgICAgICAgICAgICBjbG9zZSA9IFByb21wdENhbmNlbCgKKyAgICAgICAgICAgICAgICBfaFduZCwKKyAgICAgICAgICAgICAgICBCT09UU1RSQVBQRVJfRElTUExBWV9GVUxMICE9IF9jb21tYW5kLmRpc3BsYXksCisgICAgICAgICAgICAgICAgX2NvbmZpcm1DbG9zZU1lc3NhZ2UgPyBfY29uZmlybUNsb3NlTWVzc2FnZSA6IEwiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNhbmNlbD8iLAorICAgICAgICAgICAgICAgIF90aGVtZS0+c2N6Q2FwdGlvbgorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHdlJ3JlIGRvaW5nIHByb2dyZXNzIHRoZW4gd2UgbmV2ZXIgY2xvc2UsIHdlIGp1c3QgY2FuY2VsIHRvIGxldCByb2xsYmFjayBvY2N1ci4KKyAgICAgICAgaWYgKFBZQkFfU1RBVEVfQVBQTFlJTkcgPD0gX3N0YXRlICYmIFBZQkFfU1RBVEVfQVBQTElFRCA+IF9zdGF0ZSkgeworICAgICAgICAgICAgLy8gSWYgd2UgY2FuY2VsZWQgZGlzYWJsZSBjYW5jZWwgYnV0dG9uIHNpbmNlIGNsaWNraW5nIGl0IGFnYWluIGlzIHNpbGx5LgorICAgICAgICAgICAgaWYgKGNsb3NlKSB7CisgICAgICAgICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfUFJPR1JFU1NfQ0FOQ0VMX0JVVFRPTiwgRkFMU0UpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjbG9zZSA9IEZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNsb3NlOworICAgIH0KKworICAgIC8vCisgICAgLy8gT25DbGlja0Nsb3NlQnV0dG9uIC0gY2xvc2UgdGhlIGFwcGxpY2F0aW9uLgorICAgIC8vCisgICAgdm9pZCBPbkNsaWNrQ2xvc2VCdXR0b24oKSB7CisgICAgICAgIDo6U2VuZE1lc3NhZ2VXKF9oV25kLCBXTV9DTE9TRSwgMCwgMCk7CisgICAgfQorCisKKyAgICAvLworICAgIC8vIE9uQ2xpY2tMYXVuY2hCdXR0b24gLSBsYXVuY2ggdGhlIGFwcCBmcm9tIHRoZSBzdWNjZXNzIHBhZ2UuCisgICAgLy8KKyAgICB2b2lkIE9uQ2xpY2tMYXVuY2hCdXR0b24oKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworICAgICAgICBMUFdTVFIgc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQgPSBudWxscHRyOworICAgICAgICBMUFdTVFIgc2N6TGF1bmNoVGFyZ2V0ID0gbnVsbHB0cjsKKyAgICAgICAgTFBXU1RSIHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQgPSBudWxscHRyOworICAgICAgICBMUFdTVFIgc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMgPSBudWxscHRyOworICAgICAgICBMUFdTVFIgc2N6QXJndW1lbnRzID0gbnVsbHB0cjsKKyAgICAgICAgaW50IG5DbWRTaG93ID0gU1dfU0hPV05PUk1BTDsKKworICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9QQVRILCAmc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBnZXQgbGF1bmNoIHRhcmdldCB2YXJpYWJsZSAnJWxzJy4iLCBQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfUEFUSCk7CisKKyAgICAgICAgaHIgPSBCYWxGb3JtYXRTdHJpbmcoc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQsICZzY3pMYXVuY2hUYXJnZXQpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBmb3JtYXQgbGF1bmNoIHRhcmdldCB2YXJpYWJsZTogJWxzIiwgc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQpOworCisgICAgICAgIGlmIChCYWxTdHJpbmdWYXJpYWJsZUV4aXN0cyhQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfRUxFVkFURURfSUQpKSB7CisgICAgICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9FTEVWQVRFRF9JRCwgJnNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQpOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZ2V0IGxhdW5jaCB0YXJnZXQgZWxldmF0ZWQgaWQgJyVscycuIiwgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX0VMRVZBVEVEX0lEKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChCYWxTdHJpbmdWYXJpYWJsZUV4aXN0cyhQWUJBX1ZBUklBQkxFX0xBVU5DSF9BUkdVTUVOVFMpKSB7CisgICAgICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKFBZQkFfVkFSSUFCTEVfTEFVTkNIX0FSR1VNRU5UUywgJnNjelVuZm9ybWF0dGVkQXJndW1lbnRzKTsKKyAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGdldCBsYXVuY2ggYXJndW1lbnRzICclbHMnLiIsIFBZQkFfVkFSSUFCTEVfTEFVTkNIX0FSR1VNRU5UUyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoQmFsU3RyaW5nVmFyaWFibGVFeGlzdHMoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfSElEREVOKSkgeworICAgICAgICAgICAgbkNtZFNob3cgPSBTV19ISURFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQgJiYgIV90cmllZFRvTGF1bmNoRWxldmF0ZWQpIHsKKyAgICAgICAgICAgIF90cmllZFRvTGF1bmNoRWxldmF0ZWQgPSBUUlVFOworICAgICAgICAgICAgaHIgPSBfZW5naW5lLT5MYXVuY2hBcHByb3ZlZEV4ZShfaFduZCwgc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCwgc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMsIDApOworICAgICAgICAgICAgaWYgKEZBSUxFRChocikpIHsKKyAgICAgICAgICAgICAgICBCYWxMb2dFcnJvcihociwgIkZhaWxlZCB0byBsYXVuY2ggZWxldmF0ZWQgdGFyZ2V0OiAlbHMiLCBzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkKTsKKworICAgICAgICAgICAgICAgIC8vdHJ5IHdpdGggU2hlbEV4ZWMgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgT25DbGlja0xhdW5jaEJ1dHRvbigpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHNjelVuZm9ybWF0dGVkQXJndW1lbnRzKSB7CisgICAgICAgICAgICAgICAgaHIgPSBCYWxGb3JtYXRTdHJpbmcoc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMsICZzY3pBcmd1bWVudHMpOworICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGZvcm1hdCBsYXVuY2ggYXJndW1lbnRzIHZhcmlhYmxlOiAlbHMiLCBzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGhyID0gU2hlbEV4ZWMoc2N6TGF1bmNoVGFyZ2V0LCBzY3pBcmd1bWVudHMsIEwib3BlbiIsIG51bGxwdHIsIG5DbWRTaG93LCBfaFduZCwgbnVsbHB0cik7CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0OiAlbHMiLCBzY3pMYXVuY2hUYXJnZXQpOworCisgICAgICAgICAgICA6OlBvc3RNZXNzYWdlVyhfaFduZCwgV01fQ0xPU0UsIDAsIDApOworICAgICAgICB9CisKKyAgICBMRXhpdDoKKyAgICAgICAgU3RyU2VjdXJlWmVyb0ZyZWVTdHJpbmcoc2N6QXJndW1lbnRzKTsKKyAgICAgICAgUmVsZWFzZVN0cihzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cyk7CisgICAgICAgIFJlbGVhc2VTdHIoc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCk7CisgICAgICAgIFN0clNlY3VyZVplcm9GcmVlU3RyaW5nKHNjekxhdW5jaFRhcmdldCk7CisgICAgICAgIFJlbGVhc2VTdHIoc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQpOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKworICAgIC8vCisgICAgLy8gT25DbGlja1Jlc3RhcnRCdXR0b24gLSBhbGxvd3MgdGhlIHJlc3RhcnQgYW5kIGNsb3NlcyB0aGUgYXBwLgorICAgIC8vCisgICAgdm9pZCBPbkNsaWNrUmVzdGFydEJ1dHRvbigpIHsKKyAgICAgICAgQXNzZXJ0U3ooX3Jlc3RhcnRSZXF1aXJlZCwgIlJlc3RhcnQgbXVzdCBiZSByZXF1ZXN0ZWQgdG8gYmUgYWJsZSB0byBjbGljayBvbiB0aGUgcmVzdGFydCBidXR0b24uIik7CisKKyAgICAgICAgX2FsbG93UmVzdGFydCA9IFRSVUU7CisgICAgICAgIDo6U2VuZE1lc3NhZ2VXKF9oV25kLCBXTV9DTE9TRSwgMCwgMCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBPbkNsaWNrTG9nRmlsZUxpbmsgLSBzaG93IHRoZSBsb2cgZmlsZS4KKyAgICAvLworICAgIHZvaWQgT25DbGlja0xvZ0ZpbGVMaW5rKCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgTFBXU1RSIHNjekxvZ0ZpbGUgPSBudWxscHRyOworCisgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoX2J1bmRsZS5zY3pMb2dWYXJpYWJsZSwgJnNjekxvZ0ZpbGUpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBnZXQgbG9nIGZpbGUgdmFyaWFibGUgJyVscycuIiwgX2J1bmRsZS5zY3pMb2dWYXJpYWJsZSk7CisKKyAgICAgICAgaHIgPSBTaGVsRXhlYyhMIm5vdGVwYWQuZXhlIiwgc2N6TG9nRmlsZSwgTCJvcGVuIiwgbnVsbHB0ciwgU1dfU0hPV0RFRkFVTFQsIF9oV25kLCBudWxscHRyKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gb3BlbiBsb2cgZmlsZSB0YXJnZXQ6ICVscyIsIHNjekxvZ0ZpbGUpOworCisgICAgTEV4aXQ6CisgICAgICAgIFJlbGVhc2VTdHIoc2N6TG9nRmlsZSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBTZXRTdGF0ZQorICAgIC8vCisgICAgdm9pZCBTZXRTdGF0ZShfX2luIFBZQkFfU1RBVEUgc3RhdGUsIF9faW4gSFJFU1VMVCBoclN0YXR1cykgeworICAgICAgICBpZiAoRkFJTEVEKGhyU3RhdHVzKSkgeworICAgICAgICAgICAgX2hyRmluYWwgPSBoclN0YXR1czsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChGQUlMRUQoX2hyRmluYWwpKSB7CisgICAgICAgICAgICBzdGF0ZSA9IFBZQkFfU1RBVEVfRkFJTEVEOworICAgICAgICB9CisKKyAgICAgICAgaWYgKF9zdGF0ZSAhPSBzdGF0ZSkgeworICAgICAgICAgICAgOjpQb3N0TWVzc2FnZVcoX2hXbmQsIFdNX1BZQkFfQ0hBTkdFX1NUQVRFLCAwLCBzdGF0ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLworICAgIC8vIEdvVG9QYWdlCisgICAgLy8KKyAgICB2b2lkIEdvVG9QYWdlKF9faW4gUEFHRSBwYWdlKSB7CisgICAgICAgIF9pbnN0YWxsUGFnZSA9IHBhZ2U7CisgICAgICAgIDo6UG9zdE1lc3NhZ2VXKF9oV25kLCBXTV9QWUJBX0NIQU5HRV9TVEFURSwgMCwgX3N0YXRlKTsKKyAgICB9CisKKyAgICB2b2lkIERldGVybWluZVBhZ2VJZChfX2luIFBZQkFfU1RBVEUgc3RhdGUsIF9fb3V0IERXT1JEKiBwZHdQYWdlSWQpIHsKKyAgICAgICAgTE9OR0xPTkcgc2ltcGxlOworCisgICAgICAgIGlmIChCT09UU1RSQVBQRVJfRElTUExBWV9QQVNTSVZFID09IF9jb21tYW5kLmRpc3BsYXkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9JTklUSUFMSVpFRDoKKyAgICAgICAgICAgICAgICAqcGR3UGFnZUlkID0gQk9PVFNUUkFQUEVSX0FDVElPTl9IRUxQID09IF9jb21tYW5kLmFjdGlvbgorICAgICAgICAgICAgICAgICAgICA/IF9wYWdlSWRzW1BBR0VfSEVMUF0KKyAgICAgICAgICAgICAgICAgICAgOiBfcGFnZUlkc1tQQUdFX0xPQURJTkddOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfSEVMUDoKKyAgICAgICAgICAgICAgICAqcGR3UGFnZUlkID0gX3BhZ2VJZHNbUEFHRV9IRUxQXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0RFVEVDVElORzoKKyAgICAgICAgICAgICAgICAqcGR3UGFnZUlkID0gX3BhZ2VJZHNbUEFHRV9MT0FESU5HXQorICAgICAgICAgICAgICAgICAgICA/IF9wYWdlSWRzW1BBR0VfTE9BRElOR10KKyAgICAgICAgICAgICAgICAgICAgOiBfcGFnZUlkc1tQQUdFX1BST0dSRVNTX1BBU1NJVkVdCisgICAgICAgICAgICAgICAgICAgICAgICA/IF9wYWdlSWRzW1BBR0VfUFJPR1JFU1NfUEFTU0lWRV0KKyAgICAgICAgICAgICAgICAgICAgICAgIDogX3BhZ2VJZHNbUEFHRV9QUk9HUkVTU107CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9ERVRFQ1RFRDogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9QTEFOTklORzogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9QTEFOTkVEOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0FQUExZSU5HOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0NBQ0hJTkc6IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfQ0FDSEVEOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0VYRUNVVElORzogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9FWEVDVVRFRDoKKyAgICAgICAgICAgICAgICAqcGR3UGFnZUlkID0gX3BhZ2VJZHNbUEFHRV9QUk9HUkVTU19QQVNTSVZFXQorICAgICAgICAgICAgICAgICAgICA/IF9wYWdlSWRzW1BBR0VfUFJPR1JFU1NfUEFTU0lWRV0KKyAgICAgICAgICAgICAgICAgICAgOiBfcGFnZUlkc1tQQUdFX1BST0dSRVNTXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAqcGR3UGFnZUlkID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChCT09UU1RSQVBQRVJfRElTUExBWV9GVUxMID09IF9jb21tYW5kLmRpc3BsYXkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9JTklUSUFMSVpJTkc6CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9JTklUSUFMSVpFRDoKKyAgICAgICAgICAgICAgICAqcGR3UGFnZUlkID0gQk9PVFNUUkFQUEVSX0FDVElPTl9IRUxQID09IF9jb21tYW5kLmFjdGlvbgorICAgICAgICAgICAgICAgICAgICA/IF9wYWdlSWRzW1BBR0VfSEVMUF0KKyAgICAgICAgICAgICAgICAgICAgOiBfcGFnZUlkc1tQQUdFX0xPQURJTkddOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfSEVMUDoKKyAgICAgICAgICAgICAgICAqcGR3UGFnZUlkID0gX3BhZ2VJZHNbUEFHRV9IRUxQXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0RFVEVDVElORzoKKyAgICAgICAgICAgICAgICAqcGR3UGFnZUlkID0gX3BhZ2VJZHNbUEFHRV9MT0FESU5HXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0RFVEVDVEVEOgorICAgICAgICAgICAgICAgIGlmIChfaW5zdGFsbFBhZ2UgPT0gUEFHRV9MT0FESU5HKSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2NvbW1hbmQuYWN0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQk9PVFNUUkFQUEVSX0FDVElPTl9JTlNUQUxMOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF91cGdyYWRpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaW5zdGFsbFBhZ2UgPSBQQUdFX1VQR1JBREU7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFNVQ0NFRURFRChCYWxHZXROdW1lcmljVmFyaWFibGUoTCJTaW1wbGVJbnN0YWxsIiwgJnNpbXBsZSkpICYmIHNpbXBsZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pbnN0YWxsUGFnZSA9IFBBR0VfU0lNUExFX0lOU1RBTEw7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pbnN0YWxsUGFnZSA9IFBBR0VfSU5TVEFMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIGNhc2UgQk9PVFNUUkFQUEVSX0FDVElPTl9NT0RJRlk6IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQk9PVFNUUkFQUEVSX0FDVElPTl9SRVBBSVI6IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQk9PVFNUUkFQUEVSX0FDVElPTl9VTklOU1RBTEw6CisgICAgICAgICAgICAgICAgICAgICAgICBfaW5zdGFsbFBhZ2UgPSBQQUdFX01PRElGWTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICpwZHdQYWdlSWQgPSBfcGFnZUlkc1tfaW5zdGFsbFBhZ2VdOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfUExBTk5JTkc6IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfUExBTk5FRDogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9BUFBMWUlORzogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9DQUNISU5HOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0NBQ0hFRDogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9FWEVDVVRJTkc6IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfRVhFQ1VURUQ6CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IF9wYWdlSWRzW1BBR0VfUFJPR1JFU1NdOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfQVBQTElFRDoKKyAgICAgICAgICAgICAgICAqcGR3UGFnZUlkID0gX3BhZ2VJZHNbUEFHRV9TVUNDRVNTXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0ZBSUxFRDoKKyAgICAgICAgICAgICAgICAqcGR3UGFnZUlkID0gX3BhZ2VJZHNbUEFHRV9GQUlMVVJFXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEJPT0wgV2lsbEVsZXZhdGUoKSB7CisgICAgICAgIHN0YXRpYyBCQUxfQ09ORElUSU9OIFdJTExfRUxFVkFURV9DT05ESVRJT04gPSB7CisgICAgICAgICAgICBMIm5vdCBXaXhCdW5kbGVFbGV2YXRlZCBhbmQgKCIKKyAgICAgICAgICAgICAgICAvKkVsZXZhdGUgd2hlbiBpbnN0YWxsaW5nIGZvciBhbGwgdXNlcnMqLworICAgICAgICAgICAgICAgIEwiSW5zdGFsbEFsbFVzZXJzIG9yICIKKyAgICAgICAgICAgICAgICAvKkVsZXZhdGUgd2hlbiBpbnN0YWxsaW5nIHRoZSBsYXVuY2hlciBmb3IgYWxsIHVzZXJzIGFuZCBpdCB3YXMgbm90IGRldGVjdGVkKi8KKyAgICAgICAgICAgICAgICBMIihJbmNsdWRlX2xhdW5jaGVyIGFuZCBJbnN0YWxsTGF1bmNoZXJBbGxVc2VycyBhbmQgbm90IERldGVjdGVkTGF1bmNoZXIpIgorICAgICAgICAgICAgTCIpIiwKKyAgICAgICAgICAgIEwiIgorICAgICAgICB9OworICAgICAgICBCT09MIHJlc3VsdDsKKworICAgICAgICByZXR1cm4gU1VDQ0VFREVEKEJhbENvbmRpdGlvbkV2YWx1YXRlKCZXSUxMX0VMRVZBVEVfQ09ORElUSU9OLCBfZW5naW5lLCAmcmVzdWx0LCBudWxscHRyKSkgJiYgcmVzdWx0OworICAgIH0KKworICAgIEJPT0wgSXNDcnRJbnN0YWxsZWQoKSB7CisgICAgICAgIGlmIChfY3J0SW5zdGFsbGVkVG9rZW4gPiAwKSB7CisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfSBlbHNlIGlmIChfY3J0SW5zdGFsbGVkVG9rZW4gPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBDaGVjayB3aGV0aGVyIGF0IGxlYXN0IENSVCB2MTAuMC4xMDEzNy4wIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgLy8gSXQgc2hvdWxkIG9ubHkgYmUgaW5zdGFsbGVkIGFzIGEgV2luZG93cyBVcGRhdGUgcGFja2FnZSwgd2hpY2ggbWVhbnMKKyAgICAgICAgLy8gd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCAzMi1iaXQvNjQtYml0LgorICAgICAgICBMUENXU1RSIGNydEZpbGUgPSBMInVjcnRiYXNlLmRsbCI7CisKKyAgICAgICAgRFdPUkQgY2JWZXIgPSBHZXRGaWxlVmVyc2lvbkluZm9TaXplVyhjcnRGaWxlLCBudWxscHRyKTsKKyAgICAgICAgaWYgKCFjYlZlcikgeworICAgICAgICAgICAgX2NydEluc3RhbGxlZFRva2VuID0gMDsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgKnBEYXRhID0gbWFsbG9jKGNiVmVyKTsKKyAgICAgICAgaWYgKCFwRGF0YSkgeworICAgICAgICAgICAgX2NydEluc3RhbGxlZFRva2VuID0gMDsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghR2V0RmlsZVZlcnNpb25JbmZvVyhjcnRGaWxlLCAwLCBjYlZlciwgcERhdGEpKSB7CisgICAgICAgICAgICBmcmVlKHBEYXRhKTsKKyAgICAgICAgICAgIF9jcnRJbnN0YWxsZWRUb2tlbiA9IDA7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBWU19GSVhFREZJTEVJTkZPICpmZmk7CisgICAgICAgIFVJTlQgY2I7CisgICAgICAgIEJPT0wgcmVzdWx0ID0gRkFMU0U7CisKKyAgICAgICAgaWYgKFZlclF1ZXJ5VmFsdWVXKHBEYXRhLCBMIlxcIiwgKExQVk9JRCopJmZmaSwgJmNiKSAmJgorICAgICAgICAgICAgZmZpLT5kd0ZpbGVWZXJzaW9uTVMgPT0gMHgwMDBBMDAwMCAmJiBmZmktPmR3RmlsZVZlcnNpb25MUyA+PSAweDI3OTkwMDAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBUUlVFOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmcmVlKHBEYXRhKTsKKyAgICAgICAgX2NydEluc3RhbGxlZFRva2VuID0gcmVzdWx0ID8gMSA6IDA7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgQk9PTCBRdWVyeUVsZXZhdGVGb3JDcnRJbnN0YWxsKCkgeworICAgICAgICAvLyBDYWxsZWQgdG8gcHJvbXB0IHRoZSB1c2VyIHRoYXQgZXZlbiB0aG91Z2ggdGhleSB0aGluayB0aGV5IHdvbid0IG5lZWQKKyAgICAgICAgLy8gdG8gZWxldmF0ZSwgdGhleSBhY3R1YWxseSB3aWxsIGJlY2F1c2Ugb2YgdGhlIENSVCBpbnN0YWxsLgorICAgICAgICBpZiAoSXNDcnRJbnN0YWxsZWQoKSkgeworICAgICAgICAgICAgLy8gQ1JUIGlzIGFscmVhZHkgaW5zdGFsbGVkIC0gbm8gbmVlZCB0byBwcm9tcHQKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBMT05HTE9ORyBlbGV2YXRlZDsKKyAgICAgICAgSFJFU1VMVCBociA9IEJhbEdldE51bWVyaWNWYXJpYWJsZShMIldpeEJ1bmRsZUVsZXZhdGVkIiwgJmVsZXZhdGVkKTsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgZWxldmF0ZWQpIHsKKyAgICAgICAgICAgIC8vIEFscmVhZHkgZWxldmF0ZWQgLSBubyBuZWVkIHRvIHByb21wdAorICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgIH0KKworICAgICAgICBMT0NfU1RSSU5HICpsb2NTdHI7CisgICAgICAgIGhyID0gTG9jR2V0U3RyaW5nKF93aXhMb2MsIEwiIyhsb2MuRWxldmF0ZUZvckNSVEluc3RhbGwpIiwgJmxvY1N0cik7CisgICAgICAgIGlmIChGQUlMRUQoaHIpKSB7CisgICAgICAgICAgICBCYWxMb2dFcnJvcihociwgIkZhaWxlZCB0byBnZXQgRWxldmF0ZUZvckNSVEluc3RhbGwgc3RyaW5nIik7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDo6TWVzc2FnZUJveFcoX2hXbmQsIGxvY1N0ci0+d3pUZXh0LCBfdGhlbWUtPnNjekNhcHRpb24sIE1CX1lFU05PKSAhPSBJRE5POworICAgIH0KKworICAgIEhSRVNVTFQgRXZhbHVhdGVDb25kaXRpb25zKCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgQk9PTCByZXN1bHQgPSBGQUxTRTsKKworICAgICAgICBmb3IgKERXT1JEIGkgPSAwOyBpIDwgX2NvbmRpdGlvbnMuY0NvbmRpdGlvbnM7ICsraSkgeworICAgICAgICAgICAgQkFMX0NPTkRJVElPTiogcENvbmRpdGlvbiA9IF9jb25kaXRpb25zLnJnQ29uZGl0aW9ucyArIGk7CisKKyAgICAgICAgICAgIGhyID0gQmFsQ29uZGl0aW9uRXZhbHVhdGUocENvbmRpdGlvbiwgX2VuZ2luZSwgJnJlc3VsdCwgJl9mYWlsZWRNZXNzYWdlKTsKKyAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gZXZhbHVhdGUgY29uZGl0aW9uLiIpOworCisgICAgICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgICAgIC8vIEhvcGUgdGhleSBkaWRuJ3QgaGF2ZSBoaWRkZW4gdmFyaWFibGVzIGluIHRoZWlyIG1lc3NhZ2UsIGJlY2F1c2UgaXQncyBnb2luZyBpbiB0aGUgbG9nIGluIHBsYWludGV4dC4KKyAgICAgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9FUlJPUiwgIiVscyIsIF9mYWlsZWRNZXNzYWdlKTsKKworICAgICAgICAgICAgICAgIGhyID0gRV9XSVhTVERCQV9DT05ESVRJT05fRkFJTEVEOworICAgICAgICAgICAgICAgIC8vIHRvZG86IHJlbW92ZSBpbiBXaVggdjQsIGluIGNhc2UgcGVvcGxlIGFyZSByZWx5aW5nIG9uIHYzLnggbG9nZ2luZyBiZWhhdmlvcgorICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiQnVuZGxlIGNvbmRpdGlvbiBldmFsdWF0ZWQgdG8gZmFsc2U6ICVscyIsIHBDb25kaXRpb24tPnNjekNvbmRpdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBSZWxlYXNlTnVsbFN0clNlY3VyZShfZmFpbGVkTWVzc2FnZSk7CisKKyAgICBMRXhpdDoKKyAgICAgICAgcmV0dXJuIGhyOworICAgIH0KKworCisgICAgdm9pZCBTZXRUYXNrYmFyQnV0dG9uUHJvZ3Jlc3MoX19pbiBEV09SRCBkd092ZXJhbGxQZXJjZW50YWdlKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgICAgIGlmIChfdGFza2JhckJ1dHRvbk9LKSB7CisgICAgICAgICAgICBociA9IF90YXNrYmFyTGlzdC0+U2V0UHJvZ3Jlc3NWYWx1ZShfaFduZCwgZHdPdmVyYWxsUGVyY2VudGFnZSwgMTAwVUwpOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gc2V0IHRhc2tiYXIgYnV0dG9uIHByb2dyZXNzIHRvOiAlZCUlLiIsIGR3T3ZlcmFsbFBlcmNlbnRhZ2UpOworICAgICAgICB9CisKKyAgICBMRXhpdDoKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgdm9pZCBTZXRUYXNrYmFyQnV0dG9uU3RhdGUoX19pbiBUQlBGTEFHIHRicEZsYWdzKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgICAgIGlmIChfdGFza2JhckJ1dHRvbk9LKSB7CisgICAgICAgICAgICBociA9IF90YXNrYmFyTGlzdC0+U2V0UHJvZ3Jlc3NTdGF0ZShfaFduZCwgdGJwRmxhZ3MpOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gc2V0IHRhc2tiYXIgYnV0dG9uIHN0YXRlLiIsIHRicEZsYWdzKTsKKyAgICAgICAgfQorCisgICAgTEV4aXQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKworICAgIHZvaWQgU2V0UHJvZ3Jlc3NTdGF0ZShfX2luIEhSRVNVTFQgaHJTdGF0dXMpIHsKKyAgICAgICAgVEJQRkxBRyBmbGFnID0gVEJQRl9OT1JNQUw7CisKKyAgICAgICAgaWYgKElzQ2FuY2VsZWQoKSB8fCBIUkVTVUxUX0ZST01fV0lOMzIoRVJST1JfSU5TVEFMTF9VU0VSRVhJVCkgPT0gaHJTdGF0dXMpIHsKKyAgICAgICAgICAgIGZsYWcgPSBUQlBGX1BBVVNFRDsKKyAgICAgICAgfSBlbHNlIGlmIChJc1JvbGxpbmdCYWNrKCkgfHwgRkFJTEVEKGhyU3RhdHVzKSkgeworICAgICAgICAgICAgZmxhZyA9IFRCUEZfRVJST1I7CisgICAgICAgIH0KKworICAgICAgICBTZXRUYXNrYmFyQnV0dG9uU3RhdGUoZmxhZyk7CisgICAgfQorCisKKyAgICBIUkVTVUxUIExvYWRCb290c3RyYXBwZXJCQUZ1bmN0aW9ucygpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisgICAgICAgIExQV1NUUiBzY3pCYWZQYXRoID0gbnVsbHB0cjsKKworICAgICAgICBociA9IFBhdGhSZWxhdGl2ZVRvTW9kdWxlKCZzY3pCYWZQYXRoLCBMImJhZnVuY3Rpb25zLmRsbCIsIF9oTW9kdWxlKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBnZXQgcGF0aCB0byBCQSBmdW5jdGlvbiBETEwuIik7CisKKyNpZmRlZiBERUJVRworICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIlBZQkE6IExvYWRCb290c3RyYXBwZXJCQUZ1bmN0aW9ucygpIC0gQkEgZnVuY3Rpb24gRExMICVscyIsIHNjekJhZlBhdGgpOworI2VuZGlmCisKKyAgICAgICAgX2hCQUZNb2R1bGUgPSA6OkxvYWRMaWJyYXJ5VyhzY3pCYWZQYXRoKTsKKyAgICAgICAgaWYgKF9oQkFGTW9kdWxlKSB7CisgICAgICAgICAgICBhdXRvIHBmbkJBRnVuY3Rpb25DcmVhdGUgPSByZWludGVycHJldF9jYXN0PFBGTl9CT09UU1RSQVBQRVJfQkFfRlVOQ1RJT05fQ1JFQVRFPig6OkdldFByb2NBZGRyZXNzKF9oQkFGTW9kdWxlLCAiQ3JlYXRlQm9vdHN0cmFwcGVyQkFGdW5jdGlvbiIpKTsKKyAgICAgICAgICAgIEJhbEV4aXRPbk51bGxXaXRoTGFzdEVycm9yMShwZm5CQUZ1bmN0aW9uQ3JlYXRlLCBociwgIkZhaWxlZCB0byBnZXQgQ3JlYXRlQm9vdHN0cmFwcGVyQkFGdW5jdGlvbiBlbnRyeS1wb2ludCBmcm9tOiAlbHMiLCBzY3pCYWZQYXRoKTsKKworICAgICAgICAgICAgaHIgPSBwZm5CQUZ1bmN0aW9uQ3JlYXRlKF9lbmdpbmUsIF9oQkFGTW9kdWxlLCAmX2JhRnVuY3Rpb24pOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBjcmVhdGUgQkEgZnVuY3Rpb24uIik7CisgICAgICAgIH0KKyNpZmRlZiBERUJVRworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEJhbExvZ0Vycm9yKEhSRVNVTFRfRlJPTV9XSU4zMig6OkdldExhc3RFcnJvcigpKSwgIlBZQkE6IExvYWRCb290c3RyYXBwZXJCQUZ1bmN0aW9ucygpIC0gRmFpbGVkIHRvIGxvYWQgRExMICVscyIsIHNjekJhZlBhdGgpOworICAgICAgICB9CisjZW5kaWYKKworICAgIExFeGl0OgorICAgICAgICBpZiAoX2hCQUZNb2R1bGUgJiYgIV9iYUZ1bmN0aW9uKSB7CisgICAgICAgICAgICA6OkZyZWVMaWJyYXJ5KF9oQkFGTW9kdWxlKTsKKyAgICAgICAgICAgIF9oQkFGTW9kdWxlID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBSZWxlYXNlU3RyKHNjekJhZlBhdGgpOworCisgICAgICAgIHJldHVybiBocjsKKyAgICB9CisKKyAgICBCT09MIElzQ2hlY2thYmxlKFRIRU1FX0NPTlRST0wqIHBDb250cm9sKSB7CisgICAgICAgIGlmICghcENvbnRyb2wtPnNjek5hbWUgfHwgIXBDb250cm9sLT5zY3pOYW1lWzBdKSB7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAocENvbnRyb2wtPnR5cGUgPT0gVEhFTUVfQ09OVFJPTF9UWVBFX0NIRUNLQk9YKSB7CisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwQ29udHJvbC0+dHlwZSA9PSBUSEVNRV9DT05UUk9MX1RZUEVfQlVUVE9OKSB7CisgICAgICAgICAgICBpZiAoKHBDb250cm9sLT5kd1N0eWxlICYgQlNfVFlQRU1BU0spID09IEJTX0FVVE9SQURJT0JVVFRPTikgeworICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIHZvaWQgU2F2ZVBhZ2VTZXR0aW5ncygpIHsKKyAgICAgICAgRFdPUkQgcGFnZUlkID0gMDsKKyAgICAgICAgVEhFTUVfUEFHRSogcFBhZ2UgPSBudWxscHRyOworCisgICAgICAgIERldGVybWluZVBhZ2VJZChfc3RhdGUsICZwYWdlSWQpOworICAgICAgICBwUGFnZSA9IFRoZW1lR2V0UGFnZShfdGhlbWUsIHBhZ2VJZCk7CisgICAgICAgIGlmICghcFBhZ2UpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoRFdPUkQgaSA9IDA7IGkgPCBwUGFnZS0+Y0NvbnRyb2xJbmRpY2VzOyArK2kpIHsKKyAgICAgICAgICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIGNoZWNrYWJsZSBjb250cm9scyBhbmQgc2V0IGEgQnVybiB2YXJpYWJsZQorICAgICAgICAgICAgLy8gd2l0aCB0aGF0IG5hbWUgdG8gdHJ1ZSBvciBmYWxzZS4KKyAgICAgICAgICAgIFRIRU1FX0NPTlRST0wqIHBDb250cm9sID0gX3RoZW1lLT5yZ0NvbnRyb2xzICsgcFBhZ2UtPnJnZHdDb250cm9sSW5kaWNlc1tpXTsKKyAgICAgICAgICAgIGlmIChJc0NoZWNrYWJsZShwQ29udHJvbCkgJiYgVGhlbWVDb250cm9sRW5hYmxlZChfdGhlbWUsIHBDb250cm9sLT53SWQpKSB7CisgICAgICAgICAgICAgICAgQk9PTCBjaGVja2VkID0gVGhlbWVJc0NvbnRyb2xDaGVja2VkKF90aGVtZSwgcENvbnRyb2wtPndJZCk7CisgICAgICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKHBDb250cm9sLT5zY3pOYW1lLCBjaGVja2VkID8gMSA6IDApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBlZGl0Ym94IGNvbnRyb2xzIHdpdGggbmFtZXMgYW5kIHNldCBhCisgICAgICAgICAgICAvLyBCdXJuIHZhcmlhYmxlIHdpdGggdGhhdCBuYW1lIHRvIHRoZSBjb250ZW50cy4KKyAgICAgICAgICAgIGlmIChUSEVNRV9DT05UUk9MX1RZUEVfRURJVEJPWCA9PSBwQ29udHJvbC0+dHlwZSAmJiBwQ29udHJvbC0+c2N6TmFtZSAmJiAqcENvbnRyb2wtPnNjek5hbWUpIHsKKyAgICAgICAgICAgICAgICBMUFdTVFIgc2N6VmFsdWUgPSBudWxscHRyOworICAgICAgICAgICAgICAgIFRoZW1lR2V0VGV4dENvbnRyb2woX3RoZW1lLCBwQ29udHJvbC0+d0lkLCAmc2N6VmFsdWUpOworICAgICAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKHBDb250cm9sLT5zY3pOYW1lLCBzY3pWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBJc1RhcmdldFBsYXRmb3JteDY0KF9faW4gSUJvb3RzdHJhcHBlckVuZ2luZSogcEVuZ2luZSkgeworICAgICAgICBXQ0hBUiBwbGF0Zm9ybVs4XTsKKyAgICAgICAgRFdPUkQgcGxhdGZvcm1MZW4gPSA4OworCisgICAgICAgIGlmIChGQUlMRUQocEVuZ2luZS0+R2V0VmFyaWFibGVTdHJpbmcoTCJUYXJnZXRQbGF0Zm9ybSIsIHBsYXRmb3JtLCAmcGxhdGZvcm1MZW4pKSkgeworICAgICAgICAgICAgcmV0dXJuIFNfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gOjpDb21wYXJlU3RyaW5nVyhMT0NBTEVfTkVVVFJBTCwgMCwgcGxhdGZvcm0sIC0xLCBMIng2NCIsIC0xKSA9PSBDU1RSX0VRVUFMOworICAgIH0KKworICAgIHN0YXRpYyBIUkVTVUxUIExvYWRPcHRpb25hbEZlYXR1cmVTdGF0ZXNGcm9tS2V5KAorICAgICAgICBfX2luIElCb290c3RyYXBwZXJFbmdpbmUqIHBFbmdpbmUsCisgICAgICAgIF9faW4gSEtFWSBoa0hpdmUsCisgICAgICAgIF9faW4gTFBDV1NUUiBzdWJrZXkKKyAgICApIHsKKyAgICAgICAgSEtFWSBoS2V5OworICAgICAgICBMUkVTVUxUIHJlczsKKworICAgICAgICBpZiAoSXNUYXJnZXRQbGF0Zm9ybXg2NChwRW5naW5lKSkgeworICAgICAgICAgICAgcmVzID0gUmVnT3BlbktleUV4Vyhoa0hpdmUsIHN1YmtleSwgMCwgS0VZX1JFQUQgfCBLRVlfV09XNjRfNjRLRVksICZoS2V5KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlcyA9IFJlZ09wZW5LZXlFeFcoaGtIaXZlLCBzdWJrZXksIDAsIEtFWV9SRUFEIHwgS0VZX1dPVzY0XzMyS0VZLCAmaEtleSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlcyA9PSBFUlJPUl9GSUxFX05PVF9GT1VORCkgeworICAgICAgICAgICAgcmV0dXJuIFNfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlcyAhPSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgICAgICByZXR1cm4gSFJFU1VMVF9GUk9NX1dJTjMyKHJlcyk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGF1dG8gcCA9IE9QVElPTkFMX0ZFQVRVUkVTOyBwLT5yZWdOYW1lOyArK3ApIHsKKyAgICAgICAgICAgIHJlcyA9IFJlZ1F1ZXJ5VmFsdWVFeFcoaEtleSwgcC0+cmVnTmFtZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgICAgICBpZiAocmVzID09IEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKSB7CisgICAgICAgICAgICAgICAgcEVuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKHAtPnZhcmlhYmxlTmFtZSwgMCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgICAgICAgICAgcEVuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKHAtPnZhcmlhYmxlTmFtZSwgMSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFJlZ0Nsb3NlS2V5KGhLZXkpOworICAgICAgICAgICAgICAgIHJldHVybiBIUkVTVUxUX0ZST01fV0lOMzIocmVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFJlZ0Nsb3NlS2V5KGhLZXkpOworICAgICAgICByZXR1cm4gU19PSzsKKyAgICB9CisKKyAgICBzdGF0aWMgSFJFU1VMVCBMb2FkVGFyZ2V0RGlyRnJvbUtleSgKKyAgICAgICAgX19pbiBJQm9vdHN0cmFwcGVyRW5naW5lKiBwRW5naW5lLAorICAgICAgICBfX2luIEhLRVkgaGtIaXZlLAorICAgICAgICBfX2luIExQQ1dTVFIgc3Via2V5CisgICAgKSB7CisgICAgICAgIEhLRVkgaEtleTsKKyAgICAgICAgTFJFU1VMVCByZXM7CisgICAgICAgIERXT1JEIGRhdGFUeXBlOworICAgICAgICBCWVRFIGJ1ZmZlclsxMDI0XTsKKyAgICAgICAgRFdPUkQgYnVmZmVyTGVuID0gc2l6ZW9mKGJ1ZmZlcik7CisKKyAgICAgICAgaWYgKElzVGFyZ2V0UGxhdGZvcm14NjQocEVuZ2luZSkpIHsKKyAgICAgICAgICAgIHJlcyA9IFJlZ09wZW5LZXlFeFcoaGtIaXZlLCBzdWJrZXksIDAsIEtFWV9SRUFEIHwgS0VZX1dPVzY0XzY0S0VZLCAmaEtleSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXMgPSBSZWdPcGVuS2V5RXhXKGhrSGl2ZSwgc3Via2V5LCAwLCBLRVlfUkVBRCB8IEtFWV9XT1c2NF8zMktFWSwgJmhLZXkpOworICAgICAgICB9CisgICAgICAgIGlmIChyZXMgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpIHsKKyAgICAgICAgICAgIHJldHVybiBTX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIGlmIChyZXMgIT0gRVJST1JfU1VDQ0VTUykgeworICAgICAgICAgICAgcmV0dXJuIEhSRVNVTFRfRlJPTV9XSU4zMihyZXMpOworICAgICAgICB9CisKKyAgICAgICAgcmVzID0gUmVnUXVlcnlWYWx1ZUV4VyhoS2V5LCBudWxscHRyLCBudWxscHRyLCAmZGF0YVR5cGUsIGJ1ZmZlciwgJmJ1ZmZlckxlbik7CisgICAgICAgIGlmIChyZXMgPT0gRVJST1JfU1VDQ0VTUyAmJiBkYXRhVHlwZSA9PSBSRUdfU1ogJiYgYnVmZmVyTGVuIDwgc2l6ZW9mKGJ1ZmZlcikpIHsKKyAgICAgICAgICAgIHBFbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKEwiVGFyZ2V0RGlyIiwgcmVpbnRlcnByZXRfY2FzdDx3Y2hhcl90Kj4oYnVmZmVyKSk7CisgICAgICAgIH0KKyAgICAgICAgUmVnQ2xvc2VLZXkoaEtleSk7CisgICAgICAgIHJldHVybiBIUkVTVUxUX0ZST01fV0lOMzIocmVzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSFJFU1VMVCBMb2FkQXNzb2NpYXRlRmlsZXNTdGF0ZUZyb21LZXkoCisgICAgICAgIF9faW4gSUJvb3RzdHJhcHBlckVuZ2luZSogcEVuZ2luZSwKKyAgICAgICAgX19pbiBIS0VZIGhrSGl2ZQorICAgICkgeworICAgICAgICBjb25zdCBMUENXU1RSIHN1YmtleSA9IEwiU29mdHdhcmVcXFB5dGhvblxcUHlMYXVuY2hlciI7CisgICAgICAgIEhLRVkgaEtleTsKKyAgICAgICAgTFJFU1VMVCByZXM7CisgICAgICAgIEhSRVNVTFQgaHI7CisKKyAgICAgICAgcmVzID0gUmVnT3BlbktleUV4Vyhoa0hpdmUsIHN1YmtleSwgMCwgS0VZX1JFQUQgfCBLRVlfV09XNjRfMzJLRVksICZoS2V5KTsKKworICAgICAgICBpZiAocmVzID09IEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKSB7CisgICAgICAgICAgICByZXR1cm4gU19GQUxTRTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVzICE9IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIHJldHVybiBIUkVTVUxUX0ZST01fV0lOMzIocmVzKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlcyA9IFJlZ1F1ZXJ5VmFsdWVFeFcoaEtleSwgTCJBc3NvY2lhdGVGaWxlcyIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICBpZiAocmVzID09IEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKSB7CisgICAgICAgICAgICBociA9IFNfRkFMU0U7CisgICAgICAgIH0gZWxzZSBpZiAocmVzID09IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIGhyID0gU19PSzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGhyID0gSFJFU1VMVF9GUk9NX1dJTjMyKHJlcyk7CisgICAgICAgIH0KKworICAgICAgICBSZWdDbG9zZUtleShoS2V5KTsKKyAgICAgICAgcmV0dXJuIGhyOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIExvYWRPcHRpb25hbEZlYXR1cmVTdGF0ZXMoX19pbiBJQm9vdHN0cmFwcGVyRW5naW5lKiBwRW5naW5lKSB7CisgICAgICAgIFdDSEFSIHN1YmtleUZtdFsyNTZdOworICAgICAgICBXQ0hBUiBzdWJrZXlbMjU2XTsKKyAgICAgICAgRFdPUkQgc3Via2V5TGVuOworICAgICAgICBIUkVTVUxUIGhyOworICAgICAgICBIS0VZIGhrSGl2ZTsKKworICAgICAgICAvLyBUaGUgbGF1bmNoZXIgaW5zdGFsbGF0aW9uIGlzIHNlcGFyYXRlIGZyb20gdGhlIFB5dGhvbiBpbnN0YWxsLCBzbyB3ZQorICAgICAgICAvLyBjaGVjayBpdHMgc3RhdGUgbGF0ZXIuIEZvciBub3csIGFzc3VtZSB3ZSBkb24ndCB3YW50IHRoZSBsYXVuY2hlciBvcgorICAgICAgICAvLyBmaWxlIGFzc29jaWF0aW9ucywgYW5kIGlmIHRoZXkgaGF2ZSBhbHJlYWR5IGJlZW4gaW5zdGFsbGVkIHRoZW4KKyAgICAgICAgLy8gbG9hZGluZyB0aGUgc3RhdGUgd2lsbCByZWFjdGl2YXRlIHRoZXNlIHNldHRpbmdzLgorICAgICAgICBwRW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoTCJJbmNsdWRlX2xhdW5jaGVyIiwgMCk7CisgICAgICAgIHBFbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhMIkFzc29jaWF0ZUZpbGVzIiwgMCk7CisKKyAgICAgICAgLy8gR2V0IHRoZSByZWdpc3RyeSBrZXkgZnJvbSB0aGUgYnVuZGxlLCB0byBzYXZlIGhhdmluZyB0byBkdXBsaWNhdGUgaXQKKyAgICAgICAgLy8gaW4gbXVsdGlwbGUgcGxhY2VzLgorICAgICAgICBzdWJrZXlMZW4gPSBzaXplb2Yoc3Via2V5Rm10KSAvIHNpemVvZihzdWJrZXlGbXRbMF0pOworICAgICAgICBociA9IHBFbmdpbmUtPkdldFZhcmlhYmxlU3RyaW5nKEwiT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5Iiwgc3Via2V5Rm10LCAmc3Via2V5TGVuKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBsb2NhdGUgcmVnaXN0cnkga2V5Iik7CisgICAgICAgIHN1YmtleUxlbiA9IHNpemVvZihzdWJrZXkpIC8gc2l6ZW9mKHN1YmtleVswXSk7CisgICAgICAgIGhyID0gcEVuZ2luZS0+Rm9ybWF0U3RyaW5nKHN1YmtleUZtdCwgc3Via2V5LCAmc3Via2V5TGVuKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZm9ybWF0ICVscyIsIHN1YmtleUZtdCk7CisKKyAgICAgICAgLy8gQ2hlY2sgdGhlIGN1cnJlbnQgdXNlcidzIHJlZ2lzdHJ5IGZvciBleGlzdGluZyBmZWF0dXJlcworICAgICAgICBoa0hpdmUgPSBIS0VZX0NVUlJFTlRfVVNFUjsKKyAgICAgICAgaHIgPSBMb2FkT3B0aW9uYWxGZWF0dXJlU3RhdGVzRnJvbUtleShwRW5naW5lLCBoa0hpdmUsIHN1YmtleSk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIHJlYWQgZnJvbSBIS0NVXFwlbHMiLCBzdWJrZXkpOworICAgICAgICBpZiAoaHIgPT0gU19GQUxTRSkgeworICAgICAgICAgICAgLy8gTm93IGNoZWNrIHRoZSBsb2NhbCBtYWNoaW5lIHJlZ2lzdHJ5CisgICAgICAgICAgICBoa0hpdmUgPSBIS0VZX0xPQ0FMX01BQ0hJTkU7CisgICAgICAgICAgICBociA9IExvYWRPcHRpb25hbEZlYXR1cmVTdGF0ZXNGcm9tS2V5KHBFbmdpbmUsIGhrSGl2ZSwgc3Via2V5KTsKKyAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIHJlYWQgZnJvbSBIS0xNXFwlbHMiLCBzdWJrZXkpOworICAgICAgICAgICAgaWYgKGhyID09IFNfT0spIHsKKyAgICAgICAgICAgICAgICAvLyBGb3VuZCBhIHN5c3RlbS13aWRlIGluc3RhbGwsIHNvIGVuYWJsZSB0aGVzZSBzZXR0aW5ncy4KKyAgICAgICAgICAgICAgICBwRW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoTCJJbnN0YWxsQWxsVXNlcnMiLCAxKTsKKyAgICAgICAgICAgICAgICBwRW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoTCJDb21waWxlQWxsIiwgMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoaHIgPT0gU19PSykgeworICAgICAgICAgICAgLy8gQ2Fubm90IGNoYW5nZSBJbnN0YWxsQWxsVXNlcnNTdGF0ZSB3aGVuIHVwZ3JhZGluZy4gV2hpbGUgdGhlcmUncworICAgICAgICAgICAgLy8gbm8gZ29vZCByZWFzb24gdG8gbm90IGFsbG93IGluc3RhbGxpbmcgYSBwZXItdXNlciBhbmQgYW4gYWxsLXVzZXIKKyAgICAgICAgICAgIC8vIHZlcnNpb24gc2ltdWx0YW5lb3VzbHksIEJ1cm4gY2FuJ3QgaGFuZGxlIHRoZSBzdGF0ZSBtYW5hZ2VtZW50CisgICAgICAgICAgICAvLyBhbmQgd2lsbCBuZWVkIHRvIHVuaW5zdGFsbCB0aGUgb2xkIG9uZS4gCisgICAgICAgICAgICBwRW5naW5lLT5TZXRWYXJpYWJsZVN0cmluZyhMIkluc3RhbGxBbGxVc2Vyc1N0YXRlIiwgTCJkaXNhYmxlIik7CisKKyAgICAgICAgICAgIC8vIEdldCB0aGUgcHJldmlvdXMgaW5zdGFsbCBkaXJlY3RvcnkuIFRoaXMgY2FuIGJlIGNoYW5nZWQgYnkgdGhlCisgICAgICAgICAgICAvLyB1c2VyLgorICAgICAgICAgICAgc3Via2V5TGVuID0gc2l6ZW9mKHN1YmtleUZtdCkgLyBzaXplb2Yoc3Via2V5Rm10WzBdKTsKKyAgICAgICAgICAgIGhyID0gcEVuZ2luZS0+R2V0VmFyaWFibGVTdHJpbmcoTCJUYXJnZXREaXJSZWdpc3RyeUtleSIsIHN1YmtleUZtdCwgJnN1YmtleUxlbik7CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGxvY2F0ZSByZWdpc3RyeSBrZXkiKTsKKyAgICAgICAgICAgIHN1YmtleUxlbiA9IHNpemVvZihzdWJrZXkpIC8gc2l6ZW9mKHN1YmtleVswXSk7CisgICAgICAgICAgICBociA9IHBFbmdpbmUtPkZvcm1hdFN0cmluZyhzdWJrZXlGbXQsIHN1YmtleSwgJnN1YmtleUxlbik7CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBmb3JtYXQgJWxzIiwgc3Via2V5Rm10KTsKKyAgICAgICAgICAgIExvYWRUYXJnZXREaXJGcm9tS2V5KHBFbmdpbmUsIGhrSGl2ZSwgc3Via2V5KTsKKyAgICAgICAgfQorCisgICAgTEV4aXQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBIUkVTVUxUIEVuc3VyZVRhcmdldERpcigpIHsKKyAgICAgICAgTE9OR0xPTkcgaW5zdGFsbEFsbFVzZXJzOworICAgICAgICBMUFdTVFIgdGFyZ2V0RGlyID0gbnVsbHB0ciwgZGVmYXVsdERpciA9IG51bGxwdHI7CisgICAgICAgIEhSRVNVTFQgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZShMIlRhcmdldERpciIsICZ0YXJnZXREaXIpOworICAgICAgICBpZiAoRkFJTEVEKGhyKSB8fCAhdGFyZ2V0RGlyIHx8ICF0YXJnZXREaXJbMF0pIHsKKyAgICAgICAgICAgIFJlbGVhc2VTdHIodGFyZ2V0RGlyKTsKKyAgICAgICAgICAgIHRhcmdldERpciA9IG51bGxwdHI7CisKKyAgICAgICAgICAgIGhyID0gQmFsR2V0TnVtZXJpY1ZhcmlhYmxlKEwiSW5zdGFsbEFsbFVzZXJzIiwgJmluc3RhbGxBbGxVc2Vycyk7CisgICAgICAgICAgICBFeGl0T25GYWlsdXJlKGhyLCBMIkZhaWxlZCB0byBnZXQgaW5zdGFsbCBzY29wZSIpOworCisgICAgICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKAorICAgICAgICAgICAgICAgIGluc3RhbGxBbGxVc2VycyA/IEwiRGVmYXVsdEFsbFVzZXJzVGFyZ2V0RGlyIiA6IEwiRGVmYXVsdEp1c3RGb3JNZVRhcmdldERpciIsCisgICAgICAgICAgICAgICAgJmRlZmF1bHREaXIKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGdldCB0aGUgZGVmYXVsdCBpbnN0YWxsIGRpcmVjdG9yeSIpOworCisgICAgICAgICAgICBpZiAoIWRlZmF1bHREaXIgfHwgIWRlZmF1bHREaXJbMF0pIHsKKyAgICAgICAgICAgICAgICBCYWxMb2dFcnJvcihFX0lOVkFMSURBUkcsICJEZWZhdWx0IGluc3RhbGwgZGlyZWN0b3J5IGlzIGJsYW5rIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGhyID0gQmFsRm9ybWF0U3RyaW5nKGRlZmF1bHREaXIsICZ0YXJnZXREaXIpOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZm9ybWF0ICclbHMnIiwgZGVmYXVsdERpcik7CisKKyAgICAgICAgICAgIGhyID0gX2VuZ2luZS0+U2V0VmFyaWFibGVTdHJpbmcoTCJUYXJnZXREaXIiLCB0YXJnZXREaXIpOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBzZXQgaW5zdGFsbCB0YXJnZXQgZGlyZWN0b3J5Iik7CisgICAgICAgIH0KKyAgICBMRXhpdDoKKyAgICAgICAgUmVsZWFzZVN0cihkZWZhdWx0RGlyKTsKKyAgICAgICAgUmVsZWFzZVN0cih0YXJnZXREaXIpOworICAgICAgICByZXR1cm4gaHI7CisgICAgfQorCisgICAgdm9pZCBWYWxpZGF0ZU9wZXJhdGluZ1N5c3RlbSgpIHsKKyAgICAgICAgTE9DX1NUUklORyAqcExvY1N0cmluZyA9IG51bGxwdHI7CisgICAgICAgIAorICAgICAgICBpZiAoSXNXaW5kb3dzN1NQMU9yR3JlYXRlcigpKSB7CisgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9FUlJPUiwgIlRhcmdldCBPUyBpcyBXaW5kb3dzIDcgU1AxIG9yIGxhdGVyIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZSBpZiAoSXNXaW5kb3dzN09yR3JlYXRlcigpKSB7CisgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9FUlJPUiwgIkRldGVjdGVkIFdpbmRvd3MgNyBSVE0iKTsKKyAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX0VSUk9SLCAiU2VydmljZSBQYWNrIDEgaXMgcmVxdWlyZWQgdG8gY29udGludWUgaW5zdGFsbGF0aW9uIik7CisgICAgICAgICAgICBMb2NHZXRTdHJpbmcoX3dpeExvYywgTCIjKGxvYy5GYWlsdXJlV2luN01pc3NpbmdTUDEpIiwgJnBMb2NTdHJpbmcpOworICAgICAgICB9IGVsc2UgaWYgKElzV2luZG93c1Zpc3RhU1AyT3JHcmVhdGVyKCkpIHsKKyAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX0VSUk9SLCAiVGFyZ2V0IE9TIGlzIFdpbmRvd3MgVmlzdGEgU1AyIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZSBpZiAoSXNXaW5kb3dzVmlzdGFPckdyZWF0ZXIoKSkgeworICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfRVJST1IsICJEZXRlY3RlZCBXaW5kb3dzIFZpc3RhIFJUTSBvciBTUDEiKTsKKyAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX0VSUk9SLCAiU2VydmljZSBQYWNrIDIgaXMgcmVxdWlyZWQgdG8gY29udGludWUgaW5zdGFsbGF0aW9uIik7CisgICAgICAgICAgICBMb2NHZXRTdHJpbmcoX3dpeExvYywgTCIjKGxvYy5GYWlsdXJlVmlzdGFNaXNzaW5nU1AyKSIsICZwTG9jU3RyaW5nKTsKKyAgICAgICAgfSBlbHNlIHsgCisgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9FUlJPUiwgIkRldGVjdGVkIFdpbmRvd3MgWFAgb3IgZWFybGllciIpOworICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfRVJST1IsICJXaW5kb3dzIFZpc3RhIFNQMiBvciBsYXRlciBpcyByZXF1aXJlZCB0byBjb250aW51ZSBpbnN0YWxsYXRpb24iKTsKKyAgICAgICAgICAgIExvY0dldFN0cmluZyhfd2l4TG9jLCBMIiMobG9jLkZhaWx1cmVYUE9yRWFybGllcikiLCAmcExvY1N0cmluZyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocExvY1N0cmluZyAmJiBwTG9jU3RyaW5nLT53elRleHQpIHsKKyAgICAgICAgICAgIEJhbEZvcm1hdFN0cmluZyhwTG9jU3RyaW5nLT53elRleHQsICZfZmFpbGVkTWVzc2FnZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIF9ockZpbmFsID0gRV9XSVhTVERCQV9DT05ESVRJT05fRkFJTEVEOworICAgIH0KKworcHVibGljOgorICAgIC8vCisgICAgLy8gQ29uc3RydWN0b3IgLSBpbml0aWFsaXplIG1lbWJlciB2YXJpYWJsZXMuCisgICAgLy8KKyAgICBQeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbigKKyAgICAgICAgX19pbiBITU9EVUxFIGhNb2R1bGUsCisgICAgICAgIF9faW4gQk9PTCBmUHJlcmVxLAorICAgICAgICBfX2luIEhSRVNVTFQgaHJIb3N0SW5pdGlhbGl6YXRpb24sCisgICAgICAgIF9faW4gSUJvb3RzdHJhcHBlckVuZ2luZSogcEVuZ2luZSwKKyAgICAgICAgX19pbiBjb25zdCBCT09UU1RSQVBQRVJfQ09NTUFORCogcENvbW1hbmQKKyAgICApIDogQ0JhbEJhc2VCb290c3RyYXBwZXJBcHBsaWNhdGlvbihwRW5naW5lLCBwQ29tbWFuZCwgMywgMzAwMCkgeworICAgICAgICBfaE1vZHVsZSA9IGhNb2R1bGU7CisgICAgICAgIG1lbWNweV9zKCZfY29tbWFuZCwgc2l6ZW9mKF9jb21tYW5kKSwgcENvbW1hbmQsIHNpemVvZihCT09UU1RSQVBQRVJfQ09NTUFORCkpOworCisgICAgICAgIExPTkdMT05HIGxsSW5zdGFsbGVkID0gMDsKKyAgICAgICAgSFJFU1VMVCBociA9IEJhbEdldE51bWVyaWNWYXJpYWJsZShMIldpeEJ1bmRsZUluc3RhbGxlZCIsICZsbEluc3RhbGxlZCk7CisgICAgICAgIGlmIChTVUNDRUVERUQoaHIpICYmIEJPT1RTVFJBUFBFUl9SRVNVTUVfVFlQRV9SRUJPT1QgIT0gX2NvbW1hbmQucmVzdW1lVHlwZSAmJiAwIDwgbGxJbnN0YWxsZWQgJiYgQk9PVFNUUkFQUEVSX0FDVElPTl9JTlNUQUxMID09IF9jb21tYW5kLmFjdGlvbikgeworICAgICAgICAgICAgX2NvbW1hbmQuYWN0aW9uID0gQk9PVFNUUkFQUEVSX0FDVElPTl9NT0RJRlk7CisgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBsbEluc3RhbGxlZCAmJiAoQk9PVFNUUkFQUEVSX0FDVElPTl9NT0RJRlkgPT0gX2NvbW1hbmQuYWN0aW9uIHx8IEJPT1RTVFJBUFBFUl9BQ1RJT05fUkVQQUlSID09IF9jb21tYW5kLmFjdGlvbikpIHsKKyAgICAgICAgICAgIF9jb21tYW5kLmFjdGlvbiA9IEJPT1RTVFJBUFBFUl9BQ1RJT05fSU5TVEFMTDsKKyAgICAgICAgfQorCisgICAgICAgIF9wbGFubmVkQWN0aW9uID0gQk9PVFNUUkFQUEVSX0FDVElPTl9VTktOT1dOOworCisKKyAgICAgICAgLy8gV2hlbiByZXN1bWluZyBmcm9tIHJlc3RhcnQgZG9pbmcgc29tZSBpbnN0YWxsLWxpa2Ugb3BlcmF0aW9uLCB0cnkgdG8gZmluZCB0aGUgcGFja2FnZSB0aGF0IGZvcmNlZCB0aGUKKyAgICAgICAgLy8gcmVzdGFydC4gV2UnbGwgdXNlIHRoaXMgaW5mb3JtYXRpb24gZHVyaW5nIHBsYW5uaW5nLgorICAgICAgICBfbmV4dFBhY2thZ2VBZnRlclJlc3RhcnQgPSBudWxscHRyOworCisgICAgICAgIGlmIChCT09UU1RSQVBQRVJfUkVTVU1FX1RZUEVfUkVCT09UID09IF9jb21tYW5kLnJlc3VtZVR5cGUgJiYgQk9PVFNUUkFQUEVSX0FDVElPTl9VTklOU1RBTEwgPCBfY29tbWFuZC5hY3Rpb24pIHsKKyAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgZm9yY2VkIHJlc3RhcnQgcGFja2FnZSB2YXJpYWJsZSBpcyBudWxsIHdoZW4gaXQgaXMgYW4gZW1wdHkgc3RyaW5nLgorICAgICAgICAgICAgSFJFU1VMVCBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKEwiV2l4QnVuZGxlRm9yY2VkUmVzdGFydFBhY2thZ2UiLCAmX25leHRQYWNrYWdlQWZ0ZXJSZXN0YXJ0KTsKKyAgICAgICAgICAgIGlmIChGQUlMRUQoaHIpIHx8ICFfbmV4dFBhY2thZ2VBZnRlclJlc3RhcnQgfHwgISpfbmV4dFBhY2thZ2VBZnRlclJlc3RhcnQpIHsKKyAgICAgICAgICAgICAgICBSZWxlYXNlTnVsbFN0cihfbmV4dFBhY2thZ2VBZnRlclJlc3RhcnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgX2NydEluc3RhbGxlZFRva2VuID0gLTE7CisgICAgICAgIHBFbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhMIkNSVEluc3RhbGxlZCIsIElzQ3J0SW5zdGFsbGVkKCkgPyAxIDogMCk7CisKKyAgICAgICAgX3dpeExvYyA9IG51bGxwdHI7CisgICAgICAgIG1lbXNldCgmX2J1bmRsZSwgMCwgc2l6ZW9mKF9idW5kbGUpKTsKKyAgICAgICAgbWVtc2V0KCZfY29uZGl0aW9ucywgMCwgc2l6ZW9mKF9jb25kaXRpb25zKSk7CisgICAgICAgIF9jb25maXJtQ2xvc2VNZXNzYWdlID0gbnVsbHB0cjsKKyAgICAgICAgX2ZhaWxlZE1lc3NhZ2UgPSBudWxscHRyOworCisgICAgICAgIF9sYW5ndWFnZSA9IG51bGxwdHI7CisgICAgICAgIF90aGVtZSA9IG51bGxwdHI7CisgICAgICAgIG1lbXNldChfcGFnZUlkcywgMCwgc2l6ZW9mKF9wYWdlSWRzKSk7CisgICAgICAgIF9oVWlUaHJlYWQgPSBudWxscHRyOworICAgICAgICBfcmVnaXN0ZXJlZCA9IEZBTFNFOworICAgICAgICBfaFduZCA9IG51bGxwdHI7CisKKyAgICAgICAgX3N0YXRlID0gUFlCQV9TVEFURV9JTklUSUFMSVpJTkc7CisgICAgICAgIF92aXNpYmxlUGFnZUlkID0gMDsKKyAgICAgICAgX2luc3RhbGxQYWdlID0gUEFHRV9MT0FESU5HOworICAgICAgICBfaHJGaW5hbCA9IGhySG9zdEluaXRpYWxpemF0aW9uOworCisgICAgICAgIF9kb3duZ3JhZGluZ090aGVyVmVyc2lvbiA9IEZBTFNFOworICAgICAgICBfcmVzdGFydFJlc3VsdCA9IEJPT1RTVFJBUFBFUl9BUFBMWV9SRVNUQVJUX05PTkU7CisgICAgICAgIF9yZXN0YXJ0UmVxdWlyZWQgPSBGQUxTRTsKKyAgICAgICAgX2FsbG93UmVzdGFydCA9IEZBTFNFOworCisgICAgICAgIF9zdXBwcmVzc0Rvd25ncmFkZUZhaWx1cmUgPSBGQUxTRTsKKyAgICAgICAgX3N1cHByZXNzUmVwYWlyID0gRkFMU0U7CisgICAgICAgIF9tb2RpZnlpbmcgPSBGQUxTRTsKKyAgICAgICAgX3VwZ3JhZGluZyA9IEZBTFNFOworCisgICAgICAgIF9vdmVycmlkYWJsZVZhcmlhYmxlcyA9IG51bGxwdHI7CisgICAgICAgIF90YXNrYmFyTGlzdCA9IG51bGxwdHI7CisgICAgICAgIF90YXNrYmFyQnV0dG9uQ3JlYXRlZE1lc3NhZ2UgPSBVSU5UX01BWDsKKyAgICAgICAgX3Rhc2tiYXJCdXR0b25PSyA9IEZBTFNFOworICAgICAgICBfc2hvd2luZ0ludGVybmFsVUlUaGlzUGFja2FnZSA9IEZBTFNFOworICAgICAgICBfdHJpZWRUb0xhdW5jaEVsZXZhdGVkID0gRkFMU0U7CisKKyAgICAgICAgX3N1cHByZXNzUGFpbnQgPSBGQUxTRTsKKworICAgICAgICBwRW5naW5lLT5BZGRSZWYoKTsKKyAgICAgICAgX2VuZ2luZSA9IHBFbmdpbmU7CisKKyAgICAgICAgX2hCQUZNb2R1bGUgPSBudWxscHRyOworICAgICAgICBfYmFGdW5jdGlvbiA9IG51bGxwdHI7CisgICAgfQorCisKKyAgICAvLworICAgIC8vIERlc3RydWN0b3IgLSByZWxlYXNlIG1lbWJlciB2YXJpYWJsZXMuCisgICAgLy8KKyAgICB+UHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24oKSB7CisgICAgICAgIEFzc2VydFN6KCE6OklzV2luZG93KF9oV25kKSwgIldpbmRvdyBzaG91bGQgaGF2ZSBiZWVuIGRlc3Ryb3llZCBiZWZvcmUgZGVzdHJ1Y3Rvci4iKTsKKyAgICAgICAgQXNzZXJ0U3ooIV90aGVtZSwgIlRoZW1lIHNob3VsZCBoYXZlIGJlZW4gcmVsZWFzZWQgYmVmb3JlIGRlc3RydWN0b3IuIik7CisKKyAgICAgICAgUmVsZWFzZU9iamVjdChfdGFza2Jhckxpc3QpOworICAgICAgICBSZWxlYXNlRGljdChfb3ZlcnJpZGFibGVWYXJpYWJsZXMpOworICAgICAgICBSZWxlYXNlU3RyKF9mYWlsZWRNZXNzYWdlKTsKKyAgICAgICAgUmVsZWFzZVN0cihfY29uZmlybUNsb3NlTWVzc2FnZSk7CisgICAgICAgIEJhbENvbmRpdGlvbnNVbmluaXRpYWxpemUoJl9jb25kaXRpb25zKTsKKyAgICAgICAgQmFsSW5mb1VuaW5pdGlhbGl6ZSgmX2J1bmRsZSk7CisgICAgICAgIExvY0ZyZWUoX3dpeExvYyk7CisKKyAgICAgICAgUmVsZWFzZVN0cihfbGFuZ3VhZ2UpOworICAgICAgICBSZWxlYXNlU3RyKF9uZXh0UGFja2FnZUFmdGVyUmVzdGFydCk7CisgICAgICAgIFJlbGVhc2VOdWxsT2JqZWN0KF9lbmdpbmUpOworCisgICAgICAgIGlmIChfaEJBRk1vZHVsZSkgeworICAgICAgICAgICAgOjpGcmVlTGlicmFyeShfaEJBRk1vZHVsZSk7CisgICAgICAgICAgICBfaEJBRk1vZHVsZSA9IG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgSE1PRFVMRSBfaE1vZHVsZTsKKyAgICBCT09UU1RSQVBQRVJfQ09NTUFORCBfY29tbWFuZDsKKyAgICBJQm9vdHN0cmFwcGVyRW5naW5lKiBfZW5naW5lOworICAgIEJPT1RTVFJBUFBFUl9BQ1RJT04gX3BsYW5uZWRBY3Rpb247CisKKyAgICBMUFdTVFIgX25leHRQYWNrYWdlQWZ0ZXJSZXN0YXJ0OworCisgICAgV0lYX0xPQ0FMSVpBVElPTiogX3dpeExvYzsKKyAgICBCQUxfSU5GT19CVU5ETEUgX2J1bmRsZTsKKyAgICBCQUxfQ09ORElUSU9OUyBfY29uZGl0aW9uczsKKyAgICBMUFdTVFIgX2ZhaWxlZE1lc3NhZ2U7CisgICAgTFBXU1RSIF9jb25maXJtQ2xvc2VNZXNzYWdlOworCisgICAgTFBXU1RSIF9sYW5ndWFnZTsKKyAgICBUSEVNRSogX3RoZW1lOworICAgIERXT1JEIF9wYWdlSWRzW2NvdW50b2YoUEFHRV9OQU1FUyldOworICAgIEhBTkRMRSBfaFVpVGhyZWFkOworICAgIEJPT0wgX3JlZ2lzdGVyZWQ7CisgICAgSFdORCBfaFduZDsKKworICAgIFBZQkFfU1RBVEUgX3N0YXRlOworICAgIEhSRVNVTFQgX2hyRmluYWw7CisgICAgRFdPUkQgX3Zpc2libGVQYWdlSWQ7CisgICAgUEFHRSBfaW5zdGFsbFBhZ2U7CisKKyAgICBCT09MIF9zdGFydGVkRXhlY3V0aW9uOworICAgIERXT1JEIF9jYWxjdWxhdGVkQ2FjaGVQcm9ncmVzczsKKyAgICBEV09SRCBfY2FsY3VsYXRlZEV4ZWN1dGVQcm9ncmVzczsKKworICAgIEJPT0wgX2Rvd25ncmFkaW5nT3RoZXJWZXJzaW9uOworICAgIEJPT1RTVFJBUFBFUl9BUFBMWV9SRVNUQVJUIF9yZXN0YXJ0UmVzdWx0OworICAgIEJPT0wgX3Jlc3RhcnRSZXF1aXJlZDsKKyAgICBCT09MIF9hbGxvd1Jlc3RhcnQ7CisKKyAgICBCT09MIF9zdXBwcmVzc0Rvd25ncmFkZUZhaWx1cmU7CisgICAgQk9PTCBfc3VwcHJlc3NSZXBhaXI7CisgICAgQk9PTCBfbW9kaWZ5aW5nOworICAgIEJPT0wgX3VwZ3JhZGluZzsKKworICAgIGludCBfY3J0SW5zdGFsbGVkVG9rZW47CisKKyAgICBTVFJJTkdESUNUX0hBTkRMRSBfb3ZlcnJpZGFibGVWYXJpYWJsZXM7CisKKyAgICBJVGFza2Jhckxpc3QzKiBfdGFza2Jhckxpc3Q7CisgICAgVUlOVCBfdGFza2JhckJ1dHRvbkNyZWF0ZWRNZXNzYWdlOworICAgIEJPT0wgX3Rhc2tiYXJCdXR0b25PSzsKKyAgICBCT09MIF9zaG93aW5nSW50ZXJuYWxVSVRoaXNQYWNrYWdlOworICAgIEJPT0wgX3RyaWVkVG9MYXVuY2hFbGV2YXRlZDsKKworICAgIEJPT0wgX3N1cHByZXNzUGFpbnQ7CisKKyAgICBITU9EVUxFIF9oQkFGTW9kdWxlOworICAgIElCb290c3RyYXBwZXJCQUZ1bmN0aW9uKiBfYmFGdW5jdGlvbjsKK307CisKKy8vCisvLyBDcmVhdGVCb290c3RyYXBwZXJBcHBsaWNhdGlvbiAtIGNyZWF0ZXMgYSBuZXcgSUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uIG9iamVjdC4KKy8vCitIUkVTVUxUIENyZWF0ZUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKAorICAgIF9faW4gSE1PRFVMRSBoTW9kdWxlLAorICAgIF9faW4gQk9PTCBmUHJlcmVxLAorICAgIF9faW4gSFJFU1VMVCBockhvc3RJbml0aWFsaXphdGlvbiwKKyAgICBfX2luIElCb290c3RyYXBwZXJFbmdpbmUqIHBFbmdpbmUsCisgICAgX19pbiBjb25zdCBCT09UU1RSQVBQRVJfQ09NTUFORCogcENvbW1hbmQsCisgICAgX19vdXQgSUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKiogcHBBcHBsaWNhdGlvbgorICAgICkgeworICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgaWYgKGZQcmVyZXEpIHsKKyAgICAgICAgaHIgPSBFX0lOVkFMSURBUkc7CisgICAgICAgIEV4aXRXaXRoTGFzdEVycm9yKGhyLCAiRmFpbGVkIHRvIGNyZWF0ZSBVSSB0aHJlYWQuIik7CisgICAgfQorCisgICAgUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24qIHBBcHBsaWNhdGlvbiA9IG51bGxwdHI7CisKKyAgICBwQXBwbGljYXRpb24gPSBuZXcgUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24oaE1vZHVsZSwgZlByZXJlcSwgaHJIb3N0SW5pdGlhbGl6YXRpb24sIHBFbmdpbmUsIHBDb21tYW5kKTsKKyAgICBFeGl0T25OdWxsKHBBcHBsaWNhdGlvbiwgaHIsIEVfT1VUT0ZNRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIG5ldyBzdGFuZGFyZCBib290c3RyYXBwZXIgYXBwbGljYXRpb24gb2JqZWN0LiIpOworCisgICAgKnBwQXBwbGljYXRpb24gPSBwQXBwbGljYXRpb247CisgICAgcEFwcGxpY2F0aW9uID0gbnVsbHB0cjsKKworTEV4aXQ6CisgICAgUmVsZWFzZU9iamVjdChwQXBwbGljYXRpb24pOworICAgIHJldHVybiBocjsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3BjaC5jcHAgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9wY2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkOWYzOGMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9wY2guY3BwCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlICJwY2guaCIKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3BjaC5oIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvcGNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE2NmZhNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3BjaC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gPGNvcHlyaWdodCBmaWxlPSJwcmVjb21wLmgiIGNvbXBhbnk9Ik91dGVyY3VydmUgRm91bmRhdGlvbiI+CisvLyAgIENvcHlyaWdodCAoYykgMjAwNCwgT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uLgorLy8gICBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1pY3Jvc29mdCBSZWNpcHJvY2FsIExpY2Vuc2UgKE1TLVJMKS4KKy8vICAgVGhlIGxpY2Vuc2UgYW5kIGZ1cnRoZXIgY29weXJpZ2h0IHRleHQgY2FuIGJlIGZvdW5kIGluIHRoZSBmaWxlCisvLyAgIExJQ0VOU0UuVFhUIGF0IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgZGlzdHJpYnV0aW9uLgorLy8gPC9jb3B5cmlnaHQ+CisvLyAKKy8vIDxzdW1tYXJ5PgorLy8gICAgUHJlY29tcGlsZWQgaGVhZGVyIGZvciBzdGFuZGFyZCBib290c3RyYXBwZXIgYXBwbGljYXRpb24uCisvLyA8L3N1bW1hcnk+CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8Z2RpcGx1cy5oPgorI2luY2x1ZGUgPFV4dGhlbWUuaD4KKyNpbmNsdWRlIDxtc2lxdWVyeS5oPgorI2luY2x1ZGUgPG9iamJhc2UuaD4KKyNpbmNsdWRlIDxzaGxvYmouaD4KKyNpbmNsdWRlIDxzaGx3YXBpLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3Ryc2FmZS5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHZlcnNpb25oZWxwZXJzLmg+CisKKyNpbmNsdWRlICJkdXRpbC5oIgorI2luY2x1ZGUgIm1lbXV0aWwuaCIKKyNpbmNsdWRlICJkaWN0dXRpbC5oIgorI2luY2x1ZGUgImRpcnV0aWwuaCIKKyNpbmNsdWRlICJmaWxldXRpbC5oIgorI2luY2x1ZGUgImxvY3V0aWwuaCIKKyNpbmNsdWRlICJsb2d1dGlsLmgiCisjaW5jbHVkZSAicGF0aHV0aWwuaCIKKyNpbmNsdWRlICJyZXNydXRpbC5oIgorI2luY2x1ZGUgInNoZWx1dGlsLmgiCisjaW5jbHVkZSAic3RydXRpbC5oIgorI2luY2x1ZGUgInRobXV0aWwuaCIKKyNpbmNsdWRlICJ1cml1dGlsLmgiCisjaW5jbHVkZSAieG1sdXRpbC5oIgorCisjaW5jbHVkZSAiSUJvb3RzdHJhcHBlckVuZ2luZS5oIgorI2luY2x1ZGUgIklCb290c3RyYXBwZXJBcHBsaWNhdGlvbi5oIgorCisjaW5jbHVkZSAiQmFsQmFzZUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uLmgiCisjaW5jbHVkZSAiYmFsaW5mby5oIgorI2luY2x1ZGUgImJhbGNvbmRpdGlvbi5oIgorCitIUkVTVUxUIENyZWF0ZUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKAorICAgIF9faW4gSE1PRFVMRSBoTW9kdWxlLAorICAgIF9faW4gQk9PTCBmUHJlcmVxLAorICAgIF9faW4gSFJFU1VMVCBockhvc3RJbml0aWFsaXphdGlvbiwKKyAgICBfX2luIElCb290c3RyYXBwZXJFbmdpbmUqIHBFbmdpbmUsCisgICAgX19pbiBjb25zdCBCT09UU1RSQVBQRVJfQ09NTUFORCogcENvbW1hbmQsCisgICAgX19vdXQgSUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKiogcHBBcHBsaWNhdGlvbgorKTsKKworI2luY2x1ZGUgIklCb290c3RyYXBwZXJCQUZ1bmN0aW9uLmgiCisKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3B5dGhvbmJhLmNwcCBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3B5dGhvbmJhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2U0NWFkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvcHl0aG9uYmEuY3BwCkBAIC0wLDAgKzEsNzYgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gPGNvcHlyaWdodCBmaWxlPSJ3aXhzdGRiYS5jcHAiIGNvbXBhbnk9Ik91dGVyY3VydmUgRm91bmRhdGlvbiI+CisvLyAgIENvcHlyaWdodCAoYykgMjAwNCwgT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uLgorLy8gICBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1pY3Jvc29mdCBSZWNpcHJvY2FsIExpY2Vuc2UgKE1TLVJMKS4KKy8vICAgVGhlIGxpY2Vuc2UgYW5kIGZ1cnRoZXIgY29weXJpZ2h0IHRleHQgY2FuIGJlIGZvdW5kIGluIHRoZSBmaWxlCisvLyAgIExJQ0VOU0UuVFhUIGF0IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgZGlzdHJpYnV0aW9uLgorLy8gPC9jb3B5cmlnaHQ+CisvLworLy8gPHN1bW1hcnk+CisvLyBTZXR1cCBjaGFpbmVyL2Jvb3RzdHJhcHBlciBzdGFuZGFyZCBVSSBmb3IgV2lYIHRvb2xzZXQuCisvLyA8L3N1bW1hcnk+CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgInBjaC5oIgorCitzdGF0aWMgSElOU1RBTkNFIHZoSW5zdGFuY2UgPSBOVUxMOworCitleHRlcm4gIkMiIEJPT0wgV0lOQVBJIERsbE1haW4oCisgICAgSU4gSElOU1RBTkNFIGhJbnN0YW5jZSwKKyAgICBJTiBEV09SRCBkd1JlYXNvbiwKKyAgICBJTiBMUFZPSUQgLyogcHZSZXNlcnZlZCAqLworICAgICkKK3sKKyAgICBzd2l0Y2goZHdSZWFzb24pCisgICAgeworICAgIGNhc2UgRExMX1BST0NFU1NfQVRUQUNIOgorICAgICAgICA6OkRpc2FibGVUaHJlYWRMaWJyYXJ5Q2FsbHMoaEluc3RhbmNlKTsKKyAgICAgICAgdmhJbnN0YW5jZSA9IGhJbnN0YW5jZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERMTF9QUk9DRVNTX0RFVEFDSDoKKyAgICAgICAgdmhJbnN0YW5jZSA9IE5VTEw7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBUUlVFOworfQorCisKK2V4dGVybiAiQyIgSFJFU1VMVCBXSU5BUEkgQm9vdHN0cmFwcGVyQXBwbGljYXRpb25DcmVhdGUoCisgICAgX19pbiBJQm9vdHN0cmFwcGVyRW5naW5lKiBwRW5naW5lLAorICAgIF9faW4gY29uc3QgQk9PVFNUUkFQUEVSX0NPTU1BTkQqIHBDb21tYW5kLAorICAgIF9fb3V0IElCb290c3RyYXBwZXJBcHBsaWNhdGlvbioqIHBwQXBwbGljYXRpb24KKyAgICApCit7CisgICAgSFJFU1VMVCBociA9IFNfT0s7CisKKyAgICBCYWxJbml0aWFsaXplKHBFbmdpbmUpOworCisgICAgaHIgPSBDcmVhdGVCb290c3RyYXBwZXJBcHBsaWNhdGlvbih2aEluc3RhbmNlLCBGQUxTRSwgU19PSywgcEVuZ2luZSwgcENvbW1hbmQsIHBwQXBwbGljYXRpb24pOworICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gY3JlYXRlIGJvb3RzdHJhcHBlciBhcHBsaWNhdGlvbiBpbnRlcmZhY2UuIik7CisKK0xFeGl0OgorICAgIHJldHVybiBocjsKK30KKworCitleHRlcm4gIkMiIHZvaWQgV0lOQVBJIEJvb3RzdHJhcHBlckFwcGxpY2F0aW9uRGVzdHJveSgpCit7CisgICAgQmFsVW5pbml0aWFsaXplKCk7Cit9CisKKworZXh0ZXJuICJDIiBIUkVTVUxUIFdJTkFQSSBNYmFQcmVyZXFCb290c3RyYXBwZXJBcHBsaWNhdGlvbkNyZWF0ZSgKKyAgICBfX2luIEhSRVNVTFQgaHJIb3N0SW5pdGlhbGl6YXRpb24sCisgICAgX19pbiBJQm9vdHN0cmFwcGVyRW5naW5lKiBwRW5naW5lLAorICAgIF9faW4gY29uc3QgQk9PVFNUUkFQUEVSX0NPTU1BTkQqIHBDb21tYW5kLAorICAgIF9fb3V0IElCb290c3RyYXBwZXJBcHBsaWNhdGlvbioqIHBwQXBwbGljYXRpb24KKyAgICApCit7CisgICAgcmV0dXJuIEVfTk9USU1QTDsKK30KKworCitleHRlcm4gIkMiIHZvaWQgV0lOQVBJIE1iYVByZXJlcUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uRGVzdHJveSgpCit7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3B5dGhvbmJhLmRlZiBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3B5dGhvbmJhLmRlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWIzZmE1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvcHl0aG9uYmEuZGVmCkBAIC0wLDAgKzEsMTggQEAKKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis7IDxjb3B5cmlnaHQgZmlsZT0id2l4c3RkYmEuZGVmIiBjb21wYW55PSJPdXRlcmN1cnZlIEZvdW5kYXRpb24iPgorOyAgIENvcHlyaWdodCAoYykgMjAwNCwgT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uLgorOyAgIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTWljcm9zb2Z0IFJlY2lwcm9jYWwgTGljZW5zZSAoTVMtUkwpLgorOyAgIFRoZSBsaWNlbnNlIGFuZCBmdXJ0aGVyIGNvcHlyaWdodCB0ZXh0IGNhbiBiZSBmb3VuZCBpbiB0aGUgZmlsZQorOyAgIExJQ0VOU0UuVFhUIGF0IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgZGlzdHJpYnV0aW9uLgorOyA8L2NvcHlyaWdodD4KKzsgCis7IDxzdW1tYXJ5PgorOyAgICBXaVggU3RhbmRhcmQgQm9vdHN0cmFwcGVyIEFwcGxpY2F0aW9uIERMTCBlbnRyeSBwb2ludHMuCis7IDwvc3VtbWFyeT4KKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0VYUE9SVFMKKyAgICBCb290c3RyYXBwZXJBcHBsaWNhdGlvbkNyZWF0ZQorICAgIEJvb3RzdHJhcHBlckFwcGxpY2F0aW9uRGVzdHJveQorICAgIE1iYVByZXJlcUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uQ3JlYXRlCisgICAgTWJhUHJlcmVxQm9vdHN0cmFwcGVyQXBwbGljYXRpb25EZXN0cm95CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS5zbG4gYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS5zbG4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY0M2ZlZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3B5dGhvbmJhLnNsbgpAQCAtMCwwICsxLDIyIEBACivvu78KK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDEyLjAwCisjIFZpc3VhbCBTdHVkaW8gMjAxMworVmlzdWFsU3R1ZGlvVmVyc2lvbiA9IDEyLjAuMzA1MDEuMAorTWluaW11bVZpc3VhbFN0dWRpb1ZlcnNpb24gPSAxMC4wLjQwMjE5LjEKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uYmEiLCAicHl0aG9uYmEudmN4cHJvaiIsICJ7N0EwOUIxMzItQjNFRS00OTlCLUE3MDAtQTRCMjE1N0ZFQTNEfSIKK0VuZFByb2plY3QKK0dsb2JhbAorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCisJCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzIKKwkJUmVsZWFzZXxXaW4zMiA9IFJlbGVhc2V8V2luMzIKKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24KKwkJezdBMDlCMTMyLUIzRUUtNDk5Qi1BNzAwLUE0QjIxNTdGRUEzRH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezdBMDlCMTMyLUIzRUUtNDk5Qi1BNzAwLUE0QjIxNTdGRUEzRH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs3QTA5QjEzMi1CM0VFLTQ5OUItQTcwMC1BNEIyMTU3RkVBM0R9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7N0EwOUIxMzItQjNFRS00OTlCLUE3MDAtQTRCMjE1N0ZFQTNEfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uCisJCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQorCUVuZEdsb2JhbFNlY3Rpb24KK0VuZEdsb2JhbApkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvcHl0aG9uYmEudmN4cHJvaiBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3B5dGhvbmJhLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmUxMjk1NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3B5dGhvbmJhLnZjeHByb2oKQEAgLTAsMCArMSw2OSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKyAgPGNvcHlyaWdodCBmaWxlPSJ3aXhzdGRiYS52Y3hwcm9qIiBjb21wYW55PSJPdXRlcmN1cnZlIEZvdW5kYXRpb24iPgorICAgIENvcHlyaWdodCAoYykgMjAwNCwgT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uLgorICAgIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTWljcm9zb2Z0IFJlY2lwcm9jYWwgTGljZW5zZSAoTVMtUkwpLgorICAgIFRoZSBsaWNlbnNlIGFuZCBmdXJ0aGVyIGNvcHlyaWdodCB0ZXh0IGNhbiBiZSBmb3VuZCBpbiB0aGUgZmlsZQorICAgIExJQ0VOU0UuVFhUIGF0IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgZGlzdHJpYnV0aW9uLgorICA8L2NvcHlyaWdodD4KKy0tPgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPENvbmZpZ3VyYXRpb24gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJyciPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgPFBsYXRmb3JtIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAnJyI+V2luMzI8L1BsYXRmb3JtPgorICAgIDxQbGF0Zm9ybVRvb2xzZXQgQ29uZGl0aW9uPSInJChQbGF0Zm9ybVRvb2xzZXQpJyA9PSAnJyBhbmQgJyQoVkNUYXJnZXRzUGF0aDE0KScgIT0gJyciPnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0IENvbmRpdGlvbj0iJyQoUGxhdGZvcm1Ub29sc2V0KScgPT0gJycgYW5kICckKFZDVGFyZ2V0c1BhdGgxMiknICE9ICcnIj52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgICAgPFByb2plY3RHdWlkPns3QTA5QjEzMi1CM0VFLTQ5OUItQTcwMC1BNEIyMTU3RkVBM0R9PC9Qcm9qZWN0R3VpZD4KKyAgICA8VGFyZ2V0TmFtZT5QeXRob25CQTwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9Ii4uXC4uXHdpeC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPEludERpcj4kKFB5U291cmNlUGF0aClQQ0J1aWxkXG9ialwkKENvbmZpZ3VyYXRpb24pXyQoUGxhdGZvcm0pX1NldHVwXEJvb3RzdHJhcFw8L0ludERpcj4KKyAgICA8T3V0RGlyPiQoSW50RGlyKTwvT3V0RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU1RESU9fTEVHQUNZX1dJREVfU1BFQ0lGSUVSUz0xOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoV2l4SW5zdGFsbFBhdGgpc2RrXGluYzwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyRmlsZT5wY2guaDwvUHJlY29tcGlsZWRIZWFkZXJGaWxlPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y29tY3RsMzIubGliO2dkaXBsdXMubGliO21zaW1nMzIubGliO3NobHdhcGkubGliO3dpbmluZXQubGliO2R1dGlsLmxpYjtiYWx1dGlsLmxpYjt2ZXJzaW9uLmxpYjt1eHRoZW1lLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChQbGF0Zm9ybVRvb2xzZXQpJyA9PSAndjE0MCciPiQoV2l4SW5zdGFsbFBhdGgpc2RrXHZzMjAxNVxsaWJceDg2PC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChQbGF0Zm9ybVRvb2xzZXQpJyA9PSAndjEyMCciPiQoV2l4SW5zdGFsbFBhdGgpc2RrXHZzMjAxM1xsaWJceDg2PC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPE1vZHVsZURlZmluaXRpb25GaWxlPnB5dGhvbmJhLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknPT0nRGVidWcnIj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJweXRob25iYS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJwY2guY3BwIj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5DcmVhdGU8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InBjaC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVzb3VyY2UuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPE5vbmUgSW5jbHVkZT0icHl0aG9uYmEuZGVmIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9yZXNvdXJjZS5oIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvcmVzb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2MwM2MzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvcmVzb3VyY2UuaApAQCAtMCwwICsxLDI1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIDxjb3B5cmlnaHQgZmlsZT0icmVzb3VyY2UuaCIgY29tcGFueT0iT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uIj4KKy8vICAgQ29weXJpZ2h0IChjKSAyMDA0LCBPdXRlcmN1cnZlIEZvdW5kYXRpb24uCisvLyAgIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTWljcm9zb2Z0IFJlY2lwcm9jYWwgTGljZW5zZSAoTVMtUkwpLgorLy8gICBUaGUgbGljZW5zZSBhbmQgZnVydGhlciBjb3B5cmlnaHQgdGV4dCBjYW4gYmUgZm91bmQgaW4gdGhlIGZpbGUKKy8vICAgTElDRU5TRS5UWFQgYXQgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBkaXN0cmlidXRpb24uCisvLyA8L2NvcHlyaWdodD4KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvL3t7Tk9fREVQRU5ERU5DSUVTfX0KKy8vIE1pY3Jvc29mdCBWaXN1YWwgQysrIGdlbmVyYXRlZCBpbmNsdWRlIGZpbGUuCisvLworI2RlZmluZSBJRENfU1RBVElDICAgICAgICAgICAgICAgICAgICAgIC0xCisKKworLy8gTmV4dCBkZWZhdWx0IHZhbHVlcyBmb3IgbmV3IG9iamVjdHMKKy8vIAorI2lmZGVmIEFQU1RVRElPX0lOVk9LRUQKKyNpZm5kZWYgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUworI2RlZmluZSBfQVBTX05FWFRfUkVTT1VSQ0VfVkFMVUUgICAgICAgIDEwMgorI2RlZmluZSBfQVBTX05FWFRfQ09NTUFORF9WQUxVRSAgICAgICAgIDQwMDAxCisjZGVmaW5lIF9BUFNfTkVYVF9DT05UUk9MX1ZBTFVFICAgICAgICAgMTAwMworI2RlZmluZSBfQVBTX05FWFRfU1lNRURfVkFMVUUgICAgICAgICAgIDEwMQorI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLmljbyBiL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWI2MjllCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUuaWNvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnRhcmdldHMgYi9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS50YXJnZXRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlZWZmM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS50YXJnZXRzCkBAIC0wLDAgKzEsMTE2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyIgVHJlYXRBc0xvY2FsUHJvcGVydHk9IkRvd25sb2FkVXJsIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0VHlwZT5CdW5kbGU8L091dHB1dFR5cGU+CisgICAgICAgIAorICAgICAgICA8Qm9vdHN0cmFwQ29uZmlndXJhdGlvbiBDb25kaXRpb249IickKEJvb3RzdHJhcENvbmZpZ3VyYXRpb24pJyA9PSAnJyI+UmVsZWFzZTwvQm9vdHN0cmFwQ29uZmlndXJhdGlvbj4KKyAgICAgICAgPExpbmtlclN1cHByZXNzU3BlY2lmaWNXYXJuaW5ncz4xMTMyOzExMzU7MTE0MDwvTGlua2VyU3VwcHJlc3NTcGVjaWZpY1dhcm5pbmdzPgorICAgICAgICA8T3V0cHV0TmFtZSBDb25kaXRpb249IiQoQnVpbGRGb3JSZWxlYXNlKSI+JChPdXRwdXROYW1lKS0kKFB5dGhvblZlcnNpb24pPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0TmFtZSBDb25kaXRpb249IiEkKEJ1aWxkRm9yUmVsZWFzZSkiPiQoT3V0cHV0TmFtZSktJChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKS4kKE1pY3JvVmVyc2lvbk51bWJlcikuJChSZXZpc2lvbk51bWJlcik8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXROYW1lIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPiQoT3V0cHV0TmFtZSktYW1kNjQ8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXROYW1lIENvbmRpdGlvbj0iJyQoT3V0cHV0U3VmZml4KScgIT0gJyciPiQoT3V0cHV0TmFtZSktJChPdXRwdXRTdWZmaXgpPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyA9PSAnRGVidWcnIj4kKE91dHB1dE5hbWUpLWQ8L091dHB1dE5hbWU+CisgICAgICAgIDxUYXJnZXROYW1lPiQoT3V0cHV0TmFtZSk8L1RhcmdldE5hbWU+CisKKyAgICAgICAgPE91dHB1dFBhdGg+JChPdXRwdXRQYXRoKWVuLXVzXDwvT3V0cHV0UGF0aD4KKyAgICAgICAgPE91dERpcj4kKE91dHB1dFBhdGgpPC9PdXREaXI+CisgICAgICAgIAorICAgICAgICA8IS0tIFNlZSBUb29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdCBmb3IgaGVscCBvbiBjb25maWd1cmluZyB0aGUgZG93bmxvYWQgVVJMIC0tPgorICAgICAgICA8RG93bmxvYWRVcmwgQ29uZGl0aW9uPSInJChEb3dubG9hZFVybCknID09ICcnIGFuZCAnJChEb3dubG9hZFVybEJhc2UpJyAhPSAnJyI+JChEb3dubG9hZFVybEJhc2UuVHJpbUVuZChgL2ApKS97dmVyc2lvbn0ve2FyY2h9e3JlbGVhc2VuYW1lfS97bXNpfTwvRG93bmxvYWRVcmw+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHMgQ29uZGl0aW9uPSInJChEb3dubG9hZFVybCknICE9ICcnIj4kKERlZmluZUNvbnN0YW50cyk7RG93bmxvYWRVcmw9JChEb3dubG9hZFVybC5SZXBsYWNlKGB7dmVyc2lvbn1gLCBgJChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKS4kKE1pY3JvVmVyc2lvbk51bWJlcilgKS5SZXBsYWNlKGB7YXJjaH1gLCBgJChBcmNoTmFtZSlgKS5SZXBsYWNlKGB7cmVsZWFzZW5hbWV9YCwgYCQoUmVsZWFzZUxldmVsTmFtZSlgKS5SZXBsYWNlKGB7bXNpfWAsIGB7Mn1gKSk8L0RlZmluZUNvbnN0YW50cz4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cyBDb25kaXRpb249IickKERvd25sb2FkVXJsKScgPT0gJyciPiQoRGVmaW5lQ29uc3RhbnRzKTtEb3dubG9hZFVybD17Mn08L0RlZmluZUNvbnN0YW50cz4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgCisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPFdpeEV4dGVuc2lvbiBJbmNsdWRlPSJXaXhVdGlsRXh0ZW5zaW9uIj4KKyAgICAgICAgICAgIDxIaW50UGF0aD5XaXhVdGlsRXh0ZW5zaW9uPC9IaW50UGF0aD4KKyAgICAgICAgICAgIDxOYW1lPldpeFV0aWxFeHRlbnNpb248L05hbWU+CisgICAgICAgIDwvV2l4RXh0ZW5zaW9uPgorICAgICAgICA8V2l4RXh0ZW5zaW9uIEluY2x1ZGU9IldpeERlcGVuZGVuY3lFeHRlbnNpb24iPgorICAgICAgICAgICAgPEhpbnRQYXRoPldpeERlcGVuZGVuY3lFeHRlbnNpb248L0hpbnRQYXRoPgorICAgICAgICAgICAgPE5hbWU+V2l4RGVwZW5kZW5jeUV4dGVuc2lvbjwvTmFtZT4KKyAgICAgICAgPC9XaXhFeHRlbnNpb24+CisgICAgICAgIDxXaXhFeHRlbnNpb24gSW5jbHVkZT0iV2l4QmFsRXh0ZW5zaW9uIj4KKyAgICAgICAgICAgIDxIaW50UGF0aD5XaXhCYWxFeHRlbnNpb248L0hpbnRQYXRoPgorICAgICAgICAgICAgPE5hbWU+V2l4QmFsRXh0ZW5zaW9uPC9OYW1lPgorICAgICAgICA8L1dpeEV4dGVuc2lvbj4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJidW5kbGUud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJwYWNrYWdlZ3JvdXBzXCoud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb250ZW50IEluY2x1ZGU9IkRlZmF1bHQudGhtIiAvPgorICAgICAgICA8Q29udGVudCBJbmNsdWRlPSJEZWZhdWx0Lnd4bCIgLz4KKyAgICAgICAgPENvbnRlbnQgSW5jbHVkZT0iU2lkZUJhci5wbmciIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iYnVuZGxlLnd4bCIgLz4KKyAgICAgICAgPFd4bFRlbXBsYXRlIEluY2x1ZGU9IipfZW4tVVMud3hsX3RlbXBsYXRlIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxMaW5rZXJCaW5kSW5wdXRQYXRocyBJbmNsdWRlPSIkKE91dHB1dFBhdGgpIj4KKyAgICAgICAgICAgIDxCaW5kTmFtZT48L0JpbmROYW1lPgorICAgICAgICA8L0xpbmtlckJpbmRJbnB1dFBhdGhzPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgICAgICA8UGFja2FnZT4KKyAgICAgICAgICAgIDxQcm9wZXJ0aWVzPkJ1aWxkRm9yUmVsZWFzZT0kKEJ1aWxkRm9yUmVsZWFzZSk8L1Byb3BlcnRpZXM+CisgICAgICAgIDwvUGFja2FnZT4KKyAgICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPFBhY2thZ2UgSW5jbHVkZT0iLi5cY29yZVxjb3JlKi53aXhwcm9qIiAvPgorICAgICAgICA8UGFja2FnZSBJbmNsdWRlPSIuLlxkZXZcZGV2Ki53aXhwcm9qIiAvPgorICAgICAgICA8UGFja2FnZSBJbmNsdWRlPSIuLlxkb2NcZG9jKi53aXhwcm9qIiAvPgorICAgICAgICA8UGFja2FnZSBJbmNsdWRlPSIuLlxleGVcZXhlKi53aXhwcm9qIiAvPgorICAgICAgICA8UGFja2FnZSBJbmNsdWRlPSIuLlxsaWJcbGliKi53aXhwcm9qIiAvPgorICAgICAgICA8UGFja2FnZSBJbmNsdWRlPSIuLlxwYXRoXHBhdGgqLndpeHByb2oiIC8+CisgICAgICAgIDxQYWNrYWdlIEluY2x1ZGU9Ii4uXHBpcFxwaXAqLndpeHByb2oiIC8+CisgICAgICAgIDxQYWNrYWdlIEluY2x1ZGU9Ii4uXHRjbHRrXHRjbHRrKi53aXhwcm9qIiAvPgorICAgICAgICA8UGFja2FnZSBJbmNsdWRlPSIuLlx0ZXN0XHRlc3QqLndpeHByb2oiIC8+CisgICAgICAgIDxQYWNrYWdlIEluY2x1ZGU9Ii4uXHRvb2xzXHRvb2xzKi53aXhwcm9qIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8QnVpbGRQYWNrYWdlc1RhcmdldHM+QnVpbGQ8L0J1aWxkUGFja2FnZXNUYXJnZXRzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICAKKyAgICA8VGFyZ2V0IE5hbWU9Il9TZXRSZWJ1aWxkVGFyZ2V0IiBCZWZvcmVUYXJnZXRzPSJCZWZvcmVSZWJ1aWxkIj4KKyAgICAgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgICAgICA8QnVpbGRQYWNrYWdlc1RhcmdldHM+UmVidWlsZDwvQnVpbGRQYWNrYWdlc1RhcmdldHM+CisgICAgICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8L1RhcmdldD4KKyAgICAKKyAgICA8VGFyZ2V0IE5hbWU9IkJ1aWxkUGFja2FnZXMiIEJlZm9yZVRhcmdldHM9IkJlZm9yZUJ1aWxkIiBDb25kaXRpb249IickKFJlYnVpbGRBbGwpJyAhPSAnZmFsc2UnIj4KKyAgICAgICAgPE1TQnVpbGQgUHJvamVjdHM9IkAoUGFja2FnZSkiIFRhcmdldHM9IiQoQnVpbGRQYWNrYWdlc1RhcmdldHMpIiBCdWlsZEluUGFyYWxsZWw9InRydWUiIC8+CisgICAgPC9UYXJnZXQ+CisgICAgCisgICAgPFRhcmdldCBOYW1lPSJCdWlsZExhdW5jaGVyIiBCZWZvcmVUYXJnZXRzPSJCZWZvcmVCdWlsZCIgQ29uZGl0aW9uPSInJChSZWJ1aWxkQWxsKScgIT0gJ2ZhbHNlJyI+CisgICAgICAgIDwhLS0KKyAgICAgICAgQnVpbGQgdGhlIGxhdW5jaGVyIE1TSSB1c2luZyBFeGVjIHJhdGhlciB0aGFuIE1TQnVpbGQKKyAgICAgICAgQWxzbywgbmV2ZXIgdXNlIHRoZSB0ZXN0IG1hcmtlciBmb3IgdGhlIGxhdW5jaGVyLiBJdCdzIGdvaW5nIHRvIGNvcnJ1cHQgdGhpbmdzIGFueXdheSwgc28gd2UnbGwKKyAgICAgICAganVzdCBkaXNhYmxlIGl0IGJ5IGRlZmF1bHQuCisgICAgICAgICAtLT4KKyAgICAgICAgPEV4ZWMgQ29tbWFuZD0nbXNidWlsZCAuLlxsYXVuY2hlclxsYXVuY2hlci53aXhwcm9qIC9wOlBsYXRmb3JtPXg4NiAvcDpSZWxlYXNlVXJpPSIkKFJlbGVhc2VVcmkpIiAvcDpPdXRwdXRQYXRoPSIkKEJ1aWxkUGF0aC5UcmltRW5kKGBcYCkpIiAvcDpPdXRwdXRTdWZmaXg9JChQbGF0Zm9ybSkgL3A6QnVpbGRGb3JSZWxlYXNlPSQoQnVpbGRGb3JSZWxlYXNlKSAvcDpVc2VUZXN0TWFya2VyPWZhbHNlJworICAgICAgICAgICAgICBDb250aW51ZU9uRXJyb3I9ImZhbHNlIiAvPgorICAgIDwvVGFyZ2V0PgorICAgIAorICAgIDxUYXJnZXQgTmFtZT0iQnVpbGRCb290c3RyYXBBcHBsaWNhdGlvbiIgQmVmb3JlVGFyZ2V0cz0iQmVmb3JlQnVpbGQiPgorICAgICAgICA8TWVzc2FnZSBUZXh0PSJCdWlsZGluZyBib290c3RyYXAgYXBwIiBJbXBvcnRhbmNlPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPE1TQnVpbGQgUHJvamVjdHM9ImJvb3RzdHJhcFxweXRob25iYS52Y3hwcm9qIgorICAgICAgICAgICAgICAgICBUYXJnZXRzPSJCdWlsZDtHZXROYXRpdmVUYXJnZXRQYXRoIgorICAgICAgICAgICAgICAgICBVc2VSZXN1bHRzQ2FjaGU9InRydWUiCisgICAgICAgICAgICAgICAgIFByb3BlcnRpZXM9IkNvbmZpZ3VyYXRpb249JChCb290c3RyYXBDb25maWd1cmF0aW9uKTtQbGF0Zm9ybT1XaW4zMiI+CisgICAgICAgICAgICA8T3V0cHV0IFRhc2tQYXJhbWV0ZXI9IlRhcmdldE91dHB1dHMiIFByb3BlcnR5TmFtZT0iQm9vdHN0cmFwQXBwUGF0aCIgLz4KKyAgICAgICAgPC9NU0J1aWxkPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgICAgICA8RGVmaW5lQ29uc3RhbnRzPiQoRGVmaW5lQ29uc3RhbnRzKTtCb290c3RyYXBBcHA9JChCb290c3RyYXBBcHBQYXRoKTwvRGVmaW5lQ29uc3RhbnRzPgorICAgICAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPC9UYXJnZXQ+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS53eGwgYi9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS53eGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdhNjVjNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4bApAQCAtMCwwICsxLDcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICA8U3RyaW5nIElkPSJDUlREZXNjcmlwdGlvbiI+QyBSdW50aW1lIFVwZGF0ZSAoS0IyOTk5MjI2KTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDb21waWxlQWxsRGVzY3JpcHRpb24iPlByZWNvbXBpbGluZyBzdGFuZGFyZCBsaWJyYXJ5PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkNvbXBpbGVBbGxPRGVzY3JpcHRpb24iPlByZWNvbXBpbGluZyBzdGFuZGFyZCBsaWJyYXJ5ICgtTyk8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iQ29tcGlsZUFsbE9PRGVzY3JpcHRpb24iPlByZWNvbXBpbGluZyBzdGFuZGFyZCBsaWJyYXJ5ICgtT08pPC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4cyBiL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODMwN2UwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUud3hzCkBAIC0wLDAgKzEsMTExIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiCisgICAgIHhtbG5zOmJhbD0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvQmFsRXh0ZW5zaW9uIj4KKyAgPEJ1bmRsZSBOYW1lPSIhKGxvYy5GdWxsUHJvZHVjdE5hbWUpIgorICAgICAgICAgIFVwZ3JhZGVDb2RlPSIkKHZhci5Db3JlVXBncmFkZUNvZGUpIgorICAgICAgICAgIFZlcnNpb249IiQodmFyLlZlcnNpb24pIgorICAgICAgICAgIEljb25Tb3VyY2VGaWxlPSJidW5kbGUuaWNvIgorICAgICAgICAgIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIKKyAgICAgICAgICBBYm91dFVybD0iaHR0cDovL3d3dy5weXRob24ub3JnLyIKKyAgICAgICAgICBEaXNhYmxlTW9kaWZ5PSJidXR0b24iCisgICAgICAgICAgQ29tcHJlc3NlZD0ibm8iPgorICAgIDxCb290c3RyYXBwZXJBcHBsaWNhdGlvbiBJZD0iUHl0aG9uQkEiIFNvdXJjZUZpbGU9IiQodmFyLkJvb3RzdHJhcEFwcCkiPgorICAgICAgICA8UGF5bG9hZCBDb21wcmVzc2VkPSd5ZXMnIFNvdXJjZUZpbGU9J0RlZmF1bHQudGhtJyAvPgorICAgICAgICA8UGF5bG9hZCBDb21wcmVzc2VkPSd5ZXMnIFNvdXJjZUZpbGU9J0RlZmF1bHQud3hsJyAvPgorICAgICAgICA8UGF5bG9hZCBDb21wcmVzc2VkPSd5ZXMnIFNvdXJjZUZpbGU9J1NpZGVCYXIucG5nJyAvPgorICAgIDwvQm9vdHN0cmFwcGVyQXBwbGljYXRpb24+CisKKyAgICA8IS0tIE1heSBiZSBzZXQgdG8gIlJlbW92aW5nIiBvciAiUmVwYWlyaW5nIiAtLT4KKyAgICA8VmFyaWFibGUgTmFtZT0iQWN0aW9uTGlrZUluc3RhbGxpbmciIFZhbHVlPSJJbnN0YWxsaW5nIiAvPgorICAgIDwhLS0gTWF5IGJlIHNldCB0byAiVW5pbnN0YWxsYXRpb24iIG9yICJSZXBhaXIiIC0tPgorICAgIDxWYXJpYWJsZSBOYW1lPSJBY3Rpb25MaWtlSW5zdGFsbGF0aW9uIiBWYWx1ZT0iU2V0dXAiIC8+CisKKyAgICA8VmFyaWFibGUgTmFtZT0iU2hvcnRWZXJzaW9uIiBWYWx1ZT0iJCh2YXIuTWFqb3JWZXJzaW9uTnVtYmVyKS4kKHZhci5NaW5vclZlcnNpb25OdW1iZXIpIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJTaG9ydFZlcnNpb25Ob0RvdCIgVmFsdWU9IiQodmFyLk1ham9yVmVyc2lvbk51bWJlcikkKHZhci5NaW5vclZlcnNpb25OdW1iZXIpIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJXaW5WZXIiIFZhbHVlPSIkKHZhci5NYWpvclZlcnNpb25OdW1iZXIpLiQodmFyLk1pbm9yVmVyc2lvbk51bWJlcikkKHZhci5QeUFyY2hFeHQpJCh2YXIuUHlUZXN0RXh0KSIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iV2luVmVyTm9Eb3QiIFZhbHVlPSIkKHZhci5NYWpvclZlcnNpb25OdW1iZXIpJCh2YXIuTWlub3JWZXJzaW9uTnVtYmVyKSQodmFyLlB5QXJjaEV4dCkkKHZhci5QeVRlc3RFeHQpIiAvPgorCisgICAgPFZhcmlhYmxlIE5hbWU9Ikluc3RhbGxBbGxVc2VycyIgVmFsdWU9IjAiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDw/aWYgIiQodmFyLlB5VGVzdEV4dCkiPSIiID8+CisgICAgPFZhcmlhYmxlIE5hbWU9Ikluc3RhbGxMYXVuY2hlckFsbFVzZXJzIiBWYWx1ZT0iMSIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPD9lbHNlID8+CisgICAgPFZhcmlhYmxlIE5hbWU9Ikluc3RhbGxMYXVuY2hlckFsbFVzZXJzIiBWYWx1ZT0iMCIgLz4KKyAgICA8P2VuZGlmID8+CisgICAgPFZhcmlhYmxlIE5hbWU9IlRhcmdldERpciIgVmFsdWU9IiIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPD9pZiAkKHZhci5QbGF0Zm9ybSl+PSJ4NjQiID8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkRlZmF1bHRBbGxVc2Vyc1RhcmdldERpciIgVmFsdWU9IltQcm9ncmFtRmlsZXM2NEZvbGRlcl1QeXRob25bV2luVmVyTm9Eb3RdIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iVGFyZ2V0UGxhdGZvcm0iIFZhbHVlPSJ4NjQiIC8+CisgICAgPD9lbHNlID8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkRlZmF1bHRBbGxVc2Vyc1RhcmdldERpciIgVmFsdWU9IltQcm9ncmFtRmlsZXNGb2xkZXJdUHl0aG9uW1dpblZlck5vRG90XSIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IlRhcmdldFBsYXRmb3JtIiBWYWx1ZT0ieDg2IiAvPgorICAgIDw/ZW5kaWYgPz4KKyAgICA8VmFyaWFibGUgTmFtZT0iRGVmYXVsdEp1c3RGb3JNZVRhcmdldERpciIgVmFsdWU9IltMb2NhbEFwcERhdGFGb2xkZXJdUHJvZ3JhbXNcUHl0aG9uXFB5dGhvbltXaW5WZXJOb0RvdF0iIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXkiIFZhbHVlPSJTb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZVxbV2luVmVyXVxJbnN0YWxsZWRGZWF0dXJlcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iVGFyZ2V0RGlyUmVnaXN0cnlLZXkiIFZhbHVlPSJTb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZVxbV2luVmVyXVxJbnN0YWxsUGF0aCIgLz4KKyAgICAKKyAgICA8IS0tCisgICAgQW4gZW1wdHkgc3RyaW5nIHdpbGwgdXNlIHRoZSBvdGhlciBkZWZhdWx0cyBiYXNlZCBvbiBJbnN0YWxsQWxsVXNlcnMKKyAgICAoYW5kIHN3aXRjaCBkeW5hbWljYWxseSBpbiB0aGUgVUkpLiBUbyBnZXQgdGhlIG9sZCBkZWZhdWx0LCBwYXNzCisgICAgdGhpcyBwcm9wZXJ0eSBvbiB0aGUgY29tbWFuZCBsaW5lOgorICAgICAgICBEZWZhdWx0Q3VzdG9tVGFyZ2V0RGlyPVtXaW5kb3dzVm9sdW1lXVB5dGhvbltTaG9ydFZlcnNpb25Ob0RvdF0KKyAgICAtLT4KKyAgICA8VmFyaWFibGUgTmFtZT0iRGVmYXVsdEN1c3RvbVRhcmdldERpciIgVmFsdWU9IiIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisKKyAgICA8VmFyaWFibGUgTmFtZT0iSW5zdGFsbEFsbFVzZXJzU3RhdGUiIFZhbHVlPSJlbmFibGVkIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8P2lmICIkKHZhci5QeVRlc3RFeHQpIj0iIiA/PgorICAgIDxWYXJpYWJsZSBOYW1lPSJJbnN0YWxsTGF1bmNoZXJBbGxVc2Vyc1N0YXRlIiBWYWx1ZT0iZW5hYmxlZCIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPD9lbHNlID8+CisgICAgPFZhcmlhYmxlIE5hbWU9Ikluc3RhbGxMYXVuY2hlckFsbFVzZXJzU3RhdGUiIFZhbHVlPSJkaXNhYmxlIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8P2VuZGlmID8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkN1c3RvbUluc3RhbGxMYXVuY2hlckFsbFVzZXJzU3RhdGUiIFZhbHVlPSJbSW5zdGFsbExhdW5jaGVyQWxsVXNlcnNTdGF0ZV0iIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IlRhcmdldERpclN0YXRlIiBWYWx1ZT0iZW5hYmxlZCIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iQ3VzdG9tQnJvd3NlQnV0dG9uU3RhdGUiIFZhbHVlPSJlbmFibGVkIiAvPgorCisgICAgPFZhcmlhYmxlIE5hbWU9IkluY2x1ZGVfY29yZSIgVmFsdWU9IjEiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkluY2x1ZGVfZXhlIiBWYWx1ZT0iMSIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkluY2x1ZGVfZGV2IiBWYWx1ZT0iMSIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkluY2x1ZGVfbGliIiBWYWx1ZT0iMSIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkluY2x1ZGVfdGVzdCIgVmFsdWU9IjEiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJJbmNsdWRlX2RvYyIgVmFsdWU9IjEiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJJbmNsdWRlX3Rvb2xzIiBWYWx1ZT0iMSIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkluY2x1ZGVfdGNsdGsiIFZhbHVlPSIxIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iSW5jbHVkZV9waXAiIFZhbHVlPSIxIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8P2lmICIkKHZhci5QeVRlc3RFeHQpIj0iIiA/PgorICAgIDxWYXJpYWJsZSBOYW1lPSJJbmNsdWRlX2xhdW5jaGVyIiBWYWx1ZT0iMSIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkluY2x1ZGVfbGF1bmNoZXJTdGF0ZSIgVmFsdWU9ImVuYWJsZWQiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDw/ZWxzZSA/PgorICAgIDxWYXJpYWJsZSBOYW1lPSJJbmNsdWRlX2xhdW5jaGVyIiBWYWx1ZT0iMCIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iSW5jbHVkZV9sYXVuY2hlclN0YXRlIiBWYWx1ZT0iZGlzYWJsZSIgLz4KKyAgICA8P2VuZGlmID8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkluY2x1ZGVfc3ltYm9scyIgVmFsdWU9IjAiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJJbmNsdWRlX2RlYnVnIiBWYWx1ZT0iMCIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgCisgICAgPFZhcmlhYmxlIE5hbWU9IkxhdW5jaGVyT25seSIgVmFsdWU9IjAiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJEZXRlY3RlZExhdW5jaGVyIiBWYWx1ZT0iMCIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iRGV0ZWN0ZWRPbGRMYXVuY2hlciIgVmFsdWU9IjAiIC8+CisgICAgCisgICAgPFZhcmlhYmxlIE5hbWU9IkFzc29jaWF0ZUZpbGVzIiBWYWx1ZT0iMSIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IlNob3J0Y3V0cyIgVmFsdWU9IjEiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJQcmVwZW5kUGF0aCIgVmFsdWU9IjAiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJDb21waWxlQWxsIiBWYWx1ZT0iMCIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgCisgICAgPFZhcmlhYmxlIE5hbWU9IlNpbXBsZUluc3RhbGwiIFZhbHVlPSIwIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iU2ltcGxlSW5zdGFsbERlc2NyaXB0aW9uIiBWYWx1ZT0iIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICAKKyAgICA8Q2hhaW4gUGFyYWxsZWxDYWNoZT0ieWVzIj4KKyAgICAgIDxQYWNrYWdlR3JvdXBSZWYgSWQ9ImNydCIgLz4KKyAgICAgIDxQYWNrYWdlR3JvdXBSZWYgSWQ9ImNvcmUiIC8+CisgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJkZXYiIC8+CisgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJleGUiIC8+CisgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJsaWIiIC8+CisgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJ0ZXN0IiAvPgorICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0iZG9jIiAvPgorICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0idG9vbHMiIC8+CisgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJ0Y2x0ayIgLz4KKyAgICAgIDxQYWNrYWdlR3JvdXBSZWYgSWQ9ImxhdW5jaGVyIiAvPgorICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0icGlwIiAvPgorICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0icGFja2FnZWluc3RhbGwiIC8+CisgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJwb3N0aW5zdGFsbCIgLz4KKyAgICA8L0NoYWluPgorICA8L0J1bmRsZT4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9mdWxsLndpeHByb2ogYi9Ub29scy9tc2kvYnVuZGxlL2Z1bGwud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGJkZDhlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9mdWxsLndpeHByb2oKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezNFMjA0QURELTIzOEQtNEQxMC04NTJDLTRGODU5MzI1QzgzOX08L1Byb2plY3RHdWlkPgorICAgICAgICA8T3V0cHV0TmFtZT5weXRob248L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRTdWZmaXg+ZnVsbDwvT3V0cHV0U3VmZml4PgorICAgIDwvUHJvcGVydHlHcm91cD4KKworICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorCisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHM+CisgICAgICAgICAgICAkKERlZmluZUNvbnN0YW50cyk7CisgICAgICAgICAgICBDb21wcmVzc01TST15ZXM7CisgICAgICAgICAgICBDb21wcmVzc1BEQj15ZXM7CisgICAgICAgICAgICBDb21wcmVzc01TSV9EPXllczsKKyAgICAgICAgPC9EZWZpbmVDb25zdGFudHM+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iYnVuZGxlLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2NvcmUud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2NvcmUud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViM2QwYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvY29yZS53eHMKQEAgLTAsMCArMSw2MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQYWNrYWdlR3JvdXAgSWQ9ImNvcmUiPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImNvcmVfQWxsVXNlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJjb3JlLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgKEluY2x1ZGVfY29yZSBvciBJbmNsdWRlX2V4ZSBvciBJbmNsdWRlX2xhdW5jaGVyIG9yIEluY2x1ZGVfcGlwKSBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJjb3JlX0FsbFVzZXJzX3BkYiIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImNvcmVfcGRiLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzUERCKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgKEluY2x1ZGVfY29yZSBvciBJbmNsdWRlX2V4ZSBvciBJbmNsdWRlX2xhdW5jaGVyIG9yIEluY2x1ZGVfcGlwKSBhbmQgSW5jbHVkZV9zeW1ib2xzIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImNvcmVfQWxsVXNlcnNfZCIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImNvcmVfZC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSV9EKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgKEluY2x1ZGVfY29yZSBvciBJbmNsdWRlX2V4ZSBvciBJbmNsdWRlX2xhdW5jaGVyIG9yIEluY2x1ZGVfcGlwKSBhbmQgSW5jbHVkZV9kZWJ1ZyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKworICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImNvcmVfSnVzdEZvck1lIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iY29yZS5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIChJbmNsdWRlX2NvcmUgb3IgSW5jbHVkZV9leGUgb3IgSW5jbHVkZV9sYXVuY2hlciBvciBJbmNsdWRlX3BpcCkgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iY29yZV9KdXN0Rm9yTWVfcGRiIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iY29yZV9wZGIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NQREIpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCAoSW5jbHVkZV9jb3JlIG9yIEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBJbmNsdWRlX3N5bWJvbHMgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iY29yZV9KdXN0Rm9yTWVfZCIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImNvcmVfZC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSV9EKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgKEluY2x1ZGVfY29yZSBvciBJbmNsdWRlX2V4ZSBvciBJbmNsdWRlX2xhdW5jaGVyIG9yIEluY2x1ZGVfcGlwKSBhbmQgSW5jbHVkZV9kZWJ1ZyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9jcnQud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2NydC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM0MDQ3NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9jcnQud3hzCkBAIC0wLDAgKzEsNDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJjcnQiPgorICAgICAgICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0iY3J0XzE0LjBfdjYuMCIgLz4KKyAgICAgICAgICAgIDxQYWNrYWdlR3JvdXBSZWYgSWQ9ImNydF8xNC4wX3Y2LjEiIC8+CisgICAgICAgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJjcnRfMTQuMF92Ni4yIiAvPgorICAgICAgICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0iY3J0XzE0LjBfdjYuMyIgLz4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKworICAgIDw/Zm9yZWFjaCB2ZXIgaW4gdjYuMDt2Ni4xO3Y2LjI7djYuMyA/PgorICAgIDw/aWYgIiQodmFyLnZlcikiID0gInY2LjAiID8+CisgICAgPD9kZWZpbmUgbXN1dmVyPTYuMCA/PgorICAgIDw/ZWxzZWlmICIkKHZhci52ZXIpIiA9ICJ2Ni4xIiA/PgorICAgIDw/ZGVmaW5lIG1zdXZlcj02LjEgPz4KKyAgICA8P2Vsc2VpZiAiJCh2YXIudmVyKSIgPSAidjYuMiIgPz4KKyAgICA8P2RlZmluZSBtc3V2ZXI9OC1SVCA/PgorICAgIDw/ZWxzZWlmICIkKHZhci52ZXIpIiA9ICJ2Ni4zIiA/PgorICAgIDw/ZGVmaW5lIG1zdXZlcj04LjEgPz4KKyAgICA8P2Vsc2UgPz4KKyAgICA8P2Vycm9yIHVua25vd24gdmVyc2lvbiAkKHZhci52ZXIpID8+CisgICAgPD9lbmRpZiA/PgorCisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJjcnRfMTQuMF8kKHZhci52ZXIpIj4KKyAgICAgICAgICAgIDxNc3VQYWNrYWdlIElkPSJjcnRfMTQuMF8kKHZhci52ZXIpX3g4NiIKKyAgICAgICAgICAgICAgICAgICAgICAgIEtCPSIyOTk5MjI2IgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iIShiaW5kcGF0aC5yZWRpc3QpXFdpbmRvd3MkKHZhci5tc3V2ZXIpLUtCMjk5OTIyNi14ODYubXN1IgorICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGxheU5hbWU9IiEobG9jLkNSVERlc2NyaXB0aW9uKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uPSIhKGxvYy5DUlREZXNjcmlwdGlvbikiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IENSVEluc3RhbGxlZCBhbmQgVmVyc2lvbk5UID0gJCh2YXIudmVyKSBhbmQgbm90IFZlcnNpb25OVDY0IGFuZCAoSW5jbHVkZV9jb3JlIG9yIEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBub3QgTGF1bmNoZXJPbmx5IiAvPgorCisgICAgICAgICAgICA8TXN1UGFja2FnZSBJZD0iY3J0XzE0LjBfJCh2YXIudmVyKV94NjQiCisgICAgICAgICAgICAgICAgICAgICAgICBLQj0iMjk5OTIyNiIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9IiEoYmluZHBhdGgucmVkaXN0KVxXaW5kb3dzJCh2YXIubXN1dmVyKS1LQjI5OTkyMjYteDY0Lm1zdSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlOYW1lPSIhKGxvYy5DUlREZXNjcmlwdGlvbikiCisgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iIShsb2MuQ1JURGVzY3JpcHRpb24pIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBDUlRJbnN0YWxsZWQgYW5kIFZlcnNpb25OVDY0ID0gJCh2YXIudmVyKSBhbmQgKEluY2x1ZGVfY29yZSBvciBJbmNsdWRlX2V4ZSBvciBJbmNsdWRlX2xhdW5jaGVyIG9yIEluY2x1ZGVfcGlwKSBhbmQgbm90IExhdW5jaGVyT25seSIgLz4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKworICAgIDw/dW5kZWYgbXN1dmVyID8+CisgICAgPD9lbmRmb3JlYWNoID8+Cis8L1dpeD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvZGV2Lnd4cyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9kZXYud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyODRkYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvZGV2Lnd4cwpAQCAtMCwwICsxLDQ0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFBhY2thZ2VHcm91cCBJZD0iZGV2Ij4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJkZXZfQWxsVXNlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJkZXYubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX2RldiBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJkZXZfQWxsVXNlcnNfZCIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImRldl9kLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX2RldiBhbmQgSW5jbHVkZV9kZWJ1ZyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKworICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImRldl9KdXN0Rm9yTWUiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJkZXYubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX2RldiBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJkZXZfSnVzdEZvck1lX2QiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJkZXZfZC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSV9EKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV9kZXYgYW5kIEluY2x1ZGVfZGVidWcgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgIDwvUGFja2FnZUdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvZG9jLnd4cyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9kb2Mud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MzlmZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvZG9jLnd4cwpAQCAtMCwwICsxLDI4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFBhY2thZ2VHcm91cCBJZD0iZG9jIj4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJkb2NfQWxsVXNlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJkb2MubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZUZlYXR1cmVTZWxlY3Rpb249InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX2RvYyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImRvY19KdXN0Rm9yTWUiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJkb2MubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZUZlYXR1cmVTZWxlY3Rpb249InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX2RvYyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9leGUud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2V4ZS53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk0NjRjNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9leGUud3hzCkBAIC0wLDAgKzEsNjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJleGUiPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImV4ZV9BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImV4ZS5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVGZWF0dXJlU2VsZWN0aW9uPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIChJbmNsdWRlX2V4ZSBvciBJbmNsdWRlX2xhdW5jaGVyIG9yIEluY2x1ZGVfcGlwKSBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJleGVfQWxsVXNlcnNfcGRiIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iZXhlX3BkYi5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzUERCKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIChJbmNsdWRlX2V4ZSBvciBJbmNsdWRlX2xhdW5jaGVyIG9yIEluY2x1ZGVfcGlwKSBhbmQgSW5jbHVkZV9zeW1ib2xzIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImV4ZV9BbGxVc2Vyc19kIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iZXhlX2QubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSV9EKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIChJbmNsdWRlX2V4ZSBvciBJbmNsdWRlX2xhdW5jaGVyIG9yIEluY2x1ZGVfcGlwKSBhbmQgSW5jbHVkZV9kZWJ1ZyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImV4ZV9KdXN0Rm9yTWUiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJleGUubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVGZWF0dXJlU2VsZWN0aW9uPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCAoSW5jbHVkZV9leGUgb3IgSW5jbHVkZV9sYXVuY2hlciBvciBJbmNsdWRlX3BpcCkgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iZXhlX0p1c3RGb3JNZV9wZGIiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJleGVfcGRiLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc1BEQikiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgKEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBJbmNsdWRlX3N5bWJvbHMgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iZXhlX0p1c3RGb3JNZV9kIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iZXhlX2QubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIChJbmNsdWRlX2V4ZSBvciBJbmNsdWRlX2xhdW5jaGVyIG9yIEluY2x1ZGVfcGlwKSBhbmQgSW5jbHVkZV9kZWJ1ZyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9sYXVuY2hlci53eHMgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvbGF1bmNoZXIud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NDRmNDUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvbGF1bmNoZXIud3hzCkBAIC0wLDAgKzEsMjcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJsYXVuY2hlciI+CisgICAgICAgICAgICA8IS0tIFRoZSBBbGwgVXNlcnMgbGF1bmNoZXIgaXMgYWx3YXlzIHRoZSAzMi1iaXQgdmVyc2lvbiAtLT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJsYXVuY2hlcl9BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImxhdW5jaGVyLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZUZlYXR1cmVTZWxlY3Rpb249InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFBlcm1hbmVudD0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgVmlzaWJsZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iKEluc3RhbGxBbGxVc2VycyBvciBJbnN0YWxsTGF1bmNoZXJBbGxVc2VycykgYW5kIEluY2x1ZGVfbGF1bmNoZXIgYW5kIG5vdCBEZXRlY3RlZExhdW5jaGVyIiAvPgorCisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0ibGF1bmNoZXJfSnVzdEZvck1lIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0ibGF1bmNoZXIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVGZWF0dXJlU2VsZWN0aW9uPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBQZXJtYW5lbnQ9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFZpc2libGU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCAoSW5zdGFsbEFsbFVzZXJzIG9yIEluc3RhbGxMYXVuY2hlckFsbFVzZXJzKSBhbmQgSW5jbHVkZV9sYXVuY2hlciBhbmQgbm90IERldGVjdGVkTGF1bmNoZXIiIC8+CisgICAgICAgIDwvUGFja2FnZUdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvbGliLnd4cyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9saWIud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiM2ZiYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvbGliLnd4cwpAQCAtMCwwICsxLDYyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFBhY2thZ2VHcm91cCBJZD0ibGliIj4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJsaWJfQWxsVXNlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJsaWIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX2xpYiBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJsaWJfQWxsVXNlcnNfcGRiIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0ibGliX3BkYi5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc1BEQikiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfbGliIGFuZCBJbmNsdWRlX3N5bWJvbHMgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0ibGliX0FsbFVzZXJzX2QiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJsaWJfZC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSV9EKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV9saWIgYW5kIEluY2x1ZGVfZGVidWcgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisKKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJsaWJfSnVzdEZvck1lIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0ibGliLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV9saWIgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0ibGliX0p1c3RGb3JNZV9wZGIiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJsaWJfcGRiLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzUERCKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV9saWIgYW5kIEluY2x1ZGVfc3ltYm9scyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJsaWJfSnVzdEZvck1lX2QiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJsaWJfZC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSV9EKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV9saWIgYW5kIEluY2x1ZGVfZGVidWcgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgIDwvUGFja2FnZUdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvcGFja2FnZWluc3RhbGwud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2VpbnN0YWxsLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWU3ZDRkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2VpbnN0YWxsLnd4cwpAQCAtMCwwICsxLDI2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFBhY2thZ2VHcm91cCBJZD0icGFja2FnZWluc3RhbGwiPgorICAgICAgICAgICAgPCEtLQorICAgICAgICAgICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGluc3RhbGxpbmcgYSBwYWNrYWdlIHVzaW5nIHBpcCBhcyBwYXJ0IG9mIG1haW4gaW5zdGFsbC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgRm9yIGEgbmV0d29yay1vbmx5IGluc3RhbGwsIHJlbW92ZSB0aGUgUGF5bG9hZCBlbGVtZW50IGFuZCBjaGFuZ2UgdGhlIGluc3RhbGwKKyAgICAgICAgICAgIGNvbW1hbmQgdG8gc3BlY2lmeSB0aGUgcGFja2FnZSBhbmQgKG9wdGlvbmFsbHkpIHZlcnNpb24gc3BlY2lmaWVyLgorICAgICAgICAgICAgCisgICAgICAgICAgICA8RXhlUGFja2FnZSBJZD0icmVxdWVzdHMiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJweS5leGUiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5TmFtZT0iIShsb2MuQ29tcGlsZUFsbERlc2NyaXB0aW9uKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb21tYW5kPSctW1dpblZlcl0gLW0gcGlwIGluc3RhbGwgcmVxdWVzdHMtMi43LjAtcHkyLnB5My1ub25lLWFueS53aGwnCisgICAgICAgICAgICAgICAgICAgICAgICBVbmluc3RhbGxDb21tYW5kPSctW1dpblZlcl0gLW0gcGlwIHVuaW5zdGFsbCAteSByZXF1ZXN0cycKKyAgICAgICAgICAgICAgICAgICAgICAgIFZpdGFsPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249IkluY2x1ZGVfcGlwIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8UGF5bG9hZCBTb3VyY2VGaWxlPSJyZXF1ZXN0cy0yLjcuMC1weTIucHkzLW5vbmUtYW55LndobCIKKyAgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIgLz4KKyAgICAgICAgICAgIDwvRXhlUGFja2FnZT4KKyAgICAgICAgICAgIC0tPgorICAgICAgICA8L1BhY2thZ2VHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL3BpcC53eHMgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvcGlwLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDFhNmM0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL3BpcC53eHMKQEAgLTAsMCArMSwyNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQYWNrYWdlR3JvdXAgSWQ9InBpcCI+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0icGlwX0FsbFVzZXJzIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0icGlwLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV9waXAgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0icGlwX0p1c3RGb3JNZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InBpcC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfcGlwIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICA8L1BhY2thZ2VHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL3Bvc3RpbnN0YWxsLnd4cyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9wb3N0aW5zdGFsbC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFhYjY3MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9wb3N0aW5zdGFsbC53eHMKQEAgLTAsMCArMSw4OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQYWNrYWdlR3JvdXAgSWQ9InBvc3RpbnN0YWxsIj4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJwYXRoX0FsbFVzZXJzIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0icGF0aC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIFByZXBlbmRQYXRoIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InBhdGhfSnVzdEZvck1lIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0icGF0aC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIFByZXBlbmRQYXRoIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8P2RlZmluZSBDb21waWxlQWxsQ29tbWFuZD0tRSAtcyAtV2kgIltUYXJnZXREaXJdXExpYlxjb21waWxlYWxsLnB5IiAtZiAteCAiYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xweTJffGxpYjJ0bzNcXHRlc3RzfHZlbnZcXHNjcmlwdHMiICJbVGFyZ2V0RGlyXVxMaWIiPz4KKyAgICAgICAgICAgIDxFeGVQYWNrYWdlIElkPSJjb21waWxlYWxsX0FsbFVzZXJzIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0icHkuZXhlIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGxheU5hbWU9IiEobG9jLkNvbXBpbGVBbGxEZXNjcmlwdGlvbikiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29tbWFuZD0nLVtXaW5WZXJdICQodmFyLkNvbXBpbGVBbGxDb21tYW5kKScKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlcGFpckNvbW1hbmQ9Jy1bV2luVmVyXSAkKHZhci5Db21waWxlQWxsQ29tbWFuZCknCisgICAgICAgICAgICAgICAgICAgICAgICBQZXJtYW5lbnQ9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFZpdGFsPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgQ29tcGlsZUFsbCBhbmQgbm90IExhdW5jaGVyT25seSIgLz4KKyAgICAgICAgICAgIDxFeGVQYWNrYWdlIElkPSJjb21waWxlYWxsT19BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InB5LmV4ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlOYW1lPSIhKGxvYy5Db21waWxlQWxsT0Rlc2NyaXB0aW9uKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb21tYW5kPSctW1dpblZlcl0gLU8gJCh2YXIuQ29tcGlsZUFsbENvbW1hbmQpJworICAgICAgICAgICAgICAgICAgICAgICAgUmVwYWlyQ29tbWFuZD0nLVtXaW5WZXJdIC1PICQodmFyLkNvbXBpbGVBbGxDb21tYW5kKScKKyAgICAgICAgICAgICAgICAgICAgICAgIFBlcm1hbmVudD0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgVml0YWw9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBDb21waWxlQWxsIGFuZCBub3QgTGF1bmNoZXJPbmx5IiAvPgorICAgICAgICAgICAgPEV4ZVBhY2thZ2UgSWQ9ImNvbXBpbGVhbGxPT19BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InB5LmV4ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlOYW1lPSIhKGxvYy5Db21waWxlQWxsT09EZXNjcmlwdGlvbikiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29tbWFuZD0nLVtXaW5WZXJdIC1PTyAkKHZhci5Db21waWxlQWxsQ29tbWFuZCknCisgICAgICAgICAgICAgICAgICAgICAgICBSZXBhaXJDb21tYW5kPSctW1dpblZlcl0gLU9PICQodmFyLkNvbXBpbGVBbGxDb21tYW5kKScKKyAgICAgICAgICAgICAgICAgICAgICAgIFBlcm1hbmVudD0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgVml0YWw9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBDb21waWxlQWxsIGFuZCBub3QgTGF1bmNoZXJPbmx5IiAvPgorCisgICAgICAgICAgICA8RXhlUGFja2FnZSBJZD0iY29tcGlsZWFsbF9KdXN0Rm9yTWUiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJweS5leGUiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5TmFtZT0iIShsb2MuQ29tcGlsZUFsbERlc2NyaXB0aW9uKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb21tYW5kPSctW1dpblZlcl0gJCh2YXIuQ29tcGlsZUFsbENvbW1hbmQpJworICAgICAgICAgICAgICAgICAgICAgICAgUmVwYWlyQ29tbWFuZD0nLVtXaW5WZXJdICQodmFyLkNvbXBpbGVBbGxDb21tYW5kKScKKyAgICAgICAgICAgICAgICAgICAgICAgIFBlcm1hbmVudD0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBWaXRhbD0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBDb21waWxlQWxsIGFuZCBub3QgTGF1bmNoZXJPbmx5IiAvPgorICAgICAgICAgICAgPEV4ZVBhY2thZ2UgSWQ9ImNvbXBpbGVhbGxPX0p1c3RGb3JNZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InB5LmV4ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlOYW1lPSIhKGxvYy5Db21waWxlQWxsT0Rlc2NyaXB0aW9uKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb21tYW5kPSctW1dpblZlcl0gLU8gJCh2YXIuQ29tcGlsZUFsbENvbW1hbmQpJworICAgICAgICAgICAgICAgICAgICAgICAgUmVwYWlyQ29tbWFuZD0nLVtXaW5WZXJdIC1PICQodmFyLkNvbXBpbGVBbGxDb21tYW5kKScKKyAgICAgICAgICAgICAgICAgICAgICAgIFBlcm1hbmVudD0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBWaXRhbD0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBDb21waWxlQWxsIGFuZCBub3QgTGF1bmNoZXJPbmx5IiAvPgorICAgICAgICAgICAgPEV4ZVBhY2thZ2UgSWQ9ImNvbXBpbGVhbGxPT19KdXN0Rm9yTWUiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJweS5leGUiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5TmFtZT0iIShsb2MuQ29tcGlsZUFsbE9PRGVzY3JpcHRpb24pIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbW1hbmQ9Jy1bV2luVmVyXSAtT08gJCh2YXIuQ29tcGlsZUFsbENvbW1hbmQpJworICAgICAgICAgICAgICAgICAgICAgICAgUmVwYWlyQ29tbWFuZD0nLVtXaW5WZXJdIC1PTyAkKHZhci5Db21waWxlQWxsQ29tbWFuZCknCisgICAgICAgICAgICAgICAgICAgICAgICBQZXJtYW5lbnQ9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgVml0YWw9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgQ29tcGlsZUFsbCBhbmQgbm90IExhdW5jaGVyT25seSIgLz4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy90Y2x0ay53eHMgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvdGNsdGsud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMDI5YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvdGNsdGsud3hzCkBAIC0wLDAgKzEsNjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJ0Y2x0ayI+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idGNsdGtfQWxsVXNlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJ0Y2x0ay5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVGZWF0dXJlU2VsZWN0aW9uPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfdGNsdGsgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idGNsdGtfQWxsVXNlcnNfcGRiIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idGNsdGtfcGRiLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzUERCKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZUZlYXR1cmVTZWxlY3Rpb249InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV90Y2x0ayBhbmQgSW5jbHVkZV9zeW1ib2xzIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InRjbHRrX0FsbFVzZXJzX2QiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJ0Y2x0a19kLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlRmVhdHVyZVNlbGVjdGlvbj0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX3RjbHRrIGFuZCBJbmNsdWRlX2RlYnVnIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorCisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idGNsdGtfSnVzdEZvck1lIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idGNsdGsubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVGZWF0dXJlU2VsZWN0aW9uPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX3RjbHRrIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InRjbHRrX0p1c3RGb3JNZV9wZGIiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJ0Y2x0a19wZGIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NQREIpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVGZWF0dXJlU2VsZWN0aW9uPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX3RjbHRrIGFuZCBJbmNsdWRlX3N5bWJvbHMgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idGNsdGtfSnVzdEZvck1lX2QiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJ0Y2x0a19kLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVGZWF0dXJlU2VsZWN0aW9uPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX3RjbHRrIGFuZCBJbmNsdWRlX2RlYnVnIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICA8L1BhY2thZ2VHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL3Rlc3Qud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL3Rlc3Qud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyYWNhZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvdGVzdC53eHMKQEAgLTAsMCArMSw2MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQYWNrYWdlR3JvdXAgSWQ9InRlc3QiPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InRlc3RfQWxsVXNlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJ0ZXN0Lm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV90ZXN0IGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InRlc3RfQWxsVXNlcnNfcGRiIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idGVzdF9wZGIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NQREIpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX3Rlc3QgYW5kIEluY2x1ZGVfc3ltYm9scyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJ0ZXN0X0FsbFVzZXJzX2QiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJ0ZXN0X2QubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0lfRCkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfdGVzdCBhbmQgSW5jbHVkZV9kZWJ1ZyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKworICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InRlc3RfSnVzdEZvck1lIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idGVzdC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfdGVzdCBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJ0ZXN0X0p1c3RGb3JNZV9wZGIiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJ0ZXN0X3BkYi5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc1BEQikiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfdGVzdCBhbmQgSW5jbHVkZV9zeW1ib2xzIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InRlc3RfSnVzdEZvck1lX2QiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJ0ZXN0X2QubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0lfRCkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfdGVzdCBhbmQgSW5jbHVkZV9kZWJ1ZyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy90b29scy53eHMgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvdG9vbHMud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkOWFiMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvdG9vbHMud3hzCkBAIC0wLDAgKzEsMjYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJ0b29scyI+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idG9vbHNfQWxsVXNlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJ0b29scy5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfdG9vbHMgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJ0b29sc19KdXN0Rm9yTWUiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJ0b29scy5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfdG9vbHMgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgIDwvUGFja2FnZUdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL3JlbGVhc2Vsb2NhbC53aXhwcm9qIGIvVG9vbHMvbXNpL2J1bmRsZS9yZWxlYXNlbG9jYWwud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzNkZWU3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9yZWxlYXNlbG9jYWwud2l4cHJvagpAQCAtMCwwICsxLDIxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57RkNENDNBQzktOTY5Ri00OUExLThBQzUtRURDMjc1OTlEMUVCfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxPdXRwdXROYW1lPnB5dGhvbjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFN1ZmZpeD48L091dHB1dFN1ZmZpeD4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKworICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8RGVmaW5lQ29uc3RhbnRzPgorICAgICAgICAgICAgJChEZWZpbmVDb25zdGFudHMpOworICAgICAgICAgICAgQ29tcHJlc3NNU0k9eWVzOworICAgICAgICAgICAgQ29tcHJlc3NQREI9bm87CisgICAgICAgICAgICBDb21wcmVzc01TSV9EPW5vCisgICAgICAgIDwvRGVmaW5lQ29uc3RhbnRzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9ImJ1bmRsZS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcmVsZWFzZXdlYi53aXhwcm9qIGIvVG9vbHMvbXNpL2J1bmRsZS9yZWxlYXNld2ViLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzUwYzczNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcmVsZWFzZXdlYi53aXhwcm9qCkBAIC0wLDAgKzEsMjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPns3MUNERTIxMy1DQjM5LTRCRDktQjg5RC1CQkI4Nzg2ODkxNDR9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPE91dHB1dE5hbWU+cHl0aG9uPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0U3VmZml4PndlYmluc3RhbGw8L091dHB1dFN1ZmZpeD4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKworICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8RGVmaW5lQ29uc3RhbnRzPgorICAgICAgICAgICAgJChEZWZpbmVDb25zdGFudHMpOworICAgICAgICAgICAgQ29tcHJlc3NNU0k9bm87CisgICAgICAgICAgICBDb21wcmVzc1BEQj1ubzsKKyAgICAgICAgICAgIENvbXByZXNzTVNJX0Q9bm8KKyAgICAgICAgPC9EZWZpbmVDb25zdGFudHM+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iYnVuZGxlLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9zbmFwc2hvdC53aXhwcm9qIGIvVG9vbHMvbXNpL2J1bmRsZS9zbmFwc2hvdC53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjNDUwNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3NuYXBzaG90LndpeHByb2oKQEAgLTAsMCArMSwyNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezhBNEExMTYyLTRCRjktNEZGNi05QTk4LTMxNUYwMUU0NDkzMn08L1Byb2plY3RHdWlkPgorICAgICAgICA8T3V0cHV0TmFtZT5weXRob248L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRTdWZmaXg+PC9PdXRwdXRTdWZmaXg+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisKKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cyBDb25kaXRpb249IickKFBhY2spJyAhPSAndHJ1ZSciPgorICAgICAgICAgICAgJChEZWZpbmVDb25zdGFudHMpO0NvbXByZXNzTVNJPW5vOworICAgICAgICA8L0RlZmluZUNvbnN0YW50cz4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cyBDb25kaXRpb249IickKFBhY2spJyA9PSAndHJ1ZSciPgorICAgICAgICAgICAgJChEZWZpbmVDb25zdGFudHMpO0NvbXByZXNzTVNJPXllczsKKyAgICAgICAgPC9EZWZpbmVDb25zdGFudHM+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHM+CisgICAgICAgICAgICAkKERlZmluZUNvbnN0YW50cyk7CisgICAgICAgICAgICBDb21wcmVzc1BEQj1ubzsKKyAgICAgICAgICAgIENvbXByZXNzTVNJX0Q9bm87CisgICAgICAgIDwvRGVmaW5lQ29uc3RhbnRzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9ImJ1bmRsZS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jb21tb24ud3hzIGIvVG9vbHMvbXNpL2NvbW1vbi53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkwNzg3MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9jb21tb24ud3hzCkBAIC0wLDAgKzEsMTEyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UHJvcGVydHkgSWQ9IlJFR0lTVFJZS0VZIiBWYWx1ZT0iU29mdHdhcmVcUHl0aG9uXFB5dGhvbkNvcmVcJCh2YXIuU2hvcnRWZXJzaW9uKSQodmFyLlB5QXJjaEV4dCkkKHZhci5QeVRlc3RFeHQpIiAvPgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50IElkPSJPcHRpb25hbEZlYXR1cmUiIEd1aWQ9IioiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSI+CisgICAgICAgICAgICA8Q29uZGl0aW9uPk9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWTwvQ29uZGl0aW9uPgorICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLTVUiIEtleT0iW09QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIFR5cGU9InN0cmluZyIgTmFtZT0iJCh2YXIuT3B0aW9uYWxGZWF0dXJlTmFtZSkiIFZhbHVlPSIkKHZhci5WZXJzaW9uKSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgPC9Db21wb25lbnQ+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQcm9wZXJ0eSBJZD0iVXBncmFkZVRhYmxlIiBWYWx1ZT0iMSIgLz4KKyAgICAgICAgCisgICAgICAgIDxVcGdyYWRlIElkPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIFByb3BlcnR5PSJET1dOR1JBREUiIE1pbmltdW09IiQodmFyLlZlcnNpb24pIiBJbmNsdWRlTWluaW11bT0ibm8iIE9ubHlEZXRlY3Q9InllcyIgLz4KKyAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBQcm9wZXJ0eT0iVVBHUkFERSIgTWluaW11bT0iJCh2YXIuVXBncmFkZU1pbmltdW1WZXJzaW9uKSIgSW5jbHVkZU1pbmltdW09InllcyIgTWF4aW11bT0iJCh2YXIuVmVyc2lvbikiIEluY2x1ZGVNYXhpbXVtPSJubyIgLz4KKyAgICAgICAgPC9VcGdyYWRlPgorICAgICAgICAKKyAgICAgICAgPD9pZiAkKHZhci5VcGdyYWRlQ29kZSkhPSQodmFyLkNvcmVVcGdyYWRlQ29kZSkgPz4KKyAgICAgICAgPD9pZm5kZWYgU2tpcE1pc3NpbmdDb3JlID8+CisgICAgICAgIDxVcGdyYWRlIElkPSIkKHZhci5Db3JlVXBncmFkZUNvZGUpIj4KKyAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBQcm9wZXJ0eT0iTUlTU0lOR19DT1JFIiBNaW5pbXVtPSIkKHZhci5WZXJzaW9uKSIgSW5jbHVkZU1pbmltdW09InllcyIgTWF4aW11bT0iJCh2YXIuVmVyc2lvbikiIEluY2x1ZGVNYXhpbXVtPSJ5ZXMiIE9ubHlEZXRlY3Q9InllcyIgLz4KKyAgICAgICAgPC9VcGdyYWRlPgorICAgICAgICA8Q29uZGl0aW9uIE1lc3NhZ2U9IiEobG9jLkluY29ycmVjdENvcmUpIj5JbnN0YWxsZWQgT1IgTk9UIE1JU1NJTkdfQ09SRTwvQ29uZGl0aW9uPgorICAgICAgICA8P2VuZGlmID8+CisgICAgICAgIDw/ZW5kaWYgPz4KKyAgICAgICAgCisgICAgICAgIDxDb25kaXRpb24gTWVzc2FnZT0iIShsb2MuTm9Eb3duZ3JhZGUpIj5JbnN0YWxsZWQgT1IgTk9UIERPV05HUkFERTwvQ29uZGl0aW9uPgorICAgICAgICA8Q29uZGl0aW9uIE1lc3NhZ2U9IiEobG9jLk5vVGFyZ2V0RGlyKSI+SW5zdGFsbGVkIE9SIFRBUkdFVERJUiBPUiBTdXBwcmVzc19UQVJHRVRESVJfQ2hlY2s8L0NvbmRpdGlvbj4KKworICAgICAgICA8SW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZT4KKyAgICAgICAgICAgIDxSZW1vdmVFeGlzdGluZ1Byb2R1Y3RzIEFmdGVyPSJJbnN0YWxsSW5pdGlhbGl6ZSIgT3ZlcnJpZGFibGU9InllcyI+VVBHUkFERTwvUmVtb3ZlRXhpc3RpbmdQcm9kdWN0cz4KKyAgICAgICAgPC9JbnN0YWxsRXhlY3V0ZVNlcXVlbmNlPgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPEZyYWdtZW50PgorICAgICAgICA8IS0tIEluY2x1ZGUgYW4gaWNvbiBmb3IgdGhlIFByb2dyYW1zIGFuZCBGZWF0dXJlcyBkaWFsb2cgLS0+CisgICAgICAgIDxJY29uIElkPSJBUlBJY29uIiBTb3VyY2VGaWxlPSIhKGJpbmRwYXRoLnNyYylQQ1xweWNvbi5pY28iIC8+CisgICAgICAgIDxQcm9wZXJ0eSBJZD0iQVJQUFJPRFVDVElDT04iIFZhbHVlPSJBUlBJY29uIiAvPgorICAgICAgICA8UHJvcGVydHkgSWQ9IkFSUE5PTU9ESUZZIiBWYWx1ZT0iMSIgLz4KKyAgICAgICAgPFByb3BlcnR5IElkPSJESVNBQkxFQURWVFNIT1JUQ1VUUyIgVmFsdWU9IjEiIC8+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxEaXJlY3RvcnkgSWQ9IlRBUkdFVERJUiIgTmFtZT0iU291cmNlRGlyIj4KKyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9Ikluc3RhbGxEaXJlY3RvcnkiIENvbXBvbmVudEd1aWRHZW5lcmF0aW9uU2VlZD0iJCh2YXIuSW5zdGFsbERpcmVjdG9yeUd1aWRTZWVkKSIgLz4KKyAgICAgICAgPC9EaXJlY3Rvcnk+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8IS0tIFRvcC1sZXZlbCBkaXJlY3RvcmllcyAtLT4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9Ikluc3RhbGxEaXJlY3RvcnkiPgorICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iRExMcyIgTmFtZT0iRExMcyIgLz4KKyAgICAgICAgPC9EaXJlY3RvcnlSZWY+CisgICAgPC9GcmFnbWVudD4KKworICAgIDxGcmFnbWVudD4KKyAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0iSW5zdGFsbERpcmVjdG9yeSI+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJEb2MiIE5hbWU9IkRvYyIgLz4KKyAgICAgICAgPC9EaXJlY3RvcnlSZWY+CisgICAgPC9GcmFnbWVudD4KKworICAgIDxGcmFnbWVudD4KKyAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0iSW5zdGFsbERpcmVjdG9yeSI+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJpbmNsdWRlIiBOYW1lPSJpbmNsdWRlIiAvPgorICAgICAgICA8L0RpcmVjdG9yeVJlZj4KKyAgICA8L0ZyYWdtZW50PgorCisgICAgPEZyYWdtZW50PgorICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJJbnN0YWxsRGlyZWN0b3J5Ij4KKyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9IkxpYiIgTmFtZT0iTGliIiAvPgorICAgICAgICA8L0RpcmVjdG9yeVJlZj4KKyAgICA8L0ZyYWdtZW50PgorCisgICAgPEZyYWdtZW50PgorICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJJbnN0YWxsRGlyZWN0b3J5Ij4KKyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9ImxpYnMiIE5hbWU9ImxpYnMiIC8+CisgICAgICAgIDwvRGlyZWN0b3J5UmVmPgorICAgIDwvRnJhZ21lbnQ+CisKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9Ikluc3RhbGxEaXJlY3RvcnkiPgorICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iU2NyaXB0cyIgTmFtZT0iU2NyaXB0cyIgLz4KKyAgICAgICAgPC9EaXJlY3RvcnlSZWY+CisgICAgPC9GcmFnbWVudD4KKworICAgIDxGcmFnbWVudD4KKyAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0iSW5zdGFsbERpcmVjdG9yeSI+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJ0Y2wiIE5hbWU9InRjbCIgLz4KKyAgICAgICAgPC9EaXJlY3RvcnlSZWY+CisgICAgPC9GcmFnbWVudD4KKworICAgIDxGcmFnbWVudD4KKyAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0iSW5zdGFsbERpcmVjdG9yeSI+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJUb29scyIgTmFtZT0iVG9vbHMiIC8+CisgICAgICAgIDwvRGlyZWN0b3J5UmVmPgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPCEtLSBTdGFydCBNZW51IGZvbGRlciAtLT4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9IlRBUkdFVERJUiI+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJQcm9ncmFtTWVudUZvbGRlciI+CisgICAgICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iTWVudURpciIgTmFtZT0iIShsb2MuUHJvZHVjdE5hbWUpIiAvPgorICAgICAgICAgICAgPC9EaXJlY3Rvcnk+CisgICAgICAgIDwvRGlyZWN0b3J5UmVmPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jb21tb25fZW4tVVMud3hsX3RlbXBsYXRlIGIvVG9vbHMvbXNpL2NvbW1vbl9lbi1VUy53eGxfdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQwMzUyNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9jb21tb25fZW4tVVMud3hsX3RlbXBsYXRlCkBAIC0wLDAgKzEsMTcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICAgIDxTdHJpbmcgSWQ9IkxDSUQiPjEwMzM8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJDdWx0dXJlIj5lbi11czwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlByb2R1Y3ROYW1lIj5QeXRob24ge3tTaG9ydFZlcnNpb259fTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IkZ1bGxQcm9kdWN0TmFtZSI+UHl0aG9uIHt7TG9uZ1ZlcnNpb259fSAoe3tCaXRuZXNzfX0pPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iVGl0bGUiPlB5dGhvbiB7e0xvbmdWZXJzaW9ufX0gIShsb2MuRGVzY3JpcHRvcikgKHt7Qml0bmVzc319KTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IkRlc2NyaXB0aW9uIj5QeXRob24ge3tMb25nVmVyc2lvbn19ICEobG9jLkRlc2NyaXB0b3IpICh7e0JpdG5lc3N9fSk8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJUaXRsZVBkYiI+UHl0aG9uIHt7TG9uZ1ZlcnNpb259fSAhKGxvYy5EZXNjcmlwdG9yKSAoe3tCaXRuZXNzfX0gc3ltYm9scyk8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdGlvblBkYiI+UHl0aG9uIHt7TG9uZ1ZlcnNpb259fSAhKGxvYy5EZXNjcmlwdG9yKSAoe3tCaXRuZXNzfX0gc3ltYm9scyk8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJUaXRsZV9kIj5QeXRob24ge3tMb25nVmVyc2lvbn19ICEobG9jLkRlc2NyaXB0b3IpICh7e0JpdG5lc3N9fSBkZWJ1Zyk8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdGlvbl9kIj5QeXRob24ge3tMb25nVmVyc2lvbn19ICEobG9jLkRlc2NyaXB0b3IpICh7e0JpdG5lc3N9fSBkZWJ1Zyk8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJNYW51ZmFjdHVyZXIiPlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iTm9Eb3duZ3JhZGUiPkEgbmV3ZXIgdmVyc2lvbiBvZiAhKGxvYy5Qcm9kdWN0TmFtZSkgaXMgYWxyZWFkeSBpbnN0YWxsZWQuPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iSW5jb3JyZWN0Q29yZSI+QW4gaW5jb3JyZWN0IHZlcnNpb24gb2YgYSBwcmVyZXF1aXNpdGUgcGFja2FnZSBpcyBpbnN0YWxsZWQuIFBsZWFzZSB1bmluc3RhbGwgYW55IG90aGVyIHZlcnNpb25zIG9mICEobG9jLlByb2R1Y3ROYW1lKSBhbmQgdHJ5IGluc3RhbGxpbmcgdGhpcyBhZ2Fpbi48L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJOb1RhcmdldERpciI+VGhlIFRBUkdFVERJUiB2YXJpYWJsZSBtdXN0IGJlIHByb3ZpZGVkIHdoZW4gaW52b2tpbmcgdGhpcyBpbnN0YWxsZXIuPC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jb3JlL2NvcmUud2l4cHJvaiBiL1Rvb2xzL21zaS9jb3JlL2NvcmUud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGU4YmFiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2NvcmUvY29yZS53aXhwcm9qCkBAIC0wLDAgKzEsMTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPnsxQjQ1MDJENS1CNjI3LTRGNTAtQUJFQS00Q0M1QThFODgyNjV9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5jb3JlPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJjb3JlLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iY29yZV9maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jb3JlL2NvcmUud3hzIGIvVG9vbHMvbXNpL2NvcmUvY29yZS53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ0ZmJkZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9jb3JlL2NvcmUud3hzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImNvcmVfZGxsIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY29yZS9jb3JlX2Qud2l4cHJvaiBiL1Rvb2xzL21zaS9jb3JlL2NvcmVfZC53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMjk2YmYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvY29yZS9jb3JlX2Qud2l4cHJvagpAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57RDM2NzdEQ0YtMDk4QS00Mzk4LTlGQTUtOEU3NEFDMzdFMERGfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+Y29yZV9kPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJjb3JlX2Qud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJjb3JlX2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKworICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2NvcmUvY29yZV9kLnd4cyBiL1Rvb2xzL21zaS9jb3JlL2NvcmVfZC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdlMDM5NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9jb3JlL2NvcmVfZC53eHMKQEAgLTAsMCArMSwxNCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlX2QpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlYnVnQmluYXJpZXMiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlX2QpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb25fZCkiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJjb3JlX2RsbF9kIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudFJlZiBJZD0iT3B0aW9uYWxGZWF0dXJlIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY29yZS9jb3JlX2VuLVVTLnd4bCBiL1Rvb2xzL21zaS9jb3JlL2NvcmVfZW4tVVMud3hsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5Nzc0NzAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvY29yZS9jb3JlX2VuLVVTLnd4bApAQCAtMCwwICsxLDUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICAgIDxTdHJpbmcgSWQ9IkRlc2NyaXB0b3IiPkNvcmUgSW50ZXJwcmV0ZXI8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJTaG9ydERlc2NyaXB0b3IiPmNvcmU8L1N0cmluZz4KKzwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2NvcmUvY29yZV9maWxlcy53eHMgYi9Ub29scy9tc2kvY29yZS9jb3JlX2ZpbGVzLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDVlMTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2NvcmUvY29yZV9maWxlcy53eHMKQEAgLTAsMCArMSwzMSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJjb3JlX2RsbCI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob25fc3RhYmxlLmRsbCIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0icHl0aG9uX3N0YWJsZS5kbGwiIE5hbWU9InB5dGhvbiQodmFyLk1ham9yVmVyc2lvbk51bWJlcikuZGxsIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5dGhvbi5kbGwiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9InB5dGhvbi5kbGwiIE5hbWU9InB5dGhvbiQodmFyLk1ham9yVmVyc2lvbk51bWJlcikkKHZhci5NaW5vclZlcnNpb25OdW1iZXIpLmRsbCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iY29yZV9zeW1ib2xzIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5dGhvbi5wZGIiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9InB5dGhvbi5wZGIiIE5hbWU9InB5dGhvbiQodmFyLk1ham9yVmVyc2lvbk51bWJlcikkKHZhci5NaW5vclZlcnNpb25OdW1iZXIpLnBkYiIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iY29yZV9kbGxfZCI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob25fc3RhYmxlX2QuZGxsIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJweXRob25fc3RhYmxlX2QuZGxsIiBOYW1lPSJweXRob24kKHZhci5NYWpvclZlcnNpb25OdW1iZXIpX2QuZGxsIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5dGhvbl9kLmRsbCIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0icHl0aG9uX2QuZGxsIiBOYW1lPSJweXRob24kKHZhci5NYWpvclZlcnNpb25OdW1iZXIpJCh2YXIuTWlub3JWZXJzaW9uTnVtYmVyKV9kLmRsbCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJweXRob25fZC5wZGIiIE5hbWU9InB5dGhvbiQodmFyLk1ham9yVmVyc2lvbk51bWJlcikkKHZhci5NaW5vclZlcnNpb25OdW1iZXIpX2QucGRiIiBLZXlQYXRoPSJubyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jb3JlL2NvcmVfcGRiLndpeHByb2ogYi9Ub29scy9tc2kvY29yZS9jb3JlX3BkYi53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljODgzODkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvY29yZS9jb3JlX3BkYi53aXhwcm9qCkBAIC0wLDAgKzEsMTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPntFOThFNzUzOS02NEU3LTREQ0UtQUFDRC0wMUUzQURFNDBFRkR9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5jb3JlX3BkYjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iY29yZV9wZGIud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJjb3JlX2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKworICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2NvcmUvY29yZV9wZGIud3hzIGIvVG9vbHMvbXNpL2NvcmUvY29yZV9wZGIud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyYzMxNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvY29yZS9jb3JlX3BkYi53eHMKQEAgLTAsMCArMSwxNCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlUGRiKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJTeW1ib2xzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZVBkYikiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvblBkYikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJjb3JlX3N5bWJvbHMiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50UmVmIElkPSJPcHRpb25hbEZlYXR1cmUiIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jc3ZfdG9fd3hzLnB5IGIvVG9vbHMvbXNpL2Nzdl90b193eHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM1YzhmOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9jc3ZfdG9fd3hzLnB5CkBAIC0wLDAgKzEsMTI3IEBACisnJycKK1Byb2Nlc3NlcyBhIENTViBmaWxlIGNvbnRhaW5pbmcgYSBsaXN0IG9mIGZpbGVzIGludG8gYSBXWFMgZmlsZSB3aXRoCitjb21wb25lbnRzIGZvciBlYWNoIGxpc3RlZCBmaWxlLgorCitUaGUgQ1NWIGNvbHVtbnMgYXJlOgorICAgIHNvdXJjZSBvZiBmaWxlLCB0YXJnZXQgZm9yIGZpbGUsIGdyb3VwIG5hbWUKKworVXNhZ2U6OgorICAgIHB5IHR4dF90b193eHMucHkgW3BhdGggdG8gZmlsZSBsaXN0IC5jc3ZdIFtwYXRoIHRvIGRlc3RpbmF0aW9uIC53eHNdCisKK1RoaXMgaXMgbmVjZXNzYXJ5IHRvIGhhbmRsZSBzdHJ1Y3R1cmVzIHdoZXJlIHNvbWUgZGlyZWN0b3JpZXMgb25seQorY29udGFpbiBvdGhlciBkaXJlY3Rvcmllcy4gTVNCdWlsZCBpcyBub3QgYWJsZSB0byBnZW5lcmF0ZSB0aGUKK0RpcmVjdG9yeSBlbnRyaWVzIGluIHRoZSBXWFMgZmlsZSBjb3JyZWN0bHksIGFzIGl0IG9wZXJhdGVzIG9uIGZpbGVzLgorUHl0aG9uLCBob3dldmVyLCBjYW4gZWFzaWx5IGZpbGwgaW4gdGhlIGdhcC4KKycnJworCitfX2F1dGhvcl9fID0gIlN0ZXZlIERvd2VyIDxzdGV2ZS5kb3dlckBtaWNyb3NvZnQuY29tPiIKKworaW1wb3J0IGNzdgoraW1wb3J0IHJlCitpbXBvcnQgc3lzCisKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0Citmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY2hhaW4sIHppcF9sb25nZXN0Citmcm9tIHBhdGhsaWIgaW1wb3J0IFB1cmVXaW5kb3dzUGF0aAorZnJvbSB1dWlkIGltcG9ydCB1dWlkMQorCitJRF9DSEFSX1NVQlMgPSB7CisgICAgJy0nOiAnXycsCisgICAgJysnOiAnX1AnLAorfQorCitkZWYgbWFrZV9pZChwYXRoKToKKyAgICByZXR1cm4gcmUuc3ViKAorICAgICAgICByJ1teQS1aYS16MC05Xy5dJywKKyAgICAgICAgbGFtYmRhIG06IElEX0NIQVJfU1VCUy5nZXQobS5ncm91cCgwKSwgJ18nKSwKKyAgICAgICAgc3RyKHBhdGgpLnJzdHJpcCgnL1xcJyksCisgICAgICAgIGZsYWdzPXJlLkkKKyAgICApCisKK0RJUkVDVE9SSUVTID0gc2V0KCkKKworZGVmIG1haW4oZmlsZV9zb3VyY2UsIGluc3RhbGxfdGFyZ2V0KToKKyAgICB3aXRoIG9wZW4oZmlsZV9zb3VyY2UsICdyJywgbmV3bGluZT0nJykgYXMgZjoKKyAgICAgICAgZmlsZXMgPSBsaXN0KGNzdi5yZWFkZXIoZikpCisKKyAgICBhc3NlcnQgbGVuKGZpbGVzKSA9PSBsZW4oc2V0KG1ha2VfaWQoZlsxXSkgZm9yIGYgaW4gZmlsZXMpKSwgIkR1cGxpY2F0ZSBmaWxlIElEcyBleGlzdCIKKworICAgIGRpcmVjdG9yaWVzID0gZGVmYXVsdGRpY3Qoc2V0KQorICAgIGNhY2hlX2RpcmVjdG9yaWVzID0gZGVmYXVsdGRpY3Qoc2V0KQorICAgIGdyb3VwcyA9IGRlZmF1bHRkaWN0KGxpc3QpCisgICAgZm9yIHNvdXJjZSwgdGFyZ2V0LCBncm91cCwgZGlza19pZCwgY29uZGl0aW9uIGluIGZpbGVzOgorICAgICAgICB0YXJnZXQgPSBQdXJlV2luZG93c1BhdGgodGFyZ2V0KQorICAgICAgICBncm91cHNbZ3JvdXBdLmFwcGVuZCgoc291cmNlLCB0YXJnZXQsIGRpc2tfaWQsIGNvbmRpdGlvbikpCisKKyAgICAgICAgaWYgdGFyZ2V0LnN1ZmZpeC5sb3dlcigpIGluIHsiLnB5IiwgIi5weXcifToKKyAgICAgICAgICAgIGNhY2hlX2RpcmVjdG9yaWVzW2dyb3VwXS5hZGQodGFyZ2V0LnBhcmVudCkKKworICAgICAgICBmb3IgZGlybmFtZSBpbiB0YXJnZXQucGFyZW50czoKKyAgICAgICAgICAgIHBhcmVudCA9IG1ha2VfaWQoZGlybmFtZS5wYXJlbnQpCisgICAgICAgICAgICBpZiBwYXJlbnQgYW5kIHBhcmVudCAhPSAnLic6CisgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXNbcGFyZW50XS5hZGQoZGlybmFtZS5uYW1lKQorCisgICAgbGluZXMgPSBbCisgICAgICAgICc8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4nLAorICAgICAgICAnICAgIDxGcmFnbWVudD4nLAorICAgIF0KKyAgICBmb3IgZGlyX3BhcmVudCBpbiBzb3J0ZWQoZGlyZWN0b3JpZXMpOgorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0ie30iPicuZm9ybWF0KGRpcl9wYXJlbnQpKQorICAgICAgICBmb3IgZGlyX25hbWUgaW4gc29ydGVkKGRpcmVjdG9yaWVzW2Rpcl9wYXJlbnRdKToKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0ie31fe30iIE5hbWU9Int9IiAvPicuZm9ybWF0KGRpcl9wYXJlbnQsIG1ha2VfaWQoZGlyX25hbWUpLCBkaXJfbmFtZSkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICA8L0RpcmVjdG9yeVJlZj4nKQorICAgIGZvciBkaXJfcGFyZW50IGluIChtYWtlX2lkKGQpIGZvciBncm91cCBpbiBjYWNoZV9kaXJlY3Rvcmllcy52YWx1ZXMoKSBmb3IgZCBpbiBncm91cCk6CisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJ7fSI+Jy5mb3JtYXQoZGlyX3BhcmVudCkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0ie31fX19weWNhY2hlX18iIE5hbWU9Il9fcHljYWNoZV9fIiAvPicuZm9ybWF0KGRpcl9wYXJlbnQpKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgPC9EaXJlY3RvcnlSZWY+JykKKyAgICBsaW5lcy5hcHBlbmQoJyAgICA8L0ZyYWdtZW50PicpCisKKyAgICBmb3IgZ3JvdXAgaW4gc29ydGVkKGdyb3Vwcyk6CisgICAgICAgIGxpbmVzLmV4dGVuZChbCisgICAgICAgICAgICAnICAgIDxGcmFnbWVudD4nLAorICAgICAgICAgICAgJyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJ7fSI+Jy5mb3JtYXQoZ3JvdXApLAorICAgICAgICBdKQorICAgICAgICBmb3Igc291cmNlLCB0YXJnZXQsIGRpc2tfaWQsIGNvbmRpdGlvbiBpbiBncm91cHNbZ3JvdXBdOgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJ7fSIgRGlyZWN0b3J5PSJ7fSIgR3VpZD0iKiI+Jy5mb3JtYXQobWFrZV9pZCh0YXJnZXQpLCBtYWtlX2lkKHRhcmdldC5wYXJlbnQpKSkKKyAgICAgICAgICAgIGlmIGNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPnt9PC9Db25kaXRpb24+Jy5mb3JtYXQoY29uZGl0aW9uKSkKKworICAgICAgICAgICAgaWYgZGlza19pZDoKKyAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgICAgICAgICA8RmlsZSBJZD0ie30iIE5hbWU9Int9IiBTb3VyY2U9Int9IiBEaXNrSWQ9Int9IiAvPicuZm9ybWF0KG1ha2VfaWQodGFyZ2V0KSwgdGFyZ2V0Lm5hbWUsIHNvdXJjZSwgZGlza19pZCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgICAgIDxGaWxlIElkPSJ7fSIgTmFtZT0ie30iIFNvdXJjZT0ie30iIC8+Jy5mb3JtYXQobWFrZV9pZCh0YXJnZXQpLCB0YXJnZXQubmFtZSwgc291cmNlKSkKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgPC9Db21wb25lbnQ+JykKKworICAgICAgICBjcmVhdGVfZm9sZGVycyA9IHttYWtlX2lkKHApICsgIl9fX3B5Y2FjaGVfXyIgZm9yIHAgaW4gY2FjaGVfZGlyZWN0b3JpZXNbZ3JvdXBdfQorICAgICAgICByZW1vdmVfZm9sZGVycyA9IHttYWtlX2lkKHAyKSBmb3IgcDEgaW4gY2FjaGVfZGlyZWN0b3JpZXNbZ3JvdXBdIGZvciBwMiBpbiBjaGFpbigocDEsKSwgcDEucGFyZW50cyl9CisgICAgICAgIGNyZWF0ZV9mb2xkZXJzLmRpc2NhcmQoIi4iKQorICAgICAgICByZW1vdmVfZm9sZGVycy5kaXNjYXJkKCIuIikKKyAgICAgICAgaWYgY3JlYXRlX2ZvbGRlcnMgb3IgcmVtb3ZlX2ZvbGRlcnM6CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Int9X19weWNhY2hlX19mb2xkZXJzIiBEaXJlY3Rvcnk9IlRBUkdFVERJUiIgR3VpZD0ie30iPicuZm9ybWF0KGdyb3VwLCB1dWlkMSgpKSkKKyAgICAgICAgICAgIGxpbmVzLmV4dGVuZCgnICAgICAgICAgICAgICAgIDxDcmVhdGVGb2xkZXIgRGlyZWN0b3J5PSJ7fSIgLz4nLmZvcm1hdChwKSBmb3IgcCBpbiBjcmVhdGVfZm9sZGVycykKKyAgICAgICAgICAgIGxpbmVzLmV4dGVuZCgnICAgICAgICAgICAgICAgIDxSZW1vdmVGaWxlIElkPSJSZW1vdmVfezB9X2ZpbGVzIiBOYW1lPSIqIiBPbj0idW5pbnN0YWxsIiBEaXJlY3Rvcnk9InswfSIgLz4nLmZvcm1hdChwKSBmb3IgcCBpbiBjcmVhdGVfZm9sZGVycykKKyAgICAgICAgICAgIGxpbmVzLmV4dGVuZCgnICAgICAgICAgICAgICAgIDxSZW1vdmVGb2xkZXIgSWQ9IlJlbW92ZV97MH1fZm9sZGVyIiBPbj0idW5pbnN0YWxsIiBEaXJlY3Rvcnk9InswfSIgLz4nLmZvcm1hdChwKSBmb3IgcCBpbiBjcmVhdGVfZm9sZGVycyB8IHJlbW92ZV9mb2xkZXJzKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICA8L0NvbXBvbmVudD4nKQorCisgICAgICAgIGxpbmVzLmV4dGVuZChbCisgICAgICAgICAgICAnICAgICAgICA8L0NvbXBvbmVudEdyb3VwPicsCisgICAgICAgICAgICAnICAgIDwvRnJhZ21lbnQ+JywKKyAgICAgICAgXSkKKyAgICBsaW5lcy5hcHBlbmQoJzwvV2l4PicpCisKKyAgICAjIENoZWNrIGlmIHRoZSBmaWxlIG1hdGNoZXMuIElmIHNvLCB3ZSBkb24ndCB3YW50IHRvIHRvdWNoIGl0IHNvCisgICAgIyB0aGF0IHdlIGNhbiBza2lwIHJlYnVpbGRpbmcuCisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4oaW5zdGFsbF90YXJnZXQsICdyJykgYXMgZjoKKyAgICAgICAgICAgIGlmIGFsbCh4LnJzdHJpcCgnXHJcbicpID09IHkgZm9yIHgsIHkgaW4gemlwX2xvbmdlc3QoZiwgbGluZXMpKToKKyAgICAgICAgICAgICAgICBwcmludCgnRmlsZSBpcyB1cCB0byBkYXRlJykKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgcGFzcworCisgICAgd2l0aCBvcGVuKGluc3RhbGxfdGFyZ2V0LCAndycpIGFzIGY6CisgICAgICAgIGYud3JpdGVsaW5lcyhsaW5lICsgJ1xuJyBmb3IgbGluZSBpbiBsaW5lcykKKyAgICBwcmludCgnV3JvdGUge30gbGluZXMgdG8ge30nLmZvcm1hdChsZW4obGluZXMpLCBpbnN0YWxsX3RhcmdldCkpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgbWFpbihzeXMuYXJndlsxXSwgc3lzLmFyZ3ZbMl0pCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZGV2L2Rldi53aXhwcm9qIGIvVG9vbHMvbXNpL2Rldi9kZXYud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODJiNjYwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2Rldi9kZXYud2l4cHJvagpAQCAtMCwwICsxLDQ5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57NUYyM0Y2MDgtRDc0Qi00MjU5LUEwQ0UtOERDNjVDQzdGRTUzfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWUgQ29uZGl0aW9uPSInJChPdXRwdXROYW1lKScgPT0gJyciPmRldjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHMgQ29uZGl0aW9uPSIkKEJ1aWxkRm9yUmVsZWFzZSkiPgorICAgICAgICAgICAgJChEZWZpbmVDb25zdGFudHMpOworICAgICAgICAgICAgSW5jbHVkZU1pbkdXTGliPTE7CisgICAgICAgIDwvRGVmaW5lQ29uc3RhbnRzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJkZXYud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJkZXZfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxJbnN0YWxsRmlsZXMgSW5jbHVkZT0iJChQeVNvdXJjZVBhdGgpaW5jbHVkZVwqLmgiPgorICAgICAgICAgICAgPFNvdXJjZUJhc2U+JChQeVNvdXJjZVBhdGgpPC9Tb3VyY2VCYXNlPgorICAgICAgICAgICAgPFNvdXJjZT4hKGJpbmRwYXRoLnNyYyk8L1NvdXJjZT4KKyAgICAgICAgICAgIDxUYXJnZXRCYXNlPiQoUHlTb3VyY2VQYXRoKTwvVGFyZ2V0QmFzZT4KKyAgICAgICAgICAgIDxUYXJnZXRfPjwvVGFyZ2V0Xz4KKyAgICAgICAgICAgIDxHcm91cD5kZXZfaW5jbHVkZTwvR3JvdXA+CisgICAgICAgIDwvSW5zdGFsbEZpbGVzPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxUYXJnZXQgTmFtZT0iQnVpbGRNaW5HV0xpYiIKKyAgICAgICAgICAgIElucHV0cz0iJChCdWlsZFBhdGgpJChQeURsbE5hbWUpLmRsbCIKKyAgICAgICAgICAgIE91dHB1dHM9IiQoQnVpbGRQYXRoKWxpYiQoUHlEbGxOYW1lKS5hIgorICAgICAgICAgICAgQWZ0ZXJUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiCisgICAgICAgICAgICBDb25kaXRpb249IiQoQnVpbGRGb3JSZWxlYXNlKSI+CisgICAgICAgIDwhLS0gQnVpbGQgbGlicHl0aG9uIyMuYSBhcyBwYXJ0IG9mIHRoaXMgcHJvamVjdC4gVGhpcyByZXF1aXJlcyBnZW5kZWYgYW5kIGRsbHRvb2wgb24gdGhlIHBhdGguIC0tPgorICAgICAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgICAgIDxfRGxsVG9vbE9wdHM+LW0gaTM4NiAtLWFzLWZsYWdzPS0tMzI8L19EbGxUb29sT3B0cz4KKyAgICAgICAgICAgIDxfRGxsVG9vbE9wdHMgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAneDY0JyI+LW0gaTM4Njp4ODYtNjQ8L19EbGxUb29sT3B0cz4KKyAgICAgICAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgICAgICAgIDxFeGVjIENvbW1hbmQ9J2dlbmRlZiAtICIkKEJ1aWxkUGF0aCkkKFB5RGxsTmFtZSkuZGxsIiAmZ3Q7ICIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpbWluZ3dsaWIuZGVmIicgQ29udGludWVPbkVycm9yPSJmYWxzZSIgLz4KKyAgICAgICAgPEV4ZWMgQ29tbWFuZD0nZGxsdG9vbCAtLWRsbG5hbWUgJChQeURsbE5hbWUpLmRsbCAtLWRlZiAiJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKW1pbmd3bGliLmRlZiIgLS1vdXRwdXQtbGliICIkKEJ1aWxkUGF0aClsaWIkKFB5RGxsTmFtZSkuYSIgJChfRGxsVG9vbE9wdHMpJyAvPgorICAgIDwvVGFyZ2V0PgorCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZGV2L2Rldi53eHMgYi9Ub29scy9tc2kvZGV2L2Rldi53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA5ZTEzOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9kZXYvZGV2Lnd4cwpAQCAtMCwwICsxLDE5IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGUpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJkZXZfaW5jbHVkZSIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZGV2X3B5Y29uZmlnIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJkZXZfbGlicyIgLz4KKzw/aWZkZWYgSW5jbHVkZU1pbkdXTGliID8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImRldl9taW5ndyIgLz4KKzw/ZW5kaWYgPz4KKyAgICAgICAgICAgIDxDb21wb25lbnRSZWYgSWQ9Ik9wdGlvbmFsRmVhdHVyZSIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2Rldi9kZXZfZC53aXhwcm9qIGIvVG9vbHMvbXNpL2Rldi9kZXZfZC53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYjA1MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZGV2L2Rldl9kLndpeHByb2oKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+e0MxMUI0OTQ1LTc2QkQtNDEzNy1CMkUzLTY0OTQ2MDExN0E3N308L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPmRldl9kPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJkZXZfZC53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImRldl9maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9kZXYvZGV2X2Qud3hzIGIvVG9vbHMvbXNpL2Rldi9kZXZfZC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ2N2FhYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9kZXYvZGV2X2Qud3hzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZV9kKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJEZWJ1Z0JpbmFyaWVzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZV9kKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uX2QpIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZGV2X2xpYnNfZCIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2Rldi9kZXZfZW4tVVMud3hsIGIvVG9vbHMvbXNpL2Rldi9kZXZfZW4tVVMud3hsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NDZlMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZGV2L2Rldl9lbi1VUy53eGwKQEAgLTAsMCArMSw1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5EZXZlbG9wbWVudCBMaWJyYXJpZXM8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJTaG9ydERlc2NyaXB0b3IiPmRldjwvU3RyaW5nPgorPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZGV2L2Rldl9maWxlcy53eHMgYi9Ub29scy9tc2kvZGV2L2Rldl9maWxlcy53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY1NGQyZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9kZXYvZGV2X2ZpbGVzLnd4cwpAQCAtMCwwICsxLDQyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImRldl9weWNvbmZpZyI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJpbmNsdWRlX3B5Y29uZmlnLmgiIERpcmVjdG9yeT0iaW5jbHVkZSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9ImluY2x1ZGVfcHljb25maWcuaCIgTmFtZT0icHljb25maWcuaCIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylQQ1xweWNvbmZpZy5oIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJkZXZfbGlicyI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJsaWJzX3B5dGhvbjMubGliIiBEaXJlY3Rvcnk9ImxpYnMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJsaWJzX3B5dGhvbl9zdGFibGUubGliIiBOYW1lPSJweXRob24kKHZhci5NYWpvclZlcnNpb25OdW1iZXIpLmxpYiIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJsaWJzX3B5dGhvbi5saWIiIERpcmVjdG9yeT0ibGlicyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9ImxpYnNfcHl0aG9uLmxpYiIgTmFtZT0icHl0aG9uJCh2YXIuTWFqb3JWZXJzaW9uTnVtYmVyKSQodmFyLk1pbm9yVmVyc2lvbk51bWJlcikubGliIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJkZXZfbGlic19kIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImxpYnNfcHl0aG9uM19kLmxpYiIgRGlyZWN0b3J5PSJsaWJzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0ibGlic19weXRob25fc3RhYmxlX2QubGliIiBOYW1lPSJweXRob24kKHZhci5NYWpvclZlcnNpb25OdW1iZXIpX2QubGliIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJsaWJzX3B5dGhvbl9kLmxpYiIgRGlyZWN0b3J5PSJsaWJzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0ibGlic19weXRob25fZC5saWIiIE5hbWU9InB5dGhvbiQodmFyLk1ham9yVmVyc2lvbk51bWJlcikkKHZhci5NaW5vclZlcnNpb25OdW1iZXIpX2QubGliIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8P2lmZGVmIEluY2x1ZGVNaW5HV0xpYiA/PgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJkZXZfbWluZ3ciPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0ibGlic19saWJweXRob24uYSIgRGlyZWN0b3J5PSJsaWJzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0ibGlic19saWJweXRob24uYSIgTmFtZT0ibGlicHl0aG9uJCh2YXIuTWFqb3JWZXJzaW9uTnVtYmVyKSQodmFyLk1pbm9yVmVyc2lvbk51bWJlcikuYSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKyAgICA8P2VuZGlmID8+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9kb2MvZG9jLndpeHByb2ogYi9Ub29scy9tc2kvZG9jL2RvYy53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhOTkyOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZG9jL2RvYy53aXhwcm9qCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPnswRDYyQTJCQi01RjcxLTQ0NDctOEM4Qy05NzA4NDA3QjM2NzR9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5kb2M8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgICAgIDwhLS0gU2hvcnRjdXQgdmFsaWRhdGlvbiBpcyBub3QgbmVjZXNzYXJ5IC0tPgorICAgICAgICA8U3VwcHJlc3NJQ0VzPklDRTQzPC9TdXBwcmVzc0lDRXM+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8RG9jRmlsZW5hbWU+cHl0aG9uJChNYWpvclZlcnNpb25OdW1iZXIpJChNaW5vclZlcnNpb25OdW1iZXIpJChNaWNyb1ZlcnNpb25OdW1iZXIpJChSZWxlYXNlTGV2ZWxOYW1lKS5jaG08L0RvY0ZpbGVuYW1lPgorICAgICAgICA8SW5jbHVkZURvY0ZpbGU+ZmFsc2U8L0luY2x1ZGVEb2NGaWxlPgorICAgICAgICA8SW5jbHVkZURvY0ZpbGUgQ29uZGl0aW9uPSIkKEJ1aWxkRm9yUmVsZWFzZSkgb3IgRXhpc3RzKCckKFB5U291cmNlUGF0aClEb2NcYnVpbGRcaHRtbGhlbHBcJChEb2NGaWxlbmFtZSknKSI+dHJ1ZTwvSW5jbHVkZURvY0ZpbGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJChJbmNsdWRlRG9jRmlsZSkiPgorICAgICAgICA8RGVmaW5lQ29uc3RhbnRzPiQoRGVmaW5lQ29uc3RhbnRzKTtEb2NGaWxlbmFtZT0kKERvY0ZpbGVuYW1lKTs8L0RlZmluZUNvbnN0YW50cz4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZG9jLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZG9jX2ZpbGVzLnd4cyIgQ29uZGl0aW9uPSIkKEluY2x1ZGVEb2NGaWxlKSIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZG9jX25vX2ZpbGVzLnd4cyIgQ29uZGl0aW9uPSIhJChJbmNsdWRlRG9jRmlsZSkiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPFd4bFRlbXBsYXRlIEluY2x1ZGU9Iioud3hsX3RlbXBsYXRlIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2RvYy9kb2Mud3hzIGIvVG9vbHMvbXNpL2RvYy9kb2Mud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZDBlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZG9jL2RvYy53eHMKQEAgLTAsMCArMSwzMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJSRUdJU1RSWUtFWSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJEZWZhdWx0RmVhdHVyZSIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZG9jIiBQcmltYXJ5PSJ5ZXMiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50UmVmIElkPSJPcHRpb25hbEZlYXR1cmUiIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICAgICAgPEZlYXR1cmUgSWQ9IlNob3J0Y3V0cyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZG9jIiAvPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8P2lmZGVmIERvY0ZpbGVuYW1lID8+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJkb2Nfc2hvcnRjdXQiIERpcmVjdG9yeT0iTWVudURpciIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLTVUiIEtleT0iW09QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSIkKHZhci5PcHRpb25hbEZlYXR1cmVOYW1lKV9zaG9ydGN1dCIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iJCh2YXIuVmVyc2lvbikiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICAgICAgICAgIDxTaG9ydGN1dCBJZD0icHl0aG9uLmNobSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0PSJbI3B5dGhvbi5jaG1dIgorICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSIhKGxvYy5TaG9ydGN1dE5hbWUpIgorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iIShsb2MuU2hvcnRjdXREZXNjcmlwdGlvbikiCisgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmtpbmdEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIC8+CisgICAgICAgICAgICAgICAgPFJlbW92ZUZvbGRlciBJZD0iUmVtb3ZlX01lbnVEaXIiIE9uPSJ1bmluc3RhbGwiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDw/ZW5kaWYgPz4KKworICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZG9jL2RvY19lbi1VUy53eGxfdGVtcGxhdGUgYi9Ub29scy9tc2kvZG9jL2RvY19lbi1VUy53eGxfdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA5NTU2ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9kb2MvZG9jX2VuLVVTLnd4bF90ZW1wbGF0ZQpAQCAtMCwwICsxLDcgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0RGVzY3JpcHRvciI+ZG9jPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iRGVzY3JpcHRvciI+RG9jdW1lbnRhdGlvbjwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0Y3V0TmFtZSI+UHl0aG9uIHt7U2hvcnRWZXJzaW9ufX0gTWFudWFscyAoe3tCaXRuZXNzfX0pPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnRjdXREZXNjcmlwdGlvbiI+VmlldyB0aGUgIShsb2MuUHJvZHVjdE5hbWUpIGRvY3VtZW50YXRpb24uPC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9kb2MvZG9jX2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS9kb2MvZG9jX2ZpbGVzLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTA5YWZlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2RvYy9kb2NfZmlsZXMud3hzCkBAIC0wLDAgKzEsMTUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUkVHSVNUUllLRVkiIC8+CisgICAgICAgIAorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImRvYyI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob24uY2htIiBEaXJlY3Rvcnk9IkRvYyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9InB5dGhvbi5jaG0iIE5hbWU9IiQodmFyLkRvY0ZpbGVuYW1lKSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS01VIiBLZXk9IltSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9IkhlbHBcTWFpbiBQeXRob24gRG9jdW1lbnRhdGlvbiIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iWyNweXRob24uY2htXSIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2RvYy9kb2Nfbm9fZmlsZXMud3hzIGIvVG9vbHMvbXNpL2RvYy9kb2Nfbm9fZmlsZXMud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhYjdjMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZG9jL2RvY19ub19maWxlcy53eHMKQEAgLTAsMCArMSwxNyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJkb2MiPgorICAgICAgICAgICAgPCEtLQorICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGluY2x1ZGVkIHdoZW4gdGhlIENITSBpcyBub3QgYXZhaWxhYmxlLgorICAgICAgICAgICAgCisgICAgICAgICAgICBUaGlzIHdheSwgc25hcHNob3QgYnVpbGRzIGNhbiBzdWNjZWVkIHdpdGhvdXQgaGF2aW5nIHRvCisgICAgICAgICAgICBidWlsZCB0aGUgZG9jcy4KKyAgICAgICAgICAgIC0tPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iRW1wdHlEb2NGb2xkZXIiIERpcmVjdG9yeT0iRG9jIiBHdWlkPSJ7MjJGRDQyREItRUM2Ni00QjFDLUIxRkMtNDRFMENGN0IyNDYyfSI+CisgICAgICAgICAgICAgICAgPENyZWF0ZUZvbGRlciAvPgorICAgICAgICAgICAgICAgIDxSZW1vdmVGb2xkZXIgSWQ9IlJlbW92ZV9FbXB0eURvY0ZvbGRlciIgT249InVuaW5zdGFsbCIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jcnRsaWNlbnNlLnR4dCBiL1Rvb2xzL21zaS9leGUvY3J0bGljZW5zZS50eHQKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gVG9vbHMvbXNpL2NydGxpY2Vuc2UudHh0CnJlbmFtZSB0byBUb29scy9tc2kvZXhlL2NydGxpY2Vuc2UudHh0CmluZGV4IDkzNmJjNWEuLmY4Njg0MWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9jcnRsaWNlbnNlLnR4dAorKysgYi9Ub29scy9tc2kvZXhlL2NydGxpY2Vuc2UudHh0CkBAIC01LDExICs1LDggQEAKIAogVGhpcyBwcm9ncmFtIGlzIGxpbmtlZCB3aXRoIGFuZCB1c2VzIE1pY3Jvc29mdCBEaXN0cmlidXRhYmxlIENvZGUsCiBjb3B5cmlnaHRlZCBieSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIFRoZSBNaWNyb3NvZnQgRGlzdHJpYnV0YWJsZSBDb2RlCi1pbmNsdWRlcyB0aGUgZm9sbG93aW5nIGZpbGVzOgotCi1tc3ZjcjkwLmRsbAotbXN2Y3A5MC5kbGwKLW1zdmNtOTAuZGxsCitpcyBlbWJlZGRlZCBpbiBlYWNoIC5leGUsIC5kbGwgYW5kIC5weWQgZmlsZSBhcyBhIHJlc3VsdCBvZiBydW5uaW5nCit0aGUgY29kZSB0aHJvdWdoIGEgbGlua2VyLgogCiBJZiB5b3UgZnVydGhlciBkaXN0cmlidXRlIHByb2dyYW1zIHRoYXQgaW5jbHVkZSB0aGUgTWljcm9zb2Z0CiBEaXN0cmlidXRhYmxlIENvZGUsIHlvdSBtdXN0IGNvbXBseSB3aXRoIHRoZSByZXN0cmljdGlvbnMgb24KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlLndpeHByb2ogYi9Ub29scy9tc2kvZXhlL2V4ZS53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNmE2MDMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZXhlL2V4ZS53aXhwcm9qCkBAIC0wLDAgKzEsNDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPns2QkQ1MzMwNS1CMDNFLTQ5REMtODVGQi01NTUxQjhDQ0M4NDN9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5leGU8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8IS0tIFNob3J0Y3V0IHZhbGlkYXRpb24gaXMgbm90IG5lY2Vzc2FyeSAtLT4KKyAgICAgICAgPFN1cHByZXNzSUNFcz5JQ0U0MzwvU3VwcHJlc3NJQ0VzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGUud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgICAgICA8V3hsVGVtcGxhdGUgSW5jbHVkZT0iKi53eGxfdGVtcGxhdGUiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPFRhcmdldCBOYW1lPSJfR2VuZXJhdGVMaWNlbnNlIiBBZnRlclRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCI+CisgICAgICAgIDxJdGVtR3JvdXA+CisgICAgICAgICAgICA8TGljZW5zZUZpbGVzIEluY2x1ZGU9IiQoUHlTb3VyY2VQYXRoKUxJQ0VOU0U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNydGxpY2Vuc2UudHh0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGJ6MkRpcilMSUNFTlNFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKG9wZW5zc2xEaXIpTElDRU5TRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0Y2xEaXIpbGljZW5zZS50ZXJtczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0a0RpcilsaWNlbnNlLnRlcm1zOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRpeERpcilsaWNlbnNlLnRlcm1zIiAvPgorICAgICAgICAgICAgPF9MaWNlbnNlRmlsZXMgSW5jbHVkZT0iQChMaWNlbnNlRmlsZXMpIj4KKyAgICAgICAgICAgICAgICA8Q29udGVudD4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCUoRnVsbFBhdGgpKSk8L0NvbnRlbnQ+CisgICAgICAgICAgICA8L19MaWNlbnNlRmlsZXM+CisgICAgICAgIDwvSXRlbUdyb3VwPgorICAgICAgICAKKyAgICAgICAgPFdyaXRlTGluZXNUb0ZpbGUgRmlsZT0iJChCdWlsZFBhdGgpTElDRU5TRSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgT3ZlcndyaXRlPSJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lcz0iQChfTGljZW5zZUZpbGVzLT4nJShDb250ZW50KScpIiAvPgorICAgIDwvVGFyZ2V0PgorICAgICAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlLnd4cyBiL1Rvb2xzL21zaS9leGUvZXhlLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTRjZWU1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGUud3hzCkBAIC0wLDAgKzEsMzMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUkVHSVNUUllLRVkiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImV4ZV9weXRob24iIFByaW1hcnk9InllcyIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX3R4dCIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX2ljb25zIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudFJlZiBJZD0iT3B0aW9uYWxGZWF0dXJlIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IlNob3J0Y3V0cyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX3B5dGhvbiIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImV4ZV9zaG9ydGN1dCIgRGlyZWN0b3J5PSJNZW51RGlyIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8U2hvcnRjdXQgSWQ9InB5dGhvbi5leGUiCisgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldD0iWyNweXRob24uZXhlXSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iIShsb2MuU2hvcnRjdXROYW1lKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb249IiEobG9jLlNob3J0Y3V0RGVzY3JpcHRpb24pIgorICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JraW5nRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiAvPgorICAgICAgICAgICAgICAgIDxSZW1vdmVGb2xkZXIgSWQ9IlJlbW92ZV9NZW51RGlyIiBEaXJlY3Rvcnk9Ik1lbnVEaXIiIE9uPSJ1bmluc3RhbGwiIC8+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLTVUiIEtleT0iW1JFR0lTVFJZS0VZXSI+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleT0iSW5zdGFsbFBhdGhcSW5zdGFsbEdyb3VwIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIhKGxvYy5Qcm9kdWN0TmFtZSkiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJJbnN0YWxsZWRGZWF0dXJlcyIgTmFtZT0iU2hvcnRjdXRzIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIkKHZhci5WZXJzaW9uKSIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX2Qud2l4cHJvaiBiL1Rvb2xzL21zaS9leGUvZXhlX2Qud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzU0NWNhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGVfZC53aXhwcm9qCkBAIC0wLDAgKzEsMjAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPntCMUNBNzM5Qy04REIwLTQwM0ItOTAxMC1ENzk1MDc1MDdDRTl9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5leGVfZDwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX2Qud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgICAgICA8V3hsVGVtcGxhdGUgSW5jbHVkZT0iKi53eGxfdGVtcGxhdGUiIC8+CisgICAgPC9JdGVtR3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX2Qud3hzIGIvVG9vbHMvbXNpL2V4ZS9leGVfZC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVkYjZiYgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX2Qud3hzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZV9kKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJEZWJ1Z0JpbmFyaWVzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZV9kKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uX2QpIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX3B5dGhvbl9kIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZV9lbi1VUy53eGxfdGVtcGxhdGUgYi9Ub29scy9tc2kvZXhlL2V4ZV9lbi1VUy53eGxfdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc3ZmJlNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX2VuLVVTLnd4bF90ZW1wbGF0ZQpAQCAtMCwwICsxLDcgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICAgIDxTdHJpbmcgSWQ9IkRlc2NyaXB0b3IiPkV4ZWN1dGFibGVzPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnREZXNjcmlwdG9yIj5leGVjdXRhYmxlPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnRjdXROYW1lIj5QeXRob24ge3tTaG9ydFZlcnNpb259fSAoe3tCaXRuZXNzfX0pPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnRjdXREZXNjcmlwdGlvbiI+TGF1bmNoZXMgdGhlICEobG9jLlByb2R1Y3ROYW1lKSBpbnRlcnByZXRlci48L1N0cmluZz4KKzwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGVfZmlsZXMud3hzIGIvVG9vbHMvbXNpL2V4ZS9leGVfZmlsZXMud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNDdiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9maWxlcy53eHMKQEAgLTAsMCArMSw3NiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJleGVfdHh0Ij4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IkxJQ0VOU0UudHh0IiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9IkxJQ0VOU0UudHh0IiBTb3VyY2U9IkxJQ0VOU0UiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iTkVXUy50eHQiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0iTkVXUy50eHQiIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpTWlzY1xORVdTIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IlJFQURNRS50eHQiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0iUkVBRE1FLnR4dCIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylSRUFETUUiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUkVHSVNUUllLRVkiIC8+CisgICAgICAgIAorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImV4ZV9weXRob24iPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9uLmV4ZSIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIkKHZhci5QeXRob25FeGVDb21wb25lbnRHdWlkKSI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHl0aG9uLmV4ZSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS01VIiBLZXk9IltSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9Ikluc3RhbGxQYXRoIiBUeXBlPSJzdHJpbmciIFZhbHVlPSJbSW5zdGFsbERpcmVjdG9yeV0iIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9Ikluc3RhbGxQYXRoIiBOYW1lPSJFeGVjdXRhYmxlUGF0aCIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iWyNweXRob24uZXhlXSIgS2V5UGF0aD0ibm8iIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9udy5leGUiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iJCh2YXIuUHl0aG9ud0V4ZUNvbXBvbmVudEd1aWQpIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweXRob253LmV4ZSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJ2Y3J1bnRpbWUxNDAuZGxsIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InZjcnVudGltZTE0MC5kbGwiIFNvdXJjZT0iIShiaW5kcGF0aC5yZWRpc3QpdmNydW50aW1lMTQwLmRsbCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKworICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJleGVfcHl0aG9uX3N5bWJvbHMiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9uLnBkYiIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweXRob24ucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob253LnBkYiIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweXRob253LnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisgICAgICAgIAorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJleGVfcHl0aG9uX2QiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9uX2QuZXhlIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5dGhvbl9kLmV4ZSIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9uX2QucGRiIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5dGhvbl9kLnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9ud19kLmV4ZSIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweXRob253X2QuZXhlIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob253X2QucGRiIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5dGhvbndfZC5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJleGVfaWNvbnMiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHkuaWNvIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5LmljbyIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylQQ1xweS5pY28iIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHljLmljbyIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweWMuaWNvIiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKVBDXHB5Yy5pY28iIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX3BkYi53aXhwcm9qIGIvVG9vbHMvbXNpL2V4ZS9leGVfcGRiLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY0Yzg2OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX3BkYi53aXhwcm9qCkBAIC0wLDAgKzEsMjAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPns0QTFGNzA0NS04RUUyLTQyNzYtQUJCOC01RTBDNDBFNUYzOEJ9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5leGVfcGRiPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfcGRiLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICAgICAgPFd4bFRlbXBsYXRlIEluY2x1ZGU9Iioud3hsX3RlbXBsYXRlIiAvPgorICAgIDwvSXRlbUdyb3VwPgorCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZV9wZGIud3hzIGIvVG9vbHMvbXNpL2V4ZS9leGVfcGRiLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjUwOTRmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGVfcGRiLnd4cwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGVQZGIpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IlN5bWJvbHMiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlUGRiKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uUGRiKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImV4ZV9weXRob25fc3ltYm9scyIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2dlbmVyYXRlX21kNS5weSBiL1Rvb2xzL21zaS9nZW5lcmF0ZV9tZDUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU0YzE0NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9nZW5lcmF0ZV9tZDUucHkKQEAgLTAsMCArMSwyNyBAQAoraW1wb3J0IGhhc2hsaWIKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitkZWYgbWFpbigpOgorICAgIGZpbGVuYW1lcywgaGFzaGVzLCBzaXplcyA9IFtdLCBbXSwgW10KKworICAgIGZvciBmaWxlIGluIHN5cy5hcmd2WzE6XToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGZpbGUpOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICB3aXRoIG9wZW4oZmlsZSwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQorICAgICAgICAgICAgbWQ1ID0gaGFzaGxpYi5tZDUoKQorICAgICAgICAgICAgbWQ1LnVwZGF0ZShkYXRhKQorICAgICAgICAgICAgZmlsZW5hbWVzLmFwcGVuZChvcy5wYXRoLnNwbGl0KGZpbGUpWzFdKQorICAgICAgICAgICAgaGFzaGVzLmFwcGVuZChtZDUuaGV4ZGlnZXN0KCkpCisgICAgICAgICAgICBzaXplcy5hcHBlbmQoc3RyKGxlbihkYXRhKSkpCisKKyAgICBwcmludCgnezo0MHN9ICB7OjwzMnN9ICB7Ojw5c30nLmZvcm1hdCgnRmlsZScsICdNRDUnLCAnU2l6ZScpKQorICAgIGZvciBmLCBoLCBzIGluIHppcChmaWxlbmFtZXMsIGhhc2hlcywgc2l6ZXMpOgorICAgICAgICBwcmludCgnezo0MHN9ICB7Oj4zMnN9ICB7Oj45c30nLmZvcm1hdChmLCBoLCBzKSkKKworCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgc3lzLmV4aXQoaW50KG1haW4oKSBvciAwKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9nZXRfZXh0ZXJuYWxzLmJhdCBiL1Rvb2xzL21zaS9nZXRfZXh0ZXJuYWxzLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWFkNzVlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2dldF9leHRlcm5hbHMuYmF0CkBAIC0wLDAgKzEsMjcgQEAKK0BlY2hvIG9mZg0KK3NldGxvY2FsDQorcmVtIFNpbXBsZSBzY3JpcHQgdG8gZmV0Y2ggc291cmNlIGZvciBleHRlcm5hbCB0b29scw0KKw0KK3doZXJlIC9RIHN2bg0KK2lmIEVSUk9STEVWRUwgMSAoDQorICAgIGVjaG8uc3ZuLmV4ZSBtdXN0IGJlIG9uIHlvdXIgUEFUSCB0byBnZXQgZXh0ZXJuYWwgdG9vbHMuDQorICAgIGVjaG8uVHJ5IFRvcnRvaXNlU1ZOIChodHRwOi8vdG9ydG9pc2Vzdm4ubmV0L14pIGFuZCBiZSBzdXJlIHRvIGNoZWNrIHRoZQ0KKyAgICBlY2hvLmNvbW1hbmQgbGluZSB0b29scyBvcHRpb24uDQorICAgIHBvcGQNCisgICAgZXhpdCAvYiAxDQorKQ0KKw0KK2lmIG5vdCBleGlzdCAiJX5kcDAuLlwuLlxleHRlcm5hbHMiIG1rZGlyICIlfmRwMC4uXC4uXGV4dGVybmFscyINCitwdXNoZCAiJX5kcDAuLlwuLlxleHRlcm5hbHMiDQorDQoraWYgIiVTVk5ST09UJSI9PSIiIHNldCBTVk5ST09UPWh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC8NCisNCitpZiBub3QgZXhpc3QgIndpbmRvd3MtaW5zdGFsbGVyXC5zdm4iICgNCisgICAgZWNoby5DaGVja2luZyBvdXQgaW5zdGFsbGVyIGRlcGVuZGVuY2llcyB0byAlQ0QlXHdpbmRvd3MtaW5zdGFsbGVyDQorICAgIHN2biBjbyAlU1ZOUk9PVCV3aW5kb3dzLWluc3RhbGxlcg0KKykgZWxzZSAoDQorICAgIGVjaG8uVXBkYXRpbmcgaW5zdGFsbGVyIGRlcGVuZGVuY2llcyBpbiAlQ0QlXHdpbmRvd3MtaW5zdGFsbGVyDQorICAgIHN2biB1cCB3aW5kb3dzLWluc3RhbGxlcg0KKykNCisNCitwb3BkDQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLndpeHByb2ogYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGYxZDU3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLndpeHByb2oKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezkyMUNGMEU2LUFFQkMtNDM3Ni1CQTFELUNENDZFQkZFNkRBNX08L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPmxhdW5jaGVyPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgICAgICA8RGVmaW5lQ29uc3RhbnRzPlNraXBNaXNzaW5nQ29yZT0xOyQoRGVmaW5lQ29uc3RhbnRzKTwvRGVmaW5lQ29uc3RhbnRzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJsYXVuY2hlci53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImxhdW5jaGVyX2ZpbGVzLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0ibGF1bmNoZXJfcmVnLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53eHMgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxOGI2NjYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud3hzCkBAIC0wLDAgKzEsMzggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5IElkPSJTdXBwcmVzc19UQVJHRVRESVJfQ2hlY2siIFZhbHVlPSIxIiAvPgorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJBUlBQUk9EVUNUSUNPTiIgLz4KKworICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImxhdW5jaGVyX2V4ZSIgUHJpbWFyeT0ieWVzIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgICAgIDxGZWF0dXJlIElkPSJBc3NvY2lhdGVGaWxlcyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGF1bmNoZXJfZXhlIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsYXVuY2hlcl9yZWciIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICAgICAgCisgICAgICAgIDxEaXJlY3RvcnkgSWQ9IlRBUkdFVERJUiIgTmFtZT0iU291cmNlRGlyIj4KKyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9IkxhdW5jaGVySW5zdGFsbERpcmVjdG9yeSIgLz4KKyAgICAgICAgPC9EaXJlY3Rvcnk+CisgICAgICAgIAorICAgICAgICA8Q3VzdG9tQWN0aW9uIElkPSJTZXRMYXVuY2hlckluc3RhbGxEaXJlY3RvcnlMTSIgUHJvcGVydHk9IkxhdW5jaGVySW5zdGFsbERpcmVjdG9yeSIgVmFsdWU9IltXaW5kb3dzRm9sZGVyXSIgLz4KKyAgICAgICAgPEN1c3RvbUFjdGlvbiBJZD0iU2V0TGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5Q1UiIFByb3BlcnR5PSJMYXVuY2hlckluc3RhbGxEaXJlY3RvcnkiIFZhbHVlPSJbTG9jYWxBcHBEYXRhRm9sZGVyXVByb2dyYW1zXFB5dGhvblxMYXVuY2hlciIgLz4KKyAgICAgICAgCisgICAgICAgIDxJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlPgorICAgICAgICAgICAgPEN1c3RvbSBCZWZvcmU9IlNldExhdW5jaGVySW5zdGFsbERpcmVjdG9yeUxNIiBBY3Rpb249IlNldExhdW5jaGVySW5zdGFsbERpcmVjdG9yeUNVIj5OT1QgSW5zdGFsbGVkIEFORCBOT1QgQUxMVVNFUlM9MTwvQ3VzdG9tPgorICAgICAgICAgICAgPEN1c3RvbSBCZWZvcmU9IkNvc3RGaW5hbGl6ZSIgQWN0aW9uPSJTZXRMYXVuY2hlckluc3RhbGxEaXJlY3RvcnlMTSI+Tk9UIEluc3RhbGxlZCBBTkQgQUxMVVNFUlM9MTwvQ3VzdG9tPgorCisgICAgICAgICAgICA8UmVtb3ZlRXhpc3RpbmdQcm9kdWN0cyBBZnRlcj0iSW5zdGFsbEluaXRpYWxpemUiPlVQR1JBREUgb3IgUkVNT1ZFX09MRF9MQVVOQ0hFUjwvUmVtb3ZlRXhpc3RpbmdQcm9kdWN0cz4KKyAgICAgICAgPC9JbnN0YWxsRXhlY3V0ZVNlcXVlbmNlPgorICAgICAgICAKKyAgICAgICAgPCEtLSBQeXRob24gMy41LjAgc2hpcHBlZCB3aXRoIGFuIGluY29ycmVjdCBVcGdyYWRlQ29kZSAtLT4KKyAgICAgICAgPFVwZ3JhZGUgSWQ9IkE3MTUzMEI5LUU4OUQtNTNEQi05QzJELUM2RDc1NTE4NzZEOCI+CisgICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gTWF4aW11bT0iJCh2YXIuVmVyc2lvbikiIFByb3BlcnR5PSJSRU1PVkVfT0xEX0xBVU5DSEVSIiAvPgorICAgICAgICA8L1VwZ3JhZGU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfZW4tVVMud3hsIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX2VuLVVTLnd4bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTYxZmZmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX2VuLVVTLnd4bApAQCAtMCwwICsxLDEwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5MYXVuY2hlcjwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0RGVzY3JpcHRvciI+bGF1bmNoZXI8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJQeXRob25GaWxlRGVzY3JpcHRpb24iPlB5dGhvbiBGaWxlPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iUHl0aG9uTm9Db25GaWxlRGVzY3JpcHRpb24iPlB5dGhvbiBGaWxlIChubyBjb25zb2xlKTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlB5dGhvbkNvbXBpbGVkRmlsZURlc2NyaXB0aW9uIj5Db21waWxlZCBQeXRob24gRmlsZTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlB5dGhvbkFyY2hpdmVGaWxlRGVzY3JpcHRpb24iPlB5dGhvbiBaaXAgQXBwbGljYXRpb24gRmlsZTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlB5dGhvbk5vQ29uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbiI+UHl0aG9uIFppcCBBcHBsaWNhdGlvbiBGaWxlIChubyBjb25zb2xlKTwvU3RyaW5nPgorPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfZmlsZXMud3hzIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX2ZpbGVzLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODlkZWU1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX2ZpbGVzLnd4cwpAQCAtMCwwICsxLDI1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImxhdW5jaGVyX2V4ZSI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweS5leGUiIERpcmVjdG9yeT0iTGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSJ7QjUxMDc0MDItNjk1OC00NjFCLThCMEEtNDAzN0QzMzI3MTYwfSI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9InB5LmV4ZSIgTmFtZT0icHkuZXhlIiBTb3VyY2U9InB5LmV4ZSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIFJvb3Q9IkhLTVUiIEtleT0iU29mdHdhcmVcUHl0aG9uXFB5TGF1bmNoZXIiIFZhbHVlPSJbI3B5LmV4ZV0iIFR5cGU9InN0cmluZyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl3LmV4ZSIgRGlyZWN0b3J5PSJMYXVuY2hlckluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9Ins4RTUyQjhDRC00OEJCLTRENzQtODRDRC02MjM4QkNEMTFGMjB9Ij4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0icHl3LmV4ZSIgTmFtZT0icHl3LmV4ZSIgU291cmNlPSJweXcuZXhlIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKworICAgICAgICAgICAgPENvbXBvbmVudCBJZD0ibGF1bmNoZXJfcGF0aF9jdSIgRGlyZWN0b3J5PSJMYXVuY2hlckluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9Ins5NUFFQjkzMC0zNjdDLTQ3NUMtQTE3RS1BODlCRkNENEM2NzB9Ij4KKyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPk5PVCBBTExVU0VSUz0xPC9Db25kaXRpb24+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5UGF0aD0ieWVzIiBSb290PSJIS01VIiBLZXk9IlNvZnR3YXJlXFB5dGhvblxQeUxhdW5jaGVyIiBOYW1lPSJJbnN0YWxsRGlyIiBWYWx1ZT0iW0xhdW5jaGVySW5zdGFsbERpcmVjdG9yeV0iIFR5cGU9InN0cmluZyIgLz4KKyAgICAgICAgICAgICAgICA8RW52aXJvbm1lbnQgSWQ9IlBBVEhfQ1UiIEFjdGlvbj0ic2V0IiBOYW1lPSJQQVRIIiBQYXJ0PSJmaXJzdCIgVmFsdWU9IltMYXVuY2hlckluc3RhbGxEaXJlY3RvcnldIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJsYXVuY2hlcl9wYXRoX2xtIiBEaXJlY3Rvcnk9IkxhdW5jaGVySW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iezRBNDFDMzY1LTRFMjctNEQzOC1BNkQxLTRBMDFCNEE2NTAwQ30iPgorICAgICAgICAgICAgICAgIDxDb25kaXRpb24+QUxMVVNFUlM9MTwvQ29uZGl0aW9uPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleVBhdGg9InllcyIgUm9vdD0iSEtNVSIgS2V5PSJTb2Z0d2FyZVxQeXRob25cUHlMYXVuY2hlciIgTmFtZT0iSW5zdGFsbERpciIgVmFsdWU9IltMYXVuY2hlckluc3RhbGxEaXJlY3RvcnldIiBUeXBlPSJzdHJpbmciIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfcmVnLnd4cyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9yZWcud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiNDIyNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfcmVnLnd4cwpAQCAtMCwwICsxLDQ2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImxhdW5jaGVyX3JlZyI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJmaWxlX2Fzc29jaWF0aW9uIiBEaXJlY3Rvcnk9IkxhdW5jaGVySW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iezVBRjg0RDlBLUQ4MjAtNDU2Qi1CMjMwLTZFMDEwNUE1MDI3Nn0iPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleVBhdGg9InllcyIgUm9vdD0iSEtNVSIgS2V5PSJTb2Z0d2FyZVxQeXRob25cUHlMYXVuY2hlciIgTmFtZT0iQXNzb2NpYXRlRmlsZXMiIFZhbHVlPSIxIiBUeXBlPSJpbnRlZ2VyIiAvPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IlB5dGhvbi5GaWxlIiBEZXNjcmlwdGlvbj0iIShsb2MuUHl0aG9uRmlsZURlc2NyaXB0aW9uKSIgQWR2ZXJ0aXNlPSJubyIgSWNvbj0icHkuZXhlIiBJY29uSW5kZXg9IjEiPgorICAgICAgICAgICAgICAgICAgICA8RXh0ZW5zaW9uIElkPSJweSIgQ29udGVudFR5cGU9InRleHQvcGxhaW4iPgorICAgICAgICAgICAgICAgICAgICAgICAgPFZlcmIgSWQ9Im9wZW4iIFRhcmdldEZpbGU9InB5LmV4ZSIgQXJndW1lbnQ9IiZxdW90OyVMJnF1b3Q7ICUqIiAvPgorICAgICAgICAgICAgICAgICAgICA8L0V4dGVuc2lvbj4KKyAgICAgICAgICAgICAgICA8L1Byb2dJZD4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS0NSIiBLZXk9IlB5dGhvbi5GaWxlXHNoZWxsZXhcRHJvcEhhbmRsZXIiIFZhbHVlPSJ7NjAyNTRDQTUtOTUzQi0xMUNGLThDOTYtMDBBQTAwQjg3MDhDfSIgVHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IlB5dGhvbi5Ob0NvbkZpbGUiIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25Ob0NvbkZpbGVEZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSIxIj4KKyAgICAgICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBJZD0icHl3IiBDb250ZW50VHlwZT0idGV4dC9wbGFpbiI+CisgICAgICAgICAgICAgICAgICAgICAgICA8VmVyYiBJZD0ib3BlbiIgVGFyZ2V0RmlsZT0icHl3LmV4ZSIgQXJndW1lbnQ9IiZxdW90OyVMJnF1b3Q7ICUqIiAvPgorICAgICAgICAgICAgICAgICAgICA8L0V4dGVuc2lvbj4KKyAgICAgICAgICAgICAgICA8L1Byb2dJZD4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS0NSIiBLZXk9IlB5dGhvbi5Ob0NvbkZpbGVcc2hlbGxleFxEcm9wSGFuZGxlciIgVmFsdWU9Ins2MDI1NENBNS05NTNCLTExQ0YtOEM5Ni0wMEFBMDBCODcwOEN9IiBUeXBlPSJzdHJpbmciIC8+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPFByb2dJZCBJZD0iUHl0aG9uLkNvbXBpbGVkRmlsZSIgRGVzY3JpcHRpb249IiEobG9jLlB5dGhvbkNvbXBpbGVkRmlsZURlc2NyaXB0aW9uKSIgQWR2ZXJ0aXNlPSJubyIgSWNvbj0icHkuZXhlIiBJY29uSW5kZXg9IjIiPgorICAgICAgICAgICAgICAgICAgICA8RXh0ZW5zaW9uIElkPSJweWMiPgorICAgICAgICAgICAgICAgICAgICAgICAgPFZlcmIgSWQ9Im9wZW4iIFRhcmdldEZpbGU9InB5LmV4ZSIgQXJndW1lbnQ9IiZxdW90OyVMJnF1b3Q7ICUqIiAvPgorICAgICAgICAgICAgICAgICAgICA8L0V4dGVuc2lvbj4KKyAgICAgICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBJZD0icHlvIiAvPgorICAgICAgICAgICAgICAgIDwvUHJvZ0lkPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIFJvb3Q9IkhLQ1IiIEtleT0iUHl0aG9uLkNvbXBpbGVkRmlsZVxzaGVsbGV4XERyb3BIYW5kbGVyIiBWYWx1ZT0iezYwMjU0Q0E1LTk1M0ItMTFDRi04Qzk2LTAwQUEwMEI4NzA4Q30iIFR5cGU9InN0cmluZyIgLz4KKworICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IlB5dGhvbi5BcmNoaXZlRmlsZSIgRGVzY3JpcHRpb249IiEobG9jLlB5dGhvbkFyY2hpdmVGaWxlRGVzY3JpcHRpb24pIiBBZHZlcnRpc2U9Im5vIiBJY29uPSJweS5leGUiIEljb25JbmRleD0iMSI+CisgICAgICAgICAgICAgICAgICAgIDxFeHRlbnNpb24gSWQ9InB5eiIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWQiPgorICAgICAgICAgICAgICAgICAgICAgICAgPFZlcmIgSWQ9Im9wZW4iIFRhcmdldEZpbGU9InB5LmV4ZSIgQXJndW1lbnQ9IiZxdW90OyVMJnF1b3Q7ICUqIiAvPgorICAgICAgICAgICAgICAgICAgICA8L0V4dGVuc2lvbj4KKyAgICAgICAgICAgICAgICA8L1Byb2dJZD4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS0NSIiBLZXk9IlB5dGhvbi5BcmNoaXZlRmlsZVxzaGVsbGV4XERyb3BIYW5kbGVyIiBWYWx1ZT0iezYwMjU0Q0E1LTk1M0ItMTFDRi04Qzk2LTAwQUEwMEI4NzA4Q30iIFR5cGU9InN0cmluZyIgLz4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8UHJvZ0lkIElkPSJQeXRob24uTm9Db25BcmNoaXZlRmlsZSIgRGVzY3JpcHRpb249IiEobG9jLlB5dGhvbk5vQ29uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSIxIj4KKyAgICAgICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBJZD0icHl6dyIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWQiPgorICAgICAgICAgICAgICAgICAgICAgICAgPFZlcmIgSWQ9Im9wZW4iIFRhcmdldEZpbGU9InB5dy5leGUiIEFyZ3VtZW50PSImcXVvdDslTCZxdW90OyAlKiIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9FeHRlbnNpb24+CisgICAgICAgICAgICAgICAgPC9Qcm9nSWQ+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgUm9vdD0iSEtDUiIgS2V5PSJQeXRob24uTm9Db25BcmNoaXZlRmlsZVxzaGVsbGV4XERyb3BIYW5kbGVyIiBWYWx1ZT0iezYwMjU0Q0E1LTk1M0ItMTFDRi04Qzk2LTAwQUEwMEI4NzA4Q30iIFR5cGU9InN0cmluZyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9saWIvbGliLndpeHByb2ogYi9Ub29scy9tc2kvbGliL2xpYi53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0ZTU4NzgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbGliL2xpYi53aXhwcm9qCkBAIC0wLDAgKzEsMzQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPnsxMTM2N0U3Ni0zMzM3LTQ2MDItOEYxRS03N0RCNEYzNzBEN0V9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5saWI8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImxpYi53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImxpYl9maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEV4Y2x1ZGVGb2xkZXJzIEluY2x1ZGU9IkxpYlx0ZXN0O0xpYlx0ZXN0cztMaWJcdGtpbnRlcjtMaWJcaWRsZWxpYjtMaWJcdHVydGxlZGVtbyIgLz4KKyAgICAgICAgPEluc3RhbGxGaWxlcyBJbmNsdWRlPSIkKFB5U291cmNlUGF0aClMaWJcKipcKiIKKyAgICAgICAgICAgICAgICAgICAgICBFeGNsdWRlPSIkKFB5U291cmNlUGF0aClMaWJcKipcKi5weWM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpTGliXCoqXCoucHlvOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoUHlTb3VyY2VQYXRoKUxpYlxzaXRlLXBhY2thZ2VzXFJFQURNRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAKEV4Y2x1ZGVGb2xkZXJzLT4nJChQeVNvdXJjZVBhdGgpJShJZGVudGl0eSlcKicpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAoRXhjbHVkZUZvbGRlcnMtPickKFB5U291cmNlUGF0aCklKElkZW50aXR5KVwqKlwqJykiPgorICAgICAgICAgICAgPFNvdXJjZUJhc2U+JChQeVNvdXJjZVBhdGgpTGliPC9Tb3VyY2VCYXNlPgorICAgICAgICAgICAgPFNvdXJjZT4hKGJpbmRwYXRoLnNyYylMaWJcPC9Tb3VyY2U+CisgICAgICAgICAgICA8VGFyZ2V0QmFzZT4kKFB5U291cmNlUGF0aClMaWI8L1RhcmdldEJhc2U+CisgICAgICAgICAgICA8VGFyZ2V0Xz5MaWJcPC9UYXJnZXRfPgorICAgICAgICAgICAgPEdyb3VwPmxpYl9weTwvR3JvdXA+CisgICAgICAgIDwvSW5zdGFsbEZpbGVzPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWIud3hzIGIvVG9vbHMvbXNpL2xpYi9saWIud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiMDRiY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbGliL2xpYi53eHMKQEAgLTAsMCArMSwxNyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJSRUdJU1RSWUtFWSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJEZWZhdWx0RmVhdHVyZSIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGliX3B5IiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsaWJfZmlsZXMiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImxpYl9leHRlbnNpb25zIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudFJlZiBJZD0iT3B0aW9uYWxGZWF0dXJlIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGliL2xpYl9kLndpeHByb2ogYi9Ub29scy9tc2kvbGliL2xpYl9kLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg3YTgyYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9saWIvbGliX2Qud2l4cHJvagpAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57NkM0NDNDRDMtODI1OC00MzM1LUJBMDMtNDlEQTlDMzRDRTREfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+bGliX2Q8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImxpYl9kLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0ibGliX2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9saWIvbGliX2Qud3hzIGIvVG9vbHMvbXNpL2xpYi9saWJfZC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE4YTUzMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9saWIvbGliX2Qud3hzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZV9kKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJEZWJ1Z0JpbmFyaWVzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZV9kKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uX2QpIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGliX2V4dGVuc2lvbnNfZCIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWJfZW4tVVMud3hsIGIvVG9vbHMvbXNpL2xpYi9saWJfZW4tVVMud3hsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNWJjYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbGliL2xpYl9lbi1VUy53eGwKQEAgLTAsMCArMSw1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5TdGFuZGFyZCBMaWJyYXJ5PC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnREZXNjcmlwdG9yIj5saWI8L1N0cmluZz4KKzwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWJfZmlsZXMud3hzIGIvVG9vbHMvbXNpL2xpYi9saWJfZmlsZXMud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNzlhOGQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbGliL2xpYl9maWxlcy53eHMKQEAgLTAsMCArMSw3OSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDw/ZGVmaW5lIGV4dHM9cHlleHBhdDtzZWxlY3Q7dW5pY29kZWRhdGE7d2luc291bmQ7X2J6MjtfZWxlbWVudHRyZWU7X3NvY2tldDtfc3NsO19tc2k7X2N0eXBlcztfaGFzaGxpYjtfbXVsdGlwcm9jZXNzaW5nO19sem1hO19kZWNpbWFsO19vdmVybGFwcGVkO19zcWxpdGUzID8+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImxpYl9leHRlbnNpb25zIj4KKyAgICAgICAgICAgIDw/Zm9yZWFjaCBleHQgaW4gJCh2YXIuZXh0cyk/PgorICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IiQodmFyLmV4dCkucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9IiQodmFyLmV4dCkucHlkIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPD9lbmRmb3JlYWNoID8+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InNxbGl0ZTMuZGxsIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InNxbGl0ZTMuZGxsIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJsaWJfZXh0ZW5zaW9uc19zeW1ib2xzIj4KKyAgICAgICAgICAgIDw/Zm9yZWFjaCBleHQgaW4gJCh2YXIuZXh0cyk/PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSIkKHZhci5leHQpLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPlNZTUJPTFM9MTwvQ29uZGl0aW9uPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9IiQodmFyLmV4dCkucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDw/ZW5kZm9yZWFjaCA/PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJzcWxpdGUzLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJzcWxpdGUzLnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImxpYl9leHRlbnNpb25zX2QiPgorICAgICAgICAgICAgPD9mb3JlYWNoIGV4dCBpbiAkKHZhci5leHRzKT8+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IiQodmFyLmV4dClfZC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0iJCh2YXIuZXh0KV9kLnB5ZCIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iJCh2YXIuZXh0KV9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSIkKHZhci5leHQpX2QucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDw/ZW5kZm9yZWFjaCA/PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJzcWxpdGUzX2QuZGxsIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InNxbGl0ZTNfZC5kbGwiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0ic3FsaXRlM19kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJzcWxpdGUzX2QucGRiIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJSRUdJU1RSWUtFWSIgLz4KKyAgICAgICAgCisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0ibGliX2ZpbGVzIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IlB5dGhvblBhdGhSZWdpc3RyeSIgRGlyZWN0b3J5PSJMaWIiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS01VIiBLZXk9IltSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9IlB5dGhvblBhdGgiIFR5cGU9InN0cmluZyIgVmFsdWU9IltMaWJdO1tETExzXSIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJMaWJfc2l0ZV9wYWNrYWdlc19SRUFETUUiIERpcmVjdG9yeT0iTGliX3NpdGVfcGFja2FnZXMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJMaWJfc2l0ZV9wYWNrYWdlc19SRUFETUUiIE5hbWU9IlJFQURNRS50eHQiIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpTGliXHNpdGUtcGFja2FnZXNcUkVBRE1FIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IkxpYjJ0bzNfcGlja2xlX3JlbW92ZSIgRGlyZWN0b3J5PSJMaWJfbGliMnRvMyIgR3VpZD0iJCh2YXIuUmVtb3ZlTGliMnRvM1BpY2tsZUNvbXBvbmVudEd1aWQpIj4KKyAgICAgICAgICAgICAgICA8UmVtb3ZlRmlsZSBJZD0iTGliMnRvM19waWNrbGVfcmVtb3ZlX2ZpbGVzIiBOYW1lPSIqLnBpY2tsZSIgT249InVuaW5zdGFsbCIgLz4KKyAgICAgICAgICAgICAgICA8UmVtb3ZlRm9sZGVyIElkPSJMaWIydG8zX3BpY2tsZV9yZW1vdmVfZm9sZGVyIiBPbj0idW5pbnN0YWxsIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9IkxpYiI+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJMaWJfc2l0ZV9wYWNrYWdlcyIgTmFtZT0ic2l0ZS1wYWNrYWdlcyIgLz4KKyAgICAgICAgPC9EaXJlY3RvcnlSZWY+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWJfcGRiLndpeHByb2ogYi9Ub29scy9tc2kvbGliL2xpYl9wZGIud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjFiNWJiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2xpYi9saWJfcGRiLndpeHByb2oKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezVFMEJDRTkzLUQxQUMtNDU5MS1CQkNCLTNBMkJFNUE0QjNEMX08L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPmxpYl9wZGI8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImxpYl9wZGIud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJsaWJfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWJfcGRiLnd4cyBiL1Rvb2xzL21zaS9saWIvbGliX3BkYi53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgzOWU4YQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9saWIvbGliX3BkYi53eHMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlUGRiKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJTeW1ib2xzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZVBkYikiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvblBkYikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsaWJfZXh0ZW5zaW9uc19zeW1ib2xzIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbWFrZV96aXAucHJvaiBiL1Rvb2xzL21zaS9tYWtlX3ppcC5wcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyZTAzMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbWFrZV96aXAucHJvagpAQCAtMCwwICsxLDQxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57MTA0ODc5NDUtMTVEMS00MDkyLUEyMTQtMzM4Mzk1QzQxMTZCfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxPdXRwdXROYW1lPnB5dGhvbjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFN1ZmZpeD48L091dHB1dFN1ZmZpeD4KKyAgICAgICAgPFN1cHBvcnRTaWduaW5nPmZhbHNlPC9TdXBwb3J0U2lnbmluZz4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Im1zaS5wcm9wcyIgLz4KKworICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8U2lnbk91dHB1dD5mYWxzZTwvU2lnbk91dHB1dD4KKyAgICAgICAgPFRhcmdldE5hbWU+cHl0aG9uLSQoUHl0aG9uVmVyc2lvbiktZW1iZWQtJChBcmNoTmFtZSk8L1RhcmdldE5hbWU+CisgICAgICAgIDxUYXJnZXRFeHQ+LnppcDwvVGFyZ2V0RXh0PgorICAgICAgICA8VGFyZ2V0UGF0aD4kKE91dHB1dFBhdGgpXGVuLXVzXCQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L1RhcmdldFBhdGg+CisgICAgICAgIDxDbGVhbkNvbW1hbmQ+cm1kaXIgL3EvcyAiJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKVx6aXBfJChBcmNoTmFtZSkiPC9DbGVhbkNvbW1hbmQ+CisgICAgICAgIDxBcmd1bWVudHM+IiQoUHl0aG9uRXhlKSIgIiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KVxtYWtlX3ppcC5weSI8L0FyZ3VtZW50cz4KKyAgICAgICAgPEFyZ3VtZW50cz4kKEFyZ3VtZW50cykgLWUgLW8gIiQoVGFyZ2V0UGF0aCkiIC10ICIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpXHppcF8kKEFyY2hOYW1lKSIgLWEgJChBcmNoTmFtZSk8L0FyZ3VtZW50cz4KKyAgICAgICAgPEVudmlyb25tZW50PnNldCBET0NfRklMRU5BTUU9cHl0aG9uJChQeXRob25WZXJzaW9uKS5jaG0KK3NldCBWQ1JFRElTVF9QQVRIPSQoVlMxNDBDT01OVE9PTFMpXC4uXC4uXFZDXHJlZGlzdFwkKFBsYXRmb3JtKVxNaWNyb3NvZnQuVkMxNDAuQ1JUPC9FbnZpcm9ubWVudD4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgICA8VGFyZ2V0IE5hbWU9Il9CdWlsZCI+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9InNldGxvY2FsCiskKEVudmlyb25tZW50KQorJChDbGVhbkNvbW1hbmQpCiskKEFyZ3VtZW50cykiIC8+CisgICAgPC9UYXJnZXQ+CisKKyAgICA8VGFyZ2V0IE5hbWU9IkFmdGVyQnVpbGQiIC8+CisgICAgPFRhcmdldCBOYW1lPSJCdWlsZCIgRGVwZW5kc09uVGFyZ2V0cz0iX0J1aWxkO0FmdGVyQnVpbGQiIC8+CisKKyAgICA8VGFyZ2V0IE5hbWU9IlNob3dIYXNoZXMiPgorICAgICAgICA8SXRlbUdyb3VwPgorICAgICAgICAgICAgPFVzZXJGaWxlcyBJbmNsdWRlPSJAKEZpbGUpIiBDb25kaXRpb249IiclKEZpbGUuQ29weVRvKScgPT0gJyQoRVhFVGFyZ2V0KSciIC8+CisgICAgICAgIDwvSXRlbUdyb3VwPgorCisgICAgICAgIDxFeGVjIENvbW1hbmQ9IiZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBnZW5lcmF0ZV9tZDUucHkgQChVc2VyRmlsZXMtPicmcXVvdDslKEZ1bGxQYXRoKSZxdW90OycsJyAnKSIgLz4KKyAgICA8L1RhcmdldD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tYWtlX3ppcC5weSBiL1Rvb2xzL21zaS9tYWtlX3ppcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmZkYWQyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL21ha2VfemlwLnB5CkBAIC0wLDAgKzEsMjAwIEBACitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBweV9jb21waWxlCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdGF0CitpbXBvcnQgb3MKK2ltcG9ydCB0ZW1wZmlsZQorCitmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKK2Zyb20gemlwZmlsZSBpbXBvcnQgWmlwRmlsZSwgWklQX0RFRkxBVEVECitpbXBvcnQgc3VicHJvY2VzcworCitUS1RDTF9SRSA9IHJlLmNvbXBpbGUocideKF8/dGt8dGNsKS4rXC4ocHlkfGRsbCknLCByZS5JR05PUkVDQVNFKQorREVCVUdfUkUgPSByZS5jb21waWxlKHInX2RcLihweWR8ZGxsfGV4ZSkkJywgcmUuSUdOT1JFQ0FTRSkKK1BZVEhPTl9ETExfUkUgPSByZS5jb21waWxlKHIncHl0aG9uXGRcZD9cLmRsbCQnLCByZS5JR05PUkVDQVNFKQorCitFWENMVURFX0ZST01fTElCUkFSWSA9IHsKKyAgICAnX19weWNhY2hlX18nLAorICAgICdlbnN1cmVwaXAnLAorICAgICdpZGxlbGliJywKKyAgICAncHlkb2NfZGF0YScsCisgICAgJ3NpdGUtcGFja2FnZXMnLAorICAgICd0a2ludGVyJywKKyAgICAndHVydGxlZGVtbycsCit9CisKK0VYQ0xVREVfRklMRV9GUk9NX0xJQlJBUlkgPSB7CisgICAgJ2JkaXN0X3dpbmluc3QucHknLAorfQorCitkZWYgaXNfbm90X2RlYnVnKHApOgorICAgIGlmIERFQlVHX1JFLnNlYXJjaChwLm5hbWUpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGlmIFRLVENMX1JFLnNlYXJjaChwLm5hbWUpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIHJldHVybiBwLm5hbWUubG93ZXIoKSBub3QgaW4geworICAgICAgICAnX2N0eXBlc190ZXN0LnB5ZCcsCisgICAgICAgICdfdGVzdGJ1ZmZlci5weWQnLAorICAgICAgICAnX3Rlc3RjYXBpLnB5ZCcsCisgICAgICAgICdfdGVzdGltcG9ydG11bHRpcGxlLnB5ZCcsCisgICAgICAgICdfdGVzdG11bHRpcGhhc2UucHlkJywKKyAgICAgICAgJ3h4bGltaXRlZC5weWQnLAorICAgIH0KKworZGVmIGlzX25vdF9kZWJ1Z19vcl9weXRob24ocCk6CisgICAgcmV0dXJuIGlzX25vdF9kZWJ1ZyhwKSBhbmQgbm90IFBZVEhPTl9ETExfUkUuc2VhcmNoKHAubmFtZSkKKworZGVmIGluY2x1ZGVfaW5fbGliKHApOgorICAgIG5hbWUgPSBwLm5hbWUubG93ZXIoKQorICAgIGlmIHAuaXNfZGlyKCk6CisgICAgICAgIGlmIG5hbWUgaW4gRVhDTFVERV9GUk9NX0xJQlJBUlk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdwbGF0LScpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIG5hbWUgPT0gJ3Rlc3QnIGFuZCBwLnBhcnRzWy0yXS5sb3dlcigpID09ICdsaWInOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIG5hbWUgaW4geyd0ZXN0JywgJ3Rlc3RzJ30gYW5kIHAucGFydHNbLTNdLmxvd2VyKCkgPT0gJ2xpYic6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGlmIG5hbWUgaW4gRVhDTFVERV9GSUxFX0ZST01fTElCUkFSWToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBzdWZmaXggPSBwLnN1ZmZpeC5sb3dlcigpCisgICAgcmV0dXJuIHN1ZmZpeCBub3QgaW4geycucHljJywgJy5weW8nLCAnLmV4ZSd9CisKK2RlZiBpbmNsdWRlX2luX3Rvb2xzKHApOgorICAgIGlmIHAuaXNfZGlyKCkgYW5kIHAubmFtZS5sb3dlcigpIGluIHsnc2NyaXB0cycsICdpMThuJywgJ3B5bmNoZScsICdkZW1vJywgJ3BhcnNlcid9OgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgcmV0dXJuIHAuc3VmZml4Lmxvd2VyKCkgaW4geycucHknLCAnLnB5dycsICcudHh0J30KKworRlVMTF9MQVlPVVQgPSBbCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAncHl0aG9uKi5leGUnLCBpc19ub3RfZGVidWcpLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJ3B5dGhvbiouZGxsJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJ0RMTHMvJywgJ1BDQnVpbGQvJGFyY2gnLCAnKi5weWQnLCBpc19ub3RfZGVidWcpLAorICAgICgnRExMcy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLmRsbCcsIGlzX25vdF9kZWJ1ZyksCisgICAgKCdpbmNsdWRlLycsICdpbmNsdWRlJywgJyouaCcsIE5vbmUpLAorICAgICgnaW5jbHVkZS8nLCAnUEMnLCAncHljb25maWcuaCcsIE5vbmUpLAorICAgICgnTGliLycsICdMaWInLCAnKiovKicsIGluY2x1ZGVfaW5fbGliKSwKKyAgICAoJ1Rvb2xzLycsICdUb29scycsICcqKi8qJywgaW5jbHVkZV9pbl90b29scyksCitdCisKK0VNQkVEX0xBWU9VVCA9IFsKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICdweXRob24qLmV4ZScsIGlzX25vdF9kZWJ1ZyksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAnKi5weWQnLCBpc19ub3RfZGVidWcpLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJyouZGxsJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJ3B5dGhvbjM1LnppcCcsICdMaWInLCAnKiovKicsIGluY2x1ZGVfaW5fbGliKSwKK10KKworaWYgb3MuZ2V0ZW52KCdET0NfRklMRU5BTUUnKToKKyAgICBGVUxMX0xBWU9VVC5hcHBlbmQoKCdEb2MvJywgJ0RvYy9idWlsZC9odG1saGVscCcsIG9zLmdldGVudignRE9DX0ZJTEVOQU1FJyksIE5vbmUpKQoraWYgb3MuZ2V0ZW52KCdWQ1JFRElTVF9QQVRIJyk6CisgICAgRlVMTF9MQVlPVVQuYXBwZW5kKCgnLycsIG9zLmdldGVudignVkNSRURJU1RfUEFUSCcpLCAndmNydW50aW1lKi5kbGwnLCBOb25lKSkKKyAgICBFTUJFRF9MQVlPVVQuYXBwZW5kKCgnLycsIG9zLmdldGVudignVkNSRURJU1RfUEFUSCcpLCAndmNydW50aW1lKi5kbGwnLCBOb25lKSkKKworZGVmIGNvcHlfdG9fbGF5b3V0KHRhcmdldCwgcmVsX3NvdXJjZXMpOgorICAgIGNvdW50ID0gMAorCisgICAgaWYgdGFyZ2V0LnN1ZmZpeC5sb3dlcigpID09ICcuemlwJzoKKyAgICAgICAgaWYgdGFyZ2V0LmV4aXN0cygpOgorICAgICAgICAgICAgdGFyZ2V0LnVubGluaygpCisKKyAgICAgICAgd2l0aCBaaXBGaWxlKHN0cih0YXJnZXQpLCAndycsIFpJUF9ERUZMQVRFRCkgYXMgZjoKKyAgICAgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdG1wZGlyOgorICAgICAgICAgICAgICAgIGZvciBzLCByZWwgaW4gcmVsX3NvdXJjZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIHJlbC5zdWZmaXgubG93ZXIoKSA9PSAnLnB5JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHB5YyA9IFBhdGgodG1wZGlyKSAvIHJlbC53aXRoX3N1ZmZpeCgnLnB5YycpLm5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBweV9jb21waWxlLmNvbXBpbGUoc3RyKHMpLCBzdHIocHljKSwgc3RyKHJlbCksIGRvcmFpc2U9VHJ1ZSwgb3B0aW1pemU9MikKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBweV9jb21waWxlLlB5Q29tcGlsZUVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc3RyKHMpLCBzdHIocmVsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShzdHIocHljKSwgc3RyKHJlbC53aXRoX3N1ZmZpeCgnLnB5YycpKSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc3RyKHMpLCBzdHIocmVsKSkKKyAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gMQorCisgICAgZWxzZToKKyAgICAgICAgZm9yIHMsIHJlbCBpbiByZWxfc291cmNlczoKKyAgICAgICAgICAgIGRlc3QgPSB0YXJnZXQgLyByZWwKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkZXN0LnBhcmVudC5ta2RpcihwYXJlbnRzPVRydWUpCisgICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGlmIGRlc3QuaXNfZmlsZSgpOgorICAgICAgICAgICAgICAgIGRlc3QuY2htb2Qoc3RhdC5TX0lXUklURSkKKyAgICAgICAgICAgIHNodXRpbC5jb3B5KHN0cihzKSwgc3RyKGRlc3QpKQorICAgICAgICAgICAgaWYgZGVzdC5pc19maWxlKCk6CisgICAgICAgICAgICAgICAgZGVzdC5jaG1vZChzdGF0LlNfSVdSSVRFKQorICAgICAgICAgICAgY291bnQgKz0gMQorCisgICAgcmV0dXJuIGNvdW50CisKK2RlZiByZ2xvYihyb290LCBwYXR0ZXJuLCBjb25kaXRpb24pOgorICAgIGRpcnMgPSBbcm9vdF0KKyAgICByZWN1cnNlID0gcGF0dGVybls6M10gaW4geycqKi8nLCAnKipcXCd9CisgICAgd2hpbGUgZGlyczoKKyAgICAgICAgZCA9IGRpcnMucG9wKDApCisgICAgICAgIGZvciBmIGluIGQuZ2xvYihwYXR0ZXJuWzM6XSBpZiByZWN1cnNlIGVsc2UgcGF0dGVybik6CisgICAgICAgICAgICBpZiByZWN1cnNlIGFuZCBmLmlzX2RpcigpIGFuZCAobm90IGNvbmRpdGlvbiBvciBjb25kaXRpb24oZikpOgorICAgICAgICAgICAgICAgIGRpcnMuYXBwZW5kKGYpCisgICAgICAgICAgICBlbGlmIGYuaXNfZmlsZSgpIGFuZCAobm90IGNvbmRpdGlvbiBvciBjb25kaXRpb24oZikpOgorICAgICAgICAgICAgICAgIHlpZWxkIGYsIGYucmVsYXRpdmVfdG8ocm9vdCkKKworZGVmIG1haW4oKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zb3VyY2UnLCBtZXRhdmFyPSdkaXInLCBoZWxwPSdUaGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHJlcG9zaXRvcnkgcm9vdCcsIHR5cGU9UGF0aCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctbycsICctLW91dCcsIG1ldGF2YXI9J2ZpbGUnLCBoZWxwPSdUaGUgbmFtZSBvZiB0aGUgb3V0cHV0IHNlbGYtZXh0cmFjdGluZyBhcmNoaXZlJywgdHlwZT1QYXRoLCByZXF1aXJlZD1UcnVlKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy10JywgJy0tdGVtcCcsIG1ldGF2YXI9J2RpcicsIGhlbHA9J0EgZGlyZWN0b3J5IHRvIHRlbXBvcmFyaWx5IGV4dHJhY3QgZmlsZXMgaW50bycsIHR5cGU9UGF0aCwgZGVmYXVsdD1Ob25lKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1lJywgJy0tZW1iZWQnLCBoZWxwPSdDcmVhdGUgYW4gZW1iZWRkaW5nIGxheW91dCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWEnLCAnLS1hcmNoJywgaGVscD0nU3BlY2lmeSB0aGUgYXJjaGl0ZWN0dXJlIHRvIHVzZSAod2luMzIvYW1kNjQpJywgdHlwZT1zdHIsIGRlZmF1bHQ9IndpbjMyIikKKyAgICBucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIHNvdXJjZSA9IG5zLnNvdXJjZSBvciAoUGF0aChfX2ZpbGVfXykucGFyZW50LnBhcmVudC5wYXJlbnQpCisgICAgb3V0ID0gbnMub3V0CisgICAgYXJjaCA9IG5zLmFyY2gKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShzb3VyY2UsIFBhdGgpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2Uob3V0LCBQYXRoKQorICAgIGFzc2VydCBpc2luc3RhbmNlKGFyY2gsIHN0cikKKworICAgIGlmIG5zLnRlbXA6CisgICAgICAgIHRlbXAgPSBucy50ZW1wCisgICAgICAgIGRlbGV0ZV90ZW1wID0gRmFsc2UKKyAgICBlbHNlOgorICAgICAgICB0ZW1wID0gUGF0aCh0ZW1wZmlsZS5ta2R0ZW1wKCkpCisgICAgICAgIGRlbGV0ZV90ZW1wID0gVHJ1ZQorCisgICAgdHJ5OgorICAgICAgICBvdXQucGFyZW50Lm1rZGlyKHBhcmVudHM9VHJ1ZSkKKyAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICBwYXNzCisgICAgdHJ5OgorICAgICAgICB0ZW1wLm1rZGlyKHBhcmVudHM9VHJ1ZSkKKyAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICBwYXNzCisKKyAgICBsYXlvdXQgPSBFTUJFRF9MQVlPVVQgaWYgbnMuZW1iZWQgZWxzZSBGVUxMX0xBWU9VVAorCisgICAgdHJ5OgorICAgICAgICBmb3IgdCwgcywgcCwgYyBpbiBsYXlvdXQ6CisgICAgICAgICAgICBzID0gc291cmNlIC8gcy5yZXBsYWNlKCIkYXJjaCIsIGFyY2gpCisgICAgICAgICAgICBjb3BpZWQgPSBjb3B5X3RvX2xheW91dCh0ZW1wIC8gdC5yc3RyaXAoJy8nKSwgcmdsb2IocywgcCwgYykpCisgICAgICAgICAgICBwcmludCgnQ29waWVkIHt9IGZpbGVzJy5mb3JtYXQoY29waWVkKSkKKworICAgICAgICB3aXRoIG9wZW4oc3RyKHRlbXAgLyAncHl2ZW52LmNmZycpLCAndycpIGFzIGY6CisgICAgICAgICAgICBwcmludCgnYXBwbG9jYWwgPSB0cnVlJywgZmlsZT1mKQorCisgICAgICAgIHRvdGFsID0gY29weV90b19sYXlvdXQob3V0LCByZ2xvYih0ZW1wLCAnKicsIE5vbmUpKQorICAgICAgICBwcmludCgnV3JvdGUge30gZmlsZXMgdG8ge30nLmZvcm1hdCh0b3RhbCwgb3V0KSkKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiBkZWxldGVfdGVtcDoKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodGVtcCwgVHJ1ZSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHN5cy5leGl0KGludChtYWluKCkgb3IgMCkpCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpLnByb3BzIGIvVG9vbHMvbXNpL21zaS5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmI4YWViCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL21zaS5wcm9wcwpAQCAtMCwwICsxLDE3MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIiBUcmVhdEFzTG9jYWxQcm9wZXJ0eT0iUmVsZWFzZVVyaSI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxUYXJnZXROYW1lPiQoT3V0cHV0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgICAgIDxEZWZpbmVTb2x1dGlvblByb3BlcnRpZXM+ZmFsc2U8L0RlZmluZVNvbHV0aW9uUHJvcGVydGllcz4KKyAgICAgICAgPFRyZWF0V2FybmluZ3NBc0Vycm9ycz5mYWxzZTwvVHJlYXRXYXJuaW5nc0FzRXJyb3JzPgorICAgICAgICA8U3VwcHJlc3NJY2VzPiQoU3VwcHJlc3NJY2VzKTtJQ0UwMztJQ0U1NztJQ0U2MTwvU3VwcHJlc3NJY2VzPgorICAgICAgICA8Q29tcGlsZXJTdXBwcmVzc1NwZWNpZmljV2FybmluZ3M+MTAyNjwvQ29tcGlsZXJTdXBwcmVzc1NwZWNpZmljV2FybmluZ3M+CisgICAgICAgIDxCdWlsZEZvclJlbGVhc2UgQ29uZGl0aW9uPSInJChCdWlsZEZvclJlbGVhc2UpJyA9PSAnJyI+ZmFsc2U8L0J1aWxkRm9yUmVsZWFzZT4KKyAgICAgICAgPFNpZ25PdXRwdXQgQ29uZGl0aW9uPSInJChTaWduaW5nQ2VydGlmaWNhdGUpJyAhPSAnJyI+dHJ1ZTwvU2lnbk91dHB1dD4KKyAgICAgICAgPENvbmZpZ3VyYXRpb24gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJyciPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICAgIDxQbGF0Zm9ybSBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJyciPng4NjwvUGxhdGZvcm0+CisgICAgICAgIDxJbnN0YWxsU2NvcGUgQ29uZGl0aW9uPSInJChJbnN0YWxsU2NvcGUpJyAhPSAncGVyTWFjaGluZSciPnBlclVzZXI8L0luc3RhbGxTY29wZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9IndpeC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXC4uXFBDQnVpbGRcdGNsdGsucHJvcHMiIC8+CisKKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPCEtLQorICAgICAgICBUaGlzIFVSSSBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSB2YXJpb3VzIEdVSURzIHVzZWQgYnkgdGhlIGluc3RhbGxlci4KKyAgICAgICAgSW5zdGFsbGVycyBidWlsdCB3aXRoIHRoZSBzYW1lIFVSSSB3aWxsIHVwZ3JhZGUgZWFjaCBvdGhlciBvciBibG9jaworICAgICAgICB3aGVuIGF0dGVtcHRpbmcgdG8gZG93bmdyYWRlLgorICAgICAgICAKKyAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyBpcyB0aGUgbG9jYWwgY29tcHV0ZXIgbmFtZSwgd2hpY2ggd2lsbCBwcm9kdWNlCisgICAgICAgIGluc3RhbGxlcnMgdGhhdCBkbyBub3QgaW50ZXJmZXJlIHdpdGggb3RoZXIgaW5zdGFsbGVycy4gUHJvZHVjdHMKKyAgICAgICAgdGhhdCBpbnRlbmQgdG8gYnVuZGxlIFB5dGhvbiBzaG91bGQgcmVidWlsZCB0aGVzZSBtb2R1bGVzIHdpdGggdGhlaXIKKyAgICAgICAgb3duIFVSSSB0byBhdm9pZCBjb25mbGljdGluZyB3aXRoIHRoZSBvZmZpY2lhbCByZWxlYXNlcy4KKyAgICAgICAgCisgICAgICAgIFRoZSBvZmZpY2lhbCByZWxlYXNlcyB1c2UgImh0dHA6Ly93d3cucHl0aG9uLm9yZy8kKEFyY2hOYW1lKSIKKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBEb3dubG9hZFVybCBwcm9wZXJ0eSB1c2VkIGluIHRoZSBidW5kbGUKKyAgICAgICAgcHJvamVjdHMuCisgICAgICAgIC0tPgorICAgICAgICA8UmVsZWFzZVVyaSBDb25kaXRpb249IickKFJlbGVhc2VVcmkpJyA9PSAnJyI+JChDb21wdXRlck5hbWUpLyQoQXJjaE5hbWUpLzwvUmVsZWFzZVVyaT4KKyAgICAgICAgPFJlbGVhc2VVcmkgQ29uZGl0aW9uPSIhJChSZWxlYXNlVXJpLkVuZHNXaXRoKGAvYCkpIj4kKFJlbGVhc2VVcmkpLzwvUmVsZWFzZVVyaT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgICAKKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSljb21tb24ud3hzIiAvPgorICAgICAgICA8V3hsVGVtcGxhdGUgSW5jbHVkZT0iJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpXCoud3hsX3RlbXBsYXRlIiAvPgorICAgICAgICA8V2l4RXh0ZW5zaW9uIEluY2x1ZGU9IldpeFV0aWxFeHRlbnNpb24iPgorICAgICAgICAgICAgPEhpbnRQYXRoPldpeFV0aWxFeHRlbnNpb248L0hpbnRQYXRoPgorICAgICAgICAgICAgPE5hbWU+V2l4VXRpbEV4dGVuc2lvbjwvTmFtZT4KKyAgICAgICAgPC9XaXhFeHRlbnNpb24+CisgICAgPC9JdGVtR3JvdXA+CisKKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPEludGVybWVkaWF0ZU91dHB1dFBhdGg+JChQeVNvdXJjZVBhdGgpUENCdWlsZFxvYmpcJChDb25maWd1cmF0aW9uKV8kKFBsYXRmb3JtKV9TZXR1cFwkKE91dHB1dE5hbWUpPC9JbnRlcm1lZGlhdGVPdXRwdXRQYXRoPgorICAgICAgICA8SW50ZXJtZWRpYXRlT3V0cHV0UGF0aCBDb25kaXRpb249IickKE91dHB1dFN1ZmZpeCknICE9ICcnIj4kKEludGVybWVkaWF0ZU91dHB1dFBhdGgpXyQoT3V0cHV0U3VmZml4KTwvSW50ZXJtZWRpYXRlT3V0cHV0UGF0aD4KKyAgICAgICAgPE91dHB1dFBhdGggQ29uZGl0aW9uPSInJChPdXRwdXRQYXRoKScgPT0gJyciPiQoQnVpbGRQYXRoKTwvT3V0cHV0UGF0aD4KKyAgICAgICAgPE91dHB1dFBhdGggQ29uZGl0aW9uPSIhSGFzVHJhaWxpbmdTbGFzaCgkKE91dHB1dFBhdGgpKSI+JChPdXRwdXRQYXRoKVw8L091dHB1dFBhdGg+CisgICAgICAgIDxPdXREaXI+JChPdXRwdXRQYXRoKTwvT3V0RGlyPgorICAgICAgICA8UmV1c2VDYWJpbmV0Q2FjaGU+dHJ1ZTwvUmV1c2VDYWJpbmV0Q2FjaGU+CisgICAgICAgIDxDUlRSZWRpc3QgQ29uZGl0aW9uPSInJChDUlRSZWRpc3QpJyA9PSAnJyI+JChFeHRlcm5hbHNEaXIpXHdpbmRvd3MtaW5zdGFsbGVyXHJlZGlzdDwvQ1JUUmVkaXN0PgorICAgICAgICA8Q1JUUmVkaXN0IENvbmRpdGlvbj0iIUV4aXN0cygkKENSVFJlZGlzdCkpIj48L0NSVFJlZGlzdD4KKyAgICAgICAgPERvY0ZpbGVuYW1lPnB5dGhvbiQoTWFqb3JWZXJzaW9uTnVtYmVyKSQoTWlub3JWZXJzaW9uTnVtYmVyKSQoTWljcm9WZXJzaW9uTnVtYmVyKSQoUmVsZWFzZUxldmVsTmFtZSkuY2htPC9Eb2NGaWxlbmFtZT4KKworICAgICAgICA8SW5zdGFsbGVyVmVyc2lvbj4kKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLiQoRmllbGQzVmFsdWUpLjA8L0luc3RhbGxlclZlcnNpb24+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIAorICAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iISQoQnVpbGRGb3JSZWxlYXNlKSI+CisgICAgICAgIDxSZXZpc2lvbk51bWJlciBDb25kaXRpb249IickKFJldmlzaW9uTnVtYmVyKScgPT0gJyciPiQoW1N5c3RlbS5NYXRoXTo6Rmxvb3IoJChbU3lzdGVtLkRhdGVUaW1lXTo6Tm93LlN1YnRyYWN0KCQoW1N5c3RlbS5EYXRlVGltZV06Om5ldygyMDAxLCAxLCAxKSkpLlRvdGFsRGF5cykpKTwvUmV2aXNpb25OdW1iZXI+CisgICAgICAgIDxQeXRob25WZXJzaW9uPiQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikuJChNaWNyb1ZlcnNpb25OdW1iZXIpZGV2JChSZXZpc2lvbk51bWJlcik8L1B5dGhvblZlcnNpb24+CisgICAgICAgIDxJbnN0YWxsZXJWZXJzaW9uPiQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikuJChSZXZpc2lvbk51bWJlcikuMDwvSW5zdGFsbGVyVmVyc2lvbj4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgCisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxCaXRuZXNzPjMyLWJpdDwvQml0bmVzcz4KKyAgICAgICAgPEJpdG5lc3MgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAneDY0JyI+NjQtYml0PC9CaXRuZXNzPgorICAgICAgICA8RGVmaW5lQ29uc3RhbnRzPgorICAgICAgICAgICAgJChEZWZpbmVDb25zdGFudHMpOworICAgICAgICAgICAgVmVyc2lvbj0kKEluc3RhbGxlclZlcnNpb24pOworICAgICAgICAgICAgU2hvcnRWZXJzaW9uPSQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcik7CisgICAgICAgICAgICBMb25nVmVyc2lvbj0kKFB5dGhvblZlcnNpb24pOworICAgICAgICAgICAgTWFqb3JWZXJzaW9uTnVtYmVyPSQoTWFqb3JWZXJzaW9uTnVtYmVyKTsKKyAgICAgICAgICAgIE1pbm9yVmVyc2lvbk51bWJlcj0kKE1pbm9yVmVyc2lvbk51bWJlcik7CisgICAgICAgICAgICBVcGdyYWRlTWluaW11bVZlcnNpb249JChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKS4wLjA7CisgICAgICAgICAgICBOZXh0TWFqb3JWZXJzaW9uTnVtYmVyPSQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKFttc2J1aWxkXTo6QWRkKCQoTWlub3JWZXJzaW9uTnVtYmVyKSwgMSkpLjAuMDsKKyAgICAgICAgICAgIEJpdG5lc3M9JChCaXRuZXNzKTsKKyAgICAgICAgICAgIFB5RGVidWdFeHQ9JChQeURlYnVnRXh0KTsKKyAgICAgICAgICAgIFB5QXJjaEV4dD0kKFB5QXJjaEV4dCk7CisgICAgICAgICAgICBQeVRlc3RFeHQ9JChQeVRlc3RFeHQpOworICAgICAgICAgICAgT3B0aW9uYWxGZWF0dXJlTmFtZT0kKE91dHB1dE5hbWUpOworICAgICAgICA8L0RlZmluZUNvbnN0YW50cz4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cyBDb25kaXRpb249IickKENSVFJlZGlzdCknICE9ICcnIj4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTtDUlRSZWRpc3Q9JChDUlRSZWRpc3QpOworICAgICAgICA8L0RlZmluZUNvbnN0YW50cz4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cyBDb25kaXRpb249IiQoUGxhdGZvcm0pICE9ICd4NjQnIj4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTtTdWZmaXgzMj0tMzI7CisgICAgICAgIDwvRGVmaW5lQ29uc3RhbnRzPgorICAgICAgICA8RGVmaW5lQ29uc3RhbnRzIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPgorICAgICAgICAgICAgJChEZWZpbmVDb25zdGFudHMpO1N1ZmZpeDMyPTsKKyAgICAgICAgPC9EZWZpbmVDb25zdGFudHM+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgICAgIDxJbnN0YWxsRmlsZXM+CisgICAgICAgICAgICA8R3JvdXA+Z2VuZXJhdGVkX2ZpbGVsaXN0PC9Hcm91cD4KKyAgICAgICAgICAgIDxDb25kaXRpb24+PC9Db25kaXRpb24+CisgICAgICAgICAgICA8RGlza0lkPjwvRGlza0lkPgorICAgICAgICA8L0luc3RhbGxGaWxlcz4KKyAgICAgICAgPExpbmtlckJpbmRJbnB1dFBhdGhzPgorICAgICAgICAgICAgPFZpc2libGU+ZmFsc2U8L1Zpc2libGU+CisgICAgICAgIDwvTGlua2VyQmluZElucHV0UGF0aHM+CisgICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxMaW5rZXJCaW5kSW5wdXRQYXRocyBJbmNsdWRlPSIkKFBHT0J1aWxkUGF0aCk7JChCdWlsZFBhdGgpIj4KKyAgICAgICAgICAgIDxCaW5kTmFtZT48L0JpbmROYW1lPgorICAgICAgICA8L0xpbmtlckJpbmRJbnB1dFBhdGhzPgorICAgICAgICA8TGlua2VyQmluZElucHV0UGF0aHMgSW5jbHVkZT0iJChQeVNvdXJjZVBhdGgpRG9jXGJ1aWxkXGh0bWxoZWxwIj4KKyAgICAgICAgICAgIDxCaW5kTmFtZT48L0JpbmROYW1lPgorICAgICAgICA8L0xpbmtlckJpbmRJbnB1dFBhdGhzPgorICAgICAgICA8TGlua2VyQmluZElucHV0UGF0aHMgSW5jbHVkZT0iJChQeVNvdXJjZVBhdGgpIj4KKyAgICAgICAgICAgIDxCaW5kTmFtZT5zcmM8L0JpbmROYW1lPgorICAgICAgICA8L0xpbmtlckJpbmRJbnB1dFBhdGhzPgorICAgICAgICA8TGlua2VyQmluZElucHV0UGF0aHMgSW5jbHVkZT0iJCh0Y2x0a0RpcikiPgorICAgICAgICAgICAgPEJpbmROYW1lPnRjbHRrPC9CaW5kTmFtZT4KKyAgICAgICAgPC9MaW5rZXJCaW5kSW5wdXRQYXRocz4KKyAgICAgICAgPExpbmtlckJpbmRJbnB1dFBhdGhzIEluY2x1ZGU9IiQoQ1JUUmVkaXN0KSIgQ29uZGl0aW9uPSInJChDUlRSZWRpc3QpJyAhPSAnJyI+CisgICAgICAgICAgICA8QmluZE5hbWU+cmVkaXN0PC9CaW5kTmFtZT4KKyAgICAgICAgPC9MaW5rZXJCaW5kSW5wdXRQYXRocz4KKyAgICAgICAgPExpbmtlckJpbmRJbnB1dFBhdGhzIEluY2x1ZGU9IiQoVlMxNDBDT01OVE9PTFMpXC4uXC4uXFZDXHJlZGlzdFwkKFBsYXRmb3JtKVxNaWNyb3NvZnQuVkMxNDAuQ1JUIj4KKyAgICAgICAgICAgIDxCaW5kTmFtZT5yZWRpc3Q8L0JpbmROYW1lPgorICAgICAgICA8L0xpbmtlckJpbmRJbnB1dFBhdGhzPgorICAgIDwvSXRlbUdyb3VwPgorCisgICAgPFRhcmdldCBOYW1lPSJfVmFsaWRhdGVNc2lQcm9wcyIgQmVmb3JlVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIj4KKyAgICAgICAgPEVycm9yIFRleHQ9IlBsYXRmb3JtICckKFBsYXRmb3JtKScgaXMgbm90IHN1cHBvcnRlZC4gVXNlICd4ODYnIG9yICd4NjQnLiIgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSAhPSAneDg2JyBhbmQgJChQbGF0Zm9ybSkgIT0gJ3g2NCciIC8+CisgICAgPC9UYXJnZXQ+CisgICAgCisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPF9VdWlkIEluY2x1ZGU9IkNvcmVVcGdyYWRlQ29kZSI+CisgICAgICAgICAgICA8VXJpPnVwZ3JhZGVjb2RlPC9Vcmk+CisgICAgICAgIDwvX1V1aWQ+CisgICAgICAgIDxfVXVpZCBJbmNsdWRlPSJVcGdyYWRlQ29kZSI+CisgICAgICAgICAgICA8VXJpPnVwZ3JhZGVjb2RlLyQoT3V0cHV0TmFtZSk8L1VyaT4KKyAgICAgICAgPC9fVXVpZD4KKyAgICAgICAgPF9VdWlkIEluY2x1ZGU9Ikluc3RhbGxEaXJlY3RvcnlHdWlkU2VlZCI+CisgICAgICAgICAgICA8VXJpPmluc3RhbGxkaXJlY3RvcnlzZWVkPC9Vcmk+CisgICAgICAgIDwvX1V1aWQ+CisgICAgICAgIDxfVXVpZCBJbmNsdWRlPSJQeXRob25FeGVDb21wb25lbnRHdWlkIj4KKyAgICAgICAgICAgIDxVcmk+cHl0aG9uLmV4ZTwvVXJpPgorICAgICAgICA8L19VdWlkPgorICAgICAgICA8X1V1aWQgSW5jbHVkZT0iUHl0aG9ud0V4ZUNvbXBvbmVudEd1aWQiPgorICAgICAgICAgICAgPFVyaT5weXRob253LmV4ZTwvVXJpPgorICAgICAgICA8L19VdWlkPgorICAgICAgICA8X1V1aWQgSW5jbHVkZT0iUmVtb3ZlTGliMnRvM1BpY2tsZUNvbXBvbmVudEd1aWQiPgorICAgICAgICAgICAgPFVyaT5saWIydG8zL3BpY2tsZXM8L1VyaT4KKyAgICAgICAgPC9fVXVpZD4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8VGFyZ2V0IE5hbWU9Il9HZW5lcmF0ZUd1aWRzIiBBZnRlclRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCI+CisgICAgICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICAgICAgPF9VdWlkcz5AKF9VdWlkLT4nKCIlKElkZW50aXR5KSIsICIkKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLyUoVXJpKSIpJywnLCcpPC9fVXVpZHM+CisgICAgICAgICAgICA8X0dlbmVyYXRlQ29tbWFuZD5pbXBvcnQgdXVpZDsgcHJpbnQoJ1xuJy5qb2luKCd7fT17fScuZm9ybWF0KGksIHV1aWQudXVpZDUodXVpZC5VVUlEKCdjOGQ5NzMzZS1hNzBjLTQzZmYtYWIwYy1lMjY0NTZmMTEwODMnKSwgJyQoUmVsZWFzZVVyaS5SZXBsYWNlKGB7YXJjaH1gLCBgJChBcmNoTmFtZSlgKSknICsgaikpIGZvciBpLGogaW4gWyQoX1V1aWRzLlJlcGxhY2UoYCJgLGAnYCkpXSkpPC9fR2VuZXJhdGVDb21tYW5kPgorICAgICAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgICAgIAorICAgICAgICA8RXhlYyBDb21tYW5kPSciJChQeXRob25FeGUpIiAtYyAiJChfR2VuZXJhdGVDb21tYW5kKSIgJmd0OyAiJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSQoT3V0cHV0TmFtZSlndWlkcy50eHQiJworICAgICAgICAgICAgICBXb3JraW5nRGlyZWN0b3J5PSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSkiCisgICAgICAgICAgICAgIElnbm9yZUV4aXRDb2RlPSJmYWxzZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxSZWFkTGluZXNGcm9tRmlsZSBGaWxlPSIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpJChPdXRwdXROYW1lKWd1aWRzLnR4dCI+CisgICAgICAgICAgICA8T3V0cHV0IFRhc2tQYXJhbWV0ZXI9IkxpbmVzIiBJdGVtTmFtZT0iX1V1aWRWYWx1ZSIgLz4KKyAgICAgICAgPC9SZWFkTGluZXNGcm9tRmlsZT4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICAgICAgPERlZmluZUNvbnN0YW50cz4kKERlZmluZUNvbnN0YW50cyk7QChfVXVpZFZhbHVlLCc7Jyk7PC9EZWZpbmVDb25zdGFudHM+CisgICAgICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8L1RhcmdldD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpLnB5IGIvVG9vbHMvbXNpL21zaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc0NTNhNS4uMDAwMDAwMAotLS0gYS9Ub29scy9tc2kvbXNpLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTQ1NiArMCwwIEBACi0jIFB5dGhvbiBNU0kgR2VuZXJhdG9yCi0jIChDKSAyMDAzIE1hcnRpbiB2LiBMb2V3aXMKLSMgU2VlICJGT08iIGluIGNvbW1lbnRzIHJlZmVycyB0byBNU0ROIHNlY3Rpb25zIHdpdGggdGhlIHRpdGxlIEZPTy4KLWltcG9ydCBtc2lsaWIsIHNjaGVtYSwgc2VxdWVuY2UsIG9zLCBnbG9iLCB0aW1lLCByZSwgc2h1dGlsLCB6aXBmaWxlCi1pbXBvcnQgc3VicHJvY2VzcywgdGVtcGZpbGUKLWZyb20gbXNpbGliIGltcG9ydCBGZWF0dXJlLCBDQUIsIERpcmVjdG9yeSwgRGlhbG9nLCBCaW5hcnksIGFkZF9kYXRhCi1pbXBvcnQgdWlzYW1wbGUKLWZyb20gd2luMzJjb20uY2xpZW50IGltcG9ydCBjb25zdGFudHMKLWZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBmaW5kX2V4ZWN1dGFibGUKLQotIyBTZXR0aW5ncyBjYW4gYmUgb3ZlcnJpZGRlbiBpbiBjb25maWcucHkgYmVsb3cKLSMgMCBmb3Igb2ZmaWNpYWwgcHl0aG9uLm9yZyByZWxlYXNlcwotIyAxIGZvciBpbnRlcm1lZGlhdGUgcmVsZWFzZXMgYnkgYW55Ym9keSwgd2l0aAotIyBhIG5ldyBwcm9kdWN0IGNvZGUgZm9yIGV2ZXJ5IHBhY2thZ2UuCi1zbmFwc2hvdCA9IDEKLSMgMSBtZWFucyB0aGF0IGZpbGUgZXh0ZW5zaW9uIGlzIHB4LCBub3QgcHksCi0jIGFuZCBiaW5hcmllcyBzdGFydCB3aXRoIHgKLXRlc3RwYWNrYWdlID0gMAotIyBMb2NhdGlvbiBvZiBidWlsZCB0cmVlCi1zcmNkaXIgPSBvcy5wYXRoLmFic3BhdGgoIi4uLy4uIikKLSMgVGV4dCB0byBiZSBkaXNwbGF5ZWQgYXMgdGhlIHZlcnNpb24gaW4gZGlhbG9ncyBldGMuCi0jIGdvZXMgaW50byBmaWxlIG5hbWUgYW5kIFByb2R1Y3RDb2RlLiBEZWZhdWx0cyB0bwotIyBjdXJyZW50X3ZlcnNpb24uZGF5IGZvciBTbmFwc2hvdCwgY3VycmVudF92ZXJzaW9uIG90aGVyd2lzZQotZnVsbF9jdXJyZW50X3ZlcnNpb24gPSBOb25lCi0jIElzIFRjbCBhdmFpbGFibGUgYXQgYWxsPwotaGF2ZV90Y2wgPSBUcnVlCi0jIHBhdGggdG8gUENidWlsZCBkaXJlY3RvcnkKLVBDQlVJTEQ9IlBDYnVpbGQiCi0jIG1zdmNydCB2ZXJzaW9uCi1NU1ZDUiA9ICIxMDAiCi0jIE5hbWUgb2YgY2VydGlmaWNhdGUgaW4gZGVmYXVsdCBzdG9yZSB0byBzaWduIE1TSSB3aXRoCi1jZXJ0bmFtZSA9IE5vbmUKLSMgTWFrZSBhIHppcCBmaWxlIGNvbnRhaW5pbmcgdGhlIFBEQiBmaWxlcyBmb3IgdGhpcyBidWlsZD8KLXBkYnppcCA9IFRydWUKLQotdHJ5OgotICAgIGZyb20gY29uZmlnIGltcG9ydCAqCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGFzcwotCi0jIEV4dHJhY3QgY3VycmVudCB2ZXJzaW9uIGZyb20gSW5jbHVkZS9wYXRjaGxldmVsLmgKLWxpbmVzID0gb3BlbihzcmNkaXIgKyAiL0luY2x1ZGUvcGF0Y2hsZXZlbC5oIikucmVhZGxpbmVzKCkKLW1ham9yID0gbWlub3IgPSBtaWNybyA9IGxldmVsID0gc2VyaWFsID0gTm9uZQotbGV2ZWxzID0gewotICAgICdQWV9SRUxFQVNFX0xFVkVMX0FMUEhBJzoweEEsCi0gICAgJ1BZX1JFTEVBU0VfTEVWRUxfQkVUQSc6IDB4QiwKLSAgICAnUFlfUkVMRUFTRV9MRVZFTF9HQU1NQSc6MHhDLAotICAgICdQWV9SRUxFQVNFX0xFVkVMX0ZJTkFMJzoweEYKLSAgICB9Ci1mb3IgbCBpbiBsaW5lczoKLSAgICBpZiBub3QgbC5zdGFydHN3aXRoKCIjZGVmaW5lIik6Ci0gICAgICAgIGNvbnRpbnVlCi0gICAgbCA9IGwuc3BsaXQoKQotICAgIGlmIGxlbihsKSAhPSAzOgotICAgICAgICBjb250aW51ZQotICAgIF8sIG5hbWUsIHZhbHVlID0gbAotICAgIGlmIG5hbWUgPT0gJ1BZX01BSk9SX1ZFUlNJT04nOiBtYWpvciA9IHZhbHVlCi0gICAgaWYgbmFtZSA9PSAnUFlfTUlOT1JfVkVSU0lPTic6IG1pbm9yID0gdmFsdWUKLSAgICBpZiBuYW1lID09ICdQWV9NSUNST19WRVJTSU9OJzogbWljcm8gPSB2YWx1ZQotICAgIGlmIG5hbWUgPT0gJ1BZX1JFTEVBU0VfTEVWRUwnOiBsZXZlbCA9IGxldmVsc1t2YWx1ZV0KLSAgICBpZiBuYW1lID09ICdQWV9SRUxFQVNFX1NFUklBTCc6IHNlcmlhbCA9IHZhbHVlCi0KLXNob3J0X3ZlcnNpb24gPSBtYWpvcisiLiIrbWlub3IKLSMgU2VlIFBDL21ha2VfdmVyc2lvbmluZm8uYwotRklFTEQzID0gMTAwMCppbnQobWljcm8pICsgMTAqbGV2ZWwgKyBpbnQoc2VyaWFsKQotY3VycmVudF92ZXJzaW9uID0gIiVzLiVkIiAlIChzaG9ydF92ZXJzaW9uLCBGSUVMRDMpCi0KLSMgVGhpcyBzaG91bGQgbmV2ZXIgY2hhbmdlLiBUaGUgVXBncmFkZUNvZGUgb2YgdGhpcyBwYWNrYWdlIGNhbiBiZQotIyB1c2VkIGluIHRoZSBVcGdyYWRlIHRhYmxlIG9mIGZ1dHVyZSBwYWNrYWdlcyB0byBtYWtlIHRoZSBmdXR1cmUKLSMgcGFja2FnZSByZXBsYWNlIHRoaXMgb25lLiBTZWUgIlVwZ3JhZGVDb2RlIFByb3BlcnR5Ii4KLSMgdXBncmFkZV9jb2RlIGdldHMgc2V0IHRvIHVwZ3JhZGVfY29kZV82NCB3aGVuIHdlIGhhdmUgZGV0ZXJtaW5lZAotIyB0aGF0IHRoZSB0YXJnZXQgaXMgV2luNjQuCi11cGdyYWRlX2NvZGVfc25hcHNob3Q9J3s5MkEyNDQ4MS0zRUNCLTQwRkMtODgzNi0wNEI3OTY2RUMwRDV9JwotdXBncmFkZV9jb2RlPSd7NjVFNkRFNDgtQTM1OC00MzRELUFBNEYtNEFGNzJEQjQ3MThGfScKLXVwZ3JhZGVfY29kZV82ND0nezZBOTY1QTBDLTZFRTYtNEUzQS05OTgzLTMyNjNGNTYzMTFFQ30nCi0KLWlmIHNuYXBzaG90OgotICAgIGN1cnJlbnRfdmVyc2lvbiA9ICIlcy4lcy4lcyIgJSAobWFqb3IsIG1pbm9yLCBpbnQodGltZS50aW1lKCkvMzYwMC8yNCkpCi0KLWlmIGZ1bGxfY3VycmVudF92ZXJzaW9uIGlzIE5vbmU6Ci0gICAgZnVsbF9jdXJyZW50X3ZlcnNpb24gPSBjdXJyZW50X3ZlcnNpb24KLQotZXh0ZW5zaW9ucyA9IFsKLSAgICAncHlleHBhdC5weWQnLAotICAgICdzZWxlY3QucHlkJywKLSAgICAndW5pY29kZWRhdGEucHlkJywKLSAgICAnd2luc291bmQucHlkJywKLSAgICAnX2J6Mi5weWQnLAotICAgICdfZWxlbWVudHRyZWUucHlkJywKLSAgICAnX3NvY2tldC5weWQnLAotICAgICdfc3NsLnB5ZCcsCi0gICAgJ190ZXN0Y2FwaS5weWQnLAotICAgICdfdGtpbnRlci5weWQnLAotICAgICdfbXNpLnB5ZCcsCi0gICAgJ19jdHlwZXMucHlkJywKLSAgICAnX2N0eXBlc190ZXN0LnB5ZCcsCi0gICAgJ19zcWxpdGUzLnB5ZCcsCi0gICAgJ19oYXNobGliLnB5ZCcsCi0gICAgJ19tdWx0aXByb2Nlc3NpbmcucHlkJywKLSAgICAnX2x6bWEucHlkJywKLSAgICAnX2RlY2ltYWwucHlkJywKLSAgICAnX3Rlc3RidWZmZXIucHlkJywKLSAgICAnX3Rlc3RpbXBvcnRtdWx0aXBsZS5weWQnLAotICAgICdfb3ZlcmxhcHBlZC5weWQnLAotXQotCi0jIFdlbGwta25vd24gY29tcG9uZW50IFVVSURzCi0jIFRoZXNlIGFyZSBuZWVkZWQgZm9yIFNoYXJlZERMTHMgcmVmZXJlbmNlIGNvdW50ZXI7IGlmCi0jIGEgZGlmZmVyZW50IFVVSUQgd2FzIHVzZWQgZm9yIGVhY2ggaW5jYXJuYXRpb24gb2YsIHNheSwKLSMgcHl0aG9uMjQuZGxsLCBhbiB1cGdyYWRlIHdvdWxkIHNldCB0aGUgcmVmZXJlbmNlIGNvdW50ZXIKLSMgZnJvbSAxIHRvIDIgKGR1ZSB0byB3aGF0IEkgY29uc2lkZXIgYSBidWcgaW4gTVNJKQotIyBVc2luZyB0aGUgc2FtZSBVVUlEIGlzIGZpbmUgc2luY2UgdGhlc2UgZmlsZXMgYXJlIHZlcnNpb25lZCwKLSMgc28gSW5zdGFsbGVyIHdpbGwgYWx3YXlzIGtlZXAgdGhlIG5ld2VzdCB2ZXJzaW9uLgotIyBOT1RFOiBBbGwgdXVpZHMgYXJlIHNlbGYgZ2VuZXJhdGVkLgotcHl0aG9uZGxsX3V1aWQgPSB7Ci0gICAgIjI0IjoiezlCODFFNjE4LTIzMDEtNDAzNS1BQzc3LTc1RDlBQkVCNzMwMX0iLAotICAgICIyNSI6InsyZTQxYjExOC0zOGJkLTRjMWItYTg0MC02OTc3ZWZkMWI5MTF9IiwKLSAgICAiMjYiOiJ7MzRlYmVjYWMtZjA0Ni00ZTFjLWIwZTMtOWJhYzNjZGFhY2ZhfSIsCi0gICAgIjI3IjoiezRmZTIxYzc2LTE3NjAtNDM3Yi1hMmYyLTk5OTA5MTMwYTE3NX0iLAotICAgICIzMCI6Ins2OTUzYmMzYi02NzY4LTQyOTEtODQxMC03OTE0Y2U2ZTJjYTh9IiwKLSAgICAiMzEiOiJ7NGFmY2JhMGItMTNlNC00N2MzLWJlYmUtNDc3NDI4YjQ2OTEzfSIsCi0gICAgIjMyIjoiezNmZjk1MzE1LTEwOTYtNGQzMS1iZDg2LTYwMWQ1NDM4YWQ1ZX0iLAotICAgICIzMyI6IntmNzU4MWNhNC1kMzY4LTRlZWEtOGY4Mi1kNDhjNjRjNGYwNDd9IiwKLSAgICAiMzQiOiJ7N0EwQzU4MTItMjU4My00MEQ5LUJDQkItQ0Q3NDg1RjExMzc3fSIsCi0gICAgfSBbbWFqb3IrbWlub3JdCi0KLSMgQ29tcHV0ZSB0aGUgbmFtZSB0aGF0IFNwaGlueCBnaXZlcyB0byB0aGUgZG9jZmlsZQotZG9jZmlsZSA9IG1pY3JvCi1pZiBsZXZlbCA8IDB4ZjoKLSAgICBpZiBsZXZlbCA9PSAweEM6Ci0gICAgICAgIGRvY2ZpbGUgKz0gInJjJXMiICUgKHNlcmlhbCwpCi0gICAgZWxzZToKLSAgICAgICAgZG9jZmlsZSArPSAnJXglcycgJSAobGV2ZWwsIHNlcmlhbCkKLWRvY2ZpbGUgPSAncHl0aG9uJXMlcyVzLmNobScgJSAobWFqb3IsIG1pbm9yLCBkb2NmaWxlKQotCi0jIEJ1aWxkIHRoZSBtaW5ndyBpbXBvcnQgbGlicmFyeSwgbGlicHl0aG9uWFkuYQotIyBUaGlzIHJlcXVpcmVzICdubScgYW5kICdkbGx0b29sJyBleGVjdXRhYmxlcyBvbiB5b3VyIFBBVEgKLWRlZiBidWlsZF9taW5nd19saWIobGliX2ZpbGUsIGRlZl9maWxlLCBkbGxfZmlsZSwgbWluZ3dfbGliKToKLSAgICB3YXJuaW5nID0gIldBUk5JTkc6ICVzIC0gbGlicHl0aG9uWFguYSBub3QgYnVpbHQiCi0gICAgbm0gPSBmaW5kX2V4ZWN1dGFibGUoJ25tJykKLSAgICBkbGx0b29sID0gZmluZF9leGVjdXRhYmxlKCdkbGx0b29sJykKLQotICAgIGlmIG5vdCBubSBvciBub3QgZGxsdG9vbDoKLSAgICAgICAgcHJpbnQod2FybmluZyAlICJubSBhbmQvb3IgZGxsdG9vbCB3ZXJlIG5vdCBmb3VuZCIpCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgbm1fY29tbWFuZCA9ICclcyAtQ3MgJXMnICUgKG5tLCBsaWJfZmlsZSkKLSAgICBkbGx0b29sX2NvbW1hbmQgPSAiJXMgLS1kbGxuYW1lICVzIC0tZGVmICVzIC0tb3V0cHV0LWxpYiAlcyIgJSBcCi0gICAgICAgIChkbGx0b29sLCBkbGxfZmlsZSwgZGVmX2ZpbGUsIG1pbmd3X2xpYikKLSAgICBleHBvcnRfbWF0Y2ggPSByZS5jb21waWxlKHIiXl9pbXBfXyguKikgaW4gcHl0aG9uXGQrXC5kbGwiKS5tYXRjaAotCi0gICAgZiA9IG9wZW4oZGVmX2ZpbGUsJ3cnKQotICAgIGYud3JpdGUoIkxJQlJBUlkgJXNcbiIgJSBkbGxfZmlsZSkKLSAgICBmLndyaXRlKCJFWFBPUlRTXG4iKQotCi0gICAgbm1fcGlwZSA9IG9zLnBvcGVuKG5tX2NvbW1hbmQpCi0gICAgZm9yIGxpbmUgaW4gbm1fcGlwZS5yZWFkbGluZXMoKToKLSAgICAgICAgbSA9IGV4cG9ydF9tYXRjaChsaW5lKQotICAgICAgICBpZiBtOgotICAgICAgICAgICAgZi53cml0ZShtLmdyb3VwKDEpKyJcbiIpCi0gICAgZi5jbG9zZSgpCi0gICAgZXhpdCA9IG5tX3BpcGUuY2xvc2UoKQotCi0gICAgaWYgZXhpdDoKLSAgICAgICAgcHJpbnQod2FybmluZyAlICJubSBkaWQgbm90IHJ1biBzdWNjZXNzZnVsbHkiKQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGlmIG9zLnN5c3RlbShkbGx0b29sX2NvbW1hbmQpICE9IDA6Ci0gICAgICAgIHByaW50KHdhcm5pbmcgJSAiZGxsdG9vbCBkaWQgbm90IHJ1biBzdWNjZXNzZnVsbHkiKQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIHJldHVybiBUcnVlCi0KLSMgVGFyZ2V0IGZpbGVzICguZGVmIGFuZCAuYSkgZ28gaW4gUENCdWlsZCBkaXJlY3RvcnkKLWxpYl9maWxlID0gb3MucGF0aC5qb2luKHNyY2RpciwgUENCVUlMRCwgInB5dGhvbiVzJXMubGliIiAlIChtYWpvciwgbWlub3IpKQotZGVmX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBQQ0JVSUxELCAicHl0aG9uJXMlcy5kZWYiICUgKG1ham9yLCBtaW5vcikpCi1kbGxfZmlsZSA9ICJweXRob24lcyVzLmRsbCIgJSAobWFqb3IsIG1pbm9yKQotbWluZ3dfbGliID0gb3MucGF0aC5qb2luKHNyY2RpciwgUENCVUlMRCwgImxpYnB5dGhvbiVzJXMuYSIgJSAobWFqb3IsIG1pbm9yKSkKLQotaGF2ZV9taW5ndyA9IGJ1aWxkX21pbmd3X2xpYihsaWJfZmlsZSwgZGVmX2ZpbGUsIGRsbF9maWxlLCBtaW5nd19saWIpCi0KLSMgRGV0ZXJtaW5lIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlCi1pZiBvcy5zeXN0ZW0oIm5tYWtlIC9ub2xvZ28gL2MgL2YgbXNpc3VwcG9ydC5tYWsiKSAhPSAwOgotICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiJ25tYWtlIC9mIG1zaXN1cHBvcnQubWFrJyBmYWlsZWQiKQotZGxsX3BhdGggPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBQQ0JVSUxELCBkbGxfZmlsZSkKLW1zaWxpYi5zZXRfYXJjaF9mcm9tX2ZpbGUoZGxsX3BhdGgpCi1pZiBtc2lsaWIucGVfdHlwZShkbGxfcGF0aCkgIT0gbXNpbGliLnBlX3R5cGUoIm1zaXN1cHBvcnQuZGxsIik6Ci0gICAgcmFpc2UgU3lzdGVtRXJyb3IoIm1zaXN1cHBvcnQuZGxsIGZvciBpbmNvcnJlY3QgYXJjaGl0ZWN0dXJlIikKLQotaWYgbXNpbGliLldpbjY0OgotICAgIHVwZ3JhZGVfY29kZSA9IHVwZ3JhZGVfY29kZV82NAotCi1pZiBzbmFwc2hvdDoKLSAgICBwcm9kdWN0X2NvZGUgPSBtc2lsaWIuZ2VuX3V1aWQoKQotZWxzZToKLSAgICAjIG9mZmljaWFsIHJlbGVhc2U6IGdlbmVyYXRlIFVVSUQgZnJvbSB0aGUgZG93bmxvYWQgbGluayB0aGF0IHRoZSBmaWxlIHdpbGwgaGF2ZQotICAgIGltcG9ydCB1dWlkCi0gICAgcHJvZHVjdF9jb2RlID0gdXVpZC51dWlkMyh1dWlkLk5BTUVTUEFDRV9VUkwsCi0gICAgICAgICAgICAgICAgICAgICdodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8lcy4lcy4lcy9weXRob24tJXMlcy5tc2knICUKLSAgICAgICAgICAgICAgICAgICAgKG1ham9yLCBtaW5vciwgbWljcm8sIGZ1bGxfY3VycmVudF92ZXJzaW9uLCBtc2lsaWIuYXJjaF9leHQpKQotICAgIHByb2R1Y3RfY29kZSA9ICd7JXN9JyAlIHByb2R1Y3RfY29kZQotCi1pZiB0ZXN0cGFja2FnZToKLSAgICBleHQgPSAncHgnCi0gICAgdGVzdHByZWZpeCA9ICd4JwotZWxzZToKLSAgICBleHQgPSAncHknCi0gICAgdGVzdHByZWZpeCA9ICcnCi0KLWlmIG1zaWxpYi5XaW42NDoKLSAgICBTeXN0ZW1Gb2xkZXJOYW1lID0gIltTeXN0ZW02NEZvbGRlcl0iCi0gICAgcmVnaXN0cnlfY29tcG9uZW50ID0gNHwyNTYKLWVsc2U6Ci0gICAgU3lzdGVtRm9sZGVyTmFtZSA9ICJbU3lzdGVtRm9sZGVyXSIKLSAgICByZWdpc3RyeV9jb21wb25lbnQgPSA0Ci0KLW1zaWxpYi5yZXNldCgpCi0KLSMgY29uZGl0aW9uIGluIHdoaWNoIHRvIGluc3RhbGwgcHl0aG9ueHkuZGxsIGluIHN5c3RlbTMyOgotIyBhKSBpdCBpcyBXaW5kb3dzIDl4IG9yCi0jIGIpIGl0IGlzIE5ULCB0aGUgdXNlciBpcyBwcml2aWxlZ2VkLCBhbmQgaGFzIGNob3NlbiBwZXItbWFjaGluZSBpbnN0YWxsYXRpb24KLXN5czMyY29uZCA9ICIoV2luZG93czl4IG9yIChQcml2aWxlZ2VkIGFuZCBBTExVU0VSUykpIgotCi1kZWYgYnVpbGRfZGF0YWJhc2UoKToKLSAgICAiIiJHZW5lcmF0ZSBhbiBlbXB0eSBkYXRhYmFzZSwgd2l0aCBqdXN0IHRoZSBzY2hlbWEgYW5kIHRoZQotICAgIFN1bW1hcnkgaW5mb3JtYXRpb24gc3RyZWFtLiIiIgotICAgIGlmIHNuYXBzaG90OgotICAgICAgICB1YyA9IHVwZ3JhZGVfY29kZV9zbmFwc2hvdAotICAgIGVsc2U6Ci0gICAgICAgIHVjID0gdXBncmFkZV9jb2RlCi0gICAgaWYgbXNpbGliLldpbjY0OgotICAgICAgICBwcm9kdWN0c3VmZml4ID0gIiAoNjQtYml0KSIKLSAgICBlbHNlOgotICAgICAgICBwcm9kdWN0c3VmZml4ID0gIiIKLSAgICAjIHNjaGVtYSByZXByZXNlbnRzIHRoZSBpbnN0YWxsZXIgMi4wIGRhdGFiYXNlIHNjaGVtYS4KLSAgICAjIHNlcXVlbmNlIGlzIHRoZSBzZXQgb2Ygc3RhbmRhcmQgc2VxdWVuY2VzCi0gICAgIyAodWkvZXhlY3V0ZSwgYWRtaW4vYWR2dC9pbnN0YWxsKQotICAgIG1zaW5hbWUgPSAicHl0aG9uLSVzJXMubXNpIiAlIChmdWxsX2N1cnJlbnRfdmVyc2lvbiwgbXNpbGliLmFyY2hfZXh0KQotICAgIGRiID0gbXNpbGliLmluaXRfZGF0YWJhc2UobXNpbmFtZSwKLSAgICAgICAgICAgICAgICAgIHNjaGVtYSwgUHJvZHVjdE5hbWU9IlB5dGhvbiAiK2Z1bGxfY3VycmVudF92ZXJzaW9uK3Byb2R1Y3RzdWZmaXgsCi0gICAgICAgICAgICAgICAgICBQcm9kdWN0Q29kZT1wcm9kdWN0X2NvZGUsCi0gICAgICAgICAgICAgICAgICBQcm9kdWN0VmVyc2lvbj1jdXJyZW50X3ZlcnNpb24sCi0gICAgICAgICAgICAgICAgICBNYW51ZmFjdHVyZXI9dSJQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiIsCi0gICAgICAgICAgICAgICAgICByZXF1ZXN0X3VhYyA9IFRydWUpCi0gICAgIyBUaGUgZGVmYXVsdCBzZXF1ZW5jaW5nIG9mIHRoZSBSZW1vdmVFeGlzdGluZ1Byb2R1Y3RzIGFjdGlvbiBjYXVzZXMKLSAgICAjIHJlbW92YWwgb2YgZmlsZXMgdGhhdCBnb3QganVzdCBpbnN0YWxsZWQuIFBsYWNlIGl0IGFmdGVyCi0gICAgIyBJbnN0YWxsSW5pdGlhbGl6ZSwgc28gd2UgZmlyc3QgdW5pbnN0YWxsIGV2ZXJ5dGhpbmcsIGJ1dCBzdGlsbCByb2xsCi0gICAgIyBiYWNrIGluIGNhc2UgdGhlIGluc3RhbGxhdGlvbiBpcyBpbnRlcnJ1cHRlZAotICAgIG1zaWxpYi5jaGFuZ2Vfc2VxdWVuY2Uoc2VxdWVuY2UuSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZW1vdmVFeGlzdGluZ1Byb2R1Y3RzIiwgMTUxMCkKLSAgICBtc2lsaWIuYWRkX3RhYmxlcyhkYiwgc2VxdWVuY2UpCi0gICAgIyBXZSBjYW5ub3Qgc2V0IEFMTFVTRVJTIGluIHRoZSBwcm9wZXJ0eSB0YWJsZSwgYXMgdGhpcyBjYW5ub3QgYmUKLSAgICAjIHJlc2V0IGlmIHRoZSB1c2VyIGNob3NlcyBhIHBlci11c2VyIGluc3RhbGxhdGlvbi4gSW5zdGVhZCwgd2UKLSAgICAjIG1haW50YWluIFdoaWNoVXNlcnMsIHdoaWNoIGNhbiBiZSAiQUxMIiBvciAiSlVTVE1FIi4gVGhlIFVJIG1hbmFnZXMKLSAgICAjIHRoaXMgcHJvcGVydHksIGFuZCB3aGVuIHRoZSBleGVjdXRpb24gc3RhcnRzLCBBTExVU0VSUyBpcyBzZXQKLSAgICAjIGFjY29yZGluZ2x5LgotICAgIGFkZF9kYXRhKGRiLCAiUHJvcGVydHkiLCBbKCJVcGdyYWRlQ29kZSIsIHVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiV2hpY2hVc2VycyIsICJBTEwiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiUHJvZHVjdExpbmUiLCAiUHl0aG9uJXMlcyIgJSAobWFqb3IsIG1pbm9yKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0gICAgZGIuQ29tbWl0KCkKLSAgICByZXR1cm4gZGIsIG1zaW5hbWUKLQotZGVmIHJlbW92ZV9vbGRfdmVyc2lvbnMoZGIpOgotICAgICJGaWxsIHRoZSB1cGdyYWRlIHRhYmxlLiIKLSAgICBzdGFydCA9ICIlcy4lcy4wIiAlIChtYWpvciwgbWlub3IpCi0gICAgIyBUaGlzIHJlcXVlc3RzIHRoYXQgZmVhdHVyZSBzZWxlY3Rpb24gc3RhdGVzIG9mIGFuIG9sZGVyCi0gICAgIyBpbnN0YWxsYXRpb24gc2hvdWxkIGJlIGZvcndhcmRlZCBpbnRvIHRoaXMgb25lLiBVcGdyYWRpbmcKLSAgICAjIHJlcXVpcmVzIHRoYXQgYm90aCB0aGUgb2xkIGFuZCB0aGUgbmV3IGluc3RhbGxhdGlvbiBhcmUKLSAgICAjIGVpdGhlciBib3RoIHBlci1tYWNoaW5lIG9yIHBlci11c2VyLgotICAgIG1pZ3JhdGVfZmVhdHVyZXMgPSAxCi0gICAgIyBTZWUgIlVwZ3JhZGUgVGFibGUiLiBXZSByZW1vdmUgcmVsZWFzZXMgd2l0aCB0aGUgc2FtZSBtYWpvciBhbmQKLSAgICAjIG1pbm9yIHZlcnNpb24uIEZvciBhbiBzbmFwc2hvdCwgd2UgcmVtb3ZlIGFsbCBlYXJsaWVyIHNuYXBzaG90cy4gRm9yCi0gICAgIyBhIHJlbGVhc2UsIHdlIHJlbW92ZSBhbGwgc25hcHNob3RzLCBhbmQgYWxsIGVhcmxpZXIgcmVsZWFzZXMuCi0gICAgaWYgc25hcHNob3Q6Ci0gICAgICAgIGFkZF9kYXRhKGRiLCAiVXBncmFkZSIsCi0gICAgICAgICAgICBbKHVwZ3JhZGVfY29kZV9zbmFwc2hvdCwgc3RhcnQsCi0gICAgICAgICAgICAgIGN1cnJlbnRfdmVyc2lvbiwKLSAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgICAgICAgICAgICAjIElnbm9yZSBsYW5ndWFnZQotICAgICAgICAgICAgICBtaWdyYXRlX2ZlYXR1cmVzLAotICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgICAgICAgICAgICMgTWlncmF0ZSBBTEwgZmVhdHVyZXMKLSAgICAgICAgICAgICAgIlJFTU9WRU9MRFNOQVBTSE9UIildKQotICAgICAgICBwcm9wcyA9ICJSRU1PVkVPTERTTkFQU0hPVCIKLSAgICBlbHNlOgotICAgICAgICBhZGRfZGF0YShkYiwgIlVwZ3JhZGUiLAotICAgICAgICAgICAgWyh1cGdyYWRlX2NvZGUsIHN0YXJ0LCBjdXJyZW50X3ZlcnNpb24sCi0gICAgICAgICAgICAgIE5vbmUsIG1pZ3JhdGVfZmVhdHVyZXMsIE5vbmUsICJSRU1PVkVPTERWRVJTSU9OIiksCi0gICAgICAgICAgICAgKHVwZ3JhZGVfY29kZV9zbmFwc2hvdCwgc3RhcnQsICIlcy4lZC4wIiAlIChtYWpvciwgaW50KG1pbm9yKSsxKSwKLSAgICAgICAgICAgICAgTm9uZSwgbWlncmF0ZV9mZWF0dXJlcywgTm9uZSwgIlJFTU9WRU9MRFNOQVBTSE9UIildKQotICAgICAgICBwcm9wcyA9ICJSRU1PVkVPTERTTkFQU0hPVDtSRU1PVkVPTERWRVJTSU9OIgotCi0gICAgcHJvcHMgKz0gIjtUQVJHRVRESVI7RExMRElSO0xBVU5DSEVSRElSIgotICAgICMgSW5zdGFsbGVyIGNvbGxlY3RzIHRoZSBwcm9kdWN0IGNvZGVzIG9mIHRoZSBlYXJsaWVyIHJlbGVhc2VzIGluCi0gICAgIyB0aGVzZSBwcm9wZXJ0aWVzLiBJbiBvcmRlciB0byBhbGxvdyBtb2RpZmljYXRpb24gb2YgdGhlIHByb3BlcnRpZXMsCi0gICAgIyB0aGV5IG11c3QgYmUgZGVjbGFyZWQgYXMgc2VjdXJlLiBTZWUgIlNlY3VyZUN1c3RvbVByb3BlcnRpZXMgUHJvcGVydHkiCi0gICAgYWRkX2RhdGEoZGIsICJQcm9wZXJ0eSIsIFsoIlNlY3VyZUN1c3RvbVByb3BlcnRpZXMiLCBwcm9wcyldKQotCi1jbGFzcyBQeURpYWxvZyhEaWFsb2cpOgotICAgICIiIkRpYWxvZyBjbGFzcyB3aXRoIGEgZml4ZWQgbGF5b3V0OiBjb250cm9scyBhdCB0aGUgdG9wLCB0aGVuIGEgcnVsZXIsCi0gICAgdGhlbiBhIGxpc3Qgb2YgYnV0dG9uczogYmFjaywgbmV4dCwgY2FuY2VsLiBPcHRpb25hbGx5IGEgYml0bWFwIGF0IHRoZQotICAgIGxlZnQuIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KToKLSAgICAgICAgIiIiRGlhbG9nKGRhdGFiYXNlLCBuYW1lLCB4LCB5LCB3LCBoLCBhdHRyaWJ1dGVzLCB0aXRsZSwgZmlyc3QsCi0gICAgICAgIGRlZmF1bHQsIGNhbmNlbCwgYml0bWFwPXRydWUpIiIiCi0gICAgICAgIERpYWxvZy5fX2luaXRfXyhzZWxmLCAqYXJncykKLSAgICAgICAgcnVsZXIgPSBzZWxmLmggLSAzNgotICAgICAgICBibXdpZHRoID0gMTUyKnJ1bGVyLzMyOAotICAgICAgICBpZiBrdy5nZXQoImJpdG1hcCIsIFRydWUpOgotICAgICAgICAgICAgc2VsZi5iaXRtYXAoIkJpdG1hcCIsIDAsIDAsIGJtd2lkdGgsIHJ1bGVyLCAiUHl0aG9uV2luIikKLSAgICAgICAgc2VsZi5saW5lKCJCb3R0b21MaW5lIiwgMCwgcnVsZXIsIHNlbGYudywgMCkKLQotICAgIGRlZiB0aXRsZShzZWxmLCB0aXRsZSk6Ci0gICAgICAgICJTZXQgdGhlIHRpdGxlIHRleHQgb2YgdGhlIGRpYWxvZyBhdCB0aGUgdG9wLiIKLSAgICAgICAgIyBuYW1lLCB4LCB5LCB3LCBoLCBmbGFncz1WaXNpYmxlfEVuYWJsZWR8VHJhbnNwYXJlbnR8Tm9QcmVmaXgsCi0gICAgICAgICMgdGV4dCwgaW4gVmVyZGFuYUJvbGQxMAotICAgICAgICBzZWxmLnRleHQoIlRpdGxlIiwgMTM1LCAxMCwgMjIwLCA2MCwgMHgzMDAwMywKLSAgICAgICAgICAgICAgICAgIHIie1xWZXJkYW5hQm9sZDEwfSVzIiAlIHRpdGxlKQotCi0gICAgZGVmIGJhY2soc2VsZiwgdGl0bGUsIG5leHQsIG5hbWUgPSAiQmFjayIsIGFjdGl2ZSA9IDEpOgotICAgICAgICAiIiJBZGQgYSBiYWNrIGJ1dHRvbiB3aXRoIGEgZ2l2ZW4gdGl0bGUsIHRoZSB0YWItbmV4dCBidXR0b24sCi0gICAgICAgIGl0cyBuYW1lIGluIHRoZSBDb250cm9sIHRhYmxlLCBwb3NzaWJseSBpbml0aWFsbHkgZGlzYWJsZWQuCi0KLSAgICAgICAgUmV0dXJuIHRoZSBidXR0b24sIHNvIHRoYXQgZXZlbnRzIGNhbiBiZSBhc3NvY2lhdGVkIiIiCi0gICAgICAgIGlmIGFjdGl2ZToKLSAgICAgICAgICAgIGZsYWdzID0gMyAjIFZpc2libGV8RW5hYmxlZAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZmxhZ3MgPSAxICMgVmlzaWJsZQotICAgICAgICByZXR1cm4gc2VsZi5wdXNoYnV0dG9uKG5hbWUsIDE4MCwgc2VsZi5oLTI3ICwgNTYsIDE3LCBmbGFncywgdGl0bGUsIG5leHQpCi0KLSAgICBkZWYgY2FuY2VsKHNlbGYsIHRpdGxlLCBuZXh0LCBuYW1lID0gIkNhbmNlbCIsIGFjdGl2ZSA9IDEpOgotICAgICAgICAiIiJBZGQgYSBjYW5jZWwgYnV0dG9uIHdpdGggYSBnaXZlbiB0aXRsZSwgdGhlIHRhYi1uZXh0IGJ1dHRvbiwKLSAgICAgICAgaXRzIG5hbWUgaW4gdGhlIENvbnRyb2wgdGFibGUsIHBvc3NpYmx5IGluaXRpYWxseSBkaXNhYmxlZC4KLQotICAgICAgICBSZXR1cm4gdGhlIGJ1dHRvbiwgc28gdGhhdCBldmVudHMgY2FuIGJlIGFzc29jaWF0ZWQiIiIKLSAgICAgICAgaWYgYWN0aXZlOgotICAgICAgICAgICAgZmxhZ3MgPSAzICMgVmlzaWJsZXxFbmFibGVkCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmbGFncyA9IDEgIyBWaXNpYmxlCi0gICAgICAgIHJldHVybiBzZWxmLnB1c2hidXR0b24obmFtZSwgMzA0LCBzZWxmLmgtMjcsIDU2LCAxNywgZmxhZ3MsIHRpdGxlLCBuZXh0KQotCi0gICAgZGVmIG5leHQoc2VsZiwgdGl0bGUsIG5leHQsIG5hbWUgPSAiTmV4dCIsIGFjdGl2ZSA9IDEpOgotICAgICAgICAiIiJBZGQgYSBOZXh0IGJ1dHRvbiB3aXRoIGEgZ2l2ZW4gdGl0bGUsIHRoZSB0YWItbmV4dCBidXR0b24sCi0gICAgICAgIGl0cyBuYW1lIGluIHRoZSBDb250cm9sIHRhYmxlLCBwb3NzaWJseSBpbml0aWFsbHkgZGlzYWJsZWQuCi0KLSAgICAgICAgUmV0dXJuIHRoZSBidXR0b24sIHNvIHRoYXQgZXZlbnRzIGNhbiBiZSBhc3NvY2lhdGVkIiIiCi0gICAgICAgIGlmIGFjdGl2ZToKLSAgICAgICAgICAgIGZsYWdzID0gMyAjIFZpc2libGV8RW5hYmxlZAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZmxhZ3MgPSAxICMgVmlzaWJsZQotICAgICAgICByZXR1cm4gc2VsZi5wdXNoYnV0dG9uKG5hbWUsIDIzNiwgc2VsZi5oLTI3LCA1NiwgMTcsIGZsYWdzLCB0aXRsZSwgbmV4dCkKLQotICAgIGRlZiB4YnV0dG9uKHNlbGYsIG5hbWUsIHRpdGxlLCBuZXh0LCB4cG9zKToKLSAgICAgICAgIiIiQWRkIGEgYnV0dG9uIHdpdGggYSBnaXZlbiB0aXRsZSwgdGhlIHRhYi1uZXh0IGJ1dHRvbiwKLSAgICAgICAgaXRzIG5hbWUgaW4gdGhlIENvbnRyb2wgdGFibGUsIGdpdmluZyBpdHMgeCBwb3NpdGlvbjsgdGhlCi0gICAgICAgIHktcG9zaXRpb24gaXMgYWxpZ25lZCB3aXRoIHRoZSBvdGhlciBidXR0b25zLgotCi0gICAgICAgIFJldHVybiB0aGUgYnV0dG9uLCBzbyB0aGF0IGV2ZW50cyBjYW4gYmUgYXNzb2NpYXRlZCIiIgotICAgICAgICByZXR1cm4gc2VsZi5wdXNoYnV0dG9uKG5hbWUsIGludChzZWxmLncqeHBvcyAtIDI4KSwgc2VsZi5oLTI3LCA1NiwgMTcsIDMsIHRpdGxlLCBuZXh0KQotCi1kZWYgYWRkX3VpKGRiKToKLSAgICB4ID0geSA9IDUwCi0gICAgdyA9IDM3MAotICAgIGggPSAzMDAKLSAgICB0aXRsZSA9ICJbUHJvZHVjdE5hbWVdIFNldHVwIgotCi0gICAgIyBzZWUgIkRpYWxvZyBTdHlsZSBCaXRzIgotICAgIG1vZGFsID0gMyAgICAgICMgdmlzaWJsZSB8IG1vZGFsCi0gICAgbW9kZWxlc3MgPSAxICAgIyB2aXNpYmxlCi0gICAgdHJhY2tfZGlza19zcGFjZSA9IDMyCi0KLSAgICBhZGRfZGF0YShkYiwgJ0FjdGlvblRleHQnLCB1aXNhbXBsZS5BY3Rpb25UZXh0KQotICAgIGFkZF9kYXRhKGRiLCAnVUlUZXh0JywgdWlzYW1wbGUuVUlUZXh0KQotCi0gICAgIyBCaXRtYXBzCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNyY2RpcityIlxQQ1xweXRob25faWNvbi5leGUiKToKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJSdW4gaWNvbnMubWFrIGluIFBDIGRpcmVjdG9yeSIpCi0gICAgYWRkX2RhdGEoZGIsICJCaW5hcnkiLAotICAgICAgICAgICAgIFsoIlB5dGhvbldpbiIsIG1zaWxpYi5CaW5hcnkociIlc1xQQ2J1aWxkXGluc3RhbGxlci5ibXAiICUgc3JjZGlyKSksICMgMTUyeDMyOCBwaXhlbHMKLSAgICAgICAgICAgICAgKCJweS5pY28iLG1zaWxpYi5CaW5hcnkoc3JjZGlyK3IiXFBDXHB5LmljbyIpKSwKLSAgICAgICAgICAgICBdKQotICAgIGFkZF9kYXRhKGRiLCAiSWNvbiIsCi0gICAgICAgICAgICAgWygicHl0aG9uX2ljb24uZXhlIiwgbXNpbGliLkJpbmFyeShzcmNkaXIrciJcUENccHl0aG9uX2ljb24uZXhlIikpXSkKLQotICAgICMgU2NyaXB0cwotICAgICMgQ2hlY2tEaXIgc2V0cyBUYXJnZXRFeGlzdHMgaWYgVEFSR0VURElSIGV4aXN0cy4KLSAgICAjIFVwZGF0ZUVkaXRJRExFIHNldHMgdGhlIFJFR0lTVFJZLnRjbCBjb21wb25lbnQgaW50bwotICAgICMgdGhlIGluc3RhbGxlZC91bmluc3RhbGxlZCBzdGF0ZSBhY2NvcmRpbmcgdG8gYm90aCB0aGUKLSAgICAjIEV4dGVuc2lvbnMgYW5kIFRjbFRrIGZlYXR1cmVzLgotICAgIGFkZF9kYXRhKGRiLCAiQmluYXJ5IiwgWygiU2NyaXB0IiwgbXNpbGliLkJpbmFyeSgibXNpc3VwcG9ydC5kbGwiKSldKQotICAgICMgU2VlICJDdXN0b20gQWN0aW9uIFR5cGUgMSIKLSAgICBpZiBtc2lsaWIuV2luNjQ6Ci0gICAgICAgIENoZWNrRGlyID0gIkNoZWNrRGlyIgotICAgICAgICBVcGRhdGVFZGl0SURMRSA9ICJVcGRhdGVFZGl0SURMRSIKLSAgICBlbHNlOgotICAgICAgICBDaGVja0RpciA9ICAiX0NoZWNrRGlyQDQiCi0gICAgICAgIFVwZGF0ZUVkaXRJRExFID0gIl9VcGRhdGVFZGl0SURMRUA0IgotICAgIGFkZF9kYXRhKGRiLCAiQ3VzdG9tQWN0aW9uIiwKLSAgICAgICAgWygiQ2hlY2tEaXIiLCAxLCAiU2NyaXB0IiwgQ2hlY2tEaXIpXSkKLSAgICBpZiBoYXZlX3RjbDoKLSAgICAgICAgYWRkX2RhdGEoZGIsICJDdXN0b21BY3Rpb24iLAotICAgICAgICBbKCJVcGRhdGVFZGl0SURMRSIsIDEsICJTY3JpcHQiLCBVcGRhdGVFZGl0SURMRSldKQotCi0gICAgIyBVSSBjdXN0b21pemF0aW9uIHByb3BlcnRpZXMKLSAgICBhZGRfZGF0YShkYiwgIlByb3BlcnR5IiwKLSAgICAgICAgICAgICAjIFNlZSAiRGVmYXVsdFVJRm9udCBQcm9wZXJ0eSIKLSAgICAgICAgICAgICBbKCJEZWZhdWx0VUlGb250IiwgIkRsZ0ZvbnQ4IiksCi0gICAgICAgICAgICAgICMgU2VlICJFcnJvckRpYWxvZyBTdHlsZSBCaXQiCi0gICAgICAgICAgICAgICgiRXJyb3JEaWFsb2ciLCAiRXJyb3JEbGciKSwKLSAgICAgICAgICAgICAgKCJQcm9ncmVzczEiLCAiSW5zdGFsbCIpLCAgICMgbW9kaWZpZWQgaW4gbWFpbnRlbmFuY2UgdHlwZSBkbGcKLSAgICAgICAgICAgICAgKCJQcm9ncmVzczIiLCAiaW5zdGFsbHMiKSwKLSAgICAgICAgICAgICAgKCJNYWludGVuYW5jZUZvcm1fQWN0aW9uIiwgIlJlcGFpciIpXSkKLQotICAgICMgRm9udHMsIHNlZSAiVGV4dFN0eWxlIFRhYmxlIgotICAgIGFkZF9kYXRhKGRiLCAiVGV4dFN0eWxlIiwKLSAgICAgICAgICAgICBbKCJEbGdGb250OCIsICJUYWhvbWEiLCA5LCBOb25lLCAwKSwKLSAgICAgICAgICAgICAgKCJEbGdGb250Qm9sZDgiLCAiVGFob21hIiwgOCwgTm9uZSwgMSksICNib2xkCi0gICAgICAgICAgICAgICgiVmVyZGFuYUJvbGQxMCIsICJWZXJkYW5hIiwgMTAsIE5vbmUsIDEpLAotICAgICAgICAgICAgICAoIlZlcmRhbmFSZWQ5IiwgIlZlcmRhbmEiLCA5LCAyNTUsIDApLAotICAgICAgICAgICAgIF0pCi0KLSAgICBjb21waWxlYXJncyA9IHInLVdpICJbVEFSR0VURElSXUxpYlxjb21waWxlYWxsLnB5IiAtZiAteCAiYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xweTJffGxpYjJ0bzNcXHRlc3RzfHZlbnZcXHNjcmlwdHMiICJbVEFSR0VURElSXUxpYiInCi0gICAgbGliMnRvM2FyZ3MgPSByJy1jICJpbXBvcnQgbGliMnRvMy5weWdyYW0sIGxpYjJ0bzMucGF0Y29tcDtsaWIydG8zLnBhdGNvbXAuUGF0dGVybkNvbXBpbGVyKCkiJwotICAgIHVwZGF0ZXBpcGFyZ3MgPSByJy1tIGVuc3VyZXBpcCAtVSAtLWRlZmF1bHQtcGlwJwotICAgIHJlbW92ZXBpcGFyZ3MgPSByJy1CIC1tIGVuc3VyZXBpcC5fdW5pbnN0YWxsJwotICAgICMgU2VlICJDdXN0b21BY3Rpb24gVGFibGUiCi0gICAgYWRkX2RhdGEoZGIsICJDdXN0b21BY3Rpb24iLCBbCi0gICAgICAgICMgbXNpZGJDdXN0b21BY3Rpb25UeXBlRmlyc3RTZXF1ZW5jZSArIG1zaWRiQ3VzdG9tQWN0aW9uVHlwZVRleHREYXRhICsgbXNpZGJDdXN0b21BY3Rpb25UeXBlUHJvcGVydHkKLSAgICAgICAgIyBTZWUgIkN1c3RvbSBBY3Rpb24gVHlwZSA1MSIsCi0gICAgICAgICMgIkN1c3RvbSBBY3Rpb24gRXhlY3V0aW9uIFNjaGVkdWxpbmcgT3B0aW9ucyIKLSAgICAgICAgKCJJbml0aWFsVGFyZ2V0RGlyIiwgMzA3LCAiVEFSR0VURElSIiwKLSAgICAgICAgICJbV2luZG93c1ZvbHVtZV1QeXRob24lcyVzIiAlIChtYWpvciwgbWlub3IpKSwKLSAgICAgICAgKCJTZXRETExEaXJUb1RhcmdldCIsIDMwNywgIkRMTERJUiIsICJbVEFSR0VURElSXSIpLAotICAgICAgICAoIlNldERMTERpclRvU3lzdGVtMzIiLCAzMDcsICJETExESVIiLCBTeXN0ZW1Gb2xkZXJOYW1lKSwKLSAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvVGFyZ2V0IiwgMzA3LCAiTEFVTkNIRVJESVIiLCAiW1RBUkdFVERJUl0iKSwKLSAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvV2luZG93cyIsIDMwNywgIkxBVU5DSEVSRElSIiwgIltXaW5kb3dzRm9sZGVyXSIpLAotICAgICAgICAjIG1zaWRiQ3VzdG9tQWN0aW9uVHlwZUV4ZSArIG1zaWRiQ3VzdG9tQWN0aW9uVHlwZVNvdXJjZUZpbGUKLSAgICAgICAgIyBTZWUgIkN1c3RvbSBBY3Rpb24gVHlwZSAxOCIKLSAgICAgICAgIyBtc2lkYkN1c3RvbUFjdGlvblR5cGVJblNjcmlwdCAoMTAyNCk7IHJ1biBkdXJpbmcgYWN0dWFsIGluc3RhbGxhdGlvbgotICAgICAgICAjIG1zaWRiQ3VzdG9tQWN0aW9uVHlwZU5vSW1wZXJzb25hdGUgKDIwNDgpOyBydW4gYWN0aW9uIGluIHN5c3RlbSBhY2NvdW50LCBub3QgdXNlciBhY2NvdW50Ci0gICAgICAgICgiQ29tcGlsZVB5YyIsIDE4KzEwMjQrMjA0OCwgInB5dGhvbi5leGUiLCBjb21waWxlYXJncyksCi0gICAgICAgICgiQ29tcGlsZVB5byIsIDE4KzEwMjQrMjA0OCwgInB5dGhvbi5leGUiLCAiLU8gIitjb21waWxlYXJncyksCi0gICAgICAgICgiQ29tcGlsZUdyYW1tYXIiLCAxOCsxMDI0KzIwNDgsICJweXRob24uZXhlIiwgbGliMnRvM2FyZ3MpLAotICAgICAgICAoIlVwZGF0ZVBpcCIsIDE4KzEwMjQrMjA0OCwgInB5dGhvbi5leGUiLCB1cGRhdGVwaXBhcmdzKSwKLSAgICAgICAgKCJSZW1vdmVQaXAiLCAxOCsxMDI0KzIwNDgsICJweXRob24uZXhlIiwgcmVtb3ZlcGlwYXJncyksCi0gICAgICAgIF0pCi0KLSAgICAjIFVJIFNlcXVlbmNlcywgc2VlICJJbnN0YWxsVUlTZXF1ZW5jZSBUYWJsZSIsICJVc2luZyBhIFNlcXVlbmNlIFRhYmxlIgotICAgICMgTnVtYmVycyBpbmRpY2F0ZSBzZXF1ZW5jZTsgc2VlIHNlcXVlbmNlLnB5IGZvciBob3cgdGhlc2UgYWN0aW9uIGludGVncmF0ZQotICAgIGFkZF9kYXRhKGRiLCAiSW5zdGFsbFVJU2VxdWVuY2UiLAotICAgICAgICAgICAgIFsoIlByZXBhcmVEbGciLCAiTm90IFByaXZpbGVnZWQgb3IgV2luZG93czl4IG9yIEluc3RhbGxlZCIsIDE0MCksCi0gICAgICAgICAgICAgICgiV2hpY2hVc2Vyc0RsZyIsICJQcml2aWxlZ2VkIGFuZCBub3QgV2luZG93czl4IGFuZCBub3QgSW5zdGFsbGVkIiwgMTQxKSwKLSAgICAgICAgICAgICAgKCJJbml0aWFsVGFyZ2V0RGlyIiwgJ1RBUkdFVERJUj0iIicsIDc1MCksCi0gICAgICAgICAgICAgICMgSW4gdGhlIHVzZXIgaW50ZXJmYWNlLCBhc3N1bWUgYWxsLXVzZXJzIGluc3RhbGxhdGlvbiBpZiBwcml2aWxlZ2VkLgotICAgICAgICAgICAgICAoIlNldERMTERpclRvU3lzdGVtMzIiLCAnRExMRElSPSIiIGFuZCAnICsgc3lzMzJjb25kLCA3NTEpLAotICAgICAgICAgICAgICAoIlNldERMTERpclRvVGFyZ2V0IiwgJ0RMTERJUj0iIiBhbmQgbm90ICcgKyBzeXMzMmNvbmQsIDc1MiksCi0gICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1dpbmRvd3MiLCAnTEFVTkNIRVJESVI9IiIgYW5kICcgKyBzeXMzMmNvbmQsIDc1MyksCi0gICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1RhcmdldCIsICdMQVVOQ0hFUkRJUj0iIiBhbmQgbm90ICcgKyBzeXMzMmNvbmQsIDc1NCksCi0gICAgICAgICAgICAgICgiU2VsZWN0RGlyZWN0b3J5RGxnIiwgIk5vdCBJbnN0YWxsZWQiLCAxMjMwKSwKLSAgICAgICAgICAgICAgIyBYWFggbm8gc3VwcG9ydCBmb3IgcmVzdW1lIGluc3RhbGxhdGlvbnMgeWV0Ci0gICAgICAgICAgICAgICMoIlJlc3VtZURsZyIsICJJbnN0YWxsZWQgQU5EIChSRVNVTUUgT1IgUHJlc2VsZWN0ZWQpIiwgMTI0MCksCi0gICAgICAgICAgICAgICgiTWFpbnRlbmFuY2VUeXBlRGxnIiwgIkluc3RhbGxlZCBBTkQgTk9UIFJFU1VNRSBBTkQgTk9UIFByZXNlbGVjdGVkIiwgMTI1MCksCi0gICAgICAgICAgICAgICgiUHJvZ3Jlc3NEbGciLCBOb25lLCAxMjgwKV0pCi0gICAgYWRkX2RhdGEoZGIsICJBZG1pblVJU2VxdWVuY2UiLAotICAgICAgICAgICAgIFsoIkluaXRpYWxUYXJnZXREaXIiLCAnVEFSR0VURElSPSIiJywgNzUwKSwKLSAgICAgICAgICAgICAgKCJTZXRETExEaXJUb1RhcmdldCIsICdETExESVI9IiInLCA3NTEpLAotICAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9UYXJnZXQiLCAnTEFVTkNIRVJESVI9IiInLCA3NTIpLAotICAgICAgICAgICAgIF0pCi0KLSAgICAjIFByZXBlbmQgVEFSR0VURElSIHRvIHRoZSBzeXN0ZW0gcGF0aCwgYW5kIHJlbW92ZSBpdCBvbiB1bmluc3RhbGwuCi0gICAgYWRkX2RhdGEoZGIsICJFbnZpcm9ubWVudCIsCi0gICAgICAgICAgICAgWygiUGF0aEFkZGl0aW9uIiwgIj0tKlBhdGgiLCAiW1RBUkdFVERJUl07W1RBUkdFVERJUl1TY3JpcHRzO1t+XSIsICJSRUdJU1RSWS5wYXRoIildKQotCi0gICAgIyBFeGVjdXRlIFNlcXVlbmNlcwotICAgIGFkZF9kYXRhKGRiLCAiSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZSIsCi0gICAgICAgICAgICBbKCJJbml0aWFsVGFyZ2V0RGlyIiwgJ1RBUkdFVERJUj0iIicsIDc1MCksCi0gICAgICAgICAgICAgKCJTZXRETExEaXJUb1N5c3RlbTMyIiwgJ0RMTERJUj0iIiBhbmQgJyArIHN5czMyY29uZCwgNzUxKSwKLSAgICAgICAgICAgICAoIlNldERMTERpclRvVGFyZ2V0IiwgJ0RMTERJUj0iIiBhbmQgbm90ICcgKyBzeXMzMmNvbmQsIDc1MiksCi0gICAgICAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvV2luZG93cyIsICdMQVVOQ0hFUkRJUj0iIiBhbmQgJyArIHN5czMyY29uZCwgNzUzKSwKLSAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9UYXJnZXQiLCAnTEFVTkNIRVJESVI9IiIgYW5kIG5vdCAnICsgc3lzMzJjb25kLCA3NTQpLAotICAgICAgICAgICAgICgiVXBkYXRlRWRpdElETEUiLCBOb25lLCAxMDUwKSwKLSAgICAgICAgICAgICAjIHJ1biBjb21tYW5kIGlmIGluc3RhbGwgc3RhdGUgb2YgcGlwIGNoYW5nZXMgdG8gSU5TVEFMTFNUQVRFX0xPQ0FMCi0gICAgICAgICAgICAgIyBydW4gYWZ0ZXIgSW5zdGFsbEZpbGVzCi0gICAgICAgICAgICAgKCJVcGRhdGVQaXAiLCAiJnBpcF9mZWF0dXJlPTMiLCA0MDAxKSwKLSAgICAgICAgICAgICAjIHJlbW92ZSBwaXAgd2hlbiBzdGF0ZSBjaGFuZ2VzIHRvIElOU1RBTExTVEFURV9BQlNFTlQKLSAgICAgICAgICAgICAjIHJ1biBiZWZvcmUgUmVtb3ZlRmlsZXMKLSAgICAgICAgICAgICAoIlJlbW92ZVBpcCIsICImcGlwX2ZlYXR1cmU9MiIsIDM0OTkpLAotICAgICAgICAgICAgICgiQ29tcGlsZVB5YyIsICJDT01QSUxFQUxMIiwgNDAwMiksCi0gICAgICAgICAgICAgKCJDb21waWxlUHlvIiwgIkNPTVBJTEVBTEwiLCA0MDAzKSwKLSAgICAgICAgICAgICAoIkNvbXBpbGVHcmFtbWFyIiwgIkNPTVBJTEVBTEwiLCA0MDA0KSwKLSAgICAgICAgICAgIF0pCi0gICAgYWRkX2RhdGEoZGIsICJBZG1pbkV4ZWN1dGVTZXF1ZW5jZSIsCi0gICAgICAgICAgICBbKCJJbml0aWFsVGFyZ2V0RGlyIiwgJ1RBUkdFVERJUj0iIicsIDc1MCksCi0gICAgICAgICAgICAgKCJTZXRETExEaXJUb1RhcmdldCIsICdETExESVI9IiInLCA3NTEpLAotICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1RhcmdldCIsICdMQVVOQ0hFUkRJUj0iIicsIDc1MiksCi0gICAgICAgICAgICBdKQotCi0gICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBTdGFuZGFyZCBkaWFsb2dzOiBGYXRhbEVycm9yLCBVc2VyRXhpdCwgRXhpdERpYWxvZwotICAgIGZhdGFsPVB5RGlhbG9nKGRiLCAiRmF0YWxFcnJvciIsIHgsIHksIHcsIGgsIG1vZGFsLCB0aXRsZSwKLSAgICAgICAgICAgICAgICAgIkZpbmlzaCIsICJGaW5pc2giLCAiRmluaXNoIikKLSAgICBmYXRhbC50aXRsZSgiW1Byb2R1Y3ROYW1lXSBJbnN0YWxsZXIgZW5kZWQgcHJlbWF0dXJlbHkiKQotICAgIGZhdGFsLmJhY2soIjwgQmFjayIsICJGaW5pc2giLCBhY3RpdmUgPSAwKQotICAgIGZhdGFsLmNhbmNlbCgiQ2FuY2VsIiwgIkJhY2siLCBhY3RpdmUgPSAwKQotICAgIGZhdGFsLnRleHQoIkRlc2NyaXB0aW9uMSIsIDEzNSwgNzAsIDIyMCwgODAsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAiW1Byb2R1Y3ROYW1lXSBzZXR1cCBlbmRlZCBwcmVtYXR1cmVseSBiZWNhdXNlIG9mIGFuIGVycm9yLiAgWW91ciBzeXN0ZW0gaGFzIG5vdCBiZWVuIG1vZGlmaWVkLiAgVG8gaW5zdGFsbCB0aGlzIHByb2dyYW0gYXQgYSBsYXRlciB0aW1lLCBwbGVhc2UgcnVuIHRoZSBpbnN0YWxsYXRpb24gYWdhaW4uIikKLSAgICBmYXRhbC50ZXh0KCJEZXNjcmlwdGlvbjIiLCAxMzUsIDE1NSwgMjIwLCAyMCwgMHgzMDAwMywKLSAgICAgICAgICAgICAgICJDbGljayB0aGUgRmluaXNoIGJ1dHRvbiB0byBleGl0IHRoZSBJbnN0YWxsZXIuIikKLSAgICBjPWZhdGFsLm5leHQoIkZpbmlzaCIsICJDYW5jZWwiLCBuYW1lPSJGaW5pc2giKQotICAgICMgU2VlICJDb250cm9sRXZlbnQgVGFibGUiLiBQYXJhbWV0ZXJzIGFyZSB0aGUgZXZlbnQsIHRoZSBwYXJhbWV0ZXIKLSAgICAjIHRvIHRoZSBhY3Rpb24sIGFuZCBvcHRpb25hbGx5IHRoZSBjb25kaXRpb24gZm9yIHRoZSBldmVudCwgYW5kIHRoZSBvcmRlcgotICAgICMgb2YgZXZlbnRzLgotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJFeGl0IikKLQotICAgIHVzZXJfZXhpdD1QeURpYWxvZyhkYiwgIlVzZXJFeGl0IiwgeCwgeSwgdywgaCwgbW9kYWwsIHRpdGxlLAotICAgICAgICAgICAgICAgICAiRmluaXNoIiwgIkZpbmlzaCIsICJGaW5pc2giKQotICAgIHVzZXJfZXhpdC50aXRsZSgiW1Byb2R1Y3ROYW1lXSBJbnN0YWxsZXIgd2FzIGludGVycnVwdGVkIikKLSAgICB1c2VyX2V4aXQuYmFjaygiPCBCYWNrIiwgIkZpbmlzaCIsIGFjdGl2ZSA9IDApCi0gICAgdXNlcl9leGl0LmNhbmNlbCgiQ2FuY2VsIiwgIkJhY2siLCBhY3RpdmUgPSAwKQotICAgIHVzZXJfZXhpdC50ZXh0KCJEZXNjcmlwdGlvbjEiLCAxMzUsIDcwLCAyMjAsIDgwLCAweDMwMDAzLAotICAgICAgICAgICAgICAgIltQcm9kdWN0TmFtZV0gc2V0dXAgd2FzIGludGVycnVwdGVkLiAgWW91ciBzeXN0ZW0gaGFzIG5vdCBiZWVuIG1vZGlmaWVkLiAgIgotICAgICAgICAgICAgICAgIlRvIGluc3RhbGwgdGhpcyBwcm9ncmFtIGF0IGEgbGF0ZXIgdGltZSwgcGxlYXNlIHJ1biB0aGUgaW5zdGFsbGF0aW9uIGFnYWluLiIpCi0gICAgdXNlcl9leGl0LnRleHQoIkRlc2NyaXB0aW9uMiIsIDEzNSwgMTU1LCAyMjAsIDIwLCAweDMwMDAzLAotICAgICAgICAgICAgICAgIkNsaWNrIHRoZSBGaW5pc2ggYnV0dG9uIHRvIGV4aXQgdGhlIEluc3RhbGxlci4iKQotICAgIGMgPSB1c2VyX2V4aXQubmV4dCgiRmluaXNoIiwgIkNhbmNlbCIsIG5hbWU9IkZpbmlzaCIpCi0gICAgYy5ldmVudCgiRW5kRGlhbG9nIiwgIkV4aXQiKQotCi0gICAgZXhpdF9kaWFsb2cgPSBQeURpYWxvZyhkYiwgIkV4aXREaWFsb2ciLCB4LCB5LCB3LCBoLCBtb2RhbCwgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmlzaCIsICJGaW5pc2giLCAiRmluaXNoIikKLSAgICBleGl0X2RpYWxvZy50aXRsZSgiQ29tcGxldGUgdGhlIFtQcm9kdWN0TmFtZV0gSW5zdGFsbGVyIikKLSAgICBleGl0X2RpYWxvZy5iYWNrKCI8IEJhY2siLCAiRmluaXNoIiwgYWN0aXZlID0gMCkKLSAgICBleGl0X2RpYWxvZy5jYW5jZWwoIkNhbmNlbCIsICJCYWNrIiwgYWN0aXZlID0gMCkKLSAgICBleGl0X2RpYWxvZy50ZXh0KCJBY2tub3dsZWRnZW1lbnRzIiwgMTM1LCA5NSwgMjIwLCAxMjAsIDB4MzAwMDMsCi0gICAgICAiU3BlY2lhbCBXaW5kb3dzIHRoYW5rcyB0bzpcbiIKLSAgICAgICIgICAgTWFyayBIYW1tb25kLCB3aXRob3V0IHdob3NlIHllYXJzIG9mIGZyZWVseSBcbiIKLSAgICAgICIgICAgc2hhcmVkIFdpbmRvd3MgZXhwZXJ0aXNlLCBQeXRob24gZm9yIFdpbmRvd3MgXG4iCi0gICAgICAiICAgIHdvdWxkIHN0aWxsIGJlIFB5dGhvbiBmb3IgRE9TLiIpCi0KLSAgICBjID0gZXhpdF9kaWFsb2cudGV4dCgid2FybmluZyIsIDEzNSwgMjAwLCAyMjAsIDQwLCAweDMwMDAzLAotICAgICAgICAgICAgIntcXFZlcmRhbmFSZWQ5fVdhcm5pbmc6IFB5dGhvbiAyLjUueCBpcyB0aGUgbGFzdCAiCi0gICAgICAgICAgICAiUHl0aG9uIHJlbGVhc2UgZm9yIFdpbmRvd3MgOXguIikKLSAgICBjLmNvbmRpdGlvbigiSGlkZSIsICJOT1QgVmVyc2lvbjlYIikKLQotICAgIGV4aXRfZGlhbG9nLnRleHQoIkRlc2NyaXB0aW9uIiwgMTM1LCAyMzUsIDIyMCwgMjAsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAiQ2xpY2sgdGhlIEZpbmlzaCBidXR0b24gdG8gZXhpdCB0aGUgSW5zdGFsbGVyLiIpCi0gICAgYyA9IGV4aXRfZGlhbG9nLm5leHQoIkZpbmlzaCIsICJDYW5jZWwiLCBuYW1lPSJGaW5pc2giKQotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJSZXR1cm4iKQotCi0gICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBSZXF1aXJlZCBkaWFsb2c6IEZpbGVzSW5Vc2UsIEVycm9yRGxnCi0gICAgaW51c2UgPSBQeURpYWxvZyhkYiwgIkZpbGVzSW5Vc2UiLAotICAgICAgICAgICAgICAgICAgICAgeCwgeSwgdywgaCwKLSAgICAgICAgICAgICAgICAgICAgIDE5LCAgICAgICAgICAgICAgICAjIEtlZXBNb2RlbGVzc3xNb2RhbHxWaXNpYmxlCi0gICAgICAgICAgICAgICAgICAgICB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgICJSZXRyeSIsICJSZXRyeSIsICJSZXRyeSIsIGJpdG1hcD1GYWxzZSkKLSAgICBpbnVzZS50ZXh0KCJUaXRsZSIsIDE1LCA2LCAyMDAsIDE1LCAweDMwMDAzLAotICAgICAgICAgICAgICAgciJ7XERsZ0ZvbnRCb2xkOH1GaWxlcyBpbiBVc2UiKQotICAgIGludXNlLnRleHQoIkRlc2NyaXB0aW9uIiwgMjAsIDIzLCAyODAsIDIwLCAweDMwMDAzLAotICAgICAgICAgICAgICAgIlNvbWUgZmlsZXMgdGhhdCBuZWVkIHRvIGJlIHVwZGF0ZWQgYXJlIGN1cnJlbnRseSBpbiB1c2UuIikKLSAgICBpbnVzZS50ZXh0KCJUZXh0IiwgMjAsIDU1LCAzMzAsIDUwLCAzLAotICAgICAgICAgICAgICAgIlRoZSBmb2xsb3dpbmcgYXBwbGljYXRpb25zIGFyZSB1c2luZyBmaWxlcyB0aGF0IG5lZWQgdG8gYmUgdXBkYXRlZCBieSB0aGlzIHNldHVwLiBDbG9zZSB0aGVzZSBhcHBsaWNhdGlvbnMgYW5kIHRoZW4gY2xpY2sgUmV0cnkgdG8gY29udGludWUgdGhlIGluc3RhbGxhdGlvbiBvciBDYW5jZWwgdG8gZXhpdCBpdC4iKQotICAgIGludXNlLmNvbnRyb2woIkxpc3QiLCAiTGlzdEJveCIsIDIwLCAxMDcsIDMzMCwgMTMwLCA3LCAiRmlsZUluVXNlUHJvY2VzcyIsCi0gICAgICAgICAgICAgICAgICBOb25lLCBOb25lLCBOb25lKQotICAgIGM9aW51c2UuYmFjaygiRXhpdCIsICJJZ25vcmUiLCBuYW1lPSJFeGl0IikKLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCAiRXhpdCIpCi0gICAgYz1pbnVzZS5uZXh0KCJJZ25vcmUiLCAiUmV0cnkiLCBuYW1lPSJJZ25vcmUiKQotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJJZ25vcmUiKQotICAgIGM9aW51c2UuY2FuY2VsKCJSZXRyeSIsICJFeGl0IiwgbmFtZT0iUmV0cnkiKQotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsIlJldHJ5IikKLQotCi0gICAgIyBTZWUgIkVycm9yIERpYWxvZyIuIFNlZSAiSUNFMjAiIGZvciB0aGUgcmVxdWlyZWQgbmFtZXMgb2YgdGhlIGNvbnRyb2xzLgotICAgIGVycm9yID0gRGlhbG9nKGRiLCAiRXJyb3JEbGciLAotICAgICAgICAgICAgICAgICAgIDUwLCAxMCwgMzMwLCAxMDEsCi0gICAgICAgICAgICAgICAgICAgNjU1NDMsICAgICAgICMgRXJyb3J8TWluaW1pemV8TW9kYWx8VmlzaWJsZQotICAgICAgICAgICAgICAgICAgIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICJFcnJvclRleHQiLCBOb25lLCBOb25lKQotICAgIGVycm9yLnRleHQoIkVycm9yVGV4dCIsIDUwLDksMjgwLDQ4LDMsICIiKQotICAgIGVycm9yLmNvbnRyb2woIkVycm9ySWNvbiIsICJJY29uIiwgMTUsIDksIDI0LCAyNCwgNTI0Mjg4MSwgTm9uZSwgInB5LmljbyIsIE5vbmUsIE5vbmUpCi0gICAgZXJyb3IucHVzaGJ1dHRvbigiTiIsMTIwLDcyLDgxLDIxLDMsIk5vIixOb25lKS5ldmVudCgiRW5kRGlhbG9nIiwiRXJyb3JObyIpCi0gICAgZXJyb3IucHVzaGJ1dHRvbigiWSIsMjQwLDcyLDgxLDIxLDMsIlllcyIsTm9uZSkuZXZlbnQoIkVuZERpYWxvZyIsIkVycm9yWWVzIikKLSAgICBlcnJvci5wdXNoYnV0dG9uKCJBIiwwLDcyLDgxLDIxLDMsIkFib3J0IixOb25lKS5ldmVudCgiRW5kRGlhbG9nIiwiRXJyb3JBYm9ydCIpCi0gICAgZXJyb3IucHVzaGJ1dHRvbigiQyIsNDIsNzIsODEsMjEsMywiQ2FuY2VsIixOb25lKS5ldmVudCgiRW5kRGlhbG9nIiwiRXJyb3JDYW5jZWwiKQotICAgIGVycm9yLnB1c2hidXR0b24oIkkiLDgxLDcyLDgxLDIxLDMsIklnbm9yZSIsTm9uZSkuZXZlbnQoIkVuZERpYWxvZyIsIkVycm9ySWdub3JlIikKLSAgICBlcnJvci5wdXNoYnV0dG9uKCJPIiwxNTksNzIsODEsMjEsMywiT2siLE5vbmUpLmV2ZW50KCJFbmREaWFsb2ciLCJFcnJvck9rIikKLSAgICBlcnJvci5wdXNoYnV0dG9uKCJSIiwxOTgsNzIsODEsMjEsMywiUmV0cnkiLE5vbmUpLmV2ZW50KCJFbmREaWFsb2ciLCJFcnJvclJldHJ5IikKLQotICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICMgR2xvYmFsICJRdWVyeSBDYW5jZWwiIGRpYWxvZwotICAgIGNhbmNlbCA9IERpYWxvZyhkYiwgIkNhbmNlbERsZyIsIDUwLCAxMCwgMjYwLCA4NSwgMywgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICJObyIsICJObyIsICJObyIpCi0gICAgY2FuY2VsLnRleHQoIlRleHQiLCA0OCwgMTUsIDE5NCwgMzAsIDMsCi0gICAgICAgICAgICAgICAgIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWwgW1Byb2R1Y3ROYW1lXSBpbnN0YWxsYXRpb24/IikKLSAgICBjYW5jZWwuY29udHJvbCgiSWNvbiIsICJJY29uIiwgMTUsIDE1LCAyNCwgMjQsIDUyNDI4ODEsIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgInB5LmljbyIsIE5vbmUsIE5vbmUpCi0gICAgYz1jYW5jZWwucHVzaGJ1dHRvbigiWWVzIiwgNzIsIDU3LCA1NiwgMTcsIDMsICJZZXMiLCAiTm8iKQotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJFeGl0IikKLQotICAgIGM9Y2FuY2VsLnB1c2hidXR0b24oIk5vIiwgMTMyLCA1NywgNTYsIDE3LCAzLCAiTm8iLCAiWWVzIikKLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCAiUmV0dXJuIikKLQotICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICMgR2xvYmFsICJXYWl0IGZvciBjb3N0aW5nIiBkaWFsb2cKLSAgICBjb3N0aW5nID0gRGlhbG9nKGRiLCAiV2FpdEZvckNvc3RpbmdEbGciLCA1MCwgMTAsIDI2MCwgODUsIG1vZGFsLCB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgICJSZXR1cm4iLCAiUmV0dXJuIiwgIlJldHVybiIpCi0gICAgY29zdGluZy50ZXh0KCJUZXh0IiwgNDgsIDE1LCAxOTQsIDMwLCAzLAotICAgICAgICAgICAgICAgICAiUGxlYXNlIHdhaXQgd2hpbGUgdGhlIGluc3RhbGxlciBmaW5pc2hlcyBkZXRlcm1pbmluZyB5b3VyIGRpc2sgc3BhY2UgcmVxdWlyZW1lbnRzLiIpCi0gICAgY29zdGluZy5jb250cm9sKCJJY29uIiwgIkljb24iLCAxNSwgMTUsIDI0LCAyNCwgNTI0Mjg4MSwgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgInB5LmljbyIsIE5vbmUsIE5vbmUpCi0gICAgYyA9IGNvc3RpbmcucHVzaGJ1dHRvbigiUmV0dXJuIiwgMTAyLCA1NywgNTYsIDE3LCAzLCAiUmV0dXJuIiwgTm9uZSkKLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCAiRXhpdCIpCi0KLSAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgICAjIFByZXBhcmF0aW9uIGRpYWxvZzogbm8gdXNlciBpbnB1dCBleGNlcHQgY2FuY2VsbGF0aW9uCi0gICAgcHJlcCA9IFB5RGlhbG9nKGRiLCAiUHJlcGFyZURsZyIsIHgsIHksIHcsIGgsIG1vZGVsZXNzLCB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgIkNhbmNlbCIsICJDYW5jZWwiLCAiQ2FuY2VsIikKLSAgICBwcmVwLnRleHQoIkRlc2NyaXB0aW9uIiwgMTM1LCA3MCwgMjIwLCA0MCwgMHgzMDAwMywKLSAgICAgICAgICAgICAgIlBsZWFzZSB3YWl0IHdoaWxlIHRoZSBJbnN0YWxsZXIgcHJlcGFyZXMgdG8gZ3VpZGUgeW91IHRocm91Z2ggdGhlIGluc3RhbGxhdGlvbi4iKQotICAgIHByZXAudGl0bGUoIldlbGNvbWUgdG8gdGhlIFtQcm9kdWN0TmFtZV0gSW5zdGFsbGVyIikKLSAgICBjPXByZXAudGV4dCgiQWN0aW9uVGV4dCIsIDEzNSwgMTEwLCAyMjAsIDIwLCAweDMwMDAzLCAiUG9uZGVyaW5nLi4uIikKLSAgICBjLm1hcHBpbmcoIkFjdGlvblRleHQiLCAiVGV4dCIpCi0gICAgYz1wcmVwLnRleHQoIkFjdGlvbkRhdGEiLCAxMzUsIDEzNSwgMjIwLCAzMCwgMHgzMDAwMywgTm9uZSkKLSAgICBjLm1hcHBpbmcoIkFjdGlvbkRhdGEiLCAiVGV4dCIpCi0gICAgcHJlcC5iYWNrKCJCYWNrIiwgTm9uZSwgYWN0aXZlPTApCi0gICAgcHJlcC5uZXh0KCJOZXh0IiwgTm9uZSwgYWN0aXZlPTApCi0gICAgYz1wcmVwLmNhbmNlbCgiQ2FuY2VsIiwgTm9uZSkKLSAgICBjLmV2ZW50KCJTcGF3bkRpYWxvZyIsICJDYW5jZWxEbGciKQotCi0gICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBUYXJnZXQgZGlyZWN0b3J5IHNlbGVjdGlvbgotICAgIHNlbGRsZyA9IFB5RGlhbG9nKGRiLCAiU2VsZWN0RGlyZWN0b3J5RGxnIiwgeCwgeSwgdywgaCwgbW9kYWwsIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAiTmV4dCIsICJOZXh0IiwgIkNhbmNlbCIpCi0gICAgc2VsZGxnLnRpdGxlKCJTZWxlY3QgRGVzdGluYXRpb24gRGlyZWN0b3J5IikKLSAgICBjID0gc2VsZGxnLnRleHQoIkV4aXN0aW5nIiwgMTM1LCAyNSwgMjM1LCAzMCwgMHgzMDAwMywKLSAgICAgICAgICAgICAgICAgICAgIntcVmVyZGFuYVJlZDl9VGhpcyB1cGRhdGUgd2lsbCByZXBsYWNlIHlvdXIgZXhpc3RpbmcgW1Byb2R1Y3RMaW5lXSBpbnN0YWxsYXRpb24uIikKLSAgICBjLmNvbmRpdGlvbigiSGlkZSIsICdSRU1PVkVPTERWRVJTSU9OPSIiIGFuZCBSRU1PVkVPTERTTkFQU0hPVD0iIicpCi0gICAgc2VsZGxnLnRleHQoIkRlc2NyaXB0aW9uIiwgMTM1LCA1MCwgMjIwLCA0MCwgMHgzMDAwMywKLSAgICAgICAgICAgICAgICJQbGVhc2Ugc2VsZWN0IGEgZGlyZWN0b3J5IGZvciB0aGUgW1Byb2R1Y3ROYW1lXSBmaWxlcy4iKQotCi0gICAgc2VsZGxnLmJhY2soIjwgQmFjayIsIE5vbmUsIGFjdGl2ZT0wKQotICAgIGMgPSBzZWxkbGcubmV4dCgiTmV4dCA+IiwgIkNhbmNlbCIpCi0gICAgYy5ldmVudCgiRG9BY3Rpb24iLCAiQ2hlY2tEaXIiLCAiVGFyZ2V0RXhpc3RzT2s8PjEiLCBvcmRlcj0xKQotICAgICMgSWYgdGhlIHRhcmdldCBleGlzdHMsIGJ1dCB3ZSBmb3VuZCB0aGF0IHdlIGFyZSBnb2luZyB0byByZW1vdmUgb2xkIHZlcnNpb25zLCBkb24ndCBib3RoZXIKLSAgICAjIGNvbmZpcm1pbmcgdGhhdCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBleGlzdHMuIFN0cmljdGx5IHNwZWFraW5nLCB3ZSBzaG91bGQgZGV0ZXJtaW5lIHRoYXQKLSAgICAjIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGlzIGluZGVlZCB0aGUgdGFyZ2V0IG9mIHRoZSBwcm9kdWN0IHRoYXQgd2UgYXJlIGdvaW5nIHRvIHJlbW92ZSwgYnV0Ci0gICAgIyBJIGRvbid0IGtub3cgaG93IHRvIGRvIHRoYXQuCi0gICAgYy5ldmVudCgiU3Bhd25EaWFsb2ciLCAiRXhpc3RpbmdEaXJlY3RvcnlEbGciLCAnVGFyZ2V0RXhpc3RzPTEgYW5kIFJFTU9WRU9MRFZFUlNJT049IiIgYW5kIFJFTU9WRU9MRFNOQVBTSE9UPSIiJywgMikKLSAgICBjLmV2ZW50KCJTZXRUYXJnZXRQYXRoIiwgIlRBUkdFVERJUiIsICdUYXJnZXRFeGlzdHM9MCBvciBSRU1PVkVPTERWRVJTSU9OPD4iIiBvciBSRU1PVkVPTERTTkFQU0hPVDw+IiInLCAzKQotICAgIGMuZXZlbnQoIlNwYXduV2FpdERpYWxvZyIsICJXYWl0Rm9yQ29zdGluZ0RsZyIsICJDb3N0aW5nQ29tcGxldGU9MSIsIDQpCi0gICAgYy5ldmVudCgiTmV3RGlhbG9nIiwgIlNlbGVjdEZlYXR1cmVzRGxnIiwgJ1RhcmdldEV4aXN0cz0wIG9yIFJFTU9WRU9MRFZFUlNJT048PiIiIG9yIFJFTU9WRU9MRFNOQVBTSE9UPD4iIicsIDUpCi0KLSAgICBjID0gc2VsZGxnLmNhbmNlbCgiQ2FuY2VsIiwgIkRpcmVjdG9yeUNvbWJvIikKLSAgICBjLmV2ZW50KCJTcGF3bkRpYWxvZyIsICJDYW5jZWxEbGciKQotCi0gICAgc2VsZGxnLmNvbnRyb2woIkRpcmVjdG9yeUNvbWJvIiwgIkRpcmVjdG9yeUNvbWJvIiwgMTM1LCA3MCwgMTcyLCA4MCwgMzkzMjE5LAotICAgICAgICAgICAgICAgICAgICJUQVJHRVRESVIiLCBOb25lLCAiRGlyZWN0b3J5TGlzdCIsIE5vbmUpCi0gICAgc2VsZGxnLmNvbnRyb2woIkRpcmVjdG9yeUxpc3QiLCAiRGlyZWN0b3J5TGlzdCIsIDEzNSwgOTAsIDIwOCwgMTM2LCAzLCAiVEFSR0VURElSIiwKLSAgICAgICAgICAgICAgICAgICBOb25lLCAiUGF0aEVkaXQiLCBOb25lKQotICAgIHNlbGRsZy5jb250cm9sKCJQYXRoRWRpdCIsICJQYXRoRWRpdCIsIDEzNSwgMjMwLCAyMDYsIDE2LCAzLCAiVEFSR0VURElSIiwgTm9uZSwgIk5leHQiLCBOb25lKQotICAgIGMgPSBzZWxkbGcucHVzaGJ1dHRvbigiVXAiLCAzMDYsIDcwLCAxOCwgMTgsIDMsICJVcCIsIE5vbmUpCi0gICAgYy5ldmVudCgiRGlyZWN0b3J5TGlzdFVwIiwgIjAiKQotICAgIGMgPSBzZWxkbGcucHVzaGJ1dHRvbigiTmV3RGlyIiwgMzI0LCA3MCwgMzAsIDE4LCAzLCAiTmV3IiwgTm9uZSkKLSAgICBjLmV2ZW50KCJEaXJlY3RvcnlMaXN0TmV3IiwgIjAiKQotCi0gICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBTZWxlY3RGZWF0dXJlc0RsZwotICAgIGZlYXR1cmVzID0gUHlEaWFsb2coZGIsICJTZWxlY3RGZWF0dXJlc0RsZyIsIHgsIHksIHcsIGgsIG1vZGFsfHRyYWNrX2Rpc2tfc3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSwgIlRyZWUiLCAiTmV4dCIsICJDYW5jZWwiKQotICAgIGZlYXR1cmVzLnRpdGxlKCJDdXN0b21pemUgW1Byb2R1Y3ROYW1lXSIpCi0gICAgZmVhdHVyZXMudGV4dCgiRGVzY3JpcHRpb24iLCAxMzUsIDM1LCAyMjAsIDE1LCAweDMwMDAzLAotICAgICAgICAgICAgICAgICAgIlNlbGVjdCB0aGUgd2F5IHlvdSB3YW50IGZlYXR1cmVzIHRvIGJlIGluc3RhbGxlZC4iKQotICAgIGZlYXR1cmVzLnRleHQoIlRleHQiLCAxMzUsNDUsMjIwLDMwLCAzLAotICAgICAgICAgICAgICAgICAgIkNsaWNrIG9uIHRoZSBpY29ucyBpbiB0aGUgdHJlZSBiZWxvdyB0byBjaGFuZ2UgdGhlIHdheSBmZWF0dXJlcyB3aWxsIGJlIGluc3RhbGxlZC4iKQotCi0gICAgYz1mZWF0dXJlcy5iYWNrKCI8IEJhY2siLCAiTmV4dCIpCi0gICAgYy5ldmVudCgiTmV3RGlhbG9nIiwgIlNlbGVjdERpcmVjdG9yeURsZyIpCi0KLSAgICBjPWZlYXR1cmVzLm5leHQoIk5leHQgPiIsICJDYW5jZWwiKQotICAgIGMubWFwcGluZygiU2VsZWN0aW9uTm9JdGVtcyIsICJFbmFibGVkIikKLSAgICBjLmV2ZW50KCJTcGF3bkRpYWxvZyIsICJEaXNrQ29zdERsZyIsICJPdXRPZkRpc2tTcGFjZT0xIiwgb3JkZXI9MSkKLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCAiUmV0dXJuIiwgIk91dE9mRGlza1NwYWNlPD4xIiwgb3JkZXI9MikKLQotICAgIGM9ZmVhdHVyZXMuY2FuY2VsKCJDYW5jZWwiLCAiVHJlZSIpCi0gICAgYy5ldmVudCgiU3Bhd25EaWFsb2ciLCAiQ2FuY2VsRGxnIikKLQotICAgICMgVGhlIGJyb3dzZSBwcm9wZXJ0eSBpcyBub3QgdXNlZCwgc2luY2Ugd2UgaGF2ZSBvbmx5IGEgc2luZ2xlIHRhcmdldCBwYXRoIChzZWxlY3RlZCBhbHJlYWR5KQotICAgIGZlYXR1cmVzLmNvbnRyb2woIlRyZWUiLCAiU2VsZWN0aW9uVHJlZSIsIDEzNSwgNzUsIDIyMCwgOTUsIDcsICJfQnJvd3NlUHJvcGVydHkiLAotICAgICAgICAgICAgICAgICAgICAgIlRyZWUgb2Ygc2VsZWN0aW9ucyIsICJCYWNrIiwgTm9uZSkKLQotICAgICNjPWZlYXR1cmVzLnB1c2hidXR0b24oIlJlc2V0IiwgNDIsIDI0MywgNTYsIDE3LCAzLCAiUmVzZXQiLCAiRGlza0Nvc3QiKQotICAgICNjLm1hcHBpbmcoIlNlbGVjdGlvbk5vSXRlbXMiLCAiRW5hYmxlZCIpCi0gICAgI2MuZXZlbnQoIlJlc2V0IiwgIjAiKQotCi0gICAgZmVhdHVyZXMuY29udHJvbCgiQm94IiwgIkdyb3VwQm94IiwgMTM1LCAxNzAsIDIyNSwgOTAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpCi0KLSAgICBjPWZlYXR1cmVzLnhidXR0b24oIkRpc2tDb3N0IiwgIkRpc2sgJlVzYWdlIiwgTm9uZSwgMC4xMCkKLSAgICBjLm1hcHBpbmcoIlNlbGVjdGlvbk5vSXRlbXMiLCJFbmFibGVkIikKLSAgICBjLmV2ZW50KCJTcGF3bkRpYWxvZyIsICJEaXNrQ29zdERsZyIpCi0KLSAgICBjPWZlYXR1cmVzLnhidXR0b24oIkFkdmFuY2VkIiwgIkFkdmFuY2VkIiwgTm9uZSwgMC4zMCkKLSAgICBjLmV2ZW50KCJTcGF3bkRpYWxvZyIsICJBZHZhbmNlZERsZyIpCi0KLSAgICBjPWZlYXR1cmVzLnRleHQoIkl0ZW1EZXNjcmlwdGlvbiIsIDE0MCwgMTgwLCAyMTAsIDQwLCAzLAotICAgICAgICAgICAgICAgICAgIk11bHRpbGluZSBkZXNjcmlwdGlvbiBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW0uIikKLSAgICBjLm1hcHBpbmcoIlNlbGVjdGlvbkRlc2NyaXB0aW9uIiwiVGV4dCIpCi0KLSAgICBjPWZlYXR1cmVzLnRleHQoIkl0ZW1TaXplIiwgMTQwLCAyMjUsIDIxMCwgMzMsIDMsCi0gICAgICAgICAgICAgICAgICAgICJUaGUgc2l6ZSBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW0uIikKLSAgICBjLm1hcHBpbmcoIlNlbGVjdGlvblNpemUiLCAiVGV4dCIpCi0KLSAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgICAjIERpc2sgY29zdAotICAgIGNvc3QgPSBQeURpYWxvZyhkYiwgIkRpc2tDb3N0RGxnIiwgeCwgeSwgdywgaCwgbW9kYWwsIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAiT0siLCAiT0siLCAiT0siLCBiaXRtYXA9RmFsc2UpCi0gICAgY29zdC50ZXh0KCJUaXRsZSIsIDE1LCA2LCAyMDAsIDE1LCAweDMwMDAzLAotICAgICAgICAgICAgICAie1xEbGdGb250Qm9sZDh9RGlzayBTcGFjZSBSZXF1aXJlbWVudHMiKQotICAgIGNvc3QudGV4dCgiRGVzY3JpcHRpb24iLCAyMCwgMjAsIDI4MCwgMjAsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICJUaGUgZGlzayBzcGFjZSByZXF1aXJlZCBmb3IgdGhlIGluc3RhbGxhdGlvbiBvZiB0aGUgc2VsZWN0ZWQgZmVhdHVyZXMuIikKLSAgICBjb3N0LnRleHQoIlRleHQiLCAyMCwgNTMsIDMzMCwgNjAsIDMsCi0gICAgICAgICAgICAgICJUaGUgaGlnaGxpZ2h0ZWQgdm9sdW1lcyAoaWYgYW55KSBkbyBub3QgaGF2ZSBlbm91Z2ggZGlzayBzcGFjZSAiCi0gICAgICAgICAgICAgICJhdmFpbGFibGUgZm9yIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZmVhdHVyZXMuICBZb3UgY2FuIGVpdGhlciAiCi0gICAgICAgICAgICAgICJyZW1vdmUgc29tZSBmaWxlcyBmcm9tIHRoZSBoaWdobGlnaHRlZCB2b2x1bWVzLCBvciBjaG9vc2UgdG8gIgotICAgICAgICAgICAgICAiaW5zdGFsbCBsZXNzIGZlYXR1cmVzIG9udG8gbG9jYWwgZHJpdmUocyksIG9yIHNlbGVjdCBkaWZmZXJlbnQgIgotICAgICAgICAgICAgICAiZGVzdGluYXRpb24gZHJpdmUocykuIikKLSAgICBjb3N0LmNvbnRyb2woIlZvbHVtZUxpc3QiLCAiVm9sdW1lQ29zdExpc3QiLCAyMCwgMTAwLCAzMzAsIDE1MCwgMzkzMjIzLAotICAgICAgICAgICAgICAgICBOb25lLCAiezEyMH17NzB9ezcwfXs3MH17NzB9IiwgTm9uZSwgTm9uZSkKLSAgICBjb3N0LnhidXR0b24oIk9LIiwgIk9rIiwgTm9uZSwgMC41KS5ldmVudCgiRW5kRGlhbG9nIiwgIlJldHVybiIpCi0KLSAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgICAjIFdoaWNoVXNlcnMgRGlhbG9nLiBPbmx5IGF2YWlsYWJsZSBvbiBOVCwgYW5kIGZvciBwcml2aWxlZ2VkIHVzZXJzLgotICAgICMgVGhpcyBtdXN0IGJlIHJ1biBiZWZvcmUgRmluZFJlbGF0ZWRQcm9kdWN0cywgYmVjYXVzZSB0aGF0IHdpbGwKLSAgICAjIHRha2UgaW50byBhY2NvdW50IHdoZXRoZXIgdGhlIHByZXZpb3VzIGluc3RhbGxhdGlvbiB3YXMgcGVyLXVzZXIKLSAgICAjIG9yIHBlci1tYWNoaW5lLiBXZSBjdXJyZW50bHkgZG9uJ3Qgc3VwcG9ydCBnb2luZyBiYWNrIHRvIHRoaXMKLSAgICAjIGRpYWxvZyBhZnRlciAiTmV4dCIgd2FzIHNlbGVjdGVkOyB0byBzdXBwb3J0IHRoaXMsIHdlIHdvdWxkIG5lZWQgdG8KLSAgICAjIGZpbmQgaG93IHRvIHJlc2V0IHRoZSBBTExVU0VSUyBwcm9wZXJ0eSwgYW5kIGhvdyB0byByZS1ydW4KLSAgICAjIEZpbmRSZWxhdGVkUHJvZHVjdHMuCi0gICAgIyBPbiBXaW5kb3dzOXgsIHRoZSBBTExVU0VSUyBwcm9wZXJ0eSBpcyBpZ25vcmVkIG9uIHRoZSBjb21tYW5kIGxpbmUKLSAgICAjIGFuZCBpbiB0aGUgUHJvcGVydHkgdGFibGUsIGJ1dCBpbnN0YWxsZXIgZmFpbHMgYWNjb3JkaW5nIHRvIHRoZSBkb2N1bWVudGF0aW9uCi0gICAgIyBpZiBhIGRpYWxvZyBhdHRlbXB0cyB0byBzZXQgQUxMVVNFUlMuCi0gICAgd2hpY2h1c2VycyA9IFB5RGlhbG9nKGRiLCAiV2hpY2hVc2Vyc0RsZyIsIHgsIHksIHcsIGgsIG1vZGFsLCB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJBZG1pbkluc3RhbGwiLCAiTmV4dCIsICJDYW5jZWwiKQotICAgIHdoaWNodXNlcnMudGl0bGUoIlNlbGVjdCB3aGV0aGVyIHRvIGluc3RhbGwgW1Byb2R1Y3ROYW1lXSBmb3IgYWxsIHVzZXJzIG9mIHRoaXMgY29tcHV0ZXIuIikKLSAgICAjIEEgcmFkaW8gZ3JvdXAgd2l0aCB0d28gb3B0aW9uczogYWxsdXNlcnMsIGp1c3RtZQotICAgIGcgPSB3aGljaHVzZXJzLnJhZGlvZ3JvdXAoIkFkbWluSW5zdGFsbCIsIDEzNSwgNjAsIDIzNSwgODAsIDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2hpY2hVc2VycyIsICIiLCAiTmV4dCIpCi0gICAgZy5jb25kaXRpb24oIkRpc2FibGUiLCAiVmVyc2lvbk5UPTYwMCIpICMgTm90IGF2YWlsYWJsZSBvbiBWaXN0YSBhbmQgV2luZG93cyAyMDA4Ci0gICAgZy5hZGQoIkFMTCIsIDAsIDUsIDE1MCwgMjAsICJJbnN0YWxsIGZvciBhbGwgdXNlcnMiKQotICAgIGcuYWRkKCJKVVNUTUUiLCAwLCAyNSwgMjM1LCAyMCwgIkluc3RhbGwganVzdCBmb3IgbWUgKG5vdCBhdmFpbGFibGUgb24gV2luZG93cyBWaXN0YSkiKQotCi0gICAgd2hpY2h1c2Vycy5iYWNrKCJCYWNrIiwgTm9uZSwgYWN0aXZlPTApCi0KLSAgICBjID0gd2hpY2h1c2Vycy5uZXh0KCJOZXh0ID4iLCAiQ2FuY2VsIikKLSAgICBjLmV2ZW50KCJbQUxMVVNFUlNdIiwgIjEiLCAnV2hpY2hVc2Vycz0iQUxMIicsIDEpCi0gICAgYy5ldmVudCgiRW5kRGlhbG9nIiwgIlJldHVybiIsIG9yZGVyID0gMikKLQotICAgIGMgPSB3aGljaHVzZXJzLmNhbmNlbCgiQ2FuY2VsIiwgIkFkbWluSW5zdGFsbCIpCi0gICAgYy5ldmVudCgiU3Bhd25EaWFsb2ciLCAiQ2FuY2VsRGxnIikKLQotICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICMgQWR2YW5jZWQgRGlhbG9nLgotICAgIGFkdmFuY2VkID0gUHlEaWFsb2coZGIsICJBZHZhbmNlZERsZyIsIHgsIHksIHcsIGgsIG1vZGFsLCB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJDb21waWxlUHljIiwgIk9rIiwgIk9rIikKLSAgICBhZHZhbmNlZC50aXRsZSgiQWR2YW5jZWQgT3B0aW9ucyBmb3IgW1Byb2R1Y3ROYW1lXSIpCi0KLSAgICAjIEEgY2hlY2tib3ggd2hldGhlciB0byBidWlsZCBweWMgZmlsZXMKLSAgICBhZHZhbmNlZC5jaGVja2JveCgiQ29tcGlsZVB5YyIsIDEzNSwgNjAsIDIzMCwgNTAsIDMsCi0gICAgICAgICAgICAgICAgICAgICAgIkNPTVBJTEVBTEwiLCAiQ29tcGlsZSAucHkgZmlsZXMgdG8gYnl0ZSBjb2RlIGFmdGVyIGluc3RhbGxhdGlvbiIsICJPayIpCi0KLSAgICBjID0gYWR2YW5jZWQuY2FuY2VsKCJPayIsICJDb21waWxlUHljIiwgbmFtZT0iT2siKSAjIEJ1dHRvbiBqdXN0IGhhcyBsb2NhdGlvbiBvZiBjYW5jZWwgYnV0dG9uLgotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJSZXR1cm4iKQotCi0gICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBFeGlzdGluZyBEaXJlY3RvcnkgZGlhbG9nCi0gICAgZGxnID0gRGlhbG9nKGRiLCAiRXhpc3RpbmdEaXJlY3RvcnlEbGciLCA1MCwgMzAsIDIwMCwgODAsIG1vZGFsLCB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAiTm8iLCAiTm8iLCAiTm8iKQotICAgIGRsZy50ZXh0KCJUaXRsZSIsIDEwLCAyMCwgMTgwLCA0MCwgMywKLSAgICAgICAgICAgICAiW1RBUkdFVERJUl0gZXhpc3RzLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gb3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzPyIpCi0gICAgYz1kbGcucHVzaGJ1dHRvbigiWWVzIiwgMzAsIDYwLCA1NSwgMTcsIDMsICJZZXMiLCAiTm8iKQotICAgIGMuZXZlbnQoIltUYXJnZXRFeGlzdHNdIiwgIjAiLCBvcmRlcj0xKQotICAgIGMuZXZlbnQoIltUYXJnZXRFeGlzdHNPa10iLCAiMSIsIG9yZGVyPTIpCi0gICAgYy5ldmVudCgiRW5kRGlhbG9nIiwgIlJldHVybiIsIG9yZGVyPTMpCi0gICAgYz1kbGcucHVzaGJ1dHRvbigiTm8iLCAxMTUsIDYwLCA1NSwgMTcsIDMsICJObyIsICJZZXMiKQotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJSZXR1cm4iKQotCi0gICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBJbnN0YWxsYXRpb24gUHJvZ3Jlc3MgZGlhbG9nIChtb2RlbGVzcykKLSAgICBwcm9ncmVzcyA9IFB5RGlhbG9nKGRiLCAiUHJvZ3Jlc3NEbGciLCB4LCB5LCB3LCBoLCBtb2RlbGVzcywgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ2FuY2VsIiwgIkNhbmNlbCIsICJDYW5jZWwiLCBiaXRtYXA9RmFsc2UpCi0gICAgcHJvZ3Jlc3MudGV4dCgiVGl0bGUiLCAyMCwgMTUsIDIwMCwgMTUsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAgICAie1xEbGdGb250Qm9sZDh9W1Byb2dyZXNzMV0gW1Byb2R1Y3ROYW1lXSIpCi0gICAgcHJvZ3Jlc3MudGV4dCgiVGV4dCIsIDM1LCA2NSwgMzAwLCAzMCwgMywKLSAgICAgICAgICAgICAgICAgICJQbGVhc2Ugd2FpdCB3aGlsZSB0aGUgSW5zdGFsbGVyIFtQcm9ncmVzczJdIFtQcm9kdWN0TmFtZV0uICIKLSAgICAgICAgICAgICAgICAgICJUaGlzIG1heSB0YWtlIHNldmVyYWwgbWludXRlcy4iKQotICAgIHByb2dyZXNzLnRleHQoIlN0YXR1c0xhYmVsIiwgMzUsIDEwMCwgMzUsIDIwLCAzLCAiU3RhdHVzOiIpCi0KLSAgICBjPXByb2dyZXNzLnRleHQoIkFjdGlvblRleHQiLCA3MCwgMTAwLCB3LTcwLCAyMCwgMywgIlBvbmRlcmluZy4uLiIpCi0gICAgYy5tYXBwaW5nKCJBY3Rpb25UZXh0IiwgIlRleHQiKQotCi0gICAgI2M9cHJvZ3Jlc3MudGV4dCgiQWN0aW9uRGF0YSIsIDM1LCAxNDAsIDMwMCwgMjAsIDMsIE5vbmUpCi0gICAgI2MubWFwcGluZygiQWN0aW9uRGF0YSIsICJUZXh0IikKLQotICAgIGM9cHJvZ3Jlc3MuY29udHJvbCgiUHJvZ3Jlc3NCYXIiLCAiUHJvZ3Jlc3NCYXIiLCAzNSwgMTIwLCAzMDAsIDEwLCA2NTUzNywKLSAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgIlByb2dyZXNzIGRvbmUiLCBOb25lLCBOb25lKQotICAgIGMubWFwcGluZygiU2V0UHJvZ3Jlc3MiLCAiUHJvZ3Jlc3MiKQotCi0gICAgcHJvZ3Jlc3MuYmFjaygiPCBCYWNrIiwgIk5leHQiLCBhY3RpdmU9RmFsc2UpCi0gICAgcHJvZ3Jlc3MubmV4dCgiTmV4dCA+IiwgIkNhbmNlbCIsIGFjdGl2ZT1GYWxzZSkKLSAgICBwcm9ncmVzcy5jYW5jZWwoIkNhbmNlbCIsICJCYWNrIikuZXZlbnQoIlNwYXduRGlhbG9nIiwgIkNhbmNlbERsZyIpCi0KLSAgICAjIE1haW50ZW5hbmNlIHR5cGU6IHJlcGFpci91bmluc3RhbGwKLSAgICBtYWludCA9IFB5RGlhbG9nKGRiLCAiTWFpbnRlbmFuY2VUeXBlRGxnIiwgeCwgeSwgdywgaCwgbW9kYWwsIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAgIk5leHQiLCAiTmV4dCIsICJDYW5jZWwiKQotICAgIG1haW50LnRpdGxlKCJXZWxjb21lIHRvIHRoZSBbUHJvZHVjdE5hbWVdIFNldHVwIFdpemFyZCIpCi0gICAgbWFpbnQudGV4dCgiQm9keVRleHQiLCAxMzUsIDYzLCAyMzAsIDQyLCAzLAotICAgICAgICAgICAgICAgIlNlbGVjdCB3aGV0aGVyIHlvdSB3YW50IHRvIHJlcGFpciBvciByZW1vdmUgW1Byb2R1Y3ROYW1lXS4iKQotICAgIGc9bWFpbnQucmFkaW9ncm91cCgiUmVwYWlyUmFkaW9Hcm91cCIsIDEzNSwgMTA4LCAyMzAsIDYwLCAzLAotICAgICAgICAgICAgICAgICAgICAgICAgIk1haW50ZW5hbmNlRm9ybV9BY3Rpb24iLCAiIiwgIk5leHQiKQotICAgIGcuYWRkKCJDaGFuZ2UiLCAwLCAwLCAyMDAsIDE3LCAiJkNoYW5nZSBbUHJvZHVjdE5hbWVdIikKLSAgICBnLmFkZCgiUmVwYWlyIiwgMCwgMTgsIDIwMCwgMTcsICImUmVwYWlyIFtQcm9kdWN0TmFtZV0iKQotICAgIGcuYWRkKCJSZW1vdmUiLCAwLCAzNiwgMjAwLCAxNywgIlJlJm1vdmUgW1Byb2R1Y3ROYW1lXSIpCi0KLSAgICBtYWludC5iYWNrKCI8IEJhY2siLCBOb25lLCBhY3RpdmU9RmFsc2UpCi0gICAgYz1tYWludC5uZXh0KCJGaW5pc2giLCAiQ2FuY2VsIikKLSAgICAjIENoYW5nZSBpbnN0YWxsYXRpb246IENoYW5nZSBwcm9ncmVzcyBkaWFsb2cgdG8gIkNoYW5nZSIsIHRoZW4gYXNrCi0gICAgIyBmb3IgZmVhdHVyZSBzZWxlY3Rpb24KLSAgICBjLmV2ZW50KCJbUHJvZ3Jlc3MxXSIsICJDaGFuZ2UiLCAnTWFpbnRlbmFuY2VGb3JtX0FjdGlvbj0iQ2hhbmdlIicsIDEpCi0gICAgYy5ldmVudCgiW1Byb2dyZXNzMl0iLCAiY2hhbmdlcyIsICdNYWludGVuYW5jZUZvcm1fQWN0aW9uPSJDaGFuZ2UiJywgMikKLQotICAgICMgUmVpbnN0YWxsOiBDaGFuZ2UgcHJvZ3Jlc3MgZGlhbG9nIHRvICJSZXBhaXIiLCB0aGVuIGludm9rZSByZWluc3RhbGwKLSAgICAjIEFsc28gc2V0IGxpc3Qgb2YgcmVpbnN0YWxsZWQgZmVhdHVyZXMgdG8gIkFMTCIKLSAgICBjLmV2ZW50KCJbUkVJTlNUQUxMXSIsICJBTEwiLCAnTWFpbnRlbmFuY2VGb3JtX0FjdGlvbj0iUmVwYWlyIicsIDUpCi0gICAgYy5ldmVudCgiW1Byb2dyZXNzMV0iLCAiUmVwYWlyaW5nIiwgJ01haW50ZW5hbmNlRm9ybV9BY3Rpb249IlJlcGFpciInLCA2KQotICAgIGMuZXZlbnQoIltQcm9ncmVzczJdIiwgInJlcGFpcnMiLCAnTWFpbnRlbmFuY2VGb3JtX0FjdGlvbj0iUmVwYWlyIicsIDcpCi0gICAgYy5ldmVudCgiUmVpbnN0YWxsIiwgIkFMTCIsICdNYWludGVuYW5jZUZvcm1fQWN0aW9uPSJSZXBhaXIiJywgOCkKLQotICAgICMgVW5pbnN0YWxsOiBDaGFuZ2UgcHJvZ3Jlc3MgdG8gIlJlbW92ZSIsIHRoZW4gaW52b2tlIHVuaW5zdGFsbAotICAgICMgQWxzbyBzZXQgbGlzdCBvZiByZW1vdmVkIGZlYXR1cmVzIHRvICJBTEwiCi0gICAgYy5ldmVudCgiW1JFTU9WRV0iLCAiQUxMIiwgJ01haW50ZW5hbmNlRm9ybV9BY3Rpb249IlJlbW92ZSInLCAxMSkKLSAgICBjLmV2ZW50KCJbUHJvZ3Jlc3MxXSIsICJSZW1vdmluZyIsICdNYWludGVuYW5jZUZvcm1fQWN0aW9uPSJSZW1vdmUiJywgMTIpCi0gICAgYy5ldmVudCgiW1Byb2dyZXNzMl0iLCAicmVtb3ZlcyIsICdNYWludGVuYW5jZUZvcm1fQWN0aW9uPSJSZW1vdmUiJywgMTMpCi0gICAgYy5ldmVudCgiUmVtb3ZlIiwgIkFMTCIsICdNYWludGVuYW5jZUZvcm1fQWN0aW9uPSJSZW1vdmUiJywgMTQpCi0KLSAgICAjIENsb3NlIGRpYWxvZyB3aGVuIG1haW50ZW5hbmNlIGFjdGlvbiBzY2hlZHVsZWQKLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCAiUmV0dXJuIiwgJ01haW50ZW5hbmNlRm9ybV9BY3Rpb248PiJDaGFuZ2UiJywgMjApCi0gICAgYy5ldmVudCgiTmV3RGlhbG9nIiwgIlNlbGVjdEZlYXR1cmVzRGxnIiwgJ01haW50ZW5hbmNlRm9ybV9BY3Rpb249IkNoYW5nZSInLCAyMSkKLQotICAgIG1haW50LmNhbmNlbCgiQ2FuY2VsIiwgIlJlcGFpclJhZGlvR3JvdXAiKS5ldmVudCgiU3Bhd25EaWFsb2ciLCAiQ2FuY2VsRGxnIikKLQotCi0jIFNlZSAiRmVhdHVyZSBUYWJsZSIuIFRoZSBmZWF0dXJlIGxldmVsIGlzIDEgZm9yIGFsbCBmZWF0dXJlcywKLSMgYW5kIHRoZSBmZWF0dXJlIGF0dHJpYnV0ZXMgYXJlIDAgZm9yIHRoZSBEZWZhdWx0RmVhdHVyZSwgYW5kCi0jIEZvbGxvd1BhcmVudCBmb3IgYWxsIG90aGVyIGZlYXR1cmVzLiBUaGUgbnVtYmVycyBhcmUgdGhlIERpc3BsYXkKLSMgY29sdW1uLgotZGVmIGFkZF9mZWF0dXJlcyhkYik6Ci0gICAgIyBmZWF0dXJlIGF0dHJpYnV0ZXM6Ci0gICAgIyBtc2lkYkZlYXR1cmVBdHRyaWJ1dGVzRm9sbG93UGFyZW50ID09IDIKLSAgICAjIG1zaWRiRmVhdHVyZUF0dHJpYnV0ZXNEaXNhbGxvd0FkdmVydGlzZSA9PSA4Ci0gICAgIyBGZWF0dXJlcyB0aGF0IG5lZWQgdG8gYmUgaW5zdGFsbGVkIHdpdGggdG9nZXRoZXIgd2l0aCB0aGUgbWFpbiBmZWF0dXJlCi0gICAgIyAoaS5lLiBhZGRpdGlvbmFsIFB5dGhvbiBsaWJyYXJpZXMpIG5lZWQgdG8gZm9sbG93IHRoZSBwYXJlbnQgZmVhdHVyZS4KLSAgICAjIEZlYXR1cmVzIHRoYXQgaGF2ZSBubyBhZHZlcnRpc2VtZW50IHRyaWdnZXIgKGUuZy4gdGhlIHRlc3Qgc3VpdGUpCi0gICAgIyBtdXN0IG5vdCBzdXBwb3J0IGFkdmVydGlzZW1lbnQKLSAgICBnbG9iYWwgZGVmYXVsdF9mZWF0dXJlLCB0Y2x0aywgaHRtbGZpbGVzLCB0b29scywgdGVzdHN1aXRlCi0gICAgZ2xvYmFsIGV4dF9mZWF0dXJlLCBwcml2YXRlX2NydCwgcHJlcGVuZF9wYXRoLCBwaXBfZmVhdHVyZQotICAgIGRlZmF1bHRfZmVhdHVyZSA9IEZlYXR1cmUoZGIsICJEZWZhdWx0RmVhdHVyZSIsICJQeXRob24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiBJbnRlcnByZXRlciBhbmQgTGlicmFyaWVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIGRpcmVjdG9yeSA9ICJUQVJHRVRESVIiKQotICAgIHNoYXJlZF9jcnQgPSBGZWF0dXJlKGRiLCAiU2hhcmVkQ1JUIiwgIk1TVkNSVCIsICJDIFJ1bi1UaW1lIChzeXN0ZW0td2lkZSkiLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPTApCi0gICAgcHJpdmF0ZV9jcnQgPSBGZWF0dXJlKGRiLCAiUHJpdmF0ZUNSVCIsICJNU1ZDUlQiLCAiQyBSdW4tVGltZSAocHJpdmF0ZSkiLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD0wKQotICAgIGFkZF9kYXRhKGRiLCAiQ29uZGl0aW9uIiwgWygiU2hhcmVkQ1JUIiwgMSwgc3lzMzJjb25kKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIlByaXZhdGVDUlQiLCAxLCAibm90ICIrc3lzMzJjb25kKV0pCi0gICAgIyBXZSBkb24ndCBzdXBwb3J0IGFkdmVydGlzZW1lbnQgb2YgZXh0ZW5zaW9ucwotICAgIGV4dF9mZWF0dXJlID0gRmVhdHVyZShkYiwgIkV4dGVuc2lvbnMiLCAiUmVnaXN0ZXIgRXh0ZW5zaW9ucyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJNYWtlIHRoaXMgUHl0aG9uIGluc3RhbGxhdGlvbiB0aGUgZGVmYXVsdCBQeXRob24gaW5zdGFsbGF0aW9uIiwgMywKLSAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBkZWZhdWx0X2ZlYXR1cmUsIGF0dHJpYnV0ZXM9Mnw4KQotICAgIGlmIGhhdmVfdGNsOgotICAgICAgICB0Y2x0ayA9IEZlYXR1cmUoZGIsICJUY2xUayIsICJUY2wvVGsiLCAiVGtpbnRlciwgSURMRSwgcHlkb2MiLCA1LAotICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBkZWZhdWx0X2ZlYXR1cmUsIGF0dHJpYnV0ZXM9MikKLSAgICBodG1sZmlsZXMgPSBGZWF0dXJlKGRiLCAiRG9jdW1lbnRhdGlvbiIsICJEb2N1bWVudGF0aW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gSFRNTEhlbHAgRmlsZSIsIDcsIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSkKLSAgICB0b29scyA9IEZlYXR1cmUoZGIsICJUb29scyIsICJVdGlsaXR5IFNjcmlwdHMiLAotICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHV0aWxpdHkgc2NyaXB0cyAoVG9vbHMvKSIsIDksCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSwgYXR0cmlidXRlcz0yKQotICAgICMgcGlwIGluc3RhbGxhdGlvbiBpc24ndCBlbmFibGVkIGJ5IGRlZmF1bHQgdW50aWwgYSBjbGVhbiB1bmluc3RhbGwgcHJvY2VkdXJlCi0gICAgIyBiZWNvbWVzIHBvc3NpYmxlCi0gICAgcGlwX2ZlYXR1cmUgPSBGZWF0dXJlKGRiLCAicGlwX2ZlYXR1cmUiLCAicGlwIiwKLSAgICAgICAgICAgICAgICAgICAgIkluc3RhbGwgKG9yIHVwZ3JhZGUgZnJvbSBhbiBlYXJsaWVyIHZlcnNpb24pIHBpcCwgIgotICAgICAgICAgICAgICAgICAgICAiYSB0b29sIGZvciBpbnN0YWxsaW5nIGFuZCBtYW5hZ2luZyBQeXRob24gcGFja2FnZXMuIiwgMTEsCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSwgYXR0cmlidXRlcz0yfDgpCi0gICAgdGVzdHN1aXRlID0gRmVhdHVyZShkYiwgIlRlc3RzdWl0ZSIsICJUZXN0IHN1aXRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gdGVzdCBzdWl0ZSAoTGliL3Rlc3QvKSIsIDEzLAotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gZGVmYXVsdF9mZWF0dXJlLCBhdHRyaWJ1dGVzPTJ8OCkKLSAgICAjIHByZXBlbmRfcGF0aCBpcyBhbiBhZGRpdGlvbmFsIGZlYXR1cmUgd2hpY2ggaXMgdG8gYmUgb2ZmIGJ5IGRlZmF1bHQuCi0gICAgIyBTaW5jZSB0aGUgZGVmYXVsdCBsZXZlbCBmb3IgdGhlIGFib3ZlIGZlYXR1cmVzIGlzIDEsIHRoaXMgbmVlZHMgdG8gYmUKLSAgICAjIGF0IGxlYXN0IGxldmVsIGhpZ2hlci4KLSAgICBwcmVwZW5kX3BhdGggPSBGZWF0dXJlKGRiLCAiUHJlcGVuZFBhdGgiLCAiQWRkIHB5dGhvbi5leGUgdG8gUGF0aCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiUHJlcGVuZCBbVEFSR0VURElSXSB0byB0aGUgc3lzdGVtIFBhdGggdmFyaWFibGUuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGFsbG93cyB5b3UgdG8gdHlwZSAncHl0aG9uJyBpbnRvIGEgY29tbWFuZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAicHJvbXB0IHdpdGhvdXQgbmVlZGluZyB0aGUgZnVsbCBwYXRoLiIsIDE1LAotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gZGVmYXVsdF9mZWF0dXJlLCBhdHRyaWJ1dGVzPTJ8OCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPTIpCi0KLWRlZiBleHRyYWN0X21zdmNyMTAwKCk6Ci0gICAgIyBGaW5kIHRoZSByZWRpc3RyaWJ1dGFibGUgZmlsZXMKLSAgICBpZiBtc2lsaWIuV2luNjQ6Ci0gICAgICAgIGFyY2ggPSAieDY0IgotICAgIGVsc2U6Ci0gICAgICAgIGFyY2ggPSAieDg2IgotICAgIGRpciA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydWUzEwMENPTU5UT09MUyddLCByIi4uXC4uXFZDXHJlZGlzdFwlc1xNaWNyb3NvZnQuVkMxMDAuQ1JUIiAlIGFyY2gpCi0KLSAgICByZXN1bHQgPSBbXQotICAgIGluc3RhbGxlciA9IG1zaWxpYi5NYWtlSW5zdGFsbGVyKCkKLSAgICAjIEF0IGxlYXN0IGZvciBWUzIwMTAsIG1hbmlmZXN0cyBhcmUgbm8gbG9uZ2VyIHByb3ZpZGVkCi0gICAgbmFtZSA9ICJtc3ZjcjEwMC5kbGwiCi0gICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXIsIG5hbWUpCi0gICAga3cgPSB7J3NyYyc6cGF0aH0KLSAgICBrd1sndmVyc2lvbiddID0gaW5zdGFsbGVyLkZpbGVWZXJzaW9uKHBhdGgsIDApCi0gICAga3dbJ2xhbmd1YWdlJ10gPSBpbnN0YWxsZXIuRmlsZVZlcnNpb24ocGF0aCwgMSkKLSAgICByZXR1cm4gbmFtZSwga3cKLQotZGVmIGdlbmVyYXRlX2xpY2Vuc2UoKToKLSAgICBpbXBvcnQgc2h1dGlsLCBnbG9iCi0gICAgb3V0ID0gb3BlbigiTElDRU5TRS50eHQiLCAidyIpCi0gICAgc2h1dGlsLmNvcHlmaWxlb2JqKG9wZW4ob3MucGF0aC5qb2luKHNyY2RpciwgIkxJQ0VOU0UiKSksIG91dCkKLSAgICBzaHV0aWwuY29weWZpbGVvYmoob3BlbigiY3J0bGljZW5zZS50eHQiKSwgb3V0KQotICAgIGZvciBuYW1lLCBwYXQsIGZpbGUgaW4gKCgiYnppcDIiLCJiemlwMi0qIiwgIkxJQ0VOU0UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAoIm9wZW5zc2wiLCAib3BlbnNzbC0qIiwgIkxJQ0VOU0UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAoIlRjbCIsICJ0Y2w4KiIsICJsaWNlbnNlLnRlcm1zIiksCi0gICAgICAgICAgICAgICAgICAgICAgKCJUayIsICJ0azgqIiwgImxpY2Vuc2UudGVybXMiKSwKLSAgICAgICAgICAgICAgICAgICAgICAoIlRpeCIsICJ0aXgtKiIsICJsaWNlbnNlLnRlcm1zIikpOgotICAgICAgICBvdXQud3JpdGUoIlxuVGhpcyBjb3B5IG9mIFB5dGhvbiBpbmNsdWRlcyBhIGNvcHkgb2YgJXMsIHdoaWNoIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBmb2xsb3dpbmcgdGVybXM6XG5cbiIgJSBuYW1lKQotICAgICAgICBkaXJzID0gZ2xvYi5nbG9iKHNyY2RpcisiL2V4dGVybmFscy8iK3BhdCkKLSAgICAgICAgaWYgbm90IGRpcnM6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yLCAiQ291bGQgbm90IGZpbmQgIitzcmNkaXIrIi9leHRlcm5hbHMvIitwYXQKLSAgICAgICAgaWYgbGVuKGRpcnMpID4gMiBhbmQgbm90IHNuYXBzaG90OgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvciwgIk11bHRpcGxlIGNvcGllcyBvZiAiK3BhdAotICAgICAgICBkaXIgPSBkaXJzWzBdCi0gICAgICAgIHNodXRpbC5jb3B5ZmlsZW9iaihvcGVuKG9zLnBhdGguam9pbihkaXIsIGZpbGUpKSwgb3V0KQotICAgIG91dC5jbG9zZSgpCi0KLQotY2xhc3MgUHlEaXJlY3RvcnkoRGlyZWN0b3J5KToKLSAgICAiIiJCeSBkZWZhdWx0LCBhbGwgY29tcG9uZW50cyBpbiB0aGUgUHl0aG9uIGluc3RhbGxlcgotICAgIGNhbiBydW4gZnJvbSBzb3VyY2UuIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KToKLSAgICAgICAgaWYgImNvbXBvbmVudGZsYWdzIiBub3QgaW4ga3c6Ci0gICAgICAgICAgICBrd1snY29tcG9uZW50ZmxhZ3MnXSA9IDIgI21zaWRiQ29tcG9uZW50QXR0cmlidXRlc09wdGlvbmFsCi0gICAgICAgIERpcmVjdG9yeS5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprdykKLQotZGVmIGhnbWFuaWZlc3QoKToKLSAgICAjIEZldGNoIGZpbGUgbGlzdCBmcm9tIE1lcmN1cmlhbAotICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnaGcnLCAnbWFuaWZlc3QnXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgICMgQ3JlYXRlIG5lc3RlZCBkaXJlY3RvcmllcyBmb3IgZmlsZSB0cmVlCi0gICAgcmVzdWx0ID0ge30KLSAgICBmb3IgbGluZSBpbiBzdGRvdXQuc3BsaXRsaW5lcygpOgotICAgICAgICBjb21wb25lbnRzID0gbGluZS5zcGxpdCgnLycpCi0gICAgICAgIGQgPSByZXN1bHQKLSAgICAgICAgd2hpbGUgbGVuKGNvbXBvbmVudHMpID4gMToKLSAgICAgICAgICAgIGQxID0gZC5zZXRkZWZhdWx0KGNvbXBvbmVudHNbMF0sIHt9KQotICAgICAgICAgICAgZCA9IGQxCi0gICAgICAgICAgICBkZWwgY29tcG9uZW50c1swXQotICAgICAgICBkW2NvbXBvbmVudHNbMF1dID0gTm9uZQotICAgIHJldHVybiByZXN1bHQKLQotCi0jIFNlZSAiRmlsZSBUYWJsZSIsICJDb21wb25lbnQgVGFibGUiLCAiRGlyZWN0b3J5IFRhYmxlIiwKLSMgIkZlYXR1cmVDb21wb25lbnRzIFRhYmxlIgotZGVmIGFkZF9maWxlcyhkYik6Ci0gICAgaW5zdGFsbGVyID0gbXNpbGliLk1ha2VJbnN0YWxsZXIoKQotICAgIGhnZmlsZXMgPSBoZ21hbmlmZXN0KCkKLSAgICBjYWIgPSBDQUIoInB5dGhvbiIpCi0gICAgdG1wZmlsZXMgPSBbXQotICAgICMgQWRkIGFsbCBleGVjdXRhYmxlcywgaWNvbnMsIHRleHQgZmlsZXMgaW50byB0aGUgVEFSR0VURElSIGNvbXBvbmVudAotICAgIHJvb3QgPSBQeURpcmVjdG9yeShkYiwgY2FiLCBOb25lLCBzcmNkaXIsICJUQVJHRVRESVIiLCAiU291cmNlRGlyIikKLSAgICBkZWZhdWx0X2ZlYXR1cmUuc2V0X2N1cnJlbnQoKQotICAgIHJvb3QuYWRkX2ZpbGUoIlJFQURNRS50eHQiLCBzcmM9IlJFQURNRSIpCi0gICAgcm9vdC5hZGRfZmlsZSgiTkVXUy50eHQiLCBzcmM9Ik1pc2MvTkVXUyIpCi0gICAgZ2VuZXJhdGVfbGljZW5zZSgpCi0gICAgcm9vdC5hZGRfZmlsZSgiTElDRU5TRS50eHQiLCBzcmM9b3MucGF0aC5hYnNwYXRoKCJMSUNFTlNFLnR4dCIpKQotICAgIHJvb3Quc3RhcnRfY29tcG9uZW50KCJweXRob24uZXhlIiwga2V5ZmlsZT0icHl0aG9uLmV4ZSIpCi0gICAgcm9vdC5hZGRfZmlsZSgiJXMvcHl0aG9uLmV4ZSIgJSBQQ0JVSUxEKQotICAgIHJvb3Quc3RhcnRfY29tcG9uZW50KCJweXRob253LmV4ZSIsIGtleWZpbGU9InB5dGhvbncuZXhlIikKLSAgICByb290LmFkZF9maWxlKCIlcy9weXRob253LmV4ZSIgJSBQQ0JVSUxEKQotCi0gICAgIyBtc2lkYkNvbXBvbmVudEF0dHJpYnV0ZXNTaGFyZWREbGxSZWZDb3VudCA9IDgsIHNlZSAiQ29tcG9uZW50IFRhYmxlIgotICAgIGRsbGRpciA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHJvb3QsIHNyY2RpciwgIkRMTERJUiIsICIuIikKLSAgICBsYXVuY2hlcmRpciA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHJvb3QsIHNyY2RpciwgIkxBVU5DSEVSRElSIiwgIi4iKQotCi0gICAgIyBtc2lkYkNvbXBvbmVudEF0dHJpYnV0ZXM2NGJpdCA9IDI1NjsgdGhpcyBkaXNhYmxlcyByZWdpc3RyeSByZWRpcmVjdGlvbgotICAgICMgdG8gYWxsb3cgc2V0dGluZyB0aGUgU2hhcmVkRExMcyBrZXkgaW4gdGhlIDY0LWJpdCBwb3J0aW9uIGV2ZW4gZm9yIGEKLSAgICAjIDMyLWJpdCBpbnN0YWxsZXIuCi0gICAgIyBYWFggZG9lcyB0aGlzIHN0aWxsIGFsbG93IHRvIGluc3RhbGwgdGhlIGNvbXBvbmVudCBvbiBhIDMyLWJpdCBzeXN0ZW0/Ci0gICAgIyBQaWNrIHVwIDMyLWJpdCBiaW5hcnkgYWx3YXlzCi0gICAgbGF1bmNoZXJzcmMgPSBQQ0JVSUxECi0gICAgaWYgbGF1bmNoZXJzcmMubG93ZXIoKSA9PSAncGNidWlsZFxceDY0LXBnbyc6Ci0gICAgICAgIGxhdW5jaGVyc3JjID0gJ1BDQnVpbGRcXHdpbjMyLXBnbycKLSAgICBpZiBsYXVuY2hlcnNyYy5sb3dlcigpID09ICdwY2J1aWxkXFxhbWQ2NCc6Ci0gICAgICAgIGxhdW5jaGVyc3JjID0gJ1BDQnVpbGQnCi0gICAgbGF1bmNoZXIgPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBsYXVuY2hlcnNyYywgInB5LmV4ZSIpCi0gICAgbGF1bmNoZXJkaXIuc3RhcnRfY29tcG9uZW50KCJsYXVuY2hlciIsIGZsYWdzID0gOCsyNTYsIGtleWZpbGU9InB5LmV4ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV1aWQ9IntCNTEwNzQwMi02OTU4LTQ2MUItOEIwQS00MDM3RDMzMjcxNjB9IikKLSAgICBsYXVuY2hlcmRpci5hZGRfZmlsZShsYXVuY2hlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPWluc3RhbGxlci5GaWxlVmVyc2lvbihsYXVuY2hlciwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U9aW5zdGFsbGVyLkZpbGVWZXJzaW9uKGxhdW5jaGVyLCAxKSkKLSAgICBsYXVuY2hlcncgPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBsYXVuY2hlcnNyYywgInB5dy5leGUiKQotICAgIGxhdW5jaGVyZGlyLnN0YXJ0X2NvbXBvbmVudCgibGF1bmNoZXJ3IiwgZmxhZ3MgPSA4KzI1Niwga2V5ZmlsZT0icHl3LmV4ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV1aWQ9Ins4RTUyQjhDRC00OEJCLTRENzQtODRDRC02MjM4QkNEMTFGMjB9IikKLSAgICBsYXVuY2hlcmRpci5hZGRfZmlsZShsYXVuY2hlcncsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj1pbnN0YWxsZXIuRmlsZVZlcnNpb24obGF1bmNoZXJ3LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZT1pbnN0YWxsZXIuRmlsZVZlcnNpb24obGF1bmNoZXJ3LCAxKSkKLQotICAgIHB5ZGxsID0gInB5dGhvbiVzJXMuZGxsIiAlIChtYWpvciwgbWlub3IpCi0gICAgcHlkbGxzcmMgPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBQQ0JVSUxELCBweWRsbCkKLSAgICBkbGxkaXIuc3RhcnRfY29tcG9uZW50KCJETExESVIiLCBmbGFncyA9IDgsIGtleWZpbGUgPSBweWRsbCwgdXVpZCA9IHB5dGhvbmRsbF91dWlkKQotICAgIHB5dmVyc2lvbiA9IGluc3RhbGxlci5GaWxlVmVyc2lvbihweWRsbHNyYywgMCkKLSAgICBpZiBub3Qgc25hcHNob3Q6Ci0gICAgICAgICMgRm9yIHJlbGVhc2VzLCB0aGUgUHl0aG9uIERMTCBoYXMgdGhlIHNhbWUgdmVyc2lvbiBhcyB0aGUKLSAgICAgICAgIyBpbnN0YWxsZXIgcGFja2FnZS4KLSAgICAgICAgYXNzZXJ0IHB5dmVyc2lvbi5zcGxpdCgiLiIpWzozXSA9PSBjdXJyZW50X3ZlcnNpb24uc3BsaXQoIi4iKQotICAgIGRsbGRpci5hZGRfZmlsZSgiJXMvcHl0aG9uJXMlcy5kbGwiICUgKFBDQlVJTEQsIG1ham9yLCBtaW5vciksCi0gICAgICAgICAgICAgICAgICAgIHZlcnNpb249cHl2ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZT1pbnN0YWxsZXIuRmlsZVZlcnNpb24ocHlkbGxzcmMsIDEpKQotICAgIERMTHMgPSBQeURpcmVjdG9yeShkYiwgY2FiLCByb290LCBzcmNkaXIgKyAiLyIgKyBQQ0JVSUxELCAiRExMcyIsICJETExTfERMTHMiKQotCi0gICAgIyBtc3ZjcjkwLmRsbDogTmVlZCB0byBwbGFjZSB0aGUgRExMIGFuZCB0aGUgbWFuaWZlc3QgaW50byB0aGUgcm9vdCBkaXJlY3RvcnksCi0gICAgIyBwbHVzIGFub3RoZXIgY29weSBvZiB0aGUgbWFuaWZlc3QgaW4gdGhlIERMTHMgZGlyZWN0b3J5LCB3aXRoIHRoZSBtYW5pZmVzdAotICAgICMgcG9pbnRpbmcgdG8gdGhlIHJvb3QgZGlyZWN0b3J5Ci0gICAgcm9vdC5zdGFydF9jb21wb25lbnQoIm1zdmNyOTAiLCBmZWF0dXJlPXByaXZhdGVfY3J0KQotICAgICMgUmVzdWx0cyBhcmUgSUQsa2V5d29yZCBwYWlycwotICAgIGNydGRsbCwga3dkcyA9IGV4dHJhY3RfbXN2Y3IxMDAoKQotICAgIHJvb3QuYWRkX2ZpbGUoY3J0ZGxsLCAqKmt3ZHMpCi0gICAgIyBDb3B5IHRoZSBtYW5pZmVzdAotICAgICMgQWN0dWFsbHksIGRvbid0IGRvIHRoYXQgYW55bW9yZSAtIG5vIERMTCBpbiBETExzIHNob3VsZCBoYXZlIGEgbWFuaWZlc3QKLSAgICAjIGRlcGVuZGVuY3kgb24gbXN2Y3I5MC5kbGwgYW55bW9yZSwgc28gdGhpcyBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeQotICAgICNtYW5pZmVzdF9kbGxzID0gbWFuaWZlc3RbMF0rIi5yb290IgotICAgICNvcGVuKG1hbmlmZXN0X2RsbHMsICJ3Iikud3JpdGUob3BlbihtYW5pZmVzdFsxXVsnc3JjJ10pLnJlYWQoKS5yZXBsYWNlKCJtc3ZjciIsIi4uL21zdmNyIikpCi0gICAgI0RMTHMuc3RhcnRfY29tcG9uZW50KCJtc3ZjcjkwX2RsbHMiLCBmZWF0dXJlPXByaXZhdGVfY3J0KQotICAgICNETExzLmFkZF9maWxlKG1hbmlmZXN0WzBdLCBzcmM9b3MucGF0aC5hYnNwYXRoKG1hbmlmZXN0X2RsbHMpKQotCi0gICAgIyBOb3cgc3RhcnQgdGhlIG1haW4gY29tcG9uZW50IGZvciB0aGUgRExMcyBkaXJlY3Rvcnk7Ci0gICAgIyBubyByZWd1bGFyIGZpbGVzIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgZGlyZWN0b3J5IHlldC4KLSAgICBETExzLnN0YXJ0X2NvbXBvbmVudCgpCi0KLSAgICAjIENoZWNrIGlmIF9jdHlwZXMucHlkIGV4aXN0cwotICAgIGhhdmVfY3R5cGVzID0gb3MucGF0aC5leGlzdHMoc3JjZGlyKyIvJXMvX2N0eXBlcy5weWQiICUgUENCVUlMRCkKLSAgICBpZiBub3QgaGF2ZV9jdHlwZXM6Ci0gICAgICAgIHByaW50KCJXQVJOSU5HOiBfY3R5cGVzLnB5ZCBub3QgZm91bmQsIGN0eXBlcyB3aWxsIG5vdCBiZSBpbmNsdWRlZCIpCi0gICAgICAgIGV4dGVuc2lvbnMucmVtb3ZlKCJfY3R5cGVzLnB5ZCIpCi0KLSAgICAjIEFkZCBhbGwgLnB5IGZpbGVzIGluIExpYiwgZXhjZXB0IHRraW50ZXIsIHRlc3QKLSAgICBkaXJzID0gW10KLSAgICBweWRpcnMgPSBbKHJvb3QsICJMaWIiLCBoZ2ZpbGVzWyJMaWIiXSwgZGVmYXVsdF9mZWF0dXJlKV0KLSAgICB3aGlsZSBweWRpcnM6Ci0gICAgICAgICMgQ29tbWl0IGV2ZXJ5IG5vdyBhbmQgdGhlbiwgb3IgZWxzZSBpbnN0YWxsZXIgd2lsbCBjb21wbGFpbgotICAgICAgICBkYi5Db21taXQoKQotICAgICAgICBwYXJlbnQsIGRpciwgZmlsZXMsIGZlYXR1cmUgPSBweWRpcnMucG9wKCkKLSAgICAgICAgaWYgZGlyLnN0YXJ0c3dpdGgoInBsYXQtIik6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBkaXIgaW4gWyJ0a2ludGVyIiwgImlkbGVsaWIiLCAidHVydGxlZGVtbyJdOgotICAgICAgICAgICAgaWYgbm90IGhhdmVfdGNsOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBmZWF0dXJlID0gdGNsdGsKLSAgICAgICAgICAgIHRjbHRrLnNldF9jdXJyZW50KCkKLSAgICAgICAgZWxpZiBkaXIgaW4gKCd0ZXN0JywgJ3Rlc3RzJyk6Ci0gICAgICAgICAgICBmZWF0dXJlID0gdGVzdHN1aXRlCi0gICAgICAgIGVsaWYgbm90IGhhdmVfY3R5cGVzIGFuZCBkaXIgPT0gImN0eXBlcyI6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBmZWF0dXJlLnNldF9jdXJyZW50KCkKLSAgICAgICAgbGliID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgcGFyZW50LCBkaXIsIGRpciwgIiVzfCVzIiAlIChwYXJlbnQubWFrZV9zaG9ydChkaXIpLCBkaXIpKQotICAgICAgICBkaXJzLmFwcGVuZChsaWIpCi0gICAgICAgIGhhc19weSA9IEZhbHNlCi0gICAgICAgIGZvciBuYW1lLCBzdWJkaXIgaW4gZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIHN1YmRpciBpcyBOb25lOgotICAgICAgICAgICAgICAgIGFzc2VydCBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4obGliLmFic29sdXRlLCBuYW1lKSkKLSAgICAgICAgICAgICAgICBpZiBuYW1lID09ICdSRUFETUUnOgotICAgICAgICAgICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIlJFQURNRS50eHQiLCBzcmM9IlJFQURNRSIpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbGliLmFkZF9maWxlKG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGhhc19weSA9IGhhc19weSBvciBuYW1lLmVuZHN3aXRoKCIucHkiKSBvciBuYW1lLmVuZHN3aXRoKCIucHl3IikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKGxpYi5hYnNvbHV0ZSwgbmFtZSkpCi0gICAgICAgICAgICAgICAgcHlkaXJzLmFwcGVuZCgobGliLCBuYW1lLCBzdWJkaXIsIGZlYXR1cmUpKQotCi0gICAgICAgIGlmIGhhc19weToKLSAgICAgICAgICAgIGxpYi5yZW1vdmVfcHljKCkKLSAgICAjIEFkZCBETExzCi0gICAgZGVmYXVsdF9mZWF0dXJlLnNldF9jdXJyZW50KCkKLSAgICBsaWIgPSBETExzCi0gICAgbGliLmFkZF9maWxlKCJweS5pY28iLCBzcmM9c3JjZGlyKyIvUEMvcHkuaWNvIikKLSAgICBsaWIuYWRkX2ZpbGUoInB5Yy5pY28iLCBzcmM9c3JjZGlyKyIvUEMvcHljLmljbyIpCi0gICAgZGxscyA9IFtdCi0gICAgdGNsZmlsZXMgPSBbXQotICAgIGZvciBmIGluIGV4dGVuc2lvbnM6Ci0gICAgICAgIGlmIGY9PSJfdGtpbnRlci5weWQiOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNyY2RpciArICIvIiArIFBDQlVJTEQgKyAiLyIgKyBmKToKLSAgICAgICAgICAgIHByaW50KCJXQVJOSU5HOiBNaXNzaW5nIGV4dGVuc2lvbiIsIGYpCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBkbGxzLmFwcGVuZChmKQotICAgICAgICBsaWIuYWRkX2ZpbGUoZikKLSAgICBsaWIuYWRkX2ZpbGUoJ3B5dGhvbjMuZGxsJykKLSAgICAjIEFkZCBzcWxpdGUKLSAgICBpZiBtc2lsaWIubXNpX3R5cGU9PSJJbnRlbDY0OzEwMzMiOgotICAgICAgICBzcWxpdGVfYXJjaCA9ICIvaWE2NCIKLSAgICBlbGlmIG1zaWxpYi5tc2lfdHlwZT09Ing2NDsxMDMzIjoKLSAgICAgICAgc3FsaXRlX2FyY2ggPSAiL2FtZDY0IgotICAgICAgICB0Y2xzdWZmaXggPSAiNjQiCi0gICAgZWxzZToKLSAgICAgICAgc3FsaXRlX2FyY2ggPSAiIgotICAgICAgICB0Y2xzdWZmaXggPSAiIgotICAgIGxpYi5hZGRfZmlsZSgic3FsaXRlMy5kbGwiKQotICAgIGlmIGhhdmVfdGNsOgotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoIiVzLyVzL190a2ludGVyLnB5ZCIgJSAoc3JjZGlyLCBQQ0JVSUxEKSk6Ci0gICAgICAgICAgICBwcmludCgiV0FSTklORzogTWlzc2luZyBfdGtpbnRlci5weWQiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbGliLnN0YXJ0X2NvbXBvbmVudCgiVGtETExzIiwgdGNsdGspCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIl90a2ludGVyLnB5ZCIpCi0gICAgICAgICAgICBkbGxzLmFwcGVuZCgiX3RraW50ZXIucHlkIikKLSAgICAgICAgICAgIHRjbGRpciA9IG9zLnBhdGgubm9ybXBhdGgoc3JjZGlyKygiL2V4dGVybmFscy90Y2x0ayVzL2JpbiIgJSB0Y2xzdWZmaXgpKQotICAgICAgICAgICAgZm9yIGYgaW4gZ2xvYi5nbG9iMSh0Y2xkaXIsICIqLmRsbCIpOgotICAgICAgICAgICAgICAgIGxpYi5hZGRfZmlsZShmLCBzcmM9b3MucGF0aC5qb2luKHRjbGRpciwgZikpCi0gICAgIyBjaGVjayB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgdW5rbm93biBleHRlbnNpb25zCi0gICAgZm9yIGYgaW4gZ2xvYi5nbG9iMShzcmNkaXIrIi8iK1BDQlVJTEQsICIqLnB5ZCIpOgotICAgICAgICBpZiBmLmVuZHN3aXRoKCJfZC5weWQiKTogY29udGludWUgIyBkZWJ1ZyB2ZXJzaW9uCi0gICAgICAgIGlmIGYgaW4gZGxsczogY29udGludWUKLSAgICAgICAgcHJpbnQoIldBUk5JTkc6IFVua25vd24gZXh0ZW5zaW9uIiwgZikKLQotICAgICMgQWRkIGhlYWRlcnMKLSAgICBkZWZhdWx0X2ZlYXR1cmUuc2V0X2N1cnJlbnQoKQotICAgIGxpYiA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHJvb3QsICJpbmNsdWRlIiwgImluY2x1ZGUiLCAiSU5DTFVERXxpbmNsdWRlIikKLSAgICBsaWIuZ2xvYigiKi5oIikKLSAgICBsaWIuYWRkX2ZpbGUoInB5Y29uZmlnLmgiLCBzcmM9Ii4uL1BDL3B5Y29uZmlnLmgiKQotICAgICMgQWRkIGltcG9ydCBsaWJyYXJpZXMKLSAgICBsaWIgPSBQeURpcmVjdG9yeShkYiwgY2FiLCByb290LCBQQ0JVSUxELCAibGlicyIsICJMSUJTfGxpYnMiKQotICAgIGZvciBmIGluIGRsbHM6Ci0gICAgICAgIGxpYi5hZGRfZmlsZShmLnJlcGxhY2UoJ3B5ZCcsJ2xpYicpKQotICAgIGxpYi5hZGRfZmlsZSgncHl0aG9uJXMlcy5saWInICUgKG1ham9yLCBtaW5vcikpCi0gICAgbGliLmFkZF9maWxlKCdweXRob24zLmxpYicpCi0gICAgIyBBZGQgdGhlIG1pbmd3LWZvcm1hdCBsaWJyYXJ5Ci0gICAgaWYgaGF2ZV9taW5ndzoKLSAgICAgICAgbGliLmFkZF9maWxlKCdsaWJweXRob24lcyVzLmEnICUgKG1ham9yLCBtaW5vcikpCi0gICAgaWYgaGF2ZV90Y2w6Ci0gICAgICAgICMgQWRkIFRjbC9UawotICAgICAgICB0Y2xkaXJzID0gWyhyb290LCAnZXh0ZXJuYWxzL3RjbHRrJXMvbGliJyAlIHRjbHN1ZmZpeCwgJ3RjbCcpXQotICAgICAgICB0Y2x0ay5zZXRfY3VycmVudCgpCi0gICAgICAgIHdoaWxlIHRjbGRpcnM6Ci0gICAgICAgICAgICBwYXJlbnQsIHBoeXMsIGRpciA9IHRjbGRpcnMucG9wKCkKLSAgICAgICAgICAgIGxpYiA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHBhcmVudCwgcGh5cywgZGlyLCAiJXN8JXMiICUgKHBhcmVudC5tYWtlX3Nob3J0KGRpciksIGRpcikpCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobGliLmFic29sdXRlKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZm9yIGYgaW4gb3MubGlzdGRpcihsaWIuYWJzb2x1dGUpOgotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKGxpYi5hYnNvbHV0ZSwgZikpOgotICAgICAgICAgICAgICAgICAgICB0Y2xkaXJzLmFwcGVuZCgobGliLCBmLCBmKSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBsaWIuYWRkX2ZpbGUoZikKLSAgICAjIEFkZCB0b29scwotICAgIHRvb2xzLnNldF9jdXJyZW50KCkKLSAgICB0b29sZGlyID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgcm9vdCwgIlRvb2xzIiwgIlRvb2xzIiwgIlRPT0xTfFRvb2xzIikKLSAgICBmb3IgZiBpbiBbJ2kxOG4nLCAncHluY2hlJywgJ1NjcmlwdHMnXToKLSAgICAgICAgbGliID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgdG9vbGRpciwgZiwgZiwgIiVzfCVzIiAlICh0b29sZGlyLm1ha2Vfc2hvcnQoZiksIGYpKQotICAgICAgICBsaWIuZ2xvYigiKi5weSIpCi0gICAgICAgIGxpYi5nbG9iKCIqLnB5dyIpCi0gICAgICAgIGxpYi5yZW1vdmVfcHljKCkKLSAgICAgICAgbGliLmdsb2IoIioudHh0IikKLSAgICAgICAgaWYgZiA9PSAicHluY2hlIjoKLSAgICAgICAgICAgIHggPSBQeURpcmVjdG9yeShkYiwgY2FiLCBsaWIsICJYIiwgIlgiLCAiWHxYIikKLSAgICAgICAgICAgIHguZ2xvYigiKi50eHQiKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4obGliLmFic29sdXRlLCAiUkVBRE1FIikpOgotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJSRUFETUUudHh0Iiwgc3JjPSJSRUFETUUiKQotICAgICAgICBpZiBmID09ICdTY3JpcHRzJzoKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiMnRvMy5weSIsIHNyYz0iMnRvMyIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInB5ZG9jMy5weSIsIHNyYz0icHlkb2MzIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgicHl2ZW52LnB5Iiwgc3JjPSJweXZlbnYiKQotICAgICMgQWRkIGRvY3VtZW50YXRpb24KLSAgICBodG1sZmlsZXMuc2V0X2N1cnJlbnQoKQotICAgIGxpYiA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHJvb3QsICJEb2MiLCAiRG9jIiwgIkRPQ3xEb2MiKQotICAgIGxpYi5zdGFydF9jb21wb25lbnQoImRvY3VtZW50YXRpb24iLCBrZXlmaWxlPWRvY2ZpbGUpCi0gICAgbGliLmFkZF9maWxlKGRvY2ZpbGUsIHNyYz0iYnVpbGQvaHRtbGhlbHAvIitkb2NmaWxlKQotCi0gICAgY2FiLmNvbW1pdChkYikKLQotICAgIGZvciBmIGluIHRtcGZpbGVzOgotICAgICAgICBvcy51bmxpbmsoZikKLQotIyBTZWUgIlJlZ2lzdHJ5IFRhYmxlIiwgIkNvbXBvbmVudCBUYWJsZSIKLWRlZiBhZGRfcmVnaXN0cnkoZGIpOgotICAgICMgRmlsZSBleHRlbnNpb25zLCBhc3NvY2lhdGVkIHdpdGggdGhlIFJFR0lTVFJZLmRlZiBjb21wb25lbnQKLSAgICAjIElETEUgdmVyYnMgZGVwZW5kIG9uIHRoZSB0Y2x0ayBmZWF0dXJlLgotICAgICMgbXNpZGJDb21wb25lbnRBdHRyaWJ1dGVzUmVnaXN0cnlLZXlQYXRoID0gNAotICAgICMgLTEgZm9yIFJvb3Qgc3BlY2lmaWVzICJkZXBlbmRlbnQgb24gQUxMVVNFUlMgcHJvcGVydHkiCi0gICAgdGNsZGF0YSA9IFtdCi0gICAgaWYgaGF2ZV90Y2w6Ci0gICAgICAgIHRjbGRhdGEgPSBbCi0gICAgICAgICAgICAoIlJFR0lTVFJZLnRjbCIsIG1zaWxpYi5nZW5fdXVpZCgpLCAiVEFSR0VURElSIiwgcmVnaXN0cnlfY29tcG9uZW50LCBOb25lLAotICAgICAgICAgICAgICJweS5JRExFIildCi0gICAgYWRkX2RhdGEoZGIsICJDb21wb25lbnQiLAotICAgICAgICAgICAgICMgbXNpZGJDb21wb25lbnRBdHRyaWJ1dGVzUmVnaXN0cnlLZXlQYXRoID0gNAotICAgICAgICAgICAgIFsoIlJFR0lTVFJZIiwgbXNpbGliLmdlbl91dWlkKCksICJUQVJHRVRESVIiLCByZWdpc3RyeV9jb21wb25lbnQsIE5vbmUsCi0gICAgICAgICAgICAgICAiSW5zdGFsbFBhdGgiKSwKLSAgICAgICAgICAgICAgKCJSRUdJU1RSWS5kb2MiLCBtc2lsaWIuZ2VuX3V1aWQoKSwgIlRBUkdFVERJUiIsIHJlZ2lzdHJ5X2NvbXBvbmVudCwgTm9uZSwKLSAgICAgICAgICAgICAgICJEb2N1bWVudGF0aW9uIiksCi0gICAgICAgICAgICAgICgiUkVHSVNUUlkucGF0aCIsIG1zaWxpYi5nZW5fdXVpZCgpLCAiVEFSR0VURElSIiwgcmVnaXN0cnlfY29tcG9uZW50LCBOb25lLAotICAgICAgICAgICAgICBOb25lKSwKLSAgICAgICAgICAgICAgKCJSRUdJU1RSWS5lbnN1cmVwaXAiLCBtc2lsaWIuZ2VuX3V1aWQoKSwgIlRBUkdFVERJUiIsIHJlZ2lzdHJ5X2NvbXBvbmVudCwgIkVuc3VyZVBpcFJ1biIsCi0gICAgICAgICAgICAgIE5vbmUpLAotICAgICAgICAgICAgICAoIlJFR0lTVFJZLmRlZiIsIG1zaWxpYi5nZW5fdXVpZCgpLCAiVEFSR0VURElSIiwgcmVnaXN0cnlfY29tcG9uZW50LAotICAgICAgICAgICAgICAgTm9uZSwgTm9uZSldICsgdGNsZGF0YSkKLSAgICAjIFNlZSAiRmVhdHVyZUNvbXBvbmVudHMgVGFibGUiLgotICAgICMgVGhlIGFzc29jaWF0aW9uIGJldHdlZW4gVGNsVGsgYW5kIHB5dGhvbncuZXhlIGlzIG5lY2Vzc2FyeSB0byBtYWtlIElDRTU5Ci0gICAgIyBoYXBweSwgYmVjYXVzZSB0aGUgaW5zdGFsbGVyIG90aGVyd2lzZSBiZWxpZXZlcyB0aGF0IHRoZSBJRExFIGFuZCBQeURvYwotICAgICMgc2hvcnRjdXRzIG1pZ2h0IGdldCBpbnN0YWxsZWQgd2l0aG91dCBweXRob253LmV4ZSBiZWluZyBpbnN0YWxsLiBUaGlzCi0gICAgIyBpcyBub3QgdHJ1ZSwgc2luY2UgaW5zdGFsbGluZyBUY2xUayB3aWxsIGluc3RhbGwgdGhlIGRlZmF1bHQgZmVhdHVyZSwgd2hpY2gKLSAgICAjIHdpbGwgY2F1c2UgcHl0aG9udy5leGUgdG8gYmUgaW5zdGFsbGVkLgotICAgICMgUkVHSVNUUlkudGNsIGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggYW55IGZlYXR1cmUsIGFzIGl0IHdpbGwgYmUgcmVxdWVzdGVkCi0gICAgIyB0aHJvdWdoIGEgY3VzdG9tIGFjdGlvbgotICAgIHRjbGRhdGEgPSBbXQotICAgIGlmIGhhdmVfdGNsOgotICAgICAgICB0Y2xkYXRhID0gWyh0Y2x0ay5pZCwgInB5dGhvbncuZXhlIildCi0gICAgYWRkX2RhdGEoZGIsICJGZWF0dXJlQ29tcG9uZW50cyIsCi0gICAgICAgICAgICAgWyhkZWZhdWx0X2ZlYXR1cmUuaWQsICJSRUdJU1RSWSIpLAotICAgICAgICAgICAgICAoaHRtbGZpbGVzLmlkLCAiUkVHSVNUUlkuZG9jIiksCi0gICAgICAgICAgICAgIChwcmVwZW5kX3BhdGguaWQsICJSRUdJU1RSWS5wYXRoIiksCi0gICAgICAgICAgICAgIChwaXBfZmVhdHVyZS5pZCwgIlJFR0lTVFJZLmVuc3VyZXBpcCIpLAotICAgICAgICAgICAgICAoZXh0X2ZlYXR1cmUuaWQsICJSRUdJU1RSWS5kZWYiKV0gKwotICAgICAgICAgICAgICB0Y2xkYXRhCi0gICAgICAgICAgICAgICkKLSAgICAjIEV4dGVuc2lvbnMgYXJlIG5vdCBhZHZlcnRpc2VkLiBGb3IgYWR2ZXJ0aXNlZCBleHRlbnNpb25zLAotICAgICMgd2Ugd291bGQgbmVlZCBzZXBhcmF0ZSBiaW5hcmllcyB0aGF0IGluc3RhbGwgYWxvbmcgd2l0aCB0aGUKLSAgICAjIGV4dGVuc2lvbi4KLSAgICBwYXQgPSByIlNvZnR3YXJlXENsYXNzZXNcJXNQeXRob24uJXNGaWxlXHNoZWxsXCVzXGNvbW1hbmQiCi0gICAgZXdpID0gIkVkaXQgd2l0aCBJRExFIgotICAgIHBhdDIgPSByIlNvZnR3YXJlXENsYXNzZXNcJXNQeXRob24uJXNGaWxlXERlZmF1bHRJY29uIgotICAgIHBhdDMgPSByIlNvZnR3YXJlXENsYXNzZXNcJXNQeXRob24uJXNGaWxlIgotICAgIHBhdDQgPSByIlNvZnR3YXJlXENsYXNzZXNcJXNQeXRob24uJXNGaWxlXHNoZWxsZXhcRHJvcEhhbmRsZXIiCi0gICAgdGNsX3ZlcmJzID0gW10KLSAgICBpZiBoYXZlX3RjbDoKLSAgICAgICAgdGNsX3ZlcmJzPVsKLSAgICAgICAgICAgICAoInB5LklETEUiLCAtMSwgcGF0ICUgKHRlc3RwcmVmaXgsICIiLCBld2kpLCAiIiwKLSAgICAgICAgICAgICAgciciW1RBUkdFVERJUl1weXRob253LmV4ZSIgIltUQVJHRVRESVJdTGliXGlkbGVsaWJcaWRsZS5weXciIC1lICIlMSInLAotICAgICAgICAgICAgICAiUkVHSVNUUlkudGNsIiksCi0gICAgICAgICAgICAgKCJweXcuSURMRSIsIC0xLCBwYXQgJSAodGVzdHByZWZpeCwgIk5vQ29uIiwgZXdpKSwgIiIsCi0gICAgICAgICAgICAgIHInIltUQVJHRVRESVJdcHl0aG9udy5leGUiICJbVEFSR0VURElSXUxpYlxpZGxlbGliXGlkbGUucHl3IiAtZSAiJTEiJywKLSAgICAgICAgICAgICAgIlJFR0lTVFJZLnRjbCIpLAotICAgICAgICBdCi0gICAgYWRkX2RhdGEoZGIsICJSZWdpc3RyeSIsCi0gICAgICAgICAgICBbIyBFeHRlbnNpb25zCi0gICAgICAgICAgICAgKCJweS5leHQiLCAtMSwgciJTb2Z0d2FyZVxDbGFzc2VzXC4iK2V4dCwgIiIsCi0gICAgICAgICAgICAgICJQeXRob24uRmlsZSIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAoInB5dy5leHQiLCAtMSwgciJTb2Z0d2FyZVxDbGFzc2VzXC4iK2V4dCsndycsICIiLAotICAgICAgICAgICAgICAiUHl0aG9uLk5vQ29uRmlsZSIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAoInB5Yy5leHQiLCAtMSwgciJTb2Z0d2FyZVxDbGFzc2VzXC4iK2V4dCsnYycsICIiLAotICAgICAgICAgICAgICAiUHl0aG9uLkNvbXBpbGVkRmlsZSIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAoInB5by5leHQiLCAtMSwgciJTb2Z0d2FyZVxDbGFzc2VzXC4iK2V4dCsnbycsICIiLAotICAgICAgICAgICAgICAiUHl0aG9uLkNvbXBpbGVkRmlsZSIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAjIE1JTUUgdHlwZXMKLSAgICAgICAgICAgICAoInB5Lm1pbWUiLCAtMSwgciJTb2Z0d2FyZVxDbGFzc2VzXC4iK2V4dCwgIkNvbnRlbnQgVHlwZSIsCi0gICAgICAgICAgICAgICJ0ZXh0L3BsYWluIiwgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICgicHl3Lm1pbWUiLCAtMSwgciJTb2Z0d2FyZVxDbGFzc2VzXC4iK2V4dCsndycsICJDb250ZW50IFR5cGUiLAotICAgICAgICAgICAgICAidGV4dC9wbGFpbiIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAjVmVyYnMKLSAgICAgICAgICAgICAoInB5Lm9wZW4iLCAtMSwgcGF0ICUgKHRlc3RwcmVmaXgsICIiLCAib3BlbiIpLCAiIiwKLSAgICAgICAgICAgICAgciciW0xBVU5DSEVSRElSXXB5LmV4ZSIgIiUxIiAlKicsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAoInB5dy5vcGVuIiwgLTEsIHBhdCAlICh0ZXN0cHJlZml4LCAiTm9Db24iLCAib3BlbiIpLCAiIiwKLSAgICAgICAgICAgICAgciciW0xBVU5DSEVSRElSXXB5dy5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgKCJweWMub3BlbiIsIC0xLCBwYXQgJSAodGVzdHByZWZpeCwgIkNvbXBpbGVkIiwgIm9wZW4iKSwgIiIsCi0gICAgICAgICAgICAgIHInIltMQVVOQ0hFUkRJUl1weS5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgXSArIHRjbF92ZXJicyArIFsKLSAgICAgICAgICAgICAjSWNvbnMKLSAgICAgICAgICAgICAoInB5Lmljb24iLCAtMSwgcGF0MiAlICh0ZXN0cHJlZml4LCAiIiksICIiLAotICAgICAgICAgICAgICByJ1tETExzXXB5LmljbycsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAoInB5dy5pY29uIiwgLTEsIHBhdDIgJSAodGVzdHByZWZpeCwgIk5vQ29uIiksICIiLAotICAgICAgICAgICAgICByJ1tETExzXXB5LmljbycsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAoInB5Yy5pY29uIiwgLTEsIHBhdDIgJSAodGVzdHByZWZpeCwgIkNvbXBpbGVkIiksICIiLAotICAgICAgICAgICAgICByJ1tETExzXXB5Yy5pY28nLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgIyBEZXNjcmlwdGlvbnMKLSAgICAgICAgICAgICAoInB5LnR4dCIsIC0xLCBwYXQzICUgKHRlc3RwcmVmaXgsICIiKSwgIiIsCi0gICAgICAgICAgICAgICJQeXRob24gRmlsZSIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAoInB5dy50eHQiLCAtMSwgcGF0MyAlICh0ZXN0cHJlZml4LCAiTm9Db24iKSwgIiIsCi0gICAgICAgICAgICAgICJQeXRob24gRmlsZSAobm8gY29uc29sZSkiLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgKCJweWMudHh0IiwgLTEsIHBhdDMgJSAodGVzdHByZWZpeCwgIkNvbXBpbGVkIiksICIiLAotICAgICAgICAgICAgICAiQ29tcGlsZWQgUHl0aG9uIEZpbGUiLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgIyBEcm9wIEhhbmRsZXIKLSAgICAgICAgICAgICAoInB5LmRyb3AiLCAtMSwgcGF0NCAlICh0ZXN0cHJlZml4LCAiIiksICIiLAotICAgICAgICAgICAgICAiezYwMjU0Q0E1LTk1M0ItMTFDRi04Qzk2LTAwQUEwMEI4NzA4Q30iLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgKCJweXcuZHJvcCIsIC0xLCBwYXQ0ICUgKHRlc3RwcmVmaXgsICJOb0NvbiIpLCAiIiwKLSAgICAgICAgICAgICAgIns2MDI1NENBNS05NTNCLTExQ0YtOEM5Ni0wMEFBMDBCODcwOEN9IiwgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICgicHljLmRyb3AiLCAtMSwgcGF0NCAlICh0ZXN0cHJlZml4LCAiQ29tcGlsZWQiKSwgIiIsCi0gICAgICAgICAgICAgICJ7NjAyNTRDQTUtOTUzQi0xMUNGLThDOTYtMDBBQTAwQjg3MDhDfSIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgIF0pCi0KLSAgICAjIFBBVEhFWFQKLSAgICBhZGRfZGF0YShkYiwgIkVudmlyb25tZW50IiwKLSAgICAgICAgICAgICBbKCJQYXRoRXh0QWRkaXRpb24iLCAiPS0qUGF0aEV4dCIsICJbfl07LlBZIiwgIlJFR0lTVFJZLmRlZiIpXSkKLQotICAgICMgUmVnaXN0cnkga2V5cwotICAgIHByZWZpeCA9IHIiU29mdHdhcmVcJXNQeXRob25cUHl0aG9uQ29yZVwlcyIgJSAodGVzdHByZWZpeCwgc2hvcnRfdmVyc2lvbikKLSAgICBhZGRfZGF0YShkYiwgIlJlZ2lzdHJ5IiwKLSAgICAgICAgICAgICBbKCJJbnN0YWxsUGF0aCIsIC0xLCBwcmVmaXgrciJcSW5zdGFsbFBhdGgiLCAiIiwgIltUQVJHRVRESVJdIiwgIlJFR0lTVFJZIiksCi0gICAgICAgICAgICAgICgiSW5zdGFsbEdyb3VwIiwgLTEsIHByZWZpeCtyIlxJbnN0YWxsUGF0aFxJbnN0YWxsR3JvdXAiLCAiIiwKLSAgICAgICAgICAgICAgICJQeXRob24gJXMiICUgc2hvcnRfdmVyc2lvbiwgIlJFR0lTVFJZIiksCi0gICAgICAgICAgICAgICgiUHl0aG9uUGF0aCIsIC0xLCBwcmVmaXgrciJcUHl0aG9uUGF0aCIsICIiLAotICAgICAgICAgICAgICAgciJbVEFSR0VURElSXUxpYjtbVEFSR0VURElSXURMTHMiLCAiUkVHSVNUUlkiKSwKLSAgICAgICAgICAgICAgKCJEb2N1bWVudGF0aW9uIiwgLTEsIHByZWZpeCtyIlxIZWxwXE1haW4gUHl0aG9uIERvY3VtZW50YXRpb24iLCAiIiwKLSAgICAgICAgICAgICAgICJbVEFSR0VURElSXURvY1xcIitkb2NmaWxlICwgIlJFR0lTVFJZLmRvYyIpLAotICAgICAgICAgICAgICAoIk1vZHVsZXMiLCAtMSwgcHJlZml4K3IiXE1vZHVsZXMiLCAiKyIsIE5vbmUsICJSRUdJU1RSWSIpLAotICAgICAgICAgICAgICAoIkFwcFBhdGhzIiwgLTEsIHIiU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3NcQ3VycmVudFZlcnNpb25cQXBwIFBhdGhzXFB5dGhvbi5leGUiLAotICAgICAgICAgICAgICAgIiIsIHIiW1RBUkdFVERJUl1QeXRob24uZXhlIiwgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICAoIkRpc3BsYXlJY29uIiwgLTEsCi0gICAgICAgICAgICAgICByIlNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFwlcyIgJSBwcm9kdWN0X2NvZGUsCi0gICAgICAgICAgICAgICAiRGlzcGxheUljb24iLCAiW1RBUkdFVERJUl1weXRob24uZXhlIiwgIlJFR0lTVFJZIiksCi0gICAgICAgICAgICAgICMgRmFrZSByZWdpc3RyeSBlbnRyeSB0byBhbGxvdyBpbnN0YWxsZXIgdG8gdHJhY2sgd2hldGhlciBlbnN1cmVwaXAgaGFzIGJlZW4gcnVuCi0gICAgICAgICAgICAgICgiRW5zdXJlUGlwUnVuIiwgLTEsIHByZWZpeCtyIlxFbnN1cmVQaXBSdW4iLCAiIiwgIiMxIiwgIlJFR0lTVFJZLmVuc3VyZXBpcCIpLAotICAgICAgICAgICAgICBdKQotICAgICMgU2hvcnRjdXRzLCBzZWUgIlNob3J0Y3V0IFRhYmxlIgotICAgIGFkZF9kYXRhKGRiLCAiRGlyZWN0b3J5IiwKLSAgICAgICAgICAgICBbKCJQcm9ncmFtTWVudUZvbGRlciIsICJUQVJHRVRESVIiLCAiLiIpLAotICAgICAgICAgICAgICAoIk1lbnVEaXIiLCAiUHJvZ3JhbU1lbnVGb2xkZXIiLCAiUFklcyVzfCVzUHl0aG9uICVzLiVzIiAlIChtYWpvcixtaW5vcix0ZXN0cHJlZml4LG1ham9yLG1pbm9yKSldKQotICAgIGFkZF9kYXRhKGRiLCAiUmVtb3ZlRmlsZSIsCi0gICAgICAgICAgICAgWygiTWVudURpciIsICJUQVJHRVRESVIiLCBOb25lLCAiTWVudURpciIsIDIpXSkKLSAgICB0Y2x0a3Nob3J0Y3V0cyA9IFtdCi0gICAgaWYgbXNpbGliLldpbjY0OgotICAgICAgICBiaXR0ZWQgPSAiNjQgYml0IgotICAgIGVsc2U6Ci0gICAgICAgIGJpdHRlZCA9ICIzMiBiaXQiCi0gICAgaWYgaGF2ZV90Y2w6Ci0gICAgICAgIHRjbHRrc2hvcnRjdXRzID0gWwotICAgICAgICAgICAgICAoIklETEUiLCAiTWVudURpciIsCi0gICAgICAgICAgICAgICAiSURMRXxJRExFIChQeXRob24gIitzaG9ydF92ZXJzaW9uKyIgR1VJIC0gIitiaXR0ZWQrIikiLAotICAgICAgICAgICAgICAgInB5dGhvbncuZXhlIiwgdGNsdGsuaWQsIHInIltUQVJHRVRESVJdTGliXGlkbGVsaWJcaWRsZS5weXciJywKLSAgICAgICAgICAgICAgIE5vbmUsIE5vbmUsICJweXRob25faWNvbi5leGUiLCAwLCBOb25lLCAiVEFSR0VURElSIiksCi0gICAgICAgICAgICAgIF0KLSAgICBhZGRfZGF0YShkYiwgIlNob3J0Y3V0IiwKLSAgICAgICAgICAgICB0Y2x0a3Nob3J0Y3V0cyArCi0gICAgICAgICAgICAgWyMgQWR2ZXJ0aXNlZCBzaG9ydGN1dHM6IHRhcmdldHMgYXJlIGZlYXR1cmVzLCBub3QgZmlsZXMKLSAgICAgICAgICAgICAgKCJQeXRob24iLCAiTWVudURpciIsCi0gICAgICAgICAgICAgICAiUFlUSE9OfFB5dGhvbiAiK3Nob3J0X3ZlcnNpb24rIiAoY29tbWFuZCBsaW5lIC0gIitiaXR0ZWQrIikiLAotICAgICAgICAgICAgICAgInB5dGhvbi5leGUiLCBkZWZhdWx0X2ZlYXR1cmUuaWQsIE5vbmUsIE5vbmUsIE5vbmUsCi0gICAgICAgICAgICAgICAicHl0aG9uX2ljb24uZXhlIiwgMiwgTm9uZSwgIlRBUkdFVERJUiIpLAotICAgICAgICAgICAgICAjIEFkdmVydGlzaW5nIHRoZSBNYW51YWwgYnJlYWtzIG9uIChzb21lPykgV2luOTgsIGFuZCB0aGUgc2hvcnRjdXQgbGFja3MgYW4KLSAgICAgICAgICAgICAgIyBpY29uIGZpcnN0LgotICAgICAgICAgICAgICAjKCJNYW51YWwiLCAiTWVudURpciIsICJNQU5VQUx8UHl0aG9uIE1hbnVhbHMiLCAiZG9jdW1lbnRhdGlvbiIsCi0gICAgICAgICAgICAgICMgaHRtbGZpbGVzLmlkLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSAgICAgICAgICAgICAgIyMgTm9uLWFkdmVydGlzZWQgc2hvcnRjdXRzOiBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCBhIHJlZ2lzdHJ5IGNvbXBvbmVudAotICAgICAgICAgICAgICAoIk1hbnVhbCIsICJNZW51RGlyIiwgIk1BTlVBTHxQeXRob24gIitzaG9ydF92ZXJzaW9uKyIgTWFudWFscyIsCi0gICAgICAgICAgICAgICAiUkVHSVNUUlkuZG9jIiwgIlsjJXNdIiAlIGRvY2ZpbGUsCi0gICAgICAgICAgICAgICBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSAgICAgICAgICAgICAgKCJQeURvYyIsICJNZW51RGlyIiwKLSAgICAgICAgICAgICAgICJNT0RET0NTfFB5dGhvbiAiK3Nob3J0X3ZlcnNpb24rIiBEb2NzIFNlcnZlciAocHlkb2MgLSAiKwotICAgICAgICAgICAgICAgYml0dGVkKyIpIiwgInB5dGhvbi5leGUiLCBkZWZhdWx0X2ZlYXR1cmUuaWQsIHInLW0gcHlkb2MgLWInLAotICAgICAgICAgICAgICAgTm9uZSwgTm9uZSwgInB5dGhvbl9pY29uLmV4ZSIsIDAsIE5vbmUsICJUQVJHRVRESVIiKSwKLSAgICAgICAgICAgICAgKCJVbmluc3RhbGwiLCAiTWVudURpciIsICJVTklOU1R8VW5pbnN0YWxsIFB5dGhvbiAiKwotICAgICAgICAgICAgICAgc2hvcnRfdmVyc2lvbisiICgiK2JpdHRlZCsiKSIsICJSRUdJU1RSWSIsCi0gICAgICAgICAgICAgICBTeXN0ZW1Gb2xkZXJOYW1lKyJtc2lleGVjIiwgICIveCVzIiAlIHByb2R1Y3RfY29kZSwKLSAgICAgICAgICAgICAgIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotICAgICAgICAgICAgICBdKQotICAgIGRiLkNvbW1pdCgpCi0KLWRlZiBidWlsZF9wZGJ6aXAoKToKLSAgICBwZGJleGNsdWRlID0gWydraWxsX3B5dGhvbi5wZGInLCAnbWFrZV9idWlsZGluZm8ucGRiJywKLSAgICAgICAgICAgICAgICAgICdtYWtlX3ZlcnNpb25pbmZvLnBkYiddCi0gICAgcGF0aCA9ICJweXRob24tJXMlcy1wZGIuemlwIiAlIChmdWxsX2N1cnJlbnRfdmVyc2lvbiwgbXNpbGliLmFyY2hfZXh0KQotICAgIHBkYnppcCA9IHppcGZpbGUuWmlwRmlsZShwYXRoLCAndycpCi0gICAgZm9yIGYgaW4gZ2xvYi5nbG9iMShvcy5wYXRoLmpvaW4oc3JjZGlyLCBQQ0JVSUxEKSwgIioucGRiIik6Ci0gICAgICAgIGlmIGYgbm90IGluIHBkYmV4Y2x1ZGUgYW5kIG5vdCBmLmVuZHN3aXRoKCdfZC5wZGInKToKLSAgICAgICAgICAgIHBkYnppcC53cml0ZShvcy5wYXRoLmpvaW4oc3JjZGlyLCBQQ0JVSUxELCBmKSwgZikKLSAgICBwZGJ6aXAuY2xvc2UoKQotCi1kYixtc2luYW1lID0gYnVpbGRfZGF0YWJhc2UoKQotdHJ5OgotICAgIGFkZF9mZWF0dXJlcyhkYikKLSAgICBhZGRfdWkoZGIpCi0gICAgYWRkX2ZpbGVzKGRiKQotICAgIGFkZF9yZWdpc3RyeShkYikKLSAgICByZW1vdmVfb2xkX3ZlcnNpb25zKGRiKQotICAgIGRiLkNvbW1pdCgpCi1maW5hbGx5OgotICAgIGRlbCBkYgotCi0jIE1lcmdlIENSVCBpbnRvIE1TSSBmaWxlLiBUaGlzIHJlcXVpcmVzIHRoZSBkYXRhYmFzZSB0byBiZSBjbG9zZWQuCi1tb2RfZGlyID0gb3MucGF0aC5qb2luKG9zLmVudmlyb25bIlByb2dyYW1GaWxlcyJdLCAiQ29tbW9uIEZpbGVzIiwgIk1lcmdlIE1vZHVsZXMiKQotaWYgbXNpbGliLldpbjY0OgotICAgIG1vZHVsZXMgPSBbIk1pY3Jvc29mdF9WQzEwMF9DUlRfeDY0Lm1zbSJdCi1lbHNlOgotICAgIG1vZHVsZXMgPSBbIk1pY3Jvc29mdF9WQzEwMF9DUlRfeDg2Lm1zbSJdCi0KLWZvciBpLCBuIGluIGVudW1lcmF0ZShtb2R1bGVzKToKLSAgICBtb2R1bGVzW2ldID0gb3MucGF0aC5qb2luKG1vZF9kaXIsIG4pCi0KLWRlZiBtZXJnZShtc2ksIGZlYXR1cmUsIHJvb3RkaXIsIG1vZHVsZXMpOgotICAgIGNhYl9hbmRfZmlsZWNvdW50ID0gW10KLSAgICAjIFN0ZXAgMTogTWVyZ2UgZGF0YWJhc2VzLCBleHRyYWN0IGNhYmZpbGVzCi0gICAgbSA9IG1zaWxpYi5NYWtlTWVyZ2UyKCkKLSAgICBtLk9wZW5Mb2coIm1lcmdlLmxvZyIpCi0gICAgbS5PcGVuRGF0YWJhc2UobXNpKQotICAgIGZvciBtb2R1bGUgaW4gbW9kdWxlczoKLSAgICAgICAgcHJpbnQgbW9kdWxlCi0gICAgICAgIG0uT3Blbk1vZHVsZShtb2R1bGUsMCkKLSAgICAgICAgbS5NZXJnZShmZWF0dXJlLCByb290ZGlyKQotICAgICAgICBwcmludCAiRXJyb3JzOiIKLSAgICAgICAgZm9yIGUgaW4gbS5FcnJvcnM6Ci0gICAgICAgICAgICBwcmludCBlLlR5cGUsIGUuTW9kdWxlVGFibGUsIGUuRGF0YWJhc2VUYWJsZQotICAgICAgICAgICAgcHJpbnQgIiAgIE1vZGtleXM6IiwKLSAgICAgICAgICAgIGZvciBzIGluIGUuTW9kdWxlS2V5czogcHJpbnQgcywKLSAgICAgICAgICAgIHByaW50Ci0gICAgICAgICAgICBwcmludCAiICAgREJLZXlzOiIsCi0gICAgICAgICAgICBmb3IgcyBpbiBlLkRhdGFiYXNlS2V5czogcHJpbnQgcywKLSAgICAgICAgICAgIHByaW50Ci0gICAgICAgIGNhYm5hbWUgPSB0ZW1wZmlsZS5ta3RlbXAoc3VmZml4PSIuY2FiIikKLSAgICAgICAgbS5FeHRyYWN0Q0FCKGNhYm5hbWUpCi0gICAgICAgIGNhYl9hbmRfZmlsZWNvdW50LmFwcGVuZCgoY2FibmFtZSwgbGVuKG0uTW9kdWxlRmlsZXMpKSkKLSAgICAgICAgbS5DbG9zZU1vZHVsZSgpCi0gICAgbS5DbG9zZURhdGFiYXNlKFRydWUpCi0gICAgbS5DbG9zZUxvZygpCi0KLSAgICAjIFN0ZXAgMjogQWRkIENBQiBmaWxlcwotICAgIGkgPSBtc2lsaWIuTWFrZUluc3RhbGxlcigpCi0gICAgZGIgPSBpLk9wZW5EYXRhYmFzZShtc2ksIGNvbnN0YW50cy5tc2lPcGVuRGF0YWJhc2VNb2RlVHJhbnNhY3QpCi0KLSAgICB2ID0gZGIuT3BlblZpZXcoIlNFTEVDVCBMYXN0U2VxdWVuY2UgRlJPTSBNZWRpYSIpCi0gICAgdi5FeGVjdXRlKE5vbmUpCi0gICAgbWF4bWVkaWEgPSAtMQotICAgIHdoaWxlIDE6Ci0gICAgICAgIHIgPSB2LkZldGNoKCkKLSAgICAgICAgaWYgbm90IHI6IGJyZWFrCi0gICAgICAgIHNlcSA9IHIuSW50ZWdlckRhdGEoMSkKLSAgICAgICAgaWYgc2VxID4gbWF4bWVkaWE6Ci0gICAgICAgICAgICBtYXhtZWRpYSA9IHNlcQotICAgIHByaW50ICJTdGFydCBvZiBNZWRpYSIsIG1heG1lZGlhCi0KLSAgICBmb3IgY2FibmFtZSwgY291bnQgaW4gY2FiX2FuZF9maWxlY291bnQ6Ci0gICAgICAgIHN0cmVhbSA9ICJtZXJnZWQlZCIgJSBtYXhtZWRpYQotICAgICAgICBtc2lsaWIuYWRkX2RhdGEoZGIsICJNZWRpYSIsCi0gICAgICAgICAgICAgICAgWyhtYXhtZWRpYSsxLCBtYXhtZWRpYStjb3VudCwgTm9uZSwgIiMiK3N0cmVhbSwgTm9uZSwgTm9uZSldKQotICAgICAgICBtc2lsaWIuYWRkX3N0cmVhbShkYiwgc3RyZWFtLCAgY2FibmFtZSkKLSAgICAgICAgb3MudW5saW5rKGNhYm5hbWUpCi0gICAgICAgIG1heG1lZGlhICs9IGNvdW50Ci0gICAgIyBUaGUgbWVyZ2UgbW9kdWxlIHNldHMgQUxMVVNFUlMgdG8gMSBpbiB0aGUgcHJvcGVydHkgdGFibGUuCi0gICAgIyBUaGlzIGlzIHVuZGVzaXJlZDsgZGVsZXRlIHRoYXQKLSAgICB2ID0gZGIuT3BlblZpZXcoIkRFTEVURSBGUk9NIFByb3BlcnR5IFdIRVJFIFByb3BlcnR5PSdBTExVU0VSUyciKQotICAgIHYuRXhlY3V0ZShOb25lKQotICAgIHYuQ2xvc2UoKQotICAgIGRiLkNvbW1pdCgpCi0KLW1lcmdlKG1zaW5hbWUsICJTaGFyZWRDUlQiLCAiVEFSR0VURElSIiwgbW9kdWxlcykKLQotIyBjZXJ0bmFtZSAoZnJvbSBjb25maWcucHkpIHNob3VsZCBiZSAoYSBzdWJzdHJpbmcgb2YpCi0jIHRoZSBjZXJ0aWZpY2F0ZSBzdWJqZWN0LCBlLmcuICJQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiIKLWlmIGNlcnRuYW1lOgotICAgIG9zLnN5c3RlbSgnc2lnbnRvb2wgc2lnbiAvbiAiJXMiICcKLSAgICAgICcvdCBodHRwOi8vdGltZXN0YW1wLnZlcmlzaWduLmNvbS9zY3JpcHRzL3RpbWVzdGFtcC5kbGwgJwotICAgICAgJy9kICJQeXRob24gJXMiICcKLSAgICAgICclcycgJSAoY2VydG5hbWUsIGZ1bGxfY3VycmVudF92ZXJzaW9uLCBtc2luYW1lKSkKLQotaWYgcGRiemlwOgotICAgIGJ1aWxkX3BkYnppcCgpCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpLnRhcmdldHMgYi9Ub29scy9tc2kvbXNpLnRhcmdldHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQwZDljNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9tc2kudGFyZ2V0cwpAQCAtMCwwICsxLDYyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorCisgICAgPFRhcmdldCBOYW1lPSJQcm9jZXNzSW5zdGFsbEZpbGVzIiBBZnRlclRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCIgQ29uZGl0aW9uPSJAKEluc3RhbGxGaWxlcykgIT0gJyciPgorICAgICAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgICAgIDxfRmlsZUxpc3RUYXJnZXQ+JChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSQoTVNCdWlsZFByb2plY3ROYW1lKS5nLmNzdjwvX0ZpbGVMaXN0VGFyZ2V0PgorICAgICAgICAgICAgPF9JbnN0YWxsRmlsZXNUYXJnZXQ+JChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSQoTVNCdWlsZFByb2plY3ROYW1lKS5nLnd4czwvX0luc3RhbGxGaWxlc1RhcmdldD4KKyAgICAgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgICAgICAKKyAgICAgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgICAgIDxJbnN0YWxsRmlsZXM+CisgICAgICAgICAgICAgICAgPF9Tb3VyY2U+JShTb3VyY2UpJChbbXNidWlsZF06Ok1ha2VSZWxhdGl2ZSglKFNvdXJjZUJhc2UpLCAlKEZ1bGxQYXRoKSkpPC9fU291cmNlPgorICAgICAgICAgICAgICAgIDxfVGFyZ2V0PiUoVGFyZ2V0XykkKFttc2J1aWxkXTo6TWFrZVJlbGF0aXZlKCUoVGFyZ2V0QmFzZSksICUoRnVsbFBhdGgpKSk8L19UYXJnZXQ+CisgICAgICAgICAgICA8L0luc3RhbGxGaWxlcz4KKyAgICAgICAgPC9JdGVtR3JvdXA+CisgICAgICAgIAorICAgICAgICA8V3JpdGVMaW5lc1RvRmlsZSBGaWxlPSIkKF9GaWxlTGlzdFRhcmdldCkiIExpbmVzPSJAKEluc3RhbGxGaWxlcy0+JyZxdW90OyUoX1NvdXJjZSkmcXVvdDssJnF1b3Q7JShfVGFyZ2V0KSZxdW90OywmcXVvdDslKEdyb3VwKSZxdW90OywmcXVvdDslKERpc2tJZCkmcXVvdDssJnF1b3Q7JShDb25kaXRpb24pJnF1b3Q7JykiIE92ZXJ3cml0ZT0idHJ1ZSIgLz4KKyAgICAgICAgPEV4ZWMgQ29tbWFuZD0nIiQoUHl0aG9uRXhlKSIgY3N2X3RvX3d4cy5weSAiJChfRmlsZUxpc3RUYXJnZXQpIiAiJChfSW5zdGFsbEZpbGVzVGFyZ2V0KSInCisgICAgICAgICAgICAgIFdvcmtpbmdEaXJlY3Rvcnk9IiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KSIgLz4KKworICAgICAgICA8SXRlbUdyb3VwPgorICAgICAgICAgICAgPEZpbGVXcml0ZXMgSW5jbHVkZT0iJChfRmlsZUxpc3RUYXJnZXQpOyQoX0luc3RhbGxGaWxlc1RhcmdldCkiIC8+CisgICAgICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSIkKF9JbnN0YWxsRmlsZXNUYXJnZXQpIiAvPgorICAgICAgICA8L0l0ZW1Hcm91cD4KKyAgICA8L1RhcmdldD4KKworICAgIDxUYXJnZXQgTmFtZT0iX1RyYW5zZm9ybVd4bFRlbXBsYXRlcyIgQWZ0ZXJUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiIElucHV0cz0iQChXeGxUZW1wbGF0ZSk7JChQeVNvdXJjZVBhdGgpaW5jbHVkZVxwYXRjaGxldmVsLmgiIE91dHB1dHM9IiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCklKEZpbGVuYW1lKS53eGwiPgorICAgICAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgICAgIDxfQ29udGVudD4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCUoV3hsVGVtcGxhdGUuRnVsbFBhdGgpKS5SZXBsYWNlKGB7e1Nob3J0VmVyc2lvbn19YCwgYCQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikkKFB5VGVzdEV4dClgKS5SZXBsYWNlKGB7e0xvbmdWZXJzaW9ufX1gLCBgJChQeXRob25WZXJzaW9uKSQoUHlUZXN0RXh0KWApLlJlcGxhY2UoYHt7Qml0bmVzc319YCwgYCQoQml0bmVzcylgKSk8L19Db250ZW50PgorICAgICAgICAgICAgPF9FeGlzdGluZ0NvbnRlbnQgQ29uZGl0aW9uPSJFeGlzdHMoJyQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCklKFd4bFRlbXBsYXRlLkZpbGVuYW1lKS53eGwnKSI+JChbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsVGV4dCgkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpJShXeGxUZW1wbGF0ZS5GaWxlbmFtZSkud3hsKSk8L19FeGlzdGluZ0NvbnRlbnQ+CisgICAgICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICAgICAgCisgICAgICAgIDxXcml0ZUxpbmVzVG9GaWxlIEZpbGU9IiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCklKFd4bFRlbXBsYXRlLkZpbGVuYW1lKS53eGwiCisgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmVzPSIkKF9Db250ZW50KSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgT3ZlcndyaXRlPSJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgICAgICBDb25kaXRpb249IiQoX0NvbnRlbnQpICE9ICQoX0V4aXN0aW5nQ29udGVudCkiIC8+CisgICAgICAgIAorICAgICAgICA8SXRlbUdyb3VwPgorICAgICAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSUoV3hsVGVtcGxhdGUuRmlsZW5hbWUpLnd4bCIgLz4KKyAgICAgICAgICAgIDxGaWxlV3JpdGVzIEluY2x1ZGU9IiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCklKFd4bFRlbXBsYXRlLkZpbGVuYW1lKS53eGwiIC8+CisgICAgICAgIDwvSXRlbUdyb3VwPgorICAgIDwvVGFyZ2V0PgorCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFdpeFRhcmdldHNQYXRoKSIgLz4KKworICAgIDxUYXJnZXQgTmFtZT0iU2lnbkNhYnMiPgorICAgICAgICA8RXJyb3IgVGV4dD0iVW5hYmxlIHRvIGxvY2F0ZSBzaWdudG9vbC5leGUuIFNldCAvcDpTaWduVG9vbFBhdGggYW5kIHJlYnVpbGQiIENvbmRpdGlvbj0iJyQoX1NpZ25Db21tYW5kKScgPT0gJyciIC8+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9IiQoX1NpZ25Db21tYW5kKSBAKFNpZ25DYWJzLT4nJnF1b3Q7JShGdWxsUGF0aCkmcXVvdDsnLCcgJykiIENvbnRpbnVlT25FcnJvcj0iZmFsc2UiIC8+CisgICAgPC9UYXJnZXQ+CisgICAgPFRhcmdldCBOYW1lPSJTaWduTXNpIj4KKyAgICAgICAgPEVycm9yIFRleHQ9IlVuYWJsZSB0byBsb2NhdGUgc2lnbnRvb2wuZXhlLiBTZXQgL3A6U2lnblRvb2xQYXRoIGFuZCByZWJ1aWxkIiBDb25kaXRpb249IickKF9TaWduQ29tbWFuZCknID09ICcnIiAvPgorICAgICAgICA8RXhlYyBDb21tYW5kPSIkKF9TaWduQ29tbWFuZCkgQChTaWduTXNpLT4nJnF1b3Q7JShGdWxsUGF0aCkmcXVvdDsnLCcgJykiIENvbnRpbnVlT25FcnJvcj0iZmFsc2UiIC8+CisgICAgPC9UYXJnZXQ+CisgICAgPFRhcmdldCBOYW1lPSJTaWduQnVuZGxlRW5naW5lIj4KKyAgICAgICAgPEVycm9yIFRleHQ9IlVuYWJsZSB0byBsb2NhdGUgc2lnbnRvb2wuZXhlLiBTZXQgL3A6U2lnblRvb2xQYXRoIGFuZCByZWJ1aWxkIiBDb25kaXRpb249IickKF9TaWduQ29tbWFuZCknID09ICcnIiAvPgorICAgICAgICA8RXhlYyBDb21tYW5kPSIkKF9TaWduQ29tbWFuZCkgQChTaWduQnVuZGxlRW5naW5lLT4nJnF1b3Q7JShGdWxsUGF0aCkmcXVvdDsnLCcgJykiIENvbnRpbnVlT25FcnJvcj0iZmFsc2UiIC8+CisgICAgPC9UYXJnZXQ+CisgICAgPFRhcmdldCBOYW1lPSJTaWduQnVuZGxlIj4KKyAgICAgICAgPEVycm9yIFRleHQ9IlVuYWJsZSB0byBsb2NhdGUgc2lnbnRvb2wuZXhlLiBTZXQgL3A6U2lnblRvb2xQYXRoIGFuZCByZWJ1aWxkIiBDb25kaXRpb249IickKF9TaWduQ29tbWFuZCknID09ICcnIiAvPgorICAgICAgICA8RXhlYyBDb21tYW5kPSIkKF9TaWduQ29tbWFuZCkgQChTaWduQnVuZGxlLT4nJnF1b3Q7JShGdWxsUGF0aCkmcXVvdDsnLCcgJykiIENvbnRpbnVlT25FcnJvcj0iZmFsc2UiIC8+CisgICAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL21zaWxpYi5weSBiL1Rvb2xzL21zaS9tc2lsaWIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyMDhiOTEuLjAwMDAwMDAKLS0tIGEvVG9vbHMvbXNpL21zaWxpYi5weQorKysgL2Rldi9udWxsCkBAIC0xLDY3OSArMCwwIEBACi0jIE1pY3Jvc29mdCBJbnN0YWxsZXIgTGlicmFyeQotIyAoQykgMjAwMyBNYXJ0aW4gdi4gTG9ld2lzCi0KLWltcG9ydCB3aW4zMmNvbS5jbGllbnQuZ2VuY2FjaGUKLWltcG9ydCB3aW4zMmNvbS5jbGllbnQKLWltcG9ydCBweXRob25jb20sIHB5d2ludHlwZXMKLWZyb20gd2luMzJjb20uY2xpZW50IGltcG9ydCBjb25zdGFudHMKLWltcG9ydCByZSwgc3RyaW5nLCBvcywgc2V0cywgZ2xvYiwgc3VicHJvY2Vzcywgc3lzLCBfd2lucmVnLCBzdHJ1Y3QsIF9tc2kKLQotdHJ5OgotICAgIGJhc2VzdHJpbmcKLWV4Y2VwdCBOYW1lRXJyb3I6Ci0gICAgYmFzZXN0cmluZyA9IChzdHIsIHVuaWNvZGUpCi0KLSMgUGFydGlhbGx5IHRha2VuIGZyb20gV2luZQotZGF0YXNpemVtYXNrPSAgICAgIDB4MDBmZgotdHlwZV92YWxpZD0gICAgICAgIDB4MDEwMAotdHlwZV9sb2NhbGl6YWJsZT0gIDB4MDIwMAotCi10eXBlbWFzaz0gICAgICAgICAgMHgwYzAwCi10eXBlX2xvbmc9ICAgICAgICAgMHgwMDAwCi10eXBlX3Nob3J0PSAgICAgICAgMHgwNDAwCi10eXBlX3N0cmluZz0gICAgICAgMHgwYzAwCi10eXBlX2JpbmFyeT0gICAgICAgMHgwODAwCi0KLXR5cGVfbnVsbGFibGU9ICAgICAweDEwMDAKLXR5cGVfa2V5PSAgICAgICAgICAweDIwMDAKLSMgWFhYIHRlbXBvcmFyeSwgbG9jYWxpemFibGU/Ci1rbm93bmJpdHMgPSBkYXRhc2l6ZW1hc2sgfCB0eXBlX3ZhbGlkIHwgdHlwZV9sb2NhbGl6YWJsZSB8IFwKLSAgICAgICAgICAgIHR5cGVtYXNrIHwgdHlwZV9udWxsYWJsZSB8IHR5cGVfa2V5Ci0KLSMgU3VtbWFyeSBJbmZvIFByb3BlcnR5IElEcwotUElEX0NPREVQQUdFPTEKLVBJRF9USVRMRT0yCi1QSURfU1VCSkVDVD0zCi1QSURfQVVUSE9SPTQKLVBJRF9LRVlXT1JEUz01Ci1QSURfQ09NTUVOVFM9NgotUElEX1RFTVBMQVRFPTcKLVBJRF9MQVNUQVVUSE9SPTgKLVBJRF9SRVZOVU1CRVI9OQotUElEX0xBU1RQUklOVEVEPTExCi1QSURfQ1JFQVRFX0RUTT0xMgotUElEX0xBU1RTQVZFX0RUTT0xMwotUElEX1BBR0VDT1VOVD0xNAotUElEX1dPUkRDT1VOVD0xNQotUElEX0NIQVJDT1VOVD0xNgotUElEX0FQUE5BTUU9MTgKLVBJRF9TRUNVUklUWT0xOQotCi1kZWYgcmVzZXQoKToKLSAgICBnbG9iYWwgX2RpcmVjdG9yaWVzCi0gICAgX2RpcmVjdG9yaWVzID0gc2V0cy5TZXQoKQotCi1kZWYgRW5zdXJlTVNJKCk6Ci0gICAgd2luMzJjb20uY2xpZW50LmdlbmNhY2hlLkVuc3VyZU1vZHVsZSgnezAwMEMxMDkyLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0Nn0nLCAxMDMzLCAxLCAwKQotCi1kZWYgRW5zdXJlTVNNKCk6Ci0gICAgdHJ5OgotICAgICAgICB3aW4zMmNvbS5jbGllbnQuZ2VuY2FjaGUuRW5zdXJlTW9kdWxlKCd7MEFEREE4MkYtMkMyNi0xMUQyLUFENjUtMDBBMEM5QUYxMUE2fScsIDAsIDEsIDApCi0gICAgZXhjZXB0IHB5d2ludHlwZXMuY29tX2Vycm9yOgotICAgICAgICB3aW4zMmNvbS5jbGllbnQuZ2VuY2FjaGUuRW5zdXJlTW9kdWxlKCd7MEFEREE4MkYtMkMyNi0xMUQyLUFENjUtMDBBMEM5QUYxMUE2fScsIDAsIDIsIDApCi0KLV9JbnN0YWxsZXI9Tm9uZQotZGVmIE1ha2VJbnN0YWxsZXIoKToKLSAgICBnbG9iYWwgX0luc3RhbGxlcgotICAgIGlmIF9JbnN0YWxsZXIgaXMgTm9uZToKLSAgICAgICAgRW5zdXJlTVNJKCkKLSAgICAgICAgX0luc3RhbGxlciA9IHdpbjMyY29tLmNsaWVudC5EaXNwYXRjaCgnV2luZG93c0luc3RhbGxlci5JbnN0YWxsZXInLAotICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q0xTSUQ9J3swMDBDMTA5MC0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDZ9JykKLSAgICByZXR1cm4gX0luc3RhbGxlcgotCi1fTWVyZ2U9Tm9uZQotZGVmIE1ha2VNZXJnZTIoKToKLSAgICBnbG9iYWwgX01lcmdlCi0gICAgaWYgX01lcmdlIGlzIE5vbmU6Ci0gICAgICAgIEVuc3VyZU1TTSgpCi0gICAgICAgIF9NZXJnZSA9IHdpbjMyY29tLmNsaWVudC5EaXNwYXRjaCgiTXNtLk1lcmdlMi4xIikKLSAgICByZXR1cm4gX01lcmdlCi0KLWNsYXNzIFRhYmxlOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICBzZWxmLmZpZWxkcyA9IFtdCi0KLSAgICBkZWYgYWRkX2ZpZWxkKHNlbGYsIGluZGV4LCBuYW1lLCB0eXBlKToKLSAgICAgICAgc2VsZi5maWVsZHMuYXBwZW5kKChpbmRleCxuYW1lLHR5cGUpKQotCi0gICAgZGVmIHNxbChzZWxmKToKLSAgICAgICAgZmllbGRzID0gW10KLSAgICAgICAga2V5cyA9IFtdCi0gICAgICAgIHNlbGYuZmllbGRzLnNvcnQoKQotICAgICAgICBmaWVsZHMgPSBbTm9uZV0qbGVuKHNlbGYuZmllbGRzKQotICAgICAgICBmb3IgaW5kZXgsIG5hbWUsIHR5cGUgaW4gc2VsZi5maWVsZHM6Ci0gICAgICAgICAgICBpbmRleCAtPSAxCi0gICAgICAgICAgICB1bmsgPSB0eXBlICYgfmtub3duYml0cwotICAgICAgICAgICAgaWYgdW5rOgotICAgICAgICAgICAgICAgIHByaW50ICIlcy4lcyB1bmtub3duIGJpdHMgJXgiICUgKHNlbGYubmFtZSwgbmFtZSwgdW5rKQotICAgICAgICAgICAgc2l6ZSA9IHR5cGUgJiBkYXRhc2l6ZW1hc2sKLSAgICAgICAgICAgIGR0eXBlID0gdHlwZSAmIHR5cGVtYXNrCi0gICAgICAgICAgICBpZiBkdHlwZSA9PSB0eXBlX3N0cmluZzoKLSAgICAgICAgICAgICAgICBpZiBzaXplOgotICAgICAgICAgICAgICAgICAgICB0bmFtZT0iQ0hBUiglZCkiICUgc2l6ZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRuYW1lPSJDSEFSIgotICAgICAgICAgICAgZWxpZiBkdHlwZSA9PSB0eXBlX3Nob3J0OgotICAgICAgICAgICAgICAgIGFzc2VydCBzaXplPT0yCi0gICAgICAgICAgICAgICAgdG5hbWUgPSAiU0hPUlQiCi0gICAgICAgICAgICBlbGlmIGR0eXBlID09IHR5cGVfbG9uZzoKLSAgICAgICAgICAgICAgICBhc3NlcnQgc2l6ZT09NAotICAgICAgICAgICAgICAgIHRuYW1lPSJMT05HIgotICAgICAgICAgICAgZWxpZiBkdHlwZSA9PSB0eXBlX2JpbmFyeToKLSAgICAgICAgICAgICAgICBhc3NlcnQgc2l6ZT09MAotICAgICAgICAgICAgICAgIHRuYW1lPSJPQkpFQ1QiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRuYW1lPSJ1bmtub3duIgotICAgICAgICAgICAgICAgIHByaW50ICIlcy4lc3Vua25vd24gaW50ZWdlciB0eXBlICVkIiAlIChzZWxmLm5hbWUsIG5hbWUsIHNpemUpCi0gICAgICAgICAgICBpZiB0eXBlICYgdHlwZV9udWxsYWJsZToKLSAgICAgICAgICAgICAgICBmbGFncyA9ICIiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZsYWdzID0gIiBOT1QgTlVMTCIKLSAgICAgICAgICAgIGlmIHR5cGUgJiB0eXBlX2xvY2FsaXphYmxlOgotICAgICAgICAgICAgICAgIGZsYWdzICs9ICIgTE9DQUxJWkFCTEUiCi0gICAgICAgICAgICBmaWVsZHNbaW5kZXhdID0gImAlc2AgJXMlcyIgJSAobmFtZSwgdG5hbWUsIGZsYWdzKQotICAgICAgICAgICAgaWYgdHlwZSAmIHR5cGVfa2V5OgotICAgICAgICAgICAgICAgIGtleXMuYXBwZW5kKCJgJXNgIiAlIG5hbWUpCi0gICAgICAgIGZpZWxkcyA9ICIsICIuam9pbihmaWVsZHMpCi0gICAgICAgIGtleXMgPSAiLCAiLmpvaW4oa2V5cykKLSAgICAgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgJXMgKCVzIFBSSU1BUlkgS0VZICVzKSIgJSAoc2VsZi5uYW1lLCBmaWVsZHMsIGtleXMpCi0KLSAgICBkZWYgY3JlYXRlKHNlbGYsIGRiKToKLSAgICAgICAgdiA9IGRiLk9wZW5WaWV3KHNlbGYuc3FsKCkpCi0gICAgICAgIHYuRXhlY3V0ZShOb25lKQotICAgICAgICB2LkNsb3NlKCkKLQotY2xhc3MgQmluYXJ5OgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbmFtZSk6Ci0gICAgICAgIHNlbGYubmFtZSA9IGZuYW1lCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gJ21zaWxpYi5CaW5hcnkob3MucGF0aC5qb2luKGRpcm5hbWUsIiVzIikpJyAlIHNlbGYubmFtZQotCi1kZWYgZ2VuX3NjaGVtYShkZXN0cGF0aCwgc2NoZW1hcGF0aCk6Ci0gICAgZCA9IE1ha2VJbnN0YWxsZXIoKQotICAgIHNjaGVtYSA9IGQuT3BlbkRhdGFiYXNlKHNjaGVtYXBhdGgsCi0gICAgICAgICAgICB3aW4zMmNvbS5jbGllbnQuY29uc3RhbnRzLm1zaU9wZW5EYXRhYmFzZU1vZGVSZWFkT25seSkKLQotICAgICMgWFhYIE9SQkVSIEJZCi0gICAgdj1zY2hlbWEuT3BlblZpZXcoIlNFTEVDVCAqIEZST00gX0NvbHVtbnMiKQotICAgIGN1cnRhYmxlPU5vbmUKLSAgICB0YWJsZXMgPSBbXQotICAgIHYuRXhlY3V0ZShOb25lKQotICAgIGYgPSBvcGVuKGRlc3RwYXRoLCAid3QiKQotICAgIGYud3JpdGUoImZyb20gbXNpbGliIGltcG9ydCBUYWJsZVxuIikKLSAgICB3aGlsZSAxOgotICAgICAgICByPXYuRmV0Y2goKQotICAgICAgICBpZiBub3QgcjpicmVhawotICAgICAgICBuYW1lPXIuU3RyaW5nRGF0YSgxKQotICAgICAgICBpZiBjdXJ0YWJsZSAhPSBuYW1lOgotICAgICAgICAgICAgZi53cml0ZSgiXG4lcyA9IFRhYmxlKCclcycpXG4iICUgKG5hbWUsbmFtZSkpCi0gICAgICAgICAgICBjdXJ0YWJsZSA9IG5hbWUKLSAgICAgICAgICAgIHRhYmxlcy5hcHBlbmQobmFtZSkKLSAgICAgICAgZi53cml0ZSgiJXMuYWRkX2ZpZWxkKCVkLCclcycsJWQpXG4iICUKLSAgICAgICAgICAgICAgICAobmFtZSwgci5JbnRlZ2VyRGF0YSgyKSwgci5TdHJpbmdEYXRhKDMpLCByLkludGVnZXJEYXRhKDQpKSkKLSAgICB2LkNsb3NlKCkKLQotICAgIGYud3JpdGUoIlxudGFibGVzPVslc11cblxuIiAlICgiLCAiLmpvaW4odGFibGVzKSkpCi0KLSAgICAjIEZpbGwgdGhlIF9WYWxpZGF0aW9uIHRhYmxlCi0gICAgZi53cml0ZSgiX1ZhbGlkYXRpb25fcmVjb3JkcyA9IFtcbiIpCi0gICAgdiA9IHNjaGVtYS5PcGVuVmlldygiU0VMRUNUICogRlJPTSBfVmFsaWRhdGlvbiIpCi0gICAgdi5FeGVjdXRlKE5vbmUpCi0gICAgd2hpbGUgMToKLSAgICAgICAgciA9IHYuRmV0Y2goKQotICAgICAgICBpZiBub3QgcjpicmVhawotICAgICAgICAjIFRhYmxlLCBDb2x1bW4sIE51bGxhYmxlCi0gICAgICAgIGYud3JpdGUoIiglcywlcywlcywiICUKLSAgICAgICAgICAgICAgICAoYHIuU3RyaW5nRGF0YSgxKWAsIGByLlN0cmluZ0RhdGEoMilgLCBgci5TdHJpbmdEYXRhKDMpYCkpCi0gICAgICAgIGRlZiBwdXRfaW50KGkpOgotICAgICAgICAgICAgaWYgci5Jc051bGwoaSk6Zi53cml0ZSgiTm9uZSwgIikKLSAgICAgICAgICAgIGVsc2U6Zi53cml0ZSgiJWQsIiAlIHIuSW50ZWdlckRhdGEoaSkpCi0gICAgICAgIGRlZiBwdXRfc3RyKGkpOgotICAgICAgICAgICAgaWYgci5Jc051bGwoaSk6Zi53cml0ZSgiTm9uZSwgIikKLSAgICAgICAgICAgIGVsc2U6Zi53cml0ZSgiJXMsIiAlIGByLlN0cmluZ0RhdGEoaSlgKQotICAgICAgICBwdXRfaW50KDQpICMgTWluVmFsdWUKLSAgICAgICAgcHV0X2ludCg1KSAjIE1heFZhbHVlCi0gICAgICAgIHB1dF9zdHIoNikgIyBLZXlUYWJsZQotICAgICAgICBwdXRfaW50KDcpICMgS2V5Q29sdW1uCi0gICAgICAgIHB1dF9zdHIoOCkgIyBDYXRlZ29yeQotICAgICAgICBwdXRfc3RyKDkpICMgU2V0Ci0gICAgICAgIHB1dF9zdHIoMTApIyBEZXNjcmlwdGlvbgotICAgICAgICBmLndyaXRlKCIpLFxuIikKLSAgICBmLndyaXRlKCJdXG5cbiIpCi0KLSAgICBmLmNsb3NlKCkKLQotZGVmIGdlbl9zZXF1ZW5jZShkZXN0cGF0aCwgbXNpcGF0aCk6Ci0gICAgZGlyID0gb3MucGF0aC5kaXJuYW1lKGRlc3RwYXRoKQotICAgIGQgPSBNYWtlSW5zdGFsbGVyKCkKLSAgICBzZXFtc2kgPSBkLk9wZW5EYXRhYmFzZShtc2lwYXRoLAotICAgICAgICAgICAgd2luMzJjb20uY2xpZW50LmNvbnN0YW50cy5tc2lPcGVuRGF0YWJhc2VNb2RlUmVhZE9ubHkpCi0KLSAgICB2ID0gc2VxbXNpLk9wZW5WaWV3KCJTRUxFQ1QgKiBGUk9NIF9UYWJsZXMiKTsKLSAgICB2LkV4ZWN1dGUoTm9uZSkKLSAgICBmID0gb3BlbihkZXN0cGF0aCwgInciKQotICAgIHByaW50ID4+ZiwgImltcG9ydCBtc2lsaWIsb3M7ZGlybmFtZT1vcy5wYXRoLmRpcm5hbWUoX19maWxlX18pIgotICAgIHRhYmxlcyA9IFtdCi0gICAgd2hpbGUgMToKLSAgICAgICAgciA9IHYuRmV0Y2goKQotICAgICAgICBpZiBub3QgcjpicmVhawotICAgICAgICB0YWJsZSA9IHIuU3RyaW5nRGF0YSgxKQotICAgICAgICB0YWJsZXMuYXBwZW5kKHRhYmxlKQotICAgICAgICBmLndyaXRlKCIlcyA9IFtcbiIgJSB0YWJsZSkKLSAgICAgICAgdjEgPSBzZXFtc2kuT3BlblZpZXcoIlNFTEVDVCAqIEZST00gYCVzYCIgJSB0YWJsZSkKLSAgICAgICAgdjEuRXhlY3V0ZShOb25lKQotICAgICAgICBpbmZvID0gdjEuQ29sdW1uSW5mbyhjb25zdGFudHMubXNpQ29sdW1uSW5mb1R5cGVzKQotICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgciA9IHYxLkZldGNoKCkKLSAgICAgICAgICAgIGlmIG5vdCByOmJyZWFrCi0gICAgICAgICAgICByZWMgPSBbXQotICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSxyLkZpZWxkQ291bnQrMSk6Ci0gICAgICAgICAgICAgICAgaWYgci5Jc051bGwoaSk6Ci0gICAgICAgICAgICAgICAgICAgIHJlYy5hcHBlbmQoTm9uZSkKLSAgICAgICAgICAgICAgICBlbGlmIGluZm8uU3RyaW5nRGF0YShpKVswXSBpbiAiaUkiOgotICAgICAgICAgICAgICAgICAgICByZWMuYXBwZW5kKHIuSW50ZWdlckRhdGEoaSkpCi0gICAgICAgICAgICAgICAgZWxpZiBpbmZvLlN0cmluZ0RhdGEoaSlbMF0gaW4gInNsU0wiOgotICAgICAgICAgICAgICAgICAgICByZWMuYXBwZW5kKHIuU3RyaW5nRGF0YShpKSkKLSAgICAgICAgICAgICAgICBlbGlmIGluZm8uU3RyaW5nRGF0YShpKVswXT09InYiOgotICAgICAgICAgICAgICAgICAgICBzaXplID0gci5EYXRhU2l6ZShpKQotICAgICAgICAgICAgICAgICAgICBieXRlcyA9IHIuUmVhZFN0cmVhbShpLCBzaXplLCBjb25zdGFudHMubXNpUmVhZFN0cmVhbUJ5dGVzKQotICAgICAgICAgICAgICAgICAgICBieXRlcyA9IGJ5dGVzLmVuY29kZSgibGF0aW4tMSIpICMgYmluYXJ5IGRhdGEgcmVwcmVzZW50ZWQgImFzLWlzIgotICAgICAgICAgICAgICAgICAgICBpZiB0YWJsZSA9PSAiQmluYXJ5IjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lID0gcmVjWzBdKyIuYmluIgotICAgICAgICAgICAgICAgICAgICAgICAgb3Blbihvcy5wYXRoLmpvaW4oZGlyLGZuYW1lKSwid2IiKS53cml0ZShieXRlcykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlYy5hcHBlbmQoQmluYXJ5KGZuYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlYy5hcHBlbmQoYnl0ZXMpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgIlVuc3VwcG9ydGVkIGNvbHVtbiB0eXBlIiwgaW5mby5TdHJpbmdEYXRhKGkpCi0gICAgICAgICAgICBmLndyaXRlKHJlcHIodHVwbGUocmVjKSkrIixcbiIpCi0gICAgICAgIHYxLkNsb3NlKCkKLSAgICAgICAgZi53cml0ZSgiXVxuXG4iKQotICAgIHYuQ2xvc2UoKQotICAgIGYud3JpdGUoInRhYmxlcz0lc1xuIiAlIHJlcHIobWFwKHN0cix0YWJsZXMpKSkKLSAgICBmLmNsb3NlKCkKLQotY2xhc3MgX1Vuc3BlY2lmaWVkOnBhc3MKLWRlZiBjaGFuZ2Vfc2VxdWVuY2Uoc2VxLCBhY3Rpb24sIHNlcW5vPV9VbnNwZWNpZmllZCwgY29uZCA9IF9VbnNwZWNpZmllZCk6Ci0gICAgIkNoYW5nZSB0aGUgc2VxdWVuY2UgbnVtYmVyIG9mIGFuIGFjdGlvbiBpbiBhIHNlcXVlbmNlIGxpc3QiCi0gICAgZm9yIGkgaW4gcmFuZ2UobGVuKHNlcSkpOgotICAgICAgICBpZiBzZXFbaV1bMF0gPT0gYWN0aW9uOgotICAgICAgICAgICAgaWYgY29uZCBpcyBfVW5zcGVjaWZpZWQ6Ci0gICAgICAgICAgICAgICAgY29uZCA9IHNlcVtpXVsxXQotICAgICAgICAgICAgaWYgc2Vxbm8gaXMgX1Vuc3BlY2lmaWVkOgotICAgICAgICAgICAgICAgIHNlcW5vID0gc2VxW2ldWzJdCi0gICAgICAgICAgICBzZXFbaV0gPSAoYWN0aW9uLCBjb25kLCBzZXFubykKLSAgICAgICAgICAgIHJldHVybgotICAgIHJhaXNlIFZhbHVlRXJyb3IsICJBY3Rpb24gbm90IGZvdW5kIGluIHNlcXVlbmNlIgotCi1kZWYgYWRkX2RhdGEoZGIsIHRhYmxlLCB2YWx1ZXMpOgotICAgIGQgPSBNYWtlSW5zdGFsbGVyKCkKLSAgICB2ID0gZGIuT3BlblZpZXcoIlNFTEVDVCAqIEZST00gYCVzYCIgJSB0YWJsZSkKLSAgICBjb3VudCA9IHYuQ29sdW1uSW5mbygwKS5GaWVsZENvdW50Ci0gICAgciA9IGQuQ3JlYXRlUmVjb3JkKGNvdW50KQotICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6Ci0gICAgICAgIGFzc2VydCBsZW4odmFsdWUpID09IGNvdW50LCB2YWx1ZQotICAgICAgICBmb3IgaSBpbiByYW5nZShjb3VudCk6Ci0gICAgICAgICAgICBmaWVsZCA9IHZhbHVlW2ldCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZpZWxkLCAoaW50LCBsb25nKSk6Ci0gICAgICAgICAgICAgICAgci5TZXRJbnRlZ2VyRGF0YShpKzEsZmllbGQpCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmllbGQsIGJhc2VzdHJpbmcpOgotICAgICAgICAgICAgICAgIHIuU2V0U3RyaW5nRGF0YShpKzEsZmllbGQpCi0gICAgICAgICAgICBlbGlmIGZpZWxkIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZpZWxkLCBCaW5hcnkpOgotICAgICAgICAgICAgICAgIHIuU2V0U3RyZWFtKGkrMSwgZmllbGQubmFtZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yLCAiVW5zdXBwb3J0ZWQgdHlwZSAlcyIgJSBmaWVsZC5fX2NsYXNzX18uX19uYW1lX18KLSAgICAgICAgdi5Nb2RpZnkod2luMzJjb20uY2xpZW50LmNvbnN0YW50cy5tc2lWaWV3TW9kaWZ5SW5zZXJ0LCByKQotICAgICAgICByLkNsZWFyRGF0YSgpCi0gICAgdi5DbG9zZSgpCi0KLWRlZiBhZGRfc3RyZWFtKGRiLCBuYW1lLCBwYXRoKToKLSAgICBkID0gTWFrZUluc3RhbGxlcigpCi0gICAgdiA9IGRiLk9wZW5WaWV3KCJJTlNFUlQgSU5UTyBfU3RyZWFtcyAoTmFtZSwgRGF0YSkgVkFMVUVTICgnJXMnLCA/KSIgJSBuYW1lKQotICAgIHIgPSBkLkNyZWF0ZVJlY29yZCgxKQotICAgIHIuU2V0U3RyZWFtKDEsIHBhdGgpCi0gICAgdi5FeGVjdXRlKHIpCi0gICAgdi5DbG9zZSgpCi0KLWRlZiBpbml0X2RhdGFiYXNlKG5hbWUsIHNjaGVtYSwKLSAgICAgICAgICAgICAgICAgIFByb2R1Y3ROYW1lLCBQcm9kdWN0Q29kZSwgUHJvZHVjdFZlcnNpb24sCi0gICAgICAgICAgICAgICAgICBNYW51ZmFjdHVyZXIsCi0gICAgICAgICAgICAgICAgICByZXF1ZXN0X3VhYyA9IEZhbHNlKToKLSAgICB0cnk6Ci0gICAgICAgIG9zLnVubGluayhuYW1lKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBwYXNzCi0gICAgUHJvZHVjdENvZGUgPSBQcm9kdWN0Q29kZS51cHBlcigpCi0gICAgZCA9IE1ha2VJbnN0YWxsZXIoKQotICAgICMgQ3JlYXRlIHRoZSBkYXRhYmFzZQotICAgIGRiID0gZC5PcGVuRGF0YWJhc2UobmFtZSwKLSAgICAgICAgIHdpbjMyY29tLmNsaWVudC5jb25zdGFudHMubXNpT3BlbkRhdGFiYXNlTW9kZUNyZWF0ZSkKLSAgICAjIENyZWF0ZSB0aGUgdGFibGVzCi0gICAgZm9yIHQgaW4gc2NoZW1hLnRhYmxlczoKLSAgICAgICAgdC5jcmVhdGUoZGIpCi0gICAgIyBGaWxsIHRoZSB2YWxpZGF0aW9uIHRhYmxlCi0gICAgYWRkX2RhdGEoZGIsICJfVmFsaWRhdGlvbiIsIHNjaGVtYS5fVmFsaWRhdGlvbl9yZWNvcmRzKQotICAgICMgSW5pdGlhbGl6ZSB0aGUgc3VtbWFyeSBpbmZvcm1hdGlvbiwgYWxsb3dpbmcgYXQgbW9zdCAyMCBwcm9wZXJ0aWVzCi0gICAgc2kgPSBkYi5HZXRTdW1tYXJ5SW5mb3JtYXRpb24oMjApCi0gICAgc2kuU2V0UHJvcGVydHkoUElEX1RJVExFLCAiSW5zdGFsbGF0aW9uIERhdGFiYXNlIikKLSAgICBzaS5TZXRQcm9wZXJ0eShQSURfU1VCSkVDVCwgUHJvZHVjdE5hbWUpCi0gICAgc2kuU2V0UHJvcGVydHkoUElEX0FVVEhPUiwgTWFudWZhY3R1cmVyKQotICAgIHNpLlNldFByb3BlcnR5KFBJRF9URU1QTEFURSwgbXNpX3R5cGUpCi0gICAgc2kuU2V0UHJvcGVydHkoUElEX1JFVk5VTUJFUiwgZ2VuX3V1aWQoKSkKLSAgICBpZiByZXF1ZXN0X3VhYzoKLSAgICAgICAgd2MgPSAyICMgbG9uZyBmaWxlIG5hbWVzLCBjb21wcmVzc2VkLCBvcmlnaW5hbCBtZWRpYQotICAgIGVsc2U6Ci0gICAgICAgIHdjID0gMiB8IDggIyArbmV2ZXIgaW52b2tlIFVBQwotICAgIHNpLlNldFByb3BlcnR5KFBJRF9XT1JEQ09VTlQsIHdjKQotICAgIHNpLlNldFByb3BlcnR5KFBJRF9QQUdFQ09VTlQsIDIwMCkKLSAgICBzaS5TZXRQcm9wZXJ0eShQSURfQVBQTkFNRSwgIlB5dGhvbiBNU0kgTGlicmFyeSIpCi0gICAgIyBYWFggbW9yZSBwcm9wZXJ0aWVzCi0gICAgc2kuUGVyc2lzdCgpCi0gICAgYWRkX2RhdGEoZGIsICJQcm9wZXJ0eSIsIFsKLSAgICAgICAgKCJQcm9kdWN0TmFtZSIsIFByb2R1Y3ROYW1lKSwKLSAgICAgICAgKCJQcm9kdWN0Q29kZSIsIFByb2R1Y3RDb2RlKSwKLSAgICAgICAgKCJQcm9kdWN0VmVyc2lvbiIsIFByb2R1Y3RWZXJzaW9uKSwKLSAgICAgICAgKCJNYW51ZmFjdHVyZXIiLCBNYW51ZmFjdHVyZXIpLAotICAgICAgICAoIlByb2R1Y3RMYW5ndWFnZSIsICIxMDMzIildKQotICAgIGRiLkNvbW1pdCgpCi0gICAgcmV0dXJuIGRiCi0KLWRlZiBhZGRfdGFibGVzKGRiLCBtb2R1bGUpOgotICAgIGZvciB0YWJsZSBpbiBtb2R1bGUudGFibGVzOgotICAgICAgICBhZGRfZGF0YShkYiwgdGFibGUsIGdldGF0dHIobW9kdWxlLCB0YWJsZSkpCi0KLWRlZiBtYWtlX2lkKHN0cik6Ci0gICAgI3N0ciA9IHN0ci5yZXBsYWNlKCIuIiwgIl8iKSAjIGNvbG9ucyBhcmUgYWxsb3dlZAotICAgIHN0ciA9IHN0ci5yZXBsYWNlKCIgIiwgIl8iKQotICAgIHN0ciA9IHN0ci5yZXBsYWNlKCItIiwgIl8iKQotICAgIHN0ciA9IHN0ci5yZXBsYWNlKCIrIiwgIl8iKQotICAgIGlmIHN0clswXSBpbiBzdHJpbmcuZGlnaXRzOgotICAgICAgICBzdHIgPSAiXyIrc3RyCi0gICAgYXNzZXJ0IHJlLm1hdGNoKCJeW0EtWmEtel9dW0EtWmEtejAtOV8uXSokIiwgc3RyKSwgIkZJTEUiK3N0cgotICAgIHJldHVybiBzdHIKLQotZGVmIGdlbl91dWlkKCk6Ci0gICAgcmV0dXJuIHN0cihweXRob25jb20uQ3JlYXRlR3VpZCgpKQotCi1jbGFzcyBDQUI6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYuZmlsZXMgPSBbXQotICAgICAgICBzZWxmLmZpbGVuYW1lcyA9IHNldHMuU2V0KCkKLSAgICAgICAgc2VsZi5pbmRleCA9IDAKLQotICAgIGRlZiBnZW5faWQoc2VsZiwgZGlyLCBmaWxlKToKLSAgICAgICAgbG9naWNhbCA9IF9sb2dpY2FsID0gbWFrZV9pZChmaWxlKQotICAgICAgICBwb3MgPSAxCi0gICAgICAgIHdoaWxlIGxvZ2ljYWwgaW4gc2VsZi5maWxlbmFtZXM6Ci0gICAgICAgICAgICBsb2dpY2FsID0gIiVzLiVkIiAlIChfbG9naWNhbCwgcG9zKQotICAgICAgICAgICAgcG9zICs9IDEKLSAgICAgICAgc2VsZi5maWxlbmFtZXMuYWRkKGxvZ2ljYWwpCi0gICAgICAgIHJldHVybiBsb2dpY2FsCi0KLSAgICBkZWYgYXBwZW5kKHNlbGYsIGZ1bGwsIGZpbGUsIGxvZ2ljYWwgPSBOb25lKToKLSAgICAgICAgaWYgb3MucGF0aC5pc2RpcihmdWxsKToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBub3QgbG9naWNhbDoKLSAgICAgICAgICAgIGxvZ2ljYWwgPSBzZWxmLmdlbl9pZChkaXIsIGZpbGUpCi0gICAgICAgIHNlbGYuaW5kZXggKz0gMQotICAgICAgICBzZWxmLmZpbGVzLmFwcGVuZCgoZnVsbCwgbG9naWNhbCkpCi0gICAgICAgIHJldHVybiBzZWxmLmluZGV4LCBsb2dpY2FsCi0KLSAgICBkZWYgY29tbWl0KHNlbGYsIGRiKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MudW5saW5rKHNlbGYubmFtZSsiLmNhYiIpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBfbXNpLkZDSUNyZWF0ZShzZWxmLm5hbWUrIi5jYWIiLCBzZWxmLmZpbGVzKQotICAgICAgICBhZGRfZGF0YShkYiwgIk1lZGlhIiwKLSAgICAgICAgICAgICAgICBbKDEsIHNlbGYuaW5kZXgsIE5vbmUsICIjIitzZWxmLm5hbWUsIE5vbmUsIE5vbmUpXSkKLSAgICAgICAgYWRkX3N0cmVhbShkYiwgc2VsZi5uYW1lLCBzZWxmLm5hbWUrIi5jYWIiKQotICAgICAgICBvcy51bmxpbmsoc2VsZi5uYW1lKyIuY2FiIikKLSAgICAgICAgZGIuQ29tbWl0KCkKLQotX2RpcmVjdG9yaWVzID0gc2V0cy5TZXQoKQotY2xhc3MgRGlyZWN0b3J5OgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYiwgY2FiLCBiYXNlZGlyLCBwaHlzaWNhbCwgX2xvZ2ljYWwsIGRlZmF1bHQsIGNvbXBvbmVudGZsYWdzPU5vbmUpOgotICAgICAgICAiIiJDcmVhdGUgYSBuZXcgZGlyZWN0b3J5IGluIHRoZSBEaXJlY3RvcnkgdGFibGUuIFRoZXJlIGlzIGEgY3VycmVudCBjb21wb25lbnQKLSAgICAgICAgYXQgZWFjaCBwb2ludCBpbiB0aW1lIGZvciB0aGUgZGlyZWN0b3J5LCB3aGljaCBpcyBlaXRoZXIgZXhwbGljaXRseSBjcmVhdGVkCi0gICAgICAgIHRocm91Z2ggc3RhcnRfY29tcG9uZW50LCBvciBpbXBsaWNpdGx5IHdoZW4gZmlsZXMgYXJlIGFkZGVkIGZvciB0aGUgZmlyc3QKLSAgICAgICAgdGltZS4gRmlsZXMgYXJlIGFkZGVkIGludG8gdGhlIGN1cnJlbnQgY29tcG9uZW50LCBhbmQgaW50byB0aGUgY2FiIGZpbGUuCi0gICAgICAgIFRvIGNyZWF0ZSBhIGRpcmVjdG9yeSwgYSBiYXNlIGRpcmVjdG9yeSBvYmplY3QgbmVlZHMgdG8gYmUgc3BlY2lmaWVkIChjYW4gYmUKLSAgICAgICAgTm9uZSksIHRoZSBwYXRoIHRvIHRoZSBwaHlzaWNhbCBkaXJlY3RvcnksIGFuZCBhIGxvZ2ljYWwgZGlyZWN0b3J5IG5hbWUuCi0gICAgICAgIERlZmF1bHQgc3BlY2lmaWVzIHRoZSBEZWZhdWx0RGlyIHNsb3QgaW4gdGhlIGRpcmVjdG9yeSB0YWJsZS4gY29tcG9uZW50ZmxhZ3MKLSAgICAgICAgc3BlY2lmaWVzIHRoZSBkZWZhdWx0IGZsYWdzIHRoYXQgbmV3IGNvbXBvbmVudHMgZ2V0LiIiIgotICAgICAgICBpbmRleCA9IDEKLSAgICAgICAgX2xvZ2ljYWwgPSBtYWtlX2lkKF9sb2dpY2FsKQotICAgICAgICBsb2dpY2FsID0gX2xvZ2ljYWwKLSAgICAgICAgd2hpbGUgbG9naWNhbCBpbiBfZGlyZWN0b3JpZXM6Ci0gICAgICAgICAgICBsb2dpY2FsID0gIiVzJWQiICUgKF9sb2dpY2FsLCBpbmRleCkKLSAgICAgICAgICAgIGluZGV4ICs9IDEKLSAgICAgICAgX2RpcmVjdG9yaWVzLmFkZChsb2dpY2FsKQotICAgICAgICBzZWxmLmRiID0gZGIKLSAgICAgICAgc2VsZi5jYWIgPSBjYWIKLSAgICAgICAgc2VsZi5iYXNlZGlyID0gYmFzZWRpcgotICAgICAgICBzZWxmLnBoeXNpY2FsID0gcGh5c2ljYWwKLSAgICAgICAgc2VsZi5sb2dpY2FsID0gbG9naWNhbAotICAgICAgICBzZWxmLmNvbXBvbmVudCA9IE5vbmUKLSAgICAgICAgc2VsZi5zaG9ydF9uYW1lcyA9IHt9Ci0gICAgICAgIHNlbGYuaWRzID0gc2V0cy5TZXQoKQotICAgICAgICBzZWxmLmtleWZpbGVzID0ge30KLSAgICAgICAgc2VsZi5jb21wb25lbnRmbGFncyA9IGNvbXBvbmVudGZsYWdzCi0gICAgICAgIGlmIGJhc2VkaXI6Ci0gICAgICAgICAgICBzZWxmLmFic29sdXRlID0gb3MucGF0aC5qb2luKGJhc2VkaXIuYWJzb2x1dGUsIHBoeXNpY2FsKQotICAgICAgICAgICAgYmxvZ2ljYWwgPSBiYXNlZGlyLmxvZ2ljYWwKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYWJzb2x1dGUgPSBwaHlzaWNhbAotICAgICAgICAgICAgYmxvZ2ljYWwgPSBOb25lCi0gICAgICAgICMgaW5pdGlhbGx5IGFzc3VtZSB0aGF0IGFsbCBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeSBhcmUgdW5wYWNrYWdlZAotICAgICAgICAjIGFzIGZpbGVzIGZyb20gc2VsZi5hYnNvbHV0ZSBnZXQgYWRkZWQsIHRoaXMgc2V0IGlzIHJlZHVjZWQKLSAgICAgICAgc2VsZi51bnBhY2thZ2VkX2ZpbGVzID0gc2V0KCkKLSAgICAgICAgZm9yIGYgaW4gb3MubGlzdGRpcihzZWxmLmFic29sdXRlKToKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLmFic29sdXRlLCBmKSk6Ci0gICAgICAgICAgICAgICAgc2VsZi51bnBhY2thZ2VkX2ZpbGVzLmFkZChmKQotICAgICAgICBhZGRfZGF0YShkYiwgIkRpcmVjdG9yeSIsIFsobG9naWNhbCwgYmxvZ2ljYWwsIGRlZmF1bHQpXSkKLQotICAgIGRlZiBzdGFydF9jb21wb25lbnQoc2VsZiwgY29tcG9uZW50ID0gTm9uZSwgZmVhdHVyZSA9IE5vbmUsIGZsYWdzID0gTm9uZSwga2V5ZmlsZSA9IE5vbmUsIHV1aWQ9Tm9uZSk6Ci0gICAgICAgICIiIkFkZCBhbiBlbnRyeSB0byB0aGUgQ29tcG9uZW50IHRhYmxlLCBhbmQgbWFrZSB0aGlzIGNvbXBvbmVudCB0aGUgY3VycmVudCBmb3IgdGhpcwotICAgICAgICBkaXJlY3RvcnkuIElmIG5vIGNvbXBvbmVudCBuYW1lIGlzIGdpdmVuLCB0aGUgZGlyZWN0b3J5IG5hbWUgaXMgdXNlZC4gSWYgbm8gZmVhdHVyZQotICAgICAgICBpcyBnaXZlbiwgdGhlIGN1cnJlbnQgZmVhdHVyZSBpcyB1c2VkLiBJZiBubyBmbGFncyBhcmUgZ2l2ZW4sIHRoZSBkaXJlY3RvcnkncyBkZWZhdWx0Ci0gICAgICAgIGZsYWdzIGFyZSB1c2VkLiBJZiBubyBrZXlmaWxlIGlzIGdpdmVuLCB0aGUgS2V5UGF0aCBpcyBsZWZ0IG51bGwgaW4gdGhlIENvbXBvbmVudAotICAgICAgICB0YWJsZS4iIiIKLSAgICAgICAgaWYgZmxhZ3MgaXMgTm9uZToKLSAgICAgICAgICAgIGZsYWdzID0gc2VsZi5jb21wb25lbnRmbGFncwotICAgICAgICBpZiB1dWlkIGlzIE5vbmU6Ci0gICAgICAgICAgICB1dWlkID0gZ2VuX3V1aWQoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdXVpZCA9IHV1aWQudXBwZXIoKQotICAgICAgICBpZiBjb21wb25lbnQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbXBvbmVudCA9IHNlbGYubG9naWNhbAotICAgICAgICBzZWxmLmNvbXBvbmVudCA9IGNvbXBvbmVudAotICAgICAgICBpZiBXaW42NDoKLSAgICAgICAgICAgIGZsYWdzIHw9IDI1NgotICAgICAgICBpZiBrZXlmaWxlOgotICAgICAgICAgICAga2V5aWQgPSBzZWxmLmNhYi5nZW5faWQoc2VsZi5hYnNvbHV0ZSwga2V5ZmlsZSkKLSAgICAgICAgICAgIHNlbGYua2V5ZmlsZXNba2V5ZmlsZV0gPSBrZXlpZAotICAgICAgICBlbHNlOgotICAgICAgICAgICAga2V5aWQgPSBOb25lCi0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJDb21wb25lbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgWyhjb21wb25lbnQsIHV1aWQsIHNlbGYubG9naWNhbCwgZmxhZ3MsIE5vbmUsIGtleWlkKV0pCi0gICAgICAgIGlmIGZlYXR1cmUgaXMgTm9uZToKLSAgICAgICAgICAgIGZlYXR1cmUgPSBjdXJyZW50X2ZlYXR1cmUKLSAgICAgICAgYWRkX2RhdGEoc2VsZi5kYiwgIkZlYXR1cmVDb21wb25lbnRzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsoZmVhdHVyZS5pZCwgY29tcG9uZW50KV0pCi0KLSAgICBkZWYgbWFrZV9zaG9ydChzZWxmLCBmaWxlKToKLSAgICAgICAgbG9uZyA9IGZpbGUKLSAgICAgICAgZmlsZSA9IHJlLnN1YihyJ1tcP3w+PDovKiIrLDs9XFtcXV0nLCAnXycsIGZpbGUpICMgcmVzdHJpY3Rpb25zIG9uIHNob3J0IG5hbWVzCi0gICAgICAgIHBhcnRzID0gZmlsZS5zcGxpdCgiLiIsIDEpCi0gICAgICAgIGlmIGxlbihwYXJ0cyk+MToKLSAgICAgICAgICAgIHN1ZmZpeCA9IHBhcnRzWzFdLnVwcGVyKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN1ZmZpeCA9ICcnCi0gICAgICAgIHByZWZpeCA9IHBhcnRzWzBdLnVwcGVyKCkKLSAgICAgICAgaWYgbGVuKHByZWZpeCkgPD0gOCBhbmQgJy4nIG5vdCBpbiBzdWZmaXggYW5kIGxlbihzdWZmaXgpIDw9IDM6Ci0gICAgICAgICAgICBpZiBzdWZmaXg6Ci0gICAgICAgICAgICAgICAgZmlsZSA9IHByZWZpeCsiLiIrc3VmZml4Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZpbGUgPSBwcmVmaXgKLSAgICAgICAgICAgIGFzc2VydCBmaWxlIG5vdCBpbiBzZWxmLnNob3J0X25hbWVzLCAoZmlsZSwgc2VsZi5zaG9ydF9uYW1lc1tmaWxlXSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByZWZpeCA9IHByZWZpeFs6Nl0KLSAgICAgICAgICAgIGlmIHN1ZmZpeDoKLSAgICAgICAgICAgICAgICAjIGxhc3QgdGhyZWUgY2hhcmFjdGVycyBvZiBsYXN0IHN1ZmZpeAotICAgICAgICAgICAgICAgIHN1ZmZpeCA9IHN1ZmZpeC5yc3BsaXQoJy4nKVstMV1bOjNdCi0gICAgICAgICAgICBwb3MgPSAxCi0gICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgIGlmIHN1ZmZpeDoKLSAgICAgICAgICAgICAgICAgICAgZmlsZSA9ICIlc34lZC4lcyIgJSAocHJlZml4LCBwb3MsIHN1ZmZpeCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBmaWxlID0gIiVzfiVkIiAlIChwcmVmaXgsIHBvcykKLSAgICAgICAgICAgICAgICBpZiBmaWxlIG5vdCBpbiBzZWxmLnNob3J0X25hbWVzOiBicmVhawotICAgICAgICAgICAgICAgIHBvcyArPSAxCi0gICAgICAgICAgICAgICAgYXNzZXJ0IHBvcyA8IDEwMDAwCi0gICAgICAgICAgICAgICAgaWYgcG9zIGluICgxMCwgMTAwLCAxMDAwKToKLSAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gcHJlZml4WzotMV0KLSAgICAgICAgc2VsZi5zaG9ydF9uYW1lc1tmaWxlXSA9IGxvbmcKLSAgICAgICAgcmV0dXJuIGZpbGUKLQotICAgIGRlZiBhZGRfZmlsZShzZWxmLCBmaWxlLCBzcmM9Tm9uZSwgdmVyc2lvbj1Ob25lLCBsYW5ndWFnZT1Ob25lKToKLSAgICAgICAgIiIiQWRkIGEgZmlsZSB0byB0aGUgY3VycmVudCBjb21wb25lbnQgb2YgdGhlIGRpcmVjdG9yeSwgc3RhcnRpbmcgYSBuZXcgb25lCi0gICAgICAgIGlmIHRoZXJlIGlzIG5vIGN1cnJlbnQgY29tcG9uZW50LiBCeSBkZWZhdWx0LCB0aGUgZmlsZSBuYW1lIGluIHRoZSBzb3VyY2UKLSAgICAgICAgYW5kIHRoZSBmaWxlIHRhYmxlIHdpbGwgYmUgaWRlbnRpY2FsLiBJZiB0aGUgc3JjIGZpbGUgaXMgc3BlY2lmaWVkLCBpdCBpcwotICAgICAgICBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuIE9wdGlvbmFsbHksIGEgdmVyc2lvbiBhbmQgYQotICAgICAgICBsYW5ndWFnZSBjYW4gYmUgc3BlY2lmaWVkIGZvciB0aGUgZW50cnkgaW4gdGhlIEZpbGUgdGFibGUuIiIiCi0gICAgICAgIGlmIG5vdCBzZWxmLmNvbXBvbmVudDoKLSAgICAgICAgICAgIHNlbGYuc3RhcnRfY29tcG9uZW50KHNlbGYubG9naWNhbCwgY3VycmVudF9mZWF0dXJlKQotICAgICAgICBpZiBub3Qgc3JjOgotICAgICAgICAgICAgIyBBbGxvdyByZWxhdGl2ZSBwYXRocyBmb3IgZmlsZSBpZiBzcmMgaXMgbm90IHNwZWNpZmllZAotICAgICAgICAgICAgc3JjID0gZmlsZQotICAgICAgICAgICAgZmlsZSA9IG9zLnBhdGguYmFzZW5hbWUoZmlsZSkKLSAgICAgICAgYWJzb2x1dGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5hYnNvbHV0ZSwgc3JjKQotICAgICAgICBpZiBhYnNvbHV0ZS5zdGFydHN3aXRoKHNlbGYuYWJzb2x1dGUpOgotICAgICAgICAgICAgIyBtYXJrIGZpbGUgYXMgcGFja2FnZWQKLSAgICAgICAgICAgIHJlbGF0aXZlID0gYWJzb2x1dGVbbGVuKHNlbGYuYWJzb2x1dGUpKzE6XQotICAgICAgICAgICAgaWYgcmVsYXRpdmUgaW4gc2VsZi51bnBhY2thZ2VkX2ZpbGVzOgotICAgICAgICAgICAgICAgIHNlbGYudW5wYWNrYWdlZF9maWxlcy5yZW1vdmUocmVsYXRpdmUpCi0gICAgICAgIGFzc2VydCBub3QgcmUuc2VhcmNoKHInW1w/fD48Oi8qXSInLCBmaWxlKSAjIHJlc3RyaWN0aW9ucyBvbiBsb25nIG5hbWVzCi0gICAgICAgIGlmIHNlbGYua2V5ZmlsZXMuaGFzX2tleShmaWxlKToKLSAgICAgICAgICAgIGxvZ2ljYWwgPSBzZWxmLmtleWZpbGVzW2ZpbGVdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2dpY2FsID0gTm9uZQotICAgICAgICBzZXF1ZW5jZSwgbG9naWNhbCA9IHNlbGYuY2FiLmFwcGVuZChhYnNvbHV0ZSwgZmlsZSwgbG9naWNhbCkKLSAgICAgICAgYXNzZXJ0IGxvZ2ljYWwgbm90IGluIHNlbGYuaWRzCi0gICAgICAgIHNlbGYuaWRzLmFkZChsb2dpY2FsKQotICAgICAgICBzaG9ydCA9IHNlbGYubWFrZV9zaG9ydChmaWxlKQotICAgICAgICBmdWxsID0gIiVzfCVzIiAlIChzaG9ydCwgZmlsZSkKLSAgICAgICAgZmlsZXNpemUgPSBvcy5zdGF0KGFic29sdXRlKS5zdF9zaXplCi0gICAgICAgICMgY29uc3RhbnRzLm1zaWRiRmlsZUF0dHJpYnV0ZXNWaXRhbAotICAgICAgICAjIENvbXByZXNzZWQgb21pdHRlZCwgc2luY2UgaXQgaXMgdGhlIGRhdGFiYXNlIGRlZmF1bHQKLSAgICAgICAgIyBjb3VsZCBhZGQgci9vLCBzeXN0ZW0sIGhpZGRlbgotICAgICAgICBhdHRyaWJ1dGVzID0gNTEyCi0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJGaWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsobG9naWNhbCwgc2VsZi5jb21wb25lbnQsIGZ1bGwsIGZpbGVzaXplLCB2ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlLCBhdHRyaWJ1dGVzLCBzZXF1ZW5jZSldKQotICAgICAgICBpZiBub3QgdmVyc2lvbjoKLSAgICAgICAgICAgICMgQWRkIGhhc2ggaWYgdGhlIGZpbGUgaXMgbm90IHZlcnNpb25lZAotICAgICAgICAgICAgZmlsZWhhc2ggPSBNYWtlSW5zdGFsbGVyKCkuRmlsZUhhc2goYWJzb2x1dGUsIDApCi0gICAgICAgICAgICBhZGRfZGF0YShzZWxmLmRiLCAiTXNpRmlsZUhhc2giLAotICAgICAgICAgICAgICAgICAgICAgWyhsb2dpY2FsLCAwLCBmaWxlaGFzaC5JbnRlZ2VyRGF0YSgxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgZmlsZWhhc2guSW50ZWdlckRhdGEoMiksIGZpbGVoYXNoLkludGVnZXJEYXRhKDMpLAotICAgICAgICAgICAgICAgICAgICAgICBmaWxlaGFzaC5JbnRlZ2VyRGF0YSg0KSldKQotICAgICAgICAjIEF1dG9tYXRpY2FsbHkgcmVtb3ZlIC5weWMvLnB5byBmaWxlcyBvbiB1bmluc3RhbGwgKDIpCi0gICAgICAgICMgWFhYOiBhZGRpbmcgc28gbWFueSBSZW1vdmVGaWxlIGVudHJpZXMgbWFrZXMgaW5zdGFsbGVyIHVuYmVsaWV2YWJseQotICAgICAgICAjIHNsb3cuIFNvIGluc3RlYWQsIHdlIGhhdmUgdG8gdXNlIHdpbGRjYXJkIHJlbW92ZSBlbnRyaWVzCi0gICAgICAgICMgaWYgZmlsZS5lbmRzd2l0aCgiLnB5Iik6Ci0gICAgICAgICMgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJSZW1vdmVGaWxlIiwKLSAgICAgICAgIyAgICAgICAgICAgICAgWyhsb2dpY2FsKyJjIiwgc2VsZi5jb21wb25lbnQsICIlc0N8JXNjIiAlIChzaG9ydCwgZmlsZSksCi0gICAgICAgICMgICAgICAgICAgICAgICAgc2VsZi5sb2dpY2FsLCAyKSwKLSAgICAgICAgIyAgICAgICAgICAgICAgIChsb2dpY2FsKyJvIiwgc2VsZi5jb21wb25lbnQsICIlc098JXNvIiAlIChzaG9ydCwgZmlsZSksCi0gICAgICAgICMgICAgICAgICAgICAgICAgc2VsZi5sb2dpY2FsLCAyKV0pCi0KLSAgICBkZWYgZ2xvYihzZWxmLCBwYXR0ZXJuLCBleGNsdWRlID0gTm9uZSk6Ci0gICAgICAgICIiIkFkZCBhIGxpc3Qgb2YgZmlsZXMgdG8gdGhlIGN1cnJlbnQgY29tcG9uZW50IGFzIHNwZWNpZmllZCBpbiB0aGUKLSAgICAgICAgZ2xvYiBwYXR0ZXJuLiBJbmRpdmlkdWFsIGZpbGVzIGNhbiBiZSBleGNsdWRlZCBpbiB0aGUgZXhjbHVkZSBsaXN0LiIiIgotICAgICAgICBmaWxlcyA9IGdsb2IuZ2xvYjEoc2VsZi5hYnNvbHV0ZSwgcGF0dGVybikKLSAgICAgICAgZm9yIGYgaW4gZmlsZXM6Ci0gICAgICAgICAgICBpZiBleGNsdWRlIGFuZCBmIGluIGV4Y2x1ZGU6IGNvbnRpbnVlCi0gICAgICAgICAgICBzZWxmLmFkZF9maWxlKGYpCi0gICAgICAgIHJldHVybiBmaWxlcwotCi0gICAgZGVmIHJlbW92ZV9weWMoc2VsZik6Ci0gICAgICAgICJSZW1vdmUgLnB5Yy8ucHlvIGZpbGVzIGZyb20gX19weWNhY2hlX18gb24gdW5pbnN0YWxsIgotICAgICAgICBkaXJlY3RvcnkgPSBzZWxmLmxvZ2ljYWwgKyAiX3B5Y2FjaGUiCi0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJEaXJlY3RvcnkiLCBbKGRpcmVjdG9yeSwgc2VsZi5sb2dpY2FsLCAiX19QWUNBfjF8X19weWNhY2hlX18iKV0pCi0gICAgICAgIGZsYWdzID0gMjU2IGlmIFdpbjY0IGVsc2UgMAotICAgICAgICBhZGRfZGF0YShzZWxmLmRiLCAiQ29tcG9uZW50IiwKLSAgICAgICAgICAgICAgICBbKGRpcmVjdG9yeSwgZ2VuX3V1aWQoKSwgZGlyZWN0b3J5LCBmbGFncywgTm9uZSwgTm9uZSldKQotICAgICAgICBhZGRfZGF0YShzZWxmLmRiLCAiRmVhdHVyZUNvbXBvbmVudHMiLCBbKGN1cnJlbnRfZmVhdHVyZS5pZCwgZGlyZWN0b3J5KV0pCi0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJDcmVhdGVGb2xkZXIiLCBbKGRpcmVjdG9yeSwgZGlyZWN0b3J5KV0pCi0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJSZW1vdmVGaWxlIiwKLSAgICAgICAgICAgICAgICAgWyhzZWxmLmNvbXBvbmVudCwgc2VsZi5jb21wb25lbnQsICIqLioiLCBkaXJlY3RvcnksIDIpLAotICAgICAgICAgICAgICAgICBdKQotCi0gICAgZGVmIHJlbW92ZWZpbGUoc2VsZiwga2V5LCBwYXR0ZXJuKToKLSAgICAgICAgIkFkZCBhIFJlbW92ZUZpbGUgZW50cnkiCi0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJSZW1vdmVGaWxlIiwgWyhzZWxmLmNvbXBvbmVudCtrZXksIHNlbGYuY29tcG9uZW50LCBwYXR0ZXJuLCBzZWxmLmxvZ2ljYWwsIDIpXSkKLQotCi1jbGFzcyBGZWF0dXJlOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYiwgaWQsIHRpdGxlLCBkZXNjLCBkaXNwbGF5LCBsZXZlbCA9IDEsCi0gICAgICAgICAgICAgICAgIHBhcmVudD1Ob25lLCBkaXJlY3RvcnkgPSBOb25lLCBhdHRyaWJ1dGVzPTApOgotICAgICAgICBzZWxmLmlkID0gaWQKLSAgICAgICAgaWYgcGFyZW50OgotICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LmlkCi0gICAgICAgIGFkZF9kYXRhKGRiLCAiRmVhdHVyZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBbKGlkLCBwYXJlbnQsIHRpdGxlLCBkZXNjLCBkaXNwbGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCwgZGlyZWN0b3J5LCBhdHRyaWJ1dGVzKV0pCi0gICAgZGVmIHNldF9jdXJyZW50KHNlbGYpOgotICAgICAgICBnbG9iYWwgY3VycmVudF9mZWF0dXJlCi0gICAgICAgIGN1cnJlbnRfZmVhdHVyZSA9IHNlbGYKLQotY2xhc3MgQ29udHJvbDoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZGxnLCBuYW1lKToKLSAgICAgICAgc2VsZi5kbGcgPSBkbGcKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotCi0gICAgZGVmIGV2ZW50KHNlbGYsIGV2LCBhcmcsIGNvbmQgPSAiMSIsIG9yZGVyID0gTm9uZSk6Ci0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGxnLmRiLCAiQ29udHJvbEV2ZW50IiwKLSAgICAgICAgICAgICAgICAgWyhzZWxmLmRsZy5uYW1lLCBzZWxmLm5hbWUsIGV2LCBhcmcsIGNvbmQsIG9yZGVyKV0pCi0KLSAgICBkZWYgbWFwcGluZyhzZWxmLCBldiwgYXR0cik6Ci0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGxnLmRiLCAiRXZlbnRNYXBwaW5nIiwKLSAgICAgICAgICAgICAgICAgWyhzZWxmLmRsZy5uYW1lLCBzZWxmLm5hbWUsIGV2LCBhdHRyKV0pCi0KLSAgICBkZWYgY29uZGl0aW9uKHNlbGYsIGFjdGlvbiwgY29uZGl0aW9uKToKLSAgICAgICAgYWRkX2RhdGEoc2VsZi5kbGcuZGIsICJDb250cm9sQ29uZGl0aW9uIiwKLSAgICAgICAgICAgICAgICAgWyhzZWxmLmRsZy5uYW1lLCBzZWxmLm5hbWUsIGFjdGlvbiwgY29uZGl0aW9uKV0pCi0KLWNsYXNzIFJhZGlvQnV0dG9uR3JvdXAoQ29udHJvbCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGRsZywgbmFtZSwgcHJvcGVydHkpOgotICAgICAgICBzZWxmLmRsZyA9IGRsZwotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYucHJvcGVydHkgPSBwcm9wZXJ0eQotICAgICAgICBzZWxmLmluZGV4ID0gMQotCi0gICAgZGVmIGFkZChzZWxmLCBuYW1lLCB4LCB5LCB3LCBoLCB0ZXh0LCB2YWx1ZSA9IE5vbmUpOgotICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgotICAgICAgICAgICAgdmFsdWUgPSBuYW1lCi0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGxnLmRiLCAiUmFkaW9CdXR0b24iLAotICAgICAgICAgICAgICAgICBbKHNlbGYucHJvcGVydHksIHNlbGYuaW5kZXgsIHZhbHVlLAotICAgICAgICAgICAgICAgICAgIHgsIHksIHcsIGgsIHRleHQsIE5vbmUpXSkKLSAgICAgICAgc2VsZi5pbmRleCArPSAxCi0KLWNsYXNzIERpYWxvZzoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZGIsIG5hbWUsIHgsIHksIHcsIGgsIGF0dHIsIHRpdGxlLCBmaXJzdCwgZGVmYXVsdCwgY2FuY2VsKToKLSAgICAgICAgc2VsZi5kYiA9IGRiCi0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi54LCBzZWxmLnksIHNlbGYudywgc2VsZi5oID0geCx5LHcsaAotICAgICAgICBhZGRfZGF0YShkYiwgIkRpYWxvZyIsIFsobmFtZSwgeCx5LHcsaCxhdHRyLHRpdGxlLGZpcnN0LGRlZmF1bHQsY2FuY2VsKV0pCi0KLSAgICBkZWYgY29udHJvbChzZWxmLCBuYW1lLCB0eXBlLCB4LCB5LCB3LCBoLCBhdHRyLCBwcm9wLCB0ZXh0LCBuZXh0LCBoZWxwKToKLSAgICAgICAgYWRkX2RhdGEoc2VsZi5kYiwgIkNvbnRyb2wiLAotICAgICAgICAgICAgICAgICBbKHNlbGYubmFtZSwgbmFtZSwgdHlwZSwgeCwgeSwgdywgaCwgYXR0ciwgcHJvcCwgdGV4dCwgbmV4dCwgaGVscCldKQotICAgICAgICByZXR1cm4gQ29udHJvbChzZWxmLCBuYW1lKQotCi0gICAgZGVmIHRleHQoc2VsZiwgbmFtZSwgeCwgeSwgdywgaCwgYXR0ciwgdGV4dCk6Ci0gICAgICAgIHJldHVybiBzZWxmLmNvbnRyb2wobmFtZSwgIlRleHQiLCB4LCB5LCB3LCBoLCBhdHRyLCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgdGV4dCwgTm9uZSwgTm9uZSkKLQotICAgIGRlZiBiaXRtYXAoc2VsZiwgbmFtZSwgeCwgeSwgdywgaCwgdGV4dCk6Ci0gICAgICAgIHJldHVybiBzZWxmLmNvbnRyb2wobmFtZSwgIkJpdG1hcCIsIHgsIHksIHcsIGgsIDEsIE5vbmUsIHRleHQsIE5vbmUsIE5vbmUpCi0KLSAgICBkZWYgbGluZShzZWxmLCBuYW1lLCB4LCB5LCB3LCBoKToKLSAgICAgICAgcmV0dXJuIHNlbGYuY29udHJvbChuYW1lLCAiTGluZSIsIHgsIHksIHcsIGgsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpCi0KLSAgICBkZWYgcHVzaGJ1dHRvbihzZWxmLCBuYW1lLCB4LCB5LCB3LCBoLCBhdHRyLCB0ZXh0LCBuZXh0KToKLSAgICAgICAgcmV0dXJuIHNlbGYuY29udHJvbChuYW1lLCAiUHVzaEJ1dHRvbiIsIHgsIHksIHcsIGgsIGF0dHIsIE5vbmUsIHRleHQsIG5leHQsIE5vbmUpCi0KLSAgICBkZWYgcmFkaW9ncm91cChzZWxmLCBuYW1lLCB4LCB5LCB3LCBoLCBhdHRyLCBwcm9wLCB0ZXh0LCBuZXh0KToKLSAgICAgICAgYWRkX2RhdGEoc2VsZi5kYiwgIkNvbnRyb2wiLAotICAgICAgICAgICAgICAgICBbKHNlbGYubmFtZSwgbmFtZSwgIlJhZGlvQnV0dG9uR3JvdXAiLAotICAgICAgICAgICAgICAgICAgIHgsIHksIHcsIGgsIGF0dHIsIHByb3AsIHRleHQsIG5leHQsIE5vbmUpXSkKLSAgICAgICAgcmV0dXJuIFJhZGlvQnV0dG9uR3JvdXAoc2VsZiwgbmFtZSwgcHJvcCkKLQotICAgIGRlZiBjaGVja2JveChzZWxmLCBuYW1lLCB4LCB5LCB3LCBoLCBhdHRyLCBwcm9wLCB0ZXh0LCBuZXh0KToKLSAgICAgICAgcmV0dXJuIHNlbGYuY29udHJvbChuYW1lLCAiQ2hlY2tCb3giLCB4LCB5LCB3LCBoLCBhdHRyLCBwcm9wLCB0ZXh0LCBuZXh0LCBOb25lKQotCi1kZWYgcGVfdHlwZShwYXRoKToKLSAgICBoZWFkZXIgPSBvcGVuKHBhdGgsICJyYiIpLnJlYWQoMTAwMCkKLSAgICAjIG9mZnNldCBvZiBQRSBoZWFkZXIgaXMgYXQgb2Zmc2V0IDB4M2MKLSAgICBwZV9vZmZzZXQgPSBzdHJ1Y3QudW5wYWNrKCI8aSIsIGhlYWRlclsweDNjOjB4NDBdKVswXQotICAgIGFzc2VydCBoZWFkZXJbcGVfb2Zmc2V0OnBlX29mZnNldCs0XSA9PSAiUEVcMFwwIgotICAgIG1hY2hpbmUgPSBzdHJ1Y3QudW5wYWNrKCI8SCIsIGhlYWRlcltwZV9vZmZzZXQrNDpwZV9vZmZzZXQrNl0pWzBdCi0gICAgcmV0dXJuIG1hY2hpbmUKLQotZGVmIHNldF9hcmNoX2Zyb21fZmlsZShwYXRoKToKLSAgICBnbG9iYWwgbXNpX3R5cGUsIFdpbjY0LCBhcmNoX2V4dAotICAgIG1hY2hpbmUgPSBwZV90eXBlKHBhdGgpCi0gICAgaWYgbWFjaGluZSA9PSAweDE0YzoKLSAgICAgICAgIyBpMzg2Ci0gICAgICAgIG1zaV90eXBlID0gIkludGVsIgotICAgICAgICBXaW42NCA9IDAKLSAgICAgICAgYXJjaF9leHQgPSAnJwotICAgIGVsaWYgbWFjaGluZSA9PSAweDIwMDoKLSAgICAgICAgIyBJdGFuaXVtCi0gICAgICAgIG1zaV90eXBlID0gIkludGVsNjQiCi0gICAgICAgIFdpbjY0ID0gMQotICAgICAgICBhcmNoX2V4dCA9ICcuaWE2NCcKLSAgICBlbGlmIG1hY2hpbmUgPT0gMHg4NjY0OgotICAgICAgICAjIEFNRDY0Ci0gICAgICAgIG1zaV90eXBlID0gIng2NCIKLSAgICAgICAgV2luNjQgPSAxCi0gICAgICAgIGFyY2hfZXh0ID0gJy5hbWQ2NCcKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yLCAiVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIgotICAgIG1zaV90eXBlICs9ICI7MTAzMyIKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tc2lzdXBwb3J0LmMgYi9Ub29scy9tc2kvbXNpc3VwcG9ydC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmQyZWU0Li4wMDAwMDAwCi0tLSBhL1Rvb2xzL21zaS9tc2lzdXBwb3J0LmMKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0jaW5jbHVkZSAid2luZG93cy5oIgotI2luY2x1ZGUgIm1zaXF1ZXJ5LmgiCi0KLS8qIFByaW50IGEgZGVidWcgbWVzc2FnZSB0byB0aGUgaW5zdGFsbGVyIGxvZyBmaWxlLgotICogVG8gc2VlIHRoZSBkZWJ1ZyBtZXNzYWdlcywgaW5zdGFsbCB3aXRoCi0gKiBtc2lleGVjIC9pIHB5dGhvbnh5Lm1zaSAvbCp2IHB5dGhvbi5sb2cKLSAqLwotc3RhdGljIFVJTlQgZGVidWcoTVNJSEFORExFIGhJbnN0YWxsLCBMUENTVFIgbXNnKQotewotICAgIE1TSUhBTkRMRSBoUmVjID0gTXNpQ3JlYXRlUmVjb3JkKDEpOwotICAgIGlmICghaFJlYyB8fCBNc2lSZWNvcmRTZXRTdHJpbmdBKGhSZWMsIDEsIG1zZykgIT0gRVJST1JfU1VDQ0VTUykgewotICAgICAgICByZXR1cm4gRVJST1JfSU5TVEFMTF9GQUlMVVJFOwotICAgIH0KLSAgICBNc2lQcm9jZXNzTWVzc2FnZShoSW5zdGFsbCwgSU5TVEFMTE1FU1NBR0VfSU5GTywgaFJlYyk7Ci0gICAgTXNpQ2xvc2VIYW5kbGUoaFJlYyk7Ci0gICAgcmV0dXJuIEVSUk9SX1NVQ0NFU1M7Ci19Ci0KLS8qIENoZWNrIHdoZXRoZXIgdGhlIFRBUkdFVERJUiBleGlzdHMgYW5kIGlzIGEgZGlyZWN0b3J5LgotICogU2V0IFRhcmdldEV4aXN0cyBhcHByb3ByaWF0ZWx5LgotICovCi1VSU5UIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBfX3N0ZGNhbGwgQ2hlY2tEaXIoTVNJSEFORExFIGhJbnN0YWxsKQotewotI2RlZmluZSBQU0laRSAxMDI0Ci0gICAgV0NIQVIgd3BhdGhbUFNJWkVdOwotICAgIGNoYXIgcGF0aFtQU0laRV07Ci0gICAgVUlOVCByZXN1bHQ7Ci0gICAgRFdPUkQgc2l6ZSA9IFBTSVpFOwotICAgIERXT1JEIGF0dHJpYnV0ZXM7Ci0KLQotICAgIHJlc3VsdCA9IE1zaUdldFByb3BlcnR5VyhoSW5zdGFsbCwgTCJUQVJHRVRESVIiLCB3cGF0aCwgJnNpemUpOwotICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB3cGF0aFtzaXplXSA9IEwnXDAnOwotICAgIHBhdGhbc2l6ZV0gPSBMJ1wwJzsKLQotICAgIGF0dHJpYnV0ZXMgPSBHZXRGaWxlQXR0cmlidXRlc1cod3BhdGgpOwotICAgIGlmIChhdHRyaWJ1dGVzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTIHx8Ci0gICAgICAgICEoYXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkpCi0gICAgewotICAgICAgICByZXR1cm4gTXNpU2V0UHJvcGVydHlBKGhJbnN0YWxsLCAiVGFyZ2V0RXhpc3RzIiwgIjAiKTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gTXNpU2V0UHJvcGVydHlBKGhJbnN0YWxsLCAiVGFyZ2V0RXhpc3RzIiwgIjEiKTsKLSAgICB9Ci19Ci0KLS8qIFVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIFJFR0lTVFJZLnRjbCBjb21wb25lbnQgYWNjb3JkaW5nIHRvIHRoZQotICogRXh0ZW5zaW9uIGFuZCBUY2xUayBmZWF0dXJlcy4gUkVHSVNUUlkudGNsIG11c3QgYmUgaW5zdGFsbGVkCi0gKiBpZiBib3RoIGZlYXR1cmVzIGFyZSBpbnN0YWxsZWQsIGFuZCBtdXN0IGJlIGFic2VudCBvdGhlcndpc2UuCi0gKi8KLVVJTlQgX19kZWNsc3BlYyhkbGxleHBvcnQpIF9fc3RkY2FsbCBVcGRhdGVFZGl0SURMRShNU0lIQU5ETEUgaEluc3RhbGwpCi17Ci0gICAgSU5TVEFMTFNUQVRFIGV4dF9vbGQsIGV4dF9uZXcsIHRjbF9vbGQsIHRjbF9uZXcsIHJlZ19uZXc7Ci0gICAgVUlOVCByZXN1bHQ7Ci0KLSAgICByZXN1bHQgPSBNc2lHZXRGZWF0dXJlU3RhdGVBKGhJbnN0YWxsLCAiRXh0ZW5zaW9ucyIsICZleHRfb2xkLCAmZXh0X25ldyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNTKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHJlc3VsdCA9IE1zaUdldEZlYXR1cmVTdGF0ZUEoaEluc3RhbGwsICJUY2xUayIsICZ0Y2xfb2xkLCAmdGNsX25ldyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNTKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgLyogSWYgdGhlIGN1cnJlbnQgc3RhdGUgaXMgQWJzZW50LCBhbmQgdGhlIHVzZXIgZGlkIG5vdCBzZWxlY3QKLSAgICAgICB0aGUgZmVhdHVyZSBpbiB0aGUgVUksIEluc3RhbGxlciBhcHBhcmVudGx5IHNldHMgdGhlICJzZWxlY3RlZCIKLSAgICAgICBzdGF0ZSB0byB1bmtub3duLiBVcGRhdGUgaXQgdG8gdGhlIGN1cnJlbnQgdmFsdWUsIHRoZW4uICovCi0gICAgaWYgKGV4dF9uZXcgPT0gSU5TVEFMTFNUQVRFX1VOS05PV04pCi0gICAgICAgIGV4dF9uZXcgPSBleHRfb2xkOwotICAgIGlmICh0Y2xfbmV3ID09IElOU1RBTExTVEFURV9VTktOT1dOKQotICAgICAgICB0Y2xfbmV3ID0gdGNsX29sZDsKLQotICAgIC8vIFhYWCBjb25zaWRlciBjdXJyZW50IHN0YXRlIG9mIFJFR0lTVFJZLnRjbD8KLSAgICBpZiAoKCh0Y2xfbmV3ID09IElOU1RBTExTVEFURV9MT0NBTCkgfHwKLSAgICAgICAgICAgICAodGNsX25ldyA9PSBJTlNUQUxMU1RBVEVfU09VUkNFKSB8fAotICAgICAgICAgICAgICh0Y2xfbmV3ID09IElOU1RBTExTVEFURV9ERUZBVUxUKSkgJiYKLSAgICAgICAgKChleHRfbmV3ID09IElOU1RBTExTVEFURV9MT0NBTCkgfHwKLSAgICAgICAgIChleHRfbmV3ID09IElOU1RBTExTVEFURV9TT1VSQ0UpIHx8Ci0gICAgICAgICAoZXh0X25ldyA9PSBJTlNUQUxMU1RBVEVfREVGQVVMVCkpKSB7Ci0gICAgICAgIHJlZ19uZXcgPSBJTlNUQUxMU1RBVEVfU09VUkNFOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlZ19uZXcgPSBJTlNUQUxMU1RBVEVfQUJTRU5UOwotICAgIH0KLSAgICByZXN1bHQgPSBNc2lTZXRDb21wb25lbnRTdGF0ZUEoaEluc3RhbGwsICJSRUdJU1RSWS50Y2wiLCByZWdfbmV3KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1CT09MIEFQSUVOVFJZIERsbE1haW4oSEFORExFIGhNb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgRFdPUkQgIHVsX3JlYXNvbl9mb3JfY2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICBMUFZPSUQgbHBSZXNlcnZlZCkKLXsKLSAgICByZXR1cm4gVFJVRTsKLX0KLQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL21zaXN1cHBvcnQubWFrIGIvVG9vbHMvbXNpL21zaXN1cHBvcnQubWFrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTA1ZGJlLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL21zaS9tc2lzdXBwb3J0Lm1haworKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotIyAvT1BUOiBSRUYgYW5kIElDRiBhcmUgYWRkZWQgYnkgVlMuTkVUIGJ5IGRlZmF1bHQKLW1zaXN1cHBvcnQuZGxsOgltc2lzdXBwb3J0Lm9iagotCWxpbmsuZXhlIC9PVVQ6bXNpc3VwcG9ydC5kbGwgL0lOQ1JFTUVOVEFMOk5PIC9OT0xPR08gL0RMTCAvU1VCU1lTVEVNOldJTkRPV1MgL09QVDpSRUYgL09QVDpJQ0YgbXNpc3VwcG9ydC5vYmogbXNpLmxpYiBrZXJuZWwzMi5saWIKLQotIyBXZSByZXF1ZXN0IGEgc3RhdGljIENSVCwgc28gdGhhdCB0aGVyZSB3aWxsIGJlIG5vIENSVCBkZXBlbmRlbmNpZXMKLSMgZm9yIHRoZSB0YXJnZXQgc3lzdGVtLiBXZSBjYW5ub3QgZG8gd2l0aG91dCBhIENSVCwgc2luY2UgaXQgcHJvdmlkZXMKLSMgdGhlIERMTCBlbnRyeSBwb2ludC4KLW1zaXN1cHBvcnQub2JqOgltc2lzdXBwb3J0LmMKLQljbCAvTzIgL0QgV0lOMzIgL0QgTkRFQlVHIC9EIF9XSU5ET1dTIC9NVCAvVzMgL2MgbXNpc3VwcG9ydC5jCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvcGF0aC9wYXRoLndpeHByb2ogYi9Ub29scy9tc2kvcGF0aC9wYXRoLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc5MmUxNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9wYXRoL3BhdGgud2l4cHJvagpAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57OTFDOTkyOTgtOEUyRS00NDIyLUE1QUYtQ0M0RkZGOUE1OEQzfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+cGF0aDwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICAgICAgPFN1cHByZXNzSWNlcz5JQ0U3MTwvU3VwcHJlc3NJY2VzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSIqLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9wYXRoL3BhdGgud3hzIGIvVG9vbHMvbXNpL3BhdGgvcGF0aC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIzNzkzNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9wYXRoL3BhdGgud3hzCkBAIC0wLDAgKzEsMzkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUkVHSVNUUllLRVkiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJQcmVwZW5kUGF0aF9DVSIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPk5PVCBBTExVU0VSUz0xPC9Db25kaXRpb24+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLQ1UiIEtleT0iW1JFR0lTVFJZS0VZXSI+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleVBhdGg9InllcyIgS2V5PSJJbnN0YWxsZWRGZWF0dXJlcyIgTmFtZT0iJCh2YXIuT3B0aW9uYWxGZWF0dXJlTmFtZSkiIFZhbHVlPSIkKHZhci5WZXJzaW9uKSIgVHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPENyZWF0ZUZvbGRlciBEaXJlY3Rvcnk9IlNjcmlwdHMiIC8+CisgICAgICAgICAgICAgICAgPFJlbW92ZUZvbGRlciBJZD0iUmVtb3ZlX1NjcmlwdHNfQ1UiIERpcmVjdG9yeT0iU2NyaXB0cyIgT249InVuaW5zdGFsbCIgLz4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8RW52aXJvbm1lbnQgSWQ9IlBBVEhfQ1UiIEFjdGlvbj0ic2V0IiBOYW1lPSJQQVRIIiBQYXJ0PSJmaXJzdCIgVmFsdWU9IltJbnN0YWxsRGlyZWN0b3J5XSIgLz4KKyAgICAgICAgICAgICAgICA8RW52aXJvbm1lbnQgSWQ9IlNDUklQVFNfUEFUSF9DVSIgQWN0aW9uPSJzZXQiIE5hbWU9IlBBVEgiIFBhcnQ9ImZpcnN0IiBWYWx1ZT0iW1NjcmlwdHNdIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJQcmVwZW5kUGF0aF9MTSIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPkFMTFVTRVJTPTE8L0NvbmRpdGlvbj4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlLZXkgUm9vdD0iSEtMTSIgS2V5PSJbUkVHSVNUUllLRVldIj4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5UGF0aD0ieWVzIiBLZXk9Ikluc3RhbGxlZEZlYXR1cmVzIiBOYW1lPSIkKHZhci5PcHRpb25hbEZlYXR1cmVOYW1lKSIgVmFsdWU9IiQodmFyLlZlcnNpb24pIiBUeXBlPSJzdHJpbmciIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8Q3JlYXRlRm9sZGVyIERpcmVjdG9yeT0iU2NyaXB0cyIgLz4KKyAgICAgICAgICAgICAgICA8UmVtb3ZlRm9sZGVyIElkPSJSZW1vdmVfU2NyaXB0c19MTSIgRGlyZWN0b3J5PSJTY3JpcHRzIiBPbj0idW5pbnN0YWxsIiAvPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDxFbnZpcm9ubWVudCBJZD0iUEFUSF9MTSIgQWN0aW9uPSJzZXQiIE5hbWU9IlBBVEgiIFBhcnQ9ImZpcnN0IiBWYWx1ZT0iW0luc3RhbGxEaXJlY3RvcnldIiBTeXN0ZW09InllcyIgLz4KKyAgICAgICAgICAgICAgICA8RW52aXJvbm1lbnQgSWQ9IlNDUklQVFNfUEFUSF9MTSIgQWN0aW9uPSJzZXQiIE5hbWU9IlBBVEgiIFBhcnQ9ImZpcnN0IiBWYWx1ZT0iW1NjcmlwdHNdIiBTeXN0ZW09InllcyIgLz4KKyAgICAgICAgICAgICAgICA8RW52aXJvbm1lbnQgSWQ9IlBZX1BBVEhFWFRfTE0iIEFjdGlvbj0ic2V0IiBOYW1lPSJQQVRIRVhUIiBQYXJ0PSJsYXN0IiBWYWx1ZT0iLlBZIiBTeXN0ZW09InllcyIgLz4KKyAgICAgICAgICAgICAgICA8RW52aXJvbm1lbnQgSWQ9IlBZV19QQVRIRVhUX0xNIiBBY3Rpb249InNldCIgTmFtZT0iUEFUSEVYVCIgUGFydD0ibGFzdCIgVmFsdWU9Ii5QWVciIFN5c3RlbT0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3BhdGgvcGF0aF9lbi1VUy53eGwgYi9Ub29scy9tc2kvcGF0aC9wYXRoX2VuLVVTLnd4bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2E3ODg2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3BhdGgvcGF0aF9lbi1VUy53eGwKQEAgLTAsMCArMSw2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5BZGQgdG8gUGF0aDwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0RGVzY3JpcHRvciI+UGF0aDwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9Ik5vUHl0aG9uIj5ObyAhKGxvYy5Qcm9kdWN0TmFtZSkgaW5zdGFsbGF0aW9uIHdhcyBkZXRlY3RlZC48L1N0cmluZz4KKzwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3BpcC9waXAud2l4cHJvaiBiL1Rvb2xzL21zaS9waXAvcGlwLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE4YzAyYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9waXAvcGlwLndpeHByb2oKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezkxQzk5Mjk4LThFMkUtNDQyMi1BNUFGLUNDNEZGRjlBNThEM308L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPnBpcDwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICAgICAgPFN1cHByZXNzSWNlcz5JQ0U3MTwvU3VwcHJlc3NJY2VzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSIqLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9waXAvcGlwLnd4cyBiL1Rvb2xzL21zaS9waXAvcGlwLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWU5ZjVmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3BpcC9waXAud3hzCkBAIC0wLDAgKzEsMzkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUkVHSVNUUllLRVkiIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHkgSWQ9IlBZVEhPTl9FWEUiIFNlY3VyZT0ieWVzIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRTZWFyY2ggSWQ9IlB5dGhvbkV4ZSIgR3VpZD0iJCh2YXIuUHl0aG9uRXhlQ29tcG9uZW50R3VpZCkiPgorICAgICAgICAgICAgICAgIDxGaWxlU2VhcmNoIE5hbWU9InB5dGhvbi5leGUiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudFNlYXJjaD4KKyAgICAgICAgPC9Qcm9wZXJ0eT4KKworICAgICAgICA8Q29uZGl0aW9uIE1lc3NhZ2U9IiEobG9jLk5vUHl0aG9uKSI+UFlUSE9OX0VYRTwvQ29uZGl0aW9uPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgorICAgICAgICAgICAgPENvbXBvbmVudFJlZiBJZD0iT3B0aW9uYWxGZWF0dXJlIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgICAgIAorICAgICAgICA8P2lmICQodmFyLlBsYXRmb3JtKX49Ing2NCIgPz4KKyAgICAgICAgPEN1c3RvbUFjdGlvbiBJZD0iVXBkYXRlUGlwIiBCaW5hcnlLZXk9IldpeENBIiBEbGxFbnRyeT0iQ0FRdWlldEV4ZWM2NCIgRXhlY3V0ZT0iZGVmZXJyZWQiIFJldHVybj0iaWdub3JlIi8+CisgICAgICAgIDw/ZWxzZSA/PgorICAgICAgICA8Q3VzdG9tQWN0aW9uIElkPSJVcGRhdGVQaXAiIEJpbmFyeUtleT0iV2l4Q0EiIERsbEVudHJ5PSJDQVF1aWV0RXhlYyIgRXhlY3V0ZT0iZGVmZXJyZWQiIFJldHVybj0iaWdub3JlIi8+CisgICAgICAgIDw/ZW5kaWYgPz4KKyAgICAgICAgCisgICAgICAgIDwhLS0gSW5zdGFsbC91bmluc3RhbGwgcGlwIC0tPgorICAgICAgICA8Q3VzdG9tQWN0aW9uIElkPSJTZXRVcGRhdGVQaXBDb21tYW5kTGluZSIgUHJvcGVydHk9IlVwZGF0ZVBpcCIgVmFsdWU9JyJbUFlUSE9OX0VYRV0iIC1FIC1zIC1tIGVuc3VyZXBpcCAtVSAtLWRlZmF1bHQtcGlwJyBFeGVjdXRlPSJpbW1lZGlhdGUiIC8+CisgICAgICAgIDxDdXN0b21BY3Rpb24gSWQ9IlNldFJlbW92ZVBpcENvbW1hbmRMaW5lIiBQcm9wZXJ0eT0iVXBkYXRlUGlwIiBWYWx1ZT0nIltQWVRIT05fRVhFXSIgLUUgLXMgLUIgLW0gZW5zdXJlcGlwLl91bmluc3RhbGwnIEV4ZWN1dGU9ImltbWVkaWF0ZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlPgorICAgICAgICAgICAgPEN1c3RvbSBBY3Rpb249IlNldFVwZGF0ZVBpcENvbW1hbmRMaW5lIiBCZWZvcmU9IlVwZGF0ZVBpcCI+KCZhbXA7RGVmYXVsdEZlYXR1cmU9MykgQU5EIE5PVCAoIURlZmF1bHRGZWF0dXJlPTMpPC9DdXN0b20+CisgICAgICAgICAgICA8Q3VzdG9tIEFjdGlvbj0iU2V0UmVtb3ZlUGlwQ29tbWFuZExpbmUiIEJlZm9yZT0iVXBkYXRlUGlwIj4oJmFtcDtEZWZhdWx0RmVhdHVyZT0yKSBBTkQgKCFEZWZhdWx0RmVhdHVyZT0zKTwvQ3VzdG9tPgorCisgICAgICAgICAgICA8Q3VzdG9tIEFjdGlvbj0iVXBkYXRlUGlwIiBCZWZvcmU9Ikluc3RhbGxGaW5hbGl6ZSI+VXBkYXRlUGlwPC9DdXN0b20+CisgICAgICAgIDwvSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3BpcC9waXBfZW4tVVMud3hsIGIvVG9vbHMvbXNpL3BpcC9waXBfZW4tVVMud3hsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkMGQ5ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvcGlwL3BpcF9lbi1VUy53eGwKQEAgLTAsMCArMSw2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5waXAgQm9vdHN0cmFwPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnREZXNjcmlwdG9yIj5waXA8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJOb1B5dGhvbiI+Tm8gIShsb2MuUHJvZHVjdE5hbWUpIGluc3RhbGxhdGlvbiB3YXMgZGV0ZWN0ZWQuPC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9zY2hlbWEucHkgYi9Ub29scy9tc2kvc2NoZW1hLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjcyZTVhLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL21zaS9zY2hlbWEucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDA3ICswLDAgQEAKLWZyb20gbXNpbGliIGltcG9ydCBUYWJsZQotCi1fVmFsaWRhdGlvbiA9IFRhYmxlKCdfVmFsaWRhdGlvbicpCi1fVmFsaWRhdGlvbi5hZGRfZmllbGQoMSwnVGFibGUnLDExNTUyKQotX1ZhbGlkYXRpb24uYWRkX2ZpZWxkKDIsJ0NvbHVtbicsMTE1NTIpCi1fVmFsaWRhdGlvbi5hZGRfZmllbGQoMywnTnVsbGFibGUnLDMzMzIpCi1fVmFsaWRhdGlvbi5hZGRfZmllbGQoNCwnTWluVmFsdWUnLDQzNTYpCi1fVmFsaWRhdGlvbi5hZGRfZmllbGQoNSwnTWF4VmFsdWUnLDQzNTYpCi1fVmFsaWRhdGlvbi5hZGRfZmllbGQoNiwnS2V5VGFibGUnLDc2NzkpCi1fVmFsaWRhdGlvbi5hZGRfZmllbGQoNywnS2V5Q29sdW1uJyw1Mzc4KQotX1ZhbGlkYXRpb24uYWRkX2ZpZWxkKDgsJ0NhdGVnb3J5Jyw3NDU2KQotX1ZhbGlkYXRpb24uYWRkX2ZpZWxkKDksJ1NldCcsNzY3OSkKLV9WYWxpZGF0aW9uLmFkZF9maWVsZCgxMCwnRGVzY3JpcHRpb24nLDc2NzkpCi0KLUFjdGlvblRleHQgPSBUYWJsZSgnQWN0aW9uVGV4dCcpCi1BY3Rpb25UZXh0LmFkZF9maWVsZCgxLCdBY3Rpb24nLDExNTkyKQotQWN0aW9uVGV4dC5hZGRfZmllbGQoMiwnRGVzY3JpcHRpb24nLDc5MzYpCi1BY3Rpb25UZXh0LmFkZF9maWVsZCgzLCdUZW1wbGF0ZScsNzkzNikKLQotQWRtaW5FeGVjdXRlU2VxdWVuY2UgPSBUYWJsZSgnQWRtaW5FeGVjdXRlU2VxdWVuY2UnKQotQWRtaW5FeGVjdXRlU2VxdWVuY2UuYWRkX2ZpZWxkKDEsJ0FjdGlvbicsMHgyREZGKQotQWRtaW5FeGVjdXRlU2VxdWVuY2UuYWRkX2ZpZWxkKDIsJ0NvbmRpdGlvbicsNzY3OSkKLUFkbWluRXhlY3V0ZVNlcXVlbmNlLmFkZF9maWVsZCgzLCdTZXF1ZW5jZScsNTM3OCkKLQotQ29uZGl0aW9uID0gVGFibGUoJ0NvbmRpdGlvbicpCi1Db25kaXRpb24uYWRkX2ZpZWxkKDEsJ0ZlYXR1cmVfJywxMTU1OCkKLUNvbmRpdGlvbi5hZGRfZmllbGQoMiwnTGV2ZWwnLDk0NzQpCi1Db25kaXRpb24uYWRkX2ZpZWxkKDMsJ0NvbmRpdGlvbicsNzY3OSkKLQotQWRtaW5VSVNlcXVlbmNlID0gVGFibGUoJ0FkbWluVUlTZXF1ZW5jZScpCi1BZG1pblVJU2VxdWVuY2UuYWRkX2ZpZWxkKDEsJ0FjdGlvbicsMHgyREZGKQotQWRtaW5VSVNlcXVlbmNlLmFkZF9maWVsZCgyLCdDb25kaXRpb24nLDc2NzkpCi1BZG1pblVJU2VxdWVuY2UuYWRkX2ZpZWxkKDMsJ1NlcXVlbmNlJyw1Mzc4KQotCi1BZHZ0RXhlY3V0ZVNlcXVlbmNlID0gVGFibGUoJ0FkdnRFeGVjdXRlU2VxdWVuY2UnKQotQWR2dEV4ZWN1dGVTZXF1ZW5jZS5hZGRfZmllbGQoMSwnQWN0aW9uJywweDJERkYpCi1BZHZ0RXhlY3V0ZVNlcXVlbmNlLmFkZF9maWVsZCgyLCdDb25kaXRpb24nLDc2NzkpCi1BZHZ0RXhlY3V0ZVNlcXVlbmNlLmFkZF9maWVsZCgzLCdTZXF1ZW5jZScsNTM3OCkKLQotQWR2dFVJU2VxdWVuY2UgPSBUYWJsZSgnQWR2dFVJU2VxdWVuY2UnKQotQWR2dFVJU2VxdWVuY2UuYWRkX2ZpZWxkKDEsJ0FjdGlvbicsMTE1OTIpCi1BZHZ0VUlTZXF1ZW5jZS5hZGRfZmllbGQoMiwnQ29uZGl0aW9uJyw3Njc5KQotQWR2dFVJU2VxdWVuY2UuYWRkX2ZpZWxkKDMsJ1NlcXVlbmNlJyw1Mzc4KQotCi1BcHBJZCA9IFRhYmxlKCdBcHBJZCcpCi1BcHBJZC5hZGRfZmllbGQoMSwnQXBwSWQnLDExNTU4KQotQXBwSWQuYWRkX2ZpZWxkKDIsJ1JlbW90ZVNlcnZlck5hbWUnLDc2NzkpCi1BcHBJZC5hZGRfZmllbGQoMywnTG9jYWxTZXJ2aWNlJyw3Njc5KQotQXBwSWQuYWRkX2ZpZWxkKDQsJ1NlcnZpY2VQYXJhbWV0ZXJzJyw3Njc5KQotQXBwSWQuYWRkX2ZpZWxkKDUsJ0RsbFN1cnJvZ2F0ZScsNzY3OSkKLUFwcElkLmFkZF9maWVsZCg2LCdBY3RpdmF0ZUF0U3RvcmFnZScsNTM3OCkKLUFwcElkLmFkZF9maWVsZCg3LCdSdW5Bc0ludGVyYWN0aXZlVXNlcicsNTM3OCkKLQotQXBwU2VhcmNoID0gVGFibGUoJ0FwcFNlYXJjaCcpCi1BcHBTZWFyY2guYWRkX2ZpZWxkKDEsJ1Byb3BlcnR5JywxMTU5MikKLUFwcFNlYXJjaC5hZGRfZmllbGQoMiwnU2lnbmF0dXJlXycsMTE1OTIpCi0KLVByb3BlcnR5ID0gVGFibGUoJ1Byb3BlcnR5JykKLVByb3BlcnR5LmFkZF9maWVsZCgxLCdQcm9wZXJ0eScsMTE1OTIpCi1Qcm9wZXJ0eS5hZGRfZmllbGQoMiwnVmFsdWUnLDM4NDApCi0KLUJCQ29udHJvbCA9IFRhYmxlKCdCQkNvbnRyb2wnKQotQkJDb250cm9sLmFkZF9maWVsZCgxLCdCaWxsYm9hcmRfJywxMTU3MCkKLUJCQ29udHJvbC5hZGRfZmllbGQoMiwnQkJDb250cm9sJywxMTU3MCkKLUJCQ29udHJvbC5hZGRfZmllbGQoMywnVHlwZScsMzM3OCkKLUJCQ29udHJvbC5hZGRfZmllbGQoNCwnWCcsMTI4MikKLUJCQ29udHJvbC5hZGRfZmllbGQoNSwnWScsMTI4MikKLUJCQ29udHJvbC5hZGRfZmllbGQoNiwnV2lkdGgnLDEyODIpCi1CQkNvbnRyb2wuYWRkX2ZpZWxkKDcsJ0hlaWdodCcsMTI4MikKLUJCQ29udHJvbC5hZGRfZmllbGQoOCwnQXR0cmlidXRlcycsNDM1NikKLUJCQ29udHJvbC5hZGRfZmllbGQoOSwnVGV4dCcsNzk4NikKLQotQmlsbGJvYXJkID0gVGFibGUoJ0JpbGxib2FyZCcpCi1CaWxsYm9hcmQuYWRkX2ZpZWxkKDEsJ0JpbGxib2FyZCcsMTE1NzApCi1CaWxsYm9hcmQuYWRkX2ZpZWxkKDIsJ0ZlYXR1cmVfJywzMzY2KQotQmlsbGJvYXJkLmFkZF9maWVsZCgzLCdBY3Rpb24nLDc0NzQpCi1CaWxsYm9hcmQuYWRkX2ZpZWxkKDQsJ09yZGVyaW5nJyw1Mzc4KQotCi1GZWF0dXJlID0gVGFibGUoJ0ZlYXR1cmUnKQotRmVhdHVyZS5hZGRfZmllbGQoMSwnRmVhdHVyZScsMTE1NTgpCi1GZWF0dXJlLmFkZF9maWVsZCgyLCdGZWF0dXJlX1BhcmVudCcsNzQ2MikKLUZlYXR1cmUuYWRkX2ZpZWxkKDMsJ1RpdGxlJyw4MDAwKQotRmVhdHVyZS5hZGRfZmllbGQoNCwnRGVzY3JpcHRpb24nLDgxOTEpCi1GZWF0dXJlLmFkZF9maWVsZCg1LCdEaXNwbGF5Jyw1Mzc4KQotRmVhdHVyZS5hZGRfZmllbGQoNiwnTGV2ZWwnLDEyODIpCi1GZWF0dXJlLmFkZF9maWVsZCg3LCdEaXJlY3RvcnlfJywweDFERkYpCi1GZWF0dXJlLmFkZF9maWVsZCg4LCdBdHRyaWJ1dGVzJywxMjgyKQotCi1CaW5hcnkgPSBUYWJsZSgnQmluYXJ5JykKLUJpbmFyeS5hZGRfZmllbGQoMSwnTmFtZScsMTE1OTIpCi1CaW5hcnkuYWRkX2ZpZWxkKDIsJ0RhdGEnLDIzMDQpCi0KLUJpbmRJbWFnZSA9IFRhYmxlKCdCaW5kSW1hZ2UnKQotQmluZEltYWdlLmFkZF9maWVsZCgxLCdGaWxlXycsMHgyREZGKQotQmluZEltYWdlLmFkZF9maWVsZCgyLCdQYXRoJyw3Njc5KQotCi1GaWxlID0gVGFibGUoJ0ZpbGUnKQotRmlsZS5hZGRfZmllbGQoMSwnRmlsZScsMHgyREZGKQotRmlsZS5hZGRfZmllbGQoMiwnQ29tcG9uZW50XycsMHhERkYpCi1GaWxlLmFkZF9maWVsZCgzLCdGaWxlTmFtZScsNDA5NSkKLUZpbGUuYWRkX2ZpZWxkKDQsJ0ZpbGVTaXplJywyNjApCi1GaWxlLmFkZF9maWVsZCg1LCdWZXJzaW9uJywweDFERkYpCi1GaWxlLmFkZF9maWVsZCg2LCdMYW5ndWFnZScsNzQ0NCkKLUZpbGUuYWRkX2ZpZWxkKDcsJ0F0dHJpYnV0ZXMnLDUzNzgpCi1GaWxlLmFkZF9maWVsZCg4LCdTZXF1ZW5jZScsMTI4MikKLQotQ0NQU2VhcmNoID0gVGFibGUoJ0NDUFNlYXJjaCcpCi1DQ1BTZWFyY2guYWRkX2ZpZWxkKDEsJ1NpZ25hdHVyZV8nLDExNTkyKQotCi1DaGVja0JveCA9IFRhYmxlKCdDaGVja0JveCcpCi1DaGVja0JveC5hZGRfZmllbGQoMSwnUHJvcGVydHknLDExNTkyKQotQ2hlY2tCb3guYWRkX2ZpZWxkKDIsJ1ZhbHVlJyw3NDg4KQotCi1DbGFzcyA9IFRhYmxlKCdDbGFzcycpCi1DbGFzcy5hZGRfZmllbGQoMSwnQ0xTSUQnLDExNTU4KQotQ2xhc3MuYWRkX2ZpZWxkKDIsJ0NvbnRleHQnLDExNTUyKQotQ2xhc3MuYWRkX2ZpZWxkKDMsJ0NvbXBvbmVudF8nLDB4MkRGRikKLUNsYXNzLmFkZF9maWVsZCg0LCdQcm9nSWRfRGVmYXVsdCcsNzY3OSkKLUNsYXNzLmFkZF9maWVsZCg1LCdEZXNjcmlwdGlvbicsODE5MSkKLUNsYXNzLmFkZF9maWVsZCg2LCdBcHBJZF8nLDc0NjIpCi1DbGFzcy5hZGRfZmllbGQoNywnRmlsZVR5cGVNYXNrJyw3Njc5KQotQ2xhc3MuYWRkX2ZpZWxkKDgsJ0ljb25fJyw3NDk2KQotQ2xhc3MuYWRkX2ZpZWxkKDksJ0ljb25JbmRleCcsNTM3OCkKLUNsYXNzLmFkZF9maWVsZCgxMCwnRGVmSW5wcm9jSGFuZGxlcicsNzQ1NikKLUNsYXNzLmFkZF9maWVsZCgxMSwnQXJndW1lbnQnLDc2NzkpCi1DbGFzcy5hZGRfZmllbGQoMTIsJ0ZlYXR1cmVfJywzMzY2KQotQ2xhc3MuYWRkX2ZpZWxkKDEzLCdBdHRyaWJ1dGVzJyw1Mzc4KQotCi1Db21wb25lbnQgPSBUYWJsZSgnQ29tcG9uZW50JykKLUNvbXBvbmVudC5hZGRfZmllbGQoMSwnQ29tcG9uZW50JywweDJERkYpCi1Db21wb25lbnQuYWRkX2ZpZWxkKDIsJ0NvbXBvbmVudElkJyw3NDYyKQotQ29tcG9uZW50LmFkZF9maWVsZCgzLCdEaXJlY3RvcnlfJywweERGRikKLUNvbXBvbmVudC5hZGRfZmllbGQoNCwnQXR0cmlidXRlcycsMTI4MikKLUNvbXBvbmVudC5hZGRfZmllbGQoNSwnQ29uZGl0aW9uJyw3Njc5KQotQ29tcG9uZW50LmFkZF9maWVsZCg2LCdLZXlQYXRoJywweDFERkYpCi0KLUljb24gPSBUYWJsZSgnSWNvbicpCi1JY29uLmFkZF9maWVsZCgxLCdOYW1lJywxMTU5MikKLUljb24uYWRkX2ZpZWxkKDIsJ0RhdGEnLDIzMDQpCi0KLVByb2dJZCA9IFRhYmxlKCdQcm9nSWQnKQotUHJvZ0lkLmFkZF9maWVsZCgxLCdQcm9nSWQnLDExNzc1KQotUHJvZ0lkLmFkZF9maWVsZCgyLCdQcm9nSWRfUGFyZW50Jyw3Njc5KQotUHJvZ0lkLmFkZF9maWVsZCgzLCdDbGFzc18nLDc0NjIpCi1Qcm9nSWQuYWRkX2ZpZWxkKDQsJ0Rlc2NyaXB0aW9uJyw4MTkxKQotUHJvZ0lkLmFkZF9maWVsZCg1LCdJY29uXycsNzQ5NikKLVByb2dJZC5hZGRfZmllbGQoNiwnSWNvbkluZGV4Jyw1Mzc4KQotCi1Db21ib0JveCA9IFRhYmxlKCdDb21ib0JveCcpCi1Db21ib0JveC5hZGRfZmllbGQoMSwnUHJvcGVydHknLDExNTkyKQotQ29tYm9Cb3guYWRkX2ZpZWxkKDIsJ09yZGVyJyw5NDc0KQotQ29tYm9Cb3guYWRkX2ZpZWxkKDMsJ1ZhbHVlJywzMzkyKQotQ29tYm9Cb3guYWRkX2ZpZWxkKDQsJ1RleHQnLDgwMDApCi0KLUNvbXBMb2NhdG9yID0gVGFibGUoJ0NvbXBMb2NhdG9yJykKLUNvbXBMb2NhdG9yLmFkZF9maWVsZCgxLCdTaWduYXR1cmVfJywxMTU5MikKLUNvbXBMb2NhdG9yLmFkZF9maWVsZCgyLCdDb21wb25lbnRJZCcsMzM2NikKLUNvbXBMb2NhdG9yLmFkZF9maWVsZCgzLCdUeXBlJyw1Mzc4KQotCi1Db21wbHVzID0gVGFibGUoJ0NvbXBsdXMnKQotQ29tcGx1cy5hZGRfZmllbGQoMSwnQ29tcG9uZW50XycsMHgyREZGKQotQ29tcGx1cy5hZGRfZmllbGQoMiwnRXhwVHlwZScsMTM1NzApCi0KLURpcmVjdG9yeSA9IFRhYmxlKCdEaXJlY3RvcnknKQotRGlyZWN0b3J5LmFkZF9maWVsZCgxLCdEaXJlY3RvcnknLDB4MkRGRikKLURpcmVjdG9yeS5hZGRfZmllbGQoMiwnRGlyZWN0b3J5X1BhcmVudCcsMHgxREZGKQotRGlyZWN0b3J5LmFkZF9maWVsZCgzLCdEZWZhdWx0RGlyJyw0MDk1KQotCi1Db250cm9sID0gVGFibGUoJ0NvbnRyb2wnKQotQ29udHJvbC5hZGRfZmllbGQoMSwnRGlhbG9nXycsMTE1OTIpCi1Db250cm9sLmFkZF9maWVsZCgyLCdDb250cm9sJywxMTU3MCkKLUNvbnRyb2wuYWRkX2ZpZWxkKDMsJ1R5cGUnLDMzNDgpCi1Db250cm9sLmFkZF9maWVsZCg0LCdYJywxMjgyKQotQ29udHJvbC5hZGRfZmllbGQoNSwnWScsMTI4MikKLUNvbnRyb2wuYWRkX2ZpZWxkKDYsJ1dpZHRoJywxMjgyKQotQ29udHJvbC5hZGRfZmllbGQoNywnSGVpZ2h0JywxMjgyKQotQ29udHJvbC5hZGRfZmllbGQoOCwnQXR0cmlidXRlcycsNDM1NikKLUNvbnRyb2wuYWRkX2ZpZWxkKDksJ1Byb3BlcnR5Jyw3NDc0KQotQ29udHJvbC5hZGRfZmllbGQoMTAsJ1RleHQnLDc5MzYpCi1Db250cm9sLmFkZF9maWVsZCgxMSwnQ29udHJvbF9OZXh0Jyw3NDc0KQotQ29udHJvbC5hZGRfZmllbGQoMTIsJ0hlbHAnLDc5ODYpCi0KLURpYWxvZyA9IFRhYmxlKCdEaWFsb2cnKQotRGlhbG9nLmFkZF9maWVsZCgxLCdEaWFsb2cnLDExNTkyKQotRGlhbG9nLmFkZF9maWVsZCgyLCdIQ2VudGVyaW5nJywxMjgyKQotRGlhbG9nLmFkZF9maWVsZCgzLCdWQ2VudGVyaW5nJywxMjgyKQotRGlhbG9nLmFkZF9maWVsZCg0LCdXaWR0aCcsMTI4MikKLURpYWxvZy5hZGRfZmllbGQoNSwnSGVpZ2h0JywxMjgyKQotRGlhbG9nLmFkZF9maWVsZCg2LCdBdHRyaWJ1dGVzJyw0MzU2KQotRGlhbG9nLmFkZF9maWVsZCg3LCdUaXRsZScsODA2NCkKLURpYWxvZy5hZGRfZmllbGQoOCwnQ29udHJvbF9GaXJzdCcsMzM3OCkKLURpYWxvZy5hZGRfZmllbGQoOSwnQ29udHJvbF9EZWZhdWx0Jyw3NDc0KQotRGlhbG9nLmFkZF9maWVsZCgxMCwnQ29udHJvbF9DYW5jZWwnLDc0NzQpCi0KLUNvbnRyb2xDb25kaXRpb24gPSBUYWJsZSgnQ29udHJvbENvbmRpdGlvbicpCi1Db250cm9sQ29uZGl0aW9uLmFkZF9maWVsZCgxLCdEaWFsb2dfJywxMTU5MikKLUNvbnRyb2xDb25kaXRpb24uYWRkX2ZpZWxkKDIsJ0NvbnRyb2xfJywxMTU3MCkKLUNvbnRyb2xDb25kaXRpb24uYWRkX2ZpZWxkKDMsJ0FjdGlvbicsMTE1NzApCi1Db250cm9sQ29uZGl0aW9uLmFkZF9maWVsZCg0LCdDb25kaXRpb24nLDExNzc1KQotCi1Db250cm9sRXZlbnQgPSBUYWJsZSgnQ29udHJvbEV2ZW50JykKLUNvbnRyb2xFdmVudC5hZGRfZmllbGQoMSwnRGlhbG9nXycsMTE1OTIpCi1Db250cm9sRXZlbnQuYWRkX2ZpZWxkKDIsJ0NvbnRyb2xfJywxMTU3MCkKLUNvbnRyb2xFdmVudC5hZGRfZmllbGQoMywnRXZlbnQnLDExNTcwKQotQ29udHJvbEV2ZW50LmFkZF9maWVsZCg0LCdBcmd1bWVudCcsMTE3NzUpCi1Db250cm9sRXZlbnQuYWRkX2ZpZWxkKDUsJ0NvbmRpdGlvbicsMTU4NzEpCi1Db250cm9sRXZlbnQuYWRkX2ZpZWxkKDYsJ09yZGVyaW5nJyw1Mzc4KQotCi1DcmVhdGVGb2xkZXIgPSBUYWJsZSgnQ3JlYXRlRm9sZGVyJykKLUNyZWF0ZUZvbGRlci5hZGRfZmllbGQoMSwnRGlyZWN0b3J5XycsMHgyREZGKQotQ3JlYXRlRm9sZGVyLmFkZF9maWVsZCgyLCdDb21wb25lbnRfJywweDJERkYpCi0KLUN1c3RvbUFjdGlvbiA9IFRhYmxlKCdDdXN0b21BY3Rpb24nKQotQ3VzdG9tQWN0aW9uLmFkZF9maWVsZCgxLCdBY3Rpb24nLDB4MkRGRikKLUN1c3RvbUFjdGlvbi5hZGRfZmllbGQoMiwnVHlwZScsMTI4MikKLUN1c3RvbUFjdGlvbi5hZGRfZmllbGQoMywnU291cmNlJywweDFERkYpCi1DdXN0b21BY3Rpb24uYWRkX2ZpZWxkKDQsJ1RhcmdldCcsNzY3OSkKLQotRHJMb2NhdG9yID0gVGFibGUoJ0RyTG9jYXRvcicpCi1EckxvY2F0b3IuYWRkX2ZpZWxkKDEsJ1NpZ25hdHVyZV8nLDExNTkyKQotRHJMb2NhdG9yLmFkZF9maWVsZCgyLCdQYXJlbnQnLDE1Njg4KQotRHJMb2NhdG9yLmFkZF9maWVsZCgzLCdQYXRoJywxNTg3MSkKLURyTG9jYXRvci5hZGRfZmllbGQoNCwnRGVwdGgnLDUzNzgpCi0KLUR1cGxpY2F0ZUZpbGUgPSBUYWJsZSgnRHVwbGljYXRlRmlsZScpCi1EdXBsaWNhdGVGaWxlLmFkZF9maWVsZCgxLCdGaWxlS2V5JywxMTU5MikKLUR1cGxpY2F0ZUZpbGUuYWRkX2ZpZWxkKDIsJ0NvbXBvbmVudF8nLDB4REZGKQotRHVwbGljYXRlRmlsZS5hZGRfZmllbGQoMywnRmlsZV8nLDB4REZGKQotRHVwbGljYXRlRmlsZS5hZGRfZmllbGQoNCwnRGVzdE5hbWUnLDgxOTEpCi1EdXBsaWNhdGVGaWxlLmFkZF9maWVsZCg1LCdEZXN0Rm9sZGVyJyw3NDk2KQotCi1FbnZpcm9ubWVudCA9IFRhYmxlKCdFbnZpcm9ubWVudCcpCi1FbnZpcm9ubWVudC5hZGRfZmllbGQoMSwnRW52aXJvbm1lbnQnLDExNTkyKQotRW52aXJvbm1lbnQuYWRkX2ZpZWxkKDIsJ05hbWUnLDQwOTUpCi1FbnZpcm9ubWVudC5hZGRfZmllbGQoMywnVmFsdWUnLDgxOTEpCi1FbnZpcm9ubWVudC5hZGRfZmllbGQoNCwnQ29tcG9uZW50XycsMHhERkYpCi0KLUVycm9yID0gVGFibGUoJ0Vycm9yJykKLUVycm9yLmFkZF9maWVsZCgxLCdFcnJvcicsOTQ3NCkKLUVycm9yLmFkZF9maWVsZCgyLCdNZXNzYWdlJyw3OTM2KQotCi1FdmVudE1hcHBpbmcgPSBUYWJsZSgnRXZlbnRNYXBwaW5nJykKLUV2ZW50TWFwcGluZy5hZGRfZmllbGQoMSwnRGlhbG9nXycsMTE1OTIpCi1FdmVudE1hcHBpbmcuYWRkX2ZpZWxkKDIsJ0NvbnRyb2xfJywxMTU3MCkKLUV2ZW50TWFwcGluZy5hZGRfZmllbGQoMywnRXZlbnQnLDExNTcwKQotRXZlbnRNYXBwaW5nLmFkZF9maWVsZCg0LCdBdHRyaWJ1dGUnLDMzNzgpCi0KLUV4dGVuc2lvbiA9IFRhYmxlKCdFeHRlbnNpb24nKQotRXh0ZW5zaW9uLmFkZF9maWVsZCgxLCdFeHRlbnNpb24nLDExNzc1KQotRXh0ZW5zaW9uLmFkZF9maWVsZCgyLCdDb21wb25lbnRfJywweDJERkYpCi1FeHRlbnNpb24uYWRkX2ZpZWxkKDMsJ1Byb2dJZF8nLDc2NzkpCi1FeHRlbnNpb24uYWRkX2ZpZWxkKDQsJ01JTUVfJyw3NDg4KQotRXh0ZW5zaW9uLmFkZF9maWVsZCg1LCdGZWF0dXJlXycsMzM2NikKLQotTUlNRSA9IFRhYmxlKCdNSU1FJykKLU1JTUUuYWRkX2ZpZWxkKDEsJ0NvbnRlbnRUeXBlJywxMTU4NCkKLU1JTUUuYWRkX2ZpZWxkKDIsJ0V4dGVuc2lvbl8nLDM1ODMpCi1NSU1FLmFkZF9maWVsZCgzLCdDTFNJRCcsNzQ2MikKLQotRmVhdHVyZUNvbXBvbmVudHMgPSBUYWJsZSgnRmVhdHVyZUNvbXBvbmVudHMnKQotRmVhdHVyZUNvbXBvbmVudHMuYWRkX2ZpZWxkKDEsJ0ZlYXR1cmVfJywxMTU1OCkKLUZlYXR1cmVDb21wb25lbnRzLmFkZF9maWVsZCgyLCdDb21wb25lbnRfJywweDJERkYpCi0KLUZpbGVTRlBDYXRhbG9nID0gVGFibGUoJ0ZpbGVTRlBDYXRhbG9nJykKLUZpbGVTRlBDYXRhbG9nLmFkZF9maWVsZCgxLCdGaWxlXycsMHgyREZGKQotRmlsZVNGUENhdGFsb2cuYWRkX2ZpZWxkKDIsJ1NGUENhdGFsb2dfJywxMTc3NSkKLQotU0ZQQ2F0YWxvZyA9IFRhYmxlKCdTRlBDYXRhbG9nJykKLVNGUENhdGFsb2cuYWRkX2ZpZWxkKDEsJ1NGUENhdGFsb2cnLDExNzc1KQotU0ZQQ2F0YWxvZy5hZGRfZmllbGQoMiwnQ2F0YWxvZycsMjMwNCkKLVNGUENhdGFsb2cuYWRkX2ZpZWxkKDMsJ0RlcGVuZGVuY3knLDc0MjQpCi0KLUZvbnQgPSBUYWJsZSgnRm9udCcpCi1Gb250LmFkZF9maWVsZCgxLCdGaWxlXycsMHgyREZGKQotRm9udC5hZGRfZmllbGQoMiwnRm9udFRpdGxlJyw3NTUyKQotCi1JbmlGaWxlID0gVGFibGUoJ0luaUZpbGUnKQotSW5pRmlsZS5hZGRfZmllbGQoMSwnSW5pRmlsZScsMTE1OTIpCi1JbmlGaWxlLmFkZF9maWVsZCgyLCdGaWxlTmFtZScsNDA5NSkKLUluaUZpbGUuYWRkX2ZpZWxkKDMsJ0RpclByb3BlcnR5Jyw3NDk2KQotSW5pRmlsZS5hZGRfZmllbGQoNCwnU2VjdGlvbicsMzkzNikKLUluaUZpbGUuYWRkX2ZpZWxkKDUsJ0tleScsMzk2OCkKLUluaUZpbGUuYWRkX2ZpZWxkKDYsJ1ZhbHVlJyw0MDk1KQotSW5pRmlsZS5hZGRfZmllbGQoNywnQWN0aW9uJywxMjgyKQotSW5pRmlsZS5hZGRfZmllbGQoOCwnQ29tcG9uZW50XycsMHhERkYpCi0KLUluaUxvY2F0b3IgPSBUYWJsZSgnSW5pTG9jYXRvcicpCi1JbmlMb2NhdG9yLmFkZF9maWVsZCgxLCdTaWduYXR1cmVfJywxMTU5MikKLUluaUxvY2F0b3IuYWRkX2ZpZWxkKDIsJ0ZpbGVOYW1lJywzNTgzKQotSW5pTG9jYXRvci5hZGRfZmllbGQoMywnU2VjdGlvbicsMzQyNCkKLUluaUxvY2F0b3IuYWRkX2ZpZWxkKDQsJ0tleScsMzQ1NikKLUluaUxvY2F0b3IuYWRkX2ZpZWxkKDUsJ0ZpZWxkJyw1Mzc4KQotSW5pTG9jYXRvci5hZGRfZmllbGQoNiwnVHlwZScsNTM3OCkKLQotSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZSA9IFRhYmxlKCdJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlJykKLUluc3RhbGxFeGVjdXRlU2VxdWVuY2UuYWRkX2ZpZWxkKDEsJ0FjdGlvbicsMHgyREZGKQotSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZS5hZGRfZmllbGQoMiwnQ29uZGl0aW9uJyw3Njc5KQotSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZS5hZGRfZmllbGQoMywnU2VxdWVuY2UnLDUzNzgpCi0KLUluc3RhbGxVSVNlcXVlbmNlID0gVGFibGUoJ0luc3RhbGxVSVNlcXVlbmNlJykKLUluc3RhbGxVSVNlcXVlbmNlLmFkZF9maWVsZCgxLCdBY3Rpb24nLDB4MkRGRikKLUluc3RhbGxVSVNlcXVlbmNlLmFkZF9maWVsZCgyLCdDb25kaXRpb24nLDc2NzkpCi1JbnN0YWxsVUlTZXF1ZW5jZS5hZGRfZmllbGQoMywnU2VxdWVuY2UnLDUzNzgpCi0KLUlzb2xhdGVkQ29tcG9uZW50ID0gVGFibGUoJ0lzb2xhdGVkQ29tcG9uZW50JykKLUlzb2xhdGVkQ29tcG9uZW50LmFkZF9maWVsZCgxLCdDb21wb25lbnRfU2hhcmVkJywweDJERkYpCi1Jc29sYXRlZENvbXBvbmVudC5hZGRfZmllbGQoMiwnQ29tcG9uZW50X0FwcGxpY2F0aW9uJywweDJERkYpCi0KLUxhdW5jaENvbmRpdGlvbiA9IFRhYmxlKCdMYXVuY2hDb25kaXRpb24nKQotTGF1bmNoQ29uZGl0aW9uLmFkZF9maWVsZCgxLCdDb25kaXRpb24nLDExNzc1KQotTGF1bmNoQ29uZGl0aW9uLmFkZF9maWVsZCgyLCdEZXNjcmlwdGlvbicsNDA5NSkKLQotTGlzdEJveCA9IFRhYmxlKCdMaXN0Qm94JykKLUxpc3RCb3guYWRkX2ZpZWxkKDEsJ1Byb3BlcnR5JywxMTU5MikKLUxpc3RCb3guYWRkX2ZpZWxkKDIsJ09yZGVyJyw5NDc0KQotTGlzdEJveC5hZGRfZmllbGQoMywnVmFsdWUnLDMzOTIpCi1MaXN0Qm94LmFkZF9maWVsZCg0LCdUZXh0Jyw4MDAwKQotCi1MaXN0VmlldyA9IFRhYmxlKCdMaXN0VmlldycpCi1MaXN0Vmlldy5hZGRfZmllbGQoMSwnUHJvcGVydHknLDExNTkyKQotTGlzdFZpZXcuYWRkX2ZpZWxkKDIsJ09yZGVyJyw5NDc0KQotTGlzdFZpZXcuYWRkX2ZpZWxkKDMsJ1ZhbHVlJywzMzkyKQotTGlzdFZpZXcuYWRkX2ZpZWxkKDQsJ1RleHQnLDgwMDApCi1MaXN0Vmlldy5hZGRfZmllbGQoNSwnQmluYXJ5XycsNzQ5NikKLQotTG9ja1Blcm1pc3Npb25zID0gVGFibGUoJ0xvY2tQZXJtaXNzaW9ucycpCi1Mb2NrUGVybWlzc2lvbnMuYWRkX2ZpZWxkKDEsJ0xvY2tPYmplY3QnLDExNTkyKQotTG9ja1Blcm1pc3Npb25zLmFkZF9maWVsZCgyLCdUYWJsZScsMTE1NTIpCi1Mb2NrUGVybWlzc2lvbnMuYWRkX2ZpZWxkKDMsJ0RvbWFpbicsMTU4NzEpCi1Mb2NrUGVybWlzc2lvbnMuYWRkX2ZpZWxkKDQsJ1VzZXInLDExNzc1KQotTG9ja1Blcm1pc3Npb25zLmFkZF9maWVsZCg1LCdQZXJtaXNzaW9uJyw0MzU2KQotCi1NZWRpYSA9IFRhYmxlKCdNZWRpYScpCi1NZWRpYS5hZGRfZmllbGQoMSwnRGlza0lkJyw5NDc0KQotTWVkaWEuYWRkX2ZpZWxkKDIsJ0xhc3RTZXF1ZW5jZScsMTI4MikKLU1lZGlhLmFkZF9maWVsZCgzLCdEaXNrUHJvbXB0Jyw4MDAwKQotTWVkaWEuYWRkX2ZpZWxkKDQsJ0NhYmluZXQnLDc2NzkpCi1NZWRpYS5hZGRfZmllbGQoNSwnVm9sdW1lTGFiZWwnLDc0NTYpCi1NZWRpYS5hZGRfZmllbGQoNiwnU291cmNlJyw3NDk2KQotCi1Nb3ZlRmlsZSA9IFRhYmxlKCdNb3ZlRmlsZScpCi1Nb3ZlRmlsZS5hZGRfZmllbGQoMSwnRmlsZUtleScsMTE1OTIpCi1Nb3ZlRmlsZS5hZGRfZmllbGQoMiwnQ29tcG9uZW50XycsMHhERkYpCi1Nb3ZlRmlsZS5hZGRfZmllbGQoMywnU291cmNlTmFtZScsODE5MSkKLU1vdmVGaWxlLmFkZF9maWVsZCg0LCdEZXN0TmFtZScsODE5MSkKLU1vdmVGaWxlLmFkZF9maWVsZCg1LCdTb3VyY2VGb2xkZXInLDc0OTYpCi1Nb3ZlRmlsZS5hZGRfZmllbGQoNiwnRGVzdEZvbGRlcicsMzQwMCkKLU1vdmVGaWxlLmFkZF9maWVsZCg3LCdPcHRpb25zJywxMjgyKQotCi1Nc2lBc3NlbWJseSA9IFRhYmxlKCdNc2lBc3NlbWJseScpCi1Nc2lBc3NlbWJseS5hZGRfZmllbGQoMSwnQ29tcG9uZW50XycsMHgyREZGKQotTXNpQXNzZW1ibHkuYWRkX2ZpZWxkKDIsJ0ZlYXR1cmVfJywzMzY2KQotTXNpQXNzZW1ibHkuYWRkX2ZpZWxkKDMsJ0ZpbGVfTWFuaWZlc3QnLDB4MURGRikKLU1zaUFzc2VtYmx5LmFkZF9maWVsZCg0LCdGaWxlX0FwcGxpY2F0aW9uJywweDFERkYpCi1Nc2lBc3NlbWJseS5hZGRfZmllbGQoNSwnQXR0cmlidXRlcycsNTM3OCkKLQotTXNpQXNzZW1ibHlOYW1lID0gVGFibGUoJ01zaUFzc2VtYmx5TmFtZScpCi1Nc2lBc3NlbWJseU5hbWUuYWRkX2ZpZWxkKDEsJ0NvbXBvbmVudF8nLDB4MkRGRikKLU1zaUFzc2VtYmx5TmFtZS5hZGRfZmllbGQoMiwnTmFtZScsMTE3NzUpCi1Nc2lBc3NlbWJseU5hbWUuYWRkX2ZpZWxkKDMsJ1ZhbHVlJywzNTgzKQotCi1Nc2lEaWdpdGFsQ2VydGlmaWNhdGUgPSBUYWJsZSgnTXNpRGlnaXRhbENlcnRpZmljYXRlJykKLU1zaURpZ2l0YWxDZXJ0aWZpY2F0ZS5hZGRfZmllbGQoMSwnRGlnaXRhbENlcnRpZmljYXRlJywxMTU5MikKLU1zaURpZ2l0YWxDZXJ0aWZpY2F0ZS5hZGRfZmllbGQoMiwnQ2VydERhdGEnLDIzMDQpCi0KLU1zaURpZ2l0YWxTaWduYXR1cmUgPSBUYWJsZSgnTXNpRGlnaXRhbFNpZ25hdHVyZScpCi1Nc2lEaWdpdGFsU2lnbmF0dXJlLmFkZF9maWVsZCgxLCdUYWJsZScsMTE1NTIpCi1Nc2lEaWdpdGFsU2lnbmF0dXJlLmFkZF9maWVsZCgyLCdTaWduT2JqZWN0JywxMTU5MikKLU1zaURpZ2l0YWxTaWduYXR1cmUuYWRkX2ZpZWxkKDMsJ0RpZ2l0YWxDZXJ0aWZpY2F0ZV8nLDM0MDApCi1Nc2lEaWdpdGFsU2lnbmF0dXJlLmFkZF9maWVsZCg0LCdIYXNoJyw2NDAwKQotCi1Nc2lGaWxlSGFzaCA9IFRhYmxlKCdNc2lGaWxlSGFzaCcpCi1Nc2lGaWxlSGFzaC5hZGRfZmllbGQoMSwnRmlsZV8nLDB4MkRGRikKLU1zaUZpbGVIYXNoLmFkZF9maWVsZCgyLCdPcHRpb25zJywxMjgyKQotTXNpRmlsZUhhc2guYWRkX2ZpZWxkKDMsJ0hhc2hQYXJ0MScsMjYwKQotTXNpRmlsZUhhc2guYWRkX2ZpZWxkKDQsJ0hhc2hQYXJ0MicsMjYwKQotTXNpRmlsZUhhc2guYWRkX2ZpZWxkKDUsJ0hhc2hQYXJ0MycsMjYwKQotTXNpRmlsZUhhc2guYWRkX2ZpZWxkKDYsJ0hhc2hQYXJ0NCcsMjYwKQotCi1Nc2lQYXRjaEhlYWRlcnMgPSBUYWJsZSgnTXNpUGF0Y2hIZWFkZXJzJykKLU1zaVBhdGNoSGVhZGVycy5hZGRfZmllbGQoMSwnU3RyZWFtUmVmJywxMTU1OCkKLU1zaVBhdGNoSGVhZGVycy5hZGRfZmllbGQoMiwnSGVhZGVyJywyMzA0KQotCi1PREJDQXR0cmlidXRlID0gVGFibGUoJ09EQkNBdHRyaWJ1dGUnKQotT0RCQ0F0dHJpYnV0ZS5hZGRfZmllbGQoMSwnRHJpdmVyXycsMTE1OTIpCi1PREJDQXR0cmlidXRlLmFkZF9maWVsZCgyLCdBdHRyaWJ1dGUnLDExNTYwKQotT0RCQ0F0dHJpYnV0ZS5hZGRfZmllbGQoMywnVmFsdWUnLDgxOTEpCi0KLU9EQkNEcml2ZXIgPSBUYWJsZSgnT0RCQ0RyaXZlcicpCi1PREJDRHJpdmVyLmFkZF9maWVsZCgxLCdEcml2ZXInLDExNTkyKQotT0RCQ0RyaXZlci5hZGRfZmllbGQoMiwnQ29tcG9uZW50XycsMHhERkYpCi1PREJDRHJpdmVyLmFkZF9maWVsZCgzLCdEZXNjcmlwdGlvbicsMzU4MykKLU9EQkNEcml2ZXIuYWRkX2ZpZWxkKDQsJ0ZpbGVfJywweERGRikKLU9EQkNEcml2ZXIuYWRkX2ZpZWxkKDUsJ0ZpbGVfU2V0dXAnLDB4MURGRikKLQotT0RCQ0RhdGFTb3VyY2UgPSBUYWJsZSgnT0RCQ0RhdGFTb3VyY2UnKQotT0RCQ0RhdGFTb3VyY2UuYWRkX2ZpZWxkKDEsJ0RhdGFTb3VyY2UnLDB4MkRGRikKLU9EQkNEYXRhU291cmNlLmFkZF9maWVsZCgyLCdDb21wb25lbnRfJywweERGRikKLU9EQkNEYXRhU291cmNlLmFkZF9maWVsZCgzLCdEZXNjcmlwdGlvbicsMzU4MykKLU9EQkNEYXRhU291cmNlLmFkZF9maWVsZCg0LCdEcml2ZXJEZXNjcmlwdGlvbicsMzU4MykKLU9EQkNEYXRhU291cmNlLmFkZF9maWVsZCg1LCdSZWdpc3RyYXRpb24nLDEyODIpCi0KLU9EQkNTb3VyY2VBdHRyaWJ1dGUgPSBUYWJsZSgnT0RCQ1NvdXJjZUF0dHJpYnV0ZScpCi1PREJDU291cmNlQXR0cmlidXRlLmFkZF9maWVsZCgxLCdEYXRhU291cmNlXycsMTE1OTIpCi1PREJDU291cmNlQXR0cmlidXRlLmFkZF9maWVsZCgyLCdBdHRyaWJ1dGUnLDExNTUyKQotT0RCQ1NvdXJjZUF0dHJpYnV0ZS5hZGRfZmllbGQoMywnVmFsdWUnLDgxOTEpCi0KLU9EQkNUcmFuc2xhdG9yID0gVGFibGUoJ09EQkNUcmFuc2xhdG9yJykKLU9EQkNUcmFuc2xhdG9yLmFkZF9maWVsZCgxLCdUcmFuc2xhdG9yJywxMTU5MikKLU9EQkNUcmFuc2xhdG9yLmFkZF9maWVsZCgyLCdDb21wb25lbnRfJywweERGRikKLU9EQkNUcmFuc2xhdG9yLmFkZF9maWVsZCgzLCdEZXNjcmlwdGlvbicsMzU4MykKLU9EQkNUcmFuc2xhdG9yLmFkZF9maWVsZCg0LCdGaWxlXycsMHhERkYpCi1PREJDVHJhbnNsYXRvci5hZGRfZmllbGQoNSwnRmlsZV9TZXR1cCcsMHgxREZGKQotCi1QYXRjaCA9IFRhYmxlKCdQYXRjaCcpCi1QYXRjaC5hZGRfZmllbGQoMSwnRmlsZV8nLDExNTkyKQotUGF0Y2guYWRkX2ZpZWxkKDIsJ1NlcXVlbmNlJyw5NDc0KQotUGF0Y2guYWRkX2ZpZWxkKDMsJ1BhdGNoU2l6ZScsMjYwKQotUGF0Y2guYWRkX2ZpZWxkKDQsJ0F0dHJpYnV0ZXMnLDEyODIpCi1QYXRjaC5hZGRfZmllbGQoNSwnSGVhZGVyJyw2NDAwKQotUGF0Y2guYWRkX2ZpZWxkKDYsJ1N0cmVhbVJlZl8nLDc0NjIpCi0KLVBhdGNoUGFja2FnZSA9IFRhYmxlKCdQYXRjaFBhY2thZ2UnKQotUGF0Y2hQYWNrYWdlLmFkZF9maWVsZCgxLCdQYXRjaElkJywxMTU1OCkKLVBhdGNoUGFja2FnZS5hZGRfZmllbGQoMiwnTWVkaWFfJywxMjgyKQotCi1QdWJsaXNoQ29tcG9uZW50ID0gVGFibGUoJ1B1Ymxpc2hDb21wb25lbnQnKQotUHVibGlzaENvbXBvbmVudC5hZGRfZmllbGQoMSwnQ29tcG9uZW50SWQnLDExNTU4KQotUHVibGlzaENvbXBvbmVudC5hZGRfZmllbGQoMiwnUXVhbGlmaWVyJywxMTc3NSkKLVB1Ymxpc2hDb21wb25lbnQuYWRkX2ZpZWxkKDMsJ0NvbXBvbmVudF8nLDB4MkRGRikKLVB1Ymxpc2hDb21wb25lbnQuYWRkX2ZpZWxkKDQsJ0FwcERhdGEnLDgxOTEpCi1QdWJsaXNoQ29tcG9uZW50LmFkZF9maWVsZCg1LCdGZWF0dXJlXycsMzM2NikKLQotUmFkaW9CdXR0b24gPSBUYWJsZSgnUmFkaW9CdXR0b24nKQotUmFkaW9CdXR0b24uYWRkX2ZpZWxkKDEsJ1Byb3BlcnR5JywxMTU5MikKLVJhZGlvQnV0dG9uLmFkZF9maWVsZCgyLCdPcmRlcicsOTQ3NCkKLVJhZGlvQnV0dG9uLmFkZF9maWVsZCgzLCdWYWx1ZScsMzM5MikKLVJhZGlvQnV0dG9uLmFkZF9maWVsZCg0LCdYJywxMjgyKQotUmFkaW9CdXR0b24uYWRkX2ZpZWxkKDUsJ1knLDEyODIpCi1SYWRpb0J1dHRvbi5hZGRfZmllbGQoNiwnV2lkdGgnLDEyODIpCi1SYWRpb0J1dHRvbi5hZGRfZmllbGQoNywnSGVpZ2h0JywxMjgyKQotUmFkaW9CdXR0b24uYWRkX2ZpZWxkKDgsJ1RleHQnLDgwMDApCi1SYWRpb0J1dHRvbi5hZGRfZmllbGQoOSwnSGVscCcsNzk4NikKLQotUmVnaXN0cnkgPSBUYWJsZSgnUmVnaXN0cnknKQotUmVnaXN0cnkuYWRkX2ZpZWxkKDEsJ1JlZ2lzdHJ5JywweDJERkYpCi1SZWdpc3RyeS5hZGRfZmllbGQoMiwnUm9vdCcsMTI4MikKLVJlZ2lzdHJ5LmFkZF9maWVsZCgzLCdLZXknLDQwOTUpCi1SZWdpc3RyeS5hZGRfZmllbGQoNCwnTmFtZScsODE5MSkKLVJlZ2lzdHJ5LmFkZF9maWVsZCg1LCdWYWx1ZScsNzkzNikKLVJlZ2lzdHJ5LmFkZF9maWVsZCg2LCdDb21wb25lbnRfJywweERGRikKLQotUmVnTG9jYXRvciA9IFRhYmxlKCdSZWdMb2NhdG9yJykKLVJlZ0xvY2F0b3IuYWRkX2ZpZWxkKDEsJ1NpZ25hdHVyZV8nLDExNTkyKQotUmVnTG9jYXRvci5hZGRfZmllbGQoMiwnUm9vdCcsMTI4MikKLVJlZ0xvY2F0b3IuYWRkX2ZpZWxkKDMsJ0tleScsMzU4MykKLVJlZ0xvY2F0b3IuYWRkX2ZpZWxkKDQsJ05hbWUnLDc2NzkpCi1SZWdMb2NhdG9yLmFkZF9maWVsZCg1LCdUeXBlJyw1Mzc4KQotCi1SZW1vdmVGaWxlID0gVGFibGUoJ1JlbW92ZUZpbGUnKQotUmVtb3ZlRmlsZS5hZGRfZmllbGQoMSwnRmlsZUtleScsMTE1OTIpCi1SZW1vdmVGaWxlLmFkZF9maWVsZCgyLCdDb21wb25lbnRfJywweERGRikKLVJlbW92ZUZpbGUuYWRkX2ZpZWxkKDMsJ0ZpbGVOYW1lJyw4MTkxKQotUmVtb3ZlRmlsZS5hZGRfZmllbGQoNCwnRGlyUHJvcGVydHknLDM0MDApCi1SZW1vdmVGaWxlLmFkZF9maWVsZCg1LCdJbnN0YWxsTW9kZScsMTI4MikKLQotUmVtb3ZlSW5pRmlsZSA9IFRhYmxlKCdSZW1vdmVJbmlGaWxlJykKLVJlbW92ZUluaUZpbGUuYWRkX2ZpZWxkKDEsJ1JlbW92ZUluaUZpbGUnLDExNTkyKQotUmVtb3ZlSW5pRmlsZS5hZGRfZmllbGQoMiwnRmlsZU5hbWUnLDQwOTUpCi1SZW1vdmVJbmlGaWxlLmFkZF9maWVsZCgzLCdEaXJQcm9wZXJ0eScsNzQ5NikKLVJlbW92ZUluaUZpbGUuYWRkX2ZpZWxkKDQsJ1NlY3Rpb24nLDM5MzYpCi1SZW1vdmVJbmlGaWxlLmFkZF9maWVsZCg1LCdLZXknLDM5NjgpCi1SZW1vdmVJbmlGaWxlLmFkZF9maWVsZCg2LCdWYWx1ZScsODE5MSkKLVJlbW92ZUluaUZpbGUuYWRkX2ZpZWxkKDcsJ0FjdGlvbicsMTI4MikKLVJlbW92ZUluaUZpbGUuYWRkX2ZpZWxkKDgsJ0NvbXBvbmVudF8nLDB4REZGKQotCi1SZW1vdmVSZWdpc3RyeSA9IFRhYmxlKCdSZW1vdmVSZWdpc3RyeScpCi1SZW1vdmVSZWdpc3RyeS5hZGRfZmllbGQoMSwnUmVtb3ZlUmVnaXN0cnknLDExNTkyKQotUmVtb3ZlUmVnaXN0cnkuYWRkX2ZpZWxkKDIsJ1Jvb3QnLDEyODIpCi1SZW1vdmVSZWdpc3RyeS5hZGRfZmllbGQoMywnS2V5Jyw0MDk1KQotUmVtb3ZlUmVnaXN0cnkuYWRkX2ZpZWxkKDQsJ05hbWUnLDgxOTEpCi1SZW1vdmVSZWdpc3RyeS5hZGRfZmllbGQoNSwnQ29tcG9uZW50XycsMHhERkYpCi0KLVJlc2VydmVDb3N0ID0gVGFibGUoJ1Jlc2VydmVDb3N0JykKLVJlc2VydmVDb3N0LmFkZF9maWVsZCgxLCdSZXNlcnZlS2V5JywxMTU5MikKLVJlc2VydmVDb3N0LmFkZF9maWVsZCgyLCdDb21wb25lbnRfJywweERGRikKLVJlc2VydmVDb3N0LmFkZF9maWVsZCgzLCdSZXNlcnZlRm9sZGVyJyw3NDk2KQotUmVzZXJ2ZUNvc3QuYWRkX2ZpZWxkKDQsJ1Jlc2VydmVMb2NhbCcsMjYwKQotUmVzZXJ2ZUNvc3QuYWRkX2ZpZWxkKDUsJ1Jlc2VydmVTb3VyY2UnLDI2MCkKLQotU2VsZlJlZyA9IFRhYmxlKCdTZWxmUmVnJykKLVNlbGZSZWcuYWRkX2ZpZWxkKDEsJ0ZpbGVfJywweDJERkYpCi1TZWxmUmVnLmFkZF9maWVsZCgyLCdDb3N0Jyw1Mzc4KQotCi1TZXJ2aWNlQ29udHJvbCA9IFRhYmxlKCdTZXJ2aWNlQ29udHJvbCcpCi1TZXJ2aWNlQ29udHJvbC5hZGRfZmllbGQoMSwnU2VydmljZUNvbnRyb2wnLDExNTkyKQotU2VydmljZUNvbnRyb2wuYWRkX2ZpZWxkKDIsJ05hbWUnLDQwOTUpCi1TZXJ2aWNlQ29udHJvbC5hZGRfZmllbGQoMywnRXZlbnQnLDEyODIpCi1TZXJ2aWNlQ29udHJvbC5hZGRfZmllbGQoNCwnQXJndW1lbnRzJyw4MTkxKQotU2VydmljZUNvbnRyb2wuYWRkX2ZpZWxkKDUsJ1dhaXQnLDUzNzgpCi1TZXJ2aWNlQ29udHJvbC5hZGRfZmllbGQoNiwnQ29tcG9uZW50XycsMHhERkYpCi0KLVNlcnZpY2VJbnN0YWxsID0gVGFibGUoJ1NlcnZpY2VJbnN0YWxsJykKLVNlcnZpY2VJbnN0YWxsLmFkZF9maWVsZCgxLCdTZXJ2aWNlSW5zdGFsbCcsMTE1OTIpCi1TZXJ2aWNlSW5zdGFsbC5hZGRfZmllbGQoMiwnTmFtZScsMzU4MykKLVNlcnZpY2VJbnN0YWxsLmFkZF9maWVsZCgzLCdEaXNwbGF5TmFtZScsODE5MSkKLVNlcnZpY2VJbnN0YWxsLmFkZF9maWVsZCg0LCdTZXJ2aWNlVHlwZScsMjYwKQotU2VydmljZUluc3RhbGwuYWRkX2ZpZWxkKDUsJ1N0YXJ0VHlwZScsMjYwKQotU2VydmljZUluc3RhbGwuYWRkX2ZpZWxkKDYsJ0Vycm9yQ29udHJvbCcsMjYwKQotU2VydmljZUluc3RhbGwuYWRkX2ZpZWxkKDcsJ0xvYWRPcmRlckdyb3VwJyw3Njc5KQotU2VydmljZUluc3RhbGwuYWRkX2ZpZWxkKDgsJ0RlcGVuZGVuY2llcycsNzY3OSkKLVNlcnZpY2VJbnN0YWxsLmFkZF9maWVsZCg5LCdTdGFydE5hbWUnLDc2NzkpCi1TZXJ2aWNlSW5zdGFsbC5hZGRfZmllbGQoMTAsJ1Bhc3N3b3JkJyw3Njc5KQotU2VydmljZUluc3RhbGwuYWRkX2ZpZWxkKDExLCdBcmd1bWVudHMnLDc2NzkpCi1TZXJ2aWNlSW5zdGFsbC5hZGRfZmllbGQoMTIsJ0NvbXBvbmVudF8nLDB4REZGKQotU2VydmljZUluc3RhbGwuYWRkX2ZpZWxkKDEzLCdEZXNjcmlwdGlvbicsODE5MSkKLQotU2hvcnRjdXQgPSBUYWJsZSgnU2hvcnRjdXQnKQotU2hvcnRjdXQuYWRkX2ZpZWxkKDEsJ1Nob3J0Y3V0JywxMTU5MikKLVNob3J0Y3V0LmFkZF9maWVsZCgyLCdEaXJlY3RvcnlfJywweERGRikKLVNob3J0Y3V0LmFkZF9maWVsZCgzLCdOYW1lJywzOTY4KQotU2hvcnRjdXQuYWRkX2ZpZWxkKDQsJ0NvbXBvbmVudF8nLDB4REZGKQotU2hvcnRjdXQuYWRkX2ZpZWxkKDUsJ1RhcmdldCcsMzQwMCkKLVNob3J0Y3V0LmFkZF9maWVsZCg2LCdBcmd1bWVudHMnLDc2NzkpCi1TaG9ydGN1dC5hZGRfZmllbGQoNywnRGVzY3JpcHRpb24nLDgxOTEpCi1TaG9ydGN1dC5hZGRfZmllbGQoOCwnSG90a2V5Jyw1Mzc4KQotU2hvcnRjdXQuYWRkX2ZpZWxkKDksJ0ljb25fJyw3NDk2KQotU2hvcnRjdXQuYWRkX2ZpZWxkKDEwLCdJY29uSW5kZXgnLDUzNzgpCi1TaG9ydGN1dC5hZGRfZmllbGQoMTEsJ1Nob3dDbWQnLDUzNzgpCi1TaG9ydGN1dC5hZGRfZmllbGQoMTIsJ1drRGlyJyw3NDk2KQotCi1TaWduYXR1cmUgPSBUYWJsZSgnU2lnbmF0dXJlJykKLVNpZ25hdHVyZS5hZGRfZmllbGQoMSwnU2lnbmF0dXJlJywxMTU5MikKLVNpZ25hdHVyZS5hZGRfZmllbGQoMiwnRmlsZU5hbWUnLDM1ODMpCi1TaWduYXR1cmUuYWRkX2ZpZWxkKDMsJ01pblZlcnNpb24nLDc0NDQpCi1TaWduYXR1cmUuYWRkX2ZpZWxkKDQsJ01heFZlcnNpb24nLDc0NDQpCi1TaWduYXR1cmUuYWRkX2ZpZWxkKDUsJ01pblNpemUnLDQzNTYpCi1TaWduYXR1cmUuYWRkX2ZpZWxkKDYsJ01heFNpemUnLDQzNTYpCi1TaWduYXR1cmUuYWRkX2ZpZWxkKDcsJ01pbkRhdGUnLDQzNTYpCi1TaWduYXR1cmUuYWRkX2ZpZWxkKDgsJ01heERhdGUnLDQzNTYpCi1TaWduYXR1cmUuYWRkX2ZpZWxkKDksJ0xhbmd1YWdlcycsNzY3OSkKLQotVGV4dFN0eWxlID0gVGFibGUoJ1RleHRTdHlsZScpCi1UZXh0U3R5bGUuYWRkX2ZpZWxkKDEsJ1RleHRTdHlsZScsMTE1OTIpCi1UZXh0U3R5bGUuYWRkX2ZpZWxkKDIsJ0ZhY2VOYW1lJywzMzYwKQotVGV4dFN0eWxlLmFkZF9maWVsZCgzLCdTaXplJywxMjgyKQotVGV4dFN0eWxlLmFkZF9maWVsZCg0LCdDb2xvcicsNDM1NikKLVRleHRTdHlsZS5hZGRfZmllbGQoNSwnU3R5bGVCaXRzJyw1Mzc4KQotCi1UeXBlTGliID0gVGFibGUoJ1R5cGVMaWInKQotVHlwZUxpYi5hZGRfZmllbGQoMSwnTGliSUQnLDExNTU4KQotVHlwZUxpYi5hZGRfZmllbGQoMiwnTGFuZ3VhZ2UnLDk0NzQpCi1UeXBlTGliLmFkZF9maWVsZCgzLCdDb21wb25lbnRfJywweDJERkYpCi1UeXBlTGliLmFkZF9maWVsZCg0LCdWZXJzaW9uJyw0MzU2KQotVHlwZUxpYi5hZGRfZmllbGQoNSwnRGVzY3JpcHRpb24nLDgwNjQpCi1UeXBlTGliLmFkZF9maWVsZCg2LCdEaXJlY3RvcnlfJywweDFERkYpCi1UeXBlTGliLmFkZF9maWVsZCg3LCdGZWF0dXJlXycsMzM2NikKLVR5cGVMaWIuYWRkX2ZpZWxkKDgsJ0Nvc3QnLDQzNTYpCi0KLVVJVGV4dCA9IFRhYmxlKCdVSVRleHQnKQotVUlUZXh0LmFkZF9maWVsZCgxLCdLZXknLDExNTkyKQotVUlUZXh0LmFkZF9maWVsZCgyLCdUZXh0Jyw4MTkxKQotCi1VcGdyYWRlID0gVGFibGUoJ1VwZ3JhZGUnKQotVXBncmFkZS5hZGRfZmllbGQoMSwnVXBncmFkZUNvZGUnLDExNTU4KQotVXBncmFkZS5hZGRfZmllbGQoMiwnVmVyc2lvbk1pbicsMTU2MzYpCi1VcGdyYWRlLmFkZF9maWVsZCgzLCdWZXJzaW9uTWF4JywxNTYzNikKLVVwZ3JhZGUuYWRkX2ZpZWxkKDQsJ0xhbmd1YWdlJywxNTg3MSkKLVVwZ3JhZGUuYWRkX2ZpZWxkKDUsJ0F0dHJpYnV0ZXMnLDg0NTIpCi1VcGdyYWRlLmFkZF9maWVsZCg2LCdSZW1vdmUnLDc2NzkpCi1VcGdyYWRlLmFkZF9maWVsZCg3LCdBY3Rpb25Qcm9wZXJ0eScsMzQwMCkKLQotVmVyYiA9IFRhYmxlKCdWZXJiJykKLVZlcmIuYWRkX2ZpZWxkKDEsJ0V4dGVuc2lvbl8nLDExNzc1KQotVmVyYi5hZGRfZmllbGQoMiwnVmVyYicsMTE1NTIpCi1WZXJiLmFkZF9maWVsZCgzLCdTZXF1ZW5jZScsNTM3OCkKLVZlcmIuYWRkX2ZpZWxkKDQsJ0NvbW1hbmQnLDgxOTEpCi1WZXJiLmFkZF9maWVsZCg1LCdBcmd1bWVudCcsODE5MSkKLQotdGFibGVzPVtfVmFsaWRhdGlvbiwgQWN0aW9uVGV4dCwgQWRtaW5FeGVjdXRlU2VxdWVuY2UsIENvbmRpdGlvbiwgQWRtaW5VSVNlcXVlbmNlLCBBZHZ0RXhlY3V0ZVNlcXVlbmNlLCBBZHZ0VUlTZXF1ZW5jZSwgQXBwSWQsIEFwcFNlYXJjaCwgUHJvcGVydHksIEJCQ29udHJvbCwgQmlsbGJvYXJkLCBGZWF0dXJlLCBCaW5hcnksIEJpbmRJbWFnZSwgRmlsZSwgQ0NQU2VhcmNoLCBDaGVja0JveCwgQ2xhc3MsIENvbXBvbmVudCwgSWNvbiwgUHJvZ0lkLCBDb21ib0JveCwgQ29tcExvY2F0b3IsIENvbXBsdXMsIERpcmVjdG9yeSwgQ29udHJvbCwgRGlhbG9nLCBDb250cm9sQ29uZGl0aW9uLCBDb250cm9sRXZlbnQsIENyZWF0ZUZvbGRlciwgQ3VzdG9tQWN0aW9uLCBEckxvY2F0b3IsIER1cGxpY2F0ZUZpbGUsIEVudmlyb25tZW50LCBFcnJvciwgRXZlbnRNYXBwaW5nLCBFeHRlbnNpb24sIE1JTUUsIEZlYXR1cmVDb21wb25lbnRzLCBGaWxlU0ZQQ2F0YWxvZywgU0ZQQ2F0YWxvZywgRm9udCwgSW5pRmlsZSwgSW5pTG9jYXRvciwgSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZSwgSW5zdGFsbFVJU2VxdWVuY2UsIElzb2xhdGVkQ29tcG9uZW50LCBMYXVuY2hDb25kaXRpb24sIExpc3RCb3gsIExpc3RWaWV3LCBMb2NrUGVybWlzc2lvbnMsIE1lZGlhLCBNb3ZlRmlsZSwgTXNpQXNzZW1ibHksIE1zaUFzc2VtYmx5TmFtZSwgTXNpRGlnaXRhbENlcnRpZmljYXRlLCBNc2lEaWdpdGFsU2lnbmF0dXJlLCBNc2lGaWxlSGFzaCwgTXNpUGF0Y2hIZWFkZXJzLCBPREJDQXR0cmlidXRlLCBPREJDRHJpdmVyLCBPREJDRGF0YVNvdXJjZSwgT0RCQ1NvdXJjZUF0dHJpYnV0ZSwgT0RCQ1RyYW5zbGF0b3IsIFBhdGNoLCBQYXRjaFBhY2thZ2UsIFB1Ymxpc2hDb21wb25lbnQsIFJhZGlvQnV0dG9uLCBSZWdpc3RyeSwgUmVnTG9jYXRvciwgUmVtb3ZlRmlsZSwgUmVtb3ZlSW5pRmlsZSwgUmVtb3ZlUmVnaXN0cnksIFJlc2VydmVDb3N0LCBTZWxmUmVnLCBTZXJ2aWNlQ29udHJvbCwgU2VydmljZUluc3RhbGwsIFNob3J0Y3V0LCBTaWduYXR1cmUsIFRleHRTdHlsZSwgVHlwZUxpYiwgVUlUZXh0LCBVcGdyYWRlLCBWZXJiXQotCi1fVmFsaWRhdGlvbl9yZWNvcmRzID0gWwotKHUnX1ZhbGlkYXRpb24nLHUnVGFibGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgdGFibGUnLCksCi0odSdfVmFsaWRhdGlvbicsdSdDb2x1bW4nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgY29sdW1uJywpLAotKHUnX1ZhbGlkYXRpb24nLHUnRGVzY3JpcHRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J0Rlc2NyaXB0aW9uIG9mIGNvbHVtbicsKSwKLSh1J19WYWxpZGF0aW9uJyx1J1NldCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnU2V0IG9mIHZhbHVlcyB0aGF0IGFyZSBwZXJtaXR0ZWQnLCksCi0odSdfVmFsaWRhdGlvbicsdSdDYXRlZ29yeScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQ7Rm9ybWF0dGVkO1RlbXBsYXRlO0NvbmRpdGlvbjtHdWlkO1BhdGg7VmVyc2lvbjtMYW5ndWFnZTtJZGVudGlmaWVyO0JpbmFyeTtVcHBlckNhc2U7TG93ZXJDYXNlO0ZpbGVuYW1lO1BhdGhzO0FueVBhdGg7V2lsZENhcmRGaWxlbmFtZTtSZWdQYXRoO0tleUZvcm1hdHRlZDtDdXN0b21Tb3VyY2U7UHJvcGVydHk7Q2FiaW5ldDtTaG9ydGN1dDtVUkwnLHUnU3RyaW5nIGNhdGVnb3J5JywpLAotKHUnX1ZhbGlkYXRpb24nLHUnS2V5Q29sdW1uJyx1J1knLDEsMzIsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb2x1bW4gdG8gd2hpY2ggZm9yZWlnbiBrZXkgY29ubmVjdHMnLCksCi0odSdfVmFsaWRhdGlvbicsdSdLZXlUYWJsZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yIGZvcmVpZ24ga2V5LCBOYW1lIG9mIHRhYmxlIHRvIHdoaWNoIGRhdGEgbXVzdCBsaW5rJywpLAotKHUnX1ZhbGlkYXRpb24nLHUnTWF4VmFsdWUnLHUnWScsLTIxNDc0ODM2NDcsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J01heGltdW0gdmFsdWUgYWxsb3dlZCcsKSwKLSh1J19WYWxpZGF0aW9uJyx1J01pblZhbHVlJyx1J1knLC0yMTQ3NDgzNjQ3LDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdNaW5pbXVtIHZhbHVlIGFsbG93ZWQnLCksCi0odSdfVmFsaWRhdGlvbicsdSdOdWxsYWJsZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1k7TjtAJyx1J1doZXRoZXIgdGhlIGNvbHVtbiBpcyBudWxsYWJsZScsKSwKLSh1J0FjdGlvblRleHQnLHUnRGVzY3JpcHRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J0xvY2FsaXplZCBkZXNjcmlwdGlvbiBkaXNwbGF5ZWQgaW4gcHJvZ3Jlc3MgZGlhbG9nIGFuZCBsb2cgd2hlbiBhY3Rpb24gaXMgZXhlY3V0aW5nLicsKSwKLSh1J0FjdGlvblRleHQnLHUnQWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGFjdGlvbiB0byBiZSBkZXNjcmliZWQuJywpLAotKHUnQWN0aW9uVGV4dCcsdSdUZW1wbGF0ZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RlbXBsYXRlJyxOb25lLCB1J09wdGlvbmFsIGxvY2FsaXplZCBmb3JtYXQgdGVtcGxhdGUgdXNlZCB0byBmb3JtYXQgYWN0aW9uIGRhdGEgcmVjb3JkcyBmb3IgZGlzcGxheSBkdXJpbmcgYWN0aW9uIGV4ZWN1dGlvbi4nLCksCi0odSdBZG1pbkV4ZWN1dGVTZXF1ZW5jZScsdSdBY3Rpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGludm9rZSwgZWl0aGVyIGluIHRoZSBlbmdpbmUgb3IgdGhlIGhhbmRsZXIgRExMLicsKSwKLSh1J0FkbWluRXhlY3V0ZVNlcXVlbmNlJyx1J0NvbmRpdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nLCksCi0odSdBZG1pbkV4ZWN1dGVTZXF1ZW5jZScsdSdTZXF1ZW5jZScsdSdZJywtNCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J051bWJlciB0aGF0IGRldGVybWluZXMgdGhlIHNvcnQgb3JkZXIgaW4gd2hpY2ggdGhlIGFjdGlvbnMgYXJlIHRvIGJlIGV4ZWN1dGVkLiAgTGVhdmUgYmxhbmsgdG8gc3VwcHJlc3MgYWN0aW9uLicsKSwKLSh1J0NvbmRpdGlvbicsdSdDb25kaXRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLE5vbmUsIHUnRXhwcmVzc2lvbiBldmFsdWF0ZWQgdG8gZGV0ZXJtaW5lIGlmIExldmVsIGluIHRoZSBGZWF0dXJlIHRhYmxlIGlzIHRvIGNoYW5nZS4nLCksCi0odSdDb25kaXRpb24nLHUnRmVhdHVyZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZWZlcmVuY2UgdG8gYSBGZWF0dXJlIGVudHJ5IGluIEZlYXR1cmUgdGFibGUuJywpLAotKHUnQ29uZGl0aW9uJyx1J0xldmVsJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOZXcgc2VsZWN0aW9uIExldmVsIHRvIHNldCBpbiBGZWF0dXJlIHRhYmxlIGlmIENvbmRpdGlvbiBldmFsdWF0ZXMgdG8gVFJVRS4nLCksCi0odSdBZG1pblVJU2VxdWVuY2UnLHUnQWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGFjdGlvbiB0byBpbnZva2UsIGVpdGhlciBpbiB0aGUgZW5naW5lIG9yIHRoZSBoYW5kbGVyIERMTC4nLCksCi0odSdBZG1pblVJU2VxdWVuY2UnLHUnQ29uZGl0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJyxOb25lLCB1J09wdGlvbmFsIGV4cHJlc3Npb24gd2hpY2ggc2tpcHMgdGhlIGFjdGlvbiBpZiBldmFsdWF0ZXMgdG8gZXhwRmFsc2UuSWYgdGhlIGV4cHJlc3Npb24gc3ludGF4IGlzIGludmFsaWQsIHRoZSBlbmdpbmUgd2lsbCB0ZXJtaW5hdGUsIHJldHVybmluZyBpZXNCYWRBY3Rpb25EYXRhLicsKSwKLSh1J0FkbWluVUlTZXF1ZW5jZScsdSdTZXF1ZW5jZScsdSdZJywtNCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J051bWJlciB0aGF0IGRldGVybWluZXMgdGhlIHNvcnQgb3JkZXIgaW4gd2hpY2ggdGhlIGFjdGlvbnMgYXJlIHRvIGJlIGV4ZWN1dGVkLiAgTGVhdmUgYmxhbmsgdG8gc3VwcHJlc3MgYWN0aW9uLicsKSwKLSh1J0FkdnRFeGVjdXRlU2VxdWVuY2UnLHUnQWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGFjdGlvbiB0byBpbnZva2UsIGVpdGhlciBpbiB0aGUgZW5naW5lIG9yIHRoZSBoYW5kbGVyIERMTC4nLCksCi0odSdBZHZ0RXhlY3V0ZVNlcXVlbmNlJyx1J0NvbmRpdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nLCksCi0odSdBZHZ0RXhlY3V0ZVNlcXVlbmNlJyx1J1NlcXVlbmNlJyx1J1knLC00LDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtYmVyIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc29ydCBvcmRlciBpbiB3aGljaCB0aGUgYWN0aW9ucyBhcmUgdG8gYmUgZXhlY3V0ZWQuICBMZWF2ZSBibGFuayB0byBzdXBwcmVzcyBhY3Rpb24uJywpLAotKHUnQWR2dFVJU2VxdWVuY2UnLHUnQWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGFjdGlvbiB0byBpbnZva2UsIGVpdGhlciBpbiB0aGUgZW5naW5lIG9yIHRoZSBoYW5kbGVyIERMTC4nLCksCi0odSdBZHZ0VUlTZXF1ZW5jZScsdSdDb25kaXRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLE5vbmUsIHUnT3B0aW9uYWwgZXhwcmVzc2lvbiB3aGljaCBza2lwcyB0aGUgYWN0aW9uIGlmIGV2YWx1YXRlcyB0byBleHBGYWxzZS5JZiB0aGUgZXhwcmVzc2lvbiBzeW50YXggaXMgaW52YWxpZCwgdGhlIGVuZ2luZSB3aWxsIHRlcm1pbmF0ZSwgcmV0dXJuaW5nIGllc0JhZEFjdGlvbkRhdGEuJywpLAotKHUnQWR2dFVJU2VxdWVuY2UnLHUnU2VxdWVuY2UnLHUnWScsLTQsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOdW1iZXIgdGhhdCBkZXRlcm1pbmVzIHRoZSBzb3J0IG9yZGVyIGluIHdoaWNoIHRoZSBhY3Rpb25zIGFyZSB0byBiZSBleGVjdXRlZC4gIExlYXZlIGJsYW5rIHRvIHN1cHByZXNzIGFjdGlvbi4nLCksCi0odSdBcHBJZCcsdSdBcHBJZCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLE5vbmUsIE5vbmUsICksCi0odSdBcHBJZCcsdSdBY3RpdmF0ZUF0U3RvcmFnZScsdSdZJywwLDEsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgKSwKLSh1J0FwcElkJyx1J0RsbFN1cnJvZ2F0ZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIE5vbmUsICksCi0odSdBcHBJZCcsdSdMb2NhbFNlcnZpY2UnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCBOb25lLCApLAotKHUnQXBwSWQnLHUnUmVtb3RlU2VydmVyTmFtZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgTm9uZSwgKSwKLSh1J0FwcElkJyx1J1J1bkFzSW50ZXJhY3RpdmVVc2VyJyx1J1knLDAsMSxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCApLAotKHUnQXBwSWQnLHUnU2VydmljZVBhcmFtZXRlcnMnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCBOb25lLCApLAotKHUnQXBwU2VhcmNoJyx1J1Byb3BlcnR5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgcHJvcGVydHkgYXNzb2NpYXRlZCB3aXRoIGEgU2lnbmF0dXJlJywpLAotKHUnQXBwU2VhcmNoJyx1J1NpZ25hdHVyZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdTaWduYXR1cmU7UmVnTG9jYXRvcjtJbmlMb2NhdG9yO0RyTG9jYXRvcjtDb21wTG9jYXRvcicsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIFNpZ25hdHVyZV8gcmVwcmVzZW50cyBhIHVuaXF1ZSBmaWxlIHNpZ25hdHVyZSBhbmQgaXMgYWxzbyB0aGUgZm9yZWlnbiBrZXkgaW4gdGhlIFNpZ25hdHVyZSwgIFJlZ0xvY2F0b3IsIEluaUxvY2F0b3IsIENvbXBMb2NhdG9yIGFuZCB0aGUgRHJMb2NhdG9yIHRhYmxlcy4nLCksCi0odSdQcm9wZXJ0eScsdSdQcm9wZXJ0eScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiBwcm9wZXJ0eSwgdXBwZXJjYXNlIGlmIHNldHRhYmxlIGJ5IGxhdW5jaGVyIG9yIGxvYWRlci4nLCksCi0odSdQcm9wZXJ0eScsdSdWYWx1ZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnU3RyaW5nIHZhbHVlIGZvciBwcm9wZXJ0eS4gIE5ldmVyIG51bGwgb3IgZW1wdHkuJywpLAotKHUnQkJDb250cm9sJyx1J1R5cGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSB0eXBlIG9mIHRoZSBjb250cm9sLicsKSwKLSh1J0JCQ29udHJvbCcsdSdZJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWZXJ0aWNhbCBjb29yZGluYXRlIG9mIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicsKSwKLSh1J0JCQ29udHJvbCcsdSdUZXh0Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdBIHN0cmluZyB1c2VkIHRvIHNldCB0aGUgaW5pdGlhbCB0ZXh0IGNvbnRhaW5lZCB3aXRoaW4gYSBjb250cm9sIChpZiBhcHByb3ByaWF0ZSkuJywpLAotKHUnQkJDb250cm9sJyx1J0JCQ29udHJvbCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiB0aGUgY29udHJvbC4gVGhpcyBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiBhIGJpbGxib2FyZCwgYnV0IGNhbiByZXBlYXQgb24gZGlmZmVyZW50IGJpbGxib2FyZC4nLCksCi0odSdCQkNvbnRyb2wnLHUnQXR0cmlidXRlcycsdSdZJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIDMyLWJpdCB3b3JkIHRoYXQgc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGUgZmxhZ3MgdG8gYmUgYXBwbGllZCB0byB0aGlzIGNvbnRyb2wuJywpLAotKHUnQkJDb250cm9sJyx1J0JpbGxib2FyZF8nLHUnTicsTm9uZSwgTm9uZSwgdSdCaWxsYm9hcmQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0V4dGVybmFsIGtleSB0byB0aGUgQmlsbGJvYXJkIHRhYmxlLCBuYW1lIG9mIHRoZSBiaWxsYm9hcmQuJywpLAotKHUnQkJDb250cm9sJyx1J0hlaWdodCcsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSGVpZ2h0IG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJywpLAotKHUnQkJDb250cm9sJyx1J1dpZHRoJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdXaWR0aCBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicsKSwKLSh1J0JCQ29udHJvbCcsdSdYJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdIb3Jpem9udGFsIGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJywpLAotKHUnQmlsbGJvYXJkJyx1J0FjdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIG5hbWUgb2YgYW4gYWN0aW9uLiBUaGUgYmlsbGJvYXJkIGlzIGRpc3BsYXllZCBkdXJpbmcgdGhlIHByb2dyZXNzIG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gdGhpcyBhY3Rpb24uJywpLAotKHUnQmlsbGJvYXJkJyx1J0JpbGxib2FyZCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiB0aGUgYmlsbGJvYXJkLicsKSwKLSh1J0JpbGxib2FyZCcsdSdGZWF0dXJlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZlYXR1cmUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0FuIGV4dGVybmFsIGtleSB0byB0aGUgRmVhdHVyZSBUYWJsZS4gVGhlIGJpbGxib2FyZCBpcyBzaG93biBvbmx5IGlmIHRoaXMgZmVhdHVyZSBpcyBiZWluZyBpbnN0YWxsZWQuJywpLAotKHUnQmlsbGJvYXJkJyx1J09yZGVyaW5nJyx1J1knLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIHBvc2l0aXZlIGludGVnZXIuIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgYmlsbGJvYXJkIGNvcnJlc3BvbmRpbmcgdG8gYW4gYWN0aW9uIHRoZXkgd2lsbCBiZSBzaG93biBpbiB0aGUgb3JkZXIgZGVmaW5lZCBieSB0aGlzIGNvbHVtbi4nLCksCi0odSdGZWF0dXJlJyx1J0Rlc2NyaXB0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdMb25nZXIgZGVzY3JpcHRpdmUgdGV4dCBkZXNjcmliaW5nIGEgdmlzaWJsZSBmZWF0dXJlIGl0ZW0uJywpLAotKHUnRmVhdHVyZScsdSdBdHRyaWJ1dGVzJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnMDsxOzI7NDs1OzY7ODs5OzEwOzE2OzE3OzE4OzIwOzIxOzIyOzI0OzI1OzI2OzMyOzMzOzM0OzM2OzM3OzM4OzQ4OzQ5OzUwOzUyOzUzOzU0Jyx1J0ZlYXR1cmUgYXR0cmlidXRlcycsKSwKLSh1J0ZlYXR1cmUnLHUnRmVhdHVyZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXkgdXNlZCB0byBpZGVudGlmeSBhIHBhcnRpY3VsYXIgZmVhdHVyZSByZWNvcmQuJywpLAotKHUnRmVhdHVyZScsdSdEaXJlY3RvcnlfJyx1J1knLE5vbmUsIE5vbmUsIHUnRGlyZWN0b3J5JywxLHUnVXBwZXJDYXNlJyxOb25lLCB1J1RoZSBuYW1lIG9mIHRoZSBEaXJlY3RvcnkgdGhhdCBjYW4gYmUgY29uZmlndXJlZCBieSB0aGUgVUkuIEEgbm9uLW51bGwgdmFsdWUgd2lsbCBlbmFibGUgdGhlIGJyb3dzZSBidXR0b24uJywpLAotKHUnRmVhdHVyZScsdSdMZXZlbCcsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGluc3RhbGwgbGV2ZWwgYXQgd2hpY2ggcmVjb3JkIHdpbGwgYmUgaW5pdGlhbGx5IHNlbGVjdGVkLiBBbiBpbnN0YWxsIGxldmVsIG9mIDAgd2lsbCBkaXNhYmxlIGFuIGl0ZW0gYW5kIHByZXZlbnQgaXRzIGRpc3BsYXkuJywpLAotKHUnRmVhdHVyZScsdSdUaXRsZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnU2hvcnQgdGV4dCBpZGVudGlmeWluZyBhIHZpc2libGUgZmVhdHVyZSBpdGVtLicsKSwKLSh1J0ZlYXR1cmUnLHUnRGlzcGxheScsdSdZJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtZXJpYyBzb3J0IG9yZGVyLCB1c2VkIHRvIGZvcmNlIGEgc3BlY2lmaWMgZGlzcGxheSBvcmRlcmluZy4nLCksCi0odSdGZWF0dXJlJyx1J0ZlYXR1cmVfUGFyZW50Jyx1J1knLE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnT3B0aW9uYWwga2V5IG9mIGEgcGFyZW50IHJlY29yZCBpbiB0aGUgc2FtZSB0YWJsZS4gSWYgdGhlIHBhcmVudCBpcyBub3Qgc2VsZWN0ZWQsIHRoZW4gdGhlIHJlY29yZCB3aWxsIG5vdCBiZSBpbnN0YWxsZWQuIE51bGwgaW5kaWNhdGVzIGEgcm9vdCBpdGVtLicsKSwKLSh1J0JpbmFyeScsdSdOYW1lJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdVbmlxdWUga2V5IGlkZW50aWZ5aW5nIHRoZSBiaW5hcnkgZGF0YS4nLCksCi0odSdCaW5hcnknLHUnRGF0YScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsTm9uZSwgdSdUaGUgdW5mb3JtYXR0ZWQgYmluYXJ5IGRhdGEuJywpLAotKHUnQmluZEltYWdlJyx1J0ZpbGVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmlsZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIGluZGV4IGludG8gdGhlIEZpbGUgdGFibGUuIFRoaXMgbXVzdCBiZSBhbiBleGVjdXRhYmxlIGZpbGUuJywpLAotKHUnQmluZEltYWdlJyx1J1BhdGgnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdQYXRocycsTm9uZSwgdSdBIGxpc3Qgb2YgOyAgZGVsaW1pdGVkIHBhdGhzIHRoYXQgcmVwcmVzZW50IHRoZSBwYXRocyB0byBiZSBzZWFyY2hlZCBmb3IgdGhlIGltcG9ydCBETExTLiBUaGUgbGlzdCBpcyB1c3VhbGx5IGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGVhY2ggZW5jbG9zZWQgd2l0aGluIHNxdWFyZSBicmFja2V0cyBbXSAuJywpLAotKHUnRmlsZScsdSdTZXF1ZW5jZScsdSdOJywxLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2VxdWVuY2Ugd2l0aCByZXNwZWN0IHRvIHRoZSBtZWRpYSBpbWFnZXM7IG9yZGVyIG11c3QgdHJhY2sgY2FiaW5ldCBvcmRlci4nLCksCi0odSdGaWxlJyx1J0F0dHJpYnV0ZXMnLHUnWScsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ludGVnZXIgY29udGFpbmluZyBiaXQgZmxhZ3MgcmVwcmVzZW50aW5nIGZpbGUgYXR0cmlidXRlcyAod2l0aCB0aGUgZGVjaW1hbCB2YWx1ZSBvZiBlYWNoIGJpdCBwb3NpdGlvbiBpbiBwYXJlbnRoZXNlcyknLCksCi0odSdGaWxlJyx1J0ZpbGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLCBtdXN0IG1hdGNoIGlkZW50aWZpZXIgaW4gY2FiaW5ldC4gIEZvciB1bmNvbXByZXNzZWQgZmlsZXMsIHRoaXMgZmllbGQgaXMgaWdub3JlZC4nLCksCi0odSdGaWxlJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IHJlZmVyZW5jaW5nIENvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBmaWxlLicsKSwKLSh1J0ZpbGUnLHUnRmlsZU5hbWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsTm9uZSwgdSdGaWxlIG5hbWUgdXNlZCBmb3IgaW5zdGFsbGF0aW9uLCBtYXkgYmUgbG9jYWxpemVkLiAgVGhpcyBtYXkgY29udGFpbiBhICJzaG9ydCBuYW1lfGxvbmcgbmFtZSIgcGFpci4nLCksCi0odSdGaWxlJyx1J0ZpbGVTaXplJyx1J04nLDAsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NpemUgb2YgZmlsZSBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS4nLCksCi0odSdGaWxlJyx1J0xhbmd1YWdlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTGFuZ3VhZ2UnLE5vbmUsIHUnTGlzdCBvZiBkZWNpbWFsIGxhbmd1YWdlIElkcywgY29tbWEtc2VwYXJhdGVkIGlmIG1vcmUgdGhhbiBvbmUuJywpLAotKHUnRmlsZScsdSdWZXJzaW9uJyx1J1knLE5vbmUsIE5vbmUsIHUnRmlsZScsMSx1J1ZlcnNpb24nLE5vbmUsIHUnVmVyc2lvbiBzdHJpbmcgZm9yIHZlcnNpb25lZCBmaWxlczsgIEJsYW5rIGZvciB1bnZlcnNpb25lZCBmaWxlcy4nLCksCi0odSdDQ1BTZWFyY2gnLHUnU2lnbmF0dXJlXycsdSdOJyxOb25lLCBOb25lLCB1J1NpZ25hdHVyZTtSZWdMb2NhdG9yO0luaUxvY2F0b3I7RHJMb2NhdG9yO0NvbXBMb2NhdG9yJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgU2lnbmF0dXJlXyByZXByZXNlbnRzIGEgdW5pcXVlIGZpbGUgc2lnbmF0dXJlIGFuZCBpcyBhbHNvIHRoZSBmb3JlaWduIGtleSBpbiB0aGUgU2lnbmF0dXJlLCAgUmVnTG9jYXRvciwgSW5pTG9jYXRvciwgQ29tcExvY2F0b3IgYW5kIHRoZSBEckxvY2F0b3IgdGFibGVzLicsKSwKLSh1J0NoZWNrQm94Jyx1J1Byb3BlcnR5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIG5hbWVkIHByb3BlcnR5IHRvIGJlIHRpZWQgdG8gdGhlIGl0ZW0uJywpLAotKHUnQ2hlY2tCb3gnLHUnVmFsdWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIHZhbHVlIHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhlIGl0ZW0uJywpLAotKHUnQ2xhc3MnLHUnRGVzY3JpcHRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J0xvY2FsaXplZCBkZXNjcmlwdGlvbiBmb3IgdGhlIENsYXNzLicsKSwKLSh1J0NsYXNzJyx1J0F0dHJpYnV0ZXMnLHUnWScsTm9uZSwgMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDbGFzcyByZWdpc3RyYXRpb24gYXR0cmlidXRlcy4nLCksCi0odSdDbGFzcycsdSdGZWF0dXJlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZlYXR1cmUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIEZlYXR1cmUgVGFibGUsIHNwZWNpZnlpbmcgdGhlIGZlYXR1cmUgdG8gdmFsaWRhdGUgb3IgaW5zdGFsbCBpbiBvcmRlciBmb3IgdGhlIENMU0lEIGZhY3RvcnkgdG8gYmUgb3BlcmF0aW9uYWwuJywpLAotKHUnQ2xhc3MnLHUnQXBwSWRfJyx1J1knLE5vbmUsIE5vbmUsIHUnQXBwSWQnLDEsdSdHdWlkJyxOb25lLCB1J09wdGlvbmFsIEFwcElEIGNvbnRhaW5pbmcgRENPTSBpbmZvcm1hdGlvbiBmb3IgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbiAoc3RyaW5nIEdVSUQpLicsKSwKLSh1J0NsYXNzJyx1J0FyZ3VtZW50Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J29wdGlvbmFsIGFyZ3VtZW50IGZvciBMb2NhbFNlcnZlcnMuJywpLAotKHUnQ2xhc3MnLHUnQ0xTSUQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJyxOb25lLCB1J1RoZSBDTFNJRCBvZiBhbiBPTEUgZmFjdG9yeS4nLCksCi0odSdDbGFzcycsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZXF1aXJlZCBmb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgVGFibGUsIHNwZWNpZnlpbmcgdGhlIGNvbXBvbmVudCBmb3Igd2hpY2ggdG8gcmV0dXJuIGEgcGF0aCB3aGVuIGNhbGxlZCB0aHJvdWdoIExvY2F0ZUNvbXBvbmVudC4nLCksCi0odSdDbGFzcycsdSdDb250ZXh0Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgbnVtZXJpYyBzZXJ2ZXIgY29udGV4dCBmb3IgdGhpcyBzZXJ2ZXIuIENMU0NUWF94eHh4JywpLAotKHUnQ2xhc3MnLHUnRGVmSW5wcm9jSGFuZGxlcicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJyx1JzE7MjszJyx1J09wdGlvbmFsIGRlZmF1bHQgaW5wcm9jIGhhbmRsZXIuICBPbmx5IG9wdGlvbmFsbHkgcHJvdmlkZWQgaWYgQ29udGV4dD1DTFNDVFhfTE9DQUxfU0VSVkVSLiAgVHlwaWNhbGx5ICJvbGUzMi5kbGwiIG9yICJtYXBpMzIuZGxsIicsKSwKLSh1J0NsYXNzJyx1J0ZpbGVUeXBlTWFzaycsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnT3B0aW9uYWwgc3RyaW5nIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gZm9yIHRoZSBIS0NSdGhpcyBDTFNJRCkga2V5LiBJZiBtdWx0aXBsZSBwYXR0ZXJucyBleGlzdCwgdGhleSBtdXN0IGJlIGRlbGltaXRlZCBieSBhIHNlbWljb2xvbiwgYW5kIG51bWVyaWMgc3Via2V5cyB3aWxsIGJlIGdlbmVyYXRlZDogMCwxLDIuLi4nLCksCi0odSdDbGFzcycsdSdJY29uXycsdSdZJyxOb25lLCBOb25lLCB1J0ljb24nLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J09wdGlvbmFsIGZvcmVpZ24ga2V5IGludG8gdGhlIEljb24gVGFibGUsIHNwZWNpZnlpbmcgdGhlIGljb24gZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBDTFNJRC4gV2lsbCBiZSB3cml0dGVuIHVuZGVyIHRoZSBEZWZhdWx0SWNvbiBrZXkuJywpLAotKHUnQ2xhc3MnLHUnSWNvbkluZGV4Jyx1J1knLC0zMjc2NywzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J09wdGlvbmFsIGljb24gaW5kZXguJywpLAotKHUnQ2xhc3MnLHUnUHJvZ0lkX0RlZmF1bHQnLHUnWScsTm9uZSwgTm9uZSwgdSdQcm9nSWQnLDEsdSdUZXh0JyxOb25lLCB1J09wdGlvbmFsIFByb2dJZCBhc3NvY2lhdGVkIHdpdGggdGhpcyBDTFNJRC4nLCksCi0odSdDb21wb25lbnQnLHUnQ29uZGl0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJyxOb25lLCB1IkEgY29uZGl0aW9uYWwgc3RhdGVtZW50IHRoYXQgd2lsbCBkaXNhYmxlIHRoaXMgY29tcG9uZW50IGlmIHRoZSBzcGVjaWZpZWQgY29uZGl0aW9uIGV2YWx1YXRlcyB0byB0aGUgJ1RydWUnIHN0YXRlLiBJZiBhIGNvbXBvbmVudCBpcyBkaXNhYmxlZCwgaXQgd2lsbCBub3QgYmUgaW5zdGFsbGVkLCByZWdhcmRsZXNzIG9mIHRoZSAnQWN0aW9uJyBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbXBvbmVudC4iLCksCi0odSdDb21wb25lbnQnLHUnQXR0cmlidXRlcycsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1JlbW90ZSBleGVjdXRpb24gb3B0aW9uLCBvbmUgb2YgaXJzRW51bScsKSwKLSh1J0NvbXBvbmVudCcsdSdDb21wb25lbnQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5IHVzZWQgdG8gaWRlbnRpZnkgYSBwYXJ0aWN1bGFyIGNvbXBvbmVudCByZWNvcmQuJywpLAotKHUnQ29tcG9uZW50Jyx1J0NvbXBvbmVudElkJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsTm9uZSwgdSdBIHN0cmluZyBHVUlEIHVuaXF1ZSB0byB0aGlzIGNvbXBvbmVudCwgdmVyc2lvbiwgYW5kIGxhbmd1YWdlLicsKSwKLSh1J0NvbXBvbmVudCcsdSdEaXJlY3RvcnlfJyx1J04nLE5vbmUsIE5vbmUsIHUnRGlyZWN0b3J5JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZXF1aXJlZCBrZXkgb2YgYSBEaXJlY3RvcnkgdGFibGUgcmVjb3JkLiBUaGlzIGlzIGFjdHVhbGx5IGEgcHJvcGVydHkgbmFtZSB3aG9zZSB2YWx1ZSBjb250YWlucyB0aGUgYWN0dWFsIHBhdGgsIHNldCBlaXRoZXIgYnkgdGhlIEFwcFNlYXJjaCBhY3Rpb24gb3Igd2l0aCB0aGUgZGVmYXVsdCBzZXR0aW5nIG9idGFpbmVkIGZyb20gdGhlIERpcmVjdG9yeSB0YWJsZS4nLCksCi0odSdDb21wb25lbnQnLHUnS2V5UGF0aCcsdSdZJyxOb25lLCBOb25lLCB1J0ZpbGU7UmVnaXN0cnk7T0RCQ0RhdGFTb3VyY2UnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0VpdGhlciB0aGUgcHJpbWFyeSBrZXkgaW50byB0aGUgRmlsZSB0YWJsZSwgUmVnaXN0cnkgdGFibGUsIG9yIE9EQkNEYXRhU291cmNlIHRhYmxlLiBUaGlzIGV4dHJhY3QgcGF0aCBpcyBzdG9yZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGluc3RhbGxlZCwgYW5kIGlzIHVzZWQgdG8gZGV0ZWN0IHRoZSBwcmVzZW5jZSBvZiB0aGUgY29tcG9uZW50IGFuZCB0byByZXR1cm4gdGhlIHBhdGggdG8gaXQuJywpLAotKHUnSWNvbicsdSdOYW1lJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleS4gTmFtZSBvZiB0aGUgaWNvbiBmaWxlLicsKSwKLSh1J0ljb24nLHUnRGF0YScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsTm9uZSwgdSdCaW5hcnkgc3RyZWFtLiBUaGUgYmluYXJ5IGljb24gZGF0YSBpbiBQRSAoLkRMTCBvciAuRVhFKSBvciBpY29uICguSUNPKSBmb3JtYXQuJywpLAotKHUnUHJvZ0lkJyx1J0Rlc2NyaXB0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdMb2NhbGl6ZWQgZGVzY3JpcHRpb24gZm9yIHRoZSBQcm9ncmFtIGlkZW50aWZpZXIuJywpLAotKHUnUHJvZ0lkJyx1J0ljb25fJyx1J1knLE5vbmUsIE5vbmUsIHUnSWNvbicsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnT3B0aW9uYWwgZm9yZWlnbiBrZXkgaW50byB0aGUgSWNvbiBUYWJsZSwgc3BlY2lmeWluZyB0aGUgaWNvbiBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFByb2dJZC4gV2lsbCBiZSB3cml0dGVuIHVuZGVyIHRoZSBEZWZhdWx0SWNvbiBrZXkuJywpLAotKHUnUHJvZ0lkJyx1J0ljb25JbmRleCcsdSdZJywtMzI3NjcsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdPcHRpb25hbCBpY29uIGluZGV4LicsKSwKLSh1J1Byb2dJZCcsdSdQcm9nSWQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBQcm9ncmFtIElkZW50aWZpZXIuIFByaW1hcnkga2V5LicsKSwKLSh1J1Byb2dJZCcsdSdDbGFzc18nLHUnWScsTm9uZSwgTm9uZSwgdSdDbGFzcycsMSx1J0d1aWQnLE5vbmUsIHUnVGhlIENMU0lEIG9mIGFuIE9MRSBmYWN0b3J5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIFByb2dJZC4nLCksCi0odSdQcm9nSWQnLHUnUHJvZ0lkX1BhcmVudCcsdSdZJyxOb25lLCBOb25lLCB1J1Byb2dJZCcsMSx1J1RleHQnLE5vbmUsIHUnVGhlIFBhcmVudCBQcm9ncmFtIElkZW50aWZpZXIuIElmIHNwZWNpZmllZCwgdGhlIFByb2dJZCBjb2x1bW4gYmVjb21lcyBhIHZlcnNpb24gaW5kZXBlbmRlbnQgcHJvZyBpZC4nLCksCi0odSdDb21ib0JveCcsdSdUZXh0Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSB2aXNpYmxlIHRleHQgdG8gYmUgYXNzaWduZWQgdG8gdGhlIGl0ZW0uIE9wdGlvbmFsLiBJZiB0aGlzIGVudHJ5IG9yIHRoZSBlbnRpcmUgY29sdW1uIGlzIG1pc3NpbmcsIHRoZSB0ZXh0IGlzIHRoZSBzYW1lIGFzIHRoZSB2YWx1ZS4nLCksCi0odSdDb21ib0JveCcsdSdQcm9wZXJ0eScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnQSBuYW1lZCBwcm9wZXJ0eSB0byBiZSB0aWVkIHRvIHRoaXMgaXRlbS4gQWxsIHRoZSBpdGVtcyB0aWVkIHRvIHRoZSBzYW1lIHByb3BlcnR5IGJlY29tZSBwYXJ0IG9mIHRoZSBzYW1lIGNvbWJvYm94LicsKSwKLSh1J0NvbWJvQm94Jyx1J1ZhbHVlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSB2YWx1ZSBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaXRlbS4gU2VsZWN0aW5nIHRoZSBsaW5lIHdpbGwgc2V0IHRoZSBhc3NvY2lhdGVkIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuJywpLAotKHUnQ29tYm9Cb3gnLHUnT3JkZXInLHUnTicsMSwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgcG9zaXRpdmUgaW50ZWdlciB1c2VkIHRvIGRldGVybWluZSB0aGUgb3JkZXJpbmcgb2YgdGhlIGl0ZW1zIHdpdGhpbiBvbmUgbGlzdC5cdFRoZSBpbnRlZ2VycyBkbyBub3QgaGF2ZSB0byBiZSBjb25zZWN1dGl2ZS4nLCksCi0odSdDb21wTG9jYXRvcicsdSdUeXBlJyx1J1knLDAsMSxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgYm9vbGVhbiB2YWx1ZSB0aGF0IGRldGVybWluZXMgaWYgdGhlIHJlZ2lzdHJ5IHZhbHVlIGlzIGEgZmlsZW5hbWUgb3IgYSBkaXJlY3RvcnkgbG9jYXRpb24uJywpLAotKHUnQ29tcExvY2F0b3InLHUnU2lnbmF0dXJlXycsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIHRhYmxlIGtleS4gVGhlIFNpZ25hdHVyZV8gcmVwcmVzZW50cyBhIHVuaXF1ZSBmaWxlIHNpZ25hdHVyZSBhbmQgaXMgYWxzbyB0aGUgZm9yZWlnbiBrZXkgaW4gdGhlIFNpZ25hdHVyZSB0YWJsZS4nLCksCi0odSdDb21wTG9jYXRvcicsdSdDb21wb25lbnRJZCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLE5vbmUsIHUnQSBzdHJpbmcgR1VJRCB1bmlxdWUgdG8gdGhpcyBjb21wb25lbnQsIHZlcnNpb24sIGFuZCBsYW5ndWFnZS4nLCksCi0odSdDb21wbHVzJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IHJlZmVyZW5jaW5nIENvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBDb21QbHVzIGNvbXBvbmVudC4nLCksCi0odSdDb21wbHVzJyx1J0V4cFR5cGUnLHUnWScsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbVBsdXMgY29tcG9uZW50IGF0dHJpYnV0ZXMuJywpLAotKHUnRGlyZWN0b3J5Jyx1J0RpcmVjdG9yeScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVW5pcXVlIGlkZW50aWZpZXIgZm9yIGRpcmVjdG9yeSBlbnRyeSwgcHJpbWFyeSBrZXkuIElmIGEgcHJvcGVydHkgYnkgdGhpcyBuYW1lIGlzIGRlZmluZWQsIGl0IGNvbnRhaW5zIHRoZSBmdWxsIHBhdGggdG8gdGhlIGRpcmVjdG9yeS4nLCksCi0odSdEaXJlY3RvcnknLHUnRGVmYXVsdERpcicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0RlZmF1bHREaXInLE5vbmUsIHUiVGhlIGRlZmF1bHQgc3ViLXBhdGggdW5kZXIgcGFyZW50J3MgcGF0aC4iLCksCi0odSdEaXJlY3RvcnknLHUnRGlyZWN0b3J5X1BhcmVudCcsdSdZJyxOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVmZXJlbmNlIHRvIHRoZSBlbnRyeSBpbiB0aGlzIHRhYmxlIHNwZWNpZnlpbmcgdGhlIGRlZmF1bHQgcGFyZW50IGRpcmVjdG9yeS4gQSByZWNvcmQgcGFyZW50ZWQgdG8gaXRzZWxmIG9yIHdpdGggYSBOdWxsIHBhcmVudCByZXByZXNlbnRzIGEgcm9vdCBvZiB0aGUgaW5zdGFsbCB0cmVlLicsKSwKLSh1J0NvbnRyb2wnLHUnVHlwZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIHR5cGUgb2YgdGhlIGNvbnRyb2wuJywpLAotKHUnQ29udHJvbCcsdSdZJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWZXJ0aWNhbCBjb29yZGluYXRlIG9mIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicsKSwKLSh1J0NvbnRyb2wnLHUnVGV4dCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdBIHN0cmluZyB1c2VkIHRvIHNldCB0aGUgaW5pdGlhbCB0ZXh0IGNvbnRhaW5lZCB3aXRoaW4gYSBjb250cm9sIChpZiBhcHByb3ByaWF0ZSkuJywpLAotKHUnQ29udHJvbCcsdSdQcm9wZXJ0eScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIG5hbWUgb2YgYSBkZWZpbmVkIHByb3BlcnR5IHRvIGJlIGxpbmtlZCB0byB0aGlzIGNvbnRyb2wuICcsKSwKLSh1J0NvbnRyb2wnLHUnQXR0cmlidXRlcycsdSdZJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIDMyLWJpdCB3b3JkIHRoYXQgc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGUgZmxhZ3MgdG8gYmUgYXBwbGllZCB0byB0aGlzIGNvbnRyb2wuJywpLAotKHUnQ29udHJvbCcsdSdIZWlnaHQnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0hlaWdodCBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicsKSwKLSh1J0NvbnRyb2wnLHUnV2lkdGgnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1dpZHRoIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJywpLAotKHUnQ29udHJvbCcsdSdYJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdIb3Jpem9udGFsIGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJywpLAotKHUnQ29udHJvbCcsdSdDb250cm9sJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIHRoZSBjb250cm9sLiBUaGlzIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIGEgZGlhbG9nLCBidXQgY2FuIHJlcGVhdCBvbiBkaWZmZXJlbnQgZGlhbG9ncy4gJywpLAotKHUnQ29udHJvbCcsdSdDb250cm9sX05leHQnLHUnWScsTm9uZSwgTm9uZSwgdSdDb250cm9sJywyLHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgbmFtZSBvZiBhbiBvdGhlciBjb250cm9sIG9uIHRoZSBzYW1lIGRpYWxvZy4gVGhpcyBsaW5rIGRlZmluZXMgdGhlIHRhYiBvcmRlciBvZiB0aGUgY29udHJvbHMuIFRoZSBsaW5rcyBoYXZlIHRvIGZvcm0gb25lIG9yIG1vcmUgY3ljbGVzIScsKSwKLSh1J0NvbnRyb2wnLHUnRGlhbG9nXycsdSdOJyxOb25lLCBOb25lLCB1J0RpYWxvZycsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRXh0ZXJuYWwga2V5IHRvIHRoZSBEaWFsb2cgdGFibGUsIG5hbWUgb2YgdGhlIGRpYWxvZy4nLCksCi0odSdDb250cm9sJyx1J0hlbHAnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBoZWxwIHN0cmluZ3MgdXNlZCB3aXRoIHRoZSBidXR0b24uIFRoZSB0ZXh0IGlzIG9wdGlvbmFsLiAnLCksCi0odSdEaWFsb2cnLHUnQXR0cmlidXRlcycsdSdZJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIDMyLWJpdCB3b3JkIHRoYXQgc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGUgZmxhZ3MgdG8gYmUgYXBwbGllZCB0byB0aGlzIGRpYWxvZy4nLCksCi0odSdEaWFsb2cnLHUnSGVpZ2h0Jyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdIZWlnaHQgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgZGlhbG9nLicsKSwKLSh1J0RpYWxvZycsdSdXaWR0aCcsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnV2lkdGggb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgZGlhbG9nLicsKSwKLSh1J0RpYWxvZycsdSdEaWFsb2cnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgdGhlIGRpYWxvZy4nLCksCi0odSdEaWFsb2cnLHUnQ29udHJvbF9DYW5jZWwnLHUnWScsTm9uZSwgTm9uZSwgdSdDb250cm9sJywyLHUnSWRlbnRpZmllcicsTm9uZSwgdSdEZWZpbmVzIHRoZSBjYW5jZWwgY29udHJvbC4gSGl0dGluZyBlc2NhcGUgb3IgY2xpY2tpbmcgb24gdGhlIGNsb3NlIGljb24gb24gdGhlIGRpYWxvZyBpcyBlcXVpdmFsZW50IHRvIHB1c2hpbmcgdGhpcyBidXR0b24uJywpLAotKHUnRGlhbG9nJyx1J0NvbnRyb2xfRGVmYXVsdCcsdSdZJyxOb25lLCBOb25lLCB1J0NvbnRyb2wnLDIsdSdJZGVudGlmaWVyJyxOb25lLCB1J0RlZmluZXMgdGhlIGRlZmF1bHQgY29udHJvbC4gSGl0dGluZyByZXR1cm4gaXMgZXF1aXZhbGVudCB0byBwdXNoaW5nIHRoaXMgYnV0dG9uLicsKSwKLSh1J0RpYWxvZycsdSdDb250cm9sX0ZpcnN0Jyx1J04nLE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsMix1J0lkZW50aWZpZXInLE5vbmUsIHUnRGVmaW5lcyB0aGUgY29udHJvbCB0aGF0IGhhcyB0aGUgZm9jdXMgd2hlbiB0aGUgZGlhbG9nIGlzIGNyZWF0ZWQuJywpLAotKHUnRGlhbG9nJyx1J0hDZW50ZXJpbmcnLHUnTicsMCwxMDAsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdIb3Jpem9udGFsIHBvc2l0aW9uIG9mIHRoZSBkaWFsb2cgb24gYSAwLTEwMCBzY2FsZS4gMCBtZWFucyBsZWZ0IGVuZCwgMTAwIG1lYW5zIHJpZ2h0IGVuZCBvZiB0aGUgc2NyZWVuLCA1MCBjZW50ZXIuJywpLAotKHUnRGlhbG9nJyx1J1RpdGxlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1IkEgdGV4dCBzdHJpbmcgc3BlY2lmeWluZyB0aGUgdGl0bGUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB0aXRsZSBiYXIgb2YgdGhlIGRpYWxvZydzIHdpbmRvdy4iLCksCi0odSdEaWFsb2cnLHUnVkNlbnRlcmluZycsdSdOJywwLDEwMCxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZlcnRpY2FsIHBvc2l0aW9uIG9mIHRoZSBkaWFsb2cgb24gYSAwLTEwMCBzY2FsZS4gMCBtZWFucyB0b3AgZW5kLCAxMDAgbWVhbnMgYm90dG9tIGVuZCBvZiB0aGUgc2NyZWVuLCA1MCBjZW50ZXIuJywpLAotKHUnQ29udHJvbENvbmRpdGlvbicsdSdBY3Rpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdEZWZhdWx0O0Rpc2FibGU7RW5hYmxlO0hpZGU7U2hvdycsdSdUaGUgZGVzaXJlZCBhY3Rpb24gdG8gYmUgdGFrZW4gb24gdGhlIHNwZWNpZmllZCBjb250cm9sLicsKSwKLSh1J0NvbnRyb2xDb25kaXRpb24nLHUnQ29uZGl0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJyxOb25lLCB1J0Egc3RhbmRhcmQgY29uZGl0aW9uYWwgc3RhdGVtZW50IHRoYXQgc3BlY2lmaWVzIHVuZGVyIHdoaWNoIGNvbmRpdGlvbnMgdGhlIGFjdGlvbiBzaG91bGQgYmUgdHJpZ2dlcmVkLicsKSwKLSh1J0NvbnRyb2xDb25kaXRpb24nLHUnRGlhbG9nXycsdSdOJyxOb25lLCBOb25lLCB1J0RpYWxvZycsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnQSBmb3JlaWduIGtleSB0byB0aGUgRGlhbG9nIHRhYmxlLCBuYW1lIG9mIHRoZSBkaWFsb2cuJywpLAotKHUnQ29udHJvbENvbmRpdGlvbicsdSdDb250cm9sXycsdSdOJyxOb25lLCBOb25lLCB1J0NvbnRyb2wnLDIsdSdJZGVudGlmaWVyJyxOb25lLCB1J0EgZm9yZWlnbiBrZXkgdG8gdGhlIENvbnRyb2wgdGFibGUsIG5hbWUgb2YgdGhlIGNvbnRyb2wuJywpLAotKHUnQ29udHJvbEV2ZW50Jyx1J0NvbmRpdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsTm9uZSwgdSdBIHN0YW5kYXJkIGNvbmRpdGlvbmFsIHN0YXRlbWVudCB0aGF0IHNwZWNpZmllcyB1bmRlciB3aGljaCBjb25kaXRpb25zIGFuIGV2ZW50IHNob3VsZCBiZSB0cmlnZ2VyZWQuJywpLAotKHUnQ29udHJvbEV2ZW50Jyx1J09yZGVyaW5nJyx1J1knLDAsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0FuIGludGVnZXIgdXNlZCB0byBvcmRlciBzZXZlcmFsIGV2ZW50cyB0aWVkIHRvIHRoZSBzYW1lIGNvbnRyb2wuIENhbiBiZSBsZWZ0IGJsYW5rLicsKSwKLSh1J0NvbnRyb2xFdmVudCcsdSdBcmd1bWVudCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdBIHZhbHVlIHRvIGJlIHVzZWQgYXMgYSBtb2RpZmllciB3aGVuIHRyaWdnZXJpbmcgYSBwYXJ0aWN1bGFyIGV2ZW50LicsKSwKLSh1J0NvbnRyb2xFdmVudCcsdSdEaWFsb2dfJyx1J04nLE5vbmUsIE5vbmUsIHUnRGlhbG9nJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIGZvcmVpZ24ga2V5IHRvIHRoZSBEaWFsb2cgdGFibGUsIG5hbWUgb2YgdGhlIGRpYWxvZy4nLCksCi0odSdDb250cm9sRXZlbnQnLHUnQ29udHJvbF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb250cm9sJywyLHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIGZvcmVpZ24ga2V5IHRvIHRoZSBDb250cm9sIHRhYmxlLCBuYW1lIG9mIHRoZSBjb250cm9sJywpLAotKHUnQ29udHJvbEV2ZW50Jyx1J0V2ZW50Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J0FuIGlkZW50aWZpZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGV2ZW50IHRoYXQgc2hvdWxkIHRha2UgcGxhY2Ugd2hlbiB0aGUgdXNlciBpbnRlcmFjdHMgd2l0aCBjb250cm9sIHNwZWNpZmllZCBieSB0aGUgZmlyc3QgdHdvIGVudHJpZXMuJywpLAotKHUnQ3JlYXRlRm9sZGVyJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZS4nLCksCi0odSdDcmVhdGVGb2xkZXInLHUnRGlyZWN0b3J5XycsdSdOJyxOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIGNvdWxkIGJlIGZvcmVpZ24ga2V5IGludG8gdGhlIERpcmVjdG9yeSB0YWJsZS4nLCksCi0odSdDdXN0b21BY3Rpb24nLHUnVHlwZScsdSdOJywxLDE2MzgzLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIG51bWVyaWMgY3VzdG9tIGFjdGlvbiB0eXBlLCBjb25zaXN0aW5nIG9mIHNvdXJjZSBsb2NhdGlvbiwgY29kZSB0eXBlLCBlbnRyeSwgb3B0aW9uIGZsYWdzLicsKSwKLSh1J0N1c3RvbUFjdGlvbicsdSdBY3Rpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBuYW1lIG9mIGFjdGlvbiwgbm9ybWFsbHkgYXBwZWFycyBpbiBzZXF1ZW5jZSB0YWJsZSB1bmxlc3MgcHJpdmF0ZSB1c2UuJywpLAotKHUnQ3VzdG9tQWN0aW9uJyx1J1NvdXJjZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0N1c3RvbVNvdXJjZScsTm9uZSwgdSdUaGUgdGFibGUgcmVmZXJlbmNlIG9mIHRoZSBzb3VyY2Ugb2YgdGhlIGNvZGUuJywpLAotKHUnQ3VzdG9tQWN0aW9uJyx1J1RhcmdldCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdFeGNlY3V0aW9uIHBhcmFtZXRlciwgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiBjdXN0b20gYWN0aW9uJywpLAotKHUnRHJMb2NhdG9yJyx1J1NpZ25hdHVyZV8nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSBTaWduYXR1cmVfIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUgYW5kIGlzIGFsc28gdGhlIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUgdGFibGUuJywpLAotKHUnRHJMb2NhdG9yJyx1J1BhdGgnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBbnlQYXRoJyxOb25lLCB1J1RoZSBwYXRoIG9uIHRoZSB1c2VyIHN5c3RlbS4gVGhpcyBpcyBhIGVpdGhlciBhIHN1YnBhdGggYmVsb3cgdGhlIHZhbHVlIG9mIHRoZSBQYXJlbnQgb3IgYSBmdWxsIHBhdGguIFRoZSBwYXRoIG1heSBjb250YWluIHByb3BlcnRpZXMgZW5jbG9zZWQgd2l0aGluIFsgXSB0aGF0IHdpbGwgYmUgZXhwYW5kZWQuJywpLAotKHUnRHJMb2NhdG9yJyx1J0RlcHRoJyx1J1knLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgZGVwdGggYmVsb3cgdGhlIHBhdGggdG8gd2hpY2ggdGhlIFNpZ25hdHVyZV8gaXMgcmVjdXJzaXZlbHkgc2VhcmNoZWQuIElmIGFic2VudCwgdGhlIGRlcHRoIGlzIGFzc3VtZWQgdG8gYmUgMC4nLCksCi0odSdEckxvY2F0b3InLHUnUGFyZW50Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgcGFyZW50IGZpbGUgc2lnbmF0dXJlLiBJdCBpcyBhbHNvIGEgZm9yZWlnbiBrZXkgaW4gdGhlIFNpZ25hdHVyZSB0YWJsZS4gSWYgbnVsbCBhbmQgdGhlIFBhdGggY29sdW1uIGRvZXMgbm90IGV4cGFuZCB0byBhIGZ1bGwgcGF0aCwgdGhlbiBhbGwgdGhlIGZpeGVkIGRyaXZlcyBvZiB0aGUgdXNlciBzeXN0ZW0gYXJlIHNlYXJjaGVkIHVzaW5nIHRoZSBQYXRoLicsKSwKLSh1J0R1cGxpY2F0ZUZpbGUnLHUnRmlsZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGaWxlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSByZWZlcmVuY2luZyB0aGUgc291cmNlIGZpbGUgdG8gYmUgZHVwbGljYXRlZC4nLCksCi0odSdEdXBsaWNhdGVGaWxlJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IHJlZmVyZW5jaW5nIENvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBkdXBsaWNhdGUgZmlsZS4nLCksCi0odSdEdXBsaWNhdGVGaWxlJyx1J0Rlc3RGb2xkZXInLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgYSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyBhc3N1bWVkIHRvIHJlc29sdmUgdG8gdGhlIGZ1bGwgcGF0aG5hbWUgdG8gYSBkZXN0aW5hdGlvbiBmb2xkZXIuJywpLAotKHUnRHVwbGljYXRlRmlsZScsdSdEZXN0TmFtZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJyxOb25lLCB1J0ZpbGVuYW1lIHRvIGJlIGdpdmVuIHRvIHRoZSBkdXBsaWNhdGUgZmlsZS4nLCksCi0odSdEdXBsaWNhdGVGaWxlJyx1J0ZpbGVLZXknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5IHVzZWQgdG8gaWRlbnRpZnkgYSBwYXJ0aWN1bGFyIGZpbGUgZW50cnknLCksCi0odSdFbnZpcm9ubWVudCcsdSdOYW1lJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgbmFtZSBvZiB0aGUgZW52aXJvbm1lbnRhbCB2YWx1ZS4nLCksCi0odSdFbnZpcm9ubWVudCcsdSdWYWx1ZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgdmFsdWUgdG8gc2V0IGluIHRoZSBlbnZpcm9ubWVudGFsIHNldHRpbmdzLicsKSwKLSh1J0Vudmlyb25tZW50Jyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZSByZWZlcmVuY2luZyBjb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgaW5zdGFsbGluZyBvZiB0aGUgZW52aXJvbm1lbnRhbCB2YWx1ZS4nLCksCi0odSdFbnZpcm9ubWVudCcsdSdFbnZpcm9ubWVudCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBlbnZpcm9ubWVudGFsIHZhcmlhYmxlIHNldHRpbmcnLCksCi0odSdFcnJvcicsdSdFcnJvcicsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSW50ZWdlciBlcnJvciBudW1iZXIsIG9idGFpbmVkIGZyb20gaGVhZGVyIGZpbGUgSUVycm9yKC4uLikgbWFjcm9zLicsKSwKLSh1J0Vycm9yJyx1J01lc3NhZ2UnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZW1wbGF0ZScsTm9uZSwgdSdFcnJvciBmb3JtYXR0aW5nIHRlbXBsYXRlLCBvYnRhaW5lZCBmcm9tIHVzZXIgZWQuIG9yIGxvY2FsaXplcnMuJywpLAotKHUnRXZlbnRNYXBwaW5nJyx1J0RpYWxvZ18nLHUnTicsTm9uZSwgTm9uZSwgdSdEaWFsb2cnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0EgZm9yZWlnbiBrZXkgdG8gdGhlIERpYWxvZyB0YWJsZSwgbmFtZSBvZiB0aGUgRGlhbG9nLicsKSwKLSh1J0V2ZW50TWFwcGluZycsdSdDb250cm9sXycsdSdOJyxOb25lLCBOb25lLCB1J0NvbnRyb2wnLDIsdSdJZGVudGlmaWVyJyxOb25lLCB1J0EgZm9yZWlnbiBrZXkgdG8gdGhlIENvbnRyb2wgdGFibGUsIG5hbWUgb2YgdGhlIGNvbnRyb2wuJywpLAotKHUnRXZlbnRNYXBwaW5nJyx1J0V2ZW50Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdBbiBpZGVudGlmaWVyIHRoYXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBldmVudCB0aGF0IHRoZSBjb250cm9sIHN1YnNjcmliZXMgdG8uJywpLAotKHUnRXZlbnRNYXBwaW5nJyx1J0F0dHJpYnV0ZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIG5hbWUgb2YgdGhlIGNvbnRyb2wgYXR0cmlidXRlLCB0aGF0IGlzIHNldCB3aGVuIHRoaXMgZXZlbnQgaXMgcmVjZWl2ZWQuJywpLAotKHUnRXh0ZW5zaW9uJyx1J0ZlYXR1cmVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVxdWlyZWQgZm9yZWlnbiBrZXkgaW50byB0aGUgRmVhdHVyZSBUYWJsZSwgc3BlY2lmeWluZyB0aGUgZmVhdHVyZSB0byB2YWxpZGF0ZSBvciBpbnN0YWxsIGluIG9yZGVyIGZvciB0aGUgQ0xTSUQgZmFjdG9yeSB0byBiZSBvcGVyYXRpb25hbC4nLCksCi0odSdFeHRlbnNpb24nLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVxdWlyZWQgZm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IFRhYmxlLCBzcGVjaWZ5aW5nIHRoZSBjb21wb25lbnQgZm9yIHdoaWNoIHRvIHJldHVybiBhIHBhdGggd2hlbiBjYWxsZWQgdGhyb3VnaCBMb2NhdGVDb21wb25lbnQuJywpLAotKHUnRXh0ZW5zaW9uJyx1J0V4dGVuc2lvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIGV4dGVuc2lvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHRhYmxlIHJvdy4nLCksCi0odSdFeHRlbnNpb24nLHUnTUlNRV8nLHUnWScsTm9uZSwgTm9uZSwgdSdNSU1FJywxLHUnVGV4dCcsTm9uZSwgdSdPcHRpb25hbCBDb250ZXh0IGlkZW50aWZpZXIsIHR5cGljYWxseSAidHlwZS9mb3JtYXQiIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXh0ZW5zaW9uJywpLAotKHUnRXh0ZW5zaW9uJyx1J1Byb2dJZF8nLHUnWScsTm9uZSwgTm9uZSwgdSdQcm9nSWQnLDEsdSdUZXh0JyxOb25lLCB1J09wdGlvbmFsIFByb2dJZCBhc3NvY2lhdGVkIHdpdGggdGhpcyBleHRlbnNpb24uJywpLAotKHUnTUlNRScsdSdDTFNJRCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLE5vbmUsIHUnT3B0aW9uYWwgYXNzb2NpYXRlZCBDTFNJRC4nLCksCi0odSdNSU1FJyx1J0NvbnRlbnRUeXBlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdQcmltYXJ5IGtleS4gQ29udGV4dCBpZGVudGlmaWVyLCB0eXBpY2FsbHkgInR5cGUvZm9ybWF0Ii4nLCksCi0odSdNSU1FJyx1J0V4dGVuc2lvbl8nLHUnTicsTm9uZSwgTm9uZSwgdSdFeHRlbnNpb24nLDEsdSdUZXh0JyxOb25lLCB1J09wdGlvbmFsIGFzc29jaWF0ZWQgZXh0ZW5zaW9uICh3aXRob3V0IGRvdCknLCksCi0odSdGZWF0dXJlQ29tcG9uZW50cycsdSdGZWF0dXJlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZlYXR1cmUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gRmVhdHVyZSB0YWJsZS4nLCksCi0odSdGZWF0dXJlQ29tcG9uZW50cycsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIENvbXBvbmVudCB0YWJsZS4nLCksCi0odSdGaWxlU0ZQQ2F0YWxvZycsdSdGaWxlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZpbGUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjYXRhbG9nJywpLAotKHUnRmlsZVNGUENhdGFsb2cnLHUnU0ZQQ2F0YWxvZ18nLHUnTicsTm9uZSwgTm9uZSwgdSdTRlBDYXRhbG9nJywxLHUnRmlsZW5hbWUnLE5vbmUsIHUnQ2F0YWxvZyBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUnLCksCi0odSdTRlBDYXRhbG9nJyx1J1NGUENhdGFsb2cnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsTm9uZSwgdSdGaWxlIG5hbWUgZm9yIHRoZSBjYXRhbG9nLicsKSwKLSh1J1NGUENhdGFsb2cnLHUnQ2F0YWxvZycsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsTm9uZSwgdSdTRlAgQ2F0YWxvZycsKSwKLSh1J1NGUENhdGFsb2cnLHUnRGVwZW5kZW5jeScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdQYXJlbnQgY2F0YWxvZyAtIG9ubHkgdXNlZCBieSBTRlAnLCksCi0odSdGb250Jyx1J0ZpbGVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmlsZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIGZvcmVpZ24ga2V5IGludG8gRmlsZSB0YWJsZSByZWZlcmVuY2luZyBmb250IGZpbGUuJywpLAotKHUnRm9udCcsdSdGb250VGl0bGUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J0ZvbnQgbmFtZS4nLCksCi0odSdJbmlGaWxlJyx1J0FjdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1JzA7MTszJyx1J1RoZSB0eXBlIG9mIG1vZGlmaWNhdGlvbiB0byBiZSBtYWRlLCBvbmUgb2YgaWlmRW51bScsKSwKLSh1J0luaUZpbGUnLHUnVmFsdWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIHZhbHVlIHRvIGJlIHdyaXR0ZW4uJywpLAotKHUnSW5pRmlsZScsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgcmVmZXJlbmNpbmcgY29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGluc3RhbGxpbmcgb2YgdGhlIC5JTkkgdmFsdWUuJywpLAotKHUnSW5pRmlsZScsdSdGaWxlTmFtZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJyxOb25lLCB1J1RoZSAuSU5JIGZpbGUgbmFtZSBpbiB3aGljaCB0byB3cml0ZSB0aGUgaW5mb3JtYXRpb24nLCksCi0odSdJbmlGaWxlJyx1J0luaUZpbGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicsKSwKLSh1J0luaUZpbGUnLHUnRGlyUHJvcGVydHknLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIERpcmVjdG9yeSB0YWJsZSBkZW5vdGluZyB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSAuSU5JIGZpbGUgaXMuJywpLAotKHUnSW5pRmlsZScsdSdLZXknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBrZXkgYmVsb3cgU2VjdGlvbi4nLCksCi0odSdJbmlGaWxlJyx1J1NlY3Rpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBTZWN0aW9uLicsKSwKLSh1J0luaUxvY2F0b3InLHUnVHlwZScsdSdZJywwLDIsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBbiBpbnRlZ2VyIHZhbHVlIHRoYXQgZGV0ZXJtaW5lcyBpZiB0aGUgLklOSSB2YWx1ZSByZWFkIGlzIGEgZmlsZW5hbWUgb3IgYSBkaXJlY3RvcnkgbG9jYXRpb24gb3IgdG8gYmUgdXNlZCBhcyBpcyB3L28gaW50ZXJwcmV0YXRpb24uJywpLAotKHUnSW5pTG9jYXRvcicsdSdTaWduYXR1cmVfJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgdGFibGUga2V5LiBUaGUgU2lnbmF0dXJlXyByZXByZXNlbnRzIGEgdW5pcXVlIGZpbGUgc2lnbmF0dXJlIGFuZCBpcyBhbHNvIHRoZSBmb3JlaWduIGtleSBpbiB0aGUgU2lnbmF0dXJlIHRhYmxlLicsKSwKLSh1J0luaUxvY2F0b3InLHUnRmlsZU5hbWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsTm9uZSwgdSdUaGUgLklOSSBmaWxlIG5hbWUuJywpLAotKHUnSW5pTG9jYXRvcicsdSdLZXknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J0tleSB2YWx1ZSAoZm9sbG93ZWQgYnkgYW4gZXF1YWxzIHNpZ24gaW4gSU5JIGZpbGUpLicsKSwKLSh1J0luaUxvY2F0b3InLHUnU2VjdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnU2VjdGlvbiBuYW1lIHdpdGhpbiBpbiBmaWxlICh3aXRoaW4gc3F1YXJlIGJyYWNrZXRzIGluIElOSSBmaWxlKS4nLCksCi0odSdJbmlMb2NhdG9yJyx1J0ZpZWxkJyx1J1knLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgZmllbGQgaW4gdGhlIC5JTkkgbGluZS4gSWYgRmllbGQgaXMgbnVsbCBvciAwIHRoZSBlbnRpcmUgbGluZSBpcyByZWFkLicsKSwKLSh1J0luc3RhbGxFeGVjdXRlU2VxdWVuY2UnLHUnQWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGFjdGlvbiB0byBpbnZva2UsIGVpdGhlciBpbiB0aGUgZW5naW5lIG9yIHRoZSBoYW5kbGVyIERMTC4nLCksCi0odSdJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlJyx1J0NvbmRpdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nLCksCi0odSdJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlJyx1J1NlcXVlbmNlJyx1J1knLC00LDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtYmVyIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc29ydCBvcmRlciBpbiB3aGljaCB0aGUgYWN0aW9ucyBhcmUgdG8gYmUgZXhlY3V0ZWQuICBMZWF2ZSBibGFuayB0byBzdXBwcmVzcyBhY3Rpb24uJywpLAotKHUnSW5zdGFsbFVJU2VxdWVuY2UnLHUnQWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGFjdGlvbiB0byBpbnZva2UsIGVpdGhlciBpbiB0aGUgZW5naW5lIG9yIHRoZSBoYW5kbGVyIERMTC4nLCksCi0odSdJbnN0YWxsVUlTZXF1ZW5jZScsdSdDb25kaXRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLE5vbmUsIHUnT3B0aW9uYWwgZXhwcmVzc2lvbiB3aGljaCBza2lwcyB0aGUgYWN0aW9uIGlmIGV2YWx1YXRlcyB0byBleHBGYWxzZS5JZiB0aGUgZXhwcmVzc2lvbiBzeW50YXggaXMgaW52YWxpZCwgdGhlIGVuZ2luZSB3aWxsIHRlcm1pbmF0ZSwgcmV0dXJuaW5nIGllc0JhZEFjdGlvbkRhdGEuJywpLAotKHUnSW5zdGFsbFVJU2VxdWVuY2UnLHUnU2VxdWVuY2UnLHUnWScsLTQsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOdW1iZXIgdGhhdCBkZXRlcm1pbmVzIHRoZSBzb3J0IG9yZGVyIGluIHdoaWNoIHRoZSBhY3Rpb25zIGFyZSB0byBiZSBleGVjdXRlZC4gIExlYXZlIGJsYW5rIHRvIHN1cHByZXNzIGFjdGlvbi4nLCksCi0odSdJc29sYXRlZENvbXBvbmVudCcsdSdDb21wb25lbnRfQXBwbGljYXRpb24nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0tleSB0byBDb21wb25lbnQgdGFibGUgaXRlbSBmb3IgYXBwbGljYXRpb24nLCksCi0odSdJc29sYXRlZENvbXBvbmVudCcsdSdDb21wb25lbnRfU2hhcmVkJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdLZXkgdG8gQ29tcG9uZW50IHRhYmxlIGl0ZW0gdG8gYmUgaXNvbGF0ZWQnLCksCi0odSdMYXVuY2hDb25kaXRpb24nLHUnRGVzY3JpcHRpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnTG9jYWxpemFibGUgdGV4dCB0byBkaXNwbGF5IHdoZW4gY29uZGl0aW9uIGZhaWxzIGFuZCBpbnN0YWxsIG11c3QgYWJvcnQuJywpLAotKHUnTGF1bmNoQ29uZGl0aW9uJyx1J0NvbmRpdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsTm9uZSwgdSdFeHByZXNzaW9uIHdoaWNoIG11c3QgZXZhbHVhdGUgdG8gVFJVRSBpbiBvcmRlciBmb3IgaW5zdGFsbCB0byBjb21tZW5jZS4nLCksCi0odSdMaXN0Qm94Jyx1J1RleHQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSB2aXNpYmxlIHRleHQgdG8gYmUgYXNzaWduZWQgdG8gdGhlIGl0ZW0uIE9wdGlvbmFsLiBJZiB0aGlzIGVudHJ5IG9yIHRoZSBlbnRpcmUgY29sdW1uIGlzIG1pc3NpbmcsIHRoZSB0ZXh0IGlzIHRoZSBzYW1lIGFzIHRoZSB2YWx1ZS4nLCksCi0odSdMaXN0Qm94Jyx1J1Byb3BlcnR5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIG5hbWVkIHByb3BlcnR5IHRvIGJlIHRpZWQgdG8gdGhpcyBpdGVtLiBBbGwgdGhlIGl0ZW1zIHRpZWQgdG8gdGhlIHNhbWUgcHJvcGVydHkgYmVjb21lIHBhcnQgb2YgdGhlIHNhbWUgbGlzdGJveC4nLCksCi0odSdMaXN0Qm94Jyx1J1ZhbHVlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSB2YWx1ZSBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaXRlbS4gU2VsZWN0aW5nIHRoZSBsaW5lIHdpbGwgc2V0IHRoZSBhc3NvY2lhdGVkIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuJywpLAotKHUnTGlzdEJveCcsdSdPcmRlcicsdSdOJywxLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSBwb3NpdGl2ZSBpbnRlZ2VyIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBvcmRlcmluZyBvZiB0aGUgaXRlbXMgd2l0aGluIG9uZSBsaXN0Li5UaGUgaW50ZWdlcnMgZG8gbm90IGhhdmUgdG8gYmUgY29uc2VjdXRpdmUuJywpLAotKHUnTGlzdFZpZXcnLHUnVGV4dCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIHZpc2libGUgdGV4dCB0byBiZSBhc3NpZ25lZCB0byB0aGUgaXRlbS4gT3B0aW9uYWwuIElmIHRoaXMgZW50cnkgb3IgdGhlIGVudGlyZSBjb2x1bW4gaXMgbWlzc2luZywgdGhlIHRleHQgaXMgdGhlIHNhbWUgYXMgdGhlIHZhbHVlLicsKSwKLSh1J0xpc3RWaWV3Jyx1J1Byb3BlcnR5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIG5hbWVkIHByb3BlcnR5IHRvIGJlIHRpZWQgdG8gdGhpcyBpdGVtLiBBbGwgdGhlIGl0ZW1zIHRpZWQgdG8gdGhlIHNhbWUgcHJvcGVydHkgYmVjb21lIHBhcnQgb2YgdGhlIHNhbWUgbGlzdHZpZXcuJywpLAotKHUnTGlzdFZpZXcnLHUnVmFsdWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSB2YWx1ZSBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaXRlbS4gU2VsZWN0aW5nIHRoZSBsaW5lIHdpbGwgc2V0IHRoZSBhc3NvY2lhdGVkIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuJywpLAotKHUnTGlzdFZpZXcnLHUnT3JkZXInLHUnTicsMSwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgcG9zaXRpdmUgaW50ZWdlciB1c2VkIHRvIGRldGVybWluZSB0aGUgb3JkZXJpbmcgb2YgdGhlIGl0ZW1zIHdpdGhpbiBvbmUgbGlzdC4uVGhlIGludGVnZXJzIGRvIG5vdCBoYXZlIHRvIGJlIGNvbnNlY3V0aXZlLicsKSwKLSh1J0xpc3RWaWV3Jyx1J0JpbmFyeV8nLHUnWScsTm9uZSwgTm9uZSwgdSdCaW5hcnknLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSBuYW1lIG9mIHRoZSBpY29uIHRvIGJlIGRpc3BsYXllZCB3aXRoIHRoZSBpY29uLiBUaGUgYmluYXJ5IGluZm9ybWF0aW9uIGlzIGxvb2tlZCB1cCBmcm9tIHRoZSBCaW5hcnkgVGFibGUuJywpLAotKHUnTG9ja1Blcm1pc3Npb25zJyx1J1RhYmxlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsdSdEaXJlY3Rvcnk7RmlsZTtSZWdpc3RyeScsdSdSZWZlcmVuY2UgdG8gYW5vdGhlciB0YWJsZSBuYW1lJywpLAotKHUnTG9ja1Blcm1pc3Npb25zJyx1J0RvbWFpbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdEb21haW4gbmFtZSBmb3IgdXNlciB3aG9zZSBwZXJtaXNzaW9ucyBhcmUgYmVpbmcgc2V0LiAodXN1YWxseSBhIHByb3BlcnR5KScsKSwKLSh1J0xvY2tQZXJtaXNzaW9ucycsdSdMb2NrT2JqZWN0Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIFJlZ2lzdHJ5IG9yIEZpbGUgdGFibGUnLCksCi0odSdMb2NrUGVybWlzc2lvbnMnLHUnUGVybWlzc2lvbicsdSdZJywtMjE0NzQ4MzY0NywyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUGVybWlzc2lvbiBBY2Nlc3MgbWFzay4gIEZ1bGwgQ29udHJvbCA9IDI2ODQzNTQ1NiAoR0VORVJJQ19BTEwgPSAweDEwMDAwMDAwKScsKSwKLSh1J0xvY2tQZXJtaXNzaW9ucycsdSdVc2VyJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1VzZXIgZm9yIHBlcm1pc3Npb25zIHRvIGJlIHNldC4gICh1c3VhbGx5IGEgcHJvcGVydHkpJywpLAotKHUnTWVkaWEnLHUnU291cmNlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUHJvcGVydHknLE5vbmUsIHUnVGhlIHByb3BlcnR5IGRlZmluaW5nIHRoZSBsb2NhdGlvbiBvZiB0aGUgY2FiaW5ldCBmaWxlLicsKSwKLSh1J01lZGlhJyx1J0NhYmluZXQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDYWJpbmV0JyxOb25lLCB1J0lmIHNvbWUgb3IgYWxsIG9mIHRoZSBmaWxlcyBzdG9yZWQgb24gdGhlIG1lZGlhIGFyZSBjb21wcmVzc2VkIGluIGEgY2FiaW5ldCwgdGhlIG5hbWUgb2YgdGhhdCBjYWJpbmV0LicsKSwKLSh1J01lZGlhJyx1J0Rpc2tJZCcsdSdOJywxLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUHJpbWFyeSBrZXksIGludGVnZXIgdG8gZGV0ZXJtaW5lIHNvcnQgb3JkZXIgZm9yIHRhYmxlLicsKSwKLSh1J01lZGlhJyx1J0Rpc2tQcm9tcHQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J0Rpc2sgbmFtZTogdGhlIHZpc2libGUgdGV4dCBhY3R1YWxseSBwcmludGVkIG9uIHRoZSBkaXNrLiAgVGhpcyB3aWxsIGJlIHVzZWQgdG8gcHJvbXB0IHRoZSB1c2VyIHdoZW4gdGhpcyBkaXNrIG5lZWRzIHRvIGJlIGluc2VydGVkLicsKSwKLSh1J01lZGlhJyx1J0xhc3RTZXF1ZW5jZScsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZSBzZXF1ZW5jZSBudW1iZXIgZm9yIHRoZSBsYXN0IGZpbGUgZm9yIHRoaXMgbWVkaWEuJywpLAotKHUnTWVkaWEnLHUnVm9sdW1lTGFiZWwnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBsYWJlbCBhdHRyaWJ1dGVkIHRvIHRoZSB2b2x1bWUuJywpLAotKHUnTW9kdWxlQ29tcG9uZW50cycsdSdDb21wb25lbnQnLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0NvbXBvbmVudCBjb250YWluZWQgaW4gdGhlIG1vZHVsZS4nLCksCi0odSdNb2R1bGVDb21wb25lbnRzJyx1J0xhbmd1YWdlJyx1J04nLE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywyLE5vbmUsIE5vbmUsIHUnRGVmYXVsdCBsYW5ndWFnZSBJRCBmb3IgbW9kdWxlIChtYXkgYmUgY2hhbmdlZCBieSB0cmFuc2Zvcm0pLicsKSwKLSh1J01vZHVsZUNvbXBvbmVudHMnLHUnTW9kdWxlSUQnLHUnTicsTm9uZSwgTm9uZSwgdSdNb2R1bGVTaWduYXR1cmUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J01vZHVsZSBjb250YWluaW5nIHRoZSBjb21wb25lbnQuJywpLAotKHUnTW9kdWxlU2lnbmF0dXJlJyx1J0xhbmd1YWdlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRGVmYXVsdCBkZWNpbWFsIGxhbmd1YWdlIG9mIG1vZHVsZS4nLCksCi0odSdNb2R1bGVTaWduYXR1cmUnLHUnVmVyc2lvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZlcnNpb24nLE5vbmUsIHUnVmVyc2lvbiBvZiB0aGUgbW9kdWxlLicsKSwKLSh1J01vZHVsZVNpZ25hdHVyZScsdSdNb2R1bGVJRCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTW9kdWxlIGlkZW50aWZpZXIgKFN0cmluZy5HVUlEKS4nLCksCi0odSdNb2R1bGVEZXBlbmRlbmN5Jyx1J01vZHVsZUlEJyx1J04nLE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdNb2R1bGUgcmVxdWlyaW5nIHRoZSBkZXBlbmRlbmN5LicsKSwKLSh1J01vZHVsZURlcGVuZGVuY3knLHUnTW9kdWxlTGFuZ3VhZ2UnLHUnTicsTm9uZSwgTm9uZSwgdSdNb2R1bGVTaWduYXR1cmUnLDIsTm9uZSwgTm9uZSwgdSdMYW5ndWFnZSBvZiBtb2R1bGUgcmVxdWlyaW5nIHRoZSBkZXBlbmRlbmN5LicsKSwKLSh1J01vZHVsZURlcGVuZGVuY3knLHUnUmVxdWlyZWRJRCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1N0cmluZy5HVUlEIG9mIHJlcXVpcmVkIG1vZHVsZS4nLCksCi0odSdNb2R1bGVEZXBlbmRlbmN5Jyx1J1JlcXVpcmVkTGFuZ3VhZ2UnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdMYW5ndWFnZUlEIG9mIHRoZSByZXF1aXJlZCBtb2R1bGUuJywpLAotKHUnTW9kdWxlRGVwZW5kZW5jeScsdSdSZXF1aXJlZFZlcnNpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWZXJzaW9uJyxOb25lLCB1J1ZlcnNpb24gb2YgdGhlIHJlcXVpcmVkIHZlcnNpb24uJywpLAotKHUnTW9kdWxlRXhjbHVzaW9uJyx1J01vZHVsZUlEJyx1J04nLE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdTdHJpbmcuR1VJRCBvZiBtb2R1bGUgd2l0aCBleGNsdXNpb24gcmVxdWlyZW1lbnQuJywpLAotKHUnTW9kdWxlRXhjbHVzaW9uJyx1J01vZHVsZUxhbmd1YWdlJyx1J04nLE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywyLE5vbmUsIE5vbmUsIHUnTGFuZ3VhZ2VJRCBvZiBtb2R1bGUgd2l0aCBleGNsdXNpb24gcmVxdWlyZW1lbnQuJywpLAotKHUnTW9kdWxlRXhjbHVzaW9uJyx1J0V4Y2x1ZGVkSUQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTdHJpbmcuR1VJRCBvZiBleGNsdWRlZCBtb2R1bGUuJywpLAotKHUnTW9kdWxlRXhjbHVzaW9uJyx1J0V4Y2x1ZGVkTGFuZ3VhZ2UnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdMYW5ndWFnZSBvZiBleGNsdWRlZCBtb2R1bGUuJywpLAotKHUnTW9kdWxlRXhjbHVzaW9uJyx1J0V4Y2x1ZGVkTWF4VmVyc2lvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZlcnNpb24nLE5vbmUsIHUnTWF4aW11bSB2ZXJzaW9uIG9mIGV4Y2x1ZGVkIG1vZHVsZS4nLCksCi0odSdNb2R1bGVFeGNsdXNpb24nLHUnRXhjbHVkZWRNaW5WZXJzaW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVyc2lvbicsTm9uZSwgdSdNaW5pbXVtIHZlcnNpb24gb2YgZXhjbHVkZWQgbW9kdWxlLicsKSwKLSh1J01vdmVGaWxlJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0lmIHRoaXMgY29tcG9uZW50IGlzIG5vdCAic2VsZWN0ZWQiIGZvciBpbnN0YWxsYXRpb24gb3IgcmVtb3ZhbCwgbm8gYWN0aW9uIHdpbGwgYmUgdGFrZW4gb24gdGhlIGFzc29jaWF0ZWQgTW92ZUZpbGUgZW50cnknLCksCi0odSdNb3ZlRmlsZScsdSdEZXN0Rm9sZGVyJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGEgcHJvcGVydHkgd2hvc2UgdmFsdWUgaXMgYXNzdW1lZCB0byByZXNvbHZlIHRvIHRoZSBmdWxsIHBhdGggdG8gdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeScsKSwKLSh1J01vdmVGaWxlJyx1J0Rlc3ROYW1lJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLE5vbmUsIHUnTmFtZSB0byBiZSBnaXZlbiB0byB0aGUgb3JpZ2luYWwgZmlsZSBhZnRlciBpdCBpcyBtb3ZlZCBvciBjb3BpZWQuICBJZiBibGFuaywgdGhlIGRlc3RpbmF0aW9uIGZpbGUgd2lsbCBiZSBnaXZlbiB0aGUgc2FtZSBuYW1lIGFzIHRoZSBzb3VyY2UgZmlsZScsKSwKLSh1J01vdmVGaWxlJyx1J0ZpbGVLZXknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5IHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyBhIHBhcnRpY3VsYXIgTW92ZUZpbGUgcmVjb3JkJywpLAotKHUnTW92ZUZpbGUnLHUnT3B0aW9ucycsdSdOJywwLDEsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJbnRlZ2VyIHZhbHVlIHNwZWNpZnlpbmcgdGhlIE1vdmVGaWxlIG9wZXJhdGluZyBtb2RlLCBvbmUgb2YgaW1mb0VudW0nLCksCi0odSdNb3ZlRmlsZScsdSdTb3VyY2VGb2xkZXInLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgYSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyBhc3N1bWVkIHRvIHJlc29sdmUgdG8gdGhlIGZ1bGwgcGF0aCB0byB0aGUgc291cmNlIGRpcmVjdG9yeScsKSwKLSh1J01vdmVGaWxlJyx1J1NvdXJjZU5hbWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1Ik5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlKHMpIHRvIGJlIG1vdmVkIG9yIGNvcGllZC4gIENhbiBjb250YWluIHRoZSAnKicgb3IgJz8nIHdpbGRjYXJkcy4iLCksCi0odSdNc2lBc3NlbWJseScsdSdBdHRyaWJ1dGVzJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQXNzZW1ibHkgYXR0cmlidXRlcycsKSwKLSh1J01zaUFzc2VtYmx5Jyx1J0ZlYXR1cmVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byBGZWF0dXJlIHRhYmxlLicsKSwKLSh1J01zaUFzc2VtYmx5Jyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gQ29tcG9uZW50IHRhYmxlLicsKSwKLSh1J01zaUFzc2VtYmx5Jyx1J0ZpbGVfQXBwbGljYXRpb24nLHUnWScsTm9uZSwgTm9uZSwgdSdGaWxlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIEZpbGUgdGFibGUsIGRlbm90aW5nIHRoZSBhcHBsaWNhdGlvbiBjb250ZXh0IGZvciBwcml2YXRlIGFzc2VtYmxpZXMuIE51bGwgZm9yIGdsb2JhbCBhc3NlbWJsaWVzLicsKSwKLSh1J01zaUFzc2VtYmx5Jyx1J0ZpbGVfTWFuaWZlc3QnLHUnWScsTm9uZSwgTm9uZSwgdSdGaWxlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBGaWxlIHRhYmxlIGRlbm90aW5nIHRoZSBtYW5pZmVzdCBmaWxlIGZvciB0aGUgYXNzZW1ibHkuJywpLAotKHUnTXNpQXNzZW1ibHlOYW1lJyx1J05hbWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBuYW1lIHBhcnQgb2YgdGhlIG5hbWUtdmFsdWUgcGFpcnMgZm9yIHRoZSBhc3NlbWJseSBuYW1lLicsKSwKLSh1J01zaUFzc2VtYmx5TmFtZScsdSdWYWx1ZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIHZhbHVlIHBhcnQgb2YgdGhlIG5hbWUtdmFsdWUgcGFpcnMgZm9yIHRoZSBhc3NlbWJseSBuYW1lLicsKSwKLSh1J01zaUFzc2VtYmx5TmFtZScsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIENvbXBvbmVudCB0YWJsZS4nLCksCi0odSdNc2lEaWdpdGFsQ2VydGlmaWNhdGUnLHUnQ2VydERhdGEnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdCaW5hcnknLE5vbmUsIHUnQSBjZXJ0aWZpY2F0ZSBjb250ZXh0IGJsb2IgZm9yIGEgc2lnbmVyIGNlcnRpZmljYXRlJywpLAotKHUnTXNpRGlnaXRhbENlcnRpZmljYXRlJyx1J0RpZ2l0YWxDZXJ0aWZpY2F0ZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJvdycsKSwKLSh1J01zaURpZ2l0YWxTaWduYXR1cmUnLHUnVGFibGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdNZWRpYScsdSdSZWZlcmVuY2UgdG8gYW5vdGhlciB0YWJsZSBuYW1lIChvbmx5IE1lZGlhIHRhYmxlIGlzIHN1cHBvcnRlZCknLCksCi0odSdNc2lEaWdpdGFsU2lnbmF0dXJlJyx1J0RpZ2l0YWxDZXJ0aWZpY2F0ZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdNc2lEaWdpdGFsQ2VydGlmaWNhdGUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IHRvIE1zaURpZ2l0YWxDZXJ0aWZpY2F0ZSB0YWJsZSBpZGVudGlmeWluZyB0aGUgc2lnbmVyIGNlcnRpZmljYXRlJywpLAotKHUnTXNpRGlnaXRhbFNpZ25hdHVyZScsdSdIYXNoJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JyxOb25lLCB1J1RoZSBlbmNvZGVkIGhhc2ggYmxvYiBmcm9tIHRoZSBkaWdpdGFsIHNpZ25hdHVyZScsKSwKLSh1J01zaURpZ2l0YWxTaWduYXR1cmUnLHUnU2lnbk9iamVjdCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnRm9yZWlnbiBrZXkgdG8gTWVkaWEgdGFibGUnLCksCi0odSdNc2lGaWxlSGFzaCcsdSdGaWxlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZpbGUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBmb3JlaWduIGtleSBpbnRvIEZpbGUgdGFibGUgcmVmZXJlbmNpbmcgZmlsZSB3aXRoIHRoaXMgaGFzaCcsKSwKLSh1J01zaUZpbGVIYXNoJyx1J09wdGlvbnMnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZhcmlvdXMgb3B0aW9ucyBhbmQgYXR0cmlidXRlcyBmb3IgdGhpcyBoYXNoLicsKSwKLSh1J01zaUZpbGVIYXNoJyx1J0hhc2hQYXJ0MScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NpemUgb2YgZmlsZSBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS4nLCksCi0odSdNc2lGaWxlSGFzaCcsdSdIYXNoUGFydDInLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTaXplIG9mIGZpbGUgaW4gYnl0ZXMgKGxvbmcgaW50ZWdlcikuJywpLAotKHUnTXNpRmlsZUhhc2gnLHUnSGFzaFBhcnQzJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2l6ZSBvZiBmaWxlIGluIGJ5dGVzIChsb25nIGludGVnZXIpLicsKSwKLSh1J01zaUZpbGVIYXNoJyx1J0hhc2hQYXJ0NCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NpemUgb2YgZmlsZSBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS4nLCksCi0odSdNc2lQYXRjaEhlYWRlcnMnLHUnU3RyZWFtUmVmJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleS4gQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJvdy4nLCksCi0odSdNc2lQYXRjaEhlYWRlcnMnLHUnSGVhZGVyJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JyxOb25lLCB1J0JpbmFyeSBzdHJlYW0uIFRoZSBwYXRjaCBoZWFkZXIsIHVzZWQgZm9yIHBhdGNoIHZhbGlkYXRpb24uJywpLAotKHUnT0RCQ0F0dHJpYnV0ZScsdSdWYWx1ZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVmFsdWUgZm9yIE9EQkMgZHJpdmVyIGF0dHJpYnV0ZScsKSwKLSh1J09EQkNBdHRyaWJ1dGUnLHUnQXR0cmlidXRlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdOYW1lIG9mIE9EQkMgZHJpdmVyIGF0dHJpYnV0ZScsKSwKLSh1J09EQkNBdHRyaWJ1dGUnLHUnRHJpdmVyXycsdSdOJyxOb25lLCBOb25lLCB1J09EQkNEcml2ZXInLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlZmVyZW5jZSB0byBPREJDIGRyaXZlciBpbiBPREJDRHJpdmVyIHRhYmxlJywpLAotKHUnT0RCQ0RyaXZlcicsdSdEZXNjcmlwdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGV4dCB1c2VkIGFzIHJlZ2lzdGVyZWQgbmFtZSBmb3IgZHJpdmVyLCBub24tbG9jYWxpemVkJywpLAotKHUnT0RCQ0RyaXZlcicsdSdGaWxlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZpbGUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlZmVyZW5jZSB0byBrZXkgZHJpdmVyIGZpbGUnLCksCi0odSdPREJDRHJpdmVyJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlZmVyZW5jZSB0byBhc3NvY2lhdGVkIGNvbXBvbmVudCcsKSwKLSh1J09EQkNEcml2ZXInLHUnRHJpdmVyJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZC5pbnRlcm5hbCB0b2tlbiBmb3IgZHJpdmVyJywpLAotKHUnT0RCQ0RyaXZlcicsdSdGaWxlX1NldHVwJyx1J1knLE5vbmUsIE5vbmUsIHUnRmlsZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnT3B0aW9uYWwgcmVmZXJlbmNlIHRvIGtleSBkcml2ZXIgc2V0dXAgRExMJywpLAotKHUnT0RCQ0RhdGFTb3VyY2UnLHUnRGVzY3JpcHRpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RleHQgdXNlZCBhcyByZWdpc3RlcmVkIG5hbWUgZm9yIGRhdGEgc291cmNlJywpLAotKHUnT0RCQ0RhdGFTb3VyY2UnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVmZXJlbmNlIHRvIGFzc29jaWF0ZWQgY29tcG9uZW50JywpLAotKHUnT0RCQ0RhdGFTb3VyY2UnLHUnRGF0YVNvdXJjZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQuaW50ZXJuYWwgdG9rZW4gZm9yIGRhdGEgc291cmNlJywpLAotKHUnT0RCQ0RhdGFTb3VyY2UnLHUnRHJpdmVyRGVzY3JpcHRpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1JlZmVyZW5jZSB0byBkcml2ZXIgZGVzY3JpcHRpb24sIG1heSBiZSBleGlzdGluZyBkcml2ZXInLCksCi0odSdPREJDRGF0YVNvdXJjZScsdSdSZWdpc3RyYXRpb24nLHUnTicsMCwxLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUmVnaXN0cmF0aW9uIG9wdGlvbjogMD1tYWNoaW5lLCAxPXVzZXIsIG90aGVycyB0LmIuZC4nLCksCi0odSdPREJDU291cmNlQXR0cmlidXRlJyx1J1ZhbHVlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdWYWx1ZSBmb3IgT0RCQyBkYXRhIHNvdXJjZSBhdHRyaWJ1dGUnLCksCi0odSdPREJDU291cmNlQXR0cmlidXRlJyx1J0F0dHJpYnV0ZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnTmFtZSBvZiBPREJDIGRhdGEgc291cmNlIGF0dHJpYnV0ZScsKSwKLSh1J09EQkNTb3VyY2VBdHRyaWJ1dGUnLHUnRGF0YVNvdXJjZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdPREJDRGF0YVNvdXJjZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVmZXJlbmNlIHRvIE9EQkMgZGF0YSBzb3VyY2UgaW4gT0RCQ0RhdGFTb3VyY2UgdGFibGUnLCksCi0odSdPREJDVHJhbnNsYXRvcicsdSdEZXNjcmlwdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGV4dCB1c2VkIGFzIHJlZ2lzdGVyZWQgbmFtZSBmb3IgdHJhbnNsYXRvcicsKSwKLSh1J09EQkNUcmFuc2xhdG9yJyx1J0ZpbGVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmlsZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVmZXJlbmNlIHRvIGtleSB0cmFuc2xhdG9yIGZpbGUnLCksCi0odSdPREJDVHJhbnNsYXRvcicsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZWZlcmVuY2UgdG8gYXNzb2NpYXRlZCBjb21wb25lbnQnLCksCi0odSdPREJDVHJhbnNsYXRvcicsdSdGaWxlX1NldHVwJyx1J1knLE5vbmUsIE5vbmUsIHUnRmlsZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnT3B0aW9uYWwgcmVmZXJlbmNlIHRvIGtleSB0cmFuc2xhdG9yIHNldHVwIERMTCcsKSwKLSh1J09EQkNUcmFuc2xhdG9yJyx1J1RyYW5zbGF0b3InLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkLmludGVybmFsIHRva2VuIGZvciB0cmFuc2xhdG9yJywpLAotKHUnUGF0Y2gnLHUnU2VxdWVuY2UnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ByaW1hcnkga2V5LCBzZXF1ZW5jZSB3aXRoIHJlc3BlY3QgdG8gdGhlIG1lZGlhIGltYWdlczsgb3JkZXIgbXVzdCB0cmFjayBjYWJpbmV0IG9yZGVyLicsKSwKLSh1J1BhdGNoJyx1J0F0dHJpYnV0ZXMnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ludGVnZXIgY29udGFpbmluZyBiaXQgZmxhZ3MgcmVwcmVzZW50aW5nIHBhdGNoIGF0dHJpYnV0ZXMnLCksCi0odSdQYXRjaCcsdSdGaWxlXycsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4sIGZvcmVpZ24ga2V5IHRvIEZpbGUgdGFibGUsIG11c3QgbWF0Y2ggaWRlbnRpZmllciBpbiBjYWJpbmV0LicsKSwKLSh1J1BhdGNoJyx1J0hlYWRlcicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsTm9uZSwgdSdCaW5hcnkgc3RyZWFtLiBUaGUgcGF0Y2ggaGVhZGVyLCB1c2VkIGZvciBwYXRjaCB2YWxpZGF0aW9uLicsKSwKLSh1J1BhdGNoJyx1J1BhdGNoU2l6ZScsdSdOJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTaXplIG9mIHBhdGNoIGluIGJ5dGVzIChsb25nIGludGVnZXIpLicsKSwKLSh1J1BhdGNoJyx1J1N0cmVhbVJlZl8nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J0lkZW50aWZpZXIuIEZvcmVpZ24ga2V5IHRvIHRoZSBTdHJlYW1SZWYgY29sdW1uIG9mIHRoZSBNc2lQYXRjaEhlYWRlcnMgdGFibGUuJywpLAotKHUnUGF0Y2hQYWNrYWdlJyx1J01lZGlhXycsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9yZWlnbiBrZXkgdG8gRGlza0lkIGNvbHVtbiBvZiBNZWRpYSB0YWJsZS4gSW5kaWNhdGVzIHRoZSBkaXNrIGNvbnRhaW5pbmcgdGhlIHBhdGNoIHBhY2thZ2UuJywpLAotKHUnUGF0Y2hQYWNrYWdlJyx1J1BhdGNoSWQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJyxOb25lLCB1J0EgdW5pcXVlIHN0cmluZyBHVUlEIHJlcHJlc2VudGluZyB0aGlzIHBhdGNoLicsKSwKLSh1J1B1Ymxpc2hDb21wb25lbnQnLHUnRmVhdHVyZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBGZWF0dXJlIHRhYmxlLicsKSwKLSh1J1B1Ymxpc2hDb21wb25lbnQnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlLicsKSwKLSh1J1B1Ymxpc2hDb21wb25lbnQnLHUnQ29tcG9uZW50SWQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJyxOb25lLCB1J0Egc3RyaW5nIEdVSUQgdGhhdCByZXByZXNlbnRzIHRoZSBjb21wb25lbnQgaWQgdGhhdCB3aWxsIGJlIHJlcXVlc3RlZCBieSB0aGUgYWxpZW4gcHJvZHVjdC4nLCksCi0odSdQdWJsaXNoQ29tcG9uZW50Jyx1J0FwcERhdGEnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoaXMgaXMgbG9jYWxpc2FibGUgQXBwbGljYXRpb24gc3BlY2lmaWMgZGF0YSB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSBRdWFsaWZpZWQgQ29tcG9uZW50LicsKSwKLSh1J1B1Ymxpc2hDb21wb25lbnQnLHUnUXVhbGlmaWVyJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGlzIGlzIGRlZmluZWQgb25seSB3aGVuIHRoZSBDb21wb25lbnRJZCBjb2x1bW4gaXMgYW4gUXVhbGlmaWVkIENvbXBvbmVudCBJZC4gVGhpcyBpcyB0aGUgUXVhbGlmaWVyIGZvciBQcm92aWRlQ29tcG9uZW50SW5kaXJlY3QuJywpLAotKHUnUmFkaW9CdXR0b24nLHUnWScsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHZlcnRpY2FsIGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIHJhZGlvIGJ1dHRvbi4nLCksCi0odSdSYWRpb0J1dHRvbicsdSdUZXh0Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgdmlzaWJsZSB0aXRsZSB0byBiZSBhc3NpZ25lZCB0byB0aGUgcmFkaW8gYnV0dG9uLicsKSwKLSh1J1JhZGlvQnV0dG9uJyx1J1Byb3BlcnR5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIG5hbWVkIHByb3BlcnR5IHRvIGJlIHRpZWQgdG8gdGhpcyByYWRpbyBidXR0b24uIEFsbCB0aGUgYnV0dG9ucyB0aWVkIHRvIHRoZSBzYW1lIHByb3BlcnR5IGJlY29tZSBwYXJ0IG9mIHRoZSBzYW1lIGdyb3VwLicsKSwKLSh1J1JhZGlvQnV0dG9uJyx1J0hlaWdodCcsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGhlaWdodCBvZiB0aGUgYnV0dG9uLicsKSwKLSh1J1JhZGlvQnV0dG9uJyx1J1dpZHRoJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgd2lkdGggb2YgdGhlIGJ1dHRvbi4nLCksCi0odSdSYWRpb0J1dHRvbicsdSdYJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgaG9yaXpvbnRhbCBjb29yZGluYXRlIG9mIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSByYWRpbyBidXR0b24uJywpLAotKHUnUmFkaW9CdXR0b24nLHUnVmFsdWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIHZhbHVlIHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhpcyBidXR0b24uIFNlbGVjdGluZyB0aGUgYnV0dG9uIHdpbGwgc2V0IHRoZSBhc3NvY2lhdGVkIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuJywpLAotKHUnUmFkaW9CdXR0b24nLHUnT3JkZXInLHUnTicsMSwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgcG9zaXRpdmUgaW50ZWdlciB1c2VkIHRvIGRldGVybWluZSB0aGUgb3JkZXJpbmcgb2YgdGhlIGl0ZW1zIHdpdGhpbiBvbmUgbGlzdC4uVGhlIGludGVnZXJzIGRvIG5vdCBoYXZlIHRvIGJlIGNvbnNlY3V0aXZlLicsKSwKLSh1J1JhZGlvQnV0dG9uJyx1J0hlbHAnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBoZWxwIHN0cmluZ3MgdXNlZCB3aXRoIHRoZSBidXR0b24uIFRoZSB0ZXh0IGlzIG9wdGlvbmFsLicsKSwKLSh1J1JlZ2lzdHJ5Jyx1J05hbWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIHJlZ2lzdHJ5IHZhbHVlIG5hbWUuJywpLAotKHUnUmVnaXN0cnknLHUnVmFsdWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIHJlZ2lzdHJ5IHZhbHVlLicsKSwKLSh1J1JlZ2lzdHJ5Jyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZSByZWZlcmVuY2luZyBjb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgaW5zdGFsbGluZyBvZiB0aGUgcmVnaXN0cnkgdmFsdWUuJywpLAotKHUnUmVnaXN0cnknLHUnS2V5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUmVnUGF0aCcsTm9uZSwgdSdUaGUga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUuJywpLAotKHUnUmVnaXN0cnknLHUnUmVnaXN0cnknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicsKSwKLSh1J1JlZ2lzdHJ5Jyx1J1Jvb3QnLHUnTicsLTEsMyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBwcmVkZWZpbmVkIHJvb3Qga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUsIG9uZSBvZiBycmtFbnVtLicsKSwKLSh1J1JlZ0xvY2F0b3InLHUnTmFtZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgcmVnaXN0cnkgdmFsdWUgbmFtZS4nLCksCi0odSdSZWdMb2NhdG9yJyx1J1R5cGUnLHUnWScsMCwxOCxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0FuIGludGVnZXIgdmFsdWUgdGhhdCBkZXRlcm1pbmVzIGlmIHRoZSByZWdpc3RyeSB2YWx1ZSBpcyBhIGZpbGVuYW1lIG9yIGEgZGlyZWN0b3J5IGxvY2F0aW9uIG9yIHRvIGJlIHVzZWQgYXMgaXMgdy9vIGludGVycHJldGF0aW9uLicsKSwKLSh1J1JlZ0xvY2F0b3InLHUnU2lnbmF0dXJlXycsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIHRhYmxlIGtleS4gVGhlIFNpZ25hdHVyZV8gcmVwcmVzZW50cyBhIHVuaXF1ZSBmaWxlIHNpZ25hdHVyZSBhbmQgaXMgYWxzbyB0aGUgZm9yZWlnbiBrZXkgaW4gdGhlIFNpZ25hdHVyZSB0YWJsZS4gSWYgdGhlIHR5cGUgaXMgMCwgdGhlIHJlZ2lzdHJ5IHZhbHVlcyByZWZlcnMgYSBkaXJlY3RvcnksIGFuZCBfU2lnbmF0dXJlIGlzIG5vdCBhIGZvcmVpZ24ga2V5LicsKSwKLSh1J1JlZ0xvY2F0b3InLHUnS2V5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUmVnUGF0aCcsTm9uZSwgdSdUaGUga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUuJywpLAotKHUnUmVnTG9jYXRvcicsdSdSb290Jyx1J04nLDAsMyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBwcmVkZWZpbmVkIHJvb3Qga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUsIG9uZSBvZiBycmtFbnVtLicsKSwKLSh1J1JlbW92ZUZpbGUnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgcmVmZXJlbmNpbmcgQ29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGZpbGUgdG8gYmUgcmVtb3ZlZC4nLCksCi0odSdSZW1vdmVGaWxlJyx1J0ZpbGVLZXknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5IHVzZWQgdG8gaWRlbnRpZnkgYSBwYXJ0aWN1bGFyIGZpbGUgZW50cnknLCksCi0odSdSZW1vdmVGaWxlJyx1J0ZpbGVOYW1lJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnV2lsZENhcmRGaWxlbmFtZScsTm9uZSwgdSdOYW1lIG9mIHRoZSBmaWxlIHRvIGJlIHJlbW92ZWQuJywpLAotKHUnUmVtb3ZlRmlsZScsdSdEaXJQcm9wZXJ0eScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiBhIHByb3BlcnR5IHdob3NlIHZhbHVlIGlzIGFzc3VtZWQgdG8gcmVzb2x2ZSB0byB0aGUgZnVsbCBwYXRobmFtZSB0byB0aGUgZm9sZGVyIG9mIHRoZSBmaWxlIHRvIGJlIHJlbW92ZWQuJywpLAotKHUnUmVtb3ZlRmlsZScsdSdJbnN0YWxsTW9kZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1JzE7MjszJyx1J0luc3RhbGxhdGlvbiBvcHRpb24sIG9uZSBvZiBpaW1FbnVtLicsKSwKLSh1J1JlbW92ZUluaUZpbGUnLHUnQWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnMjs0Jyx1J1RoZSB0eXBlIG9mIG1vZGlmaWNhdGlvbiB0byBiZSBtYWRlLCBvbmUgb2YgaWlmRW51bS4nLCksCi0odSdSZW1vdmVJbmlGaWxlJyx1J1ZhbHVlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSB2YWx1ZSB0byBiZSBkZWxldGVkLiBUaGUgdmFsdWUgaXMgcmVxdWlyZWQgd2hlbiBBY3Rpb24gaXMgaWlmSW5pUmVtb3ZlVGFnJywpLAotKHUnUmVtb3ZlSW5pRmlsZScsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgcmVmZXJlbmNpbmcgY29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGRlbGV0aW9uIG9mIHRoZSAuSU5JIHZhbHVlLicsKSwKLSh1J1JlbW92ZUluaUZpbGUnLHUnRmlsZU5hbWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsTm9uZSwgdSdUaGUgLklOSSBmaWxlIG5hbWUgaW4gd2hpY2ggdG8gZGVsZXRlIHRoZSBpbmZvcm1hdGlvbicsKSwKLSh1J1JlbW92ZUluaUZpbGUnLHUnRGlyUHJvcGVydHknLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIERpcmVjdG9yeSB0YWJsZSBkZW5vdGluZyB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSAuSU5JIGZpbGUgaXMuJywpLAotKHUnUmVtb3ZlSW5pRmlsZScsdSdLZXknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBrZXkgYmVsb3cgU2VjdGlvbi4nLCksCi0odSdSZW1vdmVJbmlGaWxlJyx1J1NlY3Rpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBTZWN0aW9uLicsKSwKLSh1J1JlbW92ZUluaUZpbGUnLHUnUmVtb3ZlSW5pRmlsZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uJywpLAotKHUnUmVtb3ZlUmVnaXN0cnknLHUnTmFtZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgcmVnaXN0cnkgdmFsdWUgbmFtZS4nLCksCi0odSdSZW1vdmVSZWdpc3RyeScsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgcmVmZXJlbmNpbmcgY29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGRlbGV0aW9uIG9mIHRoZSByZWdpc3RyeSB2YWx1ZS4nLCksCi0odSdSZW1vdmVSZWdpc3RyeScsdSdLZXknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdSZWdQYXRoJyxOb25lLCB1J1RoZSBrZXkgZm9yIHRoZSByZWdpc3RyeSB2YWx1ZS4nLCksCi0odSdSZW1vdmVSZWdpc3RyeScsdSdSb290Jyx1J04nLC0xLDMsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgcHJlZGVmaW5lZCByb290IGtleSBmb3IgdGhlIHJlZ2lzdHJ5IHZhbHVlLCBvbmUgb2YgcnJrRW51bScsKSwKLSh1J1JlbW92ZVJlZ2lzdHJ5Jyx1J1JlbW92ZVJlZ2lzdHJ5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbi4nLCksCi0odSdSZXNlcnZlQ29zdCcsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZXNlcnZlIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBzcGFjZSBpZiB0aGlzIGNvbXBvbmVudCBpcyB0byBiZSBpbnN0YWxsZWQuJywpLAotKHUnUmVzZXJ2ZUNvc3QnLHUnUmVzZXJ2ZUZvbGRlcicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiBhIHByb3BlcnR5IHdob3NlIHZhbHVlIGlzIGFzc3VtZWQgdG8gcmVzb2x2ZSB0byB0aGUgZnVsbCBwYXRoIHRvIHRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnknLCksCi0odSdSZXNlcnZlQ29zdCcsdSdSZXNlcnZlS2V5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgYSBwYXJ0aWN1bGFyIFJlc2VydmVDb3N0IHJlY29yZCcsKSwKLSh1J1Jlc2VydmVDb3N0Jyx1J1Jlc2VydmVMb2NhbCcsdSdOJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdEaXNrIHNwYWNlIHRvIHJlc2VydmUgaWYgbGlua2VkIGNvbXBvbmVudCBpcyBpbnN0YWxsZWQgbG9jYWxseS4nLCksCi0odSdSZXNlcnZlQ29zdCcsdSdSZXNlcnZlU291cmNlJyx1J04nLDAsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Rpc2sgc3BhY2UgdG8gcmVzZXJ2ZSBpZiBsaW5rZWQgY29tcG9uZW50IGlzIGluc3RhbGxlZCB0byBydW4gZnJvbSB0aGUgc291cmNlIGxvY2F0aW9uLicsKSwKLSh1J1NlbGZSZWcnLHUnRmlsZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGaWxlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBGaWxlIHRhYmxlIGRlbm90aW5nIHRoZSBtb2R1bGUgdGhhdCBuZWVkcyB0byBiZSByZWdpc3RlcmVkLicsKSwKLSh1J1NlbGZSZWcnLHUnQ29zdCcsdSdZJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGNvc3Qgb2YgcmVnaXN0ZXJpbmcgdGhlIG1vZHVsZS4nLCksCi0odSdTZXJ2aWNlQ29udHJvbCcsdSdOYW1lJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J05hbWUgb2YgYSBzZXJ2aWNlLiAvLCBcXCwgY29tbWEgYW5kIHNwYWNlIGFyZSBpbnZhbGlkJywpLAotKHUnU2VydmljZUNvbnRyb2wnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVxdWlyZWQgZm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IFRhYmxlIHRoYXQgY29udHJvbHMgdGhlIHN0YXJ0dXAgb2YgdGhlIHNlcnZpY2UnLCksCi0odSdTZXJ2aWNlQ29udHJvbCcsdSdFdmVudCcsdSdOJywwLDE4NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpdCBmaWVsZDogIEluc3RhbGw6ICAweDEgPSBTdGFydCwgMHgyID0gU3RvcCwgMHg4ID0gRGVsZXRlLCBVbmluc3RhbGw6IDB4MTAgPSBTdGFydCwgMHgyMCA9IFN0b3AsIDB4ODAgPSBEZWxldGUnLCksCi0odSdTZXJ2aWNlQ29udHJvbCcsdSdTZXJ2aWNlQ29udHJvbCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uJywpLAotKHUnU2VydmljZUNvbnRyb2wnLHUnQXJndW1lbnRzJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J0FyZ3VtZW50cyBmb3IgdGhlIHNlcnZpY2UuICBTZXBhcmF0ZSBieSBbfl0uJywpLAotKHUnU2VydmljZUNvbnRyb2wnLHUnV2FpdCcsdSdZJywwLDEsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdCb29sZWFuIGZvciB3aGV0aGVyIHRvIHdhaXQgZm9yIHRoZSBzZXJ2aWNlIHRvIGZ1bGx5IHN0YXJ0JywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnTmFtZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdJbnRlcm5hbCBOYW1lIG9mIHRoZSBTZXJ2aWNlJywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnRGVzY3JpcHRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J0Rlc2NyaXB0aW9uIG9mIHNlcnZpY2UuJywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVxdWlyZWQgZm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IFRhYmxlIHRoYXQgY29udHJvbHMgdGhlIHN0YXJ0dXAgb2YgdGhlIHNlcnZpY2UnLCksCi0odSdTZXJ2aWNlSW5zdGFsbCcsdSdBcmd1bWVudHMnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnQXJndW1lbnRzIHRvIGluY2x1ZGUgaW4gZXZlcnkgc3RhcnQgb2YgdGhlIHNlcnZpY2UsIHBhc3NlZCB0byBXaW5NYWluJywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnU2VydmljZUluc3RhbGwnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicsKSwKLSh1J1NlcnZpY2VJbnN0YWxsJyx1J0RlcGVuZGVuY2llcycsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdPdGhlciBzZXJ2aWNlcyB0aGlzIGRlcGVuZHMgb24gdG8gc3RhcnQuICBTZXBhcmF0ZSBieSBbfl0sIGFuZCBlbmQgd2l0aCBbfl1bfl0nLCksCi0odSdTZXJ2aWNlSW5zdGFsbCcsdSdEaXNwbGF5TmFtZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdFeHRlcm5hbCBOYW1lIG9mIHRoZSBTZXJ2aWNlJywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnRXJyb3JDb250cm9sJyx1J04nLC0yMTQ3NDgzNjQ3LDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTZXZlcml0eSBvZiBlcnJvciBpZiBzZXJ2aWNlIGZhaWxzIHRvIHN0YXJ0JywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnTG9hZE9yZGVyR3JvdXAnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnTG9hZE9yZGVyR3JvdXAnLCksCi0odSdTZXJ2aWNlSW5zdGFsbCcsdSdQYXNzd29yZCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdwYXNzd29yZCB0byBydW4gc2VydmljZSB3aXRoLiAgKHdpdGggU3RhcnROYW1lKScsKSwKLSh1J1NlcnZpY2VJbnN0YWxsJyx1J1NlcnZpY2VUeXBlJyx1J04nLC0yMTQ3NDgzNjQ3LDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUeXBlIG9mIHRoZSBzZXJ2aWNlJywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnU3RhcnROYW1lJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1VzZXIgb3Igb2JqZWN0IG5hbWUgdG8gcnVuIHNlcnZpY2UgYXMnLCksCi0odSdTZXJ2aWNlSW5zdGFsbCcsdSdTdGFydFR5cGUnLHUnTicsMCw0LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVHlwZSBvZiB0aGUgc2VydmljZScsKSwKLSh1J1Nob3J0Y3V0Jyx1J05hbWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsTm9uZSwgdSdUaGUgbmFtZSBvZiB0aGUgc2hvcnRjdXQgdG8gYmUgY3JlYXRlZC4nLCksCi0odSdTaG9ydGN1dCcsdSdEZXNjcmlwdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIGRlc2NyaXB0aW9uIGZvciB0aGUgc2hvcnRjdXQuJywpLAotKHUnU2hvcnRjdXQnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlIGRlbm90aW5nIHRoZSBjb21wb25lbnQgd2hvc2Ugc2VsZWN0aW9uIGdhdGVzIHRoZSBzaG9ydGN1dCBjcmVhdGlvbi9kZWxldGlvbi4nLCksCi0odSdTaG9ydGN1dCcsdSdJY29uXycsdSdZJyxOb25lLCBOb25lLCB1J0ljb24nLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIEZpbGUgdGFibGUgZGVub3RpbmcgdGhlIGV4dGVybmFsIGljb24gZmlsZSBmb3IgdGhlIHNob3J0Y3V0LicsKSwKLSh1J1Nob3J0Y3V0Jyx1J0ljb25JbmRleCcsdSdZJywtMzI3NjcsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgaWNvbiBpbmRleCBmb3IgdGhlIHNob3J0Y3V0LicsKSwKLSh1J1Nob3J0Y3V0Jyx1J0RpcmVjdG9yeV8nLHUnTicsTm9uZSwgTm9uZSwgdSdEaXJlY3RvcnknLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIERpcmVjdG9yeSB0YWJsZSBkZW5vdGluZyB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBzaG9ydGN1dCBmaWxlIGlzIGNyZWF0ZWQuJywpLAotKHUnU2hvcnRjdXQnLHUnVGFyZ2V0Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2hvcnRjdXQnLE5vbmUsIHUnVGhlIHNob3J0Y3V0IHRhcmdldC4gVGhpcyBpcyB1c3VhbGx5IGEgcHJvcGVydHkgdGhhdCBpcyBleHBhbmRlZCB0byBhIGZpbGUgb3IgYSBmb2xkZXIgdGhhdCB0aGUgc2hvcnRjdXQgcG9pbnRzIHRvLicsKSwKLSh1J1Nob3J0Y3V0Jyx1J0FyZ3VtZW50cycsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBmb3IgdGhlIHNob3J0Y3V0LicsKSwKLSh1J1Nob3J0Y3V0Jyx1J1Nob3J0Y3V0Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbi4nLCksCi0odSdTaG9ydGN1dCcsdSdIb3RrZXknLHUnWScsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBob3RrZXkgZm9yIHRoZSBzaG9ydGN1dC4gSXQgaGFzIHRoZSB2aXJ0dWFsLWtleSBjb2RlIGZvciB0aGUga2V5IGluIHRoZSBsb3ctb3JkZXIgYnl0ZSwgYW5kIHRoZSBtb2RpZmllciBmbGFncyBpbiB0aGUgaGlnaC1vcmRlciBieXRlLiAnLCksCi0odSdTaG9ydGN1dCcsdSdTaG93Q21kJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnMTszOzcnLHUnVGhlIHNob3cgY29tbWFuZCBmb3IgdGhlIGFwcGxpY2F0aW9uIHdpbmRvdy5UaGUgZm9sbG93aW5nIHZhbHVlcyBtYXkgYmUgdXNlZC4nLCksCi0odSdTaG9ydGN1dCcsdSdXa0RpcicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiBwcm9wZXJ0eSBkZWZpbmluZyBsb2NhdGlvbiBvZiB3b3JraW5nIGRpcmVjdG9yeS4nLCksCi0odSdTaWduYXR1cmUnLHUnRmlsZU5hbWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsTm9uZSwgdSdUaGUgbmFtZSBvZiB0aGUgZmlsZS4gVGhpcyBtYXkgY29udGFpbiBhICJzaG9ydCBuYW1lfGxvbmcgbmFtZSIgcGFpci4nLCksCi0odSdTaWduYXR1cmUnLHUnU2lnbmF0dXJlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgdGFibGUga2V5LiBUaGUgU2lnbmF0dXJlIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUuJywpLAotKHUnU2lnbmF0dXJlJyx1J0xhbmd1YWdlcycsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0xhbmd1YWdlJyxOb25lLCB1J1RoZSBsYW5ndWFnZXMgc3VwcG9ydGVkIGJ5IHRoZSBmaWxlLicsKSwKLSh1J1NpZ25hdHVyZScsdSdNYXhEYXRlJyx1J1knLDAsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBtYXhpbXVtIGNyZWF0aW9uIGRhdGUgb2YgdGhlIGZpbGUuJywpLAotKHUnU2lnbmF0dXJlJyx1J01heFNpemUnLHUnWScsMCwyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgZmlsZS4gJywpLAotKHUnU2lnbmF0dXJlJyx1J01heFZlcnNpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBtYXhpbXVtIHZlcnNpb24gb2YgdGhlIGZpbGUuJywpLAotKHUnU2lnbmF0dXJlJyx1J01pbkRhdGUnLHUnWScsMCwyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIG1pbmltdW0gY3JlYXRpb24gZGF0ZSBvZiB0aGUgZmlsZS4nLCksCi0odSdTaWduYXR1cmUnLHUnTWluU2l6ZScsdSdZJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgbWluaW11bSBzaXplIG9mIHRoZSBmaWxlLicsKSwKLSh1J1NpZ25hdHVyZScsdSdNaW5WZXJzaW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgbWluaW11bSB2ZXJzaW9uIG9mIHRoZSBmaWxlLicsKSwKLSh1J1RleHRTdHlsZScsdSdUZXh0U3R5bGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgdGhlIHN0eWxlLiBUaGUgcHJpbWFyeSBrZXkgb2YgdGhpcyB0YWJsZS4gVGhpcyBuYW1lIGlzIGVtYmVkZGVkIGluIHRoZSB0ZXh0cyB0byBpbmRpY2F0ZSBhIHN0eWxlIGNoYW5nZS4nLCksCi0odSdUZXh0U3R5bGUnLHUnQ29sb3InLHUnWScsMCwxNjc3NzIxNSxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgbG9uZyBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIGNvbG9yIG9mIHRoZSBzdHJpbmcgaW4gdGhlIFJHQiBmb3JtYXQgKFJlZCwgR3JlZW4sIEJsdWUgZWFjaCAwLTI1NSwgUkdCID0gUiArIDI1NipHICsgMjU2XjIqQikuJywpLAotKHUnVGV4dFN0eWxlJyx1J0ZhY2VOYW1lJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdBIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBuYW1lIG9mIHRoZSBmb250IHVzZWQuIFJlcXVpcmVkLiBUaGUgc3RyaW5nIG11c3QgYmUgYXQgbW9zdCAzMSBjaGFyYWN0ZXJzIGxvbmcuJywpLAotKHUnVGV4dFN0eWxlJyx1J1NpemUnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBzaXplIG9mIHRoZSBmb250IHVzZWQuIFRoaXMgc2l6ZSBpcyBnaXZlbiBpbiBvdXIgdW5pdHMgKDEvMTIgb2YgdGhlIHN5c3RlbSBmb250IGhlaWdodCkuIEFzc3VtaW5nIHRoYXQgdGhlIHN5c3RlbSBmb250IGlzIHNldCB0byAxMiBwb2ludCBzaXplLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhlIHBvaW50IHNpemUuJywpLAotKHUnVGV4dFN0eWxlJyx1J1N0eWxlQml0cycsdSdZJywwLDE1LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSBjb21iaW5hdGlvbiBvZiBzdHlsZSBiaXRzLicsKSwKLSh1J1R5cGVMaWInLHUnRGVzY3JpcHRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCBOb25lLCApLAotKHUnVHlwZUxpYicsdSdGZWF0dXJlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZlYXR1cmUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIEZlYXR1cmUgVGFibGUsIHNwZWNpZnlpbmcgdGhlIGZlYXR1cmUgdG8gdmFsaWRhdGUgb3IgaW5zdGFsbCBpbiBvcmRlciBmb3IgdGhlIHR5cGUgbGlicmFyeSB0byBiZSBvcGVyYXRpb25hbC4nLCksCi0odSdUeXBlTGliJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCBUYWJsZSwgc3BlY2lmeWluZyB0aGUgY29tcG9uZW50IGZvciB3aGljaCB0byByZXR1cm4gYSBwYXRoIHdoZW4gY2FsbGVkIHRocm91Z2ggTG9jYXRlQ29tcG9uZW50LicsKSwKLSh1J1R5cGVMaWInLHUnRGlyZWN0b3J5XycsdSdZJyxOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnT3B0aW9uYWwuIFRoZSBmb3JlaWduIGtleSBpbnRvIHRoZSBEaXJlY3RvcnkgdGFibGUgZGVub3RpbmcgdGhlIHBhdGggdG8gdGhlIGhlbHAgZmlsZSBmb3IgdGhlIHR5cGUgbGlicmFyeS4nLCksCi0odSdUeXBlTGliJyx1J0xhbmd1YWdlJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgbGFuZ3VhZ2Ugb2YgdGhlIGxpYnJhcnkuJywpLAotKHUnVHlwZUxpYicsdSdWZXJzaW9uJyx1J1knLDAsMTY3NzcyMTUsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgdmVyc2lvbiBvZiB0aGUgbGlicmFyeS4gVGhlIG1pbm9yIHZlcnNpb24gaXMgaW4gdGhlIGxvd2VyIDggYml0cyBvZiB0aGUgaW50ZWdlci4gVGhlIG1ham9yIHZlcnNpb24gaXMgaW4gdGhlIG5leHQgMTYgYml0cy4gJywpLAotKHUnVHlwZUxpYicsdSdDb3N0Jyx1J1knLDAsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBjb3N0IGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVnaXN0cmF0aW9uIG9mIHRoZSB0eXBlbGliLiBUaGlzIGNvbHVtbiBpcyBjdXJyZW50bHkgb3B0aW9uYWwuJywpLAotKHUnVHlwZUxpYicsdSdMaWJJRCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLE5vbmUsIHUnVGhlIEdVSUQgdGhhdCByZXByZXNlbnRzIHRoZSBsaWJyYXJ5LicsKSwKLSh1J1VJVGV4dCcsdSdUZXh0Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgbG9jYWxpemVkIHZlcnNpb24gb2YgdGhlIHN0cmluZy4nLCksCi0odSdVSVRleHQnLHUnS2V5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIHVuaXF1ZSBrZXkgdGhhdCBpZGVudGlmaWVzIHRoZSBwYXJ0aWN1bGFyIHN0cmluZy4nLCksCi0odSdVcGdyYWRlJyx1J0F0dHJpYnV0ZXMnLHUnTicsMCwyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGF0dHJpYnV0ZXMgb2YgdGhpcyBwcm9kdWN0IHNldC4nLCksCi0odSdVcGdyYWRlJyx1J0xhbmd1YWdlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTGFuZ3VhZ2UnLE5vbmUsIHUnQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBsYW5ndWFnZXMgZm9yIGVpdGhlciBwcm9kdWN0cyBpbiB0aGlzIHNldCBvciBwcm9kdWN0cyBub3QgaW4gdGhpcyBzZXQuJywpLAotKHUnVXBncmFkZScsdSdBY3Rpb25Qcm9wZXJ0eScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1VwcGVyQ2FzZScsTm9uZSwgdSdUaGUgcHJvcGVydHkgdG8gc2V0IHdoZW4gYSBwcm9kdWN0IGluIHRoaXMgc2V0IGlzIGZvdW5kLicsKSwKLSh1J1VwZ3JhZGUnLHUnUmVtb3ZlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSBsaXN0IG9mIGZlYXR1cmVzIHRvIHJlbW92ZSB3aGVuIHVuaW5zdGFsbGluZyBhIHByb2R1Y3QgZnJvbSB0aGlzIHNldC4gIFRoZSBkZWZhdWx0IGlzICJBTEwiLicsKSwKLSh1J1VwZ3JhZGUnLHUnVXBncmFkZUNvZGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJyxOb25lLCB1J1RoZSBVcGdyYWRlQ29kZSBHVUlEIGJlbG9uZ2luZyB0byB0aGUgcHJvZHVjdHMgaW4gdGhpcyBzZXQuJywpLAotKHUnVXBncmFkZScsdSdWZXJzaW9uTWF4Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgbWF4aW11bSBQcm9kdWN0VmVyc2lvbiBvZiB0aGUgcHJvZHVjdHMgaW4gdGhpcyBzZXQuICBUaGUgc2V0IG1heSBvciBtYXkgbm90IGluY2x1ZGUgcHJvZHVjdHMgd2l0aCB0aGlzIHBhcnRpY3VsYXIgdmVyc2lvbi4nLCksCi0odSdVcGdyYWRlJyx1J1ZlcnNpb25NaW4nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBtaW5pbXVtIFByb2R1Y3RWZXJzaW9uIG9mIHRoZSBwcm9kdWN0cyBpbiB0aGlzIHNldC4gIFRoZSBzZXQgbWF5IG9yIG1heSBub3QgaW5jbHVkZSBwcm9kdWN0cyB3aXRoIHRoaXMgcGFydGljdWxhciB2ZXJzaW9uLicsKSwKLSh1J1ZlcmInLHUnU2VxdWVuY2UnLHUnWScsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J09yZGVyIHdpdGhpbiB0aGUgdmVyYnMgZm9yIGEgcGFydGljdWxhciBleHRlbnNpb24uIEFsc28gdXNlZCBzaW1wbHkgdG8gc3BlY2lmeSB0aGUgZGVmYXVsdCB2ZXJiLicsKSwKLSh1J1ZlcmInLHUnQXJndW1lbnQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnT3B0aW9uYWwgdmFsdWUgZm9yIHRoZSBjb21tYW5kIGFyZ3VtZW50cy4nLCksCi0odSdWZXJiJyx1J0V4dGVuc2lvbl8nLHUnTicsTm9uZSwgTm9uZSwgdSdFeHRlbnNpb24nLDEsdSdUZXh0JyxOb25lLCB1J1RoZSBleHRlbnNpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWJsZSByb3cuJywpLAotKHUnVmVyYicsdSdWZXJiJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgdmVyYiBmb3IgdGhlIGNvbW1hbmQuJywpLAotKHUnVmVyYicsdSdDb21tYW5kJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSBjb21tYW5kIHRleHQuJywpLAotXQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3NlcXVlbmNlLnB5IGIvVG9vbHMvbXNpL3NlcXVlbmNlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTM4ZjdhLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL21zaS9zZXF1ZW5jZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi1BZG1pbkV4ZWN1dGVTZXF1ZW5jZSA9IFsKLSh1J0luc3RhbGxJbml0aWFsaXplJywgTm9uZSwgMTUwMCksCi0odSdJbnN0YWxsRmluYWxpemUnLCBOb25lLCA2NjAwKSwKLSh1J0luc3RhbGxGaWxlcycsIE5vbmUsIDQwMDApLAotKHUnSW5zdGFsbEFkbWluUGFja2FnZScsIE5vbmUsIDM5MDApLAotKHUnRmlsZUNvc3QnLCBOb25lLCA5MDApLAotKHUnQ29zdEluaXRpYWxpemUnLCBOb25lLCA4MDApLAotKHUnQ29zdEZpbmFsaXplJywgTm9uZSwgMTAwMCksCi0odSdJbnN0YWxsVmFsaWRhdGUnLCBOb25lLCAxNDAwKSwKLV0KLQotQWRtaW5VSVNlcXVlbmNlID0gWwotKHUnRmlsZUNvc3QnLCBOb25lLCA5MDApLAotKHUnQ29zdEluaXRpYWxpemUnLCBOb25lLCA4MDApLAotKHUnQ29zdEZpbmFsaXplJywgTm9uZSwgMTAwMCksCi0odSdFeGVjdXRlQWN0aW9uJywgTm9uZSwgMTMwMCksCi0odSdFeGl0RGlhbG9nJywgTm9uZSwgLTEpLAotKHUnRmF0YWxFcnJvcicsIE5vbmUsIC0zKSwKLSh1J1VzZXJFeGl0JywgTm9uZSwgLTIpLAotXQotCi1BZHZ0RXhlY3V0ZVNlcXVlbmNlID0gWwotKHUnSW5zdGFsbEluaXRpYWxpemUnLCBOb25lLCAxNTAwKSwKLSh1J0luc3RhbGxGaW5hbGl6ZScsIE5vbmUsIDY2MDApLAotKHUnQ29zdEluaXRpYWxpemUnLCBOb25lLCA4MDApLAotKHUnQ29zdEZpbmFsaXplJywgTm9uZSwgMTAwMCksCi0odSdJbnN0YWxsVmFsaWRhdGUnLCBOb25lLCAxNDAwKSwKLSh1J0NyZWF0ZVNob3J0Y3V0cycsIE5vbmUsIDQ1MDApLAotKHUnTXNpUHVibGlzaEFzc2VtYmxpZXMnLCBOb25lLCA2MjUwKSwKLSh1J1B1Ymxpc2hDb21wb25lbnRzJywgTm9uZSwgNjIwMCksCi0odSdQdWJsaXNoRmVhdHVyZXMnLCBOb25lLCA2MzAwKSwKLSh1J1B1Ymxpc2hQcm9kdWN0JywgTm9uZSwgNjQwMCksCi0odSdSZWdpc3RlckNsYXNzSW5mbycsIE5vbmUsIDQ2MDApLAotKHUnUmVnaXN0ZXJFeHRlbnNpb25JbmZvJywgTm9uZSwgNDcwMCksCi0odSdSZWdpc3Rlck1JTUVJbmZvJywgTm9uZSwgNDkwMCksCi0odSdSZWdpc3RlclByb2dJZEluZm8nLCBOb25lLCA0ODAwKSwKLV0KLQotSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZSA9IFsKLSh1J0luc3RhbGxJbml0aWFsaXplJywgTm9uZSwgMTUwMCksCi0odSdJbnN0YWxsRmluYWxpemUnLCBOb25lLCA2NjAwKSwKLSh1J0luc3RhbGxGaWxlcycsIE5vbmUsIDQwMDApLAotKHUnRmlsZUNvc3QnLCBOb25lLCA5MDApLAotKHUnQ29zdEluaXRpYWxpemUnLCBOb25lLCA4MDApLAotKHUnQ29zdEZpbmFsaXplJywgTm9uZSwgMTAwMCksCi0odSdJbnN0YWxsVmFsaWRhdGUnLCBOb25lLCAxNDAwKSwKLSh1J0NyZWF0ZVNob3J0Y3V0cycsIE5vbmUsIDQ1MDApLAotKHUnTXNpUHVibGlzaEFzc2VtYmxpZXMnLCBOb25lLCA2MjUwKSwKLSh1J1B1Ymxpc2hDb21wb25lbnRzJywgTm9uZSwgNjIwMCksCi0odSdQdWJsaXNoRmVhdHVyZXMnLCBOb25lLCA2MzAwKSwKLSh1J1B1Ymxpc2hQcm9kdWN0JywgTm9uZSwgNjQwMCksCi0odSdSZWdpc3RlckNsYXNzSW5mbycsIE5vbmUsIDQ2MDApLAotKHUnUmVnaXN0ZXJFeHRlbnNpb25JbmZvJywgTm9uZSwgNDcwMCksCi0odSdSZWdpc3Rlck1JTUVJbmZvJywgTm9uZSwgNDkwMCksCi0odSdSZWdpc3RlclByb2dJZEluZm8nLCBOb25lLCA0ODAwKSwKLSh1J0FsbG9jYXRlUmVnaXN0cnlTcGFjZScsIHUnTk9UIEluc3RhbGxlZCcsIDE1NTApLAotKHUnQXBwU2VhcmNoJywgTm9uZSwgNDAwKSwKLSh1J0JpbmRJbWFnZScsIE5vbmUsIDQzMDApLAotKHUnQ0NQU2VhcmNoJywgdSdOT1QgSW5zdGFsbGVkJywgNTAwKSwKLSh1J0NyZWF0ZUZvbGRlcnMnLCBOb25lLCAzNzAwKSwKLSh1J0RlbGV0ZVNlcnZpY2VzJywgdSdWZXJzaW9uTlQnLCAyMDAwKSwKLSh1J0R1cGxpY2F0ZUZpbGVzJywgTm9uZSwgNDIxMCksCi0odSdGaW5kUmVsYXRlZFByb2R1Y3RzJywgTm9uZSwgMjAwKSwKLSh1J0luc3RhbGxPREJDJywgTm9uZSwgNTQwMCksCi0odSdJbnN0YWxsU2VydmljZXMnLCB1J1ZlcnNpb25OVCcsIDU4MDApLAotKHUnSXNvbGF0ZUNvbXBvbmVudHMnLCBOb25lLCA5NTApLAotKHUnTGF1bmNoQ29uZGl0aW9ucycsIE5vbmUsIDEwMCksCi0odSdNaWdyYXRlRmVhdHVyZVN0YXRlcycsIE5vbmUsIDEyMDApLAotKHUnTW92ZUZpbGVzJywgTm9uZSwgMzgwMCksCi0odSdQYXRjaEZpbGVzJywgTm9uZSwgNDA5MCksCi0odSdQcm9jZXNzQ29tcG9uZW50cycsIE5vbmUsIDE2MDApLAotKHUnUmVnaXN0ZXJDb21QbHVzJywgTm9uZSwgNTcwMCksCi0odSdSZWdpc3RlckZvbnRzJywgTm9uZSwgNTMwMCksCi0odSdSZWdpc3RlclByb2R1Y3QnLCBOb25lLCA2MTAwKSwKLSh1J1JlZ2lzdGVyVHlwZUxpYnJhcmllcycsIE5vbmUsIDU1MDApLAotKHUnUmVnaXN0ZXJVc2VyJywgTm9uZSwgNjAwMCksCi0odSdSZW1vdmVEdXBsaWNhdGVGaWxlcycsIE5vbmUsIDM0MDApLAotKHUnUmVtb3ZlRW52aXJvbm1lbnRTdHJpbmdzJywgTm9uZSwgMzMwMCksCi0odSdSZW1vdmVFeGlzdGluZ1Byb2R1Y3RzJywgTm9uZSwgNjcwMCksCi0odSdSZW1vdmVGaWxlcycsIE5vbmUsIDM1MDApLAotKHUnUmVtb3ZlRm9sZGVycycsIE5vbmUsIDM2MDApLAotKHUnUmVtb3ZlSW5pVmFsdWVzJywgTm9uZSwgMzEwMCksCi0odSdSZW1vdmVPREJDJywgTm9uZSwgMjQwMCksCi0odSdSZW1vdmVSZWdpc3RyeVZhbHVlcycsIE5vbmUsIDI2MDApLAotKHUnUmVtb3ZlU2hvcnRjdXRzJywgTm9uZSwgMzIwMCksCi0odSdSTUNDUFNlYXJjaCcsIHUnTk9UIEluc3RhbGxlZCcsIDYwMCksCi0odSdTZWxmUmVnTW9kdWxlcycsIE5vbmUsIDU2MDApLAotKHUnU2VsZlVucmVnTW9kdWxlcycsIE5vbmUsIDIyMDApLAotKHUnU2V0T0RCQ0ZvbGRlcnMnLCBOb25lLCAxMTAwKSwKLSh1J1N0YXJ0U2VydmljZXMnLCB1J1ZlcnNpb25OVCcsIDU5MDApLAotKHUnU3RvcFNlcnZpY2VzJywgdSdWZXJzaW9uTlQnLCAxOTAwKSwKLSh1J01zaVVucHVibGlzaEFzc2VtYmxpZXMnLCBOb25lLCAxNzUwKSwKLSh1J1VucHVibGlzaENvbXBvbmVudHMnLCBOb25lLCAxNzAwKSwKLSh1J1VucHVibGlzaEZlYXR1cmVzJywgTm9uZSwgMTgwMCksCi0odSdVbnJlZ2lzdGVyQ2xhc3NJbmZvJywgTm9uZSwgMjcwMCksCi0odSdVbnJlZ2lzdGVyQ29tUGx1cycsIE5vbmUsIDIxMDApLAotKHUnVW5yZWdpc3RlckV4dGVuc2lvbkluZm8nLCBOb25lLCAyODAwKSwKLSh1J1VucmVnaXN0ZXJGb250cycsIE5vbmUsIDI1MDApLAotKHUnVW5yZWdpc3Rlck1JTUVJbmZvJywgTm9uZSwgMzAwMCksCi0odSdVbnJlZ2lzdGVyUHJvZ0lkSW5mbycsIE5vbmUsIDI5MDApLAotKHUnVW5yZWdpc3RlclR5cGVMaWJyYXJpZXMnLCBOb25lLCAyMzAwKSwKLSh1J1ZhbGlkYXRlUHJvZHVjdElEJywgTm9uZSwgNzAwKSwKLSh1J1dyaXRlRW52aXJvbm1lbnRTdHJpbmdzJywgTm9uZSwgNTIwMCksCi0odSdXcml0ZUluaVZhbHVlcycsIE5vbmUsIDUxMDApLAotKHUnV3JpdGVSZWdpc3RyeVZhbHVlcycsIE5vbmUsIDUwMDApLAotXQotCi1JbnN0YWxsVUlTZXF1ZW5jZSA9IFsKLSh1J0ZpbGVDb3N0JywgTm9uZSwgOTAwKSwKLSh1J0Nvc3RJbml0aWFsaXplJywgTm9uZSwgODAwKSwKLSh1J0Nvc3RGaW5hbGl6ZScsIE5vbmUsIDEwMDApLAotKHUnRXhlY3V0ZUFjdGlvbicsIE5vbmUsIDEzMDApLAotKHUnRXhpdERpYWxvZycsIE5vbmUsIC0xKSwKLSh1J0ZhdGFsRXJyb3InLCBOb25lLCAtMyksCi0odSdVc2VyRXhpdCcsIE5vbmUsIC0yKSwKLSh1J0FwcFNlYXJjaCcsIE5vbmUsIDQwMCksCi0odSdDQ1BTZWFyY2gnLCB1J05PVCBJbnN0YWxsZWQnLCA1MDApLAotKHUnRmluZFJlbGF0ZWRQcm9kdWN0cycsIE5vbmUsIDIwMCksCi0odSdJc29sYXRlQ29tcG9uZW50cycsIE5vbmUsIDk1MCksCi0odSdMYXVuY2hDb25kaXRpb25zJywgTm9uZSwgMTAwKSwKLSh1J01pZ3JhdGVGZWF0dXJlU3RhdGVzJywgTm9uZSwgMTIwMCksCi0odSdSTUNDUFNlYXJjaCcsIHUnTk9UIEluc3RhbGxlZCcsIDYwMCksCi0odSdWYWxpZGF0ZVByb2R1Y3RJRCcsIE5vbmUsIDcwMCksCi1dCi0KLXRhYmxlcz1bJ0FkbWluRXhlY3V0ZVNlcXVlbmNlJywgJ0FkbWluVUlTZXF1ZW5jZScsICdBZHZ0RXhlY3V0ZVNlcXVlbmNlJywgJ0luc3RhbGxFeGVjdXRlU2VxdWVuY2UnLCAnSW5zdGFsbFVJU2VxdWVuY2UnXQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3RjbHRrL3RjbHRrLndpeHByb2ogYi9Ub29scy9tc2kvdGNsdGsvdGNsdGsud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjZmYzE0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrLndpeHByb2oKQEAgLTAsMCArMSw1MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+e0RCMzUwNjAwLTE4NkMtNEU1Mi1CQTk4LTI2QTdDRUNCMDY3Rn08L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPnRjbHRrPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPCEtLSBTaG9ydGN1dCB2YWxpZGF0aW9uIGlzIG5vdCBuZWNlc3NhcnkgLS0+CisgICAgICAgIDxTdXBwcmVzc0lDRXM+SUNFNDM8L1N1cHByZXNzSUNFcz4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGNsdGsud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0Y2x0a19maWxlcy53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InRjbHRrX3JlZy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPFd4bFRlbXBsYXRlIEluY2x1ZGU9Iioud3hsX3RlbXBsYXRlIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxJbnN0YWxsRmlsZXMgSW5jbHVkZT0iJCh0Y2x0a0RpciliaW5cKi5kbGwiIEV4Y2x1ZGU9IiQodGNsdGtEaXIpYmluXCpnLmRsbCI+CisgICAgICAgICAgICA8U291cmNlQmFzZT4kKHRjbHRrRGlyKTwvU291cmNlQmFzZT4KKyAgICAgICAgICAgIDxTb3VyY2U+IShiaW5kcGF0aC50Y2x0ayk8L1NvdXJjZT4KKyAgICAgICAgICAgIDxUYXJnZXRCYXNlPiQodGNsdGtEaXIpYmluPC9UYXJnZXRCYXNlPgorICAgICAgICAgICAgPFRhcmdldF8+RExMc1w8L1RhcmdldF8+CisgICAgICAgICAgICA8R3JvdXA+dGNsdGtfZGxsczwvR3JvdXA+CisgICAgICAgIDwvSW5zdGFsbEZpbGVzPgorCisgICAgICAgIDxJbnN0YWxsRmlsZXMgSW5jbHVkZT0iJCh0Y2x0a0RpcilsaWJcKipcKiI+CisgICAgICAgICAgICA8U291cmNlQmFzZT4kKHRjbHRrRGlyKTwvU291cmNlQmFzZT4KKyAgICAgICAgICAgIDxTb3VyY2U+IShiaW5kcGF0aC50Y2x0ayk8L1NvdXJjZT4KKyAgICAgICAgICAgIDxUYXJnZXRCYXNlPiQodGNsdGtEaXIpbGliPC9UYXJnZXRCYXNlPgorICAgICAgICAgICAgPFRhcmdldF8+dGNsXDwvVGFyZ2V0Xz4KKyAgICAgICAgICAgIDxHcm91cD50Y2x0a19saWI8L0dyb3VwPgorICAgICAgICA8L0luc3RhbGxGaWxlcz4KKworICAgICAgICA8SW5zdGFsbEZpbGVzIEluY2x1ZGU9IiQoUHlTb3VyY2VQYXRoKUxpYlx0a2ludGVyXCoqXCo7JChQeVNvdXJjZVBhdGgpTGliXGlkbGVsaWJcKipcKjskKFB5U291cmNlUGF0aClMaWJcdHVydGxlZGVtb1wqKlwqIgorICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGU9IiQoUHlTb3VyY2VQYXRoKUxpYlwqKlwqLnB5YzskKFB5U291cmNlUGF0aClMaWJcKipcKi5weW8iPgorICAgICAgICAgICAgPFNvdXJjZUJhc2U+JChQeVNvdXJjZVBhdGgpPC9Tb3VyY2VCYXNlPgorICAgICAgICAgICAgPFNvdXJjZT4hKGJpbmRwYXRoLnNyYyk8L1NvdXJjZT4KKyAgICAgICAgICAgIDxUYXJnZXRCYXNlPiQoUHlTb3VyY2VQYXRoKTwvVGFyZ2V0QmFzZT4KKyAgICAgICAgICAgIDxUYXJnZXRfPjwvVGFyZ2V0Xz4KKyAgICAgICAgICAgIDxHcm91cD50a2ludGVyX2xpYjwvR3JvdXA+CisgICAgICAgIDwvSW5zdGFsbEZpbGVzPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3RjbHRrL3RjbHRrLnd4cyBiL1Rvb2xzL21zaS90Y2x0ay90Y2x0ay53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVhZThlOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90Y2x0ay90Y2x0ay53eHMKQEAgLTAsMCArMSw2NiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJSRUdJU1RSWUtFWSIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eSBJZD0iUFlUSE9OX0VYRSIgU2VjdXJlPSJ5ZXMiPgorICAgICAgICAgICAgPENvbXBvbmVudFNlYXJjaCBJZD0iUHl0aG9uRXhlIiBHdWlkPSIkKHZhci5QeXRob25FeGVDb21wb25lbnRHdWlkKSI+CisgICAgICAgICAgICAgICAgPEZpbGVTZWFyY2ggTmFtZT0icHl0aG9uLmV4ZSIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50U2VhcmNoPgorICAgICAgICA8L1Byb3BlcnR5PgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5IElkPSJQWVRIT05XX0VYRSIgU2VjdXJlPSJ5ZXMiPgorICAgICAgICAgICAgPENvbXBvbmVudFNlYXJjaCBJZD0iUHl0aG9ud0V4ZSIgR3VpZD0iJCh2YXIuUHl0aG9ud0V4ZUNvbXBvbmVudEd1aWQpIj4KKyAgICAgICAgICAgICAgICA8RmlsZVNlYXJjaCBOYW1lPSJweXRob253LmV4ZSIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50U2VhcmNoPgorICAgICAgICA8L1Byb3BlcnR5PgorICAgICAgICAKKyAgICAgICAgPENvbmRpdGlvbiBNZXNzYWdlPSIhKGxvYy5Ob1B5dGhvbikiPlBZVEhPTl9FWEUgYW5kIFBZVEhPTldfRVhFPC9Db25kaXRpb24+CisKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0a2ludGVyX2V4dGVuc2lvbiIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0idGNsdGtfZGxscyIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0idGNsdGtfbGliIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0a2ludGVyX2xpYiIgUHJpbWFyeT0ieWVzIiAvPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJpZGxlX3JlZyIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5Ij4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXlQYXRoPSJ5ZXMiIFJvb3Q9IkhLTVUiIEtleT0iW1JFR0lTVFJZS0VZXVxJZGxlIiBUeXBlPSJzdHJpbmciIFZhbHVlPSJbI0xpYl9pZGxlbGliX2lkbGUucHl3XSIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudFJlZiBJZD0iT3B0aW9uYWxGZWF0dXJlIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgICAgIDxGZWF0dXJlIElkPSJBc3NvY2lhdGVGaWxlcyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0idGtpbnRlcl9saWIiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImlkbGVfcmVnIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgICAgIDxGZWF0dXJlIElkPSJTaG9ydGN1dHMiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRraW50ZXJfbGliIiAvPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJpZGxlX3Nob3J0Y3V0IiBEaXJlY3Rvcnk9Ik1lbnVEaXIiPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIFJvb3Q9IkhLTVUiIEtleT0iW1JFR0lTVFJZS0VZXVxJZGxlU2hvcnRjdXRzIiBUeXBlPSJpbnRlZ2VyIiBWYWx1ZT0iMSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgIDxSZW1vdmVGb2xkZXIgSWQ9IlJlbW92ZV9NZW51RGlyIiBPbj0idW5pbnN0YWxsIiAvPgorCisgICAgICAgICAgICAgICAgPFNob3J0Y3V0IElkPSJJRExFIgorICAgICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3Rvcnk9Ik1lbnVEaXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IiEobG9jLlNob3J0Y3V0TmFtZSkiCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uPSIhKGxvYy5TaG9ydGN1dERlc2NyaXB0aW9uKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0PSJbUFlUSE9OV19FWEVdIgorICAgICAgICAgICAgICAgICAgICAgICAgICBBcmd1bWVudHM9JyJbI0xpYl9pZGxlbGliX2lkbGUucHl3XSInCisgICAgICAgICAgICAgICAgICAgICAgICAgIEljb249ImlkbGUuZXhlIgorICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JraW5nRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5Ij4KKyAgICAgICAgICAgICAgICAgICAgPEljb24gSWQ9ImlkbGUuZXhlIiBTb3VyY2VGaWxlPSIhKGJpbmRwYXRoLnNyYylMaWJcaWRsZWxpYlxJY29uc1xpZGxlLmljbyIgLz4KKyAgICAgICAgICAgICAgICA8L1Nob3J0Y3V0PgorICAgICAgICAgICAgICAgIDxTaG9ydGN1dCBJZD0icHlkb2MucHkiCisgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldD0iW1BZVEhPTl9FWEVdIgorICAgICAgICAgICAgICAgICAgICAgICAgICBBcmd1bWVudHM9Jy1tIHB5ZG9jIC1iJworICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSIhKGxvYy5QeURvY1Nob3J0Y3V0TmFtZSkiCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uPSIhKGxvYy5QeURvY1Nob3J0Y3V0RGVzY3JpcHRpb24pIgorICAgICAgICAgICAgICAgICAgICAgICAgICBJY29uPSJpZGxlLmV4ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgV29ya2luZ0RpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGNsdGsvdGNsdGtfZC53aXhwcm9qIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX2Qud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjY2MTkwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX2Qud2l4cHJvagpAQCAtMCwwICsxLDI4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57RURBMUZBNUEtRTJBQS00RUFGLUI0OUItODdEOTgxQ0QwRjE2fTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+dGNsdGtfZDwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGNsdGtfZC53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InRjbHRrX2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8V3hsVGVtcGxhdGUgSW5jbHVkZT0iKi53eGxfdGVtcGxhdGUiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEluc3RhbGxGaWxlcyBJbmNsdWRlPSIkKHRjbHRrRGlyKWJpblwqZy5kbGwiPgorICAgICAgICAgICAgPFNvdXJjZUJhc2U+JCh0Y2x0a0Rpcik8L1NvdXJjZUJhc2U+CisgICAgICAgICAgICA8U291cmNlPiEoYmluZHBhdGgudGNsdGspPC9Tb3VyY2U+CisgICAgICAgICAgICA8VGFyZ2V0QmFzZT4kKHRjbHRrRGlyKWJpbjwvVGFyZ2V0QmFzZT4KKyAgICAgICAgICAgIDxUYXJnZXRfPkRMTHNcPC9UYXJnZXRfPgorICAgICAgICAgICAgPEdyb3VwPnRjbHRrX2RsbHNfZDwvR3JvdXA+CisgICAgICAgIDwvSW5zdGFsbEZpbGVzPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX2Qud3hzIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX2Qud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxZDBkMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGtfZC53eHMKQEAgLTAsMCArMSwxNCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlX2QpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlYnVnQmluYXJpZXMiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlX2QpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb25fZCkiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0a2ludGVyX2V4dGVuc2lvbl9kIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0Y2x0a19kbGxzX2QiIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90Y2x0ay90Y2x0a19lbi1VUy53eGxfdGVtcGxhdGUgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGtfZW4tVVMud3hsX3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MGZkNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGtfZW4tVVMud3hsX3RlbXBsYXRlCkBAIC0wLDAgKzEsMTIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICAgIDxTdHJpbmcgSWQ9IkRlc2NyaXB0b3IiPlRjbC9UayBTdXBwb3J0PC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnREZXNjcmlwdG9yIj50Y2x0azwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9Ik5vUHl0aG9uIj5ObyAhKGxvYy5Qcm9kdWN0TmFtZSkgaW5zdGFsbGF0aW9uIHdhcyBkZXRlY3RlZC48L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJTaG9ydGN1dE5hbWUiPklETEUgKFB5dGhvbiB7e1Nob3J0VmVyc2lvbn19IHt7Qml0bmVzc319KTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0Y3V0RGVzY3JpcHRpb24iPkxhdW5jaGVzIElETEUsIHRoZSBpbnRlcmFjdGl2ZSBlbnZpcm9ubWVudCBmb3IgIShsb2MuUHJvZHVjdE5hbWUpLjwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlB5RG9jU2hvcnRjdXROYW1lIj5QeXRob24ge3tTaG9ydFZlcnNpb259fSBNb2R1bGUgRG9jcyAoe3tCaXRuZXNzfX0pPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iUHlEb2NTaG9ydGN1dERlc2NyaXB0aW9uIj5TdGFydCB0aGUgIShsb2MuUHJvZHVjdE5hbWUpIGRvY3VtZW50YXRpb24gc2VydmVyLjwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IkVkaXRNZW51Ij4mYW1wO0VkaXQgd2l0aCBJRExFPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iRWRpdFN1Yk1lbnUiPkVkaXQgd2l0aCBJRExFIHt7U2hvcnRWZXJzaW9ufX0gKHt7Qml0bmVzc319KTwvU3RyaW5nPgorPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGNsdGsvdGNsdGtfZmlsZXMud3hzIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX2ZpbGVzLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDFiNGE5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX2ZpbGVzLnd4cwpAQCAtMCwwICsxLDM1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9InRraW50ZXJfZXh0ZW5zaW9uIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90a2ludGVyLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJfdGtpbnRlci5weWQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3RraW50ZXIubGliIiBEaXJlY3Rvcnk9ImxpYnMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9Il90a2ludGVyLmxpYiIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0idGtpbnRlcl9leHRlbnNpb25fc3ltYm9scyI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGtpbnRlci5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0iX3RraW50ZXIucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0idGtpbnRlcl9leHRlbnNpb25fZCI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGtpbnRlcl9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJfdGtpbnRlcl9kLnB5ZCIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3RraW50ZXJfZC5saWIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0iX3RraW50ZXJfZC5saWIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90a2ludGVyX2QucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9Il90a2ludGVyX2QucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX3BkYi53aXhwcm9qIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX3BkYi53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNzA3OTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGtfcGRiLndpeHByb2oKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezAyMDUzQUZBLTE4MzEtNDk5QS1CM0VBLUQ4QjIyM0QzQzQwRH08L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPnRjbHRrX3BkYjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGNsdGtfcGRiLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGNsdGtfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxXeGxUZW1wbGF0ZSBJbmNsdWRlPSIqLnd4bF90ZW1wbGF0ZSIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90Y2x0ay90Y2x0a19wZGIud3hzIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX3BkYi53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ0NTRmMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90Y2x0ay90Y2x0a19wZGIud3hzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZVBkYikiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iU3ltYm9scyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGVQZGIpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb25QZGIpIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0idGtpbnRlcl9leHRlbnNpb25fc3ltYm9scyIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX3JlZy53eHMgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGtfcmVnLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzc4YmNjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX3JlZy53eHMKQEAgLTAsMCArMSw0OCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJpZGxlX3JlZyI+CisgICAgICAgICAgICA8IS0tIFdlIGZpeCB0aGUgZ3VpZCBvZiB0aGUgU3ViY29tbWFuZHMga2V5IHNvIHRoYXQgaXQgaXMgY29ycmVjdGx5IHJlZmVyZW5jZSBjb3VudGVkIC0tPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iYXNzb2Nfc3ViY29tbWFuZHMiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iezU3RDQ3QjRDLTk2RTYtNDBBMC1BOTU4LTU3MDgzRDc0NDIzRn0iPgorICAgICAgICAgICAgICAgIDxDb25kaXRpb24+VmVyc2lvbk5UID4gNjAwPC9Db25kaXRpb24+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgUm9vdD0iSEtDUiIgS2V5PSJQeXRob24uRmlsZVxTaGVsbFxlZGl0d2l0aGlkbGUkKHZhci5QeVRlc3RFeHQpIiBOYW1lPSJNVUlWZXJiIiBWYWx1ZT0iIShsb2MuRWRpdE1lbnUpIiBUeXBlPSJzdHJpbmciIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS0NSIiBLZXk9IlB5dGhvbi5GaWxlXFNoZWxsXGVkaXR3aXRoaWRsZSQodmFyLlB5VGVzdEV4dCkiIE5hbWU9IlN1YmNvbW1hbmRzIiBWYWx1ZT0iIiBUeXBlPSJzdHJpbmciIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJhc3NvY19zdWJjb21tYW5kc19ub2NvbiIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSJ7MDcwNjFEODUtOTE1MS00RkM0LUJCNzgtMTM2MjgwMjBEMDI2fSI+CisgICAgICAgICAgICAgICAgPENvbmRpdGlvbj5WZXJzaW9uTlQgPiA2MDA8L0NvbmRpdGlvbj4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS0NSIiBLZXk9IlB5dGhvbi5Ob0NvbkZpbGVcU2hlbGxcZWRpdHdpdGhpZGxlJCh2YXIuUHlUZXN0RXh0KSIgTmFtZT0iTVVJVmVyYiIgVmFsdWU9IiEobG9jLkVkaXRNZW51KSIgVHlwZT0ic3RyaW5nIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgUm9vdD0iSEtDUiIgS2V5PSJQeXRob24uTm9Db25GaWxlXFNoZWxsXGVkaXR3aXRoaWRsZSQodmFyLlB5VGVzdEV4dCkiIE5hbWU9IlN1YmNvbW1hbmRzIiBWYWx1ZT0iIiBUeXBlPSJzdHJpbmciIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImFzc29jX2VkaXR3aXRoaWRsZSIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5Ij4KKyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPlZlcnNpb25OVCA+IDYwMDwvQ29uZGl0aW9uPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS0NSIiBLZXk9IlB5dGhvbi5GaWxlXFNoZWxsXGVkaXR3aXRoaWRsZVxzaGVsbFxlZGl0JCh2YXIuTWFqb3JWZXJzaW9uTnVtYmVyKSQodmFyLk1pbm9yVmVyc2lvbk51bWJlcikkKHZhci5QeUFyY2hFeHQpJCh2YXIuUHlUZXN0RXh0KSI+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIE5hbWU9Ik1VSVZlcmIiIFZhbHVlPSIhKGxvYy5FZGl0U3ViTWVudSkiIFR5cGU9InN0cmluZyIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9ImNvbW1hbmQiIFZhbHVlPSciW1BZVEhPTldfRVhFXSIgLW0gaWRsZWxpYiAiJUwiICUqJyBUeXBlPSJzdHJpbmciIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iYXNzb2NfZWRpdHdpdGhpZGxlX25vY29uIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiPgorICAgICAgICAgICAgICAgIDxDb25kaXRpb24+VmVyc2lvbk5UID4gNjAwPC9Db25kaXRpb24+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLQ1IiIEtleT0iUHl0aG9uLk5vQ29uRmlsZVxTaGVsbFxlZGl0d2l0aGlkbGVcc2hlbGxcZWRpdCQodmFyLk1ham9yVmVyc2lvbk51bWJlcikkKHZhci5NaW5vclZlcnNpb25OdW1iZXIpJCh2YXIuUHlBcmNoRXh0KSQodmFyLlB5VGVzdEV4dCkiPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJNVUlWZXJiIiBWYWx1ZT0iIShsb2MuRWRpdFN1Yk1lbnUpIiBUeXBlPSJzdHJpbmciIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJjb21tYW5kIiBWYWx1ZT0nIltQWVRIT05XX0VYRV0iIC1tIGlkbGVsaWIgIiVMIiAlKicgVHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iYXNzb2NfZWRpdHdpdGhpZGxlX3Zpc3RhIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiPgorICAgICAgICAgICAgICAgIDxDb25kaXRpb24+VmVyc2lvbk5UID0gNjAwPC9Db25kaXRpb24+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLQ1IiIEtleT0iUHl0aG9uLkZpbGVcU2hlbGxcZWRpdHdpdGhpZGxlJCh2YXIuTWFqb3JWZXJzaW9uTnVtYmVyKSQodmFyLk1pbm9yVmVyc2lvbk51bWJlcikkKHZhci5QeUFyY2hFeHQpJCh2YXIuUHlUZXN0RXh0KSI+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIFZhbHVlPSIhKGxvYy5FZGl0U3ViTWVudSkiIFR5cGU9InN0cmluZyIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9ImNvbW1hbmQiIFZhbHVlPSciW1BZVEhPTldfRVhFXSIgLW0gaWRsZWxpYiAiJUwiICUqJyBUeXBlPSJzdHJpbmciIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iYXNzb2NfZWRpdHdpdGhpZGxlX25vY29uX3Zpc3RhIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiPgorICAgICAgICAgICAgICAgIDxDb25kaXRpb24+VmVyc2lvbk5UID0gNjAwPC9Db25kaXRpb24+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLQ1IiIEtleT0iUHl0aG9uLk5vQ29uRmlsZVxTaGVsbFxlZGl0d2l0aGlkbGUkKHZhci5NYWpvclZlcnNpb25OdW1iZXIpJCh2YXIuTWlub3JWZXJzaW9uTnVtYmVyKSQodmFyLlB5QXJjaEV4dCkkKHZhci5QeVRlc3RFeHQpIj4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgVmFsdWU9IiEobG9jLkVkaXRTdWJNZW51KSIgVHlwZT0ic3RyaW5nIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleT0iY29tbWFuZCIgVmFsdWU9JyJbUFlUSE9OV19FWEVdIiAtbSBpZGxlbGliICIlTCIgJSonIFR5cGU9InN0cmluZyIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rlc3QvdGVzdC53aXhwcm9qIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdC53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNDdlM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGVzdC90ZXN0LndpeHByb2oKQEAgLTAsMCArMSwyOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+e0RFMEI3Q0MyLTQzNTgtNDEzMS1CM0Y0LUMzMUM3RjJDRDQ2OH08L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPnRlc3Q8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InRlc3Qud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0ZXN0X2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8SW5zdGFsbEZpbGVzIEluY2x1ZGU9IiQoUHlTb3VyY2VQYXRoKUxpYlx0ZXN0XCoqXCoiCisgICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZT0iJChQeVNvdXJjZVBhdGgpTGliXCoqXCoucHljOyQoUHlTb3VyY2VQYXRoKUxpYlwqKlwqLnB5byI+CisgICAgICAgICAgICA8U291cmNlQmFzZT4kKFB5U291cmNlUGF0aCk8L1NvdXJjZUJhc2U+CisgICAgICAgICAgICA8U291cmNlPiEoYmluZHBhdGguc3JjKTwvU291cmNlPgorICAgICAgICAgICAgPFRhcmdldEJhc2U+JChQeVNvdXJjZVBhdGgpPC9UYXJnZXRCYXNlPgorICAgICAgICAgICAgPFRhcmdldF8+PC9UYXJnZXRfPgorICAgICAgICAgICAgPEdyb3VwPnRlc3RfcHk8L0dyb3VwPgorICAgICAgICA8L0luc3RhbGxGaWxlcz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90ZXN0L3Rlc3Qud3hzIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJlZDY0ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3Qud3hzCkBAIC0wLDAgKzEsMTYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUkVHSVNUUllLRVkiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRlc3RfcHkiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRlc3RfZXh0ZW5zaW9ucyIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRSZWYgSWQ9Ik9wdGlvbmFsRmVhdHVyZSIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rlc3QvdGVzdF9kLndpeHByb2ogYi9Ub29scy9tc2kvdGVzdC90ZXN0X2Qud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2IwNGJlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9kLndpeHByb2oKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezQxRjVBRThELTI0Q0QtNEQwMy1CRTc1LUFBNkY3RkFCNDA5N308L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPnRlc3RfZDwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGVzdF9kLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGVzdF9maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGVzdC90ZXN0X2Qud3hzIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9kLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTU0ODc2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9kLnd4cwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGVfZCkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVidWdCaW5hcmllcyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGVfZCkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbl9kKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRlc3RfZXh0ZW5zaW9uc19kIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGVzdC90ZXN0X2VuLVVTLnd4bCBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZW4tVVMud3hsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2MTVjN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGVzdC90ZXN0X2VuLVVTLnd4bApAQCAtMCwwICsxLDcgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICAgIDxTdHJpbmcgSWQ9IkRlc2NyaXB0b3IiPlRlc3QgU3VpdGU8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJTaG9ydERlc2NyaXB0b3IiPnRlc3Q8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJOYXRpdmVNb2R1bGVzVGl0bGUiPiEobG9jLkZ1bGxQcm9kdWN0TmFtZSkgbmF0aXZlIGxpYnRlc3Q8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJOYXRpdmVNb2R1bGVzRGVzY3JpcHRpb24iPiEobG9jLlByb2R1Y3ROYW1lKSBOYXRpdmUgVGVzdCBNb2R1bGVzPC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZmlsZXMud3hzIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9maWxlcy53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTgwM2FhMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZmlsZXMud3hzCkBAIC0wLDAgKzEsNzcgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0idGVzdF9leHRlbnNpb25zIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y2FwaS5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0Y2FwaS5weWQiIE5hbWU9Il90ZXN0Y2FwaS5weWQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX2N0eXBlc190ZXN0LnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX2N0eXBlc190ZXN0LnB5ZCIgTmFtZT0iX2N0eXBlc190ZXN0LnB5ZCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGJ1ZmZlci5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0YnVmZmVyLnB5ZCIgTmFtZT0iX3Rlc3RidWZmZXIucHlkIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGUucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGltcG9ydG11bHRpcGxlLnB5ZCIgTmFtZT0iX3Rlc3RpbXBvcnRtdWx0aXBsZS5weWQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RtdWx0aXBoYXNlLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlLnB5ZCIgTmFtZT0iX3Rlc3RtdWx0aXBoYXNlLnB5ZCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0idGVzdF9leHRlbnNpb25zX3N5bWJvbHMiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RjYXBpLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RjYXBpLnBkYiIgTmFtZT0iX3Rlc3RjYXBpLnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX2N0eXBlc190ZXN0LnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX2N0eXBlc190ZXN0LnBkYiIgTmFtZT0iX2N0eXBlc190ZXN0LnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RidWZmZXIucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGJ1ZmZlci5wZGIiIE5hbWU9Il90ZXN0YnVmZmVyLnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RpbXBvcnRtdWx0aXBsZS5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGUucGRiIiBOYW1lPSJfdGVzdGltcG9ydG11bHRpcGxlLnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RtdWx0aXBoYXNlLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlLnBkYiIgTmFtZT0iX3Rlc3RtdWx0aXBoYXNlLnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9InRlc3RfZXh0ZW5zaW9uc19kIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y2FwaV9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RjYXBpX2QucHlkIiBOYW1lPSJfdGVzdGNhcGlfZC5weWQiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il9jdHlwZXNfdGVzdF9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX2N0eXBlc190ZXN0X2QucHlkIiBOYW1lPSJfY3R5cGVzX3Rlc3RfZC5weWQiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0YnVmZmVyX2QucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGJ1ZmZlcl9kLnB5ZCIgTmFtZT0iX3Rlc3RidWZmZXJfZC5weWQiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5weWQiIE5hbWU9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5weWQiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlX2QucHlkIiBOYW1lPSJfdGVzdG11bHRpcGhhc2VfZC5weWQiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y2FwaV9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RjYXBpX2QucGRiIiBOYW1lPSJfdGVzdGNhcGlfZC5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il9jdHlwZXNfdGVzdF9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX2N0eXBlc190ZXN0X2QucGRiIiBOYW1lPSJfY3R5cGVzX3Rlc3RfZC5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0YnVmZmVyX2QucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGJ1ZmZlcl9kLnBkYiIgTmFtZT0iX3Rlc3RidWZmZXJfZC5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5wZGIiIE5hbWU9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlX2QucGRiIiBOYW1lPSJfdGVzdG11bHRpcGhhc2VfZC5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGVzdC90ZXN0X3BkYi53aXhwcm9qIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9wZGIud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjVmMGVkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9wZGIud2l4cHJvagpAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57N0NGNDhBREQtQ0ZBQS00OTlGLTlBMDUtQkExODQ0MEEzMzQ0fTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+dGVzdF9wZGI8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InRlc3RfcGRiLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGVzdF9maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGVzdC90ZXN0X3BkYi53eHMgYi9Ub29scy9tc2kvdGVzdC90ZXN0X3BkYi53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU2MzRhMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfcGRiLnd4cwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGVQZGIpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IlN5bWJvbHMiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlUGRiKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uUGRiKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRlc3RfZXh0ZW5zaW9uc19zeW1ib2xzIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGVzdHJlbGVhc2UuYmF0IGIvVG9vbHMvbXNpL3Rlc3RyZWxlYXNlLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTg5NTc1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3Rlc3RyZWxlYXNlLmJhdApAQCAtMCwwICsxLDExNyBAQAorQHNldGxvY2FsIGVuYWJsZWV4dGVuc2lvbnMNCitAZWNobyBvZmYNCisNCitzZXQgRD0lfmRwMA0KK3NldCBQQ0JVSUxEPSVEJS4uXC4uXFBDQnVpbGRcDQorDQorc2V0IFRBUkdFVERJUj0lVEVNUCUNCitzZXQgVEVTVFg4Nj0NCitzZXQgVEVTVFg2ND0NCitzZXQgVEVTVEFMTFVTRVI9DQorc2V0IFRFU1RQRVJVU0VSPQ0KKw0KKzpDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLWgiIGdvdG8gSGVscA0KK2lmICIlMSIgRVFVICIteDg2IiAoc2V0IFRFU1RYODY9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLXg2NCIgKHNldCBURVNUWDY0PTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi10IiAoc2V0IFRBUkdFVERJUj0lfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi0tdGFyZ2V0IiAoc2V0IFRBUkdFVERJUj0lfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi1hIiAoc2V0IFRFU1RBTExVU0VSPTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi0tYWxsdXNlciIgKHNldCBURVNUQUxMVVNFUj0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItcCIgKHNldCBURVNUUEVSVVNFUj0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLXBlcnVzZXIiIChzZXQgVEVTVFBFUlVTRVI9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCisNCitpZiBub3QgZGVmaW5lZCBURVNUWDg2IGlmIG5vdCBkZWZpbmVkIFRFU1RYNjQgKHNldCBURVNUWDg2PTEpICYmIChzZXQgVEVTVFg2ND0xKQ0KK2lmIG5vdCBkZWZpbmVkIFRFU1RBTExVU0VSIGlmIG5vdCBkZWZpbmVkIFRFU1RQRVJVU0VSIChzZXQgVEVTVEFMTFVTRVI9MSkgJiYgKHNldCBURVNUUEVSVVNFUj0xKQ0KKw0KKw0KK2lmIGRlZmluZWQgVEVTVFg4NiAoDQorICAgIGZvciAlJWYgaW4gKCIlUENCVUlMRCV3aW4zMlxlbi11c1wqLmV4ZSIpIGRvICgNCisgICAgICAgIGlmIGRlZmluZWQgVEVTVEFMTFVTRVIgY2FsbCA6dGVzdCAiJSV+ZmYiICIlVEFSR0VURElSJVwlJX5uZi1hbGx1c2VyIiAiSW5zdGFsbEFsbFVzZXJzPTEgQ29tcGlsZUFsbD0xIg0KKyAgICAgICAgaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCisgICAgICAgIGlmIGRlZmluZWQgVEVTVFBFUlVTRVIgY2FsbCA6dGVzdCAiJSV+ZmYiICIlVEFSR0VURElSJVwlJX5uZi1wZXJ1c2VyIiAiSW5zdGFsbEFsbFVzZXJzPTAgQ29tcGlsZUFsbD0wIg0KKyAgICAgICAgaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCisgICAgKQ0KKykNCisNCitpZiBkZWZpbmVkIFRFU1RYNjQgKA0KKyAgICBmb3IgJSVmIGluICgiJVBDQlVJTEQlYW1kNjRcZW4tdXNcKi5leGUiKSBkbyAoDQorICAgICAgICBpZiBkZWZpbmVkIFRFU1RBTExVU0VSIGNhbGwgOnRlc3QgIiUlfmZmIiAiJVRBUkdFVERJUiVcJSV+bmYtYWxsdXNlciIgIkluc3RhbGxBbGxVc2Vycz0xIENvbXBpbGVBbGw9MSINCisgICAgICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorICAgICAgICBpZiBkZWZpbmVkIFRFU1RQRVJVU0VSIGNhbGwgOnRlc3QgIiUlfmZmIiAiJVRBUkdFVERJUiVcJSV+bmYtcGVydXNlciIgIkluc3RhbGxBbGxVc2Vycz0wIENvbXBpbGVBbGw9MCINCisgICAgICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorICAgICkNCispDQorDQorZXhpdCAvQiAwDQorDQorOnRlc3QNCitAc2V0bG9jYWwNCitAZWNobyBvbg0KKw0KK0BpZiBub3QgZXhpc3QgIiV+MSIgZXhpdCAvQiAxDQorDQorQHNldCBFWEU9JX4xDQorQGlmIG5vdCAiJUVYRTplbWJlZD0lIj09IiVFWEUlIiBleGl0IC9CIDANCisNCitAc2V0IEVYSVRDT0RFPTANCitAZWNobyBJbnN0YWxsaW5nICUxIGludG8gJTINCisiJX4xIiAvcGFzc2l2ZSAvbG9nICIlfjJcaW5zdGFsbFxsb2cudHh0IiBUYXJnZXREaXI9IiV+MlxQeXRob24iIEluY2x1ZGVfZGVidWc9MSBJbmNsdWRlX3N5bWJvbHM9MSAlfjMNCisNCitAaWYgbm90IGVycm9ybGV2ZWwgMSAoDQorICAgIEBlY2hvIFByaW50aW5nIHZlcnNpb24NCisgICAgIiV+MlxQeXRob25ccHl0aG9uLmV4ZSIgLWMgImltcG9ydCBzeXM7IHByaW50KHN5cy52ZXJzaW9uKSIgPiAiJX4yXHZlcnNpb24udHh0IiAyPiYxDQorKQ0KKw0KK0BpZiBub3QgZXJyb3JsZXZlbCAxICgNCisgICAgQGVjaG8gQ2FwdHVyaW5nIFN0YXJ0IE1lbnUNCisgICAgQGRpciAvcy9iICIlUFJPR1JBTURBVEElXE1pY3Jvc29mdFxXaW5kb3dzXFN0YXJ0IE1lbnVcUHJvZ3JhbXMiIHwgZmluZHN0ciAvaWM6InB5dGhvbiIgPiAiJX4yXHN0YXJ0bWVudS50eHQiIDI+JjENCisgICAgQGRpciAvcy9iICIlQVBQREFUQSVcTWljcm9zb2Z0XFdpbmRvd3NcU3RhcnQgTWVudVxQcm9ncmFtcyIgfCBmaW5kc3RyIC9pYzoicHl0aG9uIiAgPj4gIiV+MlxzdGFydG1lbnUudHh0IiAyPiYxDQorDQorICAgIEBlY2hvIENhcHR1cmluZyByZWdpc3RyeQ0KKyAgICBAZm9yIC9GICJ1c2ViYWNrcSIgJSVmIGluIChgcmVnIHF1ZXJ5IEhLQ1IgL3MgL2YgcHl0aG9uIC9rYCkgZG8gQCgNCisgICAgICAgIGVjaG8gJSVmID4+ICIlfjJcaGtjci50eHQiDQorICAgICAgICByZWcgcXVlcnkgIiUlZiIgL3MgPj4gIiV+Mlxoa2NyLnR4dCIgMj4mMQ0KKyAgICApDQorICAgIEByZWcgcXVlcnkgSEtDVVxTb2Z0d2FyZVxQeXRob24gL3MgPiAiJX4yXGhrY3UudHh0IiAyPiYxDQorICAgIEByZWcgcXVlcnkgSEtMTVxTb2Z0d2FyZVxQeXRob24gL3JlZzozMiAvcyA+ICIlfjJcaGtsbS50eHQiIDI+JjENCisgICAgQHJlZyBxdWVyeSBIS0xNXFNvZnR3YXJlXFB5dGhvbiAvcmVnOjY0IC9zID4+ICIlfjJcaGtsbS50eHQiIDI+JjENCisgICAgY21kIC9rIGV4aXQgMA0KKykNCisNCitAaWYgbm90IGVycm9ybGV2ZWwgMSAoDQorICAgIEBlY2hvIEluc3RhbGxpbmcgcGFja2FnZQ0KKyAgICAiJX4yXFB5dGhvblxweXRob24uZXhlIiAtbSBwaXAgaW5zdGFsbCAiYXp1cmU8MC4xMCIgPiAiJX4yXHBpcC50eHQiIDI+JjENCisgICAgQGlmIG5vdCBlcnJvcmxldmVsIDEgKA0KKyAgICAgICAgIiV+MlxQeXRob25ccHl0aG9uLmV4ZSIgLW0gcGlwIHVuaW5zdGFsbCAteSBhenVyZSBweXRob24tZGF0ZXV0aWwgc2l4ID4+ICIlfjJccGlwLnR4dCIgMj4mMQ0KKyAgICApDQorKQ0KK0BpZiBub3QgZXJyb3JsZXZlbCAxICgNCisgICAgQGVjaG8gVGVzdGluZyBUY2wvdGsNCisgICAgQHNldCBUQ0xfTElCUkFSWT0lfjJcUHl0aG9uXHRjbFx0Y2w4LjYNCisgICAgIiV+MlxQeXRob25ccHl0aG9uLmV4ZSIgLW0gdGVzdCAtdWFsbCAtdiB0ZXN0X3R0a19ndWlvbmx5IHRlc3RfdGsgdGVzdF9pZGxlID4gIiV+Mlx0Y2x0ay50eHQiIDI+JjENCisgICAgQHNldCBUQ0xfTElCUkFSWT0NCispDQorDQorQHNldCBFWElUQ09ERT0lRVJST1JMRVZFTCUNCisNCitAZWNobyBSZXN1bHQgd2FzICVFWElUQ09ERSUNCitAZWNobyBSZW1vdmluZyAlMQ0KKyIlfjEiIC9wYXNzaXZlIC91bmluc3RhbGwgL2xvZyAiJX4yXHVuaW5zdGFsbFxsb2cudHh0Ig0KKw0KK0BlY2hvIG9mZg0KK2V4aXQgL0IgJUVYSVRDT0RFJQ0KKw0KKzpIZWxwDQorZWNobyB0ZXN0cmVsZWFzZS5iYXQgWy0tdGFyZ2V0IFRBUkdFVF0gWy14ODZdIFsteDY0XSBbLS1hbGx1c2VyXSBbLS1wZXJ1c2VyXSBbLWhdDQorZWNoby4NCitlY2hvICAgIC0tdGFyZ2V0ICgtdCkgICBTcGVjaWZ5IHRoZSB0YXJnZXQgZGlyZWN0b3J5IGZvciBpbnN0YWxscyBhbmQgbG9ncw0KK2VjaG8gICAgLXg4NiAgICAgICAgICAgIFJ1biB0ZXN0cyBmb3IgeDg2IGluc3RhbGxlcnMNCitlY2hvICAgIC14NjQgICAgICAgICAgICBSdW4gdGVzdHMgZm9yIHg2NCBpbnN0YWxsZXJzDQorZWNobyAgICAtLWFsbHVzZXIgKC1hKSAgUnVuIHRlc3RzIGZvciBhbGwtdXNlciBpbnN0YWxscyAocmVxdWlyZXMgQWRtaW5pc3RyYXRvcikNCitlY2hvICAgIC0tcGVydXNlciAoLXApICBSdW4gdGVzdHMgZm9yIHBlci11c2VyIGluc3RhbGxzDQorZWNobyAgICAtaCAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIGhlbHAgaW5mb3JtYXRpb24NCitlY2hvLg0KK2VjaG8gSWYgbm8gdGVzdCBhcmNoaXRlY3R1cmUgaXMgc3BlY2lmaWVkLCBhbGwgYXJjaGl0ZWN0dXJlcyB3aWxsIGJlIHRlc3RlZC4NCitlY2hvIElmIG5vIGluc3RhbGwgdHlwZSBpcyBzZWxlY3RlZCwgYWxsIGluc3RhbGwgdHlwZXMgd2lsbCBiZSB0ZXN0ZWQuDQorZWNoby4NCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdG9vbHMvdG9vbHMud2l4cHJvaiBiL1Rvb2xzL21zaS90b29scy90b29scy53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0M2NmMzMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHMud2l4cHJvagpAQCAtMCwwICsxLDQzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57MjRDQkVCOTUtQkMxRS00RUE5LUFFQTktMzM4MzRCQ0NEMEVDfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+dG9vbHM8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InRvb2xzLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idG9vbHNfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxUb29sRGlyZWN0b3JpZXMgSW5jbHVkZT0ic2NyaXB0cztpMThuO3B5bmNoZTtweW5jaGVcWDtkZW1vIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxJbnN0YWxsRmlsZXMgSW5jbHVkZT0iJChQeVNvdXJjZVBhdGgpVG9vbHNcc2NyaXB0c1wqKlwqLnB5OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoUHlTb3VyY2VQYXRoKVRvb2xzXHNjcmlwdHNcKipcKi5weXc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpVG9vbHNcc2NyaXB0c1wqKlwqLnR4dDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFB5U291cmNlUGF0aClUb29sc1xpMThuXCoqXCoucHk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpVG9vbHNcaTE4blwqKlwqLnB5dzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFB5U291cmNlUGF0aClUb29sc1xpMThuXCoqXCoudHh0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoUHlTb3VyY2VQYXRoKVRvb2xzXHB5bmNoZVwqKlwqLnB5OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoUHlTb3VyY2VQYXRoKVRvb2xzXHB5bmNoZVwqKlwqLnB5dzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFB5U291cmNlUGF0aClUb29sc1xweW5jaGVcKipcKi50eHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpVG9vbHNcZGVtb1wqKlwqLnB5OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoUHlTb3VyY2VQYXRoKVRvb2xzXGRlbW9cKipcKi5weXc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpVG9vbHNcZGVtb1wqKlwqLnR4dDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFB5U291cmNlUGF0aClUb29sc1xwYXJzZXJcKipcKi5weSI+CisgICAgICAgICAgICAgICAgPFNvdXJjZUJhc2U+JChQeVNvdXJjZVBhdGgpPC9Tb3VyY2VCYXNlPgorICAgICAgICAgICAgICAgIDxTb3VyY2U+IShiaW5kcGF0aC5zcmMpPC9Tb3VyY2U+CisgICAgICAgICAgICAgICAgPFRhcmdldEJhc2U+JChQeVNvdXJjZVBhdGgpPC9UYXJnZXRCYXNlPgorICAgICAgICAgICAgICAgIDxUYXJnZXRfPjwvVGFyZ2V0Xz4KKyAgICAgICAgICAgICAgICA8R3JvdXA+dG9vbHNfcHk8L0dyb3VwPgorICAgICAgICA8L0luc3RhbGxGaWxlcz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90b29scy90b29scy53eHMgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHMud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmODQxOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHMud3hzCkBAIC0wLDAgKzEsMTUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRvb2xzX3B5IiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0b29sc19zY3JpcHRzIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudFJlZiBJZD0iT3B0aW9uYWxGZWF0dXJlIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdG9vbHMvdG9vbHNfZW4tVVMud3hsIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzX2VuLVVTLnd4bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTM4NDE3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzX2VuLVVTLnd4bApAQCAtMCwwICsxLDUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICAgIDxTdHJpbmcgSWQ9IkRlc2NyaXB0b3IiPlV0aWxpdHkgU2NyaXB0czwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0RGVzY3JpcHRvciI+dG9vbHM8L1N0cmluZz4KKzwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzX2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS90b29scy90b29sc19maWxlcy53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FlMGRiMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90b29scy90b29sc19maWxlcy53eHMKQEAgLTAsMCArMSwxNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJ0b29sc19zY3JpcHRzIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IlRvb2xzX3NjcmlwdHNfMnRvMy5weSIgRGlyZWN0b3J5PSJUb29sc19zY3JpcHRzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iVG9vbHNfc2NyaXB0c18ydG8zLnB5IiBOYW1lPSIydG8zLnB5IiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKVRvb2xzXHNjcmlwdHNcMnRvMyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iVG9vbHNfc2NyaXB0c19weWRvYzMucHkiIERpcmVjdG9yeT0iVG9vbHNfc2NyaXB0cyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9IlRvb2xzX3NjcmlwdHNfcHlkb2MzLnB5IiBOYW1lPSJweWRvYzMucHkiIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpVG9vbHNcc2NyaXB0c1xweWRvYzMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IlRvb2xzX3NjcmlwdHNfcHl2ZW52LnB5IiBEaXJlY3Rvcnk9IlRvb2xzX3NjcmlwdHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJUb29sc19zY3JpcHRzX3B5dmVudi5weSIgTmFtZT0icHl2ZW52LnB5IiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKVRvb2xzXHNjcmlwdHNccHl2ZW52IiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Vpc2FtcGxlLnB5IGIvVG9vbHMvbXNpL3Vpc2FtcGxlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDMwODA1Li4wMDAwMDAwCi0tLSBhL1Rvb2xzL21zaS91aXNhbXBsZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0MDAgKzAsMCBAQAotCi1pbXBvcnQgbXNpbGliLG9zO2Rpcm5hbWU9b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotQWRtaW5FeGVjdXRlU2VxdWVuY2UgPSBbCi0odSdJbnN0YWxsVmFsaWRhdGUnLCBOb25lLCAxNDAwKSwKLSh1J0luc3RhbGxJbml0aWFsaXplJywgTm9uZSwgMTUwMCksCi0odSdJbnN0YWxsRmluYWxpemUnLCBOb25lLCA2NjAwKSwKLSh1J0luc3RhbGxGaWxlcycsIE5vbmUsIDQwMDApLAotKHUnSW5zdGFsbEFkbWluUGFja2FnZScsIE5vbmUsIDM5MDApLAotKHUnRmlsZUNvc3QnLCBOb25lLCA5MDApLAotKHUnQ29zdEluaXRpYWxpemUnLCBOb25lLCA4MDApLAotKHUnQ29zdEZpbmFsaXplJywgTm9uZSwgMTAwMCksCi1dCi0KLUFkbWluVUlTZXF1ZW5jZSA9IFsKLSh1J0FkbWluV2VsY29tZURsZycsIE5vbmUsIDEyMzApLAotKHUnRmlsZUNvc3QnLCBOb25lLCA5MDApLAotKHUnQ29zdEluaXRpYWxpemUnLCBOb25lLCA4MDApLAotKHUnQ29zdEZpbmFsaXplJywgTm9uZSwgMTAwMCksCi0odSdFeGVjdXRlQWN0aW9uJywgTm9uZSwgMTMwMCksCi0odSdFeGl0RGlhbG9nJywgTm9uZSwgLTEpLAotKHUnRmF0YWxFcnJvcicsIE5vbmUsIC0zKSwKLSh1J1ByZXBhcmVEbGcnLCBOb25lLCAxNDApLAotKHUnUHJvZ3Jlc3NEbGcnLCBOb25lLCAxMjgwKSwKLSh1J1VzZXJFeGl0JywgTm9uZSwgLTIpLAotXQotCi1BZHZ0RXhlY3V0ZVNlcXVlbmNlID0gWwotKHUnSW5zdGFsbFZhbGlkYXRlJywgTm9uZSwgMTQwMCksCi0odSdJbnN0YWxsSW5pdGlhbGl6ZScsIE5vbmUsIDE1MDApLAotKHUnSW5zdGFsbEZpbmFsaXplJywgTm9uZSwgNjYwMCksCi0odSdDb3N0SW5pdGlhbGl6ZScsIE5vbmUsIDgwMCksCi0odSdDb3N0RmluYWxpemUnLCBOb25lLCAxMDAwKSwKLSh1J0NyZWF0ZVNob3J0Y3V0cycsIE5vbmUsIDQ1MDApLAotKHUnUHVibGlzaENvbXBvbmVudHMnLCBOb25lLCA2MjAwKSwKLSh1J1B1Ymxpc2hGZWF0dXJlcycsIE5vbmUsIDYzMDApLAotKHUnUHVibGlzaFByb2R1Y3QnLCBOb25lLCA2NDAwKSwKLSh1J1JlZ2lzdGVyQ2xhc3NJbmZvJywgTm9uZSwgNDYwMCksCi0odSdSZWdpc3RlckV4dGVuc2lvbkluZm8nLCBOb25lLCA0NzAwKSwKLSh1J1JlZ2lzdGVyTUlNRUluZm8nLCBOb25lLCA0OTAwKSwKLSh1J1JlZ2lzdGVyUHJvZ0lkSW5mbycsIE5vbmUsIDQ4MDApLAotXQotCi1CQkNvbnRyb2wgPSBbCi1dCi0KLUJpbGxib2FyZCA9IFsKLV0KLQotQmluYXJ5ID0gWwotKHUnYmFubnJibXAnLCBtc2lsaWIuQmluYXJ5KG9zLnBhdGguam9pbihkaXJuYW1lLCJiYW5ucmJtcC5iaW4iKSkpLAotKHUnY29tcGxldGknLCBtc2lsaWIuQmluYXJ5KG9zLnBhdGguam9pbihkaXJuYW1lLCJjb21wbGV0aS5iaW4iKSkpLAotKHUnY3VzdGljb24nLCBtc2lsaWIuQmluYXJ5KG9zLnBhdGguam9pbihkaXJuYW1lLCJjdXN0aWNvbi5iaW4iKSkpLAotKHUnZGxnYm1wJywgbXNpbGliLkJpbmFyeShvcy5wYXRoLmpvaW4oZGlybmFtZSwiZGxnYm1wLmJpbiIpKSksCi0odSdleGNsYW1pYycsIG1zaWxpYi5CaW5hcnkob3MucGF0aC5qb2luKGRpcm5hbWUsImV4Y2xhbWljLmJpbiIpKSksCi0odSdpbmZvJywgbXNpbGliLkJpbmFyeShvcy5wYXRoLmpvaW4oZGlybmFtZSwiaW5mby5iaW4iKSkpLAotKHUnaW5zdGljb24nLCBtc2lsaWIuQmluYXJ5KG9zLnBhdGguam9pbihkaXJuYW1lLCJpbnN0aWNvbi5iaW4iKSkpLAotKHUnTmV3JywgbXNpbGliLkJpbmFyeShvcy5wYXRoLmpvaW4oZGlybmFtZSwiTmV3LmJpbiIpKSksCi0odSdyZW1vdmljbycsIG1zaWxpYi5CaW5hcnkob3MucGF0aC5qb2luKGRpcm5hbWUsInJlbW92aWNvLmJpbiIpKSksCi0odSdyZXBhaXJpYycsIG1zaWxpYi5CaW5hcnkob3MucGF0aC5qb2luKGRpcm5hbWUsInJlcGFpcmljLmJpbiIpKSksCi0odSdVcCcsIG1zaWxpYi5CaW5hcnkob3MucGF0aC5qb2luKGRpcm5hbWUsIlVwLmJpbiIpKSksCi1dCi0KLUNoZWNrQm94ID0gWwotXQotCi1Qcm9wZXJ0eSA9IFsKLSh1J0Jhbm5lckJpdG1hcCcsIHUnYmFubnJibXAnKSwKLSh1J0lBZ3JlZScsIHUnTm8nKSwKLSh1J1Byb2R1Y3RJRCcsIHUnbm9uZScpLAotKHUnQVJQSEVMUExJTksnLCB1J2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9tYW5hZ2VtZW50JyksCi0odSdCdXR0b25UZXh0X0JhY2snLCB1JzwgJkJhY2snKSwKLSh1J0J1dHRvblRleHRfQnJvd3NlJywgdSdCciZvd3NlJyksCi0odSdCdXR0b25UZXh0X0NhbmNlbCcsIHUnQ2FuY2VsJyksCi0odSdCdXR0b25UZXh0X0V4aXQnLCB1JyZFeGl0JyksCi0odSdCdXR0b25UZXh0X0ZpbmlzaCcsIHUnJkZpbmlzaCcpLAotKHUnQnV0dG9uVGV4dF9JZ25vcmUnLCB1JyZJZ25vcmUnKSwKLSh1J0J1dHRvblRleHRfSW5zdGFsbCcsIHUnJkluc3RhbGwnKSwKLSh1J0J1dHRvblRleHRfTmV4dCcsIHUnJk5leHQgPicpLAotKHUnQnV0dG9uVGV4dF9ObycsIHUnJk5vJyksCi0odSdCdXR0b25UZXh0X09LJywgdSdPSycpLAotKHUnQnV0dG9uVGV4dF9SZW1vdmUnLCB1JyZSZW1vdmUnKSwKLSh1J0J1dHRvblRleHRfUmVwYWlyJywgdScmUmVwYWlyJyksCi0odSdCdXR0b25UZXh0X1Jlc2V0JywgdScmUmVzZXQnKSwKLSh1J0J1dHRvblRleHRfUmVzdW1lJywgdScmUmVzdW1lJyksCi0odSdCdXR0b25UZXh0X1JldHJ5JywgdScmUmV0cnknKSwKLSh1J0J1dHRvblRleHRfUmV0dXJuJywgdScmUmV0dXJuJyksCi0odSdCdXR0b25UZXh0X1llcycsIHUnJlllcycpLAotKHUnQ29tcGxldGVTZXR1cEljb24nLCB1J2NvbXBsZXRpJyksCi0odSdDb21wb25lbnREb3dubG9hZCcsIHUnZnRwOi8vYW5vbnltb3VzQG1pY3Jvc29mdC5jb20vY29tcG9uZW50cy8nKSwKLSh1J0N1c3RvbVNldHVwSWNvbicsIHUnY3VzdGljb24nKSwKLSh1J0RlZmF1bHRVSUZvbnQnLCB1J0RsZ0ZvbnQ4JyksCi0odSdEaWFsb2dCaXRtYXAnLCB1J2RsZ2JtcCcpLAotKHUnRGxnVGl0bGVGb250JywgdSd7JkRsZ0ZvbnRCb2xkOH0nKSwKLSh1J0Vycm9yRGlhbG9nJywgdSdFcnJvckRsZycpLAotKHUnRXhjbGFtYXRpb25JY29uJywgdSdleGNsYW1pYycpLAotKHUnSW5mb0ljb24nLCB1J2luZm8nKSwKLSh1J0luc3RhbGxlckljb24nLCB1J2luc3RpY29uJyksCi0odSdJTlNUQUxMTEVWRUwnLCB1JzMnKSwKLSh1J0luc3RhbGxNb2RlJywgdSdUeXBpY2FsJyksCi0odSdQSURUZW1wbGF0ZScsIHUnMTIzNDU8IyMjLSUlJSUlJSU+QEBAQEAnKSwKLSModSdQcm9kdWN0TGFuZ3VhZ2UnLCB1JzEwMzMnKSwKLSh1J1Byb2dyZXNzMScsIHUnSW5zdGFsbGluZycpLAotKHUnUHJvZ3Jlc3MyJywgdSdpbnN0YWxscycpLAotKHUnUFJPTVBUUk9MTEJBQ0tDT1NUJywgdSdQJyksCi0odSdSZW1vdmVJY29uJywgdSdyZW1vdmljbycpLAotKHUnUmVwYWlySWNvbicsIHUncmVwYWlyaWMnKSwKLSh1J1NldHVwJywgdSdTZXR1cCcpLAotKHUnU2hvd1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1JzEnKSwKLSh1J1dpemFyZCcsIHUnU2V0dXAgV2l6YXJkJyksCi1dCi0KLUNvbWJvQm94ID0gWwotXQotCi1Db250cm9sID0gWwotKHUnQWRtaW5XZWxjb21lRGxnJywgdSdCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3MCwgMjM0LCAxLCBOb25lLCB1J1tEaWFsb2dCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdBZG1pbldlbGNvbWVEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdBZG1pbldlbGNvbWVEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQml0bWFwJywgTm9uZSksCi0odSdBZG1pbldlbGNvbWVEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMTM1LCA3MCwgMjIwLCAzMCwgMTk2NjExLCBOb25lLCB1J1RoZSBbV2l6YXJkXSB3aWxsIGNyZWF0ZSBhIHNlcnZlciBpbWFnZSBvZiBbUHJvZHVjdE5hbWVdLCBhdCBhIHNwZWNpZmllZCBuZXR3b3JrIGxvY2F0aW9uLiAgQ2xpY2sgTmV4dCB0byBjb250aW51ZSBvciBDYW5jZWwgdG8gZXhpdCB0aGUgW1dpemFyZF0uJywgTm9uZSwgTm9uZSksCi0odSdBZG1pbldlbGNvbWVEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTM1LCAyMCwgMjIwLCA2MCwgMTk2NjExLCBOb25lLCB1J3tcXFZlcmRhbmFCb2xkMTN9V2VsY29tZSB0byB0aGUgW1Byb2R1Y3ROYW1lXSBbV2l6YXJkXScsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5XZWxjb21lRGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnTmV4dCcsIE5vbmUpLAotKHUnQWRtaW5XZWxjb21lRGxnJywgdSdOZXh0JywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9OZXh0XScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdFeGl0RGlhbG9nJywgdSdCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3MCwgMjM0LCAxLCBOb25lLCB1J1tEaWFsb2dCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdFeGl0RGlhbG9nJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnRXhpdERpYWxvZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCaXRtYXAnLCBOb25lKSwKLSh1J0V4aXREaWFsb2cnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMTM1LCA3MCwgMjIwLCAyMCwgMTk2NjExLCBOb25lLCB1J0NsaWNrIHRoZSBGaW5pc2ggYnV0dG9uIHRvIGV4aXQgdGhlIFtXaXphcmRdLicsIE5vbmUsIE5vbmUpLAotKHUnRXhpdERpYWxvZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxMzUsIDIwLCAyMjAsIDYwLCAxOTY2MTEsIE5vbmUsIHUne1xcVmVyZGFuYUJvbGQxM31Db21wbGV0aW5nIHRoZSBbUHJvZHVjdE5hbWVdIFtXaXphcmRdJywgTm9uZSwgTm9uZSksCi0odSdFeGl0RGlhbG9nJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnRmluaXNoJywgTm9uZSksCi0odSdFeGl0RGlhbG9nJywgdSdGaW5pc2gnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0ZpbmlzaF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnRmF0YWxFcnJvcicsIHUnQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzAsIDIzNCwgMSwgTm9uZSwgdSdbRGlhbG9nQml0bWFwXScsIHUnQmFjaycsIE5vbmUpLAotKHUnRmF0YWxFcnJvcicsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0ZhdGFsRXJyb3InLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQml0bWFwJywgTm9uZSksCi0odSdGYXRhbEVycm9yJywgdSdUaXRsZScsIHUnVGV4dCcsIDEzNSwgMjAsIDIyMCwgNjAsIDE5NjYxMSwgTm9uZSwgdSd7XFxWZXJkYW5hQm9sZDEzfVtQcm9kdWN0TmFtZV0gW1dpemFyZF0gZW5kZWQgcHJlbWF0dXJlbHknLCBOb25lLCBOb25lKSwKLSh1J0ZhdGFsRXJyb3InLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdGaW5pc2gnLCBOb25lKSwKLSh1J0ZhdGFsRXJyb3InLCB1J0ZpbmlzaCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfRmluaXNoXScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdGYXRhbEVycm9yJywgdSdEZXNjcmlwdGlvbjEnLCB1J1RleHQnLCAxMzUsIDcwLCAyMjAsIDQwLCAxOTY2MTEsIE5vbmUsIHUnW1Byb2R1Y3ROYW1lXSBzZXR1cCBlbmRlZCBwcmVtYXR1cmVseSBiZWNhdXNlIG9mIGFuIGVycm9yLiAgWW91ciBzeXN0ZW0gaGFzIG5vdCBiZWVuIG1vZGlmaWVkLiAgVG8gaW5zdGFsbCB0aGlzIHByb2dyYW0gYXQgYSBsYXRlciB0aW1lLCBwbGVhc2UgcnVuIHRoZSBpbnN0YWxsYXRpb24gYWdhaW4uJywgTm9uZSwgTm9uZSksCi0odSdGYXRhbEVycm9yJywgdSdEZXNjcmlwdGlvbjInLCB1J1RleHQnLCAxMzUsIDExNSwgMjIwLCAyMCwgMTk2NjExLCBOb25lLCB1J0NsaWNrIHRoZSBGaW5pc2ggYnV0dG9uIHRvIGV4aXQgdGhlIFtXaXphcmRdLicsIE5vbmUsIE5vbmUpLAotKHUnUHJlcGFyZURsZycsIHUnQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzAsIDIzNCwgMSwgTm9uZSwgdSdbRGlhbG9nQml0bWFwXScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdQcmVwYXJlRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnUHJlcGFyZURsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCaXRtYXAnLCBOb25lKSwKLSh1J1ByZXBhcmVEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMTM1LCA3MCwgMjIwLCAyMCwgMTk2NjExLCBOb25lLCB1J1BsZWFzZSB3YWl0IHdoaWxlIHRoZSBbV2l6YXJkXSBwcmVwYXJlcyB0byBndWlkZSB5b3UgdGhyb3VnaCB0aGUgaW5zdGFsbGF0aW9uLicsIE5vbmUsIE5vbmUpLAotKHUnUHJlcGFyZURsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxMzUsIDIwLCAyMjAsIDYwLCAxOTY2MTEsIE5vbmUsIHUne1xcVmVyZGFuYUJvbGQxM31XZWxjb21lIHRvIHRoZSBbUHJvZHVjdE5hbWVdIFtXaXphcmRdJywgTm9uZSwgTm9uZSksCi0odSdQcmVwYXJlRGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIE5vbmUsIE5vbmUpLAotKHUnUHJlcGFyZURsZycsIHUnTmV4dCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfTmV4dF0nLCBOb25lLCBOb25lKSwKLSh1J1ByZXBhcmVEbGcnLCB1J0FjdGlvbkRhdGEnLCB1J1RleHQnLCAxMzUsIDEyNSwgMjIwLCAzMCwgMTk2NjExLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1ByZXBhcmVEbGcnLCB1J0FjdGlvblRleHQnLCB1J1RleHQnLCAxMzUsIDEwMCwgMjIwLCAyMCwgMTk2NjExLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1Byb2dyZXNzRGxnJywgdSdUZXh0JywgdSdUZXh0JywgMzUsIDY1LCAzMDAsIDIwLCAzLCBOb25lLCB1J1BsZWFzZSB3YWl0IHdoaWxlIHRoZSBbV2l6YXJkXSBbUHJvZ3Jlc3MyXSBbUHJvZHVjdE5hbWVdLiAgVGhpcyBtYXkgdGFrZSBzZXZlcmFsIG1pbnV0ZXMuJywgTm9uZSwgTm9uZSksCi0odSdQcm9ncmVzc0RsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdQcm9ncmVzc0RsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdQcm9ncmVzc0RsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J1Byb2dyZXNzRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDIwLCAxNSwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdW1Byb2dyZXNzMV0gW1Byb2R1Y3ROYW1lXScsIE5vbmUsIE5vbmUpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdOZXh0JywgTm9uZSksCi0odSdQcm9ncmVzc0RsZycsIHUnTmV4dCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfTmV4dF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J0FjdGlvblRleHQnLCB1J1RleHQnLCA3MCwgMTAwLCAyNjUsIDEwLCAzLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1Byb2dyZXNzRGxnJywgdSdQcm9ncmVzc0JhcicsIHUnUHJvZ3Jlc3NCYXInLCAzNSwgMTE1LCAzMDAsIDEwLCA2NTUzNywgTm9uZSwgdSdQcm9ncmVzcyBkb25lJywgTm9uZSwgTm9uZSksCi0odSdQcm9ncmVzc0RsZycsIHUnU3RhdHVzTGFiZWwnLCB1J1RleHQnLCAzNSwgMTAwLCAzNSwgMTAsIDMsIE5vbmUsIHUnU3RhdHVzOicsIE5vbmUsIE5vbmUpLAotKHUnVXNlckV4aXQnLCB1J0JpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzcwLCAyMzQsIDEsIE5vbmUsIHUnW0RpYWxvZ0JpdG1hcF0nLCB1J0JhY2snLCBOb25lKSwKLSh1J1VzZXJFeGl0JywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnVXNlckV4aXQnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQml0bWFwJywgTm9uZSksCi0odSdVc2VyRXhpdCcsIHUnVGl0bGUnLCB1J1RleHQnLCAxMzUsIDIwLCAyMjAsIDYwLCAxOTY2MTEsIE5vbmUsIHUne1xcVmVyZGFuYUJvbGQxM31bUHJvZHVjdE5hbWVdIFtXaXphcmRdIHdhcyBpbnRlcnJ1cHRlZCcsIE5vbmUsIE5vbmUpLAotKHUnVXNlckV4aXQnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdGaW5pc2gnLCBOb25lKSwKLSh1J1VzZXJFeGl0JywgdSdGaW5pc2gnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0ZpbmlzaF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnVXNlckV4aXQnLCB1J0Rlc2NyaXB0aW9uMScsIHUnVGV4dCcsIDEzNSwgNzAsIDIyMCwgNDAsIDE5NjYxMSwgTm9uZSwgdSdbUHJvZHVjdE5hbWVdIHNldHVwIHdhcyBpbnRlcnJ1cHRlZC4gIFlvdXIgc3lzdGVtIGhhcyBub3QgYmVlbiBtb2RpZmllZC4gIFRvIGluc3RhbGwgdGhpcyBwcm9ncmFtIGF0IGEgbGF0ZXIgdGltZSwgcGxlYXNlIHJ1biB0aGUgaW5zdGFsbGF0aW9uIGFnYWluLicsIE5vbmUsIE5vbmUpLAotKHUnVXNlckV4aXQnLCB1J0Rlc2NyaXB0aW9uMicsIHUnVGV4dCcsIDEzNSwgMTE1LCAyMjAsIDIwLCAxOTY2MTEsIE5vbmUsIHUnQ2xpY2sgdGhlIEZpbmlzaCBidXR0b24gdG8gZXhpdCB0aGUgW1dpemFyZF0uJywgTm9uZSwgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnVXAnLCB1J1B1c2hCdXR0b24nLCAyOTgsIDU1LCAxOSwgMTksIDM2NzAwMTksIE5vbmUsIHUnVXAnLCB1J05ld0ZvbGRlcicsIHUnVXAgT25lIExldmVsfCcpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnUGF0aEVkaXQnLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdQYXRoRWRpdCcsIHUnUGF0aEVkaXQnLCA4NCwgMjAyLCAyNjEsIDE3LCAzLCB1J1RBUkdFVERJUicsIE5vbmUsIHUnT0snLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAyNDAsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0NvbWJvTGFiZWwnLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdDb21ib0xhYmVsJywgdSdUZXh0JywgMjUsIDU4LCA0NCwgMTAsIDMsIE5vbmUsIHUnJkxvb2sgaW46JywgdSdEaXJlY3RvcnlDb21ibycsIE5vbmUpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J0RpcmVjdG9yeUNvbWJvJywgdSdEaXJlY3RvcnlDb21ibycsIDcwLCA1NSwgMjIwLCA4MCwgNDU4NzU1LCB1J1RBUkdFVERJUicsIE5vbmUsIHUnVXAnLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDI1LCAyMywgMjgwLCAxNSwgMTk2NjExLCBOb25lLCB1J0Jyb3dzZSB0byB0aGUgZGVzdGluYXRpb24gZm9sZGVyJywgTm9uZSwgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnRGlyZWN0b3J5TGlzdCcsIHUnRGlyZWN0b3J5TGlzdCcsIDI1LCA4MywgMzIwLCAxMTAsIDcsIHUnVEFSR0VURElSJywgTm9uZSwgdSdQYXRoTGFiZWwnLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdQYXRoTGFiZWwnLCB1J1RleHQnLCAyNSwgMjA1LCA1OSwgMTAsIDMsIE5vbmUsIHUnJkZvbGRlciBuYW1lOicsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnTmV3Rm9sZGVyJywgdSdQdXNoQnV0dG9uJywgMzI1LCA1NSwgMTksIDE5LCAzNjcwMDE5LCBOb25lLCB1J05ldycsIHUnRGlyZWN0b3J5TGlzdCcsIHUnQ3JlYXRlIEEgTmV3IEZvbGRlcnwnKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdPSycsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfT0tdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1DaGFuZ2UgY3VycmVudCBkZXN0aW5hdGlvbiBmb2xkZXInLCBOb25lLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdUZXh0JywgdSdUZXh0JywgMjUsIDgwLCAzMjAsIDEwLCAzLCBOb25lLCB1JyZFbnRlciBhIG5ldyBuZXR3b3JrIGxvY2F0aW9uIG9yIGNsaWNrIEJyb3dzZSB0byBicm93c2UgdG8gb25lLicsIHUnUGF0aEVkaXQnLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J1RleHQnLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdQYXRoRWRpdCcsIHUnUGF0aEVkaXQnLCAyNSwgOTMsIDMyMCwgMTgsIDMsIHUnVEFSR0VURElSJywgTm9uZSwgdSdCcm93c2UnLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnQWRtaW5JbnN0YWxsUG9pbnREbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMjUsIDIwLCAyODAsIDIwLCAxOTY2MTEsIE5vbmUsIHUnUGxlYXNlIHNwZWNpZnkgYSBuZXR3b3JrIGxvY2F0aW9uIGZvciB0aGUgc2VydmVyIGltYWdlIG9mIFtQcm9kdWN0TmFtZV0gcHJvZHVjdCcsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5JbnN0YWxsUG9pbnREbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XU5ldHdvcmsgTG9jYXRpb24nLCBOb25lLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnTmV4dCcsIE5vbmUpLAotKHUnQWRtaW5JbnN0YWxsUG9pbnREbGcnLCB1J05leHQnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X05leHRdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdCcm93c2UnLCB1J1B1c2hCdXR0b24nLCAyODksIDExOSwgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0Jyb3dzZV0nLCB1J0JhY2snLCBOb25lKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J09yZ2FuaXphdGlvbkxhYmVsJywgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDI1LCAyMywgMjgwLCAxNSwgMTk2NjExLCBOb25lLCB1J1BsZWFzZSBlbnRlciB5b3VyIGNvbXBhbnkgaW5mb3JtYXRpb24nLCBOb25lLCBOb25lKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1Db21wYW55IEluZm9ybWF0aW9uJywgTm9uZSwgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDY1NTM5LCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdOZXh0JywgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnTmV4dCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfTmV4dF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J09yZ2FuaXphdGlvbkxhYmVsJywgdSdUZXh0JywgNDUsIDcxLCAyODUsIDMwLCAzLCBOb25lLCB1JyZQbGVhc2UgZW50ZXIgdGhlIG5hbWUgb2YgeW91ciBvcmdhbml6YXRpb24gaW4gdGhlIGJveCBiZWxvdy4gIFRoaXMgd2lsbCBiZSB1c2VkIGFzIGRlZmF1bHQgY29tcGFueSBuYW1lIGZvciBzdWJzZXF1ZW50IGluc3RhbGxhdGlvbnMgb2YgW1Byb2R1Y3ROYW1lXTonLCB1J09yZ2FuaXphdGlvbkVkaXQnLCBOb25lKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdDREtleUVkaXQnLCB1J01hc2tlZEVkaXQnLCA0NSwgMTQzLCAyNTAsIDE2LCAzLCB1J1BJREtFWScsIHUnW1BJRFRlbXBsYXRlXScsIHUnQmFjaycsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J0NES2V5TGFiZWwnLCB1J1RleHQnLCA0NSwgMTMwLCA1MCwgMTAsIDMsIE5vbmUsIHUnQ0QgJktleTonLCB1J0NES2V5RWRpdCcsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J09yZ2FuaXphdGlvbkVkaXQnLCB1J0VkaXQnLCA0NSwgMTA1LCAyMjAsIDE4LCAzLCB1J0NPTVBBTllOQU1FJywgdSd7ODB9JywgdSdDREtleUxhYmVsJywgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J1VwJywgdSdQdXNoQnV0dG9uJywgMjk4LCA1NSwgMTksIDE5LCAzNjcwMDE5LCBOb25lLCB1J1VwJywgdSdOZXdGb2xkZXInLCB1J1VwIE9uZSBMZXZlbHwnKSwKLSh1J0Jyb3dzZURsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdQYXRoRWRpdCcsIE5vbmUpLAotKHUnQnJvd3NlRGxnJywgdSdQYXRoRWRpdCcsIHUnUGF0aEVkaXQnLCA4NCwgMjAyLCAyNjEsIDE4LCAxMSwgdSdfQnJvd3NlUHJvcGVydHknLCBOb25lLCB1J09LJywgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J0Jhbm5lckxpbmUnLCB1J0xpbmUnLCAwLCA0NCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0Jyb3dzZURsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0Jyb3dzZURsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMjQwLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdDb21ib0xhYmVsJywgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J0NvbWJvTGFiZWwnLCB1J1RleHQnLCAyNSwgNTgsIDQ0LCAxMCwgMywgTm9uZSwgdScmTG9vayBpbjonLCB1J0RpcmVjdG9yeUNvbWJvJywgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J0RpcmVjdG9yeUNvbWJvJywgdSdEaXJlY3RvcnlDb21ibycsIDcwLCA1NSwgMjIwLCA4MCwgMzkzMjI3LCB1J19Ccm93c2VQcm9wZXJ0eScsIE5vbmUsIHUnVXAnLCBOb25lKSwKLSh1J0Jyb3dzZURsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyNSwgMjMsIDI4MCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdCcm93c2UgdG8gdGhlIGRlc3RpbmF0aW9uIGZvbGRlcicsIE5vbmUsIE5vbmUpLAotKHUnQnJvd3NlRGxnJywgdSdEaXJlY3RvcnlMaXN0JywgdSdEaXJlY3RvcnlMaXN0JywgMjUsIDgzLCAzMjAsIDExMCwgMTUsIHUnX0Jyb3dzZVByb3BlcnR5JywgTm9uZSwgdSdQYXRoTGFiZWwnLCBOb25lKSwKLSh1J0Jyb3dzZURsZycsIHUnUGF0aExhYmVsJywgdSdUZXh0JywgMjUsIDIwNSwgNTksIDEwLCAzLCBOb25lLCB1JyZGb2xkZXIgbmFtZTonLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnQnJvd3NlRGxnJywgdSdOZXdGb2xkZXInLCB1J1B1c2hCdXR0b24nLCAzMjUsIDU1LCAxOSwgMTksIDM2NzAwMTksIE5vbmUsIHUnTmV3JywgdSdEaXJlY3RvcnlMaXN0JywgdSdDcmVhdGUgQSBOZXcgRm9sZGVyfCcpLAotKHUnQnJvd3NlRGxnJywgdSdPSycsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfT0tdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J0Jyb3dzZURsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdQ2hhbmdlIGN1cnJlbnQgZGVzdGluYXRpb24gZm9sZGVyJywgTm9uZSwgTm9uZSksCi0odSdDYW5jZWxEbGcnLCB1J1RleHQnLCB1J1RleHQnLCA0OCwgMTUsIDE5NCwgMzAsIDMsIE5vbmUsIHUnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNhbmNlbCBbUHJvZHVjdE5hbWVdIGluc3RhbGxhdGlvbj8nLCBOb25lLCBOb25lKSwKLSh1J0NhbmNlbERsZycsIHUnSWNvbicsIHUnSWNvbicsIDE1LCAxNSwgMjQsIDI0LCA1MjQyODgxLCBOb25lLCB1J1tJbmZvSWNvbl0nLCBOb25lLCB1J0luZm9ybWF0aW9uIGljb258JyksCi0odSdDYW5jZWxEbGcnLCB1J05vJywgdSdQdXNoQnV0dG9uJywgMTMyLCA1NywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X05vXScsIHUnWWVzJywgTm9uZSksCi0odSdDYW5jZWxEbGcnLCB1J1llcycsIHUnUHVzaEJ1dHRvbicsIDcyLCA1NywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X1llc10nLCB1J05vJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J1RleHQnLCB1J1RleHQnLCAyNSwgNTUsIDMyMCwgMjAsIDMsIE5vbmUsIHUnQ2xpY2sgb24gdGhlIGljb25zIGluIHRoZSB0cmVlIGJlbG93IHRvIGNoYW5nZSB0aGUgd2F5IGZlYXR1cmVzIHdpbGwgYmUgaW5zdGFsbGVkLicsIE5vbmUsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J1RyZWUnLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDI1LCAyMywgMjgwLCAxNSwgMTk2NjExLCBOb25lLCB1J1NlbGVjdCB0aGUgd2F5IHlvdSB3YW50IGZlYXR1cmVzIHRvIGJlIGluc3RhbGxlZC4nLCBOb25lLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdQ3VzdG9tIFNldHVwJywgTm9uZSwgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdOZXh0JywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J05leHQnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X05leHRdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnQnJvd3NlJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyMDAsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9Ccm93c2VdJywgdSdSZXNldCcsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdUcmVlJywgdSdTZWxlY3Rpb25UcmVlJywgMjUsIDg1LCAxNzUsIDk1LCA3LCB1J19Ccm93c2VQcm9wZXJ0eScsIHUnVHJlZSBvZiBzZWxlY3Rpb25zJywgdSdCcm93c2UnLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnQm94JywgdSdHcm91cEJveCcsIDIxMCwgODEsIDE0MCwgOTgsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdSZXNldCcsIHUnUHVzaEJ1dHRvbicsIDQyLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9SZXNldF0nLCB1J0Rpc2tDb3N0JywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0Rpc2tDb3N0JywgdSdQdXNoQnV0dG9uJywgMTExLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdEaXNrICZVc2FnZScsIHUnQmFjaycsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdJdGVtRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyMTUsIDkwLCAxMzEsIDMwLCAzLCBOb25lLCB1J011bHRpbGluZSBkZXNjcmlwdGlvbiBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW0uJywgTm9uZSwgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0l0ZW1TaXplJywgdSdUZXh0JywgMjE1LCAxMzAsIDEzMSwgNDUsIDMsIE5vbmUsIHUnVGhlIHNpemUgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtLicsIE5vbmUsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdMb2NhdGlvbicsIHUnVGV4dCcsIDc1LCAyMDAsIDIxNSwgMjAsIDMsIE5vbmUsIHUiPFRoZSBzZWxlY3Rpb24ncyBwYXRoPiIsIE5vbmUsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdMb2NhdGlvbkxhYmVsJywgdSdUZXh0JywgMjUsIDIwMCwgNTAsIDEwLCAzLCBOb25lLCB1J0xvY2F0aW9uOicsIE5vbmUsIE5vbmUpLAotKHUnRGlza0Nvc3REbGcnLCB1J1RleHQnLCB1J1RleHQnLCAyMCwgNTMsIDMzMCwgNDAsIDMsIE5vbmUsIHUnVGhlIGhpZ2hsaWdodGVkIHZvbHVtZXMgKGlmIGFueSkgZG8gbm90IGhhdmUgZW5vdWdoIGRpc2sgc3BhY2UgYXZhaWxhYmxlIGZvciB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGZlYXR1cmVzLiAgWW91IGNhbiBlaXRoZXIgcmVtb3ZlIHNvbWUgZmlsZXMgZnJvbSB0aGUgaGlnaGxpZ2h0ZWQgdm9sdW1lcywgb3IgY2hvb3NlIHRvIGluc3RhbGwgbGVzcyBmZWF0dXJlcyBvbnRvIGxvY2FsIGRyaXZlKHMpLCBvciBzZWxlY3QgZGlmZmVyZW50IGRlc3RpbmF0aW9uIGRyaXZlKHMpLicsIE5vbmUsIE5vbmUpLAotKHUnRGlza0Nvc3REbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnT0snLCBOb25lKSwKLSh1J0Rpc2tDb3N0RGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdEaXNrQ29zdERsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0Rpc2tDb3N0RGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDIwLCAyMCwgMjgwLCAyMCwgMTk2NjExLCBOb25lLCB1J1RoZSBkaXNrIHNwYWNlIHJlcXVpcmVkIGZvciB0aGUgaW5zdGFsbGF0aW9uIG9mIHRoZSBzZWxlY3RlZCBmZWF0dXJlcy4nLCBOb25lLCBOb25lKSwKLSh1J0Rpc2tDb3N0RGxnJywgdSdPSycsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfT0tdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J0Rpc2tDb3N0RGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1EaXNrIFNwYWNlIFJlcXVpcmVtZW50cycsIE5vbmUsIE5vbmUpLAotKHUnRGlza0Nvc3REbGcnLCB1J1ZvbHVtZUxpc3QnLCB1J1ZvbHVtZUNvc3RMaXN0JywgMjAsIDEwMCwgMzMwLCAxMjAsIDM5MzIyMywgTm9uZSwgdSd7MTIwfXs3MH17NzB9ezcwfXs3MH0nLCBOb25lLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdZJywgdSdQdXNoQnV0dG9uJywgMTAwLCA4MCwgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X1llc10nLCBOb25lLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdBJywgdSdQdXNoQnV0dG9uJywgMTAwLCA4MCwgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCBOb25lLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdDJywgdSdQdXNoQnV0dG9uJywgMTAwLCA4MCwgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCBOb25lLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdFcnJvckljb24nLCB1J0ljb24nLCAxNSwgMTUsIDI0LCAyNCwgNTI0Mjg4MSwgTm9uZSwgdSdbSW5mb0ljb25dJywgTm9uZSwgdSdJbmZvcm1hdGlvbiBpY29ufCcpLAotKHUnRXJyb3JEbGcnLCB1J0Vycm9yVGV4dCcsIHUnVGV4dCcsIDQ4LCAxNSwgMjA1LCA2MCwgMywgTm9uZSwgdSdJbmZvcm1hdGlvbiB0ZXh0JywgTm9uZSwgTm9uZSksCi0odSdFcnJvckRsZycsIHUnSScsIHUnUHVzaEJ1dHRvbicsIDEwMCwgODAsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9JZ25vcmVdJywgTm9uZSwgTm9uZSksCi0odSdFcnJvckRsZycsIHUnTicsIHUnUHVzaEJ1dHRvbicsIDEwMCwgODAsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9Ob10nLCBOb25lLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdPJywgdSdQdXNoQnV0dG9uJywgMTAwLCA4MCwgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X09LXScsIE5vbmUsIE5vbmUpLAotKHUnRXJyb3JEbGcnLCB1J1InLCB1J1B1c2hCdXR0b24nLCAxMDAsIDgwLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfUmV0cnldJywgTm9uZSwgTm9uZSksCi0odSdGaWxlc0luVXNlJywgdSdUZXh0JywgdSdUZXh0JywgMjAsIDU1LCAzMzAsIDMwLCAzLCBOb25lLCB1J1RoZSBmb2xsb3dpbmcgYXBwbGljYXRpb25zIGFyZSB1c2luZyBmaWxlcyB0aGF0IG5lZWQgdG8gYmUgdXBkYXRlZCBieSB0aGlzIHNldHVwLiBDbG9zZSB0aGVzZSBhcHBsaWNhdGlvbnMgYW5kIHRoZW4gY2xpY2sgUmV0cnkgdG8gY29udGludWUgdGhlIGluc3RhbGxhdGlvbiBvciBDYW5jZWwgdG8gZXhpdCBpdC4nLCBOb25lLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnUmV0cnknLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCB1J0Jhbm5lckxpbmUnLCB1J0xpbmUnLCAwLCA0NCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdGaWxlc0luVXNlJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDIwLCAyMywgMjgwLCAyMCwgMTk2NjExLCBOb25lLCB1J1NvbWUgZmlsZXMgdGhhdCBuZWVkIHRvIGJlIHVwZGF0ZWQgYXJlIGN1cnJlbnRseSBpbiB1c2UuJywgTm9uZSwgTm9uZSksCi0odSdGaWxlc0luVXNlJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1GaWxlcyBpbiBVc2UnLCBOb25lLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCB1J1JldHJ5JywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9SZXRyeV0nLCB1J0lnbm9yZScsIE5vbmUpLAotKHUnRmlsZXNJblVzZScsIHUnRXhpdCcsIHUnUHVzaEJ1dHRvbicsIDE2NiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfRXhpdF0nLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnRmlsZXNJblVzZScsIHUnSWdub3JlJywgdSdQdXNoQnV0dG9uJywgMjM1LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9JZ25vcmVdJywgdSdFeGl0JywgTm9uZSksCi0odSdGaWxlc0luVXNlJywgdSdMaXN0JywgdSdMaXN0Qm94JywgMjAsIDg3LCAzMzAsIDEzMCwgNywgdSdGaWxlSW5Vc2VQcm9jZXNzJywgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J0FncmVlbWVudFRleHQnLCBOb25lKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J0Jhbm5lckxpbmUnLCB1J0xpbmUnLCAwLCA0NCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyNSwgMjMsIDI4MCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdQbGVhc2UgcmVhZCB0aGUgZm9sbG93aW5nIGxpY2Vuc2UgYWdyZWVtZW50IGNhcmVmdWxseScsIE5vbmUsIE5vbmUpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdRW5kLVVzZXIgTGljZW5zZSBBZ3JlZW1lbnQnLCBOb25lLCBOb25lKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdOZXh0JywgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdOZXh0JywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9OZXh0XScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdBZ3JlZW1lbnRUZXh0JywgdSdTY3JvbGxhYmxlVGV4dCcsIDIwLCA2MCwgMzMwLCAxMjAsIDcsIE5vbmUsIHUne1xccnRmMVxcYW5zaVxcYW5zaWNwZzEyNTJcXGRlZmYwXFxkZWZ0YWI3MjB7XFxmb250dGJse1xcZjBcXGZyb21hblxcZnBycTIgVGltZXMgTmV3IFJvbWFuO319e1xcY29sb3J0YmxcXHJlZDBcXGdyZWVuMFxcYmx1ZTA7fSBcXGRlZmxhbmcxMDMzXFxob3J6ZG9je1xcKlxcZmNoYXJzIH17XFwqXFxsY2hhcnMgfVxccGFyZFxccGxhaW5cXGYwXFxmczIwIDxZb3VyIGxpY2Vuc2UgYWdyZWVtZW50IHNob3VsZCBnbyBoZXJlLj5cXHBhciB9JywgdSdCdXR0b25zJywgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdCdXR0b25zJywgdSdSYWRpb0J1dHRvbkdyb3VwJywgMjAsIDE4NywgMzMwLCA0MCwgMywgdSdJQWdyZWUnLCBOb25lLCB1J0JhY2snLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdDaGFuZ2VMYWJlbCcsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMjUsIDIzLCAyODAsIDIwLCAxOTY2MTEsIE5vbmUsIHUnU2VsZWN0IHRoZSBvcGVyYXRpb24geW91IHdpc2ggdG8gcGVyZm9ybS4nLCBOb25lLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjQwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdTW9kaWZ5LCBSZXBhaXIgb3IgUmVtb3ZlIGluc3RhbGxhdGlvbicsIE5vbmUsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnTmV4dCcsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdOZXh0JywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9OZXh0XScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0NoYW5nZUxhYmVsJywgdSdUZXh0JywgMTA1LCA2NSwgMTAwLCAxMCwgMywgTm9uZSwgdSdbRGxnVGl0bGVGb250XSZNb2RpZnknLCB1J0NoYW5nZUJ1dHRvbicsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdDaGFuZ2VCdXR0b24nLCB1J1B1c2hCdXR0b24nLCA1MCwgNjUsIDM4LCAzOCwgNTc2NzE3MSwgTm9uZSwgdSdbQ3VzdG9tU2V0dXBJY29uXScsIHUnUmVwYWlyTGFiZWwnLCB1J01vZGlmeSBJbnN0YWxsYXRpb258JyksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlcGFpckxhYmVsJywgdSdUZXh0JywgMTA1LCAxMTQsIDEwMCwgMTAsIDMsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1SZSZwYWlyJywgdSdSZXBhaXJCdXR0b24nLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnQ2hhbmdlVGV4dCcsIHUnVGV4dCcsIDEwNSwgNzgsIDIzMCwgMjAsIDMsIE5vbmUsIHUnQWxsb3dzIHVzZXJzIHRvIGNoYW5nZSB0aGUgd2F5IGZlYXR1cmVzIGFyZSBpbnN0YWxsZWQuJywgTm9uZSwgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlbW92ZUJ1dHRvbicsIHUnUHVzaEJ1dHRvbicsIDUwLCAxNjMsIDM4LCAzOCwgNTc2NzE3MSwgTm9uZSwgdSdbUmVtb3ZlSWNvbl0nLCB1J0JhY2snLCB1J1JlbW92ZSBJbnN0YWxsYXRpb258JyksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlbW92ZUxhYmVsJywgdSdUZXh0JywgMTA1LCAxNjMsIDEwMCwgMTAsIDMsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF0mUmVtb3ZlJywgdSdSZW1vdmVCdXR0b24nLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnUmVtb3ZlVGV4dCcsIHUnVGV4dCcsIDEwNSwgMTc2LCAyMzAsIDIwLCAzLCBOb25lLCB1J1JlbW92ZXMgW1Byb2R1Y3ROYW1lXSBmcm9tIHlvdXIgY29tcHV0ZXIuJywgTm9uZSwgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlcGFpckJ1dHRvbicsIHUnUHVzaEJ1dHRvbicsIDUwLCAxMTQsIDM4LCAzOCwgNTc2NzE3MSwgTm9uZSwgdSdbUmVwYWlySWNvbl0nLCB1J1JlbW92ZUxhYmVsJywgdSdSZXBhaXIgSW5zdGFsbGF0aW9ufCcpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZXBhaXJUZXh0JywgdSdUZXh0JywgMTA1LCAxMjcsIDIzMCwgMzAsIDMsIE5vbmUsIHUnUmVwYWlycyBlcnJvcnMgaW4gdGhlIG1vc3QgcmVjZW50IGluc3RhbGxhdGlvbiBzdGF0ZSAtIGZpeGVzIG1pc3Npbmcgb3IgY29ycnVwdCBmaWxlcywgc2hvcnRjdXRzIGFuZCByZWdpc3RyeSBlbnRyaWVzLicsIE5vbmUsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VXZWxjb21lRGxnJywgdSdCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3MCwgMjM0LCAxLCBOb25lLCB1J1tEaWFsb2dCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdNYWludGVuYW5jZVdlbGNvbWVEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdNYWludGVuYW5jZVdlbGNvbWVEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQml0bWFwJywgTm9uZSksCi0odSdNYWludGVuYW5jZVdlbGNvbWVEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMTM1LCA3MCwgMjIwLCA2MCwgMTk2NjExLCBOb25lLCB1J1RoZSBbV2l6YXJkXSB3aWxsIGFsbG93IHlvdSB0byBjaGFuZ2UgdGhlIHdheSBbUHJvZHVjdE5hbWVdIGZlYXR1cmVzIGFyZSBpbnN0YWxsZWQgb24geW91ciBjb21wdXRlciBvciBldmVuIHRvIHJlbW92ZSBbUHJvZHVjdE5hbWVdIGZyb20geW91ciBjb21wdXRlci4gIENsaWNrIE5leHQgdG8gY29udGludWUgb3IgQ2FuY2VsIHRvIGV4aXQgdGhlIFtXaXphcmRdLicsIE5vbmUsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VXZWxjb21lRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDEzNSwgMjAsIDIyMCwgNjAsIDE5NjYxMSwgTm9uZSwgdSd7XFxWZXJkYW5hQm9sZDEzfVdlbGNvbWUgdG8gdGhlIFtQcm9kdWN0TmFtZV0gW1dpemFyZF0nLCBOb25lLCBOb25lKSwKLSh1J01haW50ZW5hbmNlV2VsY29tZURsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J05leHQnLCBOb25lKSwKLSh1J01haW50ZW5hbmNlV2VsY29tZURsZycsIHUnTmV4dCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfTmV4dF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnT3V0T2ZEaXNrRGxnJywgdSdUZXh0JywgdSdUZXh0JywgMjAsIDUzLCAzMzAsIDQwLCAzLCBOb25lLCB1J1RoZSBoaWdobGlnaHRlZCB2b2x1bWVzIGRvIG5vdCBoYXZlIGVub3VnaCBkaXNrIHNwYWNlIGF2YWlsYWJsZSBmb3IgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBmZWF0dXJlcy4gIFlvdSBjYW4gZWl0aGVyIHJlbW92ZSBzb21lIGZpbGVzIGZyb20gdGhlIGhpZ2hsaWdodGVkIHZvbHVtZXMsIG9yIGNob29zZSB0byBpbnN0YWxsIGxlc3MgZmVhdHVyZXMgb250byBsb2NhbCBkcml2ZShzKSwgb3Igc2VsZWN0IGRpZmZlcmVudCBkZXN0aW5hdGlvbiBkcml2ZShzKS4nLCBOb25lLCBOb25lKSwKLSh1J091dE9mRGlza0RsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdPSycsIE5vbmUpLAotKHUnT3V0T2ZEaXNrRGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdPdXRPZkRpc2tEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdPdXRPZkRpc2tEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMjAsIDIwLCAyODAsIDIwLCAxOTY2MTEsIE5vbmUsIHUnRGlzayBzcGFjZSByZXF1aXJlZCBmb3IgdGhlIGluc3RhbGxhdGlvbiBleGNlZWRzIGF2YWlsYWJsZSBkaXNrIHNwYWNlLicsIE5vbmUsIE5vbmUpLAotKHUnT3V0T2ZEaXNrRGxnJywgdSdPSycsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfT0tdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J091dE9mRGlza0RsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdT3V0IG9mIERpc2sgU3BhY2UnLCBOb25lLCBOb25lKSwKLSh1J091dE9mRGlza0RsZycsIHUnVm9sdW1lTGlzdCcsIHUnVm9sdW1lQ29zdExpc3QnLCAyMCwgMTAwLCAzMzAsIDEyMCwgMzkzMjIzLCBOb25lLCB1J3sxMjB9ezcwfXs3MH17NzB9ezcwfScsIE5vbmUsIE5vbmUpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J1RleHQnLCB1J1RleHQnLCAyMCwgNTMsIDMzMCwgNDAsIDMsIE5vbmUsIHUnVGhlIGhpZ2hsaWdodGVkIHZvbHVtZXMgZG8gbm90IGhhdmUgZW5vdWdoIGRpc2sgc3BhY2UgYXZhaWxhYmxlIGZvciB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGZlYXR1cmVzLiAgWW91IGNhbiBlaXRoZXIgcmVtb3ZlIHNvbWUgZmlsZXMgZnJvbSB0aGUgaGlnaGxpZ2h0ZWQgdm9sdW1lcywgb3IgY2hvb3NlIHRvIGluc3RhbGwgbGVzcyBmZWF0dXJlcyBvbnRvIGxvY2FsIGRyaXZlKHMpLCBvciBzZWxlY3QgZGlmZmVyZW50IGRlc3RpbmF0aW9uIGRyaXZlKHMpLicsIE5vbmUsIE5vbmUpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnTm8nLCBOb25lKSwKLSh1J091dE9mUmJEaXNrRGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdPdXRPZlJiRGlza0RsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J091dE9mUmJEaXNrRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDIwLCAyMCwgMjgwLCAyMCwgMTk2NjExLCBOb25lLCB1J0Rpc2sgc3BhY2UgcmVxdWlyZWQgZm9yIHRoZSBpbnN0YWxsYXRpb24gZXhjZWVkcyBhdmFpbGFibGUgZGlzayBzcGFjZS4nLCBOb25lLCBOb25lKSwKLSh1J091dE9mUmJEaXNrRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1PdXQgb2YgRGlzayBTcGFjZScsIE5vbmUsIE5vbmUpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J05vJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9Ob10nLCB1J1llcycsIE5vbmUpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J1llcycsIHUnUHVzaEJ1dHRvbicsIDI0MCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfWWVzXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdPdXRPZlJiRGlza0RsZycsIHUnVm9sdW1lTGlzdCcsIHUnVm9sdW1lQ29zdExpc3QnLCAyMCwgMTQwLCAzMzAsIDgwLCA0NTg3NTI3LCBOb25lLCB1J3sxMjB9ezcwfXs3MH17NzB9ezcwfScsIE5vbmUsIE5vbmUpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J1RleHQyJywgdSdUZXh0JywgMjAsIDk0LCAzMzAsIDQwLCAzLCBOb25lLCB1IkFsdGVybmF0aXZlbHksIHlvdSBtYXkgY2hvb3NlIHRvIGRpc2FibGUgdGhlIGluc3RhbGxlcidzIHJvbGxiYWNrIGZ1bmN0aW9uYWxpdHkuICBUaGlzIGFsbG93cyB0aGUgaW5zdGFsbGVyIHRvIHJlc3RvcmUgeW91ciBjb21wdXRlcidzIG9yaWdpbmFsIHN0YXRlIHNob3VsZCB0aGUgaW5zdGFsbGF0aW9uIGJlIGludGVycnVwdGVkIGluIGFueSB3YXkuICBDbGljayBZZXMgaWYgeW91IHdpc2ggdG8gdGFrZSB0aGUgcmlzayB0byBkaXNhYmxlIHJvbGxiYWNrLiIsIE5vbmUsIE5vbmUpLAotKHUnUmVzdW1lRGxnJywgdSdCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3MCwgMjM0LCAxLCBOb25lLCB1J1tEaWFsb2dCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdSZXN1bWVEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdSZXN1bWVEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQml0bWFwJywgTm9uZSksCi0odSdSZXN1bWVEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMTM1LCA3MCwgMjIwLCAzMCwgMTk2NjExLCBOb25lLCB1J1RoZSBbV2l6YXJkXSB3aWxsIGNvbXBsZXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgW1Byb2R1Y3ROYW1lXSBvbiB5b3VyIGNvbXB1dGVyLiAgQ2xpY2sgSW5zdGFsbCB0byBjb250aW51ZSBvciBDYW5jZWwgdG8gZXhpdCB0aGUgW1dpemFyZF0uJywgTm9uZSwgTm9uZSksCi0odSdSZXN1bWVEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTM1LCAyMCwgMjIwLCA2MCwgMTk2NjExLCBOb25lLCB1J3tcXFZlcmRhbmFCb2xkMTN9UmVzdW1pbmcgdGhlIFtQcm9kdWN0TmFtZV0gW1dpemFyZF0nLCBOb25lLCBOb25lKSwKLSh1J1Jlc3VtZURsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J0luc3RhbGwnLCBOb25lKSwKLSh1J1Jlc3VtZURsZycsIHUnSW5zdGFsbCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfSW5zdGFsbF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J1R5cGljYWxMYWJlbCcsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMjUsIDIzLCAyODAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnQ2hvb3NlIHRoZSBzZXR1cCB0eXBlIHRoYXQgYmVzdCBzdWl0cyB5b3VyIG5lZWRzJywgTm9uZSwgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XUNob29zZSBTZXR1cCBUeXBlJywgTm9uZSwgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdOZXh0JywgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J05leHQnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X05leHRdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J1NldHVwVHlwZURsZycsIHUnVHlwaWNhbExhYmVsJywgdSdUZXh0JywgMTA1LCA2NSwgMTAwLCAxMCwgMywgTm9uZSwgdSdbRGxnVGl0bGVGb250XSZUeXBpY2FsJywgdSdUeXBpY2FsQnV0dG9uJywgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0NvbXBsZXRlQnV0dG9uJywgdSdQdXNoQnV0dG9uJywgNTAsIDE3MSwgMzgsIDM4LCA1NzY3MTcxLCBOb25lLCB1J1tDb21wbGV0ZVNldHVwSWNvbl0nLCB1J0JhY2snLCB1J0NvbXBsZXRlIEluc3RhbGxhdGlvbnwnKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQ29tcGxldGVMYWJlbCcsIHUnVGV4dCcsIDEwNSwgMTcxLCAxMDAsIDEwLCAzLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdQyZvbXBsZXRlJywgdSdDb21wbGV0ZUJ1dHRvbicsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdDb21wbGV0ZVRleHQnLCB1J1RleHQnLCAxMDUsIDE4NCwgMjMwLCAyMCwgMywgTm9uZSwgdSdBbGwgcHJvZ3JhbSBmZWF0dXJlcyB3aWxsIGJlIGluc3RhbGxlZC4gIChSZXF1aXJlcyBtb3N0IGRpc2sgc3BhY2UpJywgTm9uZSwgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0N1c3RvbUJ1dHRvbicsIHUnUHVzaEJ1dHRvbicsIDUwLCAxMTgsIDM4LCAzOCwgNTc2NzE3MSwgTm9uZSwgdSdbQ3VzdG9tU2V0dXBJY29uXScsIHUnQ29tcGxldGVMYWJlbCcsIHUnQ3VzdG9tIEluc3RhbGxhdGlvbnwnKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQ3VzdG9tTGFiZWwnLCB1J1RleHQnLCAxMDUsIDExOCwgMTAwLCAxMCwgMywgTm9uZSwgdSdbRGxnVGl0bGVGb250XUMmdXN0b20nLCB1J0N1c3RvbUJ1dHRvbicsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdDdXN0b21UZXh0JywgdSdUZXh0JywgMTA1LCAxMzEsIDIzMCwgMzAsIDMsIE5vbmUsIHUnQWxsb3dzIHVzZXJzIHRvIGNob29zZSB3aGljaCBwcm9ncmFtIGZlYXR1cmVzIHdpbGwgYmUgaW5zdGFsbGVkIGFuZCB3aGVyZSB0aGV5IHdpbGwgYmUgaW5zdGFsbGVkLiBSZWNvbW1lbmRlZCBmb3IgYWR2YW5jZWQgdXNlcnMuJywgTm9uZSwgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J1R5cGljYWxCdXR0b24nLCB1J1B1c2hCdXR0b24nLCA1MCwgNjUsIDM4LCAzOCwgNTc2NzE3MSwgTm9uZSwgdSdbSW5zdGFsbGVySWNvbl0nLCB1J0N1c3RvbUxhYmVsJywgdSdUeXBpY2FsIEluc3RhbGxhdGlvbnwnKSwKLSh1J1NldHVwVHlwZURsZycsIHUnVHlwaWNhbFRleHQnLCB1J1RleHQnLCAxMDUsIDc4LCAyMzAsIDIwLCAzLCBOb25lLCB1J0luc3RhbGxzIHRoZSBtb3N0IGNvbW1vbiBwcm9ncmFtIGZlYXR1cmVzLiBSZWNvbW1lbmRlZCBmb3IgbW9zdCB1c2Vycy4nLCBOb25lLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnTmFtZUxhYmVsJywgTm9uZSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMjUsIDIzLCAyODAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnUGxlYXNlIGVudGVyIHlvdXIgY3VzdG9tZXIgaW5mb3JtYXRpb24nLCBOb25lLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XUN1c3RvbWVyIEluZm9ybWF0aW9uJywgTm9uZSwgTm9uZSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnTmV4dCcsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnTmV4dCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfTmV4dF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnT3JnYW5pemF0aW9uTGFiZWwnLCB1J1RleHQnLCA0NSwgMTEwLCAxMDAsIDE1LCAzLCBOb25lLCB1JyZPcmdhbml6YXRpb246JywgdSdPcmdhbml6YXRpb25FZGl0JywgTm9uZSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdDREtleUVkaXQnLCB1J01hc2tlZEVkaXQnLCA0NSwgMTU5LCAyNTAsIDE2LCAzLCB1J1BJREtFWScsIHUnW1BJRFRlbXBsYXRlXScsIHUnQmFjaycsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnQ0RLZXlMYWJlbCcsIHUnVGV4dCcsIDQ1LCAxNDcsIDUwLCAxMCwgMywgTm9uZSwgdSdDRCAmS2V5OicsIHUnQ0RLZXlFZGl0JywgTm9uZSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdPcmdhbml6YXRpb25FZGl0JywgdSdFZGl0JywgNDUsIDEyMiwgMjIwLCAxOCwgMywgdSdDT01QQU5ZTkFNRScsIHUnezgwfScsIHUnQ0RLZXlMYWJlbCcsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnTmFtZUxhYmVsJywgdSdUZXh0JywgNDUsIDczLCAxMDAsIDE1LCAzLCBOb25lLCB1JyZVc2VyIE5hbWU6JywgdSdOYW1lRWRpdCcsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnTmFtZUVkaXQnLCB1J0VkaXQnLCA0NSwgODUsIDIyMCwgMTgsIDMsIHUnVVNFUk5BTUUnLCB1J3s4MH0nLCB1J09yZ2FuaXphdGlvbkxhYmVsJywgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnVGV4dCcsIHUnVGV4dCcsIDI1LCA3MCwgMzIwLCAyMCwgMywgTm9uZSwgdSdDbGljayBJbnN0YWxsIHRvIGJlZ2luIHRoZSBpbnN0YWxsYXRpb24uICBJZiB5b3Ugd2FudCB0byByZXZpZXcgb3IgY2hhbmdlIGFueSBvZiB5b3VyIGluc3RhbGxhdGlvbiBzZXR0aW5ncywgY2xpY2sgQmFjay4gIENsaWNrIENhbmNlbCB0byBleGl0IHRoZSB3aXphcmQuJywgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDI1LCAyMywgMjgwLCAxNSwgMTk2NjExLCBOb25lLCB1J1RoZSBbV2l6YXJkXSBpcyByZWFkeSB0byBiZWdpbiB0aGUgW0luc3RhbGxNb2RlXSBpbnN0YWxsYXRpb24nLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1SZWFkeSB0byBJbnN0YWxsJywgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J0luc3RhbGwnLCBOb25lKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdJbnN0YWxsJywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9JbnN0YWxsXScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J1RleHQnLCB1J1RleHQnLCAyNSwgNzAsIDMyMCwgMzAsIDMsIE5vbmUsIHUnQ2xpY2sgUmVtb3ZlIHRvIHJlbW92ZSBbUHJvZHVjdE5hbWVdIGZyb20geW91ciBjb21wdXRlci4gIElmIHlvdSB3YW50IHRvIHJldmlldyBvciBjaGFuZ2UgYW55IG9mIHlvdXIgaW5zdGFsbGF0aW9uIHNldHRpbmdzLCBjbGljayBCYWNrLiAgQ2xpY2sgQ2FuY2VsIHRvIGV4aXQgdGhlIHdpemFyZC4nLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J0Jhbm5lckxpbmUnLCB1J0xpbmUnLCAwLCA0NCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyNSwgMjMsIDI4MCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdZb3UgaGF2ZSBjaG9zZW4gdG8gcmVtb3ZlIHRoZSBwcm9ncmFtIGZyb20geW91ciBjb21wdXRlci4nLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdUmVtb3ZlIFtQcm9kdWN0TmFtZV0nLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J1JlbW92ZScsIE5vbmUpLAotKHUnVmVyaWZ5UmVtb3ZlRGxnJywgdSdSZW1vdmUnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X1JlbW92ZV0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdUZXh0JywgdSdUZXh0JywgMjUsIDcwLCAzMjAsIDMwLCAzLCBOb25lLCB1J0NsaWNrIFJlcGFpciB0byByZXBhaXIgdGhlIGluc3RhbGxhdGlvbiBvZiBbUHJvZHVjdE5hbWVdLiAgSWYgeW91IHdhbnQgdG8gcmV2aWV3IG9yIGNoYW5nZSBhbnkgb2YgeW91ciBpbnN0YWxsYXRpb24gc2V0dGluZ3MsIGNsaWNrIEJhY2suICBDbGljayBDYW5jZWwgdG8gZXhpdCB0aGUgd2l6YXJkLicsIE5vbmUsIE5vbmUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J0JhY2snLCBOb25lKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDI1LCAyMywgMjgwLCAxNSwgMTk2NjExLCBOb25lLCB1J1RoZSBbV2l6YXJkXSBpcyByZWFkeSB0byBiZWdpbiB0aGUgcmVwYWlyIG9mIFtQcm9kdWN0TmFtZV0uJywgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XVJlcGFpciBbUHJvZHVjdE5hbWVdJywgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdSZXBhaXInLCBOb25lKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnUmVwYWlyJywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9SZXBhaXJdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J1dhaXRGb3JDb3N0aW5nRGxnJywgdSdUZXh0JywgdSdUZXh0JywgNDgsIDE1LCAxOTQsIDMwLCAzLCBOb25lLCB1J1BsZWFzZSB3YWl0IHdoaWxlIHRoZSBpbnN0YWxsZXIgZmluaXNoZXMgZGV0ZXJtaW5pbmcgeW91ciBkaXNrIHNwYWNlIHJlcXVpcmVtZW50cy4nLCBOb25lLCBOb25lKSwKLSh1J1dhaXRGb3JDb3N0aW5nRGxnJywgdSdJY29uJywgdSdJY29uJywgMTUsIDE1LCAyNCwgMjQsIDUyNDI4ODEsIE5vbmUsIHUnW0V4Y2xhbWF0aW9uSWNvbl0nLCBOb25lLCB1J0V4Y2xhbWF0aW9uIGljb258JyksCi0odSdXYWl0Rm9yQ29zdGluZ0RsZycsIHUnUmV0dXJuJywgdSdQdXNoQnV0dG9uJywgMTAyLCA1NywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X1JldHVybl0nLCBOb25lLCBOb25lKSwKLSh1J1dlbGNvbWVEbGcnLCB1J0JpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzcwLCAyMzQsIDEsIE5vbmUsIHUnW0RpYWxvZ0JpdG1hcF0nLCB1J0JhY2snLCBOb25lKSwKLSh1J1dlbGNvbWVEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdXZWxjb21lRGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0JpdG1hcCcsIE5vbmUpLAotKHUnV2VsY29tZURsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAxMzUsIDcwLCAyMjAsIDMwLCAxOTY2MTEsIE5vbmUsIHUnVGhlIFtXaXphcmRdIHdpbGwgaW5zdGFsbCBbUHJvZHVjdE5hbWVdIG9uIHlvdXIgY29tcHV0ZXIuICBDbGljayBOZXh0IHRvIGNvbnRpbnVlIG9yIENhbmNlbCB0byBleGl0IHRoZSBbV2l6YXJkXS4nLCBOb25lLCBOb25lKSwKLSh1J1dlbGNvbWVEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTM1LCAyMCwgMjIwLCA2MCwgMTk2NjExLCBOb25lLCB1J3tcXFZlcmRhbmFCb2xkMTN9V2VsY29tZSB0byB0aGUgW1Byb2R1Y3ROYW1lXSBbV2l6YXJkXScsIE5vbmUsIE5vbmUpLAotKHUnV2VsY29tZURsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J05leHQnLCBOb25lKSwKLSh1J1dlbGNvbWVEbGcnLCB1J05leHQnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X05leHRdJywgdSdDYW5jZWwnLCBOb25lKSwKLV0KLQotTGlzdEJveCA9IFsKLV0KLQotQWN0aW9uVGV4dCA9IFsKLSh1J0luc3RhbGxWYWxpZGF0ZScsIHUnVmFsaWRhdGluZyBpbnN0YWxsJywgTm9uZSksCi0odSdJbnN0YWxsRmlsZXMnLCB1J0NvcHlpbmcgbmV3IGZpbGVzJywgdSdGaWxlOiBbMV0sICBEaXJlY3Rvcnk6IFs5XSwgIFNpemU6IFs2XScpLAotKHUnSW5zdGFsbEFkbWluUGFja2FnZScsIHUnQ29weWluZyBuZXR3b3JrIGluc3RhbGwgZmlsZXMnLCB1J0ZpbGU6IFsxXSwgRGlyZWN0b3J5OiBbOV0sIFNpemU6IFs2XScpLAotKHUnRmlsZUNvc3QnLCB1J0NvbXB1dGluZyBzcGFjZSByZXF1aXJlbWVudHMnLCBOb25lKSwKLSh1J0Nvc3RJbml0aWFsaXplJywgdSdDb21wdXRpbmcgc3BhY2UgcmVxdWlyZW1lbnRzJywgTm9uZSksCi0odSdDb3N0RmluYWxpemUnLCB1J0NvbXB1dGluZyBzcGFjZSByZXF1aXJlbWVudHMnLCBOb25lKSwKLSh1J0NyZWF0ZVNob3J0Y3V0cycsIHUnQ3JlYXRpbmcgc2hvcnRjdXRzJywgdSdTaG9ydGN1dDogWzFdJyksCi0odSdQdWJsaXNoQ29tcG9uZW50cycsIHUnUHVibGlzaGluZyBRdWFsaWZpZWQgQ29tcG9uZW50cycsIHUnQ29tcG9uZW50IElEOiBbMV0sIFF1YWxpZmllcjogWzJdJyksCi0odSdQdWJsaXNoRmVhdHVyZXMnLCB1J1B1Ymxpc2hpbmcgUHJvZHVjdCBGZWF0dXJlcycsIHUnRmVhdHVyZTogWzFdJyksCi0odSdQdWJsaXNoUHJvZHVjdCcsIHUnUHVibGlzaGluZyBwcm9kdWN0IGluZm9ybWF0aW9uJywgTm9uZSksCi0odSdSZWdpc3RlckNsYXNzSW5mbycsIHUnUmVnaXN0ZXJpbmcgQ2xhc3Mgc2VydmVycycsIHUnQ2xhc3MgSWQ6IFsxXScpLAotKHUnUmVnaXN0ZXJFeHRlbnNpb25JbmZvJywgdSdSZWdpc3RlcmluZyBleHRlbnNpb24gc2VydmVycycsIHUnRXh0ZW5zaW9uOiBbMV0nKSwKLSh1J1JlZ2lzdGVyTUlNRUluZm8nLCB1J1JlZ2lzdGVyaW5nIE1JTUUgaW5mbycsIHUnTUlNRSBDb250ZW50IFR5cGU6IFsxXSwgRXh0ZW5zaW9uOiBbMl0nKSwKLSh1J1JlZ2lzdGVyUHJvZ0lkSW5mbycsIHUnUmVnaXN0ZXJpbmcgcHJvZ3JhbSBpZGVudGlmaWVycycsIHUnUHJvZ0lkOiBbMV0nKSwKLSh1J0FsbG9jYXRlUmVnaXN0cnlTcGFjZScsIHUnQWxsb2NhdGluZyByZWdpc3RyeSBzcGFjZScsIHUnRnJlZSBzcGFjZTogWzFdJyksCi0odSdBcHBTZWFyY2gnLCB1J1NlYXJjaGluZyBmb3IgaW5zdGFsbGVkIGFwcGxpY2F0aW9ucycsIHUnUHJvcGVydHk6IFsxXSwgU2lnbmF0dXJlOiBbMl0nKSwKLSh1J0JpbmRJbWFnZScsIHUnQmluZGluZyBleGVjdXRhYmxlcycsIHUnRmlsZTogWzFdJyksCi0odSdDQ1BTZWFyY2gnLCB1J1NlYXJjaGluZyBmb3IgcXVhbGlmeWluZyBwcm9kdWN0cycsIE5vbmUpLAotKHUnQ3JlYXRlRm9sZGVycycsIHUnQ3JlYXRpbmcgZm9sZGVycycsIHUnRm9sZGVyOiBbMV0nKSwKLSh1J0RlbGV0ZVNlcnZpY2VzJywgdSdEZWxldGluZyBzZXJ2aWNlcycsIHUnU2VydmljZTogWzFdJyksCi0odSdEdXBsaWNhdGVGaWxlcycsIHUnQ3JlYXRpbmcgZHVwbGljYXRlIGZpbGVzJywgdSdGaWxlOiBbMV0sICBEaXJlY3Rvcnk6IFs5XSwgIFNpemU6IFs2XScpLAotKHUnRmluZFJlbGF0ZWRQcm9kdWN0cycsIHUnU2VhcmNoaW5nIGZvciByZWxhdGVkIGFwcGxpY2F0aW9ucycsIHUnRm91bmQgYXBwbGljYXRpb246IFsxXScpLAotKHUnSW5zdGFsbE9EQkMnLCB1J0luc3RhbGxpbmcgT0RCQyBjb21wb25lbnRzJywgTm9uZSksCi0odSdJbnN0YWxsU2VydmljZXMnLCB1J0luc3RhbGxpbmcgbmV3IHNlcnZpY2VzJywgdSdTZXJ2aWNlOiBbMl0nKSwKLSh1J0xhdW5jaENvbmRpdGlvbnMnLCB1J0V2YWx1YXRpbmcgbGF1bmNoIGNvbmRpdGlvbnMnLCBOb25lKSwKLSh1J01pZ3JhdGVGZWF0dXJlU3RhdGVzJywgdSdNaWdyYXRpbmcgZmVhdHVyZSBzdGF0ZXMgZnJvbSByZWxhdGVkIGFwcGxpY2F0aW9ucycsIHUnQXBwbGljYXRpb246IFsxXScpLAotKHUnTW92ZUZpbGVzJywgdSdNb3ZpbmcgZmlsZXMnLCB1J0ZpbGU6IFsxXSwgIERpcmVjdG9yeTogWzldLCAgU2l6ZTogWzZdJyksCi0odSdQYXRjaEZpbGVzJywgdSdQYXRjaGluZyBmaWxlcycsIHUnRmlsZTogWzFdLCAgRGlyZWN0b3J5OiBbMl0sICBTaXplOiBbM10nKSwKLSh1J1Byb2Nlc3NDb21wb25lbnRzJywgdSdVcGRhdGluZyBjb21wb25lbnQgcmVnaXN0cmF0aW9uJywgTm9uZSksCi0odSdSZWdpc3RlckNvbVBsdXMnLCB1J1JlZ2lzdGVyaW5nIENPTSsgQXBwbGljYXRpb25zIGFuZCBDb21wb25lbnRzJywgdSdBcHBJZDogWzFde3ssIEFwcFR5cGU6IFsyXSwgVXNlcnM6IFszXSwgUlNOOiBbNF19fScpLAotKHUnUmVnaXN0ZXJGb250cycsIHUnUmVnaXN0ZXJpbmcgZm9udHMnLCB1J0ZvbnQ6IFsxXScpLAotKHUnUmVnaXN0ZXJQcm9kdWN0JywgdSdSZWdpc3RlcmluZyBwcm9kdWN0JywgdSdbMV0nKSwKLSh1J1JlZ2lzdGVyVHlwZUxpYnJhcmllcycsIHUnUmVnaXN0ZXJpbmcgdHlwZSBsaWJyYXJpZXMnLCB1J0xpYklEOiBbMV0nKSwKLSh1J1JlZ2lzdGVyVXNlcicsIHUnUmVnaXN0ZXJpbmcgdXNlcicsIHUnWzFdJyksCi0odSdSZW1vdmVEdXBsaWNhdGVGaWxlcycsIHUnUmVtb3ZpbmcgZHVwbGljYXRlZCBmaWxlcycsIHUnRmlsZTogWzFdLCBEaXJlY3Rvcnk6IFs5XScpLAotKHUnUmVtb3ZlRW52aXJvbm1lbnRTdHJpbmdzJywgdSdVcGRhdGluZyBlbnZpcm9ubWVudCBzdHJpbmdzJywgdSdOYW1lOiBbMV0sIFZhbHVlOiBbMl0sIEFjdGlvbiBbM10nKSwKLSh1J1JlbW92ZUV4aXN0aW5nUHJvZHVjdHMnLCB1J1JlbW92aW5nIGFwcGxpY2F0aW9ucycsIHUnQXBwbGljYXRpb246IFsxXSwgQ29tbWFuZCBsaW5lOiBbMl0nKSwKLSh1J1JlbW92ZUZpbGVzJywgdSdSZW1vdmluZyBmaWxlcycsIHUnRmlsZTogWzFdLCBEaXJlY3Rvcnk6IFs5XScpLAotKHUnUmVtb3ZlRm9sZGVycycsIHUnUmVtb3ZpbmcgZm9sZGVycycsIHUnRm9sZGVyOiBbMV0nKSwKLSh1J1JlbW92ZUluaVZhbHVlcycsIHUnUmVtb3ZpbmcgSU5JIGZpbGVzIGVudHJpZXMnLCB1J0ZpbGU6IFsxXSwgIFNlY3Rpb246IFsyXSwgIEtleTogWzNdLCBWYWx1ZTogWzRdJyksCi0odSdSZW1vdmVPREJDJywgdSdSZW1vdmluZyBPREJDIGNvbXBvbmVudHMnLCBOb25lKSwKLSh1J1JlbW92ZVJlZ2lzdHJ5VmFsdWVzJywgdSdSZW1vdmluZyBzeXN0ZW0gcmVnaXN0cnkgdmFsdWVzJywgdSdLZXk6IFsxXSwgTmFtZTogWzJdJyksCi0odSdSZW1vdmVTaG9ydGN1dHMnLCB1J1JlbW92aW5nIHNob3J0Y3V0cycsIHUnU2hvcnRjdXQ6IFsxXScpLAotKHUnUk1DQ1BTZWFyY2gnLCB1J1NlYXJjaGluZyBmb3IgcXVhbGlmeWluZyBwcm9kdWN0cycsIE5vbmUpLAotKHUnU2VsZlJlZ01vZHVsZXMnLCB1J1JlZ2lzdGVyaW5nIG1vZHVsZXMnLCB1J0ZpbGU6IFsxXSwgRm9sZGVyOiBbMl0nKSwKLSh1J1NlbGZVbnJlZ01vZHVsZXMnLCB1J1VucmVnaXN0ZXJpbmcgbW9kdWxlcycsIHUnRmlsZTogWzFdLCBGb2xkZXI6IFsyXScpLAotKHUnU2V0T0RCQ0ZvbGRlcnMnLCB1J0luaXRpYWxpemluZyBPREJDIGRpcmVjdG9yaWVzJywgTm9uZSksCi0odSdTdGFydFNlcnZpY2VzJywgdSdTdGFydGluZyBzZXJ2aWNlcycsIHUnU2VydmljZTogWzFdJyksCi0odSdTdG9wU2VydmljZXMnLCB1J1N0b3BwaW5nIHNlcnZpY2VzJywgdSdTZXJ2aWNlOiBbMV0nKSwKLSh1J1VucHVibGlzaENvbXBvbmVudHMnLCB1J1VucHVibGlzaGluZyBRdWFsaWZpZWQgQ29tcG9uZW50cycsIHUnQ29tcG9uZW50IElEOiBbMV0sIFF1YWxpZmllcjogWzJdJyksCi0odSdVbnB1Ymxpc2hGZWF0dXJlcycsIHUnVW5wdWJsaXNoaW5nIFByb2R1Y3QgRmVhdHVyZXMnLCB1J0ZlYXR1cmU6IFsxXScpLAotKHUnVW5yZWdpc3RlckNsYXNzSW5mbycsIHUnVW5yZWdpc3RlciBDbGFzcyBzZXJ2ZXJzJywgdSdDbGFzcyBJZDogWzFdJyksCi0odSdVbnJlZ2lzdGVyQ29tUGx1cycsIHUnVW5yZWdpc3RlcmluZyBDT00rIEFwcGxpY2F0aW9ucyBhbmQgQ29tcG9uZW50cycsIHUnQXBwSWQ6IFsxXXt7LCBBcHBUeXBlOiBbMl19fScpLAotKHUnVW5yZWdpc3RlckV4dGVuc2lvbkluZm8nLCB1J1VucmVnaXN0ZXJpbmcgZXh0ZW5zaW9uIHNlcnZlcnMnLCB1J0V4dGVuc2lvbjogWzFdJyksCi0odSdVbnJlZ2lzdGVyRm9udHMnLCB1J1VucmVnaXN0ZXJpbmcgZm9udHMnLCB1J0ZvbnQ6IFsxXScpLAotKHUnVW5yZWdpc3Rlck1JTUVJbmZvJywgdSdVbnJlZ2lzdGVyaW5nIE1JTUUgaW5mbycsIHUnTUlNRSBDb250ZW50IFR5cGU6IFsxXSwgRXh0ZW5zaW9uOiBbMl0nKSwKLSh1J1VucmVnaXN0ZXJQcm9nSWRJbmZvJywgdSdVbnJlZ2lzdGVyaW5nIHByb2dyYW0gaWRlbnRpZmllcnMnLCB1J1Byb2dJZDogWzFdJyksCi0odSdVbnJlZ2lzdGVyVHlwZUxpYnJhcmllcycsIHUnVW5yZWdpc3RlcmluZyB0eXBlIGxpYnJhcmllcycsIHUnTGliSUQ6IFsxXScpLAotKHUnV3JpdGVFbnZpcm9ubWVudFN0cmluZ3MnLCB1J1VwZGF0aW5nIGVudmlyb25tZW50IHN0cmluZ3MnLCB1J05hbWU6IFsxXSwgVmFsdWU6IFsyXSwgQWN0aW9uIFszXScpLAotKHUnV3JpdGVJbmlWYWx1ZXMnLCB1J1dyaXRpbmcgSU5JIGZpbGVzIHZhbHVlcycsIHUnRmlsZTogWzFdLCAgU2VjdGlvbjogWzJdLCAgS2V5OiBbM10sIFZhbHVlOiBbNF0nKSwKLSh1J1dyaXRlUmVnaXN0cnlWYWx1ZXMnLCB1J1dyaXRpbmcgc3lzdGVtIHJlZ2lzdHJ5IHZhbHVlcycsIHUnS2V5OiBbMV0sIE5hbWU6IFsyXSwgVmFsdWU6IFszXScpLAotKHUnQWR2ZXJ0aXNlJywgdSdBZHZlcnRpc2luZyBhcHBsaWNhdGlvbicsIE5vbmUpLAotKHUnR2VuZXJhdGVTY3JpcHQnLCB1J0dlbmVyYXRpbmcgc2NyaXB0IG9wZXJhdGlvbnMgZm9yIGFjdGlvbjonLCB1J1sxXScpLAotKHUnSW5zdGFsbFNGUENhdGFsb2dGaWxlJywgdSdJbnN0YWxsaW5nIHN5c3RlbSBjYXRhbG9nJywgdSdGaWxlOiBbMV0sICBEZXBlbmRlbmNpZXM6IFsyXScpLAotKHUnTXNpUHVibGlzaEFzc2VtYmxpZXMnLCB1J1B1Ymxpc2hpbmcgYXNzZW1ibHkgaW5mb3JtYXRpb24nLCB1J0FwcGxpY2F0aW9uIENvbnRleHQ6WzFdLCBBc3NlbWJseSBOYW1lOlsyXScpLAotKHUnTXNpVW5wdWJsaXNoQXNzZW1ibGllcycsIHUnVW5wdWJsaXNoaW5nIGFzc2VtYmx5IGluZm9ybWF0aW9uJywgdSdBcHBsaWNhdGlvbiBDb250ZXh0OlsxXSwgQXNzZW1ibHkgTmFtZTpbMl0nKSwKLSh1J1JvbGxiYWNrJywgdSdSb2xsaW5nIGJhY2sgYWN0aW9uOicsIHUnWzFdJyksCi0odSdSb2xsYmFja0NsZWFudXAnLCB1J1JlbW92aW5nIGJhY2t1cCBmaWxlcycsIHUnRmlsZTogWzFdJyksCi0odSdVbm1vdmVGaWxlcycsIHUnUmVtb3ZpbmcgbW92ZWQgZmlsZXMnLCB1J0ZpbGU6IFsxXSwgRGlyZWN0b3J5OiBbOV0nKSwKLSh1J1VucHVibGlzaFByb2R1Y3QnLCB1J1VucHVibGlzaGluZyBwcm9kdWN0IGluZm9ybWF0aW9uJywgTm9uZSksCi1dCi0KLUNvbnRyb2xDb25kaXRpb24gPSBbCi0odSdDdXN0b21pemVEbGcnLCB1J0Jyb3dzZScsIHUnSGlkZScsIHUnSW5zdGFsbGVkJyksCi0odSdDdXN0b21pemVEbGcnLCB1J0xvY2F0aW9uJywgdSdIaWRlJywgdSdJbnN0YWxsZWQnKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnTG9jYXRpb25MYWJlbCcsIHUnSGlkZScsIHUnSW5zdGFsbGVkJyksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdOZXh0JywgdSdEaXNhYmxlJywgdSdJQWdyZWUgPD4gIlllcyInKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J05leHQnLCB1J0VuYWJsZScsIHUnSUFncmVlID0gIlllcyInKSwKLV0KLQotQ29udHJvbEV2ZW50ID0gWwotKHUnQWRtaW5XZWxjb21lRGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J0FkbWluV2VsY29tZURsZycsIHUnTmV4dCcsIHUnTmV3RGlhbG9nJywgdSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnMScsIDIpLAotKHUnQWRtaW5XZWxjb21lRGxnJywgdSdOZXh0JywgdSdbSW5zdGFsbE1vZGVdJywgdSdTZXJ2ZXIgSW1hZ2UnLCB1JzEnLCAxKSwKLSh1J0V4aXREaWFsb2cnLCB1J0ZpbmlzaCcsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1JzEnLCBOb25lKSwKLSh1J0ZhdGFsRXJyb3InLCB1J0ZpbmlzaCcsIHUnRW5kRGlhbG9nJywgdSdFeGl0JywgdScxJywgTm9uZSksCi0odSdQcmVwYXJlRGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J1Byb2dyZXNzRGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J1VzZXJFeGl0JywgdSdGaW5pc2gnLCB1J0VuZERpYWxvZycsIHUnRXhpdCcsIHUnMScsIE5vbmUpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J1VwJywgdSdEaXJlY3RvcnlMaXN0VXAnLCB1JzAnLCB1JzEnLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdDYW5jZWwnLCB1J1Jlc2V0JywgdScwJywgdScxJywgMSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnQ2FuY2VsJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnMScsIDIpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J05ld0ZvbGRlcicsIHUnRGlyZWN0b3J5TGlzdE5ldycsIHUnMCcsIHUnMScsIE5vbmUpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J09LJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnMScsIDIpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J09LJywgdSdTZXRUYXJnZXRQYXRoJywgdSdUQVJHRVRESVInLCB1JzEnLCAxKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdScxJywgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnTmV4dCcsIHUnU2V0VGFyZ2V0UGF0aCcsIHUnVEFSR0VURElSJywgdScxJywgMSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnTmV4dCcsIHUnTmV3RGlhbG9nJywgdSdWZXJpZnlSZWFkeURsZycsIHUnMScsIDIpLAotKHUnQWRtaW5JbnN0YWxsUG9pbnREbGcnLCB1J0Jyb3dzZScsIHUnU3Bhd25EaWFsb2cnLCB1J0FkbWluQnJvd3NlRGxnJywgdScxJywgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdBZG1pbldlbGNvbWVEbGcnLCB1JzEnLCBOb25lKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdOZXh0JywgdSdOZXdEaWFsb2cnLCB1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdQcm9kdWN0SUQnLCAyKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdOZXh0JywgdSdWYWxpZGF0ZVByb2R1Y3RJRCcsIHUnMCcsIHUnMCcsIDEpLAotKHUnQnJvd3NlRGxnJywgdSdVcCcsIHUnRGlyZWN0b3J5TGlzdFVwJywgdScwJywgdScxJywgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J0NhbmNlbCcsIHUnUmVzZXQnLCB1JzAnLCB1JzEnLCAxKSwKLSh1J0Jyb3dzZURsZycsIHUnQ2FuY2VsJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnMScsIDIpLAotKHUnQnJvd3NlRGxnJywgdSdOZXdGb2xkZXInLCB1J0RpcmVjdG9yeUxpc3ROZXcnLCB1JzAnLCB1JzEnLCBOb25lKSwKLSh1J0Jyb3dzZURsZycsIHUnT0snLCB1J0VuZERpYWxvZycsIHUnUmV0dXJuJywgdScxJywgMiksCi0odSdCcm93c2VEbGcnLCB1J09LJywgdSdTZXRUYXJnZXRQYXRoJywgdSdbX0Jyb3dzZVByb3BlcnR5XScsIHUnMScsIDEpLAotKHUnQ2FuY2VsRGxnJywgdSdObycsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1JzEnLCBOb25lKSwKLSh1J0NhbmNlbERsZycsIHUnWWVzJywgdSdFbmREaWFsb2cnLCB1J0V4aXQnLCB1JzEnLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0JhY2snLCB1J05ld0RpYWxvZycsIHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdJbnN0YWxsTW9kZSA9ICJDaGFuZ2UiJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0JhY2snLCB1J05ld0RpYWxvZycsIHUnU2V0dXBUeXBlRGxnJywgdSdJbnN0YWxsTW9kZSA9ICJDdXN0b20iJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J05leHQnLCB1J05ld0RpYWxvZycsIHUnVmVyaWZ5UmVhZHlEbGcnLCB1JzEnLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnQnJvd3NlJywgdSdTZWxlY3Rpb25Ccm93c2UnLCB1J0Jyb3dzZURsZycsIHUnMScsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdSZXNldCcsIHUnUmVzZXQnLCB1JzAnLCB1JzEnLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnRGlza0Nvc3QnLCB1J1NwYXduRGlhbG9nJywgdSdEaXNrQ29zdERsZycsIHUnMScsIDIpLAotKHUnRGlza0Nvc3REbGcnLCB1J09LJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnMScsIE5vbmUpLAotKHUnRXJyb3JEbGcnLCB1J1knLCB1J0VuZERpYWxvZycsIHUnRXJyb3JZZXMnLCB1JzEnLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdBJywgdSdFbmREaWFsb2cnLCB1J0Vycm9yQWJvcnQnLCB1JzEnLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdDJywgdSdFbmREaWFsb2cnLCB1J0Vycm9yQ2FuY2VsJywgdScxJywgTm9uZSksCi0odSdFcnJvckRsZycsIHUnSScsIHUnRW5kRGlhbG9nJywgdSdFcnJvcklnbm9yZScsIHUnMScsIE5vbmUpLAotKHUnRXJyb3JEbGcnLCB1J04nLCB1J0VuZERpYWxvZycsIHUnRXJyb3JObycsIHUnMScsIE5vbmUpLAotKHUnRXJyb3JEbGcnLCB1J08nLCB1J0VuZERpYWxvZycsIHUnRXJyb3JPaycsIHUnMScsIE5vbmUpLAotKHUnRXJyb3JEbGcnLCB1J1InLCB1J0VuZERpYWxvZycsIHUnRXJyb3JSZXRyeScsIHUnMScsIE5vbmUpLAotKHUnRmlsZXNJblVzZScsIHUnUmV0cnknLCB1J0VuZERpYWxvZycsIHUnUmV0cnknLCB1JzEnLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCB1J0V4aXQnLCB1J0VuZERpYWxvZycsIHUnRXhpdCcsIHUnMScsIE5vbmUpLAotKHUnRmlsZXNJblVzZScsIHUnSWdub3JlJywgdSdFbmREaWFsb2cnLCB1J0lnbm9yZScsIHUnMScsIE5vbmUpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J1dlbGNvbWVEbGcnLCB1JzEnLCBOb25lKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J05leHQnLCB1J05ld0RpYWxvZycsIHUnU2V0dXBUeXBlRGxnJywgdSdJQWdyZWUgPSAiWWVzIiBBTkQgU2hvd1VzZXJSZWdpc3RyYXRpb25EbGcgPD4gMScsIDMpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnTmV4dCcsIHUnTmV3RGlhbG9nJywgdSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdJQWdyZWUgPSAiWWVzIiBBTkQgU2hvd1VzZXJSZWdpc3RyYXRpb25EbGcgPSAxJywgMSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdOZXh0JywgdSdTcGF3bldhaXREaWFsb2cnLCB1J1dhaXRGb3JDb3N0aW5nRGxnJywgdSdDb3N0aW5nQ29tcGxldGUgPSAxJywgMiksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J01haW50ZW5hbmNlV2VsY29tZURsZycsIHUnMScsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdDaGFuZ2VCdXR0b24nLCB1J05ld0RpYWxvZycsIHUnQ3VzdG9taXplRGxnJywgdScxJywgNCksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0NoYW5nZUJ1dHRvbicsIHUnW0luc3RhbGxNb2RlXScsIHUnQ2hhbmdlJywgdScxJywgMSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0NoYW5nZUJ1dHRvbicsIHUnW1Byb2dyZXNzMV0nLCB1J0NoYW5naW5nJywgdScxJywgMiksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0NoYW5nZUJ1dHRvbicsIHUnW1Byb2dyZXNzMl0nLCB1J2NoYW5nZXMnLCB1JzEnLCAzKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnUmVtb3ZlQnV0dG9uJywgdSdOZXdEaWFsb2cnLCB1J1ZlcmlmeVJlbW92ZURsZycsIHUnMScsIDQpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZW1vdmVCdXR0b24nLCB1J1tJbnN0YWxsTW9kZV0nLCB1J1JlbW92ZScsIHUnMScsIDEpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZW1vdmVCdXR0b24nLCB1J1tQcm9ncmVzczFdJywgdSdSZW1vdmluZycsIHUnMScsIDIpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZW1vdmVCdXR0b24nLCB1J1tQcm9ncmVzczJdJywgdSdyZW1vdmVzJywgdScxJywgMyksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlcGFpckJ1dHRvbicsIHUnTmV3RGlhbG9nJywgdSdWZXJpZnlSZXBhaXJEbGcnLCB1JzEnLCA0KSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnUmVwYWlyQnV0dG9uJywgdSdbSW5zdGFsbE1vZGVdJywgdSdSZXBhaXInLCB1JzEnLCAxKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnUmVwYWlyQnV0dG9uJywgdSdbUHJvZ3Jlc3MxXScsIHUnUmVwYWlyaW5nJywgdScxJywgMiksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlcGFpckJ1dHRvbicsIHUnW1Byb2dyZXNzMl0nLCB1J3JlcGFpcnMnLCB1JzEnLCAzKSwKLSh1J01haW50ZW5hbmNlV2VsY29tZURsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdNYWludGVuYW5jZVdlbGNvbWVEbGcnLCB1J05leHQnLCB1J05ld0RpYWxvZycsIHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdScxJywgMiksCi0odSdNYWludGVuYW5jZVdlbGNvbWVEbGcnLCB1J05leHQnLCB1J1NwYXduV2FpdERpYWxvZycsIHUnV2FpdEZvckNvc3RpbmdEbGcnLCB1J0Nvc3RpbmdDb21wbGV0ZSA9IDEnLCAxKSwKLSh1J091dE9mRGlza0RsZycsIHUnT0snLCB1J0VuZERpYWxvZycsIHUnUmV0dXJuJywgdScxJywgTm9uZSksCi0odSdPdXRPZlJiRGlza0RsZycsIHUnTm8nLCB1J0VuZERpYWxvZycsIHUnUmV0dXJuJywgdScxJywgTm9uZSksCi0odSdPdXRPZlJiRGlza0RsZycsIHUnWWVzJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnMScsIDIpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J1llcycsIHUnRW5hYmxlUm9sbGJhY2snLCB1J0ZhbHNlJywgdScxJywgMSksCi0odSdSZXN1bWVEbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnUmVzdW1lRGxnJywgdSdJbnN0YWxsJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkQiJywgNCksCi0odSdSZXN1bWVEbGcnLCB1J0luc3RhbGwnLCB1J0VuZERpYWxvZycsIHUnUmV0dXJuJywgdSdPdXRPZkRpc2tTcGFjZSA8PiAxJywgMiksCi0odSdSZXN1bWVEbGcnLCB1J0luc3RhbGwnLCB1J1NwYXduRGlhbG9nJywgdSdPdXRPZkRpc2tEbGcnLCB1JyhPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIE91dE9mTm9SYkRpc2tTcGFjZSA9IDEpIE9SIChPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIFBST01QVFJPTExCQUNLQ09TVD0iRiIpJywgNiksCi0odSdSZXN1bWVEbGcnLCB1J0luc3RhbGwnLCB1J1NwYXduRGlhbG9nJywgdSdPdXRPZlJiRGlza0RsZycsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCAoUFJPTVBUUk9MTEJBQ0tDT1NUPSJQIiBPUiBOT1QgUFJPTVBUUk9MTEJBQ0tDT1NUKScsIDMpLAotKHUnUmVzdW1lRGxnJywgdSdJbnN0YWxsJywgdSdTcGF3bldhaXREaWFsb2cnLCB1J1dhaXRGb3JDb3N0aW5nRGxnJywgdSdDb3N0aW5nQ29tcGxldGUgPSAxJywgMSksCi0odSdSZXN1bWVEbGcnLCB1J0luc3RhbGwnLCB1J0VuYWJsZVJvbGxiYWNrJywgdSdGYWxzZScsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkQiJywgNSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J1Nob3dVc2VyUmVnaXN0cmF0aW9uRGxnIDw+IDEnLCBOb25lKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdTaG93VXNlclJlZ2lzdHJhdGlvbkRsZyA9IDEnLCBOb25lKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQ29tcGxldGVCdXR0b24nLCB1J05ld0RpYWxvZycsIHUnVmVyaWZ5UmVhZHlEbGcnLCB1JzEnLCAzKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQ29tcGxldGVCdXR0b24nLCB1J1tJbnN0YWxsTW9kZV0nLCB1J0NvbXBsZXRlJywgdScxJywgMSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0NvbXBsZXRlQnV0dG9uJywgdSdTZXRJbnN0YWxsTGV2ZWwnLCB1JzEwMDAnLCB1JzEnLCAyKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQ3VzdG9tQnV0dG9uJywgdSdOZXdEaWFsb2cnLCB1J0N1c3RvbWl6ZURsZycsIHUnMScsIDIpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdDdXN0b21CdXR0b24nLCB1J1tJbnN0YWxsTW9kZV0nLCB1J0N1c3RvbScsIHUnMScsIDEpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdUeXBpY2FsQnV0dG9uJywgdSdOZXdEaWFsb2cnLCB1J1ZlcmlmeVJlYWR5RGxnJywgdScxJywgMyksCi0odSdTZXR1cFR5cGVEbGcnLCB1J1R5cGljYWxCdXR0b24nLCB1J1tJbnN0YWxsTW9kZV0nLCB1J1R5cGljYWwnLCB1JzEnLCAxKSwKLSh1J1NldHVwVHlwZURsZycsIHUnVHlwaWNhbEJ1dHRvbicsIHUnU2V0SW5zdGFsbExldmVsJywgdSczJywgdScxJywgMiksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J0JhY2snLCB1J05ld0RpYWxvZycsIHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnMScsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnTmV4dCcsIHUnTmV3RGlhbG9nJywgdSdTZXR1cFR5cGVEbGcnLCB1J1Byb2R1Y3RJRCcsIDMpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnTmV4dCcsIHUnVmFsaWRhdGVQcm9kdWN0SUQnLCB1JzAnLCB1JzAnLCAxKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J05leHQnLCB1J1NwYXduV2FpdERpYWxvZycsIHUnV2FpdEZvckNvc3RpbmdEbGcnLCB1J0Nvc3RpbmdDb21wbGV0ZSA9IDEnLCAyKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdJbnN0YWxsTW9kZSA9ICJTZXJ2ZXIgSW1hZ2UiJywgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdDdXN0b21pemVEbGcnLCB1J0luc3RhbGxNb2RlID0gIkN1c3RvbSIgT1IgSW5zdGFsbE1vZGUgPSAiQ2hhbmdlIicsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0JhY2snLCB1J05ld0RpYWxvZycsIHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdJbnN0YWxsTW9kZSA9ICJSZXBhaXIiJywgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdTZXR1cFR5cGVEbGcnLCB1J0luc3RhbGxNb2RlID0gIlR5cGljYWwiIE9SIEluc3RhbGxNb2RlID0gIkNvbXBsZXRlIicsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0luc3RhbGwnLCB1J0VuZERpYWxvZycsIHUnUmV0dXJuJywgdSdPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIE91dE9mTm9SYkRpc2tTcGFjZSA9IDAgQU5EIFBST01QVFJPTExCQUNLQ09TVD0iRCInLCAzKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdJbnN0YWxsJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnT3V0T2ZEaXNrU3BhY2UgPD4gMScsIDEpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0luc3RhbGwnLCB1J1NwYXduRGlhbG9nJywgdSdPdXRPZkRpc2tEbGcnLCB1JyhPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIE91dE9mTm9SYkRpc2tTcGFjZSA9IDEpIE9SIChPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIFBST01QVFJPTExCQUNLQ09TVD0iRiIpJywgNSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnSW5zdGFsbCcsIHUnU3Bhd25EaWFsb2cnLCB1J091dE9mUmJEaXNrRGxnJywgdSdPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIE91dE9mTm9SYkRpc2tTcGFjZSA9IDAgQU5EIChQUk9NUFRST0xMQkFDS0NPU1Q9IlAiIE9SIE5PVCBQUk9NUFRST0xMQkFDS0NPU1QpJywgMiksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnSW5zdGFsbCcsIHUnRW5hYmxlUm9sbGJhY2snLCB1J0ZhbHNlJywgdSdPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIE91dE9mTm9SYkRpc2tTcGFjZSA9IDAgQU5EIFBST01QVFJPTExCQUNLQ09TVD0iRCInLCA0KSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J0JhY2snLCB1J05ld0RpYWxvZycsIHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdScxJywgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J1JlbW92ZScsIHUnUmVtb3ZlJywgdSdBbGwnLCB1J091dE9mRGlza1NwYWNlIDw+IDEnLCAxKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnUmVtb3ZlJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkQiJywgNCksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J1JlbW92ZScsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1J091dE9mRGlza1NwYWNlIDw+IDEnLCAyKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnUmVtb3ZlJywgdSdTcGF3bkRpYWxvZycsIHUnT3V0T2ZEaXNrRGxnJywgdScoT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAxKSBPUiAoT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkYiKScsIDYpLAotKHUnVmVyaWZ5UmVtb3ZlRGxnJywgdSdSZW1vdmUnLCB1J1NwYXduRGlhbG9nJywgdSdPdXRPZlJiRGlza0RsZycsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCAoUFJPTVBUUk9MTEJBQ0tDT1NUPSJQIiBPUiBOT1QgUFJPTVBUUk9MTEJBQ0tDT1NUKScsIDMpLAotKHUnVmVyaWZ5UmVtb3ZlRGxnJywgdSdSZW1vdmUnLCB1J0VuYWJsZVJvbGxiYWNrJywgdSdGYWxzZScsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkQiJywgNSksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J01haW50ZW5hbmNlVHlwZURsZycsIHUnMScsIE5vbmUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdSZXBhaXInLCB1J0VuZERpYWxvZycsIHUnUmV0dXJuJywgdSdPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIE91dE9mTm9SYkRpc2tTcGFjZSA9IDAgQU5EIFBST01QVFJPTExCQUNLQ09TVD0iRCInLCA1KSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnUmVwYWlyJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnT3V0T2ZEaXNrU3BhY2UgPD4gMScsIDMpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdSZXBhaXInLCB1J1NwYXduRGlhbG9nJywgdSdPdXRPZkRpc2tEbGcnLCB1JyhPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIE91dE9mTm9SYkRpc2tTcGFjZSA9IDEpIE9SIChPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIFBST01QVFJPTExCQUNLQ09TVD0iRiIpJywgNyksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCB1J1JlcGFpcicsIHUnU3Bhd25EaWFsb2cnLCB1J091dE9mUmJEaXNrRGxnJywgdSdPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIE91dE9mTm9SYkRpc2tTcGFjZSA9IDAgQU5EIChQUk9NUFRST0xMQkFDS0NPU1Q9IlAiIE9SIE5PVCBQUk9NUFRST0xMQkFDS0NPU1QpJywgNCksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCB1J1JlcGFpcicsIHUnRW5hYmxlUm9sbGJhY2snLCB1J0ZhbHNlJywgdSdPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIE91dE9mTm9SYkRpc2tTcGFjZSA9IDAgQU5EIFBST01QVFJPTExCQUNLQ09TVD0iRCInLCA2KSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnUmVwYWlyJywgdSdSZWluc3RhbGwnLCB1J0FsbCcsIHUnT3V0T2ZEaXNrU3BhY2UgPD4gMScsIDIpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdSZXBhaXInLCB1J1JlaW5zdGFsbE1vZGUnLCB1J2VjbXVzJywgdSdPdXRPZkRpc2tTcGFjZSA8PiAxJywgMSksCi0odSdXYWl0Rm9yQ29zdGluZ0RsZycsIHUnUmV0dXJuJywgdSdFbmREaWFsb2cnLCB1J0V4aXQnLCB1JzEnLCBOb25lKSwKLSh1J1dlbGNvbWVEbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnV2VsY29tZURsZycsIHUnTmV4dCcsIHUnTmV3RGlhbG9nJywgdSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdScxJywgTm9uZSksCi1dCi0KLURpYWxvZyA9IFsKLSh1J0FkbWluV2VsY29tZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdOZXh0JywgdSdOZXh0JywgdSdDYW5jZWwnKSwKLSh1J0V4aXREaWFsb2cnLCA1MCwgNTAsIDM3MCwgMjcwLCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnRmluaXNoJywgdSdGaW5pc2gnLCB1J0ZpbmlzaCcpLAotKHUnRmF0YWxFcnJvcicsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdGaW5pc2gnLCB1J0ZpbmlzaCcsIHUnRmluaXNoJyksCi0odSdQcmVwYXJlRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMSwgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J0NhbmNlbCcsIHUnQ2FuY2VsJywgdSdDYW5jZWwnKSwKLSh1J1Byb2dyZXNzRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMSwgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J0NhbmNlbCcsIHUnQ2FuY2VsJywgdSdDYW5jZWwnKSwKLSh1J1VzZXJFeGl0JywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J0ZpbmlzaCcsIHUnRmluaXNoJywgdSdGaW5pc2gnKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J1BhdGhFZGl0JywgdSdPSycsIHUnQ2FuY2VsJyksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdUZXh0JywgdSdOZXh0JywgdSdDYW5jZWwnKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J09yZ2FuaXphdGlvbkxhYmVsJywgdSdOZXh0JywgdSdDYW5jZWwnKSwKLSh1J0Jyb3dzZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdQYXRoRWRpdCcsIHUnT0snLCB1J0NhbmNlbCcpLAotKHUnQ2FuY2VsRGxnJywgNTAsIDEwLCAyNjAsIDg1LCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnTm8nLCB1J05vJywgdSdObycpLAotKHUnQ3VzdG9taXplRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMzUsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdUcmVlJywgdSdOZXh0JywgdSdDYW5jZWwnKSwKLSh1J0Rpc2tDb3N0RGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J09LJywgdSdPSycsIHUnT0snKSwKLSh1J0Vycm9yRGxnJywgNTAsIDEwLCAyNzAsIDEwNSwgNjU1MzksIHUnSW5zdGFsbGVyIEluZm9ybWF0aW9uJywgdSdFcnJvclRleHQnLCBOb25lLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCA1MCwgNTAsIDM3MCwgMjcwLCAxOSwgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J1JldHJ5JywgdSdSZXRyeScsIHUnUmV0cnknKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCA1MCwgNTAsIDM3MCwgMjcwLCAzLCB1J1tQcm9kdWN0TmFtZV0gTGljZW5zZSBBZ3JlZW1lbnQnLCB1J0J1dHRvbnMnLCB1J05leHQnLCB1J0NhbmNlbCcpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J0NoYW5nZUxhYmVsJywgdSdDaGFuZ2VCdXR0b24nLCB1J0NhbmNlbCcpLAotKHUnTWFpbnRlbmFuY2VXZWxjb21lRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J05leHQnLCB1J05leHQnLCB1J0NhbmNlbCcpLAotKHUnT3V0T2ZEaXNrRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J09LJywgdSdPSycsIHUnT0snKSwKLSh1J091dE9mUmJEaXNrRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J05vJywgdSdObycsIHUnTm8nKSwKLSh1J1Jlc3VtZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdJbnN0YWxsJywgdSdJbnN0YWxsJywgdSdDYW5jZWwnKSwKLSh1J1NldHVwVHlwZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdUeXBpY2FsTGFiZWwnLCB1J1R5cGljYWxCdXR0b24nLCB1J0NhbmNlbCcpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdOYW1lTGFiZWwnLCB1J05leHQnLCB1J0NhbmNlbCcpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCA1MCwgNTAsIDM3MCwgMjcwLCAzNSwgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J0luc3RhbGwnLCB1J0luc3RhbGwnLCB1J0NhbmNlbCcpLAotKHUnVmVyaWZ5UmVtb3ZlRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMzUsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdCYWNrJywgdSdCYWNrJywgdSdDYW5jZWwnKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDM1LCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnUmVwYWlyJywgdSdSZXBhaXInLCB1J0NhbmNlbCcpLAotKHUnV2FpdEZvckNvc3RpbmdEbGcnLCA1MCwgMTAsIDI2MCwgODUsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdSZXR1cm4nLCB1J1JldHVybicsIHUnUmV0dXJuJyksCi0odSdXZWxjb21lRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J05leHQnLCB1J05leHQnLCB1J0NhbmNlbCcpLAotXQotCi1FdmVudE1hcHBpbmcgPSBbCi0odSdQcmVwYXJlRGxnJywgdSdBY3Rpb25EYXRhJywgdSdBY3Rpb25EYXRhJywgdSdUZXh0JyksCi0odSdQcmVwYXJlRGxnJywgdSdBY3Rpb25UZXh0JywgdSdBY3Rpb25UZXh0JywgdSdUZXh0JyksCi0odSdQcm9ncmVzc0RsZycsIHUnQWN0aW9uVGV4dCcsIHUnQWN0aW9uVGV4dCcsIHUnVGV4dCcpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J1Byb2dyZXNzQmFyJywgdSdTZXRQcm9ncmVzcycsIHUnUHJvZ3Jlc3MnKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdEaXJlY3RvcnlDb21ibycsIHUnSWdub3JlQ2hhbmdlJywgdSdJZ25vcmVDaGFuZ2UnKSwKLSh1J0Jyb3dzZURsZycsIHUnRGlyZWN0b3J5Q29tYm8nLCB1J0lnbm9yZUNoYW5nZScsIHUnSWdub3JlQ2hhbmdlJyksCi0odSdDdXN0b21pemVEbGcnLCB1J05leHQnLCB1J1NlbGVjdGlvbk5vSXRlbXMnLCB1J0VuYWJsZWQnKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnUmVzZXQnLCB1J1NlbGVjdGlvbk5vSXRlbXMnLCB1J0VuYWJsZWQnKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnRGlza0Nvc3QnLCB1J1NlbGVjdGlvbk5vSXRlbXMnLCB1J0VuYWJsZWQnKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnSXRlbURlc2NyaXB0aW9uJywgdSdTZWxlY3Rpb25EZXNjcmlwdGlvbicsIHUnVGV4dCcpLAotKHUnQ3VzdG9taXplRGxnJywgdSdJdGVtU2l6ZScsIHUnU2VsZWN0aW9uU2l6ZScsIHUnVGV4dCcpLAotKHUnQ3VzdG9taXplRGxnJywgdSdMb2NhdGlvbicsIHUnU2VsZWN0aW9uUGF0aCcsIHUnVGV4dCcpLAotKHUnQ3VzdG9taXplRGxnJywgdSdMb2NhdGlvbicsIHUnU2VsZWN0aW9uUGF0aE9uJywgdSdWaXNpYmxlJyksCi0odSdDdXN0b21pemVEbGcnLCB1J0xvY2F0aW9uTGFiZWwnLCB1J1NlbGVjdGlvblBhdGhPbicsIHUnVmlzaWJsZScpLAotXQotCi1JbnN0YWxsRXhlY3V0ZVNlcXVlbmNlID0gWwotKHUnSW5zdGFsbFZhbGlkYXRlJywgTm9uZSwgMTQwMCksCi0odSdJbnN0YWxsSW5pdGlhbGl6ZScsIE5vbmUsIDE1MDApLAotKHUnSW5zdGFsbEZpbmFsaXplJywgTm9uZSwgNjYwMCksCi0odSdJbnN0YWxsRmlsZXMnLCBOb25lLCA0MDAwKSwKLSh1J0ZpbGVDb3N0JywgTm9uZSwgOTAwKSwKLSh1J0Nvc3RJbml0aWFsaXplJywgTm9uZSwgODAwKSwKLSh1J0Nvc3RGaW5hbGl6ZScsIE5vbmUsIDEwMDApLAotKHUnQ3JlYXRlU2hvcnRjdXRzJywgTm9uZSwgNDUwMCksCi0odSdQdWJsaXNoQ29tcG9uZW50cycsIE5vbmUsIDYyMDApLAotKHUnUHVibGlzaEZlYXR1cmVzJywgTm9uZSwgNjMwMCksCi0odSdQdWJsaXNoUHJvZHVjdCcsIE5vbmUsIDY0MDApLAotKHUnUmVnaXN0ZXJDbGFzc0luZm8nLCBOb25lLCA0NjAwKSwKLSh1J1JlZ2lzdGVyRXh0ZW5zaW9uSW5mbycsIE5vbmUsIDQ3MDApLAotKHUnUmVnaXN0ZXJNSU1FSW5mbycsIE5vbmUsIDQ5MDApLAotKHUnUmVnaXN0ZXJQcm9nSWRJbmZvJywgTm9uZSwgNDgwMCksCi0odSdWYWxpZGF0ZVByb2R1Y3RJRCcsIE5vbmUsIDcwMCksCi0odSdBbGxvY2F0ZVJlZ2lzdHJ5U3BhY2UnLCB1J05PVCBJbnN0YWxsZWQnLCAxNTUwKSwKLSh1J0FwcFNlYXJjaCcsIE5vbmUsIDQwMCksCi0odSdCaW5kSW1hZ2UnLCBOb25lLCA0MzAwKSwKLSh1J0NDUFNlYXJjaCcsIHUnTk9UIEluc3RhbGxlZCcsIDUwMCksCi0odSdDcmVhdGVGb2xkZXJzJywgTm9uZSwgMzcwMCksCi0odSdEZWxldGVTZXJ2aWNlcycsIHUnVmVyc2lvbk5UJywgMjAwMCksCi0odSdEdXBsaWNhdGVGaWxlcycsIE5vbmUsIDQyMTApLAotKHUnRmluZFJlbGF0ZWRQcm9kdWN0cycsIE5vbmUsIDIwMCksCi0odSdJbnN0YWxsT0RCQycsIE5vbmUsIDU0MDApLAotKHUnSW5zdGFsbFNlcnZpY2VzJywgdSdWZXJzaW9uTlQnLCA1ODAwKSwKLSh1J0xhdW5jaENvbmRpdGlvbnMnLCBOb25lLCAxMDApLAotKHUnTWlncmF0ZUZlYXR1cmVTdGF0ZXMnLCBOb25lLCAxMjAwKSwKLSh1J01vdmVGaWxlcycsIE5vbmUsIDM4MDApLAotKHUnUGF0Y2hGaWxlcycsIE5vbmUsIDQwOTApLAotKHUnUHJvY2Vzc0NvbXBvbmVudHMnLCBOb25lLCAxNjAwKSwKLSh1J1JlZ2lzdGVyQ29tUGx1cycsIE5vbmUsIDU3MDApLAotKHUnUmVnaXN0ZXJGb250cycsIE5vbmUsIDUzMDApLAotKHUnUmVnaXN0ZXJQcm9kdWN0JywgTm9uZSwgNjEwMCksCi0odSdSZWdpc3RlclR5cGVMaWJyYXJpZXMnLCBOb25lLCA1NTAwKSwKLSh1J1JlZ2lzdGVyVXNlcicsIE5vbmUsIDYwMDApLAotKHUnUmVtb3ZlRHVwbGljYXRlRmlsZXMnLCBOb25lLCAzNDAwKSwKLSh1J1JlbW92ZUVudmlyb25tZW50U3RyaW5ncycsIE5vbmUsIDMzMDApLAotKHUnUmVtb3ZlRXhpc3RpbmdQcm9kdWN0cycsIE5vbmUsIDY3MDApLAotKHUnUmVtb3ZlRmlsZXMnLCBOb25lLCAzNTAwKSwKLSh1J1JlbW92ZUZvbGRlcnMnLCBOb25lLCAzNjAwKSwKLSh1J1JlbW92ZUluaVZhbHVlcycsIE5vbmUsIDMxMDApLAotKHUnUmVtb3ZlT0RCQycsIE5vbmUsIDI0MDApLAotKHUnUmVtb3ZlUmVnaXN0cnlWYWx1ZXMnLCBOb25lLCAyNjAwKSwKLSh1J1JlbW92ZVNob3J0Y3V0cycsIE5vbmUsIDMyMDApLAotKHUnUk1DQ1BTZWFyY2gnLCB1J05PVCBJbnN0YWxsZWQnLCA2MDApLAotKHUnU2VsZlJlZ01vZHVsZXMnLCBOb25lLCA1NjAwKSwKLSh1J1NlbGZVbnJlZ01vZHVsZXMnLCBOb25lLCAyMjAwKSwKLSh1J1NldE9EQkNGb2xkZXJzJywgTm9uZSwgMTEwMCksCi0odSdTdGFydFNlcnZpY2VzJywgdSdWZXJzaW9uTlQnLCA1OTAwKSwKLSh1J1N0b3BTZXJ2aWNlcycsIHUnVmVyc2lvbk5UJywgMTkwMCksCi0odSdVbnB1Ymxpc2hDb21wb25lbnRzJywgTm9uZSwgMTcwMCksCi0odSdVbnB1Ymxpc2hGZWF0dXJlcycsIE5vbmUsIDE4MDApLAotKHUnVW5yZWdpc3RlckNsYXNzSW5mbycsIE5vbmUsIDI3MDApLAotKHUnVW5yZWdpc3RlckNvbVBsdXMnLCBOb25lLCAyMTAwKSwKLSh1J1VucmVnaXN0ZXJFeHRlbnNpb25JbmZvJywgTm9uZSwgMjgwMCksCi0odSdVbnJlZ2lzdGVyRm9udHMnLCBOb25lLCAyNTAwKSwKLSh1J1VucmVnaXN0ZXJNSU1FSW5mbycsIE5vbmUsIDMwMDApLAotKHUnVW5yZWdpc3RlclByb2dJZEluZm8nLCBOb25lLCAyOTAwKSwKLSh1J1VucmVnaXN0ZXJUeXBlTGlicmFyaWVzJywgTm9uZSwgMjMwMCksCi0odSdXcml0ZUVudmlyb25tZW50U3RyaW5ncycsIE5vbmUsIDUyMDApLAotKHUnV3JpdGVJbmlWYWx1ZXMnLCBOb25lLCA1MTAwKSwKLSh1J1dyaXRlUmVnaXN0cnlWYWx1ZXMnLCBOb25lLCA1MDAwKSwKLV0KLQotSW5zdGFsbFVJU2VxdWVuY2UgPSBbCi0jKHUnRmlsZUNvc3QnLCBOb25lLCA5MDApLAotIyh1J0Nvc3RJbml0aWFsaXplJywgTm9uZSwgODAwKSwKLSModSdDb3N0RmluYWxpemUnLCBOb25lLCAxMDAwKSwKLSModSdFeGVjdXRlQWN0aW9uJywgTm9uZSwgMTMwMCksCi0jKHUnRXhpdERpYWxvZycsIE5vbmUsIC0xKSwKLSModSdGYXRhbEVycm9yJywgTm9uZSwgLTMpLAotKHUnUHJlcGFyZURsZycsIE5vbmUsIDE0MCksCi0odSdQcm9ncmVzc0RsZycsIE5vbmUsIDEyODApLAotIyh1J1VzZXJFeGl0JywgTm9uZSwgLTIpLAotKHUnTWFpbnRlbmFuY2VXZWxjb21lRGxnJywgdSdJbnN0YWxsZWQgQU5EIE5PVCBSRVNVTUUgQU5EIE5PVCBQcmVzZWxlY3RlZCcsIDEyNTApLAotKHUnUmVzdW1lRGxnJywgdSdJbnN0YWxsZWQgQU5EIChSRVNVTUUgT1IgUHJlc2VsZWN0ZWQpJywgMTI0MCksCi0odSdXZWxjb21lRGxnJywgdSdOT1QgSW5zdGFsbGVkJywgMTIzMCksCi0jKHUnQXBwU2VhcmNoJywgTm9uZSwgNDAwKSwKLSModSdDQ1BTZWFyY2gnLCB1J05PVCBJbnN0YWxsZWQnLCA1MDApLAotIyh1J0ZpbmRSZWxhdGVkUHJvZHVjdHMnLCBOb25lLCAyMDApLAotIyh1J0xhdW5jaENvbmRpdGlvbnMnLCBOb25lLCAxMDApLAotIyh1J01pZ3JhdGVGZWF0dXJlU3RhdGVzJywgTm9uZSwgMTIwMCksCi0jKHUnUk1DQ1BTZWFyY2gnLCB1J05PVCBJbnN0YWxsZWQnLCA2MDApLAotXQotCi1MaXN0VmlldyA9IFsKLV0KLQotUmFkaW9CdXR0b24gPSBbCi0odSdJQWdyZWUnLCAxLCB1J1llcycsIDUsIDAsIDI1MCwgMTUsIHUne1xcRGxnRm9udDh9SSAmYWNjZXB0IHRoZSB0ZXJtcyBpbiB0aGUgTGljZW5zZSBBZ3JlZW1lbnQnLCBOb25lKSwKLSh1J0lBZ3JlZScsIDIsIHUnTm8nLCA1LCAyMCwgMjUwLCAxNSwgdSd7XFxEbGdGb250OH1JICZkbyBub3QgYWNjZXB0IHRoZSB0ZXJtcyBpbiB0aGUgTGljZW5zZSBBZ3JlZW1lbnQnLCBOb25lKSwKLV0KLQotVGV4dFN0eWxlID0gWwotKHUnRGxnRm9udDgnLCB1J1RhaG9tYScsIDgsIE5vbmUsIDApLAotKHUnRGxnRm9udEJvbGQ4JywgdSdUYWhvbWEnLCA4LCBOb25lLCAxKSwKLSh1J1ZlcmRhbmFCb2xkMTMnLCB1J1ZlcmRhbmEnLCAxMywgTm9uZSwgMSksCi1dCi0KLVVJVGV4dCA9IFsKLSh1J0Fic2VudFBhdGgnLCBOb25lKSwKLSh1J2J5dGVzJywgdSdieXRlcycpLAotKHUnR0InLCB1J0dCJyksCi0odSdLQicsIHUnS0InKSwKLSh1J01CJywgdSdNQicpLAotKHUnTWVudUFic2VudCcsIHUnRW50aXJlIGZlYXR1cmUgd2lsbCBiZSB1bmF2YWlsYWJsZScpLAotKHUnTWVudUFkdmVydGlzZScsIHUnRmVhdHVyZSB3aWxsIGJlIGluc3RhbGxlZCB3aGVuIHJlcXVpcmVkJyksCi0odSdNZW51QWxsQ0QnLCB1J0VudGlyZSBmZWF0dXJlIHdpbGwgYmUgaW5zdGFsbGVkIHRvIHJ1biBmcm9tIENEJyksCi0odSdNZW51QWxsTG9jYWwnLCB1J0VudGlyZSBmZWF0dXJlIHdpbGwgYmUgaW5zdGFsbGVkIG9uIGxvY2FsIGhhcmQgZHJpdmUnKSwKLSh1J01lbnVBbGxOZXR3b3JrJywgdSdFbnRpcmUgZmVhdHVyZSB3aWxsIGJlIGluc3RhbGxlZCB0byBydW4gZnJvbSBuZXR3b3JrJyksCi0odSdNZW51Q0QnLCB1J1dpbGwgYmUgaW5zdGFsbGVkIHRvIHJ1biBmcm9tIENEJyksCi0odSdNZW51TG9jYWwnLCB1J1dpbGwgYmUgaW5zdGFsbGVkIG9uIGxvY2FsIGhhcmQgZHJpdmUnKSwKLSh1J01lbnVOZXR3b3JrJywgdSdXaWxsIGJlIGluc3RhbGxlZCB0byBydW4gZnJvbSBuZXR3b3JrJyksCi0odSdTY3JpcHRJblByb2dyZXNzJywgdSdHYXRoZXJpbmcgcmVxdWlyZWQgaW5mb3JtYXRpb24uLi4nKSwKLSh1J1NlbEFic2VudEFic2VudCcsIHUnVGhpcyBmZWF0dXJlIHdpbGwgcmVtYWluIHVuaW5zdGFsbGVkJyksCi0odSdTZWxBYnNlbnRBZHZlcnRpc2UnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlIHNldCB0byBiZSBpbnN0YWxsZWQgd2hlbiByZXF1aXJlZCcpLAotKHUnU2VsQWJzZW50Q0QnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlIGluc3RhbGxlZCB0byBydW4gZnJvbSBDRCcpLAotKHUnU2VsQWJzZW50TG9jYWwnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlIGluc3RhbGxlZCBvbiB0aGUgbG9jYWwgaGFyZCBkcml2ZScpLAotKHUnU2VsQWJzZW50TmV0d29yaycsIHUnVGhpcyBmZWF0dXJlIHdpbGwgYmUgaW5zdGFsbGVkIHRvIHJ1biBmcm9tIHRoZSBuZXR3b3JrJyksCi0odSdTZWxBZHZlcnRpc2VBYnNlbnQnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlY29tZSB1bmF2YWlsYWJsZScpLAotKHUnU2VsQWR2ZXJ0aXNlQWR2ZXJ0aXNlJywgdSdXaWxsIGJlIGluc3RhbGxlZCB3aGVuIHJlcXVpcmVkJyksCi0odSdTZWxBZHZlcnRpc2VDRCcsIHUnVGhpcyBmZWF0dXJlIHdpbGwgYmUgYXZhaWxhYmxlIHRvIHJ1biBmcm9tIENEJyksCi0odSdTZWxBZHZlcnRpc2VMb2NhbCcsIHUnVGhpcyBmZWF0dXJlIHdpbGwgYmUgaW5zdGFsbGVkIG9uIHlvdXIgbG9jYWwgaGFyZCBkcml2ZScpLAotKHUnU2VsQWR2ZXJ0aXNlTmV0d29yaycsIHUnVGhpcyBmZWF0dXJlIHdpbGwgYmUgYXZhaWxhYmxlIHRvIHJ1biBmcm9tIHRoZSBuZXR3b3JrJyksCi0odSdTZWxDREFic2VudCcsIHUiVGhpcyBmZWF0dXJlIHdpbGwgYmUgdW5pbnN0YWxsZWQgY29tcGxldGVseSwgeW91IHdvbid0IGJlIGFibGUgdG8gcnVuIGl0IGZyb20gQ0QiKSwKLSh1J1NlbENEQWR2ZXJ0aXNlJywgdSdUaGlzIGZlYXR1cmUgd2lsbCBjaGFuZ2UgZnJvbSBydW4gZnJvbSBDRCBzdGF0ZSB0byBzZXQgdG8gYmUgaW5zdGFsbGVkIHdoZW4gcmVxdWlyZWQnKSwKLSh1J1NlbENEQ0QnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIHJlbWFpbiB0byBiZSBydW4gZnJvbSBDRCcpLAotKHUnU2VsQ0RMb2NhbCcsIHUnVGhpcyBmZWF0dXJlIHdpbGwgY2hhbmdlIGZyb20gcnVuIGZyb20gQ0Qgc3RhdGUgdG8gYmUgaW5zdGFsbGVkIG9uIHRoZSBsb2NhbCBoYXJkIGRyaXZlJyksCi0odSdTZWxDaGlsZENvc3ROZWcnLCB1J1RoaXMgZmVhdHVyZSBmcmVlcyB1cCBbMV0gb24geW91ciBoYXJkIGRyaXZlLicpLAotKHUnU2VsQ2hpbGRDb3N0UG9zJywgdSdUaGlzIGZlYXR1cmUgcmVxdWlyZXMgWzFdIG9uIHlvdXIgaGFyZCBkcml2ZS4nKSwKLSh1J1NlbENvc3RQZW5kaW5nJywgdSdDb21waWxpbmcgY29zdCBmb3IgdGhpcyBmZWF0dXJlLi4uJyksCi0odSdTZWxMb2NhbEFic2VudCcsIHUnVGhpcyBmZWF0dXJlIHdpbGwgYmUgY29tcGxldGVseSByZW1vdmVkJyksCi0odSdTZWxMb2NhbEFkdmVydGlzZScsIHUnVGhpcyBmZWF0dXJlIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHlvdXIgbG9jYWwgaGFyZCBkcml2ZSwgYnV0IHdpbGwgYmUgc2V0IHRvIGJlIGluc3RhbGxlZCB3aGVuIHJlcXVpcmVkJyksCi0odSdTZWxMb2NhbENEJywgdSdUaGlzIGZlYXR1cmUgd2lsbCBiZSByZW1vdmVkIGZyb20geW91ciBsb2NhbCBoYXJkIGRyaXZlLCBidXQgd2lsbCBiZSBzdGlsbCBhdmFpbGFibGUgdG8gcnVuIGZyb20gQ0QnKSwKLSh1J1NlbExvY2FsTG9jYWwnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIHJlbWFpbiBvbiB5b3UgbG9jYWwgaGFyZCBkcml2ZScpLAotKHUnU2VsTG9jYWxOZXR3b3JrJywgdSdUaGlzIGZlYXR1cmUgd2lsbCBiZSByZW1vdmVkIGZyb20geW91ciBsb2NhbCBoYXJkIGRyaXZlLCBidXQgd2lsbCBiZSBzdGlsbCBhdmFpbGFibGUgdG8gcnVuIGZyb20gdGhlIG5ldHdvcmsnKSwKLSh1J1NlbE5ldHdvcmtBYnNlbnQnLCB1IlRoaXMgZmVhdHVyZSB3aWxsIGJlIHVuaW5zdGFsbGVkIGNvbXBsZXRlbHksIHlvdSB3b24ndCBiZSBhYmxlIHRvIHJ1biBpdCBmcm9tIHRoZSBuZXR3b3JrIiksCi0odSdTZWxOZXR3b3JrQWR2ZXJ0aXNlJywgdSdUaGlzIGZlYXR1cmUgd2lsbCBjaGFuZ2UgZnJvbSBydW4gZnJvbSBuZXR3b3JrIHN0YXRlIHRvIHNldCB0byBiZSBpbnN0YWxsZWQgd2hlbiByZXF1aXJlZCcpLAotKHUnU2VsTmV0d29ya0xvY2FsJywgdSdUaGlzIGZlYXR1cmUgd2lsbCBjaGFuZ2UgZnJvbSBydW4gZnJvbSBuZXR3b3JrIHN0YXRlIHRvIGJlIGluc3RhbGxlZCBvbiB0aGUgbG9jYWwgaGFyZCBkcml2ZScpLAotKHUnU2VsTmV0d29ya05ldHdvcmsnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIHJlbWFpbiB0byBiZSBydW4gZnJvbSB0aGUgbmV0d29yaycpLAotKHUnU2VsUGFyZW50Q29zdE5lZ05lZycsIHUnVGhpcyBmZWF0dXJlIGZyZWVzIHVwIFsxXSBvbiB5b3VyIGhhcmQgZHJpdmUuIEl0IGhhcyBbMl0gb2YgWzNdIHN1YmZlYXR1cmVzIHNlbGVjdGVkLiBUaGUgc3ViZmVhdHVyZXMgZnJlZSB1cCBbNF0gb24geW91ciBoYXJkIGRyaXZlLicpLAotKHUnU2VsUGFyZW50Q29zdE5lZ1BvcycsIHUnVGhpcyBmZWF0dXJlIGZyZWVzIHVwIFsxXSBvbiB5b3VyIGhhcmQgZHJpdmUuIEl0IGhhcyBbMl0gb2YgWzNdIHN1YmZlYXR1cmVzIHNlbGVjdGVkLiBUaGUgc3ViZmVhdHVyZXMgcmVxdWlyZSBbNF0gb24geW91ciBoYXJkIGRyaXZlLicpLAotKHUnU2VsUGFyZW50Q29zdFBvc05lZycsIHUnVGhpcyBmZWF0dXJlIHJlcXVpcmVzIFsxXSBvbiB5b3VyIGhhcmQgZHJpdmUuIEl0IGhhcyBbMl0gb2YgWzNdIHN1YmZlYXR1cmVzIHNlbGVjdGVkLiBUaGUgc3ViZmVhdHVyZXMgZnJlZSB1cCBbNF0gb24geW91ciBoYXJkIGRyaXZlLicpLAotKHUnU2VsUGFyZW50Q29zdFBvc1BvcycsIHUnVGhpcyBmZWF0dXJlIHJlcXVpcmVzIFsxXSBvbiB5b3VyIGhhcmQgZHJpdmUuIEl0IGhhcyBbMl0gb2YgWzNdIHN1YmZlYXR1cmVzIHNlbGVjdGVkLiBUaGUgc3ViZmVhdHVyZXMgcmVxdWlyZSBbNF0gb24geW91ciBoYXJkIGRyaXZlLicpLAotKHUnVGltZVJlbWFpbmluZycsIHUnVGltZSByZW1haW5pbmc6IHtbMV0gbWludXRlcyB9e1syXSBzZWNvbmRzfScpLAotKHUnVm9sdW1lQ29zdEF2YWlsYWJsZScsIHUnQXZhaWxhYmxlJyksCi0odSdWb2x1bWVDb3N0RGlmZmVyZW5jZScsIHUnRGlmZmVyZW5jZScpLAotKHUnVm9sdW1lQ29zdFJlcXVpcmVkJywgdSdSZXF1aXJlZCcpLAotKHUnVm9sdW1lQ29zdFNpemUnLCB1J0Rpc2sgU2l6ZScpLAotKHUnVm9sdW1lQ29zdFZvbHVtZScsIHUnVm9sdW1lJyksCi1dCi0KLV9WYWxpZGF0aW9uID0gWwotKHUnQWRtaW5FeGVjdXRlU2VxdWVuY2UnLCB1J0FjdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBhY3Rpb24gdG8gaW52b2tlLCBlaXRoZXIgaW4gdGhlIGVuZ2luZSBvciB0aGUgaGFuZGxlciBETEwuJyksCi0odSdBZG1pbkV4ZWN1dGVTZXF1ZW5jZScsIHUnU2VxdWVuY2UnLCB1J1knLCAtNCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtYmVyIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc29ydCBvcmRlciBpbiB3aGljaCB0aGUgYWN0aW9ucyBhcmUgdG8gYmUgZXhlY3V0ZWQuICBMZWF2ZSBibGFuayB0byBzdXBwcmVzcyBhY3Rpb24uJyksCi0odSdBZG1pbkV4ZWN1dGVTZXF1ZW5jZScsIHUnQ29uZGl0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLCBOb25lLCB1J09wdGlvbmFsIGV4cHJlc3Npb24gd2hpY2ggc2tpcHMgdGhlIGFjdGlvbiBpZiBldmFsdWF0ZXMgdG8gZXhwRmFsc2UuSWYgdGhlIGV4cHJlc3Npb24gc3ludGF4IGlzIGludmFsaWQsIHRoZSBlbmdpbmUgd2lsbCB0ZXJtaW5hdGUsIHJldHVybmluZyBpZXNCYWRBY3Rpb25EYXRhLicpLAotKHUnQWRtaW5VSVNlcXVlbmNlJywgdSdBY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGludm9rZSwgZWl0aGVyIGluIHRoZSBlbmdpbmUgb3IgdGhlIGhhbmRsZXIgRExMLicpLAotKHUnQWRtaW5VSVNlcXVlbmNlJywgdSdTZXF1ZW5jZScsIHUnWScsIC00LCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOdW1iZXIgdGhhdCBkZXRlcm1pbmVzIHRoZSBzb3J0IG9yZGVyIGluIHdoaWNoIHRoZSBhY3Rpb25zIGFyZSB0byBiZSBleGVjdXRlZC4gIExlYXZlIGJsYW5rIHRvIHN1cHByZXNzIGFjdGlvbi4nKSwKLSh1J0FkbWluVUlTZXF1ZW5jZScsIHUnQ29uZGl0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLCBOb25lLCB1J09wdGlvbmFsIGV4cHJlc3Npb24gd2hpY2ggc2tpcHMgdGhlIGFjdGlvbiBpZiBldmFsdWF0ZXMgdG8gZXhwRmFsc2UuSWYgdGhlIGV4cHJlc3Npb24gc3ludGF4IGlzIGludmFsaWQsIHRoZSBlbmdpbmUgd2lsbCB0ZXJtaW5hdGUsIHJldHVybmluZyBpZXNCYWRBY3Rpb25EYXRhLicpLAotKHUnQ29uZGl0aW9uJywgdSdDb25kaXRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsIE5vbmUsIHUnRXhwcmVzc2lvbiBldmFsdWF0ZWQgdG8gZGV0ZXJtaW5lIGlmIExldmVsIGluIHRoZSBGZWF0dXJlIHRhYmxlIGlzIHRvIGNoYW5nZS4nKSwKLSh1J0NvbmRpdGlvbicsIHUnRmVhdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZlYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlZmVyZW5jZSB0byBhIEZlYXR1cmUgZW50cnkgaW4gRmVhdHVyZSB0YWJsZS4nKSwKLSh1J0NvbmRpdGlvbicsIHUnTGV2ZWwnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOZXcgc2VsZWN0aW9uIExldmVsIHRvIHNldCBpbiBGZWF0dXJlIHRhYmxlIGlmIENvbmRpdGlvbiBldmFsdWF0ZXMgdG8gVFJVRS4nKSwKLSh1J0FkdnRFeGVjdXRlU2VxdWVuY2UnLCB1J0FjdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBhY3Rpb24gdG8gaW52b2tlLCBlaXRoZXIgaW4gdGhlIGVuZ2luZSBvciB0aGUgaGFuZGxlciBETEwuJyksCi0odSdBZHZ0RXhlY3V0ZVNlcXVlbmNlJywgdSdTZXF1ZW5jZScsIHUnWScsIC00LCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOdW1iZXIgdGhhdCBkZXRlcm1pbmVzIHRoZSBzb3J0IG9yZGVyIGluIHdoaWNoIHRoZSBhY3Rpb25zIGFyZSB0byBiZSBleGVjdXRlZC4gIExlYXZlIGJsYW5rIHRvIHN1cHByZXNzIGFjdGlvbi4nKSwKLSh1J0FkdnRFeGVjdXRlU2VxdWVuY2UnLCB1J0NvbmRpdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJywgTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nKSwKLSh1J0JCQ29udHJvbCcsIHUnVHlwZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIHR5cGUgb2YgdGhlIGNvbnRyb2wuJyksCi0odSdCQkNvbnRyb2wnLCB1J0JCQ29udHJvbCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiB0aGUgY29udHJvbC4gVGhpcyBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiBhIGJpbGxib2FyZCwgYnV0IGNhbiByZXBlYXQgb24gZGlmZmVyZW50IGJpbGxib2FyZC4nKSwKLSh1J0JCQ29udHJvbCcsIHUnQmlsbGJvYXJkXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQmlsbGJvYXJkJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdFeHRlcm5hbCBrZXkgdG8gdGhlIEJpbGxib2FyZCB0YWJsZSwgbmFtZSBvZiB0aGUgYmlsbGJvYXJkLicpLAotKHUnQkJDb250cm9sJywgdSdYJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSG9yaXpvbnRhbCBjb29yZGluYXRlIG9mIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicpLAotKHUnQkJDb250cm9sJywgdSdZJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVydGljYWwgY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0JCQ29udHJvbCcsIHUnV2lkdGgnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdXaWR0aCBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicpLAotKHUnQkJDb250cm9sJywgdSdIZWlnaHQnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdIZWlnaHQgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0JCQ29udHJvbCcsIHUnQXR0cmlidXRlcycsIHUnWScsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSAzMi1iaXQgd29yZCB0aGF0IHNwZWNpZmllcyB0aGUgYXR0cmlidXRlIGZsYWdzIHRvIGJlIGFwcGxpZWQgdG8gdGhpcyBjb250cm9sLicpLAotKHUnQkJDb250cm9sJywgdSdUZXh0JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdBIHN0cmluZyB1c2VkIHRvIHNldCB0aGUgaW5pdGlhbCB0ZXh0IGNvbnRhaW5lZCB3aXRoaW4gYSBjb250cm9sIChpZiBhcHByb3ByaWF0ZSkuJyksCi0odSdCaWxsYm9hcmQnLCB1J0FjdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIG5hbWUgb2YgYW4gYWN0aW9uLiBUaGUgYmlsbGJvYXJkIGlzIGRpc3BsYXllZCBkdXJpbmcgdGhlIHByb2dyZXNzIG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gdGhpcyBhY3Rpb24uJyksCi0odSdCaWxsYm9hcmQnLCB1J0JpbGxib2FyZCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiB0aGUgYmlsbGJvYXJkLicpLAotKHUnQmlsbGJvYXJkJywgdSdGZWF0dXJlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQW4gZXh0ZXJuYWwga2V5IHRvIHRoZSBGZWF0dXJlIFRhYmxlLiBUaGUgYmlsbGJvYXJkIGlzIHNob3duIG9ubHkgaWYgdGhpcyBmZWF0dXJlIGlzIGJlaW5nIGluc3RhbGxlZC4nKSwKLSh1J0JpbGxib2FyZCcsIHUnT3JkZXJpbmcnLCB1J1knLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIHBvc2l0aXZlIGludGVnZXIuIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgYmlsbGJvYXJkIGNvcnJlc3BvbmRpbmcgdG8gYW4gYWN0aW9uIHRoZXkgd2lsbCBiZSBzaG93biBpbiB0aGUgb3JkZXIgZGVmaW5lZCBieSB0aGlzIGNvbHVtbi4nKSwKLSh1J0JpbmFyeScsIHUnTmFtZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVW5pcXVlIGtleSBpZGVudGlmeWluZyB0aGUgYmluYXJ5IGRhdGEuJyksCi0odSdCaW5hcnknLCB1J0RhdGEnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsIE5vbmUsIHUnVGhlIHVuZm9ybWF0dGVkIGJpbmFyeSBkYXRhLicpLAotKHUnQ2hlY2tCb3gnLCB1J1Byb3BlcnR5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdBIG5hbWVkIHByb3BlcnR5IHRvIGJlIHRpZWQgdG8gdGhlIGl0ZW0uJyksCi0odSdDaGVja0JveCcsIHUnVmFsdWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIHZhbHVlIHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhlIGl0ZW0uJyksCi0odSdQcm9wZXJ0eScsIHUnUHJvcGVydHknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgcHJvcGVydHksIHVwcGVyY2FzZSBpZiBzZXR0YWJsZSBieSBsYXVuY2hlciBvciBsb2FkZXIuJyksCi0odSdQcm9wZXJ0eScsIHUnVmFsdWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1N0cmluZyB2YWx1ZSBmb3IgcHJvcGVydHkuICBOZXZlciBudWxsIG9yIGVtcHR5LicpLAotKHUnQ29tYm9Cb3gnLCB1J1RleHQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIHZpc2libGUgdGV4dCB0byBiZSBhc3NpZ25lZCB0byB0aGUgaXRlbS4gT3B0aW9uYWwuIElmIHRoaXMgZW50cnkgb3IgdGhlIGVudGlyZSBjb2x1bW4gaXMgbWlzc2luZywgdGhlIHRleHQgaXMgdGhlIHNhbWUgYXMgdGhlIHZhbHVlLicpLAotKHUnQ29tYm9Cb3gnLCB1J1Byb3BlcnR5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdBIG5hbWVkIHByb3BlcnR5IHRvIGJlIHRpZWQgdG8gdGhpcyBpdGVtLiBBbGwgdGhlIGl0ZW1zIHRpZWQgdG8gdGhlIHNhbWUgcHJvcGVydHkgYmVjb21lIHBhcnQgb2YgdGhlIHNhbWUgY29tYm9ib3guJyksCi0odSdDb21ib0JveCcsIHUnVmFsdWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIHZhbHVlIHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhpcyBpdGVtLiBTZWxlY3RpbmcgdGhlIGxpbmUgd2lsbCBzZXQgdGhlIGFzc29jaWF0ZWQgcHJvcGVydHkgdG8gdGhpcyB2YWx1ZS4nKSwKLSh1J0NvbWJvQm94JywgdSdPcmRlcicsIHUnTicsIDEsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgcG9zaXRpdmUgaW50ZWdlciB1c2VkIHRvIGRldGVybWluZSB0aGUgb3JkZXJpbmcgb2YgdGhlIGl0ZW1zIHdpdGhpbiBvbmUgbGlzdC5cdFRoZSBpbnRlZ2VycyBkbyBub3QgaGF2ZSB0byBiZSBjb25zZWN1dGl2ZS4nKSwKLSh1J0NvbnRyb2wnLCB1J1R5cGUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSB0eXBlIG9mIHRoZSBjb250cm9sLicpLAotKHUnQ29udHJvbCcsIHUnWCcsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0hvcml6b250YWwgY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0NvbnRyb2wnLCB1J1knLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWZXJ0aWNhbCBjb29yZGluYXRlIG9mIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicpLAotKHUnQ29udHJvbCcsIHUnV2lkdGgnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdXaWR0aCBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicpLAotKHUnQ29udHJvbCcsIHUnSGVpZ2h0JywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSGVpZ2h0IG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJyksCi0odSdDb250cm9sJywgdSdBdHRyaWJ1dGVzJywgdSdZJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIDMyLWJpdCB3b3JkIHRoYXQgc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGUgZmxhZ3MgdG8gYmUgYXBwbGllZCB0byB0aGlzIGNvbnRyb2wuJyksCi0odSdDb250cm9sJywgdSdUZXh0JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J0Egc3RyaW5nIHVzZWQgdG8gc2V0IHRoZSBpbml0aWFsIHRleHQgY29udGFpbmVkIHdpdGhpbiBhIGNvbnRyb2wgKGlmIGFwcHJvcHJpYXRlKS4nKSwKLSh1J0NvbnRyb2wnLCB1J1Byb3BlcnR5JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgbmFtZSBvZiBhIGRlZmluZWQgcHJvcGVydHkgdG8gYmUgbGlua2VkIHRvIHRoaXMgY29udHJvbC4gJyksCi0odSdDb250cm9sJywgdSdDb250cm9sJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIHRoZSBjb250cm9sLiBUaGlzIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIGEgZGlhbG9nLCBidXQgY2FuIHJlcGVhdCBvbiBkaWZmZXJlbnQgZGlhbG9ncy4gJyksCi0odSdDb250cm9sJywgdSdEaWFsb2dfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdEaWFsb2cnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0V4dGVybmFsIGtleSB0byB0aGUgRGlhbG9nIHRhYmxlLCBuYW1lIG9mIHRoZSBkaWFsb2cuJyksCi0odSdDb250cm9sJywgdSdDb250cm9sX05leHQnLCB1J1knLCBOb25lLCBOb25lLCB1J0NvbnRyb2wnLCAyLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBuYW1lIG9mIGFuIG90aGVyIGNvbnRyb2wgb24gdGhlIHNhbWUgZGlhbG9nLiBUaGlzIGxpbmsgZGVmaW5lcyB0aGUgdGFiIG9yZGVyIG9mIHRoZSBjb250cm9scy4gVGhlIGxpbmtzIGhhdmUgdG8gZm9ybSBvbmUgb3IgbW9yZSBjeWNsZXMhJyksCi0odSdDb250cm9sJywgdSdIZWxwJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgaGVscCBzdHJpbmdzIHVzZWQgd2l0aCB0aGUgYnV0dG9uLiBUaGUgdGV4dCBpcyBvcHRpb25hbC4gJyksCi0odSdJY29uJywgdSdOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleS4gTmFtZSBvZiB0aGUgaWNvbiBmaWxlLicpLAotKHUnSWNvbicsIHUnRGF0YScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JywgTm9uZSwgdSdCaW5hcnkgc3RyZWFtLiBUaGUgYmluYXJ5IGljb24gZGF0YSBpbiBQRSAoLkRMTCBvciAuRVhFKSBvciBpY29uICguSUNPKSBmb3JtYXQuJyksCi0odSdMaXN0Qm94JywgdSdUZXh0JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgdmlzaWJsZSB0ZXh0IHRvIGJlIGFzc2lnbmVkIHRvIHRoZSBpdGVtLiBPcHRpb25hbC4gSWYgdGhpcyBlbnRyeSBvciB0aGUgZW50aXJlIGNvbHVtbiBpcyBtaXNzaW5nLCB0aGUgdGV4dCBpcyB0aGUgc2FtZSBhcyB0aGUgdmFsdWUuJyksCi0odSdMaXN0Qm94JywgdSdQcm9wZXJ0eScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSBuYW1lZCBwcm9wZXJ0eSB0byBiZSB0aWVkIHRvIHRoaXMgaXRlbS4gQWxsIHRoZSBpdGVtcyB0aWVkIHRvIHRoZSBzYW1lIHByb3BlcnR5IGJlY29tZSBwYXJ0IG9mIHRoZSBzYW1lIGxpc3Rib3guJyksCi0odSdMaXN0Qm94JywgdSdWYWx1ZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgdmFsdWUgc3RyaW5nIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGl0ZW0uIFNlbGVjdGluZyB0aGUgbGluZSB3aWxsIHNldCB0aGUgYXNzb2NpYXRlZCBwcm9wZXJ0eSB0byB0aGlzIHZhbHVlLicpLAotKHUnTGlzdEJveCcsIHUnT3JkZXInLCB1J04nLCAxLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIHBvc2l0aXZlIGludGVnZXIgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG9yZGVyaW5nIG9mIHRoZSBpdGVtcyB3aXRoaW4gb25lIGxpc3QuLlRoZSBpbnRlZ2VycyBkbyBub3QgaGF2ZSB0byBiZSBjb25zZWN1dGl2ZS4nKSwKLSh1J0FjdGlvblRleHQnLCB1J0FjdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBhY3Rpb24gdG8gYmUgZGVzY3JpYmVkLicpLAotKHUnQWN0aW9uVGV4dCcsIHUnRGVzY3JpcHRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J0xvY2FsaXplZCBkZXNjcmlwdGlvbiBkaXNwbGF5ZWQgaW4gcHJvZ3Jlc3MgZGlhbG9nIGFuZCBsb2cgd2hlbiBhY3Rpb24gaXMgZXhlY3V0aW5nLicpLAotKHUnQWN0aW9uVGV4dCcsIHUnVGVtcGxhdGUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RlbXBsYXRlJywgTm9uZSwgdSdPcHRpb25hbCBsb2NhbGl6ZWQgZm9ybWF0IHRlbXBsYXRlIHVzZWQgdG8gZm9ybWF0IGFjdGlvbiBkYXRhIHJlY29yZHMgZm9yIGRpc3BsYXkgZHVyaW5nIGFjdGlvbiBleGVjdXRpb24uJyksCi0odSdDb250cm9sQ29uZGl0aW9uJywgdSdBY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0RlZmF1bHQ7RGlzYWJsZTtFbmFibGU7SGlkZTtTaG93JywgdSdUaGUgZGVzaXJlZCBhY3Rpb24gdG8gYmUgdGFrZW4gb24gdGhlIHNwZWNpZmllZCBjb250cm9sLicpLAotKHUnQ29udHJvbENvbmRpdGlvbicsIHUnQ29uZGl0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLCBOb25lLCB1J0Egc3RhbmRhcmQgY29uZGl0aW9uYWwgc3RhdGVtZW50IHRoYXQgc3BlY2lmaWVzIHVuZGVyIHdoaWNoIGNvbmRpdGlvbnMgdGhlIGFjdGlvbiBzaG91bGQgYmUgdHJpZ2dlcmVkLicpLAotKHUnQ29udHJvbENvbmRpdGlvbicsIHUnRGlhbG9nXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRGlhbG9nJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdBIGZvcmVpZ24ga2V5IHRvIHRoZSBEaWFsb2cgdGFibGUsIG5hbWUgb2YgdGhlIGRpYWxvZy4nKSwKLSh1J0NvbnRyb2xDb25kaXRpb24nLCB1J0NvbnRyb2xfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb250cm9sJywgMiwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdBIGZvcmVpZ24ga2V5IHRvIHRoZSBDb250cm9sIHRhYmxlLCBuYW1lIG9mIHRoZSBjb250cm9sLicpLAotKHUnQ29udHJvbEV2ZW50JywgdSdDb25kaXRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsIE5vbmUsIHUnQSBzdGFuZGFyZCBjb25kaXRpb25hbCBzdGF0ZW1lbnQgdGhhdCBzcGVjaWZpZXMgdW5kZXIgd2hpY2ggY29uZGl0aW9ucyBhbiBldmVudCBzaG91bGQgYmUgdHJpZ2dlcmVkLicpLAotKHUnQ29udHJvbEV2ZW50JywgdSdPcmRlcmluZycsIHUnWScsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQW4gaW50ZWdlciB1c2VkIHRvIG9yZGVyIHNldmVyYWwgZXZlbnRzIHRpZWQgdG8gdGhlIHNhbWUgY29udHJvbC4gQ2FuIGJlIGxlZnQgYmxhbmsuJyksCi0odSdDb250cm9sRXZlbnQnLCB1J0RpYWxvZ18nLCB1J04nLCBOb25lLCBOb25lLCB1J0RpYWxvZycsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSBmb3JlaWduIGtleSB0byB0aGUgRGlhbG9nIHRhYmxlLCBuYW1lIG9mIHRoZSBkaWFsb2cuJyksCi0odSdDb250cm9sRXZlbnQnLCB1J0NvbnRyb2xfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb250cm9sJywgMiwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdBIGZvcmVpZ24ga2V5IHRvIHRoZSBDb250cm9sIHRhYmxlLCBuYW1lIG9mIHRoZSBjb250cm9sJyksCi0odSdDb250cm9sRXZlbnQnLCB1J0V2ZW50JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J0FuIGlkZW50aWZpZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGV2ZW50IHRoYXQgc2hvdWxkIHRha2UgcGxhY2Ugd2hlbiB0aGUgdXNlciBpbnRlcmFjdHMgd2l0aCBjb250cm9sIHNwZWNpZmllZCBieSB0aGUgZmlyc3QgdHdvIGVudHJpZXMuJyksCi0odSdDb250cm9sRXZlbnQnLCB1J0FyZ3VtZW50JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J0EgdmFsdWUgdG8gYmUgdXNlZCBhcyBhIG1vZGlmaWVyIHdoZW4gdHJpZ2dlcmluZyBhIHBhcnRpY3VsYXIgZXZlbnQuJyksCi0odSdEaWFsb2cnLCB1J1dpZHRoJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnV2lkdGggb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgZGlhbG9nLicpLAotKHUnRGlhbG9nJywgdSdIZWlnaHQnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdIZWlnaHQgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgZGlhbG9nLicpLAotKHUnRGlhbG9nJywgdSdBdHRyaWJ1dGVzJywgdSdZJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIDMyLWJpdCB3b3JkIHRoYXQgc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGUgZmxhZ3MgdG8gYmUgYXBwbGllZCB0byB0aGlzIGRpYWxvZy4nKSwKLSh1J0RpYWxvZycsIHUnVGl0bGUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUiQSB0ZXh0IHN0cmluZyBzcGVjaWZ5aW5nIHRoZSB0aXRsZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHRpdGxlIGJhciBvZiB0aGUgZGlhbG9nJ3Mgd2luZG93LiIpLAotKHUnRGlhbG9nJywgdSdEaWFsb2cnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgdGhlIGRpYWxvZy4nKSwKLSh1J0RpYWxvZycsIHUnSENlbnRlcmluZycsIHUnTicsIDAsIDEwMCwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdIb3Jpem9udGFsIHBvc2l0aW9uIG9mIHRoZSBkaWFsb2cgb24gYSAwLTEwMCBzY2FsZS4gMCBtZWFucyBsZWZ0IGVuZCwgMTAwIG1lYW5zIHJpZ2h0IGVuZCBvZiB0aGUgc2NyZWVuLCA1MCBjZW50ZXIuJyksCi0odSdEaWFsb2cnLCB1J1ZDZW50ZXJpbmcnLCB1J04nLCAwLCAxMDAsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVydGljYWwgcG9zaXRpb24gb2YgdGhlIGRpYWxvZyBvbiBhIDAtMTAwIHNjYWxlLiAwIG1lYW5zIHRvcCBlbmQsIDEwMCBtZWFucyBib3R0b20gZW5kIG9mIHRoZSBzY3JlZW4sIDUwIGNlbnRlci4nKSwKLSh1J0RpYWxvZycsIHUnQ29udHJvbF9GaXJzdCcsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsIDIsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRGVmaW5lcyB0aGUgY29udHJvbCB0aGF0IGhhcyB0aGUgZm9jdXMgd2hlbiB0aGUgZGlhbG9nIGlzIGNyZWF0ZWQuJyksCi0odSdEaWFsb2cnLCB1J0NvbnRyb2xfRGVmYXVsdCcsIHUnWScsIE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsIDIsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb250cm9sLiBIaXR0aW5nIHJldHVybiBpcyBlcXVpdmFsZW50IHRvIHB1c2hpbmcgdGhpcyBidXR0b24uJyksCi0odSdEaWFsb2cnLCB1J0NvbnRyb2xfQ2FuY2VsJywgdSdZJywgTm9uZSwgTm9uZSwgdSdDb250cm9sJywgMiwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdEZWZpbmVzIHRoZSBjYW5jZWwgY29udHJvbC4gSGl0dGluZyBlc2NhcGUgb3IgY2xpY2tpbmcgb24gdGhlIGNsb3NlIGljb24gb24gdGhlIGRpYWxvZyBpcyBlcXVpdmFsZW50IHRvIHB1c2hpbmcgdGhpcyBidXR0b24uJyksCi0odSdFdmVudE1hcHBpbmcnLCB1J0RpYWxvZ18nLCB1J04nLCBOb25lLCBOb25lLCB1J0RpYWxvZycsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSBmb3JlaWduIGtleSB0byB0aGUgRGlhbG9nIHRhYmxlLCBuYW1lIG9mIHRoZSBEaWFsb2cuJyksCi0odSdFdmVudE1hcHBpbmcnLCB1J0NvbnRyb2xfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb250cm9sJywgMiwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdBIGZvcmVpZ24ga2V5IHRvIHRoZSBDb250cm9sIHRhYmxlLCBuYW1lIG9mIHRoZSBjb250cm9sLicpLAotKHUnRXZlbnRNYXBwaW5nJywgdSdFdmVudCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQW4gaWRlbnRpZmllciB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZXZlbnQgdGhhdCB0aGUgY29udHJvbCBzdWJzY3JpYmVzIHRvLicpLAotKHUnRXZlbnRNYXBwaW5nJywgdSdBdHRyaWJ1dGUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBuYW1lIG9mIHRoZSBjb250cm9sIGF0dHJpYnV0ZSwgdGhhdCBpcyBzZXQgd2hlbiB0aGlzIGV2ZW50IGlzIHJlY2VpdmVkLicpLAotKHUnSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZScsIHUnQWN0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIGFjdGlvbiB0byBpbnZva2UsIGVpdGhlciBpbiB0aGUgZW5naW5lIG9yIHRoZSBoYW5kbGVyIERMTC4nKSwKLSh1J0luc3RhbGxFeGVjdXRlU2VxdWVuY2UnLCB1J1NlcXVlbmNlJywgdSdZJywgLTQsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J051bWJlciB0aGF0IGRldGVybWluZXMgdGhlIHNvcnQgb3JkZXIgaW4gd2hpY2ggdGhlIGFjdGlvbnMgYXJlIHRvIGJlIGV4ZWN1dGVkLiAgTGVhdmUgYmxhbmsgdG8gc3VwcHJlc3MgYWN0aW9uLicpLAotKHUnSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZScsIHUnQ29uZGl0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLCBOb25lLCB1J09wdGlvbmFsIGV4cHJlc3Npb24gd2hpY2ggc2tpcHMgdGhlIGFjdGlvbiBpZiBldmFsdWF0ZXMgdG8gZXhwRmFsc2UuSWYgdGhlIGV4cHJlc3Npb24gc3ludGF4IGlzIGludmFsaWQsIHRoZSBlbmdpbmUgd2lsbCB0ZXJtaW5hdGUsIHJldHVybmluZyBpZXNCYWRBY3Rpb25EYXRhLicpLAotKHUnQXBwU2VhcmNoJywgdSdQcm9wZXJ0eScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIHByb3BlcnR5IGFzc29jaWF0ZWQgd2l0aCBhIFNpZ25hdHVyZScpLAotKHUnQXBwU2VhcmNoJywgdSdTaWduYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdTaWduYXR1cmU7UmVnTG9jYXRvcjtJbmlMb2NhdG9yO0RyTG9jYXRvcjtDb21wTG9jYXRvcicsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIFNpZ25hdHVyZV8gcmVwcmVzZW50cyBhIHVuaXF1ZSBmaWxlIHNpZ25hdHVyZSBhbmQgaXMgYWxzbyB0aGUgZm9yZWlnbiBrZXkgaW4gdGhlIFNpZ25hdHVyZSwgIFJlZ0xvY2F0b3IsIEluaUxvY2F0b3IsIENvbXBMb2NhdG9yIGFuZCB0aGUgRHJMb2NhdG9yIHRhYmxlcy4nKSwKLSh1J0JpbmRJbWFnZScsIHUnRmlsZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZpbGUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBpbmRleCBpbnRvIHRoZSBGaWxlIHRhYmxlLiBUaGlzIG11c3QgYmUgYW4gZXhlY3V0YWJsZSBmaWxlLicpLAotKHUnQmluZEltYWdlJywgdSdQYXRoJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdQYXRocycsIE5vbmUsIHUnQSBsaXN0IG9mIDsgIGRlbGltaXRlZCBwYXRocyB0aGF0IHJlcHJlc2VudCB0aGUgcGF0aHMgdG8gYmUgc2VhcmNoZWQgZm9yIHRoZSBpbXBvcnQgRExMUy4gVGhlIGxpc3QgaXMgdXN1YWxseSBhIGxpc3Qgb2YgcHJvcGVydGllcyBlYWNoIGVuY2xvc2VkIHdpdGhpbiBzcXVhcmUgYnJhY2tldHMgW10gLicpLAotKHUnQ0NQU2VhcmNoJywgdSdTaWduYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdTaWduYXR1cmU7UmVnTG9jYXRvcjtJbmlMb2NhdG9yO0RyTG9jYXRvcjtDb21wTG9jYXRvcicsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIFNpZ25hdHVyZV8gcmVwcmVzZW50cyBhIHVuaXF1ZSBmaWxlIHNpZ25hdHVyZSBhbmQgaXMgYWxzbyB0aGUgZm9yZWlnbiBrZXkgaW4gdGhlIFNpZ25hdHVyZSwgIFJlZ0xvY2F0b3IsIEluaUxvY2F0b3IsIENvbXBMb2NhdG9yIGFuZCB0aGUgRHJMb2NhdG9yIHRhYmxlcy4nKSwKLSh1J0luc3RhbGxVSVNlcXVlbmNlJywgdSdBY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGludm9rZSwgZWl0aGVyIGluIHRoZSBlbmdpbmUgb3IgdGhlIGhhbmRsZXIgRExMLicpLAotKHUnSW5zdGFsbFVJU2VxdWVuY2UnLCB1J1NlcXVlbmNlJywgdSdZJywgLTQsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J051bWJlciB0aGF0IGRldGVybWluZXMgdGhlIHNvcnQgb3JkZXIgaW4gd2hpY2ggdGhlIGFjdGlvbnMgYXJlIHRvIGJlIGV4ZWN1dGVkLiAgTGVhdmUgYmxhbmsgdG8gc3VwcHJlc3MgYWN0aW9uLicpLAotKHUnSW5zdGFsbFVJU2VxdWVuY2UnLCB1J0NvbmRpdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJywgTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nKSwKLSh1J0xpc3RWaWV3JywgdSdUZXh0JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgdmlzaWJsZSB0ZXh0IHRvIGJlIGFzc2lnbmVkIHRvIHRoZSBpdGVtLiBPcHRpb25hbC4gSWYgdGhpcyBlbnRyeSBvciB0aGUgZW50aXJlIGNvbHVtbiBpcyBtaXNzaW5nLCB0aGUgdGV4dCBpcyB0aGUgc2FtZSBhcyB0aGUgdmFsdWUuJyksCi0odSdMaXN0VmlldycsIHUnUHJvcGVydHknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0EgbmFtZWQgcHJvcGVydHkgdG8gYmUgdGllZCB0byB0aGlzIGl0ZW0uIEFsbCB0aGUgaXRlbXMgdGllZCB0byB0aGUgc2FtZSBwcm9wZXJ0eSBiZWNvbWUgcGFydCBvZiB0aGUgc2FtZSBsaXN0dmlldy4nKSwKLSh1J0xpc3RWaWV3JywgdSdWYWx1ZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIHZhbHVlIHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhpcyBpdGVtLiBTZWxlY3RpbmcgdGhlIGxpbmUgd2lsbCBzZXQgdGhlIGFzc29jaWF0ZWQgcHJvcGVydHkgdG8gdGhpcyB2YWx1ZS4nKSwKLSh1J0xpc3RWaWV3JywgdSdPcmRlcicsIHUnTicsIDEsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgcG9zaXRpdmUgaW50ZWdlciB1c2VkIHRvIGRldGVybWluZSB0aGUgb3JkZXJpbmcgb2YgdGhlIGl0ZW1zIHdpdGhpbiBvbmUgbGlzdC4uVGhlIGludGVnZXJzIGRvIG5vdCBoYXZlIHRvIGJlIGNvbnNlY3V0aXZlLicpLAotKHUnTGlzdFZpZXcnLCB1J0JpbmFyeV8nLCB1J1knLCBOb25lLCBOb25lLCB1J0JpbmFyeScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIG5hbWUgb2YgdGhlIGljb24gdG8gYmUgZGlzcGxheWVkIHdpdGggdGhlIGljb24uIFRoZSBiaW5hcnkgaW5mb3JtYXRpb24gaXMgbG9va2VkIHVwIGZyb20gdGhlIEJpbmFyeSBUYWJsZS4nKSwKLSh1J1JhZGlvQnV0dG9uJywgdSdYJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGhvcml6b250YWwgY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgcmFkaW8gYnV0dG9uLicpLAotKHUnUmFkaW9CdXR0b24nLCB1J1knLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgdmVydGljYWwgY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgcmFkaW8gYnV0dG9uLicpLAotKHUnUmFkaW9CdXR0b24nLCB1J1dpZHRoJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHdpZHRoIG9mIHRoZSBidXR0b24uJyksCi0odSdSYWRpb0J1dHRvbicsIHUnSGVpZ2h0JywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGhlaWdodCBvZiB0aGUgYnV0dG9uLicpLAotKHUnUmFkaW9CdXR0b24nLCB1J1RleHQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSB2aXNpYmxlIHRpdGxlIHRvIGJlIGFzc2lnbmVkIHRvIHRoZSByYWRpbyBidXR0b24uJyksCi0odSdSYWRpb0J1dHRvbicsIHUnUHJvcGVydHknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0EgbmFtZWQgcHJvcGVydHkgdG8gYmUgdGllZCB0byB0aGlzIHJhZGlvIGJ1dHRvbi4gQWxsIHRoZSBidXR0b25zIHRpZWQgdG8gdGhlIHNhbWUgcHJvcGVydHkgYmVjb21lIHBhcnQgb2YgdGhlIHNhbWUgZ3JvdXAuJyksCi0odSdSYWRpb0J1dHRvbicsIHUnVmFsdWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIHZhbHVlIHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhpcyBidXR0b24uIFNlbGVjdGluZyB0aGUgYnV0dG9uIHdpbGwgc2V0IHRoZSBhc3NvY2lhdGVkIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuJyksCi0odSdSYWRpb0J1dHRvbicsIHUnT3JkZXInLCB1J04nLCAxLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIHBvc2l0aXZlIGludGVnZXIgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG9yZGVyaW5nIG9mIHRoZSBpdGVtcyB3aXRoaW4gb25lIGxpc3QuLlRoZSBpbnRlZ2VycyBkbyBub3QgaGF2ZSB0byBiZSBjb25zZWN1dGl2ZS4nKSwKLSh1J1JhZGlvQnV0dG9uJywgdSdIZWxwJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgaGVscCBzdHJpbmdzIHVzZWQgd2l0aCB0aGUgYnV0dG9uLiBUaGUgdGV4dCBpcyBvcHRpb25hbC4nKSwKLSh1J1RleHRTdHlsZScsIHUnVGV4dFN0eWxlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIHRoZSBzdHlsZS4gVGhlIHByaW1hcnkga2V5IG9mIHRoaXMgdGFibGUuIFRoaXMgbmFtZSBpcyBlbWJlZGRlZCBpbiB0aGUgdGV4dHMgdG8gaW5kaWNhdGUgYSBzdHlsZSBjaGFuZ2UuJyksCi0odSdUZXh0U3R5bGUnLCB1J0ZhY2VOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdBIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBuYW1lIG9mIHRoZSBmb250IHVzZWQuIFJlcXVpcmVkLiBUaGUgc3RyaW5nIG11c3QgYmUgYXQgbW9zdCAzMSBjaGFyYWN0ZXJzIGxvbmcuJyksCi0odSdUZXh0U3R5bGUnLCB1J1NpemUnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgc2l6ZSBvZiB0aGUgZm9udCB1c2VkLiBUaGlzIHNpemUgaXMgZ2l2ZW4gaW4gb3VyIHVuaXRzICgxLzEyIG9mIHRoZSBzeXN0ZW0gZm9udCBoZWlnaHQpLiBBc3N1bWluZyB0aGF0IHRoZSBzeXN0ZW0gZm9udCBpcyBzZXQgdG8gMTIgcG9pbnQgc2l6ZSwgdGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBwb2ludCBzaXplLicpLAotKHUnVGV4dFN0eWxlJywgdSdDb2xvcicsIHUnWScsIDAsIDE2Nzc3MjE1LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgbG9uZyBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIGNvbG9yIG9mIHRoZSBzdHJpbmcgaW4gdGhlIFJHQiBmb3JtYXQgKFJlZCwgR3JlZW4sIEJsdWUgZWFjaCAwLTI1NSwgUkdCID0gUiArIDI1NipHICsgMjU2XjIqQikuJyksCi0odSdUZXh0U3R5bGUnLCB1J1N0eWxlQml0cycsIHUnWScsIDAsIDE1LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgY29tYmluYXRpb24gb2Ygc3R5bGUgYml0cy4nKSwKLSh1J1VJVGV4dCcsIHUnVGV4dCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIGxvY2FsaXplZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcuJyksCi0odSdVSVRleHQnLCB1J0tleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSB1bmlxdWUga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgcGFydGljdWxhciBzdHJpbmcuJyksCi0odSdfVmFsaWRhdGlvbicsIHUnVGFibGUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgdGFibGUnKSwKLSh1J19WYWxpZGF0aW9uJywgdSdEZXNjcmlwdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnRGVzY3JpcHRpb24gb2YgY29sdW1uJyksCi0odSdfVmFsaWRhdGlvbicsIHUnQ29sdW1uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIGNvbHVtbicpLAotKHUnX1ZhbGlkYXRpb24nLCB1J051bGxhYmxlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdZO047QCcsIHUnV2hldGhlciB0aGUgY29sdW1uIGlzIG51bGxhYmxlJyksCi0odSdfVmFsaWRhdGlvbicsIHUnTWluVmFsdWUnLCB1J1knLCAtMjE0NzQ4MzY0NywgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdNaW5pbXVtIHZhbHVlIGFsbG93ZWQnKSwKLSh1J19WYWxpZGF0aW9uJywgdSdNYXhWYWx1ZScsIHUnWScsIC0yMTQ3NDgzNjQ3LCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J01heGltdW0gdmFsdWUgYWxsb3dlZCcpLAotKHUnX1ZhbGlkYXRpb24nLCB1J0tleVRhYmxlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3IgZm9yZWlnbiBrZXksIE5hbWUgb2YgdGFibGUgdG8gd2hpY2ggZGF0YSBtdXN0IGxpbmsnKSwKLSh1J19WYWxpZGF0aW9uJywgdSdLZXlDb2x1bW4nLCB1J1knLCAxLCAzMiwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb2x1bW4gdG8gd2hpY2ggZm9yZWlnbiBrZXkgY29ubmVjdHMnKSwKLSh1J19WYWxpZGF0aW9uJywgdSdDYXRlZ29yeScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dDtGb3JtYXR0ZWQ7VGVtcGxhdGU7Q29uZGl0aW9uO0d1aWQ7UGF0aDtWZXJzaW9uO0xhbmd1YWdlO0lkZW50aWZpZXI7QmluYXJ5O1VwcGVyQ2FzZTtMb3dlckNhc2U7RmlsZW5hbWU7UGF0aHM7QW55UGF0aDtXaWxkQ2FyZEZpbGVuYW1lO1JlZ1BhdGg7S2V5Rm9ybWF0dGVkO0N1c3RvbVNvdXJjZTtQcm9wZXJ0eTtDYWJpbmV0O1Nob3J0Y3V0O1VSTCcsIHUnU3RyaW5nIGNhdGVnb3J5JyksCi0odSdfVmFsaWRhdGlvbicsIHUnU2V0JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdTZXQgb2YgdmFsdWVzIHRoYXQgYXJlIHBlcm1pdHRlZCcpLAotKHUnQWR2dFVJU2VxdWVuY2UnLCB1J0FjdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBhY3Rpb24gdG8gaW52b2tlLCBlaXRoZXIgaW4gdGhlIGVuZ2luZSBvciB0aGUgaGFuZGxlciBETEwuJyksCi0odSdBZHZ0VUlTZXF1ZW5jZScsIHUnU2VxdWVuY2UnLCB1J1knLCAtNCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtYmVyIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc29ydCBvcmRlciBpbiB3aGljaCB0aGUgYWN0aW9ucyBhcmUgdG8gYmUgZXhlY3V0ZWQuICBMZWF2ZSBibGFuayB0byBzdXBwcmVzcyBhY3Rpb24uJyksCi0odSdBZHZ0VUlTZXF1ZW5jZScsIHUnQ29uZGl0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLCBOb25lLCB1J09wdGlvbmFsIGV4cHJlc3Npb24gd2hpY2ggc2tpcHMgdGhlIGFjdGlvbiBpZiBldmFsdWF0ZXMgdG8gZXhwRmFsc2UuSWYgdGhlIGV4cHJlc3Npb24gc3ludGF4IGlzIGludmFsaWQsIHRoZSBlbmdpbmUgd2lsbCB0ZXJtaW5hdGUsIHJldHVybmluZyBpZXNCYWRBY3Rpb25EYXRhLicpLAotKHUnQXBwSWQnLCB1J0FwcElkJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJywgTm9uZSwgTm9uZSksCi0odSdBcHBJZCcsIHUnQWN0aXZhdGVBdFN0b3JhZ2UnLCB1J1knLCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0FwcElkJywgdSdEbGxTdXJyb2dhdGUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCBOb25lKSwKLSh1J0FwcElkJywgdSdMb2NhbFNlcnZpY2UnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCBOb25lKSwKLSh1J0FwcElkJywgdSdSZW1vdGVTZXJ2ZXJOYW1lJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCBOb25lKSwKLSh1J0FwcElkJywgdSdSdW5Bc0ludGVyYWN0aXZlVXNlcicsIHUnWScsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnQXBwSWQnLCB1J1NlcnZpY2VQYXJhbWV0ZXJzJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgTm9uZSksCi0odSdGZWF0dXJlJywgdSdBdHRyaWJ1dGVzJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdScwOzE7Mjs0OzU7Njs4Ozk7MTA7MTY7MTc7MTg7MjA7MjE7MjI7MjQ7MjU7MjY7MzI7MzM7MzQ7MzY7Mzc7Mzg7NDg7NDk7NTA7NTI7NTM7NTQnLCB1J0ZlYXR1cmUgYXR0cmlidXRlcycpLAotKHUnRmVhdHVyZScsIHUnRGVzY3JpcHRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J0xvbmdlciBkZXNjcmlwdGl2ZSB0ZXh0IGRlc2NyaWJpbmcgYSB2aXNpYmxlIGZlYXR1cmUgaXRlbS4nKSwKLSh1J0ZlYXR1cmUnLCB1J1RpdGxlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdTaG9ydCB0ZXh0IGlkZW50aWZ5aW5nIGEgdmlzaWJsZSBmZWF0dXJlIGl0ZW0uJyksCi0odSdGZWF0dXJlJywgdSdGZWF0dXJlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSB1c2VkIHRvIGlkZW50aWZ5IGEgcGFydGljdWxhciBmZWF0dXJlIHJlY29yZC4nKSwKLSh1J0ZlYXR1cmUnLCB1J0RpcmVjdG9yeV8nLCB1J1knLCBOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsIDEsIHUnVXBwZXJDYXNlJywgTm9uZSwgdSdUaGUgbmFtZSBvZiB0aGUgRGlyZWN0b3J5IHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgYnkgdGhlIFVJLiBBIG5vbi1udWxsIHZhbHVlIHdpbGwgZW5hYmxlIHRoZSBicm93c2UgYnV0dG9uLicpLAotKHUnRmVhdHVyZScsIHUnTGV2ZWwnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgaW5zdGFsbCBsZXZlbCBhdCB3aGljaCByZWNvcmQgd2lsbCBiZSBpbml0aWFsbHkgc2VsZWN0ZWQuIEFuIGluc3RhbGwgbGV2ZWwgb2YgMCB3aWxsIGRpc2FibGUgYW4gaXRlbSBhbmQgcHJldmVudCBpdHMgZGlzcGxheS4nKSwKLSh1J0ZlYXR1cmUnLCB1J0Rpc3BsYXknLCB1J1knLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOdW1lcmljIHNvcnQgb3JkZXIsIHVzZWQgdG8gZm9yY2UgYSBzcGVjaWZpYyBkaXNwbGF5IG9yZGVyaW5nLicpLAotKHUnRmVhdHVyZScsIHUnRmVhdHVyZV9QYXJlbnQnLCB1J1knLCBOb25lLCBOb25lLCB1J0ZlYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J09wdGlvbmFsIGtleSBvZiBhIHBhcmVudCByZWNvcmQgaW4gdGhlIHNhbWUgdGFibGUuIElmIHRoZSBwYXJlbnQgaXMgbm90IHNlbGVjdGVkLCB0aGVuIHRoZSByZWNvcmQgd2lsbCBub3QgYmUgaW5zdGFsbGVkLiBOdWxsIGluZGljYXRlcyBhIHJvb3QgaXRlbS4nKSwKLSh1J0ZpbGUnLCB1J1NlcXVlbmNlJywgdSdOJywgMSwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2VxdWVuY2Ugd2l0aCByZXNwZWN0IHRvIHRoZSBtZWRpYSBpbWFnZXM7IG9yZGVyIG11c3QgdHJhY2sgY2FiaW5ldCBvcmRlci4nKSwKLSh1J0ZpbGUnLCB1J0F0dHJpYnV0ZXMnLCB1J1knLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJbnRlZ2VyIGNvbnRhaW5pbmcgYml0IGZsYWdzIHJlcHJlc2VudGluZyBmaWxlIGF0dHJpYnV0ZXMgKHdpdGggdGhlIGRlY2ltYWwgdmFsdWUgb2YgZWFjaCBiaXQgcG9zaXRpb24gaW4gcGFyZW50aGVzZXMpJyksCi0odSdGaWxlJywgdSdGaWxlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbiwgbXVzdCBtYXRjaCBpZGVudGlmaWVyIGluIGNhYmluZXQuICBGb3IgdW5jb21wcmVzc2VkIGZpbGVzLCB0aGlzIGZpZWxkIGlzIGlnbm9yZWQuJyksCi0odSdGaWxlJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IHJlZmVyZW5jaW5nIENvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBmaWxlLicpLAotKHUnRmlsZScsIHUnRmlsZU5hbWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJywgTm9uZSwgdSdGaWxlIG5hbWUgdXNlZCBmb3IgaW5zdGFsbGF0aW9uLCBtYXkgYmUgbG9jYWxpemVkLiAgVGhpcyBtYXkgY29udGFpbiBhICJzaG9ydCBuYW1lfGxvbmcgbmFtZSIgcGFpci4nKSwKLSh1J0ZpbGUnLCB1J0ZpbGVTaXplJywgdSdOJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTaXplIG9mIGZpbGUgaW4gYnl0ZXMgKGxvbmcgaW50ZWdlcikuJyksCi0odSdGaWxlJywgdSdMYW5ndWFnZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTGFuZ3VhZ2UnLCBOb25lLCB1J0xpc3Qgb2YgZGVjaW1hbCBsYW5ndWFnZSBJZHMsIGNvbW1hLXNlcGFyYXRlZCBpZiBtb3JlIHRoYW4gb25lLicpLAotKHUnRmlsZScsIHUnVmVyc2lvbicsIHUnWScsIE5vbmUsIE5vbmUsIHUnRmlsZScsIDEsIHUnVmVyc2lvbicsIE5vbmUsIHUnVmVyc2lvbiBzdHJpbmcgZm9yIHZlcnNpb25lZCBmaWxlczsgIEJsYW5rIGZvciB1bnZlcnNpb25lZCBmaWxlcy4nKSwKLSh1J0NsYXNzJywgdSdBdHRyaWJ1dGVzJywgdSdZJywgTm9uZSwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ2xhc3MgcmVnaXN0cmF0aW9uIGF0dHJpYnV0ZXMuJyksCi0odSdDbGFzcycsIHUnRmVhdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZlYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIEZlYXR1cmUgVGFibGUsIHNwZWNpZnlpbmcgdGhlIGZlYXR1cmUgdG8gdmFsaWRhdGUgb3IgaW5zdGFsbCBpbiBvcmRlciBmb3IgdGhlIENMU0lEIGZhY3RvcnkgdG8gYmUgb3BlcmF0aW9uYWwuJyksCi0odSdDbGFzcycsIHUnRGVzY3JpcHRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J0xvY2FsaXplZCBkZXNjcmlwdGlvbiBmb3IgdGhlIENsYXNzLicpLAotKHUnQ2xhc3MnLCB1J0FyZ3VtZW50JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J29wdGlvbmFsIGFyZ3VtZW50IGZvciBMb2NhbFNlcnZlcnMuJyksCi0odSdDbGFzcycsIHUnQXBwSWRfJywgdSdZJywgTm9uZSwgTm9uZSwgdSdBcHBJZCcsIDEsIHUnR3VpZCcsIE5vbmUsIHUnT3B0aW9uYWwgQXBwSUQgY29udGFpbmluZyBEQ09NIGluZm9ybWF0aW9uIGZvciBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uIChzdHJpbmcgR1VJRCkuJyksCi0odSdDbGFzcycsIHUnQ0xTSUQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLCBOb25lLCB1J1RoZSBDTFNJRCBvZiBhbiBPTEUgZmFjdG9yeS4nKSwKLSh1J0NsYXNzJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCBUYWJsZSwgc3BlY2lmeWluZyB0aGUgY29tcG9uZW50IGZvciB3aGljaCB0byByZXR1cm4gYSBwYXRoIHdoZW4gY2FsbGVkIHRocm91Z2ggTG9jYXRlQ29tcG9uZW50LicpLAotKHUnQ2xhc3MnLCB1J0NvbnRleHQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBudW1lcmljIHNlcnZlciBjb250ZXh0IGZvciB0aGlzIHNlcnZlci4gQ0xTQ1RYX3h4eHgnKSwKLSh1J0NsYXNzJywgdSdEZWZJbnByb2NIYW5kbGVyJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsIHUnMTsyOzMnLCB1J09wdGlvbmFsIGRlZmF1bHQgaW5wcm9jIGhhbmRsZXIuICBPbmx5IG9wdGlvbmFsbHkgcHJvdmlkZWQgaWYgQ29udGV4dD1DTFNDVFhfTE9DQUxfU0VSVkVSLiAgVHlwaWNhbGx5ICJvbGUzMi5kbGwiIG9yICJtYXBpMzIuZGxsIicpLAotKHUnQ2xhc3MnLCB1J0ZpbGVUeXBlTWFzaycsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnT3B0aW9uYWwgc3RyaW5nIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gZm9yIHRoZSBIS0NSdGhpcyBDTFNJRCkga2V5LiBJZiBtdWx0aXBsZSBwYXR0ZXJucyBleGlzdCwgdGhleSBtdXN0IGJlIGRlbGltaXRlZCBieSBhIHNlbWljb2xvbiwgYW5kIG51bWVyaWMgc3Via2V5cyB3aWxsIGJlIGdlbmVyYXRlZDogMCwxLDIuLi4nKSwKLSh1J0NsYXNzJywgdSdJY29uXycsIHUnWScsIE5vbmUsIE5vbmUsIHUnSWNvbicsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnT3B0aW9uYWwgZm9yZWlnbiBrZXkgaW50byB0aGUgSWNvbiBUYWJsZSwgc3BlY2lmeWluZyB0aGUgaWNvbiBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIENMU0lELiBXaWxsIGJlIHdyaXR0ZW4gdW5kZXIgdGhlIERlZmF1bHRJY29uIGtleS4nKSwKLSh1J0NsYXNzJywgdSdJY29uSW5kZXgnLCB1J1knLCAtMzI3NjcsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J09wdGlvbmFsIGljb24gaW5kZXguJyksCi0odSdDbGFzcycsIHUnUHJvZ0lkX0RlZmF1bHQnLCB1J1knLCBOb25lLCBOb25lLCB1J1Byb2dJZCcsIDEsIHUnVGV4dCcsIE5vbmUsIHUnT3B0aW9uYWwgUHJvZ0lkIGFzc29jaWF0ZWQgd2l0aCB0aGlzIENMU0lELicpLAotKHUnQ29tcG9uZW50JywgdSdDb25kaXRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsIE5vbmUsIHUiQSBjb25kaXRpb25hbCBzdGF0ZW1lbnQgdGhhdCB3aWxsIGRpc2FibGUgdGhpcyBjb21wb25lbnQgaWYgdGhlIHNwZWNpZmllZCBjb25kaXRpb24gZXZhbHVhdGVzIHRvIHRoZSAnVHJ1ZScgc3RhdGUuIElmIGEgY29tcG9uZW50IGlzIGRpc2FibGVkLCBpdCB3aWxsIG5vdCBiZSBpbnN0YWxsZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlICdBY3Rpb24nIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tcG9uZW50LiIpLAotKHUnQ29tcG9uZW50JywgdSdBdHRyaWJ1dGVzJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdSZW1vdGUgZXhlY3V0aW9uIG9wdGlvbiwgb25lIG9mIGlyc0VudW0nKSwKLSh1J0NvbXBvbmVudCcsIHUnQ29tcG9uZW50JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSB1c2VkIHRvIGlkZW50aWZ5IGEgcGFydGljdWxhciBjb21wb25lbnQgcmVjb3JkLicpLAotKHUnQ29tcG9uZW50JywgdSdDb21wb25lbnRJZCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsIE5vbmUsIHUnQSBzdHJpbmcgR1VJRCB1bmlxdWUgdG8gdGhpcyBjb21wb25lbnQsIHZlcnNpb24sIGFuZCBsYW5ndWFnZS4nKSwKLSh1J0NvbXBvbmVudCcsIHUnRGlyZWN0b3J5XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRGlyZWN0b3J5JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZXF1aXJlZCBrZXkgb2YgYSBEaXJlY3RvcnkgdGFibGUgcmVjb3JkLiBUaGlzIGlzIGFjdHVhbGx5IGEgcHJvcGVydHkgbmFtZSB3aG9zZSB2YWx1ZSBjb250YWlucyB0aGUgYWN0dWFsIHBhdGgsIHNldCBlaXRoZXIgYnkgdGhlIEFwcFNlYXJjaCBhY3Rpb24gb3Igd2l0aCB0aGUgZGVmYXVsdCBzZXR0aW5nIG9idGFpbmVkIGZyb20gdGhlIERpcmVjdG9yeSB0YWJsZS4nKSwKLSh1J0NvbXBvbmVudCcsIHUnS2V5UGF0aCcsIHUnWScsIE5vbmUsIE5vbmUsIHUnRmlsZTtSZWdpc3RyeTtPREJDRGF0YVNvdXJjZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRWl0aGVyIHRoZSBwcmltYXJ5IGtleSBpbnRvIHRoZSBGaWxlIHRhYmxlLCBSZWdpc3RyeSB0YWJsZSwgb3IgT0RCQ0RhdGFTb3VyY2UgdGFibGUuIFRoaXMgZXh0cmFjdCBwYXRoIGlzIHN0b3JlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgaW5zdGFsbGVkLCBhbmQgaXMgdXNlZCB0byBkZXRlY3QgdGhlIHByZXNlbmNlIG9mIHRoZSBjb21wb25lbnQgYW5kIHRvIHJldHVybiB0aGUgcGF0aCB0byBpdC4nKSwKLSh1J1Byb2dJZCcsIHUnRGVzY3JpcHRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J0xvY2FsaXplZCBkZXNjcmlwdGlvbiBmb3IgdGhlIFByb2dyYW0gaWRlbnRpZmllci4nKSwKLSh1J1Byb2dJZCcsIHUnSWNvbl8nLCB1J1knLCBOb25lLCBOb25lLCB1J0ljb24nLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J09wdGlvbmFsIGZvcmVpZ24ga2V5IGludG8gdGhlIEljb24gVGFibGUsIHNwZWNpZnlpbmcgdGhlIGljb24gZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBQcm9nSWQuIFdpbGwgYmUgd3JpdHRlbiB1bmRlciB0aGUgRGVmYXVsdEljb24ga2V5LicpLAotKHUnUHJvZ0lkJywgdSdJY29uSW5kZXgnLCB1J1knLCAtMzI3NjcsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J09wdGlvbmFsIGljb24gaW5kZXguJyksCi0odSdQcm9nSWQnLCB1J1Byb2dJZCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIFByb2dyYW0gSWRlbnRpZmllci4gUHJpbWFyeSBrZXkuJyksCi0odSdQcm9nSWQnLCB1J0NsYXNzXycsIHUnWScsIE5vbmUsIE5vbmUsIHUnQ2xhc3MnLCAxLCB1J0d1aWQnLCBOb25lLCB1J1RoZSBDTFNJRCBvZiBhbiBPTEUgZmFjdG9yeSBjb3JyZXNwb25kaW5nIHRvIHRoZSBQcm9nSWQuJyksCi0odSdQcm9nSWQnLCB1J1Byb2dJZF9QYXJlbnQnLCB1J1knLCBOb25lLCBOb25lLCB1J1Byb2dJZCcsIDEsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIFBhcmVudCBQcm9ncmFtIElkZW50aWZpZXIuIElmIHNwZWNpZmllZCwgdGhlIFByb2dJZCBjb2x1bW4gYmVjb21lcyBhIHZlcnNpb24gaW5kZXBlbmRlbnQgcHJvZyBpZC4nKSwKLSh1J0NvbXBMb2NhdG9yJywgdSdUeXBlJywgdSdZJywgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIGJvb2xlYW4gdmFsdWUgdGhhdCBkZXRlcm1pbmVzIGlmIHRoZSByZWdpc3RyeSB2YWx1ZSBpcyBhIGZpbGVuYW1lIG9yIGEgZGlyZWN0b3J5IGxvY2F0aW9uLicpLAotKHUnQ29tcExvY2F0b3InLCB1J1NpZ25hdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSB0YWJsZSBrZXkuIFRoZSBTaWduYXR1cmVfIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUgYW5kIGlzIGFsc28gdGhlIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUgdGFibGUuJyksCi0odSdDb21wTG9jYXRvcicsIHUnQ29tcG9uZW50SWQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLCBOb25lLCB1J0Egc3RyaW5nIEdVSUQgdW5pcXVlIHRvIHRoaXMgY29tcG9uZW50LCB2ZXJzaW9uLCBhbmQgbGFuZ3VhZ2UuJyksCi0odSdDb21wbHVzJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IHJlZmVyZW5jaW5nIENvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBDb21QbHVzIGNvbXBvbmVudC4nKSwKLSh1J0NvbXBsdXMnLCB1J0V4cFR5cGUnLCB1J1knLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb21QbHVzIGNvbXBvbmVudCBhdHRyaWJ1dGVzLicpLAotKHUnRGlyZWN0b3J5JywgdSdEaXJlY3RvcnknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1VuaXF1ZSBpZGVudGlmaWVyIGZvciBkaXJlY3RvcnkgZW50cnksIHByaW1hcnkga2V5LiBJZiBhIHByb3BlcnR5IGJ5IHRoaXMgbmFtZSBpcyBkZWZpbmVkLCBpdCBjb250YWlucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSBkaXJlY3RvcnkuJyksCi0odSdEaXJlY3RvcnknLCB1J0RlZmF1bHREaXInLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0RlZmF1bHREaXInLCBOb25lLCB1IlRoZSBkZWZhdWx0IHN1Yi1wYXRoIHVuZGVyIHBhcmVudCdzIHBhdGguIiksCi0odSdEaXJlY3RvcnknLCB1J0RpcmVjdG9yeV9QYXJlbnQnLCB1J1knLCBOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUmVmZXJlbmNlIHRvIHRoZSBlbnRyeSBpbiB0aGlzIHRhYmxlIHNwZWNpZnlpbmcgdGhlIGRlZmF1bHQgcGFyZW50IGRpcmVjdG9yeS4gQSByZWNvcmQgcGFyZW50ZWQgdG8gaXRzZWxmIG9yIHdpdGggYSBOdWxsIHBhcmVudCByZXByZXNlbnRzIGEgcm9vdCBvZiB0aGUgaW5zdGFsbCB0cmVlLicpLAotKHUnQ3JlYXRlRm9sZGVyJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZS4nKSwKLSh1J0NyZWF0ZUZvbGRlcicsIHUnRGlyZWN0b3J5XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRGlyZWN0b3J5JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgY291bGQgYmUgZm9yZWlnbiBrZXkgaW50byB0aGUgRGlyZWN0b3J5IHRhYmxlLicpLAotKHUnQ3VzdG9tQWN0aW9uJywgdSdUeXBlJywgdSdOJywgMSwgMTYzODMsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIG51bWVyaWMgY3VzdG9tIGFjdGlvbiB0eXBlLCBjb25zaXN0aW5nIG9mIHNvdXJjZSBsb2NhdGlvbiwgY29kZSB0eXBlLCBlbnRyeSwgb3B0aW9uIGZsYWdzLicpLAotKHUnQ3VzdG9tQWN0aW9uJywgdSdBY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBuYW1lIG9mIGFjdGlvbiwgbm9ybWFsbHkgYXBwZWFycyBpbiBzZXF1ZW5jZSB0YWJsZSB1bmxlc3MgcHJpdmF0ZSB1c2UuJyksCi0odSdDdXN0b21BY3Rpb24nLCB1J1NvdXJjZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ3VzdG9tU291cmNlJywgTm9uZSwgdSdUaGUgdGFibGUgcmVmZXJlbmNlIG9mIHRoZSBzb3VyY2Ugb2YgdGhlIGNvZGUuJyksCi0odSdDdXN0b21BY3Rpb24nLCB1J1RhcmdldCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdFeGNlY3V0aW9uIHBhcmFtZXRlciwgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiBjdXN0b20gYWN0aW9uJyksCi0odSdEckxvY2F0b3InLCB1J1NpZ25hdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBTaWduYXR1cmVfIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUgYW5kIGlzIGFsc28gdGhlIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUgdGFibGUuJyksCi0odSdEckxvY2F0b3InLCB1J1BhdGgnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0FueVBhdGgnLCBOb25lLCB1J1RoZSBwYXRoIG9uIHRoZSB1c2VyIHN5c3RlbS4gVGhpcyBpcyBhIGVpdGhlciBhIHN1YnBhdGggYmVsb3cgdGhlIHZhbHVlIG9mIHRoZSBQYXJlbnQgb3IgYSBmdWxsIHBhdGguIFRoZSBwYXRoIG1heSBjb250YWluIHByb3BlcnRpZXMgZW5jbG9zZWQgd2l0aGluIFsgXSB0aGF0IHdpbGwgYmUgZXhwYW5kZWQuJyksCi0odSdEckxvY2F0b3InLCB1J0RlcHRoJywgdSdZJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGRlcHRoIGJlbG93IHRoZSBwYXRoIHRvIHdoaWNoIHRoZSBTaWduYXR1cmVfIGlzIHJlY3Vyc2l2ZWx5IHNlYXJjaGVkLiBJZiBhYnNlbnQsIHRoZSBkZXB0aCBpcyBhc3N1bWVkIHRvIGJlIDAuJyksCi0odSdEckxvY2F0b3InLCB1J1BhcmVudCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIHBhcmVudCBmaWxlIHNpZ25hdHVyZS4gSXQgaXMgYWxzbyBhIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUgdGFibGUuIElmIG51bGwgYW5kIHRoZSBQYXRoIGNvbHVtbiBkb2VzIG5vdCBleHBhbmQgdG8gYSBmdWxsIHBhdGgsIHRoZW4gYWxsIHRoZSBmaXhlZCBkcml2ZXMgb2YgdGhlIHVzZXIgc3lzdGVtIGFyZSBzZWFyY2hlZCB1c2luZyB0aGUgUGF0aC4nKSwKLSh1J0R1cGxpY2F0ZUZpbGUnLCB1J0ZpbGVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSByZWZlcmVuY2luZyB0aGUgc291cmNlIGZpbGUgdG8gYmUgZHVwbGljYXRlZC4nKSwKLSh1J0R1cGxpY2F0ZUZpbGUnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgcmVmZXJlbmNpbmcgQ29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGR1cGxpY2F0ZSBmaWxlLicpLAotKHUnRHVwbGljYXRlRmlsZScsIHUnRGVzdEZvbGRlcicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBhIHByb3BlcnR5IHdob3NlIHZhbHVlIGlzIGFzc3VtZWQgdG8gcmVzb2x2ZSB0byB0aGUgZnVsbCBwYXRobmFtZSB0byBhIGRlc3RpbmF0aW9uIGZvbGRlci4nKSwKLSh1J0R1cGxpY2F0ZUZpbGUnLCB1J0Rlc3ROYW1lJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsIE5vbmUsIHUnRmlsZW5hbWUgdG8gYmUgZ2l2ZW4gdG8gdGhlIGR1cGxpY2F0ZSBmaWxlLicpLAotKHUnRHVwbGljYXRlRmlsZScsIHUnRmlsZUtleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXkgdXNlZCB0byBpZGVudGlmeSBhIHBhcnRpY3VsYXIgZmlsZSBlbnRyeScpLAotKHUnRW52aXJvbm1lbnQnLCB1J05hbWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudGFsIHZhbHVlLicpLAotKHUnRW52aXJvbm1lbnQnLCB1J1ZhbHVlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSB2YWx1ZSB0byBzZXQgaW4gdGhlIGVudmlyb25tZW50YWwgc2V0dGluZ3MuJyksCi0odSdFbnZpcm9ubWVudCcsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgcmVmZXJlbmNpbmcgY29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGluc3RhbGxpbmcgb2YgdGhlIGVudmlyb25tZW50YWwgdmFsdWUuJyksCi0odSdFbnZpcm9ubWVudCcsIHUnRW52aXJvbm1lbnQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1VuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZW52aXJvbm1lbnRhbCB2YXJpYWJsZSBzZXR0aW5nJyksCi0odSdFcnJvcicsIHUnRXJyb3InLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJbnRlZ2VyIGVycm9yIG51bWJlciwgb2J0YWluZWQgZnJvbSBoZWFkZXIgZmlsZSBJRXJyb3IoLi4uKSBtYWNyb3MuJyksCi0odSdFcnJvcicsIHUnTWVzc2FnZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGVtcGxhdGUnLCBOb25lLCB1J0Vycm9yIGZvcm1hdHRpbmcgdGVtcGxhdGUsIG9idGFpbmVkIGZyb20gdXNlciBlZC4gb3IgbG9jYWxpemVycy4nKSwKLSh1J0V4dGVuc2lvbicsIHUnRmVhdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZlYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIEZlYXR1cmUgVGFibGUsIHNwZWNpZnlpbmcgdGhlIGZlYXR1cmUgdG8gdmFsaWRhdGUgb3IgaW5zdGFsbCBpbiBvcmRlciBmb3IgdGhlIENMU0lEIGZhY3RvcnkgdG8gYmUgb3BlcmF0aW9uYWwuJyksCi0odSdFeHRlbnNpb24nLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUmVxdWlyZWQgZm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IFRhYmxlLCBzcGVjaWZ5aW5nIHRoZSBjb21wb25lbnQgZm9yIHdoaWNoIHRvIHJldHVybiBhIHBhdGggd2hlbiBjYWxsZWQgdGhyb3VnaCBMb2NhdGVDb21wb25lbnQuJyksCi0odSdFeHRlbnNpb24nLCB1J0V4dGVuc2lvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIGV4dGVuc2lvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHRhYmxlIHJvdy4nKSwKLSh1J0V4dGVuc2lvbicsIHUnTUlNRV8nLCB1J1knLCBOb25lLCBOb25lLCB1J01JTUUnLCAxLCB1J1RleHQnLCBOb25lLCB1J09wdGlvbmFsIENvbnRleHQgaWRlbnRpZmllciwgdHlwaWNhbGx5ICJ0eXBlL2Zvcm1hdCIgYXNzb2NpYXRlZCB3aXRoIHRoZSBleHRlbnNpb24nKSwKLSh1J0V4dGVuc2lvbicsIHUnUHJvZ0lkXycsIHUnWScsIE5vbmUsIE5vbmUsIHUnUHJvZ0lkJywgMSwgdSdUZXh0JywgTm9uZSwgdSdPcHRpb25hbCBQcm9nSWQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXh0ZW5zaW9uLicpLAotKHUnTUlNRScsIHUnQ0xTSUQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLCBOb25lLCB1J09wdGlvbmFsIGFzc29jaWF0ZWQgQ0xTSUQuJyksCi0odSdNSU1FJywgdSdDb250ZW50VHlwZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnUHJpbWFyeSBrZXkuIENvbnRleHQgaWRlbnRpZmllciwgdHlwaWNhbGx5ICJ0eXBlL2Zvcm1hdCIuJyksCi0odSdNSU1FJywgdSdFeHRlbnNpb25fJywgdSdOJywgTm9uZSwgTm9uZSwgdSdFeHRlbnNpb24nLCAxLCB1J1RleHQnLCBOb25lLCB1J09wdGlvbmFsIGFzc29jaWF0ZWQgZXh0ZW5zaW9uICh3aXRob3V0IGRvdCknKSwKLSh1J0ZlYXR1cmVDb21wb25lbnRzJywgdSdGZWF0dXJlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byBGZWF0dXJlIHRhYmxlLicpLAotKHUnRmVhdHVyZUNvbXBvbmVudHMnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byBDb21wb25lbnQgdGFibGUuJyksCi0odSdGaWxlU0ZQQ2F0YWxvZycsIHUnRmlsZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZpbGUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjYXRhbG9nJyksCi0odSdGaWxlU0ZQQ2F0YWxvZycsIHUnU0ZQQ2F0YWxvZ18nLCB1J04nLCBOb25lLCBOb25lLCB1J1NGUENhdGFsb2cnLCAxLCB1J0ZpbGVuYW1lJywgTm9uZSwgdSdDYXRhbG9nIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZScpLAotKHUnU0ZQQ2F0YWxvZycsIHUnU0ZQQ2F0YWxvZycsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLCBOb25lLCB1J0ZpbGUgbmFtZSBmb3IgdGhlIGNhdGFsb2cuJyksCi0odSdTRlBDYXRhbG9nJywgdSdDYXRhbG9nJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdCaW5hcnknLCBOb25lLCB1J1NGUCBDYXRhbG9nJyksCi0odSdTRlBDYXRhbG9nJywgdSdEZXBlbmRlbmN5JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1BhcmVudCBjYXRhbG9nIC0gb25seSB1c2VkIGJ5IFNGUCcpLAotKHUnRm9udCcsIHUnRmlsZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZpbGUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBmb3JlaWduIGtleSBpbnRvIEZpbGUgdGFibGUgcmVmZXJlbmNpbmcgZm9udCBmaWxlLicpLAotKHUnRm9udCcsIHUnRm9udFRpdGxlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdGb250IG5hbWUuJyksCi0odSdJbmlGaWxlJywgdSdBY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1JzA7MTszJywgdSdUaGUgdHlwZSBvZiBtb2RpZmljYXRpb24gdG8gYmUgbWFkZSwgb25lIG9mIGlpZkVudW0nKSwKLSh1J0luaUZpbGUnLCB1J1ZhbHVlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSB2YWx1ZSB0byBiZSB3cml0dGVuLicpLAotKHUnSW5pRmlsZScsIHUnS2V5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSAuSU5JIGZpbGUga2V5IGJlbG93IFNlY3Rpb24uJyksCi0odSdJbmlGaWxlJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZSByZWZlcmVuY2luZyBjb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgaW5zdGFsbGluZyBvZiB0aGUgLklOSSB2YWx1ZS4nKSwKLSh1J0luaUZpbGUnLCB1J0ZpbGVOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsIE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBuYW1lIGluIHdoaWNoIHRvIHdyaXRlIHRoZSBpbmZvcm1hdGlvbicpLAotKHUnSW5pRmlsZScsIHUnSW5pRmlsZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uJyksCi0odSdJbmlGaWxlJywgdSdEaXJQcm9wZXJ0eScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRGlyZWN0b3J5IHRhYmxlIGRlbm90aW5nIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIC5JTkkgZmlsZSBpcy4nKSwKLSh1J0luaUZpbGUnLCB1J1NlY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBTZWN0aW9uLicpLAotKHUnSW5pTG9jYXRvcicsIHUnVHlwZScsIHUnWScsIDAsIDIsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQW4gaW50ZWdlciB2YWx1ZSB0aGF0IGRldGVybWluZXMgaWYgdGhlIC5JTkkgdmFsdWUgcmVhZCBpcyBhIGZpbGVuYW1lIG9yIGEgZGlyZWN0b3J5IGxvY2F0aW9uIG9yIHRvIGJlIHVzZWQgYXMgaXMgdy9vIGludGVycHJldGF0aW9uLicpLAotKHUnSW5pTG9jYXRvcicsIHUnS2V5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdLZXkgdmFsdWUgKGZvbGxvd2VkIGJ5IGFuIGVxdWFscyBzaWduIGluIElOSSBmaWxlKS4nKSwKLSh1J0luaUxvY2F0b3InLCB1J1NpZ25hdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSB0YWJsZSBrZXkuIFRoZSBTaWduYXR1cmVfIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUgYW5kIGlzIGFsc28gdGhlIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUgdGFibGUuJyksCi0odSdJbmlMb2NhdG9yJywgdSdGaWxlTmFtZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLCBOb25lLCB1J1RoZSAuSU5JIGZpbGUgbmFtZS4nKSwKLSh1J0luaUxvY2F0b3InLCB1J1NlY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1NlY3Rpb24gbmFtZSB3aXRoaW4gaW4gZmlsZSAod2l0aGluIHNxdWFyZSBicmFja2V0cyBpbiBJTkkgZmlsZSkuJyksCi0odSdJbmlMb2NhdG9yJywgdSdGaWVsZCcsIHUnWScsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBmaWVsZCBpbiB0aGUgLklOSSBsaW5lLiBJZiBGaWVsZCBpcyBudWxsIG9yIDAgdGhlIGVudGlyZSBsaW5lIGlzIHJlYWQuJyksCi0odSdJc29sYXRlZENvbXBvbmVudCcsIHUnQ29tcG9uZW50X0FwcGxpY2F0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0tleSB0byBDb21wb25lbnQgdGFibGUgaXRlbSBmb3IgYXBwbGljYXRpb24nKSwKLSh1J0lzb2xhdGVkQ29tcG9uZW50JywgdSdDb21wb25lbnRfU2hhcmVkJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0tleSB0byBDb21wb25lbnQgdGFibGUgaXRlbSB0byBiZSBpc29sYXRlZCcpLAotKHUnTGF1bmNoQ29uZGl0aW9uJywgdSdDb25kaXRpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsIE5vbmUsIHUnRXhwcmVzc2lvbiB3aGljaCBtdXN0IGV2YWx1YXRlIHRvIFRSVUUgaW4gb3JkZXIgZm9yIGluc3RhbGwgdG8gY29tbWVuY2UuJyksCi0odSdMYXVuY2hDb25kaXRpb24nLCB1J0Rlc2NyaXB0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J0xvY2FsaXphYmxlIHRleHQgdG8gZGlzcGxheSB3aGVuIGNvbmRpdGlvbiBmYWlscyBhbmQgaW5zdGFsbCBtdXN0IGFib3J0LicpLAotKHUnTG9ja1Blcm1pc3Npb25zJywgdSdUYWJsZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIHUnRGlyZWN0b3J5O0ZpbGU7UmVnaXN0cnknLCB1J1JlZmVyZW5jZSB0byBhbm90aGVyIHRhYmxlIG5hbWUnKSwKLSh1J0xvY2tQZXJtaXNzaW9ucycsIHUnRG9tYWluJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J0RvbWFpbiBuYW1lIGZvciB1c2VyIHdob3NlIHBlcm1pc3Npb25zIGFyZSBiZWluZyBzZXQuICh1c3VhbGx5IGEgcHJvcGVydHkpJyksCi0odSdMb2NrUGVybWlzc2lvbnMnLCB1J0xvY2tPYmplY3QnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gUmVnaXN0cnkgb3IgRmlsZSB0YWJsZScpLAotKHUnTG9ja1Blcm1pc3Npb25zJywgdSdQZXJtaXNzaW9uJywgdSdZJywgLTIxNDc0ODM2NDcsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUGVybWlzc2lvbiBBY2Nlc3MgbWFzay4gIEZ1bGwgQ29udHJvbCA9IDI2ODQzNTQ1NiAoR0VORVJJQ19BTEwgPSAweDEwMDAwMDAwKScpLAotKHUnTG9ja1Blcm1pc3Npb25zJywgdSdVc2VyJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1VzZXIgZm9yIHBlcm1pc3Npb25zIHRvIGJlIHNldC4gICh1c3VhbGx5IGEgcHJvcGVydHkpJyksCi0odSdNZWRpYScsIHUnU291cmNlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdQcm9wZXJ0eScsIE5vbmUsIHUnVGhlIHByb3BlcnR5IGRlZmluaW5nIHRoZSBsb2NhdGlvbiBvZiB0aGUgY2FiaW5ldCBmaWxlLicpLAotKHUnTWVkaWEnLCB1J0NhYmluZXQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NhYmluZXQnLCBOb25lLCB1J0lmIHNvbWUgb3IgYWxsIG9mIHRoZSBmaWxlcyBzdG9yZWQgb24gdGhlIG1lZGlhIGFyZSBjb21wcmVzc2VkIGluIGEgY2FiaW5ldCwgdGhlIG5hbWUgb2YgdGhhdCBjYWJpbmV0LicpLAotKHUnTWVkaWEnLCB1J0Rpc2tJZCcsIHUnTicsIDEsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ByaW1hcnkga2V5LCBpbnRlZ2VyIHRvIGRldGVybWluZSBzb3J0IG9yZGVyIGZvciB0YWJsZS4nKSwKLSh1J01lZGlhJywgdSdEaXNrUHJvbXB0JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdEaXNrIG5hbWU6IHRoZSB2aXNpYmxlIHRleHQgYWN0dWFsbHkgcHJpbnRlZCBvbiB0aGUgZGlzay4gIFRoaXMgd2lsbCBiZSB1c2VkIHRvIHByb21wdCB0aGUgdXNlciB3aGVuIHRoaXMgZGlzayBuZWVkcyB0byBiZSBpbnNlcnRlZC4nKSwKLSh1J01lZGlhJywgdSdMYXN0U2VxdWVuY2UnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlIHNlcXVlbmNlIG51bWJlciBmb3IgdGhlIGxhc3QgZmlsZSBmb3IgdGhpcyBtZWRpYS4nKSwKLSh1J01lZGlhJywgdSdWb2x1bWVMYWJlbCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIGxhYmVsIGF0dHJpYnV0ZWQgdG8gdGhlIHZvbHVtZS4nKSwKLSh1J01vZHVsZUNvbXBvbmVudHMnLCB1J0NvbXBvbmVudCcsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdDb21wb25lbnQgY29udGFpbmVkIGluIHRoZSBtb2R1bGUuJyksCi0odSdNb2R1bGVDb21wb25lbnRzJywgdSdMYW5ndWFnZScsIHUnTicsIE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywgMiwgTm9uZSwgTm9uZSwgdSdEZWZhdWx0IGxhbmd1YWdlIElEIGZvciBtb2R1bGUgKG1heSBiZSBjaGFuZ2VkIGJ5IHRyYW5zZm9ybSkuJyksCi0odSdNb2R1bGVDb21wb25lbnRzJywgdSdNb2R1bGVJRCcsIHUnTicsIE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdNb2R1bGUgY29udGFpbmluZyB0aGUgY29tcG9uZW50LicpLAotKHUnTW9kdWxlU2lnbmF0dXJlJywgdSdMYW5ndWFnZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRGVmYXVsdCBkZWNpbWFsIGxhbmd1YWdlIG9mIG1vZHVsZS4nKSwKLSh1J01vZHVsZVNpZ25hdHVyZScsIHUnVmVyc2lvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVyc2lvbicsIE5vbmUsIHUnVmVyc2lvbiBvZiB0aGUgbW9kdWxlLicpLAotKHUnTW9kdWxlU2lnbmF0dXJlJywgdSdNb2R1bGVJRCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTW9kdWxlIGlkZW50aWZpZXIgKFN0cmluZy5HVUlEKS4nKSwKLSh1J01vZHVsZURlcGVuZGVuY3knLCB1J01vZHVsZUlEJywgdSdOJywgTm9uZSwgTm9uZSwgdSdNb2R1bGVTaWduYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J01vZHVsZSByZXF1aXJpbmcgdGhlIGRlcGVuZGVuY3kuJyksCi0odSdNb2R1bGVEZXBlbmRlbmN5JywgdSdNb2R1bGVMYW5ndWFnZScsIHUnTicsIE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywgMiwgTm9uZSwgTm9uZSwgdSdMYW5ndWFnZSBvZiBtb2R1bGUgcmVxdWlyaW5nIHRoZSBkZXBlbmRlbmN5LicpLAotKHUnTW9kdWxlRGVwZW5kZW5jeScsIHUnUmVxdWlyZWRJRCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU3RyaW5nLkdVSUQgb2YgcmVxdWlyZWQgbW9kdWxlLicpLAotKHUnTW9kdWxlRGVwZW5kZW5jeScsIHUnUmVxdWlyZWRMYW5ndWFnZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTGFuZ3VhZ2VJRCBvZiB0aGUgcmVxdWlyZWQgbW9kdWxlLicpLAotKHUnTW9kdWxlRGVwZW5kZW5jeScsIHUnUmVxdWlyZWRWZXJzaW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWZXJzaW9uJywgTm9uZSwgdSdWZXJzaW9uIG9mIHRoZSByZXF1aXJlZCB2ZXJzaW9uLicpLAotKHUnTW9kdWxlRXhjbHVzaW9uJywgdSdNb2R1bGVJRCcsIHUnTicsIE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdTdHJpbmcuR1VJRCBvZiBtb2R1bGUgd2l0aCBleGNsdXNpb24gcmVxdWlyZW1lbnQuJyksCi0odSdNb2R1bGVFeGNsdXNpb24nLCB1J01vZHVsZUxhbmd1YWdlJywgdSdOJywgTm9uZSwgTm9uZSwgdSdNb2R1bGVTaWduYXR1cmUnLCAyLCBOb25lLCBOb25lLCB1J0xhbmd1YWdlSUQgb2YgbW9kdWxlIHdpdGggZXhjbHVzaW9uIHJlcXVpcmVtZW50LicpLAotKHUnTW9kdWxlRXhjbHVzaW9uJywgdSdFeGNsdWRlZElEJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTdHJpbmcuR1VJRCBvZiBleGNsdWRlZCBtb2R1bGUuJyksCi0odSdNb2R1bGVFeGNsdXNpb24nLCB1J0V4Y2x1ZGVkTGFuZ3VhZ2UnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0xhbmd1YWdlIG9mIGV4Y2x1ZGVkIG1vZHVsZS4nKSwKLSh1J01vZHVsZUV4Y2x1c2lvbicsIHUnRXhjbHVkZWRNYXhWZXJzaW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWZXJzaW9uJywgTm9uZSwgdSdNYXhpbXVtIHZlcnNpb24gb2YgZXhjbHVkZWQgbW9kdWxlLicpLAotKHUnTW9kdWxlRXhjbHVzaW9uJywgdSdFeGNsdWRlZE1pblZlcnNpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZlcnNpb24nLCBOb25lLCB1J01pbmltdW0gdmVyc2lvbiBvZiBleGNsdWRlZCBtb2R1bGUuJyksCi0odSdNb3ZlRmlsZScsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdJZiB0aGlzIGNvbXBvbmVudCBpcyBub3QgInNlbGVjdGVkIiBmb3IgaW5zdGFsbGF0aW9uIG9yIHJlbW92YWwsIG5vIGFjdGlvbiB3aWxsIGJlIHRha2VuIG9uIHRoZSBhc3NvY2lhdGVkIE1vdmVGaWxlIGVudHJ5JyksCi0odSdNb3ZlRmlsZScsIHUnRGVzdEZvbGRlcicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBhIHByb3BlcnR5IHdob3NlIHZhbHVlIGlzIGFzc3VtZWQgdG8gcmVzb2x2ZSB0byB0aGUgZnVsbCBwYXRoIHRvIHRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnknKSwKLSh1J01vdmVGaWxlJywgdSdEZXN0TmFtZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLCBOb25lLCB1J05hbWUgdG8gYmUgZ2l2ZW4gdG8gdGhlIG9yaWdpbmFsIGZpbGUgYWZ0ZXIgaXQgaXMgbW92ZWQgb3IgY29waWVkLiAgSWYgYmxhbmssIHRoZSBkZXN0aW5hdGlvbiBmaWxlIHdpbGwgYmUgZ2l2ZW4gdGhlIHNhbWUgbmFtZSBhcyB0aGUgc291cmNlIGZpbGUnKSwKLSh1J01vdmVGaWxlJywgdSdGaWxlS2V5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgYSBwYXJ0aWN1bGFyIE1vdmVGaWxlIHJlY29yZCcpLAotKHUnTW92ZUZpbGUnLCB1J09wdGlvbnMnLCB1J04nLCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ludGVnZXIgdmFsdWUgc3BlY2lmeWluZyB0aGUgTW92ZUZpbGUgb3BlcmF0aW5nIG1vZGUsIG9uZSBvZiBpbWZvRW51bScpLAotKHUnTW92ZUZpbGUnLCB1J1NvdXJjZUZvbGRlcicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBhIHByb3BlcnR5IHdob3NlIHZhbHVlIGlzIGFzc3VtZWQgdG8gcmVzb2x2ZSB0byB0aGUgZnVsbCBwYXRoIHRvIHRoZSBzb3VyY2UgZGlyZWN0b3J5JyksCi0odSdNb3ZlRmlsZScsIHUnU291cmNlTmFtZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUiTmFtZSBvZiB0aGUgc291cmNlIGZpbGUocykgdG8gYmUgbW92ZWQgb3IgY29waWVkLiAgQ2FuIGNvbnRhaW4gdGhlICcqJyBvciAnPycgd2lsZGNhcmRzLiIpLAotKHUnTXNpQXNzZW1ibHknLCB1J0F0dHJpYnV0ZXMnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Fzc2VtYmx5IGF0dHJpYnV0ZXMnKSwKLSh1J01zaUFzc2VtYmx5JywgdSdGZWF0dXJlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byBGZWF0dXJlIHRhYmxlLicpLAotKHUnTXNpQXNzZW1ibHknLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byBDb21wb25lbnQgdGFibGUuJyksCi0odSdNc2lBc3NlbWJseScsIHUnRmlsZV9BcHBsaWNhdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIHUnRmlsZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byBGaWxlIHRhYmxlLCBkZW5vdGluZyB0aGUgYXBwbGljYXRpb24gY29udGV4dCBmb3IgcHJpdmF0ZSBhc3NlbWJsaWVzLiBOdWxsIGZvciBnbG9iYWwgYXNzZW1ibGllcy4nKSwKLSh1J01zaUFzc2VtYmx5JywgdSdGaWxlX01hbmlmZXN0JywgdSdZJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBGaWxlIHRhYmxlIGRlbm90aW5nIHRoZSBtYW5pZmVzdCBmaWxlIGZvciB0aGUgYXNzZW1ibHkuJyksCi0odSdNc2lBc3NlbWJseU5hbWUnLCB1J05hbWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSBuYW1lIHBhcnQgb2YgdGhlIG5hbWUtdmFsdWUgcGFpcnMgZm9yIHRoZSBhc3NlbWJseSBuYW1lLicpLAotKHUnTXNpQXNzZW1ibHlOYW1lJywgdSdWYWx1ZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIHZhbHVlIHBhcnQgb2YgdGhlIG5hbWUtdmFsdWUgcGFpcnMgZm9yIHRoZSBhc3NlbWJseSBuYW1lLicpLAotKHUnTXNpQXNzZW1ibHlOYW1lJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gQ29tcG9uZW50IHRhYmxlLicpLAotKHUnTXNpRGlnaXRhbENlcnRpZmljYXRlJywgdSdDZXJ0RGF0YScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JywgTm9uZSwgdSdBIGNlcnRpZmljYXRlIGNvbnRleHQgYmxvYiBmb3IgYSBzaWduZXIgY2VydGlmaWNhdGUnKSwKLSh1J01zaURpZ2l0YWxDZXJ0aWZpY2F0ZScsIHUnRGlnaXRhbENlcnRpZmljYXRlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcm93JyksCi0odSdNc2lEaWdpdGFsU2lnbmF0dXJlJywgdSdUYWJsZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTWVkaWEnLCB1J1JlZmVyZW5jZSB0byBhbm90aGVyIHRhYmxlIG5hbWUgKG9ubHkgTWVkaWEgdGFibGUgaXMgc3VwcG9ydGVkKScpLAotKHUnTXNpRGlnaXRhbFNpZ25hdHVyZScsIHUnRGlnaXRhbENlcnRpZmljYXRlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnTXNpRGlnaXRhbENlcnRpZmljYXRlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSB0byBNc2lEaWdpdGFsQ2VydGlmaWNhdGUgdGFibGUgaWRlbnRpZnlpbmcgdGhlIHNpZ25lciBjZXJ0aWZpY2F0ZScpLAotKHUnTXNpRGlnaXRhbFNpZ25hdHVyZScsIHUnSGFzaCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JywgTm9uZSwgdSdUaGUgZW5jb2RlZCBoYXNoIGJsb2IgZnJvbSB0aGUgZGlnaXRhbCBzaWduYXR1cmUnKSwKLSh1J01zaURpZ2l0YWxTaWduYXR1cmUnLCB1J1NpZ25PYmplY3QnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J0ZvcmVpZ24ga2V5IHRvIE1lZGlhIHRhYmxlJyksCi0odSdNc2lGaWxlSGFzaCcsIHUnRmlsZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZpbGUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBmb3JlaWduIGtleSBpbnRvIEZpbGUgdGFibGUgcmVmZXJlbmNpbmcgZmlsZSB3aXRoIHRoaXMgaGFzaCcpLAotKHUnTXNpRmlsZUhhc2gnLCB1J09wdGlvbnMnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWYXJpb3VzIG9wdGlvbnMgYW5kIGF0dHJpYnV0ZXMgZm9yIHRoaXMgaGFzaC4nKSwKLSh1J01zaUZpbGVIYXNoJywgdSdIYXNoUGFydDEnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NpemUgb2YgZmlsZSBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS4nKSwKLSh1J01zaUZpbGVIYXNoJywgdSdIYXNoUGFydDInLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NpemUgb2YgZmlsZSBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS4nKSwKLSh1J01zaUZpbGVIYXNoJywgdSdIYXNoUGFydDMnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NpemUgb2YgZmlsZSBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS4nKSwKLSh1J01zaUZpbGVIYXNoJywgdSdIYXNoUGFydDQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NpemUgb2YgZmlsZSBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS4nKSwKLSh1J01zaVBhdGNoSGVhZGVycycsIHUnU3RyZWFtUmVmJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleS4gQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJvdy4nKSwKLSh1J01zaVBhdGNoSGVhZGVycycsIHUnSGVhZGVyJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdCaW5hcnknLCBOb25lLCB1J0JpbmFyeSBzdHJlYW0uIFRoZSBwYXRjaCBoZWFkZXIsIHVzZWQgZm9yIHBhdGNoIHZhbGlkYXRpb24uJyksCi0odSdPREJDQXR0cmlidXRlJywgdSdWYWx1ZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVmFsdWUgZm9yIE9EQkMgZHJpdmVyIGF0dHJpYnV0ZScpLAotKHUnT0RCQ0F0dHJpYnV0ZScsIHUnQXR0cmlidXRlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdOYW1lIG9mIE9EQkMgZHJpdmVyIGF0dHJpYnV0ZScpLAotKHUnT0RCQ0F0dHJpYnV0ZScsIHUnRHJpdmVyXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnT0RCQ0RyaXZlcicsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUmVmZXJlbmNlIHRvIE9EQkMgZHJpdmVyIGluIE9EQkNEcml2ZXIgdGFibGUnKSwKLSh1J09EQkNEcml2ZXInLCB1J0Rlc2NyaXB0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUZXh0IHVzZWQgYXMgcmVnaXN0ZXJlZCBuYW1lIGZvciBkcml2ZXIsIG5vbi1sb2NhbGl6ZWQnKSwKLSh1J09EQkNEcml2ZXInLCB1J0ZpbGVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZWZlcmVuY2UgdG8ga2V5IGRyaXZlciBmaWxlJyksCi0odSdPREJDRHJpdmVyJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlZmVyZW5jZSB0byBhc3NvY2lhdGVkIGNvbXBvbmVudCcpLAotKHUnT0RCQ0RyaXZlcicsIHUnRHJpdmVyJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZC5pbnRlcm5hbCB0b2tlbiBmb3IgZHJpdmVyJyksCi0odSdPREJDRHJpdmVyJywgdSdGaWxlX1NldHVwJywgdSdZJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdPcHRpb25hbCByZWZlcmVuY2UgdG8ga2V5IGRyaXZlciBzZXR1cCBETEwnKSwKLSh1J09EQkNEYXRhU291cmNlJywgdSdEZXNjcmlwdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGV4dCB1c2VkIGFzIHJlZ2lzdGVyZWQgbmFtZSBmb3IgZGF0YSBzb3VyY2UnKSwKLSh1J09EQkNEYXRhU291cmNlJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlZmVyZW5jZSB0byBhc3NvY2lhdGVkIGNvbXBvbmVudCcpLAotKHUnT0RCQ0RhdGFTb3VyY2UnLCB1J0RhdGFTb3VyY2UnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkLmludGVybmFsIHRva2VuIGZvciBkYXRhIHNvdXJjZScpLAotKHUnT0RCQ0RhdGFTb3VyY2UnLCB1J0RyaXZlckRlc2NyaXB0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdSZWZlcmVuY2UgdG8gZHJpdmVyIGRlc2NyaXB0aW9uLCBtYXkgYmUgZXhpc3RpbmcgZHJpdmVyJyksCi0odSdPREJDRGF0YVNvdXJjZScsIHUnUmVnaXN0cmF0aW9uJywgdSdOJywgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdSZWdpc3RyYXRpb24gb3B0aW9uOiAwPW1hY2hpbmUsIDE9dXNlciwgb3RoZXJzIHQuYi5kLicpLAotKHUnT0RCQ1NvdXJjZUF0dHJpYnV0ZScsIHUnVmFsdWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1ZhbHVlIGZvciBPREJDIGRhdGEgc291cmNlIGF0dHJpYnV0ZScpLAotKHUnT0RCQ1NvdXJjZUF0dHJpYnV0ZScsIHUnQXR0cmlidXRlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdOYW1lIG9mIE9EQkMgZGF0YSBzb3VyY2UgYXR0cmlidXRlJyksCi0odSdPREJDU291cmNlQXR0cmlidXRlJywgdSdEYXRhU291cmNlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnT0RCQ0RhdGFTb3VyY2UnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlZmVyZW5jZSB0byBPREJDIGRhdGEgc291cmNlIGluIE9EQkNEYXRhU291cmNlIHRhYmxlJyksCi0odSdPREJDVHJhbnNsYXRvcicsIHUnRGVzY3JpcHRpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RleHQgdXNlZCBhcyByZWdpc3RlcmVkIG5hbWUgZm9yIHRyYW5zbGF0b3InKSwKLSh1J09EQkNUcmFuc2xhdG9yJywgdSdGaWxlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRmlsZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUmVmZXJlbmNlIHRvIGtleSB0cmFuc2xhdG9yIGZpbGUnKSwKLSh1J09EQkNUcmFuc2xhdG9yJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlZmVyZW5jZSB0byBhc3NvY2lhdGVkIGNvbXBvbmVudCcpLAotKHUnT0RCQ1RyYW5zbGF0b3InLCB1J0ZpbGVfU2V0dXAnLCB1J1knLCBOb25lLCBOb25lLCB1J0ZpbGUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J09wdGlvbmFsIHJlZmVyZW5jZSB0byBrZXkgdHJhbnNsYXRvciBzZXR1cCBETEwnKSwKLSh1J09EQkNUcmFuc2xhdG9yJywgdSdUcmFuc2xhdG9yJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZC5pbnRlcm5hbCB0b2tlbiBmb3IgdHJhbnNsYXRvcicpLAotKHUnUGF0Y2gnLCB1J1NlcXVlbmNlJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUHJpbWFyeSBrZXksIHNlcXVlbmNlIHdpdGggcmVzcGVjdCB0byB0aGUgbWVkaWEgaW1hZ2VzOyBvcmRlciBtdXN0IHRyYWNrIGNhYmluZXQgb3JkZXIuJyksCi0odSdQYXRjaCcsIHUnQXR0cmlidXRlcycsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ludGVnZXIgY29udGFpbmluZyBiaXQgZmxhZ3MgcmVwcmVzZW50aW5nIHBhdGNoIGF0dHJpYnV0ZXMnKSwKLSh1J1BhdGNoJywgdSdGaWxlXycsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4sIGZvcmVpZ24ga2V5IHRvIEZpbGUgdGFibGUsIG11c3QgbWF0Y2ggaWRlbnRpZmllciBpbiBjYWJpbmV0LicpLAotKHUnUGF0Y2gnLCB1J0hlYWRlcicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JywgTm9uZSwgdSdCaW5hcnkgc3RyZWFtLiBUaGUgcGF0Y2ggaGVhZGVyLCB1c2VkIGZvciBwYXRjaCB2YWxpZGF0aW9uLicpLAotKHUnUGF0Y2gnLCB1J1BhdGNoU2l6ZScsIHUnTicsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2l6ZSBvZiBwYXRjaCBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS4nKSwKLSh1J1BhdGNoJywgdSdTdHJlYW1SZWZfJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdJZGVudGlmaWVyLiBGb3JlaWduIGtleSB0byB0aGUgU3RyZWFtUmVmIGNvbHVtbiBvZiB0aGUgTXNpUGF0Y2hIZWFkZXJzIHRhYmxlLicpLAotKHUnUGF0Y2hQYWNrYWdlJywgdSdNZWRpYV8nLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JlaWduIGtleSB0byBEaXNrSWQgY29sdW1uIG9mIE1lZGlhIHRhYmxlLiBJbmRpY2F0ZXMgdGhlIGRpc2sgY29udGFpbmluZyB0aGUgcGF0Y2ggcGFja2FnZS4nKSwKLSh1J1BhdGNoUGFja2FnZScsIHUnUGF0Y2hJZCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsIE5vbmUsIHUnQSB1bmlxdWUgc3RyaW5nIEdVSUQgcmVwcmVzZW50aW5nIHRoaXMgcGF0Y2guJyksCi0odSdQdWJsaXNoQ29tcG9uZW50JywgdSdGZWF0dXJlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRmVhdHVyZSB0YWJsZS4nKSwKLSh1J1B1Ymxpc2hDb21wb25lbnQnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlLicpLAotKHUnUHVibGlzaENvbXBvbmVudCcsIHUnQ29tcG9uZW50SWQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLCBOb25lLCB1J0Egc3RyaW5nIEdVSUQgdGhhdCByZXByZXNlbnRzIHRoZSBjb21wb25lbnQgaWQgdGhhdCB3aWxsIGJlIHJlcXVlc3RlZCBieSB0aGUgYWxpZW4gcHJvZHVjdC4nKSwKLSh1J1B1Ymxpc2hDb21wb25lbnQnLCB1J0FwcERhdGEnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoaXMgaXMgbG9jYWxpc2FibGUgQXBwbGljYXRpb24gc3BlY2lmaWMgZGF0YSB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSBRdWFsaWZpZWQgQ29tcG9uZW50LicpLAotKHUnUHVibGlzaENvbXBvbmVudCcsIHUnUXVhbGlmaWVyJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGlzIGlzIGRlZmluZWQgb25seSB3aGVuIHRoZSBDb21wb25lbnRJZCBjb2x1bW4gaXMgYW4gUXVhbGlmaWVkIENvbXBvbmVudCBJZC4gVGhpcyBpcyB0aGUgUXVhbGlmaWVyIGZvciBQcm92aWRlQ29tcG9uZW50SW5kaXJlY3QuJyksCi0odSdSZWdpc3RyeScsIHUnTmFtZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgcmVnaXN0cnkgdmFsdWUgbmFtZS4nKSwKLSh1J1JlZ2lzdHJ5JywgdSdWYWx1ZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgcmVnaXN0cnkgdmFsdWUuJyksCi0odSdSZWdpc3RyeScsIHUnS2V5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdSZWdQYXRoJywgTm9uZSwgdSdUaGUga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUuJyksCi0odSdSZWdpc3RyeScsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgcmVmZXJlbmNpbmcgY29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGluc3RhbGxpbmcgb2YgdGhlIHJlZ2lzdHJ5IHZhbHVlLicpLAotKHUnUmVnaXN0cnknLCB1J1JlZ2lzdHJ5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbi4nKSwKLSh1J1JlZ2lzdHJ5JywgdSdSb290JywgdSdOJywgLTEsIDMsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHByZWRlZmluZWQgcm9vdCBrZXkgZm9yIHRoZSByZWdpc3RyeSB2YWx1ZSwgb25lIG9mIHJya0VudW0uJyksCi0odSdSZWdMb2NhdG9yJywgdSdOYW1lJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSByZWdpc3RyeSB2YWx1ZSBuYW1lLicpLAotKHUnUmVnTG9jYXRvcicsIHUnVHlwZScsIHUnWScsIDAsIDE4LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0FuIGludGVnZXIgdmFsdWUgdGhhdCBkZXRlcm1pbmVzIGlmIHRoZSByZWdpc3RyeSB2YWx1ZSBpcyBhIGZpbGVuYW1lIG9yIGEgZGlyZWN0b3J5IGxvY2F0aW9uIG9yIHRvIGJlIHVzZWQgYXMgaXMgdy9vIGludGVycHJldGF0aW9uLicpLAotKHUnUmVnTG9jYXRvcicsIHUnS2V5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdSZWdQYXRoJywgTm9uZSwgdSdUaGUga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUuJyksCi0odSdSZWdMb2NhdG9yJywgdSdTaWduYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgdGFibGUga2V5LiBUaGUgU2lnbmF0dXJlXyByZXByZXNlbnRzIGEgdW5pcXVlIGZpbGUgc2lnbmF0dXJlIGFuZCBpcyBhbHNvIHRoZSBmb3JlaWduIGtleSBpbiB0aGUgU2lnbmF0dXJlIHRhYmxlLiBJZiB0aGUgdHlwZSBpcyAwLCB0aGUgcmVnaXN0cnkgdmFsdWVzIHJlZmVycyBhIGRpcmVjdG9yeSwgYW5kIF9TaWduYXR1cmUgaXMgbm90IGEgZm9yZWlnbiBrZXkuJyksCi0odSdSZWdMb2NhdG9yJywgdSdSb290JywgdSdOJywgMCwgMywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgcHJlZGVmaW5lZCByb290IGtleSBmb3IgdGhlIHJlZ2lzdHJ5IHZhbHVlLCBvbmUgb2YgcnJrRW51bS4nKSwKLSh1J1JlbW92ZUZpbGUnLCB1J0luc3RhbGxNb2RlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdScxOzI7MycsIHUnSW5zdGFsbGF0aW9uIG9wdGlvbiwgb25lIG9mIGlpbUVudW0uJyksCi0odSdSZW1vdmVGaWxlJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IHJlZmVyZW5jaW5nIENvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBmaWxlIHRvIGJlIHJlbW92ZWQuJyksCi0odSdSZW1vdmVGaWxlJywgdSdGaWxlS2V5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSB1c2VkIHRvIGlkZW50aWZ5IGEgcGFydGljdWxhciBmaWxlIGVudHJ5JyksCi0odSdSZW1vdmVGaWxlJywgdSdGaWxlTmFtZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnV2lsZENhcmRGaWxlbmFtZScsIE5vbmUsIHUnTmFtZSBvZiB0aGUgZmlsZSB0byBiZSByZW1vdmVkLicpLAotKHUnUmVtb3ZlRmlsZScsIHUnRGlyUHJvcGVydHknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyBhc3N1bWVkIHRvIHJlc29sdmUgdG8gdGhlIGZ1bGwgcGF0aG5hbWUgdG8gdGhlIGZvbGRlciBvZiB0aGUgZmlsZSB0byBiZSByZW1vdmVkLicpLAotKHUnUmVtb3ZlSW5pRmlsZScsIHUnQWN0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdScyOzQnLCB1J1RoZSB0eXBlIG9mIG1vZGlmaWNhdGlvbiB0byBiZSBtYWRlLCBvbmUgb2YgaWlmRW51bS4nKSwKLSh1J1JlbW92ZUluaUZpbGUnLCB1J1ZhbHVlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSB2YWx1ZSB0byBiZSBkZWxldGVkLiBUaGUgdmFsdWUgaXMgcmVxdWlyZWQgd2hlbiBBY3Rpb24gaXMgaWlmSW5pUmVtb3ZlVGFnJyksCi0odSdSZW1vdmVJbmlGaWxlJywgdSdLZXknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBrZXkgYmVsb3cgU2VjdGlvbi4nKSwKLSh1J1JlbW92ZUluaUZpbGUnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlIHJlZmVyZW5jaW5nIGNvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBkZWxldGlvbiBvZiB0aGUgLklOSSB2YWx1ZS4nKSwKLSh1J1JlbW92ZUluaUZpbGUnLCB1J0ZpbGVOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsIE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBuYW1lIGluIHdoaWNoIHRvIGRlbGV0ZSB0aGUgaW5mb3JtYXRpb24nKSwKLSh1J1JlbW92ZUluaUZpbGUnLCB1J0RpclByb3BlcnR5JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBEaXJlY3RvcnkgdGFibGUgZGVub3RpbmcgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgLklOSSBmaWxlIGlzLicpLAotKHUnUmVtb3ZlSW5pRmlsZScsIHUnU2VjdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgLklOSSBmaWxlIFNlY3Rpb24uJyksCi0odSdSZW1vdmVJbmlGaWxlJywgdSdSZW1vdmVJbmlGaWxlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbi4nKSwKLSh1J1JlbW92ZVJlZ2lzdHJ5JywgdSdOYW1lJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSByZWdpc3RyeSB2YWx1ZSBuYW1lLicpLAotKHUnUmVtb3ZlUmVnaXN0cnknLCB1J0tleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUmVnUGF0aCcsIE5vbmUsIHUnVGhlIGtleSBmb3IgdGhlIHJlZ2lzdHJ5IHZhbHVlLicpLAotKHUnUmVtb3ZlUmVnaXN0cnknLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlIHJlZmVyZW5jaW5nIGNvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBkZWxldGlvbiBvZiB0aGUgcmVnaXN0cnkgdmFsdWUuJyksCi0odSdSZW1vdmVSZWdpc3RyeScsIHUnUm9vdCcsIHUnTicsIC0xLCAzLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBwcmVkZWZpbmVkIHJvb3Qga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUsIG9uZSBvZiBycmtFbnVtJyksCi0odSdSZW1vdmVSZWdpc3RyeScsIHUnUmVtb3ZlUmVnaXN0cnknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicpLAotKHUnUmVzZXJ2ZUNvc3QnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUmVzZXJ2ZSBhIHNwZWNpZmllZCBhbW91bnQgb2Ygc3BhY2UgaWYgdGhpcyBjb21wb25lbnQgaXMgdG8gYmUgaW5zdGFsbGVkLicpLAotKHUnUmVzZXJ2ZUNvc3QnLCB1J1Jlc2VydmVGb2xkZXInLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyBhc3N1bWVkIHRvIHJlc29sdmUgdG8gdGhlIGZ1bGwgcGF0aCB0byB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5JyksCi0odSdSZXNlcnZlQ29zdCcsIHUnUmVzZXJ2ZUtleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXkgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIGEgcGFydGljdWxhciBSZXNlcnZlQ29zdCByZWNvcmQnKSwKLSh1J1Jlc2VydmVDb3N0JywgdSdSZXNlcnZlTG9jYWwnLCB1J04nLCAwLCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Rpc2sgc3BhY2UgdG8gcmVzZXJ2ZSBpZiBsaW5rZWQgY29tcG9uZW50IGlzIGluc3RhbGxlZCBsb2NhbGx5LicpLAotKHUnUmVzZXJ2ZUNvc3QnLCB1J1Jlc2VydmVTb3VyY2UnLCB1J04nLCAwLCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Rpc2sgc3BhY2UgdG8gcmVzZXJ2ZSBpZiBsaW5rZWQgY29tcG9uZW50IGlzIGluc3RhbGxlZCB0byBydW4gZnJvbSB0aGUgc291cmNlIGxvY2F0aW9uLicpLAotKHUnU2VsZlJlZycsIHUnRmlsZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZpbGUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIEZpbGUgdGFibGUgZGVub3RpbmcgdGhlIG1vZHVsZSB0aGF0IG5lZWRzIHRvIGJlIHJlZ2lzdGVyZWQuJyksCi0odSdTZWxmUmVnJywgdSdDb3N0JywgdSdZJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGNvc3Qgb2YgcmVnaXN0ZXJpbmcgdGhlIG1vZHVsZS4nKSwKLSh1J1NlcnZpY2VDb250cm9sJywgdSdOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J05hbWUgb2YgYSBzZXJ2aWNlLiAvLCBcXCwgY29tbWEgYW5kIHNwYWNlIGFyZSBpbnZhbGlkJyksCi0odSdTZXJ2aWNlQ29udHJvbCcsIHUnRXZlbnQnLCB1J04nLCAwLCAxODcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQml0IGZpZWxkOiAgSW5zdGFsbDogIDB4MSA9IFN0YXJ0LCAweDIgPSBTdG9wLCAweDggPSBEZWxldGUsIFVuaW5zdGFsbDogMHgxMCA9IFN0YXJ0LCAweDIwID0gU3RvcCwgMHg4MCA9IERlbGV0ZScpLAotKHUnU2VydmljZUNvbnRyb2wnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUmVxdWlyZWQgZm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IFRhYmxlIHRoYXQgY29udHJvbHMgdGhlIHN0YXJ0dXAgb2YgdGhlIHNlcnZpY2UnKSwKLSh1J1NlcnZpY2VDb250cm9sJywgdSdTZXJ2aWNlQ29udHJvbCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uJyksCi0odSdTZXJ2aWNlQ29udHJvbCcsIHUnQXJndW1lbnRzJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J0FyZ3VtZW50cyBmb3IgdGhlIHNlcnZpY2UuICBTZXBhcmF0ZSBieSBbfl0uJyksCi0odSdTZXJ2aWNlQ29udHJvbCcsIHUnV2FpdCcsIHUnWScsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQm9vbGVhbiBmb3Igd2hldGhlciB0byB3YWl0IGZvciB0aGUgc2VydmljZSB0byBmdWxseSBzdGFydCcpLAotKHUnU2VydmljZUluc3RhbGwnLCB1J05hbWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnSW50ZXJuYWwgTmFtZSBvZiB0aGUgU2VydmljZScpLAotKHUnU2VydmljZUluc3RhbGwnLCB1J0Rlc2NyaXB0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdEZXNjcmlwdGlvbiBvZiBzZXJ2aWNlLicpLAotKHUnU2VydmljZUluc3RhbGwnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUmVxdWlyZWQgZm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IFRhYmxlIHRoYXQgY29udHJvbHMgdGhlIHN0YXJ0dXAgb2YgdGhlIHNlcnZpY2UnKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdBcmd1bWVudHMnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnQXJndW1lbnRzIHRvIGluY2x1ZGUgaW4gZXZlcnkgc3RhcnQgb2YgdGhlIHNlcnZpY2UsIHBhc3NlZCB0byBXaW5NYWluJyksCi0odSdTZXJ2aWNlSW5zdGFsbCcsIHUnU2VydmljZUluc3RhbGwnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicpLAotKHUnU2VydmljZUluc3RhbGwnLCB1J0RlcGVuZGVuY2llcycsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdPdGhlciBzZXJ2aWNlcyB0aGlzIGRlcGVuZHMgb24gdG8gc3RhcnQuICBTZXBhcmF0ZSBieSBbfl0sIGFuZCBlbmQgd2l0aCBbfl1bfl0nKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdEaXNwbGF5TmFtZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdFeHRlcm5hbCBOYW1lIG9mIHRoZSBTZXJ2aWNlJyksCi0odSdTZXJ2aWNlSW5zdGFsbCcsIHUnRXJyb3JDb250cm9sJywgdSdOJywgLTIxNDc0ODM2NDcsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2V2ZXJpdHkgb2YgZXJyb3IgaWYgc2VydmljZSBmYWlscyB0byBzdGFydCcpLAotKHUnU2VydmljZUluc3RhbGwnLCB1J0xvYWRPcmRlckdyb3VwJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J0xvYWRPcmRlckdyb3VwJyksCi0odSdTZXJ2aWNlSW5zdGFsbCcsIHUnUGFzc3dvcmQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUncGFzc3dvcmQgdG8gcnVuIHNlcnZpY2Ugd2l0aC4gICh3aXRoIFN0YXJ0TmFtZSknKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdTZXJ2aWNlVHlwZScsIHUnTicsIC0yMTQ3NDgzNjQ3LCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1R5cGUgb2YgdGhlIHNlcnZpY2UnKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdTdGFydE5hbWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVXNlciBvciBvYmplY3QgbmFtZSB0byBydW4gc2VydmljZSBhcycpLAotKHUnU2VydmljZUluc3RhbGwnLCB1J1N0YXJ0VHlwZScsIHUnTicsIDAsIDQsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVHlwZSBvZiB0aGUgc2VydmljZScpLAotKHUnU2hvcnRjdXQnLCB1J05hbWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJywgTm9uZSwgdSdUaGUgbmFtZSBvZiB0aGUgc2hvcnRjdXQgdG8gYmUgY3JlYXRlZC4nKSwKLSh1J1Nob3J0Y3V0JywgdSdEZXNjcmlwdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIGRlc2NyaXB0aW9uIGZvciB0aGUgc2hvcnRjdXQuJyksCi0odSdTaG9ydGN1dCcsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgZGVub3RpbmcgdGhlIGNvbXBvbmVudCB3aG9zZSBzZWxlY3Rpb24gZ2F0ZXMgdGhlIHNob3J0Y3V0IGNyZWF0aW9uL2RlbGV0aW9uLicpLAotKHUnU2hvcnRjdXQnLCB1J0ljb25fJywgdSdZJywgTm9uZSwgTm9uZSwgdSdJY29uJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBGaWxlIHRhYmxlIGRlbm90aW5nIHRoZSBleHRlcm5hbCBpY29uIGZpbGUgZm9yIHRoZSBzaG9ydGN1dC4nKSwKLSh1J1Nob3J0Y3V0JywgdSdJY29uSW5kZXgnLCB1J1knLCAtMzI3NjcsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBpY29uIGluZGV4IGZvciB0aGUgc2hvcnRjdXQuJyksCi0odSdTaG9ydGN1dCcsIHUnRGlyZWN0b3J5XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRGlyZWN0b3J5JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBEaXJlY3RvcnkgdGFibGUgZGVub3RpbmcgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgc2hvcnRjdXQgZmlsZSBpcyBjcmVhdGVkLicpLAotKHUnU2hvcnRjdXQnLCB1J1RhcmdldCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2hvcnRjdXQnLCBOb25lLCB1J1RoZSBzaG9ydGN1dCB0YXJnZXQuIFRoaXMgaXMgdXN1YWxseSBhIHByb3BlcnR5IHRoYXQgaXMgZXhwYW5kZWQgdG8gYSBmaWxlIG9yIGEgZm9sZGVyIHRoYXQgdGhlIHNob3J0Y3V0IHBvaW50cyB0by4nKSwKLSh1J1Nob3J0Y3V0JywgdSdBcmd1bWVudHMnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgZm9yIHRoZSBzaG9ydGN1dC4nKSwKLSh1J1Nob3J0Y3V0JywgdSdTaG9ydGN1dCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uJyksCi0odSdTaG9ydGN1dCcsIHUnSG90a2V5JywgdSdZJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGhvdGtleSBmb3IgdGhlIHNob3J0Y3V0LiBJdCBoYXMgdGhlIHZpcnR1YWwta2V5IGNvZGUgZm9yIHRoZSBrZXkgaW4gdGhlIGxvdy1vcmRlciBieXRlLCBhbmQgdGhlIG1vZGlmaWVyIGZsYWdzIGluIHRoZSBoaWdoLW9yZGVyIGJ5dGUuICcpLAotKHUnU2hvcnRjdXQnLCB1J1Nob3dDbWQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1JzE7Mzs3JywgdSdUaGUgc2hvdyBjb21tYW5kIGZvciB0aGUgYXBwbGljYXRpb24gd2luZG93LlRoZSBmb2xsb3dpbmcgdmFsdWVzIG1heSBiZSB1c2VkLicpLAotKHUnU2hvcnRjdXQnLCB1J1drRGlyJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIHByb3BlcnR5IGRlZmluaW5nIGxvY2F0aW9uIG9mIHdvcmtpbmcgZGlyZWN0b3J5LicpLAotKHUnU2lnbmF0dXJlJywgdSdGaWxlTmFtZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLCBOb25lLCB1J1RoZSBuYW1lIG9mIHRoZSBmaWxlLiBUaGlzIG1heSBjb250YWluIGEgInNob3J0IG5hbWV8bG9uZyBuYW1lIiBwYWlyLicpLAotKHUnU2lnbmF0dXJlJywgdSdTaWduYXR1cmUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSB0YWJsZSBrZXkuIFRoZSBTaWduYXR1cmUgcmVwcmVzZW50cyBhIHVuaXF1ZSBmaWxlIHNpZ25hdHVyZS4nKSwKLSh1J1NpZ25hdHVyZScsIHUnTGFuZ3VhZ2VzJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdMYW5ndWFnZScsIE5vbmUsIHUnVGhlIGxhbmd1YWdlcyBzdXBwb3J0ZWQgYnkgdGhlIGZpbGUuJyksCi0odSdTaWduYXR1cmUnLCB1J01heERhdGUnLCB1J1knLCAwLCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBtYXhpbXVtIGNyZWF0aW9uIGRhdGUgb2YgdGhlIGZpbGUuJyksCi0odSdTaWduYXR1cmUnLCB1J01heFNpemUnLCB1J1knLCAwLCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGZpbGUuICcpLAotKHUnU2lnbmF0dXJlJywgdSdNYXhWZXJzaW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgbWF4aW11bSB2ZXJzaW9uIG9mIHRoZSBmaWxlLicpLAotKHUnU2lnbmF0dXJlJywgdSdNaW5EYXRlJywgdSdZJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgbWluaW11bSBjcmVhdGlvbiBkYXRlIG9mIHRoZSBmaWxlLicpLAotKHUnU2lnbmF0dXJlJywgdSdNaW5TaXplJywgdSdZJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgbWluaW11bSBzaXplIG9mIHRoZSBmaWxlLicpLAotKHUnU2lnbmF0dXJlJywgdSdNaW5WZXJzaW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgbWluaW11bSB2ZXJzaW9uIG9mIHRoZSBmaWxlLicpLAotKHUnVHlwZUxpYicsIHUnRmVhdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZlYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIEZlYXR1cmUgVGFibGUsIHNwZWNpZnlpbmcgdGhlIGZlYXR1cmUgdG8gdmFsaWRhdGUgb3IgaW5zdGFsbCBpbiBvcmRlciBmb3IgdGhlIHR5cGUgbGlicmFyeSB0byBiZSBvcGVyYXRpb25hbC4nKSwKLSh1J1R5cGVMaWInLCB1J0Rlc2NyaXB0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgTm9uZSksCi0odSdUeXBlTGliJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCBUYWJsZSwgc3BlY2lmeWluZyB0aGUgY29tcG9uZW50IGZvciB3aGljaCB0byByZXR1cm4gYSBwYXRoIHdoZW4gY2FsbGVkIHRocm91Z2ggTG9jYXRlQ29tcG9uZW50LicpLAotKHUnVHlwZUxpYicsIHUnRGlyZWN0b3J5XycsIHUnWScsIE5vbmUsIE5vbmUsIHUnRGlyZWN0b3J5JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdPcHRpb25hbC4gVGhlIGZvcmVpZ24ga2V5IGludG8gdGhlIERpcmVjdG9yeSB0YWJsZSBkZW5vdGluZyB0aGUgcGF0aCB0byB0aGUgaGVscCBmaWxlIGZvciB0aGUgdHlwZSBsaWJyYXJ5LicpLAotKHUnVHlwZUxpYicsIHUnTGFuZ3VhZ2UnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgbGFuZ3VhZ2Ugb2YgdGhlIGxpYnJhcnkuJyksCi0odSdUeXBlTGliJywgdSdWZXJzaW9uJywgdSdZJywgMCwgMTY3NzcyMTUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkuIFRoZSBtaW5vciB2ZXJzaW9uIGlzIGluIHRoZSBsb3dlciA4IGJpdHMgb2YgdGhlIGludGVnZXIuIFRoZSBtYWpvciB2ZXJzaW9uIGlzIGluIHRoZSBuZXh0IDE2IGJpdHMuICcpLAotKHUnVHlwZUxpYicsIHUnQ29zdCcsIHUnWScsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGNvc3QgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWdpc3RyYXRpb24gb2YgdGhlIHR5cGVsaWIuIFRoaXMgY29sdW1uIGlzIGN1cnJlbnRseSBvcHRpb25hbC4nKSwKLSh1J1R5cGVMaWInLCB1J0xpYklEJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJywgTm9uZSwgdSdUaGUgR1VJRCB0aGF0IHJlcHJlc2VudHMgdGhlIGxpYnJhcnkuJyksCi0odSdVcGdyYWRlJywgdSdBdHRyaWJ1dGVzJywgdSdOJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgYXR0cmlidXRlcyBvZiB0aGlzIHByb2R1Y3Qgc2V0LicpLAotKHUnVXBncmFkZScsIHUnUmVtb3ZlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSBsaXN0IG9mIGZlYXR1cmVzIHRvIHJlbW92ZSB3aGVuIHVuaW5zdGFsbGluZyBhIHByb2R1Y3QgZnJvbSB0aGlzIHNldC4gIFRoZSBkZWZhdWx0IGlzICJBTEwiLicpLAotKHUnVXBncmFkZScsIHUnTGFuZ3VhZ2UnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0xhbmd1YWdlJywgTm9uZSwgdSdBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGxhbmd1YWdlcyBmb3IgZWl0aGVyIHByb2R1Y3RzIGluIHRoaXMgc2V0IG9yIHByb2R1Y3RzIG5vdCBpbiB0aGlzIHNldC4nKSwKLSh1J1VwZ3JhZGUnLCB1J0FjdGlvblByb3BlcnR5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdVcHBlckNhc2UnLCBOb25lLCB1J1RoZSBwcm9wZXJ0eSB0byBzZXQgd2hlbiBhIHByb2R1Y3QgaW4gdGhpcyBzZXQgaXMgZm91bmQuJyksCi0odSdVcGdyYWRlJywgdSdVcGdyYWRlQ29kZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsIE5vbmUsIHUnVGhlIFVwZ3JhZGVDb2RlIEdVSUQgYmVsb25naW5nIHRvIHRoZSBwcm9kdWN0cyBpbiB0aGlzIHNldC4nKSwKLSh1J1VwZ3JhZGUnLCB1J1ZlcnNpb25NYXgnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSBtYXhpbXVtIFByb2R1Y3RWZXJzaW9uIG9mIHRoZSBwcm9kdWN0cyBpbiB0aGlzIHNldC4gIFRoZSBzZXQgbWF5IG9yIG1heSBub3QgaW5jbHVkZSBwcm9kdWN0cyB3aXRoIHRoaXMgcGFydGljdWxhciB2ZXJzaW9uLicpLAotKHUnVXBncmFkZScsIHUnVmVyc2lvbk1pbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIG1pbmltdW0gUHJvZHVjdFZlcnNpb24gb2YgdGhlIHByb2R1Y3RzIGluIHRoaXMgc2V0LiAgVGhlIHNldCBtYXkgb3IgbWF5IG5vdCBpbmNsdWRlIHByb2R1Y3RzIHdpdGggdGhpcyBwYXJ0aWN1bGFyIHZlcnNpb24uJyksCi0odSdWZXJiJywgdSdTZXF1ZW5jZScsIHUnWScsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J09yZGVyIHdpdGhpbiB0aGUgdmVyYnMgZm9yIGEgcGFydGljdWxhciBleHRlbnNpb24uIEFsc28gdXNlZCBzaW1wbHkgdG8gc3BlY2lmeSB0aGUgZGVmYXVsdCB2ZXJiLicpLAotKHUnVmVyYicsIHUnQXJndW1lbnQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnT3B0aW9uYWwgdmFsdWUgZm9yIHRoZSBjb21tYW5kIGFyZ3VtZW50cy4nKSwKLSh1J1ZlcmInLCB1J0V4dGVuc2lvbl8nLCB1J04nLCBOb25lLCBOb25lLCB1J0V4dGVuc2lvbicsIDEsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIGV4dGVuc2lvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHRhYmxlIHJvdy4nKSwKLSh1J1ZlcmInLCB1J1ZlcmInLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSB2ZXJiIGZvciB0aGUgY29tbWFuZC4nKSwKLSh1J1ZlcmInLCB1J0NvbW1hbmQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIGNvbW1hbmQgdGV4dC4nKSwKLV0KLQotRXJyb3IgPSBbCi0oMCwgdSd7e0ZhdGFsIGVycm9yOiB9fScpLAotKDEsIHUne3tFcnJvciBbMV0uIH19JyksCi0oMiwgdSdXYXJuaW5nIFsxXS4gJyksCi0oMywgTm9uZSksCi0oNCwgdSdJbmZvIFsxXS4gJyksCi0oNSwgdSdUaGUgaW5zdGFsbGVyIGhhcyBlbmNvdW50ZXJlZCBhbiB1bmV4cGVjdGVkIGVycm9yIGluc3RhbGxpbmcgdGhpcyBwYWNrYWdlLiBUaGlzIG1heSBpbmRpY2F0ZSBhIHByb2JsZW0gd2l0aCB0aGlzIHBhY2thZ2UuIFRoZSBlcnJvciBjb2RlIGlzIFsxXS4ge3tUaGUgYXJndW1lbnRzIGFyZTogWzJdLCBbM10sIFs0XX19JyksCi0oNiwgTm9uZSksCi0oNywgdSd7e0Rpc2sgZnVsbDogfX0nKSwKLSg4LCB1J0FjdGlvbiBbVGltZV06IFsxXS4gWzJdJyksCi0oOSwgdSdbUHJvZHVjdE5hbWVdJyksCi0oMTAsIHUne1syXX17LCBbM119eywgWzRdfScpLAotKDExLCB1J01lc3NhZ2UgdHlwZTogWzFdLCBBcmd1bWVudDogWzJdJyksCi0oMTIsIHUnPT09IExvZ2dpbmcgc3RhcnRlZDogW0RhdGVdICBbVGltZV0gPT09JyksCi0oMTMsIHUnPT09IExvZ2dpbmcgc3RvcHBlZDogW0RhdGVdICBbVGltZV0gPT09JyksCi0oMTQsIHUnQWN0aW9uIHN0YXJ0IFtUaW1lXTogWzFdLicpLAotKDE1LCB1J0FjdGlvbiBlbmRlZCBbVGltZV06IFsxXS4gUmV0dXJuIHZhbHVlIFsyXS4nKSwKLSgxNiwgdSdUaW1lIHJlbWFpbmluZzoge1sxXSBtaW51dGVzIH17WzJdIHNlY29uZHN9JyksCi0oMTcsIHUnT3V0IG9mIG1lbW9yeS4gU2h1dCBkb3duIG90aGVyIGFwcGxpY2F0aW9ucyBiZWZvcmUgcmV0cnlpbmcuJyksCi0oMTgsIHUnSW5zdGFsbGVyIGlzIG5vIGxvbmdlciByZXNwb25kaW5nLicpLAotKDE5LCB1J0luc3RhbGxlciBzdG9wcGVkIHByZW1hdHVyZWx5LicpLAotKDIwLCB1J1BsZWFzZSB3YWl0IHdoaWxlIFdpbmRvd3MgY29uZmlndXJlcyBbUHJvZHVjdE5hbWVdJyksCi0oMjEsIHUnR2F0aGVyaW5nIHJlcXVpcmVkIGluZm9ybWF0aW9uLi4uJyksCi0oMjIsIHUnUmVtb3Zpbmcgb2xkZXIgdmVyc2lvbnMgb2YgdGhpcyBhcHBsaWNhdGlvbi4uLicpLAotKDIzLCB1J1ByZXBhcmluZyB0byByZW1vdmUgb2xkZXIgdmVyc2lvbnMgb2YgdGhpcyBhcHBsaWNhdGlvbi4uLicpLAotKDMyLCB1J3tbUHJvZHVjdE5hbWVdIH1TZXR1cCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LicpLAotKDMzLCB1J3tbUHJvZHVjdE5hbWVdIH1TZXR1cCBmYWlsZWQuJyksCi0oMTEwMSwgdSdFcnJvciByZWFkaW5nIGZyb20gZmlsZTogWzJdLiB7eyBTeXN0ZW0gZXJyb3IgWzNdLn19ICBWZXJpZnkgdGhhdCB0aGUgZmlsZSBleGlzdHMgYW5kIHRoYXQgeW91IGNhbiBhY2Nlc3MgaXQuJyksCi0oMTMwMSwgdSJDYW5ub3QgY3JlYXRlIHRoZSBmaWxlICdbMl0nLiAgQSBkaXJlY3Rvcnkgd2l0aCB0aGlzIG5hbWUgYWxyZWFkeSBleGlzdHMuICBDYW5jZWwgdGhlIGluc3RhbGwgYW5kIHRyeSBpbnN0YWxsaW5nIHRvIGEgZGlmZmVyZW50IGxvY2F0aW9uLiIpLAotKDEzMDIsIHUnUGxlYXNlIGluc2VydCB0aGUgZGlzazogWzJdJyksCi0oMTMwMywgdSdUaGUgaW5zdGFsbGVyIGhhcyBpbnN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byBhY2Nlc3MgdGhpcyBkaXJlY3Rvcnk6IFsyXS4gIFRoZSBpbnN0YWxsYXRpb24gY2Fubm90IGNvbnRpbnVlLiAgTG9nIG9uIGFzIGFkbWluaXN0cmF0b3Igb3IgY29udGFjdCB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yLicpLAotKDEzMDQsIHUnRXJyb3Igd3JpdGluZyB0byBmaWxlOiBbMl0uICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBhY2Nlc3MgdG8gdGhhdCBkaXJlY3RvcnkuJyksCi0oMTMwNSwgdSdFcnJvciByZWFkaW5nIGZyb20gZmlsZSBbMl0uIHt7IFN5c3RlbSBlcnJvciBbM10ufX0gVmVyaWZ5IHRoYXQgdGhlIGZpbGUgZXhpc3RzIGFuZCB0aGF0IHlvdSBjYW4gYWNjZXNzIGl0LicpLAotKDEzMDYsIHUiQW5vdGhlciBhcHBsaWNhdGlvbiBoYXMgZXhjbHVzaXZlIGFjY2VzcyB0byB0aGUgZmlsZSAnWzJdJy4gIFBsZWFzZSBzaHV0IGRvd24gYWxsIG90aGVyIGFwcGxpY2F0aW9ucywgdGhlbiBjbGljayBSZXRyeS4iKSwKLSgxMzA3LCB1J1RoZXJlIGlzIG5vdCBlbm91Z2ggZGlzayBzcGFjZSB0byBpbnN0YWxsIHRoaXMgZmlsZTogWzJdLiAgRnJlZSBzb21lIGRpc2sgc3BhY2UgYW5kIGNsaWNrIFJldHJ5LCBvciBjbGljayBDYW5jZWwgdG8gZXhpdC4nKSwKLSgxMzA4LCB1J1NvdXJjZSBmaWxlIG5vdCBmb3VuZDogWzJdLiAgVmVyaWZ5IHRoYXQgdGhlIGZpbGUgZXhpc3RzIGFuZCB0aGF0IHlvdSBjYW4gYWNjZXNzIGl0LicpLAotKDEzMDksIHUnRXJyb3IgcmVhZGluZyBmcm9tIGZpbGU6IFszXS4ge3sgU3lzdGVtIGVycm9yIFsyXS59fSAgVmVyaWZ5IHRoYXQgdGhlIGZpbGUgZXhpc3RzIGFuZCB0aGF0IHlvdSBjYW4gYWNjZXNzIGl0LicpLAotKDEzMTAsIHUnRXJyb3Igd3JpdGluZyB0byBmaWxlOiBbM10uIHt7IFN5c3RlbSBlcnJvciBbMl0ufX0gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIGFjY2VzcyB0byB0aGF0IGRpcmVjdG9yeS4nKSwKLSgxMzExLCB1J1NvdXJjZSBmaWxlIG5vdCBmb3VuZHt7KGNhYmluZXQpfX06IFsyXS4gIFZlcmlmeSB0aGF0IHRoZSBmaWxlIGV4aXN0cyBhbmQgdGhhdCB5b3UgY2FuIGFjY2VzcyBpdC4nKSwKLSgxMzEyLCB1IkNhbm5vdCBjcmVhdGUgdGhlIGRpcmVjdG9yeSAnWzJdJy4gIEEgZmlsZSB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0cy4gIFBsZWFzZSByZW5hbWUgb3IgcmVtb3ZlIHRoZSBmaWxlIGFuZCBjbGljayByZXRyeSwgb3IgY2xpY2sgQ2FuY2VsIHRvIGV4aXQuIiksCi0oMTMxMywgdSdUaGUgdm9sdW1lIFsyXSBpcyBjdXJyZW50bHkgdW5hdmFpbGFibGUuICBQbGVhc2Ugc2VsZWN0IGFub3RoZXIuJyksCi0oMTMxNCwgdSJUaGUgc3BlY2lmaWVkIHBhdGggJ1syXScgaXMgdW5hdmFpbGFibGUuIiksCi0oMTMxNSwgdSdVbmFibGUgdG8gd3JpdGUgdG8gdGhlIHNwZWNpZmllZCBmb2xkZXI6IFsyXS4nKSwKLSgxMzE2LCB1J0EgbmV0d29yayBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIHJlYWQgZnJvbSB0aGUgZmlsZTogWzJdJyksCi0oMTMxNywgdSdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5OiBbMl0nKSwKLSgxMzE4LCB1J0EgbmV0d29yayBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5OiBbMl0nKSwKLSgxMzE5LCB1J0EgbmV0d29yayBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIG9wZW4gdGhlIHNvdXJjZSBmaWxlIGNhYmluZXQ6IFsyXScpLAotKDEzMjAsIHUnVGhlIHNwZWNpZmllZCBwYXRoIGlzIHRvbyBsb25nOiBbMl0nKSwKLSgxMzIxLCB1J1RoZSBJbnN0YWxsZXIgaGFzIGluc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIG1vZGlmeSB0aGlzIGZpbGU6IFsyXS4nKSwKLSgxMzIyLCB1IkEgcG9ydGlvbiBvZiB0aGUgZm9sZGVyIHBhdGggJ1syXScgaXMgaW52YWxpZC4gIEl0IGlzIGVpdGhlciBlbXB0eSBvciBleGNlZWRzIHRoZSBsZW5ndGggYWxsb3dlZCBieSB0aGUgc3lzdGVtLiIpLAotKDEzMjMsIHUiVGhlIGZvbGRlciBwYXRoICdbMl0nIGNvbnRhaW5zIHdvcmRzIHRoYXQgYXJlIG5vdCB2YWxpZCBpbiBmb2xkZXIgcGF0aHMuIiksCi0oMTMyNCwgdSJUaGUgZm9sZGVyIHBhdGggJ1syXScgY29udGFpbnMgYW4gaW52YWxpZCBjaGFyYWN0ZXIuIiksCi0oMTMyNSwgdSInWzJdJyBpcyBub3QgYSB2YWxpZCBzaG9ydCBmaWxlIG5hbWUuIiksCi0oMTMyNiwgdSdFcnJvciBnZXR0aW5nIGZpbGUgc2VjdXJpdHk6IFszXSBHZXRMYXN0RXJyb3I6IFsyXScpLAotKDEzMjcsIHUnSW52YWxpZCBEcml2ZTogWzJdJyksCi0oMTMyOCwgdSdFcnJvciBhcHBseWluZyBwYXRjaCB0byBmaWxlIFsyXS4gIEl0IGhhcyBwcm9iYWJseSBiZWVuIHVwZGF0ZWQgYnkgb3RoZXIgbWVhbnMsIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIG1vZGlmaWVkIGJ5IHRoaXMgcGF0Y2guICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBjb250YWN0IHlvdXIgcGF0Y2ggdmVuZG9yLiAge3tTeXN0ZW0gRXJyb3I6IFszXX19JyksCi0oMTMyOSwgdSdBIGZpbGUgdGhhdCBpcyByZXF1aXJlZCBjYW5ub3QgYmUgaW5zdGFsbGVkIGJlY2F1c2UgdGhlIGNhYmluZXQgZmlsZSBbMl0gaXMgbm90IGRpZ2l0YWxseSBzaWduZWQuICBUaGlzIG1heSBpbmRpY2F0ZSB0aGF0IHRoZSBjYWJpbmV0IGZpbGUgaXMgY29ycnVwdC4nKSwKLSgxMzMwLCB1J0EgZmlsZSB0aGF0IGlzIHJlcXVpcmVkIGNhbm5vdCBiZSBpbnN0YWxsZWQgYmVjYXVzZSB0aGUgY2FiaW5ldCBmaWxlIFsyXSBoYXMgYW4gaW52YWxpZCBkaWdpdGFsIHNpZ25hdHVyZS4gIFRoaXMgbWF5IGluZGljYXRlIHRoYXQgdGhlIGNhYmluZXQgZmlsZSBpcyBjb3JydXB0Lnt7ICBFcnJvciBbM10gd2FzIHJldHVybmVkIGJ5IFdpblZlcmlmeVRydXN0Ln19JyksCi0oMTMzMSwgdSdGYWlsZWQgdG8gY29ycmVjdGx5IGNvcHkgWzJdIGZpbGU6IENSQyBlcnJvci4nKSwKLSgxMzMyLCB1J0ZhaWxlZCB0byBjb3JyZWN0bHkgbW92ZSBbMl0gZmlsZTogQ1JDIGVycm9yLicpLAotKDEzMzMsIHUnRmFpbGVkIHRvIGNvcnJlY3RseSBwYXRjaCBbMl0gZmlsZTogQ1JDIGVycm9yLicpLAotKDEzMzQsIHUiVGhlIGZpbGUgJ1syXScgY2Fubm90IGJlIGluc3RhbGxlZCBiZWNhdXNlIHRoZSBmaWxlIGNhbm5vdCBiZSBmb3VuZCBpbiBjYWJpbmV0IGZpbGUgJ1szXScuIFRoaXMgY291bGQgaW5kaWNhdGUgYSBuZXR3b3JrIGVycm9yLCBhbiBlcnJvciByZWFkaW5nIGZyb20gdGhlIENELVJPTSwgb3IgYSBwcm9ibGVtIHdpdGggdGhpcyBwYWNrYWdlLiIpLAotKDEzMzUsIHUiVGhlIGNhYmluZXQgZmlsZSAnWzJdJyByZXF1aXJlZCBmb3IgdGhpcyBpbnN0YWxsYXRpb24gaXMgY29ycnVwdCBhbmQgY2Fubm90IGJlIHVzZWQuIFRoaXMgY291bGQgaW5kaWNhdGUgYSBuZXR3b3JrIGVycm9yLCBhbiBlcnJvciByZWFkaW5nIGZyb20gdGhlIENELVJPTSwgb3IgYSBwcm9ibGVtIHdpdGggdGhpcyBwYWNrYWdlLiIpLAotKDEzMzYsIHUnVGhlcmUgd2FzIGFuIGVycm9yIGNyZWF0aW5nIGEgdGVtcG9yYXJ5IGZpbGUgdGhhdCBpcyBuZWVkZWQgdG8gY29tcGxldGUgdGhpcyBpbnN0YWxsYXRpb24ue3sgIEZvbGRlcjogWzNdLiBTeXN0ZW0gZXJyb3IgY29kZTogWzJdfX0nKSwKLSgxNDAxLCB1J0NvdWxkIG5vdCBjcmVhdGUga2V5OiBbMl0uIHt7IFN5c3RlbSBlcnJvciBbM10ufX0gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgYWNjZXNzIHRvIHRoYXQga2V5LCBvciBjb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuICcpLAotKDE0MDIsIHUnQ291bGQgbm90IG9wZW4ga2V5OiBbMl0uIHt7IFN5c3RlbSBlcnJvciBbM10ufX0gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgYWNjZXNzIHRvIHRoYXQga2V5LCBvciBjb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuICcpLAotKDE0MDMsIHUnQ291bGQgbm90IGRlbGV0ZSB2YWx1ZSBbMl0gZnJvbSBrZXkgWzNdLiB7eyBTeXN0ZW0gZXJyb3IgWzRdLn19ICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IGFjY2VzcyB0byB0aGF0IGtleSwgb3IgY29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLiAnKSwKLSgxNDA0LCB1J0NvdWxkIG5vdCBkZWxldGUga2V5IFsyXS4ge3sgU3lzdGVtIGVycm9yIFszXS59fSAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBhY2Nlc3MgdG8gdGhhdCBrZXksIG9yIGNvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4gJyksCi0oMTQwNSwgdSdDb3VsZCBub3QgcmVhZCB2YWx1ZSBbMl0gZnJvbSBrZXkgWzNdLiB7eyBTeXN0ZW0gZXJyb3IgWzRdLn19ICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IGFjY2VzcyB0byB0aGF0IGtleSwgb3IgY29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLiAnKSwKLSgxNDA2LCB1J0NvdWxkIG5vdCB3cml0ZSB2YWx1ZSBbMl0gdG8ga2V5IFszXS4ge3sgU3lzdGVtIGVycm9yIFs0XS59fSAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBhY2Nlc3MgdG8gdGhhdCBrZXksIG9yIGNvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4nKSwKLSgxNDA3LCB1J0NvdWxkIG5vdCBnZXQgdmFsdWUgbmFtZXMgZm9yIGtleSBbMl0uIHt7IFN5c3RlbSBlcnJvciBbM10ufX0gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgYWNjZXNzIHRvIHRoYXQga2V5LCBvciBjb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuJyksCi0oMTQwOCwgdSdDb3VsZCBub3QgZ2V0IHN1YiBrZXkgbmFtZXMgZm9yIGtleSBbMl0uIHt7IFN5c3RlbSBlcnJvciBbM10ufX0gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgYWNjZXNzIHRvIHRoYXQga2V5LCBvciBjb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuJyksCi0oMTQwOSwgdSdDb3VsZCBub3QgcmVhZCBzZWN1cml0eSBpbmZvcm1hdGlvbiBmb3Iga2V5IFsyXS4ge3sgU3lzdGVtIGVycm9yIFszXS59fSAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBhY2Nlc3MgdG8gdGhhdCBrZXksIG9yIGNvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4nKSwKLSgxNDEwLCB1J0NvdWxkIG5vdCBpbmNyZWFzZSB0aGUgYXZhaWxhYmxlIHJlZ2lzdHJ5IHNwYWNlLiBbMl0gS0Igb2YgZnJlZSByZWdpc3RyeSBzcGFjZSBpcyByZXF1aXJlZCBmb3IgdGhlIGluc3RhbGxhdGlvbiBvZiB0aGlzIGFwcGxpY2F0aW9uLicpLAotKDE1MDAsIHUnQW5vdGhlciBpbnN0YWxsYXRpb24gaXMgaW4gcHJvZ3Jlc3MuIFlvdSBtdXN0IGNvbXBsZXRlIHRoYXQgaW5zdGFsbGF0aW9uIGJlZm9yZSBjb250aW51aW5nIHRoaXMgb25lLicpLAotKDE1MDEsIHUnRXJyb3IgYWNjZXNzaW5nIHNlY3VyZWQgZGF0YS4gUGxlYXNlIG1ha2Ugc3VyZSB0aGUgV2luZG93cyBJbnN0YWxsZXIgaXMgY29uZmlndXJlZCBwcm9wZXJseSBhbmQgdHJ5IHRoZSBpbnN0YWxsIGFnYWluLicpLAotKDE1MDIsIHUiVXNlciAnWzJdJyBoYXMgcHJldmlvdXNseSBpbml0aWF0ZWQgYW4gaW5zdGFsbCBmb3IgcHJvZHVjdCAnWzNdJy4gIFRoYXQgdXNlciB3aWxsIG5lZWQgdG8gcnVuIHRoYXQgaW5zdGFsbCBhZ2FpbiBiZWZvcmUgdGhleSBjYW4gdXNlIHRoYXQgcHJvZHVjdC4gIFlvdXIgY3VycmVudCBpbnN0YWxsIHdpbGwgbm93IGNvbnRpbnVlLiIpLAotKDE1MDMsIHUiVXNlciAnWzJdJyBoYXMgcHJldmlvdXNseSBpbml0aWF0ZWQgYW4gaW5zdGFsbCBmb3IgcHJvZHVjdCAnWzNdJy4gIFRoYXQgdXNlciB3aWxsIG5lZWQgdG8gcnVuIHRoYXQgaW5zdGFsbCBhZ2FpbiBiZWZvcmUgdGhleSBjYW4gdXNlIHRoYXQgcHJvZHVjdC4iKSwKLSgxNjAxLCB1Ik91dCBvZiBkaXNrIHNwYWNlIC0tIFZvbHVtZTogJ1syXSc7IHJlcXVpcmVkIHNwYWNlOiBbM10gS0I7IGF2YWlsYWJsZSBzcGFjZTogWzRdIEtCLiAgRnJlZSBzb21lIGRpc2sgc3BhY2UgYW5kIHJldHJ5LiIpLAotKDE2MDIsIHUnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNhbmNlbD8nKSwKLSgxNjAzLCB1IlRoZSBmaWxlIFsyXVszXSBpcyBiZWluZyBoZWxkIGluIHVzZXsgYnkgdGhlIGZvbGxvd2luZyBwcm9jZXNzOiBOYW1lOiBbNF0sIElkOiBbNV0sIFdpbmRvdyBUaXRsZTogJ1s2XSd9LiAgQ2xvc2UgdGhhdCBhcHBsaWNhdGlvbiBhbmQgcmV0cnkuIiksCi0oMTYwNCwgdSJUaGUgcHJvZHVjdCAnWzJdJyBpcyBhbHJlYWR5IGluc3RhbGxlZCwgcHJldmVudGluZyB0aGUgaW5zdGFsbGF0aW9uIG9mIHRoaXMgcHJvZHVjdC4gIFRoZSB0d28gcHJvZHVjdHMgYXJlIGluY29tcGF0aWJsZS4iKSwKLSgxNjA1LCB1IlRoZXJlIGlzIG5vdCBlbm91Z2ggZGlzayBzcGFjZSBvbiB0aGUgdm9sdW1lICdbMl0nIHRvIGNvbnRpbnVlIHRoZSBpbnN0YWxsIHdpdGggcmVjb3ZlcnkgZW5hYmxlZC4gWzNdIEtCIGFyZSByZXF1aXJlZCwgYnV0IG9ubHkgWzRdIEtCIGFyZSBhdmFpbGFibGUuIENsaWNrIElnbm9yZSB0byBjb250aW51ZSB0aGUgaW5zdGFsbCB3aXRob3V0IHNhdmluZyByZWNvdmVyeSBpbmZvcm1hdGlvbiwgY2xpY2sgUmV0cnkgdG8gY2hlY2sgZm9yIGF2YWlsYWJsZSBzcGFjZSBhZ2Fpbiwgb3IgY2xpY2sgQ2FuY2VsIHRvIHF1aXQgdGhlIGluc3RhbGxhdGlvbi4iKSwKLSgxNjA2LCB1J0NvdWxkIG5vdCBhY2Nlc3MgbmV0d29yayBsb2NhdGlvbiBbMl0uJyksCi0oMTYwNywgdSdUaGUgZm9sbG93aW5nIGFwcGxpY2F0aW9ucyBzaG91bGQgYmUgY2xvc2VkIGJlZm9yZSBjb250aW51aW5nIHRoZSBpbnN0YWxsOicpLAotKDE2MDgsIHUnQ291bGQgbm90IGZpbmQgYW55IHByZXZpb3VzbHkgaW5zdGFsbGVkIGNvbXBsaWFudCBwcm9kdWN0cyBvbiB0aGUgbWFjaGluZSBmb3IgaW5zdGFsbGluZyB0aGlzIHByb2R1Y3QuJyksCi0oMTYwOSwgdSJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBhcHBseWluZyBzZWN1cml0eSBzZXR0aW5ncy4gWzJdIGlzIG5vdCBhIHZhbGlkIHVzZXIgb3IgZ3JvdXAuIFRoaXMgY291bGQgYmUgYSBwcm9ibGVtIHdpdGggdGhlIHBhY2thZ2UsIG9yIGEgcHJvYmxlbSBjb25uZWN0aW5nIHRvIGEgZG9tYWluIGNvbnRyb2xsZXIgb24gdGhlIG5ldHdvcmsuIENoZWNrIHlvdXIgbmV0d29yayBjb25uZWN0aW9uIGFuZCBjbGljayBSZXRyeSwgb3IgQ2FuY2VsIHRvIGVuZCB0aGUgaW5zdGFsbC4ge3tVbmFibGUgdG8gbG9jYXRlIHRoZSB1c2VyJ3MgU0lELCBzeXN0ZW0gZXJyb3IgWzNdfX0iKSwKLSgxNzAxLCB1J1RoZSBrZXkgWzJdIGlzIG5vdCB2YWxpZC4gIFZlcmlmeSB0aGF0IHlvdSBlbnRlcmVkIHRoZSBjb3JyZWN0IGtleS4nKSwKLSgxNzAyLCB1J1RoZSBpbnN0YWxsZXIgbXVzdCByZXN0YXJ0IHlvdXIgc3lzdGVtIGJlZm9yZSBjb25maWd1cmF0aW9uIG9mIFsyXSBjYW4gY29udGludWUuICBDbGljayBZZXMgdG8gcmVzdGFydCBub3cgb3IgTm8gaWYgeW91IHBsYW4gdG8gbWFudWFsbHkgcmVzdGFydCBsYXRlci4nKSwKLSgxNzAzLCB1J1lvdSBtdXN0IHJlc3RhcnQgeW91ciBzeXN0ZW0gZm9yIHRoZSBjb25maWd1cmF0aW9uIGNoYW5nZXMgbWFkZSB0byBbMl0gdG8gdGFrZSBlZmZlY3QuIENsaWNrIFllcyB0byByZXN0YXJ0IG5vdyBvciBObyBpZiB5b3UgcGxhbiB0byBtYW51YWxseSByZXN0YXJ0IGxhdGVyLicpLAotKDE3MDQsIHUnQW4gaW5zdGFsbGF0aW9uIGZvciBbMl0gaXMgY3VycmVudGx5IHN1c3BlbmRlZC4gIFlvdSBtdXN0IHVuZG8gdGhlIGNoYW5nZXMgbWFkZSBieSB0aGF0IGluc3RhbGxhdGlvbiB0byBjb250aW51ZS4gIERvIHlvdSB3YW50IHRvIHVuZG8gdGhvc2UgY2hhbmdlcz8nKSwKLSgxNzA1LCB1J0EgcHJldmlvdXMgaW5zdGFsbGF0aW9uIGZvciB0aGlzIHByb2R1Y3QgaXMgaW4gcHJvZ3Jlc3MuICBZb3UgbXVzdCB1bmRvIHRoZSBjaGFuZ2VzIG1hZGUgYnkgdGhhdCBpbnN0YWxsYXRpb24gdG8gY29udGludWUuICBEbyB5b3Ugd2FudCB0byB1bmRvIHRob3NlIGNoYW5nZXM/JyksCi0oMTcwNiwgdSJBbiBpbnN0YWxsYXRpb24gcGFja2FnZSBmb3IgdGhlIHByb2R1Y3QgWzJdIGNhbm5vdCBiZSBmb3VuZC4gVHJ5IHRoZSBpbnN0YWxsYXRpb24gYWdhaW4gdXNpbmcgYSB2YWxpZCBjb3B5IG9mIHRoZSBpbnN0YWxsYXRpb24gcGFja2FnZSAnWzNdJy4iKSwKLSgxNzA3LCB1J0luc3RhbGxhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LicpLAotKDE3MDgsIHUnSW5zdGFsbGF0aW9uIGZhaWxlZC4nKSwKLSgxNzA5LCB1J1Byb2R1Y3Q6IFsyXSAtLSBbM10nKSwKLSgxNzEwLCB1J1lvdSBtYXkgZWl0aGVyIHJlc3RvcmUgeW91ciBjb21wdXRlciB0byBpdHMgcHJldmlvdXMgc3RhdGUgb3IgY29udGludWUgdGhlIGluc3RhbGwgbGF0ZXIuIFdvdWxkIHlvdSBsaWtlIHRvIHJlc3RvcmU/JyksCi0oMTcxMSwgdSdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB3cml0aW5nIGluc3RhbGxhdGlvbiBpbmZvcm1hdGlvbiB0byBkaXNrLiAgQ2hlY2sgdG8gbWFrZSBzdXJlIGVub3VnaCBkaXNrIHNwYWNlIGlzIGF2YWlsYWJsZSwgYW5kIGNsaWNrIFJldHJ5LCBvciBDYW5jZWwgdG8gZW5kIHRoZSBpbnN0YWxsLicpLAotKDE3MTIsIHUnT25lIG9yIG1vcmUgb2YgdGhlIGZpbGVzIHJlcXVpcmVkIHRvIHJlc3RvcmUgeW91ciBjb21wdXRlciB0byBpdHMgcHJldmlvdXMgc3RhdGUgY291bGQgbm90IGJlIGZvdW5kLiAgUmVzdG9yYXRpb24gd2lsbCBub3QgYmUgcG9zc2libGUuJyksCi0oMTcxMywgdSdbMl0gY2Fubm90IGluc3RhbGwgb25lIG9mIGl0cyByZXF1aXJlZCBwcm9kdWN0cy4gQ29udGFjdCB5b3VyIHRlY2huaWNhbCBzdXBwb3J0IGdyb3VwLiAge3tTeXN0ZW0gRXJyb3I6IFszXS59fScpLAotKDE3MTQsIHUnVGhlIG9sZGVyIHZlcnNpb24gb2YgWzJdIGNhbm5vdCBiZSByZW1vdmVkLiAgQ29udGFjdCB5b3VyIHRlY2huaWNhbCBzdXBwb3J0IGdyb3VwLiAge3tTeXN0ZW0gRXJyb3IgWzNdLn19JyksCi0oMTcxNSwgdSdJbnN0YWxsZWQgWzJdJyksCi0oMTcxNiwgdSdDb25maWd1cmVkIFsyXScpLAotKDE3MTcsIHUnUmVtb3ZlZCBbMl0nKSwKLSgxNzE4LCB1J0ZpbGUgWzJdIHdhcyByZWplY3RlZCBieSBkaWdpdGFsIHNpZ25hdHVyZSBwb2xpY3kuJyksCi0oMTcxOSwgdSdUaGUgV2luZG93cyBJbnN0YWxsZXIgU2VydmljZSBjb3VsZCBub3QgYmUgYWNjZXNzZWQuIFRoaXMgY2FuIG9jY3VyIGlmIHlvdSBhcmUgcnVubmluZyBXaW5kb3dzIGluIHNhZmUgbW9kZSwgb3IgaWYgdGhlIFdpbmRvd3MgSW5zdGFsbGVyIGlzIG5vdCBjb3JyZWN0bHkgaW5zdGFsbGVkLiBDb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwgZm9yIGFzc2lzdGFuY2UuJyksCi0oMTcyMCwgdSdUaGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGlzIFdpbmRvd3MgSW5zdGFsbGVyIHBhY2thZ2UuIEEgc2NyaXB0IHJlcXVpcmVkIGZvciB0aGlzIGluc3RhbGwgdG8gY29tcGxldGUgY291bGQgbm90IGJlIHJ1bi4gQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsIG9yIHBhY2thZ2UgdmVuZG9yLiAge3tDdXN0b20gYWN0aW9uIFsyXSBzY3JpcHQgZXJyb3IgWzNdLCBbNF06IFs1XSBMaW5lIFs2XSwgQ29sdW1uIFs3XSwgWzhdIH19JyksCi0oMTcyMSwgdSdUaGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGlzIFdpbmRvd3MgSW5zdGFsbGVyIHBhY2thZ2UuIEEgcHJvZ3JhbSByZXF1aXJlZCBmb3IgdGhpcyBpbnN0YWxsIHRvIGNvbXBsZXRlIGNvdWxkIG5vdCBiZSBydW4uIENvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbCBvciBwYWNrYWdlIHZlbmRvci4ge3tBY3Rpb246IFsyXSwgbG9jYXRpb246IFszXSwgY29tbWFuZDogWzRdIH19JyksCi0oMTcyMiwgdSdUaGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGlzIFdpbmRvd3MgSW5zdGFsbGVyIHBhY2thZ2UuIEEgcHJvZ3JhbSBydW4gYXMgcGFydCBvZiB0aGUgc2V0dXAgZGlkIG5vdCBmaW5pc2ggYXMgZXhwZWN0ZWQuIENvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbCBvciBwYWNrYWdlIHZlbmRvci4gIHt7QWN0aW9uIFsyXSwgbG9jYXRpb246IFszXSwgY29tbWFuZDogWzRdIH19JyksCi0oMTcyMywgdSdUaGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGlzIFdpbmRvd3MgSW5zdGFsbGVyIHBhY2thZ2UuIEEgRExMIHJlcXVpcmVkIGZvciB0aGlzIGluc3RhbGwgdG8gY29tcGxldGUgY291bGQgbm90IGJlIHJ1bi4gQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsIG9yIHBhY2thZ2UgdmVuZG9yLiAge3tBY3Rpb24gWzJdLCBlbnRyeTogWzNdLCBsaWJyYXJ5OiBbNF0gfX0nKSwKLSgxNzI0LCB1J1JlbW92YWwgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4nKSwKLSgxNzI1LCB1J1JlbW92YWwgZmFpbGVkLicpLAotKDE3MjYsIHUnQWR2ZXJ0aXNlbWVudCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LicpLAotKDE3MjcsIHUnQWR2ZXJ0aXNlbWVudCBmYWlsZWQuJyksCi0oMTcyOCwgdSdDb25maWd1cmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuJyksCi0oMTcyOSwgdSdDb25maWd1cmF0aW9uIGZhaWxlZC4nKSwKLSgxNzMwLCB1J1lvdSBtdXN0IGJlIGFuIEFkbWluaXN0cmF0b3IgdG8gcmVtb3ZlIHRoaXMgYXBwbGljYXRpb24uIFRvIHJlbW92ZSB0aGlzIGFwcGxpY2F0aW9uLCB5b3UgY2FuIGxvZyBvbiBhcyBhbiBBZG1pbmlzdHJhdG9yLCBvciBjb250YWN0IHlvdXIgdGVjaG5pY2FsIHN1cHBvcnQgZ3JvdXAgZm9yIGFzc2lzdGFuY2UuJyksCi0oMTgwMSwgdSdUaGUgcGF0aCBbMl0gaXMgbm90IHZhbGlkLiAgUGxlYXNlIHNwZWNpZnkgYSB2YWxpZCBwYXRoLicpLAotKDE4MDIsIHUnT3V0IG9mIG1lbW9yeS4gU2h1dCBkb3duIG90aGVyIGFwcGxpY2F0aW9ucyBiZWZvcmUgcmV0cnlpbmcuJyksCi0oMTgwMywgdSdUaGVyZSBpcyBubyBkaXNrIGluIGRyaXZlIFsyXS4gUGxlYXNlIGluc2VydCBvbmUgYW5kIGNsaWNrIFJldHJ5LCBvciBjbGljayBDYW5jZWwgdG8gZ28gYmFjayB0byB0aGUgcHJldmlvdXNseSBzZWxlY3RlZCB2b2x1bWUuJyksCi0oMTgwNCwgdSdUaGVyZSBpcyBubyBkaXNrIGluIGRyaXZlIFsyXS4gUGxlYXNlIGluc2VydCBvbmUgYW5kIGNsaWNrIFJldHJ5LCBvciBjbGljayBDYW5jZWwgdG8gcmV0dXJuIHRvIHRoZSBicm93c2UgZGlhbG9nIGFuZCBzZWxlY3QgYSBkaWZmZXJlbnQgdm9sdW1lLicpLAotKDE4MDUsIHUnVGhlIGZvbGRlciBbMl0gZG9lcyBub3QgZXhpc3QuICBQbGVhc2UgZW50ZXIgYSBwYXRoIHRvIGFuIGV4aXN0aW5nIGZvbGRlci4nKSwKLSgxODA2LCB1J1lvdSBoYXZlIGluc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIHJlYWQgdGhpcyBmb2xkZXIuJyksCi0oMTgwNywgdSdBIHZhbGlkIGRlc3RpbmF0aW9uIGZvbGRlciBmb3IgdGhlIGluc3RhbGwgY291bGQgbm90IGJlIGRldGVybWluZWQuJyksCi0oMTkwMSwgdSdFcnJvciBhdHRlbXB0aW5nIHRvIHJlYWQgZnJvbSB0aGUgc291cmNlIGluc3RhbGwgZGF0YWJhc2U6IFsyXS4nKSwKLSgxOTAyLCB1J1NjaGVkdWxpbmcgcmVib290IG9wZXJhdGlvbjogUmVuYW1pbmcgZmlsZSBbMl0gdG8gWzNdLiBNdXN0IHJlYm9vdCB0byBjb21wbGV0ZSBvcGVyYXRpb24uJyksCi0oMTkwMywgdSdTY2hlZHVsaW5nIHJlYm9vdCBvcGVyYXRpb246IERlbGV0aW5nIGZpbGUgWzJdLiBNdXN0IHJlYm9vdCB0byBjb21wbGV0ZSBvcGVyYXRpb24uJyksCi0oMTkwNCwgdSdNb2R1bGUgWzJdIGZhaWxlZCB0byByZWdpc3Rlci4gIEhSRVNVTFQgWzNdLiAgQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLicpLAotKDE5MDUsIHUnTW9kdWxlIFsyXSBmYWlsZWQgdG8gdW5yZWdpc3Rlci4gIEhSRVNVTFQgWzNdLiAgQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLicpLAotKDE5MDYsIHUnRmFpbGVkIHRvIGNhY2hlIHBhY2thZ2UgWzJdLiBFcnJvcjogWzNdLiBDb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuJyksCi0oMTkwNywgdSdDb3VsZCBub3QgcmVnaXN0ZXIgZm9udCBbMl0uICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IHBlcm1pc3Npb25zIHRvIGluc3RhbGwgZm9udHMsIGFuZCB0aGF0IHRoZSBzeXN0ZW0gc3VwcG9ydHMgdGhpcyBmb250LicpLAotKDE5MDgsIHUnQ291bGQgbm90IHVucmVnaXN0ZXIgZm9udCBbMl0uIFZlcmlmeSB0aGF0IHlvdSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gcmVtb3ZlIGZvbnRzLicpLAotKDE5MDksIHUnQ291bGQgbm90IGNyZWF0ZSBTaG9ydGN1dCBbMl0uIFZlcmlmeSB0aGF0IHRoZSBkZXN0aW5hdGlvbiBmb2xkZXIgZXhpc3RzIGFuZCB0aGF0IHlvdSBjYW4gYWNjZXNzIGl0LicpLAotKDE5MTAsIHUnQ291bGQgbm90IHJlbW92ZSBTaG9ydGN1dCBbMl0uIFZlcmlmeSB0aGF0IHRoZSBzaG9ydGN1dCBmaWxlIGV4aXN0cyBhbmQgdGhhdCB5b3UgY2FuIGFjY2VzcyBpdC4nKSwKLSgxOTExLCB1J0NvdWxkIG5vdCByZWdpc3RlciB0eXBlIGxpYnJhcnkgZm9yIGZpbGUgWzJdLiAgQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLicpLAotKDE5MTIsIHUnQ291bGQgbm90IHVucmVnaXN0ZXIgdHlwZSBsaWJyYXJ5IGZvciBmaWxlIFsyXS4gIENvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4nKSwKLSgxOTEzLCB1J0NvdWxkIG5vdCB1cGRhdGUgdGhlIGluaSBmaWxlIFsyXVszXS4gIFZlcmlmeSB0aGF0IHRoZSBmaWxlIGV4aXN0cyBhbmQgdGhhdCB5b3UgY2FuIGFjY2VzcyBpdC4nKSwKLSgxOTE0LCB1J0NvdWxkIG5vdCBzY2hlZHVsZSBmaWxlIFsyXSB0byByZXBsYWNlIGZpbGUgWzNdIG9uIHJlYm9vdC4gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHdyaXRlIHBlcm1pc3Npb25zIHRvIGZpbGUgWzNdLicpLAotKDE5MTUsIHUnRXJyb3IgcmVtb3ZpbmcgT0RCQyBkcml2ZXIgbWFuYWdlciwgT0RCQyBlcnJvciBbMl06IFszXS4gQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLicpLAotKDE5MTYsIHUnRXJyb3IgaW5zdGFsbGluZyBPREJDIGRyaXZlciBtYW5hZ2VyLCBPREJDIGVycm9yIFsyXTogWzNdLiBDb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuJyksCi0oMTkxNywgdSdFcnJvciByZW1vdmluZyBPREJDIGRyaXZlcjogWzRdLCBPREJDIGVycm9yIFsyXTogWzNdLiBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IHByaXZpbGVnZXMgdG8gcmVtb3ZlIE9EQkMgZHJpdmVycy4nKSwKLSgxOTE4LCB1J0Vycm9yIGluc3RhbGxpbmcgT0RCQyBkcml2ZXI6IFs0XSwgT0RCQyBlcnJvciBbMl06IFszXS4gVmVyaWZ5IHRoYXQgdGhlIGZpbGUgWzRdIGV4aXN0cyBhbmQgdGhhdCB5b3UgY2FuIGFjY2VzcyBpdC4nKSwKLSgxOTE5LCB1J0Vycm9yIGNvbmZpZ3VyaW5nIE9EQkMgZGF0YSBzb3VyY2U6IFs0XSwgT0RCQyBlcnJvciBbMl06IFszXS4gVmVyaWZ5IHRoYXQgdGhlIGZpbGUgWzRdIGV4aXN0cyBhbmQgdGhhdCB5b3UgY2FuIGFjY2VzcyBpdC4nKSwKLSgxOTIwLCB1IlNlcnZpY2UgJ1syXScgKFszXSkgZmFpbGVkIHRvIHN0YXJ0LiAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIHN0YXJ0IHN5c3RlbSBzZXJ2aWNlcy4iKSwKLSgxOTIxLCB1IlNlcnZpY2UgJ1syXScgKFszXSkgY291bGQgbm90IGJlIHN0b3BwZWQuICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IHByaXZpbGVnZXMgdG8gc3RvcCBzeXN0ZW0gc2VydmljZXMuIiksCi0oMTkyMiwgdSJTZXJ2aWNlICdbMl0nIChbM10pIGNvdWxkIG5vdCBiZSBkZWxldGVkLiAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIHJlbW92ZSBzeXN0ZW0gc2VydmljZXMuIiksCi0oMTkyMywgdSJTZXJ2aWNlICdbMl0nIChbM10pIGNvdWxkIG5vdCBiZSBpbnN0YWxsZWQuICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IHByaXZpbGVnZXMgdG8gaW5zdGFsbCBzeXN0ZW0gc2VydmljZXMuIiksCi0oMTkyNCwgdSJDb3VsZCBub3QgdXBkYXRlIGVudmlyb25tZW50IHZhcmlhYmxlICdbMl0nLiAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIG1vZGlmeSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIiksCi0oMTkyNSwgdSdZb3UgZG8gbm90IGhhdmUgc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIGNvbXBsZXRlIHRoaXMgaW5zdGFsbGF0aW9uIGZvciBhbGwgdXNlcnMgb2YgdGhlIG1hY2hpbmUuICBMb2cgb24gYXMgYWRtaW5pc3RyYXRvciBhbmQgdGhlbiByZXRyeSB0aGlzIGluc3RhbGxhdGlvbi4nKSwKLSgxOTI2LCB1IkNvdWxkIG5vdCBzZXQgZmlsZSBzZWN1cml0eSBmb3IgZmlsZSAnWzNdJy4gRXJyb3I6IFsyXS4gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byBtb2RpZnkgdGhlIHNlY3VyaXR5IHBlcm1pc3Npb25zIGZvciB0aGlzIGZpbGUuIiksCi0oMTkyNywgdSdDb21wb25lbnQgU2VydmljZXMgKENPTSsgMS4wKSBhcmUgbm90IGluc3RhbGxlZCBvbiB0aGlzIGNvbXB1dGVyLiAgVGhpcyBpbnN0YWxsYXRpb24gcmVxdWlyZXMgQ29tcG9uZW50IFNlcnZpY2VzIGluIG9yZGVyIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4gIENvbXBvbmVudCBTZXJ2aWNlcyBhcmUgYXZhaWxhYmxlIG9uIFdpbmRvd3MgMjAwMC4nKSwKLSgxOTI4LCB1J0Vycm9yIHJlZ2lzdGVyaW5nIENPTSsgQXBwbGljYXRpb24uICBDb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uJyksCi0oMTkyOSwgdSdFcnJvciB1bnJlZ2lzdGVyaW5nIENPTSsgQXBwbGljYXRpb24uICBDb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uJyksCi0oMTkzMCwgdSJUaGUgZGVzY3JpcHRpb24gZm9yIHNlcnZpY2UgJ1syXScgKFszXSkgY291bGQgbm90IGJlIGNoYW5nZWQuIiksCi0oMTkzMSwgdSdUaGUgV2luZG93cyBJbnN0YWxsZXIgc2VydmljZSBjYW5ub3QgdXBkYXRlIHRoZSBzeXN0ZW0gZmlsZSBbMl0gYmVjYXVzZSB0aGUgZmlsZSBpcyBwcm90ZWN0ZWQgYnkgV2luZG93cy4gIFlvdSBtYXkgbmVlZCB0byB1cGRhdGUgeW91ciBvcGVyYXRpbmcgc3lzdGVtIGZvciB0aGlzIHByb2dyYW0gdG8gd29yayBjb3JyZWN0bHkuIHt7UGFja2FnZSB2ZXJzaW9uOiBbM10sIE9TIFByb3RlY3RlZCB2ZXJzaW9uOiBbNF19fScpLAotKDE5MzIsIHUnVGhlIFdpbmRvd3MgSW5zdGFsbGVyIHNlcnZpY2UgY2Fubm90IHVwZGF0ZSB0aGUgcHJvdGVjdGVkIFdpbmRvd3MgZmlsZSBbMl0uIHt7UGFja2FnZSB2ZXJzaW9uOiBbM10sIE9TIFByb3RlY3RlZCB2ZXJzaW9uOiBbNF0sIFNGUCBFcnJvcjogWzVdfX0nKSwKLSgxOTMzLCB1J1RoZSBXaW5kb3dzIEluc3RhbGxlciBzZXJ2aWNlIGNhbm5vdCB1cGRhdGUgb25lIG9yIG1vcmUgcHJvdGVjdGVkIFdpbmRvd3MgZmlsZXMuIHt7U0ZQIEVycm9yOiBbMl0uICBMaXN0IG9mIHByb3RlY3RlZCBmaWxlczpcXHJcXG5bM119fScpLAotKDE5MzQsIHUnVXNlciBpbnN0YWxsYXRpb25zIGFyZSBkaXNhYmxlZCB2aWEgcG9saWN5IG9uIHRoZSBtYWNoaW5lLicpLAotKDE5MzUsIHUnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gb2YgYXNzZW1ibHkgY29tcG9uZW50IFsyXS4gSFJFU1VMVDogWzNdLiB7e2Fzc2VtYmx5IGludGVyZmFjZTogWzRdLCBmdW5jdGlvbjogWzVdLCBhc3NlbWJseSBuYW1lOiBbNl19fScpLAotXQotCi10YWJsZXM9WydBZG1pbkV4ZWN1dGVTZXF1ZW5jZScsICdBZG1pblVJU2VxdWVuY2UnLCAnQWR2dEV4ZWN1dGVTZXF1ZW5jZScsICdCQkNvbnRyb2wnLCAnQmlsbGJvYXJkJywgJ0JpbmFyeScsICdDaGVja0JveCcsICdQcm9wZXJ0eScsICdDb21ib0JveCcsICdDb250cm9sJywgJ0xpc3RCb3gnLCAnQWN0aW9uVGV4dCcsICdDb250cm9sQ29uZGl0aW9uJywgJ0NvbnRyb2xFdmVudCcsICdEaWFsb2cnLCAnRXZlbnRNYXBwaW5nJywgJ0luc3RhbGxFeGVjdXRlU2VxdWVuY2UnLCAnSW5zdGFsbFVJU2VxdWVuY2UnLCAnTGlzdFZpZXcnLCAnUmFkaW9CdXR0b24nLCAnVGV4dFN0eWxlJywgJ1VJVGV4dCcsICdfVmFsaWRhdGlvbicsICdFcnJvciddCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdXBsb2FkcmVsZWFzZS5iYXQgYi9Ub29scy9tc2kvdXBsb2FkcmVsZWFzZS5iYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUzMTljZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS91cGxvYWRyZWxlYXNlLmJhdApAQCAtMCwwICsxLDYzIEBACitAc2V0bG9jYWwNCitAZWNobyBvZmYNCisNCitzZXQgRD0lfmRwMA0KK3NldCBQQ0JVSUxEPSVEJS4uXC4uXFBDQnVpbGRcDQorDQorc2V0IEhPU1Q9DQorc2V0IFVTRVI9DQorc2V0IFRBUkdFVD0NCitzZXQgRFJZUlVOPWZhbHNlDQorc2V0IE5PR1BHPQ0KKw0KKzpDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLWgiIGdvdG8gSGVscA0KK2lmICIlMSIgRVFVICItbyIgKHNldCBIT1NUPSV+MikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS1ob3N0IiAoc2V0IEhPU1Q9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItdSIgKHNldCBVU0VSPSV+MikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS11c2VyIiAoc2V0IFVTRVI9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItdCIgKHNldCBUQVJHRVQ9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLXRhcmdldCIgKHNldCBUQVJHRVQ9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLWRyeS1ydW4iIChzZXQgRFJZUlVOPXRydWUpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi0tbm8tZ3BnIiAoc2V0IE5PR1BHPXRydWUpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQorDQoraWYgbm90IGRlZmluZWQgUExJTksgd2hlcmUgcGxpbmsgPiAiJVRFTVAlXHBsaW5rLmxvYyIgMj4gbnVsICYmIHNldCAvUCBQTElOSz0gPCAiJVRFTVAlXHBsaW5rLmxvYyIgJiBkZWwgIiVURU1QJVxwbGluay5sb2MiDQoraWYgbm90IGRlZmluZWQgUExJTksgd2hlcmUgL1IgIiVQcm9ncmFtRmlsZXMoeDg2KSVcUHVUVFkiIHBsaW5rID4gIiVURU1QJVxwbGluay5sb2MiIDI+IG51bCAmJiBzZXQgL1AgUExJTks9IDwgIiVURU1QJVxwbGluay5sb2MiICYgZGVsICIlVEVNUCVccGxpbmsubG9jIg0KK2lmIG5vdCBkZWZpbmVkIFBMSU5LIHdoZXJlIC9SICIlUHJvZ3JhbUZpbGVzKHg4NiklIiBwbGluayA+ICIlVEVNUCVccGxpbmsubG9jIiAyPiBudWwgJiYgc2V0IC9QIFBMSU5LPSA8ICIlVEVNUCVccGxpbmsubG9jIiAmIGRlbCAiJVRFTVAlXHBsaW5rLmxvYyINCitpZiBub3QgZGVmaW5lZCBQTElOSyBlY2hvIENhbm5vdCBsb2NhdGUgcGxpbmsuZXhlICYgZXhpdCAvQiAxDQorZWNobyBGb3VuZCBwbGluay5leGUgYXQgJVBMSU5LJQ0KKw0KK2lmIG5vdCBkZWZpbmVkIFBTQ1Agd2hlcmUgcHNjcCA+ICIlVEVNUCVccHNjcC5sb2MiIDI+IG51bCAmJiBzZXQgL1AgcHNjcD0gPCAiJVRFTVAlXHBzY3AubG9jIiAmIGRlbCAiJVRFTVAlXHBzY3AubG9jIg0KK2lmIG5vdCBkZWZpbmVkIFBTQ1Agd2hlcmUgL1IgIiVQcm9ncmFtRmlsZXMoeDg2KSVcUHVUVFkiIHBzY3AgPiAiJVRFTVAlXHBzY3AubG9jIiAyPiBudWwgJiYgc2V0IC9QIHBzY3A9IDwgIiVURU1QJVxwc2NwLmxvYyIgJiBkZWwgIiVURU1QJVxwc2NwLmxvYyINCitpZiBub3QgZGVmaW5lZCBQU0NQIHdoZXJlIC9SICIlUHJvZ3JhbUZpbGVzKHg4NiklIiBwc2NwID4gIiVURU1QJVxwc2NwLmxvYyIgMj4gbnVsICYmIHNldCAvUCBwc2NwPSA8ICIlVEVNUCVccHNjcC5sb2MiICYgZGVsICIlVEVNUCVccHNjcC5sb2MiDQoraWYgbm90IGRlZmluZWQgUFNDUCBlY2hvIENhbm5vdCBsb2NhdGUgcHNjcC5leGUgJiBleGl0IC9CIDENCitlY2hvIEZvdW5kIHBzY3AuZXhlIGF0ICVQU0NQJQ0KKw0KK2lmIGRlZmluZWQgTk9HUEcgKA0KKyAgICBzZXQgR1BHPQ0KKyAgICBlY2hvIFNraXBwaW5nIEdQRyBzaWduYXR1cmUgZ2VuZXJhdGlvbiBiZWNhdXNlIG9mIC0tbm8tZ3BnDQorKSBlbHNlICAoDQorICAgIGlmIG5vdCBkZWZpbmVkIEdQRyB3aGVyZSBncGcyID4gIiVURU1QJVxncGcubG9jIiAyPiBudWwgJiYgc2V0IC9QIEdQRz0gPCAiJVRFTVAlXGdwZy5sb2MiICYgZGVsICIlVEVNUCVcZ3BnLmxvYyINCisgICAgaWYgbm90IGRlZmluZWQgR1BHIHdoZXJlIC9SICIlUENCVUlMRCUuLlxleHRlcm5hbHNcd2luZG93cy1pbnN0YWxsZXIiIGdwZzIgPiAiJVRFTVAlXGdwZy5sb2MiIDI+IG51bCAmJiBzZXQgL1AgR1BHPSA8ICIlVEVNUCVcZ3BnLmxvYyIgJiBkZWwgIiVURU1QJVxncGcubG9jIg0KKyAgICBpZiBub3QgZGVmaW5lZCBHUEcgZWNobyBDYW5ub3QgbG9jYXRlIGdwZzIuZXhlLiBTaWduYXR1cmVzIHdpbGwgbm90IGJlIHVwbG9hZGVkICYgcGF1c2UNCisgICAgZWNobyBGb3VuZCBncGcyLmV4ZSBhdCAlR1BHJQ0KKykNCisNCitjYWxsICIlUENCVUlMRCVlbnYuYmF0IiA+IG51bCAyPiBudWwNCitwdXNoZCAiJUQlIg0KK21zYnVpbGQgL3Y6bSAvbm9sb2dvIHVwbG9hZHJlbGVhc2UucHJvaiAvdDpVcGxvYWQgL3A6UGxhdGZvcm09eDg2DQorbXNidWlsZCAvdjptIC9ub2xvZ28gdXBsb2FkcmVsZWFzZS5wcm9qIC90OlVwbG9hZCAvcDpQbGF0Zm9ybT14NjQgL3A6SW5jbHVkZURvYz1mYWxzZQ0KK21zYnVpbGQgL3Y6bSAvbm9sb2dvIHVwbG9hZHJlbGVhc2UucHJvaiAvdDpTaG93SGFzaGVzIC9wOlBsYXRmb3JtPXg4Ng0KK21zYnVpbGQgL3Y6bSAvbm9sb2dvIHVwbG9hZHJlbGVhc2UucHJvaiAvdDpTaG93SGFzaGVzIC9wOlBsYXRmb3JtPXg2NCAvcDpJbmNsdWRlRG9jPWZhbHNlDQorcG9wZA0KK2V4aXQgL0IgMA0KKw0KKzpIZWxwDQorZWNobyB1cGxvYWRyZWxlYXNlLmJhdCAtLWhvc3QgSE9TVCAtLXVzZXIgVVNFUk5BTUUgWy0tdGFyZ2V0IFRBUkdFVF0gWy0tZHJ5LXJ1bl0gWy1oXQ0KK2VjaG8uDQorZWNobyAgICAtLWhvc3QgKC1vKSAgICAgU3BlY2lmeSB0aGUgdXBsb2FkIGhvc3QgKHJlcXVpcmVkKQ0KK2VjaG8gICAgLS11c2VyICgtdSkgICAgIFNwZWNpZnkgdGhlIHVzZXIgb24gdGhlIGhvc3QgKHJlcXVpcmVkKQ0KK2VjaG8gICAgLS10YXJnZXQgKC10KSAgIFNwZWNpZnkgdGhlIHRhcmdldCBkaXJlY3Rvcnkgb24gdGhlIGhvc3QNCitlY2hvICAgIC0tZHJ5LXJ1biAgICAgICBEaXNwbGF5IGNvbW1hbmRzIGFuZCBmaWxlbmFtZXMgd2l0aG91dCBleGVjdXRpbmcgdGhlbQ0KK2VjaG8gICAgLWggICAgICAgICAgICAgIERpc3BsYXkgdGhpcyBoZWxwIGluZm9ybWF0aW9uDQorZWNoby4NCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdXBsb2FkcmVsZWFzZS5wcm9qIGIvVG9vbHMvbXNpL3VwbG9hZHJlbGVhc2UucHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDQ3MmRlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3VwbG9hZHJlbGVhc2UucHJvagpAQCAtMCwwICsxLDgwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57MkQ2OUYyQUItRDVEMC00MzQ0LTg0QjUtRUY2REIzNEE5QkM5fTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxPdXRwdXROYW1lPnB5dGhvbjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFN1ZmZpeD48L091dHB1dFN1ZmZpeD4KKyAgICAgICAgCisgICAgICAgIDxEb3dubG9hZFVybEJhc2UgQ29uZGl0aW9uPSInJChEb3dubG9hZFVybEJhc2UpJyA9PSAnJyI+JChUQVJHRVQpPC9Eb3dubG9hZFVybEJhc2U+CisgICAgICAgIDxEb3dubG9hZFVybEJhc2UgQ29uZGl0aW9uPSInJChEb3dubG9hZFVybEJhc2UpJyA9PSAnJyI+L3Nydi93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uPC9Eb3dubG9hZFVybEJhc2U+CisgICAgICAgIDxJbmNsdWRlRG9jIENvbmRpdGlvbj0iJyQoSW5jbHVkZURvYyknID09ICcnIj50cnVlPC9JbmNsdWRlRG9jPgorICAgICAgICA8RHJ5UnVuIENvbmRpdGlvbj0iJyQoRHJ5UnVuKScgPT0gJyciPmZhbHNlPC9EcnlSdW4+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgICAgPEltcG9ydCBQcm9qZWN0PSJtc2kucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJidW5kbGVcYnVuZGxlLnRhcmdldHMiIC8+CisgICAgCisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxFWEVUYXJnZXQ+JChEb3dubG9hZFVybEJhc2UuVHJpbUVuZChgL2ApKS8kKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLiQoTWljcm9WZXJzaW9uTnVtYmVyKTwvRVhFVGFyZ2V0PgorICAgICAgICA8TVNJVGFyZ2V0PiQoRG93bmxvYWRVcmwuUmVwbGFjZShge3ZlcnNpb259YCwgYCQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikuJChNaWNyb1ZlcnNpb25OdW1iZXIpYCkuUmVwbGFjZShge2FyY2h9YCwgYCQoQXJjaE5hbWUpYCkuUmVwbGFjZShge3JlbGVhc2VuYW1lfWAsIGAkKFJlbGVhc2VMZXZlbE5hbWUpYCkuUmVwbGFjZShge21zaX1gLCBgYCkuVHJpbUVuZChgL2ApKTwvTVNJVGFyZ2V0PgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICAKKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RmlsZSBJbmNsdWRlPSIkKE91dHB1dFBhdGgpXCoubXNpOyQoT3V0cHV0UGF0aClcKi5tc3UiPgorICAgICAgICAgICAgPENvcHlUbz4kKE1TSVRhcmdldCk8L0NvcHlUbz4KKyAgICAgICAgPC9GaWxlPgorICAgICAgICA8RmlsZSBJbmNsdWRlPSIkKE91dHB1dFBhdGgpXCouZXhlOyQoT3V0cHV0UGF0aClcKi56aXAiPgorICAgICAgICAgICAgPENvcHlUbz4kKEVYRVRhcmdldCk8L0NvcHlUbz4KKyAgICAgICAgPC9GaWxlPgorICAgICAgICA8RmlsZSBJbmNsdWRlPSIkKFB5U291cmNlUGF0aClEb2NcYnVpbGRcaHRtbGhlbHBccHl0aG9uJChNYWpvclZlcnNpb25OdW1iZXIpJChNaW5vclZlcnNpb25OdW1iZXIpJChNaWNyb1ZlcnNpb25OdW1iZXIpJChSZWxlYXNlTGV2ZWxOYW1lKS5jaG0iIENvbmRpdGlvbj0iJChJbmNsdWRlRG9jKSI+CisgICAgICAgICAgICA8Q29weVRvPiQoRVhFVGFyZ2V0KTwvQ29weVRvPgorICAgICAgICA8L0ZpbGU+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPFRhcmdldCBOYW1lPSJfVmFsaWRhdGVQcm9wZXJ0aWVzIj4KKyAgICAgICAgPEVycm9yIFRleHQ9Ik5vIHZhbHVlIGZvciBIb3N0IHByb3ZpZGVkIiBDb25kaXRpb249IickKEhvc3QpJyA9PSAnJyIgLz4KKyAgICAgICAgPEVycm9yIFRleHQ9Ik5vIHZhbHVlIGZvciBVc2VyIHByb3ZpZGVkIiBDb25kaXRpb249IickKFVzZXIpJyA9PSAnJyIgLz4KKyAgICAgICAgPEVycm9yIFRleHQ9Ik5vIHBhdGggZm9yIFBTQ1AgcHJvdmlkZWQiIENvbmRpdGlvbj0iJyQoUFNDUCknID09ICcnIiAvPgorICAgICAgICA8RXJyb3IgVGV4dD0iTm8gcGF0aCBmb3IgUExJTksgcHJvdmlkZWQiIENvbmRpdGlvbj0iJyQoUExJTkspJyA9PSAnJyIgLz4KKyAgICA8L1RhcmdldD4KKyAgICAKKyAgICA8VGFyZ2V0IE5hbWU9Il9SdW5HcGciIENvbmRpdGlvbj0iJyQoR1BHKScgIT0gJyciIElucHV0cz0iQChGaWxlKSIgT3V0cHV0cz0iJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKVxncGdcJShGaWxlTmFtZSklKEV4dGVuc2lvbikuYXNjIj4KKyAgICAgICAgPE1ha2VEaXIgRGlyZWN0b3JpZXM9IiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClncGciIC8+CisgICAgICAgIDxEZWxldGUgRmlsZXM9IiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClcZ3BnXCUoRmlsZS5GaWxlTmFtZSklKEZpbGUuRXh0ZW5zaW9uKS5hc2MiIENvbmRpdGlvbj0iRXhpc3RzKCckKEludGVybWVkaWF0ZU91dHB1dFBhdGgpXGdwZ1wlKEZpbGUuRmlsZU5hbWUpJShGaWxlLkV4dGVuc2lvbikuYXNjJykiIC8+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9IiZxdW90OyQoR1BHKSZxdW90OyAtYmEgLW8gJnF1b3Q7JChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKVxncGdcJShGaWxlLkZpbGVOYW1lKSUoRmlsZS5FeHRlbnNpb24pLmFzYyZxdW90OyAmcXVvdDslKEZpbGUuRnVsbFBhdGgpJnF1b3Q7IiAvPgorICAgICAgICA8SXRlbUdyb3VwPgorICAgICAgICAgICAgPEZpbGUgSW5jbHVkZT0iJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKVxncGdcJShGaWxlLkZpbGVOYW1lKSUoRmlsZS5FeHRlbnNpb24pLmFzYyI+CisgICAgICAgICAgICAgICAgPENvcHlUbz4lKEZpbGUuQ29weVRvKTwvQ29weVRvPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICA8L0l0ZW1Hcm91cD4KKyAgICA8L1RhcmdldD4KKyAgICAKKyAgICA8VGFyZ2V0IE5hbWU9Il9VcGxvYWQiIENvbmRpdGlvbj0iISQoRHJ5UnVuKSI+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9IiZxdW90OyQoUExJTkspJnF1b3Q7ICQoVXNlcilAJChIb3N0KSBta2RpciAlKEZpbGUuQ29weVRvKSBeJmFtcDteJmFtcDsgY2hncnAgZG93bmxvYWRzICUoRmlsZS5Db3B5VG8pIF4mYW1wO14mYW1wOyBjaG1vZCBnLXcsbytyeCAlKEZpbGUuQ29weVRvKQorJnF1b3Q7JChQU0NQKSZxdW90OyBAKEZpbGUsJyAnKSAkKFVzZXIpQCQoSG9zdCk6JShGaWxlLkNvcHlUbykKKyZxdW90OyQoUExJTkspJnF1b3Q7ICQoVXNlcilAJChIb3N0KSBjaGdycCBkb3dubG9hZHMgJShGaWxlLkNvcHlUbykvKjsgY2htb2QgZy13LG8rciAlKEZpbGUuQ29weVRvKS8qCisiIC8+CisgICAgPC9UYXJnZXQ+CisgICAgCisgICAgPFRhcmdldCBOYW1lPSJfUHJpbnROYW1lcyIgQ29uZGl0aW9uPSIkKERyeVJ1bikiPgorICAgICAgICA8RXhlYyBDb21tYW5kPSJlY2hvICZxdW90OyQoUExJTkspJnF1b3Q7ICQoVXNlcilAJChIb3N0KSBta2RpciAlKEZpbGUuQ29weVRvKSBeJmFtcDteJmFtcDsgY2hncnAgZG93bmxvYWRzICUoRmlsZS5Db3B5VG8pIF4mYW1wO14mYW1wOyBjaG1vZCBnLXcsbytyeCAlKEZpbGUuQ29weVRvKQorZWNobyAmcXVvdDskKFBTQ1ApJnF1b3Q7IEAoRmlsZSwnICcpICQoVXNlcilAJChIb3N0KTolKEZpbGUuQ29weVRvKQorZWNobyAmcXVvdDskKFBMSU5LKSZxdW90OyAkKFVzZXIpQCQoSG9zdCkgY2hncnAgZG93bmxvYWRzICUoRmlsZS5Db3B5VG8pLyo7IGNobW9kIGctdyxvK3IgJShGaWxlLkNvcHlUbykvKgorZWNoby4KK2VjaG8uIiAvPgorICAgIDwvVGFyZ2V0PgorICAgIAorICAgIDxUYXJnZXQgTmFtZT0iVXBsb2FkIiBEZXBlbmRzT25UYXJnZXRzPSJfVmFsaWRhdGVQcm9wZXJ0aWVzO19SdW5HcGc7X1ByaW50TmFtZXM7X1VwbG9hZCIgLz4KKyAgICAKKyAgICA8VGFyZ2V0IE5hbWU9IlNob3dIYXNoZXMiPgorICAgICAgICA8SXRlbUdyb3VwPgorICAgICAgICAgICAgPFVzZXJGaWxlcyBJbmNsdWRlPSJAKEZpbGUpIiBDb25kaXRpb249IiclKEZpbGUuQ29weVRvKScgPT0gJyQoRVhFVGFyZ2V0KSciIC8+CisgICAgICAgIDwvSXRlbUdyb3VwPgorICAgICAgICAKKyAgICAgICAgPEV4ZWMgQ29tbWFuZD0iJnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGdlbmVyYXRlX21kNS5weSBAKFVzZXJGaWxlcy0+JyZxdW90OyUoRnVsbFBhdGgpJnF1b3Q7JywnICcpIiAvPgorICAgIDwvVGFyZ2V0PgorICAgIAorICAgIDxUYXJnZXQgTmFtZT0iQnVpbGQiPgorICAgICAgICA8RXJyb3IgVGV4dD0iVGhpcyBzY3JpcHQgc2hvdWxkIGJlIGludm9rZWQgdXNpbmcgdXBsb2FkcmVsZWFzZS5iYXQuIiAvPgorICAgIDwvVGFyZ2V0PgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3dpeC5wcm9wcyBiL1Rvb2xzL21zaS93aXgucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJiMmQxMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS93aXgucHJvcHMKQEAgLTAsMCArMSwxMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEltcG9ydCBQcm9qZWN0PSIuLlwuLlxQQ0J1aWxkXHB5dGhvbi5wcm9wcyIgLz4KKyAgCisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxXaXhJbnN0YWxsUGF0aCBDb25kaXRpb249IickKFdpeEluc3RhbGxQYXRoKScgPT0gJycgYW5kIEV4aXN0cygnJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpXFdpeCcpIj4kKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSlcV2l4XDwvV2l4SW5zdGFsbFBhdGg+CisgICAgPFdpeEluc3RhbGxQYXRoIENvbmRpdGlvbj0iJyQoV2l4SW5zdGFsbFBhdGgpJyA9PSAnJyBhbmQgRXhpc3RzKCckKEV4dGVybmFsc0Rpcilcd2luZG93cy1pbnN0YWxsZXJcd2l4JykiPiQoRXh0ZXJuYWxzRGlyKVx3aW5kb3dzLWluc3RhbGxlclx3aXhcPC9XaXhJbnN0YWxsUGF0aD4KKyAgICA8V2l4SW5zdGFsbFBhdGggQ29uZGl0aW9uPSInJChXaXhJbnN0YWxsUGF0aCknID09ICcnIj4kKFJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTT0ZUV0FSRVxNaWNyb3NvZnRcV2luZG93cyBJbnN0YWxsZXIgWE1MXDMuMTBASW5zdGFsbFJvb3QpPC9XaXhJbnN0YWxsUGF0aD4KKyAgICA8V2l4SW5zdGFsbFBhdGggQ29uZGl0aW9uPSInJChXaXhJbnN0YWxsUGF0aCknID09ICcnIj4kKFJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTT0ZUV0FSRVxXb3c2NDMyTm9kZVxNaWNyb3NvZnRcV2luZG93cyBJbnN0YWxsZXIgWE1MXDMuMTBASW5zdGFsbFJvb3QpPC9XaXhJbnN0YWxsUGF0aD4KKyAgICA8V2l4VGFyZ2V0c1BhdGg+JChXaXhJbnN0YWxsUGF0aClcV2l4LnRhcmdldHM8L1dpeFRhcmdldHNQYXRoPgorICA8L1Byb3BlcnR5R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvcGFyc2VyL3VucGFyc2UucHkgYi9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQppbmRleCA4MzdjZDgxLi5jODI4NTc3IDEwMDY0NAotLS0gYS9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQorKysgYi9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQpAQCAtMTM4LDYgKzEzOCwxNCBAQAogICAgICAgICBzZWxmLmZpbGwoIm5vbmxvY2FsICIpCiAgICAgICAgIGludGVybGVhdmUobGFtYmRhOiBzZWxmLndyaXRlKCIsICIpLCBzZWxmLndyaXRlLCB0Lm5hbWVzKQogCisgICAgZGVmIF9Bd2FpdChzZWxmLCB0KToKKyAgICAgICAgc2VsZi53cml0ZSgiKCIpCisgICAgICAgIHNlbGYud3JpdGUoImF3YWl0IikKKyAgICAgICAgaWYgdC52YWx1ZToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIiAiKQorICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LnZhbHVlKQorICAgICAgICBzZWxmLndyaXRlKCIpIikKKwogICAgIGRlZiBfWWllbGQoc2VsZiwgdCk6CiAgICAgICAgIHNlbGYud3JpdGUoIigiKQogICAgICAgICBzZWxmLndyaXRlKCJ5aWVsZCIpCkBAIC0yMTEsMTYgKzIxOSw2IEBACiAgICAgICAgICAgICBpZiBjb21tYTogc2VsZi53cml0ZSgiLCAiKQogICAgICAgICAgICAgZWxzZTogY29tbWEgPSBUcnVlCiAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKGUpCi0gICAgICAgIGlmIHQuc3RhcmFyZ3M6Ci0gICAgICAgICAgICBpZiBjb21tYTogc2VsZi53cml0ZSgiLCAiKQotICAgICAgICAgICAgZWxzZTogY29tbWEgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLndyaXRlKCIqIikKLSAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5zdGFyYXJncykKLSAgICAgICAgaWYgdC5rd2FyZ3M6Ci0gICAgICAgICAgICBpZiBjb21tYTogc2VsZi53cml0ZSgiLCAiKQotICAgICAgICAgICAgZWxzZTogY29tbWEgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLndyaXRlKCIqKiIpCi0gICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQua3dhcmdzKQogICAgICAgICBzZWxmLndyaXRlKCIpIikKIAogICAgICAgICBzZWxmLmVudGVyKCkKQEAgLTIyOCwxMSArMjI2LDE4IEBACiAgICAgICAgIHNlbGYubGVhdmUoKQogCiAgICAgZGVmIF9GdW5jdGlvbkRlZihzZWxmLCB0KToKKyAgICAgICAgc2VsZi5fX0Z1bmN0aW9uRGVmX2hlbHBlcih0LCAiZGVmIikKKworICAgIGRlZiBfQXN5bmNGdW5jdGlvbkRlZihzZWxmLCB0KToKKyAgICAgICAgc2VsZi5fX0Z1bmN0aW9uRGVmX2hlbHBlcih0LCAiYXN5bmMgZGVmIikKKworICAgIGRlZiBfX0Z1bmN0aW9uRGVmX2hlbHBlcihzZWxmLCB0LCBmaWxsX3N1ZmZpeCk6CiAgICAgICAgIHNlbGYud3JpdGUoIlxuIikKICAgICAgICAgZm9yIGRlY28gaW4gdC5kZWNvcmF0b3JfbGlzdDoKICAgICAgICAgICAgIHNlbGYuZmlsbCgiQCIpCiAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKGRlY28pCi0gICAgICAgIHNlbGYuZmlsbCgiZGVmICIrdC5uYW1lICsgIigiKQorICAgICAgICBkZWZfc3RyID0gZmlsbF9zdWZmaXgrIiAiK3QubmFtZSArICIoIgorICAgICAgICBzZWxmLmZpbGwoZGVmX3N0cikKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmFyZ3MpCiAgICAgICAgIHNlbGYud3JpdGUoIikiKQogICAgICAgICBpZiB0LnJldHVybnM6CkBAIC0yNDMsNyArMjQ4LDEzIEBACiAgICAgICAgIHNlbGYubGVhdmUoKQogCiAgICAgZGVmIF9Gb3Ioc2VsZiwgdCk6Ci0gICAgICAgIHNlbGYuZmlsbCgiZm9yICIpCisgICAgICAgIHNlbGYuX19Gb3JfaGVscGVyKCJmb3IgIiwgdCkKKworICAgIGRlZiBfQXN5bmNGb3Ioc2VsZiwgdCk6CisgICAgICAgIHNlbGYuX19Gb3JfaGVscGVyKCJhc3luYyBmb3IgIiwgdCkKKworICAgIGRlZiBfX0Zvcl9oZWxwZXIoc2VsZiwgZmlsbCwgdCk6CisgICAgICAgIHNlbGYuZmlsbChmaWxsKQogICAgICAgICBzZWxmLmRpc3BhdGNoKHQudGFyZ2V0KQogICAgICAgICBzZWxmLndyaXRlKCIgaW4gIikKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0Lml0ZXIpCkBAIC0yOTcsNiArMzA4LDEzIEBACiAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5ib2R5KQogICAgICAgICBzZWxmLmxlYXZlKCkKIAorICAgIGRlZiBfQXN5bmNXaXRoKHNlbGYsIHQpOgorICAgICAgICBzZWxmLmZpbGwoImFzeW5jIHdpdGggIikKKyAgICAgICAgaW50ZXJsZWF2ZShsYW1iZGE6IHNlbGYud3JpdGUoIiwgIiksIHNlbGYuZGlzcGF0Y2gsIHQuaXRlbXMpCisgICAgICAgIHNlbGYuZW50ZXIoKQorICAgICAgICBzZWxmLmRpc3BhdGNoKHQuYm9keSkKKyAgICAgICAgc2VsZi5sZWF2ZSgpCisKICAgICAjIGV4cHIKICAgICBkZWYgX0J5dGVzKHNlbGYsIHQpOgogICAgICAgICBzZWxmLndyaXRlKHJlcHIodC5zKSkKQEAgLTQwMSw3ICs0MTksNyBAQAogICAgICAgICBzZWxmLmRpc3BhdGNoKHQub3BlcmFuZCkKICAgICAgICAgc2VsZi53cml0ZSgiKSIpCiAKLSAgICBiaW5vcCA9IHsgIkFkZCI6IisiLCAiU3ViIjoiLSIsICJNdWx0IjoiKiIsICJEaXYiOiIvIiwgIk1vZCI6IiUiLAorICAgIGJpbm9wID0geyAiQWRkIjoiKyIsICJTdWIiOiItIiwgIk11bHQiOiIqIiwgIk1hdE11bHQiOiJAIiwgIkRpdiI6Ii8iLCAiTW9kIjoiJSIsCiAgICAgICAgICAgICAgICAgICAgICJMU2hpZnQiOiI8PCIsICJSU2hpZnQiOiI+PiIsICJCaXRPciI6InwiLCAiQml0WG9yIjoiXiIsICJCaXRBbmQiOiImIiwKICAgICAgICAgICAgICAgICAgICAgIkZsb29yRGl2IjoiLy8iLCAiUG93IjogIioqIn0KICAgICBkZWYgX0Jpbk9wKHNlbGYsIHQpOgpAQCAtNDUwLDE2ICs0NjgsNiBAQAogICAgICAgICAgICAgaWYgY29tbWE6IHNlbGYud3JpdGUoIiwgIikKICAgICAgICAgICAgIGVsc2U6IGNvbW1hID0gVHJ1ZQogICAgICAgICAgICAgc2VsZi5kaXNwYXRjaChlKQotICAgICAgICBpZiB0LnN0YXJhcmdzOgotICAgICAgICAgICAgaWYgY29tbWE6IHNlbGYud3JpdGUoIiwgIikKLSAgICAgICAgICAgIGVsc2U6IGNvbW1hID0gVHJ1ZQotICAgICAgICAgICAgc2VsZi53cml0ZSgiKiIpCi0gICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQuc3RhcmFyZ3MpCi0gICAgICAgIGlmIHQua3dhcmdzOgotICAgICAgICAgICAgaWYgY29tbWE6IHNlbGYud3JpdGUoIiwgIikKLSAgICAgICAgICAgIGVsc2U6IGNvbW1hID0gVHJ1ZQotICAgICAgICAgICAgc2VsZi53cml0ZSgiKioiKQotICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0Lmt3YXJncykKICAgICAgICAgc2VsZi53cml0ZSgiKSIpCiAKICAgICBkZWYgX1N1YnNjcmlwdChzZWxmLCB0KToKQEAgLTU0Myw4ICs1NTEsMTEgQEAKICAgICAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQua3dhcmcuYW5ub3RhdGlvbikKIAogICAgIGRlZiBfa2V5d29yZChzZWxmLCB0KToKLSAgICAgICAgc2VsZi53cml0ZSh0LmFyZykKLSAgICAgICAgc2VsZi53cml0ZSgiPSIpCisgICAgICAgIGlmIHQuYXJnIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLndyaXRlKCIqKiIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLndyaXRlKHQuYXJnKQorICAgICAgICAgICAgc2VsZi53cml0ZSgiPSIpCiAgICAgICAgIHNlbGYuZGlzcGF0Y2godC52YWx1ZSkKIAogICAgIGRlZiBfTGFtYmRhKHNlbGYsIHQpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvcHliZW5jaC9SRUFETUUgYi9Ub29scy9weWJlbmNoL1JFQURNRQppbmRleCBlNTllNmMwLi40MGY3ZWVjIDEwMDY0NAotLS0gYS9Ub29scy9weWJlbmNoL1JFQURNRQorKysgYi9Ub29scy9weWJlbmNoL1JFQURNRQpAQCAtNCw3ICs0LDcgQEAKIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogCiAgICAgIEV4dGVuZGFibGUgc3VpdGUgb2YgbG93LWxldmVsIGJlbmNobWFya3MgZm9yIG1lYXN1cmluZwotICAgICAgICAgIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uIAorICAgICAgICAgIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgIChpbnRlcnByZXRlciwgY29tcGlsZXIgb3IgVk0pLgogCiBweWJlbmNoIGlzIGEgY29sbGVjdGlvbiBvZiB0ZXN0cyB0aGF0IHByb3ZpZGVzIGEgc3RhbmRhcmRpemVkIHdheSB0bwpAQCAtMzQsMTEgKzM0LDExIEBACiAKIEl0IGlzIHVzdWFsbHkgYSBnb29kIGlkZWEgdG8gcnVuIHB5YmVuY2gucHkgbXVsdGlwbGUgdGltZXMgdG8gc2VlCiB3aGV0aGVyIHRoZSBlbnZpcm9ubWVudCwgdGltZXJzIGFuZCBiZW5jaG1hcmsgcnVuLXRpbWVzIGFyZSBzdWl0YWJsZQotZm9yIGRvaW5nIGJlbmNobWFyayB0ZXN0cy4gCitmb3IgZG9pbmcgYmVuY2htYXJrIHRlc3RzLgogCiBZb3UgY2FuIHVzZSB0aGUgY29tcGFyaXNvbiBmZWF0dXJlIG9mIHB5YmVuY2gucHkgKCdweWJlbmNoLnB5IC1jCiA8ZmlsZT4nKSB0byBjaGVjayBob3cgd2VsbCB0aGUgc3lzdGVtIGJlaGF2ZXMgaW4gY29tcGFyaXNvbiB0byBhCi1yZWZlcmVuY2UgcnVuLiAKK3JlZmVyZW5jZSBydW4uCiAKIElmIHRoZSBkaWZmZXJlbmNlcyBhcmUgd2VsbCBiZWxvdyAxMCUgZm9yIGVhY2ggdGVzdCwgdGhlbiB5b3UgaGF2ZSBhCiBzeXN0ZW0gdGhhdCBpcyBnb29kIGZvciBkb2luZyBiZW5jaG1hcmsgdGVzdGluZ3MuICBPZiB5b3UgZ2V0IHJhbmRvbQpAQCAtMjMyLDcgKzIzMiw3IEBACiAgICAgIyBmb3IgY29tcGFyaXNvbnMgb2YgYmVuY2htYXJrIHJ1bnMgLSB0ZXN0cyB3aXRoIHVuZXF1YWwgdmVyc2lvbgogICAgICMgbnVtYmVyIHdpbGwgbm90IGdldCBjb21wYXJlZC4KICAgICB2ZXJzaW9uID0gMS4wCi0gICAgCisKICAgICAjIFRoZSBudW1iZXIgb2YgYWJzdHJhY3Qgb3BlcmF0aW9ucyBkb25lIGluIGVhY2ggcm91bmQgb2YgdGhlCiAgICAgIyB0ZXN0LiBBbiBvcGVyYXRpb24gaXMgdGhlIGJhc2ljIHVuaXQgb2Ygd2hhdCB5b3Ugd2FudCB0bwogICAgICMgbWVhc3VyZS4gVGhlIGJlbmNobWFyayB3aWxsIG91dHB1dCB0aGUgYW1vdW50IG9mIHJ1bi10aW1lIHBlcgpAQCAtMjY0LDcgKzI2NCw3IEBACiAKICAgICAgICAgICAgICMgUmVwZWF0IHRoZSBvcGVyYXRpb25zIHBlciByb3VuZCB0byByYWlzZSB0aGUgcnVuLXRpbWUKICAgICAgICAgICAgICMgcGVyIG9wZXJhdGlvbiBzaWduaWZpY2FudGx5IGFib3ZlIHRoZSBub2lzZSBsZXZlbCBvZiB0aGUKLSAgICAgICAgICAgICMgZm9yLWxvb3Agb3ZlcmhlYWQuIAorICAgICAgICAgICAgIyBmb3ItbG9vcCBvdmVyaGVhZC4KIAogCSAgICAjIEV4ZWN1dGUgMjAgb3BlcmF0aW9ucyAoYSArPSAxKToKICAgICAgICAgICAgIGEgKz0gMQpAQCAtMzU4LDggKzM1OCw4IEBACiAgICAgICAgIC0gY2hhbmdlZCB0aGUgb3V0cHV0IGZvcm1hdCBhIGJpdCB0byBtYWtlIGl0IGxvb2sKICAgICAgICAgICBuaWNlcgogICAgICAgICAtIHJlZmFjdG9yZWQgdGhlIEFQSXMgc29tZXdoYXQKLSAgMS4zKzogU3RldmUgSG9sZGVuIGFkZGVkIHRoZSBOZXdJbnN0YW5jZXMgdGVzdCBhbmQgdGhlIGZpbHRlcmluZyAKLSAgICAgICBvcHRpb24gZHVyaW5nIHRoZSBOZWVkRm9yU3BlZWQgc3ByaW50OyB0aGlzIGFsc28gdHJpZ2dlcmVkIGEgbG9uZyAKKyAgMS4zKzogU3RldmUgSG9sZGVuIGFkZGVkIHRoZSBOZXdJbnN0YW5jZXMgdGVzdCBhbmQgdGhlIGZpbHRlcmluZworICAgICAgIG9wdGlvbiBkdXJpbmcgdGhlIE5lZWRGb3JTcGVlZCBzcHJpbnQ7IHRoaXMgYWxzbyB0cmlnZ2VyZWQgYSBsb25nCiAgICAgICAgZGlzY3Vzc2lvbiBvbiBob3cgdG8gaW1wcm92ZSBiZW5jaG1hcmsgdGltaW5nIGFuZCBmaW5hbGx5CiAgICAgICAgcmVzdWx0ZWQgaW4gdGhlIHJlbGVhc2Ugb2YgMi4wCiAgIDEuMzogaW5pdGlhbCBjaGVja2luIGludG8gdGhlIFB5dGhvbiBTVk4gcmVwb3NpdG9yeQpkaWZmIC0tZ2l0IGEvVG9vbHMvcHluY2hlL1JFQURNRSBiL1Rvb2xzL3B5bmNoZS9SRUFETUUKaW5kZXggZDIwZWZjMy4uZTAyNjE1OSAxMDA2NDQKLS0tIGEvVG9vbHMvcHluY2hlL1JFQURNRQorKysgYi9Ub29scy9weW5jaGUvUkVBRE1FCkBAIC00OCw3ICs0OCw3IEBACiAKICAgICAtLWluaXRmaWxlIGZpbGUKICAgICAtaSBmaWxlCi0gICAgICAgIEFsdGVybmF0ZSBsb2NhdGlvbiBvZiB0aGUgcGVyc2lzdGVudCBpbml0aWFsaXphdGlvbiBmaWxlLiAgU2VlIAorICAgICAgICBBbHRlcm5hdGUgbG9jYXRpb24gb2YgdGhlIHBlcnNpc3RlbnQgaW5pdGlhbGl6YXRpb24gZmlsZS4gIFNlZQogICAgICAgICB0aGUgc2VjdGlvbiBvbiBQZXJzaXN0ZW5jeSBiZWxvdy4KIAogICAgIC0taWdub3JlCkBAIC04MCw3ICs4MCw3IEBACiAKICAgICAgICAgcHlDb2xvckNob29zZXIuYXNrY29sb3IoKQogCi0gICAgd2hpY2ggd2lsbCBwb3B1cCBQeW5jaGUgYXMgYSBtb2RhbCBkaWFsb2csIGFuZCByZXR1cm4gdGhlIHNlbGVjdGVkIAorICAgIHdoaWNoIHdpbGwgcG9wdXAgUHluY2hlIGFzIGEgbW9kYWwgZGlhbG9nLCBhbmQgcmV0dXJuIHRoZSBzZWxlY3RlZAogICAgIGNvbG9yLgogCiAgICAgVGhlcmUgYXJlIHNvbWUgVUkgZGlmZmVyZW5jZXMgd2hlbiBydW5uaW5nIGFzIGEgbW9kYWwKQEAgLTEwNiw3ICsxMDYsNyBAQAogCiAgICAgICAgIG1hc3RlclsqXQogICAgICAgICAgICAgdGhlIG1hc3RlciB3aW5kb3cgdG8gdXNlIGFzIHRoZSBwYXJlbnQgb2YgdGhlIG1vZGFsCi0gICAgICAgICAgICBkaWFsb2cuICBXaXRob3V0IHRoaXMgYXJndW1lbnQsIHB5Q29sb3JDaG9vc2VyIHdpbGwgY3JlYXRlIAorICAgICAgICAgICAgZGlhbG9nLiAgV2l0aG91dCB0aGlzIGFyZ3VtZW50LCBweUNvbG9yQ2hvb3NlciB3aWxsIGNyZWF0ZQogICAgICAgICAgICAgaXRzIG93biBUa2ludGVyLlRrIGluc3RhbmNlIGFzIHRoZSBtYXN0ZXIuICBUaGlzIG1heSBub3QKICAgICAgICAgICAgIGJlIHdoYXQgeW91IHdhbnQuCiAKQEAgLTE3MCw3ICsxNzAsNyBAQAogICAgIFNlbGVjdGVkIGNoaXAgY29sb3IgZXhhY3RseSBtYXRjaGVzIHRoZSBOZWFyZXN0IGNoaXAgY29sb3IsIHlvdQogICAgIHdpbGwgc2VlIHRoZSBjb2xvciBuYW1lIGFwcGVhciBiZWxvdyB0aGUgY29sb3Igc3BlY2lmaWNhdGlvbiBmb3IKICAgICB0aGUgU2VsZWN0ZWQgY2hpcC4KLSAgICAKKwogICAgIENsaWNraW5nIG9uIHRoZSBOZWFyZXN0IGNvbG9yIGNoaXAgc2VsZWN0cyB0aGF0IGNvbG9yLiAgQ29sb3IKICAgICBkaXN0YW5jZSBpcyBjYWxjdWxhdGVkIGluIHRoZSAzRCBzcGFjZSBvZiB0aGUgUkdCIGNvbG9yIHNvbGlkIGFuZAogICAgIGlmIG1vcmUgdGhhbiBvbmUgY29sb3IgbmFtZSBpcyB0aGUgc2FtZSBkaXN0YW5jZSBmcm9tIHRoZSBzZWxlY3RlZApAQCAtMzYxLDcgKzM2MSw3IEBACiAgICAgZm9ybWF0IGZvciBib3RoIHZhbHVlcyBhbmQgbmFtZXMKIAogICAgIHdlYmNvbG9ycy50eHQgLS0gVGhlIDE0MCBjb2xvciBuYW1lcyB0aGF0IFRpbSBQZXRlcnMgYW5kIGhpcwotICAgIHNpc3RlciBzYXkgTlMgYW5kIE1TSUUgYm90aCB1bmRlcnN0YW5kICh3aXRoIHNvbWUgY29udHJvdmVyc3kgb3ZlciAKKyAgICBzaXN0ZXIgc2F5IE5TIGFuZCBNU0lFIGJvdGggdW5kZXJzdGFuZCAod2l0aCBzb21lIGNvbnRyb3ZlcnN5IG92ZXIKICAgICBBbGljZUJsdWUpLgogCiAgICAgbmFtZWRjb2xvcnMudHh0IC0tIGFuIGFsdGVybmF0aXZlIHNldCBvZiBOZXRzY2FwZSBjb2xvcnMuCkBAIC0zNjksOCArMzY5LDggQEAKICAgICBZb3UgY2FuIHN3aXRjaCBiZXR3ZWVuIGZpbGVzIGJ5IGNob29zaW5nICJMb2FkIHBhbGV0dGUuLi4iIGZyb20KICAgICB0aGUgIkZpbGUiIG1lbnUuICBUaGlzIGJyaW5ncyB1cCBhIHN0YW5kYXJkIFRrIGZpbGUgZGlhbG9nLgogICAgIENob29zZSB0aGUgZmlsZSB5b3Ugd2FudCBhbmQgdGhlbiBjbGljayAiT2siLiAgSWYgUHluY2hlCi0gICAgdW5kZXJzdGFuZHMgdGhlIGZvcm1hdCBpbiB0aGlzIGZpbGUsIGl0IHdpbGwgbG9hZCB0aGUgZGF0YWJhc2UgYW5kIAotICAgIHVwZGF0ZSB0aGUgYXBwcm9wcmlhdGUgd2luZG93cy4gIElmIG5vdCwgaXQgd2lsbCBicmluZyB1cCBhbiBlcnJvciAKKyAgICB1bmRlcnN0YW5kcyB0aGUgZm9ybWF0IGluIHRoaXMgZmlsZSwgaXQgd2lsbCBsb2FkIHRoZSBkYXRhYmFzZSBhbmQKKyAgICB1cGRhdGUgdGhlIGFwcHJvcHJpYXRlIHdpbmRvd3MuICBJZiBub3QsIGl0IHdpbGwgYnJpbmcgdXAgYW4gZXJyb3IKICAgICBkaWFsb2cuCiAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9kaWZmLnB5IGIvVG9vbHMvc2NyaXB0cy9kaWZmLnB5CmluZGV4IDhiZTUyN2YuLjk3MjBhNDMgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQorKysgYi9Ub29scy9zY3JpcHRzL2RpZmYucHkKQEAgLTgsNyArOCw3IEBACiAKICIiIgogCi1pbXBvcnQgc3lzLCBvcywgdGltZSwgZGlmZmxpYiwgb3B0cGFyc2UKK2ltcG9ydCBzeXMsIG9zLCB0aW1lLCBkaWZmbGliLCBhcmdwYXJzZQogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWV6b25lCiAKIGRlZiBmaWxlX210aW1lKHBhdGgpOgpAQCAtMTgsMjMgKzE4LDI1IEBACiAKIGRlZiBtYWluKCk6CiAKLSAgICB1c2FnZSA9ICJ1c2FnZTogJXByb2cgW29wdGlvbnNdIGZyb21maWxlIHRvZmlsZSIKLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2UpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1jIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0nUHJvZHVjZSBhIGNvbnRleHQgZm9ybWF0IGRpZmYgKGRlZmF1bHQpJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLXUiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSdQcm9kdWNlIGEgdW5pZmllZCBmb3JtYXQgZGlmZicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1tIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0nUHJvZHVjZSBIVE1MIHNpZGUgYnkgc2lkZSBkaWZmIChjYW4gdXNlIC1jIGFuZCAtbCBpbiBjb25qdW5jdGlvbiknKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItbiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J1Byb2R1Y2UgYSBuZGlmZiBmb3JtYXQgZGlmZicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1sIiwgIi0tbGluZXMiLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTMsIGhlbHA9J1NldCBudW1iZXIgb2YgY29udGV4dCBsaW5lcyAoZGVmYXVsdCAzKScpCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgaWYgbGVuKGFyZ3MpID09IDA6Ci0gICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICAgICAgc3lzLmV4aXQoMSkKLSAgICBpZiBsZW4oYXJncykgIT0gMjoKLSAgICAgICAgcGFyc2VyLmVycm9yKCJuZWVkIHRvIHNwZWNpZnkgYm90aCBhIGZyb21maWxlIGFuZCB0b2ZpbGUiKQorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdQcm9kdWNlIGEgY29udGV4dCBmb3JtYXQgZGlmZiAoZGVmYXVsdCknKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy11JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1Byb2R1Y2UgYSB1bmlmaWVkIGZvcm1hdCBkaWZmJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctbScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdQcm9kdWNlIEhUTUwgc2lkZSBieSBzaWRlIGRpZmYgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGNhbiB1c2UgLWMgYW5kIC1sIGluIGNvbmp1bmN0aW9uKScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLW4nLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUHJvZHVjZSBhIG5kaWZmIGZvcm1hdCBkaWZmJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctbCcsICctLWxpbmVzJywgdHlwZT1pbnQsIGRlZmF1bHQ9MywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1NldCBudW1iZXIgb2YgY29udGV4dCBsaW5lcyAoZGVmYXVsdCAzKScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnZnJvbWZpbGUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3RvZmlsZScpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKIAogICAgIG4gPSBvcHRpb25zLmxpbmVzCi0gICAgZnJvbWZpbGUsIHRvZmlsZSA9IGFyZ3MKKyAgICBmcm9tZmlsZSA9IG9wdGlvbnMuZnJvbWZpbGUKKyAgICB0b2ZpbGUgPSBvcHRpb25zLnRvZmlsZQogCiAgICAgZnJvbWRhdGUgPSBmaWxlX210aW1lKGZyb21maWxlKQogICAgIHRvZGF0ZSA9IGZpbGVfbXRpbWUodG9maWxlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9kdXRyZWUuZG9jIGIvVG9vbHMvc2NyaXB0cy9kdXRyZWUuZG9jCmluZGV4IDJhMDk0MjYuLjk3YmQyZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZHV0cmVlLmRvYworKysgYi9Ub29scy9zY3JpcHRzL2R1dHJlZS5kb2MKQEAgLTM0LDEzICszNCwxMyBAQAogOiAgICAgIHwgICAgICAgMSBzbS5iYWsKIAogQXQgZmlyc3QgSSB0aG91Z2h0IEkgY291bGQganVzdCBrZWVwIG9uZSBsb2NhbCBsaXN0IGFyb3VuZAotYXQgb25jZSwgYnV0IHRoaXMgc2VlbXMgaW5oZXJlbnRseSByZWN1cnNpdmUuICBXaGljaCBtZWFucyAKK2F0IG9uY2UsIGJ1dCB0aGlzIHNlZW1zIGluaGVyZW50bHkgcmVjdXJzaXZlLiAgV2hpY2ggbWVhbnMKIEkgbmVlZCBhbiByZWFsIHJlY3Vyc2l2ZSBkYXRhIHN0cnVjdHVyZS4gIE1heWJlIHlvdSBjb3VsZAogZG8gaXQgd2l0aCBvbmUgb2YgdGhlICVhc3NvYyBhcnJheXMgTGFycnkgdXNlcyBpbiB0aGUgYmVnYXQKIHByb2dyYW1zLCBidXQgSSBicm9rZSBkb3duIGFuZCBnb3QgZGlydHkuICBJIHRoaW5rIHRoZSBoYXJkZXN0Ci1wYXJ0IHdhcyBtYXRjaGluZyBGZWxpeCdzIGRlc2lyZWQgb3V0cHV0IGV4YWN0bHkuICBJdCdzIG5vdCAKK3BhcnQgd2FzIG1hdGNoaW5nIEZlbGl4J3MgZGVzaXJlZCBvdXRwdXQgZXhhY3RseS4gIEl0J3Mgbm90CiBibGF6aW5nbHkgZmFzdDogSSBzaG91bGQgcHJvYmFibHkgaW5saW5lIHRoZSAmY2hpbGRvZiByb3V0aW5lLAotYnV0IGl0ICp3YXMqIGZhc3RlciB0byB3cml0ZSB0aGFuIEkgY291bGQgaGF2ZSB3cml0dGVuIHRoZSAKK2J1dCBpdCAqd2FzKiBmYXN0ZXIgdG8gd3JpdGUgdGhhbiBJIGNvdWxkIGhhdmUgd3JpdHRlbiB0aGUKIGVxdWl2YWxlbnQgQyBwcm9ncmFtLgogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvZXB0YWdzLnB5IGIvVG9vbHMvc2NyaXB0cy9lcHRhZ3MucHkKaW5kZXggNjcxZmYxMS4uNDAxYWM3ZSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9lcHRhZ3MucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9lcHRhZ3MucHkKQEAgLTI1LDcgKzI1LDcgQEAKICAgICAiIiJBcHBlbmQgdGFncyBmb3VuZCBpbiBmaWxlIG5hbWVkICdmaWxlbmFtZScgdG8gdGhlIG9wZW4gZmlsZSAnb3V0ZnAnIiIiCiAgICAgdHJ5OgogICAgICAgICBmcCA9IG9wZW4oZmlsZW5hbWUsICdyJykKLSAgICBleGNlcHQ6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0Nhbm5vdCBvcGVuICVzXG4nJWZpbGVuYW1lKQogICAgICAgICByZXR1cm4KICAgICBjaGFybm8gPSAwCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2ZpbmRfcmVjdXJzaW9ubGltaXQucHkgYi9Ub29scy9zY3JpcHRzL2ZpbmRfcmVjdXJzaW9ubGltaXQucHkKaW5kZXggMTE3MTE0Ni4uYjI4NDJhNiAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9maW5kX3JlY3Vyc2lvbmxpbWl0LnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvZmluZF9yZWN1cnNpb25saW1pdC5weQpAQCAtOTIsNyArOTIsNyBAQAogZGVmIHRlc3RfY29tcGlsZXJfcmVjdXJzaW9uKCk6CiAgICAgIyBUaGUgY29tcGlsZXIgdXNlcyBhIHNjYWxpbmcgZmFjdG9yIHRvIHN1cHBvcnQgYWRkaXRpb25hbCBsZXZlbHMKICAgICAjIG9mIHJlY3Vyc2lvbi4gVGhpcyBpcyBhIHNhbml0eSBjaGVjayBvZiB0aGF0IHNjYWxpbmcgdG8gZW5zdXJlCi0gICAgIyBpdCBzdGlsbCByYWlzZXMgUnVudGltZUVycm9yIGV2ZW4gYXQgaGlnaGVyIHJlY3Vyc2lvbiBsaW1pdHMKKyAgICAjIGl0IHN0aWxsIHJhaXNlcyBSZWN1cnNpb25FcnJvciBldmVuIGF0IGhpZ2hlciByZWN1cnNpb24gbGltaXRzCiAgICAgY29tcGlsZSgiKCkiICogKDEwICogc3lzLmdldHJlY3Vyc2lvbmxpbWl0KCkpLCAiPHNpbmdsZT4iLCAic2luZ2xlIikKIAogZGVmIGNoZWNrX2xpbWl0KG4sIHRlc3RfZnVuY19uYW1lKToKQEAgLTEwNyw3ICsxMDcsNyBAQAogICAgICMgQXR0cmlidXRlRXJyb3IgY2FuIGJlIHJhaXNlZCBiZWNhdXNlIG9mIHRoZSB3YXkgZS5nLiBQeURpY3RfR2V0SXRlbSgpCiAgICAgIyBzaWxlbmNlcyBhbGwgZXhjZXB0aW9ucyBhbmQgcmV0dXJucyBOVUxMLCB3aGljaCBpcyB1c3VhbGx5IGludGVycHJldGVkCiAgICAgIyBhcyAibWlzc2luZyBhdHRyaWJ1dGUiLgotICAgIGV4Y2VwdCAoUnVudGltZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgZXhjZXB0IChSZWN1cnNpb25FcnJvciwgQXR0cmlidXRlRXJyb3IpOgogICAgICAgICBwYXNzCiAgICAgZWxzZToKICAgICAgICAgcHJpbnQoIllpa2VzISIpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5IGIvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjJmOWE1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQpAQCAtMCwwICsxLDU0IEBACisjIFRoaXMgc2NyaXB0IGdlbmVyYXRlcyB0aGUgb3Bjb2RlLmggaGVhZGVyIGZpbGUuCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKKworaW1wb3J0IHN5cworaGVhZGVyID0gIiIiLyogQXV0by1nZW5lcmF0ZWQgYnkgVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weSAqLworI2lmbmRlZiBQeV9PUENPREVfSAorI2RlZmluZSBQeV9PUENPREVfSAorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisKKyAgICAvKiBJbnN0cnVjdGlvbiBvcGNvZGVzIGZvciBjb21waWxlZCBjb2RlICovCisiIiIKKworZm9vdGVyID0gIiIiCisvKiBFWENFUFRfSEFORExFUiBpcyBhIHNwZWNpYWwsIGltcGxpY2l0IGJsb2NrIHR5cGUgd2hpY2ggaXMgY3JlYXRlZCB3aGVuCisgICBlbnRlcmluZyBhbiBleGNlcHQgaGFuZGxlci4gSXQgaXMgbm90IGFuIG9wY29kZSBidXQgd2UgZGVmaW5lIGl0IGhlcmUKKyAgIGFzIHdlIHdhbnQgaXQgdG8gYmUgYXZhaWxhYmxlIHRvIGJvdGggZnJhbWVvYmplY3QuYyBhbmQgY2V2YWwuYywgd2hpbGUKKyAgIHJlbWFpbmluZyBwcml2YXRlLiovCisjZGVmaW5lIEVYQ0VQVF9IQU5ETEVSIDI1NworCisKK2VudW0gY21wX29wIHtQeUNtcF9MVD1QeV9MVCwgUHlDbXBfTEU9UHlfTEUsIFB5Q21wX0VRPVB5X0VRLCBQeUNtcF9ORT1QeV9ORSwKKyAgICAgICAgICAgICAgICBQeUNtcF9HVD1QeV9HVCwgUHlDbXBfR0U9UHlfR0UsIFB5Q21wX0lOLCBQeUNtcF9OT1RfSU4sCisgICAgICAgICAgICAgICAgUHlDbXBfSVMsIFB5Q21wX0lTX05PVCwgUHlDbXBfRVhDX01BVENILCBQeUNtcF9CQUR9OworCisjZGVmaW5lIEhBU19BUkcob3ApICgob3ApID49IEhBVkVfQVJHVU1FTlQpCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLyogIVB5X09QQ09ERV9IICovCisiIiIKKworCitkZWYgbWFpbihvcGNvZGVfcHksIG91dGZpbGU9J0luY2x1ZGUvb3Bjb2RlLmgnKToKKyAgICBvcGNvZGUgPSB7fQorICAgIGV4ZWMob3BlbihvcGNvZGVfcHkpLnJlYWQoKSwgb3Bjb2RlKQorICAgIG9wbWFwID0gb3Bjb2RlWydvcG1hcCddCisgICAgd2l0aCBvcGVuKG91dGZpbGUsICd3JykgYXMgZm9iajoKKyAgICAgICAgZm9iai53cml0ZShoZWFkZXIpCisgICAgICAgIGZvciBuYW1lIGluIG9wY29kZVsnb3BuYW1lJ106CisgICAgICAgICAgICBpZiBuYW1lIGluIG9wbWFwOgorICAgICAgICAgICAgICAgIGZvYmoud3JpdGUoIiNkZWZpbmUgJS0yM3MgJTNzXG4iICUgKG5hbWUsIG9wbWFwW25hbWVdKSkKKyAgICAgICAgICAgIGlmIG5hbWUgPT0gJ1BPUF9FWENFUFQnOiAjIFNwZWNpYWwgZW50cnkgZm9yIEhBVkVfQVJHVU1FTlQKKyAgICAgICAgICAgICAgICBmb2JqLndyaXRlKCIjZGVmaW5lICUtMjNzICUzZFxuIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdIQVZFX0FSR1VNRU5UJywgb3Bjb2RlWydIQVZFX0FSR1VNRU5UJ10pKQorICAgICAgICBmb2JqLndyaXRlKGZvb3RlcikKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oc3lzLmFyZ3ZbMV0sIHN5cy5hcmd2WzJdKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkgYi9Ub29scy9zY3JpcHRzL3J1bl90ZXN0cy5weQppbmRleCBhNmM1ZGEzLi5iNTgyZTEzIDEwMDY0NAotLS0gYS9Ub29scy9zY3JpcHRzL3J1bl90ZXN0cy5weQorKysgYi9Ub29scy9zY3JpcHRzL3J1bl90ZXN0cy5weQpAQCAtMzMsOCArMzMsNiBAQAogICAgICMgQWxsb3cgdXNlci1zcGVjaWZpZWQgaW50ZXJwcmV0ZXIgb3B0aW9ucyB0byBvdmVycmlkZSBvdXIgZGVmYXVsdHMuCiAgICAgYXJncy5leHRlbmQodGVzdC5zdXBwb3J0LmFyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpKQogCi0gICAgIyBXb3JrYXJvdW5kIGZvciBpc3N1ZSAjMjAzNTUKLSAgICBvcy5lbnZpcm9uLnBvcCgiUFlUSE9OV0FSTklOR1MiLCBOb25lKQogICAgICMgV29ya2Fyb3VuZCBmb3IgaXNzdWUgIzIwMzYxCiAgICAgYXJncy5leHRlbmQoWyctVycsICdlcnJvcjo6Qnl0ZXNXYXJuaW5nJ10pCiAKQEAgLTUwLDcgKzQ4LDExIEBACiAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLXUnLCAnYWxsLC1sYXJnZWZpbGUsLWF1ZGlvLC1ndWknXSkKICAgICBhcmdzLmV4dGVuZChyZWdydGVzdF9hcmdzKQogICAgIHByaW50KCcgJy5qb2luKGFyZ3MpKQotICAgIG9zLmV4ZWN2KHN5cy5leGVjdXRhYmxlLCBhcmdzKQorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IGNhbGwKKyAgICAgICAgc3lzLmV4aXQoY2FsbChhcmdzKSkKKyAgICBlbHNlOgorICAgICAgICBvcy5leGVjdihzeXMuZXhlY3V0YWJsZSwgYXJncykKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy93aW5fYWRkMnBhdGgucHkgYi9Ub29scy9zY3JpcHRzL3dpbl9hZGQycGF0aC5weQppbmRleCBjODViZWE1Li4xYzlhZWRjIDEwMDY0NAotLS0gYS9Ub29scy9zY3JpcHRzL3dpbl9hZGQycGF0aC5weQorKysgYi9Ub29scy9zY3JpcHRzL3dpbl9hZGQycGF0aC5weQpAQCAtMjIsNyArMjIsOCBAQAogICAgIHNjcmlwdHMgPSBvcy5wYXRoLmpvaW4ocHl0aG9ucGF0aCwgIlNjcmlwdHMiKQogICAgIGFwcGRhdGEgPSBvcy5lbnZpcm9uWyJBUFBEQVRBIl0KICAgICBpZiBoYXNhdHRyKHNpdGUsICJVU0VSX1NJVEUiKToKLSAgICAgICAgdXNlcnBhdGggPSBzaXRlLlVTRVJfU0lURS5yZXBsYWNlKGFwcGRhdGEsICIlQVBQREFUQSUiKQorICAgICAgICB1c2Vyc2l0ZSA9IHNpdGUuVVNFUl9TSVRFLnJlcGxhY2UoYXBwZGF0YSwgIiVBUFBEQVRBJSIpCisgICAgICAgIHVzZXJwYXRoID0gb3MucGF0aC5kaXJuYW1lKHVzZXJzaXRlKQogICAgICAgICB1c2Vyc2NyaXB0cyA9IG9zLnBhdGguam9pbih1c2VycGF0aCwgIlNjcmlwdHMiKQogICAgIGVsc2U6CiAgICAgICAgIHVzZXJzY3JpcHRzID0gTm9uZQpkaWZmIC0tZ2l0IGEvVG9vbHMvc3NsL3NzbHNwZWVkLnZjeHByb2ogYi9Ub29scy9zc2wvc3Nsc3BlZWQudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWM0MTA2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvc3NsL3NzbHNwZWVkLnZjeHByb2oKQEAgLTAsMCArMSw3MCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIAorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntGMDY4QkNDRi1DMEQ2LTQ3OEQtQTJDNS0yNkJBMzIzN0M5OTJ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5zc2xzcGVlZDwvUm9vdE5hbWVzcGFjZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICAKKyAgPEltcG9ydCBQcm9qZWN0PSIuLlwuLlxQQ0J1aWxkXHB5dGhvbi5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIuLlwuLlxQQ0J1aWxkXG9wZW5zc2wucHJvcHMiIC8+CisgIAorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPE9yaWdpbmFsT3V0RGlyPiQoT3V0RGlyKTwvT3JpZ2luYWxPdXREaXI+CisgICAgPE91dERpcj4kKE1TQnVpbGRQcm9qZWN0RGlyZWN0b3J5KVwkKEFyY2hOYW1lKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoTVNCdWlsZFByb2plY3REaXJlY3RvcnkpXCQoQXJjaE5hbWUpXG9ialw8L0ludERpcj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICAKKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilhcHBzXHNwZWVkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpYXBwc1xhcHBzLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICAKKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xJbmNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO2NyeXB0MzIubGliO2xpYmVheSQoUHlEZWJ1Z0V4dCkubGliO3NzbGVheSQoUHlEZWJ1Z0V4dCkubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4kKE9yaWdpbmFsT3V0RGlyKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisKKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlwuLlxQQ0J1aWxkXHNzbGVheS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnsxMDYxNWIyNC03M2JmLTRlZmEtOTNhYS0yMzY5MTYzMjEzMTd9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5cLi5cUENCdWlsZFxsaWJlYXkudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57ZTViMDRjYzAtZWI0Yy00MmFiLWI0ZGMtMThlZjk1Zjg2NGIwfTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKworICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkgYi9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5CmluZGV4IDk4YjM5NzUuLjRjMjE0NjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkKKysrIGIvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weQpAQCAtMTI3LDcgKzEyNyw3IEBACiAgICAgICAgIHJldHVybiAnTm9uZScKICAgICB0cnk6CiAgICAgICAgIGxlbih0KQotICAgIGV4Y2VwdDoKKyAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICByZXR1cm4gJzB4JTAqWCcgJSAocHJlY2lzaW9uLCB0KQogICAgIHRyeToKICAgICAgICAgcmV0dXJuICcoJyArICcsICcuam9pbihbJzB4JTAqWCcgJSAocHJlY2lzaW9uLCBpdGVtKQpkaWZmIC0tZ2l0IGEvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkgYi9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQppbmRleCA3NjM2YTk1Li43MTNlMTc1IDEwMDY0NAotLS0gYS9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQorKysgYi9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQpAQCAtNDIsNyArNDIsNyBAQAogIyAgICogRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0LCBhbmQKICMgICAqIERvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdAogIyAgICogRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdCAodHdvIG9jY3VycmVuY2VzKQotVU5JREFUQV9WRVJTSU9OID0gIjYuMy4wIgorVU5JREFUQV9WRVJTSU9OID0gIjguMC4wIgogVU5JQ09ERV9EQVRBID0gIlVuaWNvZGVEYXRhJXMudHh0IgogQ09NUE9TSVRJT05fRVhDTFVTSU9OUyA9ICJDb21wb3NpdGlvbkV4Y2x1c2lvbnMlcy50eHQiCiBFQVNUQVNJQU5fV0lEVEggPSAiRWFzdEFzaWFuV2lkdGglcy50eHQiCkBAIC05OSwxMCArOTksMTEgQEAKICMgdGhlc2UgcmFuZ2VzIG5lZWQgdG8gbWF0Y2ggdW5pY29kZWRhdGEuYzppc191bmlmaWVkX2lkZW9ncmFwaAogY2prX3JhbmdlcyA9IFsKICAgICAoJzM0MDAnLCAnNERCNScpLAotICAgICgnNEUwMCcsICc5RkNDJyksCisgICAgKCc0RTAwJywgJzlGRDUnKSwKICAgICAoJzIwMDAwJywgJzJBNkQ2JyksCiAgICAgKCcyQTcwMCcsICcyQjczNCcpLAotICAgICgnMkI3NDAnLCAnMkI4MUQnKQorICAgICgnMkI3NDAnLCAnMkI4MUQnKSwKKyAgICAoJzJCODIwJywgJzJDRUExJyksCiBdCiAKIGRlZiBtYWtldGFibGVzKHRyYWNlPTApOgpkaWZmIC0tZ2l0IGEvVG9vbHMvdW5pdHRlc3RndWkvUkVBRE1FLnR4dCBiL1Rvb2xzL3VuaXR0ZXN0Z3VpL1JFQURNRS50eHQKaW5kZXggNGQ4MDlkZi4uMGE0NzdlMSAxMDA2NDQKLS0tIGEvVG9vbHMvdW5pdHRlc3RndWkvUkVBRE1FLnR4dAorKysgYi9Ub29scy91bml0dGVzdGd1aS9SRUFETUUudHh0CkBAIC0xLDUgKzEsNSBAQAotdW5pdHRlc3RndWkucHkgaXMgR1VJIGZyYW1ld29yayBhbmQgYXBwbGljYXRpb24gZm9yIHVzZSB3aXRoIFB5dGhvbiB1bml0IAotdGVzdGluZyBmcmFtZXdvcmsuIEl0IGV4ZWN1dGVzIHRlc3RzIHdyaXR0ZW4gdXNpbmcgdGhlIGZyYW1ld29yayBwcm92aWRlZCAKK3VuaXR0ZXN0Z3VpLnB5IGlzIEdVSSBmcmFtZXdvcmsgYW5kIGFwcGxpY2F0aW9uIGZvciB1c2Ugd2l0aCBQeXRob24gdW5pdAordGVzdGluZyBmcmFtZXdvcmsuIEl0IGV4ZWN1dGVzIHRlc3RzIHdyaXR0ZW4gdXNpbmcgdGhlIGZyYW1ld29yayBwcm92aWRlZAogYnkgdGhlICd1bml0dGVzdCcgbW9kdWxlLgogCiBCYXNlZCBvbiB0aGUgb3JpZ2luYWwgYnkgU3RldmUgUHVyY2VsbCwgZnJvbToKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCA3YjkxZjkxLi40M2JmMGYzIDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0xLDYgKzEsNiBAQAogIyEgL2Jpbi9zaAogIyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLgotIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkgZm9yIHB5dGhvbiAzLjQuCisjIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSBmb3IgcHl0aG9uIDMuNS4KICMKICMgUmVwb3J0IGJ1Z3MgdG8gPGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvPi4KICMKQEAgLTU4MCw4ICs1ODAsOCBAQAogIyBJZGVudGl0eSBvZiB0aGlzIHBhY2thZ2UuCiBQQUNLQUdFX05BTUU9J3B5dGhvbicKIFBBQ0tBR0VfVEFSTkFNRT0ncHl0aG9uJwotUEFDS0FHRV9WRVJTSU9OPSczLjQnCi1QQUNLQUdFX1NUUklORz0ncHl0aG9uIDMuNCcKK1BBQ0tBR0VfVkVSU0lPTj0nMy41JworUEFDS0FHRV9TVFJJTkc9J3B5dGhvbiAzLjUnCiBQQUNLQUdFX0JVR1JFUE9SVD0naHR0cDovL2J1Z3MucHl0aG9uLm9yZy8nCiBQQUNLQUdFX1VSTD0nJwogCkBAIC02NjcsMTIgKzY2NywxOSBAQAogQ0ZMQUdTX05PRElTVAogQkFTRUNGTEFHUwogT1BUCitMTFZNX1BST0ZfRk9VTkQKK0xMVk1fUFJPRl9FUlIKK0xMVk1fUFJPRl9GSUxFCitMTFZNX1BST0ZfTUVSR0VSCitQR09fUFJPRl9VU0VfRkxBRworUEdPX1BST0ZfR0VOX0ZMQUcKIEFCSUZMQUdTCiBMTgogTUtESVJfUAogSU5TVEFMTF9EQVRBCiBJTlNUQUxMX1NDUklQVAogSU5TVEFMTF9QUk9HUkFNCitPUENPREVIR0VOCiBQWVRIT04KIEFTRExHRU4KIGFjX2N0X1JFQURFTEYKQEAgLTY5MywxNSArNzAwLDE3IEBACiBETExMSUJSQVJZCiBMRExJQlJBUlkKIExJQlJBUlkKLU1VTFRJQVJDSAogQlVJTERFWEVFWFQKIEVHUkVQCi1HUkVQCi1DUFAKIE5PX0FTX05FRURFRAorUExBVEZPUk1fVFJJUExFVAorUExBVERJUgorTVVMVElBUkNICiBhY19jdF9DWFgKIE1BSU5DQwogQ1hYCitHUkVQCitDUFAKIE9CSkVYVAogRVhFRVhUCiBhY19jdF9DQwpAQCAtNzExLDcgKzcyMCw2IEBACiBDQwogRVhQT1JUX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAogQ09ORklHVVJFX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAotUExBVERJUgogU0dJX0FCSQogX1BZVEhPTl9IT1NUX1BMQVRGT1JNCiBNQUNIREVQCkBAIC03OTMsMTIgKzgwMSwxNCBAQAogd2l0aF9mcmFtZXdvcmtfbmFtZQogZW5hYmxlX2ZyYW1ld29yawogd2l0aF9nY2MKK3dpdGhfaWNjCiB3aXRoX2N4eF9tYWluCiB3aXRoX3N1ZmZpeAogZW5hYmxlX3NoYXJlZAogZW5hYmxlX3Byb2ZpbGluZwogd2l0aF9weWRlYnVnCiB3aXRoX2hhc2hfYWxnb3JpdGhtCit3aXRoX2FkZHJlc3Nfc2FuaXRpemVyCiB3aXRoX2xpYnMKIHdpdGhfc3lzdGVtX2V4cGF0CiB3aXRoX3N5c3RlbV9mZmkKQEAgLTEzNzUsNyArMTM4NSw3IEBACiAgICMgT21pdCBzb21lIGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlzdCBsZXNzIGltcG9zaW5nLgogICAjIFRoaXMgbWVzc2FnZSBpcyB0b28gbG9uZyB0byBiZSBhIHN0cmluZyBpbiB0aGUgQS9VWCAzLjEgc2guCiAgIGNhdCA8PF9BQ0VPRgotXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgcHl0aG9uIDMuNCB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCitcYGNvbmZpZ3VyZScgY29uZmlndXJlcyBweXRob24gMy41IHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KIAogVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFtWQVI9VkFMVUVdLi4uCiAKQEAgLTE0NDAsNyArMTQ1MCw3IEBACiAKIGlmIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiOyB0aGVuCiAgIGNhc2UgJGFjX2luaXRfaGVscCBpbgotICAgICBzaG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgcHl0aG9uIDMuNDoiOzsKKyAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIHB5dGhvbiAzLjU6Ijs7CiAgICBlc2FjCiAgIGNhdCA8PFxfQUNFT0YKIApAQCAtMTQ3MSw2ICsxNDgxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSBhbiBhbHRlcm5hdGUgbmFtZSBvZiB0aGUgZnJhbWV3b3JrIGJ1aWx0CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggLS1lbmFibGUtZnJhbWV3b3JrCiAgIC0td2l0aG91dC1nY2MgICAgICAgICAgIG5ldmVyIHVzZSBnY2MKKyAgLS13aXRoLWljYyAgICAgICAgICAgICAgYnVpbGQgd2l0aCBpY2MKICAgLS13aXRoLWN4eC1tYWluPTxjb21waWxlcj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZSBtYWluKCkgYW5kIGxpbmsgcHl0aG9uIGV4ZWN1dGFibGUgd2l0aCBDKysKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIKQEAgLTE0NzgsNiArMTQ4OSw4IEBACiAgIC0td2l0aC1weWRlYnVnICAgICAgICAgIGJ1aWxkIHdpdGggUHlfREVCVUcgZGVmaW5lZAogICAtLXdpdGgtaGFzaC1hbGdvcml0aG09W2ZudnxzaXBoYXNoMjRdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCBoYXNoIGFsZ29yaXRobQorICAtLXdpdGgtYWRkcmVzcy1zYW5pdGl6ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlIEFkZHJlc3NTYW5pdGl6ZXIKICAgLS13aXRoLWxpYnM9J2xpYjEgLi4uJyAgbGluayBhZ2FpbnN0IGFkZGl0aW9uYWwgbGlicwogICAtLXdpdGgtc3lzdGVtLWV4cGF0ICAgICBidWlsZCBweWV4cGF0IG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgZXhwYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQpAQCAtMTU5Miw3ICsxNjA1LDcgQEAKIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiICYmIGV4aXQgJGFjX3N0YXR1cwogaWYgJGFjX2luaXRfdmVyc2lvbjsgdGhlbgogICBjYXQgPDxcX0FDRU9GCi1weXRob24gY29uZmlndXJlIDMuNAorcHl0aG9uIGNvbmZpZ3VyZSAzLjUKIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OQogCiBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC0xNjQ0LDYgKzE2NTcsNDMgQEAKIAogfSAjIGFjX2ZuX2NfdHJ5X2NvbXBpbGUKIAorIyBhY19mbl9jX3RyeV9jcHAgTElORU5PCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVHJ5IHRvIHByZXByb2Nlc3MgY29uZnRlc3QuJGFjX2V4dCwgYW5kIHJldHVybiB3aGV0aGVyIHRoaXMgc3VjY2VlZGVkLgorYWNfZm5fY190cnlfY3BwICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgaWYgeyB7IGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IgorY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CisgIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPmNvbmZ0ZXN0LmVycgorICBhY19zdGF0dXM9JD8KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMQorICAgIGNhdCBjb25mdGVzdC5lcjEgPiY1CisgICAgbXYgLWYgY29uZnRlc3QuZXIxIGNvbmZ0ZXN0LmVycgorICBmaQorICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSA+IGNvbmZ0ZXN0LmkgJiYgeworCSB0ZXN0IC16ICIkYWNfY19wcmVwcm9jX3dhcm5fZmxhZyRhY19jX3dlcnJvcl9mbGFnIiB8fAorCSB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyCisgICAgICAgfTsgdGhlbiA6CisgIGFjX3JldHZhbD0wCitlbHNlCisgICRhc19lY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQorCisgICAgYWNfcmV0dmFsPTEKK2ZpCisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubworICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKKworfSAjIGFjX2ZuX2NfdHJ5X2NwcAorCiAjIGFjX2ZuX2NfdHJ5X2xpbmsgTElORU5PCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFRyeSB0byBsaW5rIGNvbmZ0ZXN0LiRhY19leHQsIGFuZCByZXR1cm4gd2hldGhlciB0aGlzIHN1Y2NlZWRlZC4KQEAgLTE2OTAsNDMgKzE3NDAsNiBAQAogCiB9ICMgYWNfZm5fY190cnlfbGluawogCi0jIGFjX2ZuX2NfdHJ5X2NwcCBMSU5FTk8KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBUcnkgdG8gcHJlcHJvY2VzcyBjb25mdGVzdC4kYWNfZXh0LCBhbmQgcmV0dXJuIHdoZXRoZXIgdGhpcyBzdWNjZWVkZWQuCi1hY19mbl9jX3RyeV9jcHAgKCkKLXsKLSAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawotICBpZiB7IHsgYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiCi1jYXNlICIoKCRhY190cnkiIGluCi0gICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OwotICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKLWVzYWMKLWV2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCi0kYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKLSAgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+Y29uZnRlc3QuZXJyCi0gIGFjX3N0YXR1cz0kPwotICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotICAgIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIxCi0gICAgY2F0IGNvbmZ0ZXN0LmVyMSA+JjUKLSAgICBtdiAtZiBjb25mdGVzdC5lcjEgY29uZnRlc3QuZXJyCi0gIGZpCi0gICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ID4gY29uZnRlc3QuaSAmJiB7Ci0JIHRlc3QgLXogIiRhY19jX3ByZXByb2Nfd2Fybl9mbGFnJGFjX2Nfd2Vycm9yX2ZsYWciIHx8Ci0JIHRlc3QgISAtcyBjb25mdGVzdC5lcnIKLSAgICAgICB9OyB0aGVuIDoKLSAgYWNfcmV0dmFsPTAKLWVsc2UKLSAgJGFzX2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0KLSAgICBhY19yZXR2YWw9MQotZmkKLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCi0gIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAotCi19ICMgYWNfZm5fY190cnlfY3BwCi0KICMgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCBMSU5FTk8gSEVBREVSIFZBUiBJTkNMVURFUwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFRlc3RzIHdoZXRoZXIgSEVBREVSIGV4aXN0cywgZ2l2aW5nIGEgd2FybmluZyBpZiBpdCBjYW5ub3QgYmUgY29tcGlsZWQgdXNpbmcKQEAgLTI0MzEsNyArMjQ0NCw3IEBACiBUaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IGNvbXBpbGVycyB3aGlsZQogcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KIAotSXQgd2FzIGNyZWF0ZWQgYnkgcHl0aG9uICRhc19tZSAzLjQsIHdoaWNoIHdhcworSXQgd2FzIGNyZWF0ZWQgYnkgcHl0aG9uICRhc19tZSAzLjUsIHdoaWNoIHdhcwogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgJCAkMCAkQApAQCAtMzAwNCw3ICszMDE3LDcgQEAKIG12IGNvbmZkZWZzLmgubmV3IGNvbmZkZWZzLmgKIAogCi1WRVJTSU9OPTMuNAorVkVSU0lPTj0zLjUKIAogIyBWZXJzaW9uIG51bWJlciBvZiBQeXRob24ncyBvd24gc2hhcmVkIGxpYnJhcnkgZmlsZS4KIApAQCAtMzQ5NCw5ICszNTA3LDYgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFDSERFUCIgPiY1CiAkYXNfZWNobyAiJE1BQ0hERVAiID4mNjsgfQogCi0KLVBMQVRESVI9cGxhdC0kTUFDSERFUAotCiAjIFJlY29yZCB0aGUgY29uZmlndXJlLXRpbWUgdmFsdWUgb2YgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VULAogIyBpdCBtYXkgaW5mbHVlbmNlIHRoZSB3YXkgd2UgY2FuIGJ1aWxkIGV4dGVuc2lvbnMsIHNvIGRpc3R1dGlscwogIyBuZWVkcyB0byBjaGVjayBpdApAQCAtMzU0MSw2ICszNTUxLDI5IEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHdpdGhvdXRfZ2NjIiA+JjUKICRhc19lY2hvICIkd2l0aG91dF9nY2MiID4mNjsgfQogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtaWNjIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtaWNjLi4uICIgPiY2OyB9CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtaWNjIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9pY2Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX2ljYzsKKwljYXNlICR3aXRodmFsIGluCisJbm8pCUNDPSR7Q0M6LWNjfQorCQl3aXRoX2ljYz1ubzs7CisJeWVzKQlDQz1pY2MKKwkJQ1hYPWljcGMKKwkJd2l0aF9pY2M9eWVzOzsKKwkqKQlDQz0kd2l0aHZhbAorCQl3aXRoX2ljYz0kd2l0aHZhbDs7CisJZXNhYworZWxzZQorCisJd2l0aF9pY2M9bm8KK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9pY2MiID4mNQorJGFzX2VjaG8gIiR3aXRoX2ljYyIgPiY2OyB9CisKICMgSWYgdGhlIHVzZXIgc3dpdGNoZXMgY29tcGlsZXJzLCB3ZSBjYW4ndCBiZWxpZXZlIHRoZSBjYWNoZQogaWYgdGVzdCAhIC16ICIkYWNfY3ZfcHJvZ19DQyIgLWEgISAteiAiJENDIiAtYSAiJENDIiAhPSAiJGFjX2N2X3Byb2dfQ0MiCiB0aGVuCkBAIC00NDAzLDYgKzQ0MzYsMjA2IEBACiBhY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwogYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQogCithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yLi4uICIgPiY2OyB9CisjIE9uIFN1bnMsIHNvbWV0aW1lcyAkQ1BQIG5hbWVzIGEgZGlyZWN0b3J5LgoraWYgdGVzdCAtbiAiJENQUCIgJiYgdGVzdCAtZCAiJENQUCI7IHRoZW4KKyAgQ1BQPQorZmkKK2lmIHRlc3QgLXogIiRDUFAiOyB0aGVuCisgIGlmICR7YWNfY3ZfcHJvZ19DUFArOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICAgICAgIyBEb3VibGUgcXVvdGVzIGJlY2F1c2UgQ1BQIG5lZWRzIHRvIGJlIGV4cGFuZGVkCisgICAgZm9yIENQUCBpbiAiJENDIC1FIiAiJENDIC1FIC10cmFkaXRpb25hbC1jcHAiICIvbGliL2NwcCIKKyAgICBkbworICAgICAgYWNfcHJlcHJvY19vaz1mYWxzZQorZm9yIGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCitkbworICAjIFVzZSBhIGhlYWRlciBmaWxlIHRoYXQgY29tZXMgd2l0aCBnY2MsIHNvIGNvbmZpZ3VyaW5nIGdsaWJjCisgICMgd2l0aCBhIGZyZXNoIGNyb3NzLWNvbXBpbGVyIHdvcmtzLgorICAjIFByZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5lZCwgc2luY2UKKyAgIyA8bGltaXRzLmg+IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMuCisgICMgT24gdGhlIE5lWFQsIGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGlsZXIncyBwYXJzZXIsCisgICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlzIGhlcmUgdG8gY2F0Y2ggdGhpcyBjYXNlLgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaWZkZWYgX19TVERDX18KKyMgaW5jbHVkZSA8bGltaXRzLmg+CisjZWxzZQorIyBpbmNsdWRlIDxhc3NlcnQuaD4KKyNlbmRpZgorCQkgICAgIFN5bnRheCBlcnJvcgorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5FTk8iOyB0aGVuIDoKKworZWxzZQorICAjIEJyb2tlbjogZmFpbHMgb24gdmFsaWQgaW5wdXQuCitjb250aW51ZQorZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKKworICAjIE9LLCB3b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uZXhpc3RlbnQgaGVhZGVycworICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6CisgICMgQnJva2VuOiBzdWNjZXNzIG9uIGludmFsaWQgaW5wdXQuCitjb250aW51ZQorZWxzZQorICAjIFBhc3NlcyBib3RoIHRlc3RzLgorYWNfcHJlcHJvY19vaz06CiticmVhaworZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKKworZG9uZQorIyBCZWNhdXNlIG9mIGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2FzIHNraXBwZWQuCitybSAtZiBjb25mdGVzdC5pIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitpZiAkYWNfcHJlcHJvY19vazsgdGhlbiA6CisgIGJyZWFrCitmaQorCisgICAgZG9uZQorICAgIGFjX2N2X3Byb2dfQ1BQPSRDUFAKKworZmkKKyAgQ1BQPSRhY19jdl9wcm9nX0NQUAorZWxzZQorICBhY19jdl9wcm9nX0NQUD0kQ1BQCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDUFAiID4mNQorJGFzX2VjaG8gIiRDUFAiID4mNjsgfQorYWNfcHJlcHJvY19vaz1mYWxzZQorZm9yIGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCitkbworICAjIFVzZSBhIGhlYWRlciBmaWxlIHRoYXQgY29tZXMgd2l0aCBnY2MsIHNvIGNvbmZpZ3VyaW5nIGdsaWJjCisgICMgd2l0aCBhIGZyZXNoIGNyb3NzLWNvbXBpbGVyIHdvcmtzLgorICAjIFByZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5lZCwgc2luY2UKKyAgIyA8bGltaXRzLmg+IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMuCisgICMgT24gdGhlIE5lWFQsIGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGlsZXIncyBwYXJzZXIsCisgICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlzIGhlcmUgdG8gY2F0Y2ggdGhpcyBjYXNlLgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaWZkZWYgX19TVERDX18KKyMgaW5jbHVkZSA8bGltaXRzLmg+CisjZWxzZQorIyBpbmNsdWRlIDxhc3NlcnQuaD4KKyNlbmRpZgorCQkgICAgIFN5bnRheCBlcnJvcgorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5FTk8iOyB0aGVuIDoKKworZWxzZQorICAjIEJyb2tlbjogZmFpbHMgb24gdmFsaWQgaW5wdXQuCitjb250aW51ZQorZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKKworICAjIE9LLCB3b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uZXhpc3RlbnQgaGVhZGVycworICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6CisgICMgQnJva2VuOiBzdWNjZXNzIG9uIGludmFsaWQgaW5wdXQuCitjb250aW51ZQorZWxzZQorICAjIFBhc3NlcyBib3RoIHRlc3RzLgorYWNfcHJlcHJvY19vaz06CiticmVhaworZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKKworZG9uZQorIyBCZWNhdXNlIG9mIGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2FzIHNraXBwZWQuCitybSAtZiBjb25mdGVzdC5pIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitpZiAkYWNfcHJlcHJvY19vazsgdGhlbiA6CisKK2Vsc2UKKyAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciAkPyAiQyBwcmVwcm9jZXNzb3IgXCIkQ1BQXCIgZmFpbHMgc2FuaXR5IGNoZWNrCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQorZmkKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBncmVwIHRoYXQgaGFuZGxlcyBsb25nIGxpbmVzIGFuZCAtZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZ3JlcCB0aGF0IGhhbmRsZXMgbG9uZyBsaW5lcyBhbmQgLWUuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9HUkVQKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAteiAiJEdSRVAiOyB0aGVuCisgIGFjX3BhdGhfR1JFUF9mb3VuZD1mYWxzZQorICAjIExvb3AgdGhyb3VnaCB0aGUgdXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIGVhY2ggb2YgUFJPR05BTUUtTElTVAorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbgorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19wcm9nIGluIGdyZXAgZ2dyZXA7IGRvCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICAgICBhY19wYXRoX0dSRVA9IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiCisgICAgICBhc19mbl9leGVjdXRhYmxlX3AgIiRhY19wYXRoX0dSRVAiIHx8IGNvbnRpbnVlCisjIENoZWNrIGZvciBHTlUgYWNfcGF0aF9HUkVQIGFuZCBzZWxlY3QgaXQgaWYgaXQgaXMgZm91bmQuCisgICMgQ2hlY2sgZm9yIEdOVSAkYWNfcGF0aF9HUkVQCitjYXNlIGAiJGFjX3BhdGhfR1JFUCIgLS12ZXJzaW9uIDI+JjFgIGluCisqR05VKikKKyAgYWNfY3ZfcGF0aF9HUkVQPSIkYWNfcGF0aF9HUkVQIiBhY19wYXRoX0dSRVBfZm91bmQ9Ojs7CisqKQorICBhY19jb3VudD0wCisgICRhc19lY2hvX24gMDEyMzQ1Njc4OSA+ImNvbmZ0ZXN0LmluIgorICB3aGlsZSA6CisgIGRvCisgICAgY2F0ICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0LmluIiA+ImNvbmZ0ZXN0LnRtcCIKKyAgICBtdiAiY29uZnRlc3QudG1wIiAiY29uZnRlc3QuaW4iCisgICAgY3AgImNvbmZ0ZXN0LmluIiAiY29uZnRlc3QubmwiCisgICAgJGFzX2VjaG8gJ0dSRVAnID4+ICJjb25mdGVzdC5ubCIKKyAgICAiJGFjX3BhdGhfR1JFUCIgLWUgJ0dSRVAkJyAtZSAnLShjYW5ub3QgbWF0Y2gpLScgPCAiY29uZnRlc3QubmwiID4iY29uZnRlc3Qub3V0IiAyPi9kZXYvbnVsbCB8fCBicmVhaworICAgIGRpZmYgImNvbmZ0ZXN0Lm91dCIgImNvbmZ0ZXN0Lm5sIiA+L2Rldi9udWxsIDI+JjEgfHwgYnJlYWsKKyAgICBhc19mbl9hcml0aCAkYWNfY291bnQgKyAxICYmIGFjX2NvdW50PSRhc192YWwKKyAgICBpZiB0ZXN0ICRhY19jb3VudCAtZ3QgJHthY19wYXRoX0dSRVBfbWF4LTB9OyB0aGVuCisgICAgICAjIEJlc3Qgb25lIHNvIGZhciwgc2F2ZSBpdCBidXQga2VlcCBsb29raW5nIGZvciBhIGJldHRlciBvbmUKKyAgICAgIGFjX2N2X3BhdGhfR1JFUD0iJGFjX3BhdGhfR1JFUCIKKyAgICAgIGFjX3BhdGhfR1JFUF9tYXg9JGFjX2NvdW50CisgICAgZmkKKyAgICAjIDEwKigyXjEwKSBjaGFycyBhcyBpbnB1dCBzZWVtcyBtb3JlIHRoYW4gZW5vdWdoCisgICAgdGVzdCAkYWNfY291bnQgLWd0IDEwICYmIGJyZWFrCisgIGRvbmUKKyAgcm0gLWYgY29uZnRlc3QuaW4gY29uZnRlc3QudG1wIGNvbmZ0ZXN0Lm5sIGNvbmZ0ZXN0Lm91dDs7Citlc2FjCisKKyAgICAgICRhY19wYXRoX0dSRVBfZm91bmQgJiYgYnJlYWsgMworICAgIGRvbmUKKyAgZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisgIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX0dSRVAiOyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgZ3JlcCBjb3VsZCBiZSBmb3VuZCBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4iICIkTElORU5PIiA1CisgIGZpCitlbHNlCisgIGFjX2N2X3BhdGhfR1JFUD0kR1JFUAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcGF0aF9HUkVQIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfcGF0aF9HUkVQIiA+JjY7IH0KKyBHUkVQPSIkYWNfY3ZfcGF0aF9HUkVQIgorCisKIAogCiAKQEAgLTQ3MzMsNiArNDk2NiwxMDQgQEAKICAgQ1hYPSIkYWNfY3ZfcGF0aF9DWFgiCiBmaQogIDs7CisgICAgICAgIGljY3wqL2ljYykgICAgICAgICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1pY3BjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWljcGM7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX0NYWCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJENYWCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9DWFg9IiRDWFgiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluIG5vdGZvdW5kCitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wYXRoX0NYWD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICA7OworZXNhYworZmkKK0NYWD0kYWNfY3ZfcGF0aF9DWFgKK2lmIHRlc3QgLW4gIiRDWFgiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ1hYIiA+JjUKKyRhc19lY2hvICIkQ1hYIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9DWFgiOyB0aGVuCisgIGFjX3B0X0NYWD0kQ1hYCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiaWNwYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgaWNwYzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfYWNfcHRfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkYWNfcHRfQ1hYIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX2FjX3B0X0NYWD0iJGFjX3B0X0NYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gbm90Zm91bmQKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3BhdGhfYWNfcHRfQ1hYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2FjCitmaQorYWNfcHRfQ1hYPSRhY19jdl9wYXRoX2FjX3B0X0NYWAoraWYgdGVzdCAtbiAiJGFjX3B0X0NYWCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19wdF9DWFgiID4mNQorJGFzX2VjaG8gIiRhY19wdF9DWFgiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19wdF9DWFgiID0geDsgdGhlbgorICAgIENYWD0iaWNwYyIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBDWFg9JGFjX3B0X0NYWAorICBmaQorZWxzZQorICBDWFg9IiRhY19jdl9wYXRoX0NYWCIKK2ZpCisgOzsKICAgICAgICAgZXNhYwogCWlmIHRlc3QgIiRDWFgiID0gIm5vdGZvdW5kIgogCXRoZW4KQEAgLTQ4NjEsNiArNTE5MiwxNDUgQEAKIGZpCiAKIAorTVVMVElBUkNIPSQoJENDIC0tcHJpbnQtbXVsdGlhcmNoIDI+L2Rldi9udWxsKQorCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHRoZSBwbGF0Zm9ybSB0cmlwbGV0IGJhc2VkIG9uIGNvbXBpbGVyIGNoYXJhY3RlcmlzdGljcyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgdGhlIHBsYXRmb3JtIHRyaXBsZXQgYmFzZWQgb24gY29tcGlsZXIgY2hhcmFjdGVyaXN0aWNzLi4uICIgPiY2OyB9CitjYXQgPj4gY29uZnRlc3QuYyA8PEVPRgorI3VuZGVmIGJmaW4KKyN1bmRlZiBjcmlzCisjdW5kZWYgZnIzMAorI3VuZGVmIGxpbnV4CisjdW5kZWYgaHBwYQorI3VuZGVmIGhwdXgKKyN1bmRlZiBpMzg2CisjdW5kZWYgbWlwcworI3VuZGVmIHBvd2VycGMKKyN1bmRlZiBzcGFyYworI3VuZGVmIHVuaXgKKyNpZiBkZWZpbmVkKF9fbGludXhfXykKKyMgaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQorICAgICAgICB4ODZfNjQtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fSUxQMzJfXykKKyAgICAgICAgeDg2XzY0LWxpbnV4LWdudXgzMgorIyBlbGlmIGRlZmluZWQoX19pMzg2X18pCisgICAgICAgIGkzODYtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0FBUkNINjRFTF9fKQorIyAgaWYgZGVmaW5lZChfX0lMUDMyX18pCisgICAgICAgIGFhcmNoNjRfaWxwMzItbGludXgtZ251CisjICBlbHNlCisgICAgICAgIGFhcmNoNjQtbGludXgtZ251CisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19BQVJDSDY0RUJfXykKKyMgIGlmIGRlZmluZWQoX19JTFAzMl9fKQorICAgICAgICBhYXJjaDY0X2JlX2lscDMyLWxpbnV4LWdudQorIyAgZWxzZQorICAgICAgICBhYXJjaDY0X2JlLWxpbnV4LWdudQorIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9fYWxwaGFfXykKKyAgICAgICAgYWxwaGEtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX0FSTV9FQUJJX18pICYmIGRlZmluZWQoX19BUk1fUENTX1ZGUCkKKyMgIGlmIGRlZmluZWQoX19BUk1FTF9fKQorICAgICAgICBhcm0tbGludXgtZ251ZWFiaWhmCisjICBlbHNlCisgICAgICAgIGFybWViLWxpbnV4LWdudWVhYmloZgorIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19BUk1fUENTX1ZGUCkKKyMgIGlmIGRlZmluZWQoX19BUk1FTF9fKQorICAgICAgICBhcm0tbGludXgtZ251ZWFiaQorIyAgZWxzZQorICAgICAgICBhcm1lYi1saW51eC1nbnVlYWJpCisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19ocHBhX18pCisgICAgICAgIGhwcGEtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX2lhNjRfXykKKyAgICAgICAgaWE2NC1saW51eC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9fbTY4a19fKSAmJiAhZGVmaW5lZChfX21jb2xkZmlyZV9fKQorICAgICAgICBtNjhrLWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19taXBzX2hhcmRfZmxvYXQpICYmIGRlZmluZWQoX01JUFNFTCkKKyMgIGlmIF9NSVBTX1NJTSA9PSBfQUJJTzMyCisgICAgICAgIG1pcHNlbC1saW51eC1nbnUKKyMgIGVsaWYgX01JUFNfU0lNID09IF9BQklOMzIKKyAgICAgICAgbWlwczY0ZWwtbGludXgtZ251YWJpbjMyCisjICBlbGlmIF9NSVBTX1NJTSA9PSBfQUJJNjQKKyAgICAgICAgbWlwczY0ZWwtbGludXgtZ251YWJpNjQKKyMgIGVsc2UKKyMgICBlcnJvciB1bmtub3duIHBsYXRmb3JtIHRyaXBsZXQKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX21pcHNfaGFyZF9mbG9hdCkKKyMgIGlmIF9NSVBTX1NJTSA9PSBfQUJJTzMyCisgICAgICAgIG1pcHMtbGludXgtZ251CisjICBlbGlmIF9NSVBTX1NJTSA9PSBfQUJJTjMyCisgICAgICAgIG1pcHM2NC1saW51eC1nbnVhYmluMzIKKyMgIGVsaWYgX01JUFNfU0lNID09IF9BQkk2NAorICAgICAgICBtaXBzNjQtbGludXgtZ251YWJpNjQKKyMgIGVsc2UKKyMgICBlcnJvciB1bmtub3duIHBsYXRmb3JtIHRyaXBsZXQKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX29yMWtfXykKKyAgICAgICAgb3Ixay1saW51eC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9fcG93ZXJwY19fKSAmJiBkZWZpbmVkKF9fU1BFX18pCisgICAgICAgIHBvd2VycGMtbGludXgtZ251c3BlCisjIGVsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorIyAgaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU5fXykKKyAgICAgICAgcG93ZXJwYzY0bGUtbGludXgtZ251CisjICBlbHNlCisgICAgICAgIHBvd2VycGM2NC1saW51eC1nbnUKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX3Bvd2VycGNfXykKKyAgICAgICAgcG93ZXJwYy1saW51eC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9fczM5MHhfXykKKyAgICAgICAgczM5MHgtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3MzOTBfXykKKyAgICAgICAgczM5MC1saW51eC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9fc2hfXykgJiYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU5fXykKKyAgICAgICAgc2g0LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19zcGFyY19fKSAmJiBkZWZpbmVkKF9fYXJjaDY0X18pCisgICAgICAgIHNwYXJjNjQtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3NwYXJjX18pCisgICAgICAgIHNwYXJjLWxpbnV4LWdudQorIyBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9rZXJuZWxfXykKKyMgaWYgZGVmaW5lZChfX0xQNjRfXykKKyAgICAgICAgeDg2XzY0LWtmcmVlYnNkLWdudQorIyBlbGlmIGRlZmluZWQoX19pMzg2X18pCisgICAgICAgIGkzODYta2ZyZWVic2QtZ251CisjIGVsc2UKKyMgICBlcnJvciB1bmtub3duIHBsYXRmb3JtIHRyaXBsZXQKKyMgZW5kaWYKKyNlbGlmIGRlZmluZWQoX19nbnVfaHVyZF9fKQorICAgICAgICBpMzg2LWdudQorI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCisgICAgICAgIGRhcndpbgorI2Vsc2UKKyMgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjZW5kaWYKKworRU9GCisKK2lmICRDUFAgY29uZnRlc3QuYyA+Y29uZnRlc3Qub3V0IDI+L2Rldi9udWxsOyB0aGVuCisgIFBMQVRGT1JNX1RSSVBMRVQ9YGdyZXAgLXYgJ14jJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICdeICokJyB8IHRyIC1kICcgCSdgCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkUExBVEZPUk1fVFJJUExFVCIgPiY1CiskYXNfZWNobyAiJFBMQVRGT1JNX1RSSVBMRVQiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm9uZSIgPiY1CiskYXNfZWNobyAibm9uZSIgPiY2OyB9CitmaQorcm0gLWYgY29uZnRlc3QuYyBjb25mdGVzdC5vdXQKKworaWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgIT0geCAmJiB0ZXN0IHgkTVVMVElBUkNIICE9IHg7IHRoZW4KKyAgaWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgIT0geCRNVUxUSUFSQ0g7IHRoZW4KKyAgICBhc19mbl9lcnJvciAkPyAiaW50ZXJuYWwgY29uZmlndXJlIGVycm9yIGZvciB0aGUgcGxhdGZvcm0gdHJpcGxldCwgcGxlYXNlIGZpbGUgYSBidWcgcmVwb3J0IiAiJExJTkVOTyIgNQorICBmaQorZmkKK1BMQVRESVI9cGxhdC0kTUFDSERFUAorCisKKworCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtV2wsLS1uby1hcy1uZWVkZWQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC1XbCwtLW5vLWFzLW5lZWRlZC4uLiAiID4mNjsgfQogc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKQEAgLTQ4OTMsMjA2ICs1MzYzLDYgQEAKIAogCiAjIGNoZWNrcyBmb3IgVU5JWCB2YXJpYW50cyB0aGF0IHNldCBDIHByZXByb2Nlc3NvciB2YXJpYWJsZXMKLWFjX2V4dD1jCi1hY19jcHA9JyRDUFAgJENQUEZMQUdTJwotYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IuLi4gIiA+JjY7IH0KLSMgT24gU3Vucywgc29tZXRpbWVzICRDUFAgbmFtZXMgYSBkaXJlY3RvcnkuCi1pZiB0ZXN0IC1uICIkQ1BQIiAmJiB0ZXN0IC1kICIkQ1BQIjsgdGhlbgotICBDUFA9Ci1maQotaWYgdGVzdCAteiAiJENQUCI7IHRoZW4KLSAgaWYgJHthY19jdl9wcm9nX0NQUCs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gICAgICAjIERvdWJsZSBxdW90ZXMgYmVjYXVzZSBDUFAgbmVlZHMgdG8gYmUgZXhwYW5kZWQKLSAgICBmb3IgQ1BQIGluICIkQ0MgLUUiICIkQ0MgLUUgLXRyYWRpdGlvbmFsLWNwcCIgIi9saWIvY3BwIgotICAgIGRvCi0gICAgICBhY19wcmVwcm9jX29rPWZhbHNlCi1mb3IgYWNfY19wcmVwcm9jX3dhcm5fZmxhZyBpbiAnJyB5ZXMKLWRvCi0gICMgVXNlIGEgaGVhZGVyIGZpbGUgdGhhdCBjb21lcyB3aXRoIGdjYywgc28gY29uZmlndXJpbmcgZ2xpYmMKLSAgIyB3aXRoIGEgZnJlc2ggY3Jvc3MtY29tcGlsZXIgd29ya3MuCi0gICMgUHJlZmVyIDxsaW1pdHMuaD4gdG8gPGFzc2VydC5oPiBpZiBfX1NURENfXyBpcyBkZWZpbmVkLCBzaW5jZQotICAjIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4KLSAgIyBPbiB0aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwKLSAgIyBub3QganVzdCB0aHJvdWdoIGNwcC4gIlN5bnRheCBlcnJvciIgaXMgaGVyZSB0byBjYXRjaCB0aGlzIGNhc2UuCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSNpZmRlZiBfX1NURENfXwotIyBpbmNsdWRlIDxsaW1pdHMuaD4KLSNlbHNlCi0jIGluY2x1ZGUgPGFzc2VydC5oPgotI2VuZGlmCi0JCSAgICAgU3ludGF4IGVycm9yCi1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgotCi1lbHNlCi0gICMgQnJva2VuOiBmYWlscyBvbiB2YWxpZCBpbnB1dC4KLWNvbnRpbnVlCi1maQotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAotCi0gICMgT0ssIHdvcmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub25leGlzdGVudCBoZWFkZXJzCi0gICMgY2FuIGJlIGRldGVjdGVkIGFuZCBob3cuCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSNpbmNsdWRlIDxhY19ub25leGlzdGVudC5oPgotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5FTk8iOyB0aGVuIDoKLSAgIyBCcm9rZW46IHN1Y2Nlc3Mgb24gaW52YWxpZCBpbnB1dC4KLWNvbnRpbnVlCi1lbHNlCi0gICMgUGFzc2VzIGJvdGggdGVzdHMuCi1hY19wcmVwcm9jX29rPToKLWJyZWFrCi1maQotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAotCi1kb25lCi0jIEJlY2F1c2Ugb2YgYGJyZWFrJywgX0FDX1BSRVBST0NfSUZFTFNFJ3MgY2xlYW5pbmcgY29kZSB3YXMgc2tpcHBlZC4KLXJtIC1mIGNvbmZ0ZXN0LmkgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLWlmICRhY19wcmVwcm9jX29rOyB0aGVuIDoKLSAgYnJlYWsKLWZpCi0KLSAgICBkb25lCi0gICAgYWNfY3ZfcHJvZ19DUFA9JENQUAotCi1maQotICBDUFA9JGFjX2N2X3Byb2dfQ1BQCi1lbHNlCi0gIGFjX2N2X3Byb2dfQ1BQPSRDUFAKLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENQUCIgPiY1Ci0kYXNfZWNobyAiJENQUCIgPiY2OyB9Ci1hY19wcmVwcm9jX29rPWZhbHNlCi1mb3IgYWNfY19wcmVwcm9jX3dhcm5fZmxhZyBpbiAnJyB5ZXMKLWRvCi0gICMgVXNlIGEgaGVhZGVyIGZpbGUgdGhhdCBjb21lcyB3aXRoIGdjYywgc28gY29uZmlndXJpbmcgZ2xpYmMKLSAgIyB3aXRoIGEgZnJlc2ggY3Jvc3MtY29tcGlsZXIgd29ya3MuCi0gICMgUHJlZmVyIDxsaW1pdHMuaD4gdG8gPGFzc2VydC5oPiBpZiBfX1NURENfXyBpcyBkZWZpbmVkLCBzaW5jZQotICAjIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4KLSAgIyBPbiB0aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwKLSAgIyBub3QganVzdCB0aHJvdWdoIGNwcC4gIlN5bnRheCBlcnJvciIgaXMgaGVyZSB0byBjYXRjaCB0aGlzIGNhc2UuCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSNpZmRlZiBfX1NURENfXwotIyBpbmNsdWRlIDxsaW1pdHMuaD4KLSNlbHNlCi0jIGluY2x1ZGUgPGFzc2VydC5oPgotI2VuZGlmCi0JCSAgICAgU3ludGF4IGVycm9yCi1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgotCi1lbHNlCi0gICMgQnJva2VuOiBmYWlscyBvbiB2YWxpZCBpbnB1dC4KLWNvbnRpbnVlCi1maQotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAotCi0gICMgT0ssIHdvcmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub25leGlzdGVudCBoZWFkZXJzCi0gICMgY2FuIGJlIGRldGVjdGVkIGFuZCBob3cuCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSNpbmNsdWRlIDxhY19ub25leGlzdGVudC5oPgotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5FTk8iOyB0aGVuIDoKLSAgIyBCcm9rZW46IHN1Y2Nlc3Mgb24gaW52YWxpZCBpbnB1dC4KLWNvbnRpbnVlCi1lbHNlCi0gICMgUGFzc2VzIGJvdGggdGVzdHMuCi1hY19wcmVwcm9jX29rPToKLWJyZWFrCi1maQotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAotCi1kb25lCi0jIEJlY2F1c2Ugb2YgYGJyZWFrJywgX0FDX1BSRVBST0NfSUZFTFNFJ3MgY2xlYW5pbmcgY29kZSB3YXMgc2tpcHBlZC4KLXJtIC1mIGNvbmZ0ZXN0LmkgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLWlmICRhY19wcmVwcm9jX29rOyB0aGVuIDoKLQotZWxzZQotICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yICQ/ICJDIHByZXByb2Nlc3NvciBcIiRDUFBcIiBmYWlscyBzYW5pdHkgY2hlY2sKLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9Ci1maQotCi1hY19leHQ9YwotYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKLWFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKLWFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi1hY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251Ci0KLQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ3JlcCB0aGF0IGhhbmRsZXMgbG9uZyBsaW5lcyBhbmQgLWUiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGdyZXAgdGhhdCBoYW5kbGVzIGxvbmcgbGluZXMgYW5kIC1lLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3BhdGhfR1JFUCs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLXogIiRHUkVQIjsgdGhlbgotICBhY19wYXRoX0dSRVBfZm91bmQ9ZmFsc2UKLSAgIyBMb29wIHRocm91Z2ggdGhlIHVzZXIncyBwYXRoIGFuZCB0ZXN0IGZvciBlYWNoIG9mIFBST0dOQU1FLUxJU1QKLSAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4KLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfcHJvZyBpbiBncmVwIGdncmVwOyBkbwotICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgICAgYWNfcGF0aF9HUkVQPSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IgotICAgICAgYXNfZm5fZXhlY3V0YWJsZV9wICIkYWNfcGF0aF9HUkVQIiB8fCBjb250aW51ZQotIyBDaGVjayBmb3IgR05VIGFjX3BhdGhfR1JFUCBhbmQgc2VsZWN0IGl0IGlmIGl0IGlzIGZvdW5kLgotICAjIENoZWNrIGZvciBHTlUgJGFjX3BhdGhfR1JFUAotY2FzZSBgIiRhY19wYXRoX0dSRVAiIC0tdmVyc2lvbiAyPiYxYCBpbgotKkdOVSopCi0gIGFjX2N2X3BhdGhfR1JFUD0iJGFjX3BhdGhfR1JFUCIgYWNfcGF0aF9HUkVQX2ZvdW5kPTo7OwotKikKLSAgYWNfY291bnQ9MAotICAkYXNfZWNob19uIDAxMjM0NTY3ODkgPiJjb25mdGVzdC5pbiIKLSAgd2hpbGUgOgotICBkbwotICAgIGNhdCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5pbiIgPiJjb25mdGVzdC50bXAiCi0gICAgbXYgImNvbmZ0ZXN0LnRtcCIgImNvbmZ0ZXN0LmluIgotICAgIGNwICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0Lm5sIgotICAgICRhc19lY2hvICdHUkVQJyA+PiAiY29uZnRlc3QubmwiCi0gICAgIiRhY19wYXRoX0dSRVAiIC1lICdHUkVQJCcgLWUgJy0oY2Fubm90IG1hdGNoKS0nIDwgImNvbmZ0ZXN0Lm5sIiA+ImNvbmZ0ZXN0Lm91dCIgMj4vZGV2L251bGwgfHwgYnJlYWsKLSAgICBkaWZmICJjb25mdGVzdC5vdXQiICJjb25mdGVzdC5ubCIgPi9kZXYvbnVsbCAyPiYxIHx8IGJyZWFrCi0gICAgYXNfZm5fYXJpdGggJGFjX2NvdW50ICsgMSAmJiBhY19jb3VudD0kYXNfdmFsCi0gICAgaWYgdGVzdCAkYWNfY291bnQgLWd0ICR7YWNfcGF0aF9HUkVQX21heC0wfTsgdGhlbgotICAgICAgIyBCZXN0IG9uZSBzbyBmYXIsIHNhdmUgaXQgYnV0IGtlZXAgbG9va2luZyBmb3IgYSBiZXR0ZXIgb25lCi0gICAgICBhY19jdl9wYXRoX0dSRVA9IiRhY19wYXRoX0dSRVAiCi0gICAgICBhY19wYXRoX0dSRVBfbWF4PSRhY19jb3VudAotICAgIGZpCi0gICAgIyAxMCooMl4xMCkgY2hhcnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0aGFuIGVub3VnaAotICAgIHRlc3QgJGFjX2NvdW50IC1ndCAxMCAmJiBicmVhawotICBkb25lCi0gIHJtIC1mIGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0LnRtcCBjb25mdGVzdC5ubCBjb25mdGVzdC5vdXQ7OwotZXNhYwotCi0gICAgICAkYWNfcGF0aF9HUkVQX2ZvdW5kICYmIGJyZWFrIDMKLSAgICBkb25lCi0gIGRvbmUKLSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwotICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9HUkVQIjsgdGhlbgotICAgIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIGdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIgNQotICBmaQotZWxzZQotICBhY19jdl9wYXRoX0dSRVA9JEdSRVAKLWZpCi0KLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3BhdGhfR1JFUCIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X3BhdGhfR1JFUCIgPiY2OyB9Ci0gR1JFUD0iJGFjX2N2X3BhdGhfR1JFUCIKLQogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBlZ3JlcCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZWdyZXAuLi4gIiA+JjY7IH0KQEAgLTU0MTIsMTAgKzU2ODIsNiBAQAogICAgIGVzYWM7OwogZXNhYwogCi1NVUxUSUFSQ0g9JCgkQ0MgLS1wcmludC1tdWx0aWFyY2ggMj4vZGV2L251bGwpCi0KLQotCiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgTElCUkFSWSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBMSUJSQVJZLi4uICIgPiY2OyB9CkBAIC01NjU0LDExICs1OTIwLDYgQEAKIAkgIExETElCUkFSWT0nbGlicHl0aG9uJChMRFZFUlNJT04pLnNvJwogCSAgQkxETElCUkFSWT0nLUwuIC1scHl0aG9uJChMRFZFUlNJT04pJwogCSAgUlVOU0hBUkVEPUxEX0xJQlJBUllfUEFUSD1gcHdkYCR7TERfTElCUkFSWV9QQVRIOis6JHtMRF9MSUJSQVJZX1BBVEh9fQotCSAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgotCSAgICAgIEZyZWVCU0QqKQotCQlTT1ZFUlNJT049YGVjaG8gJFNPVkVSU0lPTnxjdXQgLWQgIi4iIC1mIDFgCi0JCTs7Ci0JICBlc2FjCiAJICBJTlNUU09OQU1FPSIkTERMSUJSQVJZIi4kU09WRVJTSU9OCiAJICBpZiB0ZXN0ICIkd2l0aF9weWRlYnVnIiAhPSB5ZXMKICAgICAgICAgICB0aGVuCkBAIC02MDY2LDYgKzYzMjcsNTcgQEAKIGZpCiAKIAorZm9yIGFjX3Byb2cgaW4gcHl0aG9uJFBBQ0tBR0VfVkVSU0lPTiBweXRob24zIHB5dGhvbgorZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX1BZVEhPTis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRQWVRIT04iOyB0aGVuCisgIGFjX2N2X3Byb2dfUFlUSE9OPSIkUFlUSE9OIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3Byb2dfUFlUSE9OPSIkYWNfcHJvZyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCitQWVRIT049JGFjX2N2X3Byb2dfUFlUSE9OCitpZiB0ZXN0IC1uICIkUFlUSE9OIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFBZVEhPTiIgPiY1CiskYXNfZWNobyAiJFBZVEhPTiIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgIHRlc3QgLW4gIiRQWVRIT04iICYmIGJyZWFrCitkb25lCit0ZXN0IC1uICIkUFlUSE9OIiB8fCBQWVRIT049Im5vdC1mb3VuZCIKKworaWYgdGVzdCAiJFBZVEhPTiIgPSBub3QtZm91bmQ7IHRoZW4KKyAgICBPUENPREVIR0VOPSJAZWNobyBweXRob246ICRQWVRIT04hIGNhbm5vdCBydW4gVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weSIKK2Vsc2UKKyAgICBPUENPREVIR0VOPSIkUFlUSE9OIgorZmkKKworCisKIGNhc2UgJE1BQ0hERVAgaW4KIGJzZG9zKnxocCp8SFAqKQogCSMgaW5zdGFsbCAtZCBkb2VzIG5vdCB3b3JrIG9uIEJTREkgb3IgSFAtVVgKQEAgLTYyNDgsNiArNjU2MCw5MiBAQAogZmkKIAogCisjIEVuYWJsZSBQR08gZmxhZ3MuCisKKworCisKKworCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImxsdm0tcHJvZmRhdGEiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGxsdm0tcHJvZmRhdGE7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX0xMVk1fUFJPRl9GT1VORCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRMTFZNX1BST0ZfRk9VTkQiOyB0aGVuCisgIGFjX2N2X3Byb2dfTExWTV9QUk9GX0ZPVU5EPSIkTExWTV9QUk9GX0ZPVU5EIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3Byb2dfTExWTV9QUk9GX0ZPVU5EPSJmb3VuZCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19MTFZNX1BST0ZfRk9VTkQiICYmIGFjX2N2X3Byb2dfTExWTV9QUk9GX0ZPVU5EPSJub3QtZm91bmQiCitmaQorZmkKK0xMVk1fUFJPRl9GT1VORD0kYWNfY3ZfcHJvZ19MTFZNX1BST0ZfRk9VTkQKK2lmIHRlc3QgLW4gIiRMTFZNX1BST0ZfRk9VTkQiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTExWTV9QUk9GX0ZPVU5EIiA+JjUKKyRhc19lY2hvICIkTExWTV9QUk9GX0ZPVU5EIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK0xMVk1fUFJPRl9FUlI9bm8KK2Nhc2UgJENDIGluCisgICpjbGFuZyopCisgICAgIyBBbnkgY2hhbmdlcyBtYWRlIGhlcmUgc2hvdWxkIGJlIHJlZmxlY3RlZCBpbiB0aGUgR0NDK0RhcndpbiBjYXNlIGJlbG93CisgICAgUEdPX1BST0ZfR0VOX0ZMQUc9Ii1mcHJvZmlsZS1pbnN0ci1nZW5lcmF0ZSIKKyAgICBQR09fUFJPRl9VU0VfRkxBRz0iLWZwcm9maWxlLWluc3RyLXVzZT1jb2RlLnByb2ZjbGFuZ2QiCisgICAgTExWTV9QUk9GX01FUkdFUj0ibGx2bS1wcm9mZGF0YSBtZXJnZSAtb3V0cHV0PWNvZGUucHJvZmNsYW5nZCAqLnByb2ZjbGFuZ3IiCisgICAgTExWTV9QUk9GX0ZJTEU9IkxMVk1fUFJPRklMRV9GSUxFPVwiY29kZS0lcC5wcm9mY2xhbmdyXCIiCisgICAgaWYgdGVzdCAkTExWTV9QUk9GX0ZPVU5EID0gbm90LWZvdW5kCisgICAgdGhlbgorICAgICAgTExWTV9QUk9GX0VSUj15ZXMKKyAgICBmaQorICAgIDs7CisgICpnY2MqKQorICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KKyAgICAgIERhcndpbiopCisgICAgICAgIFBHT19QUk9GX0dFTl9GTEFHPSItZnByb2ZpbGUtaW5zdHItZ2VuZXJhdGUiCisgICAgICAgIFBHT19QUk9GX1VTRV9GTEFHPSItZnByb2ZpbGUtaW5zdHItdXNlPWNvZGUucHJvZmNsYW5nZCIKKyAgICAgICAgTExWTV9QUk9GX01FUkdFUj0ibGx2bS1wcm9mZGF0YSBtZXJnZSAtb3V0cHV0PWNvZGUucHJvZmNsYW5nZCAqLnByb2ZjbGFuZ3IiCisgICAgICAgIExMVk1fUFJPRl9GSUxFPSJMTFZNX1BST0ZJTEVfRklMRT1cImNvZGUtJXAucHJvZmNsYW5nclwiIgorICAgICAgICBpZiB0ZXN0ICRMTFZNX1BST0ZfRk9VTkQgPSBub3QtZm91bmQKKyAgICAgICAgdGhlbgorICAgICAgICAgIExMVk1fUFJPRl9FUlI9eWVzCisgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgICAqKQorICAgICAgICBQR09fUFJPRl9HRU5fRkxBRz0iLWZwcm9maWxlLWdlbmVyYXRlIgorICAgICAgICBQR09fUFJPRl9VU0VfRkxBRz0iLWZwcm9maWxlLXVzZSAtZnByb2ZpbGUtY29ycmVjdGlvbiIKKyAgICAgICAgTExWTV9QUk9GX01FUkdFUj0idHJ1ZSIKKyAgICAgICAgTExWTV9QUk9GX0ZJTEU9IiIKKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgKmljYyopCisgICAgUEdPX1BST0ZfR0VOX0ZMQUc9Ii1wcm9mLWdlbiIKKyAgICBQR09fUFJPRl9VU0VfRkxBRz0iLXByb2YtdXNlIgorICAgIExMVk1fUFJPRl9NRVJHRVI9InRydWUiCisgICAgTExWTV9QUk9GX0ZJTEU9IiIKKyAgICA7OworZXNhYworCiAjIFhYWCBTaG91bGRuJ3QgdGhlIGNvZGUgYWJvdmUgdGhhdCBmaWRkbGVzIHdpdGggQkFTRUNGTEFHUyBhbmQgT1BUIGJlCiAjIG1lcmdlZCB3aXRoIHRoaXMgY2h1bmsgb2YgY29kZT8KIApAQCAtNjM5Miw2ICs2NzkwLDEzIEBACiAgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtZm5vLXN0cmljdC1hbGlhc2luZyIKICAgICBmaQogCisgICAgIyBJQ0MgZG9lc24ndCByZWNvZ25pemUgdGhlIG9wdGlvbiwgYnV0IG9ubHkgZW1pdHMgYSB3YXJuaW5nCisgICAgIyMgWFhYIGRvZXMgaXQgZW1pdCBhbiB1bnVzZWQgcmVzdWx0IHdhcm5pbmcgYW5kIGNhbiBpdCBiZSBkaXNhYmxlZD8KKyAgICBjYXNlICIkQ0MiIGluCisgICAgKmljYyopCisgICAgYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmc9bm8KKyAgICA7OworICAgICopCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvZmYgJENDIHVudXNlZCByZXN1bHQgd2FybmluZyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvZmYgJENDIHVudXNlZCByZXN1bHQgd2FybmluZy4uLiAiID4mNjsgfQogICAgICBhY19zYXZlX2NjPSIkQ0MiCkBAIC02NDI5LDYgKzY4MzQsOCBAQAogICAgICBDQz0iJGFjX3NhdmVfY2MiCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZyIgPiY1CiAkYXNfZWNobyAiJGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nIiA+JjY7IH0KKyAgICA7OworICAgIGVzYWMKIAogICAgIGlmIHRlc3QgJGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nID0geWVzCiAgICAgdGhlbgpAQCAtNjQ3OCw2ICs2ODg1LDk0IEBACiAgICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIKICAgICBmaQogCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvbiAkQ0MgbWl4ZWQgc2lnbiBjb21wYXJpc29uIHdhcm5pbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgd2UgY2FuIHR1cm4gb24gJENDIG1peGVkIHNpZ24gY29tcGFyaXNvbiB3YXJuaW5nLi4uICIgPiY2OyB9CisgICAgIGFjX3NhdmVfY2M9IiRDQyIKKyAgICAgQ0M9IiRDQyAtV3NpZ24tY29tcGFyZSIKKyAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisgICAgIGlmICR7YWNfY3ZfZW5hYmxlX3NpZ25fY29tcGFyZV93YXJuaW5nKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CisKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCisgICAgICAgICAgIGFjX2N2X2VuYWJsZV9zaWduX2NvbXBhcmVfd2FybmluZz15ZXMKKworZWxzZQorCisgICAgICAgICAgIGFjX2N2X2VuYWJsZV9zaWduX2NvbXBhcmVfd2FybmluZz1ubworCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCisgICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgorICAgICBDQz0iJGFjX3NhdmVfY2MiCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9lbmFibGVfc2lnbl9jb21wYXJlX3dhcm5pbmciID4mNQorJGFzX2VjaG8gIiRhY19jdl9lbmFibGVfc2lnbl9jb21wYXJlX3dhcm5pbmciID4mNjsgfQorCisgICAgaWYgdGVzdCAkYWNfY3ZfZW5hYmxlX3NpZ25fY29tcGFyZV93YXJuaW5nID0geWVzCisgICAgdGhlbgorICAgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLVdzaWduLWNvbXBhcmUiCisgICAgZmkKKworICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgd2UgY2FuIHR1cm4gb24gJENDIHVucmVhY2hhYmxlIGNvZGUgd2FybmluZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvbiAkQ0MgdW5yZWFjaGFibGUgY29kZSB3YXJuaW5nLi4uICIgPiY2OyB9CisgICAgIGFjX3NhdmVfY2M9IiRDQyIKKyAgICAgQ0M9IiRDQyAtV3VucmVhY2hhYmxlLWNvZGUiCisgICAgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorICAgICBpZiAke2FjX2N2X2VuYWJsZV91bnJlYWNoYWJsZV9jb2RlX3dhcm5pbmcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKKyAgICAgICAgICAgYWNfY3ZfZW5hYmxlX3VucmVhY2hhYmxlX2NvZGVfd2FybmluZz15ZXMKKworZWxzZQorCisgICAgICAgICAgIGFjX2N2X2VuYWJsZV91bnJlYWNoYWJsZV9jb2RlX3dhcm5pbmc9bm8KKworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKKworICAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZW5hYmxlX3VucmVhY2hhYmxlX2NvZGVfd2FybmluZyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2VuYWJsZV91bnJlYWNoYWJsZV9jb2RlX3dhcm5pbmciID4mNjsgfQorCisgICAgIyBEb24ndCBlbmFibGUgdW5yZWFjaGFibGUgY29kZSB3YXJuaW5nIGluIGRlYnVnIG1vZGUsIHNpbmNlIGl0IHVzdWFsbHkKKyAgICAjIHJlc3VsdHMgaW4gbm9uLXN0YW5kYXJkIGNvZGUgcGF0aHMuCisgICAgaWYgdGVzdCAkYWNfY3ZfZW5hYmxlX3VucmVhY2hhYmxlX2NvZGVfd2FybmluZyA9IHllcyAmJiB0ZXN0ICIkUHlfREVCVUciICE9ICJ0cnVlIgorICAgIHRoZW4KKyAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1XdW5yZWFjaGFibGUtY29kZSIKKyAgICBmaQorCiAgICAgIyBpZiB1c2luZyBnY2Mgb24gYWxwaGEsIHVzZSAtbWllZWUgdG8gZ2V0IChuZWFyKSBmdWxsIElFRUUgNzU0CiAgICAgIyBzdXBwb3J0LiAgV2l0aG91dCB0aGlzLCB0cmVhdG1lbnQgb2Ygc3Vibm9ybWFscyBkb2Vzbid0IGZvbGxvdwogICAgICMgdGhlIHN0YW5kYXJkLgpAQCAtNjYzMCw2ICs3MTI1LDEzIEBACiAgICAgOzsKIGVzYWMKIAorIyBJQ0MgbmVlZHMgLWZwLW1vZGVsIHN0cmljdCBvciBmbG9hdHMgYmVoYXZlIGJhZGx5CitjYXNlICIkQ0MiIGluCisqaWNjKikKKyAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtZnAtbW9kZWwgc3RyaWN0IgorICAgIDs7Citlc2FjCisKIGlmIHRlc3QgIiRQeV9ERUJVRyIgPSAndHJ1ZSc7IHRoZW4KICAgOgogZWxzZQpAQCAtOTE4MCw2ICs5NjgyLDIzIEBACiBmaQogCiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC1hZGRyZXNzLXNhbml0aXplciIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLWFkZHJlc3Mtc2FuaXRpemVyLi4uICIgPiY2OyB9CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYWRkcmVzc19zYW5pdGl6ZXIgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2FkZHJlc3Nfc2FuaXRpemVyK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgd2l0aHZhbD0kd2l0aF9hZGRyZXNzX3Nhbml0aXplcjsKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aHZhbCIgPiY1CiskYXNfZWNobyAiJHdpdGh2YWwiID4mNjsgfQorQkFTRUNGTEFHUz0iLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyICRCQVNFQ0ZMQUdTIgorTERGTEFHUz0iLWZzYW5pdGl6ZT1hZGRyZXNzICRMREZMQUdTIgorCitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCiAjIE1vc3QgU1ZSNCBwbGF0Zm9ybXMgKGUuZy4gU29sYXJpcykgbmVlZCAtbHNvY2tldCBhbmQgLWxuc2wuCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0X29wZW4gaW4gLWxuc2wiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRfb3BlbiBpbiAtbG5zbC4uLiAiID4mNjsgfQpAQCAtMTAzNDAsNiArMTA4NTksMzYgQEAKIAlmaQogZmkKIAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQ0FOX1JBV19GRF9GUkFNRVMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIENBTl9SQVdfRkRfRlJBTUVTLi4uICIgPiY2OyB9CitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisgLyogQ0FOX1JBV19GRF9GUkFNRVMgYXZhaWxhYmxlIGNoZWNrICovCisjaW5jbHVkZSA8bGludXgvY2FuL3Jhdy5oPgoraW50CittYWluICgpCit7CitpbnQgY2FuX3Jhd19mZF9mcmFtZXMgPSBDQU5fUkFXX0ZEX0ZSQU1FUzsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfTElOVVhfQ0FOX1JBV19GRF9GUkFNRVMgMSIgPj5jb25mZGVmcy5oCisKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKworZWxzZQorCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIE9TWCAxMC41IFNESyBvciBsYXRlciIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgT1NYIDEwLjUgU0RLIG9yIGxhdGVyLi4uICIgPiY2OyB9CiBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC0xMTgyNiw2ICsxMjM3NSw3IEBACiAkYXNfZWNobyAiJGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lIiA+JjY7IH0KIGlmIHRlc3QgIngkYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWUiID0geHllczsgdGhlbiA6CiAKKyAgICAgICAgTElCUz0iJExJQlMgLWxydCIKICAgICAgICAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DTE9DS19HRVRUSU1FIDEiID4+Y29uZmRlZnMuaAogCiAKQEAgLTEzMDc4LDEyICsxMzYyOCwxMyBAQAogICByZXR1cm4gMDsKIH0KIF9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogICBoYXZlX2djY19hc21fZm9yX3g2ND15ZXMKIGVsc2UKICAgaGF2ZV9nY2NfYXNtX2Zvcl94NjQ9bm8KIGZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfZ2NjX2FzbV9mb3JfeDY0IiA+JjUKICRhc19lY2hvICIkaGF2ZV9nY2NfYXNtX2Zvcl94NjQiID4mNjsgfQogaWYgdGVzdCAiJGhhdmVfZ2NjX2FzbV9mb3JfeDY0IiA9IHllcwpAQCAtMTMyNTQsMTIgKzEzODA1LDEzIEBACiAgIHJldHVybiAwOwogfQogX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgIGhhdmVfZ2NjX2FzbV9mb3JfeDg3PXllcwogZWxzZQogICBoYXZlX2djY19hc21fZm9yX3g4Nz1ubwogZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9nY2NfYXNtX2Zvcl94ODciID4mNQogJGFzX2VjaG8gIiRoYXZlX2djY19hc21fZm9yX3g4NyIgPiY2OyB9CiBpZiB0ZXN0ICIkaGF2ZV9nY2NfYXNtX2Zvcl94ODciID0geWVzCkBAIC0xMzI2OSw2ICsxMzgyMSwzOSBAQAogCiBmaQogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgd2UgY2FuIHVzZSBnY2MgaW5saW5lIGFzc2VtYmxlciB0byBnZXQgYW5kIHNldCBtYzY4ODgxIGZwY3IiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB3ZSBjYW4gdXNlIGdjYyBpbmxpbmUgYXNzZW1ibGVyIHRvIGdldCBhbmQgc2V0IG1jNjg4ODEgZnBjci4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICB1bnNpZ25lZCBpbnQgZnBjcjsKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJmbW92ZS5sICUlZnBjciwlMCIgOiAiPWciIChmcGNyKSk7CisgIF9fYXNtX18gX192b2xhdGlsZV9fICgiZm1vdmUubCAlMCwlJWZwY3IiIDogOiAiZyIgKGZwY3IpKTsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGhhdmVfZ2NjX2FzbV9mb3JfbWM2ODg4MT15ZXMKK2Vsc2UKKyAgaGF2ZV9nY2NfYXNtX2Zvcl9tYzY4ODgxPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9nY2NfYXNtX2Zvcl9tYzY4ODgxIiA+JjUKKyRhc19lY2hvICIkaGF2ZV9nY2NfYXNtX2Zvcl9tYzY4ODgxIiA+JjY7IH0KK2lmIHRlc3QgIiRoYXZlX2djY19hc21fZm9yX21jNjg4ODEiID0geWVzCit0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfR0NDX0FTTV9GT1JfTUM2ODg4MSAxIiA+PmNvbmZkZWZzLmgKKworZmkKKwogIyBEZXRlY3Qgd2hldGhlciBzeXN0ZW0gYXJpdGhtZXRpYyBpcyBzdWJqZWN0IHRvIHg4Ny1zdHlsZSBkb3VibGUKICMgcm91bmRpbmcgaXNzdWVzLiAgVGhlIHJlc3VsdCBvZiB0aGlzIHRlc3QgaGFzIGxpdHRsZSBtZWFuaW5nIG9uIG5vbgogIyBJRUVFIDc1NCBwbGF0Zm9ybXMuICBPbiBJRUVFIDc1NCwgdGVzdCBzaG91bGQgcmV0dXJuIDEgaWYgcm91bmRpbmcKQEAgLTE0MDExLDEzICsxNDU5NiwxMyBAQAogJGFzX2VjaG8gIiRBQklGTEFHUyIgPiY2OyB9CiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIFNPQUJJIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIFNPQUJJLi4uICIgPiY2OyB9Ci1TT0FCST0nY3B5dGhvbi0nYGVjaG8gJFZFUlNJT04gfCB0ciAtZCAuYCR7QUJJRkxBR1N9CitTT0FCST0nY3B5dGhvbi0nYGVjaG8gJFZFUlNJT04gfCB0ciAtZCAuYCR7QUJJRkxBR1N9JHtQTEFURk9STV9UUklQTEVUOistJFBMQVRGT1JNX1RSSVBMRVR9CiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFNPQUJJIiA+JjUKICRhc19lY2hvICIkU09BQkkiID4mNjsgfQogCiAKIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KLSAgICBMaW51eCp8R05VKikKKyAgICBMaW51eCp8R05VKnxEYXJ3aW4pCiAJRVhUX1NVRkZJWD0uJHtTT0FCSX0ke1NITElCX1NVRkZJWH07OwogICAgICopCiAJRVhUX1NVRkZJWD0ke1NITElCX1NVRkZJWH07OwpAQCAtMTQ0MTgsNiArMTUwMDMsNDkgQEAKIAogZmkKIAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXBwZW5kX2hpc3RvcnkgaW4gLWxyZWFkbGluZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXBwZW5kX2hpc3RvcnkgaW4gLWxyZWFkbGluZS4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfcmVhZGxpbmVfYXBwZW5kX2hpc3RvcnkrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHJlYWRsaW5lICRSRUFETElORV9MSUJTICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIGFwcGVuZF9oaXN0b3J5ICgpOworaW50CittYWluICgpCit7CityZXR1cm4gYXBwZW5kX2hpc3RvcnkgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3JlYWRsaW5lX2FwcGVuZF9oaXN0b3J5PXllcworZWxzZQorICBhY19jdl9saWJfcmVhZGxpbmVfYXBwZW5kX2hpc3Rvcnk9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX3JlYWRsaW5lX2FwcGVuZF9oaXN0b3J5IiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3JlYWRsaW5lX2FwcGVuZF9oaXN0b3J5IiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3JlYWRsaW5lX2FwcGVuZF9oaXN0b3J5IiA9IHh5ZXM7IHRoZW4gOgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX1JMX0FQUEVORF9ISVNUT1JZIDEiID4+Y29uZmRlZnMuaAorCitmaQorCisKICMgRW5kIG9mIHJlYWRsaW5lIGNoZWNrczogcmVzdG9yZSBMSUJTCiBMSUJTPSRMSUJTX25vX3JlYWRsaW5lCiAKQEAgLTE1MzM0LDcgKzE1OTYyLDcgQEAKIGRvbmUKIAogCi1TUkNESVJTPSJQYXJzZXIgR3JhbW1hciBPYmplY3RzIFB5dGhvbiBNb2R1bGVzIE1hYyIKK1NSQ0RJUlM9IlBhcnNlciBHcmFtbWFyIE9iamVjdHMgUHl0aG9uIE1vZHVsZXMgTWFjIFByb2dyYW1zIgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYnVpbGQgZGlyZWN0b3JpZXMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGJ1aWxkIGRpcmVjdG9yaWVzLi4uICIgPiY2OyB9CiBmb3IgZGlyIGluICRTUkNESVJTOyBkbwpAQCAtMTU0NzUsNiArMTYxMDMsNzIgQEAKICAgICBlc2FjCiBmaQogCisjIENoZWNrIGZvciBzdGRhdG9taWMuaAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3RkYXRvbWljLmgiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN0ZGF0b21pYy5oLi4uICIgPiY2OyB9CitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKworICAgICNpbmNsdWRlIDxzdGRhdG9taWMuaD4KKyAgICBhdG9taWNfaW50IHZhbHVlID0gQVRPTUlDX1ZBUl9JTklUKDEpOworICAgIF9BdG9taWMgdm9pZCAqcHlfYXRvbWljX2FkZHJlc3MgPSAodm9pZCopICZ2YWx1ZTsKKyAgICBpbnQgbWFpbigpIHsKKyAgICAgIGludCBsb2FkZWRfdmFsdWUgPSBhdG9taWNfbG9hZCgmdmFsdWUpOworICAgICAgcmV0dXJuIDA7CisgICAgfQorCisKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBoYXZlX3N0ZGF0b21pY19oPXllcworZWxzZQorICBoYXZlX3N0ZGF0b21pY19oPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX3N0ZGF0b21pY19oIiA+JjUKKyRhc19lY2hvICIkaGF2ZV9zdGRhdG9taWNfaCIgPiY2OyB9CisKK2lmIHRlc3QgIiRoYXZlX3N0ZGF0b21pY19oIiA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX1NURF9BVE9NSUMgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKKyMgQ2hlY2sgZm9yIEdDQyA+PSA0LjcgX19hdG9taWMgYnVpbHRpbnMKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEdDQyA+PSA0LjcgX19hdG9taWMgYnVpbHRpbnMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEdDQyA+PSA0LjcgX19hdG9taWMgYnVpbHRpbnMuLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCisgICAgdm9sYXRpbGUgaW50IHZhbCA9IDE7CisgICAgaW50IG1haW4oKSB7CisgICAgICBfX2F0b21pY19sb2FkX24oJnZhbCwgX19BVE9NSUNfU0VRX0NTVCk7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisKKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGhhdmVfYnVpbHRpbl9hdG9taWM9eWVzCitlbHNlCisgIGhhdmVfYnVpbHRpbl9hdG9taWM9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfYnVpbHRpbl9hdG9taWMiID4mNQorJGFzX2VjaG8gIiRoYXZlX2J1aWx0aW5fYXRvbWljIiA+JjY7IH0KKworaWYgdGVzdCAiJGhhdmVfYnVpbHRpbl9hdG9taWMiID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfQlVJTFRJTl9BVE9NSUMgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKICMgZW5zdXJlcGlwIG9wdGlvbgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZW5zdXJlcGlwIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBlbnN1cmVwaXAuLi4gIiA+JjY7IH0KQEAgLTE1NTAwLDYgKzE2MTk0LDExMSBAQAogJGFzX2VjaG8gIiRFTlNVUkVQSVAiID4mNjsgfQogCiAKKyMgY2hlY2sgaWYgdGhlIGRpcmVudCBzdHJ1Y3R1cmUgb2YgYSBkX3R5cGUgZmllbGQgYW5kIERUX1VOS05PV04gaXMgZGVmaW5lZAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiB0aGUgZGlyZW50IHN0cnVjdHVyZSBvZiBhIGRfdHlwZSBmaWVsZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBpZiB0aGUgZGlyZW50IHN0cnVjdHVyZSBvZiBhIGRfdHlwZSBmaWVsZC4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisKKyAgICAjaW5jbHVkZSA8ZGlyZW50Lmg+CisKKyAgICBpbnQgbWFpbigpIHsKKyAgICAgIHN0cnVjdCBkaXJlbnQgZW50cnk7CisgICAgICByZXR1cm4gZW50cnkuZF90eXBlID09IERUX1VOS05PV047CisgICAgfQorCisKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBoYXZlX2RpcmVudF9kX3R5cGU9eWVzCitlbHNlCisgIGhhdmVfZGlyZW50X2RfdHlwZT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfZGlyZW50X2RfdHlwZSIgPiY1CiskYXNfZWNobyAiJGhhdmVfZGlyZW50X2RfdHlwZSIgPiY2OyB9CisKK2lmIHRlc3QgIiRoYXZlX2RpcmVudF9kX3R5cGUiID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfRElSRU5UX0RfVFlQRSAxIiA+PmNvbmZkZWZzLmgKKworZmkKKworIyBjaGVjayBpZiB0aGUgTGludXggZ2V0cmFuZG9tKCkgc3lzY2FsbCBpcyBhdmFpbGFibGUKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHRoZSBMaW51eCBnZXRyYW5kb20oKSBzeXNjYWxsIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB0aGUgTGludXggZ2V0cmFuZG9tKCkgc3lzY2FsbC4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisKKyAgICAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKworICAgIGludCBtYWluKCkgeworICAgICAgICBjaGFyIGJ1ZmZlclsxXTsKKyAgICAgICAgY29uc3Qgc2l6ZV90IGJ1ZmxlbiA9IHNpemVvZihidWZmZXIpOworICAgICAgICBjb25zdCBpbnQgZmxhZ3MgPSAwOworICAgICAgICAvKiBpZ25vcmUgdGhlIHJlc3VsdCwgUHl0aG9uIGNoZWNrcyBmb3IgRU5PU1lTIGF0IHJ1bnRpbWUgKi8KKyAgICAgICAgKHZvaWQpc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBidWZmZXIsIGJ1ZmxlbiwgZmxhZ3MpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGhhdmVfZ2V0cmFuZG9tX3N5c2NhbGw9eWVzCitlbHNlCisgIGhhdmVfZ2V0cmFuZG9tX3N5c2NhbGw9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2dldHJhbmRvbV9zeXNjYWxsIiA+JjUKKyRhc19lY2hvICIkaGF2ZV9nZXRyYW5kb21fc3lzY2FsbCIgPiY2OyB9CisKK2lmIHRlc3QgIiRoYXZlX2dldHJhbmRvbV9zeXNjYWxsIiA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0dFVFJBTkRPTV9TWVNDQUxMIDEiID4+Y29uZmRlZnMuaAorCitmaQorCisjIGNoZWNrIGlmIHRoZSBnZXRyYW5kb20oKSBmdW5jdGlvbiBpcyBhdmFpbGFibGUKKyMgdGhlIHRlc3Qgd2FzIHdyaXR0ZW4gZm9yIHRoZSBTb2xhcmlzIGZ1bmN0aW9uIG9mIDxzeXMvcmFuZG9tLmg+Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0aGUgZ2V0cmFuZG9tKCkgZnVuY3Rpb24iID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRoZSBnZXRyYW5kb20oKSBmdW5jdGlvbi4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisKKyAgICAjaW5jbHVkZSA8c3lzL3JhbmRvbS5oPgorCisgICAgaW50IG1haW4oKSB7CisgICAgICAgIGNoYXIgYnVmZmVyWzFdOworICAgICAgICBjb25zdCBzaXplX3QgYnVmbGVuID0gc2l6ZW9mKGJ1ZmZlcik7CisgICAgICAgIGNvbnN0IGludCBmbGFncyA9IDA7CisgICAgICAgIC8qIGlnbm9yZSB0aGUgcmVzdWx0LCBQeXRob24gY2hlY2tzIGZvciBFTk9TWVMgYXQgcnVudGltZSAqLworICAgICAgICAodm9pZClnZXRyYW5kb20oYnVmZmVyLCBidWZsZW4sIGZsYWdzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBoYXZlX2dldHJhbmRvbT15ZXMKK2Vsc2UKKyAgaGF2ZV9nZXRyYW5kb209bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2dldHJhbmRvbSIgPiY1CiskYXNfZWNobyAiJGhhdmVfZ2V0cmFuZG9tIiA+JjY7IH0KKworaWYgdGVzdCAiJGhhdmVfZ2V0cmFuZG9tIiA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0dFVFJBTkRPTSAxIiA+PmNvbmZkZWZzLmgKKworZmkKKwogIyBnZW5lcmF0ZSBvdXRwdXQgZmlsZXMKIGFjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZS5wcmUgTW9kdWxlcy9TZXR1cC5jb25maWcgTWlzYy9weXRob24ucGMgTWlzYy9weXRob24tY29uZmlnLnNoIgogCkBAIC0xNjAxMiw3ICsxNjgxMSw3IEBACiAjIHJlcG9ydCBhY3R1YWwgaW5wdXQgdmFsdWVzIG9mIENPTkZJR19GSUxFUyBldGMuIGluc3RlYWQgb2YgdGhlaXIKICMgdmFsdWVzIGFmdGVyIG9wdGlvbnMgaGFuZGxpbmcuCiBhY19sb2c9IgotVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBweXRob24gJGFzX21lIDMuNCwgd2hpY2ggd2FzCitUaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IHB5dGhvbiAkYXNfbWUgMy41LCB3aGljaCB3YXMKIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OS4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcwogCiAgIENPTkZJR19GSUxFUyAgICA9ICRDT05GSUdfRklMRVMKQEAgLTE2MDc0LDcgKzE2ODczLDcgQEAKIGNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQogYWNfY3NfY29uZmlnPSJgJGFzX2VjaG8gIiRhY19jb25maWd1cmVfYXJncyIgfCBzZWQgJ3MvXiAvLzsgcy9bXFwiIlxgXCRdL1xcXFwmL2cnYCIKIGFjX2NzX3ZlcnNpb249IlxcCi1weXRob24gY29uZmlnLnN0YXR1cyAzLjQKK3B5dGhvbiBjb25maWcuc3RhdHVzIDMuNQogY29uZmlndXJlZCBieSAkMCwgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LAogICB3aXRoIG9wdGlvbnMgXFwiXCRhY19jc19jb25maWdcXCIKIApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDMzOTRkODQuLjk0NjMyZjIgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTMsNyArMyw3IEBACiBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAogIyBTZXQgVkVSU0lPTiBzbyB3ZSBvbmx5IG5lZWQgdG8gZWRpdCBpbiBvbmUgcGxhY2UgKGkuZS4sIGhlcmUpCi1tNF9kZWZpbmUoUFlUSE9OX1ZFUlNJT04sIDMuNCkKK200X2RlZmluZShQWVRIT05fVkVSU0lPTiwgMy41KQogCiBBQ19QUkVSRVEoMi42NSkKIApAQCAtNDI1LDcgKzQyNSw3IEBACiAJZXNhYwogCV9QWVRIT05fSE9TVF9QTEFURk9STT0iJE1BQ0hERVAke19ob3N0X2NwdTorLSRfaG9zdF9jcHV9IgogZmkKLQkKKwogIyBTb21lIHN5c3RlbXMgY2Fubm90IHN0YW5kIF9YT1BFTl9TT1VSQ0UgYmVpbmcgZGVmaW5lZCBhdCBhbGw7IHRoZXkKICMgZGlzYWJsZSBmZWF0dXJlcyBpZiBpdCBpcyBkZWZpbmVkLCB3aXRob3V0IGFueSBtZWFucyB0byBhY2Nlc3MgdGhlc2UKICMgZmVhdHVyZXMgYXMgZXh0ZW5zaW9ucy4gRm9yIHRoZXNlIHN5c3RlbXMsIHdlIHNraXAgdGhlIGRlZmluaXRpb24gb2YKQEAgLTU1Niw5ICs1NTYsNiBAQAogZmkKIEFDX01TR19SRVNVTFQoJE1BQ0hERVApCiAKLUFDX1NVQlNUKFBMQVRESVIpCi1QTEFURElSPXBsYXQtJE1BQ0hERVAKLQogIyBSZWNvcmQgdGhlIGNvbmZpZ3VyZS10aW1lIHZhbHVlIG9mIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCwKICMgaXQgbWF5IGluZmx1ZW5jZSB0aGUgd2F5IHdlIGNhbiBidWlsZCBleHRlbnNpb25zLCBzbyBkaXN0dXRpbHMKICMgbmVlZHMgdG8gY2hlY2sgaXQKQEAgLTU5Niw2ICs1OTMsMjIgQEAKIAllc2FjXSkKIEFDX01TR19SRVNVTFQoJHdpdGhvdXRfZ2NjKQogCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1pY2MpCitBQ19BUkdfV0lUSChpY2MsCisgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLWljY10sIFtidWlsZCB3aXRoIGljY10pLAorWworCWNhc2UgJHdpdGh2YWwgaW4KKwlubykJQ0M9JHtDQzotY2N9CisJCXdpdGhfaWNjPW5vOzsKKwl5ZXMpCUNDPWljYworCQlDWFg9aWNwYworCQl3aXRoX2ljYz15ZXM7OworCSopCUNDPSR3aXRodmFsCisJCXdpdGhfaWNjPSR3aXRodmFsOzsKKwllc2FjXSwgWworCXdpdGhfaWNjPW5vXSkKK0FDX01TR19SRVNVTFQoJHdpdGhfaWNjKQorCiAjIElmIHRoZSB1c2VyIHN3aXRjaGVzIGNvbXBpbGVycywgd2UgY2FuJ3QgYmVsaWV2ZSB0aGUgY2FjaGUKIGlmIHRlc3QgISAteiAiJGFjX2N2X3Byb2dfQ0MiIC1hICEgLXogIiRDQyIgLWEgIiRDQyIgIT0gIiRhY19jdl9wcm9nX0NDIgogdGhlbgpAQCAtNjY3LDYgKzY4MCw4IEBACiAJZmkKIGZpCiBBQ19QUk9HX0NDCitBQ19QUk9HX0NQUAorQUNfUFJPR19HUkVQCiAKIEFDX1NVQlNUKENYWCkKIEFDX1NVQlNUKE1BSU5DQykKQEAgLTcwMCw2ICs3MTUsNyBAQAogICAgICAgICBnY2MpICAgIEFDX1BBVEhfVE9PTChDWFgsIFtnKytdLCBbZysrXSwgW25vdGZvdW5kXSkgOzsKICAgICAgICAgY2MpICAgICBBQ19QQVRIX1RPT0woQ1hYLCBbYysrXSwgW2MrK10sIFtub3Rmb3VuZF0pIDs7CiAgICAgICAgIGNsYW5nfCovY2xhbmcpICAgICBBQ19QQVRIX1RPT0woQ1hYLCBbY2xhbmcrK10sIFtjbGFuZysrXSwgW25vdGZvdW5kXSkgOzsKKyAgICAgICAgaWNjfCovaWNjKSAgICAgICAgIEFDX1BBVEhfVE9PTChDWFgsIFtpY3BjXSwgW2ljcGNdLCBbbm90Zm91bmRdKSA7OwogICAgICAgICBlc2FjCiAJaWYgdGVzdCAiJENYWCIgPSAibm90Zm91bmQiCiAJdGhlbgpAQCAtNzI0LDYgKzc0MCwxNDIgQEAKIGZpCiAKIAorTVVMVElBUkNIPSQoJENDIC0tcHJpbnQtbXVsdGlhcmNoIDI+L2Rldi9udWxsKQorQUNfU1VCU1QoTVVMVElBUkNIKQorCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciB0aGUgcGxhdGZvcm0gdHJpcGxldCBiYXNlZCBvbiBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3NdKQorY2F0ID4+IGNvbmZ0ZXN0LmMgPDxFT0YKKyN1bmRlZiBiZmluCisjdW5kZWYgY3JpcworI3VuZGVmIGZyMzAKKyN1bmRlZiBsaW51eAorI3VuZGVmIGhwcGEKKyN1bmRlZiBocHV4CisjdW5kZWYgaTM4NgorI3VuZGVmIG1pcHMKKyN1bmRlZiBwb3dlcnBjCisjdW5kZWYgc3BhcmMKKyN1bmRlZiB1bml4CisjaWYgZGVmaW5lZChfX2xpbnV4X18pCisjIGlmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX0xQNjRfXykKKyAgICAgICAgeDg2XzY0LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX0lMUDMyX18pCisgICAgICAgIHg4Nl82NC1saW51eC1nbnV4MzIKKyMgZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICAgICBpMzg2LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19BQVJDSDY0RUxfXykKKyMgIGlmIGRlZmluZWQoX19JTFAzMl9fKQorICAgICAgICBhYXJjaDY0X2lscDMyLWxpbnV4LWdudQorIyAgZWxzZQorICAgICAgICBhYXJjaDY0LWxpbnV4LWdudQorIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fQUFSQ0g2NEVCX18pCisjICBpZiBkZWZpbmVkKF9fSUxQMzJfXykKKyAgICAgICAgYWFyY2g2NF9iZV9pbHAzMi1saW51eC1nbnUKKyMgIGVsc2UKKyAgICAgICAgYWFyY2g2NF9iZS1saW51eC1nbnUKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX2FscGhhX18pCisgICAgICAgIGFscGhhLWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiBkZWZpbmVkKF9fQVJNX1BDU19WRlApCisjICBpZiBkZWZpbmVkKF9fQVJNRUxfXykKKyAgICAgICAgYXJtLWxpbnV4LWdudWVhYmloZgorIyAgZWxzZQorICAgICAgICBhcm1lYi1saW51eC1nbnVlYWJpaGYKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fQVJNX1BDU19WRlApCisjICBpZiBkZWZpbmVkKF9fQVJNRUxfXykKKyAgICAgICAgYXJtLWxpbnV4LWdudWVhYmkKKyMgIGVsc2UKKyAgICAgICAgYXJtZWItbGludXgtZ251ZWFiaQorIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9faHBwYV9fKQorICAgICAgICBocHBhLWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19pYTY0X18pCisgICAgICAgIGlhNjQtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX202OGtfXykgJiYgIWRlZmluZWQoX19tY29sZGZpcmVfXykKKyAgICAgICAgbTY4ay1saW51eC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9fbWlwc19oYXJkX2Zsb2F0KSAmJiBkZWZpbmVkKF9NSVBTRUwpCisjICBpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgICAgICBtaXBzZWwtbGludXgtZ251CisjICBlbGlmIF9NSVBTX1NJTSA9PSBfQUJJTjMyCisgICAgICAgIG1pcHM2NGVsLWxpbnV4LWdudWFiaW4zMgorIyAgZWxpZiBfTUlQU19TSU0gPT0gX0FCSTY0CisgICAgICAgIG1pcHM2NGVsLWxpbnV4LWdudWFiaTY0CisjICBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19taXBzX2hhcmRfZmxvYXQpCisjICBpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgICAgICBtaXBzLWxpbnV4LWdudQorIyAgZWxpZiBfTUlQU19TSU0gPT0gX0FCSU4zMgorICAgICAgICBtaXBzNjQtbGludXgtZ251YWJpbjMyCisjICBlbGlmIF9NSVBTX1NJTSA9PSBfQUJJNjQKKyAgICAgICAgbWlwczY0LWxpbnV4LWdudWFiaTY0CisjICBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19vcjFrX18pCisgICAgICAgIG9yMWstbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3Bvd2VycGNfXykgJiYgZGVmaW5lZChfX1NQRV9fKQorICAgICAgICBwb3dlcnBjLWxpbnV4LWdudXNwZQorIyBlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyMgIGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX18pCisgICAgICAgIHBvd2VycGM2NGxlLWxpbnV4LWdudQorIyAgZWxzZQorICAgICAgICBwb3dlcnBjNjQtbGludXgtZ251CisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCisgICAgICAgIHBvd2VycGMtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3MzOTB4X18pCisgICAgICAgIHMzOTB4LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19zMzkwX18pCisgICAgICAgIHMzOTAtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3NoX18pICYmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX18pCisgICAgICAgIHNoNC1saW51eC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9fc3BhcmNfXykgJiYgZGVmaW5lZChfX2FyY2g2NF9fKQorICAgICAgICBzcGFyYzY0LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19zcGFyY19fKQorICAgICAgICBzcGFyYy1saW51eC1nbnUKKyMgZWxzZQorIyAgIGVycm9yIHVua25vd24gcGxhdGZvcm0gdHJpcGxldAorIyBlbmRpZgorI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pCisjIGlmIGRlZmluZWQoX19MUDY0X18pCisgICAgICAgIHg4Nl82NC1rZnJlZWJzZC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICAgICBpMzg2LWtmcmVlYnNkLWdudQorIyBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fZ251X2h1cmRfXykKKyAgICAgICAgaTM4Ni1nbnUKKyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQorICAgICAgICBkYXJ3aW4KKyNlbHNlCisjIGVycm9yIHVua25vd24gcGxhdGZvcm0gdHJpcGxldAorI2VuZGlmCisKK0VPRgorCitpZiAkQ1BQIGNvbmZ0ZXN0LmMgPmNvbmZ0ZXN0Lm91dCAyPi9kZXYvbnVsbDsgdGhlbgorICBQTEFURk9STV9UUklQTEVUPWBncmVwIC12ICdeIycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAnXiAqJCcgfCB0ciAtZCAnIAknYAorICBBQ19NU0dfUkVTVUxUKFskUExBVEZPUk1fVFJJUExFVF0pCitlbHNlCisgIEFDX01TR19SRVNVTFQoW25vbmVdKQorZmkKK3JtIC1mIGNvbmZ0ZXN0LmMgY29uZnRlc3Qub3V0CisKK2lmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHggJiYgdGVzdCB4JE1VTFRJQVJDSCAhPSB4OyB0aGVuCisgIGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHgkTVVMVElBUkNIOyB0aGVuCisgICAgQUNfTVNHX0VSUk9SKFtpbnRlcm5hbCBjb25maWd1cmUgZXJyb3IgZm9yIHRoZSBwbGF0Zm9ybSB0cmlwbGV0LCBwbGVhc2UgZmlsZSBhIGJ1ZyByZXBvcnRdKQorICBmaQorZmkgCitQTEFURElSPXBsYXQtJE1BQ0hERVAKK0FDX1NVQlNUKFBMQVRESVIpCitBQ19TVUJTVChQTEFURk9STV9UUklQTEVUKQorCisKIEFDX01TR19DSEVDS0lORyhbZm9yIC1XbCwtLW5vLWFzLW5lZWRlZF0pCiBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgogTERGTEFHUz0iJExERkxBR1MgLVdsLC0tbm8tYXMtbmVlZGVkIgpAQCAtNzkxLDEwICs5NDMsNiBAQAogICAgIGVzYWM7OwogZXNhYwogCi1NVUxUSUFSQ0g9JCgkQ0MgLS1wcmludC1tdWx0aWFyY2ggMj4vZGV2L251bGwpCi1BQ19TVUJTVChNVUxUSUFSQ0gpCi0KLQogQUNfU1VCU1QoTElCUkFSWSkKIEFDX01TR19DSEVDS0lORyhMSUJSQVJZKQogaWYgdGVzdCAteiAiJExJQlJBUlkiCkBAIC05NjMsMTEgKzExMTEsNiBAQAogCSAgTERMSUJSQVJZPSdsaWJweXRob24kKExEVkVSU0lPTikuc28nCiAJICBCTERMSUJSQVJZPSctTC4gLWxweXRob24kKExEVkVSU0lPTiknCiAJICBSVU5TSEFSRUQ9TERfTElCUkFSWV9QQVRIPWBwd2RgJHtMRF9MSUJSQVJZX1BBVEg6Kzoke0xEX0xJQlJBUllfUEFUSH19Ci0JICBjYXNlICRhY19zeXNfc3lzdGVtIGluCi0JICAgICAgRnJlZUJTRCopCi0JCVNPVkVSU0lPTj1gZWNobyAkU09WRVJTSU9OfGN1dCAtZCAiLiIgLWYgMWAKLQkJOzsKLQkgIGVzYWMKIAkgIElOU1RTT05BTUU9IiRMRExJQlJBUlkiLiRTT1ZFUlNJT04KIAkgIGlmIHRlc3QgIiR3aXRoX3B5ZGVidWciICE9IHllcwogICAgICAgICAgIHRoZW4KQEAgLTEwNDIsNiArMTE4NSwxNSBAQAogICAgIEFTRExHRU49IiRQWVRIT04iCiBmaQogCitBQ19TVUJTVChPUENPREVIR0VOKQorQUNfQ0hFQ0tfUFJPR1MoUFlUSE9OLCBweXRob24kUEFDS0FHRV9WRVJTSU9OIHB5dGhvbjMgcHl0aG9uLCBub3QtZm91bmQpCitpZiB0ZXN0ICIkUFlUSE9OIiA9IG5vdC1mb3VuZDsgdGhlbgorICAgIE9QQ09ERUhHRU49IkBlY2hvIHB5dGhvbjogJFBZVEhPTiEgY2Fubm90IHJ1biBUb29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5IgorZWxzZQorICAgIE9QQ09ERUhHRU49IiRQWVRIT04iCitmaQorCisKIAogY2FzZSAkTUFDSERFUCBpbgogYnNkb3MqfGhwKnxIUCopCkBAIC0xMDgzLDYgKzEyMzUsNTUgQEAKIGZpXSwKIFtBQ19NU0dfUkVTVUxUKG5vKV0pCiAKKyMgRW5hYmxlIFBHTyBmbGFncy4KK0FDX1NVQlNUKFBHT19QUk9GX0dFTl9GTEFHKQorQUNfU1VCU1QoUEdPX1BST0ZfVVNFX0ZMQUcpCitBQ19TVUJTVChMTFZNX1BST0ZfTUVSR0VSKQorQUNfU1VCU1QoTExWTV9QUk9GX0ZJTEUpCitBQ19TVUJTVChMTFZNX1BST0ZfRVJSKQorQUNfU1VCU1QoTExWTV9QUk9GX0ZPVU5EKQorQUNfQ0hFQ0tfUFJPRyhMTFZNX1BST0ZfRk9VTkQsIGxsdm0tcHJvZmRhdGEsIGZvdW5kLCBub3QtZm91bmQpCitMTFZNX1BST0ZfRVJSPW5vCitjYXNlICRDQyBpbgorICAqY2xhbmcqKQorICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdworICAgIFBHT19QUk9GX0dFTl9GTEFHPSItZnByb2ZpbGUtaW5zdHItZ2VuZXJhdGUiCisgICAgUEdPX1BST0ZfVVNFX0ZMQUc9Ii1mcHJvZmlsZS1pbnN0ci11c2U9Y29kZS5wcm9mY2xhbmdkIgorICAgIExMVk1fUFJPRl9NRVJHRVI9Imxsdm0tcHJvZmRhdGEgbWVyZ2UgLW91dHB1dD1jb2RlLnByb2ZjbGFuZ2QgKi5wcm9mY2xhbmdyIgorICAgIExMVk1fUFJPRl9GSUxFPSJMTFZNX1BST0ZJTEVfRklMRT1cImNvZGUtJXAucHJvZmNsYW5nclwiIgorICAgIGlmIHRlc3QgJExMVk1fUFJPRl9GT1VORCA9IG5vdC1mb3VuZAorICAgIHRoZW4KKyAgICAgIExMVk1fUFJPRl9FUlI9eWVzCisgICAgZmkKKyAgICA7OworICAqZ2NjKikKKyAgICBjYXNlICRhY19zeXNfc3lzdGVtIGluCisgICAgICBEYXJ3aW4qKQorICAgICAgICBQR09fUFJPRl9HRU5fRkxBRz0iLWZwcm9maWxlLWluc3RyLWdlbmVyYXRlIgorICAgICAgICBQR09fUFJPRl9VU0VfRkxBRz0iLWZwcm9maWxlLWluc3RyLXVzZT1jb2RlLnByb2ZjbGFuZ2QiCisgICAgICAgIExMVk1fUFJPRl9NRVJHRVI9Imxsdm0tcHJvZmRhdGEgbWVyZ2UgLW91dHB1dD1jb2RlLnByb2ZjbGFuZ2QgKi5wcm9mY2xhbmdyIgorICAgICAgICBMTFZNX1BST0ZfRklMRT0iTExWTV9QUk9GSUxFX0ZJTEU9XCJjb2RlLSVwLnByb2ZjbGFuZ3JcIiIKKyAgICAgICAgaWYgdGVzdCAkTExWTV9QUk9GX0ZPVU5EID0gbm90LWZvdW5kCisgICAgICAgIHRoZW4KKyAgICAgICAgICBMTFZNX1BST0ZfRVJSPXllcworICAgICAgICBmaQorICAgICAgICA7OworICAgICAgKikKKyAgICAgICAgUEdPX1BST0ZfR0VOX0ZMQUc9Ii1mcHJvZmlsZS1nZW5lcmF0ZSIKKyAgICAgICAgUEdPX1BST0ZfVVNFX0ZMQUc9Ii1mcHJvZmlsZS11c2UgLWZwcm9maWxlLWNvcnJlY3Rpb24iCisgICAgICAgIExMVk1fUFJPRl9NRVJHRVI9InRydWUiCisgICAgICAgIExMVk1fUFJPRl9GSUxFPSIiCisgICAgICAgIDs7CisgICAgZXNhYworICAgIDs7CisgICppY2MqKQorICAgIFBHT19QUk9GX0dFTl9GTEFHPSItcHJvZi1nZW4iCisgICAgUEdPX1BST0ZfVVNFX0ZMQUc9Ii1wcm9mLXVzZSIKKyAgICBMTFZNX1BST0ZfTUVSR0VSPSJ0cnVlIgorICAgIExMVk1fUFJPRl9GSUxFPSIiCisgICAgOzsKK2VzYWMKKwogIyBYWFggU2hvdWxkbid0IHRoZSBjb2RlIGFib3ZlIHRoYXQgZmlkZGxlcyB3aXRoIEJBU0VDRkxBR1MgYW5kIE9QVCBiZQogIyBtZXJnZWQgd2l0aCB0aGlzIGNodW5rIG9mIGNvZGU/CiAKQEAgLTExOTIsNiArMTM5MywxMyBAQAogICAgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLWZuby1zdHJpY3QtYWxpYXNpbmciCiAgICAgZmkKIAorICAgICMgSUNDIGRvZXNuJ3QgcmVjb2duaXplIHRoZSBvcHRpb24sIGJ1dCBvbmx5IGVtaXRzIGEgd2FybmluZworICAgICMjIFhYWCBkb2VzIGl0IGVtaXQgYW4gdW51c2VkIHJlc3VsdCB3YXJuaW5nIGFuZCBjYW4gaXQgYmUgZGlzYWJsZWQ/CisgICAgY2FzZSAiJENDIiBpbgorICAgICppY2MqKQorICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nPW5vCisgICAgOzsKKyAgICAqKQogICAgIEFDX01TR19DSEVDS0lORyhpZiB3ZSBjYW4gdHVybiBvZmYgJENDIHVudXNlZCByZXN1bHQgd2FybmluZykKICAgICAgYWNfc2F2ZV9jYz0iJENDIgogICAgICBDQz0iJENDIC1XdW51c2VkLXJlc3VsdCAtV2Vycm9yIgpAQCAtMTIwOCw2ICsxNDE2LDggQEAKICAgICAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCiAgICAgIENDPSIkYWNfc2F2ZV9jYyIKICAgICBBQ19NU0dfUkVTVUxUKCRhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZykKKyAgICA7OworICAgIGVzYWMKIAogICAgIGlmIHRlc3QgJGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nID0geWVzCiAgICAgdGhlbgpAQCAtMTIzNiw2ICsxNDQ2LDUyIEBACiAgICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIKICAgICBmaQogCisgICAgQUNfTVNHX0NIRUNLSU5HKGlmIHdlIGNhbiB0dXJuIG9uICRDQyBtaXhlZCBzaWduIGNvbXBhcmlzb24gd2FybmluZykKKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1Xc2lnbi1jb21wYXJlIgorICAgICBzYXZlX0NGTEFHUz0iJENGTEFHUyIKKyAgICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2VuYWJsZV9zaWduX2NvbXBhcmVfd2FybmluZywKKyAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgIFsKKwkgICBBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tdXSkKKwkgXSxbCisgICAgICAgICAgIGFjX2N2X2VuYWJsZV9zaWduX2NvbXBhcmVfd2FybmluZz15ZXMKKwkgXSxbCisgICAgICAgICAgIGFjX2N2X2VuYWJsZV9zaWduX2NvbXBhcmVfd2FybmluZz1ubworCSBdKSkKKyAgICAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICBBQ19NU0dfUkVTVUxUKCRhY19jdl9lbmFibGVfc2lnbl9jb21wYXJlX3dhcm5pbmcpCisKKyAgICBpZiB0ZXN0ICRhY19jdl9lbmFibGVfc2lnbl9jb21wYXJlX3dhcm5pbmcgPSB5ZXMKKyAgICB0aGVuCisgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtV3NpZ24tY29tcGFyZSIKKyAgICBmaQorCisgICAgQUNfTVNHX0NIRUNLSU5HKGlmIHdlIGNhbiB0dXJuIG9uICRDQyB1bnJlYWNoYWJsZSBjb2RlIHdhcm5pbmcpCisgICAgIGFjX3NhdmVfY2M9IiRDQyIKKyAgICAgQ0M9IiRDQyAtV3VucmVhY2hhYmxlLWNvZGUiCisgICAgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorICAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfZW5hYmxlX3VucmVhY2hhYmxlX2NvZGVfd2FybmluZywKKyAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgIFsKKwkgICBBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tdXSkKKwkgXSxbCisgICAgICAgICAgIGFjX2N2X2VuYWJsZV91bnJlYWNoYWJsZV9jb2RlX3dhcm5pbmc9eWVzCisJIF0sWworICAgICAgICAgICBhY19jdl9lbmFibGVfdW5yZWFjaGFibGVfY29kZV93YXJuaW5nPW5vCisJIF0pKQorICAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2VuYWJsZV91bnJlYWNoYWJsZV9jb2RlX3dhcm5pbmcpCisKKyAgICAjIERvbid0IGVuYWJsZSB1bnJlYWNoYWJsZSBjb2RlIHdhcm5pbmcgaW4gZGVidWcgbW9kZSwgc2luY2UgaXQgdXN1YWxseQorICAgICMgcmVzdWx0cyBpbiBub24tc3RhbmRhcmQgY29kZSBwYXRocy4KKyAgICBpZiB0ZXN0ICRhY19jdl9lbmFibGVfdW5yZWFjaGFibGVfY29kZV93YXJuaW5nID0geWVzICYmIHRlc3QgIiRQeV9ERUJVRyIgIT0gInRydWUiCisgICAgdGhlbgorICAgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLVd1bnJlYWNoYWJsZS1jb2RlIgorICAgIGZpCisKICAgICAjIGlmIHVzaW5nIGdjYyBvbiBhbHBoYSwgdXNlIC1taWVlZSB0byBnZXQgKG5lYXIpIGZ1bGwgSUVFRSA3NTQKICAgICAjIHN1cHBvcnQuICBXaXRob3V0IHRoaXMsIHRyZWF0bWVudCBvZiBzdWJub3JtYWxzIGRvZXNuJ3QgZm9sbG93CiAgICAgIyB0aGUgc3RhbmRhcmQuCkBAIC0xMzg0LDYgKzE2NDAsMTMgQEAKICAgICA7OwogZXNhYwogCisjIElDQyBuZWVkcyAtZnAtbW9kZWwgc3RyaWN0IG9yIGZsb2F0cyBiZWhhdmUgYmFkbHkKK2Nhc2UgIiRDQyIgaW4KKyppY2MqKQorICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1mcC1tb2RlbCBzdHJpY3QiCisgICAgOzsKK2VzYWMKKwogaWYgdGVzdCAiJFB5X0RFQlVHIiA9ICd0cnVlJzsgdGhlbgogICA6CiBlbHNlCkBAIC0yMzMyLDYgKzI1OTUsMTcgQEAKIF0sCiBbQUNfTVNHX1JFU1VMVChkZWZhdWx0KV0pCiAKK0FDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLWFkZHJlc3Mtc2FuaXRpemVyKQorQUNfQVJHX1dJVEgoYWRkcmVzc19zYW5pdGl6ZXIsCisgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLWFkZHJlc3Mtc2FuaXRpemVyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgQWRkcmVzc1Nhbml0aXplcl0pLAorWworQUNfTVNHX1JFU1VMVCgkd2l0aHZhbCkKK0JBU0VDRkxBR1M9Ii1mc2FuaXRpemU9YWRkcmVzcyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciAkQkFTRUNGTEFHUyIKK0xERkxBR1M9Ii1mc2FuaXRpemU9YWRkcmVzcyAkTERGTEFHUyIKK10sCitbQUNfTVNHX1JFU1VMVChubyldKQorCiAjIE1vc3QgU1ZSNCBwbGF0Zm9ybXMgKGUuZy4gU29sYXJpcykgbmVlZCAtbHNvY2tldCBhbmQgLWxuc2wuCiBBQ19DSEVDS19MSUIobnNsLCB0X29wZW4sIFtMSUJTPSItbG5zbCAkTElCUyJdKSAjIFNWUjQKIEFDX0NIRUNLX0xJQihzb2NrZXQsIHNvY2tldCwgW0xJQlM9Ii1sc29ja2V0ICRMSUJTIl0sIFtdLCAkTElCUykgIyBTVlI0IHNvY2tldHMKQEAgLTI4MTUsNiArMzA4OSwxNiBAQAogCWZpCiBmaQogCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIENBTl9SQVdfRkRfRlJBTUVTKQorQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyAvKiBDQU5fUkFXX0ZEX0ZSQU1FUyBhdmFpbGFibGUgY2hlY2sgKi8KKyNpbmNsdWRlIDxsaW51eC9jYW4vcmF3Lmg+XV0sCitbW2ludCBjYW5fcmF3X2ZkX2ZyYW1lcyA9IENBTl9SQVdfRkRfRlJBTUVTO11dKV0sWworICBBQ19ERUZJTkUoSEFWRV9MSU5VWF9DQU5fUkFXX0ZEX0ZSQU1FUywgMSwgW0RlZmluZSBpZiBjb21waWxpbmcgdXNpbmcgTGludXggMy42IG9yIGxhdGVyLl0pCisgIEFDX01TR19SRVNVTFQoeWVzKQorXSxbCisgIEFDX01TR19SRVNVTFQobm8pCitdKQorCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIE9TWCAxMC41IFNESyBvciBsYXRlcikKIEFDX0NPTVBJTEVfSUZFTFNFKFsKICAgQUNfTEFOR19QUk9HUkFNKFtbI2luY2x1ZGUgPENhcmJvbi9DYXJib24uaD5dXSwgW1tGU0lPUmVmTnVtIGZSZWYgPSAwXV0pCkBAIC0zMjYzLDYgKzM1NDcsNyBAQAogCiBBQ19DSEVDS19GVU5DUyhjbG9ja19nZXR0aW1lLCBbXSwgWwogICAgIEFDX0NIRUNLX0xJQihydCwgY2xvY2tfZ2V0dGltZSwgWworICAgICAgICBMSUJTPSIkTElCUyAtbHJ0IgogICAgICAgICBBQ19ERUZJTkUoSEFWRV9DTE9DS19HRVRUSU1FLCAxKQogICAgICAgICBBQ19ERUZJTkUoVElNRU1PRFVMRV9MSUIsIFtydF0sCiAgICAgICAgICAgICAgICAgICBbTGlicmFyeSBuZWVkZWQgYnkgdGltZW1vZHVsZS5jOiBsaWJydCBtYXkgYmUgbmVlZGVkIGZvciBjbG9ja19nZXR0aW1lKCldKQpAQCAtMzcwNyw3ICszOTkyLDcgQEAKICMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAogQUNfTVNHX0NIRUNLSU5HKGZvciB4NjQgZ2NjIGlubGluZSBhc3NlbWJsZXIpCi1BQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbCitBQ19MSU5LX0lGRUxTRSggICBbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbCiAgIF9fYXNtX18gX192b2xhdGlsZV9fICgibW92cSAlcmN4LCAlcmF4Iik7CiBdXSldLFtoYXZlX2djY19hc21fZm9yX3g2ND15ZXNdLFtoYXZlX2djY19hc21fZm9yX3g2ND1ub10pCiBBQ19NU0dfUkVTVUxUKCRoYXZlX2djY19hc21fZm9yX3g2NCkKQEAgLTM4MDUsNyArNDA5MCw3IEBACiAjIHNvIHdlIHRyeSBpdCBvbiBhbGwgcGxhdGZvcm1zLgogCiBBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB3ZSBjYW4gdXNlIGdjYyBpbmxpbmUgYXNzZW1ibGVyIHRvIGdldCBhbmQgc2V0IHg4NyBjb250cm9sIHdvcmQpCi1BQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbCitBQ19MSU5LX0lGRUxTRSggICBbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbCiAgIHVuc2lnbmVkIHNob3J0IGN3OwogICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZuc3RjdyAlMCIgOiAiPW0iIChjdykpOwogICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZsZGN3ICUwIiA6IDogIm0iIChjdykpOwpAQCAtMzgxNyw2ICs0MTAyLDE5IEBACiAgICAgW0RlZmluZSBpZiB3ZSBjYW4gdXNlIGdjYyBpbmxpbmUgYXNzZW1ibGVyIHRvIGdldCBhbmQgc2V0IHg4NyBjb250cm9sIHdvcmRdKQogZmkKIAorQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgd2UgY2FuIHVzZSBnY2MgaW5saW5lIGFzc2VtYmxlciB0byBnZXQgYW5kIHNldCBtYzY4ODgxIGZwY3IpCitBQ19MSU5LX0lGRUxTRSggICBbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbCisgIHVuc2lnbmVkIGludCBmcGNyOworICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZtb3ZlLmwgJSVmcGNyLCUwIiA6ICI9ZyIgKGZwY3IpKTsKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJmbW92ZS5sICUwLCUlZnBjciIgOiA6ICJnIiAoZnBjcikpOworXV0pXSxbaGF2ZV9nY2NfYXNtX2Zvcl9tYzY4ODgxPXllc10sW2hhdmVfZ2NjX2FzbV9mb3JfbWM2ODg4MT1ub10pCitBQ19NU0dfUkVTVUxUKCRoYXZlX2djY19hc21fZm9yX21jNjg4ODEpCitpZiB0ZXN0ICIkaGF2ZV9nY2NfYXNtX2Zvcl9tYzY4ODgxIiA9IHllcwordGhlbgorICAgIEFDX0RFRklORShIQVZFX0dDQ19BU01fRk9SX01DNjg4ODEsIDEsCisgICAgW0RlZmluZSBpZiB3ZSBjYW4gdXNlIGdjYyBpbmxpbmUgYXNzZW1ibGVyIHRvIGdldCBhbmQgc2V0IG1jNjg4ODEgZnBjcl0pCitmaQorCiAjIERldGVjdCB3aGV0aGVyIHN5c3RlbSBhcml0aG1ldGljIGlzIHN1YmplY3QgdG8geDg3LXN0eWxlIGRvdWJsZQogIyByb3VuZGluZyBpc3N1ZXMuICBUaGUgcmVzdWx0IG9mIHRoaXMgdGVzdCBoYXMgbGl0dGxlIG1lYW5pbmcgb24gbm9uCiAjIElFRUUgNzU0IHBsYXRmb3Jtcy4gIE9uIElFRUUgNzU0LCB0ZXN0IHNob3VsZCByZXR1cm4gMSBpZiByb3VuZGluZwpAQCAtNDA5OCwxMiArNDM5NiwxMiBAQAogQUNfTVNHX0NIRUNLSU5HKEFCSUZMQUdTKQogQUNfTVNHX1JFU1VMVCgkQUJJRkxBR1MpCiBBQ19NU0dfQ0hFQ0tJTkcoU09BQkkpCi1TT0FCST0nY3B5dGhvbi0nYGVjaG8gJFZFUlNJT04gfCB0ciAtZCAuYCR7QUJJRkxBR1N9CitTT0FCST0nY3B5dGhvbi0nYGVjaG8gJFZFUlNJT04gfCB0ciAtZCAuYCR7QUJJRkxBR1N9JHtQTEFURk9STV9UUklQTEVUOistJFBMQVRGT1JNX1RSSVBMRVR9CiBBQ19NU0dfUkVTVUxUKCRTT0FCSSkKIAogQUNfU1VCU1QoRVhUX1NVRkZJWCkKIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KLSAgICBMaW51eCp8R05VKikKKyAgICBMaW51eCp8R05VKnxEYXJ3aW4pCiAJRVhUX1NVRkZJWD0uJHtTT0FCSX0ke1NITElCX1NVRkZJWH07OwogICAgICopCiAJRVhUX1NVRkZJWD0ke1NITElCX1NVRkZJWH07OwpAQCAtNDIzOCw2ICs0NTM2LDEwIEBACiAgIFtEZWZpbmUgaWYgeW91IGNhbiB0dXJuIG9mZiByZWFkbGluZSdzIHNpZ25hbCBoYW5kbGluZy5dKSwgKQogZmkKIAorQUNfQ0hFQ0tfTElCKHJlYWRsaW5lLCBhcHBlbmRfaGlzdG9yeSwKKwlBQ19ERUZJTkUoSEFWRV9STF9BUFBFTkRfSElTVE9SWSwgMSwKKyAgICAgICAgW0RlZmluZSBpZiByZWFkbGluZSBzdXBwb3J0cyBhcHBlbmRfaGlzdG9yeV0pLCAsJFJFQURMSU5FX0xJQlMpCisKICMgRW5kIG9mIHJlYWRsaW5lIGNoZWNrczogcmVzdG9yZSBMSUJTCiBMSUJTPSRMSUJTX25vX3JlYWRsaW5lCiAKQEAgLTQ3MTUsNyArNTAxNyw3IEBACiBkb25lCiAKIEFDX1NVQlNUKFNSQ0RJUlMpCi1TUkNESVJTPSJQYXJzZXIgR3JhbW1hciBPYmplY3RzIFB5dGhvbiBNb2R1bGVzIE1hYyIKK1NSQ0RJUlM9IlBhcnNlciBHcmFtbWFyIE9iamVjdHMgUHl0aG9uIE1vZHVsZXMgTWFjIFByb2dyYW1zIgogQUNfTVNHX0NIRUNLSU5HKGZvciBidWlsZCBkaXJlY3RvcmllcykKIGZvciBkaXIgaW4gJFNSQ0RJUlM7IGRvCiAgICAgaWYgdGVzdCAhIC1kICRkaXI7IHRoZW4KQEAgLTQ4MDcsNiArNTEwOSw0NyBAQAogICAgIGVzYWMKIGZpCiAKKyMgQ2hlY2sgZm9yIHN0ZGF0b21pYy5oCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIHN0ZGF0b21pYy5oKQorQUNfTElOS19JRkVMU0UoCitbCisgIEFDX0xBTkdfU09VUkNFKFtbCisgICAgI2luY2x1ZGUgPHN0ZGF0b21pYy5oPgorICAgIGF0b21pY19pbnQgdmFsdWUgPSBBVE9NSUNfVkFSX0lOSVQoMSk7CisgICAgX0F0b21pYyB2b2lkICpweV9hdG9taWNfYWRkcmVzcyA9ICh2b2lkKikgJnZhbHVlOworICAgIGludCBtYWluKCkgeworICAgICAgaW50IGxvYWRlZF92YWx1ZSA9IGF0b21pY19sb2FkKCZ2YWx1ZSk7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgIF1dKQorXSxbaGF2ZV9zdGRhdG9taWNfaD15ZXNdLFtoYXZlX3N0ZGF0b21pY19oPW5vXSkKKworQUNfTVNHX1JFU1VMVCgkaGF2ZV9zdGRhdG9taWNfaCkKKworaWYgdGVzdCAiJGhhdmVfc3RkYXRvbWljX2giID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKEhBVkVfU1REX0FUT01JQywgMSwKKyAgICAgICAgICAgICAgW0hhcyBzdGRhdG9taWMuaCwgYXRvbWljX2ludCBhbmQgX0F0b21pYyB2b2lkKiB0eXBlcyB3b3JrXSkKK2ZpCisKKyMgQ2hlY2sgZm9yIEdDQyA+PSA0LjcgX19hdG9taWMgYnVpbHRpbnMKK0FDX01TR19DSEVDS0lORyhmb3IgR0NDID49IDQuNyBfX2F0b21pYyBidWlsdGlucykKK0FDX0xJTktfSUZFTFNFKAorWworICBBQ19MQU5HX1NPVVJDRShbWworICAgIHZvbGF0aWxlIGludCB2YWwgPSAxOworICAgIGludCBtYWluKCkgeworICAgICAgX19hdG9taWNfbG9hZF9uKCZ2YWwsIF9fQVRPTUlDX1NFUV9DU1QpOworICAgICAgcmV0dXJuIDA7CisgICAgfQorICBdXSkKK10sW2hhdmVfYnVpbHRpbl9hdG9taWM9eWVzXSxbaGF2ZV9idWlsdGluX2F0b21pYz1ub10pCisKK0FDX01TR19SRVNVTFQoJGhhdmVfYnVpbHRpbl9hdG9taWMpCisKK2lmIHRlc3QgIiRoYXZlX2J1aWx0aW5fYXRvbWljIiA9IHllczsgdGhlbgorICAgIEFDX0RFRklORShIQVZFX0JVSUxUSU5fQVRPTUlDLCAxLCBbSGFzIGJ1aWx0aW4gYXRvbWljc10pCitmaQorCiAjIGVuc3VyZXBpcCBvcHRpb24KIEFDX01TR19DSEVDS0lORyhmb3IgZW5zdXJlcGlwKQogQUNfQVJHX1dJVEgoZW5zdXJlcGlwLApAQCAtNDgyMiw2ICs1MTY1LDc1IEBACiBBQ19NU0dfUkVTVUxUKCRFTlNVUkVQSVApCiBBQ19TVUJTVChFTlNVUkVQSVApCiAKKyMgY2hlY2sgaWYgdGhlIGRpcmVudCBzdHJ1Y3R1cmUgb2YgYSBkX3R5cGUgZmllbGQgYW5kIERUX1VOS05PV04gaXMgZGVmaW5lZAorQUNfTVNHX0NIRUNLSU5HKGlmIHRoZSBkaXJlbnQgc3RydWN0dXJlIG9mIGEgZF90eXBlIGZpZWxkKQorQUNfTElOS19JRkVMU0UoCitbCisgIEFDX0xBTkdfU09VUkNFKFtbCisgICAgI2luY2x1ZGUgPGRpcmVudC5oPgorCisgICAgaW50IG1haW4oKSB7CisgICAgICBzdHJ1Y3QgZGlyZW50IGVudHJ5OworICAgICAgcmV0dXJuIGVudHJ5LmRfdHlwZSA9PSBEVF9VTktOT1dOOworICAgIH0KKyAgXV0pCitdLFtoYXZlX2RpcmVudF9kX3R5cGU9eWVzXSxbaGF2ZV9kaXJlbnRfZF90eXBlPW5vXSkKK0FDX01TR19SRVNVTFQoJGhhdmVfZGlyZW50X2RfdHlwZSkKKworaWYgdGVzdCAiJGhhdmVfZGlyZW50X2RfdHlwZSIgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoSEFWRV9ESVJFTlRfRF9UWVBFLCAxLAorICAgICAgICAgICAgICBbRGVmaW5lIHRvIDEgaWYgdGhlIGRpcmVudCBzdHJ1Y3R1cmUgaGFzIGEgZF90eXBlIGZpZWxkXSkKK2ZpCisKKyMgY2hlY2sgaWYgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwgaXMgYXZhaWxhYmxlCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIHRoZSBMaW51eCBnZXRyYW5kb20oKSBzeXNjYWxsKQorQUNfTElOS19JRkVMU0UoCitbCisgIEFDX0xBTkdfU09VUkNFKFtbCisgICAgI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisKKyAgICBpbnQgbWFpbigpIHsKKyAgICAgICAgY2hhciBidWZmZXJbMV07CisgICAgICAgIGNvbnN0IHNpemVfdCBidWZsZW4gPSBzaXplb2YoYnVmZmVyKTsKKyAgICAgICAgY29uc3QgaW50IGZsYWdzID0gMDsKKyAgICAgICAgLyogaWdub3JlIHRoZSByZXN1bHQsIFB5dGhvbiBjaGVja3MgZm9yIEVOT1NZUyBhdCBydW50aW1lICovCisgICAgICAgICh2b2lkKXN5c2NhbGwoU1lTX2dldHJhbmRvbSwgYnVmZmVyLCBidWZsZW4sIGZsYWdzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICBdXSkKK10sW2hhdmVfZ2V0cmFuZG9tX3N5c2NhbGw9eWVzXSxbaGF2ZV9nZXRyYW5kb21fc3lzY2FsbD1ub10pCitBQ19NU0dfUkVTVUxUKCRoYXZlX2dldHJhbmRvbV9zeXNjYWxsKQorCitpZiB0ZXN0ICIkaGF2ZV9nZXRyYW5kb21fc3lzY2FsbCIgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCwgMSwKKyAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHRoZSBMaW51eCBnZXRyYW5kb20oKSBzeXNjYWxsIGlzIGF2YWlsYWJsZV0pCitmaQorCisjIGNoZWNrIGlmIHRoZSBnZXRyYW5kb20oKSBmdW5jdGlvbiBpcyBhdmFpbGFibGUKKyMgdGhlIHRlc3Qgd2FzIHdyaXR0ZW4gZm9yIHRoZSBTb2xhcmlzIGZ1bmN0aW9uIG9mIDxzeXMvcmFuZG9tLmg+CitBQ19NU0dfQ0hFQ0tJTkcoZm9yIHRoZSBnZXRyYW5kb20oKSBmdW5jdGlvbikKK0FDX0xJTktfSUZFTFNFKAorWworICBBQ19MQU5HX1NPVVJDRShbWworICAgICNpbmNsdWRlIDxzeXMvcmFuZG9tLmg+CisKKyAgICBpbnQgbWFpbigpIHsKKyAgICAgICAgY2hhciBidWZmZXJbMV07CisgICAgICAgIGNvbnN0IHNpemVfdCBidWZsZW4gPSBzaXplb2YoYnVmZmVyKTsKKyAgICAgICAgY29uc3QgaW50IGZsYWdzID0gMDsKKyAgICAgICAgLyogaWdub3JlIHRoZSByZXN1bHQsIFB5dGhvbiBjaGVja3MgZm9yIEVOT1NZUyBhdCBydW50aW1lICovCisgICAgICAgICh2b2lkKWdldHJhbmRvbShidWZmZXIsIGJ1ZmxlbiwgZmxhZ3MpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgIF1dKQorXSxbaGF2ZV9nZXRyYW5kb209eWVzXSxbaGF2ZV9nZXRyYW5kb209bm9dKQorQUNfTVNHX1JFU1VMVCgkaGF2ZV9nZXRyYW5kb20pCisKK2lmIHRlc3QgIiRoYXZlX2dldHJhbmRvbSIgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoSEFWRV9HRVRSQU5ET00sIDEsCisgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB0aGUgZ2V0cmFuZG9tKCkgZnVuY3Rpb24gaXMgYXZhaWxhYmxlXSkKK2ZpCisKICMgZ2VuZXJhdGUgb3V0cHV0IGZpbGVzCiBBQ19DT05GSUdfRklMRVMoTWFrZWZpbGUucHJlIE1vZHVsZXMvU2V0dXAuY29uZmlnIE1pc2MvcHl0aG9uLnBjIE1pc2MvcHl0aG9uLWNvbmZpZy5zaCkKIEFDX0NPTkZJR19GSUxFUyhbTW9kdWxlcy9sZF9zb19haXhdLCBbY2htb2QgK3ggTW9kdWxlcy9sZF9zb19haXhdKQpkaWZmIC0tZ2l0IGEvcHljb25maWcuaC5pbiBiL3B5Y29uZmlnLmguaW4KaW5kZXggODU0OTBjOC4uYjBjYWZiMyAxMDA2NDQKLS0tIGEvcHljb25maWcuaC5pbgorKysgYi9weWNvbmZpZy5oLmluCkBAIC0xMDEsNiArMTAxLDkgQEAKIC8qIERlZmluZSBpZiBgdW5zZXRlbnZgIGRvZXMgbm90IHJldHVybiBhbiBpbnQuICovCiAjdW5kZWYgSEFWRV9CUk9LRU5fVU5TRVRFTlYKIAorLyogSGFzIGJ1aWx0aW4gYXRvbWljcyAqLworI3VuZGVmIEhBVkVfQlVJTFRJTl9BVE9NSUMKKwogLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIHR5cGUgX0Jvb2wuICovCiAjdW5kZWYgSEFWRV9DOTlfQk9PTAogCkBAIC0xODAsNiArMTgzLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZGlyZWN0Lmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfRElSRUNUX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgdGhlIGRpcmVudCBzdHJ1Y3R1cmUgaGFzIGEgZF90eXBlIGZpZWxkICovCisjdW5kZWYgSEFWRV9ESVJFTlRfRF9UWVBFCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZGlyZW50Lmg+IGhlYWRlciBmaWxlLCBhbmQgaXQgZGVmaW5lcyBgRElSJy4KICAgICovCiAjdW5kZWYgSEFWRV9ESVJFTlRfSApAQCAtMzEzLDYgKzMxOSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdhbW1hJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dBTU1BCiAKKy8qIERlZmluZSBpZiB3ZSBjYW4gdXNlIGdjYyBpbmxpbmUgYXNzZW1ibGVyIHRvIGdldCBhbmQgc2V0IG1jNjg4ODEgZnBjciAqLworI3VuZGVmIEhBVkVfR0NDX0FTTV9GT1JfTUM2ODg4MQorCiAvKiBEZWZpbmUgaWYgd2UgY2FuIHVzZSB4NjQgZ2NjIGlubGluZSBhc3NlbWJsZXIgKi8KICN1bmRlZiBIQVZFX0dDQ19BU01fRk9SX1g2NAogCkBAIC0zODYsNiArMzk1LDEyIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHB3ZW50JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVFBXRU5UCiAKKy8qIERlZmluZSB0byAxIGlmIHRoZSBnZXRyYW5kb20oKSBmdW5jdGlvbiBpcyBhdmFpbGFibGUgKi8KKyN1bmRlZiBIQVZFX0dFVFJBTkRPTQorCisvKiBEZWZpbmUgdG8gMSBpZiB0aGUgTGludXggZ2V0cmFuZG9tKCkgc3lzY2FsbCBpcyBhdmFpbGFibGUgKi8KKyN1bmRlZiBIQVZFX0dFVFJBTkRPTV9TWVNDQUxMCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0cmVzZ2lkJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVFJFU0dJRAogCkBAIC01MTksNiArNTM0LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvY2FuLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTElOVVhfQ0FOX0gKIAorLyogRGVmaW5lIGlmIGNvbXBpbGluZyB1c2luZyBMaW51eCAzLjYgb3IgbGF0ZXIuICovCisjdW5kZWYgSEFWRV9MSU5VWF9DQU5fUkFXX0ZEX0ZSQU1FUworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L2Nhbi9yYXcuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9MSU5VWF9DQU5fUkFXX0gKIApAQCAtNjkzLDYgKzcxMSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlbmFtZWF0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1JFTkFNRUFUCiAKKy8qIERlZmluZSBpZiByZWFkbGluZSBzdXBwb3J0cyBhcHBlbmRfaGlzdG9yeSAqLworI3VuZGVmIEhBVkVfUkxfQVBQRU5EX0hJU1RPUlkKKwogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHJlYWRsaW5lIDIuMSAqLwogI3VuZGVmIEhBVkVfUkxfQ0FMTEJBQ0sKIApAQCAtODcxLDYgKzg5Miw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGxpYi5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NURExJQl9ICiAKKy8qIEhhcyBzdGRhdG9taWMuaCwgYXRvbWljX2ludCBhbmQgX0F0b21pYyB2b2lkKiB0eXBlcyB3b3JrICovCisjdW5kZWYgSEFWRV9TVERfQVRPTUlDCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RyZHVwJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NUUkRVUAogCmRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CmluZGV4IDI3Nzk2NTguLmRhNjc3MzEgMTAwNjQ0Ci0tLSBhL3NldHVwLnB5CisrKyBiL3NldHVwLnB5CkBAIC0yNSw2ICsyNSwxMSBAQAogcHlfY2ZsYWdzX25vZGlzdCA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignUFlfQ0ZMQUdTX05PRElTVCcpCiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gY2ZsYWdzICsgJyAnICsgcHlfY2ZsYWdzX25vZGlzdAogCitjbGFzcyBEdW1teToKKyAgICAiIiJIYWNrIGZvciBwYXJhbGxlbCBidWlsZCIiIgorICAgIFByb2Nlc3NQb29sRXhlY3V0b3IgPSBOb25lCitzeXMubW9kdWxlc1snY29uY3VycmVudC5mdXR1cmVzLnByb2Nlc3MnXSA9IER1bW15CisKIGRlZiBnZXRfcGxhdGZvcm0oKToKICAgICAjIGNyb3NzIGJ1aWxkCiAgICAgaWYgIl9QWVRIT05fSE9TVF9QTEFURk9STSIgaW4gb3MuZW52aXJvbjoKQEAgLTE3Myw2ICsxNzgsOSBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkaXN0KToKICAgICAgICAgYnVpbGRfZXh0Ll9faW5pdF9fKHNlbGYsIGRpc3QpCiAgICAgICAgIHNlbGYuZmFpbGVkID0gW10KKyAgICAgICAgc2VsZi5mYWlsZWRfb25faW1wb3J0ID0gW10KKyAgICAgICAgaWYgJy1qJyBpbiBvcy5lbnZpcm9uLmdldCgnTUFLRUZMQUdTJywgJycpOgorICAgICAgICAgICAgc2VsZi5wYXJhbGxlbCA9IFRydWUKIAogICAgIGRlZiBidWlsZF9leHRlbnNpb25zKHNlbGYpOgogCkBAIC0yNTIsOSArMjYwLDEzIEBACiAKICAgICAgICAgYnVpbGRfZXh0LmJ1aWxkX2V4dGVuc2lvbnMoc2VsZikKIAorICAgICAgICBmb3IgZXh0IGluIHNlbGYuZXh0ZW5zaW9uczoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZXh0ZW5zaW9uX2ltcG9ydChleHQpCisKICAgICAgICAgbG9uZ2VzdCA9IG1heChbbGVuKGUubmFtZSkgZm9yIGUgaW4gc2VsZi5leHRlbnNpb25zXSwgZGVmYXVsdD0wKQotICAgICAgICBpZiBzZWxmLmZhaWxlZDoKLSAgICAgICAgICAgIGxvbmdlc3QgPSBtYXgobG9uZ2VzdCwgbWF4KFtsZW4obmFtZSkgZm9yIG5hbWUgaW4gc2VsZi5mYWlsZWRdKSkKKyAgICAgICAgaWYgc2VsZi5mYWlsZWQgb3Igc2VsZi5mYWlsZWRfb25faW1wb3J0OgorICAgICAgICAgICAgYWxsX2ZhaWxlZCA9IHNlbGYuZmFpbGVkICsgc2VsZi5mYWlsZWRfb25faW1wb3J0CisgICAgICAgICAgICBsb25nZXN0ID0gbWF4KGxvbmdlc3QsIG1heChbbGVuKG5hbWUpIGZvciBuYW1lIGluIGFsbF9mYWlsZWRdKSkKIAogICAgICAgICBkZWYgcHJpbnRfdGhyZWVfY29sdW1uKGxzdCk6CiAgICAgICAgICAgICBsc3Quc29ydChrZXk9c3RyLmxvd2VyKQpAQCAtMjgyLDYgKzI5NCwxNCBAQAogICAgICAgICAgICAgcHJpbnRfdGhyZWVfY29sdW1uKGZhaWxlZCkKICAgICAgICAgICAgIHByaW50KCkKIAorICAgICAgICBpZiBzZWxmLmZhaWxlZF9vbl9pbXBvcnQ6CisgICAgICAgICAgICBmYWlsZWQgPSBzZWxmLmZhaWxlZF9vbl9pbXBvcnRbOl0KKyAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgIHByaW50KCJGb2xsb3dpbmcgbW9kdWxlcyBidWlsdCBzdWNjZXNzZnVsbHkiCisgICAgICAgICAgICAgICAgICAiIGJ1dCB3ZXJlIHJlbW92ZWQgYmVjYXVzZSB0aGV5IGNvdWxkIG5vdCBiZSBpbXBvcnRlZDoiKQorICAgICAgICAgICAgcHJpbnRfdGhyZWVfY29sdW1uKGZhaWxlZCkKKyAgICAgICAgICAgIHByaW50KCkKKwogICAgIGRlZiBidWlsZF9leHRlbnNpb24oc2VsZiwgZXh0KToKIAogICAgICAgICBpZiBleHQubmFtZSA9PSAnX2N0eXBlcyc6CkBAIC0yOTUsNiArMzE1LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHQubmFtZSwgc3lzLmV4Y19pbmZvKClbMV0pKQogICAgICAgICAgICAgc2VsZi5mYWlsZWQuYXBwZW5kKGV4dC5uYW1lKQogICAgICAgICAgICAgcmV0dXJuCisKKyAgICBkZWYgY2hlY2tfZXh0ZW5zaW9uX2ltcG9ydChzZWxmLCBleHQpOgorICAgICAgICAjIERvbid0IHRyeSB0byBpbXBvcnQgYW4gZXh0ZW5zaW9uIHRoYXQgaGFzIGZhaWxlZCB0byBjb21waWxlCisgICAgICAgIGlmIGV4dC5uYW1lIGluIHNlbGYuZmFpbGVkOgorICAgICAgICAgICAgc2VsZi5hbm5vdW5jZSgKKyAgICAgICAgICAgICAgICAnV0FSTklORzogc2tpcHBpbmcgaW1wb3J0IGNoZWNrIGZvciBmYWlsZWQgYnVpbGQgIiVzIicgJQorICAgICAgICAgICAgICAgIGV4dC5uYW1lLCBsZXZlbD0xKQorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgIyBXb3JrYXJvdW5kIGZvciBNYWMgT1MgWDogVGhlIENhcmJvbi1iYXNlZCBtb2R1bGVzIGNhbm5vdCBiZQogICAgICAgICAjIHJlbGlhYmx5IGltcG9ydGVkIGludG8gYSBjb21tYW5kLWxpbmUgUHl0aG9uCiAgICAgICAgIGlmICdDYXJib24nIGluIGV4dC5leHRyYV9saW5rX2FyZ3M6CkBAIC0zMzgsOSArMzY3LDkgQEAKICAgICAgICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKGV4dC5uYW1lLCBleHRfZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXI9bG9hZGVyKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykubG9hZCgpCisgICAgICAgICAgICBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fbG9hZChzcGVjKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgd2h5OgotICAgICAgICAgICAgc2VsZi5mYWlsZWQuYXBwZW5kKGV4dC5uYW1lKQorICAgICAgICAgICAgc2VsZi5mYWlsZWRfb25faW1wb3J0LmFwcGVuZChleHQubmFtZSkKICAgICAgICAgICAgIHNlbGYuYW5ub3VuY2UoJyoqKiBXQVJOSU5HOiByZW5hbWluZyAiJXMiIHNpbmNlIGltcG9ydGluZyBpdCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBmYWlsZWQ6ICVzJyAlIChleHQubmFtZSwgd2h5KSwgbGV2ZWw9MykKICAgICAgICAgICAgIGFzc2VydCBub3Qgc2VsZi5pbnBsYWNlCkBAIC0zNTAsMTcgKzM3OSw2IEBACiAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKG5ld25hbWUpCiAgICAgICAgICAgICBvcy5yZW5hbWUoZXh0X2ZpbGVuYW1lLCBuZXduYW1lKQogCi0gICAgICAgICAgICAjIFhYWCAtLSBUaGlzIHJlbGllcyBvbiBhIFZpbGUgSEFDSyBpbgotICAgICAgICAgICAgIyBkaXN0dXRpbHMuY29tbWFuZC5idWlsZF9leHQuYnVpbGRfZXh0ZW5zaW9uKCkuICBUaGUKLSAgICAgICAgICAgICMgX2J1aWx0X29iamVjdHMgYXR0cmlidXRlIGlzIHN0b3JlZCB0aGVyZSBzdHJpY3RseSBmb3IKLSAgICAgICAgICAgICMgdXNlIGhlcmUuCi0gICAgICAgICAgICAjIElmIHRoZXJlIGlzIGEgZmFpbHVyZSwgX2J1aWx0X29iamVjdHMgbWF5IG5vdCBiZSB0aGVyZSwKLSAgICAgICAgICAgICMgc28gY2F0Y2ggdGhlIEF0dHJpYnV0ZUVycm9yIGFuZCBtb3ZlIG9uLgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBzZWxmLl9idWlsdF9vYmplY3RzOgotICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZmlsZW5hbWUpCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgc2VsZi5hbm5vdW5jZSgndW5hYmxlIHRvIHJlbW92ZSBmaWxlcyAoaWdub3JlZCknKQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBleGNfdHlwZSwgd2h5LCB0YiA9IHN5cy5leGNfaW5mbygpCiAgICAgICAgICAgICBzZWxmLmFubm91bmNlKCcqKiogV0FSTklORzogaW1wb3J0aW5nIGV4dGVuc2lvbiAiJXMiICcKQEAgLTYwMiw2ICs2MjAsOCBAQAogICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfdGVzdGJ1ZmZlcicsIFsnX3Rlc3RidWZmZXIuYyddKSApCiAgICAgICAgICMgVGVzdCBsb2FkaW5nIG11bHRpcGxlIG1vZHVsZXMgZnJvbSBvbmUgY29tcGlsZWQgZmlsZSAoaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE2NDIxKQogICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfdGVzdGltcG9ydG11bHRpcGxlJywgWydfdGVzdGltcG9ydG11bHRpcGxlLmMnXSkgKQorICAgICAgICAjIFRlc3QgbXVsdGktcGhhc2UgZXh0ZW5zaW9uIG1vZHVsZSBpbml0IChQRVAgNDg5KQorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfdGVzdG11bHRpcGhhc2UnLCBbJ190ZXN0bXVsdGlwaGFzZS5jJ10pICkKICAgICAgICAgIyBwcm9maWxlciAoX2xzcHJvZiBpcyBmb3IgY1Byb2ZpbGUucHkpCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19sc3Byb2YnLCBbJ19sc3Byb2YuYycsICdyb3RhdGluZ3RyZWUuYyddKSApCiAgICAgICAgICMgc3RhdGljIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlCkBAIC0xNTU3LDcgKzE1NzcsNyBAQAogCiAgICAgICAgIGlmICdkJyBub3QgaW4gc3lzLmFiaWZsYWdzOgogICAgICAgICAgICAgZXh0ID0gRXh0ZW5zaW9uKCd4eGxpbWl0ZWQnLCBbJ3h4bGltaXRlZC5jJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1bKCdQeV9MSU1JVEVEX0FQSScsICcweDAzMDQwMDAwJyldKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3M9WygnUHlfTElNSVRFRF9BUEknLCAnMHgwMzA1MDAwMCcpXSkKICAgICAgICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5hcHBlbmQoZXh0KQogCiAgICAgICAgIHJldHVybiBtaXNzaW5nCg==